diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/acinclude.m4 ./bfd/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/acinclude.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/acinclude.m4	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 dnl
-dnl   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+dnl   Copyright (C) 2012-2025 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.20200303/bfd/aclocal.m4 ./bfd/aclocal.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aclocal.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aclocal.m4	2026-03-05 02:07:20.000000000 +0000
@@ -1170,20 +1170,30 @@ AC_SUBST([am__untar])
 m4_include([../config/acx.m4])
 m4_include([../config/depstand.m4])
 m4_include([../config/gettext-sister.m4])
+m4_include([../config/gettext.m4])
+m4_include([../config/iconv.m4])
+m4_include([../config/intlmacosx.m4])
+m4_include([../config/jobserver.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/mmap.m4])
 m4_include([../config/nls.m4])
 m4_include([../config/override.m4])
+m4_include([../config/pkg.m4])
 m4_include([../config/plugins.m4])
 m4_include([../config/po.m4])
 m4_include([../config/progtest.m4])
-m4_include([../config/stdint.m4])
 m4_include([../config/zlib.m4])
+m4_include([../config/zstd.m4])
 m4_include([../libtool.m4])
 m4_include([../ltoptions.m4])
 m4_include([../ltsugar.m4])
 m4_include([../ltversion.m4])
 m4_include([../lt~obsolete.m4])
+m4_include([ax_tls.m4])
 m4_include([bfd.m4])
 m4_include([warning.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.20200303/bfd/aix386-core.c ./bfd/aix386-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aix386-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aix386-core.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,281 +0,0 @@
-/* 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.
-   Written by Minh Tran-Le <TRANLE@INTELLICORP.COM>.
-   Converted to back end form by Ian Lance Taylor <ian@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"
-#include "coff/i386.h"
-#include "coff/internal.h"
-#include "libcoff.h"
-
-#include <signal.h>
-
-#if defined (_AIX) && defined (_I386)
-#define NOCHECKS		/* This is for coredump.h.  */
-#define _h_USER			/* Avoid including user.h from coredump.h.  */
-#include <uinfo.h>
-#include <sys/i386/coredump.h>
-#endif /* _AIX && _I386 */
-
-/* Maybe this could work on some other i386 but I have not tried it
- * mtranle@paris - Tue Sep 24 12:49:35 1991
- */
-
-#ifndef COR_MAGIC
-# define COR_MAGIC "core"
-#endif
-
-/* Need this cast because ptr is really void *.  */
-#define core_hdr(bfd) \
-    (((bfd->tdata.trad_core_data))->hdr)
-#define core_section(bfd,n) \
-    (((bfd)->tdata.trad_core_data)->sections[n])
-#define core_regsec(bfd) \
-    (((bfd)->tdata.trad_core_data)->reg_section)
-#define core_reg2sec(bfd) \
-    (((bfd)->tdata.trad_core_data)->reg2_section)
-
-/* These are stored in the bfd's tdata.  */
-struct trad_core_struct
-{
-  struct corehdr *hdr;		/* core file header */
-  asection *reg_section;
-  asection *reg2_section;
-  asection *sections[MAX_CORE_SEGS];
-};
-
-static const bfd_target *
-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;
-  struct corehdr *core;
-  struct mergem
-  {
-    struct trad_core_struct coredata;
-    struct corehdr internal_core;
-  } *mergem;
-  flagword flags;
-
-  amt = sizeof (longbuf);
-  if (bfd_bread (longbuf, amt, abfd) != amt)
-    {
-      if (bfd_get_error () != bfd_error_system_call)
-	bfd_set_error (bfd_error_wrong_format);
-      return 0;
-    }
-
-  if (strncmp (longbuf, COR_MAGIC, 4))
-    return 0;
-
-  if (bfd_seek (abfd, (file_ptr) 0, 0) != 0)
-    return 0;
-
-  amt = sizeof (struct mergem);
-  mergem = (struct mergem *) bfd_zalloc (abfd, amt);
-  if (mergem == NULL)
-    return 0;
-
-  core = &mergem->internal_core;
-
-  if ((bfd_bread (core, core_size, abfd)) != core_size)
-    {
-      if (bfd_get_error () != bfd_error_system_call)
-	bfd_set_error (bfd_error_wrong_format);
-    loser:
-      bfd_release (abfd, (char *) mergem);
-      abfd->tdata.any = NULL;
-      bfd_section_list_clear (abfd);
-      return 0;
-    }
-
-  set_tdata (abfd, &mergem->coredata);
-  core_hdr (abfd) = core;
-
-  /* Create the sections.  */
-  flags = SEC_HAS_CONTENTS;
-  core_regsec (abfd) = bfd_make_section_anyway_with_flags (abfd, ".reg",
-							   flags);
-  if (core_regsec (abfd) == NULL)
-    goto loser;
-
-  core_regsec (abfd)->size = sizeof (core->cd_regs);
-  core_regsec (abfd)->vma = (bfd_vma) -1;
-
-  /* We'll access the regs afresh in the core file, like any section.  */
-  core_regsec (abfd)->filepos =
-    (file_ptr) offsetof (struct corehdr, cd_regs[0]);
-
-  flags = SEC_HAS_CONTENTS;
-  core_reg2sec (abfd) = bfd_make_section_anyway_with_flags (abfd, ".reg2",
-							    flags);
-  if (core_reg2sec (abfd) == NULL)
-    /* bfd_release frees everything allocated after it's arg.  */
-    goto loser;
-
-  core_reg2sec (abfd)->size = sizeof (core->cd_fpregs);
-  core_reg2sec (abfd)->vma = (bfd_vma) -1;
-  core_reg2sec (abfd)->filepos =
-    (file_ptr) offsetof (struct corehdr, cd_fpregs);
-
-  for (i = 0, n = 0; (i < MAX_CORE_SEGS) && (core->cd_segs[i].cs_type); i++)
-    {
-      const char *sname;
-      flagword flags;
-
-      if (core->cd_segs[i].cs_offset == 0)
-	continue;
-
-      switch (core->cd_segs[i].cs_type)
-	{
-	case COR_TYPE_DATA:
-	  sname = ".data";
-	  flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
-	  break;
-	case COR_TYPE_STACK:
-	  sname = ".stack";
-	  flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
-	  break;
-	case COR_TYPE_LIBDATA:
-	  sname = ".libdata";
-	  flags = SEC_ALLOC + SEC_HAS_CONTENTS;
-	  break;
-	case COR_TYPE_WRITE:
-	  sname = ".writeable";
-	  flags = SEC_ALLOC + SEC_HAS_CONTENTS;
-	  break;
-	case COR_TYPE_MSC:
-	  sname = ".misc";
-	  flags = SEC_ALLOC + SEC_HAS_CONTENTS;
-	  break;
-	default:
-	  sname = ".unknown";
-	  flags = SEC_ALLOC + SEC_HAS_CONTENTS;
-	  break;
-	}
-      core_section (abfd, n) = bfd_make_section_anyway_with_flags (abfd,
-								   sname,
-								   flags);
-      if (core_section (abfd, n) == NULL)
-	goto loser;
-
-      core_section (abfd, n)->size = core->cd_segs[i].cs_len;
-      core_section (abfd, n)->vma       = core->cd_segs[i].cs_address;
-      core_section (abfd, n)->filepos   = core->cd_segs[i].cs_offset;
-      core_section (abfd, n)->alignment_power = 2;
-      n++;
-    }
-
-  return abfd->xvec;
-}
-
-static char *
-aix386_core_file_failing_command (bfd *abfd)
-{
-  return core_hdr (abfd)->cd_comm;
-}
-
-static int
-aix386_core_file_failing_signal (bfd *abfd)
-{
-  return core_hdr (abfd)->cd_cursig;
-}
-
-#define aix386_core_file_matches_executable_p generic_core_file_matches_executable_p
-
-#define aix386_core_file_pid _bfd_nocore_core_file_pid
-
-/* If somebody calls any byte-swapping routines, shoot them.  */
-
-static void
-swap_abort (void)
-{
-  /* This way doesn't require any declaration for ANSI to fuck up.  */
-  abort ();
-}
-
-#define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
-#define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
-#define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
-
-const bfd_target core_aix386_vec =
-{
-  "aix386-core",
-  bfd_target_unknown_flavour,
-  BFD_ENDIAN_BIG,		/* target byte order */
-  BFD_ENDIAN_BIG,		/* target headers byte order */
-  (HAS_RELOC | EXEC_P |		/* object flags */
-   HAS_LINENO | HAS_DEBUG |
-   HAS_SYMS | HAS_LOCALS | WP_TEXT),
-
-  (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
-  0,				/* leading underscore */
-  ' ',				/* ar_pad_char */
-  16,				/* ar_max_namelen */
-  0,				/* match priority.  */
-  NO_GET64, NO_GETS64, NO_PUT64,
-  NO_GET, NO_GETS, NO_PUT,
-  NO_GET, NO_GETS, NO_PUT,	/* data */
-  NO_GET64, NO_GETS64, NO_PUT64,
-  NO_GET, NO_GETS, NO_PUT,
-  NO_GET, NO_GETS, NO_PUT,	/* hdrs */
-
-  {				/* bfd_check_format */
-    _bfd_dummy_target,
-    _bfd_dummy_target,
-    _bfd_dummy_target,
-    aix386_core_file_p
-  },
-  {				/* bfd_create_object */
-    _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_bool_bfd_false_error,
-    _bfd_bool_bfd_false_error,
-    _bfd_bool_bfd_false_error
-  },
-
-  BFD_JUMP_TABLE_GENERIC (_bfd_generic),
-  BFD_JUMP_TABLE_COPY (_bfd_generic),
-  BFD_JUMP_TABLE_CORE (aix386),
-  BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
-  BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
-  BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
-  BFD_JUMP_TABLE_WRITE (_bfd_generic),
-  BFD_JUMP_TABLE_LINK (_bfd_nolink),
-  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
-  NULL,
-
-  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.20200303/bfd/aix5ppc-core.c ./bfd/aix5ppc-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aix5ppc-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aix5ppc-core.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Tom Rix
    Contributed by Red Hat Inc.
 
@@ -23,8 +23,8 @@
 #include "sysdep.h"
 #include "bfd.h"
 
-const bfd_target *xcoff64_core_p (bfd *);
-bfd_boolean xcoff64_core_file_matches_executable_p (bfd *, bfd *);
+bfd_cleanup xcoff64_core_p (bfd *);
+bool 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,15 +60,13 @@ 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.  */
   if (bfd_seek (abfd, 0, SEEK_SET) != 0)
     goto xcoff64_core_p_error;
 
-  if (sizeof (struct core_dumpxx)
-      != bfd_bread (&core, sizeof (struct core_dumpxx), abfd))
+  if (sizeof core != bfd_read (&core, sizeof core, abfd))
     goto xcoff64_core_p_error;
 
   if (bfd_stat (abfd, &statbuf) < 0)
@@ -109,24 +107,26 @@ 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));
+  new_core_hdr = bfd_alloc (abfd, sizeof (*new_core_hdr) + 1);
   if (NULL == new_core_hdr)
-    return return_value;
+    return NULL;
+
+  memcpy (new_core_hdr, &core, sizeof (*new_core_hdr));
+
+  /* Ensure core_file_failing_command string is terminated.  This is
+     just to stop buffer overflows on fuzzed files.  */
+  ((char *) new_core_hdr)[sizeof (*new_core_hdr)] = 0;
 
-  memcpy (new_core_hdr, &core, sizeof (struct core_dumpxx));
-  /* The core_hdr() macro is no longer used here because it would
-     expand to code relying on gcc's cast-as-lvalue extension,
-     which was removed in gcc 4.0.  */
   abfd->tdata.any = new_core_hdr;
 
   /* .stack section.  */
   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,13 +136,34 @@ 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;
   sec->filepos = 0;
   sec->contents = (bfd_byte *)&new_core_hdr->c_flt.r64;
 
+  if (core.c_extctx)
+    {
+      /* vmx section.  */
+      flags = SEC_HAS_CONTENTS;
+      sec = bfd_make_section_anyway_with_flags (abfd, ".aix-vmx", flags);
+      if (sec == NULL)
+	return NULL;
+      sec->size = 560;
+      sec->vma = 0;
+      sec->filepos = core.c_extctx;
+
+      /* vmx section.  */
+      flags = SEC_HAS_CONTENTS;
+      sec = bfd_make_section_anyway_with_flags (abfd, ".aix-vsx", flags);
+      if (sec == NULL)
+	return NULL;
+      sec->size = 256;
+      sec->vma = 0;
+      sec->filepos = core.c_extctx + 584;
+    }
+
   /* .ldinfo section.
      To actually find out how long this section is in this particular
      core dump would require going down the whole list of struct
@@ -150,7 +171,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 +185,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 +197,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;
+	  bfd_read (&ldinfo, sizeof (struct __ld_info64), abfd))
+	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 +224,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;
+	    bfd_read (&vminfo, sizeof (struct vm_infox), abfd))
+	  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,32 +249,32 @@ 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.  */
 
-bfd_boolean
+bool
 xcoff64_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
 {
   struct core_dumpxx core;
   char *path, *s;
   size_t alloc;
   const char *str1, *str2;
-  bfd_boolean return_value = FALSE;
+  bool return_value = false;
 
   /* Get the header.  */
   if (bfd_seek (core_bfd, 0, SEEK_SET) != 0)
     return return_value;
 
   if (sizeof (struct core_dumpxx) !=
-      bfd_bread (&core, sizeof (struct core_dumpxx), core_bfd))
+      bfd_read (&core, sizeof (struct core_dumpxx), core_bfd))
     return return_value;
 
   if (bfd_seek (core_bfd, core.c_loader, SEEK_SET) != 0)
@@ -268,7 +289,7 @@ xcoff64_core_file_matches_executable_p (
 
   while (1)
     {
-      if (bfd_bread (s, 1, core_bfd) != 1)
+      if (bfd_read (s, 1, core_bfd) != 1)
 	goto xcoff64_core_file_matches_executable_p_end_1;
 
       if (*s == '\0')
@@ -289,14 +310,14 @@ 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;
+    return_value = true;
 
  xcoff64_core_file_matches_executable_p_end_1:
   free (path);
@@ -329,14 +350,14 @@ 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);
   return 0;
 }
 
-bfd_boolean
+bool
 xcoff64_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
 {
   return generic_core_file_matches_executable_p (core_bfd, exec_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.20200303/bfd/aout32.c ./bfd/aout32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aout32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aout32.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/aout64.c ./bfd/aout64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aout64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aout64.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/aout-cris.c ./bfd/aout-cris.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aout-cris.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aout-cris.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD backend for CRIS a.out binaries.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 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.  */
@@ -72,7 +69,7 @@
 #define MY_exec_hdr_flags 1
 
 #define MY_write_object_contents MY (write_object_contents)
-static bfd_boolean MY (write_object_contents) (bfd *);
+static bool MY (write_object_contents) (bfd *);
 
 /* Forward this, so we can use a pointer to it in PARAMS.  */
 struct reloc_ext_external;
@@ -85,16 +82,15 @@ static void MY (swap_ext_reloc_in) (bfd
 				    arelent *, asymbol **, bfd_size_type);
 
 #define MY_set_sizes MY (set_sizes)
-static bfd_boolean MY (set_sizes) (bfd *);
+static bool MY (set_sizes) (bfd *);
 
 /* To set back reloc_size to ext, we make MY (set_sizes) be called
    through this construct.  Note that MY_set_arch_mach is only called
    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.  */
@@ -114,7 +110,7 @@ static bfd_boolean MY (set_sizes) (bfd *
 
 /* We need our own version to set header flags.  */
 
-static bfd_boolean
+static bool
 MY (write_object_contents) (bfd *abfd)
 {
   struct external_exec exec_bytes;
@@ -135,7 +131,7 @@ MY (write_object_contents) (bfd *abfd)
 
   WRITE_HEADERS (abfd, execp);
 
-  return TRUE;
+  return true;
 }
 
 /* We need our own for these reasons:
@@ -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)
     {
@@ -271,7 +269,7 @@ MY (swap_ext_reloc_in) (bfd *abfd,
    "obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;", to avoid changing
    NAME (aout, set_arch_mach) in aoutx.  */
 
-static bfd_boolean
+static bool
 MY (set_sizes) (bfd *abfd)
 {
   /* Just as the default in aout-target.h (with some #ifdefs folded)...  */
@@ -288,5 +286,5 @@ MY (set_sizes) (bfd *abfd)
 
   obj_reloc_entry_size (abfd) = RELOC_EXT_SIZE;
 
-  return TRUE;
+  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.20200303/bfd/aout-ns32k.c ./bfd/aout-ns32k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aout-ns32k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aout-ns32k.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Ian Dall (idall@eleceng.adelaide.edu.au).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -21,6 +21,7 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#include "libbfd.h"
 #include "aout/aout64.h"
 #include "ns32k.h"
 
@@ -31,7 +32,7 @@
 
 reloc_howto_type * MYNS (bfd_reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
 reloc_howto_type * MYNS (bfd_reloc_name_lookup) (bfd *, const char *);
-bfd_boolean	   MYNS (write_object_contents) (bfd *);
+bool MYNS (write_object_contents) (bfd *);
 
 /* Avoid multiple definitions from aoutx if supporting
    standard a.out format(s) as well as this one.  */
@@ -79,58 +80,58 @@ void bfd_ns32k_arch (void);
 reloc_howto_type MY (howto_table)[] =
 {
   /* ns32k immediate operands.  */
-  HOWTO (BFD_RELOC_NS32K_IMM_8, 0, 0, 8, FALSE, 0, complain_overflow_signed,
+  HOWTO (BFD_RELOC_NS32K_IMM_8, 0, 1, 8, false, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_imm, "NS32K_IMM_8",
-	 TRUE, 0x000000ff,0x000000ff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_IMM_16, 0, 1, 16, FALSE, 0, complain_overflow_signed,
+	 true, 0x000000ff,0x000000ff, false),
+  HOWTO (BFD_RELOC_NS32K_IMM_16, 0, 2, 16, false, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_imm,  "NS32K_IMM_16",
-	 TRUE, 0x0000ffff,0x0000ffff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_IMM_32, 0, 2, 32, FALSE, 0, complain_overflow_signed,
+	 true, 0x0000ffff,0x0000ffff, false),
+  HOWTO (BFD_RELOC_NS32K_IMM_32, 0, 4, 32, false, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_imm, "NS32K_IMM_32",
-	 TRUE, 0xffffffff,0xffffffff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_IMM_8_PCREL, 0, 0, 8, TRUE, 0, complain_overflow_signed,
+	 true, 0xffffffff,0xffffffff, false),
+  HOWTO (BFD_RELOC_NS32K_IMM_8_PCREL, 0, 1, 8, true, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_imm, "PCREL_NS32K_IMM_8",
-	 TRUE, 0x000000ff, 0x000000ff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_IMM_16_PCREL, 0, 1, 16, TRUE, 0, complain_overflow_signed,
+	 true, 0x000000ff, 0x000000ff, false),
+  HOWTO (BFD_RELOC_NS32K_IMM_16_PCREL, 0, 2, 16, true, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_imm, "PCREL_NS32K_IMM_16",
-	 TRUE, 0x0000ffff,0x0000ffff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_IMM_32_PCREL, 0, 2, 32, TRUE, 0, complain_overflow_signed,
+	 true, 0x0000ffff,0x0000ffff, false),
+  HOWTO (BFD_RELOC_NS32K_IMM_32_PCREL, 0, 4, 32, true, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_imm, "PCREL_NS32K_IMM_32",
-	 TRUE, 0xffffffff,0xffffffff, FALSE),
+	 true, 0xffffffff,0xffffffff, false),
 
   /* ns32k displacements.  */
-  HOWTO (BFD_RELOC_NS32K_DISP_8, 0, 0, 7, FALSE, 0, complain_overflow_signed,
+  HOWTO (BFD_RELOC_NS32K_DISP_8, 0, 1, 7, false, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_disp, "NS32K_DISP_8",
-	 TRUE, 0x000000ff,0x000000ff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_DISP_16, 0, 1, 14, FALSE, 0, complain_overflow_signed,
+	 true, 0x000000ff,0x000000ff, false),
+  HOWTO (BFD_RELOC_NS32K_DISP_16, 0, 2, 14, false, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_disp, "NS32K_DISP_16",
-	 TRUE, 0x0000ffff, 0x0000ffff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_DISP_32, 0, 2, 30, FALSE, 0, complain_overflow_signed,
+	 true, 0x0000ffff, 0x0000ffff, false),
+  HOWTO (BFD_RELOC_NS32K_DISP_32, 0, 4, 30, false, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_disp, "NS32K_DISP_32",
-	 TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_DISP_8_PCREL, 0, 0, 7, TRUE, 0, complain_overflow_signed,
+	 true, 0xffffffff, 0xffffffff, false),
+  HOWTO (BFD_RELOC_NS32K_DISP_8_PCREL, 0, 1, 7, true, 0, complain_overflow_signed,
 	   _bfd_ns32k_reloc_disp, "PCREL_NS32K_DISP_8",
-	 TRUE, 0x000000ff,0x000000ff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_DISP_16_PCREL, 0, 1, 14, TRUE, 0, complain_overflow_signed,
+	 true, 0x000000ff,0x000000ff, false),
+  HOWTO (BFD_RELOC_NS32K_DISP_16_PCREL, 0, 2, 14, true, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_disp, "PCREL_NS32K_DISP_16",
-	 TRUE, 0x0000ffff,0x0000ffff, FALSE),
-  HOWTO (BFD_RELOC_NS32K_DISP_32_PCREL, 0, 2, 30, TRUE, 0, complain_overflow_signed,
+	 true, 0x0000ffff,0x0000ffff, false),
+  HOWTO (BFD_RELOC_NS32K_DISP_32_PCREL, 0, 4, 30, true, 0, complain_overflow_signed,
 	 _bfd_ns32k_reloc_disp, "PCREL_NS32K_DISP_32",
-	 TRUE, 0xffffffff,0xffffffff, FALSE),
+	 true, 0xffffffff,0xffffffff, false),
 
   /* Normal 2's complement.  */
-  HOWTO (BFD_RELOC_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,0,
-	 "8", TRUE, 0x000000ff,0x000000ff, FALSE),
-  HOWTO (BFD_RELOC_16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,0,
-	 "16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
-  HOWTO (BFD_RELOC_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,0,
-	 "32", TRUE, 0xffffffff,0xffffffff, FALSE),
-  HOWTO (BFD_RELOC_8_PCREL, 0, 0, 8, TRUE, 0, complain_overflow_signed, 0,
-	 "PCREL_8", TRUE, 0x000000ff,0x000000ff, FALSE),
-  HOWTO (BFD_RELOC_16_PCREL, 0, 1, 16, TRUE, 0, complain_overflow_signed, 0,
-	 "PCREL_16", TRUE, 0x0000ffff,0x0000ffff, FALSE),
-  HOWTO (BFD_RELOC_32_PCREL, 0, 2, 32, TRUE, 0, complain_overflow_signed, 0,
-	 "PCREL_32", TRUE, 0xffffffff,0xffffffff, FALSE),
+  HOWTO (BFD_RELOC_8, 0, 1, 8, false, 0, complain_overflow_bitfield,0,
+	 "8", true, 0x000000ff,0x000000ff, false),
+  HOWTO (BFD_RELOC_16, 0, 2, 16, false, 0, complain_overflow_bitfield,0,
+	 "16", true, 0x0000ffff,0x0000ffff, false),
+  HOWTO (BFD_RELOC_32, 0, 4, 32, false, 0, complain_overflow_bitfield,0,
+	 "32", true, 0xffffffff,0xffffffff, false),
+  HOWTO (BFD_RELOC_8_PCREL, 0, 1, 8, true, 0, complain_overflow_signed, 0,
+	 "PCREL_8", true, 0x000000ff,0x000000ff, false),
+  HOWTO (BFD_RELOC_16_PCREL, 0, 2, 16, true, 0, complain_overflow_signed, 0,
+	 "PCREL_16", true, 0x0000ffff,0x0000ffff, false),
+  HOWTO (BFD_RELOC_32_PCREL, 0, 4, 32, true, 0, complain_overflow_signed, 0,
+	 "PCREL_32", true, 0xffffffff,0xffffffff, false),
 };
 
 #define CTOR_TABLE_RELOC_HOWTO(BFD) (MY (howto_table) + 14)
@@ -143,12 +144,12 @@ reloc_howto_type MY (howto_table)[] =
 static reloc_howto_type *
 MY (reloc_howto) (bfd *abfd ATTRIBUTE_UNUSED,
 		  struct reloc_std_external *rel,
-		  int *r_index,
+		  unsigned int *r_index,
 		  int *r_extern,
 		  int *r_pcrel)
 {
   unsigned int r_length;
-  int r_ns32k_type;
+  unsigned int r_ns32k_type;
 
   *r_index =  ((rel->r_index[2] << 16)
 	       | (rel->r_index[1] << 8)
@@ -159,6 +160,8 @@ MY (reloc_howto) (bfd *abfd ATTRIBUTE_UN
 		>> RELOC_STD_BITS_LENGTH_SH_LITTLE);
   r_ns32k_type  =  ((rel->r_type[0] & RELOC_STD_BITS_NS32K_TYPE_LITTLE)
 		    >> RELOC_STD_BITS_NS32K_TYPE_SH_LITTLE);
+  if (r_length > 2 || r_ns32k_type > 2)
+    return NULL;
   return (MY (howto_table) + r_length + 3 * (*r_pcrel) + 6 * r_ns32k_type);
 }
 
@@ -178,7 +181,7 @@ MY (put_reloc) (bfd *abfd,
   int r_ns32k_type;
 
   PUT_WORD (abfd, value, reloc->r_address);
-  r_length = howto->size ;	/* Size as a power of two.  */
+  r_length = bfd_log2 (bfd_get_reloc_size (howto));
   r_pcrel  = (int) howto->pc_relative; /* Relative to PC?  */
   r_ns32k_type = (howto - MY (howto_table) )/6;
 
@@ -271,7 +274,7 @@ MY_swap_std_reloc_in (bfd *abfd,
 		      asymbol **symbols,
 		      bfd_size_type symcount ATTRIBUTE_UNUSED)
 {
-  int r_index;
+  unsigned int r_index;
   int r_extern;
   int r_pcrel;
   struct aoutdata  *su = &(abfd->tdata.aout_data->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.20200303/bfd/aout-target.h ./bfd/aout-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aout-target.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aout-target.h	2026-03-05 02:07:20.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-2025 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,22 +121,22 @@ 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)
+  if (bfd_read (&exec_bytes, amt, abfd) != amt)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -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,19 +180,20 @@ 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
 
 #ifndef MY_mkobject
 
-static bfd_boolean
+static bool
 MY (mkobject) (bfd *abfd)
 {
   return NAME (aout, mkobject (abfd));
@@ -209,16 +210,18 @@ MY (mkobject) (bfd *abfd)
    section contents, and copy_private_bfd_data is not called until
    after the section contents have been set.  */
 
-static bfd_boolean
+static bool
 MY_bfd_copy_private_section_data (bfd *ibfd,
 				  asection *isec ATTRIBUTE_UNUSED,
 				  bfd *obfd,
-				  asection *osec ATTRIBUTE_UNUSED)
+				  asection *osec ATTRIBUTE_UNUSED,
+				  struct bfd_link_info *link_info)
 {
-  if (bfd_get_flavour (ibfd) == bfd_target_aout_flavour
+  if (link_info == NULL
+      && bfd_get_flavour (ibfd) == bfd_target_aout_flavour
       && bfd_get_flavour (obfd) == bfd_target_aout_flavour)
     obj_aout_subformat (obfd) = obj_aout_subformat (ibfd);
-  return TRUE;
+  return true;
 }
 
 #endif
@@ -229,7 +232,7 @@ MY_bfd_copy_private_section_data (bfd *i
 
 #ifndef MY_write_object_contents
 
-static bfd_boolean
+static bool
 MY (write_object_contents) (bfd *abfd)
 {
   struct external_exec exec_bytes;
@@ -239,14 +242,14 @@ MY (write_object_contents) (bfd *abfd)
 
   WRITE_HEADERS (abfd, execp);
 
-  return TRUE;
+  return true;
 }
 #define MY_write_object_contents MY (write_object_contents)
 #endif
 
 #ifndef MY_set_sizes
 
-static bfd_boolean
+static bool
 MY (set_sizes) (bfd *abfd)
 {
   adata(abfd).page_size = TARGET_PAGE_SIZE;
@@ -259,7 +262,7 @@ MY (set_sizes) (bfd *abfd)
 #endif
 
   adata(abfd).exec_bytes_size = EXEC_BYTES_SIZE;
-  return TRUE;
+  return true;
 }
 #define MY_set_sizes MY (set_sizes)
 #endif
@@ -285,9 +288,6 @@ MY (set_sizes) (bfd *abfd)
 #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
@@ -311,7 +311,6 @@ static const struct aout_backend_data MY
   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,
@@ -344,7 +343,7 @@ MY_final_link_callback (bfd *abfd,
 /* Final link routine.  We need to use a call back to get the correct
    offsets in the output file.  */
 
-static bfd_boolean
+static bool
 MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   return NAME (aout, final_link) (abfd, info, MY_final_link_callback);
@@ -431,9 +430,6 @@ MY_bfd_final_link (bfd *abfd, struct bfd
 #ifndef MY_get_section_contents
 #define MY_get_section_contents NAME (aout, 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
@@ -474,6 +470,9 @@ MY_bfd_final_link (bfd *abfd, struct bfd
 #ifndef MY_find_nearest_line
 #define MY_find_nearest_line NAME (aout, find_nearest_line)
 #endif
+#ifndef MY_find_nearest_line_with_alt
+#define MY_find_nearest_line_with_alt _bfd_nosymbols_find_nearest_line_with_alt
+#endif
 #ifndef MY_find_line
 #define MY_find_line _bfd_nosymbols_find_line
 #endif
@@ -594,18 +593,7 @@ MY_bfd_final_link (bfd *abfd, struct bfd
 #endif
 
 #ifndef MY_close_and_cleanup
-
-/* Handle closing of a BFD including the resource-releasing parts.  */
-
-static bfd_boolean
-MY_close_and_cleanup (bfd *abfd)
-{
-  if (!MY_bfd_free_cached_info (abfd))
-    return FALSE;
-
-  return _bfd_generic_close_and_cleanup (abfd);
-}
-
+#define MY_close_and_cleanup _bfd_generic_close_and_cleanup
 #endif
 
 #ifndef MY_get_dynamic_symtab_upper_bound
@@ -659,6 +647,7 @@ const bfd_target MY (vec) =
   AR_PAD_CHAR,			/* AR_pad_char.  */
   15,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 #ifdef TARGET_IS_BIG_ENDIAN_P
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
      bfd_getb32, bfd_getb_signed_32, bfd_putb32,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aout-tic30.c ./bfd/aout-tic30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aout-tic30.c	2020-03-03 02:08:51.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.20200303/bfd/aoutx.h ./bfd/aoutx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/aoutx.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/aoutx.h	2026-03-05 02:07:20.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-2025 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
@@ -178,34 +190,34 @@ DESCRIPTION
 reloc_howto_type howto_table_ext[] =
 {
   /*	 Type	      rs   size bsz  pcrel bitpos ovrf			sf name		 part_inpl readmask setmask pcdone.  */
-  HOWTO (RELOC_8,	0,  0,	8,  FALSE, 0, complain_overflow_bitfield, 0, "8",	    FALSE, 0, 0x000000ff, FALSE),
-  HOWTO (RELOC_16,	0,  1,	16, FALSE, 0, complain_overflow_bitfield, 0, "16",	    FALSE, 0, 0x0000ffff, FALSE),
-  HOWTO (RELOC_32,	0,  2,	32, FALSE, 0, complain_overflow_bitfield, 0, "32",	    FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (RELOC_DISP8,	0,  0,	8,  TRUE,  0, complain_overflow_signed,	  0, "DISP8",	    FALSE, 0, 0x000000ff, FALSE),
-  HOWTO (RELOC_DISP16,	0,  1,	16, TRUE,  0, complain_overflow_signed,	  0, "DISP16",	    FALSE, 0, 0x0000ffff, FALSE),
-  HOWTO (RELOC_DISP32,	0,  2,	32, TRUE,  0, complain_overflow_signed,	  0, "DISP32",	    FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (RELOC_WDISP30, 2,  2,	30, TRUE,  0, complain_overflow_signed,	  0, "WDISP30",	    FALSE, 0, 0x3fffffff, FALSE),
-  HOWTO (RELOC_WDISP22, 2,  2,	22, TRUE,  0, complain_overflow_signed,	  0, "WDISP22",	    FALSE, 0, 0x003fffff, FALSE),
-  HOWTO (RELOC_HI22,   10,  2,	22, FALSE, 0, complain_overflow_bitfield, 0, "HI22",	    FALSE, 0, 0x003fffff, FALSE),
-  HOWTO (RELOC_22,	0,  2,	22, FALSE, 0, complain_overflow_bitfield, 0, "22",	    FALSE, 0, 0x003fffff, FALSE),
-  HOWTO (RELOC_13,	0,  2,	13, FALSE, 0, complain_overflow_bitfield, 0, "13",	    FALSE, 0, 0x00001fff, FALSE),
-  HOWTO (RELOC_LO10,	0,  2,	10, FALSE, 0, complain_overflow_dont,	  0, "LO10",	    FALSE, 0, 0x000003ff, FALSE),
-  HOWTO (RELOC_SFA_BASE,0,  2,	32, FALSE, 0, complain_overflow_bitfield, 0, "SFA_BASE",    FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (RELOC_SFA_OFF13,0, 2,	32, FALSE, 0, complain_overflow_bitfield, 0, "SFA_OFF13",   FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (RELOC_BASE10,	0,  2,	10, FALSE, 0, complain_overflow_dont,	  0, "BASE10",	    FALSE, 0, 0x000003ff, FALSE),
-  HOWTO (RELOC_BASE13,	0,  2,	13, FALSE, 0, complain_overflow_signed,	  0, "BASE13",	    FALSE, 0, 0x00001fff, FALSE),
-  HOWTO (RELOC_BASE22, 10,  2,	22, FALSE, 0, complain_overflow_bitfield, 0, "BASE22",	    FALSE, 0, 0x003fffff, FALSE),
-  HOWTO (RELOC_PC10,	0,  2,	10, TRUE,  0, complain_overflow_dont,	  0, "PC10",	    FALSE, 0, 0x000003ff, TRUE),
-  HOWTO (RELOC_PC22,   10,  2,	22, TRUE,  0, complain_overflow_signed,	  0, "PC22",	    FALSE, 0, 0x003fffff, TRUE),
-  HOWTO (RELOC_JMP_TBL, 2,  2,	30, TRUE,  0, complain_overflow_signed,	  0, "JMP_TBL",	    FALSE, 0, 0x3fffffff, FALSE),
-  HOWTO (RELOC_SEGOFF16,0,  2,	0,  FALSE, 0, complain_overflow_bitfield, 0, "SEGOFF16",    FALSE, 0, 0x00000000, FALSE),
-  HOWTO (RELOC_GLOB_DAT,0,  2,	0,  FALSE, 0, complain_overflow_bitfield, 0, "GLOB_DAT",    FALSE, 0, 0x00000000, FALSE),
-  HOWTO (RELOC_JMP_SLOT,0,  2,	0,  FALSE, 0, complain_overflow_bitfield, 0, "JMP_SLOT",    FALSE, 0, 0x00000000, FALSE),
-  HOWTO (RELOC_RELATIVE,0,  2,	0,  FALSE, 0, complain_overflow_bitfield, 0, "RELATIVE",    FALSE, 0, 0x00000000, FALSE),
-  HOWTO (0,		0,  3,	0,  FALSE, 0, complain_overflow_dont,	  0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE),
-  HOWTO (0,		0,  3,	0,  FALSE, 0, complain_overflow_dont,	  0, "R_SPARC_NONE",FALSE, 0, 0x00000000, TRUE),
+  HOWTO (RELOC_8,	0,  1,	8,  false, 0, complain_overflow_bitfield, 0, "8",	    false, 0, 0x000000ff, false),
+  HOWTO (RELOC_16,	0,  2,	16, false, 0, complain_overflow_bitfield, 0, "16",	    false, 0, 0x0000ffff, false),
+  HOWTO (RELOC_32,	0,  4,	32, false, 0, complain_overflow_bitfield, 0, "32",	    false, 0, 0xffffffff, false),
+  HOWTO (RELOC_DISP8,	0,  1,	8,  true,  0, complain_overflow_signed,	  0, "DISP8",	    false, 0, 0x000000ff, false),
+  HOWTO (RELOC_DISP16,	0,  2,	16, true,  0, complain_overflow_signed,	  0, "DISP16",	    false, 0, 0x0000ffff, false),
+  HOWTO (RELOC_DISP32,	0,  4,	32, true,  0, complain_overflow_signed,	  0, "DISP32",	    false, 0, 0xffffffff, false),
+  HOWTO (RELOC_WDISP30, 2,  4,	30, true,  0, complain_overflow_signed,	  0, "WDISP30",	    false, 0, 0x3fffffff, false),
+  HOWTO (RELOC_WDISP22, 2,  4,	22, true,  0, complain_overflow_signed,	  0, "WDISP22",	    false, 0, 0x003fffff, false),
+  HOWTO (RELOC_HI22,   10,  4,	22, false, 0, complain_overflow_bitfield, 0, "HI22",	    false, 0, 0x003fffff, false),
+  HOWTO (RELOC_22,	0,  4,	22, false, 0, complain_overflow_bitfield, 0, "22",	    false, 0, 0x003fffff, false),
+  HOWTO (RELOC_13,	0,  4,	13, false, 0, complain_overflow_bitfield, 0, "13",	    false, 0, 0x00001fff, false),
+  HOWTO (RELOC_LO10,	0,  4,	10, false, 0, complain_overflow_dont,	  0, "LO10",	    false, 0, 0x000003ff, false),
+  HOWTO (RELOC_SFA_BASE,0,  4,	32, false, 0, complain_overflow_bitfield, 0, "SFA_BASE",    false, 0, 0xffffffff, false),
+  HOWTO (RELOC_SFA_OFF13,0, 4,	32, false, 0, complain_overflow_bitfield, 0, "SFA_OFF13",   false, 0, 0xffffffff, false),
+  HOWTO (RELOC_BASE10,	0,  4,	10, false, 0, complain_overflow_dont,	  0, "BASE10",	    false, 0, 0x000003ff, false),
+  HOWTO (RELOC_BASE13,	0,  4,	13, false, 0, complain_overflow_signed,	  0, "BASE13",	    false, 0, 0x00001fff, false),
+  HOWTO (RELOC_BASE22, 10,  4,	22, false, 0, complain_overflow_bitfield, 0, "BASE22",	    false, 0, 0x003fffff, false),
+  HOWTO (RELOC_PC10,	0,  4,	10, true,  0, complain_overflow_dont,	  0, "PC10",	    false, 0, 0x000003ff, true),
+  HOWTO (RELOC_PC22,   10,  4,	22, true,  0, complain_overflow_signed,	  0, "PC22",	    false, 0, 0x003fffff, true),
+  HOWTO (RELOC_JMP_TBL, 2,  4,	30, true,  0, complain_overflow_signed,	  0, "JMP_TBL",	    false, 0, 0x3fffffff, false),
+  HOWTO (RELOC_SEGOFF16,0,  4,	0,  false, 0, complain_overflow_bitfield, 0, "SEGOFF16",    false, 0, 0x00000000, false),
+  HOWTO (RELOC_GLOB_DAT,0,  4,	0,  false, 0, complain_overflow_bitfield, 0, "GLOB_DAT",    false, 0, 0x00000000, false),
+  HOWTO (RELOC_JMP_SLOT,0,  4,	0,  false, 0, complain_overflow_bitfield, 0, "JMP_SLOT",    false, 0, 0x00000000, false),
+  HOWTO (RELOC_RELATIVE,0,  4,	0,  false, 0, complain_overflow_bitfield, 0, "RELATIVE",    false, 0, 0x00000000, false),
+  HOWTO (0,		0,  0,	0,  false, 0, complain_overflow_dont,	  0, "R_SPARC_NONE",false, 0, 0x00000000, true),
+  HOWTO (0,		0,  0,	0,  false, 0, complain_overflow_dont,	  0, "R_SPARC_NONE",false, 0, 0x00000000, true),
 #define RELOC_SPARC_REV32 RELOC_WDISP19
-  HOWTO (RELOC_SPARC_REV32, 0, 2, 32, FALSE, 0, complain_overflow_dont,	  0,"R_SPARC_REV32",FALSE, 0, 0xffffffff, FALSE),
+  HOWTO (RELOC_SPARC_REV32, 0, 4, 32, false, 0, complain_overflow_dont,	  0,"R_SPARC_REV32",false, 0, 0xffffffff, false),
 };
 
 /* Convert standard reloc records to "arelent" format (incl byte swap).  */
@@ -213,23 +225,23 @@ reloc_howto_type howto_table_ext[] =
 reloc_howto_type howto_table_std[] =
 {
   /* type	       rs size bsz  pcrel bitpos ovrf			  sf name     part_inpl readmask  setmask    pcdone.  */
-HOWTO ( 0,	       0,  0,	8,  FALSE, 0, complain_overflow_bitfield,0,"8",		TRUE, 0x000000ff,0x000000ff, FALSE),
-HOWTO ( 1,	       0,  1,	16, FALSE, 0, complain_overflow_bitfield,0,"16",	TRUE, 0x0000ffff,0x0000ffff, FALSE),
-HOWTO ( 2,	       0,  2,	32, FALSE, 0, complain_overflow_bitfield,0,"32",	TRUE, 0xffffffff,0xffffffff, FALSE),
-HOWTO ( 3,	       0,  4,	64, FALSE, 0, complain_overflow_bitfield,0,"64",	TRUE, 0xdeaddead,0xdeaddead, FALSE),
-HOWTO ( 4,	       0,  0,	8,  TRUE,  0, complain_overflow_signed,	 0,"DISP8",	TRUE, 0x000000ff,0x000000ff, FALSE),
-HOWTO ( 5,	       0,  1,	16, TRUE,  0, complain_overflow_signed,	 0,"DISP16",	TRUE, 0x0000ffff,0x0000ffff, FALSE),
-HOWTO ( 6,	       0,  2,	32, TRUE,  0, complain_overflow_signed,	 0,"DISP32",	TRUE, 0xffffffff,0xffffffff, FALSE),
-HOWTO ( 7,	       0,  4,	64, TRUE,  0, complain_overflow_signed,	 0,"DISP64",	TRUE, 0xfeedface,0xfeedface, FALSE),
-HOWTO ( 8,	       0,  2,	 0, FALSE, 0, complain_overflow_bitfield,0,"GOT_REL",	FALSE,	       0,0x00000000, FALSE),
-HOWTO ( 9,	       0,  1,	16, FALSE, 0, complain_overflow_bitfield,0,"BASE16",	FALSE,0xffffffff,0xffffffff, FALSE),
-HOWTO (10,	       0,  2,	32, FALSE, 0, complain_overflow_bitfield,0,"BASE32",	FALSE,0xffffffff,0xffffffff, FALSE),
+HOWTO ( 0,	       0,  1,	8,  false, 0, complain_overflow_bitfield,0,"8",		true, 0x000000ff,0x000000ff, false),
+HOWTO ( 1,	       0,  2,	16, false, 0, complain_overflow_bitfield,0,"16",	true, 0x0000ffff,0x0000ffff, false),
+HOWTO ( 2,	       0,  4,	32, false, 0, complain_overflow_bitfield,0,"32",	true, 0xffffffff,0xffffffff, false),
+HOWTO ( 3,	       0,  8,	64, false, 0, complain_overflow_bitfield,0,"64",	true, 0xdeaddead,0xdeaddead, false),
+HOWTO ( 4,	       0,  1,	8,  true,  0, complain_overflow_signed,	 0,"DISP8",	true, 0x000000ff,0x000000ff, false),
+HOWTO ( 5,	       0,  2,	16, true,  0, complain_overflow_signed,	 0,"DISP16",	true, 0x0000ffff,0x0000ffff, false),
+HOWTO ( 6,	       0,  4,	32, true,  0, complain_overflow_signed,	 0,"DISP32",	true, 0xffffffff,0xffffffff, false),
+HOWTO ( 7,	       0,  8,	64, true,  0, complain_overflow_signed,	 0,"DISP64",	true, 0xfeedface,0xfeedface, false),
+HOWTO ( 8,	       0,  4,	 0, false, 0, complain_overflow_bitfield,0,"GOT_REL",	false,	       0,0x00000000, false),
+HOWTO ( 9,	       0,  2,	16, false, 0, complain_overflow_bitfield,0,"BASE16",	false,0xffffffff,0xffffffff, false),
+HOWTO (10,	       0,  4,	32, false, 0, complain_overflow_bitfield,0,"BASE32",	false,0xffffffff,0xffffffff, false),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
-  HOWTO (16,	       0,  2,	 0, FALSE, 0, complain_overflow_bitfield,0,"JMP_TABLE", FALSE,	       0,0x00000000, FALSE),
+  HOWTO (16,	       0,  4,	 0, false, 0, complain_overflow_bitfield,0,"JMP_TABLE", false,	       0,0x00000000, false),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
@@ -245,7 +257,7 @@ EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
-  HOWTO (32,	       0,  2,	 0, FALSE, 0, complain_overflow_bitfield,0,"RELATIVE",	FALSE,	       0,0x00000000, FALSE),
+  HOWTO (32,	       0,  4,	 0, false, 0, complain_overflow_bitfield,0,"RELATIVE",	false,	       0,0x00000000, false),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
@@ -253,7 +265,7 @@ EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
 EMPTY_HOWTO (-1),
-  HOWTO (40,	       0,  2,	 0, FALSE, 0, complain_overflow_bitfield,0,"BASEREL",	FALSE,	       0,0x00000000, FALSE),
+  HOWTO (40,	       0,  4,	 0, false, 0, complain_overflow_bitfield,0,"BASEREL",	false,	       0,0x00000000, false),
 };
 
 #define TABLE_SIZE(TABLE)	(sizeof (TABLE) / sizeof (TABLE[0]))
@@ -395,7 +407,7 @@ FUNCTION
 	aout_@var{size}_swap_exec_header_out
 
 SYNOPSIS
-	void aout_@var{size}_swap_exec_header_out
+	bool aout_@var{size}_swap_exec_header_out
 	  (bfd *abfd,
 	   struct internal_exec *execp,
 	   struct external_exec *raw_bytes);
@@ -404,11 +416,37 @@ DESCRIPTION
 	Swap the information in an internal exec header structure
 	@var{execp} into the buffer @var{raw_bytes} ready for writing to disk.
 */
-void
+bool
 NAME (aout, swap_exec_header_out) (bfd *abfd,
 				   struct internal_exec *execp,
 				   struct external_exec *bytes)
 {
+  const char *err = NULL;
+  uint64_t val;
+#define MAXVAL(x) ((UINT64_C (1) << (8 * sizeof (x) - 1) << 1) - 1)
+  if ((val = execp->a_text) > MAXVAL (bytes->e_text))
+    err = "e_text";
+  else if ((val = execp->a_data) > MAXVAL (bytes->e_data))
+    err = "e_data";
+  else if ((val = execp->a_bss) > MAXVAL (bytes->e_bss))
+    err = "e_bss";
+  else if ((val = execp->a_syms) > MAXVAL (bytes->e_syms))
+    err = "e_syms";
+  else if ((val = execp->a_entry) > MAXVAL (bytes->e_entry))
+    err = "e_entry";
+  else if ((val = execp->a_trsize) > MAXVAL (bytes->e_trsize))
+    err = "e_trsize";
+  else if ((val = execp->a_drsize) > MAXVAL (bytes->e_drsize))
+    err = "e_drsize";
+#undef MAXVAL
+  if (err)
+    {
+      _bfd_error_handler (_("%pB: %#" PRIx64 " overflows header %s field"),
+			  abfd, val, err);
+      bfd_set_error (bfd_error_file_too_big);
+      return false;
+    }
+
   /* Now fill in fields in the raw data, from the fields in the exec struct.  */
   H_PUT_32 (abfd, execp->a_info  , bytes->e_info);
   PUT_WORD (abfd, execp->a_text  , bytes->e_text);
@@ -418,20 +456,21 @@ NAME (aout, swap_exec_header_out) (bfd *
   PUT_WORD (abfd, execp->a_entry , bytes->e_entry);
   PUT_WORD (abfd, execp->a_trsize, bytes->e_trsize);
   PUT_WORD (abfd, execp->a_drsize, bytes->e_drsize);
+  return true;
 }
 
 /* Make all the section for an a.out file.  */
 
-bfd_boolean
+bool
 NAME (aout, make_sections) (bfd *abfd)
 {
   if (obj_textsec (abfd) == NULL && bfd_make_section (abfd, ".text") == NULL)
-    return FALSE;
+    return false;
   if (obj_datasec (abfd) == NULL && bfd_make_section (abfd, ".data") == NULL)
-    return FALSE;
+    return false;
   if (obj_bsssec (abfd) == NULL && bfd_make_section (abfd, ".bss") == NULL)
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 /*
@@ -439,10 +478,10 @@ FUNCTION
 	aout_@var{size}_some_aout_object_p
 
 SYNOPSIS
-	const bfd_target *aout_@var{size}_some_aout_object_p
+	bfd_cleanup aout_@var{size}_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 *));
 
 DESCRIPTION
 	Some a.out variant thinks that the file open in @var{abfd}
@@ -452,26 +491,19 @@ 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);
+  struct aout_data_struct *rawptr;
+  bfd_cleanup result;
 
-  rawptr = (struct aout_data_struct *) bfd_zalloc (abfd, amt);
+  rawptr = bfd_zalloc (abfd, sizeof (*rawptr));
   if (rawptr == NULL)
     return NULL;
-
-  oldrawptr = abfd->tdata.aout_data;
   abfd->tdata.aout_data = rawptr;
 
-  /* Copy the contents of the old tdata struct.  */
-  if (oldrawptr != NULL)
-    *abfd->tdata.aout_data = *oldrawptr;
-
   abfd->tdata.aout_data->a.hdr = &rawptr->e;
   /* Copy in the internal_exec struct.  */
   *(abfd->tdata.aout_data->a.hdr) = *execp;
@@ -492,7 +524,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 +535,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
@@ -513,7 +544,6 @@ NAME (aout, some_aout_object_p) (bfd *ab
 
   abfd->start_address = execp->a_entry;
 
-  obj_aout_symbols (abfd) = NULL;
   abfd->symcount = execp->a_syms / sizeof (struct external_nlist);
 
   /* The default relocation entry size is that of traditional V7 Unix.  */
@@ -522,14 +552,6 @@ NAME (aout, some_aout_object_p) (bfd *ab
   /* The default symbol entry size is that of traditional Unix.  */
   obj_symbol_entry_size (abfd) = EXTERNAL_NLIST_SIZE;
 
-#ifdef USE_MMAP
-  bfd_init_window (&obj_aout_sym_window (abfd));
-  bfd_init_window (&obj_aout_string_window (abfd));
-#endif
-  obj_aout_external_syms (abfd) = NULL;
-  obj_aout_external_strings (abfd) = NULL;
-  obj_aout_sym_hashes (abfd) = NULL;
-
   if (! NAME (aout, make_sections) (abfd))
     goto error_ret;
 
@@ -556,7 +578,6 @@ NAME (aout, some_aout_object_p) (bfd *ab
   /* Call back to the format-dependent code to fill in the rest of the
      fields and do any further cleanup.  Things that should be filled
      in by the callback:  */
-
   struct exec *execp = exec_hdr (abfd);
 
   obj_textsec (abfd)->size = N_TXTSIZE (execp);
@@ -580,18 +601,13 @@ NAME (aout, some_aout_object_p) (bfd *ab
   obj_sym_filepos (abfd) = N_SYMOFF (execp);
 
   /* Determine the architecture and machine type of the object file.  */
-  switch (N_MACHTYPE (exec_hdr (abfd)))
-    {
-    default:
-      abfd->obj_arch = bfd_arch_obscure;
-      break;
-    }
+  abfd->obj_arch = bfd_arch_obscure;
 
   adata (abfd)->page_size = TARGET_PAGE_SIZE;
   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
@@ -601,7 +617,7 @@ NAME (aout, some_aout_object_p) (bfd *ab
 
      Formats such as b.out, which have additional fields in the a.out
      header, should cope with them in this callback as well.  */
-#endif				/* DOCUMENTATION */
+#endif  /* DOCUMENTATION */
 
   result = (*callback_to_real_object_p) (abfd);
 
@@ -652,7 +668,6 @@ NAME (aout, some_aout_object_p) (bfd *ab
 
  error_ret:
   bfd_release (abfd, rawptr);
-  abfd->tdata.aout_data = oldrawptr;
   return NULL;
 }
 
@@ -661,23 +676,23 @@ FUNCTION
 	aout_@var{size}_mkobject
 
 SYNOPSIS
-	bfd_boolean aout_@var{size}_mkobject, (bfd *abfd);
+	bool aout_@var{size}_mkobject, (bfd *abfd);
 
 DESCRIPTION
 	Initialize BFD @var{abfd} for use with a.out files.
 */
 
-bfd_boolean
+bool
 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);
 
   rawptr = (struct aout_data_struct *) bfd_zalloc (abfd, amt);
   if (rawptr == NULL)
-    return FALSE;
+    return false;
 
   abfd->tdata.aout_data = rawptr;
   exec_hdr (abfd) = &(rawptr->e);
@@ -686,7 +701,7 @@ NAME (aout, mkobject) (bfd *abfd)
   obj_datasec (abfd) = NULL;
   obj_bsssec (abfd) = NULL;
 
-  return TRUE;
+  return true;
 }
 
 /*
@@ -697,7 +712,7 @@ SYNOPSIS
 	enum machine_type  aout_@var{size}_machine_type
 	 (enum bfd_architecture arch,
 	  unsigned long machine,
-	  bfd_boolean *unknown);
+	  bool *unknown);
 
 DESCRIPTION
 	Keep track of machine architecture and machine type for
@@ -712,12 +727,12 @@ DESCRIPTION
 enum machine_type
 NAME (aout, machine_type) (enum bfd_architecture arch,
 			   unsigned long machine,
-			   bfd_boolean *unknown)
+			   bool *unknown)
 {
   enum machine_type arch_flags;
 
   arch_flags = M_UNKNOWN;
-  *unknown = TRUE;
+  *unknown = true;
 
   switch (arch)
     {
@@ -819,7 +834,7 @@ NAME (aout, machine_type) (enum bfd_arch
       break;
 
     case bfd_arch_vax:
-      *unknown = FALSE;
+      *unknown = false;
       break;
 
     case bfd_arch_cris:
@@ -832,7 +847,7 @@ NAME (aout, machine_type) (enum bfd_arch
     }
 
   if (arch_flags != M_UNKNOWN)
-    *unknown = FALSE;
+    *unknown = false;
 
   return arch_flags;
 }
@@ -842,7 +857,7 @@ FUNCTION
 	aout_@var{size}_set_arch_mach
 
 SYNOPSIS
-	bfd_boolean aout_@var{size}_set_arch_mach,
+	bool aout_@var{size}_set_arch_mach,
 	 (bfd *,
 	  enum bfd_architecture arch,
 	  unsigned long machine);
@@ -853,21 +868,21 @@ DESCRIPTION
 	can support the architecture required.
 */
 
-bfd_boolean
+bool
 NAME (aout, set_arch_mach) (bfd *abfd,
 			    enum bfd_architecture arch,
 			    unsigned long machine)
 {
   if (! bfd_default_set_arch_mach (abfd, arch, machine))
-    return FALSE;
+    return false;
 
   if (arch != bfd_arch_unknown)
     {
-      bfd_boolean unknown;
+      bool unknown;
 
       NAME (aout, machine_type) (arch, machine, &unknown);
       if (unknown)
-	return FALSE;
+	return false;
     }
 
   /* Determine the size of a relocation entry.  */
@@ -891,57 +906,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);
 }
 
@@ -952,7 +966,10 @@ adjust_z_magic (bfd *abfd, struct intern
   file_ptr text_end;
   const struct aout_backend_data *abdp;
   /* TRUE if text includes exec header.  */
-  bfd_boolean ztih;
+  bool ztih;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
 
   abdp = aout_backend_info (abfd);
 
@@ -960,18 +977,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 +996,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 +1014,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 +1060,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,55 +1072,55 @@ 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);
 }
 
-bfd_boolean
+bool
 NAME (aout, adjust_sizes_and_vmas) (bfd *abfd)
 {
   struct internal_exec *execp = exec_hdr (abfd);
 
   if (! NAME (aout, make_sections) (abfd))
-    return FALSE;
+    return false;
 
   if (adata (abfd).magic != undecided_magic)
-    return TRUE;
+    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,14 +1185,14 @@ 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;
+  return true;
 }
 
 /*
@@ -1196,7 +1200,7 @@ FUNCTION
 	aout_@var{size}_new_section_hook
 
 SYNOPSIS
-	bfd_boolean aout_@var{size}_new_section_hook,
+	bool aout_@var{size}_new_section_hook,
 	   (bfd *abfd,
 	    asection *newsect);
 
@@ -1204,7 +1208,7 @@ DESCRIPTION
 	Called by the BFD in response to a @code{bfd_make_section}
 	request.
 */
-bfd_boolean
+bool
 NAME (aout, new_section_hook) (bfd *abfd, asection *newsect)
 {
   /* Align to double at least.  */
@@ -1233,7 +1237,7 @@ NAME (aout, new_section_hook) (bfd *abfd
   return _bfd_generic_new_section_hook (abfd, newsect);
 }
 
-bfd_boolean
+bool
 NAME (aout, set_section_contents) (bfd *abfd,
 				   sec_ptr section,
 				   const void * location,
@@ -1243,13 +1247,13 @@ NAME (aout, set_section_contents) (bfd *
   if (! abfd->output_has_begun)
     {
       if (! NAME (aout, adjust_sizes_and_vmas) (abfd))
-	return FALSE;
+	return false;
     }
 
   if (section == obj_bsssec (abfd))
     {
       bfd_set_error (bfd_error_no_contents);
-      return FALSE;
+      return false;
     }
 
   if (section != obj_textsec (abfd)
@@ -1265,55 +1269,43 @@ NAME (aout, set_section_contents) (bfd *
 	   (_("%pB: can not represent section `%pA' in a.out object file format"),
 	     abfd, section);
 	  bfd_set_error (bfd_error_nonrepresentable_section);
-	  return FALSE;
+	  return false;
 	}
     }
 
   if (count != 0)
     {
       if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
-	  || bfd_bwrite (location, count, abfd) != count)
-	return FALSE;
+	  || bfd_write (location, count, abfd) != count)
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read the external symbols from an a.out file.  */
 
-static bfd_boolean
+static bool
 aout_get_external_symbols (bfd *abfd)
 {
   if (obj_aout_external_syms (abfd) == NULL)
     {
       bfd_size_type count;
-      struct external_nlist *syms;
+      struct external_nlist *syms = NULL;
       bfd_size_type amt = exec_hdr (abfd)->a_syms;
 
       count = amt / EXTERNAL_NLIST_SIZE;
       if (count == 0)
-	return TRUE;		/* Nothing to do.  */
+	return true;
 
-#ifdef USE_MMAP
-      if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd), amt,
-				 &obj_aout_sym_window (abfd), TRUE))
-	return FALSE;
-      syms = (struct external_nlist *) obj_aout_sym_window (abfd).data;
-#else
       /* 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 = _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
+	return false;
 
       obj_aout_external_syms (abfd) = syms;
       obj_aout_external_sym_count (abfd) = count;
@@ -1329,47 +1321,35 @@ aout_get_external_symbols (bfd *abfd)
 
       /* Get the size of the strings.  */
       if (bfd_seek (abfd, obj_str_filepos (abfd), SEEK_SET) != 0
-	  || bfd_bread ((void *) string_chars, amt, abfd) != amt)
-	return FALSE;
+	  || bfd_read (string_chars, amt, abfd) != amt)
+	return false;
       stringsize = GET_WORD (abfd, string_chars);
       if (stringsize == 0)
 	stringsize = 1;
-      else if (stringsize < BYTES_IN_WORD
+      else if (stringsize + 1 < BYTES_IN_WORD + 1
 	       || (size_t) stringsize != stringsize)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
-#ifdef USE_MMAP
+      strings = (char *) bfd_malloc (stringsize + 1);
+      if (strings == NULL)
+	return false;
+
       if (stringsize >= BYTES_IN_WORD)
 	{
-	  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_WORD)
-	    {
-	      /* Keep the string count in the buffer for convenience
-		 when indexing with e_strx.  */
-	      amt = stringsize - BYTES_IN_WORD;
-	      if (bfd_bread (strings + BYTES_IN_WORD, amt, abfd) != amt)
-		{
-		  free (strings);
-		  return FALSE;
-		}
+	  amt = stringsize - BYTES_IN_WORD;
+	  if (bfd_read (strings + BYTES_IN_WORD, amt, abfd) != amt)
+	    {
+	      free (strings);
+	      return false;
 	    }
 	}
+
       /* Ensure that a zero index yields an empty string.  */
-      strings[0] = '\0';
+      if (stringsize >= BYTES_IN_WORD)
+	memset (strings, 0, BYTES_IN_WORD);
 
       /* Ensure that the string buffer is NUL terminated.  */
       strings[stringsize] = 0;
@@ -1378,7 +1358,7 @@ aout_get_external_symbols (bfd *abfd)
       obj_aout_external_string_size (abfd) = stringsize;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Translate an a.out symbol into a BFD symbol.  The desc, other, type
@@ -1386,7 +1366,7 @@ aout_get_external_symbols (bfd *abfd)
    nlist structure.  This function is responsible for setting
    symbol->flags and symbol->section, and adjusting symbol->value.  */
 
-static bfd_boolean
+static bool
 translate_from_native_sym_flags (bfd *abfd, aout_symbol_type *cache_ptr)
 {
   flagword visible;
@@ -1421,7 +1401,7 @@ translate_from_native_sym_flags (bfd *ab
       cache_ptr->symbol.section = sec;
       cache_ptr->symbol.value -= sec->vma;
 
-      return TRUE;
+      return true;
     }
 
   /* Get the default visibility.  This does not apply to all types, so
@@ -1552,12 +1532,12 @@ translate_from_native_sym_flags (bfd *ab
       break;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the fields of SYM_POINTER according to CACHE_PTR.  */
 
-static bfd_boolean
+static bool
 translate_to_native_sym_flags (bfd *abfd,
 			       asymbol *cache_ptr,
 			       struct external_nlist *sym_pointer)
@@ -1584,7 +1564,7 @@ translate_to_native_sym_flags (bfd *abfd
 	 abfd,
 	 cache_ptr->name != NULL ? cache_ptr->name : _("*unknown*"));
       bfd_set_error (bfd_error_nonrepresentable_section);
-      return FALSE;
+      return false;
     }
 
   if (sec->output_section != NULL)
@@ -1618,7 +1598,7 @@ translate_to_native_sym_flags (bfd *abfd
 	   (_("%pB: can not represent section `%pA' in a.out object file format"),
 	     abfd, sec);
 	  bfd_set_error (bfd_error_nonrepresentable_section);
-	  return FALSE;
+	  return false;
 	}
     }
 
@@ -1667,7 +1647,7 @@ translate_to_native_sym_flags (bfd *abfd
 
   PUT_WORD (abfd, value, sym_pointer->e_value);
 
-  return TRUE;
+  return true;
 }
 
 /* Native-level interface to symbols.  */
@@ -1675,7 +1655,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,16 +1665,16 @@ 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
+bool
 NAME (aout, translate_symbol_table) (bfd *abfd,
 				     aout_symbol_type *in,
 				     struct external_nlist *ext,
 				     bfd_size_type count,
 				     char *str,
 				     bfd_size_type strsize,
-				     bfd_boolean dynamic)
+				     bool dynamic)
 {
   struct external_nlist *ext_end;
 
@@ -1721,7 +1701,7 @@ NAME (aout, translate_symbol_table) (bfd
 	    (_("%pB: invalid string offset %" PRIu64 " >= %" PRIu64),
 	     abfd, (uint64_t) x, (uint64_t) strsize);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       in->symbol.value = GET_SWORD (abfd,  ext->e_value);
@@ -1731,20 +1711,20 @@ NAME (aout, translate_symbol_table) (bfd
       in->symbol.udata.p = NULL;
 
       if (! translate_from_native_sym_flags (abfd, in))
-	return FALSE;
+	return false;
 
       if (dynamic)
 	in->symbol.flags |= BSF_DYNAMIC;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We read the symbols into a buffer, which is discarded when this
    function exits.  We read the strings into a buffer large enough to
    hold them all plus all the cached symbol entries.  */
 
-bfd_boolean
+bool
 NAME (aout, slurp_symbol_table) (bfd *abfd)
 {
   struct external_nlist *old_external_syms;
@@ -1753,21 +1733,21 @@ NAME (aout, slurp_symbol_table) (bfd *ab
 
   /* If there's no work to be done, don't do any.  */
   if (obj_aout_symbols (abfd) != NULL)
-    return TRUE;
+    return true;
 
   old_external_syms = obj_aout_external_syms (abfd);
 
   if (! aout_get_external_symbols (abfd))
-    return FALSE;
+    return false;
 
   cached_size = obj_aout_external_sym_count (abfd);
   if (cached_size == 0)
-    return TRUE;		/* Nothing to do.  */
+    return true;		/* Nothing to do.  */
 
   cached_size *= sizeof (aout_symbol_type);
   cached = (aout_symbol_type *) bfd_zmalloc (cached_size);
   if (cached == NULL)
-    return FALSE;
+    return false;
 
   /* Convert from external symbol information to internal.  */
   if (! (NAME (aout, translate_symbol_table)
@@ -1776,10 +1756,10 @@ NAME (aout, slurp_symbol_table) (bfd *ab
 	  obj_aout_external_sym_count (abfd),
 	  obj_aout_external_strings (abfd),
 	  obj_aout_external_string_size (abfd),
-	  FALSE)))
+	  false)))
     {
       free (cached);
-      return FALSE;
+      return false;
     }
 
   abfd->symcount = obj_aout_external_sym_count (abfd);
@@ -1793,15 +1773,11 @@ NAME (aout, slurp_symbol_table) (bfd *ab
   if (old_external_syms == NULL
       && obj_aout_external_syms (abfd) != NULL)
     {
-#ifdef USE_MMAP
-      bfd_free_window (&obj_aout_sym_window (abfd));
-#else
       free (obj_aout_external_syms (abfd));
-#endif
       obj_aout_external_syms (abfd) = NULL;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We use a hash table when writing out symbols so that we only write
@@ -1820,9 +1796,9 @@ static inline bfd_size_type
 add_to_stringtab (bfd *abfd,
 		  struct bfd_strtab_hash *tab,
 		  const char *str,
-		  bfd_boolean copy)
+		  bool copy)
 {
-  bfd_boolean hash;
+  bool hash;
   bfd_size_type str_index;
 
   /* An index of 0 always means the empty string.  */
@@ -1831,9 +1807,9 @@ add_to_stringtab (bfd *abfd,
 
   /* Don't hash if BFD_TRADITIONAL_FORMAT is set, because SunOS dbx
      doesn't understand a hashed string table.  */
-  hash = TRUE;
+  hash = true;
   if ((abfd->flags & BFD_TRADITIONAL_FORMAT) != 0)
-    hash = FALSE;
+    hash = false;
 
   str_index = _bfd_stringtab_add (tab, str, hash, copy);
 
@@ -1848,21 +1824,21 @@ add_to_stringtab (bfd *abfd,
 /* Write out a strtab.  ABFD is already at the right location in the
    file.  */
 
-static bfd_boolean
+static bool
 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);
-  if (bfd_bwrite ((void *) buffer, amt, abfd) != amt)
-    return FALSE;
+  if (bfd_write (buffer, amt, abfd) != amt)
+    return false;
 
   return _bfd_stringtab_emit (abfd, tab);
 }
 
-bfd_boolean
+bool
 NAME (aout, write_syms) (bfd *abfd)
 {
   unsigned int count ;
@@ -1871,16 +1847,16 @@ NAME (aout, write_syms) (bfd *abfd)
 
   strtab = _bfd_stringtab_init ();
   if (strtab == NULL)
-    return FALSE;
+    return false;
 
   for (count = 0; count < bfd_get_symcount (abfd); count++)
     {
       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);
+      indx = add_to_stringtab (abfd, strtab, g->name, false);
       if (indx == (bfd_size_type) -1)
 	goto error_return;
       PUT_WORD (abfd, indx, (bfd_byte *) nsp.e_strx);
@@ -1902,7 +1878,7 @@ NAME (aout, write_syms) (bfd *abfd)
 	goto error_return;
 
       amt = EXTERNAL_NLIST_SIZE;
-      if (bfd_bwrite ((void *) &nsp, amt, abfd) != amt)
+      if (bfd_write (&nsp, amt, abfd) != amt)
 	goto error_return;
 
       /* NB: `KEEPIT' currently overlays `udata.p', so set this only
@@ -1915,11 +1891,11 @@ NAME (aout, write_syms) (bfd *abfd)
 
   _bfd_stringtab_free (strtab);
 
-  return TRUE;
+  return true;
 
-error_return:
+ error_return:
   _bfd_stringtab_free (strtab);
-  return FALSE;
+  return false;
 }
 
 long
@@ -1953,7 +1929,7 @@ NAME (aout, swap_std_reloc_out) (bfd *ab
   int r_index;
   asymbol *sym = *(g->sym_ptr_ptr);
   int r_extern;
-  unsigned int r_length;
+  unsigned int r_length, r_size;
   int r_pcrel;
   int r_baserel, r_jmptable, r_relative;
   asection *output_section = sym->section->output_section;
@@ -1961,7 +1937,17 @@ 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.  */
+
+  r_size = bfd_get_reloc_size (g->howto);
+  r_length = bfd_log2 (r_size);
+  if (1u << r_length != r_size)
+    {
+      _bfd_error_handler (_("%pB: unsupported AOUT relocation size: %d"),
+			  abfd, r_size);
+      bfd_set_error (bfd_error_bad_value);
+      return;
+    }
+
   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;
@@ -2118,7 +2104,10 @@ NAME (aout, swap_ext_reloc_out) (bfd *ab
   if (r_extern)								\
     {									\
       /* Undefined symbol.  */						\
-      cache_ptr->sym_ptr_ptr = symbols + r_index;			\
+      if (symbols != NULL && r_index < bfd_get_symcount (abfd))		\
+	cache_ptr->sym_ptr_ptr = symbols + r_index;			\
+      else								\
+	cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;		\
       cache_ptr->addend = ad;						\
     }									\
    else									\
@@ -2129,23 +2118,23 @@ NAME (aout, swap_ext_reloc_out) (bfd *ab
 	{								\
 	case N_TEXT:							\
 	case N_TEXT | N_EXT:						\
-	  cache_ptr->sym_ptr_ptr = obj_textsec (abfd)->symbol_ptr_ptr;	\
+	  cache_ptr->sym_ptr_ptr = &obj_textsec (abfd)->symbol;		\
 	  cache_ptr->addend = ad - su->textsec->vma;			\
 	  break;							\
 	case N_DATA:							\
 	case N_DATA | N_EXT:						\
-	  cache_ptr->sym_ptr_ptr = obj_datasec (abfd)->symbol_ptr_ptr;	\
+	  cache_ptr->sym_ptr_ptr = &obj_datasec (abfd)->symbol;		\
 	  cache_ptr->addend = ad - su->datasec->vma;			\
 	  break;							\
 	case N_BSS:							\
 	case N_BSS | N_EXT:						\
-	  cache_ptr->sym_ptr_ptr = obj_bsssec (abfd)->symbol_ptr_ptr;	\
+	  cache_ptr->sym_ptr_ptr = &obj_bsssec (abfd)->symbol;		\
 	  cache_ptr->addend = ad - su->bsssec->vma;			\
 	  break;							\
 	default:							\
 	case N_ABS:							\
 	case N_ABS | N_EXT:						\
-	  cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;	\
+	  cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;	\
 	  cache_ptr->addend = ad;					\
 	  break;							\
 	}								\
@@ -2286,7 +2275,7 @@ NAME (aout, swap_std_reloc_in) (bfd *abf
 
 /* Read and swap the relocs for a section.  */
 
-bfd_boolean
+bool
 NAME (aout, slurp_reloc_table) (bfd *abfd, sec_ptr asect, asymbol **symbols)
 {
   bfd_size_type count;
@@ -2299,10 +2288,10 @@ NAME (aout, slurp_reloc_table) (bfd *abf
   bfd_size_type amt;
 
   if (asect->relocation)
-    return TRUE;
+    return true;
 
   if (asect->flags & SEC_CONSTRUCTOR)
-    return TRUE;
+    return true;
 
   if (asect == obj_datasec (abfd))
     reloc_size = exec_hdr (abfd)->a_drsize;
@@ -2313,38 +2302,26 @@ NAME (aout, slurp_reloc_table) (bfd *abf
   else
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      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.  */
+    return true;		/* Nothing to be done.  */
+
+  if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
+    return false;
+  relocs = _bfd_malloc_and_read (abfd, reloc_size, reloc_size);
+  if (relocs == NULL)
+    return false;
 
   amt = count * sizeof (arelent);
   reloc_cache = (arelent *) bfd_zmalloc (amt);
   if (reloc_cache == NULL)
-    return FALSE;
-
-  relocs = bfd_malloc (reloc_size);
-  if (relocs == NULL)
-    {
-      free (reloc_cache);
-      return FALSE;
-    }
-
-  if (bfd_bread (relocs, reloc_size, abfd) != reloc_size)
     {
       free (relocs);
-      free (reloc_cache);
-      return FALSE;
+      return false;
     }
 
   cache_ptr = reloc_cache;
@@ -2370,12 +2347,12 @@ NAME (aout, slurp_reloc_table) (bfd *abf
   asect->relocation = reloc_cache;
   asect->reloc_count = cache_ptr - reloc_cache;
 
-  return TRUE;
+  return true;
 }
 
 /* Write out a relocation section into an object file.  */
 
-bfd_boolean
+bool
 NAME (aout, squirt_out_relocs) (bfd *abfd, asection *section)
 {
   arelent **generic;
@@ -2386,13 +2363,13 @@ NAME (aout, squirt_out_relocs) (bfd *abf
   bfd_size_type natsize;
 
   if (count == 0 || section->orelocation == NULL)
-    return TRUE;
+    return true;
 
   each_size = obj_reloc_entry_size (abfd);
   natsize = (bfd_size_type) each_size * count;
   native = (unsigned char *) bfd_zalloc (abfd, natsize);
   if (!native)
-    return FALSE;
+    return false;
 
   generic = section->orelocation;
 
@@ -2409,9 +2386,9 @@ 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);
-	      return FALSE;
+	      _bfd_error_handler (_("%pB: attempt to write out "
+				    "unknown reloc type"), abfd);
+	      return false;
 	    }
 	  MY_swap_ext_reloc_out (abfd, *generic,
 				 (struct reloc_ext_external *) natptr);
@@ -2427,23 +2404,23 @@ 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);
-	      return FALSE;
+	      _bfd_error_handler (_("%pB: attempt to write out "
+				    "unknown reloc type"), abfd);
+	      return false;
 	    }
 	  MY_swap_std_reloc_out (abfd, *generic,
 				 (struct reloc_std_external *) natptr);
 	}
     }
 
-  if (bfd_bwrite ((void *) native, natsize, abfd) != natsize)
+  if (bfd_write (native, natsize, abfd) != natsize)
     {
       bfd_release (abfd, native);
-      return FALSE;
+      return false;
     }
   bfd_release (abfd, native);
 
-  return TRUE;
+  return true;
 }
 
 /* This is stupid.  This function should be a boolean predicate.  */
@@ -2492,13 +2469,7 @@ NAME (aout, canonicalize_reloc) (bfd *ab
 long
 NAME (aout, get_reloc_upper_bound) (bfd *abfd, sec_ptr asect)
 {
-  bfd_size_type count;
-
-  if (bfd_get_format (abfd) != bfd_object)
-    {
-      bfd_set_error (bfd_error_invalid_operation);
-      return -1;
-    }
+  size_t count, raw;
 
   if (asect->flags & SEC_CONSTRUCTOR)
     count = asect->reloc_count;
@@ -2514,11 +2485,21 @@ NAME (aout, get_reloc_upper_bound) (bfd
       return -1;
     }
 
-  if (count >= LONG_MAX / sizeof (arelent *))
+  if (count >= LONG_MAX / sizeof (arelent *)
+      || _bfd_mul_overflow (count, obj_reloc_entry_size (abfd), &raw))
     {
       bfd_set_error (bfd_error_file_too_big);
       return -1;
     }
+  if (!bfd_write_p (abfd))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && raw > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
+    }
   return (count + 1) * sizeof (arelent *);
 }
 
@@ -2613,7 +2594,7 @@ NAME (aout, print_symbol) (bfd *abfd,
 
 long
 NAME (aout, read_minisymbols) (bfd *abfd,
-			       bfd_boolean dynamic,
+			       bool dynamic,
 			       void * *minisymsp,
 			       unsigned int *sizep)
 {
@@ -2646,7 +2627,7 @@ NAME (aout, read_minisymbols) (bfd *abfd
 
 asymbol *
 NAME (aout, minisymbol_to_symbol) (bfd *abfd,
-				   bfd_boolean dynamic,
+				   bool dynamic,
 				   const void * minisym,
 				   asymbol *sym)
 {
@@ -2664,7 +2645,7 @@ NAME (aout, minisymbol_to_symbol) (bfd *
 	  (bfd_size_type) 1,
 	  obj_aout_external_strings (abfd),
 	  obj_aout_external_string_size (abfd),
-	  FALSE)))
+	  false)))
     return NULL;
 
   return sym;
@@ -2674,7 +2655,7 @@ NAME (aout, minisymbol_to_symbol) (bfd *
    and return the name of the source file and the line nearest to the
    wanted location.  */
 
-bfd_boolean
+bool
 NAME (aout, find_nearest_line) (bfd *abfd,
 				asymbol **symbols,
 				asection *section,
@@ -2697,7 +2678,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 +2808,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;
@@ -2837,7 +2817,7 @@ NAME (aout, find_nearest_line) (bfd *abf
       buf = (char *) bfd_malloc (filelen + funclen + 3);
       adata (abfd).line_buf = buf;
       if (buf == NULL)
-	return FALSE;
+	return false;
     }
 
   if (main_file_name != NULL)
@@ -2869,7 +2849,7 @@ NAME (aout, find_nearest_line) (bfd *abf
 	{
 	  /* PR binutils/20892: In a corrupt input file func can be empty.  */
 	  * functionname_ptr = NULL;
-	  return TRUE;
+	  return true;
 	}
       /* The caller expects a symbol name.  We actually have a
 	 function name, without the leading underscore.  Put the
@@ -2888,7 +2868,7 @@ NAME (aout, find_nearest_line) (bfd *abf
       *functionname_ptr = buf;
     }
 
-  return TRUE;
+  return true;
 }
 
 int
@@ -2898,34 +2878,26 @@ NAME (aout, sizeof_headers) (bfd *abfd,
   return adata (abfd).exec_bytes_size;
 }
 
-/* Free all information we have cached for this BFD.  We can always
-   read it again later if we need it.  */
+/* Throw away most malloc'd and alloc'd information for this BFD.  */
 
-bfd_boolean
+bool
 NAME (aout, bfd_free_cached_info) (bfd *abfd)
 {
-  asection *o;
-
-  if (bfd_get_format (abfd) != bfd_object
-      || abfd->tdata.aout_data == NULL)
-    return TRUE;
-
-#define BFCI_FREE(x) if (x != NULL) { free (x); x = NULL; }
-  BFCI_FREE (obj_aout_symbols (abfd));
-#ifdef USE_MMAP
-  obj_aout_external_syms (abfd) = 0;
-  bfd_free_window (&obj_aout_sym_window (abfd));
-  bfd_free_window (&obj_aout_string_window (abfd));
-  obj_aout_external_strings (abfd) = 0;
-#else
-  BFCI_FREE (obj_aout_external_syms (abfd));
-  BFCI_FREE (obj_aout_external_strings (abfd));
-#endif
-  for (o = abfd->sections; o != NULL; o = o->next)
-    BFCI_FREE (o->relocation);
+  if ((bfd_get_format (abfd) == bfd_object
+       || bfd_get_format (abfd) == bfd_core)
+      && abfd->tdata.aout_data != NULL)
+    {
+#define BFCI_FREE(x) do { free (x); x = NULL; } while (0)
+      BFCI_FREE (adata (abfd).line_buf);
+      BFCI_FREE (obj_aout_symbols (abfd));
+      BFCI_FREE (obj_aout_external_syms (abfd));
+      BFCI_FREE (obj_aout_external_strings (abfd));
+      for (asection *o = abfd->sections; o != NULL; o = o->next)
+	BFCI_FREE (o->relocation);
 #undef BFCI_FREE
+    }
 
-  return TRUE;
+  return _bfd_generic_bfd_free_cached_info (abfd);
 }
 
 /* a.out link code.  */
@@ -2954,7 +2926,7 @@ NAME (aout, link_hash_newfunc) (struct b
   if (ret)
     {
       /* Set local fields.  */
-      ret->written = FALSE;
+      ret->written = false;
       ret->indx = -1;
     }
 
@@ -2963,7 +2935,7 @@ NAME (aout, link_hash_newfunc) (struct b
 
 /* Initialize an a.out link hash table.  */
 
-bfd_boolean
+bool
 NAME (aout, link_hash_table_init) (struct aout_link_hash_table *table,
 				   bfd *abfd,
 				   struct bfd_hash_entry *(*newfunc)
@@ -2980,7 +2952,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)
@@ -2998,17 +2970,13 @@ NAME (aout, link_hash_table_create) (bfd
 
 /* Add all symbols from an object file to the hash table.  */
 
-static bfd_boolean
+static bool
 aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
-  bfd_boolean (*add_one_symbol)
-    (struct bfd_link_info *, bfd *, const char *, flagword, asection *,
-	     bfd_vma, const char *, bfd_boolean, bfd_boolean,
-	     struct bfd_link_hash_entry **);
   struct external_nlist *syms;
   bfd_size_type sym_count;
   char *strings;
-  bfd_boolean copy;
+  bool copy;
   struct aout_link_hash_entry **sym_hash;
   struct external_nlist *p;
   struct external_nlist *pend;
@@ -3018,19 +2986,19 @@ aout_link_add_symbols (bfd *abfd, struct
   sym_count = obj_aout_external_sym_count (abfd);
   strings = obj_aout_external_strings (abfd);
   if (info->keep_memory)
-    copy = FALSE;
+    copy = false;
   else
-    copy = TRUE;
+    copy = true;
 
   if (aout_backend_info (abfd)->add_dynamic_symbols != NULL)
     {
       if (! ((*aout_backend_info (abfd)->add_dynamic_symbols)
 	     (abfd, info, &syms, &sym_count, &strings)))
-	return FALSE;
+	return false;
     }
 
   if (sym_count == 0)
-    return TRUE;		/* Nothing to do.  */
+    return true;		/* Nothing to do.  */
 
   /* We keep a list of the linker hash table entries that correspond
      to particular symbols.  We could just look them up in the hash
@@ -3039,13 +3007,9 @@ aout_link_add_symbols (bfd *abfd, struct
   amt = sym_count * sizeof (struct aout_link_hash_entry *);
   sym_hash = (struct aout_link_hash_entry **) bfd_alloc (abfd, amt);
   if (sym_hash == NULL)
-    return FALSE;
+    return false;
   obj_aout_sym_hashes (abfd) = sym_hash;
 
-  add_one_symbol = aout_backend_info (abfd)->add_one_symbol;
-  if (add_one_symbol == NULL)
-    add_one_symbol = _bfd_generic_link_add_one_symbol;
-
   p = syms;
   pend = p + sym_count;
   for (; p < pend; p++, sym_hash++)
@@ -3067,7 +3031,7 @@ aout_link_add_symbols (bfd *abfd, struct
 
       /* PR 19629: Corrupt binaries can contain illegal string offsets.  */
       if (GET_WORD (abfd, p->e_strx) >= obj_aout_external_string_size (abfd))
-	return FALSE;
+	return false;
       name = strings + GET_WORD (abfd, p->e_strx);
       value = GET_WORD (abfd, p->e_value);
       flags = BSF_GLOBAL;
@@ -3126,11 +3090,11 @@ aout_link_add_symbols (bfd *abfd, struct
 	     which this one really is.  */
 	  /* See PR 20925 for a reproducer.  */
 	  if (p + 1 >= pend)
-	    return FALSE;
+	    return false;
 	  ++p;
 	  /* PR 19629: Corrupt binaries can contain illegal string offsets.  */
 	  if (GET_WORD (abfd, p->e_strx) >= obj_aout_external_string_size (abfd))
-	    return FALSE;
+	    return false;
 	  string = strings + GET_WORD (abfd, p->e_strx);
 	  section = bfd_ind_section_ptr;
 	  flags |= BSF_INDIRECT;
@@ -3161,12 +3125,12 @@ aout_link_add_symbols (bfd *abfd, struct
 	  /* A warning symbol.  The next symbol is the one to warn
 	     about.  If there is no next symbol, just look away.  */
 	  if (p + 1 >= pend)
-	    return TRUE;
+	    return true;
 	  ++p;
 	  string = name;
 	  /* PR 19629: Corrupt binaries can contain illegal string offsets.  */
 	  if (GET_WORD (abfd, p->e_strx) >= obj_aout_external_string_size (abfd))
-	    return FALSE;
+	    return false;
 	  name = strings + GET_WORD (abfd, p->e_strx);
 	  section = bfd_und_section_ptr;
 	  flags |= BSF_WARNING;
@@ -3196,10 +3160,10 @@ aout_link_add_symbols (bfd *abfd, struct
 	  break;
 	}
 
-      if (! ((*add_one_symbol)
-	     (info, abfd, name, flags, section, value, string, copy, FALSE,
+      if (! (_bfd_generic_link_add_one_symbol
+	     (info, abfd, name, flags, section, value, string, copy, false,
 	      (struct bfd_link_hash_entry **) sym_hash)))
-	return FALSE;
+	return false;
 
       /* Restrict the maximum alignment of a common symbol based on
 	 the architecture, since a.out has no way to represent
@@ -3225,50 +3189,42 @@ aout_link_add_symbols (bfd *abfd, struct
 	++sym_hash;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Free up the internal symbols read from an a.out file.  */
 
-static bfd_boolean
+static bool
 aout_link_free_symbols (bfd *abfd)
 {
   if (obj_aout_external_syms (abfd) != NULL)
     {
-#ifdef USE_MMAP
-      bfd_free_window (&obj_aout_sym_window (abfd));
-#else
       free ((void *) obj_aout_external_syms (abfd));
-#endif
       obj_aout_external_syms (abfd) = NULL;
     }
   if (obj_aout_external_strings (abfd) != NULL)
     {
-#ifdef USE_MMAP
-      bfd_free_window (&obj_aout_string_window (abfd));
-#else
       free ((void *) obj_aout_external_strings (abfd));
-#endif
       obj_aout_external_strings (abfd) = NULL;
     }
-  return TRUE;
+  return true;
 }
 
 /* Add symbols from an a.out object file.  */
 
-static bfd_boolean
+static bool
 aout_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   if (! aout_get_external_symbols (abfd))
-    return FALSE;
+    return false;
   if (! aout_link_add_symbols (abfd, info))
-    return FALSE;
+    return false;
   if (! info->keep_memory)
     {
       if (! aout_link_free_symbols (abfd))
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Look through the internal symbols to see if this object file should
@@ -3278,17 +3234,17 @@ aout_link_add_object_symbols (bfd *abfd,
    known symbol but we do not include the object file in the link
    (unless there is some other reason to include it).  */
 
-static bfd_boolean
+static bool
 aout_link_check_ar_symbols (bfd *abfd,
 			    struct bfd_link_info *info,
-			    bfd_boolean *pneeded,
+			    bool *pneeded,
 			    bfd **subsbfd)
 {
   struct external_nlist *p;
   struct external_nlist *pend;
   char *strings;
 
-  *pneeded = FALSE;
+  *pneeded = false;
 
   /* Look through all the symbols.  */
   p = obj_aout_external_syms (abfd);
@@ -3318,7 +3274,7 @@ aout_link_check_ar_symbols (bfd *abfd,
 	}
 
       name = strings + GET_WORD (abfd, p->e_strx);
-      h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->hash, name, false, false, true);
 
       /* We are only interested in symbols that are currently
 	 undefined or common.  */
@@ -3379,9 +3335,9 @@ aout_link_check_ar_symbols (bfd *abfd,
 
 	  if (!(*info->callbacks
 		->add_archive_element) (info, abfd, name, subsbfd))
-	    return FALSE;
-	  *pneeded = TRUE;
-	  return TRUE;
+	    return false;
+	  *pneeded = true;
+	  return true;
 	}
 
       if (type == (N_UNDF | N_EXT))
@@ -3407,9 +3363,9 @@ aout_link_check_ar_symbols (bfd *abfd,
 			 option in the linker.  */
 		      if (!(*info->callbacks
 			    ->add_archive_element) (info, abfd, name, subsbfd))
-			return FALSE;
-		      *pneeded = TRUE;
-		      return TRUE;
+			return false;
+		      *pneeded = true;
+		      return true;
 		    }
 		  /* Turn the current link symbol into a common
 		     symbol.  It is already on the undefs list.  */
@@ -3418,7 +3374,7 @@ aout_link_check_ar_symbols (bfd *abfd,
 		    bfd_hash_allocate (&info->hash->table,
 				       sizeof (struct bfd_link_hash_common_entry));
 		  if (h->u.c.p == NULL)
-		    return FALSE;
+		    return false;
 
 		  h->u.c.size = value;
 
@@ -3456,37 +3412,37 @@ aout_link_check_ar_symbols (bfd *abfd,
 	    {
 	      if (!(*info->callbacks
 		    ->add_archive_element) (info, abfd, name, subsbfd))
-		return FALSE;
-	      *pneeded = TRUE;
-	      return TRUE;
+		return false;
+	      *pneeded = true;
+	      return true;
 	    }
 	}
     }
 
   /* We do not need this object file.  */
-  return TRUE;
+  return true;
 }
 /* Check a single archive element to see if we need to include it in
    the link.  *PNEEDED is set according to whether this element is
    needed in the link or not.  This is called from
    _bfd_generic_link_add_archive_symbols.  */
 
-static bfd_boolean
+static bool
 aout_link_check_archive_element (bfd *abfd,
 				 struct bfd_link_info *info,
 				 struct bfd_link_hash_entry *h ATTRIBUTE_UNUSED,
 				 const char *name ATTRIBUTE_UNUSED,
-				 bfd_boolean *pneeded)
+				 bool *pneeded)
 {
   bfd *oldbfd;
-  bfd_boolean needed;
+  bool needed;
 
   if (!aout_get_external_symbols (abfd))
-    return FALSE;
+    return false;
 
   oldbfd = abfd;
   if (!aout_link_check_ar_symbols (abfd, info, pneeded, &abfd))
-    return FALSE;
+    return false;
 
   needed = *pneeded;
   if (needed)
@@ -3497,27 +3453,27 @@ aout_link_check_archive_element (bfd *ab
 	{
 	  if (!info->keep_memory
 	      && !aout_link_free_symbols (oldbfd))
-	    return FALSE;
+	    return false;
 	  if (!aout_get_external_symbols (abfd))
-	    return FALSE;
+	    return false;
 	}
       if (!aout_link_add_symbols (abfd, info))
-	return FALSE;
+	return false;
     }
 
   if (!info->keep_memory || !needed)
     {
       if (!aout_link_free_symbols (abfd))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Given an a.out BFD, add symbols to the global hash table as
    appropriate.  */
 
-bfd_boolean
+bool
 NAME (aout, link_add_symbols) (bfd *abfd, struct bfd_link_info *info)
 {
   switch (bfd_get_format (abfd))
@@ -3529,7 +3485,7 @@ NAME (aout, link_add_symbols) (bfd *abfd
 	(abfd, info, aout_link_check_archive_element);
     default:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 }
 
@@ -3624,7 +3580,7 @@ aout_link_includes_newfunc (struct bfd_h
 /* Write out a symbol that was not associated with an a.out input
    object.  */
 
-static bfd_boolean
+static bool
 aout_link_write_other_symbol (struct bfd_hash_entry *bh, void *data)
 {
   struct aout_link_hash_entry *h = (struct aout_link_hash_entry *) bh;
@@ -3634,13 +3590,13 @@ 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)
     {
       h = (struct aout_link_hash_entry *) h->root.u.i.link;
       if (h->root.type == bfd_link_hash_new)
-	return TRUE;
+	return true;
     }
 
   output_bfd = flaginfo->output_bfd;
@@ -3656,17 +3612,17 @@ aout_link_write_other_symbol (struct bfd
     }
 
   if (h->written)
-    return TRUE;
+    return true;
 
-  h->written = TRUE;
+  h->written = true;
 
   /* An indx of -2 means the symbol must be written.  */
   if (h->indx != -2
       && (flaginfo->info->strip == strip_all
 	  || (flaginfo->info->strip == strip_some
 	      && bfd_hash_lookup (flaginfo->info->keep_hash, h->root.root.string,
-				  FALSE, FALSE) == NULL)))
-    return TRUE;
+				  false, false) == NULL)))
+    return true;
 
   switch (h->root.type)
     {
@@ -3674,11 +3630,11 @@ aout_link_write_other_symbol (struct bfd
     case bfd_link_hash_warning:
       abort ();
       /* Avoid variable not initialized warnings.  */
-      return TRUE;
+      return true;
     case bfd_link_hash_new:
       /* This can happen for set symbols when sets are not being
 	 built.  */
-      return TRUE;
+      return true;
     case bfd_link_hash_undefined:
       type = N_UNDF | N_EXT;
       val = 0;
@@ -3716,14 +3672,14 @@ aout_link_write_other_symbol (struct bfd
     case bfd_link_hash_indirect:
       /* We ignore these symbols, since the indirected symbol is
 	 already in the hash table.  */
-      return TRUE;
+      return true;
     }
 
   H_PUT_8 (output_bfd, type, outsym.e_type);
   H_PUT_8 (output_bfd, 0, outsym.e_other);
   H_PUT_16 (output_bfd, 0, outsym.e_desc);
   indx = add_to_stringtab (output_bfd, flaginfo->strtab, h->root.root.string,
-			   FALSE);
+			   false);
   if (indx == - (bfd_size_type) 1)
     /* FIXME: No way to handle errors.  */
     abort ();
@@ -3733,7 +3689,7 @@ aout_link_write_other_symbol (struct bfd
 
   amt = EXTERNAL_NLIST_SIZE;
   if (bfd_seek (output_bfd, flaginfo->symoff, SEEK_SET) != 0
-      || bfd_bwrite ((void *) &outsym, amt, output_bfd) != amt)
+      || bfd_write (&outsym, amt, output_bfd) != amt)
     /* FIXME: No way to handle errors.  */
     abort ();
 
@@ -3741,12 +3697,12 @@ aout_link_write_other_symbol (struct bfd
   h->indx = obj_aout_external_sym_count (output_bfd);
   ++obj_aout_external_sym_count (output_bfd);
 
-  return TRUE;
+  return true;
 }
 
 /* Handle a link order which is supposed to generate a reloc.  */
 
-static bfd_boolean
+static bool
 aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
 			    asection *o,
 			    struct bfd_link_order *p)
@@ -3759,7 +3715,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;
 
@@ -3782,7 +3738,7 @@ aout_link_reloc_link_order (struct aout_
       r_extern = 1;
       h = ((struct aout_link_hash_entry *)
 	   bfd_wrapped_link_hash_lookup (flaginfo->output_bfd, flaginfo->info,
-					 pr->u.name, FALSE, FALSE, TRUE));
+					 pr->u.name, false, false, true));
       if (h != NULL
 	  && h->indx >= 0)
 	r_index = h->indx;
@@ -3793,9 +3749,9 @@ aout_link_reloc_link_order (struct aout_
 	     here.  I don't think that will ever matter for a global
 	     symbol.  */
 	  h->indx = -2;
-	  h->written = FALSE;
+	  h->written = false;
 	  if (!aout_link_write_other_symbol (&h->root.root, flaginfo))
-	    return FALSE;
+	    return false;
 	  r_index = h->indx;
 	}
       else
@@ -3810,7 +3766,7 @@ aout_link_reloc_link_order (struct aout_
   if (howto == 0)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   if (o == obj_textsec (flaginfo->output_bfd))
@@ -3831,13 +3787,13 @@ 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;
+	r_length = bfd_log2 (bfd_get_reloc_size (howto));
 
 	PUT_WORD (flaginfo->output_bfd, p->offset, srel.r_address);
 	if (bfd_header_big_endian (flaginfo->output_bfd))
@@ -3880,12 +3836,12 @@ aout_link_reloc_link_order (struct aout_
 	  bfd_size_type size;
 	  bfd_reloc_status_type r;
 	  bfd_byte *buf;
-	  bfd_boolean ok;
+	  bool ok;
 
 	  size = bfd_get_reloc_size (howto);
 	  buf = (bfd_byte *) bfd_zmalloc (size);
 	  if (buf == NULL && size != 0)
-	    return FALSE;
+	    return false;
 	  r = MY_relocate_contents (howto, flaginfo->output_bfd,
 				    (bfd_vma) pr->addend, buf);
 	  switch (r)
@@ -3908,7 +3864,7 @@ aout_link_reloc_link_order (struct aout_
 					 (file_ptr) p->offset, size);
 	  free (buf);
 	  if (! ok)
-	    return FALSE;
+	    return false;
 	}
     }
   else
@@ -3946,8 +3902,8 @@ aout_link_reloc_link_order (struct aout_
 
   amt = obj_reloc_entry_size (flaginfo->output_bfd);
   if (bfd_seek (flaginfo->output_bfd, *reloff_ptr, SEEK_SET) != 0
-      || bfd_bwrite (rel_ptr, amt, flaginfo->output_bfd) != amt)
-    return FALSE;
+      || bfd_write (rel_ptr, amt, flaginfo->output_bfd) != amt)
+    return false;
 
   *reloff_ptr += obj_reloc_entry_size (flaginfo->output_bfd);
 
@@ -3958,12 +3914,12 @@ aout_link_reloc_link_order (struct aout_
 		  || (*reloff_ptr
 		      <= obj_datasec (flaginfo->output_bfd)->rel_filepos)));
 
-  return TRUE;
+  return true;
 }
 
 /* Get the section corresponding to a reloc index.  */
 
-static INLINE asection *
+static inline asection *
 aout_reloc_index_to_section (bfd *abfd, int indx)
 {
   switch (indx & N_TYPE)
@@ -3980,7 +3936,7 @@ aout_reloc_index_to_section (bfd *abfd,
 
 /* Relocate an a.out section using standard a.out relocs.  */
 
-static bfd_boolean
+static bool
 aout_link_input_section_std (struct aout_final_link_info *flaginfo,
 			     bfd *input_bfd,
 			     asection *input_section,
@@ -3988,12 +3944,11 @@ aout_link_input_section_std (struct aout
 			     bfd_size_type rel_size,
 			     bfd_byte *contents)
 {
-  bfd_boolean (*check_dynamic_reloc)
+  bool (*check_dynamic_reloc)
     (struct bfd_link_info *, bfd *, asection *,
-	     struct aout_link_hash_entry *, void *, bfd_byte *, bfd_boolean *,
-	     bfd_vma *);
+     struct aout_link_hash_entry *, void *, bfd_byte *, bool *, bfd_vma *);
   bfd *output_bfd;
-  bfd_boolean relocatable;
+  bool relocatable;
   struct external_nlist *syms;
   char *strings;
   struct aout_link_hash_entry **sym_hashes;
@@ -4021,7 +3976,7 @@ aout_link_input_section_std (struct aout
   for (; rel < rel_end; rel++)
     {
       bfd_vma r_addr;
-      int r_index;
+      unsigned int r_index;
       int r_extern;
       int r_pcrel;
       int r_baserel = 0;
@@ -4085,7 +4040,7 @@ aout_link_input_section_std (struct aout
 	  _bfd_error_handler (_("%pB: unsupported relocation type"),
 			      input_bfd);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       if (relocatable)
@@ -4133,7 +4088,7 @@ aout_link_input_section_std (struct aout
 		     map.  */
 		  r_index = symbol_map[r_index];
 
-		  if (r_index == -1)
+		  if (r_index == -1u)
 		    {
 		      if (h != NULL)
 			{
@@ -4145,10 +4100,10 @@ aout_link_input_section_std (struct aout
 			  if (h->indx < 0)
 			    {
 			      h->indx = -2;
-			      h->written = FALSE;
+			      h->written = false;
 			      if (!aout_link_write_other_symbol (&h->root.root,
 								 flaginfo))
-				return FALSE;
+				return false;
 			    }
 			  r_index = h->indx;
 			}
@@ -4220,11 +4175,11 @@ aout_link_input_section_std (struct aout
 	}
       else
 	{
-	  bfd_boolean hundef;
+	  bool hundef;
 
 	  /* We are generating an executable, and must do a full
 	     relocation.  */
-	  hundef = FALSE;
+	  hundef = false;
 
 	  if (r_extern)
 	    {
@@ -4243,7 +4198,7 @@ aout_link_input_section_std (struct aout
 		relocation = 0;
 	      else
 		{
-		  hundef = TRUE;
+		  hundef = true;
 		  relocation = 0;
 		}
 	    }
@@ -4261,12 +4216,12 @@ aout_link_input_section_std (struct aout
 
 	  if (check_dynamic_reloc != NULL)
 	    {
-	      bfd_boolean skip;
+	      bool skip;
 
 	      if (! ((*check_dynamic_reloc)
 		     (flaginfo->info, input_bfd, input_section, h,
 		      (void *) rel, contents, &skip, &relocation)))
-		return FALSE;
+		return false;
 	      if (skip)
 		continue;
 	    }
@@ -4283,7 +4238,7 @@ aout_link_input_section_std (struct aout
 	      else
 		name = strings + GET_WORD (input_bfd, syms[r_index].e_strx);
 	      (*flaginfo->info->callbacks->undefined_symbol)
-		(flaginfo->info, name, input_bfd, input_section, r_addr, TRUE);
+		(flaginfo->info, name, input_bfd, input_section, r_addr, true);
 	    }
 
 	  r = MY_final_link_relocate (howto,
@@ -4324,12 +4279,12 @@ aout_link_input_section_std (struct aout
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relocate an a.out section using extended a.out relocs.  */
 
-static bfd_boolean
+static bool
 aout_link_input_section_ext (struct aout_final_link_info *flaginfo,
 			     bfd *input_bfd,
 			     asection *input_section,
@@ -4337,12 +4292,11 @@ aout_link_input_section_ext (struct aout
 			     bfd_size_type rel_size,
 			     bfd_byte *contents)
 {
-  bfd_boolean (*check_dynamic_reloc)
+  bool (*check_dynamic_reloc)
     (struct bfd_link_info *, bfd *, asection *,
-	     struct aout_link_hash_entry *, void *, bfd_byte *, bfd_boolean *,
-	     bfd_vma *);
+     struct aout_link_hash_entry *, void *, bfd_byte *, bool *, bfd_vma *);
   bfd *output_bfd;
-  bfd_boolean relocatable;
+  bool relocatable;
   struct external_nlist *syms;
   char *strings;
   struct aout_link_hash_entry **sym_hashes;
@@ -4370,7 +4324,7 @@ aout_link_input_section_ext (struct aout
   for (; rel < rel_end; rel++)
     {
       bfd_vma r_addr;
-      int r_index;
+      unsigned int r_index;
       int r_extern;
       unsigned int r_type;
       bfd_vma r_addend;
@@ -4406,7 +4360,7 @@ aout_link_input_section_ext (struct aout
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      input_bfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       if (relocatable)
@@ -4470,7 +4424,7 @@ aout_link_input_section_ext (struct aout
 		     map.  */
 		  r_index = symbol_map[r_index];
 
-		  if (r_index == -1)
+		  if (r_index == -1u)
 		    {
 		      if (h != NULL)
 			{
@@ -4482,10 +4436,10 @@ aout_link_input_section_ext (struct aout
 			  if (h->indx < 0)
 			    {
 			      h->indx = -2;
-			      h->written = FALSE;
+			      h->written = false;
 			      if (!aout_link_write_other_symbol (&h->root.root,
 								 flaginfo))
-				return FALSE;
+				return false;
 			    }
 			  r_index = h->indx;
 			}
@@ -4562,12 +4516,12 @@ aout_link_input_section_ext (struct aout
 	}
       else
 	{
-	  bfd_boolean hundef;
+	  bool hundef;
 	  bfd_reloc_status_type r;
 
 	  /* We are generating an executable, and must do a full
 	     relocation.  */
-	  hundef = FALSE;
+	  hundef = false;
 
 	  if (r_extern)
 	    {
@@ -4586,7 +4540,7 @@ aout_link_input_section_ext (struct aout
 		relocation = 0;
 	      else
 		{
-		  hundef = TRUE;
+		  hundef = true;
 		  relocation = 0;
 		}
 	    }
@@ -4659,12 +4613,12 @@ aout_link_input_section_ext (struct aout
 
 	  if (check_dynamic_reloc != NULL)
 	    {
-	      bfd_boolean skip;
+	      bool skip;
 
 	      if (! ((*check_dynamic_reloc)
 		     (flaginfo->info, input_bfd, input_section, h,
 		      (void *) rel, contents, &skip, &relocation)))
-		return FALSE;
+		return false;
 	      if (skip)
 		continue;
 	    }
@@ -4685,7 +4639,7 @@ aout_link_input_section_ext (struct aout
 	      else
 		name = strings + GET_WORD (input_bfd, syms[r_index].e_strx);
 	      (*flaginfo->info->callbacks->undefined_symbol)
-		(flaginfo->info, name, input_bfd, input_section, r_addr, TRUE);
+		(flaginfo->info, name, input_bfd, input_section, r_addr, true);
 	    }
 
 	  if (r_type != (unsigned int) RELOC_SPARC_REV32)
@@ -4740,12 +4694,12 @@ aout_link_input_section_ext (struct aout
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Link an a.out section into the output file.  */
 
-static bfd_boolean
+static bool
 aout_link_input_section (struct aout_final_link_info *flaginfo,
 			 bfd *input_bfd,
 			 asection *input_section,
@@ -4760,21 +4714,14 @@ aout_link_input_section (struct aout_fin
   if (! bfd_get_section_contents (input_bfd, input_section,
 				  (void *) flaginfo->contents,
 				  (file_ptr) 0, input_size))
-    return FALSE;
+    return false;
 
-  /* Read in the relocs if we haven't already done it.  */
-  if (aout_section_data (input_section) != NULL
-      && aout_section_data (input_section)->relocs != NULL)
-    relocs = aout_section_data (input_section)->relocs;
-  else
+  relocs = flaginfo->relocs;
+  if (rel_size > 0)
     {
-      relocs = flaginfo->relocs;
-      if (rel_size > 0)
-	{
-	  if (bfd_seek (input_bfd, input_section->rel_filepos, SEEK_SET) != 0
-	      || bfd_bread (relocs, rel_size, input_bfd) != rel_size)
-	    return FALSE;
-	}
+      if (bfd_seek (input_bfd, input_section->rel_filepos, SEEK_SET) != 0
+	  || bfd_read (relocs, rel_size, input_bfd) != rel_size)
+	return false;
     }
 
   /* Relocate the section contents.  */
@@ -4783,14 +4730,14 @@ aout_link_input_section (struct aout_fin
       if (! aout_link_input_section_std (flaginfo, input_bfd, input_section,
 					 (struct reloc_std_external *) relocs,
 					 rel_size, flaginfo->contents))
-	return FALSE;
+	return false;
     }
   else
     {
       if (! aout_link_input_section_ext (flaginfo, input_bfd, input_section,
 					 (struct reloc_ext_external *) relocs,
 					 rel_size, flaginfo->contents))
-	return FALSE;
+	return false;
     }
 
   /* Write out the section contents.  */
@@ -4799,16 +4746,16 @@ aout_link_input_section (struct aout_fin
 				  (void *) flaginfo->contents,
 				  (file_ptr) input_section->output_offset,
 				  input_size))
-    return FALSE;
+    return false;
 
   /* If we are producing relocatable output, the relocs were
      modified, and we now write them out.  */
   if (bfd_link_relocatable (flaginfo->info) && rel_size > 0)
     {
       if (bfd_seek (flaginfo->output_bfd, *reloff_ptr, SEEK_SET) != 0)
-	return FALSE;
-      if (bfd_bwrite (relocs, rel_size, flaginfo->output_bfd) != rel_size)
-	return FALSE;
+	return false;
+      if (bfd_write (relocs, rel_size, flaginfo->output_bfd) != rel_size)
+	return false;
       *reloff_ptr += rel_size;
 
       /* Assert that the relocs have not run into the symbols, and
@@ -4820,13 +4767,13 @@ aout_link_input_section (struct aout_fin
 			  <= obj_datasec (flaginfo->output_bfd)->rel_filepos)));
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust and write out the symbols for an a.out file.  Set the new
    symbol indices into a symbol_map.  */
 
-static bfd_boolean
+static bool
 aout_link_write_symbols (struct aout_final_link_info *flaginfo, bfd *input_bfd)
 {
   bfd *output_bfd;
@@ -4840,8 +4787,8 @@ aout_link_write_symbols (struct aout_fin
   struct external_nlist *sym_end;
   struct aout_link_hash_entry **sym_hash;
   int *symbol_map;
-  bfd_boolean pass;
-  bfd_boolean skip_next;
+  bool pass;
+  bool skip_next;
 
   output_bfd = flaginfo->output_bfd;
   sym_count = obj_aout_external_sym_count (input_bfd);
@@ -4854,17 +4801,18 @@ 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,
-			      FALSE, FALSE) != NULL)
+	  || 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_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;
+	return false;
       PUT_WORD (output_bfd, strtab_index, outsym->e_strx);
       PUT_WORD (output_bfd,
 		(bfd_section_vma (obj_textsec (input_bfd)->output_section)
@@ -4874,8 +4822,8 @@ aout_link_write_symbols (struct aout_fin
       ++outsym;
     }
 
-  pass = FALSE;
-  skip_next = FALSE;
+  pass = false;
+  skip_next = false;
   sym = obj_aout_external_syms (input_bfd);
   sym_end = sym + sym_count;
   sym_hash = obj_aout_sym_hashes (input_bfd);
@@ -4886,10 +4834,10 @@ aout_link_write_symbols (struct aout_fin
       const char *name;
       int type;
       struct aout_link_hash_entry *h;
-      bfd_boolean skip;
+      bool skip;
       asection *symsec;
       bfd_vma val = 0;
-      bfd_boolean copy;
+      bool copy;
 
       /* We set *symbol_map to 0 above for all symbols.  If it has
 	 already been set to -1 for this symbol, it means that we are
@@ -4913,14 +4861,14 @@ aout_link_write_symbols (struct aout_fin
 	  /* Pass this symbol through.  It is the target of an
 	     indirect or warning symbol.  */
 	  val = GET_WORD (input_bfd, sym->e_value);
-	  pass = FALSE;
+	  pass = false;
 	}
       else if (skip_next)
 	{
 	  /* Skip this symbol, which is the target of an indirect
 	     symbol that we have changed to no longer be an indirect
 	     symbol.  */
-	  skip_next = FALSE;
+	  skip_next = false;
 	  continue;
 	}
       else
@@ -4962,34 +4910,34 @@ aout_link_write_symbols (struct aout_fin
 	    {
 	      if ((type & N_TYPE) == N_INDR
 		  || type == N_WARNING)
-		skip_next = TRUE;
+		skip_next = true;
 	      *symbol_map = h->indx;
 	      continue;
 	    }
 
 	  /* See if we are stripping this symbol.  */
-	  skip = FALSE;
+	  skip = false;
 	  switch (strip)
 	    {
 	    case strip_none:
 	      break;
 	    case strip_debugger:
 	      if ((type & N_STAB) != 0)
-		skip = TRUE;
+		skip = true;
 	      break;
 	    case strip_some:
-	      if (bfd_hash_lookup (flaginfo->info->keep_hash, name, FALSE, FALSE)
+	      if (bfd_hash_lookup (flaginfo->info->keep_hash, name, false, false)
 		  == NULL)
-		skip = TRUE;
+		skip = true;
 	      break;
 	    case strip_all:
-	      skip = TRUE;
+	      skip = true;
 	      break;
 	    }
 	  if (skip)
 	    {
 	      if (h != NULL)
-		h->written = TRUE;
+		h->written = true;
 	      continue;
 	    }
 
@@ -5018,7 +4966,7 @@ aout_link_write_symbols (struct aout_fin
 		 the indirect symbol was defined, we output it with
 		 the correct definition so the debugger will
 		 understand it.  */
-	      pass = TRUE;
+	      pass = true;
 	      val = GET_WORD (input_bfd, sym->e_value);
 	      symsec = NULL;
 	    }
@@ -5034,7 +4982,7 @@ aout_link_write_symbols (struct aout_fin
 		 a case we do not want to output the next symbol,
 		 which is the target of the indirection.  */
 	      if ((type & N_TYPE) == N_INDR)
-		skip_next = TRUE;
+		skip_next = true;
 
 	      symsec = NULL;
 
@@ -5126,7 +5074,7 @@ aout_link_write_symbols (struct aout_fin
 	     it is a local symbol see if we should discard it.  */
 	  if (h != NULL)
 	    {
-	      h->written = TRUE;
+	      h->written = true;
 	      h->indx = obj_aout_external_sym_count (output_bfd);
 	    }
 	  else if ((type & N_TYPE) != N_SETT
@@ -5142,15 +5090,15 @@ aout_link_write_symbols (struct aout_fin
 		case discard_l:
 		  if ((type & N_STAB) == 0
 		      && bfd_is_local_label_name (input_bfd, name))
-		    skip = TRUE;
+		    skip = true;
 		  break;
 		case discard_all:
-		  skip = TRUE;
+		  skip = true;
 		  break;
 		}
 	      if (skip)
 		{
-		  pass = FALSE;
+		  pass = false;
 		  continue;
 		}
 	    }
@@ -5206,11 +5154,11 @@ aout_link_write_symbols (struct aout_fin
 	      /* If we have already included a header file with the
 		 same value, then replace this one with an N_EXCL
 		 symbol.  */
-	      copy = (bfd_boolean) (! flaginfo->info->keep_memory);
+	      copy = !flaginfo->info->keep_memory;
 	      incl_entry = aout_link_includes_lookup (&flaginfo->includes,
-						      name, TRUE, copy);
+						      name, true, copy);
 	      if (incl_entry == NULL)
-		return FALSE;
+		return false;
 	      for (t = incl_entry->totals; t != NULL; t = t->next)
 		if (t->total == val)
 		  break;
@@ -5222,7 +5170,7 @@ aout_link_write_symbols (struct aout_fin
 		      bfd_hash_allocate (&flaginfo->includes.root,
 					 sizeof *t);
 		  if (t == NULL)
-		    return FALSE;
+		    return false;
 		  t->total = val;
 		  t->next = incl_entry->totals;
 		  incl_entry->totals = t;
@@ -5267,7 +5215,7 @@ aout_link_write_symbols (struct aout_fin
       H_PUT_8 (output_bfd, type, outsym->e_type);
       H_PUT_8 (output_bfd, H_GET_8 (input_bfd, sym->e_other), outsym->e_other);
       H_PUT_16 (output_bfd, H_GET_16 (input_bfd, sym->e_desc), outsym->e_desc);
-      copy = FALSE;
+      copy = false;
       if (! flaginfo->info->keep_memory)
 	{
 	  /* name points into a string table which we are going to
@@ -5276,12 +5224,12 @@ aout_link_write_symbols (struct aout_fin
 	  if (h != NULL)
 	    name = h->root.root.string;
 	  else
-	    copy = TRUE;
+	    copy = true;
 	}
       strtab_index = add_to_stringtab (output_bfd, flaginfo->strtab,
 				       name, copy);
       if (strtab_index == (bfd_size_type) -1)
-	return FALSE;
+	return false;
       PUT_WORD (output_bfd, strtab_index, outsym->e_strx);
       PUT_WORD (output_bfd, val, outsym->e_value);
       *symbol_map = obj_aout_external_sym_count (output_bfd);
@@ -5295,21 +5243,21 @@ aout_link_write_symbols (struct aout_fin
       bfd_size_type outsym_size;
 
       if (bfd_seek (output_bfd, flaginfo->symoff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
       outsym_size = outsym - flaginfo->output_syms;
       outsym_size *= EXTERNAL_NLIST_SIZE;
-      if (bfd_bwrite ((void *) flaginfo->output_syms, outsym_size, output_bfd)
+      if (bfd_write (flaginfo->output_syms, outsym_size, output_bfd)
 	  != outsym_size)
-	return FALSE;
+	return false;
       flaginfo->symoff += outsym_size;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Link an a.out input BFD into the output file.  */
 
-static bfd_boolean
+static bool
 aout_link_input_bfd (struct aout_final_link_info *flaginfo, bfd *input_bfd)
 {
   BFD_ASSERT (bfd_get_format (input_bfd) == bfd_object);
@@ -5323,12 +5271,12 @@ aout_link_input_bfd (struct aout_final_l
   /* Get the symbols.  We probably have them already, unless
      flaginfo->info->keep_memory is FALSE.  */
   if (! aout_get_external_symbols (input_bfd))
-    return FALSE;
+    return false;
 
   /* Write out the symbols and get a map of the new indices.  The map
      is placed into flaginfo->symbol_map.  */
   if (! aout_link_write_symbols (flaginfo, input_bfd))
-    return FALSE;
+    return false;
 
   /* Relocate and write out the sections.  These functions use the
      symbol map created by aout_link_write_symbols.  The linker_mark
@@ -5340,7 +5288,7 @@ aout_link_input_bfd (struct aout_final_l
 				     obj_textsec (input_bfd),
 				     &flaginfo->treloff,
 				     exec_hdr (input_bfd)->a_trsize))
-	return FALSE;
+	return false;
     }
   if (obj_datasec (input_bfd)->linker_mark)
     {
@@ -5348,7 +5296,7 @@ aout_link_input_bfd (struct aout_final_l
 				     obj_datasec (input_bfd),
 				     &flaginfo->dreloff,
 				     exec_hdr (input_bfd)->a_drsize))
-	return FALSE;
+	return false;
     }
 
   /* If we are not keeping memory, we don't need the symbols any
@@ -5357,10 +5305,10 @@ aout_link_input_bfd (struct aout_final_l
   if (! flaginfo->info->keep_memory)
     {
       if (! aout_link_free_symbols (input_bfd))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Do the final link step.  This is called on the output BFD.  The
@@ -5370,13 +5318,13 @@ aout_link_input_bfd (struct aout_final_l
    of bfd_link_order structures which list all the input sections for
    the output section.  */
 
-bfd_boolean
+bool
 NAME (aout, final_link) (bfd *abfd,
 			 struct bfd_link_info *info,
 			 void (*callback) (bfd *, file_ptr *, file_ptr *, file_ptr *))
 {
   struct aout_final_link_info aout_info;
-  bfd_boolean includes_hash_initialized = FALSE;
+  bool includes_hash_initialized = false;
   bfd *sub;
   bfd_size_type trsize, drsize;
   bfd_size_type max_contents_size;
@@ -5384,7 +5332,7 @@ NAME (aout, final_link) (bfd *abfd,
   bfd_size_type max_sym_count;
   struct bfd_link_order *p;
   asection *o;
-  bfd_boolean have_link_order_relocs;
+  bool have_link_order_relocs;
 
   if (bfd_link_pic (info))
     abfd->flags |= DYNAMIC;
@@ -5401,7 +5349,7 @@ NAME (aout, final_link) (bfd *abfd,
 			      sizeof (struct aout_link_includes_entry),
 			      251))
     goto error_return;
-  includes_hash_initialized = TRUE;
+  includes_hash_initialized = true;
 
   /* Figure out the largest section size.  Also, if generating
      relocatable output, count the relocs.  */
@@ -5522,7 +5470,7 @@ NAME (aout, final_link) (bfd *abfd,
     struct aout_link_hash_entry *h;
 
     h = aout_link_hash_lookup (aout_hash_table (info), "__DYNAMIC",
-			       FALSE, FALSE, FALSE);
+			       false, false, false);
     if (h != NULL)
       aout_link_write_other_symbol (&h->root.root, &aout_info);
   }
@@ -5549,7 +5497,7 @@ NAME (aout, final_link) (bfd *abfd,
      We use the output_has_begun field of the input BFDs to see
      whether we have already handled it.  */
   for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
-    sub->output_has_begun = FALSE;
+    sub->output_has_begun = false;
 
   /* 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
@@ -5559,10 +5507,10 @@ NAME (aout, final_link) (bfd *abfd,
     {
       for (p = o->map_head.link_order; p != NULL; p = p->next)
 	if (p->type == bfd_indirect_link_order)
-	  p->u.indirect.section->linker_mark = TRUE;
+	  p->u.indirect.section->linker_mark = true;
     }
 
-  have_link_order_relocs = FALSE;
+  have_link_order_relocs = false;
   for (o = abfd->sections; o != NULL; o = o->next)
     {
       for (p = o->map_head.link_order;
@@ -5580,14 +5528,14 @@ NAME (aout, final_link) (bfd *abfd,
 		{
 		  if (! aout_link_input_bfd (&aout_info, input_bfd))
 		    goto error_return;
-		  input_bfd->output_has_begun = TRUE;
+		  input_bfd->output_has_begun = true;
 		}
 	    }
 	  else if (p->type == bfd_section_reloc_link_order
 		   || p->type == bfd_symbol_reloc_link_order)
 	    {
 	      /* These are handled below.  */
-	      have_link_order_relocs = TRUE;
+	      have_link_order_relocs = true;
 	    }
 	  else
 	    {
@@ -5624,30 +5572,19 @@ 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);
-      includes_hash_initialized = FALSE;
+      includes_hash_initialized = false;
     }
 
   /* Finish up any dynamic linking we may be doing.  */
@@ -5679,22 +5616,18 @@ NAME (aout, final_link) (bfd *abfd,
       bfd_byte b[BYTES_IN_WORD];
 
       memset (b, 0, BYTES_IN_WORD);
-      if (bfd_bwrite (b, (bfd_size_type) BYTES_IN_WORD, abfd) != BYTES_IN_WORD)
+      if (bfd_write (b, BYTES_IN_WORD, abfd) != BYTES_IN_WORD)
 	goto error_return;
     }
 
-  return TRUE;
+  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;
+  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.20200303/bfd/arc-got.h ./bfd/arc-got.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/arc-got.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/arc-got.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ARC-specific support for 32-bit ELF
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
    Contributed by Cupertino Miranda (cmiranda@synopsys.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -49,8 +49,8 @@ struct got_entry
   struct got_entry *next;
   enum tls_type_e type;
   bfd_vma offset;
-  bfd_boolean processed;
-  bfd_boolean created_dyn_relocation;
+  bool processed;
+  bool created_dyn_relocation;
   enum tls_got_entries existing_entries;
 };
 
@@ -114,8 +114,8 @@ new_got_entry_to_list (struct got_entry
   entry->type = type;
   entry->offset = offset;
   entry->next = NULL;
-  entry->processed = FALSE;
-  entry->created_dyn_relocation = FALSE;
+  entry->processed = false;
+  entry->created_dyn_relocation = false;
   entry->existing_entries = existing_entries;
 
   ARC_DEBUG ("New GOT got entry added to list: "
@@ -210,11 +210,11 @@ arc_got_entry_type_for_reloc (reloc_howt
     if (H)								\
       if (H->dynindx == -1 && !H->forced_local)				\
 	if (! bfd_elf_link_record_dynamic_symbol (info, H))		\
-	  return FALSE;							\
+	  return false;							\
      htab->s##SECNAME->size += 4;					\
    }									\
 
-static bfd_boolean
+static bool
 arc_fill_got_info_for_reloc (enum tls_type_e type,
 			     struct got_entry **list,
 			     struct bfd_link_info *  info,
@@ -223,7 +223,7 @@ arc_fill_got_info_for_reloc (enum tls_ty
   struct elf_link_hash_table *htab = elf_hash_table (info);
 
   if (got_entry_for_type (list, type) != NULL)
-    return TRUE;
+    return true;
 
   switch (type)
     {
@@ -240,9 +240,9 @@ arc_fill_got_info_for_reloc (enum tls_ty
       case GOT_TLS_GD:
 	{
 	  bfd_vma offset
-	    = ADD_SYMBOL_REF_SEC_AND_RELOC (got, TRUE, h);
+	    = ADD_SYMBOL_REF_SEC_AND_RELOC (got, true, h);
 	  bfd_vma ATTRIBUTE_UNUSED notneeded
-	    = ADD_SYMBOL_REF_SEC_AND_RELOC (got, TRUE, h);
+	    = ADD_SYMBOL_REF_SEC_AND_RELOC (got, true, h);
 	  new_got_entry_to_list (list, type, offset, TLS_GOT_MOD_AND_OFF);
 	}
 	break;
@@ -250,18 +250,60 @@ arc_fill_got_info_for_reloc (enum tls_ty
       case GOT_TLS_LE:
 	{
 	  bfd_vma offset
-	    = ADD_SYMBOL_REF_SEC_AND_RELOC (got, TRUE, h);
+	    = ADD_SYMBOL_REF_SEC_AND_RELOC (got, true, h);
 	  new_got_entry_to_list (list, type, offset, TLS_GOT_OFF);
 	}
 	break;
 
       default:
-	return FALSE;
+	return false;
 	break;
     }
-  return TRUE;
+  return true;
 }
 
+struct arc_static_sym_data {
+  bfd_vma sym_value;
+  const char *symbol_name;
+};
+
+static struct arc_static_sym_data
+get_static_sym_data (unsigned long  r_symndx,
+		     Elf_Internal_Sym  *local_syms,
+		     asection **local_sections,
+		     struct elf_link_hash_entry *h,
+		     struct arc_relocation_data *reloc_data)
+{
+  static const char local_name[] = "(local)";
+  struct arc_static_sym_data ret = { 0, NULL };
+
+  if (h != NULL)
+    {
+      BFD_ASSERT (h->root.type != bfd_link_hash_undefweak
+		  && h->root.type != bfd_link_hash_undefined);
+      /* TODO: This should not be here.  */
+      reloc_data->sym_value = h->root.u.def.value;
+      reloc_data->sym_section = h->root.u.def.section;
+
+      ret.sym_value = h->root.u.def.value
+	+ h->root.u.def.section->output_section->vma
+	+ h->root.u.def.section->output_offset;
+
+      ret.symbol_name = h->root.root.string;
+    }
+  else
+  {
+    Elf_Internal_Sym *sym = local_syms + r_symndx;
+    asection *sec = local_sections[r_symndx];
+
+    ret.sym_value = sym->st_value
+      + sec->output_section->vma
+      + sec->output_offset;
+
+    ret.symbol_name = local_name;
+  }
+  return ret;
+}
 
 static bfd_vma
 relocate_fix_got_relocs_for_got_info (struct got_entry **	   list_p,
@@ -284,44 +326,13 @@ relocate_fix_got_relocs_for_got_info (st
   BFD_ASSERT (entry);
 
   if (h == NULL
-      || h->forced_local == TRUE
+      || h->forced_local == true
       || (! elf_hash_table (info)->dynamic_sections_created
 	  || (bfd_link_pic (info)
 	      && SYMBOL_REFERENCES_LOCAL (info, h))))
     {
       const char ATTRIBUTE_UNUSED *symbol_name;
-      static const char local_name[] = "(local)";
-      asection *tls_sec = NULL;
-      bfd_vma sym_value = 0;
-
-      if (h != NULL)
-	{
-	  // TODO: This should not be here.
-	  reloc_data->sym_value = h->root.u.def.value;
-	  reloc_data->sym_section = h->root.u.def.section;
-
-	  sym_value = h->root.u.def.value
-	    + h->root.u.def.section->output_section->vma
-	    + h->root.u.def.section->output_offset;
-
-	  tls_sec = elf_hash_table (info)->tls_sec;
-
-	  symbol_name = h->root.root.string;
-	}
-      else
-	{
-	  Elf_Internal_Sym *sym = local_syms + r_symndx;
-	  asection *sec = local_sections[r_symndx];
-
-	  sym_value = sym->st_value
-	    + sec->output_section->vma
-	    + sec->output_offset;
-
-	  tls_sec = elf_hash_table (info)->tls_sec;
-
-	  symbol_name = local_name;
-	}
-
+      asection *tls_sec = elf_hash_table (info)->tls_sec;
 
       if (entry && !entry->processed)
 	{
@@ -335,8 +346,12 @@ relocate_fix_got_relocs_for_got_info (st
 		if (h == NULL || h->forced_local
 		   || !elf_hash_table (info)->dynamic_sections_created)
 		  {
+		    struct arc_static_sym_data tmp =
+		      get_static_sym_data (r_symndx, local_syms, local_sections,
+					   h, reloc_data);
+
 		    bfd_put_32 (output_bfd,
-			    sym_value - sec_vma
+			    tmp.sym_value - sec_vma
 			    + (elf_hash_table (info)->dynamic_sections_created
 			       ? 0
 			       : (align_power (0,
@@ -355,7 +370,7 @@ relocate_fix_got_relocs_for_got_info (st
 			     + entry->offset
 			     + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
 				? 4 : 0)),
-			  symbol_name);
+			  tmp.symbol_name);
 		  }
 	      }
 	      break;
@@ -366,8 +381,12 @@ relocate_fix_got_relocs_for_got_info (st
 		bfd_vma ATTRIBUTE_UNUSED sec_vma
 		  = tls_sec->output_section->vma;
 
+		struct arc_static_sym_data tmp =
+		  get_static_sym_data (r_symndx, local_syms, local_sections,
+				       h, reloc_data);
+
 		bfd_put_32 (output_bfd,
-			    sym_value - sec_vma
+			    tmp.sym_value - sec_vma
 			    + (elf_hash_table (info)->dynamic_sections_created
 			       ? 0
 			       : (align_power (TCB_SIZE,
@@ -386,7 +405,7 @@ relocate_fix_got_relocs_for_got_info (st
 			      + entry->offset
 			      + (entry->existing_entries == TLS_GOT_MOD_AND_OFF
 				 ? 4 : 0)),
-			   symbol_name);
+			   tmp.symbol_name);
 	      }
 	      break;
 
@@ -415,7 +434,8 @@ relocate_fix_got_relocs_for_got_info (st
 			       "@ %#08lx for sym %s in got offset %#lx\n",
 			       (long) (reloc_data->sym_value + sec_vma),
 			       (long) (htab->sgot->output_section->vma
-				       + htab->sgot->output_offset + entry->offset),
+				       + htab->sgot->output_offset
+				       + entry->offset),
 			       symbol_name,
 			       (long) entry->offset);
 		  }
@@ -425,7 +445,7 @@ relocate_fix_got_relocs_for_got_info (st
 	      BFD_ASSERT (0);
 	      break;
 	    }
-	  entry->processed = TRUE;
+	  entry->processed = true;
 	}
     }
 
@@ -460,7 +480,7 @@ create_got_dynrelocs_for_single_entry (s
 	{
 	  ADD_RELA (output_bfd, got, got_offset, h->dynindx, R_ARC_GLOB_DAT, 0);
 	}
-      list->created_dyn_relocation = TRUE;
+      list->created_dyn_relocation = true;
     }
   else if (list->existing_entries != TLS_GOT_NONE
 	   && !list->created_dyn_relocation)
@@ -515,7 +535,7 @@ GOT_OFFSET = %#lx, GOT_VMA = %#lx, INDEX
 			     + htab->sgot->output_offset + got_offset),
 		     (long) dynindx, (long) addend);
 	}
-      list->created_dyn_relocation = TRUE;
+      list->created_dyn_relocation = 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.20200303/bfd/archive64.c ./bfd/archive64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/archive64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/archive64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for 64-bit archives.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
    Ian Lance Taylor, Cygnus Support
    Linker support added by Mark Mitchell, CodeSourcery, LLC.
    <mark@codesourcery.com>
@@ -34,7 +34,7 @@
 
 /* Read an Irix 6 armap.  */
 
-bfd_boolean
+bool
 _bfd_archive_64_bit_slurp_armap (bfd *abfd)
 {
   struct artdata *ardata = bfd_ardata (abfd);
@@ -47,40 +47,48 @@ _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;
 
   /* Get the name of the first element.  */
-  i = bfd_bread (nextname, 16, abfd);
+  i = bfd_read (nextname, 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;
+  if (bfd_seek (abfd, -16, SEEK_CUR) != 0)
+    return false;
 
   /* Archives with traditional armaps are still permitted.  */
-  if (CONST_STRNEQ (nextname, "/               "))
+  if (startswith (nextname, "/               "))
     return bfd_slurp_armap (abfd);
 
-  if (! CONST_STRNEQ (nextname, "/SYM64/         "))
+  if (! startswith (nextname, "/SYM64/         "))
     {
-      abfd->has_armap = FALSE;
-      return TRUE;
+      abfd->has_armap = false;
+      return true;
     }
 
   mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
   if (mapdata == NULL)
-    return FALSE;
+    return false;
   parsed_size = mapdata->parsed_size;
   free (mapdata);
 
-  if (bfd_bread (int_buf, 8, abfd) != 8)
+  filesize = bfd_get_file_size (abfd);
+  if (filesize != 0 && parsed_size > filesize)
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return false;
+    }
+
+  if (bfd_read (int_buf, 8, abfd) != 8)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_malformed_archive);
-      return FALSE;
+      return false;
     }
 
   nsymz = bfd_getb64 (int_buf);
@@ -100,24 +108,21 @@ _bfd_archive_64_bit_slurp_armap (bfd *ab
       || amt <= stringsize)
     {
       bfd_set_error (bfd_error_malformed_archive);
-      return FALSE;
+      return false;
     }
-  ardata->symdefs = (struct carsym *) bfd_zalloc (abfd, amt);
+  ardata->symdefs = (struct carsym *) bfd_alloc (abfd, amt);
   if (ardata->symdefs == NULL)
-    return FALSE;
+    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
-      || bfd_bread (stringbase, stringsize, abfd) != stringsize)
+  raw_armap = (bfd_byte *) _bfd_alloc_and_read (abfd, ptrsize, ptrsize);
+  if (raw_armap == NULL
+      || bfd_read (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;
@@ -137,23 +142,21 @@ _bfd_archive_64_bit_slurp_armap (bfd *ab
   /* Pad to an even boundary if you have to.  */
   ardata->first_file_filepos += (ardata->first_file_filepos) % 2;
 
-  abfd->has_armap = TRUE;
+  abfd->has_armap = true;
   bfd_release (abfd, raw_armap);
 
-  return TRUE;
+  return true;
 
-release_raw_armap:
-  bfd_release (abfd, raw_armap);
-release_symdefs:
+ release_symdefs:
   bfd_release (abfd, ardata->symdefs);
-  return FALSE;
+  return false;
 }
 
 /* Write out an Irix 6 armap.  The Irix 6 tools are supposed to be
    able to handle ordinary ELF armaps, but at least on Irix 6.2 the
    linker crashes.  */
 
-bfd_boolean
+bool
 _bfd_archive_64_bit_write_armap (bfd *arch,
 				 unsigned int elength,
 				 struct orl *map,
@@ -182,9 +185,17 @@ _bfd_archive_64_bit_write_armap (bfd *ar
   memset (&hdr, ' ', sizeof (struct ar_hdr));
   memcpy (hdr.ar_name, "/SYM64/", strlen ("/SYM64/"));
   if (!_bfd_ar_sizepad (hdr.ar_size, sizeof (hdr.ar_size), mapsize))
-    return FALSE;
-  _bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%ld",
-		    time (NULL));
+    return false;
+
+  time_t date;
+
+  if (arch->flags & BFD_DETERMINISTIC_OUTPUT)
+    date = 0;
+  else
+    date = bfd_get_current_time (0);
+
+  _bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%ld", (long) date);
+  
   /* This, at least, is what Intel coff sets the values to.: */
   _bfd_ar_spacepad (hdr.ar_uid, sizeof (hdr.ar_uid), "%ld", 0);
   _bfd_ar_spacepad (hdr.ar_gid, sizeof (hdr.ar_gid), "%ld", 0);
@@ -193,13 +204,13 @@ _bfd_archive_64_bit_write_armap (bfd *ar
 
   /* Write the ar header for this item and the number of symbols */
 
-  if (bfd_bwrite (&hdr, sizeof (struct ar_hdr), arch)
+  if (bfd_write (&hdr, sizeof (struct ar_hdr), arch)
       != sizeof (struct ar_hdr))
-    return FALSE;
+    return false;
 
   bfd_putb64 ((bfd_vma) symbol_count, buf);
-  if (bfd_bwrite (buf, 8, arch) != 8)
-    return FALSE;
+  if (bfd_write (buf, 8, arch) != 8)
+    return false;
 
   /* Two passes, first write the file offsets for each symbol -
      remembering that each offset is on a two byte boundary.  */
@@ -219,8 +230,8 @@ _bfd_archive_64_bit_write_armap (bfd *ar
 	   count++)
 	{
 	  bfd_putb64 ((bfd_vma) archive_member_file_ptr, buf);
-	  if (bfd_bwrite (buf, 8, arch) != 8)
-	    return FALSE;
+	  if (bfd_write (buf, 8, arch) != 8)
+	    return false;
 	}
 
       /* Add size of this archive entry */
@@ -236,18 +247,18 @@ _bfd_archive_64_bit_write_armap (bfd *ar
     {
       size_t len = strlen (*map[count].name) + 1;
 
-      if (bfd_bwrite (*map[count].name, len, arch) != len)
-	return FALSE;
+      if (bfd_write (*map[count].name, len, arch) != len)
+	return false;
     }
 
   /* The spec says that this should be padded to an 8 byte boundary.
      However, the Irix 6.2 tools do not appear to do this.  */
   while (padding != 0)
     {
-      if (bfd_bwrite ("", 1, arch) != 1)
-	return FALSE;
+      if (bfd_write ("", 1, arch) != 1)
+	return false;
       --padding;
     }
 
-  return TRUE;
+  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.20200303/bfd/archive.c ./bfd/archive.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/archive.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/archive.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for archive files (libraries).
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 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.
@@ -141,11 +141,43 @@ SUBSECTION
 #include "hashtab.h"
 #include "filenames.h"
 #include "bfdlink.h"
+#include "plugin.h"
 
 #ifndef errno
 extern int errno;
 #endif
 
+/*
+EXTERNAL
+.{* A canonical archive symbol.  *}
+.{* This is a type pun with struct symdef/struct ranlib on purpose!  *}
+.typedef struct carsym
+.{
+.  const char *name;
+.  file_ptr file_offset;	{* Look here to find the file.  *}
+.}
+.carsym;
+.
+.{* A count of carsyms (canonical archive symbols).  *}
+. typedef unsigned long symindex;
+.#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
+.
+
+INTERNAL
+.{* Used in generating armaps (archive tables of contents).  *}
+.struct orl		{* Output ranlib.  *}
+.{
+.  char **name;		{* Symbol name.  *}
+.  union
+.  {
+.    file_ptr pos;
+.    bfd *abfd;
+.  } u;			{* bfd* or file position.  *}
+.  int namidx;		{* Index into string table.  *}
+.};
+.
+*/
+
 /* We keep a cache of archive filepointers to archive elements to
    speed up searching the archive by filepos.  We only add an entry to
    the cache when we actually read one.  We also don't sort the cache;
@@ -172,7 +204,7 @@ struct ar_cache
 void
 _bfd_ar_spacepad (char *p, size_t n, const char *fmt, long val)
 {
-  static char buf[20];
+  char buf[20];
   size_t len;
 
   snprintf (buf, sizeof (buf), fmt, val);
@@ -186,18 +218,18 @@ _bfd_ar_spacepad (char *p, size_t n, con
     memcpy (p, buf, n);
 }
 
-bfd_boolean
+bool
 _bfd_ar_sizepad (char *p, size_t n, bfd_size_type size)
 {
-  static char buf[21];
+  char buf[21];
   size_t len;
 
-  snprintf (buf, sizeof (buf), "%-10" BFD_VMA_FMT "u", size);
+  snprintf (buf, sizeof (buf), "%-10" PRIu64, (uint64_t) size);
   len = strlen (buf);
   if (len > n)
     {
       bfd_set_error (bfd_error_file_too_big);
-      return FALSE;
+      return false;
     }
   if (len < n)
     {
@@ -206,27 +238,16 @@ _bfd_ar_sizepad (char *p, size_t n, bfd_
     }
   else
     memcpy (p, buf, n);
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _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)
-    return FALSE;
-
-  /* Already cleared by bfd_zalloc above.
-     bfd_ardata (abfd)->cache = NULL;
-     bfd_ardata (abfd)->archive_head = NULL;
-     bfd_ardata (abfd)->symdefs = NULL;
-     bfd_ardata (abfd)->extended_names = NULL;
-     bfd_ardata (abfd)->extended_names_size = 0;
-     bfd_ardata (abfd)->tdata = NULL;  */
-
-  return TRUE;
+  return bfd_ardata (abfd) != NULL;
 }
 
 /*
@@ -284,18 +305,18 @@ FUNCTION
 	bfd_set_archive_head
 
 SYNOPSIS
-	bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
+	bool bfd_set_archive_head (bfd *output, bfd *new_head);
 
 DESCRIPTION
 	Set the head of the chain of
 	BFDs contained in the archive @var{output} to @var{new_head}.
 */
 
-bfd_boolean
+bool
 bfd_set_archive_head (bfd *output_archive, bfd *new_head)
 {
   output_archive->archive_head = new_head;
-  return TRUE;
+  return true;
 }
 
 bfd *
@@ -349,7 +370,7 @@ _bfd_calloc_wrapper (size_t a, size_t b)
 
 /* Kind of stupid to call cons for each one, but we don't do too many.  */
 
-bfd_boolean
+bool
 _bfd_add_bfd_to_archive_cache (bfd *arch_bfd, file_ptr filepos, bfd *new_elt)
 {
   struct ar_cache *cache;
@@ -361,7 +382,7 @@ _bfd_add_bfd_to_archive_cache (bfd *arch
       hash_table = htab_create_alloc (16, hash_file_ptr, eq_file_ptr,
 				      NULL, _bfd_calloc_wrapper, free);
       if (hash_table == NULL)
-	return FALSE;
+	return false;
       bfd_ardata (arch_bfd)->cache = hash_table;
     }
 
@@ -375,7 +396,7 @@ _bfd_add_bfd_to_archive_cache (bfd *arch
   arch_eltdata (new_elt)->parent_cache = hash_table;
   arch_eltdata (new_elt)->key = filepos;
 
-  return TRUE;
+  return true;
 }
 
 static bfd *
@@ -403,7 +424,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 +434,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);
@@ -485,9 +506,10 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd,
 {
   struct ar_hdr hdr;
   char *hdrp = (char *) &hdr;
-  bfd_size_type parsed_size;
+  uint64_t 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;
@@ -496,7 +518,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd,
   char fmag_save;
   int scan;
 
-  if (bfd_bread (hdrp, sizeof (struct ar_hdr), abfd) != sizeof (struct ar_hdr))
+  if (bfd_read (hdrp, sizeof (struct ar_hdr), abfd) != sizeof (struct ar_hdr))
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_no_more_archived_files);
@@ -513,7 +535,7 @@ _bfd_generic_read_ar_hdr_mag (bfd *abfd,
   errno = 0;
   fmag_save = hdr.ar_fmag[0];
   hdr.ar_fmag[0] = 0;
-  scan = sscanf (hdr.ar_size, "%" BFD_VMA_FMT "u", &parsed_size);
+  scan = sscanf (hdr.ar_size, "%" SCNu64, &parsed_size);
   hdr.ar_fmag[0] = fmag_save;
   if (scan != 1)
     {
@@ -538,17 +560,25 @@ _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
 		  + sizeof (struct areltdata)
 		  + sizeof (struct ar_hdr));
-      if (bfd_bread (filename, namelen, abfd) != namelen)
+      if (bfd_read (filename, namelen, abfd) != namelen)
 	{
 	  free (allocptr);
 	  if (bfd_get_error () != bfd_error_system_call)
@@ -586,13 +616,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 +649,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;
@@ -642,7 +672,8 @@ _bfd_append_relative_path (bfd *arch, ch
    element, since it handles the bookkeeping so nicely for us.  */
 
 bfd *
-_bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos)
+_bfd_get_elt_at_filepos (bfd *archive, file_ptr filepos,
+			 struct bfd_link_info *info)
 {
   struct areltdata *new_areldata;
   bfd *n_bfd;
@@ -678,19 +709,15 @@ _bfd_get_elt_at_filepos (bfd *archive, f
 	  /* This proxy entry refers to an element of a nested archive.
 	     Locate the member of that archive and return a bfd for it.  */
 	  bfd *ext_arch = find_nested_archive (filename, archive);
+	  file_ptr origin = new_areldata->origin;
 
+	  free (new_areldata);
 	  if (ext_arch == NULL
 	      || ! bfd_check_format (ext_arch, bfd_archive))
-	    {
-	      free (new_areldata);
-	      return NULL;
-	    }
-	  n_bfd = _bfd_get_elt_at_filepos (ext_arch, new_areldata->origin);
+	    return NULL;
+	  n_bfd = _bfd_get_elt_at_filepos (ext_arch, origin, info);
 	  if (n_bfd == NULL)
-	    {
-	      free (new_areldata);
-	      return NULL;
-	    }
+	    return NULL;
 	  n_bfd->proxy_origin = bfd_tell (archive);
 
 	  /* Copy BFD_COMPRESS, BFD_DECOMPRESS and BFD_COMPRESS_GABI
@@ -704,9 +731,28 @@ _bfd_get_elt_at_filepos (bfd *archive, f
 
       /* It's not an element of a nested archive;
 	 open the external file as a bfd.  */
+      bfd_set_error (bfd_error_no_error);
       n_bfd = open_nested_file (filename, archive);
       if (n_bfd == NULL)
-	bfd_set_error (bfd_error_malformed_archive);
+	{
+	  switch (bfd_get_error ())
+	    {
+	    default:
+	      break;
+	    case bfd_error_no_error:
+	      bfd_set_error (bfd_error_malformed_archive);
+	      break;
+	    case bfd_error_system_call:
+	      if (info != NULL)
+		{
+		  info->callbacks->fatal
+		    (_("%P: %pB(%s): error opening thin archive member: %E\n"),
+		     archive, filename);
+		  break;
+		}
+	      break;
+	    }
+	}
     }
   else
     {
@@ -728,8 +774,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;
     }
 
@@ -763,7 +808,7 @@ _bfd_generic_get_elt_at_index (bfd *abfd
   carsym *entry;
 
   entry = bfd_ardata (abfd)->symdefs + sym_index;
-  return _bfd_get_elt_at_filepos (abfd, entry->file_offset);
+  return _bfd_get_elt_at_filepos (abfd, entry->file_offset, NULL);
 }
 
 bfd *
@@ -832,7 +877,7 @@ bfd_generic_openr_next_archived_file (bf
 	}
     }
 
-  return _bfd_get_elt_at_filepos (archive, filestart);
+  return _bfd_get_elt_at_filepos (archive, filestart, NULL);
 }
 
 bfd *
@@ -842,14 +887,13 @@ _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)
+  if (bfd_read (armag, SARMAG, abfd) != SARMAG)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -865,24 +909,12 @@ bfd_generic_archive_p (bfd *abfd)
       return NULL;
     }
 
-  tdata_hold = bfd_ardata (abfd);
-
   amt = sizeof (struct artdata);
   bfd_ardata (abfd) = (struct artdata *) bfd_zalloc (abfd, amt);
   if (bfd_ardata (abfd) == NULL)
-    {
-      bfd_ardata (abfd) = tdata_hold;
-      return NULL;
-    }
+    return NULL;
 
   bfd_ardata (abfd)->first_file_filepos = SARMAG;
-  /* Cleared by bfd_zalloc above.
-     bfd_ardata (abfd)->cache = NULL;
-     bfd_ardata (abfd)->archive_head = NULL;
-     bfd_ardata (abfd)->symdefs = NULL;
-     bfd_ardata (abfd)->extended_names = NULL;
-     bfd_ardata (abfd)->extended_names_size = 0;
-     bfd_ardata (abfd)->tdata = NULL;  */
 
   if (!BFD_SEND (abfd, _bfd_slurp_armap, (abfd))
       || !BFD_SEND (abfd, _bfd_slurp_extended_name_table, (abfd)))
@@ -890,7 +922,6 @@ bfd_generic_archive_p (bfd *abfd)
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
       bfd_release (abfd, bfd_ardata (abfd));
-      bfd_ardata (abfd) = tdata_hold;
       return NULL;
     }
 
@@ -916,15 +947,15 @@ bfd_generic_archive_p (bfd *abfd)
       abfd->no_element_cache = save;
       if (first != NULL)
 	{
-	  first->target_defaulted = FALSE;
-	  if (bfd_check_format (first, bfd_object)
-	      && first->xvec != abfd->xvec)
+	  first->target_defaulted = false;
+	  if (!bfd_check_format (first, bfd_object)
+	      || first->xvec != abfd->xvec)
 	    bfd_set_error (bfd_error_wrong_object_format);
 	  bfd_close (first);
 	}
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* Some constants for a 32 bit BSD archive structure.  We do not
@@ -947,63 +978,70 @@ bfd_generic_archive_p (bfd *abfd)
 /* Read a BSD-style archive symbol table.  Returns FALSE on error,
    TRUE otherwise.  */
 
-static bfd_boolean
+static bool
 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);
   if (mapdata == NULL)
-    return FALSE;
+    return false;
   parsed_size = mapdata->parsed_size;
   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);
-      return FALSE;
+      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);
     }
 
@@ -1013,14 +1051,20 @@ do_slurp_bsd_armap (bfd *abfd)
   /* FIXME, we should provide some way to free raw_ardata when
      we are done using the strings from it.  For now, it seems
      to be allocated on an objalloc anyway...  */
-  abfd->has_armap = TRUE;
-  return TRUE;
+  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
    otherwise.  */
 
-static bfd_boolean
+static bool
 do_slurp_coff_armap (bfd *abfd)
 {
   struct areltdata *mapdata;
@@ -1030,61 +1074,68 @@ 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)
-    return FALSE;
+    return false;
   parsed_size = mapdata->parsed_size;
   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;
-    }
+  if (bfd_read (int_buf, 4, abfd) != 4)
+    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;
+    }
 
-  carsym_size = (nsymz * sizeof (carsym));
-  ptrsize = (4 * nsymz);
+  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;
+    }
+
+  stringsize = parsed_size - ptrsize - 4;
 
   if (carsym_size + stringsize + 1 <= carsym_size)
-    return FALSE;
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return false;
+    }
 
-  ardata->symdefs = (struct carsym *) bfd_zalloc (abfd,
-						  carsym_size + stringsize + 1);
+  /* 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_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_read (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,92 +1155,101 @@ 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);
+  abfd->has_armap = true;
+  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;
+  return true;
 
-release_raw_armap:
-  bfd_release (abfd, raw_armap);
-release_symdefs:
+ release_symdefs:
   bfd_release (abfd, (ardata)->symdefs);
-  return FALSE;
+ free_armap:
+  free (raw_armap);
+  return false;
 }
 
 /* This routine can handle either coff-style or bsd-style armaps
    (archive symbol table).  Returns FALSE on error, TRUE otherwise */
 
-bfd_boolean
+bool
 bfd_slurp_armap (bfd *abfd)
 {
-  char nextname[17];
-  int i = bfd_bread (nextname, 16, abfd);
+  char nextname[16];
+  int i = bfd_read (nextname, 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;
+  if (bfd_seek (abfd, -16, SEEK_CUR) != 0)
+    return false;
 
-  if (CONST_STRNEQ (nextname, "__.SYMDEF       ")
-      || CONST_STRNEQ (nextname, "__.SYMDEF/      ")) /* Old Linux archives.  */
+  if (memcmp (nextname, "__.SYMDEF       ", 16) == 0
+      /* Old Linux archives.  */
+      || memcmp (nextname, "__.SYMDEF/      ", 16) == 0)
     return do_slurp_bsd_armap (abfd);
-  else if (CONST_STRNEQ (nextname, "/               "))
+  else if (memcmp (nextname, "/               ", 16) == 0)
     return do_slurp_coff_armap (abfd);
-  else if (CONST_STRNEQ (nextname, "/SYM64/         "))
+  else if (memcmp (nextname, "/SYM64/         ", 16) == 0)
     {
       /* 64bit (Irix 6) archive.  */
 #ifdef BFD64
       return _bfd_archive_64_bit_slurp_armap (abfd);
 #else
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
 #endif
     }
-  else if (CONST_STRNEQ (nextname, "#1/20           "))
+  else if (memcmp (nextname, "________", 8) == 0
+	   && ((nextname[8] == '_' && nextname[9] == '_')
+	       || (nextname[8] == '6' && nextname[9] == '4'))
+	   && nextname[10] == 'E'
+	   && (nextname[11] == 'B' || nextname[11] == 'L')
+	   && nextname[12] == 'E'
+	   && (nextname[13] == 'B' || nextname[13] == 'L')
+	   && nextname[14] == '_'
+	   && (nextname[15] == ' ' || nextname[15] == 'X'))
+    {
+      /* ECOFF archive.  */
+      bfd_set_error (bfd_error_wrong_format);
+      return false;
+    }
+  else if (memcmp (nextname, "#1/20           ", 16) == 0)
     {
       /* Mach-O has a special name for armap when the map is sorted by name.
 	 However because this name has a space it is slightly more difficult
 	 to check it.  */
       struct ar_hdr hdr;
-      char extname[21];
+      char extname[20];
 
-      if (bfd_bread (&hdr, sizeof (hdr), abfd) != sizeof (hdr))
-	return FALSE;
+      if (bfd_read (&hdr, sizeof (hdr), abfd) != sizeof (hdr))
+	return false;
       /* Read the extended name.  We know its length.  */
-      if (bfd_bread (extname, 20, abfd) != 20)
-	return FALSE;
+      if (bfd_read (extname, 20, abfd) != 20)
+	return false;
       if (bfd_seek (abfd, -(file_ptr) (sizeof (hdr) + 20), SEEK_CUR) != 0)
-	return FALSE;
-      extname[20] = 0;
-      if (CONST_STRNEQ (extname, "__.SYMDEF SORTED")
-	  || CONST_STRNEQ (extname, "__.SYMDEF"))
+	return false;
+      if (memcmp (extname, "__.SYMDEF SORTED", 16) == 0
+	  || memcmp (extname, "__.SYMDEF", 9) == 0)
 	return do_slurp_bsd_armap (abfd);
     }
 
-  abfd->has_armap = FALSE;
-  return TRUE;
+  abfd->has_armap = false;
+  return true;
 }
 
 /** Extended name table.
@@ -1204,51 +1264,57 @@ bfd_slurp_armap (bfd *abfd)
 
 /* Returns FALSE on error, TRUE otherwise.  */
 
-bfd_boolean
+bool
 _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.  */
   if (bfd_seek (abfd, bfd_ardata (abfd)->first_file_filepos, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
-  if (bfd_bread (nextname, 16, abfd) == 16)
+  if (bfd_read (nextname, 16, abfd) == 16)
     {
-      if (bfd_seek (abfd, (file_ptr) -16, SEEK_CUR) != 0)
-	return FALSE;
+      struct areltdata *namedata;
+      bfd_size_type amt;
+      ufile_ptr filesize;
 
-      if (! CONST_STRNEQ (nextname, "ARFILENAMES/    ")
-	  && ! CONST_STRNEQ (nextname, "//              "))
+      if (bfd_seek (abfd, -16, SEEK_CUR) != 0)
+	return false;
+
+      if (! startswith (nextname, "ARFILENAMES/    ")
+	  && ! startswith (nextname, "//              "))
 	{
 	  bfd_ardata (abfd)->extended_names = NULL;
 	  bfd_ardata (abfd)->extended_names_size = 0;
-	  return TRUE;
+	  return true;
 	}
 
       namedata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
       if (namedata == NULL)
-	return FALSE;
+	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:
 	  free (namedata);
 	  bfd_ardata (abfd)->extended_names = NULL;
 	  bfd_ardata (abfd)->extended_names_size = 0;
-	  return FALSE;
+	  return false;
 	}
 
-      if (bfd_bread (bfd_ardata (abfd)->extended_names, amt, abfd) != amt)
+      if (bfd_read (bfd_ardata (abfd)->extended_names, amt, abfd) != amt)
 	{
 	  if (bfd_get_error () != bfd_error_system_call)
 	    bfd_set_error (bfd_error_malformed_archive);
@@ -1256,6 +1322,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
@@ -1284,7 +1351,7 @@ _bfd_slurp_extended_name_table (bfd *abf
 
       free (namedata);
     }
-  return TRUE;
+  return true;
 }
 
 #ifdef VMS
@@ -1438,8 +1505,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)
@@ -1468,35 +1534,35 @@ adjust_relative_path (const char * path,
 
 /* Build a BFD style extended name table.  */
 
-bfd_boolean
+bool
 _bfd_archive_bsd_construct_extended_name_table (bfd *abfd,
 						char **tabloc,
 						bfd_size_type *tablen,
 						const char **name)
 {
   *name = "ARFILENAMES/";
-  return _bfd_construct_extended_name_table (abfd, FALSE, tabloc, tablen);
+  return _bfd_construct_extended_name_table (abfd, false, tabloc, tablen);
 }
 
 /* Build an SVR4 style extended name table.  */
 
-bfd_boolean
+bool
 _bfd_archive_coff_construct_extended_name_table (bfd *abfd,
 						 char **tabloc,
 						 bfd_size_type *tablen,
 						 const char **name)
 {
   *name = "//";
-  return _bfd_construct_extended_name_table (abfd, TRUE, tabloc, tablen);
+  return _bfd_construct_extended_name_table (abfd, true, tabloc, tablen);
 }
 
-bfd_boolean
+bool
 _bfd_noarchive_construct_extended_name_table (bfd *abfd ATTRIBUTE_UNUSED,
 					      char **tabloc ATTRIBUTE_UNUSED,
 					      bfd_size_type *len ATTRIBUTE_UNUSED,
 					      const char **name ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* Follows archive_head and produces an extended name table if
@@ -1507,9 +1573,9 @@ _bfd_noarchive_construct_extended_name_t
    something went wrong.  A successful return may still involve a
    zero-length tablen!  */
 
-bfd_boolean
+bool
 _bfd_construct_extended_name_table (bfd *abfd,
-				    bfd_boolean trailing_slash,
+				    bool trailing_slash,
 				    char **tabloc,
 				    bfd_size_type *tablen)
 {
@@ -1533,13 +1599,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 +1618,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,9 +1633,9 @@ _bfd_construct_extended_name_table (bfd
 	  continue;
 	}
 
-      normal = normalize (abfd, current->filename);
+      normal = normalize (abfd, bfd_get_filename (current));
       if (normal == NULL)
-	return FALSE;
+	return false;
 
       thislen = strlen (normal);
 
@@ -1605,11 +1671,11 @@ _bfd_construct_extended_name_table (bfd
     }
 
   if (total_namelen == 0)
-    return TRUE;
+    return true;
 
-  *tabloc = (char *) bfd_zalloc (abfd, total_namelen);
+  *tabloc = (char *) bfd_alloc (abfd, total_namelen);
   if (*tabloc == NULL)
-    return FALSE;
+    return false;
 
   *tablen = total_namelen;
   strptr = *tabloc;
@@ -1624,7 +1690,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 +1698,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 +1707,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;
 	}
@@ -1650,7 +1716,7 @@ _bfd_construct_extended_name_table (bfd
 	{
 	  normal = normalize (abfd, filename);
 	  if (normal == NULL)
-	    return FALSE;
+	    return false;
 	}
 
       thislen = strlen (normal);
@@ -1664,16 +1730,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,23 +1750,16 @@ _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;
-	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Do not construct an extended name table but transforms name field into
    its extended form.  */
 
-bfd_boolean
+bool
 _bfd_archive_bsd44_construct_extended_name_table (bfd *abfd,
 						  char **tabloc,
 						  bfd_size_type *tablen,
@@ -1719,12 +1776,12 @@ _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;
 
       if (normal == NULL)
-	return FALSE;
+	return false;
 
       for (len = 0; normal[len]; len++)
 	if (normal[len] == ' ')
@@ -1740,24 +1797,24 @@ _bfd_archive_bsd44_construct_extended_na
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write an archive header.  */
 
-bfd_boolean
+bool
 _bfd_generic_write_ar_hdr (bfd *archive, bfd *abfd)
 {
   struct ar_hdr *hdr = arch_hdr (abfd);
 
-  if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr))
-    return FALSE;
-  return TRUE;
+  if (bfd_write (hdr, sizeof (*hdr), archive) != sizeof (*hdr))
+    return false;
+  return true;
 }
 
 /* Write an archive header using BSD4.4 convention.  */
 
-bfd_boolean
+bool
 _bfd_bsd44_write_ar_hdr (bfd *archive, bfd *abfd)
 {
   struct ar_hdr *hdr = arch_hdr (abfd);
@@ -1765,7 +1822,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;
 
@@ -1773,32 +1830,32 @@ _bfd_bsd44_write_ar_hdr (bfd *archive, b
 
       if (!_bfd_ar_sizepad (hdr->ar_size, sizeof (hdr->ar_size),
 			    arch_eltdata (abfd)->parsed_size + padded_len))
-	return FALSE;
+	return false;
 
-      if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr))
-	return FALSE;
+      if (bfd_write (hdr, sizeof (*hdr), archive) != sizeof (*hdr))
+	return false;
 
-      if (bfd_bwrite (fullname, len, archive) != len)
-	return FALSE;
+      if (bfd_write (fullname, len, archive) != len)
+	return false;
 
       if (len & 3)
 	{
 	  static const char pad[3] = { 0, 0, 0 };
 
 	  len = 4 - (len & 3);
-	  if (bfd_bwrite (pad, len, archive) != len)
-	    return FALSE;
+	  if (bfd_write (pad, len, archive) != len)
+	    return false;
 	}
     }
   else
     {
-      if (bfd_bwrite (hdr, sizeof (*hdr), archive) != sizeof (*hdr))
-	return FALSE;
+      if (bfd_write (hdr, sizeof (*hdr), archive) != sizeof (*hdr))
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_noarchive_write_ar_hdr (bfd *archive, bfd *abfd ATTRIBUTE_UNUSED)
 {
   return _bfd_bool_bfd_false_error (archive);
@@ -1822,14 +1879,6 @@ hpux_uid_gid_encode (char str[6], long i
 }
 #endif	/* HPUX_LARGE_AR_IDS */
 
-#ifndef HAVE_GETUID
-#define getuid() 0
-#endif
-
-#ifndef HAVE_GETGID
-#define getgid() 0
-#endif
-
 /* Takes a filename, returns an arelt_data for it, or NULL if it can't
    make one.  The filename must refer to a filename in the filesystem.
    The filename field of the ar_hdr will NOT be initialized.  If member
@@ -1841,13 +1890,13 @@ 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)
     {
       /* Assume we just "made" the member, and fake it.  */
       struct bfd_in_memory *bim = (struct bfd_in_memory *) member->iostream;
-      time (&status.st_mtime);
+      status.st_mtime = bfd_get_current_time (0);
       status.st_uid = getuid ();
       status.st_gid = getgid ();
       status.st_mode = 0644;
@@ -1858,6 +1907,15 @@ bfd_ar_hdr_from_filesystem (bfd *abfd, c
       bfd_set_error (bfd_error_system_call);
       return NULL;
     }
+  else
+    {
+      /* The call to stat() above has filled in the st_mtime field
+	 with the real time that the object was modified.  But if
+	 we are trying to generate deterministic archives based upon
+	 the SOURCE_DATE_EPOCH environment variable then we want to
+	 override that.  */
+      status.st_mtime = bfd_get_current_time (status.st_mtime);
+    }
 
   /* If the caller requested that the BFD generate deterministic output,
      fake values for modification time, UID, GID, and file mode.  */
@@ -2083,19 +2141,20 @@ _bfd_noarchive_truncate_arname (bfd *abf
 
 /* The BFD is open for write and has its format set to bfd_archive.  */
 
-bfd_boolean
+bool
 _bfd_write_archive_contents (bfd *arch)
 {
   bfd *current;
   char *etable = NULL;
   bfd_size_type elength = 0;
   const char *ename = NULL;
-  bfd_boolean makemap = bfd_has_map (arch);
+  bool makemap = bfd_has_map (arch);
   /* If no .o's, don't bother to make a map.  */
-  bfd_boolean hasobjects = FALSE;
+  bool hasobjects = false;
   bfd_size_type wrote;
   int tries;
   char *armag;
+  char *buffer = NULL;
 
   /* Verify the viability of all entries; if any of them live in the
      filesystem (as opposed to living in an archive open for input)
@@ -2117,39 +2176,41 @@ _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)
 	{			/* Don't bother if we won't make a map!  */
 	  if ((bfd_check_format (current, bfd_object)))
-	    hasobjects = TRUE;
+	    hasobjects = true;
 	}
     }
 
   if (!BFD_SEND (arch, _bfd_construct_extended_name_table,
 		 (arch, &etable, &elength, &ename)))
-    return FALSE;
+    return false;
 
-  if (bfd_seek (arch, (file_ptr) 0, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (arch, 0, SEEK_SET) != 0)
+    return false;
   armag = ARMAG;
   if (bfd_is_thin_archive (arch))
     armag = ARMAGT;
-  wrote = bfd_bwrite (armag, SARMAG, arch);
+  wrote = bfd_write (armag, SARMAG, arch);
   if (wrote != SARMAG)
-    return FALSE;
+    return false;
 
   if (makemap && hasobjects)
     {
       if (! _bfd_compute_and_write_armap (arch, (unsigned int) elength))
-	return FALSE;
+	return false;
     }
 
   if (elength != 0)
@@ -2161,59 +2222,64 @@ _bfd_write_archive_contents (bfd *arch)
       /* Round size up to even number in archive header.  */
       if (!_bfd_ar_sizepad (hdr.ar_size, sizeof (hdr.ar_size),
 			    (elength + 1) & ~(bfd_size_type) 1))
-	return FALSE;
+	return false;
       memcpy (hdr.ar_fmag, ARFMAG, 2);
-      if ((bfd_bwrite (&hdr, sizeof (struct ar_hdr), arch)
+      if ((bfd_write (&hdr, sizeof (struct ar_hdr), arch)
 	   != sizeof (struct ar_hdr))
-	  || bfd_bwrite (etable, elength, arch) != elength)
-	return FALSE;
+	  || bfd_write (etable, elength, arch) != elength)
+	return false;
       if ((elength % 2) == 1)
 	{
-	  if (bfd_bwrite (&ARFMAG[1], 1, arch) != 1)
-	    return FALSE;
+	  if (bfd_write (&ARFMAG[1], 1, arch) != 1)
+	    return false;
 	}
     }
 
+#define AR_WRITE_BUFFERSIZE (8 * 1024 * 1024)
+
+  /* FIXME: Find a way to test link_info.reduce_memory_overheads
+     and change the buffer size.  */
+  buffer = bfd_malloc (AR_WRITE_BUFFERSIZE);
+  if (buffer == NULL)
+    goto input_err;
+
   for (current = arch->archive_head;
        current != NULL;
        current = current->archive_next)
     {
-      char buffer[DEFAULT_BUFFERSIZE];
       bfd_size_type remaining = arelt_size (current);
 
       /* Write ar header.  */
       if (!_bfd_write_ar_hdr (arch, current))
-	return FALSE;
+	goto input_err;
       if (bfd_is_thin_archive (arch))
 	continue;
-      if (bfd_seek (current, (file_ptr) 0, SEEK_SET) != 0)
+      if (bfd_seek (current, 0, SEEK_SET) != 0)
 	goto input_err;
 
       while (remaining)
 	{
-	  unsigned int amt = DEFAULT_BUFFERSIZE;
+	  size_t amt = AR_WRITE_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;
-	    }
-	  if (bfd_bwrite (buffer, amt, arch) != amt)
-	    return FALSE;
+	  if (bfd_read (buffer, amt, current) != amt)
+	    goto input_err;
+	  if (bfd_write (buffer, amt, arch) != amt)
+	    goto input_err;
 	  remaining -= amt;
 	}
 
       if ((arelt_size (current) % 2) == 1)
 	{
-	  if (bfd_bwrite (&ARFMAG[1], 1, arch) != 1)
-	    return FALSE;
+	  if (bfd_write (&ARFMAG[1], 1, arch) != 1)
+	    goto input_err;
 	}
     }
 
+  free (buffer);
+
   if (makemap && hasobjects)
     {
       /* Verify the timestamp in the archive file.  If it would not be
@@ -2233,30 +2299,30 @@ _bfd_write_archive_contents (bfd *arch)
       while (++tries < 6);
     }
 
-  return TRUE;
+  return true;
 
  input_err:
   bfd_set_input_error (current, bfd_get_error ());
-  return FALSE;
+  free (buffer);
+  return false;
 }
 
 /* Note that the namidx for the first symbol is 0.  */
 
-bfd_boolean
+bool
 _bfd_compute_and_write_armap (bfd *arch, unsigned int elength)
 {
   char *first_name = NULL;
   bfd *current;
-  file_ptr elt_no = 0;
   struct orl *map = NULL;
   unsigned int orl_max = 1024;		/* Fine initial default.  */
   unsigned int orl_count = 0;
   int stridx = 0;
   asymbol **syms = NULL;
   long syms_max = 0;
-  bfd_boolean ret;
-  bfd_size_type amt;
-  static bfd_boolean report_plugin_err = TRUE;
+  bool ret;
+  size_t amt;
+  static bool report_plugin_err = true;
 
   /* Dunno if this is the best place for this info...  */
   if (elength != 0)
@@ -2276,13 +2342,13 @@ _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.  */
   for (current = arch->archive_head;
        current != NULL;
-       current = current->archive_next, elt_no++)
+       current = current->archive_next)
     {
       if (bfd_check_format (current, bfd_object)
 	  && (bfd_get_file_flags (current) & HAS_SYMS) != 0)
@@ -2291,9 +2357,11 @@ _bfd_compute_and_write_armap (bfd *arch,
 	  long symcount;
 	  long src_count;
 
-	  if (current->lto_slim_object && report_plugin_err)
+	  if (bfd_get_lto_type (current) == lto_slim_ir_object
+	      && !bfd_plugin_target_p (current->xvec)
+	      && report_plugin_err)
 	    {
-	      report_plugin_err = FALSE;
+	      report_plugin_err = false;
 	      _bfd_error_handler
 		(_("%pB: plugin needed to handle lto object"),
 		 current);
@@ -2307,8 +2375,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)
@@ -2347,14 +2414,12 @@ _bfd_compute_and_write_armap (bfd *arch,
 			  map = new_map;
 			}
 
-		      if (syms[src_count]->name[0] == '_'
-			  && syms[src_count]->name[1] == '_'
-			  && strcmp (syms[src_count]->name
-				     + (syms[src_count]->name[2] == '_'),
-				     "__gnu_lto_slim") == 0
+		      if (bfd_lto_slim_symbol_p (current,
+						 syms[src_count]->name)
+			  && !bfd_plugin_target_p (current->xvec)
 			  && report_plugin_err)
 			{
-			  report_plugin_err = FALSE;
+			  report_plugin_err = false;
 			  _bfd_error_handler
 			    (_("%pB: plugin needed to handle lto object"),
 			     current);
@@ -2389,27 +2454,23 @@ _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);
 
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 _bfd_bsd_write_armap (bfd *arch,
 		      unsigned int elength,
 		      struct orl *map,
@@ -2477,9 +2538,14 @@ _bfd_bsd_write_armap (bfd *arch,
     {
       struct stat statbuf;
 
-      if (stat (arch->filename, &statbuf) == 0)
-	bfd_ardata (arch)->armap_timestamp = (statbuf.st_mtime
-					      + ARMAP_TIME_OFFSET);
+      if (stat (bfd_get_filename (arch), &statbuf) == 0)
+	{
+	  /* If asked, replace the time with a deterministic value. */
+	  statbuf.st_mtime = bfd_get_current_time (statbuf.st_mtime);
+
+	  bfd_ardata (arch)->armap_timestamp = (statbuf.st_mtime
+						+ ARMAP_TIME_OFFSET);
+	}
       uid = getuid();
       gid = getgid();
     }
@@ -2493,14 +2559,14 @@ _bfd_bsd_write_armap (bfd *arch,
   _bfd_ar_spacepad (hdr.ar_uid, sizeof (hdr.ar_uid), "%ld", uid);
   _bfd_ar_spacepad (hdr.ar_gid, sizeof (hdr.ar_gid), "%ld", gid);
   if (!_bfd_ar_sizepad (hdr.ar_size, sizeof (hdr.ar_size), mapsize))
-    return FALSE;
+    return false;
   memcpy (hdr.ar_fmag, ARFMAG, 2);
-  if (bfd_bwrite (&hdr, sizeof (struct ar_hdr), arch)
+  if (bfd_write (&hdr, sizeof (struct ar_hdr), arch)
       != sizeof (struct ar_hdr))
-    return FALSE;
+    return false;
   H_PUT_32 (arch, ranlibsize, temp);
-  if (bfd_bwrite (temp, sizeof (temp), arch) != sizeof (temp))
-    return FALSE;
+  if (bfd_write (temp, sizeof (temp), arch) != sizeof (temp))
+    return false;
 
   firstreal = first;
   current = arch->archive_head;
@@ -2531,47 +2597,48 @@ _bfd_bsd_write_armap (bfd *arch,
       if (firstreal != (file_ptr) offset)
 	{
 	  bfd_set_error (bfd_error_file_truncated);
-	  return FALSE;
+	  return false;
 	}
 
       last_elt = current;
       H_PUT_32 (arch, map[count].namidx, buf);
       H_PUT_32 (arch, firstreal, buf + BSD_SYMDEF_OFFSET_SIZE);
-      if (bfd_bwrite (buf, BSD_SYMDEF_SIZE, arch)
+      if (bfd_write (buf, BSD_SYMDEF_SIZE, arch)
 	  != BSD_SYMDEF_SIZE)
-	return FALSE;
+	return false;
     }
 
   /* Now write the strings themselves.  */
   H_PUT_32 (arch, stringsize, temp);
-  if (bfd_bwrite (temp, sizeof (temp), arch) != sizeof (temp))
-    return FALSE;
+  if (bfd_write (temp, sizeof (temp), arch) != sizeof (temp))
+    return false;
   for (count = 0; count < orl_count; count++)
     {
       size_t len = strlen (*map[count].name) + 1;
 
-      if (bfd_bwrite (*map[count].name, len, arch) != len)
-	return FALSE;
+      if (bfd_write (*map[count].name, len, arch) != len)
+	return false;
     }
 
   /* The spec sez this should be a newline.  But in order to be
      bug-compatible for sun's ar we use a null.  */
   if (padit)
     {
-      if (bfd_bwrite ("", 1, arch) != 1)
-	return FALSE;
+      if (bfd_write ("", 1, arch) != 1)
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* At the end of archive file handling, update the timestamp in the
-   file, so the linker will accept it.
+   file, so older linkers will accept it.  (This does not apply to
+   ld.bfd or ld.gold).
 
    Return TRUE if the timestamp was OK, or an unusual problem happened.
    Return FALSE if we updated the timestamp.  */
 
-bfd_boolean
+bool
 _bfd_archive_bsd_update_armap_timestamp (bfd *arch)
 {
   struct stat archstat;
@@ -2579,7 +2646,7 @@ _bfd_archive_bsd_update_armap_timestamp
 
   /* If creating deterministic archives, just leave the timestamp as-is.  */
   if ((arch->flags & BFD_DETERMINISTIC_OUTPUT) != 0)
-    return TRUE;
+    return true;
 
   /* Flush writes, get last-write timestamp from file, and compare it
      to the timestamp IN the file.  */
@@ -2589,12 +2656,19 @@ _bfd_archive_bsd_update_armap_timestamp
       bfd_perror (_("Reading archive file mod timestamp"));
 
       /* Can't read mod time for some reason.  */
-      return TRUE;
+      return true;
     }
+
   if (((long) archstat.st_mtime) <= bfd_ardata (arch)->armap_timestamp)
     /* OK by the linker's rules.  */
-    return TRUE;
+    return true;
 
+  if (getenv ("SOURCE_DATE_EPOCH") != NULL
+      && bfd_ardata (arch)->armap_timestamp == bfd_get_current_time (0) + ARMAP_TIME_OFFSET)
+    /* If the archive's timestamp has been set to SOURCE_DATE_EPOCH
+       then leave it as-is.  */
+    return true;
+  
   /* Update the timestamp.  */
   bfd_ardata (arch)->armap_timestamp = archstat.st_mtime + ARMAP_TIME_OFFSET;
 
@@ -2607,17 +2681,17 @@ _bfd_archive_bsd_update_armap_timestamp
   bfd_ardata (arch)->armap_datepos = (SARMAG
 				      + offsetof (struct ar_hdr, ar_date[0]));
   if (bfd_seek (arch, bfd_ardata (arch)->armap_datepos, SEEK_SET) != 0
-      || (bfd_bwrite (hdr.ar_date, sizeof (hdr.ar_date), arch)
+      || (bfd_write (hdr.ar_date, sizeof (hdr.ar_date), arch)
 	  != sizeof (hdr.ar_date)))
     {
       bfd_perror (_("Writing updated armap timestamp"));
 
       /* Some error while writing.  */
-      return TRUE;
+      return true;
     }
 
   /* We updated the timestamp successfully.  */
-  return FALSE;
+  return false;
 }
 
 /* A coff armap looks like :
@@ -2633,7 +2707,7 @@ _bfd_archive_bsd_update_armap_timestamp
 
    symbol name n-1  */
 
-bfd_boolean
+bool
 _bfd_coff_write_armap (bfd *arch,
 		       unsigned int elength,
 		       struct orl *map,
@@ -2696,7 +2770,7 @@ _bfd_coff_write_armap (bfd *arch,
   memset (&hdr, ' ', sizeof (struct ar_hdr));
   hdr.ar_name[0] = '/';
   if (!_bfd_ar_sizepad (hdr.ar_size, sizeof (hdr.ar_size), mapsize))
-    return FALSE;
+    return false;
   _bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%ld",
 		    ((arch->flags & BFD_DETERMINISTIC_OUTPUT) == 0
 		     ? time (NULL) : 0));
@@ -2707,12 +2781,12 @@ _bfd_coff_write_armap (bfd *arch,
   memcpy (hdr.ar_fmag, ARFMAG, 2);
 
   /* Write the ar header for this item and the number of symbols.  */
-  if (bfd_bwrite (&hdr, sizeof (struct ar_hdr), arch)
+  if (bfd_write (&hdr, sizeof (struct ar_hdr), arch)
       != sizeof (struct ar_hdr))
-    return FALSE;
+    return false;
 
   if (!bfd_write_bigendian_4byte_int (arch, symbol_count))
-    return FALSE;
+    return false;
 
   /* Two passes, first write the file offsets for each symbol -
      remembering that each offset is on a two byte boundary.  */
@@ -2736,10 +2810,10 @@ _bfd_coff_write_armap (bfd *arch,
 	  if (archive_member_file_ptr != (file_ptr) offset)
 	    {
 	      bfd_set_error (bfd_error_file_truncated);
-	      return FALSE;
+	      return false;
 	    }
 	  if (!bfd_write_bigendian_4byte_int (arch, offset))
-	    return FALSE;
+	    return false;
 	  count++;
 	}
       archive_member_file_ptr += sizeof (struct ar_hdr);
@@ -2758,22 +2832,22 @@ _bfd_coff_write_armap (bfd *arch,
     {
       size_t len = strlen (*map[count].name) + 1;
 
-      if (bfd_bwrite (*map[count].name, len, arch) != len)
-	return FALSE;
+      if (bfd_write (*map[count].name, len, arch) != len)
+	return false;
     }
 
   /* The spec sez this should be a newline.  But in order to be
      bug-compatible for arc960 we use a null.  */
   if (padit)
     {
-      if (bfd_bwrite ("", 1, arch) != 1)
-	return FALSE;
+      if (bfd_write ("", 1, arch) != 1)
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_noarchive_write_armap
     (bfd *arch ATTRIBUTE_UNUSED,
      unsigned int elength ATTRIBUTE_UNUSED,
@@ -2781,7 +2855,7 @@ _bfd_noarchive_write_armap
      unsigned int orl_count ATTRIBUTE_UNUSED,
      int stridx ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 static int
@@ -2817,9 +2891,18 @@ _bfd_unlink_from_archive_parent (bfd *ab
     }
 }
 
-bfd_boolean
+bool
 _bfd_archive_close_and_cleanup (bfd *abfd)
 {
+  if (bfd_write_p (abfd) && abfd->format == bfd_archive)
+    {
+      bfd *current;
+      while ((current = abfd->archive_head) != NULL)
+	{
+	  abfd->archive_head = current->archive_next;
+	  bfd_close_all_done (current);
+	}
+    }
   if (bfd_read_p (abfd) && abfd->format == bfd_archive)
     {
       bfd *nbfd;
@@ -2840,6 +2923,10 @@ _bfd_archive_close_and_cleanup (bfd *abf
 	  htab_delete (htab);
 	  bfd_ardata (abfd)->cache = NULL;
 	}
+
+      /* Close the archive plugin file descriptor if needed.  */
+      if (abfd->archive_plugin_fd > 0)
+	close (abfd->archive_plugin_fd);
     }
 
   _bfd_unlink_from_archive_parent (abfd);
@@ -2847,5 +2934,5 @@ _bfd_archive_close_and_cleanup (bfd *abf
   if (abfd->is_linker_output)
     (*abfd->link.hash->hash_table_free) (abfd);
 
-  return TRUE;
+  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.20200303/bfd/archures.c ./bfd/archures.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/archures.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/archures.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for architectures.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 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.
@@ -173,6 +173,7 @@ DESCRIPTION
 .#define bfd_mach_mips16000		16000
 .#define bfd_mach_mips16		16
 .#define bfd_mach_mips5			5
+.#define bfd_mach_mips_allegrex		10111431 {* octal 'AL', 31.  *}
 .#define bfd_mach_mips_loongson_2e	3001
 .#define bfd_mach_mips_loongson_2f	3002
 .#define bfd_mach_mips_gs464		3003
@@ -205,16 +206,6 @@ DESCRIPTION
 .#define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
 .#define bfd_mach_x86_64_intel_syntax	(bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
 .#define bfd_mach_x64_32_intel_syntax	(bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
-.  bfd_arch_l1om,      {* Intel L1OM.  *}
-.#define bfd_mach_l1om			(1 << 5)
-.#define bfd_mach_l1om_intel_syntax	(bfd_mach_l1om | bfd_mach_i386_intel_syntax)
-.  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 +223,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
@@ -342,6 +332,7 @@ DESCRIPTION
 .#define bfd_mach_arm_8M_BASE   25
 .#define bfd_mach_arm_8M_MAIN   26
 .#define bfd_mach_arm_8_1M_MAIN 27
+.#define bfd_mach_arm_9         28
 .  bfd_arch_nds32,     {* Andes NDS32.  *}
 .#define bfd_mach_n1		1
 .#define bfd_mach_n1h		2
@@ -355,7 +346,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 +407,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
@@ -497,22 +488,44 @@ DESCRIPTION
 .#define bfd_mach_msp46		46
 .#define bfd_mach_msp47		47
 .#define bfd_mach_msp54		54
-.  bfd_arch_xc16x,     {* Infineon's XC16X Series.  *}
-.#define bfd_mach_xc16x		1
-.#define bfd_mach_xc16xl	2
-.#define bfd_mach_xc16xs	3
 .  bfd_arch_xgate,     {* Freescale XGATE.  *}
 .#define bfd_mach_xgate		1
 .  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.  *}
+.  bfd_arch_kvx,        {* Kalray VLIW core of the MPPA processor family *}
+.#define bfd_mach_kv3_unknown       0
+.#define bfd_mach_kv3_1             1
+.#define bfd_mach_kv3_1_64          2
+.#define bfd_mach_kv3_1_usr         3
+.#define bfd_mach_kv3_2             4
+.#define bfd_mach_kv3_2_64          5
+.#define bfd_mach_kv3_2_usr         6
+.#define bfd_mach_kv4_1             7
+.#define bfd_mach_kv4_1_64          8
+.#define bfd_mach_kv4_1_usr         9
 .  bfd_arch_tilepro,   {* Tilera TILEPro.  *}
 .  bfd_arch_tilegx,    {* Tilera TILE-Gx.  *}
 .#define bfd_mach_tilepro	1
@@ -520,11 +533,9 @@ 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
-.#define bfd_mach_nios2r1	1
-.#define bfd_mach_nios2r2	2
+.#define bfd_mach_aarch64_llp64 64
 .  bfd_arch_visium,    {* Visium.  *}
 .#define bfd_mach_visium	1
 .  bfd_arch_wasm32,    {* WebAssembly.  *}
@@ -543,6 +554,26 @@ DESCRIPTION
 .#define bfd_mach_ck803		5
 .#define bfd_mach_ck807		6
 .#define bfd_mach_ck810		7
+.#define bfd_mach_ck860		8
+.  bfd_arch_loongarch,       {* LoongArch *}
+.#define bfd_mach_loongarch32	1
+.#define bfd_mach_loongarch64	2
+.  bfd_arch_amdgcn,     {* AMDGCN *}
+.#define bfd_mach_amdgcn_unknown 0x000
+.#define bfd_mach_amdgcn_gfx900  0x02c
+.#define bfd_mach_amdgcn_gfx904  0x02e
+.#define bfd_mach_amdgcn_gfx906  0x02f
+.#define bfd_mach_amdgcn_gfx908  0x030
+.#define bfd_mach_amdgcn_gfx90a  0x03f
+.#define bfd_mach_amdgcn_gfx1010 0x033
+.#define bfd_mach_amdgcn_gfx1011 0x034
+.#define bfd_mach_amdgcn_gfx1012 0x035
+.#define bfd_mach_amdgcn_gfx1030 0x036
+.#define bfd_mach_amdgcn_gfx1031 0x037
+.#define bfd_mach_amdgcn_gfx1032 0x038
+.#define bfd_mach_amdgcn_gfx1100 0x041
+.#define bfd_mach_amdgcn_gfx1101 0x046
+.#define bfd_mach_amdgcn_gfx1102 0x047
 .  bfd_arch_last
 .  };
 */
@@ -569,17 +600,16 @@ DESCRIPTION
 .  {* TRUE if this is the default machine for the architecture.
 .     The default arch should be the first entry for an arch so that
 .     all the entries for that arch can be accessed via <<next>>.  *}
-.  bfd_boolean the_default;
+.  bool the_default;
 .  const struct bfd_arch_info * (*compatible) (const struct bfd_arch_info *,
 .					       const struct bfd_arch_info *);
 .
-.  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
+.  bool (*scan) (const struct bfd_arch_info *, const char *);
 .
 .  {* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
 .     IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
 .     TRUE, the buffer contains code.  *}
-.  void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
-.		  bfd_boolean code);
+.  void *(*fill) (bfd_size_type count, bool is_bigendian, bool code);
 .
 .  const struct bfd_arch_info *next;
 .
@@ -599,6 +629,7 @@ DESCRIPTION
 
 extern const bfd_arch_info_type bfd_aarch64_arch;
 extern const bfd_arch_info_type bfd_alpha_arch;
+extern const bfd_arch_info_type bfd_amdgcn_arch;
 extern const bfd_arch_info_type bfd_arc_arch;
 extern const bfd_arch_info_type bfd_arm_arch;
 extern const bfd_arch_info_type bfd_avr_arch;
@@ -621,9 +652,9 @@ extern const bfd_arch_info_type bfd_iamc
 extern const bfd_arch_info_type bfd_ia64_arch;
 extern const bfd_arch_info_type bfd_ip2k_arch;
 extern const bfd_arch_info_type bfd_iq2000_arch;
-extern const bfd_arch_info_type bfd_k1om_arch;
-extern const bfd_arch_info_type bfd_l1om_arch;
+extern const bfd_arch_info_type bfd_kvx_arch;
 extern const bfd_arch_info_type bfd_lm32_arch;
+extern const bfd_arch_info_type bfd_loongarch_arch;
 extern const bfd_arch_info_type bfd_m32c_arch;
 extern const bfd_arch_info_type bfd_m32r_arch;
 extern const bfd_arch_info_type bfd_m68hc11_arch;
@@ -646,12 +677,10 @@ extern const bfd_arch_info_type bfd_msp4
 extern const bfd_arch_info_type bfd_mt_arch;
 extern const bfd_arch_info_type bfd_nds32_arch;
 extern const bfd_arch_info_type bfd_nfp_arch;
-extern const bfd_arch_info_type bfd_nios2_arch;
 extern const bfd_arch_info_type bfd_ns32k_arch;
 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 +697,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;
@@ -678,7 +706,6 @@ extern const bfd_arch_info_type bfd_visi
 extern const bfd_arch_info_type bfd_wasm32_arch;
 extern const bfd_arch_info_type bfd_xstormy16_arch;
 extern const bfd_arch_info_type bfd_xtensa_arch;
-extern const bfd_arch_info_type bfd_xc16x_arch;
 extern const bfd_arch_info_type bfd_xgate_arch;
 extern const bfd_arch_info_type bfd_z80_arch;
 extern const bfd_arch_info_type bfd_z8k_arch;
@@ -690,6 +717,7 @@ static const bfd_arch_info_type * const
 #else
     &bfd_aarch64_arch,
     &bfd_alpha_arch,
+    &bfd_amdgcn_arch,
     &bfd_arc_arch,
     &bfd_arm_arch,
     &bfd_avr_arch,
@@ -712,9 +740,9 @@ static const bfd_arch_info_type * const
     &bfd_ia64_arch,
     &bfd_ip2k_arch,
     &bfd_iq2000_arch,
-    &bfd_k1om_arch,
-    &bfd_l1om_arch,
+    &bfd_kvx_arch,
     &bfd_lm32_arch,
+    &bfd_loongarch_arch,
     &bfd_m32c_arch,
     &bfd_m32r_arch,
     &bfd_m68hc11_arch,
@@ -737,7 +765,6 @@ static const bfd_arch_info_type * const
     &bfd_mt_arch,
     &bfd_nds32_arch,
     &bfd_nfp_arch,
-    &bfd_nios2_arch,
     &bfd_ns32k_arch,
     &bfd_or1k_arch,
     &bfd_pdp11_arch,
@@ -756,7 +783,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,
@@ -766,7 +792,6 @@ static const bfd_arch_info_type * const
     &bfd_wasm32_arch,
     &bfd_xstormy16_arch,
     &bfd_xtensa_arch,
-    &bfd_xc16x_arch,
     &bfd_xgate_arch,
     &bfd_z80_arch,
     &bfd_z8k_arch,
@@ -843,7 +868,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;
@@ -856,7 +881,7 @@ bfd_arch_list (void)
 	}
     }
 
-  amt = (vec_length + 1) * sizeof (char **);
+  amt = (vec_length + 1) * sizeof (char *);
   name_list = (const char **) bfd_malloc (amt);
   if (name_list == NULL)
     return NULL;
@@ -883,7 +908,7 @@ FUNCTION
 
 SYNOPSIS
 	const bfd_arch_info_type *bfd_arch_get_compatible
-	  (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
+	  (const bfd *abfd, const bfd *bbfd, bool accept_unknowns);
 
 DESCRIPTION
 	Determine whether two BFDs' architectures and machine types
@@ -896,7 +921,7 @@ DESCRIPTION
 const bfd_arch_info_type *
 bfd_arch_get_compatible (const bfd *abfd,
 			 const bfd *bbfd,
-			 bfd_boolean accept_unknowns)
+			 bool accept_unknowns)
 {
   const bfd *ubfd, *kbfd;
 
@@ -916,6 +941,7 @@ bfd_arch_get_compatible (const bfd *abfd
      to assume that they know what they are doing.  */
   if (accept_unknowns
       || ubfd->plugin_format == bfd_plugin_yes
+      || ubfd->plugin_format == bfd_plugin_yes_unused
       || strcmp (bfd_get_target (ubfd), "binary") == 0)
     return kbfd->arch_info;
   return NULL;
@@ -933,11 +959,12 @@ DESCRIPTION
 	architecture of the file.
 
 .extern const bfd_arch_info_type bfd_default_arch_struct;
+.
 */
 
 const bfd_arch_info_type bfd_default_arch_struct =
 {
-  32, 32, 8, bfd_arch_unknown, 0, "unknown", "unknown", 2, TRUE,
+  32, 32, 8, bfd_arch_unknown, 0, "unknown", "unknown", 2, true,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
@@ -966,7 +993,7 @@ FUNCTION
 	bfd_default_set_arch_mach
 
 SYNOPSIS
-	bfd_boolean bfd_default_set_arch_mach
+	bool bfd_default_set_arch_mach
 	  (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
 
 DESCRIPTION
@@ -976,18 +1003,18 @@ DESCRIPTION
 	pointer.
 */
 
-bfd_boolean
+bool
 bfd_default_set_arch_mach (bfd *abfd,
 			   enum bfd_architecture arch,
 			   unsigned long mach)
 {
   abfd->arch_info = bfd_lookup_arch (arch, mach);
   if (abfd->arch_info != NULL)
-    return TRUE;
+    return true;
 
   abfd->arch_info = &bfd_default_arch_struct;
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
 
 /*
@@ -1098,7 +1125,7 @@ INTERNAL_FUNCTION
 	bfd_default_scan
 
 SYNOPSIS
-	bfd_boolean bfd_default_scan
+	bool bfd_default_scan
 	  (const struct bfd_arch_info *info, const char *string);
 
 DESCRIPTION
@@ -1106,7 +1133,7 @@ DESCRIPTION
 	architecture hit and a machine hit.
 */
 
-bfd_boolean
+bool
 bfd_default_scan (const bfd_arch_info_type *info, const char *string)
 {
   const char *ptr_src;
@@ -1119,11 +1146,11 @@ bfd_default_scan (const bfd_arch_info_ty
      default architecture?  */
   if (strcasecmp (string, info->arch_name) == 0
       && info->the_default)
-    return TRUE;
+    return true;
 
   /* Exact match of the machine name (PRINTABLE_NAME)?  */
   if (strcasecmp (string, info->printable_name) == 0)
-    return TRUE;
+    return true;
 
   /* Given that printable_name contains no colon, attempt to match:
      ARCH_NAME [ ":" ] PRINTABLE_NAME?  */
@@ -1137,13 +1164,13 @@ bfd_default_scan (const bfd_arch_info_ty
 	    {
 	      if (strcasecmp (string + strlen_arch_name + 1,
 			      info->printable_name) == 0)
-		return TRUE;
+		return true;
 	    }
 	  else
 	    {
 	      if (strcasecmp (string + strlen_arch_name,
 			      info->printable_name) == 0)
-		return TRUE;
+		return true;
 	    }
 	}
     }
@@ -1156,7 +1183,7 @@ bfd_default_scan (const bfd_arch_info_ty
       if (strncasecmp (string, info->printable_name, colon_index) == 0
 	  && strcasecmp (string + colon_index,
 			 info->printable_name + colon_index + 1) == 0)
-	return TRUE;
+	return true;
     }
 
   /* Given that PRINTABLE_NAME has the form: <arch> ":" <mach>; Do not
@@ -1286,16 +1313,16 @@ bfd_default_scan (const bfd_arch_info_ty
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   if (arch != info->arch)
-    return FALSE;
+    return false;
 
   if (number != info->mach)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /*
@@ -1432,8 +1459,8 @@ INTERNAL_FUNCTION
 
 SYNOPSIS
 	void *bfd_arch_default_fill (bfd_size_type count,
-				     bfd_boolean is_bigendian,
-				     bfd_boolean code);
+				     bool is_bigendian,
+				     bool code);
 
 DESCRIPTION
 	Allocate via bfd_malloc and return a fill buffer of size COUNT.
@@ -1443,8 +1470,8 @@ DESCRIPTION
 
 void *
 bfd_arch_default_fill (bfd_size_type count,
-		       bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
-		       bfd_boolean code ATTRIBUTE_UNUSED)
+		       bool is_bigendian ATTRIBUTE_UNUSED,
+		       bool code ATTRIBUTE_UNUSED)
 {
   void *fill = bfd_malloc (count);
   if (fill != NULL)
@@ -1452,7 +1479,7 @@ bfd_arch_default_fill (bfd_size_type cou
   return fill;
 }
 
-bfd_boolean
+bool
 _bfd_nowrite_set_arch_mach (bfd *abfd,
 			    enum bfd_architecture arch ATTRIBUTE_UNUSED,
 			    unsigned long mach 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.20200303/bfd/arc-plt.def ./bfd/arc-plt.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/arc-plt.def	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/arc-plt.def	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Arc V2 Related PLT entries.
-   Copyright (C) 2016-2019 Free Software Foundation, Inc.
+   Copyright (C) 2016-2025 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.20200303/bfd/arc-plt.h ./bfd/arc-plt.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/arc-plt.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/arc-plt.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ARC-specific header file for PLT support.
-   Copyright (C) 2016-2019 Free Software Foundation, Inc.
+   Copyright (C) 2016-2025 Free Software Foundation, Inc.
    Contributed by Cupertino Miranda (cmiranda@synopsys.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -178,7 +178,7 @@ struct plt_version_t
 #define PLT_ELEM(...)
 #define ENTRY_RELOC(...)
 #define ELEM_RELOC(...)
-struct plt_version_t plt_versions[PLT_MAX] = {
+const struct plt_version_t plt_versions[PLT_MAX] = {
 
 #include "arc-plt.def"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ax_tls.m4 ./bfd/ax_tls.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ax_tls.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/ax_tls.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,71 @@
+# ===========================================================================
+#          https://www.gnu.org/software/autoconf-archive/ax_tls.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_TLS([action-if-found], [action-if-not-found])
+#
+# DESCRIPTION
+#
+#   Provides a test for the compiler support of thread local storage (TLS)
+#   extensions. Defines TLS if it is found. Currently knows about C++11,
+#   GCC/ICC, and MSVC. I think SunPro uses the same as GCC, and Borland
+#   apparently supports either.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Alan Woodland <ajw05@aber.ac.uk>
+#   Copyright (c) 2010 Diego Elio Petteno` <flameeyes@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <https://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 15
+
+AC_DEFUN([AX_TLS], [
+  AC_MSG_CHECKING([for thread local storage (TLS) class])
+  AC_CACHE_VAL([ac_cv_tls],
+   [for ax_tls_keyword in thread_local _Thread_local __thread '__declspec(thread)' none; do
+       AS_CASE([$ax_tls_keyword],
+          [none], [ac_cv_tls=none ; break],
+          [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+              [#include <stdlib.h>],
+              [static  $ax_tls_keyword  int bar;]
+            )],
+            [ac_cv_tls=$ax_tls_keyword ; break],
+            [ac_cv_tls=none]
+          )]
+        )
+    done ]
+  )
+  AC_MSG_RESULT([$ac_cv_tls])
+
+  AS_IF([test "$ac_cv_tls" != "none"],
+    [AC_DEFINE_UNQUOTED([TLS],[$ac_cv_tls],[If the compiler supports a TLS storage class, define it to that here])
+     m4_ifnblank([$1],[$1],[[:]])],
+    [m4_ifnblank([$2],[$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.20200303/bfd/bfd.c ./bfd/bfd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bfd.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/bfd.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic BFD library interface and support routines.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -34,7 +34,16 @@ SECTION
 	contains the major data about the file and pointers
 	to the rest of the data.
 
-CODE_FRAGMENT
+EXTERNAL
+.typedef enum bfd_format
+.  {
+.    bfd_unknown = 0,	{* File format is unknown.  *}
+.    bfd_object,	{* Linker/assembler/compiler output.  *}
+.    bfd_archive,	{* Object archive file.  *}
+.    bfd_core,		{* Core dump.  *}
+.    bfd_type_end	{* Marks the end; don't use it!  *}
+.  }
+.bfd_format;
 .
 .enum bfd_direction
 .  {
@@ -44,11 +53,20 @@ CODE_FRAGMENT
 .    both_direction = 3
 .  };
 .
+.enum bfd_last_io
+.  {
+.    bfd_io_seek = 0,
+.    bfd_io_read = 1,
+.    bfd_io_write = 2,
+.    bfd_io_force = 3
+.  };
+.
 .enum bfd_plugin_format
 .  {
 .    bfd_plugin_unknown = 0,
 .    bfd_plugin_yes = 1,
-.    bfd_plugin_no = 2
+.    bfd_plugin_yes_unused = 2,
+.    bfd_plugin_no = 3
 .  };
 .
 .struct bfd_build_id
@@ -57,6 +75,31 @@ CODE_FRAGMENT
 .    bfd_byte data[1];
 .  };
 .
+.enum bfd_lto_object_type
+.  {
+.    lto_non_object,		{* Not an LTO object.  *}
+.    lto_non_ir_object,		{* An object without LTO IR.  *}
+.    lto_slim_ir_object,	{* A slim LTO IR object.  *}
+.    lto_fat_ir_object,		{* A fat LTO IR object.  *}
+.    lto_mixed_object		{* A mixed LTO IR object.  *}
+.  };
+.
+.struct bfd_mmapped_entry
+.  {
+.    void *addr;
+.    size_t size;
+.  };
+.
+.struct bfd_mmapped
+.  {
+.    struct bfd_mmapped *next;
+.    unsigned int max_entry;
+.    unsigned int next_entry;
+.    struct bfd_mmapped_entry entries[1];
+.  };
+.
+
+CODE_FRAGMENT
 .struct bfd
 .{
 .  {* The filename the application opened the BFD with.  *}
@@ -85,12 +128,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;
 .
@@ -147,8 +184,8 @@ CODE_FRAGMENT
 .#define BFD_TRADITIONAL_FORMAT    0x400
 .
 .  {* This flag indicates that the BFD contents are actually cached
-.     in memory.  If this is set, iostream points to a bfd_in_memory
-.     struct.  *}
+.     in memory.  If this is set, iostream points to a malloc'd
+.     bfd_in_memory struct.  *}
 .#define BFD_IN_MEMORY             0x800
 .
 .  {* This BFD has been created by the linker and doesn't correspond
@@ -182,17 +219,40 @@ CODE_FRAGMENT
 .  {* Put pathnames into archives (non-POSIX).  *}
 .#define BFD_ARCHIVE_FULL_PATH  0x100000
 .
-.  {* Flags bits to be saved in bfd_preserve_save.  *}
-.#define BFD_FLAGS_SAVED \
-.  (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
-.   | BFD_PLUGIN | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON \
-.   | BFD_USE_ELF_STT_COMMON)
+.#define BFD_CLOSED_BY_CACHE    0x200000
+
+.  {* Compress sections in this BFD with SHF_COMPRESSED zstd.  *}
+.#define BFD_COMPRESS_ZSTD      0x400000
+.
+.  {* Don't generate ELF section header.  *}
+.#define BFD_NO_SECTION_HEADER	0x800000
 .
 .  {* Flags bits which are for BFD use only.  *}
 .#define BFD_FLAGS_FOR_BFD_USE_MASK \
 .  (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
 .   | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
-.   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
+.   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON \
+.   | BFD_NO_SECTION_HEADER)
+.
+.  {* 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;
+.
+.  {* POSIX.1-2017 (IEEE Std 1003.1) says of fopen : "When a file is
+.     opened with update mode ('+' as the second or third character in
+.     the mode argument), both input and output may be performed on
+.     the associated stream.  However, the application shall ensure
+.     that output is not directly followed by input without an
+.     intervening call to fflush() or to a file positioning function
+.     (fseek(), fsetpos(), or rewind()), and input is not directly
+.     followed by output without an intervening call to a file
+.     positioning function, unless the input operation encounters
+.     end-of-file."
+.     This field tracks the last IO operation, so that bfd can insert
+.     a seek when IO direction changes.  *}
+.  ENUM_BITFIELD (bfd_last_io) last_io : 2;
 .
 .  {* Is the file descriptor being cached?  That is, can it be closed as
 .     needed, and re-opened when accessed later?  *}
@@ -242,16 +302,25 @@ CODE_FRAGMENT
 .  {* Set if this is a plugin output file.  *}
 .  unsigned int lto_output : 1;
 .
-.  {* 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;
+.
+.  {* LTO object type.  *}
+.  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 3;
+.
+.  {* Set if this BFD is currently being processed by
+.     bfd_check_format_matches.  This is checked by the cache to
+.     avoid closing the BFD in this case.  This should only be
+.     examined or modified while the BFD lock is held.  *}
+.  unsigned int in_format_matches : 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
@@ -270,20 +339,32 @@ CODE_FRAGMENT
 .  {* The last section on the section list.  *}
 .  struct bfd_section *section_last;
 .
+.  {* The object-only section on the section list.  *}
+.  struct bfd_section *object_only_section;
+.
 .  {* The number of sections.  *}
 .  unsigned int section_count;
 .
+.  {* The archive plugin file descriptor.  *}
+.  int archive_plugin_fd;
+.
+.  {* The number of opens on the archive plugin file descriptor.  *}
+.  unsigned int archive_plugin_fd_open_count;
+.
 .  {* A field used by _bfd_generic_link_add_archive_symbols.  This will
 .     be used only for archive elements.  *}
 .  int archive_pass;
 .
+.  {* The total size of memory from bfd_alloc.  *}
+.  bfd_size_type alloc_size;
+.
 .  {* Stuff only useful for object files:
 .     The start address.  *}
 .  bfd_vma start_address;
 .
 .  {* 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 +375,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.  *}
@@ -324,8 +410,6 @@ CODE_FRAGMENT
 .      struct tekhex_data_struct *tekhex_data;
 .      struct elf_obj_tdata *elf_obj_data;
 .      struct mmo_data_struct *mmo_data;
-.      struct sun_core_struct *sun_core_data;
-.      struct sco5_core_struct *sco5_core_data;
 .      struct trad_core_struct *trad_core_data;
 .      struct som_data_struct *som_data;
 .      struct hpux_core_struct *hpux_core_data;
@@ -334,7 +418,6 @@ CODE_FRAGMENT
 .      struct lynx_core_struct *lynx_core_data;
 .      struct osf_core_struct *osf_core_data;
 .      struct cisco_core_struct *cisco_core_data;
-.      struct versados_data_struct *versados_data;
 .      struct netbsd_core_struct *netbsd_core_data;
 .      struct mach_o_data_struct *mach_o_data;
 .      struct mach_o_fat_data_struct *mach_o_fat_data;
@@ -356,15 +439,20 @@ CODE_FRAGMENT
 .
 .  {* For input BFDs, the build ID, if the object has one. *}
 .  const struct bfd_build_id *build_id;
+.
+.  {* For input BFDs, mmapped entries. *}
+.  struct bfd_mmapped *mmapped;
 .};
 .
+
+EXTERNAL
 .static inline const char *
 .bfd_get_filename (const bfd *abfd)
 .{
 .  return abfd->filename;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_get_cacheable (const bfd *abfd)
 .{
 .  return abfd->cacheable;
@@ -376,6 +464,22 @@ CODE_FRAGMENT
 .  return abfd->format;
 .}
 .
+.static inline enum bfd_lto_object_type
+.bfd_get_lto_type (const bfd *abfd)
+.{
+.  return abfd->lto_type;
+.}
+.
+.static inline bool
+.bfd_lto_slim_symbol_p (const bfd *abfd, const char *name)
+.{
+.  return (bfd_get_lto_type (abfd) != lto_non_ir_object
+.	   && name != NULL
+.	   && name[0] == '_'
+.	   && name[1] == '_'
+.	   && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0);
+.}
+.
 .static inline flagword
 .bfd_get_file_flags (const bfd *abfd)
 .{
@@ -412,13 +516,13 @@ CODE_FRAGMENT
 .  return abfd->section_count;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_has_map (const bfd *abfd)
 .{
 .  return abfd->has_armap;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_is_thin_archive (const bfd *abfd)
 .{
 .  return abfd->is_thin_archive;
@@ -431,15 +535,15 @@ CODE_FRAGMENT
 .}
 .
 .{* See note beside bfd_set_section_userdata.  *}
-.static inline bfd_boolean
-.bfd_set_cacheable (bfd * abfd, bfd_boolean val)
+.static inline bool
+.bfd_set_cacheable (bfd * abfd, bool val)
 .{
 .  abfd->cacheable = val;
-.  return TRUE;
+.  return true;
 .}
 .
 .static inline void
-.bfd_set_thin_archive (bfd *abfd, bfd_boolean val)
+.bfd_set_thin_archive (bfd *abfd, bool val)
 .{
 .  abfd->is_thin_archive = val;
 .}
@@ -480,6 +584,8 @@ CODE_FRAGMENT
 .  sy->name = name;
 .}
 .
+.{* For input sections return the original size on disk of the
+.   section.  For output sections return the current size.  *}
 .static inline bfd_size_type
 .bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
 .{
@@ -496,6 +602,17 @@ CODE_FRAGMENT
 .	   / bfd_octets_per_byte (abfd, sec));
 .}
 .
+.{* For input sections return the larger of the current size and the
+.   original size on disk of the section.  For output sections return
+.   the current size.  *}
+.static inline bfd_size_type
+.bfd_get_section_alloc_size (const bfd *abfd, const asection *sec)
+.{
+.  if (abfd->direction != write_direction && sec->rawsize > sec->size)
+.    return sec->rawsize;
+.  return sec->size;
+.}
+.
 .{* Functions to handle insertion and deletion of a bfd's sections.  These
 .   only handle the list pointers, ie. do not adjust section_count,
 .   target_index etc.  *}
@@ -574,7 +691,7 @@ CODE_FRAGMENT
 .    abfd->sections = s;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_section_removed_from_list (const bfd *abfd, const asection *s)
 .{
 .  return s->next ? s->next->prev != s : abfd->section_last != s;
@@ -602,6 +719,12 @@ CODE_FRAGMENT
 #define EXIT_FAILURE 1
 #endif
 
+#ifdef TLS
+#define THREAD_LOCAL TLS
+#else
+#define THREAD_LOCAL
+#endif
+
 
 /* provide storage for subsystem, stack and heap data which may have been
    passed in on the command line.  Ld puts this data into a bfd_link_info
@@ -611,7 +734,7 @@ CODE_FRAGMENT
 
 /*
 INODE
-Error reporting, Miscellaneous, typedef bfd, BFD front end
+Error reporting, Initialization, typedef bfd, BFD front end
 
 SECTION
 	Error reporting
@@ -626,6 +749,8 @@ SECTION
 	The easiest way to report a BFD error to the user is to
 	use <<bfd_perror>>.
 
+	The BFD error is thread-local.
+
 SUBSECTION
 	Type <<bfd_error_type>>
 
@@ -633,7 +758,6 @@ SUBSECTION
 	enumerated type <<bfd_error_type>>.
 
 CODE_FRAGMENT
-.
 .typedef enum bfd_error
 .{
 .  bfd_error_no_error = 0,
@@ -664,10 +788,6 @@ CODE_FRAGMENT
 .
 */
 
-static bfd_error_type bfd_error = bfd_error_no_error;
-static bfd *input_bfd = NULL;
-static bfd_error_type input_error = bfd_error_no_error;
-
 const char *const bfd_errmsgs[] =
 {
   N_("no error"),
@@ -695,6 +815,19 @@ const char *const bfd_errmsgs[] =
   N_("#<invalid error code>")
 };
 
+static THREAD_LOCAL bfd_error_type bfd_error;
+static THREAD_LOCAL char *_bfd_error_buf;
+
+/* Free any data associated with the BFD error.  */
+
+static void
+_bfd_clear_error_data (void)
+{
+  bfd_error = bfd_error_no_error;
+  free (_bfd_error_buf);
+  _bfd_error_buf = NULL;
+}
+
 /*
 FUNCTION
 	bfd_get_error
@@ -753,11 +886,12 @@ bfd_set_input_error (bfd *input, bfd_err
 {
   /* This is an error that occurred during bfd_close when writing an
      archive, but on one of the input files.  */
-  bfd_error = bfd_error_on_input;
-  input_bfd = input;
-  input_error = error_tag;
-  if (input_error >= bfd_error_on_input)
+  _bfd_clear_error_data ();
+  if (error_tag >= bfd_error_on_input)
     abort ();
+  if (bfd_asprintf (_(bfd_errmsgs[bfd_error_on_input]),
+		    bfd_get_filename (input), bfd_errmsg (error_tag)))
+    bfd_error = bfd_error_on_input;
 }
 
 /*
@@ -779,17 +913,7 @@ bfd_errmsg (bfd_error_type error_tag)
   extern int errno;
 #endif
   if (error_tag == bfd_error_on_input)
-    {
-      char *buf;
-      const char *msg = bfd_errmsg (input_error);
-
-      if (asprintf (&buf, _(bfd_errmsgs [error_tag]), input_bfd->filename, msg)
-	  != -1)
-	return buf;
-
-      /* Ick, what to do on out of memory?  */
-      return msg;
-    }
+    return _bfd_error_buf;
 
   if (error_tag == bfd_error_system_call)
     return xstrerror (errno);
@@ -797,7 +921,7 @@ bfd_errmsg (bfd_error_type error_tag)
   if (error_tag > bfd_error_invalid_error_code)
     error_tag = bfd_error_invalid_error_code;	/* sanity check */
 
-  return _(bfd_errmsgs [error_tag]);
+  return _(bfd_errmsgs[error_tag]);
 }
 
 /*
@@ -827,6 +951,40 @@ bfd_perror (const char *message)
 }
 
 /*
+INTERNAL_FUNCTION
+	bfd_asprintf
+
+SYNOPSIS
+	char *bfd_asprintf (const char *fmt, ...);
+
+DESCRIPTION
+	Primarily for error reporting, this function is like
+	libiberty's xasprintf except that it can return NULL on no
+	memory and the returned string should not be freed.  Uses a
+	thread-local malloc'd buffer managed by libbfd, _bfd_error_buf.
+	Be aware that a call to this function frees the result of any
+	previous call.  bfd_errmsg (bfd_error_on_input) also calls
+	this function.
+*/
+
+char *
+bfd_asprintf (const char *fmt, ...)
+{
+  free (_bfd_error_buf);
+  _bfd_error_buf = NULL;
+  va_list ap;
+  va_start (ap, fmt);
+  int count = vasprintf (&_bfd_error_buf, fmt, ap);
+  va_end (ap);
+  if (count == -1)
+    {
+      bfd_set_error (bfd_error_no_memory);
+      _bfd_error_buf = NULL;
+    }
+  return _bfd_error_buf;
+}
+
+/*
 SUBSECTION
 	BFD error handler
 
@@ -837,7 +995,6 @@ SUBSECTION
 	The BFD error handler acts like vprintf.
 
 CODE_FRAGMENT
-.
 .typedef void (*bfd_error_handler_type) (const char *, va_list);
 .
 */
@@ -868,6 +1025,10 @@ union _bfd_doprnt_args
   } type;
 };
 
+/* Maximum number of _bfd_error_handler args.  Don't increase this
+   without changing the code handling positional parameters.  */
+#define MAX_ARGS 9
+
 /* This macro and _bfd_doprnt taken from libiberty _doprnt.c, tidied a
    little and extended to handle '%pA', '%pB' and positional parameters.  */
 
@@ -875,11 +1036,17 @@ union _bfd_doprnt_args
   do								\
     {								\
       TYPE value = (TYPE) args[arg_no].FIELD;			\
-      result = fprintf (stream, specifier, value);		\
+      result = print (stream, specifier, value);		\
     } while (0)
 
+/*
+CODE_FRAGMENT
+.typedef int (*bfd_print_callback) (void *, const char *, ...);
+*/
+
 static int
-_bfd_doprnt (FILE *stream, const char *format, union _bfd_doprnt_args *args)
+_bfd_doprnt (bfd_print_callback print, void *stream, const char *format,
+	     union _bfd_doprnt_args *args)
 {
   const char *ptr = format;
   char specifier[128];
@@ -895,14 +1062,14 @@ _bfd_doprnt (FILE *stream, const char *f
 	  /* While we have regular characters, print them.  */
 	  char *end = strchr (ptr, '%');
 	  if (end != NULL)
-	    result = fprintf (stream, "%.*s", (int) (end - ptr), ptr);
+	    result = print (stream, "%.*s", (int) (end - ptr), ptr);
 	  else
-	    result = fprintf (stream, "%s", ptr);
+	    result = print (stream, "%s", ptr);
 	  ptr += result;
 	}
       else if (ptr[1] == '%')
 	{
-	  fputc ('%', stream);
+	  print (stream, "%%");
 	  result = 1;
 	  ptr += 2;
 	}
@@ -924,8 +1091,14 @@ _bfd_doprnt (FILE *stream, const char *f
 	      ptr += 2;
 	    }
 
+	  /* There is a clash between Microsoft's non-standard I64
+	     and I32 integer length modifiers and glibc's
+	     non-standard I flag.  */
+	  const char *printf_flag_chars
+	    = sizeof PRId64 == sizeof "I64d" ? "-+ #0'" : "-+ #0'I";
+
 	  /* Move past flags.  */
-	  while (strchr ("-+ #0'I", *ptr))
+	  while (strchr (printf_flag_chars, *ptr))
 	    *sptr++ = *ptr++;
 
 	  if (*ptr == '*')
@@ -975,6 +1148,22 @@ _bfd_doprnt (FILE *stream, const char *f
 		while (ISDIGIT (*ptr))
 		  *sptr++ = *ptr++;
 	    }
+	  if (sizeof PRId64 == sizeof "I64d" && *ptr =='I')
+	    {
+	      if (ptr[1] == '6' && ptr[2] == '4')
+		{
+		  wide_width = 3;
+		  *sptr++ = *ptr++;
+		  *sptr++ = *ptr++;
+		  *sptr++ = *ptr++;
+		}
+	      else if (ptr[1] == '3' && ptr[2] == '2')
+		{
+		  *sptr++ = *ptr++;
+		  *sptr++ = *ptr++;
+		  *sptr++ = *ptr++;
+		}
+	    }
 	  while (strchr ("hlL", *ptr))
 	    {
 	      switch (*ptr)
@@ -1026,20 +1215,18 @@ _bfd_doprnt (FILE *stream, const char *f
 			PRINT_TYPE (long, l);
 			break;
 		      case 2:
+			if (sizeof PRId64 == sizeof "I64d")
+			  {
+			    /* Convert any %ll to %I64.  */
+			    sptr[-3] = 'I';
+			    sptr[-2] = '6';
+			    sptr[-1] = '4';
+			    *sptr++ = ptr[-1];
+			    *sptr = '\0';
+			  }
+			/* Fall through.  */
 		      default:
-#if defined (__MSVCRT__)
-			sptr[-3] = 'I';
-			sptr[-2] = '6';
-			sptr[-1] = '4';
-			*sptr++ = ptr[-1];
-			*sptr = '\0';
-#endif
-#if defined (__GNUC__) || defined (HAVE_LONG_LONG)
 			PRINT_TYPE (long long, ll);
-#else
-			/* Fake it and hope for the best.  */
-			PRINT_TYPE (long, l);
-#endif
 			break;
 		      }
 		  }
@@ -1054,14 +1241,7 @@ _bfd_doprnt (FILE *stream, const char *f
 		if (wide_width == 0)
 		  PRINT_TYPE (double, d);
 		else
-		  {
-#if defined (__GNUC__) || defined (HAVE_LONG_DOUBLE)
-		    PRINT_TYPE (long double, ld);
-#else
-		    /* Fake it and hope for the best.  */
-		    PRINT_TYPE (double, d);
-#endif
-		  }
+		  PRINT_TYPE (long double, ld);
 	      }
 	      break;
 	    case 's':
@@ -1093,9 +1273,9 @@ _bfd_doprnt (FILE *stream, const char *f
 								 sec)) != NULL)
 		    group = ci->name;
 		  if (group != NULL)
-		    result = fprintf (stream, "%s[%s]", sec->name, group);
+		    result = print (stream, "%s[%s]", sec->name, group);
 		  else
-		    result = fprintf (stream, "%s", sec->name);
+		    result = print (stream, "%s", sec->name);
 		}
 	      else if (*ptr == 'B')
 		{
@@ -1109,11 +1289,11 @@ _bfd_doprnt (FILE *stream, const char *f
 		    abort ();
 		  else if (abfd->my_archive
 			   && !bfd_is_thin_archive (abfd->my_archive))
-		    result = fprintf (stream, "%s(%s)",
-				      abfd->my_archive->filename,
-				      abfd->filename);
+		    result = print (stream, "%s(%s)",
+				    bfd_get_filename (abfd->my_archive),
+				    bfd_get_filename (abfd));
 		  else
-		    result = fprintf (stream, "%s", abfd->filename);
+		    result = print (stream, "%s", bfd_get_filename (abfd));
 		}
 	      else
 		PRINT_TYPE (void *, p);
@@ -1134,11 +1314,14 @@ _bfd_doprnt (FILE *stream, const char *f
 /* First pass over FORMAT to gather ARGS.  Returns number of args.  */
 
 static unsigned int
-_bfd_doprnt_scan (const char *format, union _bfd_doprnt_args *args)
+_bfd_doprnt_scan (const char *format, va_list ap, union _bfd_doprnt_args *args)
 {
   const char *ptr = format;
   unsigned int arg_count = 0;
 
+  for (unsigned int i = 0; i < MAX_ARGS; i++)
+    args[i].type = Bad;
+
   while (*ptr != '\0')
     {
       if (*ptr != '%')
@@ -1165,8 +1348,14 @@ _bfd_doprnt_scan (const char *format, un
 	      ptr += 2;
 	    }
 
+	  /* There is a clash between Microsoft's non-standard I64
+	     and I32 integer length modifiers and glibc's
+	     non-standard I flag.  */
+	  const char *printf_flag_chars
+	    = sizeof PRId64 == sizeof "I64d" ? "-+ #0'" : "-+ #0'I";
+
 	  /* Move past flags.  */
-	  while (strchr ("-+ #0'I", *ptr))
+	  while (strchr (printf_flag_chars, *ptr))
 	    ptr++;
 
 	  if (*ptr == '*')
@@ -1180,7 +1369,7 @@ _bfd_doprnt_scan (const char *format, un
 		  arg_index = *ptr - '1';
 		  ptr += 2;
 		}
-	      if (arg_index >= 9)
+	      if (arg_index >= MAX_ARGS)
 		abort ();
 	      args[arg_index].type = Int;
 	      arg_count++;
@@ -1205,7 +1394,7 @@ _bfd_doprnt_scan (const char *format, un
 		      arg_index = *ptr - '1';
 		      ptr += 2;
 		    }
-		  if (arg_index >= 9)
+		  if (arg_index >= MAX_ARGS)
 		    abort ();
 		  args[arg_index].type = Int;
 		  arg_count++;
@@ -1215,6 +1404,17 @@ _bfd_doprnt_scan (const char *format, un
 		while (ISDIGIT (*ptr))
 		  ptr++;
 	    }
+
+	  if (sizeof PRId64 == sizeof "I64d" && *ptr =='I')
+	    {
+	      if (ptr[1] == '6' && ptr[2] == '4')
+		{
+		  wide_width = 3;
+		  ptr += 3;
+		}
+	      else if (ptr[1] == '3' && ptr[2] == '2')
+		ptr += 3;
+	    }
 	  while (strchr ("hlL", *ptr))
 	    {
 	      switch (*ptr)
@@ -1263,11 +1463,7 @@ _bfd_doprnt_scan (const char *format, un
 			break;
 		      case 2:
 		      default:
-#if defined (__GNUC__) || defined (HAVE_LONG_LONG)
 			arg_type = LongLong;
-#else
-			arg_type = Long;
-#endif
 			break;
 		      }
 		  }
@@ -1282,13 +1478,7 @@ _bfd_doprnt_scan (const char *format, un
 		if (wide_width == 0)
 		  arg_type = Double;
 		else
-		  {
-#if defined (__GNUC__) || defined (HAVE_LONG_DOUBLE)
-		    arg_type = LongDouble;
-#else
-		    arg_type = Double;
-#endif
-		  }
+		  arg_type = LongDouble;
 	      }
 	      break;
 	    case 's':
@@ -1303,27 +1493,14 @@ _bfd_doprnt_scan (const char *format, un
 	      abort();
 	    }
 
-	  if (arg_no >= 9)
+	  if (arg_no >= MAX_ARGS)
 	    abort ();
 	  args[arg_no].type = arg_type;
 	  arg_count++;
 	}
     }
 
-  return arg_count;
-}
-
-static void
-error_handler_internal (const char *fmt, va_list ap)
-{
-  unsigned int i, arg_count;
-  union _bfd_doprnt_args args[9];
-
-  for (i = 0; i < sizeof (args) / sizeof (args[0]); i++)
-    args[i].type = Bad;
-
-  arg_count = _bfd_doprnt_scan (fmt, args);
-  for (i = 0; i < arg_count; i++)
+  for (unsigned int i = 0; i < arg_count; i++)
     {
       switch (args[i].type)
 	{
@@ -1350,15 +1527,54 @@ error_handler_internal (const char *fmt,
 	}
     }
 
+  return arg_count;
+}
+
+static void
+_bfd_print (bfd_print_callback print_func, void *stream,
+	    const char *fmt, va_list ap)
+{
+  union _bfd_doprnt_args args[MAX_ARGS];
+
+  _bfd_doprnt_scan (fmt, ap, args);
+  _bfd_doprnt (print_func, stream, fmt, args);
+}
+
+/*
+FUNCTION
+	bfd_print_error
+
+SYNOPSIS
+	void bfd_print_error (bfd_print_callback print_func,
+	  void *stream, const char *fmt, va_list ap);
+
+DESCRIPTION
+
+	This formats FMT and AP according to BFD "printf" rules,
+	sending the output to STREAM by repeated calls to PRINT_FUNC.
+	PRINT_FUNC is a printf-like function; it does not need to
+	implement the BFD printf format extensions.  This can be used
+	in a callback that is set via bfd_set_error_handler to turn
+	the error into ordinary output.
+*/
+
+void
+bfd_print_error (bfd_print_callback print_func, void *stream,
+		 const char *fmt, va_list ap)
+{
+  print_func (stream, "%s: ", _bfd_get_error_program_name ());
+  _bfd_print (print_func, stream, fmt, ap);
+}
+
+/* The standard error handler that prints to stderr.  */
+
+static void
+error_handler_fprintf (const char *fmt, va_list ap)
+{
   /* PR 4992: Don't interrupt output being sent to stdout.  */
   fflush (stdout);
 
-  if (_bfd_error_program_name != NULL)
-    fprintf (stderr, "%s: ", _bfd_error_program_name);
-  else
-    fprintf (stderr, "BFD: ");
-
-  _bfd_doprnt (stderr, fmt, args);
+  bfd_print_error ((bfd_print_callback) fprintf, stderr, fmt, ap);
 
   /* On AIX, putc is implemented as a macro that triggers a -Wunused-value
      warning, so use the fputc function to avoid it.  */
@@ -1366,13 +1582,156 @@ error_handler_internal (const char *fmt,
   fflush (stderr);
 }
 
+/* Control printing to a string buffer.  */
+struct buf_stream
+{
+  char *ptr;
+  int left;
+};
+
+/* An fprintf like function that instead prints to a string buffer.  */
+
+static int
+err_sprintf (void *stream, const char *fmt, ...)
+{
+  struct buf_stream *s = stream;
+  va_list ap;
+
+  va_start (ap, fmt);
+  int total = vsnprintf (s->ptr, s->left, fmt, ap);
+  va_end (ap);
+  if (total < 0)
+    ;
+  else if (total > s->left)
+    {
+      s->ptr += s->left;
+      s->left = 0;
+    }
+  else
+    {
+      s->ptr += total;
+      s->left -= total;
+    }
+  return total;
+}
+
+/*
+INTERNAL
+.{* Cached _bfd_check_format messages are put in this.  *}
+.struct per_xvec_message
+.{
+.  struct per_xvec_message *next;
+.  char message[];
+.};
+.
+.{* A list of per_xvec_message objects.  The targ field indicates
+.   which xvec this list holds; PER_XVEC_NO_TARGET is only set for the
+.   root of the list and indicates that the entry isn't yet used.  The
+.   abfd field is only needed in the root entry of the list.  *}
+.struct per_xvec_messages
+.{
+.  bfd *abfd;
+.  const bfd_target *targ;
+.  struct per_xvec_message *messages;
+.  struct per_xvec_messages *next;
+.};
+.
+.#define PER_XVEC_NO_TARGET ((const bfd_target *) -1)
+*/
+
+/* Helper function to find or allocate the correct per-xvec object
+   when emitting a message.  */
+
+static struct per_xvec_message *
+_bfd_per_xvec_warn (struct per_xvec_messages *messages, size_t alloc)
+{
+  const bfd_target *targ = messages->abfd->xvec;
+
+  struct per_xvec_messages *prev = NULL;
+  struct per_xvec_messages *iter = messages;
+
+  if (iter->targ == PER_XVEC_NO_TARGET)
+    iter->targ = targ;
+  else
+    for (; iter != NULL; iter = iter->next)
+      {
+	if (iter->targ == targ)
+	  break;
+	prev = iter;
+      }
+
+  if (iter == NULL)
+    {
+      iter = bfd_malloc (sizeof (*iter));
+      if (iter == NULL)
+	return NULL;
+      iter->abfd = messages->abfd;
+      iter->targ = targ;
+      iter->messages = NULL;
+      iter->next = NULL;
+      prev->next = iter;
+    }
+
+  struct per_xvec_message **m = &iter->messages;
+  int count = 0;
+  while (*m)
+    {
+      m = &(*m)->next;
+      count++;
+    }
+  /* Anti-fuzzer measure.  Don't cache more than 5 messages.  */
+  if (count < 5)
+    {
+      *m = bfd_malloc (sizeof (**m) + alloc);
+      if (*m != NULL)
+	(*m)->next = NULL;
+    }
+  return *m;
+}
+
+/* Communicate the error-message container processed by
+   bfd_check_format_matches to the error handling function
+   error_handler_sprintf.  When non-NULL, _bfd_error_handler will call
+   error_handler_sprintf; when NULL, _bfd_error_internal will be used
+   instead.  */
+
+static THREAD_LOCAL struct per_xvec_messages *error_handler_messages;
+
+/* A special value for error_handler_messages that indicates that the
+   error should simply be ignored.  */
+#define IGNORE_ERROR_MESSAGES ((struct per_xvec_messages *) -1)
+
+/* An error handler that prints to a string, then dups that string to
+   a per-xvec cache.  */
+
+static void
+error_handler_sprintf (const char *fmt, va_list ap)
+{
+  char error_buf[1024];
+  struct buf_stream error_stream;
+
+  error_stream.ptr = error_buf;
+  error_stream.left = sizeof (error_buf);
+
+  _bfd_print (err_sprintf, &error_stream, fmt, ap);
+
+  size_t len = error_stream.ptr - error_buf;
+  struct per_xvec_message *warn
+    = _bfd_per_xvec_warn (error_handler_messages, len + 1);
+  if (warn)
+    {
+      memcpy (warn->message, error_buf, len);
+      warn->message[len] = 0;
+    }
+}
+
 /* This is a function pointer to the routine which should handle BFD
    error messages.  It is called when a BFD routine encounters an
    error for which it wants to print a message.  Going through a
    function pointer permits a program linked against BFD to intercept
    the messages and deal with them itself.  */
 
-static bfd_error_handler_type _bfd_error_internal = error_handler_internal;
+static bfd_error_handler_type _bfd_error_internal = error_handler_fprintf;
 
 /*
 FUNCTION
@@ -1400,7 +1759,14 @@ _bfd_error_handler (const char *fmt, ...
   va_list ap;
 
   va_start (ap, fmt);
-  _bfd_error_internal (fmt, ap);
+  if (error_handler_messages == IGNORE_ERROR_MESSAGES)
+    {
+      /* Nothing.  */
+    }
+  else if (error_handler_messages != NULL)
+    error_handler_sprintf (fmt, ap);
+  else
+    _bfd_error_internal (fmt, ap);
   va_end (ap);
 }
 
@@ -1427,6 +1793,49 @@ bfd_set_error_handler (bfd_error_handler
 }
 
 /*
+INTERNAL_FUNCTION
+	_bfd_set_error_handler_caching
+
+SYNOPSIS
+	struct per_xvec_messages *_bfd_set_error_handler_caching (struct per_xvec_messages *);
+
+DESCRIPTION
+	Set the BFD error handler function to one that stores messages
+	to the per_xvec_messages object.  Returns the previous object
+	to which messages are stored.  Note that two sequential calls
+	to this with a non-NULL argument will cause output to be
+	dropped, rather than gathered.
+*/
+
+struct per_xvec_messages *
+_bfd_set_error_handler_caching (struct per_xvec_messages *messages)
+{
+  struct per_xvec_messages *old = error_handler_messages;
+  if (old == NULL)
+    error_handler_messages = messages;
+  else
+    error_handler_messages = IGNORE_ERROR_MESSAGES;
+  return old;
+}
+
+/*
+INTERNAL_FUNCTION
+	_bfd_restore_error_handler_caching
+
+SYNOPSIS
+	void _bfd_restore_error_handler_caching (struct per_xvec_messages *);
+
+DESCRIPTION
+	Reset the BFD error handler object to an earlier value.
+*/
+
+void
+_bfd_restore_error_handler_caching (struct per_xvec_messages *old)
+{
+  error_handler_messages = old;
+}
+
+/*
 FUNCTION
 	bfd_set_error_program_name
 
@@ -1447,6 +1856,25 @@ bfd_set_error_program_name (const char *
 }
 
 /*
+INTERNAL_FUNCTION
+	_bfd_get_error_program_name
+
+SYNOPSIS
+	const char *_bfd_get_error_program_name (void);
+
+DESCRIPTION
+	Get the program name used when printing a BFD error.
+*/
+
+const char *
+_bfd_get_error_program_name (void)
+{
+  if (_bfd_error_program_name != NULL)
+    return _bfd_error_program_name;
+  return "BFD";
+}
+
+/*
 SUBSECTION
 	BFD assert handler
 
@@ -1459,7 +1887,6 @@ SUBSECTION
 	_bfd_error_handler and continues.
 
 CODE_FRAGMENT
-.
 .typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
 .					  const char *bfd_version,
 .					  const char *bfd_file,
@@ -1510,10 +1937,195 @@ bfd_set_assert_handler (bfd_assert_handl
   _bfd_assert_handler = pnew;
   return pold;
 }
+
+/*
+INODE
+Initialization, Threading, Error reporting, BFD front end
+
+FUNCTION
+	bfd_init
+
+SYNOPSIS
+	unsigned int bfd_init (void);
+
+DESCRIPTION
+	This routine must be called before any other BFD function to
+	initialize magical internal data structures.
+	Returns a magic number, which may be used to check
+	that the bfd library is configured as expected by users.
+
+.{* Value returned by bfd_init.  *}
+.#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
+.
+*/
+
+unsigned int
+bfd_init (void)
+{
+  _bfd_clear_error_data ();
+  _bfd_error_internal = error_handler_fprintf;
+  _bfd_assert_handler = _bfd_default_assert_handler;
+
+  return BFD_INIT_MAGIC;
+}
 
+
+/*
+INODE
+Threading, Miscellaneous, Initialization, BFD front end
+
+SECTION
+	Threading
+
+	BFD has limited support for thread-safety.  Most BFD globals
+	are protected by locks, while the error-related globals are
+	thread-local.  A given BFD cannot safely be used from two
+	threads at the same time; it is up to the application to do
+	any needed locking.  However, it is ok for different threads
+	to work on different BFD objects at the same time.
+
+SUBSECTION
+	Thread functions.
+
+CODE_FRAGMENT
+.typedef bool (*bfd_lock_unlock_fn_type) (void *);
+*/
+
+/* The lock and unlock functions, if set.  */
+static bfd_lock_unlock_fn_type lock_fn;
+static bfd_lock_unlock_fn_type unlock_fn;
+static void *lock_data;
+
+/*
+INTERNAL_FUNCTION
+	_bfd_threading_enabled
+
+SYNOPSIS
+	bool _bfd_threading_enabled (void);
+
+DESCRIPTION
+	Return true if threading is enabled, false if not.
+*/
+
+bool
+_bfd_threading_enabled (void)
+{
+  return lock_fn != NULL;
+}
+
+/*
+FUNCTION
+	bfd_thread_init
+
+SYNOPSIS
+	bool bfd_thread_init
+	  (bfd_lock_unlock_fn_type lock,
+	  bfd_lock_unlock_fn_type unlock,
+	  void *data);
+
+DESCRIPTION
+
+	Initialize BFD threading.  The functions passed in will be
+	used to lock and unlock global data structures.  This may only
+	be called a single time in a given process.  Returns true on
+	success and false on error.  On error, the caller should
+	assume that BFD cannot be used by multiple threads.  DATA is
+	passed verbatim to the lock and unlock functions.  The lock
+	and unlock functions should return true on success, or set the
+	BFD error and return false on failure.  Note also that the
+	lock must be a recursive lock: BFD may attempt to acquire the
+	lock when it is already held by the current thread.
+*/
+
+bool
+bfd_thread_init (bfd_lock_unlock_fn_type lock, bfd_lock_unlock_fn_type unlock,
+		 void *data)
+{
+#ifdef TLS
+  /* Both functions must be set, and this cannot have been called
+     before.  */
+  if (lock == NULL || unlock == NULL || unlock_fn != NULL)
+    {
+      bfd_set_error (bfd_error_invalid_operation);
+      return false;
+    }
+
+  lock_fn = lock;
+  unlock_fn = unlock;
+  lock_data = data;
+  return true;
+#else /* TLS */
+  /* If thread-local storage wasn't found by configure, we disallow
+     threaded operation.  */
+  bfd_set_error (bfd_error_invalid_operation);
+  return false;
+#endif /* TLS */
+}
+
+/*
+FUNCTION
+	bfd_thread_cleanup
+
+SYNOPSIS
+	void bfd_thread_cleanup (void);
+
+DESCRIPTION
+	Clean up any thread-local state.  This should be called by a
+	thread that uses any BFD functions, before the thread exits.
+	It is fine to call this multiple times, or to call it and then
+	later call BFD functions on the same thread again.
+*/
+
+void
+bfd_thread_cleanup (void)
+{
+  _bfd_clear_error_data ();
+}
+
+/*
+INTERNAL_FUNCTION
+	bfd_lock
+
+SYNOPSIS
+	bool bfd_lock (void);
+
+DESCRIPTION
+	Acquire the global BFD lock, if needed.  Returns true on
+	success, false on error.
+*/
+
+bool
+bfd_lock (void)
+{
+  if (lock_fn != NULL)
+    return lock_fn (lock_data);
+  return true;
+}
+
+/*
+INTERNAL_FUNCTION
+	bfd_unlock
+
+SYNOPSIS
+	bool bfd_unlock (void);
+
+DESCRIPTION
+	Release the global BFD lock, if needed.  Returns true on
+	success, false on error.
+*/
+
+bool
+bfd_unlock (void)
+{
+  if (unlock_fn != NULL)
+    return unlock_fn (lock_data);
+  return true;
+}
+
+
 /*
 INODE
-Miscellaneous, Memory Usage, Error reporting, BFD front end
+Miscellaneous, Memory Usage, Threading, BFD front end
 
 SECTION
 	Miscellaneous
@@ -1607,7 +2219,7 @@ FUNCTION
 	bfd_set_file_flags
 
 SYNOPSIS
-	bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
+	bool bfd_set_file_flags (bfd *abfd, flagword flags);
 
 DESCRIPTION
 	Set the flag word in the BFD @var{abfd} to the value @var{flags}.
@@ -1622,29 +2234,29 @@ DESCRIPTION
 
 */
 
-bfd_boolean
+bool
 bfd_set_file_flags (bfd *abfd, flagword flags)
 {
   if (abfd->format != bfd_object)
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   if (bfd_read_p (abfd))
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   abfd->flags = flags;
   if ((flags & bfd_applicable_file_flags (abfd)) != flags)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 void
@@ -1661,17 +2273,17 @@ bfd_assert (const char *file, int line)
 void
 _bfd_abort (const char *file, int line, const char *fn)
 {
+  fflush (stdout);
+
   if (fn != NULL)
-    _bfd_error_handler
-      /* xgettext:c-format */
-      (_("BFD %s internal error, aborting at %s:%d in %s\n"),
-       BFD_VERSION_STRING, file, line, fn);
+    fprintf (stderr, _("%s: BFD %s internal error, aborting at %s:%d in %s\n"),
+	     _bfd_get_error_program_name (), BFD_VERSION_STRING,
+	     file, line, fn);
   else
-    _bfd_error_handler
-      /* xgettext:c-format */
-      (_("BFD %s internal error, aborting at %s:%d\n"),
-       BFD_VERSION_STRING, file, line);
-  _bfd_error_handler (_("Please report this bug.\n"));
+    fprintf (stderr, _("%s: BFD %s internal error, aborting at %s:%d\n"),
+	     _bfd_get_error_program_name (), BFD_VERSION_STRING,
+	     file, line);
+  fprintf (stderr, _("Please report this bug.\n"));
   _exit (EXIT_FAILURE);
 }
 
@@ -1689,7 +2301,6 @@ DESCRIPTION
 	header.  Use bfd_arch_bits_per_address for number of bits in
 	the architecture address.
 
-RETURNS
 	Returns the arch size in bits if known, <<-1>> otherwise.
 */
 
@@ -1717,7 +2328,6 @@ DESCRIPTION
 	return an address sign extended to fill a bfd_vma when this is
 	the case.
 
-RETURNS
 	Returns <<1>> if the target architecture is known to sign
 	extend addresses, <<0>> if the target architecture is known to
 	not sign extend addresses, and <<-1>> otherwise.
@@ -1738,18 +2348,22 @@ bfd_get_sign_extend_vma (bfd *abfd)
      no place to store this information in the COFF back end.
      Should enough other COFF targets add support for DWARF2,
      a place will have to be found.  Until then, this hack will do.  */
-  if (CONST_STRNEQ (name, "coff-go32")
+  if (startswith (name, "coff-go32")
       || strcmp (name, "pe-i386") == 0
       || strcmp (name, "pei-i386") == 0
       || strcmp (name, "pe-x86-64") == 0
       || strcmp (name, "pei-x86-64") == 0
+      || strcmp (name, "pe-aarch64-little") == 0
+      || strcmp (name, "pei-aarch64-little") == 0
       || strcmp (name, "pe-arm-wince-little") == 0
       || strcmp (name, "pei-arm-wince-little") == 0
+      || strcmp (name, "pei-loongarch64") == 0
+      || strcmp (name, "pei-riscv64-little") == 0
       || strcmp (name, "aixcoff-rs6000") == 0
       || strcmp (name, "aix5coff64-rs6000") == 0)
     return 1;
 
-  if (CONST_STRNEQ (name, "mach-o"))
+  if (startswith (name, "mach-o"))
     return 0;
 
   bfd_set_error (bfd_error_wrong_format);
@@ -1761,20 +2375,19 @@ FUNCTION
 	bfd_set_start_address
 
 SYNOPSIS
-	bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
+	bool bfd_set_start_address (bfd *abfd, bfd_vma vma);
 
 DESCRIPTION
 	Make @var{vma} the entry point of output BFD @var{abfd}.
 
-RETURNS
 	Returns <<TRUE>> on success, <<FALSE>> otherwise.
 */
 
-bfd_boolean
+bool
 bfd_set_start_address (bfd *abfd, bfd_vma vma)
 {
   abfd->start_address = vma;
-  return TRUE;
+  return true;
 }
 
 /*
@@ -1867,94 +2480,45 @@ _bfd_set_gp_value (bfd *abfd, bfd_vma v)
 
 /*
 FUNCTION
+	bfd_set_gp_value
+
+SYNOPSIS
+	void bfd_set_gp_value (bfd *abfd, bfd_vma v);
+
+DESCRIPTION
+	Allow external access to the fucntion to set the GP value.
+	This is specifically added for gdb-compile support.
+*/
+
+void
+bfd_set_gp_value (bfd *abfd, bfd_vma v)
+{
+  _bfd_set_gp_value (abfd, v);
+}
+
+/*
+FUNCTION
 	bfd_scan_vma
 
 SYNOPSIS
 	bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
 
 DESCRIPTION
-	Convert, like <<strtoul>>, a numerical expression
-	@var{string} into a <<bfd_vma>> integer, and return that integer.
-	(Though without as many bells and whistles as <<strtoul>>.)
-	The expression is assumed to be unsigned (i.e., positive).
-	If given a @var{base}, it is used as the base for conversion.
-	A base of 0 causes the function to interpret the string
-	in hex if a leading "0x" or "0X" is found, otherwise
-	in octal if a leading zero is found, otherwise in decimal.
-
-	If the value would overflow, the maximum <<bfd_vma>> value is
-	returned.
+	Convert, like <<strtoul>> or <<stdtoull> depending on the size
+	of a <<bfd_vma>>, a numerical expression @var{string} into a
+	<<bfd_vma>> integer, and return that integer.
 */
 
 bfd_vma
 bfd_scan_vma (const char *string, const char **end, int base)
 {
-  bfd_vma value;
-  bfd_vma cutoff;
-  unsigned int cutlim;
-  int overflow;
-
-  /* Let the host do it if possible.  */
   if (sizeof (bfd_vma) <= sizeof (unsigned long))
     return strtoul (string, (char **) end, base);
 
-#if defined (HAVE_STRTOULL) && defined (HAVE_LONG_LONG)
   if (sizeof (bfd_vma) <= sizeof (unsigned long long))
     return strtoull (string, (char **) end, base);
-#endif
 
-  if (base == 0)
-    {
-      if (string[0] == '0')
-	{
-	  if ((string[1] == 'x') || (string[1] == 'X'))
-	    base = 16;
-	  else
-	    base = 8;
-	}
-    }
-
-  if ((base < 2) || (base > 36))
-    base = 10;
-
-  if (base == 16
-      && string[0] == '0'
-      && (string[1] == 'x' || string[1] == 'X')
-      && ISXDIGIT (string[2]))
-    {
-      string += 2;
-    }
-
-  cutoff = (~ (bfd_vma) 0) / (bfd_vma) base;
-  cutlim = (~ (bfd_vma) 0) % (bfd_vma) base;
-  value = 0;
-  overflow = 0;
-  while (1)
-    {
-      unsigned int digit;
-
-      digit = *string;
-      if (ISDIGIT (digit))
-	digit = digit - '0';
-      else if (ISALPHA (digit))
-	digit = TOUPPER (digit) - 'A' + 10;
-      else
-	break;
-      if (digit >= (unsigned int) base)
-	break;
-      if (value > cutoff || (value == cutoff && digit > cutlim))
-	overflow = 1;
-      value = value * base + digit;
-      ++string;
-    }
-
-  if (overflow)
-    value = ~ (bfd_vma) 0;
-
-  if (end != NULL)
-    *end = string;
-
-  return value;
+  abort ();
 }
 
 /*
@@ -1962,7 +2526,7 @@ FUNCTION
 	bfd_copy_private_header_data
 
 SYNOPSIS
-	bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
+	bool bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
 
 DESCRIPTION
 	Copy private BFD header information from the BFD @var{ibfd} to the
@@ -1985,7 +2549,7 @@ FUNCTION
 	bfd_copy_private_bfd_data
 
 SYNOPSIS
-	bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
+	bool bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
 
 DESCRIPTION
 	Copy private BFD information from the BFD @var{ibfd} to the
@@ -2006,7 +2570,7 @@ FUNCTION
 	bfd_set_private_flags
 
 SYNOPSIS
-	bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
+	bool bfd_set_private_flags (bfd *abfd, flagword flags);
 
 DESCRIPTION
 	Set private BFD flag information in the BFD @var{abfd}.
@@ -2035,6 +2599,11 @@ DESCRIPTION
 .	BFD_SEND (abfd, _bfd_find_nearest_line, \
 .		  (abfd, syms, sec, off, file, func, line, NULL))
 .
+.#define bfd_find_nearest_line_with_alt(abfd, alt_filename, sec, syms, off, \
+.					file, func, line, disc) \
+.	BFD_SEND (abfd, _bfd_find_nearest_line_with_alt, \
+.		  (abfd, alt_filename, syms, sec, off, file, func, line, disc))
+.
 .#define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
 .					    line, disc) \
 .	BFD_SEND (abfd, _bfd_find_nearest_line, \
@@ -2058,7 +2627,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))
@@ -2121,11 +2691,21 @@ DESCRIPTION
 .#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
 .	BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
 .
-.extern bfd_byte *bfd_get_relocated_section_contents
-.  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
-.   bfd_boolean, asymbol **);
-.
+*/
+
+/*
+FUNCTION
+	bfd_get_relocated_section_contents
 
+SYNOPSIS
+	bfd_byte *bfd_get_relocated_section_contents
+	  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
+	   bool, asymbol **);
+
+DESCRIPTION
+	Read and relocate the indirect link_order section, into DATA
+	(if non-NULL) or to a malloc'd buffer.  Return the buffer, or
+	NULL on errors.
 */
 
 bfd_byte *
@@ -2133,12 +2713,12 @@ bfd_get_relocated_section_contents (bfd
 				    struct bfd_link_info *link_info,
 				    struct bfd_link_order *link_order,
 				    bfd_byte *data,
-				    bfd_boolean relocatable,
+				    bool relocatable,
 				    asymbol **symbols)
 {
   bfd *abfd2;
   bfd_byte *(*fn) (bfd *, struct bfd_link_info *, struct bfd_link_order *,
-		   bfd_byte *, bfd_boolean, asymbol **);
+		   bfd_byte *, bool, asymbol **);
 
   if (link_order->type == bfd_indirect_link_order)
     {
@@ -2154,35 +2734,47 @@ bfd_get_relocated_section_contents (bfd
   return (*fn) (abfd, link_info, link_order, data, relocatable, symbols);
 }
 
-/* Record information about an ELF program header.  */
+/*
+FUNCTION
+	bfd_record_phdr
+
+SYNOPSIS
+	bool bfd_record_phdr
+	  (bfd *, unsigned long, bool, flagword, bool, bfd_vma,
+	   bool, bool, unsigned int, struct bfd_section **);
 
-bfd_boolean
+DESCRIPTION
+	Record information about an ELF program header.
+*/
+
+bool
 bfd_record_phdr (bfd *abfd,
 		 unsigned long type,
-		 bfd_boolean flags_valid,
+		 bool flags_valid,
 		 flagword flags,
-		 bfd_boolean at_valid,
-		 bfd_vma at,
-		 bfd_boolean includes_filehdr,
-		 bfd_boolean includes_phdrs,
+		 bool at_valid,
+		 bfd_vma at,  /* Bytes.  */
+		 bool includes_filehdr,
+		 bool 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;
+    return true;
 
   amt = sizeof (struct elf_segment_map);
   amt += ((bfd_size_type) count - 1) * sizeof (asection *);
   m = (struct elf_segment_map *) bfd_zalloc (abfd, amt);
   if (m == NULL)
-    return FALSE;
+    return false;
 
   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;
@@ -2195,13 +2787,13 @@ bfd_record_phdr (bfd *abfd,
     ;
   *pm = m;
 
-  return TRUE;
+  return true;
 }
 
 #ifdef BFD64
 /* Return true iff this target is 32-bit.  */
 
-static bfd_boolean
+static bool
 is32bit (bfd *abfd)
 {
   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
@@ -2215,33 +2807,48 @@ is32bit (bfd *abfd)
 }
 #endif
 
-/* bfd_sprintf_vma and bfd_fprintf_vma display an address in the
-   target's address size.  */
+/*
+FUNCTION
+	bfd_sprintf_vma
+	bfd_fprintf_vma
+
+SYNOPSIS
+	void bfd_sprintf_vma (bfd *, char *, bfd_vma);
+	void bfd_fprintf_vma (bfd *, void *, bfd_vma);
+
+DESCRIPTION
+	bfd_sprintf_vma and bfd_fprintf_vma display an address in the
+	target's address size.
+
+EXTERNAL
+.#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd, stdout, x)
+.
+*/
 
 void
 bfd_sprintf_vma (bfd *abfd ATTRIBUTE_UNUSED, char *buf, bfd_vma value)
 {
 #ifdef BFD64
-  if (is32bit (abfd))
+  if (!is32bit (abfd))
     {
-      sprintf (buf, "%08lx", (unsigned long) value & 0xffffffff);
+      sprintf (buf, "%016" PRIx64, (uint64_t) value);
       return;
     }
 #endif
-  sprintf_vma (buf, value);
+  sprintf (buf, "%08lx", (unsigned long) value & 0xffffffff);
 }
 
 void
 bfd_fprintf_vma (bfd *abfd ATTRIBUTE_UNUSED, void *stream, bfd_vma value)
 {
 #ifdef BFD64
-  if (is32bit (abfd))
+  if (!is32bit (abfd))
     {
-      fprintf ((FILE *) stream, "%08lx", (unsigned long) value & 0xffffffff);
+      fprintf ((FILE *) stream, "%016" PRIx64, (uint64_t) value);
       return;
     }
 #endif
-  fprintf_vma ((FILE *) stream, value);
+  fprintf ((FILE *) stream, "%08lx", (unsigned long) value & 0xffffffff);
 }
 
 /*
@@ -2249,7 +2856,7 @@ FUNCTION
 	bfd_alt_mach_code
 
 SYNOPSIS
-	bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
+	bool bfd_alt_mach_code (bfd *abfd, int alternative);
 
 DESCRIPTION
 
@@ -2260,7 +2867,7 @@ DESCRIPTION
 	machine codes.
 */
 
-bfd_boolean
+bool
 bfd_alt_mach_code (bfd *abfd, int alternative)
 {
   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
@@ -2276,25 +2883,25 @@ bfd_alt_mach_code (bfd *abfd, int altern
 	case 1:
 	  code = get_elf_backend_data (abfd)->elf_machine_alt1;
 	  if (code == 0)
-	    return FALSE;
+	    return false;
 	  break;
 
 	case 2:
 	  code = get_elf_backend_data (abfd)->elf_machine_alt2;
 	  if (code == 0)
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
-	  return FALSE;
+	  return false;
 	}
 
       elf_elfheader (abfd)->e_machine = code;
 
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /*
@@ -2307,9 +2914,6 @@ SYNOPSIS
 DESCRIPTION
 	Returns the maximum page size, in bytes, as determined by
 	emulation.
-
-RETURNS
-	Returns the maximum page size in bytes for ELF, 0 otherwise.
 */
 
 bfd_vma
@@ -2325,66 +2929,20 @@ bfd_emul_get_maxpagesize (const char *em
   return 0;
 }
 
-static void
-bfd_elf_set_pagesize (const bfd_target *target, bfd_vma size,
-		      int offset, const bfd_target *orig_target)
-{
-  if (target->flavour == bfd_target_elf_flavour)
-    {
-      const struct elf_backend_data *bed;
-
-      bed = xvec_get_elf_backend_data (target);
-      *((bfd_vma *) ((char *) bed + offset)) = size;
-    }
-
-  if (target->alternative_target
-      && target->alternative_target != orig_target)
-    bfd_elf_set_pagesize (target->alternative_target, size, offset,
-			  orig_target);
-}
-
-/*
-FUNCTION
-	bfd_emul_set_maxpagesize
-
-SYNOPSIS
-	void bfd_emul_set_maxpagesize (const char *, bfd_vma);
-
-DESCRIPTION
-	For ELF, set the maximum page size for the emulation.  It is
-	a no-op for other formats.
-
-*/
-
-void
-bfd_emul_set_maxpagesize (const char *emul, bfd_vma size)
-{
-  const bfd_target *target;
-
-  target = bfd_find_target (emul, NULL);
-  if (target)
-    bfd_elf_set_pagesize (target, size,
-			  offsetof (struct elf_backend_data,
-				    maxpagesize), target);
-}
-
 /*
 FUNCTION
 	bfd_emul_get_commonpagesize
 
 SYNOPSIS
-	bfd_vma bfd_emul_get_commonpagesize (const char *, bfd_boolean);
+	bfd_vma bfd_emul_get_commonpagesize (const char *);
 
 DESCRIPTION
 	Returns the common page size, in bytes, as determined by
 	emulation.
-
-RETURNS
-	Returns the common page size in bytes for ELF, 0 otherwise.
 */
 
 bfd_vma
-bfd_emul_get_commonpagesize (const char *emul, bfd_boolean relro)
+bfd_emul_get_commonpagesize (const char *emul)
 {
   const bfd_target *target;
 
@@ -2395,41 +2953,13 @@ bfd_emul_get_commonpagesize (const char
       const struct elf_backend_data *bed;
 
       bed = xvec_get_elf_backend_data (target);
-      if (relro)
-	return bed->relropagesize;
-      else
-	return bed->commonpagesize;
+      return bed->commonpagesize;
     }
   return 0;
 }
 
 /*
 FUNCTION
-	bfd_emul_set_commonpagesize
-
-SYNOPSIS
-	void bfd_emul_set_commonpagesize (const char *, bfd_vma);
-
-DESCRIPTION
-	For ELF, set the common page size for the emulation.  It is
-	a no-op for other formats.
-
-*/
-
-void
-bfd_emul_set_commonpagesize (const char *emul, bfd_vma size)
-{
-  const bfd_target *target;
-
-  target = bfd_find_target (emul, NULL);
-  if (target)
-    bfd_elf_set_pagesize (target, size,
-			  offsetof (struct elf_backend_data,
-				    commonpagesize), target);
-}
-
-/*
-FUNCTION
 	bfd_demangle
 
 SYNOPSIS
@@ -2449,7 +2979,7 @@ bfd_demangle (bfd *abfd, const char *nam
   char *res, *alloc;
   const char *pre, *suf;
   size_t pre_len;
-  bfd_boolean skip_lead;
+  bool skip_lead;
 
   skip_lead = (abfd != NULL
 	       && *name != '\0'
@@ -2481,8 +3011,7 @@ bfd_demangle (bfd *abfd, const char *nam
 
   res = cplus_demangle (name, options);
 
-  if (alloc != NULL)
-    free (alloc);
+  free (alloc);
 
   if (res == NULL)
     {
@@ -2523,334 +3052,51 @@ bfd_demangle (bfd *abfd, const char *nam
   return res;
 }
 
-/*
-FUNCTION
-	bfd_update_compression_header
-
-SYNOPSIS
-	void bfd_update_compression_header
-	  (bfd *abfd, bfd_byte *contents, asection *sec);
-
-DESCRIPTION
-	Set the compression header at CONTENTS of SEC in ABFD and update
-	elf_section_flags for compression.
-*/
-
-void
-bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
-			       asection *sec)
-{
-  if ((abfd->flags & BFD_COMPRESS) != 0)
-    {
-      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-	{
-	  if ((abfd->flags & BFD_COMPRESS_GABI) != 0)
-	    {
-	      const struct elf_backend_data *bed
-		= get_elf_backend_data (abfd);
-
-	      /* 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);
-		}
-	    }
-	  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);
-	    }
-	}
-    }
-  else
-    abort ();
-}
-
-/*
-   FUNCTION
-   bfd_check_compression_header
+/* Get the linker information.  */
 
-   SYNOPSIS
-	bfd_boolean bfd_check_compression_header
-	  (bfd *abfd, bfd_byte *contents, asection *sec,
-	  bfd_size_type *uncompressed_size,
-	  unsigned int *uncompressed_alignment_power);
-
-DESCRIPTION
-	Check the compression header at CONTENTS of SEC in ABFD and
-	store the uncompressed size in UNCOMPRESSED_SIZE and the
-	uncompressed data alignment in UNCOMPRESSED_ALIGNMENT_POWER
-	if the compression header is valid.
-
-RETURNS
-	Return TRUE if the compression header is valid.
-*/
-
-bfd_boolean
-bfd_check_compression_header (bfd *abfd, bfd_byte *contents,
-			      asection *sec,
-			      bfd_size_type *uncompressed_size,
-			      unsigned int *uncompressed_alignment_power)
+struct bfd_link_info *
+_bfd_get_link_info (bfd *abfd)
 {
-  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
-      && (elf_section_flags (sec) & SHF_COMPRESSED) != 0)
-    {
-      Elf_Internal_Chdr chdr;
-      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-      if (bed->s->elfclass == ELFCLASS32)
-	{
-	  Elf32_External_Chdr *echdr = (Elf32_External_Chdr *) contents;
-	  chdr.ch_type = bfd_get_32 (abfd, &echdr->ch_type);
-	  chdr.ch_size = bfd_get_32 (abfd, &echdr->ch_size);
-	  chdr.ch_addralign = bfd_get_32 (abfd, &echdr->ch_addralign);
-	}
-      else
-	{
-	  Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
-	  chdr.ch_type = bfd_get_32 (abfd, &echdr->ch_type);
-	  chdr.ch_size = bfd_get_64 (abfd, &echdr->ch_size);
-	  chdr.ch_addralign = bfd_get_64 (abfd, &echdr->ch_addralign);
-	}
-      if (chdr.ch_type == ELFCOMPRESS_ZLIB
-	  && chdr.ch_addralign == (chdr.ch_addralign & -chdr.ch_addralign))
-	{
-	  *uncompressed_size = chdr.ch_size;
-	  *uncompressed_alignment_power = bfd_log2 (chdr.ch_addralign);
-	  return TRUE;
-	}
-    }
-
-  return FALSE;
-}
-
-/*
-FUNCTION
-	bfd_get_compression_header_size
-
-SYNOPSIS
-	int bfd_get_compression_header_size (bfd *abfd, asection *sec);
-
-DESCRIPTION
-	Return the size of the compression header of SEC in ABFD.
-
-RETURNS
-	Return the size of the compression header in bytes.
-*/
-
-int
-bfd_get_compression_header_size (bfd *abfd, asection *sec)
-{
-  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-    {
-      if (sec == NULL)
-	{
-	  if (!(abfd->flags & BFD_COMPRESS_GABI))
-	    return 0;
-	}
-      else if (!(elf_section_flags (sec) & SHF_COMPRESSED))
-	return 0;
-
-      if (get_elf_backend_data (abfd)->s->elfclass == ELFCLASS32)
-	return sizeof (Elf32_External_Chdr);
-      else
-	return sizeof (Elf64_External_Chdr);
-    }
-
-  return 0;
-}
-
-/*
-FUNCTION
-	bfd_convert_section_size
-
-SYNOPSIS
-	bfd_size_type bfd_convert_section_size
-	  (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size);
-
-DESCRIPTION
-	Convert the size @var{size} of the section @var{isec} in input
-	BFD @var{ibfd} to the section size in output BFD @var{obfd}.
-*/
-
-bfd_size_type
-bfd_convert_section_size (bfd *ibfd, sec_ptr isec, bfd *obfd,
-			  bfd_size_type size)
-{
-  bfd_size_type hdr_size;
-
-  /* Do nothing if either input or output aren't ELF.  */
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return size;
-
-  /* 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 size;
-
-  /* Convert GNU property size.  */
-  if (CONST_STRNEQ (isec->name, NOTE_GNU_PROPERTY_SECTION_NAME))
-    return _bfd_elf_convert_gnu_property_size (ibfd, obfd);
-
-  /* Do nothing if input file will be decompressed.  */
-  if ((ibfd->flags & BFD_DECOMPRESS))
-    return size;
-
-  /* Do nothing if the input section isn't a SHF_COMPRESSED section. */
-  hdr_size = bfd_get_compression_header_size (ibfd, isec);
-  if (hdr_size == 0)
-    return size;
+  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+    return NULL;
 
-  /* Adjust the size of the output SHF_COMPRESSED section.  */
-  if (hdr_size == sizeof (Elf32_External_Chdr))
-    return (size - sizeof (Elf32_External_Chdr)
-	    + sizeof (Elf64_External_Chdr));
-  else
-    return (size - sizeof (Elf64_External_Chdr)
-	    + sizeof (Elf32_External_Chdr));
+  return elf_link_info (abfd);
 }
 
 /*
 FUNCTION
-	bfd_convert_section_contents
+	bfd_group_signature
 
 SYNOPSIS
-	bfd_boolean bfd_convert_section_contents
-	  (bfd *ibfd, asection *isec, bfd *obfd,
-	   bfd_byte **ptr, bfd_size_type *ptr_size);
+	asymbol *bfd_group_signature (asection *group, asymbol **isympp);
 
 DESCRIPTION
-	Convert the contents, stored in @var{*ptr}, of the section
-	@var{isec} in input BFD @var{ibfd} to output BFD @var{obfd}
-	if needed.  The original buffer pointed to by @var{*ptr} may
-	be freed and @var{*ptr} is returned with memory malloc'd by this
-	function, and the new size written to @var{ptr_size}.
+	Return a pointer to the symbol used as a signature for GROUP.
 */
 
-bfd_boolean
-bfd_convert_section_contents (bfd *ibfd, sec_ptr isec, bfd *obfd,
-			      bfd_byte **ptr, bfd_size_type *ptr_size)
+asymbol *
+bfd_group_signature (asection *group, asymbol **isympp)
 {
-  bfd_byte *contents;
-  bfd_size_type ihdr_size, ohdr_size, size;
-  Elf_Internal_Chdr chdr;
-  bfd_boolean use_memmove;
-
-  /* Do nothing if either input or output aren't ELF.  */
-  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
-      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
-
-  /* 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;
-
-  /* Convert GNU properties.  */
-  if (CONST_STRNEQ (isec->name, NOTE_GNU_PROPERTY_SECTION_NAME))
-    return _bfd_elf_convert_gnu_properties (ibfd, isec, obfd, ptr,
-					    ptr_size);
-
-  /* Do nothing if input file will be decompressed.  */
-  if ((ibfd->flags & BFD_DECOMPRESS))
-    return TRUE;
-
-  /* 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;
-
-  contents = *ptr;
-
-  /* Convert the contents of the input SHF_COMPRESSED section to
-     output.  Get the input compression header and the size of the
-     output compression header.  */
-  if (ihdr_size == sizeof (Elf32_External_Chdr))
-    {
-      Elf32_External_Chdr *echdr = (Elf32_External_Chdr *) contents;
-      chdr.ch_type = bfd_get_32 (ibfd, &echdr->ch_type);
-      chdr.ch_size = bfd_get_32 (ibfd, &echdr->ch_size);
-      chdr.ch_addralign = bfd_get_32 (ibfd, &echdr->ch_addralign);
+  bfd *abfd = group->owner;
+  Elf_Internal_Shdr *ghdr;
 
-      ohdr_size = sizeof (Elf64_External_Chdr);
+  /* PR 20089: An earlier error may have prevented us from loading the
+     symbol table.  */
+  if (isympp == NULL)
+    return NULL;
 
-      use_memmove = FALSE;
-    }
-  else
-    {
-      Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
-      chdr.ch_type = bfd_get_32 (ibfd, &echdr->ch_type);
-      chdr.ch_size = bfd_get_64 (ibfd, &echdr->ch_size);
-      chdr.ch_addralign = bfd_get_64 (ibfd, &echdr->ch_addralign);
-
-      ohdr_size = sizeof (Elf32_External_Chdr);
-      use_memmove = TRUE;
-    }
-
-  size = bfd_section_size (isec) - ihdr_size + ohdr_size;
-  if (!use_memmove)
-    {
-      contents = (bfd_byte *) bfd_malloc (size);
-      if (contents == NULL)
-	return FALSE;
-    }
+  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+    return NULL;
 
-  /* Write out the output compression header.  */
-  if (ohdr_size == sizeof (Elf32_External_Chdr))
+  ghdr = &elf_section_data (group)->this_hdr;
+  if (ghdr->sh_link == elf_onesymtab (abfd))
     {
-      Elf32_External_Chdr *echdr = (Elf32_External_Chdr *) contents;
-      bfd_put_32 (obfd, ELFCOMPRESS_ZLIB, &echdr->ch_type);
-      bfd_put_32 (obfd, chdr.ch_size, &echdr->ch_size);
-      bfd_put_32 (obfd, chdr.ch_addralign, &echdr->ch_addralign);
-    }
-  else
-    {
-      Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
-      bfd_put_32 (obfd, ELFCOMPRESS_ZLIB, &echdr->ch_type);
-      bfd_put_32 (obfd, 0, &echdr->ch_reserved);
-      bfd_put_64 (obfd, chdr.ch_size, &echdr->ch_size);
-      bfd_put_64 (obfd, chdr.ch_addralign, &echdr->ch_addralign);
-    }
+      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+      Elf_Internal_Shdr *symhdr = &elf_symtab_hdr (abfd);
 
-  /* Copy the compressed contents.  */
-  if (use_memmove)
-    memmove (contents + ohdr_size, *ptr + ihdr_size, size - ohdr_size);
-  else
-    {
-      memcpy (contents + ohdr_size, *ptr + ihdr_size, size - ohdr_size);
-      free (*ptr);
-      *ptr = contents;
+      if (ghdr->sh_info > 0
+	  && ghdr->sh_info < symhdr->sh_size / bed->s->sizeof_sym)
+	return isympp[ghdr->sh_info - 1];
     }
-
-  *ptr_size = size;
-  return TRUE;
+  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.20200303/bfd/bfd-in2.h ./bfd/bfd-in2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bfd-in2.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/bfd-in2.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,13 +1,13 @@
 /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
-   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
-   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
-   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
-   "linker.c", "simple.c" and "compress.c".
+   generated from "bfd-in.h", "libbfd.c", "hash.c", "section.c",
+   "syms.c", "archive.c", "archures.c", "bfd.c", "bfdio.c", "cache.c",
+   "compress.c", "corefile.c", "format.c", "linker.c", "opncls.c",
+   "reloc.c", "simple.c", "stab-syms.c", "stabs.c" and "targets.c".
    Run "make headers" in your build bfd/ to regenerate.  */
 
 /* Main header file for the bfd library -- portable access to object files.
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -41,9 +41,12 @@ extern "C" {
 
 #include "ansidecl.h"
 #include "symcat.h"
-#include "bfd_stdint.h"
+#include <stdint.h>
+#include <stdbool.h>
+#include <time.h>
 #include "diagnostics.h"
 #include <stdarg.h>
+#include <string.h>
 #include <sys/stat.h>
 
 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
@@ -63,23 +66,6 @@ extern "C" {
    comma and then the length of the string.  Doing this by hand
    is error prone, so using this macro is safer.  */
 #define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
-/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
-   to create the arguments to another macro, since the preprocessor
-   will mis-count the number of arguments to the outer macro (by not
-   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
-   problem for example when trying to use STRING_COMMA_LEN to build
-   the arguments to the strncmp() macro.  Hence this alternative
-   definition of strncmp is provided here.
-
-   Note - these macros do NOT work if STR2 is not a constant string.  */
-#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
-  /* strcpy() can have a similar problem, but since we know we are
-     copying a constant string, we can use memcpy which will be faster
-     since there is no need to check for a NUL byte inside STR.  We
-     can also save time if we do not need to copy the terminating NUL.  */
-#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
-#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
-
 
 #define BFD_SUPPORTS_PLUGINS @supports_plugins@
 
@@ -91,195 +77,74 @@ extern "C" {
 /* The word size of the default bfd target.  */
 #define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
 
-#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
-#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
-#if @BFD_HOST_64_BIT_DEFINED@
-#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
-#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
-typedef BFD_HOST_64_BIT bfd_int64_t;
-typedef BFD_HOST_U_64_BIT bfd_uint64_t;
-#endif
-
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if BFD_HOST_64BIT_LONG
-#  define BFD_PRI64 "l"
-# elif defined (__MSVCRT__)
-#  define BFD_PRI64 "I64"
-# else
-#  define BFD_PRI64 "ll"
-# endif
-# undef PRId64
-# define PRId64 BFD_PRI64 "d"
-# undef PRIu64
-# define PRIu64 BFD_PRI64 "u"
-# undef PRIx64
-# define PRIx64 BFD_PRI64 "x"
-#endif
+#include <inttypes.h>
 
 #if BFD_ARCH_SIZE >= 64
 #define BFD64
 #endif
 
-#ifndef INLINE
-#if __GNUC__ >= 2
-#define INLINE __inline__
-#else
-#define INLINE
-#endif
-#endif
-
-/* Declaring a type wide enough to hold a host long and a host pointer.  */
-#define BFD_HOSTPTR_T @BFD_HOSTPTR_T@
-typedef BFD_HOSTPTR_T bfd_hostptr_t;
-
-/* Forward declaration.  */
-typedef struct bfd bfd;
-
-/* Boolean type used in bfd.  Too many systems define their own
-   versions of "boolean" for us to safely typedef a "boolean" of
-   our own.  Using an enum for "bfd_boolean" has its own set of
-   problems, with strange looking casts required to avoid warnings
-   on some older compilers.  Thus we just use an int.
-
+/* Boolean type used in bfd.
    General rule: Functions which are bfd_boolean return TRUE on
    success and FALSE on failure (unless they're a predicate).  */
 
-typedef int bfd_boolean;
-#undef FALSE
-#undef TRUE
-#define FALSE 0
-#define TRUE 1
-
-#ifdef BFD64
-
-#ifndef BFD_HOST_64_BIT
- #error No 64 bit integer type available
-#endif /* ! defined (BFD_HOST_64_BIT) */
-
-typedef BFD_HOST_U_64_BIT bfd_vma;
-typedef BFD_HOST_64_BIT bfd_signed_vma;
-typedef BFD_HOST_U_64_BIT bfd_size_type;
-typedef BFD_HOST_U_64_BIT symvalue;
-
-#if BFD_HOST_64BIT_LONG
-#define BFD_VMA_FMT "l"
-#elif defined (__MSVCRT__)
-#define BFD_VMA_FMT "I64"
+#ifdef POISON_BFD_BOOLEAN
+# pragma GCC poison bfd_boolean
 #else
-#define BFD_VMA_FMT "ll"
+# define bfd_boolean bool
+# undef FALSE
+# undef TRUE
+# define FALSE 0
+# define TRUE 1
 #endif
 
-#ifndef fprintf_vma
-#define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x)
-#define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x)
-#endif
+/* Silence "applying zero offset to null pointer" UBSAN warnings.  */
+#define PTR_ADD(P,A) ((A) != 0 ? (P) + (A) : (P))
+/* Also prevent non-zero offsets from being applied to a null pointer.  */
+#define NPTR_ADD(P,A) ((P) != NULL ? (P) + (A) : (P))
 
-#else /* not BFD64  */
+#ifdef BFD64
 
 /* Represent a target address.  Also used as a generic unsigned type
    which is guaranteed to be big enough to hold any arithmetic types
    we need to deal with.  */
-typedef unsigned long bfd_vma;
+typedef uint64_t bfd_vma;
 
 /* A generic signed type which is guaranteed to be big enough to hold any
    arithmetic types we need to deal with.  Can be assumed to be compatible
    with bfd_vma in the same way that signed and unsigned ints are compatible
    (as parameters, in assignment, etc).  */
-typedef long bfd_signed_vma;
+typedef int64_t bfd_signed_vma;
+
+typedef uint64_t bfd_size_type;
+typedef uint64_t symvalue;
 
-typedef unsigned long symvalue;
-typedef unsigned long bfd_size_type;
+#else /* not BFD64  */
 
-/* Print a bfd_vma x on stream s.  */
-#define BFD_VMA_FMT "l"
-#define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x)
-#define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x)
+typedef uint32_t bfd_vma;
+typedef int32_t bfd_signed_vma;
+typedef uint32_t bfd_size_type;
+typedef uint32_t symvalue;
 
 #endif /* not BFD64  */
 
 #define HALF_BFD_SIZE_TYPE \
   (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
 
-#ifndef BFD_HOST_64_BIT
-/* Fall back on a 32 bit type.  The idea is to make these types always
-   available for function return types, but in the case that
-   BFD_HOST_64_BIT is undefined such a function should abort or
-   otherwise signal an error.  */
-typedef bfd_signed_vma bfd_int64_t;
-typedef bfd_vma bfd_uint64_t;
-#endif
-
 /* An offset into a file.  BFD always uses the largest possible offset
    based on the build time availability of fseek, fseeko, or fseeko64.  */
 typedef @bfd_file_ptr@ file_ptr;
-typedef unsigned @bfd_file_ptr@ ufile_ptr;
-
-extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
-extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
-
-#define printf_vma(x) fprintf_vma(stdout,x)
-#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
-
-typedef unsigned int flagword;	/* 32 bits of flags */
-typedef unsigned char bfd_byte;
-
-/* File formats.  */
-
-typedef enum bfd_format
-{
-  bfd_unknown = 0,	/* File format is unknown.  */
-  bfd_object,		/* Linker/assembler/compiler output.  */
-  bfd_archive,		/* Object archive file.  */
-  bfd_core,		/* Core dump.  */
-  bfd_type_end		/* Marks the end; don't use it!  */
-}
-bfd_format;
-
-/* Symbols and relocation.  */
-
-/* A count of carsyms (canonical archive symbols).  */
-typedef unsigned long symindex;
-
-#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
-
-/* A canonical archive symbol.  */
-/* This is a type pun with struct ranlib on purpose!  */
-typedef struct carsym
-{
-  const char *name;
-  file_ptr file_offset;	/* Look here to find the file.  */
-}
-carsym;			/* To make these you call a carsymogen.  */
+typedef @bfd_ufile_ptr@ ufile_ptr;
 
-/* Used in generating armaps (archive tables of contents).
-   Perhaps just a forward definition would do?  */
-struct orl		/* Output ranlib.  */
-{
-  char **name;		/* Symbol name.  */
-  union
-  {
-    file_ptr pos;
-    bfd *abfd;
-  } u;			/* bfd* or file position.  */
-  int namidx;		/* Index into string table.  */
-};
+typedef uint32_t flagword;	/* 32 bits of flags */
+typedef uint8_t bfd_byte;
 
-/* Linenumber stuff.  */
-typedef struct lineno_cache_entry
-{
-  unsigned int line_number;	/* Linenumber from start of function.  */
-  union
-  {
-    struct bfd_symbol *sym;	/* Function name.  */
-    bfd_vma offset;		/* Offset into section.  */
-  } u;
-}
-alent;
-
-/* Object and core file sections.  */
+/* Forward declarations.  */
+typedef struct bfd bfd;
+struct bfd_link_info;
+struct bfd_link_hash_entry;
 typedef struct bfd_section *sec_ptr;
+typedef struct reloc_cache_entry arelent;
+struct orl;
 
 #define	align_power(addr, align)	\
   (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
@@ -292,371 +157,41 @@ typedef struct bfd_section *sec_ptr;
   ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
    ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
    : ~ (bfd_vma) 0)
-
-typedef enum bfd_print_symbol
-{
-  bfd_print_symbol_name,
-  bfd_print_symbol_more,
-  bfd_print_symbol_all
-} bfd_print_symbol_type;
-
-/* Information about a symbol that nm needs.  */
-
-typedef struct _symbol_info
-{
-  symvalue value;
-  char type;
-  const char *name;		/* Symbol name.  */
-  unsigned char stab_type;	/* Stab type.  */
-  char stab_other;		/* Stab other.  */
-  short stab_desc;		/* Stab desc.  */
-  const char *stab_name;	/* String for stab type.  */
-} symbol_info;
-
-/* Get the name of a stabs type code.  */
-
-extern const char *bfd_get_stab_name (int);
-
-/* Hash table routines.  There is no way to free up a hash table.  */
 
-/* An element in the hash table.  Most uses will actually use a larger
-   structure, and an instance of this will be the first field.  */
+/* Return TRUE if the start of STR matches PREFIX, FALSE otherwise.  */
 
-struct bfd_hash_entry
+static inline bool
+startswith (const char *str, const char *prefix)
 {
-  /* Next entry for this hash code.  */
-  struct bfd_hash_entry *next;
-  /* String being hashed.  */
-  const char *string;
-  /* Hash code.  This is the full hash code, not the index into the
-     table.  */
-  unsigned long hash;
-};
-
-/* A hash table.  */
-
-struct bfd_hash_table
-{
-  /* The hash array.  */
-  struct bfd_hash_entry **table;
-  /* A function used to create new elements in the hash table.  The
-     first entry is itself a pointer to an element.  When this
-     function is first invoked, this pointer will be NULL.  However,
-     having the pointer permits a hierarchy of method functions to be
-     built each of which calls the function in the superclass.  Thus
-     each function should be written to allocate a new block of memory
-     only if the argument is NULL.  */
-  struct bfd_hash_entry *(*newfunc)
-    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-  /* An objalloc for this hash table.  This is a struct objalloc *,
-     but we use void * to avoid requiring the inclusion of objalloc.h.  */
-  void *memory;
-  /* The number of slots in the hash table.  */
-  unsigned int size;
-  /* The number of entries in the hash table.  */
-  unsigned int count;
-  /* The size of elements.  */
-  unsigned int entsize;
-  /* If non-zero, don't grow the hash table.  */
-  unsigned int frozen:1;
-};
-
-/* Initialize a hash table.  */
-extern bfd_boolean bfd_hash_table_init
-  (struct bfd_hash_table *,
-   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
-			       struct bfd_hash_table *,
-			       const char *),
-   unsigned int);
-
-/* Initialize a hash table specifying a size.  */
-extern bfd_boolean bfd_hash_table_init_n
-  (struct bfd_hash_table *,
-   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
-			       struct bfd_hash_table *,
-			       const char *),
-   unsigned int, unsigned int);
-
-/* Free up a hash table.  */
-extern void bfd_hash_table_free
-  (struct bfd_hash_table *);
-
-/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
-   will be created for this string if one does not already exist.  The
-   COPY argument must be TRUE if this routine should copy the string
-   into newly allocated memory when adding an entry.  */
-extern struct bfd_hash_entry *bfd_hash_lookup
-  (struct bfd_hash_table *, const char *, bfd_boolean create,
-   bfd_boolean copy);
-
-/* Insert an entry in a hash table.  */
-extern struct bfd_hash_entry *bfd_hash_insert
-  (struct bfd_hash_table *, const char *, unsigned long);
-
-/* Rename an entry in a hash table.  */
-extern void bfd_hash_rename
-  (struct bfd_hash_table *, const char *, struct bfd_hash_entry *);
-
-/* Replace an entry in a hash table.  */
-extern void bfd_hash_replace
-  (struct bfd_hash_table *, struct bfd_hash_entry *old,
-   struct bfd_hash_entry *nw);
-
-/* Base method for creating a hash table entry.  */
-extern struct bfd_hash_entry *bfd_hash_newfunc
-  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-
-/* Grab some space for a hash table entry.  */
-extern void *bfd_hash_allocate
-  (struct bfd_hash_table *, unsigned int);
-
-/* Traverse a hash table in a random order, calling a function on each
-   element.  If the function returns FALSE, the traversal stops.  The
-   INFO argument is passed to the function.  */
-extern void bfd_hash_traverse
-  (struct bfd_hash_table *,
-   bfd_boolean (*) (struct bfd_hash_entry *, void *),
-   void *info);
-
-/* Allows the default size of a hash table to be configured. New hash
-   tables allocated using bfd_hash_table_init will be created with
-   this size.  */
-extern unsigned long bfd_hash_set_default_size (unsigned long);
-
-/* Types of compressed DWARF debug sections.  We currently support
-   zlib.  */
-enum compressed_debug_section_type
-{
-  COMPRESS_DEBUG_NONE = 0,
-  COMPRESS_DEBUG = 1 << 0,
-  COMPRESS_DEBUG_GNU_ZLIB = COMPRESS_DEBUG | 1 << 1,
-  COMPRESS_DEBUG_GABI_ZLIB = COMPRESS_DEBUG | 1 << 2
-};
-
-/* This structure is used to keep track of stabs in sections
-   information while linking.  */
-
-struct stab_info
-{
-  /* A hash table used to hold stabs strings.  */
-  struct bfd_strtab_hash *strings;
-  /* The header file hash table.  */
-  struct bfd_hash_table includes;
-  /* The first .stabstr section.  */
-  struct bfd_section *stabstr;
-};
-
-#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
-
-/* User program access to BFD facilities.  */
-
-/* Direct I/O routines, for programs which know more about the object
-   file than BFD does.  Use higher level routines if possible.  */
-
-extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
-extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
-extern int bfd_seek (bfd *, file_ptr, int);
-extern file_ptr bfd_tell (bfd *);
-extern int bfd_flush (bfd *);
-extern int bfd_stat (bfd *, struct stat *);
-
-/* Deprecated old routines.  */
-#if __GNUC__
-#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
-  (_bfd_warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
-   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
-#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
-  (_bfd_warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
-   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
-#else
-#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
-  (_bfd_warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
-   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
-#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
-  (_bfd_warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
-   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
-#endif
-extern void _bfd_warn_deprecated (const char *, const char *, int, const char *);
-
-extern bfd_boolean bfd_cache_close
-  (bfd *abfd);
-/* NB: This declaration should match the autogenerated one in libbfd.h.  */
-
-extern bfd_boolean bfd_cache_close_all (void);
-
-extern bfd_boolean bfd_record_phdr
-  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
-   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
-
-/* Byte swapping routines.  */
-
-bfd_uint64_t bfd_getb64 (const void *);
-bfd_uint64_t bfd_getl64 (const void *);
-bfd_int64_t bfd_getb_signed_64 (const void *);
-bfd_int64_t bfd_getl_signed_64 (const void *);
-bfd_vma bfd_getb32 (const void *);
-bfd_vma bfd_getl32 (const void *);
-bfd_signed_vma bfd_getb_signed_32 (const void *);
-bfd_signed_vma bfd_getl_signed_32 (const void *);
-bfd_vma bfd_getb16 (const void *);
-bfd_vma bfd_getl16 (const void *);
-bfd_signed_vma bfd_getb_signed_16 (const void *);
-bfd_signed_vma bfd_getl_signed_16 (const void *);
-void bfd_putb64 (bfd_uint64_t, void *);
-void bfd_putl64 (bfd_uint64_t, void *);
-void bfd_putb32 (bfd_vma, void *);
-void bfd_putl32 (bfd_vma, void *);
-void bfd_putb24 (bfd_vma, void *);
-void bfd_putl24 (bfd_vma, void *);
-void bfd_putb16 (bfd_vma, void *);
-void bfd_putl16 (bfd_vma, void *);
-
-/* Byte swapping routines which take size and endiannes as arguments.  */
-
-bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
-void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
-
-
-/* mmap hacks */
+  return strncmp (str, prefix, strlen (prefix)) == 0;
+}
 
-struct _bfd_window_internal;
-typedef struct _bfd_window_internal bfd_window_internal;
+/* Return true if plugin is enabled.  */
 
-typedef struct _bfd_window
+static inline bool
+bfd_plugin_enabled (void)
 {
-  /* What the user asked for.  */
-  void *data;
-  bfd_size_type size;
-  /* The actual window used by BFD.  Small user-requested read-only
-     regions sharing a page may share a single window into the object
-     file.  Read-write versions shouldn't until I've fixed things to
-     keep track of which portions have been claimed by the
-     application; don't want to give the same region back when the
-     application wants two writable copies!  */
-  struct _bfd_window_internal *i;
-}
-bfd_window;
-
-extern void bfd_init_window
-  (bfd_window *);
-extern void bfd_free_window
-  (bfd_window *);
-extern bfd_boolean bfd_get_file_window
-  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
-
-/* Externally visible ELF routines.  */
-
-/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
-   reconstruct an ELF file by reading the segments out of remote
-   memory based on the ELF file header at EHDR_VMA and the ELF program
-   headers it points to.  If non-zero, SIZE is the known extent of the
-   object.  If not null, *LOADBASEP is filled in with the difference
-   between the VMAs from which the segments were read, and the VMAs
-   the file headers (and hence BFD's idea of each section's VMA) put
-   them at.
-
-   The function TARGET_READ_MEMORY is called to copy LEN bytes from
-   the remote memory at target address VMA into the local buffer at
-   MYADDR; it should return zero on success or an `errno' code on
-   failure.  TEMPL must be a BFD for a target with the word size and
-   byte order found in the remote memory.  */
-extern bfd *bfd_elf_bfd_from_remote_memory
-  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
-   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
-			      bfd_size_type len));
-
-/* Forward declarations.  */
-struct ecoff_debug_info;
-struct ecoff_debug_swap;
-struct ecoff_extr;
-struct bfd_link_info;
-struct bfd_link_hash_entry;
-/* Extracted from init.c.  */
-unsigned int bfd_init (void);
-
-
-/* Value returned by bfd_init.  */
-
-#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
-/* Extracted from opncls.c.  */
-/* Set to N to open the next N BFDs using an alternate id space.  */
-extern unsigned int bfd_use_reserved_id;
-bfd *bfd_fopen (const char *filename, const char *target,
-    const char *mode, int fd);
-
-bfd *bfd_openr (const char *filename, const char *target);
-
-bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
-
-bfd *bfd_openstreamr (const char * filename, const char * target,
-    void * stream);
-
-bfd *bfd_openr_iovec (const char *filename, const char *target,
-    void *(*open_func) (struct bfd *nbfd,
-    void *open_closure),
-    void *open_closure,
-    file_ptr (*pread_func) (struct bfd *nbfd,
-    void *stream,
-    void *buf,
-    file_ptr nbytes,
-    file_ptr offset),
-    int (*close_func) (struct bfd *nbfd,
-    void *stream),
-    int (*stat_func) (struct bfd *abfd,
-    void *stream,
-    struct stat *sb));
-
-bfd *bfd_openw (const char *filename, const char *target);
-
-bfd_boolean bfd_close (bfd *abfd);
-
-bfd_boolean bfd_close_all_done (bfd *);
-
-bfd *bfd_create (const char *filename, bfd *templ);
-
-bfd_boolean bfd_make_writable (bfd *abfd);
-
-bfd_boolean bfd_make_readable (bfd *abfd);
+  return BFD_SUPPORTS_PLUGINS != 0;
+}
 
+/* Extracted from libbfd.c.  */
 void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
 
 void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
 
-unsigned long bfd_calc_gnu_debuglink_crc32
-   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
+void bfd_release (bfd *, void *);
 
-char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
-
-char *bfd_get_alt_debug_link_info (bfd * abfd,
-    bfd_size_type *buildid_len,
-    bfd_byte **buildid_out);
-
-char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
-
-char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir);
-
-struct bfd_section *bfd_create_gnu_debuglink_section
-   (bfd *abfd, const char *filename);
-
-bfd_boolean bfd_fill_in_gnu_debuglink_section
-   (bfd *abfd, struct bfd_section *sect, const char *filename);
-
-char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
-
-void bfd_set_filename (bfd *abfd, char *filename);
-
-/* Extracted from libbfd.c.  */
 
 /* Byte swapping macros for user section data.  */
 
 #define bfd_put_8(abfd, val, ptr) \
-  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
+  ((void) (*((bfd_byte *) (ptr)) = (val) & 0xff))
 #define bfd_put_signed_8 \
   bfd_put_8
 #define bfd_get_8(abfd, ptr) \
-  ((bfd_vma) *(const unsigned char *) (ptr) & 0xff)
+  ((bfd_vma) *(const bfd_byte *) (ptr) & 0xff)
 #define bfd_get_signed_8(abfd, ptr) \
-  ((((bfd_signed_vma) *(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
+  ((((bfd_signed_vma) *(const bfd_byte *) (ptr) & 0xff) ^ 0x80) - 0x80)
 
 #define bfd_put_16(abfd, val, ptr) \
   BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
@@ -700,7 +235,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)             \
@@ -772,19 +307,130 @@ bfd_vma bfd_getl24 (const void *p);
 #define H_GET_S8  bfd_h_get_signed_8
 
 
-/* Extracted from bfdio.c.  */
-long bfd_get_mtime (bfd *abfd);
+uint64_t bfd_getb64 (const void *);
+uint64_t bfd_getl64 (const void *);
+int64_t bfd_getb_signed_64 (const void *);
+int64_t bfd_getl_signed_64 (const void *);
+bfd_vma bfd_getb32 (const void *);
+bfd_vma bfd_getl32 (const void *);
+bfd_signed_vma bfd_getb_signed_32 (const void *);
+bfd_signed_vma bfd_getl_signed_32 (const void *);
+bfd_vma bfd_getb16 (const void *);
+bfd_vma bfd_getl16 (const void *);
+bfd_signed_vma bfd_getb_signed_16 (const void *);
+bfd_signed_vma bfd_getl_signed_16 (const void *);
+void bfd_putb64 (uint64_t, void *);
+void bfd_putl64 (uint64_t, void *);
+void bfd_putb32 (bfd_vma, void *);
+void bfd_putl32 (bfd_vma, void *);
+void bfd_putb24 (bfd_vma, void *);
+void bfd_putl24 (bfd_vma, void *);
+void bfd_putb16 (bfd_vma, void *);
+void bfd_putl16 (bfd_vma, void *);
+uint64_t bfd_get_bits (const void *, int, bool);
+void bfd_put_bits (uint64_t, void *, int, bool);
 
-ufile_ptr bfd_get_size (bfd *abfd);
+/* Extracted from hash.c.  */
+/* An element in the hash table.  Most uses will actually use a larger
+   structure, and an instance of this will be the first field.  */
 
-ufile_ptr bfd_get_file_size (bfd *abfd);
+struct bfd_hash_entry
+{
+  /* Next entry for this hash code.  */
+  struct bfd_hash_entry *next;
+  /* String being hashed.  */
+  const char *string;
+  /* Hash code.  This is the full hash code, not the index into the
+     table.  */
+  unsigned long hash;
+};
 
-void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
-    int prot, int flags, file_ptr offset,
-    void **map_addr, bfd_size_type *map_len);
+/* A hash table.  */
+
+struct bfd_hash_table
+{
+  /* The hash array.  */
+  struct bfd_hash_entry **table;
+  /* A function used to create new elements in the hash table.  The
+     first entry is itself a pointer to an element.  When this
+     function is first invoked, this pointer will be NULL.  However,
+     having the pointer permits a hierarchy of method functions to be
+     built each of which calls the function in the superclass.  Thus
+     each function should be written to allocate a new block of memory
+     only if the argument is NULL.  */
+  struct bfd_hash_entry *(*newfunc)
+    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
+  /* An objalloc for this hash table.  This is a struct objalloc *,
+     but we use void * to avoid requiring the inclusion of objalloc.h.  */
+  void *memory;
+  /* The number of slots in the hash table.  */
+  unsigned int size;
+  /* The number of entries in the hash table.  */
+  unsigned int count;
+  /* The size of elements.  */
+  unsigned int entsize;
+  /* If non-zero, don't grow the hash table.  */
+  unsigned int frozen:1;
+};
+
+bool bfd_hash_table_init_n
+   (struct bfd_hash_table *,
+    struct bfd_hash_entry *(* /*newfunc*/)
+       (struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
+    unsigned int /*entsize*/, unsigned int /*size*/);
+
+bool bfd_hash_table_init
+   (struct bfd_hash_table *,
+    struct bfd_hash_entry *(* /*newfunc*/)
+       (struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
+    unsigned int /*entsize*/);
+
+void bfd_hash_table_free (struct bfd_hash_table *);
+
+struct bfd_hash_entry *bfd_hash_lookup
+   (struct bfd_hash_table *, const char *,
+    bool /*create*/, bool /*copy*/);
+
+struct bfd_hash_entry *bfd_hash_insert
+   (struct bfd_hash_table *,
+    const char *,
+    unsigned long /*hash*/);
+
+void bfd_hash_rename (struct bfd_hash_table *,
+    const char *,
+    struct bfd_hash_entry *);
+
+void bfd_hash_replace (struct bfd_hash_table *,
+    struct bfd_hash_entry * /*old*/,
+    struct bfd_hash_entry * /*new*/);
+
+void *bfd_hash_allocate (struct bfd_hash_table *,
+    unsigned int /*size*/);
+
+struct bfd_hash_entry *bfd_hash_newfunc
+   (struct bfd_hash_entry *,
+    struct bfd_hash_table *,
+    const char *);
+
+void bfd_hash_traverse
+   (struct bfd_hash_table *,
+    bool (*) (struct bfd_hash_entry *, void *),
+    void *);
+
+unsigned int bfd_hash_set_default_size (unsigned int);
 
-/* Extracted from bfdwin.c.  */
 /* Extracted from section.c.  */
+/* Linenumber stuff.  */
+typedef struct lineno_cache_entry
+{
+  unsigned int line_number;    /* Linenumber from start of function.  */
+  union
+  {
+    struct bfd_symbol *sym;    /* Function name.  */
+    bfd_vma offset;            /* Offset into section.  */
+  } u;
+}
+alent;
 
 typedef struct bfd_section
 {
@@ -792,18 +438,22 @@ typedef struct bfd_section
      the same as that passed to bfd_make_section.  */
   const char *name;
 
-  /* A unique sequence number.  */
-  unsigned int id;
-
-  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
-  unsigned int index;
-
   /* The next section in the list belonging to the BFD, or NULL.  */
   struct bfd_section *next;
 
   /* The previous section in the list belonging to the BFD, or NULL.  */
   struct bfd_section *prev;
 
+  /* 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;
+
   /* The field flags contains attributes of the section. Some
      flags are read in from the object file, and some are
      synthesized from other information.  */
@@ -928,6 +578,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.  */
@@ -969,9 +623,8 @@ typedef struct bfd_section
      executables or shared objects. This is for COFF only.  */
 #define SEC_COFF_SHARED             0x8000000
 
-  /* This section should be compressed.  This is for ELF linker
-     internal use only.  */
-#define SEC_ELF_COMPRESS            0x8000000
+  /* Indicate that section has the purecode flag set.  */
+#define SEC_ELF_PURECODE            0x8000000
 
   /* When a section with this flag is being linked, then if the size of
      the input section is less than a page, it should not cross a page
@@ -980,9 +633,8 @@ typedef struct bfd_section
      TMS320C54X only.  */
 #define SEC_TIC54X_BLOCK           0x10000000
 
-  /* This section should be renamed.  This is for ELF linker
-     internal use only.  */
-#define SEC_ELF_RENAME             0x10000000
+  /* This section has the SHF_X86_64_LARGE flag.  This is ELF x86-64 only.  */
+#define SEC_ELF_LARGE              0x10000000
 
   /* Conditionally link this section; do not link if there are no
      references found to any symbol in the section.  This is for TI
@@ -1001,9 +653,6 @@ typedef struct bfd_section
      when memory read flag isn't set. */
 #define SEC_COFF_NOREAD            0x40000000
 
-  /* Indicate that section has the purecode flag set.  */
-#define SEC_ELF_PURECODE           0x80000000
-
   /*  End of section flags.  */
 
   /* Some internal packed boolean fields.  */
@@ -1025,7 +674,8 @@ typedef struct bfd_section
   unsigned int compress_status : 2;
 #define COMPRESS_SECTION_NONE    0
 #define COMPRESS_SECTION_DONE    1
-#define DECOMPRESS_SECTION_SIZED 2
+#define DECOMPRESS_SECTION_ZLIB  2
+#define DECOMPRESS_SECTION_ZSTD  3
 
   /* The following flags are used by the ELF linker. */
 
@@ -1041,10 +691,17 @@ typedef struct bfd_section
 #define SEC_INFO_TYPE_JUST_SYMS 4
 #define SEC_INFO_TYPE_TARGET    5
 #define SEC_INFO_TYPE_EH_FRAME_ENTRY 6
+#define SEC_INFO_TYPE_SFRAME  7
 
   /* Nonzero if this section uses RELA relocations, rather than REL.  */
   unsigned int use_rela_p:1;
 
+  /* Nonzero if section contents are mmapped.  */
+  unsigned int mmapped_p:1;
+
+  /* Nonzero if section contents should not be freed.  */
+  unsigned int alloced:1;
+
   /* Bits used by various backends.  The generic code doesn't touch
      these fields.  */
 
@@ -1088,13 +745,6 @@ typedef struct bfd_section
   /* The compressed size of the section in octets.  */
   bfd_size_type compressed_size;
 
-  /* Relaxation table. */
-  struct relax_table *relax;
-
-  /* Count of used relaxation table entries. */
-  int relax_count;
-
-
   /* If this section is going to be output, then this value is the
      offset in *bytes* into the output section of the first byte in the
      input section (byte ==> smallest addressable unit on the
@@ -1107,10 +757,6 @@ typedef struct bfd_section
   /* The output section through which to map on output.  */
   struct bfd_section *output_section;
 
-  /* The alignment requirement of the section, as an exponent of 2 -
-     e.g., 3 aligns to 2^3 (or 8).  */
-  unsigned int alignment_power;
-
   /* If an input section, a pointer to a vector of relocation
      records for the data in this section.  */
   struct reloc_cache_entry *relocation;
@@ -1122,6 +768,10 @@ typedef struct bfd_section
   /* The number of relocation records in one of the above.  */
   unsigned reloc_count;
 
+  /* The alignment requirement of the section, as an exponent of 2 -
+     e.g., 3 aligns to 2^3 (or 8).  */
+  unsigned int alignment_power;
+
   /* Information below is back end specific - and not always used
      or updated.  */
 
@@ -1139,7 +789,7 @@ typedef struct bfd_section
 
   /* If the SEC_IN_MEMORY flag is set, this points to the actual
      contents.  */
-  unsigned char *contents;
+  bfd_byte *contents;
 
   /* Attached line number information.  */
   alent *lineno;
@@ -1172,28 +822,27 @@ typedef struct bfd_section
 
   /* A symbol which points at this section only.  */
   struct bfd_symbol *symbol;
-  struct bfd_symbol **symbol_ptr_ptr;
 
   /* 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;
-} asection;
 
-/* Relax table contains information about instructions which can
-   be removed by relaxation -- replacing a long address with a
-   short address.  */
-struct relax_table {
-  /* Address where bytes may be deleted. */
-  bfd_vma addr;
+  /* 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;
 
-  /* Number of bytes to be deleted.  */
-  int size;
-};
+  /* Explicitly specified section type, if non-zero.  */
+  unsigned int type;
+
+} asection;
 
 static inline const char *
 bfd_section_name (const asection *sec)
@@ -1236,7 +885,7 @@ bfd_section_userdata (const asection *se
 {
   return sec->userdata;
 }
-static inline bfd_boolean
+static inline bool
 bfd_is_com_section (const asection *sec)
 {
   return (sec->flags & SEC_IS_COMMON) != 0;
@@ -1246,33 +895,35 @@ bfd_is_com_section (const asection *sec)
    because not all callers use the return value.  A macro implementation
    would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
    compilers will complain about comma expressions that have no effect.  */
-static inline bfd_boolean
+static inline bool
 bfd_set_section_userdata (asection *sec, void *val)
 {
   sec->userdata = val;
-  return TRUE;
+  return true;
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_set_section_vma (asection *sec, bfd_vma val)
 {
   sec->vma = sec->lma = val;
-  sec->user_set_vma = TRUE;
-  return TRUE;
+  sec->user_set_vma = true;
+  return true;
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_set_section_lma (asection *sec, bfd_vma val)
 {
   sec->lma = val;
-  return TRUE;
+  return true;
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_set_section_alignment (asection *sec, unsigned int val)
 {
+  if (val >= sizeof (bfd_vma) * 8 - 1)
+    return false;
   sec->alignment_power = val;
-  return TRUE;
+  return true;
 }
 
 /* These sections are global, and are managed by BFD.  The application
@@ -1285,6 +936,9 @@ extern asection _bfd_std_section[4];
 #define BFD_COM_SECTION_NAME "*COM*"
 #define BFD_IND_SECTION_NAME "*IND*"
 
+/* GNU object-only section name.  */
+#define GNU_OBJECT_ONLY_SECTION_NAME ".gnu_object_only"
+
 /* Pointer to the common section.  */
 #define bfd_com_section_ptr (&_bfd_std_section[0])
 /* Pointer to the undefined section.  */
@@ -1294,89 +948,41 @@ extern asection _bfd_std_section[4];
 /* Pointer to the indirect section.  */
 #define bfd_ind_section_ptr (&_bfd_std_section[3])
 
-static inline bfd_boolean
+static inline bool
 bfd_is_und_section (const asection *sec)
 {
   return sec == bfd_und_section_ptr;
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_is_abs_section (const asection *sec)
 {
   return sec == bfd_abs_section_ptr;
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_is_ind_section (const asection *sec)
 {
   return sec == bfd_ind_section_ptr;
 }
 
-static inline bfd_boolean
+static inline bool
 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.  */
-static inline bfd_boolean
+static inline bool
 discarded_section (const asection *sec)
 {
   return (!bfd_is_abs_section (sec)
-          && bfd_is_abs_section (sec->output_section)
-          && sec->sec_info_type != SEC_INFO_TYPE_MERGE
-          && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
-}
-
-#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,                           \
-                                                                       \
-  /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
-     0,           0,                1,       0,                        \
-                                                                       \
-  /* segment_mark, sec_info_type, use_rela_p,                      */  \
-     0,            0,             0,                                   \
-                                                                       \
-  /* 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, */  \
-     0,   0,   0,    0,       0,               0,     0,               \
-                                                                       \
-  /* output_offset, output_section, alignment_power,               */  \
-     0,             &SEC,           0,                                 \
-                                                                       \
-  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
-     NULL,       NULL,        0,           0,       0,                 \
-                                                                       \
-  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
-     0,            NULL,     NULL,     NULL,   0,                      \
-                                                                       \
-  /* entsize, kept_section, moving_line_filepos,                    */ \
-     0,       NULL,          0,                                        \
-                                                                       \
-  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
-     0,            NULL,        NULL,              NULL,               \
-                                                                       \
-  /* symbol,                    symbol_ptr_ptr,                    */  \
-     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
-                                                                       \
-  /* map_head, map_tail                                            */  \
-     { NULL }, { NULL }                                                \
-    }
-
-/* We use a macro to initialize the static asymbol structures because
-   traditional C does not permit us to initialize a union member while
-   gcc warns if we don't initialize it.
-   the_bfd, name, value, attr, section [, udata]  */
-#ifdef __STDC__
-#define GLOBAL_SYM_INIT(NAME, SECTION) \
-  { 0, NAME, 0, BSF_SECTION_SYM, SECTION, { 0 }}
-#else
-#define GLOBAL_SYM_INIT(NAME, SECTION) \
-  { 0, NAME, 0, BSF_SECTION_SYM, SECTION }
-#endif
+	  && bfd_is_abs_section (sec->output_section)
+	  && sec->sec_info_type != SEC_INFO_TYPE_MERGE
+	  && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
+}
 
 void bfd_section_list_clear (bfd *);
 
@@ -1389,7 +995,7 @@ asection *bfd_get_linker_section (bfd *a
 asection *bfd_get_section_by_name_if
    (bfd *abfd,
     const char *name,
-    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
+    bool (*func) (bfd *abfd, asection *sect, void *obj),
     void *obj);
 
 char *bfd_get_unique_section_name
@@ -1407,7 +1013,7 @@ asection *bfd_make_section_with_flags
 
 asection *bfd_make_section (bfd *, const char *name);
 
-bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
+bool bfd_set_section_flags (asection *sec, flagword flags);
 
 void bfd_rename_section
    (asection *sec, const char *newname);
@@ -1419,33 +1025,273 @@ void bfd_map_over_sections
 
 asection *bfd_sections_find_if
    (bfd *abfd,
-    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
+    bool (*operation) (bfd *abfd, asection *sect, void *obj),
     void *obj);
 
-bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
+bool bfd_set_section_size (asection *sec, bfd_size_type val);
 
-bfd_boolean bfd_set_section_contents
+bool bfd_set_section_contents
    (bfd *abfd, asection *section, const void *data,
     file_ptr offset, bfd_size_type count);
 
-bfd_boolean bfd_get_section_contents
+bool bfd_get_section_contents
    (bfd *abfd, asection *section, void *location, file_ptr offset,
     bfd_size_type count);
 
-bfd_boolean bfd_malloc_and_get_section
+bool bfd_malloc_and_get_section
    (bfd *abfd, asection *section, bfd_byte **buf);
 
-bfd_boolean bfd_copy_private_section_data
-   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
+bool bfd_copy_private_section_data
+   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec,
+    struct bfd_link_info *link_info);
 
-#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
+#define bfd_copy_private_section_data(ibfd, isec, obfd, osec, link_info) \
        BFD_SEND (obfd, _bfd_copy_private_section_data, \
-                 (ibfd, isection, obfd, osection))
-bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
+		 (ibfd, isec, obfd, osec, link_info))
+bool bfd_generic_is_group_section (bfd *, const asection *sec);
 
 const char *bfd_generic_group_name (bfd *, const asection *sec);
 
-bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
+bool bfd_generic_discard_group (bfd *abfd, asection *group);
+
+bool bfd_section_size_insane (bfd *abfd, asection *sec);
+
+/* Extracted from syms.c.  */
+typedef struct bfd_symbol
+{
+  /* A pointer to the BFD which owns the symbol. This information
+     is necessary so that a back end can work out what additional
+     information (invisible to the application writer) is carried
+     with the symbol.
+
+     This field is *almost* redundant, since you can use section->owner
+     instead, except that some symbols point to the global sections
+     bfd_{abs,com,und}_section.  This could be fixed by making
+     these globals be per-bfd (or per-target-flavor).  FIXME.  */
+  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
+
+  /* The text of the symbol. The name is left alone, and not copied; the
+     application may not alter it.  */
+  const char *name;
+
+  /* The value of the symbol.  This really should be a union of a
+     numeric value with a pointer, since some flags indicate that
+     a pointer to another symbol is stored here.  */
+  symvalue value;
+
+  /* Attributes of a symbol.  */
+#define BSF_NO_FLAGS            0
+
+  /* The symbol has local scope; <<static>> in <<C>>. The value
+     is the offset into the section of the data.  */
+#define BSF_LOCAL               (1 << 0)
+
+  /* The symbol has global scope; initialized data in <<C>>. The
+     value is the offset into the section of the data.  */
+#define BSF_GLOBAL              (1 << 1)
+
+  /* The symbol has global scope and is exported. The value is
+     the offset into the section of the data.  */
+#define BSF_EXPORT              BSF_GLOBAL /* No real difference.  */
+
+  /* A normal C symbol would be one of:
+     <<BSF_LOCAL>>, <<BSF_UNDEFINED>> or <<BSF_GLOBAL>>.  */
+
+  /* The symbol is a debugging record. The value has an arbitrary
+     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
+#define BSF_DEBUGGING           (1 << 2)
+
+  /* The symbol denotes a function entry point.  Used in ELF,
+     perhaps others someday.  */
+#define BSF_FUNCTION            (1 << 3)
+
+  /* Used by the linker.  */
+#define BSF_KEEP                (1 << 5)
+
+  /* An ELF common symbol.  */
+#define BSF_ELF_COMMON          (1 << 6)
+
+  /* A weak global symbol, overridable without warnings by
+     a regular global symbol of the same name.  */
+#define BSF_WEAK                (1 << 7)
+
+  /* This symbol was created to point to a section, e.g. ELF's
+     STT_SECTION symbols.  */
+#define BSF_SECTION_SYM         (1 << 8)
+
+  /* The symbol used to be a common symbol, but now it is
+     allocated.  */
+#define BSF_OLD_COMMON          (1 << 9)
+
+  /* In some files the type of a symbol sometimes alters its
+     location in an output file - ie in coff a <<ISFCN>> symbol
+     which is also <<C_EXT>> symbol appears where it was
+     declared and not at the end of a section.  This bit is set
+     by the target BFD part to convey this information.  */
+#define BSF_NOT_AT_END          (1 << 10)
+
+  /* Signal that the symbol is the label of constructor section.  */
+#define BSF_CONSTRUCTOR         (1 << 11)
+
+  /* Signal that the symbol is a warning symbol.  The name is a
+     warning.  The name of the next symbol is the one to warn about;
+     if a reference is made to a symbol with the same name as the next
+     symbol, a warning is issued by the linker.  */
+#define BSF_WARNING             (1 << 12)
+
+  /* Signal that the symbol is indirect.  This symbol is an indirect
+     pointer to the symbol with the same name as the next symbol.  */
+#define BSF_INDIRECT            (1 << 13)
+
+  /* BSF_FILE marks symbols that contain a file name.  This is used
+     for ELF STT_FILE symbols.  */
+#define BSF_FILE                (1 << 14)
+
+  /* Symbol is from dynamic linking information.  */
+#define BSF_DYNAMIC             (1 << 15)
+
+  /* The symbol denotes a data object.  Used in ELF, and perhaps
+     others someday.  */
+#define BSF_OBJECT              (1 << 16)
+
+  /* This symbol is a debugging symbol.  The value is the offset
+     into the section of the data.  BSF_DEBUGGING should be set
+     as well.  */
+#define BSF_DEBUGGING_RELOC     (1 << 17)
+
+  /* This symbol is thread local.  Used in ELF.  */
+#define BSF_THREAD_LOCAL        (1 << 18)
+
+  /* This symbol represents a complex relocation expression,
+     with the expression tree serialized in the symbol name.  */
+#define BSF_RELC                (1 << 19)
+
+  /* This symbol represents a signed complex relocation expression,
+     with the expression tree serialized in the symbol name.  */
+#define BSF_SRELC               (1 << 20)
+
+  /* This symbol was created by bfd_get_synthetic_symtab.  */
+#define BSF_SYNTHETIC           (1 << 21)
+
+  /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
+     The dynamic linker will compute the value of this symbol by
+     calling the function that it points to.  BSF_FUNCTION must
+     also be also set.  */
+#define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
+  /* This symbol is a globally unique data object.  The dynamic linker
+     will make sure that in the entire process there is just one symbol
+     with this name and type in use.  BSF_OBJECT must also be set.  */
+#define BSF_GNU_UNIQUE          (1 << 23)
+
+  /* This section symbol should be included in the symbol table.  */
+#define BSF_SECTION_SYM_USED    (1 << 24)
+
+  flagword flags;
+
+  /* A pointer to the section to which this symbol is
+     relative.  This will always be non NULL, there are special
+     sections for undefined and absolute symbols.  */
+  struct bfd_section *section;
+
+  /* Back end special data.  */
+  union
+    {
+      void *p;
+      bfd_vma i;
+    }
+  udata;
+}
+asymbol;
+
+typedef enum bfd_print_symbol
+{
+  bfd_print_symbol_name,
+  bfd_print_symbol_more,
+  bfd_print_symbol_all
+} bfd_print_symbol_type;
+
+/* Information about a symbol that nm needs.  */
+
+typedef struct _symbol_info
+{
+  symvalue value;
+  char type;
+  const char *name;            /* Symbol name.  */
+  unsigned char stab_type;     /* Stab type.  */
+  char stab_other;             /* Stab other.  */
+  short stab_desc;             /* Stab desc.  */
+  const char *stab_name;       /* String for stab type.  */
+} symbol_info;
+
+/* An empty string that will not match the address of any other
+   symbol name, even unnamed local symbols which will also have empty
+   string names.  This can be used to flag a symbol as corrupt if its
+   name uses an out of range string table index.  */
+extern const char bfd_symbol_error_name[];
+#define bfd_get_symtab_upper_bound(abfd) \
+       BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
+
+bool bfd_is_local_label (bfd *abfd, asymbol *sym);
+
+bool bfd_is_local_label_name (bfd *abfd, const char *name);
+
+#define bfd_is_local_label_name(abfd, name) \
+       BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
+
+bool bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
+
+#define bfd_is_target_special_symbol(abfd, sym) \
+       BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
+
+#define bfd_canonicalize_symtab(abfd, location) \
+       BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
+
+bool bfd_set_symtab
+   (bfd *abfd, asymbol **location, unsigned int count);
+
+void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
+
+#define bfd_make_empty_symbol(abfd) \
+       BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
+
+asymbol *_bfd_generic_make_empty_symbol (bfd *);
+
+#define bfd_make_debug_symbol(abfd) \
+       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd))
+
+int bfd_decode_symclass (asymbol *symbol);
+
+bool bfd_is_undefined_symclass (int symclass);
+
+void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+
+bool bfd_copy_private_symbol_data
+   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
+
+#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
+       BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
+		 (ibfd, isymbol, obfd, osymbol))
+
+/* Extracted from archive.c.  */
+/* A canonical archive symbol.  */
+/* This is a type pun with struct symdef/struct ranlib on purpose!  */
+typedef struct carsym
+{
+  const char *name;
+  file_ptr file_offset;        /* Look here to find the file.  */
+}
+carsym;
+
+/* A count of carsyms (canonical archive symbols).  */
+ typedef unsigned long symindex;
+#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
+
+symindex bfd_get_next_mapent
+   (bfd *abfd, symindex previous, carsym **sym);
+
+bool bfd_set_archive_head (bfd *output, bfd *new_head);
+
+bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
 
 /* Extracted from archures.c.  */
 enum bfd_architecture
@@ -1556,6 +1402,7 @@ enum bfd_architecture
 #define bfd_mach_mips16000             16000
 #define bfd_mach_mips16                16
 #define bfd_mach_mips5                 5
+#define bfd_mach_mips_allegrex         10111431 /* octal 'AL', 31.  */
 #define bfd_mach_mips_loongson_2e      3001
 #define bfd_mach_mips_loongson_2f      3002
 #define bfd_mach_mips_gs464            3003
@@ -1588,16 +1435,6 @@ enum bfd_architecture
 #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
 #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
 #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
-  bfd_arch_l1om,      /* Intel L1OM.  */
-#define bfd_mach_l1om                  (1 << 5)
-#define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
-  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 +1452,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
@@ -1725,6 +1561,7 @@ enum bfd_architecture
 #define bfd_mach_arm_8M_BASE   25
 #define bfd_mach_arm_8M_MAIN   26
 #define bfd_mach_arm_8_1M_MAIN 27
+#define bfd_mach_arm_9         28
   bfd_arch_nds32,     /* Andes NDS32.  */
 #define bfd_mach_n1            1
 #define bfd_mach_n1h           2
@@ -1738,7 +1575,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 +1636,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
@@ -1880,22 +1717,44 @@ enum bfd_architecture
 #define bfd_mach_msp46         46
 #define bfd_mach_msp47         47
 #define bfd_mach_msp54         54
-  bfd_arch_xc16x,     /* Infineon's XC16X Series.  */
-#define bfd_mach_xc16x         1
-#define bfd_mach_xc16xl        2
-#define bfd_mach_xc16xs        3
   bfd_arch_xgate,     /* Freescale XGATE.  */
 #define bfd_mach_xgate         1
   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.  */
+  bfd_arch_kvx,        /* Kalray VLIW core of the MPPA processor family */
+#define bfd_mach_kv3_unknown       0
+#define bfd_mach_kv3_1             1
+#define bfd_mach_kv3_1_64          2
+#define bfd_mach_kv3_1_usr         3
+#define bfd_mach_kv3_2             4
+#define bfd_mach_kv3_2_64          5
+#define bfd_mach_kv3_2_usr         6
+#define bfd_mach_kv4_1             7
+#define bfd_mach_kv4_1_64          8
+#define bfd_mach_kv4_1_usr         9
   bfd_arch_tilepro,   /* Tilera TILEPro.  */
   bfd_arch_tilegx,    /* Tilera TILE-Gx.  */
 #define bfd_mach_tilepro       1
@@ -1903,11 +1762,9 @@ 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
-#define bfd_mach_nios2r1       1
-#define bfd_mach_nios2r2       2
+#define bfd_mach_aarch64_llp64 64
   bfd_arch_visium,    /* Visium.  */
 #define bfd_mach_visium        1
   bfd_arch_wasm32,    /* WebAssembly.  */
@@ -1926,6 +1783,26 @@ 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_loongarch,       /* LoongArch */
+#define bfd_mach_loongarch32   1
+#define bfd_mach_loongarch64   2
+  bfd_arch_amdgcn,     /* AMDGCN */
+#define bfd_mach_amdgcn_unknown 0x000
+#define bfd_mach_amdgcn_gfx900  0x02c
+#define bfd_mach_amdgcn_gfx904  0x02e
+#define bfd_mach_amdgcn_gfx906  0x02f
+#define bfd_mach_amdgcn_gfx908  0x030
+#define bfd_mach_amdgcn_gfx90a  0x03f
+#define bfd_mach_amdgcn_gfx1010 0x033
+#define bfd_mach_amdgcn_gfx1011 0x034
+#define bfd_mach_amdgcn_gfx1012 0x035
+#define bfd_mach_amdgcn_gfx1030 0x036
+#define bfd_mach_amdgcn_gfx1031 0x037
+#define bfd_mach_amdgcn_gfx1032 0x038
+#define bfd_mach_amdgcn_gfx1100 0x041
+#define bfd_mach_amdgcn_gfx1101 0x046
+#define bfd_mach_amdgcn_gfx1102 0x047
   bfd_arch_last
   };
 
@@ -1942,17 +1819,16 @@ typedef struct bfd_arch_info
   /* TRUE if this is the default machine for the architecture.
      The default arch should be the first entry for an arch so that
      all the entries for that arch can be accessed via <<next>>.  */
-  bfd_boolean the_default;
+  bool the_default;
   const struct bfd_arch_info * (*compatible) (const struct bfd_arch_info *,
-                                              const struct bfd_arch_info *);
+					      const struct bfd_arch_info *);
 
-  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
+  bool (*scan) (const struct bfd_arch_info *, const char *);
 
   /* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
      IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
      TRUE, the buffer contains code.  */
-  void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
-                 bfd_boolean code);
+  void *(*fill) (bfd_size_type count, bool is_bigendian, bool code);
 
   const struct bfd_arch_info *next;
 
@@ -1975,11 +1851,11 @@ const bfd_arch_info_type *bfd_scan_arch
 const char **bfd_arch_list (void);
 
 const bfd_arch_info_type *bfd_arch_get_compatible
-   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
+   (const bfd *abfd, const bfd *bbfd, bool accept_unknowns);
 
 void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
 
-bfd_boolean bfd_default_set_arch_mach
+bool bfd_default_set_arch_mach
    (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
 
 enum bfd_architecture bfd_get_arch (const bfd *abfd);
@@ -2004,8 +1880,1197 @@ unsigned int bfd_octets_per_byte (const
 unsigned int bfd_arch_mach_octets_per_byte
    (enum bfd_architecture arch, unsigned long machine);
 
-/* Extracted from reloc.c.  */
+/* Extracted from bfd.c.  */
+typedef enum bfd_format
+  {
+    bfd_unknown = 0,   /* File format is unknown.  */
+    bfd_object,        /* Linker/assembler/compiler output.  */
+    bfd_archive,       /* Object archive file.  */
+    bfd_core,          /* Core dump.  */
+    bfd_type_end       /* Marks the end; don't use it!  */
+  }
+bfd_format;
+
+enum bfd_direction
+  {
+    no_direction = 0,
+    read_direction = 1,
+    write_direction = 2,
+    both_direction = 3
+  };
+
+enum bfd_last_io
+  {
+    bfd_io_seek = 0,
+    bfd_io_read = 1,
+    bfd_io_write = 2,
+    bfd_io_force = 3
+  };
+
+enum bfd_plugin_format
+  {
+    bfd_plugin_unknown = 0,
+    bfd_plugin_yes = 1,
+    bfd_plugin_yes_unused = 2,
+    bfd_plugin_no = 3
+  };
+
+struct bfd_build_id
+  {
+    bfd_size_type size;
+    bfd_byte data[1];
+  };
+
+enum bfd_lto_object_type
+  {
+    lto_non_object,            /* Not an LTO object.  */
+    lto_non_ir_object,         /* An object without LTO IR.  */
+    lto_slim_ir_object,        /* A slim LTO IR object.  */
+    lto_fat_ir_object,         /* A fat LTO IR object.  */
+    lto_mixed_object           /* A mixed LTO IR object.  */
+  };
+
+struct bfd_mmapped_entry
+  {
+    void *addr;
+    size_t size;
+  };
+
+struct bfd_mmapped
+  {
+    struct bfd_mmapped *next;
+    unsigned int max_entry;
+    unsigned int next_entry;
+    struct bfd_mmapped_entry entries[1];
+  };
+
+struct bfd
+{
+  /* The filename the application opened the BFD with.  */
+  const char *filename;
+
+  /* A pointer to the target jump table.  */
+  const struct bfd_target *xvec;
+
+  /* The IOSTREAM, and corresponding IO vector that provide access
+     to the file backing the BFD.  */
+  void *iostream;
+  const struct bfd_iovec *iovec;
+
+  /* The caching routines use these to maintain a
+     least-recently-used list of BFDs.  */
+  struct bfd *lru_prev, *lru_next;
+
+  /* Track current file position (or current buffer offset for
+     in-memory BFDs).  When a file is closed by the caching routines,
+     BFD retains state information on the file here.  */
+  ufile_ptr where;
+
+  /* File modified time, if mtime_set is TRUE.  */
+  long mtime;
+
+  /* A unique identifier of the BFD  */
+  unsigned int id;
+
+  /* Format_specific flags.  */
+  flagword flags;
+
+  /* Values that may appear in the flags field of a BFD.  These also
+     appear in the object_flags field of the bfd_target structure, where
+     they indicate the set of flags used by that backend (not all flags
+     are meaningful for all object file formats) (FIXME: at the moment,
+     the object_flags values have mostly just been copied from backend
+     to another, and are not necessarily correct).  */
+
+#define BFD_NO_FLAGS                0x0
+
+  /* BFD contains relocation entries.  */
+#define HAS_RELOC                   0x1
+
+  /* BFD is directly executable.  */
+#define EXEC_P                      0x2
+
+  /* BFD has line number information (basically used for F_LNNO in a
+     COFF header).  */
+#define HAS_LINENO                  0x4
+
+  /* BFD has debugging information.  */
+#define HAS_DEBUG                  0x08
+
+  /* BFD has symbols.  */
+#define HAS_SYMS                   0x10
+
+  /* BFD has local symbols (basically used for F_LSYMS in a COFF
+     header).  */
+#define HAS_LOCALS                 0x20
+
+  /* BFD is a dynamic object.  */
+#define DYNAMIC                    0x40
+
+  /* Text section is write protected (if D_PAGED is not set, this is
+     like an a.out NMAGIC file) (the linker sets this by default, but
+     clears it for -r or -N).  */
+#define WP_TEXT                    0x80
+
+  /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
+     linker sets this by default, but clears it for -r or -n or -N).  */
+#define D_PAGED                   0x100
+
+  /* BFD is relaxable (this means that bfd_relax_section may be able to
+     do something) (sometimes bfd_relax_section can do something even if
+     this is not set).  */
+#define BFD_IS_RELAXABLE          0x200
+
+  /* This may be set before writing out a BFD to request using a
+     traditional format.  For example, this is used to request that when
+     writing out an a.out object the symbols not be hashed to eliminate
+     duplicates.  */
+#define BFD_TRADITIONAL_FORMAT    0x400
+
+  /* This flag indicates that the BFD contents are actually cached
+     in memory.  If this is set, iostream points to a malloc'd
+     bfd_in_memory struct.  */
+#define BFD_IN_MEMORY             0x800
+
+  /* This BFD has been created by the linker and doesn't correspond
+     to any input file.  */
+#define BFD_LINKER_CREATED       0x1000
+
+  /* This may be set before writing out a BFD to request that it
+     be written using values for UIDs, GIDs, timestamps, etc. that
+     will be consistent from run to run.  */
+#define BFD_DETERMINISTIC_OUTPUT 0x2000
+
+  /* Compress sections in this BFD.  */
+#define BFD_COMPRESS             0x4000
+
+  /* Decompress sections in this BFD.  */
+#define BFD_DECOMPRESS           0x8000
+
+  /* BFD is a dummy, for plugins.  */
+#define BFD_PLUGIN              0x10000
+
+  /* Compress sections in this BFD with SHF_COMPRESSED from gABI.  */
+#define BFD_COMPRESS_GABI       0x20000
+
+  /* Convert ELF common symbol type to STT_COMMON or STT_OBJECT in this
+     BFD.  */
+#define BFD_CONVERT_ELF_COMMON  0x40000
+
+  /* Use the ELF STT_COMMON type in this BFD.  */
+#define BFD_USE_ELF_STT_COMMON  0x80000
+
+  /* Put pathnames into archives (non-POSIX).  */
+#define BFD_ARCHIVE_FULL_PATH  0x100000
+
+#define BFD_CLOSED_BY_CACHE    0x200000
+  /* Compress sections in this BFD with SHF_COMPRESSED zstd.  */
+#define BFD_COMPRESS_ZSTD      0x400000
+
+  /* Don't generate ELF section header.  */
+#define BFD_NO_SECTION_HEADER  0x800000
+
+  /* Flags bits which are for BFD use only.  */
+#define BFD_FLAGS_FOR_BFD_USE_MASK \
+  (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
+   | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
+   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON \
+   | BFD_NO_SECTION_HEADER)
+
+  /* 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;
+
+  /* POSIX.1-2017 (IEEE Std 1003.1) says of fopen : "When a file is
+     opened with update mode ('+' as the second or third character in
+     the mode argument), both input and output may be performed on
+     the associated stream.  However, the application shall ensure
+     that output is not directly followed by input without an
+     intervening call to fflush() or to a file positioning function
+     (fseek(), fsetpos(), or rewind()), and input is not directly
+     followed by output without an intervening call to a file
+     positioning function, unless the input operation encounters
+     end-of-file."
+     This field tracks the last IO operation, so that bfd can insert
+     a seek when IO direction changes.  */
+  ENUM_BITFIELD (bfd_last_io) last_io : 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;
+
+  /* Marks whether there was a default target specified when the
+     BFD was opened. This is used to select which matching algorithm
+     to use to choose the back end.  */
+  unsigned int target_defaulted : 1;
+
+  /* ... and here: (``once'' means at least once).  */
+  unsigned int opened_once : 1;
+
+  /* Set if we have a locally maintained mtime value, rather than
+     getting it from the file each time.  */
+  unsigned int mtime_set : 1;
+
+  /* Flag set if symbols from this BFD should not be exported.  */
+  unsigned int no_export : 1;
+
+  /* Remember when output has begun, to stop strange things
+     from happening.  */
+  unsigned int output_has_begun : 1;
+
+  /* Have archive map.  */
+  unsigned int has_armap : 1;
+
+  /* Set if this is a thin archive.  */
+  unsigned int is_thin_archive : 1;
+
+  /* Set if this archive should not cache element positions.  */
+  unsigned int no_element_cache : 1;
+
+  /* Set if only required symbols should be added in the link hash table for
+     this object.  Used by VMS linkers.  */
+  unsigned int selective_search : 1;
+
+  /* Set if this is the linker output BFD.  */
+  unsigned int is_linker_output : 1;
+
+  /* Set if this is the linker input BFD.  */
+  unsigned int is_linker_input : 1;
+
+  /* If this is an input for a compiler plug-in library.  */
+  ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2;
+
+  /* Set if this is a plugin output file.  */
+  unsigned int lto_output : 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;
+
+  /* LTO object type.  */
+  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 3;
+
+  /* Set if this BFD is currently being processed by
+     bfd_check_format_matches.  This is checked by the cache to
+     avoid closing the BFD in this case.  This should only be
+     examined or modified while the BFD lock is held.  */
+  unsigned int in_format_matches : 1;
+
+  /* Set to dummy BFD created when claimed by a compiler plug-in
+     library.  */
+  bfd *plugin_dummy_bfd;
+
+  /* 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
+     normally be the same as origin, except for thin archives,
+     when it will contain the current offset of the proxy in the
+     thin archive rather than the offset of the bfd in its actual
+     container.  */
+  ufile_ptr proxy_origin;
+
+  /* A hash table for section names.  */
+  struct bfd_hash_table section_htab;
+
+  /* Pointer to linked list of sections.  */
+  struct bfd_section *sections;
+
+  /* The last section on the section list.  */
+  struct bfd_section *section_last;
+
+  /* The object-only section on the section list.  */
+  struct bfd_section *object_only_section;
+
+  /* The number of sections.  */
+  unsigned int section_count;
+
+  /* The archive plugin file descriptor.  */
+  int archive_plugin_fd;
+
+  /* The number of opens on the archive plugin file descriptor.  */
+  unsigned int archive_plugin_fd_open_count;
+
+  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
+     be used only for archive elements.  */
+  int archive_pass;
+
+  /* The total size of memory from bfd_alloc.  */
+  bfd_size_type alloc_size;
+
+  /* Stuff only useful for object files:
+     The start address.  */
+  bfd_vma start_address;
+
+  /* Symbol table for output BFD (with symcount entries).
+     Also used by the linker to cache input BFD symbols.  */
+  struct bfd_symbol **outsymbols;
+
+  /* Used for input and output.  */
+  unsigned int symcount;
+
+  /* Used for slurped dynamic symbol tables.  */
+  unsigned int dynsymcount;
+
+  /* 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.  */
+  struct bfd *archive_next;    /* The next BFD in the archive.  */
+  struct bfd *archive_head;    /* The first BFD in the archive.  */
+  struct bfd *nested_archives; /* List of nested archive in a flattened
+				  thin archive.  */
+
+  union {
+    /* For input BFDs, a chain of BFDs involved in a link.  */
+    struct bfd *next;
+    /* For output BFD, the linker hash table.  */
+    struct bfd_link_hash_table *hash;
+  } link;
+
+  /* Used by the back end to hold private data.  */
+  union
+    {
+      struct aout_data_struct *aout_data;
+      struct artdata *aout_ar_data;
+      struct coff_tdata *coff_obj_data;
+      struct pe_tdata *pe_obj_data;
+      struct xcoff_tdata *xcoff_obj_data;
+      struct ecoff_tdata *ecoff_obj_data;
+      struct srec_data_struct *srec_data;
+      struct verilog_data_struct *verilog_data;
+      struct ihex_data_struct *ihex_data;
+      struct tekhex_data_struct *tekhex_data;
+      struct elf_obj_tdata *elf_obj_data;
+      struct mmo_data_struct *mmo_data;
+      struct trad_core_struct *trad_core_data;
+      struct som_data_struct *som_data;
+      struct hpux_core_struct *hpux_core_data;
+      struct hppabsd_core_struct *hppabsd_core_data;
+      struct sgi_core_struct *sgi_core_data;
+      struct lynx_core_struct *lynx_core_data;
+      struct osf_core_struct *osf_core_data;
+      struct cisco_core_struct *cisco_core_data;
+      struct netbsd_core_struct *netbsd_core_data;
+      struct mach_o_data_struct *mach_o_data;
+      struct mach_o_fat_data_struct *mach_o_fat_data;
+      struct plugin_data_struct *plugin_data;
+      struct bfd_pef_data_struct *pef_data;
+      struct bfd_pef_xlib_data_struct *pef_xlib_data;
+      struct bfd_sym_data_struct *sym_data;
+      void *any;
+    }
+  tdata;
+
+  /* Used by the application to hold private data.  */
+  void *usrdata;
+
+  /* Where all the allocated stuff under this BFD goes.  This is a
+     struct objalloc *, but we use void * to avoid requiring the inclusion
+     of objalloc.h.  */
+  void *memory;
+
+  /* For input BFDs, the build ID, if the object has one. */
+  const struct bfd_build_id *build_id;
+
+  /* For input BFDs, mmapped entries. */
+  struct bfd_mmapped *mmapped;
+};
+
+static inline const char *
+bfd_get_filename (const bfd *abfd)
+{
+  return abfd->filename;
+}
+
+static inline bool
+bfd_get_cacheable (const bfd *abfd)
+{
+  return abfd->cacheable;
+}
+
+static inline enum bfd_format
+bfd_get_format (const bfd *abfd)
+{
+  return abfd->format;
+}
+
+static inline enum bfd_lto_object_type
+bfd_get_lto_type (const bfd *abfd)
+{
+  return abfd->lto_type;
+}
+
+static inline bool
+bfd_lto_slim_symbol_p (const bfd *abfd, const char *name)
+{
+  return (bfd_get_lto_type (abfd) != lto_non_ir_object
+	  && name != NULL
+	  && name[0] == '_'
+	  && name[1] == '_'
+	  && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0);
+}
+
+static inline flagword
+bfd_get_file_flags (const bfd *abfd)
+{
+  return abfd->flags;
+}
+
+static inline bfd_vma
+bfd_get_start_address (const bfd *abfd)
+{
+  return abfd->start_address;
+}
+
+static inline unsigned int
+bfd_get_symcount (const bfd *abfd)
+{
+  return abfd->symcount;
+}
+
+static inline unsigned int
+bfd_get_dynamic_symcount (const bfd *abfd)
+{
+  return abfd->dynsymcount;
+}
+
+static inline struct bfd_symbol **
+bfd_get_outsymbols (const bfd *abfd)
+{
+  return abfd->outsymbols;
+}
+
+static inline unsigned int
+bfd_count_sections (const bfd *abfd)
+{
+  return abfd->section_count;
+}
+
+static inline bool
+bfd_has_map (const bfd *abfd)
+{
+  return abfd->has_armap;
+}
+
+static inline bool
+bfd_is_thin_archive (const bfd *abfd)
+{
+  return abfd->is_thin_archive;
+}
+
+static inline void *
+bfd_usrdata (const bfd *abfd)
+{
+  return abfd->usrdata;
+}
+
+/* See note beside bfd_set_section_userdata.  */
+static inline bool
+bfd_set_cacheable (bfd * abfd, bool val)
+{
+  abfd->cacheable = val;
+  return true;
+}
+
+static inline void
+bfd_set_thin_archive (bfd *abfd, bool val)
+{
+  abfd->is_thin_archive = val;
+}
+
+static inline void
+bfd_set_usrdata (bfd *abfd, void *val)
+{
+  abfd->usrdata = val;
+}
+
+static inline asection *
+bfd_asymbol_section (const asymbol *sy)
+{
+  return sy->section;
+}
+
+static inline bfd_vma
+bfd_asymbol_value (const asymbol *sy)
+{
+  return sy->section->vma + sy->value;
+}
+
+static inline const char *
+bfd_asymbol_name (const asymbol *sy)
+{
+  return sy->name;
+}
+
+static inline struct bfd *
+bfd_asymbol_bfd (const asymbol *sy)
+{
+  return sy->the_bfd;
+}
+
+static inline void
+bfd_set_asymbol_name (asymbol *sy, const char *name)
+{
+  sy->name = name;
+}
+
+/* For input sections return the original size on disk of the
+   section.  For output sections return the current size.  */
+static inline bfd_size_type
+bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
+{
+  if (abfd->direction != write_direction && sec->rawsize != 0)
+    return sec->rawsize;
+  return sec->size;
+}
+
+/* Find the address one past the end of SEC.  */
+static inline bfd_size_type
+bfd_get_section_limit (const bfd *abfd, const asection *sec)
+{
+  return (bfd_get_section_limit_octets (abfd, sec)
+	  / bfd_octets_per_byte (abfd, sec));
+}
+
+/* For input sections return the larger of the current size and the
+   original size on disk of the section.  For output sections return
+   the current size.  */
+static inline bfd_size_type
+bfd_get_section_alloc_size (const bfd *abfd, const asection *sec)
+{
+  if (abfd->direction != write_direction && sec->rawsize > sec->size)
+    return sec->rawsize;
+  return sec->size;
+}
+
+/* Functions to handle insertion and deletion of a bfd's sections.  These
+   only handle the list pointers, ie. do not adjust section_count,
+   target_index etc.  */
+static inline void
+bfd_section_list_remove (bfd *abfd, asection *s)
+{
+  asection *next = s->next;
+  asection *prev = s->prev;
+  if (prev)
+    prev->next = next;
+  else
+    abfd->sections = next;
+  if (next)
+    next->prev = prev;
+  else
+    abfd->section_last = prev;
+}
+
+static inline void
+bfd_section_list_append (bfd *abfd, asection *s)
+{
+  s->next = 0;
+  if (abfd->section_last)
+    {
+      s->prev = abfd->section_last;
+      abfd->section_last->next = s;
+    }
+  else
+    {
+      s->prev = 0;
+      abfd->sections = s;
+    }
+  abfd->section_last = s;
+}
+
+static inline void
+bfd_section_list_prepend (bfd *abfd, asection *s)
+{
+  s->prev = 0;
+  if (abfd->sections)
+    {
+      s->next = abfd->sections;
+      abfd->sections->prev = s;
+    }
+  else
+    {
+      s->next = 0;
+      abfd->section_last = s;
+    }
+  abfd->sections = s;
+}
+
+static inline void
+bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s)
+{
+  asection *next = a->next;
+  s->next = next;
+  s->prev = a;
+  a->next = s;
+  if (next)
+    next->prev = s;
+  else
+    abfd->section_last = s;
+}
+
+static inline void
+bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s)
+{
+  asection *prev = b->prev;
+  s->prev = prev;
+  s->next = b;
+  b->prev = s;
+  if (prev)
+    prev->next = s;
+  else
+    abfd->sections = s;
+}
+
+static inline bool
+bfd_section_removed_from_list (const bfd *abfd, const asection *s)
+{
+  return s->next ? s->next->prev != s : abfd->section_last != s;
+}
+
+typedef enum bfd_error
+{
+  bfd_error_no_error = 0,
+  bfd_error_system_call,
+  bfd_error_invalid_target,
+  bfd_error_wrong_format,
+  bfd_error_wrong_object_format,
+  bfd_error_invalid_operation,
+  bfd_error_no_memory,
+  bfd_error_no_symbols,
+  bfd_error_no_armap,
+  bfd_error_no_more_archived_files,
+  bfd_error_malformed_archive,
+  bfd_error_missing_dso,
+  bfd_error_file_not_recognized,
+  bfd_error_file_ambiguously_recognized,
+  bfd_error_no_contents,
+  bfd_error_nonrepresentable_section,
+  bfd_error_no_debug_section,
+  bfd_error_bad_value,
+  bfd_error_file_truncated,
+  bfd_error_file_too_big,
+  bfd_error_sorry,
+  bfd_error_on_input,
+  bfd_error_invalid_error_code
+}
+bfd_error_type;
+
+bfd_error_type bfd_get_error (void);
+
+void bfd_set_error (bfd_error_type error_tag);
+
+void bfd_set_input_error (bfd *input, bfd_error_type error_tag);
+
+const char *bfd_errmsg (bfd_error_type error_tag);
+
+void bfd_perror (const char *message);
+
+typedef void (*bfd_error_handler_type) (const char *, va_list);
+
+typedef int (*bfd_print_callback) (void *, const char *, ...);
+void bfd_print_error (bfd_print_callback print_func,
+    void *stream, const char *fmt, va_list ap);
+
+void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
+
+bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
+
+void bfd_set_error_program_name (const char *);
+
+typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
+					 const char *bfd_version,
+					 const char *bfd_file,
+					 int bfd_line);
+
+bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
+
+unsigned int bfd_init (void);
+
+/* Value returned by bfd_init.  */
+#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
+
+typedef bool (*bfd_lock_unlock_fn_type) (void *);
+bool bfd_thread_init
+   (bfd_lock_unlock_fn_type lock,
+    bfd_lock_unlock_fn_type unlock,
+    void *data);
+
+void bfd_thread_cleanup (void);
+
+long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
+
+long bfd_canonicalize_reloc
+   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
+
+void bfd_set_reloc
+   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
+
+#define bfd_set_reloc(abfd, asect, location, count) \
+       BFD_SEND (abfd, _bfd_set_reloc, (abfd, asect, location, count))
+bool bfd_set_file_flags (bfd *abfd, flagword flags);
+
+int bfd_get_arch_size (bfd *abfd);
+
+int bfd_get_sign_extend_vma (bfd *abfd);
+
+bool bfd_set_start_address (bfd *abfd, bfd_vma vma);
+
+unsigned int bfd_get_gp_size (bfd *abfd);
+
+void bfd_set_gp_size (bfd *abfd, unsigned int i);
+
+void bfd_set_gp_value (bfd *abfd, bfd_vma v);
+
+bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
+
+bool bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
+
+#define bfd_copy_private_header_data(ibfd, obfd) \
+       BFD_SEND (obfd, _bfd_copy_private_header_data, \
+		 (ibfd, obfd))
+bool bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
+
+#define bfd_copy_private_bfd_data(ibfd, obfd) \
+       BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
+		 (ibfd, obfd))
+bool bfd_set_private_flags (bfd *abfd, flagword flags);
+
+#define bfd_set_private_flags(abfd, flags) \
+       BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
+#define bfd_sizeof_headers(abfd, info) \
+       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
+
+#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
+       BFD_SEND (abfd, _bfd_find_nearest_line, \
+		 (abfd, syms, sec, off, file, func, line, NULL))
+
+#define bfd_find_nearest_line_with_alt(abfd, alt_filename, sec, syms, off, \
+				       file, func, line, disc) \
+       BFD_SEND (abfd, _bfd_find_nearest_line_with_alt, \
+		 (abfd, alt_filename, syms, sec, off, file, func, line, disc))
+
+#define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
+					   line, disc) \
+       BFD_SEND (abfd, _bfd_find_nearest_line, \
+		 (abfd, syms, sec, off, file, func, line, disc))
+
+#define bfd_find_line(abfd, syms, sym, file, line) \
+       BFD_SEND (abfd, _bfd_find_line, \
+		 (abfd, syms, sym, file, line))
+
+#define bfd_find_inliner_info(abfd, file, func, line) \
+       BFD_SEND (abfd, _bfd_find_inliner_info, \
+		 (abfd, file, func, line))
+
+#define bfd_debug_info_start(abfd) \
+       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
+
+#define bfd_debug_info_end(abfd) \
+       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
+
+#define bfd_debug_info_accumulate(abfd, section) \
+       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
+
+#define 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))
+
+#define bfd_set_arch_mach(abfd, arch, mach)\
+       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
+
+#define bfd_relax_section(abfd, section, link_info, again) \
+       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
+
+#define bfd_gc_sections(abfd, link_info) \
+       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
+
+#define bfd_lookup_section_flags(link_info, flag_info, section) \
+       BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
+
+#define bfd_merge_sections(abfd, link_info) \
+       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
+
+#define bfd_is_group_section(abfd, sec) \
+       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
+
+#define bfd_group_name(abfd, sec) \
+       BFD_SEND (abfd, _bfd_group_name, (abfd, sec))
+
+#define bfd_discard_group(abfd, sec) \
+       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
+
+#define bfd_link_hash_table_create(abfd) \
+       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
+
+#define bfd_link_add_symbols(abfd, info) \
+       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
+
+#define bfd_link_just_syms(abfd, sec, info) \
+       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
+
+#define bfd_final_link(abfd, info) \
+       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
+
+#define bfd_free_cached_info(abfd) \
+       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
+
+#define bfd_get_dynamic_symtab_upper_bound(abfd) \
+       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
+
+#define bfd_print_private_bfd_data(abfd, file)\
+       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
+
+#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
+
+#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
+       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
+						   dyncount, dynsyms, ret))
+
+#define bfd_get_dynamic_reloc_upper_bound(abfd) \
+       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
+
+#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
+
+bfd_byte *bfd_get_relocated_section_contents
+   (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
+    bool, asymbol **);
+
+bool bfd_record_phdr
+   (bfd *, unsigned long, bool, flagword, bool, bfd_vma,
+    bool, bool, unsigned int, struct bfd_section **);
+
+void bfd_sprintf_vma (bfd *, char *, bfd_vma);
+void bfd_fprintf_vma (bfd *, void *, bfd_vma);
 
+#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd, stdout, x)
+
+bool bfd_alt_mach_code (bfd *abfd, int alternative);
+
+bfd_vma bfd_emul_get_maxpagesize (const char *);
+
+bfd_vma bfd_emul_get_commonpagesize (const char *);
+
+char *bfd_demangle (bfd *, const char *, int);
+
+asymbol *bfd_group_signature (asection *group, asymbol **isympp);
+
+/* Extracted from bfdio.c.  */
+bfd_size_type bfd_read (void *, bfd_size_type, bfd *)
+ATTRIBUTE_WARN_UNUSED_RESULT;
+
+bfd_size_type bfd_write (const void *, bfd_size_type, bfd *)
+ATTRIBUTE_WARN_UNUSED_RESULT;
+
+file_ptr bfd_tell (bfd *) ATTRIBUTE_WARN_UNUSED_RESULT;
+
+int bfd_flush (bfd *);
+
+int bfd_stat (bfd *, struct stat *) ATTRIBUTE_WARN_UNUSED_RESULT;
+
+int bfd_seek (bfd *, file_ptr, int) ATTRIBUTE_WARN_UNUSED_RESULT;
+
+long bfd_get_mtime (bfd *abfd);
+
+ufile_ptr bfd_get_size (bfd *abfd);
+
+ufile_ptr bfd_get_file_size (bfd *abfd);
+
+void *bfd_mmap (bfd *abfd, void *addr, size_t len,
+    int prot, int flags, file_ptr offset,
+    void **map_addr, size_t *map_len)
+ATTRIBUTE_WARN_UNUSED_RESULT;
+
+time_t bfd_get_current_time (time_t now);
+
+/* Extracted from cache.c.  */
+bool bfd_cache_close (bfd *abfd);
+
+bool bfd_cache_close_all (void);
+
+unsigned bfd_cache_size (void);
+
+/* Extracted from compress.c.  */
+/* Types of compressed DWARF debug sections.  */
+enum compressed_debug_section_type
+{
+  COMPRESS_DEBUG_NONE = 0,
+  COMPRESS_DEBUG_GNU_ZLIB = 1 << 1,
+  COMPRESS_DEBUG_GABI_ZLIB = 1 << 2,
+  COMPRESS_DEBUG_ZSTD = 1 << 3,
+  COMPRESS_UNKNOWN = 1 << 4
+};
+
+/* Tuple for compressed_debug_section_type and their name.  */
+struct compressed_type_tuple
+{
+  enum compressed_debug_section_type type;
+  const char *name;
+};
+
+/* Compression header ch_type values.  */
+enum compression_type
+{
+  ch_none = 0,
+  ch_compress_zlib = 1 ,       /* Compressed with zlib.  */
+  ch_compress_zstd = 2         /* Compressed with zstd (www.zstandard.org).  */
+};
+
+static inline char *
+bfd_debug_name_to_zdebug (bfd *abfd, const char *name)
+{
+  size_t len = strlen (name);
+  char *new_name = (char *) bfd_alloc (abfd, len + 2);
+  if (new_name == NULL)
+    return NULL;
+  new_name[0] = '.';
+  new_name[1] = 'z';
+  memcpy (new_name + 2, name + 1, len);
+  return new_name;
+}
+
+static inline char *
+bfd_zdebug_name_to_debug (bfd *abfd, const char *name)
+{
+  size_t len = strlen (name);
+  char *new_name = (char *) bfd_alloc (abfd, len);
+  if (new_name == NULL)
+    return NULL;
+  new_name[0] = '.';
+  memcpy (new_name + 1, name + 2, len - 1);
+  return new_name;
+}
+
+enum compressed_debug_section_type
+bfd_get_compression_algorithm (const char *name);
+
+const char *bfd_get_compression_algorithm_name
+   (enum compressed_debug_section_type type);
+
+void bfd_update_compression_header
+   (bfd *abfd, bfd_byte *contents, asection *sec);
+
+int bfd_get_compression_header_size (bfd *abfd, asection *sec);
+
+bool bfd_convert_section_setup
+   (bfd *ibfd, asection *isec, bfd *obfd,
+    const char **new_name, bfd_size_type *new_size);
+
+bool bfd_convert_section_contents
+   (bfd *ibfd, asection *isec, bfd *obfd,
+    bfd_byte **ptr, bfd_size_type *ptr_size);
+
+bool bfd_get_full_section_contents
+   (bfd *abfd, asection *section, bfd_byte **ptr);
+
+bool bfd_is_section_compressed_info
+   (bfd *abfd, asection *section,
+    int *compression_header_size_p,
+    bfd_size_type *uncompressed_size_p,
+    unsigned int *uncompressed_alignment_power_p,
+    enum compression_type *ch_type);
+
+bool bfd_is_section_compressed
+   (bfd *abfd, asection *section);
+
+bool bfd_init_section_decompress_status
+   (bfd *abfd, asection *section);
+
+bool bfd_init_section_compress_status
+   (bfd *abfd, asection *section);
+
+bool bfd_compress_section
+   (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer);
+
+/* Extracted from corefile.c.  */
+const char *bfd_core_file_failing_command (bfd *abfd);
+
+int bfd_core_file_failing_signal (bfd *abfd);
+
+int bfd_core_file_pid (bfd *abfd);
+
+bool core_file_matches_executable_p
+   (bfd *core_bfd, bfd *exec_bfd);
+
+bool generic_core_file_matches_executable_p
+   (bfd *core_bfd, bfd *exec_bfd);
+
+/* Extracted from format.c.  */
+bool bfd_check_format (bfd *abfd, bfd_format format);
+
+bool bfd_check_format_matches
+   (bfd *abfd, bfd_format format, char ***matching);
+
+bool bfd_set_format (bfd *abfd, bfd_format format);
+
+const char *bfd_format_string (bfd_format format);
+
+/* Extracted from linker.c.  */
+/* Return TRUE if the symbol described by a linker hash entry H
+   is going to be absolute.  Linker-script defined symbols can be
+   converted from absolute to section-relative ones late in the
+   link.  Use this macro to correctly determine whether the symbol
+   will actually end up absolute in output.  */
+#define bfd_is_abs_symbol(H) \
+  (((H)->type == bfd_link_hash_defined \
+    || (H)->type == bfd_link_hash_defweak) \
+   && bfd_is_abs_section ((H)->u.def.section) \
+   && !(H)->rel_from_abs)
+
+bool _bfd_generic_link_add_one_symbol
+   (struct bfd_link_info *info,
+    bfd *abfd,
+    const char *name,
+    flagword flags,
+    asection *section,
+    bfd_vma value,
+    const char *string,
+    bool copy,
+    bool collect,
+    struct bfd_link_hash_entry **hashp);
+
+bool bfd_link_align_section (asection *, unsigned int);
+
+bool bfd_link_split_section (bfd *abfd, asection *sec);
+
+#define bfd_link_split_section(abfd, sec) \
+       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
+
+bool bfd_section_already_linked (bfd *abfd,
+    asection *sec,
+    struct bfd_link_info *info);
+
+#define bfd_section_already_linked(abfd, sec, info) \
+       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
+
+bool bfd_generic_define_common_symbol
+   (bfd *output_bfd, struct bfd_link_info *info,
+    struct bfd_link_hash_entry *h);
+
+#define bfd_define_common_symbol(output_bfd, info, h) \
+       BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
+
+void _bfd_generic_link_hide_symbol
+   (bfd *output_bfd, struct bfd_link_info *info,
+    struct bfd_link_hash_entry *h);
+
+#define bfd_link_hide_symbol(output_bfd, info, h) \
+       BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))
+
+struct bfd_link_hash_entry *bfd_generic_define_start_stop
+   (struct bfd_link_info *info,
+    const char *symbol, asection *sec);
+
+#define bfd_define_start_stop(output_bfd, info, symbol, sec) \
+       BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec))
+
+struct bfd_elf_version_tree * bfd_find_version_for_sym
+   (struct bfd_elf_version_tree *verdefs,
+    const char *sym_name, bool *hide);
+
+bool bfd_hide_sym_by_version
+   (struct bfd_elf_version_tree *verdefs, const char *sym_name);
+
+bool bfd_link_check_relocs
+   (bfd *abfd, struct bfd_link_info *info);
+
+bool _bfd_generic_link_check_relocs
+   (bfd *abfd, struct bfd_link_info *info);
+
+bool bfd_merge_private_bfd_data
+   (bfd *ibfd, struct bfd_link_info *info);
+
+#define bfd_merge_private_bfd_data(ibfd, info) \
+       BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
+		 (ibfd, info))
+
+/* Extracted from opncls.c.  */
+bfd *bfd_fopen (const char *filename, const char *target,
+    const char *mode, int fd);
+
+bfd *bfd_openr (const char *filename, const char *target);
+
+bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
+
+bfd *bfd_fdopenw (const char *filename, const char *target, int fd);
+
+bfd *bfd_openstreamr (const char * filename, const char * target,
+    void * stream);
+
+bfd *bfd_openr_iovec (const char *filename, const char *target,
+    void *(*open_func) (struct bfd *nbfd,
+	void *open_closure),
+    void *open_closure,
+    file_ptr (*pread_func) (struct bfd *nbfd,
+	void *stream,
+	void *buf,
+	file_ptr nbytes,
+	file_ptr offset),
+    int (*close_func) (struct bfd *nbfd,
+	void *stream),
+    int (*stat_func) (struct bfd *abfd,
+	void *stream,
+	struct stat *sb));
+
+bfd *bfd_openw (const char *filename, const char *target);
+
+bfd *bfd_elf_bfd_from_remote_memory
+   (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
+    int (*target_read_memory)
+       (bfd_vma vma, bfd_byte *myaddr, bfd_size_type len));
+
+bool bfd_close (bfd *abfd);
+
+bool bfd_close_all_done (bfd *);
+
+bfd *bfd_create (const char *filename, bfd *templ);
+
+bool bfd_make_writable (bfd *abfd);
+
+bool bfd_make_readable (bfd *abfd);
+
+uint32_t bfd_calc_gnu_debuglink_crc32
+   (uint32_t crc, const bfd_byte *buf, bfd_size_type len);
+
+char *bfd_get_debug_link_info (bfd *abfd, uint32_t *crc32_out);
+
+char *bfd_get_alt_debug_link_info (bfd * abfd,
+    bfd_size_type *buildid_len,
+    bfd_byte **buildid_out);
+
+char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
+
+char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir);
+
+struct bfd_section *bfd_create_gnu_debuglink_section
+   (bfd *abfd, const char *filename);
+
+bool bfd_fill_in_gnu_debuglink_section
+   (bfd *abfd, struct bfd_section *sect, const char *filename);
+
+char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
+
+const char *bfd_set_filename (bfd *abfd, const char *filename);
+
+const char *bfd_extract_object_only_section
+   (bfd *abfd);
+
+/* Extracted from reloc.c.  */
 typedef enum bfd_reloc_status
 {
   /* No errors detected.  Note - the value 2 is used so that it
@@ -2024,7 +3089,7 @@ typedef enum bfd_reloc_status
   /* Unsupported relocation size requested.  */
   bfd_reloc_notsupported,
 
-  /* Unused.  */
+  /* Target specific meaning.  */
   bfd_reloc_other,
 
   /* The symbol to relocate against was undefined.  */
@@ -2039,7 +3104,7 @@ typedef enum bfd_reloc_status
 
 typedef const struct reloc_howto_struct reloc_howto_type;
 
-typedef struct reloc_cache_entry
+struct reloc_cache_entry
 {
   /* A pointer into the canonical table of pointers.  */
   struct bfd_symbol **sym_ptr_ptr;
@@ -2053,9 +3118,7 @@ typedef struct reloc_cache_entry
   /* Pointer to how to perform the required relocation.  */
   reloc_howto_type *howto;
 
-}
-arelent;
-
+};
 
 enum complain_overflow
 {
@@ -2075,6 +3138,7 @@ enum complain_overflow
      unsigned number.  */
   complain_overflow_unsigned
 };
+
 struct reloc_howto_struct
 {
   /* The type field has mainly a documentary use - the back end can
@@ -2082,10 +3146,8 @@ struct reloc_howto_struct
      an external reloc number is stored in this field.  */
   unsigned int type;
 
-  /* The encoded size of the item to be relocated.  This is *not* a
-     power-of-two measure.  Use bfd_get_reloc_size to find the size
-     of the item in bytes.  */
-  unsigned int size:3;
+  /* The size of the item to be relocated in bytes.  */
+  unsigned int size:4;
 
   /* The number of bits in the field to be relocated.  This is used
      when doing overflow checking.  */
@@ -2134,6 +3196,11 @@ struct reloc_howto_struct
      empty (e.g., ELF); this flag signals the fact.  */
   unsigned int pcrel_offset:1;
 
+  /* Whether bfd_install_relocation should just install the addend,
+     or should follow the practice of some older object formats and
+     install a value including the symbol.  */
+  unsigned int install_addend:1;
+
   /* src_mask selects the part of the instruction (or data) to be used
      in the relocation sum.  If the target relocations don't have an
      addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
@@ -2159,15 +3226,22 @@ struct reloc_howto_struct
   const char *name;
 };
 
+#define HOWTO_INSTALL_ADDEND 0
+#define HOWTO_RSIZE(sz) ((sz) < 0 ? -(sz) : (sz))
 #define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,   \
-              inplace, src_mask, dst_mask, pcrel_off)                  \
-  { (unsigned) type, size < 0 ? -size : size, bits, right, left, ovf,  \
-    size < 0, pcrel, inplace, pcrel_off, src_mask, dst_mask, func, name }
+	      inplace, src_mask, dst_mask, pcrel_off)                  \
+  { (unsigned) type, HOWTO_RSIZE (size), bits, right, left, ovf,       \
+    size < 0, pcrel, inplace, pcrel_off, HOWTO_INSTALL_ADDEND,         \
+    src_mask, dst_mask, func, name }
 #define EMPTY_HOWTO(C) \
-  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
-         NULL, FALSE, 0, 0, FALSE)
+  HOWTO ((C), 0, 1, 0, false, 0, complain_overflow_dont, NULL, \
+	 NULL, false, 0, 0, false)
 
-unsigned int bfd_get_reloc_size (reloc_howto_type *);
+static inline unsigned int
+bfd_get_reloc_size (reloc_howto_type *howto)
+{
+  return howto->size;
+}
 
 typedef struct relent_chain
 {
@@ -2183,7 +3257,7 @@ bfd_reloc_status_type bfd_check_overflow
     unsigned int addrsize,
     bfd_vma relocation);
 
-bfd_boolean bfd_reloc_offset_in_range
+bool bfd_reloc_offset_in_range
    (reloc_howto_type *howto,
     bfd *abfd,
     asection *section,
@@ -2204,11 +3278,12 @@ bfd_reloc_status_type bfd_install_reloca
     asection *input_section,
     char **error_message);
 
-enum bfd_reloc_code_real {
+enum bfd_reloc_code_real
+{
   _dummy_first_bfd_reloc_code_real,
 
 
-/* Basic absolute relocations of N bits.  */
+  /* Basic absolute relocations of N bits.  */
   BFD_RELOC_64,
   BFD_RELOC_32,
   BFD_RELOC_26,
@@ -2217,9 +3292,10 @@ enum bfd_reloc_code_real {
   BFD_RELOC_14,
   BFD_RELOC_8,
 
-/* PC-relative relocations.  Sometimes these are relative to the address
-of the relocation itself; sometimes they are relative to the start of
-the section containing the relocation.  It depends on the specific target.  */
+  /* PC-relative relocations.  Sometimes these are relative to the
+     address of the relocation itself; sometimes they are relative to the
+     start of the section containing the relocation.  It depends on the
+     specific target.  */
   BFD_RELOC_64_PCREL,
   BFD_RELOC_32_PCREL,
   BFD_RELOC_24_PCREL,
@@ -2227,10 +3303,11 @@ the section containing the relocation.
   BFD_RELOC_12_PCREL,
   BFD_RELOC_8_PCREL,
 
-/* Section relative relocations.  Some targets need this for DWARF2.  */
+  /* Section relative relocations.  Some targets need this for DWARF2.  */
   BFD_RELOC_32_SECREL,
+  BFD_RELOC_16_SECIDX,
 
-/* For ELF.  */
+  /* For ELF.  */
   BFD_RELOC_32_GOT_PCREL,
   BFD_RELOC_16_GOT_PCREL,
   BFD_RELOC_8_GOT_PCREL,
@@ -2253,11 +3330,11 @@ the section containing the relocation.
   BFD_RELOC_HI16_S_PLTOFF,
   BFD_RELOC_8_PLTOFF,
 
-/* Size relocations.  */
+  /* Size relocations.  */
   BFD_RELOC_SIZE32,
   BFD_RELOC_SIZE64,
 
-/* Relocations used by 68K ELF.  */
+  /* Relocations used by 68K ELF.  */
   BFD_RELOC_68K_GLOB_DAT,
   BFD_RELOC_68K_JMP_SLOT,
   BFD_RELOC_68K_RELATIVE,
@@ -2277,7 +3354,7 @@ the section containing the relocation.
   BFD_RELOC_68K_TLS_LE16,
   BFD_RELOC_68K_TLS_LE8,
 
-/* Linkage-table relative.  */
+  /* Linkage-table relative.  */
   BFD_RELOC_32_BASEREL,
   BFD_RELOC_16_BASEREL,
   BFD_RELOC_LO16_BASEREL,
@@ -2286,33 +3363,33 @@ the section containing the relocation.
   BFD_RELOC_8_BASEREL,
   BFD_RELOC_RVA,
 
-/* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
+  /* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
   BFD_RELOC_8_FFnn,
 
-/* These PC-relative relocations are stored as word displacements --
-i.e., byte displacements shifted right two bits.  The 30-bit word
-displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
-SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
-signed 16-bit displacement is used on the MIPS, and the 23-bit
-displacement is used on the Alpha.  */
+  /* These PC-relative relocations are stored as word displacements --
+     i.e., byte displacements shifted right two bits.  The 30-bit word
+     displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
+     SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
+     signed 16-bit displacement is used on the MIPS, and the 23-bit
+     displacement is used on the Alpha.  */
   BFD_RELOC_32_PCREL_S2,
   BFD_RELOC_16_PCREL_S2,
   BFD_RELOC_23_PCREL_S2,
 
-/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
-the target word.  These are used on the SPARC.  */
+  /* High 22 bits and low 10 bits of 32-bit value, placed into lower bits
+     of the target word.  These are used on the SPARC.  */
   BFD_RELOC_HI22,
   BFD_RELOC_LO10,
 
-/* For systems that allocate a Global Pointer register, these are
-displacements off that register.  These relocation types are
-handled specially, because the value the register will have is
-decided relatively late.  */
+  /* For systems that allocate a Global Pointer register, these are
+     displacements off that register.  These relocation types are
+     handled specially, because the value the register will have is
+     decided relatively late.  */
   BFD_RELOC_GPREL16,
   BFD_RELOC_GPREL32,
 
-/* SPARC ELF relocations.  There is probably some overlap with other
-relocation types already defined.  */
+  /* SPARC ELF relocations.  There is probably some overlap with other
+     relocation types already defined.  */
   BFD_RELOC_NONE,
   BFD_RELOC_SPARC_WDISP22,
   BFD_RELOC_SPARC22,
@@ -2338,11 +3415,11 @@ relocation types already defined.  */
   BFD_RELOC_SPARC_JMP_IREL,
   BFD_RELOC_SPARC_IRELATIVE,
 
-/* I think these are specific to SPARC a.out (e.g., Sun 4).  */
+  /* I think these are specific to SPARC a.out (e.g., Sun 4).  */
   BFD_RELOC_SPARC_BASE13,
   BFD_RELOC_SPARC_BASE22,
 
-/* SPARC64 relocations  */
+  /* SPARC64 relocations.  */
 #define BFD_RELOC_SPARC_64 BFD_RELOC_64
   BFD_RELOC_SPARC_10,
   BFD_RELOC_SPARC_11,
@@ -2372,10 +3449,10 @@ relocation types already defined.  */
   BFD_RELOC_SPARC_SIZE64,
   BFD_RELOC_SPARC_WDISP10,
 
-/* SPARC little endian relocation  */
+  /* SPARC little endian relocation.  */
   BFD_RELOC_SPARC_REV32,
 
-/* SPARC TLS relocations  */
+  /* SPARC TLS relocations.  */
   BFD_RELOC_SPARC_TLS_GD_HI22,
   BFD_RELOC_SPARC_TLS_GD_LO10,
   BFD_RELOC_SPARC_TLS_GD_ADD,
@@ -2401,7 +3478,7 @@ relocation types already defined.  */
   BFD_RELOC_SPARC_TLS_TPOFF32,
   BFD_RELOC_SPARC_TLS_TPOFF64,
 
-/* SPU Relocations.  */
+  /* SPU Relocations.  */
   BFD_RELOC_SPU_IMM7,
   BFD_RELOC_SPU_IMM8,
   BFD_RELOC_SPU_IMM10,
@@ -2418,92 +3495,92 @@ relocation types already defined.  */
   BFD_RELOC_SPU_PPU64,
   BFD_RELOC_SPU_ADD_PIC,
 
-/* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
-"addend" in some special way.
-For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
-writing; when reading, it will be the absolute section symbol.  The
-addend is the displacement in bytes of the "lda" instruction from
-the "ldah" instruction (which is at the address of this reloc).  */
+  /* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
+     "addend" in some special way.
+     For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
+     writing; when reading, it will be the absolute section symbol.  The
+     addend is the displacement in bytes of the "lda" instruction from
+     the "ldah" instruction (which is at the address of this reloc).  */
   BFD_RELOC_ALPHA_GPDISP_HI16,
 
-/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
-with GPDISP_HI16 relocs.  The addend is ignored when writing the
-relocations out, and is filled in with the file's GP value on
-reading, for convenience.  */
+  /* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
+     with GPDISP_HI16 relocs.  The addend is ignored when writing the
+     relocations out, and is filled in with the file's GP value on
+     reading, for convenience.  */
   BFD_RELOC_ALPHA_GPDISP_LO16,
 
-/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
-relocation except that there is no accompanying GPDISP_LO16
-relocation.  */
+  /* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
+     relocation except that there is no accompanying GPDISP_LO16
+     relocation.  */
   BFD_RELOC_ALPHA_GPDISP,
 
-/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
-the assembler turns it into a LDQ instruction to load the address of
-the symbol, and then fills in a register in the real instruction.
-
-The LITERAL reloc, at the LDQ instruction, refers to the .lita
-section symbol.  The addend is ignored when writing, but is filled
-in with the file's GP value on reading, for convenience, as with the
-GPDISP_LO16 reloc.
-
-The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
-It should refer to the symbol to be referenced, as with 16_GOTOFF,
-but it generates output not based on the position within the .got
-section, but relative to the GP value chosen for the file during the
-final link stage.
-
-The LITUSE reloc, on the instruction using the loaded address, gives
-information to the linker that it might be able to use to optimize
-away some literal section references.  The symbol is ignored (read
-as the absolute section symbol), and the "addend" indicates the type
-of instruction using the register:
-1 - "memory" fmt insn
-2 - byte-manipulation (byte offset reg)
-3 - jsr (target of branch)  */
+  /* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
+     the assembler turns it into a LDQ instruction to load the address of
+     the symbol, and then fills in a register in the real instruction.
+
+     The LITERAL reloc, at the LDQ instruction, refers to the .lita
+     section symbol.  The addend is ignored when writing, but is filled
+     in with the file's GP value on reading, for convenience, as with the
+     GPDISP_LO16 reloc.
+
+     The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
+     It should refer to the symbol to be referenced, as with 16_GOTOFF,
+     but it generates output not based on the position within the .got
+     section, but relative to the GP value chosen for the file during the
+     final link stage.
+
+     The LITUSE reloc, on the instruction using the loaded address, gives
+     information to the linker that it might be able to use to optimize
+     away some literal section references.  The symbol is ignored (read
+     as the absolute section symbol), and the "addend" indicates the type
+     of instruction using the register:
+     1 - "memory" fmt insn
+     2 - byte-manipulation (byte offset reg)
+     3 - jsr (target of branch)  */
   BFD_RELOC_ALPHA_LITERAL,
   BFD_RELOC_ALPHA_ELF_LITERAL,
   BFD_RELOC_ALPHA_LITUSE,
 
-/* The HINT relocation indicates a value that should be filled into the
-"hint" field of a jmp/jsr/ret instruction, for possible branch-
-prediction logic which may be provided on some processors.  */
+  /* The HINT relocation indicates a value that should be filled into the
+     "hint" field of a jmp/jsr/ret instruction, for possible branch-
+     prediction logic which may be provided on some processors.  */
   BFD_RELOC_ALPHA_HINT,
 
-/* The LINKAGE relocation outputs a linkage pair in the object file,
-which is filled by the linker.  */
+  /* The LINKAGE relocation outputs a linkage pair in the object file,
+     which is filled by the linker.  */
   BFD_RELOC_ALPHA_LINKAGE,
 
-/* The CODEADDR relocation outputs a STO_CA in the object file,
-which is filled by the linker.  */
+  /* The CODEADDR relocation outputs a STO_CA in the object file,
+     which is filled by the linker.  */
   BFD_RELOC_ALPHA_CODEADDR,
 
-/* The GPREL_HI/LO relocations together form a 32-bit offset from the
-GP register.  */
+  /* The GPREL_HI/LO relocations together form a 32-bit offset from the
+     GP register.  */
   BFD_RELOC_ALPHA_GPREL_HI16,
   BFD_RELOC_ALPHA_GPREL_LO16,
 
-/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
-share a common GP, and the target address is adjusted for
-STO_ALPHA_STD_GPLOAD.  */
+  /* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
+     share a common GP, and the target address is adjusted for
+     STO_ALPHA_STD_GPLOAD.  */
   BFD_RELOC_ALPHA_BRSGP,
 
-/* The NOP relocation outputs a NOP if the longword displacement
-between two procedure entry points is < 2^21.  */
+  /* The NOP relocation outputs a NOP if the longword displacement
+     between two procedure entry points is < 2^21.  */
   BFD_RELOC_ALPHA_NOP,
 
-/* The BSR relocation outputs a BSR if the longword displacement
-between two procedure entry points is < 2^21.  */
+  /* The BSR relocation outputs a BSR if the longword displacement
+     between two procedure entry points is < 2^21.  */
   BFD_RELOC_ALPHA_BSR,
 
-/* The LDA relocation outputs a LDA if the longword displacement
-between two procedure entry points is < 2^16.  */
+  /* The LDA relocation outputs a LDA if the longword displacement
+     between two procedure entry points is < 2^16.  */
   BFD_RELOC_ALPHA_LDA,
 
-/* The BOH relocation outputs a BSR if the longword displacement
-between two procedure entry points is < 2^21, or else a hint.  */
+  /* The BOH relocation outputs a BSR if the longword displacement
+     between two procedure entry points is < 2^21, or else a hint.  */
   BFD_RELOC_ALPHA_BOH,
 
-/* Alpha thread-local storage relocations.  */
+  /* Alpha thread-local storage relocations.  */
   BFD_RELOC_ALPHA_TLSGD,
   BFD_RELOC_ALPHA_TLSLDM,
   BFD_RELOC_ALPHA_DTPMOD64,
@@ -2518,55 +3595,55 @@ between two procedure entry points is <
   BFD_RELOC_ALPHA_TPREL_LO16,
   BFD_RELOC_ALPHA_TPREL16,
 
-/* The MIPS jump instruction.  */
+  /* The MIPS jump instruction.  */
   BFD_RELOC_MIPS_JMP,
   BFD_RELOC_MICROMIPS_JMP,
 
-/* The MIPS16 jump instruction.  */
+  /* The MIPS16 jump instruction.  */
   BFD_RELOC_MIPS16_JMP,
 
-/* MIPS16 GP relative reloc.  */
+  /* MIPS16 GP relative reloc.  */
   BFD_RELOC_MIPS16_GPREL,
 
-/* High 16 bits of 32-bit value; simple reloc.  */
+  /* High 16 bits of 32-bit value; simple reloc.  */
   BFD_RELOC_HI16,
 
-/* High 16 bits of 32-bit value but the low 16 bits will be sign
-extended and added to form the final result.  If the low 16
-bits form a negative number, we need to add one to the high value
-to compensate for the borrow when the low bits are added.  */
+  /* High 16 bits of 32-bit value but the low 16 bits will be sign
+     extended and added to form the final result.  If the low 16
+     bits form a negative number, we need to add one to the high value
+     to compensate for the borrow when the low bits are added.  */
   BFD_RELOC_HI16_S,
 
-/* Low 16 bits.  */
+  /* Low 16 bits.  */
   BFD_RELOC_LO16,
 
-/* High 16 bits of 32-bit pc-relative value  */
+  /* High 16 bits of 32-bit pc-relative value.  */
   BFD_RELOC_HI16_PCREL,
 
-/* High 16 bits of 32-bit pc-relative value, adjusted  */
+  /* High 16 bits of 32-bit pc-relative value, adjusted.  */
   BFD_RELOC_HI16_S_PCREL,
 
-/* Low 16 bits of pc-relative value  */
+  /* Low 16 bits of pc-relative value.  */
   BFD_RELOC_LO16_PCREL,
 
-/* Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
-16-bit immediate fields  */
+  /* Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
+     16-bit immediate fields.  */
   BFD_RELOC_MIPS16_GOT16,
   BFD_RELOC_MIPS16_CALL16,
 
-/* MIPS16 high 16 bits of 32-bit value.  */
+  /* MIPS16 high 16 bits of 32-bit value.  */
   BFD_RELOC_MIPS16_HI16,
 
-/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
-extended and added to form the final result.  If the low 16
-bits form a negative number, we need to add one to the high value
-to compensate for the borrow when the low bits are added.  */
+  /* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
+     extended and added to form the final result.  If the low 16
+     bits form a negative number, we need to add one to the high value
+     to compensate for the borrow when the low bits are added.  */
   BFD_RELOC_MIPS16_HI16_S,
 
-/* MIPS16 low 16 bits.  */
+  /* MIPS16 low 16 bits.  */
   BFD_RELOC_MIPS16_LO16,
 
-/* MIPS16 TLS relocations  */
+  /* MIPS16 TLS relocations.  */
   BFD_RELOC_MIPS16_TLS_GD,
   BFD_RELOC_MIPS16_TLS_LDM,
   BFD_RELOC_MIPS16_TLS_DTPREL_HI16,
@@ -2575,31 +3652,31 @@ to compensate for the borrow when the lo
   BFD_RELOC_MIPS16_TLS_TPREL_HI16,
   BFD_RELOC_MIPS16_TLS_TPREL_LO16,
 
-/* Relocation against a MIPS literal section.  */
+  /* Relocation against a MIPS literal section.  */
   BFD_RELOC_MIPS_LITERAL,
   BFD_RELOC_MICROMIPS_LITERAL,
 
-/* microMIPS PC-relative relocations.  */
+  /* microMIPS PC-relative relocations.  */
   BFD_RELOC_MICROMIPS_7_PCREL_S1,
   BFD_RELOC_MICROMIPS_10_PCREL_S1,
   BFD_RELOC_MICROMIPS_16_PCREL_S1,
 
-/* MIPS16 PC-relative relocation.  */
+  /* MIPS16 PC-relative relocation.  */
   BFD_RELOC_MIPS16_16_PCREL_S1,
 
-/* MIPS PC-relative relocations.  */
+  /* MIPS PC-relative relocations.  */
   BFD_RELOC_MIPS_21_PCREL_S2,
   BFD_RELOC_MIPS_26_PCREL_S2,
   BFD_RELOC_MIPS_18_PCREL_S3,
   BFD_RELOC_MIPS_19_PCREL_S2,
 
-/* microMIPS versions of generic BFD relocs.  */
+  /* microMIPS versions of generic BFD relocs.  */
   BFD_RELOC_MICROMIPS_GPREL16,
   BFD_RELOC_MICROMIPS_HI16,
   BFD_RELOC_MICROMIPS_HI16_S,
   BFD_RELOC_MICROMIPS_LO16,
 
-/* MIPS ELF relocations.  */
+  /* MIPS ELF relocations.  */
   BFD_RELOC_MIPS_GOT16,
   BFD_RELOC_MICROMIPS_GOT16,
   BFD_RELOC_MIPS_CALL16,
@@ -2631,7 +3708,7 @@ to compensate for the borrow when the lo
   BFD_RELOC_MICROMIPS_HIGHER,
   BFD_RELOC_MIPS_SCN_DISP,
   BFD_RELOC_MICROMIPS_SCN_DISP,
-  BFD_RELOC_MIPS_REL16,
+  BFD_RELOC_MIPS_16,
   BFD_RELOC_MIPS_RELGOT,
   BFD_RELOC_MIPS_JALR,
   BFD_RELOC_MICROMIPS_JALR,
@@ -2657,17 +3734,14 @@ to compensate for the borrow when the lo
   BFD_RELOC_MICROMIPS_TLS_TPREL_LO16,
   BFD_RELOC_MIPS_EH,
 
-
-/* MIPS ELF relocations (VxWorks and PLT extensions).  */
+  /* MIPS ELF relocations (VxWorks and PLT extensions).  */
   BFD_RELOC_MIPS_COPY,
   BFD_RELOC_MIPS_JUMP_SLOT,
 
-
-/* Moxie ELF relocations.  */
+  /* Moxie ELF relocations.  */
   BFD_RELOC_MOXIE_10_PCREL,
 
-
-/* FT32 ELF relocations.  */
+  /* FT32 ELF relocations.  */
   BFD_RELOC_FT32_10,
   BFD_RELOC_FT32_20,
   BFD_RELOC_FT32_17,
@@ -2678,8 +3752,7 @@ to compensate for the borrow when the lo
   BFD_RELOC_FT32_15,
   BFD_RELOC_FT32_DIFF32,
 
-
-/* Fujitsu Frv Relocations.  */
+  /* Fujitsu Frv Relocations.  */
   BFD_RELOC_FRV_LABEL16,
   BFD_RELOC_FRV_LABEL24,
   BFD_RELOC_FRV_LO16,
@@ -2720,45 +3793,43 @@ to compensate for the borrow when the lo
   BFD_RELOC_FRV_TLSOFF_RELAX,
   BFD_RELOC_FRV_TLSMOFF,
 
-
-/* This is a 24bit GOT-relative reloc for the mn10300.  */
+  /* This is a 24bit GOT-relative reloc for the mn10300.  */
   BFD_RELOC_MN10300_GOTOFF24,
 
-/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
-in the instruction.  */
+  /* This is a 32bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.  */
   BFD_RELOC_MN10300_GOT32,
 
-/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
-in the instruction.  */
+  /* This is a 24bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.  */
   BFD_RELOC_MN10300_GOT24,
 
-/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
-in the instruction.  */
+  /* This is a 16bit GOT-relative reloc for the mn10300, offset by two
+     bytes in the instruction.  */
   BFD_RELOC_MN10300_GOT16,
 
-/* Copy symbol at runtime.  */
+  /* Copy symbol at runtime.  */
   BFD_RELOC_MN10300_COPY,
 
-/* Create GOT entry.  */
+  /* Create GOT entry.  */
   BFD_RELOC_MN10300_GLOB_DAT,
 
-/* Create PLT entry.  */
+  /* Create PLT entry.  */
   BFD_RELOC_MN10300_JMP_SLOT,
 
-/* Adjust by program base.  */
+  /* Adjust by program base.  */
   BFD_RELOC_MN10300_RELATIVE,
 
-/* Together with another reloc targeted at the same location,
-allows for a value that is the difference of two symbols
-in the same section.  */
+  /* Together with another reloc targeted at the same location, allows
+     for a value that is the difference of two symbols in the same
+     section.  */
   BFD_RELOC_MN10300_SYM_DIFF,
 
-/* The addend of this reloc is an alignment power that must
-be honoured at the offset's location, regardless of linker
-relaxation.  */
+  /* The addend of this reloc is an alignment power that must be honoured
+     at the offset's location, regardless of linker relaxation.  */
   BFD_RELOC_MN10300_ALIGN,
 
-/* Various TLS-related relocations.  */
+  /* Various TLS-related relocations.  */
   BFD_RELOC_MN10300_TLS_GD,
   BFD_RELOC_MN10300_TLS_LD,
   BFD_RELOC_MN10300_TLS_LDO,
@@ -2769,16 +3840,15 @@ relaxation.  */
   BFD_RELOC_MN10300_TLS_DTPOFF,
   BFD_RELOC_MN10300_TLS_TPOFF,
 
-/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
-instruction.  */
+  /* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in
+     the instruction.  */
   BFD_RELOC_MN10300_32_PCREL,
 
-/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
-instruction.  */
+  /* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in
+     the instruction.  */
   BFD_RELOC_MN10300_16_PCREL,
 
-
-/* i386/elf relocations  */
+  /* i386/elf relocations.  */
   BFD_RELOC_386_GOT32,
   BFD_RELOC_386_PLT32,
   BFD_RELOC_386_COPY,
@@ -2805,7 +3875,7 @@ instruction.  */
   BFD_RELOC_386_IRELATIVE,
   BFD_RELOC_386_GOT32X,
 
-/* x86-64/elf relocations  */
+  /* x86-64/elf relocations.  */
   BFD_RELOC_X86_64_GOT32,
   BFD_RELOC_X86_64_PLT32,
   BFD_RELOC_X86_64_COPY,
@@ -2837,8 +3907,17 @@ instruction.  */
   BFD_RELOC_X86_64_PLT32_BND,
   BFD_RELOC_X86_64_GOTPCRELX,
   BFD_RELOC_X86_64_REX_GOTPCRELX,
+  BFD_RELOC_X86_64_CODE_4_GOTPCRELX,
+  BFD_RELOC_X86_64_CODE_4_GOTTPOFF,
+  BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC,
+  BFD_RELOC_X86_64_CODE_5_GOTPCRELX,
+  BFD_RELOC_X86_64_CODE_5_GOTTPOFF,
+  BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC,
+  BFD_RELOC_X86_64_CODE_6_GOTPCRELX,
+  BFD_RELOC_X86_64_CODE_6_GOTTPOFF,
+  BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC,
 
-/* ns32k relocations  */
+  /* ns32k relocations.  */
   BFD_RELOC_NS32K_IMM_8,
   BFD_RELOC_NS32K_IMM_16,
   BFD_RELOC_NS32K_IMM_32,
@@ -2852,11 +3931,11 @@ instruction.  */
   BFD_RELOC_NS32K_DISP_16_PCREL,
   BFD_RELOC_NS32K_DISP_32_PCREL,
 
-/* PDP11 relocations  */
+  /* PDP11 relocations.  */
   BFD_RELOC_PDP11_DISP_8_PCREL,
   BFD_RELOC_PDP11_DISP_6_PCREL,
 
-/* Picojava relocs.  Not all of these appear in object files.  */
+  /* Picojava relocs.  Not all of these appear in object files.  */
   BFD_RELOC_PJ_CODE_HI16,
   BFD_RELOC_PJ_CODE_LO16,
   BFD_RELOC_PJ_CODE_DIR16,
@@ -2864,10 +3943,12 @@ instruction.  */
   BFD_RELOC_PJ_CODE_REL16,
   BFD_RELOC_PJ_CODE_REL32,
 
-/* Power(rs6000) and PowerPC relocations.  */
+  /* Power(rs6000) and PowerPC relocations.  */
   BFD_RELOC_PPC_B26,
   BFD_RELOC_PPC_BA26,
   BFD_RELOC_PPC_TOC16,
+  BFD_RELOC_PPC_TOC16_LO,
+  BFD_RELOC_PPC_TOC16_HI,
   BFD_RELOC_PPC_B16,
   BFD_RELOC_PPC_B16_BRTAKEN,
   BFD_RELOC_PPC_B16_BRNTAKEN,
@@ -2914,6 +3995,7 @@ instruction.  */
   BFD_RELOC_PPC_VLE_SDAREL_HA16D,
   BFD_RELOC_PPC_16DX_HA,
   BFD_RELOC_PPC_REL16DX_HA,
+  BFD_RELOC_PPC_NEG,
   BFD_RELOC_PPC64_HIGHER,
   BFD_RELOC_PPC64_HIGHER_S,
   BFD_RELOC_PPC64_HIGHEST,
@@ -2948,6 +4030,7 @@ instruction.  */
   BFD_RELOC_PPC64_ADDR64_LOCAL,
   BFD_RELOC_PPC64_ENTRY,
   BFD_RELOC_PPC64_REL24_NOTOC,
+  BFD_RELOC_PPC64_REL24_P9NOTOC,
   BFD_RELOC_PPC64_D34,
   BFD_RELOC_PPC64_D34_LO,
   BFD_RELOC_PPC64_D34_HI30,
@@ -2966,10 +4049,14 @@ instruction.  */
   BFD_RELOC_PPC64_D28,
   BFD_RELOC_PPC64_PCREL28,
 
-/* PowerPC and PowerPC64 thread-local storage relocations.  */
+  /* PowerPC and PowerPC64 thread-local storage relocations.  */
   BFD_RELOC_PPC_TLS,
   BFD_RELOC_PPC_TLSGD,
   BFD_RELOC_PPC_TLSLD,
+  BFD_RELOC_PPC_TLSLE,
+  BFD_RELOC_PPC_TLSIE,
+  BFD_RELOC_PPC_TLSM,
+  BFD_RELOC_PPC_TLSML,
   BFD_RELOC_PPC_DTPMOD,
   BFD_RELOC_PPC_TPREL16,
   BFD_RELOC_PPC_TPREL16_LO,
@@ -2997,6 +4084,12 @@ instruction.  */
   BFD_RELOC_PPC_GOT_DTPREL16_LO,
   BFD_RELOC_PPC_GOT_DTPREL16_HI,
   BFD_RELOC_PPC_GOT_DTPREL16_HA,
+  BFD_RELOC_PPC64_TLSGD,
+  BFD_RELOC_PPC64_TLSLD,
+  BFD_RELOC_PPC64_TLSLE,
+  BFD_RELOC_PPC64_TLSIE,
+  BFD_RELOC_PPC64_TLSM,
+  BFD_RELOC_PPC64_TLSML,
   BFD_RELOC_PPC64_TPREL16_DS,
   BFD_RELOC_PPC64_TPREL16_LO_DS,
   BFD_RELOC_PPC64_TPREL16_HIGH,
@@ -3015,63 +4108,64 @@ 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  */
+  /* IBM 370/390 relocations.  */
   BFD_RELOC_I370_D12,
 
-/* The type of reloc used to build a constructor table - at the moment
-probably a 32 bit wide absolute relocation, but the target can choose.
-It generally does map to one of the other relocation types.  */
+  /* The type of reloc used to build a constructor table - at the moment
+     probably a 32 bit wide absolute relocation, but the target can choose.
+     It generally does map to one of the other relocation types.  */
   BFD_RELOC_CTOR,
 
-/* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
-not stored in the instruction.  */
+  /* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and
+     are not stored in the instruction.  */
   BFD_RELOC_ARM_PCREL_BRANCH,
 
-/* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
-not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
-field in the instruction.  */
+  /* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
+     not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
+     field in the instruction.  */
   BFD_RELOC_ARM_PCREL_BLX,
 
-/* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
-not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
-field in the instruction.  */
+  /* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
+     not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
+     field in the instruction.  */
   BFD_RELOC_THUMB_PCREL_BLX,
 
-/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
+  /* ARM 26-bit pc-relative branch for an unconditional BL or BLX
+     instruction.  */
   BFD_RELOC_ARM_PCREL_CALL,
 
-/* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
+  /* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
   BFD_RELOC_ARM_PCREL_JUMP,
 
-/* ARM 5-bit pc-relative branch for Branch Future instructions.  */
+  /* ARM 5-bit pc-relative branch for Branch Future instructions.  */
   BFD_RELOC_THUMB_PCREL_BRANCH5,
 
-/* ARM 6-bit pc-relative branch for BFCSEL instruction.  */
+  /* ARM 6-bit pc-relative branch for BFCSEL instruction.  */
   BFD_RELOC_THUMB_PCREL_BFCSEL,
 
-/* ARM 17-bit pc-relative branch for Branch Future instructions.  */
+  /* ARM 17-bit pc-relative branch for Branch Future instructions.  */
   BFD_RELOC_ARM_THUMB_BF17,
 
-/* ARM 13-bit pc-relative branch for BFCSEL instruction.  */
+  /* ARM 13-bit pc-relative branch for BFCSEL instruction.  */
   BFD_RELOC_ARM_THUMB_BF13,
 
-/* ARM 19-bit pc-relative branch for Branch Future Link instruction.  */
+  /* ARM 19-bit pc-relative branch for Branch Future Link instruction.  */
   BFD_RELOC_ARM_THUMB_BF19,
 
-/* ARM 12-bit pc-relative branch for Low Overhead Loop instructions.  */
+  /* ARM 12-bit pc-relative branch for Low Overhead Loop instructions.  */
   BFD_RELOC_ARM_THUMB_LOOP12,
 
-/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
-The lowest bit must be zero and is not stored in the instruction.
-Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
-"nn" one smaller in all cases.  Note further that BRANCH23
-corresponds to R_ARM_THM_CALL.  */
+  /* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
+     The lowest bit must be zero and is not stored in the instruction.
+     Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
+     "nn" one smaller in all cases.  Note further that BRANCH23
+     corresponds to R_ARM_THM_CALL.  */
   BFD_RELOC_THUMB_PCREL_BRANCH7,
   BFD_RELOC_THUMB_PCREL_BRANCH9,
   BFD_RELOC_THUMB_PCREL_BRANCH12,
@@ -3079,31 +4173,31 @@ corresponds to R_ARM_THM_CALL.  */
   BFD_RELOC_THUMB_PCREL_BRANCH23,
   BFD_RELOC_THUMB_PCREL_BRANCH25,
 
-/* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
+  /* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
   BFD_RELOC_ARM_OFFSET_IMM,
 
-/* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
+  /* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
   BFD_RELOC_ARM_THUMB_OFFSET,
 
-/* Pc-relative or absolute relocation depending on target.  Used for
-entries in .init_array sections.  */
+  /* Pc-relative or absolute relocation depending on target.  Used for
+     entries in .init_array sections.  */
   BFD_RELOC_ARM_TARGET1,
 
-/* Read-only segment base relative address.  */
+  /* Read-only segment base relative address.  */
   BFD_RELOC_ARM_ROSEGREL32,
 
-/* Data segment base relative address.  */
+  /* Data segment base relative address.  */
   BFD_RELOC_ARM_SBREL32,
 
-/* This reloc is used for references to RTTI data from exception handling
-tables.  The actual definition depends on the target.  It may be a
-pc-relative or some form of GOT-indirect relocation.  */
+  /* This reloc is used for references to RTTI data from exception
+     handling tables.  The actual definition depends on the target.  It
+     may be a pc-relative or some form of GOT-indirect relocation.  */
   BFD_RELOC_ARM_TARGET2,
 
-/* 31-bit PC relative address.  */
+  /* 31-bit PC relative address.  */
   BFD_RELOC_ARM_PREL31,
 
-/* Low and High halfword relocations for MOVW and MOVT instructions.  */
+  /* Low and High halfword relocations for MOVW and MOVT instructions.  */
   BFD_RELOC_ARM_MOVW,
   BFD_RELOC_ARM_MOVT,
   BFD_RELOC_ARM_MOVW_PCREL,
@@ -3113,7 +4207,7 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_ARM_THUMB_MOVW_PCREL,
   BFD_RELOC_ARM_THUMB_MOVT_PCREL,
 
-/* ARM FDPIC specific relocations.  */
+  /* ARM FDPIC specific relocations.  */
   BFD_RELOC_ARM_GOTFUNCDESC,
   BFD_RELOC_ARM_GOTOFFFUNCDESC,
   BFD_RELOC_ARM_FUNCDESC,
@@ -3122,7 +4216,7 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_ARM_TLS_LDM32_FDPIC,
   BFD_RELOC_ARM_TLS_IE32_FDPIC,
 
-/* Relocations for setting up GOTs and PLTs for shared libraries.  */
+  /* Relocations for setting up GOTs and PLTs for shared libraries.  */
   BFD_RELOC_ARM_JUMP_SLOT,
   BFD_RELOC_ARM_GLOB_DAT,
   BFD_RELOC_ARM_GOT32,
@@ -3132,7 +4226,7 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_ARM_GOTPC,
   BFD_RELOC_ARM_GOT_PREL,
 
-/* ARM thread-local storage relocations.  */
+  /* ARM thread-local storage relocations.  */
   BFD_RELOC_ARM_TLS_GD32,
   BFD_RELOC_ARM_TLS_LDO32,
   BFD_RELOC_ARM_TLS_LDM32,
@@ -3148,7 +4242,7 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_ARM_THM_TLS_DESCSEQ,
   BFD_RELOC_ARM_TLS_DESC,
 
-/* ARM group relocations.  */
+  /* ARM group relocations.  */
   BFD_RELOC_ARM_ALU_PC_G0_NC,
   BFD_RELOC_ARM_ALU_PC_G0,
   BFD_RELOC_ARM_ALU_PC_G1_NC,
@@ -3178,20 +4272,20 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_ARM_LDC_SB_G1,
   BFD_RELOC_ARM_LDC_SB_G2,
 
-/* Annotation of BX instructions.  */
+  /* Annotation of BX instructions.  */
   BFD_RELOC_ARM_V4BX,
 
-/* ARM support for STT_GNU_IFUNC.  */
+  /* ARM support for STT_GNU_IFUNC.  */
   BFD_RELOC_ARM_IRELATIVE,
 
-/* Thumb1 relocations to support execute-only code.  */
+  /* Thumb1 relocations to support execute-only code.  */
   BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC,
   BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC,
   BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC,
   BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC,
 
-/* These relocs are only used within the ARM assembler.  They are not
-(at present) written to any object files.  */
+  /* These relocs are only used within the ARM assembler.  They are not
+     (at present) written to any object files.  */
   BFD_RELOC_ARM_IMMEDIATE,
   BFD_RELOC_ARM_ADRL_IMMEDIATE,
   BFD_RELOC_ARM_T32_IMMEDIATE,
@@ -3220,7 +4314,7 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_ARM_THUMB_IMM,
   BFD_RELOC_ARM_THUMB_SHIFT,
 
-/* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
+  /* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
   BFD_RELOC_SH_PCDISP8BY2,
   BFD_RELOC_SH_PCDISP12BY2,
   BFD_RELOC_SH_IMM3,
@@ -3319,7 +4413,7 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_SH_GOTOFFFUNCDESC20,
   BFD_RELOC_SH_FUNCDESC,
 
-/* ARC relocs.  */
+  /* ARC relocs.  */
   BFD_RELOC_ARC_NONE,
   BFD_RELOC_ARC_8,
   BFD_RELOC_ARC_16,
@@ -3390,40 +4484,40 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_ARC_NPS_CMEM16,
   BFD_RELOC_ARC_JLI_SECTOFF,
 
-/* ADI Blackfin 16 bit immediate absolute reloc.  */
+  /* ADI Blackfin 16 bit immediate absolute reloc.  */
   BFD_RELOC_BFIN_16_IMM,
 
-/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
+  /* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
   BFD_RELOC_BFIN_16_HIGH,
 
-/* ADI Blackfin 'a' part of LSETUP.  */
+  /* ADI Blackfin 'a' part of LSETUP.  */
   BFD_RELOC_BFIN_4_PCREL,
 
-/* ADI Blackfin.  */
+  /* ADI Blackfin.  */
   BFD_RELOC_BFIN_5_PCREL,
 
-/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
+  /* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
   BFD_RELOC_BFIN_16_LOW,
 
-/* ADI Blackfin.  */
+  /* ADI Blackfin.  */
   BFD_RELOC_BFIN_10_PCREL,
 
-/* ADI Blackfin 'b' part of LSETUP.  */
+  /* ADI Blackfin 'b' part of LSETUP.  */
   BFD_RELOC_BFIN_11_PCREL,
 
-/* ADI Blackfin.  */
+  /* ADI Blackfin.  */
   BFD_RELOC_BFIN_12_PCREL_JUMP,
 
-/* ADI Blackfin Short jump, pcrel.  */
+  /* ADI Blackfin Short jump, pcrel.  */
   BFD_RELOC_BFIN_12_PCREL_JUMP_S,
 
-/* ADI Blackfin Call.x not implemented.  */
+  /* ADI Blackfin Call.x not implemented.  */
   BFD_RELOC_BFIN_24_PCREL_CALL_X,
 
-/* ADI Blackfin Long Jump pcrel.  */
+  /* ADI Blackfin Long Jump pcrel.  */
   BFD_RELOC_BFIN_24_PCREL_JUMP_L,
 
-/* ADI Blackfin FD-PIC relocations.  */
+  /* ADI Blackfin FD-PIC relocations.  */
   BFD_RELOC_BFIN_GOT17M4,
   BFD_RELOC_BFIN_GOTHI,
   BFD_RELOC_BFIN_GOTLO,
@@ -3439,184 +4533,174 @@ pc-relative or some form of GOT-indirect
   BFD_RELOC_BFIN_GOTOFFHI,
   BFD_RELOC_BFIN_GOTOFFLO,
 
-/* ADI Blackfin GOT relocation.  */
+  /* ADI Blackfin GOT relocation.  */
   BFD_RELOC_BFIN_GOT,
 
-/* ADI Blackfin PLTPC relocation.  */
+  /* ADI Blackfin PLTPC relocation.  */
   BFD_RELOC_BFIN_PLTPC,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_PUSH,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_CONST,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_ADD,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_SUB,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_MULT,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_DIV,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_MOD,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_LSHIFT,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_RSHIFT,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_AND,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_OR,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_XOR,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_LAND,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_LOR,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_LEN,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_NEG,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_COMP,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_PAGE,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_HWPAGE,
 
-/* ADI Blackfin arithmetic relocation.  */
+  /* ADI Blackfin arithmetic relocation.  */
   BFD_ARELOC_BFIN_ADDR,
 
-/* Mitsubishi D10V relocs.
-This is a 10-bit reloc with the right 2 bits
-assumed to be 0.  */
+  /* Mitsubishi D10V relocs.
+     This is a 10-bit reloc with the right 2 bits assumed to be 0.  */
   BFD_RELOC_D10V_10_PCREL_R,
 
-/* Mitsubishi D10V relocs.
-This is a 10-bit reloc with the right 2 bits
-assumed to be 0.  This is the same as the previous reloc
-except it is in the left container, i.e.,
-shifted left 15 bits.  */
+  /* Mitsubishi D10V relocs.
+     This is a 10-bit reloc with the right 2 bits assumed to be 0.  This
+     is the same as the previous reloc except it is in the left
+     container, i.e., shifted left 15 bits.  */
   BFD_RELOC_D10V_10_PCREL_L,
 
-/* This is an 18-bit reloc with the right 2 bits
-assumed to be 0.  */
+  /* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
   BFD_RELOC_D10V_18,
 
-/* This is an 18-bit reloc with the right 2 bits
-assumed to be 0.  */
+  /* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
   BFD_RELOC_D10V_18_PCREL,
 
-/* Mitsubishi D30V relocs.
-This is a 6-bit absolute reloc.  */
+  /* Mitsubishi D30V relocs.
+     This is a 6-bit absolute reloc.  */
   BFD_RELOC_D30V_6,
 
-/* This is a 6-bit pc-relative reloc with
-the right 3 bits assumed to be 0.  */
+  /* This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+     be 0.  */
   BFD_RELOC_D30V_9_PCREL,
 
-/* This is a 6-bit pc-relative reloc with
-the right 3 bits assumed to be 0. Same
-as the previous reloc but on the right side
-of the container.  */
+  /* This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+     be 0.  Same as the previous reloc but on the right side of the
+     container.  */
   BFD_RELOC_D30V_9_PCREL_R,
 
-/* This is a 12-bit absolute reloc with the
-right 3 bitsassumed to be 0.  */
+  /* This is a 12-bit absolute reloc with the right 3 bitsassumed to
+     be 0.  */
   BFD_RELOC_D30V_15,
 
-/* This is a 12-bit pc-relative reloc with
-the right 3 bits assumed to be 0.  */
+  /* This is a 12-bit pc-relative reloc with the right 3 bits assumed to
+     be 0.  */
   BFD_RELOC_D30V_15_PCREL,
 
-/* This is a 12-bit pc-relative reloc with
-the right 3 bits assumed to be 0. Same
-as the previous reloc but on the right side
-of the container.  */
+  /* This is a 12-bit pc-relative reloc with the right 3 bits assumed to
+     be 0.  Same as the previous reloc but on the right side of the
+     container.  */
   BFD_RELOC_D30V_15_PCREL_R,
 
-/* This is an 18-bit absolute reloc with
-the right 3 bits assumed to be 0.  */
+  /* This is an 18-bit absolute reloc with the right 3 bits assumed to
+     be 0.  */
   BFD_RELOC_D30V_21,
 
-/* This is an 18-bit pc-relative reloc with
-the right 3 bits assumed to be 0.  */
+  /* This is an 18-bit pc-relative reloc with the right 3 bits assumed to
+     be 0.  */
   BFD_RELOC_D30V_21_PCREL,
 
-/* This is an 18-bit pc-relative reloc with
-the right 3 bits assumed to be 0. Same
-as the previous reloc but on the right side
-of the container.  */
+  /* This is an 18-bit pc-relative reloc with the right 3 bits assumed to
+     be 0.  Same as the previous reloc but on the right side of the
+     container.  */
   BFD_RELOC_D30V_21_PCREL_R,
 
-/* This is a 32-bit absolute reloc.  */
+  /* This is a 32-bit absolute reloc.  */
   BFD_RELOC_D30V_32,
 
-/* This is a 32-bit pc-relative reloc.  */
+  /* This is a 32-bit pc-relative reloc.  */
   BFD_RELOC_D30V_32_PCREL,
 
-/* DLX relocs  */
+  /* DLX relocs.  */
   BFD_RELOC_DLX_HI16_S,
-
-/* DLX relocs  */
   BFD_RELOC_DLX_LO16,
-
-/* DLX relocs  */
   BFD_RELOC_DLX_JMP26,
 
-/* Renesas M16C/M32C Relocations.  */
+  /* Renesas M16C/M32C Relocations.  */
   BFD_RELOC_M32C_HI8,
   BFD_RELOC_M32C_RL_JUMP,
   BFD_RELOC_M32C_RL_1ADDR,
   BFD_RELOC_M32C_RL_2ADDR,
 
-/* Renesas M32R (formerly Mitsubishi M32R) relocs.
-This is a 24 bit absolute address.  */
+  /* Renesas M32R (formerly Mitsubishi M32R) relocs.
+     This is a 24 bit absolute address.  */
   BFD_RELOC_M32R_24,
 
-/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
+  /* This is a 10-bit pc-relative reloc with the right 2 bits assumed to
+     be 0.  */
   BFD_RELOC_M32R_10_PCREL,
 
-/* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
+  /* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
   BFD_RELOC_M32R_18_PCREL,
 
-/* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
+  /* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
   BFD_RELOC_M32R_26_PCREL,
 
-/* This is a 16-bit reloc containing the high 16 bits of an address
-used when the lower 16 bits are treated as unsigned.  */
+  /* This is a 16-bit reloc containing the high 16 bits of an address
+     used when the lower 16 bits are treated as unsigned.  */
   BFD_RELOC_M32R_HI16_ULO,
 
-/* This is a 16-bit reloc containing the high 16 bits of an address
-used when the lower 16 bits are treated as signed.  */
+  /* This is a 16-bit reloc containing the high 16 bits of an address
+     used when the lower 16 bits are treated as signed.  */
   BFD_RELOC_M32R_HI16_SLO,
 
-/* This is a 16-bit reloc containing the lower 16 bits of an address.  */
+  /* This is a 16-bit reloc containing the lower 16 bits of an address.  */
   BFD_RELOC_M32R_LO16,
 
-/* This is a 16-bit reloc containing the small data area offset for use in
-add3, load, and store instructions.  */
+  /* This is a 16-bit reloc containing the small data area offset for use
+     in add3, load, and store instructions.  */
   BFD_RELOC_M32R_SDA16,
 
-/* For PIC.  */
+  /* For PIC.  */
   BFD_RELOC_M32R_GOT24,
   BFD_RELOC_M32R_26_PLTREL,
   BFD_RELOC_M32R_COPY,
@@ -3635,82 +4719,84 @@ add3, load, and store instructions.  */
   BFD_RELOC_M32R_GOTPC_HI_SLO,
   BFD_RELOC_M32R_GOTPC_LO,
 
-/* NDS32 relocs.
-This is a 20 bit absolute address.  */
+  /* NDS32 relocs.
+     This is a 20 bit absolute address.  */
   BFD_RELOC_NDS32_20,
 
-/* This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.  */
+  /* This is a 9-bit pc-relative reloc with the right 1 bit assumed to
+     be 0.  */
   BFD_RELOC_NDS32_9_PCREL,
 
-/* This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.  */
+  /* This is a 9-bit pc-relative reloc with the right 1 bit assumed to
+     be 0.  */
   BFD_RELOC_NDS32_WORD_9_PCREL,
 
-/* This is an 15-bit reloc with the right 1 bit assumed to be 0.  */
+  /* This is an 15-bit reloc with the right 1 bit assumed to be 0.  */
   BFD_RELOC_NDS32_15_PCREL,
 
-/* This is an 17-bit reloc with the right 1 bit assumed to be 0.  */
+  /* This is an 17-bit reloc with the right 1 bit assumed to be 0.  */
   BFD_RELOC_NDS32_17_PCREL,
 
-/* This is a 25-bit reloc with the right 1 bit assumed to be 0.  */
+  /* This is a 25-bit reloc with the right 1 bit assumed to be 0.  */
   BFD_RELOC_NDS32_25_PCREL,
 
-/* This is a 20-bit reloc containing the high 20 bits of an address
-used with the lower 12 bits  */
+  /* This is a 20-bit reloc containing the high 20 bits of an address
+     used with the lower 12 bits.  */
   BFD_RELOC_NDS32_HI20,
 
-/* This is a 12-bit reloc containing the lower 12 bits of an address
-then shift right by 3. This is used with ldi,sdi...  */
+  /* This is a 12-bit reloc containing the lower 12 bits of an address
+     then shift right by 3.  This is used with ldi,sdi.  */
   BFD_RELOC_NDS32_LO12S3,
 
-/* This is a 12-bit reloc containing the lower 12 bits of an address
-then shift left by 2. This is used with lwi,swi...  */
+  /* This is a 12-bit reloc containing the lower 12 bits of an address
+     then shift left by 2.  This is used with lwi,swi.  */
   BFD_RELOC_NDS32_LO12S2,
 
-/* This is a 12-bit reloc containing the lower 12 bits of an address
-then shift left by 1. This is used with lhi,shi...  */
+  /* This is a 12-bit reloc containing the lower 12 bits of an address
+     then shift left by 1.  This is used with lhi,shi.  */
   BFD_RELOC_NDS32_LO12S1,
 
-/* This is a 12-bit reloc containing the lower 12 bits of an address
-then shift left by 0. This is used with lbisbi...  */
+  /* This is a 12-bit reloc containing the lower 12 bits of an address
+     then shift left by 0.  This is used with lbisbi.  */
   BFD_RELOC_NDS32_LO12S0,
 
-/* This is a 12-bit reloc containing the lower 12 bits of an address
-then shift left by 0. This is only used with branch relaxations  */
+  /* This is a 12-bit reloc containing the lower 12 bits of an address
+     then shift left by 0.  This is only used with branch relaxations.  */
   BFD_RELOC_NDS32_LO12S0_ORI,
 
-/* This is a 15-bit reloc containing the small data area 18-bit signed offset
-and shift left by 3 for use in ldi, sdi...  */
+  /* This is a 15-bit reloc containing the small data area 18-bit signed
+     offset and shift left by 3 for use in ldi, sdi.  */
   BFD_RELOC_NDS32_SDA15S3,
 
-/* This is a 15-bit reloc containing the small data area 17-bit signed offset
-and shift left by 2 for use in lwi, swi...  */
+  /* This is a 15-bit reloc containing the small data area 17-bit signed
+     offset and shift left by 2 for use in lwi, swi.  */
   BFD_RELOC_NDS32_SDA15S2,
 
-/* This is a 15-bit reloc containing the small data area 16-bit signed offset
-and shift left by 1 for use in lhi, shi...  */
+  /* This is a 15-bit reloc containing the small data area 16-bit signed
+     offset and shift left by 1 for use in lhi, shi.  */
   BFD_RELOC_NDS32_SDA15S1,
 
-/* This is a 15-bit reloc containing the small data area 15-bit signed offset
-and shift left by 0 for use in lbi, sbi...  */
+  /* This is a 15-bit reloc containing the small data area 15-bit signed
+     offset and shift left by 0 for use in lbi, sbi.  */
   BFD_RELOC_NDS32_SDA15S0,
 
-/* This is a 16-bit reloc containing the small data area 16-bit signed offset
-and shift left by 3  */
+  /* This is a 16-bit reloc containing the small data area 16-bit signed
+     offset and shift left by 3.  */
   BFD_RELOC_NDS32_SDA16S3,
 
-/* This is a 17-bit reloc containing the small data area 17-bit signed offset
-and shift left by 2 for use in lwi.gp, swi.gp...  */
+  /* This is a 17-bit reloc containing the small data area 17-bit signed
+     offset and shift left by 2 for use in lwi.gp, swi.gp.  */
   BFD_RELOC_NDS32_SDA17S2,
 
-/* This is a 18-bit reloc containing the small data area 18-bit signed offset
-and shift left by 1 for use in lhi.gp, shi.gp...  */
+  /* This is a 18-bit reloc containing the small data area 18-bit signed
+     offset and shift left by 1 for use in lhi.gp, shi.gp.  */
   BFD_RELOC_NDS32_SDA18S1,
 
-/* This is a 19-bit reloc containing the small data area 19-bit signed offset
-and shift left by 0 for use in lbi.gp, sbi.gp...  */
+  /* This is a 19-bit reloc containing the small data area 19-bit signed
+     offset and shift left by 0 for use in lbi.gp, sbi.gp.  */
   BFD_RELOC_NDS32_SDA19S0,
 
-/* for PIC  */
+  /* For PIC.  */
   BFD_RELOC_NDS32_GOT20,
   BFD_RELOC_NDS32_9_PLTREL,
   BFD_RELOC_NDS32_25_PLTREL,
@@ -3727,7 +4813,7 @@ and shift left by 0 for use in lbi.gp, s
   BFD_RELOC_NDS32_GOTPC_HI20,
   BFD_RELOC_NDS32_GOTPC_LO12,
 
-/* for relax  */
+  /* For relax.  */
   BFD_RELOC_NDS32_INSN16,
   BFD_RELOC_NDS32_LABEL,
   BFD_RELOC_NDS32_LONGCALL1,
@@ -3749,27 +4835,27 @@ and shift left by 0 for use in lbi.gp, s
   BFD_RELOC_NDS32_LONGJUMP6,
   BFD_RELOC_NDS32_LONGJUMP7,
 
-/* for PIC  */
+  /* For PIC.  */
   BFD_RELOC_NDS32_PLTREL_HI20,
   BFD_RELOC_NDS32_PLTREL_LO12,
   BFD_RELOC_NDS32_PLT_GOTREL_HI20,
   BFD_RELOC_NDS32_PLT_GOTREL_LO12,
 
-/* for floating point  */
+  /* For floating point.  */
   BFD_RELOC_NDS32_SDA12S2_DP,
   BFD_RELOC_NDS32_SDA12S2_SP,
   BFD_RELOC_NDS32_LO12S2_DP,
   BFD_RELOC_NDS32_LO12S2_SP,
 
-/* for dwarf2 debug_line.  */
+  /* For dwarf2 debug_line.  */
   BFD_RELOC_NDS32_DWARF2_OP1,
   BFD_RELOC_NDS32_DWARF2_OP2,
   BFD_RELOC_NDS32_DWARF2_LEB,
 
-/* for eliminate 16-bit instructions  */
+  /* For eliminating 16-bit instructions.  */
   BFD_RELOC_NDS32_UPDATE_TA,
 
-/* for PIC object relaxation  */
+  /* For PIC object relaxation.  */
   BFD_RELOC_NDS32_PLT_GOTREL_LO20,
   BFD_RELOC_NDS32_PLT_GOTREL_LO15,
   BFD_RELOC_NDS32_PLT_GOTREL_LO19,
@@ -3780,17 +4866,18 @@ and shift left by 0 for use in lbi.gp, s
   BFD_RELOC_NDS32_GOT15S2,
   BFD_RELOC_NDS32_GOT17S2,
 
-/* NDS32 relocs.
-This is a 5 bit absolute address.  */
+  /* NDS32 relocs.
+     This is a 5 bit absolute address.  */
   BFD_RELOC_NDS32_5,
 
-/* This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0.  */
+  /* This is a 10-bit unsigned pc-relative reloc with the right 1 bit
+     assumed to be 0.  */
   BFD_RELOC_NDS32_10_UPCREL,
 
-/* If fp were omitted, fp can used as another gp.  */
+  /* If fp were omitted, fp can used as another gp.  */
   BFD_RELOC_NDS32_SDA_FP7U2_RELA,
 
-/* relaxation relative relocation types  */
+  /* Relaxation relative relocation types.  */
   BFD_RELOC_NDS32_RELAX_ENTRY,
   BFD_RELOC_NDS32_GOT_SUFF,
   BFD_RELOC_NDS32_GOTOFF_SUFF,
@@ -3810,16 +4897,16 @@ This is a 5 bit absolute address.  */
   BFD_RELOC_NDS32_DIFF_ULEB128,
   BFD_RELOC_NDS32_EMPTY,
 
-/* This is a 25 bit absolute address.  */
+  /* This is a 25 bit absolute address.  */
   BFD_RELOC_NDS32_25_ABS,
 
-/* For ex9 and ifc using.  */
+  /* For ex9 and ifc using.  */
   BFD_RELOC_NDS32_DATA,
   BFD_RELOC_NDS32_TRAN,
   BFD_RELOC_NDS32_17IFC_PCREL,
   BFD_RELOC_NDS32_10IFCU_PCREL,
 
-/* For TLS.  */
+  /* For TLS.  */
   BFD_RELOC_NDS32_TPOFF,
   BFD_RELOC_NDS32_GOTTPOFF,
   BFD_RELOC_NDS32_TLS_LE_HI20,
@@ -3849,172 +4936,152 @@ This is a 5 bit absolute address.  */
   BFD_RELOC_NDS32_REMOVE,
   BFD_RELOC_NDS32_GROUP,
 
-/* For floating load store relaxation.  */
+  /* For floating load store relaxation.  */
   BFD_RELOC_NDS32_LSI,
 
-/* This is a 9-bit reloc  */
+  /* This is a 9-bit reloc.  */
   BFD_RELOC_V850_9_PCREL,
 
-/* This is a 22-bit reloc  */
+  /* This is a 22-bit reloc.  */
   BFD_RELOC_V850_22_PCREL,
 
-/* This is a 16 bit offset from the short data area pointer.  */
+  /* This is a 16 bit offset from the short data area pointer.  */
   BFD_RELOC_V850_SDA_16_16_OFFSET,
 
-/* This is a 16 bit offset (of which only 15 bits are used) from the
-short data area pointer.  */
+  /* This is a 16 bit offset (of which only 15 bits are used) from the
+     short data area pointer.  */
   BFD_RELOC_V850_SDA_15_16_OFFSET,
 
-/* This is a 16 bit offset from the zero data area pointer.  */
+  /* This is a 16 bit offset from the zero data area pointer.  */
   BFD_RELOC_V850_ZDA_16_16_OFFSET,
 
-/* This is a 16 bit offset (of which only 15 bits are used) from the
-zero data area pointer.  */
+  /* This is a 16 bit offset (of which only 15 bits are used) from the
+     zero data area pointer.  */
   BFD_RELOC_V850_ZDA_15_16_OFFSET,
 
-/* This is an 8 bit offset (of which only 6 bits are used) from the
-tiny data area pointer.  */
+  /* This is an 8 bit offset (of which only 6 bits are used) from the
+     tiny data area pointer.  */
   BFD_RELOC_V850_TDA_6_8_OFFSET,
 
-/* This is an 8bit offset (of which only 7 bits are used) from the tiny
-data area pointer.  */
+  /* This is an 8bit offset (of which only 7 bits are used) from the tiny
+     data area pointer.  */
   BFD_RELOC_V850_TDA_7_8_OFFSET,
 
-/* This is a 7 bit offset from the tiny data area pointer.  */
+  /* This is a 7 bit offset from the tiny data area pointer.  */
   BFD_RELOC_V850_TDA_7_7_OFFSET,
 
-/* This is a 16 bit offset from the tiny data area pointer.  */
+  /* This is a 16 bit offset from the tiny data area pointer.  */
   BFD_RELOC_V850_TDA_16_16_OFFSET,
 
-/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
-data area pointer.  */
+  /* This is a 5 bit offset (of which only 4 bits are used) from the tiny
+     data area pointer.  */
   BFD_RELOC_V850_TDA_4_5_OFFSET,
 
-/* This is a 4 bit offset from the tiny data area pointer.  */
+  /* This is a 4 bit offset from the tiny data area pointer.  */
   BFD_RELOC_V850_TDA_4_4_OFFSET,
 
-/* This is a 16 bit offset from the short data area pointer, with the
-bits placed non-contiguously in the instruction.  */
+  /* This is a 16 bit offset from the short data area pointer, with the
+     bits placed non-contiguously in the instruction.  */
   BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
 
-/* This is a 16 bit offset from the zero data area pointer, with the
-bits placed non-contiguously in the instruction.  */
+  /* This is a 16 bit offset from the zero data area pointer, with the
+     bits placed non-contiguously in the instruction.  */
   BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
 
-/* This is a 6 bit offset from the call table base pointer.  */
+  /* This is a 6 bit offset from the call table base pointer.  */
   BFD_RELOC_V850_CALLT_6_7_OFFSET,
 
-/* This is a 16 bit offset from the call table base pointer.  */
+  /* This is a 16 bit offset from the call table base pointer.  */
   BFD_RELOC_V850_CALLT_16_16_OFFSET,
 
-/* Used for relaxing indirect function calls.  */
+  /* Used for relaxing indirect function calls.  */
   BFD_RELOC_V850_LONGCALL,
 
-/* Used for relaxing indirect jumps.  */
+  /* Used for relaxing indirect jumps.  */
   BFD_RELOC_V850_LONGJUMP,
 
-/* Used to maintain alignment whilst relaxing.  */
+  /* Used to maintain alignment whilst relaxing.  */
   BFD_RELOC_V850_ALIGN,
 
-/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
-instructions.  */
+  /* This is a variation of BFD_RELOC_LO16 that can be used in v850e
+     ld.bu instructions.  */
   BFD_RELOC_V850_LO16_SPLIT_OFFSET,
 
-/* This is a 16-bit reloc.  */
+  /* This is a 16-bit reloc.  */
   BFD_RELOC_V850_16_PCREL,
 
-/* This is a 17-bit reloc.  */
+  /* This is a 17-bit reloc.  */
   BFD_RELOC_V850_17_PCREL,
 
-/* This is a 23-bit reloc.  */
+  /* This is a 23-bit reloc.  */
   BFD_RELOC_V850_23,
 
-/* This is a 32-bit reloc.  */
+  /* This is a 32-bit reloc.  */
   BFD_RELOC_V850_32_PCREL,
 
-/* This is a 32-bit reloc.  */
+  /* This is a 32-bit reloc.  */
   BFD_RELOC_V850_32_ABS,
 
-/* This is a 16-bit reloc.  */
+  /* This is a 16-bit reloc.  */
   BFD_RELOC_V850_16_SPLIT_OFFSET,
 
-/* This is a 16-bit reloc.  */
+  /* This is a 16-bit reloc.  */
   BFD_RELOC_V850_16_S1,
 
-/* Low 16 bits. 16 bit shifted by 1.  */
+  /* Low 16 bits.  16 bit shifted by 1.  */
   BFD_RELOC_V850_LO16_S1,
 
-/* This is a 16 bit offset from the call table base pointer.  */
+  /* This is a 16 bit offset from the call table base pointer.  */
   BFD_RELOC_V850_CALLT_15_16_OFFSET,
 
-/* DSO relocations.  */
+  /* DSO relocations.  */
   BFD_RELOC_V850_32_GOTPCREL,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_16_GOT,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_32_GOT,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_22_PLT_PCREL,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_32_PLT_PCREL,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_COPY,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_GLOB_DAT,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_JMP_SLOT,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_RELATIVE,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_16_GOTOFF,
-
-/* DSO relocations.  */
   BFD_RELOC_V850_32_GOTOFF,
 
-/* start code.  */
+  /* Start code.  */
   BFD_RELOC_V850_CODE,
 
-/* start data in text.  */
+  /* Start data in text.  */
   BFD_RELOC_V850_DATA,
 
-/* This is a 8bit DP reloc for the tms320c30, where the most
-significant 8 bits of a 24 bit word are placed into the least
-significant 8 bits of the opcode.  */
+  /* This is a 8bit DP reloc for the tms320c30, where the most
+     significant 8 bits of a 24 bit word are placed into the least
+     significant 8 bits of the opcode.  */
   BFD_RELOC_TIC30_LDP,
 
-/* This is a 7bit reloc for the tms320c54x, where the least
-significant 7 bits of a 16 bit word are placed into the least
-significant 7 bits of the opcode.  */
+  /* This is a 7bit reloc for the tms320c54x, where the least
+     significant 7 bits of a 16 bit word are placed into the least
+     significant 7 bits of the opcode.  */
   BFD_RELOC_TIC54X_PARTLS7,
 
-/* This is a 9bit DP reloc for the tms320c54x, where the most
-significant 9 bits of a 16 bit word are placed into the least
-significant 9 bits of the opcode.  */
+  /* This is a 9bit DP reloc for the tms320c54x, where the most
+     significant 9 bits of a 16 bit word are placed into the least
+     significant 9 bits of the opcode.  */
   BFD_RELOC_TIC54X_PARTMS9,
 
-/* This is an extended address 23-bit reloc for the tms320c54x.  */
+  /* This is an extended address 23-bit reloc for the tms320c54x.  */
   BFD_RELOC_TIC54X_23,
 
-/* This is a 16-bit reloc for the tms320c54x, where the least
-significant 16 bits of a 23-bit extended address are placed into
-the opcode.  */
+  /* This is a 16-bit reloc for the tms320c54x, where the least
+     significant 16 bits of a 23-bit extended address are placed into
+     the opcode.  */
   BFD_RELOC_TIC54X_16_OF_23,
 
-/* This is a reloc for the tms320c54x, where the most
-significant 7 bits of a 23-bit extended address are placed into
-the opcode.  */
+  /* This is a reloc for the tms320c54x, where the most
+     significant 7 bits of a 23-bit extended address are placed into
+     the opcode.  */
   BFD_RELOC_TIC54X_MS7_OF_23,
 
-/* TMS320C6000 relocations.  */
+  /* TMS320C6000 relocations.  */
   BFD_RELOC_C6000_PCR_S21,
   BFD_RELOC_C6000_PCR_S12,
   BFD_RELOC_C6000_PCR_S10,
@@ -4046,38 +5113,38 @@ the opcode.  */
   BFD_RELOC_C6000_FPHEAD,
   BFD_RELOC_C6000_NOCMP,
 
-/* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
+  /* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
   BFD_RELOC_FR30_48,
 
-/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
-two sections.  */
+  /* This is a 32 bit reloc for the FR30 that stores 20 bits split up
+     into two sections.  */
   BFD_RELOC_FR30_20,
 
-/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
-4 bits.  */
+  /* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset
+     in 4 bits.  */
   BFD_RELOC_FR30_6_IN_4,
 
-/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
-into 8 bits.  */
+  /* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
+     into 8 bits.  */
   BFD_RELOC_FR30_8_IN_8,
 
-/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
-into 8 bits.  */
+  /* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
+     into 8 bits.  */
   BFD_RELOC_FR30_9_IN_8,
 
-/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
-into 8 bits.  */
+  /* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
+     into 8 bits.  */
   BFD_RELOC_FR30_10_IN_8,
 
-/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
-short offset into 8 bits.  */
+  /* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
+     short offset into 8 bits.  */
   BFD_RELOC_FR30_9_PCREL,
 
-/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
-short offset into 11 bits.  */
+  /* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
+     short offset into 11 bits.  */
   BFD_RELOC_FR30_12_PCREL,
 
-/* Motorola Mcore relocations.  */
+  /* Motorola Mcore relocations.  */
   BFD_RELOC_MCORE_PCREL_IMM8BY4,
   BFD_RELOC_MCORE_PCREL_IMM11BY2,
   BFD_RELOC_MCORE_PCREL_IMM4BY2,
@@ -4085,7 +5152,7 @@ short offset into 11 bits.  */
   BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
   BFD_RELOC_MCORE_RVA,
 
-/* Toshiba Media Processor Relocations.  */
+  /* Toshiba Media Processor Relocations.  */
   BFD_RELOC_MEP_8,
   BFD_RELOC_MEP_16,
   BFD_RELOC_MEP_32,
@@ -4107,8 +5174,7 @@ short offset into 11 bits.  */
   BFD_RELOC_MEP_GNU_VTINHERIT,
   BFD_RELOC_MEP_GNU_VTENTRY,
 
-
-/* Imagination Technologies Meta relocations.  */
+  /* Imagination Technologies Meta relocations.  */
   BFD_RELOC_METAG_HIADDR16,
   BFD_RELOC_METAG_LOADDR16,
   BFD_RELOC_METAG_RELBRANCH,
@@ -4148,190 +5214,192 @@ short offset into 11 bits.  */
   BFD_RELOC_METAG_TLS_LE_HI16,
   BFD_RELOC_METAG_TLS_LE_LO16,
 
-/* These are relocations for the GETA instruction.  */
+  /* These are relocations for the GETA instruction.  */
   BFD_RELOC_MMIX_GETA,
   BFD_RELOC_MMIX_GETA_1,
   BFD_RELOC_MMIX_GETA_2,
   BFD_RELOC_MMIX_GETA_3,
 
-/* These are relocations for a conditional branch instruction.  */
+  /* These are relocations for a conditional branch instruction.  */
   BFD_RELOC_MMIX_CBRANCH,
   BFD_RELOC_MMIX_CBRANCH_J,
   BFD_RELOC_MMIX_CBRANCH_1,
   BFD_RELOC_MMIX_CBRANCH_2,
   BFD_RELOC_MMIX_CBRANCH_3,
 
-/* These are relocations for the PUSHJ instruction.  */
+  /* These are relocations for the PUSHJ instruction.  */
   BFD_RELOC_MMIX_PUSHJ,
   BFD_RELOC_MMIX_PUSHJ_1,
   BFD_RELOC_MMIX_PUSHJ_2,
   BFD_RELOC_MMIX_PUSHJ_3,
   BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
 
-/* These are relocations for the JMP instruction.  */
+  /* These are relocations for the JMP instruction.  */
   BFD_RELOC_MMIX_JMP,
   BFD_RELOC_MMIX_JMP_1,
   BFD_RELOC_MMIX_JMP_2,
   BFD_RELOC_MMIX_JMP_3,
 
-/* This is a relocation for a relative address as in a GETA instruction or
-a branch.  */
+  /* This is a relocation for a relative address as in a GETA instruction
+     or a branch.  */
   BFD_RELOC_MMIX_ADDR19,
 
-/* This is a relocation for a relative address as in a JMP instruction.  */
+  /* This is a relocation for a relative address as in a JMP instruction.  */
   BFD_RELOC_MMIX_ADDR27,
 
-/* This is a relocation for an instruction field that may be a general
-register or a value 0..255.  */
+  /* This is a relocation for an instruction field that may be a general
+     register or a value 0..255.  */
   BFD_RELOC_MMIX_REG_OR_BYTE,
 
-/* This is a relocation for an instruction field that may be a general
-register.  */
+  /* This is a relocation for an instruction field that may be a general
+     register.  */
   BFD_RELOC_MMIX_REG,
 
-/* This is a relocation for two instruction fields holding a register and
-an offset, the equivalent of the relocation.  */
+  /* This is a relocation for two instruction fields holding a register
+     and an offset, the equivalent of the relocation.  */
   BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
 
-/* This relocation is an assertion that the expression is not allocated as
-a global register.  It does not modify contents.  */
+  /* This relocation is an assertion that the expression is not allocated
+     as a global register.  It does not modify contents.  */
   BFD_RELOC_MMIX_LOCAL,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
-short offset into 7 bits.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
+     short offset into 7 bits.  */
   BFD_RELOC_AVR_7_PCREL,
 
-/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
-short offset into 12 bits.  */
+  /* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
+     short offset into 12 bits.  */
   BFD_RELOC_AVR_13_PCREL,
 
-/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
-program memory address) into 16 bits.  */
+  /* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
+     program memory address) into 16 bits.  */
   BFD_RELOC_AVR_16_PM,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
-data memory address) into 8 bit immediate value of LDI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
+     data memory address) into 8 bit immediate value of LDI insn.  */
   BFD_RELOC_AVR_LO8_LDI,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
-of data memory address) into 8 bit immediate value of LDI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
+     of data memory address) into 8 bit immediate value of LDI insn.  */
   BFD_RELOC_AVR_HI8_LDI,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-of program memory address) into 8 bit immediate value of LDI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of program memory address) into 8 bit immediate value of
+     LDI insn.  */
   BFD_RELOC_AVR_HH8_LDI,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-of 32 bit value) into 8 bit immediate value of LDI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.  */
   BFD_RELOC_AVR_MS8_LDI,
 
-/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
-(usually data memory address) into 8 bit immediate value of SUBI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (usually data memory address) into 8 bit immediate value of SUBI insn.  */
   BFD_RELOC_AVR_LO8_LDI_NEG,
 
-/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
-(high 8 bit of data memory address) into 8 bit immediate value of
-SUBI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 8 bit of data memory address) into 8 bit immediate value of
+     SUBI insn.  */
   BFD_RELOC_AVR_HI8_LDI_NEG,
 
-/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
-(most high 8 bit of program memory address) into 8 bit immediate value
-of LDI or SUBI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (most high 8 bit of program memory address) into 8 bit immediate
+     value of LDI or SUBI insn.  */
   BFD_RELOC_AVR_HH8_LDI_NEG,
 
-/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
-of 32 bit value) into 8 bit immediate value of LDI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (msb of 32 bit value) into 8 bit immediate value of LDI insn.  */
   BFD_RELOC_AVR_MS8_LDI_NEG,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
-command address) into 8 bit immediate value of LDI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
+     command address) into 8 bit immediate value of LDI insn.  */
   BFD_RELOC_AVR_LO8_LDI_PM,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value
-(command address) into 8 bit immediate value of LDI insn. If the address
-is beyond the 128k boundary, the linker inserts a jump stub for this reloc
-in the lower 128k.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value
+     (command address) into 8 bit immediate value of LDI insn. If the
+     address is beyond the 128k boundary, the linker inserts a jump stub
+     for this reloc in the lower 128k.  */
   BFD_RELOC_AVR_LO8_LDI_GS,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
-of command address) into 8 bit immediate value of LDI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
+     of command address) into 8 bit immediate value of LDI insn.  */
   BFD_RELOC_AVR_HI8_LDI_PM,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
-of command address) into 8 bit immediate value of LDI insn.  If the address
-is beyond the 128k boundary, the linker inserts a jump stub for this reloc
-below 128k.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
+     of command address) into 8 bit immediate value of LDI insn.  If the
+     address is beyond the 128k boundary, the linker inserts a jump stub
+     for this reloc below 128k.  */
   BFD_RELOC_AVR_HI8_LDI_GS,
 
-/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-of command address) into 8 bit immediate value of LDI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores 8 bit value (most
+     high 8 bit of command address) into 8 bit immediate value of LDI
+     insn.  */
   BFD_RELOC_AVR_HH8_LDI_PM,
 
-/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
-(usually command address) into 8 bit immediate value of SUBI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (usually command address) into 8 bit immediate value of SUBI insn.  */
   BFD_RELOC_AVR_LO8_LDI_PM_NEG,
 
-/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
-(high 8 bit of 16 bit command address) into 8 bit immediate value
-of SUBI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 8 bit of 16 bit command address) into 8 bit immediate value
+     of SUBI insn.  */
   BFD_RELOC_AVR_HI8_LDI_PM_NEG,
 
-/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
-(high 6 bit of 22 bit command address) into 8 bit immediate
-value of SUBI insn.  */
+  /* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+     (high 6 bit of 22 bit command address) into 8 bit immediate
+     value of SUBI insn.  */
   BFD_RELOC_AVR_HH8_LDI_PM_NEG,
 
-/* This is a 32 bit reloc for the AVR that stores 23 bit value
-into 22 bits.  */
+  /* This is a 32 bit reloc for the AVR that stores 23 bit value
+     into 22 bits.  */
   BFD_RELOC_AVR_CALL,
 
-/* This is a 16 bit reloc for the AVR that stores all needed bits
-for absolute addressing with ldi with overflow check to linktime  */
+  /* This is a 16 bit reloc for the AVR that stores all needed bits
+     for absolute addressing with ldi with overflow check to linktime.  */
   BFD_RELOC_AVR_LDI,
 
-/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
-instructions  */
+  /* This is a 6 bit reloc for the AVR that stores offset for ldd/std
+     instructions.  */
   BFD_RELOC_AVR_6,
 
-/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
-instructions  */
+  /* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
+     instructions.  */
   BFD_RELOC_AVR_6_ADIW,
 
-/* This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
-in .byte lo8(symbol)  */
+  /* This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
+     in .byte lo8(symbol).  */
   BFD_RELOC_AVR_8_LO,
 
-/* This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
-in .byte hi8(symbol)  */
+  /* This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
+     in .byte hi8(symbol).  */
   BFD_RELOC_AVR_8_HI,
 
-/* This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
-in .byte hlo8(symbol)  */
+  /* This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
+     in .byte hlo8(symbol).  */
   BFD_RELOC_AVR_8_HLO,
 
-/* AVR 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
-second symbol so the linker can determine whether to adjust the field
-value.  */
+  /* AVR 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
+     second symbol so the linker can determine whether to adjust the field
+     value.  */
   BFD_RELOC_AVR_DIFF8,
   BFD_RELOC_AVR_DIFF16,
   BFD_RELOC_AVR_DIFF32,
 
-/* This is a 7 bit reloc for the AVR that stores SRAM address for 16bit
-lds and sts instructions supported only tiny core.  */
+  /* This is a 7 bit reloc for the AVR that stores SRAM address for 16bit
+     lds and sts instructions supported only tiny core.  */
   BFD_RELOC_AVR_LDS_STS_16,
 
-/* This is a 6 bit reloc for the AVR that stores an I/O register
-number for the IN and OUT instructions  */
+  /* This is a 6 bit reloc for the AVR that stores an I/O register
+     number for the IN and OUT instructions.  */
   BFD_RELOC_AVR_PORT6,
 
-/* This is a 5 bit reloc for the AVR that stores an I/O register
-number for the SBIC, SBIS, SBI and CBI instructions  */
+  /* This is a 5 bit reloc for the AVR that stores an I/O register
+     number for the SBIC, SBIS, SBI and CBI instructions.  */
   BFD_RELOC_AVR_PORT5,
 
-/* RISC-V relocations.  */
+  /* RISC-V relocations.  */
   BFD_RELOC_RISCV_HI20,
   BFD_RELOC_RISCV_PCREL_HI20,
   BFD_RELOC_RISCV_PCREL_LO12_I,
@@ -4364,14 +5432,13 @@ number for the SBIC, SBIS, SBI and CBI i
   BFD_RELOC_RISCV_TLS_DTPREL64,
   BFD_RELOC_RISCV_TLS_TPREL32,
   BFD_RELOC_RISCV_TLS_TPREL64,
+  BFD_RELOC_RISCV_TLSDESC_HI20,
+  BFD_RELOC_RISCV_TLSDESC_LOAD_LO12,
+  BFD_RELOC_RISCV_TLSDESC_ADD_LO12,
+  BFD_RELOC_RISCV_TLSDESC_CALL,
   BFD_RELOC_RISCV_ALIGN,
   BFD_RELOC_RISCV_RVC_BRANCH,
   BFD_RELOC_RISCV_RVC_JUMP,
-  BFD_RELOC_RISCV_RVC_LUI,
-  BFD_RELOC_RISCV_GPREL_I,
-  BFD_RELOC_RISCV_GPREL_S,
-  BFD_RELOC_RISCV_TPREL_I,
-  BFD_RELOC_RISCV_TPREL_S,
   BFD_RELOC_RISCV_RELAX,
   BFD_RELOC_RISCV_CFA,
   BFD_RELOC_RISCV_SUB6,
@@ -4380,8 +5447,10 @@ number for the SBIC, SBIS, SBI and CBI i
   BFD_RELOC_RISCV_SET16,
   BFD_RELOC_RISCV_SET32,
   BFD_RELOC_RISCV_32_PCREL,
+  BFD_RELOC_RISCV_SET_ULEB128,
+  BFD_RELOC_RISCV_SUB_ULEB128,
 
-/* Renesas RL78 Relocations.  */
+  /* Renesas RL78 Relocations.  */
   BFD_RELOC_RL78_NEG8,
   BFD_RELOC_RL78_NEG16,
   BFD_RELOC_RL78_NEG24,
@@ -4417,7 +5486,7 @@ number for the SBIC, SBIS, SBI and CBI i
   BFD_RELOC_RL78_CODE,
   BFD_RELOC_RL78_SADDR,
 
-/* Renesas RX Relocations.  */
+  /* Renesas RX Relocations.  */
   BFD_RELOC_RX_NEG8,
   BFD_RELOC_RX_NEG16,
   BFD_RELOC_RX_NEG24,
@@ -4446,97 +5515,97 @@ number for the SBIC, SBIS, SBI and CBI i
   BFD_RELOC_RX_ABS16UL,
   BFD_RELOC_RX_RELAX,
 
-/* Direct 12 bit.  */
+  /* Direct 12 bit.  */
   BFD_RELOC_390_12,
 
-/* 12 bit GOT offset.  */
+  /* 12 bit GOT offset.  */
   BFD_RELOC_390_GOT12,
 
-/* 32 bit PC relative PLT address.  */
+  /* 32 bit PC relative PLT address.  */
   BFD_RELOC_390_PLT32,
 
-/* Copy symbol at runtime.  */
+  /* Copy symbol at runtime.  */
   BFD_RELOC_390_COPY,
 
-/* Create GOT entry.  */
+  /* Create GOT entry.  */
   BFD_RELOC_390_GLOB_DAT,
 
-/* Create PLT entry.  */
+  /* Create PLT entry.  */
   BFD_RELOC_390_JMP_SLOT,
 
-/* Adjust by program base.  */
+  /* Adjust by program base.  */
   BFD_RELOC_390_RELATIVE,
 
-/* 32 bit PC relative offset to GOT.  */
+  /* 32 bit PC relative offset to GOT.  */
   BFD_RELOC_390_GOTPC,
 
-/* 16 bit GOT offset.  */
+  /* 16 bit GOT offset.  */
   BFD_RELOC_390_GOT16,
 
-/* PC relative 12 bit shifted by 1.  */
+  /* PC relative 12 bit shifted by 1.  */
   BFD_RELOC_390_PC12DBL,
 
-/* 12 bit PC rel. PLT shifted by 1.  */
+  /* 12 bit PC rel. PLT shifted by 1.  */
   BFD_RELOC_390_PLT12DBL,
 
-/* PC relative 16 bit shifted by 1.  */
+  /* PC relative 16 bit shifted by 1.  */
   BFD_RELOC_390_PC16DBL,
 
-/* 16 bit PC rel. PLT shifted by 1.  */
+  /* 16 bit PC rel. PLT shifted by 1.  */
   BFD_RELOC_390_PLT16DBL,
 
-/* PC relative 24 bit shifted by 1.  */
+  /* PC relative 24 bit shifted by 1.  */
   BFD_RELOC_390_PC24DBL,
 
-/* 24 bit PC rel. PLT shifted by 1.  */
+  /* 24 bit PC rel. PLT shifted by 1.  */
   BFD_RELOC_390_PLT24DBL,
 
-/* PC relative 32 bit shifted by 1.  */
+  /* PC relative 32 bit shifted by 1.  */
   BFD_RELOC_390_PC32DBL,
 
-/* 32 bit PC rel. PLT shifted by 1.  */
+  /* 32 bit PC rel. PLT shifted by 1.  */
   BFD_RELOC_390_PLT32DBL,
 
-/* 32 bit PC rel. GOT shifted by 1.  */
+  /* 32 bit PC rel. GOT shifted by 1.  */
   BFD_RELOC_390_GOTPCDBL,
 
-/* 64 bit GOT offset.  */
+  /* 64 bit GOT offset.  */
   BFD_RELOC_390_GOT64,
 
-/* 64 bit PC relative PLT address.  */
+  /* 64 bit PC relative PLT address.  */
   BFD_RELOC_390_PLT64,
 
-/* 32 bit rel. offset to GOT entry.  */
+  /* 32 bit rel. offset to GOT entry.  */
   BFD_RELOC_390_GOTENT,
 
-/* 64 bit offset to GOT.  */
+  /* 64 bit offset to GOT.  */
   BFD_RELOC_390_GOTOFF64,
 
-/* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
+  /* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
   BFD_RELOC_390_GOTPLT12,
 
-/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
+  /* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
   BFD_RELOC_390_GOTPLT16,
 
-/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
+  /* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
   BFD_RELOC_390_GOTPLT32,
 
-/* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
+  /* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
   BFD_RELOC_390_GOTPLT64,
 
-/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
+  /* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
   BFD_RELOC_390_GOTPLTENT,
 
-/* 16-bit rel. offset from the GOT to a PLT entry.  */
+  /* 16-bit rel. offset from the GOT to a PLT entry.  */
   BFD_RELOC_390_PLTOFF16,
 
-/* 32-bit rel. offset from the GOT to a PLT entry.  */
+  /* 32-bit rel. offset from the GOT to a PLT entry.  */
   BFD_RELOC_390_PLTOFF32,
 
-/* 64-bit rel. offset from the GOT to a PLT entry.  */
+  /* 64-bit rel. offset from the GOT to a PLT entry.  */
   BFD_RELOC_390_PLTOFF64,
 
-/* s390 tls relocations.  */
+  /* s390 tls relocations.  */
   BFD_RELOC_390_TLS_LOAD,
   BFD_RELOC_390_TLS_GDCALL,
   BFD_RELOC_390_TLS_LDCALL,
@@ -4558,102 +5627,102 @@ number for the SBIC, SBIS, SBI and CBI i
   BFD_RELOC_390_TLS_DTPOFF,
   BFD_RELOC_390_TLS_TPOFF,
 
-/* Long displacement extension.  */
+  /* Long displacement extension.  */
   BFD_RELOC_390_20,
   BFD_RELOC_390_GOT20,
   BFD_RELOC_390_GOTPLT20,
   BFD_RELOC_390_TLS_GOTIE20,
 
-/* STT_GNU_IFUNC relocation.  */
+  /* STT_GNU_IFUNC relocation.  */
   BFD_RELOC_390_IRELATIVE,
 
-/* Score relocations
-Low 16 bit for load/store  */
+  /* Score relocations.
+     Low 16 bit for load/store.  */
   BFD_RELOC_SCORE_GPREL15,
 
-/* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
+  /* This is a 24-bit reloc with the right 1 bit assumed to be 0.  */
   BFD_RELOC_SCORE_DUMMY2,
   BFD_RELOC_SCORE_JMP,
 
-/* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
+  /* This is a 19-bit reloc with the right 1 bit assumed to be 0.  */
   BFD_RELOC_SCORE_BRANCH,
 
-/* This is a 32-bit reloc for 48-bit instructions.  */
+  /* This is a 32-bit reloc for 48-bit instructions.  */
   BFD_RELOC_SCORE_IMM30,
 
-/* This is a 32-bit reloc for 48-bit instructions.  */
+  /* This is a 32-bit reloc for 48-bit instructions.  */
   BFD_RELOC_SCORE_IMM32,
 
-/* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
+  /* This is a 11-bit reloc with the right 1 bit assumed to be 0.  */
   BFD_RELOC_SCORE16_JMP,
 
-/* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
+  /* This is a 8-bit reloc with the right 1 bit assumed to be 0.  */
   BFD_RELOC_SCORE16_BRANCH,
 
-/* This is a 9-bit reloc with the right 1 bit assumed to be 0  */
+  /* This is a 9-bit reloc with the right 1 bit assumed to be 0.  */
   BFD_RELOC_SCORE_BCMP,
 
-/* Undocumented Score relocs  */
+  /* Undocumented Score relocs.  */
   BFD_RELOC_SCORE_GOT15,
   BFD_RELOC_SCORE_GOT_LO16,
   BFD_RELOC_SCORE_CALL15,
   BFD_RELOC_SCORE_DUMMY_HI16,
 
-/* Scenix IP2K - 9-bit register number / data address  */
+  /* Scenix IP2K - 9-bit register number / data address.  */
   BFD_RELOC_IP2K_FR9,
 
-/* Scenix IP2K - 4-bit register/data bank number  */
+  /* Scenix IP2K - 4-bit register/data bank number.  */
   BFD_RELOC_IP2K_BANK,
 
-/* Scenix IP2K - low 13 bits of instruction word address  */
+  /* Scenix IP2K - low 13 bits of instruction word address.  */
   BFD_RELOC_IP2K_ADDR16CJP,
 
-/* Scenix IP2K - high 3 bits of instruction word address  */
+  /* Scenix IP2K - high 3 bits of instruction word address.  */
   BFD_RELOC_IP2K_PAGE3,
 
-/* Scenix IP2K - ext/low/high 8 bits of data address  */
+  /* Scenix IP2K - ext/low/high 8 bits of data address.  */
   BFD_RELOC_IP2K_LO8DATA,
   BFD_RELOC_IP2K_HI8DATA,
   BFD_RELOC_IP2K_EX8DATA,
 
-/* Scenix IP2K - low/high 8 bits of instruction word address  */
+  /* Scenix IP2K - low/high 8 bits of instruction word address.  */
   BFD_RELOC_IP2K_LO8INSN,
   BFD_RELOC_IP2K_HI8INSN,
 
-/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
+  /* Scenix IP2K - even/odd PC modifier to modify snb pcl.0.  */
   BFD_RELOC_IP2K_PC_SKIP,
 
-/* Scenix IP2K - 16 bit word address in text section.  */
+  /* Scenix IP2K - 16 bit word address in text section.  */
   BFD_RELOC_IP2K_TEXT,
 
-/* Scenix IP2K - 7-bit sp or dp offset  */
+  /* Scenix IP2K - 7-bit sp or dp offset.  */
   BFD_RELOC_IP2K_FR_OFFSET,
 
-/* Scenix VPE4K coprocessor - data/insn-space addressing  */
+  /* Scenix VPE4K coprocessor - data/insn-space addressing.  */
   BFD_RELOC_VPE4KMATH_DATA,
   BFD_RELOC_VPE4KMATH_INSN,
 
-/* These two relocations are used by the linker to determine which of
-the entries in a C++ virtual function table are actually used.  When
-the --gc-sections option is given, the linker will zero out the entries
-that are not used, so that the code for those functions need not be
-included in the output.
-
-VTABLE_INHERIT is a zero-space relocation used to describe to the
-linker the inheritance tree of a C++ virtual function table.  The
-relocation's symbol should be the parent class' vtable, and the
-relocation should be located at the child vtable.
-
-VTABLE_ENTRY is a zero-space relocation that describes the use of a
-virtual function table entry.  The reloc's symbol should refer to the
-table of the class mentioned in the code.  Off of that base, an offset
-describes the entry that is being used.  For Rela hosts, this offset
-is stored in the reloc's addend.  For Rel hosts, we are forced to put
-this offset in the reloc's section offset.  */
+  /* These two relocations are used by the linker to determine which of
+     the entries in a C++ virtual function table are actually used.  When
+     the --gc-sections option is given, the linker will zero out the
+     entries that are not used, so that the code for those functions need
+     not be included in the output.
+
+     VTABLE_INHERIT is a zero-space relocation used to describe to the
+     linker the inheritance tree of a C++ virtual function table.  The
+     relocation's symbol should be the parent class' vtable, and the
+     relocation should be located at the child vtable.
+
+     VTABLE_ENTRY is a zero-space relocation that describes the use of a
+     virtual function table entry.  The reloc's symbol should refer to
+     the table of the class mentioned in the code.  Off of that base, an
+     offset describes the entry that is being used.  For Rela hosts, this
+     offset is stored in the reloc's addend.  For Rel hosts, we are
+     forced to put this offset in the reloc's section offset.  */
   BFD_RELOC_VTABLE_INHERIT,
   BFD_RELOC_VTABLE_ENTRY,
 
-/* Intel IA64 Relocations.  */
+  /* Intel IA64 Relocations.  */
   BFD_RELOC_IA64_IMM14,
   BFD_RELOC_IA64_IMM22,
   BFD_RELOC_IA64_IMM64,
@@ -4734,136 +5803,137 @@ this offset in the reloc's section offse
   BFD_RELOC_IA64_DTPREL64LSB,
   BFD_RELOC_IA64_LTOFF_DTPREL22,
 
-/* Motorola 68HC11 reloc.
-This is the 8 bit high part of an absolute address.  */
+  /* Motorola 68HC11 reloc.
+     This is the 8 bit high part of an absolute address.  */
   BFD_RELOC_M68HC11_HI8,
 
-/* Motorola 68HC11 reloc.
-This is the 8 bit low part of an absolute address.  */
+  /* Motorola 68HC11 reloc.
+     This is the 8 bit low part of an absolute address.  */
   BFD_RELOC_M68HC11_LO8,
 
-/* Motorola 68HC11 reloc.
-This is the 3 bit of a value.  */
+  /* Motorola 68HC11 reloc.
+     This is the 3 bit of a value.  */
   BFD_RELOC_M68HC11_3B,
 
-/* Motorola 68HC11 reloc.
-This reloc marks the beginning of a jump/call instruction.
-It is used for linker relaxation to correctly identify beginning
-of instruction and change some branches to use PC-relative
-addressing mode.  */
+  /* Motorola 68HC11 reloc.
+     This reloc marks the beginning of a jump/call instruction.
+     It is used for linker relaxation to correctly identify beginning
+     of instruction and change some branches to use PC-relative
+     addressing mode.  */
   BFD_RELOC_M68HC11_RL_JUMP,
 
-/* Motorola 68HC11 reloc.
-This reloc marks a group of several instructions that gcc generates
-and for which the linker relaxation pass can modify and/or remove
-some of them.  */
+  /* Motorola 68HC11 reloc.
+     This reloc marks a group of several instructions that gcc generates
+     and for which the linker relaxation pass can modify and/or remove
+     some of them.  */
   BFD_RELOC_M68HC11_RL_GROUP,
 
-/* Motorola 68HC11 reloc.
-This is the 16-bit lower part of an address.  It is used for 'call'
-instruction to specify the symbol address without any special
-transformation (due to memory bank window).  */
+  /* Motorola 68HC11 reloc.
+     This is the 16-bit lower part of an address.  It is used for 'call'
+     instruction to specify the symbol address without any special
+     transformation (due to memory bank window).  */
   BFD_RELOC_M68HC11_LO16,
 
-/* Motorola 68HC11 reloc.
-This is a 8-bit reloc that specifies the page number of an address.
-It is used by 'call' instruction to specify the page number of
-the symbol.  */
+  /* Motorola 68HC11 reloc.
+     This is a 8-bit reloc that specifies the page number of an address.
+     It is used by 'call' instruction to specify the page number of
+     the symbol.  */
   BFD_RELOC_M68HC11_PAGE,
 
-/* Motorola 68HC11 reloc.
-This is a 24-bit reloc that represents the address with a 16-bit
-value and a 8-bit page number.  The symbol address is transformed
-to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
+  /* Motorola 68HC11 reloc.
+     This is a 24-bit reloc that represents the address with a 16-bit
+     value and a 8-bit page number.  The symbol address is transformed
+     to follow the 16K memory bank of 68HC12 (seen as mapped in the
+     window).  */
   BFD_RELOC_M68HC11_24,
 
-/* Motorola 68HC12 reloc.
-This is the 5 bits of a value.  */
+  /* Motorola 68HC12 reloc.
+     This is the 5 bits of a value.  */
   BFD_RELOC_M68HC12_5B,
 
-/* Freescale XGATE reloc.
-This reloc marks the beginning of a bra/jal instruction.  */
+  /* Freescale XGATE reloc.
+     This reloc marks the beginning of a bra/jal instruction.  */
   BFD_RELOC_XGATE_RL_JUMP,
 
-/* Freescale XGATE reloc.
-This reloc marks a group of several instructions that gcc generates
-and for which the linker relaxation pass can modify and/or remove
-some of them.  */
+  /* Freescale XGATE reloc.
+     This reloc marks a group of several instructions that gcc generates
+     and for which the linker relaxation pass can modify and/or remove
+     some of them.  */
   BFD_RELOC_XGATE_RL_GROUP,
 
-/* Freescale XGATE reloc.
-This is the 16-bit lower part of an address.  It is used for the '16-bit'
-instructions.  */
+  /* Freescale XGATE reloc.
+     This is the 16-bit lower part of an address.  It is used for the
+     '16-bit' instructions.  */
   BFD_RELOC_XGATE_LO16,
 
-/* Freescale XGATE reloc.  */
+  /* Freescale XGATE reloc.  */
   BFD_RELOC_XGATE_GPAGE,
 
-/* Freescale XGATE reloc.  */
+  /* Freescale XGATE reloc.  */
   BFD_RELOC_XGATE_24,
 
-/* Freescale XGATE reloc.
-This is a 9-bit pc-relative reloc.  */
+  /* Freescale XGATE reloc.
+     This is a 9-bit pc-relative reloc.  */
   BFD_RELOC_XGATE_PCREL_9,
 
-/* Freescale XGATE reloc.
-This is a 10-bit pc-relative reloc.  */
+  /* Freescale XGATE reloc.
+     This is a 10-bit pc-relative reloc.  */
   BFD_RELOC_XGATE_PCREL_10,
 
-/* Freescale XGATE reloc.
-This is the 16-bit lower part of an address.  It is used for the '16-bit'
-instructions.  */
+  /* Freescale XGATE reloc.
+     This is the 16-bit lower part of an address.  It is used for the
+     '16-bit' instructions.  */
   BFD_RELOC_XGATE_IMM8_LO,
 
-/* Freescale XGATE reloc.
-This is the 16-bit higher part of an address.  It is used for the '16-bit'
-instructions.  */
+  /* Freescale XGATE reloc.
+     This is the 16-bit higher part of an address.  It is used for the
+     '16-bit' instructions.  */
   BFD_RELOC_XGATE_IMM8_HI,
 
-/* Freescale XGATE reloc.
-This is a 3-bit pc-relative reloc.  */
+  /* Freescale XGATE reloc.
+     This is a 3-bit pc-relative reloc.  */
   BFD_RELOC_XGATE_IMM3,
 
-/* Freescale XGATE reloc.
-This is a 4-bit pc-relative reloc.  */
+  /* Freescale XGATE reloc.
+     This is a 4-bit pc-relative reloc.  */
   BFD_RELOC_XGATE_IMM4,
 
-/* Freescale XGATE reloc.
-This is a 5-bit pc-relative reloc.  */
+  /* Freescale XGATE reloc.
+     This is a 5-bit pc-relative reloc.  */
   BFD_RELOC_XGATE_IMM5,
 
-/* Motorola 68HC12 reloc.
-This is the 9 bits of a value.  */
+  /* Motorola 68HC12 reloc.
+     This is the 9 bits of a value.  */
   BFD_RELOC_M68HC12_9B,
 
-/* Motorola 68HC12 reloc.
-This is the 16 bits of a value.  */
+  /* Motorola 68HC12 reloc.
+     This is the 16 bits of a value.  */
   BFD_RELOC_M68HC12_16B,
 
-/* Motorola 68HC12/XGATE reloc.
-This is a PCREL9 branch.  */
+  /* Motorola 68HC12/XGATE reloc.
+     This is a PCREL9 branch.  */
   BFD_RELOC_M68HC12_9_PCREL,
 
-/* Motorola 68HC12/XGATE reloc.
-This is a PCREL10 branch.  */
+  /* Motorola 68HC12/XGATE reloc.
+     This is a PCREL10 branch.  */
   BFD_RELOC_M68HC12_10_PCREL,
 
-/* Motorola 68HC12/XGATE reloc.
-This is the 8 bit low part of an absolute address and immediately precedes
-a matching HI8XG part.  */
+  /* Motorola 68HC12/XGATE reloc.
+     This is the 8 bit low part of an absolute address and immediately
+     precedes a matching HI8XG part.  */
   BFD_RELOC_M68HC12_LO8XG,
 
-/* Motorola 68HC12/XGATE reloc.
-This is the 8 bit high part of an absolute address and immediately follows
-a matching LO8XG part.  */
+  /* Motorola 68HC12/XGATE reloc.
+     This is the 8 bit high part of an absolute address and immediately
+     follows a matching LO8XG part.  */
   BFD_RELOC_M68HC12_HI8XG,
 
-/* Freescale S12Z reloc.
-This is a 15 bit relative address.  If the most significant bits are all zero
-then it may be truncated to 8 bits.  */
+  /* Freescale S12Z reloc.
+     This is a 15 bit relative address.  If the most significant bits are
+     all zero then it may be truncated to 8 bits.  */
   BFD_RELOC_S12Z_15_PCREL,
 
-/* NS CR16 Relocations.  */
+  /* NS CR16 Relocations.  */
   BFD_RELOC_CR16_NUM8,
   BFD_RELOC_CR16_NUM16,
   BFD_RELOC_CR16_NUM32,
@@ -4898,7 +5968,7 @@ then it may be truncated to 8 bits.  */
   BFD_RELOC_CR16_GOTC_REGREL20,
   BFD_RELOC_CR16_GLOB_DAT,
 
-/* NS CRX Relocations.  */
+  /* NS CRX Relocations.  */
   BFD_RELOC_CRX_REL4,
   BFD_RELOC_CRX_REL8,
   BFD_RELOC_CRX_REL8_CMP,
@@ -4920,8 +5990,8 @@ then it may be truncated to 8 bits.  */
   BFD_RELOC_CRX_SWITCH16,
   BFD_RELOC_CRX_SWITCH32,
 
-/* These relocs are only used within the CRIS assembler.  They are not
-(at present) written to any object files.  */
+  /* These relocs are only used within the CRIS assembler.  They are not
+     (at present) written to any object files.  */
   BFD_RELOC_CRIS_BDISP8,
   BFD_RELOC_CRIS_UNSIGNED_5,
   BFD_RELOC_CRIS_SIGNED_6,
@@ -4933,34 +6003,35 @@ then it may be truncated to 8 bits.  */
   BFD_RELOC_CRIS_LAPCQ_OFFSET,
   BFD_RELOC_CRIS_UNSIGNED_4,
 
-/* Relocs used in ELF shared libraries for CRIS.  */
+  /* Relocs used in ELF shared libraries for CRIS.  */
   BFD_RELOC_CRIS_COPY,
   BFD_RELOC_CRIS_GLOB_DAT,
   BFD_RELOC_CRIS_JUMP_SLOT,
   BFD_RELOC_CRIS_RELATIVE,
 
-/* 32-bit offset to symbol-entry within GOT.  */
+  /* 32-bit offset to symbol-entry within GOT.  */
   BFD_RELOC_CRIS_32_GOT,
 
-/* 16-bit offset to symbol-entry within GOT.  */
+  /* 16-bit offset to symbol-entry within GOT.  */
   BFD_RELOC_CRIS_16_GOT,
 
-/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
+  /* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
   BFD_RELOC_CRIS_32_GOTPLT,
 
-/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
+  /* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
   BFD_RELOC_CRIS_16_GOTPLT,
 
-/* 32-bit offset to symbol, relative to GOT.  */
+  /* 32-bit offset to symbol, relative to GOT.  */
   BFD_RELOC_CRIS_32_GOTREL,
 
-/* 32-bit offset to symbol with PLT entry, relative to GOT.  */
+  /* 32-bit offset to symbol with PLT entry, relative to GOT.  */
   BFD_RELOC_CRIS_32_PLT_GOTREL,
 
-/* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
+  /* 32-bit offset to symbol with PLT entry, relative to this
+     relocation.  */
   BFD_RELOC_CRIS_32_PLT_PCREL,
 
-/* Relocs used in TLS code for CRIS.  */
+  /* Relocs used in TLS code for CRIS.  */
   BFD_RELOC_CRIS_32_GOT_GD,
   BFD_RELOC_CRIS_16_GOT_GD,
   BFD_RELOC_CRIS_32_GD,
@@ -4974,7 +6045,7 @@ then it may be truncated to 8 bits.  */
   BFD_RELOC_CRIS_DTPMOD,
   BFD_RELOC_CRIS_32_IE,
 
-/* OpenRISC 1000 Relocations.  */
+  /* OpenRISC 1000 Relocations.  */
   BFD_RELOC_OR1K_REL_26,
   BFD_RELOC_OR1K_SLO16,
   BFD_RELOC_OR1K_PCREL_PG21,
@@ -4982,6 +6053,7 @@ then it may be truncated to 8 bits.  */
   BFD_RELOC_OR1K_SLO13,
   BFD_RELOC_OR1K_GOTPC_HI16,
   BFD_RELOC_OR1K_GOTPC_LO16,
+  BFD_RELOC_OR1K_GOT_AHI16,
   BFD_RELOC_OR1K_GOT16,
   BFD_RELOC_OR1K_GOT_PG21,
   BFD_RELOC_OR1K_GOT_LO13,
@@ -5015,7 +6087,7 @@ then it may be truncated to 8 bits.  */
   BFD_RELOC_OR1K_TLS_DTPOFF,
   BFD_RELOC_OR1K_TLS_DTPMOD,
 
-/* H8 elf Relocations.  */
+  /* H8 elf Relocations.  */
   BFD_RELOC_H8_DIR16A8,
   BFD_RELOC_H8_DIR16R8,
   BFD_RELOC_H8_DIR24A8,
@@ -5023,46 +6095,39 @@ then it may be truncated to 8 bits.  */
   BFD_RELOC_H8_DIR32A16,
   BFD_RELOC_H8_DISP32A16,
 
-/* Sony Xstormy16 Relocations.  */
+  /* Sony Xstormy16 Relocations.  */
   BFD_RELOC_XSTORMY16_REL_12,
   BFD_RELOC_XSTORMY16_12,
   BFD_RELOC_XSTORMY16_24,
   BFD_RELOC_XSTORMY16_FPTR16,
 
-/* Self-describing complex relocations.  */
+  /* Self-describing complex relocations.  */
   BFD_RELOC_RELC,
 
-
-/* Infineon Relocations.  */
-  BFD_RELOC_XC16X_PAG,
-  BFD_RELOC_XC16X_POF,
-  BFD_RELOC_XC16X_SEG,
-  BFD_RELOC_XC16X_SOF,
-
-/* Relocations used by VAX ELF.  */
+  /* Relocations used by VAX ELF.  */
   BFD_RELOC_VAX_GLOB_DAT,
   BFD_RELOC_VAX_JMP_SLOT,
   BFD_RELOC_VAX_RELATIVE,
 
-/* Morpho MT - 16 bit immediate relocation.  */
+  /* Morpho MT - 16 bit immediate relocation.  */
   BFD_RELOC_MT_PC16,
 
-/* Morpho MT - Hi 16 bits of an address.  */
+  /* Morpho MT - Hi 16 bits of an address.  */
   BFD_RELOC_MT_HI16,
 
-/* Morpho MT - Low 16 bits of an address.  */
+  /* Morpho MT - Low 16 bits of an address.  */
   BFD_RELOC_MT_LO16,
 
-/* Morpho MT - Used to tell the linker which vtable entries are used.  */
+  /* Morpho MT - Used to tell the linker which vtable entries are used.  */
   BFD_RELOC_MT_GNU_VTINHERIT,
 
-/* Morpho MT - Used to tell the linker which vtable entries are used.  */
+  /* Morpho MT - Used to tell the linker which vtable entries are used.  */
   BFD_RELOC_MT_GNU_VTENTRY,
 
-/* Morpho MT - 8 bit immediate relocation.  */
+  /* Morpho MT - 8 bit immediate relocation.  */
   BFD_RELOC_MT_PCINSN8,
 
-/* msp430 specific relocation codes  */
+  /* msp430 specific relocation codes.  */
   BFD_RELOC_MSP430_10_PCREL,
   BFD_RELOC_MSP430_16_PCREL,
   BFD_RELOC_MSP430_16,
@@ -5085,129 +6150,80 @@ 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,
-  BFD_RELOC_NIOS2_U16,
-  BFD_RELOC_NIOS2_CALL26,
-  BFD_RELOC_NIOS2_IMM5,
-  BFD_RELOC_NIOS2_CACHE_OPX,
-  BFD_RELOC_NIOS2_IMM6,
-  BFD_RELOC_NIOS2_IMM8,
-  BFD_RELOC_NIOS2_HI16,
-  BFD_RELOC_NIOS2_LO16,
-  BFD_RELOC_NIOS2_HIADJ16,
-  BFD_RELOC_NIOS2_GPREL,
-  BFD_RELOC_NIOS2_UJMP,
-  BFD_RELOC_NIOS2_CJMP,
-  BFD_RELOC_NIOS2_CALLR,
-  BFD_RELOC_NIOS2_ALIGN,
-  BFD_RELOC_NIOS2_GOT16,
-  BFD_RELOC_NIOS2_CALL16,
-  BFD_RELOC_NIOS2_GOTOFF_LO,
-  BFD_RELOC_NIOS2_GOTOFF_HA,
-  BFD_RELOC_NIOS2_PCREL_LO,
-  BFD_RELOC_NIOS2_PCREL_HA,
-  BFD_RELOC_NIOS2_TLS_GD16,
-  BFD_RELOC_NIOS2_TLS_LDM16,
-  BFD_RELOC_NIOS2_TLS_LDO16,
-  BFD_RELOC_NIOS2_TLS_IE16,
-  BFD_RELOC_NIOS2_TLS_LE16,
-  BFD_RELOC_NIOS2_TLS_DTPMOD,
-  BFD_RELOC_NIOS2_TLS_DTPREL,
-  BFD_RELOC_NIOS2_TLS_TPREL,
-  BFD_RELOC_NIOS2_COPY,
-  BFD_RELOC_NIOS2_GLOB_DAT,
-  BFD_RELOC_NIOS2_JUMP_SLOT,
-  BFD_RELOC_NIOS2_RELATIVE,
-  BFD_RELOC_NIOS2_GOTOFF,
-  BFD_RELOC_NIOS2_CALL26_NOAT,
-  BFD_RELOC_NIOS2_GOT_LO,
-  BFD_RELOC_NIOS2_GOT_HA,
-  BFD_RELOC_NIOS2_CALL_LO,
-  BFD_RELOC_NIOS2_CALL_HA,
-  BFD_RELOC_NIOS2_R2_S12,
-  BFD_RELOC_NIOS2_R2_I10_1_PCREL,
-  BFD_RELOC_NIOS2_R2_T1I7_1_PCREL,
-  BFD_RELOC_NIOS2_R2_T1I7_2,
-  BFD_RELOC_NIOS2_R2_T2I4,
-  BFD_RELOC_NIOS2_R2_T2I4_1,
-  BFD_RELOC_NIOS2_R2_T2I4_2,
-  BFD_RELOC_NIOS2_R2_X1I7_2,
-  BFD_RELOC_NIOS2_R2_X2L5,
-  BFD_RELOC_NIOS2_R2_F1I5_2,
-  BFD_RELOC_NIOS2_R2_L5I4X1,
-  BFD_RELOC_NIOS2_R2_T1X1I6,
-  BFD_RELOC_NIOS2_R2_T1X1I6_2,
-
-/* PRU LDI 16-bit unsigned data-memory relocation.  */
+  /* PRU LDI 16-bit unsigned data-memory relocation.  */
   BFD_RELOC_PRU_U16,
 
-/* PRU LDI 16-bit unsigned instruction-memory relocation.  */
+  /* PRU LDI 16-bit unsigned instruction-memory relocation.  */
   BFD_RELOC_PRU_U16_PMEMIMM,
 
-/* PRU relocation for two consecutive LDI load instructions that load a
-32 bit value into a register. If the higher bits are all zero, then
-the second instruction may be relaxed.  */
+  /* PRU relocation for two consecutive LDI load instructions that load a
+     32 bit value into a register. If the higher bits are all zero, then
+     the second instruction may be relaxed.  */
   BFD_RELOC_PRU_LDI32,
 
-/* PRU QBBx 10-bit signed PC-relative relocation.  */
+  /* PRU QBBx 10-bit signed PC-relative relocation.  */
   BFD_RELOC_PRU_S10_PCREL,
 
-/* PRU 8-bit unsigned relocation used for the LOOP instruction.  */
+  /* PRU 8-bit unsigned relocation used for the LOOP instruction.  */
   BFD_RELOC_PRU_U8_PCREL,
 
-/* PRU Program Memory relocations.  Used to convert from byte addressing to
-32-bit word addressing.  */
+  /* PRU Program Memory relocations.  Used to convert from byte
+     addressing to 32-bit word addressing.  */
   BFD_RELOC_PRU_32_PMEM,
   BFD_RELOC_PRU_16_PMEM,
 
-/* PRU 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
-second symbol so the linker can determine whether to adjust the field
-value. The PMEM variants encode the word difference, instead of byte
-difference between symbols.  */
+  /* PRU 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 second symbol so the linker can determine whether to
+     adjust the field value.  The PMEM variants encode the word
+     difference, instead of byte difference between symbols.  */
   BFD_RELOC_PRU_GNU_DIFF8,
   BFD_RELOC_PRU_GNU_DIFF16,
   BFD_RELOC_PRU_GNU_DIFF32,
   BFD_RELOC_PRU_GNU_DIFF16_PMEM,
   BFD_RELOC_PRU_GNU_DIFF32_PMEM,
 
-/* IQ2000 Relocations.  */
+  /* IQ2000 Relocations.  */
   BFD_RELOC_IQ2000_OFFSET_16,
   BFD_RELOC_IQ2000_OFFSET_21,
   BFD_RELOC_IQ2000_UHI16,
 
-/* Special Xtensa relocation used only by PLT entries in ELF shared
-objects to indicate that the runtime linker should set the value
-to one of its own internal functions or data structures.  */
+  /* Special Xtensa relocation used only by PLT entries in ELF shared
+     objects to indicate that the runtime linker should set the value
+     to one of its own internal functions or data structures.  */
   BFD_RELOC_XTENSA_RTLD,
 
-/* Xtensa relocations for ELF shared objects.  */
+  /* Xtensa relocations for ELF shared objects.  */
   BFD_RELOC_XTENSA_GLOB_DAT,
   BFD_RELOC_XTENSA_JMP_SLOT,
   BFD_RELOC_XTENSA_RELATIVE,
 
-/* Xtensa relocation used in ELF object files for symbols that may require
-PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
+  /* Xtensa relocation used in ELF object files for symbols that may
+     require 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.
-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
-first symbol so the linker can determine whether to adjust the field
-value.  */
+  /* 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 first symbol so the linker can determine whether to
+     adjust the field value.  */
   BFD_RELOC_XTENSA_DIFF8,
   BFD_RELOC_XTENSA_DIFF16,
   BFD_RELOC_XTENSA_DIFF32,
 
-/* Generic Xtensa relocations for instruction operands.  Only the slot
-number is encoded in the relocation.  The relocation applies to the
-last PC-relative immediate operand, or if there are no PC-relative
-immediates, to the last immediate operand.  */
+  /* Generic Xtensa relocations for instruction operands.  Only the slot
+     number is encoded in the relocation.  The relocation applies to the
+     last PC-relative immediate operand, or if there are no PC-relative
+     immediates, to the last immediate operand.  */
   BFD_RELOC_XTENSA_SLOT0_OP,
   BFD_RELOC_XTENSA_SLOT1_OP,
   BFD_RELOC_XTENSA_SLOT2_OP,
@@ -5224,8 +6240,8 @@ immediates, to the last immediate operan
   BFD_RELOC_XTENSA_SLOT13_OP,
   BFD_RELOC_XTENSA_SLOT14_OP,
 
-/* Alternate Xtensa relocations.  Only the slot is encoded in the
-relocation.  The meaning of these relocations is opcode-specific.  */
+  /* Alternate Xtensa relocations.  Only the slot is encoded in the
+     relocation.  The meaning of these relocations is opcode-specific.  */
   BFD_RELOC_XTENSA_SLOT0_ALT,
   BFD_RELOC_XTENSA_SLOT1_ALT,
   BFD_RELOC_XTENSA_SLOT2_ALT,
@@ -5242,24 +6258,24 @@ relocation.  The meaning of these reloca
   BFD_RELOC_XTENSA_SLOT13_ALT,
   BFD_RELOC_XTENSA_SLOT14_ALT,
 
-/* Xtensa relocations for backward compatibility.  These have all been
-replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
+  /* Xtensa relocations for backward compatibility.  These have all been
+     replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
   BFD_RELOC_XTENSA_OP0,
   BFD_RELOC_XTENSA_OP1,
   BFD_RELOC_XTENSA_OP2,
 
-/* Xtensa relocation to mark that the assembler expanded the
-instructions from an original target.  The expansion size is
-encoded in the reloc size.  */
+  /* Xtensa relocation to mark that the assembler expanded the
+     instructions from an original target.  The expansion size is
+     encoded in the reloc size.  */
   BFD_RELOC_XTENSA_ASM_EXPAND,
 
-/* Xtensa relocation to mark that the linker should simplify
-assembler-expanded instructions.  This is commonly used
-internally by the linker after analysis of a
-BFD_RELOC_XTENSA_ASM_EXPAND.  */
+  /* Xtensa relocation to mark that the linker should simplify
+     assembler-expanded instructions.  This is commonly used
+     internally by the linker after analysis of a
+     BFD_RELOC_XTENSA_ASM_EXPAND.  */
   BFD_RELOC_XTENSA_ASM_SIMPLIFY,
 
-/* Xtensa TLS relocations.  */
+  /* Xtensa TLS relocations.  */
   BFD_RELOC_XTENSA_TLSDESC_FN,
   BFD_RELOC_XTENSA_TLSDESC_ARG,
   BFD_RELOC_XTENSA_TLS_DTPOFF,
@@ -5268,19 +6284,56 @@ BFD_RELOC_XTENSA_ASM_EXPAND.  */
   BFD_RELOC_XTENSA_TLS_ARG,
   BFD_RELOC_XTENSA_TLS_CALL,
 
-/* 8 bit signed offset in (ix+d) or (iy+d).  */
+  /* 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,
 
-/* DJNZ offset.  */
+  /* 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,
 
-/* CALR offset.  */
+  /* CALR offset.  */
   BFD_RELOC_Z8K_CALLR,
 
-/* 4 bit value.  */
+  /* 4 bit value.  */
   BFD_RELOC_Z8K_IMM4L,
 
-/* Lattice Mico32 relocations.  */
+  /* Lattice Mico32 relocations.  */
   BFD_RELOC_LM32_CALL,
   BFD_RELOC_LM32_BRANCH,
   BFD_RELOC_LM32_16_GOT,
@@ -5291,609 +6344,702 @@ BFD_RELOC_XTENSA_ASM_EXPAND.  */
   BFD_RELOC_LM32_JMP_SLOT,
   BFD_RELOC_LM32_RELATIVE,
 
-/* Difference between two section addreses.  Must be followed by a
-BFD_RELOC_MACH_O_PAIR.  */
+  /* Difference between two section addreses.  Must be followed by a
+     BFD_RELOC_MACH_O_PAIR.  */
   BFD_RELOC_MACH_O_SECTDIFF,
 
-/* Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.  */
+  /* Like BFD_RELOC_MACH_O_SECTDIFF but with a local symbol.  */
   BFD_RELOC_MACH_O_LOCAL_SECTDIFF,
 
-/* Pair of relocation.  Contains the first symbol.  */
+  /* Pair of relocation.  Contains the first symbol.  */
   BFD_RELOC_MACH_O_PAIR,
 
-/* Symbol will be substracted.  Must be followed by a BFD_RELOC_32.  */
+  /* Symbol will be substracted.  Must be followed by a BFD_RELOC_32.  */
   BFD_RELOC_MACH_O_SUBTRACTOR32,
 
-/* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
+  /* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
   BFD_RELOC_MACH_O_SUBTRACTOR64,
 
-/* PCREL relocations.  They are marked as branch to create PLT entry if
-required.  */
+  /* PCREL relocations.  They are marked as branch to create PLT entry if
+     required.  */
   BFD_RELOC_MACH_O_X86_64_BRANCH32,
   BFD_RELOC_MACH_O_X86_64_BRANCH8,
 
-/* Used when referencing a GOT entry.  */
+  /* Used when referencing a GOT entry.  */
   BFD_RELOC_MACH_O_X86_64_GOT,
 
-/* Used when loading a GOT entry with movq.  It is specially marked so that
-the linker could optimize the movq to a leaq if possible.  */
+  /* Used when loading a GOT entry with movq.  It is specially marked so
+     that the linker could optimize the movq to a leaq if possible.  */
   BFD_RELOC_MACH_O_X86_64_GOT_LOAD,
 
-/* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */
+  /* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */
   BFD_RELOC_MACH_O_X86_64_PCREL32_1,
 
-/* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.  */
+  /* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.  */
   BFD_RELOC_MACH_O_X86_64_PCREL32_2,
 
-/* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */
+  /* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */
   BFD_RELOC_MACH_O_X86_64_PCREL32_4,
 
-/* Used when referencing a TLV entry.  */
+  /* Used when referencing a TLV entry.  */
   BFD_RELOC_MACH_O_X86_64_TLV,
 
-/* Addend for PAGE or PAGEOFF.  */
+  /* Addend for PAGE or PAGEOFF.  */
   BFD_RELOC_MACH_O_ARM64_ADDEND,
 
-/* Relative offset to page of GOT slot.  */
+  /* Relative offset to page of GOT slot.  */
   BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21,
 
-/* Relative offset within page of GOT slot.  */
+  /* Relative offset within page of GOT slot.  */
   BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12,
 
-/* Address of a GOT entry.  */
+  /* Address of a GOT entry.  */
   BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT,
 
-/* This is a 32 bit reloc for the microblaze that stores the
-low 16 bits of a value  */
+  /* This is a 32 bit reloc for the microblaze that stores the low 16
+     bits of a value.  */
   BFD_RELOC_MICROBLAZE_32_LO,
 
-/* This is a 32 bit pc-relative reloc for the microblaze that
-stores the low 16 bits of a value  */
+  /* This is a 32 bit pc-relative reloc for the microblaze that stores
+     the low 16 bits of a value.  */
   BFD_RELOC_MICROBLAZE_32_LO_PCREL,
 
-/* This is a 32 bit reloc for the microblaze that stores a
-value relative to the read-only small data area anchor  */
+  /* This is a 32 bit reloc for the microblaze that stores a value
+     relative to the read-only small data area anchor.  */
   BFD_RELOC_MICROBLAZE_32_ROSDA,
 
-/* This is a 32 bit reloc for the microblaze that stores a
-value relative to the read-write small data area anchor  */
+  /* This is a 32 bit reloc for the microblaze that stores a value
+     relative to the read-write small data area anchor.  */
   BFD_RELOC_MICROBLAZE_32_RWSDA,
 
-/* This is a 32 bit reloc for the microblaze to handle
-expressions of the form "Symbol Op Symbol"  */
+  /* This is a 32 bit reloc for the microblaze to handle expressions of
+     the form "Symbol Op Symbol".  */
   BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM,
 
-/* This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  No relocation is
-done here - only used for relaxing  */
+  /* This is a 32 bit reloc that stores the 32 bit pc relative value in
+     two words (with an imm instruction).  No relocation is done here -
+     only used for relaxing.  */
+  BFD_RELOC_MICROBLAZE_32_NONE,
+
+  /* This is a 64 bit reloc that stores the 32 bit pc relative value in
+     two words (with an imm instruction).  No relocation is done here -
+     only used for relaxing.  */
   BFD_RELOC_MICROBLAZE_64_NONE,
 
-/* This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  The relocation is
-PC-relative GOT offset  */
+  /* This is a 64 bit reloc that stores the 32 bit pc relative value in
+     two words (with an imm instruction).  The relocation is PC-relative
+     GOT offset.  */
   BFD_RELOC_MICROBLAZE_64_GOTPC,
 
-/* This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  The relocation is
-GOT offset  */
+  /* This is a 64 bit reloc that stores the 32 bit pc relative value in
+     two words (with an imm instruction).  The relocation is GOT offset.  */
   BFD_RELOC_MICROBLAZE_64_GOT,
 
-/* This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  The relocation is
-PC-relative offset into PLT  */
+  /* This is a 64 bit reloc that stores the 32 bit pc relative value in
+     two words (with an imm instruction).  The relocation is PC-relative
+     offset into PLT.  */
   BFD_RELOC_MICROBLAZE_64_PLT,
 
-/* This is a 64 bit reloc that stores the 32 bit GOT relative
-value in two words (with an imm instruction).  The relocation is
-relative offset from _GLOBAL_OFFSET_TABLE_  */
+  /* This is a 64 bit reloc that stores the 32 bit GOT relative value in
+     two words (with an imm instruction).  The relocation is relative
+     offset from _GLOBAL_OFFSET_TABLE_.  */
   BFD_RELOC_MICROBLAZE_64_GOTOFF,
 
-/* This is a 32 bit reloc that stores the 32 bit GOT relative
-value in a word.  The relocation is relative offset from  */
+  /* This is a 32 bit reloc that stores the 32 bit GOT relative value in
+     a word.  The relocation is relative offset from
+     _GLOBAL_OFFSET_TABLE_.  */
   BFD_RELOC_MICROBLAZE_32_GOTOFF,
 
-/* This is used to tell the dynamic linker to copy the value out of
-the dynamic object into the runtime process image.  */
+  /* This is used to tell the dynamic linker to copy the value out of
+     the dynamic object into the runtime process image.  */
   BFD_RELOC_MICROBLAZE_COPY,
 
-/* Unused Reloc  */
+  /* Unused Reloc.  */
   BFD_RELOC_MICROBLAZE_64_TLS,
 
-/* This is a 64 bit reloc that stores the 32 bit GOT relative value
-of the GOT TLS GD info entry in two words (with an imm instruction). The
-relocation is GOT offset.  */
+  /* This is a 64 bit reloc that stores the 32 bit GOT relative value
+     of the GOT TLS GD info entry in two words (with an imm instruction).
+     The relocation is GOT offset.  */
   BFD_RELOC_MICROBLAZE_64_TLSGD,
 
-/* This is a 64 bit reloc that stores the 32 bit GOT relative value
-of the GOT TLS LD info entry in two words (with an imm instruction). The
-relocation is GOT offset.  */
+  /* This is a 64 bit reloc that stores the 32 bit GOT relative value
+     of the GOT TLS LD info entry in two words (with an imm instruction).
+     The relocation is GOT offset.  */
   BFD_RELOC_MICROBLAZE_64_TLSLD,
 
-/* This is a 32 bit reloc that stores the Module ID to GOT(n).  */
+  /* This is a 32 bit reloc that stores the Module ID to GOT(n).  */
   BFD_RELOC_MICROBLAZE_32_TLSDTPMOD,
 
-/* This is a 32 bit reloc that stores TLS offset to GOT(n+1).  */
+  /* This is a 32 bit reloc that stores TLS offset to GOT(n+1).  */
   BFD_RELOC_MICROBLAZE_32_TLSDTPREL,
 
-/* This is a 32 bit reloc for storing TLS offset to two words (uses imm
-instruction)  */
+  /* This is a 32 bit reloc for storing TLS offset to two words (uses imm
+     instruction).  */
   BFD_RELOC_MICROBLAZE_64_TLSDTPREL,
 
-/* This is a 64 bit reloc that stores 32-bit thread pointer relative offset
-to two words (uses imm instruction).  */
+  /* This is a 64 bit reloc that stores 32-bit thread pointer relative
+     offset to two words (uses imm instruction).  */
   BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL,
 
-/* This is a 64 bit reloc that stores 32-bit thread pointer relative offset
-to two words (uses imm instruction).  */
+  /* This is a 64 bit reloc that stores 32-bit thread pointer relative
+     offset to two words (uses imm instruction).  */
   BFD_RELOC_MICROBLAZE_64_TLSTPREL,
 
-/* This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  The relocation is
-PC-relative offset from start of TEXT.  */
+  /* This is a 64 bit reloc that stores the 32 bit pc relative value in
+     two words (with an imm instruction).  The relocation is PC-relative
+     offset from start of TEXT.  */
   BFD_RELOC_MICROBLAZE_64_TEXTPCREL,
 
-/* This is a 64 bit reloc that stores the 32 bit offset
-value in two words (with an imm instruction).  The relocation is
-relative offset from start of TEXT.  */
+  /* This is a 64 bit reloc that stores the 32 bit offset value in two
+     words (with an imm instruction).  The relocation is relative offset
+     from start of TEXT.  */
   BFD_RELOC_MICROBLAZE_64_TEXTREL,
 
-/* AArch64 pseudo relocation code to mark the start of the AArch64
-relocation enumerators.  N.B. the order of the enumerators is
-important as several tables in the AArch64 bfd backend are indexed
-by these enumerators; make sure they are all synced.  */
+  /* KVX pseudo relocation code to mark the start of the KVX relocation
+     enumerators.  N.B. the order of the enumerators is important as
+     several tables in the KVX bfd backend are indexed by these
+     enumerators; make sure they are all synced.  */
+  BFD_RELOC_KVX_RELOC_START,
+
+  /* KVX null relocation code.  */
+  BFD_RELOC_KVX_NONE,
+
+  /* KVX Relocations.  */
+  BFD_RELOC_KVX_16,
+  BFD_RELOC_KVX_32,
+  BFD_RELOC_KVX_64,
+  BFD_RELOC_KVX_S16_PCREL,
+  BFD_RELOC_KVX_PCREL17,
+  BFD_RELOC_KVX_PCREL27,
+  BFD_RELOC_KVX_32_PCREL,
+  BFD_RELOC_KVX_S37_PCREL_LO10,
+  BFD_RELOC_KVX_S37_PCREL_UP27,
+  BFD_RELOC_KVX_S43_PCREL_LO10,
+  BFD_RELOC_KVX_S43_PCREL_UP27,
+  BFD_RELOC_KVX_S43_PCREL_EX6,
+  BFD_RELOC_KVX_S64_PCREL_LO10,
+  BFD_RELOC_KVX_S64_PCREL_UP27,
+  BFD_RELOC_KVX_S64_PCREL_EX27,
+  BFD_RELOC_KVX_64_PCREL,
+  BFD_RELOC_KVX_S16,
+  BFD_RELOC_KVX_S32_LO5,
+  BFD_RELOC_KVX_S32_UP27,
+  BFD_RELOC_KVX_S37_LO10,
+  BFD_RELOC_KVX_S37_UP27,
+  BFD_RELOC_KVX_S37_GOTOFF_LO10,
+  BFD_RELOC_KVX_S37_GOTOFF_UP27,
+  BFD_RELOC_KVX_S43_GOTOFF_LO10,
+  BFD_RELOC_KVX_S43_GOTOFF_UP27,
+  BFD_RELOC_KVX_S43_GOTOFF_EX6,
+  BFD_RELOC_KVX_32_GOTOFF,
+  BFD_RELOC_KVX_64_GOTOFF,
+  BFD_RELOC_KVX_32_GOT,
+  BFD_RELOC_KVX_S37_GOT_LO10,
+  BFD_RELOC_KVX_S37_GOT_UP27,
+  BFD_RELOC_KVX_S43_GOT_LO10,
+  BFD_RELOC_KVX_S43_GOT_UP27,
+  BFD_RELOC_KVX_S43_GOT_EX6,
+  BFD_RELOC_KVX_64_GOT,
+  BFD_RELOC_KVX_GLOB_DAT,
+  BFD_RELOC_KVX_COPY,
+  BFD_RELOC_KVX_JMP_SLOT,
+  BFD_RELOC_KVX_RELATIVE,
+  BFD_RELOC_KVX_S43_LO10,
+  BFD_RELOC_KVX_S43_UP27,
+  BFD_RELOC_KVX_S43_EX6,
+  BFD_RELOC_KVX_S64_LO10,
+  BFD_RELOC_KVX_S64_UP27,
+  BFD_RELOC_KVX_S64_EX27,
+  BFD_RELOC_KVX_S37_GOTADDR_LO10,
+  BFD_RELOC_KVX_S37_GOTADDR_UP27,
+  BFD_RELOC_KVX_S43_GOTADDR_LO10,
+  BFD_RELOC_KVX_S43_GOTADDR_UP27,
+  BFD_RELOC_KVX_S43_GOTADDR_EX6,
+  BFD_RELOC_KVX_S64_GOTADDR_LO10,
+  BFD_RELOC_KVX_S64_GOTADDR_UP27,
+  BFD_RELOC_KVX_S64_GOTADDR_EX27,
+  BFD_RELOC_KVX_64_DTPMOD,
+  BFD_RELOC_KVX_64_DTPOFF,
+  BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10,
+  BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27,
+  BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10,
+  BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27,
+  BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6,
+  BFD_RELOC_KVX_S37_TLS_GD_LO10,
+  BFD_RELOC_KVX_S37_TLS_GD_UP27,
+  BFD_RELOC_KVX_S43_TLS_GD_LO10,
+  BFD_RELOC_KVX_S43_TLS_GD_UP27,
+  BFD_RELOC_KVX_S43_TLS_GD_EX6,
+  BFD_RELOC_KVX_S37_TLS_LD_LO10,
+  BFD_RELOC_KVX_S37_TLS_LD_UP27,
+  BFD_RELOC_KVX_S43_TLS_LD_LO10,
+  BFD_RELOC_KVX_S43_TLS_LD_UP27,
+  BFD_RELOC_KVX_S43_TLS_LD_EX6,
+  BFD_RELOC_KVX_64_TPOFF,
+  BFD_RELOC_KVX_S37_TLS_IE_LO10,
+  BFD_RELOC_KVX_S37_TLS_IE_UP27,
+  BFD_RELOC_KVX_S43_TLS_IE_LO10,
+  BFD_RELOC_KVX_S43_TLS_IE_UP27,
+  BFD_RELOC_KVX_S43_TLS_IE_EX6,
+  BFD_RELOC_KVX_S37_TLS_LE_LO10,
+  BFD_RELOC_KVX_S37_TLS_LE_UP27,
+  BFD_RELOC_KVX_S43_TLS_LE_LO10,
+  BFD_RELOC_KVX_S43_TLS_LE_UP27,
+  BFD_RELOC_KVX_S43_TLS_LE_EX6,
+  BFD_RELOC_KVX_8,
+
+  /* KVX pseudo relocation code to mark the end of the KVX relocation
+     enumerators that have direct mapping to ELF reloc codes.  There are
+     a few more enumerators after this one; those are mainly used by the
+     KVX assembler for the internal fixup or to select one of the above
+     enumerators.  */
+  BFD_RELOC_KVX_RELOC_END,
+
+  /* AArch64 pseudo relocation code to mark the start of the AArch64
+     relocation enumerators.  N.B. the order of the enumerators is
+     important as several tables in the AArch64 bfd backend are indexed
+     by these enumerators; make sure they are all synced.  */
   BFD_RELOC_AARCH64_RELOC_START,
 
-/* Deprecated AArch64 null relocation code.  */
+  /* Deprecated AArch64 null relocation code.  */
   BFD_RELOC_AARCH64_NULL,
 
-/* AArch64 null relocation code.  */
+  /* AArch64 null relocation code.  */
   BFD_RELOC_AARCH64_NONE,
 
-/* Basic absolute relocations of N bits.  These are equivalent to
-BFD_RELOC_N and they were added to assist the indexing of the howto
-table.  */
+  /* Basic absolute relocations of N bits.  These are equivalent to
+     BFD_RELOC_N and they were added to assist the indexing of the howto
+     table.  */
   BFD_RELOC_AARCH64_64,
   BFD_RELOC_AARCH64_32,
   BFD_RELOC_AARCH64_16,
 
-/* PC-relative relocations.  These are equivalent to BFD_RELOC_N_PCREL
-and they were added to assist the indexing of the howto table.  */
+  /* PC-relative relocations.  These are equivalent to BFD_RELOC_N_PCREL
+     and they were added to assist the indexing of the howto table.  */
   BFD_RELOC_AARCH64_64_PCREL,
   BFD_RELOC_AARCH64_32_PCREL,
   BFD_RELOC_AARCH64_16_PCREL,
 
-/* AArch64 MOV[NZK] instruction with most significant bits 0 to 15
-of an unsigned address/value.  */
+  /* AArch64 MOV[NZK] instruction with most significant bits 0 to 15 of
+     an unsigned address/value.  */
   BFD_RELOC_AARCH64_MOVW_G0,
 
-/* AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
-an address/value.  No overflow checking.  */
+  /* AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
+     an address/value.  No overflow checking.  */
   BFD_RELOC_AARCH64_MOVW_G0_NC,
 
-/* AArch64 MOV[NZK] instruction with most significant bits 16 to 31
-of an unsigned address/value.  */
+  /* AArch64 MOV[NZK] instruction with most significant bits 16 to 31 of
+     an unsigned address/value.  */
   BFD_RELOC_AARCH64_MOVW_G1,
 
-/* AArch64 MOV[NZK] instruction with less significant bits 16 to 31
-of an address/value.  No overflow checking.  */
+  /* AArch64 MOV[NZK] instruction with less significant bits 16 to 31 of
+     an address/value.  No overflow checking.  */
   BFD_RELOC_AARCH64_MOVW_G1_NC,
 
-/* AArch64 MOV[NZK] instruction with most significant bits 32 to 47
-of an unsigned address/value.  */
+  /* AArch64 MOV[NZK] instruction with most significant bits 32 to 47 of
+     an unsigned address/value.  */
   BFD_RELOC_AARCH64_MOVW_G2,
 
-/* AArch64 MOV[NZK] instruction with less significant bits 32 to 47
-of an address/value.  No overflow checking.  */
+  /* AArch64 MOV[NZK] instruction with less significant bits 32 to 47 of
+     an address/value.  No overflow checking.  */
   BFD_RELOC_AARCH64_MOVW_G2_NC,
 
-/* AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
-of a signed or unsigned address/value.  */
+  /* AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 of a
+     signed or unsigned address/value.  */
   BFD_RELOC_AARCH64_MOVW_G3,
 
-/* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
-value's sign.  */
+  /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+     signed value.  Changes instruction to MOVZ or MOVN depending on the
+     value's sign.  */
   BFD_RELOC_AARCH64_MOVW_G0_S,
 
-/* AArch64 MOV[NZ] instruction with most significant bits 16 to 31
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
-value's sign.  */
+  /* AArch64 MOV[NZ] instruction with most significant bits 16 to 31 of a
+     signed value.  Changes instruction to MOVZ or MOVN depending on the
+     value's sign.  */
   BFD_RELOC_AARCH64_MOVW_G1_S,
 
-/* AArch64 MOV[NZ] instruction with most significant bits 32 to 47
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
-value's sign.  */
+  /* AArch64 MOV[NZ] instruction with most significant bits 32 to 47 of a
+     signed value.  Changes instruction to MOVZ or MOVN depending on the
+     value's sign.  */
   BFD_RELOC_AARCH64_MOVW_G2_S,
 
-/* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
-value's sign.  */
+  /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+     signed value.  Changes instruction to MOVZ or MOVN depending on the
+     value's sign.  */
   BFD_RELOC_AARCH64_MOVW_PREL_G0,
 
-/* AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
-value's sign.  */
+  /* AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+     signed value.  Changes instruction to MOVZ or MOVN depending on the
+     value's sign.  */
   BFD_RELOC_AARCH64_MOVW_PREL_G0_NC,
 
-/* AArch64 MOVK instruction with most significant bits 16 to 31
-of a signed value.  */
+  /* AArch64 MOVK instruction with most significant bits 16 to 31 of a
+     signed value.  */
   BFD_RELOC_AARCH64_MOVW_PREL_G1,
 
-/* AArch64 MOVK instruction with most significant bits 16 to 31
-of a signed value.  */
+  /* AArch64 MOVK instruction with most significant bits 16 to 31 of a
+     signed value.  */
   BFD_RELOC_AARCH64_MOVW_PREL_G1_NC,
 
-/* AArch64 MOVK instruction with most significant bits 32 to 47
-of a signed value.  */
+  /* AArch64 MOVK instruction with most significant bits 32 to 47 of a
+     signed value.  */
   BFD_RELOC_AARCH64_MOVW_PREL_G2,
 
-/* AArch64 MOVK instruction with most significant bits 32 to 47
-of a signed value.  */
+  /* AArch64 MOVK instruction with most significant bits 32 to 47 of a
+     signed value.  */
   BFD_RELOC_AARCH64_MOVW_PREL_G2_NC,
 
-/* AArch64 MOVK instruction with most significant bits 47 to 63
-of a signed value.  */
+  /* AArch64 MOVK instruction with most significant bits 47 to 63 of a
+     signed value.  */
   BFD_RELOC_AARCH64_MOVW_PREL_G3,
 
-/* AArch64 Load Literal instruction, holding a 19 bit pc-relative word
-offset.  The lowest two bits must be zero and are not stored in the
-instruction, giving a 21 bit signed byte offset.  */
+  /* AArch64 Load Literal instruction, holding a 19 bit pc-relative word
+     offset.  The lowest two bits must be zero and are not stored in the
+     instruction, giving a 21 bit signed byte offset.  */
   BFD_RELOC_AARCH64_LD_LO19_PCREL,
 
-/* AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.  */
+  /* AArch64 ADR instruction, holding a simple 21 bit pc-relative byte
+     offset.  */
   BFD_RELOC_AARCH64_ADR_LO21_PCREL,
 
-/* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
-offset, giving a 4KB aligned page base address.  */
+  /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
+     offset, giving a 4KB aligned page base address.  */
   BFD_RELOC_AARCH64_ADR_HI21_PCREL,
 
-/* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
-offset, giving a 4KB aligned page base address, but with no overflow
-checking.  */
+  /* AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
+     offset, giving a 4KB aligned page base address, but with no overflow
+     checking.  */
   BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL,
 
-/* AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
-Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
+  /* AArch64 ADD immediate instruction, holding bits 0 to 11 of the
+     address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   BFD_RELOC_AARCH64_ADD_LO12,
 
-/* AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
-address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
+  /* AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
+     address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   BFD_RELOC_AARCH64_LDST8_LO12,
 
-/* AArch64 14 bit pc-relative test bit and branch.
-The lowest two bits must be zero and are not stored in the instruction,
-giving a 16 bit signed byte offset.  */
+  /* AArch64 14 bit pc-relative test bit and branch.
+     The lowest two bits must be zero and are not stored in the
+     instruction, giving a 16 bit signed byte offset.  */
   BFD_RELOC_AARCH64_TSTBR14,
 
-/* AArch64 19 bit pc-relative conditional branch and compare & branch.
-The lowest two bits must be zero and are not stored in the instruction,
-giving a 21 bit signed byte offset.  */
+  /* AArch64 19 bit pc-relative conditional branch and compare & branch.
+     The lowest two bits must be zero and are not stored in the
+     instruction, giving a 21 bit signed byte offset.  */
   BFD_RELOC_AARCH64_BRANCH19,
 
-/* AArch64 26 bit pc-relative unconditional branch.
-The lowest two bits must be zero and are not stored in the instruction,
-giving a 28 bit signed byte offset.  */
+  /* AArch64 26 bit pc-relative unconditional branch.
+     The lowest two bits must be zero and are not stored in the
+     instruction, giving a 28 bit signed byte offset.  */
   BFD_RELOC_AARCH64_JUMP26,
 
-/* AArch64 26 bit pc-relative unconditional branch and link.
-The lowest two bits must be zero and are not stored in the instruction,
-giving a 28 bit signed byte offset.  */
+  /* AArch64 26 bit pc-relative unconditional branch and link.
+     The lowest two bits must be zero and are not stored in the
+     instruction, giving a 28 bit signed byte offset.  */
   BFD_RELOC_AARCH64_CALL26,
 
-/* AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
-address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
+  /* AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
+     address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   BFD_RELOC_AARCH64_LDST16_LO12,
 
-/* AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
-address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
+  /* AArch64 32-bit load/store instruction, holding bits 0 to 11 of the
+     address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   BFD_RELOC_AARCH64_LDST32_LO12,
 
-/* AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
-address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
+  /* AArch64 64-bit load/store instruction, holding bits 0 to 11 of the
+     address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   BFD_RELOC_AARCH64_LDST64_LO12,
 
-/* AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
-address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
+  /* AArch64 128-bit load/store instruction, holding bits 0 to 11 of the
+     address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   BFD_RELOC_AARCH64_LDST128_LO12,
 
-/* AArch64 Load Literal instruction, holding a 19 bit PC relative word
-offset of the global offset table entry for a symbol.  The lowest two
-bits must be zero and are not stored in the instruction, giving a 21
-bit signed byte offset.  This relocation type requires signed overflow
-checking.  */
+  /* AArch64 Load Literal instruction, holding a 19 bit PC relative word
+     offset of the global offset table entry for a symbol.  The lowest
+     two bits must be zero and are not stored in the instruction, giving
+     a 21 bit signed byte offset.  This relocation type requires signed
+     overflow checking.  */
   BFD_RELOC_AARCH64_GOT_LD_PREL19,
 
-/* Get to the page base of the global offset table entry for a symbol as
-part of an ADRP instruction using a 21 bit PC relative value.Used in
-conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.  */
+  /* Get to the page base of the global offset table entry for a symbol
+     as part of an ADRP instruction using a 21 bit PC relative value.
+     Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.  */
   BFD_RELOC_AARCH64_ADR_GOT_PAGE,
 
-/* Unsigned 12 bit byte offset for 64 bit load/store from the page of
-the GOT entry for this symbol.  Used in conjunction with
-BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in LP64 ABI only.  */
+  /* Unsigned 12 bit byte offset for 64 bit load/store from the page of
+     the GOT entry for this symbol.  Used in conjunction with
+     BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in LP64 ABI only.  */
   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC,
 
-/* Unsigned 12 bit byte offset for 32 bit load/store from the page of
-the GOT entry for this symbol.  Used in conjunction with
-BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in ILP32 ABI only.  */
+  /* Unsigned 12 bit byte offset for 32 bit load/store from the page of
+     the GOT entry for this symbol.  Used in conjunction with
+     BFD_RELOC_AARCH64_ADR_GOT_PAGE.  Valid in ILP32 ABI only.  */
   BFD_RELOC_AARCH64_LD32_GOT_LO12_NC,
 
-/* Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
-for this symbol.  Valid in LP64 ABI only.  */
+  /* Unsigned 16 bit byte offset for 64 bit load/store from the GOT entry
+     for this symbol.  Valid in LP64 ABI only.  */
   BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC,
 
-/* Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
-for this symbol.  Valid in LP64 ABI only.  */
+  /* Unsigned 16 bit byte higher offset for 64 bit load/store from the
+     GOT entry for this symbol.  Valid in LP64 ABI only.  */
   BFD_RELOC_AARCH64_MOVW_GOTOFF_G1,
 
-/* Unsigned 15 bit byte offset for 64 bit load/store from the page of
-the GOT entry for this symbol.  Valid in LP64 ABI only.  */
+  /* Unsigned 15 bit byte offset for 64 bit load/store from the page of
+     the GOT entry for this symbol.  Valid in LP64 ABI only.  */
   BFD_RELOC_AARCH64_LD64_GOTOFF_LO15,
 
-/* Scaled 14 bit byte offset to the page base of the global offset table.  */
+  /* Scaled 14 bit byte offset to the page base of the global offset
+     table.  */
   BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14,
 
-/* Scaled 15 bit byte offset to the page base of the global offset table.  */
+  /* Scaled 15 bit byte offset to the page base of the global offset
+     table.  */
   BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15,
 
-/* Get to the page base of the global offset table entry for a symbols
-tls_index structure as part of an adrp instruction using a 21 bit PC
-relative value.  Used in conjunction with
-BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.  */
+  /* Get to the page base of the global offset table entry for a symbols
+     tls_index structure as part of an adrp instruction using a 21 bit PC
+     relative value.  Used in conjunction with
+     BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.  */
   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21,
 
-/* AArch64 TLS General Dynamic  */
+  /* AArch64 TLS General Dynamic.  */
   BFD_RELOC_AARCH64_TLSGD_ADR_PREL21,
 
-/* Unsigned 12 bit byte offset to global offset table entry for a symbols
-tls_index structure.  Used in conjunction with
-BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.  */
+  /* Unsigned 12 bit byte offset to global offset table entry for a
+     symbol's tls_index structure.  Used in conjunction with
+     BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.  */
   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC,
 
-/* AArch64 TLS General Dynamic relocation.  */
+  /* AArch64 TLS General Dynamic relocation.  */
   BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC,
 
-/* AArch64 TLS General Dynamic relocation.  */
+  /* AArch64 TLS General Dynamic relocation.  */
   BFD_RELOC_AARCH64_TLSGD_MOVW_G1,
 
-/* AArch64 TLS INITIAL EXEC relocation.  */
+  /* AArch64 TLS INITIAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21,
 
-/* AArch64 TLS INITIAL EXEC relocation.  */
+  /* AArch64 TLS INITIAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC,
 
-/* AArch64 TLS INITIAL EXEC relocation.  */
+  /* AArch64 TLS INITIAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC,
 
-/* AArch64 TLS INITIAL EXEC relocation.  */
+  /* AArch64 TLS INITIAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19,
 
-/* AArch64 TLS INITIAL EXEC relocation.  */
+  /* AArch64 TLS INITIAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC,
 
-/* AArch64 TLS INITIAL EXEC relocation.  */
+  /* AArch64 TLS INITIAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1,
 
-/* bit[23:12] of byte offset to module TLS base address.  */
+  /* bit[23:12] of byte offset to module TLS base address.  */
   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12,
 
-/* Unsigned 12 bit byte offset to module TLS base address.  */
+  /* Unsigned 12 bit byte offset to module TLS base address.  */
   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12,
 
-/* No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.  */
+  /* No overflow check version of
+     BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.  */
   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC,
 
-/* Unsigned 12 bit byte offset to global offset table entry for a symbols
-tls_index structure.  Used in conjunction with
-BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.  */
+  /* Unsigned 12 bit byte offset to global offset table entry for a
+     symbol's tls_index structure.  Used in conjunction with
+     BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.  */
   BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC,
 
-/* GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP
-instruction.  */
+  /* GOT entry page address for AArch64 TLS Local Dynamic, used with ADRP
+     instruction.  */
   BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21,
 
-/* GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction.  */
+  /* GOT entry address for AArch64 TLS Local Dynamic, used with ADR
+     instruction.  */
   BFD_RELOC_AARCH64_TLSLD_ADR_PREL21,
 
-/* bit[11:1] of byte offset to module TLS base address, encoded in ldst
-instructions.  */
+  /* bit[11:1] of byte offset to module TLS base address, encoded in ldst
+     instructions.  */
   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no
+     overflow check.  */
   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC,
 
-/* bit[11:2] of byte offset to module TLS base address, encoded in ldst
-instructions.  */
+  /* bit[11:2] of byte offset to module TLS base address, encoded in ldst
+     instructions.  */
   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no
+     overflow check.  */
   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC,
 
-/* bit[11:3] of byte offset to module TLS base address, encoded in ldst
-instructions.  */
+  /* bit[11:3] of byte offset to module TLS base address, encoded in ldst
+     instructions.  */
   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no
+     overflow check.  */
   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC,
 
-/* bit[11:0] of byte offset to module TLS base address, encoded in ldst
-instructions.  */
+  /* bit[11:0] of byte offset to module TLS base address, encoded in ldst
+     instructions.  */
   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no
+     overflow check.  */
   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC,
 
-/* bit[15:0] of byte offset to module TLS base address.  */
+  /* bit[15:0] of byte offset to module TLS base address.  */
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0,
 
-/* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0  */
+  /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0.  */
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC,
 
-/* bit[31:16] of byte offset to module TLS base address.  */
+  /* bit[31:16] of byte offset to module TLS base address.  */
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1,
 
-/* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1  */
+  /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1.  */
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC,
 
-/* bit[47:32] of byte offset to module TLS base address.  */
+  /* bit[47:32] of byte offset to module TLS base address.  */
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2,
 
-/* AArch64 TLS LOCAL EXEC relocation.  */
+  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2,
 
-/* AArch64 TLS LOCAL EXEC relocation.  */
+  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1,
 
-/* AArch64 TLS LOCAL EXEC relocation.  */
+  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC,
 
-/* AArch64 TLS LOCAL EXEC relocation.  */
+  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0,
 
-/* AArch64 TLS LOCAL EXEC relocation.  */
+  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC,
 
-/* AArch64 TLS LOCAL EXEC relocation.  */
+  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12,
 
-/* AArch64 TLS LOCAL EXEC relocation.  */
+  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12,
 
-/* AArch64 TLS LOCAL EXEC relocation.  */
+  /* AArch64 TLS LOCAL EXEC relocation.  */
   BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC,
 
-/* bit[11:1] of byte offset to module TLS base address, encoded in ldst
-instructions.  */
+  /* bit[11:1] of byte offset to module TLS base address, encoded in ldst
+     instructions.  */
   BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no
+     overflow check.  */
   BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC,
 
-/* bit[11:2] of byte offset to module TLS base address, encoded in ldst
-instructions.  */
+  /* bit[11:2] of byte offset to module TLS base address, encoded in ldst
+     instructions.  */
   BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no
+     overflow check.  */
   BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC,
 
-/* bit[11:3] of byte offset to module TLS base address, encoded in ldst
-instructions.  */
+  /* bit[11:3] of byte offset to module TLS base address, encoded in ldst
+     instructions.  */
   BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no
+     overflow check.  */
   BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC,
 
-/* bit[11:0] of byte offset to module TLS base address, encoded in ldst
-instructions.  */
+  /* bit[11:0] of byte offset to module TLS base address, encoded in ldst
+     instructions.  */
   BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow
+     check.  */
   BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC,
 
-/* AArch64 TLS DESC relocation.  */
+  /* AArch64 TLS DESC relocations.  */
   BFD_RELOC_AARCH64_TLSDESC_LD_PREL19,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_OFF_G1,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_LDR,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_ADD,
-
-/* AArch64 TLS DESC relocation.  */
   BFD_RELOC_AARCH64_TLSDESC_CALL,
 
-/* AArch64 TLS relocation.  */
+  /* AArch64 DSO relocations.  */
   BFD_RELOC_AARCH64_COPY,
-
-/* AArch64 TLS relocation.  */
   BFD_RELOC_AARCH64_GLOB_DAT,
-
-/* AArch64 TLS relocation.  */
   BFD_RELOC_AARCH64_JUMP_SLOT,
-
-/* AArch64 TLS relocation.  */
   BFD_RELOC_AARCH64_RELATIVE,
 
-/* AArch64 TLS relocation.  */
+  /* AArch64 TLS relocations.  */
   BFD_RELOC_AARCH64_TLS_DTPMOD,
-
-/* AArch64 TLS relocation.  */
   BFD_RELOC_AARCH64_TLS_DTPREL,
-
-/* AArch64 TLS relocation.  */
   BFD_RELOC_AARCH64_TLS_TPREL,
-
-/* AArch64 TLS relocation.  */
   BFD_RELOC_AARCH64_TLSDESC,
 
-/* AArch64 support for STT_GNU_IFUNC.  */
+  /* AArch64 support for STT_GNU_IFUNC.  */
   BFD_RELOC_AARCH64_IRELATIVE,
 
-/* AArch64 pseudo relocation code to mark the end of the AArch64
-relocation enumerators that have direct mapping to ELF reloc codes.
-There are a few more enumerators after this one; those are mainly
-used by the AArch64 assembler for the internal fixup or to select
-one of the above enumerators.  */
+  /* AArch64 pseudo relocation code to mark the end of the AArch64
+     relocation enumerators that have direct mapping to ELF reloc codes.
+     There are a few more enumerators after this one; those are mainly
+     used by the AArch64 assembler for the internal fixup or to select
+     one of the above enumerators.  */
   BFD_RELOC_AARCH64_RELOC_END,
 
-/* AArch64 pseudo relocation code to be used internally by the AArch64
-assembler and not (currently) written to any object files.  */
+  /* AArch64 pseudo relocation code to be used internally by the AArch64
+     assembler and not (currently) written to any object files.  */
   BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP,
 
-/* AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
-address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
+  /* AArch64 unspecified load/store instruction, holding bits 0 to 11 of the
+     address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.  */
   BFD_RELOC_AARCH64_LDST_LO12,
 
-/* AArch64 pseudo relocation code for TLS local dynamic mode.  It's to be
-used internally by the AArch64 assembler and not (currently) written to
-any object files.  */
+  /* AArch64 pseudo relocation code for TLS local dynamic mode.  It's to
+     be used internally by the AArch64 assembler and not (currently)
+     written to any object files.  */
   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow
+     check.  */
   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC,
 
-/* AArch64 pseudo relocation code for TLS local exec mode.  It's to be
-used internally by the AArch64 assembler and not (currently) written to
-any object files.  */
+  /* AArch64 pseudo relocation code for TLS local exec mode.  It's to be
+     used internally by the AArch64 assembler and not (currently) written
+     to any object files.  */
   BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12,
 
-/* Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow check.  */
+  /* Similar to BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow
+     check.  */
   BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC,
 
-/* AArch64 pseudo relocation code to be used internally by the AArch64
-assembler and not (currently) written to any object files.  */
+  /* AArch64 pseudo relocation code to be used internally by the AArch64
+     assembler and not (currently) written to any object files.  */
   BFD_RELOC_AARCH64_LD_GOT_LO12_NC,
 
-/* AArch64 pseudo relocation code to be used internally by the AArch64
-assembler and not (currently) written to any object files.  */
+  /* AArch64 pseudo relocation code to be used internally by the AArch64
+     assembler and not (currently) written to any object files.  */
   BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC,
 
-/* AArch64 pseudo relocation code to be used internally by the AArch64
-assembler and not (currently) written to any object files.  */
+  /* AArch64 pseudo relocation code to be used internally by the AArch64
+     assembler and not (currently) written to any object files.  */
   BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC,
 
-/* Tilera TILEPro Relocations.  */
+  /* AArch64 9 bit pc-relative conditional branch and compare & branch.
+     The lowest two bits must be zero and are not stored in the
+     instruction, giving an 11 bit signed byte offset.  */
+  BFD_RELOC_AARCH64_BRANCH9,
+
+  /* Tilera TILEPro Relocations.  */
   BFD_RELOC_TILEPRO_COPY,
   BFD_RELOC_TILEPRO_GLOB_DAT,
   BFD_RELOC_TILEPRO_JMP_SLOT,
@@ -5974,7 +7120,7 @@ assembler and not (currently) written to
   BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA,
   BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA,
 
-/* Tilera TILE-Gx Relocations.  */
+  /* Tilera TILE-Gx Relocations.  */
   BFD_RELOC_TILEGX_HW0,
   BFD_RELOC_TILEGX_HW1,
   BFD_RELOC_TILEGX_HW2,
@@ -6085,35 +7231,35 @@ assembler and not (currently) written to
   BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD,
   BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD,
 
-/* Linux eBPF relocations.  */
+  /* Linux eBPF relocations.  */
   BFD_RELOC_BPF_64,
-  BFD_RELOC_BPF_32,
-  BFD_RELOC_BPF_16,
-  BFD_RELOC_BPF_DISP16,
   BFD_RELOC_BPF_DISP32,
+  BFD_RELOC_BPF_DISPCALL32,
+  BFD_RELOC_BPF_DISP16,
 
-/* Adapteva EPIPHANY - 8 bit signed pc-relative displacement  */
+  /* Adapteva EPIPHANY - 8 bit signed pc-relative displacement.  */
   BFD_RELOC_EPIPHANY_SIMM8,
 
-/* Adapteva EPIPHANY - 24 bit signed pc-relative displacement  */
+  /* Adapteva EPIPHANY - 24 bit signed pc-relative displacement.  */
   BFD_RELOC_EPIPHANY_SIMM24,
 
-/* Adapteva EPIPHANY - 16 most-significant bits of absolute address  */
+  /* Adapteva EPIPHANY - 16 most-significant bits of absolute address.  */
   BFD_RELOC_EPIPHANY_HIGH,
 
-/* Adapteva EPIPHANY - 16 least-significant bits of absolute address  */
+  /* Adapteva EPIPHANY - 16 least-significant bits of absolute address.  */
   BFD_RELOC_EPIPHANY_LOW,
 
-/* Adapteva EPIPHANY - 11 bit signed number - add/sub immediate  */
+  /* Adapteva EPIPHANY - 11 bit signed number - add/sub immediate.  */
   BFD_RELOC_EPIPHANY_SIMM11,
 
-/* Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)  */
+  /* Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st
+     displacement).  */
   BFD_RELOC_EPIPHANY_IMM11,
 
-/* Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.  */
+  /* Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.  */
   BFD_RELOC_EPIPHANY_IMM8,
 
-/* Visium Relocations.  */
+  /* Visium Relocations.  */
   BFD_RELOC_VISIUM_HI16,
   BFD_RELOC_VISIUM_LO16,
   BFD_RELOC_VISIUM_IM16,
@@ -6122,7 +7268,7 @@ assembler and not (currently) written to
   BFD_RELOC_VISIUM_LO16_PCREL,
   BFD_RELOC_VISIUM_IM16_PCREL,
 
-/* WebAssembly relocations.  */
+  /* WebAssembly relocations.  */
   BFD_RELOC_WASM32_LEB128,
   BFD_RELOC_WASM32_LEB128_GOT,
   BFD_RELOC_WASM32_LEB128_GOT_CODE,
@@ -6134,7 +7280,7 @@ assembler and not (currently) written to
   BFD_RELOC_WASM32_INDEX,
   BFD_RELOC_WASM32_PLT_SIG,
 
-/* C-SKY relocations.  */
+  /* C-SKY relocations.  */
   BFD_RELOC_CKCORE_NONE,
   BFD_RELOC_CKCORE_ADDR32,
   BFD_RELOC_CKCORE_PCREL_IMM8BY4,
@@ -6201,11 +7347,122 @@ assembler and not (currently) written to
   BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4,
   BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4,
 
-/* S12Z relocations.  */
+  /* S12Z relocations.  */
   BFD_RELOC_S12Z_OPR,
-  BFD_RELOC_UNUSED };
 
+  /* LARCH relocations.  */
+  BFD_RELOC_LARCH_TLS_DTPMOD32,
+  BFD_RELOC_LARCH_TLS_DTPREL32,
+  BFD_RELOC_LARCH_TLS_DTPMOD64,
+  BFD_RELOC_LARCH_TLS_DTPREL64,
+  BFD_RELOC_LARCH_TLS_TPREL32,
+  BFD_RELOC_LARCH_TLS_TPREL64,
+  BFD_RELOC_LARCH_TLS_DESC32,
+  BFD_RELOC_LARCH_TLS_DESC64,
+  BFD_RELOC_LARCH_MARK_LA,
+  BFD_RELOC_LARCH_MARK_PCREL,
+  BFD_RELOC_LARCH_SOP_PUSH_PCREL,
+  BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE,
+  BFD_RELOC_LARCH_SOP_PUSH_DUP,
+  BFD_RELOC_LARCH_SOP_PUSH_GPREL,
+  BFD_RELOC_LARCH_SOP_PUSH_TLS_TPREL,
+  BFD_RELOC_LARCH_SOP_PUSH_TLS_GOT,
+  BFD_RELOC_LARCH_SOP_PUSH_TLS_GD,
+  BFD_RELOC_LARCH_SOP_PUSH_PLT_PCREL,
+  BFD_RELOC_LARCH_SOP_ASSERT,
+  BFD_RELOC_LARCH_SOP_NOT,
+  BFD_RELOC_LARCH_SOP_SUB,
+  BFD_RELOC_LARCH_SOP_SL,
+  BFD_RELOC_LARCH_SOP_SR,
+  BFD_RELOC_LARCH_SOP_ADD,
+  BFD_RELOC_LARCH_SOP_AND,
+  BFD_RELOC_LARCH_SOP_IF_ELSE,
+  BFD_RELOC_LARCH_SOP_POP_32_S_10_5,
+  BFD_RELOC_LARCH_SOP_POP_32_U_10_12,
+  BFD_RELOC_LARCH_SOP_POP_32_S_10_12,
+  BFD_RELOC_LARCH_SOP_POP_32_S_10_16,
+  BFD_RELOC_LARCH_SOP_POP_32_S_10_16_S2,
+  BFD_RELOC_LARCH_SOP_POP_32_S_5_20,
+  BFD_RELOC_LARCH_SOP_POP_32_S_0_5_10_16_S2,
+  BFD_RELOC_LARCH_SOP_POP_32_S_0_10_10_16_S2,
+  BFD_RELOC_LARCH_SOP_POP_32_U,
+  BFD_RELOC_LARCH_ADD8,
+  BFD_RELOC_LARCH_ADD16,
+  BFD_RELOC_LARCH_ADD24,
+  BFD_RELOC_LARCH_ADD32,
+  BFD_RELOC_LARCH_ADD64,
+  BFD_RELOC_LARCH_SUB8,
+  BFD_RELOC_LARCH_SUB16,
+  BFD_RELOC_LARCH_SUB24,
+  BFD_RELOC_LARCH_SUB32,
+  BFD_RELOC_LARCH_SUB64,
+  BFD_RELOC_LARCH_B16,
+  BFD_RELOC_LARCH_B21,
+  BFD_RELOC_LARCH_B26,
+  BFD_RELOC_LARCH_ABS_HI20,
+  BFD_RELOC_LARCH_ABS_LO12,
+  BFD_RELOC_LARCH_ABS64_LO20,
+  BFD_RELOC_LARCH_ABS64_HI12,
+  BFD_RELOC_LARCH_PCALA_HI20,
+  BFD_RELOC_LARCH_PCALA_LO12,
+  BFD_RELOC_LARCH_PCALA64_LO20,
+  BFD_RELOC_LARCH_PCALA64_HI12,
+  BFD_RELOC_LARCH_GOT_PC_HI20,
+  BFD_RELOC_LARCH_GOT_PC_LO12,
+  BFD_RELOC_LARCH_GOT64_PC_LO20,
+  BFD_RELOC_LARCH_GOT64_PC_HI12,
+  BFD_RELOC_LARCH_GOT_HI20,
+  BFD_RELOC_LARCH_GOT_LO12,
+  BFD_RELOC_LARCH_GOT64_LO20,
+  BFD_RELOC_LARCH_GOT64_HI12,
+  BFD_RELOC_LARCH_TLS_LE_HI20,
+  BFD_RELOC_LARCH_TLS_LE_LO12,
+  BFD_RELOC_LARCH_TLS_LE64_LO20,
+  BFD_RELOC_LARCH_TLS_LE64_HI12,
+  BFD_RELOC_LARCH_TLS_IE_PC_HI20,
+  BFD_RELOC_LARCH_TLS_IE_PC_LO12,
+  BFD_RELOC_LARCH_TLS_IE64_PC_LO20,
+  BFD_RELOC_LARCH_TLS_IE64_PC_HI12,
+  BFD_RELOC_LARCH_TLS_IE_HI20,
+  BFD_RELOC_LARCH_TLS_IE_LO12,
+  BFD_RELOC_LARCH_TLS_IE64_LO20,
+  BFD_RELOC_LARCH_TLS_IE64_HI12,
+  BFD_RELOC_LARCH_TLS_LD_PC_HI20,
+  BFD_RELOC_LARCH_TLS_LD_HI20,
+  BFD_RELOC_LARCH_TLS_GD_PC_HI20,
+  BFD_RELOC_LARCH_TLS_GD_HI20,
+  BFD_RELOC_LARCH_32_PCREL,
+  BFD_RELOC_LARCH_RELAX,
+  BFD_RELOC_LARCH_DELETE,
+  BFD_RELOC_LARCH_ALIGN,
+  BFD_RELOC_LARCH_PCREL20_S2,
+  BFD_RELOC_LARCH_CFA,
+  BFD_RELOC_LARCH_ADD6,
+  BFD_RELOC_LARCH_SUB6,
+  BFD_RELOC_LARCH_ADD_ULEB128,
+  BFD_RELOC_LARCH_SUB_ULEB128,
+  BFD_RELOC_LARCH_64_PCREL,
+  BFD_RELOC_LARCH_CALL36,
+  BFD_RELOC_LARCH_TLS_DESC_PC_HI20,
+  BFD_RELOC_LARCH_TLS_DESC_PC_LO12,
+  BFD_RELOC_LARCH_TLS_DESC64_PC_LO20,
+  BFD_RELOC_LARCH_TLS_DESC64_PC_HI12,
+  BFD_RELOC_LARCH_TLS_DESC_HI20,
+  BFD_RELOC_LARCH_TLS_DESC_LO12,
+  BFD_RELOC_LARCH_TLS_DESC64_LO20,
+  BFD_RELOC_LARCH_TLS_DESC64_HI12,
+  BFD_RELOC_LARCH_TLS_DESC_LD,
+  BFD_RELOC_LARCH_TLS_DESC_CALL,
+  BFD_RELOC_LARCH_TLS_LE_HI20_R,
+  BFD_RELOC_LARCH_TLS_LE_ADD_R,
+  BFD_RELOC_LARCH_TLS_LE_LO12_R,
+  BFD_RELOC_LARCH_TLS_LD_PCREL20_S2,
+  BFD_RELOC_LARCH_TLS_GD_PCREL20_S2,
+  BFD_RELOC_LARCH_TLS_DESC_PCREL20_S2,
+  BFD_RELOC_UNUSED
+};
 typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
+
 reloc_howto_type *bfd_reloc_type_lookup
    (bfd *abfd, bfd_reloc_code_real_type code);
 reloc_howto_type *bfd_reloc_name_lookup
@@ -6213,982 +7470,27 @@ reloc_howto_type *bfd_reloc_name_lookup
 
 const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
 
-/* Extracted from syms.c.  */
-
-typedef struct bfd_symbol
-{
-  /* A pointer to the BFD which owns the symbol. This information
-     is necessary so that a back end can work out what additional
-     information (invisible to the application writer) is carried
-     with the symbol.
-
-     This field is *almost* redundant, since you can use section->owner
-     instead, except that some symbols point to the global sections
-     bfd_{abs,com,und}_section.  This could be fixed by making
-     these globals be per-bfd (or per-target-flavor).  FIXME.  */
-  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
-
-  /* The text of the symbol. The name is left alone, and not copied; the
-     application may not alter it.  */
-  const char *name;
-
-  /* The value of the symbol.  This really should be a union of a
-     numeric value with a pointer, since some flags indicate that
-     a pointer to another symbol is stored here.  */
-  symvalue value;
-
-  /* Attributes of a symbol.  */
-#define BSF_NO_FLAGS            0
-
-  /* The symbol has local scope; <<static>> in <<C>>. The value
-     is the offset into the section of the data.  */
-#define BSF_LOCAL               (1 << 0)
-
-  /* The symbol has global scope; initialized data in <<C>>. The
-     value is the offset into the section of the data.  */
-#define BSF_GLOBAL              (1 << 1)
-
-  /* The symbol has global scope and is exported. The value is
-     the offset into the section of the data.  */
-#define BSF_EXPORT              BSF_GLOBAL /* No real difference.  */
-
-  /* A normal C symbol would be one of:
-     <<BSF_LOCAL>>, <<BSF_UNDEFINED>> or <<BSF_GLOBAL>>.  */
-
-  /* The symbol is a debugging record. The value has an arbitrary
-     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
-#define BSF_DEBUGGING           (1 << 2)
-
-  /* The symbol denotes a function entry point.  Used in ELF,
-     perhaps others someday.  */
-#define BSF_FUNCTION            (1 << 3)
-
-  /* Used by the linker.  */
-#define BSF_KEEP                (1 << 5)
-
-  /* An ELF common symbol.  */
-#define BSF_ELF_COMMON          (1 << 6)
-
-  /* A weak global symbol, overridable without warnings by
-     a regular global symbol of the same name.  */
-#define BSF_WEAK                (1 << 7)
-
-  /* This symbol was created to point to a section, e.g. ELF's
-     STT_SECTION symbols.  */
-#define BSF_SECTION_SYM         (1 << 8)
-
-  /* The symbol used to be a common symbol, but now it is
-     allocated.  */
-#define BSF_OLD_COMMON          (1 << 9)
-
-  /* In some files the type of a symbol sometimes alters its
-     location in an output file - ie in coff a <<ISFCN>> symbol
-     which is also <<C_EXT>> symbol appears where it was
-     declared and not at the end of a section.  This bit is set
-     by the target BFD part to convey this information.  */
-#define BSF_NOT_AT_END          (1 << 10)
-
-  /* Signal that the symbol is the label of constructor section.  */
-#define BSF_CONSTRUCTOR         (1 << 11)
-
-  /* Signal that the symbol is a warning symbol.  The name is a
-     warning.  The name of the next symbol is the one to warn about;
-     if a reference is made to a symbol with the same name as the next
-     symbol, a warning is issued by the linker.  */
-#define BSF_WARNING             (1 << 12)
-
-  /* Signal that the symbol is indirect.  This symbol is an indirect
-     pointer to the symbol with the same name as the next symbol.  */
-#define BSF_INDIRECT            (1 << 13)
-
-  /* BSF_FILE marks symbols that contain a file name.  This is used
-     for ELF STT_FILE symbols.  */
-#define BSF_FILE                (1 << 14)
-
-  /* Symbol is from dynamic linking information.  */
-#define BSF_DYNAMIC             (1 << 15)
-
-  /* The symbol denotes a data object.  Used in ELF, and perhaps
-     others someday.  */
-#define BSF_OBJECT              (1 << 16)
-
-  /* This symbol is a debugging symbol.  The value is the offset
-     into the section of the data.  BSF_DEBUGGING should be set
-     as well.  */
-#define BSF_DEBUGGING_RELOC     (1 << 17)
-
-  /* This symbol is thread local.  Used in ELF.  */
-#define BSF_THREAD_LOCAL        (1 << 18)
-
-  /* This symbol represents a complex relocation expression,
-     with the expression tree serialized in the symbol name.  */
-#define BSF_RELC                (1 << 19)
-
-  /* This symbol represents a signed complex relocation expression,
-     with the expression tree serialized in the symbol name.  */
-#define BSF_SRELC               (1 << 20)
-
-  /* This symbol was created by bfd_get_synthetic_symtab.  */
-#define BSF_SYNTHETIC           (1 << 21)
-
-  /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
-     The dynamic linker will compute the value of this symbol by
-     calling the function that it points to.  BSF_FUNCTION must
-     also be also set.  */
-#define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
-  /* This symbol is a globally unique data object.  The dynamic linker
-     will make sure that in the entire process there is just one symbol
-     with this name and type in use.  BSF_OBJECT must also be set.  */
-#define BSF_GNU_UNIQUE          (1 << 23)
-
-  flagword flags;
-
-  /* A pointer to the section to which this symbol is
-     relative.  This will always be non NULL, there are special
-     sections for undefined and absolute symbols.  */
-  struct bfd_section *section;
-
-  /* Back end special data.  */
-  union
-    {
-      void *p;
-      bfd_vma i;
-    }
-  udata;
-}
-asymbol;
-
-#define bfd_get_symtab_upper_bound(abfd) \
-       BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
-
-bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
-
-bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
-
-#define bfd_is_local_label_name(abfd, name) \
-       BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
-
-bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
-
-#define bfd_is_target_special_symbol(abfd, sym) \
-       BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
-
-#define bfd_canonicalize_symtab(abfd, location) \
-       BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
-
-bfd_boolean bfd_set_symtab
-   (bfd *abfd, asymbol **location, unsigned int count);
-
-void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
-
-#define bfd_make_empty_symbol(abfd) \
-       BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
-
-asymbol *_bfd_generic_make_empty_symbol (bfd *);
-
-#define bfd_make_debug_symbol(abfd,ptr,size) \
-       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
-
-int bfd_decode_symclass (asymbol *symbol);
-
-bfd_boolean bfd_is_undefined_symclass (int symclass);
-
-void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
-
-bfd_boolean bfd_copy_private_symbol_data
-   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
-
-#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
-       BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
-                 (ibfd, isymbol, obfd, osymbol))
-
-/* Extracted from bfd.c.  */
+/* Extracted from simple.c.  */
+bfd_byte *bfd_simple_get_relocated_section_contents
+   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
 
-enum bfd_direction
-  {
-    no_direction = 0,
-    read_direction = 1,
-    write_direction = 2,
-    both_direction = 3
-  };
+/* Extracted from stab-syms.c.  */
+const char *bfd_get_stab_name (int);
 
-enum bfd_plugin_format
-  {
-    bfd_plugin_unknown = 0,
-    bfd_plugin_yes = 1,
-    bfd_plugin_no = 2
-  };
-
-struct bfd_build_id
-  {
-    bfd_size_type size;
-    bfd_byte data[1];
-  };
+/* Extracted from stabs.c.  */
+/* This structure is used to keep track of stabs in sections
+   information while linking.  */
 
-struct bfd
+struct stab_info
 {
-  /* The filename the application opened the BFD with.  */
-  const char *filename;
-
-  /* A pointer to the target jump table.  */
-  const struct bfd_target *xvec;
-
-  /* The IOSTREAM, and corresponding IO vector that provide access
-     to the file backing the BFD.  */
-  void *iostream;
-  const struct bfd_iovec *iovec;
-
-  /* The caching routines use these to maintain a
-     least-recently-used list of BFDs.  */
-  struct bfd *lru_prev, *lru_next;
-
-  /* Track current file position (or current buffer offset for
-     in-memory BFDs).  When a file is closed by the caching routines,
-     BFD retains state information on the file here.  */
-  ufile_ptr where;
-
-  /* File modified time, if mtime_set is TRUE.  */
-  long mtime;
-
-  /* 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;
-
-  /* Values that may appear in the flags field of a BFD.  These also
-     appear in the object_flags field of the bfd_target structure, where
-     they indicate the set of flags used by that backend (not all flags
-     are meaningful for all object file formats) (FIXME: at the moment,
-     the object_flags values have mostly just been copied from backend
-     to another, and are not necessarily correct).  */
-
-#define BFD_NO_FLAGS                0x0
-
-  /* BFD contains relocation entries.  */
-#define HAS_RELOC                   0x1
-
-  /* BFD is directly executable.  */
-#define EXEC_P                      0x2
-
-  /* BFD has line number information (basically used for F_LNNO in a
-     COFF header).  */
-#define HAS_LINENO                  0x4
-
-  /* BFD has debugging information.  */
-#define HAS_DEBUG                  0x08
-
-  /* BFD has symbols.  */
-#define HAS_SYMS                   0x10
-
-  /* BFD has local symbols (basically used for F_LSYMS in a COFF
-     header).  */
-#define HAS_LOCALS                 0x20
-
-  /* BFD is a dynamic object.  */
-#define DYNAMIC                    0x40
-
-  /* Text section is write protected (if D_PAGED is not set, this is
-     like an a.out NMAGIC file) (the linker sets this by default, but
-     clears it for -r or -N).  */
-#define WP_TEXT                    0x80
-
-  /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
-     linker sets this by default, but clears it for -r or -n or -N).  */
-#define D_PAGED                   0x100
-
-  /* BFD is relaxable (this means that bfd_relax_section may be able to
-     do something) (sometimes bfd_relax_section can do something even if
-     this is not set).  */
-#define BFD_IS_RELAXABLE          0x200
-
-  /* This may be set before writing out a BFD to request using a
-     traditional format.  For example, this is used to request that when
-     writing out an a.out object the symbols not be hashed to eliminate
-     duplicates.  */
-#define BFD_TRADITIONAL_FORMAT    0x400
-
-  /* This flag indicates that the BFD contents are actually cached
-     in memory.  If this is set, iostream points to a bfd_in_memory
-     struct.  */
-#define BFD_IN_MEMORY             0x800
-
-  /* This BFD has been created by the linker and doesn't correspond
-     to any input file.  */
-#define BFD_LINKER_CREATED       0x1000
-
-  /* This may be set before writing out a BFD to request that it
-     be written using values for UIDs, GIDs, timestamps, etc. that
-     will be consistent from run to run.  */
-#define BFD_DETERMINISTIC_OUTPUT 0x2000
-
-  /* Compress sections in this BFD.  */
-#define BFD_COMPRESS             0x4000
-
-  /* Decompress sections in this BFD.  */
-#define BFD_DECOMPRESS           0x8000
-
-  /* BFD is a dummy, for plugins.  */
-#define BFD_PLUGIN              0x10000
-
-  /* Compress sections in this BFD with SHF_COMPRESSED from gABI.  */
-#define BFD_COMPRESS_GABI       0x20000
-
-  /* Convert ELF common symbol type to STT_COMMON or STT_OBJECT in this
-     BFD.  */
-#define BFD_CONVERT_ELF_COMMON  0x40000
-
-  /* Use the ELF STT_COMMON type in this BFD.  */
-#define BFD_USE_ELF_STT_COMMON  0x80000
-
-  /* Put pathnames into archives (non-POSIX).  */
-#define BFD_ARCHIVE_FULL_PATH  0x100000
-
-  /* Flags bits to be saved in bfd_preserve_save.  */
-#define BFD_FLAGS_SAVED \
-  (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
-   | BFD_PLUGIN | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON \
-   | BFD_USE_ELF_STT_COMMON)
-
-  /* Flags bits which are for BFD use only.  */
-#define BFD_FLAGS_FOR_BFD_USE_MASK \
-  (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
-   | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
-   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
-
-  /* Is the file descriptor being cached?  That is, can it be closed as
-     needed, and re-opened when accessed later?  */
-  unsigned int cacheable : 1;
-
-  /* Marks whether there was a default target specified when the
-     BFD was opened. This is used to select which matching algorithm
-     to use to choose the back end.  */
-  unsigned int target_defaulted : 1;
-
-  /* ... and here: (``once'' means at least once).  */
-  unsigned int opened_once : 1;
-
-  /* Set if we have a locally maintained mtime value, rather than
-     getting it from the file each time.  */
-  unsigned int mtime_set : 1;
-
-  /* Flag set if symbols from this BFD should not be exported.  */
-  unsigned int no_export : 1;
-
-  /* Remember when output has begun, to stop strange things
-     from happening.  */
-  unsigned int output_has_begun : 1;
-
-  /* Have archive map.  */
-  unsigned int has_armap : 1;
-
-  /* Set if this is a thin archive.  */
-  unsigned int is_thin_archive : 1;
-
-  /* Set if this archive should not cache element positions.  */
-  unsigned int no_element_cache : 1;
-
-  /* Set if only required symbols should be added in the link hash table for
-     this object.  Used by VMS linkers.  */
-  unsigned int selective_search : 1;
-
-  /* Set if this is the linker output BFD.  */
-  unsigned int is_linker_output : 1;
-
-  /* Set if this is the linker input BFD.  */
-  unsigned int is_linker_input : 1;
-
-  /* If this is an input for a compiler plug-in library.  */
-  ENUM_BITFIELD (bfd_plugin_format) plugin_format : 2;
-
-  /* Set if this is a plugin output file.  */
-  unsigned int lto_output : 1;
-
-  /* Set if this is a slim LTO object not loaded with a compiler plugin.  */
-  unsigned int lto_slim_object : 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.  */
-  ufile_ptr origin;
-
-  /* The origin in the archive of the proxy entry.  This will
-     normally be the same as origin, except for thin archives,
-     when it will contain the current offset of the proxy in the
-     thin archive rather than the offset of the bfd in its actual
-     container.  */
-  ufile_ptr proxy_origin;
-
-  /* A hash table for section names.  */
-  struct bfd_hash_table section_htab;
-
-  /* Pointer to linked list of sections.  */
-  struct bfd_section *sections;
-
-  /* The last section on the section list.  */
-  struct bfd_section *section_last;
-
-  /* The number of sections.  */
-  unsigned int section_count;
-
-  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
-     be used only for archive elements.  */
-  int archive_pass;
-
-  /* Stuff only useful for object files:
-     The start address.  */
-  bfd_vma start_address;
-
-  /* Symbol table for output BFD (with symcount entries).
-     Also used by the linker to cache input BFD symbols.  */
-  struct bfd_symbol  **outsymbols;
-
-  /* Used for input and output.  */
-  unsigned int symcount;
-
-  /* Used for slurped dynamic symbol tables.  */
-  unsigned int dynsymcount;
-
-  /* Pointer to structure which contains architecture information.  */
-  const struct bfd_arch_info *arch_info;
-
-  /* Stuff only useful for archives.  */
-  void *arelt_data;
-  struct bfd *my_archive;      /* The containing archive BFD.  */
-  struct bfd *archive_next;    /* The next BFD in the archive.  */
-  struct bfd *archive_head;    /* The first BFD in the archive.  */
-  struct bfd *nested_archives; /* List of nested archive in a flattened
-                                  thin archive.  */
-
-  union {
-    /* For input BFDs, a chain of BFDs involved in a link.  */
-    struct bfd *next;
-    /* For output BFD, the linker hash table.  */
-    struct bfd_link_hash_table *hash;
-  } link;
-
-  /* Used by the back end to hold private data.  */
-  union
-    {
-      struct aout_data_struct *aout_data;
-      struct artdata *aout_ar_data;
-      struct coff_tdata *coff_obj_data;
-      struct pe_tdata *pe_obj_data;
-      struct xcoff_tdata *xcoff_obj_data;
-      struct ecoff_tdata *ecoff_obj_data;
-      struct srec_data_struct *srec_data;
-      struct verilog_data_struct *verilog_data;
-      struct ihex_data_struct *ihex_data;
-      struct tekhex_data_struct *tekhex_data;
-      struct elf_obj_tdata *elf_obj_data;
-      struct mmo_data_struct *mmo_data;
-      struct sun_core_struct *sun_core_data;
-      struct sco5_core_struct *sco5_core_data;
-      struct trad_core_struct *trad_core_data;
-      struct som_data_struct *som_data;
-      struct hpux_core_struct *hpux_core_data;
-      struct hppabsd_core_struct *hppabsd_core_data;
-      struct sgi_core_struct *sgi_core_data;
-      struct lynx_core_struct *lynx_core_data;
-      struct osf_core_struct *osf_core_data;
-      struct cisco_core_struct *cisco_core_data;
-      struct versados_data_struct *versados_data;
-      struct netbsd_core_struct *netbsd_core_data;
-      struct mach_o_data_struct *mach_o_data;
-      struct mach_o_fat_data_struct *mach_o_fat_data;
-      struct plugin_data_struct *plugin_data;
-      struct bfd_pef_data_struct *pef_data;
-      struct bfd_pef_xlib_data_struct *pef_xlib_data;
-      struct bfd_sym_data_struct *sym_data;
-      void *any;
-    }
-  tdata;
-
-  /* Used by the application to hold private data.  */
-  void *usrdata;
-
-  /* Where all the allocated stuff under this BFD goes.  This is a
-     struct objalloc *, but we use void * to avoid requiring the inclusion
-     of objalloc.h.  */
-  void *memory;
-
-  /* For input BFDs, the build ID, if the object has one. */
-  const struct bfd_build_id *build_id;
+  /* A hash table used to hold stabs strings.  */
+  struct bfd_strtab_hash *strings;
+  /* The header file hash table.  */
+  struct bfd_hash_table includes;
+  /* The first .stabstr section.  */
+  struct bfd_section *stabstr;
 };
 
-static inline const char *
-bfd_get_filename (const bfd *abfd)
-{
-  return abfd->filename;
-}
-
-static inline bfd_boolean
-bfd_get_cacheable (const bfd *abfd)
-{
-  return abfd->cacheable;
-}
-
-static inline enum bfd_format
-bfd_get_format (const bfd *abfd)
-{
-  return abfd->format;
-}
-
-static inline flagword
-bfd_get_file_flags (const bfd *abfd)
-{
-  return abfd->flags;
-}
-
-static inline bfd_vma
-bfd_get_start_address (const bfd *abfd)
-{
-  return abfd->start_address;
-}
-
-static inline unsigned int
-bfd_get_symcount (const bfd *abfd)
-{
-  return abfd->symcount;
-}
-
-static inline unsigned int
-bfd_get_dynamic_symcount (const bfd *abfd)
-{
-  return abfd->dynsymcount;
-}
-
-static inline struct bfd_symbol **
-bfd_get_outsymbols (const bfd *abfd)
-{
-  return abfd->outsymbols;
-}
-
-static inline unsigned int
-bfd_count_sections (const bfd *abfd)
-{
-  return abfd->section_count;
-}
-
-static inline bfd_boolean
-bfd_has_map (const bfd *abfd)
-{
-  return abfd->has_armap;
-}
-
-static inline bfd_boolean
-bfd_is_thin_archive (const bfd *abfd)
-{
-  return abfd->is_thin_archive;
-}
-
-static inline void *
-bfd_usrdata (const bfd *abfd)
-{
-  return abfd->usrdata;
-}
-
-/* See note beside bfd_set_section_userdata.  */
-static inline bfd_boolean
-bfd_set_cacheable (bfd * abfd, bfd_boolean val)
-{
-  abfd->cacheable = val;
-  return TRUE;
-}
-
-static inline void
-bfd_set_thin_archive (bfd *abfd, bfd_boolean val)
-{
-  abfd->is_thin_archive = val;
-}
-
-static inline void
-bfd_set_usrdata (bfd *abfd, void *val)
-{
-  abfd->usrdata = val;
-}
-
-static inline asection *
-bfd_asymbol_section (const asymbol *sy)
-{
-  return sy->section;
-}
-
-static inline bfd_vma
-bfd_asymbol_value (const asymbol *sy)
-{
-  return sy->section->vma + sy->value;
-}
-
-static inline const char *
-bfd_asymbol_name (const asymbol *sy)
-{
-  return sy->name;
-}
-
-static inline struct bfd *
-bfd_asymbol_bfd (const asymbol *sy)
-{
-  return sy->the_bfd;
-}
-
-static inline void
-bfd_set_asymbol_name (asymbol *sy, const char *name)
-{
-  sy->name = name;
-}
-
-static inline bfd_size_type
-bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
-{
-  if (abfd->direction != write_direction && sec->rawsize != 0)
-    return sec->rawsize;
-  return sec->size;
-}
-
-/* Find the address one past the end of SEC.  */
-static inline bfd_size_type
-bfd_get_section_limit (const bfd *abfd, const asection *sec)
-{
-  return (bfd_get_section_limit_octets (abfd, sec)
-          / bfd_octets_per_byte (abfd, sec));
-}
-
-/* Functions to handle insertion and deletion of a bfd's sections.  These
-   only handle the list pointers, ie. do not adjust section_count,
-   target_index etc.  */
-static inline void
-bfd_section_list_remove (bfd *abfd, asection *s)
-{
-  asection *next = s->next;
-  asection *prev = s->prev;
-  if (prev)
-    prev->next = next;
-  else
-    abfd->sections = next;
-  if (next)
-    next->prev = prev;
-  else
-    abfd->section_last = prev;
-}
-
-static inline void
-bfd_section_list_append (bfd *abfd, asection *s)
-{
-  s->next = 0;
-  if (abfd->section_last)
-    {
-      s->prev = abfd->section_last;
-      abfd->section_last->next = s;
-    }
-  else
-    {
-      s->prev = 0;
-      abfd->sections = s;
-    }
-  abfd->section_last = s;
-}
-
-static inline void
-bfd_section_list_prepend (bfd *abfd, asection *s)
-{
-  s->prev = 0;
-  if (abfd->sections)
-    {
-      s->next = abfd->sections;
-      abfd->sections->prev = s;
-    }
-  else
-    {
-      s->next = 0;
-      abfd->section_last = s;
-    }
-  abfd->sections = s;
-}
-
-static inline void
-bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s)
-{
-  asection *next = a->next;
-  s->next = next;
-  s->prev = a;
-  a->next = s;
-  if (next)
-    next->prev = s;
-  else
-    abfd->section_last = s;
-}
-
-static inline void
-bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s)
-{
-  asection *prev = b->prev;
-  s->prev = prev;
-  s->next = b;
-  b->prev = s;
-  if (prev)
-    prev->next = s;
-  else
-    abfd->sections = s;
-}
-
-static inline bfd_boolean
-bfd_section_removed_from_list (const bfd *abfd, const asection *s)
-{
-  return s->next ? s->next->prev != s : abfd->section_last != s;
-}
-
-
-typedef enum bfd_error
-{
-  bfd_error_no_error = 0,
-  bfd_error_system_call,
-  bfd_error_invalid_target,
-  bfd_error_wrong_format,
-  bfd_error_wrong_object_format,
-  bfd_error_invalid_operation,
-  bfd_error_no_memory,
-  bfd_error_no_symbols,
-  bfd_error_no_armap,
-  bfd_error_no_more_archived_files,
-  bfd_error_malformed_archive,
-  bfd_error_missing_dso,
-  bfd_error_file_not_recognized,
-  bfd_error_file_ambiguously_recognized,
-  bfd_error_no_contents,
-  bfd_error_nonrepresentable_section,
-  bfd_error_no_debug_section,
-  bfd_error_bad_value,
-  bfd_error_file_truncated,
-  bfd_error_file_too_big,
-  bfd_error_sorry,
-  bfd_error_on_input,
-  bfd_error_invalid_error_code
-}
-bfd_error_type;
-
-bfd_error_type bfd_get_error (void);
-
-void bfd_set_error (bfd_error_type error_tag);
-
-void bfd_set_input_error (bfd *input, bfd_error_type error_tag);
-
-const char *bfd_errmsg (bfd_error_type error_tag);
-
-void bfd_perror (const char *message);
-
-
-typedef void (*bfd_error_handler_type) (const char *, va_list);
-
-void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
-
-bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
-
-void bfd_set_error_program_name (const char *);
-
-
-typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
-                                         const char *bfd_version,
-                                         const char *bfd_file,
-                                         int bfd_line);
-
-bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
-
-long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
-
-long bfd_canonicalize_reloc
-   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
-
-void bfd_set_reloc
-   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
-
-#define bfd_set_reloc(abfd, asect, location, count) \
-       BFD_SEND (abfd, _bfd_set_reloc, (abfd, asect, location, count))
-bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
-
-int bfd_get_arch_size (bfd *abfd);
-
-int bfd_get_sign_extend_vma (bfd *abfd);
-
-bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
-
-unsigned int bfd_get_gp_size (bfd *abfd);
-
-void bfd_set_gp_size (bfd *abfd, unsigned int i);
-
-bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
-
-bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
-
-#define bfd_copy_private_header_data(ibfd, obfd) \
-       BFD_SEND (obfd, _bfd_copy_private_header_data, \
-                 (ibfd, obfd))
-bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
-
-#define bfd_copy_private_bfd_data(ibfd, obfd) \
-       BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
-                 (ibfd, obfd))
-bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
-
-#define bfd_set_private_flags(abfd, flags) \
-       BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
-#define bfd_sizeof_headers(abfd, info) \
-       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
-
-#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
-       BFD_SEND (abfd, _bfd_find_nearest_line, \
-                 (abfd, syms, sec, off, file, func, line, NULL))
-
-#define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
-                                           line, disc) \
-       BFD_SEND (abfd, _bfd_find_nearest_line, \
-                 (abfd, syms, sec, off, file, func, line, disc))
-
-#define bfd_find_line(abfd, syms, sym, file, line) \
-       BFD_SEND (abfd, _bfd_find_line, \
-                 (abfd, syms, sym, file, line))
-
-#define bfd_find_inliner_info(abfd, file, func, line) \
-       BFD_SEND (abfd, _bfd_find_inliner_info, \
-                 (abfd, file, func, line))
-
-#define bfd_debug_info_start(abfd) \
-       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
-
-#define bfd_debug_info_end(abfd) \
-       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
-
-#define bfd_debug_info_accumulate(abfd, section) \
-       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))
-
-#define bfd_update_armap_timestamp(abfd) \
-       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
-
-#define bfd_set_arch_mach(abfd, arch, mach)\
-       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
-
-#define bfd_relax_section(abfd, section, link_info, again) \
-       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
-
-#define bfd_gc_sections(abfd, link_info) \
-       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
-
-#define bfd_lookup_section_flags(link_info, flag_info, section) \
-       BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
-
-#define bfd_merge_sections(abfd, link_info) \
-       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
-
-#define bfd_is_group_section(abfd, sec) \
-       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
-
-#define bfd_group_name(abfd, sec) \
-       BFD_SEND (abfd, _bfd_group_name, (abfd, sec))
-
-#define bfd_discard_group(abfd, sec) \
-       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
-
-#define bfd_link_hash_table_create(abfd) \
-       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
-
-#define bfd_link_add_symbols(abfd, info) \
-       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
-
-#define bfd_link_just_syms(abfd, sec, info) \
-       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
-
-#define bfd_final_link(abfd, info) \
-       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
-
-#define bfd_free_cached_info(abfd) \
-       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
-
-#define bfd_get_dynamic_symtab_upper_bound(abfd) \
-       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
-
-#define bfd_print_private_bfd_data(abfd, file)\
-       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
-
-#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
-       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
-
-#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
-       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
-                                                   dyncount, dynsyms, ret))
-
-#define bfd_get_dynamic_reloc_upper_bound(abfd) \
-       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
-
-#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
-       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
-
-extern bfd_byte *bfd_get_relocated_section_contents
-  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
-   bfd_boolean, asymbol **);
-
-bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
-
-bfd_vma bfd_emul_get_maxpagesize (const char *);
-
-void bfd_emul_set_maxpagesize (const char *, bfd_vma);
-
-bfd_vma bfd_emul_get_commonpagesize (const char *, bfd_boolean);
-
-void bfd_emul_set_commonpagesize (const char *, bfd_vma);
-
-char *bfd_demangle (bfd *, const char *, int);
-
-void bfd_update_compression_header
-   (bfd *abfd, bfd_byte *contents, asection *sec);
-
-bfd_boolean bfd_check_compression_header
-   (bfd *abfd, bfd_byte *contents, asection *sec,
-    bfd_size_type *uncompressed_size,
-    unsigned int *uncompressed_alignment_power);
-
-int bfd_get_compression_header_size (bfd *abfd, asection *sec);
-
-bfd_size_type bfd_convert_section_size
-   (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size);
-
-bfd_boolean bfd_convert_section_contents
-   (bfd *ibfd, asection *isec, bfd *obfd,
-    bfd_byte **ptr, bfd_size_type *ptr_size);
-
-/* Extracted from archive.c.  */
-symindex bfd_get_next_mapent
-   (bfd *abfd, symindex previous, carsym **sym);
-
-bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
-
-bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
-
-/* Extracted from corefile.c.  */
-const char *bfd_core_file_failing_command (bfd *abfd);
-
-int bfd_core_file_failing_signal (bfd *abfd);
-
-int bfd_core_file_pid (bfd *abfd);
-
-bfd_boolean core_file_matches_executable_p
-   (bfd *core_bfd, bfd *exec_bfd);
-
-bfd_boolean generic_core_file_matches_executable_p
-   (bfd *core_bfd, bfd *exec_bfd);
-
 /* Extracted from targets.c.  */
 #define BFD_SEND(bfd, message, arglist) \
   ((*((bfd)->xvec->message)) arglist)
@@ -7211,6 +7513,11 @@ bfd_boolean generic_core_file_matches_ex
    (bfd_assert (__FILE__,__LINE__), NULL))
 #endif
 
+/* Defined to TRUE if unused section symbol should be kept.  */
+#ifndef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS true
+#endif
+
 enum bfd_flavour
 {
   /* N.B. Update bfd_flavour_name if you change this.  */
@@ -7225,10 +7532,7 @@ enum bfd_flavour
   bfd_target_verilog_flavour,
   bfd_target_ihex_flavour,
   bfd_target_som_flavour,
-  bfd_target_os9k_flavour,
-  bfd_target_versados_flavour,
   bfd_target_msdos_flavour,
-  bfd_target_ovax_flavour,
   bfd_target_evax_flavour,
   bfd_target_mmo_flavour,
   bfd_target_mach_o_flavour,
@@ -7239,11 +7543,9 @@ enum bfd_flavour
 
 enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
 
-/* Forward declaration.  */
-typedef struct bfd_link_info _bfd_link_info;
-
-/* Forward declaration.  */
-typedef struct flag_info flag_info;
+/* Forward declarations.  */
+struct flag_info;
+typedef void (*bfd_cleanup) (bfd *);
 
 typedef struct bfd_target
 {
@@ -7282,12 +7584,15 @@ typedef struct bfd_target
      possible targets when more than one target matches.  */
   unsigned char match_priority;
 
+ /* TRUE if unused section symbols should be kept.  */
+  bool keep_unused_section_symbols;
+
   /* Entries for byte swapping for data. These are different from the
      other entry points, since they don't take a BFD as the first argument.
      Certain other handlers could do the same.  */
-  bfd_uint64_t   (*bfd_getx64) (const void *);
-  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
-  void           (*bfd_putx64) (bfd_uint64_t, void *);
+  uint64_t       (*bfd_getx64) (const void *);
+  int64_t        (*bfd_getx_signed_64) (const void *);
+  void           (*bfd_putx64) (uint64_t, void *);
   bfd_vma        (*bfd_getx32) (const void *);
   bfd_signed_vma (*bfd_getx_signed_32) (const void *);
   void           (*bfd_putx32) (bfd_vma, void *);
@@ -7296,9 +7601,9 @@ typedef struct bfd_target
   void           (*bfd_putx16) (bfd_vma, void *);
 
   /* Byte swapping for the headers.  */
-  bfd_uint64_t   (*bfd_h_getx64) (const void *);
-  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
-  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
+  uint64_t       (*bfd_h_getx64) (const void *);
+  int64_t        (*bfd_h_getx_signed_64) (const void *);
+  void           (*bfd_h_putx64) (uint64_t, void *);
   bfd_vma        (*bfd_h_getx32) (const void *);
   bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
   void           (*bfd_h_putx32) (bfd_vma, void *);
@@ -7309,43 +7614,37 @@ 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 *);
+  bool (*_bfd_set_format[bfd_type_end]) (bfd *);
 
   /* Write cached information into a file being written, at <<bfd_close>>.  */
-  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
-
+  bool (*_bfd_write_contents[bfd_type_end]) (bfd *);
 
   /* Generic entry points.  */
 #define BFD_JUMP_TABLE_GENERIC(NAME) \
   NAME##_close_and_cleanup, \
   NAME##_bfd_free_cached_info, \
   NAME##_new_section_hook, \
-  NAME##_get_section_contents, \
-  NAME##_get_section_contents_in_window
+  NAME##_get_section_contents
 
   /* Called when the BFD is being closed to do any necessary cleanup.  */
-  bfd_boolean (*_close_and_cleanup) (bfd *);
+  bool (*_close_and_cleanup) (bfd *);
   /* Ask the BFD to free all cached information.  */
-  bfd_boolean (*_bfd_free_cached_info) (bfd *);
+  bool (*_bfd_free_cached_info) (bfd *);
   /* Called when a new section is created.  */
-  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
+  bool (*_new_section_hook) (bfd *, sec_ptr);
   /* Read the contents of a section.  */
-  bfd_boolean (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
-                                            bfd_size_type);
-  bfd_boolean (*_bfd_get_section_contents_in_window) (bfd *, sec_ptr,
-                                                      bfd_window *, file_ptr,
-                                                      bfd_size_type);
+  bool (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
+				     bfd_size_type);
 
   /* Entry points to copy private data.  */
 #define BFD_JUMP_TABLE_COPY(NAME) \
   NAME##_bfd_copy_private_bfd_data, \
   NAME##_bfd_merge_private_bfd_data, \
-  _bfd_generic_init_private_section_data, \
   NAME##_bfd_copy_private_section_data, \
   NAME##_bfd_copy_private_symbol_data, \
   NAME##_bfd_copy_private_header_data, \
@@ -7354,34 +7653,26 @@ typedef struct bfd_target
 
   /* Called to copy BFD general private data from one object file
      to another.  */
-  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
+  bool (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
   /* Called to merge BFD general private data from one object file
      to a common output file when linking.  */
-  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
-  /* Called to initialize BFD private section data from one object file
-     to another.  */
-#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
-       BFD_SEND (obfd, _bfd_init_private_section_data, \
-                 (ibfd, isec, obfd, osec, link_info))
-  bfd_boolean (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *,
-                                                 sec_ptr,
-                                                 struct bfd_link_info *);
+  bool (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
   /* Called to copy BFD private section data from one object file
      to another.  */
-  bfd_boolean (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *,
-                                                 sec_ptr);
+  bool (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr,
+					  struct bfd_link_info *);
   /* Called to copy BFD private symbol data from one symbol
      to another.  */
-  bfd_boolean (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, bfd *,
-                                                asymbol *);
+  bool (*_bfd_copy_private_symbol_data) (bfd *, asymbol *,
+					 bfd *, asymbol *);
   /* Called to copy BFD private header data from one object file
      to another.  */
-  bfd_boolean (*_bfd_copy_private_header_data) (bfd *, bfd *);
+  bool (*_bfd_copy_private_header_data) (bfd *, bfd *);
   /* Called to set private backend flags.  */
-  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
+  bool (*_bfd_set_private_flags) (bfd *, flagword);
 
   /* Called to print private BFD data.  */
-  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
+  bool (*_bfd_print_private_bfd_data) (bfd *, void *);
 
   /* Core file entry points.  */
 #define BFD_JUMP_TABLE_CORE(NAME) \
@@ -7390,10 +7681,10 @@ typedef struct bfd_target
   NAME##_core_file_matches_executable_p, \
   NAME##_core_file_pid
 
-  char *      (*_core_file_failing_command) (bfd *);
-  int         (*_core_file_failing_signal) (bfd *);
-  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
-  int         (*_core_file_pid) (bfd *);
+  char *(*_core_file_failing_command) (bfd *);
+  int   (*_core_file_failing_signal) (bfd *);
+  bool  (*_core_file_matches_executable_p) (bfd *, bfd *);
+  int   (*_core_file_pid) (bfd *);
 
   /* Archive entry points.  */
 #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
@@ -7409,22 +7700,21 @@ typedef struct bfd_target
   NAME##_generic_stat_arch_elt, \
   NAME##_update_armap_timestamp
 
-  bfd_boolean (*_bfd_slurp_armap) (bfd *);
-  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
-  bfd_boolean (*_bfd_construct_extended_name_table) (bfd *, char **,
-                                                     bfd_size_type *,
-                                                     const char **);
-  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
-  bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *,
-                              unsigned int, int);
-  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
-  bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
-  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
+  bool (*_bfd_slurp_armap) (bfd *);
+  bool (*_bfd_slurp_extended_name_table) (bfd *);
+  bool (*_bfd_construct_extended_name_table) (bfd *, char **,
+					      bfd_size_type *,
+					      const char **);
+  void (*_bfd_truncate_arname) (bfd *, const char *, char *);
+  bool (*write_armap) (bfd *, unsigned, struct orl *, unsigned, int);
+  void *(*_bfd_read_ar_hdr_fn) (bfd *);
+  bool (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
+  bfd *(*openr_next_archived_file) (bfd *, bfd *);
 #define bfd_get_elt_at_index(b,i) \
        BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
-  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
-  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
-  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
+  bfd *(*_bfd_get_elt_at_index) (bfd *, symindex);
+  int  (*_bfd_stat_arch_elt) (bfd *, struct stat *);
+  bool (*_bfd_update_armap_timestamp) (bfd *);
 
   /* Entry points used for symbols.  */
 #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
@@ -7438,52 +7728,59 @@ typedef struct bfd_target
   NAME##_bfd_is_target_special_symbol, \
   NAME##_get_lineno, \
   NAME##_find_nearest_line, \
+  NAME##_find_nearest_line_with_alt, \
   NAME##_find_line, \
   NAME##_find_inliner_info, \
   NAME##_bfd_make_debug_symbol, \
   NAME##_read_minisymbols, \
   NAME##_minisymbol_to_symbol
 
-  long        (*_bfd_get_symtab_upper_bound) (bfd *);
-  long        (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
+  long (*_bfd_get_symtab_upper_bound) (bfd *);
+  long (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
   struct bfd_symbol *
-              (*_bfd_make_empty_symbol) (bfd *);
-  void        (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
-                                    bfd_print_symbol_type);
+       (*_bfd_make_empty_symbol) (bfd *);
+  void (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
+			     bfd_print_symbol_type);
 #define bfd_print_symbol(b,p,s,e) \
        BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
-  void        (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *,
-                                       symbol_info *);
+  void  (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *, symbol_info *);
 #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 *);
-#define bfd_get_symbol_version_string(b,s,h) \
-       BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,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 *);
-  bfd_boolean (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
-                                         struct bfd_section *, bfd_vma,
-                                         const char **, const char **,
-                                         unsigned int *, unsigned int *);
-  bfd_boolean (*_bfd_find_line) (bfd *, struct bfd_symbol **,
-                                 struct bfd_symbol *, const char **,
-                                 unsigned int *);
-  bfd_boolean (*_bfd_find_inliner_info)
+  const char *
+       (*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
+					  bool, bool *);
+#define bfd_get_symbol_version_string(b,s,p,h) \
+       BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h))
+  bool (*_bfd_is_local_label_name) (bfd *, const char *);
+  bool (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
+  alent *
+       (*_get_lineno) (bfd *, struct bfd_symbol *);
+  bool (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
+				  struct bfd_section *, bfd_vma,
+				  const char **, const char **,
+				  unsigned int *, unsigned int *);
+  bool (*_bfd_find_nearest_line_with_alt) (bfd *, const char *,
+					   struct bfd_symbol **,
+					   struct bfd_section *, bfd_vma,
+					   const char **, const char **,
+					   unsigned int *, unsigned int *);
+  bool (*_bfd_find_line) (bfd *, struct bfd_symbol **,
+			  struct bfd_symbol *, const char **,
+			  unsigned int *);
+  bool (*_bfd_find_inliner_info)
     (bfd *, const char **, const char **, unsigned int *);
  /* Back-door to allow format-aware applications to create debug symbols
     while using BFD for everything else.  Currently used by the assembler
     when creating COFF files.  */
-  asymbol *   (*_bfd_make_debug_symbol) (bfd *, void *, unsigned long size);
+  asymbol *
+       (*_bfd_make_debug_symbol) (bfd *);
 #define bfd_read_minisymbols(b, d, m, s) \
        BFD_SEND (b, _read_minisymbols, (b, d, m, s))
-  long        (*_read_minisymbols) (bfd *, bfd_boolean, void **,
-                                    unsigned int *);
+  long (*_read_minisymbols) (bfd *, bool, void **, unsigned int *);
 #define bfd_minisymbol_to_symbol(b, d, m, f) \
        BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
-  asymbol *   (*_minisymbol_to_symbol) (bfd *, bfd_boolean, const void *,
-                                        asymbol *);
+  asymbol *
+       (*_minisymbol_to_symbol) (bfd *, bool, const void *, asymbol *);
 
   /* Routines for relocs.  */
 #define BFD_JUMP_TABLE_RELOCS(NAME) \
@@ -7493,25 +7790,25 @@ typedef struct bfd_target
   NAME##_bfd_reloc_type_lookup, \
   NAME##_bfd_reloc_name_lookup
 
-  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
-  long        (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
-                                          struct bfd_symbol **);
-  void        (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
+  long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
+  long (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
+				   struct bfd_symbol **);
+  void (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
   /* See documentation on reloc types.  */
   reloc_howto_type *
-              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
+       (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
   reloc_howto_type *
-              (*reloc_name_lookup) (bfd *, const char *);
+       (*reloc_name_lookup) (bfd *, const char *);
 
   /* Routines used when writing an object file.  */
 #define BFD_JUMP_TABLE_WRITE(NAME) \
   NAME##_set_arch_mach, \
   NAME##_set_section_contents
 
-  bfd_boolean (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
-                                     unsigned long);
-  bfd_boolean (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
-                                            file_ptr, bfd_size_type);
+  bool (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
+				     unsigned long);
+  bool (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
+				     file_ptr, bfd_size_type);
 
   /* Routines used by the linker.  */
 #define BFD_JUMP_TABLE_LINK(NAME) \
@@ -7536,81 +7833,82 @@ typedef struct bfd_target
   NAME##_bfd_link_hide_symbol, \
   NAME##_bfd_define_start_stop
 
-  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
-  bfd_byte *  (*_bfd_get_relocated_section_contents) (bfd *,
-                                                      struct bfd_link_info *,
-                                                      struct bfd_link_order *,
-                                                      bfd_byte *, bfd_boolean,
-                                                      struct bfd_symbol **);
+  int  (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
+  bfd_byte *
+       (*_bfd_get_relocated_section_contents) (bfd *,
+					       struct bfd_link_info *,
+					       struct bfd_link_order *,
+					       bfd_byte *, bool,
+					       struct bfd_symbol **);
 
-  bfd_boolean (*_bfd_relax_section) (bfd *, struct bfd_section *,
-                                     struct bfd_link_info *, bfd_boolean *);
+  bool (*_bfd_relax_section) (bfd *, struct bfd_section *,
+			      struct bfd_link_info *, bool *);
 
   /* Create a hash table for the linker.  Different backends store
      different information in this table.  */
   struct bfd_link_hash_table *
-              (*_bfd_link_hash_table_create) (bfd *);
+       (*_bfd_link_hash_table_create) (bfd *);
 
   /* Add symbols from this object file into the hash table.  */
-  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
+  bool (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
 
   /* Indicate that we are only retrieving symbol values from this section.  */
-  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
+  void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
 
   /* Copy the symbol type and other attributes for a linker script
      assignment of one symbol to another.  */
 #define bfd_copy_link_hash_symbol_type(b, t, f) \
        BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
-  void        (*_bfd_copy_link_hash_symbol_type) (bfd *,
-                                                  struct bfd_link_hash_entry *,
-                                                  struct bfd_link_hash_entry *);
+  void (*_bfd_copy_link_hash_symbol_type) (bfd *,
+					   struct bfd_link_hash_entry *,
+					   struct bfd_link_hash_entry *);
 
   /* Do a link based on the link_order structures attached to each
      section of the BFD.  */
-  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
+  bool (*_bfd_final_link) (bfd *, struct bfd_link_info *);
 
   /* Should this section be split up into smaller pieces during linking.  */
-  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
+  bool (*_bfd_link_split_section) (bfd *, struct bfd_section *);
 
   /* Check the relocations in the bfd for validity.  */
-  bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
+  bool (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
 
   /* Remove sections that are not referenced from the output.  */
-  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
+  bool (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
 
   /* Sets the bitmask of allowed and disallowed section flags.  */
-  bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
-                                            struct flag_info *, asection *);
+  bool (*_bfd_lookup_section_flags) (struct bfd_link_info *,
+				     struct flag_info *, asection *);
 
   /* Attempt to merge SEC_MERGE sections.  */
-  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
+  bool (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
 
   /* Is this section a member of a group?  */
-  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
+  bool (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 
   /* The group name, if section is a member of a group.  */
   const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
 
   /* Discard members of a group.  */
-  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
+  bool (*_bfd_discard_group) (bfd *, struct bfd_section *);
 
   /* Check if SEC has been already linked during a reloceatable or
      final link.  */
-  bfd_boolean (*_section_already_linked) (bfd *, asection *,
-                                          struct bfd_link_info *);
+  bool (*_section_already_linked) (bfd *, asection *,
+				   struct bfd_link_info *);
 
   /* Define a common symbol.  */
-  bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
-                                            struct bfd_link_hash_entry *);
+  bool (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
+				     struct bfd_link_hash_entry *);
 
   /* Hide a symbol.  */
   void (*_bfd_link_hide_symbol) (bfd *, struct bfd_link_info *,
-                                 struct bfd_link_hash_entry *);
+				 struct bfd_link_hash_entry *);
 
   /* Define a __start, __stop, .startof. or .sizeof. symbol.  */
   struct bfd_link_hash_entry *
-              (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
-                                         asection *);
+       (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
+				  asection *);
 
   /* Routines to handle dynamic symbols and relocs.  */
 #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
@@ -7621,18 +7919,18 @@ typedef struct bfd_target
   NAME##_canonicalize_dynamic_reloc
 
   /* Get the amount of memory required to hold the dynamic symbols.  */
-  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
+  long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
   /* Read in the dynamic symbols.  */
-  long        (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
+  long (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
   /* Create synthetized symbols.  */
-  long        (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
-                                            long, struct bfd_symbol **,
-                                            struct bfd_symbol **);
+  long (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
+				     long, struct bfd_symbol **,
+				     struct bfd_symbol **);
   /* Get the amount of memory required to hold the dynamic relocs.  */
-  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
+  long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
   /* Read in the dynamic relocs.  */
-  long        (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
-                                                  struct bfd_symbol **);
+  long (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
+					   struct bfd_symbol **);
 
   /* Opposite endian version of this target.  */
   const struct bfd_target *alternative_target;
@@ -7661,31 +7959,31 @@ bfd_applicable_file_flags (const bfd *ab
   return abfd->xvec->object_flags;
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_family_coff (const bfd *abfd)
 {
   return (bfd_get_flavour (abfd) == bfd_target_coff_flavour
-          || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
+	  || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_big_endian (const bfd *abfd)
 {
   return abfd->xvec->byteorder == BFD_ENDIAN_BIG;
 }
-static inline bfd_boolean
+static inline bool
 bfd_little_endian (const bfd *abfd)
 {
   return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE;
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_header_big_endian (const bfd *abfd)
 {
   return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG;
 }
 
-static inline bfd_boolean
+static inline bool
 bfd_header_little_endian (const bfd *abfd)
 {
   return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE;
@@ -7711,15 +8009,29 @@ bfd_asymbol_flavour (const asymbol *sy)
   return sy->the_bfd->xvec->flavour;
 }
 
-bfd_boolean bfd_set_default_target (const char *name);
+static inline bool
+bfd_keep_unused_section_symbols (const bfd *abfd)
+{
+  return abfd->xvec->keep_unused_section_symbols;
+}
+
+static inline bool
+bfd_target_supports_archives (const bfd *abfd)
+{
+  return (abfd->xvec->_bfd_check_format[bfd_archive]
+	  != abfd->xvec->_bfd_check_format[bfd_unknown]);
+}
+
+bool bfd_set_default_target (const char *name);
 
 const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
 
 const bfd_target *bfd_get_target_info (const char *target_name,
     bfd *abfd,
-    bfd_boolean *is_bigendian,
+    bool *is_bigendian,
     int *underscoring,
     const char **def_target_arch);
+
 const char ** bfd_target_list (void);
 
 const bfd_target *bfd_iterate_over_targets
@@ -7728,109 +8040,6 @@ const bfd_target *bfd_iterate_over_targe
 
 const char *bfd_flavour_name (enum bfd_flavour flavour);
 
-/* Extracted from format.c.  */
-bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
-
-bfd_boolean bfd_check_format_matches
-   (bfd *abfd, bfd_format format, char ***matching);
-
-bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
-
-const char *bfd_format_string (bfd_format format);
-
-/* Extracted from linker.c.  */
-/* Return TRUE if the symbol described by a linker hash entry H
-   is going to be absolute.  Linker-script defined symbols can be
-   converted from absolute to section-relative ones late in the
-   link.  Use this macro to correctly determine whether the symbol
-   will actually end up absolute in output.  */
-#define bfd_is_abs_symbol(H) \
-  (((H)->type == bfd_link_hash_defined \
-    || (H)->type == bfd_link_hash_defweak) \
-   && bfd_is_abs_section ((H)->u.def.section) \
-   && !(H)->rel_from_abs)
-
-bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
-
-#define bfd_link_split_section(abfd, sec) \
-       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
-
-bfd_boolean bfd_section_already_linked (bfd *abfd,
-    asection *sec,
-    struct bfd_link_info *info);
-
-#define bfd_section_already_linked(abfd, sec, info) \
-       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
-
-bfd_boolean bfd_generic_define_common_symbol
-   (bfd *output_bfd, struct bfd_link_info *info,
-    struct bfd_link_hash_entry *h);
-
-#define bfd_define_common_symbol(output_bfd, info, h) \
-       BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
-
-void _bfd_generic_link_hide_symbol
-   (bfd *output_bfd, struct bfd_link_info *info,
-    struct bfd_link_hash_entry *h);
-
-#define bfd_link_hide_symbol(output_bfd, info, h) \
-       BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))
-
-struct bfd_link_hash_entry *bfd_generic_define_start_stop
-   (struct bfd_link_info *info,
-    const char *symbol, asection *sec);
-
-#define bfd_define_start_stop(output_bfd, info, symbol, sec) \
-       BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec))
-
-struct bfd_elf_version_tree * bfd_find_version_for_sym
-   (struct bfd_elf_version_tree *verdefs,
-    const char *sym_name, bfd_boolean *hide);
-
-bfd_boolean bfd_hide_sym_by_version
-   (struct bfd_elf_version_tree *verdefs, const char *sym_name);
-
-bfd_boolean bfd_link_check_relocs
-   (bfd *abfd, struct bfd_link_info *info);
-
-bfd_boolean _bfd_generic_link_check_relocs
-   (bfd *abfd, struct bfd_link_info *info);
-
-bfd_boolean bfd_merge_private_bfd_data
-   (bfd *ibfd, struct bfd_link_info *info);
-
-#define bfd_merge_private_bfd_data(ibfd, info) \
-       BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
-                 (ibfd, info))
-/* Extracted from simple.c.  */
-bfd_byte *bfd_simple_get_relocated_section_contents
-   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
-
-/* Extracted from compress.c.  */
-bfd_boolean bfd_get_full_section_contents
-   (bfd *abfd, asection *section, bfd_byte **ptr);
-
-void bfd_cache_section_contents
-   (asection *sec, void *contents);
-
-bfd_boolean bfd_is_section_compressed_with_header
-   (bfd *abfd, asection *section,
-    int *compression_header_size_p,
-    bfd_size_type *uncompressed_size_p,
-    unsigned int *uncompressed_alignment_power_p);
-
-bfd_boolean bfd_is_section_compressed
-   (bfd *abfd, asection *section);
-
-bfd_boolean bfd_init_section_decompress_status
-   (bfd *abfd, asection *section);
-
-bfd_boolean bfd_init_section_compress_status
-   (bfd *abfd, asection *section);
-
-bfd_boolean bfd_compress_section
-   (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer);
-
 #ifdef __cplusplus
 }
 #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.20200303/bfd/bfd-in.h ./bfd/bfd-in.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bfd-in.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/bfd-in.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    Contributed by Cygnus Support.
 
@@ -34,9 +34,12 @@ extern "C" {
 
 #include "ansidecl.h"
 #include "symcat.h"
-#include "bfd_stdint.h"
+#include <stdint.h>
+#include <stdbool.h>
+#include <time.h>
 #include "diagnostics.h"
 #include <stdarg.h>
+#include <string.h>
 #include <sys/stat.h>
 
 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
@@ -56,23 +59,6 @@ extern "C" {
    comma and then the length of the string.  Doing this by hand
    is error prone, so using this macro is safer.  */
 #define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
-/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
-   to create the arguments to another macro, since the preprocessor
-   will mis-count the number of arguments to the outer macro (by not
-   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
-   problem for example when trying to use STRING_COMMA_LEN to build
-   the arguments to the strncmp() macro.  Hence this alternative
-   definition of strncmp is provided here.
-
-   Note - these macros do NOT work if STR2 is not a constant string.  */
-#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
-  /* strcpy() can have a similar problem, but since we know we are
-     copying a constant string, we can use memcpy which will be faster
-     since there is no need to check for a NUL byte inside STR.  We
-     can also save time if we do not need to copy the terminating NUL.  */
-#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
-#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
-
 
 #define BFD_SUPPORTS_PLUGINS @supports_plugins@
 
@@ -84,195 +70,74 @@ extern "C" {
 /* The word size of the default bfd target.  */
 #define BFD_DEFAULT_TARGET_SIZE @bfd_default_target_size@
 
-#define BFD_HOST_64BIT_LONG @BFD_HOST_64BIT_LONG@
-#define BFD_HOST_64BIT_LONG_LONG @BFD_HOST_64BIT_LONG_LONG@
-#if @BFD_HOST_64_BIT_DEFINED@
-#define BFD_HOST_64_BIT @BFD_HOST_64_BIT@
-#define BFD_HOST_U_64_BIT @BFD_HOST_U_64_BIT@
-typedef BFD_HOST_64_BIT bfd_int64_t;
-typedef BFD_HOST_U_64_BIT bfd_uint64_t;
-#endif
-
-#ifdef HAVE_INTTYPES_H
-# include <inttypes.h>
-#else
-# if BFD_HOST_64BIT_LONG
-#  define BFD_PRI64 "l"
-# elif defined (__MSVCRT__)
-#  define BFD_PRI64 "I64"
-# else
-#  define BFD_PRI64 "ll"
-# endif
-# undef PRId64
-# define PRId64 BFD_PRI64 "d"
-# undef PRIu64
-# define PRIu64 BFD_PRI64 "u"
-# undef PRIx64
-# define PRIx64 BFD_PRI64 "x"
-#endif
+#include <inttypes.h>
 
 #if BFD_ARCH_SIZE >= 64
 #define BFD64
 #endif
 
-#ifndef INLINE
-#if __GNUC__ >= 2
-#define INLINE __inline__
-#else
-#define INLINE
-#endif
-#endif
-
-/* Declaring a type wide enough to hold a host long and a host pointer.  */
-#define BFD_HOSTPTR_T @BFD_HOSTPTR_T@
-typedef BFD_HOSTPTR_T bfd_hostptr_t;
-
-/* Forward declaration.  */
-typedef struct bfd bfd;
-
-/* Boolean type used in bfd.  Too many systems define their own
-   versions of "boolean" for us to safely typedef a "boolean" of
-   our own.  Using an enum for "bfd_boolean" has its own set of
-   problems, with strange looking casts required to avoid warnings
-   on some older compilers.  Thus we just use an int.
-
+/* Boolean type used in bfd.
    General rule: Functions which are bfd_boolean return TRUE on
    success and FALSE on failure (unless they're a predicate).  */
 
-typedef int bfd_boolean;
-#undef FALSE
-#undef TRUE
-#define FALSE 0
-#define TRUE 1
-
-#ifdef BFD64
-
-#ifndef BFD_HOST_64_BIT
- #error No 64 bit integer type available
-#endif /* ! defined (BFD_HOST_64_BIT) */
-
-typedef BFD_HOST_U_64_BIT bfd_vma;
-typedef BFD_HOST_64_BIT bfd_signed_vma;
-typedef BFD_HOST_U_64_BIT bfd_size_type;
-typedef BFD_HOST_U_64_BIT symvalue;
-
-#if BFD_HOST_64BIT_LONG
-#define BFD_VMA_FMT "l"
-#elif defined (__MSVCRT__)
-#define BFD_VMA_FMT "I64"
+#ifdef POISON_BFD_BOOLEAN
+# pragma GCC poison bfd_boolean
 #else
-#define BFD_VMA_FMT "ll"
+# define bfd_boolean bool
+# undef FALSE
+# undef TRUE
+# define FALSE 0
+# define TRUE 1
 #endif
 
-#ifndef fprintf_vma
-#define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x)
-#define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x)
-#endif
+/* Silence "applying zero offset to null pointer" UBSAN warnings.  */
+#define PTR_ADD(P,A) ((A) != 0 ? (P) + (A) : (P))
+/* Also prevent non-zero offsets from being applied to a null pointer.  */
+#define NPTR_ADD(P,A) ((P) != NULL ? (P) + (A) : (P))
 
-#else /* not BFD64  */
+#ifdef BFD64
 
 /* Represent a target address.  Also used as a generic unsigned type
    which is guaranteed to be big enough to hold any arithmetic types
    we need to deal with.  */
-typedef unsigned long bfd_vma;
+typedef uint64_t bfd_vma;
 
 /* A generic signed type which is guaranteed to be big enough to hold any
    arithmetic types we need to deal with.  Can be assumed to be compatible
    with bfd_vma in the same way that signed and unsigned ints are compatible
    (as parameters, in assignment, etc).  */
-typedef long bfd_signed_vma;
+typedef int64_t bfd_signed_vma;
 
-typedef unsigned long symvalue;
-typedef unsigned long bfd_size_type;
+typedef uint64_t bfd_size_type;
+typedef uint64_t symvalue;
 
-/* Print a bfd_vma x on stream s.  */
-#define BFD_VMA_FMT "l"
-#define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x)
-#define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x)
+#else /* not BFD64  */
+
+typedef uint32_t bfd_vma;
+typedef int32_t bfd_signed_vma;
+typedef uint32_t bfd_size_type;
+typedef uint32_t symvalue;
 
 #endif /* not BFD64  */
 
 #define HALF_BFD_SIZE_TYPE \
   (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
 
-#ifndef BFD_HOST_64_BIT
-/* Fall back on a 32 bit type.  The idea is to make these types always
-   available for function return types, but in the case that
-   BFD_HOST_64_BIT is undefined such a function should abort or
-   otherwise signal an error.  */
-typedef bfd_signed_vma bfd_int64_t;
-typedef bfd_vma bfd_uint64_t;
-#endif
-
 /* An offset into a file.  BFD always uses the largest possible offset
    based on the build time availability of fseek, fseeko, or fseeko64.  */
 typedef @bfd_file_ptr@ file_ptr;
-typedef unsigned @bfd_file_ptr@ ufile_ptr;
+typedef @bfd_ufile_ptr@ ufile_ptr;
 
-extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
-extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
-
-#define printf_vma(x) fprintf_vma(stdout,x)
-#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
-
-typedef unsigned int flagword;	/* 32 bits of flags */
-typedef unsigned char bfd_byte;
-
-/* File formats.  */
-
-typedef enum bfd_format
-{
-  bfd_unknown = 0,	/* File format is unknown.  */
-  bfd_object,		/* Linker/assembler/compiler output.  */
-  bfd_archive,		/* Object archive file.  */
-  bfd_core,		/* Core dump.  */
-  bfd_type_end		/* Marks the end; don't use it!  */
-}
-bfd_format;
-
-/* Symbols and relocation.  */
-
-/* A count of carsyms (canonical archive symbols).  */
-typedef unsigned long symindex;
-
-#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
-
-/* A canonical archive symbol.  */
-/* This is a type pun with struct ranlib on purpose!  */
-typedef struct carsym
-{
-  const char *name;
-  file_ptr file_offset;	/* Look here to find the file.  */
-}
-carsym;			/* To make these you call a carsymogen.  */
+typedef uint32_t flagword;	/* 32 bits of flags */
+typedef uint8_t bfd_byte;
 
-/* Used in generating armaps (archive tables of contents).
-   Perhaps just a forward definition would do?  */
-struct orl		/* Output ranlib.  */
-{
-  char **name;		/* Symbol name.  */
-  union
-  {
-    file_ptr pos;
-    bfd *abfd;
-  } u;			/* bfd* or file position.  */
-  int namidx;		/* Index into string table.  */
-};
-
-/* Linenumber stuff.  */
-typedef struct lineno_cache_entry
-{
-  unsigned int line_number;	/* Linenumber from start of function.  */
-  union
-  {
-    struct bfd_symbol *sym;	/* Function name.  */
-    bfd_vma offset;		/* Offset into section.  */
-  } u;
-}
-alent;
-
-/* Object and core file sections.  */
+/* Forward declarations.  */
+typedef struct bfd bfd;
+struct bfd_link_info;
+struct bfd_link_hash_entry;
 typedef struct bfd_section *sec_ptr;
+typedef struct reloc_cache_entry arelent;
+struct orl;
 
 #define	align_power(addr, align)	\
   (((addr) + ((bfd_vma) 1 << (align)) - 1) & (-((bfd_vma) 1 << (align))))
@@ -285,282 +150,20 @@ typedef struct bfd_section *sec_ptr;
   ((((bfd_vma) (this) + (boundary) - 1) >= (bfd_vma) (this))		  \
    ? (((bfd_vma) (this) + ((boundary) - 1)) & ~ (bfd_vma) ((boundary)-1)) \
    : ~ (bfd_vma) 0)
-
-typedef enum bfd_print_symbol
-{
-  bfd_print_symbol_name,
-  bfd_print_symbol_more,
-  bfd_print_symbol_all
-} bfd_print_symbol_type;
-
-/* Information about a symbol that nm needs.  */
-
-typedef struct _symbol_info
-{
-  symvalue value;
-  char type;
-  const char *name;		/* Symbol name.  */
-  unsigned char stab_type;	/* Stab type.  */
-  char stab_other;		/* Stab other.  */
-  short stab_desc;		/* Stab desc.  */
-  const char *stab_name;	/* String for stab type.  */
-} symbol_info;
-
-/* Get the name of a stabs type code.  */
-
-extern const char *bfd_get_stab_name (int);
-
-/* Hash table routines.  There is no way to free up a hash table.  */
-
-/* An element in the hash table.  Most uses will actually use a larger
-   structure, and an instance of this will be the first field.  */
-
-struct bfd_hash_entry
-{
-  /* Next entry for this hash code.  */
-  struct bfd_hash_entry *next;
-  /* String being hashed.  */
-  const char *string;
-  /* Hash code.  This is the full hash code, not the index into the
-     table.  */
-  unsigned long hash;
-};
 
-/* A hash table.  */
+/* Return TRUE if the start of STR matches PREFIX, FALSE otherwise.  */
 
-struct bfd_hash_table
+static inline bool
+startswith (const char *str, const char *prefix)
 {
-  /* The hash array.  */
-  struct bfd_hash_entry **table;
-  /* A function used to create new elements in the hash table.  The
-     first entry is itself a pointer to an element.  When this
-     function is first invoked, this pointer will be NULL.  However,
-     having the pointer permits a hierarchy of method functions to be
-     built each of which calls the function in the superclass.  Thus
-     each function should be written to allocate a new block of memory
-     only if the argument is NULL.  */
-  struct bfd_hash_entry *(*newfunc)
-    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-  /* An objalloc for this hash table.  This is a struct objalloc *,
-     but we use void * to avoid requiring the inclusion of objalloc.h.  */
-  void *memory;
-  /* The number of slots in the hash table.  */
-  unsigned int size;
-  /* The number of entries in the hash table.  */
-  unsigned int count;
-  /* The size of elements.  */
-  unsigned int entsize;
-  /* If non-zero, don't grow the hash table.  */
-  unsigned int frozen:1;
-};
-
-/* Initialize a hash table.  */
-extern bfd_boolean bfd_hash_table_init
-  (struct bfd_hash_table *,
-   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
-			       struct bfd_hash_table *,
-			       const char *),
-   unsigned int);
-
-/* Initialize a hash table specifying a size.  */
-extern bfd_boolean bfd_hash_table_init_n
-  (struct bfd_hash_table *,
-   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
-			       struct bfd_hash_table *,
-			       const char *),
-   unsigned int, unsigned int);
-
-/* Free up a hash table.  */
-extern void bfd_hash_table_free
-  (struct bfd_hash_table *);
-
-/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
-   will be created for this string if one does not already exist.  The
-   COPY argument must be TRUE if this routine should copy the string
-   into newly allocated memory when adding an entry.  */
-extern struct bfd_hash_entry *bfd_hash_lookup
-  (struct bfd_hash_table *, const char *, bfd_boolean create,
-   bfd_boolean copy);
-
-/* Insert an entry in a hash table.  */
-extern struct bfd_hash_entry *bfd_hash_insert
-  (struct bfd_hash_table *, const char *, unsigned long);
-
-/* Rename an entry in a hash table.  */
-extern void bfd_hash_rename
-  (struct bfd_hash_table *, const char *, struct bfd_hash_entry *);
-
-/* Replace an entry in a hash table.  */
-extern void bfd_hash_replace
-  (struct bfd_hash_table *, struct bfd_hash_entry *old,
-   struct bfd_hash_entry *nw);
-
-/* Base method for creating a hash table entry.  */
-extern struct bfd_hash_entry *bfd_hash_newfunc
-  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-
-/* Grab some space for a hash table entry.  */
-extern void *bfd_hash_allocate
-  (struct bfd_hash_table *, unsigned int);
-
-/* Traverse a hash table in a random order, calling a function on each
-   element.  If the function returns FALSE, the traversal stops.  The
-   INFO argument is passed to the function.  */
-extern void bfd_hash_traverse
-  (struct bfd_hash_table *,
-   bfd_boolean (*) (struct bfd_hash_entry *, void *),
-   void *info);
-
-/* Allows the default size of a hash table to be configured. New hash
-   tables allocated using bfd_hash_table_init will be created with
-   this size.  */
-extern unsigned long bfd_hash_set_default_size (unsigned long);
-
-/* Types of compressed DWARF debug sections.  We currently support
-   zlib.  */
-enum compressed_debug_section_type
-{
-  COMPRESS_DEBUG_NONE = 0,
-  COMPRESS_DEBUG = 1 << 0,
-  COMPRESS_DEBUG_GNU_ZLIB = COMPRESS_DEBUG | 1 << 1,
-  COMPRESS_DEBUG_GABI_ZLIB = COMPRESS_DEBUG | 1 << 2
-};
-
-/* This structure is used to keep track of stabs in sections
-   information while linking.  */
-
-struct stab_info
-{
-  /* A hash table used to hold stabs strings.  */
-  struct bfd_strtab_hash *strings;
-  /* The header file hash table.  */
-  struct bfd_hash_table includes;
-  /* The first .stabstr section.  */
-  struct bfd_section *stabstr;
-};
-
-#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
-
-/* User program access to BFD facilities.  */
-
-/* Direct I/O routines, for programs which know more about the object
-   file than BFD does.  Use higher level routines if possible.  */
-
-extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
-extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
-extern int bfd_seek (bfd *, file_ptr, int);
-extern file_ptr bfd_tell (bfd *);
-extern int bfd_flush (bfd *);
-extern int bfd_stat (bfd *, struct stat *);
-
-/* Deprecated old routines.  */
-#if __GNUC__
-#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
-  (_bfd_warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
-   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
-#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
-  (_bfd_warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__), \
-   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
-#else
-#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
-  (_bfd_warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
-   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
-#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
-  (_bfd_warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
-   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
-#endif
-extern void _bfd_warn_deprecated (const char *, const char *, int, const char *);
-
-extern bfd_boolean bfd_cache_close
-  (bfd *abfd);
-/* NB: This declaration should match the autogenerated one in libbfd.h.  */
-
-extern bfd_boolean bfd_cache_close_all (void);
-
-extern bfd_boolean bfd_record_phdr
-  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
-   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
-
-/* Byte swapping routines.  */
-
-bfd_uint64_t bfd_getb64 (const void *);
-bfd_uint64_t bfd_getl64 (const void *);
-bfd_int64_t bfd_getb_signed_64 (const void *);
-bfd_int64_t bfd_getl_signed_64 (const void *);
-bfd_vma bfd_getb32 (const void *);
-bfd_vma bfd_getl32 (const void *);
-bfd_signed_vma bfd_getb_signed_32 (const void *);
-bfd_signed_vma bfd_getl_signed_32 (const void *);
-bfd_vma bfd_getb16 (const void *);
-bfd_vma bfd_getl16 (const void *);
-bfd_signed_vma bfd_getb_signed_16 (const void *);
-bfd_signed_vma bfd_getl_signed_16 (const void *);
-void bfd_putb64 (bfd_uint64_t, void *);
-void bfd_putl64 (bfd_uint64_t, void *);
-void bfd_putb32 (bfd_vma, void *);
-void bfd_putl32 (bfd_vma, void *);
-void bfd_putb24 (bfd_vma, void *);
-void bfd_putl24 (bfd_vma, void *);
-void bfd_putb16 (bfd_vma, void *);
-void bfd_putl16 (bfd_vma, void *);
-
-/* Byte swapping routines which take size and endiannes as arguments.  */
-
-bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
-void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
-
-
-/* mmap hacks */
+  return strncmp (str, prefix, strlen (prefix)) == 0;
+}
 
-struct _bfd_window_internal;
-typedef struct _bfd_window_internal bfd_window_internal;
+/* Return true if plugin is enabled.  */
 
-typedef struct _bfd_window
+static inline bool
+bfd_plugin_enabled (void)
 {
-  /* What the user asked for.  */
-  void *data;
-  bfd_size_type size;
-  /* The actual window used by BFD.  Small user-requested read-only
-     regions sharing a page may share a single window into the object
-     file.  Read-write versions shouldn't until I've fixed things to
-     keep track of which portions have been claimed by the
-     application; don't want to give the same region back when the
-     application wants two writable copies!  */
-  struct _bfd_window_internal *i;
+  return BFD_SUPPORTS_PLUGINS != 0;
 }
-bfd_window;
-
-extern void bfd_init_window
-  (bfd_window *);
-extern void bfd_free_window
-  (bfd_window *);
-extern bfd_boolean bfd_get_file_window
-  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
-
-/* Externally visible ELF routines.  */
-
-/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
-   reconstruct an ELF file by reading the segments out of remote
-   memory based on the ELF file header at EHDR_VMA and the ELF program
-   headers it points to.  If non-zero, SIZE is the known extent of the
-   object.  If not null, *LOADBASEP is filled in with the difference
-   between the VMAs from which the segments were read, and the VMAs
-   the file headers (and hence BFD's idea of each section's VMA) put
-   them at.
-
-   The function TARGET_READ_MEMORY is called to copy LEN bytes from
-   the remote memory at target address VMA into the local buffer at
-   MYADDR; it should return zero on success or an `errno' code on
-   failure.  TEMPL must be a BFD for a target with the word size and
-   byte order found in the remote memory.  */
-extern bfd *bfd_elf_bfd_from_remote_memory
-  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
-   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
-			      bfd_size_type len));
 
-/* Forward declarations.  */
-struct ecoff_debug_info;
-struct ecoff_debug_swap;
-struct ecoff_extr;
-struct bfd_link_info;
-struct bfd_link_hash_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.20200303/bfd/bfdio.c ./bfd/bfdio.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bfdio.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/bfdio.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* Low-level I/O routines for BFDs.
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
 
    Written by Cygnus Support.
 
@@ -25,6 +25,11 @@
 #include <limits.h>
 #include "bfd.h"
 #include "libbfd.h"
+#include "aout/ar.h"
+#if defined (_WIN32)
+#include <windows.h>
+#include <locale.h>
+#endif
 
 #ifndef S_IXUSR
 #define S_IXUSR 0100    /* Execute by owner.  */
@@ -92,12 +97,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 +115,149 @@ _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)
+  /* PR 25713: Handle extra long path names possibly containing '..' and '.'.  */
+  wchar_t **      lpFilePart = {NULL};
+  const wchar_t   prefixDOS[] = L"\\\\?\\";
+  const wchar_t   prefixUNC[] = L"\\\\?\\UNC\\";
+  const wchar_t   prefixNone[] = L"";
+  const size_t    partPathLen = strlen (filename) + 1;
+  const wchar_t * prefix;
+  size_t          sizeof_prefix;
+  bool            strip_network_prefix = false;
+
+  /* PR 31527: In order to not hit limits in the maximum file path, all paths
+     need converting to Universal Naming Convention (UNC) syntax. The following
+     forms may be provided to this function and are converted accordingly.
+
+     1. UNC paths (start with \\?\), these are unconverted;
+     2. Network paths (start with \\ or // but not \\?\), these are given the
+	\\?UNC\ prefix, and have the incoming \\ or // removed;
+     3. DOS drive paths (a letter followed by a colon), these are given the
+	\\?\ prefix;
+     4. Paths relative to CWD, the current working directory is tested for the
+	above conditions, and otherwise are assumed to be DOS paths.
+
+     For more information see:
+     https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry
+  */
+
+  if (startswith (filename, "\\\\?\\"))
+    {
+      prefix = prefixNone;
+      sizeof_prefix = sizeof (prefixNone);
+    }
+  else if (startswith (filename, "\\\\") || startswith (filename, "//"))
+    {
+      prefix = prefixUNC;
+      sizeof_prefix = sizeof (prefixUNC);
+      strip_network_prefix = true;
+    }
+  else if (strlen (filename) > 2 && filename[1] == ':')
+    {
+      prefix = prefixDOS;
+      sizeof_prefix = sizeof (prefixDOS);
+    }
+  else
+    {
+      /* The partial path is relative to the current working directory, use this
+	 to determine the prefix.
+	 1) Get the length: Calling with lpBuffer set to null returns the length.
+	 2) Resolve the path.  */
+      size_t    pwdWSize = GetCurrentDirectoryW (0, NULL);
+      wchar_t * pwdPath = calloc (pwdWSize, sizeof(wchar_t));
+      GetCurrentDirectoryW (pwdWSize, pwdPath);
+      if (wcsncmp (pwdPath, L"\\\\?\\", 6) == 0)
+	{
+	  prefix = prefixNone;
+	  sizeof_prefix = sizeof (prefixNone);
+	}
+      else if (wcsncmp (pwdPath, L"\\\\", 2) == 0
+	       || wcsncmp (pwdPath, L"//", 2) == 0)
+	{
+	  prefix = prefixUNC;
+	  sizeof_prefix = sizeof (prefixUNC);
+	  strip_network_prefix = true;
+	}
+      else
+	{
+	  prefix = prefixDOS;
+	  sizeof_prefix = sizeof (prefixDOS);
+	}
+      free (pwdPath);
+    }
+
+#ifdef __MINGW32__
+#if !HAVE_DECL____LC_CODEPAGE_FUNC
+  /* This prototype was added to locale.h in version 9.0 of MinGW-w64.  */
+  _CRTIMP unsigned int __cdecl ___lc_codepage_func (void);
+#endif
+  const unsigned int cp = ___lc_codepage_func ();
+#else
+  const unsigned int cp = CP_UTF8;
+#endif
+
+  /* Converting the partial path from ascii to unicode.
+     1) Get the length: Calling with lpWideCharStr set to null returns the length.
+     2) Convert the string: Calling with cbMultiByte set to -1 includes the terminating null.  */
+  size_t     partPathWSize = MultiByteToWideChar (cp, 0, filename, -1, NULL, 0);
+  wchar_t *  partPath = calloc (partPathWSize, sizeof(wchar_t));
+  size_t     ix;
+
+  MultiByteToWideChar (cp, 0, filename, -1, partPath, partPathWSize);
+
+  /* Convert any UNIX style path separators into the DOS i.e. backslash separator.  */
+  for (ix = 0; ix < partPathLen; ix++)
+    if (IS_UNIX_DIR_SEPARATOR(filename[ix]))
+      partPath[ix] = '\\';
+
+  /* Getting the full path from the provided partial path.
+     1) Get the length.
+     2) Resolve the path.  */
+  long       fullPathWSize = GetFullPathNameW (partPath, 0, NULL, lpFilePart);
+  wchar_t *  fullPath = calloc (fullPathWSize + sizeof_prefix + 1, sizeof(wchar_t));
+
+  wcscpy (fullPath, prefix);
+
+  int  prefixLen = sizeof_prefix / sizeof(wchar_t);
+
+  /* Do not add a prefix to the null device.  */
+  if (stricmp (filename, "nul") == 0)
+    prefixLen = 1;
+
+  wchar_t *  fullPathOffset = fullPath + prefixLen - 1;
+
+  GetFullPathNameW (partPath, fullPathWSize, fullPathOffset, lpFilePart);
+
+  if (strip_network_prefix)
+    {
+      /* Remove begining of the beginning two backslash characters (\\).  */
+      wchar_t *_fullPath = calloc (fullPathWSize + sizeof_prefix + 1, sizeof(wchar_t));
+
+      GetFullPathNameW (fullPath, fullPathWSize + sizeof_prefix + 1, _fullPath, lpFilePart);
+      free (fullPath);
+      fullPath = _fullPath;
+    }
+
+  free (partPath);
+
+  /* It is non-standard for modes to exceed 16 characters.  */
+  wchar_t  modesW[16];
+
+  MultiByteToWideChar (cp, 0, modes, -1, modesW, sizeof(modesW));
+
+  FILE *  file = _wfopen (fullPath, modesW);
+  free (fullPath);
+
+  return close_on_exec (file);
+
+#elif defined (HAVE_FOPEN64)
   return close_on_exec (fopen64 (filename, modes));
+
 #else
   return close_on_exec (fopen (filename, modes));
 #endif
-#endif /* !VMS */
 }
 
 /*
@@ -157,24 +293,35 @@ DESCRIPTION
 .  int (*bstat) (struct bfd *abfd, struct stat *sb);
 .  {* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual
 .     mmap parameter, except that LEN and OFFSET do not need to be page
-.     aligned.  Returns (void *)-1 on failure, mmapped address on success.
+.     aligned.  Returns MAP_FAILED on failure, mmapped address on success.
 .     Also write in MAP_ADDR the address of the page aligned buffer and in
 .     MAP_LEN the size mapped (a page multiple).  Use unmap with MAP_ADDR and
 .     MAP_LEN to unmap.  *}
-.  void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
+.  void *(*bmmap) (struct bfd *abfd, void *addr, size_t len,
 .		   int prot, int flags, file_ptr offset,
-.		   void **map_addr, bfd_size_type *map_len);
+.		   void **map_addr, size_t *map_len);
 .};
 
 .extern const struct bfd_iovec _bfd_memory_iovec;
-
+.
 */
 
 
-/* Return value is amount read.  */
+/*
+FUNCTION
+	bfd_read
+
+SYNOPSIS
+	bfd_size_type bfd_read (void *, bfd_size_type, bfd *)
+				ATTRIBUTE_WARN_UNUSED_RESULT;
+
+DESCRIPTION
+	Attempt to read SIZE bytes from ABFD's iostream to PTR.
+	Return the amount read.
+*/
 
 bfd_size_type
-bfd_bread (void *ptr, bfd_size_type size, bfd *abfd)
+bfd_read (void *ptr, bfd_size_type size, bfd *abfd)
 {
   file_ptr nread;
   bfd *element_bfd = abfd;
@@ -186,10 +333,13 @@ 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
+  /* If this is a non-thin archive element, don't read past the end of
      this element.  */
-  if (element_bfd->arelt_data != NULL)
+  if (element_bfd->arelt_data != NULL
+      && element_bfd->my_archive != NULL
+      && !bfd_is_thin_archive (element_bfd->my_archive))
     {
       bfd_size_type maxbytes = arelt_size (element_bfd);
 
@@ -208,6 +358,14 @@ bfd_bread (void *ptr, bfd_size_type size
       return -1;
     }
 
+  if (abfd->last_io == bfd_io_write)
+    {
+      abfd->last_io = bfd_io_force;
+      if (bfd_seek (abfd, 0, SEEK_CUR) != 0)
+	return -1;
+    }
+  abfd->last_io = bfd_io_read;
+
   nread = abfd->iovec->bread (abfd, ptr, size);
   if (nread != -1)
     abfd->where += nread;
@@ -215,8 +373,21 @@ bfd_bread (void *ptr, bfd_size_type size
   return nread;
 }
 
+/*
+FUNCTION
+	bfd_write
+
+SYNOPSIS
+	bfd_size_type bfd_write (const void *, bfd_size_type, bfd *)
+				ATTRIBUTE_WARN_UNUSED_RESULT;
+
+DESCRIPTION
+	Attempt to write SIZE bytes to ABFD's iostream from PTR.
+	Return the amount written.
+*/
+
 bfd_size_type
-bfd_bwrite (const void *ptr, bfd_size_type size, bfd *abfd)
+bfd_write (const void *ptr, bfd_size_type size, bfd *abfd)
 {
   file_ptr nwrote;
 
@@ -230,6 +401,14 @@ bfd_bwrite (const void *ptr, bfd_size_ty
       return -1;
     }
 
+  if (abfd->last_io == bfd_io_read)
+    {
+      abfd->last_io = bfd_io_force;
+      if (bfd_seek (abfd, 0, SEEK_CUR) != 0)
+	return -1;
+    }
+  abfd->last_io = bfd_io_write;
+
   nwrote = abfd->iovec->bwrite (abfd, ptr, size);
   if (nwrote != -1)
     abfd->where += nwrote;
@@ -243,6 +422,17 @@ bfd_bwrite (const void *ptr, bfd_size_ty
   return nwrote;
 }
 
+/*
+FUNCTION
+	bfd_tell
+
+SYNOPSIS
+	file_ptr bfd_tell (bfd *) ATTRIBUTE_WARN_UNUSED_RESULT;
+
+DESCRIPTION
+	Return ABFD's iostream file position.
+*/
+
 file_ptr
 bfd_tell (bfd *abfd)
 {
@@ -255,6 +445,7 @@ bfd_tell (bfd *abfd)
       offset += abfd->origin;
       abfd = abfd->my_archive;
     }
+  offset += abfd->origin;
 
   if (abfd->iovec == NULL)
     return 0;
@@ -264,6 +455,17 @@ bfd_tell (bfd *abfd)
   return ptr - offset;
 }
 
+/*
+FUNCTION
+	bfd_flush
+
+SYNOPSIS
+	int bfd_flush (bfd *);
+
+DESCRIPTION
+	Flush ABFD's iostream pending IO.
+*/
+
 int
 bfd_flush (bfd *abfd)
 {
@@ -277,8 +479,18 @@ bfd_flush (bfd *abfd)
   return abfd->iovec->bflush (abfd);
 }
 
-/* Returns 0 for success, negative value for failure (in which case
-   bfd_get_error can retrieve the error code).  */
+/*
+FUNCTION
+	bfd_stat
+
+SYNOPSIS
+	int bfd_stat (bfd *, struct stat *) ATTRIBUTE_WARN_UNUSED_RESULT;
+
+DESCRIPTION
+	Call fstat on ABFD's iostream.  Return 0 on success, and a
+	negative value on failure.
+*/
+
 int
 bfd_stat (bfd *abfd, struct stat *statbuf)
 {
@@ -300,8 +512,17 @@ bfd_stat (bfd *abfd, struct stat *statbu
   return result;
 }
 
-/* Returns 0 for success, nonzero for failure (in which case bfd_get_error
-   can retrieve the error code).  */
+/*
+FUNCTION
+	bfd_seek
+
+SYNOPSIS
+	int bfd_seek (bfd *, file_ptr, int) ATTRIBUTE_WARN_UNUSED_RESULT;
+
+DESCRIPTION
+	Call fseek on ABFD's iostream.  Return 0 on success, and a
+	negative value on failure.
+*/
 
 int
 bfd_seek (bfd *abfd, file_ptr position, int direction)
@@ -315,6 +536,7 @@ bfd_seek (bfd *abfd, file_ptr position,
       offset += abfd->origin;
       abfd = abfd->my_archive;
     }
+  offset += abfd->origin;
 
   if (abfd->iovec == NULL)
     {
@@ -330,10 +552,13 @@ bfd_seek (bfd *abfd, file_ptr position,
   if (direction != SEEK_CUR)
     position += offset;
 
-  if ((direction == SEEK_CUR && position == 0)
-      || (direction == SEEK_SET && (ufile_ptr) position == abfd->where))
+  if (((direction == SEEK_CUR && position == 0)
+       || (direction == SEEK_SET && (ufile_ptr) position == abfd->where))
+      && abfd->last_io != bfd_io_force)
     return 0;
 
+  abfd->last_io = bfd_io_seek;
+
   result = abfd->iovec->bseek (abfd, position, direction);
   if (result != 0)
     {
@@ -415,17 +640,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 +685,30 @@ DESCRIPTION
 ufile_ptr
 bfd_get_file_size (bfd *abfd)
 {
+  ufile_ptr file_size, archive_size = (ufile_ptr) -1;
+  unsigned int compression_p2 = 0;
+
   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, assume an element won't
+	     expand more than eight times file size.  */
+	  if (adata->arch_header != NULL
+	      && memcmp (((struct ar_hdr *) adata->arch_header)->ar_fmag,
+			 "Z\012", 2) == 0)
+	    compression_p2 = 3;
+	  abfd = abfd->my_archive;
+	}
+    }
 
-  return bfd_get_size (abfd);
+  file_size = bfd_get_size (abfd) << compression_p2;
+  if (archive_size < file_size)
+    return archive_size;
+  return file_size;
 }
 
 /*
@@ -457,21 +716,23 @@ FUNCTION
 	bfd_mmap
 
 SYNOPSIS
-	void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
+	void *bfd_mmap (bfd *abfd, void *addr, size_t len,
 			int prot, int flags, file_ptr offset,
-			void **map_addr, bfd_size_type *map_len);
+			void **map_addr, size_t *map_len)
+			ATTRIBUTE_WARN_UNUSED_RESULT;
 
 DESCRIPTION
 	Return mmap()ed region of the file, if possible and implemented.
 	LEN and OFFSET do not need to be page aligned.  The page aligned
 	address and length are written to MAP_ADDR and MAP_LEN.
+	Returns MAP_FAILED on failure.
 
 */
 
 void *
-bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
+bfd_mmap (bfd *abfd, void *addr, size_t len,
 	  int prot, int flags, file_ptr offset,
-	  void **map_addr, bfd_size_type *map_len)
+	  void **map_addr, size_t *map_len)
 {
   while (abfd->my_archive != NULL
 	 && !bfd_is_thin_archive (abfd->my_archive))
@@ -479,11 +740,12 @@ bfd_mmap (bfd *abfd, void *addr, bfd_siz
       offset += abfd->origin;
       abfd = abfd->my_archive;
     }
+  offset += abfd->origin;
 
   if (abfd->iovec == NULL)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return (void *) -1;
+      return MAP_FAILED;
     }
 
   return abfd->iovec->bmmap (abfd, addr, len, prot, flags, offset,
@@ -606,8 +868,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;
 
@@ -633,12 +894,12 @@ memory_bstat (bfd *abfd, struct stat *st
 
 static void *
 memory_bmmap (bfd *abfd ATTRIBUTE_UNUSED, void *addr ATTRIBUTE_UNUSED,
-	      bfd_size_type len ATTRIBUTE_UNUSED, int prot ATTRIBUTE_UNUSED,
+	      size_t len ATTRIBUTE_UNUSED, int prot ATTRIBUTE_UNUSED,
 	      int flags ATTRIBUTE_UNUSED, file_ptr offset ATTRIBUTE_UNUSED,
 	      void **map_addr ATTRIBUTE_UNUSED,
-	      bfd_size_type *map_len ATTRIBUTE_UNUSED)
+	      size_t *map_len ATTRIBUTE_UNUSED)
 {
-  return (void *)-1;
+  return MAP_FAILED;
 }
 
 const struct bfd_iovec _bfd_memory_iovec =
@@ -646,3 +907,47 @@ const struct bfd_iovec _bfd_memory_iovec
   &memory_bread, &memory_bwrite, &memory_btell, &memory_bseek,
   &memory_bclose, &memory_bflush, &memory_bstat, &memory_bmmap
 };
+
+/*
+FUNCTION
+	bfd_get_current_time
+
+SYNOPSIS
+	time_t bfd_get_current_time (time_t now);
+
+DESCRIPTION
+	Returns the current time.
+
+	If the environment variable SOURCE_DATE_EPOCH is defined
+	then this is parsed and its value is returned.  Otherwise
+	if the paramter NOW is non-zero, then that is returned.
+	Otherwise the result of the system call "time(NULL)" is
+	returned.
+*/
+
+time_t
+bfd_get_current_time (time_t now)
+{
+  char *source_date_epoch;
+  unsigned long long epoch;
+
+  /* FIXME: We could probably cache this lookup,
+     and the parsing of its value below.  */
+  source_date_epoch = getenv ("SOURCE_DATE_EPOCH");
+
+  if (source_date_epoch == NULL)
+    {
+      if (now)
+	return now;
+      return time (NULL);
+    }
+
+  epoch = strtoull (source_date_epoch, NULL, 0);
+
+  /* If epoch == 0 then something is wrong with SOURCE_DATE_EPOCH,
+     but we do not have an easy way to report it.  Since the presence
+     of the environment variable implies that the user wants
+     deterministic behaviour we just accept the 0 value.  */
+
+  return (time_t) epoch;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bfd.m4 ./bfd/bfd.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bfd.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/bfd.m4	2026-03-05 02:07:20.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-2025 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,19 +17,24 @@ 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([
+   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #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,
-      bfd_cv_have_sys_procfs_type_$1=no
+#include <sys/procfs.h>]],
+      [[$1 avar]])],
+      [bfd_cv_have_sys_procfs_type_$1=yes],
+      [bfd_cv_have_sys_procfs_type_$1=no]
    )])
  if test $bfd_cv_have_sys_procfs_type_$1 = yes; then
    AC_DEFINE([HAVE_]translit($1, [a-z], [A-Z]), 1,
@@ -41,16 +46,15 @@ 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([
+   [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 #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,
-      bfd_cv_have_sys_procfs_type_member_$1_$2=no
+#include <sys/procfs.h>]],
+      [[$1 avar; void* aref = (void*) &avar.$2]])],
+      [bfd_cv_have_sys_procfs_type_member_$1_$2=yes],
+      [bfd_cv_have_sys_procfs_type_member_$1_$2=no]
    )])
  if test $bfd_cv_have_sys_procfs_type_member_$1_$2 = yes; then
    AC_DEFINE([HAVE_]translit($1, [a-z], [A-Z])[_]translit($2, [a-z], [A-Z]), 1,
@@ -58,4 +62,3 @@ AC_DEFUN([BFD_HAVE_SYS_PROCFS_TYPE_MEMBE
  fi
  AC_MSG_RESULT($bfd_cv_have_sys_procfs_type_member_$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.20200303/bfd/bfdwin.c ./bfd/bfdwin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bfdwin.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/bfdwin.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,264 +0,0 @@
-/* Support for memory-mapped windows into a BFD.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
-   Written by Cygnus Support.
-
-   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"
-
-/* Currently, if USE_MMAP is undefined, none of the window stuff is
-   used.  Enabled by --with-mmap.  */
-
-#ifdef USE_MMAP
-
-#undef HAVE_MPROTECT /* code's not tested yet */
-
-#if HAVE_MMAP || HAVE_MPROTECT || HAVE_MADVISE
-#include <sys/mman.h>
-#endif
-
-#ifndef MAP_FILE
-#define MAP_FILE 0
-#endif
-
-static int debug_windows;
-
-/* The idea behind the next and refcount fields is that one mapped
-   region can suffice for multiple read-only windows or multiple
-   non-overlapping read-write windows.  It's not implemented yet
-   though.  */
-
-/*
-INTERNAL_DEFINITION
-
-.struct _bfd_window_internal {
-.  struct _bfd_window_internal *next;
-.  void *data;
-.  bfd_size_type size;
-.  int refcount : 31;		{* should be enough...  *}
-.  unsigned mapped : 1;		{* 1 = mmap, 0 = malloc *}
-.};
-*/
-
-void
-bfd_init_window (bfd_window *windowp)
-{
-  windowp->data = 0;
-  windowp->i = 0;
-  windowp->size = 0;
-}
-
-void
-bfd_free_window (bfd_window *windowp)
-{
-  bfd_window_internal *i = windowp->i;
-  windowp->i = 0;
-  windowp->data = 0;
-  if (i == 0)
-    return;
-  i->refcount--;
-  if (debug_windows)
-    fprintf (stderr, "freeing window @%p<%p,%lx,%p>\n",
-	     windowp, windowp->data, (unsigned long) windowp->size, windowp->i);
-  if (i->refcount != 0)
-    return;
-
-  if (i->mapped)
-    {
-#ifdef HAVE_MMAP
-      munmap (i->data, i->size);
-      goto no_free;
-#else
-      abort ();
-#endif
-    }
-#ifdef HAVE_MPROTECT
-  mprotect (i->data, i->size, PROT_READ | PROT_WRITE);
-#endif
-  free (i->data);
-#ifdef HAVE_MMAP
- no_free:
-#endif
-  i->data = 0;
-  /* There should be no more references to i at this point.  */
-  free (i);
-}
-
-static int ok_to_map = 1;
-
-bfd_boolean
-bfd_get_file_window (bfd *abfd,
-		     file_ptr offset,
-		     bfd_size_type size,
-		     bfd_window *windowp,
-		     bfd_boolean writable)
-{
-  static size_t pagesize;
-  bfd_window_internal *i = windowp->i;
-  bfd_size_type size_to_alloc = size;
-
-  if (debug_windows)
-    fprintf (stderr, "bfd_get_file_window (%p, %6ld, %6ld, %p<%p,%lx,%p>, %d)",
-	     abfd, (long) offset, (long) size,
-	     windowp, windowp->data, (unsigned long) windowp->size,
-	     windowp->i, writable);
-
-  /* Make sure we know the page size, so we can be friendly to mmap.  */
-  if (pagesize == 0)
-    pagesize = getpagesize ();
-  if (pagesize == 0)
-    abort ();
-
-  if (i == NULL)
-    {
-      i = bfd_zmalloc (sizeof (bfd_window_internal));
-      if (i == NULL)
-	return FALSE;
-      i->data = NULL;
-    }
-#ifdef HAVE_MMAP
-  if (ok_to_map
-      && (i->data == NULL || i->mapped == 1)
-      && (abfd->flags & BFD_IN_MEMORY) == 0)
-    {
-      file_ptr file_offset, offset2;
-      size_t real_size;
-      int fd;
-
-      /* Find the real file and the real offset into it.  */
-      while (abfd->my_archive != NULL
-	     && !bfd_is_thin_archive (abfd->my_archive))
-	{
-	  offset += abfd->origin;
-	  abfd = abfd->my_archive;
-	}
-
-      /* Seek into the file, to ensure it is open if cacheable.  */
-      if (abfd->iostream == NULL
-	  && (abfd->iovec == NULL
-	      || abfd->iovec->bseek (abfd, offset, SEEK_SET) != 0))
-	goto free_and_fail;
-
-      fd = fileno ((FILE *) abfd->iostream);
-      /* Compute offsets and size for mmap and for the user's data.  */
-      offset2 = offset % pagesize;
-      if (offset2 < 0)
-	abort ();
-      file_offset = offset - offset2;
-      real_size = offset + size - file_offset;
-      real_size = real_size + pagesize - 1;
-      real_size -= real_size % pagesize;
-
-      /* If we're re-using a memory region, make sure it's big enough.  */
-      if (i->data != NULL && i->size < size)
-	{
-	  munmap (i->data, i->size);
-	  i->data = NULL;
-	}
-      i->data = mmap (i->data, real_size,
-		      writable ? PROT_WRITE | PROT_READ : PROT_READ,
-		      (writable
-		       ? MAP_FILE | MAP_PRIVATE
-		       : MAP_FILE | MAP_SHARED),
-		      fd, file_offset);
-      if (i->data == (void *) -1)
-	{
-	  /* An error happened.  Report it, or try using malloc, or
-	     something.  */
-	  bfd_set_error (bfd_error_system_call);
-	  windowp->data = 0;
-	  if (debug_windows)
-	    fprintf (stderr, "\t\tmmap failed!\n");
-	  goto free_and_fail;
-	}
-      if (debug_windows)
-	fprintf (stderr, "\n\tmapped %ld at %p, offset is %ld\n",
-		 (long) real_size, i->data, (long) offset2);
-      i->size = real_size;
-      windowp->data = (bfd_byte *) i->data + offset2;
-      windowp->size = size;
-      i->mapped = 1;
-      i->refcount = 1;
-      windowp->i = i;
-      return TRUE;
-    }
-  else if (debug_windows)
-    {
-      if (ok_to_map)
-	fprintf (stderr, _("not mapping: data=%lx mapped=%d\n"),
-		 (unsigned long) i->data, (int) i->mapped);
-      else
-	fprintf (stderr, _("not mapping: env var not set\n"));
-    }
-#else
-  ok_to_map = 0;
-#endif
-
-#ifdef HAVE_MPROTECT
-  if (!writable)
-    {
-      size_to_alloc += pagesize - 1;
-      size_to_alloc -= size_to_alloc % pagesize;
-    }
-#endif
-  if (debug_windows)
-    fprintf (stderr, "\n\t%s(%6ld)",
-	     i->data ? "realloc" : " malloc", (long) size_to_alloc);
-  i->data = bfd_realloc_or_free (i->data, size_to_alloc);
-  if (debug_windows)
-    fprintf (stderr, "\t-> %p\n", i->data);
-  if (i->data == NULL)
-    {
-      if (size_to_alloc == 0)
-	{
-	  windowp->i = i;
-	  return TRUE;
-	}
-      goto free_and_fail;
-    }
-  i->refcount = 1;
-  if (bfd_seek (abfd, offset, SEEK_SET) != 0)
-    goto free_and_fail;
-  i->size = bfd_bread (i->data, size, abfd);
-  if (i->size != size)
-    goto free_and_fail;
-  i->mapped = 0;
-#ifdef HAVE_MPROTECT
-  if (!writable)
-    {
-      if (debug_windows)
-	fprintf (stderr, "\tmprotect (%p, %ld, PROT_READ)\n", i->data,
-		 (long) i->size);
-      mprotect (i->data, i->size, PROT_READ);
-    }
-#endif
-  windowp->data = i->data;
-  windowp->size = i->size;
-  windowp->i = i;
-  return TRUE;
-
- free_and_fail:
-  /* We have a bfd_window_internal, but an error occurred.  Free it. */
-  free (i);
-  return FALSE;
-}
-
-#endif /* USE_MMAP */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/binary.c ./bfd/binary.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/binary.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/binary.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for binary objects.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 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
@@ -43,17 +43,17 @@
 
 /* Create a binary object.  Invoked via bfd_set_format.  */
 
-static bfd_boolean
+static bool
 binary_mkobject (bfd *abfd ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* Any file may be considered to be a binary file, provided the target
    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
@@ -95,17 +95,17 @@ binary_object_p (bfd *abfd)
 
 /* Get contents of the only section.  */
 
-static bfd_boolean
+static bool
 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
-      || bfd_bread (location, count, abfd) != count)
-    return FALSE;
-  return TRUE;
+  if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
+      || bfd_read (location, count, abfd) != count)
+    return false;
+  return true;
 }
 
 /* Return the amount of memory needed to read the symbol table.  */
@@ -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)
@@ -206,6 +206,7 @@ binary_get_symbol_info (bfd *ignore_abfd
 #define binary_bfd_is_local_label_name	    bfd_generic_is_local_label_name
 #define binary_get_lineno		   _bfd_nosymbols_get_lineno
 #define binary_find_nearest_line	   _bfd_nosymbols_find_nearest_line
+#define binary_find_nearest_line_with_alt  _bfd_nosymbols_find_nearest_line_with_alt
 #define binary_find_line		   _bfd_nosymbols_find_line
 #define binary_find_inliner_info	   _bfd_nosymbols_find_inliner_info
 #define binary_bfd_make_debug_symbol	   _bfd_nosymbols_bfd_make_debug_symbol
@@ -218,7 +219,7 @@ binary_get_symbol_info (bfd *ignore_abfd
 
 /* Write section contents of a binary file.  */
 
-static bfd_boolean
+static bool
 binary_set_section_contents (bfd *abfd,
 			     asection *sec,
 			     const void * data,
@@ -226,18 +227,18 @@ binary_set_section_contents (bfd *abfd,
 			     bfd_size_type size)
 {
   if (size == 0)
-    return TRUE;
+    return true;
 
   if (! abfd->output_has_begun)
     {
-      bfd_boolean found_low;
+      bool found_low;
       bfd_vma low;
       asection *s;
 
       /* The lowest section LMA sets the virtual address of the start
 	 of the file.  We use this to set the file position of all the
 	 sections.  */
-      found_low = FALSE;
+      found_low = false;
       low = 0;
       for (s = abfd->sections; s != NULL; s = s->next)
 	if (((s->flags
@@ -247,7 +248,7 @@ binary_set_section_contents (bfd *abfd,
 	    && (! found_low || s->lma < low))
 	  {
 	    low = s->lma;
-	    found_low = TRUE;
+	    found_low = true;
 	  }
 
       for (s = abfd->sections; s != NULL; s = s->next)
@@ -278,29 +279,21 @@ binary_set_section_contents (bfd *abfd,
 	       s);
 	}
 
-      abfd->output_has_begun = TRUE;
+      abfd->output_has_begun = true;
     }
 
   /* We don't want to output anything for a section that is neither
      loaded nor allocated.  The contents of such a section are not
      meaningful in the binary format.  */
   if ((sec->flags & (SEC_LOAD | SEC_ALLOC)) == 0)
-    return TRUE;
+    return true;
   if ((sec->flags & SEC_NEVER_LOAD) != 0)
-    return TRUE;
+    return true;
 
   return _bfd_generic_set_section_contents (abfd, sec, data, offset, size);
 }
 
-/* No space is required for header information.  */
-
-static int
-binary_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
-		       struct bfd_link_info *info ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
+#define binary_sizeof_headers			   _bfd_nolink_sizeof_headers
 #define binary_bfd_get_relocated_section_contents  bfd_generic_get_relocated_section_contents
 #define binary_bfd_relax_section		   bfd_generic_relax_section
 #define binary_bfd_gc_sections			   bfd_generic_gc_sections
@@ -319,7 +312,6 @@ binary_sizeof_headers (bfd *abfd ATTRIBU
 #define binary_bfd_link_add_symbols		  _bfd_generic_link_add_symbols
 #define binary_bfd_final_link			  _bfd_generic_final_link
 #define binary_bfd_link_split_section		  _bfd_generic_link_split_section
-#define binary_get_section_contents_in_window	  _bfd_generic_get_section_contents_in_window
 #define binary_bfd_link_check_relocs		  _bfd_generic_link_check_relocs
 
 const bfd_target binary_vec =
@@ -329,12 +321,13 @@ const bfd_target binary_vec =
   BFD_ENDIAN_UNKNOWN,		/* byteorder */
   BFD_ENDIAN_UNKNOWN,		/* header_byteorder */
   EXEC_P,			/* object_flags */
-  (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_CODE | SEC_DATA
-   | SEC_ROM | SEC_HAS_CONTENTS), /* section_flags */
+  (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
+   | SEC_ALLOC | SEC_LOAD),	/* section_flags */
   0,				/* symbol_leading_char */
   ' ',				/* ar_pad_char */
   16,				/* ar_max_namelen */
   255,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bpf-reloc.def ./bfd/bpf-reloc.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/bpf-reloc.def	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/bpf-reloc.def	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,109 @@
+  /* This reloc does nothing.  */
+  BPF_HOWTO (R_BPF_NONE,		/* type */
+	 0,			/* rightshift */
+	 0,			/* size */
+	 0,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 bpf_elf_generic_reloc, /* special_function */
+	 "R_BPF_NONE",		/* name */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0,			/* dst_mask */
+	 false)		/* pcrel_offset */
+
+  /* 64-immediate in LDDW instruction.  */
+  BPF_HOWTO (R_BPF_64_64,		/* type */
+	 0,			/* rightshift */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 32,			/* bitpos */
+	 complain_overflow_signed, /* complain_on_overflow */
+	 bpf_elf_generic_reloc, /* special_function */
+	 "R_BPF_64_64",	/* name */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 true)			/* pcrel_offset */
+
+  /* 32-bit data.  */
+  BPF_HOWTO (R_BPF_64_ABS32,		/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 bpf_elf_generic_reloc, /* special_function */
+	 "R_BPF_64_ABS32",	/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 true)			/* pcrel_offset */
+
+  /* 64-bit data.  */
+  BPF_HOWTO (R_BPF_64_ABS64,		/* type */
+	 0,			/* rightshift */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 bpf_elf_generic_reloc, /* special_function */
+	 "R_BPF_64_ABS64",	/* name */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 true)			/* pcrel_offset */
+
+  /* 32-bit PC-relative address in call instructions.  */
+  BPF_HOWTO (R_BPF_64_32,      /* type */
+        0,                     /* rightshift */
+        4,                     /* size */
+        32,                    /* bitsize */
+        true,                  /* pc_relative */
+        32,                    /* bitpos */
+        complain_overflow_signed, /* complain_on_overflow */
+        bpf_elf_generic_reloc, /* special_function */
+        "R_BPF_64_32",         /* name */
+        true,                  /* partial_inplace */
+        0xffffffff,            /* src_mask */
+        0xffffffff,            /* dst_mask */
+        true)                  /* pcrel_offset */
+
+  /* 16-bit PC-relative address in load instructions.  */
+  BPF_HOWTO (R_BPF_GNU_64_16,      /* type */
+        0,                     /* rightshift */
+        2,                     /* size */
+        16,                    /* bitsize */
+        true,                  /* pc_relative */
+        16,                    /* bitpos */
+        complain_overflow_signed, /* complain_on_overflow */
+        bpf_elf_generic_reloc, /* special_function */
+        "R_BPF_GNU_64_16",     /* name */
+        true,                  /* partial_inplace */
+        0xffff,                /* src_mask */
+        0xffff,                /* dst_mask */
+        true)                  /* pcrel_offset */
+
+  /* R_BPF_64_NODYLD32 is not used by GNU tools - but it is generated by LLVM.
+     We provide an entry here so that tools like strip can safely handle BPF
+     binaries generated by other tools.
+     R_BPF_64_NODYLD32 should be fixed at linker like a R_BPF_64_ABS32.
+     The difference to ABS32 is that LLVM execution engine does not resolve
+     R_BPF_64_NODYLD32 relocations.  */
+  BPF_HOWTO (R_BPF_64_NODYLD32,	/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 bpf_elf_generic_reloc, /* special_function */
+	 "R_BPF_64_NODYLD32",	/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 true)			/* pcrel_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.20200303/bfd/cache.c ./bfd/cache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cache.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cache.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD library -- caching of file descriptors.
 
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
 
    Hacked by Steve Chamberlain of Cygnus Support (steve@cygnus.com).
 
@@ -45,9 +45,7 @@ SUBSECTION
 #include "libbfd.h"
 #include "libiberty.h"
 
-#ifdef HAVE_MMAP
-#include <sys/mman.h>
-#endif
+static FILE *_bfd_open_file_unlocked (bfd *abfd);
 
 /* In some cases we can optimize cache operation when reopening files.
    For instance, a flush is entirely unnecessary if the file is already
@@ -67,11 +65,11 @@ enum cache_flag {
 /* The maximum number of files which the cache will keep open at
    one time.  When needed call bfd_cache_max_open to initialize.  */
 
-static int max_open_files = 0;
+static unsigned max_open_files = 0;
 
 /* Set max_open_files, if not already set, to 12.5% of the allowed open
    file descriptors, but at least 10, and return the value.  */
-static int
+static unsigned
 bfd_cache_max_open (void)
 {
   if (max_open_files == 0)
@@ -115,7 +113,7 @@ bfd_cache_max_open (void)
 
 /* The number of BFD files we have open.  */
 
-static int open_files;
+static unsigned open_files;
 
 /* Zero, or a pointer to the topmost BFD on the chain.  This is
    used by the <<bfd_cache_lookup>> macro in @file{libbfd.h} to
@@ -160,23 +158,25 @@ snip (bfd *abfd)
 
 /* Close a BFD and remove it from the cache.  */
 
-static bfd_boolean
+static bool
 bfd_cache_delete (bfd *abfd)
 {
-  bfd_boolean ret;
+  bool ret;
 
   if (fclose ((FILE *) abfd->iostream) == 0)
-    ret = TRUE;
+    ret = true;
   else
     {
-      ret = FALSE;
+      ret = false;
       bfd_set_error (bfd_error_system_call);
     }
 
   snip (abfd);
 
   abfd->iostream = NULL;
+  BFD_ASSERT (open_files > 0);
   --open_files;
+  abfd->flags |= BFD_CLOSED_BY_CACHE;
 
   return ret;
 }
@@ -184,7 +184,7 @@ bfd_cache_delete (bfd *abfd)
 /* We need to open a new file, and the cache is full.  Find the least
    recently used cacheable BFD and close it.  */
 
-static bfd_boolean
+static bool
 close_one (void)
 {
   register bfd *to_kill;
@@ -208,7 +208,7 @@ close_one (void)
   if (to_kill == NULL)
     {
       /* There are no open cacheable BFD's.  */
-      return TRUE;
+      return true;
     }
 
   to_kill->where = _bfd_real_ftell ((FILE *) to_kill->iostream);
@@ -226,6 +226,20 @@ close_one (void)
    ? (FILE *) (bfd_last_cache->iostream)	\
    : bfd_cache_lookup_worker (x, flag))
 
+/* A helper function that returns true if ABFD can possibly be cached
+   -- that is, whether bfd_cache_lookup_worker will accept it.  */
+
+static bool
+possibly_cached (bfd *abfd)
+{
+  if ((abfd->flags & BFD_IN_MEMORY) != 0)
+    return false;
+  if (abfd->my_archive != NULL
+      && !bfd_is_thin_archive (abfd->my_archive))
+    return false;
+  return true;
+}
+
 /* Called when the macro <<bfd_cache_lookup>> fails to find a
    quick answer.  Find a file descriptor for @var{abfd}.  If
    necessary, it open it.  If there are already more than
@@ -236,12 +250,17 @@ close_one (void)
 static FILE *
 bfd_cache_lookup_worker (bfd *abfd, enum cache_flag flag)
 {
-  if ((abfd->flags & BFD_IN_MEMORY) != 0)
+  if (!possibly_cached (abfd))
     abort ();
 
-  if (abfd->my_archive != NULL
-      && !bfd_is_thin_archive (abfd->my_archive))
-    abort ();
+  /* If the BFD is being processed by bfd_check_format_matches, it
+     must already be open and won't be on the list.  */
+  if (abfd->in_format_matches)
+    {
+      if (abfd->iostream == NULL)
+	abort ();
+      return (FILE *) abfd->iostream;
+    }
 
   if (abfd->iostream != NULL)
     {
@@ -257,7 +276,7 @@ bfd_cache_lookup_worker (bfd *abfd, enum
   if (flag & CACHE_NO_OPEN)
     return NULL;
 
-  if (bfd_open_file (abfd) == NULL)
+  if (_bfd_open_file_unlocked (abfd) == NULL)
     ;
   else if (!(flag & CACHE_NO_SEEK)
 	   && _bfd_real_fseek ((FILE *) abfd->iostream,
@@ -268,7 +287,7 @@ bfd_cache_lookup_worker (bfd *abfd, enum
     return (FILE *) abfd->iostream;
 
   /* xgettext:c-format */
-  _bfd_error_handler (_("reopening %pB: %s\n"),
+  _bfd_error_handler (_("reopening %pB: %s"),
 		      abfd, bfd_errmsg (bfd_get_error ()));
   return NULL;
 }
@@ -276,19 +295,36 @@ bfd_cache_lookup_worker (bfd *abfd, enum
 static file_ptr
 cache_btell (struct bfd *abfd)
 {
+  if (!bfd_lock ())
+    return -1;
   FILE *f = bfd_cache_lookup (abfd, CACHE_NO_OPEN);
   if (f == NULL)
-    return abfd->where;
-  return _bfd_real_ftell (f);
+    {
+      if (!bfd_unlock ())
+	return -1;
+      return abfd->where;
+    }
+  file_ptr result = _bfd_real_ftell (f);
+  if (!bfd_unlock ())
+    return -1;
+  return result;
 }
 
 static int
 cache_bseek (struct bfd *abfd, file_ptr offset, int whence)
 {
+  if (!bfd_lock ())
+    return -1;
   FILE *f = bfd_cache_lookup (abfd, whence != SEEK_CUR ? CACHE_NO_SEEK : CACHE_NORMAL);
   if (f == NULL)
+    {
+      bfd_unlock ();
+      return -1;
+    }
+  int result = _bfd_real_fseek (f, offset, whence);
+  if (!bfd_unlock ())
     return -1;
-  return _bfd_real_fseek (f, offset, whence);
+  return result;
 }
 
 /* Note that archive entries don't have streams; they share their parent's.
@@ -336,12 +372,17 @@ cache_bread_1 (FILE *f, void *buf, file_
 static file_ptr
 cache_bread (struct bfd *abfd, void *buf, file_ptr nbytes)
 {
+  if (!bfd_lock ())
+    return -1;
   file_ptr nread = 0;
   FILE *f;
 
   f = bfd_cache_lookup (abfd, CACHE_NORMAL);
   if (f == NULL)
-    return -1;
+    {
+      bfd_unlock ();
+      return -1;
+    }
 
   /* Some filesystems are unable to handle reads that are too large
      (for instance, NetApp shares with oplocks turned off).  To avoid
@@ -372,95 +413,124 @@ cache_bread (struct bfd *abfd, void *buf
 	break;
     }
 
+  if (!bfd_unlock ())
+    return -1;
   return nread;
 }
 
 static file_ptr
 cache_bwrite (struct bfd *abfd, const void *from, file_ptr nbytes)
 {
+  if (!bfd_lock ())
+    return -1;
   file_ptr nwrite;
   FILE *f = bfd_cache_lookup (abfd, CACHE_NORMAL);
 
   if (f == NULL)
-    return 0;
+    {
+      if (!bfd_unlock ())
+	return -1;
+      return 0;
+    }
   nwrite = fwrite (from, 1, nbytes, f);
   if (nwrite < nbytes && ferror (f))
     {
       bfd_set_error (bfd_error_system_call);
+      bfd_unlock ();
       return -1;
     }
+  if (!bfd_unlock ())
+    return -1;
   return nwrite;
 }
 
 static int
 cache_bclose (struct bfd *abfd)
 {
+  /* No locking needed here, it's handled by the callee.  */
   return bfd_cache_close (abfd) - 1;
 }
 
 static int
 cache_bflush (struct bfd *abfd)
 {
+  if (!bfd_lock ())
+    return -1;
   int sts;
   FILE *f = bfd_cache_lookup (abfd, CACHE_NO_OPEN);
 
   if (f == NULL)
-    return 0;
+    {
+      if (!bfd_unlock ())
+	return -1;
+      return 0;
+    }
   sts = fflush (f);
   if (sts < 0)
     bfd_set_error (bfd_error_system_call);
+  if (!bfd_unlock ())
+    return -1;
   return sts;
 }
 
 static int
 cache_bstat (struct bfd *abfd, struct stat *sb)
 {
+  if (!bfd_lock ())
+    return -1;
   int sts;
   FILE *f = bfd_cache_lookup (abfd, CACHE_NO_SEEK_ERROR);
 
   if (f == NULL)
-    return -1;
+    {
+      bfd_unlock ();
+      return -1;
+    }
   sts = fstat (fileno (f), sb);
   if (sts < 0)
     bfd_set_error (bfd_error_system_call);
+  if (!bfd_unlock ())
+    return -1;
   return sts;
 }
 
 static void *
 cache_bmmap (struct bfd *abfd ATTRIBUTE_UNUSED,
 	     void *addr ATTRIBUTE_UNUSED,
-	     bfd_size_type len ATTRIBUTE_UNUSED,
+	     size_t len ATTRIBUTE_UNUSED,
 	     int prot ATTRIBUTE_UNUSED,
 	     int flags ATTRIBUTE_UNUSED,
 	     file_ptr offset ATTRIBUTE_UNUSED,
 	     void **map_addr ATTRIBUTE_UNUSED,
-	     bfd_size_type *map_len ATTRIBUTE_UNUSED)
+	     size_t *map_len ATTRIBUTE_UNUSED)
 {
-  void *ret = (void *) -1;
+  void *ret = MAP_FAILED;
 
+  if (!bfd_lock ())
+    return ret;
   if ((abfd->flags & BFD_IN_MEMORY) != 0)
     abort ();
 #ifdef HAVE_MMAP
   else
     {
-      static uintptr_t pagesize_m1;
+      uintptr_t pagesize_m1 = _bfd_pagesize_m1;
       FILE *f;
       file_ptr pg_offset;
-      bfd_size_type pg_len;
+      size_t pg_len;
 
       f = bfd_cache_lookup (abfd, CACHE_NO_SEEK_ERROR);
       if (f == NULL)
-	return ret;
-
-      if (pagesize_m1 == 0)
-	pagesize_m1 = getpagesize () - 1;
+	{
+	  bfd_unlock ();
+	  return ret;
+	}
 
       /* Align.  */
       pg_offset = offset & ~pagesize_m1;
       pg_len = (len + (offset - pg_offset) + pagesize_m1) & ~pagesize_m1;
 
       ret = mmap (addr, pg_len, prot, flags, fileno (f), pg_offset);
-      if (ret == (void *) -1)
+      if (ret == MAP_FAILED)
 	bfd_set_error (bfd_error_system_call);
       else
 	{
@@ -471,6 +541,8 @@ cache_bmmap (struct bfd *abfd ATTRIBUTE_
     }
 #endif
 
+  if (!bfd_unlock ())
+    return MAP_FAILED;
   return ret;
 }
 
@@ -480,59 +552,84 @@ static const struct bfd_iovec cache_iove
   &cache_bclose, &cache_bflush, &cache_bstat, &cache_bmmap
 };
 
+static bool
+_bfd_cache_init_unlocked (bfd *abfd)
+{
+  BFD_ASSERT (abfd->iostream != NULL);
+  if (open_files >= bfd_cache_max_open ())
+    {
+      if (! close_one ())
+	return false;
+    }
+  abfd->iovec = &cache_iovec;
+  insert (abfd);
+  abfd->flags &= ~BFD_CLOSED_BY_CACHE;
+  ++open_files;
+  return true;
+}
+
 /*
 INTERNAL_FUNCTION
 	bfd_cache_init
 
 SYNOPSIS
-	bfd_boolean bfd_cache_init (bfd *abfd);
+	bool bfd_cache_init (bfd *abfd);
 
 DESCRIPTION
 	Add a newly opened BFD to the cache.
 */
 
-bfd_boolean
+bool
 bfd_cache_init (bfd *abfd)
 {
-  BFD_ASSERT (abfd->iostream != NULL);
-  if (open_files >= bfd_cache_max_open ())
-    {
-      if (! close_one ())
-	return FALSE;
-    }
-  abfd->iovec = &cache_iovec;
-  insert (abfd);
-  ++open_files;
-  return TRUE;
+  if (!bfd_lock ())
+    return false;
+  bool result = _bfd_cache_init_unlocked (abfd);
+  if (!bfd_unlock ())
+    return false;
+  return result;
+}
+
+static bool
+_bfd_cache_close_unlocked (bfd *abfd)
+{
+  /* Don't remove this test.  bfd_reinit depends on it.  */
+  if (abfd->iovec != &cache_iovec)
+    return true;
+
+  if (abfd->iostream == NULL)
+    /* Previously closed.  */
+    return true;
+
+  /* Note: no locking needed in this function, as it is handled by
+     bfd_cache_delete.  */
+  return bfd_cache_delete (abfd);
 }
 
 /*
-INTERNAL_FUNCTION
+FUNCTION
 	bfd_cache_close
 
 SYNOPSIS
-	bfd_boolean bfd_cache_close (bfd *abfd);
+	bool bfd_cache_close (bfd *abfd);
 
 DESCRIPTION
 	Remove the BFD @var{abfd} from the cache. If the attached file is open,
 	then close it too.
 
-RETURNS
 	<<FALSE>> is returned if closing the file fails, <<TRUE>> is
 	returned if all is well.
 */
 
-bfd_boolean
+bool
 bfd_cache_close (bfd *abfd)
 {
-  if (abfd->iovec != &cache_iovec)
-    return TRUE;
-
-  if (abfd->iostream == NULL)
-    /* Previously closed.  */
-    return TRUE;
-
-  return bfd_cache_delete (abfd);
+  if (!bfd_lock ())
+    return false;
+  bool result = _bfd_cache_close_unlocked (abfd);
+  if (!bfd_unlock ())
+    return false;
+  return result;
 }
 
 /*
@@ -540,47 +637,120 @@ FUNCTION
 	bfd_cache_close_all
 
 SYNOPSIS
-	bfd_boolean bfd_cache_close_all (void);
+	bool bfd_cache_close_all (void);
 
 DESCRIPTION
 	Remove all BFDs from the cache. If the attached file is open,
-	then close it too.
+	then close it too.  Note - despite its name this function will
+	close a BFD even if it is not marked as being cacheable, ie
+	even if bfd_get_cacheable() returns false.
 
-RETURNS
 	<<FALSE>> is returned if closing one of the file fails, <<TRUE>> is
 	returned if all is well.
 */
 
-bfd_boolean
+bool
 bfd_cache_close_all (void)
 {
-  bfd_boolean ret = TRUE;
+  bool ret = true;
 
+  if (!bfd_lock ())
+    return false;
   while (bfd_last_cache != NULL)
-    ret &= bfd_cache_close (bfd_last_cache);
+    {
+      bfd *prev_bfd_last_cache = bfd_last_cache;
+
+      ret &= _bfd_cache_close_unlocked (bfd_last_cache);
 
+      /* Stop a potential infinite loop should bfd_cache_close()
+	 not update bfd_last_cache.  */
+      if (bfd_last_cache == prev_bfd_last_cache)
+	break;
+    }
+
+  if (!bfd_unlock ())
+    return false;
   return ret;
 }
 
 /*
 INTERNAL_FUNCTION
-	bfd_open_file
+	bfd_cache_set_uncloseable
 
 SYNOPSIS
-	FILE* bfd_open_file (bfd *abfd);
+	bool bfd_cache_set_uncloseable (bfd *abfd, bool value, bool *old);
 
 DESCRIPTION
-	Call the OS to open a file for @var{abfd}.  Return the <<FILE *>>
-	(possibly <<NULL>>) that results from this operation.  Set up the
-	BFD so that future accesses know the file is open. If the <<FILE *>>
-	returned is <<NULL>>, then it won't have been put in the
-	cache, so it won't have to be removed from it.
+	Internal function to mark ABFD as either closeable or not.
+	This is used by bfd_check_format_matches to avoid races
+	where bfd_cache_close_all is called in another thread.
+	VALUE is true to mark the BFD as temporarily uncloseable
+	by the cache; false to mark it as closeable once again.
+	OLD, if non-NULL, is set to the previous value of the flag.
+	Returns false on error, true on success.
 */
 
-FILE *
-bfd_open_file (bfd *abfd)
+bool
+bfd_cache_set_uncloseable (bfd *abfd, bool value, bool *old)
 {
-  abfd->cacheable = TRUE;	/* Allow it to be closed later.  */
+  bool result = true;
+
+  if (!bfd_lock ())
+    return false;
+  if (old != NULL)
+    *old = abfd->in_format_matches;
+
+  /* Only perform any action when the state changes,and only when this
+     BFD is actually using the cache.  */
+  if (value != abfd->in_format_matches
+      && abfd->iovec == &cache_iovec
+      && possibly_cached (abfd))
+    {
+      if (value)
+	{
+	  /* Marking as uncloseable for the first time.  Ensure the
+	     file is open, and remove from the cache list.  */
+	  FILE *f = bfd_cache_lookup (abfd, CACHE_NORMAL);
+	  if (f == NULL)
+	    result = false;
+	  else
+	    snip (abfd);
+	}
+      else
+	{
+	  /* Mark as closeable again.  */
+	  insert (abfd);
+	}
+
+      abfd->in_format_matches = value;
+    }
+
+  if (!bfd_unlock ())
+    return false;
+  return result;
+}
+
+/*
+FUNCTION
+	bfd_cache_size
+
+SYNOPSIS
+	unsigned bfd_cache_size (void);
+
+DESCRIPTION
+	Return the number of open files in the cache.
+*/
+
+unsigned
+bfd_cache_size (void)
+{
+  return open_files;
+}
+
+static FILE *
+_bfd_open_file_unlocked (bfd *abfd)
+{
+  abfd->cacheable = true;	/* Allow it to be closed later.  */
 
   if (open_files >= bfd_cache_max_open ())
     {
@@ -592,15 +762,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,11 +799,12 @@ 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->opened_once = TRUE;
+	  abfd->iostream = _bfd_real_fopen (bfd_get_filename (abfd),
+					    FOPEN_WUB);
+	  abfd->opened_once = true;
 	}
       break;
     }
@@ -640,9 +813,35 @@ bfd_open_file (bfd *abfd)
     bfd_set_error (bfd_error_system_call);
   else
     {
-      if (! bfd_cache_init (abfd))
+      if (! _bfd_cache_init_unlocked (abfd))
 	return NULL;
     }
 
   return (FILE *) abfd->iostream;
 }
+
+/*
+INTERNAL_FUNCTION
+	bfd_open_file
+
+SYNOPSIS
+	FILE* bfd_open_file (bfd *abfd);
+
+DESCRIPTION
+	Call the OS to open a file for @var{abfd}.  Return the <<FILE *>>
+	(possibly <<NULL>>) that results from this operation.  Set up the
+	BFD so that future accesses know the file is open. If the <<FILE *>>
+	returned is <<NULL>>, then it won't have been put in the
+	cache, so it won't have to be removed from it.
+*/
+
+FILE *
+bfd_open_file (bfd *abfd)
+{
+  if (!bfd_lock ())
+    return NULL;
+  FILE *result = _bfd_open_file_unlocked (abfd);
+  if (!bfd_unlock ())
+    return NULL;
+  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.20200303/bfd/cf-i386lynx.c ./bfd/cf-i386lynx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cf-i386lynx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cf-i386lynx.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/ChangeLog ./bfd/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ChangeLog	2020-03-03 02:08:50.000000000 +0000
+++ ./bfd/ChangeLog	2026-03-05 02:07:20.000000000 +0000
@@ -1,3003 +1,2997 @@
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
+2025-07-13  Nick Clifton  <nickc@redhat.com>
 
-	* development.sh (development): Set to false.
+	* 2.45 Branch point.
 
-2019-12-11  Alan Modra  <amodra@gmail.com>
+2025-02-08  Alexandre Oliva <oliva@adacore.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.
+	* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Check for
+	_GLOBAL_OFFSET_TABLE_ references early, then compare hashed
+	symbols instead of strings.
+	(_bfd_sparc_elf_relocate_section): Compare hashed symbols.
 
-2019-12-11  Alan Modra  <amodra@gmail.com>
+2025-01-23  Jose E. Marchesi  <jose.marchesi@oracle.com>
 
-	* libbfd.c (bfd_get_8): Return a bfd_vma.
-	(bfd_get_signed_8): Return a bfd_signed_vma.
-	* bfd-in2.h: Regenerate.
+	* doc/local.mk (AM_MAKEINFOFLAGS): Prepend the build directory to
+	the @include search path.
+	* Makefile.in: Regenerate.
 
-2019-12-11  Alan Modra  <amodra@gmail.com>
+2025-01-19  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.
+	* 2.44 Branch point.
 
-2019-11-27  Alan Modra  <amodra@gmail.com>
+2024-10-18  WANG Xuerui <git@xen0n.name>
 
-	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.
+	* elfnn-loongarch.c (ELF_MAXPAGESIZE): Bump to 64KiB.
+	(ELF_MINPAGESIZE): Define as 4KiB.
+	(ELF_COMMONPAGESIZE): Define as 16KiB.
 
-2019-11-27  Alan Modra  <amodra@gmail.com>
+2024-07-20  Nick Clifton  <nickc@redhat.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.
+	* 2.43 branch point.
 
-2019-11-25  Christian Eggers  <ceggers@gmx.de>
+2024-01-15  Nick Clifton  <nickc@redhat.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.
+	* 2.42 branch point.
 
-2019-11-12  Jim Wilson  <jimw@sifive.com>
+2023-12-05  Nick Clifton  <nickc@redhat.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.
+	PR 31106
+	* elfcode.h (elf_write_relocs): Do not convert a relocation
+	against a zero-value absolute symbol into a relocation without a
+	symbol if the symbol is being used for a complex relocation.
 
-2019-10-29  Andrew Eikum  <aeikum@codeweavers.com>
+2023-11-21  Nick Clifton  <nickc@redhat.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.
+	PR 31067
+	linker.c (_bfd_generic_link_add_one_symbol): When issuing a
+	warning message, also display a message about the warning not
+	being affected by garbage colleciton.
 
-2019-10-20  John David Anglin  <danglin@gcc.gnu.org>
+2023-11-15  Arsen ArsenoviÄ‡  <arsen@aarsen.me>
 
-	* elf32-hppa.c (elf32_hppa_size_dynamic_sections): Provide 8-byte
-	minimum alignment for .plt section.
+	* aclocal.m4: Regenerate.
+	* configure.ac (SHARED_LIBADD): Use LTLIBINTL rather than
+	LIBINTL.
+	* configure: Regenerate.
+	* po/Make-in ($(srcdir)/$(PACKAGE).pot): Output to a .pot
+	temporary file, to suppress xgettext checking charset names.
 
-2019-10-19  John David Anglin  <danglin@gcc.gnu.org>
+2023-11-10  Simon Marchi  <simon.marchi@efficios.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.
+	* archures.c (bfd_mach_amdgcn_gfx1100, bfd_mach_amdgcn_gfx1101,
+	bfd_mach_amdgcn_gfx1102): New.
+	* bfd-in2.h (bfd_mach_amdgcn_gfx1100, bfd_mach_amdgcn_gfx1101,
+	bfd_mach_amdgcn_gfx1102): New.
+	* cpu-amdgcn.c (arch_info_struct): Add entries for
+	bfd_mach_amdgcn_gfx1100, bfd_mach_amdgcn_gfx1101,
+	bfd_mach_amdgcn_gfx1102.
 
-2019-10-17  Nelson Chu  <nelson.chu@sifive.com>
+2023-11-10  Nick Clifton  <nickc@redhat.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.
+	* elf.c (assign_file_positions_except_relocs): Turn warnings about
+	executable segments into errors if so requested.
+	* elflink.c (bfd_elf_size_dynamic_sections): Turn warnings about
+	executable stacks into errors if so requested.
 
-	* 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.
+2023-10-30  Nick Clifton  <nickc@redhat.com>
 
-2019-10-16  Alan Modra  <amodra@gmail.com>
+	* bpf-reloc.def (R_BPF_64_NODLD32): Add entry.
 
-	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.
+2023-10-16  Nick Clifton  <nickc@redhat.com>
 
-2019-10-15  Alan Modra  <amodra@gmail.com>
+	PR 28910
+	* elf32-arm.c (elf32_arm_merge_private_bfd_data): Do not set
+	output flags if the input flags have not been set.
 
-	* 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.
+2023-10-09  Nick Clifton  <nickc@redhat.com>
 
-2019-10-15  Alan Modra  <amodra@gmail.com>
+	PR 30950
+	* elf32-i386.c (elf_i386_convert_load_reloc): Check for
+	elf_x86_hash_table returning a NULL pointer.
 
-	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.
+	PR 30949
+	* elflink.c (elf_gc_mark_debug_section): Check for
+	bfd_section_from_elf_index returning a NULL pointer.
 
-2019-10-15  Alan Modra  <amodra@gmail.com>
+2023-10-06  Nick Clifton  <nickc@redhat.com>
 
-	PR 25100
-	* elf64-ppc.c (sfpr_define): Delete dead code that triggered a warning.
+	PR 30940
+	* elf64-alpha.c (elf64_alpha_check_relocs): Correct error message.
 
-2019-10-15  Alan Modra  <amodra@gmail.com>
+2023-10-05  Nick Clifton  <nickc@redhat.com>
 
-	* bfd.c (bfd_check_compression_header): Check for powers of two
-	with x == (x & -x).
+	PR 30904
+	* elf.c (_bfd_elf_get_dynamic_symbols): Fix typo when checking to
+	see if the gnuchains array has been successfully created.
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+2023-10-02  Nick Clifton  <nickc@redhat.com>
 
-	* syms.c (struct indexentry): Add idx field.
-	(cmpindexentry): Final sort on idx.
-	(_bfd_stab_section_find_nearest_line): Set idx.
+	* peXXigen.c (_bfd_XXi_only_swap_filehdr_out): Use
+	bfd_get_current_time when filing in the timestamp.
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+2023-09-29  Nick Clifton  <nickc@redhat.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.
+	PR 30906
+	* elf.c (_bfd_elf_slurp_version_tables): Test that the verref
+	section header has been initialised before using it.
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+2023-09-28  Nick Clifton  <nickc@redhat.com>
 
-	* elflink.c (elf_sort_symbol): Sort on type and name as well.
-	(elf_link_add_object_symbols): Style fix.
+	PR 30886
+	* elf-bfd.h (struct elf_obj_tdata): Add dt_strsz field.
+	* elf.c (_bfd_elf_get_dynamic_symbols): Add a NUL byte at the end
+	of the string table.
+	Initialise the dt_strsz field.
+	(_bfd_elf_slurp_version_tables): Only free the contents if they
+	were malloc'ed.
+	Add checks before setting string pointers in the dt_strtab buffer.
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+2023-09-27  Nick Clifton  <nickc@redhat.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.
+	PR 30885
+	* elfcode.h (elf_slurp_symbol_table): Compute the symcount for non
+	dynamic symbols in the same way as _bfd_elf_get_symtab_upper_bound.
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+2023-09-13  Jacob Navia  <jacob@jacob.remcomp.fr>
 
-	* 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.
+	* elf.c (_bfd_elf_init_reloc_shdr): Don't segfault on alloc fail.
 
-2019-10-14  Alan Modra  <amodra@gmail.com>
+2023-09-13  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.
+	* elf-strtab.c (_bfd_elf_strtab_init): In the event of memory
+	allocation failure, make sure that the hash table is freed.
 
-2019-10-04  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+2023-08-30  Tom Tromey  <tom@tromey.com>
 
-	PR ld/25062
-	* elf32-arm.c (elf32_arm_final_link_relocate): Sign extend data.
+	PR binutils/30703
+	* doc/webassembly.texi, doc/bfd.texi: Revert 8bb23cdb, adding
+	parameters back to @node.
 
-2019-09-30  Nick Alcock  <nick.alcock@oracle.com>
+2023-08-04  Nick Clifton  <nickc@redhat.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.
+	PR 15545
+	* cache.c (bfd_cache_close_all): Extend description to note that
+	all files will be closed, even those that are not cacheable.
+	Add code to prevent a possible infinite loop.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-08-02  Tom Tromey  <tromey@adacore.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.
+	* pei-x86_64.c (PEI_HEADERS): Do not define.
+	* pei-loongarch64.c (PEI_HEADERS): Do not define.
+	* pei-aarch64.c (PEI_HEADERS): Do not define.
+	* pe-x86_64.c (PEI_HEADERS): Do not define.
+	* pe-aarch64.c (PEI_HEADERS): Do not define.
+	* libpei.h (_LIBPEI_H): Add include guard.
+	* coff-x86_64.c (PEI_HEADERS): Do not check.
+	* coff-loongarch64.c (PEI_HEADERS): Do not check.
+	* coff-aarch64.c (PEI_HEADERS): Do not check.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-07-24  Johannes Schauer Marin Rodrigues  <josch@debian.org>
 
-	* Makefile.am (SOURCE_HFILES): Add many missing .h files.
-	* Makefile.in: Regenerate.
-	* po/SRC-POTFILES.in: Regenerate.
+	* peXXigen.c (_bfd_XXi_only_swap_filehdr_out): If inserting a
+	timestamp, use the value held in the SOURCE_DATE_EPOCH environment
+	variable, if it is defined.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-07-24  Jose E. Marchesi  <jose.marchesi@oracle.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.
+	* reloc.c: New reloc BFD_RELOC_BPF_DISPCALL32.
+	* elf64-bpf.c (bpf_reloc_type_lookup): Handle the new reloc.
+	* libbfd.h (bfd_reloc_code_real_names): Regenerate.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-07-09  Fangrui Song  <maskray@google.com>
 
-	* bfd-in.h (enum notice_asneeded_action): Move to bfdlink.h.
-	Move most other elf declarations..
-	* elf-bfd.h: ..to here.
+	PR 30592
+	* section.c: Define SEC_ELF_LARGE.
 	* bfd-in2.h: Regenerate.
+	* elf64-x86-64.c (elf_x86_64_section_flags, elf_x86_64_fake_sections,
+	elf_x86_64_copy_private_section_data): New.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-07-03  Nick Clifton  <nickc@redhat.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.
+	* version.m4: Update version number to 2.41.50.
+	* configure: Regenerate.
+	* bfd/po/bfd.pot: Regenerate.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-07-03  Nick Clifton  <nickc@redhat.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.
+	2.41 Branch Point.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-06-19  Nick Clifton  <nickc@redhat.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.
+	PR 30560
+	* elf64-x86-64.c (elf_x86_64_relocate_section): Add more checks
+	for a valid relocation offset.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-06-07  Nick Clifton  <nickc@redhat.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.
+	PR 30499
+	* elflink.c (elf_link_add_object_symbols): Add a message
+	indicating that alignment and size discrepancies between the
+	definition of common symbols and normal symbols are serious and
+	should be investigated.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-05-31  Tristan Gingold  <tgingold@free.fr>
 
-	* 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 30444
+	* coffcode.h (coff_write_object_contents): Handle base64 encoding
+	on PE.  Also check for too large string table.
+	* coffgen.c (extract_long_section_name): New function extracted
+	from ...
+	(make_a_section_from_file): ... here.  Add support for base64
+	long section names.
+	(decode_base64): New function.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-05-17  Luca Bacci  <luca.bacci@outlook.com>
 
-	* bfd-in.h: Delete coff forward refs and move coff declaration..
-	* coff-bfd.h: ..to here.
-	* bfd-in2.h: Regenerate.
+	PR 30421
+	* cofflink.c (_decoration_hash_newfunc): New function.
+	(_bfd_coff_link_hash_table_init): Call it.
+	* libcoff-in.h (struct coff_link_hash_table): Add decoration_hash
+	field.
+	(struct decoration_hash_entry): Declare.
+	(_decoration_hash_newfunc): Prototype.
+	* libcoff.h: Regenerate.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-05-16  Oleg Tolmatcev  <oleg.tolmatcev@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.
+	* libcoff-in.h (struct coff_tdata): Add section_by_index and
+	section_by_target_index hash tables.
+	* libcoff.h: Regenerate.
+	* coffcode.h (htab_hash_section_index): New function.
+	(htab_eq_section_index): New function.
+	(htab_hash_section_target_index): New function.
+	(htab_eq_section_target_index): New function.
+	(coff_mkobject_hool): Create the hash tables.
+	* peicode.h: Add the same new functions.
+	(pe_mkobject_hook): Create the hash tables.
+	* coff-x86_64.c (coff_amd64_rtype_to_howto): Use the new tables to
+	speed up lookups.
+	* coffgen.c (coff_section_from_bfd_index): Likewise.
+	(_bfd_coff_close_and_cleanup): Delete the hash tables.
+
+2023-05-10  Luca Bonissi  <gcc@scarsita.it>
+
+	PR 30422
+	* elf32-or1k.c (or1k_elf_relocate_section): Prescan for
+	R_OR1K_GOT_AHI16 relocs as they may occur after R_OR1K_GOT16
+	relocs.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-05-05  Nick Clifton  <nickc@redhat.com>
 
-	* bfd-in.h: Move tic6x function declaration..
-	* elf32-tic6x.h: ..to here.
-	* bfd-in2.h: Regenerate.
+	PR 30354
+	* elf32-arm.c (elf32_arm_gc_mark_extra_sections): If any debug
+	sections are marked then rerun the extra marking in order to pick
+	up any dependencies.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-05-03  Oleg Tolmatcev  <oleg.tolmatcev@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.
+	* archive.c (_bfd_write_archive_contents): Use a larger buffer in
+	order to improve efficiency.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-05-03  Oleg Tolmatcev  <oleg.tolmatcev@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.
+	* coffcode.h (coff_read_word_from_buffer): New function.
+	* coffcode.h (COFF_CHECKSUM_BUFFER_SIZE): New constant.
+	* coffcode.h (coff_compute_checksum): Improve speed by reducing
+	the number of seeks and reads used.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-04-24  Nick Clifton  <nickc@redhat.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.
+	* po/la.po: New Georgian translation.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-04-17  Nick Clifton  <nickc@redhat.com>
 
-	* bfd-in.h: Move ia64 function declarations..
-	* elfxx-ia64.h: ..to here.
-	* bfd-in2.h: Regenerate.
+	PR 30142
+	* peXXigen.c (_bfd_XXi_swap_scnhdr_out): Do not force the .rsrc
+	section to be writeable.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-03-30  Nick Clifton  <nickc@redhat.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.
+	PR 30285
+	* elf.c (_bfd_elf_slurp_version_tables): Fail if no version
+	definitions are allocated.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-02-27  Felix Willgerodt  <felix.willgerodt@intel.com>
 
-	* bfd-in.h: Move mips function declaration to..
-	* elfxx-mips.h: ..here.
-	* bfd-in2.h: Regenerate.
+	* elf64-x86-64.c (elf_x86_64_grok_psinfo): Check for
+	elf_external_linux_prpsinfo32_ugid32.
 
-2019-09-23  Alan Modra  <amodra@gmail.com>
+2023-02-23  Fangrui Song  <i@maskray.me>
 
-	* 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.
+	* elfnn-riscv.c (struct riscv_elf_link_hash_table): Add params.
+	(riscv_elfNN_set_options): New.
+	(riscv_info_to_howto_rela): Check relax_gp.
+	(_bfd_riscv_relax_section): Likewise.
+	* elfxx-riscv.h (struct riscv_elf_params): New.
+	(riscv_elf32_set_options): New.
+	(riscv_elf64_set_options): New.
 
-2019-09-20  Nelson Chu <nelson.chu@sifive.com>
+2023-02-23  Nick Clifton  <nickc@redhat.com>
+            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.
+	PR 30150
+	* dwarf2.c (comp_unit_contains_address): Renamed to ...
+	(comp_unit_may_contain_address): this, and added code to return
+	true if the CU's ranges have not yet been computed.
+	(_bfd_dwarf2_find_nearest_line_with_alt): Use the renamed
+	function, simplifying code in the process.
 
-2019-09-20  Alan Modra  <amodra@gmail.com>
+2023-02-21  Nick Clifton  <nickc@redhat.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.
+	* opncls.c (bfd_fill_in_gnu_debuglink_section): Update
+	description.
 
-2019-09-20  Alan Modra  <amodra@gmail.com>
+2023-02-17  Tom Tromey  <tom@tromey.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.
+	* doc/doc.str (FUNCTION): Call func.
 
-2019-09-20  Alan Modra  <amodra@gmail.com>
+2023-02-17  Tom Tromey  <tom@tromey.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.
+	* opncls.c: Hoist the SECTION comment.
 
-2019-09-20  Alan Modra  <amodra@gmail.com>
+2023-02-17  Tom Tromey  <tom@tromey.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.
+	* opncls.c (bfd_get_debug_link_info_1, separate_debug_file_exists)
+	(separate_alt_debug_file_exists, find_separate_debug_file)
+	(get_build_id, get_build_id_name, check_build_id_file): Don't use
+	chew comments.
+
+2023-02-17  Tom Tromey  <tom@tromey.com>
+
+	* doc/doc.str (SYNOPSIS): Use collapse_whitespace.
+	* doc/chew.c (collapse_whitespace): New function.
+	(main): Register collapse_whitespace.
+
+2023-02-07  Tom Tromey  <tom@tromey.com>
+
+	* bfd.c, cache.c, compress.c, opncls.c: Remove RETURNS from
+	documentation comments.
+	* doc/doc.str, doc/proto.str (RETURNS): Remove.
+
+2023-02-07  Tom Tromey  <tom@tromey.com>
+
+	* syms.c (bfd_decode_symclass, bfd_is_undefined_symclass)
+	(bfd_symbol_info): Reorder documentation comment.
+	* doc/doc.str (synopsis_seen): New variable.
+	(SYNOPSIS): Set synopsis_seen.  Emit @deftypefn.
+	(DESCRIPTION): Use synopsis_seen.
+	* doc/chew.c (catstrif): New function.
+	(main): Add catstrif intrinsic.
+	(compile): Recognize "variable" command.
+
+2023-02-07  Tom Tromey  <tom@tromey.com>
+
+	* doc/proto.str (external, internal, ifinternal, ENUMEQ, ENUMDOC):
+	Update.
+	* doc/chew.c (internalmode): Remove.
+	(add_intrinsic_variable): New function.
+	(main): Add internalmode as intrinsic.
+	(internal_mode): Remove global.
+	(maybecatstr): Update.
+	(free_words): Free variables.
+
+2023-02-07  Tom Tromey  <tom@tromey.com>
+
+	* doc/chew.c (pcu) <l>: Now intptr_t.
+	(internal_mode, istack, isp): Likewise.
+	(bang, atsign): Use intptr_t.
+
+2023-02-07  Tom Tromey  <tom@tromey.com>
+
+	* doc/proto.str (SYNOPSIS): Don't use paramstuff.
+	* doc/chew.c (paramstuff): Remove.
+	(main): Don't add paramstuff intrinsic.
+
+2023-02-07  Tom Tromey  <tom@tromey.com>
+
+	* doc/doc.str, doc/proto.str: Add copyright header.
+
+2023-02-07  Tom Tromey  <tom@tromey.com>
+
+	* doc/webassembly.texi (File layout): Remove second argument from
+	@node.
+	* doc/bfd.texi: Use single-argument @node everywhere.
+
+2023-02-07  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in: Rebuild.
+	* doc/local.mk (%D%/chew.stamp): Don't use H_CFLAGS.
+
+2023-01-24  Nick Clifton  <nickc@redhat.com>
+
+	PR 29998
+	* cofflink.c (_bfd_coff_generic_relocate_section): Add an
+	assertion that the output section is set for defined, global
+	symbols.
+
+2023-01-17  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
+
+	* elf32-csky.c (elf32_csky_merge_attributes): Don't save
+	and restore the ARCH attribute, it will actually clear
+	the ARCH attribute.
+	(csky_elf_merge_private_bfd_data): Store the machine flag
+	correctly.
+
+2023-01-13  Nick Clifton  <nickc@redhat.com>
+
+	* po/ro.po: Updated Romainian translation.
+
+2023-01-11  Nick Clifton  <nickc@redhat.com>
+
+	PR 29988
+	* dwarf2.c (read_indexed_address): Fix check for an out of range
+	offset.
+
+2023-01-06  Nick Clifton  <nickc@redhat.com>
+
+	* po/ru.po: Updated Russian translation.
+
+2023-01-03  Himal  <himalr@proton.me>
+
+	PR 29947
+	* bfdio.c (_bfd_real_fopen): Do not add a prefix to the Windows'
+	nul device filename.
+
+2023-01-03  Nick Clifton  <nickc@redhat.com>
+
+	* po/fr.po: Updated French trabslation.
+	* po/uk.po: Updated Ukrainian trabslation.
+
+2022-12-31  Nick Clifton  <nickc@redhat.com>
+
+	* 2.40 branch created.
+
+2022-12-23  Nick Clifton  <nickc@redhat.com>
+
+	PR 29936
+	* dwarf2.c (concat_filename): Fix check for a directory index off
+	the end of the directory table.
+
+2022-12-21  Nick Clifton  <nickc@redhat.com>
+
+	* po/ro.po: Updated Romanian translation.
+
+2022-12-06  Nick Clifton  <nickc@redhat.com>
+
+	PR 29852
+	* elf32-arm.c (cmse_scan): Check for NULL entries in the
+	sym_hashes array.
+	(elf32_arm_gc_mark_extra_sections): Likewise.
+
+2022-12-05  Nick Clifton  <nickc@redhat.com>
+
+	PR 29848
+	* vms-alpha.c (parse_module): Fix potential out of bounds memory
+	access.
+
+2022-12-01  Nick Clifton  <nickc@redhat.com>
+
+	PR 25202
+	* bfd.c (VerilogDataEndianness): New variable.
+	(verilog_write_record): Use VerilogDataEndianness, if set, to
+	choose the endianness of the output.
+	(verilog_write_section): Adjust the address by the data width.
+
+2022-11-21  Nick Clifton  <nickc@redhat.com>
+
+	PR 29764
+	* cpu-arm.c (scan): Accept machine names prefixed with "arm:".
+	* cpu-aarch64.c (scan): Accept machine names prefixed with "aarch64:".
+
+2022-10-19  Nick Clifton  <nickc@redhat.com>
+
+	PR 29699
+	* elf.c (_bfd_elf_slurp_version_tables): Fail if the sh_info field
+	of the section header is zero.
+
+2022-09-09  Nick Clifton  <nickc@redhat.com>
+
+	PR 29532
+	* elf.c (setup_group): Do not return false if there is no group
+	information available.
+
+2022-09-02  Aaron Merey  <amerey@redhat.com>
+
+	* aout-target.h (MY_find_nearest_line_with_alt): New macro.
+	* bfd-in2.h: Regenerate.
+	* bfd.c (bfd_find_nearest_line_with_alt): New macro.
+	* binary.c (binary_find_nearest_line_with_alt): New macro.
+	* coff-rs6000.c (_bfd_xcoff_find_nearest_line_with_alt): New macro.
+	(rs6000_xcoff64_vec): Add coff_find_nearest_line_with_alt.
+	* dwarf2.c (_bfd_dwarf2_find_nearest_line): Calls
+	_bfd_dwarf2_find_nearest_line_with_alt.
+	(_bfd_dwarf2_find_nearest_line_with_alt): New function. Implements the
+	former _bfd_dwarf2_find_nearest_line. Adds parameter alt_filename.
+	Attempt to open alt_filename and use it as the .dwz file if not NULL.
+	* elf-bfd.h (_bfd_elf_find_nearest_line_with_alt): New declaration.
+	* elf.c (_bfd_elf_find_nearest_line): Calls
+	_bfd_elf_find_nearest_line_with_alt.
+	(_bfd_elf_find_nearest_line_with_alt): New function. Implements the
+	former _bfd_elf_find_nearest_line. Adds parameter alt_filename.
+	* elf32-mips.c (bfd_elf32_find_nearest_line_with_alt): New macro.
+	* elf64-mips.c (bfd_elf64_find_nearest_line_with_alt): New macro.
+	* elfn32-mips.c (bfd_elf32_find_nearest_line_with_alt): New macro.
+	* elfxx-mips.h (_bfd_mips_elf_find_nearest_line_with_alt): New macro.
+	* elfxx-target.h (bfd_elfNN_find_nearest_line_with_alt): New macro.
+	* i386mdos.c (msdos_find_nearest_line_with_alt): New macro.
+	* ihex.c (ihex_find_nearest_line_with_alt): New macro.
+	* libbfd-in.h (_bfd_nosymbols_find_nearest_line_with_alt): New
+	declaration.
+	(_bfd_dwarf2_find_nearest_line_with_alt): New declaration.
+	* libbfd.h: Regenerate.
+	* libcoff-in.h (coff_find_nearest_line_with_alt): New macro.
+	* libcoff.h: Regenerate.
+	* libecoff.h (_bfd_ecoff_find_nearest_line_with_alt): New macro.
+	* mach-o.h (bfd_mach_o_find_nearest_line_with_alt): New macro.
+	* mmo.c (mmo_find_nearest_line_with_alt): New macro.
+	* pef.c (bfd_pef_find_nearest_line_with_alt): New macro.
+	* plugin.c (bfd_plugin_find_nearest_line_with_alt): New macro.
+	* ppcboot.c (ppcboot_find_nearest_line_with_alt): New macro.
+	* som.h (som_find_nearest_line_with_alt): New macro.
+	* srec.c (srec_find_nearest_line_with_alt): New macro.
+	* syms.c (_bfd_nosymbols_find_nearest_line_with_alt): New function.
+	* targets.c (BFD_JUMP_TABLE_SYMBOLS): Add symbol for
+	NAME##_find_nearest_line_with_alt.
+	(_bfd_find_nearest_line_with_alt): Add declaration.
+	* tekhex.c (tekhex_find_nearest_line_with_alt): New macro.
+	* verilog.c (verilog_find_nearest_line_with_alt): New macro.
+	* vms-alpha.c (_bfd_vms_find_nearest_line_with_alt): New macro.
+	* wasm-module.c (wasm_find_nearest_line_with_alt): New macro.
+	* xsym.c (bfd_sym_find_nearest_line_with_alt): New macro.
+
+2022-09-02  Frederic Cambus  <fred@statdns.com>
+
+	* config.bfd (arm-*-openbsd*): Restore target.
+
+2022-08-30  Nick Clifton  <nickc@redhat.com>
+
+	PR 29529
+	* dwarf2.c (struct line_info_table): Add new field:
+	use_dir_and_file_0.
+	(concat_filename): Use new field to help select the correct table
+	slot.
+	(read_formatted_entries): Do not skip entry 0.
+	(decode_line_info): Set new field depending upon the version of
+	DWARF being parsed.  Initialise filename based upon the setting of
+	the new field.
+
+2022-08-22  Frederic Cambus  <fred@statdns.com>
+
+	* config.bfd (aarch64-*-openbsd*): Add target.
+
+2022-08-03  Nick Clifton  <nickc@redhat.com>
+
+	PR 29389
+	* bfd.c (BFD_CLOSED_BY_CACHE): New bfd flag.
+	* cache.c (bfd_cache_delete): Set BFD_CLOSED_BY_DELETE on the
+	closed bfd.
+	(bfd_cache_lookup_worker): Clear BFD_CLOSED_BY_DELETE on the newly
+	reopened bfd.
+	* opncls.c (bfd_set_filename): Refuse to change the name of a bfd
+	that has been closed by bfd_cache_delete.  Mark changed bfds as
+	uncacheable.
+	* bfd-in2.h: Regenerate.
+
+2022-07-29  Nick Clifton  <nickc@redhat.com>
+
+	PR 29424
+	* dwarf2.c (read_attribute_value): Handle DW_FORM_rnglistx and
+	DW_FORM_loclistx.
+
+2022-07-26  Nick Clifton  <nickc@redhat.com>
+
+	* elfnn-loongarch.c (loongarch_elf_relocate_section): Fix
+	indentation.
+
+2022-07-08  Nick Clifton  <nickc@redhat.com>
+
+	* 2.39 branch created.
+
+2022-05-19  Yvan Roux  <yvan.roux@foss.st.com>
+
+	PR 25713
+	* bfdio.c (_bfd_real_fopen): Delete ccs string.
+
+2022-04-27  John Baldwin  <jhb@FreeBSD.org>
+
+	* elf.c (elfcore_grok_freebsd_note): Handle NT_ARM_TLS notes.
+
+2022-04-25  Nick Clifton  <nickc@redhat.com>
+
+	PR 29072
+	* elflink.c (bfd_elf_size_dynamic_sections): Display a note to the
+	user that the current ehaviour of creating an executable stack
+	because of a missing .note.GNU-stack section is deprecated and
+	will be changed in a future release.
+
+2022-04-20  ClÃ©ment Chigot  <clement.chigot@atos.net>
+
+	* coff-rs6000.c (xcoff_reloc_type_noop): Add info argument.
+	(xcoff_reloc_type_fail): Likewise.
+	(xcoff_reloc_type_pos): Likewise.
+	(xcoff_reloc_type_neg): Likewise.
+	(xcoff_reloc_type_rel): Likewise.
+	(xcoff_reloc_type_toc): Likewise.
+	(xcoff_reloc_type_ba): Likewise.
+	(xcoff_reloc_type_crel): Likewise.
+	(xcoff_reloc_type_tls): Likewise.
+	(xcoff_reloc_type_br): Add stub handler.
+	(xcoff_ppc_relocate_section): Add info to
+	xcoff_calculate_relocation.
+	(xcoff_stub_indirect_call_code): New constant.
+	(xcoff_stub_shared_call_code): Likewise.
+	(bfd_xcoff_backend_data): Add stub code fields.
+	(bfd_pmac_xcoff_backend_data): Likewise.
+	* coff64-rs6000.c (xcoff64_reloc_type_br): Add stub handler.
+	(xcoff64_ppc_relocate_section): Add info to
+	xcoff64_calculate_relocation.
+	(xcoff64_stub_indirect_call_code): New constant.
+	(xcoff64_stub_shared_call_code): Likewise.
+	(bfd_xcoff_backend_data): Add stub code fields.
+	(bfd_xcoff_aix5_backend_data): Likewise.
+	* libxcoff.h (struct xcoff_backend_data_rec): Add stub fields.
+	(bfd_xcoff_stub_indirect_call_code): New define.
+	(bfd_xcoff_stub_indirect_call_size): New define.
+	(bfd_xcoff_stub_shared_call_code): New define.
+	(bfd_xcoff_stub_shared_call_size): New define.
+	(xcoff_reloc_function): Add info argument.
+	(enum xcoff_stub_type): New enum.
+	(struct xcoff_stub_hash_entry): New structure.
+	* xcofflink.c (struct xcoff_link_hash_table): Add stub hash
+	table and params fields.
+	(xcoff_stub_hash_entry): New define.
+	(xcoff_stub_hash_lookup): New define.
+	(stub_hash_newfunc): New function.
+	(_bfd_xcoff_bfd_link_hash_table_free): Free the new stub hash
+	table.
+	(_bfd_xcoff_bfd_link_hash_table_create): Create the new stub
+	hash table.
+	(xcoff_link_add_symbols): Save rawsize for XTY_SD.
+	(bfd_xcoff_link_init): New function.
+	(xcoff_stub_csect_name): New function.
+	(xcoff_stub_get_csect_in_range): New function.
+	(xcoff_stub_name): New function.
+	(bfd_xcoff_get_stub_entry): New function.
+	(bfd_xcoff_type_of_stub): New function.
+	(xcoff_add_stub): New function.
+	(xcoff_build_one_stub): New function.
+	(bfd_xcoff_size_stubs): New function.
+	(bfd_xcoff_build_stubs): New function.
+	(xcoff_stub_create_relocations): New function.
+	(xcoff_link_input_bfd): Adapt relocations to stub.
+	(xcoff_write_global_symbol): Adapt to new TOC entries generated
+	for stubs.
+	(_bfd_xcoff_bfd_final_link): Handle stub file.
+	* xcofflink.h (struct bfd_xcoff_link_params): New structure.
+
+2022-04-20  ClÃ©ment Chigot  <clement.chigot@atos.net>
+
+	* coff-rs6000.c (_bfd_xcoff_put_ldsymbol_name): Write len in
+	ldinfo->strings instead of directly in the output_bfd.
+	* coff64-rs6000.c (_bfd_xcoff64_put_ldsymbol_name): Likewise.
+	* xcofflink.c (struct xcoff_link_hash_table): Remove ldrel_count
+	field. Add ldinfo field.
+	(xcoff_mark_symbol): Adjust to new ldinfo field.
+	(xcoff_mark): Likewise.
+	(bfd_xcoff_link_count_reloc): Likewise.
+	(xcoff_build_loader_section): Split into two functions: one that
+	build the loader section (this function) and one that only size
+	it...
+	(xcoff_size_loader_section): ... (this function).
+	(bfd_xcoff_size_dynamic_sections): Adapt to new ldinfo field.
+	Move the part where the dynamic sections are build to ...
+	(bfd_xcoff_build_dynamic_sections): ... this function.
+	* xcofflink.h: Add bfd_xcoff_build_dynamic_sections prototype.
+
+2022-04-13  Alexander von Gluck IV  <kallisti5@unixzen.com>
+
+	* config.bfd (x86-haiku): Add i386_pei_vec as a selectable format.
+
+2022-04-08  Nick Clifton  <nickc@redhat.com>
+
+	PR 29038
+	* coffgen.c (coff_find_nearest_line_with_names): Fix typo
+	retrieving saved bias.
+
+2022-04-07  Mark Harmstone  <mark@harmstone.com>
+
+	* coff-i386.c (in_reloc_p): Add R_SECTION.
+	(howto_table): Add R_SECTION.
+	(coff_pe_i386_relocation_section): Add support for R_SECTION.
+	(coff_i386_reloc_type_lookup): Add support for
+	BFD_RELOC_16_SECCIDX.
+	* coff-x86_64.c (in_reloc_p): Add R_SECTION.
+	(howto_table): Add R_SECTION.
+	(coff_pe_amd64_relocation_section): Add support for R_SECTION.
+	(coff_amd64_reloc_type_lookup): Add support for
+	BFD_RELOC_16_SECCIDX.
+	* reloc.c: Add BFD_RELOC_16_SECIDX.
 	* 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.
+	* libbfd.h: Regenerate.
+
+2022-04-01  John Baldwin  <jhb@FreeBSD.org>
+
+	* elf-bfd.h (elfcore_write_x86_segbases): New.
+	* elf.c (elfcore_grok_freebsd_note): Add pseudosections for
+	NT_FREEBSD_X86_SEGBASES register notes.
+	(elfcore_write_x86_segbases): New.
+	(elfcore_write_register_note): Write NT_FREEBSD_X86_SEGBASES
+	register notes.
+
+2022-04-01  John Baldwin  <jhb@FreeBSD.org>
+
+	* elf.c (elfcore_grok_freebsd_note): Remove checks for namesz.
+
+2022-03-22  Steiner H Gunderson  <steinar+sourceware@gunderson.no>
+
+	* dwarf2.c (_bfd_dwarf2_find_nearest_line): if a function name is
+	found, but no line number info, then return a result of 2.
 
-2019-09-18  Simon Marchi  <simon.marchi@polymtl.ca>
+2022-03-21  Steiner H Gunderson  <steinar+sourceware@gunderson.no>
 
+	PR 28978
+	* dwarf2.c (scan_unit_for_symbols): When performing second pass,
+	check to see if the function or variable being processed is the
+	same as the previous one.
+
+2022-03-18  Viorel Preoteasa  <viorel.preoteasa@gmail.com>
+
+	PR 28924
+	* elf32-arm.c (THM_MAX_FWD_BRANCH_OFFSET): Fix definition.
+	(THM2_MAX_FWD_BRANCH_OFFSET): Likewise.
+
+2022-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.am (ALL_MACHINES, ALL_MACHINES_CFILES):
+	Add cpu-amdgcn.c.
+	(BFD64_BACKENDS): Add elf64-amdgcn.lo.
+	(BFD64_BACKENDS_CFILES): Add elf64-amdgcn.c.
 	* Makefile.in: Re-generate.
+	* cpu-amdgcn.c: New.
+	* elf64-amdgcn.c: New.
+	* archures.c (bfd_architecture): Add bfd_arch_amdgcn and related
+	mach defines.
+	(bfd_amdgcn_arch): New.
+	(bfd_archures_list): Add bfd_amdgcn_arch.
+	* bfd-in2.h: Re-generate.
+	* config.bfd: Handle amdgcn* target.
+	* configure.ac: Handle amdgcn_elf64_le_vec.
 	* configure: Re-generate.
-	* doc/Makefile.in: Re-generate.
+	* elf-bfd.h (elf_target_id): Add AMDGCN_ELF_DATA.
+	* targets.c (amdgcn_elf64_le_vec): New.
+	(_bfd_target_vector): Add amdgcn_elf64_le_vec.
 
-2019-09-18  Alan Modra  <amodra@gmail.com>
+2022-03-01  TorbjÃ¶rn Svensson  <torbjorn.svensson@st.com>
+	    Fred Eisele  <fredrick.eisele@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 25713
+	* bfdio.c (_bfd_real_fopen): Fix typo.
 
-2019-09-18  Alan Modra  <amodra@gmail.com>
+2022-03-01  Nick Clifton  <nickc@redhat.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.
+	PR 28848
+	* elf32-arm.c (elf32_arm_merge_eabi_attributes): If the first
+	input bfd has a Tag_ABI_HardFP_use set to 3 but does not also have
+	TAG_FP_arch set then reset the TAG_ABI_HardFP_use.
 
-2019-09-18  Alan Modra  <amodra@gmail.com>
+2022-02-28  TorbjÃ¶rn Svensson  <torbjorn.svensson@st.com>
+	    Fred Eisele  <fredrick.eisele@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.
+	PR 25713
+	* bfdio.c (_bfd_real_fopen): Fix handling of paths longer than 260
+	characters on Windows hosts.
 
-2019-09-18  Alan Modra  <amodra@gmail.com>
+2022-02-28  Nick Clifton  <nickc@redhat.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 28886
+	* config.bfd: Update error message for obsolete configurations.
 
-2019-09-16  Phil Blundell  <pb@pbcl.net>
+2022-02-17  Nick Clifton  <nickc@redhat.com>
 
-	* version.m4: Set version to 2.33.50.
-	* Makefile.in, configure, doc/Makefile.in: Regenerated.
+	* po/sr.po: Updated Serbian translation.
 
-2019-09-11  Tom Tromey  <tom@tromey.com>
+2022-02-16  Fangrui Song  <maskray@google.com>
+	Nick Clifton  <nickc@redhat.com>
 
-	* opncls.c (bfd_set_filename): New function.
-	* bfd-in2.h: Regenerate.
+	PR ld/28841
+	* bfd-in2.h (struct bfd_section): Add type.
+	(discarded_section): Add field.
+	* elf.c (elf_fake_sections): Handle bfd_section::type.
+	* section.c (BFD_FAKE_SECTION): Add field.
+	* mri.c (mri_draw_tree): Update function call.
 
-2019-09-11  Alan Modra  <amodra@gmail.com>
+2022-02-11  Michael Forney  <mforney@mforney.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.
+        * bfd.c (bfd_set_gp_value): Remove return with expression
+        in void function.
 
-2019-09-10  Nick Clifton  <nickc@redhat.com>
+2022-02-09  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.
+	* config.bfd: Move pending obsolesence targets into the definitely
+	obsolete list.
 
-2019-09-05  Alan Modra  <amodra@gmail.com>
+2022-02-02  Nick Clifton  <nickc@redhat.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 28834
+	* dwarf2.c (read_section): Change the heuristic that checks for
+	overlarge dwarf debug info sections.
 
-2019-09-05  Alan Modra  <amodra@gmail.com>
+2022-02-02  Stafford Horne  <shorne@gmail.com>
 
-	* elf64-ppc.c (xlate_pcrel_opt): Handle prefix loads and stores
-	in second instruction.
-	(ppc64_elf_relocate_section): Likewise.
+	PR 28735
+	* elf32-or1k.c (or1k_elf_got16_no_overflow_howto): Define.
+	(or1k_elf_relocate_section): Use new howto instead of trying to
+	mask out relocation bits.
 
-2019-09-05  Alan Modra  <amodra@gmail.com>
+2022-01-24  Roland McGrath  <mcgrathr@google.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.
+	* doc/local.mk (%D%/bfdver.texi): Add mkdir command.
 
-2019-09-02  Alan Modra  <amodra@gmail.com>
+2022-01-24  Nick Clifton  <nickc@redhat.com>
+
+	* po/fr.po: Updated French translation.
+	* po/ro.po: Updated Romanian translation.
+	* po/uk.po: Updated Ukranian translation.
+
+2022-01-22  Nick Clifton  <nickc@redhat.com>
+
+	* version.m4: Change to 2.38.50.
+	* configure: Regenerate.
+	* po/bfd.pot: Regenerate.
 
-	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.
+2022-01-22  Nick Clifton  <nickc@redhat.com>
 
-2019-08-31  Jim Wilson  <jimw@sifive.com>
+	* 2.38 release branch created.
 
-	PR 23825
-	* elfnn-riscv.c (riscv_elf_create_dynamic_sections): Add SEC_LOAD,
-	SEC_DATA, and SEC_HAS_CONTENTS to .tdata.dyn section.
+2022-01-17  Nick Clifton  <nickc@redhat.com>
 
-2019-08-30  Jim Wilson  <jimw@sifive.com>
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* doc/Makefile.in: Regenerate.
+	* po/bfd.pot: Regenerate.
 
-	* elfnn-riscv.c (riscv_elf_relocate_section): For unresolvable reloc
-	error, call bfd_set_error, set ret to FALSE, and goto out label.
+2021-12-15  Nikita Popov  <npv1310@gmail.com>
 
-2019-08-30  H.J. Lu  <hongjiu.lu@intel.com>
+	PR 28687
+	* dwarf1.c (parse_die): Fix undefined behaviour in range tests.
 
-	PR ld/24951
-	* archive.c (_bfd_get_elt_at_filepos): Copy BFD_COMPRESS,
-	BFD_DECOMPRESS and BFD_COMPRESS_GABI flags for thin archive.
+2021-11-17  Nick Clifton  <nickc@redhat.com>
 
-2019-08-29  Alan Modra  <amodra@gmail.com>
+	PR 28452
+	* elf.c (assign_file_positions_for_non_load_sections): Replace
+	assertion with a warning message.
 
-	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.
+2021-10-19  Nick Clifton  <nickc@redhat.com>
 
-2019-08-29  Alan Modra  <amodra@gmail.com>
+	* linker.c (_bfd_generic_link_add_one_symbol): Test for a NULL
+	name before checking to see if the symbol is __gnu_lto_slim.
+	* archive.c (_bfd_compute_and_write_armap): Likewise.
 
-	* 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.
+2021-09-27  Nick Alcock  <nick.alcock@oracle.com>
 
-2019-08-28  Jim Wilson  <jimw@sifive.com>
+	* configure: Regenerate.
 
-	* elfnn-riscv.c (_bfd_riscv_relax_lui): Add check to exclude abs
-	section when setting max_alignment.  Update comment.
-	(_bfd_riscv_relax_pc): Likewise.
+2021-09-15  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-2019-08-29  Alan Modra  <amodra@gmail.com>
+	* archures.c (bfd_arch_list): Use 'char *' instead of 'char **'
+	when calculating space for a string list.
 
-	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.
+2021-09-014  Cupertino Miranda  <cmiranda@synopsys.com>
+           Claudiu Zissulescu  <claziss@synopsys.com>
 
-2019-08-24  Alan Modra  <amodra@gmail.com>
+	* arc-got.h (arc_static_sym_data): New structure.
+	(get_static_sym_data): New function.
+	(relocate_fix_got_relocs_for_got_info): Move the computation fo
+	symbol value and section to above introduced function, and use
+	this new function.
 
-	* elf64-ppc.c (ppc64_elf_edit_toc): Exclude undefined weak
-	symbols from GOT optimisation.
+2021-09-07  Luis Machado  <luis.machado@linaro.org>
 
-2019-08-23  Stafford Horne  <shorne@gmail.com>
+	Revert: [AArch64] MTE corefile support
 
-	* elf32-or1k.c (or1k_elf_finish_dynamic_symbol): Use correct value for
-	PLT GOT entries.
+	2021-05-21  Luis Machado  <luis.machado@linaro.org>
 
-2019-08-23  Nick Clifton  <nickc@redhat.com>
+	* elf.c (elfcore_make_memtag_note_section): New function.
+	(elfcore_grok_note): Handle NT_MEMTAG note types.
 
-	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.
+2021-09-07  Nick Clifton  <nickc@redhat.com>
 
-2019-08-23  Alan Modra  <amodra@gmail.com>
+	PR 28305
+	* elf32-xtensa.c (elf_xtensa_do_reloc): Add check for put of range
+	reloc.
 
-	PR 24933
-	* elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Don't exit
-	on error without freeing plts[] contents.
+	PR 28303
+	* elfxx-riscv.c (riscv_elf_add_sub_reloc): Add check for out of
+	range relocs.
 
-2019-08-22  Dennis Zhang  <dennis.zhang@arm.com>
+2021-08-10  Nick Clifton  <nickc@redhat.com>
 
-	* cpu-arm.c: New entries for Cortex-M35P, Cortex-A77, Cortex-A76AE.
+	* po/sr.po: Updated Serbian translation.
 
-2019-08-22  Nick Clifton  <nickc@redhat.com>
+2021-07-18  Nick Clifton  <nickc@redhat.com>
 
-	PR 24922
-	* pei-x86_64.c (pex64_xdata_print_uwd_codes): Add checks before
-	reading data from extra records.
+	* config.bfd: Move pending obsoletion targets to obsolete list.
 
-2019-08-22  Tamar Christina  <tamar.christina@arm.com>
+2021-07-16  Giulio Benetti  <giulio.benetti@benettiengineering.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.
+	* elf32-or1k.c (or1k_elf_relocate_section): Use a separate entry
+	in switch case R_OR1K_INSN_REL_26 where we need to check for
+	!SYMBOL_CALLS_LOCAL() instead of !SYMBOL_REFERENCES_LOCAL().
 
-2019-08-22  Alan Modra  <amodra@gmail.com>
+2021-07-14  ClÃ©ment Chigot  <clement.chigot@atos.net>
 
-	* 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.
+	* libxcoff.h (struct xcoff_dwsect_name): Add DWARF name.
+	* coff-rs6000.c (xcoff_dwsect_names): Update.
+	* coffcode.h (sec_to_styp_flags): Likewise.
+	(coff_new_section_hook): Likewise.
 
-2019-08-20  Dennis Zhang  <dennis.zhang@arm.com>
+2021-07-10  Alan Modra  <amodra@gmail.com>
 
-	* cpu-aarch64.c: New entries for Cortex-A34, Cortex-A65,
-	 Cortex-A77, cortex-A65AE, and Cortex-A76AE.
+	* dwarf2.c (read_address): Remove accidental commit.
+	(read_ranges): Compare offset rather than pointers.
 
-2019-08-20  Tamar Christina  <tamar.christina@arm.com>
+2021-07-08  Nick Clifton  <nickc@redhat.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.
+	* po/pt.po: Updated Portuguese translation.
 
-2019-08-19  Tom Tromey  <tromey@adacore.com>
+2021-07-07  Nick Clifton  <nickc@redhat.com>
 
-	* dwarf2.c (_bfd_dwarf2_find_symbol_bias): Create hash table
-	holding symbols.
+	* elfcode.h (elf_swap_symbol_out): Revert accidental change that
+	removed an abort if the shndx pointer is NULL.
 
-2019-08-19  Alan Modra  <amodra@gmail.com>
+2021-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
-	* 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.
+	* sysdep.h [!ENABLE_NLS]: Prevent inclusion of <libintl.h> on
+	Solaris.
 
-2019-08-16  H.J. Lu  <hongjiu.lu@intel.com>
+2021-07-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
-	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.
+	* configure.ac: Check for strnlen declaration.
+	* configure, config.in: Regenerate.
 
-2019-08-16  Martin Liska  <mliska@suse.cz>
+2021-07-07  Nick Clifton  <nickc@redhat.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 28051
+	* coff-rs6000.c (xcoff_reloc_type_tls): Reformat error messages in
+	order to fix problems when translating.
+	* cofflink.c (_bfd_coff_write_global_sym): Likewise.
+	* elfnn-aarch64.c (_bfd_aarch64_erratum_843419_branch_to_stub):
+	Likewise.
+	* po/bfd.pot: Regenerate.
 
-2019-08-16  Alan Modra  <amodra@gmail.com>
+2021-07-06  Michael Matz  <matz@suse.de>
 
-	* elf32-ppc.c (ppc_elf_relocate_section): Optimize unaligned relocs.
+	PR ld/28021
+	* elfnn-riscv.c (riscv_relax_delete_bytes): Check for any
+	versioning.
 
-2019-08-15  Jim Wilson  <jimw@sifive.com>
+2021-07-06  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.
+	PR 28055
+	* elf64-bpf.c (bpf_elf_generic_reloc): Add missing ATTRIBUTE_UNUSED.
 
-2019-08-15  Tom Tromey  <tromey@adacore.com>
+2021-07-05  Alan Modra  <amodra@gmail.com>
 
-	* dwarf2.c (scan_unit_for_symbols): Check for end of CU, not end
-	of section.
+	PR 28055
+	* elf64-bpf.c (bpf_elf_generic_reloc): Use correct bfd for bfd_put
+	and bfd_put_32 calls.  Correct section limit checks.
 
-2019-08-14  Alan Modra  <amodra@gmail.com>
+2021-07-03  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.
+	* version.m4: Update version number.
+	* configure: Regenerate.
+	* po/opcodes.pot: Regenerate.
 
-2019-08-14  Alan Modra  <amodra@gmail.com>
+2021-07-03  Nick Clifton  <nickc@redhat.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.
+	* 2.37 release branch created.
 
-2019-08-14  Alan Modra  <amodra@gmail.com>
+2021-07-02  Nick Clifton  <nickc@redhat.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.
+	PR 28046
+	* dwarf2.c (read_ranges): Check that range_ptr does not exceed
+	range_end.
+
+2021-06-30  YunQiang Su  <yunqiang.su@cipunited.com>
+
+	PR mips/28009
+	* bfd/elfxx-mips.c (_bfd_mips_elf_section_from_shdr,
+	_bfd_mips_elf_fake_sections): Mark LTO debug info as
+	SHT_MIPS_DWARF.
+
+2021-06-29  Nick Clifton  <nickc@redhat.com>
+
+	* config.bfd (obsolete configurations): Add netbsdpe.
+
+2021-06-22  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_pcrel_hi_reloc): Added field to store
+	the original relocation type, in case the type is converted to
+	R_RISCV_HI20.
+	(riscv_pcrel_lo_reloc): Removed unused name field.
+	(riscv_pcrel_relocs): Added comments.
+	(riscv_zero_pcrel_hi_reloc): Removed unused input_bfd.
+	(riscv_record_pcrel_hi_reloc): Updated.
+	(riscv_record_pcrel_lo_reloc): Likewise.
+	(riscv_resolve_pcrel_lo_relocs): Likewise.  Check the original
+	type of auipc, to make sure the %pcrel_lo without any addends.
+	Otherwise, report dangerous relocation error.
+	(riscv_elf_relocate_section): Updated above functions are changed.
+	For R_RISCV_GOT_HI20, report dangerous relocation error when addend
+	isn't zero.
+
+2021-06-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27998
+	* elfxx-x86.c (elf_x86_allocate_dynrelocs): Count PLT for GOTOFF
+	relocation against IFUNC symbols.
+	(_bfd_x86_elf_adjust_dynamic_symbol): Likewise.
+
+2021-06-19  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elflink.c (bfd_elf_final_link): Correct DT_TEXTREL warning in
+	PDE.
+
+2021-06-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-properties.c (_bfd_elf_parse_gnu_properties): Handle
+	GNU_PROPERTY_UINT32_AND_LO, GNU_PROPERTY_UINT32_AND_HI,
+	GNU_PROPERTY_UINT32_OR_LO and GNU_PROPERTY_UINT32_OR_HI.
+	(elf_merge_gnu_properties): Likewise.
+
+2021-06-11  Alan Modra  <amodra@gmail.com>
+
+	PR 27952
+	* elf-bfd.h (struct elf_obj_tdata): Add is_pie.
+	* elflink.c (elf_link_add_object_symbols): Set is_pie.
+
+2021-06-09  Nick Clifton  <nickc@redhat.com>
+
+	PR 27666
+	* config.bfd: Do not add the sparc_elf32_vec or sparc_elf64_vec
+	vectors to Sparc Solaris2 targets.
+
+2021-06-08  Michael Matz  <matz@suse.de>
+
+	* elf.c (bfd_section_from_shdr): Set has_secondary_relocs flag.
+	(_bfd_elf_slurp_secondary_reloc_section): Use it for early-out.
+
+2021-06-07  Jan Beulich  <jbeulich@suse.com>
+
+	* dwarf2.c (read_ranges, read_rnglists): Add u suffix to constant.
+
+2021-06-02  Alan Modra  <amodra@gmail.com>
+
+	* elf-attrs.c (_bfd_elf_parse_attributes): Break out of loop if
+	subsection length is too small to cover tag and length field.
+
+2021-05-31  Nelson Chu  <nelson.chu@sifive.com>
+	    Lifang Xia  <lifang_xia@c-sky.com>
+
+	PR 27566
+	* elfnn-riscv.c (struct riscv_elf_link_hash_table): New integer pointer
+	to monitor the data segment phase.
+	(bfd_elfNN_riscv_set_data_segment_info): New function called by
+	after_allocation, to set the data_segment_phase from expld.dataseg.
+	(_bfd_riscv_relax_section): Don't relax when data_segment_phase is
+	exp_seg_relro_adjust (0x4).
+	* elfxx-riscv.h (bfd_elf32_riscv_set_data_segment_info): New extern.
+	(bfd_elf64_riscv_set_data_segment_info): Likewise
+
+2021-05-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27905
+	* elf32-i386.c: Don't include "libiberty.h".
+	(elf_howto_table): Revert commits a7664973b24 and 50c95a739c9.
+	(elf_i386_rtype_to_howto): Revert commit 50c95a739c9.
+	(elf_i386_info_to_howto_rel): Likewise.
+	(elf_i386_tls_transition): Likewise.
+	(elf_i386_relocate_section): Likewise.
+	* elf64-x86-64.c (x86_64_elf_howto_table): Revert commits
+	a7664973b24 and 50c95a739c9.
+	(elf_x86_64_rtype_to_howto): Revert commit 50c95a739c9.
+	* elfxx-x86.c (_bfd_x86_elf_parse_gnu_properties): Likewise.
+	* elfxx-x86.h (elf_x86_obj_tdata): Likewise.
+	(elf_x86_has_code16): Likewise.
+
+2021-05-26  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27905
+	* elf32-i386.c: Include "libiberty.h".
+	(elf_howto_table): Add 16-bit R_386_PC16 entry.
+	(elf_i386_rtype_to_howto): Add a BFD argument.  Use 16-bit
+	R_386_PC16 if input has 16-bit mode instructions.
+	(elf_i386_info_to_howto_rel): Update elf_i386_rtype_to_howto
+	call.
+	(elf_i386_tls_transition): Likewise.
+	(elf_i386_relocate_section): Likewise.
+	* elf64-x86-64.c (x86_64_elf_howto_table): Add 16-bit
+	R_X86_64_PC16 entry.
+	(elf_x86_64_rtype_to_howto): Use 16-bit R_X86_64_PC16 if input
+	has 16-bit mode instructions.
+	* elfxx-x86.c (_bfd_x86_elf_parse_gnu_properties): Set
+	elf_x86_has_code16 if relocatable input is marked with
+	GNU_PROPERTY_X86_FEATURE_2_CODE16.
+	* elfxx-x86.h (elf_x86_obj_tdata): Add has_code16.
+	(elf_x86_has_code16): New.
+
+2021-05-26  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.h (check_unknown_prefixed_ext): New bool.
+	* elfxx-riscv.c (riscv_parse_prefixed_ext): Do not check the
+	prefixed extension name if check_unknown_prefixed_ext is false.
+	* elfnn-riscv.c (riscv_merge_arch_attr_info): Set
+	check_unknown_prefixed_ext to false for linker.
+
+2021-05-25  Nick Clifton  <nickc@redhat.com>
+
+	* elf32-arn.c (struct elf_arm_obj_tdata): Add num_entries field.
+	(elf32_arm_num_entries): New macro.
+	(elf32_arm_allocate_local_sym_info): Initialise the new field.
+	Allocate arrays individually so that buffer overruns can be
+	detected by memory checkers.
+	(elf32_arm_create_local_iplt): Check num_entries.
+	(elf32_arm_get_plt_info): Likewise.
+	(elf32_arm_final_link_relocate): Likewise.
+	(elf32_arm_check_relocs): Likewise.
+	(elf32_arm_size_dynamic_sections): Likewise.
+	(elf32_arm_output_arch_local_syms): Likewise.
+
+2021-05-25  Nick Clifton  <nickc@redhat.com>
+
+	* elf32-arm.c: Fix formatting.
+
+2021-05-25  Alan Modra  <amodra@gmail.com>
+
+	* elf-attrs.c (elf_attr_strdup): New function.
+	(_bfd_elf_attr_strdup): Use it here.
+	(elf_add_obj_attr_string): New function, extracted from..
+	(bfd_elf_add_obj_attr_string): ..here.
+	(elf_add_obj_attr_int_string): New function, extracted from..
+	(bfd_elf_add_obj_attr_int_string): ..here.
+	(_bfd_elf_parse_attributes): Don't allocate an extra byte for a
+	string terminator.  Instead ensure parsing doesn't go past
+	end of sub-section.  Use size_t variables for lengths.
+
+2021-05-22  Alan Modra  <amodra@gmail.com>
+
+	* libbfd.c (_bfd_safe_read_leb128): Remove length_return parameter.
+	Replace data pointer with pointer to pointer.  Increment pointer
+	over bytes read.
+	* libbfd-in.h (_bfd_safe_read_leb128): Update prototype.
+	* elf-attrs.c (_bfd_elf_parse_attributes): Adjust to suit.  Be
+	careful not to increment data pointer past end.  Remove now
+	redundant pr17512 check.
+	* wasm-module.c (READ_LEB128): Adjust to suit changes to
+	_bfd_safe_read_leb128.
+	* dwarf2.c (read_n_bytes): New inline function, old one renamed to..
+	(read_blk): ..this.  Allocate and return block.  Increment bfd_byte**
+	arg.
+	(read_3_bytes): New function.
+	(read_1_byte, read_1_signed_byte, read_2_bytes, read_4_bytes),
+	(read_8_bytes, read_string, read_indirect_string),
+	(read_indirect_line_string, read_alt_indirect_string): Take a
+	byte_byte** arg which is incremented over bytes read.  Remove any
+	bytes_read return.  Rewrite limit checks to compare lengths
+	rather than pointers.
+	(read_abbrevs, read_attribute_value, read_formatted_entries),
+	(decode_line_info, find_abstract_instance, read_ranges),
+	(read_rnglists, scan_unit_for_symbols, parse_comp_unit),
+	(stash_comp_unit): Adjust to suit.  Rewrite limit checks to
+	compare lengths rather than pointers.
 	* libbfd.h: Regenerate.
 
-2019-08-09  Mihailo Stojanovic  <mihailo.stojanovic@rt-rk.com>
+2021-05-21  Luis Machado  <luis.machado@linaro.org>
 
-	* 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.
+	* elf.c (elfcore_make_memtag_note_section): New function.
+	(elfcore_grok_note): Handle NT_MEMTAG note types.
 
-2019-07-30  Alan Modra  <amodra@gmail.com>
+2021-05-20  Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	PR 24768
-	* bfd.c (struct bfd): Add lto_slim_object flag.
-	* bfd-in2.h: Regenerate.
+	* section.c (bfd_get_section_by_name): Return NULL if name is
+	NULL.
+	(bfd_get_section_by_name_if): Likewise.
+	* dwarf2.c (read_section): Remove unneeded NULL check.
+	(find_debug_info): Likewise.
 
-2019-07-29  Martin Liska  <mliska@suse.cz>
+2021-05-19  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.
+	* plugin.c (bfd_plugin_open_input): Inform the user if the limit
+	on the number of open files is reached.  If possible, try to
+	increase this limit before failing.
 
-2019-07-23  Omar Majid  <omajid@redhat.com>
+2021-05-14  Nelson Chu  <nelson.chu@sifive.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.
+	* elfnn-riscv.c (riscv_resolve_pcrel_lo_relocs): Check the values
+	of %pcrel_hi, before and after adding the addend.  Make sure the
+	value won't be changed, otherwise, report dangerous error.
 
-2019-07-18  Alan Modra  <amodra@gmail.com>
+2021-05-13  Nelson Chu  <nelson.chu@sifive.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.
+	* elfxx-riscv.c (check_implicit_always): The check_func, always add
+	the implicit subset without checking.
+	(check_implicit_for_i): The check_func for i, only add zicsr and
+	zifencei when the version of i less than 2.1.
+	(struct riscv_implicit_subset): Record the subsets and their
+	corresponding implicit subsets.
+	(riscv_implicit_subsets): Table records all implicit informations.
+	(riscv_parse_add_implicit_subsets): Updated and add implicit subsets
+	according to riscv_implicit_subsets.  Remove the redundant codes.
 
-2019-07-18  Alan Modra  <amodra@gmail.com>
+2021-05-13  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.
+	PR 27858
+	* elf32-sh.c (sh_elf_info_to_howto): Correct check for last valid
+	reloc howto.
 
-2019-07-18  Alan Modra  <amodra@gmail.com>
+2021-05-12  Luis Machado  <luis.machado@linaro.org>
 
-	* elf32-ppc.c (TLS_GDIE): Rename from TLS_TPRELGD throughout file.
-	Correct comment.
-	* elf64-ppc.c (TLS_GDIE): Likewise.
+	* elf-bfd.h (elfcore_write_aarch_mte): New prototype.
+	* elf.c (elfcore_grok_aarch_mte, elfcore_write_aarch_mte): New
+	functions.
+	(elfcore_grok_note): Handle notes of type NT_ARM_TAGGED_ADDR_CTRL.
+	(elfcore_write_register_note): Handle MTE notes.
 
-2019-07-18  Alan Modra  <amodra@gmail.com>
+2021-05-11  Alan Modra  <amodra@gmail.com>
 
-	* elf64-ppc.c (ppc64_elf_tls_optimize): Correct test for allowed
-	range of tp-relative offsets.
+	PR 27844
+	* pdp11.c (aout_get_external_symbols): Clear first four bytes of
+	strings array, not just the first byte.
+	* aoutx.h (aout_get_external_symbols): Likewise.
 
-2019-07-15  Alan Modra  <amodra@gmail.com>
+2021-05-10  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* elflink.c (_bfd_elf_fix_symbol_flags): If the def for an
-	alias is no longer bfd_link_hash_defined, clear the alias.
+	PR binutils/27839
+	* simple.c (bfd_simple_get_relocated_section_contents): Remove
+	strayed fprintf.
 
-2019-07-13  Alan Modra  <amodra@gmail.com>
+2021-05-10  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.
+	PR 27839
+	* simple.c (simple_dummy_add_to_set): New function.
+	(simple_dummy_constructor): New function.
+	(simple_dummy_multiple_common): New function.
+	(bfd_simple_get_relocated_section_contents): Zero out the
+	callbacks structure, and then set the add_to_set, constructor and
+	multiple_common fields.
 
-2019-07-08  Alan Modra  <amodra@gmail.com>
+2021-05-10  Dimitar Dimitrov  <dimitar@dinux.eu>
 
-	PR 24785
-	* elf32-ppc.c (_bfd_elf_ppc_set_arch): Sanity check .PPC.EMB.apuinfo
-	size before reading first word.
+	* elf32-pru.c (elf_backend_can_gc_sections): Define as 1.
 
-2019-07-02  Nick Clifton  <nickc@redhat.com>
+2021-05-08  Mike Frysinger  <vapier@gentoo.org>
 
-	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.
+	* doc/Makefile.am (html-local, bfd/index.html): New targets.
+	* doc/Makefile.in: Regenerate.
 
-2019-07-02  Nick Clifton  <nickc@redhat.com>
+2021-05-08  Mike Frysinger  <vapier@gentoo.org>
 
-	PR 24753
-	* compress.c (bfd_get_full_section_contents): Do not complain
-	about linker created sections that are larger than the file size.
+	* doc/Makefile.am (AM_MAKEINFOFLAGS): Define.
+	* doc/Makefile.in: Regenerate.
 
-2019-07-02  Christophe Lyon  <christophe.lyon@linaro.org>
+2021-05-07  ClÃ©ment Chigot  <clement.chigot@atos.net>
 
-	* 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.
+	* coff-rs6000.c (xcoff_dwsect_names): Add new DWARF
+	sections.
+	* coffgen.c (coff_pointerize_aux): Handle C_DWARF.
+	(coff_print_symbol): Likewise.
+	* libxcoff.h (XCOFF_DWSECT_NBR_NAMES): Update.
 
-2019-07-02  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+2021-05-07  Jan Beulich  <jbeulich@suse.com>
 
-	* elf32-arm.c (elf32_arm_gc_mark_extra_sections): Mark debug
-	sections when .text section contain secure entry functions
-	is marked.
+	* elf64-x86-64.c (x86_64_elf_howto_table): Set src_mask fields
+	to zero.
 
-2019-07-01  Nick Clifton  <nickc@redhat.com>
+2021-05-07  Alan Modra  <amodra@gmail.com>
 
-	PR 23839
-	* elf32-arm.c (elf32_arm_update_relocs): Do not include the
-	section VMA in the offset used to update exidx relocs.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
 
-2019-06-28  Nick Clifton  <nickc@redhat.com>
+2021-05-06  Stafford Horne  <shorne@gmail.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.
+	PR 27746
+	* elf32-or1k.c (PLT_ENTRY_SIZE_LARGE, PLT_MAX_INSN_COUNT,
+	OR1K_ADD, OR1K_ORI): New macros to help with plt creation.
+	(elf_or1k_link_hash_table): New field plt_count.
+	(elf_or1k_link_hash_entry): New field plt_index.
+	(elf_or1k_plt_entry_size): New function.
+	(or1k_write_plt_entry): Update to support variable size PLTs.
+	(or1k_elf_finish_dynamic_sections): Use new or1k_write_plt_entry
+	API.
+	(or1k_elf_finish_dynamic_symbol): Update to write large PLTs
+	when needed.
+	(allocate_dynrelocs): Use elf_or1k_plt_entry_size to account for
+	PLT size.
+
+2021-05-06  Stafford Horne  <shorne@gmail.com>
+
+	PR 21464
+	* elf32-or1k.c (or1k_elf_relocate_section): Relax R_OR1K_GOT16
+	overflow check if we have R_OR1K_GOT_AHI16 followed by
+	R_OR1K_GOT16.
+
+2021-05-06  Stafford Horne  <shorne@gmail.com>
+
+	PR 21464
+	* bfd-in2.h: Add BFD_RELOC_OR1K_GOT_AHI16 relocation.
+	* elf32-or1k.c (or1k_elf_howto_table, or1k_reloc_map): Likewise.
+	(or1k_final_link_relocate, or1k_elf_relocate_section,
+	or1k_elf_check_relocs): Likewise.
+	* libbfd.h (bfd_reloc_code_real_names): Likewise.
+	* reloc.c: Likewise.
+
+2021-05-06  Stafford Horne  <shorne@gmail.com>
+
+	PR 27624
+	* elf32-or1k.c (or1k_elf_adjust_dynamic_symbol): Change
+	condition used to cleanup plt entries to cleanup forced local
+	entries.
+
+2021-05-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27825
+	* elflink.c (elf_link_output_symstrtab): Always append ".COUNT"
+	to local symbols.
+
+2021-05-05  Alan Modra  <amodra@gmail.com>
+
+	* vms-lib.c (vms_traverse_index): Account for vms_kbn size when
+	sanity checking keylen.
+
+2021-05-04  Nick Clifton  <nickc@redhat.com>
+
+	* libbfd.c (bfd_malloc): Provide some documenation.  Treat a size
+	of 0 as 1.
+	(bfd_realloc): Likewise.
+	(bfd_zmalloc): Likewise.
+	(bfd_realloc_or_free): Provide some documentation.  Treat a size
+	of 0 as a request to free.
+	* libbfd-in.h (bfd_realloc): Remove prototype.
+	(bfd_realloc_or_free): Remove prototype.
+	(bfd_zmalloc): Remove prototype.
+	* libbfd.h: Regenerate.
 
-2019-06-28  Alan Modra  <amodra@gmail.com>
+2021-05-03  Jan Beulich  <jbeulich@suse.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.
+	* elf32-i386.c (elf_howto_table): Switch all 32-bit relocs to
+	complain_overflow_dont.
+	* elf64-x86-64.c (x86_64_elf_howto_table): Switch all 64-bit
+	relocs to complain_overflow_dont.
 
-2019-06-26  Nick Clifton  <nickc@redhat.com>
+2021-05-03  Alan Modra  <amodra@gmail.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.
+	* elf32-ppc.c (allocate_dynrelocs): Keep dyn_relocs for undefweak
+	symbols when -z dynamic-undefined-weak or when there are no
+	dynamic relocs in read-only sections and -z nodynamic-undefined-weak
+	is not given.
+	* elf64-ppc.c (allocate_dynrelocs): Likewise.
 
-2019-06-25  Jan Beulich  <jbeulich@suse.com>
+2021-05-03  Alan Modra  <amodra@gmail.com>
 
-	* elf-properties.c (elf_find_and_remove_property): Rename last
-	parameter. Mention it in comment.
+	* elf32-ppc.c (allocate_dynrelocs): Call ensure_undef_dynamic for
+	weak undefined symols that only appear on PLT relocs.
+	* elf64-ppc.c (allocate_dynrelocs): Likewise.
 
-2019-06-24  Ilia Diachkov  <ilia.diachkov@optimitech.com>
+2021-05-03  Alan Modra  <amodra@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 27755
+	* elf32-ppc.c (ppc_elf_inline_plt): Do increment rel in loop.
 
-2019-06-24  H.J. Lu  <hongjiu.lu@intel.com>
+2021-05-03  Alan Modra  <amodra@gmail.com>
 
-	PR ld/24721
-	* elf-properties.c (elf_merge_gnu_property_list): Remove the
-	property after reporting property removal.
+	* elf32-csky.c (is_mapping_symbol_name): New function.
+	(csky_elf_is_target_special_symbol): Likewise.
+	(csky_elf_maybe_function_sym): Likewise.
+	(bfd_elf32_bfd_is_target_special_symbol): Define.
+	(elf_backend_maybe_function_sym): Define.
 
-2019-06-23  Alan Modra  <amodra@gmail.com>
+2021-04-30  Nick Clifton  <nickc@redhat.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 27801
+	* mach-o.c (bfd_mach_o_core_fetch_environment): Use bfd_get_32 to
+	read 32-bit value.
 
-2019-06-23  Alan Modra  <amodra@gmail.com>
+2021-04-30  Nick Clifton  <nickc@redhat.com>
 
-	PR 24689
-	* elfcode.h (elf_object_p): Warning fix.
+	PR 27799
+	* elf32-xtensa.c (elf_xtensa_grok_prstatus): Check for core notes
+	that are too small.
 
-2019-06-21  Alan Modra  <amodra@gmail.com>
+2021-04-30  Nick Clifton  <nickc@redhat.com>
 
-	PR 24689
-	* elfcode.h (elf_object_p): Check type of e_shstrndx section.
+	PR 27797
+	* libbfd.c (bfd_realloc_or_free): Do not free a pointer than has
+	been realloc'ed to size 0.
 
-2019-06-19  Alan Modra  <amodra@gmail.com>
+2021-04-30  Nick Clifton  <nickc@redhat.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.
+	PR 27795
+	* coff-rs6000.c (_bfd_xcoff_read_ar_hdr): Check for invalid name
+	lengths.
 
-2019-06-19  Alan Modra  <amodra@gmail.com>
+2021-04-29  Nick Clifton  <nickc@redhat.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.
+	PR 27793
+	* som.c (som_slurp_symbol_table): Assign symbols without any scope
+	to the undefined section.
+	(som_decode_symclass): Check for a missing symbol section.
+	* syms.c (bfd_decode_symclass): Likewise.
 
-2019-06-17  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+2021-04-29  Nick Clifton  <nickc@redhat.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.
+	PR 27792
+	* som.c (som_slurp_string_table): Place a terminating NUL byte at
+	the end of the table.
+	(som_slurp_symbol_table): Check for an over-large offset into the
+	string string table.
 
-2019-06-14  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+2021-04-28  Nick Clifton  <nickc@redhat.com>
 
-	* elfnn-aarch64.c: Enable MOVW_PREL relocs for ELF32.
+	* elf.c (_bfd_elf_maybe_function_sym): Do not accept annobin
+	symbols as potential function symbols.
+	* elfnn-aarch64.c (elfNN_aarch64_maybe_function_sym): Likewise.
+	* elf64-ppc.c (ppc64_elf_maybe_function_sym): Likewise.
+	* elf32-arm.c (elf32_arm_maybe_function_sym): Likewise.
 
-2019-06-14  Alan Modra  <amodra@gmail.com>
+2021-04-26  Mike Frysinger  <vapier@gentoo.org>
 
-	* Makefile.in: Regenerate.
-	* configure: Regenerate.
+	* elf-bfd.h: Include stdlib.h.
 
-2019-06-14  Alan Modra  <amodra@gmail.com>
+2021-04-26  Jan Beulich  <jbeulich@suse.com>
 
-	* elf64-ppc.c: Fix comments involving paddi.
+	* elf32-i386.c (elf_howto_table): Switch R_386_PC16 to
+	complain_overflow_signed.
+	* elf64-x86-64.c (x86_64_elf_howto_table): Switch R_X86_64_PC16
+	to complain_overflow_signed.
 
-2019-06-12  Adam Lackorzymski  <adam@os.inf.tu-dresden.de>
+2021-04-23  Eric Botcazou  <ebotcazou@adacore.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.
+	* elf.c (special_sections_p): Add .persistent.bss.
 
-2019-06-10  Christos Zoulas  <christos@zoulas.com>
+2021-04-23  Jan Beulich  <jbeulich@suse.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.
+	* elf32-i386.c (elf_howto_table): R_386_TLS_DESC_CALL has zero
+	size field.
+	* elf64-x86-64.c (x86_64_elf_howto_table): R_X86_64_TLSDESC_CALL
+	has zero size field.
 
-2019-06-06  Sudakshina Das  <sudi.das@arm.com>
+2021-04-22  ClÃ©ment Chigot  <clement.chigot@atos.net>
 
-	* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Set
-	alignment of the new gnu property section.
+	* hash.c (struct bfd_strtab_hash): Remove xcoff field.
+	Add length_field_size field.
+	(_bfd_stringtab_init): Change prototype.
+	Adapt to new length_field_size.
+	(_bfd_xcoff_stringtab_init): Likewise.
+	(_bfd_stringtab_add): Likewise.
+	(_bfd_stringtab_emit): Likewise.
+	* libbfd-in.h (_bfd_xcoff_stringtab_init):
+	Change prototype.
+	* libbfd.h: Regenerate.
+	* xcofflink.c (_bfd_xcoff_bfd_link_hash_table_create):
+	Call _bfd_xcoff_stringtab_init with isxcoff64 value.
+
+2021-04-22  ClÃ©ment Chigot  <clement.chigot@atos.net>
+
+	* coff-rs6000.c (_bfd_xcoff_swap_aux_in): Add errors for
+	unsupported storage class or auxialiry entries.
+	Improve and adapt to new aux structures.
+	Add C_DWARF support.
+	(_bfd_xcoff_swap_aux_out): Likewise.
+	* coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Likewise.
+	(_bfd_xcoff64_swap_aux_out): Likewise.
+
+2021-04-21  Eli Zaretskii  <eliz@gnu.org>
+
+	PR 27760
+	* peXXigen.c (_bfd_XX_print_private_bfd_data_common): Add display
+	of IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP,
+	IMAGE_FILE_NET_RUN_FROM_SWAP and IMAGE_FILE_UP_SYSTEM_ONLY flags.
+	Decode the contents of the DllCharacteristics field.
 
-2019-06-06  Sudakshina Das  <sudi.das@arm.com>
+2021-04-21  Nick Clifton  <nickc@redhat.com>
 
-	* bfd-in.h: Change comment.
+	PR 27759
+	* srec.c (srec_read_section): Replace assertions with error
+	returns.
+
+2021-04-20  ClÃ©ment Chigot  <clement.chigot@atos.net>
+
+	PR binutils/21700
+	* reloc.c (BFD_RELOC_PPC_NEG): New relocation.
 	* 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.
+	* libbfd.h: Regenerate.
+	* coff-rs6000.c (_bfd_xcoff_reloc_type_lookup): Add
+	BFD_RELOC_PPC_NEG handler.
+	(xcoff_reloc_type_neg): Correctly substract addend.
+	* coff64-rs6000.c (xcoff64_howto_table): Add R_NEG_32
+	howto.
+	(xcoff64_rtype2howto): Add handler for R_NEG_32.
+	(xcoff64_reloc_type_lookup): Add BFD_RELOC_PPC_NEG handler.
+	* xcofflink.c (xcoff_need_ldrel_p): Check output section
+	for R_POS-like relocations. New argument added.
+	(xcoff_mark): Adapt to new xcoff_need_ldrel_p argument.
+	(xcoff_link_input_bfd): Likewise.
 
-2019-05-28  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+2021-04-16  Alan Modra  <amodra@gmail.com>
 
-	* elfxx-mips.c (mips_elf_calculate_relocation) <R_MIPS_PCHI16>:
-	Remove overflow check.
+	PR 27567
+	* coffcode.h (styp_to_sec_flags): Use an unsigned long styp_flags.
+	(coff_write_object_contents): Pass bfd to COFF_ENCODE_ALIGNMENT,
+	ignore alignment checks when return is false.  Formatting.
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+2021-04-15  Nelson Chu  <nelson.chu@sifive.com>
 
-	PR 24596
-	* cofflink.c (coff_link_check_archive_element): Don't assume
-	element is a coff object file after calling add_archive_element.
+	PR27584
+	* elfnn-riscv.c (riscv_elf_is_target_special_symbol): Added to
+	omit local and empty symbols since they usually generated to
+	mark the auipc instructions.
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+2021-04-15  Lifang Xia<lifang_xia@c-sky.com>
 
-	PR 24596
-	* elf32-microblaze.c (microblaze_elf_finish_dynamic_sections): Don't
-	attempt to set sh_entsize for excluded PLT section.
+	* elf32-csky.c (csky_elf_howto_table)
+	<R_CKCORE_PCREL_IMM16BY2>: Set special_function to
+	bfd_elf_generic_reloc.
+	<R_CKCORE_PCREL_IMM16BY4>: Likewise.
+	<R_CKCORE_PCREL_IMM10BY4>: Likewise.
+	<R_CKCORE_PCREL_IMM18BY2>: Likewise.
+	<R_CKCORE_PCREL_FLRW_IMM8BY4>: Likewise.
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+2021-04-14  H.J. Lu  <hongjiu.lu@intel.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.
+	PR binutils/27708
+	* elf.c (assign_file_positions_for_non_load_sections): Set
+	p_memsz to p_filesz for the loadable PT_NOTE segment.
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+2021-04-14  Frederic Cambus  <fred@statdns.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.
+	* elf.c (elfcore_grok_netbsd_note): Remove unneeded #ifdef
+	checks for NT_NETBSDCORE_AUXV and NT_NETBSDCORE_LWPSTATUS.
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+2021-04-14  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.
+	PR 27631
+	* elf32-metag.c (elf_metag_relocate_section): Don't use &hh->elf
+	when hh might be NULL, test for NULL first.
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+2021-04-14  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.
+	PR 27630
+	* elf32-arm.c (elf32_arm_size_stubs): Don't use &hash->root when
+	hash might be NULL, cast instead.
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+2021-04-13  ClÃ©ment Chigot  <clement.chigot@atos.net>
 
-	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.
+	* xcofflink.c (xcoff_link_check_ar_symbols): Update esym earlier.
 
-2019-05-28  Alan Modra  <amodra@gmail.com>
+2021-04-13  Nelson Chu  <nelson.chu@sifive.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.
+	* elfnn-riscv.c (riscv_version_mismatch): Do not report the warning
+	when the version of input or output is RISCV_UNKNOWN_VERSION, since
+	the extension is added implicitly.
+	* elfxx-riscv.c: Updated the obsolete comments.
+	(RISCV_UNKNOWN_VERSION): Moved to elfxx-riscv.h.
+	* elfxx-riscv.h (RISCV_UNKNOWN_VERSION): Added.
 
-2019-05-27  Alan Modra  <amodra@gmail.com>
+2021-04-12  Alan Modra  <amodra@gmail.com>
 
-	* elf.c (bfd_elf_set_group_contents): Exit on zero size section.
+	* elf-bfd.h (ENABLE_CHECKING): Define.
+	(elf_link_hash_lookup): Abort if wrong type of hash table.
+	* configure.ac (--enable-checking): Add support.
+	* config.in: Regenerate.
+	* configure: Regenerate.
 
-2019-05-27  Alan Modra  <amodra@gmail.com>
+2021-04-12  Alan Modra  <amodra@gmail.com>
 
-	PR 24596
-	* linker.c (_bfd_generic_link_output_symbols): Heed BSF_KEEP.
+	* elf-bfd.h (is_elf_hash_table): Convert macro to inline function.
+	(elf_link_hash_lookup, elf_link_hash_traverse): Likewise.
+	(elf_hash_table, elf_hash_table_id): Likewise.
+	* elf32-arm.c (elf32_arm_setup_section_lists): Delete redundant
+	is_elf_hash_table check.
+	* elf32-csky.c (elf32_csky_setup_section_lists): Likewise.
+	* elf32-hppa.c (clobber_millicode_symbols): Correct param types.
+	* elf64-alpha.c (elf64_alpha_output_extsym): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_global_dyn_info_free: Likewise.
+	(elfNN_ia64_global_dyn_sym_thunk: Likewise.
+	* elf64-ia64-vms.c (elf64_ia64_global_dyn_info_free): Likewise.
+	(elf64_ia64_global_dyn_sym_thunk): Likewise.
+	(elf64_vms_link_add_object_symbols): Pass base type of hash table
+	to is_elf_hash_table.
+	* elflink.c (_bfd_elf_dynamic_symbol_p): Likewise.
+	(_bfd_elf_symbol_refs_local_p, _bfd_elf_add_dynamic_entry): Likewise.
+	(_bfd_elf_strip_zero_sized_dynamic_sections): Likewise.
+	(_bfd_elf_link_check_relocs, elf_link_add_object_symbols): Likewise.
+	(bfd_elf_final_link): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_setup_section_lists): Likewise.
+	* elf64-ppc.c (ppc64_elf_set_toc): Likewise.  Use bfd_link_hash_lookup.
 
-2019-05-24  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+2021-04-12  Alan Modra  <amodra@gmail.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.
+	* elf-bfd.h (struct elf_backend_data): Return bfd_link_hash_entry*
+	from elf_backend_archive_symbol_lookup.
+	(_bfd_elf_archive_symbol_lookup): Return bfd_link_hash_entry*.
+	* elf64-ppc.c (ppc64_elf_archive_symbol_lookup): Likewise.  Check
+	we have a ppc_hash_table before accessing ppc_link_hash_entry
+	fields.
+	* elflink.c (_bfd_elf_archive_symbol_lookup): Return
+	bfd_link_hash_entry*.
+	(elf_link_add_archive_symbols): Adjust to suit.
+
+2021-04-12  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_parse_std_ext): Fixed the wrong versions of
+	i-ext when expanding g-ext.
+
+2021-04-12  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_ext_dont_care_version): Removed.
+	(riscv_parse_add_subset): Always add the implicit extensions, even if
+	their versions are RISCV_UNKNOWN_VERSION.
+	(riscv_parse_std_ext): Delay to add i-ext as the implicit extension
+	in the riscv_parse_add_implicit_subsets.  Besides, add g-ext as the
+	implicit extension after it has been expanded.
+	(riscv_parse_add_implicit_subsets): Updated.
+
+2021-04-12  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_std_z_ext_strtab): Moved forward.
+	(riscv_std_s_ext_strtab): Likewise.
+	(riscv_std_h_ext_strtab): Likewise.
+	(riscv_std_zxm_ext_strtab): Added for the zxm prefix.
+	(enum riscv_prefix_ext_class): Moved forward and renamed from
+	riscv_isa_ext_class.  Reorder them according to the parsing order,
+	since the enum values are used to check the orders in the
+	riscv_compare_subsets.
+	(struct riscv_parse_prefix_config): Moved forward and renamed from
+	riscv_parse_config_t.  Also removed the ext_valid_p field, the
+	related functions are replaced by riscv_valid_prefixed_ext.
+	(parse_config): Moved forward and updated.  The more letters of the
+	prefix string, the more forward it must be defined.  Otherwise, we
+	will get the wrong mapping when using strncmp in riscv_get_prefix_class.
+	(riscv_get_prefix_class): Moved forward.  Support to parse the
+	multi-letter prefix, like zxm.
+	(riscv_known_prefixed_ext): New function, check if the prefixed
+	extension is supported according to the right riscv_std_*_ext_strtab.
+	(riscv_valid_prefixed_ext): New function, used to replace the
+	riscv_ext_*_valid_p functions.
+	(riscv_init_ext_order): Do not set the values for prefix keywords
+	since they may have multiple letters for now.
+	(riscv_compare_subsets): Set the order values of prefix keywords
+	to negative numbers according to the riscv_prefix_ext_class.
+	(riscv_parse_std_ext): Call riscv_get_prefix_class to see if we
+	have parsed the prefixed extensions.
+	(riscv_parse_prefixed_ext): Updated and removed the parameter config.
+	Report error when the prefix is unknown.
+	(riscv_parse_subset): Do not parse the prefixed extensions according
+	to the orders in the parse_config.  Remove the confused message and
+	let riscv_parse_prefixed_ext to report the details.
+	* elfxx-riscv.h (enum riscv_isa_ext_class): Moved to elfxx-riscv.c.
+	(riscv_get_prefix_class): Removed to static.
 
-2019-05-24  Alan Modra  <amodra@gmail.com>
+2021-04-08  Mike Frysinger  <vapier@gentoo.org>
 
-	* po/SRC-POTFILES.in: Regenerate.
+	* configure.ac (ACX_BUGURL): Use https://.
+	* configure.com (COPY_TEXT): Likewise.
+	* configure: Regenerate.
 
-2019-05-24  Alan Modra  <amodra@gmail.com>
+2021-04-05  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.
+	* configure.ac: Don't check for long long or long double type.
+	Don't check for alloca.h, limits.h, stddef.h, stdlib.h, string.h,
+	strings.h, time.h, wchar.h, wctype.h or sys/time.h.  Don't check
+	for strtoull, free, malloc, realloc, getenv, strstr, snprintf,
+	vsnprintf, strlen or setitimer.  Sort AC_CHECK_DECLS.
+	(AC_ISC_POSIX): Don't invoke.
+	(AC_HEADER_TIME, AC_HEADER_DIRENT, ACX_HEADER_STRING): Likewise.
+	* sysdep.h: Remove many HAVE_*_H checks and fallback declarations.
+	Do test HAVE_SYS_TYPES_H.  Don't include sys/time.h.  Reorder
+	header order as per automake AC_INCLUDES_DEFAULT.
+	* bfd-in.h: Include inttypes.h unconditionally.
+	* bfd.c (_bfd_doprnt, _bfd_doprnt_scan): Assume long long and
+	long double are available.
+	(bfd_scan_vma): Assume long long and strtoull are available.
+	* elflink.c: Include limits.h unconditionally.
+	* elfnn-riscv.c: Likewise.
+	* wasm-module.c: Likewise.
+	* hpux-core.c: Include dirent.h unconditionally.
+	* trad-core.c: Likewise.
+	* hosts/x86-64linux.h: Include stdlib.h unconditionally.
+	* peXXigen.c: Remove HAVE_WCHAR_H and HAVE_WCTYPE_H checks.
+	* elf32-m68hc1x.c: Don't include alloca-conf.h.
+	* elf64-hppa.c: Likewise.
+	* som.c: Likewise.
+	* wasm-module.c: Likewise.
+	* xsym.c: Likewise.
+	* bfd-in2.h: Regenerate.
+	* config.in: Regenerate.
+	* configure: Regenerate.
 
-2019-05-24  Alan Modra  <amodra@gmail.com>
+2021-04-01  Tamar Christina  <tamar.christina@arm.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.
+	PR ld/26659
+	* cofflink.c (_bfd_coff_generic_relocate_section): Ignore overflow.
 
-2019-05-24  Alan Modra  <amodra@gmail.com>
+2021-04-01  Martin Liska  <mliska@suse.cz>
 
-	* 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.
+	* ecoff.c (strneq): Remove strneq and use startswith.
+	(_bfd_ecoff_slurp_armap): Likewise.
+
+2021-04-01  Martin Liska  <mliska@suse.cz>
+
+	* elf-bfd.h (bfd_section_is_ctf): Use startswith function.
+	* elf.c (_bfd_elf_make_section_from_shdr): Likewise.
+	(elf_get_reloc_section): Likewise.
+	* elf32-arc.c (elf_arc_size_dynamic_sections): Likewise.
+	* elf32-m32r.c (m32r_elf_section_flags): Likewise.
+	* elf32-microblaze.c (microblaze_elf_size_dynamic_sections): Likewise.
+	* elf32-nds32.c (nds32_elf_size_dynamic_sections): Likewise.
+	(nds32_elf_relocate_section): Likewise.
+	(nds32_elf_action_discarded): Likewise.
+	(nds32_elf_check_relocs): Likewise.
+	(nds32_elf_section_flags): Likewise.
+	* elf32-or1k.c (or1k_elf_check_relocs): Likewise.
+	* elf32-ppc.c (ppc_elf_section_from_shdr): Likewise.
+	* elf32-rx.c (rx_table_find): Likewise.
+	(rx_table_map): Likewise.
+	* elf32-spu.c (spu_elf_backend_symbol_processing): Likewise.
+	(spu_elf_find_overlays): Likewise.
+	(needs_ovl_stub): Likewise.
+	(allocate_spuear_stubs): Likewise.
+	(build_spuear_stubs): Likewise.
+	(mark_overlay_section): Likewise.
+	(spu_elf_auto_overlay): Likewise.
+	(spu_elf_output_symbol_hook): Likewise.
+	* elf32-tilepro.c (tilepro_elf_size_dynamic_sections): Likewise.
+	* elf32-xtensa.c (xtensa_property_section_name): Likewise.
+	* elf64-ppc.c (ppc64_elf_section_flags): Likewise.
+	(ppc64_elf_relocate_section): Likewise.
+	* elflink.c (resolve_section): Likewise.
+	(UNARY_OP): Likewise.
+	(BINARY_OP_HEAD): Likewise.
+	(elf_link_input_bfd): Likewise.
+	* elfnn-riscv.c (riscv_elf_size_dynamic_sections): Likewise.
+	* elfxx-riscv.c (riscv_parse_subset): Likewise.
+	* elfxx-tilegx.c (tilegx_elf_size_dynamic_sections): Likewise.
+	* opncls.c (get_build_id): Likewise.
+
+2021-03-31  Alan Modra  <amodra@gmail.com>
+
+	PR 27671
+	* bfd-in.h: Don't poison FALSE or TRUE.
+	* bfd-in2.h: Regenerate.
+
+2021-03-31  Alan Modra  <amodra@gmail.com>
+
+	* sysdep.h: POISON_BFD_BOOLEAN: Define.
+	* aix5ppc-core.c, * aout-cris.c, * aout-ns32k.c, * aout-target.h,
+	* aoutx.h, * arc-got.h, * archive.c, * archive64.c, * archures.c,
+	* bfd-in.h, * bfd.c, * bfdwin.c, * binary.c, * cache.c,
+	* coff-alpha.c, * coff-arm.c, * coff-arm.h, * coff-bfd.c,
+	* coff-bfd.h, * coff-go32.c, * coff-i386.c, * coff-ia64.c,
+	* coff-mcore.c, * coff-mips.c, * coff-rs6000.c, * coff-sh.c,
+	* coff-stgo32.c, * coff-tic30.c, * coff-tic4x.c, * coff-tic54x.c,
+	* coff-x86_64.c, * coff-z80.c, * coff-z8k.c, * coff64-rs6000.c,
+	* coffcode.h, * coffgen.c, * cofflink.c, * compress.c,
+	* corefile.c, * cpu-aarch64.c, * cpu-aarch64.h, * cpu-alpha.c,
+	* cpu-arc.c, * cpu-arm.c, * cpu-arm.h, * cpu-avr.c, * cpu-bfin.c,
+	* cpu-bpf.c, * cpu-cr16.c, * cpu-cris.c, * cpu-crx.c,
+	* cpu-csky.c, * cpu-d10v.c, * cpu-d30v.c, * cpu-dlx.c,
+	* cpu-epiphany.c, * cpu-fr30.c, * cpu-frv.c, * cpu-ft32.c,
+	* cpu-h8300.c, * cpu-hppa.c, * cpu-i386.c, * cpu-ia64.c,
+	* cpu-iamcu.c, * cpu-ip2k.c, * cpu-iq2000.c, * cpu-k1om.c,
+	* cpu-l1om.c, * cpu-lm32.c, * cpu-m10200.c, * cpu-m10300.c,
+	* cpu-m32c.c, * cpu-m32r.c, * cpu-m68hc11.c, * cpu-m68hc12.c,
+	* cpu-m68k.c, * cpu-m9s12x.c, * cpu-m9s12xg.c, * cpu-mcore.c,
+	* cpu-mep.c, * cpu-metag.c, * cpu-microblaze.c, * cpu-mips.c,
+	* cpu-mmix.c, * cpu-moxie.c, * cpu-msp430.c, * cpu-mt.c,
+	* cpu-nds32.c, * cpu-nfp.c, * cpu-nios2.c, * cpu-ns32k.c,
+	* cpu-or1k.c, * cpu-pdp11.c, * cpu-pj.c, * cpu-powerpc.c,
+	* cpu-pru.c, * cpu-riscv.c, * cpu-rl78.c, * cpu-rs6000.c,
+	* cpu-rx.c, * cpu-s12z.c, * cpu-s390.c, * cpu-score.c,
+	* cpu-sh.c, * cpu-sparc.c, * cpu-spu.c, * cpu-tic30.c,
+	* cpu-tic4x.c, * cpu-tic54x.c, * cpu-tic6x.c, * cpu-tilegx.c,
+	* cpu-tilepro.c, * cpu-v850.c, * cpu-v850_rh850.c, * cpu-vax.c,
+	* cpu-visium.c, * cpu-wasm32.c, * cpu-xc16x.c, * cpu-xgate.c,
+	* cpu-xstormy16.c, * cpu-xtensa.c, * cpu-z80.c, * cpu-z8k.c,
+	* dwarf1.c, * dwarf2.c, * ecoff-bfd.h, * ecoff.c, * ecofflink.c,
+	* elf-attrs.c, * elf-bfd.h, * elf-eh-frame.c, * elf-hppa.h,
+	* elf-ifunc.c, * elf-m10200.c, * elf-m10300.c, * elf-nacl.c,
+	* elf-nacl.h, * elf-properties.c, * elf-s390-common.c,
+	* elf-s390.h, * elf-strtab.c, * elf-vxworks.c, * elf-vxworks.h,
+	* elf.c, * elf32-am33lin.c, * elf32-arc.c, * elf32-arm.c,
+	* elf32-arm.h, * elf32-avr.c, * elf32-avr.h, * elf32-bfin.c,
+	* elf32-bfin.h, * elf32-cr16.c, * elf32-cr16.h, * elf32-cris.c,
+	* elf32-crx.c, * elf32-csky.c, * elf32-csky.h, * elf32-d10v.c,
+	* elf32-d30v.c, * elf32-dlx.c, * elf32-epiphany.c,
+	* elf32-fr30.c, * elf32-frv.c, * elf32-ft32.c, * elf32-gen.c,
+	* elf32-h8300.c, * elf32-hppa.c, * elf32-hppa.h, * elf32-i386.c,
+	* elf32-ip2k.c, * elf32-iq2000.c, * elf32-lm32.c, * elf32-m32c.c,
+	* elf32-m32r.c, * elf32-m68hc11.c, * elf32-m68hc12.c,
+	* elf32-m68hc1x.c, * elf32-m68hc1x.h, * elf32-m68k.c,
+	* elf32-m68k.h, * elf32-mcore.c, * elf32-mep.c, * elf32-metag.c,
+	* elf32-metag.h, * elf32-microblaze.c, * elf32-mips.c,
+	* elf32-moxie.c, * elf32-msp430.c, * elf32-mt.c, * elf32-nds32.c,
+	* elf32-nios2.c, * elf32-nios2.h, * elf32-or1k.c, * elf32-pj.c,
+	* elf32-ppc.c, * elf32-ppc.h, * elf32-pru.c, * elf32-rl78.c,
+	* elf32-rx.c, * elf32-s12z.c, * elf32-s390.c, * elf32-score.c,
+	* elf32-score.h, * elf32-score7.c, * elf32-sh-relocs.h,
+	* elf32-sh.c, * elf32-sparc.c, * elf32-spu.c, * elf32-spu.h,
+	* elf32-tic6x.c, * elf32-tic6x.h, * elf32-tilegx.c,
+	* elf32-tilepro.c, * elf32-v850.c, * elf32-v850.h,
+	* elf32-vax.c, * elf32-visium.c, * elf32-wasm32.c,
+	* elf32-xc16x.c, * elf32-xgate.c, * elf32-xstormy16.c,
+	* elf32-xtensa.c, * elf32-z80.c, * elf64-alpha.c, * elf64-bpf.c,
+	* elf64-gen.c, * elf64-hppa.c, * elf64-ia64-vms.c,
+	* elf64-mips.c, * elf64-mmix.c, * elf64-nfp.c, * elf64-ppc.c,
+	* elf64-ppc.h, * elf64-s390.c, * elf64-sparc.c,
+	* elf64-tilegx.c, * elf64-x86-64.c, * elfcode.h,
+	* elfcore.h, * elflink.c, * elfn32-mips.c, * elfnn-aarch64.c,
+	* elfnn-ia64.c, * elfnn-riscv.c, * elfxx-aarch64.c,
+	* elfxx-aarch64.h, * elfxx-ia64.c, * elfxx-ia64.h,
+	* elfxx-mips.c, * elfxx-mips.h, * elfxx-riscv.c, * elfxx-riscv.h,
+	* elfxx-sparc.c, * elfxx-sparc.h, * elfxx-target.h,
+	* elfxx-tilegx.c, * elfxx-tilegx.h, * elfxx-x86.c, * elfxx-x86.h,
+	* format.c, * genlink.h, * hash.c, * i386aout.c, * i386lynx.c,
+	* i386msdos.c, * ihex.c, * libaout.h, * libbfd-in.h,
+	* libbfd.c, * libcoff-in.h, * libecoff.h, * libpei.h,
+	* libxcoff.h, * linker.c, * mach-o-aarch64.c, * mach-o-arm.c,
+	* mach-o-i386.c, * mach-o-x86-64.c, * mach-o.c, * mach-o.h,
+	* merge.c, * mmo.c, * netbsd.h, * opncls.c, * pc532-mach.c,
+	* pdp11.c, * pe-arm.c, * pe-i386.c, * pe-mcore.c, * pe-sh.c,
+	* pe-x86_64.c, * peXXigen.c, * pef.c, * pei-arm.c, * pei-i386.c,
+	* pei-ia64.c, * pei-mcore.c, * pei-sh.c, * pei-x86_64.c,
+	* peicode.h, * plugin.c, * plugin.h, * ppcboot.c, * reloc.c,
+	* reloc16.c, * rs6000-core.c, * section.c, * simple.c, * som.c,
+	* som.h, * srec.c, * stabs.c, * syms.c, * targets.c, * tekhex.c,
+	* verilog.c, * vms-alpha.c, * vms-lib.c, * vms-misc.c, * vms.h,
+	* wasm-module.c, * xcofflink.c, * xcofflink.h, * xsym.c,
+	* xsym.h: Replace bfd_boolean with bool, FALSE with false, and
+	TRUE with true throughout.
 	* bfd-in2.h: Regenerate.
 	* libbfd.h: Regenerate.
+	* libcoff.h: Regenerate.
+
+2021-03-31  Alan Modra  <amodra@gmail.com>
 
-2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>
+	* bfd-in.h: Include stdbool.h.
+	(bfd_boolean): Define as bool
+	* bfd-in2.h: Regenerate.
 
-	* 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.
+2021-03-31  Alan Modra  <amodra@gmail.com>
+
+	* .gitignore: Delete bfd_stdint.h entry.
+	* Makefile.am (bfdinclude_HEADERS): Delete bfd_stdint.h.
+	(BUILD_HFILES, LOCAL_H_DEPS): Likewise.
+	* bfd-in.h: Include stdint.h in place of bfd_stdint.h.
+	* configure.ac: Don't invoke GCC_HEADER_STDINT.
+	* configure.com: Don't create bfd_stdint.h.
+	* Makefile.in: Regenerate.
+	* aclocal.m4: Regenerate.
+	* bfd-in2.h: Regenerate.
+	* config.in: Regenerate.
 	* configure: Regenerate.
+	* doc/Makefile.in: Regenerate.
+	* po/BLD-POTFILES.in: Regenerate.
 
-2019-05-23  Jose E. Marchesi  <jose.marchesi@oracle.com>
+2021-03-31  Alan Modra  <amodra@gmail.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.
+	* bfd-in.h: Include string.h.
+	(LITMEMCPY, LITSTRCPY): Delete.
+	* bfd-in2.h: Regenerate.
 
-2019-05-22  Alan Modra  <amodra@gmail.com>
+2021-03-30  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (elf_link_add_object_symbols): Don't set h->indx
+	unless is_elf_hash_table.
+
+2021-03-29  Alan Modra  <amodra@gmail.com>
+
+	* aoutx.h (aout_link_write_symbols): Don't cast boolean expression
+	to bfd_boolean.
+	* elf32-or1k.c (or1k_set_got_and_rela_sizes): Dont compare booleans
+	against FALSE.
+	* elf32-arc.c (name_for_global_symbol): Don't compare boolean to TRUE.
+	(is_reloc_PC_relative): Don't use "boolean_condition ? TRUE : FALSE".
+	(is_reloc_SDA_relative, is_reloc_for_GOT): Likewise.
+	(is_reloc_for_PLT, is_reloc_for_TLS): Likewise.
+	* elf32-arm.c (stm32l4xx_need_create_replacing_stub): Likewise.
+	* elf32-nds32.c (insert_nds32_elf_blank): Likewise.
+	* elf32-rx.c (rx_set_section_contents): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_ignore_undef_symbol): Likewise.
+	* mach-o.c (bfd_mach_o_read_command): Likewise.
+	* targets.c (bfd_get_target_info): Likewise.
+
+2021-03-29  Alan Modra  <amodra@gmail.com>
+
+	* coff-z80.c (z80_is_local_label_name): Return bfd_boolean.
+	* elf32-z80.c (z80_is_local_label_name): Likewise.
+	* elf32-spu.c (spu_elf_modify_headers): Likewise.
+	* elf32-nds32.h (struct elf_nds32_link_hash_table <hyper_relax>):
+	Change type to int.
+	* vms-lib.c (_bfd_vms_lib_write_archive_contents): Correct test
+	for error return from vms_write_data_block.
+
+2021-03-29  Alan Modra  <amodra@gmail.com>
+
+	* elf32-i386.c (elf_i386_finish_local_dynamic_symbol): Return int.
+	* elf64-ia64-vms.c (elf64_ia64_local_dyn_info_free): Likewise.
+	(elf64_ia64_local_dyn_sym_thunk): Likewise.
+	* elf64-x86-64.c (elf_x86_64_finish_local_dynamic_symbol): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_allocate_local_ifunc_dynrelocs),
+	(elfNN_aarch64_finish_local_dynamic_symbol): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_local_dyn_info_free): Likewise.
+	(elfNN_ia64_local_dyn_sym_thunk): Likewise.
+	* elfnn-riscv.c (allocate_local_ifunc_dynrelocs): Likewise.
+	(riscv_pcrel_reloc_eq): Likewise.
+	(riscv_elf_finish_local_dynamic_symbol): Likewise.
+	* elfxx-sparc.c (allocate_local_dynrelocs): Likewise.
+	(finish_local_dynamic_symbol): Likewise.
+	* elfxx-x86.c (elf_x86_allocate_local_dynreloc): Likewise.
+	* elfxx-mips.c (mips_elf_resolve_got_page_ref): Likewise.
+	(mips_elf_count_got_symbols): Change return type to bfd_boolean.
+
+2021-03-29  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (elf_link_output_symstrtab): Make flinfo parameter
+	a void pointer.
+	(bfd_elf_final_link): Delete out_sym_func typedef and don't cast
+	elf_link_output_symstrtab when calling output_arch_syms and
+	output_arch_local_syms.
+	* elf-bfd.h (struct elf_backend_data <elf_backend_output_arch_syms,
+	elf_backend_output_arch_local_syms>): Change return type of func
+	arg to match elf_link_output_symstrtab.
+	* elf-vxworks.h (elf_vxworks_link_output_symbol_hook): Correct
+	return type.
+	* elf32-nds32.c (nds32_elf_output_symbol_hook): Correct return type.
+	(nds32_elf_output_arch_syms): Correct func return type.
+
+2021-03-29  Alan Modra  <amodra@gmail.com>
+
+	* elf-m10200.c (mn10200_elf_relocate_section): Return int.
+	* elf-m10300.c (mn10300_elf_relocate_section): Likewise.
+	* elf32-arc.c (elf_arc_relocate_section): Likewise.
+	* elf32-arm.c (elf32_arm_relocate_section): Likewise.
+	* elf32-avr.c (elf32_avr_relocate_section): Likewise.
+	* elf32-bfin.c (bfin_relocate_section): Likewise.
+	(bfinfdpic_relocate_section): Likewise.
+	* elf32-cr16.c (elf32_cr16_relocate_section): Likewise.
+	* elf32-cris.c (cris_elf_relocate_section): Likewise.
+	* elf32-crx.c (elf32_crx_relocate_section): Likewise.
+	* elf32-csky.c (csky_elf_relocate_section): Likewise.
+	* elf32-d10v.c (elf32_d10v_relocate_section): Likewise.
+	* elf32-epiphany.c (epiphany_elf_relocate_section): Likewise.
+	* elf32-fr30.c (fr30_elf_relocate_section): Likewise.
+	* elf32-frv.c (elf32_frv_relocate_section): Likewise.
+	* elf32-ft32.c (ft32_elf_relocate_section): Likewise.
+	* elf32-h8300.c (elf32_h8_relocate_section): Likewise.
+	* elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
+	* elf32-i386.c (elf_i386_relocate_section): Likewise.
+	* elf32-ip2k.c (ip2k_elf_relocate_section): Likewise.
+	* elf32-iq2000.c (iq2000_elf_relocate_section): Likewise.
+	* elf32-lm32.c (lm32_elf_relocate_section): Likewise.
+	* elf32-m32c.c (m32c_elf_relocate_section): Likewise.
+	* elf32-m32r.c (m32r_elf_relocate_section): Likewise.
+	* elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Likewise.
+	* elf32-m68hc1x.h (elf32_m68hc11_relocate_section): Likewise.
+	* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
+	* elf32-mcore.c (mcore_elf_relocate_section): Likewise.
+	* elf32-mep.c (mep_elf_relocate_section): Likewise.
+	* elf32-metag.c (elf_metag_relocate_section): Likewise.
+	* elf32-microblaze.c (microblaze_elf_relocate_section): Likewise.
+	* elf32-moxie.c (moxie_elf_relocate_section): Likewise.
+	* elf32-msp430.c (elf32_msp430_relocate_section): Likewise.
+	* elf32-mt.c (mt_elf_relocate_section): Likewise.
+	* elf32-nds32.c (nds32_elf_relocate_section): Likewise.
+	* elf32-nios2.c (nios2_elf32_relocate_section): Likewise.
+	* elf32-or1k.c (or1k_elf_relocate_section): Likewise.
+	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
+	* elf32-pru.c (pru_elf32_relocate_section): Likewise.
+	* elf32-rl78.c (rl78_elf_relocate_section): Likewise.
+	* elf32-rx.c (rx_elf_relocate_section): Likewise.
+	* elf32-s390.c (elf_s390_relocate_section): Likewise.
+	* elf32-score.c (s3_bfd_score_elf_relocate_section): Likewise.
+	(_bfd_score_elf_relocate_section): Likewise.
+	* elf32-score.h (s7_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-tic6x.c (elf32_tic6x_relocate_section): Likewise.
+	* elf32-tilepro.c (tilepro_elf_relocate_section): Likewise.
+	* elf32-v850.c (v850_elf_relocate_section): Likewise.
+	* elf32-vax.c (elf_vax_relocate_section): Likewise.
+	* elf32-visium.c (visium_elf_relocate_section): Likewise.
+	* elf32-xc16x.c (elf32_xc16x_relocate_section): Likewise.
+	* elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise.
+	* elf32-xtensa.c (elf_xtensa_relocate_section): Likewise.
+	* elf32-z80.c (z80_elf_relocate_section): Likewise.
+	* elf64-alpha.c (elf64_alpha_relocate_section_r): Likewise.
+	(elf64_alpha_relocate_section): Likewise.
+	* elf64-bpf.c (bpf_elf_relocate_section): Likewise.
+	* elf64-hppa.c (elf64_hppa_relocate_section): Likewise.
+	* elf64-ia64-vms.c (elf64_ia64_relocate_section): Likewise.
+	* elf64-mmix.c (mmix_elf_relocate_section): Likewise.
+	* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
+	* elf64-s390.c (elf_s390_relocate_section): Likewise.
+	* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_relocate_section): Likewise.
+	* elfnn-ia64.c (elfNN_ia64_relocate_section): Likewise.
+	* elfnn-riscv.c (riscv_elf_relocate_section): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_relocate_section): Likewise.
+	* elfxx-mips.h (_bfd_mips_elf_relocate_section): Likewise.
+	* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Likewise.
+	* elfxx-sparc.h (_bfd_sparc_elf_relocate_section): Likewise.
+	* elfxx-tilegx.c (tilegx_elf_relocate_section): Likewise.
+	* elfxx-tilegx.h (tilegx_elf_relocate_section): Likewise.
+
+2021-03-26  Keith Seitz  <keiths@redhat.com>
+
+	* elfcore.h (_bfd_elf_core_find_build_id): Seek file
+	offset of program headers after calling elf_read_notes.
+
+2021-03-23  Jan Beulich  <jbeulich@suse.com>
+
+	* dwarf2.c (read_indexed_string): Rename index to idx.
+
+2021-03-22  Martin Liska  <mliska@suse.cz>
+
+	* bfd-in.h (startswith): Add startswith function.
+	(CONST_STRNEQ): Remove.
+	* bfd-in2.h (startswith): Regenerate with make headers.
+	* archive.c (bfd_slurp_armap): Replace usage of CONST_STRNEQ with startswith.
+	(_bfd_slurp_extended_name_table): Likewise.
+	* archive64.c (_bfd_archive_64_bit_slurp_armap): Likewise.
+	* bfd.c (bfd_get_sign_extend_vma): Likewise.
+	(bfd_convert_section_size): Likewise.
+	(bfd_convert_section_contents): Likewise.
+	* coff-stgo32.c (go32exe_create_stub): Likewise.
+	(go32exe_check_format): Likewise.
+	* coffcode.h (styp_to_sec_flags): Likewise.
+	(GNU_DEBUGALTLINK): Likewise.
+	* coffgen.c (_bfd_coff_section_already_linked): Likewise.
+	(coff_gc_sweep): Likewise.
+	(bfd_coff_gc_sections): Likewise.
+	* cofflink.c (coff_link_add_symbols): Likewise.
+	(process_embedded_commands): Likewise.
+	* compress.c (bfd_is_section_compressed_with_header): Likewise.
+	(bfd_init_section_decompress_status): Likewise.
+	* dwarf2.c (find_debug_info): Likewise.
+	(place_sections): Likewise.
+	* ecoff.c (_bfd_ecoff_slurp_armap): Likewise.
+	* elf-m10300.c (_bfd_mn10300_elf_size_dynamic_sections): Likewise.
+	* elf.c (_bfd_elf_make_section_from_shdr): Likewise.
+	(assign_section_numbers): Likewise.
+	(elfcore_grok_win32pstatus): Likewise.
+	* elf32-arm.c (cmse_scan): Likewise.
+	(elf32_arm_gc_mark_extra_sections): Likewise.
+	(elf32_arm_size_dynamic_sections): Likewise.
+	(is_arm_elf_unwind_section_name): Likewise.
+	* elf32-bfin.c (bfin_size_dynamic_sections): Likewise.
+	* elf32-cr16.c (_bfd_cr16_elf_size_dynamic_sections): Likewise.
+	* elf32-cris.c (elf_cris_size_dynamic_sections): Likewise.
+	* elf32-csky.c (csky_elf_size_dynamic_sections): Likewise.
+	* elf32-hppa.c (elf32_hppa_size_dynamic_sections): Likewise.
+	* elf32-iq2000.c (iq2000_elf_check_relocs): 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-metag.c (elf_metag_size_dynamic_sections): Likewise.
+	* elf32-msp430.c (msp430_elf_relax_delete_bytes): Likewise.
+	* elf32-nios2.c (nios2_elf32_size_dynamic_sections): Likewise.
+	* elf32-or1k.c (or1k_elf_size_dynamic_sections): Likewise.
+	* elf32-ppc.c (ppc_elf_size_dynamic_sections): Likewise.
+	* elf32-s390.c (elf_s390_size_dynamic_sections): Likewise.
+	* elf32-score.c (s3_bfd_score_elf_size_dynamic_sections): Likewise.
+	* elf32-score7.c (s7_bfd_score_elf_size_dynamic_sections): Likewise.
+	* elf32-sh.c (sh_elf_size_dynamic_sections): Likewise.
+	* elf32-tic6x.c (is_tic6x_elf_unwind_section_name): Likewise.
+	(elf32_tic6x_size_dynamic_sections): Likewise.
+	* elf32-vax.c (elf_vax_size_dynamic_sections): Likewise.
+	* elf32-xtensa.c (elf_xtensa_size_dynamic_sections): Likewise.
+	(xtensa_is_insntable_section): Likewise.
+	(xtensa_is_littable_section): Likewise.
+	(xtensa_is_proptable_section): Likewise.
+	(xtensa_property_section_name): Likewise.
+	(xtensa_callback_required_dependence): Likewise.
+	* elf64-alpha.c (elf64_alpha_size_dynamic_sections): Likewise.
+	* elf64-hppa.c (elf64_hppa_size_dynamic_sections): Likewise.
+	* elf64-ia64-vms.c (is_unwind_section_name): Likewise.
+	(get_reloc_section): Likewise.
+	(elf64_ia64_size_dynamic_sections): Likewise.
+	(elf64_ia64_object_p): Likewise.
+	* elf64-mmix.c (mmix_elf_add_symbol_hook): Likewise.
+	* elf64-ppc.c (ppc64_elf_size_dynamic_sections): Likewise.
+	* elf64-s390.c (elf_s390_size_dynamic_sections): Likewise.
+	* elflink.c (elf_link_add_object_symbols): Likewise.
+	(_bfd_elf_gc_mark_extra_sections): Likewise.
+	(bfd_elf_parse_eh_frame_entries): Likewise.
+	(_bfd_elf_section_already_linked): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_size_dynamic_sections): Likewise.
+	* elfnn-ia64.c (is_unwind_section_name): Likewise.
+	(elfNN_ia64_size_dynamic_sections): Likewise.
+	(elfNN_ia64_object_p): Likewise.
+	* elfxx-mips.c (FN_STUB_P): Likewise.
+	(CALL_STUB_P): Likewise.
+	(CALL_FP_STUB_P): Likewise.
+	(_bfd_mips_elf_section_from_shdr): Likewise.
+	(_bfd_mips_elf_fake_sections): Likewise.
+	(_bfd_mips_elf_size_dynamic_sections): Likewise.
+	(_bfd_mips_final_write_processing): Likewise.
+	(_bfd_mips_elf_final_link): Likewise.
+	* elfxx-sparc.c (_bfd_sparc_elf_size_dynamic_sections): Likewise.
+	* elfxx-x86.c (elf_i386_is_reloc_section): Likewise.
+	(elf_x86_64_is_reloc_section): Likewise.
+	* hpux-core.c (thread_section_p): Likewise.
+	* libcoff.h (bfd_pei_p): Likewise.
+	* linker.c (REAL): Likewise.
+	(unwrap_hash_lookup): Likewise.
+	(_bfd_generic_link_add_one_symbol): Likewise.
+	* mmo.c (mmo_internal_write_section): Likewise.
+	* osf-core.c (osf_core_core_file_p): Likewise.
+	* pef.c (bfd_pef_print_symbol): Likewise.
+	* pei-x86_64.c (pex64_print_all_pdata_sections): Likewise.
+	* som.c (som_slurp_symbol_table): Likewise.
+	(som_slurp_armap): Likewise.
+	* wasm-module.c (wasm_compute_custom_section_file_position): Likewise.
 
-	* elf32-arm.c (arm_allocate_glue_section_space): Clear section
-	contents.
+2021-03-22  Jan Beulich  <jbeulich@suse.com>
 
-2019-05-22  Alan Modra  <amodra@gmail.com>
+	* peXXigen.c (_bfd_XXi_swap_scnhdr_out): Add missing
+	language translation wrapping to _bfd_error_handler()
+	invocations.
 
-	* vms-alpha.c (_bfd_vms_write_etir): Don't attempt further
-	processing on "size error in section".
+2021-03-21  Alan Modra  <amodra@gmail.com>
 
-2019-05-22  Alan Modra  <amodra@gmail.com>
+	* bfd-in.h (startswith): New inline.
+	(CONST_STRNEQ): Use startswith.
+	* bfd-in2.h: Regenerate.
 
-	* som.c (som_bfd_free_cached_info): Call
-	_bfd_generic_close_and_cleanup.
+2021-03-20  Alan Modra  <amodra@gmail.com>
 
-2019-05-21  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+	PR 27590
+	* elf.c (_bfd_elf_make_section_from_shdr): Remove SHF_EXCLUDE
+	test for .gnu.debuglto*.
 
-	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Generate error
-	for TLS_TPREL_HI16(/LO16) relocations in shared library.
+2021-03-18  H.J. Lu  <hongjiu.lu@intel.com>
 
-2019-05-21  Faraz Shahbazker  <fshahbazker@wavecomp.com>
+	PR ld/27590
+	* elf.c (_bfd_elf_make_section_from_shdr): Treat
+	.gnu.debuglto_.debug_ section as debugging section unless it is
+	marked with SHF_EXCLUDE.
+	* elflink.c (elf_create_symbuf): Revert commit 994b2513281.
+	(bfd_elf_match_symbols_in_sections): Ignore section symbols when
+	matching non-debugging sections or linkonce section with comdat
+	section.
 
-	* elfxx-mips.c (_bfd_mips_elf_check_relocs): Add NULL pointer
-	checks.  Search the RELA table for n64 relocations.
+2021-03-18  H.J. Lu  <hongjiu.lu@intel.com>
 
-2019-05-21  Matthew Fortune  <matthew.fortune@mips.com>
-	    Faraz Shahbazker  <fshahbazker@wavecomp.com>
+	PR ld/27587
+	* dwarf2.c (read_attribute_value): Check version >= 3 for
+	DW_FORM_ref_addr.
 
-	* 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.
+2021-03-16  Nick Clifton  <nickc@redhat.com>
 
-2019-05-21  Tamar Christina  <tamar.christina@arm.com>
+	* peXXigen.c (_bfd_XXi_swap_aux_out): Avoid potential buffer
+	overrun by using sizeof of the destination x_fname field as the
+	limit for a memcpy.
 
-	PR ld/24373
-	* elfnn-aarch64.c (_bfd_aarch64_erratum_843419_branch_to_stub):
-	Fix print formatter.
+2021-03-16  Kuan-Lin Chen  <kuanlinchentw@gmail.com>
 
-2019-05-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+	* elfxx-riscv.c (riscv_std_z_ext_strtab): Add zba, zbb and zbc.
 
-	PR 24460
-	* elf32-arm.c (get_value_helper): Remove.
-	(elf32_arm_final_link_relocate): Fix branch future relocations.
+2021-03-12  ClÃ©ment Chigot  <clement.chigot@atos.net>
 
-2019-05-21  Tamar Christina  <tamar.christina@arm.com>
+	* reloc.c (BFD_RELOC_PPC_TLS_LE, BFD_RELOC_PPC_TLS_IE,
+	BFD_RELOC_PPC_TLS_M, BFD_RELOC_PPC_TLS_ML, BFD_RELOC_PPC64_TLS_GD,
+	BFD_RELOC_PPC64_TLS_LD, BFD_RELOC_PPC64_TLS_LE,
+	BFD_RELOC_PPC64_TLS_IE, BFD_RELOC_PPC64_TLS_M,
+	BFD_RELOC_PPC64_TLS_ML): New relocations.
+	* bfd-in2.h: Regenerate.
+	* libbfd.h: Regenerate.
+	* coff-rs6000.c (xcoff_calculate_relocation): Call
+	xcoff_reloc_type_tls for TLS relocations.
+	(xcoff_howto_table): Implement TLS relocations.
+	(_bfd_xcoff_reloc_type_lookup): Add cases TLS relocations.
+	(xcoff_reloc_type_tls): New function.
+	* coff64-rs6000.c (xcoff_calculate_relocation): Likewise.
+	(xcoff_howto_table): Likewise.
+	(_bfd_xcoff_reloc_type_lookup): Likewise.
+	* coffcode.h (sec_to_styp_flags): Handle TLS sections.
+	(styp_to_sec_flags): Likewise.
+	(coff_compute_section_file_positions): Avoid file offset
+	optimisation for .data when the previous section is .tdata.
+	(coff_write_object_contents): Handle TLS sections.
+	* coffswap.h (coff_swap_aouthdr_out): Add support for
+	new fields in aouthdr.
+	* libxcoff.h (xcoff_reloc_type_tls): Add prototype.
+	* xcofflink.c (xcoff_link_add_symbols): Handle XMC_UL.
+	(xcoff_need_ldrel_p): Add cases for TLS relocations.
+	(xcoff_create_ldrel): Add l_symndx for TLS sections.
+
+2021-03-12  ClÃ©ment Chigot  <clement.chigot@atos.net>
 
-	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.
+	* reloc.c (BFD_RELOC_PPC_TOC16_HI, BFD_RELOC_PPC_TOC16_LO):
+	New relocations.
 	* 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.
+	* libbfd.h: Regenerate.
+	* coff-rs6000.c (xcoff_calculate_relocation): Call
+	xcoff_reloc_type_toc for R_TOCU and R_TOCL.
+	(xcoff_howto_table): Remove src_mask for TOC relocations.
+	Add R_TOCU and R_TOCL howtos.
+	(_bfd_xcoff_reloc_type_lookup): Add cases for
+	BFD_RELOC_PPC_TOC16_HI and BFD_RELOC_PPC_TOC16_LO.
+	(xcoff_reloc_type_toc): Compute the whole offset.
+	Implement R_TOCU and R_TOCL.
+	* coff64-rs6000.c (xcoff64_calculate_relocation):
+	Likewise.
+	(xcoff64_howto_table): Likewise.
+	(xcoff64_reloc_type_lookup): Likewise.
+
+2021-03-12  ClÃ©ment Chigot  <clement.chigot@atos.net>
+
+	* coff-rs6000.c (xcoff_calculate_relocation): Correct and
+	add new relocations.
+	(xcoff_howto_table): Likewise.
+	(xcoff_rtype2howto): Increase r_type maximum value.
+	(xcoff_ppc_relocate_section): Reuse predefined HOWTOs instead
+	of create a new one from scratch.  Enable only some relocations
+	to have a changing r_size.
+	* coff64-rs6000.c (xcoff64_calculate_relocation): Likewise.
+	(xcoff64_howto_table): Likewise.
+	(xcoff64_rtype2howto): Likewise.
+	(xcoff64_ppc_relocate_section): Likewise.
+	* libxcoff.h (XCOFF_MAX_CALCULATE_RELOCATION): Fix value.
+
+2021-03-12  ClÃ©ment Chigot  <clement.chigot@atos.net>
+
+	* coff64-rs6000.c (xcoff64_ppc_relocate_section): Move.
+
+2021-03-12  ClÃ©ment Chigot  <clement.chigot@atos.net>
+
+	* coff64-rs6000.c (xcoff64_write_object_contents): Remove.
+	* coffcode.h (coff_write_object_contents): Add bfd_mach_ppc_620
+	support for o_cputype field.  Avoid creating an empty a.out header
+	for XCOFF64.
+
+2021-03-12  ClÃ©ment Chigot  <clement.chigot@atos.net>
+
+	* coff64-rs6000.c (xcoff64_create_csect_from_smclas): Add
+	missing smclass.
+
+2021-03-11  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_elf_link_hash_table): New boolean
+	restart_relax, used to check if we need to run the whole
+	relaxations from relax pass 0 to 2 again.
+	(riscv_elf_link_hash_table_create): Init restart_relax to FALSE.
+	(_bfd_riscv_relax_align): Remove obsolete sec_flg0 set.
+	(_bfd_riscv_relax_delete): Set again to TRUE if we do delete the code.
+	(bfd_elfNN_riscv_restart_relax_sections): New function.  Called by
+	after_allocation to check if we need to run the whole relaxations again.
+	(_bfd_riscv_relax_section): We will only enter into the relax pass 3
+	when the restart_relax is FALSE; At last set restart_relax to TRUE if
+	again is TRUE, too.
+	* elfxx-riscv.h (bfd_elf32_riscv_restart_relax_sections): Declaration.
+	(bfd_elf64_riscv_restart_relax_sections): Likewise.
+
+2021-03-10  Jan Beulich  <jbeulich@suse.com>
+
+	* cofflink.c (_bfd_coff_write_global_sym): Range-check symbol
+	offset.
+
+2021-03-10  Alan Modra  <amodra@gmail.com>
+	    Jan Beulich  <jbeulich@suse.com>
+
+	* elf.c (bfd_elf_generic_reloc): Make references between debug
+	sections use section relative values.
+
+2021-03-09  Jan Beulich  <jbeulich@suse.com>
+
+	* peXXigen.c (_bfd_XXi_swap_scnhdr_out): Diagnose out of range RVA.
+
+2021-03-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27425
+	PR ld/27432
+	* bfd.c (_bfd_get_link_info): New function.
+	* elf-bfd.h (output_elf_obj_tdata): Add link_info.
+	(elf_link_info): New.
+	* libbfd-in.h (_bfd_get_link_info): New prototype.
+	* coff-x86_64.c (coff_amd64_reloc): Also subtract __ImageBase for
+	R_AMD64_IMAGEBASE when generating x86-64 ELF executable.
+	* pe-x86_64.c: Include "coff/internal.h" and "libcoff.h".
+	(pex64_link_add_symbols): New function.
+	(coff_bfd_link_add_symbols): New macro.
+	* libbfd.h: Regenerated.
 
-2019-05-20  Nick Clifton  <nickc@redhat.com>
+2021-03-05  Craig Blackmore  <craig.blackmore@embecosm.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* po/fr.po: Updated French translation.
+	* elf-bfd.h (elfcore_write_riscv_csr): Declare.
+	* elf.c (elfcore_grok_riscv_csr): New function.
+	(elfcore_grok_note): Handle NT_RISCV_CSR.
+	(elfcore_write_riscv_csr): New function.
+	(elfcore_write_register_note): Handle '.reg-riscv-csr'.
 
-2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+2021-03-05  Craig Blackmore  <craig.blackmore@embecosm.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* elf32-arm.c (elf32_arm_merge_eabi_attributes): Add case for Tag_MVE_arch.
+	* elfnn-riscv.c (PRPSINFO_PR_FNAME_LENGTH): Define.
+	(PRPSINFO_PR_PSARGS_LENGTH): Define.
+	(riscv_write_core_note): New function.
+	(riscv_elf_grok_psinfo): Make use of two new length defines.
+	(elf_backend_write_core_note): Define.
 
-2019-05-16  Alan Modra  <amodra@gmail.com>
+2021-03-05  Craig Blackmore  <craig.blackmore@embecosm.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
 
-	* elf32-arm.c (elf32_arm_write_section): Revert last change.
+	* elf-bfd.h (elfcore_write_gdb_tdesc): Declare new function.
+	* elf.c (elfcore_grok_gdb_tdesc): New function.
+	(elfcore_grok_note): Handle NT_GDB_TDESC.
+	(elfcore_write_gdb_tdesc): New function.
+	(elfcore_write_register_note): Handle NT_GDB_TDESC.
 
-2019-05-15  Alan Modra  <amodra@gmail.com>
+2021-03-05  Nick Clifton  <nickc@redhat.com>
 
-	* elf32-arm.c (elf32_arm_write_section): Don't leave
-	error case of STM32L4XX_ERRATUM_BRANCH_TO_VENEER with
-	unitialised section contents.
+	PR 27521
+	* dwarf2.c (is_str_attr): Add DW_FORM_strx* forms.
+	(read_indexed_string): Placeholder function.
+	(read_attribute_value): Handle DW_FORM_strx* and DW_FORM_addrx*
+	forms.
 
-2019-05-14  Jamey Hicks  <jamey.hicks@gmail.com>
+2021-03-05  Alan Modra  <amodra@gmail.com>
 
-	PR 19921
-	* verilog.c: (VerilogDataWidth): New variable.
-	(verilog_write_record): Emit bytes in VerilogDataWidth bundles.
+	* reloc.c (bfd_perform_relocation): Revert 2021-01-12 and
+	2020-09-16 changes.
+	* coff-x86_64.c (coff_amd64_reloc): Do more or less the same
+	adjustments here instead.  Separate pc-relative adjustments
+	from symbol related adjustments.  Tidy comments and formatting.
 
-2019-05-08  Nick Clifton  <nickc@redhat.com>
+2021-03-04  Jan Beulich  <jbeulich@suse.com>
 
-	PR 24523
-	* elf32-m68k.c (elf32_m68k_merge_private_bfd_data): Return TRUE
-	rather than FALSE if encountering a non-ELF file.
+	* coffcode.h (sec_to_styp_flags): Don't set IMAGE_SCN_LNK_* in
+	final PE images.
 
-2019-05-06  Alan Modra  <amodra@gmail.com>
+2021-03-04  Alan Modra  <amodra@gmail.com>
 
-	* elf32-pj.c (pj_elf_reloc): Don't report undefined weak as an error.
+	* rs6000-core.c (rs6000coff_core_p): Correct prototype.
 
-2019-05-06  Alan Modra  <amodra@gmail.com>
+2021-03-03  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.
+	PR 27500
+	* elflink.c (_bfd_elf_gc_mark_rsec): Do special start/stop
+	processing not when start/stop symbol section is unmarked but
+	on first time a start/stop symbol is processed.
 
-2019-05-04  Alan Modra  <amodra@gmail.com>
+2021-03-03  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.
+	* reloc.c: Include x86_64.h rather than internal.h.
 
-2019-05-02  Nick Clifton  <nickc@redhat.com>
+2021-03-02  Nick Clifton  <nickc@redhat.com>
 
-	PR 24493
-	* coffcode.h (styp_to_sec_flags): Treat .gnu.debuglink and
-	.gnu.debugaltlink sections as debugging sections.
+	PR 27484
+	* dwarf2.c (scan_unit_for_symbols): Scan twice, once to accumulate
+	function and variable tags and a second time to resolve their
+	attributes.
 
-2019-04-30  Alan Modra  <amodra@gmail.com>
+2021-03-02  Nick Alcock  <nick.alcock@oracle.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.
+	* elf-strtab.c (_bfd_elf_strtab_str): Skip strings with zero refcount.
 
-2019-04-26  H.J. Lu  <hongjiu.lu@intel.com>
+2021-03-02  Alan Modra  <amodra@gmail.com>
 
-	PR ld/24486
-	* elflink.c (elf_link_output_extsym): Don't complain undefined
-	weak dynamic reference.
+	PR 27451
+	* elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Ignore synthesized
+	linker defined start/stop symbols when start_stop_gc.
 
-2019-04-25  Sudakshina Das  <sudi.das@arm.com>
+2021-03-02  Alan Modra  <amodra@gmail.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.
+	* elf64-ppc.c (ppc64_elf_relocate_section): Don't optimise got
+	indirect to pc-relative or toc-relative for undefined symbols.
 
-2019-04-22  Jim Wilson  <jimw@sifive.com>
+2021-03-01  Alan Modra  <amodra@gmail.com>
+	    Fangrui Song <maskray@google.com>
 
-	* elfnn-riscv.c (PRSTATUS_SIZE) [ARCH_SIZE==32]: Change from 0 to 204.
+	* elflink.c (_bfd_elf_gc_mark_rsec): Ignore synthesized linker
+	defined start/stop symbols when start_stop_gc.
+	(bfd_elf_gc_mark_dynamic_ref_symbol): Likewise.
+	(bfd_elf_define_start_stop): Don't modify ldscript_def syms.
+	* linker.c (bfd_generic_define_start_stop): Likewise.
 
-2019-04-19  Alan Modra  <amodra@gmail.com>
+2021-02-25  Alan Modra  <amodra@gmail.com>
 
-	* elf32-s12z.c (elf_backend_can_gc_sections): Don't define
+	PR 27441
+	* elf-bfd.h (struct elf_link_hash_entry): Add ref_ir_nonweak.
+	* elflink.c (elf_link_add_object_symbols): Set ref_ir_nonweak and
+	use when deciding an as-needed library should be loaded instead
+	of using the binding of the library definition.
 
-2019-04-17  H.J. Lu  <hongjiu.lu@intel.com>
+2021-02-24  Alan Modra  <amodra@gmail.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.
+	PR 27459
+	* coff-stgo32.c (go32exe_check_format): Sanity check size of
+	header to avoid a buffer overflow.
 
-2019-04-17  H.J. Lu  <hongjiu.lu@intel.com>
+2021-02-22  Alan Modra  <amodra@gmail.com>
 
-	PR ld/24458
-	* elfxx-x86.h (SYMBOL_DEFINED_NON_SHARED_P): Also check x86
-	linker_def.
+	* coff-rs6000.c (_bfd_xcoff_reloc_type_lookup): Remove BFD_RELOC_16.
+	* coff64-rs6000.c (xcoff64_reloc_type_lookup): Likewise.
 
-2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+2021-02-19  Nelson Chu  <nelson.chu@sifive.com>
 
-	* reloc.c (BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM): New internal
-	relocation.
-	* bfd-in2.h: Regenerate.
-	* libbfd.h: Likewise.
+	PR 27158
+	* elfnn-riscv.c (perform_relocation): Updated encoding macros.
+	(_bfd_riscv_relax_call): Likewise.
+	(_bfd_riscv_relax_lui): Likewise.
+	* elfxx-riscv.c (howto_table): Likewise.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2021-02-18  Nelson Chu  <nelson.chu@sifive.com>
 
-	* reloc.c (BFD_RELOC_ARM_THUMB_LOOP12): New.
-	* bfd-in2.h: Regenerated.
-	* libbfd.h: Regenerated.
+	* Makefile.am: Added cpu-riscv.h.
+	* Makefile.in: Regenerated.
+	* po/SRC-POTFILES.in: Regenerated.
+	* cpu-riscv.h: Added to support spec versions controlling.
+	Also added extern arrays and functions for cpu-riscv.c.
+	(enum riscv_spec_class): Define all spec classes here uniformly.
+	(struct riscv_spec): Added for all specs.
+	(RISCV_GET_SPEC_CLASS): Added to reduce repeated code.
+	(RISCV_GET_SPEC_NAME): Likewise.
+	(RISCV_GET_ISA_SPEC_CLASS): Added to get ISA spec class.
+	(RISCV_GET_PRIV_SPEC_CLASS): Added to get privileged spec class.
+	(RISCV_GET_PRIV_SPEC_NAME): Added to get privileged spec name.
+	* cpu-riscv.c (struct priv_spec_t): Replaced with struct riscv_spec.
+	(riscv_get_priv_spec_class): Replaced with RISCV_GET_PRIV_SPEC_CLASS.
+	(riscv_get_priv_spec_name): Replaced with RISCV_GET_PRIV_SPEC_NAME.
+	(riscv_priv_specs): Moved below.
+	(riscv_get_priv_spec_class_from_numbers): Likewise, updated.
+	(riscv_isa_specs): Moved from include/opcode/riscv.h.
+	* elfnn-riscv.c: Included cpu-riscv.h.
+	(riscv_merge_attributes): Initialize in_priv_spec and out_priv_spec.
+	* elfxx-riscv.c: Included cpu-riscv.h and opcode/riscv.h.
+	(RISCV_UNKNOWN_VERSION): Moved from include/opcode/riscv.h.
+	* elfxx-riscv.h: Removed extern functions to cpu-riscv.h.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2021-02-17  Alan Modra  <amodra@gmail.com>
 
-	* reloc.c (BFD_RELOC_THUMB_PCREL_BFCSEL): New relocation.
-	* bfd-in2.h: Regenerated.
-	* libbfd.h: Likewise.
+	* wasm-module.c: Guard include of limits.h.
+	(CHAR_BIT): Provide backup define.
+	(wasm_read_leb128): Use CHAR_BIT to size "result" in bits.
+	Correct signed overflow checking.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2021-02-17  Nelson Chu  <nelson.chu@sifive.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 27200
+	* elfnn-riscv.c (_bfd_riscv_elf_merge_private_bfd_data): Delay
+	copying the elf flags from input BFD to output BFD, until we have
+	checked if the input BFD has no code section or not.  Also fix the
+	problem that we only check the first section rather than the entire
+	sections for input BFD.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2021-02-16  Alan Modra  <amodra@gmail.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.
+	* libbfd.c (_bfd_read_unsigned_leb128): Avoid excessive shift.
+	(_bfd_safe_read_leb128, _bfd_read_signed_leb128): Likewise.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2021-02-15  Jan Beulich  <jbeulich@suse.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.
+	* doc/Makefile.am: Replace "cp -p" by "$(LN_S)".
+	* doc/Makefile.in: Re-generate.
 
-2019-04-15  Sudakshina Das  <sudi.das@arm.com>
+2021-02-15  Alan Modra  <amodra@gmail.com>
 
-	* reloc.c (BFD_RELOC_THUMB_PCREL_BRANCH5): New enum.
-	* bfd-in2.h: Regenerate.
-	* libbfd.h: Regenerate.
+	* elf32-nds32.c (nds32_get_section_contents): Replace
+	bfd_malloc_and_get_section with bfd_get_full_section_contents.
+	(nds32_elf_relax_delete_blanks): Init contents.
+	(nds32_elf_relax_section, nds32_relax_fp_as_gp): Likewise.
 
-2019-04-15  Thomas Preud'homme  <thomas.preudhomme@arm.com>
+2021-02-15  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.
-
-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.
+	* coff-alpha.c (alpha_ecoff_get_relocated_section_contents): Use
+	bfd_get_full_section_contents.
 
-2019-04-08  H.J. Lu  <hongjiu.lu@intel.com>
+2021-02-14  Alan Modra  <amodra@gmail.com>
 
-	* config.bfd: Remove i[3-7]86-*-kaos* and i[3-7]86-*-chaos targets.
+	* elfxx-mips.c (_bfd_elf_mips_get_relocated_section_contents): Apply
+	all fixes to bfd_generic_get_relocated_section_contents since this
+	function was split out.
 
-2019-04-08  Alan Modra  <amodra@gmail.com>
+2021-02-11  Alan Modra  <amodra@gmail.com>
 
-	* configure.ac (elfxx_x86): Define and use.
-	* configure: Regenerate.
+	* config.bfd: Remove ia64 from obsolete list.
+
+2021-02-11  Alan Modra  <amodra@gmail.com>
+
+	PR ld/22269
+	* elfnn-ia64.c: Revert 2017-10-14 git commit db41f6eb5234.
 
-2019-04-06  H.J. Lu  <hongjiu.lu@intel.com>
+2021-02-11  Alan Modra  <amodra@gmail.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>
+	PR 27294
+	* elf32-avr.c (avr_elf32_load_records_from_section): Use
+	bfd_malloc_and_get_section.  Use bfd_byte* vars and remove then
+	unnecessary casts.
 
-	* elf32-xtensa.c (shrink_dynamic_reloc_sections): Add
-	info->export_dynamic to the conditional.
+2021-02-11  Alan Modra  <amodra@gmail.com>
 
-2019-03-28  Alan Modra  <amodra@gmail.com>
+	PR 27291
+	* section.c (bfd_get_section_contents): Avoid possible overflow
+	when range checking offset and count.
+	(bfd_set_section_contents): Likewise.
 
-	PR 24392
-	* configure.ac: Invoke AC_CHECK_SIZEOF(int).
+2021-02-03  Nick Alcock  <nick.alcock@oracle.com>
+
+	* configure.ac (SHARED_LIBADD): Remove explicit -lintl population in
+	favour of LIBINTL.
+	* configure: Regenerated.
+
+2021-02-09  Alan Modra  <amodra@gmail.com>
+
+	* config.bfd (arm*-*-symbianelf*): Move from obsolete to removed.
+	* configure.ac: Delete symbian entries.
+	* elf-bfd.h (enum elf_target_os): Delete is_symbian.
+	* elf32-arm.c: Remove symbian support.  Formatting.
+	* targets.c: Delete symbian entries.
 	* 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>
+2021-02-04  H.J. Lu  <hongjiu.lu@intel.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.
+	PR ld/19609
+	* elf64-x86-64.c (elf_x86_64_relocate_section): Provide more
+	info when failed to convert GOTPCREL relocation.
 
-2019-03-18  Alan Modra  <amodra@gmail.com>
+2021-02-04  Nelson Chu  <nelson.chu@sifive.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.
+	* elfxx-riscv.c (riscv_parse_prefixed_ext): Removed zb*.
 
-2019-03-16  Alan Modra  <amodra@gmail.com>
+2021-02-04  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.
+	PR 27311
+	* elflink.c (elf_link_add_object_symbols): Don't pull in as-needed
+	libraries for IR references on pass over libraries after LTO
+	recompilation.
 
-2019-03-15  H.J. Lu  <hongjiu.lu@intel.com>
+2021-02-03  Alan Modra  <amodra@gmail.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.
+	PR 27311
+	* elflink.c (_bfd_elf_add_default_symbol): Revert last two changes.
+	(elf_link_add_object_symbols): Here too.  Don't pull in as-needed
+	libraries when H is an indirect symbol after calling
+	_bfd_elf_add_default_symbol.
 
-2019-03-15  Alan Modra  <amodra@gmail.com>
+2021-02-03  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.
+	PR 27311
+	* elflink.c (_bfd_elf_add_default_symbol): Clear override when
+	undecorated symbol will have a different version.
 
-2019-02-20  Michael Roitzsch  <reactorcontrol@icloud.com>
+2021-02-02  Alan Modra  <amodra@gmail.com>
 
-	* configure.ac (SHARED_LIBADD): Add -liberty -lintl for all
-	Darwin hosts, not just or1k.
-	* configure: Regenerate.
+	PR 27311
+	* elflink.c (_bfd_elf_add_default_symbol): Add override parameter.
+	Use when handling default versioned symbol.  Rename existing
+	override variable to nondef_override and use for non-default
+	versioned symbol.
+	(elf_link_add_object_symbols): Adjust call to suit.  Don't
+	pull in as-needed libraries when override is set.
 
-2019-02-20  Alan Modra  <amodra@gmail.com>
+2021-02-01  Emery Hemingway  <ehmry@posteo.net>
 
-	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.
+	* config.bfd: Add *-*-genode* as a target for AArch64 and x86.
 
-2019-02-19  Alan Modra  <amodra@gmail.com>
+2021-02-01  Egor Vishnyakov  <lenvampir@yandex.ru>
 
-	PR 24235
-	* pei-x86_64.c (pex64_bfd_print_pdata_section): Correct checks
-	attempting to prevent read past end of section.
+	PR 27254
+	* elf32-rl78.c (rl78_elf_relocate_section): Fix calculation of
+	offset for the R_RL78_RH_SADDR relocation.
 
-2019-02-18  Alan Modra  <amodra@gmail.com>
+2021-01-29  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.
+	PR 27271
+	* elflink.c (bfd_elf_link_record_dynamic_symbol): Don't segfault
+	on symbols defined in absolute or other special sections.
 
-2019-02-09  Vineet Gupta  <vgupta@synopsys.com>
+2021-01-28  Alan Modra  <amodra@gmail.com>
 
-	* elf32-arc (INIT_SYM_STRING): Delete.
-	(FINI_SYM_STRING): Likewise.
-	(init_str): Likewise.
-	(fini_str): Likewise.
+	PR 27259
+	* elflink.c (_bfd_elf_gc_mark_extra_sections): Use linker_mark to
+	prevent endless looping of linked-to sections.
 
-2019-02-08  Alan Modra  <amodra@gmail.com>
+2020-12-17  Mihails Strasuns  <mihails.strasuns@intel.com>
 
-	* elf32-ppc.c (ppc_elf_relocate_section): Add %X to "unsupported
-	for bss-plt" warning to make it an error.
+	* bfd-elf.h (elfcore_write_file_note): New function.
+	* elf.c (elfcore_write_file_note): New function.
 
-2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>
+2021-01-26  Alan Modra  <amodra@gmail.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.
+	* elf32-ft32.c (ft32_reloc_type_lookup): Don't miss ft32_reloc_map[0].
 
-2019-02-07  Eric Botcazou  <ebotcazou@adacore.com>
+2021-01-24  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* elf32-visium.c (visium_elf_howto_parity_reloc): Minor tweak.
-	<R_VISIUM_PC16>: Use explicit range test to detect an overflow.
+	PR binutils/27231
+	* dwarf2.c (read_rnglists): Ignore empty range when parsing line
+	number tables.
 
-2019-02-07  Nick Clifton  <nickc@redhat.com>
+2021-01-23  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* config.bfd: Move the powerpc-lynxos and powerpc-windiss targets
-	into the definitely obsolete list.
+	PR binutils/27231
+	* dwarf2.c (read_rnglists): Advance rngs_ptr after
+	_bfd_safe_read_leb128 when parsing DW_RLE_offset_pair.
 
-2019-02-05  H.J. Lu  <hongjiu.lu@intel.com>
+2021-01-20  Alan Modra  <amodra@gmail.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.
+	* elf32-ppc.c: Delete outdated comment.
+	(TARGET_KEEP_UNUSED_SECTION_SYMBOLS): Define.
+	* elf64-ppc.c (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): Define.
 
-2019-01-21  Sergio Durigan Junior  <sergiodj@redhat.com>
+2021-01-20  Alan Modra  <amodra@gmail.com>
 
-	* elf32-arm.c (elf32_arm_final_link_relocate): Use 'llabs' instead
-	of 'labs' (and fix GCC warning).
+	* elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Don't assume
+	section symbols are present.
 
-2019-01-25  Nick Clifton  <nickc@redhat.com>
+2021-01-19  Alan Modra  <amodra@gmail.com>
 
-	* po/ru.po: Updated Russian translation.
+	* elf64-ppc.c (elf_hash_entry): New inline function.  Use
+	throughout to replace casts.
+	(branch_reloc_hash_match): Remove const from params.
+	(use_local_plt): New function.
+	(allocate_dynrelocs, ppc_build_one_stub, ppc_size_one_stub),
+	(build_global_entry_stubs_and_plt, ppc64_elf_relocate_section):
+	Use use_local_plt.
+	* elf32-ppc.c (use_local_plt): New function.
+	(allocate_dynrelocs, ppc_elf_relocate_section),
+	(write_global_sym_plt): Use use_local_plt.
 
-2019-01-23  Nick Clifton  <nickc@redhat.com>
+2021-01-17  H.J. Lu  <hongjiu.lu@intel.com>
 
-	* po/fr.po: Updated French translation.
+	PR ld/27193
+	* elflink.c (elf_create_symbuf): Also ignore section symbols.
+
+2021-01-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/23169
+	* elfxx-x86.c (_bfd_x86_elf_link_fixup_ifunc_symbol): Don't
+	check pointer_equality_needed.
+
+2021-01-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-linker-x86.h (elf_linker_x86_params): Add
+	report_relative_reloc.
+	* elf32-i386.c (elf_i386_relocate_section): Call
+	_bfd_x86_elf_link_report_relative_reloc to report relative
+	relocations for -z report-relative-reloc.
+	(elf_i386_finish_dynamic_symbol): Likewse.
+	* elf64-x86-64.c (elf_x86_64_relocate_section): Likewse.
+	(elf_x86_64_finish_dynamic_symbol): Likewse.
+	* elfxx-x86.c (_bfd_x86_elf_link_report_relative_reloc): New
+	function.
+	* elfxx-x86.h (_bfd_x86_elf_link_report_relative_reloc): New
+	prototype.
+
+2021-01-16  Alan Modra  <amodra@gmail.com>
+
+	* compress.c (decompress_contents): Tidy inflateEnd result test.
+
+2021-01-16  Alan Modra  <amodra@gmail.com>
+
+	PR 26002
+	* elflink.c (elf_link_output_extsym): Use version 1 in
+	.gnu.version for undefined unversioned symbols.
+
+2021-01-15  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_relax_delete_bytes): Fixed the indent that
+	caused the by previous commit accidentally.
+
+2021-01-15  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c: Indent, labels and GNU coding standards tidy,
+	also aligned the code.
+
+2021-01-15  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_merge_attributes): Fix typos of messages.
+
+2021-01-15  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c: Comments tidy and improvement.
+	* elfxx-riscv.c: Likewise.
+	* elfxx-riscv.h: Likewise.
+
+2021-01-14  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26688
+	* elf32-bfin.c (bfinfdpic_relocate_section): Skip non SEC_ALLOC
+	section for R_BFIN_FUNCDESC.
+
+2021-01-14  Nick Clifton  <nickc@redhat.com>
+
+	* elf.c (elfcore_grok_win32pstatus): Check for a note type of 0.
+
+2021-01-13  Alan Modra  <amodra@gmail.com>
+
+	* Makefile.in: Regenerate.
+	* doc/Makefile.in: Regenerate.
+
+2021-01-13  Alan Modra  <amodra@gmail.com>
+
+	PR 27160
+	* section.c (struct bfd_section): Remove pattern field.
+	(BFD_FAKE_SECTION): Adjust to suit.
+	* bfd-in2.h: Regenerate.
+	* elflink.c (compare_link_order, elf_fixup_link_order): Delete.
+	(bfd_elf_final_link): Don't call elf_fixup_link_order.
+
+2021-01-12  H.J. Lu  <hongjiu.lu@intel.com>
 
-2019-01-21  Nick Clifton  <nickc@redhat.com>
+	PR binutils/26792
+	* configure.ac: Use GNU_MAKE_JOBSERVER.
+	* aclocal.m4: Regenerated.
+	* configure: Likewise.
 
+2021-01-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27171
+	* reloc.c (bfd_perform_relocation): Adjust R_AMD64_DIR64 and
+	R_AMD64_DIR32 relocations for PE/x86-64 inputs.
+
+2021-01-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27173
+	* configure: Regenerated.
+
+2021-01-11  Nick Clifton  <nickc@redhat.com>
+
+	* po/fr.po: Updated French translation.
 	* po/pt.po: Updated Portuguese translation.
+	* po/sr.po: Updated Serbian translation.
 	* po/uk.po: Updated Ukranian translation.
 
-2019-01-21  Yuri Chornoivan  <yurchor@ukr.net>
+2021-01-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* configure: Regenerated.
+
+2021-01-09  H.J. Lu  <hongjiu.lu@intel.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.
+	PR ld/27166
+	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Handle
+	-z lam-u48 and -z lam-u57.
 
-2019-01-19  Nick Clifton  <nickc@redhat.com>
+2021-01-09  Nick Clifton  <nickc@redhat.com>
 
-	* version.m4: Reset to 2.32.51
+	* version.m4: Change to 2.36.50.
 	* configure: Regenerate.
 	* po/bfd.pot: Regenerate.
 
-2018-06-24  Nick Clifton  <nickc@redhat.com>
+2021-01-09  Nick Clifton  <nickc@redhat.com>
+
+	* 2.36 release branch crated.
+
+2021-01-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Also set
+	LAM_U57 when setting LAM_U48.
+
+2021-01-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26256
+	PR ld/27160
+	* elflink.c (elf_fixup_link_order): Verify that fixing up
+	SHF_LINK_ORDER doesn't increase the output section size.
+
+2021-01-09  Alan Modra  <amodra@gmail.com>
+
+	* configure: Regenerate.
+
+2021-01-07  Samuel Thibault  <samuel.thibault@gnu.org>
+
+	* configure: Regenerate.
+
+2021-01-07  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR 27109
+	* aix386-core.c (core_aix386_vec): Initialize
+	keep_unused_section_symbol to TARGET_KEEP_UNUSED_SECTION_SYMBOLS.
+	* aout-target.h (MY (vec)): Likewise.
+	* binary.c (binary_vec): Likewise.
+	* cisco-core.c (core_cisco_be_vec): Likewise.
+	(core_cisco_le_vec): Likewise.
+	* coff-alpha.c (alpha_ecoff_le_vec): Likewise.
+	* coff-i386.c (TARGET_SYM): Likewise.
+	(TARGET_SYM_BIG): Likewise.
+	* coff-ia64.c (TARGET_SYM): Likewise.
+	* coff-mips.c (mips_ecoff_le_vec): Likewise.
+	(mips_ecoff_be_vec): Likewise.
+	(mips_ecoff_bele_vec): Likewise.
+	* coff-rs6000.c (rs6000_xcoff_vec): Likewise.
+	(powerpc_xcoff_vec): Likewise.
+	* coff-sh.c (sh_coff_small_vec): Likewise.
+	(sh_coff_small_le_vec): Likewise.
+	* coff-tic30.c (tic30_coff_vec): Likewise.
+	* coff-tic54x.c (tic54x_coff0_vec): Likewise.
+	(tic54x_coff0_beh_vec): Likewise.
+	(tic54x_coff1_vec): Likewise.
+	(tic54x_coff1_beh_vec): Likewise.
+	(tic54x_coff2_vec): Likewise.
+	(tic54x_coff2_beh_vec): Likewise.
+	* coff-x86_64.c (TARGET_SYM): Likewise.
+	(TARGET_SYM_BIG): Likewise.
+	* coff64-rs6000.c (rs6000_xcoff64_vec): Likewise.
+	(rs6000_xcoff64_aix_vec): Likewise.
+	* coffcode.h (CREATE_BIG_COFF_TARGET_VEC): Likewise.
+	(CREATE_BIGHDR_COFF_TARGET_VEC): Likewise.
+	(CREATE_LITTLE_COFF_TARGET_VEC): Likewise.
+	* elfxx-target.h (TARGET_BIG_SYM): Likewise.
+	(TARGET_LITTLE_SYM): Likewise.
+	* hppabsd-core.c (core_hppabsd_vec): Likewise.
+	* hpux-core.c (core_hpux_vec): Likewise.
+	* i386msdos.c (i386_msdos_vec): Likewise.
+	* ihex.c (ihex_vec): Likewise.
+	* irix-core.c (core_irix_vec): Likewise.
+	* mach-o-target.c (TARGET_NAME): Likewise.
+	* mmo.c (mmix_mmo_vec): Likewise.
+	* netbsd-core.c (core_netbsd_vec): Likewise.
+	* osf-core.c (core_osf_vec): Likewise.
+	* pdp11.c (MY (vec)): Likewise.
+	* pef.c (pef_vec): Likewise.
+	(pef_xlib_vec): Likewise.
+	* plugin.c (plugin_vec): Likewise.
+	* ppcboot.c (powerpc_boot_vec): Likewise.
+	* ptrace-core.c (core_ptrace_vec): Likewise.
+	* sco5-core.c (core_sco5_vec): Likewise.
+	* som.c (hppa_som_vec): Likewise.
+	* srec.c (srec_vec): Likewise.
+	(symbolsrec_vec): Likewise.
+	* tekhex.c (tekhex_vec): Likewise.
+	* trad-core.c (core_trad_vec): Likewise.
+	* verilog.c (verilog_vec): Likewise.
+	* vms-alpha.c (alpha_vms_vec): Likewise.
+	* vms-lib.c (alpha_vms_lib_txt_vec): Likewise.
+	* wasm-module.c (wasm_vec): Likewise.
+	* xsym.c (sym_vec): Likewise.
+	* elf.c (ignore_section_sym): Return TRUE if BSF_SECTION_SYM_USED
+	isn't set.
+	(elf_map_symbols): Don't include ignored section symbols.
+	* elfcode.h (elf_slurp_symbol_table): Also set
+	BSF_SECTION_SYM_USED on STT_SECTION symbols.
+	* elflink.c (bfd_elf_final_link): Generated section symbols only
+	when emitting relocations or reqired.
+	* elfxx-x86.h (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): New.
+	* syms.c (BSF_SECTION_SYM_USED): New.
+	* targets.c (TARGET_KEEP_UNUSED_SECTION_SYMBOLS): New.
+	(bfd_target): Add keep_unused_section_symbols.
+	(bfd_keep_unused_section_symbols): New.
+	* bfd-in2.h: Regenerated.
+
+2021-01-07  Nick Clifton  <nickc@redhat.com>
+
+	PR 25713
+	* bfdio.c (_bfd_real_fopen): For Win32 convert relative paths to
+	absolute paths and check to see if they are longer than MAX_PATH.
 
-	2.32 branch created.
+2021-01-07  Philipp Tomsich  <prt@gnu.org>
 
-2019-01-16  Kito Cheng  <kito@andestech.com>
+	* elfxx-riscv.c (riscv_std_z_ext_strtab): Added zihintpause.
 
-	* elf-attrs.c (vendor_obj_attr_size): Return 0 if size is 0 even
-	for OBJ_ATTR_PROC.
+2021-01-07  Claire Xenia Wolf  <claire@symbioticeda.com>
+	    Jim Wilson  <jimw@sifive.com>
+	    Andrew Waterman  <andrew@sifive.com>
+	    Maxim Blinov  <maxim.blinov@embecosm.com>
+	    Kito Cheng  <kito.cheng@sifive.com>
+	    Nelson Chu  <nelson.chu@sifive.com>
 
-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.
+	* elfxx-riscv.c (riscv_std_z_ext_strtab): Added zba, zbb and zbc.
 
-2019-01-14  Maamoun Tarsha  <maamountk@hotmail.com>
+2021-01-06  H.J. Lu  <hongjiu.lu@intel.com>
 
-	PR 20113
-	* elf32-s390.c (allocate_dynrelocs): Update comment.
+	* elf32-bfin.c (bfin_check_relocs): Check bfd_link_hash_indirect.
+	(bfinfdpic_check_relocs): Likewise.
 
-2019-01-09  Andrew Paprocki  <andrew@ishiboo.com>
+2021-01-06  Alan Modra  <amodra@gmail.com>
 
-	* warning.m4: Adjust egrep pattern for non-GNU compilers.
+	* elf32-score.c (s3_bfd_score_info_to_howto): Report an error
+	on unknown r_type.
+	* elf32-score7.c (s7_bfd_score_info_to_howto): Likewise.
+
+2021-01-06  Alan Modra  <amodra@gmail.com>
+
+	* config.bfd (sparc-*-solaris2*): Add sparc_elf32_vec.
+	(sparc64-*-solaris2*): Add sparc_elf64_vec and
+	sparc_elf32_vec.
+
+2021-01-06  Marcus Comstedt  <marcus@mc.pp.se>
+
+	* config.bfd: Added targets riscv64be*-*-*, riscv32be*-*-* and
+	riscvbe*-*-*.  Also added riscv_elf[32|64]_be_vec.
+	* configure.ac: Handle riscv_elf[32|64]_be_vec.
 	* configure: Regenerate.
+	* elfnn-riscv.c: Include <limits.h> and define CHAR_BIT for
+	riscv_is_insn_reloc.
+	(riscv_get_insn): RISC-V instructions are always little endian, but
+	bfd_get may be used for big-endian, so add new riscv_get_insn to handle
+	the insturctions.
+	(riscv_put_insn): Likewsie.
+	(riscv_is_insn_reloc): Check if we are relocaing an instruction.
+	(perform_relocation): Call riscv_is_insn_reloc to decide if we should
+	use riscv_[get|put]_insn or bfd_[get|put].
+	(riscv_zero_pcrel_hi_reloc): Use riscv_[get|put]_insn, bfd_[get|put]l32
+	or bfd_[get|put]l16 for code.
+	(riscv_elf_relocate_section): Likewise.
+	(riscv_elf_finish_dynamic_symbol): Likewise.
+	(riscv_elf_finish_dynamic_sections): Likewise.
+	(_bfd_riscv_relax_call): Likewise.
+	(_bfd_riscv_relax_lui): Likewise.
+	(_bfd_riscv_relax_align): Likewise.
+	(_bfd_riscv_relax_pc): Likewise.
+	(riscv_elf_object_p): Handled for big endian.
+	(TARGET_BIG_SYM, TARGET_BIG_NAME): Defined.
+	* targets.c: Add riscv_elf[32|64]_be_vec.
+	(_bfd_target_vector): Likewise.
+
+2021-01-05  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (bfd_elf_link_record_dynamic_symbol): Handle no_export
+	for relocatable executable.
+
+2021-01-05  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (_bfd_vms_slurp_egsd): Read flags after size check.
+
+2021-01-05  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (allocate_dynrelocs): When we are generating pde,
+	make sure gp symbol is output as a dynamic symbol.
+
+2021-01-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26256
+	* elflink.c (compare_link_order): Place unordered sections before
+	ordered sections.
+	(elf_fixup_link_order): Add a link info argument.  Allow mixed
+	ordered and unordered input sections for non-relocatable link.
+	Sort the consecutive bfd_indirect_link_order sections with the
+	same pattern.  Change the offsets of the bfd_indirect_link_order
+	sections only.
+	(bfd_elf_final_link): Pass info to elf_fixup_link_order.
+	* section.c (bfd_section): Add pattern.
+	(BFD_FAKE_SECTION): Initialize pattern to NULL.
+	* bfd-in2.h: Regenerated.
+
+2021-01-04  Alexander Fedotov  <alfedotov@gmail.com>
+
+	* elf32-arm.c (elf32_arm_print_private_bfd_data): Prefix hex value
+	of private flags with 0x.
+	* elfnn-aarch64.c (elfNN_aarch64_print_private_bfd_data): Likewise.
 
-2019-01-08  Alan Modra  <amodra@gmail.com>
+2021-01-04  Alan Modra  <amodra@gmail.com>
 
-	PR 23699
-	PR 24065
-	* ihex.c (ihex_write_object_contents): Properly check 32-bit
-	address range.
+	PR 26822
+	* elflink.c (elf_link_input_bfd): Use the file base name in
+	linker generated STT_FILE symbols.
 
-2019-01-05  Yoshinori Sato <ysato@users.sourceforge.jp>
+2021-01-04  Nelson Chu  <nelson.chu@sifive.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.
+	* elfxx-riscv.c (riscv_compare_subsets): Removed static.
+	* elfxx-riscv.h: Add declaration.
+	* elfnn-riscv.c (riscv_merge_multi_letter_ext): Use
+	riscv_compare_subsets to check the orders.
+	(riscv_skip_prefix): Removed.
+	(riscv_prefix_cmp): Removed.
 
-2019-01-04  Lifang Xia  <lifang_xia@c-sky.com>
+2021-01-04  Alan Modra  <amodra@gmail.com>
 
-	* config.bfd (csky-*-elf* | csky-*-linux*): Modify the csky
-	default target, little endian target is more suitable.
+	PR 26741
+	* elfxx-riscv.c (riscv_parse_prefixed_ext): Free subset after
+	calculating subset version length.
 
-2019-01-04  Alan Modra  <amodra@gmail.com>
+2021-01-01  Nicolas Boulenguez  <nicolas@debian.org>
 
-	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.
+	* xcofflink.c: Correct spelling in comments.
 
-2019-01-01  Alan Modra  <amodra@gmail.com>
+2021-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-2020
 
-Copyright (C) 2019 Free Software Foundation, Inc.
+Copyright (C) 2021-2025 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.20200303/bfd/ChangeLog-2009 ./bfd/ChangeLog-2009
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ChangeLog-2009	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ChangeLog-2009	2026-03-05 02:07:20.000000000 +0000
@@ -3868,15 +3868,15 @@
 	* coffcode.h (coff_pointerize_aux_hook): Update CSECT_SYM_P to
 	check whether a symbol has csect information.
 	(coff_print_aux): Likewise.
-	* coff-rs6000.c (_bfd_xcoff_swap_aux_in): Handle auxillary csect
+	* coff-rs6000.c (_bfd_xcoff_swap_aux_in): Handle auxiliary csect
 	information for C_AIX_WEAKEXT too.
 	(_bfd_xcoff_swap_aux_out): Likewise.
 	(xcoff_reloc_type_br): Handle defweak symbols too.
-	* coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Handle auxillary csect
+	* coff64-rs6000.c (_bfd_xcoff64_swap_aux_in): Handle auxiliary csect
 	information for C_AIX_WEAKEXT too.
 	(_bfd_xcoff64_swap_aux_out): Likewise.
 	(xcoff64_reloc_type_br): Handle defweak symbols too.
-	* coffgen.c (coff_print_symbol): Handle auxillary function
+	* coffgen.c (coff_print_symbol): Handle auxiliary function
 	information for C_AIX_WEAKEXT too.
 	* xcofflink.c (_bfd_xcoff_canonicalize_dynamic_symtab): Set BSF_WEAK
 	instead of BSF_GLOBAL if the L_WEAK flag is set.
@@ -3942,7 +3942,7 @@
 	objects in a dynamic link, rather than checking whether csectpp
 	is null.  Always allocate debug_index for other objects,
 	and always go through the loop.  Update the type of debug_index
-	after the change above.  Read the auxillary csect information
+	after the change above.  Read the auxiliary csect information
 	and use xcoff_keep_symbol_p to decide whether a symbol should
 	be kept.  Set its debug_index to -2 if not.
 	(xcoff_link_input_bfd): Update the type of debug_index after
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ChangeLog-2014 ./bfd/ChangeLog-2014
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ChangeLog-2014	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ChangeLog-2014	2026-03-05 02:07:20.000000000 +0000
@@ -621,7 +621,7 @@
 
 	PR binutils/17512
 	* coffgen.c (coff_get_normalized_symtab): Check for an excessive
-	number of auxillary entries.
+	number of auxiliary entries.
 	* ieee.c (next_byte): Convert to a function.  Return FALSE if the
 	next byte is beyond the end of the buffer.
 	(parse_int): Test the return value of next_byte.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ChangeLog-2015 ./bfd/ChangeLog-2015
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ChangeLog-2015	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ChangeLog-2015	2026-03-05 02:07:20.000000000 +0000
@@ -3076,7 +3076,7 @@
 
 	PR binutils/17512
 	* coffgen.c (coff_get_normalized_symtab): Fix test for out of
-	range auxillary sections.
+	range auxiliary sections.
 
 2015-03-24  Marcus Shawcroft  <marcus.shawcroft@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.20200303/bfd/ChangeLog-2019 ./bfd/ChangeLog-2019
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ChangeLog-2019	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/ChangeLog-2019	2026-03-05 02:07:20.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.20200303/bfd/ChangeLog-2020 ./bfd/ChangeLog-2020
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ChangeLog-2020	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/ChangeLog-2020	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,5017 @@
+2020-12-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-linker-x86.h (elf_x86_cet_report): Renamed to ...
+	(elf_x86_prop_report): This.
+	(elf_linker_x86_params): Add lam_u48, lam_u57, lam_u48_report
+	and lam_u57_report.
+	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Support
+	GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and
+	GNU_PROPERTY_X86_FEATURE_1_LAM_U57.
+	(_bfd_x86_elf_link_fixup_gnu_properties): Keep LAM features only
+	for 64-bit output.
+
+2020-12-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27091
+	* elflink.c (elf_link_input_bfd): Copy elf_gnu_osabi_retain
+	from input only for relocatable link.
+
+2020-12-18  Alan Modra  <amodra@gmail.com>
+
+	* elf32-microblaze.c (dbg): Delete unused variable.
+	* elf32-nds32.c (relax_group_section_id_list): Make static.
+	* som.c (reloc_queue): Make static.
+	* xtensa-isa.c (xtisa_errno, xtisa_error_msg): Make static.
+
+2020-12-18  Alan Modra  <amodra@gmail.com>
+
+	* archive.c (_bfd_ar_spacepad, _bfd_ar_sizepad): Use auto buf.
+	* coff-mcore.c (coff_mcore_relocate_section): Likewise.
+	* elf32-ppc.c (ppc_elf_unhandled_reloc): Use asprintf in place
+	of fixed size and possibly too small buf for translated message.
+	* elf64-ppc.c (ppc64_elf_unhandled_reloc): Likewise.
+	* elf32-v850.c (v850_elf_check_relocs): Likewise.
+	* ecoff.c (ecoff_type_to_string): Pass in return string buff rather
+	than using static buffer2.  Delete dead code.  Remove unnecessary
+	parentheses.
+	(_bfd_ecoff_print_symbol): Pass auto buff to ecoff_type_to_string.
+	* elf32-rx.c (describe_flags): Pass in return string buf rather
+	than using static buf.
+	(rx_elf_merge_private_bfd_data): Pass buf to describe_flags.
+	(rx_elf_print_private_bfd_data): Likewise.
+	* mach-o.c (cpusubtype): Pass in return string buffer rather than
+	using static buffer.
+	(bfd_mach_o_bfd_print_private_bfd_data): Pass buff to cpusubtype.
+	* opncls.c (separate_debug_file_exists): Make buffer an auto var.
+	(bfd_fill_in_gnu_debuglink_section): Likewise.
+	* peXXigen.c (rsrc_resource_name): Pass in return string buffer
+	rather than using static buffer.
+	(rsrc_sort_entries): Pass buff to rsrc_resource_name.
+	* vms-alpha.c (_bfd_vms_write_emh): Pass tbuf to get_vms_time_string.
+	* vms-misc.c (get_vms_time_string): Pass in return string tbuf
+	rather than using static tbuf.
+	* vms.h (get_vms_time_string): Update prototype.
+
+2020-12-18  Alan Modra  <amodra@gmail.com>
+
+	* coff-z80.c (bfd_howto_type): Make typedef const.
+	* elf32-z80.c (bfd_howto_type): Likewise.
+	* elf32-m32c.c (EncodingTable): Likewise.
+	* elf32-csky.c (csky_arch_for_merge): Likewise.
+	(csky_archs): Use typedef.
+	* elf32-m68hc11.c (m68hc11_direct_relax_table): Make const.
+	(find_relaxable_insn, m68hc11_elf_relax_section): Adjust to suit.
+	* elf32-ppc.c (ppc_alt_plt): Make const.
+	* elf32-rl78.c (relax_addr16): Likewise.
+	* targets.c (_bfd_associated_vector): Likewise.
+	(bfd_target_vector, bfd_associated_vector): Likewise.
+	* libbfd-in.h (bfd_target_vector, bfd_associated_vector): Likewise.
+	* libbfd.h: Regenerate.
+
+2020-12-18  Alan Modra  <amodra@gmail.com>
+
+	* ecoff.c (bfd_debug_section): Init using BFD_FAKE_SECTION.
+	(ecoff_scom_section, ecoff_scom_symbol): Statically init using
+	BFD_FAKE_SECTION and GLOBAL_SYM_INIT.  Delete initialisation code.
+	* elf32-m32r.c (m32r_elf_scom_section, m32r_elf_scom_symbol),
+	* elf32-score.c (score_elf_scom_section, score_elf_scom_symbol),
+	* elf32-score7.c (score_elf_scom_section, score_elf_scom_symbol),
+	* elf32-tic6x.c (tic6x_elf_scom_section, tic6x_elf_scom_symbol),
+	* elf32-v850.c (v850_elf_scom_section, v850_elf_scom_symbol),
+	(v850_elf_tcom_section, v850_elf_tcom_symbol),
+	(v850_elf_zcom_section, v850_elf_zcom_symbol),
+	* elf64-mmix.c (mmix_elf_reg_section, mmix_elf_reg_section_symbol),
+	* elfxx-mips.c (mips_elf_scom_section, mips_elf_scom_symbol): Likewise.
+
+2020-12-16  Alan Modra  <amodra@gmail.com>
+
+	* elfxx-target.h (elfNN_bed): Constify.
+	* bfd.c (bfd_elf_set_pagesize): Delete.
+	(bfd_emul_set_maxpagesize, bfd_emul_set_commonpagesize): Delete.
+	* elf.c (get_program_header_size): Get commonpagesize from
+	link info.
+	(_bfd_elf_map_sections_to_segments): Get maxpagesize from link info.
+	(assign_file_positions_for_load_sections): Likewise.
+	(assign_file_positions_for_non_load_sections): Likewise.
+	(rewrite_elf_program_header): Add maxpagesize param.  Set map_p_align.
+	(copy_private_bfd_data): Don't call bfd_elf_set_maxpagesize.
+	Instead pass maxpagesize to rewrite_elf_program_header.
+	* elf32-nds32.c (relax_range_measurement): Add link_info param.
+	Get maxpagesize from link_info.  Adjust caller.
+	* bfd-in2.h: Regenerate.
+
+2020-12-16  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (elf_flags_to_names): Constify.
+
+2020-12-16  Alan Modra  <amodra@gmail.com>
+
+	* libxcoff.h (struct xcoff_backend_data_rec): Constify
+	_xcoff_glink_code.
+	(XCOFF_RELOC_FUNCTION_ARGS, XCOFF_COMPLAIN_FUNCTION_ARGS): Delete.
+	(xcoff_reloc_function, xcoff_complain_function): New typedef.
+	(xcoff_calculate_relocation, xcoff_complain_overflow),
+	(xcoff_reloc_type_noop, xcoff_reloc_type_fail),
+	(xcoff_reloc_type_pos, xcoff_reloc_type_neg),
+	(xcoff_reloc_type_rel, xcoff_reloc_type_toc),
+	(xcoff_reloc_type_ba, xcoff_reloc_type_crel): Update declaration.
+	* coff-rs6000.c (xcoff_reloc_type_br): Declare using typedef.
+	(xcoff_complain_overflow_dont_func): Likewise.
+	(xcoff_complain_overflow_bitfield_func): Likewise.
+	(xcoff_complain_overflow_signed_func): Likewise.
+	(xcoff_complain_overflow_unsigned_func): Likewise.
+	(xcoff_calculate_relocation, xcoff_complain_overflow): Constify.
+	(xcoff_glink_code): Constify.
+	* coff64-rs6000.c (xcoff64_reloc_type_br): Declare using typedef.
+	(xcoff64_calculate_relocation, xcoff64_glink_code): Constify.
+
+2020-12-16  Alan Modra  <amodra@gmail.com>
+
+	* elf32-xtensa.c (narrowable, widenable): Constify.
+	* xtensa-modules.c: Constify many arrays.
+
+2020-12-16  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (synthetic_opd): Constify.
+
+2020-12-16  Alan Modra  <amodra@gmail.com>
+
+	* arc-plt.h (plt_versions): Constify.
+	* elf32-arc.c (arc_get_plt_version): Constify return pointer,
+	adjust uses throughout.
+
+2020-12-16  Alan Modra  <amodra@gmail.com>
+
+	* coffcode.h (pelength, peheader): Delete static variables.
+	(coff_apply_checksum): Instead, define them as auto vars, and pass..
+	(coff_read_word, coff_compute_checksum): ..to here.  Delete
+	unnecessary forward declarations.
+	* pei-x86_64.c (pdata_count): Delete static variable.
+	(struct pex64_paps): New.
+	(pex64_print_all_pdata_sections, pex64_bfd_print_pdata): Pass
+	a pex64_paps for counting.
+	* peicode.h (jtab): Constify.
+
+2020-12-15  Vivek Das Mohapatra  <vivek@collabora.com>
+
+	* elflink.c (bfd_elf_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_entry to add a DT_GNU_FLAGS_1 section.
+
+2020-12-14  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (struct elf_obj_tdata): Add being_created.
+	* elf.c (bfd_section_from_shdr): Delete static vars for loop
+	detection.  Use new tdata variable instead.
+	* elfcode.h (elf_object_p): Allocate being_created.
+
+2020-12-10  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_ext_dont_care_version): New function.  Return
+	TRUE if we don't care the versions of the extensions.  These extensions
+	are added to the subset list for special purposes, with the explicit
+	versions or the RISCV_UNKNOWN_VERSION versions.
+	(riscv_parse_add_subset): If we do care the versions of the extension,
+	and the versions are unknown, then report errors for the non-implicit
+	extensions, and return directly for the implicit one.
+	(riscv_arch_str1): Do not output i extension after e, and the extensions
+	which versions are unknown.
+
+2020-12-07  Siddhesh Poyarekar  <siddhesh@sourceware.org>
+
+	PR 26945
+	* opncls.c (bfd_fdopenw): New function.
+	* bfd-in2.h: Regenerate.
+
+2020-12-07  Alan Modra  <amodra@gmail.com>
+
+	* elf32-csky.c (csky_relocate_contents): Correct negate test.
+	* cpu-ns32k.c (_bfd_do_ns32k_reloc_contents): Likewise.
+	* elf32-nds32.c (nds32_relocate_contents): Likewise.
+
+2020-12-05  Maciej W. Rozycki  <macro@linux-mips.org>
+
+	* elf32-vax.c (elf_vax_check_relocs) <R_VAX_GOT32>: Use
+	SYMBOL_REFERENCES_LOCAL rather than `h->forced_local' to check
+	whether the symbol referred is local or not.
+
+2020-12-04  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27016
+	* elf64-x86-64.c (elf_x86_64_convert_load_reloc): Convert load
+	to mov only for GOTPCRELX relocations.
+
+2020-12-04  Alan Modra  <amodra@gmail.com>
+
+	PR 26978
+	* elflink.c (_bfd_elf_add_default_symbol): Handle the case where
+	a new weak sym@@ver should be overridden by an existing sym@ver.
+	(elf_link_add_object_symbols): Don't _bfd_elf_add_default_symbol
+	for a new weak sym@ver when sym@@ver already exists.
+	* linker.c (link_action): Choose MIND for previous indirect,
+	current def, rather than MDEF.
+	(_bfd_generic_link_add_one_symbol <MIND>): Handle redefinition of
+	weak indirect symbol.
+
+2020-12-01  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_parse_prefixed_ext): Use riscv_compare_subsets
+	to check the Z* extensions' order.
+
+2020-12-01  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_parse_add_subset): Allow to add g with
+	RISCV_UNKNOWN_VERSION versions.
+	(riscv_parse_std_ext): Add g to the subset list, we only use it
+	to add the implicit extensions, but won't output it to arch string.
+	(riscv_parse_add_implicit_subsets): Add implicit zicsr and zifencei
+	for g extension.
+	(riscv_arch_str1): Do not output g to the arch string.
+	* elfxx-riscv.h (RISCV_UNKNOWN_VERSION): Moved to include/opcode/riscv.h.
+
+2020-12-01  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_merge_std_ext): Updated since
+	riscv_lookup_subset is changed.
+	* elfxx-riscv.c (riscv_ext_order): New Array used to compare the
+	extensions' order quickly.
+	(riscv_init_ext_order): New function.  Init the riscv_ext_order
+	according to the riscv_supported_std_ext and parse_config[i].class
+	automatically.
+	(riscv_compare_subsets): New function.  Similar to the strcmp, but
+	compare the subsets with the specific order.
+	(riscv_lookup_subset): Return TRUE and set `current` to the subset
+	if it is found.  Otherwise, return FALSE and set `current` to the
+	place where we should insert the subset.
+	(riscv_add_implicit_subset): New function.  Search the list first,
+	and then find the right place to add the implicit_subset.
+	(riscv_parse_add_subset): Since We have to add all arch string
+	extensions first, and then start to add their implicit extensions.
+	We can add arch string extensions in order by the original
+	riscv_add_subset, and then add the implicit subsets by the
+	riscv_add_implicit_subset.  Besides, do not add the implicit
+	extensions if we failed to find their default versions.
+	(riscv_parse_std_ext): Updated.
+	(riscv_parse_add_implicit_subsets): New function.  Add all implicit
+	extensions according to the arch string extensions.
+	(riscv_parse_subset): Call riscv_init_ext_order and
+	riscv_parse_add_implicit_subsets, before and after parsing the
+	arch string.  Remove parts of the ISA conflict checking since
+	the implicit extensions are added.
+	* elfxx-riscv.h (riscv_lookup_subset): Updated.
+
+2020-12-01  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_lookup_subset): Moved to front.
+	(riscv_add_subset): Likewise.
+	(riscv_release_subset_list): Likewise.
+	(riscv_parse_add_subset): New function.  Find and check the
+	versions before adding them by riscv_add_subset.
+	(riscv_parsing_subset_version): Remove use_default_version
+	and change the version type from unsigned to int.  Set the
+	versions to RISCV_UNKNOWN_VERSION if we can not find them
+	in the arch string.
+	(riscv_parse_std_ext): Updated.
+	(riscv_parse_prefixed_ext): Updated.  Since we use as_bad
+	rather than as_fatal to report more errors, return NULL
+	string if the parsed end_of_version is NULL, too.
+	(riscv_parse_subset): Use a new boolean, no_conflict, to
+	report more errors when we have more than one ISA conflicts.
+	* elfxx-riscv.h (RISCV_DONT_CARE_VERSION): Changed to
+	RISCV_UNKNOWN_VERSION.
+	(riscv_lookup_subset_version): Removed.
+	(riscv_parse_subset_t): Updated.
+
+2020-12-01  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_parse_std_ext): Stop parsing standard
+	extensions when parsed h keyword.
+	(riscv_get_prefix_class): Support prefixed h class.
+	(riscv_std_h_ext_strtab): Likewise.
+	(riscv_ext_h_valid_p): Likewise.
+	(parse_config): Likewise.
+	(riscv_std_z_ext_strtab): Add zifencei.
+	* elfxx-riscv.h (riscv_isa_ext_class): Add RV_ISA_CLASS_H.
+
+2020-12-01  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c (riscv_parse_subset): ISA string cannot contain
+	any uppercase letter.
+
+2020-12-01  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfxx-riscv.c: Re-indent codes, unify and improve the error
+	messages and comments.
+	(riscv_parse_prefixed_ext): Stop parsing the prefixed class
+	extensions if the class is RV_ISA_CLASS_UNKNOWN, I get internal
+	errors before adding this check for march-fail-porder* testcases.
+	(riscv_parse_subset): Move the rv32 with q checking in front.
+	* elfxx-riscv.h: Likewise.
+
+2020-12-01  Alan Modra  <amodra@gmail.com>
+
+	PR 26979
+	* elf-bfd.h (elf_backend_merge_symbol_attribute): Update prototype.
+	* elf32-m68hc1x.h (elf32_m68hc11_merge_symbol_attribute): Likewise.
+	* elfxx-mips.h (_bfd_mips_elf_merge_symbol_attribute): Likewise.
+	* elfxx-x86.h (_bfd_x86_elf_merge_symbol_attribute): Likewise.
+	* elf32-m68hc1x.c (elf32_m68hc11_merge_symbol_attribute): Replace
+	isym parameter with st_other.  Adjust code.
+	* elf64-alpha.c (elf64_alpha_merge_symbol_attribute): Likewise.
+	* elf64-ppc.c (ppc64_elf_merge_symbol_attribute): Likewise.
+	* elfnn-aarch64.c (elfNN_aarch64_merge_symbol_attribute): Likewise.
+	* elfxx-mips.c (_bfd_mips_elf_merge_symbol_attribute): Likewise.
+	* elfxx-x86.c (_bfd_x86_elf_merge_symbol_attribute): Likewise.
+	* elflink.c (elf_merge_st_other): Likewise.
+	(_bfd_elf_merge_symbol, elf_link_add_object_symbols): Adjust to suit.
+	(_bfd_elf_copy_link_hash_symbol_type): Likewise.
+	(_bfd_elf_add_default_symbol): Merge st_other from undecorated
+	symbol and @VER symbol to @@VER symbol.
+
+2020-11-28  Alan Modra  <amodra@gmail.com>
+
+	PR 26907
+	* elf.c (elf_sort_sections): Don't sort zero size !load sections
+	after load sections.
+
+2020-11-27  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+
+	* elf.c (special_sections_g): Add .gnu.linkonce.n and .gnu.linkonce.p.
+	(special_sections_n): Add .noinit.
+	(special_sections_p): Add .persistent.
+
+2020-11-26  Nick Clifton  <nickc@redhat.com>
+
+	PR 26946
+	* dwarf2.c (read_section): Check for debug sections with excessive
+	sizes.
+
+2020-11-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26936
+	* elflink.c (_bfd_elf_check_kept_section): Get the real kept
+	section.
+
+2020-11-23  Nick Clifton  <nickc@redhat.com>
+
+	PR 26931
+	* elf-bfd.h (struct elf_backend_data): Add bfd_boolean field to
+	slurp_secondary_relocs field.
+	(_bfd_elf_slurp_secondary_reloc_section): Update prototype.
+	* elf.c (_bfd_elf_slurp_secondary_reloc_section): Add new
+	parameter.  Compute number of symbols based upon the new
+	parameter.
+	* elfcode.h (elf_slurp_reloc_table): Pass dynamic as new
+	parameter.
+
+2020-11-23  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26918
+	* elf64-s390.c (elf_s390_finish_dynamic_sections): Set .got
+	sh_entsize only if .got size > 0.
+
+2020-11-21  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (_bfd_riscv_relax_section):  Add a new relax pass
+	to do the pcgp relaxation later, after the lui and call relaxations,
+	but before the delete and alignment relaxations.
+
+2020-11-20  Nick Alcock  <nick.alcock@oracle.com>
+
+	* elflink.c (elf_finalize_dynstr): Call examine_strtab after
+	dynstr finalization.
+	(elf_link_swap_symbols_out): Don't call it here.  Call
+	ctf_new_symbol before swap_symbol_out.
+	(elf_link_output_extsym): Call ctf_new_dynsym before
+	swap_symbol_out.
+	(bfd_elf_final_link): Likewise.
+	* elf.c (swap_out_syms): Pass in bfd_link_info.  Call
+	ctf_new_symbol before swap_symbol_out.
+	(_bfd_elf_compute_section_file_positions): Adjust.
+
+2020-11-19  Nick Clifton  <nickc@redhat.com>
+
+	PR 26918
+	* elf64-s390.c (elf_s390_finish_dynamic_sections): Check for the
+	existance of an sgot output section before setting the
+	sh_entsize.
+
+2020-11-18  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+	H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf-bfd.h (enum elf_gnu_osabi): Add elf_gnu_osabi_retain.
+	(struct elf_obj_tdata): Increase has_gnu_osabi to 4 bits.
+	* elf.c (_bfd_elf_make_section_from_shdr): Set elf_gnu_osabi_retain
+	for SHF_GNU_RETAIN.
+	(_bfd_elf_final_write_processing): Report if SHF_GNU_RETAIN is
+	not supported by the OSABI.
+	Adjust error messages.
+	* elflink.c (elf_link_input_bfd): Copy enabled has_gnu_osabi bits from
+	input BFD to output BFD.
+	(bfd_elf_gc_sections): gc_mark the section if SHF_GNU_RETAIN is set.
+
+2020-11-16  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+
+	* cpu-arm.c (processors): Add Cortex-A78C.
+
+2020-11-11  Tom Tromey  <tromey@adacore.com>
+
+	* archive.c (getuid, getgid): Move...
+	* sysdep.h (getuid, getgid): ...here.
+
+2020-11-09  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (alpha_vms_write_exec): Write 16 bits to eihd.alias.
+
+2020-11-09  Alan Modra  <amodra@gmail.com>
+
+	* archive.c (bfd_ar_hdr_from_filesystem): Use bfd_set_input_error
+	when stat of archive member fails.
+	* coff-rs6000.c (xcoff_write_archive_contents_old),
+	(xcoff_write_archive_contents_big): Likewise, and handle in-memory
+	bfd.
+
+2020-11-03  Alan Modra  <amodra@gmail.com>
+
+	* elf.c (bfd_section_from_shdr): Free sections_being_created.
+	Use bfd_zmalloc.
+
+2020-11-02  Alan Modra  <amodra@gmail.com>
+
+	PR 15146
+	PR 26314
+	PR 26530
+	PR 26806
+	* elflink.c (elf_link_add_object_symbols): Don't set def/ref flags
+	for plugin syms.  Do allow plugin syms to mark as-needed libs.
+
+2020-10-30  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/26703
+	* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Generate
+	GNU_PROPERTY_X86_ISA_1_BASELINE for -z x86-64-baseline.
+
+2020-10-29  Nick Clifton  <nickc@redhat.com>
+
+	PR 26809
+	* elf.c (_bfd_elf_slurp_secondary_reloc_section): Use the correct
+	sized reloc reading function.
+	(_bfd_elf_write_secondary_reloc_section): Use the correct sized
+	reloc writing function.
+
+2020-10-28  Nick Clifton  <nickc@redhat.com>
+
+	PR 26774
+	* srec.c (srec_write_symbols): Do not emit symbols in sections
+	that have been removed from the output.
+
+2020-10-27  Nick Clifton  <nickc@redhat.com>
+
+	* elf64-hppa.c (elf_hppa_final_link_relocate): Check that the
+	symbol's section is being output before adding its offset to the
+	addend when processing R_PARISC_SECREL32.
+
+2020-10-25  Alan Modra  <amodra@gmail.com>
+
+	* vms-misc.c (_bfd_vms_save_counted_string): Count length byte
+	towards maxlen.
+
+2020-10-20  Dr. David Alan Gilbert  <dgilbert@redhat.com>
+
+	* po/es.po: Fix printf format.
+
+2020-10-16  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c (riscv_elf_link_hash_table): Add last_iplt_index.
+	(riscv_elf_size_dynamic_sections): Initialize the last_iplt_index.
+	(riscv_elf_relocate_section): Use riscv_elf_append_rela.
+	(riscv_elf_finish_dynamic_symbol): If the use_elf_append_rela is
+	false, then we should add the dynamic relocs from the last of
+	the .rela.iplt, and don't use the riscv_elf_append_rela to add.
+
+2020-10-16  Nelson Chu  <nelson.chu@sifive.com>
+
+	* elfnn-riscv.c: Include "objalloc.h" since we need objalloc_alloc.
+	(riscv_elf_link_hash_table): Add loc_hash_table and loc_hash_memory
+	for local STT_GNU_IFUNC symbols.
+	(riscv_elf_got_plt_val): Removed.
+	(riscv_elf_local_htab_hash, riscv_elf_local_htab_eq): New functions.
+	Use to compare local hash entries.
+	(riscv_elf_get_local_sym_hash): New function.  Find a hash entry for
+	local symbol, and create a new one if needed.
+	(riscv_elf_link_hash_table_free): New function.  Destroy an riscv
+	elf linker hash table.
+	(riscv_elf_link_hash_table_create): Create hash table for local ifunc.
+	(riscv_elf_check_relocs): Create a fake global symbol to track the
+	local ifunc symbol.  Add support to check and handle the relocations
+	reference to ifunc symbols.
+	(allocate_dynrelocs): Let allocate_ifunc_dynrelocs and
+	allocate_local_ifunc_dynrelocs to handle the ifunc symbols if they
+	are defined and referenced in a non-shared object.
+	(allocate_ifunc_dynrelocs): New function.  Allocate space in .plt,
+	.got and associated reloc sections for ifunc dynamic relocs.
+	(allocate_local_ifunc_dynrelocs): Likewise, but for local ifunc
+	dynamic relocs.
+	(riscv_elf_relocate_section): Add support to handle the relocation
+	referenced to ifunc symbols.
+	(riscv_elf_size_dynamic_sections): Updated.
+	(riscv_elf_adjust_dynamic_symbol): Updated.
+	(riscv_elf_finish_dynamic_symbol): Finish up the ifunc handling,
+	including fill the PLT and GOT entries for ifunc symbols.
+	(riscv_elf_finish_local_dynamic_symbol): New function.  Called by
+	riscv_elf_finish_dynamic_symbol to handle the local ifunc symbols.
+	(_bfd_riscv_relax_section): Don't do the relaxation for ifunc.
+	* elfxx-riscv.c: Add R_RISCV_IRELATIVE.
+	* configure.ac: Link elf-ifunc.lo to use the generic ifunc support.
+	* configure: Regenerated.
+
+2020-10-16  Alan Modra  <amodra@gmail.com>
+
+	* elf32-arc.c (replace_func): Correct return type.
+	(get_replace_function): Use a replace_func function pointer rather
+	than void*.  Update associated ARC_RELOC_HOWTO define.
+
+2020-10-16  Alan Modra  <amodra@gmail.com>
+
+	* elf32-cr16.c: Formatting.
+	(cr16_elf_final_link_relocate): Sign extend rather than clumsy
+	"add or subtract" of offset value.  Simplify range checks.  Move
+	common code out of "if" branches.  Don't refetch insn fields
+	needlessly.
+
+2020-10-16  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_relocate_section): Tighten sanity check
+	on R_PPC64_GOT_LO_DS and R_PPC64_GOT_HA instructions.
+
+2020-10-09  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (write_plt_relocs_for_local_syms): Don't do local
+	entry offset optimisation.
+
+2020-10-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/26703
+	* elf-linker-x86.h (elf_linker_x86_params): Add isa_level.
+	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge
+	GNU_PROPERTY_X86_ISA_1_V[234].
+	(_bfd_x86_elf_link_setup_gnu_properties): Generate
+	GNU_PROPERTY_X86_ISA_1_V[234] for -z x86-64-v[234].
+
+2020-10-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26711
+	* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Merge -z ibt
+	and -z shstk only with GNU_PROPERTY_X86_FEATURE_1_AND.
+
+2020-10-06  Brandon Bergren  <bdragon@FreeBSD.org>
+
+	* config.bfd: Add powerpc64le-*-freebsd*.
+	* configure.ac: Add powerpc_elf64_fbsd_le_vec.
+	* elf64-ppc.c (TARGET_LITTLE_SYM, TARGET_LITTLE_NAME): Define for
+	freebsd.
+	* targets.c (powerpc_elf64_fbsd_le_vec): Declare.
+	(_bfd_target_vector): Add it.
+	* configure: Regenerate.
+
+2020-10-05  Kamil Rytarowski  <n54@gmx.com>
+
+	* config.bfd (aarch64-*-netbsd*, aarch64_be-*-netbsd*): Add target.
+
+2020-10-05  Nick Clifton  <nickc@redhat.com>
+
+	PR 26253
+	* elf.c (_bfd_elf_setup_sections): Do not complain about an
+	sh_link value of zero when the SLF_LINK_ORDER flag is set.
+	(assign_section_numbers): Likewise.
+
+2020-10-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR 26681
+	* elflink.c (bfd_elf_gc_sections): Do not arbitrarily keep note
+	sections which are linked to another section.
+
+2020-09-30  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+
+	* cpu-arm.c: Add cortex-a78 and cortex-a78ae.
+
+2020-09-28  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+
+	* cpu-arm.c: (processors) Add Cortex-X1.
+
+2020-09-28  Alan Modra  <amodra@gmail.com>
+
+	PR 26656
+	* elf64-ppc.c (ppc_build_one_stub, ppc_size_one_stub): Check for
+	NULL stub_entry->h before calling is_tls_get_addr.
+
+2020-09-26  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (GLINK_PLTRESOLVE_SIZE): Depend on has_plt_localentry0.
+	(LD_R0_0R11, ADD_R11_R0_R11): Define.
+	(ppc64_elf_tls_setup): Disable params->plt_localentry0 when power10
+	code detected.
+	(ppc64_elf_size_stubs): Update __glink_PLTresolve eh_frame.
+	(ppc64_elf_build_stubs): Move r2 save to start of __glink_PLTresolve,
+	and only emit for has_plt_localentry0.  Don't use r2 in the stub.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+	PR 26656
+	* elf64-ppc.c (plt_stub_size): Add "odd" param.  Use it with
+	size_power10_offset rather than calculating from start of stub.
+	Add size for notoc tls_get_addr_opt stub.
+	(plt_stub_pad): Add "odd" param, pass to plt_stub_size.
+	(build_tls_get_addr_head, build_tls_get_addr_tail): New functions.
+	(build_tls_get_addr_stub): Delete.
+	(ppc_build_one_stub): Use a temp for htab->params->stub_bfd.
+	Emit notoc tls_get_addr_opt stub.  Move eh_frame code to
+	suit.  Adjust code to use bfd_tls_get_addr_head/tail in place
+	of build_tls_get_addr_stub.
+	(ppc_size_one_stub): Size notoc tls_get_addr_opt stub.
+	Adjust plt_stub_size and plt_stub_pad calls.  Correct "odd"
+	when padding stub.  Size eh_frame for notoc stub too.
+	Correct lr_restore value.
+	(ppc64_elf_relocate_section): Don't skip over first insn of
+	notoc tls_get_addr_opt stub.
+
+2020-09-24  Alan Modra  <amodra@gmail.com>
+
+	PR 26655
+	* elf64-ppc.c (ppc64_elf_func_desc_adjust): Rename to..
+	(ppc64_elf_edit): Call params->edit.
+	(ppc64_elf_tls_setup): Don't call _bfd_elf_tls_setup.  Return a
+	bfd_boolean.
+	* elf64-ppc.h (struct ppc64_elf_params): Add "edit".
+	(ppc64_elf_tls_setup): Update declaration.
+
+2020-09-21  Alan Modra  <amodra@gmail.com>
+
+	PR 26569
+	* elfxx-riscv.c (howto_table): Correct size and bitsize of
+	R_RISCV_RVC_BRANCH, R_RISCV_RVC_JUMP, and R_RISCV_RVC_LUI.
+	Correct size for R_RISCV_TLS_DTPMOD32, R_RISCV_TLS_DTPREL32,
+	R_RISCV_CALL, and R_RISCV_CALL_PLT.  Make R_RISCV_TPREL_ADD and
+	R_RISCV_ALIGN like R_RISCV_NONE.  Correct dst_mask many relocs.
+
+2020-09-17  Mikael Pettersson  <mikpelinux@gmail.com>
+
+	PR ld/18808
+	* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Skip IFUNC
+	relocations in debug sections, change abort to _bfd_error_handler.
+
+2020-09-16  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26583
+	* config.bfd (targ64_selvecs, targ_selvecs): Add x86_64_pe_vec
+	to x86_64_pei_vec.
+	* reloc.c: Include "coff/internal.h".
+	(bfd_perform_relocation): Adjust relocation for PE/x86-64 inputs.
+
+2020-09-16  Alan Modra  <amodra@gmail.com>
+
+	* elf-bfd.h (elf_symbol_from): Remove unused ABFD parameter.
+	* elf.c (ignore_section_sym, _bfd_elf_copy_private_symbol_data),
+	(swap_out_syms): Adjust elf_symbol_from invocation.
+
+2020-09-16  Alan Modra  <amodra@gmail.com>
+
+	PR 26623
+	* elf-bfd.h (elf_symbol_from): Exclude synthetic symbols.
+
+2020-09-15  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* coff-x86_64.c (howto_table): Display PE relocation names.
+
+2020-09-15  Hans-Peter Nilsson  <hp@axis.com>
+
+	PR ld/26589
+	* elf32-cris.c (cris_elf_check_relocs): Add missing NULL check
+	on argument before calling UNDEFWEAK_NO_DYNAMIC_RELOC.
+
+2020-09-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	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".
+
+2020-09-10  Siddhesh Poyarekar  <siddesh.poyarekar@arm.com>
+
+	* 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.
+
+2020-09-09  Nick Clifton  <nickc@redhat.com>
+
+	* cofflink.c (coff_link_check_archive_element): Move the check for
+	coff type input to the start of the function.
+
+2020-09-09  Alan Modra  <amodra@gmail.com>
+
+	* libbfd-in.h (_bfd_write_unsigned_leb128): Declare.
+	* libbfd.h: Regenerate.
+
+2020-09-08  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
+	    Kuan-Lin Chen  <kuanlinchentw@gmail.com>
+
+	* 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.
+
+2020-09-03  Nelson Chu  <nelson.chu@sifive.com>
+
+	* 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.
+
+2020-09-03  Nelson Chu  <nelson.chu@sifive.com>
+
+	* 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.
+
+2020-09-03  Kito Cheng  <kito.cheng@sifive.com>
+
+	* 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.
+
+2020-09-03  Alan Modra  <amodra@gmail.com>
+
+	* xcofflink.c (xcoff_get_archive_info): Allocate xcoff_archive_info
+	on the output bfd objalloc memory.
+
+2020-09-02  Alan Modra  <amodra@gmail.com>
+
+	* elfnn-aarch64.c (elfNN_aarch64_relocate_section): Correct type
+	of constant shifted left.
+
+2020-09-02  Alan Modra  <amodra@gmail.com>
+
+	* elf32-pru.c (pru_elf32_do_ldi32_relocate): Use an unsigned
+	type for "relocation".
+
+2020-09-01  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.
+
+2020-09-01  Alan Modra  <amodra@gmail.com>
+
+	PR 26429
+	* elf32-arm.c (elf32_arm_allocate_local_sym_info): Allocate arrays
+	in descending order of alignment.
+
+2020-09-01  Alan Modra  <amodra@gmail.com>
+
+	PR 26423
+	* elf32-arm.c (calculate_group_reloc_mask): Use 3u in shift.
+
+2020-08-31  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.
+
+2020-08-31  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.
+
+2020-08-31  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".
+
+2020-08-31  Alan Modra  <amodra@gmail.com>
+
+	PR 26461
+	* elfxx-ia64.c (ia64_elf_install_value): Make expressions unsigned
+	that might shift values into sign bit.
+
+2020-08-31  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.
+
+2020-08-31  Alan Modra  <amodra@gmail.com>
+
+	PR 26442
+	* elf32-crx.c (crx_elf_final_link_relocate): Calculate reloc_bits
+	without undefined behaviour.  Tidy excess casts.
+
+2020-08-31  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.
+
+2020-08-30  Alan Modra  <amodra@gmail.com>
+
+	PR 26435
+	PR 26436
+	* elf32-cr16.c (cr16_elf_final_link_relocate): Calculate reloc_bits
+	without undefined behaviour.
+
+2020-08-29  Nick Clifton  <nickc@redhat.com>
+
+	PR 26520
+	* dwarf2.c (scan_unit_for_symbols): Add member entries to the
+	variable table.
+
+2020-08-29  Alan Modra  <amodra@gmail.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.
+
+2020-08-28  Alan Modra  <amodra@gmail.com>
+
+	PR 26418
+	* ecofflink.c (bfd_ecoff_write_accumulated_debug): Don't write
+	zero size buffers.
+
+2020-08-28  Alan Modra  <amodra@gmail.com>
+
+	PR 26418
+	* ecofflink.c (WRITE): Really don't write zero size chunks.
+
+2020-08-28  Tuckker  <tuckkern+sourceware@gmail.com>
+
+	PR 26543
+	* linker.c (bfd_generic_define_common_symbol): Force the alignment
+	to 1 if the section has now alignment requirement.
+
+2020-08-28  Cooper Qu  <cooper.qu@linux.alibaba.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.
+
+2020-08-27  Alan Modra  <amodra@gmail.com>
+
+	PR 26462
+	* reloc.c (bfd_check_overflow): Return early if zero bitsize.
+
+2020-08-27  Alan Modra  <amodra@gmail.com>
+
+	* elf32-arm.c (elf32_arm_final_link_relocate): Don't segfault
+	on sym_sec not being output.
+
+2020-08-27  Alan Modra  <amodra@gmail.com>
+
+	PR 26416
+	* elf64-alpha.c (elf64_alpha_relax_tls_get_addr): Correct "dynamic".
+
+2020-08-26  Nick Clifton  <nickc@redhat.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.
+
+	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.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26478
+	* mmo.c (mmo_write_symbols_and_terminator): Don't memcpy empty table.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26475
+	* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_sections): Check
+	sstubs->contents != NULL.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26453
+	* som.c (som_prep_for_fixups): Return early when no symbols.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26418
+	* ecofflink.c (WRITE): Don't write size 0 chunks.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	* bfdio.c (bfd_get_file_size): Don't segv on NULL adata.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	PR 26415
+	* vms-misc.c (vms_time_t_to_vms_time): Don't use unsigned short vars.
+
+2020-08-26  David Faust  <david.faust@oracle.com>
+
+	* 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.
+
+2020-08-26  Alan Modra  <amodra@gmail.com>
+
+	* archures.c (bfd_mach_ck860): Define.
+
+2020-08-25  Mark Wielaard  <mark@klomp.org>
+
+	*  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.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	PR 26505
+	* elf32-xstormy16.c (xstormy16_elf_relax_section): Check
+	is_elf_hash_table before accessing elf fields.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	PR 26482
+	* coff-rs6000.c (_bfd_xcoff_sizeof_headers): Ignore sections that
+	won't be output.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	PR 26463
+	* elf32-m32c.c (m32c_elf_relax_section): Check is_elf_hash_table
+	before accessing elf fields.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	PR 26452
+	* som.c (som_compute_checksum): XOR 32-bit words in header,
+	not unsigned long sized words.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	PR 26419
+	* elf-m10300.c (mn10300_elf_relax_section): Don't attempt access
+	before start of section.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-08-21  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* elf.c (elfcore_grok_win32pstatus): Change name_size to unsigned
+	int. Use '%u' format with  _bfd_error_handler to render it.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	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].
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	PR 26492
+	* elf64-ppc.c (ppc_hash_table): Test is_elf_hash_table before
+	accessing elf_hash_table_id.
+
+2020-08-25  Alan Modra  <amodra@gmail.com>
+
+	PR 26483
+	* elf32-ppc.c (ppc_elf_hash_table): Test is_elf_hash_table before
+	accessing elf_hash_table_id.
+
+2020-08-24  Mark Wielaard  <mark@klomp.org>
+
+	* dwarf2.c (read_attribute_value): Handle DW_FORM_data16.
+	(read_formatted_entries): Likewise. And skip zero entry.
+
+2020-08-24  Cooper Qu  <cooper.qu@linux.alibaba.com>
+
+	* bfd-in2.h (bfd_mach_ck860): New.
+	* cpu-csky.c (arch_info_struct): Add item for CK860.
+
+2020-08-24  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-08-23  John David Anglin  <danglin@gcc.gnu.org>
+
+	PR binutils/26357
+	* configure.ac: Disable plugins by default on 32-bit hppa*-*-hpux*.
+	* configure: Regenerate.
+
+2020-08-22  H.J. Lu  <hongjiu.lu@intel.com>
+
+	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.
+
+2020-08-15  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-08-14  Alan Modra  <amodra@gmail.com>
+
+	* hash.c (bfd_hash_set_default_size): Use higher_prime_number
+	rather than another copy of primes.  Increase maximum default
+	size allowed.
+
+2020-08-13  Alan Modra  <amodra@gmail.com>
+
+	* config.bfd: Obsolete arm*-*-symbianelf*, and ia64*-*-*.
+
+2020-08-13  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-08-13  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-08-12  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* elf.c (elfcore_grok_win32pstatus): Use unsigned int for
+	win32pstatus note type to avoid signedness comparison warning.
+
+2020-07-21  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* 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.
+
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* elf.c (elfcore_grok_win32pstatus): Handle NOTE_INFO_MODULE64.
+
+2020-07-11  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* 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.
+
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* 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.
+
+2020-07-11  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* elf.c (NOTE_INFO{_PROCESS,_THREAD,_MODULE}): Define.
+	(elfcore_grok_win32pstatus): Use.
+
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* 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.
+
+2020-08-12  Nick Clifton  <nickc@redhat.com>
+
+	* po/ru.po: Updated Russian translation.
+	* po/sr.po: Updated Serbian translation.
+
+2020-08-07  David Faust  <david.faust@oracle.com>
+
+	* elf64-bpf.c (bpf_elf_relocate_section): Ensure signed division for
+	DISP16 and DISP32 relocations.
+
+2020-08-05  David Faust  <david.faust@oracle.com>
+
+	* 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.
+
+2020-07-29  Maciej W. Rozycki  <macro@linux-mips.org>
+
+	* 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.
+
+2020-07-29  Maciej W. Rozycki  <macro@linux-mips.org>
+
+	* 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.
+
+2020-07-29  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (bfd_elf_final_link): Don't segfault on local dynsyms
+	defined in excluded sections.
+
+2020-07-28  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-07-27  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-07-24  Nick Clifton  <nickc@redhat.com>
+
+	* config.bfd: Move xc16x target to the obsolete list.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* binary.c (binary_get_section_contents): Seek using offset
+	from section's file position.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.com>
+
+	* elf.c (_bfd_elf_make_section_from_phdr): Remove hack for GDB.
+
+2020-07-22  Max Filippov  <jcmvbkbc@gmail.com>
+
+	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.
+
+2020-07-20  Alan Modra  <amodra@gmail.com>
+
+	* elflink.c (_bfd_elf_gc_keep): Use bfd_is_const_section.
+
+2020-07-19  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-07-15  Alan Modra  <amodra@gmail.com>
+
+	PR 26239
+	* coffgen.c (_bfd_coff_close_and_cleanup): Free dwarf2 info.
+
+2020-07-15  Nick Clifton  <nickc@redhat.com>
+
+	PR26240
+	* coffgen.c (coff_get_normalized_symtab): Fix off-by-one error in
+	check for aux entries that overflow the buufer.
+
+2020-07-15  Hans-Peter Nilsson  <hp@bitrange.com>
+
+	* elf64-mmix.c (mmix_elf_relax_section): Improve accounting for
+	R_MMIX_PUSHJ_STUBBABLE relocs against undefined symbols.
+
+2020-07-15  Markus BÃ¶ck  <markus.boeck02@gmail.com>
+	    Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-07-10  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-07-09  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-07-09  Nick Clifton  <nickc@redhat.com>
+
+	* po/fr.po: Updated French translation.
+
+2020-07-07  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-07-07  Alan Modra  <amodra@gmail.com>
+
+	* coff-rs6000.c (xcoff_write_archive_contents_old): Set default
+	time, uid, gid and mode for deterministic archive.
+	(xcoff_write_archive_contents_big): Likewise.
+
+2020-07-07  Alan Modra  <amodra@gmail.com>
+
+	* coffcode.h (coff_classify_symbol): Handle C_HIDEXT and
+	C_AIX_WEAKEXT.
+
+2020-07-06  Nick Clifton  <nickc@redhat.com>
+
+	* po/pt.po: Updated Portuguese translation.
+	* po/uk.po: Updated Ukranian translation.
+
+2020-07-04  Nick Clifton  <nickc@redhat.com>
+
+	* version.m4: Set version to 2.35.50.
+	* configure: Regenerate.
+	* po/bbfd.pot: Regenerate.
+
+2020-07-04  Nick Clifton  <nickc@redhat.com>
+
+	Binutils 2.35 branch created.
+
+2020-07-01  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-06-29  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* elf32-tic6x.c (elf32_tic6x_size_dynamic_sections): Call
+	_bfd_elf_add_dynamic_tags.
+
+2020-06-29  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-06-19  Nick Clifton  <nickc@redhat.com>
+
+	* 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.
+
+2020-06-15  Max Filippov  <jcmvbkbc@gmail.com>
+
+	* 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.
+
+2020-06-08  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* 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.
+
+2020-06-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* 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.
+
+2020-06-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/26080
+	* elf32-bfin.c (bfinfdpic_relocate_section): Skip non SEC_ALLOC
+	section.
+
+2020-06-05  Nick Clifton  <nickc@redhat.com>
+
+	* pdp11.c (aout_link_add_symbols): Fix use before initialisation
+	bug.
+
+2020-06-05  Nelson Chu  <nelson.chu@sifive.com>
+
+	* 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.
+
+2020-04-22  Max Filippov  <jcmvbkbc@gmail.com>
+
+	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}.
+
+2020-04-21  Tamar Christina  <tamar.christina@arm.com>
+
+	PR binutils/24753
+	* compress.c (bfd_get_full_section_contents): Exclude sections with no
+	content.
+
+2020-04-21  H.J. Lu  <hongjiu.lu@intel.com>
+
+	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.
+
+2020-04-21  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* 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.
+
+2020-04-21  Nick Clifton  <nickc@redhat.com>
+
+	* po/sr.po: Updated Serbian translation.
+
+2020-04-21  Alan Modra  <amodra@gmail.com>
+
+	* elf32-sh.c (sh_elf_relocate_section): Remove STO_SH5_ISA32
+	processing.
+
+2020-04-20  Stephen Casner  <casner@acm.org>
+
+	* 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.
+
+2020-04-20  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_size_stubs): Strip relbrlt too.
+
+2020-04-18  Alan Modra  <amodra@gmail.com>
+
+	* section.c (bfd_is_const_section): Correct test for special
+	sections.
+	* bfd-in2.h: Regenerate.
+
+2020-04-17  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-04-14  Fangrui Song  <maskray@google.com>
+
+	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.
+
+2020-04-01  H.J. Lu  <hongjiu.lu@intel.com>
+
+	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>
+
+	* coff-alpha.c (alpha_ecoff_get_elt_at_filepos): Correct bfd_bread
+	return value check.
+
+2020-03-31  Alan Modra  <amodra@gmail.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.
+
+2020-03-31  Alan Modra  <amodra@gmail.com>
+
+	* tekhex.c (pass_over): Check is_eof before reading buffer.
+
+2020-03-30  Nick Clifton  <nickc@redhat.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.
+
+2020-03-30  Alan Modra  <amodra@gmail.com>
+
+	PR 25745
+	* elf64-ppc.c (ppc64_elf_build_stubs): Use asprintf to form
+	statistics message.
+
+2020-03-26  Nick Clifton  <nickc@redhat.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.
+
+2020-03-26  Alan Modra  <amodra@gmail.com>
+
+	* i386msdos.c (msdos_object_p): Catch -1 return from bfd_bread.
+
+2020-03-26  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".
+
+2020-03-25  Nick Clifton  <nickc@redhat.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.
+
+2020-03-25  Shahab Vahedi  <shahab@synopsys.com>
+
+	* elf32-arc.c (PRINT_DEBUG_RELOC_INFO_BEFORE): Use the
+	correct field name in the output string.
+
+2020-03-25  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.
+
+2020-03-24  Nick Clifton  <nickc@redhat.com>
+	    Jaydeep Chauhan  <jaydeepchauhan1494@gmail.com>
+
+	PR 25713
+	* bfdio.c (_bfd_real_fopen): Add code to handle long filenames on
+	Win32 systems.
+
+2020-03-24  Nick Clifton  <nickc@redhat.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.
+
+2020-03-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/25717
+	* elf-bfd.h (elf_obj_tdata): Change num_group to unsigned int.
+
+2020-03-24  H.J. Lu  <hongjiu.lu@intel.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.
+
+2020-03-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.
+
+2020-03-23  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+
+	* elflink.c (_bfd_elf_tls_setup): Mention .tdata in comment.
+
+2020-03-23  Alan Modra  <amodra@gmail.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.
+
+2020-03-23  Alan Modra  <amodra@gmail.com>
+
+	* i386msdos.c (msdos_object_p): Don't access e_lfanew when that
+	field hasn't been read.  Remove unnecessary casts.
+
+2020-03-22  Alan Modra  <amodra@gmail.com>
+
+	* coff64-rs6000.c (xcoff64_slurp_armap): Ensure size is large
+	enough to read number of symbols.
+
+2020-03-20  H.J. Lu  <hongjiu.lu@intel.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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* configure.ac: Include netbsd-core.lo for all NetBSD arm and mips
+	targets.
+	* configure: Regenerated.
+
+2020-03-14  Alan Modra  <amodra@gmail.com>
+
+	* section.c (BFD_FAKE_SECTIONS): Formatting.
+	* bfd-in2.h: Regenerate.
+
+2020-03-13  Kamil Rytarowski  <n54@gmx.com>
+
+	* elf.c (elfcore_grok_netbsd_note): Add support for
+	NT_NETBSDCORE_LWPSTATUS notes.
+
+2020-03-13  Christophe Lyon  <christophe.lyon@linaro.org>
+
+	* 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.
+
+2020-03-13  H.J. Lu  <hongjiu.lu@intel.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.
+
+2020-03-02  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>
+
+	* vms-lib.c (_bfd_vms_lib_archive_p): Free memory on error paths.
+
+2020-02-28  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (alpha_vms_object_p): Use _bfd_malloc_and_read.
+	Remove duplicate undersize check.
+
+2020-02-27  Alan Modra  <amodra@gmail.com>
+
+	PR 24511
+	* mmo.c (mmo_scan): Set SEC_DATA for .data.
+
+2020-02-27  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-02-26  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-02-19  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-02-07  Nick Clifton  <nickc@redhat.com>
+
+	PR 23932
+	* elf.c (rewrite_elf_program_header): Do not complain if no
+	sections are mapped to a segment.
+
+2020-02-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	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.
+
+2020-02-06  H.J. Lu  <hongjiu.lu@intel.com>
+
+	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.
+
+2020-02-06  Maciej W. Rozycki  <macro@wdc.com>
+
+	* elf32-v850.c (v850_elf_relax_section): Fix the index used for
+	reporting an unrecognized instruction with R_V850_LONGJUMP.
+
+2020-02-05  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc_stub_plt_branch): Match comment with reality.
+
+2020-02-04  Alan Modra  <amodra@gmail.com>
+
+	* elf32-ppc.c (ppc_elf_relocate_section): After applying
+	R_PPC_VLE_ADDR20, goto copy_reloc.
+
+2020-02-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* bfd-in2.h: Regenerated.
+	* section.c (SEC_ASSEMBLER_SECTION_ID): Fix a typo in comments.
+
+2020-02-02  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/25380
+	* bfd-in2.h: Regenerated.
+	* 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.
+
+2020-01-31  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-01-16  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* 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.
+
+2020-01-16  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* peXXigen.c (debug_type_names): Add names for new debug data type
+	values.
+
+2020-01-16  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* peXXigen.c (pe_print_debugdata): Fix the iteration variable for
+	inner loop.  Fix a memory leak.
+
+2020-01-30  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-01-27  Jim Wilson  <jimw@sifive.com>
+
+	* cpu-riscv.c (riscv_scan): New.
+	(N): Change bfd_default_scan to riscv_scan.
+
+2020-01-27  Andreas Schwab  <schwab@suse.de>
+
+	* 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.
+
+2020-01-27  H.J. Lu  <hongjiu.lu@intel.com>
+	    Alan Modra  <amodra@gmail.com>
+
+	PR ld/25458
+	* elflink.c (_bfd_elf_gc_mark_rsec): Mark all weak aliases.
+
+2020-01-24  Jim Wilson  <jimw@sifive.com>
+
+	* 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.
+
+2020-01-24  Nick Clifton  <nickc@redhat.com>
+
+	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.
+
+2020-01-23  Nick Clifton  <nickc@redhat.com>
+
+	* po/fr.po: Updated French translation.
+
+2020-01-23  Alan Modra  <amodra@gmail.com>
+
+	PR 25444
+	* elf.c (assign_file_positions_for_load_sections): Avoid divide
+	by zero when p_align is zero.
+
+2020-01-22  Maxim Blinov  <maxim.blinov@embecosm.com>
+
+	* 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.
+
+2020-01-22  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc64_elf_size_stubs): Correct condition under
+	which __tls_get_addr calls will be eliminated.
+
+2020-01-20  Nick Clifton  <nickc@redhat.com>
+
+	* po/pt.po: Updates Portuguese translation.
+	* po/ru.po: Updated Russian translation.
+	* po/uk.po: Updated Ukranian translation.
+
+2020-01-20  H.J. Lu  <hongjiu.lu@intel.com>
+
+	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.
+
+2020-01-20  Alan Modra  <amodra@gmail.com>
+
+	* elf64-ppc.c (ppc_elf_hash_entry): New function, use throughout file.
+	(defined_sym_val, is_tls_get_addr): Likewise.
+
+2020-01-18  Nick Clifton  <nickc@redhat.com>
+
+	* version.m4 (BFD_VERSION): Set to 2.34.50.
+	* configure: Regenerate.
+	* po/bfd.pot: Regenerate.
+
+2020-01-18  Nick Clifton  <nickc@redhat.com>
+
+	Binutils 2.34 branch created.
+
+2020-01-17  Christian Biesinger  <cbiesinger@google.com>
+
+	* 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).
+
+2020-01-15  Lars Brinkhoff  <lars@nocrew.org>
+
+	PR 20694
+	* pdp11.c (TARGET_PAGE_SIZE): Set to 8192.
+
+2020-01-15  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-01-14  Alan Modra  <amodra@gmail.com>
+
+	* som.c (som_bfd_count_ar_symbols): Error when file position
+	of symbols on chains is not strictly increasing.
+
+2020-01-14  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-01-13  Alan Modra  <amodra@gmail.com>
+
+	* vms-alpha.c (_bfd_vms_slurp_egsd): Ensure minimum size even
+	for "ignored" records.
+
+2020-01-13  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-01-10  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	PR ld/22269
+	* elf32-arm.c (elf32_arm_final_link_relocate): Use
+	UNDEFWEAK_NO_DYNAMIC_RELOC.
+	(allocate_dynrelocs_for_symbol): Likewise.
+
+2020-01-10  Tamar Christina  <tamar.christina@arm.com>
+
+	PR 25210
+	* elfnn-aarch64.c (_bfd_aarch64_create_stub_section): Remove elfclass.
+
+2020-01-10  Alan Modra  <amodra@gmail.com>
+
+	* coff-alpha.c (alpha_ecoff_object_p): Calculate size in bfd_size_type.
+
+2020-01-09  Nick Clifton  <nickc@redhat.com>
+
+	PR 25221
+	* bfd.c (bfd_convert_section_contents): Check for a compress
+	header size that is larger than the actual section size.
+
+2020-01-08  Alan Modra  <amodra@gmail.com>
+
+	PR 25351
+	* elflink.c (bfd_elf_final_link): Call _bfd_fix_excluded_sec_syms
+	after removing sections.
+
+2020-01-06  Jim Wilson  <jimw@sifive.com>
+
+	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.
+
+2020-01-06  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-01-06  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-01-06  Alan Modra  <amodra@gmail.com>
+
+	* som.c (som_bfd_fill_in_ar_symbols): Bounds check som_dict index.
+
+2020-01-06  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-01-04  Alan Modra  <amodra@gmail.com>
+
+	* 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.
+
+2020-01-04  Alan Modra  <amodra@gmail.com>
+
+	* mmo.c (mmo_mkobject): Allocate tdata with bfd_zalloc.
+
+2020-01-04  Alan Modra  <amodra@gmail.com>
+
+	* coffgen.c (coff_real_object_p): Free malloc'd memory on target
+	match too.
+
+2020-01-03  Nick Clifton  <nickc@redhat.com>
+
+	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.
+
+2020-01-03  Nick Clifton  <nickc@redhat.com>
+
+	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.
+
+2020-01-03  Sergei Trofimovich  <siarheit@google.com>
+
+        * 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.
+
+2020-01-03  Jan Beulich  <jbeulich@suse.com>
+
+	* mach-o.c (cpusubtype, bfd_mach_o_header_p): Insert underscore
+	in parameter names.
+	(bfd_mach_o_scan): Insert underscore in two variable names.
+
+2020-01-02  Sergey Belyashov  <sergey.belyashov@gmail.com>
+
+	* 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.
+
+2020-01-02  Tamar Christina  <tamar.christina@arm.com>
+
+	PR 25210
+	PR 24753
+	* elfnn-aarch64.c (_bfd_aarch64_create_stub_section): Set ELF class.
+
+2020-01-01  Alan Modra  <amodra@gmail.com>
+
+	Update year range in copyright notice of all files.
+
+For older changes see ChangeLog-2019
+
+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.
+
+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.20200303/bfd/cisco-core.c ./bfd/cisco-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cisco-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cisco-core.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for CISCO crash dumps.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 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,13 +92,13 @@ 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)
+  if (bfd_seek (abfd, crash_info_loc, SEEK_SET) != 0)
     return NULL;
 
-  nread = bfd_bread (buf, (bfd_size_type) 4, abfd);
+  nread = bfd_read (buf, 4, abfd);
   if (nread != 4)
     {
       if (bfd_get_error () != bfd_error_system_call)
@@ -107,14 +107,14 @@ cisco_core_file_validate (bfd *abfd, int
     }
   crashinfo_offset = MASK_ADDR (bfd_get_32 (abfd, buf));
 
-  if (bfd_seek (abfd, (file_ptr) crashinfo_offset, SEEK_SET) != 0)
+  if (bfd_seek (abfd, crashinfo_offset, SEEK_SET) != 0)
     {
       /* Most likely we failed because of a bogus (huge) offset */
       bfd_set_error (bfd_error_wrong_format);
       return NULL;
     }
 
-  nread = bfd_bread (&crashinfo, (bfd_size_type) sizeof (crashinfo), abfd);
+  nread = bfd_read (&crashinfo, sizeof (crashinfo), abfd);
   if (nread != sizeof (crashinfo))
     {
       if (bfd_get_error () != bfd_error_system_call)
@@ -154,7 +154,7 @@ cisco_core_file_validate (bfd *abfd, int
   /* OK, we believe you.  You're a core file.  */
 
   amt = sizeof (struct cisco_core_struct);
-  abfd->tdata.cisco_core_data = (struct cisco_core_struct *) bfd_zmalloc (amt);
+  abfd->tdata.cisco_core_data = bfd_zalloc (abfd, amt);
   if (abfd->tdata.cisco_core_data == NULL)
     return NULL;
 
@@ -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 *
@@ -329,6 +329,7 @@ const bfd_target core_cisco_be_vec =
   ' ',				/* ar_pad_char */
   16,				/* ar_max_namelen */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
@@ -384,6 +385,7 @@ const bfd_target core_cisco_le_vec =
   ' ',				/* ar_pad_char */
   16,				/* ar_max_namelen */
   0,				/* match_priority */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff64-rs6000.c ./bfd/coff64-rs6000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff64-rs6000.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff64-rs6000.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written Clinton Popetz.
    Contributed by Cygnus Support.
 
@@ -86,10 +86,10 @@ static void _bfd_xcoff64_swap_lineno_in
   (bfd *, void *, void *);
 static unsigned int _bfd_xcoff64_swap_lineno_out
   (bfd *, void *, void *);
-static bfd_boolean _bfd_xcoff64_put_symbol_name
+static bool _bfd_xcoff64_put_symbol_name
   (struct bfd_link_info *, struct bfd_strtab_hash *,
    struct internal_syment *, const char *);
-static bfd_boolean _bfd_xcoff64_put_ldsymbol_name
+static bool _bfd_xcoff64_put_ldsymbol_name
   (bfd *, struct xcoff_loader_info *, struct internal_ldsym *, const char *);
 static void _bfd_xcoff64_swap_sym_in
   (bfd *, void *, void *);
@@ -103,17 +103,17 @@ static void xcoff64_swap_reloc_in
   (bfd *, void *, void *);
 static unsigned int xcoff64_swap_reloc_out
   (bfd *, void *, void *);
-extern bfd_boolean _bfd_xcoff_mkobject
+extern bool _bfd_xcoff_mkobject
   (bfd *);
-extern bfd_boolean _bfd_xcoff_copy_private_bfd_data
+extern bool _bfd_xcoff_copy_private_bfd_data
   (bfd *, bfd *);
-extern bfd_boolean _bfd_xcoff_is_local_label_name
+extern bool _bfd_xcoff_is_local_label_name
   (bfd *, const char *);
 extern void xcoff64_rtype2howto
   (arelent *, struct internal_reloc *);
 extern reloc_howto_type * xcoff64_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-extern bfd_boolean _bfd_xcoff_slurp_armap
+extern bool _bfd_xcoff_slurp_armap
   (bfd *);
 extern void *_bfd_xcoff_read_ar_hdr
   (bfd *);
@@ -121,9 +121,9 @@ extern bfd *_bfd_xcoff_openr_next_archiv
   (bfd *, bfd *);
 extern int _bfd_xcoff_stat_arch_elt
   (bfd *, struct stat *);
-extern bfd_boolean _bfd_xcoff_write_armap
+extern bool _bfd_xcoff_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int);
-extern bfd_boolean _bfd_xcoff_write_archive_contents
+extern bool _bfd_xcoff_write_archive_contents
   (bfd *);
 extern int _bfd_xcoff_sizeof_headers
   (bfd *, struct bfd_link_info *);
@@ -147,15 +147,13 @@ static void xcoff64_swap_ldrel_in
   (bfd *, const void *, struct internal_ldrel *);
 static void xcoff64_swap_ldrel_out
   (bfd *, const struct internal_ldrel *, void *d);
-static bfd_boolean xcoff64_write_object_contents
-  (bfd *);
-static bfd_boolean xcoff64_ppc_relocate_section
+static bool xcoff64_ppc_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    struct internal_reloc *, struct internal_syment *,
    asection **);
-static bfd_boolean xcoff64_slurp_armap
+static bool 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 *);
@@ -163,54 +161,75 @@ static int xcoff64_sizeof_headers
   (bfd *, struct bfd_link_info *);
 static asection *xcoff64_create_csect_from_smclas
   (bfd *, union internal_auxent *, const char *);
-static bfd_boolean xcoff64_is_lineno_count_overflow
+static bool xcoff64_is_lineno_count_overflow
   (bfd *, bfd_vma);
-static bfd_boolean xcoff64_is_reloc_count_overflow
+static bool xcoff64_is_reloc_count_overflow
   (bfd *, bfd_vma);
 static bfd_vma xcoff64_loader_symbol_offset
   (bfd *, struct internal_ldhdr *);
 static bfd_vma xcoff64_loader_reloc_offset
   (bfd *, struct internal_ldhdr *);
-static bfd_boolean xcoff64_generate_rtinit
-  (bfd *, const char *, const char *, bfd_boolean);
-static bfd_boolean xcoff64_bad_format_hook
+static bool xcoff64_generate_rtinit
+  (bfd *, const char *, const char *, bool);
+static bool xcoff64_bad_format_hook
   (bfd *, void *);
 
 /* Relocation functions */
-static bfd_boolean xcoff64_reloc_type_br
-  (XCOFF_RELOC_FUNCTION_ARGS);
+static xcoff_reloc_function xcoff64_reloc_type_br;
 
-bfd_boolean (*xcoff64_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
-  (XCOFF_RELOC_FUNCTION_ARGS) =
+xcoff_reloc_function *const
+xcoff64_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION] =
 {
-  xcoff_reloc_type_pos,	 /* R_POS   (0x00) */
-  xcoff_reloc_type_neg,	 /* R_NEG   (0x01) */
-  xcoff_reloc_type_rel,	 /* R_REL   (0x02) */
-  xcoff_reloc_type_toc,	 /* R_TOC   (0x03) */
-  xcoff_reloc_type_fail, /* R_RTB   (0x04) */
-  xcoff_reloc_type_toc,	 /* R_GL    (0x05) */
-  xcoff_reloc_type_toc,	 /* R_TCL   (0x06) */
-  xcoff_reloc_type_fail, /*	    (0x07) */
-  xcoff_reloc_type_ba,	 /* R_BA    (0x08) */
-  xcoff_reloc_type_fail, /*	    (0x09) */
-  xcoff64_reloc_type_br, /* R_BR    (0x0a) */
-  xcoff_reloc_type_fail, /*	    (0x0b) */
-  xcoff_reloc_type_pos,	 /* R_RL    (0x0c) */
-  xcoff_reloc_type_pos,	 /* R_RLA   (0x0d) */
-  xcoff_reloc_type_fail, /*	    (0x0e) */
-  xcoff_reloc_type_noop, /* R_REF   (0x0f) */
-  xcoff_reloc_type_fail, /*	    (0x10) */
-  xcoff_reloc_type_fail, /*	    (0x11) */
-  xcoff_reloc_type_toc,	 /* R_TRL   (0x12) */
-  xcoff_reloc_type_toc,	 /* R_TRLA  (0x13) */
-  xcoff_reloc_type_fail, /* R_RRTBI (0x14) */
-  xcoff_reloc_type_fail, /* R_RRTBA (0x15) */
-  xcoff_reloc_type_ba,	 /* R_CAI   (0x16) */
-  xcoff_reloc_type_crel, /* R_CREL  (0x17) */
-  xcoff_reloc_type_ba,	 /* R_RBA   (0x18) */
-  xcoff_reloc_type_ba,	 /* R_RBAC  (0x19) */
-  xcoff64_reloc_type_br, /* R_RBR   (0x1a) */
-  xcoff_reloc_type_ba,	 /* R_RBRC  (0x1b) */
+  xcoff_reloc_type_pos,  /* R_POS     (0x00) */
+  xcoff_reloc_type_neg,  /* R_NEG     (0x01) */
+  xcoff_reloc_type_rel,  /* R_REL     (0x02) */
+  xcoff_reloc_type_toc,  /* R_TOC     (0x03) */
+  xcoff_reloc_type_toc,  /* R_TRL     (0x04) */
+  xcoff_reloc_type_toc,  /* R_GL      (0x05) */
+  xcoff_reloc_type_toc,  /* R_TCL     (0x06) */
+  xcoff_reloc_type_fail, /*           (0x07) */
+  xcoff_reloc_type_ba,   /* R_BA      (0x08) */
+  xcoff_reloc_type_fail, /*           (0x09) */
+  xcoff64_reloc_type_br, /* R_BR      (0x0a) */
+  xcoff_reloc_type_fail, /*           (0x0b) */
+  xcoff_reloc_type_pos,  /* R_RL      (0x0c) */
+  xcoff_reloc_type_pos,  /* R_RLA     (0x0d) */
+  xcoff_reloc_type_fail, /*           (0x0e) */
+  xcoff_reloc_type_noop, /* R_REF     (0x0f) */
+  xcoff_reloc_type_fail, /*           (0x10) */
+  xcoff_reloc_type_fail, /*           (0x11) */
+  xcoff_reloc_type_fail, /*           (0x12) */
+  xcoff_reloc_type_toc,  /* R_TRLA    (0x13) */
+  xcoff_reloc_type_fail, /* R_RRTBI   (0x14) */
+  xcoff_reloc_type_fail, /* R_RRTBA   (0x15) */
+  xcoff_reloc_type_ba,   /* R_CAI     (0x16) */
+  xcoff_reloc_type_crel, /* R_CREL    (0x17) */
+  xcoff_reloc_type_ba,   /* R_RBA     (0x18) */
+  xcoff_reloc_type_ba,   /* R_RBAC    (0x19) */
+  xcoff64_reloc_type_br, /* R_RBR     (0x1a) */
+  xcoff_reloc_type_ba,   /* R_RBRC    (0x1b) */
+  xcoff_reloc_type_fail, /*           (0x1c) */
+  xcoff_reloc_type_fail, /*           (0x1d) */
+  xcoff_reloc_type_fail, /*           (0x1e) */
+  xcoff_reloc_type_fail, /*           (0x1f) */
+  xcoff_reloc_type_tls,  /* R_TLS     (0x20) */
+  xcoff_reloc_type_tls,  /* R_TLS_IE  (0x21) */
+  xcoff_reloc_type_tls,  /* R_TLS_LD  (0x22) */
+  xcoff_reloc_type_tls,  /* R_TLS_LE  (0x23) */
+  xcoff_reloc_type_tls,  /* R_TLSM    (0x24) */
+  xcoff_reloc_type_tls,  /* R_TLSML   (0x25) */
+  xcoff_reloc_type_fail, /*           (0x26) */
+  xcoff_reloc_type_fail, /*           (0x27) */
+  xcoff_reloc_type_fail, /*           (0x28) */
+  xcoff_reloc_type_fail, /*           (0x29) */
+  xcoff_reloc_type_fail, /*           (0x2a) */
+  xcoff_reloc_type_fail, /*           (0x2b) */
+  xcoff_reloc_type_fail, /*           (0x2c) */
+  xcoff_reloc_type_fail, /*           (0x2d) */
+  xcoff_reloc_type_fail, /*           (0x2e) */
+  xcoff_reloc_type_fail, /*           (0x2f) */
+  xcoff_reloc_type_toc, /* R_TOCU    (0x30) */
+  xcoff_reloc_type_toc, /* R_TOCL    (0x31) */
 };
 
 /* coffcode.h needs these to be defined.  */
@@ -238,9 +257,9 @@ 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
+extern bool rs6000coff_core_file_matches_executable_p
   (bfd *cbfd, bfd *ebfd);
 extern char *rs6000coff_core_file_failing_command
   (bfd *abfd);
@@ -343,40 +362,59 @@ _bfd_xcoff64_swap_sym_out (bfd *abfd, vo
 }
 
 static void
-_bfd_xcoff64_swap_aux_in (bfd *abfd, void *ext1, int type, int in_class,
-			  int indx, int numaux, void *in1)
+_bfd_xcoff64_swap_aux_in (bfd *abfd, void *ext1, int type ATTRIBUTE_UNUSED,
+			  int in_class, int indx, int numaux, void *in1)
 {
   union external_auxent *ext = (union external_auxent *) ext1;
   union internal_auxent *in = (union internal_auxent *) in1;
+  unsigned char auxtype;
 
   switch (in_class)
     {
+    default:
+      _bfd_error_handler
+	/* xgettext: c-format */
+	(_("%pB: unsupported swap_aux_in for storage class %#x"),
+	 abfd, (unsigned int) in_class);
+      bfd_set_error (bfd_error_bad_value);
+      break;
+
     case C_FILE:
+      auxtype = H_GET_8 (abfd, ext->x_file.x_auxtype);
+      if (auxtype != _AUX_FILE)
+	goto error;
+
       if (ext->x_file.x_n.x_n.x_zeroes[0] == 0)
 	{
-	  in->x_file.x_n.x_zeroes = 0;
-	  in->x_file.x_n.x_offset =
+	  in->x_file.x_n.x_n.x_zeroes = 0;
+	  in->x_file.x_n.x_n.x_offset =
 	    H_GET_32 (abfd, ext->x_file.x_n.x_n.x_offset);
 	}
       else
-	{
-	  memcpy (in->x_file.x_fname, ext->x_file.x_n.x_fname, FILNMLEN);
-	}
-      goto end;
+	memcpy (in->x_file.x_n.x_fname, ext->x_file.x_n.x_fname, FILNMLEN);
+      in->x_file.x_ftype = H_GET_8 (abfd, ext->x_file.x_ftype);
+      break;
 
-      /* RS/6000 "csect" auxents */
+      /* RS/6000 "csect" auxents.
+         There is always a CSECT auxiliary entry. But functions can
+         have FCN and EXCEPT ones too. In this case, CSECT is always the last
+         one.
+         For now, we only support FCN types.  */
     case C_EXT:
     case C_AIX_WEAKEXT:
     case C_HIDEXT:
       if (indx + 1 == numaux)
 	{
-	  bfd_signed_vma h = 0;
-	  bfd_vma l = 0;
+	  /* C_EXT can have several aux enties. But the _AUX_CSECT is always
+	     the last one.  */
+	  auxtype = H_GET_8 (abfd, ext->x_csect.x_auxtype);
+	  if (auxtype != _AUX_CSECT)
+	    goto error;
 
-	  h = H_GET_S32 (abfd, ext->x_csect.x_scnlen_hi);
-	  l = H_GET_32 (abfd, ext->x_csect.x_scnlen_lo);
+	  bfd_vma h = H_GET_32 (abfd, ext->x_csect.x_scnlen_hi);
+	  bfd_vma l = H_GET_32 (abfd, ext->x_csect.x_scnlen_lo);
 
-	  in->x_csect.x_scnlen.l = h << 32 | (l & 0xffffffff);
+	  in->x_csect.x_scnlen.u64 = h << 32 | (l & 0xffffffff);
 
 	  in->x_csect.x_parmhash = H_GET_32 (abfd, ext->x_csect.x_parmhash);
 	  in->x_csect.x_snhash = H_GET_16 (abfd, ext->x_csect.x_snhash);
@@ -385,55 +423,67 @@ _bfd_xcoff64_swap_aux_in (bfd *abfd, voi
 	     byte orders.  */
 	  in->x_csect.x_smtyp = H_GET_8 (abfd, ext->x_csect.x_smtyp);
 	  in->x_csect.x_smclas = H_GET_8 (abfd, ext->x_csect.x_smclas);
-	  goto end;
+	}
+      else
+	{
+	  /* It can also be a _AUX_EXCEPT entry. But it's not supported
+	     for now. */
+	  auxtype = H_GET_8 (abfd, ext->x_fcn.x_auxtype);
+	  if (auxtype != _AUX_FCN)
+	    goto error;
+
+	  in->x_sym.x_fcnary.x_fcn.x_lnnoptr
+	    = H_GET_64 (abfd, ext->x_fcn.x_lnnoptr);
+	  in->x_sym.x_misc.x_fsize
+	    = H_GET_32 (abfd, ext->x_fcn.x_fsize);
+	  in->x_sym.x_fcnary.x_fcn.x_endndx.u32
+	    = H_GET_32 (abfd, ext->x_fcn.x_endndx);
 	}
       break;
 
     case C_STAT:
-    case C_LEAFSTAT:
-    case C_HIDDEN:
-      if (type == T_NULL)
-	{
-	  /* PE defines some extra fields; we zero them out for
-	     safety.  */
-	  in->x_scn.x_checksum = 0;
-	  in->x_scn.x_associated = 0;
-	  in->x_scn.x_comdat = 0;
-
-	  goto end;
-	}
+      _bfd_error_handler
+	/* xgettext: c-format */
+	(_("%pB: C_STAT isn't supported by XCOFF64"),
+	 abfd);
+      bfd_set_error (bfd_error_bad_value);
       break;
-    }
 
-  if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
-      || ISTAG (in_class))
-    {
-      in->x_sym.x_fcnary.x_fcn.x_lnnoptr
-	= H_GET_64 (abfd, ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
-      in->x_sym.x_fcnary.x_fcn.x_endndx.l
-	= H_GET_32 (abfd, ext->x_sym.x_fcnary.x_fcn.x_endndx);
-    }
-  if (ISFCN (type))
-    {
-      in->x_sym.x_misc.x_fsize
-	= H_GET_32 (abfd, ext->x_sym.x_fcnary.x_fcn.x_fsize);
-    }
-  else
-    {
+    case C_BLOCK:
+    case C_FCN:
+      auxtype = H_GET_8 (abfd, ext->x_sym.x_auxtype);
+      if (auxtype != _AUX_SYM)
+	goto error;
+
       in->x_sym.x_misc.x_lnsz.x_lnno
-	= H_GET_32 (abfd, ext->x_sym.x_fcnary.x_lnsz.x_lnno);
-      in->x_sym.x_misc.x_lnsz.x_size
-	= H_GET_16 (abfd, ext->x_sym.x_fcnary.x_lnsz.x_size);
+	= H_GET_32 (abfd, ext->x_sym.x_lnno);
+      break;
+
+    case C_DWARF:
+      auxtype = H_GET_8 (abfd, ext->x_sect.x_auxtype);
+      if (auxtype != _AUX_SECT)
+	goto error;
+
+      in->x_sect.x_scnlen = H_GET_64 (abfd, ext->x_sect.x_scnlen);
+      in->x_sect.x_nreloc = H_GET_64 (abfd, ext->x_sect.x_nreloc);
+      break;
     }
 
- end: ;
+  return;
+
+ error:
+  _bfd_error_handler
+    /* xgettext: c-format */
+    (_("%pB: wrong auxtype %#x for storage class %#x"),
+     abfd, auxtype, (unsigned int) in_class);
+  bfd_set_error (bfd_error_bad_value);
+
+
 }
 
 static unsigned int
-_bfd_xcoff64_swap_aux_out (bfd *abfd, void *inp, int type, int in_class,
-			   int indx ATTRIBUTE_UNUSED,
-			   int numaux ATTRIBUTE_UNUSED,
-			   void *extp)
+_bfd_xcoff64_swap_aux_out (bfd *abfd, void *inp, int type ATTRIBUTE_UNUSED,
+			   int in_class, int indx, int numaux, void *extp)
 {
   union internal_auxent *in = (union internal_auxent *) inp;
   union external_auxent *ext = (union external_auxent *) extp;
@@ -441,21 +491,32 @@ _bfd_xcoff64_swap_aux_out (bfd *abfd, vo
   memset (ext, 0, bfd_coff_auxesz (abfd));
   switch (in_class)
     {
+    default:
+      _bfd_error_handler
+	/* xgettext: c-format */
+	(_("%pB: unsupported swap_aux_out for storage class %#x"),
+	 abfd, (unsigned int) in_class);
+      bfd_set_error (bfd_error_bad_value);
+      break;
+
     case C_FILE:
-      if (in->x_file.x_n.x_zeroes == 0)
+      if (in->x_file.x_n.x_n.x_zeroes == 0)
 	{
 	  H_PUT_32 (abfd, 0, ext->x_file.x_n.x_n.x_zeroes);
-	  H_PUT_32 (abfd, in->x_file.x_n.x_offset,
+	  H_PUT_32 (abfd, in->x_file.x_n.x_n.x_offset,
 		    ext->x_file.x_n.x_n.x_offset);
 	}
       else
-	{
-	  memcpy (ext->x_file.x_n.x_fname, in->x_file.x_fname, FILNMLEN);
-	}
-      H_PUT_8 (abfd, _AUX_FILE, ext->x_auxtype.x_auxtype);
-      goto end;
+	memcpy (ext->x_file.x_n.x_fname, in->x_file.x_n.x_fname, FILNMLEN);
+      H_PUT_8 (abfd, in->x_file.x_ftype, ext->x_file.x_ftype);
+      H_PUT_8 (abfd, _AUX_FILE, ext->x_file.x_auxtype);
+      break;
 
-      /* RS/6000 "csect" auxents */
+      /* RS/6000 "csect" auxents.
+         There is always a CSECT auxiliary entry. But functions can
+         have FCN and EXCEPT ones too. In this case, CSECT is always the last
+         one.
+         For now, we only support FCN types.  */
     case C_EXT:
     case C_AIX_WEAKEXT:
     case C_HIDEXT:
@@ -463,9 +524,9 @@ _bfd_xcoff64_swap_aux_out (bfd *abfd, vo
 	{
 	  bfd_vma temp;
 
-	  temp = in->x_csect.x_scnlen.l & 0xffffffff;
+	  temp = in->x_csect.x_scnlen.u64 & 0xffffffff;
 	  H_PUT_32 (abfd, temp, ext->x_csect.x_scnlen_lo);
-	  temp = in->x_csect.x_scnlen.l >> 32;
+	  temp = in->x_csect.x_scnlen.u64 >> 32;
 	  H_PUT_32 (abfd, temp, ext->x_csect.x_scnlen_hi);
 	  H_PUT_32 (abfd, in->x_csect.x_parmhash, ext->x_csect.x_parmhash);
 	  H_PUT_16 (abfd, in->x_csect.x_snhash, ext->x_csect.x_snhash);
@@ -474,71 +535,65 @@ _bfd_xcoff64_swap_aux_out (bfd *abfd, vo
 	     byte orders.  */
 	  H_PUT_8 (abfd, in->x_csect.x_smtyp, ext->x_csect.x_smtyp);
 	  H_PUT_8 (abfd, in->x_csect.x_smclas, ext->x_csect.x_smclas);
-	  H_PUT_8 (abfd, _AUX_CSECT, ext->x_auxtype.x_auxtype);
-	  goto end;
+	  H_PUT_8 (abfd, _AUX_CSECT, ext->x_csect.x_auxtype);
+	}
+      else
+	{
+	  H_PUT_64 (abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,
+		    ext->x_fcn.x_lnnoptr);
+	  H_PUT_32 (abfd, in->x_sym.x_misc.x_fsize, ext->x_fcn.x_fsize);
+	  H_PUT_32 (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.u32,
+		    ext->x_fcn.x_endndx);
+	  H_PUT_8 (abfd, _AUX_FCN, ext->x_csect.x_auxtype);
 	}
       break;
 
     case C_STAT:
-    case C_LEAFSTAT:
-    case C_HIDDEN:
-      if (type == T_NULL)
-	{
-	  goto end;
-	}
+      _bfd_error_handler
+	/* xgettext: c-format */
+	(_("%pB: C_STAT isn't supported by XCOFF64"),
+	 abfd);
+      bfd_set_error (bfd_error_bad_value);
       break;
-    }
 
-  if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
-      || ISTAG (in_class))
-    {
-      H_PUT_64 (abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,
-	       ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
-      H_PUT_8 (abfd, _AUX_FCN,
-	       ext->x_auxtype.x_auxtype);
-      H_PUT_32 (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l,
-	       ext->x_sym.x_fcnary.x_fcn.x_endndx);
-    }
-  if (ISFCN (type))
-    {
-      H_PUT_32 (abfd, in->x_sym.x_misc.x_fsize,
-	       ext->x_sym.x_fcnary.x_fcn.x_fsize);
-    }
-  else
-    {
-      H_PUT_32 (abfd, in->x_sym.x_misc.x_lnsz.x_lnno,
-	       ext->x_sym.x_fcnary.x_lnsz.x_lnno);
-      H_PUT_16 (abfd, in->x_sym.x_misc.x_lnsz.x_size,
-	       ext->x_sym.x_fcnary.x_lnsz.x_size);
-    }
+    case C_BLOCK:
+    case C_FCN:
+      H_PUT_32 (abfd, in->x_sym.x_misc.x_lnsz.x_lnno, ext->x_sym.x_lnno);
+      H_PUT_8 (abfd, _AUX_SYM, ext->x_sym.x_auxtype);
+      break;
 
- end:
+    case C_DWARF:
+      H_PUT_64 (abfd, in->x_sect.x_scnlen, ext->x_sect.x_scnlen);
+      H_PUT_64 (abfd, in->x_sect.x_nreloc, ext->x_sect.x_nreloc);
+      H_PUT_8 (abfd, _AUX_SECT, ext->x_sect.x_auxtype);
+      break;
+    }
 
   return bfd_coff_auxesz (abfd);
 }
 
-static bfd_boolean
+static bool
 _bfd_xcoff64_put_symbol_name (struct bfd_link_info *info,
 			      struct bfd_strtab_hash *strtab,
 			      struct internal_syment *sym,
 			      const char *name)
 {
-  bfd_boolean hash;
+  bool hash;
   bfd_size_type indx;
 
   hash = !info->traditional_format;
-  indx = _bfd_stringtab_add (strtab, name, hash, FALSE);
+  indx = _bfd_stringtab_add (strtab, name, hash, false);
 
   if (indx == (bfd_size_type) -1)
-    return FALSE;
+    return false;
 
   sym->_n._n_n._n_zeroes = 0;
   sym->_n._n_n._n_offset = STRING_SIZE_SIZE + indx;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 _bfd_xcoff64_put_ldsymbol_name (bfd *abfd ATTRIBUTE_UNUSED,
 				struct xcoff_loader_info *ldinfo,
 				struct internal_ldsym *ldsym,
@@ -561,21 +616,21 @@ _bfd_xcoff64_put_ldsymbol_name (bfd *abf
       newstrings = bfd_realloc (ldinfo->strings, newalc);
       if (newstrings == NULL)
 	{
-	  ldinfo->failed = TRUE;
-	  return FALSE;
+	  ldinfo->failed = true;
+	  return false;
 	}
       ldinfo->string_alc = newalc;
       ldinfo->strings = newstrings;
     }
 
-  bfd_put_16 (ldinfo->output_bfd, (bfd_vma) (len + 1),
-	      ldinfo->strings + ldinfo->string_size);
+  ldinfo->strings[ldinfo->string_size] = ((len + 1) >> 8) & 0xff;
+  ldinfo->strings[ldinfo->string_size + 1] = ((len + 1)) & 0xff;
   strcpy (ldinfo->strings + ldinfo->string_size + 2, name);
   ldsym->_l._l_l._l_zeroes = 0;
   ldsym->_l._l_l._l_offset = ldinfo->string_size + 2;
   ldinfo->string_size += len + 3;
 
-  return TRUE;
+  return true;
 }
 
 /* Routines to swap information in the XCOFF .loader section.  If we
@@ -712,354 +767,8 @@ xcoff64_swap_ldrel_out (bfd *abfd, const
   bfd_put_32 (abfd, src->l_symndx, dst->l_symndx);
 }
 
-static bfd_boolean
-xcoff64_write_object_contents (bfd *abfd)
-{
-  asection *current;
-  bfd_boolean hasrelocs = FALSE;
-  bfd_boolean haslinno = FALSE;
-  file_ptr scn_base;
-  file_ptr reloc_base;
-  file_ptr lineno_base;
-  file_ptr sym_base;
-  unsigned long reloc_size = 0;
-  unsigned long lnno_size = 0;
-  asection *text_sec = NULL;
-  asection *data_sec = NULL;
-  asection *bss_sec = NULL;
-  struct internal_filehdr internal_f;
-  struct internal_aouthdr internal_a;
-
-  bfd_set_error (bfd_error_system_call);
-
-  if (! abfd->output_has_begun)
-    {
-      if (! bfd_coff_compute_section_file_positions (abfd))
-	return FALSE;
-    }
-
-  /* Work out the size of the reloc and linno areas.  */
-  reloc_base = obj_relocbase (abfd);
-
-  for (current = abfd->sections; current != NULL; current = current->next)
-    reloc_size += current->reloc_count * bfd_coff_relsz (abfd);
-
-  lineno_base = reloc_base + reloc_size;
-
-  /* Make a pass through the symbol table to count line number entries and
-     put them into the correct asections.  */
-  lnno_size = coff_count_linenumbers (abfd) * bfd_coff_linesz (abfd);
-
-  sym_base = lineno_base + lnno_size;
-
-  /* Indicate in each section->line_filepos its actual file address.  */
-  for (current = abfd->sections; current != NULL; current =  current->next)
-    {
-      if (current->lineno_count)
-	{
-	  current->line_filepos = lineno_base;
-	  current->moving_line_filepos = lineno_base;
-	  lineno_base += current->lineno_count * bfd_coff_linesz (abfd);
-	}
-      else
-	{
-	  current->line_filepos = 0;
-	}
-
-      if (current->reloc_count)
-	{
-	  current->rel_filepos = reloc_base;
-	  reloc_base += current->reloc_count * bfd_coff_relsz (abfd);
-	}
-      else
-	{
-	  current->rel_filepos = 0;
-	}
-    }
-
-  if ((abfd->flags & EXEC_P) != 0)
-    {
-      scn_base = bfd_coff_filhsz (abfd) + bfd_coff_aoutsz (abfd);
-      internal_f.f_opthdr = bfd_coff_aoutsz (abfd);
-    }
-  else
-    {
-      scn_base = bfd_coff_filhsz (abfd);
-      internal_f.f_opthdr = 0;
-    }
-
-  internal_f.f_nscns = 0;
-
-  if (bfd_seek (abfd, scn_base, SEEK_SET) != 0)
-    return FALSE;
-
-  for (current = abfd->sections; current != NULL; current = current->next)
-    {
-      struct internal_scnhdr section;
-      struct external_scnhdr buff;
-      bfd_size_type amount;
-
-      internal_f.f_nscns++;
-
-      strncpy (section.s_name, current->name, SCNNMLEN);
-
-      section.s_vaddr = current->vma;
-      section.s_paddr = current->lma;
-      section.s_size =  current->size;
-
-      /* If this section has no size or is unloadable then the scnptr
-	 will be 0 too.  */
-      if (current->size == 0
-	  || (current->flags & (SEC_LOAD | SEC_HAS_CONTENTS)) == 0)
-	{
-	  section.s_scnptr = 0;
-	}
-      else
-	{
-	  section.s_scnptr = current->filepos;
-	}
-
-      section.s_relptr = current->rel_filepos;
-      section.s_lnnoptr = current->line_filepos;
-      section.s_nreloc = current->reloc_count;
-
-      section.s_nlnno = current->lineno_count;
-      if (current->reloc_count != 0)
-	hasrelocs = TRUE;
-      if (current->lineno_count != 0)
-	haslinno = TRUE;
-
-      section.s_flags = sec_to_styp_flags (current->name, current->flags);
-
-      if (!strcmp (current->name, _TEXT))
-	{
-	  text_sec = current;
-	}
-      else if (!strcmp (current->name, _DATA))
-	{
-	  data_sec = current;
-	}
-      else if (!strcmp (current->name, _BSS))
-	{
-	  bss_sec = current;
-	}
-
-      amount = bfd_coff_scnhsz (abfd);
-      if (bfd_coff_swap_scnhdr_out (abfd, &section, &buff) == 0
-	  || bfd_bwrite (&buff, amount, abfd) != amount)
-	return FALSE;
-    }
-
-  internal_f.f_timdat = 0;
-
-  internal_f.f_flags = 0;
-
-  if (!hasrelocs)
-    internal_f.f_flags |= F_RELFLG;
-  if (!haslinno)
-    internal_f.f_flags |= F_LNNO;
-  if (abfd->flags & EXEC_P)
-    internal_f.f_flags |= F_EXEC;
-
-  /* FIXME: this is wrong for PPC_PE!  */
-  if (bfd_little_endian (abfd))
-    internal_f.f_flags |= F_AR32WR;
-  else
-    internal_f.f_flags |= F_AR32W;
-
-  if ((abfd->flags & DYNAMIC) != 0)
-    internal_f.f_flags |= F_SHROBJ;
-  if (bfd_get_section_by_name (abfd, _LOADER) != NULL)
-    internal_f.f_flags |= F_DYNLOAD;
-
-  memset (&internal_a, 0, sizeof internal_a);
-
-  internal_f.f_magic = bfd_xcoff_magic_number (abfd);
-  internal_a.magic = (abfd->flags & D_PAGED
-		      ? RS6K_AOUTHDR_ZMAGIC
-		      : (abfd->flags & WP_TEXT
-			 ? RS6K_AOUTHDR_NMAGIC
-			 : RS6K_AOUTHDR_OMAGIC));
-
-  /* FIXME: Does anybody ever set this to another value?  */
-  internal_a.vstamp = 0;
-
-  /* Now should write relocs, strings, syms.  */
-  obj_sym_filepos (abfd) = sym_base;
-
-  internal_f.f_symptr = 0;
-  internal_f.f_nsyms = 0;
-
-  /* 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.  */
-  if (bfd_get_symcount (abfd) != 0)
-    {
-      int firstundef;
-
-      if (!coff_renumber_symbols (abfd, &firstundef))
-	return FALSE;
-      coff_mangle_symbols (abfd);
-      if (! coff_write_symbols (abfd))
-	return FALSE;
-      if (! coff_write_linenumbers (abfd))
-	return FALSE;
-      if (! coff_write_relocs (abfd, firstundef))
-	return FALSE;
-
-      internal_f.f_symptr = sym_base;
-      internal_f.f_nsyms = bfd_get_symcount (abfd);
-    }
-  else if (obj_raw_syment_count (abfd) != 0)
-    {
-      internal_f.f_symptr = sym_base;
-
-      /* AIX appears to require that F_RELFLG not be set if there are
-	 local symbols but no relocations.  */
-      internal_f.f_flags &=~ F_RELFLG;
-    }
-  else
-    {
-      internal_f.f_flags |= F_LSYMS;
-    }
-
-  if (text_sec)
-    {
-      internal_a.tsize = text_sec->size;
-      internal_a.text_start = internal_a.tsize ? text_sec->vma : 0;
-    }
-
-  if (data_sec)
-    {
-      internal_a.dsize = data_sec->size;
-      internal_a.data_start = internal_a.dsize ? data_sec->vma : 0;
-    }
-
-  if (bss_sec)
-    {
-      internal_a.bsize = bss_sec->size;
-      if (internal_a.bsize && bss_sec->vma < internal_a.data_start)
-	internal_a.data_start = bss_sec->vma;
-    }
-
-  internal_a.entry = bfd_get_start_address (abfd);
-  internal_f.f_nsyms = obj_raw_syment_count (abfd);
-
-  if (xcoff_data (abfd)->full_aouthdr)
-    {
-      bfd_vma toc;
-      asection *loader_sec;
-
-      internal_a.vstamp = 1;
-
-      internal_a.o_snentry = xcoff_data (abfd)->snentry;
-      if (internal_a.o_snentry == 0)
-	internal_a.entry = (bfd_vma) -1;
-
-      if (text_sec != NULL)
-	{
-	  internal_a.o_sntext = text_sec->target_index;
-	  internal_a.o_algntext = bfd_section_alignment (text_sec);
-	}
-      else
-	{
-	  internal_a.o_sntext = 0;
-	  internal_a.o_algntext = 0;
-	}
-
-      if (data_sec != NULL)
-	{
-	  internal_a.o_sndata = data_sec->target_index;
-	  internal_a.o_algndata = bfd_section_alignment (data_sec);
-	}
-      else
-	{
-	  internal_a.o_sndata = 0;
-	  internal_a.o_algndata = 0;
-	}
-
-      loader_sec = bfd_get_section_by_name (abfd, ".loader");
-      if (loader_sec != NULL)
-	internal_a.o_snloader = loader_sec->target_index;
-      else
-	internal_a.o_snloader = 0;
-      if (bss_sec != NULL)
-	internal_a.o_snbss = bss_sec->target_index;
-      else
-	internal_a.o_snbss = 0;
-
-      toc = xcoff_data (abfd)->toc;
-      internal_a.o_toc = toc;
-      internal_a.o_sntoc = xcoff_data (abfd)->sntoc;
-
-      internal_a.o_modtype = xcoff_data (abfd)->modtype;
-      if (xcoff_data (abfd)->cputype != -1)
-	internal_a.o_cputype = xcoff_data (abfd)->cputype;
-      else
-	{
-	  switch (bfd_get_arch (abfd))
-	    {
-	    case bfd_arch_rs6000:
-	      internal_a.o_cputype = 4;
-	      break;
-	    case bfd_arch_powerpc:
-	      if (bfd_get_mach (abfd) == bfd_mach_ppc)
-		internal_a.o_cputype = 3;
-	      else if (bfd_get_mach (abfd) == bfd_mach_ppc_620)
-		internal_a.o_cputype = 2;
-	      else
-		internal_a.o_cputype = 1;
-	      break;
-	    default:
-	      abort ();
-	    }
-	}
-      internal_a.o_maxstack = xcoff_data (abfd)->maxstack;
-      internal_a.o_maxdata = xcoff_data (abfd)->maxdata;
-    }
-
-  if (bfd_seek (abfd, (file_ptr) 0, 0) != 0)
-    return FALSE;
-
-  {
-    char * buff;
-    bfd_size_type amount = bfd_coff_filhsz (abfd);
-
-    buff = bfd_malloc (amount);
-    if (buff == NULL)
-      return FALSE;
 
-    bfd_coff_swap_filehdr_out (abfd, &internal_f, buff);
-    amount = bfd_bwrite (buff, amount, abfd);
-
-    free (buff);
-
-    if (amount != bfd_coff_filhsz (abfd))
-      return FALSE;
-  }
-
-  if (abfd->flags & EXEC_P)
-    {
-      char * buff;
-      bfd_size_type amount = bfd_coff_aoutsz (abfd);
-
-      buff = bfd_malloc (amount);
-      if (buff == NULL)
-	return FALSE;
-
-      bfd_coff_swap_aouthdr_out (abfd, &internal_a, buff);
-      amount = bfd_bwrite (buff, amount, abfd);
-
-      free (buff);
-
-      if (amount != bfd_coff_aoutsz (abfd))
-	return FALSE;
-    }
-
-  return TRUE;
-}
-
-static bfd_boolean
+static bool
 xcoff64_reloc_type_br (bfd *input_bfd,
 		       asection *input_section,
 		       bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -1069,13 +778,16 @@ xcoff64_reloc_type_br (bfd *input_bfd,
 		       bfd_vma val,
 		       bfd_vma addend,
 		       bfd_vma *relocation,
-		       bfd_byte *contents)
+		       bfd_byte *contents,
+		       struct bfd_link_info *info)
 {
   struct xcoff_link_hash_entry *h;
   bfd_vma section_offset;
+  struct xcoff_stub_hash_entry *stub_entry = NULL;
+  enum xcoff_stub_type stub_type;
 
   if (0 > rel->r_symndx)
-    return FALSE;
+    return false;
 
   h = obj_xcoff_sym_hashes (input_bfd)[rel->r_symndx];
   section_offset = rel->r_vaddr - input_section->vma;
@@ -1124,6 +836,27 @@ xcoff64_reloc_type_br (bfd *input_bfd,
       howto->complain_on_overflow = complain_overflow_dont;
     }
 
+  /* Check if a stub is needed.  */
+  stub_type = bfd_xcoff_type_of_stub (input_section, rel, val, h);
+  if (stub_type != xcoff_stub_none)
+    {
+      asection *stub_csect;
+
+      stub_entry = bfd_xcoff_get_stub_entry (input_section, h, info);
+      if (stub_entry == NULL)
+	{
+	  _bfd_error_handler (_("Unable to find the stub entry targeting %s"),
+			      h->root.root.string);
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
+
+      stub_csect = stub_entry->hcsect->root.u.def.section;
+      val = (stub_entry->stub_offset
+	     + stub_csect->output_section->vma
+	     + stub_csect->output_offset);
+    }
+
   /* The original PC-relative relocation is biased by -r_vaddr, so adding
      the value below will give the absolute target address.  */
   *relocation = val + addend + rel->r_vaddr;
@@ -1148,625 +881,565 @@ xcoff64_reloc_type_br (bfd *input_bfd,
       bfd_put_32 (input_bfd, insn, ptr);
 
       /* Make the howto absolute too.  */
-      howto->pc_relative = FALSE;
+      howto->pc_relative = false;
       howto->complain_on_overflow = complain_overflow_bitfield;
     }
   else
     {
       /* Use a PC-relative howto and subtract the instruction's address
 	 from the target address we calculated above.  */
-      howto->pc_relative = TRUE;
+      howto->pc_relative = true;
       *relocation -= (input_section->output_section->vma
 		      + input_section->output_offset
 		      + section_offset);
     }
-  return TRUE;
+  return true;
 }
 
-/* This is the relocation function for the PowerPC64.
-   See xcoff_ppc_relocation_section for more information. */
-
-bfd_boolean
-xcoff64_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;
-
-  rel = relocs;
-  relend = rel + input_section->reloc_count;
-  for (; rel < relend; rel++)
-    {
-      long symndx;
-      struct xcoff_link_hash_entry *h;
-      struct internal_syment *sym;
-      bfd_vma addend;
-      bfd_vma val;
-      struct reloc_howto_struct howto;
-      bfd_vma relocation;
-      bfd_vma value_to_relocate;
-      bfd_vma address;
-      bfd_byte *location;
-
-      /* Relocation type R_REF is a special relocation type which is
-	 merely used to prevent garbage collection from occurring for
-	 the csect including the symbol which it references.  */
-      if (rel->r_type == R_REF)
-	continue;
-
-      /* howto */
-      howto.type = rel->r_type;
-      howto.rightshift = 0;
-      howto.bitsize = (rel->r_size & 0x3f) + 1;
-      howto.size = howto.bitsize > 16 ? (howto.bitsize > 32 ? 4 : 2) : 1;
-      howto.pc_relative = FALSE;
-      howto.bitpos = 0;
-      howto.complain_on_overflow = (rel->r_size & 0x80
-				    ? complain_overflow_signed
-				    : complain_overflow_bitfield);
-      howto.special_function = NULL;
-      howto.name = "internal";
-      howto.partial_inplace = TRUE;
-      howto.src_mask = howto.dst_mask = N_ONES (howto.bitsize);
-      howto.pcrel_offset = FALSE;
-
-      /* symbol */
-      val = 0;
-      addend = 0;
-      h = NULL;
-      sym = NULL;
-      symndx = rel->r_symndx;
-
-      if (-1 != symndx)
-	{
-	  asection *sec;
-
-	  h = obj_xcoff_sym_hashes (input_bfd)[symndx];
-	  sym = syms + symndx;
-	  addend = - sym->n_value;
-
-	  if (NULL == h)
-	    {
-	      sec = sections[symndx];
-	      /* Hack to make sure we use the right TOC anchor value
-		 if this reloc is against the TOC anchor.  */
-	      if (sec->name[3] == '0'
-		  && strcmp (sec->name, ".tc0") == 0)
-		val = xcoff_data (output_bfd)->toc;
-	      else
-		val = (sec->output_section->vma
-		       + sec->output_offset
-		       + sym->n_value
-		       - sec->vma);
-	    }
-	  else
-	    {
-	      if (info->unresolved_syms_in_objects != RM_IGNORE
-		  && (h->flags & XCOFF_WAS_UNDEFINED) != 0)
-		(*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);
-
-	      if (h->root.type == bfd_link_hash_defined
-		  || h->root.type == bfd_link_hash_defweak)
-		{
-		  sec = h->root.u.def.section;
-		  val = (h->root.u.def.value
-			 + sec->output_section->vma
-			 + sec->output_offset);
-		}
-	      else if (h->root.type == bfd_link_hash_common)
-		{
-		  sec = h->root.u.c.p->section;
-		  val = (sec->output_section->vma
-			 + sec->output_offset);
-		}
-	      else
-		{
-		  BFD_ASSERT (bfd_link_relocatable (info)
-			      || (h->flags & XCOFF_DEF_DYNAMIC) != 0
-			      || (h->flags & XCOFF_IMPORT) != 0);
-		}
-	    }
-	}
-
-      if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION
-	  || !((*xcoff64_calculate_relocation[rel->r_type])
-	      (input_bfd, input_section, output_bfd, rel, sym, &howto, val,
-	       addend, &relocation, contents)))
-	return FALSE;
-
-      /* address */
-      address = rel->r_vaddr - input_section->vma;
-      location = contents + address;
-
-      if (address > input_section->size)
-	abort ();
-
-      /* Get the value we are going to relocate.  */
-      if (1 == howto.size)
-	value_to_relocate = bfd_get_16 (input_bfd, location);
-      else if (2 == howto.size)
-	value_to_relocate = bfd_get_32 (input_bfd, location);
-      else
-	value_to_relocate = bfd_get_64 (input_bfd, location);
-
-      /* overflow.
-
-	 FIXME: We may drop bits during the addition
-	 which we don't check for.  We must either check at every single
-	 operation, which would be tedious, or we must do the computations
-	 in a type larger than bfd_vma, which would be inefficient.  */
-
-      if (((*xcoff_complain_overflow[howto.complain_on_overflow])
-	   (input_bfd, value_to_relocate, relocation, &howto)))
-	{
-	  const char *name;
-	  char buf[SYMNMLEN + 1];
-	  char reloc_type_name[10];
-
-	  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)
-		name = "UNKNOWN";
-	    }
-	  sprintf (reloc_type_name, "0x%02x", rel->r_type);
-
-	  (*info->callbacks->reloc_overflow)
-	    (info, (h ? &h->root : NULL), name, reloc_type_name,
-	     (bfd_vma) 0, input_bfd, input_section,
-	     rel->r_vaddr - input_section->vma);
-	}
-
-      /* Add RELOCATION to the right bits of VALUE_TO_RELOCATE.  */
-      value_to_relocate = ((value_to_relocate & ~howto.dst_mask)
-			   | (((value_to_relocate & howto.src_mask)
-			       + relocation) & howto.dst_mask));
-
-      /* Put the value back in the object file.  */
-      if (1 == howto.size)
-	bfd_put_16 (input_bfd, value_to_relocate, location);
-      else if (2 == howto.size)
-	bfd_put_32 (input_bfd, value_to_relocate, location);
-      else
-	bfd_put_64 (input_bfd, value_to_relocate, location);
-
-    }
-  return TRUE;
-}
 
 
-/* The XCOFF reloc table.  Actually, XCOFF relocations specify the
-   bitsize and whether they are signed or not, along with a
-   conventional type.  This table is for the types, which are used for
-   different algorithms for putting in the reloc.  Many of these
-   relocs need special_function entries, which I have not written.  */
+/* The XCOFF reloc table.
+   Cf xcoff_howto_table comments.  */
 
 reloc_howto_type xcoff64_howto_table[] =
 {
   /* 0x00: Standard 64 bit relocation.  */
   HOWTO (R_POS,			/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_POS_64",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x01: 64 bit relocation, but store negative value.  */
   HOWTO (R_NEG,			/* type */
 	 0,			/* rightshift */
-	 -4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 -8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_NEG",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
-  /* 0x02: 32 bit PC relative relocation.  */
+  /* 0x02: 64 bit PC relative relocation.  */
   HOWTO (R_REL,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_REL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
   /* 0x03: 16 bit TOC relative relocation.  */
   HOWTO (R_TOC,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_TOC",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
-  /* 0x04: I don't really know what this is.	*/
-  HOWTO (R_RTB,			/* type */
-	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+  /* 0x04: Same as R_TOC.  */
+  HOWTO (R_TRL,			/* type */
+	 0,			/* rightshift */
+	 2,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
-	 "R_RTB",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 "R_TRL",		/* name */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
   /* 0x05: External TOC relative symbol.  */
   HOWTO (R_GL,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_GL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x06: Local TOC relative symbol.	 */
   HOWTO (R_TCL,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_TCL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (7),
 
-  /* 0x08: Non modifiable absolute branch.  */
+  /* 0x08: Same as R_RBA.  */
   HOWTO (R_BA,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_BA_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03fffffc,		/* src_mask */
 	 0x03fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (9),
 
-  /* 0x0a: Non modifiable relative branch.  */
+  /* 0x0a: Same as R_RBR.  */
   HOWTO (R_BR,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_BR",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03fffffc,		/* src_mask */
 	 0x03fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (0xb),
 
-  /* 0x0c: Indirect load.  */
+  /* 0x0c: Same as R_POS.  */
   HOWTO (R_RL,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
-  /* 0x0d: Load address.  */
+  /* 0x0d: Same as R_POS.  */
   HOWTO (R_RLA,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RLA",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (0xe),
 
   /* 0x0f: Non-relocating reference.  Bitsize is 1 so that r_rsize is 0.  */
   HOWTO (R_REF,			/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 1,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_REF",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (0x10),
   EMPTY_HOWTO (0x11),
+  EMPTY_HOWTO (0x12),
 
-  /* 0x12: TOC relative indirect load.  */
-  HOWTO (R_TRL,			/* 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_TRL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* 0x13: TOC relative load address.	 */
+  /* 0x13: Same as R_TOC  */
   HOWTO (R_TRLA,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_TRLA",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x14: Modifiable relative branch.  */
   HOWTO (R_RRTBI,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RRTBI",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x15: Modifiable absolute branch.  */
   HOWTO (R_RRTBA,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RRTBA",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
-  /* 0x16: Modifiable call absolute indirect.	 */
+  /* 0x16: Modifiable call absolute indirect.  */
   HOWTO (R_CAI,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_CAI",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
-  /* 0x17: Modifiable call relative.	*/
+  /* 0x17: Modifiable call relative.  */
   HOWTO (R_CREL,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_CREL",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x18: Modifiable branch absolute.  */
   HOWTO (R_RBA,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBA",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03fffffc,		/* src_mask */
 	 0x03fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x19: Modifiable branch absolute.  */
   HOWTO (R_RBAC,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBAC",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1a: Modifiable branch relative.  */
   HOWTO (R_RBR,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBR_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03fffffc,		/* src_mask */
 	 0x03fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1b: Modifiable branch absolute.  */
   HOWTO (R_RBRC,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBRC",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1c: Standard 32 bit relocation.  */
   HOWTO (R_POS,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_POS_32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1d: 16 bit Non modifiable absolute branch.  */
   HOWTO (R_BA,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_BA_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xfffc,		/* src_mask */
 	 0xfffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1e: Modifiable branch relative.  */
   HOWTO (R_RBR,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBR_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xfffc,		/* src_mask */
 	 0xfffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1f: Modifiable branch absolute.  */
   HOWTO (R_RBA,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBA_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
+
+  /* 0x20: General-dynamic TLS relocation.  */
+  HOWTO (R_TLS,			/* type */
+	 0,			/* rightshift */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLS",		/* name */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x21: Initial-exec TLS relocation.  */
+  HOWTO (R_TLS_IE,		/* type */
+	 0,			/* rightshift */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLS_IE",		/* name */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x22: Local-dynamic TLS relocation.  */
+  HOWTO (R_TLS_LD,		/* type */
+	 0,			/* rightshift */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLS_LD",		/* name */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x23: Local-exec TLS relocation.  */
+  HOWTO (R_TLS_LE,		/* type */
+	 0,			/* rightshift */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLS_LE",		/* name */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x24: TLS relocation.  */
+  HOWTO (R_TLSM,		/* type */
+	 0,			/* rightshift */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLSM",		/* name */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x25: TLS module relocation.  */
+  HOWTO (R_TLSML,		/* type */
+	 0,			/* rightshift */
+	 8,			/* size */
+	 64,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLSML",		/* name */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x26: 32 bit relocation, but store negative value.  */
+  HOWTO (R_NEG,			/* type */
+	 0,			/* rightshift */
+	 -4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_NEG_32",		/* name */
+	 true,			/* partial_inplace */
+	 MINUS_ONE,		/* src_mask */
+	 MINUS_ONE,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  EMPTY_HOWTO(0x27),
+  EMPTY_HOWTO(0x28),
+  EMPTY_HOWTO(0x29),
+  EMPTY_HOWTO(0x2a),
+  EMPTY_HOWTO(0x2b),
+  EMPTY_HOWTO(0x2c),
+  EMPTY_HOWTO(0x2d),
+  EMPTY_HOWTO(0x2e),
+  EMPTY_HOWTO(0x2f),
+
+  HOWTO (R_TOCU,		/* type */
+	 16,			/* rightshift */
+	 2,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TOCU",		/* name */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x31: Low-order 16 bit TOC relative relocation.  */
+  HOWTO (R_TOCL,		/* type */
+	 0,			/* rightshift */
+	 2,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TOCL",		/* name */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
 };
 
 void
 xcoff64_rtype2howto (arelent *relent, struct internal_reloc *internal)
 {
-  if (internal->r_type > R_RBRC)
+  if (internal->r_type > R_TOCL)
     abort ();
 
   /* Default howto layout works most of the time */
@@ -1787,6 +1460,9 @@ xcoff64_rtype2howto (arelent *relent, st
     {
       if (R_POS == internal->r_type)
 	relent->howto = &xcoff64_howto_table[0x1c];
+
+      if (R_NEG == internal->r_type)
+	relent->howto = &xcoff64_howto_table[0x26];
     }
 
   /* The r_size field of an XCOFF reloc encodes the bitsize of the
@@ -1814,9 +1490,10 @@ xcoff64_reloc_type_lookup (bfd *abfd ATT
       return &xcoff64_howto_table[8];
     case BFD_RELOC_PPC_TOC16:
       return &xcoff64_howto_table[3];
-    case BFD_RELOC_16:
-      /* Note that this relocation is only internally used by gas.  */
-      return &xcoff64_howto_table[0xc];
+    case BFD_RELOC_PPC_TOC16_HI:
+      return &xcoff64_howto_table[0x30];
+    case BFD_RELOC_PPC_TOC16_LO:
+      return &xcoff64_howto_table[0x31];
     case BFD_RELOC_PPC_B16:
       return &xcoff64_howto_table[0x1e];
     case BFD_RELOC_32:
@@ -1826,6 +1503,20 @@ xcoff64_reloc_type_lookup (bfd *abfd ATT
       return &xcoff64_howto_table[0];
     case BFD_RELOC_NONE:
       return &xcoff64_howto_table[0xf];
+    case BFD_RELOC_PPC_NEG:
+      return &xcoff64_howto_table[0x1];
+    case BFD_RELOC_PPC64_TLSGD:
+      return &xcoff64_howto_table[0x20];
+    case BFD_RELOC_PPC64_TLSIE:
+      return &xcoff64_howto_table[0x21];
+    case BFD_RELOC_PPC64_TLSLD:
+      return &xcoff64_howto_table[0x22];
+    case BFD_RELOC_PPC64_TLSLE:
+      return &xcoff64_howto_table[0x23];
+    case BFD_RELOC_PPC64_TLSM:
+      return &xcoff64_howto_table[0x24];
+    case BFD_RELOC_PPC64_TLSML:
+      return &xcoff64_howto_table[0x25];
     default:
       return NULL;
     }
@@ -1847,6 +1538,222 @@ xcoff64_reloc_name_lookup (bfd *abfd ATT
   return NULL;
 }
 
+/* This is the relocation function for the PowerPC64.
+   See xcoff_ppc_relocation_section for more information. */
+
+bool
+xcoff64_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;
+
+  rel = relocs;
+  relend = rel + input_section->reloc_count;
+  for (; rel < relend; rel++)
+    {
+      long symndx;
+      struct xcoff_link_hash_entry *h;
+      struct internal_syment *sym;
+      bfd_vma addend;
+      bfd_vma val;
+      struct reloc_howto_struct howto;
+      bfd_vma relocation;
+      bfd_vma value_to_relocate;
+      bfd_vma address;
+      bfd_byte *location;
+
+      /* Relocation type R_REF is a special relocation type which is
+	 merely used to prevent garbage collection from occurring for
+	 the csect including the symbol which it references.  */
+      if (rel->r_type == R_REF)
+	continue;
+
+      /* Retrieve default value in HOWTO table and fix up according
+	 to r_size field, if it can be different.
+	 This should be made during relocation reading but the algorithms
+	 are expecting constant howtos.  */
+      memcpy (&howto, &xcoff64_howto_table[rel->r_type], sizeof (howto));
+      if (howto.bitsize != (rel->r_size & 0x3f) + 1)
+	{
+	  switch (rel->r_type)
+	    {
+	    case R_POS:
+	    case R_NEG:
+	      howto.bitsize = (rel->r_size & 0x3f) + 1;
+	      howto.size = HOWTO_RSIZE (howto.bitsize <= 16
+					? 2 : howto.bitsize <= 32
+					? 4 : 8);
+	      howto.src_mask = howto.dst_mask = N_ONES (howto.bitsize);
+	      break;
+
+	    default:
+	      _bfd_error_handler
+		(_("%pB: relocation (%d) at (0x%" PRIx64 ") has wrong"
+		   " r_rsize (0x%x)\n"),
+		 input_bfd, rel->r_type, rel->r_vaddr, rel->r_size);
+	      return false;
+	    }
+	}
+
+      howto.complain_on_overflow = (rel->r_size & 0x80
+				    ? complain_overflow_signed
+				    : complain_overflow_bitfield);
+
+      /* symbol */
+      val = 0;
+      addend = 0;
+      h = NULL;
+      sym = NULL;
+      symndx = rel->r_symndx;
+
+      if (-1 != symndx)
+	{
+	  asection *sec;
+
+	  h = obj_xcoff_sym_hashes (input_bfd)[symndx];
+	  sym = syms + symndx;
+	  addend = - sym->n_value;
+
+	  if (NULL == h)
+	    {
+	      sec = sections[symndx];
+	      /* Hack to make sure we use the right TOC anchor value
+		 if this reloc is against the TOC anchor.  */
+	      if (sec->name[3] == '0'
+		  && strcmp (sec->name, ".tc0") == 0)
+		val = xcoff_data (output_bfd)->toc;
+	      else
+		val = (sec->output_section->vma
+		       + sec->output_offset
+		       + sym->n_value
+		       - sec->vma);
+	    }
+	  else
+	    {
+	      if (info->unresolved_syms_in_objects != RM_IGNORE
+		  && (h->flags & XCOFF_WAS_UNDEFINED) != 0)
+		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_DIAGNOSE
+		   && !info->warn_unresolved_syms);
+
+	      if (h->root.type == bfd_link_hash_defined
+		  || h->root.type == bfd_link_hash_defweak)
+		{
+		  sec = h->root.u.def.section;
+		  val = (h->root.u.def.value
+			 + sec->output_section->vma
+			 + sec->output_offset);
+		}
+	      else if (h->root.type == bfd_link_hash_common)
+		{
+		  sec = h->root.u.c.p->section;
+		  val = (sec->output_section->vma
+			 + sec->output_offset);
+		}
+	      else
+		{
+		  BFD_ASSERT (bfd_link_relocatable (info)
+			      || (h->flags & XCOFF_DEF_DYNAMIC) != 0
+			      || (h->flags & XCOFF_IMPORT) != 0);
+		}
+	    }
+	}
+
+      if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION
+	  || !((*xcoff64_calculate_relocation[rel->r_type])
+	      (input_bfd, input_section, output_bfd, rel, sym, &howto, val,
+	       addend, &relocation, contents, info)))
+	return false;
+
+      /* address */
+      address = rel->r_vaddr - input_section->vma;
+      location = contents + address;
+
+      if (address > input_section->size)
+	abort ();
+
+      /* Get the value we are going to relocate.  */
+      switch (bfd_get_reloc_size (&howto))
+	{
+	case 2:
+	  value_to_relocate = bfd_get_16 (input_bfd, location);
+	  break;
+	case 4:
+	  value_to_relocate = bfd_get_32 (input_bfd, location);
+	  break;
+	default:
+	  value_to_relocate = bfd_get_64 (input_bfd, location);
+	  break;
+	}
+
+      /* overflow.
+
+	 FIXME: We may drop bits during the addition
+	 which we don't check for.  We must either check at every single
+	 operation, which would be tedious, or we must do the computations
+	 in a type larger than bfd_vma, which would be inefficient.  */
+
+      if (((*xcoff_complain_overflow[howto.complain_on_overflow])
+	   (input_bfd, value_to_relocate, relocation, &howto)))
+	{
+	  const char *name;
+	  char buf[SYMNMLEN + 1];
+	  char reloc_type_name[10];
+
+	  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)
+		name = "UNKNOWN";
+	    }
+	  sprintf (reloc_type_name, "0x%02x", rel->r_type);
+
+	  (*info->callbacks->reloc_overflow)
+	    (info, (h ? &h->root : NULL), name, reloc_type_name,
+	     (bfd_vma) 0, input_bfd, input_section,
+	     rel->r_vaddr - input_section->vma);
+	}
+
+      /* Add RELOCATION to the right bits of VALUE_TO_RELOCATE.  */
+      value_to_relocate = ((value_to_relocate & ~howto.dst_mask)
+			   | (((value_to_relocate & howto.src_mask)
+			       + relocation) & howto.dst_mask));
+
+      /* Put the value back in the object file.  */
+      switch (bfd_get_reloc_size (&howto))
+	{
+	case 2:
+	  bfd_put_16 (input_bfd, value_to_relocate, location);
+	  break;
+	case 4:
+	  bfd_put_32 (input_bfd, value_to_relocate, location);
+	  break;
+	default:
+	  bfd_put_64 (input_bfd, value_to_relocate, location);
+	  break;
+	}
+    }
+  return true;
+}
+
+
 /* PR 21786:  The PE/COFF standard does not require NUL termination for any of
    the ASCII fields in the archive headers.  So in order to be able to extract
    numerical values we provide our own versions of strtol and strtoll which
@@ -1889,7 +1796,7 @@ _bfd_strntoll (const char * nptr, int ba
 
 /* Read in the armap of an XCOFF archive.  */
 
-static bfd_boolean
+static bool
 xcoff64_slurp_armap (bfd *abfd)
 {
   file_ptr off;
@@ -1904,56 +1811,62 @@ xcoff64_slurp_armap (bfd *abfd)
   /* This is for the new format.  */
   struct xcoff_ar_hdr_big hdr;
 
-  if (xcoff_ardata (abfd) == NULL)
+  if (x_artdata (abfd) == NULL)
     {
-      abfd->has_armap = FALSE;
-      return TRUE;
+      abfd->has_armap = false;
+      return true;
     }
 
-  off = bfd_scan_vma (xcoff_ardata_big (abfd)->symoff64,
+  off = bfd_scan_vma (x_artdata (abfd)->u.bhdr.symoff64,
 		      (const char **) NULL, 10);
   if (off == 0)
     {
-      abfd->has_armap = FALSE;
-      return TRUE;
+      abfd->has_armap = false;
+      return true;
     }
 
   if (bfd_seek (abfd, off, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   /* The symbol table starts with a normal archive header.  */
-  if (bfd_bread (&hdr, (bfd_size_type) SIZEOF_AR_HDR_BIG, abfd)
-      != SIZEOF_AR_HDR_BIG)
-    return FALSE;
+  if (bfd_read (&hdr, SIZEOF_AR_HDR_BIG, abfd) != SIZEOF_AR_HDR_BIG)
+    return false;
 
   /* Skip the name (normally empty).  */
   GET_VALUE_IN_FIELD (namlen, hdr.namlen, 10);
   pos = ((namlen + 1) & ~(size_t) 1) + SXCOFFARFMAG;
   if (bfd_seek (abfd, pos, SEEK_CUR) != 0)
-    return FALSE;
+    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;
+    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;
+      return false;
     }
   amt = c;
   amt *= sizeof (carsym);
   bfd_ardata (abfd)->symdefs = (carsym *) bfd_alloc (abfd, amt);
   if (bfd_ardata (abfd)->symdefs == NULL)
-    return FALSE;
+    return false;
 
   /* After the count comes a list of eight byte file offsets.  */
   for (i = 0, arsym = bfd_ardata (abfd)->symdefs, p = contents + 8;
@@ -1970,30 +1883,29 @@ xcoff64_slurp_armap (bfd *abfd)
       if (p >= cend)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       arsym->name = (char *) p;
     }
 
   bfd_ardata (abfd)->symdef_count = c;
-  abfd->has_armap = TRUE;
+  abfd->has_armap = true;
 
-  return TRUE;
+  return true;
 }
 
 
 /* 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)
+  if (bfd_read (magic, amt, abfd) != amt)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -2011,47 +1923,33 @@ xcoff64_archive_p (bfd *abfd)
 
   /* Now read the rest of the file header.  */
   amt = SIZEOF_AR_FILE_HDR_BIG - SXCOFFARMAG;
-  if (bfd_bread (&hdr.memoff, amt, abfd) != amt)
+  if (bfd_read (&hdr.memoff, amt, abfd) != amt)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
       return NULL;
     }
 
-  tdata_hold = bfd_ardata (abfd);
+  amt = sizeof (struct artdata) + sizeof (struct xcoff_artdata);
+  bfd_ardata (abfd) = bfd_zalloc (abfd, amt);
+  if (bfd_ardata (abfd) == NULL)
+    return NULL;
+
+  bfd_ardata (abfd)->tdata = (void *) ((struct artdata *) bfd_ardata (abfd) + 1);
 
-  amt = sizeof (struct artdata);
-  bfd_ardata (abfd) = (struct artdata *) bfd_zalloc (abfd, amt);
-  if (bfd_ardata (abfd) == (struct artdata *) NULL)
-    goto error_ret_restore;
-
-  /* Already cleared by bfd_zalloc above.
-     bfd_ardata (abfd)->cache = NULL;
-     bfd_ardata (abfd)->archive_head = NULL;
-     bfd_ardata (abfd)->symdefs = NULL;
-     bfd_ardata (abfd)->extended_names = NULL;
-     bfd_ardata (abfd)->extended_names_size = 0;  */
   bfd_ardata (abfd)->first_file_filepos = bfd_scan_vma (hdr.firstmemoff,
 							(const char **) NULL,
 							10);
 
-  amt = SIZEOF_AR_FILE_HDR_BIG;
-  bfd_ardata (abfd)->tdata = bfd_zalloc (abfd, amt);
-  if (bfd_ardata (abfd)->tdata == NULL)
-    goto error_ret;
-
-  memcpy (bfd_ardata (abfd)->tdata, &hdr, SIZEOF_AR_FILE_HDR_BIG);
+  memcpy (&x_artdata (abfd)->u.bhdr, &hdr, SIZEOF_AR_FILE_HDR_BIG);
 
   if (! xcoff64_slurp_armap (abfd))
     {
-    error_ret:
       bfd_release (abfd, bfd_ardata (abfd));
-    error_ret_restore:
-      bfd_ardata (abfd) = tdata_hold;
       return NULL;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 
@@ -2060,36 +1958,14 @@ xcoff64_archive_p (bfd *abfd)
 static bfd *
 xcoff64_openr_next_archived_file (bfd *archive, bfd *last_file)
 {
-  bfd_vma filestart;
-
-  if ((xcoff_ardata (archive) == NULL)
+  if (x_artdata (archive) == NULL
       || ! xcoff_big_format_p (archive))
     {
       bfd_set_error (bfd_error_invalid_operation);
       return NULL;
     }
 
-  if (last_file == NULL)
-    {
-      filestart = bfd_ardata (archive)->first_file_filepos;
-    }
-  else
-    {
-      filestart = bfd_scan_vma (arch_xhdr_big (last_file)->nextoff,
-				(const char **) NULL, 10);
-    }
-
-  if (filestart == 0
-      || filestart == bfd_scan_vma (xcoff_ardata_big (archive)->memoff,
-				    (const char **) NULL, 10)
-      || filestart == bfd_scan_vma (xcoff_ardata_big (archive)->symoff,
-				    (const char **) NULL, 10))
-    {
-      bfd_set_error (bfd_error_no_more_archived_files);
-      return NULL;
-    }
-
-  return _bfd_get_elt_at_filepos (archive, (file_ptr) filestart);
+  return _bfd_xcoff_openr_next_archived_file (archive, last_file);
 }
 
 /* We can't use the usual coff_sizeof_headers routine, because AIX
@@ -2123,14 +1999,14 @@ xcoff64_create_csect_from_smclas (bfd *a
   /* Changes from 32 :
      .sv == 8, is only for 32 bit programs
      .ti == 12 and .tb == 13 are now reserved.  */
-  static const char *names[19] =
+  static const char * const names[] =
   {
     ".pr", ".ro", ".db", ".tc", ".ua", ".rw", ".gl", ".xo",
     NULL, ".bs", ".ds", ".uc", NULL,  NULL,  NULL,  ".tc0",
-    ".td", ".sv64", ".sv3264"
+    ".td", ".sv64", ".sv3264", NULL, ".tl", ".ul", ".te"
   };
 
-  if ((19 >= aux->x_csect.x_smclas)
+  if ((aux->x_csect.x_smclas < ARRAY_SIZE (names))
       && (NULL != names[aux->x_csect.x_smclas]))
     {
 
@@ -2150,18 +2026,18 @@ xcoff64_create_csect_from_smclas (bfd *a
   return return_value;
 }
 
-static bfd_boolean
+static bool
 xcoff64_is_lineno_count_overflow (bfd *abfd ATTRIBUTE_UNUSED,
 				  bfd_vma value ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 xcoff64_is_reloc_count_overflow (bfd *abfd ATTRIBUTE_UNUSED,
 				 bfd_vma value ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
 static bfd_vma
@@ -2178,24 +2054,24 @@ xcoff64_loader_reloc_offset (bfd *abfd A
   return (ldhdr->l_rldoff);
 }
 
-static bfd_boolean
+static bool
 xcoff64_bad_format_hook (bfd * abfd, void *filehdr)
 {
   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
 
   /* Check flavor first.  */
   if (bfd_get_flavour (abfd) != bfd_target_xcoff_flavour)
-    return FALSE;
+    return false;
 
   if (bfd_xcoff_magic_number (abfd) != internal_f->f_magic)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 xcoff64_generate_rtinit (bfd *abfd, const char *init, const char *fini,
-			 bfd_boolean rtld)
+			 bool rtld)
 {
   bfd_byte filehdr_ext[FILHSZ];
   bfd_byte scnhdr_ext[SCNHSZ * 3];
@@ -2222,7 +2098,7 @@ xcoff64_generate_rtinit (bfd *abfd, cons
   char *rtld_name = "__rtld";
 
   if (! bfd_xcoff_rtinit_size (abfd))
-    return FALSE;
+    return false;
 
   initsz = (init == NULL ? 0 : 1 + strlen (init));
   finisz = (fini == NULL ? 0 : 1 + strlen (fini));
@@ -2311,7 +2187,7 @@ xcoff64_generate_rtinit (bfd *abfd, cons
   data_buffer = NULL;
   data_buffer = (bfd_byte *) bfd_zmalloc (data_buffer_size);
   if (data_buffer == NULL)
-    return FALSE;
+    return false;
 
   if (initsz)
     {
@@ -2347,7 +2223,10 @@ xcoff64_generate_rtinit (bfd *abfd, cons
 
   string_table = (bfd_byte *) bfd_zmalloc (string_table_size);
   if (string_table == NULL)
-    return FALSE;
+    {
+      free (data_buffer);
+      return false;
+    }
 
   val = string_table_size;
   bfd_put_32 (abfd, val, &string_table[0]);
@@ -2373,7 +2252,7 @@ xcoff64_generate_rtinit (bfd *abfd, cons
   syment.n_scnum = 2;
   syment.n_sclass = C_HIDEXT;
   syment.n_numaux = 1;
-  auxent.x_csect.x_scnlen.l = data_buffer_size;
+  auxent.x_csect.x_scnlen.u64 = data_buffer_size;
   auxent.x_csect.x_smtyp = 3 << 3 | XTY_SD;
   auxent.x_csect.x_smclas = XMC_RW;
   bfd_coff_swap_sym_out (abfd, &syment,
@@ -2498,20 +2377,23 @@ xcoff64_generate_rtinit (bfd *abfd, cons
   filehdr.f_symptr = data_scnhdr.s_relptr + data_scnhdr.s_nreloc * RELSZ;
 
   bfd_coff_swap_filehdr_out (abfd, &filehdr, filehdr_ext);
-  bfd_bwrite (filehdr_ext, FILHSZ, abfd);
   bfd_coff_swap_scnhdr_out (abfd, &text_scnhdr, &scnhdr_ext[SCNHSZ * 0]);
   bfd_coff_swap_scnhdr_out (abfd, &data_scnhdr, &scnhdr_ext[SCNHSZ * 1]);
   bfd_coff_swap_scnhdr_out (abfd, &bss_scnhdr, &scnhdr_ext[SCNHSZ * 2]);
-  bfd_bwrite (scnhdr_ext, 3 * SCNHSZ, abfd);
-  bfd_bwrite (data_buffer, data_buffer_size, abfd);
-  bfd_bwrite (reloc_ext, data_scnhdr.s_nreloc * RELSZ, abfd);
-  bfd_bwrite (syment_ext, filehdr.f_nsyms * SYMESZ, abfd);
-  bfd_bwrite (string_table, string_table_size, abfd);
+  bool ret = true;
+  if (bfd_write (filehdr_ext, FILHSZ, abfd) != FILHSZ
+      || bfd_write (scnhdr_ext, 3 * SCNHSZ, abfd) != 3 * SCNHSZ
+      || bfd_write (data_buffer, data_buffer_size, abfd) != data_buffer_size
+      || (bfd_write (reloc_ext, data_scnhdr.s_nreloc * RELSZ, abfd)
+	  != data_scnhdr.s_nreloc * RELSZ)
+      || (bfd_write (syment_ext, filehdr.f_nsyms * SYMESZ, abfd)
+	  != (bfd_size_type) filehdr.f_nsyms * SYMESZ)
+      || bfd_write (string_table, string_table_size, abfd) != string_table_size)
+    ret = false;
 
+  free (string_table);
   free (data_buffer);
-  data_buffer = NULL;
-
-  return TRUE;
+  return ret;
 }
 
 /* The typical dynamic reloc.  */
@@ -2519,24 +2401,44 @@ xcoff64_generate_rtinit (bfd *abfd, cons
 static reloc_howto_type xcoff64_dynamic_reloc =
 HOWTO (0,			/* type */
        0,			/* rightshift */
-       4,			/* size (0 = byte, 1 = short, 2 = long) */
+       8,			/* size */
        64,			/* bitsize */
-       FALSE,			/* pc_relative */
+       false,			/* pc_relative */
        0,			/* bitpos */
        complain_overflow_bitfield, /* complain_on_overflow */
        0,			/* special_function */
        "R_POS",			/* name */
-       TRUE,			/* partial_inplace */
+       true,			/* partial_inplace */
        MINUS_ONE,		/* src_mask */
        MINUS_ONE,		/* dst_mask */
-       FALSE);			/* pcrel_offset */
+       false);			/* pcrel_offset */
 
-static unsigned long xcoff64_glink_code[10] =
+/* Indirect call stub */
+static const unsigned long xcoff64_stub_indirect_call_code[4] =
+  {
+    0xe9820000,	/* ld r12,0(r2) */
+    0xe80c0000,	/* ld r0,0(r12) */
+    0x7c0903a6,	/* mtctr r0 */
+    0x4e800420,	/* bctr */
+  };
+
+/* Shared call stub */
+static const unsigned long xcoff64_stub_shared_call_code[6] =
+  {
+    0xe9820000,	/* ld r12,0(r2) */
+    0xf8410028,	/* std r2,40(r1) */
+    0xe80c0000,	/* ld r0,0(r12) */
+    0xe84c0008,	/* ld r2,8(r12) */
+    0x7c0903a6,	/* mtctr r0 */
+    0x4e800420,	/* bctr */
+  };
+
+static const unsigned long xcoff64_glink_code[10] =
 {
   0xe9820000,	/* ld r12,0(r2) */
   0xf8410028,	/* std r2,40(r1) */
   0xe80c0000,	/* ld r0,0(r12) */
-  0xe84c0008,	/* ld r0,8(r12) */
+  0xe84c0008,	/* ld r2,8(r12) */
   0x7c0903a6,	/* mtctr r0 */
   0x4e800420,	/* bctr */
   0x00000000,	/* start of traceback table */
@@ -2566,10 +2468,10 @@ static const struct xcoff_backend_data_r
       RELSZ,
       LINESZ,
       FILNMLEN,
-      TRUE,			/* _bfd_coff_long_filenames */
+      true,			/* _bfd_coff_long_filenames */
       XCOFF_NO_LONG_SECTION_NAMES,  /* _bfd_coff_long_section_names */
       3,			/* _bfd_coff_default_section_alignment_power */
-      TRUE,			/* _bfd_coff_force_symnames_in_strings */
+      true,			/* _bfd_coff_force_symnames_in_strings */
       4,			/* _bfd_coff_debug_string_prefix_length */
       32768,			/* _bfd_coff_max_nscns */
       coff_swap_filehdr_in,
@@ -2593,7 +2495,6 @@ static const struct xcoff_backend_data_r
       xcoff64_ppc_relocate_section,
       coff_rtype_to_howto,
       NULL,			/* _bfd_coff_adjust_symndx */
-      _bfd_generic_link_add_one_symbol,
       coff_link_output_has_begun,
       coff_final_link_postscript,
       NULL			/* print_pdata.  */
@@ -2640,6 +2541,14 @@ static const struct xcoff_backend_data_r
     /* rtinit.  */
     88,				/* _xcoff_rtinit_size */
     xcoff64_generate_rtinit,
+
+    /* Stub indirect call.  */
+    &xcoff64_stub_indirect_call_code[0],
+    16,				/* _xcoff_stub_indirect_call_size */
+
+    /* Stub shared call.  */
+    &xcoff64_stub_shared_call_code[0],
+    24,				/* _xcoff_stub_shared_call_size */
   };
 
 /* The transfer vector that leads the outside world to all of the above.  */
@@ -2658,6 +2567,7 @@ const bfd_target rs6000_xcoff64_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
     /* data */
     bfd_getb64,
@@ -2697,22 +2607,20 @@ const bfd_target rs6000_xcoff64_vec =
 
     {/* bfd_write_contents */
       _bfd_bool_bfd_false_error,
-      xcoff64_write_object_contents,
+      coff_write_object_contents,
       _bfd_xcoff_write_archive_contents,
       _bfd_bool_bfd_false_error
     },
 
     /* Generic */
-    _bfd_archive_close_and_cleanup,
-    _bfd_bool_bfd_true,
+    coff_close_and_cleanup,
+    coff_bfd_free_cached_info,
     coff_new_section_hook,
     _bfd_generic_get_section_contents,
-    _bfd_generic_get_section_contents_in_window,
 
     /* Copy */
     _bfd_xcoff_copy_private_bfd_data,
     _bfd_generic_bfd_merge_private_bfd_data,
-    _bfd_generic_init_private_section_data,
     _bfd_generic_bfd_copy_private_section_data,
     _bfd_generic_bfd_copy_private_symbol_data,
     _bfd_generic_bfd_copy_private_header_data,
@@ -2746,6 +2654,7 @@ const bfd_target rs6000_xcoff64_vec =
     coff_bfd_is_target_special_symbol,
     coff_get_lineno,
     coff_find_nearest_line,
+    coff_find_nearest_line_with_alt,
     coff_find_line,
     coff_find_inliner_info,
     coff_bfd_make_debug_symbol,
@@ -2798,9 +2707,9 @@ 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
+extern bool xcoff64_core_file_matches_executable_p
   (bfd *, bfd *);
 extern char *xcoff64_core_file_failing_command
   (bfd *);
@@ -2830,10 +2739,10 @@ static const struct xcoff_backend_data_r
       RELSZ,
       LINESZ,
       FILNMLEN,
-      TRUE,			/* _bfd_coff_long_filenames */
+      true,			/* _bfd_coff_long_filenames */
       XCOFF_NO_LONG_SECTION_NAMES,  /* _bfd_coff_long_section_names */
       3,			/* _bfd_coff_default_section_alignment_power */
-      TRUE,			/* _bfd_coff_force_symnames_in_strings */
+      true,			/* _bfd_coff_force_symnames_in_strings */
       4,			/* _bfd_coff_debug_string_prefix_length */
       32768,			/* _bfd_coff_max_nscns */
       coff_swap_filehdr_in,
@@ -2857,7 +2766,6 @@ static const struct xcoff_backend_data_r
       xcoff64_ppc_relocate_section,
       coff_rtype_to_howto,
       NULL,			/* _bfd_coff_adjust_symndx */
-      _bfd_generic_link_add_one_symbol,
       coff_link_output_has_begun,
       coff_final_link_postscript,
       NULL			/* print_pdata.  */
@@ -2903,6 +2811,14 @@ static const struct xcoff_backend_data_r
     /* rtinit.  */
     88,				/* _xcoff_rtinit_size */
     xcoff64_generate_rtinit,
+
+    /* Stub indirect call.  */
+    &xcoff64_stub_indirect_call_code[0],
+    16,				/* _xcoff_stub_indirect_call_size */
+
+    /* Stub shared call.  */
+    &xcoff64_stub_shared_call_code[0],
+    24,				/* _xcoff_stub_shared_call_size */
   };
 
 /* The transfer vector that leads the outside world to all of the above.  */
@@ -2921,6 +2837,7 @@ const bfd_target rs6000_xcoff64_aix_vec
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
     /* data */
     bfd_getb64,
@@ -2960,22 +2877,20 @@ const bfd_target rs6000_xcoff64_aix_vec
 
     {/* bfd_write_contents */
       _bfd_bool_bfd_false_error,
-      xcoff64_write_object_contents,
+      coff_write_object_contents,
       _bfd_xcoff_write_archive_contents,
       _bfd_bool_bfd_false_error
     },
 
     /* Generic */
-    _bfd_archive_close_and_cleanup,
-    _bfd_bool_bfd_true,
+    coff_close_and_cleanup,
+    coff_bfd_free_cached_info,
     coff_new_section_hook,
     _bfd_generic_get_section_contents,
-    _bfd_generic_get_section_contents_in_window,
 
     /* Copy */
     _bfd_xcoff_copy_private_bfd_data,
     _bfd_generic_bfd_merge_private_bfd_data,
-    _bfd_generic_init_private_section_data,
     _bfd_generic_bfd_copy_private_section_data,
     _bfd_generic_bfd_copy_private_symbol_data,
     _bfd_generic_bfd_copy_private_header_data,
@@ -3009,6 +2924,7 @@ const bfd_target rs6000_xcoff64_aix_vec
     coff_bfd_is_target_special_symbol,
     coff_get_lineno,
     coff_find_nearest_line,
+    coff_find_nearest_line_with_alt,
     coff_find_line,
     coff_find_inliner_info,
     coff_bfd_make_debug_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.20200303/bfd/coff-aarch64.c ./bfd/coff-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-aarch64.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/coff-aarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,1019 @@
+/* BFD back-end for AArch64 COFF files.
+   Copyright (C) 2021-2025 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.  */
+
+#ifndef COFF_WITH_PE
+#error non-PE COFF unsupported
+#endif
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "coff/aarch64.h"
+#include "coff/internal.h"
+#include "coff/pe.h"
+#include "libcoff.h"
+#include "libiberty.h"
+
+/* For these howto special functions,
+   output_bfd == NULL => final link, or objdump -W and other calls to
+   bfd_simple_get_relocated_section_contents
+   output_bfd != NULL && output_bfd != abfd => ld -r
+   output_bfd != NULL && output_bfd == abfd => gas.
+   FIXME: ld -r is punted to bfd_perform_relocation.  This won't be
+   correct for cases where the addend needs to be adjusted, eg. for
+   relocations against section symbols, and the field is split because
+   bfd_perform_relocation can't write addends to split relocation fields.  */
+
+static bfd_reloc_status_type
+coff_aarch64_rel21_reloc (bfd *abfd,
+			  arelent *reloc_entry,
+			  asymbol *symbol,
+			  void *data,
+			  asection *input_section,
+			  bfd *output_bfd,
+			  char **error_message ATTRIBUTE_UNUSED)
+{
+  if (output_bfd != NULL && output_bfd != abfd)
+    return bfd_reloc_continue;
+
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, reloc_entry->address))
+    return bfd_reloc_outofrange;
+
+  uint32_t op = bfd_getl32 (data + reloc_entry->address);
+  bfd_vma relocation = reloc_entry->addend;
+  bfd_reloc_status_type ret = bfd_reloc_ok;
+  if (output_bfd == NULL)
+    {
+      if (bfd_is_und_section (symbol->section))
+	{
+	  if ((symbol->flags & BSF_WEAK) == 0)
+	    ret = bfd_reloc_undefined;
+	}
+      else if (!bfd_is_com_section (symbol->section))
+	relocation += (symbol->value
+		       + symbol->section->output_offset
+		       + symbol->section->output_section->vma);
+      bfd_vma addend = ((op >> 3) & 0x1ffffc) | ((op >> 29) & 0x3);
+      addend = (addend ^ 0x100000) - 0x100000;
+      relocation += addend;
+      relocation -= (reloc_entry->address
+		     + input_section->output_offset
+		     + input_section->output_section->vma);
+      relocation = (bfd_signed_vma) relocation >> reloc_entry->howto->rightshift;
+    }
+  if (relocation + 0x100000 > 0x1fffff)
+    ret = bfd_reloc_overflow;
+
+  op &= 0x9f00001f;
+  op |= (relocation & 0x1ffffc) << 3;
+  op |= (relocation & 0x3) << 29;
+
+  bfd_putl32 (op, data + reloc_entry->address);
+
+  return ret;
+}
+
+static bfd_reloc_status_type
+coff_aarch64_po12l_reloc (bfd *abfd,
+			  arelent *reloc_entry,
+			  asymbol *symbol ATTRIBUTE_UNUSED,
+			  void *data,
+			  asection *input_section,
+			  bfd *output_bfd,
+			  char **error_message ATTRIBUTE_UNUSED)
+{
+  if (output_bfd != NULL && output_bfd != abfd)
+    return bfd_reloc_continue;
+
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, reloc_entry->address))
+    return bfd_reloc_outofrange;
+
+  uint32_t op = bfd_getl32 (data + reloc_entry->address);
+  bfd_vma relocation = reloc_entry->addend & 0xfff;
+  int shift;
+
+  if ((op & 0xff800000) == 0x3d800000)
+    {
+      /* LDR / STR with q register */
+      shift = 4;
+    }
+  else
+    {
+      /* top two bits represent how much addend should be shifted */
+      shift = op >> 30;
+    }
+
+  bfd_reloc_status_type ret = bfd_reloc_ok;
+  if (output_bfd == NULL)
+    {
+      if (bfd_is_und_section (symbol->section))
+	{
+	  if ((symbol->flags & BSF_WEAK) == 0)
+	    ret = bfd_reloc_undefined;
+	}
+      else if (!bfd_is_com_section (symbol->section))
+	relocation += (symbol->value
+		       + symbol->section->output_offset
+		       + symbol->section->output_section->vma);
+      bfd_vma addend = (op >> 10) & 0xfff;
+      addend <<= shift;
+      relocation += addend;
+    }
+
+  if (relocation & ((1 << shift) - 1))
+    ret = bfd_reloc_overflow;
+
+  op &= 0xffc003ff;
+  op |= (relocation >> shift << 10) & 0x3ffc00;
+
+  bfd_putl32 (op, data + reloc_entry->address);
+
+  return ret;
+}
+
+static bfd_reloc_status_type
+coff_aarch64_addr32nb_reloc (bfd *abfd,
+			     arelent *reloc_entry,
+			     asymbol *symbol ATTRIBUTE_UNUSED,
+			     void *data,
+			     asection *input_section,
+			     bfd *output_bfd,
+			     char **error_message)
+{
+  if (output_bfd != NULL && output_bfd != abfd)
+    return bfd_reloc_continue;
+
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, reloc_entry->address))
+    return bfd_reloc_outofrange;
+
+  bfd_vma relocation = reloc_entry->addend;
+  bfd_reloc_status_type ret = bfd_reloc_ok;
+  if (output_bfd == NULL)
+    {
+      if (bfd_is_und_section (symbol->section))
+	{
+	  if ((symbol->flags & BSF_WEAK) == 0)
+	    ret = bfd_reloc_undefined;
+	}
+      else if (!bfd_is_com_section (symbol->section))
+	relocation += (symbol->value
+		       + symbol->section->output_offset
+		       + symbol->section->output_section->vma);
+      bfd_vma addend = bfd_getl_signed_32 (data + reloc_entry->address);
+      relocation += addend;
+      bfd *obfd = input_section->output_section->owner;
+      if (bfd_get_flavour (obfd) == bfd_target_coff_flavour
+	  && obj_pe (obfd))
+	relocation -= pe_data (obfd)->pe_opthdr.ImageBase;
+      else
+	{
+	  *error_message = "unsupported";
+	  return bfd_reloc_dangerous;
+	}
+    }
+
+  if (relocation + 0x80000000 > 0xffffffff)
+    ret = bfd_reloc_overflow;
+
+  bfd_putl32 (relocation, data + reloc_entry->address);
+
+  return ret;
+}
+
+static bfd_reloc_status_type
+coff_aarch64_secrel_reloc (bfd *abfd,
+			   arelent *reloc_entry,
+			   asymbol *symbol ATTRIBUTE_UNUSED,
+			   void *data,
+			   asection *input_section,
+			   bfd *output_bfd,
+			   char **error_message ATTRIBUTE_UNUSED)
+{
+  if (output_bfd != NULL && output_bfd != abfd)
+    return bfd_reloc_continue;
+
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, reloc_entry->address))
+    return bfd_reloc_outofrange;
+
+  bfd_vma relocation = reloc_entry->addend;
+  bfd_reloc_status_type ret = bfd_reloc_ok;
+  if (output_bfd == NULL)
+    {
+      if (bfd_is_und_section (symbol->section))
+	{
+	  if ((symbol->flags & BSF_WEAK) == 0)
+	    ret = bfd_reloc_undefined;
+	}
+      else if (!bfd_is_com_section (symbol->section))
+	relocation += (symbol->value
+		       + symbol->section->output_offset);
+      bfd_vma addend = bfd_getl_signed_32 (data + reloc_entry->address);
+      relocation += addend;
+    }
+  if (relocation > 0xffffffff)
+    ret = bfd_reloc_overflow;
+
+  bfd_putl32 (relocation, data + reloc_entry->address);
+
+  return ret;
+}
+
+#define coff_aarch64_NULL NULL
+#undef HOWTO_INSTALL_ADDEND
+#define HOWTO_INSTALL_ADDEND 1
+#define HOW(type, right, size, bits, pcrel, left, ovf, func, mask) \
+  HOWTO (type, right, size, bits, pcrel, left, complain_overflow_##ovf, \
+	 coff_aarch64_##func, #type, true, mask, mask, false)
+
+static const reloc_howto_type arm64_reloc_howto_abs
+= HOW (IMAGE_REL_ARM64_ABSOLUTE,
+       0, 0, 0, false, 0, dont, NULL, 0);
+
+static const reloc_howto_type arm64_reloc_howto_64
+= HOW (IMAGE_REL_ARM64_ADDR64,
+       0, 8, 64, false, 0, dont, NULL, UINT64_C (-1));
+
+static const reloc_howto_type arm64_reloc_howto_32
+= HOW (IMAGE_REL_ARM64_ADDR32,
+       0, 4, 32, false, 0, signed, NULL, 0xffffffff);
+
+static const reloc_howto_type arm64_reloc_howto_32_pcrel
+= HOW (IMAGE_REL_ARM64_REL32,
+       0, 4, 32, true, 0, signed, NULL, 0xffffffff);
+
+static const reloc_howto_type arm64_reloc_howto_branch26
+= HOW (IMAGE_REL_ARM64_BRANCH26,
+       2, 4, 26, true, 0, signed, NULL, 0x3ffffff);
+
+static const reloc_howto_type arm64_reloc_howto_page21
+= HOW (IMAGE_REL_ARM64_PAGEBASE_REL21,
+       12, 4, 21, true, 0, signed, rel21_reloc, 0x1fffff);
+
+static const reloc_howto_type arm64_reloc_howto_lo21
+= HOW (IMAGE_REL_ARM64_REL21,
+       0, 4, 21, true, 0, signed, rel21_reloc, 0x1fffff);
+
+static const reloc_howto_type arm64_reloc_howto_pgoff12l
+= HOW (IMAGE_REL_ARM64_PAGEOFFSET_12L,
+       0, 4, 12, true, 10, signed, po12l_reloc, 0x3ffc00);
+
+static const reloc_howto_type arm64_reloc_howto_branch19
+= HOW (IMAGE_REL_ARM64_BRANCH19,
+       2, 4, 19, true, 5, signed, NULL, 0xffffe0);
+
+static const reloc_howto_type arm64_reloc_howto_branch14
+= HOW (IMAGE_REL_ARM64_BRANCH14,
+       2, 4, 14, true, 5, signed, NULL, 0x7ffe0);
+
+static const reloc_howto_type arm64_reloc_howto_pgoff12a
+= HOW (IMAGE_REL_ARM64_PAGEOFFSET_12A,
+       0, 4, 12, true, 10, dont, NULL, 0x3ffc00);
+
+static const reloc_howto_type arm64_reloc_howto_32nb
+= HOW (IMAGE_REL_ARM64_ADDR32NB,
+       0, 4, 32, false, 0, signed, addr32nb_reloc, 0xffffffff);
+
+static const reloc_howto_type arm64_reloc_howto_secrel
+= HOW (IMAGE_REL_ARM64_SECREL,
+       0, 4, 32, false, 0, dont, secrel_reloc, 0xffffffff);
+
+static const reloc_howto_type arm64_reloc_howto_secidx
+= HOW (IMAGE_REL_ARM64_SECTION,
+       0, 2, 16, false, 0, dont, NULL, 0xffff);
+
+static const reloc_howto_type* const arm64_howto_table[] = {
+     &arm64_reloc_howto_abs,
+     &arm64_reloc_howto_64,
+     &arm64_reloc_howto_32,
+     &arm64_reloc_howto_32_pcrel,
+     &arm64_reloc_howto_branch26,
+     &arm64_reloc_howto_page21,
+     &arm64_reloc_howto_lo21,
+     &arm64_reloc_howto_pgoff12l,
+     &arm64_reloc_howto_branch19,
+     &arm64_reloc_howto_branch14,
+     &arm64_reloc_howto_pgoff12a,
+     &arm64_reloc_howto_32nb,
+     &arm64_reloc_howto_secrel,
+     &arm64_reloc_howto_secidx
+};
+
+/* No adjustment to addends should be needed.  The actual relocation
+   addend is in the section contents.  Unfortunately this means actual
+   addends are not shown by objdump -r, but that's true for most
+   COFF/PE targets where arelent.addend is an adjustment.  */
+#define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)		\
+  cache_ptr->addend = 0;
+
+#ifndef NUM_ELEM
+#define NUM_ELEM(a) ((sizeof (a)) / sizeof ((a)[0]))
+#endif
+
+#define NUM_RELOCS NUM_ELEM (arm64_howto_table)
+
+#define coff_bfd_reloc_type_lookup		coff_aarch64_reloc_type_lookup
+#define coff_bfd_reloc_name_lookup		coff_aarch64_reloc_name_lookup
+
+static reloc_howto_type *
+coff_aarch64_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, bfd_reloc_code_real_type code)
+{
+  switch (code)
+  {
+  case BFD_RELOC_64:
+    return &arm64_reloc_howto_64;
+  case BFD_RELOC_32:
+    return &arm64_reloc_howto_32;
+  case BFD_RELOC_32_PCREL:
+    return &arm64_reloc_howto_32_pcrel;
+  case BFD_RELOC_AARCH64_CALL26:
+  case BFD_RELOC_AARCH64_JUMP26:
+    return &arm64_reloc_howto_branch26;
+  case BFD_RELOC_AARCH64_ADR_HI21_PCREL:
+  case BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL:
+  case BFD_RELOC_AARCH64_ADR_GOT_PAGE:
+    return &arm64_reloc_howto_page21;
+  case BFD_RELOC_AARCH64_TSTBR14:
+    return &arm64_reloc_howto_branch14;
+  case BFD_RELOC_AARCH64_ADR_LO21_PCREL:
+    return &arm64_reloc_howto_lo21;
+  case BFD_RELOC_AARCH64_ADD_LO12:
+    return &arm64_reloc_howto_pgoff12a;
+  case BFD_RELOC_AARCH64_LDST8_LO12:
+  case BFD_RELOC_AARCH64_LDST16_LO12:
+  case BFD_RELOC_AARCH64_LDST32_LO12:
+  case BFD_RELOC_AARCH64_LDST64_LO12:
+  case BFD_RELOC_AARCH64_LDST128_LO12:
+  case BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:
+    return &arm64_reloc_howto_pgoff12l;
+  case BFD_RELOC_AARCH64_BRANCH19:
+    return &arm64_reloc_howto_branch19;
+  case BFD_RELOC_RVA:
+    return &arm64_reloc_howto_32nb;
+  case BFD_RELOC_32_SECREL:
+    return &arm64_reloc_howto_secrel;
+  case BFD_RELOC_16_SECIDX:
+    return &arm64_reloc_howto_secidx;
+  default:
+    BFD_FAIL ();
+    return NULL;
+  }
+
+  return NULL;
+}
+
+static reloc_howto_type *
+coff_aarch64_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+			    const char *r_name)
+{
+	unsigned int i;
+
+	for (i = 0; i < NUM_RELOCS; i++)
+	  if (arm64_howto_table[i]->name != NULL
+	    && strcasecmp (arm64_howto_table[i]->name, r_name) == 0)
+	    return arm64_howto_table[i];
+
+  return NULL;
+}
+
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER  2
+#define COFF_PAGE_SIZE			      0x1000
+
+static reloc_howto_type *
+coff_aarch64_rtype_lookup (unsigned int code)
+{
+  switch (code)
+  {
+    case IMAGE_REL_ARM64_ABSOLUTE:
+      return &arm64_reloc_howto_abs;
+    case IMAGE_REL_ARM64_ADDR64:
+      return &arm64_reloc_howto_64;
+    case IMAGE_REL_ARM64_ADDR32:
+      return &arm64_reloc_howto_32;
+    case IMAGE_REL_ARM64_REL32:
+      return &arm64_reloc_howto_32_pcrel;
+    case IMAGE_REL_ARM64_BRANCH26:
+      return &arm64_reloc_howto_branch26;
+    case IMAGE_REL_ARM64_PAGEBASE_REL21:
+      return &arm64_reloc_howto_page21;
+    case IMAGE_REL_ARM64_REL21:
+      return &arm64_reloc_howto_lo21;
+    case IMAGE_REL_ARM64_PAGEOFFSET_12L:
+      return &arm64_reloc_howto_pgoff12l;
+    case IMAGE_REL_ARM64_BRANCH19:
+      return &arm64_reloc_howto_branch19;
+    case IMAGE_REL_ARM64_BRANCH14:
+      return &arm64_reloc_howto_branch14;
+    case IMAGE_REL_ARM64_PAGEOFFSET_12A:
+      return &arm64_reloc_howto_pgoff12a;
+    case IMAGE_REL_ARM64_ADDR32NB:
+      return &arm64_reloc_howto_32nb;
+    case IMAGE_REL_ARM64_SECREL:
+      return &arm64_reloc_howto_secrel;
+    case IMAGE_REL_ARM64_SECTION:
+      return &arm64_reloc_howto_secidx;
+    default:
+      return NULL;
+  }
+
+  return NULL;
+}
+
+#define RTYPE2HOWTO(cache_ptr, dst)					\
+  ((cache_ptr)->howto = coff_aarch64_rtype_lookup((dst)->r_type))
+
+static reloc_howto_type *
+coff_aarch64_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
+			     asection *sec ATTRIBUTE_UNUSED,
+			     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 = coff_aarch64_rtype_lookup (rel->r_type);
+
+  /* Cancel out code in _bfd_coff_generic_relocate_section.  */
+  *addendp = 0;
+
+  return howto;
+}
+
+#define coff_rtype_to_howto coff_aarch64_rtype_to_howto
+
+#define SELECT_RELOC(x,howto) { (x).r_type = (howto)->type; }
+
+#ifndef bfd_pe_print_pdata
+#define bfd_pe_print_pdata      NULL
+#endif
+
+#ifdef COFF_WITH_PE
+/* Return TRUE if this relocation should
+   appear in the output .reloc section.  */
+
+static bool
+in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
+            reloc_howto_type * howto)
+{
+  return !howto->pc_relative;
+}
+#endif
+
+static bool
+coff_pe_aarch64_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;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  rel = relocs;
+  relend = rel + input_section->reloc_count;
+
+  /* The addend for a relocation is stored in the immediate bits of each
+     opcode.  So for each relocation, we need to extract the immediate value,
+     use this to calculate what it should be for the symbol, and rewrite the
+     opcode into the section stream.  */
+
+  for (; rel < relend; rel++)
+    {
+      long symndx;
+      struct coff_link_hash_entry *h;
+      bfd_vma sym_value;
+      asection *sec = NULL;
+      uint64_t dest_vma;
+
+      /* skip trivial relocations */
+      if (rel->r_type == IMAGE_REL_ARM64_ADDR32
+	  || rel->r_type == IMAGE_REL_ARM64_ADDR64
+	  || rel->r_type == IMAGE_REL_ARM64_ABSOLUTE)
+	continue;
+
+      symndx = rel->r_symndx;
+      sym_value = syms[symndx].n_value;
+
+      h = obj_coff_sym_hashes (input_bfd)[symndx];
+
+      if (h && h->root.type == bfd_link_hash_defined)
+	{
+	  sec = h->root.u.def.section;
+	  sym_value = h->root.u.def.value;
+	}
+      else
+	{
+	  sec = sections[symndx];
+	}
+
+      if (!sec)
+	continue;
+
+      if (bfd_is_und_section (sec))
+	continue;
+
+      if (discarded_section (sec))
+	continue;
+
+      dest_vma = sec->output_section->vma + sec->output_offset + sym_value;
+
+      if (symndx < 0
+	  || (unsigned long) symndx >= obj_raw_syment_count (input_bfd))
+	continue;
+
+      /* All the relocs handled below operate on 4 bytes.  */
+      if (input_section->size < rel->r_vaddr
+	  || input_section->size - rel->r_vaddr < 4)
+	{
+	  _bfd_error_handler
+	    /* xgettext: c-format */
+	    (_("%pB: bad reloc address %#" PRIx64 " in section `%pA'"),
+	     input_bfd, (uint64_t) rel->r_vaddr, input_section);
+	  continue;
+	}
+
+      switch (rel->r_type)
+	{
+	case IMAGE_REL_ARM64_ADDR32NB:
+	  {
+	    uint64_t val;
+	    int32_t addend;
+
+	    addend = bfd_getl32 (contents + rel->r_vaddr);
+
+	    dest_vma += addend;
+
+	    val = dest_vma;
+	    val -= pe_data (output_bfd)->pe_opthdr.ImageBase;
+
+	    if (val > 0xffffffff)
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_ADDR32NB", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    bfd_putl32 (val, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_BRANCH26:
+	  {
+	    uint64_t cur_vma;
+	    uint32_t opcode;
+	    int64_t addend, val;
+
+	    opcode = bfd_getl32 (contents + rel->r_vaddr);
+
+	    addend = (opcode & 0x3ffffff) << 2;
+
+	    if (addend & 0x8000000)
+	      addend |= 0xfffffffff0000000;
+
+	    dest_vma += addend;
+	    cur_vma = input_section->output_section->vma
+		      + input_section->output_offset
+		      + rel->r_vaddr;
+
+	    val = (dest_vma >> 2) - (cur_vma >> 2);
+
+	    if (val > 0x1ffffff || val < -0x2000000)
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_BRANCH26", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    opcode &= 0xfc000000;
+	    opcode |= val & 0x3ffffff;
+
+	    bfd_putl32 (opcode, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_BRANCH19:
+	  {
+	    uint64_t cur_vma;
+	    uint32_t opcode;
+	    int64_t addend, val;
+
+	    opcode = bfd_getl32 (contents + rel->r_vaddr);
+
+	    addend = (opcode & 0xffffe0) >> 3;
+
+	    if (addend & 0x100000)
+	      addend |= 0xffffffffffe00000;
+
+	    dest_vma += addend;
+	    cur_vma = input_section->output_section->vma
+		      + input_section->output_offset
+		      + rel->r_vaddr;
+
+	    val = (dest_vma >> 2) - (cur_vma >> 2);
+
+	    if (val > 0x3ffff || val < -0x40000)
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_BRANCH19", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    opcode &= 0xff00001f;
+	    opcode |= (val & 0x7ffff) << 5;
+
+	    bfd_putl32 (opcode, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_BRANCH14:
+	  {
+	    uint64_t cur_vma;
+	    uint32_t opcode;
+	    int64_t addend, val;
+
+	    opcode = bfd_getl32 (contents + rel->r_vaddr);
+
+	    addend = (opcode & 0x7ffe0) >> 3;
+
+	    if (addend & 0x8000)
+	      addend |= 0xffffffffffff0000;
+
+	    dest_vma += addend;
+	    cur_vma = input_section->output_section->vma
+		      + input_section->output_offset
+		      + rel->r_vaddr;
+
+	    val = (dest_vma >> 2) - (cur_vma >> 2);
+
+	    if (val > 0x1fff || val < -0x2000)
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_BRANCH14", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    opcode &= 0xfff8001f;
+	    opcode |= (val & 0x3fff) << 5;
+
+	    bfd_putl32 (opcode, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_PAGEBASE_REL21:
+	  {
+	    uint64_t cur_vma;
+	    uint32_t opcode;
+	    int64_t addend, val;
+
+	    opcode = bfd_getl32 (contents + rel->r_vaddr);
+
+	    addend = ((opcode & 0xffffe0) >> 3)
+		     | ((opcode & 0x60000000) >> 29);
+
+	    if (addend & 0x100000)
+	      addend |= 0xffffffffffe00000;
+
+	    dest_vma += addend;
+	    cur_vma = input_section->output_section->vma
+		      + input_section->output_offset
+		      + rel->r_vaddr;
+
+	    val = (dest_vma >> 12) - (cur_vma >> 12);
+
+	    if (val > 0xfffff || val < -0x100000)
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_PAGEBASE_REL21", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    opcode &= 0x9f00001f;
+	    opcode |= (val & 0x3) << 29;
+	    opcode |= (val & 0x1ffffc) << 3;
+
+	    bfd_putl32 (opcode, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_REL21:
+	  {
+	    uint64_t cur_vma;
+	    uint32_t opcode;
+	    int64_t addend, val;
+
+	    opcode = bfd_getl32 (contents + rel->r_vaddr);
+
+	    addend = ((opcode & 0xffffe0) >> 3)
+		     | ((opcode & 0x60000000) >> 29);
+
+	    if (addend & 0x100000)
+	      addend |= 0xffffffffffe00000;
+
+	    dest_vma += addend;
+	    cur_vma = input_section->output_section->vma
+		      + input_section->output_offset
+		      + rel->r_vaddr;
+
+	    val = dest_vma - cur_vma;
+
+	    if (val > 0xfffff || val < -0x100000)
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_REL21", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    opcode &= 0x9f00001f;
+	    opcode |= (val & 0x3) << 29;
+	    opcode |= (val & 0x1ffffc) << 3;
+
+	    bfd_putl32 (opcode, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_REL32:
+	  {
+	    uint64_t cur_vma;
+	    int64_t addend, val;
+
+	    addend = bfd_getl32 (contents + rel->r_vaddr);
+
+	    if (addend & 0x80000000)
+	      addend |= 0xffffffff00000000;
+
+	    dest_vma += addend;
+	    cur_vma = input_section->output_section->vma
+		      + input_section->output_offset
+		      + rel->r_vaddr;
+
+	    val = dest_vma - cur_vma;
+
+	    if (val > 0xffffffff || val < -0x100000000)
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_REL32", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    bfd_putl32 (val, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_PAGEOFFSET_12L:
+	  {
+	    uint32_t opcode, val;
+	    uint8_t shift;
+	    int32_t addend;
+
+	    opcode = bfd_getl32 (contents + rel->r_vaddr);
+
+	    addend = (opcode & 0x3ffc00) >> 10;
+
+	    if ((opcode & 0xff800000) == 0x3d800000)
+	      {
+		/* LDR / STR with q register */
+		shift = 4;
+	      }
+	    else
+	      {
+		/* top two bits represent how much addend should be shifted */
+		shift = opcode >> 30;
+	      }
+
+	    addend <<= shift;
+
+	    dest_vma += addend;
+
+	    /* only interested in bottom 12 bits */
+	    val = dest_vma & 0xfff;
+
+	    if (val & ((1 << shift) - 1))
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_PAGEOFFSET_12L", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    val >>= shift;
+
+	    opcode &= 0xffc003ff;
+	    opcode |= val << 10;
+
+	    bfd_putl32 (opcode, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_PAGEOFFSET_12A:
+	  {
+	    uint32_t opcode, val;
+	    int32_t addend;
+
+	    opcode = bfd_getl32 (contents + rel->r_vaddr);
+
+	    addend = (opcode & 0x3ffc00) >> 10;
+
+	    dest_vma += addend;
+
+	    /* only interested in bottom 12 bits */
+	    val = dest_vma & 0xfff;
+
+	    opcode &= 0xffc003ff;
+	    opcode |= val << 10;
+
+	    bfd_putl32 (opcode, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_SECREL:
+	  {
+	    uint64_t val;
+	    int32_t addend;
+
+	    addend = bfd_getl32 (contents + rel->r_vaddr);
+
+	    val = sec->output_offset + sym_value + addend;
+
+	    if (val > 0xffffffff)
+	      (*info->callbacks->reloc_overflow)
+		(info, h ? &h->root : NULL, syms[symndx]._n._n_name,
+		"IMAGE_REL_ARM64_SECREL", addend, input_bfd,
+		input_section, rel->r_vaddr - input_section->vma);
+
+	    bfd_putl32 (val, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	case IMAGE_REL_ARM64_SECTION:
+	  {
+	    uint16_t idx = 0, i = 1;
+	    asection *s;
+
+	    s = output_bfd->sections;
+	    while (s)
+	      {
+		if (s == sec->output_section)
+		  {
+		    idx = i;
+		    break;
+		  }
+
+		i++;
+		s = s->next;
+	      }
+
+
+	    bfd_putl16 (idx, contents + rel->r_vaddr);
+	    rel->r_type = IMAGE_REL_ARM64_ABSOLUTE;
+
+	    break;
+	  }
+
+	default:
+	  info->callbacks->fatal (_("%P: Unhandled relocation type %u\n"),
+				  rel->r_type);
+	}
+    }
+
+  return _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
+					     input_section, contents,
+					     relocs, syms, sections);
+}
+
+#define coff_relocate_section coff_pe_aarch64_relocate_section
+
+#include "coffcode.h"
+
+/* Prevent assertion in md_apply_fix by forcing use_rela_p on for new
+   sections.  */
+static bool
+coff_aarch64_new_section_hook (bfd *abfd, asection *section)
+{
+  if (!coff_new_section_hook (abfd, section))
+    return false;
+
+  section->use_rela_p = 1;
+
+  return true;
+}
+
+#define coff_aarch64_close_and_cleanup coff_close_and_cleanup
+#define coff_aarch64_bfd_free_cached_info coff_bfd_free_cached_info
+#define coff_aarch64_get_section_contents coff_get_section_contents
+
+/* Target vectors.  */
+const bfd_target
+#ifdef TARGET_SYM
+  TARGET_SYM =
+#else
+# error "target symbol name not specified"
+#endif
+{
+#ifdef TARGET_NAME
+  TARGET_NAME,
+#else
+# error "target name not specified"
+#endif
+  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.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+
+  /* Data conversion functions.  */
+  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.  */
+  /* Header conversion functions.  */
+  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,
+    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_aarch64),
+  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
+};
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-alpha.c ./bfd/coff-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-alpha.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-alpha.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Modified from coff-mips.c by Steve Chamberlain <sac@cygnus.com> and
    Ian Lance Taylor <ian@cygnus.com>.
 
@@ -116,81 +116,81 @@ static reloc_howto_type alpha_howto_tabl
      of the gp register are loaded.  */
   HOWTO (ALPHA_R_IGNORE,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 reloc_nil,		/* special_function */
 	 "IGNORE",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 32 bit reference to a symbol.  */
   HOWTO (ALPHA_R_REFLONG,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "REFLONG",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 64 bit reference to a symbol.  */
   HOWTO (ALPHA_R_REFQUAD,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "REFQUAD",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit GP relative offset.  This is just like REFLONG except
      that when the value is used the value of the gp register will be
      added in.  */
   HOWTO (ALPHA_R_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "GPREL32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Used for an instruction that refers to memory off the GP
      register.  The offset is 16 bits of the 32 bit instruction.  This
      reloc always seems to be against the .lita section.  */
   HOWTO (ALPHA_R_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "LITERAL",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This reloc only appears immediately following a LITERAL reloc.
      It identifies a use of the literal.  It seems that the linker can
@@ -203,17 +203,17 @@ static reloc_howto_type alpha_howto_tabl
      relocation.  */
   HOWTO (ALPHA_R_LITUSE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 reloc_nil,		/* special_function */
 	 "LITUSE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Load the gp register.  This is always used for a ldah instruction
      which loads the upper 16 bits of the gp register.  The next reloc
@@ -228,180 +228,180 @@ static reloc_howto_type alpha_howto_tabl
      address.  */
   HOWTO (ALPHA_R_GPDISP,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 reloc_nil,		/* special_function */
 	 "GPDISP",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 21 bit branch.  The native assembler generates these for
      branches within the text segment, and also fills in the PC
      relative offset in the instruction.  */
   HOWTO (ALPHA_R_BRADDR,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "BRADDR",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x1fffff,		/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A hint for a jump to a register.  */
   HOWTO (ALPHA_R_HINT,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 14,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "HINT",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x3fff,		/* src_mask */
 	 0x3fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit PC relative offset.  */
   HOWTO (ALPHA_R_SREL16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "SREL16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit PC relative offset.  */
   HOWTO (ALPHA_R_SREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "SREL32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 64 bit PC relative offset.  */
   HOWTO (ALPHA_R_SREL64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "SREL64",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Push a value on the reloc evaluation stack.  */
   HOWTO (ALPHA_R_OP_PUSH,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "OP_PUSH",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Store the value from the stack at the given address.  Store it in
      a bitfield of size r_size starting at bit position r_offset.  */
   HOWTO (ALPHA_R_OP_STORE,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "OP_STORE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Subtract the reloc address from the value on the top of the
      relocation stack.  */
   HOWTO (ALPHA_R_OP_PSUB,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "OP_PSUB",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Shift the value on the top of the relocation stack right by the
      given value.  */
   HOWTO (ALPHA_R_OP_PRSHIFT,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "OP_PRSHIFT",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Adjust the GP value for a new range in the object file.  */
   HOWTO (ALPHA_R_GPVALUE,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "GPVALUE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 false)			/* pcrel_offset */
 };
 
 /* 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))
@@ -436,14 +436,14 @@ alpha_ecoff_object_p (bfd *abfd)
 
 /* See whether the magic number matches.  */
 
-static bfd_boolean
+static bool
 alpha_ecoff_bad_format_hook (bfd *abfd ATTRIBUTE_UNUSED,
 			     void * filehdr)
 {
   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
 
   if (! ALPHA_ECOFF_BADMAG (*internal_f))
-    return TRUE;
+    return true;
 
   if (ALPHA_ECOFF_COMPRESSEDMAG (*internal_f))
     _bfd_error_handler
@@ -451,7 +451,7 @@ alpha_ecoff_bad_format_hook (bfd *abfd A
 	 "use compiler flags, or objZ, to generate uncompressed binaries"),
        abfd);
 
-  return FALSE;
+  return false;
 }
 
 /* This is a hook called by coff_real_object_p to create any backend
@@ -517,8 +517,7 @@ alpha_ecoff_swap_reloc_in (bfd *abfd,
 	 value is not actually a symbol index, but is instead a
 	 special code.  We put the code in the r_size field, and
 	 clobber the symndx.  */
-      if (intern->r_size != 0)
-	abort ();
+      BFD_ASSERT (intern->r_size == 0);
       intern->r_size = intern->r_symndx;
       intern->r_symndx = RELOC_SECTION_NONE;
     }
@@ -526,12 +525,16 @@ alpha_ecoff_swap_reloc_in (bfd *abfd,
     {
       /* The IGNORE reloc generally follows a GPDISP reloc, and is
 	 against the .lita section.  The section is irrelevant.  */
-      if (! intern->r_extern &&
-	  intern->r_symndx == RELOC_SECTION_ABS)
-	abort ();
+      BFD_ASSERT (intern->r_extern || intern->r_symndx != RELOC_SECTION_ABS);
       if (! intern->r_extern && intern->r_symndx == RELOC_SECTION_LITA)
 	intern->r_symndx = RELOC_SECTION_ABS;
     }
+  else if (intern->r_type == ALPHA_R_OP_STORE)
+    {
+      /* Size of 64 bits is encoded as 0 in this 6-bit field.  */
+      if (intern->r_size == 0)
+	intern->r_size = 64;
+    }
 }
 
 /* Swap a reloc out.  */
@@ -664,7 +667,7 @@ alpha_adjust_reloc_in (bfd *abfd,
 	 some reason the address of this reloc type is not adjusted by
 	 the section vma.  We record the gp value for this object file
 	 here, for convenience when doing the GPDISP relocation.  */
-      rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+      rptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
       rptr->address = intern->r_vaddr;
       rptr->addend = ecoff_data (abfd)->gp;
       break;
@@ -713,6 +716,50 @@ alpha_adjust_reloc_out (bfd *abfd ATTRIB
     }
 }
 
+/* Write VAL to a little-endian bitfield specified by BITOFFSET and
+   BITSIZE at CONTENTS + SECOFFSET.  Verify that these parameter are
+   valid for SEC in ABFD.  */
+
+static bool
+write_bit_field (bfd *abfd, asection *sec,
+		 bfd_byte *contents, bfd_size_type secoffset,
+		 unsigned int bitoffset, unsigned int bitsize, uint64_t val)
+{
+  if (bitsize == 0)
+    return true;
+
+  bfd_size_type secsize = bfd_get_section_limit_octets (abfd, sec);
+  unsigned int startbyte = bitoffset >> 3;
+  unsigned int endbyte = (bitoffset + bitsize - 1) >> 3;
+
+  if (secoffset > secsize || secsize - secoffset <= endbyte)
+    return false;
+
+  unsigned int startbit = bitoffset & 7;
+  unsigned int endbit = (bitoffset + bitsize - 1) & 7;
+  unsigned int mask = -1u << startbit;
+  unsigned char *p = contents + secoffset;
+  if (startbyte != endbyte)
+    {
+      p[startbyte] = (p[startbyte] & ~mask) | ((val << startbit) & mask);
+      val = val >> (8 - startbit);
+
+      for (unsigned int off = startbyte + 1; off < endbyte; ++off)
+	{
+	  p[off] = val;
+	  val >>= 8;
+	}
+      mask = ~(-1u << (1 + endbit));
+    }
+  else
+    {
+      val = val << startbit;
+      mask = mask & ~(-1u << (1 + endbit));
+    }
+  p[endbyte] = (p[endbyte] & ~mask) | (val & mask);
+  return true;
+}
+
 /* The size of the stack for the relocation evaluator.  */
 #define RELOC_STACKSIZE (10)
 
@@ -727,29 +774,36 @@ alpha_ecoff_get_relocated_section_conten
 					    struct bfd_link_info *link_info,
 					    struct bfd_link_order *link_order,
 					    bfd_byte *data,
-					    bfd_boolean relocatable,
+					    bool relocatable,
 					    asymbol **symbols)
 {
   bfd *input_bfd = link_order->u.indirect.section->owner;
   asection *input_section = link_order->u.indirect.section;
-  long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
-  arelent **reloc_vector = NULL;
+  long reloc_size;
+  arelent **reloc_vector;
   long reloc_count;
   bfd *output_bfd = relocatable ? abfd : (bfd *) NULL;
   bfd_vma gp;
-  bfd_size_type sz;
-  bfd_boolean gp_undefined;
+  bool gp_undefined;
   bfd_vma stack[RELOC_STACKSIZE];
   int tos = 0;
 
+  reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
   if (reloc_size < 0)
-    goto error_return;
-  reloc_vector = (arelent **) bfd_malloc ((bfd_size_type) reloc_size);
-  if (reloc_vector == NULL && reloc_size != 0)
-    goto error_return;
+    return NULL;
+
+  bfd_byte *orig_data = data;
+  if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
+    return NULL;
+
+  if (data == NULL)
+    return NULL;
 
-  sz = input_section->rawsize ? input_section->rawsize : input_section->size;
-  if (! bfd_get_section_contents (input_bfd, input_section, data, 0, sz))
+  if (reloc_size == 0)
+    return data;
+
+  reloc_vector = (arelent **) bfd_malloc (reloc_size);
+  if (reloc_vector == NULL)
     goto error_return;
 
   reloc_count = bfd_canonicalize_reloc (input_bfd, input_section,
@@ -760,7 +814,7 @@ alpha_ecoff_get_relocated_section_conten
     goto successful_return;
 
   /* Get the GP value for the output BFD.  */
-  gp_undefined = FALSE;
+  gp_undefined = false;
   gp = _bfd_get_gp_value (abfd);
   if (gp == 0)
     {
@@ -788,11 +842,11 @@ alpha_ecoff_get_relocated_section_conten
 	{
 	  struct bfd_link_hash_entry *h;
 
-	  h = bfd_link_hash_lookup (link_info->hash, "_gp", FALSE, FALSE,
-				    TRUE);
+	  h = bfd_link_hash_lookup (link_info->hash, "_gp", false, false,
+				    true);
 	  if (h == (struct bfd_link_hash_entry *) NULL
 	      || h->type != bfd_link_hash_defined)
-	    gp_undefined = TRUE;
+	    gp_undefined = true;
 	  else
 	    {
 	      gp = (h->u.def.value
@@ -803,15 +857,25 @@ alpha_ecoff_get_relocated_section_conten
 	}
     }
 
-  for (; *reloc_vector != (arelent *) NULL; reloc_vector++)
+  for (arelent **relp = reloc_vector; *relp != NULL; relp++)
     {
       arelent *rel;
       bfd_reloc_status_type r;
       char *err;
+      unsigned int r_type;
 
-      rel = *reloc_vector;
-      r = bfd_reloc_ok;
-      switch (rel->howto->type)
+      rel = *relp;
+      if (rel->howto == NULL)
+	{
+	  r = bfd_reloc_notsupported;
+	  r_type = ALPHA_R_IGNORE;
+	}
+      else
+	{
+	  r = bfd_reloc_ok;
+	  r_type = rel->howto->type;
+	}
+      switch (r_type)
 	{
 	case ALPHA_R_IGNORE:
 	  rel->address += input_section->output_offset;
@@ -868,25 +932,15 @@ alpha_ecoff_get_relocated_section_conten
 	     use.  This would not be particularly difficult, but it is
 	     not currently implemented.  */
 
-	  {
-	    unsigned long insn;
-
-	    /* I believe that the LITERAL reloc will only apply to a
-	       ldq or ldl instruction, so check my assumption.  */
-	    insn = bfd_get_32 (input_bfd, data + rel->address);
-	    BFD_ASSERT (((insn >> 26) & 0x3f) == 0x29
-			|| ((insn >> 26) & 0x3f) == 0x28);
-
-	    rel->addend -= gp;
-	    r = bfd_perform_relocation (input_bfd, rel, data, input_section,
-					output_bfd, &err);
-	    if (r == bfd_reloc_ok && gp_undefined)
-	      {
-		r = bfd_reloc_dangerous;
-		err =
-		  (char *) _("GP relative relocation used when GP not defined");
-	      }
-	  }
+	  rel->addend -= gp;
+	  r = bfd_perform_relocation (input_bfd, rel, data, input_section,
+				      output_bfd, &err);
+	  if (r == bfd_reloc_ok && gp_undefined)
+	    {
+	      r = bfd_reloc_dangerous;
+	      err = (char *) _("GP relative relocation used"
+			       " when GP not defined");
+	    }
 	  break;
 
 	case ALPHA_R_LITUSE:
@@ -901,54 +955,46 @@ alpha_ecoff_get_relocated_section_conten
 	     current location.  The second of the pair is r_size bytes
 	     ahead; it used to be marked with an ALPHA_R_IGNORE reloc,
 	     but that no longer happens in OSF/1 3.2.  */
-	  {
-	    unsigned long insn1, insn2;
-	    bfd_vma addend;
-
-	    /* Get the two instructions.  */
-	    insn1 = bfd_get_32 (input_bfd, data + rel->address);
-	    insn2 = bfd_get_32 (input_bfd, data + rel->address + rel->addend);
-
-	    BFD_ASSERT (((insn1 >> 26) & 0x3f) == 0x09); /* ldah */
-	    BFD_ASSERT (((insn2 >> 26) & 0x3f) == 0x08); /* lda */
-
-	    /* Get the existing addend.  We must account for the sign
-	       extension done by lda and ldah.  */
-	    addend = ((insn1 & 0xffff) << 16) + (insn2 & 0xffff);
-	    if (insn1 & 0x8000)
-	      {
-		addend -= 0x80000000;
-		addend -= 0x80000000;
-	      }
-	    if (insn2 & 0x8000)
-	      addend -= 0x10000;
+	  if (bfd_reloc_offset_in_range (rel->howto, input_bfd, input_section,
+					 rel->address)
+	      && bfd_reloc_offset_in_range (rel->howto, input_bfd, input_section,
+					    rel->address + rel->addend))
+	    {
+	      /* Get the two instructions.  */
+	      bfd_byte *p = data + rel->address;
+	      bfd_vma insn1 = bfd_get_32 (input_bfd, p);
+	      bfd_vma insn2 = bfd_get_32 (input_bfd, p + rel->addend);
+
+	      BFD_ASSERT (((insn1 >> 26) & 0x3f) == 0x09); /* ldah */
+	      BFD_ASSERT (((insn2 >> 26) & 0x3f) == 0x08); /* lda */
+
+	      /* Get the existing addend.  We must account for the sign
+		 extension done by lda and ldah.  */
+	      bfd_vma addend = (((((insn1 & 0xffff) ^ 0x8000) - 0x8000) << 16)
+				+ ((((insn2 & 0xffff) ^ 0x8000) - 0x8000)));
+
+	      /* The existing addend includes the different between the
+		 gp of the input BFD and the address in the input BFD.
+		 Subtract this out.  */
+	      addend -= ecoff_data (input_bfd)->gp - input_section->vma;
+
+	      /* Now add in the final gp value, and subtract out the
+		 final address.  */
+	      addend += gp - (input_section->output_section->vma
+			      + input_section->output_offset);
+
+	      /* Change the instructions, accounting for the sign
+		 extension, and write them out.  */
+	      insn1 = (insn1 & ~0xffff) | (((addend + 0x8000) >> 16) & 0xffff);
+	      insn2 = (insn2 & ~0xffff) | (addend & 0xffff);
 
-	    /* The existing addend includes the different between the
-	       gp of the input BFD and the address in the input BFD.
-	       Subtract this out.  */
-	    addend -= (ecoff_data (input_bfd)->gp
-		       - (input_section->vma + rel->address));
-
-	    /* Now add in the final gp value, and subtract out the
-	       final address.  */
-	    addend += (gp
-		       - (input_section->output_section->vma
-			  + input_section->output_offset
-			  + rel->address));
-
-	    /* Change the instructions, accounting for the sign
-	       extension, and write them out.  */
-	    if (addend & 0x8000)
-	      addend += 0x10000;
-	    insn1 = (insn1 & 0xffff0000) | ((addend >> 16) & 0xffff);
-	    insn2 = (insn2 & 0xffff0000) | (addend & 0xffff);
-
-	    bfd_put_32 (input_bfd, (bfd_vma) insn1, data + rel->address);
-	    bfd_put_32 (input_bfd, (bfd_vma) insn2,
-			data + rel->address + rel->addend);
+	      bfd_put_32 (input_bfd, insn1, p);
+	      bfd_put_32 (input_bfd, insn2, p + rel->addend);
+	    }
+	  else
+	    r = bfd_reloc_outofrange;
 
-	    rel->address += input_section->output_offset;
-	  }
+	  rel->address += input_section->output_offset;
 	  break;
 
 	case ALPHA_R_OP_PUSH:
@@ -978,7 +1024,10 @@ alpha_ecoff_get_relocated_section_conten
 	    relocation += rel->addend;
 
 	    if (tos >= RELOC_STACKSIZE)
-	      abort ();
+	      {
+		r = bfd_reloc_notsupported;
+		break;
+	      }
 
 	    stack[tos++] = relocation;
 	  }
@@ -987,9 +1036,6 @@ alpha_ecoff_get_relocated_section_conten
 	case ALPHA_R_OP_STORE:
 	  /* Store a value from the reloc stack into a bitfield.  */
 	  {
-	    bfd_vma val;
-	    int offset, size;
-
 	    if (relocatable)
 	      {
 		rel->address += input_section->output_offset;
@@ -997,17 +1043,20 @@ alpha_ecoff_get_relocated_section_conten
 	      }
 
 	    if (tos == 0)
-	      abort ();
+	      {
+		r = bfd_reloc_notsupported;
+		break;
+	      }
 
-	    /* The offset and size for this reloc are encoded into the
-	       addend field by alpha_adjust_reloc_in.  */
-	    offset = (rel->addend >> 8) & 0xff;
-	    size = rel->addend & 0xff;
-
-	    val = bfd_get_64 (abfd, data + rel->address);
-	    val &=~ (((1 << size) - 1) << offset);
-	    val |= (stack[--tos] & ((1 << size) - 1)) << offset;
-	    bfd_put_64 (abfd, val, data + rel->address);
+	    /* The offset and size in bits for this reloc are encoded
+	       into the addend field by alpha_adjust_reloc_in.  */
+	    unsigned int offset = (rel->addend >> 8) & 0xff;
+	    unsigned int size = rel->addend & 0xff;
+
+	    if (!write_bit_field (input_bfd, input_section,
+				  data, rel->address,
+				  offset, size, stack[--tos]))
+	      r = bfd_reloc_outofrange;
 	  }
 	  break;
 
@@ -1038,7 +1087,10 @@ alpha_ecoff_get_relocated_section_conten
 	    relocation += rel->addend;
 
 	    if (tos == 0)
-	      abort ();
+	      {
+		r = bfd_reloc_notsupported;
+		break;
+	      }
 
 	    stack[tos - 1] -= relocation;
 	  }
@@ -1071,7 +1123,10 @@ alpha_ecoff_get_relocated_section_conten
 	    relocation += rel->addend;
 
 	    if (tos == 0)
-	      abort ();
+	      {
+		r = bfd_reloc_notsupported;
+		break;
+	      }
 
 	    stack[tos - 1] >>= relocation;
 	  }
@@ -1080,11 +1135,12 @@ alpha_ecoff_get_relocated_section_conten
 	case ALPHA_R_GPVALUE:
 	  /* I really don't know if this does the right thing.  */
 	  gp = rel->addend;
-	  gp_undefined = FALSE;
+	  gp_undefined = false;
 	  break;
 
 	default:
-	  abort ();
+	  r = bfd_reloc_notsupported;
+	  break;
 	}
 
       if (relocatable)
@@ -1103,7 +1159,7 @@ alpha_ecoff_get_relocated_section_conten
 	    case bfd_reloc_undefined:
 	      (*link_info->callbacks->undefined_symbol)
 		(link_info, bfd_asymbol_name (*rel->sym_ptr_ptr),
-		 input_bfd, input_section, rel->address, TRUE);
+		 input_bfd, input_section, rel->address, true);
 	      break;
 	    case bfd_reloc_dangerous:
 	      (*link_info->callbacks->reloc_dangerous)
@@ -1116,24 +1172,39 @@ alpha_ecoff_get_relocated_section_conten
 		 input_section, rel->address);
 	      break;
 	    case bfd_reloc_outofrange:
+	      (*link_info->callbacks->einfo)
+		/* xgettext:c-format */
+		(_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
+		 input_bfd, input_section, rel);
+	      goto error_return;
+	    case bfd_reloc_notsupported:
+	      (*link_info->callbacks->einfo)
+		/* xgettext:c-format */
+		(_("%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"),
+		 input_bfd, input_section, rel);
+	      goto error_return;
 	    default:
-	      abort ();
+	      (*link_info->callbacks->einfo)
+		/* xgettext:c-format */
+		(_("%X%P: %pB(%pA): relocation \"%pR\""
+		   " returns an unrecognized value %x\n"),
+		 input_bfd, input_section, rel, r);
 	      break;
 	    }
 	}
     }
 
   if (tos != 0)
-    abort ();
+    goto error_return;
 
  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);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
@@ -1327,7 +1398,7 @@ alpha_convert_external_reloc (bfd *outpu
    quite similar to get_relocated_section_contents.  Perhaps they
    could be combined somehow.  */
 
-static bfd_boolean
+static bool
 alpha_relocate_section (bfd *output_bfd,
 			struct bfd_link_info *info,
 			bfd *input_bfd,
@@ -1338,12 +1409,13 @@ alpha_relocate_section (bfd *output_bfd,
   asection **symndx_to_section, *lita_sec;
   struct ecoff_link_hash_entry **sym_hashes;
   bfd_vma gp;
-  bfd_boolean gp_undefined;
+  bool gp_undefined;
   bfd_vma stack[RELOC_STACKSIZE];
   int tos = 0;
   struct external_reloc *ext_rel;
   struct external_reloc *ext_rel_end;
   bfd_size_type amt;
+  bool ret = true;
 
   /* We keep a table mapping the symndx found in an internal reloc to
      the appropriate section.  This is faster than looking up the
@@ -1354,7 +1426,7 @@ alpha_relocate_section (bfd *output_bfd,
       amt = NUM_RELOC_SECTIONS * sizeof (asection *);
       symndx_to_section = (asection **) bfd_alloc (input_bfd, amt);
       if (!symndx_to_section)
-	return FALSE;
+	return false;
 
       symndx_to_section[RELOC_SECTION_NONE] = NULL;
       symndx_to_section[RELOC_SECTION_TEXT] =
@@ -1443,7 +1515,7 @@ alpha_relocate_section (bfd *output_bfd,
 					       _("using multiple gp values"),
 					       (char *) NULL, output_bfd,
 					       (asection *) NULL, (bfd_vma) 0);
-		  ecoff_data (output_bfd)->issued_multiple_gp_warning = TRUE;
+		  ecoff_data (output_bfd)->issued_multiple_gp_warning = true;
 		}
 	      if (lita_vma < gp - 0x8000)
 		gp = lita_vma + lita_size - 0x8000;
@@ -1473,10 +1545,11 @@ alpha_relocate_section (bfd *output_bfd,
       int r_extern;
       int r_offset;
       int r_size;
-      bfd_boolean relocatep;
-      bfd_boolean adjust_addrp;
-      bfd_boolean gp_usedp;
+      bool relocatep;
+      bool adjust_addrp;
+      bool gp_usedp;
       bfd_vma addend;
+      bfd_reloc_status_type r;
 
       r_vaddr = H_GET_64 (input_bfd, ext_rel->r_vaddr);
       r_symndx = H_GET_32 (input_bfd, ext_rel->r_symndx);
@@ -1490,31 +1563,17 @@ alpha_relocate_section (bfd *output_bfd,
       r_size = ((ext_rel->r_bits[3] & RELOC_BITS3_SIZE_LITTLE)
 		>> RELOC_BITS3_SIZE_SH_LITTLE);
 
-      relocatep = FALSE;
-      adjust_addrp = TRUE;
-      gp_usedp = FALSE;
+      relocatep = false;
+      adjust_addrp = true;
+      gp_usedp = false;
       addend = 0;
+      r = bfd_reloc_ok;
 
       switch (r_type)
 	{
-	case ALPHA_R_GPRELHIGH:
-	  _bfd_error_handler (_("%pB: %s unsupported"),
-			      input_bfd, "ALPHA_R_GPRELHIGH");
-	  bfd_set_error (bfd_error_bad_value);
-	  continue;
-
-	case ALPHA_R_GPRELLOW:
-	  _bfd_error_handler (_("%pB: %s unsupported"),
-			      input_bfd, "ALPHA_R_GPRELLOW");
-	  bfd_set_error (bfd_error_bad_value);
-	  continue;
-
 	default:
-	  /* xgettext:c-format */
-	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
-			      input_bfd, (int) r_type);
-	  bfd_set_error (bfd_error_bad_value);
-	  continue;
+	  r = bfd_reloc_notsupported;
+	  break;
 
 	case ALPHA_R_IGNORE:
 	  /* This reloc appears after a GPDISP reloc.  On earlier
@@ -1526,13 +1585,13 @@ alpha_relocate_section (bfd *output_bfd,
 	  if (bfd_link_relocatable (info))
 	    H_PUT_64 (input_bfd, input_section->output_offset + r_vaddr,
 		      ext_rel->r_vaddr);
-	  adjust_addrp = FALSE;
+	  adjust_addrp = false;
 	  break;
 
 	case ALPHA_R_REFLONG:
 	case ALPHA_R_REFQUAD:
 	case ALPHA_R_HINT:
-	  relocatep = TRUE;
+	  relocatep = true;
 	  break;
 
 	case ALPHA_R_BRADDR:
@@ -1541,7 +1600,7 @@ alpha_relocate_section (bfd *output_bfd,
 	case ALPHA_R_SREL64:
 	  if (r_extern)
 	    addend += - (r_vaddr + 4);
-	  relocatep = TRUE;
+	  relocatep = true;
 	  break;
 
 	case ALPHA_R_GPREL32:
@@ -1549,9 +1608,9 @@ alpha_relocate_section (bfd *output_bfd,
 	     bit offset from the current GP value.  We must adjust it
 	     by the different between the original GP value and the
 	     current GP value.  */
-	  relocatep = TRUE;
+	  relocatep = true;
 	  addend = ecoff_data (input_bfd)->gp - gp;
-	  gp_usedp = TRUE;
+	  gp_usedp = true;
 	  break;
 
 	case ALPHA_R_LITERAL:
@@ -1571,20 +1630,9 @@ alpha_relocate_section (bfd *output_bfd,
 	     use.  This would not be particularly difficult, but it is
 	     not currently implemented.  */
 
-	  /* I believe that the LITERAL reloc will only apply to a ldq
-	     or ldl instruction, so check my assumption.  */
-	  {
-	    unsigned long insn;
-
-	    insn = bfd_get_32 (input_bfd,
-			       contents + r_vaddr - input_section->vma);
-	    BFD_ASSERT (((insn >> 26) & 0x3f) == 0x29
-			|| ((insn >> 26) & 0x3f) == 0x28);
-	  }
-
-	  relocatep = TRUE;
+	  relocatep = true;
 	  addend = ecoff_data (input_bfd)->gp - gp;
-	  gp_usedp = TRUE;
+	  gp_usedp = true;
 	  break;
 
 	case ALPHA_R_LITUSE:
@@ -1598,58 +1646,45 @@ alpha_relocate_section (bfd *output_bfd,
 	     current location.  The second of the pair is r_symndx
 	     bytes ahead.  It used to be marked with an ALPHA_R_IGNORE
 	     reloc, but OSF/1 3.2 no longer does that.  */
-	  {
-	    unsigned long insn1, insn2;
-
-	    /* Get the two instructions.  */
-	    insn1 = bfd_get_32 (input_bfd,
-				contents + r_vaddr - input_section->vma);
-	    insn2 = bfd_get_32 (input_bfd,
-				(contents
-				 + r_vaddr
-				 - input_section->vma
-				 + r_symndx));
-
-	    BFD_ASSERT (((insn1 >> 26) & 0x3f) == 0x09); /* ldah */
-	    BFD_ASSERT (((insn2 >> 26) & 0x3f) == 0x08); /* lda */
-
-	    /* Get the existing addend.  We must account for the sign
-	       extension done by lda and ldah.  */
-	    addend = ((insn1 & 0xffff) << 16) + (insn2 & 0xffff);
-	    if (insn1 & 0x8000)
-	      {
-		/* This is addend -= 0x100000000 without causing an
-		   integer overflow on a 32 bit host.  */
-		addend -= 0x80000000;
-		addend -= 0x80000000;
-	      }
-	    if (insn2 & 0x8000)
-	      addend -= 0x10000;
+	  if (r_vaddr >= input_section->vma
+	      && r_vaddr - input_section->vma < input_section->size
+	      && input_section->size - (r_vaddr - input_section->vma) > r_symndx
+	      && (input_section->size - (r_vaddr - input_section->vma)
+		  - r_symndx >= 4))
+	    {
+	      /* Get the two instructions.  */
+	      bfd_byte *p = contents + r_vaddr - input_section->vma;
+	      bfd_vma insn1 = bfd_get_32 (input_bfd, p);
+	      bfd_vma insn2 = bfd_get_32 (input_bfd, p + r_symndx);
+
+	      BFD_ASSERT (((insn1 >> 26) & 0x3f) == 0x09); /* ldah */
+	      BFD_ASSERT (((insn2 >> 26) & 0x3f) == 0x08); /* lda */
+
+	      /* Get the existing addend.  We must account for the sign
+		 extension done by lda and ldah.  */
+	      addend = (((((insn1 & 0xffff) ^ 0x8000) - 0x8000) << 16)
+			+ (((insn2 & 0xffff) ^ 0x8000) - 0x8000));
+
+	      /* The existing addend includes the difference between the
+		 gp of the input BFD and the address in the input BFD.
+		 We want to change this to the difference between the
+		 final GP and the final address.  */
+	      addend -= ecoff_data (input_bfd)->gp - input_section->vma;
+	      addend += gp - (input_section->output_section->vma
+			      + input_section->output_offset);
+
+	      /* Change the instructions, accounting for the sign
+		 extension, and write them out.  */
+	      insn1 = (insn1 & ~0xffff) | (((addend + 0x8000) >> 16) & 0xffff);
+	      insn2 = (insn2 & ~0xffff) | (addend & 0xffff);
 
-	    /* The existing addend includes the difference between the
-	       gp of the input BFD and the address in the input BFD.
-	       We want to change this to the difference between the
-	       final GP and the final address.  */
-	    addend += (gp
-		       - ecoff_data (input_bfd)->gp
-		       + input_section->vma
-		       - (input_section->output_section->vma
-			  + input_section->output_offset));
-
-	    /* Change the instructions, accounting for the sign
-	       extension, and write them out.  */
-	    if (addend & 0x8000)
-	      addend += 0x10000;
-	    insn1 = (insn1 & 0xffff0000) | ((addend >> 16) & 0xffff);
-	    insn2 = (insn2 & 0xffff0000) | (addend & 0xffff);
-
-	    bfd_put_32 (input_bfd, (bfd_vma) insn1,
-			contents + r_vaddr - input_section->vma);
-	    bfd_put_32 (input_bfd, (bfd_vma) insn2,
-			contents + r_vaddr - input_section->vma + r_symndx);
+	      bfd_put_32 (input_bfd, insn1, p);
+	      bfd_put_32 (input_bfd, insn2, p + r_symndx);
 
-	    gp_usedp = TRUE;
-	  }
+	      gp_usedp = true;
+	    }
+	  else
+	    r = bfd_reloc_outofrange;
 	  break;
 
 	case ALPHA_R_OP_PUSH:
@@ -1664,8 +1699,11 @@ alpha_relocate_section (bfd *output_bfd,
 	      asection *s;
 
 	      s = symndx_to_section[r_symndx];
-	      if (s == (asection *) NULL)
-		abort ();
+	      if (s == NULL)
+		{
+		  r = bfd_reloc_notsupported;
+		  break;
+		}
 	      addend = s->output_section->vma + s->output_offset - s->vma;
 	    }
 	  else
@@ -1673,8 +1711,11 @@ alpha_relocate_section (bfd *output_bfd,
 	      struct ecoff_link_hash_entry *h;
 
 	      h = sym_hashes[r_symndx];
-	      if (h == (struct ecoff_link_hash_entry *) NULL)
-		abort ();
+	      if (h == NULL)
+		{
+		  r = bfd_reloc_notsupported;
+		  break;
+		}
 
 	      if (! bfd_link_relocatable (info))
 		{
@@ -1691,7 +1732,7 @@ alpha_relocate_section (bfd *output_bfd,
 			 relocated.  */
 		      (*info->callbacks->undefined_symbol)
 			(info, h->root.root.string, input_bfd,
-			 input_section, (bfd_vma) 0, TRUE);
+			 input_section, (bfd_vma) 0, true);
 		      addend = 0;
 		    }
 		}
@@ -1728,25 +1769,34 @@ alpha_relocate_section (bfd *output_bfd,
 		{
 		case ALPHA_R_OP_PUSH:
 		  if (tos >= RELOC_STACKSIZE)
-		    abort ();
+		    {
+		      r = bfd_reloc_notsupported;
+		      break;
+		    }
 		  stack[tos++] = addend;
 		  break;
 
 		case ALPHA_R_OP_PSUB:
 		  if (tos == 0)
-		    abort ();
+		    {
+		      r = bfd_reloc_notsupported;
+		      break;
+		    }
 		  stack[tos - 1] -= addend;
 		  break;
 
 		case ALPHA_R_OP_PRSHIFT:
 		  if (tos == 0)
-		    abort ();
+		    {
+		      r = bfd_reloc_notsupported;
+		      break;
+		    }
 		  stack[tos - 1] >>= addend;
 		  break;
 		}
 	    }
 
-	  adjust_addrp = FALSE;
+	  adjust_addrp = false;
 	  break;
 
 	case ALPHA_R_OP_STORE:
@@ -1755,45 +1805,29 @@ alpha_relocate_section (bfd *output_bfd,
 	     adjust the address of the reloc.  */
 	  if (! bfd_link_relocatable (info))
 	    {
-	      bfd_vma mask;
-	      bfd_vma val;
-
 	      if (tos == 0)
-		abort ();
-
-	      /* Get the relocation mask.  The separate steps and the
-		 casts to bfd_vma are attempts to avoid a bug in the
-		 Alpha OSF 1.3 C compiler.  See reloc.c for more
-		 details.  */
-	      mask = 1;
-	      mask <<= (bfd_vma) r_size;
-	      mask -= 1;
-
-	      /* FIXME: I don't know what kind of overflow checking,
-		 if any, should be done here.  */
-	      val = bfd_get_64 (input_bfd,
-				contents + r_vaddr - input_section->vma);
-	      val &=~ mask << (bfd_vma) r_offset;
-	      val |= (stack[--tos] & mask) << (bfd_vma) r_offset;
-	      bfd_put_64 (input_bfd, val,
-			  contents + r_vaddr - input_section->vma);
+		r = bfd_reloc_notsupported;
+	      else if (!write_bit_field (input_bfd, input_section,
+					 contents,
+					 r_vaddr - input_section->vma,
+					 r_offset, r_size, stack[--tos]))
+		r = bfd_reloc_outofrange;
 	    }
 	  break;
 
 	case ALPHA_R_GPVALUE:
 	  /* I really don't know if this does the right thing.  */
 	  gp = ecoff_data (input_bfd)->gp + r_symndx;
-	  gp_undefined = FALSE;
+	  gp_undefined = false;
 	  break;
 	}
 
-      if (relocatep)
+      if (relocatep && r == bfd_reloc_ok)
 	{
 	  reloc_howto_type *howto;
 	  struct ecoff_link_hash_entry *h = NULL;
 	  asection *s = NULL;
 	  bfd_vma relocation;
-	  bfd_reloc_status_type r;
 
 	  /* Perform a relocation.  */
 
@@ -1805,8 +1839,8 @@ alpha_relocate_section (bfd *output_bfd,
 	      /* If h is NULL, that means that there is a reloc
 		 against an external symbol which we thought was just
 		 a debugging symbol.  This should not happen.  */
-	      if (h == (struct ecoff_link_hash_entry *) NULL)
-		abort ();
+	      if (h == NULL)
+		r = bfd_reloc_notsupported;
 	    }
 	  else
 	    {
@@ -1815,11 +1849,14 @@ alpha_relocate_section (bfd *output_bfd,
 	      else
 		s = symndx_to_section[r_symndx];
 
-	      if (s == (asection *) NULL)
-		abort ();
+	      if (s == NULL)
+		r = bfd_reloc_notsupported;
+
 	    }
 
-	  if (bfd_link_relocatable (info))
+	  if (r != bfd_reloc_ok)
+	    ;
+	  else if (bfd_link_relocatable (info))
 	    {
 	      /* We are generating relocatable output, and must
 		 convert the existing reloc.  */
@@ -1885,12 +1922,7 @@ alpha_relocate_section (bfd *output_bfd,
 				    + hsec->output_offset);
 		    }
 		  else
-		    {
-		      (*info->callbacks->undefined_symbol)
-			(info, h->root.root.string, input_bfd, input_section,
-			 r_vaddr - input_section->vma, TRUE);
-		      relocation = 0;
-		    }
+		    r = bfd_reloc_undefined;
 		}
 	      else
 		{
@@ -1905,37 +1937,14 @@ alpha_relocate_section (bfd *output_bfd,
 		    relocation += input_section->vma;
 		}
 
-	      r = _bfd_final_link_relocate (howto,
-					    input_bfd,
-					    input_section,
-					    contents,
-					    r_vaddr - input_section->vma,
-					    relocation,
-					    addend);
-	    }
-
-	  if (r != bfd_reloc_ok)
-	    {
-	      switch (r)
-		{
-		default:
-		case bfd_reloc_outofrange:
-		  abort ();
-		case bfd_reloc_overflow:
-		  {
-		    const char *name;
-
-		    if (r_extern)
-		      name = sym_hashes[r_symndx]->root.root.string;
-		    else
-		      name = bfd_section_name (symndx_to_section[r_symndx]);
-		    (*info->callbacks->reloc_overflow)
-		      (info, NULL, name, alpha_howto_table[r_type].name,
-		       (bfd_vma) 0, input_bfd, input_section,
-		       r_vaddr - input_section->vma);
-		  }
-		  break;
-		}
+	      if (r == bfd_reloc_ok)
+		r = _bfd_final_link_relocate (howto,
+					      input_bfd,
+					      input_section,
+					      contents,
+					      r_vaddr - input_section->vma,
+					      relocation,
+					      addend);
 	    }
 	}
 
@@ -1952,26 +1961,71 @@ alpha_relocate_section (bfd *output_bfd,
 
       if (gp_usedp && gp_undefined)
 	{
-	  (*info->callbacks->reloc_dangerous)
-	    (info, _("GP relative relocation used when GP not defined"),
-	     input_bfd, input_section, r_vaddr - input_section->vma);
+	  r = bfd_reloc_dangerous;
 	  /* Only give the error once per link.  */
 	  gp = 4;
 	  _bfd_set_gp_value (output_bfd, gp);
-	  gp_undefined = FALSE;
+	  gp_undefined = false;
+	}
+
+      if (r != bfd_reloc_ok)
+	{
+	  switch (r)
+	    {
+	    case bfd_reloc_overflow:
+	      {
+		const char *name;
+
+		if (r_extern)
+		  name = sym_hashes[r_symndx]->root.root.string;
+		else
+		  name = bfd_section_name (symndx_to_section[r_symndx]);
+		(*info->callbacks->reloc_overflow)
+		  (info, NULL, name, alpha_howto_table[r_type].name,
+		   (bfd_vma) 0, input_bfd, input_section,
+		   r_vaddr - input_section->vma);
+	      }
+	      break;
+	    case bfd_reloc_outofrange:
+	      (*info->callbacks->einfo)
+		/* xgettext:c-format */
+		(_("%X%P: %pB(%pA): relocation out of range\n"),
+		 input_bfd, input_section);
+	      break;
+	    case bfd_reloc_undefined:
+	      (*info->callbacks->undefined_symbol)
+		(info, sym_hashes[r_symndx]->root.root.string,
+		 input_bfd, input_section,
+		 r_vaddr - input_section->vma, true);
+	      break;
+	    case bfd_reloc_notsupported:
+	      (*info->callbacks->einfo)
+		/* xgettext:c-format */
+		(_("%X%P: %pB(%pA): relocation is not supported\n"),
+		 input_bfd, input_section);
+	      break;
+	    case bfd_reloc_dangerous:
+	      (*info->callbacks->reloc_dangerous)
+		(info, _("GP relative relocation used when GP not defined"),
+		 input_bfd, input_section, r_vaddr - input_section->vma);
+	      break;
+	    default:
+	      abort ();
+	    }
+	  ret = false;
 	}
     }
 
   if (tos != 0)
-    abort ();
+    ret = false;
 
-  return TRUE;
+  return ret;
 }
 
 /* Do final adjustments to the filehdr and the aouthdr.  This routine
    sets the dynamic bits in the file header.  */
 
-static bfd_boolean
+static bool
 alpha_adjust_headers (bfd *abfd,
 		      struct internal_filehdr *fhdr,
 		      struct internal_aouthdr *ahdr ATTRIBUTE_UNUSED)
@@ -1980,7 +2034,7 @@ alpha_adjust_headers (bfd *abfd,
     fhdr->f_flags |= F_ALPHA_CALL_SHARED;
   else if ((abfd->flags & DYNAMIC) != 0)
     fhdr->f_flags |= F_ALPHA_SHARABLE;
-  return TRUE;
+  return true;
 }
 
 /* Archive handling.  In OSF/1 (or Digital Unix) v3.2, Digital
@@ -2023,10 +2077,13 @@ alpha_ecoff_read_ar_hdr (bfd *abfd)
 
       /* This is a compressed file.  We must set the size correctly.
 	 The size is the eight bytes after the dummy file header.  */
-      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;
+      if (bfd_seek (abfd, FILHSZ, SEEK_CUR) != 0
+	  || bfd_read (ab, 8, abfd) != 8
+	  || bfd_seek (abfd, -(FILHSZ + 8), SEEK_CUR) != 0)
+	{
+	  free (ret);
+	  return NULL;
+	}
 
       ret->parsed_size = H_GET_64 (abfd, ab);
     }
@@ -2038,7 +2095,8 @@ alpha_ecoff_read_ar_hdr (bfd *abfd)
    we uncompress the archive element if necessary.  */
 
 static bfd *
-alpha_ecoff_get_elt_at_filepos (bfd *archive, file_ptr filepos)
+alpha_ecoff_get_elt_at_filepos (bfd *archive, file_ptr filepos,
+				struct bfd_link_info *info)
 {
   bfd *nbfd = NULL;
   struct areltdata *tdata;
@@ -2047,9 +2105,10 @@ 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);
+  nbfd = _bfd_get_elt_at_filepos (archive, filepos, info);
   if (nbfd == NULL)
     goto error_return;
 
@@ -2065,21 +2124,29 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
     return nbfd;
 
   /* We must uncompress this element.  We do this by copying it into a
-     memory buffer, and making bfd_bread and bfd_seek use that buffer.
+     memory buffer, and making bfd_read and bfd_seek use that buffer.
      This can use a lot of memory, but it's simpler than getting a
      temporary file, making that work with the file descriptor caching
      code, and making sure that it is deleted at all appropriate
      times.  It can be changed if it ever becomes important.  */
 
   /* The compressed file starts with a dummy ECOFF file header.  */
-  if (bfd_seek (nbfd, (file_ptr) FILHSZ, SEEK_SET) != 0)
+  if (bfd_seek (nbfd, FILHSZ, SEEK_SET) != 0)
     goto error_return;
 
   /* The next eight bytes are the real file size.  */
-  if (bfd_bread (ab, (bfd_size_type) 8, nbfd) != 8)
+  if (bfd_read (ab, 8, nbfd) != 8)
     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;
@@ -2095,7 +2162,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
       left = size;
 
       /* I don't know what the next eight bytes are for.  */
-      if (bfd_bread (ab, (bfd_size_type) 8, nbfd) != 8)
+      if (bfd_read (ab, 8, nbfd) != 8)
 	goto error_return;
 
       /* This is the uncompression algorithm.  It's a simple
@@ -2106,7 +2173,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
 	 next eight bytes in the output stream.  */
       memset (dict, 0, sizeof dict);
       h = 0;
-      while (bfd_bread (&b, (bfd_size_type) 1, nbfd) == 1)
+      while (bfd_read (&b, 1, nbfd) == 1)
 	{
 	  unsigned int i;
 
@@ -2118,7 +2185,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
 		n = dict[h];
 	      else
 		{
-		  if (! bfd_bread (&n, (bfd_size_type) 1, nbfd))
+		  if (bfd_read (&n, 1, nbfd) != 1)
 		    goto error_return;
 		  dict[h] = n;
 		}
@@ -2147,20 +2214,20 @@ alpha_ecoff_get_elt_at_filepos (bfd *arc
   bim->size = size;
   bim->buffer = buf;
 
-  nbfd->mtime_set = TRUE;
+  nbfd->mtime_set = true;
   nbfd->mtime = strtol (hdr->ar_date, (char **) NULL, 10);
 
   nbfd->flags |= BFD_IN_MEMORY;
   nbfd->iostream = bim;
   nbfd->iovec = &_bfd_memory_iovec;
   nbfd->origin = 0;
+  nbfd->size = 0;
   BFD_ASSERT (! nbfd->cacheable);
 
   return nbfd;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
+  free (buf);
   if (nbfd != NULL)
     bfd_close (nbfd);
   return NULL;
@@ -2200,7 +2267,7 @@ alpha_ecoff_openr_next_archived_file (bf
 	}
     }
 
-  return alpha_ecoff_get_elt_at_filepos (archive, filestart);
+  return alpha_ecoff_get_elt_at_filepos (archive, filestart, NULL);
 }
 
 /* Open the archive file given an index into the armap.  */
@@ -2211,7 +2278,8 @@ alpha_ecoff_get_elt_at_index (bfd *abfd,
   carsym *entry;
 
   entry = bfd_ardata (abfd)->symdefs + sym_index;
-  return alpha_ecoff_get_elt_at_filepos (abfd, entry->file_offset);
+  return alpha_ecoff_get_elt_at_filepos (abfd, entry->file_offset,
+					 NULL);
 }
 
 static void
@@ -2288,15 +2356,15 @@ static const struct ecoff_backend_data a
     alpha_ecoff_swap_coff_reloc_out,
     alpha_ecoff_swap_filehdr_out, alpha_ecoff_swap_aouthdr_out,
     alpha_ecoff_swap_scnhdr_out,
-    FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE,
-    ECOFF_NO_LONG_SECTION_NAMES, 4, FALSE, 2, 32768,
+    FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true,
+    ECOFF_NO_LONG_SECTION_NAMES, 4, false, 2, 32768,
     alpha_ecoff_swap_filehdr_in, alpha_ecoff_swap_aouthdr_in,
     alpha_ecoff_swap_scnhdr_in, NULL,
     alpha_ecoff_bad_format_hook, _bfd_ecoff_set_arch_mach_hook,
     alpha_ecoff_mkobject_hook, _bfd_ecoff_styp_to_sec_flags,
     _bfd_ecoff_set_alignment_hook, _bfd_ecoff_slurp_symbol_table,
     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    NULL, NULL, NULL, NULL
+    NULL, NULL, NULL,
   },
   /* Supported architecture.  */
   bfd_arch_alpha,
@@ -2308,7 +2376,7 @@ static const struct ecoff_backend_data a
   /* TRUE if the .rdata section is part of the text segment, as on the
      Alpha.  FALSE if .rdata is part of the data segment, as on the
      MIPS.  */
-  TRUE,
+  true,
   /* Bitsize of constructor entries.  */
   64,
   /* Reloc to use for constructor entries.  */
@@ -2377,10 +2445,6 @@ static const struct ecoff_backend_data a
 #define _bfd_ecoff_bfd_get_relocated_section_contents \
   alpha_ecoff_get_relocated_section_contents
 
-/* Handling file windows is generic.  */
-#define _bfd_ecoff_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
-
 /* Input section flag lookup is generic.  */
 #define _bfd_ecoff_bfd_lookup_section_flags bfd_generic_lookup_section_flags
 
@@ -2412,11 +2476,13 @@ 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 */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-arm.c ./bfd/coff-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-arm.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-arm.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ARM COFF files.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -124,9 +124,9 @@ coff_arm_reloc (bfd *abfd,
       if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
 	return bfd_reloc_outofrange;
 
-      switch (howto->size)
+      switch (bfd_get_reloc_size (howto))
 	{
-	case 0:
+	case 1:
 	  {
 	    char x = bfd_get_8 (abfd, addr);
 	    DOIT (x);
@@ -134,7 +134,7 @@ coff_arm_reloc (bfd *abfd,
 	  }
 	  break;
 
-	case 1:
+	case 2:
 	  {
 	    short x = bfd_get_16 (abfd, addr);
 	    DOIT (x);
@@ -142,7 +142,7 @@ coff_arm_reloc (bfd *abfd,
 	  }
 	  break;
 
-	case 2:
+	case 4:
 	  {
 	    long x = bfd_get_32 (abfd, addr);
 	    DOIT (x);
@@ -167,7 +167,7 @@ coff_arm_reloc (bfd *abfd,
 #endif
 
 #ifndef PCRELOFFSET
-#define PCRELOFFSET TRUE
+#define PCRELOFFSET true
 #endif
 
 /* These most certainly belong somewhere else. Just had to get rid of
@@ -221,66 +221,66 @@ static reloc_howto_type aoutarm_std_relo
 #ifdef ARM_WINCE
     HOWTO (ARM_26D,
 	   2,
-	   2,
+	   4,
 	   24,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_dont,
 	   aoutarm_fix_pcrel_26_done,
 	   "ARM_26D",
-	   TRUE,	/* partial_inplace.  */
+	   true,	/* partial_inplace.  */
 	   0x00ffffff,
 	   0x0,
 	   PCRELOFFSET),
     HOWTO (ARM_32,
 	   0,
-	   2,
+	   4,
 	   32,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_32",
-	   TRUE,	/* partial_inplace.  */
+	   true,	/* partial_inplace.  */
 	   0xffffffff,
 	   0xffffffff,
 	   PCRELOFFSET),
     HOWTO (ARM_RVA32,
 	   0,
-	   2,
+	   4,
 	   32,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_RVA32",
-	   TRUE,	/* partial_inplace.  */
+	   true,	/* partial_inplace.  */
 	   0xffffffff,
 	   0xffffffff,
 	   PCRELOFFSET),
     HOWTO (ARM_26,
 	   2,
-	   2,
+	   4,
 	   24,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   aoutarm_fix_pcrel_26 ,
 	   "ARM_26",
-	   FALSE,
+	   false,
 	   0x00ffffff,
 	   0x00ffffff,
 	   PCRELOFFSET),
     HOWTO (ARM_THUMB12,
 	   1,
-	   1,
+	   2,
 	   11,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   coff_thumb_pcrel_12 ,
 	   "ARM_THUMB12",
-	   FALSE,
+	   false,
 	   0x000007ff,
 	   0x000007ff,
 	   PCRELOFFSET),
@@ -295,212 +295,212 @@ static reloc_howto_type aoutarm_std_relo
     EMPTY_HOWTO (-1),
     HOWTO (ARM_SECTION,
 	   0,
-	   1,
+	   2,
 	   16,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_SECTION",
-	   TRUE,	/* partial_inplace.  */
+	   true,	/* partial_inplace.  */
 	   0x0000ffff,
 	   0x0000ffff,
 	   PCRELOFFSET),
     HOWTO (ARM_SECREL,
 	   0,
-	   2,
+	   4,
 	   32,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_SECREL",
-	   TRUE,	/* partial_inplace.  */
+	   true,	/* partial_inplace.  */
 	   0xffffffff,
 	   0xffffffff,
 	   PCRELOFFSET),
 #else /* not ARM_WINCE */
     HOWTO (ARM_8,
 	   0,
-	   0,
+	   1,
 	   8,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_8",
-	   TRUE,
+	   true,
 	   0x000000ff,
 	   0x000000ff,
 	   PCRELOFFSET),
     HOWTO (ARM_16,
 	   0,
-	   1,
+	   2,
 	   16,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_16",
-	   TRUE,
+	   true,
 	   0x0000ffff,
 	   0x0000ffff,
 	   PCRELOFFSET),
     HOWTO (ARM_32,
 	   0,
-	   2,
+	   4,
 	   32,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_32",
-	   TRUE,
+	   true,
 	   0xffffffff,
 	   0xffffffff,
 	   PCRELOFFSET),
     HOWTO (ARM_26,
 	   2,
-	   2,
+	   4,
 	   24,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   aoutarm_fix_pcrel_26 ,
 	   "ARM_26",
-	   FALSE,
+	   false,
 	   0x00ffffff,
 	   0x00ffffff,
 	   PCRELOFFSET),
     HOWTO (ARM_DISP8,
 	   0,
-	   0,
+	   1,
 	   8,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   coff_arm_reloc,
 	   "ARM_DISP8",
-	   TRUE,
+	   true,
 	   0x000000ff,
 	   0x000000ff,
-	   TRUE),
+	   true),
     HOWTO (ARM_DISP16,
 	   0,
-	   1,
+	   2,
 	   16,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   coff_arm_reloc,
 	   "ARM_DISP16",
-	   TRUE,
+	   true,
 	   0x0000ffff,
 	   0x0000ffff,
-	   TRUE),
+	   true),
     HOWTO (ARM_DISP32,
 	   0,
-	   2,
+	   4,
 	   32,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   coff_arm_reloc,
 	   "ARM_DISP32",
-	   TRUE,
+	   true,
 	   0xffffffff,
 	   0xffffffff,
-	   TRUE),
+	   true),
     HOWTO (ARM_26D,
 	   2,
-	   2,
+	   4,
 	   24,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_dont,
 	   aoutarm_fix_pcrel_26_done,
 	   "ARM_26D",
-	   TRUE,
+	   true,
 	   0x00ffffff,
 	   0x0,
-	   FALSE),
+	   false),
     /* 8 is unused */
     EMPTY_HOWTO (-1),
     HOWTO (ARM_NEG16,
 	   0,
-	   -1,
+	   -2,
 	   16,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_NEG16",
-	   TRUE,
+	   true,
 	   0x0000ffff,
 	   0x0000ffff,
-	   FALSE),
+	   false),
     HOWTO (ARM_NEG32,
 	   0,
-	   -2,
+	   -4,
 	   32,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_NEG32",
-	   TRUE,
+	   true,
 	   0xffffffff,
 	   0xffffffff,
-	   FALSE),
+	   false),
     HOWTO (ARM_RVA32,
 	   0,
-	   2,
+	   4,
 	   32,
-	   FALSE,
+	   false,
 	   0,
 	   complain_overflow_bitfield,
 	   coff_arm_reloc,
 	   "ARM_RVA32",
-	   TRUE,
+	   true,
 	   0xffffffff,
 	   0xffffffff,
 	   PCRELOFFSET),
     HOWTO (ARM_THUMB9,
 	   1,
-	   1,
+	   2,
 	   8,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   coff_thumb_pcrel_9 ,
 	   "ARM_THUMB9",
-	   FALSE,
+	   false,
 	   0x000000ff,
 	   0x000000ff,
 	   PCRELOFFSET),
     HOWTO (ARM_THUMB12,
 	   1,
-	   1,
+	   2,
 	   11,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   coff_thumb_pcrel_12 ,
 	   "ARM_THUMB12",
-	   FALSE,
+	   false,
 	   0x000007ff,
 	   0x000007ff,
 	   PCRELOFFSET),
     HOWTO (ARM_THUMB23,
 	   1,
-	   2,
+	   4,
 	   22,
-	   TRUE,
+	   true,
 	   0,
 	   complain_overflow_signed,
 	   coff_thumb_pcrel_23 ,
 	   "ARM_THUMB23",
-	   FALSE,
+	   false,
 	   0x07ff07ff,
 	   0x07ff07ff,
 	   PCRELOFFSET)
@@ -513,7 +513,7 @@ static reloc_howto_type aoutarm_std_relo
 /* Return TRUE if this relocation should
    appear in the output .reloc section.  */
 
-static bfd_boolean
+static bool
 in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
 	    reloc_howto_type * howto)
 {
@@ -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)
@@ -942,7 +942,7 @@ coff_arm_link_hash_table_create (bfd * a
   return & ret->root.root;
 }
 
-static bfd_boolean
+static bool
 arm_emit_base_file_entry (struct bfd_link_info *info,
 			  bfd *output_bfd,
 			  asection *input_section,
@@ -953,13 +953,13 @@ arm_emit_base_file_entry (struct bfd_lin
 		  + input_section->output_offset
 		  + input_section->output_section->vma);
 
-  if (coff_data (output_bfd)->pe)
+  if (obj_pe (output_bfd))
      addr -= pe_data (output_bfd)->pe_opthdr.ImageBase;
   if (fwrite (&addr, sizeof (addr), 1, (FILE *) info->base_file) == 1)
-    return TRUE;
+    return true;
 
   bfd_set_error (bfd_error_system_call);
-  return FALSE;
+  return false;
 }
 
 #ifndef ARM_WINCE
@@ -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);
 
@@ -1035,7 +1035,7 @@ find_thumb_glue (struct bfd_link_info *i
   sprintf (tmp_name, THUMB2ARM_GLUE_ENTRY_NAME, name);
 
   myh = coff_link_hash_lookup
-    (coff_hash_table (info), tmp_name, FALSE, FALSE, TRUE);
+    (coff_hash_table (info), tmp_name, false, false, true);
 
   if (myh == NULL)
     /* xgettext:c-format */
@@ -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);
 
@@ -1064,7 +1064,7 @@ find_arm_glue (struct bfd_link_info *inf
   sprintf (tmp_name, ARM2THUMB_GLUE_ENTRY_NAME, name);
 
   myh = coff_link_hash_lookup
-    (coff_hash_table (info), tmp_name, FALSE, FALSE, TRUE);
+    (coff_hash_table (info), tmp_name, false, false, true);
 
   if (myh == NULL)
     /* xgettext:c-format */
@@ -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:
@@ -1165,7 +1165,7 @@ static const insn32 t2a6_bx_insn    = 0x
    ARM/Thumb builds.  It is only the code marked THUMBEXTENSION that
    is different from the original.  */
 
-static bfd_boolean
+static bool
 coff_arm_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -1222,7 +1222,7 @@ coff_arm_relocate_section (bfd *output_b
       howto = coff_rtype_to_howto (input_bfd, input_section, rel, h,
 				       sym, &addend);
       if (howto == NULL)
-	return FALSE;
+	return false;
 
       /* The relocation_section function will skip pcrel_offset relocs
 	 when doing a relocatable link.  However, we want to convert
@@ -1241,17 +1241,17 @@ coff_arm_relocate_section (bfd *output_b
 	  static reloc_howto_type fake_arm26_reloc =
 	    HOWTO (ARM_26,
 	       2,
-	       2,
+	       4,
 	       24,
-	       TRUE,
+	       true,
 	       0,
 	       complain_overflow_signed,
 	       aoutarm_fix_pcrel_26 ,
 	       "ARM_26",
-	       TRUE,
+	       true,
 	       0x00ffffff,
 	       0x00ffffff,
-	       FALSE);
+	       false);
 
 	  addend -= rel->r_vaddr - input_section->vma;
 #ifdef ARM_WINCE
@@ -1347,7 +1347,7 @@ coff_arm_relocate_section (bfd *output_b
 
 		      myh = find_arm_glue (info, name, input_bfd);
 		      if (myh == NULL)
-			return FALSE;
+			return false;
 
 		      globals = coff_arm_hash_table (info);
 
@@ -1389,7 +1389,7 @@ coff_arm_relocate_section (bfd *output_b
 			  if (info->base_file
 			      && !arm_emit_base_file_entry (info, output_bfd,
 							    s, my_offset + 8))
-			    return FALSE;
+			    return false;
 			}
 
 		      BFD_ASSERT (my_offset <= globals->arm_glue_size);
@@ -1435,7 +1435,7 @@ coff_arm_relocate_section (bfd *output_b
 
 		      myh = find_thumb_glue (info, name, input_bfd);
 		      if (myh == NULL)
-			return FALSE;
+			return false;
 
 		      globals = coff_arm_hash_table (info);
 
@@ -1496,7 +1496,7 @@ coff_arm_relocate_section (bfd *output_b
 				  && !arm_emit_base_file_entry (info,
 								output_bfd, s,
 								my_offset + 16))
-				return FALSE;
+				return false;
 			    }
 			  else
 			    {
@@ -1574,7 +1574,7 @@ coff_arm_relocate_section (bfd *output_b
 	  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);
+	       rel->r_vaddr - input_section->vma, true);
 	}
 
       /* Emit a reloc if the backend thinks it needs it.  */
@@ -1583,7 +1583,7 @@ coff_arm_relocate_section (bfd *output_b
 	  && pe_data(output_bfd)->in_reloc_p(output_bfd, howto)
 	  && !arm_emit_base_file_entry (info, output_bfd, input_section,
 					rel->r_vaddr))
-	return FALSE;
+	return false;
 
       if (done)
 	rstat = bfd_reloc_ok;
@@ -1608,7 +1608,7 @@ coff_arm_relocate_section (bfd *output_b
 	    {
 	      bfd_vma relocation = val + addend;
 	      int size = bfd_get_reloc_size (howto);
-	      bfd_boolean overflow = FALSE;
+	      bool overflow = false;
 	      bfd_byte *location = contents + address;
 	      bfd_vma x = bfd_get_32 (input_bfd, location);
 	      bfd_vma src_mask = 0x007FFFFE;
@@ -1674,7 +1674,7 @@ coff_arm_relocate_section (bfd *output_b
 	      /* Assumes two's complement.  */
 	      if (   signed_check > reloc_signed_max
 		  || signed_check < reloc_signed_min)
-		overflow = TRUE;
+		overflow = true;
 
 	      /* Put the relocation into the correct bits.
 		 For a BLX instruction, make sure that the relocation is rounded up
@@ -1718,13 +1718,13 @@ coff_arm_relocate_section (bfd *output_b
 	{
 	  /* Determine if we need to set the bottom bit of a relocated address
 	     because the address is the address of a Thumb code symbol.  */
-	  int patchit = FALSE;
+	  int patchit = false;
 
 	  if (h != NULL
 	      && (   h->symbol_class == C_THUMBSTATFUNC
 		  || h->symbol_class == C_THUMBEXTFUNC))
 	    {
-	      patchit = TRUE;
+	      patchit = true;
 	    }
 	  else if (sym != NULL
 		   && sym->n_scnum > N_UNDEF)
@@ -1732,7 +1732,7 @@ coff_arm_relocate_section (bfd *output_b
 	      /* No hash entry - use the symbol instead.  */
 	      if (   sym->n_sclass == C_THUMBSTATFUNC
 		  || sym->n_sclass == C_THUMBEXTFUNC)
-		patchit = TRUE;
+		patchit = true;
 	    }
 
 	  if (patchit)
@@ -1755,7 +1755,7 @@ coff_arm_relocate_section (bfd *output_b
 	    /* xgettext:c-format */
 	    (_("%pB: bad reloc address %#" PRIx64 " in section `%pA'"),
 	     input_bfd, (uint64_t) rel->r_vaddr, input_section);
-	  return FALSE;
+	  return false;
 	case bfd_reloc_overflow:
 	  {
 	    const char *name;
@@ -1769,7 +1769,7 @@ coff_arm_relocate_section (bfd *output_b
 	      {
 		name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
 		if (name == NULL)
-		  return FALSE;
+		  return false;
 	      }
 
 	    (*info->callbacks->reloc_overflow)
@@ -1780,12 +1780,12 @@ coff_arm_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 #ifndef COFF_IMAGE_WITH_PE
 
-bfd_boolean
+bool
 bfd_arm_allocate_interworking_sections (struct bfd_link_info * info)
 {
   asection *			    s;
@@ -1809,6 +1809,7 @@ bfd_arm_allocate_interworking_sections (
 
       s->size = globals->arm_glue_size;
       s->contents = foo;
+      s->alloced = 1;
     }
 
   if (globals->thumb_glue_size != 0)
@@ -1824,9 +1825,10 @@ bfd_arm_allocate_interworking_sections (
 
       s->size = globals->thumb_glue_size;
       s->contents = foo;
+      s->alloced = 1;
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -1840,7 +1842,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);
 
@@ -1860,7 +1862,7 @@ record_arm_to_thumb_glue (struct bfd_lin
   sprintf (tmp_name, ARM2THUMB_GLUE_ENTRY_NAME, name);
 
   myh = coff_link_hash_lookup
-    (coff_hash_table (info), tmp_name, FALSE, FALSE, TRUE);
+    (coff_hash_table (info), tmp_name, false, false, true);
 
   if (myh != NULL)
     {
@@ -1874,8 +1876,8 @@ record_arm_to_thumb_glue (struct bfd_lin
      it.  */
   bh = NULL;
   val = globals->arm_glue_size + 1;
-  bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
-				BSF_GLOBAL, s, val, NULL, TRUE, FALSE, &bh);
+  _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
+				    BSF_GLOBAL, s, val, NULL, true, false, &bh);
 
   free (tmp_name);
 
@@ -1896,7 +1898,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);
 
@@ -1916,7 +1918,7 @@ record_thumb_to_arm_glue (struct bfd_lin
   sprintf (tmp_name, THUMB2ARM_GLUE_ENTRY_NAME, name);
 
   myh = coff_link_hash_lookup
-    (coff_hash_table (info), tmp_name, FALSE, FALSE, TRUE);
+    (coff_hash_table (info), tmp_name, false, false, true);
 
   if (myh != NULL)
     {
@@ -1927,8 +1929,8 @@ record_thumb_to_arm_glue (struct bfd_lin
 
   bh = NULL;
   val = globals->thumb_glue_size + 1;
-  bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
-				BSF_GLOBAL, s, val, NULL, TRUE, FALSE, &bh);
+  _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
+				    BSF_GLOBAL, s, val, NULL, true, false, &bh);
 
   /* If we mark it 'thumb', the disassembler will do a better job.  */
   myh = (struct coff_link_hash_entry *) bh;
@@ -1950,8 +1952,8 @@ record_thumb_to_arm_glue (struct bfd_lin
 
   bh = NULL;
   val = globals->thumb_glue_size + (globals->support_old_code ? 8 : 4);
-  bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
-				BSF_LOCAL, s, val, NULL, TRUE, FALSE, &bh);
+  _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name,
+				    BSF_LOCAL, s, val, NULL, true, false, &bh);
 
   free (tmp_name);
 
@@ -1965,7 +1967,7 @@ record_thumb_to_arm_glue (struct bfd_lin
    This function is called from the linker scripts in ld/emultempl/
    {armcoff/pe}.em  */
 
-bfd_boolean
+bool
 bfd_arm_get_bfd_for_interworking (bfd *			 abfd,
 				  struct bfd_link_info * info)
 {
@@ -1976,14 +1978,14 @@ bfd_arm_get_bfd_for_interworking (bfd *
   /* If we are only performing a partial link do not bother
      getting a bfd to hold the glue.  */
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   globals = coff_arm_hash_table (info);
 
   BFD_ASSERT (globals != NULL);
 
   if (globals->bfd_of_glue_owner != NULL)
-    return TRUE;
+    return true;
 
   sec = bfd_get_section_by_name (abfd, ARM2THUMB_GLUE_SECTION_NAME);
 
@@ -1995,7 +1997,7 @@ bfd_arm_get_bfd_for_interworking (bfd *
 					 flags);
       if (sec == NULL
 	  || !bfd_set_section_alignment (sec, 2))
-	return FALSE;
+	return false;
     }
 
   sec = bfd_get_section_by_name (abfd, THUMB2ARM_GLUE_SECTION_NAME);
@@ -2009,16 +2011,16 @@ bfd_arm_get_bfd_for_interworking (bfd *
 
       if (sec == NULL
 	  || !bfd_set_section_alignment (sec, 2))
-	return FALSE;
+	return false;
     }
 
   /* Save the bfd for later use.  */
   globals->bfd_of_glue_owner = abfd;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 bfd_arm_process_before_allocation (bfd *		   abfd,
 				   struct bfd_link_info *  info,
 				   int			   support_old_code)
@@ -2029,7 +2031,7 @@ bfd_arm_process_before_allocation (bfd *
   /* If we are only performing a partial link do not bother
      to construct any glue.  */
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* 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.  */
@@ -2046,7 +2048,7 @@ bfd_arm_process_before_allocation (bfd *
   sec = abfd->sections;
 
   if (sec == NULL)
-    return TRUE;
+    return true;
 
   for (; sec != NULL; sec = sec->next)
     {
@@ -2130,7 +2132,7 @@ bfd_arm_process_before_allocation (bfd *
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 #endif /* ! defined (COFF_IMAGE_WITH_PE) */
@@ -2151,13 +2153,13 @@ bfd_arm_process_before_allocation (bfd *
 /* When doing a relocatable link, we want to convert ARM_26 relocs
    into ARM_26D relocs.  */
 
-static bfd_boolean
+static bool
 coff_arm_adjust_symndx (bfd *obfd ATTRIBUTE_UNUSED,
 			struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			bfd *ibfd,
 			asection *sec,
 			struct internal_reloc *irel,
-			bfd_boolean *adjustedp)
+			bool *adjustedp)
 {
   if (irel->r_type == ARM_26)
     {
@@ -2170,8 +2172,8 @@ coff_arm_adjust_symndx (bfd *obfd ATTRIB
 	  && h->root.u.def.section->output_section == sec->output_section)
 	irel->r_type = ARM_26D;
     }
-  *adjustedp = FALSE;
-  return TRUE;
+  *adjustedp = false;
+  return true;
 }
 
 /* Called when merging the private data areas of two BFDs.
@@ -2179,26 +2181,26 @@ coff_arm_adjust_symndx (bfd *obfd ATTRIB
    attempting to merge binaries compiled for different ARM
    targets, eg different CPUs or different APCS's.     */
 
-static bfd_boolean
+static bool
 coff_arm_merge_private_bfd_data (bfd * ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   BFD_ASSERT (ibfd != NULL && obfd != NULL);
 
   if (ibfd == obfd)
-    return TRUE;
+    return true;
 
   /* If the two formats are different we cannot merge anything.
      This is not an error, since it is permissable to change the
      input and output formats.  */
   if (   ibfd->xvec->flavour != bfd_target_coff_flavour
       || obfd->xvec->flavour != bfd_target_coff_flavour)
-    return TRUE;
+    return true;
 
   /* Determine what should happen if the input ARM architecture
      does not match the output ARM architecture.  */
   if (! bfd_arm_merge_machines (ibfd, obfd))
-    return FALSE;
+    return false;
 
   /* Verify that the APCS is the same for the two BFDs.  */
   if (APCS_SET (ibfd))
@@ -2210,47 +2212,52 @@ 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
 		 );
 
 	      bfd_set_error (bfd_error_wrong_format);
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (APCS_FLOAT_FLAG (obfd) != APCS_FLOAT_FLAG (ibfd))
 	    {
 	      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;
+	      return false;
 	    }
 
 	  if (PIC_FLAG (obfd) != PIC_FLAG (ibfd))
 	    {
 	      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;
+	      return false;
 	    }
 	}
       else
@@ -2272,14 +2279,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
@@ -2288,12 +2296,12 @@ warning: %pB does not support interworki
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Display the flags field.  */
 
-static bfd_boolean
+static bool
 coff_arm_print_private_bfd_data (bfd * abfd, void * ptr)
 {
   FILE * file = (FILE *) ptr;
@@ -2327,7 +2335,7 @@ coff_arm_print_private_bfd_data (bfd * a
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 /* Copies the given flags into the coff_tdata.flags field.
@@ -2337,7 +2345,7 @@ coff_arm_print_private_bfd_data (bfd * a
    Note: Although this function is static, it is explicitly
    called from both coffcode.h and peicode.h.  */
 
-static bfd_boolean
+static bool
 _bfd_coff_arm_set_private_flags (bfd * abfd, flagword flags)
 {
   flagword flag;
@@ -2353,7 +2361,7 @@ _bfd_coff_arm_set_private_flags (bfd * a
 	  || (APCS_FLOAT_FLAG (abfd) != (flags & F_APCS_FLOAT))
 	  || (PIC_FLAG	      (abfd) != (flags & F_PIC))
 	  ))
-    return FALSE;
+    return false;
 
   flag |= (flags & (F_APCS_FLOAT | F_PIC));
 
@@ -2378,24 +2386,24 @@ _bfd_coff_arm_set_private_flags (bfd * a
 
   SET_INTERWORK_FLAG (abfd, flag);
 
-  return TRUE;
+  return true;
 }
 
 /* Copy the important parts of the target specific data
    from one instance of a BFD to another.  */
 
-static bfd_boolean
+static bool
 coff_arm_copy_private_bfd_data (bfd * src, bfd * dest)
 {
   BFD_ASSERT (src != NULL && dest != NULL);
 
   if (src == dest)
-    return TRUE;
+    return true;
 
   /* If the destination is not in the same format as the source, do not do
      the copy.  */
   if (src->xvec != dest->xvec)
-    return TRUE;
+    return true;
 
   /* Copy the flags field.  */
   if (APCS_SET (src))
@@ -2404,13 +2412,13 @@ coff_arm_copy_private_bfd_data (bfd * sr
 	{
 	  /* If the src and dest have different APCS flag bits set, fail.  */
 	  if (APCS_26_FLAG (dest) != APCS_26_FLAG (src))
-	    return FALSE;
+	    return false;
 
 	  if (APCS_FLOAT_FLAG (dest) != APCS_FLOAT_FLAG (src))
-	    return FALSE;
+	    return false;
 
 	  if (PIC_FLAG (dest) != PIC_FLAG (src))
-	    return FALSE;
+	    return false;
 	}
       else
 	SET_APCS_FLAGS (dest, APCS_26_FLAG (src) | APCS_FLOAT_FLAG (src)
@@ -2428,9 +2436,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);
@@ -2442,7 +2452,7 @@ warning: clearing the interworking flag
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Note:  the definitions here of LOCAL_LABEL_PREFIX and USER_LABEL_PREIFX
@@ -2460,7 +2470,7 @@ warning: clearing the interworking flag
    b) Allow other prefixes than ".", e.g. an empty prefix would cause all
       labels of the form Lxxx to be stripped.  */
 
-static bfd_boolean
+static bool
 coff_arm_is_local_label_name (bfd *	   abfd ATTRIBUTE_UNUSED,
 			      const char * name)
 {
@@ -2470,7 +2480,7 @@ coff_arm_is_local_label_name (bfd *	   a
       size_t len = strlen (USER_LABEL_PREFIX);
 
       if (strncmp (name, USER_LABEL_PREFIX, len) == 0)
-	return FALSE;
+	return false;
     }
 #endif
 
@@ -2483,7 +2493,7 @@ coff_arm_is_local_label_name (bfd *	   a
       size_t len = strlen (LOCAL_LABEL_PREFIX);
 
       if (strncmp (name, LOCAL_LABEL_PREFIX, len) != 0)
-	return FALSE;
+	return false;
 
       /* Perform the checks below for the rest of the name.  */
       name += len;
@@ -2499,14 +2509,14 @@ coff_arm_is_local_label_name (bfd *	   a
    This does depend on bfd_make_section attaching a new section to the
    end of the section list for the bfd.  */
 
-static bfd_boolean
+static bool
 coff_arm_link_output_has_begun (bfd * sub, struct coff_final_link_info * info)
 {
   return (sub->output_has_begun
 	  || sub == coff_arm_hash_table (info->info)->bfd_of_glue_owner);
 }
 
-static bfd_boolean
+static bool
 coff_arm_final_link_postscript (bfd * abfd ATTRIBUTE_UNUSED,
 				struct coff_final_link_info * pfinfo)
 {
@@ -2519,9 +2529,9 @@ coff_arm_final_link_postscript (bfd * ab
   if (globals->bfd_of_glue_owner != NULL)
     {
       if (! _bfd_coff_link_input_bfd (pfinfo, globals->bfd_of_glue_owner))
-	return FALSE;
+	return false;
 
-      globals->bfd_of_glue_owner->output_has_begun = TRUE;
+      globals->bfd_of_glue_owner->output_has_begun = true;
     }
 
   return bfd_arm_update_notes (abfd, ARM_NOTE_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.20200303/bfd/coff-arm.h ./bfd/coff-arm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-arm.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-arm.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ARM COFF files.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -19,11 +19,11 @@
    MA 02110-1301, USA.  */
 
 /* ARM Interworking support.  Called from linker.  */
-extern bfd_boolean bfd_arm_allocate_interworking_sections
+extern bool bfd_arm_allocate_interworking_sections
   (struct bfd_link_info *);
 
-extern bfd_boolean bfd_arm_process_before_allocation
+extern bool bfd_arm_process_before_allocation
   (bfd *, struct bfd_link_info *, int);
 
-extern bfd_boolean bfd_arm_get_bfd_for_interworking
+extern bool bfd_arm_get_bfd_for_interworking
   (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.20200303/bfd/coff-bfd.c ./bfd/coff-bfd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-bfd.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-bfd.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD COFF interfaces used outside of BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -27,7 +27,7 @@
 
 /* Return the COFF syment for a symbol.  */
 
-bfd_boolean
+bool
 bfd_coff_get_syment (bfd *abfd,
 		     asymbol *symbol,
 		     struct internal_syment *psyment)
@@ -39,23 +39,27 @@ bfd_coff_get_syment (bfd *abfd,
       || ! csym->native->is_sym)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   *psyment = csym->native->u.syment;
 
   if (csym->native->fix_value)
-    psyment->n_value = psyment->n_value -
-      (bfd_hostptr_t) obj_raw_syments (abfd);
+    {
+      psyment->n_value =
+	((psyment->n_value - (uintptr_t) obj_raw_syments (abfd))
+	 / sizeof (combined_entry_type));
+      csym->native->fix_value = 0;
+    }
 
   /* FIXME: We should handle fix_line here.  */
 
-  return TRUE;
+  return true;
 }
 
 /* Return the COFF auxent for a symbol.  */
 
-bfd_boolean
+bool
 bfd_coff_get_auxent (bfd *abfd,
 		     asymbol *symbol,
 		     int indx,
@@ -72,7 +76,7 @@ bfd_coff_get_auxent (bfd *abfd,
       || indx >= csym->native->u.syment.n_numaux)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   ent = csym->native + indx + 1;
@@ -81,19 +85,28 @@ bfd_coff_get_auxent (bfd *abfd,
   *pauxent = ent->u.auxent;
 
   if (ent->fix_tag)
-    pauxent->x_sym.x_tagndx.l =
-      ((combined_entry_type *) pauxent->x_sym.x_tagndx.p
-       - obj_raw_syments (abfd));
+    {
+      pauxent->x_sym.x_tagndx.u32 =
+	((combined_entry_type *) pauxent->x_sym.x_tagndx.p
+	 - obj_raw_syments (abfd));
+      ent->fix_tag = 0;
+    }
 
   if (ent->fix_end)
-    pauxent->x_sym.x_fcnary.x_fcn.x_endndx.l =
-      ((combined_entry_type *) pauxent->x_sym.x_fcnary.x_fcn.x_endndx.p
-       - obj_raw_syments (abfd));
+    {
+      pauxent->x_sym.x_fcnary.x_fcn.x_endndx.u32 =
+	((combined_entry_type *) pauxent->x_sym.x_fcnary.x_fcn.x_endndx.p
+	 - obj_raw_syments (abfd));
+      ent->fix_end = 0;
+    }
 
   if (ent->fix_scnlen)
-    pauxent->x_csect.x_scnlen.l =
-      ((combined_entry_type *) pauxent->x_csect.x_scnlen.p
-       - obj_raw_syments (abfd));
+    {
+      pauxent->x_csect.x_scnlen.u64 =
+	((combined_entry_type *) pauxent->x_csect.x_scnlen.p
+	 - obj_raw_syments (abfd));
+      ent->fix_scnlen = 0;
+    }
 
-  return TRUE;
+  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.20200303/bfd/coff-bfd.h ./bfd/coff-bfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-bfd.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-bfd.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD COFF interfaces used outside of BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -43,14 +43,10 @@ struct coff_section_tdata
 {
   /* The relocs, swapped into COFF internal form.  This may be NULL.  */
   struct internal_reloc *relocs;
-  /* If this is TRUE, the relocs entry may not be freed.  */
-  bfd_boolean keep_relocs;
   /* The section contents.  This may be NULL.  */
   bfd_byte *contents;
-  /* If this is TRUE, the contents entry may not be freed.  */
-  bfd_boolean keep_contents;
   /* Information cached by coff_find_nearest_line.  */
-  bfd_boolean saved_bias;
+  bool saved_bias;
   bfd_signed_vma bias;
   bfd_vma offset;
   unsigned int i;
@@ -81,11 +77,11 @@ struct coff_section_tdata
 struct internal_syment;
 union internal_auxent;
 
-extern bfd_boolean bfd_coff_get_syment
+extern bool bfd_coff_get_syment
   (bfd *, struct bfd_symbol *, struct internal_syment *);
 
-extern bfd_boolean bfd_coff_get_auxent
+extern bool bfd_coff_get_auxent
   (bfd *, struct bfd_symbol *, int, union internal_auxent *);
 
-extern bfd_boolean bfd_coff_set_symbol_class
+extern bool bfd_coff_set_symbol_class
   (bfd *, struct bfd_symbol *, unsigned 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.20200303/bfd/coffcode.h ./bfd/coffcode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coffcode.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coffcode.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -134,9 +134,10 @@ SUBSUBSECTION
 	in output BFDs at runtime; if it is false, as it will be by default
 	when generating an executable image, long section names are truncated;
 	if true, the long section names extension is employed.  The hook
-	points to a function that allows the value of the flag to be altered
-	at runtime, on formats that support long section names at all; on
-	other formats it points to a stub that returns an error indication.
+	points to a function that allows the value of a copy of the flag
+	in coff object tdata to be altered at runtime, on formats that
+	support long section names at all; on other formats it points
+	to a stub that returns an error indication.
 
 	With input BFDs, the flag is set according to whether any long section
 	names are detected while reading the section headers.  For a completely
@@ -289,31 +290,33 @@ DESCRIPTION
 	<<combined_entry_type>>:
 
 CODE_FRAGMENT
-.
 .typedef struct coff_ptr_struct
 .{
 .  {* Remembers the offset from the first symbol in the file for
-.     this symbol. Generated by coff_renumber_symbols.  *}
+.     this symbol.  Generated by coff_renumber_symbols.  *}
 .  unsigned int offset;
 .
-.  {* Should the value of this symbol be renumbered.  Used for
-.     XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  *}
-.  unsigned int fix_value : 1;
+.  {* Selects between the elements of the union below.  *}
+.  unsigned int is_sym : 1;
 .
-.  {* Should the tag field of this symbol be renumbered.
-.     Created by coff_pointerize_aux.  *}
+.  {* Selects between the elements of the x_sym.x_tagndx union.  If set,
+.     p is valid and the field will be renumbered.  *}
 .  unsigned int fix_tag : 1;
 .
-.  {* Should the endidx field of this symbol be renumbered.
-.     Created by coff_pointerize_aux.  *}
+.  {* Selects between the elements of the x_sym.x_fcnary.x_fcn.x_endndx
+.     union.  If set, p is valid and the field will be renumbered.  *}
 .  unsigned int fix_end : 1;
 .
-.  {* Should the x_csect.x_scnlen field be renumbered.
-.     Created by coff_pointerize_aux.  *}
+.  {* Selects between the elements of the x_csect.x_scnlen union.  If set,
+.     p is valid and the field will be renumbered.  *}
 .  unsigned int fix_scnlen : 1;
 .
-.  {* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
-.     index into the line number entries.  Set by coff_slurp_symbol_table.  *}
+.  {* If set, u.syment.n_value contains a pointer to a symbol.  The final
+.     value will be the offset field.  Used for XCOFF C_BSTAT symbols.  *}
+.  unsigned int fix_value : 1;
+.
+.  {* If set, u.syment.n_value is an index into the line number entries.
+.     Used for XCOFF C_BINCL/C_EINCL symbols.  *}
 .  unsigned int fix_line : 1;
 .
 .  {* The container for the symbol structure as read and translated
@@ -324,11 +327,11 @@ CODE_FRAGMENT
 .    struct internal_syment syment;
 .  } u;
 .
-. {* Selector for the union above.  *}
-. bfd_boolean is_sym;
+. {* An extra pointer which can used by format based on COFF (like XCOFF)
+.    to provide extra information to their backend.  *}
+. void *extrap;
 .} combined_entry_type;
 .
-.
 .{* Each canonical asymbol really looks like this: *}
 .
 .typedef struct coff_symbol_struct
@@ -343,12 +346,13 @@ CODE_FRAGMENT
 .  struct lineno_cache_entry *lineno;
 .
 .  {* Have the line numbers been relocated yet ? *}
-.  bfd_boolean done_lineno;
+.  bool done_lineno;
 .} coff_symbol_type;
-
+.
 */
 
 #include "libiberty.h"
+#include <string.h>
 
 #ifdef COFF_WITH_PE
 #include "peicode.h"
@@ -364,6 +368,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
@@ -386,92 +394,29 @@ CODE_FRAGMENT
 /* Define a macro that can be used to initialise both the fields relating
    to long section names in the backend data struct simultaneously.  */
 #if COFF_ENABLE_LONG_SECTION_NAMES
-#define COFF_DEFAULT_LONG_SECTION_NAMES  (TRUE), COFF_LONG_SECTION_NAMES_SETTER
+#define COFF_DEFAULT_LONG_SECTION_NAMES  (true), COFF_LONG_SECTION_NAMES_SETTER
 #else /* !COFF_ENABLE_LONG_SECTION_NAMES */
-#define COFF_DEFAULT_LONG_SECTION_NAMES  (FALSE), COFF_LONG_SECTION_NAMES_SETTER
+#define COFF_DEFAULT_LONG_SECTION_NAMES  (false), COFF_LONG_SECTION_NAMES_SETTER
 #endif /* COFF_ENABLE_LONG_SECTION_NAMES */
 
-#if defined (COFF_LONG_SECTION_NAMES)
-static bfd_boolean bfd_coff_set_long_section_names_allowed
-  (bfd *, int);
-#else /* !defined (COFF_LONG_SECTION_NAMES) */
-static bfd_boolean bfd_coff_set_long_section_names_disallowed
-  (bfd *, int);
-#endif /* defined (COFF_LONG_SECTION_NAMES) */
-static long sec_to_styp_flags
-  (const char *, flagword);
-static bfd_boolean styp_to_sec_flags
-  (bfd *, void *, const char *, asection *, flagword *);
-static bfd_boolean coff_bad_format_hook
-  (bfd *, void *);
-static void coff_set_custom_section_alignment
-  (bfd *, asection *, const struct coff_section_alignment_entry *,
-   const unsigned int);
-static bfd_boolean coff_new_section_hook
-  (bfd *, asection *);
-static bfd_boolean coff_set_arch_mach_hook
-  (bfd *, void *);
-static bfd_boolean coff_write_relocs
-  (bfd *, int);
-static bfd_boolean coff_set_flags
-  (bfd *, unsigned int *, unsigned short *);
-static bfd_boolean coff_set_arch_mach
-  (bfd *, enum bfd_architecture, unsigned long) ATTRIBUTE_UNUSED;
-static bfd_boolean coff_compute_section_file_positions
-  (bfd *);
-static bfd_boolean coff_write_object_contents
-  (bfd *) ATTRIBUTE_UNUSED;
-static bfd_boolean coff_set_section_contents
-  (bfd *, asection *, const void *, file_ptr, bfd_size_type);
-static bfd_boolean coff_slurp_line_table
-  (bfd *, asection *);
-static bfd_boolean coff_slurp_symbol_table
-  (bfd *);
 static enum coff_symbol_classification coff_classify_symbol
   (bfd *, struct internal_syment *);
-static bfd_boolean coff_slurp_reloc_table
-  (bfd *, asection *, asymbol **);
-static long coff_canonicalize_reloc
-  (bfd *, asection *, arelent **, asymbol **);
-#ifndef coff_mkobject_hook
-static void * coff_mkobject_hook
-  (bfd *, void *,  void *);
-#endif
-#ifdef COFF_WITH_PE
-static flagword handle_COMDAT
-  (bfd *, flagword, void *, const char *, asection *);
-#endif
-#ifdef COFF_IMAGE_WITH_PE
-static bfd_boolean coff_read_word
-  (bfd *, unsigned int *);
-static unsigned int coff_compute_checksum
-  (bfd *);
-static bfd_boolean coff_apply_checksum
-  (bfd *);
-#endif
-#ifdef TICOFF
-static bfd_boolean ticoff0_bad_format_hook
-  (bfd *, void * );
-static bfd_boolean ticoff1_bad_format_hook
-  (bfd *, void * );
-#endif
 
 /* void warning(); */
 
 #if defined (COFF_LONG_SECTION_NAMES)
-static bfd_boolean
+static bool
 bfd_coff_set_long_section_names_allowed (bfd *abfd, int enable)
 {
-  coff_backend_info (abfd)->_bfd_coff_long_section_names = enable;
-  return TRUE;
+  bfd_coff_long_section_names (abfd) = enable;
+  return true;
 }
 #else /* !defined (COFF_LONG_SECTION_NAMES) */
-static bfd_boolean
-bfd_coff_set_long_section_names_disallowed (bfd *abfd, int enable)
+static bool
+bfd_coff_set_long_section_names_disallowed (bfd *abfd ATTRIBUTE_UNUSED,
+					    int enable ATTRIBUTE_UNUSED)
 {
-  (void) abfd;
-  (void) enable;
-  return FALSE;
+  return false;
 }
 #endif /* defined (COFF_LONG_SECTION_NAMES) */
 
@@ -531,8 +476,8 @@ sec_to_styp_flags (const char *sec_name,
       styp_flags = STYP_LIT;
 #endif /* _LIT */
     }
-  else if (CONST_STRNEQ (sec_name, DOT_DEBUG)
-	   || CONST_STRNEQ (sec_name, DOT_ZDEBUG))
+  else if (startswith (sec_name, DOT_DEBUG)
+	   || startswith (sec_name, DOT_ZDEBUG))
     {
       /* Handle the XCOFF debug section and DWARF2 debug sections.  */
       if (!sec_name[6])
@@ -540,18 +485,26 @@ sec_to_styp_flags (const char *sec_name,
       else
 	styp_flags = STYP_DEBUG_INFO;
     }
-  else if (CONST_STRNEQ (sec_name, ".stab"))
+  else if (startswith (sec_name, ".stab"))
     {
       styp_flags = STYP_DEBUG_INFO;
     }
 #ifdef COFF_LONG_SECTION_NAMES
-  else if (CONST_STRNEQ (sec_name, GNU_LINKONCE_WI)
-	   || CONST_STRNEQ (sec_name, GNU_LINKONCE_WT))
+  else if (startswith (sec_name, GNU_LINKONCE_WI)
+	   || startswith (sec_name, GNU_LINKONCE_WT))
     {
       styp_flags = STYP_DEBUG_INFO;
     }
 #endif
 #ifdef RS6000COFF_C
+  else if (!strcmp (sec_name, _TDATA))
+    {
+      styp_flags = STYP_TDATA;
+    }
+  else if (!strcmp (sec_name, _TBSS))
+    {
+      styp_flags = STYP_TBSS;
+    }
   else if (!strcmp (sec_name, _PAD))
     {
       styp_flags = STYP_PAD;
@@ -573,7 +526,7 @@ sec_to_styp_flags (const char *sec_name,
       int i;
 
       for (i = 0; i < XCOFF_DWSECT_NBR_NAMES; i++)
-	if (!strcmp (sec_name, xcoff_dwsect_names[i].name))
+	if (!strcmp (sec_name, xcoff_dwsect_names[i].xcoff_name))
 	  {
 	    styp_flags = STYP_DWARF | xcoff_dwsect_names[i].flag;
 	    break;
@@ -636,16 +589,16 @@ static long
 sec_to_styp_flags (const char *sec_name, flagword sec_flags)
 {
   long styp_flags = 0;
-  bfd_boolean is_dbg = FALSE;
+  bool is_dbg = false;
 
-  if (CONST_STRNEQ (sec_name, DOT_DEBUG)
-      || CONST_STRNEQ (sec_name, DOT_ZDEBUG)
+  if (startswith (sec_name, DOT_DEBUG)
+      || startswith (sec_name, DOT_ZDEBUG)
 #ifdef COFF_LONG_SECTION_NAMES
-      || CONST_STRNEQ (sec_name, GNU_LINKONCE_WI)
-      || CONST_STRNEQ (sec_name, GNU_LINKONCE_WT)
+      || startswith (sec_name, GNU_LINKONCE_WI)
+      || startswith (sec_name, GNU_LINKONCE_WT)
 #endif
-      || CONST_STRNEQ (sec_name, ".stab"))
-    is_dbg = TRUE;
+      || startswith (sec_name, ".stab"))
+    is_dbg = true;
 
   /* caution: there are at least three groups of symbols that have
      very similar bits and meanings: IMAGE_SCN*, SEC_*, and STYP_*.
@@ -676,22 +629,31 @@ sec_to_styp_flags (const char *sec_name,
   /* skip ROM */
   /* skip constRUCTOR */
   /* skip CONTENTS */
+#ifndef COFF_IMAGE_WITH_PE
+  /* I don't think any of the IMAGE_SCN_LNK_* flags set below should be set
+     when the output is PE. Only object files should have them, for the linker
+     to consume.  */
   if ((sec_flags & SEC_IS_COMMON) != 0)
     styp_flags |= IMAGE_SCN_LNK_COMDAT;
+#endif
   if ((sec_flags & SEC_DEBUGGING) != 0)
     styp_flags |= IMAGE_SCN_MEM_DISCARDABLE;
-  if ((sec_flags & SEC_EXCLUDE) != 0 && !is_dbg)
-    styp_flags |= IMAGE_SCN_LNK_REMOVE;
-  if ((sec_flags & SEC_NEVER_LOAD) != 0 && !is_dbg)
+  if ((sec_flags & (SEC_EXCLUDE | SEC_NEVER_LOAD)) != 0 && !is_dbg)
+#ifdef COFF_IMAGE_WITH_PE
+    styp_flags |= IMAGE_SCN_MEM_DISCARDABLE;
+#else
     styp_flags |= IMAGE_SCN_LNK_REMOVE;
+#endif
   /* skip IN_MEMORY */
   /* skip SORT */
+#ifndef COFF_IMAGE_WITH_PE
   if (sec_flags & SEC_LINK_ONCE)
     styp_flags |= IMAGE_SCN_LNK_COMDAT;
   if ((sec_flags
        & (SEC_LINK_DUPLICATES_DISCARD | SEC_LINK_DUPLICATES_SAME_CONTENTS
 	  | SEC_LINK_DUPLICATES_SAME_SIZE)) != 0)
     styp_flags |= IMAGE_SCN_LNK_COMDAT;
+#endif
 
   /* skip LINKER_CREATED */
 
@@ -716,15 +678,15 @@ sec_to_styp_flags (const char *sec_name,
 
 #ifndef COFF_WITH_PE
 
-static bfd_boolean
-styp_to_sec_flags (bfd *abfd ATTRIBUTE_UNUSED,
+static bool
+styp_to_sec_flags (bfd *abfd,
 		   void * hdr,
 		   const char *name,
 		   asection *section ATTRIBUTE_UNUSED,
 		   flagword *flags_ptr)
 {
   struct internal_scnhdr *internal_s = (struct internal_scnhdr *) hdr;
-  long styp_flags = internal_s->s_flags;
+  unsigned long styp_flags = internal_s->s_flags;
   flagword sec_flags = 0;
 
 #ifdef STYP_BLOCK
@@ -782,6 +744,22 @@ styp_to_sec_flags (bfd *abfd ATTRIBUTE_U
   else if (styp_flags & STYP_PAD)
     sec_flags = 0;
 #ifdef RS6000COFF_C
+  else if (styp_flags & STYP_TDATA)
+    {
+      if (sec_flags & SEC_NEVER_LOAD)
+	sec_flags |= SEC_DATA | SEC_THREAD_LOCAL | SEC_COFF_SHARED_LIBRARY;
+      else
+	sec_flags |= SEC_DATA | SEC_THREAD_LOCAL | SEC_LOAD | SEC_ALLOC;
+    }
+  else if (styp_flags & STYP_TBSS)
+    {
+#ifdef BSS_NOLOAD_IS_SHARED_LIBRARY
+      if (sec_flags & SEC_NEVER_LOAD)
+	sec_flags |= SEC_ALLOC | SEC_THREAD_LOCAL | SEC_COFF_SHARED_LIBRARY;
+      else
+#endif
+	sec_flags |= SEC_ALLOC | SEC_THREAD_LOCAL;
+    }
   else if (styp_flags & STYP_EXCEPT)
     sec_flags |= SEC_LOAD;
   else if (styp_flags & STYP_LOADER)
@@ -814,16 +792,16 @@ styp_to_sec_flags (bfd *abfd ATTRIBUTE_U
 #endif
 	sec_flags |= SEC_ALLOC;
     }
-  else if (CONST_STRNEQ (name, DOT_DEBUG)
-	   || CONST_STRNEQ (name, DOT_ZDEBUG)
+  else if (startswith (name, DOT_DEBUG)
+	   || startswith (name, DOT_ZDEBUG)
 #ifdef _COMMENT
 	   || strcmp (name, _COMMENT) == 0
 #endif
 #ifdef COFF_LONG_SECTION_NAMES
-	   || CONST_STRNEQ (name, GNU_LINKONCE_WI)
-	   || CONST_STRNEQ (name, GNU_LINKONCE_WT)
+	   || startswith (name, GNU_LINKONCE_WI)
+	   || startswith (name, GNU_LINKONCE_WT)
 #endif
-	   || CONST_STRNEQ (name, ".stab"))
+	   || startswith (name, ".stab"))
     {
 #ifdef COFF_PAGE_SIZE
       sec_flags |= SEC_DEBUGGING;
@@ -850,6 +828,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
+      && (startswith (name, ".sbss")
+	  || startswith (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
@@ -857,241 +840,229 @@ styp_to_sec_flags (bfd *abfd ATTRIBUTE_U
      The symbols will be defined as weak, so that multiple definitions
      are permitted.  The GNU linker extension is to actually discard
      all but one of the sections.  */
-  if (CONST_STRNEQ (name, ".gnu.linkonce"))
+  if (startswith (name, ".gnu.linkonce"))
     sec_flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
 #endif
 
   if (flags_ptr == NULL)
-    return FALSE;
+    return false;
 
   * flags_ptr = sec_flags;
-  return TRUE;
+  return true;
 }
 
 #else /* COFF_WITH_PE */
 
-static flagword
-handle_COMDAT (bfd * abfd,
-	       flagword sec_flags,
-	       void * hdr,
-	       const char *name,
-	       asection *section)
+static hashval_t
+comdat_hashf (const void *entry)
 {
-  struct internal_scnhdr *internal_s = (struct internal_scnhdr *) hdr;
-  bfd_byte *esymstart, *esym, *esymend;
-  int seen_state = 0;
-  char *target_name = NULL;
+  const struct comdat_hash_entry *fe = entry;
+  return fe->target_index;
+}
+
+static int
+comdat_eqf (const void *e1, const void *e2)
+{
+  const struct comdat_hash_entry *fe1 = e1;
+  const struct comdat_hash_entry *fe2 = e2;
+  return fe1->target_index == fe2->target_index;
+}
+
+static void
+comdat_delf (void *ent)
+{
+  struct comdat_hash_entry *e = ent;
+  free (e->comdat_name);
+  free (e->symname);
+  free (e);
+}
+
+static struct comdat_hash_entry *
+find_flags (htab_t comdat_hash, int target_index)
+{
+  struct comdat_hash_entry needle;
+  needle.target_index = target_index;
+
+  return htab_find (comdat_hash, &needle);
+}
 
-  sec_flags |= SEC_LINK_ONCE;
+static bool
+fill_comdat_hash (bfd *abfd)
+{
+  bfd_byte *esymstart, *esym, *esymend;
 
-  /* Unfortunately, the PE format stores essential information in
-     the symbol table, of all places.  We need to extract that
-     information now, so that objdump and the linker will know how
-     to handle the section without worrying about the symbols.  We
-     can't call slurp_symtab, because the linker doesn't want the
-     swapped symbols.  */
+  /* Unfortunately, the PE format stores essential information in the
+     symbol table, of all places.  We need to extract that information
+     now, so that objdump and the linker will know how to handle the
+     section without worrying about the symbols.  We can't call
+     slurp_symtab, because the linker doesn't want the swapped symbols.  */
 
   /* COMDAT sections are special.  The first symbol is the section
      symbol, which tells what kind of COMDAT section it is.  The
-     second symbol is the "comdat symbol" - the one with the
-     unique name.  GNU uses the section symbol for the unique
-     name; MS uses ".text" for every comdat section.  Sigh.  - DJ */
-
-  /* This is not mirrored in sec_to_styp_flags(), but there
-     doesn't seem to be a need to, either, and it would at best be
-     rather messy.  */
+     second symbol is the "comdat symbol" - the one with the unique
+     name.  GNU uses the section symbol for the unique name; MS uses
+     ".text" for every comdat section.  Sigh.  - DJ.  */
+
+  /* This is not mirrored in sec_to_styp_flags(), but there doesn't
+     seem to be a need to, either, and it would at best be rather messy.  */
 
   if (! _bfd_coff_get_external_symbols (abfd))
-    return sec_flags;
+    return true;
 
-  esymstart = esym = (bfd_byte *) obj_coff_external_syms (abfd);
+  esymstart = esym = obj_coff_external_syms (abfd);
+  if (esym == NULL)
+    return true;
   esymend = esym + obj_raw_syment_count (abfd) * bfd_coff_symesz (abfd);
 
-  while (esym < esymend)
+  for (struct internal_syment isym;
+       esym < esymend;
+       esym += (isym.n_numaux + 1) * bfd_coff_symesz (abfd))
     {
-      struct internal_syment isym;
       char buf[SYMNMLEN + 1];
       const char *symname;
+      flagword sec_flags = SEC_LINK_ONCE;
 
-      bfd_coff_swap_sym_in (abfd, esym, & isym);
-
-      BFD_ASSERT (sizeof (internal_s->s_name) <= SYMNMLEN);
+      bfd_coff_swap_sym_in (abfd, esym, &isym);
 
-      if (isym.n_scnum == section->target_index)
-	{
-	  /* According to the MSVC documentation, the first
-	     TWO entries with the section # are both of
-	     interest to us.  The first one is the "section
-	     symbol" (section name).  The second is the comdat
-	     symbol name.  Here, we've found the first
-	     qualifying entry; we distinguish it from the
-	     second with a state flag.
-
-	     In the case of gas-generated (at least until that
-	     is fixed) .o files, it isn't necessarily the
-	     second one.  It may be some other later symbol.
-
-	     Since gas also doesn't follow MS conventions and
-	     emits the section similar to .text$<name>, where
-	     <something> is the name we're looking for, we
-	     distinguish the two as follows:
-
-	     If the section name is simply a section name (no
-	     $) we presume it's MS-generated, and look at
-	     precisely the second symbol for the comdat name.
-	     If the section name has a $, we assume it's
-	     gas-generated, and look for <something> (whatever
-	     follows the $) as the comdat symbol.  */
+      /* According to the MSVC documentation, the first TWO entries
+	 with the section # are both of interest to us.  The first one
+	 is the "section symbol" (section name).  The second is the
+	 comdat symbol name.  Here, we've found the first qualifying
+	 entry; we distinguish it from the second with a state flag.
 
-	  /* All 3 branches use this.  */
-	  symname = _bfd_coff_internal_syment_name (abfd, &isym, buf);
+	 In the case of gas-generated (at least until that is fixed)
+	 .o files, it isn't necessarily the second one.  It may be
+	 some other later symbol.
 
-	  /* PR 17512 file: 078-11867-0.004  */
-	  if (symname == NULL)
-	    {
-	      _bfd_error_handler (_("%pB: unable to load COMDAT section name"),
-				  abfd);
-	      break;
-	    }
+	 Since gas also doesn't follow MS conventions and emits the
+	 section similar to .text$<name>, where <something> is the
+	 name we're looking for, we distinguish the two as follows:
 
-	  switch (seen_state)
-	    {
-	    case 0:
-	      {
-		/* The first time we've seen the symbol.  */
-		union internal_auxent aux;
+	 If the section name is simply a section name (no $) we
+	 presume it's MS-generated, and look at precisely the second
+	 symbol for the comdat name.  If the section name has a $, we
+	 assume it's gas-generated, and look for <something> (whatever
+	 follows the $) as the comdat symbol.  */
 
-		/* If it isn't the stuff we're expecting, die;
-		   The MS documentation is vague, but it
-		   appears that the second entry serves BOTH
-		   as the comdat symbol and the defining
-		   symbol record (either C_STAT or C_EXT,
-		   possibly with an aux entry with debug
-		   information if it's a function.)  It
-		   appears the only way to find the second one
-		   is to count.  (On Intel, they appear to be
-		   adjacent, but on Alpha, they have been
-		   found separated.)
-
-		   Here, we think we've found the first one,
-		   but there's some checking we can do to be
-		   sure.  */
-
-		if (! ((isym.n_sclass == C_STAT
-			|| isym.n_sclass == C_EXT)
-		       && BTYPE (isym.n_type) == T_NULL
-		       && isym.n_value == 0))
-		  {
-		    /* Malformed input files can trigger this test.
-		       cf PR 21781.  */
-		    _bfd_error_handler (_("%pB: error: unexpected symbol '%s' in COMDAT section"),
-					abfd, symname);
-		    goto breakloop;
-		  }
+      /* All 3 branches use this.  */
+      symname = _bfd_coff_internal_syment_name (abfd, &isym, buf);
 
-		/* FIXME LATER: MSVC generates section names
-		   like .text for comdats.  Gas generates
-		   names like .text$foo__Fv (in the case of a
-		   function).  See comment above for more.  */
+      /* PR 17512 file: 078-11867-0.004  */
+      if (symname == NULL)
+	{
+	  _bfd_error_handler (_("%pB: unable to load COMDAT section name"),
+			      abfd);
+	  continue;
+	}
 
-		if (isym.n_sclass == C_STAT && strcmp (name, symname) != 0)
-		  /* xgettext:c-format */
-		  _bfd_error_handler (_("%pB: warning: COMDAT symbol '%s'"
-					" does not match section name '%s'"),
-				      abfd, symname, name);
+      union internal_auxent aux;
 
-		seen_state = 1;
+      struct comdat_hash_entry needle;
+      needle.target_index = isym.n_scnum;
 
-		/* PR 17512: file: e2cfe54f.  */
-		if (esym + bfd_coff_symesz (abfd) >= esymend)
-		  {
-		    /* xgettext:c-format */
-		    _bfd_error_handler (_("%pB: warning: no symbol for"
-					  " section '%s' found"),
-					abfd, symname);
-		    break;
-		  }
-		/* This is the section symbol.  */
-		bfd_coff_swap_aux_in (abfd, (esym + bfd_coff_symesz (abfd)),
-				      isym.n_type, isym.n_sclass,
-				      0, isym.n_numaux, & aux);
+      void **slot
+	= htab_find_slot (pe_data (abfd)->comdat_hash, &needle, INSERT);
+      if (slot == NULL)
+	return false;
 
-		target_name = strchr (name, '$');
-		if (target_name != NULL)
-		  {
-		    /* Gas mode.  */
-		    seen_state = 2;
-		    /* Skip the `$'.  */
-		    target_name += 1;
-		  }
+      if (*slot == NULL)
+	{
+	  if (isym.n_numaux != 1)
+	    aux.x_scn.x_comdat = 0;
+	  else
+	    {
+	      /* PR 17512: file: e2cfe54f.  */
+	      if (esym + isym.n_numaux * bfd_coff_symesz (abfd) >= esymend)
+		{
+		  /* xgettext:c-format */
+		  _bfd_error_handler (_("%pB: warning: no symbol for"
+					" section '%s' found"),
+				      abfd, symname);
+		  continue;
+		}
+	      bfd_coff_swap_aux_in (abfd, (esym + bfd_coff_symesz (abfd)),
+				    isym.n_type, isym.n_sclass, 0,
+				    isym.n_numaux, &aux);
+	    }
 
-		/* FIXME: Microsoft uses NODUPLICATES and
-		   ASSOCIATIVE, but gnu uses ANY and
-		   SAME_SIZE.  Unfortunately, gnu doesn't do
-		   the comdat symbols right.  So, until we can
-		   fix it to do the right thing, we are
-		   temporarily disabling comdats for the MS
-		   types (they're used in DLLs and C++, but we
-		   don't support *their* C++ libraries anyway
-		   - DJ.  */
-
-		/* Cygwin does not follow the MS style, and
-		   uses ANY and SAME_SIZE where NODUPLICATES
-		   and ASSOCIATIVE should be used.  For
-		   Interix, we just do the right thing up
-		   front.  */
+	  /* FIXME: Microsoft uses NODUPLICATES and ASSOCIATIVE, but
+	     gnu uses ANY and SAME_SIZE.  Unfortunately, gnu doesn't
+	     do the comdat symbols right.  So, until we can fix it to
+	     do the right thing, we are temporarily disabling comdats
+	     for the MS types (they're used in DLLs and C++, but we
+	     don't support *their* C++ libraries anyway - DJ.  */
+
+	  /* Cygwin does not follow the MS style, and uses ANY and
+	     SAME_SIZE where NODUPLICATES and ASSOCIATIVE should be
+	     used.  For Interix, we just do the right thing up
+	     front.  */
 
-		switch (aux.x_scn.x_comdat)
-		  {
-		  case IMAGE_COMDAT_SELECT_NODUPLICATES:
+	  switch (aux.x_scn.x_comdat)
+	    {
+	    case IMAGE_COMDAT_SELECT_NODUPLICATES:
 #ifdef STRICT_PE_FORMAT
-		    sec_flags |= SEC_LINK_DUPLICATES_ONE_ONLY;
+	      sec_flags |= SEC_LINK_DUPLICATES_ONE_ONLY;
 #else
-		    sec_flags &= ~SEC_LINK_ONCE;
+	      sec_flags &= ~SEC_LINK_ONCE;
 #endif
-		    break;
+	      break;
 
-		  case IMAGE_COMDAT_SELECT_ANY:
-		    sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
-		    break;
+	    case IMAGE_COMDAT_SELECT_ANY:
+	      sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
+	      break;
 
-		  case IMAGE_COMDAT_SELECT_SAME_SIZE:
-		    sec_flags |= SEC_LINK_DUPLICATES_SAME_SIZE;
-		    break;
+	    case IMAGE_COMDAT_SELECT_SAME_SIZE:
+	      sec_flags |= SEC_LINK_DUPLICATES_SAME_SIZE;
+	      break;
 
-		  case IMAGE_COMDAT_SELECT_EXACT_MATCH:
-		    /* Not yet fully implemented ??? */
-		    sec_flags |= SEC_LINK_DUPLICATES_SAME_CONTENTS;
-		    break;
+	    case IMAGE_COMDAT_SELECT_EXACT_MATCH:
+	      /* Not yet fully implemented ??? */
+	      sec_flags |= SEC_LINK_DUPLICATES_SAME_CONTENTS;
+	      break;
 
-		    /* debug$S gets this case; other
-		       implications ??? */
+	      /* debug$S gets this case; other implications ???  */
 
-		    /* There may be no symbol... we'll search
-		       the whole table... Is this the right
-		       place to play this game? Or should we do
-		       it when reading it in.  */
-		  case IMAGE_COMDAT_SELECT_ASSOCIATIVE:
+	      /* There may be no symbol.  We'll search the whole
+		 table.  Is this the right place to play this game?
+		 Or should we do it when reading it in?  */
+	    case IMAGE_COMDAT_SELECT_ASSOCIATIVE:
 #ifdef STRICT_PE_FORMAT
-		    /* FIXME: This is not currently implemented.  */
-		    sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
+	      /* FIXME: This is not currently implemented.  */
+	      sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
 #else
-		    sec_flags &= ~SEC_LINK_ONCE;
+	      sec_flags &= ~SEC_LINK_ONCE;
 #endif
-		    break;
+	      break;
 
-		  default:  /* 0 means "no symbol" */
-		    /* debug$F gets this case; other
-		       implications ??? */
-		    sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
-		    break;
-		  }
-	      }
+	    default:  /* 0 means "no symbol" */
+	      /* debug$F gets this case; other implications ???  */
+	      sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
 	      break;
+	    }
+
+	  *slot = bfd_zmalloc (sizeof (struct comdat_hash_entry));
+	  if (*slot == NULL)
+	    return false;
+	  struct comdat_hash_entry *newentry = *slot;
+	  newentry->sec_flags = sec_flags;
+	  newentry->symname = bfd_strdup (symname);
+	  newentry->target_index = isym.n_scnum;
+	  newentry->isym = isym;
+	  newentry->comdat_symbol = -1;
+	}
+      else
+	{
+	  struct comdat_hash_entry *entry = *slot;
+
+	  if (entry->comdat_symbol != -1)
+	    continue;
 
-	    case 2:
+	  char *target_name = strchr (entry->symname, '$');
+	  if (target_name != NULL)
+	    {
 	      /* Gas mode: the first matching on partial name.  */
 
+	      target_name += 1;
 #ifndef TARGET_UNDERSCORE
 #define TARGET_UNDERSCORE 0
 #endif
@@ -1100,50 +1071,108 @@ handle_COMDAT (bfd * abfd,
 			  symname + (TARGET_UNDERSCORE ? 1 : 0)) != 0)
 		{
 		  /* Not the name we're looking for */
-		  esym += (isym.n_numaux + 1) * bfd_coff_symesz (abfd);
 		  continue;
 		}
-	      /* Fall through.  */
-	    case 1:
-	      /* MSVC mode: the lexically second symbol (or
-		 drop through from the above).  */
-	      {
-		char *newname;
-		bfd_size_type amt;
-
-		/* This must the second symbol with the
-		   section #.  It is the actual symbol name.
-		   Intel puts the two adjacent, but Alpha (at
-		   least) spreads them out.  */
-
-		amt = sizeof (struct coff_comdat_info);
-		coff_section_data (abfd, section)->comdat
-		  = (struct coff_comdat_info *) bfd_alloc (abfd, amt);
-		if (coff_section_data (abfd, section)->comdat == NULL)
-		  abort ();
-
-		coff_section_data (abfd, section)->comdat->symbol =
-		  (esym - esymstart) / bfd_coff_symesz (abfd);
-
-		amt = strlen (symname) + 1;
-		newname = (char *) bfd_alloc (abfd, amt);
-		if (newname == NULL)
-		  abort ();
-
-		strcpy (newname, symname);
-		coff_section_data (abfd, section)->comdat->name
-		  = newname;
-	      }
-
-	      goto breakloop;
 	    }
+	  /* MSVC mode: the lexically second symbol (or drop through
+	     from the above).  */
+	  /* This must the second symbol with the section #.  It is
+	     the actual symbol name.  Intel puts the two adjacent, but
+	     Alpha (at least) spreads them out.  */
+
+	  entry->comdat_symbol = (esym - esymstart) / bfd_coff_symesz (abfd);
+	  entry->comdat_name = bfd_strdup (symname);
 	}
+    }
+
+  return true;
+}
+
+static bool
+insert_coff_comdat_info (bfd *abfd, asection *section, const char *symname,
+			 long symbol)
+{
+  struct coff_comdat_info *comdat;
+  size_t len = strlen (symname) + 1;
+
+  comdat = bfd_alloc (abfd, sizeof (*comdat) + len);
+  if (comdat == NULL)
+    return false;
+
+  coff_section_data (abfd, section)->comdat = comdat;
+  comdat->symbol = symbol;
+  char *newname = (char *) (comdat + 1);
+  comdat->name = newname;
+  memcpy (newname, symname, len);
+  return true;
+}
 
-      esym += (isym.n_numaux + 1) * bfd_coff_symesz (abfd);
+static bool
+handle_COMDAT (bfd *abfd, flagword *sec_flags, const char *name,
+	       asection *section)
+{
+  if (pe_data (abfd)->comdat_hash == NULL)
+    {
+      pe_data (abfd)->comdat_hash = htab_create (10, comdat_hashf, comdat_eqf,
+						 comdat_delf);
+      if (pe_data (abfd)->comdat_hash == NULL)
+	return false;
     }
 
- breakloop:
-  return sec_flags;
+  if (htab_elements (pe_data (abfd)->comdat_hash) == 0)
+    if (! fill_comdat_hash (abfd))
+      return false;
+
+  struct comdat_hash_entry *found
+    = find_flags (pe_data (abfd)->comdat_hash, section->target_index);
+  if (found != NULL)
+    {
+      struct internal_syment isym = found->isym;
+
+      /* If it isn't the stuff we're expecting, die;  The MS
+	 documentation is vague, but it appears that the second entry
+	 serves BOTH as the comdat symbol and the defining symbol
+	 record (either C_STAT or C_EXT, possibly with an aux entry
+	 with debug information if it's a function.)  It appears the
+	 only way to find the second one is to count.  (On Intel, they
+	 appear to be adjacent, but on Alpha, they have been found
+	 separated.)
+
+	 Here, we think we've found the first one, but there's some
+	 checking we can do to be sure.  */
+
+      if (! ((isym.n_sclass == C_STAT || isym.n_sclass == C_EXT)
+	     && BTYPE (isym.n_type) == T_NULL && isym.n_value == 0))
+	{
+	  /* Malformed input files can trigger this test.
+	     cf PR 21781.  */
+	  _bfd_error_handler
+	    (_("%pB: error: unexpected symbol '%s' in COMDAT section"),
+	     abfd, found->symname);
+	  return false;
+	}
+
+      /* FIXME LATER: MSVC generates section names like .text for
+	 comdats.  Gas generates names like .text$foo__Fv (in the case
+	 of a function).  See comment above for more.  */
+
+      if (isym.n_sclass == C_STAT && strcmp (name, found->symname) != 0)
+	/* xgettext:c-format */
+	_bfd_error_handler (_("%pB: warning: COMDAT symbol '%s'"
+			      " does not match section name '%s'"),
+			    abfd, found->symname, name);
+
+      if (found->comdat_symbol != -1)
+	{
+	  if (! insert_coff_comdat_info (abfd, section, found->comdat_name,
+					 found->comdat_symbol))
+	    return false;
+	}
+      *sec_flags = *sec_flags | found->sec_flags;
+      return true;
+    }
+  *sec_flags = *sec_flags | SEC_LINK_ONCE;
+  return true;
 }
 
 
@@ -1156,7 +1185,7 @@ handle_COMDAT (bfd * abfd,
    required information.  FIXME: Is the COMDAT symbol index used for
    any purpose other than objdump?  */
 
-static bfd_boolean
+static bool
 styp_to_sec_flags (bfd *abfd,
 		   void * hdr,
 		   const char *name,
@@ -1166,22 +1195,22 @@ styp_to_sec_flags (bfd *abfd,
   struct internal_scnhdr *internal_s = (struct internal_scnhdr *) hdr;
   unsigned long styp_flags = internal_s->s_flags;
   flagword sec_flags;
-  bfd_boolean result = TRUE;
-  bfd_boolean is_dbg = FALSE;
+  bool result = true;
+  bool is_dbg = false;
 
-  if (CONST_STRNEQ (name, DOT_DEBUG)
-      || CONST_STRNEQ (name, DOT_ZDEBUG)
+  if (startswith (name, DOT_DEBUG)
+      || startswith (name, DOT_ZDEBUG)
 #ifdef COFF_LONG_SECTION_NAMES
-      || CONST_STRNEQ (name, GNU_LINKONCE_WI)
-      || CONST_STRNEQ (name, GNU_LINKONCE_WT)
+      || startswith (name, GNU_LINKONCE_WI)
+      || startswith (name, GNU_LINKONCE_WT)
       /* FIXME: These definitions ought to be in a header file.  */
 #define GNU_DEBUGLINK		".gnu_debuglink"
 #define GNU_DEBUGALTLINK	".gnu_debugaltlink"
-      || CONST_STRNEQ (name, GNU_DEBUGLINK)
-      || CONST_STRNEQ (name, GNU_DEBUGALTLINK)
+      || startswith (name, GNU_DEBUGLINK)
+      || startswith (name, GNU_DEBUGALTLINK)
 #endif
-      || CONST_STRNEQ (name, ".stab"))
-    is_dbg = TRUE;
+      || startswith (name, ".stab"))
+    is_dbg = true;
   /* Assume read only unless IMAGE_SCN_MEM_WRITE is specified.  */
   sec_flags = SEC_READONLY;
 
@@ -1294,7 +1323,8 @@ styp_to_sec_flags (bfd *abfd,
 	  break;
 	case IMAGE_SCN_LNK_COMDAT:
 	  /* COMDAT gets very special treatment.  */
-	  sec_flags = handle_COMDAT (abfd, sec_flags, hdr, name, section);
+	  if (!handle_COMDAT (abfd, &sec_flags, name, section))
+	    result = false;
 	  break;
 	default:
 	  /* Silently ignore for now.  */
@@ -1308,10 +1338,15 @@ styp_to_sec_flags (bfd *abfd,
 	    /* xgettext:c-format */
 	    (_("%pB (%s): section flag %s (%#lx) ignored"),
 	     abfd, name, unhandled, flag);
-	  result = FALSE;
+	  result = false;
 	}
     }
 
+  if ((bfd_applicable_section_flags (abfd) & SEC_SMALL_DATA) != 0
+      && (startswith (name, ".sbss")
+	  || startswith (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
@@ -1319,7 +1354,7 @@ styp_to_sec_flags (bfd *abfd,
      The symbols will be defined as weak, so that multiple definitions
      are permitted.  The GNU linker extension is to actually discard
      all but one of the sections.  */
-  if (CONST_STRNEQ (name, ".gnu.linkonce"))
+  if (startswith (name, ".gnu.linkonce"))
     sec_flags |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
 #endif
 
@@ -1337,8 +1372,7 @@ styp_to_sec_flags (bfd *abfd,
 INTERNAL_DEFINITION
 	bfd_coff_backend_data
 
-CODE_FRAGMENT
-
+INTERNAL
 .{* COFF symbol classifications.  *}
 .
 .enum coff_symbol_classification
@@ -1359,7 +1393,10 @@ CODE_FRAGMENT
 .  (asection *, struct bfd_link_info *, struct internal_reloc *,
 .   struct coff_link_hash_entry *, struct internal_syment *);
 .
+
 Special entry points for gdb to swap in coff symbol table parts:
+
+CODE_FRAGMENT
 .typedef struct
 .{
 .  void (*_bfd_coff_swap_aux_in)
@@ -1400,14 +1437,14 @@ Special entry points for gdb to swap in
 .  unsigned int _bfd_relsz;
 .  unsigned int _bfd_linesz;
 .  unsigned int _bfd_filnmlen;
-.  bfd_boolean _bfd_coff_long_filenames;
+.  bool _bfd_coff_long_filenames;
 .
-.  bfd_boolean _bfd_coff_long_section_names;
-.  bfd_boolean (*_bfd_coff_set_long_section_names)
+.  bool _bfd_coff_long_section_names;
+.  bool (*_bfd_coff_set_long_section_names)
 .    (bfd *, int);
 .
 .  unsigned int _bfd_coff_default_section_alignment_power;
-.  bfd_boolean _bfd_coff_force_symnames_in_strings;
+.  bool _bfd_coff_force_symnames_in_strings;
 .  unsigned int _bfd_coff_debug_string_prefix_length;
 .  unsigned int _bfd_coff_max_nscns;
 .
@@ -1423,38 +1460,38 @@ Special entry points for gdb to swap in
 .  void (*_bfd_coff_swap_reloc_in)
 .    (bfd *abfd, void *, void *);
 .
-.  bfd_boolean (*_bfd_coff_bad_format_hook)
+.  bool (*_bfd_coff_bad_format_hook)
 .    (bfd *, void *);
 .
-.  bfd_boolean (*_bfd_coff_set_arch_mach_hook)
+.  bool (*_bfd_coff_set_arch_mach_hook)
 .    (bfd *, void *);
 .
 .  void * (*_bfd_coff_mkobject_hook)
 .    (bfd *, void *, void *);
 .
-.  bfd_boolean (*_bfd_styp_to_sec_flags_hook)
+.  bool (*_bfd_styp_to_sec_flags_hook)
 .    (bfd *, void *, const char *, asection *, flagword *);
 .
 .  void (*_bfd_set_alignment_hook)
 .    (bfd *, asection *, void *);
 .
-.  bfd_boolean (*_bfd_coff_slurp_symbol_table)
+.  bool (*_bfd_coff_slurp_symbol_table)
 .    (bfd *);
 .
-.  bfd_boolean (*_bfd_coff_symname_in_debug)
+.  bool (*_bfd_coff_symname_in_debug)
 .    (bfd *, struct internal_syment *);
 .
-.  bfd_boolean (*_bfd_coff_pointerize_aux_hook)
+.  bool (*_bfd_coff_pointerize_aux_hook)
 .    (bfd *, combined_entry_type *, combined_entry_type *,
 .     unsigned int, combined_entry_type *);
 .
-.  bfd_boolean (*_bfd_coff_print_aux)
+.  bool (*_bfd_coff_print_aux)
 .    (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
 .     combined_entry_type *, unsigned int);
 .
-.  void (*_bfd_coff_reloc16_extra_cases)
+.  bool (*_bfd_coff_reloc16_extra_cases)
 .    (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
-.     bfd_byte *, unsigned int *, unsigned int *);
+.     bfd_byte *, size_t *, size_t *);
 .
 .  int (*_bfd_coff_reloc16_estimate)
 .    (bfd *, asection *, arelent *, unsigned int,
@@ -1463,13 +1500,13 @@ Special entry points for gdb to swap in
 .  enum coff_symbol_classification (*_bfd_coff_classify_symbol)
 .    (bfd *, struct internal_syment *);
 .
-.  bfd_boolean (*_bfd_coff_compute_section_file_positions)
+.  bool (*_bfd_coff_compute_section_file_positions)
 .    (bfd *);
 .
-.  bfd_boolean (*_bfd_coff_start_final_link)
+.  bool (*_bfd_coff_start_final_link)
 .    (bfd *, struct bfd_link_info *);
 .
-.  bfd_boolean (*_bfd_coff_relocate_section)
+.  bool (*_bfd_coff_relocate_section)
 .    (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
 .     struct internal_reloc *, struct internal_syment *, asection **);
 .
@@ -1477,28 +1514,25 @@ Special entry points for gdb to swap in
 .    (bfd *, asection *, struct internal_reloc *,
 .     struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *);
 .
-.  bfd_boolean (*_bfd_coff_adjust_symndx)
+.  bool (*_bfd_coff_adjust_symndx)
 .    (bfd *, struct bfd_link_info *, bfd *, asection *,
-.     struct internal_reloc *, bfd_boolean *);
+.     struct internal_reloc *, bool *);
 .
-.  bfd_boolean (*_bfd_coff_link_add_one_symbol)
-.    (struct bfd_link_info *, bfd *, const char *, flagword,
-.     asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
-.     struct bfd_link_hash_entry **);
-.
-.  bfd_boolean (*_bfd_coff_link_output_has_begun)
+.  bool (*_bfd_coff_link_output_has_begun)
 .    (bfd *, struct coff_final_link_info *);
 .
-.  bfd_boolean (*_bfd_coff_final_link_postscript)
+.  bool (*_bfd_coff_final_link_postscript)
 .    (bfd *, struct coff_final_link_info *);
 .
-.  bfd_boolean (*_bfd_coff_print_pdata)
+.  bool (*_bfd_coff_print_pdata)
 .    (bfd *, void *);
 .
 .} bfd_coff_backend_data;
 .
+
+INTERNAL
 .#define coff_backend_info(abfd) \
-.  ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
+.  ((const bfd_coff_backend_data *) (abfd)->xvec->backend_data)
 .
 .#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
 .  ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
@@ -1541,7 +1575,7 @@ Special entry points for gdb to swap in
 .#define bfd_coff_long_filenames(abfd) \
 .  (coff_backend_info (abfd)->_bfd_coff_long_filenames)
 .#define bfd_coff_long_section_names(abfd) \
-.  (coff_backend_info (abfd)->_bfd_coff_long_section_names)
+.  (coff_data (abfd)->long_section_names)
 .#define bfd_coff_set_long_section_names(abfd, enable) \
 .  ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable))
 .#define bfd_coff_default_section_alignment_power(abfd) \
@@ -1622,10 +1656,6 @@ Special entry points for gdb to swap in
 .#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
 .  ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
 .   (obfd, info, ibfd, sec, rel, adjustedp))
-.#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
-.				      value, string, cp, coll, hashp)\
-.  ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
-.   (info, abfd, name, flags, section, value, string, cp, coll, hashp))
 .
 .#define bfd_coff_link_output_has_begun(a,p) \
 .  ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
@@ -1640,45 +1670,45 @@ Special entry points for gdb to swap in
 .{* Macro: Returns true if the bfd is a PE executable as opposed to a
 .   PE object file.  *}
 .#define bfd_pei_p(abfd) \
-.  (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))
+.  (startswith ((abfd)->xvec->name, "pei-"))
 */
 
 /* See whether the magic number matches.  */
 
-static bfd_boolean
+static bool
 coff_bad_format_hook (bfd * abfd ATTRIBUTE_UNUSED, void * filehdr)
 {
   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
 
   if (BADMAG (*internal_f))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 #ifdef TICOFF
-static bfd_boolean
+static bool
 ticoff0_bad_format_hook (bfd *abfd ATTRIBUTE_UNUSED, void * filehdr)
 {
   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
 
   if (COFF0_BADMAG (*internal_f))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 #endif
 
 #ifdef TICOFF
-static bfd_boolean
+static bool
 ticoff1_bad_format_hook (bfd *abfd ATTRIBUTE_UNUSED, void * filehdr)
 {
   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
 
   if (COFF1_BADMAG (*internal_f))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 #endif
 
@@ -1748,11 +1778,11 @@ static const unsigned int coff_section_a
 /* Initialize a section structure with information peculiar to this
    particular implementation of COFF.  */
 
-static bfd_boolean
+static bool
 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;
@@ -1770,7 +1800,7 @@ coff_new_section_hook (bfd * abfd, asect
 
       for (i = 0; i < XCOFF_DWSECT_NBR_NAMES; i++)
 	if (strcmp (bfd_section_name (section),
-		    xcoff_dwsect_names[i].name) == 0)
+		    xcoff_dwsect_names[i].xcoff_name) == 0)
 	  {
 	    section->alignment_power = 0;
 	    sclass = C_DWARF;
@@ -1781,7 +1811,7 @@ coff_new_section_hook (bfd * abfd, asect
 
   /* Set up the section symbol.  */
   if (!_bfd_generic_new_section_hook (abfd, section))
-    return FALSE;
+    return false;
 
   /* Allocate aux records for section symbols, to store size and
      related info.
@@ -1791,7 +1821,7 @@ coff_new_section_hook (bfd * abfd, asect
   amt = sizeof (combined_entry_type) * 10;
   native = (combined_entry_type *) bfd_zalloc (abfd, amt);
   if (native == NULL)
-    return FALSE;
+    return false;
 
   /* We don't need to set up n_name, n_value, or n_scnum in the native
      symbol information, since they'll be overridden by the BFD symbol
@@ -1799,7 +1829,7 @@ coff_new_section_hook (bfd * abfd, asect
      in case this symbol winds up getting written out.  The value 0
      for n_numaux is already correct.  */
 
-  native->is_sym = TRUE;
+  native->is_sym = true;
   native->u.syment.n_type = T_NULL;
   native->u.syment.n_sclass = sclass;
 
@@ -1809,7 +1839,7 @@ coff_new_section_hook (bfd * abfd, asect
 				     coff_section_alignment_table,
 				     coff_section_alignment_table_size);
 
-  return TRUE;
+  return true;
 }
 
 #ifdef COFF_ALIGN_IN_SECTION_HEADER
@@ -1843,7 +1873,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;
 
@@ -1904,14 +1934,20 @@ coff_set_alignment_hook (bfd * abfd ATTR
       file_ptr oldpos = bfd_tell (abfd);
       bfd_size_type relsz = bfd_coff_relsz (abfd);
 
-      if (bfd_seek (abfd, (file_ptr) hdr->s_relptr, 0) != 0)
+      if (bfd_seek (abfd, hdr->s_relptr, 0) != 0)
 	return;
-      if (bfd_bread (& dst, relsz, abfd) != relsz)
+      if (bfd_read (& dst, relsz, abfd) != relsz)
 	return;
 
-      coff_swap_reloc_in (abfd, &dst, &n);
+      bfd_coff_swap_reloc_in (abfd, &dst, &n);
       if (bfd_seek (abfd, oldpos, 0) != 0)
 	return;
+      if (n.r_vaddr < 0x10000)
+	{
+	  _bfd_error_handler (_("%pB: overflow reloc count too small"), abfd);
+	  bfd_set_error (bfd_error_bad_value);
+	  return;
+	}
       section->reloc_count = hdr->s_nreloc = n.r_vaddr - 1;
       section->rel_filepos += relsz;
     }
@@ -1954,6 +1990,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, hdr->s_relptr, 0) != 0)
+	return;
+      if (bfd_read (& dst, relsz, abfd) != relsz)
+	return;
+
+      bfd_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,21 +2031,23 @@ 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 */
 
 #ifndef coff_mkobject
 
-static bfd_boolean
+static bool
 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)
-    return FALSE;
+    return false;
+
   coff = coff_data (abfd);
   coff->symbols = NULL;
   coff->conversion_table = NULL;
@@ -1984,9 +2055,12 @@ coff_mkobject (bfd * abfd)
   coff->relocbase = 0;
   coff->local_toc_sym_map = 0;
 
+  bfd_coff_long_section_names (abfd)
+    = coff_backend_info (abfd)->_bfd_coff_long_section_names;
+
 /*  make_abs_section(abfd);*/
 
-  return TRUE;
+  return true;
 }
 #endif
 
@@ -2040,7 +2114,7 @@ coff_mkobject_hook (bfd * abfd,
 # else
       xcoff->xcoff64 = 0;
 # endif
-      xcoff->full_aouthdr = TRUE;
+      xcoff->full_aouthdr = true;
       xcoff->toc = internal_a->o_toc;
       xcoff->sntoc = internal_a->o_sntoc;
       xcoff->snentry = internal_a->o_snentry;
@@ -2066,15 +2140,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
@@ -2086,7 +2151,7 @@ coff_mkobject_hook (bfd * abfd,
    would be target independent and would also be much more successful
    at linking together COFF files for different architectures.  */
 
-static bfd_boolean
+static bool
 coff_set_arch_mach_hook (bfd *abfd, void * filehdr)
 {
   unsigned long machine;
@@ -2097,11 +2162,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:
@@ -2156,20 +2216,42 @@ coff_set_arch_mach_hook (bfd *abfd, void
 	}
       break;
 #endif
+#ifdef AARCH64MAGIC
+    case AARCH64MAGIC:
+      arch = bfd_arch_aarch64;
+      machine = internal_f->f_flags & F_AARCH64_ARCHITECTURE_MASK;
+      break;
+#endif
+#ifdef LOONGARCH64MAGIC
+    case LOONGARCH64MAGIC:
+      arch = bfd_arch_loongarch;
+      machine = internal_f->f_flags & F_LOONGARCH64_ARCHITECTURE_MASK;
+      break;
+#endif
+#ifdef RISCV64MAGIC
+    case RISCV64MAGIC:
+      arch = bfd_arch_riscv;
+      machine = bfd_mach_riscv64;
+      break;
+#endif
 #ifdef Z80MAGIC
     case Z80MAGIC:
       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:
-	  return FALSE;
+	  return false;
 	}
       break;
 #endif
@@ -2185,7 +2267,7 @@ coff_set_arch_mach_hook (bfd *abfd, void
 	  machine = bfd_mach_z8002;
 	  break;
 	default:
-	  return FALSE;
+	  return false;
 	}
       break;
 #endif
@@ -2218,15 +2300,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;
-		  }
+		  return false;
 		bfd_coff_swap_sym_in (abfd, buf, & sym);
 		if (sym.n_sclass == C_FILE)
 		  cputype = sym.n_type & 0xff;
@@ -2330,12 +2408,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;
@@ -2348,17 +2420,17 @@ coff_set_arch_mach_hook (bfd *abfd, void
     }
 
   bfd_default_set_arch_mach (abfd, arch, machine);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 symname_in_debug_hook (bfd *abfd ATTRIBUTE_UNUSED,
 		       struct internal_syment *sym ATTRIBUTE_UNUSED)
 {
 #ifdef SYMNAME_IN_DEBUG
   return SYMNAME_IN_DEBUG (sym) != 0;
 #else
-  return FALSE;
+  return false;
 #endif
 }
 
@@ -2370,7 +2442,7 @@ symname_in_debug_hook (bfd *abfd ATTRIBU
 
 /* Handle the csect auxent of a C_EXT, C_AIX_WEAKEXT or C_HIDEXT symbol.  */
 
-static bfd_boolean
+static bool
 coff_pointerize_aux_hook (bfd *abfd ATTRIBUTE_UNUSED,
 			  combined_entry_type *table_base,
 			  combined_entry_type *symbol,
@@ -2384,21 +2456,22 @@ coff_pointerize_aux_hook (bfd *abfd ATTR
       && indaux + 1 == symbol->u.syment.n_numaux)
     {
       BFD_ASSERT (! aux->is_sym);
-      if (SMTYP_SMTYP (aux->u.auxent.x_csect.x_smtyp) == XTY_LD)
+      if (SMTYP_SMTYP (aux->u.auxent.x_csect.x_smtyp) == XTY_LD
+	  && aux->u.auxent.x_csect.x_scnlen.u64 < obj_raw_syment_count (abfd))
 	{
 	  aux->u.auxent.x_csect.x_scnlen.p =
-	    table_base + aux->u.auxent.x_csect.x_scnlen.l;
+	    table_base + aux->u.auxent.x_csect.x_scnlen.u64;
 	  aux->fix_scnlen = 1;
 	}
 
       /* Return TRUE to indicate that the caller should not do any
 	 further work on this auxent.  */
-      return TRUE;
+      return true;
     }
 
   /* Return FALSE to indicate that this auxent should be handled by
      the caller.  */
-  return FALSE;
+  return false;
 }
 
 #else
@@ -2407,7 +2480,7 @@ coff_pointerize_aux_hook (bfd *abfd ATTR
 
 /* Print an aux entry.  This returns TRUE if it has printed it.  */
 
-static bfd_boolean
+static bool
 coff_print_aux (bfd *abfd ATTRIBUTE_UNUSED,
 		FILE *file ATTRIBUTE_UNUSED,
 		combined_entry_type *table_base ATTRIBUTE_UNUSED,
@@ -2426,21 +2499,21 @@ coff_print_aux (bfd *abfd ATTRIBUTE_UNUS
       if (SMTYP_SMTYP (aux->u.auxent.x_csect.x_smtyp) != XTY_LD)
 	{
 	  BFD_ASSERT (! aux->fix_scnlen);
-	  fprintf (file, "val %5" BFD_VMA_FMT "d",
-		   aux->u.auxent.x_csect.x_scnlen.l);
+	  fprintf (file, "val %5" PRIu64,
+		   aux->u.auxent.x_csect.x_scnlen.u64);
 	}
       else
 	{
 	  fprintf (file, "indx ");
 	  if (! aux->fix_scnlen)
-	    fprintf (file, "%4" BFD_VMA_FMT "d",
-		     aux->u.auxent.x_csect.x_scnlen.l);
+	    fprintf (file, "%4" PRIu64,
+		     aux->u.auxent.x_csect.x_scnlen.u64);
 	  else
 	    fprintf (file, "%4ld",
 		     (long) (aux->u.auxent.x_csect.x_scnlen.p - table_base));
 	}
       fprintf (file,
-	       " prmhsh %ld snhsh %u typ %d algn %d clss %u stb %ld snstb %u",
+	       " prmhsh %u snhsh %u typ %d algn %d clss %u stb %u snstb %u",
 	       aux->u.auxent.x_csect.x_parmhash,
 	       (unsigned int) aux->u.auxent.x_csect.x_snhash,
 	       SMTYP_SMTYP (aux->u.auxent.x_csect.x_smtyp),
@@ -2448,12 +2521,12 @@ coff_print_aux (bfd *abfd ATTRIBUTE_UNUS
 	       (unsigned int) aux->u.auxent.x_csect.x_smclas,
 	       aux->u.auxent.x_csect.x_stab,
 	       (unsigned int) aux->u.auxent.x_csect.x_snstab);
-      return TRUE;
+      return true;
     }
 #endif
 
   /* Return FALSE to indicate that no special action was taken.  */
-  return FALSE;
+  return false;
 }
 
 /*
@@ -2489,7 +2562,7 @@ compare_arelent_ptr (const void * x, con
 
 #endif /* TARG_AUX */
 
-static bfd_boolean
+static bool
 coff_write_relocs (bfd * abfd, int first_undef)
 {
   asection *s;
@@ -2513,7 +2586,7 @@ coff_write_relocs (bfd * abfd, int first
 	if (p == NULL)
 	  {
 	    if (s->reloc_count > 0)
-	      return FALSE;
+	      return false;
 	  }
 	else
 	  {
@@ -2524,10 +2597,10 @@ coff_write_relocs (bfd * abfd, int first
 #endif
 
       if (bfd_seek (abfd, s->rel_filepos, SEEK_SET) != 0)
-	return FALSE;
+	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;
@@ -2536,9 +2609,9 @@ coff_write_relocs (bfd * abfd, int first
 	  /* Add one to count *this* reloc (grr).  */
 	  n.r_vaddr = s->reloc_count + 1;
 	  coff_swap_reloc_out (abfd, &n, &dst);
-	  if (bfd_bwrite (& dst, (bfd_size_type) bfd_coff_relsz (abfd),
-			  abfd) != bfd_coff_relsz (abfd))
-	    return FALSE;
+	  if (bfd_write (&dst, bfd_coff_relsz (abfd), abfd)
+	      != bfd_coff_relsz (abfd))
+	    return false;
 	}
 #endif
 
@@ -2610,7 +2683,7 @@ coff_write_relocs (bfd * abfd, int first
 			_bfd_error_handler (_("%pB: reloc against a non-existent"
 					      " symbol index: %ld"),
 					    abfd, n.r_symndx);
-			return FALSE;
+			return false;
 		      }
 		  }
 	      }
@@ -2621,30 +2694,31 @@ coff_write_relocs (bfd * abfd, int first
 
 #ifdef SELECT_RELOC
 	  /* Work out reloc type from what is required.  */
-	  SELECT_RELOC (n, q->howto);
+	  if (q->howto)
+	    SELECT_RELOC (n, q->howto);
 #else
-	  n.r_type = q->howto->type;
+	  if (q->howto)
+	    n.r_type = q->howto->type;
 #endif
 	  coff_swap_reloc_out (abfd, &n, &dst);
 
-	  if (bfd_bwrite (& dst, (bfd_size_type) bfd_coff_relsz (abfd),
-			 abfd) != bfd_coff_relsz (abfd))
-	    return FALSE;
+	  if (bfd_write (&dst, bfd_coff_relsz (abfd), abfd)
+	      != bfd_coff_relsz (abfd))
+	    return false;
 	}
 
 #ifdef TARG_AUX
-      if (p != NULL)
-	free (p);
+      free (p);
 #endif
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set flags and magic number of a coff file from architecture and machine
    type.  Result is TRUE if we can represent the arch&type, FALSE if not.  */
 
-static bfd_boolean
+static bool
 coff_set_flags (bfd * abfd,
 		unsigned int *magicp ATTRIBUTE_UNUSED,
 		unsigned short *flagsp ATTRIBUTE_UNUSED)
@@ -2656,17 +2730,21 @@ 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:
-	  return FALSE;
+	  return false;
 	}
-      return TRUE;
+      return true;
 #endif
 
 #ifdef Z8KMAGIC
@@ -2677,15 +2755,15 @@ coff_set_flags (bfd * abfd,
 	{
 	case bfd_mach_z8001: *flagsp = F_Z8001;	break;
 	case bfd_mach_z8002: *flagsp = F_Z8002;	break;
-	default:	     return FALSE;
+	default:	     return false;
 	}
-      return TRUE;
+      return true;
 #endif
 
 #ifdef TIC30MAGIC
     case bfd_arch_tic30:
       *magicp = TIC30MAGIC;
-      return TRUE;
+      return true;
 #endif
 
 #ifdef TICOFF_DEFAULT_MAGIC
@@ -2708,17 +2786,29 @@ coff_set_flags (bfd * abfd,
 	      *magicp = TICOFF2MAGIC;
 	      break;
 	    default:
-	      return FALSE;
+	      return false;
 	    }
 	}
       TICOFF_TARGET_MACHINE_SET (flagsp, bfd_get_mach (abfd));
-      return TRUE;
+      return true;
+#endif
+
+#ifdef AARCH64MAGIC
+    case bfd_arch_aarch64:
+      * magicp = AARCH64MAGIC;
+      return true;
+#endif
+
+#ifdef LOONGARCH64MAGIC
+    case bfd_arch_loongarch:
+      * magicp = LOONGARCH64MAGIC;
+      return true;
 #endif
 
-#ifdef TIC80_ARCH_MAGIC
-    case bfd_arch_tic80:
-      *magicp = TIC80_ARCH_MAGIC;
-      return TRUE;
+#ifdef RISCV64MAGIC
+    case bfd_arch_riscv:
+      * magicp = RISCV64MAGIC;
+      return true;
 #endif
 
 #ifdef ARMMAGIC
@@ -2757,13 +2847,7 @@ coff_set_flags (bfd * abfd,
 	case bfd_mach_arm_5TE: * flagsp |= F_ARM_5; break;
 	case bfd_mach_arm_XScale: * flagsp |= F_ARM_5; break;
 	}
-      return TRUE;
-#endif
-
-#ifdef PPCMAGIC
-    case bfd_arch_powerpc:
-      *magicp = PPCMAGIC;
-      return TRUE;
+      return true;
 #endif
 
 #if defined(I386MAGIC) || defined(AMD64MAGIC)
@@ -2778,13 +2862,13 @@ coff_set_flags (bfd * abfd,
 #if defined AMD64MAGIC
       *magicp = AMD64MAGIC;
 #endif
-      return TRUE;
+      return true;
 #endif
 
 #ifdef IA64MAGIC
     case bfd_arch_ia64:
       *magicp = IA64MAGIC;
-      return TRUE;
+      return true;
 #endif
 
 #ifdef SH_ARCH_MAGIC_BIG
@@ -2797,13 +2881,13 @@ coff_set_flags (bfd * abfd,
       else
 	*magicp = SH_ARCH_MAGIC_LITTLE;
 #endif
-      return TRUE;
+      return true;
 #endif
 
 #ifdef MIPS_ARCH_MAGIC_WINCE
     case bfd_arch_mips:
       *magicp = MIPS_ARCH_MAGIC_WINCE;
-      return TRUE;
+      return true;
 #endif
 
 #ifdef SPARCMAGIC
@@ -2813,35 +2897,31 @@ coff_set_flags (bfd * abfd,
       /* Just overwrite the usual value if we're doing Lynx.  */
       *magicp = LYNXCOFFMAGIC;
 #endif
-      return TRUE;
+      return true;
 #endif
 
 #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;
+      return true;
 #endif
 
 #ifdef MCOREMAGIC
     case bfd_arch_mcore:
       * magicp = MCOREMAGIC;
-      return TRUE;
+      return true;
 #endif
 
     default:			/* Unknown architecture.  */
-      /* Fall through to "return FALSE" below, to avoid
-	 "statement never reached" errors on the one below.  */
       break;
     }
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 coff_set_arch_mach (bfd * abfd,
 		    enum bfd_architecture arch,
 		    unsigned long machine)
@@ -2850,13 +2930,13 @@ coff_set_arch_mach (bfd * abfd,
   unsigned short dummy2;
 
   if (! bfd_default_set_arch_mach (abfd, arch, machine))
-    return FALSE;
+    return false;
 
   if (arch != bfd_arch_unknown
       && ! coff_set_flags (abfd, &dummy1, &dummy2))
-    return FALSE;		/* We can't represent this type.  */
+    return false;		/* We can't represent this type.  */
 
-  return TRUE;			/* We're easy...  */
+  return true;			/* We're easy...  */
 }
 
 #ifdef COFF_IMAGE_WITH_PE
@@ -2883,16 +2963,16 @@ 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
 
-static bfd_boolean
+static bool
 coff_compute_section_file_positions (bfd * abfd)
 {
   asection *current;
   file_ptr sofar = bfd_coff_filhsz (abfd);
-  bfd_boolean align_adjust;
+  bool align_adjust;
   unsigned int target_index;
 #ifdef ALIGN_SECTIONS_IN_FILE
   asection *previous = NULL;
@@ -2900,7 +2980,7 @@ coff_compute_section_file_positions (bfd
 #endif
 
 #ifdef COFF_IMAGE_WITH_PE
-  int page_size;
+  unsigned int page_size;
 
   if (coff_data (abfd)->link_info
       || (pe_data (abfd) && pe_data (abfd)->pe_opthdr.FileAlignment))
@@ -2911,22 +2991,12 @@ coff_compute_section_file_positions (bfd
 	 This repairs 'ld -r' for arm-wince-pe target.  */
       if (page_size == 0)
 	page_size = 1;
-
-      /* PR 17512: file: 0ac816d3.  */
-      if (page_size < 0)
-	{
-	  bfd_set_error (bfd_error_file_too_big);
-	  _bfd_error_handler
-	    /* xgettext:c-format */
-	    (_("%pB: page size is too large (0x%x)"), abfd, page_size);
-	  return FALSE;
-	}
     }
   else
     page_size = PE_DEF_FILE_ALIGNMENT;
 #else
 #ifdef COFF_PAGE_SIZE
-  int page_size = COFF_PAGE_SIZE;
+  unsigned int page_size = COFF_PAGE_SIZE;
 #endif
 #endif
 
@@ -2994,6 +3064,9 @@ coff_compute_section_file_positions (bfd
       sofar += bfd_coff_scnhsz (abfd);
 #endif
 
+  if (coff_data (abfd)->section_by_target_index)
+    htab_empty (coff_data (abfd)->section_by_target_index);
+
 #ifdef COFF_IMAGE_WITH_PE
   {
     /* PE requires the sections to be in memory order when listed in
@@ -3008,9 +3081,10 @@ coff_compute_section_file_positions (bfd
     bfd_size_type amt;
 
 #ifdef COFF_PAGE_SIZE
-    /* Clear D_PAGED if section alignment is smaller than
-       COFF_PAGE_SIZE.  */
-   if (pe_data (abfd)->pe_opthdr.SectionAlignment < COFF_PAGE_SIZE)
+    /* Clear D_PAGED if section / file alignment aren't suitable for
+       paging at COFF_PAGE_SIZE granularity.  */
+   if (pe_data (abfd)->pe_opthdr.SectionAlignment < COFF_PAGE_SIZE
+       || page_size < COFF_PAGE_SIZE)
      abfd->flags &= ~D_PAGED;
 #endif
 
@@ -3022,7 +3096,7 @@ coff_compute_section_file_positions (bfd
     amt = sizeof (struct asection *) * (count + 1);
     section_list = (asection **) bfd_malloc (amt);
     if (section_list == NULL)
-      return FALSE;
+      return false;
 
     i = 0;
     for (current = abfd->sections; current != NULL; current = current->next)
@@ -3079,10 +3153,10 @@ coff_compute_section_file_positions (bfd
       _bfd_error_handler
 	/* xgettext:c-format */
 	(_("%pB: too many sections (%d)"), abfd, target_index);
-      return FALSE;
+      return false;
     }
 
-  align_adjust = FALSE;
+  align_adjust = false;
   for (current = abfd->sections;
        current != NULL;
        current = current->next)
@@ -3092,19 +3166,19 @@ 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)
-	    return FALSE;
+	    return false;
 	}
       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)
-	    return FALSE;
+	    return false;
 	}
       if (pei_section_data (abfd, current)->virt_size == 0)
 	pei_section_data (abfd, current)->virt_size = current->size;
@@ -3131,7 +3205,11 @@ coff_compute_section_file_positions (bfd
 	     padding the previous section up if necessary.  */
 	  old_sofar = sofar;
 
-	  sofar = BFD_ALIGN (sofar, 1 << current->alignment_power);
+#ifdef COFF_IMAGE_WITH_PE
+	  sofar = BFD_ALIGN (sofar, page_size);
+#else
+	  sofar = BFD_ALIGN (sofar, (bfd_vma) 1 << current->alignment_power);
+#endif
 
 #ifdef RS6000COFF_C
 	  /* Make sure the file offset and the vma of .text/.data are at the
@@ -3150,10 +3228,16 @@ coff_compute_section_file_positions (bfd
 
 	     0 .text	     000054cc  10000128	 10000128  00000128  2**5
 			     CONTENTS, ALLOC, LOAD, CODE
+
+	     Don't perform the above tweak if the previous one is .tdata,
+	     as it will increase the memory allocated for every threads
+	     created and not just improve performances with gdb.
 	  */
 
-	  if (!strcmp (current->name, _TEXT)
-	      || !strcmp (current->name, _DATA))
+	  if ((current->flags & SEC_LOAD) != 0
+	      && (!strcmp (current->name, _TEXT)
+		  || !strcmp (current->name, _DATA))
+	      && (previous == NULL || strcmp(previous->name, _TDATA)))
 	    {
 	      bfd_vma align = 4096;
 	      bfd_vma sofar_off = sofar % align;
@@ -3165,7 +3249,8 @@ coff_compute_section_file_positions (bfd
 		sofar += align + vma_off - sofar_off;
 	    }
 #endif
-	  if (previous != NULL)
+	  if (previous != NULL
+	      && (previous->flags & SEC_LOAD) != 0)
 	    previous->size += sofar - old_sofar;
 	}
 
@@ -3195,14 +3280,18 @@ coff_compute_section_file_positions (bfd
 
 	  old_size = current->size;
 	  current->size = BFD_ALIGN (current->size,
-				     1 << current->alignment_power);
+				     (bfd_vma) 1 << current->alignment_power);
 	  align_adjust = current->size != old_size;
 	  sofar += current->size - old_size;
 	}
       else
 	{
 	  old_sofar = sofar;
-	  sofar = BFD_ALIGN (sofar, 1 << current->alignment_power);
+#ifdef COFF_IMAGE_WITH_PE
+	  sofar = BFD_ALIGN (sofar, page_size);
+#else
+	  sofar = BFD_ALIGN (sofar, (bfd_vma) 1 << current->alignment_power);
+#endif
 	  align_adjust = sofar != old_sofar;
 	  current->size += sofar - old_sofar;
 	}
@@ -3213,7 +3302,7 @@ coff_compute_section_file_positions (bfd
 	 size, in case the caller only writes out data to the
 	 unaligned size.  */
       if (pei_section_data (abfd, current)->virt_size < current->size)
-	align_adjust = TRUE;
+	align_adjust = true;
 #endif
 
 #ifdef _LIB
@@ -3240,37 +3329,35 @@ coff_compute_section_file_positions (bfd
 
       b = 0;
       if (bfd_seek (abfd, sofar - 1, SEEK_SET) != 0
-	  || bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1)
-	return FALSE;
+	  || bfd_write (&b, 1, abfd) != 1)
+	return false;
     }
 
   /* Make sure the relocations are aligned.  We don't need to make
      sure that this byte exists, because it will only matter if there
      really are relocs.  */
-  sofar = BFD_ALIGN (sofar, 1 << COFF_DEFAULT_SECTION_ALIGNMENT_POWER);
+  sofar = BFD_ALIGN (sofar,
+		     (bfd_vma) 1 << COFF_DEFAULT_SECTION_ALIGNMENT_POWER);
 
   obj_relocbase (abfd) = sofar;
-  abfd->output_has_begun = TRUE;
+  abfd->output_has_begun = true;
 
-  return TRUE;
+  return true;
 }
 
 #ifdef COFF_IMAGE_WITH_PE
 
-static unsigned int pelength;
-static unsigned int peheader;
-
-static bfd_boolean
-coff_read_word (bfd *abfd, unsigned int *value)
+static bool
+coff_read_word (bfd *abfd, unsigned int *value, unsigned int *pelength)
 {
   unsigned char b[2];
   int status;
 
-  status = bfd_bread (b, (bfd_size_type) 2, abfd);
+  status = bfd_read (b, 2, abfd);
   if (status < 1)
     {
       *value = 0;
-      return FALSE;
+      return false;
     }
 
   if (status == 1)
@@ -3278,81 +3365,136 @@ coff_read_word (bfd *abfd, unsigned int
   else
     *value = (unsigned int) (b[0] + (b[1] << 8));
 
-  pelength += (unsigned int) status;
+  *pelength += status;
+
+  return true;
+}
+
+/* Read a two byte number from buffer B returning the result in VALUE.
+   No more than BUF_SIZE bytes will be read.
+   Returns true upobn success, false otherwise.
+   If successful, increases the value stored in PELENGTH by the number
+   of bytes read.  */
+
+static bool
+coff_read_word_from_buffer (unsigned char *  b,
+			    int              buf_size,
+                            unsigned int *   value,
+			    unsigned int *   pelength)
+{
+  if (buf_size < 1)
+    {
+      *value = 0;
+      return false;
+    }
+
+  if (buf_size == 1)
+    {
+      *value = (unsigned int)b[0];
+      *pelength += 1;
+    }
+  else
+    {
+      *value = (unsigned int)(b[0] + (b[1] << 8));
+      *pelength += 2;
+    }
 
-  return TRUE;
+  return true;
 }
 
+#define COFF_CHECKSUM_BUFFER_SIZE 0x800000
+
 static unsigned int
-coff_compute_checksum (bfd *abfd)
+coff_compute_checksum (bfd *abfd, unsigned int *pelength)
 {
-  bfd_boolean more_data;
   file_ptr filepos;
   unsigned int value;
   unsigned int total;
+  unsigned char *buf;
+  int buf_size;
 
   total = 0;
-  pelength = 0;
+  *pelength = 0;
   filepos = (file_ptr) 0;
+  buf = (unsigned char *) bfd_malloc (COFF_CHECKSUM_BUFFER_SIZE);
+  if (buf == NULL)
+    return 0;
+  buf_size = 0;
 
   do
     {
+      unsigned char *cur_buf;
+      int cur_buf_size;
+
       if (bfd_seek (abfd, filepos, SEEK_SET) != 0)
 	return 0;
 
-      more_data = coff_read_word (abfd, &value);
-      total += value;
-      total = 0xffff & (total + (total >> 0x10));
-      filepos += 2;
+      buf_size = bfd_read (buf, COFF_CHECKSUM_BUFFER_SIZE, abfd);
+      cur_buf_size = buf_size;
+      cur_buf = buf;
+
+      while (cur_buf_size > 0)
+        {
+          coff_read_word_from_buffer (cur_buf, cur_buf_size, &value, pelength);
+          cur_buf += 2;
+          cur_buf_size -= 2;
+          total += value;
+          total = 0xffff & (total + (total >> 0x10));
+        }
+
+      filepos += buf_size;
     }
-  while (more_data);
+  while (buf_size > 0);
+
+  free (buf);
 
   return (0xffff & (total + (total >> 0x10)));
 }
 
-static bfd_boolean
+static bool
 coff_apply_checksum (bfd *abfd)
 {
   unsigned int computed;
   unsigned int checksum = 0;
+  unsigned int peheader;
+  unsigned int pelength;
 
   if (bfd_seek (abfd, 0x3c, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
-  if (!coff_read_word (abfd, &peheader))
-    return FALSE;
+  if (!coff_read_word (abfd, &peheader, &pelength))
+    return false;
 
   if (bfd_seek (abfd, peheader + 0x58, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   checksum = 0;
-  bfd_bwrite (&checksum, (bfd_size_type) 4, abfd);
+  if (bfd_write (&checksum, 4, abfd) != 4)
+    return false;
 
   if (bfd_seek (abfd, peheader, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
-  computed = coff_compute_checksum (abfd);
+  computed = coff_compute_checksum (abfd, &pelength);
 
   checksum = computed + pelength;
 
   if (bfd_seek (abfd, peheader + 0x58, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
-  bfd_bwrite (&checksum, (bfd_size_type) 4, abfd);
-
-  return TRUE;
+  return bfd_write (&checksum, 4, abfd) == 4;
 }
 
 #endif /* COFF_IMAGE_WITH_PE */
 
-static bfd_boolean
+static bool
 coff_write_object_contents (bfd * abfd)
 {
   asection *current;
-  bfd_boolean hasrelocs = FALSE;
-  bfd_boolean haslinno = FALSE;
+  bool hasrelocs = false;
+  bool haslinno = false;
 #ifdef COFF_IMAGE_WITH_PE
-  bfd_boolean hasdebug = FALSE;
+  bool hasdebug = false;
 #endif
   file_ptr scn_base;
   file_ptr reloc_base;
@@ -3360,10 +3502,14 @@ coff_write_object_contents (bfd * abfd)
   file_ptr sym_base;
   unsigned long reloc_size = 0, reloc_count = 0;
   unsigned long lnno_size = 0;
-  bfd_boolean long_section_names;
+  bool long_section_names;
   asection *text_sec = NULL;
   asection *data_sec = NULL;
   asection *bss_sec = NULL;
+#ifdef RS6000COFF_C
+  asection *tdata_sec = NULL;
+  asection *tbss_sec = NULL;
+#endif
   struct internal_filehdr internal_f;
   struct internal_aouthdr internal_a;
 #ifdef COFF_LONG_SECTION_NAMES
@@ -3379,7 +3525,7 @@ coff_write_object_contents (bfd * abfd)
   if (! abfd->output_has_begun)
     {
       if (! coff_compute_section_file_positions (abfd))
-	return FALSE;
+	return false;
     }
 
   reloc_base = obj_relocbase (abfd);
@@ -3389,9 +3535,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 +3565,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
 	}
@@ -3448,21 +3594,21 @@ coff_write_object_contents (bfd * abfd)
     }
 
   if (bfd_seek (abfd, scn_base, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
-  long_section_names = FALSE;
+  long_section_names = false;
   for (current = abfd->sections;
        current != NULL;
        current = current->next)
     {
       struct internal_scnhdr section;
 #ifdef COFF_IMAGE_WITH_PE
-      bfd_boolean is_reloc_section = FALSE;
+      bool is_reloc_section = false;
 
       if (strcmp (current->name, DOT_RELOC) == 0)
 	{
-	  is_reloc_section = TRUE;
-	  hasrelocs = TRUE;
+	  is_reloc_section = true;
+	  hasrelocs = true;
 	  pe_data (abfd)->has_reloc_section = 1;
 	}
 #endif
@@ -3481,35 +3627,66 @@ coff_write_object_contents (bfd * abfd)
 	  len = strlen (current->name);
 	  if (len > SCNNMLEN)
 	    {
-	      /* The s_name field is defined to be NUL-padded but need not be
-		 NUL-terminated.  We use a temporary buffer so that we can still
-		 sprintf all eight chars without splatting a terminating NUL
-		 over the first byte of the following member (s_paddr).  */
-	      /* PR 21096: The +20 is to stop a bogus warning from gcc7 about
-		 a possible buffer overflow.  */
-	      char s_name_buf[SCNNMLEN + 1 + 20];
 
 	      /* An inherent limitation of the /nnnnnnn notation used to indicate
 		 the offset of the long name in the string table is that we
 		 cannot address entries beyone the ten million byte boundary.  */
-	      if (string_size >= 10000000)
+	      if (string_size < 10000000)
+		{
+		  /* The s_name field is defined to be NUL-padded but need not
+		     be NUL-terminated.  We use a temporary buffer so that we
+		     can still sprintf all eight chars without splatting a
+		     terminating NUL over the first byte of the following
+		     member (s_paddr).  */
+		  /* PR 21096: The +20 is to stop a bogus warning from gcc7
+		     about a possible buffer overflow.  */
+		  char s_name_buf[SCNNMLEN + 1 + 20];
+
+		  /* We do not need to use snprintf here as we have already
+		     verified that string_size is not too big, plus we have
+		     an overlarge buffer, just in case.  */
+		  sprintf (s_name_buf, "/%lu", (unsigned long) string_size);
+		  /* Then strncpy takes care of any padding for us.  */
+		  strncpy (section.s_name, s_name_buf, SCNNMLEN);
+		}
+	      else
+#ifdef COFF_WITH_PE
+		{
+		  /* PE use a base 64 encoding for long section names whose
+		     index is very large.  But contrary to RFC 4648, there is
+		     no padding: 6 characters must be generated.  */
+		  static const char base64[] =
+		    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+		    "abcdefghijklmnopqrstuvwxyz"
+		    "0123456789+/";
+		  unsigned long off = string_size;
+		  unsigned i;
+
+		  section.s_name[0] = '/';
+		  section.s_name[1] = '/';
+		  for (i = SCNNMLEN - 1; i >= 2; i--)
+		    {
+		      section.s_name[i] = base64[off & 0x3f];
+		      off >>= 6;
+		    }
+		}
+#endif
+	      if (string_size > 0xffffffffUL - (len + 1)
+#ifndef COFF_WITH_PE
+		  || string_size >= 10000000
+#endif
+		  )
 		{
 		  bfd_set_error (bfd_error_file_too_big);
 		  _bfd_error_handler
 		    /* xgettext:c-format */
 		    (_("%pB: section %pA: string table overflow at offset %ld"),
 		    abfd, current, (unsigned long) string_size);
-		  return FALSE;
+		  return false;
 		}
 
-	      /* We do not need to use snprintf here as we have already verfied
-		 that string_size is not too big, plus we have an overlarge
-		 buffer, just in case.  */
-	      sprintf (s_name_buf, "/%lu", (unsigned long) string_size);
-	      /* Then strncpy takes care of any padding for us.  */
-	      strncpy (section.s_name, s_name_buf, SCNNMLEN);
 	      string_size += len + 1;
-	      long_section_names = TRUE;
+	      long_section_names = true;
 	    }
 	}
 #endif
@@ -3557,14 +3734,14 @@ coff_write_object_contents (bfd * abfd)
 #ifndef COFF_IMAGE_WITH_PE
       /* In PEI, relocs come in the .reloc section.  */
       if (current->reloc_count != 0)
-	hasrelocs = TRUE;
+	hasrelocs = true;
 #endif
       if (current->lineno_count != 0)
-	haslinno = TRUE;
+	haslinno = true;
 #ifdef COFF_IMAGE_WITH_PE
       if ((current->flags & SEC_DEBUGGING) != 0
 	  && ! is_reloc_section)
-	hasdebug = TRUE;
+	hasdebug = true;
 #endif
 
 #ifdef RS6000COFF_C
@@ -3586,24 +3763,31 @@ coff_write_object_contents (bfd * abfd)
 	data_sec = current;
       else if (!strcmp (current->name, _BSS))
 	bss_sec = current;
+#ifdef RS6000COFF_C
+      else if (!strcmp (current->name, _TDATA))
+	tdata_sec = current;
+      else if (!strcmp (current->name, _TBSS))
+	tbss_sec = current;
+#endif
+
 
 #ifdef COFF_ENCODE_ALIGNMENT
-      COFF_ENCODE_ALIGNMENT(section, current->alignment_power);
-      if ((unsigned int)COFF_DECODE_ALIGNMENT(section.s_flags)
-	  != current->alignment_power)
+      if (COFF_ENCODE_ALIGNMENT (abfd, section, current->alignment_power)
+	  && (COFF_DECODE_ALIGNMENT (section.s_flags)
+	      != current->alignment_power))
 	{
-	  bfd_boolean warn = coff_data (abfd)->link_info
-	    && !bfd_link_relocatable (coff_data (abfd)->link_info);
+	  bool warn = (coff_data (abfd)->link_info
+		       && !bfd_link_relocatable (coff_data (abfd)->link_info));
 
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB:%s section %s: alignment 2**%u not representable"),
-	    abfd, warn ? " warning:" : "", current->name,
-	    current->alignment_power);
+	     abfd, warn ? " warning:" : "", current->name,
+	     current->alignment_power);
 	  if (!warn)
 	    {
 	      bfd_set_error (bfd_error_nonrepresentable_section);
-	      return FALSE;
+	      return false;
 	    }
 	}
 #endif
@@ -3622,9 +3806,9 @@ 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
-	      || bfd_bwrite (& buff, amt, abfd) != amt)
-	    return FALSE;
+	  if (bfd_coff_swap_scnhdr_out (abfd, &section, &buff) == 0
+	      || bfd_write (& buff, amt, abfd) != amt)
+	    return false;
 	}
 
 #ifdef COFF_WITH_PE
@@ -3748,14 +3932,42 @@ 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
-	      || bfd_bwrite (& buff, amt, abfd) != amt)
-	    return FALSE;
+	  if (bfd_coff_swap_scnhdr_out (abfd, &scnhdr, &buff) == 0
+	      || bfd_write (& buff, amt, abfd) != amt)
+	    return false;
 	}
     }
 #endif
 #endif
 
+#if defined (COFF_GO32_EXE) || defined (COFF_GO32)
+  /* Pad section headers.  */
+  if ((abfd->flags & EXEC_P) != 0)
+    {
+      asection *s = abfd->sections;
+      while (s != NULL && s->filepos == 0)
+	s = s->next;
+      if (s != NULL)
+	{
+	  file_ptr cur_ptr
+	    = scn_base + abfd->section_count * bfd_coff_scnhsz (abfd);
+	  file_ptr fill_size = s->filepos - cur_ptr;
+	  if (fill_size > 0)
+	    {
+	      bfd_byte *b = bfd_zmalloc (fill_size);
+	      if (!b)
+		return false;
+	      if (bfd_write (b, fill_size, abfd) != (ufile_ptr) fill_size)
+		{
+		  free (b);
+		  return false;
+		}
+	      free (b);
+	    }
+	}
+    }
+#endif
+
   /* OK, now set up the filehdr...  */
 
   /* Don't include the internal abs section in the section count */
@@ -3795,7 +4007,7 @@ coff_write_object_contents (bfd * abfd)
     internal_f.f_flags |= IMAGE_FILE_LARGE_ADDRESS_AWARE;
 #endif
 
-#ifndef COFF_WITH_pex64
+#if !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
 #ifdef COFF_WITH_PE
   internal_f.f_flags |= IMAGE_FILE_32BIT_MACHINE;
 #else
@@ -3811,9 +4023,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,19 +4050,25 @@ 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)
+#if defined(AARCH64)
 #define __A_MAGIC_SET__
-    internal_a.magic = IMAGE_NT_OPTIONAL_HDR_MAGIC;
+    internal_a.magic = ZMAGIC;
+#endif
+
+#if defined(LOONGARCH64)
+#define __A_MAGIC_SET__
+    internal_a.magic = ZMAGIC;
+#endif
+
+#if defined(RISCV64)
+#define __A_MAGIC_SET__
+    internal_a.magic = ZMAGIC;
 #endif
 
 #if defined MCORE_PE
@@ -3908,8 +4123,13 @@ coff_write_object_contents (bfd * abfd)
 #endif
   }
 
+#ifdef RS6000COFF_C
+  /* XCOFF 32bit needs this to have new behaviour for n_type field.  */
+  internal_a.vstamp = 2;
+#else
   /* FIXME: Does anybody ever set this to another value?  */
   internal_a.vstamp = 0;
+#endif
 
   /* Now should write relocs, strings, syms.  */
   obj_sym_filepos (abfd) = sym_base;
@@ -3919,14 +4139,14 @@ coff_write_object_contents (bfd * abfd)
       int firstundef;
 
       if (!coff_renumber_symbols (abfd, &firstundef))
-	return FALSE;
+	return false;
       coff_mangle_symbols (abfd);
       if (! coff_write_symbols (abfd))
-	return FALSE;
+	return false;
       if (! coff_write_linenumbers (abfd))
-	return FALSE;
+	return false;
       if (! coff_write_relocs (abfd, firstundef))
-	return FALSE;
+	return false;
     }
 #ifdef COFF_LONG_SECTION_NAMES
   else if (long_section_names && ! obj_coff_strings_written (abfd))
@@ -3934,27 +4154,9 @@ coff_write_object_contents (bfd * abfd)
       /* If we have long section names we have to write out the string
 	 table even if there are no symbols.  */
       if (! coff_write_symbols (abfd))
-	return FALSE;
+	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.  */
@@ -4002,7 +4204,7 @@ coff_write_object_contents (bfd * abfd)
       bfd_vma toc;
       asection *loader_sec;
 
-      internal_a.vstamp = 1;
+      internal_a.vstamp = 2;
 
       internal_a.o_snentry = xcoff_data (abfd)->snentry;
       if (internal_a.o_snentry == 0)
@@ -4038,6 +4240,29 @@ coff_write_object_contents (bfd * abfd)
       else
 	internal_a.o_snbss = 0;
 
+      if (tdata_sec != NULL)
+	{
+	  internal_a.o_sntdata = tdata_sec->target_index;
+	  /* TODO: o_flags should be set to RS6K_AOUTHDR_TLS_LE
+	     if there is at least one R_TLS_LE relocations.  */
+	  internal_a.o_flags = 0;
+#ifdef XCOFF64
+	  internal_a.o_x64flags = 0;
+#endif
+	}
+      else
+	{
+	  internal_a.o_sntdata = 0;
+	  internal_a.o_flags = 0;
+#ifdef XCOFF64
+	  internal_a.o_x64flags = 0;
+#endif
+	}
+      if (tbss_sec != NULL)
+	  internal_a.o_sntbss = tbss_sec->target_index;
+      else
+	  internal_a.o_sntbss = 0;
+
       toc = xcoff_data (abfd)->toc;
       internal_a.o_toc = toc;
       internal_a.o_sntoc = xcoff_data (abfd)->sntoc;
@@ -4055,6 +4280,8 @@ coff_write_object_contents (bfd * abfd)
 	    case bfd_arch_powerpc:
 	      if (bfd_get_mach (abfd) == bfd_mach_ppc)
 		internal_a.o_cputype = 3;
+	      else if (bfd_get_mach (abfd) == bfd_mach_ppc_620)
+		internal_a.o_cputype = 2;
 	      else
 		internal_a.o_cputype = 1;
 	      break;
@@ -4079,8 +4306,8 @@ coff_write_object_contents (bfd * abfd)
 #endif
 
   /* Now write header.  */
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    return false;
 
   {
     char * buff;
@@ -4088,15 +4315,15 @@ coff_write_object_contents (bfd * abfd)
 
     buff = (char *) bfd_malloc (amount);
     if (buff == NULL)
-      return FALSE;
+      return false;
 
     bfd_coff_swap_filehdr_out (abfd, & internal_f, buff);
-    amount = bfd_bwrite (buff, amount, abfd);
+    amount = bfd_write (buff, amount, abfd);
 
     free (buff);
 
     if (amount != bfd_coff_filhsz (abfd))
-      return FALSE;
+      return false;
   }
 
   if (abfd->flags & EXEC_P)
@@ -4108,42 +4335,44 @@ coff_write_object_contents (bfd * abfd)
 
       buff = (char *) bfd_malloc (amount);
       if (buff == NULL)
-	return FALSE;
+	return false;
 
       coff_swap_aouthdr_out (abfd, & internal_a, buff);
-      amount = bfd_bwrite (buff, amount, abfd);
+      amount = bfd_write (buff, amount, abfd);
 
       free (buff);
 
       if (amount != bfd_coff_aoutsz (abfd))
-	return FALSE;
+	return false;
 
 #ifdef COFF_IMAGE_WITH_PE
       if (! coff_apply_checksum (abfd))
-	return FALSE;
+	return false;
 #endif
     }
 #ifdef RS6000COFF_C
+#ifndef XCOFF64
   else
     {
       AOUTHDR buff;
       size_t size;
 
-      /* XCOFF seems to always write at least a small a.out header.  */
+      /* XCOFF32 seems to always write at least a small a.out header.  */
       coff_swap_aouthdr_out (abfd, & internal_a, & buff);
       if (xcoff_data (abfd)->full_aouthdr)
 	size = bfd_coff_aoutsz (abfd);
       else
 	size = SMALL_AOUTSZ;
-      if (bfd_bwrite (& buff, (bfd_size_type) size, abfd) != size)
-	return FALSE;
+      if (bfd_write (&buff, size, abfd) != size)
+	return false;
     }
 #endif
+#endif
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 coff_set_section_contents (bfd * abfd,
 			   sec_ptr section,
 			   const void * location,
@@ -4153,7 +4382,7 @@ coff_set_section_contents (bfd * abfd,
   if (! abfd->output_has_begun)	/* Set by bfd.c handler.  */
     {
       if (! coff_compute_section_file_positions (abfd))
-	return FALSE;
+	return false;
     }
 
 #if defined(_LIB) && !defined(TARG_AUX)
@@ -4183,10 +4412,13 @@ coff_set_section_contents (bfd * abfd,
 
 	rec = (bfd_byte *) location;
 	recend = rec + count;
-	while (rec < recend)
+	while (recend - rec >= 4)
 	  {
+	    size_t len = bfd_get_32 (abfd, rec);
+	    if (len == 0 || len > (size_t) (recend - rec) / 4)
+	      break;
+	    rec += len * 4;
 	    ++section->lma;
-	    rec += bfd_get_32 (abfd, rec) * 4;
 	  }
 
 	BFD_ASSERT (rec == recend);
@@ -4196,30 +4428,31 @@ coff_set_section_contents (bfd * abfd,
   /* Don't write out bss sections - one way to do this is to
        see if the filepos has not been set.  */
   if (section->filepos == 0)
-    return TRUE;
+    return true;
 
   if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   if (count == 0)
-    return TRUE;
+    return true;
 
-  return bfd_bwrite (location, count, abfd) == count;
+  return bfd_write (location, count, abfd) == count;
 }
 
 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_malloc_and_read (abfd, amt, amt);
 }
 
 /*
@@ -4263,7 +4496,7 @@ coff_sort_func_alent (const void * arg1,
   return 0;
 }
 
-static bfd_boolean
+static bool
 coff_slurp_line_table (bfd *abfd, asection *asect)
 {
   LINENO *native_lineno;
@@ -4271,31 +4504,18 @@ coff_slurp_line_table (bfd *abfd, asecti
   unsigned int counter;
   alent *cache_ptr;
   bfd_vma prev_offset = 0;
-  bfd_boolean ordered = TRUE;
+  bool ordered = true;
   unsigned int nbr_func;
   LINENO *src;
-  bfd_boolean have_func;
-  bfd_boolean ret = TRUE;
+  bool have_func;
+  bool ret = true;
+  size_t amt;
 
   if (asect->lineno_count == 0)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (asect->lineno == NULL);
 
-  if (asect->lineno_count > asect->size)
-    {
-      _bfd_error_handler
-	(_("%pB: warning: line number count (%#lx) exceeds section size (%#lx)"),
-	 abfd, (unsigned long) asect->lineno_count, (unsigned long) asect->size);
-      return FALSE;
-    }
-
-  lineno_cache = (alent *) bfd_alloc2 (abfd,
-				       (bfd_size_type) asect->lineno_count + 1,
-				       sizeof (alent));
-  if (lineno_cache == NULL)
-    return FALSE;
-
   native_lineno = (LINENO *) buy_and_read (abfd, asect->line_filepos,
 					   asect->lineno_count,
 					   bfd_coff_linesz (abfd));
@@ -4303,15 +4523,27 @@ coff_slurp_line_table (bfd *abfd, asecti
     {
       _bfd_error_handler
 	(_("%pB: warning: line number table read failed"), abfd);
-      bfd_release (abfd, lineno_cache);
-      return FALSE;
+      return false;
+    }
+
+  if (_bfd_mul_overflow (asect->lineno_count + 1, sizeof (alent), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      free (native_lineno);
+      return false;
+    }
+  lineno_cache = (alent *) bfd_alloc (abfd, amt);
+  if (lineno_cache == NULL)
+    {
+      free (native_lineno);
+      return false;
     }
 
   cache_ptr = lineno_cache;
   asect->lineno = lineno_cache;
   src = native_lineno;
   nbr_func = 0;
-  have_func = FALSE;
+  have_func = false;
 
   for (counter = 0; counter < asect->lineno_count; counter++, src++)
     {
@@ -4330,7 +4562,7 @@ coff_slurp_line_table (bfd *abfd, asecti
 	  unsigned long symndx;
 	  coff_symbol_type *sym;
 
-	  have_func = FALSE;
+	  have_func = false;
 	  symndx = dst.l_addr.l_symndx;
 	  if (symndx >= obj_raw_syment_count (abfd))
 	    {
@@ -4339,7 +4571,7 @@ coff_slurp_line_table (bfd *abfd, asecti
 		(_("%pB: warning: illegal symbol index 0x%lx in line number entry %d"),
 		 abfd, symndx, counter);
 	      cache_ptr->line_number = -1;
-	      ret = FALSE;
+	      ret = false;
 	      continue;
 	    }
 
@@ -4353,7 +4585,7 @@ coff_slurp_line_table (bfd *abfd, asecti
 		(_("%pB: warning: illegal symbol index 0x%lx in line number entry %d"),
 		 abfd, symndx, counter);
 	      cache_ptr->line_number = -1;
-	      ret = FALSE;
+	      ret = false;
 	      continue;
 	    }
 	  sym = (coff_symbol_type *) (ent->u.syment._n._n_n._n_zeroes);
@@ -4367,11 +4599,11 @@ coff_slurp_line_table (bfd *abfd, asecti
 		(_("%pB: warning: illegal symbol in line number entry %d"),
 		 abfd, counter);
 	      cache_ptr->line_number = -1;
-	      ret = FALSE;
+	      ret = false;
 	      continue;
 	    }
 
-	  have_func = TRUE;
+	  have_func = true;
 	  nbr_func++;
 	  cache_ptr->u.sym = (asymbol *) sym;
 	  if (sym->lineno != NULL)
@@ -4382,7 +4614,7 @@ coff_slurp_line_table (bfd *abfd, asecti
 
 	  sym->lineno = cache_ptr;
 	  if (sym->symbol.value < prev_offset)
-	    ordered = FALSE;
+	    ordered = false;
 	  prev_offset = sym->symbol.value;
 	}
       else if (!have_func)
@@ -4396,7 +4628,7 @@ coff_slurp_line_table (bfd *abfd, asecti
 
   asect->lineno_count = cache_ptr - lineno_cache;
   memset (cache_ptr, 0, sizeof (*cache_ptr));
-  bfd_release (abfd, native_lineno);
+  free (native_lineno);
 
   /* On some systems (eg AIX5.3) the lineno table may not be sorted.  */
   if (!ordered)
@@ -4406,8 +4638,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 +4658,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;
 
@@ -4448,11 +4687,11 @@ coff_slurp_line_table (bfd *abfd, asecti
 		      asect->lineno_count * sizeof (alent));
 	    }
 	  else
-	    ret = FALSE;
+	    ret = false;
 	  bfd_release (abfd, func_table);
 	}
       else
-	ret = FALSE;
+	ret = false;
     }
 
   return ret;
@@ -4462,34 +4701,43 @@ coff_slurp_line_table (bfd *abfd, asecti
    that if coff_relocate_section is defined, the linker will read
    symbols via coff_link_add_symbols, rather than via this routine.  */
 
-static bfd_boolean
+static bool
 coff_slurp_symbol_table (bfd * abfd)
 {
   combined_entry_type *native_symbols;
   coff_symbol_type *cached_area;
   unsigned int *table_ptr;
   unsigned int number_of_symbols = 0;
-  bfd_boolean ret = TRUE;
+  bool ret = true;
+  size_t amt;
 
   if (obj_symbols (abfd))
-    return TRUE;
+    return true;
 
   /* Read in the symbol table.  */
   if ((native_symbols = coff_get_normalized_symtab (abfd)) == NULL)
-    return FALSE;
+    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));
+    return false;
 
+  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;
+    return false;
   else
     {
       coff_symbol_type *dst = cached_area;
@@ -4505,13 +4753,13 @@ coff_slurp_symbol_table (bfd * abfd)
 	  BFD_ASSERT (src->is_sym);
 	  dst->symbol.name = (char *) (src->u.syment._n._n_n._n_offset);
 	  /* We use the native name field to point to the cached field.  */
-	  src->u.syment._n._n_n._n_zeroes = (bfd_hostptr_t) dst;
+	  src->u.syment._n._n_n._n_zeroes = (uintptr_t) dst;
 	  dst->symbol.section = coff_section_from_bfd_index (abfd,
 						     src->u.syment.n_scnum);
 	  dst->symbol.flags = 0;
 	  /* PR 17512: file: 079-7098-0.001:0.1.  */
 	  dst->symbol.value = 0;
-	  dst->done_lineno = FALSE;
+	  dst->done_lineno = false;
 
 	  switch (src->u.syment.n_sclass)
 	    {
@@ -4523,7 +4771,7 @@ coff_slurp_symbol_table (bfd * abfd)
 #endif
 #ifdef RS6000COFF_C
 	    case C_HIDEXT:
-#if ! defined _AIX52 && ! defined AIX_WEAK_SUPPORT
+#ifndef AIX_WEAK_SUPPORT
 	    case C_AIX_WEAKEXT:
 #endif
 #endif
@@ -4640,6 +4888,9 @@ coff_slurp_symbol_table (bfd * abfd)
 		dst->symbol.value = src->u.syment.n_value;
 	      break;
 
+	    case C_FILE:	/* File name.  */
+	      dst->symbol.flags = BSF_FILE;
+	      /* Fall through.  */
 	    case C_MOS:		/* Member of structure.  */
 	    case C_EOS:		/* End of structure.  */
 	    case C_REGPARM:	/* Register parameter.  */
@@ -4653,11 +4904,6 @@ coff_slurp_symbol_table (bfd * abfd)
 	    case C_MOE:		/* Member of enumeration.  */
 	    case C_MOU:		/* Member of union.  */
 	    case C_UNTAG:	/* Union tag.  */
-	      dst->symbol.flags = BSF_DEBUGGING;
-	      dst->symbol.value = (src->u.syment.n_value);
-	      break;
-
-	    case C_FILE:	/* File name.  */
 	    case C_STRTAG:	/* Structure tag.  */
 #ifdef RS6000COFF_C
 	    case C_GSYM:
@@ -4675,7 +4921,7 @@ coff_slurp_symbol_table (bfd * abfd)
 	    case C_FUN:
 	    case C_ESTAT:
 #endif
-	      dst->symbol.flags = BSF_DEBUGGING;
+	      dst->symbol.flags |= BSF_DEBUGGING;
 	      dst->symbol.value = (src->u.syment.n_value);
 	      break;
 
@@ -4712,13 +4958,18 @@ coff_slurp_symbol_table (bfd * abfd)
 	    case C_BSTAT:
 	      dst->symbol.flags = BSF_DEBUGGING;
 
-	      /* The value is actually a symbol index.  Save a pointer
-		 to the symbol instead of the index.  FIXME: This
-		 should use a union.  */
-	      src->u.syment.n_value =
-		(long) (intptr_t) (native_symbols + src->u.syment.n_value);
-	      dst->symbol.value = src->u.syment.n_value;
-	      src->fix_value = 1;
+	      if (src->u.syment.n_value >= obj_raw_syment_count (abfd))
+		dst->symbol.value = 0;
+	      else
+		{
+		  /* The value is actually a symbol index.  Save a pointer
+		     to the symbol instead of the index.  FIXME: This
+		     should use a union.  */
+		  src->u.syment.n_value
+		    = (uintptr_t) (native_symbols + src->u.syment.n_value);
+		  dst->symbol.value = src->u.syment.n_value;
+		  src->fix_value = 1;
+		}
 	      break;
 #endif
 
@@ -4775,7 +5026,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.  */
@@ -4785,7 +5036,7 @@ coff_slurp_symbol_table (bfd * abfd)
 		(_("%pB: unrecognized storage class %d for %s symbol `%s'"),
 		 abfd, src->u.syment.n_sclass,
 		 dst->symbol.section->name, dst->symbol.name);
-	      ret = FALSE;
+	      ret = false;
 	      /* Fall through.  */
 	    case C_HIDDEN:	/* Ext symbol in dmert public lib.  */
 	      /* PR 20722: These symbols can also be generated by
@@ -4818,7 +5069,7 @@ coff_slurp_symbol_table (bfd * abfd)
     while (p)
       {
 	if (! coff_slurp_line_table (abfd, p))
-	  return FALSE;
+	  return false;
 	p = p->next;
       }
   }
@@ -4844,6 +5095,12 @@ coff_classify_symbol (bfd *abfd,
     case C_THUMBEXT:
     case C_THUMBEXTFUNC:
 #endif
+#ifdef RS6000COFF_C
+    case C_HIDEXT:
+#ifndef AIX_WEAK_SUPPORT
+    case C_AIX_WEAKEXT:
+#endif
+#endif
 #ifdef C_SYSTEM
     case C_SYSTEM:
 #endif
@@ -4857,6 +5114,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:
@@ -4878,11 +5139,11 @@ coff_classify_symbol (bfd *abfd,
 	 breaks gas generated objects.  */
       if (syment->n_value == 0)
 	{
-	  asection *sec;
-	  char * name;
+	  const asection *sec;
+	  const char *name;
 	  char buf[SYMNMLEN + 1];
 
-	  name = _bfd_coff_internal_syment_name (abfd, syment, buf)
+	  name = _bfd_coff_internal_syment_name (abfd, syment, buf);
 	  sec = coff_section_from_bfd_index (abfd, syment->n_scnum);
 	  if (sec != NULL && name != NULL
 	      && (strcmp (bfd_section_name (sec), name) == 0))
@@ -4943,8 +5204,22 @@ SUBSUBSECTION
 	structure, in a back end specific way. For instance, the 386
 	uses the @code{r_type} to directly produce an index
 	into a howto table vector.
+
+	o Note that @code{arelent.addend} for COFF is often not what
+	most people understand as a relocation addend, but rather an
+	adjustment to the relocation addend stored in section contents
+	of relocatable object files.  The value found in section
+	contents may also be confusing, depending on both symbol value
+	and addend somewhat similar to the field value for a
+	final-linked object.  See @code{CALC_ADDEND}.
 */
 
+#ifdef COFF_WITH_PE
+#define COFF_PE_ADDEND_BIAS(ptr) 0 /* Symbol value not stored in raw data.  */
+#else
+#define COFF_PE_ADDEND_BIAS(ptr) ((ptr)->value)
+#endif
+
 #ifndef CALC_ADDEND
 #define CALC_ADDEND(abfd, ptr, reloc, cache_ptr)		\
   {								\
@@ -4961,51 +5236,62 @@ SUBSUBSECTION
       cache_ptr->addend = 0;					\
     else if (ptr && bfd_asymbol_bfd (ptr) == abfd		\
 	     && ptr->section != NULL)				\
-      cache_ptr->addend = - (ptr->section->vma + ptr->value);	\
+      cache_ptr->addend = - (ptr->section->vma			\
+			     + COFF_PE_ADDEND_BIAS (ptr));	\
     else							\
       cache_ptr->addend = 0;					\
   }
 #endif
 
-static bfd_boolean
+static bool
 coff_slurp_reloc_table (bfd * abfd, sec_ptr asect, asymbol ** symbols)
 {
-  RELOC *native_relocs;
+  bfd_byte *native_relocs;
   arelent *reloc_cache;
   arelent *cache_ptr;
   unsigned int idx;
+  size_t amt;
 
   if (asect->relocation)
-    return TRUE;
+    return true;
   if (asect->reloc_count == 0)
-    return TRUE;
+    return true;
   if (asect->flags & SEC_CONSTRUCTOR)
-    return TRUE;
+    return true;
   if (!coff_slurp_symbol_table (abfd))
-    return FALSE;
+    return false;
 
-  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));
+  native_relocs = (bfd_byte *) buy_and_read (abfd, asect->rel_filepos,
+					     asect->reloc_count,
+					     bfd_coff_relsz (abfd));
+  if (native_relocs == NULL)
+    return false;
 
-  if (reloc_cache == NULL || native_relocs == NULL)
-    return FALSE;
+  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)
+    {
+      free (native_relocs);
+      return false;
+    }
 
   for (idx = 0; idx < asect->reloc_count; idx++)
     {
       struct internal_reloc dst;
-      struct external_reloc *src;
+      void *src;
 #ifndef RELOC_PROCESSING
       asymbol *ptr;
 #endif
 
       cache_ptr = reloc_cache + idx;
-      src = native_relocs + idx;
+      src = native_relocs + idx * (size_t) bfd_coff_relsz (abfd);
 
       dst.r_offset = 0;
-      coff_swap_reloc_in (abfd, src, &dst);
+      bfd_coff_swap_reloc_in (abfd, src, &dst);
 
 #ifdef RELOC_PROCESSING
       RELOC_PROCESSING (cache_ptr, &dst, symbols, abfd, asect);
@@ -5020,7 +5306,7 @@ coff_slurp_reloc_table (bfd * abfd, sec_
 		/* xgettext:c-format */
 		(_("%pB: warning: illegal symbol index %ld in relocs"),
 		 abfd, dst.r_symndx);
-	      cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	      cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	      ptr = NULL;
 	    }
 	  else
@@ -5032,7 +5318,7 @@ coff_slurp_reloc_table (bfd * abfd, sec_
 	}
       else
 	{
-	  cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	  cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	  ptr = NULL;
 	}
 
@@ -5061,12 +5347,14 @@ coff_slurp_reloc_table (bfd * abfd, sec_
 	    (_("%pB: illegal relocation type %d at address %#" PRIx64),
 	     abfd, dst.r_type, (uint64_t) dst.r_vaddr);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  free (native_relocs);
+	  return false;
 	}
     }
 
+  free (native_relocs);
   asect->relocation = reloc_cache;
-  return TRUE;
+  return true;
 }
 
 #ifndef coff_rtype_to_howto
@@ -5162,18 +5450,16 @@ dummy_reloc16_estimate (bfd *abfd ATTRIB
 
 #define coff_reloc16_extra_cases dummy_reloc16_extra_cases
 
-/* This works even if abort is not declared in any header file.  */
-
-static void
+static bool
 dummy_reloc16_extra_cases (bfd *abfd ATTRIBUTE_UNUSED,
 			   struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
 			   struct bfd_link_order *link_order ATTRIBUTE_UNUSED,
 			   arelent *reloc ATTRIBUTE_UNUSED,
 			   bfd_byte *data ATTRIBUTE_UNUSED,
-			   unsigned int *src_ptr ATTRIBUTE_UNUSED,
-			   unsigned int *dst_ptr ATTRIBUTE_UNUSED)
+			   size_t *src_ptr ATTRIBUTE_UNUSED,
+			   size_t *dst_ptr ATTRIBUTE_UNUSED)
 {
-  abort ();
+  return false;
 }
 #endif
 
@@ -5220,13 +5506,9 @@ dummy_reloc16_extra_cases (bfd *abfd ATT
 #define coff_adjust_symndx NULL
 #endif
 
-#ifndef coff_link_add_one_symbol
-#define coff_link_add_one_symbol _bfd_generic_link_add_one_symbol
-#endif
-
 #ifndef coff_link_output_has_begun
 
-static bfd_boolean
+static bool
 coff_link_output_has_begun (bfd * abfd,
 			    struct coff_final_link_info * info ATTRIBUTE_UNUSED)
 {
@@ -5236,11 +5518,11 @@ coff_link_output_has_begun (bfd * abfd,
 
 #ifndef coff_final_link_postscript
 
-static bfd_boolean
+static bool
 coff_final_link_postscript (bfd * abfd ATTRIBUTE_UNUSED,
 			    struct coff_final_link_info * pfinfo ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 #endif
 
@@ -5287,7 +5569,9 @@ coff_final_link_postscript (bfd * abfd A
 #define coff_SWAP_scnhdr_in coff_swap_scnhdr_in
 #endif
 
-static bfd_coff_backend_data bfd_coff_std_swap_table ATTRIBUTE_UNUSED =
+#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
+
+static const bfd_coff_backend_data bfd_coff_std_swap_table ATTRIBUTE_UNUSED =
 {
   coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,
   coff_SWAP_aux_out, coff_SWAP_sym_out,
@@ -5296,16 +5580,16 @@ static bfd_coff_backend_data bfd_coff_st
   coff_SWAP_scnhdr_out,
   FILHSZ, AOUTSZ, SCNHSZ, SYMESZ, AUXESZ, RELSZ, LINESZ, FILNMLEN,
 #ifdef COFF_LONG_FILENAMES
-  TRUE,
+  true,
 #else
-  FALSE,
+  false,
 #endif
   COFF_DEFAULT_LONG_SECTION_NAMES,
   COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
 #ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
-  TRUE,
+  true,
 #else
-  FALSE,
+  false,
 #endif
 #ifdef COFF_DEBUG_STRING_WIDE_PREFIX
   4,
@@ -5320,7 +5604,7 @@ static bfd_coff_backend_data bfd_coff_st
   coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,
   coff_classify_symbol, coff_compute_section_file_positions,
   coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,
-  coff_adjust_symndx, coff_link_add_one_symbol,
+  coff_adjust_symndx,
   coff_link_output_has_begun, coff_final_link_postscript,
   bfd_pe_print_pdata
 };
@@ -5328,25 +5612,25 @@ static bfd_coff_backend_data bfd_coff_st
 #ifdef TICOFF
 /* COFF0 differs in file/section header size and relocation entry size.  */
 
-static bfd_coff_backend_data ticoff0_swap_table =
+static const bfd_coff_backend_data ticoff0_swap_table =
 {
   coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,
   coff_SWAP_aux_out, coff_SWAP_sym_out,
-  coff_SWAP_lineno_out, coff_SWAP_reloc_out,
+  coff_SWAP_lineno_out, coff_swap_reloc_v0_out,
   coff_SWAP_filehdr_out, coff_SWAP_aouthdr_out,
   coff_SWAP_scnhdr_out,
   FILHSZ_V0, AOUTSZ, SCNHSZ_V01, SYMESZ, AUXESZ, RELSZ_V0, LINESZ, FILNMLEN,
 #ifdef COFF_LONG_FILENAMES
-  TRUE,
+  true,
 #else
-  FALSE,
+  false,
 #endif
   COFF_DEFAULT_LONG_SECTION_NAMES,
   COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
 #ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
-  TRUE,
+  true,
 #else
-  FALSE,
+  false,
 #endif
 #ifdef COFF_DEBUG_STRING_WIDE_PREFIX
   4,
@@ -5355,13 +5639,13 @@ static bfd_coff_backend_data ticoff0_swa
 #endif
   32768,
   coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,
-  coff_SWAP_reloc_in, ticoff0_bad_format_hook, coff_set_arch_mach_hook,
+  coff_swap_reloc_v0_in, ticoff0_bad_format_hook, coff_set_arch_mach_hook,
   coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,
   coff_slurp_symbol_table, symname_in_debug_hook, coff_pointerize_aux_hook,
   coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,
   coff_classify_symbol, coff_compute_section_file_positions,
   coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,
-  coff_adjust_symndx, coff_link_add_one_symbol,
+  coff_adjust_symndx,
   coff_link_output_has_begun, coff_final_link_postscript,
   bfd_pe_print_pdata
 };
@@ -5370,7 +5654,7 @@ static bfd_coff_backend_data ticoff0_swa
 #ifdef TICOFF
 /* COFF1 differs in section header size.  */
 
-static bfd_coff_backend_data ticoff1_swap_table =
+static const bfd_coff_backend_data ticoff1_swap_table =
 {
   coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,
   coff_SWAP_aux_out, coff_SWAP_sym_out,
@@ -5379,16 +5663,16 @@ static bfd_coff_backend_data ticoff1_swa
   coff_SWAP_scnhdr_out,
   FILHSZ, AOUTSZ, SCNHSZ_V01, SYMESZ, AUXESZ, RELSZ, LINESZ, FILNMLEN,
 #ifdef COFF_LONG_FILENAMES
-  TRUE,
+  true,
 #else
-  FALSE,
+  false,
 #endif
   COFF_DEFAULT_LONG_SECTION_NAMES,
   COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
 #ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
-  TRUE,
+  true,
 #else
-  FALSE,
+  false,
 #endif
 #ifdef COFF_DEBUG_STRING_WIDE_PREFIX
   4,
@@ -5403,7 +5687,7 @@ static bfd_coff_backend_data ticoff1_swa
   coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,
   coff_classify_symbol, coff_compute_section_file_positions,
   coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,
-  coff_adjust_symndx, coff_link_add_one_symbol,
+  coff_adjust_symndx,
   coff_link_output_has_begun, coff_final_link_postscript,
   bfd_pe_print_pdata	/* huh */
 };
@@ -5535,8 +5819,8 @@ coff_bigobj_swap_aux_in (bfd *abfd,
 			 void * ext1,
 			 int type,
 			 int in_class,
-			 int indx,
-			 int numaux,
+			 int indx ATTRIBUTE_UNUSED,
+			 int numaux ATTRIBUTE_UNUSED,
 			 void * in1)
 {
   AUXENT_BIGOBJ *ext = (AUXENT_BIGOBJ *) ext1;
@@ -5548,14 +5832,7 @@ coff_bigobj_swap_aux_in (bfd *abfd,
   switch (in_class)
     {
     case C_FILE:
-      if (numaux > 1)
-	{
-	  if (indx == 0)
-	    memcpy (in->x_file.x_fname, ext->File.Name,
-		    numaux * sizeof (AUXENT_BIGOBJ));
-	}
-      else
-	memcpy (in->x_file.x_fname, ext->File.Name, sizeof (ext->File.Name));
+      memcpy (in->x_file.x_n.x_fname, ext->File.Name, sizeof (ext->File.Name));
       break;
 
     case C_STAT:
@@ -5577,7 +5854,7 @@ coff_bigobj_swap_aux_in (bfd *abfd,
       break;
 
     default:
-      in->x_sym.x_tagndx.l = H_GET_32 (abfd, ext->Sym.WeakDefaultSymIndex);
+      in->x_sym.x_tagndx.u32 = H_GET_32 (abfd, ext->Sym.WeakDefaultSymIndex);
       /* Characteristics is ignored.  */
       break;
     }
@@ -5600,7 +5877,7 @@ coff_bigobj_swap_aux_out (bfd * abfd,
   switch (in_class)
     {
     case C_FILE:
-      memcpy (ext->File.Name, in->x_file.x_fname, sizeof (ext->File.Name));
+      memcpy (ext->File.Name, in->x_file.x_n.x_fname, sizeof (ext->File.Name));
 
       return AUXESZ;
 
@@ -5625,13 +5902,13 @@ coff_bigobj_swap_aux_out (bfd * abfd,
       break;
     }
 
-  H_PUT_32 (abfd, in->x_sym.x_tagndx.l, ext->Sym.WeakDefaultSymIndex);
+  H_PUT_32 (abfd, in->x_sym.x_tagndx.u32, ext->Sym.WeakDefaultSymIndex);
   H_PUT_32 (abfd, 1, ext->Sym.WeakSearchType);
 
   return AUXESZ;
 }
 
-static bfd_coff_backend_data bigobj_swap_table =
+static const bfd_coff_backend_data bigobj_swap_table =
 {
   coff_bigobj_swap_aux_in, coff_bigobj_swap_sym_in, coff_SWAP_lineno_in,
   coff_bigobj_swap_aux_out, coff_bigobj_swap_sym_out,
@@ -5640,10 +5917,10 @@ static bfd_coff_backend_data bigobj_swap
   coff_SWAP_scnhdr_out,
   FILHSZ_BIGOBJ, AOUTSZ, SCNHSZ, SYMESZ_BIGOBJ, AUXESZ_BIGOBJ,
    RELSZ, LINESZ, FILNMLEN_BIGOBJ,
-  TRUE,
+  true,
   COFF_DEFAULT_LONG_SECTION_NAMES,
   COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
-  FALSE,
+  false,
   2,
   1U << 31,
   coff_bigobj_swap_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,
@@ -5653,7 +5930,7 @@ static bfd_coff_backend_data bigobj_swap
   coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,
   coff_classify_symbol, coff_compute_section_file_positions,
   coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,
-  coff_adjust_symndx, coff_link_add_one_symbol,
+  coff_adjust_symndx,
   coff_link_output_has_begun, coff_final_link_postscript,
   bfd_pe_print_pdata	/* huh */
 };
@@ -5665,7 +5942,7 @@ static bfd_coff_backend_data bigobj_swap
 #endif
 
 #ifndef coff_bfd_free_cached_info
-#define coff_bfd_free_cached_info	    _bfd_generic_bfd_free_cached_info
+#define coff_bfd_free_cached_info	    _bfd_coff_free_cached_info
 #endif
 
 #ifndef coff_get_section_contents
@@ -5791,6 +6068,7 @@ const bfd_target VAR =							\
   '/',				/* AR_pad_char.  */			\
   15,				/* AR_max_namelen.  */			\
   0,				/* match priority.  */			\
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */ \
 									\
   /* Data conversion functions.  */					\
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,				\
@@ -5852,11 +6130,12 @@ const bfd_target VAR =							\
   '/',				/* AR_pad_char.  */			\
   15,				/* AR_max_namelen.  */			\
   0,				/* match priority.  */			\
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */ \
 									\
   /* Data conversion functions.  */					\
-  bfd_getb64, bfd_getb_signed_64, bfd_putb64,				\
-  bfd_getb32, bfd_getb_signed_32, bfd_putb32,				\
-  bfd_getb16, bfd_getb_signed_16, bfd_putb16,				\
+  bfd_getl64, bfd_getl_signed_64, bfd_putl64,				\
+  bfd_getl32, bfd_getl_signed_32, bfd_putl32,				\
+  bfd_getl16, bfd_getl_signed_16, bfd_putl16,				\
 									\
   /* Header conversion functions.  */					\
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,				\
@@ -5913,6 +6192,7 @@ const bfd_target VAR =							\
   '/',				/* AR_pad_char.  */			\
   15,				/* AR_max_namelen.  */			\
   0,				/* match priority.  */			\
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */ \
 									\
   /* Data conversion functions.  */					\
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,				\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coffgen.c ./bfd/coffgen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coffgen.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coffgen.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -42,18 +42,84 @@
 #include "libbfd.h"
 #include "coff/internal.h"
 #include "libcoff.h"
+#include "elf-bfd.h"
+#include "hashtab.h"
+#include "safe-ctype.h"
+
+/* Extract a long section name at STRINDEX and copy it to the bfd objstack.
+   Return NULL in case of error.  */
+
+static char *
+extract_long_section_name(bfd *abfd, unsigned long strindex)
+{
+  const char *strings;
+  char *name;
+
+  strings = _bfd_coff_read_string_table (abfd);
+  if (strings == NULL)
+    return NULL;
+  if ((bfd_size_type)(strindex + 2) >= obj_coff_strings_len (abfd))
+    return NULL;
+  strings += strindex;
+  name = (char *) bfd_alloc (abfd, (bfd_size_type) strlen (strings) + 1);
+  if (name == NULL)
+    return NULL;
+  strcpy (name, strings);
+
+  return name;
+}
+
+/* Decode a base 64 coded string at STR of length LEN, and write the result
+   to RES.  Return true on success.
+   Return false in case of invalid character or overflow.  */
+
+static bool
+decode_base64 (const char *str, unsigned len, uint32_t *res)
+{
+  unsigned i;
+  uint32_t val;
+
+  val = 0;
+  for (i = 0; i < len; i++)
+    {
+      char c = str[i];
+      unsigned d;
+
+      if (c >= 'A' && c <= 'Z')
+	d = c - 'A';
+      else if (c >= 'a' && c <= 'z')
+	d = c - 'a' + 26;
+      else if (c >= '0' && c <= '9')
+	d = c - '0' + 52;
+      else if (c == '+')
+	d = 62;
+      else if (c == '/')
+	d = 63;
+      else
+	return false;
+
+      /* Check for overflow. */
+      if ((val >> 26) != 0)
+	return false;
+
+      val = (val << 6) + d;
+    }
+
+  *res = val;
+  return true;
+}
 
 /* Take a section header read from a coff file (in HOST byte order),
    and make a BFD "section" out of it.  This is used by ECOFF.  */
 
-static bfd_boolean
+static bool
 make_a_section_from_file (bfd *abfd,
 			  struct internal_scnhdr *hdr,
 			  unsigned int target_index)
 {
-  asection *return_section;
+  asection *newsect;
   char *name;
-  bfd_boolean result = TRUE;
+  bool result = true;
   flagword flags;
 
   name = NULL;
@@ -67,32 +133,48 @@ make_a_section_from_file (bfd *abfd,
   if (bfd_coff_set_long_section_names (abfd, bfd_coff_long_section_names (abfd))
       && hdr->s_name[0] == '/')
     {
-      char buf[SCNNMLEN];
-      long strindex;
-      char *p;
-      const char *strings;
-
       /* Flag that this BFD uses long names, even though the format might
 	 expect them to be off by default.  This won't directly affect the
 	 format of any output BFD created from this one, but the information
 	 can be used to decide what to do.  */
-      bfd_coff_set_long_section_names (abfd, TRUE);
-      memcpy (buf, hdr->s_name + 1, SCNNMLEN - 1);
-      buf[SCNNMLEN - 1] = '\0';
-      strindex = strtol (buf, &p, 10);
-      if (*p == '\0' && strindex >= 0)
+      bfd_coff_set_long_section_names (abfd, true);
+
+      if (hdr->s_name[1] == '/')
 	{
-	  strings = _bfd_coff_read_string_table (abfd);
-	  if (strings == NULL)
-	    return FALSE;
-	  if ((bfd_size_type)(strindex + 2) >= obj_coff_strings_len (abfd))
-	    return FALSE;
-	  strings += strindex;
-	  name = (char *) bfd_alloc (abfd,
-				     (bfd_size_type) strlen (strings) + 1 + 1);
+	  /* LLVM extension: the '/' is followed by another '/' and then by
+	     the index in the strtab encoded in base64 without NUL at the
+	     end.  */
+	  uint32_t strindex;
+
+	  /* Decode the index.  No overflow is expected as the string table
+	     length is at most 2^32 - 1 (the length is written on the first
+	     four bytes).
+	     Also, contrary to RFC 4648, all the characters must be decoded,
+	     there is no padding.  */
+	  if (!decode_base64 (hdr->s_name + 2, SCNNMLEN - 2, &strindex))
+	    return false;
+
+	  name = extract_long_section_name (abfd, strindex);
 	  if (name == NULL)
-	    return FALSE;
-	  strcpy (name, strings);
+	    return false;
+	}
+      else
+	{
+	  /* PE classic long section name.  The '/' is followed by the index
+	     in the strtab.  The index is formatted as a decimal string.  */
+	  char buf[SCNNMLEN];
+	  long strindex;
+	  char *p;
+
+	  memcpy (buf, hdr->s_name + 1, SCNNMLEN - 1);
+	  buf[SCNNMLEN - 1] = '\0';
+	  strindex = strtol (buf, &p, 10);
+	  if (*p == '\0' && strindex >= 0)
+	    {
+	      name = extract_long_section_name (abfd, strindex);
+	      if (name == NULL)
+		return false;
+	    }
 	}
     }
 
@@ -102,135 +184,123 @@ make_a_section_from_file (bfd *abfd,
       name = (char *) bfd_alloc (abfd,
 				 (bfd_size_type) sizeof (hdr->s_name) + 1 + 1);
       if (name == NULL)
-	return FALSE;
+	return false;
       strncpy (name, (char *) &hdr->s_name[0], sizeof (hdr->s_name));
       name[sizeof (hdr->s_name)] = 0;
     }
 
-  return_section = bfd_make_section_anyway (abfd, name);
-  if (return_section == NULL)
-    return FALSE;
-
-  return_section->vma = hdr->s_vaddr;
-  return_section->lma = hdr->s_paddr;
-  return_section->size = hdr->s_size;
-  return_section->filepos = hdr->s_scnptr;
-  return_section->rel_filepos = hdr->s_relptr;
-  return_section->reloc_count = hdr->s_nreloc;
-
-  bfd_coff_set_alignment_hook (abfd, return_section, hdr);
-
-  return_section->line_filepos = hdr->s_lnnoptr;
-
-  return_section->lineno_count = hdr->s_nlnno;
-  return_section->userdata = NULL;
-  return_section->next = NULL;
-  return_section->target_index = target_index;
-
-  if (! bfd_coff_styp_to_sec_flags_hook (abfd, hdr, name, return_section,
-					 & flags))
-    result = FALSE;
+  newsect = bfd_make_section_anyway (abfd, name);
+  if (newsect == NULL)
+    return false;
+
+  newsect->vma = hdr->s_vaddr;
+  newsect->lma = hdr->s_paddr;
+  newsect->size = hdr->s_size;
+  newsect->filepos = hdr->s_scnptr;
+  newsect->rel_filepos = hdr->s_relptr;
+  newsect->reloc_count = hdr->s_nreloc;
+
+  bfd_coff_set_alignment_hook (abfd, newsect, hdr);
+
+  newsect->line_filepos = hdr->s_lnnoptr;
+
+  newsect->lineno_count = hdr->s_nlnno;
+  newsect->userdata = NULL;
+  newsect->next = NULL;
+  newsect->target_index = target_index;
 
-  return_section->flags = flags;
+  if (!bfd_coff_styp_to_sec_flags_hook (abfd, hdr, name, newsect, &flags))
+    result = false;
 
   /* At least on i386-coff, the line number count for a shared library
      section must be ignored.  */
-  if ((return_section->flags & SEC_COFF_SHARED_LIBRARY) != 0)
-    return_section->lineno_count = 0;
+  if ((flags & SEC_COFF_SHARED_LIBRARY) != 0)
+    newsect->lineno_count = 0;
 
   if (hdr->s_nreloc != 0)
-    return_section->flags |= SEC_RELOC;
+    flags |= SEC_RELOC;
   /* FIXME: should this check 'hdr->s_size > 0'.  */
   if (hdr->s_scnptr != 0)
-    return_section->flags |= SEC_HAS_CONTENTS;
+    flags |= SEC_HAS_CONTENTS;
 
-  /* Compress/decompress DWARF debug sections with names: .debug_* and
-     .zdebug_*, after the section flags is set.  */
-  if ((flags & SEC_DEBUGGING)
-      && strlen (name) > 7
-      && ((name[1] == 'd' && name[6] == '_')
-	  || (strlen (name) > 8 && name[1] == 'z' && name[7] == '_')))
+  newsect->flags = flags;
+
+  /* Compress/decompress DWARF debug sections.  */
+  if ((flags & SEC_DEBUGGING) != 0
+      && (flags & SEC_HAS_CONTENTS) != 0
+      && (startswith (name, ".debug_")
+	  || startswith (name, ".zdebug_")
+	  || startswith (name, ".gnu.debuglto_.debug_")
+	  || startswith (name, ".gnu.linkonce.wi.")))
     {
       enum { nothing, compress, decompress } action = nothing;
-      char *new_name = NULL;
 
-      if (bfd_is_section_compressed (abfd, return_section))
+      if (bfd_is_section_compressed (abfd, newsect))
 	{
 	  /* Compressed section.  Check if we should decompress.  */
 	  if ((abfd->flags & BFD_DECOMPRESS))
 	    action = decompress;
 	}
-      else if (!bfd_is_section_compressed (abfd, return_section))
+      else
 	{
 	  /* Normal section.  Check if we should compress.  */
-	  if ((abfd->flags & BFD_COMPRESS) && return_section->size != 0)
+	  if ((abfd->flags & BFD_COMPRESS) && newsect->size != 0)
 	    action = compress;
 	}
 
-      switch (action)
+      if (action == compress)
 	{
-	case nothing:
-	  break;
-	case compress:
-	  if (!bfd_init_section_compress_status (abfd, return_section))
+	  if (!bfd_init_section_compress_status (abfd, newsect))
 	    {
 	      _bfd_error_handler
-		/* xgettext: c-format */
-		(_("%pB: unable to initialize compress status for section %s"),
-		 abfd, name);
-	      return FALSE;
+		/* xgettext:c-format */
+		(_("%pB: unable to compress section %s"), abfd, name);
+	      return false;
 	    }
-	  if (return_section->compress_status == COMPRESS_SECTION_DONE)
-	    {
-	      if (name[1] != 'z')
-		{
-		  unsigned int len = strlen (name);
-
-		  new_name = bfd_alloc (abfd, len + 2);
-		  if (new_name == NULL)
-		    return FALSE;
-		  new_name[0] = '.';
-		  new_name[1] = 'z';
-		  memcpy (new_name + 2, name + 1, len);
-		}
-	    }
-	 break;
-	case decompress:
-	  if (!bfd_init_section_decompress_status (abfd, return_section))
+	}
+      else if (action == decompress)
+	{
+	  if (!bfd_init_section_decompress_status (abfd, newsect))
 	    {
 	      _bfd_error_handler
-		/* xgettext: c-format */
-		(_("%pB: unable to initialize decompress status for section %s"),
-		 abfd, name);
-	      return FALSE;
-	    }
-	  if (name[1] == 'z')
-	    {
-	      unsigned int len = strlen (name);
-
-	      new_name = bfd_alloc (abfd, len);
+		/* xgettext:c-format */
+		(_("%pB: unable to decompress section %s"), abfd, name);
+	      return false;
+	    }
+	  if (abfd->is_linker_input
+	      && name[1] == 'z')
+	    {
+	      /* Rename section from .zdebug_* to .debug_* so that ld
+		 scripts will see this section as a debug section.  */
+	      char *new_name = bfd_zdebug_name_to_debug (abfd, name);
 	      if (new_name == NULL)
-		return FALSE;
-	      new_name[0] = '.';
-	      memcpy (new_name + 1, name + 2, len - 1);
+		return false;
+	      bfd_rename_section (newsect, new_name);
 	    }
-	  break;
 	}
-      if (new_name != NULL)
-	bfd_rename_section (return_section, new_name);
     }
 
   return result;
 }
 
+void
+coff_object_cleanup (bfd *abfd)
+{
+  struct coff_tdata *td = coff_data (abfd);
+  if (td != NULL)
+    {
+      if (td->section_by_index)
+	htab_delete (td->section_by_index);
+      if (td->section_by_target_index)
+	htab_delete (td->section_by_target_index);
+      if (obj_pe (abfd) && pe_data (abfd)->comdat_hash)
+	htab_delete (pe_data (abfd)->comdat_hash);
+    }
+}
+
 /* Read in a COFF object and make it into a BFD.  This is used by
    ECOFF as well.  */
-const bfd_target *
-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,
@@ -239,7 +309,6 @@ coff_real_object_p (bfd *abfd,
   flagword oflags = abfd->flags;
   bfd_vma ostart = bfd_get_start_address (abfd);
   void * tdata;
-  void * tdata_save;
   bfd_size_type readsize;	/* Length of file_info.  */
   unsigned int scnhsz;
   char *external_sections;
@@ -268,20 +337,16 @@ coff_real_object_p (bfd *abfd,
 
   /* Set up the tdata area.  ECOFF uses its own routine, and overrides
      abfd->flags.  */
-  tdata_save = abfd->tdata.any;
   tdata = bfd_coff_mkobject_hook (abfd, (void *) internal_f, (void *) internal_a);
   if (tdata == NULL)
     goto fail2;
 
   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 +367,23 @@ coff_real_object_p (bfd *abfd,
 	}
     }
 
-  return abfd->xvec;
+  _bfd_coff_free_symbols (abfd);
+  return coff_object_cleanup;
 
  fail:
+  coff_object_cleanup (abfd);
+  _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 +397,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);
@@ -348,7 +412,7 @@ coff_object_p (bfd *abfd)
      aoutsz) in executables.  The bfd_coff_swap_aouthdr_in function
      expects this header to be aoutsz bytes in length, so we use that
      value in the call to bfd_alloc below.  But we must be careful to
-     only read in f_opthdr bytes in the call to bfd_bread.  We should
+     only read in f_opthdr bytes in the call to bfd_read.  We should
      also attempt to catch corrupt or non-COFF binaries with a strange
      value for f_opthdr.  */
   if (! bfd_coff_bad_format_hook (abfd, &internal_f)
@@ -363,18 +427,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);
@@ -386,13 +445,26 @@ coff_object_p (bfd *abfd)
 			      : (struct internal_aouthdr *) NULL));
 }
 
+static hashval_t
+htab_hash_section_target_index (const void * entry)
+{
+  const struct bfd_section * sec = entry;
+  return sec->target_index;
+}
+
+static int
+htab_eq_section_target_index (const void * e1, const void * e2)
+{
+  const struct bfd_section * sec1 = e1;
+  const struct bfd_section * sec2 = e2;
+  return sec1->target_index == sec2->target_index;
+}
+
 /* Get the BFD section from a COFF symbol section number.  */
 
 asection *
 coff_section_from_bfd_index (bfd *abfd, int section_index)
 {
-  struct bfd_section *answer = abfd->sections;
-
   if (section_index == N_ABS)
     return bfd_abs_section_ptr;
   if (section_index == N_UNDEF)
@@ -400,13 +472,47 @@ coff_section_from_bfd_index (bfd *abfd,
   if (section_index == N_DEBUG)
     return bfd_abs_section_ptr;
 
-  while (answer)
+  struct bfd_section *answer;
+  htab_t table = coff_data (abfd)->section_by_target_index;
+
+  if (!table)
     {
-      if (answer->target_index == section_index)
-	return answer;
-      answer = answer->next;
+      table = htab_create (10, htab_hash_section_target_index,
+			   htab_eq_section_target_index, NULL);
+      if (table == NULL)
+	return bfd_und_section_ptr;
+      coff_data (abfd)->section_by_target_index = table;
+    }
+
+  if (htab_elements (table) == 0)
+    {
+      for (answer = abfd->sections; answer; answer = answer->next)
+	{
+	  void **slot = htab_find_slot (table, answer, INSERT);
+	  if (slot == NULL)
+	    return bfd_und_section_ptr;
+	  *slot = answer;
+	}
     }
 
+  struct bfd_section needle;
+  needle.target_index = section_index;
+
+  answer = htab_find (table, &needle);
+  if (answer != NULL)
+    return answer;
+
+  /* Cover the unlikely case of sections added after the first call to
+     this function.  */
+  for (answer = abfd->sections; answer; answer = answer->next)
+    if (answer->target_index == section_index)
+      {
+	void **slot = htab_find_slot (table, answer, INSERT);
+	if (slot != NULL)
+	  *slot = answer;
+	return answer;
+      }
+
   /* We should not reach this point, but the SCO 3.2v4 /lib/libc_s.a
      has a bad symbol table in biglitpow.o.  */
   return bfd_und_section_ptr;
@@ -474,10 +580,7 @@ _bfd_coff_internal_syment_name (bfd *abf
 	  if (strings == NULL)
 	    return NULL;
 	}
-      /* PR 17910: Only check for string overflow if the length has been set.
-	 Some DLLs, eg those produced by Visual Studio, may not set the length field.  */
-      if (obj_coff_strings_len (abfd) > 0
-	  && sym->_n._n_n._n_offset >= obj_coff_strings_len (abfd))
+      if (sym->_n._n_n._n_offset >= obj_coff_strings_len (abfd))
 	return NULL;
       return strings + sym->_n._n_n._n_offset;
     }
@@ -495,9 +598,9 @@ _bfd_coff_internal_syment_name (bfd *abf
 struct internal_reloc *
 _bfd_coff_read_internal_relocs (bfd *abfd,
 				asection *sec,
-				bfd_boolean cache,
+				bool cache,
 				bfd_byte *external_relocs,
-				bfd_boolean require_internal,
+				bool require_internal,
 				struct internal_reloc *internal_relocs)
 {
   bfd_size_type relsz;
@@ -533,7 +636,7 @@ _bfd_coff_read_internal_relocs (bfd *abf
     }
 
   if (bfd_seek (abfd, sec->rel_filepos, SEEK_SET) != 0
-      || bfd_bread (external_relocs, amt, abfd) != amt)
+      || bfd_read (external_relocs, amt, abfd) != amt)
     goto error_return;
 
   if (internal_relocs == NULL)
@@ -553,11 +656,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 +675,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;
 }
 
@@ -609,7 +707,8 @@ coff_count_linenumbers (bfd *abfd)
     {
       asymbol *q_maybe = *p;
 
-      if (bfd_family_coff (bfd_asymbol_bfd (q_maybe)))
+      if (bfd_asymbol_bfd (q_maybe) != NULL
+	  && bfd_family_coff (bfd_asymbol_bfd (q_maybe)))
 	{
 	  coff_symbol_type *q = coffsymbol (q_maybe);
 
@@ -699,7 +798,7 @@ fixup_symbol_value (bfd *abfd,
    chain, and that the last one points to the first external symbol. We
    do that here too.  */
 
-bfd_boolean
+bool
 coff_renumber_symbols (bfd *bfd_ptr, int *first_undef)
 {
   unsigned int symbol_count = bfd_get_symcount (bfd_ptr);
@@ -726,7 +825,7 @@ coff_renumber_symbols (bfd *bfd_ptr, int
     amt = sizeof (asymbol *) * ((bfd_size_type) symbol_count + 1);
     newsyms = (asymbol **) bfd_alloc (bfd_ptr, amt);
     if (!newsyms)
-      return FALSE;
+      return false;
     bfd_ptr->outsymbols = newsyms;
     for (i = 0; i < symbol_count; i++)
       if ((symbol_ptr_ptr[i]->flags & BSF_NOT_AT_END) != 0
@@ -788,7 +887,7 @@ coff_renumber_symbols (bfd *bfd_ptr, int
 
   obj_conv_table_size (bfd_ptr) = native_index;
 
-  return TRUE;
+  return true;
 }
 
 /* Run thorough the symbol table again, and fix it so that all
@@ -817,8 +916,8 @@ coff_mangle_symbols (bfd *bfd_ptr)
 	    {
 	      /* FIXME: We should use a union here.  */
 	      s->u.syment.n_value =
-		(bfd_hostptr_t) ((combined_entry_type *)
-			  ((bfd_hostptr_t) s->u.syment.n_value))->offset;
+		(uintptr_t) ((combined_entry_type *)
+			     (uintptr_t) s->u.syment.n_value)->offset;
 	      s->fix_value = 0;
 	    }
 	  if (s->fix_line)
@@ -840,19 +939,19 @@ coff_mangle_symbols (bfd *bfd_ptr)
 	      BFD_ASSERT (! a->is_sym);
 	      if (a->fix_tag)
 		{
-		  a->u.auxent.x_sym.x_tagndx.l =
+		  a->u.auxent.x_sym.x_tagndx.u32 =
 		    a->u.auxent.x_sym.x_tagndx.p->offset;
 		  a->fix_tag = 0;
 		}
 	      if (a->fix_end)
 		{
-		  a->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.l =
+		  a->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.u32 =
 		    a->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.p->offset;
 		  a->fix_end = 0;
 		}
 	      if (a->fix_scnlen)
 		{
-		  a->u.auxent.x_csect.x_scnlen.l =
+		  a->u.auxent.x_csect.x_scnlen.u64 =
 		    a->u.auxent.x_csect.x_scnlen.p->offset;
 		  a->fix_scnlen = 0;
 		}
@@ -861,17 +960,53 @@ coff_mangle_symbols (bfd *bfd_ptr)
     }
 }
 
-static void
+static bool
+coff_write_auxent_fname (bfd *abfd,
+			 char *str,
+			 union internal_auxent *auxent,
+			 struct bfd_strtab_hash *strtab,
+			 bool hash)
+{
+  unsigned int str_length = strlen (str);
+  unsigned int filnmlen = bfd_coff_filnmlen (abfd);
+
+  if (bfd_coff_long_filenames (abfd))
+    {
+      if (str_length <= filnmlen)
+	strncpy (auxent->x_file.x_n.x_fname, str, filnmlen);
+      else
+	{
+	  bfd_size_type indx = _bfd_stringtab_add (strtab, str, hash, false);
+
+	  if (indx == (bfd_size_type) -1)
+	    return false;
+
+	  auxent->x_file.x_n.x_n.x_offset = STRING_SIZE_SIZE + indx;
+	  auxent->x_file.x_n.x_n.x_zeroes = 0;
+	}
+    }
+  else
+    {
+      strncpy (auxent->x_file.x_n.x_fname, str, filnmlen);
+      if (str_length > filnmlen)
+	str[filnmlen] = '\0';
+    }
+
+  return true;
+}
+
+static bool
 coff_fix_symbol_name (bfd *abfd,
 		      asymbol *symbol,
 		      combined_entry_type *native,
-		      bfd_size_type *string_size_p,
+		      struct bfd_strtab_hash *strtab,
+		      bool hash,
 		      asection **debug_string_section_p,
 		      bfd_size_type *debug_string_size_p)
 {
   unsigned int name_length;
-  union internal_auxent *auxent;
   char *name = (char *) (symbol->name);
+  bfd_size_type indx;
 
   if (name == NULL)
     {
@@ -885,40 +1020,22 @@ coff_fix_symbol_name (bfd *abfd,
   if (native->u.syment.n_sclass == C_FILE
       && native->u.syment.n_numaux > 0)
     {
-      unsigned int filnmlen;
-
       if (bfd_coff_force_symnames_in_strings (abfd))
 	{
-	  native->u.syment._n._n_n._n_offset =
-	      (*string_size_p + STRING_SIZE_SIZE);
+	  indx = _bfd_stringtab_add (strtab, ".file", hash, false);
+	  if (indx == (bfd_size_type) -1)
+	    return false;
+
+	  native->u.syment._n._n_n._n_offset = STRING_SIZE_SIZE + indx;
 	  native->u.syment._n._n_n._n_zeroes = 0;
-	  *string_size_p += 6;  /* strlen(".file") + 1 */
 	}
       else
 	strncpy (native->u.syment._n._n_name, ".file", SYMNMLEN);
 
       BFD_ASSERT (! (native + 1)->is_sym);
-      auxent = &(native + 1)->u.auxent;
-
-      filnmlen = bfd_coff_filnmlen (abfd);
-
-      if (bfd_coff_long_filenames (abfd))
-	{
-	  if (name_length <= filnmlen)
-	    strncpy (auxent->x_file.x_fname, name, filnmlen);
-	  else
-	    {
-	      auxent->x_file.x_n.x_offset = *string_size_p + STRING_SIZE_SIZE;
-	      auxent->x_file.x_n.x_zeroes = 0;
-	      *string_size_p += name_length + 1;
-	    }
-	}
-      else
-	{
-	  strncpy (auxent->x_file.x_fname, name, filnmlen);
-	  if (name_length > filnmlen)
-	    name[filnmlen] = '\0';
-	}
+      if (!coff_write_auxent_fname (abfd, name, &(native + 1)->u.auxent,
+			       strtab, hash))
+	return false;
     }
   else
     {
@@ -928,10 +1045,12 @@ coff_fix_symbol_name (bfd *abfd,
 
       else if (!bfd_coff_symname_in_debug (abfd, &native->u.syment))
 	{
-	  native->u.syment._n._n_n._n_offset = (*string_size_p
-						+ STRING_SIZE_SIZE);
+	  indx = _bfd_stringtab_add (strtab, name, hash, false);
+	  if (indx == (bfd_size_type) -1)
+	    return false;
+
+	  native->u.syment._n._n_n._n_offset = STRING_SIZE_SIZE + indx;
 	  native->u.syment._n._n_n._n_zeroes = 0;
-	  *string_size_p += name_length + 1;
 	}
       else
 	{
@@ -972,6 +1091,8 @@ coff_fix_symbol_name (bfd *abfd,
 	  *debug_string_size_p += name_length + 1 + prefix_len;
 	}
     }
+
+  return true;
 }
 
 /* We need to keep track of the symbol index so that when we write out
@@ -982,12 +1103,13 @@ coff_fix_symbol_name (bfd *abfd,
 
 /* Write a symbol out to a COFF file.  */
 
-static bfd_boolean
+static bool
 coff_write_symbol (bfd *abfd,
 		   asymbol *symbol,
 		   combined_entry_type *native,
 		   bfd_vma *written,
-		   bfd_size_type *string_size_p,
+		   struct bfd_strtab_hash *strtab,
+		   bool hash,
 		   asection **debug_string_section_p,
 		   bfd_size_type *debug_string_size_p)
 {
@@ -1019,16 +1141,17 @@ coff_write_symbol (bfd *abfd,
     native->u.syment.n_scnum =
       output_section->target_index;
 
-  coff_fix_symbol_name (abfd, symbol, native, string_size_p,
-			debug_string_section_p, debug_string_size_p);
+  if (!coff_fix_symbol_name (abfd, symbol, native, strtab, hash,
+			     debug_string_section_p, debug_string_size_p))
+    return false;
 
   symesz = bfd_coff_symesz (abfd);
   buf = bfd_alloc (abfd, symesz);
   if (!buf)
-    return FALSE;
+    return false;
   bfd_coff_swap_sym_out (abfd, &native->u.syment, buf);
-  if (bfd_bwrite (buf, symesz, abfd) != symesz)
-    return FALSE;
+  if (bfd_write (buf, symesz, abfd) != symesz)
+    return false;
   bfd_release (abfd, buf);
 
   if (native->u.syment.n_numaux > 0)
@@ -1039,17 +1162,26 @@ coff_write_symbol (bfd *abfd,
       auxesz = bfd_coff_auxesz (abfd);
       buf = bfd_alloc (abfd, auxesz);
       if (!buf)
-	return FALSE;
+	return false;
       for (j = 0; j < native->u.syment.n_numaux; j++)
 	{
 	  BFD_ASSERT (! (native + j + 1)->is_sym);
+
+	  /* Adjust auxent only if this isn't the filename
+	     auxiliary entry.  */
+	  if (native->u.syment.n_sclass == C_FILE
+	      && (native + j + 1)->u.auxent.x_file.x_ftype
+	      && (native + j + 1)->extrap)
+	    coff_write_auxent_fname (abfd, (char *) (native + j + 1)->extrap,
+				     &(native + j + 1)->u.auxent, strtab, hash);
+
 	  bfd_coff_swap_aux_out (abfd,
 				 &((native + j + 1)->u.auxent),
 				 type, n_sclass, (int) j,
 				 native->u.syment.n_numaux,
 				 buf);
-	  if (bfd_bwrite (buf, auxesz, abfd) != auxesz)
-	    return FALSE;
+	  if (bfd_write (buf, auxesz, abfd) != auxesz)
+	    return false;
 	}
       bfd_release (abfd, buf);
     }
@@ -1058,20 +1190,20 @@ coff_write_symbol (bfd *abfd,
   set_index (symbol, *written);
 
   *written += numaux + 1;
-  return TRUE;
+  return true;
 }
 
 /* Write out a symbol to a COFF file that does not come from a COFF
    file originally.  This symbol may have been created by the linker,
    or we may be linking a non COFF file to a COFF file.  */
 
-bfd_boolean
+bool
 coff_write_alien_symbol (bfd *abfd,
 			 asymbol *symbol,
 			 struct internal_syment *isym,
-			 union internal_auxent *iaux,
 			 bfd_vma *written,
-			 bfd_size_type *string_size_p,
+			 struct bfd_strtab_hash *strtab,
+			 bool hash,
 			 asection **debug_string_section_p,
 			 bfd_size_type *debug_string_size_p)
 {
@@ -1081,7 +1213,7 @@ coff_write_alien_symbol (bfd *abfd,
 			       ? symbol->section->output_section
 			       : symbol->section;
   struct bfd_link_info *link_info = coff_data (abfd)->link_info;
-  bfd_boolean ret;
+  bool ret;
 
   if ((!link_info || link_info->strip_discarded)
       && !bfd_is_abs_section (symbol->section)
@@ -1090,11 +1222,12 @@ coff_write_alien_symbol (bfd *abfd,
       symbol->name = "";
       if (isym != NULL)
 	memset (isym, 0, sizeof (*isym));
-      return TRUE;
+      return true;
     }
+  memset (dummy, 0, sizeof dummy);
   native = dummy;
-  native->is_sym = TRUE;
-  native[1].is_sym = FALSE;
+  native->is_sym = true;
+  native[1].is_sym = false;
   native->u.syment.n_type = T_NULL;
   native->u.syment.n_flags = 0;
   native->u.syment.n_numaux = 0;
@@ -1122,7 +1255,7 @@ coff_write_alien_symbol (bfd *abfd,
       symbol->name = "";
       if (isym != NULL)
 	memset (isym, 0, sizeof (*isym));
-      return TRUE;
+      return true;
     }
   else
     {
@@ -1139,9 +1272,24 @@ coff_write_alien_symbol (bfd *abfd,
 	if (c != (coff_symbol_type *) NULL)
 	  native->u.syment.n_flags = bfd_asymbol_bfd (&c->symbol)->flags;
       }
+
+      const elf_symbol_type *elfsym = elf_symbol_from (symbol);
+      if (elfsym
+	  && (symbol->flags & BSF_FUNCTION)
+	  && elfsym->internal_elf_sym.st_size)
+	{
+	  /* coff_data (abfd)->local_n_btshft is what ought to be used here,
+	     just that it's set only when reading in COFF objects.  */
+	  native->u.syment.n_type = DT_FCN << 4;
+	  native->u.syment.n_numaux = 1;
+	  native[1].u.auxent.x_sym.x_misc.x_fsize
+	    = elfsym->internal_elf_sym.st_size;
+	  /* FIXME .u.auxent.x_sym.x_fcnary.x_fcn.x_endndx would better also
+	     be set, which would require updating the field once the next
+	     function is seen.  */
+	}
     }
 
-  native->u.syment.n_type = 0;
   if (symbol->flags & BSF_FILE)
     native->u.syment.n_sclass = C_FILE;
   else if (symbol->flags & BSF_LOCAL)
@@ -1151,22 +1299,20 @@ coff_write_alien_symbol (bfd *abfd,
   else
     native->u.syment.n_sclass = C_EXT;
 
-  ret = coff_write_symbol (abfd, symbol, native, written, string_size_p,
+  ret = coff_write_symbol (abfd, symbol, native, written, strtab, hash,
 			   debug_string_section_p, debug_string_size_p);
   if (isym != NULL)
     *isym = native->u.syment;
-  if (iaux != NULL && native->u.syment.n_numaux)
-    *iaux = native[1].u.auxent;
   return ret;
 }
 
 /* Write a native symbol to a COFF file.  */
 
-static bfd_boolean
+static bool
 coff_write_native_symbol (bfd *abfd,
 			  coff_symbol_type *symbol,
 			  bfd_vma *written,
-			  bfd_size_type *string_size_p,
+			  struct bfd_strtab_hash *strtab,
 			  asection **debug_string_section_p,
 			  bfd_size_type *debug_string_size_p)
 {
@@ -1179,7 +1325,7 @@ coff_write_native_symbol (bfd *abfd,
       && symbol->symbol.section->output_section == bfd_abs_section_ptr)
     {
       symbol->symbol.name = "";
-      return TRUE;
+      return true;
     }
 
   BFD_ASSERT (native->is_sym);
@@ -1208,7 +1354,7 @@ coff_write_native_symbol (bfd *abfd,
 	     + symbol->symbol.section->output_offset);
 	  count++;
 	}
-      symbol->done_lineno = TRUE;
+      symbol->done_lineno = true;
 
       if (! bfd_is_const_section (symbol->symbol.section->output_section))
 	symbol->symbol.section->output_section->moving_line_filepos +=
@@ -1216,7 +1362,7 @@ coff_write_native_symbol (bfd *abfd,
     }
 
   return coff_write_symbol (abfd, &(symbol->symbol), native, written,
-			    string_size_p, debug_string_section_p,
+			    strtab, true, debug_string_section_p,
 			    debug_string_size_p);
 }
 
@@ -1228,10 +1374,10 @@ null_error_handler (const char *fmt ATTR
 
 /* Write out the COFF symbols.  */
 
-bfd_boolean
+bool
 coff_write_symbols (bfd *abfd)
 {
-  bfd_size_type string_size;
+  struct bfd_strtab_hash *strtab;
   asection *debug_string_section;
   bfd_size_type debug_string_size;
   unsigned int i;
@@ -1239,31 +1385,31 @@ coff_write_symbols (bfd *abfd)
   bfd_vma written = 0;
   asymbol **p;
 
-  string_size = 0;
   debug_string_section = NULL;
   debug_string_size = 0;
 
+  strtab = _bfd_stringtab_init ();
+  if (strtab == NULL)
+    return false;
+
   /* If this target supports long section names, they must be put into
      the string table.  This is supported by PE.  This code must
      handle section names just as they are handled in
-     coff_write_object_contents.  */
+     coff_write_object_contents.  This is why we pass hash as FALSE below.  */
   if (bfd_coff_long_section_names (abfd))
     {
       asection *o;
 
       for (o = abfd->sections; o != NULL; o = o->next)
-	{
-	  size_t len;
-
-	  len = strlen (o->name);
-	  if (len > SCNNMLEN)
-	    string_size += len + 1;
-	}
+	if (strlen (o->name) > SCNNMLEN
+	    && _bfd_stringtab_add (strtab, o->name, false, false)
+	       == (bfd_size_type) -1)
+	  return false;
     }
 
   /* Seek to the right place.  */
   if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   /* Output all the symbols we have.  */
   written = 0;
@@ -1275,10 +1421,10 @@ coff_write_symbols (bfd *abfd)
       if (c_symbol == (coff_symbol_type *) NULL
 	  || c_symbol->native == (combined_entry_type *) NULL)
 	{
-	  if (!coff_write_alien_symbol (abfd, symbol, NULL, NULL, &written,
-					&string_size, &debug_string_section,
+	  if (!coff_write_alien_symbol (abfd, symbol, NULL, &written,
+					strtab, true, &debug_string_section,
 					&debug_string_size))
-	    return FALSE;
+	    return false;
 	}
       else
 	{
@@ -1321,118 +1467,35 @@ coff_write_symbols (bfd *abfd)
 	    }
 
 	  if (!coff_write_native_symbol (abfd, c_symbol, &written,
-					 &string_size, &debug_string_section,
+					 strtab, &debug_string_section,
 					 &debug_string_size))
-	    return FALSE;
+	    return false;
 	}
     }
 
   obj_raw_syment_count (abfd) = written;
 
-  /* Now write out strings.  */
-  if (string_size != 0)
-    {
-      unsigned int size = string_size + STRING_SIZE_SIZE;
-      bfd_byte buffer[STRING_SIZE_SIZE];
+  /* Now write out strings.
+
+     We would normally not write anything here if there are no strings, but
+     we'll write out 4 so that any stupid coff reader which tries to read the
+     string table even when there isn't one won't croak.  */
+  {
+    bfd_byte buffer[STRING_SIZE_SIZE];
 
 #if STRING_SIZE_SIZE == 4
-      H_PUT_32 (abfd, size, buffer);
+    H_PUT_32 (abfd, _bfd_stringtab_size (strtab) + STRING_SIZE_SIZE, buffer);
 #else
  #error Change H_PUT_32
 #endif
-      if (bfd_bwrite ((void *) buffer, (bfd_size_type) sizeof (buffer), abfd)
-	  != sizeof (buffer))
-	return FALSE;
-
-      /* Handle long section names.  This code must handle section
-	 names just as they are handled in coff_write_object_contents.  */
-      if (bfd_coff_long_section_names (abfd))
-	{
-	  asection *o;
-
-	  for (o = abfd->sections; o != NULL; o = o->next)
-	    {
-	      size_t len;
+    if (bfd_write (buffer, sizeof (buffer), abfd) != sizeof (buffer))
+      return false;
 
-	      len = strlen (o->name);
-	      if (len > SCNNMLEN)
-		{
-		  if (bfd_bwrite (o->name, (bfd_size_type) (len + 1), abfd)
-		      != len + 1)
-		    return FALSE;
-		}
-	    }
-	}
-
-      for (p = abfd->outsymbols, i = 0;
-	   i < limit;
-	   i++, p++)
-	{
-	  asymbol *q = *p;
-	  size_t name_length = strlen (q->name);
-	  coff_symbol_type *c_symbol = coff_symbol_from (q);
-	  size_t maxlen;
-
-	  /* Figure out whether the symbol name should go in the string
-	     table.  Symbol names that are short enough are stored
-	     directly in the syment structure.  File names permit a
-	     different, longer, length in the syment structure.  On
-	     XCOFF, some symbol names are stored in the .debug section
-	     rather than in the string table.  */
-
-	  if (c_symbol == NULL
-	      || c_symbol->native == NULL)
-	    /* This is not a COFF symbol, so it certainly is not a
-	       file name, nor does it go in the .debug section.  */
-	    maxlen = bfd_coff_force_symnames_in_strings (abfd) ? 0 : SYMNMLEN;
-
-	  else if (! c_symbol->native->is_sym)
-	    maxlen = bfd_coff_force_symnames_in_strings (abfd) ? 0 : SYMNMLEN;
-
-	  else if (bfd_coff_symname_in_debug (abfd,
-					      &c_symbol->native->u.syment))
-	    /* This symbol name is in the XCOFF .debug section.
-	       Don't write it into the string table.  */
-	    maxlen = name_length;
-
-	  else if (c_symbol->native->u.syment.n_sclass == C_FILE
-		   && c_symbol->native->u.syment.n_numaux > 0)
-	    {
-	      if (bfd_coff_force_symnames_in_strings (abfd))
-		{
-		  if (bfd_bwrite (".file", (bfd_size_type) 6, abfd) != 6)
-		    return FALSE;
-		}
-	      maxlen = bfd_coff_filnmlen (abfd);
-	    }
-	  else
-	    maxlen = bfd_coff_force_symnames_in_strings (abfd) ? 0 : SYMNMLEN;
+    if (! _bfd_stringtab_emit (abfd, strtab))
+      return false;
+  }
 
-	  if (name_length > maxlen)
-	    {
-	      if (bfd_bwrite ((void *) (q->name), (bfd_size_type) name_length + 1,
-			     abfd) != name_length + 1)
-		return FALSE;
-	    }
-	}
-    }
-  else
-    {
-      /* We would normally not write anything here, but we'll write
-	 out 4 so that any stupid coff reader which tries to read the
-	 string table even when there isn't one won't croak.  */
-      unsigned int size = STRING_SIZE_SIZE;
-      bfd_byte buffer[STRING_SIZE_SIZE];
-
-#if STRING_SIZE_SIZE == 4
-      H_PUT_32 (abfd, size, buffer);
-#else
- #error Change H_PUT_32
-#endif
-      if (bfd_bwrite ((void *) buffer, (bfd_size_type) STRING_SIZE_SIZE, abfd)
-	  != STRING_SIZE_SIZE)
-	return FALSE;
-    }
+  _bfd_stringtab_free (strtab);
 
   /* Make sure the .debug section was created to be the correct size.
      We should create it ourselves on the fly, but we don't because
@@ -1445,10 +1508,10 @@ coff_write_symbols (bfd *abfd)
 				 1 << debug_string_section->alignment_power)
 		      == debug_string_section->size)));
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 coff_write_linenumbers (bfd *abfd)
 {
   asection *s;
@@ -1458,14 +1521,14 @@ coff_write_linenumbers (bfd *abfd)
   linesz = bfd_coff_linesz (abfd);
   buff = bfd_alloc (abfd, linesz);
   if (!buff)
-    return FALSE;
+    return false;
   for (s = abfd->sections; s != (asection *) NULL; s = s->next)
     {
       if (s->lineno_count)
 	{
 	  asymbol **q = abfd->outsymbols;
 	  if (bfd_seek (abfd, s->line_filepos, SEEK_SET) != 0)
-	    return FALSE;
+	    return false;
 	  /* Find all the linenumbers in this section.  */
 	  while (*q)
 	    {
@@ -1484,18 +1547,16 @@ coff_write_linenumbers (bfd *abfd)
 		      out.l_lnno = 0;
 		      out.l_addr.l_symndx = l->u.offset;
 		      bfd_coff_swap_lineno_out (abfd, &out, buff);
-		      if (bfd_bwrite (buff, (bfd_size_type) linesz, abfd)
-			  != linesz)
-			return FALSE;
+		      if (bfd_write (buff, linesz, abfd) != linesz)
+			return false;
 		      l++;
 		      while (l->line_number)
 			{
 			  out.l_lnno = l->line_number;
 			  out.l_addr.l_symndx = l->u.offset;
 			  bfd_coff_swap_lineno_out (abfd, &out, buff);
-			  if (bfd_bwrite (buff, (bfd_size_type) linesz, abfd)
-			      != linesz)
-			    return FALSE;
+			  if (bfd_write (buff, linesz, abfd) != linesz)
+			    return false;
 			  l++;
 			}
 		    }
@@ -1505,7 +1566,7 @@ coff_write_linenumbers (bfd *abfd)
 	}
     }
   bfd_release (abfd, buff);
-  return TRUE;
+  return true;
 }
 
 alent *
@@ -1522,8 +1583,7 @@ coff_pointerize_aux (bfd *abfd,
 		     combined_entry_type *table_base,
 		     combined_entry_type *symbol,
 		     unsigned int indaux,
-		     combined_entry_type *auxent,
-		     combined_entry_type *table_end)
+		     combined_entry_type *auxent)
 {
   unsigned int type = symbol->u.syment.n_type;
   unsigned int n_sclass = symbol->u.syment.n_sclass;
@@ -1541,6 +1601,8 @@ coff_pointerize_aux (bfd *abfd,
     return;
   if (n_sclass == C_FILE)
     return;
+  if (n_sclass == C_DWARF)
+    return;
 
   BFD_ASSERT (! auxent->is_sym);
   /* Otherwise patch up.  */
@@ -1549,25 +1611,21 @@ coff_pointerize_aux (bfd *abfd,
 
   if ((ISFCN (type) || ISTAG (n_sclass) || n_sclass == C_BLOCK
        || n_sclass == C_FCN)
-      && auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.l > 0
-      && auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.l
-      < (long) obj_raw_syment_count (abfd)
-      && table_base + auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.l
-      < table_end)
+      && auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.u32 > 0
+      && (auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.u32
+	  < obj_raw_syment_count (abfd)))
     {
       auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.p =
-	table_base + auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.l;
+	table_base + auxent->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.u32;
       auxent->fix_end = 1;
     }
 
   /* A negative tagndx is meaningless, but the SCO 3.2v4 cc can
      generate one, so we must be careful to ignore it.  */
-  if ((unsigned long) auxent->u.auxent.x_sym.x_tagndx.l
-      < obj_raw_syment_count (abfd)
-      && table_base + auxent->u.auxent.x_sym.x_tagndx.l < table_end)
+  if (auxent->u.auxent.x_sym.x_tagndx.u32 < obj_raw_syment_count (abfd))
     {
       auxent->u.auxent.x_sym.x_tagndx.p =
-	table_base + auxent->u.auxent.x_sym.x_tagndx.l;
+	table_base + auxent->u.auxent.x_sym.x_tagndx.u32;
       auxent->fix_tag = 1;
     }
 }
@@ -1591,19 +1649,21 @@ 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 + 1, sec_size);
+  if (debug_section == NULL)
+    return NULL;
+  debug_section[sec_size] = 0;
+
+  if (bfd_seek (abfd, position, SEEK_SET) != 0)
     return NULL;
 
   * sect_return = sect;
@@ -1634,53 +1694,41 @@ copy_name (bfd *abfd, char *name, size_t
 
 /* Read in the external symbols.  */
 
-bfd_boolean
+bool
 _bfd_coff_get_external_symbols (bfd *abfd)
 {
-  bfd_size_type symesz;
-  bfd_size_type size;
+  size_t symesz;
+  size_t size;
   void * syms;
+  ufile_ptr filesize;
 
   if (obj_coff_external_syms (abfd) != NULL)
-    return TRUE;
+    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)))
-
+  if (_bfd_mul_overflow (obj_raw_syment_count (abfd), symesz, &size))
     {
-      _bfd_error_handler (_("%pB: corrupt symbol count: %#" PRIx64 ""),
-			  abfd, (uint64_t) obj_raw_syment_count (abfd));
-      return FALSE;
+      bfd_set_error (bfd_error_file_truncated);
+      return false;
     }
 
-  syms = bfd_malloc (size);
-  if (syms == NULL)
-    {
-      /* 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);
-      return FALSE;
-    }
+  if (size == 0)
+    return true;
 
-  if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
-      || bfd_bread (syms, size, abfd) != size)
+  filesize = bfd_get_file_size (abfd);
+  if (filesize != 0
+      && ((ufile_ptr) obj_sym_filepos (abfd) > filesize
+	  || size > filesize - obj_sym_filepos (abfd)))
     {
-      if (syms != NULL)
-	free (syms);
-      return FALSE;
+      bfd_set_error (bfd_error_file_truncated);
+      return false;
     }
 
+  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
@@ -1695,7 +1743,10 @@ _bfd_coff_read_string_table (bfd *abfd)
   char extstrsize[STRING_SIZE_SIZE];
   bfd_size_type strsize;
   char *strings;
-  file_ptr pos;
+  ufile_ptr pos;
+  ufile_ptr filesize;
+  size_t symesz;
+  size_t size;
 
   if (obj_coff_strings (abfd) != NULL)
     return obj_coff_strings (abfd);
@@ -1706,13 +1757,19 @@ _bfd_coff_read_string_table (bfd *abfd)
       return NULL;
     }
 
+  symesz = bfd_coff_symesz (abfd);
   pos = obj_sym_filepos (abfd);
-  pos += obj_raw_syment_count (abfd) * bfd_coff_symesz (abfd);
-  if (bfd_seek (abfd, pos, SEEK_SET) != 0)
+  if (_bfd_mul_overflow (obj_raw_syment_count (abfd), symesz, &size)
+      || pos + size < pos)
+    {
+      bfd_set_error (bfd_error_file_truncated);
+      return NULL;
+    }
+
+  if (bfd_seek (abfd, pos + size, SEEK_SET) != 0)
     return NULL;
 
-  if (bfd_bread (extstrsize, (bfd_size_type) sizeof extstrsize, abfd)
-      != sizeof extstrsize)
+  if (bfd_read (extstrsize, sizeof extstrsize, abfd) != sizeof extstrsize)
     {
       if (bfd_get_error () != bfd_error_file_truncated)
 	return NULL;
@@ -1729,7 +1786,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 */
@@ -1748,7 +1807,7 @@ _bfd_coff_read_string_table (bfd *abfd)
      they are zero.  */
   memset (strings, 0, STRING_SIZE_SIZE);
 
-  if (bfd_bread (strings + STRING_SIZE_SIZE, strsize - STRING_SIZE_SIZE, abfd)
+  if (bfd_read (strings + STRING_SIZE_SIZE, strsize - STRING_SIZE_SIZE, abfd)
       != strsize - STRING_SIZE_SIZE)
     {
       free (strings);
@@ -1764,11 +1823,11 @@ _bfd_coff_read_string_table (bfd *abfd)
 
 /* Free up the external symbols and strings read from a COFF file.  */
 
-bfd_boolean
+bool
 _bfd_coff_free_symbols (bfd *abfd)
 {
   if (! bfd_family_coff (abfd))
-    return FALSE;
+    return false;
 
   if (obj_coff_external_syms (abfd) != NULL
       && ! obj_coff_keep_syms (abfd))
@@ -1785,7 +1844,7 @@ _bfd_coff_free_symbols (bfd *abfd)
       obj_coff_strings_len (abfd) = 0;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read a symbol table into freshly bfd_allocated memory, swap it, and
@@ -1798,8 +1857,6 @@ coff_get_normalized_symtab (bfd *abfd)
 {
   combined_entry_type *internal;
   combined_entry_type *internal_ptr;
-  combined_entry_type *symbol_ptr;
-  combined_entry_type *internal_end;
   size_t symesz;
   char *raw_src;
   char *raw_end;
@@ -1822,13 +1879,12 @@ coff_get_normalized_symtab (bfd *abfd)
   internal = (combined_entry_type *) bfd_zalloc (abfd, size);
   if (internal == NULL && size != 0)
     return NULL;
-  internal_end = internal + obj_raw_syment_count (abfd);
 
   raw_src = (char *) obj_coff_external_syms (abfd);
 
   /* Mark the end of the symbols.  */
   symesz = bfd_coff_symesz (abfd);
-  raw_end = (char *) raw_src + obj_raw_syment_count (abfd) * symesz;
+  raw_end = PTR_ADD (raw_src, obj_raw_syment_count (abfd) * symesz);
 
   /* FIXME SOMEDAY.  A string table size of zero is very weird, but
      probably possible.  If one shows up, it will probably kill us.  */
@@ -1842,55 +1898,38 @@ coff_get_normalized_symtab (bfd *abfd)
 
       bfd_coff_swap_sym_in (abfd, (void *) raw_src,
 			    (void *) & internal_ptr->u.syment);
-      symbol_ptr = internal_ptr;
-      internal_ptr->is_sym = TRUE;
+      internal_ptr->is_sym = true;
+      combined_entry_type *sym = internal_ptr;
 
-      for (i = 0;
-	   i < symbol_ptr->u.syment.n_numaux;
-	   i++)
+      /* PR 17512: Prevent buffer overrun.  */
+      if (sym->u.syment.n_numaux > ((raw_end - 1) - raw_src) / symesz)
+	return NULL;
+
+      for (i = 0; i < sym->u.syment.n_numaux; i++)
 	{
 	  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,
-				(int) i, symbol_ptr->u.syment.n_numaux,
+				sym->u.syment.n_type,
+				sym->u.syment.n_sclass,
+				(int) i, sym->u.syment.n_numaux,
 				&(internal_ptr->u.auxent));
 
-	  internal_ptr->is_sym = FALSE;
-	  coff_pointerize_aux (abfd, internal, symbol_ptr, i,
-			       internal_ptr, internal_end);
+	  internal_ptr->is_sym = false;
+	  coff_pointerize_aux (abfd, internal, sym, i, internal_ptr);
 	}
-    }
-
-  /* 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;
 
-  for (internal_ptr = internal; internal_ptr < internal_end;
-       internal_ptr++)
-    {
-      BFD_ASSERT (internal_ptr->is_sym);
-
-      if (internal_ptr->u.syment.n_sclass == C_FILE
-	  && internal_ptr->u.syment.n_numaux > 0)
+      if (sym->u.syment.n_sclass == C_FILE
+	  && sym->u.syment.n_numaux > 0)
 	{
-	  combined_entry_type * aux = internal_ptr + 1;
+	  combined_entry_type * aux = sym + 1;
 
 	  /* Make a file symbol point to the name in the auxent, since
 	     the text ".file" is redundant.  */
 	  BFD_ASSERT (! aux->is_sym);
 
-	  if (aux->u.auxent.x_file.x_n.x_zeroes == 0)
+	  if (aux->u.auxent.x_file.x_n.x_n.x_zeroes == 0)
 	    {
 	      /* The filename is a long one, point into the string table.  */
 	      if (string_table == NULL)
@@ -1900,57 +1939,98 @@ coff_get_normalized_symtab (bfd *abfd)
 		    return NULL;
 		}
 
-	      if ((bfd_size_type)(aux->u.auxent.x_file.x_n.x_offset)
+	      if ((bfd_size_type) aux->u.auxent.x_file.x_n.x_n.x_offset
 		  >= obj_coff_strings_len (abfd))
-		internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) _("<corrupt>");
+		sym->u.syment._n._n_n._n_offset =
+		  (uintptr_t) bfd_symbol_error_name;
 	      else
-		internal_ptr->u.syment._n._n_n._n_offset =
-		  (bfd_hostptr_t) (string_table + (aux->u.auxent.x_file.x_n.x_offset));
+		sym->u.syment._n._n_n._n_offset =
+		  (uintptr_t) (string_table
+			       + aux->u.auxent.x_file.x_n.x_n.x_offset);
 	    }
 	  else
 	    {
 	      /* Ordinary short filename, put into memory anyway.  The
 		 Microsoft PE tools sometimes store a filename in
 		 multiple AUX entries.  */
-	      if (internal_ptr->u.syment.n_numaux > 1
-		  && coff_data (abfd)->pe)
-		internal_ptr->u.syment._n._n_n._n_offset =
-		  (bfd_hostptr_t)
-		  copy_name (abfd,
-			     aux->u.auxent.x_file.x_fname,
-			     internal_ptr->u.syment.n_numaux * symesz);
+	      size_t len;
+	      char *src;
+	      if (sym->u.syment.n_numaux > 1 && obj_pe (abfd))
+		{
+		  len = sym->u.syment.n_numaux * symesz;
+		  src = raw_src - (len - symesz);
+		}
 	      else
-		internal_ptr->u.syment._n._n_n._n_offset =
-		  ((bfd_hostptr_t)
-		   copy_name (abfd,
-			      aux->u.auxent.x_file.x_fname,
-			      (size_t) bfd_coff_filnmlen (abfd)));
+		{
+		  len = bfd_coff_filnmlen (abfd);
+		  src = aux->u.auxent.x_file.x_n.x_fname;
+		}
+	      sym->u.syment._n._n_n._n_offset =
+		(uintptr_t) copy_name (abfd, src, len);
 	    }
+
+	  /* Normalize other strings available in C_FILE aux entries.  */
+	  if (!obj_pe (abfd))
+	    for (int numaux = 1;
+		 numaux < sym->u.syment.n_numaux;
+		 numaux++)
+	      {
+		aux = sym + numaux + 1;
+		BFD_ASSERT (! aux->is_sym);
+
+		if (aux->u.auxent.x_file.x_n.x_n.x_zeroes == 0)
+		  {
+		    /* The string information is a long one, point
+		       into the string table.  */
+		    if (string_table == NULL)
+		      {
+			string_table = _bfd_coff_read_string_table (abfd);
+			if (string_table == NULL)
+			  return NULL;
+		      }
+
+		    if ((bfd_size_type) aux->u.auxent.x_file.x_n.x_n.x_offset
+			>= obj_coff_strings_len (abfd))
+		      aux->u.auxent.x_file.x_n.x_n.x_offset =
+			(uintptr_t) bfd_symbol_error_name;
+		    else
+		      aux->u.auxent.x_file.x_n.x_n.x_offset =
+			(uintptr_t) (string_table
+				     + aux->u.auxent.x_file.x_n.x_n.x_offset);
+		  }
+		else
+		  aux->u.auxent.x_file.x_n.x_n.x_offset =
+		    ((uintptr_t)
+		     copy_name (abfd,
+				aux->u.auxent.x_file.x_n.x_fname,
+				bfd_coff_filnmlen (abfd)));
+	      }
+
 	}
       else
 	{
-	  if (internal_ptr->u.syment._n._n_n._n_zeroes != 0)
+	  if (sym->u.syment._n._n_n._n_zeroes != 0)
 	    {
 	      /* This is a "short" name.  Make it long.  */
-	      size_t i;
 	      char *newstring;
 
 	      /* Find the length of this string without walking into memory
 		 that isn't ours.  */
-	      for (i = 0; i < 8; ++i)
-		if (internal_ptr->u.syment._n._n_name[i] == '\0')
+	      for (i = 0; i < SYMNMLEN; ++i)
+		if (sym->u.syment._n._n_name[i] == '\0')
 		  break;
 
-	      newstring = (char *) bfd_zalloc (abfd, (bfd_size_type) (i + 1));
+	      newstring = bfd_alloc (abfd, i + 1);
 	      if (newstring == NULL)
 		return NULL;
-	      strncpy (newstring, internal_ptr->u.syment._n._n_name, i);
-	      internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) newstring;
-	      internal_ptr->u.syment._n._n_n._n_zeroes = 0;
-	    }
-	  else if (internal_ptr->u.syment._n._n_n._n_offset == 0)
-	    internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) "";
-	  else if (!bfd_coff_symname_in_debug (abfd, &internal_ptr->u.syment))
+	      memcpy (newstring, sym->u.syment._n._n_name, i);
+	      newstring[i] = 0;
+	      sym->u.syment._n._n_n._n_offset = (uintptr_t) newstring;
+	      sym->u.syment._n._n_n._n_zeroes = 0;
+	    }
+	  else if (sym->u.syment._n._n_n._n_offset == 0)
+	    sym->u.syment._n._n_n._n_offset = (uintptr_t) "";
+	  else if (!bfd_coff_symname_in_debug (abfd, &sym->u.syment))
 	    {
 	      /* Long name already.  Point symbol at the string in the
 		 table.  */
@@ -1960,41 +2040,47 @@ coff_get_normalized_symtab (bfd *abfd)
 		  if (string_table == NULL)
 		    return NULL;
 		}
-	      if (internal_ptr->u.syment._n._n_n._n_offset >= obj_coff_strings_len (abfd)
-		  || string_table + internal_ptr->u.syment._n._n_n._n_offset < string_table)
-		internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) _("<corrupt>");
+	      if (sym->u.syment._n._n_n._n_offset >= obj_coff_strings_len (abfd))
+		sym->u.syment._n._n_n._n_offset =
+		  (uintptr_t) bfd_symbol_error_name;
 	      else
-		internal_ptr->u.syment._n._n_n._n_offset =
-		  ((bfd_hostptr_t)
-		   (string_table
-		    + internal_ptr->u.syment._n._n_n._n_offset));
+		sym->u.syment._n._n_n._n_offset =
+		  (uintptr_t) (string_table
+			       + sym->u.syment._n._n_n._n_offset);
 	    }
 	  else
 	    {
 	      /* Long name in debug section.  Very similar.  */
 	      if (debug_sec_data == NULL)
-		debug_sec_data = build_debug_section (abfd, & debug_sec);
-	      if (debug_sec_data != NULL)
 		{
-		  BFD_ASSERT (debug_sec != NULL);
-		  /* PR binutils/17512: Catch out of range offsets into the debug data.  */
-		  if (internal_ptr->u.syment._n._n_n._n_offset > debug_sec->size
-		      || debug_sec_data + internal_ptr->u.syment._n._n_n._n_offset < debug_sec_data)
-		    internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) _("<corrupt>");
-		  else
-		    internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t)
-		      (debug_sec_data + internal_ptr->u.syment._n._n_n._n_offset);
+		  debug_sec_data = build_debug_section (abfd, &debug_sec);
+		  if (debug_sec_data == NULL)
+		    return NULL;
 		}
+	      /* PR binutils/17512: Catch out of range offsets into
+		 the debug data.  */
+	      if (sym->u.syment._n._n_n._n_offset >= debug_sec->size)
+		sym->u.syment._n._n_n._n_offset =
+		  (uintptr_t) bfd_symbol_error_name;
 	      else
-		internal_ptr->u.syment._n._n_n._n_offset = (bfd_hostptr_t) "";
+		sym->u.syment._n._n_n._n_offset =
+		  (uintptr_t) (debug_sec_data
+			       + sym->u.syment._n._n_n._n_offset);
 	    }
 	}
-      internal_ptr += internal_ptr->u.syment.n_numaux;
+    }
+
+  /* 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;
     }
 
   obj_raw_syments (abfd) = internal;
   BFD_ASSERT (obj_raw_syment_count (abfd)
-	      == (unsigned int) (internal_ptr - internal));
+	      == (size_t) (internal_ptr - internal));
 
   return internal;
 }
@@ -2002,25 +2088,31 @@ coff_get_normalized_symtab (bfd *abfd)
 long
 coff_get_reloc_upper_bound (bfd *abfd, sec_ptr asect)
 {
-  if (bfd_get_format (abfd) != bfd_object)
+  size_t count, raw;
+
+  count = asect->reloc_count;
+  if (count >= LONG_MAX / sizeof (arelent *)
+      || _bfd_mul_overflow (count, bfd_coff_relsz (abfd), &raw))
     {
-      bfd_set_error (bfd_error_invalid_operation);
+      bfd_set_error (bfd_error_file_too_big);
       return -1;
     }
-#if SIZEOF_LONG == SIZEOF_INT
-  if (asect->reloc_count >= LONG_MAX / sizeof (arelent *))
+  if (!bfd_write_p (abfd))
     {
-      bfd_set_error (bfd_error_file_too_big);
-      return -1;
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && raw > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
     }
-#endif
-  return (asect->reloc_count + 1) * sizeof (arelent *);
+  return (count + 1) * sizeof (arelent *);
 }
 
 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)
@@ -2028,7 +2120,7 @@ coff_make_empty_symbol (bfd *abfd)
   new_symbol->symbol.section = 0;
   new_symbol->native = NULL;
   new_symbol->lineno = NULL;
-  new_symbol->done_lineno = FALSE;
+  new_symbol->done_lineno = false;
   new_symbol->symbol.the_bfd = abfd;
 
   return & new_symbol->symbol;
@@ -2037,11 +2129,9 @@ coff_make_empty_symbol (bfd *abfd)
 /* Make a debugging symbol.  */
 
 asymbol *
-coff_bfd_make_debug_symbol (bfd *abfd,
-			    void * ptr ATTRIBUTE_UNUSED,
-			    unsigned long sz ATTRIBUTE_UNUSED)
+coff_bfd_make_debug_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_alloc (abfd, amt);
 
   if (new_symbol == NULL)
@@ -2052,11 +2142,11 @@ coff_bfd_make_debug_symbol (bfd *abfd,
   new_symbol->native = (combined_entry_type *) bfd_zalloc (abfd, amt);
   if (!new_symbol->native)
     return NULL;
-  new_symbol->native->is_sym = TRUE;
+  new_symbol->native->is_sym = true;
   new_symbol->symbol.section = bfd_abs_section_ptr;
   new_symbol->symbol.flags = BSF_DEBUGGING;
   new_symbol->lineno = NULL;
-  new_symbol->done_lineno = FALSE;
+  new_symbol->done_lineno = false;
   new_symbol->symbol.the_bfd = abfd;
 
   return & new_symbol->symbol;
@@ -2070,8 +2160,10 @@ coff_get_symbol_info (bfd *abfd, asymbol
   if (coffsymbol (symbol)->native != NULL
       && coffsymbol (symbol)->native->fix_value
       && coffsymbol (symbol)->native->is_sym)
-    ret->value = coffsymbol (symbol)->native->u.syment.n_value -
-      (bfd_hostptr_t) obj_raw_syments (abfd);
+    ret->value
+      = (((uintptr_t) coffsymbol (symbol)->native->u.syment.n_value
+	  - (uintptr_t) obj_raw_syments (abfd))
+	 / sizeof (combined_entry_type));
 }
 
 /* Print out information about COFF symbol.  */
@@ -2083,11 +2175,13 @@ coff_print_symbol (bfd *abfd,
 		   bfd_print_symbol_type how)
 {
   FILE * file = (FILE *) filep;
+  const char *symname = (symbol->name != bfd_symbol_error_name
+			 ? symbol->name : _("<corrupt>"));
 
   switch (how)
     {
     case bfd_print_symbol_name:
-      fprintf (file, "%s", symbol->name);
+      fprintf (file, "%s", symname);
       break;
 
     case bfd_print_symbol_more:
@@ -2111,7 +2205,7 @@ coff_print_symbol (bfd *abfd,
 	  if (combined < obj_raw_syments (abfd)
 	      || combined >= obj_raw_syments (abfd) + obj_raw_syment_count (abfd))
 	    {
-	      fprintf (file, _("<corrupt info> %s"), symbol->name);
+	      fprintf (file, _("<corrupt info> %s"), symname);
 	      break;
 	    }
 
@@ -2119,16 +2213,17 @@ coff_print_symbol (bfd *abfd,
 	  if (! combined->fix_value)
 	    val = (bfd_vma) combined->u.syment.n_value;
 	  else
-	    val = combined->u.syment.n_value - (bfd_hostptr_t) root;
+	    val = (((uintptr_t) combined->u.syment.n_value - (uintptr_t) root)
+		   / sizeof (combined_entry_type));
 
-	  fprintf (file, "(sec %2d)(fl 0x%02x)(ty %3x)(scl %3d) (nx %d) 0x",
+	  fprintf (file, "(sec %2d)(fl 0x%02x)(ty %4x)(scl %3d) (nx %d) 0x",
 		   combined->u.syment.n_scnum,
 		   combined->u.syment.n_flags,
 		   combined->u.syment.n_type,
 		   combined->u.syment.n_sclass,
 		   combined->u.syment.n_numaux);
 	  bfd_fprintf_vma (abfd, file, val);
-	  fprintf (file, " %s", symbol->name);
+	  fprintf (file, " %s", symname);
 
 	  for (aux = 0; aux < combined->u.syment.n_numaux; aux++)
 	    {
@@ -2139,7 +2234,7 @@ coff_print_symbol (bfd *abfd,
 	      if (auxp->fix_tag)
 		tagndx = auxp->u.auxent.x_sym.x_tagndx.p - root;
 	      else
-		tagndx = auxp->u.auxent.x_sym.x_tagndx.l;
+		tagndx = auxp->u.auxent.x_sym.x_tagndx.u32;
 
 	      fprintf (file, "\n");
 
@@ -2150,6 +2245,18 @@ coff_print_symbol (bfd *abfd,
 		{
 		case C_FILE:
 		  fprintf (file, "File ");
+		  /* Add additional information if this isn't the filename
+		     auxiliary entry.  */
+		  if (auxp->u.auxent.x_file.x_ftype)
+		    fprintf (file, "ftype %d fname \"%s\"",
+			     auxp->u.auxent.x_file.x_ftype,
+			     (char *) auxp->u.auxent.x_file.x_n.x_n.x_offset);
+		  break;
+
+		case C_DWARF:
+		  fprintf (file, "AUX scnlen %#" PRIx64 " nreloc %" PRId64,
+			   auxp->u.auxent.x_sect.x_scnlen,
+			   auxp->u.auxent.x_sect.x_nreloc);
 		  break;
 
 		case C_STAT:
@@ -2163,7 +2270,7 @@ coff_print_symbol (bfd *abfd,
 		      if (auxp->u.auxent.x_scn.x_checksum != 0
 			  || auxp->u.auxent.x_scn.x_associated != 0
 			  || auxp->u.auxent.x_scn.x_comdat != 0)
-			fprintf (file, " checksum 0x%lx assoc %d comdat %d",
+			fprintf (file, " checksum 0x%x assoc %d comdat %d",
 				 auxp->u.auxent.x_scn.x_checksum,
 				 auxp->u.auxent.x_scn.x_associated,
 				 auxp->u.auxent.x_scn.x_comdat);
@@ -2180,7 +2287,7 @@ coff_print_symbol (bfd *abfd,
 			next = (auxp->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.p
 			       - root);
 		      else
-			next = auxp->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.l;
+			next = auxp->u.auxent.x_sym.x_fcnary.x_fcn.x_endndx.u32;
 		      llnos = auxp->u.auxent.x_sym.x_fcnary.x_fcn.x_lnnoptr;
 		      fprintf (file,
 			       "AUX tagndx %ld ttlsiz 0x%lx lnnos %ld next %ld",
@@ -2206,7 +2313,9 @@ coff_print_symbol (bfd *abfd,
 
 	  if (l)
 	    {
-	      fprintf (file, "\n%s :", l->u.sym->name);
+	      fprintf (file, "\n%s :",
+		       l->u.sym->name != bfd_symbol_error_name
+		       ? l->u.sym->name : _("<corrupt>"));
 	      l++;
 	      while (l->line_number)
 		{
@@ -2226,7 +2335,7 @@ coff_print_symbol (bfd *abfd,
 		   symbol->section->name,
 		   coffsymbol (symbol)->native ? "n" : "g",
 		   coffsymbol (symbol)->lineno ? "l" : " ",
-		   symbol->name);
+		   symname);
 	}
     }
 }
@@ -2236,7 +2345,7 @@ coff_print_symbol (bfd *abfd,
    function for the is_local_label_name entry point, but some may
    override it.  */
 
-bfd_boolean
+bool
 _bfd_coff_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 			       const char *name)
 {
@@ -2247,7 +2356,7 @@ _bfd_coff_is_local_label_name (bfd *abfd
    section, calculate and return the name of the source file and the line
    nearest to the wanted location.  */
 
-bfd_boolean
+bool
 coff_find_nearest_line_with_names (bfd *abfd,
 				   asymbol **symbols,
 				   asection *section,
@@ -2257,7 +2366,7 @@ coff_find_nearest_line_with_names (bfd *
 				   unsigned int *line_ptr,
 				   const struct dwarf_debug_section *debug_sections)
 {
-  bfd_boolean found;
+  bool found;
   unsigned int i;
   unsigned int line_base;
   coff_data_type *cof = coff_data (abfd);
@@ -2266,7 +2375,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.  */
@@ -2274,17 +2383,17 @@ coff_find_nearest_line_with_names (bfd *
 					     &found, filename_ptr,
 					     functionname_ptr, line_ptr,
 					     &coff_data(abfd)->line_info))
-    return FALSE;
+    return false;
 
   if (found)
-    return TRUE;
+    return true;
 
   /* Also try examining DWARF2 debugging information.  */
   if (_bfd_dwarf2_find_nearest_line (abfd, symbols, NULL, section, offset,
 				     filename_ptr, functionname_ptr,
 				     line_ptr, NULL, debug_sections,
 				     &coff_data(abfd)->dwarf2_find_line_info))
-    return TRUE;
+    return true;
 
   sec_data = coff_section_data (abfd, section);
 
@@ -2305,7 +2414,7 @@ coff_find_nearest_line_with_names (bfd *
 	}
 
       if (sec_data != NULL && sec_data->saved_bias)
-	bias = sec_data->saved_bias;
+	bias = sec_data->bias;
       else if (symbols)
 	{
 	  bias = _bfd_dwarf2_find_symbol_bias (symbols,
@@ -2313,7 +2422,7 @@ coff_find_nearest_line_with_names (bfd *
 
 	  if (sec_data)
 	    {
-	      sec_data->saved_bias = TRUE;
+	      sec_data->saved_bias = true;
 	      sec_data->bias = bias;
 	    }
 	}
@@ -2324,7 +2433,7 @@ coff_find_nearest_line_with_names (bfd *
 					    filename_ptr, functionname_ptr,
 					    line_ptr, NULL, debug_sections,
 					    &coff_data(abfd)->dwarf2_find_line_info))
-	return TRUE;
+	return true;
     }
 
   *filename_ptr = 0;
@@ -2333,15 +2442,15 @@ coff_find_nearest_line_with_names (bfd *
 
   /* Don't try and find line numbers in a non coff file.  */
   if (!bfd_family_coff (abfd))
-    return FALSE;
+    return false;
 
   if (cof == NULL)
-    return FALSE;
+    return false;
 
   /* Find the first C_FILE symbol.  */
   p = cof->raw_syments;
   if (!p)
-    return FALSE;
+    return false;
 
   pend = p + cof->raw_syment_count;
   while (p < pend)
@@ -2418,7 +2527,7 @@ coff_find_nearest_line_with_names (bfd *
     {
       *functionname_ptr = NULL;
       *line_ptr = 0;
-      return TRUE;
+      return true;
     }
 
   /* Now wander though the raw linenumbers of the section.
@@ -2464,11 +2573,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);
@@ -2518,10 +2631,10 @@ coff_find_nearest_line_with_names (bfd *
       sec_data->line_base = line_base;
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 coff_find_nearest_line (bfd *abfd,
 			asymbol **symbols,
 			asection *section,
@@ -2538,13 +2651,13 @@ coff_find_nearest_line (bfd *abfd,
 					    line_ptr, dwarf_debug_sections);
 }
 
-bfd_boolean
+bool
 coff_find_inliner_info (bfd *abfd,
 			const char **filename_ptr,
 			const char **functionname_ptr,
 			unsigned int *line_ptr)
 {
-  bfd_boolean found;
+  bool found;
 
   found = _bfd_dwarf2_find_inliner_info (abfd, filename_ptr,
 					 functionname_ptr, line_ptr,
@@ -2568,7 +2681,7 @@ coff_sizeof_headers (bfd *abfd, struct b
 
 /* Change the class of a coff symbol held by BFD.  */
 
-bfd_boolean
+bool
 bfd_coff_set_symbol_class (bfd *	 abfd,
 			   asymbol *	 symbol,
 			   unsigned int	 symbol_class)
@@ -2579,7 +2692,7 @@ bfd_coff_set_symbol_class (bfd *	 abfd,
   if (csym == NULL)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
   else if (csym->native == NULL)
     {
@@ -2589,13 +2702,13 @@ 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)
-	return FALSE;
+	return false;
 
-      native->is_sym = TRUE;
+      native->is_sym = true;
       native->u.syment.n_type   = T_NULL;
       native->u.syment.n_sclass = symbol_class;
 
@@ -2628,10 +2741,10 @@ bfd_coff_set_symbol_class (bfd *	 abfd,
   else
     csym->native->u.syment.n_sclass = symbol_class;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_coff_section_already_linked (bfd *abfd,
 				  asection *sec,
 				  struct bfd_link_info *info)
@@ -2643,15 +2756,15 @@ _bfd_coff_section_already_linked (bfd *a
   struct coff_comdat_info *s_comdat;
 
   if (sec->output_section == bfd_abs_section_ptr)
-    return FALSE;
+    return false;
 
   flags = sec->flags;
   if ((flags & SEC_LINK_ONCE) == 0)
-    return FALSE;
+    return false;
 
   /* The COFF backend linker doesn't support group sections.  */
   if ((flags & SEC_GROUP) != 0)
-    return FALSE;
+    return false;
 
   name = bfd_section_name (sec);
   s_comdat = bfd_coff_get_comdat_section (abfd, sec);
@@ -2660,7 +2773,7 @@ _bfd_coff_section_already_linked (bfd *a
     key = s_comdat->name;
   else
     {
-      if (CONST_STRNEQ (name, ".gnu.linkonce.")
+      if (startswith (name, ".gnu.linkonce.")
 	  && (key = strchr (name + sizeof (".gnu.linkonce.") - 1, '.')) != NULL)
 	key++;
       else
@@ -2671,6 +2784,8 @@ _bfd_coff_section_already_linked (bfd *a
     }
 
   already_linked_list = bfd_section_already_linked_table_lookup (key);
+  if (!already_linked_list)
+    goto bad;
 
   for (l = already_linked_list->entry; l != NULL; l = l->next)
     {
@@ -2687,7 +2802,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.  */
@@ -2697,13 +2813,16 @@ _bfd_coff_section_already_linked (bfd *a
 
   /* This is the first section with this name.  Record it.  */
   if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
-    info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
-  return FALSE;
+    {
+    bad:
+      info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
+    }
+  return false;
 }
 
 /* Initialize COOKIE for input bfd ABFD. */
 
-static bfd_boolean
+static bool
 init_reloc_cookie (struct coff_reloc_cookie *cookie,
 		   struct bfd_link_info *info ATTRIBUTE_UNUSED,
 		   bfd *abfd)
@@ -2716,7 +2835,7 @@ init_reloc_cookie (struct coff_reloc_coo
 
   cookie->symbols = obj_symbols (abfd);
 
-  return TRUE;
+  return true;
 }
 
 /* Free the memory allocated by init_reloc_cookie, if appropriate.  */
@@ -2731,7 +2850,7 @@ fini_reloc_cookie (struct coff_reloc_coo
 /* Initialize the relocation information in COOKIE for input section SEC
    of input bfd ABFD.  */
 
-static bfd_boolean
+static bool
 init_reloc_cookie_rels (struct coff_reloc_cookie *cookie,
 			struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			bfd *abfd,
@@ -2742,17 +2861,18 @@ init_reloc_cookie_rels (struct coff_relo
       cookie->rels = NULL;
       cookie->relend = NULL;
       cookie->rel = NULL;
-      return TRUE;
+      return true;
     }
 
-  cookie->rels = _bfd_coff_read_internal_relocs (abfd, sec, FALSE, NULL, 0, NULL);
+  cookie->rels = _bfd_coff_read_internal_relocs (abfd, sec, false, NULL,
+						 0, NULL);
 
   if (cookie->rels == NULL)
-    return FALSE;
+    return false;
 
   cookie->rel = cookie->rels;
   cookie->relend = (cookie->rels + sec->reloc_count);
-  return TRUE;
+  return true;
 }
 
 /* Free the memory allocated by init_reloc_cookie_rels,
@@ -2774,20 +2894,20 @@ fini_reloc_cookie_rels (struct coff_relo
 
 /* Initialize the whole of COOKIE for input section SEC.  */
 
-static bfd_boolean
+static bool
 init_reloc_cookie_for_section (struct coff_reloc_cookie *cookie,
 			       struct bfd_link_info *info,
 			       asection *sec)
 {
   if (!init_reloc_cookie (cookie, info, sec->owner))
-    return FALSE;
+    return false;
 
   if (!init_reloc_cookie_rels (cookie, info, sec->owner, sec))
     {
       fini_reloc_cookie (cookie, sec->owner);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Free the memory allocated by init_reloc_cookie_for_section,
@@ -2826,8 +2946,8 @@ _bfd_coff_gc_mark_hook (asection *sec,
 		 record indicating that if the weak symbol is not resolved,
 		 another external symbol is used instead.  */
 	      struct coff_link_hash_entry *h2 =
-		h->auxbfd->tdata.coff_obj_data->sym_hashes[
-		    h->aux->x_sym.x_tagndx.l];
+		h->auxbfd->tdata.coff_obj_data->sym_hashes
+		[h->aux->x_sym.x_tagndx.u32];
 
 	      if (h2 && h2->root.type != bfd_link_hash_undefined)
 		return  h2->root.u.def.section;
@@ -2870,14 +2990,14 @@ _bfd_coff_gc_mark_rsec (struct bfd_link_
 			    + obj_convert (sec->owner)[cookie->rel->r_symndx])->native->u.syment);
 }
 
-static bfd_boolean _bfd_coff_gc_mark
+static bool _bfd_coff_gc_mark
   (struct bfd_link_info *, asection *, coff_gc_mark_hook_fn);
 
 /* COOKIE->rel describes a relocation against section SEC, which is
    a section we've decided to keep.  Mark the section that contains
    the relocation symbol.  */
 
-static bfd_boolean
+static bool
 _bfd_coff_gc_mark_reloc (struct bfd_link_info *info,
 			 asection *sec,
 			 coff_gc_mark_hook_fn gc_mark_hook,
@@ -2891,21 +3011,21 @@ _bfd_coff_gc_mark_reloc (struct bfd_link
       if (bfd_get_flavour (rsec->owner) != bfd_target_coff_flavour)
 	rsec->gc_mark = 1;
       else if (!_bfd_coff_gc_mark (info, rsec, gc_mark_hook))
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* The mark phase of garbage collection.  For a given section, mark
    it and any sections in this section's group, and all the sections
    which define symbols to which it refers.  */
 
-static bfd_boolean
+static bool
 _bfd_coff_gc_mark (struct bfd_link_info *info,
 		   asection *sec,
 		   coff_gc_mark_hook_fn gc_mark_hook)
 {
-  bfd_boolean ret = TRUE;
+  bool ret = true;
 
   sec->gc_mark = 1;
 
@@ -2916,14 +3036,14 @@ _bfd_coff_gc_mark (struct bfd_link_info
       struct coff_reloc_cookie cookie;
 
       if (!init_reloc_cookie_for_section (&cookie, info, sec))
-	ret = FALSE;
+	ret = false;
       else
 	{
 	  for (; cookie.rel < cookie.relend; cookie.rel++)
 	    {
 	      if (!_bfd_coff_gc_mark_reloc (info, sec, gc_mark_hook, &cookie))
 		{
-		  ret = FALSE;
+		  ret = false;
 		  break;
 		}
 	    }
@@ -2934,7 +3054,7 @@ _bfd_coff_gc_mark (struct bfd_link_info
   return ret;
 }
 
-static bfd_boolean
+static bool
 _bfd_coff_gc_mark_extra_sections (struct bfd_link_info *info,
 				  coff_gc_mark_hook_fn mark_hook ATTRIBUTE_UNUSED)
 {
@@ -2943,20 +3063,20 @@ _bfd_coff_gc_mark_extra_sections (struct
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
     {
       asection *isec;
-      bfd_boolean some_kept;
+      bool some_kept;
 
       if (bfd_get_flavour (ibfd) != bfd_target_coff_flavour)
 	continue;
 
       /* Ensure all linker created sections are kept, and see whether
 	 any other section is already marked.  */
-      some_kept = FALSE;
+      some_kept = false;
       for (isec = ibfd->sections; isec != NULL; isec = isec->next)
 	{
 	  if ((isec->flags & SEC_LINKER_CREATED) != 0)
 	    isec->gc_mark = 1;
 	  else if (isec->gc_mark)
-	    some_kept = TRUE;
+	    some_kept = true;
 	}
 
       /* If no section in this file will be kept, then we can
@@ -2971,12 +3091,12 @@ _bfd_coff_gc_mark_extra_sections (struct
 	    || (isec->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
 	  isec->gc_mark = 1;
     }
-  return TRUE;
+  return true;
 }
 
 /* Sweep symbols in swept sections.  Called via coff_link_hash_traverse.  */
 
-static bfd_boolean
+static bool
 coff_gc_sweep_symbol (struct coff_link_hash_entry *h,
 		      void *data ATTRIBUTE_UNUSED)
 {
@@ -2993,15 +3113,28 @@ coff_gc_sweep_symbol (struct coff_link_h
       h->symbol_class = C_HIDDEN;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* The sweep phase of garbage collection.  Remove all garbage sections.  */
 
-typedef bfd_boolean (*gc_sweep_hook_fn)
+typedef bool (*gc_sweep_hook_fn)
   (bfd *, struct bfd_link_info *, asection *, const struct internal_reloc *);
 
-static bfd_boolean
+static inline bool
+is_subsection (const char *str, const char *prefix)
+{
+  size_t n = strlen (prefix);
+  if (strncmp (str, prefix, n) != 0)
+    return false;
+  if (str[n] == 0)
+    return true;
+  else if (str[n] != '$')
+    return false;
+  return ISDIGIT (str[n + 1]) && str[n + 2] == 0;
+}
+
+static bool
 coff_gc_sweep (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
 {
   bfd *sub;
@@ -3019,10 +3152,11 @@ coff_gc_sweep (bfd *abfd ATTRIBUTE_UNUSE
 	  if ((o->flags & (SEC_DEBUGGING | SEC_LINKER_CREATED)) != 0
 	      || (o->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) == 0)
 	    o->gc_mark = 1;
-	  else if (CONST_STRNEQ (o->name, ".idata")
-		   || CONST_STRNEQ (o->name, ".pdata")
-		   || CONST_STRNEQ (o->name, ".xdata")
-		   || CONST_STRNEQ (o->name, ".rsrc"))
+	  else if (startswith (o->name, ".idata")
+		   || startswith (o->name, ".pdata")
+		   || startswith (o->name, ".xdata")
+		   || is_subsection (o->name, ".didat")
+		   || startswith (o->name, ".rsrc"))
 	    o->gc_mark = 1;
 
 	  if (o->gc_mark)
@@ -3050,13 +3184,13 @@ coff_gc_sweep (bfd *abfd ATTRIBUTE_UNUSE
 	      && !bfd_is_abs_section (o->output_section))
 	    {
 	      struct internal_reloc *internal_relocs;
-	      bfd_boolean r;
+	      bool r;
 
 	      internal_relocs
 		= _bfd_coff_link_read_relocs (o->owner, o, NULL, NULL,
 					     info->keep_memory);
 	      if (internal_relocs == NULL)
-		return FALSE;
+		return false;
 
 	      r = (*gc_sweep_hook) (o->owner, info, o, internal_relocs);
 
@@ -3064,7 +3198,7 @@ coff_gc_sweep (bfd *abfd ATTRIBUTE_UNUSE
 		free (internal_relocs);
 
 	      if (!r)
-		return FALSE;
+		return false;
 	    }
 #endif
 	}
@@ -3075,7 +3209,7 @@ coff_gc_sweep (bfd *abfd ATTRIBUTE_UNUSE
   coff_link_hash_traverse (coff_hash_table (info), coff_gc_sweep_symbol,
 			   NULL);
 
-  return TRUE;
+  return true;
 }
 
 /* Keep all sections containing symbols undefined on the command-line,
@@ -3091,7 +3225,7 @@ _bfd_coff_gc_keep (struct bfd_link_info
       struct coff_link_hash_entry *h;
 
       h = coff_link_hash_lookup (coff_hash_table (info), sym->name,
-				FALSE, FALSE, FALSE);
+				false, false, false);
 
       if (h != NULL
 	  && (h->root.type == bfd_link_hash_defined
@@ -3103,7 +3237,7 @@ _bfd_coff_gc_keep (struct bfd_link_info
 
 /* Do mark and sweep of unused sections.  */
 
-bfd_boolean
+bool
 bfd_coff_gc_sections (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
 {
   bfd *sub;
@@ -3116,7 +3250,7 @@ bfd_coff_gc_sections (bfd *abfd ATTRIBUT
       || !is_coff_hash_table (info->hash))
     {
       _bfd_error_handler(_("warning: gc-sections option ignored"));
-      return TRUE;
+      return true;
     }
 #endif
 
@@ -3133,13 +3267,13 @@ bfd_coff_gc_sections (bfd *abfd ATTRIBUT
       for (o = sub->sections; o != NULL; o = o->next)
 	{
 	  if (((o->flags & (SEC_EXCLUDE | SEC_KEEP)) == SEC_KEEP
-	       || CONST_STRNEQ (o->name, ".vectors")
-	       || CONST_STRNEQ (o->name, ".ctors")
-	       || CONST_STRNEQ (o->name, ".dtors"))
+	       || startswith (o->name, ".vectors")
+	       || startswith (o->name, ".ctors")
+	       || startswith (o->name, ".dtors"))
 	      && !o->gc_mark)
 	    {
 	      if (!_bfd_coff_gc_mark (info, o, _bfd_coff_gc_mark_hook))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -3161,3 +3295,54 @@ bfd_coff_group_name (bfd *abfd, const as
     return ci->name;
   return NULL;
 }
+
+bool
+_bfd_coff_free_cached_info (bfd *abfd)
+{
+  struct coff_tdata *tdata;
+
+  if (bfd_family_coff (abfd)
+      && (bfd_get_format (abfd) == bfd_object
+	  || bfd_get_format (abfd) == bfd_core)
+      && (tdata = coff_data (abfd)) != NULL)
+    {
+      if (tdata->section_by_index)
+	{
+	  htab_delete (tdata->section_by_index);
+	  tdata->section_by_index = NULL;
+	}
+
+      if (tdata->section_by_target_index)
+	{
+	  htab_delete (tdata->section_by_target_index);
+	  tdata->section_by_target_index = NULL;
+	}
+
+      if (obj_pe (abfd) && pe_data (abfd)->comdat_hash)
+	{
+	  htab_delete (pe_data (abfd)->comdat_hash);
+	  pe_data (abfd)->comdat_hash = NULL;
+	}
+
+      _bfd_dwarf2_cleanup_debug_info (abfd, &tdata->dwarf2_find_line_info);
+      _bfd_stab_cleanup (abfd, &tdata->line_info);
+
+      /* 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.  */
+      _bfd_coff_free_symbols (abfd);
+
+      /* Free raw syms, and any other data bfd_alloc'd after raw syms
+	 are read.  */
+      if (!obj_coff_keep_raw_syms (abfd) && obj_raw_syments (abfd))
+	{
+	  bfd_release (abfd, obj_raw_syments (abfd));
+	  obj_raw_syments (abfd) = NULL;
+	  obj_symbols (abfd) = NULL;
+	  obj_convert (abfd) = NULL;
+	}
+    }
+
+  return _bfd_generic_bfd_free_cached_info (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.20200303/bfd/coff-go32.c ./bfd/coff-go32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-go32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-go32.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by DJ Delorie.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -22,14 +22,21 @@
 #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
 
 #define COFF_SECTION_ALIGNMENT_ENTRIES \
-{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".data"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
-{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".text"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".const"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".rodata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".bss"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.d"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
@@ -37,9 +44,147 @@
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.r"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.b"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
 { 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).  */
+bool _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"
+
+bool
+_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;
+
+  bfd_coff_long_section_names (abfd)
+    = coff_backend_info (abfd)->_bfd_coff_long_section_names;
+
+  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.20200303/bfd/coff-i386.c ./bfd/coff-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-i386.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-i386.c	2026-03-05 02:07:20.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-2025 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
@@ -113,14 +109,14 @@ coff_i386_reloc (bfd *abfd,
 	  reloc_howto_type *howto = reloc_entry->howto;
 
 	  /* Although PC relative relocations are very similar between
-	     PE and non-PE formats, but they are off by 1 << howto->size
+	     PE and non-PE formats, but they are off by howto->size
 	     bytes. For the external relocation, PE is very different
 	     from others. See md_apply_fix3 () in gas/config/tc-i386.c.
 	     When we link PE and non-PE object files together to
 	     generate a non-PE executable, we have to compensate it
 	     here.  */
 	  if (howto->pc_relative && howto->pcrel_offset)
-	    diff = -(1 << howto->size);
+	    diff = -bfd_get_reloc_size (howto);
 	  else if (symbol->flags & BSF_WEAK)
 	    diff = reloc_entry->addend - symbol->value;
 	  else
@@ -152,9 +148,9 @@ coff_i386_reloc (bfd *abfd,
       if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
 	return bfd_reloc_outofrange;
 
-      switch (howto->size)
+      switch (bfd_get_reloc_size (howto))
 	{
-	case 0:
+	case 1:
 	  {
 	    char x = bfd_get_8 (abfd, addr);
 	    DOIT (x);
@@ -162,7 +158,7 @@ coff_i386_reloc (bfd *abfd,
 	  }
 	  break;
 
-	case 1:
+	case 2:
 	  {
 	    short x = bfd_get_16 (abfd, addr);
 	    DOIT (x);
@@ -170,7 +166,7 @@ coff_i386_reloc (bfd *abfd,
 	  }
 	  break;
 
-	case 2:
+	case 4:
 	  {
 	    long x = bfd_get_32 (abfd, addr);
 	    DOIT (x);
@@ -191,16 +187,18 @@ coff_i386_reloc (bfd *abfd,
 /* 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)
+static bool
+in_reloc_p (bfd *abfd ATTRIBUTE_UNUSED, reloc_howto_type *howto)
 {
-  return ! howto->pc_relative && howto->type != R_IMAGEBASE
-	 && howto->type != R_SECREL32;
+  return ! howto->pc_relative
+    && howto->type != R_IMAGEBASE
+    && howto->type != R_SECREL32
+    && howto->type != R_SECTION;
 }
 #endif /* COFF_WITH_PE */
 
 #ifndef PCRELOFFSET
-#define PCRELOFFSET FALSE
+#define PCRELOFFSET false
 #endif
 
 static reloc_howto_type howto_table[] =
@@ -213,50 +211,64 @@ static reloc_howto_type howto_table[] =
   EMPTY_HOWTO (5),
   HOWTO (R_DIR32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "dir32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   /* PE IMAGE_REL_I386_DIR32NB relocation (7).	*/
   HOWTO (R_IMAGEBASE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "rva32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   EMPTY_HOWTO (010),
   EMPTY_HOWTO (011),
-  EMPTY_HOWTO (012),
 #ifdef COFF_WITH_PE
+  /* 16-bit word section relocation (012).  */
+  HOWTO (R_SECTION,		/* type */
+	 0,			/* rightshift */
+	 2,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 coff_i386_reloc,	/* special_function */
+	 "secidx",		/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 true),			/* pcrel_offset */
   /* 32-bit longword section relative relocation (013).  */
   HOWTO (R_SECREL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "secrel32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 #else
+  EMPTY_HOWTO (012),
   EMPTY_HOWTO (013),
 #endif
   EMPTY_HOWTO (014),
@@ -265,84 +277,84 @@ static reloc_howto_type howto_table[] =
   /* Byte relocation (017).  */
   HOWTO (R_RELBYTE,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "8",			/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* 16-bit word relocation (020).  */
   HOWTO (R_RELWORD,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "16",			/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* 32-bit longword relocation (021).	*/
   HOWTO (R_RELLONG,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "32",			/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* Byte PC relative relocation (022).	 */
   HOWTO (R_PCRBYTE,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "DISP8",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* 16-bit word PC relative relocation (023).	*/
   HOWTO (R_PCRWORD,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "DISP16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* 32-bit longword PC relative relocation (024).  */
   HOWTO (R_PCRLONG,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_i386_reloc,	/* special_function */
 	 "DISP32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET)		/* pcrel_offset */
@@ -393,7 +405,8 @@ static reloc_howto_type howto_table[] =
       cache_ptr->addend = - coffsym->native->u.syment.n_value;	\
     else if (ptr && bfd_asymbol_bfd (ptr) == abfd		\
 	     && ptr->section != (asection *) NULL)		\
-      cache_ptr->addend = - (ptr->section->vma + ptr->value);	\
+      cache_ptr->addend = - (ptr->section->vma			\
+			     + COFF_PE_ADDEND_BIAS (ptr));	\
     else							\
       cache_ptr->addend = 0;					\
     if (ptr && reloc.r_type < NUM_HOWTOS			\
@@ -411,11 +424,11 @@ static reloc_howto_type howto_table[] =
 
 #else /* COFF_WITH_PE */
 
-/* The PE relocate section routine.  The only difference between this
-   and the regular routine is that we don't want to do anything for a
-   relocatable link.  */
+/* The PE relocate section routine.  We handle secidx relocations here,
+   as well as making sure that we don't do anything for a relocatable
+   link.  */
 
-static bfd_boolean
+static bool
 coff_pe_i386_relocate_section (bfd *output_bfd,
 			       struct bfd_link_info *info,
 			       bfd *input_bfd,
@@ -425,8 +438,77 @@ coff_pe_i386_relocate_section (bfd *outp
 			       struct internal_syment *syms,
 			       asection **sections)
 {
+  struct internal_reloc *rel;
+  struct internal_reloc *relend;
+
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
+
+  rel = relocs;
+  relend = rel + input_section->reloc_count;
+
+  for (; rel < relend; rel++)
+    {
+      long symndx;
+      struct coff_link_hash_entry *h;
+      asection *sec, *s;
+      uint16_t idx = 0, i = 1;
+
+      if (rel->r_type != R_SECTION)
+	continue;
+
+      /* Make sure that _bfd_coff_generic_relocate_section won't parse
+         this reloc after us.  */
+      rel->r_type = 0;
+
+      symndx = rel->r_symndx;
+
+      if (symndx < 0
+	  || (unsigned long) symndx >= obj_raw_syment_count (input_bfd))
+	continue;
+
+      h = obj_coff_sym_hashes (input_bfd)[symndx];
+
+      if (h == NULL)
+	sec = sections[symndx];
+      else
+	{
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      /* Defined weak symbols are a GNU extension.  */
+	      sec = h->root.u.def.section;
+	    }
+	  else
+	    {
+	      sec = NULL;
+	    }
+	}
+
+      if (!sec)
+	continue;
+
+      if (bfd_is_abs_section (sec))
+	continue;
+
+      if (discarded_section (sec))
+	continue;
+
+      s = output_bfd->sections;
+      while (s)
+	{
+	  if (s == sec->output_section)
+	    {
+	      idx = i;
+	      break;
+	    }
+
+	  i++;
+	  s = s->next;
+	}
+
+      bfd_putl16 (idx, contents + rel->r_vaddr - input_section->vma);
+    }
 
   return _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,
 					     input_section, contents,
@@ -577,6 +659,8 @@ coff_i386_reloc_type_lookup (bfd *abfd A
 #ifdef COFF_WITH_PE
     case BFD_RELOC_32_SECREL:
       return howto_table + R_SECREL32;
+    case BFD_RELOC_16_SECIDX:
+      return howto_table + R_SECTION;
 #endif
     default:
       BFD_FAIL ();
@@ -606,11 +690,11 @@ coff_i386_reloc_name_lookup (bfd *abfd A
    a leading dot for local labels, so if TARGET_UNDERSCORE is defined
    we treat all symbols starting with L as local.  */
 
-static bfd_boolean
+static bool
 coff_i386_is_local_label_name (bfd *abfd, const char *name)
 {
   if (name[0] == 'L')
-    return TRUE;
+    return true;
 
   return _bfd_coff_is_local_label_name (abfd, name);
 }
@@ -655,6 +739,7 @@ const bfd_target
   '/',				/* ar_pad_char */
   15,				/* ar_max_namelen */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
@@ -663,23 +748,93 @@ 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.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+
+  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 +843,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 +860,6 @@ const bfd_target
 
   NULL,
 
-  COFF_SWAP_TABLE
+  &bigobj_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.20200303/bfd/coff-ia64.c ./bfd/coff-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-ia64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-ia64.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by David Mosberger <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -19,6 +19,10 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
+#ifndef COFF_WITH_PE
+#error non-PE COFF unsupported
+#endif
+
 #include "sysdep.h"
 #include "bfd.h"
 #include "libbfd.h"
@@ -53,11 +57,11 @@ static reloc_howto_type howto_table[] =
 /* Return TRUE if this relocation should
    appear in the output .reloc section.  */
 
-static bfd_boolean
+static bool
 in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
 	    reloc_howto_type *howto ATTRIBUTE_UNUSED)
 {
-  return FALSE;			/* We don't do relocs for now...  */
+  return false;			/* We don't do relocs for now...  */
 }
 #endif
 
@@ -67,7 +71,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
@@ -76,9 +80,8 @@ ia64coff_object_p (bfd *abfd)
     struct external_PEI_IMAGE_hdr image_hdr;
     file_ptr offset;
 
-    if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-	|| (bfd_bread (&dos_hdr, (bfd_size_type) sizeof (dos_hdr), abfd)
-	    != sizeof (dos_hdr)))
+    if (bfd_seek (abfd, 0, SEEK_SET) != 0
+	|| (bfd_read (&dos_hdr, sizeof (dos_hdr), abfd) != sizeof (dos_hdr)))
       {
 	if (bfd_get_error () != bfd_error_system_call)
 	  bfd_set_error (bfd_error_wrong_format);
@@ -103,7 +106,7 @@ ia64coff_object_p (bfd *abfd)
 
     offset = H_GET_32 (abfd, dos_hdr.e_lfanew);
     if (bfd_seek (abfd, offset, SEEK_SET) != 0
-	|| (bfd_bread (&image_hdr, (bfd_size_type) sizeof (image_hdr), abfd)
+	|| (bfd_read (&image_hdr, sizeof (image_hdr), abfd)
 	    != sizeof (image_hdr)))
       {
 	if (bfd_get_error () != bfd_error_system_call)
@@ -170,6 +173,7 @@ const bfd_target
   '/',				/* ar_pad_char */
   15,				/* ar_max_namelen */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cofflink.c ./bfd/cofflink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cofflink.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cofflink.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* COFF specific linker code.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -27,13 +27,14 @@
 #include "libbfd.h"
 #include "coff/internal.h"
 #include "libcoff.h"
+#include "elf-bfd.h"
 #include "safe-ctype.h"
 
-static bfd_boolean coff_link_add_object_symbols (bfd *, struct bfd_link_info *);
-static bfd_boolean coff_link_check_archive_element
+static bool coff_link_add_object_symbols (bfd *, struct bfd_link_info *);
+static bool coff_link_check_archive_element
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *,
-   bfd_boolean *);
-static bfd_boolean coff_link_add_symbols (bfd *, struct bfd_link_info *);
+   bool *);
+static bool coff_link_add_symbols (bfd *, struct bfd_link_info *);
 
 /* Return TRUE if SYM is a weak, external symbol.  */
 #define IS_WEAK_EXTERNAL(abfd, sym)			\
@@ -89,9 +90,37 @@ _bfd_coff_link_hash_newfunc (struct bfd_
   return (struct bfd_hash_entry *) ret;
 }
 
+struct bfd_hash_entry *
+_decoration_hash_newfunc (struct bfd_hash_entry *entry,
+			  struct bfd_hash_table *table,
+			  const char *string)
+{
+  struct decoration_hash_entry *ret = (struct decoration_hash_entry *) entry;
+
+  /* Allocate the structure if it has not already been allocated by a
+     subclass.  */
+  if (ret == NULL)
+    {
+      ret = (struct decoration_hash_entry *)
+	    bfd_hash_allocate (table, sizeof (struct decoration_hash_entry));
+      if (ret == NULL)
+	return NULL;
+    }
+
+  /* Call the allocation method of the superclass.  */
+  ret = (struct decoration_hash_entry *)
+	_bfd_link_hash_newfunc ((struct bfd_hash_entry *) ret, table, string);
+  if (ret != NULL)
+    {
+      ret->decorated_link = NULL;
+    }
+
+  return (struct bfd_hash_entry *) ret;
+}
+
 /* Initialize a COFF linker hash table.  */
 
-bfd_boolean
+bool
 _bfd_coff_link_hash_table_init (struct coff_link_hash_table *table,
 				bfd *abfd,
 				struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
@@ -100,7 +129,11 @@ _bfd_coff_link_hash_table_init (struct c
 				unsigned int entsize)
 {
   memset (&table->stab_info, 0, sizeof (table->stab_info));
-  return _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize);
+
+  return bfd_hash_table_init (&table->decoration_hash,
+			      _decoration_hash_newfunc,
+			      sizeof (struct decoration_hash_entry))
+	 &&_bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize);
 }
 
 /* Create a COFF linker hash table.  */
@@ -109,7 +142,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)
@@ -159,7 +192,7 @@ _bfd_coff_debug_merge_hash_newfunc (stru
 /* Given a COFF BFD, add symbols to the global hash table as
    appropriate.  */
 
-bfd_boolean
+bool
 _bfd_coff_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   switch (bfd_get_format (abfd))
@@ -171,25 +204,25 @@ _bfd_coff_link_add_symbols (bfd *abfd, s
 	(abfd, info, coff_link_check_archive_element);
     default:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 }
 
 /* Add symbols from a COFF object file.  */
 
-static bfd_boolean
+static bool
 coff_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   if (! _bfd_coff_get_external_symbols (abfd))
-    return FALSE;
+    return false;
   if (! coff_link_add_symbols (abfd, info))
-    return FALSE;
+    return false;
 
   if (! info->keep_memory
       && ! _bfd_coff_free_symbols (abfd))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Check a single archive element to see if we need to include it in
@@ -197,44 +230,50 @@ coff_link_add_object_symbols (bfd *abfd,
    needed in the link or not.  This is called via
    _bfd_generic_link_add_archive_symbols.  */
 
-static bfd_boolean
+static bool
 coff_link_check_archive_element (bfd *abfd,
 				 struct bfd_link_info *info,
 				 struct bfd_link_hash_entry *h,
 				 const char *name,
-				 bfd_boolean *pneeded)
+				 bool *pneeded)
 {
-  *pneeded = FALSE;
+  *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;
+    return true;
 
-  /* PR 22369 - Skip non COFF objects in the archive.  */
-  if (! bfd_family_coff (abfd))
-    return TRUE;
+  /* 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?  */
   if (!(*info->callbacks->add_archive_element) (info, abfd, name, &abfd))
-    return TRUE;
-  *pneeded = TRUE;
+    return true;
+  *pneeded = true;
 
   return bfd_link_add_symbols (abfd, info);
 }
 
 /* Add all the symbols from an object file to the hash table.  */
 
-static bfd_boolean
+static bool
 coff_link_add_symbols (bfd *abfd,
 		       struct bfd_link_info *info)
 {
   unsigned int n_tmask = coff_data (abfd)->local_n_tmask;
   unsigned int n_btshft = coff_data (abfd)->local_n_btshft;
   unsigned int n_btmask = coff_data (abfd)->local_n_btmask;
-  bfd_boolean keep_syms;
-  bfd_boolean default_copy;
+  bool keep_syms;
+  bool default_copy;
   bfd_size_type symcount;
   struct coff_link_hash_entry **sym_hash;
   bfd_size_type symesz;
@@ -245,17 +284,17 @@ coff_link_add_symbols (bfd *abfd,
   symcount = obj_raw_syment_count (abfd);
 
   if (symcount == 0)
-    return TRUE;		/* Nothing to do.  */
+    return true;		/* Nothing to do.  */
 
   /* Keep the symbols during this function, in case the linker needs
      to read the generic symbols in order to report an error message.  */
   keep_syms = obj_coff_keep_syms (abfd);
-  obj_coff_keep_syms (abfd) = TRUE;
+  obj_coff_keep_syms (abfd) = true;
 
   if (info->keep_memory)
-    default_copy = FALSE;
+    default_copy = false;
   else
-    default_copy = TRUE;
+    default_copy = true;
 
   /* We keep a list of the linker hash table entries that correspond
      to particular symbols.  */
@@ -273,7 +312,7 @@ coff_link_add_symbols (bfd *abfd,
     {
       struct internal_syment sym;
       enum coff_symbol_classification classification;
-      bfd_boolean copy;
+      bool copy;
 
       bfd_coff_swap_sym_in (abfd, esym, &sym);
 
@@ -285,7 +324,8 @@ coff_link_add_symbols (bfd *abfd,
 	  flagword flags;
 	  asection *section;
 	  bfd_vma value;
-	  bfd_boolean addit;
+	  bool addit;
+	  bool discarded = false;
 
 	  /* This symbol is externally visible.  */
 
@@ -298,7 +338,7 @@ coff_link_add_symbols (bfd *abfd,
 	  copy = default_copy;
 	  if (sym._n._n_n._n_zeroes != 0
 	      || sym._n._n_n._n_offset == 0)
-	    copy = TRUE;
+	    copy = true;
 
 	  value = sym.n_value;
 
@@ -311,7 +351,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;
@@ -337,7 +380,7 @@ coff_link_add_symbols (bfd *abfd,
 	  if (IS_WEAK_EXTERNAL (abfd, sym))
 	    flags = BSF_WEAK;
 
-	  addit = TRUE;
+	  addit = true;
 
 	  /* In the PE format, section symbols actually refer to the
 	     start of the output section.  We handle them specially
@@ -345,7 +388,7 @@ coff_link_add_symbols (bfd *abfd,
 	  if (obj_pe (abfd) && (flags & BSF_SECTION_SYM) != 0)
 	    {
 	      *sym_hash = coff_link_hash_lookup (coff_hash_table (info),
-						 name, FALSE, copy, FALSE);
+						 name, false, copy, false);
 	      if (*sym_hash != NULL)
 		{
 		  if (((*sym_hash)->coff_link_hash_flags
@@ -356,7 +399,7 @@ coff_link_add_symbols (bfd *abfd,
 		      (_("warning: symbol `%s' is both section and non-section"),
 		       name);
 
-		  addit = FALSE;
+		  addit = false;
 		}
 	    }
 
@@ -387,27 +430,30 @@ coff_link_add_symbols (bfd *abfd,
 		  || classification == COFF_SYMBOL_PE_SECTION)
 	      && coff_section_data (abfd, section) != NULL
 	      && coff_section_data (abfd, section)->comdat != NULL
-	      && CONST_STRNEQ (name, "??_")
+	      && startswith (name, "??_")
 	      && strcmp (name, coff_section_data (abfd, section)->comdat->name) == 0)
 	    {
 	      if (*sym_hash == NULL)
 		*sym_hash = coff_link_hash_lookup (coff_hash_table (info),
-						   name, FALSE, copy, FALSE);
+						   name, false, copy, false);
 	      if (*sym_hash != NULL
 		  && (*sym_hash)->root.type == bfd_link_hash_defined
 		  && coff_section_data (abfd, (*sym_hash)->root.u.def.section)->comdat != NULL
 		  && strcmp (coff_section_data (abfd, (*sym_hash)->root.u.def.section)->comdat->name,
 			     coff_section_data (abfd, section)->comdat->name) == 0)
-		addit = FALSE;
+		addit = false;
 	    }
 
 	  if (addit)
 	    {
-	      if (! (bfd_coff_link_add_one_symbol
+	      if (! (_bfd_generic_link_add_one_symbol
 		     (info, abfd, name, flags, section, value,
-		      (const char *) NULL, copy, FALSE,
+		      (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)
@@ -533,7 +579,7 @@ coff_link_add_symbols (bfd *abfd,
 	  asection *stab;
 
 	  for (stab = abfd->sections; stab; stab = stab->next)
-	    if (CONST_STRNEQ (stab->name, ".stab")
+	    if (startswith (stab->name, ".stab")
 		&& (!stab->name[5]
 		    || (stab->name[5] == '.' && ISDIGIT (stab->name[6]))))
 	    {
@@ -563,23 +609,23 @@ coff_link_add_symbols (bfd *abfd,
 
   obj_coff_keep_syms (abfd) = keep_syms;
 
-  return TRUE;
+  return true;
 
  error_return:
   obj_coff_keep_syms (abfd) = keep_syms;
-  return FALSE;
+  return false;
 }
 
 /* Do the final link step.  */
 
-bfd_boolean
+bool
 _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;
-  bfd_boolean long_section_names;
+  bool debug_merge_allocated;
+  bool long_section_names;
   asection *o;
   struct bfd_link_order *p;
   bfd_size_type max_sym_count;
@@ -612,8 +658,8 @@ _bfd_coff_final_link (bfd *abfd,
   flaginfo.contents = NULL;
   flaginfo.external_relocs = NULL;
   flaginfo.internal_relocs = NULL;
-  flaginfo.global_to_static = FALSE;
-  debug_merge_allocated = FALSE;
+  flaginfo.global_to_static = false;
+  debug_merge_allocated = false;
 
   coff_data (abfd)->link_info = info;
 
@@ -623,7 +669,7 @@ _bfd_coff_final_link (bfd *abfd,
 
   if (! coff_debug_merge_hash_table_init (&flaginfo.debug_merge))
     goto error_return;
-  debug_merge_allocated = TRUE;
+  debug_merge_allocated = true;
 
   /* Compute the file positions for all the sections.  */
   if (! abfd->output_has_begun)
@@ -640,7 +686,7 @@ _bfd_coff_final_link (bfd *abfd,
   max_lineno_count = 0;
   max_reloc_count = 0;
 
-  long_section_names = FALSE;
+  long_section_names = false;
   for (o = abfd->sections; o != NULL; o = o->next)
     {
       o->reloc_count = 0;
@@ -657,7 +703,7 @@ _bfd_coff_final_link (bfd *abfd,
 		 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;
+	      sec->linker_mark = true;
 
 	      if (info->strip == strip_none
 		  || info->strip == strip_some)
@@ -689,7 +735,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;
 	}
 
@@ -701,10 +747,10 @@ _bfd_coff_final_link (bfd *abfd,
 	     coff_write_object_contents which puts the string index
 	     into the s_name field of the section header.  That is why
 	     we pass hash as FALSE.  */
-	  if (_bfd_stringtab_add (flaginfo.strtab, o->name, FALSE, FALSE)
+	  if (_bfd_stringtab_add (flaginfo.strtab, o->name, false, false)
 	      == (bfd_size_type) -1)
 	    goto error_return;
-	  long_section_names = TRUE;
+	  long_section_names = true;
 	}
     }
 
@@ -791,7 +837,7 @@ _bfd_coff_final_link (bfd *abfd,
     {
       size_t sz;
 
-      sub->output_has_begun = FALSE;
+      sub->output_has_begun = false;
       sz = bfd_family_coff (sub) ? obj_raw_syment_count (sub) : 2;
       if (sz > max_sym_count)
 	max_sym_count = sz;
@@ -852,7 +898,7 @@ _bfd_coff_final_link (bfd *abfd,
 		{
 		  if (! _bfd_coff_link_input_bfd (&flaginfo, sub))
 		    goto error_return;
-		  sub->output_has_begun = TRUE;
+		  sub->output_has_begun = true;
 		}
 	    }
 	  else if (p->type == bfd_section_reloc_link_order
@@ -883,23 +929,59 @@ _bfd_coff_final_link (bfd *abfd,
 	      asymbol *sym = bfd_get_outsymbols (sub) [i];
 	      file_ptr pos;
 	      struct internal_syment isym;
-	      union internal_auxent iaux;
-	      bfd_size_type string_size = 0, indx;
 	      bfd_vma written = 0;
-	      bfd_boolean rewrite = FALSE, hash;
+	      bool rewrite = false;
 
-	      if (! (sym->flags & BSF_LOCAL)
-		  || (sym->flags & (BSF_SECTION_SYM | BSF_DEBUGGING_RELOC
-				    | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC
-				    | BSF_SYNTHETIC))
+	      if ((sym->flags & (BSF_SECTION_SYM | BSF_DEBUGGING_RELOC
+				 | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC
+				 | BSF_SYNTHETIC))
 		  || ((sym->flags & BSF_DEBUGGING)
 		      && ! (sym->flags & BSF_FILE)))
 		continue;
 
+	      if (! (sym->flags & BSF_LOCAL))
+		{
+		  /* For ELF symbols try to represent their function-ness and
+		     size, if available.  */
+		  if (! (sym->flags & BSF_FUNCTION))
+		    continue;
+
+		  const elf_symbol_type *elfsym = elf_symbol_from (sym);
+		  if (!elfsym)
+		    continue;
+
+		  struct coff_link_hash_entry *hent
+		    = (struct coff_link_hash_entry *) bfd_hash_lookup
+			(&info->hash->table, bfd_asymbol_name (sym),
+			 false, false);
+		  if (!hent)
+		    continue;
+
+		  /* coff_data (abfd)->local_n_btshft is what ought to be used
+		     here, just that it's set only when reading in COFF
+		     objects.  */
+		  hent->type = DT_FCN << 4;
+		  if (!elfsym->internal_elf_sym.st_size)
+		    continue;
+
+		  hent->aux = bfd_zalloc (abfd, sizeof (*hent->aux));
+		  if (!hent->aux)
+		    continue;
+
+		  hent->numaux = 1;
+		  hent->aux->x_sym.x_misc.x_fsize
+		    = elfsym->internal_elf_sym.st_size;
+		  /* FIXME ->x_sym.x_fcnary.x_fcn.x_endndx would better
+		     also be set, yet that would likely need to happen
+		     elsewhere anyway.  */
+
+		  continue;
+		}
+
 	      /* See if we are discarding symbols with this name.  */
 	      if ((flaginfo.info->strip == strip_some
 		   && (bfd_hash_lookup (flaginfo.info->keep_hash,
-					bfd_asymbol_name(sym), FALSE, FALSE)
+					bfd_asymbol_name(sym), false, false)
 		       == NULL))
 		  || (((flaginfo.info->discard == discard_sec_merge
 			&& (bfd_asymbol_section (sym)->flags & SEC_MERGE)
@@ -912,54 +994,12 @@ _bfd_coff_final_link (bfd *abfd,
 					     * symesz;
 	      if (bfd_seek (abfd, pos, SEEK_SET) != 0)
 		goto error_return;
-	      if (! coff_write_alien_symbol(abfd, sym, &isym, &iaux, &written,
-					    &string_size, NULL, NULL))
+	      if (! coff_write_alien_symbol(abfd, sym, &isym, &written,
+					    flaginfo.strtab,
+					    !flaginfo.info->traditional_format,
+					    NULL, NULL))
 		goto error_return;
 
-	      hash = !flaginfo.info->traditional_format;
-
-	      if (string_size >= 6 && isym.n_sclass == C_FILE
-		  && ! isym._n._n_n._n_zeroes && isym.n_numaux)
-		{
-		  indx = _bfd_stringtab_add (flaginfo.strtab, ".file", hash,
-					     FALSE);
-		  if (indx == (bfd_size_type) -1)
-		    goto error_return;
-		  isym._n._n_n._n_offset = STRING_SIZE_SIZE + indx;
-		  bfd_coff_swap_sym_out (abfd, &isym, flaginfo.outsyms);
-		  if (bfd_seek (abfd, pos, SEEK_SET) != 0
-		      || bfd_bwrite (flaginfo.outsyms, symesz,
-				     abfd) != symesz)
-		    goto error_return;
-		  string_size -= 6;
-		}
-
-	      if (string_size)
-		{
-		  indx = _bfd_stringtab_add (flaginfo.strtab,
-					     bfd_asymbol_name (sym), hash,
-					     FALSE);
-		  if (indx == (bfd_size_type) -1)
-		    goto error_return;
-		  if (isym.n_sclass != C_FILE)
-		    {
-		      isym._n._n_n._n_offset = STRING_SIZE_SIZE + indx;
-		      bfd_coff_swap_sym_out (abfd, &isym, flaginfo.outsyms);
-		      rewrite = TRUE;
-		    }
-		  else
-		    {
-		      BFD_ASSERT (isym.n_numaux == 1);
-		      iaux.x_file.x_n.x_offset = STRING_SIZE_SIZE + indx;
-		      bfd_coff_swap_aux_out (abfd, &iaux, isym.n_type, C_FILE,
-					     0, 1, flaginfo.outsyms + symesz);
-		      if (bfd_seek (abfd, pos + symesz, SEEK_SET) != 0
-			  || bfd_bwrite (flaginfo.outsyms + symesz, symesz,
-					 abfd) != symesz)
-			goto error_return;
-		    }
-		}
-
 	      if (isym.n_sclass == C_FILE)
 		{
 		  if (flaginfo.last_file_index != -1)
@@ -969,7 +1009,7 @@ _bfd_coff_final_link (bfd *abfd,
 					     flaginfo.outsyms);
 		      pos = obj_sym_filepos (abfd) + flaginfo.last_file_index
 						     * symesz;
-		      rewrite = TRUE;
+		      rewrite = true;
 		    }
 		  flaginfo.last_file_index = obj_raw_syment_count (abfd);
 		  flaginfo.last_file = isym;
@@ -977,7 +1017,7 @@ _bfd_coff_final_link (bfd *abfd,
 
 	      if (rewrite
 		  && (bfd_seek (abfd, pos, SEEK_SET) != 0
-		      || bfd_bwrite (flaginfo.outsyms, symesz, abfd) != symesz))
+		      || bfd_write (flaginfo.outsyms, symesz, abfd) != symesz))
 		goto error_return;
 
 	      obj_raw_syment_count (abfd) += written;
@@ -991,43 +1031,22 @@ _bfd_coff_final_link (bfd *abfd,
   /* Free up the buffers used by _bfd_coff_link_input_bfd.  */
 
   coff_debug_merge_hash_table_free (&flaginfo.debug_merge);
-  debug_merge_allocated = FALSE;
+  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
@@ -1043,8 +1062,8 @@ _bfd_coff_final_link (bfd *abfd,
 
       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;
+	  || bfd_write (flaginfo.outsyms, symesz, abfd) != symesz)
+	return false;
     }
 
   /* If doing task linking (ld --task-link) then make a pass through the
@@ -1052,7 +1071,7 @@ _bfd_coff_final_link (bfd *abfd,
      static.  */
   if (info->task_link)
     {
-      flaginfo.failed = FALSE;
+      flaginfo.failed = false;
       coff_link_hash_traverse (coff_hash_table (info),
 			       _bfd_coff_write_task_globals, &flaginfo);
       if (flaginfo.failed)
@@ -1060,17 +1079,14 @@ _bfd_coff_final_link (bfd *abfd,
     }
 
   /* Write out the global symbols.  */
-  flaginfo.failed = FALSE;
+  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;
-    }
+  free (flaginfo.outsyms);
+  flaginfo.outsyms = NULL;
 
   if (bfd_link_relocatable (info) && max_output_reloc_count > 0)
     {
@@ -1108,7 +1124,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
@@ -1119,13 +1135,13 @@ _bfd_coff_final_link (bfd *abfd,
 	      memset (&incount, 0, sizeof (incount));
 	      incount.r_vaddr = o->reloc_count + 1;
 	      bfd_coff_swap_reloc_out (abfd, &incount, excount);
-	      if (bfd_bwrite (excount, relsz, abfd) != relsz)
+	      if (bfd_write (excount, relsz, abfd) != relsz)
 		/* We'll leak, but it's an error anyway. */
 		goto error_return;
 	      free (excount);
 	    }
-	  if (bfd_bwrite (external_relocs,
-			  (bfd_size_type) relsz * o->reloc_count, abfd)
+	  if (bfd_write (external_relocs,
+			 (bfd_size_type) relsz * o->reloc_count, abfd)
 	      != (bfd_size_type) relsz * o->reloc_count)
 	    goto error_return;
 	}
@@ -1141,10 +1157,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;
@@ -1154,7 +1168,7 @@ _bfd_coff_final_link (bfd *abfd,
   if (coff_hash_table (info)->stab_info.stabstr != NULL)
     {
       if (! _bfd_write_stab_strings (abfd, &coff_hash_table (info)->stab_info))
-	return FALSE;
+	return false;
     }
 
   /* Write out the string table.  */
@@ -1164,7 +1178,7 @@ _bfd_coff_final_link (bfd *abfd,
 
       pos = obj_sym_filepos (abfd) + obj_raw_syment_count (abfd) * symesz;
       if (bfd_seek (abfd, pos, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
 #if STRING_SIZE_SIZE == 4
       H_PUT_32 (abfd,
@@ -1174,14 +1188,13 @@ _bfd_coff_final_link (bfd *abfd,
  #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_write (strbuf, STRING_SIZE_SIZE, abfd) != STRING_SIZE_SIZE)
+	return false;
 
       if (! _bfd_stringtab_emit (abfd, flaginfo.strtab))
-	return FALSE;
+	return false;
 
-      obj_coff_strings_written (abfd) = TRUE;
+      obj_coff_strings_written (abfd) = true;
     }
 
   _bfd_stringtab_free (flaginfo.strtab);
@@ -1190,7 +1203,7 @@ _bfd_coff_final_link (bfd *abfd,
      not try to write out the symbols.  */
   abfd->symcount = 0;
 
-  return TRUE;
+  return true;
 
  error_return:
   if (debug_merge_allocated)
@@ -1203,32 +1216,21 @@ _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);
-  return FALSE;
+  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;
 }
 
 /* Parse out a -heap <reserved>,<commit> line.  */
@@ -1236,7 +1238,7 @@ _bfd_coff_final_link (bfd *abfd,
 static char *
 dores_com (char *ptr, bfd *output_bfd, int heap)
 {
-  if (coff_data(output_bfd)->pe)
+  if (obj_pe (output_bfd))
     {
       int val = strtoul (ptr, &ptr, 0);
 
@@ -1281,13 +1283,12 @@ process_embedded_commands (bfd *output_b
   char *e;
   bfd_byte *copy;
 
-  if (!sec)
+  if (sec == NULL || (sec->flags & SEC_HAS_CONTENTS) == 0)
     return 1;
 
   if (!bfd_malloc_and_get_section (abfd, sec, &copy))
     {
-      if (copy != NULL)
-	free (copy);
+      free (copy);
       return 0;
     }
   e = (char *) copy + sec->size;
@@ -1299,7 +1300,7 @@ process_embedded_commands (bfd *output_b
 	  s++;
 	  continue;
 	}
-      if (CONST_STRNEQ (s, "-attr"))
+      if (startswith (s, "-attr"))
 	{
 	  char *name;
 	  char *attribs;
@@ -1339,14 +1340,14 @@ process_embedded_commands (bfd *output_b
 		asec->flags |= SEC_READONLY;
 	    }
 	}
-      else if (CONST_STRNEQ (s, "-heap"))
+      else if (startswith (s, "-heap"))
 	s = dores_com (s + 5, output_bfd, 1);
 
-      else if (CONST_STRNEQ (s, "-stack"))
+      else if (startswith (s, "-stack"))
 	s = dores_com (s + 6, output_bfd, 0);
 
       /* GNU extension for aligned commons.  */
-      else if (CONST_STRNEQ (s, "-aligncomm:"))
+      else if (startswith (s, "-aligncomm:"))
 	{
 	  /* Common symbols must be aligned on reading, as it
 	  is too late to do anything here, after they have
@@ -1389,7 +1390,7 @@ mark_relocs (struct coff_final_link_info
 
       /* Read in the relocs.  */
       internal_relocs = _bfd_coff_read_internal_relocs
-	(input_bfd, a, FALSE,
+	(input_bfd, a, false,
 	 flaginfo->external_relocs,
 	 bfd_link_relocatable (flaginfo->info),
 	 (bfd_link_relocatable (flaginfo->info)
@@ -1416,18 +1417,18 @@ mark_relocs (struct coff_final_link_info
 /* Link an input file into the linker output file.  This function
    handles all the sections and relocations of the input file at once.  */
 
-bfd_boolean
+bool
 _bfd_coff_link_input_bfd (struct coff_final_link_info *flaginfo, bfd *input_bfd)
 {
   unsigned int n_tmask = coff_data (input_bfd)->local_n_tmask;
   unsigned int n_btshft = coff_data (input_bfd)->local_n_btshft;
-  bfd_boolean (*adjust_symndx)
+  bool (*adjust_symndx)
     (bfd *, struct bfd_link_info *, bfd *, asection *,
-     struct internal_reloc *, bfd_boolean *);
+     struct internal_reloc *, bool *);
   bfd *output_bfd;
   const char *strings;
   bfd_size_type syment_base;
-  bfd_boolean copy, hash;
+  bool copy, hash;
   bfd_size_type isymesz;
   bfd_size_type osymesz;
   bfd_size_type linesz;
@@ -1451,15 +1452,15 @@ _bfd_coff_link_input_bfd (struct coff_fi
   linesz = bfd_coff_linesz (input_bfd);
   BFD_ASSERT (linesz == bfd_coff_linesz (output_bfd));
 
-  copy = FALSE;
+  copy = false;
   if (! flaginfo->info->keep_memory)
-    copy = TRUE;
-  hash = TRUE;
+    copy = true;
+  hash = true;
   if (flaginfo->info->traditional_format)
-    hash = FALSE;
+    hash = false;
 
   if (! _bfd_coff_get_external_symbols (input_bfd))
-    return FALSE;
+    return false;
 
   esym = (bfd_byte *) obj_coff_external_syms (input_bfd);
   esym_end = esym + obj_raw_syment_count (input_bfd) * isymesz;
@@ -1469,9 +1470,9 @@ _bfd_coff_link_input_bfd (struct coff_fi
   output_index = syment_base;
   outsym = flaginfo->outsyms;
 
-  if (coff_data (output_bfd)->pe
+  if (obj_pe (output_bfd)
       && ! process_embedded_commands (output_bfd, flaginfo->info, input_bfd))
-    return FALSE;
+    return false;
 
   /* If we are going to perform relocations and also strip/discard some
      symbols then we must make sure that we do not strip/discard those
@@ -1490,9 +1491,9 @@ _bfd_coff_link_input_bfd (struct coff_fi
     {
       struct internal_syment isym;
       enum coff_symbol_classification classification;
-      bfd_boolean skip;
-      bfd_boolean global;
-      bfd_boolean dont_skip_symbol;
+      bool skip;
+      bool global;
+      bool dont_skip_symbol;
       int add;
 
       bfd_coff_swap_sym_in (input_bfd, esym, isymp);
@@ -1528,17 +1529,17 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	  && bfd_link_relocatable (flaginfo->info))
 	dont_skip_symbol = *indexp;
       else
-	dont_skip_symbol = FALSE;
+	dont_skip_symbol = false;
 
       *indexp = -1;
 
-      skip = FALSE;
-      global = FALSE;
+      skip = false;
+      global = false;
       add = 1 + isym.n_numaux;
 
       /* If we are stripping all symbols, we want to skip this one.  */
       if (flaginfo->info->strip == strip_all && ! dont_skip_symbol)
-	skip = TRUE;
+	skip = true;
 
       if (! skip)
 	{
@@ -1553,22 +1554,22 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		 end of the symbol table, so skip them for now.
 		 Locally defined function symbols, however, are an
 		 exception, and are not moved to the end.  */
-	      global = TRUE;
+	      global = true;
 	      if (! ISFCN (isym.n_type))
-		skip = TRUE;
+		skip = true;
 	      break;
 
 	    case COFF_SYMBOL_UNDEFINED:
 	      /* Undefined symbols are left for the end.  */
-	      global = TRUE;
-	      skip = TRUE;
+	      global = true;
+	      skip = true;
 	      break;
 
 	    case COFF_SYMBOL_LOCAL:
 	      /* This is a local symbol.  Skip it if we are discarding
 		 local symbols.  */
 	      if (flaginfo->info->discard == discard_all && ! dont_skip_symbol)
-		skip = TRUE;
+		skip = true;
 	      break;
 	    }
 	}
@@ -1584,7 +1585,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	  && ((*secpp)->output_section == bfd_abs_section_ptr
 	      || bfd_section_removed_from_list (output_bfd,
 						(*secpp)->output_section)))
-	skip = TRUE;
+	skip = true;
 #endif
 
       /* If we stripping debugging symbols, and this is a debugging
@@ -1605,7 +1606,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		      || isym.n_sclass == C_REGPARM
 		      || isym.n_sclass == C_FIELD
 		      || isym.n_sclass == C_EOS))))
-	skip = TRUE;
+	skip = true;
 
       /* If some symbols are stripped based on the name, work out the
 	 name and decide whether to skip this symbol.  */
@@ -1618,16 +1619,16 @@ _bfd_coff_link_input_bfd (struct coff_fi
 
 	  name = _bfd_coff_internal_syment_name (input_bfd, &isym, buf);
 	  if (name == NULL)
-	    return FALSE;
+	    return false;
 
 	  if (! dont_skip_symbol
 	      && ((flaginfo->info->strip == strip_some
-		   && (bfd_hash_lookup (flaginfo->info->keep_hash, name, FALSE,
-				    FALSE) == NULL))
+		   && (bfd_hash_lookup (flaginfo->info->keep_hash, name, false,
+				    false) == NULL))
 		   || (! global
 		       && flaginfo->info->discard == discard_l
 		       && bfd_is_local_label_name (input_bfd, name))))
-	    skip = TRUE;
+	    skip = true;
 	}
 
       /* If this is an enum, struct, or union tag, see if we have
@@ -1647,23 +1648,24 @@ _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)
-	    return FALSE;
+	    return false;
 
 	  /* Ignore fake names invented by compiler; treat them all as
 	     the same name.  */
 	  if (*name == '~' || *name == '.' || *name == '$'
-	      || (*name == bfd_get_symbol_leading_char (input_bfd)
+	      || (*name
+		  && *name == bfd_get_symbol_leading_char (input_bfd)
 		  && (name[1] == '~' || name[1] == '.' || name[1] == '$')))
 	    name = "";
 
 	  mh = coff_debug_merge_hash_lookup (&flaginfo->debug_merge, name,
-					     TRUE, TRUE);
+					     true, true);
 	  if (mh == NULL)
-	    return FALSE;
+	    return false;
 
 	  /* Allocate memory to hold type information.  If this turns
 	     out to be a duplicate, we pass this address to
@@ -1671,7 +1673,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	  amt = sizeof (struct coff_debug_merge_type);
 	  mt = (struct coff_debug_merge_type *) bfd_alloc (input_bfd, amt);
 	  if (mt == NULL)
-	    return FALSE;
+	    return false;
 	  mt->type_class = isym.n_sclass;
 
 	  /* Pick up the aux entry, which points to the end of the tag
@@ -1686,7 +1688,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	  islp = isymp + 2;
 	  esl = esym + 2 * isymesz;
 	  eslend = ((bfd_byte *) obj_coff_external_syms (input_bfd)
-		    + aux.x_sym.x_fcnary.x_fcn.x_endndx.l * isymesz);
+		    + aux.x_sym.x_fcnary.x_fcn.x_endndx.u32 * isymesz);
 	  while (esl < eslend)
 	    {
 	      const char *elename;
@@ -1699,17 +1701,17 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	      *epp = (struct coff_debug_merge_element *)
 		  bfd_alloc (input_bfd, amt);
 	      if (*epp == NULL)
-		return FALSE;
+		return false;
 
 	      elename = _bfd_coff_internal_syment_name (input_bfd, islp,
 							elebuf);
 	      if (elename == NULL)
-		return FALSE;
+		return false;
 
 	      amt = strlen (elename) + 1;
 	      name_copy = (char *) bfd_alloc (input_bfd, amt);
 	      if (name_copy == NULL)
-		return FALSE;
+		return false;
 	      strcpy (name_copy, elename);
 
 	      (*epp)->name = name_copy;
@@ -1725,7 +1727,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		  bfd_coff_swap_aux_in (input_bfd, (esl + isymesz),
 					islp->n_type, islp->n_sclass, 0,
 					islp->n_numaux, &eleaux);
-		  indx = eleaux.x_sym.x_tagndx.l;
+		  indx = eleaux.x_sym.x_tagndx.u32;
 
 		  /* FIXME: If this tagndx entry refers to a symbol
 		     defined later in this file, we just ignore it.
@@ -1792,7 +1794,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		  bfd_release (input_bfd, mt);
 		  *indexp = mtl->indx;
 		  add = (eslend - esym) / isymesz;
-		  skip = TRUE;
+		  skip = true;
 		}
 	    }
 	}
@@ -1815,10 +1817,10 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		 anyhow.  */
 	      name = _bfd_coff_internal_syment_name (input_bfd, &isym, NULL);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      indx = _bfd_stringtab_add (flaginfo->strtab, name, hash, copy);
 	      if (indx == (bfd_size_type) -1)
-		return FALSE;
+		return false;
 	      isym._n._n_n._n_offset = STRING_SIZE_SIZE + indx;
 	    }
 
@@ -1914,8 +1916,8 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		      pos = obj_sym_filepos (output_bfd);
 		      pos += flaginfo->last_file_index * osymesz;
 		      if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-			  || bfd_bwrite (outsym, osymesz, output_bfd) != osymesz)
-			return FALSE;
+			  || bfd_write (outsym, osymesz, output_bfd) != osymesz)
+			return false;
 		    }
 		}
 
@@ -1947,7 +1949,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		  /* This can happen if there were errors earlier in
 		     the link.  */
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	      h->indx = output_index;
 	    }
@@ -2031,29 +2033,29 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		{
 		  /* If this is a long filename, we must put it in the
 		     string table.  */
-		  if (auxp->x_file.x_n.x_zeroes == 0
-		      && auxp->x_file.x_n.x_offset != 0)
+		  if (auxp->x_file.x_n.x_n.x_zeroes == 0
+		      && auxp->x_file.x_n.x_n.x_offset != 0)
 		    {
 		      const char *filename;
 		      bfd_size_type indx;
 
-		      BFD_ASSERT (auxp->x_file.x_n.x_offset
+		      BFD_ASSERT (auxp->x_file.x_n.x_n.x_offset
 				  >= STRING_SIZE_SIZE);
 		      if (strings == NULL)
 			{
 			  strings = _bfd_coff_read_string_table (input_bfd);
 			  if (strings == NULL)
-			    return FALSE;
+			    return false;
 			}
-		      if ((bfd_size_type) auxp->x_file.x_n.x_offset >= obj_coff_strings_len (input_bfd))
+		      if ((bfd_size_type) auxp->x_file.x_n.x_n.x_offset >= obj_coff_strings_len (input_bfd))
 			filename = _("<corrupt>");
 		      else
-			filename = strings + auxp->x_file.x_n.x_offset;
+			filename = strings + auxp->x_file.x_n.x_n.x_offset;
 		      indx = _bfd_stringtab_add (flaginfo->strtab, filename,
 						 hash, copy);
 		      if (indx == (bfd_size_type) -1)
-			return FALSE;
-		      auxp->x_file.x_n.x_offset = STRING_SIZE_SIZE + indx;
+			return false;
+		      auxp->x_file.x_n.x_n.x_offset = STRING_SIZE_SIZE + indx;
 		    }
 		}
 	      else if ((isymp->n_sclass != C_STAT || isymp->n_type != T_NULL)
@@ -2066,7 +2068,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		      || isymp->n_sclass == C_BLOCK
 		      || isymp->n_sclass == C_FCN)
 		    {
-		      indx = auxp->x_sym.x_fcnary.x_fcn.x_endndx.l;
+		      indx = auxp->x_sym.x_fcnary.x_fcn.x_endndx.u32;
 		      if (indx > 0
 			  && indx < obj_raw_syment_count (input_bfd))
 			{
@@ -2083,20 +2085,20 @@ _bfd_coff_link_input_bfd (struct coff_fi
 			    indx = output_index;
 			  else
 			    indx = flaginfo->sym_indices[indx];
-			  auxp->x_sym.x_fcnary.x_fcn.x_endndx.l = indx;
+			  auxp->x_sym.x_fcnary.x_fcn.x_endndx.u32 = indx;
 			}
 		    }
 
-		  indx = auxp->x_sym.x_tagndx.l;
+		  indx = auxp->x_sym.x_tagndx.u32;
 		  if (indx > 0 && indx < obj_raw_syment_count (input_bfd))
 		    {
 		      long symindx;
 
 		      symindx = flaginfo->sym_indices[indx];
 		      if (symindx < 0)
-			auxp->x_sym.x_tagndx.l = 0;
+			auxp->x_sym.x_tagndx.u32 = 0;
 		      else
-			auxp->x_sym.x_tagndx.l = symindx;
+			auxp->x_sym.x_tagndx.u32 = symindx;
 		    }
 
 		  /* The .bf symbols are supposed to be linked through
@@ -2114,7 +2116,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		    {
 		      if (flaginfo->last_bf_index != -1)
 			{
-			  flaginfo->last_bf.x_sym.x_fcnary.x_fcn.x_endndx.l =
+			  flaginfo->last_bf.x_sym.x_fcnary.x_fcn.x_endndx.u32 =
 			    *indexp;
 
 			  if ((bfd_size_type) flaginfo->last_bf_index
@@ -2156,13 +2158,13 @@ _bfd_coff_link_input_bfd (struct coff_fi
 			      pos = obj_sym_filepos (output_bfd);
 			      pos += flaginfo->last_bf_index * osymesz;
 			      if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-				  || (bfd_bwrite (outsym, osymesz, output_bfd)
+				  || (bfd_write (outsym, osymesz, output_bfd)
 				      != osymesz))
-				return FALSE;
+				return false;
 			    }
 			}
 
-		      if (auxp->x_sym.x_fcnary.x_fcn.x_endndx.l != 0)
+		      if (auxp->x_sym.x_fcnary.x_fcn.x_endndx.u32 != 0)
 			flaginfo->last_bf_index = -1;
 		      else
 			{
@@ -2204,7 +2206,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	  bfd_byte *eline;
 	  bfd_byte *elineend;
 	  bfd_byte *oeline;
-	  bfd_boolean skipping;
+	  bool skipping;
 	  file_ptr pos;
 	  bfd_size_type amt;
 
@@ -2222,15 +2224,15 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	    continue;
 
 	  if (bfd_seek (input_bfd, o->line_filepos, SEEK_SET) != 0
-	      || bfd_bread (flaginfo->linenos, linesz * o->lineno_count,
+	      || bfd_read (flaginfo->linenos, linesz * o->lineno_count,
 			   input_bfd) != linesz * o->lineno_count)
-	    return FALSE;
+	    return false;
 
 	  offset = o->output_section->vma + o->output_offset - o->vma;
 	  eline = flaginfo->linenos;
 	  oeline = flaginfo->linenos;
 	  elineend = eline + linesz * o->lineno_count;
-	  skipping = FALSE;
+	  skipping = false;
 	  for (; eline < elineend; eline += linesz)
 	    {
 	      struct internal_lineno iline;
@@ -2256,7 +2258,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 			 with symbol #0) will fail.  We can't regain
 			 the space in the output file, but at least
 			 they're dense.  */
-		      skipping = TRUE;
+		      skipping = true;
 		    }
 		  else
 		    {
@@ -2295,7 +2297,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 						 is.n_numaux, auxptr);
 			}
 
-		      skipping = FALSE;
+		      skipping = false;
 		    }
 
 		  iline.l_addr.l_symndx = indx;
@@ -2312,8 +2314,8 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	  pos += o->output_section->lineno_count * linesz;
 	  amt = oeline - flaginfo->linenos;
 	  if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-	      || bfd_bwrite (flaginfo->linenos, amt, output_bfd) != amt)
-	    return FALSE;
+	      || bfd_write (flaginfo->linenos, amt, output_bfd) != amt)
+	    return false;
 
 	  o->output_section->lineno_count += amt / linesz;
 	}
@@ -2342,8 +2344,8 @@ _bfd_coff_link_input_bfd (struct coff_fi
       pos = obj_sym_filepos (output_bfd) + syment_base * osymesz;
       amt = outsym - flaginfo->outsyms;
       if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-	  || bfd_bwrite (flaginfo->outsyms, amt, output_bfd) != amt)
-	return FALSE;
+	  || bfd_write (flaginfo->outsyms, amt, output_bfd) != amt)
+	return false;
 
       BFD_ASSERT ((obj_raw_syment_count (output_bfd)
 		   + (outsym - flaginfo->outsyms) / osymesz)
@@ -2377,7 +2379,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		(_("%pB: relocs in section `%pA', but it has no contents"),
 		 input_bfd, o);
 	      bfd_set_error (bfd_error_no_contents);
-	      return FALSE;
+	      return false;
 	    }
 
 	  continue;
@@ -2390,7 +2392,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	{
 	  contents = flaginfo->contents;
 	  if (! bfd_get_full_section_contents (input_bfd, o, &contents))
-	    return FALSE;
+	    return false;
 	}
 
       if ((o->flags & SEC_RELOC) != 0)
@@ -2402,7 +2404,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	  /* Read in the relocs.  */
 	  target_index = o->output_section->target_index;
 	  internal_relocs = (_bfd_coff_read_internal_relocs
-			     (input_bfd, o, FALSE, flaginfo->external_relocs,
+			     (input_bfd, o, false, flaginfo->external_relocs,
 			      bfd_link_relocatable (flaginfo->info),
 			      (bfd_link_relocatable (flaginfo->info)
 			       ? (flaginfo->section_info[target_index].relocs
@@ -2410,7 +2412,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 			       : flaginfo->internal_relocs)));
 	  if (internal_relocs == NULL
 	      && o->reloc_count > 0)
-	    return FALSE;
+	    return false;
 
 	  /* Run through the relocs looking for relocs against symbols
 	     coming from discarded sections and complain about them.  */
@@ -2450,7 +2452,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 					   internal_relocs,
 					   flaginfo->internal_syms,
 					   flaginfo->sec_ptrs))
-	    return FALSE;
+	    return false;
 
 	  if (bfd_link_relocatable (flaginfo->info))
 	    {
@@ -2466,7 +2468,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 	      for (; irel < irelend; irel++, rel_hash++)
 		{
 		  struct coff_link_hash_entry *h;
-		  bfd_boolean adjusted;
+		  bool adjusted;
 
 		  *rel_hash = NULL;
 
@@ -2481,7 +2483,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 		      if (! (*adjust_symndx) (output_bfd, flaginfo->info,
 					      input_bfd, o, irel,
 					      &adjusted))
-			return FALSE;
+			return false;
 		      if (adjusted)
 			continue;
 		    }
@@ -2526,7 +2528,7 @@ _bfd_coff_link_input_bfd (struct coff_fi
 			  name = (_bfd_coff_internal_syment_name
 				  (input_bfd, is, buf));
 			  if (name == NULL)
-			    return FALSE;
+			    return false;
 
 			  (*flaginfo->info->callbacks->unattached_reloc)
 			    (flaginfo->info, name, input_bfd, o, irel->r_vaddr);
@@ -2545,27 +2547,27 @@ _bfd_coff_link_input_bfd (struct coff_fi
 			  * bfd_octets_per_byte (output_bfd, o));
 	  if (! bfd_set_section_contents (output_bfd, o->output_section,
 					  contents, loc, o->size))
-	    return FALSE;
+	    return false;
 	}
       else
 	{
 	  if (! (_bfd_write_section_stabs
 		 (output_bfd, &coff_hash_table (flaginfo->info)->stab_info,
 		  o, &secdata->stab_info, contents)))
-	    return FALSE;
+	    return false;
 	}
     }
 
   if (! flaginfo->info->keep_memory
       && ! _bfd_coff_free_symbols (input_bfd))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Write out a global symbol.  Called via bfd_hash_traverse.  */
 
-bfd_boolean
+bool
 _bfd_coff_write_global_sym (struct bfd_hash_entry *bh, void *data)
 {
   struct coff_link_hash_entry *h = (struct coff_link_hash_entry *) bh;
@@ -2582,19 +2584,19 @@ _bfd_coff_write_global_sym (struct bfd_h
     {
       h = (struct coff_link_hash_entry *) h->root.u.i.link;
       if (h->root.type == bfd_link_hash_new)
-	return TRUE;
+	return true;
     }
 
   if (h->indx >= 0)
-    return TRUE;
+    return true;
 
   if (h->indx != -2
       && (flaginfo->info->strip == strip_all
 	  || (flaginfo->info->strip == strip_some
 	      && (bfd_hash_lookup (flaginfo->info->keep_hash,
-				   h->root.root.string, FALSE, FALSE)
+				   h->root.root.string, false, false)
 		  == NULL))))
-    return TRUE;
+    return true;
 
   switch (h->root.type)
     {
@@ -2602,9 +2604,12 @@ _bfd_coff_write_global_sym (struct bfd_h
     case bfd_link_hash_new:
     case bfd_link_hash_warning:
       abort ();
-      return FALSE;
+      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;
@@ -2624,6 +2629,17 @@ _bfd_coff_write_global_sym (struct bfd_h
 			+ h->root.u.def.section->output_offset);
 	if (! obj_pe (flaginfo->output_bfd))
 	  isym.n_value += sec->vma;
+#ifdef BFD64
+	if (isym.n_value > (bfd_vma) 0xffffffff)
+	  {
+	    if (! h->root.linker_def)
+	      _bfd_error_handler
+		(_("%pB: stripping non-representable symbol '%s' "
+		   "(value 0x%" PRIx64 ")"),
+		 output_bfd, h->root.root.string, isym.n_value);
+	    return true;
+	  }
+#endif
       }
       break;
 
@@ -2634,25 +2650,25 @@ _bfd_coff_write_global_sym (struct bfd_h
 
     case bfd_link_hash_indirect:
       /* Just ignore these.  They can't be handled anyhow.  */
-      return TRUE;
+      return true;
     }
 
   if (strlen (h->root.root.string) <= SYMNMLEN)
     strncpy (isym._n._n_name, h->root.root.string, SYMNMLEN);
   else
     {
-      bfd_boolean hash;
+      bool hash;
       bfd_size_type indx;
 
-      hash = TRUE;
+      hash = true;
       if (flaginfo->info->traditional_format)
-	hash = FALSE;
+	hash = false;
       indx = _bfd_stringtab_add (flaginfo->strtab, h->root.root.string, hash,
-				 FALSE);
+				 false);
       if (indx == (bfd_size_type) -1)
 	{
-	  flaginfo->failed = TRUE;
-	  return FALSE;
+	  flaginfo->failed = true;
+	  return false;
 	}
       isym._n._n_n._n_zeroes = 0;
       isym._n._n_n._n_offset = STRING_SIZE_SIZE + indx;
@@ -2671,7 +2687,7 @@ _bfd_coff_write_global_sym (struct bfd_h
   if (flaginfo->global_to_static)
     {
       if (! IS_EXTERNAL (output_bfd, isym))
-	return TRUE;
+	return true;
 
       isym.n_sclass = C_STAT;
     }
@@ -2693,10 +2709,10 @@ _bfd_coff_write_global_sym (struct bfd_h
   pos = obj_sym_filepos (output_bfd);
   pos += obj_raw_syment_count (output_bfd) * symesz;
   if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-      || bfd_bwrite (flaginfo->outsyms, symesz, output_bfd) != symesz)
+      || bfd_write (flaginfo->outsyms, symesz, output_bfd) != symesz)
     {
-      flaginfo->failed = TRUE;
-      return FALSE;
+      flaginfo->failed = true;
+      return false;
     }
 
   h->indx = obj_raw_syment_count (output_bfd);
@@ -2758,27 +2774,27 @@ _bfd_coff_write_global_sym (struct bfd_h
       bfd_coff_swap_aux_out (output_bfd, auxp, isym.n_type,
 			     isym.n_sclass, (int) i, isym.n_numaux,
 			     flaginfo->outsyms);
-      if (bfd_bwrite (flaginfo->outsyms, symesz, output_bfd) != symesz)
+      if (bfd_write (flaginfo->outsyms, symesz, output_bfd) != symesz)
 	{
-	  flaginfo->failed = TRUE;
-	  return FALSE;
+	  flaginfo->failed = true;
+	  return false;
 	}
       ++obj_raw_syment_count (output_bfd);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write out task global symbols, converting them to statics.  Called
    via coff_link_hash_traverse.  Calls bfd_coff_write_global_sym to do
    the dirty work, if the symbol we are processing needs conversion.  */
 
-bfd_boolean
+bool
 _bfd_coff_write_task_globals (struct coff_link_hash_entry *h, void *data)
 {
   struct coff_final_link_info *flaginfo = (struct coff_final_link_info *) data;
-  bfd_boolean rtnval = TRUE;
-  bfd_boolean save_global_to_static;
+  bool rtnval = true;
+  bool save_global_to_static;
 
   if (h->root.type == bfd_link_hash_warning)
     h = (struct coff_link_hash_entry *) h->root.u.i.link;
@@ -2790,7 +2806,7 @@ _bfd_coff_write_task_globals (struct cof
 	case bfd_link_hash_defined:
 	case bfd_link_hash_defweak:
 	  save_global_to_static = flaginfo->global_to_static;
-	  flaginfo->global_to_static = TRUE;
+	  flaginfo->global_to_static = true;
 	  rtnval = _bfd_coff_write_global_sym (&h->root.root, data);
 	  flaginfo->global_to_static = save_global_to_static;
 	  break;
@@ -2803,7 +2819,7 @@ _bfd_coff_write_task_globals (struct cof
 
 /* Handle a link order which is supposed to generate a reloc.  */
 
-bfd_boolean
+bool
 _bfd_coff_reloc_link_order (bfd *output_bfd,
 			    struct coff_final_link_info *flaginfo,
 			    asection *output_section,
@@ -2817,7 +2833,7 @@ _bfd_coff_reloc_link_order (bfd *output_
   if (howto == NULL)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   if (link_order->u.reloc.p->addend != 0)
@@ -2825,13 +2841,13 @@ _bfd_coff_reloc_link_order (bfd *output_
       bfd_size_type size;
       bfd_byte *buf;
       bfd_reloc_status_type rstat;
-      bfd_boolean ok;
+      bool ok;
       file_ptr loc;
 
       size = bfd_get_reloc_size (howto);
       buf = (bfd_byte *) bfd_zmalloc (size);
       if (buf == NULL && size != 0)
-	return FALSE;
+	return false;
 
       rstat = _bfd_relocate_contents (howto, output_bfd,
 				      (bfd_vma) link_order->u.reloc.p->addend,
@@ -2859,7 +2875,7 @@ _bfd_coff_reloc_link_order (bfd *output_
 				     loc, size);
       free (buf);
       if (! ok)
-	return FALSE;
+	return false;
     }
 
   /* Store the reloc information in the right place.  It will get
@@ -2891,7 +2907,7 @@ _bfd_coff_reloc_link_order (bfd *output_
       h = ((struct coff_link_hash_entry *)
 	   bfd_wrapped_link_hash_lookup (output_bfd, flaginfo->info,
 					 link_order->u.reloc.p->u.name,
-					 FALSE, FALSE, TRUE));
+					 false, false, true));
       if (h != NULL)
 	{
 	  if (h->indx >= 0)
@@ -2923,13 +2939,13 @@ _bfd_coff_reloc_link_order (bfd *output_
   /* FIXME: What is the right value for r_offset?  Is zero OK?  */
   ++output_section->reloc_count;
 
-  return TRUE;
+  return true;
 }
 
 /* A basic reloc handling routine which may be used by processors with
    simple relocs.  */
 
-bfd_boolean
+bool
 _bfd_coff_generic_relocate_section (bfd *output_bfd,
 				    struct bfd_link_info *info,
 				    bfd *input_bfd,
@@ -2968,7 +2984,7 @@ _bfd_coff_generic_relocate_section (bfd
 	  _bfd_error_handler
 	    /* xgettext: c-format */
 	    (_("%pB: illegal symbol index %ld in relocs"), input_bfd, symndx);
-	  return FALSE;
+	  return false;
 	}
       else
 	{
@@ -2988,7 +3004,7 @@ _bfd_coff_generic_relocate_section (bfd
       howto = bfd_coff_rtype_to_howto (input_bfd, input_section, rel, h,
 				       sym, &addend);
       if (howto == NULL)
-	return FALSE;
+	return false;
 
       /* If we are doing a relocatable link, then we can just ignore
 	 a PC relative reloc that is pcrel_offset.  It will already
@@ -3016,8 +3032,10 @@ _bfd_coff_generic_relocate_section (bfd
 	      sec = sections[symndx];
 
 	      /* PR 19623: Relocations against symbols in
-		 the absolute sections should ignored.  */
-	      if (bfd_is_abs_section (sec))
+		 the absolute sections should ignored.
+		 PR 29807: Also ignore relocs against file symbols or
+		 other such nonsense in fuzzed objects.  */
+	      if (sec == NULL || bfd_is_abs_section (sec))
 		continue;
 
 	      val = (sec->output_section->vma
@@ -3030,10 +3048,11 @@ _bfd_coff_generic_relocate_section (bfd
       else
 	{
 	  if (h->root.type == bfd_link_hash_defined
+	      /* Defined weak symbols are a GNU extension.  */
 	      || h->root.type == bfd_link_hash_defweak)
 	    {
-	      /* Defined weak symbols are a GNU extension. */
 	      sec = h->root.u.def.section;
+	      BFD_ASSERT (sec->output_section != NULL);
 	      val = (h->root.u.def.value
 		     + sec->output_section->vma
 		     + sec->output_offset);
@@ -3054,8 +3073,8 @@ _bfd_coff_generic_relocate_section (bfd
 		     external causes the library member to be linked.
 		     See also linker.c: generic_link_check_archive_element. */
 		  struct coff_link_hash_entry *h2 =
-		    h->auxbfd->tdata.coff_obj_data->sym_hashes[
-		    h->aux->x_sym.x_tagndx.l];
+		    h->auxbfd->tdata.coff_obj_data->sym_hashes
+		    [h->aux->x_sym.x_tagndx.u32];
 
 		  if (!h2 || h2->root.type == bfd_link_hash_undefined)
 		    {
@@ -3075,9 +3094,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
@@ -3104,13 +3129,13 @@ _bfd_coff_generic_relocate_section (bfd
 			   - input_section->vma
 			   + input_section->output_offset
 			   + input_section->output_section->vma);
-	      if (coff_data (output_bfd)->pe)
+	      if (obj_pe (output_bfd))
 		addr -= pe_data(output_bfd)->pe_opthdr.ImageBase;
 	      if (fwrite (&addr, 1, sizeof (bfd_vma), (FILE *) info->base_file)
 		  != sizeof (bfd_vma))
 		{
 		  bfd_set_error (bfd_error_system_call);
-		  return FALSE;
+		  return false;
 		}
 	    }
 	}
@@ -3131,9 +3156,23 @@ _bfd_coff_generic_relocate_section (bfd
 	    /* xgettext: c-format */
 	    (_("%pB: bad reloc address %#" PRIx64 " in section `%pA'"),
 	     input_bfd, (uint64_t) rel->r_vaddr, input_section);
-	  return FALSE;
+	  return false;
 	case bfd_reloc_overflow:
 	  {
+	    /* Ignore any weak undef symbols that may have overflowed.  Due to
+	       PR ld/19011 the base address is now in the upper 64-bit address
+	       range.  This means that when _bfd_final_link_relocate calculates
+	       the overlow it takes the distance between the symbol and the VMA
+	       which will now always overflow as 0 - 64-bit addr > 32-bit range
+	       of the relocation.  This ends up creating PR ld/26659.  */
+	    if (val == 0
+		/* Reverse the hack where 4 is subtracted from the addend.  */
+		&& (addend + 4) == 0
+		&& sym->n_sclass == C_NT_WEAK
+		&& bfd_coff_classify_symbol (output_bfd, sym)
+		     == COFF_SYMBOL_UNDEFINED)
+	      break;
+
 	    const char *name;
 	    char buf[SYMNMLEN + 1];
 
@@ -3145,7 +3184,7 @@ _bfd_coff_generic_relocate_section (bfd
 	      {
 		name = _bfd_coff_internal_syment_name (input_bfd, sym, buf);
 		if (name == NULL)
-		  return FALSE;
+		  return false;
 	      }
 
 	    (*info->callbacks->reloc_overflow)
@@ -3155,5 +3194,6 @@ _bfd_coff_generic_relocate_section (bfd
 	  }
 	}
     }
-  return TRUE;
+
+  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.20200303/bfd/coff-loongarch64.c ./bfd/coff-loongarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-loongarch64.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/coff-loongarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,161 @@
+/* BFD back-end for LoongArch64 COFF files.
+   Copyright (C) 2022-2025 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.  */
+
+#ifndef COFF_WITH_PE
+#error non-PE COFF unsupported
+#endif
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "coff/loongarch64.h"
+#include "coff/internal.h"
+#include "coff/pe.h"
+#include "libcoff.h"
+#include "libiberty.h"
+
+/* The page size is a guess based on ELF.  */
+
+#define COFF_PAGE_SIZE 0x4000
+
+/* All users of this file have bfd_octets_per_byte (abfd, sec) == 1.  */
+#define OCTETS_PER_BYTE(ABFD, SEC) 1
+
+#ifndef PCRELOFFSET
+#define PCRELOFFSET true
+#endif
+
+/* Currently we don't handle any relocations.  */
+static reloc_howto_type pe_loongarch64_std_reloc_howto[] =
+  {
+
+  };
+
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER  2
+
+#ifndef NUM_ELEM
+#define NUM_ELEM(a) ((sizeof (a)) / sizeof ((a)[0]))
+#endif
+
+#define NUM_RELOCS NUM_ELEM (pe_loongarch64_std_reloc_howto)
+
+#define RTYPE2HOWTO(cache_ptr, dst)             \
+  (cache_ptr)->howto = NULL
+
+#ifndef bfd_pe_print_pdata
+#define bfd_pe_print_pdata      NULL
+#endif
+
+/* Handle include/coff/loongarch64.h external_reloc.  */
+#define SWAP_IN_RELOC_OFFSET	H_GET_32
+#define SWAP_OUT_RELOC_OFFSET	H_PUT_32
+
+/* Return TRUE if this relocation should
+   appear in the output .reloc section.  */
+
+static bool
+in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
+	    reloc_howto_type * howto)
+{
+  return !howto->pc_relative;
+}
+
+#include "coffcode.h"
+
+/* Target vectors.  */
+const bfd_target
+#ifdef TARGET_SYM
+  TARGET_SYM =
+#else
+  loongarch64_pei_vec =
+#endif
+{
+#ifdef TARGET_NAME
+  TARGET_NAME,
+#else
+ "pei-loongarch64",			/* Name.  */
+#endif
+  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.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+
+     /* Data conversion functions.  */
+     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.  */
+     /* Header conversion functions.  */
+     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,
+    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),
+
+  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.20200303/bfd/coff-mcore.c ./bfd/coff-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-mcore.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-mcore.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,6 +18,10 @@
    Foundation, 51 Franklin Street - Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
+#ifndef COFF_WITH_PE
+#error non-PE COFF unsupported
+#endif
+
 #include "sysdep.h"
 #include "bfd.h"
 #include "libbfd.h"
@@ -37,7 +41,7 @@
 
 /* This file is compiled more than once, but we only compile the
    final_link routine once.  */
-extern bfd_boolean mcore_bfd_coff_final_link
+extern bool mcore_bfd_coff_final_link
   (bfd *, struct bfd_link_info *);
 static bfd_reloc_status_type mcore_coff_unsupported_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
@@ -61,94 +65,94 @@ static reloc_howto_type mcore_coff_howto
   /* Unused: */
   HOWTO (IMAGE_REL_MCORE_ABSOLUTE,/* type */
 	 0,			 /* rightshift */
-	 0,			 /* size (0 = byte, 1 = short, 2 = long) */
+	 0,			 /* size */
 	 0,			 /* bitsize */
-	 FALSE,			 /* pc_relative */
+	 false,			 /* pc_relative */
 	 0,			 /* bitpos */
 	 complain_overflow_dont, /* dont complain_on_overflow */
 	 NULL,			 /* special_function */
 	 "ABSOLUTE",		 /* name */
-	 FALSE,			 /* partial_inplace */
+	 false,			 /* partial_inplace */
 	 0x00,			 /* src_mask */
 	 0x00,			 /* dst_mask */
-	 FALSE),		 /* pcrel_offset */
+	 false),		 /* pcrel_offset */
 
   HOWTO (IMAGE_REL_MCORE_ADDR32,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "ADDR32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 8 bits + 2 zero bits; jmpi/jsri/lrw instructions.
      Should not appear in object files.  */
   HOWTO (IMAGE_REL_MCORE_PCREL_IMM8BY4,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mcore_coff_unsupported_reloc, /* special_function */
 	 "IMM8BY4",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* bsr/bt/bf/br instructions; 11 bits + 1 zero bit
      Span 2k instructions == 4k bytes.
      Only useful pieces at the relocated address are the opcode (5 bits) */
   HOWTO (IMAGE_REL_MCORE_PCREL_IMM11BY2,/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "IMM11BY2",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x7ff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 4 bits + 1 zero bit; 'loopt' instruction only; unsupported.  */
   HOWTO (IMAGE_REL_MCORE_PCREL_IMM4BY2,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 4,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mcore_coff_unsupported_reloc, /* special_function */
 	 "IMM4BY2",		 /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 32-bit pc-relative. Eventually this will help support PIC code.  */
   HOWTO (IMAGE_REL_MCORE_PCREL_32,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "PCREL_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Like PCREL_IMM11BY2, this relocation indicates that there is a
      'jsri' at the specified address. There is a separate relocation
@@ -159,31 +163,31 @@ static reloc_howto_type mcore_coff_howto
      is a relocation that we are allowed to safely ignore.  */
   HOWTO (IMAGE_REL_MCORE_PCREL_JSR_IMM11BY2,/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "JSR_IMM11BY2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x7ff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (IMAGE_REL_MCORE_RVA,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "MCORE_RVA",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE)			/* pcrel_offset */
+	 true)			/* pcrel_offset */
 };
 
 /* Extend the coff_link_hash_table structure with a few M*Core specific fields.
@@ -209,7 +213,7 @@ mcore_hash_table;
 
 /* Add an entry to the base file.  */
 
-static bfd_boolean
+static bool
 mcore_emit_base_file_entry (struct bfd_link_info *info,
 			    bfd *output_bfd,
 			    asection *input_section,
@@ -220,14 +224,14 @@ mcore_emit_base_file_entry (struct bfd_l
 		 + input_section->output_offset
 		 + input_section->output_section->vma;
 
-  if (coff_data (output_bfd)->pe)
+  if (obj_pe (output_bfd))
      addr -= pe_data (output_bfd)->pe_opthdr.ImageBase;
 
   if (fwrite (&addr, sizeof (addr), 1, (FILE *) info->base_file) == 1)
-    return TRUE;
+    return true;
 
   bfd_set_error (bfd_error_system_call);
-  return FALSE;
+  return false;
 }
 
 static bfd_reloc_status_type
@@ -336,14 +340,14 @@ coff_mcore_rtype_to_howto (bfd * abfd AT
 /* Return TRUE if this relocation should appear in the output .reloc section.
    This function is referenced in pe_mkobject in peicode.h.  */
 
-static bfd_boolean
+static bool
 in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED, reloc_howto_type * howto)
 {
   return ! howto->pc_relative && howto->type != IMAGE_REL_MCORE_RVA;
 }
 
 /* The reloc processing routine for the optimized COFF linker.  */
-static bfd_boolean
+static bool
 coff_mcore_relocate_section (bfd * output_bfd,
 			     struct bfd_link_info * info,
 			     bfd * input_bfd,
@@ -360,7 +364,7 @@ coff_mcore_relocate_section (bfd * outpu
      thing.  The caller will take care of adjusting the reloc
      addresses and symbol indices.  */
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* Check if we have the same endianness */
   if (   input_bfd->xvec->byteorder != output_bfd->xvec->byteorder
@@ -374,7 +378,7 @@ coff_mcore_relocate_section (bfd * outpu
 	 bfd_big_endian (output_bfd) ? _("big endian") : _("little endian"));
 
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   rel = relocs;
@@ -392,6 +396,7 @@ coff_mcore_relocate_section (bfd * outpu
       reloc_howto_type *	     howto = NULL;
       struct coff_link_hash_entry *  h;
       const char *		     my_name;
+      char buf[SYMNMLEN + 1];
 
       symndx = rel->r_symndx;
       loc = contents + rel->r_vaddr - input_section->vma;
@@ -413,7 +418,7 @@ coff_mcore_relocate_section (bfd * outpu
       howto = bfd_coff_rtype_to_howto (input_bfd, input_section, rel, h,
 				       sym, & addend);
       if (howto == NULL)
-	return FALSE;
+	return false;
 
       val = 0;
 
@@ -433,11 +438,15 @@ coff_mcore_relocate_section (bfd * outpu
 		my_name = "*unknown*";
 	      else if (   sym->_n._n_n._n_zeroes == 0
 		       && sym->_n._n_n._n_offset != 0)
-		my_name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset;
+		{
+		  if (sym->_n._n_n._n_offset < obj_coff_strings_len (input_bfd))
+		    my_name = (obj_coff_strings (input_bfd)
+			       + sym->_n._n_n._n_offset);
+		  else
+		    my_name = "?";
+		}
 	      else
 		{
-		  static char buf [SYMNMLEN + 1];
-
 		  strncpy (buf, sym->_n._n_name, SYMNMLEN);
 		  buf[SYMNMLEN] = '\0';
 		  my_name = buf;
@@ -458,7 +467,7 @@ coff_mcore_relocate_section (bfd * outpu
 	  else
 	    (*info->callbacks->undefined_symbol)
 	      (info, h->root.root.string, input_bfd, input_section,
-	       rel->r_vaddr - input_section->vma, TRUE);
+	       rel->r_vaddr - input_section->vma, true);
 
 	  my_name = h->root.root.string;
 	}
@@ -473,7 +482,7 @@ coff_mcore_relocate_section (bfd * outpu
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      input_bfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 
 	case IMAGE_REL_MCORE_ABSOLUTE:
 	  _bfd_error_handler
@@ -509,7 +518,7 @@ coff_mcore_relocate_section (bfd * outpu
 	  && pe_data (output_bfd)->in_reloc_p (output_bfd, howto)
 	  && !mcore_emit_base_file_entry (info, output_bfd, input_section,
 					  rel->r_vaddr))
-	return FALSE;
+	return false;
 
       switch (rstat)
 	{
@@ -527,7 +536,7 @@ coff_mcore_relocate_section (bfd * outpu
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Tailor coffcode.h -- macro heaven.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-mips.c ./bfd/coff-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-mips.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-mips.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Original version by Per Bothner.
    Full support added by Ian Lance Taylor, ian@cygnus.com.
 
@@ -84,54 +84,54 @@ static reloc_howto_type mips_howto_table
      bfd_perform_relocation to do nothing.  */
   HOWTO (MIPS_R_IGNORE,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "IGNORE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit reference to a symbol, normally from a data section.  */
   HOWTO (MIPS_R_REFHALF,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mips_generic_reloc,	/* special_function */
 	 "REFHALF",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit reference to a symbol, normally from a data section.  */
   HOWTO (MIPS_R_REFWORD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mips_generic_reloc,	/* special_function */
 	 "REFWORD",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 26 bit absolute jump address.  */
   HOWTO (MIPS_R_JMPADDR,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -139,73 +139,73 @@ static reloc_howto_type mips_howto_table
 				   bits must match the PC.  */
 	 mips_generic_reloc,	/* special_function */
 	 "JMPADDR",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x3ffffff,		/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The high 16 bits of a symbol value.  Handled by the function
      mips_refhi_reloc.  */
   HOWTO (MIPS_R_REFHI,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mips_refhi_reloc,	/* special_function */
 	 "REFHI",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The low 16 bits of a symbol value.  */
   HOWTO (MIPS_R_REFLO,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 mips_reflo_reloc,	/* special_function */
 	 "REFLO",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A reference to an offset from the gp register.  Handled by the
      function mips_gprel_reloc.  */
   HOWTO (MIPS_R_GPREL,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_gprel_reloc,	/* special_function */
 	 "GPREL",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A reference to a literal using an offset from the gp register.
      Handled by the function mips_gprel_reloc.  */
   HOWTO (MIPS_R_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_gprel_reloc,	/* special_function */
 	 "LITERAL",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (8),
   EMPTY_HOWTO (9),
@@ -217,17 +217,17 @@ static reloc_howto_type mips_howto_table
      be removed.  (It used to be used for embedded-PIC support.)  */
   HOWTO (MIPS_R_PCREL16,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_generic_reloc,	/* special_function */
 	 "PCREL16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 #define MIPS_HOWTO_COUNT \
@@ -235,7 +235,7 @@ static reloc_howto_type mips_howto_table
 
 /* See whether the magic number matches.  */
 
-static bfd_boolean
+static bool
 mips_ecoff_bad_format_hook (bfd * abfd, void * filehdr)
 {
   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
@@ -244,7 +244,7 @@ mips_ecoff_bad_format_hook (bfd * abfd,
     {
     case MIPS_MAGIC_1:
       /* I don't know what endianness this implies.  */
-      return TRUE;
+      return true;
 
     case MIPS_MAGIC_BIG:
     case MIPS_MAGIC_BIG2:
@@ -257,7 +257,7 @@ mips_ecoff_bad_format_hook (bfd * abfd,
       return bfd_little_endian (abfd);
 
     default:
-      return FALSE;
+      return false;
     }
 }
 
@@ -351,7 +351,14 @@ mips_adjust_reloc_in (bfd *abfd,
 		      arelent *rptr)
 {
   if (intern->r_type > MIPS_R_PCREL16)
-    abort ();
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+			  abfd, intern->r_type);
+      bfd_set_error (bfd_error_bad_value);
+      rptr->howto  = NULL;
+      return;
+    }
 
   if (! intern->r_extern
       && (intern->r_type == MIPS_R_GPREL
@@ -361,7 +368,7 @@ mips_adjust_reloc_in (bfd *abfd,
   /* If the type is MIPS_R_IGNORE, make sure this is a reference to
      the absolute section so that the reloc is ignored.  */
   if (intern->r_type == MIPS_R_IGNORE)
-    rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+    rptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 
   rptr->howto = &mips_howto_table[intern->r_type];
 }
@@ -416,19 +423,8 @@ mips_generic_reloc (bfd *abfd ATTRIBUTE_
    reloc.  This extension permits gcc to output the HI and LO relocs
    itself.  */
 
-struct mips_hi
-{
-  struct mips_hi *next;
-  bfd_byte *addr;
-  bfd_vma addend;
-};
-
-/* FIXME: This should not be a static variable.  */
-
-static struct mips_hi *mips_refhi_list;
-
 static bfd_reloc_status_type
-mips_refhi_reloc (bfd *abfd ATTRIBUTE_UNUSED,
+mips_refhi_reloc (bfd *abfd,
 		  arelent *reloc_entry,
 		  asymbol *symbol,
 		  void * data,
@@ -473,8 +469,8 @@ mips_refhi_reloc (bfd *abfd ATTRIBUTE_UN
     return bfd_reloc_outofrange;
   n->addr = (bfd_byte *) data + reloc_entry->address;
   n->addend = relocation;
-  n->next = mips_refhi_list;
-  mips_refhi_list = n;
+  n->next = ecoff_data (abfd)->mips_refhi_list;
+  ecoff_data (abfd)->mips_refhi_list = n;
 
   if (output_bfd != (bfd *) NULL)
     reloc_entry->address += input_section->output_offset;
@@ -495,11 +491,11 @@ mips_reflo_reloc (bfd *abfd,
 		  bfd *output_bfd,
 		  char **error_message)
 {
-  if (mips_refhi_list != NULL)
+  if (ecoff_data (abfd)->mips_refhi_list != NULL)
     {
       struct mips_hi *l;
 
-      l = mips_refhi_list;
+      l = ecoff_data (abfd)->mips_refhi_list;
       while (l != NULL)
 	{
 	  unsigned long insn;
@@ -542,7 +538,7 @@ mips_reflo_reloc (bfd *abfd,
 	  l = next;
 	}
 
-      mips_refhi_list = NULL;
+      ecoff_data (abfd)->mips_refhi_list = NULL;
     }
 
   /* Now do the REFLO reloc in the usual way.  */
@@ -562,7 +558,7 @@ mips_gprel_reloc (bfd *abfd ATTRIBUTE_UN
 		  bfd *output_bfd,
 		  char **error_message ATTRIBUTE_UNUSED)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_vma gp;
   bfd_vma relocation;
   unsigned long val;
@@ -581,16 +577,15 @@ mips_gprel_reloc (bfd *abfd ATTRIBUTE_UN
     }
 
   if (output_bfd != (bfd *) NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
+      relocatable = false;
       output_bfd = symbol->section->output_section->owner;
+      if (output_bfd == NULL)
+	return bfd_reloc_undefined;
     }
 
-  if (bfd_is_und_section (symbol->section) && ! relocatable)
-    return bfd_reloc_undefined;
-
   /* We have to figure out the gp value, so that we can adjust the
      symbol value correctly.  We look up the symbol _gp in the output
      BFD.  If we can't find it, we're stuck.  We cache it in the ECOFF
@@ -792,7 +787,7 @@ mips_relocate_hi (struct internal_reloc
 
 /* Relocate a section while linking a MIPS ECOFF file.  */
 
-static bfd_boolean
+static bool
 mips_relocate_section (bfd *output_bfd,
 		       struct bfd_link_info *info,
 		       bfd *input_bfd,
@@ -803,11 +798,10 @@ mips_relocate_section (bfd *output_bfd,
   asection **symndx_to_section;
   struct ecoff_link_hash_entry **sym_hashes;
   bfd_vma gp;
-  bfd_boolean gp_undefined;
+  bool gp_undefined;
   struct external_reloc *ext_rel;
   struct external_reloc *ext_rel_end;
-  unsigned int i;
-  bfd_boolean got_lo;
+  bool got_lo;
   struct internal_reloc lo_int_rel;
   bfd_size_type amt;
 
@@ -823,7 +817,7 @@ mips_relocate_section (bfd *output_bfd,
       amt = NUM_RELOC_SECTIONS * sizeof (asection *);
       symndx_to_section = (asection **) bfd_alloc (input_bfd, amt);
       if (!symndx_to_section)
-	return FALSE;
+	return false;
 
       symndx_to_section[RELOC_SECTION_NONE] = NULL;
       symndx_to_section[RELOC_SECTION_TEXT] =
@@ -858,18 +852,18 @@ mips_relocate_section (bfd *output_bfd,
 
   gp = _bfd_get_gp_value (output_bfd);
   if (gp == 0)
-    gp_undefined = TRUE;
+    gp_undefined = true;
   else
-    gp_undefined = FALSE;
+    gp_undefined = false;
 
-  got_lo = FALSE;
+  got_lo = false;
 
   ext_rel = (struct external_reloc *) external_relocs;
   ext_rel_end = ext_rel + input_section->reloc_count;
-  for (i = 0; ext_rel < ext_rel_end; ext_rel++, i++)
+  for (; ext_rel < ext_rel_end; ext_rel++)
     {
       struct internal_reloc int_rel;
-      bfd_boolean use_lo = FALSE;
+      bool use_lo = false;
       bfd_vma addend;
       reloc_howto_type *howto;
       struct ecoff_link_hash_entry *h = NULL;
@@ -882,7 +876,7 @@ mips_relocate_section (bfd *output_bfd,
       else
 	{
 	  int_rel = lo_int_rel;
-	  got_lo = FALSE;
+	  got_lo = false;
 	}
 
       BFD_ASSERT (int_rel.r_type
@@ -912,9 +906,9 @@ mips_relocate_section (bfd *output_bfd,
 	      && int_rel.r_extern == lo_int_rel.r_extern
 	      && int_rel.r_symndx == lo_int_rel.r_symndx)
 	    {
-	      use_lo = TRUE;
+	      use_lo = true;
 	      if (lo_ext_rel == ext_rel + 1)
-		got_lo = TRUE;
+		got_lo = true;
 	    }
 	}
 
@@ -956,7 +950,7 @@ mips_relocate_section (bfd *output_bfd,
 	      /* Only give the error once per link.  */
 	      gp = 4;
 	      _bfd_set_gp_value (output_bfd, gp);
-	      gp_undefined = FALSE;
+	      gp_undefined = false;
 	    }
 	  if (! int_rel.r_extern)
 	    {
@@ -1158,7 +1152,7 @@ mips_relocate_section (bfd *output_bfd,
 		{
 		  (*info->callbacks->undefined_symbol)
 		    (info, h->root.root.string, input_bfd, input_section,
-		     int_rel.r_vaddr - input_section->vma, TRUE);
+		     int_rel.r_vaddr - input_section->vma, true);
 		  relocation = 0;
 		}
 	    }
@@ -1236,7 +1230,7 @@ mips_relocate_section (bfd *output_bfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -1313,15 +1307,15 @@ static const struct ecoff_backend_data m
     mips_ecoff_swap_coff_reloc_out,
     mips_ecoff_swap_filehdr_out, mips_ecoff_swap_aouthdr_out,
     mips_ecoff_swap_scnhdr_out,
-    FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE,
-    ECOFF_NO_LONG_SECTION_NAMES, 4, FALSE, 2, 32768,
+    FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true,
+    ECOFF_NO_LONG_SECTION_NAMES, 4, false, 2, 32768,
     mips_ecoff_swap_filehdr_in, mips_ecoff_swap_aouthdr_in,
     mips_ecoff_swap_scnhdr_in, NULL,
     mips_ecoff_bad_format_hook, _bfd_ecoff_set_arch_mach_hook,
     _bfd_ecoff_mkobject_hook, _bfd_ecoff_styp_to_sec_flags,
     _bfd_ecoff_set_alignment_hook, _bfd_ecoff_slurp_symbol_table,
     NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
-    NULL, NULL, NULL
+    NULL, NULL,
   },
   /* Supported architecture.  */
   bfd_arch_mips,
@@ -1333,7 +1327,7 @@ static const struct ecoff_backend_data m
   /* TRUE if the .rdata section is part of the text segment, as on the
      Alpha.  FALSE if .rdata is part of the data segment, as on the
      MIPS.  */
-  FALSE,
+  false,
   /* Bitsize of constructor entries.  */
   32,
   /* Reloc to use for constructor entries.  */
@@ -1401,10 +1395,6 @@ static const struct ecoff_backend_data m
 #define _bfd_ecoff_bfd_get_relocated_section_contents \
   bfd_generic_get_relocated_section_contents
 
-/* Handling file windows is generic.  */
-#define _bfd_ecoff_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
-
 /* Relaxing sections is MIPS specific.  */
 #define _bfd_ecoff_bfd_relax_section bfd_generic_relax_section
 
@@ -1440,11 +1430,13 @@ 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 */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
@@ -1497,11 +1489,13 @@ 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 */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
      bfd_getb32, bfd_getb_signed_32, bfd_putb32,
      bfd_getb16, bfd_getb_signed_16, bfd_putb16,
@@ -1554,11 +1548,13 @@ 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 */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-ppc.c ./bfd/coff-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-ppc.c	2020-03-03 02:08:51.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.20200303/bfd/coff-riscv64.c ./bfd/coff-riscv64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-riscv64.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/coff-riscv64.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,134 @@
+/* BFD back-end for RISC-V 64-bit COFF files.
+   Copyright (C) 2023-2025 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.  */
+
+#ifndef COFF_WITH_PE
+#error non-PE COFF unsupported
+#endif
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "coff/riscv64.h"
+#include "coff/internal.h"
+#include "coff/pe.h"
+#include "libcoff.h"
+#include "libiberty.h"
+
+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER  2
+
+#ifndef bfd_pe_print_pdata
+#define bfd_pe_print_pdata      NULL
+#endif
+
+#define RTYPE2HOWTO(cache_ptr, dst)             \
+  (cache_ptr)->howto = NULL
+
+/* Return TRUE if this relocation should
+   appear in the output .reloc section.  */
+
+static bool
+in_reloc_p (bfd *abfd ATTRIBUTE_UNUSED,
+	    reloc_howto_type *howto)
+{
+  return !howto->pc_relative;
+}
+
+#include "coffcode.h"
+
+/* Target vectors.  */
+const bfd_target
+#ifdef TARGET_SYM
+  TARGET_SYM =
+#else
+  riscv64_coff_vec =
+#endif
+{
+#ifdef TARGET_NAME
+  TARGET_NAME,
+#else
+ "coff-riscv64-little",		/* Name.  */
+#endif
+  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.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+
+     /* Data conversion functions.  */
+     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.  */
+     /* Header conversion functions.  */
+     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,
+    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),
+
+  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.20200303/bfd/coff-rs6000.c ./bfd/coff-rs6000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-rs6000.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-rs6000.c	2026-03-05 02:07:20.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-2025 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.
@@ -32,19 +32,19 @@
 #include "libcoff.h"
 #include "libxcoff.h"
 
-extern bfd_boolean _bfd_xcoff_mkobject (bfd *);
-extern bfd_boolean _bfd_xcoff_copy_private_bfd_data (bfd *, bfd *);
-extern bfd_boolean _bfd_xcoff_is_local_label_name (bfd *, const char *);
+extern bool _bfd_xcoff_mkobject (bfd *);
+extern bool _bfd_xcoff_copy_private_bfd_data (bfd *, bfd *);
+extern bool _bfd_xcoff_is_local_label_name (bfd *, const char *);
 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 bool _bfd_xcoff_slurp_armap (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 *);
-extern bfd_boolean _bfd_xcoff_write_armap
+extern bool _bfd_xcoff_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int);
-extern bfd_boolean _bfd_xcoff_write_archive_contents (bfd *);
+extern bool _bfd_xcoff_write_archive_contents (bfd *);
 extern int _bfd_xcoff_sizeof_headers (bfd *, struct bfd_link_info *);
 extern void _bfd_xcoff_swap_sym_in (bfd *, void *, void *);
 extern unsigned int _bfd_xcoff_swap_sym_out (bfd *, void *, void *);
@@ -77,8 +77,8 @@ 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_boolean rs6000coff_core_file_matches_executable_p
+extern bfd_cleanup rs6000coff_core_p (bfd *abfd);
+extern bool rs6000coff_core_file_matches_executable_p
   (bfd *cbfd, bfd *ebfd);
 extern char *rs6000coff_core_file_failing_command (bfd *abfd);
 extern int rs6000coff_core_file_failing_signal (bfd *abfd);
@@ -119,81 +119,99 @@ extern int rs6000coff_core_file_failing_
 /* The main body of code is in coffcode.h.  */
 
 static const char *normalize_filename (bfd *);
-static bfd_boolean xcoff_write_armap_old
+static bool xcoff_write_armap_old
   (bfd *, unsigned int, struct orl *, unsigned int, int);
-static bfd_boolean xcoff_write_armap_big
+static bool xcoff_write_armap_big
   (bfd *, unsigned int, struct orl *, unsigned int, int);
-static bfd_boolean xcoff_write_archive_contents_old (bfd *);
-static bfd_boolean xcoff_write_archive_contents_big (bfd *);
+static bool xcoff_write_archive_contents_old (bfd *);
+static bool xcoff_write_archive_contents_big (bfd *);
 static void xcoff_swap_ldhdr_in (bfd *, const void *, struct internal_ldhdr *);
 static void xcoff_swap_ldhdr_out (bfd *, const struct internal_ldhdr *, void *);
 static void xcoff_swap_ldsym_in (bfd *, const void *, struct internal_ldsym *);
 static void xcoff_swap_ldsym_out (bfd *, const struct internal_ldsym *, void *);
 static void xcoff_swap_ldrel_in (bfd *, const void *, struct internal_ldrel *);
 static void xcoff_swap_ldrel_out (bfd *, const struct internal_ldrel *, void *);
-static bfd_boolean xcoff_ppc_relocate_section
+static bool xcoff_ppc_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    struct internal_reloc *, struct internal_syment *, asection **);
-static bfd_boolean _bfd_xcoff_put_ldsymbol_name
+static bool _bfd_xcoff_put_ldsymbol_name
   (bfd *, struct xcoff_loader_info *, struct internal_ldsym *, const char *);
 static asection *xcoff_create_csect_from_smclas
   (bfd *, union internal_auxent *, const char *);
-static bfd_boolean xcoff_is_lineno_count_overflow (bfd *, bfd_vma);
-static bfd_boolean xcoff_is_reloc_count_overflow (bfd *, bfd_vma);
+static bool xcoff_is_lineno_count_overflow (bfd *, bfd_vma);
+static bool xcoff_is_reloc_count_overflow (bfd *, bfd_vma);
 static bfd_vma xcoff_loader_symbol_offset (bfd *, struct internal_ldhdr *);
 static bfd_vma xcoff_loader_reloc_offset (bfd *, struct internal_ldhdr *);
-static bfd_boolean xcoff_generate_rtinit
-  (bfd *, const char *, const char *, bfd_boolean);
-static bfd_boolean do_pad (bfd *, unsigned int);
-static bfd_boolean do_copy (bfd *, bfd *);
+static bool xcoff_generate_rtinit
+  (bfd *, const char *, const char *, bool);
+static bool do_pad (bfd *, unsigned int);
+static bool do_copy (bfd *, bfd *);
 
 /* Relocation functions */
-static bfd_boolean xcoff_reloc_type_br (XCOFF_RELOC_FUNCTION_ARGS);
+static xcoff_reloc_function xcoff_reloc_type_br;
 
-static bfd_boolean xcoff_complain_overflow_dont_func
-  (XCOFF_COMPLAIN_FUNCTION_ARGS);
-static bfd_boolean xcoff_complain_overflow_bitfield_func
-  (XCOFF_COMPLAIN_FUNCTION_ARGS);
-static bfd_boolean xcoff_complain_overflow_signed_func
-  (XCOFF_COMPLAIN_FUNCTION_ARGS);
-static bfd_boolean xcoff_complain_overflow_unsigned_func
-  (XCOFF_COMPLAIN_FUNCTION_ARGS);
-
-bfd_boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
-  (XCOFF_RELOC_FUNCTION_ARGS) =
-{
-  xcoff_reloc_type_pos,	 /* R_POS   (0x00) */
-  xcoff_reloc_type_neg,	 /* R_NEG   (0x01) */
-  xcoff_reloc_type_rel,	 /* R_REL   (0x02) */
-  xcoff_reloc_type_toc,	 /* R_TOC   (0x03) */
-  xcoff_reloc_type_fail, /* R_RTB   (0x04) */
-  xcoff_reloc_type_toc,	 /* R_GL    (0x05) */
-  xcoff_reloc_type_toc,	 /* R_TCL   (0x06) */
-  xcoff_reloc_type_fail, /*	    (0x07) */
-  xcoff_reloc_type_ba,	 /* R_BA    (0x08) */
-  xcoff_reloc_type_fail, /*	    (0x09) */
-  xcoff_reloc_type_br,	 /* R_BR    (0x0a) */
-  xcoff_reloc_type_fail, /*	    (0x0b) */
-  xcoff_reloc_type_pos,	 /* R_RL    (0x0c) */
-  xcoff_reloc_type_pos,	 /* R_RLA   (0x0d) */
-  xcoff_reloc_type_fail, /*	    (0x0e) */
+static xcoff_complain_function xcoff_complain_overflow_dont_func;
+static xcoff_complain_function xcoff_complain_overflow_bitfield_func;
+static xcoff_complain_function xcoff_complain_overflow_signed_func;
+static xcoff_complain_function xcoff_complain_overflow_unsigned_func;
+
+xcoff_reloc_function *const
+xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION] =
+{
+  xcoff_reloc_type_pos,  /* R_POS   (0x00) */
+  xcoff_reloc_type_neg,  /* R_NEG   (0x01) */
+  xcoff_reloc_type_rel,  /* R_REL   (0x02) */
+  xcoff_reloc_type_toc,  /* R_TOC   (0x03) */
+  xcoff_reloc_type_toc,  /* R_TRL   (0x04) */
+  xcoff_reloc_type_toc,  /* R_GL    (0x05) */
+  xcoff_reloc_type_toc,  /* R_TCL   (0x06) */
+  xcoff_reloc_type_fail, /*         (0x07) */
+  xcoff_reloc_type_ba,   /* R_BA    (0x08) */
+  xcoff_reloc_type_fail, /*         (0x09) */
+  xcoff_reloc_type_br,   /* R_BR    (0x0a) */
+  xcoff_reloc_type_fail, /*         (0x0b) */
+  xcoff_reloc_type_pos,  /* R_RL    (0x0c) */
+  xcoff_reloc_type_pos,  /* R_RLA   (0x0d) */
+  xcoff_reloc_type_fail, /*         (0x0e) */
   xcoff_reloc_type_noop, /* R_REF   (0x0f) */
-  xcoff_reloc_type_fail, /*	    (0x10) */
-  xcoff_reloc_type_fail, /*	    (0x11) */
-  xcoff_reloc_type_toc,	 /* R_TRL   (0x12) */
-  xcoff_reloc_type_toc,	 /* R_TRLA  (0x13) */
+  xcoff_reloc_type_fail, /*         (0x10) */
+  xcoff_reloc_type_fail, /*         (0x11) */
+  xcoff_reloc_type_fail, /*         (0x12) */
+  xcoff_reloc_type_toc,  /* R_TRLA  (0x13) */
   xcoff_reloc_type_fail, /* R_RRTBI (0x14) */
   xcoff_reloc_type_fail, /* R_RRTBA (0x15) */
-  xcoff_reloc_type_ba,	 /* R_CAI   (0x16) */
+  xcoff_reloc_type_ba,   /* R_CAI   (0x16) */
   xcoff_reloc_type_crel, /* R_CREL  (0x17) */
-  xcoff_reloc_type_ba,	 /* R_RBA   (0x18) */
-  xcoff_reloc_type_ba,	 /* R_RBAC  (0x19) */
-  xcoff_reloc_type_br,	 /* R_RBR   (0x1a) */
-  xcoff_reloc_type_ba,	 /* R_RBRC  (0x1b) */
+  xcoff_reloc_type_ba,   /* R_RBA   (0x18) */
+  xcoff_reloc_type_ba,   /* R_RBAC  (0x19) */
+  xcoff_reloc_type_br,   /* R_RBR   (0x1a) */
+  xcoff_reloc_type_ba,   /* R_RBRC  (0x1b) */
+  xcoff_reloc_type_fail, /*           (0x1c) */
+  xcoff_reloc_type_fail, /*           (0x1d) */
+  xcoff_reloc_type_fail, /*           (0x1e) */
+  xcoff_reloc_type_fail, /*           (0x1f) */
+  xcoff_reloc_type_tls,  /* R_TLS     (0x20) */
+  xcoff_reloc_type_tls,  /* R_TLS_IE  (0x21) */
+  xcoff_reloc_type_tls,  /* R_TLS_LD  (0x22) */
+  xcoff_reloc_type_tls,  /* R_TLS_LE  (0x23) */
+  xcoff_reloc_type_tls,  /* R_TLSM    (0x24) */
+  xcoff_reloc_type_tls,  /* R_TLSML   (0x25) */
+  xcoff_reloc_type_fail, /*           (0x26) */
+  xcoff_reloc_type_fail, /*           (0x27) */
+  xcoff_reloc_type_fail, /*           (0x28) */
+  xcoff_reloc_type_fail, /*           (0x29) */
+  xcoff_reloc_type_fail, /*           (0x2a) */
+  xcoff_reloc_type_fail, /*           (0x2b) */
+  xcoff_reloc_type_fail, /*           (0x2c) */
+  xcoff_reloc_type_fail, /*           (0x2d) */
+  xcoff_reloc_type_fail, /*           (0x2e) */
+  xcoff_reloc_type_fail, /*           (0x2f) */
+  xcoff_reloc_type_toc,  /* R_TOCU    (0x30) */
+  xcoff_reloc_type_toc,  /* R_TOCL    (0x31) */
 };
 
-bfd_boolean (*xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW])
-  (XCOFF_COMPLAIN_FUNCTION_ARGS) =
+xcoff_complain_function *const
+xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW] =
 {
   xcoff_complain_overflow_dont_func,
   xcoff_complain_overflow_bitfield_func,
@@ -300,11 +318,11 @@ archive_iterator_begin (struct archive_i
 /* Make ITERATOR visit the first unvisited archive member.  Return true
    on success; return false if all members have been visited.  */
 
-static bfd_boolean
+static bool
 archive_iterator_next (struct archive_iterator *iterator)
 {
   if (!iterator->next.member)
-    return FALSE;
+    return false;
 
   iterator->current = iterator->next;
   member_layout_init (&iterator->next, iterator->archive,
@@ -313,21 +331,21 @@ archive_iterator_next (struct archive_it
 		      + iterator->current.header_size
 		      + iterator->current.contents_size
 		      + iterator->current.trailing_padding);
-  return TRUE;
+  return true;
 }
 
 /* We use our own tdata type.  Its first field is the COFF tdata type,
    so the COFF routines are compatible.  */
 
-bfd_boolean
+bool
 _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)
-    return FALSE;
+    return false;
   coff = coff_data (abfd);
   coff->symbols = (coff_symbol_type *) NULL;
   coff->conversion_table = (unsigned int *) NULL;
@@ -346,19 +364,19 @@ _bfd_xcoff_mkobject (bfd *abfd)
   /* text section alignment is different than the default */
   bfd_xcoff_text_align_power (abfd) = 2;
 
-  return TRUE;
+  return true;
 }
 
 /* Copy XCOFF data from one BFD to another.  */
 
-bfd_boolean
+bool
 _bfd_xcoff_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   struct xcoff_tdata *ix, *ox;
   asection *sec;
 
   if (ibfd->xvec != obfd->xvec)
-    return TRUE;
+    return true;
   ix = xcoff_data (ibfd);
   ox = xcoff_data (obfd);
   ox->full_aouthdr = ix->full_aouthdr;
@@ -368,7 +386,7 @@ _bfd_xcoff_copy_private_bfd_data (bfd *i
   else
     {
       sec = coff_section_from_bfd_index (ibfd, ix->sntoc);
-      if (sec == NULL)
+      if (sec == NULL || sec->output_section == NULL)
 	ox->sntoc = 0;
       else
 	ox->sntoc = sec->output_section->target_index;
@@ -378,7 +396,7 @@ _bfd_xcoff_copy_private_bfd_data (bfd *i
   else
     {
       sec = coff_section_from_bfd_index (ibfd, ix->snentry);
-      if (sec == NULL)
+      if (sec == NULL || sec->output_section == NULL)
 	ox->snentry = 0;
       else
 	ox->snentry = sec->output_section->target_index;
@@ -389,7 +407,7 @@ _bfd_xcoff_copy_private_bfd_data (bfd *i
   ox->cputype = ix->cputype;
   ox->maxdata = ix->maxdata;
   ox->maxstack = ix->maxstack;
-  return TRUE;
+  return true;
 }
 
 /* I don't think XCOFF really has a notion of local labels based on
@@ -397,11 +415,11 @@ _bfd_xcoff_copy_private_bfd_data (bfd *i
    The AIX native linker does not have a -X option, and it ignores the
    -x option.  */
 
-bfd_boolean
+bool
 _bfd_xcoff_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 				const char *name ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
 void
@@ -452,43 +470,44 @@ _bfd_xcoff_swap_sym_out (bfd *abfd, void
 }
 
 void
-_bfd_xcoff_swap_aux_in (bfd *abfd, void * ext1, int type, int in_class,
-			int indx, int numaux, void * in1)
+_bfd_xcoff_swap_aux_in (bfd *abfd, void * ext1, int type ATTRIBUTE_UNUSED,
+			int in_class, int indx, int numaux, void * in1)
 {
   AUXENT * ext = (AUXENT *)ext1;
   union internal_auxent *in = (union internal_auxent *)in1;
 
   switch (in_class)
     {
+    default:
+      _bfd_error_handler
+	/* xgettext: c-format */
+	(_("%pB: unsupported swap_aux_in for storage class %#x"),
+	 abfd, (unsigned int) in_class);
+      bfd_set_error (bfd_error_bad_value);
+      break;
+
     case C_FILE:
       if (ext->x_file.x_n.x_fname[0] == 0)
 	{
-	  in->x_file.x_n.x_zeroes = 0;
-	  in->x_file.x_n.x_offset =
+	  in->x_file.x_n.x_n.x_zeroes = 0;
+	  in->x_file.x_n.x_n.x_offset =
 	    H_GET_32 (abfd, ext->x_file.x_n.x_n.x_offset);
 	}
       else
-	{
-	  if (numaux > 1)
-	    {
-	      if (indx == 0)
-		memcpy (in->x_file.x_fname, ext->x_file.x_n.x_fname,
-			numaux * sizeof (AUXENT));
-	    }
-	  else
-	    {
-	      memcpy (in->x_file.x_fname, ext->x_file.x_n.x_fname, FILNMLEN);
-	    }
-	}
-      goto end;
+	memcpy (in->x_file.x_n.x_fname, ext->x_file.x_n.x_fname, FILNMLEN);
+      in->x_file.x_ftype = H_GET_8 (abfd, ext->x_file.x_ftype);
+      break;
 
-      /* RS/6000 "csect" auxents */
+      /* RS/6000 "csect" auxents.
+         There is always a CSECT auxiliary entry. But functions can
+         have FCN ones too. In this case, CSECT is always the last
+         one. */
     case C_EXT:
     case C_AIX_WEAKEXT:
     case C_HIDEXT:
       if (indx + 1 == numaux)
 	{
-	  in->x_csect.x_scnlen.l = H_GET_32 (abfd, ext->x_csect.x_scnlen);
+	  in->x_csect.x_scnlen.u64 = H_GET_32 (abfd, ext->x_csect.x_scnlen);
 	  in->x_csect.x_parmhash = H_GET_32 (abfd, ext->x_csect.x_parmhash);
 	  in->x_csect.x_snhash   = H_GET_16 (abfd, ext->x_csect.x_snhash);
 	  /* We don't have to hack bitfields in x_smtyp because it's
@@ -498,74 +517,47 @@ _bfd_xcoff_swap_aux_in (bfd *abfd, void
 	  in->x_csect.x_smclas   = H_GET_8 (abfd, ext->x_csect.x_smclas);
 	  in->x_csect.x_stab     = H_GET_32 (abfd, ext->x_csect.x_stab);
 	  in->x_csect.x_snstab   = H_GET_16 (abfd, ext->x_csect.x_snstab);
-	  goto end;
+	}
+      else
+	{
+	  /* x_exptr isn't supported.  */
+	  in->x_sym.x_misc.x_fsize
+	    = H_GET_32 (abfd, ext->x_fcn.x_fsize);
+	  in->x_sym.x_fcnary.x_fcn.x_lnnoptr
+	    = H_GET_32 (abfd, ext->x_fcn.x_lnnoptr);
+	  in->x_sym.x_fcnary.x_fcn.x_endndx.u32
+	    = H_GET_32 (abfd, ext->x_fcn.x_endndx);
 	}
       break;
 
     case C_STAT:
-    case C_LEAFSTAT:
-    case C_HIDDEN:
-      if (type == T_NULL)
-	{
-	  in->x_scn.x_scnlen = H_GET_32 (abfd, ext->x_scn.x_scnlen);
-	  in->x_scn.x_nreloc = H_GET_16 (abfd, ext->x_scn.x_nreloc);
-	  in->x_scn.x_nlinno = H_GET_16 (abfd, ext->x_scn.x_nlinno);
-	  /* PE defines some extra fields; we zero them out for
-	     safety.  */
-	  in->x_scn.x_checksum = 0;
-	  in->x_scn.x_associated = 0;
-	  in->x_scn.x_comdat = 0;
-
-	  goto end;
-	}
+      in->x_scn.x_scnlen = H_GET_32 (abfd, ext->x_scn.x_scnlen);
+      in->x_scn.x_nreloc = H_GET_16 (abfd, ext->x_scn.x_nreloc);
+      in->x_scn.x_nlinno = H_GET_16 (abfd, ext->x_scn.x_nlinno);
+      /* PE defines some extra fields; we zero them out for
+	 safety.  */
+      in->x_scn.x_checksum = 0;
+      in->x_scn.x_associated = 0;
+      in->x_scn.x_comdat = 0;
       break;
-    }
 
-  in->x_sym.x_tagndx.l = H_GET_32 (abfd, ext->x_sym.x_tagndx);
-  in->x_sym.x_tvndx = H_GET_16 (abfd, ext->x_sym.x_tvndx);
+    case C_BLOCK:
+    case C_FCN:
+      in->x_sym.x_misc.x_lnsz.x_lnno
+	= H_GET_32 (abfd, ext->x_sym.x_lnno);
+      break;
 
-  if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
-      || ISTAG (in_class))
-    {
-      in->x_sym.x_fcnary.x_fcn.x_lnnoptr =
-	H_GET_32 (abfd, ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
-      in->x_sym.x_fcnary.x_fcn.x_endndx.l =
-	H_GET_32 (abfd, ext->x_sym.x_fcnary.x_fcn.x_endndx);
-    }
-  else
-    {
-      in->x_sym.x_fcnary.x_ary.x_dimen[0] =
-	H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[0]);
-      in->x_sym.x_fcnary.x_ary.x_dimen[1] =
-	H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[1]);
-      in->x_sym.x_fcnary.x_ary.x_dimen[2] =
-	H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[2]);
-      in->x_sym.x_fcnary.x_ary.x_dimen[3] =
-	H_GET_16 (abfd, ext->x_sym.x_fcnary.x_ary.x_dimen[3]);
-    }
+    case C_DWARF:
+      in->x_sect.x_scnlen = H_GET_32 (abfd, ext->x_sect.x_scnlen);
+      in->x_sect.x_nreloc = H_GET_32 (abfd, ext->x_sect.x_nreloc);
+      break;
 
-  if (ISFCN (type))
-    {
-      in->x_sym.x_misc.x_fsize = H_GET_32 (abfd, ext->x_sym.x_misc.x_fsize);
     }
-  else
-    {
-      in->x_sym.x_misc.x_lnsz.x_lnno =
-	H_GET_16 (abfd, ext->x_sym.x_misc.x_lnsz.x_lnno);
-      in->x_sym.x_misc.x_lnsz.x_size =
-	H_GET_16 (abfd, ext->x_sym.x_misc.x_lnsz.x_size);
-    }
-
- end: ;
-  /* The semicolon is because MSVC doesn't like labels at
-     end of block.  */
 }
 
 unsigned int
-_bfd_xcoff_swap_aux_out (bfd *abfd, void * inp, int type, int in_class,
-			 int indx ATTRIBUTE_UNUSED,
-			 int numaux ATTRIBUTE_UNUSED,
-			 void * extp)
+_bfd_xcoff_swap_aux_out (bfd *abfd, void * inp, int type ATTRIBUTE_UNUSED,
+			 int in_class, int indx, int numaux, void * extp)
 {
   union internal_auxent *in = (union internal_auxent *)inp;
   AUXENT *ext = (AUXENT *)extp;
@@ -573,18 +565,25 @@ _bfd_xcoff_swap_aux_out (bfd *abfd, void
   memset (ext, 0, bfd_coff_auxesz (abfd));
   switch (in_class)
     {
+    default:
+      _bfd_error_handler
+	/* xgettext: c-format */
+	(_("%pB: unsupported swap_aux_out for storage class %#x"),
+	 abfd, (unsigned int) in_class);
+      bfd_set_error (bfd_error_bad_value);
+      break;
+
     case C_FILE:
-      if (in->x_file.x_fname[0] == 0)
+      if (in->x_file.x_n.x_fname[0] == 0)
 	{
 	  H_PUT_32 (abfd, 0, ext->x_file.x_n.x_n.x_zeroes);
-	  H_PUT_32 (abfd, in->x_file.x_n.x_offset,
+	  H_PUT_32 (abfd, in->x_file.x_n.x_n.x_offset,
 		    ext->x_file.x_n.x_n.x_offset);
 	}
       else
-	{
-	  memcpy (ext->x_file.x_n.x_fname, in->x_file.x_fname, FILNMLEN);
-	}
-      goto end;
+	memcpy (ext->x_file.x_n.x_fname, in->x_file.x_n.x_fname, FILNMLEN);
+      H_PUT_8 (abfd, in->x_file.x_ftype, ext->x_file.x_ftype);
+      break;
 
       /* RS/6000 "csect" auxents */
     case C_EXT:
@@ -592,7 +591,7 @@ _bfd_xcoff_swap_aux_out (bfd *abfd, void
     case C_HIDEXT:
       if (indx + 1 == numaux)
 	{
-	  H_PUT_32 (abfd, in->x_csect.x_scnlen.l, ext->x_csect.x_scnlen);
+	  H_PUT_32 (abfd, in->x_csect.x_scnlen.u64, ext->x_csect.x_scnlen);
 	  H_PUT_32 (abfd, in->x_csect.x_parmhash, ext->x_csect.x_parmhash);
 	  H_PUT_16 (abfd, in->x_csect.x_snhash, ext->x_csect.x_snhash);
 	  /* We don't have to hack bitfields in x_smtyp because it's
@@ -602,459 +601,564 @@ _bfd_xcoff_swap_aux_out (bfd *abfd, void
 	  H_PUT_8 (abfd, in->x_csect.x_smclas, ext->x_csect.x_smclas);
 	  H_PUT_32 (abfd, in->x_csect.x_stab, ext->x_csect.x_stab);
 	  H_PUT_16 (abfd, in->x_csect.x_snstab, ext->x_csect.x_snstab);
-	  goto end;
+	}
+      else
+	{
+	  H_PUT_32 (abfd, in->x_sym.x_misc.x_fsize, ext->x_fcn.x_fsize);
+	  H_PUT_32 (abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,
+		    ext->x_fcn.x_lnnoptr);
+	  H_PUT_32 (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.u32,
+		    ext->x_fcn.x_endndx);
 	}
       break;
 
     case C_STAT:
-    case C_LEAFSTAT:
-    case C_HIDDEN:
-      if (type == T_NULL)
-	{
-	  H_PUT_32 (abfd, in->x_scn.x_scnlen, ext->x_scn.x_scnlen);
-	  H_PUT_16 (abfd, in->x_scn.x_nreloc, ext->x_scn.x_nreloc);
-	  H_PUT_16 (abfd, in->x_scn.x_nlinno, ext->x_scn.x_nlinno);
-	  goto end;
-	}
+      H_PUT_32 (abfd, in->x_scn.x_scnlen, ext->x_scn.x_scnlen);
+      H_PUT_16 (abfd, in->x_scn.x_nreloc, ext->x_scn.x_nreloc);
+      H_PUT_16 (abfd, in->x_scn.x_nlinno, ext->x_scn.x_nlinno);
       break;
-    }
-
-  H_PUT_32 (abfd, in->x_sym.x_tagndx.l, ext->x_sym.x_tagndx);
-  H_PUT_16 (abfd, in->x_sym.x_tvndx, ext->x_sym.x_tvndx);
 
-  if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
-      || ISTAG (in_class))
-    {
-      H_PUT_32 (abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,
-		ext->x_sym.x_fcnary.x_fcn.x_lnnoptr);
-      H_PUT_32 (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l,
-		ext->x_sym.x_fcnary.x_fcn.x_endndx);
-    }
-  else
-    {
-      H_PUT_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[0],
-		ext->x_sym.x_fcnary.x_ary.x_dimen[0]);
-      H_PUT_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[1],
-		ext->x_sym.x_fcnary.x_ary.x_dimen[1]);
-      H_PUT_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[2],
-		ext->x_sym.x_fcnary.x_ary.x_dimen[2]);
-      H_PUT_16 (abfd, in->x_sym.x_fcnary.x_ary.x_dimen[3],
-		ext->x_sym.x_fcnary.x_ary.x_dimen[3]);
-    }
+    case C_BLOCK:
+    case C_FCN:
+      H_PUT_32 (abfd, in->x_sym.x_misc.x_lnsz.x_lnno, ext->x_sym.x_lnno);
+      break;
 
-  if (ISFCN (type))
-    H_PUT_32 (abfd, in->x_sym.x_misc.x_fsize, ext->x_sym.x_misc.x_fsize);
-  else
-    {
-      H_PUT_16 (abfd, in->x_sym.x_misc.x_lnsz.x_lnno,
-		ext->x_sym.x_misc.x_lnsz.x_lnno);
-      H_PUT_16 (abfd, in->x_sym.x_misc.x_lnsz.x_size,
-		ext->x_sym.x_misc.x_lnsz.x_size);
+    case C_DWARF:
+      H_PUT_32 (abfd, in->x_sect.x_scnlen, ext->x_sect.x_scnlen);
+      H_PUT_32 (abfd, in->x_sect.x_nreloc, ext->x_sect.x_nreloc);
+      break;
     }
 
-end:
   return bfd_coff_auxesz (abfd);
 }
 
-/* The XCOFF reloc table.  Actually, XCOFF relocations specify the
-   bitsize and whether they are signed or not, along with a
-   conventional type.  This table is for the types, which are used for
-   different algorithms for putting in the reloc.  Many of these
-   relocs need special_function entries, which I have not written.  */
+/* The XCOFF reloc table.
+   XCOFF relocations aren't defined only by the type field r_type.
+   The bitsize and whether they are signed or not, are defined by
+   r_size field.  Thus, it's complicated to create a constant
+   table reference every possible relocation.
+   This table contains the "default" relocation and few modified
+   relocations what were already there.  It's enough when
+   xcoff_rtype2howto is called.
+   For relocations from an input bfd to an output bfd, the default
+   relocation is retrieved and when manually adapted.
+
+   For now, it seems to be enought.  */
 
 reloc_howto_type xcoff_howto_table[] =
 {
   /* 0x00: Standard 32 bit relocation.  */
   HOWTO (R_POS,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_POS",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x01: 32 bit relocation, but store negative value.  */
   HOWTO (R_NEG,			/* type */
 	 0,			/* rightshift */
-	 -2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 -4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_NEG",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x02: 32 bit PC relative relocation.  */
   HOWTO (R_REL,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_REL",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x03: 16 bit TOC relative relocation.  */
   HOWTO (R_TOC,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_TOC",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
-  /* 0x04: I don't really know what this is.  */
-  HOWTO (R_RTB,			/* type */
-	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+  /* 0x04: Same as R_TOC  */
+  HOWTO (R_TRL,			/* type */
+	 0,			/* rightshift */
+	 2,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
-	 "R_RTB",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 "R_TRL",		/* name */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
   /* 0x05: External TOC relative symbol.  */
   HOWTO (R_GL,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_GL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x06: Local TOC relative symbol.	 */
   HOWTO (R_TCL,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_TCL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (7),
 
-  /* 0x08: Non modifiable absolute branch.  */
+  /* 0x08: Same as R_RBA.  */
   HOWTO (R_BA,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_BA_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03fffffc,		/* src_mask */
 	 0x03fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (9),
 
-  /* 0x0a: Non modifiable relative branch.  */
+  /* 0x0a: Same as R_RBR.  */
   HOWTO (R_BR,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_BR",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03fffffc,		/* src_mask */
 	 0x03fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (0xb),
 
-  /* 0x0c: Indirect load.  */
+  /* 0x0c: Same as R_POS.  */
   HOWTO (R_RL,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
-  /* 0x0d: Load address.  */
+  /* 0x0d: Same as R_POS.  */
   HOWTO (R_RLA,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RLA",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (0xe),
 
   /* 0x0f: Non-relocating reference.  Bitsize is 1 so that r_rsize is 0.  */
   HOWTO (R_REF,			/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 1,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_REF",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (0x10),
   EMPTY_HOWTO (0x11),
+  EMPTY_HOWTO (0x12),
 
-  /* 0x12: TOC relative indirect load.  */
-  HOWTO (R_TRL,			/* 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_TRL",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* 0x13: TOC relative load address.  */
+  /* 0x13: Same as R_TOC.  */
   HOWTO (R_TRLA,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_TRLA",		/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x14: Modifiable relative branch.  */
-  HOWTO (R_RRTBI,		 /* type */
+  HOWTO (R_RRTBI,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RRTBI",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x15: Modifiable absolute branch.  */
-  HOWTO (R_RRTBA,		 /* type */
+  HOWTO (R_RRTBA,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RRTBA",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x16: Modifiable call absolute indirect.  */
   HOWTO (R_CAI,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_CAI",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x17: Modifiable call relative.  */
   HOWTO (R_CREL,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_CREL",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x18: Modifiable branch absolute.  */
   HOWTO (R_RBA,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBA",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03fffffc,		/* src_mask */
 	 0x03fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x19: Modifiable branch absolute.  */
   HOWTO (R_RBAC,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBAC",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1a: Modifiable branch relative.  */
   HOWTO (R_RBR,			/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBR_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03fffffc,		/* src_mask */
 	 0x03fffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1b: Modifiable branch absolute.  */
   HOWTO (R_RBRC,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBRC",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1c: 16 bit Non modifiable absolute branch.  */
   HOWTO (R_BA,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_BA_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xfffc,		/* src_mask */
 	 0xfffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1d: Modifiable branch relative.  */
   HOWTO (R_RBR,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBR_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xfffc,		/* src_mask */
 	 0xfffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 0x1e: Modifiable branch relative.  */
   HOWTO (R_RBA,			/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 0,			/* special_function */
 	 "R_RBA_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
+
+  EMPTY_HOWTO (0x1f),
+
+  /* 0x20: General-dynamic TLS relocation.  */
+  HOWTO (R_TLS,			/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLS",		/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x21: Initial-exec TLS relocation.  */
+  HOWTO (R_TLS_IE,		/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLS_IE",		/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x22: Local-dynamic TLS relocation.  */
+  HOWTO (R_TLS_LD,		/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLS_LD",		/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x23: Local-exec TLS relocation.  */
+  HOWTO (R_TLS_LE,		/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLS_LE",		/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x24: TLS relocation.  */
+  HOWTO (R_TLSM,		/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLSM",		/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+
+  /* 0x25: TLS module relocation.  */
+  HOWTO (R_TLSML,		/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 32,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TLSML",		/* name */
+	 true,			/* partial_inplace */
+	 0xffffffff,		/* src_mask */
+	 0xffffffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  EMPTY_HOWTO(0x26),
+  EMPTY_HOWTO(0x27),
+  EMPTY_HOWTO(0x28),
+  EMPTY_HOWTO(0x29),
+  EMPTY_HOWTO(0x2a),
+  EMPTY_HOWTO(0x2b),
+  EMPTY_HOWTO(0x2c),
+  EMPTY_HOWTO(0x2d),
+  EMPTY_HOWTO(0x2e),
+  EMPTY_HOWTO(0x2f),
+
+  /* 0x30: High-order 16 bit TOC relative relocation.  */
+  HOWTO (R_TOCU,		/* type */
+	 16,			/* rightshift */
+	 2,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TOCU",		/* name */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
+  /* 0x31: Low-order 16 bit TOC relative relocation.  */
+  HOWTO (R_TOCL,		/* type */
+	 0,			/* rightshift */
+	 2,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 0,			/* special_function */
+	 "R_TOCL",		/* name */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
+
 };
 
 void
 xcoff_rtype2howto (arelent *relent, struct internal_reloc *internal)
 {
-  if (internal->r_type > R_RBRC)
+  if (internal->r_type > R_TOCL)
     abort ();
 
   /* Default howto layout works most of the time */
@@ -1096,9 +1200,10 @@ _bfd_xcoff_reloc_type_lookup (bfd *abfd
       return &xcoff_howto_table[8];
     case BFD_RELOC_PPC_TOC16:
       return &xcoff_howto_table[3];
-    case BFD_RELOC_16:
-      /* Note that this relocation is only internally used by gas.  */
-      return &xcoff_howto_table[0xc];
+    case BFD_RELOC_PPC_TOC16_HI:
+      return &xcoff_howto_table[0x30];
+    case BFD_RELOC_PPC_TOC16_LO:
+      return &xcoff_howto_table[0x31];
     case BFD_RELOC_PPC_B16:
       return &xcoff_howto_table[0x1d];
     case BFD_RELOC_32:
@@ -1106,6 +1211,20 @@ _bfd_xcoff_reloc_type_lookup (bfd *abfd
       return &xcoff_howto_table[0];
     case BFD_RELOC_NONE:
       return &xcoff_howto_table[0xf];
+    case BFD_RELOC_PPC_NEG:
+      return &xcoff_howto_table[0x1];
+    case BFD_RELOC_PPC_TLSGD:
+      return &xcoff_howto_table[0x20];
+    case BFD_RELOC_PPC_TLSIE:
+      return &xcoff_howto_table[0x21];
+    case BFD_RELOC_PPC_TLSLD:
+      return &xcoff_howto_table[0x22];
+    case BFD_RELOC_PPC_TLSLE:
+      return &xcoff_howto_table[0x23];
+    case BFD_RELOC_PPC_TLSM:
+      return &xcoff_howto_table[0x24];
+    case BFD_RELOC_PPC_TLSML:
+      return &xcoff_howto_table[0x25];
     default:
       return NULL;
     }
@@ -1175,7 +1294,7 @@ _bfd_xcoff_reloc_name_lookup (bfd *abfd
    take a maximum length as an additional parameter.  Also - just to save space,
    we omit the endptr return parameter, since we know that it is never used.  */
 
-static long
+static unsigned long
 _bfd_strntol (const char * nptr, int base, unsigned int maxlen)
 {
   char buf[24]; /* Should be enough.  */
@@ -1187,7 +1306,7 @@ _bfd_strntol (const char * nptr, int bas
   return strtol (buf, NULL, base);
 }
 
-static long long
+static unsigned long long
 _bfd_strntoll (const char * nptr, int base, unsigned int maxlen)
 {
   char buf[32]; /* Should be enough.  */
@@ -1216,10 +1335,10 @@ _bfd_strntoll (const char * nptr, int ba
 
 /* Read in the armap of an XCOFF archive.  */
 
-bfd_boolean
+bool
 _bfd_xcoff_slurp_armap (bfd *abfd)
 {
-  file_ptr off;
+  ufile_ptr off;
   size_t namlen;
   bfd_size_type sz;
   bfd_byte *contents, *cend;
@@ -1227,10 +1346,10 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
   carsym *arsym;
   bfd_byte *p;
 
-  if (xcoff_ardata (abfd) == NULL)
+  if (x_artdata (abfd) == NULL)
     {
-      abfd->has_armap = FALSE;
-      return TRUE;
+      abfd->has_armap = false;
+      return true;
     }
 
   if (! xcoff_big_format_p (abfd))
@@ -1238,49 +1357,55 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
       /* This is for the old format.  */
       struct xcoff_ar_hdr hdr;
 
-      GET_VALUE_IN_FIELD (off, xcoff_ardata (abfd)->symoff, 10);
+      GET_VALUE_IN_FIELD (off, x_artdata (abfd)->u.hdr.symoff, 10);
       if (off == 0)
 	{
-	  abfd->has_armap = FALSE;
-	  return TRUE;
+	  abfd->has_armap = false;
+	  return true;
 	}
 
       if (bfd_seek (abfd, off, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       /* The symbol table starts with a normal archive header.  */
-      if (bfd_bread (&hdr, (bfd_size_type) SIZEOF_AR_HDR, abfd)
-	  != SIZEOF_AR_HDR)
-	return FALSE;
+      if (bfd_read (&hdr, SIZEOF_AR_HDR, abfd) != SIZEOF_AR_HDR)
+	return false;
 
       /* Skip the name (normally empty).  */
       GET_VALUE_IN_FIELD (namlen, hdr.namlen, 10);
       off = ((namlen + 1) & ~ (size_t) 1) + SXCOFFARFMAG;
       if (bfd_seek (abfd, off, SEEK_CUR) != 0)
-	return FALSE;
+	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;
+	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;
+	  return false;
 	}
 
       bfd_ardata (abfd)->symdefs =
 	((carsym *) bfd_alloc (abfd, c * sizeof (carsym)));
       if (bfd_ardata (abfd)->symdefs == NULL)
-	return FALSE;
+	return false;
 
       /* After the count comes a list of four byte file offsets.  */
       for (i = 0, arsym = bfd_ardata (abfd)->symdefs, p = contents + 4;
@@ -1293,49 +1418,55 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
       /* This is for the new format.  */
       struct xcoff_ar_hdr_big hdr;
 
-      GET_VALUE_IN_FIELD (off, xcoff_ardata_big (abfd)->symoff, 10);
+      GET_VALUE_IN_FIELD (off, x_artdata (abfd)->u.bhdr.symoff, 10);
       if (off == 0)
 	{
-	  abfd->has_armap = FALSE;
-	  return TRUE;
+	  abfd->has_armap = false;
+	  return true;
 	}
 
       if (bfd_seek (abfd, off, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       /* The symbol table starts with a normal archive header.  */
-      if (bfd_bread (&hdr, (bfd_size_type) SIZEOF_AR_HDR_BIG, abfd)
-	  != SIZEOF_AR_HDR_BIG)
-	return FALSE;
+      if (bfd_read (&hdr, SIZEOF_AR_HDR_BIG, abfd) != SIZEOF_AR_HDR_BIG)
+	return false;
 
       /* Skip the name (normally empty).  */
       GET_VALUE_IN_FIELD (namlen, hdr.namlen, 10);
       off = ((namlen + 1) & ~ (size_t) 1) + SXCOFFARFMAG;
       if (bfd_seek (abfd, off, SEEK_CUR) != 0)
-	return FALSE;
+	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;
+	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;
+	  return false;
 	}
 
       bfd_ardata (abfd)->symdefs =
 	((carsym *) bfd_alloc (abfd, c * sizeof (carsym)));
       if (bfd_ardata (abfd)->symdefs == NULL)
-	return FALSE;
+	return false;
 
       /* After the count comes a list of eight byte file offsets.  */
       for (i = 0, arsym = bfd_ardata (abfd)->symdefs, p = contents + 8;
@@ -1353,27 +1484,26 @@ _bfd_xcoff_slurp_armap (bfd *abfd)
       if (p >= cend)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       arsym->name = (char *) p;
     }
 
   bfd_ardata (abfd)->symdef_count = c;
-  abfd->has_armap = TRUE;
+  abfd->has_armap = true;
 
-  return TRUE;
+  return true;
 }
 
 /* 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)
+  if (bfd_read (magic, amt, abfd) != amt)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -1387,19 +1517,12 @@ _bfd_xcoff_archive_p (bfd *abfd)
       return NULL;
     }
 
-  tdata_hold = bfd_ardata (abfd);
+  amt = sizeof (struct artdata) + sizeof (struct xcoff_artdata);
+  bfd_ardata (abfd) = bfd_zalloc (abfd, amt);
+  if (bfd_ardata (abfd) == NULL)
+    return NULL;
 
-  amt = sizeof (struct artdata);
-  bfd_ardata (abfd) = (struct artdata *) bfd_zalloc (abfd, amt);
-  if (bfd_ardata (abfd) == (struct artdata *) NULL)
-    goto error_ret_restore;
-
-  /* Cleared by bfd_zalloc above.
-     bfd_ardata (abfd)->cache = NULL;
-     bfd_ardata (abfd)->archive_head = NULL;
-     bfd_ardata (abfd)->symdefs = NULL;
-     bfd_ardata (abfd)->extended_names = NULL;
-     bfd_ardata (abfd)->extended_names_size = 0;  */
+  bfd_ardata (abfd)->tdata = (void *) ((struct artdata *) bfd_ardata (abfd) + 1);
 
   /* Now handle the two formats.  */
   if (magic[1] != 'b')
@@ -1412,7 +1535,7 @@ _bfd_xcoff_archive_p (bfd *abfd)
 
       /* Now read the rest of the file header.  */
       amt = SIZEOF_AR_FILE_HDR - SXCOFFARMAG;
-      if (bfd_bread (&hdr.memoff, amt, abfd) != amt)
+      if (bfd_read (&hdr.memoff, amt, abfd) != amt)
 	{
 	  if (bfd_get_error () != bfd_error_system_call)
 	    bfd_set_error (bfd_error_wrong_format);
@@ -1422,12 +1545,7 @@ _bfd_xcoff_archive_p (bfd *abfd)
       GET_VALUE_IN_FIELD (bfd_ardata (abfd)->first_file_filepos,
 			  hdr.firstmemoff, 10);
 
-      amt = SIZEOF_AR_FILE_HDR;
-      bfd_ardata (abfd)->tdata = bfd_zalloc (abfd, amt);
-      if (bfd_ardata (abfd)->tdata == NULL)
-	goto error_ret;
-
-      memcpy (bfd_ardata (abfd)->tdata, &hdr, SIZEOF_AR_FILE_HDR);
+      memcpy (&x_artdata (abfd)->u.hdr, &hdr, SIZEOF_AR_FILE_HDR);
     }
   else
     {
@@ -1439,7 +1557,7 @@ _bfd_xcoff_archive_p (bfd *abfd)
 
       /* Now read the rest of the file header.  */
       amt = SIZEOF_AR_FILE_HDR_BIG - SXCOFFARMAG;
-      if (bfd_bread (&hdr.memoff, amt, abfd) != amt)
+      if (bfd_read (&hdr.memoff, amt, abfd) != amt)
 	{
 	  if (bfd_get_error () != bfd_error_system_call)
 	    bfd_set_error (bfd_error_wrong_format);
@@ -1450,24 +1568,108 @@ _bfd_xcoff_archive_p (bfd *abfd)
 							    (const char **) 0,
 							    10);
 
-      amt = SIZEOF_AR_FILE_HDR_BIG;
-      bfd_ardata (abfd)->tdata = bfd_zalloc (abfd, amt);
-      if (bfd_ardata (abfd)->tdata == NULL)
-	goto error_ret;
-
-      memcpy (bfd_ardata (abfd)->tdata, &hdr, SIZEOF_AR_FILE_HDR_BIG);
+      memcpy (&x_artdata (abfd)->u.bhdr, &hdr, SIZEOF_AR_FILE_HDR_BIG);
     }
 
   if (! _bfd_xcoff_slurp_armap (abfd))
     {
     error_ret:
       bfd_release (abfd, bfd_ardata (abfd));
-    error_ret_restore:
-      bfd_ardata (abfd) = tdata_hold;
       return NULL;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
+}
+
+/* Track file ranges occupied by elements.  Add [START,END) to the
+   list of ranges and return TRUE if there is no overlap between the
+   new and any other element or the archive file header.  This is
+   aimed at preventing infinite looping on malformed archives, for
+   "ar" and similar which typically use code like:
+   .  for (last = bfd_openr_next_archived_file (archive, NULL);
+   .       last;
+   .       last = next)
+   .    {
+   .      do_something_with (last);
+   .      next = bfd_openr_next_archived_file (archive, last);
+   .      bfd_close (last);
+   .    }
+   The check implemented here is only possible due to the fact that
+   for XCOFF archives bfd_openr_next_archived_file is the only code
+   path leading to _bfd_read_ar_hdr.  _bfd_read_ar_hdr is not called
+   when reading the armap, nor do XCOFF archives use the extended name
+   scheme implemented in archive.c.
+
+   Note that the check relies on the previous element being closed,
+   and there is one case where add_range might fail but I think it is
+   sufficently unusual that it doesn't warrant fixing:
+   If the loop body above called bfd_openr_next_archived_file twice
+   with the same arguments and the element returned is bfd_close'd
+   between those calls then we'll return false here for the second
+   call.  (For why this is so see _bfd_look_for_bfd_in_cache in
+   _bfd_get_elt_at_filepos, and know that bfd_close removes elements
+   from the cache.)  */
+
+static bool
+add_range (bfd *abfd, ufile_ptr start, ufile_ptr end)
+{
+  if (end <= start)
+    {
+    err:
+      bfd_set_error (bfd_error_malformed_archive);
+      return false;
+    }
+
+  /* This list is kept sorted by address.  Find the highest address
+     range on the list that ends before the new range starts.  Exit
+     the loop with that range in LO, and the mext higher range in HI.  */
+  struct ar_ranges *hi = &x_artdata (abfd)->ranges;
+  struct ar_ranges *lo = NULL;
+  while (hi && hi->end <= start)
+    {
+      lo = hi;
+      hi = hi->next;
+    }
+
+  if (lo == NULL)
+    /* Start overlaps the file header or elements adjacent to it.  */
+    goto err;
+
+  if (hi && hi->start < end)
+    /* Overlap with another element.  */
+    goto err;
+
+  /* A zero size element with a one char name is this big.  */
+  unsigned min_elt = x_artdata (abfd)->ar_hdr_size + 2 + SXCOFFARFMAG;
+  if (start - lo->end < min_elt)
+    {
+      /* Merge into an existing range.  */
+      lo->end = end;
+      if (hi && hi->start - end < min_elt)
+	{
+	  /* In fact, we can merge two ranges.  */
+	  lo->end = hi->end;
+	  lo->next = hi->next;
+	  /* The list uses bfd_alloc so don't free HI.  */
+	}
+      return true;
+    }
+
+  if (hi && hi->start - end < min_elt)
+    {
+      /* Merge into an existing range.  */
+      hi->start = start;
+      return true;
+    }
+
+  struct ar_ranges *newr = bfd_alloc (abfd, sizeof (*newr));
+  if (newr == NULL)
+    return false;
+  newr->start = start;
+  newr->end = end;
+  newr->next = hi;
+  lo->next = newr;
+  return true;
 }
 
 /* Read the archive header in an XCOFF archive.  */
@@ -1477,34 +1679,28 @@ _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;
+  ufile_ptr start = abfd->where;
 
   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_read (&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;
-	}
+      if (namlen > bfd_get_file_size (abfd))
+	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)
+      if (bfd_read ((char *) hdrp + SIZEOF_AR_HDR, namlen, abfd) != namlen)
 	{
 	  free (ret);
 	  return NULL;
@@ -1520,23 +1716,20 @@ _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_read (&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;
-	}
+      if (namlen > bfd_get_file_size (abfd))
+	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)
+      if (bfd_read ((char *) hdrp + SIZEOF_AR_HDR_BIG, namlen, abfd) != namlen)
 	{
 	  free (ret);
 	  return NULL;
@@ -1548,9 +1741,17 @@ _bfd_xcoff_read_ar_hdr (bfd *abfd)
       ret->filename = (char *) hdrp + SIZEOF_AR_HDR_BIG;
     }
 
+  /* Size occupied by the header above that covered in the fixed
+     SIZEOF_AR_HDR or SIZEOF_AR_HDR_BIG.  */
+  ret->extra_size = namlen + (namlen & 1) + SXCOFFARFMAG;
+
   /* Skip over the XCOFFARFMAG at the end of the file name.  */
-  if (bfd_seek (abfd, (file_ptr) ((namlen & 1) + SXCOFFARFMAG), SEEK_CUR) != 0)
-    return NULL;
+  if (bfd_seek (abfd, (namlen & 1) + SXCOFFARFMAG, SEEK_CUR) != 0
+      || !add_range (abfd, start, abfd->where + ret->parsed_size))
+    {
+      free (ret);
+      return NULL;
+    }
 
   return ret;
 }
@@ -1560,9 +1761,9 @@ _bfd_xcoff_read_ar_hdr (bfd *abfd)
 bfd *
 _bfd_xcoff_openr_next_archived_file (bfd *archive, bfd *last_file)
 {
-  file_ptr filestart;
+  ufile_ptr filestart;
 
-  if (xcoff_ardata (archive) == NULL)
+  if (x_artdata (archive) == NULL)
     {
       bfd_set_error (bfd_error_invalid_operation);
       return NULL;
@@ -1571,13 +1772,24 @@ _bfd_xcoff_openr_next_archived_file (bfd
   if (! xcoff_big_format_p (archive))
     {
       if (last_file == NULL)
-	filestart = bfd_ardata (archive)->first_file_filepos;
+	{
+	  /* If we are scanning over elements twice in an open archive,
+	     which can happen in gdb after a fork, ensure we start the
+	     second scan with clean ranges.  */
+	  x_artdata (archive)->ranges.start = 0;
+	  x_artdata (archive)->ranges.end = SIZEOF_AR_FILE_HDR;
+	  x_artdata (archive)->ranges.next = NULL;
+	  x_artdata (archive)->ar_hdr_size = SIZEOF_AR_HDR;
+	  filestart = bfd_ardata (archive)->first_file_filepos;
+	}
       else
 	GET_VALUE_IN_FIELD (filestart, arch_xhdr (last_file)->nextoff, 10);
 
       if (filestart == 0
-	  || EQ_VALUE_IN_FIELD (filestart, xcoff_ardata (archive)->memoff, 10)
-	  || EQ_VALUE_IN_FIELD (filestart, xcoff_ardata (archive)->symoff, 10))
+	  || EQ_VALUE_IN_FIELD (filestart,
+				x_artdata (archive)->u.hdr.memoff, 10)
+	  || EQ_VALUE_IN_FIELD (filestart,
+				x_artdata (archive)->u.hdr.symoff, 10))
 	{
 	  bfd_set_error (bfd_error_no_more_archived_files);
 	  return NULL;
@@ -1586,20 +1798,44 @@ _bfd_xcoff_openr_next_archived_file (bfd
   else
     {
       if (last_file == NULL)
-	filestart = bfd_ardata (archive)->first_file_filepos;
+	{
+	  x_artdata (archive)->ranges.start = 0;
+	  x_artdata (archive)->ranges.end = SIZEOF_AR_FILE_HDR_BIG;
+	  x_artdata (archive)->ranges.next = NULL;
+	  x_artdata (archive)->ar_hdr_size = SIZEOF_AR_HDR_BIG;
+	  filestart = bfd_ardata (archive)->first_file_filepos;
+	}
       else
 	GET_VALUE_IN_FIELD (filestart, arch_xhdr_big (last_file)->nextoff, 10);
 
       if (filestart == 0
-	  || EQ_VALUE_IN_FIELD (filestart, xcoff_ardata_big (archive)->memoff, 10)
-	  || EQ_VALUE_IN_FIELD (filestart, xcoff_ardata_big (archive)->symoff, 10))
+	  || EQ_VALUE_IN_FIELD (filestart,
+				x_artdata (archive)->u.bhdr.memoff, 10)
+	  || EQ_VALUE_IN_FIELD (filestart,
+				x_artdata (archive)->u.bhdr.symoff, 10))
 	{
 	  bfd_set_error (bfd_error_no_more_archived_files);
 	  return NULL;
 	}
     }
 
-  return _bfd_get_elt_at_filepos (archive, filestart);
+  /* Check that we aren't pointing back at the last element.  This is
+     necessary depite the add_range checking in _bfd_xcoff_read_ar_hdr
+     because archive.c leaves the last element open and thus in the
+     archive element cache until the next element is opened.  */
+  if (last_file != NULL)
+    {
+      ufile_ptr laststart = last_file->proxy_origin;
+      laststart -= x_artdata (archive)->ar_hdr_size;
+      laststart -= arch_eltdata (last_file)->extra_size;
+      if (filestart == laststart)
+	{
+	  bfd_set_error (bfd_error_malformed_archive);
+	  return NULL;
+	}
+    }
+
+  return _bfd_get_elt_at_filepos (archive, filestart, NULL);
 }
 
 /* Stat an element in an XCOFF archive.  */
@@ -1656,7 +1892,7 @@ normalize_filename (bfd *abfd)
 
 /* Write out an XCOFF armap.  */
 
-static bfd_boolean
+static bool
 xcoff_write_armap_old (bfd *abfd, unsigned int elength ATTRIBUTE_UNUSED,
 		       struct orl *map, unsigned int orl_count, int stridx)
 {
@@ -1669,7 +1905,8 @@ xcoff_write_armap_old (bfd *abfd, unsign
   memset (&hdr, 0, sizeof hdr);
   sprintf (hdr.size, "%ld", (long) (4 + orl_count * 4 + stridx));
   sprintf (hdr.nextoff, "%d", 0);
-  memcpy (hdr.prevoff, xcoff_ardata (abfd)->memoff, XCOFFARMAG_ELEMENT_SIZE);
+  memcpy (hdr.prevoff, x_artdata (abfd)->u.hdr.memoff,
+	  XCOFFARMAG_ELEMENT_SIZE);
   sprintf (hdr.date, "%d", 0);
   sprintf (hdr.uid, "%d", 0);
   sprintf (hdr.gid, "%d", 0);
@@ -1681,15 +1918,13 @@ xcoff_write_armap_old (bfd *abfd, unsign
     if (*p == '\0')
       *p = ' ';
 
-  if (bfd_bwrite (&hdr, (bfd_size_type) SIZEOF_AR_HDR, abfd)
-      != SIZEOF_AR_HDR
-      || (bfd_bwrite (XCOFFARFMAG, (bfd_size_type) SXCOFFARFMAG, abfd)
-	  != SXCOFFARFMAG))
-    return FALSE;
+  if (bfd_write (&hdr, SIZEOF_AR_HDR, abfd) != SIZEOF_AR_HDR
+      || bfd_write (XCOFFARFMAG, SXCOFFARFMAG, abfd) != SXCOFFARFMAG)
+    return false;
 
   H_PUT_32 (abfd, orl_count, buf);
-  if (bfd_bwrite (buf, (bfd_size_type) 4, abfd) != 4)
-    return FALSE;
+  if (bfd_write (buf, 4, abfd) != 4)
+    return false;
 
   i = 0;
   archive_iterator_begin (&iterator, abfd);
@@ -1697,8 +1932,8 @@ xcoff_write_armap_old (bfd *abfd, unsign
     while (map[i].u.abfd == iterator.current.member)
       {
 	H_PUT_32 (abfd, iterator.current.offset, buf);
-	if (bfd_bwrite (buf, (bfd_size_type) 4, abfd) != 4)
-	  return FALSE;
+	if (bfd_write (buf, 4, abfd) != 4)
+	  return false;
 	++i;
       }
 
@@ -1709,8 +1944,8 @@ xcoff_write_armap_old (bfd *abfd, unsign
 
       name = *map[i].name;
       namlen = strlen (name);
-      if (bfd_bwrite (name, (bfd_size_type) (namlen + 1), abfd) != namlen + 1)
-	return FALSE;
+      if (bfd_write (name, namlen + 1, abfd) != namlen + 1)
+	return false;
     }
 
   if ((stridx & 1) != 0)
@@ -1718,26 +1953,20 @@ xcoff_write_armap_old (bfd *abfd, unsign
       char b;
 
       b = '\0';
-      if (bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1)
-	return FALSE;
+      if (bfd_write (&b, 1, abfd) != 1)
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 static char buff20[XCOFFARMAGBIG_ELEMENT_SIZE + 1];
-#if BFD_HOST_64BIT_LONG
-#define FMT20  "%-20ld"
-#elif defined (__MSVCRT__)
-#define FMT20  "%-20I64d"
-#else
-#define FMT20  "%-20lld"
-#endif
+#define FMT20  "%-20" PRId64
 #define FMT12  "%-12d"
 #define FMT12_OCTAL  "%-12o"
 #define FMT4  "%-4d"
 #define PRINT20(d, v) \
-  sprintf (buff20, FMT20, (bfd_uint64_t)(v)), \
+  sprintf (buff20, FMT20, (uint64_t) (v)), \
   memcpy ((void *) (d), buff20, 20)
 
 #define PRINT12(d, v) \
@@ -1757,53 +1986,53 @@ static char buff20[XCOFFARMAGBIG_ELEMENT
   memcpy (buff20, (d), 20), \
   (v) = bfd_scan_vma (buff20, (const char **) NULL, 10)
 
-static bfd_boolean
+static bool
 do_pad (bfd *abfd, unsigned int number)
 {
   bfd_byte b = 0;
 
   /* Limit pad to <= 4096.  */
   if (number > 4096)
-    return FALSE;
+    return false;
 
   while (number--)
-    if (bfd_bwrite (&b, (bfd_size_type) 1, abfd) != 1)
-      return FALSE;
+    if (bfd_write (&b, 1, abfd) != 1)
+      return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 do_copy (bfd *out_bfd, bfd *in_bfd)
 {
   bfd_size_type remaining;
-  bfd_byte buffer[DEFAULT_BUFFERSIZE];
+  bfd_byte buffer[8 * 1024];
 
-  if (bfd_seek (in_bfd, (file_ptr) 0, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (in_bfd, 0, SEEK_SET) != 0)
+    return false;
 
   remaining = arelt_size (in_bfd);
 
-  while (remaining >= DEFAULT_BUFFERSIZE)
+  while (remaining >= sizeof (buffer))
     {
-      if (bfd_bread (buffer, DEFAULT_BUFFERSIZE, in_bfd) != DEFAULT_BUFFERSIZE
-	  || bfd_bwrite (buffer, DEFAULT_BUFFERSIZE, out_bfd) != DEFAULT_BUFFERSIZE)
-	return FALSE;
+      if (bfd_read (buffer, sizeof (buffer), in_bfd) != sizeof (buffer)
+	  || bfd_write (buffer, sizeof (buffer), out_bfd) != sizeof (buffer))
+	return false;
 
-      remaining -= DEFAULT_BUFFERSIZE;
+      remaining -= sizeof (buffer);
     }
 
   if (remaining)
     {
-      if (bfd_bread (buffer, remaining, in_bfd) != remaining
-	  || bfd_bwrite (buffer, remaining, out_bfd) != remaining)
-	return FALSE;
+      if (bfd_read (buffer, remaining, in_bfd) != remaining
+	  || bfd_write (buffer, remaining, out_bfd) != remaining)
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 xcoff_write_armap_big (bfd *abfd, unsigned int elength ATTRIBUTE_UNUSED,
 		       struct orl *map, unsigned int orl_count, int stridx)
 {
@@ -1847,7 +2076,7 @@ xcoff_write_armap_big (bfd *abfd, unsign
   /* Explicit cast to int for compiler.  */
   BFD_ASSERT ((int)(str_64 + str_32) == stridx);
 
-  fhdr = xcoff_ardata_big (abfd);
+  fhdr = &x_artdata (abfd)->u.bhdr;
 
   /* xcoff_write_archive_contents_big passes nextoff in symoff. */
   READ20 (fhdr->memoff, prevoff);
@@ -1891,7 +2120,7 @@ xcoff_write_armap_big (bfd *abfd, unsign
 
       symbol_table = bfd_zmalloc (symbol_table_size);
       if (symbol_table == NULL)
-	return FALSE;
+	return false;
 
       hdr = (struct xcoff_ar_hdr_big *) symbol_table;
 
@@ -1951,8 +2180,12 @@ xcoff_write_armap_big (bfd *abfd, unsign
 	    }
 	}
 
-      bfd_bwrite (symbol_table, symbol_table_size, abfd);
-
+      if (bfd_write (symbol_table, symbol_table_size, abfd)
+	  != symbol_table_size)
+	{
+	  free (symbol_table);
+	  return false;
+	}
       free (symbol_table);
 
       prevoff = nextoff;
@@ -1976,7 +2209,7 @@ xcoff_write_armap_big (bfd *abfd, unsign
 
       symbol_table = bfd_zmalloc (symbol_table_size);
       if (symbol_table == NULL)
-	return FALSE;
+	return false;
 
       hdr = (struct xcoff_ar_hdr_big *) symbol_table;
 
@@ -2031,8 +2264,12 @@ xcoff_write_armap_big (bfd *abfd, unsign
 	    }
 	}
 
-      bfd_bwrite (symbol_table, symbol_table_size, abfd);
-
+      if (bfd_write (symbol_table, symbol_table_size, abfd)
+	  != symbol_table_size)
+	{
+	  free (symbol_table);
+	  return false;
+	}
       free (symbol_table);
 
       PRINT20 (fhdr->symoff64, nextoff);
@@ -2040,10 +2277,10 @@ xcoff_write_armap_big (bfd *abfd, unsign
   else
     PRINT20 (fhdr->symoff64, 0);
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_xcoff_write_armap (bfd *abfd, unsigned int elength ATTRIBUTE_UNUSED,
 			struct orl *map, unsigned int orl_count, int stridx)
 {
@@ -2056,16 +2293,17 @@ _bfd_xcoff_write_armap (bfd *abfd, unsig
 /* Write out an XCOFF archive.  We always write an entire archive,
    rather than fussing with the freelist and so forth.  */
 
-static bfd_boolean
+static bool
 xcoff_write_archive_contents_old (bfd *abfd)
 {
   struct archive_iterator iterator;
-  struct xcoff_ar_file_hdr fhdr;
+  struct xcoff_artdata xtdata;
+  struct xcoff_ar_file_hdr *fhdr = &xtdata.u.hdr;
   bfd_size_type count;
   bfd_size_type total_namlen;
   file_ptr *offsets;
-  bfd_boolean makemap;
-  bfd_boolean hasobjects;
+  bool makemap;
+  bool hasobjects;
   file_ptr prevoff, nextoff;
   bfd *sub;
   size_t i;
@@ -2074,10 +2312,10 @@ xcoff_write_archive_contents_old (bfd *a
   char *p;
   char decbuf[XCOFFARMAG_ELEMENT_SIZE + 1];
 
-  memset (&fhdr, 0, sizeof fhdr);
-  (void) memcpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG);
-  sprintf (fhdr.firstmemoff, "%d", SIZEOF_AR_FILE_HDR);
-  sprintf (fhdr.freeoff, "%d", 0);
+  memset (&xtdata, 0, sizeof (xtdata));
+  memcpy (fhdr->magic, XCOFFARMAG, SXCOFFARMAG);
+  sprintf (fhdr->firstmemoff, "%zu", SIZEOF_AR_FILE_HDR);
+  sprintf (fhdr->freeoff, "%d", 0);
 
   count = 0;
   total_namlen = 0;
@@ -2089,22 +2327,41 @@ xcoff_write_archive_contents_old (bfd *a
 	{
 	  sub->arelt_data = bfd_zmalloc (sizeof (struct areltdata));
 	  if (sub->arelt_data == NULL)
-	    return FALSE;
+	    return false;
 	}
       if (arch_xhdr (sub) == NULL)
 	{
 	  struct xcoff_ar_hdr *ahdrp;
 	  struct stat s;
 
-	  if (stat (bfd_get_filename (sub), &s) != 0)
+	  if ((sub->flags & BFD_IN_MEMORY) != 0)
+	    {
+	      /* Assume we just "made" the member, and fake it.  */
+	      struct bfd_in_memory *bim
+		= (struct bfd_in_memory *) sub->iostream;
+	      time (&s.st_mtime);
+	      s.st_uid = getuid ();
+	      s.st_gid = getgid ();
+	      s.st_mode = 0644;
+	      s.st_size = bim->size;
+	    }
+	  else if (stat (bfd_get_filename (sub), &s) != 0)
+	    {
+	      bfd_set_input_error (sub, bfd_error_system_call);
+	      return false;
+	    }
+
+	  if ((abfd->flags & BFD_DETERMINISTIC_OUTPUT) != 0)
 	    {
-	      bfd_set_error (bfd_error_system_call);
-	      return FALSE;
+	      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)
-	    return FALSE;
+	    return false;
 
 	  sprintf (ahdrp->size, "%ld", (long) s.st_size);
 	  sprintf (ahdrp->date, "%ld", (long) s.st_mtime);
@@ -2118,13 +2375,13 @@ xcoff_write_archive_contents_old (bfd *a
     }
   offsets = (file_ptr *) bfd_alloc (abfd, count * sizeof (file_ptr));
   if (offsets == NULL)
-    return FALSE;
+    return false;
 
-  if (bfd_seek (abfd, (file_ptr) SIZEOF_AR_FILE_HDR, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, SIZEOF_AR_FILE_HDR, SEEK_SET) != 0)
+    return false;
 
   makemap = bfd_has_map (abfd);
-  hasobjects = FALSE;
+  hasobjects = false;
   prevoff = 0;
   for (archive_iterator_begin (&iterator, abfd), i = 0;
        archive_iterator_next (&iterator);
@@ -2136,7 +2393,7 @@ xcoff_write_archive_contents_old (bfd *a
       if (makemap && ! hasobjects)
 	{
 	  if (bfd_check_format (iterator.current.member, bfd_object))
-	    hasobjects = TRUE;
+	    hasobjects = true;
 	}
 
       ahdrp = arch_xhdr (iterator.current.member);
@@ -2150,29 +2407,29 @@ xcoff_write_archive_contents_old (bfd *a
 	  *p = ' ';
 
       if (!do_pad (abfd, iterator.current.leading_padding))
-	return FALSE;
+	return false;
 
       BFD_ASSERT (iterator.current.offset == bfd_tell (abfd));
       namlen = iterator.current.padded_namlen;
-      if (bfd_bwrite (ahdrp, SIZEOF_AR_HDR, abfd) != SIZEOF_AR_HDR
-	  || bfd_bwrite (iterator.current.name, namlen, abfd) != namlen
-	  || bfd_bwrite (XCOFFARFMAG, SXCOFFARFMAG, abfd) != SXCOFFARFMAG
+      if (bfd_write (ahdrp, SIZEOF_AR_HDR, abfd) != SIZEOF_AR_HDR
+	  || bfd_write (iterator.current.name, namlen, abfd) != namlen
+	  || bfd_write (XCOFFARFMAG, SXCOFFARFMAG, abfd) != SXCOFFARFMAG
 	  || bfd_seek (iterator.current.member, 0, SEEK_SET) != 0
 	  || !do_copy (abfd, iterator.current.member)
 	  || !do_pad (abfd, iterator.current.trailing_padding))
-	return FALSE;
+	return false;
 
       offsets[i] = iterator.current.offset;
       prevoff = iterator.current.offset;
     }
 
-  sprintf (fhdr.lastmemoff, "%ld", (long) prevoff);
+  sprintf (fhdr->lastmemoff, "%ld", (long) prevoff);
 
   /* Write out the member table.  */
 
   nextoff = iterator.next.offset;
   BFD_ASSERT (nextoff == bfd_tell (abfd));
-  sprintf (fhdr.memoff, "%ld", (long) nextoff);
+  sprintf (fhdr->memoff, "%ld", (long) nextoff);
 
   memset (&ahdr, 0, sizeof ahdr);
   sprintf (ahdr.size, "%ld", (long) (XCOFFARMAG_ELEMENT_SIZE
@@ -2204,22 +2461,20 @@ xcoff_write_archive_contents_old (bfd *a
     if (*p == '\0')
       *p = ' ';
 
-  if ((bfd_bwrite (&ahdr, (bfd_size_type) SIZEOF_AR_HDR, abfd)
-       != SIZEOF_AR_HDR)
-      || (bfd_bwrite (XCOFFARFMAG, (bfd_size_type) SXCOFFARFMAG, abfd)
-	  != SXCOFFARFMAG))
-    return FALSE;
+  if ((bfd_write (&ahdr, SIZEOF_AR_HDR, abfd) != SIZEOF_AR_HDR)
+      || bfd_write (XCOFFARFMAG, SXCOFFARFMAG, abfd) != SXCOFFARFMAG)
+    return false;
 
   sprintf (decbuf, "%-12ld", (long) count);
-  if (bfd_bwrite (decbuf, (bfd_size_type) XCOFFARMAG_ELEMENT_SIZE, abfd)
+  if (bfd_write (decbuf, XCOFFARMAG_ELEMENT_SIZE, abfd)
       != XCOFFARMAG_ELEMENT_SIZE)
-    return FALSE;
+    return false;
   for (i = 0; i < (size_t) count; i++)
     {
       sprintf (decbuf, "%-12ld", (long) offsets[i]);
-      if (bfd_bwrite (decbuf, (bfd_size_type) XCOFFARMAG_ELEMENT_SIZE,
-		      abfd) != XCOFFARMAG_ELEMENT_SIZE)
-	return FALSE;
+      if (bfd_write (decbuf, XCOFFARMAG_ELEMENT_SIZE, abfd)
+	  != XCOFFARMAG_ELEMENT_SIZE)
+	return false;
     }
   for (sub = abfd->archive_head; sub != NULL; sub = sub->archive_next)
     {
@@ -2228,49 +2483,51 @@ xcoff_write_archive_contents_old (bfd *a
 
       name = normalize_filename (sub);
       namlen = strlen (name);
-      if (bfd_bwrite (name, namlen + 1, abfd) != namlen + 1)
-	return FALSE;
+      if (bfd_write (name, namlen + 1, abfd) != namlen + 1)
+	return false;
     }
 
   if (! do_pad (abfd, size & 1))
-    return FALSE;
+    return false;
 
   /* Write out the armap, if appropriate.  */
   if (! makemap || ! hasobjects)
-    sprintf (fhdr.symoff, "%d", 0);
+    sprintf (fhdr->symoff, "%d", 0);
   else
     {
       BFD_ASSERT (nextoff == bfd_tell (abfd));
-      sprintf (fhdr.symoff, "%ld", (long) nextoff);
-      bfd_ardata (abfd)->tdata = &fhdr;
-      if (! _bfd_compute_and_write_armap (abfd, 0))
-	return FALSE;
+      sprintf (fhdr->symoff, "%ld", (long) nextoff);
+      bfd_ardata (abfd)->tdata = &xtdata;
+      bool ret = _bfd_compute_and_write_armap (abfd, 0);
+      bfd_ardata (abfd)->tdata = NULL;
+      if (!ret)
+	return false;
     }
 
   /* Write out the archive file header.  */
 
   /* We need spaces, not null bytes, in the header.  */
-  for (p = (char *) &fhdr; p < (char *) &fhdr + SIZEOF_AR_FILE_HDR; p++)
+  for (p = (char *) fhdr; p < (char *) fhdr + SIZEOF_AR_FILE_HDR; p++)
     if (*p == '\0')
       *p = ' ';
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || (bfd_bwrite (&fhdr, (bfd_size_type) SIZEOF_AR_FILE_HDR, abfd)
-	  != SIZEOF_AR_FILE_HDR))
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || (bfd_write (fhdr, SIZEOF_AR_FILE_HDR, abfd) != SIZEOF_AR_FILE_HDR))
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 xcoff_write_archive_contents_big (bfd *abfd)
 {
-  struct xcoff_ar_file_hdr_big fhdr;
+  struct xcoff_artdata xtdata;
+  struct xcoff_ar_file_hdr_big *fhdr = &xtdata.u.bhdr;
   bfd_size_type count;
   bfd_size_type total_namlen;
   file_ptr *offsets;
-  bfd_boolean makemap;
-  bfd_boolean hasobjects;
+  bool makemap;
+  bool hasobjects;
   file_ptr prevoff, nextoff;
   bfd *current_bfd;
   size_t i;
@@ -2280,15 +2537,15 @@ xcoff_write_archive_contents_big (bfd *a
   bfd_vma member_table_size;
   struct archive_iterator iterator;
 
-  memset (&fhdr, 0, SIZEOF_AR_FILE_HDR_BIG);
-  memcpy (fhdr.magic, XCOFFARMAGBIG, SXCOFFARMAG);
+  memset (&xtdata, 0, sizeof (xtdata));
+  memcpy (fhdr->magic, XCOFFARMAGBIG, SXCOFFARMAG);
 
-  if (bfd_seek (abfd, (file_ptr) SIZEOF_AR_FILE_HDR_BIG, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, SIZEOF_AR_FILE_HDR_BIG, SEEK_SET) != 0)
+    return false;
 
   /* Calculate count and total_namlen.  */
   makemap = bfd_has_map (abfd);
-  hasobjects = FALSE;
+  hasobjects = false;
   for (current_bfd = abfd->archive_head, count = 0, total_namlen = 0;
        current_bfd != NULL;
        current_bfd = current_bfd->archive_next, count++)
@@ -2298,14 +2555,14 @@ xcoff_write_archive_contents_big (bfd *a
       if (makemap
 	  && ! hasobjects
 	  && bfd_check_format (current_bfd, bfd_object))
-	hasobjects = TRUE;
+	hasobjects = true;
 
       if (current_bfd->arelt_data == NULL)
 	{
 	  size = sizeof (struct areltdata);
 	  current_bfd->arelt_data = bfd_zmalloc (size);
 	  if (current_bfd->arelt_data == NULL)
-	    return FALSE;
+	    return false;
 	}
 
       if (arch_xhdr_big (current_bfd) == NULL)
@@ -2313,18 +2570,34 @@ xcoff_write_archive_contents_big (bfd *a
 	  struct xcoff_ar_hdr_big *ahdrp;
 	  struct stat s;
 
-	  /* XXX This should actually be a call to stat64 (at least on
-	     32-bit machines).
-	     XXX This call will fail if the original object is not found.  */
-	  if (stat (bfd_get_filename (current_bfd), &s) != 0)
+	  if ((current_bfd->flags & BFD_IN_MEMORY) != 0)
 	    {
-	      bfd_set_error (bfd_error_system_call);
-	      return FALSE;
+	      /* Assume we just "made" the member, and fake it.  */
+	      struct bfd_in_memory *bim
+		= (struct bfd_in_memory *) current_bfd->iostream;
+	      time (&s.st_mtime);
+	      s.st_uid = getuid ();
+	      s.st_gid = getgid ();
+	      s.st_mode = 0644;
+	      s.st_size = bim->size;
+	    }
+	  else if (stat (bfd_get_filename (current_bfd), &s) != 0)
+	    {
+	      bfd_set_input_error (current_bfd, 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)
-	    return FALSE;
+	    return false;
 
 	  PRINT20 (ahdrp->size, s.st_size);
 	  PRINT12 (ahdrp->date, s.st_mtime);
@@ -2342,7 +2615,7 @@ xcoff_write_archive_contents_big (bfd *a
     {
       offsets = (file_ptr *) bfd_malloc (count * sizeof (file_ptr));
       if (offsets == NULL)
-	return FALSE;
+	return false;
     }
 
   prevoff = 0;
@@ -2361,20 +2634,20 @@ xcoff_write_archive_contents_big (bfd *a
       if (!do_pad (abfd, iterator.current.leading_padding))
 	{
 	  free (offsets);
-	  return FALSE;
+	  return false;
 	}
 
       BFD_ASSERT (iterator.current.offset == bfd_tell (abfd));
       namlen = iterator.current.padded_namlen;
-      if (bfd_bwrite (ahdrp, SIZEOF_AR_HDR_BIG, abfd) != SIZEOF_AR_HDR_BIG
-	  || bfd_bwrite (iterator.current.name, namlen, abfd) != namlen
-	  || bfd_bwrite (XCOFFARFMAG, SXCOFFARFMAG, abfd) != SXCOFFARFMAG
+      if (bfd_write (ahdrp, SIZEOF_AR_HDR_BIG, abfd) != SIZEOF_AR_HDR_BIG
+	  || bfd_write (iterator.current.name, namlen, abfd) != namlen
+	  || bfd_write (XCOFFARFMAG, SXCOFFARFMAG, abfd) != SXCOFFARFMAG
 	  || bfd_seek (iterator.current.member, 0, SEEK_SET) != 0
 	  || !do_copy (abfd, iterator.current.member)
 	  || !do_pad (abfd, iterator.current.trailing_padding))
 	{
 	  free (offsets);
-	  return FALSE;
+	  return false;
 	}
 
       offsets[i] = iterator.current.offset;
@@ -2383,8 +2656,8 @@ xcoff_write_archive_contents_big (bfd *a
 
   if (count)
     {
-      PRINT20 (fhdr.firstmemoff, offsets[0]);
-      PRINT20 (fhdr.lastmemoff, prevoff);
+      PRINT20 (fhdr->firstmemoff, offsets[0]);
+      PRINT20 (fhdr->lastmemoff, prevoff);
     }
 
   /* Write out the member table.
@@ -2422,7 +2695,7 @@ xcoff_write_archive_contents_big (bfd *a
   if (member_table == NULL)
     {
       free (offsets);
-      return FALSE;
+      return false;
     }
 
   hdr = (struct xcoff_ar_hdr_big *) member_table;
@@ -2471,12 +2744,12 @@ xcoff_write_archive_contents_big (bfd *a
       mt += namlen + 1;
     }
 
-  if (bfd_bwrite (member_table, member_table_size, abfd) != member_table_size)
-    return FALSE;
+  if (bfd_write (member_table, member_table_size, abfd) != member_table_size)
+    return false;
 
   free (member_table);
 
-  PRINT20 (fhdr.memoff, nextoff);
+  PRINT20 (fhdr->memoff, nextoff);
 
   prevoff = nextoff;
   nextoff += member_table_size;
@@ -2484,30 +2757,32 @@ xcoff_write_archive_contents_big (bfd *a
   /* Write out the armap, if appropriate.  */
 
   if (! makemap || ! hasobjects)
-    PRINT20 (fhdr.symoff, 0);
+    PRINT20 (fhdr->symoff, 0);
   else
     {
       BFD_ASSERT (nextoff == bfd_tell (abfd));
 
-      /* Save nextoff in fhdr.symoff so the armap routine can use it.  */
-      PRINT20 (fhdr.symoff, nextoff);
+      /* Save nextoff in fhdr->symoff so the armap routine can use it.  */
+      PRINT20 (fhdr->symoff, nextoff);
 
-      bfd_ardata (abfd)->tdata = &fhdr;
-      if (! _bfd_compute_and_write_armap (abfd, 0))
-	return FALSE;
+      bfd_ardata (abfd)->tdata = &xtdata;
+      bool ret = _bfd_compute_and_write_armap (abfd, 0);
+      bfd_ardata (abfd)->tdata = NULL;
+      if (!ret)
+	return false;
     }
 
   /* Write out the archive file header.  */
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || (bfd_bwrite (&fhdr, (bfd_size_type) SIZEOF_AR_FILE_HDR_BIG,
-		      abfd) != SIZEOF_AR_FILE_HDR_BIG))
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || (bfd_write (fhdr, SIZEOF_AR_FILE_HDR_BIG, abfd)
+	  != SIZEOF_AR_FILE_HDR_BIG))
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_xcoff_write_archive_contents (bfd *abfd)
 {
   if (! xcoff_big_format_p (abfd))
@@ -2566,11 +2841,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)
@@ -2726,7 +3003,7 @@ xcoff_swap_ldrel_out (bfd *abfd, const s
 }
 
 
-bfd_boolean
+bool
 xcoff_reloc_type_noop (bfd *input_bfd ATTRIBUTE_UNUSED,
 		       asection *input_section ATTRIBUTE_UNUSED,
 		       bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -2736,12 +3013,13 @@ xcoff_reloc_type_noop (bfd *input_bfd AT
 		       bfd_vma val ATTRIBUTE_UNUSED,
 		       bfd_vma addend ATTRIBUTE_UNUSED,
 		       bfd_vma *relocation ATTRIBUTE_UNUSED,
-		       bfd_byte *contents ATTRIBUTE_UNUSED)
+		       bfd_byte *contents ATTRIBUTE_UNUSED,
+		       struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 xcoff_reloc_type_fail (bfd *input_bfd,
 		       asection *input_section ATTRIBUTE_UNUSED,
 		       bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -2751,17 +3029,18 @@ xcoff_reloc_type_fail (bfd *input_bfd,
 		       bfd_vma val ATTRIBUTE_UNUSED,
 		       bfd_vma addend ATTRIBUTE_UNUSED,
 		       bfd_vma *relocation ATTRIBUTE_UNUSED,
-		       bfd_byte *contents ATTRIBUTE_UNUSED)
+		       bfd_byte *contents ATTRIBUTE_UNUSED,
+		       struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   _bfd_error_handler
     /* xgettext: c-format */
     (_("%pB: unsupported relocation type %#x"),
      input_bfd, (unsigned int) rel->r_type);
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 xcoff_reloc_type_pos (bfd *input_bfd ATTRIBUTE_UNUSED,
 		      asection *input_section ATTRIBUTE_UNUSED,
 		      bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -2771,13 +3050,14 @@ xcoff_reloc_type_pos (bfd *input_bfd ATT
 		      bfd_vma val,
 		      bfd_vma addend,
 		      bfd_vma *relocation,
-		      bfd_byte *contents ATTRIBUTE_UNUSED)
+		      bfd_byte *contents ATTRIBUTE_UNUSED,
+		      struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   *relocation = val + addend;
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 xcoff_reloc_type_neg (bfd *input_bfd ATTRIBUTE_UNUSED,
 		      asection *input_section ATTRIBUTE_UNUSED,
 		      bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -2787,13 +3067,14 @@ xcoff_reloc_type_neg (bfd *input_bfd ATT
 		      bfd_vma val,
 		      bfd_vma addend,
 		      bfd_vma *relocation,
-		      bfd_byte *contents ATTRIBUTE_UNUSED)
+		      bfd_byte *contents ATTRIBUTE_UNUSED,
+		      struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
-  *relocation = addend - val;
-  return TRUE;
+  *relocation = - val - addend;
+  return true;
 }
 
-bfd_boolean
+bool
 xcoff_reloc_type_rel (bfd *input_bfd ATTRIBUTE_UNUSED,
 		      asection *input_section,
 		      bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -2803,9 +3084,10 @@ xcoff_reloc_type_rel (bfd *input_bfd ATT
 		      bfd_vma val,
 		      bfd_vma addend,
 		      bfd_vma *relocation,
-		      bfd_byte *contents ATTRIBUTE_UNUSED)
+		      bfd_byte *contents ATTRIBUTE_UNUSED,
+		      struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
-  howto->pc_relative = TRUE;
+  howto->pc_relative = true;
 
   /* A PC relative reloc includes the section address.  */
   addend += input_section->vma;
@@ -2813,25 +3095,26 @@ xcoff_reloc_type_rel (bfd *input_bfd ATT
   *relocation = val + addend;
   *relocation -= (input_section->output_section->vma
 		  + input_section->output_offset);
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 xcoff_reloc_type_toc (bfd *input_bfd,
 		      asection *input_section ATTRIBUTE_UNUSED,
 		      bfd *output_bfd,
 		      struct internal_reloc *rel,
-		      struct internal_syment *sym,
+		      struct internal_syment *sym ATTRIBUTE_UNUSED,
 		      struct reloc_howto_struct *howto ATTRIBUTE_UNUSED,
 		      bfd_vma val,
 		      bfd_vma addend ATTRIBUTE_UNUSED,
 		      bfd_vma *relocation,
-		      bfd_byte *contents ATTRIBUTE_UNUSED)
+		      bfd_byte *contents ATTRIBUTE_UNUSED,
+		      struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   struct xcoff_link_hash_entry *h;
 
   if (0 > rel->r_symndx)
-    return FALSE;
+    return false;
 
   h = obj_xcoff_sym_hashes (input_bfd)[rel->r_symndx];
 
@@ -2844,7 +3127,7 @@ xcoff_reloc_type_toc (bfd *input_bfd,
 	    (_("%pB: TOC reloc at %#" PRIx64 " to symbol `%s' with no TOC entry"),
 	     input_bfd, (uint64_t) rel->r_vaddr, h->root.root.string);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       BFD_ASSERT ((h->flags & XCOFF_SET_TOC) == 0);
@@ -2852,12 +3135,20 @@ xcoff_reloc_type_toc (bfd *input_bfd,
 	      + h->toc_section->output_offset);
     }
 
-  *relocation = ((val - xcoff_data (output_bfd)->toc)
-		 - (sym->n_value - xcoff_data (input_bfd)->toc));
-  return TRUE;
+  /* We can't use the preexisting value written down by the
+     assembly, as R_TOCU needs to be adjusted when the final
+     R_TOCL value is signed.  */
+  *relocation = val - xcoff_data (output_bfd)->toc;
+
+  if (rel->r_type == R_TOCU)
+    *relocation = ((*relocation + 0x8000) >> 16) & 0xffff;
+  if (rel->r_type == R_TOCL)
+    *relocation = *relocation & 0x0000ffff;
+
+  return true;
 }
 
-bfd_boolean
+bool
 xcoff_reloc_type_ba (bfd *input_bfd ATTRIBUTE_UNUSED,
 		     asection *input_section ATTRIBUTE_UNUSED,
 		     bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -2867,17 +3158,18 @@ xcoff_reloc_type_ba (bfd *input_bfd ATTR
 		     bfd_vma val,
 		     bfd_vma addend,
 		     bfd_vma *relocation,
-		     bfd_byte *contents ATTRIBUTE_UNUSED)
+		     bfd_byte *contents ATTRIBUTE_UNUSED,
+		     struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   howto->src_mask &= ~3;
   howto->dst_mask = howto->src_mask;
 
   *relocation = val + addend;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 xcoff_reloc_type_br (bfd *input_bfd,
 		     asection *input_section,
 		     bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -2887,13 +3179,16 @@ xcoff_reloc_type_br (bfd *input_bfd,
 		     bfd_vma val,
 		     bfd_vma addend,
 		     bfd_vma *relocation,
-		     bfd_byte *contents)
+		     bfd_byte *contents,
+		     struct bfd_link_info *info)
 {
   struct xcoff_link_hash_entry *h;
   bfd_vma section_offset;
+  struct xcoff_stub_hash_entry *stub_entry = NULL;
+  enum xcoff_stub_type stub_type;
 
   if (0 > rel->r_symndx)
-    return FALSE;
+    return false;
 
   h = obj_xcoff_sym_hashes (input_bfd)[rel->r_symndx];
   section_offset = rel->r_vaddr - input_section->vma;
@@ -2944,6 +3239,27 @@ xcoff_reloc_type_br (bfd *input_bfd,
       howto->complain_on_overflow = complain_overflow_dont;
     }
 
+  /* Check if a stub is needed.  */
+  stub_type = bfd_xcoff_type_of_stub (input_section, rel, val, h);
+  if (stub_type != xcoff_stub_none)
+    {
+      asection *stub_csect;
+
+      stub_entry = bfd_xcoff_get_stub_entry (input_section, h, info);
+      if (stub_entry == NULL)
+	{
+	  _bfd_error_handler (_("Unable to find the stub entry targeting %s"),
+			      h->root.root.string);
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
+
+      stub_csect = stub_entry->hcsect->root.u.def.section;
+      val = (stub_entry->stub_offset
+	     + stub_csect->output_section->vma
+	     + stub_csect->output_offset);
+    }
+
   /* The original PC-relative relocation is biased by -r_vaddr, so adding
      the value below will give the absolute target address.  */
   *relocation = val + addend + rel->r_vaddr;
@@ -2968,22 +3284,22 @@ xcoff_reloc_type_br (bfd *input_bfd,
       bfd_put_32 (input_bfd, insn, ptr);
 
       /* Make the howto absolute too.  */
-      howto->pc_relative = FALSE;
+      howto->pc_relative = false;
       howto->complain_on_overflow = complain_overflow_bitfield;
     }
   else
     {
       /* Use a PC-relative howto and subtract the instruction's address
 	 from the target address we calculated above.  */
-      howto->pc_relative = TRUE;
+      howto->pc_relative = true;
       *relocation -= (input_section->output_section->vma
 		      + input_section->output_offset
 		      + section_offset);
     }
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 xcoff_reloc_type_crel (bfd *input_bfd ATTRIBUTE_UNUSED,
 		       asection *input_section,
 		       bfd *output_bfd ATTRIBUTE_UNUSED,
@@ -2993,9 +3309,10 @@ xcoff_reloc_type_crel (bfd *input_bfd AT
 		       bfd_vma val ATTRIBUTE_UNUSED,
 		       bfd_vma addend,
 		       bfd_vma *relocation,
-		       bfd_byte *contents ATTRIBUTE_UNUSED)
+		       bfd_byte *contents ATTRIBUTE_UNUSED,
+		       struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
-  howto->pc_relative = TRUE;
+  howto->pc_relative = true;
   howto->src_mask &= ~3;
   howto->dst_mask = howto->src_mask;
 
@@ -3005,20 +3322,94 @@ xcoff_reloc_type_crel (bfd *input_bfd AT
   *relocation = val + addend;
   *relocation -= (input_section->output_section->vma
 		  + input_section->output_offset);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+bool
+xcoff_reloc_type_tls (bfd *input_bfd ATTRIBUTE_UNUSED,
+		      asection *input_section ATTRIBUTE_UNUSED,
+		      bfd *output_bfd ATTRIBUTE_UNUSED,
+		      struct internal_reloc *rel ATTRIBUTE_UNUSED,
+		      struct internal_syment *sym ATTRIBUTE_UNUSED,
+		      struct reloc_howto_struct *howto,
+		      bfd_vma val,
+		      bfd_vma addend,
+		      bfd_vma *relocation,
+		      bfd_byte *contents ATTRIBUTE_UNUSED,
+		      struct bfd_link_info *info ATTRIBUTE_UNUSED)
+{
+  struct xcoff_link_hash_entry *h;
+
+  if (0 > rel->r_symndx)
+    return false;
+
+  h = obj_xcoff_sym_hashes (input_bfd)[rel->r_symndx];
+
+  /* R_TLSML is handled by the loader but must be from a
+     TOC entry targeting itslef.  This is already verified in
+     xcoff_link_add_symbols.
+     The value must be 0.  */
+  if (howto->type == R_TLSML)
+    {
+      *relocation = 0;
+      return true;
+    }
+
+  /* The target symbol should always be available even if it's not
+     exported.  */
+  BFD_ASSERT (h != NULL);
+
+  /* TLS relocations must target a TLS symbol.  */
+  if (h->smclas != XMC_TL && h->smclas != XMC_UL)
+    {
+      _bfd_error_handler
+	(_("%pB: TLS relocation at 0x%" PRIx64 " over non-TLS symbol %s (0x%x)\n"),
+	 input_bfd, (uint64_t) rel->r_vaddr, h->root.root.string, h->smclas);
+      return false;
+    }
+
+  /* Local TLS relocations must target a local symbol, ie
+     non-imported. */
+  if ((rel->r_type == R_TLS_LD || rel->r_type == R_TLS_LE)
+      && (((h->flags & XCOFF_DEF_REGULAR) == 0
+       && (h->flags & XCOFF_DEF_DYNAMIC) != 0)
+	  || (h->flags & XCOFF_IMPORT) != 0))
+    {
+      _bfd_error_handler
+	(_("%pB: TLS local relocation at 0x%" PRIx64 " over imported symbol %s\n"),
+	 input_bfd, (uint64_t) rel->r_vaddr, h->root.root.string);
+      return false;
+    }
+
+  /* R_TLSM are relocations used by the loader.
+     The value must be 0.  */
+  if (howto->type == R_TLSM)
+    {
+      *relocation = 0;
+      return true;
+    }
+
+  /* Other TLS relocations aims to put offsets from TLS pointers
+     starting at -0x7c00 (or -0x7800 in XCOFF64).  It becomes a
+     simple R_POS relocation as long as .tdata and .tbss addresses
+     start at the same value. This is done in aix ld scripts.
+     TODO: implement optimization when tls size is < 62K.  */
+  *relocation = val + addend;
+
+  return true;
+}
+
+static bool
 xcoff_complain_overflow_dont_func (bfd *input_bfd ATTRIBUTE_UNUSED,
 				   bfd_vma val ATTRIBUTE_UNUSED,
 				   bfd_vma relocation ATTRIBUTE_UNUSED,
 				   struct reloc_howto_struct *
 				      howto ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 xcoff_complain_overflow_bitfield_func (bfd *input_bfd,
 				       bfd_vma val,
 				       bfd_vma relocation,
@@ -3064,7 +3455,7 @@ xcoff_complain_overflow_bitfield_func (b
 	 ones, we are OK, assuming a signed bitfield.  */
       ss = (signmask << howto->rightshift) - 1;
       if ((ss | relocation) != ~ (bfd_vma) 0)
-	return TRUE;
+	return true;
       a &= fieldmask;
     }
 
@@ -3077,7 +3468,7 @@ xcoff_complain_overflow_bitfield_func (b
      away from the location at which it is linked.  */
   if ((unsigned) howto->bitsize + howto->rightshift
       == bfd_arch_bits_per_address (input_bfd))
-    return FALSE;
+    return false;
 
   sum = a + b;
   if (sum < a || (sum & ~ fieldmask) != 0)
@@ -3086,13 +3477,13 @@ xcoff_complain_overflow_bitfield_func (b
 	 for signed operands again.  Here is the overflow test
 	 is as for complain_overflow_signed.  */
       if (((~ (a ^ b)) & (a ^ sum)) & signmask)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 xcoff_complain_overflow_signed_func (bfd *input_bfd,
 				     bfd_vma val,
 				     bfd_vma relocation,
@@ -3118,7 +3509,7 @@ xcoff_complain_overflow_signed_func (bfd
   signmask = ~ (fieldmask >> 1);
   ss = a & signmask;
   if (ss != 0 && ss != ((addrmask >> howto->rightshift) & signmask))
-    return TRUE;
+    return true;
 
   /* We only need this next bit of code if the sign bit of B
      is below the sign bit of A.  This would only happen if
@@ -3148,12 +3539,12 @@ xcoff_complain_overflow_signed_func (bfd
   */
   signmask = (fieldmask >> 1) + 1;
   if (((~ (a ^ b)) & (a ^ sum)) & signmask)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 xcoff_complain_overflow_unsigned_func (bfd *input_bfd,
 				       bfd_vma val,
 				       bfd_vma relocation,
@@ -3186,20 +3577,23 @@ xcoff_complain_overflow_unsigned_func (b
   b = (b & addrmask) >> howto->bitpos;
   sum = (a + b) & addrmask;
   if ((a | b | sum) & ~ fieldmask)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* This is the relocation function for the RS/6000/POWER/PowerPC.
    This is currently the only processor which uses XCOFF; I hope that
    will never change.
 
-   I took the relocation type definitions from two documents:
+   The original version was based on two documents:
    the PowerPC AIX Version 4 Application Binary Interface, First
    Edition (April 1992), and the PowerOpen ABI, Big-Endian
    32-Bit Hardware Implementation (June 30, 1994).  Differences
    between the documents are noted below.
+   Now, IBM has released an official documentation about XCOFF
+   format:
+   https://www.ibm.com/support/knowledgecenter/ssw_aix_72/filesreference/XCOFF.html
 
    Unsupported r_type's
 
@@ -3234,38 +3628,68 @@ xcoff_complain_overflow_unsigned_func (b
    osym = oTOC + on
    oinsn = on + o
    so we must change insn by on - in.
+   This relocation allows the linker to perform optimizations
+   by transforming a load instruction into a add-immediate
+   when possible. The relocation is, then, changed to R_TRLA
+   in the output file.
+   TODO: Currently, the optimisation isn't implemented.
+
+   R_TRL:
+   TOC relative relocation.  Same as R_TOC, except that
+   the optimization isn't allowed
+
+   R_TRLA:
+   TOC relative relocation.  This is a TOC relative load
+   address instruction which have been changed to an add-
+   immediate instruction.
 
    R_GL:
    GL linkage relocation.  The value of this relocation
-   is the address of the entry in the TOC section.
+   is the address of the external symbol in the TOC
+   section.
 
    R_TCL:
    Local object TOC address.  I can't figure out the
    difference between this and case R_GL.
 
-   R_TRL:
-   TOC relative relocation.  A TOC relative load instruction
-   which may be changed to a load address instruction.
-   FIXME: We don't currently implement this optimization.
+   R_RL:
+   The PowerPC AIX ABI describes this as a load which may be
+   changed to a load address.  The PowerOpen ABI says this
+   is the same as case R_POS.
 
-   R_TRLA:
-   TOC relative relocation.  This is a TOC relative load
-   address instruction which may be changed to a load
-   instruction.  FIXME: I don't know if this is the correct
-   implementation.
+   R_RLA:
+   The PowerPC AIX ABI describes this as a load address
+   which may be changed to a load.  The PowerOpen ABI says
+   this is the same as R_POS.
+
+   R_REF:
+   Not a relocation but a way to prevent the garbage
+   collector of AIX linker to remove symbols.
+   This is not needed in our case.
 
    R_BA:
-   Absolute branch.  We don't want to mess with the lower
-   two bits of the instruction.
+   The PowerOpen ABI says this is the same as R_RBA.
+
+   R_RBA:
+   Absolute branch which may be modified to become a
+   relative branch.
+
+   R_BR:
+   The PowerOpen ABI says this is the same as R_RBR.
+
+   R_RBR:
+   A relative branch which may be modified to become an
+   absolute branch.
 
    R_CAI:
    The PowerPC ABI defines this as an absolute call which
    may be modified to become a relative call.  The PowerOpen
    ABI does not define this relocation type.
 
-   R_RBA:
-   Absolute branch which may be modified to become a
-   relative branch.
+   R_CREL:
+   The PowerPC ABI defines this as a relative call which may
+   be modified to become an absolute call.  The PowerOpen
+   ABI does not define this relocation type.
 
    R_RBAC:
    The PowerPC ABI defines this as an absolute branch to a
@@ -3278,31 +3702,35 @@ xcoff_complain_overflow_unsigned_func (b
    fixed address which may be modified to a relative branch.
    The PowerOpen ABI does not define this relocation type.
 
-   R_BR:
-   Relative branch.  We don't want to mess with the lower
-   two bits of the instruction.
+   R_TLS:
+   Thread-local storage relocation using general-dynamic
+   model.
 
-   R_CREL:
-   The PowerPC ABI defines this as a relative call which may
-   be modified to become an absolute call.  The PowerOpen
-   ABI does not define this relocation type.
+   R_TLS_IE:
+   Thread-local storage relocation using initial-exec model.
 
-   R_RBR:
-   A relative branch which may be modified to become an
-   absolute branch.
+   R_TLS_LD:
+   Thread-local storage relocation using local-dynamic model.
 
-   R_RL:
-   The PowerPC AIX ABI describes this as a load which may be
-   changed to a load address.  The PowerOpen ABI says this
-   is the same as case R_POS.
+   R_TLS_LE:
+   Thread-local storage relocation using local-exec model.
 
-   R_RLA:
-   The PowerPC AIX ABI describes this as a load address
-   which may be changed to a load.  The PowerOpen ABI says
-   this is the same as R_POS.
+   R_TLSM:
+   Tread-local storage relocation used by the loader.
+
+   R_TLSML:
+   Tread-local storage relocation used by the loader.
+
+   R_TOCU:
+   Upper TOC relative relocation. The value is the
+   high-order 16 bit of a TOC relative relocation.
+
+   R_TOCL:
+   Lower TOC relative relocation. The value is the
+   low-order 16 bit of a TOC relative relocation.
 */
 
-bfd_boolean
+bool
 xcoff_ppc_relocate_section (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -3336,21 +3764,33 @@ xcoff_ppc_relocate_section (bfd *output_
       if (rel->r_type == R_REF)
 	continue;
 
-      /* howto */
-      howto.type = rel->r_type;
-      howto.rightshift = 0;
-      howto.bitsize = (rel->r_size & 0x1f) + 1;
-      howto.size = howto.bitsize > 16 ? 2 : 1;
-      howto.pc_relative = FALSE;
-      howto.bitpos = 0;
+      /* Retrieve default value in HOWTO table and fix up according
+	 to r_size field, if it can be different.
+	 This should be made during relocation reading but the algorithms
+	 are expecting constant howtos.  */
+      memcpy (&howto, &xcoff_howto_table[rel->r_type], sizeof (howto));
+      if (howto.bitsize != (rel->r_size & 0x1f) + 1)
+	{
+	  switch (rel->r_type)
+	    {
+	    case R_POS:
+	    case R_NEG:
+	      howto.bitsize = (rel->r_size & 0x1f) + 1;
+	      howto.size = HOWTO_RSIZE (howto.bitsize > 16 ? 4 : 2);
+	      howto.src_mask = howto.dst_mask = N_ONES (howto.bitsize);
+	      break;
+
+	    default:
+	      _bfd_error_handler
+		(_("%pB: relocation (%d) at 0x%" PRIx64 " has wrong r_rsize (0x%x)\n"),
+		 input_bfd, rel->r_type, (uint64_t) rel->r_vaddr, rel->r_size);
+	      return false;
+	    }
+	}
+
       howto.complain_on_overflow = (rel->r_size & 0x80
 				    ? complain_overflow_signed
 				    : complain_overflow_bitfield);
-      howto.special_function = NULL;
-      howto.name = "internal";
-      howto.partial_inplace = TRUE;
-      howto.src_mask = howto.dst_mask = N_ONES (howto.bitsize);
-      howto.pcrel_offset = FALSE;
 
       /* symbol */
       val = 0;
@@ -3389,7 +3829,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)
@@ -3420,8 +3861,8 @@ xcoff_ppc_relocate_section (bfd *output_
       if (rel->r_type >= XCOFF_MAX_CALCULATE_RELOCATION
 	  || !((*xcoff_calculate_relocation[rel->r_type])
 	       (input_bfd, input_section, output_bfd, rel, sym, &howto, val,
-		addend, &relocation, contents)))
-	return FALSE;
+		addend, &relocation, contents, info)))
+	return false;
 
       /* address */
       address = rel->r_vaddr - input_section->vma;
@@ -3431,7 +3872,7 @@ xcoff_ppc_relocate_section (bfd *output_
 	abort ();
 
       /* Get the value we are going to relocate.  */
-      if (1 == howto.size)
+      if (2 == bfd_get_reloc_size (&howto))
 	value_to_relocate = bfd_get_16 (input_bfd, location);
       else
 	value_to_relocate = bfd_get_32 (input_bfd, location);
@@ -3478,13 +3919,13 @@ xcoff_ppc_relocate_section (bfd *output_
 			       + relocation) & howto.dst_mask));
 
       /* Put the value back in the object file.  */
-      if (1 == howto.size)
+      if (2 == bfd_get_reloc_size (&howto))
 	bfd_put_16 (input_bfd, value_to_relocate, location);
       else
 	bfd_put_32 (input_bfd, value_to_relocate, location);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* gcc-8 warns (*) on all the strncpy calls in this function about
@@ -3504,7 +3945,7 @@ xcoff_ppc_relocate_section (bfd *output_
 # pragma GCC diagnostic push
 # pragma GCC diagnostic ignored "-Wstringop-truncation"
 #endif
-static bfd_boolean
+static bool
 _bfd_xcoff_put_ldsymbol_name (bfd *abfd ATTRIBUTE_UNUSED,
 			      struct xcoff_loader_info *ldinfo,
 			      struct internal_ldsym *ldsym,
@@ -3531,25 +3972,25 @@ _bfd_xcoff_put_ldsymbol_name (bfd *abfd
 	  newstrings = bfd_realloc (ldinfo->strings, newalc);
 	  if (newstrings == NULL)
 	    {
-	      ldinfo->failed = TRUE;
-	      return FALSE;
+	      ldinfo->failed = true;
+	      return false;
 	    }
 	  ldinfo->string_alc = newalc;
 	  ldinfo->strings = newstrings;
 	}
 
-      bfd_put_16 (ldinfo->output_bfd, (bfd_vma) (len + 1),
-		  ldinfo->strings + ldinfo->string_size);
+      ldinfo->strings[ldinfo->string_size] = ((len + 1) >> 8) & 0xff;
+      ldinfo->strings[ldinfo->string_size + 1] = ((len + 1)) & 0xff;
       strcpy (ldinfo->strings + ldinfo->string_size + 2, name);
       ldsym->_l._l_l._l_zeroes = 0;
       ldsym->_l._l_l._l_offset = ldinfo->string_size + 2;
       ldinfo->string_size += len + 3;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 _bfd_xcoff_put_symbol_name (struct bfd_link_info *info,
 			    struct bfd_strtab_hash *strtab,
 			    struct internal_syment *sym,
@@ -3561,17 +4002,17 @@ _bfd_xcoff_put_symbol_name (struct bfd_l
     }
   else
     {
-      bfd_boolean hash;
+      bool hash;
       bfd_size_type indx;
 
       hash = !info->traditional_format;
-      indx = _bfd_stringtab_add (strtab, name, hash, FALSE);
+      indx = _bfd_stringtab_add (strtab, name, hash, false);
       if (indx == (bfd_size_type) -1)
-	return FALSE;
+	return false;
       sym->_n._n_n._n_zeroes = 0;
       sym->_n._n_n._n_offset = STRING_SIZE_SIZE + indx;
     }
-  return TRUE;
+  return true;
 }
 #if GCC_VERSION >= 8000
 # pragma GCC diagnostic pop
@@ -3611,22 +4052,22 @@ xcoff_create_csect_from_smclas (bfd *abf
   return return_value;
 }
 
-static bfd_boolean
+static bool
 xcoff_is_lineno_count_overflow (bfd *abfd ATTRIBUTE_UNUSED, bfd_vma value)
 {
   if (0xffff <= value)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 xcoff_is_reloc_count_overflow (bfd *abfd ATTRIBUTE_UNUSED, bfd_vma value)
 {
   if (0xffff <= value)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 static bfd_vma
@@ -3642,9 +4083,9 @@ xcoff_loader_reloc_offset (bfd *abfd, st
   return bfd_xcoff_ldhdrsz (abfd) + ldhdr->l_nsyms * bfd_xcoff_ldsymsz (abfd);
 }
 
-static bfd_boolean
+static bool
 xcoff_generate_rtinit  (bfd *abfd, const char *init, const char *fini,
-			bfd_boolean rtld)
+			bool rtld)
 {
   bfd_byte filehdr_ext[FILHSZ];
   bfd_byte scnhdr_ext[SCNHSZ];
@@ -3667,7 +4108,7 @@ xcoff_generate_rtinit  (bfd *abfd, const
   char *rtld_name = "__rtld";
 
   if (! bfd_xcoff_rtinit_size (abfd))
-    return FALSE;
+    return false;
 
   initsz = (init == NULL ? 0 : 1 + strlen (init));
   finisz = (fini == NULL ? 0 : 1 + strlen (fini));
@@ -3722,7 +4163,7 @@ xcoff_generate_rtinit  (bfd *abfd, const
   data_buffer = NULL;
   data_buffer = (bfd_byte *) bfd_zmalloc (data_buffer_size);
   if (data_buffer == NULL)
-    return FALSE;
+    return false;
 
   if (initsz)
     {
@@ -3758,7 +4199,10 @@ xcoff_generate_rtinit  (bfd *abfd, const
       string_table_size += 4;
       string_table = (bfd_byte *) bfd_zmalloc (string_table_size);
       if (string_table == NULL)
-	return FALSE;
+	{
+	  free (data_buffer);
+	  return false;
+	}
 
       val = string_table_size;
       bfd_h_put_32 (abfd, val, &string_table[0]);
@@ -3781,7 +4225,7 @@ xcoff_generate_rtinit  (bfd *abfd, const
   syment.n_scnum = 1;
   syment.n_sclass = C_HIDEXT;
   syment.n_numaux = 1;
-  auxent.x_csect.x_scnlen.l = data_buffer_size;
+  auxent.x_csect.x_scnlen.u64 = data_buffer_size;
   auxent.x_csect.x_smtyp = 3 << 3 | XTY_SD;
   auxent.x_csect.x_smclas = XMC_RW;
   bfd_coff_swap_sym_out (abfd, &syment,
@@ -3908,42 +4352,73 @@ xcoff_generate_rtinit  (bfd *abfd, const
   filehdr.f_symptr = scnhdr.s_relptr + scnhdr.s_nreloc * RELSZ;
 
   bfd_coff_swap_filehdr_out (abfd, &filehdr, filehdr_ext);
-  bfd_bwrite (filehdr_ext, FILHSZ, abfd);
   bfd_coff_swap_scnhdr_out (abfd, &scnhdr, scnhdr_ext);
-  bfd_bwrite (scnhdr_ext, SCNHSZ, abfd);
-  bfd_bwrite (data_buffer, data_buffer_size, abfd);
-  bfd_bwrite (reloc_ext, scnhdr.s_nreloc * RELSZ, abfd);
-  bfd_bwrite (syment_ext, filehdr.f_nsyms * SYMESZ, abfd);
-  bfd_bwrite (string_table, string_table_size, abfd);
+  bool ret = true;
+  if (bfd_write (filehdr_ext, FILHSZ, abfd) != FILHSZ
+      || bfd_write (scnhdr_ext, SCNHSZ, abfd) != SCNHSZ
+      || bfd_write (data_buffer, data_buffer_size, abfd) != data_buffer_size
+      || (bfd_write (reloc_ext, scnhdr.s_nreloc * RELSZ, abfd)
+	  != scnhdr.s_nreloc * RELSZ)
+      || (bfd_write (syment_ext, filehdr.f_nsyms * SYMESZ, abfd)
+	  != (bfd_size_type) filehdr.f_nsyms * SYMESZ)
+      || bfd_write (string_table, string_table_size, abfd) != string_table_size)
+    ret = false;
 
+  free (string_table);
   free (data_buffer);
-  data_buffer = NULL;
-
-  return TRUE;
+  return ret;
 }
 
 
 static reloc_howto_type xcoff_dynamic_reloc =
 HOWTO (0,			/* type */
        0,			/* rightshift */
-       2,			/* size (0 = byte, 1 = short, 2 = long) */
+       4,			/* size */
        32,			/* bitsize */
-       FALSE,			/* pc_relative */
+       false,			/* pc_relative */
        0,			/* bitpos */
        complain_overflow_bitfield, /* complain_on_overflow */
        0,			/* special_function */
        "R_POS",			/* name */
-       TRUE,			/* partial_inplace */
+       true,			/* partial_inplace */
        0xffffffff,		/* src_mask */
        0xffffffff,		/* dst_mask */
-       FALSE);			/* pcrel_offset */
+       false);			/* pcrel_offset */
+
+/* Indirect call stub
+   The first word of the code must be modified by filling in
+   the correct TOC offset.  */
+
+static const unsigned long xcoff_stub_indirect_call_code[4] =
+  {
+    0x81820000,	/* lwz r12,0(r2) */
+    0x800c0000,	/* lwz r0,0(r12) */
+    0x7c0903a6,	/* mtctr r0 */
+    0x4e800420,	/* bctr */
+  };
+
+/*  Shared call stub
+    The first word of the code must be modified by filling in
+    the correct TOC offset.
+    This is exactly as the glink code but without the traceback,
+    as it won't be an independent function.  */
+
+static const unsigned long xcoff_stub_shared_call_code[6] =
+  {
+    0x81820000,	/* lwz r12,0(r2) */
+    0x90410014,	/* stw r2,20(r1) */
+    0x800c0000,	/* lwz r0,0(r12) */
+    0x804c0004,	/* lwz r2,4(r12) */
+    0x7c0903a6,	/* mtctr r0 */
+    0x4e800420,	/* bctr */
+  };
 
 /*  glink
 
    The first word of global linkage code must be modified by filling in
    the correct TOC offset.  */
 
-static unsigned long xcoff_glink_code[9] =
+static const unsigned long xcoff_glink_code[9] =
   {
     0x81820000,	/* lwz r12,0(r2) */
     0x90410014,	/* stw r2,20(r1) */
@@ -3956,26 +4431,29 @@ static unsigned long xcoff_glink_code[9]
     0x00000000,	/* traceback table */
   };
 
-/* Table to convert DWARF flags to section names.  */
+/* Table to convert DWARF flags to section names.
+   Remember to update binutils/dwarf.c:debug_displays
+   if new DWARF sections are supported by XCOFF.  */
 
 const struct xcoff_dwsect_name xcoff_dwsect_names[] = {
-  { SSUBTYP_DWINFO,  ".dwinfo",   TRUE },
-  { SSUBTYP_DWLINE,  ".dwline",   TRUE },
-  { SSUBTYP_DWPBNMS, ".dwpbnms",  TRUE },
-  { SSUBTYP_DWPBTYP, ".dwpbtyp",  TRUE },
-  { SSUBTYP_DWARNGE, ".dwarnge",  TRUE },
-  { SSUBTYP_DWABREV, ".dwabrev",  FALSE },
-  { SSUBTYP_DWSTR,   ".dwstr",    TRUE },
-  { SSUBTYP_DWRNGES, ".dwrnges",  TRUE }
+  { SSUBTYP_DWINFO,  ".dwinfo",  ".debug_info",     true },
+  { SSUBTYP_DWLINE,  ".dwline",  ".debug_line",     true },
+  { SSUBTYP_DWPBNMS, ".dwpbnms", ".debug_pubnames", true },
+  { SSUBTYP_DWPBTYP, ".dwpbtyp", ".debug_pubtypes", true },
+  { SSUBTYP_DWARNGE, ".dwarnge", ".debug_aranges",  true },
+  { SSUBTYP_DWABREV, ".dwabrev", ".debug_abbrev",   false },
+  { SSUBTYP_DWSTR,   ".dwstr",   ".debug_str",      true },
+  { SSUBTYP_DWRNGES, ".dwrnges", ".debug_ranges",   true },
+  { SSUBTYP_DWLOC,   ".dwloc",   ".debug_loc",      true },
+  { SSUBTYP_DWFRAME, ".dwframe", ".debug_frame",    true },
+  { SSUBTYP_DWMAC,   ".dwmac",   ".debug_macro",    true }
 };
 
 /* For generic entry points.  */
-#define _bfd_xcoff_close_and_cleanup _bfd_archive_close_and_cleanup
-#define _bfd_xcoff_bfd_free_cached_info _bfd_bool_bfd_true
+#define _bfd_xcoff_close_and_cleanup coff_close_and_cleanup
+#define _bfd_xcoff_bfd_free_cached_info coff_bfd_free_cached_info
 #define _bfd_xcoff_new_section_hook coff_new_section_hook
 #define _bfd_xcoff_get_section_contents _bfd_generic_get_section_contents
-#define _bfd_xcoff_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
 
 /* For copy private data entry points.  */
 #define _bfd_xcoff_bfd_copy_private_bfd_data \
@@ -4017,6 +4495,8 @@ const struct xcoff_dwsect_name xcoff_dws
   coff_bfd_is_target_special_symbol
 #define _bfd_xcoff_get_lineno coff_get_lineno
 #define _bfd_xcoff_find_nearest_line coff_find_nearest_line
+#define _bfd_xcoff_find_nearest_line_with_alt \
+coff_find_nearest_line_with_alt
 #define _bfd_xcoff_find_line coff_find_line
 #define _bfd_xcoff_find_inliner_info coff_find_inliner_info
 #define _bfd_xcoff_bfd_make_debug_symbol coff_bfd_make_debug_symbol
@@ -4075,10 +4555,10 @@ static const struct xcoff_backend_data_r
       RELSZ,
       LINESZ,
       FILNMLEN,
-      TRUE,			/* _bfd_coff_long_filenames */
+      true,			/* _bfd_coff_long_filenames */
       XCOFF_NO_LONG_SECTION_NAMES,  /* _bfd_coff_long_section_names */
       3,			/* _bfd_coff_default_section_alignment_power */
-      FALSE,			/* _bfd_coff_force_symnames_in_strings */
+      false,			/* _bfd_coff_force_symnames_in_strings */
       2,			/* _bfd_coff_debug_string_prefix_length */
       32768,			/* _bfd_coff_max_nscns */
       coff_swap_filehdr_in,
@@ -4102,7 +4582,6 @@ static const struct xcoff_backend_data_r
       xcoff_ppc_relocate_section,
       coff_rtype_to_howto,
       NULL,			/* _bfd_coff_adjust_symndx */
-      _bfd_generic_link_add_one_symbol,
       coff_link_output_has_begun,
       coff_final_link_postscript,
       NULL			/* print_pdata.  */
@@ -4149,6 +4628,14 @@ static const struct xcoff_backend_data_r
     /* rtinit */
     64,				/* _xcoff_rtinit_size */
     xcoff_generate_rtinit,
+
+    /* Stub indirect call.  */
+    &xcoff_stub_indirect_call_code[0],
+    16,				/* _xcoff_stub_indirect_call_size */
+
+    /* Stub shared call.  */
+    &xcoff_stub_shared_call_code[0],
+    24,				/* _xcoff_stub_shared_call_size */
   };
 
 /* The transfer vector that leads the outside world to all of the above.  */
@@ -4167,6 +4654,7 @@ const bfd_target rs6000_xcoff_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
     /* data */
     bfd_getb64,
@@ -4256,10 +4744,10 @@ static const struct xcoff_backend_data_r
       RELSZ,
       LINESZ,
       FILNMLEN,
-      TRUE,			/* _bfd_coff_long_filenames */
+      true,			/* _bfd_coff_long_filenames */
       XCOFF_NO_LONG_SECTION_NAMES,  /* _bfd_coff_long_section_names */
       3,			/* _bfd_coff_default_section_alignment_power */
-      FALSE,			/* _bfd_coff_force_symnames_in_strings */
+      false,			/* _bfd_coff_force_symnames_in_strings */
       2,			/* _bfd_coff_debug_string_prefix_length */
       32768,			/* _bfd_coff_max_nscns */
       coff_swap_filehdr_in,
@@ -4283,7 +4771,6 @@ static const struct xcoff_backend_data_r
       xcoff_ppc_relocate_section,
       coff_rtype_to_howto,
       NULL,			/* _bfd_coff_adjust_symndx */
-      _bfd_generic_link_add_one_symbol,
       coff_link_output_has_begun,
       coff_final_link_postscript,
       NULL			/* print_pdata.  */
@@ -4330,6 +4817,14 @@ static const struct xcoff_backend_data_r
     /* rtinit */
     0,				/* _xcoff_rtinit_size */
     xcoff_generate_rtinit,
+
+    /* Stub indirect call.  */
+    &xcoff_stub_indirect_call_code[0],
+    16,				/* _xcoff_stub_indirect_call_size */
+
+    /* Stub shared call.  */
+    &xcoff_stub_shared_call_code[0],
+    24,				/* _xcoff_stub_shared_call_size */
   };
 
 /* The transfer vector that leads the outside world to all of the above.  */
@@ -4348,6 +4843,7 @@ const bfd_target powerpc_xcoff_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
     /* data */
     bfd_getb64,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-sh.c ./bfd/coff-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-sh.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-sh.c	2026-03-05 02:07:20.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-2025 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>.
@@ -35,10 +35,10 @@
 #include "coff/pe.h"
 
 #ifndef COFF_IMAGE_WITH_PE
-static bfd_boolean sh_align_load_span
+static bool sh_align_load_span
   (bfd *, asection *, bfd_byte *,
-   bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
-   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *);
+   bool (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
+   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bool *);
 
 #define _bfd_sh_align_load_span sh_align_load_span
 #endif
@@ -75,7 +75,7 @@ static bfd_boolean sh_align_load_span
 /* Return TRUE if this relocation should
    appear in the output .reloc section.  */
 
-static bfd_boolean
+static bool
 in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
 	    reloc_howto_type * howto)
 {
@@ -85,13 +85,13 @@ in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED,
 
 static bfd_reloc_status_type
 sh_reloc (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_boolean
+static bool
 sh_relocate_section (bfd *, struct bfd_link_info *, bfd *, asection *,
 		     bfd_byte *, struct internal_reloc *,
 		     struct internal_syment *, asection **);
-static bfd_boolean
+static bool
 sh_align_loads (bfd *, asection *, struct internal_reloc *,
-		bfd_byte *, bfd_boolean *);
+		bfd_byte *, bool *);
 
 /* The supported relocations.  There are a lot of relocations defined
    in coff/internal.h which we do not expect to ever see.  */
@@ -103,17 +103,17 @@ static reloc_howto_type sh_coff_howtos[]
   /* Windows CE */
   HOWTO (R_SH_IMM32CE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_imm32ce",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #else
   EMPTY_HOWTO (2),
 #endif
@@ -127,65 +127,65 @@ static reloc_howto_type sh_coff_howtos[]
 
   HOWTO (R_SH_PCDISP8BY2,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_pcdisp8by2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   EMPTY_HOWTO (11), /* R_SH_PCDISP8 */
 
   HOWTO (R_SH_PCDISP,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 12,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_pcdisp12by2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   EMPTY_HOWTO (13),
 
   HOWTO (R_SH_IMM32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_imm32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (15),
 #ifdef COFF_WITH_PE
   HOWTO (R_SH_IMAGEBASE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "rva32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #else
   EMPTY_HOWTO (16), /* R_SH_IMM8 */
 #endif
@@ -197,171 +197,171 @@ static reloc_howto_type sh_coff_howtos[]
 
   HOWTO (R_SH_PCRELIMM8BY2,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_pcrelimm8by2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_SH_PCRELIMM8BY4,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_pcrelimm8by4",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_SH_IMM16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_imm16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_SWITCH16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_switch16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_SWITCH32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_switch32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_USES,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_uses",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_COUNT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_count",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_ALIGN,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_align",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_CODE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_code",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DATA,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_data",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_LABEL,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_label",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_SWITCH8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 sh_reloc,		/* special_function */
 	 "r_switch8",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 false)			/* pcrel_offset */
 };
 
 #define SH_COFF_HOWTO_COUNT (sizeof sh_coff_howtos / sizeof sh_coff_howtos[0])
@@ -544,7 +544,8 @@ sh_coff_reloc_name_lookup (bfd *abfd ATT
       cache_ptr->addend = 0;					\
     else if (ptr && bfd_asymbol_bfd (ptr) == abfd		\
 	     && ptr->section != (asection *) NULL)		\
-      cache_ptr->addend = - (ptr->section->vma + ptr->value);	\
+      cache_ptr->addend = - (ptr->section->vma			\
+			     + COFF_PE_ADDEND_BIAS (ptr));	\
     else							\
       cache_ptr->addend = 0;					\
     if ((reloc).r_type == R_SH_SWITCH8				\
@@ -597,7 +598,8 @@ sh_reloc (bfd *      abfd,
       && bfd_is_und_section (symbol_in->section))
     return bfd_reloc_undefined;
 
-  if (addr > input_section->size)
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd, input_section,
+				  addr))
     return bfd_reloc_outofrange;
 
   sym_value = get_symbol_value (symbol_in);
@@ -656,7 +658,7 @@ sh_reloc (bfd *      abfd,
 
 #include "coffcode.h"
 
-static bfd_boolean
+static bool
 sh_relax_delete_bytes (bfd *, asection *, bfd_vma, int);
 
 /* This function handles relaxing on the SH.
@@ -702,40 +704,41 @@ sh_relax_delete_bytes (bfd *, asection *
    align load and store instructions on four byte boundaries if we
    can, by swapping them with one of the adjacent instructions.  */
 
-static bfd_boolean
+static bool
 sh_relax_section (bfd *abfd,
 		  asection *sec,
 		  struct bfd_link_info *link_info,
-		  bfd_boolean *again)
+		  bool *again)
 {
   struct internal_reloc *internal_relocs;
-  bfd_boolean have_code;
+  bool have_code;
   struct internal_reloc *irel, *irelend;
   bfd_byte *contents = NULL;
 
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (link_info)
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   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;
+	return false;
     }
 
   internal_relocs = (_bfd_coff_read_internal_relocs
 		     (abfd, sec, link_info->keep_memory,
-		      (bfd_byte *) NULL, FALSE,
+		      (bfd_byte *) NULL, false,
 		      (struct internal_reloc *) NULL));
   if (internal_relocs == NULL)
     goto error_return;
 
-  have_code = FALSE;
+  have_code = false;
 
   irelend = internal_relocs + sec->reloc_count;
   for (irel = internal_relocs; irel < irelend; irel++)
@@ -747,7 +750,7 @@ sh_relax_section (bfd *abfd,
       bfd_signed_vma foff;
 
       if (irel->r_type == R_SH_CODE)
-	have_code = TRUE;
+	have_code = true;
 
       if (irel->r_type != R_SH_USES)
 	continue;
@@ -904,12 +907,7 @@ sh_relax_section (bfd *abfd,
 	 the linker is run.  */
 
       coff_section_data (abfd, sec)->relocs = internal_relocs;
-      coff_section_data (abfd, sec)->keep_relocs = TRUE;
-
       coff_section_data (abfd, sec)->contents = contents;
-      coff_section_data (abfd, sec)->keep_contents = TRUE;
-
-      obj_coff_keep_syms (abfd) = TRUE;
 
       /* Replace the jsr with a bsr.  */
 
@@ -965,7 +963,7 @@ sh_relax_section (bfd *abfd,
       /* That will change things, so, just in case it permits some
 	 other function call to come within range, we should relax
 	 again.  Note that this is not required, and it may be slow.  */
-      *again = TRUE;
+      *again = true;
 
       /* Now check whether we got a COUNT reloc.  */
       if (irelcount >= irelend)
@@ -1006,7 +1004,7 @@ sh_relax_section (bfd *abfd,
      byte boundaries.  */
   if (have_code)
     {
-      bfd_boolean swapped;
+      bool swapped;
 
       /* Get the section contents.  */
       if (contents == NULL)
@@ -1026,12 +1024,7 @@ sh_relax_section (bfd *abfd,
       if (swapped)
 	{
 	  coff_section_data (abfd, sec)->relocs = internal_relocs;
-	  coff_section_data (abfd, sec)->keep_relocs = TRUE;
-
 	  coff_section_data (abfd, sec)->contents = contents;
-	  coff_section_data (abfd, sec)->keep_contents = TRUE;
-
-	  obj_coff_keep_syms (abfd) = TRUE;
 	}
     }
 
@@ -1053,20 +1046,19 @@ sh_relax_section (bfd *abfd,
 	coff_section_data (abfd, sec)->contents = contents;
     }
 
-  return TRUE;
+  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;
+  return false;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 sh_relax_delete_bytes (bfd *abfd,
 		       asection *sec,
 		       bfd_vma addr,
@@ -1128,7 +1120,7 @@ sh_relax_delete_bytes (bfd *abfd,
       struct internal_syment sym;
       int off, adjust, oinsn;
       bfd_signed_vma voff = 0;
-      bfd_boolean overflow;
+      bool overflow;
 
       /* Get the new reloc address.  */
       nraddr = irel->r_vaddr - sec->vma;
@@ -1290,7 +1282,7 @@ sh_relax_delete_bytes (bfd *abfd,
       if (adjust != 0)
 	{
 	  oinsn = insn;
-	  overflow = FALSE;
+	  overflow = false;
 	  switch (irel->r_type)
 	    {
 	    default:
@@ -1301,14 +1293,14 @@ sh_relax_delete_bytes (bfd *abfd,
 	    case R_SH_PCRELIMM8BY2:
 	      insn += adjust / 2;
 	      if ((oinsn & 0xff00) != (insn & 0xff00))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, contents + nraddr);
 	      break;
 
 	    case R_SH_PCDISP:
 	      insn += adjust / 2;
 	      if ((oinsn & 0xf000) != (insn & 0xf000))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, contents + nraddr);
 	      break;
 
@@ -1322,21 +1314,21 @@ sh_relax_delete_bytes (bfd *abfd,
 		    ++insn;
 		}
 	      if ((oinsn & 0xff00) != (insn & 0xff00))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, contents + nraddr);
 	      break;
 
 	    case R_SH_SWITCH8:
 	      voff += adjust;
 	      if (voff < 0 || voff >= 0xff)
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_8 (abfd, (bfd_vma) voff, contents + nraddr);
 	      break;
 
 	    case R_SH_SWITCH16:
 	      voff += adjust;
 	      if (voff < - 0x8000 || voff >= 0x8000)
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_signed_16 (abfd, (bfd_vma) voff, contents + nraddr);
 	      break;
 
@@ -1357,7 +1349,7 @@ sh_relax_delete_bytes (bfd *abfd,
 		(_("%pB: %#" PRIx64 ": fatal: reloc overflow while relaxing"),
 		 abfd, (uint64_t) irel->r_vaddr);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -1374,6 +1366,7 @@ sh_relax_delete_bytes (bfd *abfd,
       bfd_byte *ocontents;
 
       if (o == sec
+	  || (o->flags & SEC_HAS_CONTENTS) == 0
 	  || (o->flags & SEC_RELOC) == 0
 	  || o->reloc_count == 0)
 	continue;
@@ -1382,10 +1375,10 @@ sh_relax_delete_bytes (bfd *abfd,
 	 FALSE, we should free them, if we are permitted to, when we
 	 leave sh_coff_relax_section.  */
       internal_relocs = (_bfd_coff_read_internal_relocs
-			 (abfd, o, TRUE, (bfd_byte *) NULL, FALSE,
+			 (abfd, o, true, (bfd_byte *) NULL, false,
 			  (struct internal_reloc *) NULL));
       if (internal_relocs == NULL)
-	return FALSE;
+	return false;
 
       ocontents = NULL;
       irelscanend = internal_relocs + o->reloc_count;
@@ -1421,7 +1414,7 @@ sh_relax_delete_bytes (bfd *abfd,
 		  else
 		    {
 		      if (!bfd_malloc_and_get_section (abfd, o, &ocontents))
-			return FALSE;
+			return false;
 		      /* We always cache the section contents.
 			 Perhaps, if info->keep_memory is FALSE, we
 			 should free them, if we are permitted to,
@@ -1435,8 +1428,6 @@ sh_relax_delete_bytes (bfd *abfd,
 	      if (val > addr && val < toaddr)
 		bfd_put_32 (abfd, val - count,
 			    ocontents + irelscan->r_vaddr - o->vma);
-
-	      coff_section_data (abfd, o)->keep_contents = TRUE;
 	    }
 	}
     }
@@ -1451,7 +1442,7 @@ sh_relax_delete_bytes (bfd *abfd,
       _bfd_error_handler
 	(_("%pB: fatal: generic symbols retrieved before relaxing"), abfd);
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   /* Adjust all the symbols.  */
@@ -1504,7 +1495,7 @@ sh_relax_delete_bytes (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This is yet another version of the SH opcode table, used to rapidly
@@ -2058,7 +2049,7 @@ sh_insn_info (unsigned int insn)
 
 /* See whether an instruction uses a general purpose register.  */
 
-static bfd_boolean
+static bool
 sh_insn_uses_reg (unsigned int insn,
 		  const struct sh_opcode *op,
 		  unsigned int reg)
@@ -2069,24 +2060,24 @@ sh_insn_uses_reg (unsigned int insn,
 
   if ((f & USES1) != 0
       && USES1_REG (insn) == reg)
-    return TRUE;
+    return true;
   if ((f & USES2) != 0
       && USES2_REG (insn) == reg)
-    return TRUE;
+    return true;
   if ((f & USESR0) != 0
       && reg == 0)
-    return TRUE;
+    return true;
   if ((f & USESAS) && reg == USESAS_REG (insn))
-    return TRUE;
+    return true;
   if ((f & USESR8) && reg == 8)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* See whether an instruction sets a general purpose register.  */
 
-static bfd_boolean
+static bool
 sh_insn_sets_reg (unsigned int insn,
 		  const struct sh_opcode *op,
 		  unsigned int reg)
@@ -2097,35 +2088,35 @@ sh_insn_sets_reg (unsigned int insn,
 
   if ((f & SETS1) != 0
       && SETS1_REG (insn) == reg)
-    return TRUE;
+    return true;
   if ((f & SETS2) != 0
       && SETS2_REG (insn) == reg)
-    return TRUE;
+    return true;
   if ((f & SETSR0) != 0
       && reg == 0)
-    return TRUE;
+    return true;
   if ((f & SETSAS) && reg == SETSAS_REG (insn))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* See whether an instruction uses or sets a general purpose register */
 
-static bfd_boolean
+static bool
 sh_insn_uses_or_sets_reg (unsigned int insn,
 			  const struct sh_opcode *op,
 			  unsigned int reg)
 {
   if (sh_insn_uses_reg (insn, op, reg))
-    return TRUE;
+    return true;
 
   return sh_insn_sets_reg (insn, op, reg);
 }
 
 /* See whether an instruction uses a floating point register.  */
 
-static bfd_boolean
+static bool
 sh_insn_uses_freg (unsigned int insn,
 		   const struct sh_opcode *op,
 		   unsigned int freg)
@@ -2145,20 +2136,20 @@ sh_insn_uses_freg (unsigned int insn,
 
   if ((f & USESF1) != 0
       && (USESF1_REG (insn) & 0xe) == (freg & 0xe))
-    return TRUE;
+    return true;
   if ((f & USESF2) != 0
       && (USESF2_REG (insn) & 0xe) == (freg & 0xe))
-    return TRUE;
+    return true;
   if ((f & USESF0) != 0
       && freg == 0)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* See whether an instruction sets a floating point register.  */
 
-static bfd_boolean
+static bool
 sh_insn_sets_freg (unsigned int insn,
 		   const struct sh_opcode *op,
 		   unsigned int freg)
@@ -2178,20 +2169,20 @@ sh_insn_sets_freg (unsigned int insn,
 
   if ((f & SETSF1) != 0
       && (SETSF1_REG (insn) & 0xe) == (freg & 0xe))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* See whether an instruction uses or sets a floating point register */
 
-static bfd_boolean
+static bool
 sh_insn_uses_or_sets_freg (unsigned int insn,
 			   const struct sh_opcode *op,
 			   unsigned int reg)
 {
   if (sh_insn_uses_freg (insn, op, reg))
-    return TRUE;
+    return true;
 
   return sh_insn_sets_freg (insn, op, reg);
 }
@@ -2201,7 +2192,7 @@ sh_insn_uses_or_sets_freg (unsigned int
    This should return TRUE if there is a conflict, or FALSE if the
    instructions can be swapped safely.  */
 
-static bfd_boolean
+static bool
 sh_insns_conflict (unsigned int i1,
 		   const struct sh_opcode *op1,
 		   unsigned int i2,
@@ -2216,57 +2207,57 @@ sh_insns_conflict (unsigned int i1,
      FIXME: shouldn't test raw opcodes here.  */
   if (((i1 & 0xf0ff) == 0x4066 && (i2 & 0xf000) == 0xf000)
       || ((i2 & 0xf0ff) == 0x4066 && (i1 & 0xf000) == 0xf000))
-    return TRUE;
+    return true;
 
   if ((f1 & (BRANCH | DELAY)) != 0
       || (f2 & (BRANCH | DELAY)) != 0)
-    return TRUE;
+    return true;
 
   if (((f1 | f2) & SETSSP)
       && (f1 & (SETSSP | USESSP))
       && (f2 & (SETSSP | USESSP)))
-    return TRUE;
+    return true;
 
   if ((f1 & SETS1) != 0
       && sh_insn_uses_or_sets_reg (i2, op2, SETS1_REG (i1)))
-    return TRUE;
+    return true;
   if ((f1 & SETS2) != 0
       && sh_insn_uses_or_sets_reg (i2, op2, SETS2_REG (i1)))
-    return TRUE;
+    return true;
   if ((f1 & SETSR0) != 0
       && sh_insn_uses_or_sets_reg (i2, op2, 0))
-    return TRUE;
+    return true;
   if ((f1 & SETSAS)
       && sh_insn_uses_or_sets_reg (i2, op2, SETSAS_REG (i1)))
-    return TRUE;
+    return true;
   if ((f1 & SETSF1) != 0
       && sh_insn_uses_or_sets_freg (i2, op2, SETSF1_REG (i1)))
-    return TRUE;
+    return true;
 
   if ((f2 & SETS1) != 0
       && sh_insn_uses_or_sets_reg (i1, op1, SETS1_REG (i2)))
-    return TRUE;
+    return true;
   if ((f2 & SETS2) != 0
       && sh_insn_uses_or_sets_reg (i1, op1, SETS2_REG (i2)))
-    return TRUE;
+    return true;
   if ((f2 & SETSR0) != 0
       && sh_insn_uses_or_sets_reg (i1, op1, 0))
-    return TRUE;
+    return true;
   if ((f2 & SETSAS)
       && sh_insn_uses_or_sets_reg (i1, op1, SETSAS_REG (i2)))
-    return TRUE;
+    return true;
   if ((f2 & SETSF1) != 0
       && sh_insn_uses_or_sets_freg (i1, op1, SETSF1_REG (i2)))
-    return TRUE;
+    return true;
 
   /* The instructions do not conflict.  */
-  return FALSE;
+  return false;
 }
 
 /* I1 is a load instruction, and I2 is some other instruction.  Return
    TRUE if I1 loads a register which I2 uses.  */
 
-static bfd_boolean
+static bool
 sh_load_use (unsigned int i1,
 	     const struct sh_opcode *op1,
 	     unsigned int i2,
@@ -2277,7 +2268,7 @@ sh_load_use (unsigned int i1,
   f1 = op1->flags;
 
   if ((f1 & LOAD) == 0)
-    return FALSE;
+    return false;
 
   /* If both SETS1 and SETSSP are set, that means a load to a special
      register using postincrement addressing mode, which we don't care
@@ -2285,17 +2276,17 @@ sh_load_use (unsigned int i1,
   if ((f1 & SETS1) != 0
       && (f1 & SETSSP) == 0
       && sh_insn_uses_reg (i2, op2, (i1 & 0x0f00) >> 8))
-    return TRUE;
+    return true;
 
   if ((f1 & SETSR0) != 0
       && sh_insn_uses_reg (i2, op2, 0))
-    return TRUE;
+    return true;
 
   if ((f1 & SETSF1) != 0
       && sh_insn_uses_freg (i2, op2, (i1 & 0x0f00) >> 8))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Try to align loads and stores within a span of memory.  This is
@@ -2311,17 +2302,17 @@ sh_load_use (unsigned int i1,
 #ifdef COFF_WITH_PE
 static
 #endif
-bfd_boolean
+bool
 _bfd_sh_align_load_span (bfd *abfd,
 			 asection *sec,
 			 bfd_byte *contents,
-			 bfd_boolean (*swap) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
+			 bool (*swap) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
 			 void * relocs,
 			 bfd_vma **plabel,
 			 bfd_vma *label_end,
 			 bfd_vma start,
 			 bfd_vma stop,
-			 bfd_boolean *pswapped)
+			 bool *pswapped)
 {
   int dsp = (abfd->arch_info->mach == bfd_mach_sh_dsp
 	     || abfd->arch_info->mach == bfd_mach_sh3_dsp);
@@ -2331,7 +2322,7 @@ _bfd_sh_align_load_span (bfd *abfd,
      desirable.  In fact, it is counter-productive, since it interferes
      with the schedules generated by the compiler.  */
   if (abfd->arch_info->mach == bfd_mach_sh4)
-    return TRUE;
+    return true;
 
   /* If we are linking sh[3]-dsp code, swap the FPU instructions for DSP
      instructions.  */
@@ -2405,14 +2396,14 @@ _bfd_sh_align_load_span (bfd *abfd,
 	  && (prev_op->flags & (LOAD | STORE)) == 0
 	  && ! sh_insns_conflict (prev_insn, prev_op, insn, op))
 	{
-	  bfd_boolean ok;
+	  bool ok;
 
 	  /* The load/store instruction does not have a label, and
 	     there is a previous instruction; PREV_INSN is not
 	     itself a load/store instruction, and PREV_INSN and
 	     INSN do not conflict.  */
 
-	  ok = TRUE;
+	  ok = true;
 
 	  if (i >= start + 4)
 	    {
@@ -2427,7 +2418,7 @@ _bfd_sh_align_load_span (bfd *abfd,
 		 can not swap.  */
 	      if (prev2_op == NULL
 		  || (prev2_op->flags & DELAY) != 0)
-		ok = FALSE;
+		ok = false;
 
 	      /* If the instruction before PREV_INSN is a load,
 		 and it sets a register which INSN uses, then
@@ -2437,14 +2428,14 @@ _bfd_sh_align_load_span (bfd *abfd,
 	      if (ok
 		  && (prev2_op->flags & LOAD) != 0
 		  && sh_load_use (prev2_insn, prev2_op, insn, op))
-		ok = FALSE;
+		ok = false;
 	    }
 
 	  if (ok)
 	    {
 	      if (! (*swap) (abfd, sec, relocs, contents, i - 2))
-		return FALSE;
-	      *pswapped = TRUE;
+		return false;
+	      *pswapped = true;
 	      continue;
 	    }
 	}
@@ -2466,12 +2457,12 @@ _bfd_sh_align_load_span (bfd *abfd,
 	      && (next_op->flags & (LOAD | STORE)) == 0
 	      && ! sh_insns_conflict (insn, op, next_insn, next_op))
 	    {
-	      bfd_boolean ok;
+	      bool ok;
 
 	      /* NEXT_INSN is not itself a load/store instruction,
 		 and it does not conflict with INSN.  */
 
-	      ok = TRUE;
+	      ok = true;
 
 	      /* If PREV_INSN is a load, and it sets a register
 		 which NEXT_INSN uses, then putting NEXT_INSN
@@ -2480,7 +2471,7 @@ _bfd_sh_align_load_span (bfd *abfd,
 	      if (prev_op != NULL
 		  && (prev_op->flags & LOAD) != 0
 		  && sh_load_use (prev_insn, prev_op, next_insn, next_op))
-		ok = FALSE;
+		ok = false;
 
 	      /* If INSN is a load, and it sets a register which
 		 the insn after NEXT_INSN uses, then doing the
@@ -2503,27 +2494,27 @@ _bfd_sh_align_load_span (bfd *abfd,
 		  if (next2_op == NULL
 		      || ((next2_op->flags & (LOAD | STORE)) == 0
 			  && sh_load_use (insn, op, next2_insn, next2_op)))
-		    ok = FALSE;
+		    ok = false;
 		}
 
 	      if (ok)
 		{
 		  if (! (*swap) (abfd, sec, relocs, contents, i))
-		    return FALSE;
-		  *pswapped = TRUE;
+		    return false;
+		  *pswapped = true;
 		  continue;
 		}
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 #endif /* not COFF_IMAGE_WITH_PE */
 
 /* Swap two SH instructions.  */
 
-static bfd_boolean
+static bool
 sh_swap_insns (bfd *      abfd,
 	       asection * sec,
 	       void *     relocs,
@@ -2590,10 +2581,10 @@ sh_swap_insns (bfd *      abfd,
 	{
 	  bfd_byte *loc;
 	  unsigned short insn, oinsn;
-	  bfd_boolean overflow;
+	  bool overflow;
 
 	  loc = contents + irel->r_vaddr - sec->vma;
-	  overflow = FALSE;
+	  overflow = false;
 	  switch (type)
 	    {
 	    default:
@@ -2605,7 +2596,7 @@ sh_swap_insns (bfd *      abfd,
 	      oinsn = insn;
 	      insn += add / 2;
 	      if ((oinsn & 0xff00) != (insn & 0xff00))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, loc);
 	      break;
 
@@ -2614,7 +2605,7 @@ sh_swap_insns (bfd *      abfd,
 	      oinsn = insn;
 	      insn += add / 2;
 	      if ((oinsn & 0xf000) != (insn & 0xf000))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, loc);
 	      break;
 
@@ -2631,7 +2622,7 @@ sh_swap_insns (bfd *      abfd,
 		  oinsn = insn;
 		  insn += add / 2;
 		  if ((oinsn & 0xff00) != (insn & 0xff00))
-		    overflow = TRUE;
+		    overflow = true;
 		  bfd_put_16 (abfd, (bfd_vma) insn, loc);
 		}
 
@@ -2645,12 +2636,12 @@ sh_swap_insns (bfd *      abfd,
 		(_("%pB: %#" PRIx64 ": fatal: reloc overflow while relaxing"),
 		 abfd, (uint64_t) irel->r_vaddr);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look for loads and stores which we can align to four byte
@@ -2658,19 +2649,19 @@ sh_swap_insns (bfd *      abfd,
    this is desirable.  This sets *PSWAPPED if some instruction was
    swapped.  */
 
-static bfd_boolean
+static bool
 sh_align_loads (bfd *abfd,
 		asection *sec,
 		struct internal_reloc *internal_relocs,
 		bfd_byte *contents,
-		bfd_boolean *pswapped)
+		bool *pswapped)
 {
   struct internal_reloc *irel, *irelend;
   bfd_vma *labels = NULL;
   bfd_vma *label, *label_end;
   bfd_size_type amt;
 
-  *pswapped = FALSE;
+  *pswapped = false;
 
   irelend = internal_relocs + sec->reloc_count;
 
@@ -2720,18 +2711,17 @@ sh_align_loads (bfd *abfd,
 
   free (labels);
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (labels != NULL)
-    free (labels);
-  return FALSE;
+  free (labels);
+  return false;
 }
 
 /* This is a modification of _bfd_coff_generic_relocate_section, which
    will handle SH relaxing.  */
 
-static bfd_boolean
+static bool
 sh_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 		     struct bfd_link_info *info,
 		     bfd *input_bfd,
@@ -2783,7 +2773,7 @@ sh_relocate_section (bfd *output_bfd ATT
 		(_("%pB: illegal symbol index %ld in relocs"),
 		 input_bfd, symndx);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  h = obj_coff_sym_hashes (input_bfd)[symndx];
 	  sym = syms + symndx;
@@ -2805,7 +2795,7 @@ sh_relocate_section (bfd *output_bfd ATT
       if (howto == NULL)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
 #ifdef COFF_WITH_PE
@@ -2852,7 +2842,7 @@ sh_relocate_section (bfd *output_bfd ATT
 	  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);
+	       rel->r_vaddr - input_section->vma, true);
 	}
 
       rstat = _bfd_final_link_relocate (howto, input_bfd, input_section,
@@ -2877,7 +2867,12 @@ sh_relocate_section (bfd *output_bfd ATT
 	      name = NULL;
 	    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;
+	      {
+		if (sym->_n._n_n._n_offset < obj_coff_strings_len (input_bfd))
+		  name = obj_coff_strings (input_bfd) + sym->_n._n_n._n_offset;
+		else
+		  name = "?";
+	      }
 	    else
 	      {
 		strncpy (buf, sym->_n._n_name, SYMNMLEN);
@@ -2893,7 +2888,7 @@ sh_relocate_section (bfd *output_bfd ATT
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This is a version of bfd_generic_get_relocated_section_contents
@@ -2904,7 +2899,7 @@ sh_coff_get_relocated_section_contents (
 					struct bfd_link_info *link_info,
 					struct bfd_link_order *link_order,
 					bfd_byte *data,
-					bfd_boolean relocatable,
+					bool relocatable,
 					asymbol **symbols)
 {
   asection *input_section = link_order->u.indirect.section;
@@ -2923,6 +2918,13 @@ sh_coff_get_relocated_section_contents (
 						       relocatable,
 						       symbols);
 
+  bfd_byte *orig_data = data;
+  if (data == NULL)
+    {
+      data = bfd_malloc (input_section->size);
+      if (data == NULL)
+	return NULL;
+    }
   memcpy (data, coff_section_data (input_bfd, input_section)->contents,
 	  (size_t) input_section->size);
 
@@ -2939,8 +2941,8 @@ sh_coff_get_relocated_section_contents (
 	goto error_return;
 
       internal_relocs = (_bfd_coff_read_internal_relocs
-			 (input_bfd, input_section, FALSE, (bfd_byte *) NULL,
-			  FALSE, (struct internal_reloc *) NULL));
+			 (input_bfd, input_section, false, (bfd_byte *) NULL,
+			  false, (struct internal_reloc *) NULL));
       if (internal_relocs == NULL)
 	goto error_return;
 
@@ -2995,12 +2997,11 @@ 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);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
@@ -3044,7 +3045,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)
@@ -3057,24 +3058,24 @@ coff_small_object_p (bfd *abfd)
 
 /* Set the section alignment for the small versions.  */
 
-static bfd_boolean
+static bool
 coff_small_new_section_hook (bfd *abfd, asection *section)
 {
   if (! coff_new_section_hook (abfd, section))
-    return FALSE;
+    return false;
 
   /* We must align to at least a four byte boundary, because longword
      accesses must be on a four byte boundary.  */
   if (section->alignment_power == COFF_DEFAULT_SECTION_ALIGNMENT_POWER)
     section->alignment_power = 2;
 
-  return TRUE;
+  return true;
 }
 
 /* This is copied from bfd_coff_std_swap_table so that we can change
    the default section alignment power.  */
 
-static bfd_coff_backend_data bfd_coff_small_swap_table =
+static const bfd_coff_backend_data bfd_coff_small_swap_table =
 {
   coff_swap_aux_in, coff_swap_sym_in, coff_swap_lineno_in,
   coff_swap_aux_out, coff_swap_sym_out,
@@ -3083,16 +3084,16 @@ static bfd_coff_backend_data bfd_coff_sm
   coff_swap_scnhdr_out,
   FILHSZ, AOUTSZ, SCNHSZ, SYMESZ, AUXESZ, RELSZ, LINESZ, FILNMLEN,
 #ifdef COFF_LONG_FILENAMES
-  TRUE,
+  true,
 #else
-  FALSE,
+  false,
 #endif
   COFF_DEFAULT_LONG_SECTION_NAMES,
   2,
 #ifdef COFF_FORCE_SYMBOLS_IN_STRINGS
-  TRUE,
+  true,
 #else
-  FALSE,
+  false,
 #endif
 #ifdef COFF_DEBUG_STRING_WIDE_PREFIX
   4,
@@ -3107,7 +3108,7 @@ static bfd_coff_backend_data bfd_coff_sm
   coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,
   coff_classify_symbol, coff_compute_section_file_positions,
   coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,
-  coff_adjust_symndx, coff_link_add_one_symbol,
+  coff_adjust_symndx,
   coff_link_output_has_begun, coff_final_link_postscript,
   bfd_pe_print_pdata
 };
@@ -3118,8 +3119,6 @@ static bfd_coff_backend_data bfd_coff_sm
   coff_bfd_free_cached_info
 #define coff_small_get_section_contents \
   coff_get_section_contents
-#define coff_small_get_section_contents_in_window \
-  coff_get_section_contents_in_window
 
 extern const bfd_target sh_coff_small_le_vec;
 
@@ -3139,6 +3138,7 @@ const bfd_target sh_coff_small_vec =
   '/',				/* ar_pad_char */
   15,				/* ar_max_namelen */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
@@ -3196,6 +3196,7 @@ const bfd_target sh_coff_small_le_vec =
   '/',				/* ar_pad_char */
   15,				/* ar_max_namelen */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-stgo32.c ./bfd/coff-stgo32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-stgo32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-stgo32.c	2026-03-05 02:07:20.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-2025 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 bool go32exe_write_object_contents (bfd *);
+static bool go32exe_mkobject (bfd *);
+static bool go32exe_copy_private_bfd_data (bfd *, bfd *);
+
+/* Defined in coff-go32.c.  */
+bool _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)
 	{
@@ -341,84 +176,213 @@ create_go32_stub (bfd *abfd)
 	  close (f);
 	  goto stub_end;
 	}
-      if (! CONST_STRNEQ (magic, "go32stub"))
+      if (! startswith (magic, "go32stub"))
 	{
 	  close (f);
 	  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;
     }
 }
 
 /* If ibfd was a stubbed coff image, copy the stub from that bfd
    to the new obfd.  */
 
-static bfd_boolean
-go32_stubbed_coff_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
+static bool
+go32exe_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   /* Check if both are the same targets.  */
   if (ibfd->xvec != obfd->xvec)
-    return TRUE;
+    return true;
+
+  /* Make sure we have a source stub.  */
+  BFD_ASSERT (coff_data (ibfd)->stub != NULL);
 
-  /* Check if we have a source stub.  */
-  if (coff_data (ibfd)->go32stub == NULL)
-    return TRUE;
-
-  /* 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;
+}
+
+/* Cleanup function, returned from check_format hook.  */
+
+static void
+go32exe_cleanup (bfd *abfd)
+{
+  abfd->origin = 0;
+  coff_object_cleanup (abfd);
 
-  return TRUE;
+  free (go32exe_temp_stub);
+  go32exe_temp_stub = NULL;
+  go32exe_temp_stub_size = 0;
 }
 
-/* coff_object_p only checks 2 bytes F_MAGIC at GO32_STUBSIZE inside the file
-   which is too fragile.  */
+/* 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 const bfd_target *
-go32_check_format (bfd *abfd)
+static bfd_cleanup
+go32exe_check_format (bfd *abfd)
 {
-  char mz[2];
+  struct external_DOS_hdr filehdr_dos;
+  uint16_t num_pages;
+  uint16_t last_page_size;
+  uint32_t header_end;
+  bfd_size_type stubsize;
 
-  if (bfd_bread (mz, 2, abfd) != 2 || mz[0] != 'M' || mz[1] != 'Z')
+  /* 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_read (&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;
+
+  ufile_ptr filesize = bfd_get_file_size (abfd);
+  if (filesize != 0 && stubsize > filesize)
+    goto fail_format;
+
+  /* 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.  */
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    goto fail;
+  go32exe_temp_stub = bfd_malloc (stubsize);
+  if (go32exe_temp_stub == NULL)
+    goto fail;
+  if (bfd_read (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 (go32exe_temp_stub_size < header_end
+      || go32exe_temp_stub_size - header_end < sizeof "go32stub" - 1
+      || !startswith (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 == coff_object_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 bool
+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);
+
+  /* Write the stub.  */
+  abfd->origin = 0;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    return false;
+  if (bfd_write (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 bool
+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 coff_object_p (abfd);
+  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.20200303/bfd/coffswap.h ./bfd/coffswap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coffswap.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coffswap.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic COFF swapping routines, for BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -246,6 +246,33 @@ coff_swap_reloc_out (bfd * abfd, void *
   return bfd_coff_relsz (abfd);
 }
 
+#ifdef TICOFF
+static void
+coff_swap_reloc_v0_in (bfd *abfd, void *src, void *dst)
+{
+  struct external_reloc_v0 *reloc_src = (struct external_reloc_v0 *) src;
+  struct internal_reloc *reloc_dst = (struct internal_reloc *) dst;
+
+  reloc_dst->r_vaddr  = GET_RELOC_VADDR (abfd, reloc_src->r_vaddr);
+  reloc_dst->r_symndx = H_GET_16 (abfd, reloc_src->r_symndx);
+  reloc_dst->r_type   = H_GET_16 (abfd, reloc_src->r_type);
+}
+
+static unsigned int
+coff_swap_reloc_v0_out (bfd *abfd, void *src, void *dst)
+{
+  struct internal_reloc *reloc_src = (struct internal_reloc *) src;
+  struct external_reloc_v0 *reloc_dst = (struct external_reloc_v0 *) dst;
+
+  PUT_RELOC_VADDR (abfd, reloc_src->r_vaddr, reloc_dst->r_vaddr);
+  H_PUT_16 (abfd, reloc_src->r_symndx, reloc_dst->r_symndx);
+  H_PUT_16 (abfd, reloc_src->r_type, reloc_dst->r_type);
+  SWAP_OUT_RELOC_EXTRA (abfd, reloc_src, reloc_dst);
+
+  return bfd_coff_relsz (abfd);
+}
+#endif
+
 #endif /* NO_COFF_RELOCS */
 
 static void
@@ -264,9 +291,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 +313,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);
@@ -381,8 +402,8 @@ coff_swap_aux_in (bfd *abfd,
 		  void * ext1,
 		  int type,
 		  int in_class,
-		  int indx,
-		  int numaux,
+		  int indx ATTRIBUTE_UNUSED,
+		  int numaux ATTRIBUTE_UNUSED,
 		  void * in1)
 {
   AUXENT *ext = (AUXENT *) ext1;
@@ -397,24 +418,14 @@ coff_swap_aux_in (bfd *abfd,
     case C_FILE:
       if (ext->x_file.x_fname[0] == 0)
 	{
-	  in->x_file.x_n.x_zeroes = 0;
-	  in->x_file.x_n.x_offset = H_GET_32 (abfd, ext->x_file.x_n.x_offset);
+	  in->x_file.x_n.x_n.x_zeroes = 0;
+	  in->x_file.x_n.x_n.x_offset = H_GET_32 (abfd, ext->x_file.x_n.x_offset);
 	}
       else
-	{
 #if FILNMLEN != E_FILNMLEN
-#error we need to cope with truncating or extending FILNMLEN
-#else
-	  if (numaux > 1)
-	    {
-	      if (indx == 0)
-		memcpy (in->x_file.x_fname, ext->x_file.x_fname,
-			numaux * sizeof (AUXENT));
-	    }
-	  else
-	    memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
+#error we need to cope with truncating or extending x_fname
 #endif
-	}
+	memcpy (in->x_file.x_n.x_fname, ext->x_file.x_fname, FILNMLEN);
       goto end;
 
     case C_STAT:
@@ -439,7 +450,7 @@ coff_swap_aux_in (bfd *abfd,
       break;
     }
 
-  in->x_sym.x_tagndx.l = H_GET_32 (abfd, ext->x_sym.x_tagndx);
+  in->x_sym.x_tagndx.u32 = H_GET_32 (abfd, ext->x_sym.x_tagndx);
 #ifndef NO_TVNDX
   in->x_sym.x_tvndx = H_GET_16 (abfd, ext->x_sym.x_tvndx);
 #endif
@@ -448,7 +459,7 @@ coff_swap_aux_in (bfd *abfd,
       || ISTAG (in_class))
     {
       in->x_sym.x_fcnary.x_fcn.x_lnnoptr = GET_FCN_LNNOPTR (abfd, ext);
-      in->x_sym.x_fcnary.x_fcn.x_endndx.l = GET_FCN_ENDNDX (abfd, ext);
+      in->x_sym.x_fcnary.x_fcn.x_endndx.u32 = GET_FCN_ENDNDX (abfd, ext);
     }
   else
     {
@@ -501,19 +512,16 @@ coff_swap_aux_out (bfd * abfd,
   switch (in_class)
     {
     case C_FILE:
-      if (in->x_file.x_fname[0] == 0)
+      if (in->x_file.x_n.x_fname[0] == 0)
 	{
 	  H_PUT_32 (abfd, 0, ext->x_file.x_n.x_zeroes);
-	  H_PUT_32 (abfd, in->x_file.x_n.x_offset, ext->x_file.x_n.x_offset);
+	  H_PUT_32 (abfd, in->x_file.x_n.x_n.x_offset, ext->x_file.x_n.x_offset);
 	}
       else
-	{
 #if FILNMLEN != E_FILNMLEN
-#error we need to cope with truncating or extending FILNMLEN
-#else
-	  memcpy (ext->x_file.x_fname, in->x_file.x_fname, FILNMLEN);
+#error we need to cope with truncating or extending xfname
 #endif
-	}
+	memcpy (ext->x_file.x_fname, in->x_file.x_n.x_fname, E_FILNMLEN);
       goto end;
 
     case C_STAT:
@@ -531,7 +539,7 @@ coff_swap_aux_out (bfd * abfd,
       break;
     }
 
-  H_PUT_32 (abfd, in->x_sym.x_tagndx.l, ext->x_sym.x_tagndx);
+  H_PUT_32 (abfd, in->x_sym.x_tagndx.u32, ext->x_sym.x_tagndx);
 #ifndef NO_TVNDX
   H_PUT_16 (abfd, in->x_sym.x_tvndx, ext->x_sym.x_tvndx);
 #endif
@@ -540,7 +548,7 @@ coff_swap_aux_out (bfd * abfd,
       || ISTAG (in_class))
     {
       PUT_FCN_LNNOPTR (abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr, ext);
-      PUT_FCN_ENDNDX (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l, ext);
+      PUT_FCN_ENDNDX (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.u32, ext);
     }
   else
     {
@@ -701,9 +709,16 @@ coff_swap_aouthdr_out (bfd * abfd, void
   H_PUT_32 (abfd, aouthdr_in->o_maxstack, aouthdr_out->o_maxstack);
   H_PUT_32 (abfd, aouthdr_in->o_maxdata, aouthdr_out->o_maxdata);
 #endif
-  memset (aouthdr_out->o_resv2, 0, sizeof aouthdr_out->o_resv2);
+  /* TODO: set o_*psize dynamically */
+  H_PUT_8 (abfd, 0, aouthdr_out->o_textpsize);
+  H_PUT_8 (abfd, 0, aouthdr_out->o_datapsize);
+  H_PUT_8 (abfd, 0, aouthdr_out->o_stackpsize);
+  H_PUT_8 (abfd, aouthdr_in->o_flags, aouthdr_out->o_flags);
+  H_PUT_16 (abfd, aouthdr_in->o_sntdata, aouthdr_out->o_sntdata);
+  H_PUT_16 (abfd, aouthdr_in->o_sntbss, aouthdr_out->o_sntbss);
+  H_PUT_32 (abfd, 0, aouthdr_out->o_debugger);
 #ifdef XCOFF64
-  memset (aouthdr_out->o_debugger, 0, sizeof aouthdr_out->o_debugger);
+  H_PUT_16 (abfd, aouthdr_in->o_x64flags, aouthdr_out->o_x64flags);
   memset (aouthdr_out->o_resv3, 0, sizeof aouthdr_out->o_resv3);
 #endif
 #endif
@@ -731,6 +746,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 +773,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.20200303/bfd/coff-tic30.c ./bfd/coff-tic30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-tic30.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-tic30.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for TMS320C30 coff binaries.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 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.
@@ -31,16 +31,16 @@
 
 reloc_howto_type tic30_coff_howto_table[] =
   {
-    HOWTO (R_TIC30_ABS16, 2, 1, 16, FALSE, 0, 0, NULL,
-	   "16", FALSE, 0x0000FFFF, 0x0000FFFF, FALSE),
-    HOWTO (R_TIC30_ABS24, 2, 2, 24, FALSE, 8, complain_overflow_bitfield, NULL,
-	   "24", FALSE, 0xFFFFFF00, 0xFFFFFF00, FALSE),
-    HOWTO (R_TIC30_LDP, 18, 0, 24, FALSE, 0, complain_overflow_bitfield, NULL,
-	   "LDP", FALSE, 0x00FF0000, 0x000000FF, FALSE),
-    HOWTO (R_TIC30_ABS32, 2, 2, 32, FALSE, 0, complain_overflow_bitfield, NULL,
-	   "32", FALSE, 0xFFFFFFFF, 0xFFFFFFFF, FALSE),
-    HOWTO (R_TIC30_PC16, 2, 1, 16, TRUE, 0, complain_overflow_signed, NULL,
-	   "PCREL", FALSE, 0x0000FFFF, 0x0000FFFF, FALSE),
+    HOWTO (R_TIC30_ABS16, 2, 2, 16, false, 0, 0, NULL,
+	   "16", false, 0x0000FFFF, 0x0000FFFF, false),
+    HOWTO (R_TIC30_ABS24, 2, 4, 24, false, 8, complain_overflow_bitfield, NULL,
+	   "24", false, 0xFFFFFF00, 0xFFFFFF00, false),
+    HOWTO (R_TIC30_LDP, 18, 1, 24, false, 0, complain_overflow_bitfield, NULL,
+	   "LDP", false, 0x00FF0000, 0x000000FF, false),
+    HOWTO (R_TIC30_ABS32, 2, 4, 32, false, 0, complain_overflow_bitfield, NULL,
+	   "32", false, 0xFFFFFFFF, 0xFFFFFFFF, false),
+    HOWTO (R_TIC30_PC16, 2, 2, 16, true, 0, complain_overflow_signed, NULL,
+	   "PCREL", false, 0x0000FFFF, 0x0000FFFF, false),
     EMPTY_HOWTO (-1)
   };
 
@@ -161,11 +161,18 @@ reloc_processing (arelent *relent,
   relent->address = reloc->r_vaddr;
   rtype2howto (relent, reloc);
 
-  if (reloc->r_symndx > 0)
+  if (reloc->r_symndx == -1 || symbols == NULL)
+    relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
+  else if (reloc->r_symndx >= 0 && reloc->r_symndx < obj_conv_table_size (abfd))
     relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
   else
-    relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
-
+    {
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB: warning: illegal symbol index %ld in relocs"),
+	 abfd, reloc->r_symndx);
+      relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
+    }
   relent->addend = reloc->r_offset;
   relent->address -= section->vma;
 }
@@ -192,6 +199,7 @@ const bfd_target tic30_coff_vec =
   '/',				/* ar_pad_char */
   15,				/* ar_max_namelen */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-tic4x.c ./bfd/coff-tic4x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-tic4x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-tic4x.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for TMS320C4X coff binaries.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
 
@@ -41,13 +41,13 @@ tic4x_reloc_processing (arelent *, struc
 
 /* Replace the stock _bfd_coff_is_local_label_name to recognize TI COFF local
    labels.  */
-static bfd_boolean
+static bool
 ticoff_bfd_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 				const char *name)
 {
   if (TICOFF_LOCAL_LABEL_P(name))
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
 #define coff_bfd_is_local_label_name ticoff_bfd_is_local_label_name
@@ -92,20 +92,20 @@ tic4x_relocation (bfd *abfd ATTRIBUTE_UN
 
 reloc_howto_type tic4x_howto_table[] =
 {
-    HOWTO(R_RELWORD,	 0,  2, 16, FALSE, 0, complain_overflow_signed,   tic4x_relocation, "RELWORD",   TRUE, 0x0000ffff, 0x0000ffff, FALSE),
-    HOWTO(R_REL24,	 0,  2, 24, FALSE, 0, complain_overflow_bitfield, tic4x_relocation, "REL24",     TRUE, 0x00ffffff, 0x00ffffff, FALSE),
-    HOWTO(R_RELLONG,	 0,  2, 32, FALSE, 0, complain_overflow_dont,     tic4x_relocation, "RELLONG",   TRUE, 0xffffffff, 0xffffffff, FALSE),
-    HOWTO(R_PCRWORD,	 0,  2, 16, TRUE,  0, complain_overflow_signed,   tic4x_relocation, "PCRWORD",   TRUE, 0x0000ffff, 0x0000ffff, FALSE),
-    HOWTO(R_PCR24,	 0,  2, 24, TRUE,  0, complain_overflow_signed,   tic4x_relocation, "PCR24",     TRUE, 0x00ffffff, 0x00ffffff, FALSE),
-    HOWTO(R_PARTLS16,	 0,  2, 16, FALSE, 0, complain_overflow_dont,     tic4x_relocation, "PARTLS16",  TRUE, 0x0000ffff, 0x0000ffff, FALSE),
-    HOWTO(R_PARTMS8,	16,  2, 16, FALSE, 0, complain_overflow_dont,     tic4x_relocation, "PARTMS8",   TRUE, 0x0000ffff, 0x0000ffff, FALSE),
-    HOWTO(R_RELWORD,	 0,  2, 16, FALSE, 0, complain_overflow_signed,   tic4x_relocation, "ARELWORD",  TRUE, 0x0000ffff, 0x0000ffff, FALSE),
-    HOWTO(R_REL24,	 0,  2, 24, FALSE, 0, complain_overflow_signed,   tic4x_relocation, "AREL24",    TRUE, 0x00ffffff, 0x00ffffff, FALSE),
-    HOWTO(R_RELLONG,	 0,  2, 32, FALSE, 0, complain_overflow_signed,   tic4x_relocation, "ARELLONG",  TRUE, 0xffffffff, 0xffffffff, FALSE),
-    HOWTO(R_PCRWORD,	 0,  2, 16, TRUE,  0, complain_overflow_signed,   tic4x_relocation, "APCRWORD",  TRUE, 0x0000ffff, 0x0000ffff, FALSE),
-    HOWTO(R_PCR24,	 0,  2, 24, TRUE,  0, complain_overflow_signed,   tic4x_relocation, "APCR24",    TRUE, 0x00ffffff, 0x00ffffff, FALSE),
-    HOWTO(R_PARTLS16,	 0,  2, 16, FALSE, 0, complain_overflow_dont,     tic4x_relocation, "APARTLS16", TRUE, 0x0000ffff, 0x0000ffff, FALSE),
-    HOWTO(R_PARTMS8,	16,  2, 16, FALSE, 0, complain_overflow_dont,     tic4x_relocation, "APARTMS8",  TRUE, 0x0000ffff, 0x0000ffff, FALSE),
+    HOWTO(R_RELWORD,	 0,  4, 16, false, 0, complain_overflow_signed,   tic4x_relocation, "RELWORD",   true, 0x0000ffff, 0x0000ffff, false),
+    HOWTO(R_REL24,	 0,  4, 24, false, 0, complain_overflow_bitfield, tic4x_relocation, "REL24",     true, 0x00ffffff, 0x00ffffff, false),
+    HOWTO(R_RELLONG,	 0,  4, 32, false, 0, complain_overflow_dont,     tic4x_relocation, "RELLONG",   true, 0xffffffff, 0xffffffff, false),
+    HOWTO(R_PCRWORD,	 0,  4, 16, true,  0, complain_overflow_signed,   tic4x_relocation, "PCRWORD",   true, 0x0000ffff, 0x0000ffff, false),
+    HOWTO(R_PCR24,	 0,  4, 24, true,  0, complain_overflow_signed,   tic4x_relocation, "PCR24",     true, 0x00ffffff, 0x00ffffff, false),
+    HOWTO(R_PARTLS16,	 0,  4, 16, false, 0, complain_overflow_dont,     tic4x_relocation, "PARTLS16",  true, 0x0000ffff, 0x0000ffff, false),
+    HOWTO(R_PARTMS8,	16,  4, 16, false, 0, complain_overflow_dont,     tic4x_relocation, "PARTMS8",   true, 0x0000ffff, 0x0000ffff, false),
+    HOWTO(R_RELWORD,	 0,  4, 16, false, 0, complain_overflow_signed,   tic4x_relocation, "ARELWORD",  true, 0x0000ffff, 0x0000ffff, false),
+    HOWTO(R_REL24,	 0,  4, 24, false, 0, complain_overflow_signed,   tic4x_relocation, "AREL24",    true, 0x00ffffff, 0x00ffffff, false),
+    HOWTO(R_RELLONG,	 0,  4, 32, false, 0, complain_overflow_signed,   tic4x_relocation, "ARELLONG",  true, 0xffffffff, 0xffffffff, false),
+    HOWTO(R_PCRWORD,	 0,  4, 16, true,  0, complain_overflow_signed,   tic4x_relocation, "APCRWORD",  true, 0x0000ffff, 0x0000ffff, false),
+    HOWTO(R_PCR24,	 0,  4, 24, true,  0, complain_overflow_signed,   tic4x_relocation, "APCR24",    true, 0x00ffffff, 0x00ffffff, false),
+    HOWTO(R_PARTLS16,	 0,  4, 16, false, 0, complain_overflow_dont,     tic4x_relocation, "APARTLS16", true, 0x0000ffff, 0x0000ffff, false),
+    HOWTO(R_PARTMS8,	16,  4, 16, false, 0, complain_overflow_dont,     tic4x_relocation, "APARTMS8",  true, 0x0000ffff, 0x0000ffff, false),
 };
 #define HOWTO_SIZE (sizeof(tic4x_howto_table) / sizeof(tic4x_howto_table[0]))
 
@@ -219,7 +219,7 @@ tic4x_reloc_processing (arelent *relent,
 
   relent->address = reloc->r_vaddr;
 
-  if (reloc->r_symndx != -1)
+  if (reloc->r_symndx != -1 && symbols != NULL)
     {
       if (reloc->r_symndx < 0 || reloc->r_symndx >= obj_conv_table_size (abfd))
 	{
@@ -227,7 +227,7 @@ tic4x_reloc_processing (arelent *relent,
 	    /* xgettext: c-format */
 	    (_("%pB: warning: illegal symbol index %ld in relocs"),
 	     abfd, reloc->r_symndx);
-	  relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	  relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	  ptr = NULL;
 	}
       else
@@ -239,7 +239,7 @@ tic4x_reloc_processing (arelent *relent,
     }
   else
     {
-      relent->sym_ptr_ptr = section->symbol_ptr_ptr;
+      relent->sym_ptr_ptr = &section->symbol;
       ptr = *(relent->sym_ptr_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.20200303/bfd/coff-tic54x.c ./bfd/coff-tic54x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-tic54x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-tic54x.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for TMS320C54X coff binaries.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
    Contributed by Timothy Wall (twall@cygnus.com)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -109,23 +109,6 @@ bfd_ticoff_get_section_load_page (asecti
   return page;
 }
 
-/* Set the architecture appropriately.  Allow unkown architectures
-   (e.g. binary).  */
-
-static bfd_boolean
-tic54x_set_arch_mach (bfd *abfd,
-		      enum bfd_architecture arch,
-		      unsigned long machine)
-{
-  if (arch == bfd_arch_unknown)
-    arch = bfd_arch_tic54x;
-
-  else if (arch != bfd_arch_tic54x)
-    return FALSE;
-
-  return bfd_default_set_arch_mach (abfd, arch, machine);
-}
-
 static bfd_reloc_status_type
 tic54x_relocation (bfd *abfd ATTRIBUTE_UNUSED,
 		   arelent *reloc_entry,
@@ -148,65 +131,65 @@ tic54x_relocation (bfd *abfd ATTRIBUTE_U
 
 reloc_howto_type tic54x_howto_table[] =
   {
-    /* type,rightshift,size (0=byte, 1=short, 2=long),
+    /* type,rightshift,size,
        bit size, pc_relative, bitpos, dont complain_on_overflow,
        special_function, name, partial_inplace, src_mask, dst_mask, pcrel_offset.  */
 
     /* NORMAL BANK */
     /* 16-bit direct reference to symbol's address.  */
-    HOWTO (R_RELWORD,0,1,16,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"REL16",FALSE,0xFFFF,0xFFFF,FALSE),
+    HOWTO (R_RELWORD,0,2,16,false,0,complain_overflow_dont,
+	   tic54x_relocation,"REL16",false,0xFFFF,0xFFFF,false),
 
     /* 7 LSBs of an address */
-    HOWTO (R_PARTLS7,0,1,7,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"LS7",FALSE,0x007F,0x007F,FALSE),
+    HOWTO (R_PARTLS7,0,2,7,false,0,complain_overflow_dont,
+	   tic54x_relocation,"LS7",false,0x007F,0x007F,false),
 
     /* 9 MSBs of an address */
     /* TI assembler doesn't shift its encoding, and is thus incompatible */
-    HOWTO (R_PARTMS9,7,1,9,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"MS9",FALSE,0x01FF,0x01FF,FALSE),
+    HOWTO (R_PARTMS9,7,2,9,false,0,complain_overflow_dont,
+	   tic54x_relocation,"MS9",false,0x01FF,0x01FF,false),
 
     /* 23-bit relocation */
-    HOWTO (R_EXTWORD,0,2,23,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"RELEXT",FALSE,0x7FFFFF,0x7FFFFF,FALSE),
+    HOWTO (R_EXTWORD,0,4,23,false,0,complain_overflow_dont,
+	   tic54x_relocation,"RELEXT",false,0x7FFFFF,0x7FFFFF,false),
 
     /* 16 bits of 23-bit extended address */
-    HOWTO (R_EXTWORD16,0,1,16,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"RELEXT16",FALSE,0x7FFFFF,0x7FFFFF,FALSE),
+    HOWTO (R_EXTWORD16,0,2,16,false,0,complain_overflow_dont,
+	   tic54x_relocation,"RELEXT16",false,0x7FFFFF,0x7FFFFF,false),
 
     /* upper 7 bits of 23-bit extended address */
-    HOWTO (R_EXTWORDMS7,16,1,7,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"RELEXTMS7",FALSE,0x7F,0x7F,FALSE),
+    HOWTO (R_EXTWORDMS7,16,2,7,false,0,complain_overflow_dont,
+	   tic54x_relocation,"RELEXTMS7",false,0x7F,0x7F,false),
 
     /* ABSOLUTE BANK */
     /* 16-bit direct reference to symbol's address, absolute */
-    HOWTO (R_RELWORD,0,1,16,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"AREL16",FALSE,0xFFFF,0xFFFF,FALSE),
+    HOWTO (R_RELWORD,0,2,16,false,0,complain_overflow_dont,
+	   tic54x_relocation,"AREL16",false,0xFFFF,0xFFFF,false),
 
     /* 7 LSBs of an address, absolute */
-    HOWTO (R_PARTLS7,0,1,7,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"ALS7",FALSE,0x007F,0x007F,FALSE),
+    HOWTO (R_PARTLS7,0,2,7,false,0,complain_overflow_dont,
+	   tic54x_relocation,"ALS7",false,0x007F,0x007F,false),
 
     /* 9 MSBs of an address, absolute */
     /* TI assembler doesn't shift its encoding, and is thus incompatible */
-    HOWTO (R_PARTMS9,7,1,9,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"AMS9",FALSE,0x01FF,0x01FF,FALSE),
+    HOWTO (R_PARTMS9,7,2,9,false,0,complain_overflow_dont,
+	   tic54x_relocation,"AMS9",false,0x01FF,0x01FF,false),
 
     /* 23-bit direct reference, absolute */
-    HOWTO (R_EXTWORD,0,2,23,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"ARELEXT",FALSE,0x7FFFFF,0x7FFFFF,FALSE),
+    HOWTO (R_EXTWORD,0,4,23,false,0,complain_overflow_dont,
+	   tic54x_relocation,"ARELEXT",false,0x7FFFFF,0x7FFFFF,false),
 
     /* 16 bits of 23-bit extended address, absolute */
-    HOWTO (R_EXTWORD16,0,1,16,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"ARELEXT16",FALSE,0x7FFFFF,0x7FFFFF,FALSE),
+    HOWTO (R_EXTWORD16,0,2,16,false,0,complain_overflow_dont,
+	   tic54x_relocation,"ARELEXT16",false,0x7FFFFF,0x7FFFFF,false),
 
     /* upper 7 bits of 23-bit extended address, absolute */
-    HOWTO (R_EXTWORDMS7,16,1,7,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"ARELEXTMS7",FALSE,0x7F,0x7F,FALSE),
+    HOWTO (R_EXTWORDMS7,16,2,7,false,0,complain_overflow_dont,
+	   tic54x_relocation,"ARELEXTMS7",false,0x7F,0x7F,false),
 
     /* 32-bit relocation exclusively for stabs */
-    HOWTO (R_RELLONG,0,2,32,FALSE,0,complain_overflow_dont,
-	   tic54x_relocation,"STAB",FALSE,0xFFFFFFFF,0xFFFFFFFF,FALSE),
+    HOWTO (R_RELLONG,0,4,32,false,0,complain_overflow_dont,
+	   tic54x_relocation,"STAB",false,0xFFFFFFFF,0xFFFFFFFF,false),
   };
 
 #define coff_bfd_reloc_type_lookup tic54x_coff_reloc_type_lookup
@@ -278,7 +261,7 @@ tic54x_lookup_howto (bfd *abfd,
 
   _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 		      abfd, (unsigned int) dst->r_type);
-  abort ();
+  internal->howto = NULL;
 }
 
 #define RELOC_PROCESSING(RELENT,RELOC,SYMS,ABFD,SECT)\
@@ -312,13 +295,13 @@ coff_tic54x_rtype_to_howto (bfd *abfd,
 /* Replace the stock _bfd_coff_is_local_label_name to recognize TI COFF local
    labels.  */
 
-static bfd_boolean
+static bool
 ticoff_bfd_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 				const char *name)
 {
   if (TICOFF_LOCAL_LABEL_P(name))
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
 #define coff_bfd_is_local_label_name ticoff_bfd_is_local_label_name
@@ -335,17 +318,6 @@ ticoff_bfd_is_local_label_name (bfd *abf
 
 #include "coffcode.h"
 
-static bfd_boolean
-tic54x_set_section_contents (bfd *abfd,
-			     sec_ptr section,
-			     const void * location,
-			     file_ptr offset,
-			     bfd_size_type bytes_to_do)
-{
-  return coff_set_section_contents (abfd, section, location,
-				    offset, bytes_to_do);
-}
-
 static void
 tic54x_reloc_processing (arelent *relent,
 			 struct internal_reloc *reloc,
@@ -357,7 +329,7 @@ tic54x_reloc_processing (arelent *relent
 
   relent->address = reloc->r_vaddr;
 
-  if (reloc->r_symndx != -1)
+  if (reloc->r_symndx != -1 && symbols != NULL)
     {
       if (reloc->r_symndx < 0 || reloc->r_symndx >= obj_conv_table_size (abfd))
 	{
@@ -365,7 +337,7 @@ tic54x_reloc_processing (arelent *relent
 	    /* xgettext: c-format */
 	    (_("%pB: warning: illegal symbol index %ld in relocs"),
 	     abfd, reloc->r_symndx);
-	  relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	  relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	  ptr = NULL;
 	}
       else
@@ -377,7 +349,7 @@ tic54x_reloc_processing (arelent *relent
     }
   else
     {
-      relent->sym_ptr_ptr = section->symbol_ptr_ptr;
+      relent->sym_ptr_ptr = &section->symbol;
       ptr = *(relent->sym_ptr_ptr);
     }
 
@@ -415,6 +387,7 @@ const bfd_target tic54x_coff0_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */
@@ -447,7 +420,7 @@ const bfd_target tic54x_coff0_vec =
     BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
     BFD_JUMP_TABLE_SYMBOLS (coff),
     BFD_JUMP_TABLE_RELOCS (coff),
-    BFD_JUMP_TABLE_WRITE (tic54x),
+    BFD_JUMP_TABLE_WRITE (coff),
     BFD_JUMP_TABLE_LINK (coff),
     BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
     NULL,
@@ -472,6 +445,11 @@ const bfd_target tic54x_coff0_beh_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+    true,			/* keep unused section symbols.  */
+#else
+    false,			/* keep unused section symbols.  */
+#endif
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */
@@ -504,7 +482,7 @@ const bfd_target tic54x_coff0_beh_vec =
     BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
     BFD_JUMP_TABLE_SYMBOLS (coff),
     BFD_JUMP_TABLE_RELOCS (coff),
-    BFD_JUMP_TABLE_WRITE (tic54x),
+    BFD_JUMP_TABLE_WRITE (coff),
     BFD_JUMP_TABLE_LINK (coff),
     BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
 
@@ -530,6 +508,11 @@ const bfd_target tic54x_coff1_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+    true,			/* keep unused section symbols.  */
+#else
+    false,			/* keep unused section symbols.  */
+#endif
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */
@@ -562,7 +545,7 @@ const bfd_target tic54x_coff1_vec =
     BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
     BFD_JUMP_TABLE_SYMBOLS (coff),
     BFD_JUMP_TABLE_RELOCS (coff),
-    BFD_JUMP_TABLE_WRITE (tic54x),
+    BFD_JUMP_TABLE_WRITE (coff),
     BFD_JUMP_TABLE_LINK (coff),
     BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
 
@@ -588,6 +571,11 @@ const bfd_target tic54x_coff1_beh_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+    true,			/* keep unused section symbols.  */
+#else
+    false,			/* keep unused section symbols.  */
+#endif
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */
@@ -620,7 +608,7 @@ const bfd_target tic54x_coff1_beh_vec =
     BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
     BFD_JUMP_TABLE_SYMBOLS (coff),
     BFD_JUMP_TABLE_RELOCS (coff),
-    BFD_JUMP_TABLE_WRITE (tic54x),
+    BFD_JUMP_TABLE_WRITE (coff),
     BFD_JUMP_TABLE_LINK (coff),
     BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
 
@@ -646,6 +634,11 @@ const bfd_target tic54x_coff2_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+    true,			/* keep unused section symbols.  */
+#else
+    false,			/* keep unused section symbols.  */
+#endif
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */
@@ -678,7 +671,7 @@ const bfd_target tic54x_coff2_vec =
     BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
     BFD_JUMP_TABLE_SYMBOLS (coff),
     BFD_JUMP_TABLE_RELOCS (coff),
-    BFD_JUMP_TABLE_WRITE (tic54x),
+    BFD_JUMP_TABLE_WRITE (coff),
     BFD_JUMP_TABLE_LINK (coff),
     BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
 
@@ -704,6 +697,11 @@ const bfd_target tic54x_coff2_beh_vec =
     '/',			/* ar_pad_char */
     15,				/* ar_max_namelen */
     0,				/* match priority.  */
+#ifdef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+    true,			/* keep unused section symbols.  */
+#else
+    false,			/* keep unused section symbols.  */
+#endif
     bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     tic54x_getl32, tic54x_getl_signed_32, tic54x_putl32,
     bfd_getl16, bfd_getl_signed_16, bfd_putl16,	/* data */
@@ -736,7 +734,7 @@ const bfd_target tic54x_coff2_beh_vec =
     BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
     BFD_JUMP_TABLE_SYMBOLS (coff),
     BFD_JUMP_TABLE_RELOCS (coff),
-    BFD_JUMP_TABLE_WRITE (tic54x),
+    BFD_JUMP_TABLE_WRITE (coff),
     BFD_JUMP_TABLE_LINK (coff),
     BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-tic80.c ./bfd/coff-tic80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-tic80.c	2020-03-03 02:08:51.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.20200303/bfd/coff-x86_64.c ./bfd/coff-x86_64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-x86_64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-x86_64.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -20,23 +20,13 @@
 
    Written by Kai Tietz, OneVision Software GmbH&CoKg.  */
 
-#ifndef COFF_WITH_pex64
-#define COFF_WITH_pex64
-#endif
-
-/* Note we have to make sure not to include headers twice.
-   Not all headers are wrapped in #ifdef guards, so we define
-   PEI_HEADERS to prevent double including here.  */
-#ifndef PEI_HEADERS
 #include "sysdep.h"
 #include "bfd.h"
 #include "libbfd.h"
 #include "coff/x86_64.h"
 #include "coff/internal.h"
-#include "coff/pe.h"
 #include "libcoff.h"
 #include "libiberty.h"
-#endif
 
 #define BADMAG(x) AMD64BADMAG(x)
 
@@ -75,14 +65,14 @@ coff_amd64_reloc (bfd *abfd,
 {
   symvalue diff;
 
-#if !defined(COFF_WITH_PE)
+#if !defined (COFF_WITH_PE)
   if (output_bfd == NULL)
     return bfd_reloc_continue;
 #endif
 
   if (bfd_is_com_section (symbol->section))
     {
-#if !defined(COFF_WITH_PE)
+#if !defined (COFF_WITH_PE)
       /* We are relocating a common symbol.  The current value in the
 	 object file is ORIG + OFFSET, where ORIG is the value of the
 	 common symbol as seen by the object file when it was compiled
@@ -106,21 +96,10 @@ coff_amd64_reloc (bfd *abfd,
 	 ignores the addend for a COFF target when producing
 	 relocatable output.  This seems to be always wrong for 386
 	 COFF, so we handle the addend here instead.  */
-#if defined(COFF_WITH_PE)
+#if defined (COFF_WITH_PE)
       if (output_bfd == NULL)
 	{
-	  reloc_howto_type *howto = reloc_entry->howto;
-
-	  /* Although PC relative relocations are very similar between
-	     PE and non-PE formats, but they are off by 1 << howto->size
-	     bytes. For the external relocation, PE is very different
-	     from others. See md_apply_fix3 () in gas/config/tc-amd64.c.
-	     When we link PE and non-PE object files together to
-	     generate a non-PE executable, we have to compensate it
-	     here.  */
-	  if(howto->pc_relative && howto->pcrel_offset)
-	    diff = -(1 << howto->size);
-	  else if(symbol->flags & BSF_WEAK)
+	  if (symbol->flags & BSF_WEAK)
 	    diff = reloc_entry->addend - symbol->value;
 	  else
 	    diff = -reloc_entry->addend;
@@ -130,12 +109,54 @@ coff_amd64_reloc (bfd *abfd,
 	diff = reloc_entry->addend;
     }
 
-#if defined(COFF_WITH_PE)
-  /* FIXME: How should this case be handled?  */
+#if defined (COFF_WITH_PE)
+  if (output_bfd == NULL)
+    {
+      /* PC relative relocations are off by their size.  */
+      if (reloc_entry->howto->pc_relative)
+	diff -= bfd_get_reloc_size (reloc_entry->howto);
+
+      if (reloc_entry->howto->type >= R_AMD64_PCRLONG_1
+	  && reloc_entry->howto->type <= R_AMD64_PCRLONG_5)
+	diff -= reloc_entry->howto->type - R_AMD64_PCRLONG;
+    }
+
   if (reloc_entry->howto->type == R_AMD64_IMAGEBASE
-      && output_bfd != NULL
-      && bfd_get_flavour (output_bfd) == bfd_target_coff_flavour)
-    diff -= pe_data (output_bfd)->pe_opthdr.ImageBase;
+      && output_bfd == NULL)
+    {
+      bfd *obfd = input_section->output_section->owner;
+      struct bfd_link_info *link_info;
+      struct bfd_link_hash_entry *h;
+      switch (bfd_get_flavour (obfd))
+	{
+	case bfd_target_coff_flavour:
+	  diff -= pe_data (obfd)->pe_opthdr.ImageBase;
+	  break;
+	case bfd_target_elf_flavour:
+	  /* Subtract __ImageBase.  */
+	  h = NULL;
+	  link_info = _bfd_get_link_info (obfd);
+	  if (link_info != NULL)
+	    h = bfd_link_hash_lookup (link_info->hash, "__ImageBase",
+				      false, false, true);
+	  if (h == NULL
+	      || (h->type != bfd_link_hash_defined
+		  && h->type != bfd_link_hash_defweak))
+	    {
+	      *error_message
+		= (char *) _("R_AMD64_IMAGEBASE with __ImageBase undefined");
+	      return bfd_reloc_dangerous;
+	    }
+	  /* ELF symbols in relocatable files are section relative,
+	     but in nonrelocatable files they are virtual addresses.  */
+	  diff -= (h->u.def.value
+		   + h->u.def.section->output_offset
+		   + h->u.def.section->output_section->vma);
+	  break;
+	default:
+	  break;
+	}
+    }
 #endif
 
 #define DOIT(x) \
@@ -151,9 +172,9 @@ coff_amd64_reloc (bfd *abfd,
       if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
 	return bfd_reloc_outofrange;
 
-      switch (howto->size)
+      switch (bfd_get_reloc_size (howto))
 	{
-	case 0:
+	case 1:
 	  {
 	    char x = bfd_get_8 (abfd, addr);
 	    DOIT (x);
@@ -161,7 +182,7 @@ coff_amd64_reloc (bfd *abfd,
 	  }
 	  break;
 
-	case 1:
+	case 2:
 	  {
 	    short x = bfd_get_16 (abfd, addr);
 	    DOIT (x);
@@ -169,7 +190,7 @@ coff_amd64_reloc (bfd *abfd,
 	  }
 	  break;
 
-	case 2:
+	case 4:
 	  {
 	    long x = bfd_get_32 (abfd, addr);
 	    DOIT (x);
@@ -177,9 +198,9 @@ coff_amd64_reloc (bfd *abfd,
 	  }
 	  break;
 
-	case 4:
+	case 8:
 	  {
-	    bfd_uint64_t x = bfd_get_64 (abfd, addr);
+	    uint64_t x = bfd_get_64 (abfd, addr);
 	    DOIT (x);
 	    bfd_put_64 (abfd, x, addr);
 	  }
@@ -199,16 +220,18 @@ coff_amd64_reloc (bfd *abfd,
 /* Return TRUE if this relocation should appear in the output .reloc
    section.  */
 
-static bfd_boolean
+static bool
 in_reloc_p (bfd *abfd ATTRIBUTE_UNUSED, reloc_howto_type *howto)
 {
-  return ! howto->pc_relative && howto->type != R_AMD64_IMAGEBASE
-	 && howto->type != R_AMD64_SECREL;
+  return ! howto->pc_relative
+    && howto->type != R_AMD64_IMAGEBASE
+    && howto->type != R_AMD64_SECREL
+    && howto->type != R_AMD64_SECTION;
 }
 #endif /* COFF_WITH_PE */
 
 #ifndef PCRELOFFSET
-#define PCRELOFFSET TRUE
+#define PCRELOFFSET true
 #endif
 
 static reloc_howto_type howto_table[] =
@@ -216,141 +239,155 @@ static reloc_howto_type howto_table[] =
   EMPTY_HOWTO (0),
   HOWTO (R_AMD64_DIR64,		/* type  1*/
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long, 4 = long long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "R_X86_64_64",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_ADDR64", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffffffffffffll,	/* src_mask */
 	 0xffffffffffffffffll,	/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_AMD64_DIR32,		/* type 2 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "R_X86_64_32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_ADDR32", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   /* PE IMAGE_REL_AMD64_ADDR32NB relocation (3).	*/
   HOWTO (R_AMD64_IMAGEBASE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "rva32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_ADDR32NB", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* 32-bit longword PC relative relocation (4).  */
   HOWTO (R_AMD64_PCRLONG,	/* type 4 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "R_X86_64_PC32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_REL32", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
 
  HOWTO (R_AMD64_PCRLONG_1,	/* type 5 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "DISP32+1",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_REL32_1", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
  HOWTO (R_AMD64_PCRLONG_2,	/* type 6 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "DISP32+2",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_REL32_2", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
  HOWTO (R_AMD64_PCRLONG_3,	/* type 7 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "DISP32+3",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_REL32_3", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
  HOWTO (R_AMD64_PCRLONG_4,	/* type 8 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "DISP32+4",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_REL32_4", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
  HOWTO (R_AMD64_PCRLONG_5,	/* type 9 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "DISP32+5",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_REL32_5", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
-  EMPTY_HOWTO (10), /* R_AMD64_SECTION 10  */
 #if defined(COFF_WITH_PE)
+  /* 16-bit word section relocation (10).  */
+  HOWTO (R_AMD64_SECTION,	/* type */
+	 0,			/* rightshift */
+	 2,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_bitfield, /* complain_on_overflow */
+	 coff_amd64_reloc,	/* special_function */
+	 "IMAGE_REL_AMD64_SECTION", /* name */
+	 true,			/* partial_inplace */
+	 0x0000ffff,		/* src_mask */
+	 0x0000ffff,		/* dst_mask */
+	 true),
   /* 32-bit longword section relative relocation (11).  */
   HOWTO (R_AMD64_SECREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
-	 "secrel32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 "IMAGE_REL_AMD64_SECREL", /* name */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 #else
+  EMPTY_HOWTO (10),
   EMPTY_HOWTO (11),
 #endif
   EMPTY_HOWTO (12),
@@ -358,14 +395,14 @@ static reloc_howto_type howto_table[] =
 #ifndef DONT_EXTEND_AMD64
   HOWTO (R_AMD64_PCRQUAD,
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
 	 "R_X86_64_PC64",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffffffffffffll,	/* src_mask */
 	 0xffffffffffffffffll,	/* dst_mask */
 	 PCRELOFFSET),		 /* pcrel_offset */
@@ -375,84 +412,84 @@ static reloc_howto_type howto_table[] =
   /* Byte relocation (15).  */
   HOWTO (R_RELBYTE,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
 	 "R_X86_64_8",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* 16-bit word relocation (16).  */
   HOWTO (R_RELWORD,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
 	 "R_X86_64_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* 32-bit longword relocation (17).	*/
   HOWTO (R_RELLONG,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
 	 "R_X86_64_32S",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* Byte PC relative relocation (18).	 */
   HOWTO (R_PCRBYTE,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
 	 "R_X86_64_PC8",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* 16-bit word PC relative relocation (19).	*/
   HOWTO (R_PCRWORD,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
 	 "R_X86_64_PC16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
 	 PCRELOFFSET),		/* pcrel_offset */
   /* 32-bit longword PC relative relocation (20).  */
   HOWTO (R_PCRLONG,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 coff_amd64_reloc,	/* special_function */
 	 "R_X86_64_PC32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
 	 PCRELOFFSET)		/* pcrel_offset */
@@ -505,7 +542,8 @@ static reloc_howto_type howto_table[] =
       cache_ptr->addend = - coffsym->native->u.syment.n_value;	\
     else if (ptr && bfd_asymbol_bfd (ptr) == abfd		\
 	     && ptr->section != NULL)				\
-      cache_ptr->addend = - (ptr->section->vma + ptr->value);	\
+      cache_ptr->addend = - (ptr->section->vma			\
+			     + COFF_PE_ADDEND_BIAS (ptr));	\
     else							\
       cache_ptr->addend = 0;					\
     if (ptr && reloc.r_type < NUM_HOWTOS			\
@@ -523,11 +561,11 @@ static reloc_howto_type howto_table[] =
 
 #else /* COFF_WITH_PE */
 
-/* The PE relocate section routine.  The only difference between this
-   and the regular routine is that we don't want to do anything for a
-   relocatable link.  */
+/* The PE relocate section routine.  We handle secidx relocations here,
+   as well as making sure that we don't do anything for a relocatable
+   link.  */
 
-static bfd_boolean
+static bool
 coff_pe_amd64_relocate_section (bfd *output_bfd,
 				struct bfd_link_info *info,
 				bfd *input_bfd,
@@ -537,14 +575,97 @@ coff_pe_amd64_relocate_section (bfd *out
 				struct internal_syment *syms,
 				asection **sections)
 {
+  struct internal_reloc *rel;
+  struct internal_reloc *relend;
+
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
+
+  rel = relocs;
+  relend = rel + input_section->reloc_count;
+
+  for (; rel < relend; rel++)
+    {
+      long symndx;
+      struct coff_link_hash_entry *h;
+      asection *sec, *s;
+      uint16_t idx = 0, i = 1;
+
+      if (rel->r_type != R_SECTION)
+	continue;
+
+      /* Make sure that _bfd_coff_generic_relocate_section won't parse
+         this reloc after us.  */
+      rel->r_type = 0;
+
+      symndx = rel->r_symndx;
+
+      if (symndx < 0
+	  || (unsigned long) symndx >= obj_raw_syment_count (input_bfd))
+	continue;
+
+      h = obj_coff_sym_hashes (input_bfd)[symndx];
+
+      if (h == NULL)
+	sec = sections[symndx];
+      else
+	{
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    {
+	      /* Defined weak symbols are a GNU extension.  */
+	      sec = h->root.u.def.section;
+	    }
+	  else
+	    {
+	      sec = NULL;
+	    }
+	}
+
+      if (!sec)
+	continue;
+
+      if (bfd_is_abs_section (sec))
+	continue;
+
+      if (discarded_section (sec))
+	continue;
+
+      s = output_bfd->sections;
+      while (s)
+	{
+	  if (s == sec->output_section)
+	    {
+	      idx = i;
+	      break;
+	    }
+
+	  i++;
+	  s = s->next;
+	}
+
+      bfd_putl16 (idx, contents + rel->r_vaddr - input_section->vma);
+    }
 
   return _bfd_coff_generic_relocate_section (output_bfd, info, input_bfd,input_section, contents,relocs, syms, sections);
 }
 
 #define coff_relocate_section coff_pe_amd64_relocate_section
 
+static hashval_t
+htab_hash_section_index (const void * entry)
+{
+  const struct bfd_section * sec = entry;
+  return sec->index;
+}
+
+static int
+htab_eq_section_index (const void * e1, const void * e2)
+{
+  const struct bfd_section * sec1 = e1;
+  const struct bfd_section * sec2 = e2;
+  return sec1->index == sec2->index;
+}
 #endif /* COFF_WITH_PE */
 
 /* Convert an rtype to howto for the COFF backend linker.  */
@@ -634,22 +755,43 @@ coff_amd64_rtype_to_howto (bfd *abfd ATT
 
   if (rel->r_type == R_AMD64_SECREL)
     {
-      bfd_vma osect_vma;
+      bfd_vma osect_vma = 0;
 
-      if (h && (h->root.type == bfd_link_hash_defined
-		|| h->root.type == bfd_link_hash_defweak))
+      if (h != NULL
+	  && (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak))
 	osect_vma = h->root.u.def.section->output_section->vma;
       else
 	{
+	  htab_t table = coff_data (abfd)->section_by_index;
 	  asection *s;
-	  int i;
 
-	  /* Sigh, the only way to get the section to offset against
-	     is to find it the hard way.  */
-	  for (s = abfd->sections, i = 1; i < sym->n_scnum; i++)
-	    s = s->next;
-
-	  osect_vma = s->output_section->vma;
+	  if (!table)
+	    {
+	      table = htab_create (10, htab_hash_section_index,
+				   htab_eq_section_index, NULL);
+	      if (table == NULL)
+		return NULL;
+	      coff_data (abfd)->section_by_index = table;
+	    }
+
+	  if (htab_elements (table) == 0)
+	    {
+	      for (s = abfd->sections; s != NULL; s = s->next)
+		{
+		  void ** slot = htab_find_slot (table, s, INSERT);
+
+		  if (slot != NULL)
+		    *slot = s;
+		}
+	    }
+
+	  struct bfd_section needle;
+
+	  needle.index = sym->n_scnum - 1;
+	  s = htab_find (table, &needle);
+	  if (s != NULL)
+	    osect_vma = s->output_section->vma;
 	}
 
       *addendp -= osect_vma;
@@ -694,6 +836,8 @@ coff_amd64_reloc_type_lookup (bfd *abfd
 #if defined(COFF_WITH_PE)
     case BFD_RELOC_32_SECREL:
       return howto_table + R_AMD64_SECREL;
+    case BFD_RELOC_16_SECIDX:
+      return howto_table + R_AMD64_SECTION;
 #endif
     default:
       BFD_FAIL ();
@@ -723,11 +867,11 @@ coff_amd64_reloc_name_lookup (bfd *abfd
    a leading dot for local labels, so if TARGET_UNDERSCORE is defined
    we treat all symbols starting with L as local.  */
 
-static bfd_boolean
+static bool
 coff_amd64_is_local_label_name (bfd *abfd, const char *name)
 {
   if (name[0] == 'L')
-    return TRUE;
+    return true;
 
   return _bfd_coff_is_local_label_name (abfd, name);
 }
@@ -782,6 +926,7 @@ const bfd_target
   '/',				/* Ar_pad_char.  */
   15,				/* Ar_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getl32, bfd_getl_signed_32, bfd_putl32,
@@ -824,3 +969,77 @@ 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.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+
+  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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-z80.c ./bfd/coff-z80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-z80.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-z80.c	2026-03-05 02:07:20.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-2025 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 const 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 */
+     4,			/* size */
+     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 */
+     3,			/* size */
+     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 */
+     2,			/* size */
+     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 */
+     1,			/* size */
+     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 */
+     1,			/* size */
+     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 */
+     1,			/* size */
+     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 */
+     1,			/* size */
+     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 */
+     1,			/* size */
+     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 */
+     1,			/* size */
+     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 */
+     1,			/* size */
+     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 */
+     2,			/* size */
+     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 */
+     2,			/* size */
+     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 */
+     2,			/* size */
+     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;
 }
@@ -161,105 +314,183 @@ reloc_processing (arelent *relent,
   relent->address = reloc->r_vaddr;
   rtype2howto (relent, reloc);
 
-  if (reloc->r_symndx > 0)
+  if (reloc->r_symndx == -1 || symbols == NULL)
+    relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
+  else if (reloc->r_symndx >= 0 && reloc->r_symndx < obj_conv_table_size (abfd))
     relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
   else
-    relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
-
+    {
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB: warning: illegal symbol index %ld in relocs"),
+	 abfd, reloc->r_symndx);
+      relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
+    }
   relent->addend = reloc->r_offset;
   relent->address -= section->vma;
 }
 
-static void
+static bool
 extra_case (bfd *in_abfd,
 	    struct bfd_link_info *link_info,
 	    struct bfd_link_order *link_order,
 	    arelent *reloc,
 	    bfd_byte *data,
-	    unsigned int *src_ptr,
-	    unsigned int *dst_ptr)
+	    size_t *src_ptr,
+	    size_t *dst_ptr)
 {
   asection * input_section = link_order->u.indirect.section;
-  int val;
+  bfd_size_type end = bfd_get_section_limit_octets (in_abfd, input_section);
+  bfd_size_type reloc_size = bfd_get_reloc_size (reloc->howto);
 
+  if (*src_ptr > end
+      || reloc_size > end - *src_ptr)
+    {
+      link_info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
+	 in_abfd, input_section, reloc);
+      return false;
+    }
+
+  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.  */
-	  (*link_info->callbacks->reloc_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)
+	{
+	  link_info->callbacks->reloc_overflow
 	    (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
 	     reloc->howto->name, reloc->addend, input_section->owner,
 	     input_section, reloc->address);
+	  return false;
+	}
 
-	bfd_put_8 (in_abfd, val, data + *dst_ptr);
-	(*dst_ptr) += 1;
-	(*src_ptr) += 1;
+      bfd_put_8 (in_abfd, val, data + *dst_ptr);
+      *dst_ptr += 1;
+      *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;
+      *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;
+      *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);
-      bfd_put_16 (in_abfd, val, data + *dst_ptr);
-      bfd_put_8 (in_abfd, val >> 16, data + *dst_ptr+2);
-      (*dst_ptr) += 3;
-      (*src_ptr) += 3;
+      if (reloc->howto->partial_inplace)
+	val += (bfd_get_24 (in_abfd, data + *src_ptr)
+		& reloc->howto->src_mask);
+      bfd_put_24 (in_abfd, val, data + *dst_ptr);
+      *dst_ptr += 3;
+      *src_ptr += 3;
       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;
+      *dst_ptr += 4;
+      *src_ptr += 4;
       break;
 
     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.  */
-
+	bfd_signed_vma gap = val - dot;
 	if (gap >= 128 || gap < -128)
-	  (*link_info->callbacks->reloc_overflow)
-	    (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
-	     reloc->howto->name, reloc->addend, input_section->owner,
-	     input_section, reloc->address);
+	  {
+	    link_info->callbacks->reloc_overflow
+	      (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+	       reloc->howto->name, reloc->addend, input_section->owner,
+	       input_section, reloc->address);
+	    return false;
+	  }
 
 	bfd_put_8 (in_abfd, gap, data + *dst_ptr);
-	(*dst_ptr)++;
-	(*src_ptr)++;
+	*dst_ptr += 1;
+	*src_ptr += 1;
 	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 ();
+      link_info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"),
+	 in_abfd, input_section, reloc);
+      return false;
     }
+  return true;
+}
+
+static bool
+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.20200303/bfd/coff-z8k.c ./bfd/coff-z8k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/coff-z8k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/coff-z8k.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Cygnus Support.
    Written by Steve Chamberlain, <sac@cygnus.com>.
 
@@ -31,40 +31,40 @@
 #define COFF_DEFAULT_SECTION_ALIGNMENT_POWER (1)
 
 static reloc_howto_type r_imm32 =
-HOWTO (R_IMM32, 0, 2, 32, FALSE, 0,
-       complain_overflow_bitfield, 0, "r_imm32", TRUE, 0xffffffff,
-       0xffffffff, FALSE);
+HOWTO (R_IMM32, 0, 4, 32, false, 0,
+       complain_overflow_bitfield, 0, "r_imm32", true, 0xffffffff,
+       0xffffffff, false);
 
 static reloc_howto_type r_imm4l =
-HOWTO (R_IMM4L, 0, 0, 4, FALSE, 0,
-       complain_overflow_bitfield, 0, "r_imm4l", TRUE, 0xf, 0xf, FALSE);
+HOWTO (R_IMM4L, 0, 1, 4, false, 0,
+       complain_overflow_bitfield, 0, "r_imm4l", true, 0xf, 0xf, false);
 
 static reloc_howto_type r_da =
-HOWTO (R_IMM16, 0, 1, 16, FALSE, 0,
-       complain_overflow_bitfield, 0, "r_da", TRUE, 0x0000ffff, 0x0000ffff,
-       FALSE);
+HOWTO (R_IMM16, 0, 2, 16, false, 0,
+       complain_overflow_bitfield, 0, "r_da", 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);
+HOWTO (R_IMM8, 0, 1, 8, false, 0,
+       complain_overflow_bitfield, 0, "r_imm8", true, 0x000000ff, 0x000000ff,
+       false);
 
 static reloc_howto_type r_rel16 =
-HOWTO (R_REL16, 0, 1, 16, FALSE, 0,
-       complain_overflow_bitfield, 0, "r_rel16", TRUE, 0x0000ffff, 0x0000ffff,
-       TRUE);
+HOWTO (R_REL16, 0, 2, 16, false, 0,
+       complain_overflow_bitfield, 0, "r_rel16", true, 0x0000ffff, 0x0000ffff,
+       true);
 
 static reloc_howto_type r_jr =
-HOWTO (R_JR, 1, 0, 8, TRUE, 0, complain_overflow_signed, 0,
-       "r_jr", TRUE, 0xff, 0xff, TRUE);
+HOWTO (R_JR, 1, 1, 8, true, 0, complain_overflow_signed, 0,
+       "r_jr", true, 0xff, 0xff, true);
 
 static reloc_howto_type r_disp7 =
-HOWTO (R_DISP7, 0, 0, 7, TRUE, 0, complain_overflow_bitfield, 0,
-       "r_disp7", TRUE, 0x7f, 0x7f, TRUE);
+HOWTO (R_DISP7, 0, 1, 7, true, 0, complain_overflow_bitfield, 0,
+       "r_disp7", true, 0x7f, 0x7f, true);
 
 static reloc_howto_type r_callr =
-HOWTO (R_CALLR, 1, 1, 12, TRUE, 0, complain_overflow_signed, 0,
-       "r_callr", TRUE, 0xfff, 0xfff, TRUE);
+HOWTO (R_CALLR, 1, 2, 12, true, 0, complain_overflow_signed, 0,
+       "r_callr", true, 0xfff, 0xfff, true);
 
 #define BADMAG(x) Z8KBADMAG(x)
 #define Z8K 1			/* Customize coffcode.h.  */
@@ -177,25 +177,44 @@ reloc_processing (arelent *relent,
   relent->address = reloc->r_vaddr;
   rtype2howto (relent, reloc);
 
-  if (reloc->r_symndx > 0)
+  if (reloc->r_symndx == -1 || symbols == NULL)
+    relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
+  else if (reloc->r_symndx >= 0 && reloc->r_symndx < obj_conv_table_size (abfd))
     relent->sym_ptr_ptr = symbols + obj_convert (abfd)[reloc->r_symndx];
   else
-    relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
-
+    {
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB: warning: illegal symbol index %ld in relocs"),
+	 abfd, reloc->r_symndx);
+      relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
+    }
   relent->addend = reloc->r_offset;
   relent->address -= section->vma;
 }
 
-static void
+static bool
 extra_case (bfd *in_abfd,
 	    struct bfd_link_info *link_info,
 	    struct bfd_link_order *link_order,
 	    arelent *reloc,
 	    bfd_byte *data,
-	    unsigned int *src_ptr,
-	    unsigned int *dst_ptr)
+	    size_t *src_ptr,
+	    size_t *dst_ptr)
 {
   asection * input_section = link_order->u.indirect.section;
+  bfd_size_type end = bfd_get_section_limit_octets (in_abfd, input_section);
+  bfd_size_type reloc_size = bfd_get_reloc_size (reloc->howto);
+
+  if (*src_ptr > end
+      || reloc_size > end - *src_ptr)
+    {
+      link_info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
+	 in_abfd, input_section, reloc);
+      return false;
+    }
 
   switch (reloc->howto->type)
     {
@@ -203,8 +222,8 @@ extra_case (bfd *in_abfd,
       bfd_put_8 (in_abfd,
 		 bfd_coff_reloc16_get_value (reloc, link_info, input_section),
 		 data + *dst_ptr);
-      (*dst_ptr) += 1;
-      (*src_ptr) += 1;
+      *dst_ptr += 1;
+      *src_ptr += 1;
       break;
 
     case R_IMM32:
@@ -227,27 +246,26 @@ extra_case (bfd *in_abfd,
 	  dst = (dst & 0xffff) | ((dst & 0xff0000) << 8) | 0x80000000;
 	  bfd_put_32 (in_abfd, dst, data + *dst_ptr);
 	}
-      (*dst_ptr) += 4;
-      (*src_ptr) += 4;
+      *dst_ptr += 4;
+      *src_ptr += 4;
       break;
 
     case R_IMM4L:
       bfd_put_8 (in_abfd,
 		 ((bfd_get_8 (in_abfd, data + *dst_ptr) & 0xf0)
-		  | (0x0f
-		     & bfd_coff_reloc16_get_value (reloc, link_info,
-						   input_section))),
+		  | (0x0f & bfd_coff_reloc16_get_value (reloc, link_info,
+							input_section))),
 		 data + *dst_ptr);
-      (*dst_ptr) += 1;
-      (*src_ptr) += 1;
+      *dst_ptr += 1;
+      *src_ptr += 1;
       break;
 
     case R_IMM16:
       bfd_put_16 (in_abfd,
 		  bfd_coff_reloc16_get_value (reloc, link_info, input_section),
 		  data + *dst_ptr);
-      (*dst_ptr) += 2;
-      (*src_ptr) += 2;
+      *dst_ptr += 2;
+      *src_ptr += 2;
       break;
 
     case R_JR:
@@ -257,21 +275,22 @@ extra_case (bfd *in_abfd,
 	bfd_vma dot = (*dst_ptr
 		       + input_section->output_offset
 		       + input_section->output_section->vma);
-	int gap = dst - dot - 1;  /* -1, since we're in the odd byte of the
-				     word and the pc's been incremented.  */
-
-	if (gap & 1)
-	  abort ();
-	gap /= 2;
-	if (gap > 127 || gap < -128)
-	  (*link_info->callbacks->reloc_overflow)
-	    (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
-	     reloc->howto->name, reloc->addend, input_section->owner,
-	     input_section, reloc->address);
-
-	bfd_put_8 (in_abfd, gap, data + *dst_ptr);
-	(*dst_ptr)++;
-	(*src_ptr)++;
+	/* -1, since we're in the odd byte of the word and the pc has
+	   been incremented.  */
+	bfd_signed_vma gap = dst - dot - 1;
+
+	if ((gap & 1) != 0 || gap > 254 || gap < -256)
+	  {
+	    link_info->callbacks->reloc_overflow
+	      (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+	       reloc->howto->name, reloc->addend, input_section->owner,
+	       input_section, reloc->address);
+	    return false;
+	  }
+
+	bfd_put_8 (in_abfd, gap / 2, data + *dst_ptr);
+	*dst_ptr += 1;
+	*src_ptr += 1;
 	break;
       }
 
@@ -282,24 +301,23 @@ extra_case (bfd *in_abfd,
 	bfd_vma dot = (*dst_ptr
 		       + input_section->output_offset
 		       + input_section->output_section->vma);
-	int gap = dst - dot - 1;  /* -1, since we're in the odd byte of the
-				     word and the pc's been incremented.  */
+	bfd_signed_vma gap = dst - dot - 1;
 
-	if (gap & 1)
-	  abort ();
-	gap /= 2;
-
-	if (gap > 0 || gap < -127)
-	  (*link_info->callbacks->reloc_overflow)
-	    (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
-	     reloc->howto->name, reloc->addend, input_section->owner,
-	     input_section, reloc->address);
+	if ((gap & 1) != 0 || gap > 0 || gap < -254)
+	  {
+	    link_info->callbacks->reloc_overflow
+	      (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+	       reloc->howto->name, reloc->addend, input_section->owner,
+	       input_section, reloc->address);
+	    return false;
+	  }
 
 	bfd_put_8 (in_abfd,
-		   (bfd_get_8 ( in_abfd, data + *dst_ptr) & 0x80) + (-gap & 0x7f),
+		   ((bfd_get_8 (in_abfd, data + *dst_ptr) & 0x80)
+		    + (-gap / 2 & 0x7f)),
 		   data + *dst_ptr);
-	(*dst_ptr)++;
-	(*src_ptr)++;
+	*dst_ptr += 1;
+	*src_ptr += 1;
 	break;
       }
 
@@ -310,22 +328,23 @@ extra_case (bfd *in_abfd,
 	bfd_vma dot = (*dst_ptr
 		       + input_section->output_offset
 		       + input_section->output_section->vma);
-	int gap = dst - dot - 2;
+	bfd_signed_vma gap = dst - dot - 2;
 
-	if (gap & 1)
-	  abort ();
-	if (gap > 4096 || gap < -4095)
-	  (*link_info->callbacks->reloc_overflow)
-	    (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
-	     reloc->howto->name, reloc->addend, input_section->owner,
-	     input_section, reloc->address);
+	if ((gap & 1) != 0 || gap > 4096 || gap < -4095)
+	  {
+	    link_info->callbacks->reloc_overflow
+	      (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+	       reloc->howto->name, reloc->addend, input_section->owner,
+	       input_section, reloc->address);
+	    return false;
+	  }
 
-	gap /= 2;
 	bfd_put_16 (in_abfd,
-		    (bfd_get_16 ( in_abfd, data + *dst_ptr) & 0xf000) | (-gap & 0x0fff),
+		    ((bfd_get_16 (in_abfd, data + *dst_ptr) & 0xf000)
+		     | (-gap / 2 & 0x0fff)),
 		    data + *dst_ptr);
-	(*dst_ptr) += 2;
-	(*src_ptr) += 2;
+	*dst_ptr += 2;
+	*src_ptr += 2;
 	break;
       }
 
@@ -336,23 +355,31 @@ extra_case (bfd *in_abfd,
 	bfd_vma dot = (*dst_ptr
 		       + input_section->output_offset
 		       + input_section->output_section->vma);
-	int gap = dst - dot - 2;
+	bfd_signed_vma gap = dst - dot - 2;
 
 	if (gap > 32767 || gap < -32768)
-	  (*link_info->callbacks->reloc_overflow)
-	    (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
-	     reloc->howto->name, reloc->addend, input_section->owner,
-	     input_section, reloc->address);
-
-	bfd_put_16 (in_abfd, (bfd_vma) gap, data + *dst_ptr);
-	(*dst_ptr) += 2;
-	(*src_ptr) += 2;
+	  {
+	    link_info->callbacks->reloc_overflow
+	      (link_info, NULL, bfd_asymbol_name (*reloc->sym_ptr_ptr),
+	       reloc->howto->name, reloc->addend, input_section->owner,
+	       input_section, reloc->address);
+	    return false;
+	  }
+
+	bfd_put_16 (in_abfd, gap, data + *dst_ptr);
+	*dst_ptr += 2;
+	*src_ptr += 2;
 	break;
       }
 
     default:
-      abort ();
+      link_info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"),
+	 in_abfd, input_section, reloc);
+      return false;
     }
+  return true;
 }
 
 #define coff_reloc16_extra_cases    extra_case
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/compress.c ./bfd/compress.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/compress.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/compress.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Compressed section support (intended for debug sections).
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -20,188 +20,667 @@
 
 #include "sysdep.h"
 #include <zlib.h>
+#ifdef HAVE_ZSTD
+#include <zstd.h>
+#endif
 #include "bfd.h"
+#include "elf-bfd.h"
 #include "libbfd.h"
 #include "safe-ctype.h"
+#include "libiberty.h"
 
 #define MAX_COMPRESSION_HEADER_SIZE 24
 
-static bfd_boolean
-decompress_contents (bfd_byte *compressed_buffer,
+/*
+EXTERNAL
+.{* Types of compressed DWARF debug sections.  *}
+.enum compressed_debug_section_type
+.{
+.  COMPRESS_DEBUG_NONE = 0,
+.  COMPRESS_DEBUG_GNU_ZLIB = 1 << 1,
+.  COMPRESS_DEBUG_GABI_ZLIB = 1 << 2,
+.  COMPRESS_DEBUG_ZSTD = 1 << 3,
+.  COMPRESS_UNKNOWN = 1 << 4
+.};
+.
+.{* Tuple for compressed_debug_section_type and their name.  *}
+.struct compressed_type_tuple
+.{
+.  enum compressed_debug_section_type type;
+.  const char *name;
+.};
+.
+.{* Compression header ch_type values.  *}
+.enum compression_type
+.{
+.  ch_none = 0,
+.  ch_compress_zlib = 1	,	{* Compressed with zlib.  *}
+.  ch_compress_zstd = 2		{* Compressed with zstd (www.zstandard.org).  *}
+.};
+.
+.static inline char *
+.bfd_debug_name_to_zdebug (bfd *abfd, const char *name)
+.{
+.  size_t len = strlen (name);
+.  char *new_name = (char *) bfd_alloc (abfd, len + 2);
+.  if (new_name == NULL)
+.    return NULL;
+.  new_name[0] = '.';
+.  new_name[1] = 'z';
+.  memcpy (new_name + 2, name + 1, len);
+.  return new_name;
+.}
+.
+.static inline char *
+.bfd_zdebug_name_to_debug (bfd *abfd, const char *name)
+.{
+.  size_t len = strlen (name);
+.  char *new_name = (char *) bfd_alloc (abfd, len);
+.  if (new_name == NULL)
+.    return NULL;
+.  new_name[0] = '.';
+.  memcpy (new_name + 1, name + 2, len - 1);
+.  return new_name;
+.}
+.
+*/
+
+/* Display texts for type of compressed DWARF debug sections.  */
+static const struct compressed_type_tuple compressed_debug_section_names[] =
+{
+  { COMPRESS_DEBUG_NONE, "none" },
+  { COMPRESS_DEBUG_GABI_ZLIB, "zlib" },
+  { COMPRESS_DEBUG_GNU_ZLIB, "zlib-gnu" },
+  { COMPRESS_DEBUG_GABI_ZLIB, "zlib-gabi" },
+  { COMPRESS_DEBUG_ZSTD, "zstd" },
+};
+
+/*
+FUNCTION
+	bfd_get_compression_algorithm
+SYNOPSIS
+	enum compressed_debug_section_type
+	  bfd_get_compression_algorithm (const char *name);
+DESCRIPTION
+	Return compressed_debug_section_type from a string representation.
+*/
+enum compressed_debug_section_type
+bfd_get_compression_algorithm (const char *name)
+{
+  for (unsigned i = 0; i < ARRAY_SIZE (compressed_debug_section_names); ++i)
+    if (strcasecmp (compressed_debug_section_names[i].name, name) == 0)
+      return compressed_debug_section_names[i].type;
+
+  return COMPRESS_UNKNOWN;
+}
+
+/*
+FUNCTION
+	bfd_get_compression_algorithm_name
+SYNOPSIS
+	const char *bfd_get_compression_algorithm_name
+	  (enum compressed_debug_section_type type);
+DESCRIPTION
+	Return compression algorithm name based on the type.
+*/
+const char *
+bfd_get_compression_algorithm_name (enum compressed_debug_section_type type)
+{
+  for (unsigned i = 0; i < ARRAY_SIZE (compressed_debug_section_names); ++i)
+    if (type == compressed_debug_section_names[i].type)
+      return compressed_debug_section_names[i].name;
+
+  return NULL;
+}
+
+/*
+FUNCTION
+	bfd_update_compression_header
+
+SYNOPSIS
+	void bfd_update_compression_header
+	  (bfd *abfd, bfd_byte *contents, asection *sec);
+
+DESCRIPTION
+	Set the compression header at CONTENTS of SEC in ABFD and update
+	elf_section_flags for compression.
+*/
+
+void
+bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
+			       asection *sec)
+{
+  if ((abfd->flags & BFD_COMPRESS) == 0)
+    abort ();
+
+  switch (bfd_get_flavour (abfd))
+    {
+    case bfd_target_elf_flavour:
+      if ((abfd->flags & BFD_COMPRESS_GABI) != 0)
+	{
+	  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+	  struct bfd_elf_section_data * esd = elf_section_data (sec);
+	  enum compression_type ch_type = (abfd->flags & BFD_COMPRESS_ZSTD
+					   ? ch_compress_zstd
+					   : ch_compress_zlib);
+
+	  /* 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, ch_type, &echdr->ch_type);
+	      bfd_put_32 (abfd, sec->size, &echdr->ch_size);
+	      bfd_put_32 (abfd, 1u << sec->alignment_power,
+			  &echdr->ch_addralign);
+	      /* bfd_log2 (alignof (Elf32_Chdr)) */
+	      bfd_set_section_alignment (sec, 2);
+	      esd->this_hdr.sh_addralign = 4;
+	    }
+	  else
+	    {
+	      Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
+	      bfd_put_32 (abfd, ch_type, &echdr->ch_type);
+	      bfd_put_32 (abfd, 0, &echdr->ch_reserved);
+	      bfd_put_64 (abfd, sec->size, &echdr->ch_size);
+	      bfd_put_64 (abfd, UINT64_C (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;
+    }
+}
+
+/* Check the compression header at CONTENTS of SEC in ABFD and store the
+   ch_type in CH_TYPE, uncompressed size in UNCOMPRESSED_SIZE, and the
+   uncompressed data alignment in UNCOMPRESSED_ALIGNMENT_POWER if the
+   compression header is valid.  */
+
+static bool
+bfd_check_compression_header (bfd *abfd, bfd_byte *contents,
+			      asection *sec,
+			      enum compression_type *ch_type,
+			      bfd_size_type *uncompressed_size,
+			      unsigned int *uncompressed_alignment_power)
+{
+  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+      && (elf_section_flags (sec) & SHF_COMPRESSED) != 0)
+    {
+      Elf_Internal_Chdr chdr;
+      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+      if (bed->s->elfclass == ELFCLASS32)
+	{
+	  Elf32_External_Chdr *echdr = (Elf32_External_Chdr *) contents;
+	  chdr.ch_type = bfd_get_32 (abfd, &echdr->ch_type);
+	  chdr.ch_size = bfd_get_32 (abfd, &echdr->ch_size);
+	  chdr.ch_addralign = bfd_get_32 (abfd, &echdr->ch_addralign);
+	}
+      else
+	{
+	  Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
+	  chdr.ch_type = bfd_get_32 (abfd, &echdr->ch_type);
+	  chdr.ch_size = bfd_get_64 (abfd, &echdr->ch_size);
+	  chdr.ch_addralign = bfd_get_64 (abfd, &echdr->ch_addralign);
+	}
+      *ch_type = chdr.ch_type;
+      if ((chdr.ch_type == ch_compress_zlib
+	   || chdr.ch_type == ch_compress_zstd)
+	  && chdr.ch_addralign == (chdr.ch_addralign & -chdr.ch_addralign))
+	{
+	  *uncompressed_size = chdr.ch_size;
+	  *uncompressed_alignment_power = bfd_log2 (chdr.ch_addralign);
+	  return true;
+	}
+    }
+
+  return false;
+}
+
+/*
+FUNCTION
+	bfd_get_compression_header_size
+
+SYNOPSIS
+	int bfd_get_compression_header_size (bfd *abfd, asection *sec);
+
+DESCRIPTION
+	Return the size of the compression header of SEC in ABFD.
+*/
+
+int
+bfd_get_compression_header_size (bfd *abfd, asection *sec)
+{
+  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+    {
+      if (sec == NULL)
+	{
+	  if (!(abfd->flags & BFD_COMPRESS_GABI))
+	    return 0;
+	}
+      else if (!(elf_section_flags (sec) & SHF_COMPRESSED))
+	return 0;
+
+      if (get_elf_backend_data (abfd)->s->elfclass == ELFCLASS32)
+	return sizeof (Elf32_External_Chdr);
+      else
+	return sizeof (Elf64_External_Chdr);
+    }
+
+  return 0;
+}
+
+/*
+FUNCTION
+	bfd_convert_section_setup
+
+SYNOPSIS
+	bool bfd_convert_section_setup
+	  (bfd *ibfd, asection *isec, bfd *obfd,
+	   const char **new_name, bfd_size_type *new_size);
+
+DESCRIPTION
+	Do early setup for objcopy, when copying @var{isec} in input
+	BFD @var{ibfd} to output BFD @var{obfd}.  Returns the name and
+	size of the output section.
+*/
+
+bool
+bfd_convert_section_setup (bfd *ibfd, asection *isec, bfd *obfd,
+			   const char **new_name, bfd_size_type *new_size)
+{
+  bfd_size_type hdr_size;
+
+  if ((isec->flags & SEC_DEBUGGING) != 0
+      && (isec->flags & SEC_HAS_CONTENTS) != 0)
+    {
+      const char *name = *new_name;
+
+      if ((obfd->flags & (BFD_DECOMPRESS | BFD_COMPRESS_GABI)) != 0)
+	{
+	  /* When we decompress or compress with SHF_COMPRESSED,
+	     convert section name from .zdebug_* to .debug_*.  */
+	  if (startswith (name, ".zdebug_"))
+	    {
+	      name = bfd_zdebug_name_to_debug (obfd, name);
+	      if (name == NULL)
+		return false;
+	    }
+	}
+
+      /* PR binutils/18087: Compression does not always make a
+	 section smaller.  So only rename the section when
+	 compression has actually taken place.  If input section
+	 name is .zdebug_*, we should never compress it again.  */
+      else if (isec->compress_status == COMPRESS_SECTION_DONE
+	       && startswith (name, ".debug_"))
+	{
+	  name = bfd_debug_name_to_zdebug (obfd, name);
+	  if (name == NULL)
+	    return false;
+	}
+      *new_name = name;
+    }
+  *new_size = bfd_section_size (isec);
+
+  /* Do nothing if either input or output aren't ELF.  */
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+    return true;
+
+  /* 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;
+
+  /* Convert GNU property size.  */
+  if (startswith (isec->name, NOTE_GNU_PROPERTY_SECTION_NAME))
+    {
+      *new_size = _bfd_elf_convert_gnu_property_size (ibfd, obfd);
+      return true;
+    }
+
+  /* Do nothing if input file will be decompressed.  */
+  if ((ibfd->flags & BFD_DECOMPRESS))
+    return true;
+
+  /* Do nothing if the input section isn't a SHF_COMPRESSED section. */
+  hdr_size = bfd_get_compression_header_size (ibfd, isec);
+  if (hdr_size == 0)
+    return true;
+
+  /* Adjust the size of the output SHF_COMPRESSED section.  */
+  if (hdr_size == sizeof (Elf32_External_Chdr))
+    *new_size += sizeof (Elf64_External_Chdr) - sizeof (Elf32_External_Chdr);
+  else
+    *new_size -= sizeof (Elf64_External_Chdr) - sizeof (Elf32_External_Chdr);
+  return true;
+}
+
+/*
+FUNCTION
+	bfd_convert_section_contents
+
+SYNOPSIS
+	bool bfd_convert_section_contents
+	  (bfd *ibfd, asection *isec, bfd *obfd,
+	   bfd_byte **ptr, bfd_size_type *ptr_size);
+
+DESCRIPTION
+	Convert the contents, stored in @var{*ptr}, of the section
+	@var{isec} in input BFD @var{ibfd} to output BFD @var{obfd}
+	if needed.  The original buffer pointed to by @var{*ptr} may
+	be freed and @var{*ptr} is returned with memory malloc'd by this
+	function, and the new size written to @var{ptr_size}.
+*/
+
+bool
+bfd_convert_section_contents (bfd *ibfd, sec_ptr isec, bfd *obfd,
+			      bfd_byte **ptr, bfd_size_type *ptr_size)
+{
+  bfd_byte *contents;
+  bfd_size_type ihdr_size, ohdr_size, size;
+  Elf_Internal_Chdr chdr;
+  bool use_memmove;
+
+  /* Do nothing if either input or output aren't ELF.  */
+  if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
+      || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+    return true;
+
+  /* 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;
+
+  /* Convert GNU properties.  */
+  if (startswith (isec->name, NOTE_GNU_PROPERTY_SECTION_NAME))
+    return _bfd_elf_convert_gnu_properties (ibfd, isec, obfd, ptr,
+					    ptr_size);
+
+  /* Do nothing if input file will be decompressed.  */
+  if ((ibfd->flags & BFD_DECOMPRESS))
+    return true;
+
+  /* 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
+     output.  Get the input compression header and the size of the
+     output compression header.  */
+  if (ihdr_size == sizeof (Elf32_External_Chdr))
+    {
+      Elf32_External_Chdr *echdr = (Elf32_External_Chdr *) contents;
+      chdr.ch_type = bfd_get_32 (ibfd, &echdr->ch_type);
+      chdr.ch_size = bfd_get_32 (ibfd, &echdr->ch_size);
+      chdr.ch_addralign = bfd_get_32 (ibfd, &echdr->ch_addralign);
+
+      ohdr_size = sizeof (Elf64_External_Chdr);
+
+      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;
+      chdr.ch_type = bfd_get_32 (ibfd, &echdr->ch_type);
+      chdr.ch_size = bfd_get_64 (ibfd, &echdr->ch_size);
+      chdr.ch_addralign = bfd_get_64 (ibfd, &echdr->ch_addralign);
+
+      ohdr_size = sizeof (Elf32_External_Chdr);
+      use_memmove = true;
+    }
+
+  size = bfd_section_size (isec) - ihdr_size + ohdr_size;
+  if (!use_memmove)
+    {
+      contents = (bfd_byte *) bfd_malloc (size);
+      if (contents == NULL)
+	return false;
+    }
+
+  /* Write out the output compression header.  */
+  if (ohdr_size == sizeof (Elf32_External_Chdr))
+    {
+      Elf32_External_Chdr *echdr = (Elf32_External_Chdr *) contents;
+      bfd_put_32 (obfd, chdr.ch_type, &echdr->ch_type);
+      bfd_put_32 (obfd, chdr.ch_size, &echdr->ch_size);
+      bfd_put_32 (obfd, chdr.ch_addralign, &echdr->ch_addralign);
+    }
+  else
+    {
+      Elf64_External_Chdr *echdr = (Elf64_External_Chdr *) contents;
+      bfd_put_32 (obfd, chdr.ch_type, &echdr->ch_type);
+      bfd_put_32 (obfd, 0, &echdr->ch_reserved);
+      bfd_put_64 (obfd, chdr.ch_size, &echdr->ch_size);
+      bfd_put_64 (obfd, chdr.ch_addralign, &echdr->ch_addralign);
+    }
+
+  /* Copy the compressed contents.  */
+  if (use_memmove)
+    memmove (contents + ohdr_size, *ptr + ihdr_size, size - ohdr_size);
+  else
+    {
+      memcpy (contents + ohdr_size, *ptr + ihdr_size, size - ohdr_size);
+      free (*ptr);
+      *ptr = contents;
+    }
+
+  *ptr_size = size;
+  return true;
+}
+
+static bool
+decompress_contents (bool is_zstd, bfd_byte *compressed_buffer,
 		     bfd_size_type compressed_size,
 		     bfd_byte *uncompressed_buffer,
 		     bfd_size_type uncompressed_size)
 {
-  z_stream strm;
-  int rc;
+  if (is_zstd)
+    {
+#ifdef HAVE_ZSTD
+      size_t ret = ZSTD_decompress (uncompressed_buffer, uncompressed_size,
+				    compressed_buffer, compressed_size);
+      return !ZSTD_isError (ret);
+#endif
+    }
 
   /* It is possible the section consists of several compressed
      buffers concatenated together, so we uncompress in a loop.  */
-  /* PR 18313: The state field in the z_stream structure is supposed
-     to be invisible to the user (ie us), but some compilers will
-     still complain about it being used without initialisation.  So
-     we first zero the entire z_stream structure and then set the fields
-     that we need.  */
-  memset (& strm, 0, sizeof strm);
-  strm.avail_in = compressed_size;
-  strm.next_in = (Bytef*) compressed_buffer;
-  strm.avail_out = uncompressed_size;
-
-  BFD_ASSERT (Z_OK == 0);
-  rc = inflateInit (&strm);
-  while (strm.avail_in > 0 && strm.avail_out > 0)
+  do
     {
+      uLongf dst_len = uncompressed_size;
+      uLong src_len = compressed_size;
+      int rc = uncompress2 ((Bytef *) uncompressed_buffer, &dst_len,
+			    (Bytef *) compressed_buffer, &src_len);
       if (rc != Z_OK)
-	break;
-      strm.next_out = ((Bytef*) uncompressed_buffer
-		       + (uncompressed_size - strm.avail_out));
-      rc = inflate (&strm, Z_FINISH);
-      if (rc != Z_STREAM_END)
-	break;
-      rc = inflateReset (&strm);
+	return false;
+      uncompressed_buffer += dst_len;
+      uncompressed_size -= dst_len;
+      compressed_buffer += src_len;
+      compressed_size -= src_len;
     }
-  rc |= inflateEnd (&strm);
-  return rc == Z_OK && strm.avail_out == 0;
+  while (compressed_size > 0 && uncompressed_size > 0);
+  return compressed_size == 0 && uncompressed_size == 0;
 }
 
-/* Compress data of the size specified in @var{uncompressed_size}
-   and pointed to by @var{uncompressed_buffer} using zlib and store
+/* Compress section contents using zlib/zstd and store
    as the contents field.  This function assumes the contents
    field was allocated using bfd_malloc() or equivalent.
 
    Return the uncompressed size if the full section contents is
-   compressed successfully.  Otherwise return 0.  */
+   compressed successfully.  Otherwise return (bfd_size_type) -1.  */
 
 static bfd_size_type
-bfd_compress_section_contents (bfd *abfd, sec_ptr sec,
-			       bfd_byte *uncompressed_buffer,
-			       bfd_size_type uncompressed_size)
+bfd_compress_section_contents (bfd *abfd, sec_ptr sec)
 {
+  bfd_byte *input_buffer;
   uLong compressed_size;
   bfd_byte *buffer;
   bfd_size_type buffer_size;
-  bfd_boolean decompress;
   int zlib_size = 0;
-  int orig_compression_header_size;
-  bfd_size_type orig_uncompressed_size;
-  unsigned int orig_uncompressed_alignment_pow;
-  int header_size = bfd_get_compression_header_size (abfd, NULL);
-  bfd_boolean compressed
-    = bfd_is_section_compressed_with_header (abfd, sec,
-					     &orig_compression_header_size,
-					     &orig_uncompressed_size,
-					     &orig_uncompressed_alignment_pow);
+  int orig_header_size;
+  bfd_size_type uncompressed_size;
+  unsigned int uncompressed_alignment_pow;
+  enum compression_type ch_type = ch_none;
+  int new_header_size = bfd_get_compression_header_size (abfd, NULL);
+  bool compressed
+    = bfd_is_section_compressed_info (abfd, sec,
+				      &orig_header_size,
+				      &uncompressed_size,
+				      &uncompressed_alignment_pow,
+				      &ch_type);
+  bool update = false;
+
+  /* We shouldn't be trying to decompress unsupported compressed sections.  */
+  if (compressed && orig_header_size < 0)
+    abort ();
+
+  /* PR 31455: Check for a corrupt uncompressed size.  */
+  if (uncompressed_size == (bfd_size_type) -1)
+    return uncompressed_size;
 
   /* Either ELF compression header or the 12-byte, "ZLIB" + 8-byte size,
      overhead in .zdebug* section.  */
-  if (!header_size)
-     header_size = 12;
+  if (!new_header_size)
+    new_header_size = 12;
+  if (ch_type == ch_none)
+    orig_header_size = 12;
 
+  input_buffer = sec->contents;
   if (compressed)
     {
-      /* We shouldn't decompress unsupported compressed section.  */
-      if (orig_compression_header_size < 0)
-	abort ();
-
-      /* Different compression schemes.  Just move the compressed section
-	 contents to the right position. */
-      if (orig_compression_header_size == 0)
-	{
-	  /* Convert it from .zdebug* section.  Get the uncompressed
-	     size first.  We need to subtract the 12-byte overhead in
-	     .zdebug* section.  Set orig_compression_header_size to
-	     the 12-bye overhead.  */
-	  orig_compression_header_size = 12;
-	  zlib_size = uncompressed_size - 12;
-	}
-      else
+      zlib_size = sec->size - orig_header_size;
+      compressed_size = zlib_size + new_header_size;
+
+      /* If we are converting between zlib-gnu and zlib-gabi then the
+	 compressed contents just need to be moved.  */
+      update = (ch_type < ch_compress_zstd
+		&& (abfd->flags & BFD_COMPRESS_ZSTD) == 0);
+
+      /* Uncompress when not just moving contents or when compressed
+	 is not smaller than uncompressed.  */
+      if (!update || compressed_size >= uncompressed_size)
 	{
-	  /* Convert it to .zdebug* section.  */
-	  zlib_size = uncompressed_size - orig_compression_header_size;
-	}
+	  buffer_size = uncompressed_size;
+	  buffer = bfd_malloc (buffer_size);
+	  if (buffer == NULL)
+	    return (bfd_size_type) -1;
 
-      /* Add the header size.  */
-      compressed_size = zlib_size + header_size;
+	  if (!decompress_contents (ch_type == ch_compress_zstd,
+				    input_buffer + orig_header_size,
+				    zlib_size, buffer, buffer_size))
+	    {
+	      bfd_set_error (bfd_error_bad_value);
+	      free (buffer);
+	      return (bfd_size_type) -1;
+	    }
+	  free (input_buffer);
+	  bfd_set_section_alignment (sec, uncompressed_alignment_pow);
+	  sec->contents = buffer;
+	  sec->flags |= SEC_IN_MEMORY;
+	  sec->compress_status = COMPRESS_SECTION_NONE;
+	  sec->size = uncompressed_size;
+	  input_buffer = buffer;
+	}
     }
-  else
-    compressed_size = compressBound (uncompressed_size) + header_size;
 
-  /* Uncompress if it leads to smaller size.  */
-  if (compressed && compressed_size > orig_uncompressed_size)
+  if (!update)
+    compressed_size = compressBound (uncompressed_size) + new_header_size;
+
+  buffer_size = compressed_size;
+  buffer = bfd_alloc (abfd, buffer_size);
+  if (buffer == NULL)
+    return (bfd_size_type) -1;
+
+  if (update)
     {
-      decompress = TRUE;
-      buffer_size = orig_uncompressed_size;
+      if (compressed_size < uncompressed_size)
+	memcpy (buffer + new_header_size,
+		input_buffer + orig_header_size,
+		zlib_size);
     }
   else
     {
-      decompress = FALSE;
-      buffer_size = compressed_size;
-    }
-  buffer = (bfd_byte *) bfd_alloc (abfd, buffer_size);
-  if (buffer == NULL)
-    return 0;
-
-  if (compressed)
-    {
-      sec->size = orig_uncompressed_size;
-      if (decompress)
+      if (abfd->flags & BFD_COMPRESS_ZSTD)
 	{
-	  if (!decompress_contents (uncompressed_buffer
-				    + orig_compression_header_size,
-				    zlib_size, buffer, buffer_size))
+#if HAVE_ZSTD
+	  compressed_size = ZSTD_compress (buffer + new_header_size,
+					   compressed_size,
+					   input_buffer,
+					   uncompressed_size,
+					   ZSTD_CLEVEL_DEFAULT);
+	  if (ZSTD_isError (compressed_size))
 	    {
-	      bfd_set_error (bfd_error_bad_value);
 	      bfd_release (abfd, buffer);
-	      return 0;
+	      bfd_set_error (bfd_error_bad_value);
+	      return (bfd_size_type) -1;
 	    }
-	  free (uncompressed_buffer);
-	  bfd_set_section_alignment (sec, orig_uncompressed_alignment_pow);
-
-	  sec->contents = buffer;
-	  sec->compress_status = COMPRESS_SECTION_DONE;
-	  return orig_uncompressed_size;
+#endif
 	}
-      else
-	{
-	  bfd_update_compression_header (abfd, buffer, sec);
-	  memmove (buffer + header_size,
-		   uncompressed_buffer + orig_compression_header_size,
-		   zlib_size);
-	}
-    }
-  else
-    {
-      if (compress ((Bytef*) buffer + header_size,
-		    &compressed_size,
-		    (const Bytef*) uncompressed_buffer,
-		    uncompressed_size) != Z_OK)
+      else if (compress ((Bytef *) buffer + new_header_size, &compressed_size,
+			 (const Bytef *) input_buffer, uncompressed_size)
+	       != Z_OK)
 	{
 	  bfd_release (abfd, buffer);
 	  bfd_set_error (bfd_error_bad_value);
-	  return 0;
+	  return (bfd_size_type) -1;
 	}
 
-      compressed_size += header_size;
-      /* PR binutils/18087: If compression didn't make the section smaller,
-	 just keep it uncompressed.  */
-      if (compressed_size < uncompressed_size)
-	bfd_update_compression_header (abfd, buffer, sec);
-      else
-	{
-	  /* NOTE: There is a small memory leak here since
-	     uncompressed_buffer is malloced and won't be freed.  */
-	  bfd_release (abfd, buffer);
-	  sec->contents = uncompressed_buffer;
-	  sec->compress_status = COMPRESS_SECTION_NONE;
-	  return uncompressed_size;
-	}
+      compressed_size += new_header_size;
     }
 
-  free (uncompressed_buffer);
+  /* If compression didn't make the section smaller, keep it uncompressed.  */
+  if (compressed_size >= uncompressed_size)
+    {
+      memcpy (buffer, input_buffer, uncompressed_size);
+      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+	elf_section_flags (sec) &= ~SHF_COMPRESSED;
+      sec->compress_status = COMPRESS_SECTION_NONE;
+    }
+  else
+    {
+      sec->size = uncompressed_size;
+      bfd_update_compression_header (abfd, buffer, sec);
+      sec->size = compressed_size;
+      sec->compress_status = COMPRESS_SECTION_DONE;
+    }
+  sec->alloced = 1;
   sec->contents = buffer;
-  sec->size = compressed_size;
-  sec->compress_status = COMPRESS_SECTION_DONE;
-
+  sec->flags |= SEC_IN_MEMORY;
+  free (input_buffer);
   return uncompressed_size;
 }
 
@@ -210,7 +689,7 @@ FUNCTION
 	bfd_get_full_section_contents
 
 SYNOPSIS
-	bfd_boolean bfd_get_full_section_contents
+	bool bfd_get_full_section_contents
 	  (bfd *abfd, asection *section, bfd_byte **ptr);
 
 DESCRIPTION
@@ -223,53 +702,44 @@ DESCRIPTION
 	returns @code{TRUE} but @var{*ptr} is set to NULL.
 */
 
-bfd_boolean
+bool
 bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr)
 {
-  bfd_size_type sz;
+  bfd_size_type readsz = bfd_get_section_limit_octets (abfd, sec);
+  bfd_size_type allocsz = bfd_get_section_alloc_size (abfd, sec);
   bfd_byte *p = *ptr;
-  bfd_boolean ret;
+  bool ret;
   bfd_size_type save_size;
   bfd_size_type save_rawsize;
   bfd_byte *compressed_buffer;
   unsigned int compression_header_size;
+  const unsigned int compress_status = sec->compress_status;
 
-  if (abfd->direction != write_direction && sec->rawsize != 0)
-    sz = sec->rawsize;
-  else
-    sz = sec->size;
-  if (sz == 0)
+  if (allocsz == 0)
     {
       *ptr = NULL;
-      return TRUE;
+      return true;
+    }
+
+  if (p == NULL
+      && compress_status != COMPRESS_SECTION_DONE
+      && bfd_section_size_insane (abfd, sec))
+    {
+      /* PR 24708: Avoid attempts to allocate a ridiculous amount
+	 of memory.  */
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("error: %pB(%pA) is too large (%#" PRIx64 " bytes)"),
+	 abfd, sec, (uint64_t) readsz);
+      return false;
     }
 
-  switch (sec->compress_status)
+  switch (compress_status)
     {
     case COMPRESS_SECTION_NONE:
-      if (p == NULL)
+      if (p == NULL && !sec->mmapped_p)
 	{
-	  ufile_ptr filesize = bfd_get_file_size (abfd);
-	  if (filesize > 0
-	      && filesize < sz
-	      /* 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
-	      /* The MMO file format supports its own special compression
-		 technique, but it uses COMPRESS_SECTION_NONE when loading
-		 a section's contents.  */
-	      && bfd_get_flavour (abfd) != bfd_target_mmo_flavour)
-	    {
-	      /* 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(%pA) section size (%#" PRIx64 " bytes) is larger than file size (%#" PRIx64 " bytes)"),
-		 abfd, sec, (uint64_t) sz, (uint64_t) filesize);
-	      return FALSE;
-	    }
-	  p = (bfd_byte *) bfd_malloc (sz);
+	  p = (bfd_byte *) bfd_malloc (allocsz);
 	  if (p == NULL)
 	    {
 	      /* PR 20801: Provide a more helpful error message.  */
@@ -277,25 +747,26 @@ bfd_get_full_section_contents (bfd *abfd
 		_bfd_error_handler
 		  /* xgettext:c-format */
 		  (_("error: %pB(%pA) is too large (%#" PRIx64 " bytes)"),
-		  abfd, sec, (uint64_t) sz);
-	      return FALSE;
+		  abfd, sec, (uint64_t) allocsz);
+	      return false;
 	    }
 	}
 
-      if (!bfd_get_section_contents (abfd, sec, p, 0, sz))
+      if (!bfd_get_section_contents (abfd, sec, p, 0, readsz))
 	{
 	  if (*ptr != p)
 	    free (p);
-	  return FALSE;
+	  return false;
 	}
       *ptr = p;
-      return TRUE;
+      return true;
 
-    case DECOMPRESS_SECTION_SIZED:
+    case DECOMPRESS_SECTION_ZLIB:
+    case DECOMPRESS_SECTION_ZSTD:
       /* Read in the full compressed section contents.  */
       compressed_buffer = (bfd_byte *) bfd_malloc (sec->compressed_size);
       if (compressed_buffer == NULL)
-	return FALSE;
+	return false;
       save_rawsize = sec->rawsize;
       save_size = sec->size;
       /* Clear rawsize, set size to compressed size and set compress_status
@@ -309,12 +780,12 @@ bfd_get_full_section_contents (bfd *abfd
       /* Restore rawsize and size.  */
       sec->rawsize = save_rawsize;
       sec->size = save_size;
-      sec->compress_status = DECOMPRESS_SECTION_SIZED;
+      sec->compress_status = compress_status;
       if (!ret)
 	goto fail_compressed;
 
       if (p == NULL)
-	p = (bfd_byte *) bfd_malloc (sz);
+	p = (bfd_byte *) bfd_malloc (allocsz);
       if (p == NULL)
 	goto fail_compressed;
 
@@ -323,35 +794,37 @@ bfd_get_full_section_contents (bfd *abfd
 	/* Set header size to the zlib header size if it is a
 	   SHF_COMPRESSED section.  */
 	compression_header_size = 12;
-      if (!decompress_contents (compressed_buffer + compression_header_size,
-				sec->compressed_size - compression_header_size, p, sz))
+      bool is_zstd = compress_status == DECOMPRESS_SECTION_ZSTD;
+      if (!decompress_contents (
+	      is_zstd, compressed_buffer + compression_header_size,
+	      sec->compressed_size - compression_header_size, p, readsz))
 	{
 	  bfd_set_error (bfd_error_bad_value);
 	  if (p != *ptr)
 	    free (p);
 	fail_compressed:
 	  free (compressed_buffer);
-	  return FALSE;
+	  return false;
 	}
 
       free (compressed_buffer);
       *ptr = p;
-      return TRUE;
+      return true;
 
     case COMPRESS_SECTION_DONE:
       if (sec->contents == NULL)
-	return FALSE;
+	return false;
       if (p == NULL)
 	{
-	  p = (bfd_byte *) bfd_malloc (sz);
+	  p = (bfd_byte *) bfd_malloc (allocsz);
 	  if (p == NULL)
-	    return FALSE;
+	    return false;
 	  *ptr = p;
 	}
       /* PR 17512; file: 5bc29788.  */
       if (p != sec->contents)
-	memcpy (p, sec->contents, sz);
-      return TRUE;
+	memcpy (p, sec->contents, readsz);
+      return true;
 
     default:
       abort ();
@@ -360,36 +833,15 @@ bfd_get_full_section_contents (bfd *abfd
 
 /*
 FUNCTION
-	bfd_cache_section_contents
-
-SYNOPSIS
-	void bfd_cache_section_contents
-	  (asection *sec, void *contents);
-
-DESCRIPTION
-	Stash @var(contents) so any following reads of @var(sec) do
-	not need to decompress again.
-*/
-
-void
-bfd_cache_section_contents (asection *sec, void *contents)
-{
-  if (sec->compress_status == DECOMPRESS_SECTION_SIZED)
-    sec->compress_status = COMPRESS_SECTION_DONE;
-  sec->contents = contents;
-  sec->flags |= SEC_IN_MEMORY;
-}
-
-/*
-FUNCTION
-	bfd_is_section_compressed_with_header
+	bfd_is_section_compressed_info
 
 SYNOPSIS
-	bfd_boolean bfd_is_section_compressed_with_header
+	bool bfd_is_section_compressed_info
 	  (bfd *abfd, asection *section,
-	  int *compression_header_size_p,
-	  bfd_size_type *uncompressed_size_p,
-	  unsigned int *uncompressed_alignment_power_p);
+	   int *compression_header_size_p,
+	   bfd_size_type *uncompressed_size_p,
+	   unsigned int *uncompressed_alignment_power_p,
+	   enum compression_type *ch_type);
 
 DESCRIPTION
 	Return @code{TRUE} if @var{section} is compressed.  Compression
@@ -401,17 +853,18 @@ DESCRIPTION
 	and uncompressed size is returned with 0.
 */
 
-bfd_boolean
-bfd_is_section_compressed_with_header (bfd *abfd, sec_ptr sec,
-				       int *compression_header_size_p,
-				       bfd_size_type *uncompressed_size_p,
-				       unsigned int *uncompressed_align_pow_p)
+bool
+bfd_is_section_compressed_info (bfd *abfd, sec_ptr sec,
+				int *compression_header_size_p,
+				bfd_size_type *uncompressed_size_p,
+				unsigned int *uncompressed_align_pow_p,
+				enum compression_type *ch_type)
 {
   bfd_byte header[MAX_COMPRESSION_HEADER_SIZE];
   int compression_header_size;
   int header_size;
   unsigned int saved = sec->compress_status;
-  bfd_boolean compressed;
+  bool compressed;
 
   *uncompressed_align_pow_p = 0;
 
@@ -429,19 +882,19 @@ bfd_is_section_compressed_with_header (b
       if (compression_header_size == 0)
 	/* In this case, it should be "ZLIB" followed by the uncompressed
 	   section size, 8 bytes in big-endian order.  */
-	compressed = CONST_STRNEQ ((char*) header , "ZLIB");
+	compressed = startswith ((char*) header , "ZLIB");
       else
-	compressed = TRUE;
+	compressed = true;
     }
   else
-    compressed = FALSE;
+    compressed = false;
 
   *uncompressed_size_p = sec->size;
   if (compressed)
     {
       if (compression_header_size != 0)
 	{
-	  if (!bfd_check_compression_header (abfd, header, sec,
+	  if (!bfd_check_compression_header (abfd, header, sec, ch_type,
 					     uncompressed_size_p,
 					     uncompressed_align_pow_p))
 	    compression_header_size = -1;
@@ -452,7 +905,7 @@ bfd_is_section_compressed_with_header (b
 	 have the first byte of its (big-endian) size be non-zero.  */
       else if (strcmp (sec->name, ".debug_str") == 0
 	       && ISPRINT (header[4]))
-	compressed = FALSE;
+	compressed = false;
       else
 	*uncompressed_size_p = bfd_getb64 (header + 4);
     }
@@ -468,23 +921,25 @@ FUNCTION
 	bfd_is_section_compressed
 
 SYNOPSIS
-	bfd_boolean bfd_is_section_compressed
+	bool bfd_is_section_compressed
 	  (bfd *abfd, asection *section);
 
 DESCRIPTION
 	Return @code{TRUE} if @var{section} is compressed.
 */
 
-bfd_boolean
+bool
 bfd_is_section_compressed (bfd *abfd, sec_ptr sec)
 {
   int compression_header_size;
   bfd_size_type uncompressed_size;
   unsigned int uncompressed_align_power;
-  return (bfd_is_section_compressed_with_header (abfd, sec,
-						 &compression_header_size,
-						 &uncompressed_size,
-						 &uncompressed_align_power)
+  enum compression_type ch_type;
+  return (bfd_is_section_compressed_info (abfd, sec,
+					  &compression_header_size,
+					  &uncompressed_size,
+					  &uncompressed_align_power,
+					  &ch_type)
 	  && compression_header_size >= 0
 	  && uncompressed_size > 0);
 }
@@ -494,19 +949,19 @@ FUNCTION
 	bfd_init_section_decompress_status
 
 SYNOPSIS
-	bfd_boolean bfd_init_section_decompress_status
+	bool bfd_init_section_decompress_status
 	  (bfd *abfd, asection *section);
 
 DESCRIPTION
 	Record compressed section size, update section size with
 	decompressed size and set compress_status to
-	DECOMPRESS_SECTION_SIZED.
+	DECOMPRESS_SECTION_{ZLIB,ZSTD}.
 
 	Return @code{FALSE} if the section is not a valid compressed
 	section.  Otherwise, return @code{TRUE}.
 */
 
-bfd_boolean
+bool
 bfd_init_section_decompress_status (bfd *abfd, sec_ptr sec)
 {
   bfd_byte header[MAX_COMPRESSION_HEADER_SIZE];
@@ -514,6 +969,7 @@ bfd_init_section_decompress_status (bfd
   int header_size;
   bfd_size_type uncompressed_size;
   unsigned int uncompressed_alignment_power = 0;
+  enum compression_type ch_type;
 
   compression_header_size = bfd_get_compression_header_size (abfd, sec);
   if (compression_header_size > MAX_COMPRESSION_HEADER_SIZE)
@@ -527,34 +983,47 @@ bfd_init_section_decompress_status (bfd
       || !bfd_get_section_contents (abfd, sec, header, 0, header_size))
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   if (compression_header_size == 0)
     {
       /* In this case, it should be "ZLIB" followed by the uncompressed
 	 section size, 8 bytes in big-endian order.  */
-      if (! CONST_STRNEQ ((char*) header, "ZLIB"))
+      if (! startswith ((char*) header, "ZLIB"))
 	{
 	  bfd_set_error (bfd_error_wrong_format);
-	  return FALSE;
+	  return false;
 	}
       uncompressed_size = bfd_getb64 (header + 4);
+      ch_type = ch_none;
     }
   else if (!bfd_check_compression_header (abfd, header, sec,
+					  &ch_type,
 					  &uncompressed_size,
 					  &uncompressed_alignment_power))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
+    }
+
+  /* PR28530, reject sizes unsupported by decompress_contents. zlib
+     supports only up to 4 GiB input on machines whose long is 32 bits. */
+  if (ch_type == ch_compress_zlib
+      && (sec->size != (uLong) sec->size
+	  || uncompressed_size != (uLongf) uncompressed_size))
+    {
+      bfd_set_error (bfd_error_nonrepresentable_section);
+      return false;
     }
 
   sec->compressed_size = sec->size;
   sec->size = uncompressed_size;
   bfd_set_section_alignment (sec, uncompressed_alignment_power);
-  sec->compress_status = DECOMPRESS_SECTION_SIZED;
+  sec->compress_status = (ch_type == ch_compress_zstd
+			  ? DECOMPRESS_SECTION_ZSTD : DECOMPRESS_SECTION_ZLIB);
 
-  return TRUE;
+  return true;
 }
 
 /*
@@ -562,7 +1031,7 @@ FUNCTION
 	bfd_init_section_compress_status
 
 SYNOPSIS
-	bfd_boolean bfd_init_section_compress_status
+	bool bfd_init_section_compress_status
 	  (bfd *abfd, asection *section);
 
 DESCRIPTION
@@ -573,7 +1042,7 @@ DESCRIPTION
 	section.  Otherwise, return @code{TRUE}.
 */
 
-bfd_boolean
+bool
 bfd_init_section_compress_status (bfd *abfd, sec_ptr sec)
 {
   bfd_size_type uncompressed_size;
@@ -584,10 +1053,11 @@ bfd_init_section_compress_status (bfd *a
       || sec->size == 0
       || sec->rawsize != 0
       || sec->contents != NULL
-      || sec->compress_status != COMPRESS_SECTION_NONE)
+      || sec->compress_status != COMPRESS_SECTION_NONE
+      || bfd_section_size_insane (abfd, sec))
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   /* Read in the full section contents and compress it.  */
@@ -595,16 +1065,23 @@ bfd_init_section_compress_status (bfd *a
   uncompressed_buffer = (bfd_byte *) bfd_malloc (uncompressed_size);
   /* PR 21431 */
   if (uncompressed_buffer == NULL)
-    return FALSE;
+    return false;
 
   if (!bfd_get_section_contents (abfd, sec, uncompressed_buffer,
 				 0, uncompressed_size))
-    return FALSE;
+    {
+      free (uncompressed_buffer);
+      return false;
+    }
 
-  uncompressed_size = bfd_compress_section_contents (abfd, sec,
-						     uncompressed_buffer,
-						     uncompressed_size);
-  return uncompressed_size != 0;
+  sec->contents = uncompressed_buffer;
+  if (bfd_compress_section_contents (abfd, sec) == (bfd_size_type) -1)
+    {
+      free (sec->contents);
+      sec->contents = NULL;
+      return false;
+    }
+  return true;
 }
 
 /*
@@ -612,7 +1089,7 @@ FUNCTION
 	bfd_compress_section
 
 SYNOPSIS
-	bfd_boolean bfd_compress_section
+	bool bfd_compress_section
 	  (bfd *abfd, asection *section, bfd_byte *uncompressed_buffer);
 
 DESCRIPTION
@@ -620,10 +1097,10 @@ DESCRIPTION
 	compressed size and set compress_status to COMPRESS_SECTION_DONE.
 
 	Return @code{FALSE} if compression fail.  Otherwise, return
-	@code{TRUE}.
+	@code{TRUE}.  UNCOMPRESSED_BUFFER is freed in both cases.
 */
 
-bfd_boolean
+bool
 bfd_compress_section (bfd *abfd, sec_ptr sec, bfd_byte *uncompressed_buffer)
 {
   bfd_size_type uncompressed_size = sec->size;
@@ -637,10 +1114,15 @@ bfd_compress_section (bfd *abfd, sec_ptr
       || sec->compress_status != COMPRESS_SECTION_NONE)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
-  /* Compress it.  */
-  return bfd_compress_section_contents (abfd, sec, uncompressed_buffer,
-					uncompressed_size) != 0;
+  sec->contents = uncompressed_buffer;
+  if (bfd_compress_section_contents (abfd, sec) == (bfd_size_type) -1)
+    {
+      free (sec->contents);
+      sec->contents = NULL;
+      return false;
+    }
+  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.20200303/bfd/config.bfd ./bfd/config.bfd
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/config.bfd	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/config.bfd	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 # config.bfd
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2025 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
@@ -48,12 +48,6 @@ targ_underscore=no
 
 # Catch obsolete configurations.
 case $targ in
- openrisc-*-* | or32-*-*)
-    echo "*** Configuration $targ is obsolete." >&2
-    echo "*** Use or1k-*-elf or or1k-*-linux as the target instead" >&2
-    exit 1
-    ;;
- c30-*-*aout* | tic30-*-*aout* | \
  null)
     if test "x$enable_obsolete" != xyes; then
       echo "*** Configuration $targ is obsolete." >&2
@@ -64,27 +58,46 @@ case $targ in
     fi;;
 esac
 
+# Warn on changed defaulting
+case $targ in
+ *-*-netbsdelf* | *-*-netbsdaout* | *-*-netbsdpe*)
+    # Explicit, no defaulting
+    ;;
+ ns32k-*-netbsd*)
+    # The obsolete warning below is enough, and ns32k does not have ELF support
+    ;;
+ *-*-netbsd* )
+    targ_migrated=`echo "$targ" | sed 's/netbsd/netbsdaout/'`
+    echo "*** WARNING: $targ is now defaults to meaning ELF not a.out." >&2
+    echo "*** Use $targ_migrated instead to explicitly specify a.out." >&2
+    ;;
+esac
+
 case $targ in
- *-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu | \
  mips*-*-irix5* | mips*-*-irix6*)
     # Not obsolete
     ;;
- *-adobe-* | \
- *-go32-rtems* | \
- *-sony-* | \
- *-tandem-* | \
+ *-*-beos* | \
+ *-*-cloudabi* | \
  *-*-ieee* | \
+ *-*-nacl* | \
+ *-*-netbsdpe* | \
  *-*-netware* | \
  *-*-rtemsaout* | \
  *-*-rtemscoff* | \
+ *-adobe-* | \
+ *-go32-rtems* | \
+ *-sony-* | \
+ *-tandem-* | \
  a29k-* | \
  arm*-*-aout | \
  arm-*-coff | \
- arm-*-netbsd* | \
- arm-*-openbsd* | \
+ arm*-*-netbsdaout* | \
  arm-*-oabi | \
  arm-*-riscix* | \
+ arm*-*-symbianelf* | \
  arm-epoc-pe* | \
+ c30-*-*aout* | tic30-*-*aout* | \
  cr16c-*-* | \
  h8300*-*-coff | \
  h8500*-*-coff | \
@@ -99,7 +112,7 @@ case $targ in
  i[3-7]86-*-aix* | \
  i[3-7]86-sequent-bsd* | \
  i[3-7]86-*-freebsdaout* | i[3-7]86-*-freebsd[12].* | i[3-7]86-*-freebsd[12] | \
- i[3-7]86-*-netbsdaout* | i[3-7]86-*-netbsd* | \
+ i[3-7]86-*-netbsdaout* | \
  i[3-7]86-*-openbsd[0-2].* | i[3-7]86-*-openbsd3.[0-3] | \
  i[3-7]86-*-linux*aout* | \
  i[3-7]86-*-mach* | i[3-7]86-*-osf1mk* | \
@@ -109,12 +122,13 @@ case $targ in
  i370-* | \
  i860-*-* | \
  i960-*-* | \
- m68*-*-*bsd* | \
+ m68*-*-bsd* | \
  m68*-*-aout* | \
  m68*-*-coff* | \
  m68*-*-hpux* | \
  m68*-*-linux*aout* | \
  m68*-*-lynxos* | \
+ m68*-*-openbsd* | \
  m68*-*-os68k* | \
  m68*-*-psos* | \
  m68*-*-sunos* | \
@@ -123,9 +137,7 @@ case $targ in
  m68*-*-vxworks* | \
  m68*-apollo-* | \
  m68*-apple-aux* | \
- m68*-bull-sysv* | \
  m68*-ericsson-* | \
- m68*-motorola-sysv* | \
  m68*-netx-* | \
  m88*-*-* | \
  maxq-*-coff | \
@@ -140,7 +152,14 @@ case $targ in
  mips*-dec-* | \
  mips*-sgi-* | \
  mips*el-*-rtems* | \
+ m32c-*-rtems* | \
+ nios2*-*-* | \
+ ns32k-*-netbsd* | \
+ openrisc-*-* | \
+ or32-*-* | \
  powerpc-*-lynxos* | powerpc-*-windiss* | \
+ powerpcle-*-pe | powerpcle-*-winnt* | powerpcle-*-cygwin* | \
+ sh*-*-netbsdaout* | \
  sh*-*-symbianelf* | sh5*-*-* | sh64*-*-* | \
  sparc*-*-*aout* | \
  sparc*-*-chorus* | \
@@ -151,9 +170,10 @@ 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
+    echo "*** Configuration $targ is now obsolete" >&2
+    echo "*** and so support for it has been REMOVED." >&2
     exit 1
     ;;
 esac
@@ -165,6 +185,7 @@ alpha*)		 targ_archs=bfd_alpha_arch ;;
 am33_2.0*)	 targ_archs=bfd_mn10300_arch ;;
 arc*)		 targ_archs=bfd_arc_arch ;;
 arm*)		 targ_archs=bfd_arm_arch ;;
+amdgcn*)	 targ_archs=bfd_amdgcn_arch ;;
 bfin*)		 targ_archs=bfd_bfin_arch ;;
 c30*)		 targ_archs=bfd_tic30_arch ;;
 c4x*)		 targ_archs=bfd_tic4x_arch ;;
@@ -178,16 +199,14 @@ fido*)		 targ_archs=bfd_m68k_arch ;;
 hppa*)		 targ_archs=bfd_hppa_arch ;;
 i[3-7]86)	 targ_archs=bfd_i386_arch ;;
 ia16)		 targ_archs=bfd_i386_arch ;;
-lm32)	         targ_archs=bfd_lm32_arch ;;
+kvx)		 targ_archs=bfd_kvx_arch ;;
+loongarch*)	 targ_archs=bfd_loongarch_arch ;;
 m6811*|m68hc11*) targ_archs="bfd_m68hc11_arch bfd_m68hc12_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
 m6812*|m68hc12*) targ_archs="bfd_m68hc12_arch bfd_m68hc11_arch bfd_m9s12x_arch bfd_m9s12xg_arch" ;;
 m68*)		 targ_archs=bfd_m68k_arch ;;
-s12z*)         targ_archs=bfd_s12z_arch ;;
 microblaze*)	 targ_archs=bfd_microblaze_arch ;;
 mips*)		 targ_archs=bfd_mips_arch ;;
 nds32*)		 targ_archs=bfd_nds32_arch ;;
-nfp)		 targ_archs=bfd_nfp_arch ;;
-nios2*)          targ_archs=bfd_nios2_arch ;;
 or1k*|or1knd*)	 targ_archs=bfd_or1k_arch ;;
 pdp11*)		 targ_archs=bfd_pdp11_arch ;;
 pj*)		 targ_archs="bfd_pj_arch bfd_i386_arch";;
@@ -195,6 +214,7 @@ powerpc*)	 targ_archs="bfd_rs6000_arch b
 pru*)		 targ_archs=bfd_pru_arch ;;
 riscv*)		 targ_archs=bfd_riscv_arch ;;
 rs6000)		 targ_archs="bfd_rs6000_arch bfd_powerpc_arch" ;;
+s12z*)		 targ_archs=bfd_s12z_arch ;;
 s390*)		 targ_archs=bfd_s390_arch ;;
 sh*)		 targ_archs=bfd_sh_arch ;;
 sparc*)		 targ_archs=bfd_sparc_arch ;;
@@ -203,11 +223,9 @@ tilegx*)	 targ_archs=bfd_tilegx_arch ;;
 tilepro*)	 targ_archs=bfd_tilepro_arch ;;
 v850*)		 targ_archs="bfd_v850_arch bfd_v850_rh850_arch" ;;
 visium*)	 targ_archs=bfd_visium_arch ;;
-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
@@ -227,11 +245,17 @@ case "${targ}" in
     targ_archs="$targ_archs bfd_i386_arch bfd_powerpc_arch bfd_rs6000_arch"
     want64=true
     ;;
-  aarch64-*-elf | aarch64-*-rtems*)
+  aarch64-*-elf | aarch64-*-rtems* | aarch64-*-genode*)
     targ_defvec=aarch64_elf64_le_vec
-    targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
+    targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec aarch64_pei_le_vec aarch64_pe_le_vec"
     want64=true
     ;;
+  aarch64-*-pe* | aarch64-*-mingw*)
+    targ_defvec=aarch64_pe_le_vec
+    targ_selvecs="aarch64_pe_le_vec aarch64_pei_le_vec aarch64_elf64_le_vec aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec pdb_vec"
+    want64=true
+    targ_underscore=no
+    ;;
   aarch64_be-*-elf)
     targ_defvec=aarch64_elf64_be_vec
     targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec"
@@ -242,22 +266,27 @@ case "${targ}" in
     targ_selvecs="aarch64_elf64_be_vec arm_elf32_le_vec arm_elf32_be_vec"
     want64=true
     ;;
-  aarch64-*-fuchsia*)
+  aarch64-*-openbsd*)
     targ_defvec=aarch64_elf64_le_vec
     targ_selvecs="aarch64_elf64_be_vec arm_elf32_le_vec arm_elf32_be_vec"
     want64=true
     ;;
-  aarch64-*-cloudabi*)
-    targ_defvec=aarch64_elf64_le_cloudabi_vec
-    targ_selvecs=aarch64_elf64_be_cloudabi_vec
+  aarch64-*-fuchsia*)
+    targ_defvec=aarch64_elf64_le_vec
+    targ_selvecs="aarch64_elf64_be_vec arm_elf32_le_vec arm_elf32_be_vec"
     want64=true
     ;;
-  aarch64-*-linux*)
+  aarch64-*-haiku*)
     targ_defvec=aarch64_elf64_le_vec
     targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec"
     want64=true
     ;;
-  aarch64_be-*-linux*)
+  aarch64-*-linux* | aarch64-*-netbsd* | aarch64-*-nto* | aarch64-*-gnu*)
+    targ_defvec=aarch64_elf64_le_vec
+    targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec aarch64_pei_le_vec aarch64_pe_le_vec"
+    want64=true
+    ;;
+  aarch64_be-*-linux* | aarch64_be-*-netbsd*)
     targ_defvec=aarch64_elf64_be_vec
     targ_selvecs="aarch64_elf64_le_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_be_vec arm_elf32_le_vec"
     want64=true
@@ -296,6 +325,10 @@ case "${targ}" in
     targ_defvec=alpha_ecoff_le_vec
     want64=true
     ;;
+  amdgcn-*-*)
+    targ_defvec=amdgcn_elf64_le_vec
+    want64=true
+    ;;
   ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
     targ_defvec=ia64_elf64_le_vec
     targ_selvecs="ia64_elf64_be_vec ia64_pei_vec"
@@ -336,23 +369,15 @@ case "${targ}" in
     targ_defvec=arm_elf32_le_vec
     targ_selvecs="arm_elf32_be_vec"
     ;;
-  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"
-    ;;
-  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"
+  arm*-*-haiku*)
+    targ_defvec=arm_elf32_le_vec
+    targ_selvecs="arm_elf32_fdpic_le_vec arm_elf32_be_vec arm_elf32_fdpic_be_vec arm_pe_le_vec arm_pe_be_vec arm_pei_le_vec arm_pei_be_vec"
     ;;
-  armeb-*-netbsdelf*)
+  armeb-*-netbsd*)
     targ_defvec=arm_elf32_be_vec
     targ_selvecs="arm_elf32_le_vec"
     ;;
-  arm-*-netbsdelf*)
+  arm-*-netbsd* | arm-*-openbsd*)
     targ_defvec=arm_elf32_le_vec
     targ_selvecs="arm_elf32_be_vec"
     ;;
@@ -394,10 +419,6 @@ case "${targ}" in
     targ_defvec=arm_elf32_vxworks_le_vec
     targ_selvecs=arm_elf32_vxworks_be_vec
     ;;
-  arm*-*-symbianelf*)
-    targ_defvec=arm_elf32_symbian_le_vec
-    targ_selvecs=arm_elf32_symbian_be_vec
-    ;;
   arm9e-*-elf)
     targ_defvec=arm_elf32_le_vec
     targ_selvecs=arm_elf32_be_vec
@@ -413,9 +434,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
     ;;
@@ -437,7 +455,6 @@ case "${targ}" in
     targ_underscore=yes
     ;;
 
-#ifdef BFD64
   cris-*-* | crisv32-*-*)
     targ_defvec=cris_aout_vec
     targ_selvecs="cris_elf32_us_vec cris_elf32_vec"
@@ -447,7 +464,6 @@ case "${targ}" in
     esac
     want64=true
     ;;
-#endif
 
   crx-*-elf*)
     targ_defvec=crx_elf32_vec
@@ -560,20 +576,20 @@ case "${targ}" in
     targ_selvecs=hppa_elf32_vec
     ;;
 
-  i[3-7]86-*-elf* | i[3-7]86-*-rtems*)
+  i[3-7]86-*-elf* | i[3-7]86-*-rtems* | i[3-7]86-*-genode*)
     targ_defvec=i386_elf32_vec
     targ_selvecs="iamcu_elf32_vec i386_coff_vec"
     ;;
   i[3-7]86-*-solaris2*)
     targ_defvec=i386_elf32_sol2_vec
     targ_selvecs="iamcu_elf32_vec i386_coff_vec i386_pei_vec"
-    targ64_selvecs="x86_64_elf64_sol2_vec l1om_elf64_vec k1om_elf64_vec x86_64_pei_vec"
+    targ64_selvecs="x86_64_elf64_sol2_vec x86_64_pe_vec x86_64_pei_vec"
     want64=true
     ;;
 #ifdef BFD64
   x86_64-*-solaris2*)
     targ_defvec=i386_elf32_sol2_vec
-    targ_selvecs="x86_64_elf64_sol2_vec l1om_elf64_vec k1om_elf64_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec"
+    targ_selvecs="x86_64_elf64_sol2_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec"
     want64=true
     ;;
 #endif
@@ -588,7 +604,7 @@ case "${targ}" in
   i[3-7]86-*-dicos*)
     targ_defvec=i386_elf32_vec
     targ_selvecs=iamcu_elf32_vec
-    targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
+    targ64_selvecs="x86_64_elf64_vec"
     ;;
   *-*-msdosdjgpp* | *-*-go32* )
     targ_defvec=i386_coff_go32_vec
@@ -607,26 +623,22 @@ case "${targ}" in
   i[3-7]86-*-dragonfly*)
     targ_defvec=i386_elf32_vec
     targ_selvecs=iamcu_elf32_vec
-    targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
+    targ64_selvecs="x86_64_elf64_vec"
     ;;
   i[3-7]86-*-freebsd* | i[3-7]86-*-kfreebsd*-gnu)
     targ_defvec=i386_elf32_fbsd_vec
     targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_pei_vec i386_coff_vec"
-    targ64_selvecs="x86_64_elf64_fbsd_vec x86_64_elf64_vec x86_64_pei_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec"
+    targ64_selvecs="x86_64_elf64_fbsd_vec x86_64_elf64_vec x86_64_pe_vec x86_64_pei_vec"
     # FreeBSD <= 4.0 supports only the old nonstandard way of ABI labelling.
     case "${targ}" in
       i[3-7]86-*-freebsd3* | i[3-7]86-*-freebsd4 | i[3-7]86-*-freebsd4.0*)
 	targ_cflags=-DOLD_FREEBSD_ABI_LABEL ;;
     esac
     ;;
-  i[3-7]86-*-netbsdelf* | i[3-7]86-*-netbsd*-gnu* | i[3-7]86-*-knetbsd*-gnu)
+  i[3-7]86-*-netbsd* | i[3-7]86-*-knetbsd*-gnu)
     targ_defvec=i386_elf32_vec
     targ_selvecs="iamcu_elf32_vec"
-    targ64_selvecs="x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec"
-    ;;
-  i[3-7]86-*-netbsdpe*)
-    targ_defvec=i386_pe_vec
-    targ_selvecs="i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
+    targ64_selvecs="x86_64_elf64_vec"
     ;;
   i[3-7]86-*-openbsd*)
     targ_defvec=i386_elf32_vec
@@ -635,13 +647,7 @@ case "${targ}" in
   i[3-7]86-*-linux-*)
     targ_defvec=i386_elf32_vec
     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"
+    targ64_selvecs="x86_64_elf64_vec x86_64_elf32_vec x86_64_pe_vec x86_64_pei_vec"
     ;;
   i[3-7]86-*-redox*)
     targ_defvec=i386_elf32_vec
@@ -649,10 +655,6 @@ case "${targ}" in
     targ64_selvecs=x86_64_elf64_vec
     ;;
 #ifdef BFD64
-  x86_64-*-cloudabi*)
-    targ_defvec=x86_64_elf64_cloudabi_vec
-    want64=true
-    ;;
   x86_64-*-darwin*)
     targ_defvec=x86_64_mach_o_vec
     targ_selvecs="i386_mach_o_vec mach_o_le_vec mach_o_be_vec mach_o_fat_vec pef_vec pef_xlib_vec sym_vec"
@@ -661,47 +663,46 @@ case "${targ}" in
     ;;
   x86_64-*-dicos*)
     targ_defvec=x86_64_elf64_vec
-    targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec"
+    targ_selvecs="i386_elf32_vec iamcu_elf32_vec"
     want64=true
     ;;
-  x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia)
+  x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia | x86_64-*-genode*)
     targ_defvec=x86_64_elf64_vec
-    targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec l1om_elf64_vec k1om_elf64_vec"
+    targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec"
     case "${targ}" in
       x86_64-*-rtems*)
-    targ_selvecs="${targ_selvecs} x86_64_pei_vec"
+    targ_selvecs="${targ_selvecs} x86_64_pe_vec x86_64_pei_vec"
     esac
     want64=true
     ;;
   x86_64-*-dragonfly*)
     targ_defvec=x86_64_elf64_vec
-    targ_selvecs="i386_elf32_vec iamcu_elf32_vec l1om_elf64_vec k1om_elf64_vec"
+    targ_selvecs="i386_elf32_vec iamcu_elf32_vec"
     want64=true
     ;;
   x86_64-*-freebsd* | x86_64-*-kfreebsd*-gnu)
     targ_defvec=x86_64_elf64_fbsd_vec
-    targ_selvecs="i386_elf32_fbsd_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec l1om_elf64_vec l1om_elf64_fbsd_vec k1om_elf64_vec k1om_elf64_fbsd_vec"
+    targ_selvecs="i386_elf32_fbsd_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec i386_elf32_vec x86_64_elf64_vec"
     want64=true
     ;;
-  x86_64-*-netbsd* | x86_64-*-openbsd*)
+  x86_64-*-haiku*)
     targ_defvec=x86_64_elf64_vec
-    targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
+    targ_selvecs="i386_elf32_vec"
     want64=true
     ;;
-  x86_64-*-linux-*)
+  x86_64-*-netbsd* | x86_64-*-openbsd*)
     targ_defvec=x86_64_elf64_vec
-    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"
+    targ_selvecs="i386_elf32_vec iamcu_elf32_vec i386_coff_vec i386_pei_vec x86_64_pe_vec x86_64_pei_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"
+  x86_64-*-linux-*)
+    targ_defvec=x86_64_elf64_vec
+    targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec"
     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 i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec pdb_vec"
     want64=true
     targ_underscore=no
     ;;
@@ -714,6 +715,11 @@ case "${targ}" in
     targ_selvecs=i386_elf32_vec
     want64=true
     ;;
+  x86_64-*-gnu*)
+    targ_defvec=x86_64_elf64_vec
+    targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec"
+    want64=true
+    ;;
 #endif
   i[3-7]86-*-lynxos*)
     targ_defvec=i386_elf32_vec
@@ -735,10 +741,14 @@ case "${targ}" in
     targ_defvec=i386_pe_vec
     targ_selvecs="i386_pe_vec i386_pei_vec"
     ;;
-  i[3-7]86-*-beoself* | i[3-7]86-*-beos*)
+  i[3-7]86-*-beos*)
     targ_defvec=i386_elf32_vec
     targ_selvecs="iamcu_elf32_vec i386_pe_vec i386_pei_vec"
     ;;
+  i[3-7]86-*-haiku*)
+    targ_defvec=i386_elf32_vec
+    targ_selvecs="i386_pei_vec"
+    ;;
   i[3-7]86-*-interix*)
     targ_defvec=i386_pei_vec
     targ_selvecs="i386_pe_vec"
@@ -751,7 +761,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 pdb_vec"
     targ_underscore=yes
     ;;
   i[3-7]86-*-vxworks*)
@@ -773,6 +783,20 @@ case "${targ}" in
     targ_defvec=iq2000_elf32_vec
     ;;
 
+#ifdef BFD64
+  kvx-*-linux*)
+    targ_defvec=kvx_elf64_vec
+    targ_selvecs=kvx_elf32_vec
+    want64=true
+    ;;
+
+  kvx-*-*)
+    targ_defvec=kvx_elf64_vec
+    targ_selvecs=kvx_elf32_vec
+    want64=true
+    ;;
+#endif
+
   lm32-*-elf | lm32-*-rtems*)
     targ_defvec=lm32_elf32_vec
     targ_selvecs=lm32_elf32_fdpic_vec
@@ -783,7 +807,7 @@ case "${targ}" in
     targ_selvecs=lm32_elf32_vec
     ;;
 
-  m32c-*-elf | m32c-*-rtems*)
+  m32c-*-elf)
     targ_defvec=m32c_elf32_vec
     targ_underscore=yes
     ;;
@@ -804,6 +828,9 @@ case "${targ}" in
     targ_defvec=m32r_elf32_vec
     ;;
 
+  m68*-*-haiku*)
+    targ_defvec=m68k_elf32_vec
+    ;;
   m68hc11-*-* | m6811-*-*)
     targ_defvec=m68hc11_elf32_vec
     targ_selvecs="m68hc11_elf32_vec m68hc12_elf32_vec"
@@ -858,6 +885,10 @@ case "${targ}" in
     targ_defvec=mips_elf32_trad_be_vec
     targ_selvecs="mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
     ;;
+  mips*el-*-haiku*)
+    targ_defvec=mips_elf32_le_vec
+    targ_selvecs="mips_elf32_be_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_le_vec mips_ecoff_be_vec"
+    ;;
   mips*-*-irix6*)
     targ_defvec=mips_elf32_n_be_vec
     targ_selvecs="mips_elf32_n_le_vec mips_elf32_be_vec mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec"
@@ -910,10 +941,18 @@ case "${targ}" in
     targ_defvec=mips_elf32_be_vec
     targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec mips_ecoff_be_vec mips_ecoff_le_vec"
     ;;
+  mips64*el-*-linux*-gnuabi64)
+    targ_defvec=mips_elf64_trad_le_vec
+    targ_selvecs="mips_elf64_trad_be_vec mips_elf32_ntrad_le_vec mips_elf32_ntrad_be_vec mips_elf32_trad_le_vec mips_elf32_trad_be_vec"
+    ;;
   mips64*el-*-linux*)
     targ_defvec=mips_elf32_ntrad_le_vec
     targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_trad_le_vec mips_elf32_trad_be_vec mips_elf64_trad_le_vec mips_elf64_trad_be_vec"
     ;;
+  mips64*-*-linux*-gnuabi64)
+    targ_defvec=mips_elf64_trad_be_vec
+    targ_selvecs="mips_elf64_trad_le_vec mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec"
+    ;;
   mips64*-*-linux*)
     targ_defvec=mips_elf32_ntrad_be_vec
     targ_selvecs="mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
@@ -1009,26 +1048,11 @@ case "${targ}" in
     targ_defvec=ns32k_aout_pc532mach_vec
     targ_underscore=yes
     ;;
-  ns32k-*-netbsd* | ns32k-*-lites* | ns32k-*-openbsd*)
+  ns32k-*-lites* | ns32k-*-*bsd*)
     targ_defvec=ns32k_aout_pc532nbsd_vec
     targ_underscore=yes
     ;;
 
-  nios2eb-*-*)
-    targ_defvec=nios2_elf32_be_vec
-    targ_selvecs=nios2_elf32_le_vec
-    ;;
-
-  nios2el-*-*)
-    targ_defvec=nios2_elf32_le_vec
-    targ_selvecs=nios2_elf32_be_vec
-    ;;
-
-  nios2-*-*)
-    targ_defvec=nios2_elf32_le_vec
-    targ_selvecs=nios2_elf32_be_vec
-    ;;
-
   or1k-*-elf | or1k-*-linux* | or1k-*-rtems*)
     targ_defvec=or1k_elf32_vec
     ;;
@@ -1057,13 +1081,6 @@ case "${targ}" in
     targ_selvecs="rs6000_xcoff64_aix_vec"
     want64=true
     ;;
-#ifdef BFD64
-  powerpc64-*-aix5.[01])
-    targ_defvec=rs6000_xcoff64_aix_vec
-    targ_selvecs="rs6000_xcoff_vec"
-    want64=true
-    ;;
-#endif
   powerpc-*-aix[5-9]* | rs6000-*-aix[5-9]*)
     targ_cflags=-DAIX_WEAK_SUPPORT
     targ_defvec=rs6000_xcoff_vec
@@ -1071,6 +1088,11 @@ case "${targ}" in
     want64=true
     ;;
 #ifdef BFD64
+  powerpc64-*-aix5.[01])
+    targ_defvec=rs6000_xcoff64_aix_vec
+    targ_selvecs="rs6000_xcoff_vec"
+    want64=true
+    ;;
   powerpc64-*-aix[5-9]*)
     targ_cflags=-DAIX_WEAK_SUPPORT
     targ_defvec=rs6000_xcoff64_aix_vec
@@ -1100,6 +1122,11 @@ case "${targ}" in
     targ_selvecs="powerpc_elf64_vec powerpc_elf32_vec powerpc_elf32_fbsd_vec powerpc_elf32_le_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec"
     want64=true
     ;;
+  powerpc64le-*-freebsd*)
+    targ_defvec=powerpc_elf64_fbsd_le_vec
+    targ_selvecs="powerpc_elf64_vec powerpc_elf32_vec powerpc_elf32_fbsd_vec powerpc_elf32_le_vec rs6000_xcoff_vec rs6000_xcoff64_vec rs6000_xcoff64_aix_vec"
+    want64=true
+    ;;
   powerpc64-*-elf* | powerpc-*-elf64* | powerpc64-*-linux* | \
   powerpc64-*-*bsd*)
     targ_defvec=powerpc_elf64_vec
@@ -1125,6 +1152,11 @@ case "${targ}" in
     targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec powerpc_boot_vec"
     targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
     ;;
+  powerpc-*-haiku*)
+    targ_defvec=powerpc_elf32_vec
+    targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec pef_vec pef_xlib_vec powerpc_xcoff_vec powerpc_boot_vec"
+    targ_cflags=-D__HAIKU_TARGET__
+    ;;
   powerpc-*-kaos*)
     targ_defvec=powerpc_elf32_vec
     targ_selvecs="powerpc_elf32_le_vec powerpc_boot_vec"
@@ -1138,16 +1170,11 @@ case "${targ}" in
   powerpc-*-macos*)
     targ_defvec=powerpc_xcoff_vec
     ;;
-  powerpc-*-lynxos*)
-    targ_defvec=powerpc_elf32_vec
-    targ_selvecs="rs6000_xcoff_vec"
-    targ_cflags=-DSMALL_ARCHIVE
-    ;;
   powerpc-*-nto*)
     targ_defvec=powerpc_elf32_vec
     targ_selvecs="rs6000_xcoff_vec powerpc_elf32_le_vec powerpc_boot_vec"
     ;;
-  powerpc-*-vxworks* | powerpc-*-windiss*)
+  powerpc-*-vxworks*)
     targ_defvec=powerpc_elf32_vxworks_vec
     targ_selvecs="rs6000_xcoff_vec powerpc_elf32_vec powerpc_elf32_le_vec powerpc_boot_vec"
     targ64_selvecs="powerpc_elf64_vec powerpc_elf64_le_vec"
@@ -1162,24 +1189,30 @@ 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
     ;;
 
 #ifdef BFD64
+  riscvbe-*-* | riscv32be*-*-*)
+    targ_defvec=riscv_elf32_be_vec
+    targ_selvecs="riscv_elf32_vec riscv_elf64_vec riscv_elf32_be_vec riscv_elf64_be_vec riscv64_pei_vec"
+    want64=true
+    ;;
   riscv-*-* | riscv32*-*-*)
     targ_defvec=riscv_elf32_vec
-    targ_selvecs="riscv_elf32_vec riscv_elf64_vec"
+    targ_selvecs="riscv_elf32_vec riscv_elf64_vec riscv_elf32_be_vec riscv_elf64_be_vec riscv64_pei_vec"
+    want64=true
+    ;;
+  riscv64be*-*-*)
+    targ_defvec=riscv_elf64_be_vec
+    targ_selvecs="riscv_elf32_vec riscv_elf64_vec riscv_elf32_be_vec riscv_elf64_be_vec riscv64_pei_vec"
     want64=true
     ;;
   riscv64*-*-*)
     targ_defvec=riscv_elf64_vec
-    targ_selvecs="riscv_elf32_vec riscv_elf64_vec"
+    targ_selvecs="riscv_elf32_vec riscv_elf64_vec riscv_elf32_be_vec riscv_elf64_be_vec riscv64_pei_vec"
     want64=true
     ;;
 #endif
@@ -1237,11 +1270,11 @@ case "${targ}" in
     targ_selvecs="sh_elf32_le_vec sh_elf32_linux_be_vec sh_elf32_linux_vec sh_elf32_fdpic_le_vec sh_elf32_fdpic_be_vec"
     ;;
 
-  sh*l*-*-netbsdelf*)
+  sh*l*-*-netbsd*)
     targ_defvec=sh_elf32_nbsd_le_vec
     targ_selvecs="sh_elf32_nbsd_vec sh_coff_vec sh_coff_le_vec"
     ;;
-  sh*-*-netbsdelf*)
+  sh*-*-netbsd*)
     targ_defvec=sh_elf32_nbsd_vec
     targ_selvecs="sh_elf32_nbsd_le_vec sh_coff_vec sh_coff_le_vec"
     ;;
@@ -1288,14 +1321,21 @@ case "${targ}" in
     ;;
 
   sparc-*-solaris2.[0-6] | sparc-*-solaris2.[0-6].*)
+    # PR 27666: Do not include sparc_elf32_vec here.
     targ_defvec=sparc_elf32_sol2_vec
     ;;
 #ifdef BFD64
   sparc-*-solaris2* | sparcv9-*-solaris2* | sparc64-*-solaris2*)
+    # PR 27666: Do not include sparc_elf32_vec or sparc_elf64_vec here.
     targ_defvec=sparc_elf32_sol2_vec
     targ_selvecs="sparc_elf64_sol2_vec"
     want64=true
     ;;
+  sparc64-*-haiku*)
+    targ_defvec=sparc_elf64_vec
+    targ_selvecs="sparc_elf64_vec sparc_elf32_vec"
+    want64=true
+    ;;
   sparc64-*-freebsd* | sparc64-*-kfreebsd*-gnu)
     targ_defvec=sparc_elf64_fbsd_vec
     targ_selvecs="sparc_elf64_vec sparc_elf32_vec"
@@ -1333,11 +1373,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
@@ -1363,17 +1398,17 @@ case "${targ}" in
     targ_underscore=yes
     ;;
 
-  vax-*-netbsdelf*)
-    targ_defvec=vax_elf32_vec
-    targ_selvecs="vax_aout_nbsd_vec vax_aout_1knbsd_vec"
-    ;;
-
-  vax-*-netbsdaout* | vax-*-netbsd*)
+  vax-*-netbsdaout*)
     targ_defvec=vax_aout_nbsd_vec
     targ_selvecs="vax_elf32_vec vax_aout_1knbsd_vec"
     targ_underscore=yes
     ;;
 
+  vax-*-netbsd*)
+    targ_defvec=vax_elf32_vec
+    targ_selvecs="vax_aout_nbsd_vec vax_aout_1knbsd_vec"
+    ;;
+
   vax-*-openbsd*)
     targ_defvec=vax_aout_nbsd_vec
     targ_underscore=yes
@@ -1405,20 +1440,36 @@ 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
     ;;
 
+#ifdef BFD64
+  loongarch32-*)
+    targ_defvec=loongarch_elf32_vec
+    targ_selvecs="loongarch_elf32_vec"
+    want64=true
+    ;;
+
+  loongarch64-*)
+    targ_defvec=loongarch_elf64_vec
+    targ_selvecs="loongarch_elf32_vec loongarch_elf64_vec loongarch64_pei_vec"
+    want64=true
+    ;;
+#endif
+
 # END OF targmatch.h
   bpf-*-*)
     echo "*** Configuration $targ is not fully supported." >&2
@@ -1466,16 +1517,8 @@ case "${targ_defvec} ${targ_selvecs}" in
     ;;
 esac
 
-# If we support Intel L1OM target, then add support for bfd_l1om_arch.
-case "${targ_defvec} ${targ_selvecs}" in
-  *l1om_elf64*)
-    targ_archs="$targ_archs bfd_l1om_arch"
-    ;;
-esac
-
-# If we support Intel K1OM target, then add support for bfd_k1om_arch.
-case "${targ_defvec} ${targ_selvecs}" in
-  *k1om_elf64*)
-    targ_archs="$targ_archs bfd_k1om_arch"
+case "${targ}" in
+  mipsisa32r6* | mipsisa64r6* | mips*-img-*)
+    targ_cflags="$targ_cflags -DMIPS_DEFAULT_R6=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.20200303/bfd/config.in ./bfd/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/config.in	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/config.in	2026-03-05 02:07:20.000000000 +0000
@@ -7,6 +7,9 @@
 #endif
 #define __CONFIG_H__ 1
 
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
 /* Name of host specific core header file to include in elf.c. */
 #undef CORE_HEADER
 
@@ -14,12 +17,24 @@
    default. */
 #undef DEFAULT_LD_Z_SEPARATE_CODE
 
+/* Define if you want run-time sanity checks. */
+#undef ENABLE_CHECKING
+
 /* Define to 1 if translation of program messages to the user's native
    language is requested. */
 #undef ENABLE_NLS
 
-/* Define to 1 if you have the <alloca.h> header file. */
-#undef HAVE_ALLOCA_H
+/* Define to 1 if you have the Mac OS X function
+   CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES
+
+/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#undef HAVE_DCGETTEXT
 
 /* Define to 1 if you have the declaration of `asprintf', and to 0 if you
    don't. */
@@ -32,9 +47,9 @@
 /* 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 `free', and to 0 if you don't.
-   */
-#undef HAVE_DECL_FREE
+/* Define to 1 if you have the declaration of `fopen64', and to 0 if you
+   don't. */
+#undef HAVE_DECL_FOPEN64
 
 /* Define to 1 if you have the declaration of `fseeko', and to 0 if you don't.
    */
@@ -52,22 +67,6 @@
    don't. */
 #undef HAVE_DECL_FTELLO64
 
-/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
-   */
-#undef HAVE_DECL_GETENV
-
-/* Define to 1 if you have the declaration of `malloc', and to 0 if you don't.
-   */
-#undef HAVE_DECL_MALLOC
-
-/* Define to 1 if you have the declaration of `realloc', and to 0 if you
-   don't. */
-#undef HAVE_DECL_REALLOC
-
-/* 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 `stpcpy', and to 0 if you don't.
    */
 #undef HAVE_DECL_STPCPY
@@ -76,21 +75,13 @@
    don't. */
 #undef HAVE_DECL_STRNLEN
 
-/* 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 `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 <dirent.h> header file, and it defines `DIR'.
-   */
-#undef HAVE_DIRENT_H
+/* Define to 1 if you have the declaration of `___lc_codepage_func', and to 0
+   if you don't. */
+#undef HAVE_DECL____LC_CODEPAGE_FUNC
 
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
@@ -134,21 +125,21 @@
 /* Define to 1 if you have the `getrlimit' function. */
 #undef HAVE_GETRLIMIT
 
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
 /* Define to 1 if you have the `getuid' function. */
 #undef HAVE_GETUID
 
 /* Define if your compiler supports hidden visibility. */
 #undef HAVE_HIDDEN
 
+/* Define if you have the iconv() function and it works. */
+#undef HAVE_ICONV
+
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
-/* Define to 1 if the system has the type `long double'. */
-#undef HAVE_LONG_DOUBLE
-
-/* Define to 1 if the system has the type `long long'. */
-#undef HAVE_LONG_LONG
-
 /* Define if <sys/procfs.h> has lwpstatus_t. */
 #undef HAVE_LWPSTATUS_T
 
@@ -176,9 +167,6 @@
 /* Define to 1 if you have the `mprotect' function. */
 #undef HAVE_MPROTECT
 
-/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
-#undef HAVE_NDIR_H
-
 /* Define if <sys/procfs.h> has prpsinfo32_t. */
 #undef HAVE_PRPSINFO32_T
 
@@ -224,12 +212,6 @@
 /* Define if <sys/procfs.h> has pxstatus_t. */
 #undef HAVE_PXSTATUS_T
 
-/* Define to 1 if you have the `setitimer' function. */
-#undef HAVE_SETITIMER
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
 /* Define to 1 if you have the <stdint.h> header file. */
 #undef HAVE_STDINT_H
 
@@ -242,26 +224,15 @@
 /* Define to 1 if you have the <string.h> header file. */
 #undef HAVE_STRING_H
 
-/* Define to 1 if you have the `strtoull' function. */
-#undef HAVE_STRTOULL
-
 /* Define if struct core_dumpx has member c_impl */
 #undef HAVE_ST_C_IMPL
 
 /* Define to 1 if you have the `sysconf' function. */
 #undef HAVE_SYSCONF
 
-/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
-   */
-#undef HAVE_SYS_DIR_H
-
 /* 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/ndir.h> header file, and it defines `DIR'.
-   */
-#undef HAVE_SYS_NDIR_H
-
 /* Define to 1 if you have the <sys/param.h> header file. */
 #undef HAVE_SYS_PARAM_H
 
@@ -274,30 +245,21 @@
 /* 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/time.h> header file. */
-#undef HAVE_SYS_TIME_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 <time.h> header file. */
-#undef HAVE_TIME_H
-
 /* Define to 1 if you have the <unistd.h> header file. */
 #undef HAVE_UNISTD_H
 
-/* Define to 1 if you have the <wchar.h> header file. */
-#undef HAVE_WCHAR_H
-
-/* Define to 1 if you have the <wctype.h> header file. */
-#undef HAVE_WCTYPE_H
-
 /* Define if <sys/procfs.h> has win32_pstatus_t. */
 #undef HAVE_WIN32_PSTATUS_T
 
 /* Define to 1 if you have the <windows.h> header file. */
 #undef HAVE_WINDOWS_H
 
+/* Define to 1 if zstd is enabled. */
+#undef HAVE_ZSTD
+
 /* Define to the sub-directory in which libtool stores uninstalled libraries.
    */
 #undef LT_OBJDIR
@@ -323,9 +285,6 @@
 /* Define to the version of this package. */
 #undef PACKAGE_VERSION
 
-/* The size of `char', as computed by sizeof. */
-#undef SIZEOF_CHAR
-
 /* The size of `int', as computed by sizeof. */
 #undef SIZEOF_INT
 
@@ -338,20 +297,14 @@
 /* The size of `off_t', as computed by sizeof. */
 #undef SIZEOF_OFF_T
 
-/* The size of `short', as computed by sizeof. */
-#undef SIZEOF_SHORT
-
 /* The size of `void *', as computed by sizeof. */
 #undef SIZEOF_VOID_P
 
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
-/* Define if you can safely include both <string.h> and <strings.h>. */
-#undef STRING_WITH_STRINGS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
+/* If the compiler supports a TLS storage class, define it to that here */
+#undef TLS
 
 /* Name of host specific header file to include in trad-core.c. */
 #undef TRAD_HEADER
@@ -396,6 +349,18 @@
 /* Version number of package */
 #undef VERSION
 
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
 /* Enable large inode numbers on Mac OS X 10.5.  */
 #ifndef _DARWIN_USE_64_BIT_INODE
 # define _DARWIN_USE_64_BIT_INODE 1
@@ -416,3 +381,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.20200303/bfd/configure ./bfd/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/configure	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/configure	2026-03-05 02:07:20.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.45.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.45.50'
+PACKAGE_STRING='bfd 2.45.50'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -629,6 +629,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
+gt_needs=
 ac_header_list=
 ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
@@ -652,32 +653,36 @@ TDEFINES
 SHARED_LIBADD
 SHARED_LDFLAGS
 LIBM
+ZSTD_LIBS
+ZSTD_CFLAGS
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
 zlibinc
 zlibdir
 EXEEXT_FOR_BUILD
 CC_FOR_BUILD
-BFD_HOSTPTR_T
-BFD_HOST_U_64_BIT
-BFD_HOST_64_BIT
-BFD_HOST_64_BIT_DEFINED
-BFD_HOST_64BIT_LONG_LONG
-BFD_HOST_64BIT_LONG
 HDEFINES
-MSGMERGE
-MSGFMT
-MKINSTALLDIRS
 CATOBJEXT
 GENCAT
 INSTOBJEXT
 DATADIRNAME
 CATALOGS
-POSUB
-GMSGFMT
-XGETTEXT
 INCINTL
 LIBINTL_DEP
+POSUB
+LTLIBINTL
 LIBINTL
+INTLLIBS
+LTLIBICONV
+LIBICONV
+INTL_MACOSX_LIBS
+MSGMERGE
+XGETTEXT
+GMSGFMT
+MSGFMT
 USE_NLS
+MKINSTALLDIRS
 bfdincludedir
 bfdlibdir
 target_noncanonical
@@ -699,6 +704,7 @@ PKGVERSION
 DEBUGDIR
 PLUGINS_FALSE
 PLUGINS_TRUE
+LARGEFILE_CPPFLAGS
 OTOOL64
 OTOOL
 LIPO
@@ -716,12 +722,6 @@ LIBTOOL
 EGREP
 GREP
 CPP
-RANLIB
-AR
-AM_BACKSLASH
-AM_DEFAULT_VERBOSITY
-AM_DEFAULT_V
-AM_V
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
@@ -732,6 +732,19 @@ AMDEP_TRUE
 am__quote
 am__include
 DEPDIR
+OBJEXT
+EXEEXT
+ac_ct_CC
+CPPFLAGS
+LDFLAGS
+CFLAGS
+CC
+RANLIB
+AR
+AM_BACKSLASH
+AM_DEFAULT_VERBOSITY
+AM_DEFAULT_V
+AM_V
 am__untar
 am__tar
 AMTAR
@@ -755,13 +768,6 @@ am__isrc
 INSTALL_DATA
 INSTALL_SCRIPT
 INSTALL_PROGRAM
-OBJEXT
-EXEEXT
-ac_ct_CC
-CPPFLAGS
-LDFLAGS
-CFLAGS
-CC
 target_os
 target_vendor
 target_cpu
@@ -815,9 +821,9 @@ SHELL'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
-enable_dependency_tracking
 enable_silent_rules
 enable_shared
+enable_dependency_tracking
 enable_static
 with_pic
 enable_fast_install
@@ -825,6 +831,7 @@ with_gnu_ld
 enable_libtool_lock
 enable_plugins
 enable_largefile
+enable_checking
 enable_64_bit_bfd
 enable_targets
 enable_64_bit_archive
@@ -840,7 +847,13 @@ enable_build_warnings
 enable_maintainer_mode
 enable_install_libbfd
 enable_nls
+enable_rpath
+with_libiconv_prefix
+with_libiconv_type
+with_libintl_prefix
+with_libintl_type
 with_system_zlib
+with_zstd
 '
       ac_precious_vars='build_alias
 host_alias
@@ -850,7 +863,12 @@ CFLAGS
 LDFLAGS
 LIBS
 CPPFLAGS
-CPP'
+CPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
+ZSTD_CFLAGS
+ZSTD_LIBS'
 
 
 # Initialize some variables set by options.
@@ -1391,7 +1409,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.45.50 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1462,7 +1480,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.45.50:";;
    esac
   cat <<\_ACEOF
 
@@ -1470,19 +1488,20 @@ 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-silent-rules   less verbose build output (undo: "make V=1")
+  --disable-silent-rules  verbose build output (undo: "make V=0")
+  --enable-shared[=PKGS]  build shared libraries [default=no]
   --enable-dependency-tracking
                           do not reject slow dependency extractors
   --disable-dependency-tracking
                           speeds up one-time build
-  --enable-silent-rules   less verbose build output (undo: "make V=1")
-  --disable-silent-rules  verbose build output (undo: "make V=0")
-  --enable-shared[=PKGS]  build shared libraries [default=no]
   --enable-static[=PKGS]  build static libraries [default=yes]
   --enable-fast-install[=PKGS]
                           optimize for fast installation [default=yes]
   --disable-libtool-lock  avoid locking (might break parallel builds)
   --enable-plugins        Enable support for plugins
   --disable-largefile     omit support for large files
+  --enable-checking       enable run-time checks
   --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
   --enable-targets        alternative target configurations
   --enable-64-bit-archive force 64-bit archives
@@ -1497,6 +1516,7 @@ Optional Features:
                           sometimes confusing) to the casual installer
   --enable-install-libbfd controls installation of libbfd and related headers
   --disable-nls           do not use Native Language Support
+  --disable-rpath         do not hardcode runtime library paths
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1511,7 +1531,16 @@ Optional Packages:
   --with-pkgversion=PKG   Use PKG in the version string in place of "GNU
                           Binutils"
   --with-bugurl=URL       Direct users to URL to report a bug
+  --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-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
+  --without-libintl-prefix     don't search for libintl in includedir and libdir
+  --with-libintl-type=TYPE     type of library to search for (auto/static/shared)
   --with-system-zlib      use installed libz
+  --with-zstd             support zstd compressed debug sections
+                          (default=auto)
 
 Some influential environment variables:
   CC          C compiler command
@@ -1522,6 +1551,13 @@ Some influential environment variables:
   CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
               you have headers in a nonstandard directory <include dir>
   CPP         C preprocessor
+  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
+  ZSTD_CFLAGS C compiler flags for ZSTD, overriding pkg-config
+  ZSTD_LIBS   linker flags for ZSTD, overriding pkg-config
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -1589,7 +1625,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.45.50
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1641,52 +1677,6 @@ fi
 
 } # ac_fn_c_try_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_try_cpp LINENO
 # ----------------------
 # Try to preprocess conftest.$ac_ext, and return whether this succeeded.
@@ -1884,6 +1874,52 @@ eval ac_res=\$$3
 
 } # 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_func LINENO FUNC VAR
 # ----------------------------------
 # Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -1951,60 +1987,6 @@ eval ac_res=\$$3
 
 } # ac_fn_c_check_func
 
-# 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
@@ -2237,7 +2219,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.45.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2517,6 +2499,7 @@ else
   >$cache_file
 fi
 
+gt_needs="$gt_needs "
 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"
@@ -2732,914 +2715,6 @@ test -n "$target_alias" &&
   test "$program_prefix$program_suffix$program_transform_name" = \
     NONENONEs,x,x, &&
   program_prefix=${target_alias}-
-# Expand $ac_aux_dir to an absolute path.
-am_aux_dir=`cd "$ac_aux_dir" && pwd`
-
-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=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 whether $CC understands -c and -o together" >&5
-$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
-if ${am_cv_prog_cc_c_o+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-  # 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 { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5
-   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
-   ac_status=$?
-   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-   (exit $ac_status); } \
-         && 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
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
-$as_echo "$am_cv_prog_cc_c_o" >&6; }
-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_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 library containing strerror" >&5
-$as_echo_n "checking for library containing strerror... " >&6; }
-if ${ac_cv_search_strerror+:} 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 strerror ();
-int
-main ()
-{
-return strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' cposix; 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_strerror=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_strerror+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_strerror+:} false; then :
-
-else
-  ac_cv_search_strerror=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
-$as_echo "$ac_cv_search_strerror" >&6; }
-ac_res=$ac_cv_search_strerror
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
 
 am__api_version='1.15'
 
@@ -3813,6 +2888,9 @@ test "$program_suffix" != NONE &&
 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
   *\ * | *\	*)
@@ -4063,69 +3141,6 @@ else
 fi
 rmdir .tst 2>/dev/null
 
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-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.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-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
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
-  am_depcomp="$ac_aux_dir/depcomp"
-  AMDEPBACKSLASH='\'
-  am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
-  AMDEP_TRUE=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
-fi
-
-
 # Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
   enableval=$enable_silent_rules;
@@ -4187,7 +3202,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='bfd'
- VERSION='2.33.50'
+ VERSION='2.45.50'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4237,134 +3252,6 @@ am__tar='$${TAR-tar} chof - "$$tardir"'
 
 
 
-depcc="$CC"   am_compiler_list=
-
-{ $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 -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_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
-  am__universal=false
-  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_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  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; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
-else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
-fi
-
-
 
 # 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
@@ -4408,6 +3295,45 @@ END
   fi
 fi
 
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
 
 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.
@@ -4954,6 +3880,256 @@ eval ac_try_echo="\"\$as_me:${as_lineno-
   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 :
@@ -5223,6 +4399,198 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS con
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+  am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ $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 -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_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
+  am__universal=false
+  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_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  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; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
 
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
@@ -5683,8 +5051,6 @@ fi
 
 
 
-
-
 case `pwd` in
   *\ * | *\	*)
     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
@@ -6065,48 +5431,55 @@ if ${lt_cv_path_NM+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-	# Check to see if the nm accepts a BSD-compat flag.
-	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
-	#   nm: unknown option "B" ignored
-	# Tru64's nm complains that /dev/null is an invalid object file
-	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-	*/dev/null* | *'Invalid file or object type'*)
-	  lt_cv_path_NM="$tmp_nm -B"
-	  break
-	  ;;
-	*)
-	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	  */dev/null*)
-	    lt_cv_path_NM="$tmp_nm -p"
-	    break
-	    ;;
-	  *)
-	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	    continue # so that we can try to find one that supports BSD flags
-	    ;;
-	  esac
-	  ;;
-	esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
+   # Let the user override the nm to test.
+   lt_nm_to_check="$NM"
+ else
+   lt_nm_to_check="${ac_tool_prefix}nm"
+   if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+     lt_nm_to_check="$lt_nm_to_check nm"
+   fi
+ fi
+ for lt_tmp_nm in "$lt_nm_to_check"; do
+   lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+   for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+     IFS="$lt_save_ifs"
+     test -z "$ac_dir" && ac_dir=.
+     # Strip out any user-provided options from the nm to test twice,
+     # the first time to test to see if nm (rather than its options) has
+     # an explicit path, the second time to yield a file which can be
+     # nm'ed itself.
+     tmp_nm_path="`$ECHO "$lt_tmp_nm" | sed 's, -.*$,,'`"
+     case "$tmp_nm_path" in
+     */*|*\\*) tmp_nm="$lt_tmp_nm";;
+     *) tmp_nm="$ac_dir/$lt_tmp_nm";;
+     esac
+     tmp_nm_to_nm="`$ECHO "$tmp_nm" | sed 's, -.*$,,'`"
+     if test -f "$tmp_nm_to_nm" || test -f "$tmp_nm_to_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
+       *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+	 break
+	 ;;
+       *)
+	 case `"$tmp_nm" -p "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
+	 *$tmp_nm*)
+	   lt_cv_path_NM="$tmp_nm -p"
+	   break
+	   ;;
+	 *)
+	   lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	   continue # so that we can try to find one that supports BSD flags
+	   ;;
+	 esac
+	 ;;
+       esac
+     fi
+   done
+   IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
 $as_echo "$lt_cv_path_NM" >&6; }
@@ -6727,7 +6100,7 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -6803,6 +6176,11 @@ sysv4 | sysv4.3*)
 tpf*)
   lt_cv_deplibs_check_method=pass_all
   ;;
+vxworks*)
+  # Assume VxWorks cross toolchains are built on Linux, possibly
+  # as canadian for Windows hosts.
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 esac
 
 fi
@@ -6823,6 +6201,19 @@ test -z "$deplibs_check_method" && depli
 
 
 
+plugin_option=
+plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+for plugin in $plugin_names; do
+  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
+  if test x$plugin_so = x$plugin; then
+    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
+  fi
+  if test x$plugin_so != x$plugin; then
+    plugin_option="--plugin $plugin_so"
+    break
+  fi
+done
+
 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
@@ -6916,6 +6307,19 @@ else
 fi
 
 test -z "$AR" && AR=ar
+if test -n "$plugin_option"; then
+  if $AR --help 2>&1 | grep -q "\--plugin"; then
+    touch conftest.c
+    $AR $plugin_option rc conftest.a conftest.c
+    if test "$?" != 0; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+$as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+    else
+      AR="$AR $plugin_option"
+    fi
+    rm -f conftest.*
+  fi
+fi
 test -z "$AR_FLAGS" && AR_FLAGS=cru
 
 
@@ -7120,6 +6524,11 @@ else
 fi
 
 test -z "$RANLIB" && RANLIB=:
+if test -n "$plugin_option" && test "$RANLIB" != ":"; then
+  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
+    RANLIB="$RANLIB $plugin_option"
+  fi
+fi
 
 
 
@@ -7234,7 +6643,7 @@ osf*)
   symcode='[BCDEGQRST]'
   ;;
 solaris*)
-  symcode='[BDRT]'
+  symcode='[BCDRT]'
   ;;
 sco3.2v5*)
   symcode='[DT]'
@@ -8233,23 +7642,25 @@ _LT_EOF
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
 $as_echo "$lt_cv_ld_force_load" >&6; }
-    case $host_os in
-    rhapsody* | darwin1.[012])
+    # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not expect to
+    # build without first building modern cctools / linker.
+    case $host_cpu-$host_os in
+    *-rhapsody* | *-darwin1.[012])
       _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
-    darwin1.*)
+    *-darwin1.*)
       _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-    darwin*) # darwin 5.x on
-      # if running on 10.5 or later, the deployment target defaults
-      # to the OS version, if on x86, and 10.4, the deployment
-      # target defaults to 10.4. Don't you love it?
-      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
-	10.0,*86*-darwin8*|10.0,*-darwin[91]*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+    *-darwin*)
+      # darwin 5.x (macOS 10.1) onwards we only need to adjust when the
+      # deployment target is forced to an earlier version.
+      case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in
+	UNSET,*-darwin[89]*|UNSET,*-darwin[12][0123456789]*)
+	  ;;
 	10.[012][,.]*)
-	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
-	10.*)
-	  _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
-      esac
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+	  ;;
+	*)
+	  ;;
+     esac
     ;;
   esac
     if test "$lt_cv_apple_cc_single_mod" = "yes"; then
@@ -9508,7 +8919,7 @@ _LT_EOF
       archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
       tmp_diet=no
       if test "$host_os" = linux-dietlibc; then
 	case $cc_basename in
@@ -10017,7 +9428,7 @@ if test -z "$aix_libpath"; then aix_libp
       if test "$GCC" = yes && test "$with_gnu_ld" = no; then
 	case $host_cpu in
 	hppa*64*)
-	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
 	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
@@ -10029,7 +9440,7 @@ if test -z "$aix_libpath"; then aix_libp
       else
 	case $host_cpu in
 	hppa*64*)
-	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	ia64*)
 	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
@@ -10913,16 +10324,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
 haiku*)
   version_type=linux
   need_lib_prefix=no
@@ -10932,7 +10333,7 @@ haiku*)
   soname_spec='${libname}${release}${shared_ext}$major'
   shlibpath_var=LIBRARY_PATH
   shlibpath_overrides_runpath=yes
-  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/beos/system/lib'
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
   hardcode_into_libs=yes
   ;;
 
@@ -11039,7 +10440,12 @@ linux*oldld* | linux*aout* | linux*coff*
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+
+# uclinux* changes (here and below) have been submitted to the libtool
+# project, but have not yet been accepted: they are GCC-local changes
+# for the time being.  (See
+# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -11287,6 +10693,25 @@ uts4*)
   shlibpath_var=LD_LIBRARY_PATH
   ;;
 
+# Shared libraries for VwWorks, >= 7 only at this stage
+# and (fpic) still incompatible with "large" code models
+# in a few configurations. Only for RTP mode in any case,
+# and upon explicit request at configure time.
+vxworks7*)
+  dynamic_linker=no
+  case ${with_multisubdir}-${enable_shared} in
+    *large*)
+      ;;
+    *mrtp*-yes)
+      version_type=linux
+      need_lib_prefix=no
+      need_version=no
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+      soname_spec='${libname}${release}${shared_ext}$major'
+      dynamic_linker="$host_os module_loader"
+      ;;
+  esac
+  ;;
 *)
   dynamic_linker=no
   ;;
@@ -11728,7 +11153,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 11156 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11834,7 +11259,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 11262 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12186,15 +11611,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 +11866,18 @@ fi
 
 
 
+case "${target}" in
+    *-*-*aout*| i[3-7]86-*-msdos* | ns32k-*-* | pdp11-*-*)
+	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 ;;
+esac
+
  if test "$plugins" = "yes"; then
   PLUGINS_TRUE=
   PLUGINS_FALSE='#'
@@ -12409,14 +11887,39 @@ else
 fi
 
 
+ac_checking=
+. ${srcdir}/development.sh
+test "$development" = true && ac_checking=yes
+# Check whether --enable-checking was given.
+if test "${enable_checking+set}" = set; then :
+  enableval=$enable_checking; case "${enableval}" in
+  no|none)  ac_checking= ;;
+  *)	    ac_checking=yes ;;
+esac
+fi
+if test x$ac_checking != x ; then
+
+$as_echo "#define ENABLE_CHECKING 1" >>confdefs.h
+
+fi
+
 # Check whether --enable-64-bit-bfd was given.
 if test "${enable_64_bit_bfd+set}" = set; then :
-  enableval=$enable_64_bit_bfd; case "${enableval}" in
-  yes)  want64=true  ;;
-  no)   want64=false ;;
-  *)    as_fn_error $? "bad value ${enableval} for 64-bit-bfd option" "$LINENO" 5 ;;
+  enableval=$enable_64_bit_bfd; case $enableval in #(
+  yes|no) :
+     ;; #(
+  *) :
+    as_fn_error $? "bad value ${enableval} for 64-bit-bfd option" "$LINENO" 5 ;; #(
+  *) :
+     ;;
 esac
 else
+  enable_64_bit_bfd=no
+fi
+
+if test $enable_64_bit_bfd = yes ; then
+  want64=true
+else
   want64=false
 fi
 
@@ -12450,7 +11953,7 @@ if test "${with_mmap+set}" = set; then :
   *)    as_fn_error $? "bad value ${withval} for BFD with-mmap option" "$LINENO" 5 ;;
 esac
 else
-  want_mmap=false
+  want_mmap=true
 fi
 
 # Check whether --enable-secureplt was given.
@@ -12544,7 +12047,7 @@ if test "${with_bugurl+set}" = set; then
 	   ;;
      esac
 else
-  BUGURL="http://www.sourceware.org/bugzilla/"
+  BUGURL="https://sourceware.org/bugzilla/"
 
 fi
 
@@ -12596,10 +12099,19 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&
   $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then :
 
 else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__clang__
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "^__clang__$" >/dev/null 2>&1; then :
   GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144"
 fi
 rm -f conftest*
 
+fi
+rm -f conftest*
+
 
 # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings.
 WARN_WRITE_STRINGS=""
@@ -12641,10 +12153,19 @@ if (eval "$ac_cpp_for_build conftest.$ac
   $EGREP "(^[0-4]$|^__GNUC__$)" >/dev/null 2>&1; then :
 
 else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+__clang__
+_ACEOF
+if (eval "$ac_cpp_for_build conftest.$ac_ext") 2>&5 |
+  $EGREP "^__clang__$" >/dev/null 2>&1; then :
   GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144"
 fi
 rm -f conftest*
 
+fi
+rm -f conftest*
+
 
 # Check whether --enable-werror was given.
 if test "${enable_werror+set}" = set; then :
@@ -12814,83 +12335,238 @@ fi
 
 
 
-host64=false
-target64=false
-bfd_default_target_size=32
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if ${ac_cv_c_bigendian+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+	       not a universal capable compiler
+	     #endif
+	     typedef int dummy;
 
-# host stuff:
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
 
-ALL_LINGUAS="da es fi fr hr id ja ro ru rw sr sv tr uk vi zh_CN pt"
-# 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=
+	# Check for potential -arch flags.  It is not universal unless
+	# there are at least two -arch flags with different values.
+	ac_arch=
+	ac_prev=
+	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+	 if test -n "$ac_prev"; then
+	   case $ac_word in
+	     i?86 | x86_64 | ppc | ppc64)
+	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+		 ac_arch=$ac_word
+	       else
+		 ac_cv_c_bigendian=universal
+		 break
+	       fi
+	       ;;
+	   esac
+	   ac_prev=
+	 elif test "x$ac_word" = "x-arch"; then
+	   ac_prev=arch
+	 fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+	     #include <sys/param.h>
 
-if test -f  ../intl/config.intl; then
-  .  ../intl/config.intl
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+		#include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
 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; }
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    fi
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  ac_cv_c_bigendian=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
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+		short int ascii_ii[] =
+		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+		int use_ascii (int i) {
+		  return ascii_mm[i] + ascii_ii[i];
+		}
+		short int ebcdic_ii[] =
+		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+		short int ebcdic_mm[] =
+		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+		int use_ebcdic (int i) {
+		  return ebcdic_mm[i] + ebcdic_ii[i];
+		}
+		extern int foo;
 
-$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+	      ac_cv_c_bigendian=yes
+	    fi
+	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+	      if test "$ac_cv_c_bigendian" = unknown; then
+		ac_cv_c_bigendian=no
+	      else
+		# finding both strings is unlikely to happen, but who knows?
+		ac_cv_c_bigendian=unknown
+	      fi
+	    fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
 
+	     /* Are we little or big endian?  From Harbison&Steele.  */
+	     union
+	     {
+	       long int l;
+	       char c[sizeof (long int)];
+	     } u;
+	     u.l = 1;
+	     return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+fi
+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}: 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; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
 
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
 
-    DATADIRNAME=share
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;;
+ esac
 
-  INSTOBJEXT=.mo
 
-  GENCAT=gencat
+host64=false
+target64=false
+bfd_default_target_size=32
 
-  CATOBJEXT=.gmo
+# host stuff:
 
-fi
+ALL_LINGUAS="da es fi fr hr id ja ro ru rw sr sv tr uk vi zh_CN pt"
 
         MKINSTALLDIRS=
   if test -n "$ac_aux_dir"; then
@@ -13200,463 +12876,1717 @@ fi
 
 
 
-# Permit host specific settings.
-. ${srcdir}/configure.host
+      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
 
-BFD_HOST_64BIT_LONG=0
-BFD_HOST_64BIT_LONG_LONG=0
-BFD_HOST_64_BIT_DEFINED=0
-BFD_HOST_64_BIT=
-BFD_HOST_U_64_BIT=
-BFD_HOSTPTR_T="unsigned long"
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long double" >&5
-$as_echo_n "checking for long double... " >&6; }
-if ${ac_cv_type_long_double+:} false; then :
+                                                { $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
-  if test "$GCC" = yes; then
-       ac_cv_type_long_double=yes
-     else
-       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+
+    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
+
+
+
+
+
+
+
+
+    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-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then :
+  withval=$with_libiconv_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-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=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='iconv '
+  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" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$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 $LTLIBICONV; 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
+                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-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
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$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
+                                                      LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                else
+                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }$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 $LIBICONV; 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
+                      LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
+                    fi
+                    if test "$hardcode_minus_L" != no; then
+                                                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$found_a"
+              else
+                                                LIBICONV="${LIBICONV}${LIBICONV:+ }-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 $INCICONV; 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
+                                            INCICONV="${INCICONV}${INCICONV:+ }-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 $LIBICONV; 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
+                                                        LIBICONV="${LIBICONV}${LIBICONV:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBICONV; 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
+                                                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-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$,,'`
+                    ;;
+                  *)
+                                        LIBICONV="${LIBICONV}${LIBICONV:+ }$dep"
+                    LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            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
+    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"
+      LIBICONV="${LIBICONV}${LIBICONV:+ }$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"
+        LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-R$found_dir"
+    done
+  fi
+
+
+
+
+
+if test -f ../gettext/uninstalled-config.sh; then
+  relative_builddir='$(top_builddir)/../gettext'
+  .  ../gettext/uninstalled-config.sh
+else
+  # The sister gettext directory doesn't exist and won't collect information on
+  # using gettext for us.  Call a bundled AM_GNU_GETTEXT.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-/* The Stardent Vistra knows sizeof (long double), but does
-		 not support it.  */
-	      long double foo = 0.0L;
+#include <CoreFoundation/CFPreferences.h>
 int
 main ()
 {
-static int test_array [1 - 2 * !(/* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
-	      sizeof (double) <= sizeof (long double))];
-test_array [0] = 0;
-return test_array [0];
+CFPreferencesCopyAppValue(NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+  gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
 
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+  fi
+                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; }
+if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyPreferredLanguages();
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_type_long_double=yes
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFLocaleCopyPreferredLanguages=yes
 else
-  ac_cv_type_long_double=no
+  gt_cv_func_CFLocaleCopyPreferredLanguages=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-     fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_double" >&5
-$as_echo "$ac_cv_type_long_double" >&6; }
-  if test $ac_cv_type_long_double = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
+  if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
 
-$as_echo "#define HAVE_LONG_DOUBLE 1" >>confdefs.h
+$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
 
   fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+     || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+                    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices"
+  fi
 
-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 :
+
+
+
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+    case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+    if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if eval \${$gt_func_gnugettext_libc+:} 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 :
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
 
+int
+main ()
+{
+
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$gt_func_gnugettext_libc=yes"
 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
+  eval "$gt_func_gnugettext_libc=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_sizeof_long_long" >&5
-$as_echo "$ac_cv_sizeof_long_long" >&6; }
+eval ac_res=\$$gt_func_gnugettext_libc
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
 
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
 
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; 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 iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if ${am_cv_func_iconv+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+           iconv(cd,NULL,NULL,NULL,NULL);
+           iconv_close(cd);
+  ;
+  return 0;
+}
 _ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+#include <stdlib.h>
+#include <iconv.h>
 
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+             iconv(cd,NULL,NULL,NULL,NULL);
+             iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
 
-# 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 void *" >&5
-$as_echo_n "checking size of void *... " >&6; }
-if ${ac_cv_sizeof_void_p+:} false; then :
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p"        "$ac_includes_default"; then :
 
+                  am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      am_cv_func_iconv_works=no
+      for ac_iconv_const in '' 'const'; do
+        if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+             aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+             *)            am_cv_func_iconv_works="guessing yes" ;;
+           esac
 else
-  if test "$ac_cv_type_void_p" = 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 (void *)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_void_p=0
-   fi
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+
+int
+main ()
+{
+int result = 0;
+  /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from
+     successful returns.  This is even documented in
+     <https://www.ibm.com/support/knowledgecenter/ssw_aix_72/i_bostechref/iconv.html> */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 1;
+        iconv_close (cd_utf8_to_88591);
+      }
+  }
+  /* Test against Solaris 10 bug: Failures are not distinguishable from
+     successful returns.  */
+  {
+    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+    if (cd_ascii_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\263";
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_ascii_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 2;
+        iconv_close (cd_ascii_to_88591);
+      }
+  }
+  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304";
+        static char buf[2] = { (char)0xDE, (char)0xAD };
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = 1;
+        char *outptr = buf;
+        size_t outbytesleft = 1;
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+          result |= 4;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          result |= 8;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  {
+    /* Try standardized names.  */
+    iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+    /* Try IRIX, OSF/1 names.  */
+    iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+    /* Try AIX names.  */
+    iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+    /* Try HP-UX names.  */
+    iconv_t cd4 = iconv_open ("utf8", "eucJP");
+    if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+        && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+      result |= 16;
+    if (cd1 != (iconv_t)(-1))
+      iconv_close (cd1);
+    if (cd2 != (iconv_t)(-1))
+      iconv_close (cd2);
+    if (cd3 != (iconv_t)(-1))
+      iconv_close (cd3);
+    if (cd4 != (iconv_t)(-1))
+      iconv_close (cd4);
+  }
+  return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  am_cv_func_iconv_works=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
 fi
 
+        test "$am_cv_func_iconv_works" = no || break
+      done
+      LIBS="$am_save_LIBS"
+
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5
-$as_echo "$ac_cv_sizeof_void_p" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
 
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
 
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  fi
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_VOID_P $ac_cv_sizeof_void_p
-_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" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
 
-else
-  if test "$ac_cv_type_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)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_long=0
-   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-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; then :
+  withval=$with_libintl_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
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
 
 
+# Check whether --with-libintl-type was given.
+if test "${with_libintl_type+set}" = set; then :
+  withval=$with_libintl_type;  with_libintl_type=$withval
+else
+   with_libintl_type=auto
+fi
+
+  lib_type=`eval echo \$with_libintl_type`
+
+      LIBINTL=
+  LTLIBINTL=
+  INCINTL=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='intl '
+  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" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$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 $LTLIBINTL; 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
+                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-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
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$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
+                                                      LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                else
+                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                                                            LIBINTL="${LIBINTL}${LIBINTL:+ }$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 $LIBINTL; 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
+                      LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
+                    fi
+                    if test "$hardcode_minus_L" != no; then
+                                                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
+              else
+                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-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 $INCINTL; 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
+                                            INCINTL="${INCINTL}${INCINTL:+ }-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 $LIBINTL; 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
+                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBINTL; 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
+                                                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-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$,,'`
+                    ;;
+                  *)
+                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
+                    LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+              LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
+            else
+              LIBINTL="${LIBINTL}${LIBINTL:+ }-l:lib$name.$libext"
+              LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-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"
+      LIBINTL="${LIBINTL}${LIBINTL:+ }$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"
+        LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
+    done
+  fi
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if eval \${$gt_func_gnugettext_libintl+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
 
+int
+main ()
+{
 
-# 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 int" >&5
-$as_echo_n "checking size of int... " >&6; }
-if ${ac_cv_sizeof_int+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int"        "$ac_includes_default"; then :
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$gt_func_gnugettext_libintl=yes"
 else
-  if test "$ac_cv_type_int" = 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 (int)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_int=0
-   fi
+  eval "$gt_func_gnugettext_libintl=no"
 fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+                        if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5
-$as_echo "$ac_cv_sizeof_int" >&6; }
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
 
+int
+main ()
+{
 
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_INT $ac_cv_sizeof_int
+  ;
+  return 0;
+}
 _ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  LIBINTL="$LIBINTL $LIBICONV"
+                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                 eval "$gt_func_gnugettext_libintl=yes"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"
+fi
+eval ac_res=\$$gt_func_gnugettext_libintl
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        fi
 
+                                        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+                    LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
 
 
-if test "x${ac_cv_sizeof_void_p}" = "x8"; then
-  host64=true
-fi
 
-if test "x${ac_cv_sizeof_long}" = "x8"; then
-  BFD_HOST_64BIT_LONG=1
-  test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
-  test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
-elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
-  BFD_HOST_64BIT_LONG_LONG=1
-  test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
-  test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
-  if test "x${ac_cv_sizeof_void_p}" = "x8"; then
-    BFD_HOSTPTR_T="unsigned long long"
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+                LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+    else
+      USE_NLS=no
+    fi
   fi
-fi
 
-if test -n "${HOST_64BIT_TYPE}" -a -n "${HOST_U_64BIT_TYPE}"; then
-  BFD_HOST_64_BIT_DEFINED=1
-  BFD_HOST_64_BIT="${HOST_64BIT_TYPE}"
-  BFD_HOST_U_64_BIT="${HOST_U_64BIT_TYPE}"
-fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
+$as_echo_n "checking whether to use NLS... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+  if test "$USE_NLS" = "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
+$as_echo_n "checking where the gettext function comes from... " >&6; }
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
+$as_echo "$gt_source" >&6; }
+  fi
 
+  if test "$USE_NLS" = "yes"; then
 
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
+$as_echo "$LIBINTL" >&6; }
+
+  for element in $INCINTL; 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
 
+      fi
 
 
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
 
 
-# Put a plausible default for CC_FOR_BUILD in Makefile.
-if test -z "$CC_FOR_BUILD"; then
-  if test "x$cross_compiling" = "xno"; then
-    CC_FOR_BUILD='$(CC)'
-  else
-    CC_FOR_BUILD=gcc
+$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
+
+    fi
+
+        POSUB=po
   fi
-fi
 
-# Also set EXEEXT_FOR_BUILD.
-if test "x$cross_compiling" = "xno"; then
-  EXEEXT_FOR_BUILD='$(EXEEXT)'
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for build system executable suffix" >&5
-$as_echo_n "checking for build system executable suffix... " >&6; }
-if ${bfd_cv_build_exeext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  rm -f conftest*
-     echo 'int main () { return 0; }' > conftest.c
-     bfd_cv_build_exeext=
-     ${CC_FOR_BUILD} -o conftest conftest.c 1>&5 2>&5
-     for file in conftest.*; do
-       case $file in
-       *.c | *.o | *.obj | *.ilk | *.pdb) ;;
-       *) bfd_cv_build_exeext=`echo $file | sed -e s/conftest//` ;;
-       esac
-     done
-     rm -f conftest*
-     test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_build_exeext" >&5
-$as_echo "$bfd_cv_build_exeext" >&6; }
-  EXEEXT_FOR_BUILD=""
-  test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
-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
+    INTLLIBS="$LIBINTL"
+
+
 
-fi
 
-done
 
-for ac_header in fcntl.h sys/file.h sys/time.h sys/stat.h sys/resource.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
 
 
 
-inttype_headers=`echo inttypes.h sys/inttypes.h  | sed -e 's/,/ /g'`
 
-acx_cv_header_stdint=stddef.h
-acx_cv_header_stdint_kind="(already complete)"
-for i in stdint.h $inttype_headers; do
-  unset ac_cv_type_uintptr_t
-  unset ac_cv_type_uintmax_t
-  unset ac_cv_type_int_least32_t
-  unset ac_cv_type_int_fast32_t
-  unset ac_cv_type_uint64_t
-  $as_echo_n "looking for a compliant stdint.h in $i, " >&6
-  ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_uintmax_t" = xyes; then :
-  acx_cv_header_stdint=$i
-else
-  continue
-fi
 
-  ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_uintptr_t" = xyes; then :
 
-else
-  acx_cv_header_stdint_kind="(mostly complete)"
-fi
 
-  ac_fn_c_check_type "$LINENO" "int_least32_t" "ac_cv_type_int_least32_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_int_least32_t" = xyes; then :
 
-else
-  acx_cv_header_stdint_kind="(mostly complete)"
-fi
 
-  ac_fn_c_check_type "$LINENO" "int_fast32_t" "ac_cv_type_int_fast32_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_int_fast32_t" = xyes; then :
 
+{ $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
-  acx_cv_header_stdint_kind="(mostly complete)"
-fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
-  ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
 
-else
-  acx_cv_header_stdint_kind="(lacks uint64_t)"
-fi
 
-  break
-done
-if test "$acx_cv_header_stdint" = stddef.h; then
-  acx_cv_header_stdint_kind="(lacks uintmax_t)"
-  for i in stdint.h $inttype_headers; do
-    unset ac_cv_type_uintptr_t
-    unset ac_cv_type_uint32_t
-    unset ac_cv_type_uint64_t
-    $as_echo_n "looking for an incomplete stdint.h in $i, " >&6
-    ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_uint32_t" = xyes; then :
-  acx_cv_header_stdint=$i
-else
-  continue
-fi
+  { $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; }
 
-    ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
 
-fi
+    DATADIRNAME=share
 
-    ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_uintptr_t" = xyes; then :
+  INSTOBJEXT=.mo
 
-fi
+  GENCAT=gencat
+
+  CATOBJEXT=.gmo
 
-    break
-  done
-fi
-if test "$acx_cv_header_stdint" = stddef.h; then
-  acx_cv_header_stdint_kind="(u_intXX_t style)"
-  for i in sys/types.h $inttype_headers; do
-    unset ac_cv_type_u_int32_t
-    unset ac_cv_type_u_int64_t
-    $as_echo_n "looking for u_intXX_t types in $i, " >&6
-    ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_u_int32_t" = xyes; then :
-  acx_cv_header_stdint=$i
-else
-  continue
 fi
 
-    ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include <sys/types.h>
-#include <$i>
-"
-if test "x$ac_cv_type_u_int64_t" = xyes; then :
+# Permit host specific settings.
+. ${srcdir}/configure.host
 
-fi
 
-    break
-  done
+
+
+# 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
-if test "$acx_cv_header_stdint" = stddef.h; then
-  acx_cv_header_stdint_kind="(using manual detection)"
+
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+$as_echo "$ac_cv_sizeof_long_long" >&6; }
 
-test -z "$ac_cv_type_uintptr_t" && ac_cv_type_uintptr_t=no
-test -z "$ac_cv_type_uint64_t" && ac_cv_type_uint64_t=no
-test -z "$ac_cv_type_u_int64_t" && ac_cv_type_u_int64_t=no
-test -z "$ac_cv_type_int_least32_t" && ac_cv_type_int_least32_t=no
-test -z "$ac_cv_type_int_fast32_t" && ac_cv_type_int_fast32_t=no
-
-# ----------------- Summarize what we found so far
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking what to include in bfd_stdint.h" >&5
-$as_echo_n "checking what to include in bfd_stdint.h... " >&6; }
-
-case `$as_basename -- bfd_stdint.h ||
-$as_expr X/bfd_stdint.h : '.*/\([^/][^/]*\)/*$' \| \
-	 Xbfd_stdint.h : 'X\(//\)$' \| \
-	 Xbfd_stdint.h : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/bfd_stdint.h |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\/\)$/{
-	    s//\1/
-	    q
-	  }
-	  /^X\/\(\/\).*/{
-	    s//\1/
-	    q
-	  }
-	  s/.*/./; q'` in
-  stdint.h) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: are you sure you want it there?" >&5
-$as_echo "$as_me: WARNING: are you sure you want it there?" >&2;} ;;
-  inttypes.h) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: are you sure you want it there?" >&5
-$as_echo "$as_me: WARNING: are you sure you want it there?" >&2;} ;;
-  *) ;;
-esac
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_header_stdint $acx_cv_header_stdint_kind" >&5
-$as_echo "$acx_cv_header_stdint $acx_cv_header_stdint_kind" >&6; }
 
-# ----------------- done included file, check C basic types --------
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+_ACEOF
 
-# Lacking an uintptr_t?  Test size of void *
-case "$acx_cv_header_stdint:$ac_cv_type_uintptr_t" in
-  stddef.h:* | *:no) # The cast to long int works around a bug in the HP C Compiler
+
+# 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.
@@ -13688,12 +14618,8 @@ cat >>confdefs.h <<_ACEOF
 #define SIZEOF_VOID_P $ac_cv_sizeof_void_p
 _ACEOF
 
- ;;
-esac
 
-# Lacking an uint64_t?  Test size of long
-case "$acx_cv_header_stdint:$ac_cv_type_uint64_t:$ac_cv_type_u_int64_t" in
-  stddef.h:*:* | *:no:no) # The cast to long int works around a bug in the HP C Compiler
+# 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.
@@ -13725,12 +14651,8 @@ cat >>confdefs.h <<_ACEOF
 #define SIZEOF_LONG $ac_cv_sizeof_long
 _ACEOF
 
- ;;
-esac
 
-if test $acx_cv_header_stdint = stddef.h; then
-  # Lacking a good header?  Test size of everything and deduce all types.
-  # The cast to long int works around a bug in the HP C Compiler
+# 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.
@@ -13763,374 +14685,66 @@ cat >>confdefs.h <<_ACEOF
 _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 short" >&5
-$as_echo_n "checking size of short... " >&6; }
-if ${ac_cv_sizeof_short+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_short" = 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 (short)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_short=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5
-$as_echo "$ac_cv_sizeof_short" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_SHORT $ac_cv_sizeof_short
-_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 char" >&5
-$as_echo_n "checking size of char... " >&6; }
-if ${ac_cv_sizeof_char+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_char" = 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 (char)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_char=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5
-$as_echo "$ac_cv_sizeof_char" >&6; }
-
-
-
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_CHAR $ac_cv_sizeof_char
-_ACEOF
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int8_t" >&5
-$as_echo_n "checking for type equivalent to int8_t... " >&6; }
-  case "$ac_cv_sizeof_char" in
-    1) acx_cv_type_int8_t=char ;;
-    *) as_fn_error $? "no 8-bit type, please report a bug" "$LINENO" 5
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int8_t" >&5
-$as_echo "$acx_cv_type_int8_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int16_t" >&5
-$as_echo_n "checking for type equivalent to int16_t... " >&6; }
-  case "$ac_cv_sizeof_int:$ac_cv_sizeof_short" in
-    2:*) acx_cv_type_int16_t=int ;;
-    *:2) acx_cv_type_int16_t=short ;;
-    *) as_fn_error $? "no 16-bit type, please report a bug" "$LINENO" 5
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int16_t" >&5
-$as_echo "$acx_cv_type_int16_t" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int32_t" >&5
-$as_echo_n "checking for type equivalent to int32_t... " >&6; }
-  case "$ac_cv_sizeof_int:$ac_cv_sizeof_long" in
-    4:*) acx_cv_type_int32_t=int ;;
-    *:4) acx_cv_type_int32_t=long ;;
-    *) as_fn_error $? "no 32-bit type, please report a bug" "$LINENO" 5
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_int32_t" >&5
-$as_echo "$acx_cv_type_int32_t" >&6; }
-fi
-
-# These tests are here to make the output prettier
-
-if test "$ac_cv_type_uint64_t" != yes && test "$ac_cv_type_u_int64_t" != yes; then
-  case "$ac_cv_sizeof_long" in
-    8) acx_cv_type_int64_t=long ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to int64_t" >&5
-$as_echo_n "checking for type equivalent to int64_t... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${acx_cv_type_int64_t-'using preprocessor symbols'}" >&5
-$as_echo "${acx_cv_type_int64_t-'using preprocessor symbols'}" >&6; }
-fi
-
-# Now we can use the above types
-
-if test "$ac_cv_type_uintptr_t" != yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for type equivalent to intptr_t" >&5
-$as_echo_n "checking for type equivalent to intptr_t... " >&6; }
-  case $ac_cv_sizeof_void_p in
-    2) acx_cv_type_intptr_t=int16_t ;;
-    4) acx_cv_type_intptr_t=int32_t ;;
-    8) acx_cv_type_intptr_t=int64_t ;;
-    *) as_fn_error $? "no equivalent for intptr_t, please report a bug" "$LINENO" 5
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_type_intptr_t" >&5
-$as_echo "$acx_cv_type_intptr_t" >&6; }
-fi
-
-# ----------------- done all checks, emit header -------------
-ac_config_commands="$ac_config_commands bfd_stdint.h"
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
-$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if ${ac_cv_header_time+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/time.h>
-#include <time.h>
-
-int
-main ()
-{
-if ((struct tm *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_time=yes
-else
-  ac_cv_header_time=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5
-$as_echo "$ac_cv_header_time" >&6; }
-if test $ac_cv_header_time = yes; then
-
-$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
-
-fi
-
-ac_header_dirent=no
-for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
-  as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <$ac_hdr>
-
-int
-main ()
-{
-if ((DIR *) 0)
-return 0;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  eval "$as_ac_Header=yes"
-else
-  eval "$as_ac_Header=no"
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-eval ac_res=\$$as_ac_Header
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
-_ACEOF
-
-ac_header_dirent=$ac_hdr; break
-fi
-
-done
-# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
-if test $ac_header_dirent = dirent.h; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} 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 opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' dir; 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_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_opendir+:} false; then :
-
-else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
+if test "x${ac_cv_sizeof_void_p}" = "x8"; then
+  host64=true
 fi
 
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} 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 opendir ();
-int
-main ()
-{
-return opendir ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' x; do
-  if test -z "$ac_lib"; then
-    ac_res="none required"
+# Put a plausible default for CC_FOR_BUILD in Makefile.
+if test -z "$CC_FOR_BUILD"; then
+  if test "x$cross_compiling" = "xno"; then
+    CC_FOR_BUILD='$(CC)'
   else
-    ac_res=-l$ac_lib
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+    CC_FOR_BUILD=gcc
   fi
-  if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_search_opendir=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_opendir+:} false; then :
-  break
 fi
-done
-if ${ac_cv_search_opendir+:} false; then :
 
+# Also set EXEEXT_FOR_BUILD.
+if test "x$cross_compiling" = "xno"; then
+  EXEEXT_FOR_BUILD='$(EXEEXT)'
 else
-  ac_cv_search_opendir=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
-ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
-
-fi
-
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether string.h and strings.h may both be included" >&5
-$as_echo_n "checking whether string.h and strings.h may both be included... " >&6; }
-if ${gcc_cv_header_string+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for build system executable suffix" >&5
+$as_echo_n "checking for build system executable suffix... " >&6; }
+if ${bfd_cv_build_exeext+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-#include <strings.h>
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gcc_cv_header_string=yes
-else
-  gcc_cv_header_string=no
+  rm -f conftest*
+     echo 'int main () { return 0; }' > conftest.c
+     bfd_cv_build_exeext=
+     ${CC_FOR_BUILD} -o conftest conftest.c 1>&5 2>&5
+     for file in conftest.*; do
+       case $file in
+       *.c | *.o | *.obj | *.ilk | *.pdb) ;;
+       *) bfd_cv_build_exeext=`echo $file | sed -e s/conftest//` ;;
+       esac
+     done
+     rm -f conftest*
+     test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_cv_build_exeext" >&5
+$as_echo "$bfd_cv_build_exeext" >&6; }
+  EXEEXT_FOR_BUILD=""
+  test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext}
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_header_string" >&5
-$as_echo "$gcc_cv_header_string" >&6; }
-if test $gcc_cv_header_string = yes; then
-
-$as_echo "#define STRING_WITH_STRINGS 1" >>confdefs.h
 
-fi
 
-for ac_func in fcntl getpagesize setitimer sysconf fdopen getuid getgid fileno fls
+for ac_header in fcntl.h sys/file.h sys/resource.h sys/stat.h sys/types.h \
+		 unistd.h
 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 :
+  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_func" | $as_tr_cpp` 1
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
 _ACEOF
 
 fi
+
 done
 
-for ac_func in strtoull getrlimit
+
+for ac_func in fcntl fdopen fileno fls getgid getpagesize getrlimit getuid \
+	       sysconf
 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"
@@ -14153,49 +14767,67 @@ fi
 cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_BASENAME $ac_have_decl
 _ACEOF
-
-ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default"
-if test "x$ac_cv_have_decl_ftello" = xyes; then :
+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_FTELLO $ac_have_decl
+#define HAVE_DECL_FFS $ac_have_decl
 _ACEOF
+ac_fn_c_check_decl "$LINENO" "stpcpy" "ac_cv_have_decl_stpcpy" "$ac_includes_default"
+if test "x$ac_cv_have_decl_stpcpy" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
-ac_fn_c_check_decl "$LINENO" "ftello64" "ac_cv_have_decl_ftello64" "$ac_includes_default"
-if test "x$ac_cv_have_decl_ftello64" = xyes; then :
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STPCPY $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_FTELLO64 $ac_have_decl
+#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
 
-ac_fn_c_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "$ac_includes_default"
-if test "x$ac_cv_have_decl_fseeko" = xyes; then :
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_VASPRINTF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default"
+if test "x$ac_cv_have_decl_strnlen" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FSEEKO $ac_have_decl
+#define HAVE_DECL_STRNLEN $ac_have_decl
 _ACEOF
 
-ac_fn_c_check_decl "$LINENO" "fseeko64" "ac_cv_have_decl_fseeko64" "$ac_includes_default"
-if test "x$ac_cv_have_decl_fseeko64" = xyes; then :
+ac_fn_c_check_decl "$LINENO" "___lc_codepage_func" "ac_cv_have_decl____lc_codepage_func" "#include <locale.h>
+"
+if test "x$ac_cv_have_decl____lc_codepage_func" = xyes; then :
   ac_have_decl=1
 else
   ac_have_decl=0
 fi
 
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FSEEKO64 $ac_have_decl
+#define HAVE_DECL____LC_CODEPAGE_FUNC $ac_have_decl
 _ACEOF
 
 
@@ -14207,157 +14839,316 @@ case "${host}" in
  ;;
 esac
 
-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
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for thread local storage (TLS) class" >&5
+$as_echo_n "checking for thread local storage (TLS) class... " >&6; }
+  if ${ac_cv_tls+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_have_decl=0
-fi
+  for ax_tls_keyword in thread_local _Thread_local __thread '__declspec(thread)' none; do
+       case $ax_tls_keyword in #(
+  none) :
+    ac_cv_tls=none ; break ;; #(
+  *) :
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+int
+main ()
+{
+static  $ax_tls_keyword  int bar;
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FFS $ac_have_decl
+  ;
+  return 0;
+}
 _ACEOF
-
-ac_fn_c_check_decl "$LINENO" "free" "ac_cv_have_decl_free" "$ac_includes_default"
-if test "x$ac_cv_have_decl_free" = xyes; then :
-  ac_have_decl=1
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_tls=$ax_tls_keyword ; break
 else
-  ac_have_decl=0
-fi
+  ac_cv_tls=none
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_FREE $ac_have_decl
-_ACEOF
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+         ;;
+esac
+    done
 
-ac_fn_c_check_decl "$LINENO" "getenv" "ac_cv_have_decl_getenv" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getenv" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
 fi
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_tls" >&5
+$as_echo "$ac_cv_tls" >&6; }
+
+  if test "$ac_cv_tls" != "none"; then :
+
 cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETENV $ac_have_decl
+#define TLS $ac_cv_tls
 _ACEOF
 
-ac_fn_c_check_decl "$LINENO" "malloc" "ac_cv_have_decl_malloc" "$ac_includes_default"
-if test "x$ac_cv_have_decl_malloc" = xyes; then :
-  ac_have_decl=1
+     :
 else
-  ac_have_decl=0
+  :
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_MALLOC $ac_have_decl
-_ACEOF
 
-ac_fn_c_check_decl "$LINENO" "realloc" "ac_cv_have_decl_realloc" "$ac_includes_default"
-if test "x$ac_cv_have_decl_realloc" = xyes; then :
-  ac_have_decl=1
-else
-  ac_have_decl=0
+# Link in zlib/zstd if we can.  This allows us to read compressed debug sections.
+# This is used only by compress.c.
+
+  # Use the system's zlib library.
+  zlibdir="-L\$(top_builddir)/../zlib"
+  zlibinc="-I\$(top_srcdir)/../zlib"
+
+# Check whether --with-system-zlib was given.
+if test "${with_system_zlib+set}" = set; then :
+  withval=$with_system_zlib; if test x$with_system_zlib = xyes ; then
+    zlibdir=
+    zlibinc=
+  fi
+
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_REALLOC $ac_have_decl
-_ACEOF
 
-ac_fn_c_check_decl "$LINENO" "stpcpy" "ac_cv_have_decl_stpcpy" "$ac_includes_default"
-if test "x$ac_cv_have_decl_stpcpy" = xyes; then :
-  ac_have_decl=1
+
+
+
+
+
+
+
+
+
+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
-  ac_have_decl=0
+  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
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STPCPY $ac_have_decl
-_ACEOF
 
-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
+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
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRSTR $ac_have_decl
-_ACEOF
+  ;;
+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
 
-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
+  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
-  ac_have_decl=0
+  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ASPRINTF $ac_have_decl
-_ACEOF
+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
 
-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
+
+# Check whether --with-zstd was given.
+if test "${with_zstd+set}" = set; then :
+  withval=$with_zstd;
 else
-  ac_have_decl=0
+  with_zstd=auto
 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
+if test "$with_zstd" != no; then :
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libzstd >= 1.4.0" >&5
+$as_echo_n "checking for libzstd >= 1.4.0... " >&6; }
+
+if test -n "$ZSTD_CFLAGS"; then
+    pkg_cv_ZSTD_CFLAGS="$ZSTD_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_ZSTD_CFLAGS=`$PKG_CONFIG --cflags "libzstd >= 1.4.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
 else
-  ac_have_decl=0
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$ZSTD_LIBS"; then
+    pkg_cv_ZSTD_LIBS="$ZSTD_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_ZSTD_LIBS=`$PKG_CONFIG --libs "libzstd >= 1.4.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SNPRINTF $ac_have_decl
+if test $pkg_failed = no; then
+  pkg_save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS $pkg_cv_ZSTD_LIBS"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
 _ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
 
-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
+  pkg_failed=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  LDFLAGS=$pkg_save_LDFLAGS
 fi
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_VSNPRINTF $ac_have_decl
-_ACEOF
 
-ac_fn_c_check_decl "$LINENO" "strnlen" "ac_cv_have_decl_strnlen" "$ac_includes_default"
-if test "x$ac_cv_have_decl_strnlen" = xyes; then :
-  ac_have_decl=1
+
+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
-  ac_have_decl=0
+        _pkg_short_errors_supported=no
 fi
+        if test $_pkg_short_errors_supported = yes; then
+	        ZSTD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libzstd >= 1.4.0" 2>&1`
+        else
+	        ZSTD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libzstd >= 1.4.0" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$ZSTD_PKG_ERRORS" >&5
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_STRNLEN $ac_have_decl
-_ACEOF
 
+    if test "$with_zstd" = yes; then
+      as_fn_error $? "--with-zstd was given, but pkgconfig/libzstd.pc is not found" "$LINENO" 5
+    fi
 
-# Link in zlib if we can.  This allows us to read compressed debug sections.
-# This is used only by compress.c.
+elif test $pkg_failed = untried; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 
-  # Use the system's zlib library.
-  zlibdir="-L\$(top_builddir)/../zlib"
-  zlibinc="-I\$(top_srcdir)/../zlib"
+    if test "$with_zstd" = yes; then
+      as_fn_error $? "--with-zstd was given, but pkgconfig/libzstd.pc is not found" "$LINENO" 5
+    fi
 
-# Check whether --with-system-zlib was given.
-if test "${with_system_zlib+set}" = set; then :
-  withval=$with_system_zlib; if test x$with_system_zlib = xyes ; then
-    zlibdir=
-    zlibinc=
-  fi
+else
+	ZSTD_CFLAGS=$pkg_cv_ZSTD_CFLAGS
+	ZSTD_LIBS=$pkg_cv_ZSTD_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 
-fi
 
+$as_echo "#define HAVE_ZSTD 1" >>confdefs.h
 
 
+fi
+
+fi
 
 
 save_CFLAGS="$CFLAGS"
@@ -14556,17 +15347,16 @@ if test "$enable_shared" = "yes"; then
   if test -n "$x"; then
     SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
   fi
+fi
 
+SHARED_LIBADD="$SHARED_LIBADD $LTLIBINTL"
+
+if test "$enable_shared" = "yes"; then
   case "${host}" in
   # More hacks to build DLLs on Windows.
   *-*-cygwin*)
     SHARED_LDFLAGS="-no-undefined"
-    SHARED_LIBADD="-L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin -lkernel32"
-  ;;
-
-  # Use built-in libintl on macOS, since it is not provided by libc.
-  *-*-darwin*)
-    SHARED_LIBADD="-L`pwd`/../libiberty/pic -L`pwd`/../intl -liberty -lintl"
+    SHARED_LIBADD="-L`pwd`/../libiberty -liberty $SHARED_LIBADD -lcygwin -lkernel32"
   ;;
   esac
 
@@ -14628,7 +15418,7 @@ done
 # 64-bit support needs to be compiled in.  Currently, it will be included if
 # the default or any other explicitly requested target requires it; it
 # will not be included on a 32-bit host if no 64-bit target is requested, and
-# no "--with-64-bit-bfd" option is given, even if "--enable-targets=all" is
+# no "--enable-64-bit-bfd" option is given, even if "--enable-targets=all" is
 # used.
 
 # uniq the default and selected vectors in all the configured targets.
@@ -14667,13 +15457,13 @@ selarchs="$f"
 tb=
 
 elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo
-     dwarf1.lo dwarf2.lo"
+     elf-sframe.lo dwarf1.lo dwarf2.lo"
 coffgen="coffgen.lo dwarf2.lo"
 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
@@ -14684,31 +15474,28 @@ do
     aarch64_elf32_be_vec)	 tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
     aarch64_elf32_le_vec)	 tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
     aarch64_elf64_be_vec)	   tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    aarch64_elf64_be_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     aarch64_elf64_le_vec)	   tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    aarch64_elf64_le_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     aarch64_mach_o_vec)		 tb="$tb mach-o-aarch64.lo"; target_size=64 ;;
+    aarch64_pei_le_vec)		 tb="$tb pei-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;;
+    aarch64_pe_le_vec)		 tb="$tb pe-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;;
     alpha_ecoff_le_vec)		 tb="$tb coff-alpha.lo ecoff.lo $ecoff"; target_size=64 ;;
     alpha_elf64_vec)		 tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     alpha_elf64_fbsd_vec)	 tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     alpha_vms_vec)		 tb="$tb vms-alpha.lo vms-misc.lo vms-lib.lo"; target_size=64 ;;
     alpha_vms_lib_txt_vec)	 tb="$tb vms-lib.lo vms-misc.lo" ;;
     am33_elf32_linux_vec)	 tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
+    amdgcn_elf64_le_vec)	 tb="$tb elf64-amdgcn.lo elf64.lo $elf"; target_size=64 ;;
     aout0_be_vec)		 tb="$tb aout0.lo aout32.lo" ;;
     aout64_vec)			 tb="$tb demo64.lo aout64.lo"; target_size=64 ;;
     aout_vec)			 tb="$tb host-aout.lo aout32.lo" ;;
     arc_elf32_be_vec)		 tb="$tb elf32-arc.lo elf32.lo $elf" ;;
     arc_elf32_le_vec)		 tb="$tb elf32-arc.lo elf32.lo $elf" ;;
-    arm_elf32_be_vec)		 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_le_vec)		 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_fdpic_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_fdpic_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_nacl_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_nacl_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_symbian_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_symbian_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_vxworks_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_vxworks_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_be_vec)		 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_le_vec)		 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_fdpic_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_fdpic_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_vxworks_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_vxworks_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
     arm_pe_be_vec)		 tb="$tb pe-arm.lo peigen.lo $coff" ;;
     arm_pe_le_vec)		 tb="$tb pe-arm.lo peigen.lo $coff" ;;
     arm_pe_wince_be_vec)	 tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;;
@@ -14758,12 +15545,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,12 +15562,13 @@ 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 ;;
+    kvx_elf32_vec)		 tb="$tb elf32-kvx.lo elfxx-kvx.lo elf32.lo $elf $ipa" ;;
+    kvx_elf64_vec)		 tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa"; 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" ;;
+    loongarch_elf32_vec)	 tb="$tb elf32-loongarch.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf" ;;
+    loongarch_elf64_vec)	 tb="$tb elf64-loongarch.lo elf64.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf"; target_size=64 ;;
+    loongarch64_pei_vec)	 tb="$tb pei-loongarch64.lo pe-loongarch64igen.lo $coff"; target_size=64 ;;
     m32c_elf32_vec)		 tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
     m32r_elf32_vec)		 tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
     m32r_elf32_le_vec)		 tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
@@ -14841,11 +15629,10 @@ do
     nds32_elf32_linux_be_vec)	 tb="$tb elf32-nds32.lo elf32.lo $elf" ;;
     nds32_elf32_linux_le_vec)	 tb="$tb elf32-nds32.lo elf32.lo $elf" ;;
     nfp_elf64_vec)		 tb="$tb elf64-nfp.lo elf64.lo $elf" ;;
-    nios2_elf32_be_vec)		 tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
-    nios2_elf32_le_vec)		 tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
     ns32k_aout_pc532mach_vec)	 tb="$tb pc532-mach.lo aout-ns32k.lo" ;;
     ns32k_aout_pc532nbsd_vec)	 tb="$tb ns32knetbsd.lo aout-ns32k.lo" ;;
     or1k_elf32_vec)		 tb="$tb elf32-or1k.lo elf32.lo $elf" ;;
+    pdb_vec)			 tb="$tb pdb.lo" ;;
     pdp11_aout_vec)		 tb="$tb pdp11.lo" ;;
     pef_vec)			 tb="$tb pef.lo" ;;
     pef_xlib_vec)		 tb="$tb pef.lo" ;;
@@ -14859,14 +15646,14 @@ 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_elf64_fbsd_le_vec)	 tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
     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" ;;
-    riscv_elf64_vec)		 tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf32.lo $elf"; target_size=64 ;;
+    riscv_elf32_vec)		 tb="$tb elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf" ;;
+    riscv_elf64_vec)		 tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
+    riscv_elf32_be_vec)		 tb="$tb elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf" ;;
+    riscv_elf64_be_vec)		 tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
+    riscv64_pei_vec)		 tb="$tb pei-riscv64.lo pe-riscv64igen.lo $coff"; target_size=64 ;;
     rl78_elf32_vec)		 tb="$tb elf32-rl78.lo elf32.lo $elf" ;;
     rs6000_xcoff64_vec)		 tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;;
     rs6000_xcoff64_aix_vec)	 tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;;
@@ -14877,8 +15664,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 +15690,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 +15709,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,22 +15725,19 @@ 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" ;;
     xstormy16_elf32_vec)	 tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
-    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" ;;
+    xtensa_elf32_be_vec)	 tb="$tb xtensa-dynconfig.lo xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
+    xtensa_elf32_le_vec)	 tb="$tb xtensa-dynconfig.lo 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
@@ -15041,12 +15823,6 @@ case ${host64}-${target64}-${want64} in
     wordsize=64
     bfd64_libs='$(BFD64_LIBS)'
     all_backends='$(BFD64_BACKENDS) $(BFD32_BACKENDS)'
-    if test $BFD_HOST_64_BIT_DEFINED = 0; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have requested a 64 bit BFD configuration, but" >&5
-$as_echo "$as_me: WARNING: You have requested a 64 bit BFD configuration, but" >&2;}
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: your compiler may not have a 64 bit integral type" >&5
-$as_echo "$as_me: WARNING: your compiler may not have a 64 bit integral type" >&2;}
-    fi
     if test -n "$GCC" ; then
        bad_64bit_gcc=no;
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gcc version with buggy 64-bit support" >&5
@@ -15115,10 +15891,9 @@ 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 ;;
   hppa*-*-hpux*)	COREFILE=hpux-core.lo ;;
   hppa*-*-hiux*)	COREFILE=hpux-core.lo ;;
   hppa*-*-mpeix*)	COREFILE=hpux-core.lo ;;
@@ -15128,19 +15903,10 @@ if test "${target}" = "${host}"; then
 	COREFILE=netbsd-core.lo
 	;;
 
-  i[3-7]86-sequent-bsd*)
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/symmetry.h"'
-	;;
-  i[3-7]86-sequent-sysv4*) ;;
-  i[3-7]86-sequent-sysv*)
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/symmetry.h"'
-	;;
   i[3-7]86-*-bsdi)
 	COREFILE=
 	;;
-  i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234] | i[3-7]86-*-freebsd4\.[01234]\.* | i[3-7]86-*-freebsd*aout*)
+  i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234] | i[3-7]86-*-freebsd4\.[01234]\.*)
 	COREFILE=trad-core.lo
 	TRAD_HEADER='"hosts/i386bsd.h"'
 	;;
@@ -15155,13 +15921,6 @@ if test "${target}" = "${host}"; then
 	COREFILE=trad-core.lo
 	TRAD_HEADER='"hosts/esix.h"'
 	;;
-  i[3-7]86-*-sco3.2v5*)
-	COREFILE=sco5-core.lo
-	;;
-  i[3-7]86-*-sco* | i[3-7]86-*-isc*)
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/i386sco.h"'
-	;;
   i[3-7]86-*-mach3*)
 	COREFILE=trad-core.lo
 	TRAD_HEADER='"hosts/i386mach3.h"'
@@ -15174,14 +15933,12 @@ if test "${target}" = "${host}"; then
 	  CORE_HEADER='"hosts/x86-64linux.h"'
 	esac
 	;;
-  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 ;;
-  mips-sgi-irix5*)	COREFILE=irix-core.lo ;;
-  mips-sgi-irix6*)	COREFILE=irix-core.lo ;;
+  mips-*-irix*)
+	COREFILE=irix-core.lo
+	;;
   m68*-*-linux-*)
 	COREFILE=trad-core.lo
 	TRAD_HEADER='"hosts/m68klinux.h"'
@@ -15253,14 +16010,6 @@ rm -f core conftest.err conftest.$ac_obj
   vax-*-netbsd* | vax-*-openbsd*)
 	COREFILE=netbsd-core.lo
 	;;
-  vax-*-ultrix2*)
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/vaxult2.h"'
-	;;
-  vax-*-ultrix*)
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/vaxult2.h"'
-	;;
   vax-*-linux-*)
 	COREFILE=trad-core.lo
 	TRAD_HEADER='"hosts/vaxlinux.h"'
@@ -15278,7 +16027,6 @@ rm -f core conftest.err conftest.$ac_obj
   esac
 
   case "$COREFILE" in
-  aix386-core.lo)	COREFLAG=-DAIX386_CORE ;;
   hppabsd-core.lo)	COREFLAG=-DHPPABSD_CORE ;;
   hpux-core.lo)		COREFLAG=-DHPUX_CORE ;;
   irix-core.lo)		COREFLAG=-DIRIX_CORE ;;
@@ -15287,13 +16035,15 @@ rm -f core conftest.err conftest.$ac_obj
   osf-core.lo)		COREFLAG=-DOSF_CORE ;;
   ptrace-core.lo)	COREFLAG=-DPTRACE_CORE ;;
   rs6000-core.lo)	COREFLAG="$COREFLAG -DAIX_CORE" ;;
-  sco5-core.lo)		COREFLAG="$COREFLAG -DSCO5_CORE" ;;
   trad-core.lo)		COREFLAG="$COREFLAG -DTRAD_CORE" ;;
   esac
 
   # 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 +16056,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 +16066,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 +16092,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 +16102,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 +16128,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 +16138,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 +16164,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 +16174,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 +16200,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 +16210,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 +16236,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 +16246,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 +16272,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 +16282,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 +16308,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 +16318,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 +16344,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 +16354,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 +16380,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 +16390,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 +16416,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 +16426,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 +16452,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 +16462,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 +16488,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 +16498,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 +16524,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 +16534,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 +16560,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 +16570,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 +16596,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 +16606,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 +16632,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 +16642,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 +16668,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 +16678,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 +16704,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 +16714,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 +16740,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 +16750,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 +16776,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 +16786,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 ()
@@ -16127,6 +16856,57 @@ _ACEOF
 fi
 done
 
+ac_fn_c_check_decl "$LINENO" "ftello" "ac_cv_have_decl_ftello" "$ac_includes_default"
+if test "x$ac_cv_have_decl_ftello" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FTELLO $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "ftello64" "ac_cv_have_decl_ftello64" "$ac_includes_default"
+if test "x$ac_cv_have_decl_ftello64" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FTELLO64 $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "fseeko" "ac_cv_have_decl_fseeko" "$ac_includes_default"
+if test "x$ac_cv_have_decl_fseeko" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FSEEKO $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "fseeko64" "ac_cv_have_decl_fseeko64" "$ac_includes_default"
+if test "x$ac_cv_have_decl_fseeko64" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FSEEKO64 $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "fopen64" "ac_cv_have_decl_fopen64" "$ac_includes_default"
+if test "x$ac_cv_have_decl_fopen64" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FOPEN64 $ac_have_decl
+_ACEOF
+
 if test x"$ac_cv_func_ftello" = xyes -a x"$ac_cv_func_fseeko" = xyes; then
     # 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
@@ -16168,8 +16948,8 @@ bfd_file_ptr="long"
 bfd_ufile_ptr="unsigned long"
 if test x"$ac_cv_func_ftello64" = xyes -a x"$ac_cv_func_fseeko64" = xyes \
 	-o x"${ac_cv_sizeof_off_t}" = x8; then
-    bfd_file_ptr=BFD_HOST_64_BIT
-    bfd_ufile_ptr=BFD_HOST_U_64_BIT
+    bfd_file_ptr=int64_t
+    bfd_ufile_ptr=uint64_t
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $bfd_file_ptr" >&5
 $as_echo "$bfd_file_ptr" >&6; }
@@ -16199,6 +16979,9 @@ done
 
 
 
+save_ASAN_OPTIONS="$ASAN_OPTIONS"
+  ASAN_OPTIONS=detect_leaks=0
+  export ASAN_OPTIONS
 
 for ac_func in getpagesize
 do :
@@ -16377,6 +17160,8 @@ if test $ac_cv_func_mmap_fixed_mapped =
 fi
 rm -f conftest.mmap conftest.txt
 
+  ASAN_OPTIONS="$save_ASAN_OPTIONS"
+
 for ac_func in madvise mprotect
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
@@ -16395,8 +17180,7 @@ case ${want_mmap}+${ac_cv_func_mmap_fixe
  ;;
 esac
 
-rm -f doc/config.status
-ac_config_files="$ac_config_files Makefile doc/Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in"
+ac_config_files="$ac_config_files Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in"
 
 
 ac_config_commands="$ac_config_commands default"
@@ -16524,14 +17308,6 @@ LTLIBOBJS=$ac_ltlibobjs
    fi
    { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
 $as_echo "done" >&6; }
-if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error $? "conditional \"AMDEP\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
-if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
  if test -n "$EXEEXT"; then
   am__EXEEXT_TRUE=
   am__EXEEXT_FALSE='#'
@@ -16540,6 +17316,14 @@ else
   am__EXEEXT_FALSE=
 fi
 
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${PLUGINS_TRUE}" && test -z "${PLUGINS_FALSE}"; then
   as_fn_error $? "conditional \"PLUGINS\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -16557,6 +17341,7 @@ if test -z "${INSTALL_LIBBFD_TRUE}" && t
 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
@@ -16953,7 +17738,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.45.50, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17019,7 +17804,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.45.50
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -17407,24 +18192,6 @@ fi
     LINGUAS="${LINGUAS-%UNSET%}"
 
 
-GCC="$GCC"
-CC="$CC"
-acx_cv_header_stdint="$acx_cv_header_stdint"
-acx_cv_type_int8_t="$acx_cv_type_int8_t"
-acx_cv_type_int16_t="$acx_cv_type_int16_t"
-acx_cv_type_int32_t="$acx_cv_type_int32_t"
-acx_cv_type_int64_t="$acx_cv_type_int64_t"
-acx_cv_type_intptr_t="$acx_cv_type_intptr_t"
-ac_cv_type_uintmax_t="$ac_cv_type_uintmax_t"
-ac_cv_type_uintptr_t="$ac_cv_type_uintptr_t"
-ac_cv_type_uint64_t="$ac_cv_type_uint64_t"
-ac_cv_type_u_int64_t="$ac_cv_type_u_int64_t"
-ac_cv_type_u_int32_t="$ac_cv_type_u_int32_t"
-ac_cv_type_int_least32_t="$ac_cv_type_int_least32_t"
-ac_cv_type_int_fast32_t="$ac_cv_type_int_fast32_t"
-ac_cv_sizeof_void_p="$ac_cv_sizeof_void_p"
-
-
 
 _ACEOF
 
@@ -17438,9 +18205,7 @@ do
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;;
     "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
-    "bfd_stdint.h") CONFIG_COMMANDS="$CONFIG_COMMANDS bfd_stdint.h" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
     "bfd-in3.h") CONFIG_FILES="$CONFIG_FILES bfd-in3.h:bfd-in2.h" ;;
     "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;;
     "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
@@ -18872,378 +19637,6 @@ _LT_EOF
         ;;
       esac
     done ;;
-    "bfd_stdint.h":C)
-if test "$GCC" = yes; then
-  echo "/* generated for " `$CC --version | sed 1q` "*/" > tmp-stdint.h
-else
-  echo "/* generated for $CC */" > tmp-stdint.h
-fi
-
-sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-  #ifndef GCC_GENERATED_STDINT_H
-  #define GCC_GENERATED_STDINT_H 1
-
-  #include <sys/types.h>
-EOF
-
-if test "$acx_cv_header_stdint" != stdint.h; then
-  echo "#include <stddef.h>" >> tmp-stdint.h
-fi
-if test "$acx_cv_header_stdint" != stddef.h; then
-  echo "#include <$acx_cv_header_stdint>" >> tmp-stdint.h
-fi
-
-sed 's/^ *//' >> tmp-stdint.h <<EOF
-  /* glibc uses these symbols as guards to prevent redefinitions.  */
-  #ifdef __int8_t_defined
-  #define _INT8_T
-  #define _INT16_T
-  #define _INT32_T
-  #endif
-  #ifdef __uint32_t_defined
-  #define _UINT32_T
-  #endif
-
-EOF
-
-# ----------------- done header, emit basic int types -------------
-if test "$acx_cv_header_stdint" = stddef.h; then
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    #ifndef _UINT8_T
-    #define _UINT8_T
-    #ifndef __uint8_t_defined
-    #define __uint8_t_defined
-    #ifndef uint8_t
-    typedef unsigned $acx_cv_type_int8_t uint8_t;
-    #endif
-    #endif
-    #endif
-
-    #ifndef _UINT16_T
-    #define _UINT16_T
-    #ifndef __uint16_t_defined
-    #define __uint16_t_defined
-    #ifndef uint16_t
-    typedef unsigned $acx_cv_type_int16_t uint16_t;
-    #endif
-    #endif
-    #endif
-
-    #ifndef _UINT32_T
-    #define _UINT32_T
-    #ifndef __uint32_t_defined
-    #define __uint32_t_defined
-    #ifndef uint32_t
-    typedef unsigned $acx_cv_type_int32_t uint32_t;
-    #endif
-    #endif
-    #endif
-
-    #ifndef _INT8_T
-    #define _INT8_T
-    #ifndef __int8_t_defined
-    #define __int8_t_defined
-    #ifndef int8_t
-    typedef $acx_cv_type_int8_t int8_t;
-    #endif
-    #endif
-    #endif
-
-    #ifndef _INT16_T
-    #define _INT16_T
-    #ifndef __int16_t_defined
-    #define __int16_t_defined
-    #ifndef int16_t
-    typedef $acx_cv_type_int16_t int16_t;
-    #endif
-    #endif
-    #endif
-
-    #ifndef _INT32_T
-    #define _INT32_T
-    #ifndef __int32_t_defined
-    #define __int32_t_defined
-    #ifndef int32_t
-    typedef $acx_cv_type_int32_t int32_t;
-    #endif
-    #endif
-    #endif
-EOF
-elif test "$ac_cv_type_u_int32_t" = yes; then
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* int8_t int16_t int32_t defined by inet code, we do the u_intXX types */
-    #ifndef _INT8_T
-    #define _INT8_T
-    #endif
-    #ifndef _INT16_T
-    #define _INT16_T
-    #endif
-    #ifndef _INT32_T
-    #define _INT32_T
-    #endif
-
-    #ifndef _UINT8_T
-    #define _UINT8_T
-    #ifndef __uint8_t_defined
-    #define __uint8_t_defined
-    #ifndef uint8_t
-    typedef u_int8_t uint8_t;
-    #endif
-    #endif
-    #endif
-
-    #ifndef _UINT16_T
-    #define _UINT16_T
-    #ifndef __uint16_t_defined
-    #define __uint16_t_defined
-    #ifndef uint16_t
-    typedef u_int16_t uint16_t;
-    #endif
-    #endif
-    #endif
-
-    #ifndef _UINT32_T
-    #define _UINT32_T
-    #ifndef __uint32_t_defined
-    #define __uint32_t_defined
-    #ifndef uint32_t
-    typedef u_int32_t uint32_t;
-    #endif
-    #endif
-    #endif
-EOF
-else
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* Some systems have guard macros to prevent redefinitions, define them.  */
-    #ifndef _INT8_T
-    #define _INT8_T
-    #endif
-    #ifndef _INT16_T
-    #define _INT16_T
-    #endif
-    #ifndef _INT32_T
-    #define _INT32_T
-    #endif
-    #ifndef _UINT8_T
-    #define _UINT8_T
-    #endif
-    #ifndef _UINT16_T
-    #define _UINT16_T
-    #endif
-    #ifndef _UINT32_T
-    #define _UINT32_T
-    #endif
-EOF
-fi
-
-# ------------- done basic int types, emit int64_t types ------------
-if test "$ac_cv_type_uint64_t" = yes; then
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* system headers have good uint64_t and int64_t */
-    #ifndef _INT64_T
-    #define _INT64_T
-    #endif
-    #ifndef _UINT64_T
-    #define _UINT64_T
-    #endif
-EOF
-elif test "$ac_cv_type_u_int64_t" = yes; then
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* system headers have an u_int64_t (and int64_t) */
-    #ifndef _INT64_T
-    #define _INT64_T
-    #endif
-    #ifndef _UINT64_T
-    #define _UINT64_T
-    #ifndef __uint64_t_defined
-    #define __uint64_t_defined
-    #ifndef uint64_t
-    typedef u_int64_t uint64_t;
-    #endif
-    #endif
-    #endif
-EOF
-elif test -n "$acx_cv_type_int64_t"; then
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* architecture has a 64-bit type, $acx_cv_type_int64_t */
-    #ifndef _INT64_T
-    #define _INT64_T
-    #ifndef int64_t
-    typedef $acx_cv_type_int64_t int64_t;
-    #endif
-    #endif
-    #ifndef _UINT64_T
-    #define _UINT64_T
-    #ifndef __uint64_t_defined
-    #define __uint64_t_defined
-    #ifndef uint64_t
-    typedef unsigned $acx_cv_type_int64_t uint64_t;
-    #endif
-    #endif
-    #endif
-EOF
-else
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* some common heuristics for int64_t, using compiler-specific tests */
-    #if defined __STDC_VERSION__ && (__STDC_VERSION__-0) >= 199901L
-    #ifndef _INT64_T
-    #define _INT64_T
-    #ifndef __int64_t_defined
-    #ifndef int64_t
-    typedef long long int64_t;
-    #endif
-    #endif
-    #endif
-    #ifndef _UINT64_T
-    #define _UINT64_T
-    #ifndef uint64_t
-    typedef unsigned long long uint64_t;
-    #endif
-    #endif
-
-    #elif defined __GNUC__ && defined (__STDC__) && __STDC__-0
-    /* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
-       does not implement __extension__.  But that compiler doesn't define
-       __GNUC_MINOR__.  */
-    # if __GNUC__ < 2 || (__NeXT__ && !__GNUC_MINOR__)
-    # define __extension__
-    # endif
-
-    # ifndef _INT64_T
-    # define _INT64_T
-    # ifndef int64_t
-    __extension__ typedef long long int64_t;
-    # endif
-    # endif
-    # ifndef _UINT64_T
-    # define _UINT64_T
-    # ifndef uint64_t
-    __extension__ typedef unsigned long long uint64_t;
-    # endif
-    # endif
-
-    #elif !defined __STRICT_ANSI__
-    # if defined _MSC_VER || defined __WATCOMC__ || defined __BORLANDC__
-
-    #  ifndef _INT64_T
-    #  define _INT64_T
-    #  ifndef int64_t
-    typedef __int64 int64_t;
-    #  endif
-    #  endif
-    #  ifndef _UINT64_T
-    #  define _UINT64_T
-    #  ifndef uint64_t
-    typedef unsigned __int64 uint64_t;
-    #  endif
-    #  endif
-    # endif /* compiler */
-
-    #endif /* ANSI version */
-EOF
-fi
-
-# ------------- done int64_t types, emit intptr types ------------
-if test "$ac_cv_type_uintptr_t" != yes; then
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* Define intptr_t based on sizeof(void*) = $ac_cv_sizeof_void_p */
-    #ifndef __uintptr_t_defined
-    #ifndef uintptr_t
-    typedef u$acx_cv_type_intptr_t uintptr_t;
-    #endif
-    #endif
-    #ifndef __intptr_t_defined
-    #ifndef intptr_t
-    typedef $acx_cv_type_intptr_t  intptr_t;
-    #endif
-    #endif
-EOF
-fi
-
-# ------------- done intptr types, emit int_least types ------------
-if test "$ac_cv_type_int_least32_t" != yes; then
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* Define int_least types */
-    typedef int8_t     int_least8_t;
-    typedef int16_t    int_least16_t;
-    typedef int32_t    int_least32_t;
-    #ifdef _INT64_T
-    typedef int64_t    int_least64_t;
-    #endif
-
-    typedef uint8_t    uint_least8_t;
-    typedef uint16_t   uint_least16_t;
-    typedef uint32_t   uint_least32_t;
-    #ifdef _UINT64_T
-    typedef uint64_t   uint_least64_t;
-    #endif
-EOF
-fi
-
-# ------------- done intptr types, emit int_fast types ------------
-if test "$ac_cv_type_int_fast32_t" != yes; then
-      sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* Define int_fast types.  short is often slow */
-    typedef int8_t       int_fast8_t;
-    typedef int          int_fast16_t;
-    typedef int32_t      int_fast32_t;
-    #ifdef _INT64_T
-    typedef int64_t      int_fast64_t;
-    #endif
-
-    typedef uint8_t      uint_fast8_t;
-    typedef unsigned int uint_fast16_t;
-    typedef uint32_t     uint_fast32_t;
-    #ifdef _UINT64_T
-    typedef uint64_t     uint_fast64_t;
-    #endif
-EOF
-fi
-
-if test "$ac_cv_type_uintmax_t" != yes; then
-  sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-    /* Define intmax based on what we found */
-    #ifndef intmax_t
-    #ifdef _INT64_T
-    typedef int64_t       intmax_t;
-    #else
-    typedef long          intmax_t;
-    #endif
-    #endif
-    #ifndef uintmax_t
-    #ifdef _UINT64_T
-    typedef uint64_t      uintmax_t;
-    #else
-    typedef unsigned long uintmax_t;
-    #endif
-    #endif
-EOF
-fi
-
-sed 's/^ *//' >> tmp-stdint.h <<EOF
-
-  #endif /* GCC_GENERATED_STDINT_H */
-EOF
-
-if test -r bfd_stdint.h && cmp -s tmp-stdint.h bfd_stdint.h; then
-  rm -f tmp-stdint.h
-else
-  mv -f tmp-stdint.h bfd_stdint.h
-fi
-
- ;;
     "default":C)
 case "$srcdir" in
   .) srcdirpre= ;;
@@ -19300,3 +19693,21 @@ if test -n "$ac_unrecognized_opts" && te
 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
+
+
+touch config.status.tmp
+if touch --reference=config.status config.status.tmp > /dev/null 2>&1; then
+  sed '/as_fn_exit 0/i \
+sed -e \"s/^\t\\\(\\\$(AM_V_CCLD)\\\)/\t+ \\\1/\" Makefile > Makefile.tmp \
+touch --reference=Makefile Makefile.tmp \
+mv Makefile.tmp Makefile \
+' config.status > config.status.tmp
+  touch --reference=config.status config.status.tmp
+  mv config.status.tmp config.status
+  chmod +x config.status
+  sed -e "s/^\t\(\$(AM_V_CCLD)\)/\t+ \1/" Makefile > Makefile.tmp
+  touch --reference=Makefile Makefile.tmp
+  mv Makefile.tmp Makefile
+else
+  rm -f config.status.tmp
+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.20200303/bfd/configure.ac ./bfd/configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/configure.ac	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/configure.ac	2026-03-05 02:07:20.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-2025 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
@@ -18,13 +18,13 @@ dnl <http://www.gnu.org/licenses/>.
 dnl
 
 m4_include([version.m4])
-AC_INIT([bfd], BFD_VERSION)
+AC_INIT([bfd], [BFD_VERSION])
 AC_CONFIG_SRCDIR([libbfd.c])
 
 AC_CANONICAL_TARGET
-AC_ISC_POSIX
 
 AM_INIT_AUTOMAKE
+AM_SILENT_RULES([yes])
 
 dnl These must be called before LT_INIT, because it may want
 dnl to call AC_CHECK_PROG.
@@ -36,7 +36,6 @@ dnl configure option --enable-shared.
 AC_DISABLE_SHARED
 
 AC_PROG_CC
-AC_GNU_SOURCE
 AC_USE_SYSTEM_EXTENSIONS
 
 LT_INIT([dlopen])
@@ -44,15 +43,46 @@ LT_INIT([dlopen])
 # AC_PLUGINS setting $plugins is called by ACX_LARGEFILE.
 ACX_LARGEFILE
 
+changequote(,)dnl
+case "${target}" in
+    *-*-*aout*| i[3-7]86-*-msdos* | ns32k-*-* | pdp11-*-*)
+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 ;;
+esac
+
 AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes")
 
-AC_ARG_ENABLE(64-bit-bfd,
-[  --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)],
+ac_checking=
+. ${srcdir}/development.sh
+test "$development" = true && ac_checking=yes
+AC_ARG_ENABLE(checking,
+[  --enable-checking       enable run-time checks],
 [case "${enableval}" in
-  yes)  want64=true  ;;
-  no)   want64=false ;;
-  *)    AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option) ;;
-esac],[want64=false])dnl
+  no|none)  ac_checking= ;;
+  *)	    ac_checking=yes ;;
+esac])dnl
+if test x$ac_checking != x ; then
+  AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.])
+fi
+
+AC_ARG_ENABLE(64-bit-bfd,
+  AS_HELP_STRING([--enable-64-bit-bfd],
+		 [64-bit support (on hosts with narrower word sizes)]),
+  [AS_CASE([$enableval],
+	   [yes|no], [],
+	   [*], [AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option)])],
+  [enable_64_bit_bfd=no])
+if test $enable_64_bit_bfd = yes ; then
+  want64=true
+else
+  want64=false
+fi
 
 AC_ARG_ENABLE(targets,
 [  --enable-targets        alternative target configurations],
@@ -78,7 +108,7 @@ AC_ARG_WITH(mmap,
   yes)  want_mmap=true ;;
   no)   want_mmap=false ;;
   *)    AC_MSG_ERROR(bad value ${withval} for BFD with-mmap option) ;;
-esac],[want_mmap=false])dnl
+esac],[want_mmap=true])dnl
 
 AC_ARG_ENABLE(secureplt,
 [  --enable-secureplt      Default to creating read-only plt entries],
@@ -134,7 +164,7 @@ AC_ARG_WITH(separate-debug-dir,
 AC_SUBST(DEBUGDIR)
 
 ACX_PKGVERSION([GNU Binutils])
-ACX_BUGURL([http://www.sourceware.org/bugzilla/])
+ACX_BUGURL([https://sourceware.org/bugzilla/])
 
 AM_BINUTILS_WARNINGS
 
@@ -158,6 +188,8 @@ AM_CONDITIONAL(GENINSRC_NEVER, false)
 AM_INSTALL_LIBBFD
 AC_EXEEXT
 
+AC_C_BIGENDIAN
+
 host64=false
 target64=false
 bfd_default_target_size=32
@@ -166,7 +198,6 @@ bfd_default_target_size=32
 
 ALL_LINGUAS="da es fi fr hr id ja ro ru rw sr sv tr uk vi zh_CN pt"
 ZW_GNU_GETTEXT_SISTER_DIR
-AM_PO_SUBDIRS
 
 # Permit host specific settings.
 . ${srcdir}/configure.host
@@ -174,15 +205,7 @@ AM_PO_SUBDIRS
 AC_SUBST(HDEFINES)
 AC_PROG_INSTALL
 
-BFD_HOST_64BIT_LONG=0
-BFD_HOST_64BIT_LONG_LONG=0
-BFD_HOST_64_BIT_DEFINED=0
-BFD_HOST_64_BIT=
-BFD_HOST_U_64_BIT=
-BFD_HOSTPTR_T="unsigned long"
-
-AC_TYPE_LONG_DOUBLE
-AC_CHECK_TYPES([long long], [AC_CHECK_SIZEOF(long long)])
+AC_CHECK_SIZEOF(long long)
 AC_CHECK_SIZEOF(void *)
 AC_CHECK_SIZEOF(long)
 AC_CHECK_SIZEOF(int)
@@ -191,68 +214,25 @@ if test "x${ac_cv_sizeof_void_p}" = "x8"
   host64=true
 fi
 
-if test "x${ac_cv_sizeof_long}" = "x8"; then
-  BFD_HOST_64BIT_LONG=1
-  test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long"
-  test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long"
-elif test "x${ac_cv_sizeof_long_long}" = "x8"; then
-  BFD_HOST_64BIT_LONG_LONG=1
-  test -n "${HOST_64BIT_TYPE}" || HOST_64BIT_TYPE="long long"
-  test -n "${HOST_U_64BIT_TYPE}" || HOST_U_64BIT_TYPE="unsigned long long"
-  if test "x${ac_cv_sizeof_void_p}" = "x8"; then
-    BFD_HOSTPTR_T="unsigned long long"
-  fi
-fi
-
-if test -n "${HOST_64BIT_TYPE}" -a -n "${HOST_U_64BIT_TYPE}"; then
-  BFD_HOST_64_BIT_DEFINED=1
-  BFD_HOST_64_BIT="${HOST_64BIT_TYPE}"
-  BFD_HOST_U_64_BIT="${HOST_U_64BIT_TYPE}"
-fi
+BFD_CC_FOR_BUILD
 
-AC_SUBST(BFD_HOST_64BIT_LONG)
-AC_SUBST(BFD_HOST_64BIT_LONG_LONG)
-AC_SUBST(BFD_HOST_64_BIT_DEFINED)
-AC_SUBST(BFD_HOST_64_BIT)
-AC_SUBST(BFD_HOST_U_64_BIT)
-AC_SUBST(BFD_HOSTPTR_T)
+AC_CHECK_HEADERS(fcntl.h sys/file.h sys/resource.h sys/stat.h sys/types.h \
+		 unistd.h)
 
-BFD_CC_FOR_BUILD
+AC_CHECK_FUNCS(fcntl fdopen fileno fls getgid getpagesize getrlimit getuid \
+	       sysconf)
 
-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)
-GCC_HEADER_STDINT(bfd_stdint.h)
-AC_HEADER_TIME
-AC_HEADER_DIRENT
-
-ACX_HEADER_STRING
-AC_CHECK_FUNCS(fcntl getpagesize setitimer sysconf fdopen getuid getgid fileno fls)
-AC_CHECK_FUNCS(strtoull getrlimit)
-
-AC_CHECK_DECLS(basename)
-AC_CHECK_DECLS(ftello)
-AC_CHECK_DECLS(ftello64)
-AC_CHECK_DECLS(fseeko)
-AC_CHECK_DECLS(fseeko64)
+AC_CHECK_DECLS([basename, ffs, stpcpy, asprintf, vasprintf, strnlen])
+AC_CHECK_DECLS([___lc_codepage_func], [], [], [[#include <locale.h>]])
 
 BFD_BINARY_FOPEN
 
-AC_CHECK_DECLS(ffs)
-AC_CHECK_DECLS(free)
-AC_CHECK_DECLS(getenv)
-AC_CHECK_DECLS(malloc)
-AC_CHECK_DECLS(realloc)
-AC_CHECK_DECLS(stpcpy)
-AC_CHECK_DECLS(strstr)
-AC_CHECK_DECLS(asprintf)
-AC_CHECK_DECLS(vasprintf)
-AC_CHECK_DECLS(snprintf)
-AC_CHECK_DECLS(vsnprintf)
-AC_CHECK_DECLS(strnlen)
+AX_TLS
 
-# Link in zlib if we can.  This allows us to read compressed debug sections.
+# Link in zlib/zstd if we can.  This allows us to read compressed debug sections.
 # This is used only by compress.c.
 AM_ZLIB
+AC_ZSTD
 
 save_CFLAGS="$CFLAGS"
 CFLAGS="$CFLAGS -Werror"
@@ -292,17 +272,16 @@ changequote([,])dnl
   if test -n "$x"; then
     SHARED_LIBADD="-L`pwd`/../libiberty/pic -liberty"
   fi
+fi
 
+SHARED_LIBADD="$SHARED_LIBADD $LTLIBINTL"
+
+if test "$enable_shared" = "yes"; then
   case "${host}" in
   # More hacks to build DLLs on Windows.
   *-*-cygwin*)
     SHARED_LDFLAGS="-no-undefined"
-    SHARED_LIBADD="-L`pwd`/../libiberty -liberty -L`pwd`/../intl -lintl -lcygwin -lkernel32"
-  ;;
-
-  # Use built-in libintl on macOS, since it is not provided by libc.
-  *-*-darwin*)
-    SHARED_LIBADD="-L`pwd`/../libiberty/pic -L`pwd`/../intl -liberty -lintl"
+    SHARED_LIBADD="-L`pwd`/../libiberty -liberty $SHARED_LIBADD -lcygwin -lkernel32"
   ;;
   esac
 
@@ -364,7 +343,7 @@ AC_SUBST(TDEFINES)
 # 64-bit support needs to be compiled in.  Currently, it will be included if
 # the default or any other explicitly requested target requires it; it
 # will not be included on a 32-bit host if no 64-bit target is requested, and
-# no "--with-64-bit-bfd" option is given, even if "--enable-targets=all" is
+# no "--enable-64-bit-bfd" option is given, even if "--enable-targets=all" is
 # used.
 
 # uniq the default and selected vectors in all the configured targets.
@@ -403,13 +382,13 @@ selarchs="$f"
 tb=
 
 elf="elf.lo elflink.lo elf-attrs.lo elf-strtab.lo elf-eh-frame.lo
-     dwarf1.lo dwarf2.lo"
+     elf-sframe.lo dwarf1.lo dwarf2.lo"
 coffgen="coffgen.lo dwarf2.lo"
 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
@@ -420,31 +399,28 @@ do
     aarch64_elf32_be_vec)	 tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
     aarch64_elf32_le_vec)	 tb="$tb elf32-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
     aarch64_elf64_be_vec)	   tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    aarch64_elf64_be_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     aarch64_elf64_le_vec)	   tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
-    aarch64_elf64_le_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;;
     aarch64_mach_o_vec)		 tb="$tb mach-o-aarch64.lo"; target_size=64 ;;
+    aarch64_pei_le_vec)		 tb="$tb pei-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;;
+    aarch64_pe_le_vec)		 tb="$tb pe-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;;
     alpha_ecoff_le_vec)		 tb="$tb coff-alpha.lo ecoff.lo $ecoff"; target_size=64 ;;
     alpha_elf64_vec)		 tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     alpha_elf64_fbsd_vec)	 tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;;
     alpha_vms_vec)		 tb="$tb vms-alpha.lo vms-misc.lo vms-lib.lo"; target_size=64 ;;
     alpha_vms_lib_txt_vec)	 tb="$tb vms-lib.lo vms-misc.lo" ;;
     am33_elf32_linux_vec)	 tb="$tb elf32-am33lin.lo elf32.lo $elf" ;;
+    amdgcn_elf64_le_vec)	 tb="$tb elf64-amdgcn.lo elf64.lo $elf"; target_size=64 ;;
     aout0_be_vec)		 tb="$tb aout0.lo aout32.lo" ;;
     aout64_vec)			 tb="$tb demo64.lo aout64.lo"; target_size=64 ;;
     aout_vec)			 tb="$tb host-aout.lo aout32.lo" ;;
     arc_elf32_be_vec)		 tb="$tb elf32-arc.lo elf32.lo $elf" ;;
     arc_elf32_le_vec)		 tb="$tb elf32-arc.lo elf32.lo $elf" ;;
-    arm_elf32_be_vec)		 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_le_vec)		 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_fdpic_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_fdpic_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_nacl_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_nacl_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_symbian_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_symbian_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_vxworks_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
-    arm_elf32_vxworks_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-nacl.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_be_vec)		 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_le_vec)		 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_fdpic_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_fdpic_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_vxworks_be_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
+    arm_elf32_vxworks_le_vec)	 tb="$tb elf32-arm.lo elf32.lo elf-vxworks.lo $elf" ;;
     arm_pe_be_vec)		 tb="$tb pe-arm.lo peigen.lo $coff" ;;
     arm_pe_le_vec)		 tb="$tb pe-arm.lo peigen.lo $coff" ;;
     arm_pe_wince_be_vec)	 tb="$tb pe-arm-wince.lo pe-arm.lo peigen.lo $coff" ;;
@@ -494,12 +470,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,12 +487,13 @@ 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 ;;
+    kvx_elf32_vec)		 tb="$tb elf32-kvx.lo elfxx-kvx.lo elf32.lo $elf $ipa" ;;
+    kvx_elf64_vec)		 tb="$tb elf64-kvx.lo elfxx-kvx.lo elf64.lo $elf $ipa"; 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" ;;
+    loongarch_elf32_vec)	 tb="$tb elf32-loongarch.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf" ;;
+    loongarch_elf64_vec)	 tb="$tb elf64-loongarch.lo elf64.lo elfxx-loongarch.lo elf32.lo elf-ifunc.lo $elf"; target_size=64 ;;
+    loongarch64_pei_vec)	 tb="$tb pei-loongarch64.lo pe-loongarch64igen.lo $coff"; target_size=64 ;;
     m32c_elf32_vec)		 tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
     m32r_elf32_vec)		 tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
     m32r_elf32_le_vec)		 tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
@@ -577,11 +554,10 @@ do
     nds32_elf32_linux_be_vec)	 tb="$tb elf32-nds32.lo elf32.lo $elf" ;;
     nds32_elf32_linux_le_vec)	 tb="$tb elf32-nds32.lo elf32.lo $elf" ;;
     nfp_elf64_vec)		 tb="$tb elf64-nfp.lo elf64.lo $elf" ;;
-    nios2_elf32_be_vec)		 tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
-    nios2_elf32_le_vec)		 tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
     ns32k_aout_pc532mach_vec)	 tb="$tb pc532-mach.lo aout-ns32k.lo" ;;
     ns32k_aout_pc532nbsd_vec)	 tb="$tb ns32knetbsd.lo aout-ns32k.lo" ;;
     or1k_elf32_vec)		 tb="$tb elf32-or1k.lo elf32.lo $elf" ;;
+    pdb_vec)			 tb="$tb pdb.lo" ;;
     pdp11_aout_vec)		 tb="$tb pdp11.lo" ;;
     pef_vec)			 tb="$tb pef.lo" ;;
     pef_xlib_vec)		 tb="$tb pef.lo" ;;
@@ -595,14 +571,14 @@ 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_elf64_fbsd_le_vec)	 tb="$tb elf64-ppc.lo elf64-gen.lo elf64.lo $elf" target_size=64 ;;
     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" ;;
-    riscv_elf64_vec)		 tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf32.lo $elf"; target_size=64 ;;
+    riscv_elf32_vec)		 tb="$tb elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf" ;;
+    riscv_elf64_vec)		 tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
+    riscv_elf32_be_vec)		 tb="$tb elf32-riscv.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf" ;;
+    riscv_elf64_be_vec)		 tb="$tb elf64-riscv.lo elf64.lo elfxx-riscv.lo elf-ifunc.lo elf32.lo $elf"; target_size=64 ;;
+    riscv64_pei_vec)		 tb="$tb pei-riscv64.lo pe-riscv64igen.lo $coff"; target_size=64 ;;
     rl78_elf32_vec)		 tb="$tb elf32-rl78.lo elf32.lo $elf" ;;
     rs6000_xcoff64_vec)		 tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;;
     rs6000_xcoff64_aix_vec)	 tb="$tb coff64-rs6000.lo aix5ppc-core.lo $xcoff"; target_size=64 ;;
@@ -613,8 +589,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 +615,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 +634,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,22 +650,19 @@ 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" ;;
     xstormy16_elf32_vec)	 tb="$tb elf32-xstormy16.lo elf32.lo $elf" ;;
-    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" ;;
+    xtensa_elf32_be_vec)	 tb="$tb xtensa-dynconfig.lo xtensa-isa.lo xtensa-modules.lo elf32-xtensa.lo elf32.lo $elf" ;;
+    xtensa_elf32_le_vec)	 tb="$tb xtensa-dynconfig.lo 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
@@ -776,10 +747,6 @@ case ${host64}-${target64}-${want64} in
     wordsize=64
     bfd64_libs='$(BFD64_LIBS)'
     all_backends='$(BFD64_BACKENDS) $(BFD32_BACKENDS)'
-    if test $BFD_HOST_64_BIT_DEFINED = 0; then
-      AC_MSG_WARN([You have requested a 64 bit BFD configuration, but])
-      AC_MSG_WARN([your compiler may not have a 64 bit integral type])
-    fi
     if test -n "$GCC" ; then
        bad_64bit_gcc=no;
        AC_MSG_CHECKING([for gcc version with buggy 64-bit support])
@@ -836,10 +803,9 @@ 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 ;;
   hppa*-*-hpux*)	COREFILE=hpux-core.lo ;;
   hppa*-*-hiux*)	COREFILE=hpux-core.lo ;;
   hppa*-*-mpeix*)	COREFILE=hpux-core.lo ;;
@@ -850,25 +816,12 @@ if test "${target}" = "${host}"; then
 	;;
 
 changequote(,)dnl
-  i[3-7]86-sequent-bsd*)
-changequote([,])dnl
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/symmetry.h"'
-	;;
-changequote(,)dnl
-  i[3-7]86-sequent-sysv4*) ;;
-  i[3-7]86-sequent-sysv*)
-changequote([,])dnl
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/symmetry.h"'
-	;;
-changequote(,)dnl
   i[3-7]86-*-bsdi)
 changequote([,])dnl
 	COREFILE=
 	;;
 changequote(,)dnl
-  i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234] | i[3-7]86-*-freebsd4\.[01234]\.* | i[3-7]86-*-freebsd*aout*)
+  i[3-7]86-*-bsd* | i[3-7]86-*-freebsd[123] | i[3-7]86-*-freebsd[123]\.* | i[3-7]86-*-freebsd4\.[01234] | i[3-7]86-*-freebsd4\.[01234]\.*)
 changequote([,])dnl
 	COREFILE=trad-core.lo
 	TRAD_HEADER='"hosts/i386bsd.h"'
@@ -891,17 +844,6 @@ changequote([,])dnl
 	TRAD_HEADER='"hosts/esix.h"'
 	;;
 changequote(,)dnl
-  i[3-7]86-*-sco3.2v5*)
-changequote([,])dnl
-	COREFILE=sco5-core.lo
-	;;
-changequote(,)dnl
-  i[3-7]86-*-sco* | i[3-7]86-*-isc*)
-changequote([,])dnl
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/i386sco.h"'
-	;;
-changequote(,)dnl
   i[3-7]86-*-mach3*)
 changequote([,])dnl
 	COREFILE=trad-core.lo
@@ -917,16 +859,12 @@ changequote([,])dnl
 	  CORE_HEADER='"hosts/x86-64linux.h"'
 	esac
 	;;
-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 ;;
-  mips-sgi-irix5*)	COREFILE=irix-core.lo ;;
-  mips-sgi-irix6*)	COREFILE=irix-core.lo ;;
+  mips-*-irix*)
+	COREFILE=irix-core.lo
+	;;
   m68*-*-linux-*)
 	COREFILE=trad-core.lo
 	TRAD_HEADER='"hosts/m68klinux.h"'
@@ -982,14 +920,6 @@ changequote([,])dnl
   vax-*-netbsd* | vax-*-openbsd*)
 	COREFILE=netbsd-core.lo
 	;;
-  vax-*-ultrix2*)
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/vaxult2.h"'
-	;;
-  vax-*-ultrix*)
-	COREFILE=trad-core.lo
-	TRAD_HEADER='"hosts/vaxult2.h"'
-	;;
   vax-*-linux-*)
 	COREFILE=trad-core.lo
 	TRAD_HEADER='"hosts/vaxlinux.h"'
@@ -1007,7 +937,6 @@ changequote([,])dnl
   esac
 
   case "$COREFILE" in
-  aix386-core.lo)	COREFLAG=-DAIX386_CORE ;;
   hppabsd-core.lo)	COREFLAG=-DHPPABSD_CORE ;;
   hpux-core.lo)		COREFLAG=-DHPUX_CORE ;;
   irix-core.lo)		COREFLAG=-DIRIX_CORE ;;
@@ -1016,13 +945,12 @@ changequote([,])dnl
   osf-core.lo)		COREFLAG=-DOSF_CORE ;;
   ptrace-core.lo)	COREFLAG=-DPTRACE_CORE ;;
   rs6000-core.lo)	COREFLAG="$COREFLAG -DAIX_CORE" ;;
-  sco5-core.lo)		COREFLAG="$COREFLAG -DSCO5_CORE" ;;
   trad-core.lo)		COREFLAG="$COREFLAG -DTRAD_CORE" ;;
   esac
 
   # 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)
@@ -1072,6 +1000,7 @@ AC_SUBST(lt_cv_dlopen_libs)
 # Hopefully a reasonable assumption since fseeko et.al. should be
 # upward compatible.
 AC_CHECK_FUNCS(ftello ftello64 fseeko fseeko64 fopen64)
+AC_CHECK_DECLS([ftello, ftello64, fseeko, fseeko64, fopen64])
 if test x"$ac_cv_func_ftello" = xyes -a x"$ac_cv_func_fseeko" = xyes; then
     AC_CHECK_SIZEOF(off_t)
 fi
@@ -1080,25 +1009,22 @@ bfd_file_ptr="long"
 bfd_ufile_ptr="unsigned long"
 if test x"$ac_cv_func_ftello64" = xyes -a x"$ac_cv_func_fseeko64" = xyes \
 	-o x"${ac_cv_sizeof_off_t}" = x8; then
-    bfd_file_ptr=BFD_HOST_64_BIT
-    bfd_ufile_ptr=BFD_HOST_U_64_BIT
+    bfd_file_ptr=int64_t
+    bfd_ufile_ptr=uint64_t
 fi
 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
+GCC_AC_FUNC_MMAP
 AC_CHECK_FUNCS(madvise mprotect)
 case ${want_mmap}+${ac_cv_func_mmap_fixed_mapped} in
   true+yes )  AC_DEFINE(USE_MMAP, 1, [Use mmap if it's available?]) ;;
 esac
 
-rm -f doc/config.status
-AC_CONFIG_FILES([Makefile doc/Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in])
+AC_CONFIG_FILES([Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in])
 
-dnl We need this duplication, even though we use AM_PO_SUBDIRS, because of
-dnl our two separate POTFILES.  Yuck.
+dnl We need this duplication because of our two separate POTFILES.
 AC_CONFIG_COMMANDS([default],
 [[
 case "$srcdir" in
@@ -1126,3 +1052,5 @@ AC_SUBST(htmldir)
 AC_SUBST(pdfdir)
 
 AC_OUTPUT
+
+GNU_MAKE_JOBSERVER
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/configure.com ./bfd/configure.com
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/configure.com	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/configure.com	2026-03-05 02:07:20.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-2025 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
@@ -60,59 +60,17 @@
       ERASE(match_pos);
       COPY_TEXT('64');
    ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG@', FORWARD, EXACT, rang);
-   IF match_pos <> 0 THEN;
-      POSITION(BEGINNING_OF(match_pos));
-      ERASE(match_pos);
-      COPY_TEXT('0');
-   ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_LONG_LONG@', FORWARD, EXACT, rang);
-   IF match_pos <> 0 THEN;
-      POSITION(BEGINNING_OF(match_pos));
-      ERASE(match_pos);
-      COPY_TEXT('1');
-   ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG_LONG@', FORWARD, EXACT, rang);
-   IF match_pos <> 0 THEN;
-      POSITION(BEGINNING_OF(match_pos));
-      ERASE(match_pos);
-      COPY_TEXT('1');
-   ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT_DEFINED@', FORWARD, EXACT, rang);
-   IF match_pos <> 0 THEN;
-      POSITION(BEGINNING_OF(match_pos));
-      ERASE(match_pos);
-      COPY_TEXT('1');
-   ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT@', FORWARD, EXACT, rang);
-   IF match_pos <> 0 THEN;
-      POSITION(BEGINNING_OF(match_pos));
-      ERASE(match_pos);
-      COPY_TEXT('__int64');
-   ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_U_64_BIT@', FORWARD, EXACT, rang);
-   IF match_pos <> 0 THEN;
-      POSITION(BEGINNING_OF(match_pos));
-      ERASE(match_pos);
-      COPY_TEXT('unsigned __int64');
-   ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOSTPTR_T@', FORWARD, EXACT, rang);
-   IF match_pos <> 0 THEN;
-      POSITION(BEGINNING_OF(match_pos));
-      ERASE(match_pos);
-      COPY_TEXT('unsigned __int64');
-   ENDIF;
    match_pos := SEARCH_QUIETLY('@bfd_file_ptr@', FORWARD, EXACT, rang);
    IF match_pos <> 0 THEN;
       POSITION(BEGINNING_OF(match_pos));
       ERASE(match_pos);
       COPY_TEXT('bfd_signed_vma');
    ENDIF;
-   match_pos := SEARCH_QUIETLY('unsigned @bfd_file_ptr@ ufile_ptr', FORWARD, EXACT, rang);
+   match_pos := SEARCH_QUIETLY('@bfd_ufile_ptr@', FORWARD, EXACT, rang);
    IF match_pos <> 0 THEN;
       POSITION(BEGINNING_OF(match_pos));
       ERASE(match_pos);
-      COPY_TEXT('bfd_vma ufile_ptr');
+      COPY_TEXT('bfd_vma');
    ENDIF;
    match_pos := SEARCH_QUIETLY('@supports_plugins@', FORWARD, EXACT, rang);
    IF match_pos <> 0 THEN;
@@ -150,31 +108,29 @@
       ERASE(match_pos);
       COPY_TEXT('32');
    ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG@', FORWARD, EXACT, rang);
+   match_pos := SEARCH_QUIETLY('@bfd_default_target_size@', FORWARD, EXACT, rang);
    IF match_pos <> 0 THEN;
       POSITION(BEGINNING_OF(match_pos));
       ERASE(match_pos);
-      COPY_TEXT('0');
+      COPY_TEXT('32');
    ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT_DEFINED@', FORWARD, EXACT, rang);
+   match_pos := SEARCH_QUIETLY('@bfd_file_ptr@', FORWARD, EXACT, rang);
    IF match_pos <> 0 THEN;
       POSITION(BEGINNING_OF(match_pos));
       ERASE(match_pos);
-      COPY_TEXT('__DECC');
-      SPLIT_LINE;
-      COPY_TEXT('#include <ints.h>');
+      COPY_TEXT('bfd_signed_vma');
    ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT@', FORWARD, EXACT, rang);
+   match_pos := SEARCH_QUIETLY('@bfd_ufile_ptr@', FORWARD, EXACT, rang);
    IF match_pos <> 0 THEN;
       POSITION(BEGINNING_OF(match_pos));
       ERASE(match_pos);
-      COPY_TEXT('int64');
+      COPY_TEXT('bfd_vma');
    ENDIF;
-   match_pos := SEARCH_QUIETLY('@BFD_HOST_U_64_BIT@', FORWARD, EXACT, rang);
+   match_pos := SEARCH_QUIETLY('@supports_plugins@', FORWARD, EXACT, rang);
    IF match_pos <> 0 THEN;
       POSITION(BEGINNING_OF(match_pos));
       ERASE(match_pos);
-      COPY_TEXT('uint64');
+      COPY_TEXT('0');
    ENDIF;
    WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file"));
    QUIT
@@ -232,20 +188,13 @@
    IF match_pos <> 0 THEN;
       POSITION(BEGINNING_OF(match_pos));
       ERASE(match_pos);
-      COPY_TEXT('"<http://www.sourceware.org/bugzilla/>"');
+      COPY_TEXT('"<https://www.sourceware.org/bugzilla/>"');
    ENDIF;
    WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file"));
    QUIT
 $  EOD
 $!
 $!
-$! create bfd_stdint.h
-$!
-$ write sys$output "Generate `bfd_stdint.h'"
-$ create []bfd_stdint.h
-#include <inttypes.h>
-$!
-$!
 $! create targmatch.h
 $!
 $ write sys$output "Generate `targmatch.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.20200303/bfd/configure.host ./bfd/configure.host
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/configure.host	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/configure.host	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2025 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.20200303/bfd/corefile.c ./bfd/corefile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/corefile.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/corefile.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Core file generic interface routines for BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -111,7 +111,7 @@ FUNCTION
 	core_file_matches_executable_p
 
 SYNOPSIS
-	bfd_boolean core_file_matches_executable_p
+	bool core_file_matches_executable_p
 	  (bfd *core_bfd, bfd *exec_bfd);
 
 DESCRIPTION
@@ -120,13 +120,13 @@ DESCRIPTION
 	@var{exec_bfd}, <<FALSE>> otherwise.
 */
 
-bfd_boolean
+bool
 core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
 {
   if (core_bfd->format != bfd_core || exec_bfd->format != bfd_object)
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   return BFD_SEND (core_bfd, _core_file_matches_executable_p,
@@ -138,7 +138,7 @@ FUNCTION
 	generic_core_file_matches_executable_p
 
 SYNOPSIS
-	bfd_boolean generic_core_file_matches_executable_p
+	bool generic_core_file_matches_executable_p
 	  (bfd *core_bfd, bfd *exec_bfd);
 
 DESCRIPTION
@@ -154,7 +154,7 @@ DESCRIPTION
 	where we really don't know whether they match or not.
 */
 
-bfd_boolean
+bool
 generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
 {
   const char *exec;
@@ -162,7 +162,7 @@ generic_core_file_matches_executable_p (
   const char *last_slash;
 
   if (exec_bfd == NULL || core_bfd == NULL)
-    return TRUE;
+    return true;
 
   /* The cast below is to avoid a compiler warning due to the assignment
      of the const char * returned by bfd_core_file_failing_command to a
@@ -171,11 +171,11 @@ generic_core_file_matches_executable_p (
 
   core = bfd_core_file_failing_command (core_bfd);
   if (core == NULL)
-    return TRUE;
+    return true;
 
   exec = bfd_get_filename (exec_bfd);
   if (exec == NULL)
-    return TRUE;
+    return true;
 
   last_slash = strrchr (core, '/');
   if (last_slash != 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.20200303/bfd/cpu-aarch64.c ./bfd/cpu-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-aarch64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-aarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for AArch64.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -39,8 +39,8 @@ compatible (const bfd_arch_info_type * a
   if (a->mach == b->mach)
     return a;
 
-  /* Don't allow mixing ilp32 with lp64.  */
-  if ((a->mach & bfd_mach_aarch64_ilp32) != (b->mach & bfd_mach_aarch64_ilp32))
+  /* Don't allow mixing data models.  */
+  if ((a->mach ^ b->mach) & (bfd_mach_aarch64_ilp32 | bfd_mach_aarch64_llp64))
     return NULL;
 
   /* Otherwise if either a or b is the 'default' machine
@@ -73,17 +73,29 @@ processors[] =
   { bfd_mach_aarch64,	  "cortex-a65"	    },
   { bfd_mach_aarch64,	  "cortex-a65ae"    },
   { bfd_mach_aarch64,	  "cortex-a76ae"    },
-  { bfd_mach_aarch64,	  "cortex-a77"	    }
+  { bfd_mach_aarch64,	  "cortex-a77"	    },
+  { bfd_mach_aarch64,	  "cortex-a720"	    },
+  { bfd_mach_aarch64,     "cortex-x3"       },
+  { bfd_mach_aarch64,     "cortex-x4"       },
 };
 
-static bfd_boolean
+static bool
 scan (const struct bfd_arch_info *info, const char *string)
 {
   int i;
 
   /* First test for an exact match.  */
   if (strcasecmp (string, info->printable_name) == 0)
-    return TRUE;
+    return true;
+
+  /* If there is a prefix of "aarch64:" then skip it.  */
+  const char * colon;
+  if ((colon = strchr (string, ':')) != NULL)
+    {
+      if (strncasecmp (string, "aarch64", colon - string) != 0)
+	return false;
+      string = colon + 1;
+    }
 
   /* Next check for a processor name instead of an Architecture name.  */
   for (i = sizeof (processors) / sizeof (processors[0]); i--;)
@@ -93,37 +105,54 @@ scan (const struct bfd_arch_info *info,
     }
 
   if (i != -1 && info->mach == processors[i].mach)
-    return TRUE;
+    return true;
 
   /* Finally check for the default architecture.  */
   if (strcasecmp (string, "aarch64") == 0)
     return info->the_default;
 
-  return FALSE;
+  return false;
 }
 
-#define N(NUMBER, PRINT, WORDSIZE, DEFAULT, NEXT)		\
-  { WORDSIZE, WORDSIZE, 8, bfd_arch_aarch64, NUMBER,		\
-    "aarch64", PRINT, 4, DEFAULT, compatible, scan,		\
-      bfd_arch_default_fill, NEXT, 0 }
+/* Figure out if llp64 is default */
+#if DEFAULT_VECTOR == aarch64_pe_le_vec
+#define LLP64_DEFAULT true
+#define AARCH64_DEFAULT false
+#else
+#define LLP64_DEFAULT false
+#define AARCH64_DEFAULT true
+#endif
+
+#define N(NUMBER, PRINT, WORDSIZE, ADDRSIZE, DEFAULT, NEXT)		\
+  { WORDSIZE, ADDRSIZE, 8, bfd_arch_aarch64, NUMBER,		\
+     "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, 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, 32, false,
+     &bfd_aarch64_arch_v8_r);
+
+static const bfd_arch_info_type bfd_aarch64_arch_llp64 =
+  N (bfd_mach_aarch64_llp64, "aarch64:llp64", 32, 64, LLP64_DEFAULT,
+     &bfd_aarch64_arch_ilp32);
 
-const bfd_arch_info_type bfd_aarch64_arch =
-  N (0, "aarch64", 64, TRUE, &bfd_aarch64_arch_ilp32);
+ const bfd_arch_info_type bfd_aarch64_arch =
+  N (0, "aarch64", 64, 64, AARCH64_DEFAULT, &bfd_aarch64_arch_llp64);
 
-bfd_boolean
+bool
 bfd_is_aarch64_special_symbol_name (const char *name, int type)
 {
   if (!name || name[0] != '$')
-    return FALSE;
+    return false;
   if (name[1] == 'x' || name[1] == 'd')
     type &= BFD_AARCH64_SPECIAL_SYM_TYPE_MAP;
   else if (name[1] == 'm' || name[1] == 'f' || name[1] == 'p')
     type &= BFD_AARCH64_SPECIAL_SYM_TYPE_TAG;
   else
-    return FALSE;
+    return false;
 
   return (type != 0 && (name[2] == 0 || name[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.20200303/bfd/cpu-aarch64.h ./bfd/cpu-aarch64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-aarch64.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-aarch64.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF AArch64 mapping symbol support
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -21,5 +21,5 @@
 #define BFD_AARCH64_SPECIAL_SYM_TYPE_TAG	(1 << 1)
 #define BFD_AARCH64_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
 #define BFD_AARCH64_SPECIAL_SYM_TYPE_ANY	(~0)
-extern bfd_boolean bfd_is_aarch64_special_symbol_name
+extern bool bfd_is_aarch64_special_symbol_name
   (const char * name, 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.20200303/bfd/cpu-alpha.c ./bfd/cpu-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-alpha.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-alpha.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Alpha architecture.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -45,10 +45,10 @@
 /* These exist only so that we can reasonably disassemble PALcode.  */
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (64, 64, bfd_mach_alpha_ev4, "alpha:ev4", FALSE, NN(1)),
-  N (64, 64, bfd_mach_alpha_ev5, "alpha:ev5", FALSE, NN(2)),
-  N (64, 64, bfd_mach_alpha_ev6, "alpha:ev6", FALSE, 0),
+  N (64, 64, bfd_mach_alpha_ev4, "alpha:ev4", false, NN(1)),
+  N (64, 64, bfd_mach_alpha_ev5, "alpha:ev5", false, NN(2)),
+  N (64, 64, bfd_mach_alpha_ev6, "alpha:ev6", false, 0),
 };
 
 const bfd_arch_info_type bfd_alpha_arch =
-  N (64, 64, 0, "alpha", TRUE, NN(0));
+  N (64, 64, 0, "alpha", true, NN(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.20200303/bfd/cpu-amdgcn.c ./bfd/cpu-amdgcn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-amdgcn.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/cpu-amdgcn.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,62 @@
+/* BFD support for the AMDGCN GPU architecture.
+
+   Copyright (C) 2019-2025 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, see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+
+#define N(MACHINE, PRINTABLE_NAME, DEFAULT, NEXT)       \
+  {                                                     \
+    32, /* 32 bits in a word */                         \
+    64, /* 64 bits in an address */                     \
+    8,  /* 8 bits in a byte */                          \
+    bfd_arch_amdgcn,                                    \
+    MACHINE,                                            \
+    "amdgcn",                                           \
+    PRINTABLE_NAME,                                     \
+    3, /* section align power */                        \
+    DEFAULT,                                            \
+    bfd_default_compatible,                             \
+    bfd_default_scan,                                   \
+    bfd_arch_default_fill,                              \
+    NEXT,                                               \
+    0                                                   \
+  }
+
+#define NN(index) (&arch_info_struct[index])
+
+static const bfd_arch_info_type arch_info_struct[] =
+{
+  N (bfd_mach_amdgcn_gfx904, "amdgcn:gfx904", false, NN (1)),
+  N (bfd_mach_amdgcn_gfx906, "amdgcn:gfx906", false, NN (2)),
+  N (bfd_mach_amdgcn_gfx908, "amdgcn:gfx908", false, NN (3)),
+  N (bfd_mach_amdgcn_gfx90a, "amdgcn:gfx90a", false, NN (4)),
+  N (bfd_mach_amdgcn_gfx1010, "amdgcn:gfx1010", false, NN (5)),
+  N (bfd_mach_amdgcn_gfx1011, "amdgcn:gfx1011", false, NN (6)),
+  N (bfd_mach_amdgcn_gfx1012, "amdgcn:gfx1012", false, NN (7)),
+  N (bfd_mach_amdgcn_gfx1030, "amdgcn:gfx1030", false, NN (8)),
+  N (bfd_mach_amdgcn_gfx1031, "amdgcn:gfx1031", false, NN (9)),
+  N (bfd_mach_amdgcn_gfx1032, "amdgcn:gfx1032", false, NN (10)),
+  N (bfd_mach_amdgcn_gfx1100, "amdgcn:gfx1100", false, NN (11)),
+  N (bfd_mach_amdgcn_gfx1101, "amdgcn:gfx1101", false, NN (12)),
+  N (bfd_mach_amdgcn_gfx1102, "amdgcn:gfx1102", false, NULL)
+};
+
+const bfd_arch_info_type bfd_amdgcn_arch =
+  N (bfd_mach_amdgcn_gfx900, "amdgcn:gfx900", true, NN (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.20200303/bfd/cpu-arc.c ./bfd/cpu-arc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-arc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-arc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ARC processor
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
    Contributed by Doug Evans (dje@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -46,17 +46,17 @@ arc_compatible (const bfd_arch_info_type
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  ARC (bfd_mach_arc_arc600, "A6"    , FALSE, &arch_info_struct[1]),
-  ARC (bfd_mach_arc_arc601, "ARC601", FALSE, &arch_info_struct[2]),
-  ARC (bfd_mach_arc_arc700, "ARC700", FALSE, &arch_info_struct[3]),
-  ARC (bfd_mach_arc_arc700, "A7",     FALSE, &arch_info_struct[4]),
-  ARC (bfd_mach_arc_arcv2,  "ARCv2",  FALSE, &arch_info_struct[5]),
-  ARC (bfd_mach_arc_arcv2,  "EM",     FALSE, &arch_info_struct[6]),
-  ARC (bfd_mach_arc_arcv2,  "HS",     FALSE, NULL),
+  ARC (bfd_mach_arc_arc600, "A6"    , false, &arch_info_struct[1]),
+  ARC (bfd_mach_arc_arc601, "ARC601", false, &arch_info_struct[2]),
+  ARC (bfd_mach_arc_arc700, "ARC700", false, &arch_info_struct[3]),
+  ARC (bfd_mach_arc_arc700, "A7",     false, &arch_info_struct[4]),
+  ARC (bfd_mach_arc_arcv2,  "ARCv2",  false, &arch_info_struct[5]),
+  ARC (bfd_mach_arc_arcv2,  "EM",     false, &arch_info_struct[6]),
+  ARC (bfd_mach_arc_arcv2,  "HS",     false, NULL),
 };
 
 const bfd_arch_info_type bfd_arc_arch =
-  ARC (bfd_mach_arc_arc600, "ARC600", TRUE, &arch_info_struct[0]);
+  ARC (bfd_mach_arc_arc600, "ARC600", true, &arch_info_struct[0]);
 
 /* ARC-specific "compatible" function.  The general rule is that if A and B are
    compatible, then this function should return architecture that is more
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-arm.c ./bfd/cpu-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-arm.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-arm.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ARM processor
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
    Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -150,6 +150,9 @@ processors[] =
   { bfd_mach_arm_8,	  "cortex-a76"	    },
   { bfd_mach_arm_8,	  "cortex-a76ae"    },
   { bfd_mach_arm_8,	  "cortex-a77"	    },
+  { bfd_mach_arm_8,	  "cortex-a78"	    },
+  { bfd_mach_arm_8,	  "cortex-a78ae"    },
+  { bfd_mach_arm_8,	  "cortex-a78c"     },
   { bfd_mach_arm_6SM,	  "cortex-m0"	    },
   { bfd_mach_arm_6SM,	  "cortex-m0plus"   },
   { bfd_mach_arm_6SM,	  "cortex-m1"	    },
@@ -163,8 +166,11 @@ processors[] =
   { bfd_mach_arm_7,	  "cortex-r4f"	    },
   { bfd_mach_arm_7,	  "cortex-r5"	    },
   { bfd_mach_arm_8R,	  "cortex-r52"	    },
+  { bfd_mach_arm_8R,	  "cortex-r52plus"	    },
   { bfd_mach_arm_7,	  "cortex-r7"	    },
   { bfd_mach_arm_7,	  "cortex-r8"	    },
+  { bfd_mach_arm_8,	  "cortex-x1"	    },
+  { bfd_mach_arm_8,	  "cortex-x1c"	    },
   { bfd_mach_arm_4T,	  "ep9312"	    },
   { bfd_mach_arm_8,	  "exynos-m1"	    },
   { bfd_mach_arm_4,	  "fa526"	    },
@@ -188,20 +194,29 @@ processors[] =
   { bfd_mach_arm_XScale,  "xscale"	    },
   { bfd_mach_arm_8,	  "xgene1"	    },
   { bfd_mach_arm_8,	  "xgene2"	    },
-  { bfd_mach_arm_ep9312,  "ep9312"	    },
+  { bfd_mach_arm_9,	  "cortex-a710"	    },
   { bfd_mach_arm_iWMMXt,  "iwmmxt"	    },
   { bfd_mach_arm_iWMMXt2, "iwmmxt2"	    },
   { bfd_mach_arm_unknown, "arm_any"	    }
 };
 
-static bfd_boolean
+static bool
 scan (const struct bfd_arch_info *info, const char *string)
 {
   int  i;
 
   /* First test for an exact match.  */
   if (strcasecmp (string, info->printable_name) == 0)
-    return TRUE;
+    return true;
+
+  /* If there is a prefix of "arm:" then skip it.  */
+  const char * colon;
+  if ((colon = strchr (string, ':')) != NULL)
+    {
+      if (strncasecmp (string, "arm", colon - string) != 0)
+	return false;
+      string = colon + 1;
+    }
 
   /* Next check for a processor name instead of an Architecture name.  */
   for (i = sizeof (processors) / sizeof (processors[0]); i--;)
@@ -211,13 +226,13 @@ scan (const struct bfd_arch_info *info,
     }
 
   if (i != -1 && info->mach == processors [i].mach)
-    return TRUE;
+    return true;
 
   /* Finally check for the default architecture.  */
   if (strcasecmp (string, "arm") == 0)
     return info->the_default;
 
-  return FALSE;
+  return false;
 }
 
 #define N(number, print, default, next)  \
@@ -226,38 +241,38 @@ scan (const struct bfd_arch_info *info,
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (bfd_mach_arm_2,         "armv2",          FALSE, & arch_info_struct[1]),
-  N (bfd_mach_arm_2a,        "armv2a",         FALSE, & arch_info_struct[2]),
-  N (bfd_mach_arm_3,         "armv3",          FALSE, & arch_info_struct[3]),
-  N (bfd_mach_arm_3M,        "armv3m",         FALSE, & arch_info_struct[4]),
-  N (bfd_mach_arm_4,         "armv4",          FALSE, & arch_info_struct[5]),
-  N (bfd_mach_arm_4T,        "armv4t",         FALSE, & arch_info_struct[6]),
-  N (bfd_mach_arm_5,         "armv5",          FALSE, & arch_info_struct[7]),
-  N (bfd_mach_arm_5T,        "armv5t",         FALSE, & arch_info_struct[8]),
-  N (bfd_mach_arm_5TE,       "armv5te",        FALSE, & arch_info_struct[9]),
-  N (bfd_mach_arm_XScale,    "xscale",         FALSE, & arch_info_struct[10]),
-  N (bfd_mach_arm_ep9312,    "ep9312",         FALSE, & arch_info_struct[11]),
-  N (bfd_mach_arm_iWMMXt,    "iwmmxt",         FALSE, & arch_info_struct[12]),
-  N (bfd_mach_arm_iWMMXt2,   "iwmmxt2",        FALSE, & arch_info_struct[13]),
-  N (bfd_mach_arm_5TEJ,      "armv5tej",       FALSE, & arch_info_struct[14]),
-  N (bfd_mach_arm_6,         "armv6",          FALSE, & arch_info_struct[15]),
-  N (bfd_mach_arm_6KZ,       "armv6kz",        FALSE, & arch_info_struct[16]),
-  N (bfd_mach_arm_6T2,       "armv6t2",        FALSE, & arch_info_struct[17]),
-  N (bfd_mach_arm_6K,        "armv6k",         FALSE, & arch_info_struct[18]),
-  N (bfd_mach_arm_7,         "armv7",          FALSE, & arch_info_struct[19]),
-  N (bfd_mach_arm_6M,        "armv6-m",        FALSE, & arch_info_struct[20]),
-  N (bfd_mach_arm_6SM,       "armv6s-m",       FALSE, & arch_info_struct[21]),
-  N (bfd_mach_arm_7EM,       "armv7e-m",       FALSE, & arch_info_struct[22]),
-  N (bfd_mach_arm_8,         "armv8-a",        FALSE, & arch_info_struct[23]),
-  N (bfd_mach_arm_8R,        "armv8-r",        FALSE, & arch_info_struct[24]),
-  N (bfd_mach_arm_8M_BASE,   "armv8-m.base",   FALSE, & arch_info_struct[25]),
-  N (bfd_mach_arm_8M_MAIN,   "armv8-m.main",   FALSE, & arch_info_struct[26]),
-  N (bfd_mach_arm_8_1M_MAIN, "armv8.1-m.main", FALSE, & arch_info_struct[27]),
-  N (bfd_mach_arm_unknown,   "arm_any",        FALSE, NULL)
+  N (bfd_mach_arm_2,         "armv2",          false, & arch_info_struct[1]),
+  N (bfd_mach_arm_2a,        "armv2a",         false, & arch_info_struct[2]),
+  N (bfd_mach_arm_3,         "armv3",          false, & arch_info_struct[3]),
+  N (bfd_mach_arm_3M,        "armv3m",         false, & arch_info_struct[4]),
+  N (bfd_mach_arm_4,         "armv4",          false, & arch_info_struct[5]),
+  N (bfd_mach_arm_4T,        "armv4t",         false, & arch_info_struct[6]),
+  N (bfd_mach_arm_5,         "armv5",          false, & arch_info_struct[7]),
+  N (bfd_mach_arm_5T,        "armv5t",         false, & arch_info_struct[8]),
+  N (bfd_mach_arm_5TE,       "armv5te",        false, & arch_info_struct[9]),
+  N (bfd_mach_arm_XScale,    "xscale",         false, & arch_info_struct[10]),
+  N (bfd_mach_arm_iWMMXt,    "iwmmxt",         false, & arch_info_struct[11]),
+  N (bfd_mach_arm_iWMMXt2,   "iwmmxt2",        false, & arch_info_struct[12]),
+  N (bfd_mach_arm_5TEJ,      "armv5tej",       false, & arch_info_struct[13]),
+  N (bfd_mach_arm_6,         "armv6",          false, & arch_info_struct[14]),
+  N (bfd_mach_arm_6KZ,       "armv6kz",        false, & arch_info_struct[15]),
+  N (bfd_mach_arm_6T2,       "armv6t2",        false, & arch_info_struct[16]),
+  N (bfd_mach_arm_6K,        "armv6k",         false, & arch_info_struct[17]),
+  N (bfd_mach_arm_7,         "armv7",          false, & arch_info_struct[18]),
+  N (bfd_mach_arm_6M,        "armv6-m",        false, & arch_info_struct[19]),
+  N (bfd_mach_arm_6SM,       "armv6s-m",       false, & arch_info_struct[20]),
+  N (bfd_mach_arm_7EM,       "armv7e-m",       false, & arch_info_struct[21]),
+  N (bfd_mach_arm_8,         "armv8-a",        false, & arch_info_struct[22]),
+  N (bfd_mach_arm_8R,        "armv8-r",        false, & arch_info_struct[23]),
+  N (bfd_mach_arm_8M_BASE,   "armv8-m.base",   false, & arch_info_struct[24]),
+  N (bfd_mach_arm_8M_MAIN,   "armv8-m.main",   false, & arch_info_struct[25]),
+  N (bfd_mach_arm_8_1M_MAIN, "armv8.1-m.main", false, & arch_info_struct[26]),
+  N (bfd_mach_arm_9,         "armv9-a",        false, & arch_info_struct[27]),
+  N (bfd_mach_arm_unknown,   "arm_any",        false, NULL)
 };
 
 const bfd_arch_info_type bfd_arm_arch =
-  N (0, "arm", TRUE, & arch_info_struct[0]);
+  N (0, "arm", true, & arch_info_struct[0]);
 
 /* Support functions used by both the COFF and ELF versions of the ARM port.  */
 
@@ -266,7 +281,7 @@ const bfd_arch_info_type bfd_arm_arch =
    different possible ARM architecture variants.
    Returns TRUE if they were merged successfully or FALSE otherwise.  */
 
-bfd_boolean
+bool
 bfd_arm_merge_machines (bfd *ibfd, bfd *obfd)
 {
   unsigned int in  = bfd_get_mach (ibfd);
@@ -289,41 +304,13 @@ bfd_arm_merge_machines (bfd *ibfd, bfd *
 
   /* Otherwise the general principle that a earlier architecture can be
      linked with a later architecture to produce a binary that will execute
-     on the later architecture.
-
-     We fail however if we attempt to link a Cirrus EP9312 binary with an
-     Intel XScale binary, since these architecture have co-processors which
-     will not both be present on the same physical hardware.  */
-  else if (in == bfd_mach_arm_ep9312
-	   && (out == bfd_mach_arm_XScale
-	       || out == bfd_mach_arm_iWMMXt
-	       || out == bfd_mach_arm_iWMMXt2))
-    {
-      /* xgettext: c-format */
-      _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;
-    }
-  else if (out == bfd_mach_arm_ep9312
-	   && (in == bfd_mach_arm_XScale
-	       || in == bfd_mach_arm_iWMMXt
-	       || in == bfd_mach_arm_iWMMXt2))
-    {
-      /* xgettext: c-format */
-      _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;
-    }
+     on the later architecture.  */
   else if (in > out)
     bfd_set_arch_mach (obfd, bfd_arch_arm, in);
   /* else
      Nothing to do.  */
 
-  return TRUE;
+  return true;
 }
 
 typedef struct
@@ -334,7 +321,7 @@ typedef struct
   char		name[1];	/* Start of the name+desc data.  */
 } arm_Note;
 
-static bfd_boolean
+static bool
 arm_check_note (bfd *abfd,
 		bfd_byte *buffer,
 		bfd_size_type buffer_size,
@@ -347,7 +334,7 @@ arm_check_note (bfd *abfd,
   char *	descr;
 
   if (buffer_size < offsetof (arm_Note, name))
-    return FALSE;
+    return false;
 
   /* We have to extract the values this way to allow for a
      host whose endian-ness is different from the target.  */
@@ -358,20 +345,20 @@ arm_check_note (bfd *abfd,
 
   /* Check for buffer overflow.  */
   if (namesz + descsz + offsetof (arm_Note, name) > buffer_size)
-    return FALSE;
+    return false;
 
   if (expected_name == NULL)
     {
       if (namesz != 0)
-	return FALSE;
+	return false;
     }
   else
     {
       if (namesz != ((strlen (expected_name) + 1 + 3) & ~3))
-	return FALSE;
+	return false;
 
       if (strcmp (descr, expected_name) != 0)
-	return FALSE;
+	return false;
 
       descr += (namesz + 3) & ~3;
     }
@@ -382,12 +369,12 @@ arm_check_note (bfd *abfd,
   if (description_return != NULL)
     * description_return = descr;
 
-  return TRUE;
+  return true;
 }
 
 #define NOTE_ARCH_STRING	"arch: "
 
-bfd_boolean
+bool
 bfd_arm_update_notes (bfd *abfd, const char *note_section)
 {
   asection *	 arm_arch_section;
@@ -401,12 +388,13 @@ bfd_arm_update_notes (bfd *abfd, const c
      different.  */
   arm_arch_section = bfd_get_section_by_name (abfd, note_section);
 
-  if (arm_arch_section == NULL)
-    return TRUE;
+  if (arm_arch_section == NULL
+      || (arm_arch_section->flags & SEC_HAS_CONTENTS) == 0)
+    return true;
 
   buffer_size = arm_arch_section->size;
   if (buffer_size == 0)
-    return FALSE;
+    return false;
 
   if (!bfd_malloc_and_get_section (abfd, arm_arch_section, &buffer))
     goto FAIL;
@@ -432,7 +420,6 @@ bfd_arm_update_notes (bfd *abfd, const c
     case bfd_mach_arm_5T:      expected = "armv5t"; break;
     case bfd_mach_arm_5TE:     expected = "armv5te"; break;
     case bfd_mach_arm_XScale:  expected = "XScale"; break;
-    case bfd_mach_arm_ep9312:  expected = "ep9312"; break;
     case bfd_mach_arm_iWMMXt:  expected = "iWMMXt"; break;
     case bfd_mach_arm_iWMMXt2: expected = "iWMMXt2"; break;
     }
@@ -455,12 +442,11 @@ bfd_arm_update_notes (bfd *abfd, const c
     }
 
   free (buffer);
-  return TRUE;
+  return true;
 
  FAIL:
-  if (buffer != NULL)
-    free (buffer);
-  return FALSE;
+  free (buffer);
+  return false;
 }
 
 
@@ -484,7 +470,8 @@ architectures[] =
   { "armv5t",  bfd_mach_arm_5T },
   { "armv5te", bfd_mach_arm_5TE },
   { "XScale",  bfd_mach_arm_XScale },
-  { "ep9312",  bfd_mach_arm_ep9312 },
+  /* Maverick extensions have been dropped, so treat this as Armv4T.  */
+  { "ep9312",  bfd_mach_arm_4T },
   { "iWMMXt",  bfd_mach_arm_iWMMXt },
   { "iWMMXt2", bfd_mach_arm_iWMMXt2 },
   { "arm_any", bfd_mach_arm_unknown }
@@ -505,7 +492,8 @@ bfd_arm_get_mach_from_notes (bfd *abfd,
      different.  */
   arm_arch_section = bfd_get_section_by_name (abfd, note_section);
 
-  if (arm_arch_section == NULL)
+  if (arm_arch_section == NULL
+      || (arm_arch_section->flags & SEC_HAS_CONTENTS) == 0)
     return bfd_mach_arm_unknown;
 
   buffer_size = arm_arch_section->size;
@@ -528,19 +516,18 @@ bfd_arm_get_mach_from_notes (bfd *abfd,
       }
 
  FAIL:
-  if (buffer != NULL)
-    free (buffer);
+  free (buffer);
   return bfd_mach_arm_unknown;
 }
 
-bfd_boolean
+bool
 bfd_is_arm_special_symbol_name (const char * name, int type)
 {
   /* The ARM compiler outputs several obsolete forms.  Recognize them
      in addition to the standard $a, $t and $d.  We are somewhat loose
      in what we accept here, since the full set is not documented.  */
   if (!name || name[0] != '$')
-    return FALSE;
+    return false;
   if (name[1] == 'a' || name[1] == 't' || name[1] == 'd')
     type &= BFD_ARM_SPECIAL_SYM_TYPE_MAP;
   else if (name[1] == 'm' || name[1] == 'f' || name[1] == 'p')
@@ -548,7 +535,7 @@ bfd_is_arm_special_symbol_name (const ch
   else if (name[1] >= 'a' && name[1] <= 'z')
     type &= BFD_ARM_SPECIAL_SYM_TYPE_OTHER;
   else
-    return FALSE;
+    return false;
 
   return (type != 0 && (name[2] == 0 || name[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.20200303/bfd/cpu-arm.h ./bfd/cpu-arm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-arm.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-arm.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ARM processor
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -19,10 +19,10 @@
    MA 02110-1301, USA.  */
 
 /* ARM Note section processing.  */
-extern bfd_boolean bfd_arm_merge_machines
+extern bool bfd_arm_merge_machines
   (bfd *, bfd *);
 
-extern bfd_boolean bfd_arm_update_notes
+extern bool bfd_arm_update_notes
   (bfd *, const char *);
 
 extern unsigned int bfd_arm_get_mach_from_notes
@@ -34,6 +34,6 @@ extern unsigned int bfd_arm_get_mach_fro
 #define BFD_ARM_SPECIAL_SYM_TYPE_OTHER	(1 << 2)
 #define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
 
-extern bfd_boolean bfd_is_arm_special_symbol_name
+extern bool bfd_is_arm_special_symbol_name
   (const char *, 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.20200303/bfd/cpu-avr.c ./bfd/cpu-avr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-avr.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-avr.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Denis Chertykov <denisc@overta.ru>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -101,64 +101,64 @@ compatible (const bfd_arch_info_type * a
 static const bfd_arch_info_type arch_info_struct[] =
 {
   /* Assembler only.  */
-  N (16, bfd_mach_avr1, "avr:1", FALSE, & arch_info_struct[1]),
+  N (16, bfd_mach_avr1, "avr:1", false, & arch_info_struct[1]),
 
   /* Classic, <= 8K.  */
-  N (16, bfd_mach_avr2, "avr:2", FALSE, & arch_info_struct[2]),
+  N (16, bfd_mach_avr2, "avr:2", false, & arch_info_struct[2]),
 
   /* Classic + MOVW, <= 8K.  */
-  N (16, bfd_mach_avr25, "avr:25", FALSE, & arch_info_struct[3]),
+  N (16, bfd_mach_avr25, "avr:25", false, & arch_info_struct[3]),
 
   /* Classic, > 8K, <= 64K.  */
   /* TODO:  addr_bits should be 16, but set to 22 for some following
      version of GCC (from 4.3) for backward compatibility.  */
-  N (22, bfd_mach_avr3, "avr:3", FALSE, & arch_info_struct[4]),
+  N (22, bfd_mach_avr3, "avr:3", false, & arch_info_struct[4]),
 
   /* Classic, == 128K.  */
-  N (22, bfd_mach_avr31, "avr:31", FALSE, & arch_info_struct[5]),
+  N (22, bfd_mach_avr31, "avr:31", false, & arch_info_struct[5]),
 
   /* Classic + MOVW + JMP/CALL, > 8K, <= 64K. */
-  N (16, bfd_mach_avr35, "avr:35", FALSE, & arch_info_struct[6]),
+  N (16, bfd_mach_avr35, "avr:35", false, & arch_info_struct[6]),
 
   /* Enhanced, <= 8K.  */
-  N (16, bfd_mach_avr4, "avr:4", FALSE, & arch_info_struct[7]),
+  N (16, bfd_mach_avr4, "avr:4", false, & arch_info_struct[7]),
 
   /* Enhanced, > 8K, <= 64K.  */
   /* TODO:  addr_bits should be 16, but set to 22 for some following
      version of GCC (from 4.3) for backward compatibility.  */
-  N (22, bfd_mach_avr5, "avr:5", FALSE, & arch_info_struct[8]),
+  N (22, bfd_mach_avr5, "avr:5", false, & arch_info_struct[8]),
 
   /* Enhanced, == 128K.  */
-  N (22, bfd_mach_avr51, "avr:51", FALSE, & arch_info_struct[9]),
+  N (22, bfd_mach_avr51, "avr:51", false, & arch_info_struct[9]),
 
   /* 3-Byte PC.  */
-  N (22, bfd_mach_avr6, "avr:6", FALSE, & arch_info_struct[10]),
+  N (22, bfd_mach_avr6, "avr:6", false, & arch_info_struct[10]),
 
   /* Tiny core (AVR Tiny).  */
-  N (16, bfd_mach_avrtiny, "avr:100", FALSE, & arch_info_struct[11]),
+  N (16, bfd_mach_avrtiny, "avr:100", false, & arch_info_struct[11]),
 
   /* Xmega 1.  */
-  N (24, bfd_mach_avrxmega1, "avr:101", FALSE, & arch_info_struct[12]),
+  N (24, bfd_mach_avrxmega1, "avr:101", false, & arch_info_struct[12]),
 
   /* Xmega 2.  */
-  N (24, bfd_mach_avrxmega2, "avr:102", FALSE, & arch_info_struct[13]),
+  N (24, bfd_mach_avrxmega2, "avr:102", false, & arch_info_struct[13]),
 
   /* Xmega 3.  */
-  N (24, bfd_mach_avrxmega3, "avr:103", FALSE, & arch_info_struct[14]),
+  N (24, bfd_mach_avrxmega3, "avr:103", false, & arch_info_struct[14]),
 
   /* Xmega 4.  */
-  N (24, bfd_mach_avrxmega4, "avr:104", FALSE, & arch_info_struct[15]),
+  N (24, bfd_mach_avrxmega4, "avr:104", false, & arch_info_struct[15]),
 
   /* Xmega 5.  */
-  N (24, bfd_mach_avrxmega5, "avr:105", FALSE, & arch_info_struct[16]),
+  N (24, bfd_mach_avrxmega5, "avr:105", false, & arch_info_struct[16]),
 
   /* Xmega 6.  */
-  N (24, bfd_mach_avrxmega6, "avr:106", FALSE, & arch_info_struct[17]),
+  N (24, bfd_mach_avrxmega6, "avr:106", false, & arch_info_struct[17]),
 
   /* Xmega 7.  */
-  N (24, bfd_mach_avrxmega7, "avr:107", FALSE, NULL)
+  N (24, bfd_mach_avrxmega7, "avr:107", false, NULL)
 
 };
 
 const bfd_arch_info_type bfd_avr_arch =
-  N (16, bfd_mach_avr2, "avr", TRUE, & arch_info_struct[0]);
+  N (16, bfd_mach_avr2, "avr", true, & arch_info_struct[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.20200303/bfd/cpu-bfin.c ./bfd/cpu-bfin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-bfin.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-bfin.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD Support for the ADI Blackfin processor.
 
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_bfin_arch =
     "bfin",		/* Arch name.  */
     "bfin",		/* Arch printable name.  */
     4,			/* Section align power.  */
-    TRUE,		/* The one and only.  */
+    true,		/* The one and only.  */
     bfd_default_compatible,
     bfd_default_scan,
     bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-bpf.c ./bfd/cpu-bpf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-bpf.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-bpf.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the BPF processor.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 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.  */
@@ -33,10 +53,10 @@ const bfd_arch_info_type bfd_bpf_arch =
   "bpf",			/* Architecture name.  */
   "bpf",			/* Machine name.  */
   3,				/* Section align power.  */
-  TRUE,				/* The default ?  */
+  true,				/* 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.  */
+  &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.20200303/bfd/cpu-cr16.c ./bfd/cpu-cr16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-cr16.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-cr16.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the CR16 processor.
-   Copyright (C) 2007-2019 Free Software Foundation, Inc.
+   Copyright (C) 2007-2025 Free Software Foundation, Inc.
    Written by M R Swami Reddy
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -25,18 +25,18 @@
 
 const bfd_arch_info_type bfd_cr16_arch =
 {
- 16,		      /* Bits in a word.  */
- 32,		      /* Bits in an address.  */
- 8,		      /* Bits in a byte.  */
- bfd_arch_cr16,       /* Architecture number.  */
- bfd_mach_cr16,
- "cr16",	      /* Arch name.  */
- "cr16",	      /* Printable name.  */
- 1,		      /* Section alignment power.  */
- TRUE,	      	      /* The one and only.  */
- bfd_default_compatible,
- bfd_default_scan,
- bfd_arch_default_fill,
- NULL,
- 0 /* Maximum offset of a reloc from the start of an insn.  */
+  16,			/* Bits in a word.  */
+  32,			/* Bits in an address.  */
+  8,			/* Bits in a byte.  */
+  bfd_arch_cr16,	/* Architecture number.  */
+  bfd_mach_cr16,
+  "cr16",		/* Arch name.  */
+  "cr16",		/* Printable name.  */
+  1,			/* Section alignment power.  */
+  true,			/* The one and only.  */
+  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.20200303/bfd/cpu-cris.c ./bfd/cpu-cris.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-cris.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-cris.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Axis CRIS architecture.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
    Contributed by Axis Communications AB.
    Written by Hans-Peter Nilsson.
 
@@ -66,7 +66,7 @@ get_compatible (const bfd_arch_info_type
 }
 
 #define N(NUMBER, PRINT, NEXT)  \
- { 32, 32, 8, bfd_arch_cris, NUMBER, "cris", PRINT, 1, FALSE, \
+ { 32, 32, 8, bfd_arch_cris, NUMBER, "cris", PRINT, 1, false, \
      get_compatible, bfd_default_scan, bfd_arch_default_fill, NEXT, 0 }
 
 static const bfd_arch_info_type bfd_cris_arch_compat_v10_v32 =
@@ -90,7 +90,7 @@ const bfd_arch_info_type bfd_cris_arch =
   "cris",			/* The printable name is the same.  */
   1,				/* Section alignment power; each section
 				   is aligned to (only) 2^1 bytes.  */
-  TRUE,				/* This is the default "machine".  */
+  true,				/* This is the default "machine".  */
   get_compatible,		/* A function for testing
 				   "machine" compatibility of two
 				   bfd_arch_info_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.20200303/bfd/cpu-crx.c ./bfd/cpu-crx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-crx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-crx.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the CRX processor.
-   Copyright (C) 2004-2019 Free Software Foundation, Inc.
+   Copyright (C) 2004-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_crx_arch =
   "crx",	/* Arch name.  */
   "crx",	/* Printable name.  */
   1,		/* Section alignment power.  */
-  TRUE,		/* The one and only.  */
+  true,		/* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-csky.c ./bfd/cpu-csky.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-csky.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-csky.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for C-SKY processors.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
    Contributed by C-SKY Microsystems and Mentor Graphics.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -44,17 +44,18 @@
 static const bfd_arch_info_type arch_info_struct[] =
 {
   /* ABI v1 processors. */
-  N (bfd_mach_ck510,   "csky:ck510",    FALSE, & arch_info_struct[1]),
-  N (bfd_mach_ck610,   "csky:ck610",    FALSE, & arch_info_struct[2]),
+  N (bfd_mach_ck510,   "csky:ck510",    false, & arch_info_struct[1]),
+  N (bfd_mach_ck610,   "csky:ck610",    false, & arch_info_struct[2]),
 
   /* ABI v2 processors.  */
-  N (bfd_mach_ck801,   "csky:ck801",    FALSE, & arch_info_struct[3]),
-  N (bfd_mach_ck802,   "csky:ck802",    FALSE, & arch_info_struct[4]),
-  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_ck_unknown, "csky:any",   FALSE, NULL)
+  N (bfd_mach_ck801,   "csky:ck801",    false, & arch_info_struct[3]),
+  N (bfd_mach_ck802,   "csky:ck802",    false, & arch_info_struct[4]),
+  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)
 };
 
 const bfd_arch_info_type bfd_csky_arch =
-  N (0, "csky", TRUE, & arch_info_struct[0]);
+  N (0, "csky", true, & arch_info_struct[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.20200303/bfd/cpu-d10v.c ./bfd/cpu-d10v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-d10v.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-d10v.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the D10V processor
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -42,10 +42,10 @@
   }
 
 static const bfd_arch_info_type d10v_ts3_info =
-  N (bfd_mach_d10v_ts3, "d10v:ts3", FALSE, NULL);
+  N (bfd_mach_d10v_ts3, "d10v:ts3", false, NULL);
 
 static const bfd_arch_info_type d10v_ts2_info =
-  N (bfd_mach_d10v_ts2, "d10v:ts2", FALSE, & d10v_ts3_info);
+  N (bfd_mach_d10v_ts2, "d10v:ts2", false, & d10v_ts3_info);
 
 const bfd_arch_info_type bfd_d10v_arch =
-  N (bfd_mach_d10v, "d10v", TRUE, & d10v_ts2_info);
+  N (bfd_mach_d10v, "d10v", true, & d10v_ts2_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.20200303/bfd/cpu-d30v.c ./bfd/cpu-d30v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-d30v.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-d30v.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Mitsubishi D30V processor
-   Copyright (C) 1997-2019 Free Software Foundation, Inc.
+   Copyright (C) 1997-2025 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_d30v_arch =
   "d30v",
   "d30v",
   4, /* Section alignment power.  */
-  TRUE,
+  true,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-dlx.c ./bfd/cpu-dlx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-dlx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-dlx.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the DLX Microprocessor architecture.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
    Hacked by Kuang Hwa Lin <kuang@sbcglobal.net>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_dlx_arch =
   "dlx",
   "dlx",
   4,
-  TRUE, /* The one and only.  */
+  true, /* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-epiphany.c ./bfd/cpu-epiphany.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-epiphany.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-epiphany.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Adapteva EPIPHANY processor.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by Embecosm on behalf of Adapteva, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -42,8 +42,7 @@
   }
 
 const bfd_arch_info_type bfd_epiphany16_arch =
-  N (bfd_mach_epiphany16, "epiphany16", 1, FALSE, NULL);
+  N (bfd_mach_epiphany16, "epiphany16", 1, false, NULL);
 
 const bfd_arch_info_type bfd_epiphany_arch =
-  N (bfd_mach_epiphany32, "epiphany32", 2, TRUE, & bfd_epiphany16_arch);
-
+  N (bfd_mach_epiphany32, "epiphany32", 2, true, &bfd_epiphany16_arch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-fr30.c ./bfd/cpu-fr30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-fr30.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-fr30.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the FR30 processor.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_fr30_arch =
   "fr30",			/* Architecture name.  */
   "fr30",			/* Printable name.  */
   4,				/* Section align power.  */
-  TRUE,				/* The default ?  */
+  true,				/* The default ?  */
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-frv.c ./bfd/cpu-frv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-frv.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-frv.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the FRV processor.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -41,26 +41,26 @@
 }
 
 static const bfd_arch_info_type arch_info_300
-  = FRV_ARCH (bfd_mach_fr300,   "fr300",   FALSE, (bfd_arch_info_type *)0);
+  = FRV_ARCH (bfd_mach_fr300,   "fr300",   false, (bfd_arch_info_type *)0);
 
 static const bfd_arch_info_type arch_info_400
-  = FRV_ARCH (bfd_mach_fr400, "fr400", FALSE, &arch_info_300);
+  = FRV_ARCH (bfd_mach_fr400, "fr400", false, &arch_info_300);
 
 static const bfd_arch_info_type arch_info_450
-  = FRV_ARCH (bfd_mach_fr450, "fr450", FALSE, &arch_info_400);
+  = FRV_ARCH (bfd_mach_fr450, "fr450", false, &arch_info_400);
 
 static const bfd_arch_info_type arch_info_500
-  = FRV_ARCH (bfd_mach_fr500, "fr500", FALSE, &arch_info_450);
+  = FRV_ARCH (bfd_mach_fr500, "fr500", false, &arch_info_450);
 
 static const bfd_arch_info_type arch_info_550
-  = FRV_ARCH (bfd_mach_fr550, "fr550", FALSE, &arch_info_500);
+  = FRV_ARCH (bfd_mach_fr550, "fr550", false, &arch_info_500);
 
 static const bfd_arch_info_type arch_info_simple
-  = FRV_ARCH (bfd_mach_frvsimple, "simple", FALSE, &arch_info_550);
+  = FRV_ARCH (bfd_mach_frvsimple, "simple", false, &arch_info_550);
 
 static const bfd_arch_info_type arch_info_tomcat
-  = FRV_ARCH (bfd_mach_frvtomcat, "tomcat", FALSE, &arch_info_simple);
+  = FRV_ARCH (bfd_mach_frvtomcat, "tomcat", false, &arch_info_simple);
 
 const bfd_arch_info_type bfd_frv_arch
-  = FRV_ARCH (bfd_mach_frv, "frv", TRUE, &arch_info_tomcat);
+  = FRV_ARCH (bfd_mach_frv, "frv", true, &arch_info_tomcat);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-ft32.c ./bfd/cpu-ft32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-ft32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-ft32.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ft32 processor.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2025 Free Software Foundation, Inc.
    Written by FTDI (support@ftdichip.com)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -43,10 +43,9 @@
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (bfd_mach_ft32, "ft32", FALSE, &arch_info_struct[1]),
-  N (bfd_mach_ft32b, "ft32b", FALSE, NULL)
+  N (bfd_mach_ft32b, "ft32b", false, NULL)
 };
 
 const bfd_arch_info_type bfd_ft32_arch =
-  N (bfd_mach_ft32, "ft32", TRUE, arch_info_struct);
+  N (bfd_mach_ft32, "ft32", true, arch_info_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.20200303/bfd/cpu-h8300.c ./bfd/cpu-h8300.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-h8300.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-h8300.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -24,28 +24,28 @@
 #include "libbfd.h"
 #include "cpu-h8300.h"
 
-static bfd_boolean
+static bool
 h8300_scan (const struct bfd_arch_info *info, const char *string)
 {
   if (*string != 'h' && *string != 'H')
-    return FALSE;
+    return false;
 
   string++;
   if (*string != '8')
-    return FALSE;
+    return false;
 
   string++;
   if (*string == '/')
     string++;
 
   if (*string != '3')
-    return FALSE;
+    return false;
   string++;
   if (*string != '0')
-    return FALSE;
+    return false;
   string++;
   if (*string != '0')
-    return FALSE;
+    return false;
   string++;
   if (*string == '-')
     string++;
@@ -119,25 +119,25 @@ compatible (const bfd_arch_info_type *in
     compatible, h8300_scan, bfd_arch_default_fill, next, 0 }
 
 static const bfd_arch_info_type h8300sxn_info_struct =
-  N (32, 16, bfd_mach_h8300sxn, "h8300sxn", "h8300sxn", FALSE, NULL);
+  N (32, 16, bfd_mach_h8300sxn, "h8300sxn", "h8300sxn", false, NULL);
 
 static const bfd_arch_info_type h8300sx_info_struct =
-  N (32, 32, bfd_mach_h8300sx, "h8300sx", "h8300sx", FALSE, &h8300sxn_info_struct);
+  N (32, 32, bfd_mach_h8300sx, "h8300sx", "h8300sx", false, &h8300sxn_info_struct);
 
 static const bfd_arch_info_type h8300sn_info_struct =
-  N (32, 16, bfd_mach_h8300sn, "h8300sn", "h8300sn", FALSE, &h8300sx_info_struct);
+  N (32, 16, bfd_mach_h8300sn, "h8300sn", "h8300sn", false, &h8300sx_info_struct);
 
 static const bfd_arch_info_type h8300hn_info_struct =
-  N (32, 16, bfd_mach_h8300hn, "h8300hn", "h8300hn", FALSE, &h8300sn_info_struct);
+  N (32, 16, bfd_mach_h8300hn, "h8300hn", "h8300hn", false, &h8300sn_info_struct);
 
 static const bfd_arch_info_type h8300s_info_struct =
-  N (32, 32, bfd_mach_h8300s, "h8300s", "h8300s", FALSE, & h8300hn_info_struct);
+  N (32, 32, bfd_mach_h8300s, "h8300s", "h8300s", false, & h8300hn_info_struct);
 
 static const bfd_arch_info_type h8300h_info_struct =
-  N (32, 32, bfd_mach_h8300h, "h8300h", "h8300h", FALSE, &h8300s_info_struct);
+  N (32, 32, bfd_mach_h8300h, "h8300h", "h8300h", false, &h8300s_info_struct);
 
 const bfd_arch_info_type bfd_h8300_arch =
-  N (16, 16, bfd_mach_h8300, "h8300", "h8300", TRUE, &h8300h_info_struct);
+  N (16, 16, bfd_mach_h8300, "h8300", "h8300", true, &h8300h_info_struct);
 
 /* Pad the given address to 32 bits, converting 16-bit and 24-bit
    addresses into the values they would have had on a h8s 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.20200303/bfd/cpu-h8300.h ./bfd/cpu-h8300.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-h8300.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-h8300.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* H8/300 functions.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 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.20200303/bfd/cpu-hppa.c ./bfd/cpu-hppa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-hppa.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-hppa.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -42,15 +42,15 @@
 
 
 static const bfd_arch_info_type bfd_hppa10_arch =
-  N (32, bfd_mach_hppa10, "hppa1.0", TRUE, NULL);
+  N (32, bfd_mach_hppa10, "hppa1.0", true, NULL);
 
 /* PA2.0 in narrow mode.  */
 static const bfd_arch_info_type bfd_hppa20_arch =
-  N (32, bfd_mach_hppa20, "hppa2.0", FALSE, &bfd_hppa10_arch);
+  N (32, bfd_mach_hppa20, "hppa2.0", false, &bfd_hppa10_arch);
 
 /* PA2.0 in wide mode.  */
 static const bfd_arch_info_type bfd_hppa20w_arch =
-  N (64, bfd_mach_hppa20w, "hppa2.0w", FALSE, &bfd_hppa20_arch);
+  N (64, bfd_mach_hppa20w, "hppa2.0w", false, &bfd_hppa20_arch);
 
 const bfd_arch_info_type bfd_hppa_arch =
-  N (32, bfd_mach_hppa11, "hppa1.1", FALSE, &bfd_hppa20w_arch);
+  N (32, bfd_mach_hppa11, "hppa1.1", false, &bfd_hppa20w_arch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-i386.c ./bfd/cpu-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-i386.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-i386.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Intel 386 architecture.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -23,8 +23,8 @@
 #include "libbfd.h"
 #include "libiberty.h"
 
-extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
-					    bfd_boolean);
+extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bool,
+					    bool);
 
 static const bfd_arch_info_type *
 bfd_i386_compatible (const bfd_arch_info_type *a,
@@ -44,8 +44,8 @@ bfd_i386_compatible (const bfd_arch_info
    multi byte nop instructions if LONG_NOP is TRUE.  */
 
 static void *
-bfd_arch_i386_fill (bfd_size_type count, bfd_boolean code,
-		    bfd_boolean long_nop)
+bfd_arch_i386_fill (bfd_size_type count, bool code,
+		    bool long_nop)
 {
   /* nop */
   static const char nop_1[] = { 0x90 };
@@ -97,37 +97,24 @@ bfd_arch_i386_fill (bfd_size_type count,
   return fill;
 }
 
-/* Fill the buffer with zero or short nop instruction if CODE is TRUE.  */
+/* Fill the buffer with zero or short nop instruction if CODE is true.  */
 
 void *
 bfd_arch_i386_short_nop_fill (bfd_size_type count,
-			      bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
-			      bfd_boolean code)
+			      bool is_bigendian ATTRIBUTE_UNUSED,
+			      bool code)
 {
-  return bfd_arch_i386_fill (count, code, FALSE);
+  return bfd_arch_i386_fill (count, code, false);
 }
 
 /* Fill the buffer with zero or long nop instruction if CODE is TRUE.  */
 
 static void *
 bfd_arch_i386_long_nop_fill (bfd_size_type count,
-			     bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
-			     bfd_boolean code)
+			     bool is_bigendian ATTRIBUTE_UNUSED,
+			     bool code)
 {
-  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;
+  return bfd_arch_i386_fill (count, code, true);
 }
 
 #define N(BITS, MACH, NAME, PRINT, DEF, FILL, NEXT)	\
@@ -148,44 +135,31 @@ 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",
-     FALSE, bfd_arch_i386_long_nop_fill, &bfd_x64_32_arch_intel_syntax);
+     false, bfd_arch_i386_long_nop_fill, &bfd_x64_32_arch_intel_syntax);
 
 static const bfd_arch_info_type bfd_i386_arch_intel_syntax =
   N (32, bfd_mach_i386_i386_intel_syntax, "i386:intel", "i386:intel",
-     TRUE, bfd_arch_i386_short_nop_fill, &bfd_x86_64_arch_intel_syntax);
+     true, bfd_arch_i386_short_nop_fill, &bfd_x86_64_arch_intel_syntax);
 
 
 static const bfd_arch_info_type i8086_arch =
   N (32, bfd_mach_i386_i8086, "i8086", "i8086",
-     FALSE, bfd_arch_i386_short_nop_fill, &bfd_i386_arch_intel_syntax);
+     false, bfd_arch_i386_short_nop_fill, &bfd_i386_arch_intel_syntax);
 
 static const bfd_arch_info_type bfd_x64_32_arch =
   N (64, bfd_mach_x64_32, "i386", "i386:x64-32",
-     FALSE, bfd_arch_i386_long_nop_fill, &i8086_arch);
+     false, bfd_arch_i386_long_nop_fill, &i8086_arch);
 
 static const bfd_arch_info_type bfd_x86_64_arch =
   N (64, bfd_mach_x86_64, "i386", "i386:x86-64",
-     FALSE, bfd_arch_i386_long_nop_fill, &bfd_x64_32_arch);
+     false, bfd_arch_i386_long_nop_fill, &bfd_x64_32_arch);
 
 const bfd_arch_info_type bfd_i386_arch =
   N (32, bfd_mach_i386_i386, "i386", "i386",
-     TRUE, bfd_arch_i386_short_nop_fill, &bfd_x86_64_arch);
+     true, bfd_arch_i386_short_nop_fill, &bfd_x86_64_arch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-ia64.c ./bfd/cpu-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-ia64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-ia64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ia64 architecture.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -42,9 +42,9 @@
   }
 
 const bfd_arch_info_type bfd_ia64_elf32_arch =
-  N (32, bfd_mach_ia64_elf32, "ia64-elf32", FALSE, NULL);
+  N (32, bfd_mach_ia64_elf32, "ia64-elf32", false, NULL);
 
 const bfd_arch_info_type bfd_ia64_arch =
-  N (64, bfd_mach_ia64_elf64, "ia64-elf64", TRUE, &bfd_ia64_elf32_arch);
+  N (64, bfd_mach_ia64_elf64, "ia64-elf64", true, &bfd_ia64_elf32_arch);
 
 #include "cpu-ia64-opc.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.20200303/bfd/cpu-ia64-opc.c ./bfd/cpu-ia64-opc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-ia64-opc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-ia64-opc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2025 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -99,14 +99,14 @@ ins_immu (const struct ia64_operand *sel
 static const char*
 ext_immu (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
 {
-  BFD_HOST_U_64_BIT value = 0;
+  uint64_t value = 0;
   int i, bits = 0, total = 0;
 
   for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
     {
       bits = self->field[i].bits;
       value |= ((code >> self->field[i].shift)
-		& ((((BFD_HOST_U_64_BIT) 1) << bits) - 1)) << total;
+		& (((uint64_t) 1 << bits) - 1)) << total;
       total += bits;
     }
   *valuep = value;
@@ -161,7 +161,7 @@ static const char*
 ins_imms_scaled (const struct ia64_operand *self, ia64_insn value,
 		 ia64_insn *code, int scale)
 {
-  BFD_HOST_64_BIT svalue = value, sign_bit = 0;
+  int64_t svalue = value, sign_bit = 0;
   ia64_insn new_insn = 0;
   int i;
 
@@ -186,17 +186,17 @@ ext_imms_scaled (const struct ia64_opera
 		 ia64_insn *valuep, int scale)
 {
   int i, bits = 0, total = 0;
-  BFD_HOST_U_64_BIT val = 0, sign;
+  uint64_t val = 0, sign;
 
   for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
     {
       bits = self->field[i].bits;
       val |= ((code >> self->field[i].shift)
-	      & ((((BFD_HOST_U_64_BIT) 1) << bits) - 1)) << total;
+	      & (((uint64_t) 1 << bits) - 1)) << total;
       total += bits;
     }
   /* sign extend: */
-  sign = (BFD_HOST_U_64_BIT) 1 << (total - 1);
+  sign = (uint64_t) 1 << (total - 1);
   val = (val ^ sign) - sign;
 
   *valuep = val << scale;
@@ -312,7 +312,7 @@ static const char*
 ins_cnt (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
 {
   --value;
-  if (value >= ((BFD_HOST_U_64_BIT) 1) << self->field[0].bits)
+  if (value >= (uint64_t) 1 << self->field[0].bits)
     return "count out of range";
 
   *code |= value << self->field[0].shift;
@@ -323,7 +323,7 @@ static const char*
 ext_cnt (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
 {
   *valuep = ((code >> self->field[0].shift)
-	     & ((((BFD_HOST_U_64_BIT) 1) << self->field[0].bits) - 1)) + 1;
+	     & (((uint64_t) 1 << self->field[0].bits) - 1)) + 1;
   return 0;
 }
 
@@ -421,8 +421,8 @@ ext_strd5b (const struct ia64_operand *s
 static const char*
 ins_inc3 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
 {
-  BFD_HOST_64_BIT val = value;
-  BFD_HOST_U_64_BIT sign = 0;
+  int64_t val = value;
+  uint64_t sign = 0;
 
   if (val < 0)
     {
@@ -444,7 +444,7 @@ ins_inc3 (const struct ia64_operand *sel
 static const char*
 ext_inc3 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
 {
-  BFD_HOST_64_BIT val;
+  int64_t val;
   int negate;
 
   val = (code >> self->field[0].shift) & 0x7;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-iamcu.c ./bfd/cpu-iamcu.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-iamcu.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-iamcu.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Intel MCU architecture.
-   Copyright (C) 2015-2019 Free Software Foundation, Inc.
+   Copyright (C) 2015-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -22,11 +22,10 @@
 #include "bfd.h"
 #include "libbfd.h"
 
-extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
-					    bfd_boolean);
+extern void *bfd_arch_i386_short_nop_fill (bfd_size_type, bool, bool);
 
 #define N(number, name, print, next)			     \
-  { 32, 32, 8, bfd_arch_iamcu, number, name, print, 3, TRUE, \
+  { 32, 32, 8, bfd_arch_iamcu, number, name, print, 3, true, \
     bfd_default_compatible, bfd_default_scan,		     \
     bfd_arch_i386_short_nop_fill, next, 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.20200303/bfd/cpu-ip2k.c ./bfd/cpu-ip2k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-ip2k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-ip2k.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Scenix IP2xxx processor.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -41,8 +41,8 @@
   }
 
 const bfd_arch_info_type bfd_ip2k_nonext_arch =
-  N (bfd_mach_ip2022, "ip2022", FALSE, NULL);
+  N (bfd_mach_ip2022, "ip2022", false, NULL);
 
 const bfd_arch_info_type bfd_ip2k_arch =
-  N (bfd_mach_ip2022ext, "ip2022ext", TRUE, & bfd_ip2k_nonext_arch);
+  N (bfd_mach_ip2022ext, "ip2022ext", true, & bfd_ip2k_nonext_arch);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-iq2000.c ./bfd/cpu-iq2000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-iq2000.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-iq2000.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Vitesse IQ2000 processor.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -41,8 +41,8 @@
   }
 
 static const bfd_arch_info_type arch_info_struct =
-  N (bfd_mach_iq10, "iq10", FALSE, NULL);
+  N (bfd_mach_iq10, "iq10", false, NULL);
 
 const bfd_arch_info_type bfd_iq2000_arch =
-  N (bfd_mach_iq2000, "iq2000", TRUE, &arch_info_struct);
+  N (bfd_mach_iq2000, "iq2000", true, &arch_info_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.20200303/bfd/cpu-k1om.c ./bfd/cpu-k1om.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-k1om.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-k1om.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-/* BFD support for the Intel K1OM architecture.
-   Copyright (C) 2011-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"
-
-extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
-					    bfd_boolean);
-
-#define N(number, name, print, next)			     \
-  { 64, 64, 8, bfd_arch_k1om, number, name, print, 3, TRUE, \
-    bfd_default_compatible, bfd_default_scan,		     \
-    bfd_arch_i386_short_nop_fill, next, 9 }
-
-static const bfd_arch_info_type bfd_k1om_arch_intel_syntax =
-  N (bfd_mach_k1om_intel_syntax, "k1om:intel", "k1om:intel", NULL);
-
-const bfd_arch_info_type bfd_k1om_arch =
-  N (bfd_mach_k1om, "k1om", "k1om", &bfd_k1om_arch_intel_syntax);
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-kvx.c ./bfd/cpu-kvx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-kvx.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/cpu-kvx.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,124 @@
+/* BFD support for KVX.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   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; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+
+/* This routine is provided two arch_infos and returns if machines
+   are compatible.
+*/
+
+static const bfd_arch_info_type *
+kvx_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
+{
+  long amach =  a->mach, bmach =  b->mach;
+  /* If a & b are for different architecture we can do nothing.  */
+  if (a->arch != b->arch)
+    return NULL;
+
+  if ((amach == bfd_mach_kv3_1_64 && bmach == bfd_mach_kv3_1_usr)
+      || (amach == bfd_mach_kv3_2_64 && bmach == bfd_mach_kv3_2_usr))
+    return b;
+
+  if ((bmach == bfd_mach_kv3_1_64 && amach == bfd_mach_kv3_1_usr)
+      || (bmach == bfd_mach_kv3_2_64 && amach == bfd_mach_kv3_2_usr))
+    return a;
+
+  /* Otherwise if either a or b is the 'default' machine
+   * then it can be polymorphed into the other.
+   * This will enable to execute merge_private_bfd_data
+   */
+  if (a->the_default)
+    return b;
+
+  if (b->the_default)
+    return a;
+
+  /* We do not want to transmute some machine into another one */
+  if (amach != bmach)
+    return NULL;
+
+  /* If a & b are for the same machine then all is well.  */
+  if (amach == bmach)
+    return a;
+
+  return NULL;
+}
+
+static bool
+scan (const struct bfd_arch_info *info, const char *string)
+{
+  /* First test for an exact match.  */
+  if (strcasecmp (string, info->printable_name) == 0)
+    return true;
+
+  /* Finally check for the default architecture.  */
+  if (strcasecmp (string, "kvx") == 0)
+    return info->the_default;
+
+  return false;
+}
+
+#define N(addr_bits, machine, print, default, next)            \
+{                                                              \
+  32,                          /* 32 bits in a word.  */       \
+  addr_bits,                   /* bits in an address.  */      \
+  8,                           /* 8 bits in a byte.  */        \
+  bfd_arch_kvx,                                                 \
+  machine,                     /* Machine number.  */          \
+  "kvx",                        /* Architecture name.   */      \
+  print,                       /* Printable name.  */          \
+  4,                           /* Section align power.  */     \
+  default,                     /* Is this the default ?  */    \
+  kvx_compatible,					       \
+  scan,                                                        \
+  bfd_arch_default_fill,                                       \
+  next,                                                \
+          0                                            \
+}
+
+
+const bfd_arch_info_type bfd_kv4_1_usr_arch =
+  N (64 , bfd_mach_kv4_1_usr , "kvx:kv4-1:usr" , false , NULL);
+
+const bfd_arch_info_type bfd_kv3_2_usr_arch =
+  N (64 , bfd_mach_kv3_2_usr , "kvx:kv3-2:usr" , false , &bfd_kv4_1_usr_arch);
+
+const bfd_arch_info_type bfd_kv3_1_usr_arch =
+  N (64 , bfd_mach_kv3_1_usr , "kvx:kv3-1:usr" , false , &bfd_kv3_2_usr_arch);
+
+const bfd_arch_info_type bfd_kv4_1_64_arch =
+  N (64 , bfd_mach_kv4_1_64  , "kvx:kv4-1:64"  , false , &bfd_kv3_1_usr_arch);
+
+const bfd_arch_info_type bfd_kv3_2_64_arch =
+  N (64 , bfd_mach_kv3_2_64  , "kvx:kv3-2:64"  , false , &bfd_kv4_1_64_arch);
+
+const bfd_arch_info_type bfd_kv3_1_64_arch =
+  N (64 , bfd_mach_kv3_1_64  , "kvx:kv3-1:64"  , false , &bfd_kv3_2_64_arch);
+
+const bfd_arch_info_type bfd_kv4_1_arch =
+  N (32 , bfd_mach_kv4_1     , "kvx:kv4-1"     , false , &bfd_kv3_1_64_arch);
+
+const bfd_arch_info_type bfd_kv3_2_arch =
+  N (32 , bfd_mach_kv3_2     , "kvx:kv3-2"     , false , &bfd_kv4_1_arch);
+
+const bfd_arch_info_type bfd_kvx_arch =
+  N (32 , bfd_mach_kv3_1     , "kvx:kv3-1"     , true  , &bfd_kv3_2_arch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-l1om.c ./bfd/cpu-l1om.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-l1om.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-l1om.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,37 +0,0 @@
-/* BFD support for the Intel L1OM architecture.
-   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"
-
-extern void * bfd_arch_i386_short_nop_fill (bfd_size_type, bfd_boolean,
-					    bfd_boolean);
-
-#define N(number, name, print, next)			     \
-  { 64, 64, 8, bfd_arch_l1om, number, name, print, 3, TRUE, \
-    bfd_default_compatible, bfd_default_scan,		     \
-    bfd_arch_i386_short_nop_fill, next, 0 }
-
-static const bfd_arch_info_type bfd_l1om_arch_intel_syntax =
-  N (bfd_mach_l1om_intel_syntax, "l1om:intel", "l1om:intel", NULL);
-
-const bfd_arch_info_type bfd_l1om_arch =
-  N (bfd_mach_l1om, "l1om", "l1om", &bfd_l1om_arch_intel_syntax);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-lm32.c ./bfd/cpu-lm32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-lm32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-lm32.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Lattice Mico32 architecture.
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2025 Free Software Foundation, Inc.
    Contributed by Jon Beniston <jon@beniston.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_lm32_arch =
   "lm32",		  /* Architecture name.  */
   "lm32",		  /* Printable name.  */
   4,			  /* Alignment.  */
-  TRUE,			  /* Is this the default machine for the target.  */
+  true,			  /* Is this the default machine for the target.  */
   bfd_default_compatible, /* Function callback to test if two files have compatible machines.  */
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-loongarch.c ./bfd/cpu-loongarch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-loongarch.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/cpu-loongarch.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,61 @@
+/* BFD support for LoongArch.
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+   Contributed by Loongson Ltd.
+
+   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; see the file COPYING3.  If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+
+static const bfd_arch_info_type bfd_loongarch32_arch =
+{
+  32,				/* 32 bits in a word.  */
+  32,				/* 64 bits in an address.  */
+  8,				/* 8 bits in a byte.  */
+  bfd_arch_loongarch,		/* Architecture.  */
+  bfd_mach_loongarch32, 	/* Machine number - 0 for now.  */
+  "loongarch32",		/* Architecture name.  */
+  "Loongarch32",		/* Printable name.  */
+  3,				/* Section align power.  */
+  false,			/* This is the default architecture.  */
+  bfd_default_compatible,	/* Architecture comparison function.  */
+  bfd_default_scan,		/* String to architecture conversion.  */
+  bfd_arch_default_fill,	/* Default fill.  */
+  NULL, 			/* Next in list.  */
+  0,
+};
+
+const bfd_arch_info_type bfd_loongarch_arch =
+{
+  32,				/* 32 bits in a word.  */
+  64,				/* 64 bits in an address.  */
+  8,				/* 8 bits in a byte.  */
+  bfd_arch_loongarch,		/* Architecture.  */
+  /* Machine number of LoongArch64 is larger
+   * so that LoongArch64 is compatible to LoongArch32.  */
+  bfd_mach_loongarch64,
+  "loongarch64",		/* Architecture name.  */
+  "Loongarch64",		/* Printable name.  */
+  3,				/* Section align power.  */
+  true, 			/* This is the default architecture.  */
+  bfd_default_compatible,	/* Architecture comparison function.  */
+  bfd_default_scan,		/* String to architecture conversion.  */
+  bfd_arch_default_fill,	/* Default fill.  */
+  &bfd_loongarch32_arch,	/* Next in list.  */
+  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.20200303/bfd/cpu-m10200.c ./bfd/cpu-m10200.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m10200.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m10200.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Matsushita 10200 processor
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_mn10200_arc
   "mn10200",
   "mn10200",
   2,
-  TRUE,   /* The one and only.  */
+  true,   /* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m10300.c ./bfd/cpu-m10300.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m10300.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m10300.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Matsushita 10300 processor
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -41,10 +41,10 @@
   }
 
 const bfd_arch_info_type bfd_am33_2_arch =
-  N (bfd_mach_am33_2, "am33_2", "am33-2", FALSE, NULL);
+  N (bfd_mach_am33_2, "am33_2", "am33-2", false, NULL);
 
 const bfd_arch_info_type bfd_am33_arch =
-  N (bfd_mach_am33, "am33", "am33", FALSE, &bfd_am33_2_arch);
+  N (bfd_mach_am33, "am33", "am33", false, &bfd_am33_2_arch);
 
 const bfd_arch_info_type bfd_mn10300_arch =
-  N (bfd_mach_mn10300, "mn10300", "mn10300", TRUE, &bfd_am33_arch);
+  N (bfd_mach_mn10300, "mn10300", "mn10300", true, &bfd_am33_arch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m32c.c ./bfd/cpu-m32c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m32c.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m32c.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the M16C/M32C processors.
-   Copyright (C) 2004-2019 Free Software Foundation, Inc.
+   Copyright (C) 2004-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -25,12 +25,12 @@
 /* Like bfd_default_scan but if the string is just "m32c" then
    skip the m16c architecture.  */
 
-static bfd_boolean
+static bool
 m32c_scan (const bfd_arch_info_type * info, const char * string)
 {
   if (strcmp (string, "m32c") == 0
       && info->mach == bfd_mach_m16c)
-    return FALSE;
+    return false;
 
   return bfd_default_scan (info, string);
 }
@@ -40,8 +40,8 @@ m32c_scan (const bfd_arch_info_type * in
   bfd_default_compatible, m32c_scan, bfd_arch_default_fill, next, 0 }
 
 static const bfd_arch_info_type arch_info_struct =
-  N (bfd_mach_m32c, "m32c", 3, FALSE, NULL);
+  N (bfd_mach_m32c, "m32c", 3, false, NULL);
 
 const bfd_arch_info_type bfd_m32c_arch =
-  N (bfd_mach_m16c, "m16c", 4, TRUE, &arch_info_struct);
+  N (bfd_mach_m16c, "m16c", 4, true, &arch_info_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.20200303/bfd/cpu-m32r.c ./bfd/cpu-m32r.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m32r.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m32r.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the M32R processor.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -31,9 +31,9 @@
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (bfd_mach_m32rx, "m32rx", FALSE, M32R2_NEXT) ,
-  N (bfd_mach_m32r2, "m32r2", FALSE, NULL)
+  N (bfd_mach_m32rx, "m32rx", false, M32R2_NEXT) ,
+  N (bfd_mach_m32r2, "m32r2", false, NULL)
 };
 
 const bfd_arch_info_type bfd_m32r_arch =
-  N (bfd_mach_m32r, "m32r", TRUE, NEXT);
+  N (bfd_mach_m32r, "m32r", true, NEXT);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m68hc11.c ./bfd/cpu-m68hc11.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m68hc11.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m68hc11.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Motorola 68HC11 processor
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_m68hc11_arc
   "m68hc11",
   "m68hc11",
   4, /* Section alignment power.  */
-  TRUE,
+  true,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m68hc12.c ./bfd/cpu-m68hc12.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m68hc12.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m68hc12.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Motorola 68HC12 processor
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -41,8 +41,8 @@
   }
 
 const bfd_arch_info_type bfd_m68hc12s_arch =
-  N (bfd_mach_m6812s, "m68hc12:HCS12", FALSE, NULL);
+  N (bfd_mach_m6812s, "m68hc12:HCS12", false, NULL);
 
 const bfd_arch_info_type bfd_m68hc12_arch =
-  N (bfd_mach_m6812_default, "m68hc12", TRUE, &bfd_m68hc12s_arch);
+  N (bfd_mach_m6812_default, "m68hc12", true, &bfd_m68hc12s_arch);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m68k.c ./bfd/cpu-m68k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m68k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m68k.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for architectures.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -35,79 +35,79 @@ bfd_m68k_compatible (const bfd_arch_info
 
 static const bfd_arch_info_type arch_info_struct[] =
   {
-    N(bfd_mach_m68000,  "m68k:68000", FALSE, &arch_info_struct[1]),
-    N(bfd_mach_m68008,  "m68k:68008", FALSE, &arch_info_struct[2]),
-    N(bfd_mach_m68010,  "m68k:68010", FALSE, &arch_info_struct[3]),
-    N(bfd_mach_m68020,  "m68k:68020", FALSE, &arch_info_struct[4]),
-    N(bfd_mach_m68030,  "m68k:68030", FALSE, &arch_info_struct[5]),
-    N(bfd_mach_m68040,  "m68k:68040", FALSE, &arch_info_struct[6]),
-    N(bfd_mach_m68060,  "m68k:68060", FALSE, &arch_info_struct[7]),
-    N(bfd_mach_cpu32,   "m68k:cpu32", FALSE, &arch_info_struct[8]),
-    N(bfd_mach_fido,    "m68k:fido",  FALSE, &arch_info_struct[9]),
+    N(bfd_mach_m68000,  "m68k:68000", false, &arch_info_struct[1]),
+    N(bfd_mach_m68008,  "m68k:68008", false, &arch_info_struct[2]),
+    N(bfd_mach_m68010,  "m68k:68010", false, &arch_info_struct[3]),
+    N(bfd_mach_m68020,  "m68k:68020", false, &arch_info_struct[4]),
+    N(bfd_mach_m68030,  "m68k:68030", false, &arch_info_struct[5]),
+    N(bfd_mach_m68040,  "m68k:68040", false, &arch_info_struct[6]),
+    N(bfd_mach_m68060,  "m68k:68060", false, &arch_info_struct[7]),
+    N(bfd_mach_cpu32,   "m68k:cpu32", false, &arch_info_struct[8]),
+    N(bfd_mach_fido,    "m68k:fido",  false, &arch_info_struct[9]),
 
     /* Various combinations of CF architecture features */
     N(bfd_mach_mcf_isa_a_nodiv, "m68k:isa-a:nodiv",
-      FALSE, &arch_info_struct[10]),
+      false, &arch_info_struct[10]),
     N(bfd_mach_mcf_isa_a, "m68k:isa-a",
-      FALSE, &arch_info_struct[11]),
+      false, &arch_info_struct[11]),
     N(bfd_mach_mcf_isa_a_mac, "m68k:isa-a:mac",
-      FALSE, &arch_info_struct[12]),
+      false, &arch_info_struct[12]),
     N(bfd_mach_mcf_isa_a_emac, "m68k:isa-a:emac",
-      FALSE, &arch_info_struct[13]),
+      false, &arch_info_struct[13]),
     N(bfd_mach_mcf_isa_aplus, "m68k:isa-aplus",
-      FALSE, &arch_info_struct[14]),
+      false, &arch_info_struct[14]),
     N(bfd_mach_mcf_isa_aplus_mac, "m68k:isa-aplus:mac",
-      FALSE, &arch_info_struct[15]),
+      false, &arch_info_struct[15]),
     N(bfd_mach_mcf_isa_aplus_emac, "m68k:isa-aplus:emac",
-      FALSE, &arch_info_struct[16]),
+      false, &arch_info_struct[16]),
     N(bfd_mach_mcf_isa_b_nousp, "m68k:isa-b:nousp",
-      FALSE, &arch_info_struct[17]),
+      false, &arch_info_struct[17]),
     N(bfd_mach_mcf_isa_b_nousp_mac, "m68k:isa-b:nousp:mac",
-      FALSE, &arch_info_struct[18]),
+      false, &arch_info_struct[18]),
     N(bfd_mach_mcf_isa_b_nousp_emac, "m68k:isa-b:nousp:emac",
-      FALSE, &arch_info_struct[19]),
+      false, &arch_info_struct[19]),
     N(bfd_mach_mcf_isa_b, "m68k:isa-b",
-      FALSE, &arch_info_struct[20]),
+      false, &arch_info_struct[20]),
     N(bfd_mach_mcf_isa_b_mac, "m68k:isa-b:mac",
-      FALSE, &arch_info_struct[21]),
+      false, &arch_info_struct[21]),
     N(bfd_mach_mcf_isa_b_emac, "m68k:isa-b:emac",
-      FALSE, &arch_info_struct[22]),
+      false, &arch_info_struct[22]),
     N(bfd_mach_mcf_isa_b_float, "m68k:isa-b:float",
-      FALSE, &arch_info_struct[23]),
+      false, &arch_info_struct[23]),
     N(bfd_mach_mcf_isa_b_float_mac, "m68k:isa-b:float:mac",
-      FALSE, &arch_info_struct[24]),
+      false, &arch_info_struct[24]),
     N(bfd_mach_mcf_isa_b_float_emac, "m68k:isa-b:float:emac",
-      FALSE, &arch_info_struct[25]),
+      false, &arch_info_struct[25]),
     N(bfd_mach_mcf_isa_c, "m68k:isa-c",
-      FALSE, &arch_info_struct[26]),
+      false, &arch_info_struct[26]),
     N(bfd_mach_mcf_isa_c_mac, "m68k:isa-c:mac",
-      FALSE, &arch_info_struct[27]),
+      false, &arch_info_struct[27]),
     N(bfd_mach_mcf_isa_c_emac, "m68k:isa-c:emac",
-      FALSE, &arch_info_struct[28]),
+      false, &arch_info_struct[28]),
     N(bfd_mach_mcf_isa_c_nodiv, "m68k:isa-c:nodiv",
-      FALSE, &arch_info_struct[29]),
+      false, &arch_info_struct[29]),
     N(bfd_mach_mcf_isa_c_nodiv_mac, "m68k:isa-c:nodiv:mac",
-      FALSE, &arch_info_struct[30]),
+      false, &arch_info_struct[30]),
     N(bfd_mach_mcf_isa_c_nodiv_emac, "m68k:isa-c:nodiv:emac",
-      FALSE, &arch_info_struct[31]),
+      false, &arch_info_struct[31]),
 
     /* Legacy names for CF architectures */
-    N(bfd_mach_mcf_isa_a_nodiv, "m68k:5200", FALSE, &arch_info_struct[32]),
-    N(bfd_mach_mcf_isa_a_mac,"m68k:5206e", FALSE, &arch_info_struct[33]),
-    N(bfd_mach_mcf_isa_a_mac, "m68k:5307", FALSE, &arch_info_struct[34]),
-    N(bfd_mach_mcf_isa_b_nousp_mac, "m68k:5407", FALSE, &arch_info_struct[35]),
-    N(bfd_mach_mcf_isa_aplus_emac, "m68k:528x", FALSE, &arch_info_struct[36]),
-    N(bfd_mach_mcf_isa_aplus_emac, "m68k:521x", FALSE, &arch_info_struct[37]),
-    N(bfd_mach_mcf_isa_a_emac, "m68k:5249", FALSE, &arch_info_struct[38]),
+    N(bfd_mach_mcf_isa_a_nodiv, "m68k:5200", false, &arch_info_struct[32]),
+    N(bfd_mach_mcf_isa_a_mac,"m68k:5206e", false, &arch_info_struct[33]),
+    N(bfd_mach_mcf_isa_a_mac, "m68k:5307", false, &arch_info_struct[34]),
+    N(bfd_mach_mcf_isa_b_nousp_mac, "m68k:5407", false, &arch_info_struct[35]),
+    N(bfd_mach_mcf_isa_aplus_emac, "m68k:528x", false, &arch_info_struct[36]),
+    N(bfd_mach_mcf_isa_aplus_emac, "m68k:521x", false, &arch_info_struct[37]),
+    N(bfd_mach_mcf_isa_a_emac, "m68k:5249", false, &arch_info_struct[38]),
     N(bfd_mach_mcf_isa_b_float_emac, "m68k:547x",
-      FALSE, &arch_info_struct[39]),
+      false, &arch_info_struct[39]),
     N(bfd_mach_mcf_isa_b_float_emac, "m68k:548x",
-      FALSE, &arch_info_struct[40]),
-    N(bfd_mach_mcf_isa_b_float_emac, "m68k:cfv4e", FALSE, 0),
+      false, &arch_info_struct[40]),
+    N(bfd_mach_mcf_isa_b_float_emac, "m68k:cfv4e", false, 0),
   };
 
 const bfd_arch_info_type bfd_m68k_arch =
-  N(0, "m68k", TRUE, &arch_info_struct[0]);
+  N(0, "m68k", true, &arch_info_struct[0]);
 
 /* Table indexed by bfd_mach_arch number indicating which
    architectural features are 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.20200303/bfd/cpu-m68k.h ./bfd/cpu-m68k.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m68k.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m68k.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 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.20200303/bfd/cpu-m9s12x.c ./bfd/cpu-m9s12x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m9s12x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m9s12x.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Freescale 9S12X processor
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_m9s12x_arch
   "m9s12x",
   "m9s12x",
   4,    /* Section alignment power.  */
-  TRUE,
+  true,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m9s12xg.c ./bfd/cpu-m9s12xg.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-m9s12xg.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-m9s12xg.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_m9s12xg_arc
   "m9s12xg",
   "m9s12xg",
   4,    /* Section alignment power.  */
-  TRUE,
+  true,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-mcore.c ./bfd/cpu-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-mcore.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-mcore.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_mcore_arch
   "MCore",			/* Architecture name.  */
   "MCore",			/* Machine name.  */
   3,				/* Section align power.  */
-  TRUE,				/* Is this the default architecture ?  */
+  true,				/* Is this the default architecture ?  */
   bfd_default_compatible,	/* Architecture comparison function.  */
   bfd_default_scan,		/* String to architecture conversion.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-mep.c ./bfd/cpu-mep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-mep.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-mep.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -25,6 +25,6 @@
 			   2, def, bfd_default_compatible, bfd_default_scan, \
 			   bfd_arch_default_fill, y, 0 }
 
-static const bfd_arch_info_type bfd_c5_arch = MA (bfd_mach_mep_c5, "c5", FALSE, NULL);
-static const bfd_arch_info_type bfd_h1_arch = MA (bfd_mach_mep_h1, "h1", FALSE, & bfd_c5_arch);
-const bfd_arch_info_type bfd_mep_arch = MA (bfd_mach_mep, "mep", TRUE, & bfd_h1_arch);
+static const bfd_arch_info_type bfd_c5_arch = MA (bfd_mach_mep_c5, "c5", false, NULL);
+static const bfd_arch_info_type bfd_h1_arch = MA (bfd_mach_mep_h1, "h1", false, & bfd_c5_arch);
+const bfd_arch_info_type bfd_mep_arch = MA (bfd_mach_mep, "mep", true, & bfd_h1_arch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-metag.c ./bfd/cpu-metag.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-metag.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-metag.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Imagination Technologies Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_metag_arch
   "metag",			/* Architecture name.  */
   "metag",			/* Printable name.  */
   4,				/* Section align power.  */
-  TRUE,				/* The default ?  */
+  true,				/* The default ?  */
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-microblaze.c ./bfd/cpu-microblaze.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-microblaze.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-microblaze.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD Xilinx MicroBlaze architecture definition
 
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_microblaze_
   "microblaze",			/* Architecture name.  */
   "MicroBlaze",			/* Printable name.  */
   3,				/* Section align power.  */
-  TRUE,				/* Is this the default architecture ?  */
+  true,				/* Is this the default architecture ?  */
   bfd_default_compatible,	/* Architecture comparison function.  */
   bfd_default_scan,		/* String to architecture conversion.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-mips.c ./bfd/cpu-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-mips.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-mips.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* bfd back-end for mips support
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -108,6 +108,7 @@ enum
   I_mipsocteon3,
   I_xlr,
   I_interaptiv_mr2,
+  I_allegrex,
   I_micromips
 };
 
@@ -115,55 +116,56 @@ enum
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (32, 32, bfd_mach_mips3000, "mips:3000",	  FALSE, NN(I_mips3000)),
-  N (32, 32, bfd_mach_mips3900, "mips:3900",	  FALSE, NN(I_mips3900)),
-  N (64, 64, bfd_mach_mips4000, "mips:4000",	  FALSE, NN(I_mips4000)),
-  N (32, 32, bfd_mach_mips4010, "mips:4010",	  FALSE, NN(I_mips4010)),
-  N (64, 64, bfd_mach_mips4100, "mips:4100",	  FALSE, NN(I_mips4100)),
-  N (64, 64, bfd_mach_mips4111, "mips:4111",	  FALSE, NN(I_mips4111)),
-  N (64, 64, bfd_mach_mips4120, "mips:4120",	  FALSE, NN(I_mips4120)),
-  N (64, 64, bfd_mach_mips4300, "mips:4300",	  FALSE, NN(I_mips4300)),
-  N (64, 64, bfd_mach_mips4400, "mips:4400",	  FALSE, NN(I_mips4400)),
-  N (64, 64, bfd_mach_mips4600, "mips:4600",	  FALSE, NN(I_mips4600)),
-  N (64, 64, bfd_mach_mips4650, "mips:4650",	  FALSE, NN(I_mips4650)),
-  N (64, 64, bfd_mach_mips5000, "mips:5000",	  FALSE, NN(I_mips5000)),
-  N (64, 64, bfd_mach_mips5400, "mips:5400",	  FALSE, NN(I_mips5400)),
-  N (64, 64, bfd_mach_mips5500, "mips:5500",	  FALSE, NN(I_mips5500)),
-  N (64, 32, bfd_mach_mips5900, "mips:5900",	  FALSE, NN(I_mips5900)),
-  N (32, 32, bfd_mach_mips6000, "mips:6000",	  FALSE, NN(I_mips6000)),
-  N (64, 64, bfd_mach_mips7000, "mips:7000",	  FALSE, NN(I_mips7000)),
-  N (64, 64, bfd_mach_mips8000, "mips:8000",	  FALSE, NN(I_mips8000)),
-  N (64, 64, bfd_mach_mips9000, "mips:9000",	  FALSE, NN(I_mips9000)),
-  N (64, 64, bfd_mach_mips10000,"mips:10000",	  FALSE, NN(I_mips10000)),
-  N (64, 64, bfd_mach_mips12000,"mips:12000",	  FALSE, NN(I_mips12000)),
-  N (64, 64, bfd_mach_mips14000,"mips:14000",	  FALSE, NN(I_mips14000)),
-  N (64, 64, bfd_mach_mips16000,"mips:16000",	  FALSE, NN(I_mips16000)),
-  N (64, 64, bfd_mach_mips16,	"mips:16",	  FALSE, NN(I_mips16)),
-  N (64, 64, bfd_mach_mips5,	"mips:mips5",	  FALSE, NN(I_mips5)),
-  N (32, 32, bfd_mach_mipsisa32,  "mips:isa32",	  FALSE, NN(I_mipsisa32)),
-  N (32, 32, bfd_mach_mipsisa32r2,"mips:isa32r2", FALSE, NN(I_mipsisa32r2)),
-  N (32, 32, bfd_mach_mipsisa32r3,"mips:isa32r3", FALSE, NN(I_mipsisa32r3)),
-  N (32, 32, bfd_mach_mipsisa32r5,"mips:isa32r5", FALSE, NN(I_mipsisa32r5)),
-  N (32, 32, bfd_mach_mipsisa32r6,"mips:isa32r6", FALSE, NN(I_mipsisa32r6)),
-  N (64, 64, bfd_mach_mipsisa64,  "mips:isa64",	  FALSE, NN(I_mipsisa64)),
-  N (64, 64, bfd_mach_mipsisa64r2,"mips:isa64r2", FALSE, NN(I_mipsisa64r2)),
-  N (64, 64, bfd_mach_mipsisa64r3,"mips:isa64r3", FALSE, NN(I_mipsisa64r3)),
-  N (64, 64, bfd_mach_mipsisa64r5,"mips:isa64r5", FALSE, NN(I_mipsisa64r5)),
-  N (64, 64, bfd_mach_mipsisa64r6,"mips:isa64r6", FALSE, NN(I_mipsisa64r6)),
-  N (64, 64, bfd_mach_mips_sb1, "mips:sb1",	  FALSE, NN(I_sb1)),
-  N (64, 64, bfd_mach_mips_loongson_2e, "mips:loongson_2e", FALSE, NN(I_loongson_2e)),
-  N (64, 64, bfd_mach_mips_loongson_2f, "mips:loongson_2f", FALSE, NN(I_loongson_2f)),
-  N (64, 64, bfd_mach_mips_gs464, "mips:gs464",	  FALSE, NN(I_gs464)),
-  N (64, 64, bfd_mach_mips_gs464e, "mips:gs464e", FALSE, NN(I_gs464e)),
-  N (64, 64, bfd_mach_mips_gs264e, "mips:gs264e", FALSE, NN(I_gs264e)),
-  N (64, 64, bfd_mach_mips_octeon,"mips:octeon",  FALSE, NN(I_mipsocteon)),
-  N (64, 64, bfd_mach_mips_octeonp,"mips:octeon+", FALSE, NN(I_mipsocteonp)),
-  N (64, 64, bfd_mach_mips_octeon2,"mips:octeon2", FALSE, NN(I_mipsocteon2)),
-  N (64, 64, bfd_mach_mips_octeon3, "mips:octeon3", FALSE, NN(I_mipsocteon3)),
-  N (64, 64, bfd_mach_mips_xlr, "mips:xlr",	   FALSE, NN(I_xlr)),
-  N (32, 32, bfd_mach_mips_interaptiv_mr2, "mips:interaptiv-mr2", FALSE,
+  N (32, 32, bfd_mach_mips3000, "mips:3000",	  false, NN(I_mips3000)),
+  N (32, 32, bfd_mach_mips3900, "mips:3900",	  false, NN(I_mips3900)),
+  N (64, 64, bfd_mach_mips4000, "mips:4000",	  false, NN(I_mips4000)),
+  N (32, 32, bfd_mach_mips4010, "mips:4010",	  false, NN(I_mips4010)),
+  N (64, 64, bfd_mach_mips4100, "mips:4100",	  false, NN(I_mips4100)),
+  N (64, 64, bfd_mach_mips4111, "mips:4111",	  false, NN(I_mips4111)),
+  N (64, 64, bfd_mach_mips4120, "mips:4120",	  false, NN(I_mips4120)),
+  N (64, 64, bfd_mach_mips4300, "mips:4300",	  false, NN(I_mips4300)),
+  N (64, 64, bfd_mach_mips4400, "mips:4400",	  false, NN(I_mips4400)),
+  N (64, 64, bfd_mach_mips4600, "mips:4600",	  false, NN(I_mips4600)),
+  N (64, 64, bfd_mach_mips4650, "mips:4650",	  false, NN(I_mips4650)),
+  N (64, 64, bfd_mach_mips5000, "mips:5000",	  false, NN(I_mips5000)),
+  N (64, 64, bfd_mach_mips5400, "mips:5400",	  false, NN(I_mips5400)),
+  N (64, 64, bfd_mach_mips5500, "mips:5500",	  false, NN(I_mips5500)),
+  N (64, 32, bfd_mach_mips5900, "mips:5900",	  false, NN(I_mips5900)),
+  N (32, 32, bfd_mach_mips6000, "mips:6000",	  false, NN(I_mips6000)),
+  N (64, 64, bfd_mach_mips7000, "mips:7000",	  false, NN(I_mips7000)),
+  N (64, 64, bfd_mach_mips8000, "mips:8000",	  false, NN(I_mips8000)),
+  N (64, 64, bfd_mach_mips9000, "mips:9000",	  false, NN(I_mips9000)),
+  N (64, 64, bfd_mach_mips10000,"mips:10000",	  false, NN(I_mips10000)),
+  N (64, 64, bfd_mach_mips12000,"mips:12000",	  false, NN(I_mips12000)),
+  N (64, 64, bfd_mach_mips14000,"mips:14000",	  false, NN(I_mips14000)),
+  N (64, 64, bfd_mach_mips16000,"mips:16000",	  false, NN(I_mips16000)),
+  N (64, 64, bfd_mach_mips16,	"mips:16",	  false, NN(I_mips16)),
+  N (64, 64, bfd_mach_mips5,	"mips:mips5",	  false, NN(I_mips5)),
+  N (32, 32, bfd_mach_mipsisa32,  "mips:isa32",	  false, NN(I_mipsisa32)),
+  N (32, 32, bfd_mach_mipsisa32r2,"mips:isa32r2", false, NN(I_mipsisa32r2)),
+  N (32, 32, bfd_mach_mipsisa32r3,"mips:isa32r3", false, NN(I_mipsisa32r3)),
+  N (32, 32, bfd_mach_mipsisa32r5,"mips:isa32r5", false, NN(I_mipsisa32r5)),
+  N (32, 32, bfd_mach_mipsisa32r6,"mips:isa32r6", false, NN(I_mipsisa32r6)),
+  N (64, 64, bfd_mach_mipsisa64,  "mips:isa64",	  false, NN(I_mipsisa64)),
+  N (64, 64, bfd_mach_mipsisa64r2,"mips:isa64r2", false, NN(I_mipsisa64r2)),
+  N (64, 64, bfd_mach_mipsisa64r3,"mips:isa64r3", false, NN(I_mipsisa64r3)),
+  N (64, 64, bfd_mach_mipsisa64r5,"mips:isa64r5", false, NN(I_mipsisa64r5)),
+  N (64, 64, bfd_mach_mipsisa64r6,"mips:isa64r6", false, NN(I_mipsisa64r6)),
+  N (64, 64, bfd_mach_mips_sb1, "mips:sb1",	  false, NN(I_sb1)),
+  N (64, 64, bfd_mach_mips_loongson_2e, "mips:loongson_2e", false, NN(I_loongson_2e)),
+  N (64, 64, bfd_mach_mips_loongson_2f, "mips:loongson_2f", false, NN(I_loongson_2f)),
+  N (64, 64, bfd_mach_mips_gs464, "mips:gs464",	  false, NN(I_gs464)),
+  N (64, 64, bfd_mach_mips_gs464e, "mips:gs464e", false, NN(I_gs464e)),
+  N (64, 64, bfd_mach_mips_gs264e, "mips:gs264e", false, NN(I_gs264e)),
+  N (64, 64, bfd_mach_mips_octeon,"mips:octeon",  false, NN(I_mipsocteon)),
+  N (64, 64, bfd_mach_mips_octeonp,"mips:octeon+", false, NN(I_mipsocteonp)),
+  N (64, 64, bfd_mach_mips_octeon2,"mips:octeon2", false, NN(I_mipsocteon2)),
+  N (64, 64, bfd_mach_mips_octeon3, "mips:octeon3", false, NN(I_mipsocteon3)),
+  N (64, 64, bfd_mach_mips_xlr, "mips:xlr",	   false, NN(I_xlr)),
+  N (32, 32, bfd_mach_mips_interaptiv_mr2, "mips:interaptiv-mr2", false,
      NN(I_interaptiv_mr2)),
-  N (64, 64, bfd_mach_mips_micromips, "mips:micromips", FALSE, NULL)
+  N (32, 32, bfd_mach_mips_allegrex, "mips:allegrex", false, NN(I_allegrex)),
+  N (64, 64, bfd_mach_mips_micromips, "mips:micromips", false, NULL)
 };
 
 /* The default architecture is mips:3000, but with a machine number of
@@ -171,4 +173,4 @@ static const bfd_arch_info_type arch_inf
    of mips, and an explicit setting of mips:3000.  */
 
 const bfd_arch_info_type bfd_mips_arch =
-N (32, 32, 0, "mips", TRUE, &arch_info_struct[0]);
+N (32, 32, 0, "mips", true, &arch_info_struct[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.20200303/bfd/cpu-mmix.c ./bfd/cpu-mmix.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-mmix.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-mmix.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for MMIX.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
    Contributed by Hans-Peter Nilsson (hp@bitrange.com)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -35,7 +35,7 @@ bfd_mmix_arch =
   "mmix",			/* Architecture name.  */
   "mmix",			/* Printable name.  */
   3,				/* Section align power.  */
-  TRUE,			/* This is the default architecture.  */
+  true,				/* This is the default architecture.  */
   bfd_default_compatible,	/* Architecture comparison function.  */
   bfd_default_scan,		/* String to architecture conversion.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-moxie.c ./bfd/cpu-moxie.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-moxie.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-moxie.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the moxie processor.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Written by Anthony Green
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_moxie_arch
   "moxie",	      /* Arch name.  */
   "moxie",	      /* Printable name.  */
   2,		      /* Section alignment power.  */
-  TRUE,	              /* The one and only.  */
+  true,	              /* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-msp430.c ./bfd/cpu-msp430.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-msp430.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-msp430.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Dmitry Diky <diwil@mail.ru>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -62,78 +62,78 @@ compatible (const bfd_arch_info_type * a
 static const bfd_arch_info_type arch_info_struct[] =
 {
   /* msp430x11x.  */
-  N (16, bfd_mach_msp11, "MSP430", FALSE, & arch_info_struct[1]),
+  N (16, bfd_mach_msp11, "MSP430", false, & arch_info_struct[1]),
 
   /* msp430x11x1.  */
-  N (16, bfd_mach_msp110, "MSP430x11x1", FALSE, & arch_info_struct[2]),
+  N (16, bfd_mach_msp110, "MSP430x11x1", false, & arch_info_struct[2]),
 
   /* msp430x12x.  */
-  N (16, bfd_mach_msp12, "MSP430x12", FALSE, & arch_info_struct[3]),
+  N (16, bfd_mach_msp12, "MSP430x12", false, & arch_info_struct[3]),
 
   /* msp430x13x.  */
-  N (16, bfd_mach_msp13, "MSP430x13", FALSE, & arch_info_struct[4]),
+  N (16, bfd_mach_msp13, "MSP430x13", false, & arch_info_struct[4]),
 
   /* msp430x14x.  */
-  N (16, bfd_mach_msp14, "MSP430x14", FALSE, & arch_info_struct[5]),
+  N (16, bfd_mach_msp14, "MSP430x14", false, & arch_info_struct[5]),
 
   /* msp430x15x.  */
-  N (16, bfd_mach_msp15, "MSP430x15", FALSE, & arch_info_struct[6]),
+  N (16, bfd_mach_msp15, "MSP430x15", false, & arch_info_struct[6]),
 
   /* msp430x16x.  */
-  N (16, bfd_mach_msp16, "MSP430x16", FALSE, & arch_info_struct[7]),
+  N (16, bfd_mach_msp16, "MSP430x16", false, & arch_info_struct[7]),
 
   /* msp430x20x.  */
-  N (16, bfd_mach_msp20, "MSP430x20", FALSE, & arch_info_struct[8]),
+  N (16, bfd_mach_msp20, "MSP430x20", false, & arch_info_struct[8]),
 
   /* msp430x21x.  */
-  N (16, bfd_mach_msp21, "MSP430x21", FALSE, & arch_info_struct[9]),
+  N (16, bfd_mach_msp21, "MSP430x21", false, & arch_info_struct[9]),
 
   /* msp430x22x.  */
-  N (16, bfd_mach_msp22, "MSP430x22", FALSE, & arch_info_struct[10]),
+  N (16, bfd_mach_msp22, "MSP430x22", false, & arch_info_struct[10]),
 
   /* msp430x23x.  */
-  N (16, bfd_mach_msp23, "MSP430x23", FALSE, & arch_info_struct[11]),
+  N (16, bfd_mach_msp23, "MSP430x23", false, & arch_info_struct[11]),
 
   /* msp430x24x.  */
-  N (16, bfd_mach_msp24, "MSP430x24", FALSE, & arch_info_struct[12]),
+  N (16, bfd_mach_msp24, "MSP430x24", false, & arch_info_struct[12]),
 
   /* msp430x26x.  */
-  N (16, bfd_mach_msp26, "MSP430x26", FALSE, & arch_info_struct[13]),
+  N (16, bfd_mach_msp26, "MSP430x26", false, & arch_info_struct[13]),
 
   /* msp430x31x.  */
-  N (16, bfd_mach_msp31, "MSP430x31", FALSE, & arch_info_struct[14]),
+  N (16, bfd_mach_msp31, "MSP430x31", false, & arch_info_struct[14]),
 
   /* msp430x32x.  */
-  N (16, bfd_mach_msp32, "MSP430x32", FALSE, & arch_info_struct[15]),
+  N (16, bfd_mach_msp32, "MSP430x32", false, & arch_info_struct[15]),
 
   /* msp430x33x.  */
-  N (16, bfd_mach_msp33, "MSP430x33", FALSE, & arch_info_struct[16]),
+  N (16, bfd_mach_msp33, "MSP430x33", false, & arch_info_struct[16]),
 
   /* msp430x41x.  */
-  N (16, bfd_mach_msp41, "MSP430x41", FALSE, & arch_info_struct[17]),
+  N (16, bfd_mach_msp41, "MSP430x41", false, & arch_info_struct[17]),
 
   /* msp430x42x.  */
-  N (16, bfd_mach_msp42, "MSP430x42", FALSE, & arch_info_struct[18]),
+  N (16, bfd_mach_msp42, "MSP430x42", false, & arch_info_struct[18]),
 
   /* msp430x43x.  */
-  N (16, bfd_mach_msp43, "MSP430x43", FALSE, & arch_info_struct[19]),
+  N (16, bfd_mach_msp43, "MSP430x43", false, & arch_info_struct[19]),
 
   /* msp430x44x.  */
-  N (16, bfd_mach_msp43, "MSP430x44", FALSE, & arch_info_struct[20]),
+  N (16, bfd_mach_msp43, "MSP430x44", false, & arch_info_struct[20]),
 
   /* msp430x46x.  */
-  N (16, bfd_mach_msp46, "MSP430x46", FALSE, & arch_info_struct[21]),
+  N (16, bfd_mach_msp46, "MSP430x46", false, & arch_info_struct[21]),
 
   /* msp430x47x.  */
-  N (16, bfd_mach_msp47, "MSP430x47", FALSE, & arch_info_struct[22]),
+  N (16, bfd_mach_msp47, "MSP430x47", false, & arch_info_struct[22]),
 
   /* msp430x54x.  */
-  N (16, bfd_mach_msp54, "MSP430x54", FALSE, & arch_info_struct[23]),
+  N (16, bfd_mach_msp54, "MSP430x54", false, & arch_info_struct[23]),
 
-  N (32, bfd_mach_msp430x, "MSP430X", FALSE, NULL)
+  N (32, bfd_mach_msp430x, "MSP430X", false, NULL)
 
 };
 
 const bfd_arch_info_type bfd_msp430_arch =
-  N (16, bfd_mach_msp14, "msp:14", TRUE, & arch_info_struct[0]);
+  N (16, bfd_mach_msp14, "msp:14", true, & arch_info_struct[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.20200303/bfd/cpu-mt.c ./bfd/cpu-mt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-mt.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-mt.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -42,11 +42,11 @@
 
 const bfd_arch_info_type arch_info_struct[2] =
 {
-  N (bfd_mach_mrisc2, "ms1-003", FALSE, arch_info_struct + 1),
-  N (bfd_mach_ms2,    "ms2",     FALSE, NULL)
+  N (bfd_mach_mrisc2, "ms1-003", false, arch_info_struct + 1),
+  N (bfd_mach_ms2,    "ms2",     false, NULL)
 };
 
 const bfd_arch_info_type bfd_mt_arch =
-  N (bfd_mach_ms1,    "ms1",     TRUE, arch_info_struct);
+  N (bfd_mach_ms1,    "ms1",     true, arch_info_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.20200303/bfd/cpu-nds32.c ./bfd/cpu-nds32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-nds32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-nds32.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the NDS32 processor
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2025 Free Software Foundation, Inc.
    Contributed by Andes Technology Corporation.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -35,11 +35,11 @@
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (bfd_mach_n1h, "n1h", FALSE, NDS32V2_NEXT),
-  N (bfd_mach_n1h_v2, "n1h_v2", FALSE, NDS32V3_NEXT),
-  N (bfd_mach_n1h_v3, "n1h_v3", FALSE, NDS32V3M_NEXT),
-  N (bfd_mach_n1h_v3m, "n1h_v3m", FALSE, NULL),
+  N (bfd_mach_n1h, "n1h", false, NDS32V2_NEXT),
+  N (bfd_mach_n1h_v2, "n1h_v2", false, NDS32V3_NEXT),
+  N (bfd_mach_n1h_v3, "n1h_v3", false, NDS32V3M_NEXT),
+  N (bfd_mach_n1h_v3m, "n1h_v3m", false, NULL),
 };
 
 const bfd_arch_info_type bfd_nds32_arch =
-  N (bfd_mach_n1, "n1h", TRUE, NEXT);
+  N (bfd_mach_n1, "n1", true, NEXT);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-nfp.c ./bfd/cpu-nfp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-nfp.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-nfp.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD library support routines for the NFP.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
    Contributed by Francois H. Theron <francois.theron@netronome.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -55,7 +55,7 @@ bfd_nfp_compatible (const bfd_arch_info_
 }
 
 static const bfd_arch_info_type arch_info_struct =
-  N (bfd_mach_nfp3200, "NFP-32xx", FALSE, NULL);
+  N (bfd_mach_nfp3200, "NFP-32xx", false, NULL);
 
 const bfd_arch_info_type bfd_nfp_arch =
-  N (bfd_mach_nfp6000, "NFP-6xxx", TRUE, &arch_info_struct);
+  N (bfd_mach_nfp6000, "NFP-6xxx", true, &arch_info_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.20200303/bfd/cpu-nios2.c ./bfd/cpu-nios2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-nios2.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-nios2.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,75 +0,0 @@
-/* BFD support for the Altera Nios II processor.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
-   Contributed by Nigel Gray (ngray@altera.com).
-   Contributed by Mentor Graphics, 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"
-
-static const bfd_arch_info_type *
-nios2_compatible (const bfd_arch_info_type *a,
-		  const bfd_arch_info_type *b)
-{
-  if (a->arch != b->arch)
-    return NULL;
-
-  if (a->bits_per_word != b->bits_per_word)
-    return NULL;
-
-  if (a->mach == bfd_mach_nios2)
-    return a;
-  else if (b->mach == bfd_mach_nios2)
-    return b;
-  else if (a->mach != b->mach)
-    return NULL;
-
-  return a;
-}
-
-#define N(NUMBER, PRINT, DEFAULT, NEXT)			\
-  {							\
-    32, /* Bits in a word.  */				\
-    32, /* Bits in an address.  */			\
-    8,	/* Bits in a byte.  */				\
-    bfd_arch_nios2,					\
-    NUMBER,						\
-    "nios2",						\
-    PRINT,						\
-    3,							\
-    DEFAULT,						\
-    nios2_compatible,					\
-    bfd_default_scan,					\
-    bfd_arch_default_fill,				\
-    NEXT,						\
-    0 /* Maximum offset of a reloc from the start of an insn.  */ \
-  }
-
-#define NIOS2R1_NEXT &arch_info_struct[0]
-#define NIOS2R2_NEXT &arch_info_struct[1]
-
-static const bfd_arch_info_type arch_info_struct[2] =
-{
-  N (bfd_mach_nios2r1, "nios2:r1", FALSE, NIOS2R2_NEXT),
-  N (bfd_mach_nios2r2, "nios2:r2", FALSE, NULL),
-};
-
-const bfd_arch_info_type bfd_nios2_arch =
-  N (bfd_mach_nios2, "nios2", TRUE, NIOS2R1_NEXT);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-ns32k.c ./bfd/cpu-ns32k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-ns32k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-ns32k.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the ns32k architecture.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Almost totally rewritten by Ian Dall from initial work
    by Andrew Cagney.
 
@@ -31,11 +31,11 @@
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (32532, "ns32k:32532", TRUE, 0), /* The word ns32k will match this too.  */
+  N (32532, "ns32k:32532", true, 0), /* The word ns32k will match this too.  */
 };
 
 const bfd_arch_info_type bfd_ns32k_arch =
-  N (32032, "ns32k:32032", FALSE, &arch_info_struct[0]);
+  N (32032, "ns32k:32032", false, &arch_info_struct[0]);
 
 bfd_vma
 _bfd_ns32k_get_displacement (bfd_byte *buffer, int size)
@@ -508,9 +508,12 @@ do_ns32k_reloc (bfd *      abfd,
   x = ( (x & ~howto->dst_mask) | (((x & howto->src_mask) +  relocation) & howto->dst_mask))
 
   location = (bfd_byte *) data + addr;
-  switch (howto->size)
+  switch (bfd_get_reloc_size (howto))
     {
     case 0:
+      break;
+
+    case 1:
       {
 	bfd_vma x = get_data (location, 1);
 	DOIT (x);
@@ -518,7 +521,7 @@ do_ns32k_reloc (bfd *      abfd,
       }
       break;
 
-    case 1:
+    case 2:
       if (relocation)
 	{
 	  bfd_vma x = get_data (location, 2);
@@ -526,7 +529,7 @@ do_ns32k_reloc (bfd *      abfd,
 	  put_data ((bfd_vma) x, location, 2);
 	}
       break;
-    case 2:
+    case 4:
       if (relocation)
 	{
 	  bfd_vma x = get_data (location, 4);
@@ -535,11 +538,7 @@ do_ns32k_reloc (bfd *      abfd,
 	}
       break;
 
-    case 3:
-      /* Do nothing.  */
-      break;
-
-    case 4:
+    case 8:
 #ifdef BFD64
       if (relocation)
 	{
@@ -572,11 +571,9 @@ _bfd_do_ns32k_reloc_contents (reloc_howt
 {
   int size;
   bfd_vma x;
-  bfd_boolean overflow;
+  bool overflow;
 
-  /* If the size is negative, negate RELOCATION.  This isn't very
-     general.  */
-  if (howto->size < 0)
+  if (howto->negate)
     relocation = -relocation;
 
   /* Get the value we are going to relocate.  */
@@ -601,7 +598,7 @@ _bfd_do_ns32k_reloc_contents (reloc_howt
      which we don't check for.  We must either check at every single
      operation, which would be tedious, or we must do the computations
      in a type larger than bfd_vma, which would be inefficient.  */
-  overflow = FALSE;
+  overflow = false;
   if (howto->complain_on_overflow != complain_overflow_dont)
     {
       bfd_vma check;
@@ -676,7 +673,7 @@ _bfd_do_ns32k_reloc_contents (reloc_howt
 
 	    if (signed_check > reloc_signed_max
 		|| signed_check < reloc_signed_min)
-	      overflow = TRUE;
+	      overflow = true;
 	  }
 	  break;
 	case complain_overflow_unsigned:
@@ -688,7 +685,7 @@ _bfd_do_ns32k_reloc_contents (reloc_howt
 	    (((1 << (howto->bitsize - 1)) - 1) << 1) | 1;
 
 	    if (check > reloc_unsigned_max)
-	      overflow = TRUE;
+	      overflow = true;
 	  }
 	  break;
 	case complain_overflow_bitfield:
@@ -701,7 +698,7 @@ _bfd_do_ns32k_reloc_contents (reloc_howt
 	    if ((check & ~reloc_bits) != 0
 		&& (((bfd_vma) signed_check & ~reloc_bits)
 		    != (-(bfd_vma) 1 & ~reloc_bits)))
-	      overflow = TRUE;
+	      overflow = true;
 	  }
 	  break;
 	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.20200303/bfd/cpu-or1k.c ./bfd/cpu-or1k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-or1k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-or1k.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the OpenRISC 1000 architecture.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
    Contributed for OR32 by Ivan Guzvinec  <ivang@opencores.org>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -41,7 +41,7 @@
 
 
 const bfd_arch_info_type bfd_or1knd_arch =
-  N (bfd_mach_or1knd, "or1knd", FALSE, NULL);
+  N (bfd_mach_or1knd, "or1knd", false, NULL);
 
 const bfd_arch_info_type bfd_or1k_arch =
-  N (bfd_mach_or1k, "or1k", TRUE, &bfd_or1knd_arch);
+  N (bfd_mach_or1k, "or1k", true, &bfd_or1knd_arch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-pdp11.c ./bfd/cpu-pdp11.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-pdp11.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-pdp11.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for PDP-11 support.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_pdp11_arch
   "pdp11",
   "pdp11",
   1,	/* Alignment = 16 bit.  */
-  TRUE, /* The one and only.  */
+  true, /* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-pj.c ./bfd/cpu-pj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-pj.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-pj.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Transmeta. sac@pobox.com
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_pj_arch =
   "pj",				/* Arch_name.  */
   "pj",				/* Printable name.  */
   1,
-  TRUE,				/* The default machine.  */
+  true,				/* The default machine.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-plugin.c ./bfd/cpu-plugin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-plugin.c	2020-03-03 02:08:51.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.20200303/bfd/cpu-powerpc.c ./bfd/cpu-powerpc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-powerpc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-powerpc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD PowerPC CPU definition
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
    Contributed by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -54,8 +54,8 @@ powerpc_compatible (const bfd_arch_info_
 
 static void *
 bfd_arch_ppc_nop_fill (bfd_size_type count,
-		       bfd_boolean is_bigendian,
-		       bfd_boolean code)
+		       bool is_bigendian,
+		       bool code)
 {
   bfd_byte *fill;
 
@@ -107,34 +107,34 @@ const bfd_arch_info_type bfd_powerpc_arc
 {
 #if BFD_DEFAULT_TARGET_SIZE == 64
   /* Default for 64 bit target.  */
-  N (64, bfd_mach_ppc64, "powerpc:common64", TRUE, bfd_powerpc_archs + 1),
+  N (64, bfd_mach_ppc64, "powerpc:common64", true, bfd_powerpc_archs + 1),
   /* elf32-ppc:ppc_elf_object_p relies on the default 32 bit arch
      being immediately after the 64 bit default.  */
-  N (32, bfd_mach_ppc, "powerpc:common", FALSE, bfd_powerpc_archs + 2),
+  N (32, bfd_mach_ppc, "powerpc:common", false, bfd_powerpc_archs + 2),
 #else
   /* Default arch must come first.  */
-  N (32, bfd_mach_ppc, "powerpc:common", TRUE, bfd_powerpc_archs + 1),
+  N (32, bfd_mach_ppc, "powerpc:common", true, bfd_powerpc_archs + 1),
   /* elf64-ppc:ppc64_elf_object_p relies on the default 64 bit arch
      being immediately after the 32 bit default.  */
-  N (64, bfd_mach_ppc64, "powerpc:common64", FALSE, bfd_powerpc_archs + 2),
+  N (64, bfd_mach_ppc64, "powerpc:common64", false, bfd_powerpc_archs + 2),
 #endif
-  N (32, bfd_mach_ppc_603,      "powerpc:603",     FALSE, bfd_powerpc_archs + 3),
-  N (32, bfd_mach_ppc_ec603e,   "powerpc:EC603e",  FALSE, bfd_powerpc_archs + 4),
-  N (32, bfd_mach_ppc_604,      "powerpc:604",     FALSE, bfd_powerpc_archs + 5),
-  N (32, bfd_mach_ppc_403,      "powerpc:403",     FALSE, bfd_powerpc_archs + 6),
-  N (32, bfd_mach_ppc_601,      "powerpc:601",     FALSE, bfd_powerpc_archs + 7),
-  N (64, bfd_mach_ppc_620,      "powerpc:620",     FALSE, bfd_powerpc_archs + 8),
-  N (64, bfd_mach_ppc_630,      "powerpc:630",     FALSE, bfd_powerpc_archs + 9),
-  N (64, bfd_mach_ppc_a35,      "powerpc:a35",     FALSE, bfd_powerpc_archs + 10),
-  N (64, bfd_mach_ppc_rs64ii,   "powerpc:rs64ii",  FALSE, bfd_powerpc_archs + 11),
-  N (64, bfd_mach_ppc_rs64iii,  "powerpc:rs64iii", FALSE, bfd_powerpc_archs + 12),
-  N (32, bfd_mach_ppc_7400,     "powerpc:7400",    FALSE, bfd_powerpc_archs + 13),
-  N (32, bfd_mach_ppc_e500,     "powerpc:e500",    FALSE, bfd_powerpc_archs + 14),
-  N (32, bfd_mach_ppc_e500mc,   "powerpc:e500mc",  FALSE, bfd_powerpc_archs + 15),
-  N (64, bfd_mach_ppc_e500mc64, "powerpc:e500mc64",FALSE, bfd_powerpc_archs + 16),
-  N (32, bfd_mach_ppc_860,      "powerpc:MPC8XX",  FALSE, bfd_powerpc_archs + 17),
-  N (32, bfd_mach_ppc_750,      "powerpc:750",     FALSE, bfd_powerpc_archs + 18),
-  N (32, bfd_mach_ppc_titan,    "powerpc:titan",   FALSE, bfd_powerpc_archs + 19),
+  N (32, bfd_mach_ppc_603,      "powerpc:603",     false, bfd_powerpc_archs + 3),
+  N (32, bfd_mach_ppc_ec603e,   "powerpc:EC603e",  false, bfd_powerpc_archs + 4),
+  N (32, bfd_mach_ppc_604,      "powerpc:604",     false, bfd_powerpc_archs + 5),
+  N (32, bfd_mach_ppc_403,      "powerpc:403",     false, bfd_powerpc_archs + 6),
+  N (32, bfd_mach_ppc_601,      "powerpc:601",     false, bfd_powerpc_archs + 7),
+  N (64, bfd_mach_ppc_620,      "powerpc:620",     false, bfd_powerpc_archs + 8),
+  N (64, bfd_mach_ppc_630,      "powerpc:630",     false, bfd_powerpc_archs + 9),
+  N (64, bfd_mach_ppc_a35,      "powerpc:a35",     false, bfd_powerpc_archs + 10),
+  N (64, bfd_mach_ppc_rs64ii,   "powerpc:rs64ii",  false, bfd_powerpc_archs + 11),
+  N (64, bfd_mach_ppc_rs64iii,  "powerpc:rs64iii", false, bfd_powerpc_archs + 12),
+  N (32, bfd_mach_ppc_7400,     "powerpc:7400",    false, bfd_powerpc_archs + 13),
+  N (32, bfd_mach_ppc_e500,     "powerpc:e500",    false, bfd_powerpc_archs + 14),
+  N (32, bfd_mach_ppc_e500mc,   "powerpc:e500mc",  false, bfd_powerpc_archs + 15),
+  N (64, bfd_mach_ppc_e500mc64, "powerpc:e500mc64",false, bfd_powerpc_archs + 16),
+  N (32, bfd_mach_ppc_860,      "powerpc:MPC8XX",  false, bfd_powerpc_archs + 17),
+  N (32, bfd_mach_ppc_750,      "powerpc:750",     false, bfd_powerpc_archs + 18),
+  N (32, bfd_mach_ppc_titan,    "powerpc:titan",   false, bfd_powerpc_archs + 19),
 
   {
     16,	/* Bits in a word.  */
@@ -145,7 +145,7 @@ const bfd_arch_info_type bfd_powerpc_arc
     "powerpc",
     "powerpc:vle",
     3,
-    FALSE, /* Not the default.  */
+    false, /* Not the default.  */
     powerpc_compatible,
     bfd_default_scan,
     bfd_arch_default_fill,
@@ -153,6 +153,6 @@ const bfd_arch_info_type bfd_powerpc_arc
     0 /* Maximum offset of a reloc from the start of an insn.  */
   },
 
-  N (64, bfd_mach_ppc_e5500, "powerpc:e5500", FALSE, bfd_powerpc_archs + 21),
-  N (64, bfd_mach_ppc_e6500, "powerpc:e6500", FALSE, NULL)
+  N (64, bfd_mach_ppc_e5500, "powerpc:e5500", false, bfd_powerpc_archs + 21),
+  N (64, bfd_mach_ppc_e6500, "powerpc:e6500", 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.20200303/bfd/cpu-pru.c ./bfd/cpu-pru.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-pru.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-pru.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the TI PRU microprocessor.
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 Free Software Foundation, Inc.
    Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -41,4 +41,4 @@
     0 /* Maximum offset of a reloc from the start of an insn.  */ \
   }
 
-const bfd_arch_info_type bfd_pru_arch = N (32, 32, 0, "pru", TRUE, NULL);
+const bfd_arch_info_type bfd_pru_arch = N (32, 32, 0, "pru", true, 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.20200303/bfd/cpu-riscv.c ./bfd/cpu-riscv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-riscv.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-riscv.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD backend for RISC-V
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    Contributed by Andrew Waterman (andrew@sifive.com).
    Based on MIPS target.
@@ -23,9 +23,7 @@
 #include "sysdep.h"
 #include "bfd.h"
 #include "libbfd.h"
-
-/* This routine is provided two arch_infos and returns an arch_info
-   that is compatible with both, or NULL if none exists.  */
+#include "cpu-riscv.h"
 
 static const bfd_arch_info_type *
 riscv_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
@@ -39,6 +37,33 @@ riscv_compatible (const bfd_arch_info_ty
   return a;
 }
 
+/* Return TRUE if STRING matches the architecture described by INFO.  */
+
+static bool
+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 +76,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.  */\
@@ -70,11 +95,60 @@ enum
    and each entry except the last should end with NN (my enum value).  */
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (64, bfd_mach_riscv64, "riscv:rv64", FALSE, NN (I_riscv64)),
-  N (32, bfd_mach_riscv32, "riscv:rv32", FALSE, NULL)
+  N (64, bfd_mach_riscv64, "riscv:rv64", false, NN (I_riscv64)),
+  N (32, bfd_mach_riscv32, "riscv:rv32", false, NULL)
 };
 
 /* The default architecture is riscv:rv64.  */
-
 const bfd_arch_info_type bfd_riscv_arch =
-  N (64, 0, "riscv", TRUE, &arch_info_struct[0]);
+  N (64, 0, "riscv", true, &arch_info_struct[0]);
+
+/* List for all supported ISA spec versions.  */
+const struct riscv_spec riscv_isa_specs[] =
+{
+  {"2.2",      ISA_SPEC_CLASS_2P2},
+  {"20190608", ISA_SPEC_CLASS_20190608},
+  {"20191213", ISA_SPEC_CLASS_20191213},
+};
+
+/* List for all supported privileged spec versions.  */
+const struct riscv_spec riscv_priv_specs[] =
+{
+  {"1.9.1", PRIV_SPEC_CLASS_1P9P1},
+  {"1.10",  PRIV_SPEC_CLASS_1P10},
+  {"1.11",  PRIV_SPEC_CLASS_1P11},
+  {"1.12",  PRIV_SPEC_CLASS_1P12},
+  {"1.13",  PRIV_SPEC_CLASS_1P13},
+};
+
+/* 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.  */
+
+void
+riscv_get_priv_spec_class_from_numbers (unsigned int major,
+					unsigned int minor,
+					unsigned int revision,
+					enum riscv_spec_class *class)
+{
+  enum riscv_spec_class class_t = *class;
+  char buf[36];
+
+  if (revision != 0)
+    snprintf (buf, sizeof (buf), "%u.%u.%u", major, minor, revision);
+  else
+    snprintf (buf, sizeof (buf), "%u.%u", major, minor);
+
+  RISCV_GET_PRIV_SPEC_CLASS (buf, class_t);
+  *class = class_t;
+}
+
+/* Define mapping symbols for riscv.  */
+
+bool
+riscv_elf_is_mapping_symbols (const char *name)
+{
+  return (!strcmp (name, "$d")
+	  || !strcmp (name, "$x")
+	  || !strncmp (name, "$xrv", 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.20200303/bfd/cpu-riscv.h ./bfd/cpu-riscv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-riscv.h	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/cpu-riscv.h	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,86 @@
+/* RISC-V spec version controlling support.
+   Copyright (C) 2019-2025 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.  */
+
+enum riscv_spec_class
+{
+  /* ISA spec.  */
+  ISA_SPEC_CLASS_NONE = 0,
+  ISA_SPEC_CLASS_2P2,
+  ISA_SPEC_CLASS_20190608,
+  ISA_SPEC_CLASS_20191213,
+  ISA_SPEC_CLASS_DRAFT,
+
+  /* Privileged spec.  */
+  PRIV_SPEC_CLASS_NONE,
+  PRIV_SPEC_CLASS_1P9P1,
+  PRIV_SPEC_CLASS_1P10,
+  PRIV_SPEC_CLASS_1P11,
+  PRIV_SPEC_CLASS_1P12,
+  PRIV_SPEC_CLASS_1P13,
+  PRIV_SPEC_CLASS_DRAFT,
+};
+
+struct riscv_spec
+{
+  const char *name;
+  enum riscv_spec_class spec_class;
+};
+
+extern const struct riscv_spec riscv_isa_specs[];
+extern const struct riscv_spec riscv_priv_specs[];
+
+#define RISCV_GET_SPEC_CLASS(UTYPE, LTYPE, NAME, CLASS)			\
+  do									\
+    {									\
+      if (NAME == NULL)							\
+	break;								\
+									\
+      int i_spec = UTYPE##_SPEC_CLASS_NONE + 1;				\
+      for (; i_spec < UTYPE##_SPEC_CLASS_DRAFT; i_spec++)		\
+	{								\
+	  int j_spec = i_spec - UTYPE##_SPEC_CLASS_NONE -1;		\
+	  if (riscv_##LTYPE##_specs[j_spec].name			\
+	      && strcmp (riscv_##LTYPE##_specs[j_spec].name, NAME) == 0)\
+	  {								\
+	    CLASS = riscv_##LTYPE##_specs[j_spec].spec_class;		\
+	    break;							\
+	  }								\
+	}								\
+    }									\
+  while (0)
+
+#define RISCV_GET_SPEC_NAME(UTYPE, LTYPE, NAME, CLASS)			\
+  (NAME) = riscv_##LTYPE##_specs[(CLASS) - UTYPE##_SPEC_CLASS_NONE - 1].name
+
+#define RISCV_GET_ISA_SPEC_CLASS(NAME, CLASS)	\
+  RISCV_GET_SPEC_CLASS(ISA, isa, NAME, CLASS)
+#define RISCV_GET_PRIV_SPEC_CLASS(NAME, CLASS)	\
+  RISCV_GET_SPEC_CLASS(PRIV, priv, NAME, CLASS)
+#define RISCV_GET_PRIV_SPEC_NAME(NAME, CLASS)	\
+  RISCV_GET_SPEC_NAME(PRIV, priv, NAME, CLASS)
+
+extern void
+riscv_get_priv_spec_class_from_numbers (unsigned int,
+					unsigned int,
+					unsigned int,
+					enum riscv_spec_class *);
+
+extern bool
+riscv_elf_is_mapping_symbols (const 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.20200303/bfd/cpu-rl78.c ./bfd/cpu-rl78.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-rl78.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-rl78.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the RL78 processor.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_rl78_arch =
   "rl78",			/* Architecture name.  */
   "rl78",			/* Printable name.  */
   4,				/* Section align power.  */
-  TRUE,				/* The default ?  */
+  true,				/* The default ?  */
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-rs6000.c ./bfd/cpu-rs6000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-rs6000.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-rs6000.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for rs6000 support
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Mimi Phuong-Thao Vo of IBM
    and John Gilmore of Cygnus Support.
 
@@ -66,10 +66,10 @@ rs6000_compatible (const bfd_arch_info_t
 
 static const bfd_arch_info_type arch_info_struct[3] =
 {
-  N (bfd_mach_rs6k_rs1, "rs6000:rs1", FALSE, arch_info_struct + 1),
-  N (bfd_mach_rs6k_rsc, "rs6000:rsc", FALSE, arch_info_struct + 2),
-  N (bfd_mach_rs6k_rs2, "rs6000:rs2", FALSE, NULL)
+  N (bfd_mach_rs6k_rs1, "rs6000:rs1", false, arch_info_struct + 1),
+  N (bfd_mach_rs6k_rsc, "rs6000:rsc", false, arch_info_struct + 2),
+  N (bfd_mach_rs6k_rs2, "rs6000:rs2", false, NULL)
 };
 
 const bfd_arch_info_type bfd_rs6000_arch =
-  N (bfd_mach_rs6k, "rs6000:6000", TRUE, arch_info_struct + 0);
+  N (bfd_mach_rs6k, "rs6000:6000", true, arch_info_struct + 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.20200303/bfd/cpu-rx.c ./bfd/cpu-rx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-rx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-rx.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the RX processor.
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -27,13 +27,12 @@
     bfd_default_compatible, bfd_default_scan,			\
     bfd_arch_default_fill, next, 0 }
 
-static const bfd_arch_info_type arch_info_struct[3] =
+static const bfd_arch_info_type arch_info_struct[2] =
 {
-  N (bfd_mach_rx,    "rx",    3, FALSE, arch_info_struct + 1),
-  N (bfd_mach_rx_v2, "rx:v2", 3, FALSE, arch_info_struct + 2),
-  N (bfd_mach_rx_v3, "rx:v3", 3, FALSE, NULL)
+  N (bfd_mach_rx_v2, "rx:v2", 3, false, arch_info_struct + 1),
+  N (bfd_mach_rx_v3, "rx:v3", 3, false, NULL)
 };
 
 const bfd_arch_info_type bfd_rx_arch =
-  N (bfd_mach_rx,    "rx",    4, TRUE, arch_info_struct + 0);
+  N (bfd_mach_rx,    "rx",    4, true, arch_info_struct + 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.20200303/bfd/cpu-s12z.c ./bfd/cpu-s12z.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-s12z.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-s12z.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Freescale 9S12Z processor
-   Copyright (C) 2008-2019 Free Software Foundation, Inc.
+   Copyright (C) 2008-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_s12z_arch =
   "s12z",
   "s12z",
   4,    /* Section alignment power.  */
-  TRUE,
+  true,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-s390.c ./bfd/cpu-s390.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-s390.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-s390.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the s390 processor.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
    Contributed by Carl B. Pedersen and Martin Schwidefsky.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -43,12 +43,12 @@
 
 #if BFD_DEFAULT_TARGET_SIZE == 64
 static const bfd_arch_info_type bfd_s390_31_arch =
-  N (32, bfd_mach_s390_31, "s390:31-bit", FALSE, NULL);
+  N (32, bfd_mach_s390_31, "s390:31-bit", false, NULL);
 const bfd_arch_info_type bfd_s390_arch =
-  N (64, bfd_mach_s390_64, "s390:64-bit", TRUE, &bfd_s390_31_arch);
+  N (64, bfd_mach_s390_64, "s390:64-bit", true, &bfd_s390_31_arch);
 #else
 static const bfd_arch_info_type bfd_s390_64_arch =
-  N (64, bfd_mach_s390_64, "s390:64-bit", FALSE, NULL);
+  N (64, bfd_mach_s390_64, "s390:64-bit", false, NULL);
 const bfd_arch_info_type bfd_s390_arch =
-  N (32, bfd_mach_s390_31, "s390:31-bit", TRUE, &bfd_s390_64_arch);
+  N (32, bfd_mach_s390_31, "s390:31-bit", true, &bfd_s390_64_arch);
 #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.20200303/bfd/cpu-score.c ./bfd/cpu-score.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-score.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-score.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the score processor
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 Free Software Foundation, Inc.
    Contributed by
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -63,8 +63,8 @@ compatible (const bfd_arch_info_type * a
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (bfd_mach_score3, "score3", FALSE, NULL),
+  N (bfd_mach_score3, "score3", false, NULL),
 };
 
 const bfd_arch_info_type bfd_score_arch =
-  N (bfd_mach_score7, "score7", TRUE, & arch_info_struct[0]);
+  N (bfd_mach_score7, "score7", true, & arch_info_struct[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.20200303/bfd/cpu-sh.c ./bfd/cpu-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-sh.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-sh.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -45,29 +45,29 @@
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (bfd_mach_sh2,          "sh2",       FALSE, arch_info_struct + 1),
-  N (bfd_mach_sh2e,         "sh2e",      FALSE, arch_info_struct + 2),
-  N (bfd_mach_sh_dsp,       "sh-dsp",    FALSE, arch_info_struct + 3),
-  N (bfd_mach_sh3,          "sh3",       FALSE, arch_info_struct + 4),
-  N (bfd_mach_sh3_nommu,    "sh3-nommu", FALSE, arch_info_struct + 5),
-  N (bfd_mach_sh3_dsp,      "sh3-dsp",   FALSE, arch_info_struct + 6),
-  N (bfd_mach_sh3e,         "sh3e",      FALSE, arch_info_struct + 7),
-  N (bfd_mach_sh4,          "sh4",       FALSE, arch_info_struct + 8),
-  N (bfd_mach_sh4a,         "sh4a",      FALSE, arch_info_struct + 9),
-  N (bfd_mach_sh4al_dsp,    "sh4al-dsp", FALSE, arch_info_struct + 10),
-  N (bfd_mach_sh4_nofpu,    "sh4-nofpu", FALSE, arch_info_struct + 11),
-  N (bfd_mach_sh4_nommu_nofpu, "sh4-nommu-nofpu", FALSE, arch_info_struct + 12),
-  N (bfd_mach_sh4a_nofpu,   "sh4a-nofpu", FALSE, arch_info_struct + 13),
-  N (bfd_mach_sh2a,         "sh2a",       FALSE, arch_info_struct + 14),
-  N (bfd_mach_sh2a_nofpu,   "sh2a-nofpu", FALSE, arch_info_struct + 15),
-  N (bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu, "sh2a-nofpu-or-sh4-nommu-nofpu", FALSE, arch_info_struct + 16),
-  N (bfd_mach_sh2a_nofpu_or_sh3_nommu, "sh2a-nofpu-or-sh3-nommu", FALSE, arch_info_struct + 17),
-  N (bfd_mach_sh2a_or_sh4,  "sh2a-or-sh4",  FALSE, arch_info_struct + 18),
-  N (bfd_mach_sh2a_or_sh3e, "sh2a-or-sh3e", FALSE, NULL)
+  N (bfd_mach_sh2,          "sh2",       false, arch_info_struct + 1),
+  N (bfd_mach_sh2e,         "sh2e",      false, arch_info_struct + 2),
+  N (bfd_mach_sh_dsp,       "sh-dsp",    false, arch_info_struct + 3),
+  N (bfd_mach_sh3,          "sh3",       false, arch_info_struct + 4),
+  N (bfd_mach_sh3_nommu,    "sh3-nommu", false, arch_info_struct + 5),
+  N (bfd_mach_sh3_dsp,      "sh3-dsp",   false, arch_info_struct + 6),
+  N (bfd_mach_sh3e,         "sh3e",      false, arch_info_struct + 7),
+  N (bfd_mach_sh4,          "sh4",       false, arch_info_struct + 8),
+  N (bfd_mach_sh4a,         "sh4a",      false, arch_info_struct + 9),
+  N (bfd_mach_sh4al_dsp,    "sh4al-dsp", false, arch_info_struct + 10),
+  N (bfd_mach_sh4_nofpu,    "sh4-nofpu", false, arch_info_struct + 11),
+  N (bfd_mach_sh4_nommu_nofpu, "sh4-nommu-nofpu", false, arch_info_struct + 12),
+  N (bfd_mach_sh4a_nofpu,   "sh4a-nofpu", false, arch_info_struct + 13),
+  N (bfd_mach_sh2a,         "sh2a",       false, arch_info_struct + 14),
+  N (bfd_mach_sh2a_nofpu,   "sh2a-nofpu", false, arch_info_struct + 15),
+  N (bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu, "sh2a-nofpu-or-sh4-nommu-nofpu", false, arch_info_struct + 16),
+  N (bfd_mach_sh2a_nofpu_or_sh3_nommu, "sh2a-nofpu-or-sh3-nommu", false, arch_info_struct + 17),
+  N (bfd_mach_sh2a_or_sh4,  "sh2a-or-sh4",  false, arch_info_struct + 18),
+  N (bfd_mach_sh2a_or_sh3e, "sh2a-or-sh3e", false, NULL)
 };
 
 const bfd_arch_info_type bfd_sh_arch =
-  N (bfd_mach_sh, "sh", TRUE, arch_info_struct + 0);
+  N (bfd_mach_sh, "sh", true, arch_info_struct + 0);
 
 /* This table defines the mappings from the BFD internal numbering
    system to the opcodes internal flags system.
@@ -117,9 +117,6 @@ sh_get_arch_from_bfd_mach (unsigned long
     else
       i++;
 
-  /* Machine not found.   */
-  BFD_FAIL();
-
   return SH_ARCH_UNKNOWN_ARCH;
 }
 
@@ -139,9 +136,6 @@ sh_get_arch_up_from_bfd_mach (unsigned l
     else
       i++;
 
-  /* Machine not found.  */
-  BFD_FAIL();
-
   return SH_ARCH_UNKNOWN_ARCH;
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-sparc.c ./bfd/cpu-sparc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-sparc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-sparc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the SPARC architecture.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -42,28 +42,28 @@
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (32, bfd_mach_sparc_sparclet,     "sparc:sparclet",     FALSE, arch_info_struct + 1),
-  N (32, bfd_mach_sparc_sparclite,    "sparc:sparclite",    FALSE, arch_info_struct + 2),
-  N (32, bfd_mach_sparc_v8plus,       "sparc:v8plus",       FALSE, arch_info_struct + 3),
-  N (32, bfd_mach_sparc_v8plusa,      "sparc:v8plusa",      FALSE, arch_info_struct + 4),
-  N (32, bfd_mach_sparc_sparclite_le, "sparc:sparclite_le", FALSE, arch_info_struct + 5),
-  N (64, bfd_mach_sparc_v9,           "sparc:v9",           FALSE, arch_info_struct + 6),
-  N (64, bfd_mach_sparc_v9a,          "sparc:v9a",          FALSE, arch_info_struct + 7),
-  N (32, bfd_mach_sparc_v8plusb,      "sparc:v8plusb",      FALSE, arch_info_struct + 8),
-  N (64, bfd_mach_sparc_v9b,          "sparc:v9b",          FALSE, arch_info_struct + 9),
-  N (32, bfd_mach_sparc_v8plusc,      "sparc:v8plusc",      FALSE, arch_info_struct + 10),
-  N (64, bfd_mach_sparc_v9c,          "sparc:v9c",          FALSE, arch_info_struct + 11),
-  N (32, bfd_mach_sparc_v8plusd,      "sparc:v8plusd",      FALSE, arch_info_struct + 12),
-  N (64, bfd_mach_sparc_v9d,          "sparc:v9d",          FALSE, arch_info_struct + 13),
-  N (32, bfd_mach_sparc_v8pluse,      "sparc:v8pluse",      FALSE, arch_info_struct + 14),
-  N (64, bfd_mach_sparc_v9e,          "sparc:v9e",          FALSE, arch_info_struct + 15),
-  N (32, bfd_mach_sparc_v8plusv,      "sparc:v8plusv",      FALSE, arch_info_struct + 16),
-  N (64, bfd_mach_sparc_v9v,          "sparc:v9v",          FALSE, arch_info_struct + 17),
-  N (32, bfd_mach_sparc_v8plusm,      "sparc:v8plusm",      FALSE, arch_info_struct + 18),
-  N (64, bfd_mach_sparc_v9m,          "sparc:v9m",          FALSE, arch_info_struct + 19),
-  N (32, bfd_mach_sparc_v8plusm8,     "sparc:v8plusm8",     FALSE, arch_info_struct + 20),
-  N (64, bfd_mach_sparc_v9m8,         "sparc:v9m8",         FALSE, NULL)
+  N (32, bfd_mach_sparc_sparclet,     "sparc:sparclet",     false, arch_info_struct + 1),
+  N (32, bfd_mach_sparc_sparclite,    "sparc:sparclite",    false, arch_info_struct + 2),
+  N (32, bfd_mach_sparc_v8plus,       "sparc:v8plus",       false, arch_info_struct + 3),
+  N (32, bfd_mach_sparc_v8plusa,      "sparc:v8plusa",      false, arch_info_struct + 4),
+  N (32, bfd_mach_sparc_sparclite_le, "sparc:sparclite_le", false, arch_info_struct + 5),
+  N (64, bfd_mach_sparc_v9,           "sparc:v9",           false, arch_info_struct + 6),
+  N (64, bfd_mach_sparc_v9a,          "sparc:v9a",          false, arch_info_struct + 7),
+  N (32, bfd_mach_sparc_v8plusb,      "sparc:v8plusb",      false, arch_info_struct + 8),
+  N (64, bfd_mach_sparc_v9b,          "sparc:v9b",          false, arch_info_struct + 9),
+  N (32, bfd_mach_sparc_v8plusc,      "sparc:v8plusc",      false, arch_info_struct + 10),
+  N (64, bfd_mach_sparc_v9c,          "sparc:v9c",          false, arch_info_struct + 11),
+  N (32, bfd_mach_sparc_v8plusd,      "sparc:v8plusd",      false, arch_info_struct + 12),
+  N (64, bfd_mach_sparc_v9d,          "sparc:v9d",          false, arch_info_struct + 13),
+  N (32, bfd_mach_sparc_v8pluse,      "sparc:v8pluse",      false, arch_info_struct + 14),
+  N (64, bfd_mach_sparc_v9e,          "sparc:v9e",          false, arch_info_struct + 15),
+  N (32, bfd_mach_sparc_v8plusv,      "sparc:v8plusv",      false, arch_info_struct + 16),
+  N (64, bfd_mach_sparc_v9v,          "sparc:v9v",          false, arch_info_struct + 17),
+  N (32, bfd_mach_sparc_v8plusm,      "sparc:v8plusm",      false, arch_info_struct + 18),
+  N (64, bfd_mach_sparc_v9m,          "sparc:v9m",          false, arch_info_struct + 19),
+  N (32, bfd_mach_sparc_v8plusm8,     "sparc:v8plusm8",     false, arch_info_struct + 20),
+  N (64, bfd_mach_sparc_v9m8,         "sparc:v9m8",         false, NULL)
 };
 
 const bfd_arch_info_type bfd_sparc_arch =
-  N (32, bfd_mach_sparc, "sparc", TRUE, arch_info_struct);
+  N (32, bfd_mach_sparc, "sparc", true, arch_info_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.20200303/bfd/cpu-spu.c ./bfd/cpu-spu.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-spu.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-spu.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -44,7 +44,7 @@ const bfd_arch_info_type bfd_spu_arch =
   "spu",		/* Architecture name.  */
   "spu:256K",		/* Printable name.  */
   3,			/* Section alignment power.  */
-  TRUE,			/* Default machine.  */
+  true,			/* Default machine.  */
   spu_compatible,	/* The spu is only compatible with itself, see above.  */
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic30.c ./bfd/cpu-tic30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic30.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-tic30.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_tic30_arch
   "tic30",
   "tms320c30",
   2,
-  TRUE,				/* The one and only.  */
+  true,				/* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic4x.c ./bfd/cpu-tic4x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic4x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-tic4x.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz)
 
@@ -24,7 +24,7 @@
 #include "bfd.h"
 #include "libbfd.h"
 
-static bfd_boolean
+static bool
 tic4x_scan (const struct bfd_arch_info *info,
 	    const char *string)
 {
@@ -35,14 +35,14 @@ tic4x_scan (const struct bfd_arch_info *
   if (*string == 'C' || *string == 'c')
     string++;
   if (string[1] < '0' && string[1] > '9')
-    return FALSE;
+    return false;
 
   if (*string == '3')
     return (info->mach == bfd_mach_tic3x);
   else if (*string == '4')
     return info->mach == bfd_mach_tic4x;
 
-  return FALSE;
+  return false;
 }
 
 #define N(NUMBER, NAME, PRINT, DEFAULT, NEXT)		\
@@ -64,7 +64,7 @@ tic4x_scan (const struct bfd_arch_info *
   }
 
 const bfd_arch_info_type bfd_tic3x_arch =
-  N (bfd_mach_tic3x, "tic3x", "tms320c3x", FALSE, NULL);
+  N (bfd_mach_tic3x, "tic3x", "tms320c3x", false, NULL);
 
 const bfd_arch_info_type bfd_tic4x_arch =
-  N (bfd_mach_tic4x, "tic4x", "tms320c4x", TRUE, &bfd_tic3x_arch);
+  N (bfd_mach_tic4x, "tic4x", "tms320c4x", true, &bfd_tic3x_arch);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic54x.c ./bfd/cpu-tic54x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic54x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-tic54x.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_tic54x_arch
   "tic54x",
   "tms320c54x",
   1,
-  TRUE,				/* The one and only.  */
+  true,				/* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic6x.c ./bfd/cpu-tic6x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic6x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-tic6x.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the TI C6X processor.
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_tic6x_arch
   "tic6x", /* Architecture name.  */
   "tic6x", /* Printable name.  */
   2, /* Section alignment power.  */
-  TRUE, /* Default machine for this architecture.  */
+  true, /* Default machine for this architecture.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic80.c ./bfd/cpu-tic80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tic80.c	2020-03-03 02:08:51.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.20200303/bfd/cpu-tilegx.c ./bfd/cpu-tilegx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tilegx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-tilegx.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the TILE-Gx processor.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -41,8 +41,8 @@
   }
 
 const bfd_arch_info_type bfd_tilegx32_arch =
-  N (32, bfd_mach_tilegx32, "tilegx32", FALSE, NULL);
+  N (32, bfd_mach_tilegx32, "tilegx32", false, NULL);
 
 const bfd_arch_info_type bfd_tilegx_arch =
-  N (64, bfd_mach_tilegx, "tilegx", TRUE, &bfd_tilegx32_arch);
+  N (64, bfd_mach_tilegx, "tilegx", true, &bfd_tilegx32_arch);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tilepro.c ./bfd/cpu-tilepro.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-tilepro.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-tilepro.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the TILEPro processor.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_tilepro_arc
   "tilepro",
   "tilepro",
   3,
-  TRUE,
+  true,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-v850.c ./bfd/cpu-v850.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-v850.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-v850.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the NEC V850 processor
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,13 +29,13 @@
 
 static const bfd_arch_info_type arch_info_struct[6] =
 {
-  N (bfd_mach_v850e3v5, "v850e3v5", FALSE, arch_info_struct + 1),
-  N (bfd_mach_v850e3v5, "v850e2v4", FALSE, arch_info_struct + 2),
-  N (bfd_mach_v850e2v3, "v850e2v3", FALSE, arch_info_struct + 3),
-  N (bfd_mach_v850e2,	"v850e2",   FALSE, arch_info_struct + 4),
-  N (bfd_mach_v850e1,	"v850e1",   FALSE, arch_info_struct + 5),
-  N (bfd_mach_v850e,	"v850e",    FALSE, NULL)
+  N (bfd_mach_v850e3v5, "v850e3v5", false, arch_info_struct + 1),
+  N (bfd_mach_v850e3v5, "v850e2v4", false, arch_info_struct + 2),
+  N (bfd_mach_v850e2v3, "v850e2v3", false, arch_info_struct + 3),
+  N (bfd_mach_v850e2,	"v850e2",   false, arch_info_struct + 4),
+  N (bfd_mach_v850e1,	"v850e1",   false, arch_info_struct + 5),
+  N (bfd_mach_v850e,	"v850e",    false, NULL)
 };
 
 const bfd_arch_info_type bfd_v850_arch =
-  N (bfd_mach_v850,     "v850",     TRUE,  arch_info_struct + 0);
+  N (bfd_mach_v850,     "v850",     true,  arch_info_struct + 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.20200303/bfd/cpu-v850_rh850.c ./bfd/cpu-v850_rh850.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-v850_rh850.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-v850_rh850.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,14 +29,14 @@
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  R (bfd_mach_v850e3v5, "v850e3v5",	FALSE, & arch_info_struct[1]),
-  R (bfd_mach_v850e3v5, "v850e2v4",	FALSE, & arch_info_struct[2]),
-  R (bfd_mach_v850e2v3, "v850e2v3",	FALSE, & arch_info_struct[3]),
-  R (bfd_mach_v850e2,	"v850e2",	FALSE, & arch_info_struct[4]),
-  R (bfd_mach_v850e1,	"v850e1",	FALSE, & arch_info_struct[5]),
-  R (bfd_mach_v850e,	"v850e",	FALSE, & arch_info_struct[6]),
-  R (bfd_mach_v850,	"v850-rh850",	FALSE, NULL) /* For backwards compatibility.  */
+  R (bfd_mach_v850e3v5, "v850e3v5",	false, & arch_info_struct[1]),
+  R (bfd_mach_v850e3v5, "v850e2v4",	false, & arch_info_struct[2]),
+  R (bfd_mach_v850e2v3, "v850e2v3",	false, & arch_info_struct[3]),
+  R (bfd_mach_v850e2,	"v850e2",	false, & arch_info_struct[4]),
+  R (bfd_mach_v850e1,	"v850e1",	false, & arch_info_struct[5]),
+  R (bfd_mach_v850e,	"v850e",	false, & arch_info_struct[6]),
+  R (bfd_mach_v850,	"v850-rh850",	false, NULL) /* For backwards compatibility.  */
 };
 
 const bfd_arch_info_type bfd_v850_rh850_arch =
-  R (bfd_mach_v850,	"v850:rh850",	TRUE,  & arch_info_struct[0]);
+  R (bfd_mach_v850,	"v850:rh850",	true,  & arch_info_struct[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.20200303/bfd/cpu-vax.c ./bfd/cpu-vax.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-vax.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-vax.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* bfd back-end for vax support
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_vax_arch =
   "vax",
   "vax",
   3,
-  TRUE, /* The one and only.  */
+  true, /* The one and only.  */
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-visium.c ./bfd/cpu-visium.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-visium.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-visium.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD support for the Visium processor.
 
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -33,7 +33,7 @@ const bfd_arch_info_type bfd_visium_arch
   "visium",			/* Architecture name.  */
   "visium",			/* Machine name.  */
   2,				/* Section align power.  */
-  TRUE,				/* The default ?  */
+  true,				/* The default ?  */
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-wasm32.c ./bfd/cpu-wasm32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-wasm32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-wasm32.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the WebAssembly target
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,8 +29,8 @@
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  N (bfd_mach_wasm32, "wasm32", TRUE, NULL)
+  N (bfd_mach_wasm32, "wasm32", true, NULL)
 };
 
 const bfd_arch_info_type bfd_wasm32_arch =
-  N (bfd_mach_wasm32, "wasm32", TRUE, & arch_info_struct[0]);
+  N (bfd_mach_wasm32, "wasm32", true, & arch_info_struct[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.20200303/bfd/cpu-xc16x.c ./bfd/cpu-xc16x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-xc16x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-xc16x.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,53 +0,0 @@
-/* BFD support for the Infineon XC16X Microcontroller.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
-   Contributed by KPIT Cummins Infosystems
-
-   This file is part of BFD, the Binary File Descriptor library.
-   Contributed by Anil Paranjpe(anilp1@kpitcummins.com)
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU 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 "libbfd.h"
-
-#define N(BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT)	\
-  {							\
-    16,        /* Bits in a word.  */			\
-    BITS_ADDR, /* Bits in an address.  */		\
-    8,	       /* Bits in a byte.  */			\
-    bfd_arch_xc16x,					\
-    NUMBER,						\
-    "xc16x",						\
-    PRINT,						\
-    1,		/* Section alignment power.  */		\
-    DEFAULT,						\
-    bfd_default_compatible,				\
-    bfd_default_scan,					\
-    bfd_arch_default_fill,				\
-    NEXT,						\
-    0 /* Maximum offset of a reloc from the start of an insn.  */ \
-  }
-
-const bfd_arch_info_type xc16xs_info_struct =
-  N (16, bfd_mach_xc16xs, "xc16xs", FALSE, NULL);
-
-const bfd_arch_info_type xc16xl_info_struct =
-  N (32, bfd_mach_xc16xl, "xc16xl", FALSE, & xc16xs_info_struct);
-
-const bfd_arch_info_type bfd_xc16x_arch =
-  N (16, bfd_mach_xc16x, "xc16x", TRUE, & xc16xl_info_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.20200303/bfd/cpu-xgate.c ./bfd/cpu-xgate.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-xgate.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-xgate.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Freescale XGATE processor
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_xgate_arch
   "xgate",
   "xgate",
   4,	/* Section alignment power.  */
-  TRUE,
+  true,
   bfd_default_compatible,
   bfd_default_scan,
   bfd_arch_default_fill,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-xstormy16.c ./bfd/cpu-xstormy16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-xstormy16.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-xstormy16.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the XSTORMY16 processor.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_xstormy16_a
   "xstormy16",			/* Architecture name.  */
   "xstormy16",			/* Printable name.  */
   2,				/* Section align power.  */
-  TRUE,				/* The default ?  */
+  true,				/* The default ?  */
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-xtensa.c ./bfd/cpu-xtensa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-xtensa.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-xtensa.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for the Xtensa processor.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -32,7 +32,7 @@ const bfd_arch_info_type bfd_xtensa_arch
   "xtensa",			/* Architecture name.  */
   "xtensa",			/* Printable name.  */
   4,				/* Section align power.  */
-  TRUE,				/* The default?  */
+  true,				/* The default?  */
   bfd_default_compatible,	/* Architecture comparison fn.  */
   bfd_default_scan,		/* String to architecture convert fn.  */
   bfd_arch_default_fill,	/* Default fill.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-z80.c ./bfd/cpu-z80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-z80.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-z80.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/cpu-z8k.c ./bfd/cpu-z8k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/cpu-z8k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/cpu-z8k.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Hacked by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -36,13 +36,13 @@ compatible (const bfd_arch_info_type *a,
 
 static const bfd_arch_info_type arch_info_struct[] =
 {
-  { 32, 16, 8, bfd_arch_z8k, bfd_mach_z8002, "z8k", "z8002", 1, FALSE,
+  { 32, 16, 8, bfd_arch_z8k, bfd_mach_z8002, "z8k", "z8002", 1, false,
     compatible, bfd_default_scan, bfd_arch_default_fill, NULL, 0 }
 };
 
 const bfd_arch_info_type bfd_z8k_arch =
 {
-  32, 32, 8, bfd_arch_z8k, bfd_mach_z8001, "z8k", "z8001", 1, TRUE,
+  32, 32, 8, bfd_arch_z8k, bfd_mach_z8001, "z8k", "z8001", 1, true,
   compatible, bfd_default_scan, bfd_arch_default_fill,
   &arch_info_struct[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.20200303/bfd/development.sh ./bfd/development.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/development.sh	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/development.sh	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2012-2019 Free Software Foundation, Inc.
+# Copyright (C) 2012-2025 Free Software Foundation, Inc.
 #
 # This file is part of GDB.
 #
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/aoutx.texi ./bfd/doc/aoutx.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/aoutx.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/aoutx.texi	2026-03-05 02:11:13.000000000 +0000
@@ -1,7 +1,6 @@
 @section a.out backends
 
 
-@strong{Description}@*
 BFD supports a number of different flavours of a.out format,
 though the major differences are only the sizes of the
 structures on disk, and the shape of the relocation
@@ -97,7 +96,6 @@ configuration is selected.
 @subsection Relocations
 
 
-@strong{Description}@*
 The file @file{aoutx.h} provides for both the @emph{standard}
 and @emph{extended} forms of a.out relocation records.
 
@@ -108,73 +106,44 @@ integer for an addend.
 @subsection Internal entry points
 
 
-@strong{Description}@*
 @file{aoutx.h} exports several routines for accessing the
 contents of an a.out file, which are gathered and exported in
 turn by various format specific files (eg sunos.c).
 
 @findex aout_@var{size}_swap_exec_header_in
 @subsubsection @code{aout_@var{size}_swap_exec_header_in}
-@strong{Synopsis}
-@example
-void aout_@var{size}_swap_exec_header_in,
-   (bfd *abfd,
-    struct external_exec *bytes,
-    struct internal_exec *execp);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void aout_@var{size}_swap_exec_header_in, (bfd *abfd, struct external_exec *bytes, struct internal_exec *execp); 
 Swap the information in an executable header @var{raw_bytes} taken
 from a raw byte stream memory image into the internal exec header
 structure @var{execp}.
 
+@end deftypefn
 @findex aout_@var{size}_swap_exec_header_out
 @subsubsection @code{aout_@var{size}_swap_exec_header_out}
-@strong{Synopsis}
-@example
-void aout_@var{size}_swap_exec_header_out
-   (bfd *abfd,
-    struct internal_exec *execp,
-    struct external_exec *raw_bytes);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool aout_@var{size}_swap_exec_header_out (bfd *abfd, struct internal_exec *execp, struct external_exec *raw_bytes); 
 Swap the information in an internal exec header structure
 @var{execp} into the buffer @var{raw_bytes} ready for writing to disk.
 
+@end deftypefn
 @findex aout_@var{size}_some_aout_object_p
 @subsubsection @code{aout_@var{size}_some_aout_object_p}
-@strong{Synopsis}
-@example
-const bfd_target *aout_@var{size}_some_aout_object_p
-   (bfd *abfd,
-    struct internal_exec *execp,
-    const bfd_target *(*callback_to_real_object_p) (bfd *));
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_cleanup aout_@var{size}_some_aout_object_p (bfd *abfd, struct internal_exec *execp, bfd_cleanup (*callback_to_real_object_p) (bfd *)); 
 Some a.out variant thinks that the file open in @var{abfd}
 checking is an a.out file.  Do some more checking, and set up
 for access if it really is.  Call back to the calling
 environment's "finish up" function just before returning, to
 handle any last-minute setup.
 
+@end deftypefn
 @findex aout_@var{size}_mkobject
 @subsubsection @code{aout_@var{size}_mkobject}
-@strong{Synopsis}
-@example
-bfd_boolean aout_@var{size}_mkobject, (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool aout_@var{size}_mkobject, (bfd *abfd); 
 Initialize BFD @var{abfd} for use with a.out files.
 
+@end deftypefn
 @findex aout_@var{size}_machine_type
 @subsubsection @code{aout_@var{size}_machine_type}
-@strong{Synopsis}
-@example
-enum machine_type  aout_@var{size}_machine_type
-   (enum bfd_architecture arch,
-    unsigned long machine,
-    bfd_boolean *unknown);
-@end example
-@strong{Description}@*
+@deftypefn {Function} enum machine_type aout_@var{size}_machine_type (enum bfd_architecture arch, unsigned long machine, bool *unknown); 
 Keep track of machine architecture and machine type for
 a.out's. Return the @code{machine_type} for a particular
 architecture and machine, or @code{M_UNKNOWN} if that exact architecture
@@ -183,29 +152,19 @@ and machine can't be represented in a.ou
 If the architecture is understood, machine type 0 (default)
 is always understood.
 
+@end deftypefn
 @findex aout_@var{size}_set_arch_mach
 @subsubsection @code{aout_@var{size}_set_arch_mach}
-@strong{Synopsis}
-@example
-bfd_boolean aout_@var{size}_set_arch_mach,
-   (bfd *,
-    enum bfd_architecture arch,
-    unsigned long machine);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool aout_@var{size}_set_arch_mach, (bfd *, enum bfd_architecture arch, unsigned long machine); 
 Set the architecture and the machine of the BFD @var{abfd} to the
 values @var{arch} and @var{machine}.  Verify that @var{abfd}'s format
 can support the architecture required.
 
+@end deftypefn
 @findex aout_@var{size}_new_section_hook
 @subsubsection @code{aout_@var{size}_new_section_hook}
-@strong{Synopsis}
-@example
-bfd_boolean aout_@var{size}_new_section_hook,
-   (bfd *abfd,
-    asection *newsect);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool aout_@var{size}_new_section_hook, (bfd *abfd, asection *newsect); 
 Called by the BFD in response to a @code{bfd_make_section}
 request.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/archive.texi ./bfd/doc/archive.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/archive.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/archive.texi	2026-03-05 02:11:13.000000000 +0000
@@ -1,7 +1,6 @@
 @section Archives
 
 
-@strong{Description}@*
 An archive (or library) is just another BFD.  It has a symbol
 table, although there's not much a user program will do with it.
 
@@ -61,12 +60,7 @@ Archives are supported in BFD in @code{a
 
 @findex bfd_get_next_mapent
 @subsubsection @code{bfd_get_next_mapent}
-@strong{Synopsis}
-@example
-symindex bfd_get_next_mapent
-   (bfd *abfd, symindex previous, carsym **sym);
-@end example
-@strong{Description}@*
+@deftypefn {Function} symindex bfd_get_next_mapent (bfd *abfd, symindex previous, carsym **sym); 
 Step through archive @var{abfd}'s symbol table (if it
 has one).  Successively update @var{sym} with the next symbol's
 information, returning that symbol's (internal) index into the
@@ -79,23 +73,17 @@ got the last one.
 A @code{carsym} is a canonical archive symbol.  The only
 user-visible element is its name, a null-terminated string.
 
+@end deftypefn
 @findex bfd_set_archive_head
 @subsubsection @code{bfd_set_archive_head}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_archive_head (bfd *output, bfd *new_head); 
 Set the head of the chain of
 BFDs contained in the archive @var{output} to @var{new_head}.
 
+@end deftypefn
 @findex bfd_openr_next_archived_file
 @subsubsection @code{bfd_openr_next_archived_file}
-@strong{Synopsis}
-@example
-bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous); 
 Provided a BFD, @var{archive}, containing an archive and NULL, open
 an input BFD on the first contained element and returns that.
 Subsequent calls should pass the archive and the previous return
@@ -104,3 +92,4 @@ is returned when there are no more.
 Note - if you want to process the bfd returned by this call be
 sure to call bfd_check_format() on it first.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/archures.texi ./bfd/doc/archures.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/archures.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/archures.texi	2026-03-05 02:11:13.000000000 +0000
@@ -24,7 +24,6 @@ BFD's idea of an architecture is impleme
 @subsection bfd_architecture
 
 
-@strong{Description}@*
 This enum gives the object file's CPU architecture, in a
 global sense---i.e., what processor family does it belong to?
 Another field indicates which processor within
@@ -140,6 +139,7 @@ enum bfd_architecture
 #define bfd_mach_mips16000             16000
 #define bfd_mach_mips16                16
 #define bfd_mach_mips5                 5
+#define bfd_mach_mips_allegrex         10111431 /* octal 'AL', 31.  */
 #define bfd_mach_mips_loongson_2e      3001
 #define bfd_mach_mips_loongson_2f      3002
 #define bfd_mach_mips_gs464            3003
@@ -172,16 +172,6 @@ enum bfd_architecture
 #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
 #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
 #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
-  bfd_arch_l1om,      /* Intel L1OM.  */
-#define bfd_mach_l1om                  (1 << 5)
-#define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
-  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 +189,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
@@ -309,6 +298,7 @@ enum bfd_architecture
 #define bfd_mach_arm_8M_BASE   25
 #define bfd_mach_arm_8M_MAIN   26
 #define bfd_mach_arm_8_1M_MAIN 27
+#define bfd_mach_arm_9         28
   bfd_arch_nds32,     /* Andes NDS32.  */
 #define bfd_mach_n1            1
 #define bfd_mach_n1h           2
@@ -322,7 +312,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 +373,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
@@ -464,22 +454,44 @@ enum bfd_architecture
 #define bfd_mach_msp46         46
 #define bfd_mach_msp47         47
 #define bfd_mach_msp54         54
-  bfd_arch_xc16x,     /* Infineon's XC16X Series.  */
-#define bfd_mach_xc16x         1
-#define bfd_mach_xc16xl        2
-#define bfd_mach_xc16xs        3
   bfd_arch_xgate,     /* Freescale XGATE.  */
 #define bfd_mach_xgate         1
   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.  */
+  bfd_arch_kvx,        /* Kalray VLIW core of the MPPA processor family */
+#define bfd_mach_kv3_unknown       0
+#define bfd_mach_kv3_1             1
+#define bfd_mach_kv3_1_64          2
+#define bfd_mach_kv3_1_usr         3
+#define bfd_mach_kv3_2             4
+#define bfd_mach_kv3_2_64          5
+#define bfd_mach_kv3_2_usr         6
+#define bfd_mach_kv4_1             7
+#define bfd_mach_kv4_1_64          8
+#define bfd_mach_kv4_1_usr         9
   bfd_arch_tilepro,   /* Tilera TILEPro.  */
   bfd_arch_tilegx,    /* Tilera TILE-Gx.  */
 #define bfd_mach_tilepro       1
@@ -487,11 +499,9 @@ 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
-#define bfd_mach_nios2r1       1
-#define bfd_mach_nios2r2       2
+#define bfd_mach_aarch64_llp64 64
   bfd_arch_visium,    /* Visium.  */
 #define bfd_mach_visium        1
   bfd_arch_wasm32,    /* WebAssembly.  */
@@ -510,6 +520,26 @@ 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_loongarch,       /* LoongArch */
+#define bfd_mach_loongarch32   1
+#define bfd_mach_loongarch64   2
+  bfd_arch_amdgcn,     /* AMDGCN */
+#define bfd_mach_amdgcn_unknown 0x000
+#define bfd_mach_amdgcn_gfx900  0x02c
+#define bfd_mach_amdgcn_gfx904  0x02e
+#define bfd_mach_amdgcn_gfx906  0x02f
+#define bfd_mach_amdgcn_gfx908  0x030
+#define bfd_mach_amdgcn_gfx90a  0x03f
+#define bfd_mach_amdgcn_gfx1010 0x033
+#define bfd_mach_amdgcn_gfx1011 0x034
+#define bfd_mach_amdgcn_gfx1012 0x035
+#define bfd_mach_amdgcn_gfx1030 0x036
+#define bfd_mach_amdgcn_gfx1031 0x037
+#define bfd_mach_amdgcn_gfx1032 0x038
+#define bfd_mach_amdgcn_gfx1100 0x041
+#define bfd_mach_amdgcn_gfx1101 0x046
+#define bfd_mach_amdgcn_gfx1102 0x047
   bfd_arch_last
   @};
 @end example
@@ -517,7 +547,6 @@ enum bfd_architecture
 @subsection bfd_arch_info
 
 
-@strong{Description}@*
 This structure contains information on architectures for use
 within BFD.
 @example
@@ -535,17 +564,16 @@ typedef struct bfd_arch_info
   /* TRUE if this is the default machine for the architecture.
      The default arch should be the first entry for an arch so that
      all the entries for that arch can be accessed via @code{next}.  */
-  bfd_boolean the_default;
+  bool the_default;
   const struct bfd_arch_info * (*compatible) (const struct bfd_arch_info *,
                                               const struct bfd_arch_info *);
 
-  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
+  bool (*scan) (const struct bfd_arch_info *, const char *);
 
   /* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
      IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
      TRUE, the buffer contains code.  */
-  void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
-                 bfd_boolean code);
+  void *(*fill) (bfd_size_type count, bool is_bigendian, bool code);
 
   const struct bfd_arch_info *next;
 
@@ -565,52 +593,38 @@ bfd_arch_info_type;
 
 @findex bfd_printable_name
 @subsubsection @code{bfd_printable_name}
-@strong{Synopsis}
-@example
-const char *bfd_printable_name (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char *bfd_printable_name (bfd *abfd); 
 Return a printable string representing the architecture and machine
 from the pointer to the architecture info structure.
 
+@end deftypefn
 @findex bfd_scan_arch
 @subsubsection @code{bfd_scan_arch}
-@strong{Synopsis}
-@example
-const bfd_arch_info_type *bfd_scan_arch (const char *string);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const bfd_arch_info_type *bfd_scan_arch (const char *string); 
 Figure out if BFD supports any cpu which could be described with
 the name @var{string}.  Return a pointer to an @code{arch_info}
 structure if a machine is found, otherwise NULL.
 
+@end deftypefn
 @findex bfd_arch_list
 @subsubsection @code{bfd_arch_list}
-@strong{Synopsis}
-@example
-const char **bfd_arch_list (void);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char **bfd_arch_list (void); 
 Return a freshly malloced NULL-terminated vector of the names
 of all the valid BFD architectures.  Do not modify the names.
 
+@end deftypefn
 @findex bfd_arch_get_compatible
 @subsubsection @code{bfd_arch_get_compatible}
-@strong{Synopsis}
-@example
-const bfd_arch_info_type *bfd_arch_get_compatible
-   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const bfd_arch_info_type *bfd_arch_get_compatible (const bfd *abfd, const bfd *bbfd, bool accept_unknowns); 
 Determine whether two BFDs' architectures and machine types
 are compatible.  Calculates the lowest common denominator
 between the two architectures and machine types implied by
 the BFDs and returns a pointer to an @code{arch_info} structure
 describing the compatible machine.
 
+@end deftypefn
 @findex bfd_default_arch_struct
 @subsubsection @code{bfd_default_arch_struct}
-@strong{Description}@*
 The @code{bfd_default_arch_struct} is an item of
 @code{bfd_arch_info_type} which has been initialized to a fairly
 generic state.  A BFD starts life by pointing to this
@@ -618,161 +632,111 @@ structure, until the correct back end ha
 architecture of the file.
 @example
 extern const bfd_arch_info_type bfd_default_arch_struct;
+
 @end example
 
 @findex bfd_set_arch_info
 @subsubsection @code{bfd_set_arch_info}
-@strong{Synopsis}
-@example
-void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg); 
 Set the architecture info of @var{abfd} to @var{arg}.
 
+@end deftypefn
 @findex bfd_default_set_arch_mach
 @subsubsection @code{bfd_default_set_arch_mach}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_default_set_arch_mach
-   (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_default_set_arch_mach (bfd *abfd, enum bfd_architecture arch, unsigned long mach); 
 Set the architecture and machine type in BFD @var{abfd}
 to @var{arch} and @var{mach}.  Find the correct
 pointer to a structure and insert it into the @code{arch_info}
 pointer.
 
+@end deftypefn
 @findex bfd_get_arch
 @subsubsection @code{bfd_get_arch}
-@strong{Synopsis}
-@example
-enum bfd_architecture bfd_get_arch (const bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} enum bfd_architecture bfd_get_arch (const bfd *abfd); 
 Return the enumerated type which describes the BFD @var{abfd}'s
 architecture.
 
+@end deftypefn
 @findex bfd_get_mach
 @subsubsection @code{bfd_get_mach}
-@strong{Synopsis}
-@example
-unsigned long bfd_get_mach (const bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} unsigned long bfd_get_mach (const bfd *abfd); 
 Return the long type which describes the BFD @var{abfd}'s
 machine.
 
+@end deftypefn
 @findex bfd_arch_bits_per_byte
 @subsubsection @code{bfd_arch_bits_per_byte}
-@strong{Synopsis}
-@example
-unsigned int bfd_arch_bits_per_byte (const bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} unsigned int bfd_arch_bits_per_byte (const bfd *abfd); 
 Return the number of bits in one of the BFD @var{abfd}'s
 architecture's bytes.
 
+@end deftypefn
 @findex bfd_arch_bits_per_address
 @subsubsection @code{bfd_arch_bits_per_address}
-@strong{Synopsis}
-@example
-unsigned int bfd_arch_bits_per_address (const bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} unsigned int bfd_arch_bits_per_address (const bfd *abfd); 
 Return the number of bits in one of the BFD @var{abfd}'s
 architecture's addresses.
 
+@end deftypefn
 @findex bfd_default_compatible
 @subsubsection @code{bfd_default_compatible}
-@strong{Synopsis}
-@example
-const bfd_arch_info_type *bfd_default_compatible
-   (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const bfd_arch_info_type *bfd_default_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b); 
 The default function for testing for compatibility.
 
+@end deftypefn
 @findex bfd_default_scan
 @subsubsection @code{bfd_default_scan}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_default_scan
-   (const struct bfd_arch_info *info, const char *string);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_default_scan (const struct bfd_arch_info *info, const char *string); 
 The default function for working out whether this is an
 architecture hit and a machine hit.
 
+@end deftypefn
 @findex bfd_get_arch_info
 @subsubsection @code{bfd_get_arch_info}
-@strong{Synopsis}
-@example
-const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd); 
 Return the architecture info struct in @var{abfd}.
 
+@end deftypefn
 @findex bfd_lookup_arch
 @subsubsection @code{bfd_lookup_arch}
-@strong{Synopsis}
-@example
-const bfd_arch_info_type *bfd_lookup_arch
-   (enum bfd_architecture arch, unsigned long machine);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const bfd_arch_info_type *bfd_lookup_arch (enum bfd_architecture arch, unsigned long machine); 
 Look for the architecture info structure which matches the
 arguments @var{arch} and @var{machine}. A machine of 0 matches the
 machine/architecture structure which marks itself as the
 default.
 
+@end deftypefn
 @findex bfd_printable_arch_mach
 @subsubsection @code{bfd_printable_arch_mach}
-@strong{Synopsis}
-@example
-const char *bfd_printable_arch_mach
-   (enum bfd_architecture arch, unsigned long machine);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char *bfd_printable_arch_mach (enum bfd_architecture arch, unsigned long machine); 
 Return a printable string representing the architecture and
 machine type.
 
 This routine is depreciated.
 
+@end deftypefn
 @findex bfd_octets_per_byte
 @subsubsection @code{bfd_octets_per_byte}
-@strong{Synopsis}
-@example
-unsigned int bfd_octets_per_byte (const bfd *abfd,
-    const asection *sec);
-@end example
-@strong{Description}@*
+@deftypefn {Function} unsigned int bfd_octets_per_byte (const bfd *abfd, const asection *sec); 
 Return the number of octets (8-bit quantities) per target byte
 (minimum addressable unit).  In most cases, this will be one, but some
 DSP targets have 16, 32, or even 48 bits per byte.
 
+@end deftypefn
 @findex bfd_arch_mach_octets_per_byte
 @subsubsection @code{bfd_arch_mach_octets_per_byte}
-@strong{Synopsis}
-@example
-unsigned int bfd_arch_mach_octets_per_byte
-   (enum bfd_architecture arch, unsigned long machine);
-@end example
-@strong{Description}@*
+@deftypefn {Function} unsigned int bfd_arch_mach_octets_per_byte (enum bfd_architecture arch, unsigned long machine); 
 See bfd_octets_per_byte.
 
 This routine is provided for those cases where a bfd * is not
 available
 
+@end deftypefn
 @findex bfd_arch_default_fill
 @subsubsection @code{bfd_arch_default_fill}
-@strong{Synopsis}
-@example
-void *bfd_arch_default_fill (bfd_size_type count,
-    bfd_boolean is_bigendian,
-    bfd_boolean code);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void *bfd_arch_default_fill (bfd_size_type count, bool is_bigendian, bool code); 
 Allocate via bfd_malloc and return a fill buffer of size COUNT.
 If IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If
 CODE is TRUE, the buffer contains code.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfd.info ./bfd/doc/bfd.info
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfd.info	2020-03-03 02:11:35.000000000 +0000
+++ ./bfd/doc/bfd.info	2026-03-05 02:11:17.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-2025 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
@@ -298,9 +298,10 @@ File: bfd.info,  Node: BFD front end,  N
 
 * typedef bfd::
 * Error reporting::
+* Initialization::
+* Threading::
 * Miscellaneous::
 * Memory Usage::
-* Initialization::
 * Sections::
 * Symbols::
 * Archives::
@@ -328,28 +329,6 @@ the BFD and to data in the BFD.
    Here is the structure that defines the type 'bfd'.  It contains the
 major data about the file and pointers to the rest of the data.
 
-
-     enum bfd_direction
-       {
-         no_direction = 0,
-         read_direction = 1,
-         write_direction = 2,
-         both_direction = 3
-       };
-
-     enum bfd_plugin_format
-       {
-         bfd_plugin_unknown = 0,
-         bfd_plugin_yes = 1,
-         bfd_plugin_no = 2
-       };
-
-     struct bfd_build_id
-       {
-         bfd_size_type size;
-         bfd_byte data[1];
-       };
-
      struct bfd
      {
        /* The filename the application opened the BFD with.  */
@@ -378,12 +357,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;
 
@@ -440,8 +413,8 @@ major data about the file and pointers t
      #define BFD_TRADITIONAL_FORMAT    0x400
 
        /* This flag indicates that the BFD contents are actually cached
-          in memory.  If this is set, iostream points to a bfd_in_memory
-          struct.  */
+          in memory.  If this is set, iostream points to a malloc'd
+          bfd_in_memory struct.  */
      #define BFD_IN_MEMORY             0x800
 
        /* This BFD has been created by the linker and doesn't correspond
@@ -475,17 +448,39 @@ major data about the file and pointers t
        /* Put pathnames into archives (non-POSIX).  */
      #define BFD_ARCHIVE_FULL_PATH  0x100000
 
-       /* Flags bits to be saved in bfd_preserve_save.  */
-     #define BFD_FLAGS_SAVED \
-       (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
-        | BFD_PLUGIN | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON \
-        | BFD_USE_ELF_STT_COMMON)
+     #define BFD_CLOSED_BY_CACHE    0x200000
+       /* Compress sections in this BFD with SHF_COMPRESSED zstd.  */
+     #define BFD_COMPRESS_ZSTD      0x400000
+
+       /* Don't generate ELF section header.  */
+     #define BFD_NO_SECTION_HEADER  0x800000
 
        /* Flags bits which are for BFD use only.  */
      #define BFD_FLAGS_FOR_BFD_USE_MASK \
        (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
         | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
-        | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
+        | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON \
+        | BFD_NO_SECTION_HEADER)
+
+       /* 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;
+
+       /* POSIX.1-2017 (IEEE Std 1003.1) says of fopen : "When a file is
+          opened with update mode ('+' as the second or third character in
+          the mode argument), both input and output may be performed on
+          the associated stream.  However, the application shall ensure
+          that output is not directly followed by input without an
+          intervening call to fflush() or to a file positioning function
+          (fseek(), fsetpos(), or rewind()), and input is not directly
+          followed by output without an intervening call to a file
+          positioning function, unless the input operation encounters
+          end-of-file."
+          This field tracks the last IO operation, so that bfd can insert
+          a seek when IO direction changes.  */
+       ENUM_BITFIELD (bfd_last_io) last_io : 2;
 
        /* Is the file descriptor being cached?  That is, can it be closed as
           needed, and re-opened when accessed later?  */
@@ -535,16 +530,25 @@ major data about the file and pointers t
        /* Set if this is a plugin output file.  */
        unsigned int lto_output : 1;
 
-       /* 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;
+
+       /* LTO object type.  */
+       ENUM_BITFIELD (bfd_lto_object_type) lto_type : 3;
+
+       /* Set if this BFD is currently being processed by
+          bfd_check_format_matches.  This is checked by the cache to
+          avoid closing the BFD in this case.  This should only be
+          examined or modified while the BFD lock is held.  */
+       unsigned int in_format_matches : 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
@@ -563,20 +567,32 @@ major data about the file and pointers t
        /* The last section on the section list.  */
        struct bfd_section *section_last;
 
+       /* The object-only section on the section list.  */
+       struct bfd_section *object_only_section;
+
        /* The number of sections.  */
        unsigned int section_count;
 
+       /* The archive plugin file descriptor.  */
+       int archive_plugin_fd;
+
+       /* The number of opens on the archive plugin file descriptor.  */
+       unsigned int archive_plugin_fd_open_count;
+
        /* A field used by _bfd_generic_link_add_archive_symbols.  This will
           be used only for archive elements.  */
        int archive_pass;
 
+       /* The total size of memory from bfd_alloc.  */
+       bfd_size_type alloc_size;
+
        /* Stuff only useful for object files:
           The start address.  */
        bfd_vma start_address;
 
        /* 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 +603,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.  */
@@ -617,8 +638,6 @@ major data about the file and pointers t
            struct tekhex_data_struct *tekhex_data;
            struct elf_obj_tdata *elf_obj_data;
            struct mmo_data_struct *mmo_data;
-           struct sun_core_struct *sun_core_data;
-           struct sco5_core_struct *sco5_core_data;
            struct trad_core_struct *trad_core_data;
            struct som_data_struct *som_data;
            struct hpux_core_struct *hpux_core_data;
@@ -627,7 +646,6 @@ major data about the file and pointers t
            struct lynx_core_struct *lynx_core_data;
            struct osf_core_struct *osf_core_data;
            struct cisco_core_struct *cisco_core_data;
-           struct versados_data_struct *versados_data;
            struct netbsd_core_struct *netbsd_core_data;
            struct mach_o_data_struct *mach_o_data;
            struct mach_o_fat_data_struct *mach_o_fat_data;
@@ -649,233 +667,14 @@ major data about the file and pointers t
 
        /* For input BFDs, the build ID, if the object has one. */
        const struct bfd_build_id *build_id;
-     };
-
-     static inline const char *
-     bfd_get_filename (const bfd *abfd)
-     {
-       return abfd->filename;
-     }
-
-     static inline bfd_boolean
-     bfd_get_cacheable (const bfd *abfd)
-     {
-       return abfd->cacheable;
-     }
-
-     static inline enum bfd_format
-     bfd_get_format (const bfd *abfd)
-     {
-       return abfd->format;
-     }
-
-     static inline flagword
-     bfd_get_file_flags (const bfd *abfd)
-     {
-       return abfd->flags;
-     }
-
-     static inline bfd_vma
-     bfd_get_start_address (const bfd *abfd)
-     {
-       return abfd->start_address;
-     }
-
-     static inline unsigned int
-     bfd_get_symcount (const bfd *abfd)
-     {
-       return abfd->symcount;
-     }
-
-     static inline unsigned int
-     bfd_get_dynamic_symcount (const bfd *abfd)
-     {
-       return abfd->dynsymcount;
-     }
-
-     static inline struct bfd_symbol **
-     bfd_get_outsymbols (const bfd *abfd)
-     {
-       return abfd->outsymbols;
-     }
-
-     static inline unsigned int
-     bfd_count_sections (const bfd *abfd)
-     {
-       return abfd->section_count;
-     }
-
-     static inline bfd_boolean
-     bfd_has_map (const bfd *abfd)
-     {
-       return abfd->has_armap;
-     }
-
-     static inline bfd_boolean
-     bfd_is_thin_archive (const bfd *abfd)
-     {
-       return abfd->is_thin_archive;
-     }
-
-     static inline void *
-     bfd_usrdata (const bfd *abfd)
-     {
-       return abfd->usrdata;
-     }
-
-     /* See note beside bfd_set_section_userdata.  */
-     static inline bfd_boolean
-     bfd_set_cacheable (bfd * abfd, bfd_boolean val)
-     {
-       abfd->cacheable = val;
-       return TRUE;
-     }
-
-     static inline void
-     bfd_set_thin_archive (bfd *abfd, bfd_boolean val)
-     {
-       abfd->is_thin_archive = val;
-     }
-
-     static inline void
-     bfd_set_usrdata (bfd *abfd, void *val)
-     {
-       abfd->usrdata = val;
-     }
 
-     static inline asection *
-     bfd_asymbol_section (const asymbol *sy)
-     {
-       return sy->section;
-     }
-
-     static inline bfd_vma
-     bfd_asymbol_value (const asymbol *sy)
-     {
-       return sy->section->vma + sy->value;
-     }
-
-     static inline const char *
-     bfd_asymbol_name (const asymbol *sy)
-     {
-       return sy->name;
-     }
-
-     static inline struct bfd *
-     bfd_asymbol_bfd (const asymbol *sy)
-     {
-       return sy->the_bfd;
-     }
-
-     static inline void
-     bfd_set_asymbol_name (asymbol *sy, const char *name)
-     {
-       sy->name = name;
-     }
-
-     static inline bfd_size_type
-     bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
-     {
-       if (abfd->direction != write_direction && sec->rawsize != 0)
-         return sec->rawsize;
-       return sec->size;
-     }
-
-     /* Find the address one past the end of SEC.  */
-     static inline bfd_size_type
-     bfd_get_section_limit (const bfd *abfd, const asection *sec)
-     {
-       return (bfd_get_section_limit_octets (abfd, sec)
-               / bfd_octets_per_byte (abfd, sec));
-     }
-
-     /* Functions to handle insertion and deletion of a bfd's sections.  These
-        only handle the list pointers, ie. do not adjust section_count,
-        target_index etc.  */
-     static inline void
-     bfd_section_list_remove (bfd *abfd, asection *s)
-     {
-       asection *next = s->next;
-       asection *prev = s->prev;
-       if (prev)
-         prev->next = next;
-       else
-         abfd->sections = next;
-       if (next)
-         next->prev = prev;
-       else
-         abfd->section_last = prev;
-     }
-
-     static inline void
-     bfd_section_list_append (bfd *abfd, asection *s)
-     {
-       s->next = 0;
-       if (abfd->section_last)
-         {
-           s->prev = abfd->section_last;
-           abfd->section_last->next = s;
-         }
-       else
-         {
-           s->prev = 0;
-           abfd->sections = s;
-         }
-       abfd->section_last = s;
-     }
-
-     static inline void
-     bfd_section_list_prepend (bfd *abfd, asection *s)
-     {
-       s->prev = 0;
-       if (abfd->sections)
-         {
-           s->next = abfd->sections;
-           abfd->sections->prev = s;
-         }
-       else
-         {
-           s->next = 0;
-           abfd->section_last = s;
-         }
-       abfd->sections = s;
-     }
-
-     static inline void
-     bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s)
-     {
-       asection *next = a->next;
-       s->next = next;
-       s->prev = a;
-       a->next = s;
-       if (next)
-         next->prev = s;
-       else
-         abfd->section_last = s;
-     }
-
-     static inline void
-     bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s)
-     {
-       asection *prev = b->prev;
-       s->prev = prev;
-       s->next = b;
-       b->prev = s;
-       if (prev)
-         prev->next = s;
-       else
-         abfd->sections = s;
-     }
-
-     static inline bfd_boolean
-     bfd_section_removed_from_list (const bfd *abfd, const asection *s)
-     {
-       return s->next ? s->next->prev != s : abfd->section_last != s;
-     }
+       /* For input BFDs, mmapped entries. */
+       struct bfd_mmapped *mmapped;
+     };
 
 
 
-File: bfd.info,  Node: Error reporting,  Next: Miscellaneous,  Prev: typedef bfd,  Up: BFD front end
+File: bfd.info,  Node: Error reporting,  Next: Initialization,  Prev: typedef bfd,  Up: BFD front end
 
 2.2 Error reporting
 ===================
@@ -889,13 +688,14 @@ check 'errno'.
    The easiest way to report a BFD error to the user is to use
 'bfd_perror'.
 
+   The BFD error is thread-local.
+
 2.2.1 Type 'bfd_error_type'
 ---------------------------
 
 The values returned by 'bfd_get_error' are defined by the enumerated
 type 'bfd_error_type'.
 
-
      typedef enum bfd_error
      {
        bfd_error_no_error = 0,
@@ -928,52 +728,54 @@ type 'bfd_error_type'.
 2.2.1.1 'bfd_get_error'
 .......................
 
-*Synopsis*
-     bfd_error_type bfd_get_error (void);
-   *Description*
-Return the current BFD error condition.
+ -- Function: bfd_error_type bfd_get_error (void);
+     Return the current BFD error condition.
 
 2.2.1.2 'bfd_set_error'
 .......................
 
-*Synopsis*
-     void bfd_set_error (bfd_error_type error_tag);
-   *Description*
-Set the BFD error condition to be ERROR_TAG.
+ -- Function: void bfd_set_error (bfd_error_type error_tag);
+     Set the BFD error condition to be ERROR_TAG.
 
-   ERROR_TAG must not be bfd_error_on_input.  Use bfd_set_input_error
-for input errors instead.
+     ERROR_TAG must not be bfd_error_on_input.  Use bfd_set_input_error
+     for input errors instead.
 
 2.2.1.3 'bfd_set_input_error'
 .............................
 
-*Synopsis*
-     void bfd_set_input_error (bfd *input, bfd_error_type error_tag);
-   *Description*
-Set the BFD error condition to be bfd_error_on_input.  INPUT is the
-input bfd where the error occurred, and ERROR_TAG the bfd_error_type
-error.
+ -- Function: void bfd_set_input_error (bfd *input, bfd_error_type
+          error_tag);
+     Set the BFD error condition to be bfd_error_on_input.  INPUT is the
+     input bfd where the error occurred, and ERROR_TAG the
+     bfd_error_type error.
 
 2.2.1.4 'bfd_errmsg'
 ....................
 
-*Synopsis*
-     const char *bfd_errmsg (bfd_error_type error_tag);
-   *Description*
-Return a string describing the error ERROR_TAG, or the system error if
-ERROR_TAG is 'bfd_error_system_call'.
+ -- Function: const char *bfd_errmsg (bfd_error_type error_tag);
+     Return a string describing the error ERROR_TAG, or the system error
+     if ERROR_TAG is 'bfd_error_system_call'.
 
 2.2.1.5 'bfd_perror'
 ....................
 
-*Synopsis*
-     void bfd_perror (const char *message);
-   *Description*
-Print to the standard error stream a string describing the last BFD
-error that occurred, or the last system error if the last BFD error was
-a system call failure.  If MESSAGE is non-NULL and non-empty, the error
-string printed is preceded by MESSAGE, a colon, and a space.  It is
-followed by a newline.
+ -- Function: void bfd_perror (const char *message);
+     Print to the standard error stream a string describing the last BFD
+     error that occurred, or the last system error if the last BFD error
+     was a system call failure.  If MESSAGE is non-NULL and non-empty,
+     the error string printed is preceded by MESSAGE, a colon, and a
+     space.  It is followed by a newline.
+
+2.2.1.6 'bfd_asprintf'
+......................
+
+ -- Function: char *bfd_asprintf (const char *fmt, ...);
+     Primarily for error reporting, this function is like libiberty's
+     xasprintf except that it can return NULL on no memory and the
+     returned string should not be freed.  Uses a thread-local malloc'd
+     buffer managed by libbfd, _bfd_error_buf.  Be aware that a call to
+     this function frees the result of any previous call.  bfd_errmsg
+     (bfd_error_on_input) also calls this function.
 
 2.2.2 BFD error handler
 -----------------------
@@ -984,42 +786,76 @@ the program.
 
    The BFD error handler acts like vprintf.
 
-
      typedef void (*bfd_error_handler_type) (const char *, va_list);
 
 
-2.2.2.1 '_bfd_error_handler'
+     typedef int (*bfd_print_callback) (void *, const char *, ...);
+
+2.2.2.1 'bfd_print_error'
+.........................
+
+ -- Function: void bfd_print_error (bfd_print_callback print_func, void
+          *stream, const char *fmt, va_list ap);
+     This formats FMT and AP according to BFD "printf" rules, sending
+     the output to STREAM by repeated calls to PRINT_FUNC. PRINT_FUNC is
+     a printf-like function; it does not need to implement the BFD
+     printf format extensions.  This can be used in a callback that is
+     set via bfd_set_error_handler to turn the error into ordinary
+     output.
+
+2.2.2.2 '_bfd_error_handler'
 ............................
 
-*Synopsis*
-     void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
-   *Description*
-This is the default routine to handle BFD error messages.  Like fprintf
-(stderr, ...), but also handles some extra format specifiers.
-
-   %pA section name from section.  For group components, prints group
-name too.  %pB file name from bfd.  For archive components, prints
-archive too.
+ -- Function: void _bfd_error_handler (const char *fmt, ...)
+          ATTRIBUTE_PRINTF_1;
+     This is the default routine to handle BFD error messages.  Like
+     fprintf (stderr, ...), but also handles some extra format
+     specifiers.
+
+     %pA section name from section.  For group components, prints group
+     name too.  %pB file name from bfd.  For archive components, prints
+     archive too.
 
-   Beware: Only supports a maximum of 9 format arguments.
+     Beware: Only supports a maximum of 9 format arguments.
 
-2.2.2.2 'bfd_set_error_handler'
+2.2.2.3 'bfd_set_error_handler'
 ...............................
 
-*Synopsis*
-     bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
-   *Description*
-Set the BFD error handler function.  Returns the previous function.
+ -- Function: bfd_error_handler_type bfd_set_error_handler
+          (bfd_error_handler_type);
+     Set the BFD error handler function.  Returns the previous function.
+
+2.2.2.4 '_bfd_set_error_handler_caching'
+........................................
 
-2.2.2.3 'bfd_set_error_program_name'
+ -- Function: struct per_xvec_messages *_bfd_set_error_handler_caching
+          (struct per_xvec_messages *);
+     Set the BFD error handler function to one that stores messages to
+     the per_xvec_messages object.  Returns the previous object to which
+     messages are stored.  Note that two sequential calls to this with a
+     non-NULL argument will cause output to be dropped, rather than
+     gathered.
+
+2.2.2.5 '_bfd_restore_error_handler_caching'
+............................................
+
+ -- Function: void _bfd_restore_error_handler_caching (struct
+          per_xvec_messages *);
+     Reset the BFD error handler object to an earlier value.
+
+2.2.2.6 'bfd_set_error_program_name'
 ....................................
 
-*Synopsis*
-     void bfd_set_error_program_name (const char *);
-   *Description*
-Set the program name to use when printing a BFD error.  This is printed
-before the error message followed by a colon and space.  The string must
-not be changed after it is passed to this function.
+ -- Function: void bfd_set_error_program_name (const char *);
+     Set the program name to use when printing a BFD error.  This is
+     printed before the error message followed by a colon and space.
+     The string must not be changed after it is passed to this function.
+
+2.2.2.7 '_bfd_get_error_program_name'
+.....................................
+
+ -- Function: const char *_bfd_get_error_program_name (void);
+     Get the program name used when printing a BFD error.
 
 2.2.3 BFD assert handler
 ------------------------
@@ -1031,7 +867,6 @@ with an error, or mark the current BFD o
 recommended to override the default handler, which just calls
 _bfd_error_handler and continues.
 
-
      typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
                                               const char *bfd_version,
                                               const char *bfd_file,
@@ -1041,204 +876,256 @@ _bfd_error_handler and continues.
 2.2.3.1 'bfd_set_assert_handler'
 ................................
 
-*Synopsis*
-     bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
-   *Description*
-Set the BFD assert handler function.  Returns the previous function.
+ -- Function: bfd_assert_handler_type bfd_set_assert_handler
+          (bfd_assert_handler_type);
+     Set the BFD assert handler function.  Returns the previous
+     function.
+
+
+File: bfd.info,  Node: Initialization,  Next: Threading,  Prev: Error reporting,  Up: BFD front end
+
+2.2.3.2 'bfd_init'
+..................
+
+ -- Function: unsigned int bfd_init (void);
+     This routine must be called before any other BFD function to
+     initialize magical internal data structures.  Returns a magic
+     number, which may be used to check that the bfd library is
+     configured as expected by users.
+          /* Value returned by bfd_init.  */
+          #define BFD_INIT_MAGIC (sizeof (struct bfd_section))
+
 
 
-File: bfd.info,  Node: Miscellaneous,  Next: Memory Usage,  Prev: Error reporting,  Up: BFD front end
+File: bfd.info,  Node: Threading,  Next: Miscellaneous,  Prev: Initialization,  Up: BFD front end
+
+2.3 Threading
+=============
+
+BFD has limited support for thread-safety.  Most BFD globals are
+protected by locks, while the error-related globals are thread-local.  A
+given BFD cannot safely be used from two threads at the same time; it is
+up to the application to do any needed locking.  However, it is ok for
+different threads to work on different BFD objects at the same time.
+
+2.3.1 Thread functions.
+-----------------------
+
+     typedef bool (*bfd_lock_unlock_fn_type) (void *);
+
+2.3.1.1 '_bfd_threading_enabled'
+................................
+
+ -- Function: bool _bfd_threading_enabled (void);
+     Return true if threading is enabled, false if not.
 
-2.3 Miscellaneous
+2.3.1.2 'bfd_thread_init'
+.........................
+
+ -- Function: bool bfd_thread_init (bfd_lock_unlock_fn_type lock,
+          bfd_lock_unlock_fn_type unlock, void *data);
+     Initialize BFD threading.  The functions passed in will be used to
+     lock and unlock global data structures.  This may only be called a
+     single time in a given process.  Returns true on success and false
+     on error.  On error, the caller should assume that BFD cannot be
+     used by multiple threads.  DATA is passed verbatim to the lock and
+     unlock functions.  The lock and unlock functions should return true
+     on success, or set the BFD error and return false on failure.  Note
+     also that the lock must be a recursive lock: BFD may attempt to
+     acquire the lock when it is already held by the current thread.
+
+2.3.1.3 'bfd_thread_cleanup'
+............................
+
+ -- Function: void bfd_thread_cleanup (void);
+     Clean up any thread-local state.  This should be called by a thread
+     that uses any BFD functions, before the thread exits.  It is fine
+     to call this multiple times, or to call it and then later call BFD
+     functions on the same thread again.
+
+2.3.1.4 'bfd_lock'
+..................
+
+ -- Function: bool bfd_lock (void);
+     Acquire the global BFD lock, if needed.  Returns true on success,
+     false on error.
+
+2.3.1.5 'bfd_unlock'
+....................
+
+ -- Function: bool bfd_unlock (void);
+     Release the global BFD lock, if needed.  Returns true on success,
+     false on error.
+
+
+File: bfd.info,  Node: Miscellaneous,  Next: Memory Usage,  Prev: Threading,  Up: BFD front end
+
+2.4 Miscellaneous
 =================
 
-2.3.1 Miscellaneous functions
+2.4.1 Miscellaneous functions
 -----------------------------
 
-2.3.1.1 'bfd_get_reloc_upper_bound'
+2.4.1.1 'bfd_get_reloc_upper_bound'
 ...................................
 
-*Synopsis*
-     long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
-   *Description*
-Return the number of bytes required to store the relocation information
-associated with section SECT attached to bfd ABFD.  If an error occurs,
-return -1.
+ -- Function: long bfd_get_reloc_upper_bound (bfd *abfd, asection
+          *sect);
+     Return the number of bytes required to store the relocation
+     information associated with section SECT attached to bfd ABFD.  If
+     an error occurs, return -1.
 
-2.3.1.2 'bfd_canonicalize_reloc'
+2.4.1.2 'bfd_canonicalize_reloc'
 ................................
 
-*Synopsis*
-     long bfd_canonicalize_reloc
-        (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
-   *Description*
-Call the back end associated with the open BFD ABFD and translate the
-external form of the relocation information attached to SEC into the
-internal canonical form.  Place the table into memory at LOC, which has
-been preallocated, usually by a call to 'bfd_get_reloc_upper_bound'.
-Returns the number of relocs, or -1 on error.
+ -- Function: long bfd_canonicalize_reloc (bfd *abfd, asection *sec,
+          arelent **loc, asymbol **syms);
+     Call the back end associated with the open BFD ABFD and translate
+     the external form of the relocation information attached to SEC
+     into the internal canonical form.  Place the table into memory at
+     LOC, which has been preallocated, usually by a call to
+     'bfd_get_reloc_upper_bound'.  Returns the number of relocs, or -1
+     on error.
 
-   The SYMS table is also needed for horrible internal magic reasons.
+     The SYMS table is also needed for horrible internal magic reasons.
 
-2.3.1.3 'bfd_set_reloc'
+2.4.1.3 'bfd_set_reloc'
 .......................
 
-*Synopsis*
-     void bfd_set_reloc
-        (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
-   *Description*
-Set the relocation pointer and count within section SEC to the values
-REL and COUNT.  The argument ABFD is ignored.
-     #define bfd_set_reloc(abfd, asect, location, count) \
-            BFD_SEND (abfd, _bfd_set_reloc, (abfd, asect, location, count))
+ -- Function: void bfd_set_reloc (bfd *abfd, asection *sec, arelent
+          **rel, unsigned int count);
+     Set the relocation pointer and count within section SEC to the
+     values REL and COUNT.  The argument ABFD is ignored.
+          #define bfd_set_reloc(abfd, asect, location, count) \
+                 BFD_SEND (abfd, _bfd_set_reloc, (abfd, asect, location, count))
 
-2.3.1.4 'bfd_set_file_flags'
+2.4.1.4 'bfd_set_file_flags'
 ............................
 
-*Synopsis*
-     bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
-   *Description*
-Set the flag word in the BFD ABFD to the value FLAGS.
-
-   Possible errors are:
-
-   * 'bfd_error_wrong_format' - The target bfd was not of object format.
-   * 'bfd_error_invalid_operation' - The target bfd was open for
-     reading.
-   * 'bfd_error_invalid_operation' - The flag word contained a bit which
-     was not applicable to the type of file.  E.g., an attempt was made
-     to set the 'D_PAGED' bit on a BFD format which does not support
-     demand paging.
+ -- Function: bool bfd_set_file_flags (bfd *abfd, flagword flags);
+     Set the flag word in the BFD ABFD to the value FLAGS.
+
+     Possible errors are:
+
+        * 'bfd_error_wrong_format' - The target bfd was not of object
+          format.
+        * 'bfd_error_invalid_operation' - The target bfd was open for
+          reading.
+        * 'bfd_error_invalid_operation' - The flag word contained a bit
+          which was not applicable to the type of file.  E.g., an
+          attempt was made to set the 'D_PAGED' bit on a BFD format
+          which does not support demand paging.
 
-2.3.1.5 'bfd_get_arch_size'
+2.4.1.5 'bfd_get_arch_size'
 ...........................
 
-*Synopsis*
-     int bfd_get_arch_size (bfd *abfd);
-   *Description*
-Returns the normalized architecture address size, in bits, as determined
-by the object file's format.  By normalized, we mean either 32 or 64.
-For ELF, this information is included in the header.  Use
-bfd_arch_bits_per_address for number of bits in the architecture
-address.
+ -- Function: int bfd_get_arch_size (bfd *abfd);
+     Returns the normalized architecture address size, in bits, as
+     determined by the object file's format.  By normalized, we mean
+     either 32 or 64.  For ELF, this information is included in the
+     header.  Use bfd_arch_bits_per_address for number of bits in the
+     architecture address.
 
-   *Returns*
-Returns the arch size in bits if known, '-1' otherwise.
+     Returns the arch size in bits if known, '-1' otherwise.
 
-2.3.1.6 'bfd_get_sign_extend_vma'
+2.4.1.6 'bfd_get_sign_extend_vma'
 .................................
 
-*Synopsis*
-     int bfd_get_sign_extend_vma (bfd *abfd);
-   *Description*
-Indicates if the target architecture "naturally" sign extends an
-address.  Some architectures implicitly sign extend address values when
-they are converted to types larger than the size of an address.  For
-instance, bfd_get_start_address() will return an address sign extended
-to fill a bfd_vma when this is the case.
-
-   *Returns*
-Returns '1' if the target architecture is known to sign extend
-addresses, '0' if the target architecture is known to not sign extend
-addresses, and '-1' otherwise.
+ -- Function: int bfd_get_sign_extend_vma (bfd *abfd);
+     Indicates if the target architecture "naturally" sign extends an
+     address.  Some architectures implicitly sign extend address values
+     when they are converted to types larger than the size of an
+     address.  For instance, bfd_get_start_address() will return an
+     address sign extended to fill a bfd_vma when this is the case.
+
+     Returns '1' if the target architecture is known to sign extend
+     addresses, '0' if the target architecture is known to not sign
+     extend addresses, and '-1' otherwise.
 
-2.3.1.7 'bfd_set_start_address'
+2.4.1.7 'bfd_set_start_address'
 ...............................
 
-*Synopsis*
-     bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
-   *Description*
-Make VMA the entry point of output BFD ABFD.
+ -- Function: bool bfd_set_start_address (bfd *abfd, bfd_vma vma);
+     Make VMA the entry point of output BFD ABFD.
 
-   *Returns*
-Returns 'TRUE' on success, 'FALSE' otherwise.
+     Returns 'TRUE' on success, 'FALSE' otherwise.
 
-2.3.1.8 'bfd_get_gp_size'
+2.4.1.8 'bfd_get_gp_size'
 .........................
 
-*Synopsis*
-     unsigned int bfd_get_gp_size (bfd *abfd);
-   *Description*
-Return the maximum size of objects to be optimized using the GP register
-under MIPS ECOFF. This is typically set by the '-G' argument to the
-compiler, assembler or linker.
+ -- Function: unsigned int bfd_get_gp_size (bfd *abfd);
+     Return the maximum size of objects to be optimized using the GP
+     register under MIPS ECOFF. This is typically set by the '-G'
+     argument to the compiler, assembler or linker.
 
-2.3.1.9 'bfd_set_gp_size'
+2.4.1.9 'bfd_set_gp_size'
 .........................
 
-*Synopsis*
-     void bfd_set_gp_size (bfd *abfd, unsigned int i);
-   *Description*
-Set the maximum size of objects to be optimized using the GP register
-under ECOFF or MIPS ELF. This is typically set by the '-G' argument to
-the compiler, assembler or linker.
+ -- Function: void bfd_set_gp_size (bfd *abfd, unsigned int i);
+     Set the maximum size of objects to be optimized using the GP
+     register under ECOFF or MIPS ELF. This is typically set by the '-G'
+     argument to the compiler, assembler or linker.
 
-2.3.1.10 'bfd_scan_vma'
-.......................
+2.4.1.10 'bfd_set_gp_value'
+...........................
 
-*Synopsis*
-     bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
-   *Description*
-Convert, like 'strtoul', a numerical expression STRING into a 'bfd_vma'
-integer, and return that integer.  (Though without as many bells and
-whistles as 'strtoul'.)  The expression is assumed to be unsigned (i.e.,
-positive).  If given a BASE, it is used as the base for conversion.  A
-base of 0 causes the function to interpret the string in hex if a
-leading "0x" or "0X" is found, otherwise in octal if a leading zero is
-found, otherwise in decimal.
+ -- Function: void bfd_set_gp_value (bfd *abfd, bfd_vma v);
+     Allow external access to the fucntion to set the GP value.  This is
+     specifically added for gdb-compile support.
 
-   If the value would overflow, the maximum 'bfd_vma' value is returned.
+2.4.1.11 'bfd_scan_vma'
+.......................
 
-2.3.1.11 'bfd_copy_private_header_data'
+ -- Function: bfd_vma bfd_scan_vma (const char *string, const char
+          **end, int base);
+     Convert, like 'strtoul' or 'stdtoull'depending on the size of a
+     'bfd_vma', a numerical expression STRING into a 'bfd_vma' integer,
+     and return that integer.
+
+2.4.1.12 'bfd_copy_private_header_data'
 .......................................
 
-*Synopsis*
-     bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
-   *Description*
-Copy private BFD header information from the BFD IBFD to the the BFD
-OBFD.  This copies information that may require sections to exist, but
-does not require symbol tables.  Return 'true' on success, 'false' on
-error.  Possible error returns are:
-
-   * 'bfd_error_no_memory' - Not enough memory exists to create private
-     data for OBFD.
-     #define bfd_copy_private_header_data(ibfd, obfd) \
-            BFD_SEND (obfd, _bfd_copy_private_header_data, \
-                      (ibfd, obfd))
+ -- Function: bool bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
+     Copy private BFD header information from the BFD IBFD to the the
+     BFD OBFD.  This copies information that may require sections to
+     exist, but does not require symbol tables.  Return 'true' on
+     success, 'false' on error.  Possible error returns are:
+
+        * 'bfd_error_no_memory' - Not enough memory exists to create
+          private data for OBFD.
+          #define bfd_copy_private_header_data(ibfd, obfd) \
+                 BFD_SEND (obfd, _bfd_copy_private_header_data, \
+                           (ibfd, obfd))
 
-2.3.1.12 'bfd_copy_private_bfd_data'
+2.4.1.13 'bfd_copy_private_bfd_data'
 ....................................
 
-*Synopsis*
-     bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
-   *Description*
-Copy private BFD information from the BFD IBFD to the the BFD OBFD.
-Return 'TRUE' on success, 'FALSE' on error.  Possible error returns are:
-
-   * 'bfd_error_no_memory' - Not enough memory exists to create private
-     data for OBFD.
-     #define bfd_copy_private_bfd_data(ibfd, obfd) \
-            BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
-                      (ibfd, obfd))
+ -- Function: bool bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
+     Copy private BFD information from the BFD IBFD to the the BFD OBFD.
+     Return 'TRUE' on success, 'FALSE' on error.  Possible error returns
+     are:
+
+        * 'bfd_error_no_memory' - Not enough memory exists to create
+          private data for OBFD.
+          #define bfd_copy_private_bfd_data(ibfd, obfd) \
+                 BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
+                           (ibfd, obfd))
 
-2.3.1.13 'bfd_set_private_flags'
+2.4.1.14 'bfd_set_private_flags'
 ................................
 
-*Synopsis*
-     bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
-   *Description*
-Set private BFD flag information in the BFD ABFD.  Return 'TRUE' on
-success, 'FALSE' on error.  Possible error returns are:
-
-   * 'bfd_error_no_memory' - Not enough memory exists to create private
-     data for OBFD.
-     #define bfd_set_private_flags(abfd, flags) \
-            BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
+ -- Function: bool bfd_set_private_flags (bfd *abfd, flagword flags);
+     Set private BFD flag information in the BFD ABFD.  Return 'TRUE' on
+     success, 'FALSE' on error.  Possible error returns are:
+
+        * 'bfd_error_no_memory' - Not enough memory exists to create
+          private data for OBFD.
+          #define bfd_set_private_flags(abfd, flags) \
+                 BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
 
-2.3.1.14 'Other functions'
+2.4.1.15 'Other functions'
 ..........................
 
-*Description*
 The following functions exist but have not yet been documented.
      #define bfd_sizeof_headers(abfd, info) \
             BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
@@ -1247,6 +1134,11 @@ The following functions exist but have n
             BFD_SEND (abfd, _bfd_find_nearest_line, \
                       (abfd, syms, sec, off, file, func, line, NULL))
 
+     #define bfd_find_nearest_line_with_alt(abfd, alt_filename, sec, syms, off, \
+                                            file, func, line, disc) \
+            BFD_SEND (abfd, _bfd_find_nearest_line_with_alt, \
+                      (abfd, alt_filename, syms, sec, off, file, func, line, disc))
+
      #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
                                                 line, disc) \
             BFD_SEND (abfd, _bfd_find_nearest_line, \
@@ -1270,7 +1162,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))
@@ -1333,138 +1226,75 @@ The following functions exist but have n
      #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
             BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
 
-     extern bfd_byte *bfd_get_relocated_section_contents
-       (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
-        bfd_boolean, asymbol **);
 
+2.4.1.16 'bfd_get_relocated_section_contents'
+.............................................
 
-2.3.1.15 'bfd_alt_mach_code'
-............................
-
-*Synopsis*
-     bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
-   *Description*
-When more than one machine code number is available for the same machine
-type, this function can be used to switch between the preferred one
-(alternative == 0) and any others.  Currently, only ELF supports this
-feature, with up to two alternate machine codes.
+ -- Function: bfd_byte *bfd_get_relocated_section_contents (bfd *,
+          struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
+          bool, asymbol **);
+     Read and relocate the indirect link_order section, into DATA (if
+     non-NULL) or to a malloc'd buffer.  Return the buffer, or NULL on
+     errors.
 
-2.3.1.16 'bfd_emul_get_maxpagesize'
-...................................
+2.4.1.17 'bfd_record_phdr'
+..........................
 
-*Synopsis*
-     bfd_vma bfd_emul_get_maxpagesize (const char *);
-   *Description*
-Returns the maximum page size, in bytes, as determined by emulation.
+ -- Function: bool bfd_record_phdr (bfd *, unsigned long, bool,
+          flagword, bool, bfd_vma, bool, bool, unsigned int, struct
+          bfd_section **);
+     Record information about an ELF program header.
 
-   *Returns*
-Returns the maximum page size in bytes for ELF, 0 otherwise.
+2.4.1.18 'bfd_sprintf_vma'
+..........................
 
-2.3.1.17 'bfd_emul_set_maxpagesize'
-...................................
+ -- Function: void bfd_sprintf_vma (bfd *, char *, bfd_vma); void
+          bfd_fprintf_vma (bfd *, void *, bfd_vma);
+     bfd_sprintf_vma and bfd_fprintf_vma display an address in the
+     target's address size.
 
-*Synopsis*
-     void bfd_emul_set_maxpagesize (const char *, bfd_vma);
-   *Description*
-For ELF, set the maximum page size for the emulation.  It is a no-op for
-other formats.
+2.4.1.19 'bfd_alt_mach_code'
+............................
 
-2.3.1.18 'bfd_emul_get_commonpagesize'
-......................................
+ -- Function: bool bfd_alt_mach_code (bfd *abfd, int alternative);
+     When more than one machine code number is available for the same
+     machine type, this function can be used to switch between the
+     preferred one (alternative == 0) and any others.  Currently, only
+     ELF supports this feature, with up to two alternate machine codes.
 
-*Synopsis*
-     bfd_vma bfd_emul_get_commonpagesize (const char *, bfd_boolean);
-   *Description*
-Returns the common page size, in bytes, as determined by emulation.
+2.4.1.20 'bfd_emul_get_maxpagesize'
+...................................
 
-   *Returns*
-Returns the common page size in bytes for ELF, 0 otherwise.
+ -- Function: bfd_vma bfd_emul_get_maxpagesize (const char *);
+     Returns the maximum page size, in bytes, as determined by
+     emulation.
 
-2.3.1.19 'bfd_emul_set_commonpagesize'
+2.4.1.21 'bfd_emul_get_commonpagesize'
 ......................................
 
-*Synopsis*
-     void bfd_emul_set_commonpagesize (const char *, bfd_vma);
-   *Description*
-For ELF, set the common page size for the emulation.  It is a no-op for
-other formats.
+ -- Function: bfd_vma bfd_emul_get_commonpagesize (const char *);
+     Returns the common page size, in bytes, as determined by emulation.
 
-2.3.1.20 'bfd_demangle'
+2.4.1.22 'bfd_demangle'
 .......................
 
-*Synopsis*
-     char *bfd_demangle (bfd *, const char *, int);
-   *Description*
-Wrapper around cplus_demangle.  Strips leading underscores and other
-such chars that would otherwise confuse the demangler.  If passed a g++
-v3 ABI mangled name, returns a buffer allocated with malloc holding the
-demangled name.  Returns NULL otherwise and on memory alloc failure.
-
-2.3.1.21 'bfd_update_compression_header'
-........................................
-
-*Synopsis*
-     void bfd_update_compression_header
-        (bfd *abfd, bfd_byte *contents, asection *sec);
-   *Description*
-Set the compression header at CONTENTS of SEC in ABFD and update
-elf_section_flags for compression.
-
-2.3.1.22 'bfd_check_compression_header'
-.......................................
-
-*Synopsis*
-     bfd_boolean bfd_check_compression_header
-        (bfd *abfd, bfd_byte *contents, asection *sec,
-         bfd_size_type *uncompressed_size,
-         unsigned int *uncompressed_alignment_power);
-   *Description*
-Check the compression header at CONTENTS of SEC in ABFD and store the
-uncompressed size in UNCOMPRESSED_SIZE and the uncompressed data
-alignment in UNCOMPRESSED_ALIGNMENT_POWER if the compression header is
-valid.
-
-   *Returns*
-Return TRUE if the compression header is valid.
-
-2.3.1.23 'bfd_get_compression_header_size'
-..........................................
-
-*Synopsis*
-     int bfd_get_compression_header_size (bfd *abfd, asection *sec);
-   *Description*
-Return the size of the compression header of SEC in ABFD.
+ -- Function: char *bfd_demangle (bfd *, const char *, int);
+     Wrapper around cplus_demangle.  Strips leading underscores and
+     other such chars that would otherwise confuse the demangler.  If
+     passed a g++ v3 ABI mangled name, returns a buffer allocated with
+     malloc holding the demangled name.  Returns NULL otherwise and on
+     memory alloc failure.
 
-   *Returns*
-Return the size of the compression header in bytes.
-
-2.3.1.24 'bfd_convert_section_size'
-...................................
-
-*Synopsis*
-     bfd_size_type bfd_convert_section_size
-        (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size);
-   *Description*
-Convert the size SIZE of the section ISEC in input BFD IBFD to the
-section size in output BFD OBFD.
-
-2.3.1.25 'bfd_convert_section_contents'
-.......................................
+2.4.1.23 'bfd_group_signature'
+..............................
 
-*Synopsis*
-     bfd_boolean bfd_convert_section_contents
-        (bfd *ibfd, asection *isec, bfd *obfd,
-         bfd_byte **ptr, bfd_size_type *ptr_size);
-   *Description*
-Convert the contents, stored in *PTR, of the section ISEC in input BFD
-IBFD to output BFD OBFD if needed.  The original buffer pointed to by
-*PTR may be freed and *PTR is returned with memory malloc'd by this
-function, and the new size written to PTR_SIZE.
+ -- Function: asymbol *bfd_group_signature (asection *group, asymbol
+          **isympp);
+     Return a pointer to the symbol used as a signature for GROUP.
 
-2.3.1.26 'struct bfd_iovec'
+2.4.1.24 'struct bfd_iovec'
 ...........................
 
-*Description*
 The 'struct bfd_iovec' contains the internal file I/O class.  Each 'BFD'
 has an instance of this class and all file I/O is routed through it (it
 is assumed that the instance implements all methods listed below).
@@ -1490,78 +1320,132 @@ is assumed that the instance implements
        int (*bstat) (struct bfd *abfd, struct stat *sb);
        /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual
           mmap parameter, except that LEN and OFFSET do not need to be page
-          aligned.  Returns (void *)-1 on failure, mmapped address on success.
+          aligned.  Returns MAP_FAILED on failure, mmapped address on success.
           Also write in MAP_ADDR the address of the page aligned buffer and in
           MAP_LEN the size mapped (a page multiple).  Use unmap with MAP_ADDR and
           MAP_LEN to unmap.  */
-       void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
+       void *(*bmmap) (struct bfd *abfd, void *addr, size_t len,
                        int prot, int flags, file_ptr offset,
-                       void **map_addr, bfd_size_type *map_len);
+                       void **map_addr, size_t *map_len);
      };
      extern const struct bfd_iovec _bfd_memory_iovec;
 
-2.3.1.27 'bfd_get_mtime'
+
+2.4.1.25 'bfd_read'
+...................
+
+ -- Function: bfd_size_type bfd_read (void *, bfd_size_type, bfd *)
+          ATTRIBUTE_WARN_UNUSED_RESULT;
+     Attempt to read SIZE bytes from ABFD's iostream to PTR. Return the
+     amount read.
+
+2.4.1.26 'bfd_write'
+....................
+
+ -- Function: bfd_size_type bfd_write (const void *, bfd_size_type, bfd
+          *) ATTRIBUTE_WARN_UNUSED_RESULT;
+     Attempt to write SIZE bytes to ABFD's iostream from PTR. Return the
+     amount written.
+
+2.4.1.27 'bfd_tell'
+...................
+
+ -- Function: file_ptr bfd_tell (bfd *) ATTRIBUTE_WARN_UNUSED_RESULT;
+     Return ABFD's iostream file position.
+
+2.4.1.28 'bfd_flush'
+....................
+
+ -- Function: int bfd_flush (bfd *);
+     Flush ABFD's iostream pending IO.
+
+2.4.1.29 'bfd_stat'
+...................
+
+ -- Function: int bfd_stat (bfd *, struct stat *)
+          ATTRIBUTE_WARN_UNUSED_RESULT;
+     Call fstat on ABFD's iostream.  Return 0 on success, and a negative
+     value on failure.
+
+2.4.1.30 'bfd_seek'
+...................
+
+ -- Function: int bfd_seek (bfd *, file_ptr, int)
+          ATTRIBUTE_WARN_UNUSED_RESULT;
+     Call fseek on ABFD's iostream.  Return 0 on success, and a negative
+     value on failure.
+
+2.4.1.31 'bfd_get_mtime'
 ........................
 
-*Synopsis*
-     long bfd_get_mtime (bfd *abfd);
-   *Description*
-Return the file modification time (as read from the file system, or from
-the archive header for archive members).
+ -- Function: long bfd_get_mtime (bfd *abfd);
+     Return the file modification time (as read from the file system, or
+     from the archive header for archive members).
 
-2.3.1.28 'bfd_get_size'
+2.4.1.32 'bfd_get_size'
 .......................
 
-*Synopsis*
-     ufile_ptr bfd_get_size (bfd *abfd);
-   *Description*
-Return the file size (as read from file system) for the file associated
-with BFD ABFD.
-
-   The initial motivation for, and use of, this routine is not so we can
-get the exact size of the object the BFD applies to, since that might
-not be generally possible (archive members for example).  It would be
-ideal if someone could eventually modify it so that such results were
-guaranteed.
-
-   Instead, we want to ask questions like "is this NNN byte sized object
-I'm about to try read from file offset YYY reasonable?"  As as example
-of where we might do this, some object formats use string tables for
-which the first 'sizeof (long)' bytes of the table contain the size of
-the table itself, including the size bytes.  If an application tries to
-read what it thinks is one of these string tables, without some way to
-validate the size, and for some reason the size is wrong (byte swapping
-error, wrong location for the string table, etc.), the only clue is
-likely to be a read error when it tries to read the table, or a "virtual
-memory exhausted" error when it tries to allocate 15 bazillon bytes 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?".
+ -- Function: ufile_ptr bfd_get_size (bfd *abfd);
+     Return the file size (as read from file system) for the file
+     associated with BFD ABFD.
+
+     The initial motivation for, and use of, this routine is not so we
+     can get the exact size of the object the BFD applies to, since that
+     might not be generally possible (archive members for example).  It
+     would be ideal if someone could eventually modify it so that such
+     results were guaranteed.
+
+     Instead, we want to ask questions like "is this NNN byte sized
+     object I'm about to try read from file offset YYY reasonable?"  As
+     as example of where we might do this, some object formats use
+     string tables for which the first 'sizeof (long)' bytes of the
+     table contain the size of the table itself, including the size
+     bytes.  If an application tries to read what it thinks is one of
+     these string tables, without some way to validate the size, and for
+     some reason the size is wrong (byte swapping error, wrong location
+     for the string table, etc.), the only clue is likely to be a read
+     error when it tries to read the table, or a "virtual memory
+     exhausted" error when it tries to allocate 15 bazillon bytes 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.
 
-2.3.1.29 'bfd_get_file_size'
+2.4.1.33 'bfd_get_file_size'
 ............................
 
-*Synopsis*
-     ufile_ptr bfd_get_file_size (bfd *abfd);
-   *Description*
-Return the file size (as read from file system) for the file associated
-with BFD ABFD.  It supports both normal files and archive elements.
+ -- Function: ufile_ptr bfd_get_file_size (bfd *abfd);
+     Return the file size (as read from file system) for the file
+     associated with BFD ABFD.  It supports both normal files and
+     archive elements.
 
-2.3.1.30 'bfd_mmap'
+2.4.1.34 'bfd_mmap'
 ...................
 
-*Synopsis*
-     void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
-         int prot, int flags, file_ptr offset,
-         void **map_addr, bfd_size_type *map_len);
-   *Description*
-Return mmap()ed region of the file, if possible and implemented.  LEN
-and OFFSET do not need to be page aligned.  The page aligned address and
-length are written to MAP_ADDR and MAP_LEN.
+ -- Function: void *bfd_mmap (bfd *abfd, void *addr, size_t len, int
+          prot, int flags, file_ptr offset, void **map_addr, size_t
+          *map_len) ATTRIBUTE_WARN_UNUSED_RESULT;
+     Return mmap()ed region of the file, if possible and implemented.
+     LEN and OFFSET do not need to be page aligned.  The page aligned
+     address and length are written to MAP_ADDR and MAP_LEN. Returns
+     MAP_FAILED on failure.
+
+2.4.1.35 'bfd_get_current_time'
+...............................
+
+ -- Function: time_t bfd_get_current_time (time_t now);
+     Returns the current time.
+
+     If the environment variable SOURCE_DATE_EPOCH is defined then this
+     is parsed and its value is returned.  Otherwise if the paramter NOW
+     is non-zero, then that is returned.  Otherwise the result of the
+     system call "time(NULL)" is returned.
 
 
-File: bfd.info,  Node: Memory Usage,  Next: Initialization,  Prev: Miscellaneous,  Up: BFD front end
+File: bfd.info,  Node: Memory Usage,  Next: Sections,  Prev: Miscellaneous,  Up: BFD front end
 
-2.4 Memory Usage
+2.5 Memory Usage
 ================
 
 BFD keeps all of its internal structures in obstacks.  There is one
@@ -1585,32 +1469,7 @@ operation and reopen the BFD again, to g
 structures.
 
 
-File: bfd.info,  Node: Initialization,  Next: Sections,  Prev: Memory Usage,  Up: BFD front end
-
-2.5 Initialization
-==================
-
-2.5.1 Initialization functions
-------------------------------
-
-These are the functions that handle initializing a BFD.
-
-2.5.1.1 'bfd_init'
-..................
-
-*Synopsis*
-     unsigned int bfd_init (void);
-   *Description*
-This routine must be called before any other BFD function to initialize
-magical internal data structures.  Returns a magic number, which may be
-used to check that the bfd library is configured as expected by users.
-
-     /* Value returned by bfd_init.  */
-
-     #define BFD_INIT_MAGIC (sizeof (struct bfd_section))
-
-
-File: bfd.info,  Node: Sections,  Next: Symbols,  Prev: Initialization,  Up: BFD front end
+File: bfd.info,  Node: Sections,  Next: Symbols,  Prev: Memory Usage,  Up: BFD front end
 
 2.6 Sections
 ============
@@ -1724,25 +1583,28 @@ File: bfd.info,  Node: typedef asection,
 
 Here is the section structure:
 
-
      typedef struct bfd_section
      {
        /* The name of the section; the name isn't a copy, the pointer is
           the same as that passed to bfd_make_section.  */
        const char *name;
 
-       /* A unique sequence number.  */
-       unsigned int id;
-
-       /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
-       unsigned int index;
-
        /* The next section in the list belonging to the BFD, or NULL.  */
        struct bfd_section *next;
 
        /* The previous section in the list belonging to the BFD, or NULL.  */
        struct bfd_section *prev;
 
+       /* 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;
+
        /* The field flags contains attributes of the section. Some
           flags are read in from the object file, and some are
           synthesized from other information.  */
@@ -1867,6 +1729,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.  */
@@ -1908,9 +1774,8 @@ Here is the section structure:
           executables or shared objects. This is for COFF only.  */
      #define SEC_COFF_SHARED             0x8000000
 
-       /* This section should be compressed.  This is for ELF linker
-          internal use only.  */
-     #define SEC_ELF_COMPRESS            0x8000000
+       /* Indicate that section has the purecode flag set.  */
+     #define SEC_ELF_PURECODE            0x8000000
 
        /* When a section with this flag is being linked, then if the size of
           the input section is less than a page, it should not cross a page
@@ -1919,9 +1784,8 @@ Here is the section structure:
           TMS320C54X only.  */
      #define SEC_TIC54X_BLOCK           0x10000000
 
-       /* This section should be renamed.  This is for ELF linker
-          internal use only.  */
-     #define SEC_ELF_RENAME             0x10000000
+       /* This section has the SHF_X86_64_LARGE flag.  This is ELF x86-64 only.  */
+     #define SEC_ELF_LARGE              0x10000000
 
        /* Conditionally link this section; do not link if there are no
           references found to any symbol in the section.  This is for TI
@@ -1940,9 +1804,6 @@ Here is the section structure:
           when memory read flag isn't set. */
      #define SEC_COFF_NOREAD            0x40000000
 
-       /* Indicate that section has the purecode flag set.  */
-     #define SEC_ELF_PURECODE           0x80000000
-
        /*  End of section flags.  */
 
        /* Some internal packed boolean fields.  */
@@ -1964,7 +1825,8 @@ Here is the section structure:
        unsigned int compress_status : 2;
      #define COMPRESS_SECTION_NONE    0
      #define COMPRESS_SECTION_DONE    1
-     #define DECOMPRESS_SECTION_SIZED 2
+     #define DECOMPRESS_SECTION_ZLIB  2
+     #define DECOMPRESS_SECTION_ZSTD  3
 
        /* The following flags are used by the ELF linker. */
 
@@ -1980,10 +1842,17 @@ Here is the section structure:
      #define SEC_INFO_TYPE_JUST_SYMS 4
      #define SEC_INFO_TYPE_TARGET    5
      #define SEC_INFO_TYPE_EH_FRAME_ENTRY 6
+     #define SEC_INFO_TYPE_SFRAME  7
 
        /* Nonzero if this section uses RELA relocations, rather than REL.  */
        unsigned int use_rela_p:1;
 
+       /* Nonzero if section contents are mmapped.  */
+       unsigned int mmapped_p:1;
+
+       /* Nonzero if section contents should not be freed.  */
+       unsigned int alloced:1;
+
        /* Bits used by various backends.  The generic code doesn't touch
           these fields.  */
 
@@ -2027,13 +1896,6 @@ Here is the section structure:
        /* The compressed size of the section in octets.  */
        bfd_size_type compressed_size;
 
-       /* Relaxation table. */
-       struct relax_table *relax;
-
-       /* Count of used relaxation table entries. */
-       int relax_count;
-
-
        /* If this section is going to be output, then this value is the
           offset in *bytes* into the output section of the first byte in the
           input section (byte ==> smallest addressable unit on the
@@ -2046,10 +1908,6 @@ Here is the section structure:
        /* The output section through which to map on output.  */
        struct bfd_section *output_section;
 
-       /* The alignment requirement of the section, as an exponent of 2 -
-          e.g., 3 aligns to 2^3 (or 8).  */
-       unsigned int alignment_power;
-
        /* If an input section, a pointer to a vector of relocation
           records for the data in this section.  */
        struct reloc_cache_entry *relocation;
@@ -2061,6 +1919,10 @@ Here is the section structure:
        /* The number of relocation records in one of the above.  */
        unsigned reloc_count;
 
+       /* The alignment requirement of the section, as an exponent of 2 -
+          e.g., 3 aligns to 2^3 (or 8).  */
+       unsigned int alignment_power;
+
        /* Information below is back end specific - and not always used
           or updated.  */
 
@@ -2078,7 +1940,7 @@ Here is the section structure:
 
        /* If the SEC_IN_MEMORY flag is set, this points to the actual
           contents.  */
-       unsigned char *contents;
+       bfd_byte *contents;
 
        /* Attached line number information.  */
        alent *lineno;
@@ -2111,211 +1973,27 @@ Here is the section structure:
 
        /* A symbol which points at this section only.  */
        struct bfd_symbol *symbol;
-       struct bfd_symbol **symbol_ptr_ptr;
 
        /* 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;
-     } asection;
-
-     /* Relax table contains information about instructions which can
-        be removed by relaxation -- replacing a long address with a
-        short address.  */
-     struct relax_table {
-       /* Address where bytes may be deleted. */
-       bfd_vma addr;
-
-       /* Number of bytes to be deleted.  */
-       int size;
-     };
-
-     static inline const char *
-     bfd_section_name (const asection *sec)
-     {
-       return sec->name;
-     }
-
-     static inline bfd_size_type
-     bfd_section_size (const asection *sec)
-     {
-       return sec->size;
-     }
-
-     static inline bfd_vma
-     bfd_section_vma (const asection *sec)
-     {
-       return sec->vma;
-     }
 
-     static inline bfd_vma
-     bfd_section_lma (const asection *sec)
-     {
-       return sec->lma;
-     }
-
-     static inline unsigned int
-     bfd_section_alignment (const asection *sec)
-     {
-       return sec->alignment_power;
-     }
+       /* 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;
 
-     static inline flagword
-     bfd_section_flags (const asection *sec)
-     {
-       return sec->flags;
-     }
-
-     static inline void *
-     bfd_section_userdata (const asection *sec)
-     {
-       return sec->userdata;
-     }
-     static inline bfd_boolean
-     bfd_is_com_section (const asection *sec)
-     {
-       return (sec->flags & SEC_IS_COMMON) != 0;
-     }
-
-     /* Note: the following are provided as inline functions rather than macros
-        because not all callers use the return value.  A macro implementation
-        would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
-        compilers will complain about comma expressions that have no effect.  */
-     static inline bfd_boolean
-     bfd_set_section_userdata (asection *sec, void *val)
-     {
-       sec->userdata = val;
-       return TRUE;
-     }
-
-     static inline bfd_boolean
-     bfd_set_section_vma (asection *sec, bfd_vma val)
-     {
-       sec->vma = sec->lma = val;
-       sec->user_set_vma = TRUE;
-       return TRUE;
-     }
-
-     static inline bfd_boolean
-     bfd_set_section_lma (asection *sec, bfd_vma val)
-     {
-       sec->lma = val;
-       return TRUE;
-     }
-
-     static inline bfd_boolean
-     bfd_set_section_alignment (asection *sec, unsigned int val)
-     {
-       sec->alignment_power = val;
-       return TRUE;
-     }
-
-     /* These sections are global, and are managed by BFD.  The application
-        and target back end are not permitted to change the values in
-        these sections.  */
-     extern asection _bfd_std_section[4];
-
-     #define BFD_ABS_SECTION_NAME "*ABS*"
-     #define BFD_UND_SECTION_NAME "*UND*"
-     #define BFD_COM_SECTION_NAME "*COM*"
-     #define BFD_IND_SECTION_NAME "*IND*"
-
-     /* Pointer to the common section.  */
-     #define bfd_com_section_ptr (&_bfd_std_section[0])
-     /* Pointer to the undefined section.  */
-     #define bfd_und_section_ptr (&_bfd_std_section[1])
-     /* Pointer to the absolute section.  */
-     #define bfd_abs_section_ptr (&_bfd_std_section[2])
-     /* Pointer to the indirect section.  */
-     #define bfd_ind_section_ptr (&_bfd_std_section[3])
-
-     static inline bfd_boolean
-     bfd_is_und_section (const asection *sec)
-     {
-       return sec == bfd_und_section_ptr;
-     }
-
-     static inline bfd_boolean
-     bfd_is_abs_section (const asection *sec)
-     {
-       return sec == bfd_abs_section_ptr;
-     }
-
-     static inline bfd_boolean
-     bfd_is_ind_section (const asection *sec)
-     {
-       return sec == bfd_ind_section_ptr;
-     }
-
-     static inline bfd_boolean
-     bfd_is_const_section (const asection *sec)
-     {
-       return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
-     }
-
-     /* Return TRUE if input section SEC has been discarded.  */
-     static inline bfd_boolean
-     discarded_section (const asection *sec)
-     {
-       return (!bfd_is_abs_section (sec)
-               && bfd_is_abs_section (sec->output_section)
-               && sec->sec_info_type != SEC_INFO_TYPE_MERGE
-               && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
-     }
-
-     #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,                           \
-                                                                            \
-       /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
-          0,           0,                1,       0,                        \
-                                                                            \
-       /* segment_mark, sec_info_type, use_rela_p,                      */  \
-          0,            0,             0,                                   \
-                                                                            \
-       /* 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, */  \
-          0,   0,   0,    0,       0,               0,     0,               \
-                                                                            \
-       /* output_offset, output_section, alignment_power,               */  \
-          0,             &SEC,           0,                                 \
-                                                                            \
-       /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
-          NULL,       NULL,        0,           0,       0,                 \
-                                                                            \
-       /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
-          0,            NULL,     NULL,     NULL,   0,                      \
-                                                                            \
-       /* entsize, kept_section, moving_line_filepos,                    */ \
-          0,       NULL,          0,                                        \
-                                                                            \
-       /* target_index, used_by_bfd, constructor_chain, owner,          */  \
-          0,            NULL,        NULL,              NULL,               \
-                                                                            \
-       /* symbol,                    symbol_ptr_ptr,                    */  \
-          (struct bfd_symbol *) SYM, &SEC.symbol,                           \
-                                                                            \
-       /* map_head, map_tail                                            */  \
-          { NULL }, { NULL }                                                \
-         }
+       /* Explicitly specified section type, if non-zero.  */
+       unsigned int type;
 
-     /* We use a macro to initialize the static asymbol structures because
-        traditional C does not permit us to initialize a union member while
-        gcc warns if we don't initialize it.
-        the_bfd, name, value, attr, section [, udata]  */
-     #ifdef __STDC__
-     #define GLOBAL_SYM_INIT(NAME, SECTION) \
-       { 0, NAME, 0, BSF_SECTION_SYM, SECTION, { 0 }}
-     #else
-     #define GLOBAL_SYM_INIT(NAME, SECTION) \
-       { 0, NAME, 0, BSF_SECTION_SYM, SECTION }
-     #endif
+     } asection;
 
 
 
@@ -2329,315 +2007,287 @@ These are the functions exported by the
 2.6.5.1 'bfd_section_list_clear'
 ................................
 
-*Synopsis*
-     void bfd_section_list_clear (bfd *);
-   *Description*
-Clears the section list, and also resets the section count and hash
-table entries.
+ -- Function: void bfd_section_list_clear (bfd *);
+     Clears the section list, and also resets the section count and hash
+     table entries.
 
 2.6.5.2 'bfd_get_section_by_name'
 .................................
 
-*Synopsis*
-     asection *bfd_get_section_by_name (bfd *abfd, const char *name);
-   *Description*
-Return the most recently created section attached to ABFD named NAME.
-Return NULL if no such section exists.
+ -- Function: asection *bfd_get_section_by_name (bfd *abfd, const char
+          *name);
+     Return the most recently created section attached to ABFD named
+     NAME.  Return NULL if no such section exists.
 
 2.6.5.3 'bfd_get_next_section_by_name'
 ......................................
 
-*Synopsis*
-     asection *bfd_get_next_section_by_name (bfd *ibfd, asection *sec);
-   *Description*
-Given SEC is a section returned by 'bfd_get_section_by_name', return the
-next most recently created section attached to the same BFD with the
-same name, or if no such section exists in the same BFD and IBFD is
-non-NULL, the next section with the same name in any input BFD following
-IBFD. Return NULL on finding no section.
+ -- Function: asection *bfd_get_next_section_by_name (bfd *ibfd,
+          asection *sec);
+     Given SEC is a section returned by 'bfd_get_section_by_name',
+     return the next most recently created section attached to the same
+     BFD with the same name, or if no such section exists in the same
+     BFD and IBFD is non-NULL, the next section with the same name in
+     any input BFD following IBFD. Return NULL on finding no section.
 
 2.6.5.4 'bfd_get_linker_section'
 ................................
 
-*Synopsis*
-     asection *bfd_get_linker_section (bfd *abfd, const char *name);
-   *Description*
-Return the linker created section attached to ABFD named NAME.  Return
-NULL if no such section exists.
+ -- Function: asection *bfd_get_linker_section (bfd *abfd, const char
+          *name);
+     Return the linker created section attached to ABFD named NAME.
+     Return NULL if no such section exists.
 
 2.6.5.5 'bfd_get_section_by_name_if'
 ....................................
 
-*Synopsis*
-     asection *bfd_get_section_by_name_if
-        (bfd *abfd,
-         const char *name,
-         bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
-         void *obj);
-   *Description*
-Call the provided function FUNC for each section attached to the BFD
-ABFD whose name matches NAME, passing OBJ as an argument.  The function
-will be called as if by
+ -- Function: asection *bfd_get_section_by_name_if (bfd *abfd, const
+          char *name, bool (*func) (bfd *abfd, asection *sect, void
+          *obj), void *obj);
+     Call the provided function FUNC for each section attached to the
+     BFD ABFD whose name matches NAME, passing OBJ as an argument.  The
+     function will be called as if by
 
-            func (abfd, the_section, obj);
+                 func (abfd, the_section, obj);
 
-   It returns the first section for which FUNC returns true, otherwise
-'NULL'.
+     It returns the first section for which FUNC returns true, otherwise
+     'NULL'.
 
 2.6.5.6 'bfd_get_unique_section_name'
 .....................................
 
-*Synopsis*
-     char *bfd_get_unique_section_name
-        (bfd *abfd, const char *templat, int *count);
-   *Description*
-Invent a section name that is unique in ABFD by tacking a dot and a
-digit suffix onto the original TEMPLAT.  If COUNT is non-NULL, then it
-specifies the first number tried as a suffix to generate a unique name.
-The value pointed to by COUNT will be incremented in this case.
+ -- Function: char *bfd_get_unique_section_name (bfd *abfd, const char
+          *templat, int *count);
+     Invent a section name that is unique in ABFD by tacking a dot and a
+     digit suffix onto the original TEMPLAT.  If COUNT is non-NULL, then
+     it specifies the first number tried as a suffix to generate a
+     unique name.  The value pointed to by COUNT will be incremented in
+     this case.
 
 2.6.5.7 'bfd_make_section_old_way'
 ..................................
 
-*Synopsis*
-     asection *bfd_make_section_old_way (bfd *abfd, const char *name);
-   *Description*
-Create a new empty section called NAME and attach it to the end of the
-chain of sections for the BFD ABFD.  An attempt to create a section with
-a name which is already in use returns its pointer without changing the
-section chain.
-
-   It has the funny name since this is the way it used to be before it
-was rewritten....
-
-   Possible errors are:
-
-   * 'bfd_error_invalid_operation' - If output has already started for
-     this BFD.
-   * 'bfd_error_no_memory' - If memory allocation fails.
+ -- Function: asection *bfd_make_section_old_way (bfd *abfd, const char
+          *name);
+     Create a new empty section called NAME and attach it to the end of
+     the chain of sections for the BFD ABFD.  An attempt to create a
+     section with a name which is already in use returns its pointer
+     without changing the section chain.
+
+     It has the funny name since this is the way it used to be before it
+     was rewritten....
+
+     Possible errors are:
+
+        * 'bfd_error_invalid_operation' - If output has already started
+          for this BFD.
+        * 'bfd_error_no_memory' - If memory allocation fails.
 
 2.6.5.8 'bfd_make_section_anyway_with_flags'
 ............................................
 
-*Synopsis*
-     asection *bfd_make_section_anyway_with_flags
-        (bfd *abfd, const char *name, flagword flags);
-   *Description*
-Create a new empty section called NAME and attach it to the end of the
-chain of sections for ABFD.  Create a new section even if there is
-already a section with that name.  Also set the attributes of the new
-section to the value FLAGS.
-
-   Return 'NULL' and set 'bfd_error' on error; possible errors are:
-
-   * 'bfd_error_invalid_operation' - If output has already started for
-     ABFD.
-   * 'bfd_error_no_memory' - If memory allocation fails.
+ -- Function: asection *bfd_make_section_anyway_with_flags (bfd *abfd,
+          const char *name, flagword flags);
+     Create a new empty section called NAME and attach it to the end of
+     the chain of sections for ABFD.  Create a new section even if there
+     is already a section with that name.  Also set the attributes of
+     the new section to the value FLAGS.
+
+     Return 'NULL' and set 'bfd_error' on error; possible errors are:
+
+        * 'bfd_error_invalid_operation' - If output has already started
+          for ABFD.
+        * 'bfd_error_no_memory' - If memory allocation fails.
 
 2.6.5.9 'bfd_make_section_anyway'
 .................................
 
-*Synopsis*
-     asection *bfd_make_section_anyway (bfd *abfd, const char *name);
-   *Description*
-Create a new empty section called NAME and attach it to the end of the
-chain of sections for ABFD.  Create a new section even if there is
-already a section with that name.
-
-   Return 'NULL' and set 'bfd_error' on error; possible errors are:
-
-   * 'bfd_error_invalid_operation' - If output has already started for
-     ABFD.
-   * 'bfd_error_no_memory' - If memory allocation fails.
+ -- Function: asection *bfd_make_section_anyway (bfd *abfd, const char
+          *name);
+     Create a new empty section called NAME and attach it to the end of
+     the chain of sections for ABFD.  Create a new section even if there
+     is already a section with that name.
+
+     Return 'NULL' and set 'bfd_error' on error; possible errors are:
+
+        * 'bfd_error_invalid_operation' - If output has already started
+          for ABFD.
+        * 'bfd_error_no_memory' - If memory allocation fails.
 
 2.6.5.10 'bfd_make_section_with_flags'
 ......................................
 
-*Synopsis*
-     asection *bfd_make_section_with_flags
-        (bfd *, const char *name, flagword flags);
-   *Description*
-Like 'bfd_make_section_anyway', but return 'NULL' (without calling
-bfd_set_error ()) without changing the section chain if there is already
-a section named NAME.  Also set the attributes of the new section to the
-value FLAGS.  If there is an error, return 'NULL' and set 'bfd_error'.
+ -- Function: asection *bfd_make_section_with_flags (bfd *, const char
+          *name, flagword flags);
+     Like 'bfd_make_section_anyway', but return 'NULL' (without calling
+     bfd_set_error ()) without changing the section chain if there is
+     already a section named NAME.  Also set the attributes of the new
+     section to the value FLAGS.  If there is an error, return 'NULL'
+     and set 'bfd_error'.
 
 2.6.5.11 'bfd_make_section'
 ...........................
 
-*Synopsis*
-     asection *bfd_make_section (bfd *, const char *name);
-   *Description*
-Like 'bfd_make_section_anyway', but return 'NULL' (without calling
-bfd_set_error ()) without changing the section chain if there is already
-a section named NAME.  If there is an error, return 'NULL' and set
-'bfd_error'.
+ -- Function: asection *bfd_make_section (bfd *, const char *name);
+     Like 'bfd_make_section_anyway', but return 'NULL' (without calling
+     bfd_set_error ()) without changing the section chain if there is
+     already a section named NAME.  If there is an error, return 'NULL'
+     and set 'bfd_error'.
 
 2.6.5.12 'bfd_set_section_flags'
 ................................
 
-*Synopsis*
-     bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
-   *Description*
-Set the attributes of the section SEC to the value FLAGS.  Return 'TRUE'
-on success, 'FALSE' on error.  Possible error returns are:
-
-   * 'bfd_error_invalid_operation' - The section cannot have one or more
-     of the attributes requested.  For example, a .bss section in
-     'a.out' may not have the 'SEC_HAS_CONTENTS' field set.
+ -- Function: bool bfd_set_section_flags (asection *sec, flagword
+          flags);
+     Set the attributes of the section SEC to the value FLAGS.  Return
+     'TRUE' on success, 'FALSE' on error.  Possible error returns are:
+
+        * 'bfd_error_invalid_operation' - The section cannot have one or
+          more of the attributes requested.  For example, a .bss section
+          in 'a.out' may not have the 'SEC_HAS_CONTENTS' field set.
 
 2.6.5.13 'bfd_rename_section'
 .............................
 
-*Synopsis*
-     void bfd_rename_section
-        (asection *sec, const char *newname);
-   *Description*
-Rename section SEC to NEWNAME.
+ -- Function: void bfd_rename_section (asection *sec, const char
+          *newname);
+     Rename section SEC to NEWNAME.
 
 2.6.5.14 'bfd_map_over_sections'
 ................................
 
-*Synopsis*
-     void bfd_map_over_sections
-        (bfd *abfd,
-         void (*func) (bfd *abfd, asection *sect, void *obj),
-         void *obj);
-   *Description*
-Call the provided function FUNC for each section attached to the BFD
-ABFD, passing OBJ as an argument.  The function will be called as if by
-
-            func (abfd, the_section, obj);
-
-   This is the preferred method for iterating over sections; an
-alternative would be to use a loop:
-
-               asection *p;
-               for (p = abfd->sections; p != NULL; p = p->next)
-                  func (abfd, p, ...)
+ -- Function: void bfd_map_over_sections (bfd *abfd, void (*func) (bfd
+          *abfd, asection *sect, void *obj), void *obj);
+     Call the provided function FUNC for each section attached to the
+     BFD ABFD, passing OBJ as an argument.  The function will be called
+     as if by
+
+                 func (abfd, the_section, obj);
+
+     This is the preferred method for iterating over sections; an
+     alternative would be to use a loop:
+
+                    asection *p;
+                    for (p = abfd->sections; p != NULL; p = p->next)
+                       func (abfd, p, ...)
 
 2.6.5.15 'bfd_sections_find_if'
 ...............................
 
-*Synopsis*
-     asection *bfd_sections_find_if
-        (bfd *abfd,
-         bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
-         void *obj);
-   *Description*
-Call the provided function OPERATION for each section attached to the
-BFD ABFD, passing OBJ as an argument.  The function will be called as if
-by
+ -- Function: asection *bfd_sections_find_if (bfd *abfd, bool
+          (*operation) (bfd *abfd, asection *sect, void *obj), void
+          *obj);
+     Call the provided function OPERATION for each section attached to
+     the BFD ABFD, passing OBJ as an argument.  The function will be
+     called as if by
 
-            operation (abfd, the_section, obj);
+                 operation (abfd, the_section, obj);
 
-   It returns the first section for which OPERATION returns true.
+     It returns the first section for which OPERATION returns true.
 
 2.6.5.16 'bfd_set_section_size'
 ...............................
 
-*Synopsis*
-     bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
-   *Description*
-Set SEC to the size VAL.  If the operation is ok, then 'TRUE' is
-returned, else 'FALSE'.
+ -- Function: bool bfd_set_section_size (asection *sec, bfd_size_type
+          val);
+     Set SEC to the size VAL.  If the operation is ok, then 'TRUE' is
+     returned, else 'FALSE'.
 
-   Possible error returns:
+     Possible error returns:
 
-   * 'bfd_error_invalid_operation' - Writing has started to the BFD, so
-     setting the size is invalid.
+        * 'bfd_error_invalid_operation' - Writing has started to the
+          BFD, so setting the size is invalid.
 
 2.6.5.17 'bfd_set_section_contents'
 ...................................
 
-*Synopsis*
-     bfd_boolean bfd_set_section_contents
-        (bfd *abfd, asection *section, const void *data,
-         file_ptr offset, bfd_size_type count);
-   *Description*
-Sets the contents of the section SECTION in BFD ABFD to the data
-starting in memory at LOCATION.  The data is written to the output
-section starting at offset OFFSET for COUNT octets.
-
-   Normally 'TRUE' is returned, but 'FALSE' is returned if there was an
-error.  Possible error returns are:
-
-   * 'bfd_error_no_contents' - The output section does not have the
-     'SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
-   * 'bfd_error_bad_value' - The section is unable to contain all of the
-     data.
-   * 'bfd_error_invalid_operation' - The BFD is not writeable.
-   * and some more too.
-   This routine is front end to the back end function
-'_bfd_set_section_contents'.
+ -- Function: bool bfd_set_section_contents (bfd *abfd, asection
+          *section, const void *data, file_ptr offset, bfd_size_type
+          count);
+     Sets the contents of the section SECTION in BFD ABFD to the data
+     starting in memory at LOCATION.  The data is written to the output
+     section starting at offset OFFSET for COUNT octets.
+
+     Normally 'TRUE' is returned, but 'FALSE' is returned if there was
+     an error.  Possible error returns are:
+
+        * 'bfd_error_no_contents' - The output section does not have the
+          'SEC_HAS_CONTENTS' attribute, so nothing can be written to it.
+        * 'bfd_error_bad_value' - The section is unable to contain all
+          of the data.
+        * 'bfd_error_invalid_operation' - The BFD is not writeable.
+        * and some more too.
+     This routine is front end to the back end function
+     '_bfd_set_section_contents'.
 
 2.6.5.18 'bfd_get_section_contents'
 ...................................
 
-*Synopsis*
-     bfd_boolean bfd_get_section_contents
-        (bfd *abfd, asection *section, void *location, file_ptr offset,
-         bfd_size_type count);
-   *Description*
-Read data from SECTION in BFD ABFD into memory starting at LOCATION.
-The data is read at an offset of OFFSET from the start of the input
-section, and is read for COUNT bytes.
-
-   If the contents of a constructor with the 'SEC_CONSTRUCTOR' flag set
-are requested or if the section does not have the 'SEC_HAS_CONTENTS'
-flag set, then the LOCATION is filled with zeroes.  If no errors occur,
-'TRUE' is returned, else 'FALSE'.
+ -- Function: bool bfd_get_section_contents (bfd *abfd, asection
+          *section, void *location, file_ptr offset, bfd_size_type
+          count);
+     Read data from SECTION in BFD ABFD into memory starting at
+     LOCATION.  The data is read at an offset of OFFSET from the start
+     of the input section, and is read for COUNT bytes.
+
+     If the contents of a constructor with the 'SEC_CONSTRUCTOR' flag
+     set are requested or if the section does not have the
+     'SEC_HAS_CONTENTS' flag set, then the LOCATION is filled with
+     zeroes.  If no errors occur, 'TRUE' is returned, else 'FALSE'.
 
 2.6.5.19 'bfd_malloc_and_get_section'
 .....................................
 
-*Synopsis*
-     bfd_boolean bfd_malloc_and_get_section
-        (bfd *abfd, asection *section, bfd_byte **buf);
-   *Description*
-Read all data from SECTION in BFD ABFD into a buffer, *BUF, malloc'd by
-this function.
+ -- Function: bool bfd_malloc_and_get_section (bfd *abfd, asection
+          *section, bfd_byte **buf);
+     Read all data from SECTION in BFD ABFD into a buffer, *BUF,
+     malloc'd by this function.  Return 'true' on success, 'false' on
+     failure in which case *BUF will be NULL.
 
 2.6.5.20 'bfd_copy_private_section_data'
 ........................................
 
-*Synopsis*
-     bfd_boolean bfd_copy_private_section_data
-        (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
-   *Description*
-Copy private section information from ISEC in the BFD IBFD to the
-section OSEC in the BFD OBFD.  Return 'TRUE' on success, 'FALSE' on
-error.  Possible error returns are:
-
-   * 'bfd_error_no_memory' - Not enough memory exists to create private
-     data for OSEC.
-     #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
-            BFD_SEND (obfd, _bfd_copy_private_section_data, \
-                      (ibfd, isection, obfd, osection))
+ -- Function: bool bfd_copy_private_section_data (bfd *ibfd, asection
+          *isec, bfd *obfd, asection *osec, struct bfd_link_info
+          *link_info);
+     Copy private section information from ISEC in the BFD IBFD to the
+     section OSEC in the BFD OBFD.  Return 'TRUE' on success, 'FALSE' on
+     error.  Possible error returns are:
+
+        * 'bfd_error_no_memory' - Not enough memory exists to create
+          private data for OSEC.
+          #define bfd_copy_private_section_data(ibfd, isec, obfd, osec, link_info) \
+                 BFD_SEND (obfd, _bfd_copy_private_section_data, \
+                           (ibfd, isec, obfd, osec, link_info))
 
 2.6.5.21 'bfd_generic_is_group_section'
 .......................................
 
-*Synopsis*
-     bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
-   *Description*
-Returns TRUE if SEC is a member of a group.
+ -- Function: bool bfd_generic_is_group_section (bfd *, const asection
+          *sec);
+     Returns TRUE if SEC is a member of a group.
 
 2.6.5.22 'bfd_generic_group_name'
 .................................
 
-*Synopsis*
-     const char *bfd_generic_group_name (bfd *, const asection *sec);
-   *Description*
-Returns group name if SEC is a member of a group.
+ -- Function: const char *bfd_generic_group_name (bfd *, const asection
+          *sec);
+     Returns group name if SEC is a member of a group.
 
 2.6.5.23 'bfd_generic_discard_group'
 ....................................
 
-*Synopsis*
-     bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
-   *Description*
-Remove all members of GROUP from the output.
+ -- Function: bool bfd_generic_discard_group (bfd *abfd, asection
+          *group);
+     Remove all members of GROUP from the output.
+
+2.6.5.24 'bfd_section_size_insane'
+..................................
+
+ -- Function: bool bfd_section_size_insane (bfd *abfd, asection *sec);
+     Returns true if the given section has a size that indicates it
+     cannot be read from file.  Return false if the size is OK or* this
+     function can't say one way or the other.
 
 
 File: bfd.info,  Node: Symbols,  Next: Archives,  Prev: Sections,  Up: BFD front end
@@ -2789,7 +2439,6 @@ File: bfd.info,  Node: typedef asymbol,
 
 An 'asymbol' has the form:
 
-
      typedef struct bfd_symbol
      {
        /* A pointer to the BFD which owns the symbol. This information
@@ -2916,6 +2565,9 @@ An 'asymbol' has the form:
           with this name and type in use.  BSF_OBJECT must also be set.  */
      #define BSF_GNU_UNIQUE          (1 << 23)
 
+       /* This section symbol should be included in the symbol table.  */
+     #define BSF_SECTION_SYM_USED    (1 << 24)
+
        flagword flags;
 
        /* A pointer to the section to which this symbol is
@@ -2943,7 +2595,6 @@ File: bfd.info,  Node: symbol handling f
 2.7.5.1 'bfd_get_symtab_upper_bound'
 ....................................
 
-*Description*
 Return the number of bytes required to store a vector of pointers to
 'asymbols' for all the symbols in the BFD ABFD, including a terminal
 NULL pointer.  If there are no symbols in the BFD, then return 0.  If an
@@ -2955,42 +2606,37 @@ error occurs, return -1.
 2.7.5.2 'bfd_is_local_label'
 ............................
 
-*Synopsis*
-     bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
-   *Description*
-Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
-generated local label, else return FALSE.
+ -- Function: bool bfd_is_local_label (bfd *abfd, asymbol *sym);
+     Return TRUE if the given symbol SYM in the BFD ABFD is a compiler
+     generated local label, else return FALSE.
 
 2.7.5.3 'bfd_is_local_label_name'
 .................................
 
-*Synopsis*
-     bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
-   *Description*
-Return TRUE if a symbol with the name NAME in the BFD ABFD is a compiler
-generated local label, else return FALSE. This just checks whether the
-name has the form of a local label.
-     #define bfd_is_local_label_name(abfd, name) \
-            BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
+ -- Function: bool bfd_is_local_label_name (bfd *abfd, const char
+          *name);
+     Return TRUE if a symbol with the name NAME in the BFD ABFD is a
+     compiler generated local label, else return FALSE. This just checks
+     whether the name has the form of a local label.
+          #define bfd_is_local_label_name(abfd, name) \
+                 BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
 
 
 2.7.5.4 'bfd_is_target_special_symbol'
 ......................................
 
-*Synopsis*
-     bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
-   *Description*
-Return TRUE iff a symbol SYM in the BFD ABFD is something special to the
-particular target represented by the BFD. Such symbols should normally
-not be mentioned to the user.
-     #define bfd_is_target_special_symbol(abfd, sym) \
-            BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
+ -- Function: bool bfd_is_target_special_symbol (bfd *abfd, asymbol
+          *sym);
+     Return TRUE iff a symbol SYM in the BFD ABFD is something special
+     to the particular target represented by the BFD. Such symbols
+     should normally not be mentioned to the user.
+          #define bfd_is_target_special_symbol(abfd, sym) \
+                 BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
 
 
 2.7.5.5 'bfd_canonicalize_symtab'
 .................................
 
-*Description*
 Read the symbols from the BFD ABFD, and fills in the vector LOCATION
 with pointers to the symbols and a trailing NULL. Return the actual
 number of symbol pointers, not including the NULL.
@@ -3001,25 +2647,22 @@ number of symbol pointers, not including
 2.7.5.6 'bfd_set_symtab'
 ........................
 
-*Synopsis*
-     bfd_boolean bfd_set_symtab
-        (bfd *abfd, asymbol **location, unsigned int count);
-   *Description*
-Arrange that when the output BFD ABFD is closed, the table LOCATION of
-COUNT pointers to symbols will be written.
+ -- Function: bool bfd_set_symtab (bfd *abfd, asymbol **location,
+          unsigned int count);
+     Arrange that when the output BFD ABFD is closed, the table LOCATION
+     of COUNT pointers to symbols will be written.
 
 2.7.5.7 'bfd_print_symbol_vandf'
 ................................
 
-*Synopsis*
-     void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
-   *Description*
-Print the value and flags of the SYMBOL supplied to the stream FILE.
+ -- Function: void bfd_print_symbol_vandf (bfd *abfd, void *file,
+          asymbol *symbol);
+     Print the value and flags of the SYMBOL supplied to the stream
+     FILE.
 
 2.7.5.8 'bfd_make_empty_symbol'
 ...............................
 
-*Description*
 Create a new 'asymbol' structure for the BFD ABFD and return a pointer
 to it.
 
@@ -3034,69 +2677,56 @@ problems later on.
 2.7.5.9 '_bfd_generic_make_empty_symbol'
 ........................................
 
-*Synopsis*
-     asymbol *_bfd_generic_make_empty_symbol (bfd *);
-   *Description*
-Create a new 'asymbol' structure for the BFD ABFD and return a pointer
-to it.  Used by core file routines, binary back-end and anywhere else
-where no private info is needed.
+ -- Function: asymbol *_bfd_generic_make_empty_symbol (bfd *);
+     Create a new 'asymbol' structure for the BFD ABFD and return a
+     pointer to it.  Used by core file routines, binary back-end and
+     anywhere else where no private info is needed.
 
 2.7.5.10 'bfd_make_debug_symbol'
 ................................
 
-*Description*
 Create a new 'asymbol' structure for the BFD ABFD, to be used as a
-debugging symbol.  Further details of its use have yet to be worked out.
-     #define bfd_make_debug_symbol(abfd,ptr,size) \
-            BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
+debugging symbol.
+     #define bfd_make_debug_symbol(abfd) \
+            BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd))
 
 
 2.7.5.11 'bfd_decode_symclass'
 ..............................
 
-*Description*
-Return a character corresponding to the symbol class of SYMBOL, or '?'
-for an unknown class.
-
-   *Synopsis*
-     int bfd_decode_symclass (asymbol *symbol);
+ -- Function: int bfd_decode_symclass (asymbol *symbol);
+     Return a character corresponding to the symbol class of SYMBOL, or
+     '?'  for an unknown class.
 
 2.7.5.12 'bfd_is_undefined_symclass'
 ....................................
 
-*Description*
-Returns non-zero if the class symbol returned by bfd_decode_symclass
-represents an undefined symbol.  Returns zero otherwise.
-
-   *Synopsis*
-     bfd_boolean bfd_is_undefined_symclass (int symclass);
+ -- Function: bool bfd_is_undefined_symclass (int symclass);
+     Returns non-zero if the class symbol returned by
+     bfd_decode_symclass represents an undefined symbol.  Returns zero
+     otherwise.
 
 2.7.5.13 'bfd_symbol_info'
 ..........................
 
-*Description*
-Fill in the basic info about symbol that nm needs.  Additional info may
-be added by the back-ends after calling this function.
-
-   *Synopsis*
-     void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+ -- Function: void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+     Fill in the basic info about symbol that nm needs.  Additional info
+     may be added by the back-ends after calling this function.
 
 2.7.5.14 'bfd_copy_private_symbol_data'
 .......................................
 
-*Synopsis*
-     bfd_boolean bfd_copy_private_symbol_data
-        (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
-   *Description*
-Copy private symbol information from ISYM in the BFD IBFD to the symbol
-OSYM in the BFD OBFD.  Return 'TRUE' on success, 'FALSE' on error.
-Possible error returns are:
-
-   * 'bfd_error_no_memory' - Not enough memory exists to create private
-     data for OSEC.
-     #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
-            BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
-                      (ibfd, isymbol, obfd, osymbol))
+ -- Function: bool bfd_copy_private_symbol_data (bfd *ibfd, asymbol
+          *isym, bfd *obfd, asymbol *osym);
+     Copy private symbol information from ISYM in the BFD IBFD to the
+     symbol OSYM in the BFD OBFD.  Return 'TRUE' on success, 'FALSE' on
+     error.  Possible error returns are:
+
+        * 'bfd_error_no_memory' - Not enough memory exists to create
+          private data for OSEC.
+          #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
+                 BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
+                           (ibfd, isymbol, obfd, osymbol))
 
 
 
@@ -3105,7 +2735,6 @@ File: bfd.info,  Node: Archives,  Next:
 2.8 Archives
 ============
 
-*Description*
 An archive (or library) is just another BFD. It has a symbol table,
 although there's not much a user program will do with it.
 
@@ -3160,41 +2789,38 @@ anyway, so this shouldn't be much of a r
 2.8.1.1 'bfd_get_next_mapent'
 .............................
 
-*Synopsis*
-     symindex bfd_get_next_mapent
-        (bfd *abfd, symindex previous, carsym **sym);
-   *Description*
-Step through archive ABFD's symbol table (if it has one).  Successively
-update SYM with the next symbol's information, returning that symbol's
-(internal) index into the symbol table.
-
-   Supply 'BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
-one; returns 'BFD_NO_MORE_SYMBOLS' when you've already got the last one.
+ -- Function: symindex bfd_get_next_mapent (bfd *abfd, symindex
+          previous, carsym **sym);
+     Step through archive ABFD's symbol table (if it has one).
+     Successively update SYM with the next symbol's information,
+     returning that symbol's (internal) index into the symbol table.
+
+     Supply 'BFD_NO_MORE_SYMBOLS' as the PREVIOUS entry to get the first
+     one; returns 'BFD_NO_MORE_SYMBOLS' when you've already got the last
+     one.
 
-   A 'carsym' is a canonical archive symbol.  The only user-visible
-element is its name, a null-terminated string.
+     A 'carsym' is a canonical archive symbol.  The only user-visible
+     element is its name, a null-terminated string.
 
 2.8.1.2 'bfd_set_archive_head'
 ..............................
 
-*Synopsis*
-     bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
-   *Description*
-Set the head of the chain of BFDs contained in the archive OUTPUT to
-NEW_HEAD.
+ -- Function: bool bfd_set_archive_head (bfd *output, bfd *new_head);
+     Set the head of the chain of BFDs contained in the archive OUTPUT
+     to NEW_HEAD.
 
 2.8.1.3 'bfd_openr_next_archived_file'
 ......................................
 
-*Synopsis*
-     bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
-   *Description*
-Provided a BFD, ARCHIVE, containing an archive and NULL, open an input
-BFD on the first contained element and returns that.  Subsequent calls
-should pass the archive and the previous return value to return a
-created BFD to the next contained element.  NULL is returned when there
-are no more.  Note - if you want to process the bfd returned by this
-call be sure to call bfd_check_format() on it first.
+ -- Function: bfd *bfd_openr_next_archived_file (bfd *archive, bfd
+          *previous);
+     Provided a BFD, ARCHIVE, containing an archive and NULL, open an
+     input BFD on the first contained element and returns that.
+     Subsequent calls should pass the archive and the previous return
+     value to return a created BFD to the next contained element.  NULL
+     is returned when there are no more.  Note - if you want to process
+     the bfd returned by this call be sure to call bfd_check_format() on
+     it first.
 
 
 File: bfd.info,  Node: Formats,  Next: Relocations,  Prev: Archives,  Up: BFD front end
@@ -3220,69 +2846,68 @@ supported by BFD are:
 2.9.1.1 'bfd_check_format'
 ..........................
 
-*Synopsis*
-     bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
-   *Description*
-Verify if the file attached to the BFD ABFD is compatible with the
-format FORMAT (i.e., one of 'bfd_object', 'bfd_archive' or 'bfd_core').
-
-   If the BFD has been set to a specific target before the call, only
-the named target and format combination is checked.  If the target has
-not been set, or has been set to 'default', then all the known target
-backends is interrogated to determine a match.  If the default target
-matches, it is used.  If not, exactly one target must recognize the
-file, or an error results.
-
-   The function returns 'TRUE' on success, otherwise 'FALSE' with one of
-the following error codes:
-
-   * 'bfd_error_invalid_operation' - if 'format' is not one of
-     'bfd_object', 'bfd_archive' or 'bfd_core'.
-
-   * 'bfd_error_system_call' - if an error occured during a read - even
-     some file mismatches can cause bfd_error_system_calls.
-
-   * 'file_not_recognised' - none of the backends recognised the file
-     format.
-
-   * 'bfd_error_file_ambiguously_recognized' - more than one backend
-     recognised the file format.
+ -- Function: bool bfd_check_format (bfd *abfd, bfd_format format);
+     Verify if the file attached to the BFD ABFD is compatible with the
+     format FORMAT (i.e., one of 'bfd_object', 'bfd_archive' or
+     'bfd_core').
+
+     If the BFD has been set to a specific target before the call, only
+     the named target and format combination is checked.  If the target
+     has not been set, or has been set to 'default', then all the known
+     target backends is interrogated to determine a match.  If the
+     default target matches, it is used.  If not, exactly one target
+     must recognize the file, or an error results.
+
+     The function returns 'TRUE' on success, otherwise 'FALSE' with one
+     of the following error codes:
+
+        * 'bfd_error_invalid_operation' - if 'format' is not one of
+          'bfd_object', 'bfd_archive' or 'bfd_core'.
+
+        * 'bfd_error_system_call' - if an error occured during a read -
+          even some file mismatches can cause bfd_error_system_calls.
+
+        * 'file_not_recognised' - none of the backends recognised the
+          file format.
+
+        * 'bfd_error_file_ambiguously_recognized' - more than one
+          backend recognised the file format.
+     When calling bfd_check_format (or bfd_check_format_matches), any
+     underlying file descriptor will be kept open for the duration of
+     the call.  This is done to avoid races when another thread calls
+     bfd_cache_close_all.  In this scenario, the thread calling
+     bfd_check_format must call bfd_cache_close itself.
 
 2.9.1.2 'bfd_check_format_matches'
 ..................................
 
-*Synopsis*
-     bfd_boolean bfd_check_format_matches
-        (bfd *abfd, bfd_format format, char ***matching);
-   *Description*
-Like 'bfd_check_format', except when it returns FALSE with 'bfd_errno'
-set to 'bfd_error_file_ambiguously_recognized'.  In that case, if
-MATCHING is not NULL, it will be filled in with a NULL-terminated list
-of the names of the formats that matched, allocated with 'malloc'.  Then
-the user may choose a format and try again.
+ -- Function: bool bfd_check_format_matches (bfd *abfd, bfd_format
+          format, char ***matching);
+     Like 'bfd_check_format', except when it returns FALSE with
+     'bfd_errno' set to 'bfd_error_file_ambiguously_recognized'.  In
+     that case, if MATCHING is not NULL, it will be filled in with a
+     NULL-terminated list of the names of the formats that matched,
+     allocated with 'malloc'.  Then the user may choose a format and try
+     again.
 
-   When done with the list that MATCHING points to, the caller should
-free it.
+     When done with the list that MATCHING points to, the caller should
+     free it.
 
 2.9.1.3 'bfd_set_format'
 ........................
 
-*Synopsis*
-     bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
-   *Description*
-This function sets the file format of the BFD ABFD to the format FORMAT.
-If the target set in the BFD does not support the format requested, the
-format is invalid, or the BFD is not open for writing, then an error
-occurs.
+ -- Function: bool bfd_set_format (bfd *abfd, bfd_format format);
+     This function sets the file format of the BFD ABFD to the format
+     FORMAT.  If the target set in the BFD does not support the format
+     requested, the format is invalid, or the BFD is not open for
+     writing, then an error occurs.
 
 2.9.1.4 'bfd_format_string'
 ...........................
 
-*Synopsis*
-     const char *bfd_format_string (bfd_format format);
-   *Description*
-Return a pointer to a const string 'invalid', 'object', 'archive',
-'core', or 'unknown', depending upon the value of FORMAT.
+ -- Function: const char *bfd_format_string (bfd_format format);
+     Return a pointer to a const string 'invalid', 'object', 'archive',
+     'core', or 'unknown', depending upon the value of FORMAT.
 
 
 File: bfd.info,  Node: Relocations,  Next: Core Files,  Prev: Formats,  Up: BFD front end
@@ -3315,41 +2940,7 @@ File: bfd.info,  Node: typedef arelent,
 
 This is the structure of a relocation entry:
 
-
-     typedef enum bfd_reloc_status
-     {
-       /* No errors detected.  Note - the value 2 is used so that it
-          will not be mistaken for the boolean TRUE or FALSE values.  */
-       bfd_reloc_ok = 2,
-
-       /* The relocation was performed, but there was an overflow.  */
-       bfd_reloc_overflow,
-
-       /* The address to relocate was not within the section supplied.  */
-       bfd_reloc_outofrange,
-
-       /* Used by special functions.  */
-       bfd_reloc_continue,
-
-       /* Unsupported relocation size requested.  */
-       bfd_reloc_notsupported,
-
-       /* Unused.  */
-       bfd_reloc_other,
-
-       /* The symbol to relocate against was undefined.  */
-       bfd_reloc_undefined,
-
-       /* The relocation was performed, but may not be ok.  If this type is
-          returned, the error_message argument to bfd_perform_relocation
-          will be set.  */
-       bfd_reloc_dangerous
-      }
-      bfd_reloc_status_type;
-
-     typedef const struct reloc_howto_struct reloc_howto_type;
-
-     typedef struct reloc_cache_entry
+     struct reloc_cache_entry
      {
        /* A pointer into the canonical table of pointers.  */
        struct bfd_symbol **sym_ptr_ptr;
@@ -3363,11 +2954,9 @@ This is the structure of a relocation en
        /* Pointer to how to perform the required relocation.  */
        reloc_howto_type *howto;
 
-     }
-     arelent;
+     };
 
-   *Description*
-Here is a description of each of the fields within an 'arelent':
+   Here is a description of each of the fields within an 'arelent':
 
    * 'sym_ptr_ptr'
    The symbol table pointer points to a pointer to the symbol associated
@@ -3485,7 +3074,6 @@ would be possible to create each howto f
 Indicates what sort of overflow checking should be done when performing
 a relocation.
 
-
      enum complain_overflow
      {
        /* Do not complain on overflow.  */
@@ -3505,6 +3093,7 @@ a relocation.
        complain_overflow_unsigned
      };
 
+
 2.10.1.2 'reloc_howto_type'
 ...........................
 
@@ -3518,10 +3107,8 @@ that libbfd needs to know to tie up a ba
           an external reloc number is stored in this field.  */
        unsigned int type;
 
-       /* The encoded size of the item to be relocated.  This is *not* a
-          power-of-two measure.  Use bfd_get_reloc_size to find the size
-          of the item in bytes.  */
-       unsigned int size:3;
+       /* The size of the item to be relocated in bytes.  */
+       unsigned int size:4;
 
        /* The number of bits in the field to be relocated.  This is used
           when doing overflow checking.  */
@@ -3570,6 +3157,11 @@ that libbfd needs to know to tie up a ba
           empty (e.g., ELF); this flag signals the fact.  */
        unsigned int pcrel_offset:1;
 
+       /* Whether bfd_install_relocation should just install the addend,
+          or should follow the practice of some older object formats and
+          install a value including the symbol.  */
+       unsigned int install_addend:1;
+
        /* src_mask selects the part of the instruction (or data) to be used
           in the relocation sum.  If the target relocations don't have an
           addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
@@ -3599,34 +3191,31 @@ that libbfd needs to know to tie up a ba
 2.10.1.3 'The HOWTO Macro'
 ..........................
 
-*Description*
 The HOWTO macro fills in a reloc_howto_type (a typedef for const struct
 reloc_howto_struct).
+     #define HOWTO_INSTALL_ADDEND 0
+     #define HOWTO_RSIZE(sz) ((sz) < 0 ? -(sz) : (sz))
      #define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,   \
                    inplace, src_mask, dst_mask, pcrel_off)                  \
-       { (unsigned) type, size < 0 ? -size : size, bits, right, left, ovf,  \
-         size < 0, pcrel, inplace, pcrel_off, src_mask, dst_mask, func, name }
+       { (unsigned) type, HOWTO_RSIZE (size), bits, right, left, ovf,       \
+         size < 0, pcrel, inplace, pcrel_off, HOWTO_INSTALL_ADDEND,         \
+         src_mask, dst_mask, func, name }
 
-   *Description*
-This is used to fill in an empty howto entry in an array.
+   This is used to fill in an empty howto entry in an array.
      #define EMPTY_HOWTO(C) \
-       HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
-              NULL, FALSE, 0, 0, FALSE)
-
+       HOWTO ((C), 0, 1, 0, false, 0, complain_overflow_dont, NULL, \
+              NULL, false, 0, 0, false)
 
-2.10.1.4 'bfd_get_reloc_size'
-.............................
+     static inline unsigned int
+     bfd_get_reloc_size (reloc_howto_type *howto)
+     {
+       return howto->size;
+     }
 
-*Synopsis*
-     unsigned int bfd_get_reloc_size (reloc_howto_type *);
-   *Description*
-For a reloc_howto_type that operates on a fixed number of bytes, this
-returns the number of bytes operated on.
 
-2.10.1.5 'arelent_chain'
+2.10.1.4 'arelent_chain'
 ........................
 
-*Description*
 How relocs are tied together in an 'asection':
      typedef struct relent_chain
      {
@@ -3636,77 +3225,58 @@ How relocs are tied together in an 'asec
      arelent_chain;
 
 
-2.10.1.6 'bfd_check_overflow'
+2.10.1.5 'bfd_check_overflow'
 .............................
 
-*Synopsis*
-     bfd_reloc_status_type bfd_check_overflow
-        (enum complain_overflow how,
-         unsigned int bitsize,
-         unsigned int rightshift,
-         unsigned int addrsize,
-         bfd_vma relocation);
-   *Description*
-Perform overflow checking on RELOCATION which has BITSIZE significant
-bits and will be shifted right by RIGHTSHIFT bits, on a machine with
-addresses containing ADDRSIZE significant bits.  The result is either of
-'bfd_reloc_ok' or 'bfd_reloc_overflow'.
+ -- Function: bfd_reloc_status_type bfd_check_overflow (enum
+          complain_overflow how, unsigned int bitsize, unsigned int
+          rightshift, unsigned int addrsize, bfd_vma relocation);
+     Perform overflow checking on RELOCATION which has BITSIZE
+     significant bits and will be shifted right by RIGHTSHIFT bits, on a
+     machine with addresses containing ADDRSIZE significant bits.  The
+     result is either of 'bfd_reloc_ok' or 'bfd_reloc_overflow'.
 
-2.10.1.7 'bfd_reloc_offset_in_range'
+2.10.1.6 'bfd_reloc_offset_in_range'
 ....................................
 
-*Synopsis*
-     bfd_boolean bfd_reloc_offset_in_range
-        (reloc_howto_type *howto,
-         bfd *abfd,
-         asection *section,
-         bfd_size_type offset);
-   *Description*
-Returns TRUE if the reloc described by HOWTO can be applied at OFFSET
-octets in SECTION.
+ -- Function: bool bfd_reloc_offset_in_range (reloc_howto_type *howto,
+          bfd *abfd, asection *section, bfd_size_type offset);
+     Returns TRUE if the reloc described by HOWTO can be applied at
+     OFFSET octets in SECTION.
 
-2.10.1.8 'bfd_perform_relocation'
+2.10.1.7 'bfd_perform_relocation'
 .................................
 
-*Synopsis*
-     bfd_reloc_status_type bfd_perform_relocation
-        (bfd *abfd,
-         arelent *reloc_entry,
-         void *data,
-         asection *input_section,
-         bfd *output_bfd,
-         char **error_message);
-   *Description*
-If OUTPUT_BFD is supplied to this function, the generated image will be
-relocatable; the relocations are copied to the output file after they
-have been changed to reflect the new state of the world.  There are two
-ways of reflecting the results of partial linkage in an output file: by
-modifying the output data in place, and by modifying the relocation
-record.  Some native formats (e.g., basic a.out and basic coff) have no
-way of specifying an addend in the relocation type, so the addend has to
-go in the output data.  This is no big deal since in these formats the
-output data slot will always be big enough for the addend.  Complex
-reloc types with addends were invented to solve just this problem.  The
-ERROR_MESSAGE argument is set to an error message if this return
-'bfd_reloc_dangerous'.
+ -- Function: bfd_reloc_status_type bfd_perform_relocation (bfd *abfd,
+          arelent *reloc_entry, void *data, asection *input_section, bfd
+          *output_bfd, char **error_message);
+     If OUTPUT_BFD is supplied to this function, the generated image
+     will be relocatable; the relocations are copied to the output file
+     after they have been changed to reflect the new state of the world.
+     There are two ways of reflecting the results of partial linkage in
+     an output file: by modifying the output data in place, and by
+     modifying the relocation record.  Some native formats (e.g., basic
+     a.out and basic coff) have no way of specifying an addend in the
+     relocation type, so the addend has to go in the output data.  This
+     is no big deal since in these formats the output data slot will
+     always be big enough for the addend.  Complex reloc types with
+     addends were invented to solve just this problem.  The
+     ERROR_MESSAGE argument is set to an error message if this return
+     'bfd_reloc_dangerous'.
 
-2.10.1.9 'bfd_install_relocation'
+2.10.1.8 'bfd_install_relocation'
 .................................
 
-*Synopsis*
-     bfd_reloc_status_type bfd_install_relocation
-        (bfd *abfd,
-         arelent *reloc_entry,
-         void *data, bfd_vma data_start,
-         asection *input_section,
-         char **error_message);
-   *Description*
-This looks remarkably like 'bfd_perform_relocation', except it does not
-expect that the section contents have been filled in.  I.e., it's
-suitable for use when creating, rather than applying a relocation.
+ -- Function: bfd_reloc_status_type bfd_install_relocation (bfd *abfd,
+          arelent *reloc_entry, void *data, bfd_vma data_start, asection
+          *input_section, char **error_message);
+     This looks remarkably like 'bfd_perform_relocation', except it does
+     not expect that the section contents have been filled in.  I.e.,
+     it's suitable for use when creating, rather than applying a
+     relocation.
 
-   For now, this function should be considered reserved for the
-assembler.
+     For now, this function should be considered reserved for the
+     assembler.
 
 
 File: bfd.info,  Node: howto manager,  Prev: typedef arelent,  Up: Relocations
@@ -3718,10 +3288,9 @@ When an application wants to create a re
 the target machine might call it, it can find out by using this bit of
 code.
 
-2.10.2.1 'bfd_reloc_code_type'
-..............................
+2.10.2.1 'bfd_reloc_code_real_type'
+...................................
 
-*Description*
 The insides of a reloc code.  The idea is that, eventually, there will
 be one enumerator for every type of relocation we ever do.  Pass one of
 these values to 'bfd_reloc_type_lookup', and it'll return a howto
@@ -3752,6 +3321,7 @@ attributes.
      the start of the section containing the relocation.  It depends on
      the specific target.
  -- : BFD_RELOC_32_SECREL
+ -- : BFD_RELOC_16_SECIDX
      Section relative relocations.  Some targets need this for DWARF2.
  -- : BFD_RELOC_32_GOT_PCREL
  -- : BFD_RELOC_16_GOT_PCREL
@@ -3883,9 +3453,9 @@ attributes.
  -- : BFD_RELOC_SPARC_SIZE32
  -- : BFD_RELOC_SPARC_SIZE64
  -- : BFD_RELOC_SPARC_WDISP10
-     SPARC64 relocations
+     SPARC64 relocations.
  -- : BFD_RELOC_SPARC_REV32
-     SPARC little endian relocation
+     SPARC little endian relocation.
  -- : BFD_RELOC_SPARC_TLS_GD_HI22
  -- : BFD_RELOC_SPARC_TLS_GD_LO10
  -- : BFD_RELOC_SPARC_TLS_GD_ADD
@@ -3910,7 +3480,7 @@ attributes.
  -- : BFD_RELOC_SPARC_TLS_DTPOFF64
  -- : BFD_RELOC_SPARC_TLS_TPOFF32
  -- : BFD_RELOC_SPARC_TLS_TPOFF64
-     SPARC TLS relocations
+     SPARC TLS relocations.
  -- : BFD_RELOC_SPU_IMM7
  -- : BFD_RELOC_SPU_IMM8
  -- : BFD_RELOC_SPU_IMM10
@@ -4030,15 +3600,15 @@ attributes.
  -- : BFD_RELOC_LO16
      Low 16 bits.
  -- : BFD_RELOC_HI16_PCREL
-     High 16 bits of 32-bit pc-relative value
+     High 16 bits of 32-bit pc-relative value.
  -- : BFD_RELOC_HI16_S_PCREL
-     High 16 bits of 32-bit pc-relative value, adjusted
+     High 16 bits of 32-bit pc-relative value, adjusted.
  -- : BFD_RELOC_LO16_PCREL
-     Low 16 bits of pc-relative value
+     Low 16 bits of pc-relative value.
  -- : BFD_RELOC_MIPS16_GOT16
  -- : BFD_RELOC_MIPS16_CALL16
      Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
-     16-bit immediate fields
+     16-bit immediate fields.
  -- : BFD_RELOC_MIPS16_HI16
      MIPS16 high 16 bits of 32-bit value.
  -- : BFD_RELOC_MIPS16_HI16_S
@@ -4055,7 +3625,7 @@ attributes.
  -- : BFD_RELOC_MIPS16_TLS_GOTTPREL
  -- : BFD_RELOC_MIPS16_TLS_TPREL_HI16
  -- : BFD_RELOC_MIPS16_TLS_TPREL_LO16
-     MIPS16 TLS relocations
+     MIPS16 TLS relocations.
  -- : BFD_RELOC_MIPS_LITERAL
  -- : BFD_RELOC_MICROMIPS_LITERAL
      Relocation against a MIPS literal section.
@@ -4106,7 +3676,7 @@ attributes.
  -- : BFD_RELOC_MICROMIPS_HIGHER
  -- : BFD_RELOC_MIPS_SCN_DISP
  -- : BFD_RELOC_MICROMIPS_SCN_DISP
- -- : BFD_RELOC_MIPS_REL16
+ -- : BFD_RELOC_MIPS_16
  -- : BFD_RELOC_MIPS_RELGOT
  -- : BFD_RELOC_MIPS_JALR
  -- : BFD_RELOC_MICROMIPS_JALR
@@ -4254,7 +3824,7 @@ attributes.
  -- : BFD_RELOC_386_TLS_DESC
  -- : BFD_RELOC_386_IRELATIVE
  -- : BFD_RELOC_386_GOT32X
-     i386/elf relocations
+     i386/elf relocations.
  -- : BFD_RELOC_X86_64_GOT32
  -- : BFD_RELOC_X86_64_PLT32
  -- : BFD_RELOC_X86_64_COPY
@@ -4286,7 +3856,16 @@ attributes.
  -- : BFD_RELOC_X86_64_PLT32_BND
  -- : BFD_RELOC_X86_64_GOTPCRELX
  -- : BFD_RELOC_X86_64_REX_GOTPCRELX
-     x86-64/elf relocations
+ -- : BFD_RELOC_X86_64_CODE_4_GOTPCRELX
+ -- : BFD_RELOC_X86_64_CODE_4_GOTTPOFF
+ -- : BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC
+ -- : BFD_RELOC_X86_64_CODE_5_GOTPCRELX
+ -- : BFD_RELOC_X86_64_CODE_5_GOTTPOFF
+ -- : BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC
+ -- : BFD_RELOC_X86_64_CODE_6_GOTPCRELX
+ -- : BFD_RELOC_X86_64_CODE_6_GOTTPOFF
+ -- : BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC
+     x86-64/elf relocations.
  -- : BFD_RELOC_NS32K_IMM_8
  -- : BFD_RELOC_NS32K_IMM_16
  -- : BFD_RELOC_NS32K_IMM_32
@@ -4299,10 +3878,10 @@ attributes.
  -- : BFD_RELOC_NS32K_DISP_8_PCREL
  -- : BFD_RELOC_NS32K_DISP_16_PCREL
  -- : BFD_RELOC_NS32K_DISP_32_PCREL
-     ns32k relocations
+     ns32k relocations.
  -- : BFD_RELOC_PDP11_DISP_8_PCREL
  -- : BFD_RELOC_PDP11_DISP_6_PCREL
-     PDP11 relocations
+     PDP11 relocations.
  -- : BFD_RELOC_PJ_CODE_HI16
  -- : BFD_RELOC_PJ_CODE_LO16
  -- : BFD_RELOC_PJ_CODE_DIR16
@@ -4313,6 +3892,8 @@ attributes.
  -- : BFD_RELOC_PPC_B26
  -- : BFD_RELOC_PPC_BA26
  -- : BFD_RELOC_PPC_TOC16
+ -- : BFD_RELOC_PPC_TOC16_LO
+ -- : BFD_RELOC_PPC_TOC16_HI
  -- : BFD_RELOC_PPC_B16
  -- : BFD_RELOC_PPC_B16_BRTAKEN
  -- : BFD_RELOC_PPC_B16_BRNTAKEN
@@ -4359,6 +3940,7 @@ attributes.
  -- : BFD_RELOC_PPC_VLE_SDAREL_HA16D
  -- : BFD_RELOC_PPC_16DX_HA
  -- : BFD_RELOC_PPC_REL16DX_HA
+ -- : BFD_RELOC_PPC_NEG
  -- : BFD_RELOC_PPC64_HIGHER
  -- : BFD_RELOC_PPC64_HIGHER_S
  -- : BFD_RELOC_PPC64_HIGHEST
@@ -4393,6 +3975,7 @@ attributes.
  -- : BFD_RELOC_PPC64_ADDR64_LOCAL
  -- : BFD_RELOC_PPC64_ENTRY
  -- : BFD_RELOC_PPC64_REL24_NOTOC
+ -- : BFD_RELOC_PPC64_REL24_P9NOTOC
  -- : BFD_RELOC_PPC64_D34
  -- : BFD_RELOC_PPC64_D34_LO
  -- : BFD_RELOC_PPC64_D34_HI30
@@ -4414,6 +3997,10 @@ attributes.
  -- : BFD_RELOC_PPC_TLS
  -- : BFD_RELOC_PPC_TLSGD
  -- : BFD_RELOC_PPC_TLSLD
+ -- : BFD_RELOC_PPC_TLSLE
+ -- : BFD_RELOC_PPC_TLSIE
+ -- : BFD_RELOC_PPC_TLSM
+ -- : BFD_RELOC_PPC_TLSML
  -- : BFD_RELOC_PPC_DTPMOD
  -- : BFD_RELOC_PPC_TPREL16
  -- : BFD_RELOC_PPC_TPREL16_LO
@@ -4441,6 +4028,12 @@ attributes.
  -- : BFD_RELOC_PPC_GOT_DTPREL16_LO
  -- : BFD_RELOC_PPC_GOT_DTPREL16_HI
  -- : BFD_RELOC_PPC_GOT_DTPREL16_HA
+ -- : BFD_RELOC_PPC64_TLSGD
+ -- : BFD_RELOC_PPC64_TLSLD
+ -- : BFD_RELOC_PPC64_TLSLE
+ -- : BFD_RELOC_PPC64_TLSIE
+ -- : BFD_RELOC_PPC64_TLSM
+ -- : BFD_RELOC_PPC64_TLSML
  -- : BFD_RELOC_PPC64_TPREL16_DS
  -- : BFD_RELOC_PPC64_TPREL16_LO_DS
  -- : BFD_RELOC_PPC64_TPREL16_HIGH
@@ -4459,14 +4052,14 @@ 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
-     IBM 370/390 relocations
+     IBM 370/390 relocations.
  -- : BFD_RELOC_CTOR
      The type of reloc used to build a constructor table - at the moment
      probably a 32 bit wide absolute relocation, but the target can
@@ -4933,11 +4526,9 @@ attributes.
  -- : BFD_RELOC_D30V_32_PCREL
      This is a 32-bit pc-relative reloc.
  -- : BFD_RELOC_DLX_HI16_S
-     DLX relocs
  -- : BFD_RELOC_DLX_LO16
-     DLX relocs
  -- : BFD_RELOC_DLX_JMP26
-     DLX relocs
+     DLX relocs.
  -- : BFD_RELOC_M32C_HI8
  -- : BFD_RELOC_M32C_RL_JUMP
  -- : BFD_RELOC_M32C_RL_1ADDR
@@ -4998,46 +4589,46 @@ attributes.
      This is a 25-bit reloc with the right 1 bit assumed to be 0.
  -- : BFD_RELOC_NDS32_HI20
      This is a 20-bit reloc containing the high 20 bits of an address
-     used with the lower 12 bits
+     used with the lower 12 bits.
  -- : BFD_RELOC_NDS32_LO12S3
      This is a 12-bit reloc containing the lower 12 bits of an address
-     then shift right by 3.  This is used with ldi,sdi...
+     then shift right by 3.  This is used with ldi,sdi.
  -- : BFD_RELOC_NDS32_LO12S2
      This is a 12-bit reloc containing the lower 12 bits of an address
-     then shift left by 2.  This is used with lwi,swi...
+     then shift left by 2.  This is used with lwi,swi.
  -- : BFD_RELOC_NDS32_LO12S1
      This is a 12-bit reloc containing the lower 12 bits of an address
-     then shift left by 1.  This is used with lhi,shi...
+     then shift left by 1.  This is used with lhi,shi.
  -- : BFD_RELOC_NDS32_LO12S0
      This is a 12-bit reloc containing the lower 12 bits of an address
-     then shift left by 0.  This is used with lbisbi...
+     then shift left by 0.  This is used with lbisbi.
  -- : BFD_RELOC_NDS32_LO12S0_ORI
      This is a 12-bit reloc containing the lower 12 bits of an address
-     then shift left by 0.  This is only used with branch relaxations
+     then shift left by 0.  This is only used with branch relaxations.
  -- : BFD_RELOC_NDS32_SDA15S3
      This is a 15-bit reloc containing the small data area 18-bit signed
-     offset and shift left by 3 for use in ldi, sdi...
+     offset and shift left by 3 for use in ldi, sdi.
  -- : BFD_RELOC_NDS32_SDA15S2
      This is a 15-bit reloc containing the small data area 17-bit signed
-     offset and shift left by 2 for use in lwi, swi...
+     offset and shift left by 2 for use in lwi, swi.
  -- : BFD_RELOC_NDS32_SDA15S1
      This is a 15-bit reloc containing the small data area 16-bit signed
-     offset and shift left by 1 for use in lhi, shi...
+     offset and shift left by 1 for use in lhi, shi.
  -- : BFD_RELOC_NDS32_SDA15S0
      This is a 15-bit reloc containing the small data area 15-bit signed
-     offset and shift left by 0 for use in lbi, sbi...
+     offset and shift left by 0 for use in lbi, sbi.
  -- : BFD_RELOC_NDS32_SDA16S3
      This is a 16-bit reloc containing the small data area 16-bit signed
-     offset and shift left by 3
+     offset and shift left by 3.
  -- : BFD_RELOC_NDS32_SDA17S2
      This is a 17-bit reloc containing the small data area 17-bit signed
-     offset and shift left by 2 for use in lwi.gp, swi.gp...
+     offset and shift left by 2 for use in lwi.gp, swi.gp.
  -- : BFD_RELOC_NDS32_SDA18S1
      This is a 18-bit reloc containing the small data area 18-bit signed
-     offset and shift left by 1 for use in lhi.gp, shi.gp...
+     offset and shift left by 1 for use in lhi.gp, shi.gp.
  -- : BFD_RELOC_NDS32_SDA19S0
      This is a 19-bit reloc containing the small data area 19-bit signed
-     offset and shift left by 0 for use in lbi.gp, sbi.gp...
+     offset and shift left by 0 for use in lbi.gp, sbi.gp.
  -- : BFD_RELOC_NDS32_GOT20
  -- : BFD_RELOC_NDS32_9_PLTREL
  -- : BFD_RELOC_NDS32_25_PLTREL
@@ -5053,7 +4644,7 @@ attributes.
  -- : BFD_RELOC_NDS32_GOT_LO12
  -- : BFD_RELOC_NDS32_GOTPC_HI20
  -- : BFD_RELOC_NDS32_GOTPC_LO12
-     for PIC
+     For PIC.
  -- : BFD_RELOC_NDS32_INSN16
  -- : BFD_RELOC_NDS32_LABEL
  -- : BFD_RELOC_NDS32_LONGCALL1
@@ -5074,23 +4665,23 @@ attributes.
  -- : BFD_RELOC_NDS32_LONGJUMP5
  -- : BFD_RELOC_NDS32_LONGJUMP6
  -- : BFD_RELOC_NDS32_LONGJUMP7
-     for relax
+     For relax.
  -- : BFD_RELOC_NDS32_PLTREL_HI20
  -- : BFD_RELOC_NDS32_PLTREL_LO12
  -- : BFD_RELOC_NDS32_PLT_GOTREL_HI20
  -- : BFD_RELOC_NDS32_PLT_GOTREL_LO12
-     for PIC
+     For PIC.
  -- : BFD_RELOC_NDS32_SDA12S2_DP
  -- : BFD_RELOC_NDS32_SDA12S2_SP
  -- : BFD_RELOC_NDS32_LO12S2_DP
  -- : BFD_RELOC_NDS32_LO12S2_SP
-     for floating point
+     For floating point.
  -- : BFD_RELOC_NDS32_DWARF2_OP1
  -- : BFD_RELOC_NDS32_DWARF2_OP2
  -- : BFD_RELOC_NDS32_DWARF2_LEB
-     for dwarf2 debug_line.
+     For dwarf2 debug_line.
  -- : BFD_RELOC_NDS32_UPDATE_TA
-     for eliminate 16-bit instructions
+     For eliminating 16-bit instructions.
  -- : BFD_RELOC_NDS32_PLT_GOTREL_LO20
  -- : BFD_RELOC_NDS32_PLT_GOTREL_LO15
  -- : BFD_RELOC_NDS32_PLT_GOTREL_LO19
@@ -5100,7 +4691,7 @@ attributes.
  -- : BFD_RELOC_NDS32_GOTOFF_LO19
  -- : BFD_RELOC_NDS32_GOT15S2
  -- : BFD_RELOC_NDS32_GOT17S2
-     for PIC object relaxation
+     For PIC object relaxation.
  -- : BFD_RELOC_NDS32_5
      NDS32 relocs.  This is a 5 bit absolute address.
  -- : BFD_RELOC_NDS32_10_UPCREL
@@ -5126,7 +4717,7 @@ attributes.
  -- : BFD_RELOC_NDS32_DIFF32
  -- : BFD_RELOC_NDS32_DIFF_ULEB128
  -- : BFD_RELOC_NDS32_EMPTY
-     relaxation relative relocation types
+     Relaxation relative relocation types.
  -- : BFD_RELOC_NDS32_25_ABS
      This is a 25 bit absolute address.
  -- : BFD_RELOC_NDS32_DATA
@@ -5166,9 +4757,9 @@ attributes.
  -- : BFD_RELOC_NDS32_LSI
      For floating load store relaxation.
  -- : BFD_RELOC_V850_9_PCREL
-     This is a 9-bit reloc
+     This is a 9-bit reloc.
  -- : BFD_RELOC_V850_22_PCREL
-     This is a 22-bit reloc
+     This is a 22-bit reloc.
  -- : BFD_RELOC_V850_SDA_16_16_OFFSET
      This is a 16 bit offset from the short data area pointer.
  -- : BFD_RELOC_V850_SDA_15_16_OFFSET
@@ -5232,31 +4823,21 @@ attributes.
  -- : BFD_RELOC_V850_CALLT_15_16_OFFSET
      This is a 16 bit offset from the call table base pointer.
  -- : BFD_RELOC_V850_32_GOTPCREL
-     DSO relocations.
  -- : BFD_RELOC_V850_16_GOT
-     DSO relocations.
  -- : BFD_RELOC_V850_32_GOT
-     DSO relocations.
  -- : BFD_RELOC_V850_22_PLT_PCREL
-     DSO relocations.
  -- : BFD_RELOC_V850_32_PLT_PCREL
-     DSO relocations.
  -- : BFD_RELOC_V850_COPY
-     DSO relocations.
  -- : BFD_RELOC_V850_GLOB_DAT
-     DSO relocations.
  -- : BFD_RELOC_V850_JMP_SLOT
-     DSO relocations.
  -- : BFD_RELOC_V850_RELATIVE
-     DSO relocations.
  -- : BFD_RELOC_V850_16_GOTOFF
-     DSO relocations.
  -- : BFD_RELOC_V850_32_GOTOFF
      DSO relocations.
  -- : BFD_RELOC_V850_CODE
-     start code.
+     Start code.
  -- : BFD_RELOC_V850_DATA
-     start data in text.
+     Start data in text.
  -- : BFD_RELOC_TIC30_LDP
      This is a 8bit DP reloc for the tms320c30, where the most
      significant 8 bits of a 24 bit word are placed into the least
@@ -5512,22 +5093,22 @@ attributes.
      bits.
  -- : BFD_RELOC_AVR_LDI
      This is a 16 bit reloc for the AVR that stores all needed bits for
-     absolute addressing with ldi with overflow check to linktime
+     absolute addressing with ldi with overflow check to linktime.
  -- : BFD_RELOC_AVR_6
      This is a 6 bit reloc for the AVR that stores offset for ldd/std
-     instructions
+     instructions.
  -- : BFD_RELOC_AVR_6_ADIW
      This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
-     instructions
+     instructions.
  -- : BFD_RELOC_AVR_8_LO
      This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
-     in .byte lo8(symbol)
+     in .byte lo8(symbol).
  -- : BFD_RELOC_AVR_8_HI
      This is a 8 bit reloc for the AVR that stores bits 8..15 of a
-     symbol in .byte hi8(symbol)
+     symbol in .byte hi8(symbol).
  -- : BFD_RELOC_AVR_8_HLO
      This is a 8 bit reloc for the AVR that stores bits 16..23 of a
-     symbol in .byte hlo8(symbol)
+     symbol in .byte hlo8(symbol).
  -- : BFD_RELOC_AVR_DIFF8
  -- : BFD_RELOC_AVR_DIFF16
  -- : BFD_RELOC_AVR_DIFF32
@@ -5542,10 +5123,10 @@ attributes.
      16bit lds and sts instructions supported only tiny core.
  -- : BFD_RELOC_AVR_PORT6
      This is a 6 bit reloc for the AVR that stores an I/O register
-     number for the IN and OUT instructions
+     number for the IN and OUT instructions.
  -- : BFD_RELOC_AVR_PORT5
      This is a 5 bit reloc for the AVR that stores an I/O register
-     number for the SBIC, SBIS, SBI and CBI instructions
+     number for the SBIC, SBIS, SBI and CBI instructions.
  -- : BFD_RELOC_RISCV_HI20
  -- : BFD_RELOC_RISCV_PCREL_HI20
  -- : BFD_RELOC_RISCV_PCREL_LO12_I
@@ -5578,14 +5159,13 @@ attributes.
  -- : BFD_RELOC_RISCV_TLS_DTPREL64
  -- : BFD_RELOC_RISCV_TLS_TPREL32
  -- : BFD_RELOC_RISCV_TLS_TPREL64
+ -- : BFD_RELOC_RISCV_TLSDESC_HI20
+ -- : BFD_RELOC_RISCV_TLSDESC_LOAD_LO12
+ -- : BFD_RELOC_RISCV_TLSDESC_ADD_LO12
+ -- : BFD_RELOC_RISCV_TLSDESC_CALL
  -- : BFD_RELOC_RISCV_ALIGN
  -- : BFD_RELOC_RISCV_RVC_BRANCH
  -- : BFD_RELOC_RISCV_RVC_JUMP
- -- : BFD_RELOC_RISCV_RVC_LUI
- -- : BFD_RELOC_RISCV_GPREL_I
- -- : BFD_RELOC_RISCV_GPREL_S
- -- : BFD_RELOC_RISCV_TPREL_I
- -- : BFD_RELOC_RISCV_TPREL_S
  -- : BFD_RELOC_RISCV_RELAX
  -- : BFD_RELOC_RISCV_CFA
  -- : BFD_RELOC_RISCV_SUB6
@@ -5594,6 +5174,8 @@ attributes.
  -- : BFD_RELOC_RISCV_SET16
  -- : BFD_RELOC_RISCV_SET32
  -- : BFD_RELOC_RISCV_32_PCREL
+ -- : BFD_RELOC_RISCV_SET_ULEB128
+ -- : BFD_RELOC_RISCV_SUB_ULEB128
      RISC-V relocations.
  -- : BFD_RELOC_RL78_NEG8
  -- : BFD_RELOC_RL78_NEG16
@@ -5747,51 +5329,51 @@ attributes.
  -- : BFD_RELOC_390_IRELATIVE
      STT_GNU_IFUNC relocation.
  -- : BFD_RELOC_SCORE_GPREL15
-     Score relocations Low 16 bit for load/store
+     Score relocations.  Low 16 bit for load/store.
  -- : BFD_RELOC_SCORE_DUMMY2
  -- : BFD_RELOC_SCORE_JMP
-     This is a 24-bit reloc with the right 1 bit assumed to be 0
+     This is a 24-bit reloc with the right 1 bit assumed to be 0.
  -- : BFD_RELOC_SCORE_BRANCH
-     This is a 19-bit reloc with the right 1 bit assumed to be 0
+     This is a 19-bit reloc with the right 1 bit assumed to be 0.
  -- : BFD_RELOC_SCORE_IMM30
      This is a 32-bit reloc for 48-bit instructions.
  -- : BFD_RELOC_SCORE_IMM32
      This is a 32-bit reloc for 48-bit instructions.
  -- : BFD_RELOC_SCORE16_JMP
-     This is a 11-bit reloc with the right 1 bit assumed to be 0
+     This is a 11-bit reloc with the right 1 bit assumed to be 0.
  -- : BFD_RELOC_SCORE16_BRANCH
-     This is a 8-bit reloc with the right 1 bit assumed to be 0
+     This is a 8-bit reloc with the right 1 bit assumed to be 0.
  -- : BFD_RELOC_SCORE_BCMP
-     This is a 9-bit reloc with the right 1 bit assumed to be 0
+     This is a 9-bit reloc with the right 1 bit assumed to be 0.
  -- : BFD_RELOC_SCORE_GOT15
  -- : BFD_RELOC_SCORE_GOT_LO16
  -- : BFD_RELOC_SCORE_CALL15
  -- : BFD_RELOC_SCORE_DUMMY_HI16
-     Undocumented Score relocs
+     Undocumented Score relocs.
  -- : BFD_RELOC_IP2K_FR9
-     Scenix IP2K - 9-bit register number / data address
+     Scenix IP2K - 9-bit register number / data address.
  -- : BFD_RELOC_IP2K_BANK
-     Scenix IP2K - 4-bit register/data bank number
+     Scenix IP2K - 4-bit register/data bank number.
  -- : BFD_RELOC_IP2K_ADDR16CJP
-     Scenix IP2K - low 13 bits of instruction word address
+     Scenix IP2K - low 13 bits of instruction word address.
  -- : BFD_RELOC_IP2K_PAGE3
-     Scenix IP2K - high 3 bits of instruction word address
+     Scenix IP2K - high 3 bits of instruction word address.
  -- : BFD_RELOC_IP2K_LO8DATA
  -- : BFD_RELOC_IP2K_HI8DATA
  -- : BFD_RELOC_IP2K_EX8DATA
-     Scenix IP2K - ext/low/high 8 bits of data address
+     Scenix IP2K - ext/low/high 8 bits of data address.
  -- : BFD_RELOC_IP2K_LO8INSN
  -- : BFD_RELOC_IP2K_HI8INSN
-     Scenix IP2K - low/high 8 bits of instruction word address
+     Scenix IP2K - low/high 8 bits of instruction word address.
  -- : BFD_RELOC_IP2K_PC_SKIP
-     Scenix IP2K - even/odd PC modifier to modify snb pcl.0
+     Scenix IP2K - even/odd PC modifier to modify snb pcl.0.
  -- : BFD_RELOC_IP2K_TEXT
      Scenix IP2K - 16 bit word address in text section.
  -- : BFD_RELOC_IP2K_FR_OFFSET
-     Scenix IP2K - 7-bit sp or dp offset
+     Scenix IP2K - 7-bit sp or dp offset.
  -- : BFD_RELOC_VPE4KMATH_DATA
  -- : BFD_RELOC_VPE4KMATH_INSN
-     Scenix VPE4K coprocessor - data/insn-space addressing
+     Scenix VPE4K coprocessor - data/insn-space addressing.
  -- : BFD_RELOC_VTABLE_INHERIT
  -- : BFD_RELOC_VTABLE_ENTRY
      These two relocations are used by the linker to determine which of
@@ -6079,6 +5661,7 @@ attributes.
  -- : BFD_RELOC_OR1K_SLO13
  -- : BFD_RELOC_OR1K_GOTPC_HI16
  -- : BFD_RELOC_OR1K_GOTPC_LO16
+ -- : BFD_RELOC_OR1K_GOT_AHI16
  -- : BFD_RELOC_OR1K_GOT16
  -- : BFD_RELOC_OR1K_GOT_PG21
  -- : BFD_RELOC_OR1K_GOT_LO13
@@ -6126,11 +5709,6 @@ attributes.
      Sony Xstormy16 Relocations.
  -- : BFD_RELOC_RELC
      Self-describing complex relocations.
- -- : BFD_RELOC_XC16X_PAG
- -- : BFD_RELOC_XC16X_POF
- -- : BFD_RELOC_XC16X_SEG
- -- : BFD_RELOC_XC16X_SOF
-     Infineon Relocations.
  -- : BFD_RELOC_VAX_GLOB_DAT
  -- : BFD_RELOC_VAX_JMP_SLOT
  -- : BFD_RELOC_VAX_RELATIVE
@@ -6169,60 +5747,9 @@ attributes.
  -- : BFD_RELOC_MSP430_ABS_HI16
  -- : BFD_RELOC_MSP430_PREL31
  -- : BFD_RELOC_MSP430_SYM_DIFF
-     msp430 specific relocation codes
- -- : BFD_RELOC_NIOS2_S16
- -- : BFD_RELOC_NIOS2_U16
- -- : BFD_RELOC_NIOS2_CALL26
- -- : BFD_RELOC_NIOS2_IMM5
- -- : BFD_RELOC_NIOS2_CACHE_OPX
- -- : BFD_RELOC_NIOS2_IMM6
- -- : BFD_RELOC_NIOS2_IMM8
- -- : BFD_RELOC_NIOS2_HI16
- -- : BFD_RELOC_NIOS2_LO16
- -- : BFD_RELOC_NIOS2_HIADJ16
- -- : BFD_RELOC_NIOS2_GPREL
- -- : BFD_RELOC_NIOS2_UJMP
- -- : BFD_RELOC_NIOS2_CJMP
- -- : BFD_RELOC_NIOS2_CALLR
- -- : BFD_RELOC_NIOS2_ALIGN
- -- : BFD_RELOC_NIOS2_GOT16
- -- : BFD_RELOC_NIOS2_CALL16
- -- : BFD_RELOC_NIOS2_GOTOFF_LO
- -- : BFD_RELOC_NIOS2_GOTOFF_HA
- -- : BFD_RELOC_NIOS2_PCREL_LO
- -- : BFD_RELOC_NIOS2_PCREL_HA
- -- : BFD_RELOC_NIOS2_TLS_GD16
- -- : BFD_RELOC_NIOS2_TLS_LDM16
- -- : BFD_RELOC_NIOS2_TLS_LDO16
- -- : BFD_RELOC_NIOS2_TLS_IE16
- -- : BFD_RELOC_NIOS2_TLS_LE16
- -- : BFD_RELOC_NIOS2_TLS_DTPMOD
- -- : BFD_RELOC_NIOS2_TLS_DTPREL
- -- : BFD_RELOC_NIOS2_TLS_TPREL
- -- : BFD_RELOC_NIOS2_COPY
- -- : BFD_RELOC_NIOS2_GLOB_DAT
- -- : BFD_RELOC_NIOS2_JUMP_SLOT
- -- : BFD_RELOC_NIOS2_RELATIVE
- -- : BFD_RELOC_NIOS2_GOTOFF
- -- : BFD_RELOC_NIOS2_CALL26_NOAT
- -- : BFD_RELOC_NIOS2_GOT_LO
- -- : BFD_RELOC_NIOS2_GOT_HA
- -- : BFD_RELOC_NIOS2_CALL_LO
- -- : BFD_RELOC_NIOS2_CALL_HA
- -- : BFD_RELOC_NIOS2_R2_S12
- -- : BFD_RELOC_NIOS2_R2_I10_1_PCREL
- -- : BFD_RELOC_NIOS2_R2_T1I7_1_PCREL
- -- : BFD_RELOC_NIOS2_R2_T1I7_2
- -- : BFD_RELOC_NIOS2_R2_T2I4
- -- : BFD_RELOC_NIOS2_R2_T2I4_1
- -- : BFD_RELOC_NIOS2_R2_T2I4_2
- -- : BFD_RELOC_NIOS2_R2_X1I7_2
- -- : BFD_RELOC_NIOS2_R2_X2L5
- -- : BFD_RELOC_NIOS2_R2_F1I5_2
- -- : BFD_RELOC_NIOS2_R2_L5I4X1
- -- : BFD_RELOC_NIOS2_R2_T1X1I6
- -- : BFD_RELOC_NIOS2_R2_T1X1I6_2
-     Relocations used by the Altera Nios II core.
+ -- : BFD_RELOC_MSP430_SET_ULEB128
+ -- : BFD_RELOC_MSP430_SUB_ULEB128
+     msp430 specific relocation codes.
  -- : BFD_RELOC_PRU_U16
      PRU LDI 16-bit unsigned data-memory relocation.
  -- : BFD_RELOC_PRU_U16_PMEMIMM
@@ -6270,6 +5797,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 +5862,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
@@ -6389,46 +5947,51 @@ attributes.
      Address of a GOT entry.
  -- : BFD_RELOC_MICROBLAZE_32_LO
      This is a 32 bit reloc for the microblaze that stores the low 16
-     bits of a value
+     bits of a value.
  -- : BFD_RELOC_MICROBLAZE_32_LO_PCREL
      This is a 32 bit pc-relative reloc for the microblaze that stores
-     the low 16 bits of a value
+     the low 16 bits of a value.
  -- : BFD_RELOC_MICROBLAZE_32_ROSDA
      This is a 32 bit reloc for the microblaze that stores a value
-     relative to the read-only small data area anchor
+     relative to the read-only small data area anchor.
  -- : BFD_RELOC_MICROBLAZE_32_RWSDA
      This is a 32 bit reloc for the microblaze that stores a value
-     relative to the read-write small data area anchor
+     relative to the read-write small data area anchor.
  -- : BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
      This is a 32 bit reloc for the microblaze to handle expressions of
-     the form "Symbol Op Symbol"
+     the form "Symbol Op Symbol".
+ -- : BFD_RELOC_MICROBLAZE_32_NONE
+     This is a 32 bit reloc that stores the 32 bit pc relative value in
+     two words (with an imm instruction).  No relocation is done here -
+     only used for relaxing.
  -- : BFD_RELOC_MICROBLAZE_64_NONE
      This is a 64 bit reloc that stores the 32 bit pc relative value in
      two words (with an imm instruction).  No relocation is done here -
-     only used for relaxing
+     only used for relaxing.
  -- : BFD_RELOC_MICROBLAZE_64_GOTPC
      This is a 64 bit reloc that stores the 32 bit pc relative value in
      two words (with an imm instruction).  The relocation is PC-relative
-     GOT offset
+     GOT offset.
  -- : BFD_RELOC_MICROBLAZE_64_GOT
      This is a 64 bit reloc that stores the 32 bit pc relative value in
-     two words (with an imm instruction).  The relocation is GOT offset
+     two words (with an imm instruction).  The relocation is GOT offset.
  -- : BFD_RELOC_MICROBLAZE_64_PLT
      This is a 64 bit reloc that stores the 32 bit pc relative value in
      two words (with an imm instruction).  The relocation is PC-relative
-     offset into PLT
+     offset into PLT.
  -- : BFD_RELOC_MICROBLAZE_64_GOTOFF
      This is a 64 bit reloc that stores the 32 bit GOT relative value in
      two words (with an imm instruction).  The relocation is relative
-     offset from _GLOBAL_OFFSET_TABLE_
+     offset from _GLOBAL_OFFSET_TABLE_.
  -- : BFD_RELOC_MICROBLAZE_32_GOTOFF
      This is a 32 bit reloc that stores the 32 bit GOT relative value in
      a word.  The relocation is relative offset from
+     _GLOBAL_OFFSET_TABLE_.
  -- : BFD_RELOC_MICROBLAZE_COPY
      This is used to tell the dynamic linker to copy the value out of
      the dynamic object into the runtime process image.
  -- : BFD_RELOC_MICROBLAZE_64_TLS
-     Unused Reloc
+     Unused Reloc.
  -- : BFD_RELOC_MICROBLAZE_64_TLSGD
      This is a 64 bit reloc that stores the 32 bit GOT relative value of
      the GOT TLS GD info entry in two words (with an imm instruction).
@@ -6443,7 +6006,7 @@ attributes.
      This is a 32 bit reloc that stores TLS offset to GOT(n+1).
  -- : BFD_RELOC_MICROBLAZE_64_TLSDTPREL
      This is a 32 bit reloc for storing TLS offset to two words (uses
-     imm instruction)
+     imm instruction).
  -- : BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
      This is a 64 bit reloc that stores 32-bit thread pointer relative
      offset to two words (uses imm instruction).
@@ -6458,6 +6021,102 @@ attributes.
      This is a 64 bit reloc that stores the 32 bit offset value in two
      words (with an imm instruction).  The relocation is relative offset
      from start of TEXT.
+ -- : BFD_RELOC_KVX_RELOC_START
+     KVX pseudo relocation code to mark the start of the KVX relocation
+     enumerators.  N.B. the order of the enumerators is important as
+     several tables in the KVX bfd backend are indexed by these
+     enumerators; make sure they are all synced.
+ -- : BFD_RELOC_KVX_NONE
+     KVX null relocation code.
+ -- : BFD_RELOC_KVX_16
+ -- : BFD_RELOC_KVX_32
+ -- : BFD_RELOC_KVX_64
+ -- : BFD_RELOC_KVX_S16_PCREL
+ -- : BFD_RELOC_KVX_PCREL17
+ -- : BFD_RELOC_KVX_PCREL27
+ -- : BFD_RELOC_KVX_32_PCREL
+ -- : BFD_RELOC_KVX_S37_PCREL_LO10
+ -- : BFD_RELOC_KVX_S37_PCREL_UP27
+ -- : BFD_RELOC_KVX_S43_PCREL_LO10
+ -- : BFD_RELOC_KVX_S43_PCREL_UP27
+ -- : BFD_RELOC_KVX_S43_PCREL_EX6
+ -- : BFD_RELOC_KVX_S64_PCREL_LO10
+ -- : BFD_RELOC_KVX_S64_PCREL_UP27
+ -- : BFD_RELOC_KVX_S64_PCREL_EX27
+ -- : BFD_RELOC_KVX_64_PCREL
+ -- : BFD_RELOC_KVX_S16
+ -- : BFD_RELOC_KVX_S32_LO5
+ -- : BFD_RELOC_KVX_S32_UP27
+ -- : BFD_RELOC_KVX_S37_LO10
+ -- : BFD_RELOC_KVX_S37_UP27
+ -- : BFD_RELOC_KVX_S37_GOTOFF_LO10
+ -- : BFD_RELOC_KVX_S37_GOTOFF_UP27
+ -- : BFD_RELOC_KVX_S43_GOTOFF_LO10
+ -- : BFD_RELOC_KVX_S43_GOTOFF_UP27
+ -- : BFD_RELOC_KVX_S43_GOTOFF_EX6
+ -- : BFD_RELOC_KVX_32_GOTOFF
+ -- : BFD_RELOC_KVX_64_GOTOFF
+ -- : BFD_RELOC_KVX_32_GOT
+ -- : BFD_RELOC_KVX_S37_GOT_LO10
+ -- : BFD_RELOC_KVX_S37_GOT_UP27
+ -- : BFD_RELOC_KVX_S43_GOT_LO10
+ -- : BFD_RELOC_KVX_S43_GOT_UP27
+ -- : BFD_RELOC_KVX_S43_GOT_EX6
+ -- : BFD_RELOC_KVX_64_GOT
+ -- : BFD_RELOC_KVX_GLOB_DAT
+ -- : BFD_RELOC_KVX_COPY
+ -- : BFD_RELOC_KVX_JMP_SLOT
+ -- : BFD_RELOC_KVX_RELATIVE
+ -- : BFD_RELOC_KVX_S43_LO10
+ -- : BFD_RELOC_KVX_S43_UP27
+ -- : BFD_RELOC_KVX_S43_EX6
+ -- : BFD_RELOC_KVX_S64_LO10
+ -- : BFD_RELOC_KVX_S64_UP27
+ -- : BFD_RELOC_KVX_S64_EX27
+ -- : BFD_RELOC_KVX_S37_GOTADDR_LO10
+ -- : BFD_RELOC_KVX_S37_GOTADDR_UP27
+ -- : BFD_RELOC_KVX_S43_GOTADDR_LO10
+ -- : BFD_RELOC_KVX_S43_GOTADDR_UP27
+ -- : BFD_RELOC_KVX_S43_GOTADDR_EX6
+ -- : BFD_RELOC_KVX_S64_GOTADDR_LO10
+ -- : BFD_RELOC_KVX_S64_GOTADDR_UP27
+ -- : BFD_RELOC_KVX_S64_GOTADDR_EX27
+ -- : BFD_RELOC_KVX_64_DTPMOD
+ -- : BFD_RELOC_KVX_64_DTPOFF
+ -- : BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10
+ -- : BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10
+ -- : BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6
+ -- : BFD_RELOC_KVX_S37_TLS_GD_LO10
+ -- : BFD_RELOC_KVX_S37_TLS_GD_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_GD_LO10
+ -- : BFD_RELOC_KVX_S43_TLS_GD_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_GD_EX6
+ -- : BFD_RELOC_KVX_S37_TLS_LD_LO10
+ -- : BFD_RELOC_KVX_S37_TLS_LD_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_LD_LO10
+ -- : BFD_RELOC_KVX_S43_TLS_LD_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_LD_EX6
+ -- : BFD_RELOC_KVX_64_TPOFF
+ -- : BFD_RELOC_KVX_S37_TLS_IE_LO10
+ -- : BFD_RELOC_KVX_S37_TLS_IE_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_IE_LO10
+ -- : BFD_RELOC_KVX_S43_TLS_IE_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_IE_EX6
+ -- : BFD_RELOC_KVX_S37_TLS_LE_LO10
+ -- : BFD_RELOC_KVX_S37_TLS_LE_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_LE_LO10
+ -- : BFD_RELOC_KVX_S43_TLS_LE_UP27
+ -- : BFD_RELOC_KVX_S43_TLS_LE_EX6
+ -- : BFD_RELOC_KVX_8
+     KVX Relocations.
+ -- : BFD_RELOC_KVX_RELOC_END
+     KVX pseudo relocation code to mark the end of the KVX relocation
+     enumerators that have direct mapping to ELF reloc codes.  There are
+     a few more enumerators after this one; those are mainly used by the
+     KVX assembler for the internal fixup or to select one of the above
+     enumerators.
  -- : BFD_RELOC_AARCH64_RELOC_START
      AArch64 pseudo relocation code to mark the start of the AArch64
      relocation enumerators.  N.B. the order of the enumerators is
@@ -6596,8 +6255,8 @@ attributes.
      overflow checking.
  -- : BFD_RELOC_AARCH64_ADR_GOT_PAGE
      Get to the page base of the global offset table entry for a symbol
-     as part of an ADRP instruction using a 21 bit PC relative
-     value.Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
+     as part of an ADRP instruction using a 21 bit PC relative value.
+     Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
  -- : BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
      Unsigned 12 bit byte offset for 64 bit load/store from the page of
      the GOT entry for this symbol.  Used in conjunction with
@@ -6627,10 +6286,10 @@ attributes.
      PC relative value.  Used in conjunction with
      BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
  -- : BFD_RELOC_AARCH64_TLSGD_ADR_PREL21
-     AArch64 TLS General Dynamic
+     AArch64 TLS General Dynamic.
  -- : BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
      Unsigned 12 bit byte offset to global offset table entry for a
-     symbols tls_index structure.  Used in conjunction with
+     symbol's tls_index structure.  Used in conjunction with
      BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
  -- : BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC
      AArch64 TLS General Dynamic relocation.
@@ -6657,7 +6316,7 @@ attributes.
      BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
  -- : BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC
      Unsigned 12 bit byte offset to global offset table entry for a
-     symbols tls_index structure.  Used in conjunction with
+     symbol's tls_index structure.  Used in conjunction with
      BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.
  -- : BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
      GOT entry page address for AArch64 TLS Local Dynamic, used with
@@ -6669,34 +6328,36 @@ attributes.
      bit[11:1] of byte offset to module TLS base address, encoded in
      ldst instructions.
  -- : BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12
      bit[11:2] of byte offset to module TLS base address, encoded in
      ldst instructions.
  -- : BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12
      bit[11:3] of byte offset to module TLS base address, encoded in
      ldst instructions.
  -- : BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12
      bit[11:0] of byte offset to module TLS base address, encoded in
      ldst instructions.
  -- : BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
      bit[15:0] of byte offset to module TLS base address.
  -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
-     No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
+     No overflow check version of
+     BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0.
  -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
      bit[31:16] of byte offset to module TLS base address.
  -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
-     No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
+     No overflow check version of
+     BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1.
  -- : BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2
      bit[47:32] of byte offset to module TLS base address.
  -- : BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
@@ -6719,64 +6380,48 @@ attributes.
      bit[11:1] of byte offset to module TLS base address, encoded in
      ldst instructions.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12
      bit[11:2] of byte offset to module TLS base address, encoded in
      ldst instructions.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12
      bit[11:3] of byte offset to module TLS base address, encoded in
      ldst instructions.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12
      bit[11:0] of byte offset to module TLS base address, encoded in
      ldst instructions.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_ADD_LO12
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G1
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_LDR
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_ADD
-     AArch64 TLS DESC relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC_CALL
-     AArch64 TLS DESC relocation.
+     AArch64 TLS DESC relocations.
  -- : BFD_RELOC_AARCH64_COPY
-     AArch64 TLS relocation.
  -- : BFD_RELOC_AARCH64_GLOB_DAT
-     AArch64 TLS relocation.
  -- : BFD_RELOC_AARCH64_JUMP_SLOT
-     AArch64 TLS relocation.
  -- : BFD_RELOC_AARCH64_RELATIVE
-     AArch64 TLS relocation.
+     AArch64 DSO relocations.
  -- : BFD_RELOC_AARCH64_TLS_DTPMOD
-     AArch64 TLS relocation.
  -- : BFD_RELOC_AARCH64_TLS_DTPREL
-     AArch64 TLS relocation.
  -- : BFD_RELOC_AARCH64_TLS_TPREL
-     AArch64 TLS relocation.
  -- : BFD_RELOC_AARCH64_TLSDESC
-     AArch64 TLS relocation.
+     AArch64 TLS relocations.
  -- : BFD_RELOC_AARCH64_IRELATIVE
      AArch64 support for STT_GNU_IFUNC.
  -- : BFD_RELOC_AARCH64_RELOC_END
@@ -6797,14 +6442,14 @@ attributes.
      be used internally by the AArch64 assembler and not (currently)
      written to any object files.
  -- : BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no
+     Similar to BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no
      overflow check.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12
      AArch64 pseudo relocation code for TLS local exec mode.  It's to be
      used internally by the AArch64 assembler and not (currently)
      written to any object files.
  -- : BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC
-     Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow
+     Similar to BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow
      check.
  -- : BFD_RELOC_AARCH64_LD_GOT_LO12_NC
      AArch64 pseudo relocation code to be used internally by the AArch64
@@ -6815,6 +6460,10 @@ attributes.
  -- : BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC
      AArch64 pseudo relocation code to be used internally by the AArch64
      assembler and not (currently) written to any object files.
+ -- : BFD_RELOC_AARCH64_BRANCH9
+     AArch64 9 bit pc-relative conditional branch and compare & branch.
+     The lowest two bits must be zero and are not stored in the
+     instruction, giving an 11 bit signed byte offset.
  -- : BFD_RELOC_TILEPRO_COPY
  -- : BFD_RELOC_TILEPRO_GLOB_DAT
  -- : BFD_RELOC_TILEPRO_JMP_SLOT
@@ -7006,24 +6655,23 @@ attributes.
  -- : BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD
      Tilera TILE-Gx Relocations.
  -- : BFD_RELOC_BPF_64
- -- : BFD_RELOC_BPF_32
- -- : BFD_RELOC_BPF_16
- -- : BFD_RELOC_BPF_DISP16
  -- : BFD_RELOC_BPF_DISP32
+ -- : BFD_RELOC_BPF_DISPCALL32
+ -- : BFD_RELOC_BPF_DISP16
      Linux eBPF relocations.
  -- : BFD_RELOC_EPIPHANY_SIMM8
-     Adapteva EPIPHANY - 8 bit signed pc-relative displacement
+     Adapteva EPIPHANY - 8 bit signed pc-relative displacement.
  -- : BFD_RELOC_EPIPHANY_SIMM24
-     Adapteva EPIPHANY - 24 bit signed pc-relative displacement
+     Adapteva EPIPHANY - 24 bit signed pc-relative displacement.
  -- : BFD_RELOC_EPIPHANY_HIGH
-     Adapteva EPIPHANY - 16 most-significant bits of absolute address
+     Adapteva EPIPHANY - 16 most-significant bits of absolute address.
  -- : BFD_RELOC_EPIPHANY_LOW
-     Adapteva EPIPHANY - 16 least-significant bits of absolute address
+     Adapteva EPIPHANY - 16 least-significant bits of absolute address.
  -- : BFD_RELOC_EPIPHANY_SIMM11
-     Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
+     Adapteva EPIPHANY - 11 bit signed number - add/sub immediate.
  -- : BFD_RELOC_EPIPHANY_IMM11
      Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st
-     displacement)
+     displacement).
  -- : BFD_RELOC_EPIPHANY_IMM8
      Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
  -- : BFD_RELOC_VISIUM_HI16
@@ -7113,122 +6761,201 @@ attributes.
      C-SKY relocations.
  -- : BFD_RELOC_S12Z_OPR
      S12Z relocations.
-
+ -- : BFD_RELOC_LARCH_TLS_DTPMOD32
+ -- : BFD_RELOC_LARCH_TLS_DTPREL32
+ -- : BFD_RELOC_LARCH_TLS_DTPMOD64
+ -- : BFD_RELOC_LARCH_TLS_DTPREL64
+ -- : BFD_RELOC_LARCH_TLS_TPREL32
+ -- : BFD_RELOC_LARCH_TLS_TPREL64
+ -- : BFD_RELOC_LARCH_TLS_DESC32
+ -- : BFD_RELOC_LARCH_TLS_DESC64
+ -- : BFD_RELOC_LARCH_MARK_LA
+ -- : BFD_RELOC_LARCH_MARK_PCREL
+ -- : BFD_RELOC_LARCH_SOP_PUSH_PCREL
+ -- : BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE
+ -- : BFD_RELOC_LARCH_SOP_PUSH_DUP
+ -- : BFD_RELOC_LARCH_SOP_PUSH_GPREL
+ -- : BFD_RELOC_LARCH_SOP_PUSH_TLS_TPREL
+ -- : BFD_RELOC_LARCH_SOP_PUSH_TLS_GOT
+ -- : BFD_RELOC_LARCH_SOP_PUSH_TLS_GD
+ -- : BFD_RELOC_LARCH_SOP_PUSH_PLT_PCREL
+ -- : BFD_RELOC_LARCH_SOP_ASSERT
+ -- : BFD_RELOC_LARCH_SOP_NOT
+ -- : BFD_RELOC_LARCH_SOP_SUB
+ -- : BFD_RELOC_LARCH_SOP_SL
+ -- : BFD_RELOC_LARCH_SOP_SR
+ -- : BFD_RELOC_LARCH_SOP_ADD
+ -- : BFD_RELOC_LARCH_SOP_AND
+ -- : BFD_RELOC_LARCH_SOP_IF_ELSE
+ -- : BFD_RELOC_LARCH_SOP_POP_32_S_10_5
+ -- : BFD_RELOC_LARCH_SOP_POP_32_U_10_12
+ -- : BFD_RELOC_LARCH_SOP_POP_32_S_10_12
+ -- : BFD_RELOC_LARCH_SOP_POP_32_S_10_16
+ -- : BFD_RELOC_LARCH_SOP_POP_32_S_10_16_S2
+ -- : BFD_RELOC_LARCH_SOP_POP_32_S_5_20
+ -- : BFD_RELOC_LARCH_SOP_POP_32_S_0_5_10_16_S2
+ -- : BFD_RELOC_LARCH_SOP_POP_32_S_0_10_10_16_S2
+ -- : BFD_RELOC_LARCH_SOP_POP_32_U
+ -- : BFD_RELOC_LARCH_ADD8
+ -- : BFD_RELOC_LARCH_ADD16
+ -- : BFD_RELOC_LARCH_ADD24
+ -- : BFD_RELOC_LARCH_ADD32
+ -- : BFD_RELOC_LARCH_ADD64
+ -- : BFD_RELOC_LARCH_SUB8
+ -- : BFD_RELOC_LARCH_SUB16
+ -- : BFD_RELOC_LARCH_SUB24
+ -- : BFD_RELOC_LARCH_SUB32
+ -- : BFD_RELOC_LARCH_SUB64
+ -- : BFD_RELOC_LARCH_B16
+ -- : BFD_RELOC_LARCH_B21
+ -- : BFD_RELOC_LARCH_B26
+ -- : BFD_RELOC_LARCH_ABS_HI20
+ -- : BFD_RELOC_LARCH_ABS_LO12
+ -- : BFD_RELOC_LARCH_ABS64_LO20
+ -- : BFD_RELOC_LARCH_ABS64_HI12
+ -- : BFD_RELOC_LARCH_PCALA_HI20
+ -- : BFD_RELOC_LARCH_PCALA_LO12
+ -- : BFD_RELOC_LARCH_PCALA64_LO20
+ -- : BFD_RELOC_LARCH_PCALA64_HI12
+ -- : BFD_RELOC_LARCH_GOT_PC_HI20
+ -- : BFD_RELOC_LARCH_GOT_PC_LO12
+ -- : BFD_RELOC_LARCH_GOT64_PC_LO20
+ -- : BFD_RELOC_LARCH_GOT64_PC_HI12
+ -- : BFD_RELOC_LARCH_GOT_HI20
+ -- : BFD_RELOC_LARCH_GOT_LO12
+ -- : BFD_RELOC_LARCH_GOT64_LO20
+ -- : BFD_RELOC_LARCH_GOT64_HI12
+ -- : BFD_RELOC_LARCH_TLS_LE_HI20
+ -- : BFD_RELOC_LARCH_TLS_LE_LO12
+ -- : BFD_RELOC_LARCH_TLS_LE64_LO20
+ -- : BFD_RELOC_LARCH_TLS_LE64_HI12
+ -- : BFD_RELOC_LARCH_TLS_IE_PC_HI20
+ -- : BFD_RELOC_LARCH_TLS_IE_PC_LO12
+ -- : BFD_RELOC_LARCH_TLS_IE64_PC_LO20
+ -- : BFD_RELOC_LARCH_TLS_IE64_PC_HI12
+ -- : BFD_RELOC_LARCH_TLS_IE_HI20
+ -- : BFD_RELOC_LARCH_TLS_IE_LO12
+ -- : BFD_RELOC_LARCH_TLS_IE64_LO20
+ -- : BFD_RELOC_LARCH_TLS_IE64_HI12
+ -- : BFD_RELOC_LARCH_TLS_LD_PC_HI20
+ -- : BFD_RELOC_LARCH_TLS_LD_HI20
+ -- : BFD_RELOC_LARCH_TLS_GD_PC_HI20
+ -- : BFD_RELOC_LARCH_TLS_GD_HI20
+ -- : BFD_RELOC_LARCH_32_PCREL
+ -- : BFD_RELOC_LARCH_RELAX
+ -- : BFD_RELOC_LARCH_DELETE
+ -- : BFD_RELOC_LARCH_ALIGN
+ -- : BFD_RELOC_LARCH_PCREL20_S2
+ -- : BFD_RELOC_LARCH_CFA
+ -- : BFD_RELOC_LARCH_ADD6
+ -- : BFD_RELOC_LARCH_SUB6
+ -- : BFD_RELOC_LARCH_ADD_ULEB128
+ -- : BFD_RELOC_LARCH_SUB_ULEB128
+ -- : BFD_RELOC_LARCH_64_PCREL
+ -- : BFD_RELOC_LARCH_CALL36
+ -- : BFD_RELOC_LARCH_TLS_DESC_PC_HI20
+ -- : BFD_RELOC_LARCH_TLS_DESC_PC_LO12
+ -- : BFD_RELOC_LARCH_TLS_DESC64_PC_LO20
+ -- : BFD_RELOC_LARCH_TLS_DESC64_PC_HI12
+ -- : BFD_RELOC_LARCH_TLS_DESC_HI20
+ -- : BFD_RELOC_LARCH_TLS_DESC_LO12
+ -- : BFD_RELOC_LARCH_TLS_DESC64_LO20
+ -- : BFD_RELOC_LARCH_TLS_DESC64_HI12
+ -- : BFD_RELOC_LARCH_TLS_DESC_LD
+ -- : BFD_RELOC_LARCH_TLS_DESC_CALL
+ -- : BFD_RELOC_LARCH_TLS_LE_HI20_R
+ -- : BFD_RELOC_LARCH_TLS_LE_ADD_R
+ -- : BFD_RELOC_LARCH_TLS_LE_LO12_R
+ -- : BFD_RELOC_LARCH_TLS_LD_PCREL20_S2
+ -- : BFD_RELOC_LARCH_TLS_GD_PCREL20_S2
+ -- : BFD_RELOC_LARCH_TLS_DESC_PCREL20_S2
+     LARCH relocations.
 
      typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
 
+
 2.10.2.2 'bfd_reloc_type_lookup'
 ................................
 
-*Synopsis*
-     reloc_howto_type *bfd_reloc_type_lookup
-        (bfd *abfd, bfd_reloc_code_real_type code);
-     reloc_howto_type *bfd_reloc_name_lookup
-        (bfd *abfd, const char *reloc_name);
-   *Description*
-Return a pointer to a howto structure which, when invoked, will perform
-the relocation CODE on data from the architecture noted.
+ -- Function: reloc_howto_type *bfd_reloc_type_lookup (bfd *abfd,
+          bfd_reloc_code_real_type code); reloc_howto_type
+          *bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name);
+     Return a pointer to a howto structure which, when invoked, will
+     perform the relocation CODE on data from the architecture noted.
 
 2.10.2.3 'bfd_default_reloc_type_lookup'
 ........................................
 
-*Synopsis*
-     reloc_howto_type *bfd_default_reloc_type_lookup
-        (bfd *abfd, bfd_reloc_code_real_type  code);
-   *Description*
-Provides a default relocation lookup routine for any architecture.
+ -- Function: reloc_howto_type *bfd_default_reloc_type_lookup (bfd
+          *abfd, bfd_reloc_code_real_type code);
+     Provides a default relocation lookup routine for any architecture.
 
 2.10.2.4 'bfd_get_reloc_code_name'
 ..................................
 
-*Synopsis*
-     const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
-   *Description*
-Provides a printable name for the supplied relocation code.  Useful
-mainly for printing error messages.
+ -- Function: const char *bfd_get_reloc_code_name
+          (bfd_reloc_code_real_type code);
+     Provides a printable name for the supplied relocation code.  Useful
+     mainly for printing error messages.
 
 2.10.2.5 'bfd_generic_relax_section'
 ....................................
 
-*Synopsis*
-     bfd_boolean bfd_generic_relax_section
-        (bfd *abfd,
-         asection *section,
-         struct bfd_link_info *,
-         bfd_boolean *);
-   *Description*
-Provides default handling for relaxing for back ends which don't do
-relaxing.
+ -- Function: bool bfd_generic_relax_section (bfd *abfd, asection
+          *section, struct bfd_link_info *, bool *);
+     Provides default handling for relaxing for back ends which don't do
+     relaxing.
 
 2.10.2.6 'bfd_generic_gc_sections'
 ..................................
 
-*Synopsis*
-     bfd_boolean bfd_generic_gc_sections
-        (bfd *, struct bfd_link_info *);
-   *Description*
-Provides default handling for relaxing for back ends which don't do
-section gc - i.e., does nothing.
+ -- Function: bool bfd_generic_gc_sections (bfd *, struct bfd_link_info
+          *);
+     Provides default handling for relaxing for back ends which don't do
+     section gc - i.e., does nothing.
 
 2.10.2.7 'bfd_generic_lookup_section_flags'
 ...........................................
 
-*Synopsis*
-     bfd_boolean bfd_generic_lookup_section_flags
-        (struct bfd_link_info *, struct flag_info *, asection *);
-   *Description*
-Provides default handling for section flags lookup - i.e., does nothing.
-Returns FALSE if the section should be omitted, otherwise TRUE.
+ -- Function: bool bfd_generic_lookup_section_flags (struct
+          bfd_link_info *, struct flag_info *, asection *);
+     Provides default handling for section flags lookup - i.e., does
+     nothing.  Returns FALSE if the section should be omitted, otherwise
+     TRUE.
 
 2.10.2.8 'bfd_generic_merge_sections'
 .....................................
 
-*Synopsis*
-     bfd_boolean bfd_generic_merge_sections
-        (bfd *, struct bfd_link_info *);
-   *Description*
-Provides default handling for SEC_MERGE section merging for back ends
-which don't have SEC_MERGE support - i.e., does nothing.
+ -- Function: bool bfd_generic_merge_sections (bfd *, struct
+          bfd_link_info *);
+     Provides default handling for SEC_MERGE section merging for back
+     ends which don't have SEC_MERGE support - i.e., does nothing.
 
 2.10.2.9 'bfd_generic_get_relocated_section_contents'
 .....................................................
 
-*Synopsis*
-     bfd_byte *bfd_generic_get_relocated_section_contents
-        (bfd *abfd,
-         struct bfd_link_info *link_info,
-         struct bfd_link_order *link_order,
-         bfd_byte *data,
-         bfd_boolean relocatable,
-         asymbol **symbols);
-   *Description*
-Provides default handling of relocation effort for back ends which can't
-be bothered to do it efficiently.
+ -- Function: bfd_byte *bfd_generic_get_relocated_section_contents (bfd
+          *abfd, struct bfd_link_info *link_info, struct bfd_link_order
+          *link_order, bfd_byte *data, bool relocatable, asymbol
+          **symbols);
+     Provides default handling of relocation effort for back ends which
+     can't be bothered to do it efficiently.
 
 2.10.2.10 '_bfd_generic_set_reloc'
 ..................................
 
-*Synopsis*
-     void _bfd_generic_set_reloc
-        (bfd *abfd,
-         sec_ptr section,
-         arelent **relptr,
-         unsigned int count);
-   *Description*
-Installs a new set of internal relocations in SECTION.
+ -- Function: void _bfd_generic_set_reloc (bfd *abfd, sec_ptr section,
+          arelent **relptr, unsigned int count);
+     Installs a new set of internal relocations in SECTION.
 
 2.10.2.11 '_bfd_unrecognized_reloc'
 ...................................
 
-*Synopsis*
-     bfd_boolean _bfd_unrecognized_reloc
-        (bfd * abfd,
-         sec_ptr section,
-         unsigned int r_type);
-   *Description*
-Reports an unrecognized reloc.  Written as a function in order to reduce
-code duplication.  Returns FALSE so that it can be called from a return
-statement.
+ -- Function: bool _bfd_unrecognized_reloc (bfd * abfd, sec_ptr section,
+          unsigned int r_type);
+     Reports an unrecognized reloc.  Written as a function in order to
+     reduce code duplication.  Returns FALSE so that it can be called
+     from a return statement.
 
 
 File: bfd.info,  Node: Core Files,  Next: Targets,  Prev: Relocations,  Up: BFD front end
@@ -7239,62 +6966,52 @@ File: bfd.info,  Node: Core Files,  Next
 2.11.1 Core file functions
 --------------------------
 
-*Description*
 These are functions pertaining to core files.
 
 2.11.1.1 'bfd_core_file_failing_command'
 ........................................
 
-*Synopsis*
-     const char *bfd_core_file_failing_command (bfd *abfd);
-   *Description*
-Return a read-only string explaining which program was running when it
-failed and produced the core file ABFD.
+ -- Function: const char *bfd_core_file_failing_command (bfd *abfd);
+     Return a read-only string explaining which program was running when
+     it failed and produced the core file ABFD.
 
 2.11.1.2 'bfd_core_file_failing_signal'
 .......................................
 
-*Synopsis*
-     int bfd_core_file_failing_signal (bfd *abfd);
-   *Description*
-Returns the signal number which caused the core dump which generated the
-file the BFD ABFD is attached to.
+ -- Function: int bfd_core_file_failing_signal (bfd *abfd);
+     Returns the signal number which caused the core dump which
+     generated the file the BFD ABFD is attached to.
 
 2.11.1.3 'bfd_core_file_pid'
 ............................
 
-*Synopsis*
-     int bfd_core_file_pid (bfd *abfd);
-   *Description*
-Returns the PID of the process the core dump the BFD ABFD is attached to
-was generated from.
+ -- Function: int bfd_core_file_pid (bfd *abfd);
+     Returns the PID of the process the core dump the BFD ABFD is
+     attached to was generated from.
 
 2.11.1.4 'core_file_matches_executable_p'
 .........................................
 
-*Synopsis*
-     bfd_boolean core_file_matches_executable_p
-        (bfd *core_bfd, bfd *exec_bfd);
-   *Description*
-Return 'TRUE' if the core file attached to CORE_BFD was generated by a
-run of the executable file attached to EXEC_BFD, 'FALSE' otherwise.
+ -- Function: bool core_file_matches_executable_p (bfd *core_bfd, bfd
+          *exec_bfd);
+     Return 'TRUE' if the core file attached to CORE_BFD was generated
+     by a run of the executable file attached to EXEC_BFD, 'FALSE'
+     otherwise.
 
 2.11.1.5 'generic_core_file_matches_executable_p'
 .................................................
 
-*Synopsis*
-     bfd_boolean generic_core_file_matches_executable_p
-        (bfd *core_bfd, bfd *exec_bfd);
-   *Description*
-Return TRUE if the core file attached to CORE_BFD was generated by a run
-of the executable file attached to EXEC_BFD.  The match is based on
-executable basenames only.
-
-   Note: When not able to determine the core file failing command or the
-executable name, we still return TRUE even though we're not sure that
-core file and executable match.  This is to avoid generating a false
-warning in situations where we really don't know whether they match or
-not.
+ -- Function: bool generic_core_file_matches_executable_p (bfd
+          *core_bfd, bfd *exec_bfd);
+     Return TRUE if the core file attached to CORE_BFD was generated by
+     a run of the executable file attached to EXEC_BFD.  The match is
+     based on executable basenames only.
+
+     Note: When not able to determine the core file failing command or
+     the executable name, we still return TRUE even though we're not
+     sure that core file and executable match.  This is to avoid
+     generating a false warning in situations where we really don't know
+     whether they match or not.
 
 
 File: bfd.info,  Node: Targets,  Next: Architectures,  Prev: Core Files,  Up: BFD front end
@@ -7302,7 +7019,6 @@ File: bfd.info,  Node: Targets,  Next: A
 2.12 Targets
 ============
 
-*Description*
 Each port of BFD to a different machine requires the creation of a
 target back end.  All the back end provides to the root part of BFD is a
 structure containing pointers to functions which perform certain low
@@ -7351,7 +7067,6 @@ File: bfd.info,  Node: bfd_target,  Prev
 2.12.1 bfd_target
 -----------------
 
-*Description*
 This structure contains everything that BFD knows about a target.  It
 includes things like its byte order, name, and which routines to call to
 do various operations.
@@ -7388,6 +7103,11 @@ wants to fix this and not break the abov
         (bfd_assert (__FILE__,__LINE__), NULL))
      #endif
 
+     /* Defined to TRUE if unused section symbol should be kept.  */
+     #ifndef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+     #define TARGET_KEEP_UNUSED_SECTION_SYMBOLS true
+     #endif
+
    This is the structure which defines the type of BFD this is.  The
 'xvec' member of the struct 'bfd' itself points here.  Each module that
 implements access to a different target under BFD, defines one of these.
@@ -7395,39 +7115,6 @@ implements access to a different target
    FIXME, these names should be rationalised with the names of the entry
 points which call them.  Too bad we can't have one macro to define them
 both!
-     enum bfd_flavour
-     {
-       /* N.B. Update bfd_flavour_name if you change this.  */
-       bfd_target_unknown_flavour,
-       bfd_target_aout_flavour,
-       bfd_target_coff_flavour,
-       bfd_target_ecoff_flavour,
-       bfd_target_xcoff_flavour,
-       bfd_target_elf_flavour,
-       bfd_target_tekhex_flavour,
-       bfd_target_srec_flavour,
-       bfd_target_verilog_flavour,
-       bfd_target_ihex_flavour,
-       bfd_target_som_flavour,
-       bfd_target_os9k_flavour,
-       bfd_target_versados_flavour,
-       bfd_target_msdos_flavour,
-       bfd_target_ovax_flavour,
-       bfd_target_evax_flavour,
-       bfd_target_mmo_flavour,
-       bfd_target_mach_o_flavour,
-       bfd_target_pef_flavour,
-       bfd_target_pef_xlib_flavour,
-       bfd_target_sym_flavour
-     };
-
-     enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
-
-     /* Forward declaration.  */
-     typedef struct bfd_link_info _bfd_link_info;
-
-     /* Forward declaration.  */
-     typedef struct flag_info flag_info;
 
      typedef struct bfd_target
      {
@@ -7466,12 +7153,15 @@ both!
           possible targets when more than one target matches.  */
        unsigned char match_priority;
 
+      /* TRUE if unused section symbols should be kept.  */
+       bool keep_unused_section_symbols;
+
        /* Entries for byte swapping for data. These are different from the
           other entry points, since they don't take a BFD as the first argument.
           Certain other handlers could do the same.  */
-       bfd_uint64_t   (*bfd_getx64) (const void *);
-       bfd_int64_t    (*bfd_getx_signed_64) (const void *);
-       void           (*bfd_putx64) (bfd_uint64_t, void *);
+       uint64_t       (*bfd_getx64) (const void *);
+       int64_t        (*bfd_getx_signed_64) (const void *);
+       void           (*bfd_putx64) (uint64_t, void *);
        bfd_vma        (*bfd_getx32) (const void *);
        bfd_signed_vma (*bfd_getx_signed_32) (const void *);
        void           (*bfd_putx32) (bfd_vma, void *);
@@ -7480,9 +7170,9 @@ both!
        void           (*bfd_putx16) (bfd_vma, void *);
 
        /* Byte swapping for the headers.  */
-       bfd_uint64_t   (*bfd_h_getx64) (const void *);
-       bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
-       void           (*bfd_h_putx64) (bfd_uint64_t, void *);
+       uint64_t       (*bfd_h_getx64) (const void *);
+       int64_t        (*bfd_h_getx_signed_64) (const void *);
+       void           (*bfd_h_putx64) (uint64_t, void *);
        bfd_vma        (*bfd_h_getx32) (const void *);
        bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
        void           (*bfd_h_putx32) (bfd_vma, void *);
@@ -7493,45 +7183,39 @@ 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 *);
+       bool (*_bfd_set_format[bfd_type_end]) (bfd *);
 
        /* Write cached information into a file being written, at bfd_close.  */
-       bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
+       bool (*_bfd_write_contents[bfd_type_end]) (bfd *);
 
    The general target vector.  These vectors are initialized using the
 BFD_JUMP_TABLE macros.
-
        /* Generic entry points.  */
      #define BFD_JUMP_TABLE_GENERIC(NAME) \
        NAME##_close_and_cleanup, \
        NAME##_bfd_free_cached_info, \
        NAME##_new_section_hook, \
-       NAME##_get_section_contents, \
-       NAME##_get_section_contents_in_window
+       NAME##_get_section_contents
 
        /* Called when the BFD is being closed to do any necessary cleanup.  */
-       bfd_boolean (*_close_and_cleanup) (bfd *);
+       bool (*_close_and_cleanup) (bfd *);
        /* Ask the BFD to free all cached information.  */
-       bfd_boolean (*_bfd_free_cached_info) (bfd *);
+       bool (*_bfd_free_cached_info) (bfd *);
        /* Called when a new section is created.  */
-       bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
+       bool (*_new_section_hook) (bfd *, sec_ptr);
        /* Read the contents of a section.  */
-       bfd_boolean (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
-                                                 bfd_size_type);
-       bfd_boolean (*_bfd_get_section_contents_in_window) (bfd *, sec_ptr,
-                                                           bfd_window *, file_ptr,
-                                                           bfd_size_type);
+       bool (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
+                                          bfd_size_type);
 
        /* Entry points to copy private data.  */
      #define BFD_JUMP_TABLE_COPY(NAME) \
        NAME##_bfd_copy_private_bfd_data, \
        NAME##_bfd_merge_private_bfd_data, \
-       _bfd_generic_init_private_section_data, \
        NAME##_bfd_copy_private_section_data, \
        NAME##_bfd_copy_private_symbol_data, \
        NAME##_bfd_copy_private_header_data, \
@@ -7540,34 +7224,26 @@ BFD_JUMP_TABLE macros.
 
        /* Called to copy BFD general private data from one object file
           to another.  */
-       bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
+       bool (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
        /* Called to merge BFD general private data from one object file
           to a common output file when linking.  */
-       bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
-       /* Called to initialize BFD private section data from one object file
-          to another.  */
-     #define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
-            BFD_SEND (obfd, _bfd_init_private_section_data, \
-                      (ibfd, isec, obfd, osec, link_info))
-       bfd_boolean (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *,
-                                                      sec_ptr,
-                                                      struct bfd_link_info *);
+       bool (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
        /* Called to copy BFD private section data from one object file
           to another.  */
-       bfd_boolean (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *,
-                                                      sec_ptr);
+       bool (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr,
+                                               struct bfd_link_info *);
        /* Called to copy BFD private symbol data from one symbol
           to another.  */
-       bfd_boolean (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, bfd *,
-                                                     asymbol *);
+       bool (*_bfd_copy_private_symbol_data) (bfd *, asymbol *,
+                                              bfd *, asymbol *);
        /* Called to copy BFD private header data from one object file
           to another.  */
-       bfd_boolean (*_bfd_copy_private_header_data) (bfd *, bfd *);
+       bool (*_bfd_copy_private_header_data) (bfd *, bfd *);
        /* Called to set private backend flags.  */
-       bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
+       bool (*_bfd_set_private_flags) (bfd *, flagword);
 
        /* Called to print private BFD data.  */
-       bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
+       bool (*_bfd_print_private_bfd_data) (bfd *, void *);
 
        /* Core file entry points.  */
      #define BFD_JUMP_TABLE_CORE(NAME) \
@@ -7576,10 +7252,10 @@ BFD_JUMP_TABLE macros.
        NAME##_core_file_matches_executable_p, \
        NAME##_core_file_pid
 
-       char *      (*_core_file_failing_command) (bfd *);
-       int         (*_core_file_failing_signal) (bfd *);
-       bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
-       int         (*_core_file_pid) (bfd *);
+       char *(*_core_file_failing_command) (bfd *);
+       int   (*_core_file_failing_signal) (bfd *);
+       bool  (*_core_file_matches_executable_p) (bfd *, bfd *);
+       int   (*_core_file_pid) (bfd *);
 
        /* Archive entry points.  */
      #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
@@ -7595,22 +7271,21 @@ BFD_JUMP_TABLE macros.
        NAME##_generic_stat_arch_elt, \
        NAME##_update_armap_timestamp
 
-       bfd_boolean (*_bfd_slurp_armap) (bfd *);
-       bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
-       bfd_boolean (*_bfd_construct_extended_name_table) (bfd *, char **,
-                                                          bfd_size_type *,
-                                                          const char **);
-       void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
-       bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *,
-                                   unsigned int, int);
-       void *      (*_bfd_read_ar_hdr_fn) (bfd *);
-       bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
-       bfd *       (*openr_next_archived_file) (bfd *, bfd *);
+       bool (*_bfd_slurp_armap) (bfd *);
+       bool (*_bfd_slurp_extended_name_table) (bfd *);
+       bool (*_bfd_construct_extended_name_table) (bfd *, char **,
+                                                   bfd_size_type *,
+                                                   const char **);
+       void (*_bfd_truncate_arname) (bfd *, const char *, char *);
+       bool (*write_armap) (bfd *, unsigned, struct orl *, unsigned, int);
+       void *(*_bfd_read_ar_hdr_fn) (bfd *);
+       bool (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
+       bfd *(*openr_next_archived_file) (bfd *, bfd *);
      #define bfd_get_elt_at_index(b,i) \
             BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
-       bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
-       int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
-       bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
+       bfd *(*_bfd_get_elt_at_index) (bfd *, symindex);
+       int  (*_bfd_stat_arch_elt) (bfd *, struct stat *);
+       bool (*_bfd_update_armap_timestamp) (bfd *);
 
        /* Entry points used for symbols.  */
      #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
@@ -7624,52 +7299,59 @@ BFD_JUMP_TABLE macros.
        NAME##_bfd_is_target_special_symbol, \
        NAME##_get_lineno, \
        NAME##_find_nearest_line, \
+       NAME##_find_nearest_line_with_alt, \
        NAME##_find_line, \
        NAME##_find_inliner_info, \
        NAME##_bfd_make_debug_symbol, \
        NAME##_read_minisymbols, \
        NAME##_minisymbol_to_symbol
 
-       long        (*_bfd_get_symtab_upper_bound) (bfd *);
-       long        (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
+       long (*_bfd_get_symtab_upper_bound) (bfd *);
+       long (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
        struct bfd_symbol *
-                   (*_bfd_make_empty_symbol) (bfd *);
-       void        (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
-                                         bfd_print_symbol_type);
+            (*_bfd_make_empty_symbol) (bfd *);
+       void (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
+                                  bfd_print_symbol_type);
      #define bfd_print_symbol(b,p,s,e) \
             BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
-       void        (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *,
-                                            symbol_info *);
+       void  (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *, symbol_info *);
      #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 *);
-     #define bfd_get_symbol_version_string(b,s,h) \
-            BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,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 *);
-       bfd_boolean (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
-                                              struct bfd_section *, bfd_vma,
-                                              const char **, const char **,
-                                              unsigned int *, unsigned int *);
-       bfd_boolean (*_bfd_find_line) (bfd *, struct bfd_symbol **,
-                                      struct bfd_symbol *, const char **,
-                                      unsigned int *);
-       bfd_boolean (*_bfd_find_inliner_info)
+       const char *
+            (*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
+                                               bool, bool *);
+     #define bfd_get_symbol_version_string(b,s,p,h) \
+            BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h))
+       bool (*_bfd_is_local_label_name) (bfd *, const char *);
+       bool (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
+       alent *
+            (*_get_lineno) (bfd *, struct bfd_symbol *);
+       bool (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
+                                       struct bfd_section *, bfd_vma,
+                                       const char **, const char **,
+                                       unsigned int *, unsigned int *);
+       bool (*_bfd_find_nearest_line_with_alt) (bfd *, const char *,
+                                                struct bfd_symbol **,
+                                                struct bfd_section *, bfd_vma,
+                                                const char **, const char **,
+                                                unsigned int *, unsigned int *);
+       bool (*_bfd_find_line) (bfd *, struct bfd_symbol **,
+                               struct bfd_symbol *, const char **,
+                               unsigned int *);
+       bool (*_bfd_find_inliner_info)
          (bfd *, const char **, const char **, unsigned int *);
       /* Back-door to allow format-aware applications to create debug symbols
          while using BFD for everything else.  Currently used by the assembler
          when creating COFF files.  */
-       asymbol *   (*_bfd_make_debug_symbol) (bfd *, void *, unsigned long size);
+       asymbol *
+            (*_bfd_make_debug_symbol) (bfd *);
      #define bfd_read_minisymbols(b, d, m, s) \
             BFD_SEND (b, _read_minisymbols, (b, d, m, s))
-       long        (*_read_minisymbols) (bfd *, bfd_boolean, void **,
-                                         unsigned int *);
+       long (*_read_minisymbols) (bfd *, bool, void **, unsigned int *);
      #define bfd_minisymbol_to_symbol(b, d, m, f) \
             BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
-       asymbol *   (*_minisymbol_to_symbol) (bfd *, bfd_boolean, const void *,
-                                             asymbol *);
+       asymbol *
+            (*_minisymbol_to_symbol) (bfd *, bool, const void *, asymbol *);
 
        /* Routines for relocs.  */
      #define BFD_JUMP_TABLE_RELOCS(NAME) \
@@ -7679,25 +7361,25 @@ BFD_JUMP_TABLE macros.
        NAME##_bfd_reloc_type_lookup, \
        NAME##_bfd_reloc_name_lookup
 
-       long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
-       long        (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
-                                               struct bfd_symbol **);
-       void        (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
+       long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
+       long (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
+                                        struct bfd_symbol **);
+       void (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
        /* See documentation on reloc types.  */
        reloc_howto_type *
-                   (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
+            (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
        reloc_howto_type *
-                   (*reloc_name_lookup) (bfd *, const char *);
+            (*reloc_name_lookup) (bfd *, const char *);
 
        /* Routines used when writing an object file.  */
      #define BFD_JUMP_TABLE_WRITE(NAME) \
        NAME##_set_arch_mach, \
        NAME##_set_section_contents
 
-       bfd_boolean (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
+       bool (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
                                           unsigned long);
-       bfd_boolean (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
-                                                 file_ptr, bfd_size_type);
+       bool (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
+                                          file_ptr, bfd_size_type);
 
        /* Routines used by the linker.  */
      #define BFD_JUMP_TABLE_LINK(NAME) \
@@ -7722,72 +7404,73 @@ BFD_JUMP_TABLE macros.
        NAME##_bfd_link_hide_symbol, \
        NAME##_bfd_define_start_stop
 
-       int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
-       bfd_byte *  (*_bfd_get_relocated_section_contents) (bfd *,
-                                                           struct bfd_link_info *,
-                                                           struct bfd_link_order *,
-                                                           bfd_byte *, bfd_boolean,
-                                                           struct bfd_symbol **);
+       int  (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
+       bfd_byte *
+            (*_bfd_get_relocated_section_contents) (bfd *,
+                                                    struct bfd_link_info *,
+                                                    struct bfd_link_order *,
+                                                    bfd_byte *, bool,
+                                                    struct bfd_symbol **);
 
-       bfd_boolean (*_bfd_relax_section) (bfd *, struct bfd_section *,
-                                          struct bfd_link_info *, bfd_boolean *);
+       bool (*_bfd_relax_section) (bfd *, struct bfd_section *,
+                                   struct bfd_link_info *, bool *);
 
        /* Create a hash table for the linker.  Different backends store
           different information in this table.  */
        struct bfd_link_hash_table *
-                   (*_bfd_link_hash_table_create) (bfd *);
+            (*_bfd_link_hash_table_create) (bfd *);
 
        /* Add symbols from this object file into the hash table.  */
-       bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
+       bool (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
 
        /* Indicate that we are only retrieving symbol values from this section.  */
-       void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
+       void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
 
        /* Copy the symbol type and other attributes for a linker script
           assignment of one symbol to another.  */
      #define bfd_copy_link_hash_symbol_type(b, t, f) \
             BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
-       void        (*_bfd_copy_link_hash_symbol_type) (bfd *,
-                                                       struct bfd_link_hash_entry *,
-                                                       struct bfd_link_hash_entry *);
+       void (*_bfd_copy_link_hash_symbol_type) (bfd *,
+                                                struct bfd_link_hash_entry *,
+                                                struct bfd_link_hash_entry *);
 
        /* Do a link based on the link_order structures attached to each
           section of the BFD.  */
-       bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
+       bool (*_bfd_final_link) (bfd *, struct bfd_link_info *);
 
        /* Should this section be split up into smaller pieces during linking.  */
-       bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
+       bool (*_bfd_link_split_section) (bfd *, struct bfd_section *);
 
        /* Check the relocations in the bfd for validity.  */
-       bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
+       bool (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
 
        /* Remove sections that are not referenced from the output.  */
-       bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
+       bool (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
 
        /* Sets the bitmask of allowed and disallowed section flags.  */
-       bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
-                                                 struct flag_info *, asection *);
+       bool (*_bfd_lookup_section_flags) (struct bfd_link_info *,
+                                          struct flag_info *, asection *);
 
        /* Attempt to merge SEC_MERGE sections.  */
-       bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
+       bool (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
 
        /* Is this section a member of a group?  */
-       bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
+       bool (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 
        /* The group name, if section is a member of a group.  */
        const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
 
        /* Discard members of a group.  */
-       bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
+       bool (*_bfd_discard_group) (bfd *, struct bfd_section *);
 
        /* Check if SEC has been already linked during a reloceatable or
           final link.  */
-       bfd_boolean (*_section_already_linked) (bfd *, asection *,
-                                               struct bfd_link_info *);
+       bool (*_section_already_linked) (bfd *, asection *,
+                                        struct bfd_link_info *);
 
        /* Define a common symbol.  */
-       bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
-                                                 struct bfd_link_hash_entry *);
+       bool (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
+                                          struct bfd_link_hash_entry *);
 
        /* Hide a symbol.  */
        void (*_bfd_link_hide_symbol) (bfd *, struct bfd_link_info *,
@@ -7795,8 +7478,8 @@ BFD_JUMP_TABLE macros.
 
        /* Define a __start, __stop, .startof. or .sizeof. symbol.  */
        struct bfd_link_hash_entry *
-                   (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
-                                              asection *);
+            (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
+                                       asection *);
 
        /* Routines to handle dynamic symbols and relocs.  */
      #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
@@ -7807,18 +7490,18 @@ BFD_JUMP_TABLE macros.
        NAME##_canonicalize_dynamic_reloc
 
        /* Get the amount of memory required to hold the dynamic symbols.  */
-       long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
+       long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
        /* Read in the dynamic symbols.  */
-       long        (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
+       long (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
        /* Create synthetized symbols.  */
-       long        (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
-                                                 long, struct bfd_symbol **,
-                                                 struct bfd_symbol **);
+       long (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
+                                          long, struct bfd_symbol **,
+                                          struct bfd_symbol **);
        /* Get the amount of memory required to hold the dynamic relocs.  */
-       long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
+       long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
        /* Read in the dynamic relocs.  */
-       long        (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
-                                                       struct bfd_symbol **);
+       long (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
+                                                struct bfd_symbol **);
 
    A pointer to an alternative bfd_target in case the current one is not
 satisfactory.  This can happen when the target cpu supports both big and
@@ -7852,31 +7535,31 @@ to find an alternative output format tha
        return abfd->xvec->object_flags;
      }
 
-     static inline bfd_boolean
+     static inline bool
      bfd_family_coff (const bfd *abfd)
      {
        return (bfd_get_flavour (abfd) == bfd_target_coff_flavour
                || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
      }
 
-     static inline bfd_boolean
+     static inline bool
      bfd_big_endian (const bfd *abfd)
      {
        return abfd->xvec->byteorder == BFD_ENDIAN_BIG;
      }
-     static inline bfd_boolean
+     static inline bool
      bfd_little_endian (const bfd *abfd)
      {
        return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE;
      }
 
-     static inline bfd_boolean
+     static inline bool
      bfd_header_big_endian (const bfd *abfd)
      {
        return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG;
      }
 
-     static inline bfd_boolean
+     static inline bool
      bfd_header_little_endian (const bfd *abfd)
      {
        return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE;
@@ -7902,87 +7585,88 @@ to find an alternative output format tha
        return sy->the_bfd->xvec->flavour;
      }
 
+     static inline bool
+     bfd_keep_unused_section_symbols (const bfd *abfd)
+     {
+       return abfd->xvec->keep_unused_section_symbols;
+     }
+
+     static inline bool
+     bfd_target_supports_archives (const bfd *abfd)
+     {
+       return (abfd->xvec->_bfd_check_format[bfd_archive]
+               != abfd->xvec->_bfd_check_format[bfd_unknown]);
+     }
+
 
 2.12.1.1 'bfd_set_default_target'
 .................................
 
-*Synopsis*
-     bfd_boolean bfd_set_default_target (const char *name);
-   *Description*
-Set the default target vector to use when recognizing a BFD. This takes
-the name of the target, which may be a BFD target name or a
-configuration triplet.
+ -- Function: bool bfd_set_default_target (const char *name);
+     Set the default target vector to use when recognizing a BFD. This
+     takes the name of the target, which may be a BFD target name or a
+     configuration triplet.
 
 2.12.1.2 'bfd_find_target'
 ..........................
 
-*Synopsis*
-     const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
-   *Description*
-Return a pointer to the transfer vector for the object target named
-TARGET_NAME.  If TARGET_NAME is 'NULL', choose the one in the
-environment variable 'GNUTARGET'; if that is null or not defined, then
-choose the first entry in the target list.  Passing in the string
-"default" or setting the environment variable to "default" will cause
-the first entry in the target list to be returned, and
-"target_defaulted" will be set in the BFD if ABFD isn't 'NULL'.  This
-causes 'bfd_check_format' to loop over all the targets to find the one
-that matches the file being read.
+ -- Function: const bfd_target *bfd_find_target (const char
+          *target_name, bfd *abfd);
+     Return a pointer to the transfer vector for the object target named
+     TARGET_NAME.  If TARGET_NAME is 'NULL', choose the one in the
+     environment variable 'GNUTARGET'; if that is null or not defined,
+     then choose the first entry in the target list.  Passing in the
+     string "default" or setting the environment variable to "default"
+     will cause the first entry in the target list to be returned, and
+     "target_defaulted" will be set in the BFD if ABFD isn't 'NULL'.
+     This causes 'bfd_check_format' to loop over all the targets to find
+     the one that matches the file being read.
 
 2.12.1.3 'bfd_get_target_info'
 ..............................
 
-*Synopsis*
-     const bfd_target *bfd_get_target_info (const char *target_name,
-         bfd *abfd,
-         bfd_boolean *is_bigendian,
-         int *underscoring,
-         const char **def_target_arch);
-   *Description*
-Return a pointer to the transfer vector for the object target named
-TARGET_NAME.  If TARGET_NAME is 'NULL', choose the one in the
-environment variable 'GNUTARGET'; if that is null or not defined, then
-choose the first entry in the target list.  Passing in the string
-"default" or setting the environment variable to "default" will cause
-the first entry in the target list to be returned, and
-"target_defaulted" will be set in the BFD if ABFD isn't 'NULL'.  This
-causes 'bfd_check_format' to loop over all the targets to find the one
-that matches the file being read.  If IS_BIGENDIAN is not 'NULL', then
-set this value to target's endian mode.  True for big-endian, FALSE for
-little-endian or for invalid target.  If UNDERSCORING is not 'NULL',
-then set this value to target's underscoring mode.  Zero for
-none-underscoring, -1 for invalid target, else the value of target
-vector's symbol underscoring.  If DEF_TARGET_ARCH is not 'NULL', then
-set it to the architecture string specified by the target_name.
+ -- Function: const bfd_target *bfd_get_target_info (const char
+          *target_name, bfd *abfd, bool *is_bigendian, int
+          *underscoring, const char **def_target_arch);
+     Return a pointer to the transfer vector for the object target named
+     TARGET_NAME.  If TARGET_NAME is 'NULL', choose the one in the
+     environment variable 'GNUTARGET'; if that is null or not defined,
+     then choose the first entry in the target list.  Passing in the
+     string "default" or setting the environment variable to "default"
+     will cause the first entry in the target list to be returned, and
+     "target_defaulted" will be set in the BFD if ABFD isn't 'NULL'.
+     This causes 'bfd_check_format' to loop over all the targets to find
+     the one that matches the file being read.  If IS_BIGENDIAN is not
+     'NULL', then set this value to target's endian mode.  True for
+     big-endian, FALSE for little-endian or for invalid target.  If
+     UNDERSCORING is not 'NULL', then set this value to target's
+     underscoring mode.  Zero for none-underscoring, -1 for invalid
+     target, else the value of target vector's symbol underscoring.  If
+     DEF_TARGET_ARCH is not 'NULL', then set it to the architecture
+     string specified by the target_name.
 
 2.12.1.4 'bfd_target_list'
 ..........................
 
-*Synopsis*
-     const char ** bfd_target_list (void);
-   *Description*
-Return a freshly malloced NULL-terminated vector of the names of all the
-valid BFD targets.  Do not modify the names.
+ -- Function: const char ** bfd_target_list (void);
+     Return a freshly malloced NULL-terminated vector of the names of
+     all the valid BFD targets.  Do not modify the names.
 
 2.12.1.5 'bfd_iterate_over_targets'
 ...................................
 
-*Synopsis*
-     const bfd_target *bfd_iterate_over_targets
-        (int (*func) (const bfd_target *, void *),
-         void *data);
-   *Description*
-Call FUNC for each target in the list of BFD target vectors, passing
-DATA to FUNC.  Stop iterating if FUNC returns a non-zero result, and
-return that target vector.  Return NULL if FUNC always returns zero.
+ -- Function: const bfd_target *bfd_iterate_over_targets (int (*func)
+          (const bfd_target *, void *), void *data);
+     Call FUNC for each target in the list of BFD target vectors,
+     passing DATA to FUNC.  Stop iterating if FUNC returns a non-zero
+     result, and return that target vector.  Return NULL if FUNC always
+     returns zero.
 
 2.12.1.6 'bfd_flavour_name'
 ...........................
 
-*Synopsis*
-     const char *bfd_flavour_name (enum bfd_flavour flavour);
-   *Description*
-Return the string form of FLAVOUR.
+ -- Function: const char *bfd_flavour_name (enum bfd_flavour flavour);
+     Return the string form of FLAVOUR.
 
 
 File: bfd.info,  Node: Architectures,  Next: Opening and Closing,  Prev: Targets,  Up: BFD front end
@@ -8014,7 +7698,6 @@ a machine field of 0).
 2.13.1 bfd_architecture
 -----------------------
 
-*Description*
 This enum gives the object file's CPU architecture, in a global
 sense--i.e., what processor family does it belong to?  Another field
 indicates which processor within the family is in use.  The machine
@@ -8128,6 +7811,7 @@ architecture, containing, for example, 6
      #define bfd_mach_mips16000             16000
      #define bfd_mach_mips16                16
      #define bfd_mach_mips5                 5
+     #define bfd_mach_mips_allegrex         10111431 /* octal 'AL', 31.  */
      #define bfd_mach_mips_loongson_2e      3001
      #define bfd_mach_mips_loongson_2f      3002
      #define bfd_mach_mips_gs464            3003
@@ -8160,16 +7844,6 @@ architecture, containing, for example, 6
      #define bfd_mach_i386_i386_intel_syntax (bfd_mach_i386_i386 | bfd_mach_i386_intel_syntax)
      #define bfd_mach_x86_64_intel_syntax   (bfd_mach_x86_64 | bfd_mach_i386_intel_syntax)
      #define bfd_mach_x64_32_intel_syntax   (bfd_mach_x64_32 | bfd_mach_i386_intel_syntax)
-       bfd_arch_l1om,      /* Intel L1OM.  */
-     #define bfd_mach_l1om                  (1 << 5)
-     #define bfd_mach_l1om_intel_syntax     (bfd_mach_l1om | bfd_mach_i386_intel_syntax)
-       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 +7861,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
@@ -8297,6 +7970,7 @@ architecture, containing, for example, 6
      #define bfd_mach_arm_8M_BASE   25
      #define bfd_mach_arm_8M_MAIN   26
      #define bfd_mach_arm_8_1M_MAIN 27
+     #define bfd_mach_arm_9         28
        bfd_arch_nds32,     /* Andes NDS32.  */
      #define bfd_mach_n1            1
      #define bfd_mach_n1h           2
@@ -8310,7 +7984,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 +8045,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
@@ -8452,22 +8126,44 @@ architecture, containing, for example, 6
      #define bfd_mach_msp46         46
      #define bfd_mach_msp47         47
      #define bfd_mach_msp54         54
-       bfd_arch_xc16x,     /* Infineon's XC16X Series.  */
-     #define bfd_mach_xc16x         1
-     #define bfd_mach_xc16xl        2
-     #define bfd_mach_xc16xs        3
        bfd_arch_xgate,     /* Freescale XGATE.  */
      #define bfd_mach_xgate         1
        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.  */
+       bfd_arch_kvx,        /* Kalray VLIW core of the MPPA processor family */
+     #define bfd_mach_kv3_unknown       0
+     #define bfd_mach_kv3_1             1
+     #define bfd_mach_kv3_1_64          2
+     #define bfd_mach_kv3_1_usr         3
+     #define bfd_mach_kv3_2             4
+     #define bfd_mach_kv3_2_64          5
+     #define bfd_mach_kv3_2_usr         6
+     #define bfd_mach_kv4_1             7
+     #define bfd_mach_kv4_1_64          8
+     #define bfd_mach_kv4_1_usr         9
        bfd_arch_tilepro,   /* Tilera TILEPro.  */
        bfd_arch_tilegx,    /* Tilera TILE-Gx.  */
      #define bfd_mach_tilepro       1
@@ -8475,11 +8171,9 @@ 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
-     #define bfd_mach_nios2r1       1
-     #define bfd_mach_nios2r2       2
+     #define bfd_mach_aarch64_llp64 64
        bfd_arch_visium,    /* Visium.  */
      #define bfd_mach_visium        1
        bfd_arch_wasm32,    /* WebAssembly.  */
@@ -8498,13 +8192,32 @@ 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_loongarch,       /* LoongArch */
+     #define bfd_mach_loongarch32   1
+     #define bfd_mach_loongarch64   2
+       bfd_arch_amdgcn,     /* AMDGCN */
+     #define bfd_mach_amdgcn_unknown 0x000
+     #define bfd_mach_amdgcn_gfx900  0x02c
+     #define bfd_mach_amdgcn_gfx904  0x02e
+     #define bfd_mach_amdgcn_gfx906  0x02f
+     #define bfd_mach_amdgcn_gfx908  0x030
+     #define bfd_mach_amdgcn_gfx90a  0x03f
+     #define bfd_mach_amdgcn_gfx1010 0x033
+     #define bfd_mach_amdgcn_gfx1011 0x034
+     #define bfd_mach_amdgcn_gfx1012 0x035
+     #define bfd_mach_amdgcn_gfx1030 0x036
+     #define bfd_mach_amdgcn_gfx1031 0x037
+     #define bfd_mach_amdgcn_gfx1032 0x038
+     #define bfd_mach_amdgcn_gfx1100 0x041
+     #define bfd_mach_amdgcn_gfx1101 0x046
+     #define bfd_mach_amdgcn_gfx1102 0x047
        bfd_arch_last
        };
 
 2.13.2 bfd_arch_info
 --------------------
 
-*Description*
 This structure contains information on architectures for use within BFD.
 
      typedef struct bfd_arch_info
@@ -8520,17 +8233,16 @@ This structure contains information on a
        /* TRUE if this is the default machine for the architecture.
           The default arch should be the first entry for an arch so that
           all the entries for that arch can be accessed via next.  */
-       bfd_boolean the_default;
+       bool the_default;
        const struct bfd_arch_info * (*compatible) (const struct bfd_arch_info *,
                                                    const struct bfd_arch_info *);
 
-       bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
+       bool (*scan) (const struct bfd_arch_info *, const char *);
 
        /* Allocate via bfd_malloc and return a fill buffer of size COUNT.  If
           IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
           TRUE, the buffer contains code.  */
-       void *(*fill) (bfd_size_type count, bfd_boolean is_bigendian,
-                      bfd_boolean code);
+       void *(*fill) (bfd_size_type count, bool is_bigendian, bool code);
 
        const struct bfd_arch_info *next;
 
@@ -8550,728 +8262,552 @@ This structure contains information on a
 2.13.2.1 'bfd_printable_name'
 .............................
 
-*Synopsis*
-     const char *bfd_printable_name (bfd *abfd);
-   *Description*
-Return a printable string representing the architecture and machine from
-the pointer to the architecture info structure.
+ -- Function: const char *bfd_printable_name (bfd *abfd);
+     Return a printable string representing the architecture and machine
+     from the pointer to the architecture info structure.
 
 2.13.2.2 'bfd_scan_arch'
 ........................
 
-*Synopsis*
-     const bfd_arch_info_type *bfd_scan_arch (const char *string);
-   *Description*
-Figure out if BFD supports any cpu which could be described with the
-name STRING.  Return a pointer to an 'arch_info' structure if a machine
-is found, otherwise NULL.
+ -- Function: const bfd_arch_info_type *bfd_scan_arch (const char
+          *string);
+     Figure out if BFD supports any cpu which could be described with
+     the name STRING.  Return a pointer to an 'arch_info' structure if a
+     machine is found, otherwise NULL.
 
 2.13.2.3 'bfd_arch_list'
 ........................
 
-*Synopsis*
-     const char **bfd_arch_list (void);
-   *Description*
-Return a freshly malloced NULL-terminated vector of the names of all the
-valid BFD architectures.  Do not modify the names.
+ -- Function: const char **bfd_arch_list (void);
+     Return a freshly malloced NULL-terminated vector of the names of
+     all the valid BFD architectures.  Do not modify the names.
 
 2.13.2.4 'bfd_arch_get_compatible'
 ..................................
 
-*Synopsis*
-     const bfd_arch_info_type *bfd_arch_get_compatible
-        (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
-   *Description*
-Determine whether two BFDs' architectures and machine types are
-compatible.  Calculates the lowest common denominator between the two
-architectures and machine types implied by the BFDs and returns a
-pointer to an 'arch_info' structure describing the compatible machine.
+ -- Function: const bfd_arch_info_type *bfd_arch_get_compatible (const
+          bfd *abfd, const bfd *bbfd, bool accept_unknowns);
+     Determine whether two BFDs' architectures and machine types are
+     compatible.  Calculates the lowest common denominator between the
+     two architectures and machine types implied by the BFDs and returns
+     a pointer to an 'arch_info' structure describing the compatible
+     machine.
 
 2.13.2.5 'bfd_default_arch_struct'
 ..................................
 
-*Description*
 The 'bfd_default_arch_struct' is an item of 'bfd_arch_info_type' which
 has been initialized to a fairly generic state.  A BFD starts life by
 pointing to this structure, until the correct back end has determined
 the real architecture of the file.
      extern const bfd_arch_info_type bfd_default_arch_struct;
 
+
 2.13.2.6 'bfd_set_arch_info'
 ............................
 
-*Synopsis*
-     void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
-   *Description*
-Set the architecture info of ABFD to ARG.
+ -- Function: void bfd_set_arch_info (bfd *abfd, const
+          bfd_arch_info_type *arg);
+     Set the architecture info of ABFD to ARG.
 
 2.13.2.7 'bfd_default_set_arch_mach'
 ....................................
 
-*Synopsis*
-     bfd_boolean bfd_default_set_arch_mach
-        (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
-   *Description*
-Set the architecture and machine type in BFD ABFD to ARCH and MACH.
-Find the correct pointer to a structure and insert it into the
-'arch_info' pointer.
+ -- Function: bool bfd_default_set_arch_mach (bfd *abfd, enum
+          bfd_architecture arch, unsigned long mach);
+     Set the architecture and machine type in BFD ABFD to ARCH and MACH.
+     Find the correct pointer to a structure and insert it into the
+     'arch_info' pointer.
 
 2.13.2.8 'bfd_get_arch'
 .......................
 
-*Synopsis*
-     enum bfd_architecture bfd_get_arch (const bfd *abfd);
-   *Description*
-Return the enumerated type which describes the BFD ABFD's architecture.
+ -- Function: enum bfd_architecture bfd_get_arch (const bfd *abfd);
+     Return the enumerated type which describes the BFD ABFD's
+     architecture.
 
 2.13.2.9 'bfd_get_mach'
 .......................
 
-*Synopsis*
-     unsigned long bfd_get_mach (const bfd *abfd);
-   *Description*
-Return the long type which describes the BFD ABFD's machine.
+ -- Function: unsigned long bfd_get_mach (const bfd *abfd);
+     Return the long type which describes the BFD ABFD's machine.
 
 2.13.2.10 'bfd_arch_bits_per_byte'
 ..................................
 
-*Synopsis*
-     unsigned int bfd_arch_bits_per_byte (const bfd *abfd);
-   *Description*
-Return the number of bits in one of the BFD ABFD's architecture's bytes.
+ -- Function: unsigned int bfd_arch_bits_per_byte (const bfd *abfd);
+     Return the number of bits in one of the BFD ABFD's architecture's
+     bytes.
 
 2.13.2.11 'bfd_arch_bits_per_address'
 .....................................
 
-*Synopsis*
-     unsigned int bfd_arch_bits_per_address (const bfd *abfd);
-   *Description*
-Return the number of bits in one of the BFD ABFD's architecture's
-addresses.
+ -- Function: unsigned int bfd_arch_bits_per_address (const bfd *abfd);
+     Return the number of bits in one of the BFD ABFD's architecture's
+     addresses.
 
 2.13.2.12 'bfd_default_compatible'
 ..................................
 
-*Synopsis*
-     const bfd_arch_info_type *bfd_default_compatible
-        (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
-   *Description*
-The default function for testing for compatibility.
+ -- Function: const bfd_arch_info_type *bfd_default_compatible (const
+          bfd_arch_info_type *a, const bfd_arch_info_type *b);
+     The default function for testing for compatibility.
 
 2.13.2.13 'bfd_default_scan'
 ............................
 
-*Synopsis*
-     bfd_boolean bfd_default_scan
-        (const struct bfd_arch_info *info, const char *string);
-   *Description*
-The default function for working out whether this is an architecture hit
-and a machine hit.
+ -- Function: bool bfd_default_scan (const struct bfd_arch_info *info,
+          const char *string);
+     The default function for working out whether this is an
+     architecture hit and a machine hit.
 
 2.13.2.14 'bfd_get_arch_info'
 .............................
 
-*Synopsis*
-     const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
-   *Description*
-Return the architecture info struct in ABFD.
+ -- Function: const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
+     Return the architecture info struct in ABFD.
 
 2.13.2.15 'bfd_lookup_arch'
 ...........................
 
-*Synopsis*
-     const bfd_arch_info_type *bfd_lookup_arch
-        (enum bfd_architecture arch, unsigned long machine);
-   *Description*
-Look for the architecture info structure which matches the arguments
-ARCH and MACHINE.  A machine of 0 matches the machine/architecture
-structure which marks itself as the default.
+ -- Function: const bfd_arch_info_type *bfd_lookup_arch (enum
+          bfd_architecture arch, unsigned long machine);
+     Look for the architecture info structure which matches the
+     arguments ARCH and MACHINE.  A machine of 0 matches the
+     machine/architecture structure which marks itself as the default.
 
 2.13.2.16 'bfd_printable_arch_mach'
 ...................................
 
-*Synopsis*
-     const char *bfd_printable_arch_mach
-        (enum bfd_architecture arch, unsigned long machine);
-   *Description*
-Return a printable string representing the architecture and machine
-type.
+ -- Function: const char *bfd_printable_arch_mach (enum bfd_architecture
+          arch, unsigned long machine);
+     Return a printable string representing the architecture and machine
+     type.
 
-   This routine is depreciated.
+     This routine is depreciated.
 
 2.13.2.17 'bfd_octets_per_byte'
 ...............................
 
-*Synopsis*
-     unsigned int bfd_octets_per_byte (const bfd *abfd,
-         const asection *sec);
-   *Description*
-Return the number of octets (8-bit quantities) per target byte (minimum
-addressable unit).  In most cases, this will be one, but some DSP
-targets have 16, 32, or even 48 bits per byte.
+ -- Function: unsigned int bfd_octets_per_byte (const bfd *abfd, const
+          asection *sec);
+     Return the number of octets (8-bit quantities) per target byte
+     (minimum addressable unit).  In most cases, this will be one, but
+     some DSP targets have 16, 32, or even 48 bits per byte.
 
 2.13.2.18 'bfd_arch_mach_octets_per_byte'
 .........................................
 
-*Synopsis*
-     unsigned int bfd_arch_mach_octets_per_byte
-        (enum bfd_architecture arch, unsigned long machine);
-   *Description*
-See bfd_octets_per_byte.
+ -- Function: unsigned int bfd_arch_mach_octets_per_byte (enum
+          bfd_architecture arch, unsigned long machine);
+     See bfd_octets_per_byte.
 
-   This routine is provided for those cases where a bfd * is not
-available
+     This routine is provided for those cases where a bfd * is not
+     available
 
 2.13.2.19 'bfd_arch_default_fill'
 .................................
 
-*Synopsis*
-     void *bfd_arch_default_fill (bfd_size_type count,
-         bfd_boolean is_bigendian,
-         bfd_boolean code);
-   *Description*
-Allocate via bfd_malloc and return a fill buffer of size COUNT. If
-IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
-TRUE, the buffer contains code.
+ -- Function: void *bfd_arch_default_fill (bfd_size_type count, bool
+          is_bigendian, bool code);
+     Allocate via bfd_malloc and return a fill buffer of size COUNT. If
+     IS_BIGENDIAN is TRUE, the order of bytes is big endian.  If CODE is
+     TRUE, the buffer contains code.
 
 
 File: bfd.info,  Node: Opening and Closing,  Next: Internal,  Prev: Architectures,  Up: BFD front end
 
-     /* Set to N to open the next N BFDs using an alternate id space.  */
-     extern unsigned int bfd_use_reserved_id;
-
 2.14 Opening and closing BFDs
 =============================
 
 2.14.1 Functions for opening and closing
 ----------------------------------------
 
-2.14.1.1 'bfd_fopen'
-....................
-
-*Synopsis*
-     bfd *bfd_fopen (const char *filename, const char *target,
-         const char *mode, int fd);
-   *Description*
-Open the file FILENAME with the target TARGET.  Return a pointer to the
-created BFD. If FD is not -1, then 'fdopen' is used to open the file;
-otherwise, 'fopen' is used.  MODE is passed directly to 'fopen' or
-'fdopen'.
+2.14.1.1 '_bfd_new_bfd'
+.......................
 
-   Calls 'bfd_find_target', so TARGET is interpreted as by that
-function.
+ -- Function: bfd *_bfd_new_bfd (void);
+     Return a new BFD. All BFD's are allocated through this routine.
 
-   The new BFD is marked as cacheable iff FD is -1.
+2.14.1.2 '_bfd_new_bfd_contained_in'
+....................................
 
-   If 'NULL' is returned then an error has occured.  Possible errors are
-'bfd_error_no_memory', 'bfd_error_invalid_target' or 'system_call'
-error.
+ -- Function: bfd *_bfd_new_bfd_contained_in (bfd *);
+     Allocate a new BFD as a member of archive OBFD.
 
-   On error, FD is always closed.
+2.14.1.3 '_bfd_free_cached_info'
+................................
 
-   A copy of the FILENAME argument is stored in the newly created BFD.
-It can be accessed via the bfd_get_filename() macro.
+ -- Function: bool _bfd_free_cached_info (bfd *);
+     Free objalloc memory.
 
-2.14.1.2 'bfd_openr'
+2.14.1.4 'bfd_fopen'
 ....................
 
-*Synopsis*
-     bfd *bfd_openr (const char *filename, const char *target);
-   *Description*
-Open the file FILENAME (using 'fopen') with the target TARGET.  Return a
-pointer to the created BFD.
+ -- Function: bfd *bfd_fopen (const char *filename, const char *target,
+          const char *mode, int fd);
+     Open the file FILENAME with the target TARGET.  Return a pointer to
+     the created BFD. If FD is not -1, then 'fdopen' is used to open the
+     file; otherwise, 'fopen' is used.  MODE is passed directly to
+     'fopen' or 'fdopen'.
 
-   Calls 'bfd_find_target', so TARGET is interpreted as by that
-function.
+     Calls 'bfd_find_target', so TARGET is interpreted as by that
+     function.
 
-   If 'NULL' is returned then an error has occured.  Possible errors are
-'bfd_error_no_memory', 'bfd_error_invalid_target' or 'system_call'
-error.
+     The new BFD is marked as cacheable iff FD is -1.
 
-   A copy of the FILENAME argument is stored in the newly created BFD.
-It can be accessed via the bfd_get_filename() macro.
+     If 'NULL' is returned then an error has occured.  Possible errors
+     are 'bfd_error_no_memory', 'bfd_error_invalid_target' or
+     'system_call' error.
 
-2.14.1.3 'bfd_fdopenr'
-......................
+     On error, FD is always closed.
 
-*Synopsis*
-     bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
-   *Description*
-'bfd_fdopenr' is to 'bfd_fopenr' much like 'fdopen' is to 'fopen'.  It
-opens a BFD on a file already described by the FD supplied.
-
-   When the file is later 'bfd_close'd, the file descriptor will be
-closed.  If the caller desires that this file descriptor be cached by
-BFD (opened as needed, closed as needed to free descriptors for other
-opens), with the supplied FD used as an initial file descriptor (but
-subject to closure at any time), call bfd_set_cacheable(bfd, 1) on the
-returned BFD. The default is to assume no caching; the file descriptor
-will remain open until 'bfd_close', and will not be affected by BFD
-operations on other files.
-
-   Possible errors are 'bfd_error_no_memory', 'bfd_error_invalid_target'
-and 'bfd_error_system_call'.
+     A copy of the FILENAME argument is stored in the newly created BFD.
+     It can be accessed via the bfd_get_filename() macro.
 
-   On error, FD is closed.
+2.14.1.5 'bfd_openr'
+....................
 
-   A copy of the FILENAME argument is stored in the newly created BFD.
-It can be accessed via the bfd_get_filename() macro.
+ -- Function: bfd *bfd_openr (const char *filename, const char *target);
+     Open the file FILENAME (using 'fopen') with the target TARGET.
+     Return a pointer to the created BFD.
 
-2.14.1.4 'bfd_openstreamr'
-..........................
+     Calls 'bfd_find_target', so TARGET is interpreted as by that
+     function.
 
-*Synopsis*
-     bfd *bfd_openstreamr (const char * filename, const char * target,
-         void * stream);
-   *Description*
-Open a BFD for read access on an existing stdio stream.  When the BFD is
-passed to 'bfd_close', the stream will be closed.
+     If 'NULL' is returned then an error has occured.  Possible errors
+     are 'bfd_error_no_memory', 'bfd_error_invalid_target' or
+     'system_call' error.
 
-   A copy of the FILENAME argument is stored in the newly created BFD.
-It can be accessed via the bfd_get_filename() macro.
+     A copy of the FILENAME argument is stored in the newly created BFD.
+     It can be accessed via the bfd_get_filename() macro.
 
-2.14.1.5 'bfd_openr_iovec'
-..........................
+2.14.1.6 'bfd_fdopenr'
+......................
 
-*Synopsis*
-     bfd *bfd_openr_iovec (const char *filename, const char *target,
-         void *(*open_func) (struct bfd *nbfd,
-         void *open_closure),
-         void *open_closure,
-         file_ptr (*pread_func) (struct bfd *nbfd,
-         void *stream,
-         void *buf,
-         file_ptr nbytes,
-         file_ptr offset),
-         int (*close_func) (struct bfd *nbfd,
-         void *stream),
-         int (*stat_func) (struct bfd *abfd,
-         void *stream,
-         struct stat *sb));
-   *Description*
-Create and return a BFD backed by a read-only STREAM.  The STREAM is
-created using OPEN_FUNC, accessed using PREAD_FUNC and destroyed using
-CLOSE_FUNC.
+ -- Function: bfd *bfd_fdopenr (const char *filename, const char
+          *target, int fd);
+     'bfd_fdopenr' is to 'bfd_fopenr' much like 'fdopen' is to 'fopen'.
+     It opens a BFD on a file already described by the FD supplied.
+
+     When the file is later 'bfd_close'd, the file descriptor will be
+     closed.  If the caller desires that this file descriptor be cached
+     by BFD (opened as needed, closed as needed to free descriptors for
+     other opens), with the supplied FD used as an initial file
+     descriptor (but subject to closure at any time), call
+     bfd_set_cacheable(bfd, 1) on the returned BFD. The default is to
+     assume no caching; the file descriptor will remain open until
+     'bfd_close', and will not be affected by BFD operations on other
+     files.
 
-   Calls 'bfd_find_target', so TARGET is interpreted as by that
-function.
+     Possible errors are 'bfd_error_no_memory',
+     'bfd_error_invalid_target' and 'bfd_error_system_call'.
 
-   Calls OPEN_FUNC (which can call 'bfd_zalloc' and 'bfd_get_filename')
-to obtain the read-only stream backing the BFD. OPEN_FUNC either
-succeeds returning the non-'NULL' STREAM, or fails returning 'NULL'
-(setting 'bfd_error').
-
-   Calls PREAD_FUNC to request NBYTES of data from STREAM starting at
-OFFSET (e.g., via a call to 'bfd_read').  PREAD_FUNC either succeeds
-returning the number of bytes read (which can be less than NBYTES when
-end-of-file), or fails returning -1 (setting 'bfd_error').
-
-   Calls CLOSE_FUNC when the BFD is later closed using 'bfd_close'.
-CLOSE_FUNC either succeeds returning 0, or fails returning -1 (setting
-'bfd_error').
-
-   Calls STAT_FUNC to fill in a stat structure for bfd_stat,
-bfd_get_size, and bfd_get_mtime calls.  STAT_FUNC returns 0 on success,
-or returns -1 on failure (setting 'bfd_error').
-
-   If 'bfd_openr_iovec' returns 'NULL' then an error has occurred.
-Possible errors are 'bfd_error_no_memory', 'bfd_error_invalid_target'
-and 'bfd_error_system_call'.
+     On error, FD is closed.
 
-   A copy of the FILENAME argument is stored in the newly created BFD.
-It can be accessed via the bfd_get_filename() macro.
+     A copy of the FILENAME argument is stored in the newly created BFD.
+     It can be accessed via the bfd_get_filename() macro.
 
-2.14.1.6 'bfd_openw'
-....................
+2.14.1.7 'bfd_fdopenw'
+......................
 
-*Synopsis*
-     bfd *bfd_openw (const char *filename, const char *target);
-   *Description*
-Create a BFD, associated with file FILENAME, using the file format
-TARGET, and return a pointer to it.
+ -- Function: bfd *bfd_fdopenw (const char *filename, const char
+          *target, int fd);
+     'bfd_fdopenw' is exactly like 'bfd_fdopenr' with the exception that
+     the resulting BFD is suitable for output.
 
-   Possible errors are 'bfd_error_system_call', 'bfd_error_no_memory',
-'bfd_error_invalid_target'.
+2.14.1.8 'bfd_openstreamr'
+..........................
 
-   A copy of the FILENAME argument is stored in the newly created BFD.
-It can be accessed via the bfd_get_filename() macro.
+ -- Function: bfd *bfd_openstreamr (const char * filename, const char *
+          target, void * stream);
+     Open a BFD for read access on an existing stdio stream.  When the
+     BFD is passed to 'bfd_close', the stream will be closed.
 
-2.14.1.7 'bfd_close'
-....................
+     A copy of the FILENAME argument is stored in the newly created BFD.
+     It can be accessed via the bfd_get_filename() macro.
+
+2.14.1.9 'bfd_openr_iovec'
+..........................
 
-*Synopsis*
-     bfd_boolean bfd_close (bfd *abfd);
-   *Description*
-Close a BFD. If the BFD was open for writing, then pending operations
-are completed and the file written out and closed.  If the created file
-is executable, then 'chmod' is called to mark it as such.
-
-   All memory attached to the BFD is released.
+ -- Function: bfd *bfd_openr_iovec (const char *filename, const char
+          *target, void *(*open_func) (struct bfd *nbfd, void
+          *open_closure), void *open_closure, file_ptr (*pread_func)
+          (struct bfd *nbfd, void *stream, void *buf, file_ptr nbytes,
+          file_ptr offset), int (*close_func) (struct bfd *nbfd, void
+          *stream), int (*stat_func) (struct bfd *abfd, void *stream,
+          struct stat *sb));
+     Create and return a BFD backed by a read-only STREAM.  The STREAM
+     is created using OPEN_FUNC, accessed using PREAD_FUNC and destroyed
+     using CLOSE_FUNC.
+
+     Calls 'bfd_find_target', so TARGET is interpreted as by that
+     function.
+
+     Calls OPEN_FUNC (which can call 'bfd_zalloc' and
+     'bfd_get_filename') to obtain the read-only stream backing the BFD.
+     OPEN_FUNC either succeeds returning the non-'NULL' STREAM, or fails
+     returning 'NULL' (setting 'bfd_error').
+
+     Calls PREAD_FUNC to request NBYTES of data from STREAM starting at
+     OFFSET (e.g., via a call to 'bfd_read').  PREAD_FUNC either
+     succeeds returning the number of bytes read (which can be less than
+     NBYTES when end-of-file), or fails returning -1 (setting
+     'bfd_error').
+
+     Calls CLOSE_FUNC when the BFD is later closed using 'bfd_close'.
+     CLOSE_FUNC either succeeds returning 0, or fails returning -1
+     (setting 'bfd_error').
+
+     Calls STAT_FUNC to fill in a stat structure for bfd_stat,
+     bfd_get_size, and bfd_get_mtime calls.  STAT_FUNC returns 0 on
+     success, or returns -1 on failure (setting 'bfd_error').
+
+     If 'bfd_openr_iovec' returns 'NULL' then an error has occurred.
+     Possible errors are 'bfd_error_no_memory',
+     'bfd_error_invalid_target' and 'bfd_error_system_call'.
 
-   The file descriptor associated with the BFD is closed (even if it was
-passed in to BFD by 'bfd_fdopenr').
+     A copy of the FILENAME argument is stored in the newly created BFD.
+     It can be accessed via the bfd_get_filename() macro.
 
-   *Returns*
-'TRUE' is returned if all is ok, otherwise 'FALSE'.
+2.14.1.10 'bfd_openw'
+.....................
 
-2.14.1.8 'bfd_close_all_done'
-.............................
+ -- Function: bfd *bfd_openw (const char *filename, const char *target);
+     Create a BFD, associated with file FILENAME, using the file format
+     TARGET, and return a pointer to it.
 
-*Synopsis*
-     bfd_boolean bfd_close_all_done (bfd *);
-   *Description*
-Close a BFD. Differs from 'bfd_close' since it does not complete any
-pending operations.  This routine would be used if the application had
-just used BFD for swapping and didn't want to use any of the writing
-code.
+     Possible errors are 'bfd_error_system_call', 'bfd_error_no_memory',
+     'bfd_error_invalid_target'.
 
-   If the created file is executable, then 'chmod' is called to mark it
-as such.
+     A copy of the FILENAME argument is stored in the newly created BFD.
+     It can be accessed via the bfd_get_filename() macro.
 
-   All memory attached to the BFD is released.
+2.14.1.11 'bfd_elf_bfd_from_remote_memory'
+..........................................
 
-   *Returns*
-'TRUE' is returned if all is ok, otherwise 'FALSE'.
+ -- Function: bfd *bfd_elf_bfd_from_remote_memory (bfd *templ, bfd_vma
+          ehdr_vma, bfd_size_type size, bfd_vma *loadbasep, int
+          (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
+          bfd_size_type len));
+     Create a new BFD as if by bfd_openr.  Rather than opening a file,
+     reconstruct an ELF file by reading the segments out of remote
+     memory based on the ELF file header at EHDR_VMA and the ELF program
+     headers it points to.  If non-zero, SIZE is the known extent of the
+     object.  If not null, *LOADBASEP is filled in with the difference
+     between the VMAs from which the segments were read, and the VMAs
+     the file headers (and hence BFD's idea of each section's VMA) put
+     them at.
+
+     The function TARGET_READ_MEMORY is called to copy LEN bytes from
+     the remote memory at target address VMA into the local buffer at
+     MYADDR; it should return zero on success or an errno code on
+     failure.  TEMPL must be a BFD for an ELF target with the word size
+     and byte order found in the remote memory.
 
-2.14.1.9 'bfd_create'
+2.14.1.12 'bfd_close'
 .....................
 
-*Synopsis*
-     bfd *bfd_create (const char *filename, bfd *templ);
-   *Description*
-Create a new BFD in the manner of 'bfd_openw', but without opening a
-file.  The new BFD takes the target from the target used by TEMPL.  The
-format is always set to 'bfd_object'.
+ -- Function: bool bfd_close (bfd *abfd);
+     Close a BFD. If the BFD was open for writing, then pending
+     operations are completed and the file written out and closed.  If
+     the created file is executable, then 'chmod' is called to mark it
+     as such.
 
-   A copy of the FILENAME argument is stored in the newly created BFD.
-It can be accessed via the bfd_get_filename() macro.
+     All memory attached to the BFD is released.
 
-2.14.1.10 'bfd_make_writable'
-.............................
-
-*Synopsis*
-     bfd_boolean bfd_make_writable (bfd *abfd);
-   *Description*
-Takes a BFD as created by 'bfd_create' and converts it into one like as
-returned by 'bfd_openw'.  It does this by converting the BFD to
-BFD_IN_MEMORY. It's assumed that you will call 'bfd_make_readable' on
-this bfd later.
+     The file descriptor associated with the BFD is closed (even if it
+     was passed in to BFD by 'bfd_fdopenr').
 
-   *Returns*
-'TRUE' is returned if all is ok, otherwise 'FALSE'.
+     'TRUE' is returned if all is ok, otherwise 'FALSE'.
 
-2.14.1.11 'bfd_make_readable'
-.............................
+2.14.1.13 'bfd_close_all_done'
+..............................
 
-*Synopsis*
-     bfd_boolean bfd_make_readable (bfd *abfd);
-   *Description*
-Takes a BFD as created by 'bfd_create' and 'bfd_make_writable' and
-converts it into one like as returned by 'bfd_openr'.  It does this by
-writing the contents out to the memory buffer, then reversing the
-direction.
+ -- Function: bool bfd_close_all_done (bfd *);
+     Close a BFD. Differs from 'bfd_close' since it does not complete
+     any pending operations.  This routine would be used if the
+     application had just used BFD for swapping and didn't want to use
+     any of the writing code.
 
-   *Returns*
-'TRUE' is returned if all is ok, otherwise 'FALSE'.
+     If the created file is executable, then 'chmod' is called to mark
+     it as such.
 
-2.14.1.12 'bfd_alloc'
-.....................
+     All memory attached to the BFD is released.
 
-*Synopsis*
-     void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
-   *Description*
-Allocate a block of WANTED bytes of memory attached to 'abfd' and return
-a pointer to it.
+     'TRUE' is returned if all is ok, otherwise 'FALSE'.
 
-2.14.1.13 'bfd_alloc2'
+2.14.1.14 'bfd_create'
 ......................
 
-*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.
+ -- Function: bfd *bfd_create (const char *filename, bfd *templ);
+     Create a new BFD in the manner of 'bfd_openw', but without opening
+     a file.  The new BFD takes the target from the target used by
+     TEMPL.  The format is always set to 'bfd_object'.
 
-2.14.1.14 'bfd_zalloc'
-......................
+     A copy of the FILENAME argument is stored in the newly created BFD.
+     It can be accessed via the bfd_get_filename() macro.
 
-*Synopsis*
-     void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
-   *Description*
-Allocate a block of WANTED bytes of zeroed memory attached to 'abfd' and
-return a pointer to it.
+2.14.1.15 'bfd_make_writable'
+.............................
 
-2.14.1.15 'bfd_zalloc2'
-.......................
+ -- Function: bool bfd_make_writable (bfd *abfd);
+     Takes a BFD as created by 'bfd_create' and converts it into one
+     like as returned by 'bfd_openw'.  It does this by converting the
+     BFD to BFD_IN_MEMORY. It's assumed that you will call
+     'bfd_make_readable' on this bfd later.
 
-*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.
+     'TRUE' is returned if all is ok, otherwise 'FALSE'.
 
-2.14.1.16 'bfd_calc_gnu_debuglink_crc32'
-........................................
+2.14.1.16 'bfd_make_readable'
+.............................
 
-*Synopsis*
-     unsigned long bfd_calc_gnu_debuglink_crc32
-        (unsigned long crc, const unsigned char *buf, bfd_size_type len);
-   *Description*
-Computes a CRC value as used in the .gnu_debuglink section.  Advances
-the previously computed CRC value by computing and adding in the crc32
-for LEN bytes of BUF.
+ -- Function: bool bfd_make_readable (bfd *abfd);
+     Takes a BFD as created by 'bfd_create' and 'bfd_make_writable' and
+     converts it into one like as returned by 'bfd_openr'.  It does this
+     by writing the contents out to the memory buffer, then reversing
+     the direction.
 
-   *Returns*
-Return the updated CRC32 value.
+     'TRUE' is returned if all is ok, otherwise 'FALSE'.
 
-2.14.1.17 'bfd_get_debug_link_info_1'
-.....................................
+2.14.1.17 'bfd_calc_gnu_debuglink_crc32'
+........................................
 
-*Synopsis*
-     char *bfd_get_debug_link_info_1 (bfd *abfd, void *crc32_out);
-   *Description*
-Extracts the filename and CRC32 value for any separate debug information
-file associated with ABFD.
-
-   The CRC32_OUT parameter is an untyped pointer because this routine is
-used as a 'get_func_type' function, but it is expected to be an unsigned
-long pointer.
-
-   *Returns*
-The filename of the associated debug information file, or NULL if there
-is no such file.  If the filename was found then the contents of
-CRC32_OUT are updated to hold the corresponding CRC32 value for the
-file.
+ -- Function: uint32_t bfd_calc_gnu_debuglink_crc32 (uint32_t crc, const
+          bfd_byte *buf, bfd_size_type len);
+     Computes a CRC value as used in the .gnu_debuglink section.
+     Advances the previously computed CRC value by computing and adding
+     in the crc32 for LEN bytes of BUF.
 
-   The returned filename is allocated with 'malloc'; freeing it is the
-responsibility of the caller.
+     Return the updated CRC32 value.
 
 2.14.1.18 'bfd_get_debug_link_info'
 ...................................
 
-*Synopsis*
-     char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
-   *Description*
-Extracts the filename and CRC32 value for any separate debug information
-file associated with ABFD.
-
-   *Returns*
-The filename of the associated debug information file, or NULL if there
-is no such file.  If the filename was found then the contents of
-CRC32_OUT are updated to hold the corresponding CRC32 value for the
-file.
+ -- Function: char *bfd_get_debug_link_info (bfd *abfd, uint32_t
+          *crc32_out);
+     Extracts the filename and CRC32 value for any separate debug
+     information file associated with ABFD.
+
+     Returns the filename of the associated debug information file, or
+     NULL if there is no such file.  If the filename was found then the
+     contents of CRC32_OUT are updated to hold the corresponding CRC32
+     value for the file.
 
-   The returned filename is allocated with 'malloc'; freeing it is the
-responsibility of the caller.
+     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'
 .......................................
 
-*Synopsis*
-     char *bfd_get_alt_debug_link_info (bfd * abfd,
-         bfd_size_type *buildid_len,
-         bfd_byte **buildid_out);
-   *Description*
-Fetch the filename and BuildID value for any alternate debuginfo
-associated with ABFD.  Return NULL if no such info found, otherwise
-return filename and update BUILDID_LEN and BUILDID_OUT.  The returned
-filename and build_id are allocated with 'malloc'; freeing them is the
-responsibility of the caller.
-
-2.14.1.20 'separate_debug_file_exists'
-......................................
+ -- Function: char *bfd_get_alt_debug_link_info (bfd * abfd,
+          bfd_size_type *buildid_len, bfd_byte **buildid_out);
+     Fetch the filename and BuildID value for any alternate debuginfo
+     associated with ABFD.  Return NULL if no such info found, otherwise
+     return filename and update BUILDID_LEN and BUILDID_OUT.  The
+     returned filename and build_id are allocated with 'malloc'; freeing
+     them is the responsibility of the caller.
 
-*Synopsis*
-     bfd_boolean separate_debug_file_exists
-        (char *name, void *crc32_p);
-   *Description*
-Checks to see if NAME is a file and if its contents match CRC32, which
-is a pointer to an 'unsigned long' containing a CRC32.
-
-   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'
-..........................................
-
-*Synopsis*
-     bfd_boolean separate_alt_debug_file_exists
-        (char *name, void *unused);
-   *Description*
-Checks to see if NAME is a file.
-
-2.14.1.22 'find_separate_debug_file'
+2.14.1.20 'bfd_follow_gnu_debuglink'
 ....................................
 
-*Synopsis*
-     char *find_separate_debug_file
-        (bfd *abfd, const char *dir, bfd_boolean include_dirs,
-         get_func_type get, check_func_type check, void *data);
-   *Description*
-Searches for a debug information file corresponding to ABFD.
-
-   The name of the separate debug info file is returned by the GET
-function.  This function scans various fixed locations in the
-filesystem, including the file tree rooted at DIR.  If the INCLUDE_DIRS
-parameter is true then the directory components of ABFD's filename will
-be included in the searched locations.
-
-   DATA is passed unmodified to the GET and CHECK functions.  It is
-generally used to implement build-id-like matching in the callback
-functions.
-
-   *Returns*
-Returns the filename of the first file to be found which receives a TRUE
-result from the CHECK function.  Returns NULL if no valid file could be
-found.
+ -- Function: char *bfd_follow_gnu_debuglink (bfd *abfd, const char
+          *dir);
+     Takes a BFD and searches it for a .gnu_debuglink section.  If this
+     section is found, it examines the section for the name and checksum
+     of a '.debug' file containing auxiliary debugging information.  It
+     then searches the filesystem for this .debug file in some standard
+     locations, including the directory tree rooted at DIR, and if found
+     returns the full filename.
+
+     If DIR is NULL, the search will take place starting at the current
+     directory.
+
+     Returns 'NULL' on any errors or failure to locate the .debug file,
+     otherwise a pointer to a heap-allocated string containing the
+     filename.  The caller is responsible for freeing this string.
 
-2.14.1.23 'bfd_follow_gnu_debuglink'
-....................................
-
-*Synopsis*
-     char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
-   *Description*
-Takes a BFD and searches it for a .gnu_debuglink section.  If this
-section is found, it examines the section for the name and checksum of a
-'.debug' file containing auxiliary debugging information.  It then
-searches the filesystem for this .debug file in some standard locations,
-including the directory tree rooted at DIR, and if found returns the
-full filename.
-
-   If DIR is NULL, the search will take place starting at the current
-directory.
-
-   *Returns*
-'NULL' on any errors or failure to locate the .debug file, otherwise a
-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.21 'bfd_follow_gnu_debugaltlink'
 .......................................
 
-*Synopsis*
-     char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir);
-   *Description*
-Takes a BFD and searches it for a .gnu_debugaltlink section.  If this
-section is found, it examines the section for the name of a file
-containing auxiliary debugging information.  It then searches the
-filesystem for this file in a set of standard locations, including the
-directory tree rooted at DIR, and if found returns the full filename.
-
-   If DIR is NULL, the search will take place starting at the current
-directory.
-
-   *Returns*
-'NULL' on any errors or failure to locate the debug file, otherwise a
-pointer to a heap-allocated string containing the filename.  The caller
-is responsible for freeing this string.
+ -- Function: char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char
+          *dir);
+     Takes a BFD and searches it for a .gnu_debugaltlink section.  If
+     this section is found, it examines the section for the name of a
+     file containing auxiliary debugging information.  It then searches
+     the filesystem for this file in a set of standard locations,
+     including the directory tree rooted at DIR, and if found returns
+     the full filename.
+
+     If DIR is NULL, the search will take place starting at the current
+     directory.
+
+     Returns 'NULL' on any errors or failure to locate the debug file,
+     otherwise a 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.22 'bfd_create_gnu_debuglink_section'
 ............................................
 
-*Synopsis*
-     struct bfd_section *bfd_create_gnu_debuglink_section
-        (bfd *abfd, const char *filename);
-   *Description*
-Takes a BFD and adds a .gnu_debuglink section to it.  The section is
-sized to be big enough to contain a link to the specified FILENAME.
-
-   *Returns*
-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'
-.............................................
+ -- Function: struct bfd_section *bfd_create_gnu_debuglink_section (bfd
+          *abfd, const char *filename);
+     Takes a BFD and adds a .gnu_debuglink section to it.  The section
+     is sized to be big enough to contain a link to the specified
+     FILENAME.
 
-*Synopsis*
-     bfd_boolean bfd_fill_in_gnu_debuglink_section
-        (bfd *abfd, struct bfd_section *sect, const char *filename);
-   *Description*
-Takes a BFD and containing a .gnu_debuglink section SECT and fills in
-the contents of the section to contain a link to the specified FILENAME.
-The filename should be relative to the current directory.
-
-   *Returns*
-'TRUE' is returned if all is ok.  Otherwise 'FALSE' is returned and
-bfd_error is set.
+     A pointer to the new section is returned if all is ok.  Otherwise
+     'NULL' is returned and bfd_error is set.
 
-2.14.1.27 'get_build_id'
-........................
-
-*Synopsis*
-     struct bfd_build_id * get_build_id (bfd *abfd);
-   *Description*
-Finds the build-id associated with ABFD.  If the build-id is extracted
-from the note section then a build-id structure is built for it, using
-memory allocated to ABFD, and this is then attached to the ABFD.
-
-   *Returns*
-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'
-.............................
-
-*Synopsis*
-     char * get_build_id_name (bfd *abfd, void *build_id_out_p)
-   *Description*
-Searches ABFD for a build-id, and then constructs a pathname from it.
-The path is computed as .build-id/NN/NN+NN.debug where NNNN+NN is the
-build-id value as a hexadecimal string.
-
-   *Returns*
-Returns the constructed filename or NULL upon error.  It is the caller's
-responsibility to free the memory used to hold the filename.  If a
-filename is returned then the BUILD_ID_OUT_P parameter (which points to
-a 'struct bfd_build_id' pointer) is set to a pointer to the build_id
-structure.
+2.14.1.23 'bfd_fill_in_gnu_debuglink_section'
+.............................................
 
-2.14.1.29 'check_build_id_file'
-...............................
+ -- Function: bool bfd_fill_in_gnu_debuglink_section (bfd *abfd, struct
+          bfd_section *sect, const char *filename);
+     Takes a BFD and containing a .gnu_debuglink section SECT and fills
+     in the contents of the section to contain a link to the specified
+     FILENAME.  The filename should be absolute or relative to the
+     current directory.
 
-*Synopsis*
-     bfd_boolean check_build_id_file (char *name, void *buildid_p);
-   *Description*
-Checks to see if NAME is a readable file and if its build-id matches
-BUILDID.
-
-   *Returns*
-Returns TRUE if the file exists, is readable, and contains a build-id
-which matches the build-id pointed at by BUILD_ID_P (which is really a
-'struct bfd_build_id **').
+     'TRUE' is returned if all is ok.  Otherwise 'FALSE' is returned and
+     bfd_error is set.
 
-2.14.1.30 'bfd_follow_build_id_debuglink'
+2.14.1.24 'bfd_follow_build_id_debuglink'
 .........................................
 
-*Synopsis*
-     char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
-   *Description*
-Takes ABFD and searches it for a .note.gnu.build-id section.  If this
-section is found, it extracts the value of the NT_GNU_BUILD_ID note,
-which should be a hexadecimal value NNNN+NN (for 32+ hex digits).  It
-then searches the filesystem for a file named .BUILD-ID/NN/NN+NN.DEBUG
-in a set of standard locations, including the directory tree rooted at
-DIR.  The filename of the first matching file to be found is returned.
-A matching file should contain a .note.gnu.build-id section with the
-same NNNN+NN note as ABFD, although this check is currently not
-implemented.
-
-   If DIR is NULL, the search will take place starting at the current
-directory.
-
-   *Returns*
-'NULL' on any errors or failure to locate the debug file, otherwise a
-pointer to a heap-allocated string containing the filename.  The caller
-is responsible for freeing this string.
+ -- Function: char *bfd_follow_build_id_debuglink (bfd *abfd, const char
+          *dir);
+     Takes ABFD and searches it for a .note.gnu.build-id section.  If
+     this section is found, it extracts the value of the NT_GNU_BUILD_ID
+     note, which should be a hexadecimal value NNNN+NN (for 32+ hex
+     digits).  It then searches the filesystem for a file named
+     .BUILD-ID/NN/NN+NN.DEBUG in a set of standard locations, including
+     the directory tree rooted at DIR.  The filename of the first
+     matching file to be found is returned.  A matching file should
+     contain a .note.gnu.build-id section with the same NNNN+NN note as
+     ABFD, although this check is currently not implemented.
+
+     If DIR is NULL, the search will take place starting at the current
+     directory.
+
+     Returns 'NULL' on any errors or failure to locate the debug file,
+     otherwise a 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.25 'bfd_set_filename'
 ............................
 
-*Synopsis*
-     void bfd_set_filename (bfd *abfd, 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.
+ -- Function: const char *bfd_set_filename (bfd *abfd, const char
+          *filename);
+     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.
+
+2.14.1.26 'bfd_extract_object_only_section'
+...........................................
+
+ -- Function: const char *bfd_extract_object_only_section (bfd *abfd);
+     Takes a ABFD and extract the .gnu_object_only section into a
+     temporary file.
 
 
 File: bfd.info,  Node: Internal,  Next: File Caching,  Prev: Opening and Closing,  Up: BFD front end
@@ -9282,26 +8818,103 @@ File: bfd.info,  Node: Internal,  Next:
 2.15.1 Internal functions
 -------------------------
 
-*Description*
 These routines are used within BFD. They are not intended for export,
 but are documented here for completeness.
 
-2.15.1.1 'bfd_write_bigendian_4byte_int'
+2.15.1.1 'bfd_malloc'
+.....................
+
+ -- Function: void *bfd_malloc (bfd_size_type *size*);
+     Returns a pointer to an allocated block of memory that is at least
+     SIZE bytes long.  If SIZE is 0 then it will be treated as if it
+     were 1.  If SIZE is too big then NULL will be returned.  Returns
+     NULL upon error and sets bfd_error.
+
+2.15.1.2 'bfd_realloc'
+......................
+
+ -- Function: void *bfd_realloc (void **mem*, bfd_size_type *size*);
+     Returns a pointer to an allocated block of memory that is at least
+     SIZE bytes long.  If SIZE is 0 then it will be treated as if it
+     were 1.  If SIZE is too big then NULL will be returned.  If MEM is
+     not NULL then it must point to an allocated block of memory.  If
+     this block is large enough then MEM may be used as the return value
+     for this function, but this is not guaranteed.
+
+     If MEM is not returned then the first N bytes in the returned block
+     will be identical to the first N bytes in region pointed to by MEM,
+     where N is the lessor of SIZE and the length of the region of
+     memory currently addressed by MEM.
+
+     Returns NULL upon error and sets bfd_error.
+
+2.15.1.3 'bfd_realloc_or_free'
+..............................
+
+ -- Function: void *bfd_realloc_or_free (void **mem*, bfd_size_type
+          *size*);
+     Returns a pointer to an allocated block of memory that is at least
+     SIZE bytes long.  If SIZE is 0 then no memory will be allocated,
+     MEM will be freed, and NULL will be returned.  This will not cause
+     bfd_error to be set.
+
+     If SIZE is too big then NULL will be returned and bfd_error will be
+     set.  If MEM is not NULL then it must point to an allocated block
+     of memory.  If this block is large enough then MEM may be used as
+     the return value for this function, but this is not guaranteed.
+
+     If MEM is not returned then the first N bytes in the returned block
+     will be identical to the first N bytes in region pointed to by MEM,
+     where N is the lessor of SIZE and the length of the region of
+     memory currently addressed by MEM.
+
+2.15.1.4 'bfd_zmalloc'
+......................
+
+ -- Function: void *bfd_zmalloc (bfd_size_type *size*);
+     Returns a pointer to an allocated block of memory that is at least
+     SIZE bytes long.  If SIZE is 0 then it will be treated as if it
+     were 1.  If SIZE is too big then NULL will be returned.  Returns
+     NULL upon error and sets bfd_error.
+
+     If NULL is not returned then the allocated block of memory will
+     have been cleared.
+
+2.15.1.5 'bfd_alloc'
+....................
+
+ -- Function: void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
+     Allocate a block of WANTED bytes of memory attached to 'abfd' and
+     return a pointer to it.
+
+2.15.1.6 'bfd_zalloc'
+.....................
+
+ -- Function: void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
+     Allocate a block of WANTED bytes of zeroed memory attached to
+     'abfd' and return a pointer to it.
+
+2.15.1.7 'bfd_release'
+......................
+
+ -- Function: void bfd_release (bfd *, void *);
+     Free a block allocated for a BFD. Note: Also frees all more
+     recently allocated blocks!
+
+2.15.1.8 'bfd_write_bigendian_4byte_int'
 ........................................
 
-*Synopsis*
-     bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
-   *Description*
-Write a 4 byte integer I to the output BFD ABFD, in big endian order
-regardless of what else is going on.  This is useful in archives.
+ -- Function: bool bfd_write_bigendian_4byte_int (bfd *, unsigned int);
+     Write a 4 byte integer I to the output BFD ABFD, in big endian
+     order regardless of what else is going on.  This is useful in
+     archives.
 
-2.15.1.2 'bfd_put_size'
+2.15.1.9 'bfd_put_size'
 .......................
 
-2.15.1.3 'bfd_get_size'
-.......................
+2.15.1.10 'bfd_get_size'
+........................
 
-*Description*
 These macros as used for reading and writing raw data in sections; each
 access (except for bytes) is vectored through the target format of the
 BFD and mangled accordingly.  The mangling performs any necessary endian
@@ -9321,13 +8934,13 @@ less than a 'bfd_vma', use 'gcc -Wconver
      /* Byte swapping macros for user section data.  */
 
      #define bfd_put_8(abfd, val, ptr) \
-       ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
+       ((void) (*((bfd_byte *) (ptr)) = (val) & 0xff))
      #define bfd_put_signed_8 \
        bfd_put_8
      #define bfd_get_8(abfd, ptr) \
-       ((bfd_vma) *(const unsigned char *) (ptr) & 0xff)
+       ((bfd_vma) *(const bfd_byte *) (ptr) & 0xff)
      #define bfd_get_signed_8(abfd, ptr) \
-       ((((bfd_signed_vma) *(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
+       ((((bfd_signed_vma) *(const bfd_byte *) (ptr) & 0xff) ^ 0x80) - 0x80)
 
      #define bfd_put_16(abfd, val, ptr) \
        BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
@@ -9371,7 +8984,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)             \
@@ -9385,10 +8998,9 @@ less than a 'bfd_vma', use 'gcc -Wconver
         : (abort (), (void) 0))
 
 
-2.15.1.4 'bfd_h_put_size'
-.........................
+2.15.1.11 'bfd_h_put_size'
+..........................
 
-*Description*
 These macros have the same function as their 'bfd_get_x' brethren,
 except that they are used for removing information for the header
 records of object files.  Believe it or not, some object files keep
@@ -9454,14 +9066,36 @@ order.
 
 
 
-2.15.1.5 'bfd_log2'
-...................
+2.15.1.12 'Byte swapping routines.'
+...................................
 
-*Synopsis*
-     unsigned int bfd_log2 (bfd_vma x);
-   *Description*
-Return the log base 2 of the value supplied, rounded up.  E.g., an X of
-1025 returns 11.  A X of 0 returns 0.
+ -- Function: uint64_t bfd_getb64 (const void *); uint64_t bfd_getl64
+          (const void *); int64_t bfd_getb_signed_64 (const void *);
+          int64_t bfd_getl_signed_64 (const void *); bfd_vma bfd_getb32
+          (const void *); bfd_vma bfd_getl32 (const void *);
+          bfd_signed_vma bfd_getb_signed_32 (const void *);
+          bfd_signed_vma bfd_getl_signed_32 (const void *); bfd_vma
+          bfd_getb16 (const void *); bfd_vma bfd_getl16 (const void *);
+          bfd_signed_vma bfd_getb_signed_16 (const void *);
+          bfd_signed_vma bfd_getl_signed_16 (const void *); void
+          bfd_putb64 (uint64_t, void *); void bfd_putl64 (uint64_t, void
+          *); void bfd_putb32 (bfd_vma, void *); void bfd_putl32
+          (bfd_vma, void *); void bfd_putb24 (bfd_vma, void *); void
+          bfd_putl24 (bfd_vma, void *); void bfd_putb16 (bfd_vma, void
+          *); void bfd_putl16 (bfd_vma, void *); uint64_t bfd_get_bits
+          (const void *, int, bool); void bfd_put_bits (uint64_t, void
+          *, int, bool);
+     Read and write integers in a particular endian order.  getb and
+     putb functions handle big-endian, getl and putl handle
+     little-endian.  bfd_get_bits and bfd_put_bits specify big-endian by
+     passing TRUE in the last parameter, little-endian by passing FALSE.
+
+2.15.1.13 'bfd_log2'
+....................
+
+ -- Function: unsigned int bfd_log2 (bfd_vma x);
+     Return the log base 2 of the value supplied, rounded up.  E.g., an
+     X of 1025 returns 11.  A X of 0 returns 0.
 
 
 File: bfd.info,  Node: File Caching,  Next: Linker Functions,  Prev: Internal,  Up: BFD front end
@@ -9484,48 +9118,59 @@ opens the one wanted, returning its file
 2.16.1.1 'bfd_cache_init'
 .........................
 
-*Synopsis*
-     bfd_boolean bfd_cache_init (bfd *abfd);
-   *Description*
-Add a newly opened BFD to the cache.
+ -- Function: bool bfd_cache_init (bfd *abfd);
+     Add a newly opened BFD to the cache.
 
 2.16.1.2 'bfd_cache_close'
 ..........................
 
-*Synopsis*
-     bfd_boolean bfd_cache_close (bfd *abfd);
-   *Description*
-Remove the BFD ABFD from the cache.  If the attached file is open, then
-close it too.
-
-   *Returns*
-'FALSE' is returned if closing the file fails, 'TRUE' is returned if all
-is well.
+ -- Function: bool bfd_cache_close (bfd *abfd);
+     Remove the BFD ABFD from the cache.  If the attached file is open,
+     then close it too.
+
+     'FALSE' is returned if closing the file fails, 'TRUE' is returned
+     if all is well.
 
 2.16.1.3 'bfd_cache_close_all'
 ..............................
 
-*Synopsis*
-     bfd_boolean bfd_cache_close_all (void);
-   *Description*
-Remove all BFDs from the cache.  If the attached file is open, then
-close it too.
-
-   *Returns*
-'FALSE' is returned if closing one of the file fails, 'TRUE' is returned
-if all is well.
+ -- Function: bool bfd_cache_close_all (void);
+     Remove all BFDs from the cache.  If the attached file is open, then
+     close it too.  Note - despite its name this function will close a
+     BFD even if it is not marked as being cacheable, ie even if
+     bfd_get_cacheable() returns false.
+
+     'FALSE' is returned if closing one of the file fails, 'TRUE' is
+     returned if all is well.
+
+2.16.1.4 'bfd_cache_set_uncloseable'
+....................................
+
+ -- Function: bool bfd_cache_set_uncloseable (bfd *abfd, bool value,
+          bool *old);
+     Internal function to mark ABFD as either closeable or not.  This is
+     used by bfd_check_format_matches to avoid races where
+     bfd_cache_close_all is called in another thread.  VALUE is true to
+     mark the BFD as temporarily uncloseable by the cache; false to mark
+     it as closeable once again.  OLD, if non-NULL, is set to the
+     previous value of the flag.  Returns false on error, true on
+     success.
+
+2.16.1.5 'bfd_cache_size'
+.........................
 
-2.16.1.4 'bfd_open_file'
+ -- Function: unsigned bfd_cache_size (void);
+     Return the number of open files in the cache.
+
+2.16.1.6 'bfd_open_file'
 ........................
 
-*Synopsis*
-     FILE* bfd_open_file (bfd *abfd);
-   *Description*
-Call the OS to open a file for ABFD.  Return the 'FILE *' (possibly
-'NULL') that results from this operation.  Set up the BFD so that future
-accesses know the file is open.  If the 'FILE *' returned is 'NULL',
-then it won't have been put in the cache, so it won't have to be removed
-from it.
+ -- Function: FILE* bfd_open_file (bfd *abfd);
+     Call the OS to open a file for ABFD.  Return the 'FILE *' (possibly
+     'NULL') that results from this operation.  Set up the BFD so that
+     future accesses know the file is open.  If the 'FILE *' returned is
+     'NULL', then it won't have been put in the cache, so it won't have
+     to be removed from it.
 
 
 File: bfd.info,  Node: Linker Functions,  Next: Hash Tables,  Prev: File Caching,  Up: BFD front end
@@ -9869,145 +9514,161 @@ global hash table with the function 'aou
 builds a string table while writing out the symbols, which is written to
 the output file at the end of 'NAME(aout,final_link)'.
 
-2.17.3.4 'bfd_link_split_section'
+2.17.3.4 '_bfd_generic_link_add_one_symbol'
+...........................................
+
+ -- Function: bool _bfd_generic_link_add_one_symbol (struct
+          bfd_link_info *info, bfd *abfd, const char *name, flagword
+          flags, asection *section, bfd_vma value, const char *string,
+          bool copy, bool collect, struct bfd_link_hash_entry **hashp);
+     Add a symbol to the global hash table.  ABFD is the BFD the symbol
+     comes from.  NAME is the name of the symbol.  FLAGS is the BSF_*
+     bits associated with the symbol.  SECTION is the section in which
+     the symbol is defined; this may be bfd_und_section_ptr or
+     bfd_com_section_ptr.  VALUE is the value of the symbol, relative to
+     the section.  STRING is used for either an indirect symbol, in
+     which case it is the name of the symbol to indirect to, or a
+     warning symbol, in which case it is the warning string.  COPY is
+     TRUE if NAME or STRING must be copied into locally allocated memory
+     if they need to be saved.  COLLECT is TRUE if we should
+     automatically collect gcc constructor or destructor names as
+     collect2 does.  HASHP, if not NULL, is a place to store the created
+     hash table entry; if *HASHP is not NULL, the caller has already
+     looked up the hash table entry, and stored it in *HASHP.
+
+2.17.3.5 'bfd_link_align_section'
+.................................
+
+ -- Function: bool bfd_link_align_section (asection *, unsigned int);
+     Increase section alignment if the current section alignment is less
+     than the requested value.  Adjust output section alignment too, so
+     that linker layout adjusts for alignment on the current
+     lang_size_sections pass.  This is important for
+     lang_size_relro_segment.  If the output section alignment isn't
+     adjusted, the linker will place the output section at an address
+     depending on its current alignment.  When sizing the output
+     section, input sections attached transfer any increase in alignment
+     to the output section, which will affect layout for the next sizing
+     pass.  Which is all well and good except that
+     lang_size_relro_segment for the current sizing pass uses that
+     possibly increased alignment with a layout that doesn't suit.
+
+2.17.3.6 'bfd_link_split_section'
 .................................
 
-*Synopsis*
-     bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
-   *Description*
-Return nonzero if SEC should be split during a reloceatable or final
-link.
-     #define bfd_link_split_section(abfd, sec) \
-            BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
+ -- Function: bool bfd_link_split_section (bfd *abfd, asection *sec);
+     Return nonzero if SEC should be split during a reloceatable or
+     final link.
+          #define bfd_link_split_section(abfd, sec) \
+                 BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
 
 
-2.17.3.5 'bfd_section_already_linked'
+2.17.3.7 'bfd_section_already_linked'
 .....................................
 
-*Synopsis*
-     bfd_boolean bfd_section_already_linked (bfd *abfd,
-         asection *sec,
-         struct bfd_link_info *info);
-   *Description*
-Check if DATA has been already linked during a reloceatable or final
-link.  Return TRUE if it has.
-     #define bfd_section_already_linked(abfd, sec, info) \
-            BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
+ -- Function: bool bfd_section_already_linked (bfd *abfd, asection *sec,
+          struct bfd_link_info *info);
+     Check if DATA has been already linked during a reloceatable or
+     final link.  Return TRUE if it has.
+          #define bfd_section_already_linked(abfd, sec, info) \
+                 BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
 
 
-2.17.3.6 'bfd_generic_define_common_symbol'
+2.17.3.8 'bfd_generic_define_common_symbol'
 ...........................................
 
-*Synopsis*
-     bfd_boolean bfd_generic_define_common_symbol
-        (bfd *output_bfd, struct bfd_link_info *info,
-         struct bfd_link_hash_entry *h);
-   *Description*
-Convert common symbol H into a defined symbol.  Return TRUE on success
-and FALSE on failure.
-     #define bfd_define_common_symbol(output_bfd, info, h) \
-            BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
+ -- Function: bool bfd_generic_define_common_symbol (bfd *output_bfd,
+          struct bfd_link_info *info, struct bfd_link_hash_entry *h);
+     Convert common symbol H into a defined symbol.  Return TRUE on
+     success and FALSE on failure.
+          #define bfd_define_common_symbol(output_bfd, info, h) \
+                 BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
 
 
-2.17.3.7 '_bfd_generic_link_hide_symbol'
+2.17.3.9 '_bfd_generic_link_hide_symbol'
 ........................................
 
-*Synopsis*
-     void _bfd_generic_link_hide_symbol
-        (bfd *output_bfd, struct bfd_link_info *info,
-         struct bfd_link_hash_entry *h);
-   *Description*
-Hide symbol H.  This is an internal function.  It should not be called
-from outside the BFD library.
-     #define bfd_link_hide_symbol(output_bfd, info, h) \
-            BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))
+ -- Function: void _bfd_generic_link_hide_symbol (bfd *output_bfd,
+          struct bfd_link_info *info, struct bfd_link_hash_entry *h);
+     Hide symbol H.  This is an internal function.  It should not be
+     called from outside the BFD library.
+          #define bfd_link_hide_symbol(output_bfd, info, h) \
+                 BFD_SEND (output_bfd, _bfd_link_hide_symbol, (output_bfd, info, h))
 
 
-2.17.3.8 'bfd_generic_define_start_stop'
-........................................
+2.17.3.10 'bfd_generic_define_start_stop'
+.........................................
 
-*Synopsis*
-     struct bfd_link_hash_entry *bfd_generic_define_start_stop
-        (struct bfd_link_info *info,
-         const char *symbol, asection *sec);
-   *Description*
-Define a __start, __stop, .startof.  or .sizeof.  symbol.  Return the
-symbol or NULL if no such undefined symbol exists.
-     #define bfd_define_start_stop(output_bfd, info, symbol, sec) \
-            BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec))
+ -- Function: struct bfd_link_hash_entry *bfd_generic_define_start_stop
+          (struct bfd_link_info *info, const char *symbol, asection
+          *sec);
+     Define a __start, __stop, .startof.  or .sizeof.  symbol.  Return
+     the symbol or NULL if no such undefined symbol exists.
+          #define bfd_define_start_stop(output_bfd, info, symbol, sec) \
+                 BFD_SEND (output_bfd, _bfd_define_start_stop, (info, symbol, sec))
 
 
-2.17.3.9 'bfd_find_version_for_sym'
-...................................
+2.17.3.11 'bfd_find_version_for_sym'
+....................................
 
-*Synopsis*
-     struct bfd_elf_version_tree * bfd_find_version_for_sym
-        (struct bfd_elf_version_tree *verdefs,
-         const char *sym_name, bfd_boolean *hide);
-   *Description*
-Search an elf version script tree for symbol versioning info and export
-/ don't-export status for a given symbol.  Return non-NULL on success
-and NULL on failure; also sets the output 'hide' boolean parameter.
+ -- Function: struct bfd_elf_version_tree * bfd_find_version_for_sym
+          (struct bfd_elf_version_tree *verdefs, const char *sym_name,
+          bool *hide);
+     Search an elf version script tree for symbol versioning info and
+     export / don't-export status for a given symbol.  Return non-NULL
+     on success and NULL on failure; also sets the output 'hide' boolean
+     parameter.
 
-2.17.3.10 'bfd_hide_sym_by_version'
+2.17.3.12 'bfd_hide_sym_by_version'
 ...................................
 
-*Synopsis*
-     bfd_boolean bfd_hide_sym_by_version
-        (struct bfd_elf_version_tree *verdefs, const char *sym_name);
-   *Description*
-Search an elf version script tree for symbol versioning info for a given
-symbol.  Return TRUE if the symbol is hidden.
+ -- Function: bool bfd_hide_sym_by_version (struct bfd_elf_version_tree
+          *verdefs, const char *sym_name);
+     Search an elf version script tree for symbol versioning info for a
+     given symbol.  Return TRUE if the symbol is hidden.
 
-2.17.3.11 'bfd_link_check_relocs'
+2.17.3.13 'bfd_link_check_relocs'
 .................................
 
-*Synopsis*
-     bfd_boolean bfd_link_check_relocs
-        (bfd *abfd, struct bfd_link_info *info);
-   *Description*
-Checks the relocs in ABFD for validity.  Does not execute the relocs.
-Return TRUE if everything is OK, FALSE otherwise.  This is the external
-entry point to this code.
+ -- Function: bool bfd_link_check_relocs (bfd *abfd, struct
+          bfd_link_info *info);
+     Checks the relocs in ABFD for validity.  Does not execute the
+     relocs.  Return TRUE if everything is OK, FALSE otherwise.  This is
+     the external entry point to this code.
 
-2.17.3.12 '_bfd_generic_link_check_relocs'
+2.17.3.14 '_bfd_generic_link_check_relocs'
 ..........................................
 
-*Synopsis*
-     bfd_boolean _bfd_generic_link_check_relocs
-        (bfd *abfd, struct bfd_link_info *info);
-   *Description*
-Stub function for targets that do not implement reloc checking.  Return
-TRUE. This is an internal function.  It should not be called from
-outside the BFD library.
+ -- Function: bool _bfd_generic_link_check_relocs (bfd *abfd, struct
+          bfd_link_info *info);
+     Stub function for targets that do not implement reloc checking.
+     Return TRUE. This is an internal function.  It should not be called
+     from outside the BFD library.
 
-2.17.3.13 'bfd_merge_private_bfd_data'
+2.17.3.15 'bfd_merge_private_bfd_data'
 ......................................
 
-*Synopsis*
-     bfd_boolean bfd_merge_private_bfd_data
-        (bfd *ibfd, struct bfd_link_info *info);
-   *Description*
-Merge private BFD information from the BFD IBFD to the the output file
-BFD when linking.  Return 'TRUE' on success, 'FALSE' on error.  Possible
-error returns are:
-
-   * 'bfd_error_no_memory' - Not enough memory exists to create private
-     data for OBFD.
-     #define bfd_merge_private_bfd_data(ibfd, info) \
-            BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
-                      (ibfd, info))
+ -- Function: bool bfd_merge_private_bfd_data (bfd *ibfd, struct
+          bfd_link_info *info);
+     Merge private BFD information from the BFD IBFD to the the output
+     file BFD when linking.  Return 'TRUE' on success, 'FALSE' on error.
+     Possible error returns are:
+
+        * 'bfd_error_no_memory' - Not enough memory exists to create
+          private data for OBFD.
+          #define bfd_merge_private_bfd_data(ibfd, info) \
+                 BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
+                           (ibfd, info))
+
 
-2.17.3.14 '_bfd_generic_verify_endian_match'
+2.17.3.16 '_bfd_generic_verify_endian_match'
 ............................................
 
-*Synopsis*
-     bfd_boolean _bfd_generic_verify_endian_match
-        (bfd *ibfd, struct bfd_link_info *info);
-   *Description*
-Can be used from / for bfd_merge_private_bfd_data to check that
-endianness matches between input and output file.  Returns TRUE for a
-match, otherwise returns FALSE and emits an error.
+ -- Function: bool _bfd_generic_verify_endian_match (bfd *ibfd, struct
+          bfd_link_info *info);
+     Can be used from / for bfd_merge_private_bfd_data to check that
+     endianness matches between input and output file.  Returns TRUE for
+     a match, otherwise returns FALSE and emits an error.
 
 
 File: bfd.info,  Node: Hash Tables,  Prev: Linker Functions,  Up: BFD front end
@@ -10219,9 +9880,8 @@ routine of the hash table type your hash
 
        return (struct bfd_hash_entry *) ret;
      }
-   *Description*
-The creation routine for the linker hash table, which is in 'linker.c',
-looks just like this example.  FUNCTION_NAME is
+   The creation routine for the linker hash table, which is in
+'linker.c', looks just like this example.  FUNCTION_NAME is
 '_bfd_link_hash_newfunc'.  ENTRY_TYPE is 'struct bfd_link_hash_entry'.
 BASE_NEWFUNC is 'bfd_hash_newfunc', the creation routine for a basic
 hash table.
@@ -10258,6 +9918,130 @@ a.out backend linker hash table, which i
 table, uses macros for the lookup and traversal routines.  These are
 'aout_link_hash_lookup' and 'aout_link_hash_traverse' in aoutx.h.
 
+2.18.4.4 'bfd_hash_table_init_n'
+................................
+
+ -- Function: bool bfd_hash_table_init_n (struct bfd_hash_table *,
+          struct bfd_hash_entry *(* *newfunc*) (struct bfd_hash_entry *,
+          struct bfd_hash_table *, const char *), unsigned int
+          *entsize*, unsigned int *size*);
+     Create a new hash table, given a number of entries.
+
+2.18.4.5 'bfd_hash_table_init'
+..............................
+
+ -- Function: bool bfd_hash_table_init (struct bfd_hash_table *, struct
+          bfd_hash_entry *(* *newfunc*) (struct bfd_hash_entry *, struct
+          bfd_hash_table *, const char *), unsigned int *entsize*);
+     Create a new hash table with the default number of entries.
+
+2.18.4.6 'bfd_hash_table_free'
+..............................
+
+ -- Function: void bfd_hash_table_free (struct bfd_hash_table *);
+     Free a hash table.
+
+2.18.4.7 'bfd_hash_lookup'
+..........................
+
+ -- Function: struct bfd_hash_entry *bfd_hash_lookup (struct
+          bfd_hash_table *, const char *, bool *create*, bool *copy*);
+     Look up a string in a hash table.
+
+2.18.4.8 'bfd_hash_insert'
+..........................
+
+ -- Function: struct bfd_hash_entry *bfd_hash_insert (struct
+          bfd_hash_table *, const char *, unsigned long *hash*);
+     Insert an entry in a hash table.
+
+2.18.4.9 'bfd_hash_rename'
+..........................
+
+ -- Function: void bfd_hash_rename (struct bfd_hash_table *, const char
+          *, struct bfd_hash_entry *);
+     Rename an entry in a hash table.
+
+2.18.4.10 'bfd_hash_replace'
+............................
+
+ -- Function: void bfd_hash_replace (struct bfd_hash_table *, struct
+          bfd_hash_entry * *old*, struct bfd_hash_entry * *new*);
+     Replace an entry in a hash table.
+
+2.18.4.11 'bfd_hash_allocate'
+.............................
+
+ -- Function: void *bfd_hash_allocate (struct bfd_hash_table *, unsigned
+          int *size*);
+     Allocate space in a hash table.
+
+2.18.4.12 'bfd_hash_newfunc'
+............................
+
+ -- Function: struct bfd_hash_entry *bfd_hash_newfunc (struct
+          bfd_hash_entry *, struct bfd_hash_table *, const char *);
+     Base method for creating a new hash table entry.
+
+2.18.4.13 'bfd_hash_traverse'
+.............................
+
+ -- Function: void bfd_hash_traverse (struct bfd_hash_table *, bool (*)
+          (struct bfd_hash_entry *, void *), void *);
+     Traverse a hash table.
+
+2.18.4.14 'bfd_hash_set_default_size'
+.....................................
+
+ -- Function: unsigned int bfd_hash_set_default_size (unsigned int);
+     Set hash table default size.
+
+2.18.4.15 '_bfd_stringtab_init'
+...............................
+
+ -- Function: struct bfd_strtab_hash *_bfd_stringtab_init (void);
+     Create a new strtab.
+
+2.18.4.16 '_bfd_xcoff_stringtab_init'
+.....................................
+
+ -- Function: struct bfd_strtab_hash *_bfd_xcoff_stringtab_init (bool
+          *isxcoff64*);
+     Create a new strtab in which the strings are output in the format
+     used in the XCOFF .debug section: a two byte length precedes each
+     string.
+
+2.18.4.17 '_bfd_stringtab_free'
+...............................
+
+ -- Function: void _bfd_stringtab_free (struct bfd_strtab_hash *);
+     Free a strtab.
+
+2.18.4.18 '_bfd_stringtab_add'
+..............................
+
+ -- Function: bfd_size_type _bfd_stringtab_add (struct bfd_strtab_hash
+          *, const char *, bool *hash*, bool *copy*);
+     Get the index of a string in a strtab, adding it if it is not
+     already present.  If HASH is FALSE, we don't really use the hash
+     table, and we don't eliminate duplicate strings.  If COPY is true
+     then store a copy of STR if creating a new entry.
+
+2.18.4.19 '_bfd_stringtab_size'
+...............................
+
+ -- Function: bfd_size_type _bfd_stringtab_size (struct bfd_strtab_hash
+          *);
+     Get the number of bytes in a strtab.
+
+2.18.4.20 '_bfd_stringtab_emit'
+...............................
+
+ -- Function: bool _bfd_stringtab_emit (bfd *, struct bfd_strtab_hash
+          *);
+     Write out a strtab.  ABFD must already be at the right location in
+     the file.
+
 
 File: bfd.info,  Node: BFD back ends,  Next: GNU Free Documentation License,  Prev: BFD front end,  Up: Top
 
@@ -10286,7 +10070,6 @@ File: bfd.info,  Node: aout,  Next: coff
 3.2 a.out backends
 ==================
 
-*Description*
 BFD supports a number of different flavours of a.out format, though the
 major differences are only the sizes of the structures on disk, and the
 shape of the relocation information.
@@ -10364,7 +10147,6 @@ selected.
 3.2.1 Relocations
 -----------------
 
-*Description*
 The file 'aoutx.h' provides for both the _standard_ and _extended_ forms
 of a.out relocation records.
 
@@ -10375,7 +10157,6 @@ addend.
 3.2.2 Internal entry points
 ---------------------------
 
-*Description*
 'aoutx.h' exports several routines for accessing the contents of an
 a.out file, which are gathered and exported in turn by various format
 specific files (eg sunos.c).
@@ -10383,88 +10164,65 @@ specific files (eg sunos.c).
 3.2.2.1 'aout_SIZE_swap_exec_header_in'
 .......................................
 
-*Synopsis*
-     void aout_SIZE_swap_exec_header_in,
-        (bfd *abfd,
-         struct external_exec *bytes,
-         struct internal_exec *execp);
-   *Description*
-Swap the information in an executable header RAW_BYTES taken from a raw
-byte stream memory image into the internal exec header structure EXECP.
+ -- Function: void aout_SIZE_swap_exec_header_in, (bfd *abfd, struct
+          external_exec *bytes, struct internal_exec *execp);
+     Swap the information in an executable header RAW_BYTES taken from a
+     raw byte stream memory image into the internal exec header
+     structure EXECP.
 
 3.2.2.2 'aout_SIZE_swap_exec_header_out'
 ........................................
 
-*Synopsis*
-     void aout_SIZE_swap_exec_header_out
-        (bfd *abfd,
-         struct internal_exec *execp,
-         struct external_exec *raw_bytes);
-   *Description*
-Swap the information in an internal exec header structure EXECP into the
-buffer RAW_BYTES ready for writing to disk.
+ -- Function: bool aout_SIZE_swap_exec_header_out (bfd *abfd, struct
+          internal_exec *execp, struct external_exec *raw_bytes);
+     Swap the information in an internal exec header structure EXECP
+     into the buffer RAW_BYTES ready for writing to disk.
 
 3.2.2.3 'aout_SIZE_some_aout_object_p'
 ......................................
 
-*Synopsis*
-     const bfd_target *aout_SIZE_some_aout_object_p
-        (bfd *abfd,
-         struct internal_exec *execp,
-         const bfd_target *(*callback_to_real_object_p) (bfd *));
-   *Description*
-Some a.out variant thinks that the file open in ABFD checking is an
-a.out file.  Do some more checking, and set up for access if it really
-is.  Call back to the calling environment's "finish up" function just
-before returning, to handle any last-minute setup.
+ -- Function: bfd_cleanup aout_SIZE_some_aout_object_p (bfd *abfd,
+          struct internal_exec *execp, bfd_cleanup
+          (*callback_to_real_object_p) (bfd *));
+     Some a.out variant thinks that the file open in ABFD checking is an
+     a.out file.  Do some more checking, and set up for access if it
+     really is.  Call back to the calling environment's "finish up"
+     function just before returning, to handle any last-minute setup.
 
 3.2.2.4 'aout_SIZE_mkobject'
 ............................
 
-*Synopsis*
-     bfd_boolean aout_SIZE_mkobject, (bfd *abfd);
-   *Description*
-Initialize BFD ABFD for use with a.out files.
+ -- Function: bool aout_SIZE_mkobject, (bfd *abfd);
+     Initialize BFD ABFD for use with a.out files.
 
 3.2.2.5 'aout_SIZE_machine_type'
 ................................
 
-*Synopsis*
-     enum machine_type  aout_SIZE_machine_type
-        (enum bfd_architecture arch,
-         unsigned long machine,
-         bfd_boolean *unknown);
-   *Description*
-Keep track of machine architecture and machine type for a.out's.  Return
-the 'machine_type' for a particular architecture and machine, or
-'M_UNKNOWN' if that exact architecture and machine can't be represented
-in a.out format.
+ -- Function: enum machine_type aout_SIZE_machine_type (enum
+          bfd_architecture arch, unsigned long machine, bool *unknown);
+     Keep track of machine architecture and machine type for a.out's.
+     Return the 'machine_type' for a particular architecture and
+     machine, or 'M_UNKNOWN' if that exact architecture and machine
+     can't be represented in a.out format.
 
-   If the architecture is understood, machine type 0 (default) is always
-understood.
+     If the architecture is understood, machine type 0 (default) is
+     always understood.
 
 3.2.2.6 'aout_SIZE_set_arch_mach'
 .................................
 
-*Synopsis*
-     bfd_boolean aout_SIZE_set_arch_mach,
-        (bfd *,
-         enum bfd_architecture arch,
-         unsigned long machine);
-   *Description*
-Set the architecture and the machine of the BFD ABFD to the values ARCH
-and MACHINE.  Verify that ABFD's format can support the architecture
-required.
+ -- Function: bool aout_SIZE_set_arch_mach, (bfd *, enum
+          bfd_architecture arch, unsigned long machine);
+     Set the architecture and the machine of the BFD ABFD to the values
+     ARCH and MACHINE.  Verify that ABFD's format can support the
+     architecture required.
 
 3.2.2.7 'aout_SIZE_new_section_hook'
 ....................................
 
-*Synopsis*
-     bfd_boolean aout_SIZE_new_section_hook,
-        (bfd *abfd,
-         asection *newsect);
-   *Description*
-Called by the BFD in response to a 'bfd_make_section' request.
+ -- Function: bool aout_SIZE_new_section_hook, (bfd *abfd, asection
+          *newsect);
+     Called by the BFD in response to a 'bfd_make_section' request.
 
 
 File: bfd.info,  Node: coff,  Next: elf,  Prev: aout,  Up: BFD back ends
@@ -10570,9 +10328,10 @@ backend data structure.  The flag contro
 section names in output BFDs at runtime; if it is false, as it will be
 by default when generating an executable image, long section names are
 truncated; if true, the long section names extension is employed.  The
-hook points to a function that allows the value of the flag to be
-altered at runtime, on formats that support long section names at all;
-on other formats it points to a stub that returns an error indication.
+hook points to a function that allows the value of a copy of the flag in
+coff object tdata to be altered at runtime, on formats that support long
+section names at all; on other formats it points to a stub that returns
+an error indication.
 
    With input BFDs, the flag is set according to whether any long
 section names are detected while reading the section headers.  For a
@@ -10703,35 +10462,36 @@ writes out the table to the file.
 3.3.2.6 'coff_symbol_type'
 ..........................
 
-*Description*
 The hidden information for an 'asymbol' is described in a
 'combined_entry_type':
 
-
      typedef struct coff_ptr_struct
      {
        /* Remembers the offset from the first symbol in the file for
-          this symbol. Generated by coff_renumber_symbols.  */
+          this symbol.  Generated by coff_renumber_symbols.  */
        unsigned int offset;
 
-       /* Should the value of this symbol be renumbered.  Used for
-          XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
-       unsigned int fix_value : 1;
+       /* Selects between the elements of the union below.  */
+       unsigned int is_sym : 1;
 
-       /* Should the tag field of this symbol be renumbered.
-          Created by coff_pointerize_aux.  */
+       /* Selects between the elements of the x_sym.x_tagndx union.  If set,
+          p is valid and the field will be renumbered.  */
        unsigned int fix_tag : 1;
 
-       /* Should the endidx field of this symbol be renumbered.
-          Created by coff_pointerize_aux.  */
+       /* Selects between the elements of the x_sym.x_fcnary.x_fcn.x_endndx
+          union.  If set, p is valid and the field will be renumbered.  */
        unsigned int fix_end : 1;
 
-       /* Should the x_csect.x_scnlen field be renumbered.
-          Created by coff_pointerize_aux.  */
+       /* Selects between the elements of the x_csect.x_scnlen union.  If set,
+          p is valid and the field will be renumbered.  */
        unsigned int fix_scnlen : 1;
 
-       /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
-          index into the line number entries.  Set by coff_slurp_symbol_table.  */
+       /* If set, u.syment.n_value contains a pointer to a symbol.  The final
+          value will be the offset field.  Used for XCOFF C_BSTAT symbols.  */
+       unsigned int fix_value : 1;
+
+       /* If set, u.syment.n_value is an index into the line number entries.
+          Used for XCOFF C_BINCL/C_EINCL symbols.  */
        unsigned int fix_line : 1;
 
        /* The container for the symbol structure as read and translated
@@ -10742,11 +10502,11 @@ The hidden information for an 'asymbol'
          struct internal_syment syment;
        } u;
 
-      /* Selector for the union above.  */
-      bfd_boolean is_sym;
+      /* An extra pointer which can used by format based on COFF (like XCOFF)
+         to provide extra information to their backend.  */
+      void *extrap;
      } combined_entry_type;
 
-
      /* Each canonical asymbol really looks like this: */
 
      typedef struct coff_symbol_struct
@@ -10761,33 +10521,13 @@ The hidden information for an 'asymbol'
        struct lineno_cache_entry *lineno;
 
        /* Have the line numbers been relocated yet ? */
-       bfd_boolean done_lineno;
+       bool done_lineno;
      } coff_symbol_type;
 
+
 3.3.2.7 'bfd_coff_backend_data'
 ...............................
 
-     /* COFF symbol classifications.  */
-
-     enum coff_symbol_classification
-     {
-       /* Global symbol.  */
-       COFF_SYMBOL_GLOBAL,
-       /* Common symbol.  */
-       COFF_SYMBOL_COMMON,
-       /* Undefined symbol.  */
-       COFF_SYMBOL_UNDEFINED,
-       /* Local symbol.  */
-       COFF_SYMBOL_LOCAL,
-       /* PE section symbol.  */
-       COFF_SYMBOL_PE_SECTION
-     };
-
-     typedef asection * (*coff_gc_mark_hook_fn)
-       (asection *, struct bfd_link_info *, struct internal_reloc *,
-        struct coff_link_hash_entry *, struct internal_syment *);
-
-   Special entry points for gdb to swap in coff symbol table parts:
      typedef struct
      {
        void (*_bfd_coff_swap_aux_in)
@@ -10828,14 +10568,14 @@ The hidden information for an 'asymbol'
        unsigned int _bfd_relsz;
        unsigned int _bfd_linesz;
        unsigned int _bfd_filnmlen;
-       bfd_boolean _bfd_coff_long_filenames;
+       bool _bfd_coff_long_filenames;
 
-       bfd_boolean _bfd_coff_long_section_names;
-       bfd_boolean (*_bfd_coff_set_long_section_names)
+       bool _bfd_coff_long_section_names;
+       bool (*_bfd_coff_set_long_section_names)
          (bfd *, int);
 
        unsigned int _bfd_coff_default_section_alignment_power;
-       bfd_boolean _bfd_coff_force_symnames_in_strings;
+       bool _bfd_coff_force_symnames_in_strings;
        unsigned int _bfd_coff_debug_string_prefix_length;
        unsigned int _bfd_coff_max_nscns;
 
@@ -10851,38 +10591,38 @@ The hidden information for an 'asymbol'
        void (*_bfd_coff_swap_reloc_in)
          (bfd *abfd, void *, void *);
 
-       bfd_boolean (*_bfd_coff_bad_format_hook)
+       bool (*_bfd_coff_bad_format_hook)
          (bfd *, void *);
 
-       bfd_boolean (*_bfd_coff_set_arch_mach_hook)
+       bool (*_bfd_coff_set_arch_mach_hook)
          (bfd *, void *);
 
        void * (*_bfd_coff_mkobject_hook)
          (bfd *, void *, void *);
 
-       bfd_boolean (*_bfd_styp_to_sec_flags_hook)
+       bool (*_bfd_styp_to_sec_flags_hook)
          (bfd *, void *, const char *, asection *, flagword *);
 
        void (*_bfd_set_alignment_hook)
          (bfd *, asection *, void *);
 
-       bfd_boolean (*_bfd_coff_slurp_symbol_table)
+       bool (*_bfd_coff_slurp_symbol_table)
          (bfd *);
 
-       bfd_boolean (*_bfd_coff_symname_in_debug)
+       bool (*_bfd_coff_symname_in_debug)
          (bfd *, struct internal_syment *);
 
-       bfd_boolean (*_bfd_coff_pointerize_aux_hook)
+       bool (*_bfd_coff_pointerize_aux_hook)
          (bfd *, combined_entry_type *, combined_entry_type *,
           unsigned int, combined_entry_type *);
 
-       bfd_boolean (*_bfd_coff_print_aux)
+       bool (*_bfd_coff_print_aux)
          (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
           combined_entry_type *, unsigned int);
 
-       void (*_bfd_coff_reloc16_extra_cases)
+       bool (*_bfd_coff_reloc16_extra_cases)
          (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
-          bfd_byte *, unsigned int *, unsigned int *);
+          bfd_byte *, size_t *, size_t *);
 
        int (*_bfd_coff_reloc16_estimate)
          (bfd *, asection *, arelent *, unsigned int,
@@ -10891,13 +10631,13 @@ The hidden information for an 'asymbol'
        enum coff_symbol_classification (*_bfd_coff_classify_symbol)
          (bfd *, struct internal_syment *);
 
-       bfd_boolean (*_bfd_coff_compute_section_file_positions)
+       bool (*_bfd_coff_compute_section_file_positions)
          (bfd *);
 
-       bfd_boolean (*_bfd_coff_start_final_link)
+       bool (*_bfd_coff_start_final_link)
          (bfd *, struct bfd_link_info *);
 
-       bfd_boolean (*_bfd_coff_relocate_section)
+       bool (*_bfd_coff_relocate_section)
          (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
           struct internal_reloc *, struct internal_syment *, asection **);
 
@@ -10905,170 +10645,21 @@ The hidden information for an 'asymbol'
          (bfd *, asection *, struct internal_reloc *,
           struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *);
 
-       bfd_boolean (*_bfd_coff_adjust_symndx)
+       bool (*_bfd_coff_adjust_symndx)
          (bfd *, struct bfd_link_info *, bfd *, asection *,
-          struct internal_reloc *, bfd_boolean *);
-
-       bfd_boolean (*_bfd_coff_link_add_one_symbol)
-         (struct bfd_link_info *, bfd *, const char *, flagword,
-          asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
-          struct bfd_link_hash_entry **);
+          struct internal_reloc *, bool *);
 
-       bfd_boolean (*_bfd_coff_link_output_has_begun)
+       bool (*_bfd_coff_link_output_has_begun)
          (bfd *, struct coff_final_link_info *);
 
-       bfd_boolean (*_bfd_coff_final_link_postscript)
+       bool (*_bfd_coff_final_link_postscript)
          (bfd *, struct coff_final_link_info *);
 
-       bfd_boolean (*_bfd_coff_print_pdata)
+       bool (*_bfd_coff_print_pdata)
          (bfd *, void *);
 
      } bfd_coff_backend_data;
 
-     #define coff_backend_info(abfd) \
-       ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
-
-     #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
-       ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
-
-     #define bfd_coff_swap_sym_in(a,e,i) \
-       ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
-
-     #define bfd_coff_swap_lineno_in(a,e,i) \
-       ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
-
-     #define bfd_coff_swap_reloc_out(abfd, i, o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
-
-     #define bfd_coff_swap_lineno_out(abfd, i, o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
-
-     #define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
-       ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
-
-     #define bfd_coff_swap_sym_out(abfd, i,o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
-
-     #define bfd_coff_swap_scnhdr_out(abfd, i,o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
-
-     #define bfd_coff_swap_filehdr_out(abfd, i,o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
-
-     #define bfd_coff_swap_aouthdr_out(abfd, i,o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
-
-     #define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
-     #define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
-     #define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
-     #define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
-     #define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
-     #define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
-     #define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
-     #define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
-     #define bfd_coff_long_filenames(abfd) \
-       (coff_backend_info (abfd)->_bfd_coff_long_filenames)
-     #define bfd_coff_long_section_names(abfd) \
-       (coff_backend_info (abfd)->_bfd_coff_long_section_names)
-     #define bfd_coff_set_long_section_names(abfd, enable) \
-       ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable))
-     #define bfd_coff_default_section_alignment_power(abfd) \
-       (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
-     #define bfd_coff_max_nscns(abfd) \
-       (coff_backend_info (abfd)->_bfd_coff_max_nscns)
-
-     #define bfd_coff_swap_filehdr_in(abfd, i,o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
-
-     #define bfd_coff_swap_aouthdr_in(abfd, i,o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
-
-     #define bfd_coff_swap_scnhdr_in(abfd, i,o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
-
-     #define bfd_coff_swap_reloc_in(abfd, i, o) \
-       ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
-
-     #define bfd_coff_bad_format_hook(abfd, filehdr) \
-       ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
-
-     #define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
-       ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
-     #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
-       ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
-        (abfd, filehdr, aouthdr))
-
-     #define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
-       ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
-        (abfd, scnhdr, name, section, flags_ptr))
-
-     #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
-       ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
-
-     #define bfd_coff_slurp_symbol_table(abfd)\
-       ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
-
-     #define bfd_coff_symname_in_debug(abfd, sym)\
-       ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
-
-     #define bfd_coff_force_symnames_in_strings(abfd)\
-       (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
-
-     #define bfd_coff_debug_string_prefix_length(abfd)\
-       (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
-
-     #define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
-       ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
-        (abfd, file, base, symbol, aux, indaux))
-
-     #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
-                                          reloc, data, src_ptr, dst_ptr)\
-       ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
-        (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
-
-     #define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
-       ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
-        (abfd, section, reloc, shrink, link_info))
-
-     #define bfd_coff_classify_symbol(abfd, sym)\
-       ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
-        (abfd, sym))
-
-     #define bfd_coff_compute_section_file_positions(abfd)\
-       ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
-        (abfd))
-
-     #define bfd_coff_start_final_link(obfd, info)\
-       ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
-        (obfd, info))
-     #define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
-       ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
-        (obfd, info, ibfd, o, con, rel, isyms, secs))
-     #define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
-       ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
-        (abfd, sec, rel, h, sym, addendp))
-     #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
-       ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
-        (obfd, info, ibfd, sec, rel, adjustedp))
-     #define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
-                                          value, string, cp, coll, hashp)\
-       ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
-        (info, abfd, name, flags, section, value, string, cp, coll, hashp))
-
-     #define bfd_coff_link_output_has_begun(a,p) \
-       ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
-     #define bfd_coff_final_link_postscript(a,p) \
-       ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
-
-     #define bfd_coff_have_print_pdata(a) \
-       (coff_backend_info (a)->_bfd_coff_print_pdata)
-     #define bfd_coff_print_pdata(a,p) \
-       ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p))
-
-     /* Macro: Returns true if the bfd is a PE executable as opposed to a
-        PE object file.  */
-     #define bfd_pei_p(abfd) \
-       (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))
 
 3.3.2.8 Writing relocations
 ...........................
@@ -11124,6 +10715,13 @@ Coff relocations are easily transformed
      back end specific way.  For instance, the 386 uses the 'r_type' to
      directly produce an index into a howto table vector.
 
+   * Note that 'arelent.addend' for COFF is often not what most people
+     understand as a relocation addend, but rather an adjustment to the
+     relocation addend stored in section contents of relocatable object
+     files.  The value found in section contents may also be confusing,
+     depending on both symbol value and addend somewhat similar to the
+     field value for a final-linked object.  See 'CALC_ADDEND'.
+
 
 File: bfd.info,  Node: elf,  Next: mmo,  Prev: coff,  Up: BFD back ends
 
@@ -11973,272 +11571,537 @@ BFD Index
 [index]
 * Menu:
 
-* _bfd_error_handler:                    Error reporting.    (line  112)
+* *bfd_alloc:                            Internal.           (line   74)
+* *bfd_arch_default_fill:                Architectures.      (line  740)
+* *bfd_asprintf:                         Error reporting.    (line   96)
+* *bfd_create:                           Opening and Closing.
+                                                             (line  226)
+* *bfd_default_reloc_type_lookup:        howto manager.      (line 3608)
+* *bfd_demangle:                         Miscellaneous.      (line  321)
+* *bfd_elf_bfd_from_remote_memory:       Opening and Closing.
+                                                             (line  172)
+* *bfd_fdopenr:                          Opening and Closing.
+                                                             (line   71)
+* *bfd_fdopenw:                          Opening and Closing.
+                                                             (line   97)
+* *bfd_follow_build_id_debuglink:        Opening and Closing.
+                                                             (line  360)
+* *bfd_follow_gnu_debugaltlink:          Opening and Closing.
+                                                             (line  316)
+* *bfd_follow_gnu_debuglink:             Opening and Closing.
+                                                             (line  297)
+* *bfd_fopen:                            Opening and Closing.
+                                                             (line   30)
+* *bfd_generic_get_relocated_section_contents: howto manager.
+                                                             (line 3656)
+* *bfd_get_alt_debug_link_info:          Opening and Closing.
+                                                             (line  286)
+* *bfd_get_debug_link_info:              Opening and Closing.
+                                                             (line  270)
+* *bfd_get_linker_section:               section prototypes. (line   37)
+* *bfd_get_next_section_by_name:         section prototypes. (line   26)
+* *bfd_get_relocated_section_contents:   Miscellaneous.      (line  273)
+* *bfd_get_section_by_name:              section prototypes. (line   18)
+* *bfd_get_section_by_name_if:           section prototypes. (line   45)
+* *bfd_get_unique_section_name:          section prototypes. (line   60)
+* *bfd_group_signature:                  Miscellaneous.      (line  331)
+* *bfd_hash_allocate:                    Write Other Derived Routines.
+                                                             (line   83)
+* *bfd_make_section:                     section prototypes. (line  132)
+* *bfd_make_section_anyway:              section prototypes. (line  106)
+* *bfd_make_section_anyway_with_flags:   section prototypes. (line   90)
+* *bfd_make_section_old_way:             section prototypes. (line   71)
+* *bfd_make_section_with_flags:          section prototypes. (line  121)
+* *bfd_malloc:                           Internal.           (line   15)
+* *bfd_mmap:                             Miscellaneous.      (line  466)
+* *bfd_openr:                            Opening and Closing.
+                                                             (line   54)
+* *bfd_openr_iovec:                      Opening and Closing.
+                                                             (line  116)
+* *bfd_openr_next_archived_file:         Archives.           (line   83)
+* *bfd_openstreamr:                      Opening and Closing.
+                                                             (line  105)
+* *bfd_openw:                            Opening and Closing.
+                                                             (line  159)
+* *bfd_realloc:                          Internal.           (line   24)
+* *bfd_realloc_or_free:                  Internal.           (line   42)
+* *bfd_reloc_type_lookup:                howto manager.      (line 3599)
+* *bfd_sections_find_if:                 section prototypes. (line  178)
+* *bfd_zalloc:                           Internal.           (line   81)
+* *bfd_zmalloc:                          Internal.           (line   62)
+* *_bfd_generic_make_empty_symbol:       symbol handling functions.
+                                                             (line   91)
+* *_bfd_new_bfd:                         Opening and Closing.
+                                                             (line   12)
+* *_bfd_new_bfd_contained_in:            Opening and Closing.
+                                                             (line   18)
+* _bfd_error_handler:                    Error reporting.    (line  129)
+* _bfd_error_handler <1>:                Error reporting.    (line  133)
 * _bfd_final_link_relocate:              Relocating the section contents.
                                                              (line   22)
+* _bfd_free_cached_info:                 Opening and Closing.
+                                                             (line   20)
+* _bfd_free_cached_info <1>:             Opening and Closing.
+                                                             (line   24)
 * _bfd_generic_link_add_archive_symbols: Adding symbols from an archive.
                                                              (line   15)
 * _bfd_generic_link_add_one_symbol:      Adding symbols from an object file.
                                                              (line   19)
+* _bfd_generic_link_add_one_symbol <1>:  Writing the symbol table.
+                                                             (line   43)
+* _bfd_generic_link_add_one_symbol <2>:  Writing the symbol table.
+                                                             (line   47)
 * _bfd_generic_link_check_relocs:        Writing the symbol table.
-                                                             (line  144)
+                                                             (line  165)
+* _bfd_generic_link_check_relocs <1>:    Writing the symbol table.
+                                                             (line  169)
 * _bfd_generic_link_hide_symbol:         Writing the symbol table.
-                                                             (line   83)
+                                                             (line  114)
+* _bfd_generic_link_hide_symbol <1>:     Writing the symbol table.
+                                                             (line  118)
 * _bfd_generic_make_empty_symbol:        symbol handling functions.
-                                                             (line   96)
-* _bfd_generic_set_reloc:                howto manager.      (line 3496)
+                                                             (line   87)
+* _bfd_generic_set_reloc:                howto manager.      (line 3662)
+* _bfd_generic_set_reloc <1>:            howto manager.      (line 3666)
 * _bfd_generic_verify_endian_match:      Writing the symbol table.
-                                                             (line  172)
+                                                             (line  190)
+* _bfd_generic_verify_endian_match <1>:  Writing the symbol table.
+                                                             (line  194)
+* _bfd_get_error_program_name:           Error reporting.    (line  177)
 * _bfd_link_add_symbols in target vector: Adding Symbols to the Hash Table.
                                                              (line    6)
 * _bfd_link_final_link in target vector: Performing the Final Link.
                                                              (line    6)
 * _bfd_link_hash_table_create in target vector: Creating a Linker Hash Table.
                                                              (line    6)
+* _bfd_new_bfd:                          Opening and Closing.
+                                                             (line    8)
+* _bfd_new_bfd_contained_in:             Opening and Closing.
+                                                             (line   14)
 * _bfd_relocate_contents:                Relocating the section contents.
                                                              (line   22)
-* _bfd_unrecognized_reloc:               howto manager.      (line 3508)
-* aout_SIZE_machine_type:                aout.               (line  145)
-* aout_SIZE_mkobject:                    aout.               (line  137)
-* aout_SIZE_new_section_hook:            aout.               (line  175)
-* aout_SIZE_set_arch_mach:               aout.               (line  162)
-* aout_SIZE_some_aout_object_p:          aout.               (line  123)
-* aout_SIZE_swap_exec_header_in:         aout.               (line   99)
-* aout_SIZE_swap_exec_header_out:        aout.               (line  111)
-* arelent_chain:                         typedef arelent.    (line  315)
+* _bfd_restore_error_handler_caching:    Error reporting.    (line  162)
+* _bfd_restore_error_handler_caching <1>: Error reporting.   (line  166)
+* _bfd_set_error_handler_caching:        Error reporting.    (line  151)
+* _bfd_stringtab_add:                    Write Other Derived Routines.
+                                                             (line  127)
+* _bfd_stringtab_add <1>:                Write Other Derived Routines.
+                                                             (line  131)
+* _bfd_stringtab_emit:                   Write Other Derived Routines.
+                                                             (line  144)
+* _bfd_stringtab_emit <1>:               Write Other Derived Routines.
+                                                             (line  148)
+* _bfd_stringtab_free:                   Write Other Derived Routines.
+                                                             (line  121)
+* _bfd_stringtab_free <1>:               Write Other Derived Routines.
+                                                             (line  125)
+* _bfd_stringtab_init:                   Write Other Derived Routines.
+                                                             (line  106)
+* _bfd_stringtab_size:                   Write Other Derived Routines.
+                                                             (line  137)
+* _bfd_stringtab_size <1>:               Write Other Derived Routines.
+                                                             (line  141)
+* _bfd_threading_enabled:                Threading.          (line   15)
+* _bfd_threading_enabled <1>:            Threading.          (line   20)
+* _bfd_unrecognized_reloc:               howto manager.      (line 3669)
+* _bfd_unrecognized_reloc <1>:           howto manager.      (line 3673)
+* _bfd_xcoff_stringtab_init:             Write Other Derived Routines.
+                                                             (line  112)
+* aout_SIZE_machine_type:                aout.               (line  130)
+* aout_SIZE_mkobject:                    aout.               (line  124)
+* aout_SIZE_mkobject,:                   aout.               (line  128)
+* aout_SIZE_new_section_hook:            aout.               (line  152)
+* aout_SIZE_new_section_hook,:           aout.               (line  156)
+* aout_SIZE_set_arch_mach:               aout.               (line  143)
+* aout_SIZE_set_arch_mach,:              aout.               (line  147)
+* aout_SIZE_some_aout_object_p:          aout.               (line  113)
+* aout_SIZE_some_aout_object_p <1>:      aout.               (line  117)
+* aout_SIZE_swap_exec_header_in:         aout.               (line   96)
+* aout_SIZE_swap_exec_header_in,:        aout.               (line  100)
+* aout_SIZE_swap_exec_header_out:        aout.               (line  105)
+* aout_SIZE_swap_exec_header_out <1>:    aout.               (line  109)
+* arelent_chain:                         typedef arelent.    (line  280)
 * BFD:                                   Overview.           (line    6)
 * 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_ARELOC_BFIN_ADD:                   howto manager.      (line 1144)
-* BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line 1178)
-* BFD_ARELOC_BFIN_AND:                   howto manager.      (line 1158)
-* BFD_ARELOC_BFIN_COMP:                  howto manager.      (line 1172)
-* BFD_ARELOC_BFIN_CONST:                 howto manager.      (line 1142)
-* BFD_ARELOC_BFIN_DIV:                   howto manager.      (line 1150)
-* BFD_ARELOC_BFIN_HWPAGE:                howto manager.      (line 1176)
-* BFD_ARELOC_BFIN_LAND:                  howto manager.      (line 1164)
-* BFD_ARELOC_BFIN_LEN:                   howto manager.      (line 1168)
-* BFD_ARELOC_BFIN_LOR:                   howto manager.      (line 1166)
-* BFD_ARELOC_BFIN_LSHIFT:                howto manager.      (line 1154)
-* BFD_ARELOC_BFIN_MOD:                   howto manager.      (line 1152)
-* BFD_ARELOC_BFIN_MULT:                  howto manager.      (line 1148)
-* BFD_ARELOC_BFIN_NEG:                   howto manager.      (line 1170)
-* BFD_ARELOC_BFIN_OR:                    howto manager.      (line 1160)
-* BFD_ARELOC_BFIN_PAGE:                  howto manager.      (line 1174)
-* BFD_ARELOC_BFIN_PUSH:                  howto manager.      (line 1140)
-* BFD_ARELOC_BFIN_RSHIFT:                howto manager.      (line 1156)
-* BFD_ARELOC_BFIN_SUB:                   howto manager.      (line 1146)
-* BFD_ARELOC_BFIN_XOR:                   howto manager.      (line 1162)
-* bfd_cache_close:                       File Caching.       (line   25)
-* bfd_cache_close_all:                   File Caching.       (line   38)
+* bfd_alloc:                             Internal.           (line   70)
+* bfd_alt_mach_code:                     Miscellaneous.      (line  295)
+* bfd_alt_mach_code <1>:                 Miscellaneous.      (line  299)
+* bfd_architecture:                      Architectures.      (line  654)
+* bfd_arch_bits_per_address:             Architectures.      (line  670)
+* bfd_arch_bits_per_byte:                Architectures.      (line  663)
+* bfd_arch_default_fill:                 Architectures.      (line  736)
+* bfd_arch_get_compatible:               Architectures.      (line  613)
+* bfd_arch_info_type:                    Architectures.      (line  601)
+* bfd_arch_info_type <1>:                Architectures.      (line  617)
+* bfd_arch_info_type <2>:                Architectures.      (line  681)
+* bfd_arch_info_type <3>:                Architectures.      (line  696)
+* bfd_arch_info_type <4>:                Architectures.      (line  702)
+* bfd_arch_list:                         Architectures.      (line  606)
+* bfd_arch_mach_octets_per_byte:         Architectures.      (line  726)
+* BFD_ARELOC_BFIN_ADD:                   howto manager.      (line 1167)
+* BFD_ARELOC_BFIN_ADDR:                  howto manager.      (line 1201)
+* BFD_ARELOC_BFIN_AND:                   howto manager.      (line 1181)
+* BFD_ARELOC_BFIN_COMP:                  howto manager.      (line 1195)
+* BFD_ARELOC_BFIN_CONST:                 howto manager.      (line 1165)
+* BFD_ARELOC_BFIN_DIV:                   howto manager.      (line 1173)
+* BFD_ARELOC_BFIN_HWPAGE:                howto manager.      (line 1199)
+* BFD_ARELOC_BFIN_LAND:                  howto manager.      (line 1187)
+* BFD_ARELOC_BFIN_LEN:                   howto manager.      (line 1191)
+* BFD_ARELOC_BFIN_LOR:                   howto manager.      (line 1189)
+* BFD_ARELOC_BFIN_LSHIFT:                howto manager.      (line 1177)
+* BFD_ARELOC_BFIN_MOD:                   howto manager.      (line 1175)
+* BFD_ARELOC_BFIN_MULT:                  howto manager.      (line 1171)
+* BFD_ARELOC_BFIN_NEG:                   howto manager.      (line 1193)
+* BFD_ARELOC_BFIN_OR:                    howto manager.      (line 1183)
+* BFD_ARELOC_BFIN_PAGE:                  howto manager.      (line 1197)
+* BFD_ARELOC_BFIN_PUSH:                  howto manager.      (line 1163)
+* BFD_ARELOC_BFIN_RSHIFT:                howto manager.      (line 1179)
+* BFD_ARELOC_BFIN_SUB:                   howto manager.      (line 1169)
+* BFD_ARELOC_BFIN_XOR:                   howto manager.      (line 1185)
+* bfd_asprintf:                          Error reporting.    (line   92)
+* bfd_cache_close:                       File Caching.       (line   23)
+* bfd_cache_close <1>:                   File Caching.       (line   27)
+* bfd_cache_close_all:                   File Caching.       (line   33)
+* bfd_cache_close_all <1>:               File Caching.       (line   37)
 * bfd_cache_init:                        File Caching.       (line   17)
+* bfd_cache_init <1>:                    File Caching.       (line   21)
+* bfd_cache_set_uncloseable:             File Caching.       (line   45)
+* bfd_cache_set_uncloseable <1>:         File Caching.       (line   49)
+* bfd_cache_size:                        File Caching.       (line   58)
+* bfd_cache_size <1>:                    File Caching.       (line   62)
 * bfd_calc_gnu_debuglink_crc32:          Opening and Closing.
-                                                             (line  275)
-* bfd_canonicalize_reloc:                Miscellaneous.      (line   18)
+                                                             (line  255)
+* bfd_calc_gnu_debuglink_crc32 <1>:      Opening and Closing.
+                                                             (line  259)
+* bfd_canonicalize_reloc:                Miscellaneous.      (line   17)
+* bfd_canonicalize_reloc <1>:            Miscellaneous.      (line   21)
 * bfd_canonicalize_symtab:               symbol handling functions.
-                                                             (line   52)
-* bfd_check_compression_header:          Miscellaneous.      (line  363)
+                                                             (line   47)
 * bfd_check_format:                      Formats.            (line   20)
-* bfd_check_format_matches:              Formats.            (line   51)
-* bfd_check_overflow:                    typedef arelent.    (line  328)
+* bfd_check_format <1>:                  Formats.            (line   24)
+* bfd_check_format_matches:              Formats.            (line   55)
+* bfd_check_format_matches <1>:          Formats.            (line   59)
+* bfd_check_overflow:                    typedef arelent.    (line  292)
+* bfd_check_overflow <1>:                typedef arelent.    (line  296)
 * bfd_close:                             Opening and Closing.
-                                                             (line  161)
+                                                             (line  190)
+* bfd_close <1>:                         Opening and Closing.
+                                                             (line  194)
 * 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_copy_private_bfd_data:             Miscellaneous.      (line  159)
-* bfd_copy_private_header_data:          Miscellaneous.      (line  142)
-* bfd_copy_private_section_data:         section prototypes. (line  279)
+                                                             (line  206)
+* bfd_close_all_done <1>:                Opening and Closing.
+                                                             (line  210)
+* bfd_coff_backend_data:                 coff.               (line  299)
+* bfd_copy_private_bfd_data:             Miscellaneous.      (line  139)
+* bfd_copy_private_bfd_data <1>:         Miscellaneous.      (line  143)
+* bfd_copy_private_header_data:          Miscellaneous.      (line  124)
+* bfd_copy_private_header_data <1>:      Miscellaneous.      (line  128)
+* bfd_copy_private_section_data:         section prototypes. (line  247)
+* bfd_copy_private_section_data <1>:     section prototypes. (line  251)
 * bfd_copy_private_symbol_data:          symbol handling functions.
-                                                             (line  145)
-* bfd_core_file_failing_command:         Core Files.         (line   11)
-* bfd_core_file_failing_signal:          Core Files.         (line   20)
-* bfd_core_file_pid:                     Core Files.         (line   29)
+                                                             (line  126)
+* bfd_copy_private_symbol_data <1>:      symbol handling functions.
+                                                             (line  130)
+* bfd_core_file_failing_command:         Core Files.         (line   10)
+* bfd_core_file_failing_signal:          Core Files.         (line   17)
+* bfd_core_file_failing_signal <1>:      Core Files.         (line   21)
+* bfd_core_file_pid:                     Core Files.         (line   24)
+* bfd_core_file_pid <1>:                 Core Files.         (line   28)
 * bfd_create:                            Opening and Closing.
-                                                             (line  198)
+                                                             (line  222)
 * bfd_create_gnu_debuglink_section:      Opening and Closing.
-                                                             (line  431)
+                                                             (line  331)
 * 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_errmsg:                            Error reporting.    (line   79)
+                                                             (line  104)
+* bfd_decode_symclass <1>:               symbol handling functions.
+                                                             (line  108)
+* bfd_default_arch_struct:               Architectures.      (line  624)
+* bfd_default_compatible:                Architectures.      (line  677)
+* bfd_default_reloc_type_lookup:         howto manager.      (line 3604)
+* bfd_default_scan:                      Architectures.      (line  684)
+* bfd_default_scan <1>:                  Architectures.      (line  688)
+* bfd_default_set_arch_mach:             Architectures.      (line  641)
+* bfd_default_set_arch_mach <1>:         Architectures.      (line  645)
+* bfd_demangle:                          Miscellaneous.      (line  317)
+* bfd_elf_bfd_from_remote_memory:        Opening and Closing.
+                                                             (line  168)
+* bfd_elf_version_tree:                  Writing the symbol table.
+                                                             (line  141)
+* bfd_emul_get_commonpagesize:           Miscellaneous.      (line  311)
+* bfd_emul_get_commonpagesize <1>:       Miscellaneous.      (line  315)
+* bfd_emul_get_maxpagesize:              Miscellaneous.      (line  304)
+* bfd_emul_get_maxpagesize <1>:          Miscellaneous.      (line  308)
+* bfd_errmsg:                            Error reporting.    (line   75)
+* bfd_extract_object_only_section:       Opening and Closing.
+                                                             (line  387)
 * bfd_fdopenr:                           Opening and Closing.
-                                                             (line   56)
+                                                             (line   67)
+* bfd_fdopenw:                           Opening and Closing.
+                                                             (line   93)
 * bfd_fill_in_gnu_debuglink_section:     Opening and Closing.
-                                                             (line  445)
-* bfd_find_target:                       bfd_target.         (line  567)
+                                                             (line  343)
+* bfd_fill_in_gnu_debuglink_section <1>: Opening and Closing.
+                                                             (line  347)
+* bfd_find_target:                       bfd_target.         (line  545)
 * bfd_find_version_for_sym:              Writing the symbol table.
-                                                             (line  111)
-* bfd_flavour_name:                      bfd_target.         (line  630)
+                                                             (line  137)
+* bfd_flavour_name:                      bfd_target.         (line  600)
+* bfd_flush:                             Miscellaneous.      (line  395)
+* bfd_flush <1>:                         Miscellaneous.      (line  399)
 * bfd_follow_build_id_debuglink:         Opening and Closing.
-                                                             (line  505)
+                                                             (line  356)
 * bfd_follow_gnu_debugaltlink:           Opening and Closing.
-                                                             (line  411)
+                                                             (line  312)
 * bfd_follow_gnu_debuglink:              Opening and Closing.
-                                                             (line  390)
+                                                             (line  293)
 * bfd_fopen:                             Opening and Closing.
-                                                             (line   11)
-* bfd_format_string:                     Formats.            (line   78)
+                                                             (line   26)
+* bfd_format_string:                     Formats.            (line   79)
 * bfd_generic_define_common_symbol:      Writing the symbol table.
-                                                             (line   69)
+                                                             (line  103)
+* bfd_generic_define_common_symbol <1>:  Writing the symbol table.
+                                                             (line  107)
 * 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_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)
+                                                             (line  125)
+* bfd_generic_discard_group:             section prototypes. (line  277)
+* bfd_generic_discard_group <1>:         section prototypes. (line  281)
+* bfd_generic_gc_sections:               howto manager.      (line 3627)
+* bfd_generic_gc_sections <1>:           howto manager.      (line 3631)
+* bfd_generic_get_relocated_section_contents: howto manager. (line 3652)
+* bfd_generic_group_name:                section prototypes. (line  270)
+* bfd_generic_is_group_section:          section prototypes. (line  263)
+* bfd_generic_is_group_section <1>:      section prototypes. (line  267)
+* bfd_generic_lookup_section_flags:      howto manager.      (line 3635)
+* bfd_generic_lookup_section_flags <1>:  howto manager.      (line 3639)
+* bfd_generic_merge_sections:            howto manager.      (line 3644)
+* bfd_generic_merge_sections <1>:        howto manager.      (line 3648)
+* bfd_generic_relax_section:             howto manager.      (line 3619)
+* bfd_generic_relax_section <1>:         howto manager.      (line 3623)
+* bfd_getb64:                            Internal.           (line  260)
 * bfd_get_alt_debug_link_info:           Opening and Closing.
-                                                             (line  329)
-* bfd_get_arch:                          Architectures.      (line  631)
-* bfd_get_arch_info:                     Architectures.      (line  683)
-* bfd_get_arch_size:                     Miscellaneous.      (line   63)
-* bfd_get_compression_header_size:       Miscellaneous.      (line  380)
+                                                             (line  282)
+* bfd_get_arch:                          Architectures.      (line  650)
+* bfd_get_arch_info:                     Architectures.      (line  692)
+* bfd_get_arch_size:                     Miscellaneous.      (line   58)
+* bfd_get_arch_size <1>:                 Miscellaneous.      (line   62)
+* bfd_get_current_time:                  Miscellaneous.      (line  473)
+* bfd_get_current_time <1>:              Miscellaneous.      (line  477)
 * bfd_get_debug_link_info:               Opening and Closing.
-                                                             (line  311)
-* bfd_get_debug_link_info_1:             Opening and Closing.
-                                                             (line  289)
-* bfd_get_error:                         Error reporting.    (line   49)
-* bfd_get_file_size:                     Miscellaneous.      (line  490)
-* 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_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_size:                    typedef arelent.    (line  306)
+                                                             (line  266)
+* bfd_get_error:                         Error reporting.    (line   50)
+* bfd_get_error <1>:                     Error reporting.    (line   55)
+* bfd_get_file_size:                     Miscellaneous.      (line  454)
+* bfd_get_file_size <1>:                 Miscellaneous.      (line  458)
+* bfd_get_gp_size:                       Miscellaneous.      (line   92)
+* bfd_get_linker_section:                section prototypes. (line   33)
+* bfd_get_mach:                          Architectures.      (line  657)
+* bfd_get_mtime:                         Miscellaneous.      (line  417)
+* bfd_get_mtime <1>:                     Miscellaneous.      (line  421)
+* bfd_get_next_mapent:                   Archives.           (line   56)
+* bfd_get_next_mapent <1>:               Archives.           (line   60)
+* bfd_get_next_section_by_name:          section prototypes. (line   22)
+* bfd_get_relocated_section_contents:    Miscellaneous.      (line  269)
+* bfd_get_reloc_code_name:               howto manager.      (line 3611)
 * 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 <1>:                      Internal.           (line   24)
+* bfd_get_reloc_upper_bound <1>:         Miscellaneous.      (line   12)
+* bfd_get_section_by_name:               section prototypes. (line   14)
+* bfd_get_section_by_name_if:            section prototypes. (line   41)
+* bfd_get_section_contents:              section prototypes. (line  223)
+* bfd_get_section_contents <1>:          section prototypes. (line  227)
+* bfd_get_sign_extend_vma:               Miscellaneous.      (line   70)
+* bfd_get_sign_extend_vma <1>:           Miscellaneous.      (line   74)
+* bfd_get_size:                          Miscellaneous.      (line  424)
+* bfd_get_size <1>:                      Miscellaneous.      (line  428)
+* bfd_get_size <2>:                      Internal.           (line  102)
 * bfd_get_symtab_upper_bound:            symbol handling functions.
                                                              (line    5)
-* bfd_get_target_info:                   bfd_target.         (line  583)
-* bfd_get_unique_section_name:           section prototypes. (line   65)
+* bfd_get_target_info:                   bfd_target.         (line  560)
+* bfd_get_unique_section_name:           section prototypes. (line   56)
+* bfd_group_signature:                   Miscellaneous.      (line  327)
 * bfd_hash_allocate:                     Creating and Freeing a Hash Table.
                                                              (line   17)
+* bfd_hash_allocate <1>:                 Write Other Derived Routines.
+                                                             (line   79)
+* bfd_hash_entry:                        Write Other Derived Routines.
+                                                             (line   55)
+* bfd_hash_entry <1>:                    Write Other Derived Routines.
+                                                             (line   62)
+* bfd_hash_entry <2>:                    Write Other Derived Routines.
+                                                             (line   90)
+* bfd_hash_insert:                       Write Other Derived Routines.
+                                                             (line   58)
 * bfd_hash_lookup:                       Looking Up or Entering a String.
                                                              (line    6)
+* bfd_hash_lookup <1>:                   Write Other Derived Routines.
+                                                             (line   51)
 * bfd_hash_newfunc:                      Creating and Freeing a Hash Table.
                                                              (line   12)
+* bfd_hash_newfunc <1>:                  Write Other Derived Routines.
+                                                             (line   86)
+* bfd_hash_rename:                       Write Other Derived Routines.
+                                                             (line   65)
+* bfd_hash_rename <1>:                   Write Other Derived Routines.
+                                                             (line   69)
+* bfd_hash_replace:                      Write Other Derived Routines.
+                                                             (line   72)
+* bfd_hash_replace <1>:                  Write Other Derived Routines.
+                                                             (line   76)
 * bfd_hash_set_default_size:             Creating and Freeing a Hash Table.
                                                              (line   25)
+* bfd_hash_set_default_size <1>:         Write Other Derived Routines.
+                                                             (line  100)
 * bfd_hash_table_free:                   Creating and Freeing a Hash Table.
                                                              (line   21)
+* bfd_hash_table_free <1>:               Write Other Derived Routines.
+                                                             (line   45)
+* bfd_hash_table_free <2>:               Write Other Derived Routines.
+                                                             (line   49)
 * bfd_hash_table_init:                   Creating and Freeing a Hash Table.
                                                              (line    6)
+* bfd_hash_table_init <1>:               Write Other Derived Routines.
+                                                             (line   37)
+* bfd_hash_table_init <2>:               Write Other Derived Routines.
+                                                             (line   41)
 * bfd_hash_table_init_n:                 Creating and Freeing a Hash Table.
                                                              (line    6)
+* bfd_hash_table_init_n <1>:             Write Other Derived Routines.
+                                                             (line   28)
+* bfd_hash_table_init_n <2>:             Write Other Derived Routines.
+                                                             (line   32)
 * bfd_hash_traverse:                     Traversing a Hash Table.
                                                              (line    6)
+* bfd_hash_traverse <1>:                 Write Other Derived Routines.
+                                                             (line   93)
+* bfd_hash_traverse <2>:                 Write Other Derived Routines.
+                                                             (line   97)
 * bfd_hide_sym_by_version:               Writing the symbol table.
-                                                             (line  123)
-* bfd_h_put_size:                        Internal.           (line  111)
-* bfd_init:                              Initialization.     (line   10)
-* bfd_install_relocation:                typedef arelent.    (line  382)
+                                                             (line  148)
+* bfd_hide_sym_by_version <1>:           Writing the symbol table.
+                                                             (line  152)
+* bfd_h_put_size:                        Internal.           (line  188)
+* bfd_init:                              Initialization.     (line    3)
+* bfd_install_relocation:                typedef arelent.    (line  331)
+* bfd_install_relocation <1>:            typedef arelent.    (line  335)
 * bfd_is_local_label:                    symbol handling functions.
-                                                             (line   17)
+                                                             (line   16)
+* bfd_is_local_label <1>:                symbol handling functions.
+                                                             (line   20)
 * bfd_is_local_label_name:               symbol handling functions.
-                                                             (line   26)
+                                                             (line   23)
+* bfd_is_local_label_name <1>:           symbol handling functions.
+                                                             (line   27)
 * bfd_is_target_special_symbol:          symbol handling functions.
+                                                             (line   35)
+* bfd_is_target_special_symbol <1>:      symbol handling functions.
                                                              (line   39)
 * bfd_is_undefined_symclass:             symbol handling functions.
-                                                             (line  125)
-* bfd_iterate_over_targets:              bfd_target.         (line  618)
+                                                             (line  111)
+* bfd_is_undefined_symclass <1>:         symbol handling functions.
+                                                             (line  115)
+* bfd_iterate_over_targets:              bfd_target.         (line  590)
+* bfd_link_align_section:                Writing the symbol table.
+                                                             (line   65)
+* bfd_link_align_section <1>:            Writing the symbol table.
+                                                             (line   69)
 * bfd_link_check_relocs:                 Writing the symbol table.
-                                                             (line  133)
+                                                             (line  156)
+* bfd_link_check_relocs <1>:             Writing the symbol table.
+                                                             (line  160)
+* bfd_link_hash_entry:                   Writing the symbol table.
+                                                             (line  129)
 * bfd_link_split_section:                Writing the symbol table.
-                                                             (line   43)
-* bfd_log2:                              Internal.           (line  180)
-* bfd_lookup_arch:                       Architectures.      (line  691)
+                                                             (line   82)
+* bfd_link_split_section <1>:            Writing the symbol table.
+                                                             (line   86)
+* bfd_lock:                              Threading.          (line   46)
+* bfd_lock <1>:                          Threading.          (line   50)
+* bfd_log2:                              Internal.           (line  280)
+* bfd_lookup_arch:                       Architectures.      (line  698)
 * bfd_make_debug_symbol:                 symbol handling functions.
-                                                             (line  106)
+                                                             (line   95)
 * bfd_make_empty_symbol:                 symbol handling functions.
-                                                             (line   81)
+                                                             (line   73)
 * bfd_make_readable:                     Opening and Closing.
-                                                             (line  225)
-* bfd_make_section:                      section prototypes. (line  143)
-* bfd_make_section_anyway:               section prototypes. (line  115)
-* bfd_make_section_anyway_with_flags:    section prototypes. (line   97)
-* bfd_make_section_old_way:              section prototypes. (line   77)
-* bfd_make_section_with_flags:           section prototypes. (line  131)
+                                                             (line  244)
+* bfd_make_readable <1>:                 Opening and Closing.
+                                                             (line  248)
+* bfd_make_section:                      section prototypes. (line  128)
+* bfd_make_section_anyway:               section prototypes. (line  102)
+* bfd_make_section_anyway_with_flags:    section prototypes. (line   86)
+* bfd_make_section_old_way:              section prototypes. (line   67)
+* bfd_make_section_with_flags:           section prototypes. (line  117)
 * bfd_make_writable:                     Opening and Closing.
-                                                             (line  211)
-* bfd_malloc_and_get_section:            section prototypes. (line  269)
-* bfd_map_over_sections:                 section prototypes. (line  176)
+                                                             (line  233)
+* bfd_make_writable <1>:                 Opening and Closing.
+                                                             (line  237)
+* bfd_malloc:                            Internal.           (line   11)
+* bfd_malloc_and_get_section:            section prototypes. (line  238)
+* bfd_malloc_and_get_section <1>:        section prototypes. (line  242)
+* bfd_map_over_sections:                 section prototypes. (line  156)
+* bfd_map_over_sections <1>:             section prototypes. (line  160)
 * bfd_merge_private_bfd_data:            Writing the symbol table.
-                                                             (line  155)
-* bfd_mmap:                              Miscellaneous.      (line  499)
-* bfd_octets_per_byte:                   Architectures.      (line  714)
+                                                             (line  174)
+* bfd_merge_private_bfd_data <1>:        Writing the symbol table.
+                                                             (line  178)
+* bfd_mmap:                              Miscellaneous.      (line  462)
+* bfd_octets_per_byte:                   Architectures.      (line  717)
 * bfd_openr:                             Opening and Closing.
-                                                             (line   37)
+                                                             (line   50)
 * bfd_openr_iovec:                       Opening and Closing.
-                                                             (line   95)
-* bfd_openr_next_archived_file:          Archives.           (line   83)
+                                                             (line  112)
+* bfd_openr_next_archived_file:          Archives.           (line   79)
 * bfd_openstreamr:                       Opening and Closing.
-                                                             (line   82)
+                                                             (line  101)
 * bfd_openw:                             Opening and Closing.
-                                                             (line  146)
-* 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)
+                                                             (line  155)
+* bfd_open_file:                         File Caching.       (line   64)
+* bfd_open_file <1>:                     File Caching.       (line   68)
+* bfd_perform_relocation:                typedef arelent.    (line  311)
+* bfd_perform_relocation <1>:            typedef arelent.    (line  315)
+* bfd_perror:                            Error reporting.    (line   82)
+* bfd_perror <1>:                        Error reporting.    (line   86)
+* bfd_printable_arch_mach:               Architectures.      (line  707)
+* bfd_printable_name:                    Architectures.      (line  590)
+* bfd_print_error:                       Error reporting.    (line  116)
+* bfd_print_error <1>:                   Error reporting.    (line  121)
 * bfd_print_symbol_vandf:                symbol handling functions.
-                                                             (line   73)
-* bfd_put_size:                          Internal.           (line   21)
-* BFD_RELOC_12_PCREL:                    howto manager.      (line   37)
-* BFD_RELOC_14:                          howto manager.      (line   30)
-* BFD_RELOC_16:                          howto manager.      (line   29)
+                                                             (line   65)
+* bfd_print_symbol_vandf <1>:            symbol handling functions.
+                                                             (line   69)
+* bfd_put_size:                          Internal.           (line   99)
+* bfd_read:                              Miscellaneous.      (line  373)
+* bfd_read <1>:                          Miscellaneous.      (line  377)
+* bfd_realloc:                           Internal.           (line   20)
+* bfd_realloc_or_free:                   Internal.           (line   38)
+* bfd_record_phdr:                       Miscellaneous.      (line  279)
+* bfd_record_phdr <1>:                   Miscellaneous.      (line  283)
+* bfd_release:                           Internal.           (line   84)
+* bfd_release <1>:                       Internal.           (line   88)
+* BFD_RELOC_12_PCREL:                    howto manager.      (line   36)
+* BFD_RELOC_14:                          howto manager.      (line   29)
+* BFD_RELOC_16:                          howto manager.      (line   28)
 * BFD_RELOC_16_BASEREL:                  howto manager.      (line   90)
 * BFD_RELOC_16_GOTOFF:                   howto manager.      (line   49)
 * BFD_RELOC_16_GOT_PCREL:                howto manager.      (line   46)
-* BFD_RELOC_16_PCREL:                    howto manager.      (line   36)
+* BFD_RELOC_16_PCREL:                    howto manager.      (line   35)
 * BFD_RELOC_16_PCREL_S2:                 howto manager.      (line  100)
 * BFD_RELOC_16_PLTOFF:                   howto manager.      (line   61)
 * BFD_RELOC_16_PLT_PCREL:                howto manager.      (line   57)
+* BFD_RELOC_16_SECIDX:                   howto manager.      (line   43)
 * BFD_RELOC_23_PCREL_S2:                 howto manager.      (line  101)
-* BFD_RELOC_24:                          howto manager.      (line   28)
-* BFD_RELOC_24_PCREL:                    howto manager.      (line   35)
+* BFD_RELOC_24:                          howto manager.      (line   27)
+* BFD_RELOC_24_PCREL:                    howto manager.      (line   34)
 * BFD_RELOC_24_PLT_PCREL:                howto manager.      (line   56)
-* BFD_RELOC_26:                          howto manager.      (line   27)
-* BFD_RELOC_32:                          howto manager.      (line   26)
+* BFD_RELOC_26:                          howto manager.      (line   26)
+* BFD_RELOC_32:                          howto manager.      (line   25)
 * BFD_RELOC_32_BASEREL:                  howto manager.      (line   89)
 * BFD_RELOC_32_GOTOFF:                   howto manager.      (line   48)
 * BFD_RELOC_32_GOT_PCREL:                howto manager.      (line   45)
-* BFD_RELOC_32_PCREL:                    howto manager.      (line   34)
+* BFD_RELOC_32_PCREL:                    howto manager.      (line   33)
 * BFD_RELOC_32_PCREL_S2:                 howto manager.      (line   99)
 * BFD_RELOC_32_PLTOFF:                   howto manager.      (line   60)
 * BFD_RELOC_32_PLT_PCREL:                howto manager.      (line   55)
-* BFD_RELOC_32_SECREL:                   howto manager.      (line   43)
+* BFD_RELOC_32_SECREL:                   howto manager.      (line   42)
 * BFD_RELOC_386_COPY:                    howto manager.      (line  523)
 * BFD_RELOC_386_GLOB_DAT:                howto manager.      (line  524)
 * BFD_RELOC_386_GOT32:                   howto manager.      (line  521)
@@ -12264,63 +12127,63 @@ BFD Index
 * BFD_RELOC_386_TLS_LE_32:               howto manager.      (line  537)
 * BFD_RELOC_386_TLS_TPOFF:               howto manager.      (line  529)
 * BFD_RELOC_386_TLS_TPOFF32:             howto manager.      (line  540)
-* BFD_RELOC_390_12:                      howto manager.      (line 1950)
-* BFD_RELOC_390_20:                      howto manager.      (line 2031)
-* BFD_RELOC_390_COPY:                    howto manager.      (line 1956)
-* BFD_RELOC_390_GLOB_DAT:                howto manager.      (line 1958)
-* BFD_RELOC_390_GOT12:                   howto manager.      (line 1952)
-* BFD_RELOC_390_GOT16:                   howto manager.      (line 1966)
-* BFD_RELOC_390_GOT20:                   howto manager.      (line 2032)
-* BFD_RELOC_390_GOT64:                   howto manager.      (line 1986)
-* BFD_RELOC_390_GOTENT:                  howto manager.      (line 1990)
-* BFD_RELOC_390_GOTOFF64:                howto manager.      (line 1992)
-* BFD_RELOC_390_GOTPC:                   howto manager.      (line 1964)
-* BFD_RELOC_390_GOTPCDBL:                howto manager.      (line 1984)
-* BFD_RELOC_390_GOTPLT12:                howto manager.      (line 1994)
-* BFD_RELOC_390_GOTPLT16:                howto manager.      (line 1996)
-* BFD_RELOC_390_GOTPLT20:                howto manager.      (line 2033)
-* BFD_RELOC_390_GOTPLT32:                howto manager.      (line 1998)
-* BFD_RELOC_390_GOTPLT64:                howto manager.      (line 2000)
-* BFD_RELOC_390_GOTPLTENT:               howto manager.      (line 2002)
-* BFD_RELOC_390_IRELATIVE:               howto manager.      (line 2036)
-* BFD_RELOC_390_JMP_SLOT:                howto manager.      (line 1960)
-* BFD_RELOC_390_PC12DBL:                 howto manager.      (line 1968)
-* BFD_RELOC_390_PC16DBL:                 howto manager.      (line 1972)
-* BFD_RELOC_390_PC24DBL:                 howto manager.      (line 1976)
-* BFD_RELOC_390_PC32DBL:                 howto manager.      (line 1980)
-* BFD_RELOC_390_PLT12DBL:                howto manager.      (line 1970)
-* BFD_RELOC_390_PLT16DBL:                howto manager.      (line 1974)
-* BFD_RELOC_390_PLT24DBL:                howto manager.      (line 1978)
-* BFD_RELOC_390_PLT32:                   howto manager.      (line 1954)
-* BFD_RELOC_390_PLT32DBL:                howto manager.      (line 1982)
-* BFD_RELOC_390_PLT64:                   howto manager.      (line 1988)
-* BFD_RELOC_390_PLTOFF16:                howto manager.      (line 2004)
-* BFD_RELOC_390_PLTOFF32:                howto manager.      (line 2006)
-* BFD_RELOC_390_PLTOFF64:                howto manager.      (line 2008)
-* BFD_RELOC_390_RELATIVE:                howto manager.      (line 1962)
-* BFD_RELOC_390_TLS_DTPMOD:              howto manager.      (line 2027)
-* BFD_RELOC_390_TLS_DTPOFF:              howto manager.      (line 2028)
-* BFD_RELOC_390_TLS_GD32:                howto manager.      (line 2013)
-* BFD_RELOC_390_TLS_GD64:                howto manager.      (line 2014)
-* BFD_RELOC_390_TLS_GDCALL:              howto manager.      (line 2011)
-* BFD_RELOC_390_TLS_GOTIE12:             howto manager.      (line 2015)
-* BFD_RELOC_390_TLS_GOTIE20:             howto manager.      (line 2034)
-* BFD_RELOC_390_TLS_GOTIE32:             howto manager.      (line 2016)
-* BFD_RELOC_390_TLS_GOTIE64:             howto manager.      (line 2017)
-* BFD_RELOC_390_TLS_IE32:                howto manager.      (line 2020)
-* BFD_RELOC_390_TLS_IE64:                howto manager.      (line 2021)
-* BFD_RELOC_390_TLS_IEENT:               howto manager.      (line 2022)
-* BFD_RELOC_390_TLS_LDCALL:              howto manager.      (line 2012)
-* BFD_RELOC_390_TLS_LDM32:               howto manager.      (line 2018)
-* BFD_RELOC_390_TLS_LDM64:               howto manager.      (line 2019)
-* BFD_RELOC_390_TLS_LDO32:               howto manager.      (line 2025)
-* BFD_RELOC_390_TLS_LDO64:               howto manager.      (line 2026)
-* BFD_RELOC_390_TLS_LE32:                howto manager.      (line 2023)
-* BFD_RELOC_390_TLS_LE64:                howto manager.      (line 2024)
-* BFD_RELOC_390_TLS_LOAD:                howto manager.      (line 2010)
-* BFD_RELOC_390_TLS_TPOFF:               howto manager.      (line 2029)
-* BFD_RELOC_64:                          howto manager.      (line   25)
-* BFD_RELOC_64_PCREL:                    howto manager.      (line   33)
+* BFD_RELOC_390_12:                      howto manager.      (line 1962)
+* BFD_RELOC_390_20:                      howto manager.      (line 2043)
+* BFD_RELOC_390_COPY:                    howto manager.      (line 1968)
+* BFD_RELOC_390_GLOB_DAT:                howto manager.      (line 1970)
+* BFD_RELOC_390_GOT12:                   howto manager.      (line 1964)
+* BFD_RELOC_390_GOT16:                   howto manager.      (line 1978)
+* BFD_RELOC_390_GOT20:                   howto manager.      (line 2044)
+* BFD_RELOC_390_GOT64:                   howto manager.      (line 1998)
+* BFD_RELOC_390_GOTENT:                  howto manager.      (line 2002)
+* BFD_RELOC_390_GOTOFF64:                howto manager.      (line 2004)
+* BFD_RELOC_390_GOTPC:                   howto manager.      (line 1976)
+* BFD_RELOC_390_GOTPCDBL:                howto manager.      (line 1996)
+* BFD_RELOC_390_GOTPLT12:                howto manager.      (line 2006)
+* BFD_RELOC_390_GOTPLT16:                howto manager.      (line 2008)
+* BFD_RELOC_390_GOTPLT20:                howto manager.      (line 2045)
+* BFD_RELOC_390_GOTPLT32:                howto manager.      (line 2010)
+* BFD_RELOC_390_GOTPLT64:                howto manager.      (line 2012)
+* BFD_RELOC_390_GOTPLTENT:               howto manager.      (line 2014)
+* BFD_RELOC_390_IRELATIVE:               howto manager.      (line 2048)
+* BFD_RELOC_390_JMP_SLOT:                howto manager.      (line 1972)
+* BFD_RELOC_390_PC12DBL:                 howto manager.      (line 1980)
+* BFD_RELOC_390_PC16DBL:                 howto manager.      (line 1984)
+* BFD_RELOC_390_PC24DBL:                 howto manager.      (line 1988)
+* BFD_RELOC_390_PC32DBL:                 howto manager.      (line 1992)
+* BFD_RELOC_390_PLT12DBL:                howto manager.      (line 1982)
+* BFD_RELOC_390_PLT16DBL:                howto manager.      (line 1986)
+* BFD_RELOC_390_PLT24DBL:                howto manager.      (line 1990)
+* BFD_RELOC_390_PLT32:                   howto manager.      (line 1966)
+* BFD_RELOC_390_PLT32DBL:                howto manager.      (line 1994)
+* BFD_RELOC_390_PLT64:                   howto manager.      (line 2000)
+* BFD_RELOC_390_PLTOFF16:                howto manager.      (line 2016)
+* BFD_RELOC_390_PLTOFF32:                howto manager.      (line 2018)
+* BFD_RELOC_390_PLTOFF64:                howto manager.      (line 2020)
+* BFD_RELOC_390_RELATIVE:                howto manager.      (line 1974)
+* BFD_RELOC_390_TLS_DTPMOD:              howto manager.      (line 2039)
+* BFD_RELOC_390_TLS_DTPOFF:              howto manager.      (line 2040)
+* BFD_RELOC_390_TLS_GD32:                howto manager.      (line 2025)
+* BFD_RELOC_390_TLS_GD64:                howto manager.      (line 2026)
+* BFD_RELOC_390_TLS_GDCALL:              howto manager.      (line 2023)
+* BFD_RELOC_390_TLS_GOTIE12:             howto manager.      (line 2027)
+* BFD_RELOC_390_TLS_GOTIE20:             howto manager.      (line 2046)
+* BFD_RELOC_390_TLS_GOTIE32:             howto manager.      (line 2028)
+* BFD_RELOC_390_TLS_GOTIE64:             howto manager.      (line 2029)
+* BFD_RELOC_390_TLS_IE32:                howto manager.      (line 2032)
+* BFD_RELOC_390_TLS_IE64:                howto manager.      (line 2033)
+* BFD_RELOC_390_TLS_IEENT:               howto manager.      (line 2034)
+* BFD_RELOC_390_TLS_LDCALL:              howto manager.      (line 2024)
+* BFD_RELOC_390_TLS_LDM32:               howto manager.      (line 2030)
+* BFD_RELOC_390_TLS_LDM64:               howto manager.      (line 2031)
+* BFD_RELOC_390_TLS_LDO32:               howto manager.      (line 2037)
+* BFD_RELOC_390_TLS_LDO64:               howto manager.      (line 2038)
+* BFD_RELOC_390_TLS_LE32:                howto manager.      (line 2035)
+* BFD_RELOC_390_TLS_LE64:                howto manager.      (line 2036)
+* BFD_RELOC_390_TLS_LOAD:                howto manager.      (line 2022)
+* BFD_RELOC_390_TLS_TPOFF:               howto manager.      (line 2041)
+* BFD_RELOC_64:                          howto manager.      (line   24)
+* BFD_RELOC_64_PCREL:                    howto manager.      (line   32)
 * BFD_RELOC_64_PLTOFF:                   howto manager.      (line   59)
 * BFD_RELOC_64_PLT_PCREL:                howto manager.      (line   54)
 * BFD_RELOC_68K_GLOB_DAT:                howto manager.      (line   70)
@@ -12341,159 +12204,160 @@ BFD Index
 * BFD_RELOC_68K_TLS_LE16:                howto manager.      (line   86)
 * BFD_RELOC_68K_TLS_LE32:                howto manager.      (line   85)
 * BFD_RELOC_68K_TLS_LE8:                 howto manager.      (line   87)
-* BFD_RELOC_8:                           howto manager.      (line   31)
+* BFD_RELOC_8:                           howto manager.      (line   30)
 * BFD_RELOC_8_BASEREL:                   howto manager.      (line   94)
 * BFD_RELOC_8_FFnn:                      howto manager.      (line   97)
 * BFD_RELOC_8_GOTOFF:                    howto manager.      (line   53)
 * BFD_RELOC_8_GOT_PCREL:                 howto manager.      (line   47)
-* BFD_RELOC_8_PCREL:                     howto manager.      (line   38)
+* BFD_RELOC_8_PCREL:                     howto manager.      (line   37)
 * 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 2850)
+* BFD_RELOC_AARCH64_16_PCREL:            howto manager.      (line 2856)
+* BFD_RELOC_AARCH64_32:                  howto manager.      (line 2849)
+* BFD_RELOC_AARCH64_32_PCREL:            howto manager.      (line 2855)
+* BFD_RELOC_AARCH64_64:                  howto manager.      (line 2848)
+* BFD_RELOC_AARCH64_64_PCREL:            howto manager.      (line 2854)
+* BFD_RELOC_AARCH64_ADD_LO12:            howto manager.      (line 2929)
+* BFD_RELOC_AARCH64_ADR_GOT_PAGE:        howto manager.      (line 2975)
+* BFD_RELOC_AARCH64_ADR_HI21_NC_PCREL:   howto manager.      (line 2925)
+* BFD_RELOC_AARCH64_ADR_HI21_PCREL:      howto manager.      (line 2922)
+* BFD_RELOC_AARCH64_ADR_LO21_PCREL:      howto manager.      (line 2919)
+* BFD_RELOC_AARCH64_BRANCH19:            howto manager.      (line 2941)
+* BFD_RELOC_AARCH64_BRANCH9:             howto manager.      (line 3182)
+* BFD_RELOC_AARCH64_CALL26:              howto manager.      (line 2949)
+* BFD_RELOC_AARCH64_COPY:                howto manager.      (line 3134)
+* BFD_RELOC_AARCH64_GAS_INTERNAL_FIXUP:  howto manager.      (line 3152)
+* BFD_RELOC_AARCH64_GLOB_DAT:            howto manager.      (line 3135)
+* BFD_RELOC_AARCH64_GOT_LD_PREL19:       howto manager.      (line 2969)
+* BFD_RELOC_AARCH64_IRELATIVE:           howto manager.      (line 3144)
+* BFD_RELOC_AARCH64_JUMP26:              howto manager.      (line 2945)
+* BFD_RELOC_AARCH64_JUMP_SLOT:           howto manager.      (line 3136)
+* BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14:   howto manager.      (line 2996)
+* BFD_RELOC_AARCH64_LD32_GOT_LO12_NC:    howto manager.      (line 2983)
+* BFD_RELOC_AARCH64_LD64_GOTOFF_LO15:    howto manager.      (line 2993)
+* BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15:   howto manager.      (line 2999)
+* BFD_RELOC_AARCH64_LD64_GOT_LO12_NC:    howto manager.      (line 2979)
+* BFD_RELOC_AARCH64_LDST128_LO12:        howto manager.      (line 2965)
+* BFD_RELOC_AARCH64_LDST16_LO12:         howto manager.      (line 2953)
+* BFD_RELOC_AARCH64_LDST32_LO12:         howto manager.      (line 2957)
+* BFD_RELOC_AARCH64_LDST64_LO12:         howto manager.      (line 2961)
+* BFD_RELOC_AARCH64_LDST8_LO12:          howto manager.      (line 2933)
+* BFD_RELOC_AARCH64_LDST_LO12:           howto manager.      (line 3155)
+* BFD_RELOC_AARCH64_LD_GOT_LO12_NC:      howto manager.      (line 3173)
+* BFD_RELOC_AARCH64_LD_LO19_PCREL:       howto manager.      (line 2915)
+* BFD_RELOC_AARCH64_MOVW_G0:             howto manager.      (line 2859)
+* BFD_RELOC_AARCH64_MOVW_G0_NC:          howto manager.      (line 2862)
+* BFD_RELOC_AARCH64_MOVW_G0_S:           howto manager.      (line 2880)
+* BFD_RELOC_AARCH64_MOVW_G1:             howto manager.      (line 2865)
+* BFD_RELOC_AARCH64_MOVW_G1_NC:          howto manager.      (line 2868)
+* BFD_RELOC_AARCH64_MOVW_G1_S:           howto manager.      (line 2884)
+* BFD_RELOC_AARCH64_MOVW_G2:             howto manager.      (line 2871)
+* BFD_RELOC_AARCH64_MOVW_G2_NC:          howto manager.      (line 2874)
+* BFD_RELOC_AARCH64_MOVW_G2_S:           howto manager.      (line 2888)
+* BFD_RELOC_AARCH64_MOVW_G3:             howto manager.      (line 2877)
+* BFD_RELOC_AARCH64_MOVW_GOTOFF_G0_NC:   howto manager.      (line 2987)
+* BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:      howto manager.      (line 2990)
+* BFD_RELOC_AARCH64_MOVW_PREL_G0:        howto manager.      (line 2892)
+* BFD_RELOC_AARCH64_MOVW_PREL_G0_NC:     howto manager.      (line 2896)
+* BFD_RELOC_AARCH64_MOVW_PREL_G1:        howto manager.      (line 2900)
+* BFD_RELOC_AARCH64_MOVW_PREL_G1_NC:     howto manager.      (line 2903)
+* BFD_RELOC_AARCH64_MOVW_PREL_G2:        howto manager.      (line 2906)
+* BFD_RELOC_AARCH64_MOVW_PREL_G2_NC:     howto manager.      (line 2909)
+* BFD_RELOC_AARCH64_MOVW_PREL_G3:        howto manager.      (line 2912)
+* BFD_RELOC_AARCH64_NONE:                howto manager.      (line 2846)
+* BFD_RELOC_AARCH64_NULL:                howto manager.      (line 2844)
+* BFD_RELOC_AARCH64_RELATIVE:            howto manager.      (line 3137)
+* BFD_RELOC_AARCH64_RELOC_END:           howto manager.      (line 3146)
+* BFD_RELOC_AARCH64_RELOC_START:         howto manager.      (line 2839)
+* BFD_RELOC_AARCH64_TLSDESC:             howto manager.      (line 3142)
+* BFD_RELOC_AARCH64_TLSDESC_ADD:         howto manager.      (line 3131)
+* BFD_RELOC_AARCH64_TLSDESC_ADD_LO12:    howto manager.      (line 3127)
+* BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:  howto manager.      (line 3124)
+* BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:  howto manager.      (line 3123)
+* BFD_RELOC_AARCH64_TLSDESC_CALL:        howto manager.      (line 3132)
+* BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC: howto manager.     (line 3126)
+* BFD_RELOC_AARCH64_TLSDESC_LD64_LO12:   howto manager.      (line 3125)
+* BFD_RELOC_AARCH64_TLSDESC_LDR:         howto manager.      (line 3130)
+* BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC:  howto manager.      (line 3179)
+* BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:   howto manager.      (line 3122)
+* BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:   howto manager.      (line 3129)
+* BFD_RELOC_AARCH64_TLSDESC_OFF_G1:      howto manager.      (line 3128)
+* BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:   howto manager.      (line 3009)
+* BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:    howto manager.      (line 3002)
+* BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:    howto manager.      (line 3007)
+* BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:    howto manager.      (line 3013)
+* BFD_RELOC_AARCH64_TLSGD_MOVW_G1:       howto manager.      (line 3015)
 * BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21: howto manager.
-                                                             (line 2928)
+                                                             (line 3017)
 * BFD_RELOC_AARCH64_TLSIE_LD32_GOTTPREL_LO12_NC: howto manager.
-                                                             (line 2932)
+                                                             (line 3021)
 * BFD_RELOC_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC: howto manager.
-                                                             (line 2930)
+                                                             (line 3019)
 * BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC: howto manager.
-                                                             (line 3101)
-* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 2934)
+                                                             (line 3176)
+* BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19: howto manager. (line 3023)
 * 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 3025)
+* BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1: howto manager.   (line 3027)
+* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12: howto manager.    (line 3029)
+* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12: howto manager.    (line 3031)
+* BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC: howto manager. (line 3033)
+* BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:   howto manager.      (line 3036)
+* BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:    howto manager.      (line 3040)
+* BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:    howto manager.      (line 3043)
+* BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12: howto manager. (line 3046)
 * BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC: howto manager.
-                                                             (line 2960)
-* BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12: howto manager. (line 2963)
+                                                             (line 3049)
+* BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12: howto manager. (line 3052)
 * BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC: howto manager.
-                                                             (line 2966)
-* BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12: howto manager. (line 2969)
+                                                             (line 3055)
+* BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12: howto manager. (line 3058)
 * BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC: howto manager.
-                                                             (line 2972)
-* BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12: howto manager.  (line 2975)
+                                                             (line 3061)
+* BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12: howto manager.  (line 3064)
 * BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC: howto manager.
-                                                             (line 2978)
-* BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12: howto manager.   (line 3084)
+                                                             (line 3067)
+* BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12: howto manager.   (line 3159)
 * 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 3163)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0: howto manager.     (line 3070)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC: howto manager.  (line 3072)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1: howto manager.     (line 3075)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC: howto manager.  (line 3077)
+* BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2: howto manager.     (line 3080)
+* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12: howto manager.     (line 3092)
+* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12: howto manager.     (line 3094)
+* BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_LO12_NC: howto manager.  (line 3096)
+* BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12: howto manager.  (line 3098)
 * BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC: howto manager.
-                                                             (line 3010)
-* BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12: howto manager.  (line 3013)
+                                                             (line 3101)
+* BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12: howto manager.  (line 3104)
 * BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC: howto manager.
-                                                             (line 3016)
-* BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12: howto manager.  (line 3019)
+                                                             (line 3107)
+* BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12: howto manager.  (line 3110)
 * BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC: howto manager.
-                                                             (line 3022)
-* BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12: howto manager.   (line 3025)
+                                                             (line 3113)
+* BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12: howto manager.   (line 3116)
 * 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)
-* 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)
-* BFD_RELOC_AC_SECTOFF_U8:               howto manager.      (line 1059)
-* BFD_RELOC_AC_SECTOFF_U8_1:             howto manager.      (line 1060)
-* BFD_RELOC_AC_SECTOFF_U8_2:             howto manager.      (line 1061)
+                                                             (line 3119)
+* BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12: howto manager.    (line 3166)
+* BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC: howto manager. (line 3170)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0: howto manager.      (line 3088)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC: howto manager.   (line 3090)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1: howto manager.      (line 3084)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC: howto manager.   (line 3086)
+* BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2: howto manager.      (line 3082)
+* BFD_RELOC_AARCH64_TLS_DTPMOD:          howto manager.      (line 3139)
+* BFD_RELOC_AARCH64_TLS_DTPREL:          howto manager.      (line 3140)
+* BFD_RELOC_AARCH64_TLS_TPREL:           howto manager.      (line 3141)
+* BFD_RELOC_AARCH64_TSTBR14:             howto manager.      (line 2937)
+* BFD_RELOC_AC_SECTOFF_S9:               howto manager.      (line 1085)
+* BFD_RELOC_AC_SECTOFF_S9_1:             howto manager.      (line 1086)
+* BFD_RELOC_AC_SECTOFF_S9_2:             howto manager.      (line 1087)
+* BFD_RELOC_AC_SECTOFF_U8:               howto manager.      (line 1082)
+* BFD_RELOC_AC_SECTOFF_U8_1:             howto manager.      (line 1083)
+* BFD_RELOC_AC_SECTOFF_U8_2:             howto manager.      (line 1084)
 * BFD_RELOC_ALPHA_BOH:                   howto manager.      (line  288)
 * BFD_RELOC_ALPHA_BRSGP:                 howto manager.      (line  275)
 * BFD_RELOC_ALPHA_BSR:                   howto manager.      (line  282)
@@ -12523,462 +12387,461 @@ BFD Index
 * BFD_RELOC_ALPHA_TPREL64:               howto manager.      (line  300)
 * BFD_RELOC_ALPHA_TPREL_HI16:            howto manager.      (line  301)
 * BFD_RELOC_ALPHA_TPREL_LO16:            howto manager.      (line  302)
-* BFD_RELOC_ARC_16:                      howto manager.      (line 1031)
-* BFD_RELOC_ARC_24:                      howto manager.      (line 1032)
-* BFD_RELOC_ARC_32:                      howto manager.      (line 1033)
-* BFD_RELOC_ARC_32_ME:                   howto manager.      (line 1053)
-* BFD_RELOC_ARC_32_ME_S:                 howto manager.      (line 1054)
-* BFD_RELOC_ARC_32_PCREL:                howto manager.      (line 1071)
-* BFD_RELOC_ARC_8:                       howto manager.      (line 1030)
-* BFD_RELOC_ARC_COPY:                    howto manager.      (line 1076)
-* BFD_RELOC_ARC_GLOB_DAT:                howto manager.      (line 1077)
-* BFD_RELOC_ARC_GOT32:                   howto manager.      (line 1073)
-* BFD_RELOC_ARC_GOTOFF:                  howto manager.      (line 1080)
-* BFD_RELOC_ARC_GOTPC:                   howto manager.      (line 1081)
-* BFD_RELOC_ARC_GOTPC32:                 howto manager.      (line 1074)
-* BFD_RELOC_ARC_JLI_SECTOFF:             howto manager.      (line 1097)
-* BFD_RELOC_ARC_JMP_SLOT:                howto manager.      (line 1078)
-* BFD_RELOC_ARC_N16:                     howto manager.      (line 1035)
-* BFD_RELOC_ARC_N24:                     howto manager.      (line 1036)
-* BFD_RELOC_ARC_N32:                     howto manager.      (line 1037)
-* BFD_RELOC_ARC_N32_ME:                  howto manager.      (line 1055)
-* BFD_RELOC_ARC_N8:                      howto manager.      (line 1034)
-* BFD_RELOC_ARC_NONE:                    howto manager.      (line 1029)
-* BFD_RELOC_ARC_NPS_CMEM16:              howto manager.      (line 1096)
-* BFD_RELOC_ARC_PC32:                    howto manager.      (line 1072)
-* BFD_RELOC_ARC_PLT32:                   howto manager.      (line 1075)
-* BFD_RELOC_ARC_RELATIVE:                howto manager.      (line 1079)
-* BFD_RELOC_ARC_S13_PCREL:               howto manager.      (line 1051)
-* BFD_RELOC_ARC_S21H_PCREL:              howto manager.      (line 1040)
-* BFD_RELOC_ARC_S21H_PCREL_PLT:          howto manager.      (line 1095)
-* BFD_RELOC_ARC_S21W_PCREL:              howto manager.      (line 1041)
-* BFD_RELOC_ARC_S21W_PCREL_PLT:          howto manager.      (line 1082)
-* BFD_RELOC_ARC_S25H_PCREL:              howto manager.      (line 1042)
-* BFD_RELOC_ARC_S25H_PCREL_PLT:          howto manager.      (line 1083)
-* BFD_RELOC_ARC_S25W_PCREL:              howto manager.      (line 1043)
-* BFD_RELOC_ARC_S25W_PCREL_PLT:          howto manager.      (line 1094)
-* BFD_RELOC_ARC_SDA:                     howto manager.      (line 1038)
-* BFD_RELOC_ARC_SDA16_LD:                howto manager.      (line 1048)
-* BFD_RELOC_ARC_SDA16_LD1:               howto manager.      (line 1049)
-* BFD_RELOC_ARC_SDA16_LD2:               howto manager.      (line 1050)
-* BFD_RELOC_ARC_SDA16_ST2:               howto manager.      (line 1070)
-* BFD_RELOC_ARC_SDA32:                   howto manager.      (line 1044)
-* BFD_RELOC_ARC_SDA32_ME:                howto manager.      (line 1057)
-* BFD_RELOC_ARC_SDA_12:                  howto manager.      (line 1069)
-* BFD_RELOC_ARC_SDA_LDST:                howto manager.      (line 1045)
-* BFD_RELOC_ARC_SDA_LDST1:               howto manager.      (line 1046)
-* BFD_RELOC_ARC_SDA_LDST2:               howto manager.      (line 1047)
-* BFD_RELOC_ARC_SECTOFF:                 howto manager.      (line 1039)
-* BFD_RELOC_ARC_SECTOFF_1:               howto manager.      (line 1067)
-* BFD_RELOC_ARC_SECTOFF_2:               howto manager.      (line 1068)
-* BFD_RELOC_ARC_SECTOFF_ME:              howto manager.      (line 1056)
-* BFD_RELOC_ARC_SECTOFF_ME_1:            howto manager.      (line 1065)
-* BFD_RELOC_ARC_SECTOFF_ME_2:            howto manager.      (line 1066)
-* BFD_RELOC_ARC_TLS_DTPMOD:              howto manager.      (line 1084)
-* BFD_RELOC_ARC_TLS_DTPOFF:              howto manager.      (line 1090)
-* BFD_RELOC_ARC_TLS_DTPOFF_S9:           howto manager.      (line 1091)
-* BFD_RELOC_ARC_TLS_GD_CALL:             howto manager.      (line 1088)
-* BFD_RELOC_ARC_TLS_GD_GOT:              howto manager.      (line 1086)
-* BFD_RELOC_ARC_TLS_GD_LD:               howto manager.      (line 1087)
-* BFD_RELOC_ARC_TLS_IE_GOT:              howto manager.      (line 1089)
-* BFD_RELOC_ARC_TLS_LE_32:               howto manager.      (line 1093)
-* BFD_RELOC_ARC_TLS_LE_S9:               howto manager.      (line 1092)
-* BFD_RELOC_ARC_TLS_TPOFF:               howto manager.      (line 1085)
-* BFD_RELOC_ARC_W:                       howto manager.      (line 1052)
-* BFD_RELOC_ARC_W_ME:                    howto manager.      (line 1058)
-* BFD_RELOC_ARM_ADRL_IMMEDIATE:          howto manager.      (line  902)
-* BFD_RELOC_ARM_ADR_IMM:                 howto manager.      (line  917)
-* BFD_RELOC_ARM_ALU_PC_G0:               howto manager.      (line  864)
-* BFD_RELOC_ARM_ALU_PC_G0_NC:            howto manager.      (line  863)
-* BFD_RELOC_ARM_ALU_PC_G1:               howto manager.      (line  866)
-* BFD_RELOC_ARM_ALU_PC_G1_NC:            howto manager.      (line  865)
-* BFD_RELOC_ARM_ALU_PC_G2:               howto manager.      (line  867)
-* BFD_RELOC_ARM_ALU_SB_G0:               howto manager.      (line  878)
-* BFD_RELOC_ARM_ALU_SB_G0_NC:            howto manager.      (line  877)
-* BFD_RELOC_ARM_ALU_SB_G1:               howto manager.      (line  880)
-* BFD_RELOC_ARM_ALU_SB_G1_NC:            howto manager.      (line  879)
-* BFD_RELOC_ARM_ALU_SB_G2:               howto manager.      (line  881)
-* BFD_RELOC_ARM_CP_OFF_IMM:              howto manager.      (line  912)
-* BFD_RELOC_ARM_CP_OFF_IMM_S2:           howto manager.      (line  913)
-* BFD_RELOC_ARM_FUNCDESC:                howto manager.      (line  833)
-* BFD_RELOC_ARM_FUNCDESC_VALUE:          howto manager.      (line  834)
-* BFD_RELOC_ARM_GLOB_DAT:                howto manager.      (line  840)
-* BFD_RELOC_ARM_GOT32:                   howto manager.      (line  841)
-* BFD_RELOC_ARM_GOTFUNCDESC:             howto manager.      (line  831)
-* BFD_RELOC_ARM_GOTOFF:                  howto manager.      (line  844)
-* BFD_RELOC_ARM_GOTOFFFUNCDESC:          howto manager.      (line  832)
-* BFD_RELOC_ARM_GOTPC:                   howto manager.      (line  845)
-* BFD_RELOC_ARM_GOT_PREL:                howto manager.      (line  846)
-* BFD_RELOC_ARM_HVC:                     howto manager.      (line  909)
-* BFD_RELOC_ARM_HWLITERAL:               howto manager.      (line  924)
-* BFD_RELOC_ARM_IMMEDIATE:               howto manager.      (line  901)
-* BFD_RELOC_ARM_IN_POOL:                 howto manager.      (line  920)
-* BFD_RELOC_ARM_IRELATIVE:               howto manager.      (line  894)
-* BFD_RELOC_ARM_JUMP_SLOT:               howto manager.      (line  839)
-* BFD_RELOC_ARM_LDC_PC_G0:               howto manager.      (line  874)
-* BFD_RELOC_ARM_LDC_PC_G1:               howto manager.      (line  875)
-* BFD_RELOC_ARM_LDC_PC_G2:               howto manager.      (line  876)
-* BFD_RELOC_ARM_LDC_SB_G0:               howto manager.      (line  888)
-* BFD_RELOC_ARM_LDC_SB_G1:               howto manager.      (line  889)
-* BFD_RELOC_ARM_LDC_SB_G2:               howto manager.      (line  890)
-* BFD_RELOC_ARM_LDRS_PC_G0:              howto manager.      (line  871)
-* BFD_RELOC_ARM_LDRS_PC_G1:              howto manager.      (line  872)
-* BFD_RELOC_ARM_LDRS_PC_G2:              howto manager.      (line  873)
-* BFD_RELOC_ARM_LDRS_SB_G0:              howto manager.      (line  885)
-* BFD_RELOC_ARM_LDRS_SB_G1:              howto manager.      (line  886)
-* BFD_RELOC_ARM_LDRS_SB_G2:              howto manager.      (line  887)
-* BFD_RELOC_ARM_LDR_IMM:                 howto manager.      (line  918)
-* BFD_RELOC_ARM_LDR_PC_G0:               howto manager.      (line  868)
-* BFD_RELOC_ARM_LDR_PC_G1:               howto manager.      (line  869)
-* BFD_RELOC_ARM_LDR_PC_G2:               howto manager.      (line  870)
-* BFD_RELOC_ARM_LDR_SB_G0:               howto manager.      (line  882)
-* BFD_RELOC_ARM_LDR_SB_G1:               howto manager.      (line  883)
-* BFD_RELOC_ARM_LDR_SB_G2:               howto manager.      (line  884)
-* BFD_RELOC_ARM_LITERAL:                 howto manager.      (line  919)
-* BFD_RELOC_ARM_MOVT:                    howto manager.      (line  823)
-* BFD_RELOC_ARM_MOVT_PCREL:              howto manager.      (line  825)
-* BFD_RELOC_ARM_MOVW:                    howto manager.      (line  822)
-* BFD_RELOC_ARM_MOVW_PCREL:              howto manager.      (line  824)
-* BFD_RELOC_ARM_MULTI:                   howto manager.      (line  911)
-* BFD_RELOC_ARM_OFFSET_IMM:              howto manager.      (line  803)
-* BFD_RELOC_ARM_OFFSET_IMM8:             howto manager.      (line  921)
-* BFD_RELOC_ARM_PCREL_BLX:               howto manager.      (line  767)
-* BFD_RELOC_ARM_PCREL_BRANCH:            howto manager.      (line  764)
-* BFD_RELOC_ARM_PCREL_CALL:              howto manager.      (line  775)
-* BFD_RELOC_ARM_PCREL_JUMP:              howto manager.      (line  778)
-* BFD_RELOC_ARM_PLT32:                   howto manager.      (line  842)
-* BFD_RELOC_ARM_PREL31:                  howto manager.      (line  820)
-* BFD_RELOC_ARM_RELATIVE:                howto manager.      (line  843)
-* BFD_RELOC_ARM_ROSEGREL32:              howto manager.      (line  812)
-* BFD_RELOC_ARM_SBREL32:                 howto manager.      (line  814)
-* BFD_RELOC_ARM_SHIFT_IMM:               howto manager.      (line  907)
-* BFD_RELOC_ARM_SMC:                     howto manager.      (line  908)
-* BFD_RELOC_ARM_SWI:                     howto manager.      (line  910)
-* BFD_RELOC_ARM_T32_ADD_IMM:             howto manager.      (line  904)
-* BFD_RELOC_ARM_T32_ADD_PC12:            howto manager.      (line  906)
-* BFD_RELOC_ARM_T32_CP_OFF_IMM:          howto manager.      (line  914)
-* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2:       howto manager.      (line  915)
-* BFD_RELOC_ARM_T32_IMM12:               howto manager.      (line  905)
-* BFD_RELOC_ARM_T32_IMMEDIATE:           howto manager.      (line  903)
-* BFD_RELOC_ARM_T32_OFFSET_IMM:          howto manager.      (line  923)
-* BFD_RELOC_ARM_T32_OFFSET_U8:           howto manager.      (line  922)
-* BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM:   howto manager.      (line  916)
-* BFD_RELOC_ARM_TARGET1:                 howto manager.      (line  809)
-* BFD_RELOC_ARM_TARGET2:                 howto manager.      (line  816)
-* BFD_RELOC_ARM_THM_TLS_CALL:            howto manager.      (line  858)
-* BFD_RELOC_ARM_THM_TLS_DESCSEQ:         howto manager.      (line  860)
-* BFD_RELOC_ARM_THUMB_ADD:               howto manager.      (line  925)
-* BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC:     howto manager.      (line  896)
-* BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC:     howto manager.      (line  897)
-* BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC:     howto manager.      (line  898)
-* BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC:     howto manager.      (line  899)
-* BFD_RELOC_ARM_THUMB_BF13:              howto manager.      (line  786)
-* BFD_RELOC_ARM_THUMB_BF17:              howto manager.      (line  784)
-* BFD_RELOC_ARM_THUMB_BF19:              howto manager.      (line  788)
-* BFD_RELOC_ARM_THUMB_IMM:               howto manager.      (line  926)
-* BFD_RELOC_ARM_THUMB_LOOP12:            howto manager.      (line  790)
-* BFD_RELOC_ARM_THUMB_MOVT:              howto manager.      (line  827)
-* BFD_RELOC_ARM_THUMB_MOVT_PCREL:        howto manager.      (line  829)
-* BFD_RELOC_ARM_THUMB_MOVW:              howto manager.      (line  826)
-* BFD_RELOC_ARM_THUMB_MOVW_PCREL:        howto manager.      (line  828)
-* BFD_RELOC_ARM_THUMB_OFFSET:            howto manager.      (line  806)
-* BFD_RELOC_ARM_THUMB_SHIFT:             howto manager.      (line  927)
-* BFD_RELOC_ARM_TLS_CALL:                howto manager.      (line  857)
-* BFD_RELOC_ARM_TLS_DESC:                howto manager.      (line  861)
-* BFD_RELOC_ARM_TLS_DESCSEQ:             howto manager.      (line  859)
-* BFD_RELOC_ARM_TLS_DTPMOD32:            howto manager.      (line  852)
-* BFD_RELOC_ARM_TLS_DTPOFF32:            howto manager.      (line  851)
-* BFD_RELOC_ARM_TLS_GD32:                howto manager.      (line  848)
-* BFD_RELOC_ARM_TLS_GD32_FDPIC:          howto manager.      (line  835)
-* BFD_RELOC_ARM_TLS_GOTDESC:             howto manager.      (line  856)
-* BFD_RELOC_ARM_TLS_IE32:                howto manager.      (line  854)
-* BFD_RELOC_ARM_TLS_IE32_FDPIC:          howto manager.      (line  837)
-* BFD_RELOC_ARM_TLS_LDM32:               howto manager.      (line  850)
-* BFD_RELOC_ARM_TLS_LDM32_FDPIC:         howto manager.      (line  836)
-* BFD_RELOC_ARM_TLS_LDO32:               howto manager.      (line  849)
-* BFD_RELOC_ARM_TLS_LE32:                howto manager.      (line  855)
-* BFD_RELOC_ARM_TLS_TPOFF32:             howto manager.      (line  853)
-* BFD_RELOC_ARM_V4BX:                    howto manager.      (line  892)
-* BFD_RELOC_AVR_13_PCREL:                howto manager.      (line 1734)
-* BFD_RELOC_AVR_16_PM:                   howto manager.      (line 1737)
-* BFD_RELOC_AVR_6:                       howto manager.      (line 1805)
-* BFD_RELOC_AVR_6_ADIW:                  howto manager.      (line 1808)
-* BFD_RELOC_AVR_7_PCREL:                 howto manager.      (line 1731)
-* BFD_RELOC_AVR_8_HI:                    howto manager.      (line 1814)
-* BFD_RELOC_AVR_8_HLO:                   howto manager.      (line 1817)
-* BFD_RELOC_AVR_8_LO:                    howto manager.      (line 1811)
-* BFD_RELOC_AVR_CALL:                    howto manager.      (line 1799)
-* BFD_RELOC_AVR_DIFF16:                  howto manager.      (line 1821)
-* BFD_RELOC_AVR_DIFF32:                  howto manager.      (line 1822)
-* BFD_RELOC_AVR_DIFF8:                   howto manager.      (line 1820)
-* BFD_RELOC_AVR_HH8_LDI:                 howto manager.      (line 1746)
-* BFD_RELOC_AVR_HH8_LDI_NEG:             howto manager.      (line 1761)
-* BFD_RELOC_AVR_HH8_LDI_PM:              howto manager.      (line 1784)
-* BFD_RELOC_AVR_HH8_LDI_PM_NEG:          howto manager.      (line 1795)
-* BFD_RELOC_AVR_HI8_LDI:                 howto manager.      (line 1743)
-* BFD_RELOC_AVR_HI8_LDI_GS:              howto manager.      (line 1779)
-* BFD_RELOC_AVR_HI8_LDI_NEG:             howto manager.      (line 1757)
-* BFD_RELOC_AVR_HI8_LDI_PM:              howto manager.      (line 1776)
-* BFD_RELOC_AVR_HI8_LDI_PM_NEG:          howto manager.      (line 1791)
-* BFD_RELOC_AVR_LDI:                     howto manager.      (line 1802)
-* BFD_RELOC_AVR_LDS_STS_16:              howto manager.      (line 1829)
-* BFD_RELOC_AVR_LO8_LDI:                 howto manager.      (line 1740)
-* BFD_RELOC_AVR_LO8_LDI_GS:              howto manager.      (line 1771)
-* BFD_RELOC_AVR_LO8_LDI_NEG:             howto manager.      (line 1753)
-* BFD_RELOC_AVR_LO8_LDI_PM:              howto manager.      (line 1768)
-* BFD_RELOC_AVR_LO8_LDI_PM_NEG:          howto manager.      (line 1788)
-* BFD_RELOC_AVR_MS8_LDI:                 howto manager.      (line 1750)
-* BFD_RELOC_AVR_MS8_LDI_NEG:             howto manager.      (line 1765)
-* BFD_RELOC_AVR_PORT5:                   howto manager.      (line 1835)
-* BFD_RELOC_AVR_PORT6:                   howto manager.      (line 1832)
-* BFD_RELOC_BFIN_10_PCREL:               howto manager.      (line 1109)
-* BFD_RELOC_BFIN_11_PCREL:               howto manager.      (line 1111)
-* BFD_RELOC_BFIN_12_PCREL_JUMP:          howto manager.      (line 1113)
-* BFD_RELOC_BFIN_12_PCREL_JUMP_S:        howto manager.      (line 1115)
-* BFD_RELOC_BFIN_16_HIGH:                howto manager.      (line 1101)
-* BFD_RELOC_BFIN_16_IMM:                 howto manager.      (line 1099)
-* BFD_RELOC_BFIN_16_LOW:                 howto manager.      (line 1107)
-* BFD_RELOC_BFIN_24_PCREL_CALL_X:        howto manager.      (line 1117)
-* BFD_RELOC_BFIN_24_PCREL_JUMP_L:        howto manager.      (line 1119)
-* BFD_RELOC_BFIN_4_PCREL:                howto manager.      (line 1103)
-* BFD_RELOC_BFIN_5_PCREL:                howto manager.      (line 1105)
-* BFD_RELOC_BFIN_FUNCDESC:               howto manager.      (line 1124)
-* BFD_RELOC_BFIN_FUNCDESC_GOT17M4:       howto manager.      (line 1125)
-* BFD_RELOC_BFIN_FUNCDESC_GOTHI:         howto manager.      (line 1126)
-* BFD_RELOC_BFIN_FUNCDESC_GOTLO:         howto manager.      (line 1127)
-* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4:    howto manager.      (line 1129)
-* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI:      howto manager.      (line 1130)
-* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO:      howto manager.      (line 1131)
-* BFD_RELOC_BFIN_FUNCDESC_VALUE:         howto manager.      (line 1128)
-* BFD_RELOC_BFIN_GOT:                    howto manager.      (line 1136)
-* BFD_RELOC_BFIN_GOT17M4:                howto manager.      (line 1121)
-* BFD_RELOC_BFIN_GOTHI:                  howto manager.      (line 1122)
-* BFD_RELOC_BFIN_GOTLO:                  howto manager.      (line 1123)
-* BFD_RELOC_BFIN_GOTOFF17M4:             howto manager.      (line 1132)
-* 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_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)
-* BFD_RELOC_C6000_ALIGN:                 howto manager.      (line 1597)
-* BFD_RELOC_C6000_COPY:                  howto manager.      (line 1592)
-* BFD_RELOC_C6000_DSBT_INDEX:            howto manager.      (line 1590)
-* BFD_RELOC_C6000_EHTYPE:                howto manager.      (line 1594)
-* BFD_RELOC_C6000_FPHEAD:                howto manager.      (line 1598)
-* BFD_RELOC_C6000_JUMP_SLOT:             howto manager.      (line 1593)
-* BFD_RELOC_C6000_NOCMP:                 howto manager.      (line 1599)
-* BFD_RELOC_C6000_PCR_H16:               howto manager.      (line 1595)
-* BFD_RELOC_C6000_PCR_L16:               howto manager.      (line 1596)
-* BFD_RELOC_C6000_PCR_S10:               howto manager.      (line 1572)
-* BFD_RELOC_C6000_PCR_S12:               howto manager.      (line 1571)
-* BFD_RELOC_C6000_PCR_S21:               howto manager.      (line 1570)
-* BFD_RELOC_C6000_PCR_S7:                howto manager.      (line 1573)
-* BFD_RELOC_C6000_PREL31:                howto manager.      (line 1591)
-* BFD_RELOC_C6000_SBR_GOT_H16_W:         howto manager.      (line 1589)
-* BFD_RELOC_C6000_SBR_GOT_L16_W:         howto manager.      (line 1588)
-* BFD_RELOC_C6000_SBR_GOT_U15_W:         howto manager.      (line 1587)
-* BFD_RELOC_C6000_SBR_H16_B:             howto manager.      (line 1584)
-* BFD_RELOC_C6000_SBR_H16_H:             howto manager.      (line 1585)
-* BFD_RELOC_C6000_SBR_H16_W:             howto manager.      (line 1586)
-* BFD_RELOC_C6000_SBR_L16_B:             howto manager.      (line 1581)
-* BFD_RELOC_C6000_SBR_L16_H:             howto manager.      (line 1582)
-* BFD_RELOC_C6000_SBR_L16_W:             howto manager.      (line 1583)
-* BFD_RELOC_C6000_SBR_S16:               howto manager.      (line 1580)
-* 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_code_type:                   howto manager.      (line    9)
-* BFD_RELOC_CR16_ABS20:                  howto manager.      (line 2276)
-* BFD_RELOC_CR16_ABS24:                  howto manager.      (line 2277)
-* BFD_RELOC_CR16_DISP16:                 howto manager.      (line 2287)
-* BFD_RELOC_CR16_DISP20:                 howto manager.      (line 2288)
-* BFD_RELOC_CR16_DISP24:                 howto manager.      (line 2289)
-* BFD_RELOC_CR16_DISP24a:                howto manager.      (line 2290)
-* BFD_RELOC_CR16_DISP4:                  howto manager.      (line 2285)
-* BFD_RELOC_CR16_DISP8:                  howto manager.      (line 2286)
-* BFD_RELOC_CR16_GLOB_DAT:               howto manager.      (line 2296)
-* BFD_RELOC_CR16_GOTC_REGREL20:          howto manager.      (line 2295)
-* BFD_RELOC_CR16_GOT_REGREL20:           howto manager.      (line 2294)
-* BFD_RELOC_CR16_IMM16:                  howto manager.      (line 2280)
-* BFD_RELOC_CR16_IMM20:                  howto manager.      (line 2281)
-* BFD_RELOC_CR16_IMM24:                  howto manager.      (line 2282)
-* BFD_RELOC_CR16_IMM32:                  howto manager.      (line 2283)
-* BFD_RELOC_CR16_IMM32a:                 howto manager.      (line 2284)
-* BFD_RELOC_CR16_IMM4:                   howto manager.      (line 2278)
-* BFD_RELOC_CR16_IMM8:                   howto manager.      (line 2279)
-* BFD_RELOC_CR16_NUM16:                  howto manager.      (line 2265)
-* BFD_RELOC_CR16_NUM32:                  howto manager.      (line 2266)
-* BFD_RELOC_CR16_NUM32a:                 howto manager.      (line 2267)
-* BFD_RELOC_CR16_NUM8:                   howto manager.      (line 2264)
-* BFD_RELOC_CR16_REGREL0:                howto manager.      (line 2268)
-* BFD_RELOC_CR16_REGREL14:               howto manager.      (line 2271)
-* BFD_RELOC_CR16_REGREL14a:              howto manager.      (line 2272)
-* BFD_RELOC_CR16_REGREL16:               howto manager.      (line 2273)
-* BFD_RELOC_CR16_REGREL20:               howto manager.      (line 2274)
-* BFD_RELOC_CR16_REGREL20a:              howto manager.      (line 2275)
-* BFD_RELOC_CR16_REGREL4:                howto manager.      (line 2269)
-* BFD_RELOC_CR16_REGREL4a:               howto manager.      (line 2270)
-* BFD_RELOC_CR16_SWITCH16:               howto manager.      (line 2292)
-* BFD_RELOC_CR16_SWITCH32:               howto manager.      (line 2293)
-* BFD_RELOC_CR16_SWITCH8:                howto manager.      (line 2291)
-* BFD_RELOC_CRIS_16_DTPREL:              howto manager.      (line 2356)
-* BFD_RELOC_CRIS_16_GOT:                 howto manager.      (line 2338)
-* BFD_RELOC_CRIS_16_GOTPLT:              howto manager.      (line 2342)
-* BFD_RELOC_CRIS_16_GOT_GD:              howto manager.      (line 2352)
-* BFD_RELOC_CRIS_16_GOT_TPREL:           howto manager.      (line 2358)
-* BFD_RELOC_CRIS_16_TPREL:               howto manager.      (line 2360)
-* BFD_RELOC_CRIS_32_DTPREL:              howto manager.      (line 2355)
-* BFD_RELOC_CRIS_32_GD:                  howto manager.      (line 2353)
-* BFD_RELOC_CRIS_32_GOT:                 howto manager.      (line 2336)
-* BFD_RELOC_CRIS_32_GOTPLT:              howto manager.      (line 2340)
-* BFD_RELOC_CRIS_32_GOTREL:              howto manager.      (line 2344)
-* BFD_RELOC_CRIS_32_GOT_GD:              howto manager.      (line 2351)
-* BFD_RELOC_CRIS_32_GOT_TPREL:           howto manager.      (line 2357)
-* BFD_RELOC_CRIS_32_IE:                  howto manager.      (line 2362)
-* BFD_RELOC_CRIS_32_PLT_GOTREL:          howto manager.      (line 2346)
-* BFD_RELOC_CRIS_32_PLT_PCREL:           howto manager.      (line 2348)
-* BFD_RELOC_CRIS_32_TPREL:               howto manager.      (line 2359)
-* BFD_RELOC_CRIS_BDISP8:                 howto manager.      (line 2319)
-* BFD_RELOC_CRIS_COPY:                   howto manager.      (line 2331)
-* BFD_RELOC_CRIS_DTP:                    howto manager.      (line 2354)
-* BFD_RELOC_CRIS_DTPMOD:                 howto manager.      (line 2361)
-* BFD_RELOC_CRIS_GLOB_DAT:               howto manager.      (line 2332)
-* BFD_RELOC_CRIS_JUMP_SLOT:              howto manager.      (line 2333)
-* BFD_RELOC_CRIS_LAPCQ_OFFSET:           howto manager.      (line 2327)
-* BFD_RELOC_CRIS_RELATIVE:               howto manager.      (line 2334)
-* BFD_RELOC_CRIS_SIGNED_16:              howto manager.      (line 2325)
-* BFD_RELOC_CRIS_SIGNED_6:               howto manager.      (line 2321)
-* BFD_RELOC_CRIS_SIGNED_8:               howto manager.      (line 2323)
-* BFD_RELOC_CRIS_UNSIGNED_16:            howto manager.      (line 2326)
-* BFD_RELOC_CRIS_UNSIGNED_4:             howto manager.      (line 2328)
-* BFD_RELOC_CRIS_UNSIGNED_5:             howto manager.      (line 2320)
-* BFD_RELOC_CRIS_UNSIGNED_6:             howto manager.      (line 2322)
-* BFD_RELOC_CRIS_UNSIGNED_8:             howto manager.      (line 2324)
-* BFD_RELOC_CRX_ABS16:                   howto manager.      (line 2308)
-* BFD_RELOC_CRX_ABS32:                   howto manager.      (line 2309)
-* BFD_RELOC_CRX_IMM16:                   howto manager.      (line 2313)
-* BFD_RELOC_CRX_IMM32:                   howto manager.      (line 2314)
-* BFD_RELOC_CRX_NUM16:                   howto manager.      (line 2311)
-* BFD_RELOC_CRX_NUM32:                   howto manager.      (line 2312)
-* BFD_RELOC_CRX_NUM8:                    howto manager.      (line 2310)
-* BFD_RELOC_CRX_REGREL12:                howto manager.      (line 2304)
-* BFD_RELOC_CRX_REGREL22:                howto manager.      (line 2305)
-* BFD_RELOC_CRX_REGREL28:                howto manager.      (line 2306)
-* BFD_RELOC_CRX_REGREL32:                howto manager.      (line 2307)
-* BFD_RELOC_CRX_REL16:                   howto manager.      (line 2301)
-* BFD_RELOC_CRX_REL24:                   howto manager.      (line 2302)
-* BFD_RELOC_CRX_REL32:                   howto manager.      (line 2303)
-* BFD_RELOC_CRX_REL4:                    howto manager.      (line 2298)
-* BFD_RELOC_CRX_REL8:                    howto manager.      (line 2299)
-* BFD_RELOC_CRX_REL8_CMP:                howto manager.      (line 2300)
-* BFD_RELOC_CRX_SWITCH16:                howto manager.      (line 2316)
-* BFD_RELOC_CRX_SWITCH32:                howto manager.      (line 2317)
-* BFD_RELOC_CRX_SWITCH8:                 howto manager.      (line 2315)
-* BFD_RELOC_CTOR:                        howto manager.      (line  759)
-* BFD_RELOC_D10V_10_PCREL_L:             howto manager.      (line 1183)
-* BFD_RELOC_D10V_10_PCREL_R:             howto manager.      (line 1180)
-* BFD_RELOC_D10V_18:                     howto manager.      (line 1187)
-* BFD_RELOC_D10V_18_PCREL:               howto manager.      (line 1189)
-* BFD_RELOC_D30V_15:                     howto manager.      (line 1200)
-* BFD_RELOC_D30V_15_PCREL:               howto manager.      (line 1203)
-* BFD_RELOC_D30V_15_PCREL_R:             howto manager.      (line 1206)
-* BFD_RELOC_D30V_21:                     howto manager.      (line 1210)
-* BFD_RELOC_D30V_21_PCREL:               howto manager.      (line 1213)
-* BFD_RELOC_D30V_21_PCREL_R:             howto manager.      (line 1216)
-* BFD_RELOC_D30V_32:                     howto manager.      (line 1220)
-* BFD_RELOC_D30V_32_PCREL:               howto manager.      (line 1222)
-* BFD_RELOC_D30V_6:                      howto manager.      (line 1191)
-* BFD_RELOC_D30V_9_PCREL:                howto manager.      (line 1193)
-* BFD_RELOC_D30V_9_PCREL_R:              howto manager.      (line 1196)
-* 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_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)
-* BFD_RELOC_FR30_48:                     howto manager.      (line 1601)
-* BFD_RELOC_FR30_6_IN_4:                 howto manager.      (line 1606)
-* BFD_RELOC_FR30_8_IN_8:                 howto manager.      (line 1609)
-* BFD_RELOC_FR30_9_IN_8:                 howto manager.      (line 1612)
-* BFD_RELOC_FR30_9_PCREL:                howto manager.      (line 1618)
+* BFD_RELOC_ARC_16:                      howto manager.      (line 1054)
+* BFD_RELOC_ARC_24:                      howto manager.      (line 1055)
+* BFD_RELOC_ARC_32:                      howto manager.      (line 1056)
+* BFD_RELOC_ARC_32_ME:                   howto manager.      (line 1076)
+* BFD_RELOC_ARC_32_ME_S:                 howto manager.      (line 1077)
+* BFD_RELOC_ARC_32_PCREL:                howto manager.      (line 1094)
+* BFD_RELOC_ARC_8:                       howto manager.      (line 1053)
+* BFD_RELOC_ARC_COPY:                    howto manager.      (line 1099)
+* BFD_RELOC_ARC_GLOB_DAT:                howto manager.      (line 1100)
+* BFD_RELOC_ARC_GOT32:                   howto manager.      (line 1096)
+* BFD_RELOC_ARC_GOTOFF:                  howto manager.      (line 1103)
+* BFD_RELOC_ARC_GOTPC:                   howto manager.      (line 1104)
+* BFD_RELOC_ARC_GOTPC32:                 howto manager.      (line 1097)
+* BFD_RELOC_ARC_JLI_SECTOFF:             howto manager.      (line 1120)
+* BFD_RELOC_ARC_JMP_SLOT:                howto manager.      (line 1101)
+* BFD_RELOC_ARC_N16:                     howto manager.      (line 1058)
+* BFD_RELOC_ARC_N24:                     howto manager.      (line 1059)
+* BFD_RELOC_ARC_N32:                     howto manager.      (line 1060)
+* BFD_RELOC_ARC_N32_ME:                  howto manager.      (line 1078)
+* BFD_RELOC_ARC_N8:                      howto manager.      (line 1057)
+* BFD_RELOC_ARC_NONE:                    howto manager.      (line 1052)
+* BFD_RELOC_ARC_NPS_CMEM16:              howto manager.      (line 1119)
+* BFD_RELOC_ARC_PC32:                    howto manager.      (line 1095)
+* BFD_RELOC_ARC_PLT32:                   howto manager.      (line 1098)
+* BFD_RELOC_ARC_RELATIVE:                howto manager.      (line 1102)
+* BFD_RELOC_ARC_S13_PCREL:               howto manager.      (line 1074)
+* BFD_RELOC_ARC_S21H_PCREL:              howto manager.      (line 1063)
+* BFD_RELOC_ARC_S21H_PCREL_PLT:          howto manager.      (line 1118)
+* BFD_RELOC_ARC_S21W_PCREL:              howto manager.      (line 1064)
+* BFD_RELOC_ARC_S21W_PCREL_PLT:          howto manager.      (line 1105)
+* BFD_RELOC_ARC_S25H_PCREL:              howto manager.      (line 1065)
+* BFD_RELOC_ARC_S25H_PCREL_PLT:          howto manager.      (line 1106)
+* BFD_RELOC_ARC_S25W_PCREL:              howto manager.      (line 1066)
+* BFD_RELOC_ARC_S25W_PCREL_PLT:          howto manager.      (line 1117)
+* BFD_RELOC_ARC_SDA:                     howto manager.      (line 1061)
+* BFD_RELOC_ARC_SDA16_LD:                howto manager.      (line 1071)
+* BFD_RELOC_ARC_SDA16_LD1:               howto manager.      (line 1072)
+* BFD_RELOC_ARC_SDA16_LD2:               howto manager.      (line 1073)
+* BFD_RELOC_ARC_SDA16_ST2:               howto manager.      (line 1093)
+* BFD_RELOC_ARC_SDA32:                   howto manager.      (line 1067)
+* BFD_RELOC_ARC_SDA32_ME:                howto manager.      (line 1080)
+* BFD_RELOC_ARC_SDA_12:                  howto manager.      (line 1092)
+* BFD_RELOC_ARC_SDA_LDST:                howto manager.      (line 1068)
+* BFD_RELOC_ARC_SDA_LDST1:               howto manager.      (line 1069)
+* BFD_RELOC_ARC_SDA_LDST2:               howto manager.      (line 1070)
+* BFD_RELOC_ARC_SECTOFF:                 howto manager.      (line 1062)
+* BFD_RELOC_ARC_SECTOFF_1:               howto manager.      (line 1090)
+* BFD_RELOC_ARC_SECTOFF_2:               howto manager.      (line 1091)
+* BFD_RELOC_ARC_SECTOFF_ME:              howto manager.      (line 1079)
+* BFD_RELOC_ARC_SECTOFF_ME_1:            howto manager.      (line 1088)
+* BFD_RELOC_ARC_SECTOFF_ME_2:            howto manager.      (line 1089)
+* BFD_RELOC_ARC_TLS_DTPMOD:              howto manager.      (line 1107)
+* BFD_RELOC_ARC_TLS_DTPOFF:              howto manager.      (line 1113)
+* BFD_RELOC_ARC_TLS_DTPOFF_S9:           howto manager.      (line 1114)
+* BFD_RELOC_ARC_TLS_GD_CALL:             howto manager.      (line 1111)
+* BFD_RELOC_ARC_TLS_GD_GOT:              howto manager.      (line 1109)
+* BFD_RELOC_ARC_TLS_GD_LD:               howto manager.      (line 1110)
+* BFD_RELOC_ARC_TLS_IE_GOT:              howto manager.      (line 1112)
+* BFD_RELOC_ARC_TLS_LE_32:               howto manager.      (line 1116)
+* BFD_RELOC_ARC_TLS_LE_S9:               howto manager.      (line 1115)
+* BFD_RELOC_ARC_TLS_TPOFF:               howto manager.      (line 1108)
+* BFD_RELOC_ARC_W:                       howto manager.      (line 1075)
+* BFD_RELOC_ARC_W_ME:                    howto manager.      (line 1081)
+* BFD_RELOC_ARM_ADRL_IMMEDIATE:          howto manager.      (line  925)
+* BFD_RELOC_ARM_ADR_IMM:                 howto manager.      (line  940)
+* BFD_RELOC_ARM_ALU_PC_G0:               howto manager.      (line  887)
+* BFD_RELOC_ARM_ALU_PC_G0_NC:            howto manager.      (line  886)
+* BFD_RELOC_ARM_ALU_PC_G1:               howto manager.      (line  889)
+* BFD_RELOC_ARM_ALU_PC_G1_NC:            howto manager.      (line  888)
+* BFD_RELOC_ARM_ALU_PC_G2:               howto manager.      (line  890)
+* BFD_RELOC_ARM_ALU_SB_G0:               howto manager.      (line  901)
+* BFD_RELOC_ARM_ALU_SB_G0_NC:            howto manager.      (line  900)
+* BFD_RELOC_ARM_ALU_SB_G1:               howto manager.      (line  903)
+* BFD_RELOC_ARM_ALU_SB_G1_NC:            howto manager.      (line  902)
+* BFD_RELOC_ARM_ALU_SB_G2:               howto manager.      (line  904)
+* BFD_RELOC_ARM_CP_OFF_IMM:              howto manager.      (line  935)
+* BFD_RELOC_ARM_CP_OFF_IMM_S2:           howto manager.      (line  936)
+* BFD_RELOC_ARM_FUNCDESC:                howto manager.      (line  856)
+* BFD_RELOC_ARM_FUNCDESC_VALUE:          howto manager.      (line  857)
+* BFD_RELOC_ARM_GLOB_DAT:                howto manager.      (line  863)
+* BFD_RELOC_ARM_GOT32:                   howto manager.      (line  864)
+* BFD_RELOC_ARM_GOTFUNCDESC:             howto manager.      (line  854)
+* BFD_RELOC_ARM_GOTOFF:                  howto manager.      (line  867)
+* BFD_RELOC_ARM_GOTOFFFUNCDESC:          howto manager.      (line  855)
+* BFD_RELOC_ARM_GOTPC:                   howto manager.      (line  868)
+* BFD_RELOC_ARM_GOT_PREL:                howto manager.      (line  869)
+* BFD_RELOC_ARM_HVC:                     howto manager.      (line  932)
+* BFD_RELOC_ARM_HWLITERAL:               howto manager.      (line  947)
+* BFD_RELOC_ARM_IMMEDIATE:               howto manager.      (line  924)
+* BFD_RELOC_ARM_IN_POOL:                 howto manager.      (line  943)
+* BFD_RELOC_ARM_IRELATIVE:               howto manager.      (line  917)
+* BFD_RELOC_ARM_JUMP_SLOT:               howto manager.      (line  862)
+* BFD_RELOC_ARM_LDC_PC_G0:               howto manager.      (line  897)
+* BFD_RELOC_ARM_LDC_PC_G1:               howto manager.      (line  898)
+* BFD_RELOC_ARM_LDC_PC_G2:               howto manager.      (line  899)
+* BFD_RELOC_ARM_LDC_SB_G0:               howto manager.      (line  911)
+* BFD_RELOC_ARM_LDC_SB_G1:               howto manager.      (line  912)
+* BFD_RELOC_ARM_LDC_SB_G2:               howto manager.      (line  913)
+* BFD_RELOC_ARM_LDRS_PC_G0:              howto manager.      (line  894)
+* BFD_RELOC_ARM_LDRS_PC_G1:              howto manager.      (line  895)
+* BFD_RELOC_ARM_LDRS_PC_G2:              howto manager.      (line  896)
+* BFD_RELOC_ARM_LDRS_SB_G0:              howto manager.      (line  908)
+* BFD_RELOC_ARM_LDRS_SB_G1:              howto manager.      (line  909)
+* BFD_RELOC_ARM_LDRS_SB_G2:              howto manager.      (line  910)
+* BFD_RELOC_ARM_LDR_IMM:                 howto manager.      (line  941)
+* BFD_RELOC_ARM_LDR_PC_G0:               howto manager.      (line  891)
+* BFD_RELOC_ARM_LDR_PC_G1:               howto manager.      (line  892)
+* BFD_RELOC_ARM_LDR_PC_G2:               howto manager.      (line  893)
+* BFD_RELOC_ARM_LDR_SB_G0:               howto manager.      (line  905)
+* BFD_RELOC_ARM_LDR_SB_G1:               howto manager.      (line  906)
+* BFD_RELOC_ARM_LDR_SB_G2:               howto manager.      (line  907)
+* BFD_RELOC_ARM_LITERAL:                 howto manager.      (line  942)
+* BFD_RELOC_ARM_MOVT:                    howto manager.      (line  846)
+* BFD_RELOC_ARM_MOVT_PCREL:              howto manager.      (line  848)
+* BFD_RELOC_ARM_MOVW:                    howto manager.      (line  845)
+* BFD_RELOC_ARM_MOVW_PCREL:              howto manager.      (line  847)
+* BFD_RELOC_ARM_MULTI:                   howto manager.      (line  934)
+* BFD_RELOC_ARM_OFFSET_IMM:              howto manager.      (line  826)
+* BFD_RELOC_ARM_OFFSET_IMM8:             howto manager.      (line  944)
+* BFD_RELOC_ARM_PCREL_BLX:               howto manager.      (line  790)
+* BFD_RELOC_ARM_PCREL_BRANCH:            howto manager.      (line  787)
+* BFD_RELOC_ARM_PCREL_CALL:              howto manager.      (line  798)
+* BFD_RELOC_ARM_PCREL_JUMP:              howto manager.      (line  801)
+* BFD_RELOC_ARM_PLT32:                   howto manager.      (line  865)
+* BFD_RELOC_ARM_PREL31:                  howto manager.      (line  843)
+* BFD_RELOC_ARM_RELATIVE:                howto manager.      (line  866)
+* BFD_RELOC_ARM_ROSEGREL32:              howto manager.      (line  835)
+* BFD_RELOC_ARM_SBREL32:                 howto manager.      (line  837)
+* BFD_RELOC_ARM_SHIFT_IMM:               howto manager.      (line  930)
+* BFD_RELOC_ARM_SMC:                     howto manager.      (line  931)
+* BFD_RELOC_ARM_SWI:                     howto manager.      (line  933)
+* BFD_RELOC_ARM_T32_ADD_IMM:             howto manager.      (line  927)
+* BFD_RELOC_ARM_T32_ADD_PC12:            howto manager.      (line  929)
+* BFD_RELOC_ARM_T32_CP_OFF_IMM:          howto manager.      (line  937)
+* BFD_RELOC_ARM_T32_CP_OFF_IMM_S2:       howto manager.      (line  938)
+* BFD_RELOC_ARM_T32_IMM12:               howto manager.      (line  928)
+* BFD_RELOC_ARM_T32_IMMEDIATE:           howto manager.      (line  926)
+* BFD_RELOC_ARM_T32_OFFSET_IMM:          howto manager.      (line  946)
+* BFD_RELOC_ARM_T32_OFFSET_U8:           howto manager.      (line  945)
+* BFD_RELOC_ARM_T32_VLDR_VSTR_OFF_IMM:   howto manager.      (line  939)
+* BFD_RELOC_ARM_TARGET1:                 howto manager.      (line  832)
+* BFD_RELOC_ARM_TARGET2:                 howto manager.      (line  839)
+* BFD_RELOC_ARM_THM_TLS_CALL:            howto manager.      (line  881)
+* BFD_RELOC_ARM_THM_TLS_DESCSEQ:         howto manager.      (line  883)
+* BFD_RELOC_ARM_THUMB_ADD:               howto manager.      (line  948)
+* BFD_RELOC_ARM_THUMB_ALU_ABS_G0_NC:     howto manager.      (line  919)
+* BFD_RELOC_ARM_THUMB_ALU_ABS_G1_NC:     howto manager.      (line  920)
+* BFD_RELOC_ARM_THUMB_ALU_ABS_G2_NC:     howto manager.      (line  921)
+* BFD_RELOC_ARM_THUMB_ALU_ABS_G3_NC:     howto manager.      (line  922)
+* BFD_RELOC_ARM_THUMB_BF13:              howto manager.      (line  809)
+* BFD_RELOC_ARM_THUMB_BF17:              howto manager.      (line  807)
+* BFD_RELOC_ARM_THUMB_BF19:              howto manager.      (line  811)
+* BFD_RELOC_ARM_THUMB_IMM:               howto manager.      (line  949)
+* BFD_RELOC_ARM_THUMB_LOOP12:            howto manager.      (line  813)
+* BFD_RELOC_ARM_THUMB_MOVT:              howto manager.      (line  850)
+* BFD_RELOC_ARM_THUMB_MOVT_PCREL:        howto manager.      (line  852)
+* BFD_RELOC_ARM_THUMB_MOVW:              howto manager.      (line  849)
+* BFD_RELOC_ARM_THUMB_MOVW_PCREL:        howto manager.      (line  851)
+* BFD_RELOC_ARM_THUMB_OFFSET:            howto manager.      (line  829)
+* BFD_RELOC_ARM_THUMB_SHIFT:             howto manager.      (line  950)
+* BFD_RELOC_ARM_TLS_CALL:                howto manager.      (line  880)
+* BFD_RELOC_ARM_TLS_DESC:                howto manager.      (line  884)
+* BFD_RELOC_ARM_TLS_DESCSEQ:             howto manager.      (line  882)
+* BFD_RELOC_ARM_TLS_DTPMOD32:            howto manager.      (line  875)
+* BFD_RELOC_ARM_TLS_DTPOFF32:            howto manager.      (line  874)
+* BFD_RELOC_ARM_TLS_GD32:                howto manager.      (line  871)
+* BFD_RELOC_ARM_TLS_GD32_FDPIC:          howto manager.      (line  858)
+* BFD_RELOC_ARM_TLS_GOTDESC:             howto manager.      (line  879)
+* BFD_RELOC_ARM_TLS_IE32:                howto manager.      (line  877)
+* BFD_RELOC_ARM_TLS_IE32_FDPIC:          howto manager.      (line  860)
+* BFD_RELOC_ARM_TLS_LDM32:               howto manager.      (line  873)
+* BFD_RELOC_ARM_TLS_LDM32_FDPIC:         howto manager.      (line  859)
+* BFD_RELOC_ARM_TLS_LDO32:               howto manager.      (line  872)
+* BFD_RELOC_ARM_TLS_LE32:                howto manager.      (line  878)
+* BFD_RELOC_ARM_TLS_TPOFF32:             howto manager.      (line  876)
+* BFD_RELOC_ARM_V4BX:                    howto manager.      (line  915)
+* BFD_RELOC_AVR_13_PCREL:                howto manager.      (line 1745)
+* BFD_RELOC_AVR_16_PM:                   howto manager.      (line 1748)
+* BFD_RELOC_AVR_6:                       howto manager.      (line 1816)
+* BFD_RELOC_AVR_6_ADIW:                  howto manager.      (line 1819)
+* BFD_RELOC_AVR_7_PCREL:                 howto manager.      (line 1742)
+* BFD_RELOC_AVR_8_HI:                    howto manager.      (line 1825)
+* BFD_RELOC_AVR_8_HLO:                   howto manager.      (line 1828)
+* BFD_RELOC_AVR_8_LO:                    howto manager.      (line 1822)
+* BFD_RELOC_AVR_CALL:                    howto manager.      (line 1810)
+* BFD_RELOC_AVR_DIFF16:                  howto manager.      (line 1832)
+* BFD_RELOC_AVR_DIFF32:                  howto manager.      (line 1833)
+* BFD_RELOC_AVR_DIFF8:                   howto manager.      (line 1831)
+* BFD_RELOC_AVR_HH8_LDI:                 howto manager.      (line 1757)
+* BFD_RELOC_AVR_HH8_LDI_NEG:             howto manager.      (line 1772)
+* BFD_RELOC_AVR_HH8_LDI_PM:              howto manager.      (line 1795)
+* BFD_RELOC_AVR_HH8_LDI_PM_NEG:          howto manager.      (line 1806)
+* BFD_RELOC_AVR_HI8_LDI:                 howto manager.      (line 1754)
+* BFD_RELOC_AVR_HI8_LDI_GS:              howto manager.      (line 1790)
+* BFD_RELOC_AVR_HI8_LDI_NEG:             howto manager.      (line 1768)
+* BFD_RELOC_AVR_HI8_LDI_PM:              howto manager.      (line 1787)
+* BFD_RELOC_AVR_HI8_LDI_PM_NEG:          howto manager.      (line 1802)
+* BFD_RELOC_AVR_LDI:                     howto manager.      (line 1813)
+* BFD_RELOC_AVR_LDS_STS_16:              howto manager.      (line 1840)
+* BFD_RELOC_AVR_LO8_LDI:                 howto manager.      (line 1751)
+* BFD_RELOC_AVR_LO8_LDI_GS:              howto manager.      (line 1782)
+* BFD_RELOC_AVR_LO8_LDI_NEG:             howto manager.      (line 1764)
+* BFD_RELOC_AVR_LO8_LDI_PM:              howto manager.      (line 1779)
+* BFD_RELOC_AVR_LO8_LDI_PM_NEG:          howto manager.      (line 1799)
+* BFD_RELOC_AVR_MS8_LDI:                 howto manager.      (line 1761)
+* BFD_RELOC_AVR_MS8_LDI_NEG:             howto manager.      (line 1776)
+* BFD_RELOC_AVR_PORT5:                   howto manager.      (line 1846)
+* BFD_RELOC_AVR_PORT6:                   howto manager.      (line 1843)
+* BFD_RELOC_BFIN_10_PCREL:               howto manager.      (line 1132)
+* BFD_RELOC_BFIN_11_PCREL:               howto manager.      (line 1134)
+* BFD_RELOC_BFIN_12_PCREL_JUMP:          howto manager.      (line 1136)
+* BFD_RELOC_BFIN_12_PCREL_JUMP_S:        howto manager.      (line 1138)
+* BFD_RELOC_BFIN_16_HIGH:                howto manager.      (line 1124)
+* BFD_RELOC_BFIN_16_IMM:                 howto manager.      (line 1122)
+* BFD_RELOC_BFIN_16_LOW:                 howto manager.      (line 1130)
+* BFD_RELOC_BFIN_24_PCREL_CALL_X:        howto manager.      (line 1140)
+* BFD_RELOC_BFIN_24_PCREL_JUMP_L:        howto manager.      (line 1142)
+* BFD_RELOC_BFIN_4_PCREL:                howto manager.      (line 1126)
+* BFD_RELOC_BFIN_5_PCREL:                howto manager.      (line 1128)
+* BFD_RELOC_BFIN_FUNCDESC:               howto manager.      (line 1147)
+* BFD_RELOC_BFIN_FUNCDESC_GOT17M4:       howto manager.      (line 1148)
+* BFD_RELOC_BFIN_FUNCDESC_GOTHI:         howto manager.      (line 1149)
+* BFD_RELOC_BFIN_FUNCDESC_GOTLO:         howto manager.      (line 1150)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4:    howto manager.      (line 1152)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI:      howto manager.      (line 1153)
+* BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO:      howto manager.      (line 1154)
+* BFD_RELOC_BFIN_FUNCDESC_VALUE:         howto manager.      (line 1151)
+* BFD_RELOC_BFIN_GOT:                    howto manager.      (line 1159)
+* BFD_RELOC_BFIN_GOT17M4:                howto manager.      (line 1144)
+* BFD_RELOC_BFIN_GOTHI:                  howto manager.      (line 1145)
+* BFD_RELOC_BFIN_GOTLO:                  howto manager.      (line 1146)
+* BFD_RELOC_BFIN_GOTOFF17M4:             howto manager.      (line 1155)
+* BFD_RELOC_BFIN_GOTOFFHI:               howto manager.      (line 1156)
+* BFD_RELOC_BFIN_GOTOFFLO:               howto manager.      (line 1157)
+* BFD_RELOC_BFIN_PLTPC:                  howto manager.      (line 1161)
+* BFD_RELOC_BPF_64:                      howto manager.      (line 3376)
+* BFD_RELOC_BPF_DISP16:                  howto manager.      (line 3379)
+* BFD_RELOC_BPF_DISP32:                  howto manager.      (line 3377)
+* BFD_RELOC_BPF_DISPCALL32:              howto manager.      (line 3378)
+* BFD_RELOC_C6000_ABS_H16:               howto manager.      (line 1587)
+* BFD_RELOC_C6000_ABS_L16:               howto manager.      (line 1586)
+* BFD_RELOC_C6000_ABS_S16:               howto manager.      (line 1585)
+* BFD_RELOC_C6000_ALIGN:                 howto manager.      (line 1608)
+* BFD_RELOC_C6000_COPY:                  howto manager.      (line 1603)
+* BFD_RELOC_C6000_DSBT_INDEX:            howto manager.      (line 1601)
+* BFD_RELOC_C6000_EHTYPE:                howto manager.      (line 1605)
+* BFD_RELOC_C6000_FPHEAD:                howto manager.      (line 1609)
+* BFD_RELOC_C6000_JUMP_SLOT:             howto manager.      (line 1604)
+* BFD_RELOC_C6000_NOCMP:                 howto manager.      (line 1610)
+* BFD_RELOC_C6000_PCR_H16:               howto manager.      (line 1606)
+* BFD_RELOC_C6000_PCR_L16:               howto manager.      (line 1607)
+* BFD_RELOC_C6000_PCR_S10:               howto manager.      (line 1583)
+* BFD_RELOC_C6000_PCR_S12:               howto manager.      (line 1582)
+* BFD_RELOC_C6000_PCR_S21:               howto manager.      (line 1581)
+* BFD_RELOC_C6000_PCR_S7:                howto manager.      (line 1584)
+* BFD_RELOC_C6000_PREL31:                howto manager.      (line 1602)
+* BFD_RELOC_C6000_SBR_GOT_H16_W:         howto manager.      (line 1600)
+* BFD_RELOC_C6000_SBR_GOT_L16_W:         howto manager.      (line 1599)
+* BFD_RELOC_C6000_SBR_GOT_U15_W:         howto manager.      (line 1598)
+* BFD_RELOC_C6000_SBR_H16_B:             howto manager.      (line 1595)
+* BFD_RELOC_C6000_SBR_H16_H:             howto manager.      (line 1596)
+* BFD_RELOC_C6000_SBR_H16_W:             howto manager.      (line 1597)
+* BFD_RELOC_C6000_SBR_L16_B:             howto manager.      (line 1592)
+* BFD_RELOC_C6000_SBR_L16_H:             howto manager.      (line 1593)
+* BFD_RELOC_C6000_SBR_L16_W:             howto manager.      (line 1594)
+* BFD_RELOC_C6000_SBR_S16:               howto manager.      (line 1591)
+* BFD_RELOC_C6000_SBR_U15_B:             howto manager.      (line 1588)
+* BFD_RELOC_C6000_SBR_U15_H:             howto manager.      (line 1589)
+* BFD_RELOC_C6000_SBR_U15_W:             howto manager.      (line 1590)
+* BFD_RELOC_CKCORE_ADDR32:               howto manager.      (line 3416)
+* BFD_RELOC_CKCORE_ADDRGOT:              howto manager.      (line 3432)
+* BFD_RELOC_CKCORE_ADDRGOT_HI16:         howto manager.      (line 3451)
+* BFD_RELOC_CKCORE_ADDRGOT_LO16:         howto manager.      (line 3452)
+* BFD_RELOC_CKCORE_ADDRPLT:              howto manager.      (line 3433)
+* BFD_RELOC_CKCORE_ADDRPLT_HI16:         howto manager.      (line 3453)
+* BFD_RELOC_CKCORE_ADDRPLT_LO16:         howto manager.      (line 3454)
+* BFD_RELOC_CKCORE_ADDR_HI16:            howto manager.      (line 3439)
+* BFD_RELOC_CKCORE_ADDR_LO16:            howto manager.      (line 3440)
+* BFD_RELOC_CKCORE_CALLGRAPH:            howto manager.      (line 3476)
+* BFD_RELOC_CKCORE_COPY:                 howto manager.      (line 3425)
+* BFD_RELOC_CKCORE_DOFFSET_IMM18:        howto manager.      (line 3459)
+* BFD_RELOC_CKCORE_DOFFSET_IMM18BY2:     howto manager.      (line 3460)
+* BFD_RELOC_CKCORE_DOFFSET_IMM18BY4:     howto manager.      (line 3461)
+* BFD_RELOC_CKCORE_DOFFSET_LO16:         howto manager.      (line 3457)
+* BFD_RELOC_CKCORE_GLOB_DAT:             howto manager.      (line 3426)
+* BFD_RELOC_CKCORE_GNU_VTENTRY:          howto manager.      (line 3423)
+* BFD_RELOC_CKCORE_GNU_VTINHERIT:        howto manager.      (line 3422)
+* BFD_RELOC_CKCORE_GOT12:                howto manager.      (line 3445)
+* BFD_RELOC_CKCORE_GOT32:                howto manager.      (line 3430)
+* BFD_RELOC_CKCORE_GOTOFF:               howto manager.      (line 3428)
+* BFD_RELOC_CKCORE_GOTOFF_HI16:          howto manager.      (line 3443)
+* BFD_RELOC_CKCORE_GOTOFF_IMM18:         howto manager.      (line 3462)
+* BFD_RELOC_CKCORE_GOTOFF_LO16:          howto manager.      (line 3444)
+* BFD_RELOC_CKCORE_GOTPC:                howto manager.      (line 3429)
+* BFD_RELOC_CKCORE_GOTPC_HI16:           howto manager.      (line 3441)
+* BFD_RELOC_CKCORE_GOTPC_LO16:           howto manager.      (line 3442)
+* BFD_RELOC_CKCORE_GOT_HI16:             howto manager.      (line 3446)
+* BFD_RELOC_CKCORE_GOT_IMM18BY4:         howto manager.      (line 3463)
+* BFD_RELOC_CKCORE_GOT_LO16:             howto manager.      (line 3447)
+* BFD_RELOC_CKCORE_IRELATIVE:            howto manager.      (line 3477)
+* BFD_RELOC_CKCORE_JUMP_SLOT:            howto manager.      (line 3427)
+* BFD_RELOC_CKCORE_NOJSRI:               howto manager.      (line 3475)
+* BFD_RELOC_CKCORE_NONE:                 howto manager.      (line 3415)
+* BFD_RELOC_CKCORE_PCREL32:              howto manager.      (line 3420)
+* BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4: howto manager.      (line 3479)
+* BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4:  howto manager.      (line 3478)
+* BFD_RELOC_CKCORE_PCREL_FLRW_IMM8BY4:   howto manager.      (line 3474)
+* BFD_RELOC_CKCORE_PCREL_IMM10BY2:       howto manager.      (line 3437)
+* BFD_RELOC_CKCORE_PCREL_IMM10BY4:       howto manager.      (line 3438)
+* BFD_RELOC_CKCORE_PCREL_IMM11BY2:       howto manager.      (line 3418)
+* BFD_RELOC_CKCORE_PCREL_IMM16BY2:       howto manager.      (line 3435)
+* BFD_RELOC_CKCORE_PCREL_IMM16BY4:       howto manager.      (line 3436)
+* BFD_RELOC_CKCORE_PCREL_IMM18BY2:       howto manager.      (line 3458)
+* BFD_RELOC_CKCORE_PCREL_IMM26BY2:       howto manager.      (line 3434)
+* BFD_RELOC_CKCORE_PCREL_IMM4BY2:        howto manager.      (line 3419)
+* BFD_RELOC_CKCORE_PCREL_IMM7BY4:        howto manager.      (line 3465)
+* BFD_RELOC_CKCORE_PCREL_IMM8BY4:        howto manager.      (line 3417)
+* BFD_RELOC_CKCORE_PCREL_JSR_IMM11BY2:   howto manager.      (line 3421)
+* BFD_RELOC_CKCORE_PCREL_JSR_IMM26BY2:   howto manager.      (line 3455)
+* BFD_RELOC_CKCORE_PLT12:                howto manager.      (line 3448)
+* BFD_RELOC_CKCORE_PLT32:                howto manager.      (line 3431)
+* BFD_RELOC_CKCORE_PLT_HI16:             howto manager.      (line 3449)
+* BFD_RELOC_CKCORE_PLT_IMM18BY4:         howto manager.      (line 3464)
+* BFD_RELOC_CKCORE_PLT_LO16:             howto manager.      (line 3450)
+* BFD_RELOC_CKCORE_RELATIVE:             howto manager.      (line 3424)
+* BFD_RELOC_CKCORE_TLS_DTPMOD32:         howto manager.      (line 3471)
+* BFD_RELOC_CKCORE_TLS_DTPOFF32:         howto manager.      (line 3472)
+* BFD_RELOC_CKCORE_TLS_GD32:             howto manager.      (line 3468)
+* BFD_RELOC_CKCORE_TLS_IE32:             howto manager.      (line 3467)
+* BFD_RELOC_CKCORE_TLS_LDM32:            howto manager.      (line 3469)
+* BFD_RELOC_CKCORE_TLS_LDO32:            howto manager.      (line 3470)
+* BFD_RELOC_CKCORE_TLS_LE32:             howto manager.      (line 3466)
+* BFD_RELOC_CKCORE_TLS_TPOFF32:          howto manager.      (line 3473)
+* BFD_RELOC_CKCORE_TOFFSET_LO16:         howto manager.      (line 3456)
+* bfd_reloc_code_real_type:              howto manager.      (line    9)
+* BFD_RELOC_CR16_ABS20:                  howto manager.      (line 2288)
+* BFD_RELOC_CR16_ABS24:                  howto manager.      (line 2289)
+* BFD_RELOC_CR16_DISP16:                 howto manager.      (line 2299)
+* BFD_RELOC_CR16_DISP20:                 howto manager.      (line 2300)
+* BFD_RELOC_CR16_DISP24:                 howto manager.      (line 2301)
+* BFD_RELOC_CR16_DISP24a:                howto manager.      (line 2302)
+* BFD_RELOC_CR16_DISP4:                  howto manager.      (line 2297)
+* BFD_RELOC_CR16_DISP8:                  howto manager.      (line 2298)
+* BFD_RELOC_CR16_GLOB_DAT:               howto manager.      (line 2308)
+* BFD_RELOC_CR16_GOTC_REGREL20:          howto manager.      (line 2307)
+* BFD_RELOC_CR16_GOT_REGREL20:           howto manager.      (line 2306)
+* BFD_RELOC_CR16_IMM16:                  howto manager.      (line 2292)
+* BFD_RELOC_CR16_IMM20:                  howto manager.      (line 2293)
+* BFD_RELOC_CR16_IMM24:                  howto manager.      (line 2294)
+* BFD_RELOC_CR16_IMM32:                  howto manager.      (line 2295)
+* BFD_RELOC_CR16_IMM32a:                 howto manager.      (line 2296)
+* BFD_RELOC_CR16_IMM4:                   howto manager.      (line 2290)
+* BFD_RELOC_CR16_IMM8:                   howto manager.      (line 2291)
+* BFD_RELOC_CR16_NUM16:                  howto manager.      (line 2277)
+* BFD_RELOC_CR16_NUM32:                  howto manager.      (line 2278)
+* BFD_RELOC_CR16_NUM32a:                 howto manager.      (line 2279)
+* BFD_RELOC_CR16_NUM8:                   howto manager.      (line 2276)
+* BFD_RELOC_CR16_REGREL0:                howto manager.      (line 2280)
+* BFD_RELOC_CR16_REGREL14:               howto manager.      (line 2283)
+* BFD_RELOC_CR16_REGREL14a:              howto manager.      (line 2284)
+* BFD_RELOC_CR16_REGREL16:               howto manager.      (line 2285)
+* BFD_RELOC_CR16_REGREL20:               howto manager.      (line 2286)
+* BFD_RELOC_CR16_REGREL20a:              howto manager.      (line 2287)
+* BFD_RELOC_CR16_REGREL4:                howto manager.      (line 2281)
+* BFD_RELOC_CR16_REGREL4a:               howto manager.      (line 2282)
+* BFD_RELOC_CR16_SWITCH16:               howto manager.      (line 2304)
+* BFD_RELOC_CR16_SWITCH32:               howto manager.      (line 2305)
+* BFD_RELOC_CR16_SWITCH8:                howto manager.      (line 2303)
+* BFD_RELOC_CRIS_16_DTPREL:              howto manager.      (line 2368)
+* BFD_RELOC_CRIS_16_GOT:                 howto manager.      (line 2350)
+* BFD_RELOC_CRIS_16_GOTPLT:              howto manager.      (line 2354)
+* BFD_RELOC_CRIS_16_GOT_GD:              howto manager.      (line 2364)
+* BFD_RELOC_CRIS_16_GOT_TPREL:           howto manager.      (line 2370)
+* BFD_RELOC_CRIS_16_TPREL:               howto manager.      (line 2372)
+* BFD_RELOC_CRIS_32_DTPREL:              howto manager.      (line 2367)
+* BFD_RELOC_CRIS_32_GD:                  howto manager.      (line 2365)
+* BFD_RELOC_CRIS_32_GOT:                 howto manager.      (line 2348)
+* BFD_RELOC_CRIS_32_GOTPLT:              howto manager.      (line 2352)
+* BFD_RELOC_CRIS_32_GOTREL:              howto manager.      (line 2356)
+* BFD_RELOC_CRIS_32_GOT_GD:              howto manager.      (line 2363)
+* BFD_RELOC_CRIS_32_GOT_TPREL:           howto manager.      (line 2369)
+* BFD_RELOC_CRIS_32_IE:                  howto manager.      (line 2374)
+* BFD_RELOC_CRIS_32_PLT_GOTREL:          howto manager.      (line 2358)
+* BFD_RELOC_CRIS_32_PLT_PCREL:           howto manager.      (line 2360)
+* BFD_RELOC_CRIS_32_TPREL:               howto manager.      (line 2371)
+* BFD_RELOC_CRIS_BDISP8:                 howto manager.      (line 2331)
+* BFD_RELOC_CRIS_COPY:                   howto manager.      (line 2343)
+* BFD_RELOC_CRIS_DTP:                    howto manager.      (line 2366)
+* BFD_RELOC_CRIS_DTPMOD:                 howto manager.      (line 2373)
+* BFD_RELOC_CRIS_GLOB_DAT:               howto manager.      (line 2344)
+* BFD_RELOC_CRIS_JUMP_SLOT:              howto manager.      (line 2345)
+* BFD_RELOC_CRIS_LAPCQ_OFFSET:           howto manager.      (line 2339)
+* BFD_RELOC_CRIS_RELATIVE:               howto manager.      (line 2346)
+* BFD_RELOC_CRIS_SIGNED_16:              howto manager.      (line 2337)
+* BFD_RELOC_CRIS_SIGNED_6:               howto manager.      (line 2333)
+* BFD_RELOC_CRIS_SIGNED_8:               howto manager.      (line 2335)
+* BFD_RELOC_CRIS_UNSIGNED_16:            howto manager.      (line 2338)
+* BFD_RELOC_CRIS_UNSIGNED_4:             howto manager.      (line 2340)
+* BFD_RELOC_CRIS_UNSIGNED_5:             howto manager.      (line 2332)
+* BFD_RELOC_CRIS_UNSIGNED_6:             howto manager.      (line 2334)
+* BFD_RELOC_CRIS_UNSIGNED_8:             howto manager.      (line 2336)
+* BFD_RELOC_CRX_ABS16:                   howto manager.      (line 2320)
+* BFD_RELOC_CRX_ABS32:                   howto manager.      (line 2321)
+* BFD_RELOC_CRX_IMM16:                   howto manager.      (line 2325)
+* BFD_RELOC_CRX_IMM32:                   howto manager.      (line 2326)
+* BFD_RELOC_CRX_NUM16:                   howto manager.      (line 2323)
+* BFD_RELOC_CRX_NUM32:                   howto manager.      (line 2324)
+* BFD_RELOC_CRX_NUM8:                    howto manager.      (line 2322)
+* BFD_RELOC_CRX_REGREL12:                howto manager.      (line 2316)
+* BFD_RELOC_CRX_REGREL22:                howto manager.      (line 2317)
+* BFD_RELOC_CRX_REGREL28:                howto manager.      (line 2318)
+* BFD_RELOC_CRX_REGREL32:                howto manager.      (line 2319)
+* BFD_RELOC_CRX_REL16:                   howto manager.      (line 2313)
+* BFD_RELOC_CRX_REL24:                   howto manager.      (line 2314)
+* BFD_RELOC_CRX_REL32:                   howto manager.      (line 2315)
+* BFD_RELOC_CRX_REL4:                    howto manager.      (line 2310)
+* BFD_RELOC_CRX_REL8:                    howto manager.      (line 2311)
+* BFD_RELOC_CRX_REL8_CMP:                howto manager.      (line 2312)
+* BFD_RELOC_CRX_SWITCH16:                howto manager.      (line 2328)
+* BFD_RELOC_CRX_SWITCH32:                howto manager.      (line 2329)
+* BFD_RELOC_CRX_SWITCH8:                 howto manager.      (line 2327)
+* BFD_RELOC_CTOR:                        howto manager.      (line  782)
+* BFD_RELOC_D10V_10_PCREL_L:             howto manager.      (line 1206)
+* BFD_RELOC_D10V_10_PCREL_R:             howto manager.      (line 1203)
+* BFD_RELOC_D10V_18:                     howto manager.      (line 1210)
+* BFD_RELOC_D10V_18_PCREL:               howto manager.      (line 1212)
+* BFD_RELOC_D30V_15:                     howto manager.      (line 1223)
+* BFD_RELOC_D30V_15_PCREL:               howto manager.      (line 1226)
+* BFD_RELOC_D30V_15_PCREL_R:             howto manager.      (line 1229)
+* BFD_RELOC_D30V_21:                     howto manager.      (line 1233)
+* BFD_RELOC_D30V_21_PCREL:               howto manager.      (line 1236)
+* BFD_RELOC_D30V_21_PCREL_R:             howto manager.      (line 1239)
+* BFD_RELOC_D30V_32:                     howto manager.      (line 1243)
+* BFD_RELOC_D30V_32_PCREL:               howto manager.      (line 1245)
+* BFD_RELOC_D30V_6:                      howto manager.      (line 1214)
+* BFD_RELOC_D30V_9_PCREL:                howto manager.      (line 1216)
+* BFD_RELOC_D30V_9_PCREL_R:              howto manager.      (line 1219)
+* BFD_RELOC_DLX_HI16_S:                  howto manager.      (line 1247)
+* BFD_RELOC_DLX_JMP26:                   howto manager.      (line 1249)
+* BFD_RELOC_DLX_LO16:                    howto manager.      (line 1248)
+* BFD_RELOC_EPIPHANY_HIGH:               howto manager.      (line 3385)
+* BFD_RELOC_EPIPHANY_IMM11:              howto manager.      (line 3391)
+* BFD_RELOC_EPIPHANY_IMM8:               howto manager.      (line 3394)
+* BFD_RELOC_EPIPHANY_LOW:                howto manager.      (line 3387)
+* BFD_RELOC_EPIPHANY_SIMM11:             howto manager.      (line 3389)
+* BFD_RELOC_EPIPHANY_SIMM24:             howto manager.      (line 3383)
+* BFD_RELOC_EPIPHANY_SIMM8:              howto manager.      (line 3381)
+* BFD_RELOC_FR30_10_IN_8:                howto manager.      (line 1626)
+* BFD_RELOC_FR30_12_PCREL:               howto manager.      (line 1632)
+* BFD_RELOC_FR30_20:                     howto manager.      (line 1614)
+* BFD_RELOC_FR30_48:                     howto manager.      (line 1612)
+* BFD_RELOC_FR30_6_IN_4:                 howto manager.      (line 1617)
+* BFD_RELOC_FR30_8_IN_8:                 howto manager.      (line 1620)
+* BFD_RELOC_FR30_9_IN_8:                 howto manager.      (line 1623)
+* BFD_RELOC_FR30_9_PCREL:                howto manager.      (line 1629)
 * BFD_RELOC_FRV_FUNCDESC:                howto manager.      (line  451)
 * BFD_RELOC_FRV_FUNCDESC_GOT12:          howto manager.      (line  452)
 * BFD_RELOC_FRV_FUNCDESC_GOTHI:          howto manager.      (line  453)
@@ -13029,12 +12892,12 @@ BFD Index
 * BFD_RELOC_FT32_SC1:                    howto manager.      (line  435)
 * BFD_RELOC_GPREL16:                     howto manager.      (line  112)
 * BFD_RELOC_GPREL32:                     howto manager.      (line  113)
-* BFD_RELOC_H8_DIR16A8:                  howto manager.      (line 2404)
-* BFD_RELOC_H8_DIR16R8:                  howto manager.      (line 2405)
-* BFD_RELOC_H8_DIR24A8:                  howto manager.      (line 2406)
-* BFD_RELOC_H8_DIR24R8:                  howto manager.      (line 2407)
-* BFD_RELOC_H8_DIR32A16:                 howto manager.      (line 2408)
-* BFD_RELOC_H8_DISP32A16:                howto manager.      (line 2409)
+* BFD_RELOC_H8_DIR16A8:                  howto manager.      (line 2417)
+* BFD_RELOC_H8_DIR16R8:                  howto manager.      (line 2418)
+* BFD_RELOC_H8_DIR24A8:                  howto manager.      (line 2419)
+* BFD_RELOC_H8_DIR24R8:                  howto manager.      (line 2420)
+* BFD_RELOC_H8_DIR32A16:                 howto manager.      (line 2421)
+* BFD_RELOC_H8_DISP32A16:                howto manager.      (line 2422)
 * BFD_RELOC_HI16:                        howto manager.      (line  312)
 * BFD_RELOC_HI16_BASEREL:                howto manager.      (line   92)
 * BFD_RELOC_HI16_GOTOFF:                 howto manager.      (line   51)
@@ -13046,263 +12909,457 @@ BFD Index
 * BFD_RELOC_HI16_S_PCREL:                howto manager.      (line  323)
 * BFD_RELOC_HI16_S_PLTOFF:               howto manager.      (line   64)
 * BFD_RELOC_HI22:                        howto manager.      (line  108)
-* BFD_RELOC_I370_D12:                    howto manager.      (line  757)
-* BFD_RELOC_IA64_COPY:                   howto manager.      (line 2162)
-* BFD_RELOC_IA64_DIR32LSB:               howto manager.      (line 2107)
-* BFD_RELOC_IA64_DIR32MSB:               howto manager.      (line 2106)
-* BFD_RELOC_IA64_DIR64LSB:               howto manager.      (line 2109)
-* BFD_RELOC_IA64_DIR64MSB:               howto manager.      (line 2108)
-* BFD_RELOC_IA64_DTPMOD64LSB:            howto manager.      (line 2172)
-* BFD_RELOC_IA64_DTPMOD64MSB:            howto manager.      (line 2171)
-* BFD_RELOC_IA64_DTPREL14:               howto manager.      (line 2174)
-* BFD_RELOC_IA64_DTPREL22:               howto manager.      (line 2175)
-* BFD_RELOC_IA64_DTPREL32LSB:            howto manager.      (line 2178)
-* BFD_RELOC_IA64_DTPREL32MSB:            howto manager.      (line 2177)
-* BFD_RELOC_IA64_DTPREL64I:              howto manager.      (line 2176)
-* BFD_RELOC_IA64_DTPREL64LSB:            howto manager.      (line 2180)
-* BFD_RELOC_IA64_DTPREL64MSB:            howto manager.      (line 2179)
-* BFD_RELOC_IA64_FPTR32LSB:              howto manager.      (line 2124)
-* BFD_RELOC_IA64_FPTR32MSB:              howto manager.      (line 2123)
-* BFD_RELOC_IA64_FPTR64I:                howto manager.      (line 2122)
-* BFD_RELOC_IA64_FPTR64LSB:              howto manager.      (line 2126)
-* BFD_RELOC_IA64_FPTR64MSB:              howto manager.      (line 2125)
-* BFD_RELOC_IA64_GPREL22:                howto manager.      (line 2110)
-* BFD_RELOC_IA64_GPREL32LSB:             howto manager.      (line 2113)
-* BFD_RELOC_IA64_GPREL32MSB:             howto manager.      (line 2112)
-* BFD_RELOC_IA64_GPREL64I:               howto manager.      (line 2111)
-* BFD_RELOC_IA64_GPREL64LSB:             howto manager.      (line 2115)
-* BFD_RELOC_IA64_GPREL64MSB:             howto manager.      (line 2114)
-* BFD_RELOC_IA64_IMM14:                  howto manager.      (line 2103)
-* BFD_RELOC_IA64_IMM22:                  howto manager.      (line 2104)
-* BFD_RELOC_IA64_IMM64:                  howto manager.      (line 2105)
-* BFD_RELOC_IA64_IPLTLSB:                howto manager.      (line 2161)
-* BFD_RELOC_IA64_IPLTMSB:                howto manager.      (line 2160)
-* BFD_RELOC_IA64_LDXMOV:                 howto manager.      (line 2164)
-* BFD_RELOC_IA64_LTOFF22:                howto manager.      (line 2116)
-* BFD_RELOC_IA64_LTOFF22X:               howto manager.      (line 2163)
-* BFD_RELOC_IA64_LTOFF64I:               howto manager.      (line 2117)
-* BFD_RELOC_IA64_LTOFF_DTPMOD22:         howto manager.      (line 2173)
-* BFD_RELOC_IA64_LTOFF_DTPREL22:         howto manager.      (line 2181)
-* BFD_RELOC_IA64_LTOFF_FPTR22:           howto manager.      (line 2138)
-* BFD_RELOC_IA64_LTOFF_FPTR32LSB:        howto manager.      (line 2141)
-* BFD_RELOC_IA64_LTOFF_FPTR32MSB:        howto manager.      (line 2140)
-* BFD_RELOC_IA64_LTOFF_FPTR64I:          howto manager.      (line 2139)
-* BFD_RELOC_IA64_LTOFF_FPTR64LSB:        howto manager.      (line 2143)
-* BFD_RELOC_IA64_LTOFF_FPTR64MSB:        howto manager.      (line 2142)
-* BFD_RELOC_IA64_LTOFF_TPREL22:          howto manager.      (line 2170)
-* BFD_RELOC_IA64_LTV32LSB:               howto manager.      (line 2157)
-* BFD_RELOC_IA64_LTV32MSB:               howto manager.      (line 2156)
-* BFD_RELOC_IA64_LTV64LSB:               howto manager.      (line 2159)
-* BFD_RELOC_IA64_LTV64MSB:               howto manager.      (line 2158)
-* BFD_RELOC_IA64_PCREL21B:               howto manager.      (line 2127)
-* BFD_RELOC_IA64_PCREL21BI:              howto manager.      (line 2128)
-* BFD_RELOC_IA64_PCREL21F:               howto manager.      (line 2130)
-* BFD_RELOC_IA64_PCREL21M:               howto manager.      (line 2129)
-* BFD_RELOC_IA64_PCREL22:                howto manager.      (line 2131)
-* BFD_RELOC_IA64_PCREL32LSB:             howto manager.      (line 2135)
-* BFD_RELOC_IA64_PCREL32MSB:             howto manager.      (line 2134)
-* BFD_RELOC_IA64_PCREL60B:               howto manager.      (line 2132)
-* BFD_RELOC_IA64_PCREL64I:               howto manager.      (line 2133)
-* BFD_RELOC_IA64_PCREL64LSB:             howto manager.      (line 2137)
-* BFD_RELOC_IA64_PCREL64MSB:             howto manager.      (line 2136)
-* BFD_RELOC_IA64_PLTOFF22:               howto manager.      (line 2118)
-* BFD_RELOC_IA64_PLTOFF64I:              howto manager.      (line 2119)
-* BFD_RELOC_IA64_PLTOFF64LSB:            howto manager.      (line 2121)
-* BFD_RELOC_IA64_PLTOFF64MSB:            howto manager.      (line 2120)
-* BFD_RELOC_IA64_REL32LSB:               howto manager.      (line 2153)
-* BFD_RELOC_IA64_REL32MSB:               howto manager.      (line 2152)
-* BFD_RELOC_IA64_REL64LSB:               howto manager.      (line 2155)
-* BFD_RELOC_IA64_REL64MSB:               howto manager.      (line 2154)
-* BFD_RELOC_IA64_SECREL32LSB:            howto manager.      (line 2149)
-* BFD_RELOC_IA64_SECREL32MSB:            howto manager.      (line 2148)
-* BFD_RELOC_IA64_SECREL64LSB:            howto manager.      (line 2151)
-* BFD_RELOC_IA64_SECREL64MSB:            howto manager.      (line 2150)
-* BFD_RELOC_IA64_SEGREL32LSB:            howto manager.      (line 2145)
-* BFD_RELOC_IA64_SEGREL32MSB:            howto manager.      (line 2144)
-* BFD_RELOC_IA64_SEGREL64LSB:            howto manager.      (line 2147)
-* BFD_RELOC_IA64_SEGREL64MSB:            howto manager.      (line 2146)
-* BFD_RELOC_IA64_TPREL14:                howto manager.      (line 2165)
-* BFD_RELOC_IA64_TPREL22:                howto manager.      (line 2166)
-* BFD_RELOC_IA64_TPREL64I:               howto manager.      (line 2167)
-* BFD_RELOC_IA64_TPREL64LSB:             howto manager.      (line 2169)
-* BFD_RELOC_IA64_TPREL64MSB:             howto manager.      (line 2168)
-* BFD_RELOC_IP2K_ADDR16CJP:              howto manager.      (line 2064)
-* BFD_RELOC_IP2K_BANK:                   howto manager.      (line 2062)
-* BFD_RELOC_IP2K_EX8DATA:                howto manager.      (line 2070)
-* BFD_RELOC_IP2K_FR9:                    howto manager.      (line 2060)
-* BFD_RELOC_IP2K_FR_OFFSET:              howto manager.      (line 2079)
-* BFD_RELOC_IP2K_HI8DATA:                howto manager.      (line 2069)
-* BFD_RELOC_IP2K_HI8INSN:                howto manager.      (line 2073)
-* BFD_RELOC_IP2K_LO8DATA:                howto manager.      (line 2068)
-* BFD_RELOC_IP2K_LO8INSN:                howto manager.      (line 2072)
-* 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_I370_D12:                    howto manager.      (line  780)
+* BFD_RELOC_IA64_COPY:                   howto manager.      (line 2174)
+* BFD_RELOC_IA64_DIR32LSB:               howto manager.      (line 2119)
+* BFD_RELOC_IA64_DIR32MSB:               howto manager.      (line 2118)
+* BFD_RELOC_IA64_DIR64LSB:               howto manager.      (line 2121)
+* BFD_RELOC_IA64_DIR64MSB:               howto manager.      (line 2120)
+* BFD_RELOC_IA64_DTPMOD64LSB:            howto manager.      (line 2184)
+* BFD_RELOC_IA64_DTPMOD64MSB:            howto manager.      (line 2183)
+* BFD_RELOC_IA64_DTPREL14:               howto manager.      (line 2186)
+* BFD_RELOC_IA64_DTPREL22:               howto manager.      (line 2187)
+* BFD_RELOC_IA64_DTPREL32LSB:            howto manager.      (line 2190)
+* BFD_RELOC_IA64_DTPREL32MSB:            howto manager.      (line 2189)
+* BFD_RELOC_IA64_DTPREL64I:              howto manager.      (line 2188)
+* BFD_RELOC_IA64_DTPREL64LSB:            howto manager.      (line 2192)
+* BFD_RELOC_IA64_DTPREL64MSB:            howto manager.      (line 2191)
+* BFD_RELOC_IA64_FPTR32LSB:              howto manager.      (line 2136)
+* BFD_RELOC_IA64_FPTR32MSB:              howto manager.      (line 2135)
+* BFD_RELOC_IA64_FPTR64I:                howto manager.      (line 2134)
+* BFD_RELOC_IA64_FPTR64LSB:              howto manager.      (line 2138)
+* BFD_RELOC_IA64_FPTR64MSB:              howto manager.      (line 2137)
+* BFD_RELOC_IA64_GPREL22:                howto manager.      (line 2122)
+* BFD_RELOC_IA64_GPREL32LSB:             howto manager.      (line 2125)
+* BFD_RELOC_IA64_GPREL32MSB:             howto manager.      (line 2124)
+* BFD_RELOC_IA64_GPREL64I:               howto manager.      (line 2123)
+* BFD_RELOC_IA64_GPREL64LSB:             howto manager.      (line 2127)
+* BFD_RELOC_IA64_GPREL64MSB:             howto manager.      (line 2126)
+* BFD_RELOC_IA64_IMM14:                  howto manager.      (line 2115)
+* BFD_RELOC_IA64_IMM22:                  howto manager.      (line 2116)
+* BFD_RELOC_IA64_IMM64:                  howto manager.      (line 2117)
+* BFD_RELOC_IA64_IPLTLSB:                howto manager.      (line 2173)
+* BFD_RELOC_IA64_IPLTMSB:                howto manager.      (line 2172)
+* BFD_RELOC_IA64_LDXMOV:                 howto manager.      (line 2176)
+* BFD_RELOC_IA64_LTOFF22:                howto manager.      (line 2128)
+* BFD_RELOC_IA64_LTOFF22X:               howto manager.      (line 2175)
+* BFD_RELOC_IA64_LTOFF64I:               howto manager.      (line 2129)
+* BFD_RELOC_IA64_LTOFF_DTPMOD22:         howto manager.      (line 2185)
+* BFD_RELOC_IA64_LTOFF_DTPREL22:         howto manager.      (line 2193)
+* BFD_RELOC_IA64_LTOFF_FPTR22:           howto manager.      (line 2150)
+* BFD_RELOC_IA64_LTOFF_FPTR32LSB:        howto manager.      (line 2153)
+* BFD_RELOC_IA64_LTOFF_FPTR32MSB:        howto manager.      (line 2152)
+* BFD_RELOC_IA64_LTOFF_FPTR64I:          howto manager.      (line 2151)
+* BFD_RELOC_IA64_LTOFF_FPTR64LSB:        howto manager.      (line 2155)
+* BFD_RELOC_IA64_LTOFF_FPTR64MSB:        howto manager.      (line 2154)
+* BFD_RELOC_IA64_LTOFF_TPREL22:          howto manager.      (line 2182)
+* BFD_RELOC_IA64_LTV32LSB:               howto manager.      (line 2169)
+* BFD_RELOC_IA64_LTV32MSB:               howto manager.      (line 2168)
+* BFD_RELOC_IA64_LTV64LSB:               howto manager.      (line 2171)
+* BFD_RELOC_IA64_LTV64MSB:               howto manager.      (line 2170)
+* BFD_RELOC_IA64_PCREL21B:               howto manager.      (line 2139)
+* BFD_RELOC_IA64_PCREL21BI:              howto manager.      (line 2140)
+* BFD_RELOC_IA64_PCREL21F:               howto manager.      (line 2142)
+* BFD_RELOC_IA64_PCREL21M:               howto manager.      (line 2141)
+* BFD_RELOC_IA64_PCREL22:                howto manager.      (line 2143)
+* BFD_RELOC_IA64_PCREL32LSB:             howto manager.      (line 2147)
+* BFD_RELOC_IA64_PCREL32MSB:             howto manager.      (line 2146)
+* BFD_RELOC_IA64_PCREL60B:               howto manager.      (line 2144)
+* BFD_RELOC_IA64_PCREL64I:               howto manager.      (line 2145)
+* BFD_RELOC_IA64_PCREL64LSB:             howto manager.      (line 2149)
+* BFD_RELOC_IA64_PCREL64MSB:             howto manager.      (line 2148)
+* BFD_RELOC_IA64_PLTOFF22:               howto manager.      (line 2130)
+* BFD_RELOC_IA64_PLTOFF64I:              howto manager.      (line 2131)
+* BFD_RELOC_IA64_PLTOFF64LSB:            howto manager.      (line 2133)
+* BFD_RELOC_IA64_PLTOFF64MSB:            howto manager.      (line 2132)
+* BFD_RELOC_IA64_REL32LSB:               howto manager.      (line 2165)
+* BFD_RELOC_IA64_REL32MSB:               howto manager.      (line 2164)
+* BFD_RELOC_IA64_REL64LSB:               howto manager.      (line 2167)
+* BFD_RELOC_IA64_REL64MSB:               howto manager.      (line 2166)
+* BFD_RELOC_IA64_SECREL32LSB:            howto manager.      (line 2161)
+* BFD_RELOC_IA64_SECREL32MSB:            howto manager.      (line 2160)
+* BFD_RELOC_IA64_SECREL64LSB:            howto manager.      (line 2163)
+* BFD_RELOC_IA64_SECREL64MSB:            howto manager.      (line 2162)
+* BFD_RELOC_IA64_SEGREL32LSB:            howto manager.      (line 2157)
+* BFD_RELOC_IA64_SEGREL32MSB:            howto manager.      (line 2156)
+* BFD_RELOC_IA64_SEGREL64LSB:            howto manager.      (line 2159)
+* BFD_RELOC_IA64_SEGREL64MSB:            howto manager.      (line 2158)
+* BFD_RELOC_IA64_TPREL14:                howto manager.      (line 2177)
+* BFD_RELOC_IA64_TPREL22:                howto manager.      (line 2178)
+* BFD_RELOC_IA64_TPREL64I:               howto manager.      (line 2179)
+* BFD_RELOC_IA64_TPREL64LSB:             howto manager.      (line 2181)
+* BFD_RELOC_IA64_TPREL64MSB:             howto manager.      (line 2180)
+* BFD_RELOC_IP2K_ADDR16CJP:              howto manager.      (line 2076)
+* BFD_RELOC_IP2K_BANK:                   howto manager.      (line 2074)
+* BFD_RELOC_IP2K_EX8DATA:                howto manager.      (line 2082)
+* BFD_RELOC_IP2K_FR9:                    howto manager.      (line 2072)
+* BFD_RELOC_IP2K_FR_OFFSET:              howto manager.      (line 2091)
+* BFD_RELOC_IP2K_HI8DATA:                howto manager.      (line 2081)
+* BFD_RELOC_IP2K_HI8INSN:                howto manager.      (line 2085)
+* BFD_RELOC_IP2K_LO8DATA:                howto manager.      (line 2080)
+* BFD_RELOC_IP2K_LO8INSN:                howto manager.      (line 2084)
+* BFD_RELOC_IP2K_PAGE3:                  howto manager.      (line 2078)
+* BFD_RELOC_IP2K_PC_SKIP:                howto manager.      (line 2087)
+* BFD_RELOC_IP2K_TEXT:                   howto manager.      (line 2089)
+* BFD_RELOC_IQ2000_OFFSET_16:            howto manager.      (line 2500)
+* BFD_RELOC_IQ2000_OFFSET_21:            howto manager.      (line 2501)
+* BFD_RELOC_IQ2000_UHI16:                howto manager.      (line 2502)
+* BFD_RELOC_KVX_16:                      howto manager.      (line 2750)
+* BFD_RELOC_KVX_32:                      howto manager.      (line 2751)
+* BFD_RELOC_KVX_32_GOT:                  howto manager.      (line 2778)
+* BFD_RELOC_KVX_32_GOTOFF:               howto manager.      (line 2776)
+* BFD_RELOC_KVX_32_PCREL:                howto manager.      (line 2756)
+* BFD_RELOC_KVX_64:                      howto manager.      (line 2752)
+* BFD_RELOC_KVX_64_DTPMOD:               howto manager.      (line 2803)
+* BFD_RELOC_KVX_64_DTPOFF:               howto manager.      (line 2804)
+* BFD_RELOC_KVX_64_GOT:                  howto manager.      (line 2784)
+* BFD_RELOC_KVX_64_GOTOFF:               howto manager.      (line 2777)
+* BFD_RELOC_KVX_64_PCREL:                howto manager.      (line 2765)
+* BFD_RELOC_KVX_64_TPOFF:                howto manager.      (line 2820)
+* BFD_RELOC_KVX_8:                       howto manager.      (line 2831)
+* BFD_RELOC_KVX_COPY:                    howto manager.      (line 2786)
+* BFD_RELOC_KVX_GLOB_DAT:                howto manager.      (line 2785)
+* BFD_RELOC_KVX_JMP_SLOT:                howto manager.      (line 2787)
+* BFD_RELOC_KVX_NONE:                    howto manager.      (line 2748)
+* BFD_RELOC_KVX_PCREL17:                 howto manager.      (line 2754)
+* BFD_RELOC_KVX_PCREL27:                 howto manager.      (line 2755)
+* BFD_RELOC_KVX_RELATIVE:                howto manager.      (line 2788)
+* BFD_RELOC_KVX_RELOC_END:               howto manager.      (line 2833)
+* BFD_RELOC_KVX_RELOC_START:             howto manager.      (line 2743)
+* BFD_RELOC_KVX_S16:                     howto manager.      (line 2766)
+* BFD_RELOC_KVX_S16_PCREL:               howto manager.      (line 2753)
+* BFD_RELOC_KVX_S32_LO5:                 howto manager.      (line 2767)
+* BFD_RELOC_KVX_S32_UP27:                howto manager.      (line 2768)
+* BFD_RELOC_KVX_S37_GOTADDR_LO10:        howto manager.      (line 2795)
+* BFD_RELOC_KVX_S37_GOTADDR_UP27:        howto manager.      (line 2796)
+* BFD_RELOC_KVX_S37_GOTOFF_LO10:         howto manager.      (line 2771)
+* BFD_RELOC_KVX_S37_GOTOFF_UP27:         howto manager.      (line 2772)
+* BFD_RELOC_KVX_S37_GOT_LO10:            howto manager.      (line 2779)
+* BFD_RELOC_KVX_S37_GOT_UP27:            howto manager.      (line 2780)
+* BFD_RELOC_KVX_S37_LO10:                howto manager.      (line 2769)
+* BFD_RELOC_KVX_S37_PCREL_LO10:          howto manager.      (line 2757)
+* BFD_RELOC_KVX_S37_PCREL_UP27:          howto manager.      (line 2758)
+* BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10:     howto manager.      (line 2805)
+* BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27:     howto manager.      (line 2806)
+* BFD_RELOC_KVX_S37_TLS_GD_LO10:         howto manager.      (line 2810)
+* BFD_RELOC_KVX_S37_TLS_GD_UP27:         howto manager.      (line 2811)
+* BFD_RELOC_KVX_S37_TLS_IE_LO10:         howto manager.      (line 2821)
+* BFD_RELOC_KVX_S37_TLS_IE_UP27:         howto manager.      (line 2822)
+* BFD_RELOC_KVX_S37_TLS_LD_LO10:         howto manager.      (line 2815)
+* BFD_RELOC_KVX_S37_TLS_LD_UP27:         howto manager.      (line 2816)
+* BFD_RELOC_KVX_S37_TLS_LE_LO10:         howto manager.      (line 2826)
+* BFD_RELOC_KVX_S37_TLS_LE_UP27:         howto manager.      (line 2827)
+* BFD_RELOC_KVX_S37_UP27:                howto manager.      (line 2770)
+* BFD_RELOC_KVX_S43_EX6:                 howto manager.      (line 2791)
+* BFD_RELOC_KVX_S43_GOTADDR_EX6:         howto manager.      (line 2799)
+* BFD_RELOC_KVX_S43_GOTADDR_LO10:        howto manager.      (line 2797)
+* BFD_RELOC_KVX_S43_GOTADDR_UP27:        howto manager.      (line 2798)
+* BFD_RELOC_KVX_S43_GOTOFF_EX6:          howto manager.      (line 2775)
+* BFD_RELOC_KVX_S43_GOTOFF_LO10:         howto manager.      (line 2773)
+* BFD_RELOC_KVX_S43_GOTOFF_UP27:         howto manager.      (line 2774)
+* BFD_RELOC_KVX_S43_GOT_EX6:             howto manager.      (line 2783)
+* BFD_RELOC_KVX_S43_GOT_LO10:            howto manager.      (line 2781)
+* BFD_RELOC_KVX_S43_GOT_UP27:            howto manager.      (line 2782)
+* BFD_RELOC_KVX_S43_LO10:                howto manager.      (line 2789)
+* BFD_RELOC_KVX_S43_PCREL_EX6:           howto manager.      (line 2761)
+* BFD_RELOC_KVX_S43_PCREL_LO10:          howto manager.      (line 2759)
+* BFD_RELOC_KVX_S43_PCREL_UP27:          howto manager.      (line 2760)
+* BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6:      howto manager.      (line 2809)
+* BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10:     howto manager.      (line 2807)
+* BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27:     howto manager.      (line 2808)
+* BFD_RELOC_KVX_S43_TLS_GD_EX6:          howto manager.      (line 2814)
+* BFD_RELOC_KVX_S43_TLS_GD_LO10:         howto manager.      (line 2812)
+* BFD_RELOC_KVX_S43_TLS_GD_UP27:         howto manager.      (line 2813)
+* BFD_RELOC_KVX_S43_TLS_IE_EX6:          howto manager.      (line 2825)
+* BFD_RELOC_KVX_S43_TLS_IE_LO10:         howto manager.      (line 2823)
+* BFD_RELOC_KVX_S43_TLS_IE_UP27:         howto manager.      (line 2824)
+* BFD_RELOC_KVX_S43_TLS_LD_EX6:          howto manager.      (line 2819)
+* BFD_RELOC_KVX_S43_TLS_LD_LO10:         howto manager.      (line 2817)
+* BFD_RELOC_KVX_S43_TLS_LD_UP27:         howto manager.      (line 2818)
+* BFD_RELOC_KVX_S43_TLS_LE_EX6:          howto manager.      (line 2830)
+* BFD_RELOC_KVX_S43_TLS_LE_LO10:         howto manager.      (line 2828)
+* BFD_RELOC_KVX_S43_TLS_LE_UP27:         howto manager.      (line 2829)
+* BFD_RELOC_KVX_S43_UP27:                howto manager.      (line 2790)
+* BFD_RELOC_KVX_S64_EX27:                howto manager.      (line 2794)
+* BFD_RELOC_KVX_S64_GOTADDR_EX27:        howto manager.      (line 2802)
+* BFD_RELOC_KVX_S64_GOTADDR_LO10:        howto manager.      (line 2800)
+* BFD_RELOC_KVX_S64_GOTADDR_UP27:        howto manager.      (line 2801)
+* BFD_RELOC_KVX_S64_LO10:                howto manager.      (line 2792)
+* BFD_RELOC_KVX_S64_PCREL_EX27:          howto manager.      (line 2764)
+* BFD_RELOC_KVX_S64_PCREL_LO10:          howto manager.      (line 2762)
+* BFD_RELOC_KVX_S64_PCREL_UP27:          howto manager.      (line 2763)
+* BFD_RELOC_KVX_S64_UP27:                howto manager.      (line 2793)
+* BFD_RELOC_LARCH_32_PCREL:              howto manager.      (line 3563)
+* BFD_RELOC_LARCH_64_PCREL:              howto manager.      (line 3573)
+* BFD_RELOC_LARCH_ABS64_HI12:            howto manager.      (line 3534)
+* BFD_RELOC_LARCH_ABS64_LO20:            howto manager.      (line 3533)
+* BFD_RELOC_LARCH_ABS_HI20:              howto manager.      (line 3531)
+* BFD_RELOC_LARCH_ABS_LO12:              howto manager.      (line 3532)
+* BFD_RELOC_LARCH_ADD16:                 howto manager.      (line 3519)
+* BFD_RELOC_LARCH_ADD24:                 howto manager.      (line 3520)
+* BFD_RELOC_LARCH_ADD32:                 howto manager.      (line 3521)
+* BFD_RELOC_LARCH_ADD6:                  howto manager.      (line 3569)
+* BFD_RELOC_LARCH_ADD64:                 howto manager.      (line 3522)
+* BFD_RELOC_LARCH_ADD8:                  howto manager.      (line 3518)
+* BFD_RELOC_LARCH_ADD_ULEB128:           howto manager.      (line 3571)
+* BFD_RELOC_LARCH_ALIGN:                 howto manager.      (line 3566)
+* BFD_RELOC_LARCH_B16:                   howto manager.      (line 3528)
+* BFD_RELOC_LARCH_B21:                   howto manager.      (line 3529)
+* BFD_RELOC_LARCH_B26:                   howto manager.      (line 3530)
+* BFD_RELOC_LARCH_CALL36:                howto manager.      (line 3574)
+* BFD_RELOC_LARCH_CFA:                   howto manager.      (line 3568)
+* BFD_RELOC_LARCH_DELETE:                howto manager.      (line 3565)
+* BFD_RELOC_LARCH_GOT64_HI12:            howto manager.      (line 3546)
+* BFD_RELOC_LARCH_GOT64_LO20:            howto manager.      (line 3545)
+* BFD_RELOC_LARCH_GOT64_PC_HI12:         howto manager.      (line 3542)
+* BFD_RELOC_LARCH_GOT64_PC_LO20:         howto manager.      (line 3541)
+* BFD_RELOC_LARCH_GOT_HI20:              howto manager.      (line 3543)
+* BFD_RELOC_LARCH_GOT_LO12:              howto manager.      (line 3544)
+* BFD_RELOC_LARCH_GOT_PC_HI20:           howto manager.      (line 3539)
+* BFD_RELOC_LARCH_GOT_PC_LO12:           howto manager.      (line 3540)
+* BFD_RELOC_LARCH_MARK_LA:               howto manager.      (line 3491)
+* BFD_RELOC_LARCH_MARK_PCREL:            howto manager.      (line 3492)
+* BFD_RELOC_LARCH_PCALA64_HI12:          howto manager.      (line 3538)
+* BFD_RELOC_LARCH_PCALA64_LO20:          howto manager.      (line 3537)
+* BFD_RELOC_LARCH_PCALA_HI20:            howto manager.      (line 3535)
+* BFD_RELOC_LARCH_PCALA_LO12:            howto manager.      (line 3536)
+* BFD_RELOC_LARCH_PCREL20_S2:            howto manager.      (line 3567)
+* BFD_RELOC_LARCH_RELAX:                 howto manager.      (line 3564)
+* BFD_RELOC_LARCH_SOP_ADD:               howto manager.      (line 3506)
+* BFD_RELOC_LARCH_SOP_AND:               howto manager.      (line 3507)
+* BFD_RELOC_LARCH_SOP_ASSERT:            howto manager.      (line 3501)
+* BFD_RELOC_LARCH_SOP_IF_ELSE:           howto manager.      (line 3508)
+* BFD_RELOC_LARCH_SOP_NOT:               howto manager.      (line 3502)
+* BFD_RELOC_LARCH_SOP_POP_32_S_0_10_10_16_S2: howto manager. (line 3516)
+* BFD_RELOC_LARCH_SOP_POP_32_S_0_5_10_16_S2: howto manager.  (line 3515)
+* BFD_RELOC_LARCH_SOP_POP_32_S_10_12:    howto manager.      (line 3511)
+* BFD_RELOC_LARCH_SOP_POP_32_S_10_16:    howto manager.      (line 3512)
+* BFD_RELOC_LARCH_SOP_POP_32_S_10_16_S2: howto manager.      (line 3513)
+* BFD_RELOC_LARCH_SOP_POP_32_S_10_5:     howto manager.      (line 3509)
+* BFD_RELOC_LARCH_SOP_POP_32_S_5_20:     howto manager.      (line 3514)
+* BFD_RELOC_LARCH_SOP_POP_32_U:          howto manager.      (line 3517)
+* BFD_RELOC_LARCH_SOP_POP_32_U_10_12:    howto manager.      (line 3510)
+* BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE:     howto manager.      (line 3494)
+* BFD_RELOC_LARCH_SOP_PUSH_DUP:          howto manager.      (line 3495)
+* BFD_RELOC_LARCH_SOP_PUSH_GPREL:        howto manager.      (line 3496)
+* BFD_RELOC_LARCH_SOP_PUSH_PCREL:        howto manager.      (line 3493)
+* BFD_RELOC_LARCH_SOP_PUSH_PLT_PCREL:    howto manager.      (line 3500)
+* BFD_RELOC_LARCH_SOP_PUSH_TLS_GD:       howto manager.      (line 3499)
+* BFD_RELOC_LARCH_SOP_PUSH_TLS_GOT:      howto manager.      (line 3498)
+* BFD_RELOC_LARCH_SOP_PUSH_TLS_TPREL:    howto manager.      (line 3497)
+* BFD_RELOC_LARCH_SOP_SL:                howto manager.      (line 3504)
+* BFD_RELOC_LARCH_SOP_SR:                howto manager.      (line 3505)
+* BFD_RELOC_LARCH_SOP_SUB:               howto manager.      (line 3503)
+* BFD_RELOC_LARCH_SUB16:                 howto manager.      (line 3524)
+* BFD_RELOC_LARCH_SUB24:                 howto manager.      (line 3525)
+* BFD_RELOC_LARCH_SUB32:                 howto manager.      (line 3526)
+* BFD_RELOC_LARCH_SUB6:                  howto manager.      (line 3570)
+* BFD_RELOC_LARCH_SUB64:                 howto manager.      (line 3527)
+* BFD_RELOC_LARCH_SUB8:                  howto manager.      (line 3523)
+* BFD_RELOC_LARCH_SUB_ULEB128:           howto manager.      (line 3572)
+* BFD_RELOC_LARCH_TLS_DESC32:            howto manager.      (line 3489)
+* BFD_RELOC_LARCH_TLS_DESC64:            howto manager.      (line 3490)
+* BFD_RELOC_LARCH_TLS_DESC64_HI12:       howto manager.      (line 3582)
+* BFD_RELOC_LARCH_TLS_DESC64_LO20:       howto manager.      (line 3581)
+* BFD_RELOC_LARCH_TLS_DESC64_PC_HI12:    howto manager.      (line 3578)
+* BFD_RELOC_LARCH_TLS_DESC64_PC_LO20:    howto manager.      (line 3577)
+* BFD_RELOC_LARCH_TLS_DESC_CALL:         howto manager.      (line 3584)
+* BFD_RELOC_LARCH_TLS_DESC_HI20:         howto manager.      (line 3579)
+* BFD_RELOC_LARCH_TLS_DESC_LD:           howto manager.      (line 3583)
+* BFD_RELOC_LARCH_TLS_DESC_LO12:         howto manager.      (line 3580)
+* BFD_RELOC_LARCH_TLS_DESC_PCREL20_S2:   howto manager.      (line 3590)
+* BFD_RELOC_LARCH_TLS_DESC_PC_HI20:      howto manager.      (line 3575)
+* BFD_RELOC_LARCH_TLS_DESC_PC_LO12:      howto manager.      (line 3576)
+* BFD_RELOC_LARCH_TLS_DTPMOD32:          howto manager.      (line 3483)
+* BFD_RELOC_LARCH_TLS_DTPMOD64:          howto manager.      (line 3485)
+* BFD_RELOC_LARCH_TLS_DTPREL32:          howto manager.      (line 3484)
+* BFD_RELOC_LARCH_TLS_DTPREL64:          howto manager.      (line 3486)
+* BFD_RELOC_LARCH_TLS_GD_HI20:           howto manager.      (line 3562)
+* BFD_RELOC_LARCH_TLS_GD_PCREL20_S2:     howto manager.      (line 3589)
+* BFD_RELOC_LARCH_TLS_GD_PC_HI20:        howto manager.      (line 3561)
+* BFD_RELOC_LARCH_TLS_IE64_HI12:         howto manager.      (line 3558)
+* BFD_RELOC_LARCH_TLS_IE64_LO20:         howto manager.      (line 3557)
+* BFD_RELOC_LARCH_TLS_IE64_PC_HI12:      howto manager.      (line 3554)
+* BFD_RELOC_LARCH_TLS_IE64_PC_LO20:      howto manager.      (line 3553)
+* BFD_RELOC_LARCH_TLS_IE_HI20:           howto manager.      (line 3555)
+* BFD_RELOC_LARCH_TLS_IE_LO12:           howto manager.      (line 3556)
+* BFD_RELOC_LARCH_TLS_IE_PC_HI20:        howto manager.      (line 3551)
+* BFD_RELOC_LARCH_TLS_IE_PC_LO12:        howto manager.      (line 3552)
+* BFD_RELOC_LARCH_TLS_LD_HI20:           howto manager.      (line 3560)
+* BFD_RELOC_LARCH_TLS_LD_PCREL20_S2:     howto manager.      (line 3588)
+* BFD_RELOC_LARCH_TLS_LD_PC_HI20:        howto manager.      (line 3559)
+* BFD_RELOC_LARCH_TLS_LE64_HI12:         howto manager.      (line 3550)
+* BFD_RELOC_LARCH_TLS_LE64_LO20:         howto manager.      (line 3549)
+* BFD_RELOC_LARCH_TLS_LE_ADD_R:          howto manager.      (line 3586)
+* BFD_RELOC_LARCH_TLS_LE_HI20:           howto manager.      (line 3547)
+* BFD_RELOC_LARCH_TLS_LE_HI20_R:         howto manager.      (line 3585)
+* BFD_RELOC_LARCH_TLS_LE_LO12:           howto manager.      (line 3548)
+* BFD_RELOC_LARCH_TLS_LE_LO12_R:         howto manager.      (line 3587)
+* BFD_RELOC_LARCH_TLS_TPREL32:           howto manager.      (line 3487)
+* BFD_RELOC_LARCH_TLS_TPREL64:           howto manager.      (line 3488)
+* BFD_RELOC_LM32_16_GOT:                 howto manager.      (line 2623)
+* BFD_RELOC_LM32_BRANCH:                 howto manager.      (line 2622)
+* BFD_RELOC_LM32_CALL:                   howto manager.      (line 2621)
+* BFD_RELOC_LM32_COPY:                   howto manager.      (line 2626)
+* BFD_RELOC_LM32_GLOB_DAT:               howto manager.      (line 2627)
+* BFD_RELOC_LM32_GOTOFF_HI16:            howto manager.      (line 2624)
+* BFD_RELOC_LM32_GOTOFF_LO16:            howto manager.      (line 2625)
+* BFD_RELOC_LM32_JMP_SLOT:               howto manager.      (line 2628)
+* BFD_RELOC_LM32_RELATIVE:               howto manager.      (line 2629)
 * BFD_RELOC_LO10:                        howto manager.      (line  109)
 * BFD_RELOC_LO16:                        howto manager.      (line  319)
 * BFD_RELOC_LO16_BASEREL:                howto manager.      (line   91)
 * BFD_RELOC_LO16_GOTOFF:                 howto manager.      (line   50)
 * BFD_RELOC_LO16_PCREL:                  howto manager.      (line  325)
 * BFD_RELOC_LO16_PLTOFF:                 howto manager.      (line   62)
-* BFD_RELOC_M32C_HI8:                    howto manager.      (line 1230)
-* BFD_RELOC_M32C_RL_1ADDR:               howto manager.      (line 1232)
-* BFD_RELOC_M32C_RL_2ADDR:               howto manager.      (line 1233)
-* BFD_RELOC_M32C_RL_JUMP:                howto manager.      (line 1231)
-* BFD_RELOC_M32R_10_PCREL:               howto manager.      (line 1238)
-* BFD_RELOC_M32R_18_PCREL:               howto manager.      (line 1241)
-* BFD_RELOC_M32R_24:                     howto manager.      (line 1235)
-* BFD_RELOC_M32R_26_PCREL:               howto manager.      (line 1243)
-* BFD_RELOC_M32R_26_PLTREL:              howto manager.      (line 1257)
-* BFD_RELOC_M32R_COPY:                   howto manager.      (line 1258)
-* BFD_RELOC_M32R_GLOB_DAT:               howto manager.      (line 1259)
-* BFD_RELOC_M32R_GOT16_HI_SLO:           howto manager.      (line 1268)
-* BFD_RELOC_M32R_GOT16_HI_ULO:           howto manager.      (line 1267)
-* BFD_RELOC_M32R_GOT16_LO:               howto manager.      (line 1269)
-* BFD_RELOC_M32R_GOT24:                  howto manager.      (line 1256)
-* BFD_RELOC_M32R_GOTOFF:                 howto manager.      (line 1262)
-* BFD_RELOC_M32R_GOTOFF_HI_SLO:          howto manager.      (line 1264)
-* BFD_RELOC_M32R_GOTOFF_HI_ULO:          howto manager.      (line 1263)
-* BFD_RELOC_M32R_GOTOFF_LO:              howto manager.      (line 1265)
-* BFD_RELOC_M32R_GOTPC24:                howto manager.      (line 1266)
-* BFD_RELOC_M32R_GOTPC_HI_SLO:           howto manager.      (line 1271)
-* BFD_RELOC_M32R_GOTPC_HI_ULO:           howto manager.      (line 1270)
-* BFD_RELOC_M32R_GOTPC_LO:               howto manager.      (line 1272)
-* BFD_RELOC_M32R_HI16_SLO:               howto manager.      (line 1248)
-* BFD_RELOC_M32R_HI16_ULO:               howto manager.      (line 1245)
-* BFD_RELOC_M32R_JMP_SLOT:               howto manager.      (line 1260)
-* BFD_RELOC_M32R_LO16:                   howto manager.      (line 1251)
-* BFD_RELOC_M32R_RELATIVE:               howto manager.      (line 1261)
-* BFD_RELOC_M32R_SDA16:                  howto manager.      (line 1253)
-* BFD_RELOC_M68HC11_24:                  howto manager.      (line 2209)
-* BFD_RELOC_M68HC11_3B:                  howto manager.      (line 2189)
-* BFD_RELOC_M68HC11_HI8:                 howto manager.      (line 2183)
-* BFD_RELOC_M68HC11_LO16:                howto manager.      (line 2200)
-* BFD_RELOC_M68HC11_LO8:                 howto manager.      (line 2186)
-* BFD_RELOC_M68HC11_PAGE:                howto manager.      (line 2205)
-* BFD_RELOC_M68HC11_RL_GROUP:            howto manager.      (line 2196)
-* BFD_RELOC_M68HC11_RL_JUMP:             howto manager.      (line 2191)
-* BFD_RELOC_M68HC12_10_PCREL:            howto manager.      (line 2252)
-* BFD_RELOC_M68HC12_16B:                 howto manager.      (line 2248)
-* BFD_RELOC_M68HC12_5B:                  howto manager.      (line 2214)
-* BFD_RELOC_M68HC12_9B:                  howto manager.      (line 2246)
-* 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_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)
-* BFD_RELOC_MCORE_PCREL_IMM8BY4:         howto manager.      (line 1624)
-* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2:    howto manager.      (line 1628)
-* BFD_RELOC_MCORE_RVA:                   howto manager.      (line 1629)
-* BFD_RELOC_MEP_16:                      howto manager.      (line 1632)
-* BFD_RELOC_MEP_32:                      howto manager.      (line 1633)
-* BFD_RELOC_MEP_8:                       howto manager.      (line 1631)
-* BFD_RELOC_MEP_ADDR24A4:                howto manager.      (line 1648)
-* BFD_RELOC_MEP_GNU_VTENTRY:             howto manager.      (line 1650)
-* BFD_RELOC_MEP_GNU_VTINHERIT:           howto manager.      (line 1649)
-* BFD_RELOC_MEP_GPREL:                   howto manager.      (line 1642)
-* BFD_RELOC_MEP_HI16S:                   howto manager.      (line 1641)
-* BFD_RELOC_MEP_HI16U:                   howto manager.      (line 1640)
-* BFD_RELOC_MEP_LOW16:                   howto manager.      (line 1639)
-* BFD_RELOC_MEP_PCABS24A2:               howto manager.      (line 1638)
-* BFD_RELOC_MEP_PCREL12A2:               howto manager.      (line 1635)
-* BFD_RELOC_MEP_PCREL17A2:               howto manager.      (line 1636)
-* BFD_RELOC_MEP_PCREL24A2:               howto manager.      (line 1637)
-* BFD_RELOC_MEP_PCREL8A2:                howto manager.      (line 1634)
-* BFD_RELOC_MEP_TPREL:                   howto manager.      (line 1643)
-* BFD_RELOC_MEP_TPREL7:                  howto manager.      (line 1644)
-* BFD_RELOC_MEP_TPREL7A2:                howto manager.      (line 1645)
-* BFD_RELOC_MEP_TPREL7A4:                howto manager.      (line 1646)
-* BFD_RELOC_MEP_UIMM24:                  howto manager.      (line 1647)
-* BFD_RELOC_METAG_COPY:                  howto manager.      (line 1671)
-* BFD_RELOC_METAG_GETSETOFF:             howto manager.      (line 1655)
-* BFD_RELOC_METAG_GETSET_GOT:            howto manager.      (line 1663)
-* BFD_RELOC_METAG_GETSET_GOTOFF:         howto manager.      (line 1662)
-* BFD_RELOC_METAG_GLOB_DAT:              howto manager.      (line 1674)
-* BFD_RELOC_METAG_GOTOFF:                howto manager.      (line 1669)
-* BFD_RELOC_METAG_HI16_GOTOFF:           howto manager.      (line 1660)
-* BFD_RELOC_METAG_HI16_GOTPC:            howto manager.      (line 1664)
-* BFD_RELOC_METAG_HI16_PLT:              howto manager.      (line 1666)
-* BFD_RELOC_METAG_HIADDR16:              howto manager.      (line 1652)
-* BFD_RELOC_METAG_HIOG:                  howto manager.      (line 1656)
-* BFD_RELOC_METAG_JMP_SLOT:              howto manager.      (line 1672)
-* BFD_RELOC_METAG_LO16_GOTOFF:           howto manager.      (line 1661)
-* BFD_RELOC_METAG_LO16_GOTPC:            howto manager.      (line 1665)
-* BFD_RELOC_METAG_LO16_PLT:              howto manager.      (line 1667)
-* BFD_RELOC_METAG_LOADDR16:              howto manager.      (line 1653)
-* BFD_RELOC_METAG_LOOG:                  howto manager.      (line 1657)
-* BFD_RELOC_METAG_PLT:                   howto manager.      (line 1670)
-* BFD_RELOC_METAG_REL16:                 howto manager.      (line 1659)
-* BFD_RELOC_METAG_REL8:                  howto manager.      (line 1658)
-* BFD_RELOC_METAG_RELATIVE:              howto manager.      (line 1673)
-* BFD_RELOC_METAG_RELBRANCH:             howto manager.      (line 1654)
-* BFD_RELOC_METAG_RELBRANCH_PLT:         howto manager.      (line 1668)
-* BFD_RELOC_METAG_TLS_DTPMOD:            howto manager.      (line 1685)
-* BFD_RELOC_METAG_TLS_DTPOFF:            howto manager.      (line 1686)
-* BFD_RELOC_METAG_TLS_GD:                howto manager.      (line 1675)
-* BFD_RELOC_METAG_TLS_IE:                howto manager.      (line 1680)
-* BFD_RELOC_METAG_TLS_IENONPIC:          howto manager.      (line 1681)
-* BFD_RELOC_METAG_TLS_IENONPIC_HI16:     howto manager.      (line 1682)
-* BFD_RELOC_METAG_TLS_IENONPIC_LO16:     howto manager.      (line 1683)
-* BFD_RELOC_METAG_TLS_LDM:               howto manager.      (line 1676)
-* BFD_RELOC_METAG_TLS_LDO:               howto manager.      (line 1679)
-* BFD_RELOC_METAG_TLS_LDO_HI16:          howto manager.      (line 1677)
-* BFD_RELOC_METAG_TLS_LDO_LO16:          howto manager.      (line 1678)
-* BFD_RELOC_METAG_TLS_LE:                howto manager.      (line 1687)
-* 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_M32C_HI8:                    howto manager.      (line 1251)
+* BFD_RELOC_M32C_RL_1ADDR:               howto manager.      (line 1253)
+* BFD_RELOC_M32C_RL_2ADDR:               howto manager.      (line 1254)
+* BFD_RELOC_M32C_RL_JUMP:                howto manager.      (line 1252)
+* BFD_RELOC_M32R_10_PCREL:               howto manager.      (line 1259)
+* BFD_RELOC_M32R_18_PCREL:               howto manager.      (line 1262)
+* BFD_RELOC_M32R_24:                     howto manager.      (line 1256)
+* BFD_RELOC_M32R_26_PCREL:               howto manager.      (line 1264)
+* BFD_RELOC_M32R_26_PLTREL:              howto manager.      (line 1278)
+* BFD_RELOC_M32R_COPY:                   howto manager.      (line 1279)
+* BFD_RELOC_M32R_GLOB_DAT:               howto manager.      (line 1280)
+* BFD_RELOC_M32R_GOT16_HI_SLO:           howto manager.      (line 1289)
+* BFD_RELOC_M32R_GOT16_HI_ULO:           howto manager.      (line 1288)
+* BFD_RELOC_M32R_GOT16_LO:               howto manager.      (line 1290)
+* BFD_RELOC_M32R_GOT24:                  howto manager.      (line 1277)
+* BFD_RELOC_M32R_GOTOFF:                 howto manager.      (line 1283)
+* BFD_RELOC_M32R_GOTOFF_HI_SLO:          howto manager.      (line 1285)
+* BFD_RELOC_M32R_GOTOFF_HI_ULO:          howto manager.      (line 1284)
+* BFD_RELOC_M32R_GOTOFF_LO:              howto manager.      (line 1286)
+* BFD_RELOC_M32R_GOTPC24:                howto manager.      (line 1287)
+* BFD_RELOC_M32R_GOTPC_HI_SLO:           howto manager.      (line 1292)
+* BFD_RELOC_M32R_GOTPC_HI_ULO:           howto manager.      (line 1291)
+* BFD_RELOC_M32R_GOTPC_LO:               howto manager.      (line 1293)
+* BFD_RELOC_M32R_HI16_SLO:               howto manager.      (line 1269)
+* BFD_RELOC_M32R_HI16_ULO:               howto manager.      (line 1266)
+* BFD_RELOC_M32R_JMP_SLOT:               howto manager.      (line 1281)
+* BFD_RELOC_M32R_LO16:                   howto manager.      (line 1272)
+* BFD_RELOC_M32R_RELATIVE:               howto manager.      (line 1282)
+* BFD_RELOC_M32R_SDA16:                  howto manager.      (line 1274)
+* BFD_RELOC_M68HC11_24:                  howto manager.      (line 2221)
+* BFD_RELOC_M68HC11_3B:                  howto manager.      (line 2201)
+* BFD_RELOC_M68HC11_HI8:                 howto manager.      (line 2195)
+* BFD_RELOC_M68HC11_LO16:                howto manager.      (line 2212)
+* BFD_RELOC_M68HC11_LO8:                 howto manager.      (line 2198)
+* BFD_RELOC_M68HC11_PAGE:                howto manager.      (line 2217)
+* BFD_RELOC_M68HC11_RL_GROUP:            howto manager.      (line 2208)
+* BFD_RELOC_M68HC11_RL_JUMP:             howto manager.      (line 2203)
+* BFD_RELOC_M68HC12_10_PCREL:            howto manager.      (line 2264)
+* BFD_RELOC_M68HC12_16B:                 howto manager.      (line 2260)
+* BFD_RELOC_M68HC12_5B:                  howto manager.      (line 2226)
+* BFD_RELOC_M68HC12_9B:                  howto manager.      (line 2258)
+* BFD_RELOC_M68HC12_9_PCREL:             howto manager.      (line 2262)
+* BFD_RELOC_M68HC12_HI8XG:               howto manager.      (line 2269)
+* BFD_RELOC_M68HC12_LO8XG:               howto manager.      (line 2266)
+* BFD_RELOC_MACH_O_ARM64_ADDEND:         howto manager.      (line 2659)
+* BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21: howto manager.     (line 2661)
+* BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12: howto manager.  (line 2663)
+* BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT: howto manager.      (line 2665)
+* BFD_RELOC_MACH_O_LOCAL_SECTDIFF:       howto manager.      (line 2634)
+* BFD_RELOC_MACH_O_PAIR:                 howto manager.      (line 2636)
+* BFD_RELOC_MACH_O_SECTDIFF:             howto manager.      (line 2631)
+* BFD_RELOC_MACH_O_SUBTRACTOR32:         howto manager.      (line 2638)
+* BFD_RELOC_MACH_O_SUBTRACTOR64:         howto manager.      (line 2640)
+* BFD_RELOC_MACH_O_X86_64_BRANCH32:      howto manager.      (line 2642)
+* BFD_RELOC_MACH_O_X86_64_BRANCH8:       howto manager.      (line 2643)
+* BFD_RELOC_MACH_O_X86_64_GOT:           howto manager.      (line 2646)
+* BFD_RELOC_MACH_O_X86_64_GOT_LOAD:      howto manager.      (line 2648)
+* BFD_RELOC_MACH_O_X86_64_PCREL32_1:     howto manager.      (line 2651)
+* BFD_RELOC_MACH_O_X86_64_PCREL32_2:     howto manager.      (line 2653)
+* BFD_RELOC_MACH_O_X86_64_PCREL32_4:     howto manager.      (line 2655)
+* BFD_RELOC_MACH_O_X86_64_TLV:           howto manager.      (line 2657)
+* BFD_RELOC_MCORE_PCREL_32:              howto manager.      (line 1638)
+* BFD_RELOC_MCORE_PCREL_IMM11BY2:        howto manager.      (line 1636)
+* BFD_RELOC_MCORE_PCREL_IMM4BY2:         howto manager.      (line 1637)
+* BFD_RELOC_MCORE_PCREL_IMM8BY4:         howto manager.      (line 1635)
+* BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2:    howto manager.      (line 1639)
+* BFD_RELOC_MCORE_RVA:                   howto manager.      (line 1640)
+* BFD_RELOC_MEP_16:                      howto manager.      (line 1643)
+* BFD_RELOC_MEP_32:                      howto manager.      (line 1644)
+* BFD_RELOC_MEP_8:                       howto manager.      (line 1642)
+* BFD_RELOC_MEP_ADDR24A4:                howto manager.      (line 1659)
+* BFD_RELOC_MEP_GNU_VTENTRY:             howto manager.      (line 1661)
+* BFD_RELOC_MEP_GNU_VTINHERIT:           howto manager.      (line 1660)
+* BFD_RELOC_MEP_GPREL:                   howto manager.      (line 1653)
+* BFD_RELOC_MEP_HI16S:                   howto manager.      (line 1652)
+* BFD_RELOC_MEP_HI16U:                   howto manager.      (line 1651)
+* BFD_RELOC_MEP_LOW16:                   howto manager.      (line 1650)
+* BFD_RELOC_MEP_PCABS24A2:               howto manager.      (line 1649)
+* BFD_RELOC_MEP_PCREL12A2:               howto manager.      (line 1646)
+* BFD_RELOC_MEP_PCREL17A2:               howto manager.      (line 1647)
+* BFD_RELOC_MEP_PCREL24A2:               howto manager.      (line 1648)
+* BFD_RELOC_MEP_PCREL8A2:                howto manager.      (line 1645)
+* BFD_RELOC_MEP_TPREL:                   howto manager.      (line 1654)
+* BFD_RELOC_MEP_TPREL7:                  howto manager.      (line 1655)
+* BFD_RELOC_MEP_TPREL7A2:                howto manager.      (line 1656)
+* BFD_RELOC_MEP_TPREL7A4:                howto manager.      (line 1657)
+* BFD_RELOC_MEP_UIMM24:                  howto manager.      (line 1658)
+* BFD_RELOC_METAG_COPY:                  howto manager.      (line 1682)
+* BFD_RELOC_METAG_GETSETOFF:             howto manager.      (line 1666)
+* BFD_RELOC_METAG_GETSET_GOT:            howto manager.      (line 1674)
+* BFD_RELOC_METAG_GETSET_GOTOFF:         howto manager.      (line 1673)
+* BFD_RELOC_METAG_GLOB_DAT:              howto manager.      (line 1685)
+* BFD_RELOC_METAG_GOTOFF:                howto manager.      (line 1680)
+* BFD_RELOC_METAG_HI16_GOTOFF:           howto manager.      (line 1671)
+* BFD_RELOC_METAG_HI16_GOTPC:            howto manager.      (line 1675)
+* BFD_RELOC_METAG_HI16_PLT:              howto manager.      (line 1677)
+* BFD_RELOC_METAG_HIADDR16:              howto manager.      (line 1663)
+* BFD_RELOC_METAG_HIOG:                  howto manager.      (line 1667)
+* BFD_RELOC_METAG_JMP_SLOT:              howto manager.      (line 1683)
+* BFD_RELOC_METAG_LO16_GOTOFF:           howto manager.      (line 1672)
+* BFD_RELOC_METAG_LO16_GOTPC:            howto manager.      (line 1676)
+* BFD_RELOC_METAG_LO16_PLT:              howto manager.      (line 1678)
+* BFD_RELOC_METAG_LOADDR16:              howto manager.      (line 1664)
+* BFD_RELOC_METAG_LOOG:                  howto manager.      (line 1668)
+* BFD_RELOC_METAG_PLT:                   howto manager.      (line 1681)
+* BFD_RELOC_METAG_REL16:                 howto manager.      (line 1670)
+* BFD_RELOC_METAG_REL8:                  howto manager.      (line 1669)
+* BFD_RELOC_METAG_RELATIVE:              howto manager.      (line 1684)
+* BFD_RELOC_METAG_RELBRANCH:             howto manager.      (line 1665)
+* BFD_RELOC_METAG_RELBRANCH_PLT:         howto manager.      (line 1679)
+* BFD_RELOC_METAG_TLS_DTPMOD:            howto manager.      (line 1696)
+* BFD_RELOC_METAG_TLS_DTPOFF:            howto manager.      (line 1697)
+* BFD_RELOC_METAG_TLS_GD:                howto manager.      (line 1686)
+* BFD_RELOC_METAG_TLS_IE:                howto manager.      (line 1691)
+* BFD_RELOC_METAG_TLS_IENONPIC:          howto manager.      (line 1692)
+* BFD_RELOC_METAG_TLS_IENONPIC_HI16:     howto manager.      (line 1693)
+* BFD_RELOC_METAG_TLS_IENONPIC_LO16:     howto manager.      (line 1694)
+* BFD_RELOC_METAG_TLS_LDM:               howto manager.      (line 1687)
+* BFD_RELOC_METAG_TLS_LDO:               howto manager.      (line 1690)
+* BFD_RELOC_METAG_TLS_LDO_HI16:          howto manager.      (line 1688)
+* BFD_RELOC_METAG_TLS_LDO_LO16:          howto manager.      (line 1689)
+* BFD_RELOC_METAG_TLS_LE:                howto manager.      (line 1698)
+* BFD_RELOC_METAG_TLS_LE_HI16:           howto manager.      (line 1699)
+* BFD_RELOC_METAG_TLS_LE_LO16:           howto manager.      (line 1700)
+* BFD_RELOC_METAG_TLS_TPOFF:             howto manager.      (line 1695)
+* BFD_RELOC_MICROBLAZE_32_GOTOFF:        howto manager.      (line 2705)
+* BFD_RELOC_MICROBLAZE_32_LO:            howto manager.      (line 2667)
+* BFD_RELOC_MICROBLAZE_32_LO_PCREL:      howto manager.      (line 2670)
+* BFD_RELOC_MICROBLAZE_32_NONE:          howto manager.      (line 2682)
+* BFD_RELOC_MICROBLAZE_32_ROSDA:         howto manager.      (line 2673)
+* BFD_RELOC_MICROBLAZE_32_RWSDA:         howto manager.      (line 2676)
+* BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM:    howto manager.      (line 2679)
+* BFD_RELOC_MICROBLAZE_32_TLSDTPMOD:     howto manager.      (line 2722)
+* BFD_RELOC_MICROBLAZE_32_TLSDTPREL:     howto manager.      (line 2724)
+* BFD_RELOC_MICROBLAZE_64_GOT:           howto manager.      (line 2694)
+* BFD_RELOC_MICROBLAZE_64_GOTOFF:        howto manager.      (line 2701)
+* BFD_RELOC_MICROBLAZE_64_GOTPC:         howto manager.      (line 2690)
+* BFD_RELOC_MICROBLAZE_64_NONE:          howto manager.      (line 2686)
+* BFD_RELOC_MICROBLAZE_64_PLT:           howto manager.      (line 2697)
+* BFD_RELOC_MICROBLAZE_64_TEXTPCREL:     howto manager.      (line 2735)
+* BFD_RELOC_MICROBLAZE_64_TEXTREL:       howto manager.      (line 2739)
+* BFD_RELOC_MICROBLAZE_64_TLS:           howto manager.      (line 2712)
+* BFD_RELOC_MICROBLAZE_64_TLSDTPREL:     howto manager.      (line 2726)
+* BFD_RELOC_MICROBLAZE_64_TLSGD:         howto manager.      (line 2714)
+* BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL:   howto manager.      (line 2729)
+* BFD_RELOC_MICROBLAZE_64_TLSLD:         howto manager.      (line 2718)
+* BFD_RELOC_MICROBLAZE_64_TLSTPREL:      howto manager.      (line 2732)
+* BFD_RELOC_MICROBLAZE_COPY:             howto manager.      (line 2709)
 * 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)
@@ -13348,6 +13405,7 @@ BFD Index
 * BFD_RELOC_MIPS16_TLS_LDM:              howto manager.      (line  341)
 * BFD_RELOC_MIPS16_TLS_TPREL_HI16:       howto manager.      (line  345)
 * BFD_RELOC_MIPS16_TLS_TPREL_LO16:       howto manager.      (line  346)
+* BFD_RELOC_MIPS_16:                     howto manager.      (line  398)
 * BFD_RELOC_MIPS_18_PCREL_S3:            howto manager.      (line  359)
 * BFD_RELOC_MIPS_19_PCREL_S2:            howto manager.      (line  360)
 * BFD_RELOC_MIPS_21_PCREL_S2:            howto manager.      (line  357)
@@ -13372,7 +13430,6 @@ BFD Index
 * BFD_RELOC_MIPS_JMP:                    howto manager.      (line  305)
 * BFD_RELOC_MIPS_JUMP_SLOT:              howto manager.      (line  425)
 * BFD_RELOC_MIPS_LITERAL:                howto manager.      (line  348)
-* BFD_RELOC_MIPS_REL16:                  howto manager.      (line  398)
 * BFD_RELOC_MIPS_RELGOT:                 howto manager.      (line  399)
 * BFD_RELOC_MIPS_SCN_DISP:               howto manager.      (line  396)
 * BFD_RELOC_MIPS_SHIFT5:                 howto manager.      (line  387)
@@ -13391,30 +13448,30 @@ BFD Index
 * BFD_RELOC_MIPS_TLS_TPREL64:            howto manager.      (line  417)
 * BFD_RELOC_MIPS_TLS_TPREL_HI16:         howto manager.      (line  418)
 * BFD_RELOC_MIPS_TLS_TPREL_LO16:         howto manager.      (line  420)
-* BFD_RELOC_MMIX_ADDR19:                 howto manager.      (line 1713)
-* BFD_RELOC_MMIX_ADDR27:                 howto manager.      (line 1716)
-* BFD_RELOC_MMIX_BASE_PLUS_OFFSET:       howto manager.      (line 1725)
-* BFD_RELOC_MMIX_CBRANCH:                howto manager.      (line 1696)
-* BFD_RELOC_MMIX_CBRANCH_1:              howto manager.      (line 1698)
-* BFD_RELOC_MMIX_CBRANCH_2:              howto manager.      (line 1699)
-* BFD_RELOC_MMIX_CBRANCH_3:              howto manager.      (line 1700)
-* BFD_RELOC_MMIX_CBRANCH_J:              howto manager.      (line 1697)
-* BFD_RELOC_MMIX_GETA:                   howto manager.      (line 1691)
-* BFD_RELOC_MMIX_GETA_1:                 howto manager.      (line 1692)
-* BFD_RELOC_MMIX_GETA_2:                 howto manager.      (line 1693)
-* BFD_RELOC_MMIX_GETA_3:                 howto manager.      (line 1694)
-* BFD_RELOC_MMIX_JMP:                    howto manager.      (line 1708)
-* BFD_RELOC_MMIX_JMP_1:                  howto manager.      (line 1709)
-* BFD_RELOC_MMIX_JMP_2:                  howto manager.      (line 1710)
-* BFD_RELOC_MMIX_JMP_3:                  howto manager.      (line 1711)
-* BFD_RELOC_MMIX_LOCAL:                  howto manager.      (line 1728)
-* BFD_RELOC_MMIX_PUSHJ:                  howto manager.      (line 1702)
-* BFD_RELOC_MMIX_PUSHJ_1:                howto manager.      (line 1703)
-* BFD_RELOC_MMIX_PUSHJ_2:                howto manager.      (line 1704)
-* BFD_RELOC_MMIX_PUSHJ_3:                howto manager.      (line 1705)
-* BFD_RELOC_MMIX_PUSHJ_STUBBABLE:        howto manager.      (line 1706)
-* BFD_RELOC_MMIX_REG:                    howto manager.      (line 1722)
-* BFD_RELOC_MMIX_REG_OR_BYTE:            howto manager.      (line 1719)
+* BFD_RELOC_MMIX_ADDR19:                 howto manager.      (line 1724)
+* BFD_RELOC_MMIX_ADDR27:                 howto manager.      (line 1727)
+* BFD_RELOC_MMIX_BASE_PLUS_OFFSET:       howto manager.      (line 1736)
+* BFD_RELOC_MMIX_CBRANCH:                howto manager.      (line 1707)
+* BFD_RELOC_MMIX_CBRANCH_1:              howto manager.      (line 1709)
+* BFD_RELOC_MMIX_CBRANCH_2:              howto manager.      (line 1710)
+* BFD_RELOC_MMIX_CBRANCH_3:              howto manager.      (line 1711)
+* BFD_RELOC_MMIX_CBRANCH_J:              howto manager.      (line 1708)
+* BFD_RELOC_MMIX_GETA:                   howto manager.      (line 1702)
+* BFD_RELOC_MMIX_GETA_1:                 howto manager.      (line 1703)
+* BFD_RELOC_MMIX_GETA_2:                 howto manager.      (line 1704)
+* BFD_RELOC_MMIX_GETA_3:                 howto manager.      (line 1705)
+* BFD_RELOC_MMIX_JMP:                    howto manager.      (line 1719)
+* BFD_RELOC_MMIX_JMP_1:                  howto manager.      (line 1720)
+* BFD_RELOC_MMIX_JMP_2:                  howto manager.      (line 1721)
+* BFD_RELOC_MMIX_JMP_3:                  howto manager.      (line 1722)
+* BFD_RELOC_MMIX_LOCAL:                  howto manager.      (line 1739)
+* BFD_RELOC_MMIX_PUSHJ:                  howto manager.      (line 1713)
+* BFD_RELOC_MMIX_PUSHJ_1:                howto manager.      (line 1714)
+* BFD_RELOC_MMIX_PUSHJ_2:                howto manager.      (line 1715)
+* BFD_RELOC_MMIX_PUSHJ_3:                howto manager.      (line 1716)
+* BFD_RELOC_MMIX_PUSHJ_STUBBABLE:        howto manager.      (line 1717)
+* BFD_RELOC_MMIX_REG:                    howto manager.      (line 1733)
+* BFD_RELOC_MMIX_REG_OR_BYTE:            howto manager.      (line 1730)
 * BFD_RELOC_MN10300_16_PCREL:            howto manager.      (line  518)
 * BFD_RELOC_MN10300_32_PCREL:            howto manager.      (line  515)
 * BFD_RELOC_MN10300_ALIGN:               howto manager.      (line  502)
@@ -13437,666 +13494,633 @@ BFD Index
 * BFD_RELOC_MN10300_TLS_LE:              howto manager.      (line  510)
 * BFD_RELOC_MN10300_TLS_TPOFF:           howto manager.      (line  513)
 * BFD_RELOC_MOXIE_10_PCREL:              howto manager.      (line  427)
-* BFD_RELOC_MSP430X_ABS16:               howto manager.      (line 2457)
-* BFD_RELOC_MSP430X_ABS20_ADR_DST:       howto manager.      (line 2454)
-* BFD_RELOC_MSP430X_ABS20_ADR_SRC:       howto manager.      (line 2453)
-* BFD_RELOC_MSP430X_ABS20_EXT_DST:       howto manager.      (line 2451)
-* BFD_RELOC_MSP430X_ABS20_EXT_ODST:      howto manager.      (line 2452)
-* BFD_RELOC_MSP430X_ABS20_EXT_SRC:       howto manager.      (line 2450)
-* BFD_RELOC_MSP430X_PCR16:               howto manager.      (line 2455)
-* BFD_RELOC_MSP430X_PCR20_CALL:          howto manager.      (line 2456)
-* BFD_RELOC_MSP430X_PCR20_EXT_DST:       howto manager.      (line 2448)
-* BFD_RELOC_MSP430X_PCR20_EXT_ODST:      howto manager.      (line 2449)
-* BFD_RELOC_MSP430X_PCR20_EXT_SRC:       howto manager.      (line 2447)
-* BFD_RELOC_MSP430_10_PCREL:             howto manager.      (line 2439)
-* BFD_RELOC_MSP430_16:                   howto manager.      (line 2441)
-* BFD_RELOC_MSP430_16_BYTE:              howto manager.      (line 2443)
-* BFD_RELOC_MSP430_16_PCREL:             howto manager.      (line 2440)
-* BFD_RELOC_MSP430_16_PCREL_BYTE:        howto manager.      (line 2442)
-* BFD_RELOC_MSP430_2X_PCREL:             howto manager.      (line 2444)
-* BFD_RELOC_MSP430_ABS8:                 howto manager.      (line 2446)
-* 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_SYM_DIFF:             howto manager.      (line 2460)
-* BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 2435)
-* BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 2433)
-* BFD_RELOC_MT_HI16:                     howto manager.      (line 2429)
-* BFD_RELOC_MT_LO16:                     howto manager.      (line 2431)
-* BFD_RELOC_MT_PC16:                     howto manager.      (line 2427)
-* BFD_RELOC_MT_PCINSN8:                  howto manager.      (line 2437)
-* BFD_RELOC_NDS32_10IFCU_PCREL:          howto manager.      (line 1424)
-* BFD_RELOC_NDS32_10_UPCREL:             howto manager.      (line 1395)
-* BFD_RELOC_NDS32_15_FIXED:              howto manager.      (line 1356)
-* BFD_RELOC_NDS32_15_PCREL:              howto manager.      (line 1282)
-* BFD_RELOC_NDS32_17IFC_PCREL:           howto manager.      (line 1423)
-* BFD_RELOC_NDS32_17_FIXED:              howto manager.      (line 1357)
-* BFD_RELOC_NDS32_17_PCREL:              howto manager.      (line 1284)
-* BFD_RELOC_NDS32_20:                    howto manager.      (line 1274)
-* BFD_RELOC_NDS32_25_ABS:                howto manager.      (line 1419)
-* BFD_RELOC_NDS32_25_FIXED:              howto manager.      (line 1358)
-* BFD_RELOC_NDS32_25_PCREL:              howto manager.      (line 1286)
-* BFD_RELOC_NDS32_25_PLTREL:             howto manager.      (line 1332)
-* BFD_RELOC_NDS32_5:                     howto manager.      (line 1393)
-* BFD_RELOC_NDS32_9_FIXED:               howto manager.      (line 1355)
-* BFD_RELOC_NDS32_9_PCREL:               howto manager.      (line 1276)
-* BFD_RELOC_NDS32_9_PLTREL:              howto manager.      (line 1331)
-* BFD_RELOC_NDS32_COPY:                  howto manager.      (line 1333)
-* BFD_RELOC_NDS32_DATA:                  howto manager.      (line 1421)
-* BFD_RELOC_NDS32_DIFF16:                howto manager.      (line 1414)
-* BFD_RELOC_NDS32_DIFF32:                howto manager.      (line 1415)
-* BFD_RELOC_NDS32_DIFF8:                 howto manager.      (line 1413)
-* BFD_RELOC_NDS32_DIFF_ULEB128:          howto manager.      (line 1416)
-* BFD_RELOC_NDS32_DWARF2_LEB:            howto manager.      (line 1379)
-* BFD_RELOC_NDS32_DWARF2_OP1:            howto manager.      (line 1377)
-* BFD_RELOC_NDS32_DWARF2_OP2:            howto manager.      (line 1378)
-* BFD_RELOC_NDS32_EMPTY:                 howto manager.      (line 1417)
-* BFD_RELOC_NDS32_GLOB_DAT:              howto manager.      (line 1334)
-* BFD_RELOC_NDS32_GOT15S2:               howto manager.      (line 1390)
-* BFD_RELOC_NDS32_GOT17S2:               howto manager.      (line 1391)
-* BFD_RELOC_NDS32_GOT20:                 howto manager.      (line 1330)
-* BFD_RELOC_NDS32_GOTOFF:                howto manager.      (line 1337)
-* BFD_RELOC_NDS32_GOTOFF_HI20:           howto manager.      (line 1338)
-* BFD_RELOC_NDS32_GOTOFF_LO12:           howto manager.      (line 1339)
-* BFD_RELOC_NDS32_GOTOFF_LO15:           howto manager.      (line 1388)
-* BFD_RELOC_NDS32_GOTOFF_LO19:           howto manager.      (line 1389)
-* BFD_RELOC_NDS32_GOTOFF_SUFF:           howto manager.      (line 1402)
-* BFD_RELOC_NDS32_GOTPC20:               howto manager.      (line 1340)
-* BFD_RELOC_NDS32_GOTPC_HI20:            howto manager.      (line 1343)
-* BFD_RELOC_NDS32_GOTPC_LO12:            howto manager.      (line 1344)
-* BFD_RELOC_NDS32_GOTTPOFF:              howto manager.      (line 1427)
-* BFD_RELOC_NDS32_GOT_HI20:              howto manager.      (line 1341)
-* BFD_RELOC_NDS32_GOT_LO12:              howto manager.      (line 1342)
-* BFD_RELOC_NDS32_GOT_LO15:              howto manager.      (line 1386)
-* BFD_RELOC_NDS32_GOT_LO19:              howto manager.      (line 1387)
-* BFD_RELOC_NDS32_GOT_SUFF:              howto manager.      (line 1401)
-* BFD_RELOC_NDS32_GROUP:                 howto manager.      (line 1453)
-* BFD_RELOC_NDS32_HI20:                  howto manager.      (line 1288)
-* BFD_RELOC_NDS32_INSN16:                howto manager.      (line 1346)
-* BFD_RELOC_NDS32_JMP_SLOT:              howto manager.      (line 1335)
-* BFD_RELOC_NDS32_LABEL:                 howto manager.      (line 1347)
-* BFD_RELOC_NDS32_LO12S0:                howto manager.      (line 1300)
-* BFD_RELOC_NDS32_LO12S0_ORI:            howto manager.      (line 1303)
-* BFD_RELOC_NDS32_LO12S1:                howto manager.      (line 1297)
-* BFD_RELOC_NDS32_LO12S2:                howto manager.      (line 1294)
-* BFD_RELOC_NDS32_LO12S2_DP:             howto manager.      (line 1374)
-* BFD_RELOC_NDS32_LO12S2_SP:             howto manager.      (line 1375)
-* BFD_RELOC_NDS32_LO12S3:                howto manager.      (line 1291)
-* BFD_RELOC_NDS32_LOADSTORE:             howto manager.      (line 1354)
-* BFD_RELOC_NDS32_LONGCALL1:             howto manager.      (line 1348)
-* BFD_RELOC_NDS32_LONGCALL2:             howto manager.      (line 1349)
-* BFD_RELOC_NDS32_LONGCALL3:             howto manager.      (line 1350)
-* BFD_RELOC_NDS32_LONGCALL4:             howto manager.      (line 1359)
-* BFD_RELOC_NDS32_LONGCALL5:             howto manager.      (line 1360)
-* BFD_RELOC_NDS32_LONGCALL6:             howto manager.      (line 1361)
-* BFD_RELOC_NDS32_LONGJUMP1:             howto manager.      (line 1351)
-* BFD_RELOC_NDS32_LONGJUMP2:             howto manager.      (line 1352)
-* BFD_RELOC_NDS32_LONGJUMP3:             howto manager.      (line 1353)
-* BFD_RELOC_NDS32_LONGJUMP4:             howto manager.      (line 1362)
-* BFD_RELOC_NDS32_LONGJUMP5:             howto manager.      (line 1363)
-* BFD_RELOC_NDS32_LONGJUMP6:             howto manager.      (line 1364)
-* BFD_RELOC_NDS32_LONGJUMP7:             howto manager.      (line 1365)
-* BFD_RELOC_NDS32_LSI:                   howto manager.      (line 1455)
-* BFD_RELOC_NDS32_MINUEND:               howto manager.      (line 1411)
-* BFD_RELOC_NDS32_MULCALL_SUFF:          howto manager.      (line 1404)
-* BFD_RELOC_NDS32_PLTBLOCK:              howto manager.      (line 1408)
-* BFD_RELOC_NDS32_PLTREL_HI20:           howto manager.      (line 1367)
-* BFD_RELOC_NDS32_PLTREL_LO12:           howto manager.      (line 1368)
-* BFD_RELOC_NDS32_PLT_GOTREL_HI20:       howto manager.      (line 1369)
-* BFD_RELOC_NDS32_PLT_GOTREL_LO12:       howto manager.      (line 1370)
-* BFD_RELOC_NDS32_PLT_GOTREL_LO15:       howto manager.      (line 1384)
-* BFD_RELOC_NDS32_PLT_GOTREL_LO19:       howto manager.      (line 1385)
-* BFD_RELOC_NDS32_PLT_GOTREL_LO20:       howto manager.      (line 1383)
-* BFD_RELOC_NDS32_PLT_GOT_SUFF:          howto manager.      (line 1403)
-* BFD_RELOC_NDS32_PTR:                   howto manager.      (line 1405)
-* BFD_RELOC_NDS32_PTR_COUNT:             howto manager.      (line 1406)
-* BFD_RELOC_NDS32_PTR_RESOLVED:          howto manager.      (line 1407)
-* BFD_RELOC_NDS32_RELATIVE:              howto manager.      (line 1336)
-* BFD_RELOC_NDS32_RELAX_ENTRY:           howto manager.      (line 1400)
-* BFD_RELOC_NDS32_RELAX_REGION_BEGIN:    howto manager.      (line 1409)
-* BFD_RELOC_NDS32_RELAX_REGION_END:      howto manager.      (line 1410)
-* BFD_RELOC_NDS32_REMOVE:                howto manager.      (line 1452)
-* BFD_RELOC_NDS32_SDA12S2_DP:            howto manager.      (line 1372)
-* BFD_RELOC_NDS32_SDA12S2_SP:            howto manager.      (line 1373)
-* BFD_RELOC_NDS32_SDA15S0:               howto manager.      (line 1315)
-* BFD_RELOC_NDS32_SDA15S1:               howto manager.      (line 1312)
-* BFD_RELOC_NDS32_SDA15S2:               howto manager.      (line 1309)
-* BFD_RELOC_NDS32_SDA15S3:               howto manager.      (line 1306)
-* BFD_RELOC_NDS32_SDA16S3:               howto manager.      (line 1318)
-* BFD_RELOC_NDS32_SDA17S2:               howto manager.      (line 1321)
-* BFD_RELOC_NDS32_SDA18S1:               howto manager.      (line 1324)
-* BFD_RELOC_NDS32_SDA19S0:               howto manager.      (line 1327)
-* BFD_RELOC_NDS32_SDA_FP7U2_RELA:        howto manager.      (line 1398)
-* BFD_RELOC_NDS32_SUBTRAHEND:            howto manager.      (line 1412)
-* BFD_RELOC_NDS32_TLS_DESC:              howto manager.      (line 1443)
-* BFD_RELOC_NDS32_TLS_DESC_20:           howto manager.      (line 1446)
-* BFD_RELOC_NDS32_TLS_DESC_ADD:          howto manager.      (line 1448)
-* BFD_RELOC_NDS32_TLS_DESC_CALL:         howto manager.      (line 1450)
-* BFD_RELOC_NDS32_TLS_DESC_FUNC:         howto manager.      (line 1449)
-* BFD_RELOC_NDS32_TLS_DESC_HI20:         howto manager.      (line 1444)
-* BFD_RELOC_NDS32_TLS_DESC_LO12:         howto manager.      (line 1445)
-* BFD_RELOC_NDS32_TLS_DESC_MEM:          howto manager.      (line 1451)
-* BFD_RELOC_NDS32_TLS_DESC_SDA17S2:      howto manager.      (line 1447)
-* BFD_RELOC_NDS32_TLS_IEGP_HI20:         howto manager.      (line 1439)
-* BFD_RELOC_NDS32_TLS_IEGP_LO12:         howto manager.      (line 1440)
-* BFD_RELOC_NDS32_TLS_IEGP_LO12S2:       howto manager.      (line 1441)
-* BFD_RELOC_NDS32_TLS_IEGP_LW:           howto manager.      (line 1442)
-* BFD_RELOC_NDS32_TLS_IE_HI20:           howto manager.      (line 1436)
-* BFD_RELOC_NDS32_TLS_IE_LO12:           howto manager.      (line 1437)
-* BFD_RELOC_NDS32_TLS_IE_LO12S2:         howto manager.      (line 1438)
-* BFD_RELOC_NDS32_TLS_LE_15S0:           howto manager.      (line 1431)
-* BFD_RELOC_NDS32_TLS_LE_15S1:           howto manager.      (line 1432)
-* BFD_RELOC_NDS32_TLS_LE_15S2:           howto manager.      (line 1433)
-* BFD_RELOC_NDS32_TLS_LE_20:             howto manager.      (line 1430)
-* BFD_RELOC_NDS32_TLS_LE_ADD:            howto manager.      (line 1434)
-* BFD_RELOC_NDS32_TLS_LE_HI20:           howto manager.      (line 1428)
-* BFD_RELOC_NDS32_TLS_LE_LO12:           howto manager.      (line 1429)
-* BFD_RELOC_NDS32_TLS_LE_LS:             howto manager.      (line 1435)
-* BFD_RELOC_NDS32_TPOFF:                 howto manager.      (line 1426)
-* 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_MSP430X_ABS16:               howto manager.      (line 2465)
+* BFD_RELOC_MSP430X_ABS20_ADR_DST:       howto manager.      (line 2462)
+* BFD_RELOC_MSP430X_ABS20_ADR_SRC:       howto manager.      (line 2461)
+* BFD_RELOC_MSP430X_ABS20_EXT_DST:       howto manager.      (line 2459)
+* BFD_RELOC_MSP430X_ABS20_EXT_ODST:      howto manager.      (line 2460)
+* BFD_RELOC_MSP430X_ABS20_EXT_SRC:       howto manager.      (line 2458)
+* BFD_RELOC_MSP430X_PCR16:               howto manager.      (line 2463)
+* BFD_RELOC_MSP430X_PCR20_CALL:          howto manager.      (line 2464)
+* BFD_RELOC_MSP430X_PCR20_EXT_DST:       howto manager.      (line 2456)
+* BFD_RELOC_MSP430X_PCR20_EXT_ODST:      howto manager.      (line 2457)
+* BFD_RELOC_MSP430X_PCR20_EXT_SRC:       howto manager.      (line 2455)
+* BFD_RELOC_MSP430_10_PCREL:             howto manager.      (line 2447)
+* BFD_RELOC_MSP430_16:                   howto manager.      (line 2449)
+* BFD_RELOC_MSP430_16_BYTE:              howto manager.      (line 2451)
+* BFD_RELOC_MSP430_16_PCREL:             howto manager.      (line 2448)
+* BFD_RELOC_MSP430_16_PCREL_BYTE:        howto manager.      (line 2450)
+* BFD_RELOC_MSP430_2X_PCREL:             howto manager.      (line 2452)
+* BFD_RELOC_MSP430_ABS8:                 howto manager.      (line 2454)
+* BFD_RELOC_MSP430_ABS_HI16:             howto manager.      (line 2466)
+* BFD_RELOC_MSP430_PREL31:               howto manager.      (line 2467)
+* BFD_RELOC_MSP430_RL_PCREL:             howto manager.      (line 2453)
+* BFD_RELOC_MSP430_SET_ULEB128:          howto manager.      (line 2469)
+* BFD_RELOC_MSP430_SUB_ULEB128:          howto manager.      (line 2470)
+* BFD_RELOC_MSP430_SYM_DIFF:             howto manager.      (line 2468)
+* BFD_RELOC_MT_GNU_VTENTRY:              howto manager.      (line 2443)
+* BFD_RELOC_MT_GNU_VTINHERIT:            howto manager.      (line 2441)
+* BFD_RELOC_MT_HI16:                     howto manager.      (line 2437)
+* BFD_RELOC_MT_LO16:                     howto manager.      (line 2439)
+* BFD_RELOC_MT_PC16:                     howto manager.      (line 2435)
+* BFD_RELOC_MT_PCINSN8:                  howto manager.      (line 2445)
+* BFD_RELOC_NDS32_10IFCU_PCREL:          howto manager.      (line 1445)
+* BFD_RELOC_NDS32_10_UPCREL:             howto manager.      (line 1416)
+* BFD_RELOC_NDS32_15_FIXED:              howto manager.      (line 1377)
+* BFD_RELOC_NDS32_15_PCREL:              howto manager.      (line 1303)
+* BFD_RELOC_NDS32_17IFC_PCREL:           howto manager.      (line 1444)
+* BFD_RELOC_NDS32_17_FIXED:              howto manager.      (line 1378)
+* BFD_RELOC_NDS32_17_PCREL:              howto manager.      (line 1305)
+* BFD_RELOC_NDS32_20:                    howto manager.      (line 1295)
+* BFD_RELOC_NDS32_25_ABS:                howto manager.      (line 1440)
+* BFD_RELOC_NDS32_25_FIXED:              howto manager.      (line 1379)
+* BFD_RELOC_NDS32_25_PCREL:              howto manager.      (line 1307)
+* BFD_RELOC_NDS32_25_PLTREL:             howto manager.      (line 1353)
+* BFD_RELOC_NDS32_5:                     howto manager.      (line 1414)
+* BFD_RELOC_NDS32_9_FIXED:               howto manager.      (line 1376)
+* BFD_RELOC_NDS32_9_PCREL:               howto manager.      (line 1297)
+* BFD_RELOC_NDS32_9_PLTREL:              howto manager.      (line 1352)
+* BFD_RELOC_NDS32_COPY:                  howto manager.      (line 1354)
+* BFD_RELOC_NDS32_DATA:                  howto manager.      (line 1442)
+* BFD_RELOC_NDS32_DIFF16:                howto manager.      (line 1435)
+* BFD_RELOC_NDS32_DIFF32:                howto manager.      (line 1436)
+* BFD_RELOC_NDS32_DIFF8:                 howto manager.      (line 1434)
+* BFD_RELOC_NDS32_DIFF_ULEB128:          howto manager.      (line 1437)
+* BFD_RELOC_NDS32_DWARF2_LEB:            howto manager.      (line 1400)
+* BFD_RELOC_NDS32_DWARF2_OP1:            howto manager.      (line 1398)
+* BFD_RELOC_NDS32_DWARF2_OP2:            howto manager.      (line 1399)
+* BFD_RELOC_NDS32_EMPTY:                 howto manager.      (line 1438)
+* BFD_RELOC_NDS32_GLOB_DAT:              howto manager.      (line 1355)
+* BFD_RELOC_NDS32_GOT15S2:               howto manager.      (line 1411)
+* BFD_RELOC_NDS32_GOT17S2:               howto manager.      (line 1412)
+* BFD_RELOC_NDS32_GOT20:                 howto manager.      (line 1351)
+* BFD_RELOC_NDS32_GOTOFF:                howto manager.      (line 1358)
+* BFD_RELOC_NDS32_GOTOFF_HI20:           howto manager.      (line 1359)
+* BFD_RELOC_NDS32_GOTOFF_LO12:           howto manager.      (line 1360)
+* BFD_RELOC_NDS32_GOTOFF_LO15:           howto manager.      (line 1409)
+* BFD_RELOC_NDS32_GOTOFF_LO19:           howto manager.      (line 1410)
+* BFD_RELOC_NDS32_GOTOFF_SUFF:           howto manager.      (line 1423)
+* BFD_RELOC_NDS32_GOTPC20:               howto manager.      (line 1361)
+* BFD_RELOC_NDS32_GOTPC_HI20:            howto manager.      (line 1364)
+* BFD_RELOC_NDS32_GOTPC_LO12:            howto manager.      (line 1365)
+* BFD_RELOC_NDS32_GOTTPOFF:              howto manager.      (line 1448)
+* BFD_RELOC_NDS32_GOT_HI20:              howto manager.      (line 1362)
+* BFD_RELOC_NDS32_GOT_LO12:              howto manager.      (line 1363)
+* BFD_RELOC_NDS32_GOT_LO15:              howto manager.      (line 1407)
+* BFD_RELOC_NDS32_GOT_LO19:              howto manager.      (line 1408)
+* BFD_RELOC_NDS32_GOT_SUFF:              howto manager.      (line 1422)
+* BFD_RELOC_NDS32_GROUP:                 howto manager.      (line 1474)
+* BFD_RELOC_NDS32_HI20:                  howto manager.      (line 1309)
+* BFD_RELOC_NDS32_INSN16:                howto manager.      (line 1367)
+* BFD_RELOC_NDS32_JMP_SLOT:              howto manager.      (line 1356)
+* BFD_RELOC_NDS32_LABEL:                 howto manager.      (line 1368)
+* BFD_RELOC_NDS32_LO12S0:                howto manager.      (line 1321)
+* BFD_RELOC_NDS32_LO12S0_ORI:            howto manager.      (line 1324)
+* BFD_RELOC_NDS32_LO12S1:                howto manager.      (line 1318)
+* BFD_RELOC_NDS32_LO12S2:                howto manager.      (line 1315)
+* BFD_RELOC_NDS32_LO12S2_DP:             howto manager.      (line 1395)
+* BFD_RELOC_NDS32_LO12S2_SP:             howto manager.      (line 1396)
+* BFD_RELOC_NDS32_LO12S3:                howto manager.      (line 1312)
+* BFD_RELOC_NDS32_LOADSTORE:             howto manager.      (line 1375)
+* BFD_RELOC_NDS32_LONGCALL1:             howto manager.      (line 1369)
+* BFD_RELOC_NDS32_LONGCALL2:             howto manager.      (line 1370)
+* BFD_RELOC_NDS32_LONGCALL3:             howto manager.      (line 1371)
+* BFD_RELOC_NDS32_LONGCALL4:             howto manager.      (line 1380)
+* BFD_RELOC_NDS32_LONGCALL5:             howto manager.      (line 1381)
+* BFD_RELOC_NDS32_LONGCALL6:             howto manager.      (line 1382)
+* BFD_RELOC_NDS32_LONGJUMP1:             howto manager.      (line 1372)
+* BFD_RELOC_NDS32_LONGJUMP2:             howto manager.      (line 1373)
+* BFD_RELOC_NDS32_LONGJUMP3:             howto manager.      (line 1374)
+* BFD_RELOC_NDS32_LONGJUMP4:             howto manager.      (line 1383)
+* BFD_RELOC_NDS32_LONGJUMP5:             howto manager.      (line 1384)
+* BFD_RELOC_NDS32_LONGJUMP6:             howto manager.      (line 1385)
+* BFD_RELOC_NDS32_LONGJUMP7:             howto manager.      (line 1386)
+* BFD_RELOC_NDS32_LSI:                   howto manager.      (line 1476)
+* BFD_RELOC_NDS32_MINUEND:               howto manager.      (line 1432)
+* BFD_RELOC_NDS32_MULCALL_SUFF:          howto manager.      (line 1425)
+* BFD_RELOC_NDS32_PLTBLOCK:              howto manager.      (line 1429)
+* BFD_RELOC_NDS32_PLTREL_HI20:           howto manager.      (line 1388)
+* BFD_RELOC_NDS32_PLTREL_LO12:           howto manager.      (line 1389)
+* BFD_RELOC_NDS32_PLT_GOTREL_HI20:       howto manager.      (line 1390)
+* BFD_RELOC_NDS32_PLT_GOTREL_LO12:       howto manager.      (line 1391)
+* BFD_RELOC_NDS32_PLT_GOTREL_LO15:       howto manager.      (line 1405)
+* BFD_RELOC_NDS32_PLT_GOTREL_LO19:       howto manager.      (line 1406)
+* BFD_RELOC_NDS32_PLT_GOTREL_LO20:       howto manager.      (line 1404)
+* BFD_RELOC_NDS32_PLT_GOT_SUFF:          howto manager.      (line 1424)
+* BFD_RELOC_NDS32_PTR:                   howto manager.      (line 1426)
+* BFD_RELOC_NDS32_PTR_COUNT:             howto manager.      (line 1427)
+* BFD_RELOC_NDS32_PTR_RESOLVED:          howto manager.      (line 1428)
+* BFD_RELOC_NDS32_RELATIVE:              howto manager.      (line 1357)
+* BFD_RELOC_NDS32_RELAX_ENTRY:           howto manager.      (line 1421)
+* BFD_RELOC_NDS32_RELAX_REGION_BEGIN:    howto manager.      (line 1430)
+* BFD_RELOC_NDS32_RELAX_REGION_END:      howto manager.      (line 1431)
+* BFD_RELOC_NDS32_REMOVE:                howto manager.      (line 1473)
+* BFD_RELOC_NDS32_SDA12S2_DP:            howto manager.      (line 1393)
+* BFD_RELOC_NDS32_SDA12S2_SP:            howto manager.      (line 1394)
+* BFD_RELOC_NDS32_SDA15S0:               howto manager.      (line 1336)
+* BFD_RELOC_NDS32_SDA15S1:               howto manager.      (line 1333)
+* BFD_RELOC_NDS32_SDA15S2:               howto manager.      (line 1330)
+* BFD_RELOC_NDS32_SDA15S3:               howto manager.      (line 1327)
+* BFD_RELOC_NDS32_SDA16S3:               howto manager.      (line 1339)
+* BFD_RELOC_NDS32_SDA17S2:               howto manager.      (line 1342)
+* BFD_RELOC_NDS32_SDA18S1:               howto manager.      (line 1345)
+* BFD_RELOC_NDS32_SDA19S0:               howto manager.      (line 1348)
+* BFD_RELOC_NDS32_SDA_FP7U2_RELA:        howto manager.      (line 1419)
+* BFD_RELOC_NDS32_SUBTRAHEND:            howto manager.      (line 1433)
+* BFD_RELOC_NDS32_TLS_DESC:              howto manager.      (line 1464)
+* BFD_RELOC_NDS32_TLS_DESC_20:           howto manager.      (line 1467)
+* BFD_RELOC_NDS32_TLS_DESC_ADD:          howto manager.      (line 1469)
+* BFD_RELOC_NDS32_TLS_DESC_CALL:         howto manager.      (line 1471)
+* BFD_RELOC_NDS32_TLS_DESC_FUNC:         howto manager.      (line 1470)
+* BFD_RELOC_NDS32_TLS_DESC_HI20:         howto manager.      (line 1465)
+* BFD_RELOC_NDS32_TLS_DESC_LO12:         howto manager.      (line 1466)
+* BFD_RELOC_NDS32_TLS_DESC_MEM:          howto manager.      (line 1472)
+* BFD_RELOC_NDS32_TLS_DESC_SDA17S2:      howto manager.      (line 1468)
+* BFD_RELOC_NDS32_TLS_IEGP_HI20:         howto manager.      (line 1460)
+* BFD_RELOC_NDS32_TLS_IEGP_LO12:         howto manager.      (line 1461)
+* BFD_RELOC_NDS32_TLS_IEGP_LO12S2:       howto manager.      (line 1462)
+* BFD_RELOC_NDS32_TLS_IEGP_LW:           howto manager.      (line 1463)
+* BFD_RELOC_NDS32_TLS_IE_HI20:           howto manager.      (line 1457)
+* BFD_RELOC_NDS32_TLS_IE_LO12:           howto manager.      (line 1458)
+* BFD_RELOC_NDS32_TLS_IE_LO12S2:         howto manager.      (line 1459)
+* BFD_RELOC_NDS32_TLS_LE_15S0:           howto manager.      (line 1452)
+* BFD_RELOC_NDS32_TLS_LE_15S1:           howto manager.      (line 1453)
+* BFD_RELOC_NDS32_TLS_LE_15S2:           howto manager.      (line 1454)
+* BFD_RELOC_NDS32_TLS_LE_20:             howto manager.      (line 1451)
+* BFD_RELOC_NDS32_TLS_LE_ADD:            howto manager.      (line 1455)
+* BFD_RELOC_NDS32_TLS_LE_HI20:           howto manager.      (line 1449)
+* BFD_RELOC_NDS32_TLS_LE_LO12:           howto manager.      (line 1450)
+* BFD_RELOC_NDS32_TLS_LE_LS:             howto manager.      (line 1456)
+* BFD_RELOC_NDS32_TPOFF:                 howto manager.      (line 1447)
+* BFD_RELOC_NDS32_TRAN:                  howto manager.      (line 1443)
+* BFD_RELOC_NDS32_UPDATE_TA:             howto manager.      (line 1402)
+* BFD_RELOC_NDS32_WORD_9_PCREL:          howto manager.      (line 1300)
 * 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)
-* BFD_RELOC_NS32K_DISP_32:               howto manager.      (line  587)
-* BFD_RELOC_NS32K_DISP_32_PCREL:         howto manager.      (line  590)
-* BFD_RELOC_NS32K_DISP_8:                howto manager.      (line  585)
-* BFD_RELOC_NS32K_DISP_8_PCREL:          howto manager.      (line  588)
-* BFD_RELOC_NS32K_IMM_16:                howto manager.      (line  580)
-* BFD_RELOC_NS32K_IMM_16_PCREL:          howto manager.      (line  583)
-* BFD_RELOC_NS32K_IMM_32:                howto manager.      (line  581)
-* BFD_RELOC_NS32K_IMM_32_PCREL:          howto manager.      (line  584)
-* BFD_RELOC_NS32K_IMM_8:                 howto manager.      (line  579)
-* BFD_RELOC_NS32K_IMM_8_PCREL:           howto manager.      (line  582)
-* bfd_reloc_offset_in_range:             typedef arelent.    (line  344)
-* BFD_RELOC_OR1K_COPY:                   howto manager.      (line 2377)
-* BFD_RELOC_OR1K_GLOB_DAT:               howto manager.      (line 2378)
-* BFD_RELOC_OR1K_GOT16:                  howto manager.      (line 2371)
-* BFD_RELOC_OR1K_GOTOFF_SLO16:           howto manager.      (line 2376)
-* BFD_RELOC_OR1K_GOTPC_HI16:             howto manager.      (line 2369)
-* BFD_RELOC_OR1K_GOTPC_LO16:             howto manager.      (line 2370)
-* BFD_RELOC_OR1K_GOT_LO13:               howto manager.      (line 2373)
-* BFD_RELOC_OR1K_GOT_PG21:               howto manager.      (line 2372)
-* BFD_RELOC_OR1K_JMP_SLOT:               howto manager.      (line 2379)
-* BFD_RELOC_OR1K_LO13:                   howto manager.      (line 2367)
-* BFD_RELOC_OR1K_PCREL_PG21:             howto manager.      (line 2366)
-* BFD_RELOC_OR1K_PLT26:                  howto manager.      (line 2374)
-* BFD_RELOC_OR1K_PLTA26:                 howto manager.      (line 2375)
-* BFD_RELOC_OR1K_RELATIVE:               howto manager.      (line 2380)
-* BFD_RELOC_OR1K_REL_26:                 howto manager.      (line 2364)
-* BFD_RELOC_OR1K_SLO13:                  howto manager.      (line 2368)
-* BFD_RELOC_OR1K_SLO16:                  howto manager.      (line 2365)
-* BFD_RELOC_OR1K_TLS_DTPMOD:             howto manager.      (line 2402)
-* BFD_RELOC_OR1K_TLS_DTPOFF:             howto manager.      (line 2401)
-* BFD_RELOC_OR1K_TLS_GD_HI16:            howto manager.      (line 2381)
-* BFD_RELOC_OR1K_TLS_GD_LO13:            howto manager.      (line 2384)
-* BFD_RELOC_OR1K_TLS_GD_LO16:            howto manager.      (line 2382)
-* BFD_RELOC_OR1K_TLS_GD_PG21:            howto manager.      (line 2383)
-* BFD_RELOC_OR1K_TLS_IE_AHI16:           howto manager.      (line 2392)
-* BFD_RELOC_OR1K_TLS_IE_HI16:            howto manager.      (line 2391)
-* BFD_RELOC_OR1K_TLS_IE_LO13:            howto manager.      (line 2395)
-* BFD_RELOC_OR1K_TLS_IE_LO16:            howto manager.      (line 2393)
-* BFD_RELOC_OR1K_TLS_IE_PG21:            howto manager.      (line 2394)
-* BFD_RELOC_OR1K_TLS_LDM_HI16:           howto manager.      (line 2385)
-* BFD_RELOC_OR1K_TLS_LDM_LO13:           howto manager.      (line 2388)
-* BFD_RELOC_OR1K_TLS_LDM_LO16:           howto manager.      (line 2386)
-* BFD_RELOC_OR1K_TLS_LDM_PG21:           howto manager.      (line 2387)
-* BFD_RELOC_OR1K_TLS_LDO_HI16:           howto manager.      (line 2389)
-* BFD_RELOC_OR1K_TLS_LDO_LO16:           howto manager.      (line 2390)
-* BFD_RELOC_OR1K_TLS_LE_AHI16:           howto manager.      (line 2397)
-* BFD_RELOC_OR1K_TLS_LE_HI16:            howto manager.      (line 2396)
-* BFD_RELOC_OR1K_TLS_LE_LO16:            howto manager.      (line 2398)
-* BFD_RELOC_OR1K_TLS_LE_SLO16:           howto manager.      (line 2399)
-* BFD_RELOC_OR1K_TLS_TPOFF:              howto manager.      (line 2400)
-* BFD_RELOC_PDP11_DISP_6_PCREL:          howto manager.      (line  593)
-* BFD_RELOC_PDP11_DISP_8_PCREL:          howto manager.      (line  592)
-* BFD_RELOC_PJ_CODE_DIR16:               howto manager.      (line  597)
-* BFD_RELOC_PJ_CODE_DIR32:               howto manager.      (line  598)
-* BFD_RELOC_PJ_CODE_HI16:                howto manager.      (line  595)
-* BFD_RELOC_PJ_CODE_LO16:                howto manager.      (line  596)
-* BFD_RELOC_PJ_CODE_REL16:               howto manager.      (line  599)
-* BFD_RELOC_PJ_CODE_REL32:               howto manager.      (line  600)
-* BFD_RELOC_PPC64_ADDR16_DS:             howto manager.      (line  663)
-* BFD_RELOC_PPC64_ADDR16_HIGH:           howto manager.      (line  674)
-* BFD_RELOC_PPC64_ADDR16_HIGHA:          howto manager.      (line  675)
-* BFD_RELOC_PPC64_ADDR16_HIGHER34:       howto manager.      (line  692)
-* BFD_RELOC_PPC64_ADDR16_HIGHERA34:      howto manager.      (line  693)
-* BFD_RELOC_PPC64_ADDR16_HIGHEST34:      howto manager.      (line  694)
-* BFD_RELOC_PPC64_ADDR16_HIGHESTA34:     howto manager.      (line  695)
-* BFD_RELOC_PPC64_ADDR16_LO_DS:          howto manager.      (line  664)
-* BFD_RELOC_PPC64_ADDR64_LOCAL:          howto manager.      (line  682)
-* BFD_RELOC_PPC64_D28:                   howto manager.      (line  700)
-* BFD_RELOC_PPC64_D34:                   howto manager.      (line  685)
-* BFD_RELOC_PPC64_D34_HA30:              howto manager.      (line  688)
-* BFD_RELOC_PPC64_D34_HI30:              howto manager.      (line  687)
-* BFD_RELOC_PPC64_D34_LO:                howto manager.      (line  686)
-* BFD_RELOC_PPC64_DTPREL16_DS:           howto manager.      (line  741)
-* BFD_RELOC_PPC64_DTPREL16_HIGH:         howto manager.      (line  743)
-* BFD_RELOC_PPC64_DTPREL16_HIGHA:        howto manager.      (line  744)
-* BFD_RELOC_PPC64_DTPREL16_HIGHER:       howto manager.      (line  745)
-* BFD_RELOC_PPC64_DTPREL16_HIGHERA:      howto manager.      (line  746)
-* BFD_RELOC_PPC64_DTPREL16_HIGHEST:      howto manager.      (line  747)
-* BFD_RELOC_PPC64_DTPREL16_HIGHESTA:     howto manager.      (line  748)
-* BFD_RELOC_PPC64_DTPREL16_LO_DS:        howto manager.      (line  742)
-* BFD_RELOC_PPC64_DTPREL34:              howto manager.      (line  750)
-* 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_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_HIGHER:                howto manager.      (line  651)
-* BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  652)
-* BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  653)
-* BFD_RELOC_PPC64_HIGHEST_S:             howto manager.      (line  654)
-* BFD_RELOC_PPC64_PCREL28:               howto manager.      (line  701)
-* BFD_RELOC_PPC64_PCREL34:               howto manager.      (line  689)
-* BFD_RELOC_PPC64_PLT16_LO_DS:           howto manager.      (line  667)
-* BFD_RELOC_PPC64_PLTGOT16:              howto manager.      (line  659)
-* BFD_RELOC_PPC64_PLTGOT16_DS:           howto manager.      (line  672)
-* BFD_RELOC_PPC64_PLTGOT16_HA:           howto manager.      (line  662)
-* BFD_RELOC_PPC64_PLTGOT16_HI:           howto manager.      (line  661)
-* BFD_RELOC_PPC64_PLTGOT16_LO:           howto manager.      (line  660)
-* BFD_RELOC_PPC64_PLTGOT16_LO_DS:        howto manager.      (line  673)
-* BFD_RELOC_PPC64_PLT_PCREL34:           howto manager.      (line  691)
-* BFD_RELOC_PPC64_REL16_HIGH:            howto manager.      (line  676)
-* BFD_RELOC_PPC64_REL16_HIGHA:           howto manager.      (line  677)
-* BFD_RELOC_PPC64_REL16_HIGHER:          howto manager.      (line  678)
-* BFD_RELOC_PPC64_REL16_HIGHER34:        howto manager.      (line  696)
-* BFD_RELOC_PPC64_REL16_HIGHERA:         howto manager.      (line  679)
-* BFD_RELOC_PPC64_REL16_HIGHERA34:       howto manager.      (line  697)
-* BFD_RELOC_PPC64_REL16_HIGHEST:         howto manager.      (line  680)
-* BFD_RELOC_PPC64_REL16_HIGHEST34:       howto manager.      (line  698)
-* BFD_RELOC_PPC64_REL16_HIGHESTA:        howto manager.      (line  681)
-* BFD_RELOC_PPC64_REL16_HIGHESTA34:      howto manager.      (line  699)
-* BFD_RELOC_PPC64_REL24_NOTOC:           howto manager.      (line  684)
-* BFD_RELOC_PPC64_SECTOFF_DS:            howto manager.      (line  668)
-* BFD_RELOC_PPC64_SECTOFF_LO_DS:         howto manager.      (line  669)
-* BFD_RELOC_PPC64_TLS_PCREL:             howto manager.      (line  755)
-* BFD_RELOC_PPC64_TOC:                   howto manager.      (line  658)
-* BFD_RELOC_PPC64_TOC16_DS:              howto manager.      (line  670)
-* BFD_RELOC_PPC64_TOC16_HA:              howto manager.      (line  657)
-* BFD_RELOC_PPC64_TOC16_HI:              howto manager.      (line  656)
-* BFD_RELOC_PPC64_TOC16_LO:              howto manager.      (line  655)
-* BFD_RELOC_PPC64_TOC16_LO_DS:           howto manager.      (line  671)
-* BFD_RELOC_PPC64_TPREL16_DS:            howto manager.      (line  733)
-* BFD_RELOC_PPC64_TPREL16_HIGH:          howto manager.      (line  735)
-* BFD_RELOC_PPC64_TPREL16_HIGHA:         howto manager.      (line  736)
-* BFD_RELOC_PPC64_TPREL16_HIGHER:        howto manager.      (line  737)
-* BFD_RELOC_PPC64_TPREL16_HIGHERA:       howto manager.      (line  738)
-* BFD_RELOC_PPC64_TPREL16_HIGHEST:       howto manager.      (line  739)
-* BFD_RELOC_PPC64_TPREL16_HIGHESTA:      howto manager.      (line  740)
-* BFD_RELOC_PPC64_TPREL16_LO_DS:         howto manager.      (line  734)
-* BFD_RELOC_PPC64_TPREL34:               howto manager.      (line  749)
-* BFD_RELOC_PPC_16DX_HA:                 howto manager.      (line  649)
-* BFD_RELOC_PPC_B16:                     howto manager.      (line  605)
-* BFD_RELOC_PPC_B16_BRNTAKEN:            howto manager.      (line  607)
-* BFD_RELOC_PPC_B16_BRTAKEN:             howto manager.      (line  606)
-* BFD_RELOC_PPC_B26:                     howto manager.      (line  602)
-* BFD_RELOC_PPC_BA16:                    howto manager.      (line  608)
-* BFD_RELOC_PPC_BA16_BRNTAKEN:           howto manager.      (line  610)
-* BFD_RELOC_PPC_BA16_BRTAKEN:            howto manager.      (line  609)
-* BFD_RELOC_PPC_BA26:                    howto manager.      (line  603)
-* BFD_RELOC_PPC_COPY:                    howto manager.      (line  611)
-* BFD_RELOC_PPC_DTPMOD:                  howto manager.      (line  706)
-* BFD_RELOC_PPC_DTPREL:                  howto manager.      (line  716)
-* BFD_RELOC_PPC_DTPREL16:                howto manager.      (line  712)
-* BFD_RELOC_PPC_DTPREL16_HA:             howto manager.      (line  715)
-* BFD_RELOC_PPC_DTPREL16_HI:             howto manager.      (line  714)
-* BFD_RELOC_PPC_DTPREL16_LO:             howto manager.      (line  713)
-* BFD_RELOC_PPC_EMB_BIT_FLD:             howto manager.      (line  630)
-* BFD_RELOC_PPC_EMB_MRKREF:              howto manager.      (line  625)
-* BFD_RELOC_PPC_EMB_NADDR16:             howto manager.      (line  617)
-* BFD_RELOC_PPC_EMB_NADDR16_HA:          howto manager.      (line  620)
-* BFD_RELOC_PPC_EMB_NADDR16_HI:          howto manager.      (line  619)
-* BFD_RELOC_PPC_EMB_NADDR16_LO:          howto manager.      (line  618)
-* BFD_RELOC_PPC_EMB_NADDR32:             howto manager.      (line  616)
-* BFD_RELOC_PPC_EMB_RELSDA:              howto manager.      (line  631)
-* BFD_RELOC_PPC_EMB_RELSEC16:            howto manager.      (line  626)
-* BFD_RELOC_PPC_EMB_RELST_HA:            howto manager.      (line  629)
-* BFD_RELOC_PPC_EMB_RELST_HI:            howto manager.      (line  628)
-* BFD_RELOC_PPC_EMB_RELST_LO:            howto manager.      (line  627)
-* BFD_RELOC_PPC_EMB_SDA21:               howto manager.      (line  624)
-* BFD_RELOC_PPC_EMB_SDA2I16:             howto manager.      (line  622)
-* BFD_RELOC_PPC_EMB_SDA2REL:             howto manager.      (line  623)
-* BFD_RELOC_PPC_EMB_SDAI16:              howto manager.      (line  621)
-* BFD_RELOC_PPC_GLOB_DAT:                howto manager.      (line  612)
-* BFD_RELOC_PPC_GOT_DTPREL16:            howto manager.      (line  729)
-* BFD_RELOC_PPC_GOT_DTPREL16_HA:         howto manager.      (line  732)
-* BFD_RELOC_PPC_GOT_DTPREL16_HI:         howto manager.      (line  731)
-* BFD_RELOC_PPC_GOT_DTPREL16_LO:         howto manager.      (line  730)
-* BFD_RELOC_PPC_GOT_TLSGD16:             howto manager.      (line  717)
-* BFD_RELOC_PPC_GOT_TLSGD16_HA:          howto manager.      (line  720)
-* BFD_RELOC_PPC_GOT_TLSGD16_HI:          howto manager.      (line  719)
-* BFD_RELOC_PPC_GOT_TLSGD16_LO:          howto manager.      (line  718)
-* BFD_RELOC_PPC_GOT_TLSLD16:             howto manager.      (line  721)
-* BFD_RELOC_PPC_GOT_TLSLD16_HA:          howto manager.      (line  724)
-* BFD_RELOC_PPC_GOT_TLSLD16_HI:          howto manager.      (line  723)
-* BFD_RELOC_PPC_GOT_TLSLD16_LO:          howto manager.      (line  722)
-* BFD_RELOC_PPC_GOT_TPREL16:             howto manager.      (line  725)
-* BFD_RELOC_PPC_GOT_TPREL16_HA:          howto manager.      (line  728)
-* BFD_RELOC_PPC_GOT_TPREL16_HI:          howto manager.      (line  727)
-* BFD_RELOC_PPC_GOT_TPREL16_LO:          howto manager.      (line  726)
-* BFD_RELOC_PPC_JMP_SLOT:                howto manager.      (line  613)
-* BFD_RELOC_PPC_LOCAL24PC:               howto manager.      (line  615)
-* BFD_RELOC_PPC_REL16DX_HA:              howto manager.      (line  650)
-* BFD_RELOC_PPC_RELATIVE:                howto manager.      (line  614)
-* BFD_RELOC_PPC_TLS:                     howto manager.      (line  703)
-* BFD_RELOC_PPC_TLSGD:                   howto manager.      (line  704)
-* BFD_RELOC_PPC_TLSLD:                   howto manager.      (line  705)
-* BFD_RELOC_PPC_TOC16:                   howto manager.      (line  604)
-* BFD_RELOC_PPC_TPREL:                   howto manager.      (line  711)
-* BFD_RELOC_PPC_TPREL16:                 howto manager.      (line  707)
-* BFD_RELOC_PPC_TPREL16_HA:              howto manager.      (line  710)
-* BFD_RELOC_PPC_TPREL16_HI:              howto manager.      (line  709)
-* BFD_RELOC_PPC_TPREL16_LO:              howto manager.      (line  708)
-* BFD_RELOC_PPC_VLE_HA16A:               howto manager.      (line  639)
-* BFD_RELOC_PPC_VLE_HA16D:               howto manager.      (line  640)
-* BFD_RELOC_PPC_VLE_HI16A:               howto manager.      (line  637)
-* BFD_RELOC_PPC_VLE_HI16D:               howto manager.      (line  638)
-* BFD_RELOC_PPC_VLE_LO16A:               howto manager.      (line  635)
-* BFD_RELOC_PPC_VLE_LO16D:               howto manager.      (line  636)
-* BFD_RELOC_PPC_VLE_REL15:               howto manager.      (line  633)
-* BFD_RELOC_PPC_VLE_REL24:               howto manager.      (line  634)
-* BFD_RELOC_PPC_VLE_REL8:                howto manager.      (line  632)
-* BFD_RELOC_PPC_VLE_SDA21:               howto manager.      (line  641)
-* BFD_RELOC_PPC_VLE_SDA21_LO:            howto manager.      (line  642)
-* BFD_RELOC_PPC_VLE_SDAREL_HA16A:        howto manager.      (line  647)
-* BFD_RELOC_PPC_VLE_SDAREL_HA16D:        howto manager.      (line  648)
-* BFD_RELOC_PPC_VLE_SDAREL_HI16A:        howto manager.      (line  645)
-* 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_RELC:                        howto manager.      (line 2416)
-* BFD_RELOC_RISCV_32_PCREL:              howto manager.      (line 1885)
-* BFD_RELOC_RISCV_ADD16:                 howto manager.      (line 1853)
-* BFD_RELOC_RISCV_ADD32:                 howto manager.      (line 1854)
-* BFD_RELOC_RISCV_ADD64:                 howto manager.      (line 1855)
-* BFD_RELOC_RISCV_ADD8:                  howto manager.      (line 1852)
-* BFD_RELOC_RISCV_ALIGN:                 howto manager.      (line 1870)
-* BFD_RELOC_RISCV_CALL:                  howto manager.      (line 1850)
-* BFD_RELOC_RISCV_CALL_PLT:              howto manager.      (line 1851)
-* BFD_RELOC_RISCV_CFA:                   howto manager.      (line 1879)
-* BFD_RELOC_RISCV_GOT_HI20:              howto manager.      (line 1860)
-* BFD_RELOC_RISCV_GPREL12_I:             howto manager.      (line 1844)
-* BFD_RELOC_RISCV_GPREL12_S:             howto manager.      (line 1845)
-* BFD_RELOC_RISCV_GPREL_I:               howto manager.      (line 1874)
-* BFD_RELOC_RISCV_GPREL_S:               howto manager.      (line 1875)
-* BFD_RELOC_RISCV_HI20:                  howto manager.      (line 1838)
-* BFD_RELOC_RISCV_JMP:                   howto manager.      (line 1863)
-* BFD_RELOC_RISCV_LO12_I:                howto manager.      (line 1842)
-* BFD_RELOC_RISCV_LO12_S:                howto manager.      (line 1843)
-* BFD_RELOC_RISCV_PCREL_HI20:            howto manager.      (line 1839)
-* BFD_RELOC_RISCV_PCREL_LO12_I:          howto manager.      (line 1840)
-* BFD_RELOC_RISCV_PCREL_LO12_S:          howto manager.      (line 1841)
-* BFD_RELOC_RISCV_RELAX:                 howto manager.      (line 1878)
-* BFD_RELOC_RISCV_RVC_BRANCH:            howto manager.      (line 1871)
-* BFD_RELOC_RISCV_RVC_JUMP:              howto manager.      (line 1872)
-* BFD_RELOC_RISCV_RVC_LUI:               howto manager.      (line 1873)
-* BFD_RELOC_RISCV_SET16:                 howto manager.      (line 1883)
-* BFD_RELOC_RISCV_SET32:                 howto manager.      (line 1884)
-* BFD_RELOC_RISCV_SET6:                  howto manager.      (line 1881)
-* BFD_RELOC_RISCV_SET8:                  howto manager.      (line 1882)
-* BFD_RELOC_RISCV_SUB16:                 howto manager.      (line 1857)
-* BFD_RELOC_RISCV_SUB32:                 howto manager.      (line 1858)
-* BFD_RELOC_RISCV_SUB6:                  howto manager.      (line 1880)
-* BFD_RELOC_RISCV_SUB64:                 howto manager.      (line 1859)
-* BFD_RELOC_RISCV_SUB8:                  howto manager.      (line 1856)
-* BFD_RELOC_RISCV_TLS_DTPMOD32:          howto manager.      (line 1864)
-* BFD_RELOC_RISCV_TLS_DTPMOD64:          howto manager.      (line 1866)
-* BFD_RELOC_RISCV_TLS_DTPREL32:          howto manager.      (line 1865)
-* BFD_RELOC_RISCV_TLS_DTPREL64:          howto manager.      (line 1867)
-* BFD_RELOC_RISCV_TLS_GD_HI20:           howto manager.      (line 1862)
-* BFD_RELOC_RISCV_TLS_GOT_HI20:          howto manager.      (line 1861)
-* BFD_RELOC_RISCV_TLS_TPREL32:           howto manager.      (line 1868)
-* BFD_RELOC_RISCV_TLS_TPREL64:           howto manager.      (line 1869)
-* BFD_RELOC_RISCV_TPREL_ADD:             howto manager.      (line 1849)
-* BFD_RELOC_RISCV_TPREL_HI20:            howto manager.      (line 1846)
-* BFD_RELOC_RISCV_TPREL_I:               howto manager.      (line 1876)
-* BFD_RELOC_RISCV_TPREL_LO12_I:          howto manager.      (line 1847)
-* BFD_RELOC_RISCV_TPREL_LO12_S:          howto manager.      (line 1848)
-* BFD_RELOC_RISCV_TPREL_S:               howto manager.      (line 1877)
-* BFD_RELOC_RL78_16U:                    howto manager.      (line 1895)
-* BFD_RELOC_RL78_16_OP:                  howto manager.      (line 1891)
-* BFD_RELOC_RL78_24U:                    howto manager.      (line 1896)
-* BFD_RELOC_RL78_24_OP:                  howto manager.      (line 1892)
-* BFD_RELOC_RL78_32_OP:                  howto manager.      (line 1893)
-* BFD_RELOC_RL78_8U:                     howto manager.      (line 1894)
-* BFD_RELOC_RL78_ABS16:                  howto manager.      (line 1908)
-* BFD_RELOC_RL78_ABS16U:                 howto manager.      (line 1912)
-* BFD_RELOC_RL78_ABS16UL:                howto manager.      (line 1914)
-* BFD_RELOC_RL78_ABS16UW:                howto manager.      (line 1913)
-* BFD_RELOC_RL78_ABS16_REV:              howto manager.      (line 1909)
-* BFD_RELOC_RL78_ABS32:                  howto manager.      (line 1910)
-* BFD_RELOC_RL78_ABS32_REV:              howto manager.      (line 1911)
-* BFD_RELOC_RL78_ABS8:                   howto manager.      (line 1907)
-* BFD_RELOC_RL78_CODE:                   howto manager.      (line 1919)
-* BFD_RELOC_RL78_DIFF:                   howto manager.      (line 1898)
-* BFD_RELOC_RL78_DIR3U_PCREL:            howto manager.      (line 1897)
-* BFD_RELOC_RL78_GPRELB:                 howto manager.      (line 1899)
-* BFD_RELOC_RL78_GPRELL:                 howto manager.      (line 1901)
-* BFD_RELOC_RL78_GPRELW:                 howto manager.      (line 1900)
-* BFD_RELOC_RL78_HI16:                   howto manager.      (line 1916)
-* BFD_RELOC_RL78_HI8:                    howto manager.      (line 1917)
-* BFD_RELOC_RL78_LO16:                   howto manager.      (line 1918)
-* BFD_RELOC_RL78_NEG16:                  howto manager.      (line 1888)
-* BFD_RELOC_RL78_NEG24:                  howto manager.      (line 1889)
-* BFD_RELOC_RL78_NEG32:                  howto manager.      (line 1890)
-* BFD_RELOC_RL78_NEG8:                   howto manager.      (line 1887)
-* BFD_RELOC_RL78_OP_AND:                 howto manager.      (line 1905)
-* BFD_RELOC_RL78_OP_NEG:                 howto manager.      (line 1904)
-* BFD_RELOC_RL78_OP_SHRA:                howto manager.      (line 1906)
-* BFD_RELOC_RL78_OP_SUBTRACT:            howto manager.      (line 1903)
-* BFD_RELOC_RL78_RELAX:                  howto manager.      (line 1915)
-* BFD_RELOC_RL78_SADDR:                  howto manager.      (line 1920)
-* BFD_RELOC_RL78_SYM:                    howto manager.      (line 1902)
+* BFD_RELOC_NS32K_DISP_16:               howto manager.      (line  595)
+* BFD_RELOC_NS32K_DISP_16_PCREL:         howto manager.      (line  598)
+* BFD_RELOC_NS32K_DISP_32:               howto manager.      (line  596)
+* BFD_RELOC_NS32K_DISP_32_PCREL:         howto manager.      (line  599)
+* BFD_RELOC_NS32K_DISP_8:                howto manager.      (line  594)
+* BFD_RELOC_NS32K_DISP_8_PCREL:          howto manager.      (line  597)
+* BFD_RELOC_NS32K_IMM_16:                howto manager.      (line  589)
+* BFD_RELOC_NS32K_IMM_16_PCREL:          howto manager.      (line  592)
+* BFD_RELOC_NS32K_IMM_32:                howto manager.      (line  590)
+* BFD_RELOC_NS32K_IMM_32_PCREL:          howto manager.      (line  593)
+* BFD_RELOC_NS32K_IMM_8:                 howto manager.      (line  588)
+* BFD_RELOC_NS32K_IMM_8_PCREL:           howto manager.      (line  591)
+* bfd_reloc_offset_in_range:             typedef arelent.    (line  303)
+* bfd_reloc_offset_in_range <1>:         typedef arelent.    (line  307)
+* BFD_RELOC_OR1K_COPY:                   howto manager.      (line 2390)
+* BFD_RELOC_OR1K_GLOB_DAT:               howto manager.      (line 2391)
+* BFD_RELOC_OR1K_GOT16:                  howto manager.      (line 2384)
+* BFD_RELOC_OR1K_GOTOFF_SLO16:           howto manager.      (line 2389)
+* BFD_RELOC_OR1K_GOTPC_HI16:             howto manager.      (line 2381)
+* BFD_RELOC_OR1K_GOTPC_LO16:             howto manager.      (line 2382)
+* BFD_RELOC_OR1K_GOT_AHI16:              howto manager.      (line 2383)
+* BFD_RELOC_OR1K_GOT_LO13:               howto manager.      (line 2386)
+* BFD_RELOC_OR1K_GOT_PG21:               howto manager.      (line 2385)
+* BFD_RELOC_OR1K_JMP_SLOT:               howto manager.      (line 2392)
+* BFD_RELOC_OR1K_LO13:                   howto manager.      (line 2379)
+* BFD_RELOC_OR1K_PCREL_PG21:             howto manager.      (line 2378)
+* BFD_RELOC_OR1K_PLT26:                  howto manager.      (line 2387)
+* BFD_RELOC_OR1K_PLTA26:                 howto manager.      (line 2388)
+* BFD_RELOC_OR1K_RELATIVE:               howto manager.      (line 2393)
+* BFD_RELOC_OR1K_REL_26:                 howto manager.      (line 2376)
+* BFD_RELOC_OR1K_SLO13:                  howto manager.      (line 2380)
+* BFD_RELOC_OR1K_SLO16:                  howto manager.      (line 2377)
+* BFD_RELOC_OR1K_TLS_DTPMOD:             howto manager.      (line 2415)
+* BFD_RELOC_OR1K_TLS_DTPOFF:             howto manager.      (line 2414)
+* BFD_RELOC_OR1K_TLS_GD_HI16:            howto manager.      (line 2394)
+* BFD_RELOC_OR1K_TLS_GD_LO13:            howto manager.      (line 2397)
+* BFD_RELOC_OR1K_TLS_GD_LO16:            howto manager.      (line 2395)
+* BFD_RELOC_OR1K_TLS_GD_PG21:            howto manager.      (line 2396)
+* BFD_RELOC_OR1K_TLS_IE_AHI16:           howto manager.      (line 2405)
+* BFD_RELOC_OR1K_TLS_IE_HI16:            howto manager.      (line 2404)
+* BFD_RELOC_OR1K_TLS_IE_LO13:            howto manager.      (line 2408)
+* BFD_RELOC_OR1K_TLS_IE_LO16:            howto manager.      (line 2406)
+* BFD_RELOC_OR1K_TLS_IE_PG21:            howto manager.      (line 2407)
+* BFD_RELOC_OR1K_TLS_LDM_HI16:           howto manager.      (line 2398)
+* BFD_RELOC_OR1K_TLS_LDM_LO13:           howto manager.      (line 2401)
+* BFD_RELOC_OR1K_TLS_LDM_LO16:           howto manager.      (line 2399)
+* BFD_RELOC_OR1K_TLS_LDM_PG21:           howto manager.      (line 2400)
+* BFD_RELOC_OR1K_TLS_LDO_HI16:           howto manager.      (line 2402)
+* BFD_RELOC_OR1K_TLS_LDO_LO16:           howto manager.      (line 2403)
+* BFD_RELOC_OR1K_TLS_LE_AHI16:           howto manager.      (line 2410)
+* BFD_RELOC_OR1K_TLS_LE_HI16:            howto manager.      (line 2409)
+* BFD_RELOC_OR1K_TLS_LE_LO16:            howto manager.      (line 2411)
+* BFD_RELOC_OR1K_TLS_LE_SLO16:           howto manager.      (line 2412)
+* BFD_RELOC_OR1K_TLS_TPOFF:              howto manager.      (line 2413)
+* BFD_RELOC_PDP11_DISP_6_PCREL:          howto manager.      (line  602)
+* BFD_RELOC_PDP11_DISP_8_PCREL:          howto manager.      (line  601)
+* BFD_RELOC_PJ_CODE_DIR16:               howto manager.      (line  606)
+* BFD_RELOC_PJ_CODE_DIR32:               howto manager.      (line  607)
+* BFD_RELOC_PJ_CODE_HI16:                howto manager.      (line  604)
+* BFD_RELOC_PJ_CODE_LO16:                howto manager.      (line  605)
+* BFD_RELOC_PJ_CODE_REL16:               howto manager.      (line  608)
+* BFD_RELOC_PJ_CODE_REL32:               howto manager.      (line  609)
+* BFD_RELOC_PPC64_ADDR16_DS:             howto manager.      (line  675)
+* BFD_RELOC_PPC64_ADDR16_HIGH:           howto manager.      (line  686)
+* BFD_RELOC_PPC64_ADDR16_HIGHA:          howto manager.      (line  687)
+* BFD_RELOC_PPC64_ADDR16_HIGHER34:       howto manager.      (line  705)
+* BFD_RELOC_PPC64_ADDR16_HIGHERA34:      howto manager.      (line  706)
+* BFD_RELOC_PPC64_ADDR16_HIGHEST34:      howto manager.      (line  707)
+* BFD_RELOC_PPC64_ADDR16_HIGHESTA34:     howto manager.      (line  708)
+* BFD_RELOC_PPC64_ADDR16_LO_DS:          howto manager.      (line  676)
+* BFD_RELOC_PPC64_ADDR64_LOCAL:          howto manager.      (line  694)
+* BFD_RELOC_PPC64_D28:                   howto manager.      (line  713)
+* BFD_RELOC_PPC64_D34:                   howto manager.      (line  698)
+* BFD_RELOC_PPC64_D34_HA30:              howto manager.      (line  701)
+* BFD_RELOC_PPC64_D34_HI30:              howto manager.      (line  700)
+* BFD_RELOC_PPC64_D34_LO:                howto manager.      (line  699)
+* BFD_RELOC_PPC64_DTPREL16_DS:           howto manager.      (line  764)
+* BFD_RELOC_PPC64_DTPREL16_HIGH:         howto manager.      (line  766)
+* BFD_RELOC_PPC64_DTPREL16_HIGHA:        howto manager.      (line  767)
+* BFD_RELOC_PPC64_DTPREL16_HIGHER:       howto manager.      (line  768)
+* BFD_RELOC_PPC64_DTPREL16_HIGHERA:      howto manager.      (line  769)
+* BFD_RELOC_PPC64_DTPREL16_HIGHEST:      howto manager.      (line  770)
+* BFD_RELOC_PPC64_DTPREL16_HIGHESTA:     howto manager.      (line  771)
+* BFD_RELOC_PPC64_DTPREL16_LO_DS:        howto manager.      (line  765)
+* BFD_RELOC_PPC64_DTPREL34:              howto manager.      (line  773)
+* BFD_RELOC_PPC64_ENTRY:                 howto manager.      (line  695)
+* BFD_RELOC_PPC64_GOT16_DS:              howto manager.      (line  677)
+* BFD_RELOC_PPC64_GOT16_LO_DS:           howto manager.      (line  678)
+* BFD_RELOC_PPC64_GOT_DTPREL_PCREL34:    howto manager.      (line  777)
+* BFD_RELOC_PPC64_GOT_PCREL34:           howto manager.      (line  703)
+* BFD_RELOC_PPC64_GOT_TLSGD_PCREL34:     howto manager.      (line  774)
+* BFD_RELOC_PPC64_GOT_TLSLD_PCREL34:     howto manager.      (line  775)
+* BFD_RELOC_PPC64_GOT_TPREL_PCREL34:     howto manager.      (line  776)
+* BFD_RELOC_PPC64_HIGHER:                howto manager.      (line  663)
+* BFD_RELOC_PPC64_HIGHER_S:              howto manager.      (line  664)
+* BFD_RELOC_PPC64_HIGHEST:               howto manager.      (line  665)
+* BFD_RELOC_PPC64_HIGHEST_S:             howto manager.      (line  666)
+* BFD_RELOC_PPC64_PCREL28:               howto manager.      (line  714)
+* BFD_RELOC_PPC64_PCREL34:               howto manager.      (line  702)
+* BFD_RELOC_PPC64_PLT16_LO_DS:           howto manager.      (line  679)
+* BFD_RELOC_PPC64_PLTGOT16:              howto manager.      (line  671)
+* BFD_RELOC_PPC64_PLTGOT16_DS:           howto manager.      (line  684)
+* BFD_RELOC_PPC64_PLTGOT16_HA:           howto manager.      (line  674)
+* BFD_RELOC_PPC64_PLTGOT16_HI:           howto manager.      (line  673)
+* BFD_RELOC_PPC64_PLTGOT16_LO:           howto manager.      (line  672)
+* BFD_RELOC_PPC64_PLTGOT16_LO_DS:        howto manager.      (line  685)
+* BFD_RELOC_PPC64_PLT_PCREL34:           howto manager.      (line  704)
+* BFD_RELOC_PPC64_REL16_HIGH:            howto manager.      (line  688)
+* BFD_RELOC_PPC64_REL16_HIGHA:           howto manager.      (line  689)
+* BFD_RELOC_PPC64_REL16_HIGHER:          howto manager.      (line  690)
+* BFD_RELOC_PPC64_REL16_HIGHER34:        howto manager.      (line  709)
+* BFD_RELOC_PPC64_REL16_HIGHERA:         howto manager.      (line  691)
+* BFD_RELOC_PPC64_REL16_HIGHERA34:       howto manager.      (line  710)
+* BFD_RELOC_PPC64_REL16_HIGHEST:         howto manager.      (line  692)
+* BFD_RELOC_PPC64_REL16_HIGHEST34:       howto manager.      (line  711)
+* BFD_RELOC_PPC64_REL16_HIGHESTA:        howto manager.      (line  693)
+* BFD_RELOC_PPC64_REL16_HIGHESTA34:      howto manager.      (line  712)
+* BFD_RELOC_PPC64_REL24_NOTOC:           howto manager.      (line  696)
+* BFD_RELOC_PPC64_REL24_P9NOTOC:         howto manager.      (line  697)
+* BFD_RELOC_PPC64_SECTOFF_DS:            howto manager.      (line  680)
+* BFD_RELOC_PPC64_SECTOFF_LO_DS:         howto manager.      (line  681)
+* BFD_RELOC_PPC64_TLSGD:                 howto manager.      (line  750)
+* BFD_RELOC_PPC64_TLSIE:                 howto manager.      (line  753)
+* BFD_RELOC_PPC64_TLSLD:                 howto manager.      (line  751)
+* BFD_RELOC_PPC64_TLSLE:                 howto manager.      (line  752)
+* BFD_RELOC_PPC64_TLSM:                  howto manager.      (line  754)
+* BFD_RELOC_PPC64_TLSML:                 howto manager.      (line  755)
+* BFD_RELOC_PPC64_TLS_PCREL:             howto manager.      (line  778)
+* BFD_RELOC_PPC64_TOC:                   howto manager.      (line  670)
+* BFD_RELOC_PPC64_TOC16_DS:              howto manager.      (line  682)
+* BFD_RELOC_PPC64_TOC16_HA:              howto manager.      (line  669)
+* BFD_RELOC_PPC64_TOC16_HI:              howto manager.      (line  668)
+* BFD_RELOC_PPC64_TOC16_LO:              howto manager.      (line  667)
+* BFD_RELOC_PPC64_TOC16_LO_DS:           howto manager.      (line  683)
+* BFD_RELOC_PPC64_TPREL16_DS:            howto manager.      (line  756)
+* BFD_RELOC_PPC64_TPREL16_HIGH:          howto manager.      (line  758)
+* BFD_RELOC_PPC64_TPREL16_HIGHA:         howto manager.      (line  759)
+* BFD_RELOC_PPC64_TPREL16_HIGHER:        howto manager.      (line  760)
+* BFD_RELOC_PPC64_TPREL16_HIGHERA:       howto manager.      (line  761)
+* BFD_RELOC_PPC64_TPREL16_HIGHEST:       howto manager.      (line  762)
+* BFD_RELOC_PPC64_TPREL16_HIGHESTA:      howto manager.      (line  763)
+* BFD_RELOC_PPC64_TPREL16_LO_DS:         howto manager.      (line  757)
+* BFD_RELOC_PPC64_TPREL34:               howto manager.      (line  772)
+* BFD_RELOC_PPC_16DX_HA:                 howto manager.      (line  660)
+* BFD_RELOC_PPC_B16:                     howto manager.      (line  616)
+* BFD_RELOC_PPC_B16_BRNTAKEN:            howto manager.      (line  618)
+* BFD_RELOC_PPC_B16_BRTAKEN:             howto manager.      (line  617)
+* BFD_RELOC_PPC_B26:                     howto manager.      (line  611)
+* BFD_RELOC_PPC_BA16:                    howto manager.      (line  619)
+* BFD_RELOC_PPC_BA16_BRNTAKEN:           howto manager.      (line  621)
+* BFD_RELOC_PPC_BA16_BRTAKEN:            howto manager.      (line  620)
+* BFD_RELOC_PPC_BA26:                    howto manager.      (line  612)
+* BFD_RELOC_PPC_COPY:                    howto manager.      (line  622)
+* BFD_RELOC_PPC_DTPMOD:                  howto manager.      (line  723)
+* BFD_RELOC_PPC_DTPREL:                  howto manager.      (line  733)
+* BFD_RELOC_PPC_DTPREL16:                howto manager.      (line  729)
+* BFD_RELOC_PPC_DTPREL16_HA:             howto manager.      (line  732)
+* BFD_RELOC_PPC_DTPREL16_HI:             howto manager.      (line  731)
+* BFD_RELOC_PPC_DTPREL16_LO:             howto manager.      (line  730)
+* BFD_RELOC_PPC_EMB_BIT_FLD:             howto manager.      (line  641)
+* BFD_RELOC_PPC_EMB_MRKREF:              howto manager.      (line  636)
+* BFD_RELOC_PPC_EMB_NADDR16:             howto manager.      (line  628)
+* BFD_RELOC_PPC_EMB_NADDR16_HA:          howto manager.      (line  631)
+* BFD_RELOC_PPC_EMB_NADDR16_HI:          howto manager.      (line  630)
+* BFD_RELOC_PPC_EMB_NADDR16_LO:          howto manager.      (line  629)
+* BFD_RELOC_PPC_EMB_NADDR32:             howto manager.      (line  627)
+* BFD_RELOC_PPC_EMB_RELSDA:              howto manager.      (line  642)
+* BFD_RELOC_PPC_EMB_RELSEC16:            howto manager.      (line  637)
+* BFD_RELOC_PPC_EMB_RELST_HA:            howto manager.      (line  640)
+* BFD_RELOC_PPC_EMB_RELST_HI:            howto manager.      (line  639)
+* BFD_RELOC_PPC_EMB_RELST_LO:            howto manager.      (line  638)
+* BFD_RELOC_PPC_EMB_SDA21:               howto manager.      (line  635)
+* BFD_RELOC_PPC_EMB_SDA2I16:             howto manager.      (line  633)
+* BFD_RELOC_PPC_EMB_SDA2REL:             howto manager.      (line  634)
+* BFD_RELOC_PPC_EMB_SDAI16:              howto manager.      (line  632)
+* BFD_RELOC_PPC_GLOB_DAT:                howto manager.      (line  623)
+* BFD_RELOC_PPC_GOT_DTPREL16:            howto manager.      (line  746)
+* BFD_RELOC_PPC_GOT_DTPREL16_HA:         howto manager.      (line  749)
+* BFD_RELOC_PPC_GOT_DTPREL16_HI:         howto manager.      (line  748)
+* BFD_RELOC_PPC_GOT_DTPREL16_LO:         howto manager.      (line  747)
+* BFD_RELOC_PPC_GOT_TLSGD16:             howto manager.      (line  734)
+* BFD_RELOC_PPC_GOT_TLSGD16_HA:          howto manager.      (line  737)
+* BFD_RELOC_PPC_GOT_TLSGD16_HI:          howto manager.      (line  736)
+* BFD_RELOC_PPC_GOT_TLSGD16_LO:          howto manager.      (line  735)
+* BFD_RELOC_PPC_GOT_TLSLD16:             howto manager.      (line  738)
+* BFD_RELOC_PPC_GOT_TLSLD16_HA:          howto manager.      (line  741)
+* BFD_RELOC_PPC_GOT_TLSLD16_HI:          howto manager.      (line  740)
+* BFD_RELOC_PPC_GOT_TLSLD16_LO:          howto manager.      (line  739)
+* BFD_RELOC_PPC_GOT_TPREL16:             howto manager.      (line  742)
+* BFD_RELOC_PPC_GOT_TPREL16_HA:          howto manager.      (line  745)
+* BFD_RELOC_PPC_GOT_TPREL16_HI:          howto manager.      (line  744)
+* BFD_RELOC_PPC_GOT_TPREL16_LO:          howto manager.      (line  743)
+* BFD_RELOC_PPC_JMP_SLOT:                howto manager.      (line  624)
+* BFD_RELOC_PPC_LOCAL24PC:               howto manager.      (line  626)
+* BFD_RELOC_PPC_NEG:                     howto manager.      (line  662)
+* BFD_RELOC_PPC_REL16DX_HA:              howto manager.      (line  661)
+* BFD_RELOC_PPC_RELATIVE:                howto manager.      (line  625)
+* BFD_RELOC_PPC_TLS:                     howto manager.      (line  716)
+* BFD_RELOC_PPC_TLSGD:                   howto manager.      (line  717)
+* BFD_RELOC_PPC_TLSIE:                   howto manager.      (line  720)
+* BFD_RELOC_PPC_TLSLD:                   howto manager.      (line  718)
+* BFD_RELOC_PPC_TLSLE:                   howto manager.      (line  719)
+* BFD_RELOC_PPC_TLSM:                    howto manager.      (line  721)
+* BFD_RELOC_PPC_TLSML:                   howto manager.      (line  722)
+* BFD_RELOC_PPC_TOC16:                   howto manager.      (line  613)
+* BFD_RELOC_PPC_TOC16_HI:                howto manager.      (line  615)
+* BFD_RELOC_PPC_TOC16_LO:                howto manager.      (line  614)
+* BFD_RELOC_PPC_TPREL:                   howto manager.      (line  728)
+* BFD_RELOC_PPC_TPREL16:                 howto manager.      (line  724)
+* BFD_RELOC_PPC_TPREL16_HA:              howto manager.      (line  727)
+* BFD_RELOC_PPC_TPREL16_HI:              howto manager.      (line  726)
+* BFD_RELOC_PPC_TPREL16_LO:              howto manager.      (line  725)
+* BFD_RELOC_PPC_VLE_HA16A:               howto manager.      (line  650)
+* BFD_RELOC_PPC_VLE_HA16D:               howto manager.      (line  651)
+* BFD_RELOC_PPC_VLE_HI16A:               howto manager.      (line  648)
+* BFD_RELOC_PPC_VLE_HI16D:               howto manager.      (line  649)
+* BFD_RELOC_PPC_VLE_LO16A:               howto manager.      (line  646)
+* BFD_RELOC_PPC_VLE_LO16D:               howto manager.      (line  647)
+* BFD_RELOC_PPC_VLE_REL15:               howto manager.      (line  644)
+* BFD_RELOC_PPC_VLE_REL24:               howto manager.      (line  645)
+* BFD_RELOC_PPC_VLE_REL8:                howto manager.      (line  643)
+* BFD_RELOC_PPC_VLE_SDA21:               howto manager.      (line  652)
+* BFD_RELOC_PPC_VLE_SDA21_LO:            howto manager.      (line  653)
+* BFD_RELOC_PPC_VLE_SDAREL_HA16A:        howto manager.      (line  658)
+* BFD_RELOC_PPC_VLE_SDAREL_HA16D:        howto manager.      (line  659)
+* BFD_RELOC_PPC_VLE_SDAREL_HI16A:        howto manager.      (line  656)
+* BFD_RELOC_PPC_VLE_SDAREL_HI16D:        howto manager.      (line  657)
+* BFD_RELOC_PPC_VLE_SDAREL_LO16A:        howto manager.      (line  654)
+* BFD_RELOC_PPC_VLE_SDAREL_LO16D:        howto manager.      (line  655)
+* BFD_RELOC_PRU_16_PMEM:                 howto manager.      (line 2485)
+* BFD_RELOC_PRU_32_PMEM:                 howto manager.      (line 2484)
+* BFD_RELOC_PRU_GNU_DIFF16:              howto manager.      (line 2489)
+* BFD_RELOC_PRU_GNU_DIFF16_PMEM:         howto manager.      (line 2491)
+* BFD_RELOC_PRU_GNU_DIFF32:              howto manager.      (line 2490)
+* BFD_RELOC_PRU_GNU_DIFF32_PMEM:         howto manager.      (line 2492)
+* BFD_RELOC_PRU_GNU_DIFF8:               howto manager.      (line 2488)
+* BFD_RELOC_PRU_LDI32:                   howto manager.      (line 2476)
+* BFD_RELOC_PRU_S10_PCREL:               howto manager.      (line 2480)
+* BFD_RELOC_PRU_U16:                     howto manager.      (line 2472)
+* BFD_RELOC_PRU_U16_PMEMIMM:             howto manager.      (line 2474)
+* BFD_RELOC_PRU_U8_PCREL:                howto manager.      (line 2482)
+* BFD_RELOC_RELC:                        howto manager.      (line 2429)
+* BFD_RELOC_RISCV_32_PCREL:              howto manager.      (line 1895)
+* BFD_RELOC_RISCV_ADD16:                 howto manager.      (line 1864)
+* BFD_RELOC_RISCV_ADD32:                 howto manager.      (line 1865)
+* BFD_RELOC_RISCV_ADD64:                 howto manager.      (line 1866)
+* BFD_RELOC_RISCV_ADD8:                  howto manager.      (line 1863)
+* BFD_RELOC_RISCV_ALIGN:                 howto manager.      (line 1885)
+* BFD_RELOC_RISCV_CALL:                  howto manager.      (line 1861)
+* BFD_RELOC_RISCV_CALL_PLT:              howto manager.      (line 1862)
+* BFD_RELOC_RISCV_CFA:                   howto manager.      (line 1889)
+* BFD_RELOC_RISCV_GOT_HI20:              howto manager.      (line 1871)
+* BFD_RELOC_RISCV_GPREL12_I:             howto manager.      (line 1855)
+* BFD_RELOC_RISCV_GPREL12_S:             howto manager.      (line 1856)
+* BFD_RELOC_RISCV_HI20:                  howto manager.      (line 1849)
+* BFD_RELOC_RISCV_JMP:                   howto manager.      (line 1874)
+* BFD_RELOC_RISCV_LO12_I:                howto manager.      (line 1853)
+* BFD_RELOC_RISCV_LO12_S:                howto manager.      (line 1854)
+* BFD_RELOC_RISCV_PCREL_HI20:            howto manager.      (line 1850)
+* BFD_RELOC_RISCV_PCREL_LO12_I:          howto manager.      (line 1851)
+* BFD_RELOC_RISCV_PCREL_LO12_S:          howto manager.      (line 1852)
+* BFD_RELOC_RISCV_RELAX:                 howto manager.      (line 1888)
+* BFD_RELOC_RISCV_RVC_BRANCH:            howto manager.      (line 1886)
+* BFD_RELOC_RISCV_RVC_JUMP:              howto manager.      (line 1887)
+* BFD_RELOC_RISCV_SET16:                 howto manager.      (line 1893)
+* BFD_RELOC_RISCV_SET32:                 howto manager.      (line 1894)
+* BFD_RELOC_RISCV_SET6:                  howto manager.      (line 1891)
+* BFD_RELOC_RISCV_SET8:                  howto manager.      (line 1892)
+* BFD_RELOC_RISCV_SET_ULEB128:           howto manager.      (line 1896)
+* BFD_RELOC_RISCV_SUB16:                 howto manager.      (line 1868)
+* BFD_RELOC_RISCV_SUB32:                 howto manager.      (line 1869)
+* BFD_RELOC_RISCV_SUB6:                  howto manager.      (line 1890)
+* BFD_RELOC_RISCV_SUB64:                 howto manager.      (line 1870)
+* BFD_RELOC_RISCV_SUB8:                  howto manager.      (line 1867)
+* BFD_RELOC_RISCV_SUB_ULEB128:           howto manager.      (line 1897)
+* BFD_RELOC_RISCV_TLSDESC_ADD_LO12:      howto manager.      (line 1883)
+* BFD_RELOC_RISCV_TLSDESC_CALL:          howto manager.      (line 1884)
+* BFD_RELOC_RISCV_TLSDESC_HI20:          howto manager.      (line 1881)
+* BFD_RELOC_RISCV_TLSDESC_LOAD_LO12:     howto manager.      (line 1882)
+* BFD_RELOC_RISCV_TLS_DTPMOD32:          howto manager.      (line 1875)
+* BFD_RELOC_RISCV_TLS_DTPMOD64:          howto manager.      (line 1877)
+* BFD_RELOC_RISCV_TLS_DTPREL32:          howto manager.      (line 1876)
+* BFD_RELOC_RISCV_TLS_DTPREL64:          howto manager.      (line 1878)
+* BFD_RELOC_RISCV_TLS_GD_HI20:           howto manager.      (line 1873)
+* BFD_RELOC_RISCV_TLS_GOT_HI20:          howto manager.      (line 1872)
+* BFD_RELOC_RISCV_TLS_TPREL32:           howto manager.      (line 1879)
+* BFD_RELOC_RISCV_TLS_TPREL64:           howto manager.      (line 1880)
+* BFD_RELOC_RISCV_TPREL_ADD:             howto manager.      (line 1860)
+* BFD_RELOC_RISCV_TPREL_HI20:            howto manager.      (line 1857)
+* BFD_RELOC_RISCV_TPREL_LO12_I:          howto manager.      (line 1858)
+* BFD_RELOC_RISCV_TPREL_LO12_S:          howto manager.      (line 1859)
+* BFD_RELOC_RL78_16U:                    howto manager.      (line 1907)
+* BFD_RELOC_RL78_16_OP:                  howto manager.      (line 1903)
+* BFD_RELOC_RL78_24U:                    howto manager.      (line 1908)
+* BFD_RELOC_RL78_24_OP:                  howto manager.      (line 1904)
+* BFD_RELOC_RL78_32_OP:                  howto manager.      (line 1905)
+* BFD_RELOC_RL78_8U:                     howto manager.      (line 1906)
+* BFD_RELOC_RL78_ABS16:                  howto manager.      (line 1920)
+* BFD_RELOC_RL78_ABS16U:                 howto manager.      (line 1924)
+* BFD_RELOC_RL78_ABS16UL:                howto manager.      (line 1926)
+* BFD_RELOC_RL78_ABS16UW:                howto manager.      (line 1925)
+* BFD_RELOC_RL78_ABS16_REV:              howto manager.      (line 1921)
+* BFD_RELOC_RL78_ABS32:                  howto manager.      (line 1922)
+* BFD_RELOC_RL78_ABS32_REV:              howto manager.      (line 1923)
+* BFD_RELOC_RL78_ABS8:                   howto manager.      (line 1919)
+* BFD_RELOC_RL78_CODE:                   howto manager.      (line 1931)
+* BFD_RELOC_RL78_DIFF:                   howto manager.      (line 1910)
+* BFD_RELOC_RL78_DIR3U_PCREL:            howto manager.      (line 1909)
+* BFD_RELOC_RL78_GPRELB:                 howto manager.      (line 1911)
+* BFD_RELOC_RL78_GPRELL:                 howto manager.      (line 1913)
+* BFD_RELOC_RL78_GPRELW:                 howto manager.      (line 1912)
+* BFD_RELOC_RL78_HI16:                   howto manager.      (line 1928)
+* BFD_RELOC_RL78_HI8:                    howto manager.      (line 1929)
+* BFD_RELOC_RL78_LO16:                   howto manager.      (line 1930)
+* BFD_RELOC_RL78_NEG16:                  howto manager.      (line 1900)
+* BFD_RELOC_RL78_NEG24:                  howto manager.      (line 1901)
+* BFD_RELOC_RL78_NEG32:                  howto manager.      (line 1902)
+* BFD_RELOC_RL78_NEG8:                   howto manager.      (line 1899)
+* BFD_RELOC_RL78_OP_AND:                 howto manager.      (line 1917)
+* BFD_RELOC_RL78_OP_NEG:                 howto manager.      (line 1916)
+* BFD_RELOC_RL78_OP_SHRA:                howto manager.      (line 1918)
+* BFD_RELOC_RL78_OP_SUBTRACT:            howto manager.      (line 1915)
+* BFD_RELOC_RL78_RELAX:                  howto manager.      (line 1927)
+* BFD_RELOC_RL78_SADDR:                  howto manager.      (line 1932)
+* BFD_RELOC_RL78_SYM:                    howto manager.      (line 1914)
 * BFD_RELOC_RVA:                         howto manager.      (line   95)
-* BFD_RELOC_RX_16U:                      howto manager.      (line 1930)
-* BFD_RELOC_RX_16_OP:                    howto manager.      (line 1926)
-* BFD_RELOC_RX_24U:                      howto manager.      (line 1931)
-* BFD_RELOC_RX_24_OP:                    howto manager.      (line 1927)
-* BFD_RELOC_RX_32_OP:                    howto manager.      (line 1928)
-* BFD_RELOC_RX_8U:                       howto manager.      (line 1929)
-* BFD_RELOC_RX_ABS16:                    howto manager.      (line 1941)
-* BFD_RELOC_RX_ABS16U:                   howto manager.      (line 1945)
-* BFD_RELOC_RX_ABS16UL:                  howto manager.      (line 1947)
-* BFD_RELOC_RX_ABS16UW:                  howto manager.      (line 1946)
-* BFD_RELOC_RX_ABS16_REV:                howto manager.      (line 1942)
-* BFD_RELOC_RX_ABS32:                    howto manager.      (line 1943)
-* BFD_RELOC_RX_ABS32_REV:                howto manager.      (line 1944)
-* BFD_RELOC_RX_ABS8:                     howto manager.      (line 1940)
-* BFD_RELOC_RX_DIFF:                     howto manager.      (line 1933)
-* BFD_RELOC_RX_DIR3U_PCREL:              howto manager.      (line 1932)
-* BFD_RELOC_RX_GPRELB:                   howto manager.      (line 1934)
-* BFD_RELOC_RX_GPRELL:                   howto manager.      (line 1936)
-* BFD_RELOC_RX_GPRELW:                   howto manager.      (line 1935)
-* BFD_RELOC_RX_NEG16:                    howto manager.      (line 1923)
-* BFD_RELOC_RX_NEG24:                    howto manager.      (line 1924)
-* BFD_RELOC_RX_NEG32:                    howto manager.      (line 1925)
-* BFD_RELOC_RX_NEG8:                     howto manager.      (line 1922)
-* BFD_RELOC_RX_OP_NEG:                   howto manager.      (line 1939)
-* BFD_RELOC_RX_OP_SUBTRACT:              howto manager.      (line 1938)
-* 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_SCORE16_BRANCH:              howto manager.      (line 2051)
-* BFD_RELOC_SCORE16_JMP:                 howto manager.      (line 2049)
-* BFD_RELOC_SCORE_BCMP:                  howto manager.      (line 2053)
-* BFD_RELOC_SCORE_BRANCH:                howto manager.      (line 2043)
-* BFD_RELOC_SCORE_CALL15:                howto manager.      (line 2057)
-* BFD_RELOC_SCORE_DUMMY2:                howto manager.      (line 2040)
-* BFD_RELOC_SCORE_DUMMY_HI16:            howto manager.      (line 2058)
-* BFD_RELOC_SCORE_GOT15:                 howto manager.      (line 2055)
-* BFD_RELOC_SCORE_GOT_LO16:              howto manager.      (line 2056)
-* BFD_RELOC_SCORE_GPREL15:               howto manager.      (line 2038)
-* BFD_RELOC_SCORE_IMM30:                 howto manager.      (line 2045)
-* BFD_RELOC_SCORE_IMM32:                 howto manager.      (line 2047)
-* BFD_RELOC_SCORE_JMP:                   howto manager.      (line 2041)
-* BFD_RELOC_SH_ALIGN:                    howto manager.      (line  952)
-* BFD_RELOC_SH_CODE:                     howto manager.      (line  953)
-* BFD_RELOC_SH_COPY:                     howto manager.      (line  958)
-* BFD_RELOC_SH_COPY64:                   howto manager.      (line  983)
-* BFD_RELOC_SH_COUNT:                    howto manager.      (line  951)
-* BFD_RELOC_SH_DATA:                     howto manager.      (line  954)
-* BFD_RELOC_SH_DISP12:                   howto manager.      (line  934)
-* BFD_RELOC_SH_DISP12BY2:                howto manager.      (line  935)
-* BFD_RELOC_SH_DISP12BY4:                howto manager.      (line  936)
-* BFD_RELOC_SH_DISP12BY8:                howto manager.      (line  937)
-* BFD_RELOC_SH_DISP20:                   howto manager.      (line  938)
-* BFD_RELOC_SH_DISP20BY8:                howto manager.      (line  939)
-* BFD_RELOC_SH_FUNCDESC:                 howto manager.      (line 1026)
-* BFD_RELOC_SH_GLOB_DAT:                 howto manager.      (line  959)
-* BFD_RELOC_SH_GLOB_DAT64:               howto manager.      (line  984)
-* BFD_RELOC_SH_GOT10BY4:                 howto manager.      (line  987)
-* BFD_RELOC_SH_GOT10BY8:                 howto manager.      (line  988)
-* BFD_RELOC_SH_GOT20:                    howto manager.      (line 1020)
-* BFD_RELOC_SH_GOTFUNCDESC:              howto manager.      (line 1022)
-* BFD_RELOC_SH_GOTFUNCDESC20:            howto manager.      (line 1023)
-* BFD_RELOC_SH_GOTOFF20:                 howto manager.      (line 1021)
-* BFD_RELOC_SH_GOTOFFFUNCDESC:           howto manager.      (line 1024)
-* BFD_RELOC_SH_GOTOFFFUNCDESC20:         howto manager.      (line 1025)
-* BFD_RELOC_SH_GOTOFF_HI16:              howto manager.      (line  978)
-* BFD_RELOC_SH_GOTOFF_LOW16:             howto manager.      (line  975)
-* BFD_RELOC_SH_GOTOFF_MEDHI16:           howto manager.      (line  977)
-* BFD_RELOC_SH_GOTOFF_MEDLOW16:          howto manager.      (line  976)
-* BFD_RELOC_SH_GOTPC:                    howto manager.      (line  962)
-* BFD_RELOC_SH_GOTPC_HI16:               howto manager.      (line  982)
-* BFD_RELOC_SH_GOTPC_LOW16:              howto manager.      (line  979)
-* BFD_RELOC_SH_GOTPC_MEDHI16:            howto manager.      (line  981)
-* BFD_RELOC_SH_GOTPC_MEDLOW16:           howto manager.      (line  980)
-* BFD_RELOC_SH_GOTPLT10BY4:              howto manager.      (line  989)
-* BFD_RELOC_SH_GOTPLT10BY8:              howto manager.      (line  990)
-* BFD_RELOC_SH_GOTPLT32:                 howto manager.      (line  991)
-* BFD_RELOC_SH_GOTPLT_HI16:              howto manager.      (line  970)
-* BFD_RELOC_SH_GOTPLT_LOW16:             howto manager.      (line  967)
-* BFD_RELOC_SH_GOTPLT_MEDHI16:           howto manager.      (line  969)
-* BFD_RELOC_SH_GOTPLT_MEDLOW16:          howto manager.      (line  968)
-* BFD_RELOC_SH_GOT_HI16:                 howto manager.      (line  966)
-* BFD_RELOC_SH_GOT_LOW16:                howto manager.      (line  963)
-* BFD_RELOC_SH_GOT_MEDHI16:              howto manager.      (line  965)
-* BFD_RELOC_SH_GOT_MEDLOW16:             howto manager.      (line  964)
-* BFD_RELOC_SH_IMM3:                     howto manager.      (line  932)
-* BFD_RELOC_SH_IMM3U:                    howto manager.      (line  933)
-* BFD_RELOC_SH_IMM4:                     howto manager.      (line  940)
-* BFD_RELOC_SH_IMM4BY2:                  howto manager.      (line  941)
-* BFD_RELOC_SH_IMM4BY4:                  howto manager.      (line  942)
-* BFD_RELOC_SH_IMM8:                     howto manager.      (line  943)
-* BFD_RELOC_SH_IMM8BY2:                  howto manager.      (line  944)
-* BFD_RELOC_SH_IMM8BY4:                  howto manager.      (line  945)
-* BFD_RELOC_SH_IMMS10:                   howto manager.      (line  997)
-* BFD_RELOC_SH_IMMS10BY2:                howto manager.      (line  998)
-* BFD_RELOC_SH_IMMS10BY4:                howto manager.      (line  999)
-* BFD_RELOC_SH_IMMS10BY8:                howto manager.      (line 1000)
-* BFD_RELOC_SH_IMMS16:                   howto manager.      (line 1001)
-* BFD_RELOC_SH_IMMS6:                    howto manager.      (line  994)
-* BFD_RELOC_SH_IMMS6BY32:                howto manager.      (line  995)
-* BFD_RELOC_SH_IMMU16:                   howto manager.      (line 1002)
-* BFD_RELOC_SH_IMMU5:                    howto manager.      (line  993)
-* BFD_RELOC_SH_IMMU6:                    howto manager.      (line  996)
-* BFD_RELOC_SH_IMM_HI16:                 howto manager.      (line 1009)
-* BFD_RELOC_SH_IMM_HI16_PCREL:           howto manager.      (line 1010)
-* BFD_RELOC_SH_IMM_LOW16:                howto manager.      (line 1003)
-* BFD_RELOC_SH_IMM_LOW16_PCREL:          howto manager.      (line 1004)
-* BFD_RELOC_SH_IMM_MEDHI16:              howto manager.      (line 1007)
-* BFD_RELOC_SH_IMM_MEDHI16_PCREL:        howto manager.      (line 1008)
-* BFD_RELOC_SH_IMM_MEDLOW16:             howto manager.      (line 1005)
-* BFD_RELOC_SH_IMM_MEDLOW16_PCREL:       howto manager.      (line 1006)
-* BFD_RELOC_SH_JMP_SLOT:                 howto manager.      (line  960)
-* BFD_RELOC_SH_JMP_SLOT64:               howto manager.      (line  985)
-* BFD_RELOC_SH_LABEL:                    howto manager.      (line  955)
-* BFD_RELOC_SH_LOOP_END:                 howto manager.      (line  957)
-* BFD_RELOC_SH_LOOP_START:               howto manager.      (line  956)
-* BFD_RELOC_SH_PCDISP12BY2:              howto manager.      (line  931)
-* BFD_RELOC_SH_PCDISP8BY2:               howto manager.      (line  930)
-* BFD_RELOC_SH_PCRELIMM8BY2:             howto manager.      (line  946)
-* BFD_RELOC_SH_PCRELIMM8BY4:             howto manager.      (line  947)
-* BFD_RELOC_SH_PLT_HI16:                 howto manager.      (line  974)
-* BFD_RELOC_SH_PLT_LOW16:                howto manager.      (line  971)
-* BFD_RELOC_SH_PLT_MEDHI16:              howto manager.      (line  973)
-* BFD_RELOC_SH_PLT_MEDLOW16:             howto manager.      (line  972)
-* BFD_RELOC_SH_PT_16:                    howto manager.      (line 1011)
-* BFD_RELOC_SH_RELATIVE:                 howto manager.      (line  961)
-* BFD_RELOC_SH_RELATIVE64:               howto manager.      (line  986)
-* BFD_RELOC_SH_SHMEDIA_CODE:             howto manager.      (line  992)
-* BFD_RELOC_SH_SWITCH16:                 howto manager.      (line  948)
-* BFD_RELOC_SH_SWITCH32:                 howto manager.      (line  949)
-* BFD_RELOC_SH_TLS_DTPMOD32:             howto manager.      (line 1017)
-* BFD_RELOC_SH_TLS_DTPOFF32:             howto manager.      (line 1018)
-* BFD_RELOC_SH_TLS_GD_32:                howto manager.      (line 1012)
-* BFD_RELOC_SH_TLS_IE_32:                howto manager.      (line 1015)
-* BFD_RELOC_SH_TLS_LDO_32:               howto manager.      (line 1014)
-* BFD_RELOC_SH_TLS_LD_32:                howto manager.      (line 1013)
-* BFD_RELOC_SH_TLS_LE_32:                howto manager.      (line 1016)
-* BFD_RELOC_SH_TLS_TPOFF32:              howto manager.      (line 1019)
-* BFD_RELOC_SH_USES:                     howto manager.      (line  950)
+* BFD_RELOC_RX_16U:                      howto manager.      (line 1942)
+* BFD_RELOC_RX_16_OP:                    howto manager.      (line 1938)
+* BFD_RELOC_RX_24U:                      howto manager.      (line 1943)
+* BFD_RELOC_RX_24_OP:                    howto manager.      (line 1939)
+* BFD_RELOC_RX_32_OP:                    howto manager.      (line 1940)
+* BFD_RELOC_RX_8U:                       howto manager.      (line 1941)
+* BFD_RELOC_RX_ABS16:                    howto manager.      (line 1953)
+* BFD_RELOC_RX_ABS16U:                   howto manager.      (line 1957)
+* BFD_RELOC_RX_ABS16UL:                  howto manager.      (line 1959)
+* BFD_RELOC_RX_ABS16UW:                  howto manager.      (line 1958)
+* BFD_RELOC_RX_ABS16_REV:                howto manager.      (line 1954)
+* BFD_RELOC_RX_ABS32:                    howto manager.      (line 1955)
+* BFD_RELOC_RX_ABS32_REV:                howto manager.      (line 1956)
+* BFD_RELOC_RX_ABS8:                     howto manager.      (line 1952)
+* BFD_RELOC_RX_DIFF:                     howto manager.      (line 1945)
+* BFD_RELOC_RX_DIR3U_PCREL:              howto manager.      (line 1944)
+* BFD_RELOC_RX_GPRELB:                   howto manager.      (line 1946)
+* BFD_RELOC_RX_GPRELL:                   howto manager.      (line 1948)
+* BFD_RELOC_RX_GPRELW:                   howto manager.      (line 1947)
+* BFD_RELOC_RX_NEG16:                    howto manager.      (line 1935)
+* BFD_RELOC_RX_NEG24:                    howto manager.      (line 1936)
+* BFD_RELOC_RX_NEG32:                    howto manager.      (line 1937)
+* BFD_RELOC_RX_NEG8:                     howto manager.      (line 1934)
+* BFD_RELOC_RX_OP_NEG:                   howto manager.      (line 1951)
+* BFD_RELOC_RX_OP_SUBTRACT:              howto manager.      (line 1950)
+* BFD_RELOC_RX_RELAX:                    howto manager.      (line 1960)
+* BFD_RELOC_RX_SYM:                      howto manager.      (line 1949)
+* BFD_RELOC_S12Z_15_PCREL:               howto manager.      (line 2272)
+* BFD_RELOC_S12Z_OPR:                    howto manager.      (line 3481)
+* BFD_RELOC_SCORE16_BRANCH:              howto manager.      (line 2063)
+* BFD_RELOC_SCORE16_JMP:                 howto manager.      (line 2061)
+* BFD_RELOC_SCORE_BCMP:                  howto manager.      (line 2065)
+* BFD_RELOC_SCORE_BRANCH:                howto manager.      (line 2055)
+* BFD_RELOC_SCORE_CALL15:                howto manager.      (line 2069)
+* BFD_RELOC_SCORE_DUMMY2:                howto manager.      (line 2052)
+* BFD_RELOC_SCORE_DUMMY_HI16:            howto manager.      (line 2070)
+* BFD_RELOC_SCORE_GOT15:                 howto manager.      (line 2067)
+* BFD_RELOC_SCORE_GOT_LO16:              howto manager.      (line 2068)
+* BFD_RELOC_SCORE_GPREL15:               howto manager.      (line 2050)
+* BFD_RELOC_SCORE_IMM30:                 howto manager.      (line 2057)
+* BFD_RELOC_SCORE_IMM32:                 howto manager.      (line 2059)
+* BFD_RELOC_SCORE_JMP:                   howto manager.      (line 2053)
+* BFD_RELOC_SH_ALIGN:                    howto manager.      (line  975)
+* BFD_RELOC_SH_CODE:                     howto manager.      (line  976)
+* BFD_RELOC_SH_COPY:                     howto manager.      (line  981)
+* BFD_RELOC_SH_COPY64:                   howto manager.      (line 1006)
+* BFD_RELOC_SH_COUNT:                    howto manager.      (line  974)
+* BFD_RELOC_SH_DATA:                     howto manager.      (line  977)
+* BFD_RELOC_SH_DISP12:                   howto manager.      (line  957)
+* BFD_RELOC_SH_DISP12BY2:                howto manager.      (line  958)
+* BFD_RELOC_SH_DISP12BY4:                howto manager.      (line  959)
+* BFD_RELOC_SH_DISP12BY8:                howto manager.      (line  960)
+* BFD_RELOC_SH_DISP20:                   howto manager.      (line  961)
+* BFD_RELOC_SH_DISP20BY8:                howto manager.      (line  962)
+* BFD_RELOC_SH_FUNCDESC:                 howto manager.      (line 1049)
+* BFD_RELOC_SH_GLOB_DAT:                 howto manager.      (line  982)
+* BFD_RELOC_SH_GLOB_DAT64:               howto manager.      (line 1007)
+* BFD_RELOC_SH_GOT10BY4:                 howto manager.      (line 1010)
+* BFD_RELOC_SH_GOT10BY8:                 howto manager.      (line 1011)
+* BFD_RELOC_SH_GOT20:                    howto manager.      (line 1043)
+* BFD_RELOC_SH_GOTFUNCDESC:              howto manager.      (line 1045)
+* BFD_RELOC_SH_GOTFUNCDESC20:            howto manager.      (line 1046)
+* BFD_RELOC_SH_GOTOFF20:                 howto manager.      (line 1044)
+* BFD_RELOC_SH_GOTOFFFUNCDESC:           howto manager.      (line 1047)
+* BFD_RELOC_SH_GOTOFFFUNCDESC20:         howto manager.      (line 1048)
+* BFD_RELOC_SH_GOTOFF_HI16:              howto manager.      (line 1001)
+* BFD_RELOC_SH_GOTOFF_LOW16:             howto manager.      (line  998)
+* BFD_RELOC_SH_GOTOFF_MEDHI16:           howto manager.      (line 1000)
+* BFD_RELOC_SH_GOTOFF_MEDLOW16:          howto manager.      (line  999)
+* BFD_RELOC_SH_GOTPC:                    howto manager.      (line  985)
+* BFD_RELOC_SH_GOTPC_HI16:               howto manager.      (line 1005)
+* BFD_RELOC_SH_GOTPC_LOW16:              howto manager.      (line 1002)
+* BFD_RELOC_SH_GOTPC_MEDHI16:            howto manager.      (line 1004)
+* BFD_RELOC_SH_GOTPC_MEDLOW16:           howto manager.      (line 1003)
+* BFD_RELOC_SH_GOTPLT10BY4:              howto manager.      (line 1012)
+* BFD_RELOC_SH_GOTPLT10BY8:              howto manager.      (line 1013)
+* BFD_RELOC_SH_GOTPLT32:                 howto manager.      (line 1014)
+* BFD_RELOC_SH_GOTPLT_HI16:              howto manager.      (line  993)
+* BFD_RELOC_SH_GOTPLT_LOW16:             howto manager.      (line  990)
+* BFD_RELOC_SH_GOTPLT_MEDHI16:           howto manager.      (line  992)
+* BFD_RELOC_SH_GOTPLT_MEDLOW16:          howto manager.      (line  991)
+* BFD_RELOC_SH_GOT_HI16:                 howto manager.      (line  989)
+* BFD_RELOC_SH_GOT_LOW16:                howto manager.      (line  986)
+* BFD_RELOC_SH_GOT_MEDHI16:              howto manager.      (line  988)
+* BFD_RELOC_SH_GOT_MEDLOW16:             howto manager.      (line  987)
+* BFD_RELOC_SH_IMM3:                     howto manager.      (line  955)
+* BFD_RELOC_SH_IMM3U:                    howto manager.      (line  956)
+* BFD_RELOC_SH_IMM4:                     howto manager.      (line  963)
+* BFD_RELOC_SH_IMM4BY2:                  howto manager.      (line  964)
+* BFD_RELOC_SH_IMM4BY4:                  howto manager.      (line  965)
+* BFD_RELOC_SH_IMM8:                     howto manager.      (line  966)
+* BFD_RELOC_SH_IMM8BY2:                  howto manager.      (line  967)
+* BFD_RELOC_SH_IMM8BY4:                  howto manager.      (line  968)
+* BFD_RELOC_SH_IMMS10:                   howto manager.      (line 1020)
+* BFD_RELOC_SH_IMMS10BY2:                howto manager.      (line 1021)
+* BFD_RELOC_SH_IMMS10BY4:                howto manager.      (line 1022)
+* BFD_RELOC_SH_IMMS10BY8:                howto manager.      (line 1023)
+* BFD_RELOC_SH_IMMS16:                   howto manager.      (line 1024)
+* BFD_RELOC_SH_IMMS6:                    howto manager.      (line 1017)
+* BFD_RELOC_SH_IMMS6BY32:                howto manager.      (line 1018)
+* BFD_RELOC_SH_IMMU16:                   howto manager.      (line 1025)
+* BFD_RELOC_SH_IMMU5:                    howto manager.      (line 1016)
+* BFD_RELOC_SH_IMMU6:                    howto manager.      (line 1019)
+* BFD_RELOC_SH_IMM_HI16:                 howto manager.      (line 1032)
+* BFD_RELOC_SH_IMM_HI16_PCREL:           howto manager.      (line 1033)
+* BFD_RELOC_SH_IMM_LOW16:                howto manager.      (line 1026)
+* BFD_RELOC_SH_IMM_LOW16_PCREL:          howto manager.      (line 1027)
+* BFD_RELOC_SH_IMM_MEDHI16:              howto manager.      (line 1030)
+* BFD_RELOC_SH_IMM_MEDHI16_PCREL:        howto manager.      (line 1031)
+* BFD_RELOC_SH_IMM_MEDLOW16:             howto manager.      (line 1028)
+* BFD_RELOC_SH_IMM_MEDLOW16_PCREL:       howto manager.      (line 1029)
+* BFD_RELOC_SH_JMP_SLOT:                 howto manager.      (line  983)
+* BFD_RELOC_SH_JMP_SLOT64:               howto manager.      (line 1008)
+* BFD_RELOC_SH_LABEL:                    howto manager.      (line  978)
+* BFD_RELOC_SH_LOOP_END:                 howto manager.      (line  980)
+* BFD_RELOC_SH_LOOP_START:               howto manager.      (line  979)
+* BFD_RELOC_SH_PCDISP12BY2:              howto manager.      (line  954)
+* BFD_RELOC_SH_PCDISP8BY2:               howto manager.      (line  953)
+* BFD_RELOC_SH_PCRELIMM8BY2:             howto manager.      (line  969)
+* BFD_RELOC_SH_PCRELIMM8BY4:             howto manager.      (line  970)
+* BFD_RELOC_SH_PLT_HI16:                 howto manager.      (line  997)
+* BFD_RELOC_SH_PLT_LOW16:                howto manager.      (line  994)
+* BFD_RELOC_SH_PLT_MEDHI16:              howto manager.      (line  996)
+* BFD_RELOC_SH_PLT_MEDLOW16:             howto manager.      (line  995)
+* BFD_RELOC_SH_PT_16:                    howto manager.      (line 1034)
+* BFD_RELOC_SH_RELATIVE:                 howto manager.      (line  984)
+* BFD_RELOC_SH_RELATIVE64:               howto manager.      (line 1009)
+* BFD_RELOC_SH_SHMEDIA_CODE:             howto manager.      (line 1015)
+* BFD_RELOC_SH_SWITCH16:                 howto manager.      (line  971)
+* BFD_RELOC_SH_SWITCH32:                 howto manager.      (line  972)
+* BFD_RELOC_SH_TLS_DTPMOD32:             howto manager.      (line 1040)
+* BFD_RELOC_SH_TLS_DTPOFF32:             howto manager.      (line 1041)
+* BFD_RELOC_SH_TLS_GD_32:                howto manager.      (line 1035)
+* BFD_RELOC_SH_TLS_IE_32:                howto manager.      (line 1038)
+* BFD_RELOC_SH_TLS_LDO_32:               howto manager.      (line 1037)
+* BFD_RELOC_SH_TLS_LD_32:                howto manager.      (line 1036)
+* BFD_RELOC_SH_TLS_LE_32:                howto manager.      (line 1039)
+* BFD_RELOC_SH_TLS_TPOFF32:              howto manager.      (line 1042)
+* BFD_RELOC_SH_USES:                     howto manager.      (line  973)
 * BFD_RELOC_SIZE32:                      howto manager.      (line   67)
 * BFD_RELOC_SIZE64:                      howto manager.      (line   68)
 * BFD_RELOC_SPARC13:                     howto manager.      (line  121)
@@ -14192,283 +14216,292 @@ BFD Index
 * BFD_RELOC_SPU_PCREL9b:                 howto manager.      (line  211)
 * BFD_RELOC_SPU_PPU32:                   howto manager.      (line  215)
 * BFD_RELOC_SPU_PPU64:                   howto manager.      (line  216)
-* BFD_RELOC_THUMB_PCREL_BFCSEL:          howto manager.      (line  782)
-* BFD_RELOC_THUMB_PCREL_BLX:             howto manager.      (line  771)
-* BFD_RELOC_THUMB_PCREL_BRANCH12:        howto manager.      (line  794)
-* BFD_RELOC_THUMB_PCREL_BRANCH20:        howto manager.      (line  795)
-* BFD_RELOC_THUMB_PCREL_BRANCH23:        howto manager.      (line  796)
-* BFD_RELOC_THUMB_PCREL_BRANCH25:        howto manager.      (line  797)
-* BFD_RELOC_THUMB_PCREL_BRANCH5:         howto manager.      (line  780)
-* BFD_RELOC_THUMB_PCREL_BRANCH7:         howto manager.      (line  792)
-* BFD_RELOC_THUMB_PCREL_BRANCH9:         howto manager.      (line  793)
-* BFD_RELOC_TIC30_LDP:                   howto manager.      (line 1549)
-* BFD_RELOC_TIC54X_16_OF_23:             howto manager.      (line 1563)
-* BFD_RELOC_TIC54X_23:                   howto manager.      (line 1561)
-* 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_THUMB_PCREL_BFCSEL:          howto manager.      (line  805)
+* BFD_RELOC_THUMB_PCREL_BLX:             howto manager.      (line  794)
+* BFD_RELOC_THUMB_PCREL_BRANCH12:        howto manager.      (line  817)
+* BFD_RELOC_THUMB_PCREL_BRANCH20:        howto manager.      (line  818)
+* BFD_RELOC_THUMB_PCREL_BRANCH23:        howto manager.      (line  819)
+* BFD_RELOC_THUMB_PCREL_BRANCH25:        howto manager.      (line  820)
+* BFD_RELOC_THUMB_PCREL_BRANCH5:         howto manager.      (line  803)
+* BFD_RELOC_THUMB_PCREL_BRANCH7:         howto manager.      (line  815)
+* BFD_RELOC_THUMB_PCREL_BRANCH9:         howto manager.      (line  816)
+* BFD_RELOC_TIC30_LDP:                   howto manager.      (line 1560)
+* BFD_RELOC_TIC54X_16_OF_23:             howto manager.      (line 1574)
+* BFD_RELOC_TIC54X_23:                   howto manager.      (line 1572)
+* BFD_RELOC_TIC54X_MS7_OF_23:            howto manager.      (line 1578)
+* BFD_RELOC_TIC54X_PARTLS7:              howto manager.      (line 1564)
+* BFD_RELOC_TIC54X_PARTMS9:              howto manager.      (line 1568)
+* BFD_RELOC_TILEGX_BROFF_X1:             howto manager.      (line 3277)
+* BFD_RELOC_TILEGX_COPY:                 howto manager.      (line 3273)
+* BFD_RELOC_TILEGX_DEST_IMM8_X1:         howto manager.      (line 3284)
+* BFD_RELOC_TILEGX_GLOB_DAT:             howto manager.      (line 3274)
+* BFD_RELOC_TILEGX_HW0:                  howto manager.      (line 3266)
+* BFD_RELOC_TILEGX_HW0_LAST:             howto manager.      (line 3270)
+* BFD_RELOC_TILEGX_HW1:                  howto manager.      (line 3267)
+* BFD_RELOC_TILEGX_HW1_LAST:             howto manager.      (line 3271)
+* BFD_RELOC_TILEGX_HW2:                  howto manager.      (line 3268)
+* BFD_RELOC_TILEGX_HW2_LAST:             howto manager.      (line 3272)
+* BFD_RELOC_TILEGX_HW3:                  howto manager.      (line 3269)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0:         howto manager.      (line 3293)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_GOT:     howto manager.      (line 3321)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST:    howto manager.      (line 3301)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_GOT: howto manager.     (line 3329)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_PCREL: howto manager.   (line 3315)
 * 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 3349)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_GD: howto manager.  (line 3343)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_IE: howto manager.  (line 3355)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_LAST_TLS_LE: howto manager.  (line 3339)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_PCREL:   howto manager.      (line 3307)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_PLT_PCREL: howto manager.    (line 3323)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_GD:  howto manager.      (line 3335)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_IE:  howto manager.      (line 3347)
+* BFD_RELOC_TILEGX_IMM16_X0_HW0_TLS_LE:  howto manager.      (line 3337)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1:         howto manager.      (line 3295)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST:    howto manager.      (line 3303)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_GOT: howto manager.     (line 3331)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_PCREL: howto manager.   (line 3317)
 * 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 3351)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_GD: howto manager.  (line 3345)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_IE: howto manager.  (line 3357)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_LAST_TLS_LE: howto manager.  (line 3341)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_PCREL:   howto manager.      (line 3309)
+* BFD_RELOC_TILEGX_IMM16_X0_HW1_PLT_PCREL: howto manager.    (line 3325)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2:         howto manager.      (line 3297)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST:    howto manager.      (line 3305)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2_LAST_PCREL: howto manager.   (line 3319)
 * 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 3353)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2_PCREL:   howto manager.      (line 3311)
+* BFD_RELOC_TILEGX_IMM16_X0_HW2_PLT_PCREL: howto manager.    (line 3327)
+* BFD_RELOC_TILEGX_IMM16_X0_HW3:         howto manager.      (line 3299)
+* BFD_RELOC_TILEGX_IMM16_X0_HW3_PCREL:   howto manager.      (line 3313)
+* BFD_RELOC_TILEGX_IMM16_X0_HW3_PLT_PCREL: howto manager.    (line 3333)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0:         howto manager.      (line 3294)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_GOT:     howto manager.      (line 3322)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST:    howto manager.      (line 3302)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_GOT: howto manager.     (line 3330)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_PCREL: howto manager.   (line 3316)
 * 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 3350)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_GD: howto manager.  (line 3344)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_IE: howto manager.  (line 3356)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_LAST_TLS_LE: howto manager.  (line 3340)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_PCREL:   howto manager.      (line 3308)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_PLT_PCREL: howto manager.    (line 3324)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_GD:  howto manager.      (line 3336)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_IE:  howto manager.      (line 3348)
+* BFD_RELOC_TILEGX_IMM16_X1_HW0_TLS_LE:  howto manager.      (line 3338)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1:         howto manager.      (line 3296)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST:    howto manager.      (line 3304)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_GOT: howto manager.     (line 3332)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_PCREL: howto manager.   (line 3318)
 * 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 3352)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_GD: howto manager.  (line 3346)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_IE: howto manager.  (line 3358)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_LAST_TLS_LE: howto manager.  (line 3342)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_PCREL:   howto manager.      (line 3310)
+* BFD_RELOC_TILEGX_IMM16_X1_HW1_PLT_PCREL: howto manager.    (line 3326)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2:         howto manager.      (line 3298)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST:    howto manager.      (line 3306)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2_LAST_PCREL: howto manager.   (line 3320)
 * 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)
-* 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)
-* BFD_RELOC_V850_16_S1:                  howto manager.      (line 1517)
-* BFD_RELOC_V850_16_SPLIT_OFFSET:        howto manager.      (line 1515)
-* BFD_RELOC_V850_17_PCREL:               howto manager.      (line 1507)
-* BFD_RELOC_V850_22_PCREL:               howto manager.      (line 1459)
-* BFD_RELOC_V850_22_PLT_PCREL:           howto manager.      (line 1529)
-* BFD_RELOC_V850_23:                     howto manager.      (line 1509)
-* BFD_RELOC_V850_32_ABS:                 howto manager.      (line 1513)
-* BFD_RELOC_V850_32_GOT:                 howto manager.      (line 1527)
-* BFD_RELOC_V850_32_GOTOFF:              howto manager.      (line 1543)
-* BFD_RELOC_V850_32_GOTPCREL:            howto manager.      (line 1523)
-* BFD_RELOC_V850_32_PCREL:               howto manager.      (line 1511)
-* BFD_RELOC_V850_32_PLT_PCREL:           howto manager.      (line 1531)
-* BFD_RELOC_V850_9_PCREL:                howto manager.      (line 1457)
-* BFD_RELOC_V850_ALIGN:                  howto manager.      (line 1500)
-* BFD_RELOC_V850_CALLT_15_16_OFFSET:     howto manager.      (line 1521)
-* BFD_RELOC_V850_CALLT_16_16_OFFSET:     howto manager.      (line 1494)
-* BFD_RELOC_V850_CALLT_6_7_OFFSET:       howto manager.      (line 1492)
-* BFD_RELOC_V850_CODE:                   howto manager.      (line 1545)
-* BFD_RELOC_V850_COPY:                   howto manager.      (line 1533)
-* BFD_RELOC_V850_DATA:                   howto manager.      (line 1547)
-* BFD_RELOC_V850_GLOB_DAT:               howto manager.      (line 1535)
-* BFD_RELOC_V850_JMP_SLOT:               howto manager.      (line 1537)
-* BFD_RELOC_V850_LO16_S1:                howto manager.      (line 1519)
-* BFD_RELOC_V850_LO16_SPLIT_OFFSET:      howto manager.      (line 1502)
-* BFD_RELOC_V850_LONGCALL:               howto manager.      (line 1496)
-* BFD_RELOC_V850_LONGJUMP:               howto manager.      (line 1498)
-* BFD_RELOC_V850_RELATIVE:               howto manager.      (line 1539)
-* BFD_RELOC_V850_SDA_15_16_OFFSET:       howto manager.      (line 1463)
-* BFD_RELOC_V850_SDA_16_16_OFFSET:       howto manager.      (line 1461)
-* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager.      (line 1486)
-* BFD_RELOC_V850_TDA_16_16_OFFSET:       howto manager.      (line 1479)
-* BFD_RELOC_V850_TDA_4_4_OFFSET:         howto manager.      (line 1484)
-* BFD_RELOC_V850_TDA_4_5_OFFSET:         howto manager.      (line 1481)
-* BFD_RELOC_V850_TDA_6_8_OFFSET:         howto manager.      (line 1471)
-* BFD_RELOC_V850_TDA_7_7_OFFSET:         howto manager.      (line 1477)
-* BFD_RELOC_V850_TDA_7_8_OFFSET:         howto manager.      (line 1474)
-* BFD_RELOC_V850_ZDA_15_16_OFFSET:       howto manager.      (line 1468)
-* BFD_RELOC_V850_ZDA_16_16_OFFSET:       howto manager.      (line 1466)
-* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager.      (line 1489)
-* 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_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)
+                                                             (line 3354)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2_PCREL:   howto manager.      (line 3312)
+* BFD_RELOC_TILEGX_IMM16_X1_HW2_PLT_PCREL: howto manager.    (line 3328)
+* BFD_RELOC_TILEGX_IMM16_X1_HW3:         howto manager.      (line 3300)
+* BFD_RELOC_TILEGX_IMM16_X1_HW3_PCREL:   howto manager.      (line 3314)
+* BFD_RELOC_TILEGX_IMM16_X1_HW3_PLT_PCREL: howto manager.    (line 3334)
+* BFD_RELOC_TILEGX_IMM8_X0:              howto manager.      (line 3280)
+* BFD_RELOC_TILEGX_IMM8_X0_TLS_ADD:      howto manager.      (line 3371)
+* BFD_RELOC_TILEGX_IMM8_X0_TLS_GD_ADD:   howto manager.      (line 3366)
+* BFD_RELOC_TILEGX_IMM8_X1:              howto manager.      (line 3282)
+* BFD_RELOC_TILEGX_IMM8_X1_TLS_ADD:      howto manager.      (line 3372)
+* BFD_RELOC_TILEGX_IMM8_X1_TLS_GD_ADD:   howto manager.      (line 3367)
+* BFD_RELOC_TILEGX_IMM8_Y0:              howto manager.      (line 3281)
+* BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD:      howto manager.      (line 3373)
+* BFD_RELOC_TILEGX_IMM8_Y0_TLS_GD_ADD:   howto manager.      (line 3368)
+* BFD_RELOC_TILEGX_IMM8_Y1:              howto manager.      (line 3283)
+* BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD:      howto manager.      (line 3374)
+* BFD_RELOC_TILEGX_IMM8_Y1_TLS_GD_ADD:   howto manager.      (line 3369)
+* BFD_RELOC_TILEGX_JMP_SLOT:             howto manager.      (line 3275)
+* BFD_RELOC_TILEGX_JUMPOFF_X1:           howto manager.      (line 3278)
+* BFD_RELOC_TILEGX_JUMPOFF_X1_PLT:       howto manager.      (line 3279)
+* BFD_RELOC_TILEGX_MF_IMM14_X1:          howto manager.      (line 3286)
+* BFD_RELOC_TILEGX_MMEND_X0:             howto manager.      (line 3288)
+* BFD_RELOC_TILEGX_MMSTART_X0:           howto manager.      (line 3287)
+* BFD_RELOC_TILEGX_MT_IMM14_X1:          howto manager.      (line 3285)
+* BFD_RELOC_TILEGX_RELATIVE:             howto manager.      (line 3276)
+* BFD_RELOC_TILEGX_SHAMT_X0:             howto manager.      (line 3289)
+* BFD_RELOC_TILEGX_SHAMT_X1:             howto manager.      (line 3290)
+* BFD_RELOC_TILEGX_SHAMT_Y0:             howto manager.      (line 3291)
+* BFD_RELOC_TILEGX_SHAMT_Y1:             howto manager.      (line 3292)
+* BFD_RELOC_TILEGX_TLS_DTPMOD32:         howto manager.      (line 3362)
+* BFD_RELOC_TILEGX_TLS_DTPMOD64:         howto manager.      (line 3359)
+* BFD_RELOC_TILEGX_TLS_DTPOFF32:         howto manager.      (line 3363)
+* BFD_RELOC_TILEGX_TLS_DTPOFF64:         howto manager.      (line 3360)
+* BFD_RELOC_TILEGX_TLS_GD_CALL:          howto manager.      (line 3365)
+* BFD_RELOC_TILEGX_TLS_IE_LOAD:          howto manager.      (line 3370)
+* BFD_RELOC_TILEGX_TLS_TPOFF32:          howto manager.      (line 3364)
+* BFD_RELOC_TILEGX_TLS_TPOFF64:          howto manager.      (line 3361)
+* BFD_RELOC_TILEPRO_BROFF_X1:            howto manager.      (line 3190)
+* BFD_RELOC_TILEPRO_COPY:                howto manager.      (line 3186)
+* BFD_RELOC_TILEPRO_DEST_IMM8_X1:        howto manager.      (line 3197)
+* BFD_RELOC_TILEPRO_GLOB_DAT:            howto manager.      (line 3187)
+* BFD_RELOC_TILEPRO_IMM16_X0:            howto manager.      (line 3200)
+* BFD_RELOC_TILEPRO_IMM16_X0_GOT:        howto manager.      (line 3216)
+* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HA:     howto manager.      (line 3222)
+* BFD_RELOC_TILEPRO_IMM16_X0_GOT_HI:     howto manager.      (line 3220)
+* BFD_RELOC_TILEPRO_IMM16_X0_GOT_LO:     howto manager.      (line 3218)
+* BFD_RELOC_TILEPRO_IMM16_X0_HA:         howto manager.      (line 3206)
+* BFD_RELOC_TILEPRO_IMM16_X0_HA_PCREL:   howto manager.      (line 3214)
+* BFD_RELOC_TILEPRO_IMM16_X0_HI:         howto manager.      (line 3204)
+* BFD_RELOC_TILEPRO_IMM16_X0_HI_PCREL:   howto manager.      (line 3212)
+* BFD_RELOC_TILEPRO_IMM16_X0_LO:         howto manager.      (line 3202)
+* BFD_RELOC_TILEPRO_IMM16_X0_LO_PCREL:   howto manager.      (line 3210)
+* BFD_RELOC_TILEPRO_IMM16_X0_PCREL:      howto manager.      (line 3208)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD:     howto manager.      (line 3238)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HA:  howto manager.      (line 3244)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_HI:  howto manager.      (line 3242)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_GD_LO:  howto manager.      (line 3240)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE:     howto manager.      (line 3246)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HA:  howto manager.      (line 3252)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_HI:  howto manager.      (line 3250)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_IE_LO:  howto manager.      (line 3248)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE:     howto manager.      (line 3257)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HA:  howto manager.      (line 3263)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_HI:  howto manager.      (line 3261)
+* BFD_RELOC_TILEPRO_IMM16_X0_TLS_LE_LO:  howto manager.      (line 3259)
+* BFD_RELOC_TILEPRO_IMM16_X1:            howto manager.      (line 3201)
+* BFD_RELOC_TILEPRO_IMM16_X1_GOT:        howto manager.      (line 3217)
+* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HA:     howto manager.      (line 3223)
+* BFD_RELOC_TILEPRO_IMM16_X1_GOT_HI:     howto manager.      (line 3221)
+* BFD_RELOC_TILEPRO_IMM16_X1_GOT_LO:     howto manager.      (line 3219)
+* BFD_RELOC_TILEPRO_IMM16_X1_HA:         howto manager.      (line 3207)
+* BFD_RELOC_TILEPRO_IMM16_X1_HA_PCREL:   howto manager.      (line 3215)
+* BFD_RELOC_TILEPRO_IMM16_X1_HI:         howto manager.      (line 3205)
+* BFD_RELOC_TILEPRO_IMM16_X1_HI_PCREL:   howto manager.      (line 3213)
+* BFD_RELOC_TILEPRO_IMM16_X1_LO:         howto manager.      (line 3203)
+* BFD_RELOC_TILEPRO_IMM16_X1_LO_PCREL:   howto manager.      (line 3211)
+* BFD_RELOC_TILEPRO_IMM16_X1_PCREL:      howto manager.      (line 3209)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD:     howto manager.      (line 3239)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HA:  howto manager.      (line 3245)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_HI:  howto manager.      (line 3243)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_GD_LO:  howto manager.      (line 3241)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE:     howto manager.      (line 3247)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HA:  howto manager.      (line 3253)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_HI:  howto manager.      (line 3251)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_IE_LO:  howto manager.      (line 3249)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE:     howto manager.      (line 3258)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HA:  howto manager.      (line 3264)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_HI:  howto manager.      (line 3262)
+* BFD_RELOC_TILEPRO_IMM16_X1_TLS_LE_LO:  howto manager.      (line 3260)
+* BFD_RELOC_TILEPRO_IMM8_X0:             howto manager.      (line 3193)
+* BFD_RELOC_TILEPRO_IMM8_X0_TLS_GD_ADD:  howto manager.      (line 3233)
+* BFD_RELOC_TILEPRO_IMM8_X1:             howto manager.      (line 3195)
+* BFD_RELOC_TILEPRO_IMM8_X1_TLS_GD_ADD:  howto manager.      (line 3234)
+* BFD_RELOC_TILEPRO_IMM8_Y0:             howto manager.      (line 3194)
+* BFD_RELOC_TILEPRO_IMM8_Y0_TLS_GD_ADD:  howto manager.      (line 3235)
+* BFD_RELOC_TILEPRO_IMM8_Y1:             howto manager.      (line 3196)
+* BFD_RELOC_TILEPRO_IMM8_Y1_TLS_GD_ADD:  howto manager.      (line 3236)
+* BFD_RELOC_TILEPRO_JMP_SLOT:            howto manager.      (line 3188)
+* BFD_RELOC_TILEPRO_JOFFLONG_X1:         howto manager.      (line 3191)
+* BFD_RELOC_TILEPRO_JOFFLONG_X1_PLT:     howto manager.      (line 3192)
+* BFD_RELOC_TILEPRO_MF_IMM15_X1:         howto manager.      (line 3199)
+* BFD_RELOC_TILEPRO_MMEND_X0:            howto manager.      (line 3225)
+* BFD_RELOC_TILEPRO_MMEND_X1:            howto manager.      (line 3227)
+* BFD_RELOC_TILEPRO_MMSTART_X0:          howto manager.      (line 3224)
+* BFD_RELOC_TILEPRO_MMSTART_X1:          howto manager.      (line 3226)
+* BFD_RELOC_TILEPRO_MT_IMM15_X1:         howto manager.      (line 3198)
+* BFD_RELOC_TILEPRO_RELATIVE:            howto manager.      (line 3189)
+* BFD_RELOC_TILEPRO_SHAMT_X0:            howto manager.      (line 3228)
+* BFD_RELOC_TILEPRO_SHAMT_X1:            howto manager.      (line 3229)
+* BFD_RELOC_TILEPRO_SHAMT_Y0:            howto manager.      (line 3230)
+* BFD_RELOC_TILEPRO_SHAMT_Y1:            howto manager.      (line 3231)
+* BFD_RELOC_TILEPRO_TLS_DTPMOD32:        howto manager.      (line 3254)
+* BFD_RELOC_TILEPRO_TLS_DTPOFF32:        howto manager.      (line 3255)
+* BFD_RELOC_TILEPRO_TLS_GD_CALL:         howto manager.      (line 3232)
+* BFD_RELOC_TILEPRO_TLS_IE_LOAD:         howto manager.      (line 3237)
+* BFD_RELOC_TILEPRO_TLS_TPOFF32:         howto manager.      (line 3256)
+* bfd_reloc_type_lookup:                 howto manager.      (line 3594)
+* BFD_RELOC_V850_16_GOT:                 howto manager.      (line 1545)
+* BFD_RELOC_V850_16_GOTOFF:              howto manager.      (line 1553)
+* BFD_RELOC_V850_16_PCREL:               howto manager.      (line 1526)
+* BFD_RELOC_V850_16_S1:                  howto manager.      (line 1538)
+* BFD_RELOC_V850_16_SPLIT_OFFSET:        howto manager.      (line 1536)
+* BFD_RELOC_V850_17_PCREL:               howto manager.      (line 1528)
+* BFD_RELOC_V850_22_PCREL:               howto manager.      (line 1480)
+* BFD_RELOC_V850_22_PLT_PCREL:           howto manager.      (line 1547)
+* BFD_RELOC_V850_23:                     howto manager.      (line 1530)
+* BFD_RELOC_V850_32_ABS:                 howto manager.      (line 1534)
+* BFD_RELOC_V850_32_GOT:                 howto manager.      (line 1546)
+* BFD_RELOC_V850_32_GOTOFF:              howto manager.      (line 1554)
+* BFD_RELOC_V850_32_GOTPCREL:            howto manager.      (line 1544)
+* BFD_RELOC_V850_32_PCREL:               howto manager.      (line 1532)
+* BFD_RELOC_V850_32_PLT_PCREL:           howto manager.      (line 1548)
+* BFD_RELOC_V850_9_PCREL:                howto manager.      (line 1478)
+* BFD_RELOC_V850_ALIGN:                  howto manager.      (line 1521)
+* BFD_RELOC_V850_CALLT_15_16_OFFSET:     howto manager.      (line 1542)
+* BFD_RELOC_V850_CALLT_16_16_OFFSET:     howto manager.      (line 1515)
+* BFD_RELOC_V850_CALLT_6_7_OFFSET:       howto manager.      (line 1513)
+* BFD_RELOC_V850_CODE:                   howto manager.      (line 1556)
+* BFD_RELOC_V850_COPY:                   howto manager.      (line 1549)
+* BFD_RELOC_V850_DATA:                   howto manager.      (line 1558)
+* BFD_RELOC_V850_GLOB_DAT:               howto manager.      (line 1550)
+* BFD_RELOC_V850_JMP_SLOT:               howto manager.      (line 1551)
+* BFD_RELOC_V850_LO16_S1:                howto manager.      (line 1540)
+* BFD_RELOC_V850_LO16_SPLIT_OFFSET:      howto manager.      (line 1523)
+* BFD_RELOC_V850_LONGCALL:               howto manager.      (line 1517)
+* BFD_RELOC_V850_LONGJUMP:               howto manager.      (line 1519)
+* BFD_RELOC_V850_RELATIVE:               howto manager.      (line 1552)
+* BFD_RELOC_V850_SDA_15_16_OFFSET:       howto manager.      (line 1484)
+* BFD_RELOC_V850_SDA_16_16_OFFSET:       howto manager.      (line 1482)
+* BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET: howto manager.      (line 1507)
+* BFD_RELOC_V850_TDA_16_16_OFFSET:       howto manager.      (line 1500)
+* BFD_RELOC_V850_TDA_4_4_OFFSET:         howto manager.      (line 1505)
+* BFD_RELOC_V850_TDA_4_5_OFFSET:         howto manager.      (line 1502)
+* BFD_RELOC_V850_TDA_6_8_OFFSET:         howto manager.      (line 1492)
+* BFD_RELOC_V850_TDA_7_7_OFFSET:         howto manager.      (line 1498)
+* BFD_RELOC_V850_TDA_7_8_OFFSET:         howto manager.      (line 1495)
+* BFD_RELOC_V850_ZDA_15_16_OFFSET:       howto manager.      (line 1489)
+* BFD_RELOC_V850_ZDA_16_16_OFFSET:       howto manager.      (line 1487)
+* BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET: howto manager.      (line 1510)
+* BFD_RELOC_VAX_GLOB_DAT:                howto manager.      (line 2431)
+* BFD_RELOC_VAX_JMP_SLOT:                howto manager.      (line 2432)
+* BFD_RELOC_VAX_RELATIVE:                howto manager.      (line 2433)
+* BFD_RELOC_VISIUM_HI16:                 howto manager.      (line 3396)
+* BFD_RELOC_VISIUM_HI16_PCREL:           howto manager.      (line 3400)
+* BFD_RELOC_VISIUM_IM16:                 howto manager.      (line 3398)
+* BFD_RELOC_VISIUM_IM16_PCREL:           howto manager.      (line 3402)
+* BFD_RELOC_VISIUM_LO16:                 howto manager.      (line 3397)
+* BFD_RELOC_VISIUM_LO16_PCREL:           howto manager.      (line 3401)
+* BFD_RELOC_VISIUM_REL16:                howto manager.      (line 3399)
+* BFD_RELOC_VPE4KMATH_DATA:              howto manager.      (line 2093)
+* BFD_RELOC_VPE4KMATH_INSN:              howto manager.      (line 2094)
+* BFD_RELOC_VTABLE_ENTRY:                howto manager.      (line 2097)
+* BFD_RELOC_VTABLE_INHERIT:              howto manager.      (line 2096)
+* BFD_RELOC_WASM32_ABS32_CODE:           howto manager.      (line 3409)
+* BFD_RELOC_WASM32_CODE_POINTER:         howto manager.      (line 3411)
+* BFD_RELOC_WASM32_COPY:                 howto manager.      (line 3410)
+* BFD_RELOC_WASM32_INDEX:                howto manager.      (line 3412)
+* BFD_RELOC_WASM32_LEB128:               howto manager.      (line 3404)
+* BFD_RELOC_WASM32_LEB128_GOT:           howto manager.      (line 3405)
+* BFD_RELOC_WASM32_LEB128_GOT_CODE:      howto manager.      (line 3406)
+* BFD_RELOC_WASM32_LEB128_PLT:           howto manager.      (line 3407)
+* BFD_RELOC_WASM32_PLT_INDEX:            howto manager.      (line 3408)
+* BFD_RELOC_WASM32_PLT_SIG:              howto manager.      (line 3413)
 * BFD_RELOC_X86_64_32S:                  howto manager.      (line  554)
+* BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC: howto manager.    (line  580)
+* BFD_RELOC_X86_64_CODE_4_GOTPCRELX:     howto manager.      (line  578)
+* BFD_RELOC_X86_64_CODE_4_GOTTPOFF:      howto manager.      (line  579)
+* BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC: howto manager.    (line  583)
+* BFD_RELOC_X86_64_CODE_5_GOTPCRELX:     howto manager.      (line  581)
+* BFD_RELOC_X86_64_CODE_5_GOTTPOFF:      howto manager.      (line  582)
+* BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC: howto manager.    (line  586)
+* BFD_RELOC_X86_64_CODE_6_GOTPCRELX:     howto manager.      (line  584)
+* BFD_RELOC_X86_64_CODE_6_GOTTPOFF:      howto manager.      (line  585)
 * BFD_RELOC_X86_64_COPY:                 howto manager.      (line  549)
 * BFD_RELOC_X86_64_DTPMOD64:             howto manager.      (line  555)
 * BFD_RELOC_X86_64_DTPOFF32:             howto manager.      (line  560)
@@ -14499,144 +14532,224 @@ BFD Index
 * BFD_RELOC_X86_64_TLSLD:                howto manager.      (line  559)
 * BFD_RELOC_X86_64_TPOFF32:              howto manager.      (line  562)
 * BFD_RELOC_X86_64_TPOFF64:              howto manager.      (line  557)
-* BFD_RELOC_XC16X_PAG:                   howto manager.      (line 2418)
-* BFD_RELOC_XC16X_POF:                   howto manager.      (line 2419)
-* BFD_RELOC_XC16X_SEG:                   howto manager.      (line 2420)
-* BFD_RELOC_XC16X_SOF:                   howto manager.      (line 2421)
-* BFD_RELOC_XGATE_24:                    howto manager.      (line 2228)
-* BFD_RELOC_XGATE_GPAGE:                 howto manager.      (line 2226)
-* BFD_RELOC_XGATE_IMM3:                  howto manager.      (line 2240)
-* BFD_RELOC_XGATE_IMM4:                  howto manager.      (line 2242)
-* BFD_RELOC_XGATE_IMM5:                  howto manager.      (line 2244)
-* BFD_RELOC_XGATE_IMM8_HI:               howto manager.      (line 2237)
-* BFD_RELOC_XGATE_IMM8_LO:               howto manager.      (line 2234)
-* BFD_RELOC_XGATE_LO16:                  howto manager.      (line 2223)
-* BFD_RELOC_XGATE_PCREL_10:              howto manager.      (line 2232)
-* BFD_RELOC_XGATE_PCREL_9:               howto manager.      (line 2230)
-* BFD_RELOC_XGATE_RL_GROUP:              howto manager.      (line 2219)
-* BFD_RELOC_XGATE_RL_JUMP:               howto manager.      (line 2216)
-* BFD_RELOC_XSTORMY16_12:                howto manager.      (line 2412)
-* 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_rename_section:                    section prototypes. (line  167)
-* bfd_scan_arch:                         Architectures.      (line  571)
-* bfd_scan_vma:                          Miscellaneous.      (line  126)
-* bfd_sections_find_if:                  section prototypes. (line  197)
+* BFD_RELOC_XGATE_24:                    howto manager.      (line 2240)
+* BFD_RELOC_XGATE_GPAGE:                 howto manager.      (line 2238)
+* BFD_RELOC_XGATE_IMM3:                  howto manager.      (line 2252)
+* BFD_RELOC_XGATE_IMM4:                  howto manager.      (line 2254)
+* BFD_RELOC_XGATE_IMM5:                  howto manager.      (line 2256)
+* BFD_RELOC_XGATE_IMM8_HI:               howto manager.      (line 2249)
+* BFD_RELOC_XGATE_IMM8_LO:               howto manager.      (line 2246)
+* BFD_RELOC_XGATE_LO16:                  howto manager.      (line 2235)
+* BFD_RELOC_XGATE_PCREL_10:              howto manager.      (line 2244)
+* BFD_RELOC_XGATE_PCREL_9:               howto manager.      (line 2242)
+* BFD_RELOC_XGATE_RL_GROUP:              howto manager.      (line 2231)
+* BFD_RELOC_XGATE_RL_JUMP:               howto manager.      (line 2228)
+* BFD_RELOC_XSTORMY16_12:                howto manager.      (line 2425)
+* BFD_RELOC_XSTORMY16_24:                howto manager.      (line 2426)
+* BFD_RELOC_XSTORMY16_FPTR16:            howto manager.      (line 2427)
+* BFD_RELOC_XSTORMY16_REL_12:            howto manager.      (line 2424)
+* BFD_RELOC_XTENSA_ASM_EXPAND:           howto manager.      (line 2568)
+* BFD_RELOC_XTENSA_ASM_SIMPLIFY:         howto manager.      (line 2572)
+* BFD_RELOC_XTENSA_DIFF16:               howto manager.      (line 2517)
+* BFD_RELOC_XTENSA_DIFF32:               howto manager.      (line 2518)
+* BFD_RELOC_XTENSA_DIFF8:                howto manager.      (line 2516)
+* BFD_RELOC_XTENSA_GLOB_DAT:             howto manager.      (line 2508)
+* BFD_RELOC_XTENSA_JMP_SLOT:             howto manager.      (line 2509)
+* BFD_RELOC_XTENSA_NDIFF16:              howto manager.      (line 2588)
+* BFD_RELOC_XTENSA_NDIFF32:              howto manager.      (line 2589)
+* BFD_RELOC_XTENSA_NDIFF8:               howto manager.      (line 2587)
+* BFD_RELOC_XTENSA_OP0:                  howto manager.      (line 2563)
+* BFD_RELOC_XTENSA_OP1:                  howto manager.      (line 2564)
+* BFD_RELOC_XTENSA_OP2:                  howto manager.      (line 2565)
+* BFD_RELOC_XTENSA_PDIFF16:              howto manager.      (line 2585)
+* BFD_RELOC_XTENSA_PDIFF32:              howto manager.      (line 2586)
+* BFD_RELOC_XTENSA_PDIFF8:               howto manager.      (line 2584)
+* BFD_RELOC_XTENSA_PLT:                  howto manager.      (line 2512)
+* BFD_RELOC_XTENSA_RELATIVE:             howto manager.      (line 2510)
+* BFD_RELOC_XTENSA_RTLD:                 howto manager.      (line 2504)
+* BFD_RELOC_XTENSA_SLOT0_ALT:            howto manager.      (line 2546)
+* BFD_RELOC_XTENSA_SLOT0_OP:             howto manager.      (line 2527)
+* BFD_RELOC_XTENSA_SLOT10_ALT:           howto manager.      (line 2556)
+* BFD_RELOC_XTENSA_SLOT10_OP:            howto manager.      (line 2537)
+* BFD_RELOC_XTENSA_SLOT11_ALT:           howto manager.      (line 2557)
+* BFD_RELOC_XTENSA_SLOT11_OP:            howto manager.      (line 2538)
+* BFD_RELOC_XTENSA_SLOT12_ALT:           howto manager.      (line 2558)
+* BFD_RELOC_XTENSA_SLOT12_OP:            howto manager.      (line 2539)
+* BFD_RELOC_XTENSA_SLOT13_ALT:           howto manager.      (line 2559)
+* BFD_RELOC_XTENSA_SLOT13_OP:            howto manager.      (line 2540)
+* BFD_RELOC_XTENSA_SLOT14_ALT:           howto manager.      (line 2560)
+* BFD_RELOC_XTENSA_SLOT14_OP:            howto manager.      (line 2541)
+* BFD_RELOC_XTENSA_SLOT1_ALT:            howto manager.      (line 2547)
+* BFD_RELOC_XTENSA_SLOT1_OP:             howto manager.      (line 2528)
+* BFD_RELOC_XTENSA_SLOT2_ALT:            howto manager.      (line 2548)
+* BFD_RELOC_XTENSA_SLOT2_OP:             howto manager.      (line 2529)
+* BFD_RELOC_XTENSA_SLOT3_ALT:            howto manager.      (line 2549)
+* BFD_RELOC_XTENSA_SLOT3_OP:             howto manager.      (line 2530)
+* BFD_RELOC_XTENSA_SLOT4_ALT:            howto manager.      (line 2550)
+* BFD_RELOC_XTENSA_SLOT4_OP:             howto manager.      (line 2531)
+* BFD_RELOC_XTENSA_SLOT5_ALT:            howto manager.      (line 2551)
+* BFD_RELOC_XTENSA_SLOT5_OP:             howto manager.      (line 2532)
+* BFD_RELOC_XTENSA_SLOT6_ALT:            howto manager.      (line 2552)
+* BFD_RELOC_XTENSA_SLOT6_OP:             howto manager.      (line 2533)
+* BFD_RELOC_XTENSA_SLOT7_ALT:            howto manager.      (line 2553)
+* BFD_RELOC_XTENSA_SLOT7_OP:             howto manager.      (line 2534)
+* BFD_RELOC_XTENSA_SLOT8_ALT:            howto manager.      (line 2554)
+* BFD_RELOC_XTENSA_SLOT8_OP:             howto manager.      (line 2535)
+* BFD_RELOC_XTENSA_SLOT9_ALT:            howto manager.      (line 2555)
+* BFD_RELOC_XTENSA_SLOT9_OP:             howto manager.      (line 2536)
+* BFD_RELOC_XTENSA_TLSDESC_ARG:          howto manager.      (line 2577)
+* BFD_RELOC_XTENSA_TLSDESC_FN:           howto manager.      (line 2576)
+* BFD_RELOC_XTENSA_TLS_ARG:              howto manager.      (line 2581)
+* BFD_RELOC_XTENSA_TLS_CALL:             howto manager.      (line 2582)
+* BFD_RELOC_XTENSA_TLS_DTPOFF:           howto manager.      (line 2578)
+* BFD_RELOC_XTENSA_TLS_FUNC:             howto manager.      (line 2580)
+* BFD_RELOC_XTENSA_TLS_TPOFF:            howto manager.      (line 2579)
+* BFD_RELOC_Z80_16_BE:                   howto manager.      (line 2613)
+* BFD_RELOC_Z80_BYTE0:                   howto manager.      (line 2601)
+* BFD_RELOC_Z80_BYTE1:                   howto manager.      (line 2603)
+* BFD_RELOC_Z80_BYTE2:                   howto manager.      (line 2605)
+* BFD_RELOC_Z80_BYTE3:                   howto manager.      (line 2607)
+* BFD_RELOC_Z80_DISP8:                   howto manager.      (line 2599)
+* BFD_RELOC_Z80_WORD0:                   howto manager.      (line 2609)
+* BFD_RELOC_Z80_WORD1:                   howto manager.      (line 2611)
+* BFD_RELOC_Z8K_CALLR:                   howto manager.      (line 2617)
+* BFD_RELOC_Z8K_DISP7:                   howto manager.      (line 2615)
+* BFD_RELOC_Z8K_IMM4L:                   howto manager.      (line 2619)
+* bfd_rename_section:                    section prototypes. (line  149)
+* bfd_rename_section <1>:                section prototypes. (line  153)
+* bfd_scan_arch:                         Architectures.      (line  597)
+* bfd_scan_vma:                          Miscellaneous.      (line  115)
+* bfd_scan_vma <1>:                      Miscellaneous.      (line  119)
+* bfd_section:                           Opening and Closing.
+                                                             (line  335)
+* bfd_sections_find_if:                  section prototypes. (line  174)
 * bfd_section_already_linked:            Writing the symbol table.
-                                                             (line   55)
+                                                             (line   92)
+* bfd_section_already_linked <1>:        Writing the symbol table.
+                                                             (line   96)
 * bfd_section_list_clear:                section prototypes. (line    7)
-* bfd_set_archive_head:                  Archives.           (line   74)
-* bfd_set_arch_info:                     Architectures.      (line  612)
-* bfd_set_assert_handler:                Error reporting.    (line  162)
-* bfd_set_default_target:                bfd_target.         (line  557)
-* 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_section_list_clear <1>:            section prototypes. (line   11)
+* bfd_section_size_insane:               section prototypes. (line  284)
+* bfd_section_size_insane <1>:           section prototypes. (line  288)
+* bfd_seek:                              Miscellaneous.      (line  409)
+* bfd_seek <1>:                          Miscellaneous.      (line  413)
+* bfd_set_archive_head:                  Archives.           (line   72)
+* bfd_set_archive_head <1>:              Archives.           (line   76)
+* bfd_set_arch_info:                     Architectures.      (line  634)
+* bfd_set_arch_info <1>:                 Architectures.      (line  638)
+* bfd_set_assert_handler:                Error reporting.    (line  198)
+* bfd_set_assert_handler <1>:            Error reporting.    (line  203)
+* bfd_set_default_target:                bfd_target.         (line  536)
+* bfd_set_default_target <1>:            bfd_target.         (line  541)
+* bfd_set_error:                         Error reporting.    (line   57)
+* bfd_set_error <1>:                     Error reporting.    (line   61)
+* bfd_set_error_handler:                 Error reporting.    (line  144)
+* bfd_set_error_handler <1>:             Error reporting.    (line  148)
+* bfd_set_error_program_name:            Error reporting.    (line  169)
+* bfd_set_error_program_name <1>:        Error reporting.    (line  173)
 * bfd_set_filename:                      Opening and Closing.
-                                                             (line  529)
-* bfd_set_file_flags:                    Miscellaneous.      (line   45)
-* bfd_set_format:                        Formats.            (line   67)
-* bfd_set_gp_size:                       Miscellaneous.      (line  116)
-* bfd_set_input_error:                   Error reporting.    (line   69)
-* bfd_set_private_flags:                 Miscellaneous.      (line  174)
-* bfd_set_reloc:                         Miscellaneous.      (line   33)
-* bfd_set_section_contents:              section prototypes. (line  228)
-* bfd_set_section_flags:                 section prototypes. (line  154)
-* bfd_set_section_size:                  section prototypes. (line  214)
-* bfd_set_start_address:                 Miscellaneous.      (line   95)
+                                                             (line  378)
+* bfd_set_file_flags:                    Miscellaneous.      (line   41)
+* bfd_set_file_flags <1>:                Miscellaneous.      (line   45)
+* bfd_set_format:                        Formats.            (line   70)
+* bfd_set_format <1>:                    Formats.            (line   74)
+* bfd_set_gp_size:                       Miscellaneous.      (line  100)
+* bfd_set_gp_size <1>:                   Miscellaneous.      (line  104)
+* bfd_set_gp_value:                      Miscellaneous.      (line  108)
+* bfd_set_gp_value <1>:                  Miscellaneous.      (line  112)
+* bfd_set_input_error:                   Error reporting.    (line   66)
+* bfd_set_input_error <1>:               Error reporting.    (line   70)
+* bfd_set_private_flags:                 Miscellaneous.      (line  153)
+* bfd_set_private_flags <1>:             Miscellaneous.      (line  157)
+* bfd_set_reloc:                         Miscellaneous.      (line   31)
+* bfd_set_reloc <1>:                     Miscellaneous.      (line   35)
+* bfd_set_section_contents:              section prototypes. (line  201)
+* bfd_set_section_contents <1>:          section prototypes. (line  205)
+* bfd_set_section_flags:                 section prototypes. (line  137)
+* bfd_set_section_flags <1>:             section prototypes. (line  141)
+* bfd_set_section_size:                  section prototypes. (line  188)
+* bfd_set_section_size <1>:              section prototypes. (line  192)
+* bfd_set_start_address:                 Miscellaneous.      (line   84)
+* bfd_set_start_address <1>:             Miscellaneous.      (line   88)
 * bfd_set_symtab:                        symbol handling functions.
-                                                             (line   63)
+                                                             (line   57)
+* bfd_set_symtab <1>:                    symbol handling functions.
+                                                             (line   61)
+* bfd_sprintf_vma:                       Miscellaneous.      (line  287)
+* bfd_sprintf_vma <1>:                   Miscellaneous.      (line  291)
+* bfd_stat:                              Miscellaneous.      (line  401)
+* bfd_stat <1>:                          Miscellaneous.      (line  405)
+* bfd_strtab_hash:                       Write Other Derived Routines.
+                                                             (line  110)
+* bfd_strtab_hash <1>:                   Write Other Derived Routines.
+                                                             (line  116)
 * bfd_symbol_info:                       symbol handling functions.
-                                                             (line  135)
-* bfd_target_list:                       bfd_target.         (line  609)
-* bfd_update_compression_header:         Miscellaneous.      (line  353)
-* bfd_write_bigendian_4byte_int:         Internal.           (line   12)
-* bfd_zalloc:                            Opening and Closing.
-                                                             (line  257)
-* bfd_zalloc2:                           Opening and Closing.
-                                                             (line  266)
-* check_build_id_file:                   Opening and Closing.
-                                                             (line  491)
-* coff_symbol_type:                      coff.               (line  233)
-* core_file_matches_executable_p:        Core Files.         (line   38)
-* find_separate_debug_file:              Opening and Closing.
-                                                             (line  365)
-* generic_core_file_matches_executable_p: Core Files.        (line   48)
-* get_build_id:                          Opening and Closing.
-                                                             (line  460)
-* get_build_id_name:                     Opening and Closing.
-                                                             (line  474)
+                                                             (line  119)
+* bfd_symbol_info <1>:                   symbol handling functions.
+                                                             (line  123)
+* bfd_target:                            bfd_target.         (line  549)
+* bfd_target <1>:                        bfd_target.         (line  564)
+* bfd_target <2>:                        bfd_target.         (line  594)
+* bfd_target_list:                       bfd_target.         (line  583)
+* bfd_tell:                              Miscellaneous.      (line  389)
+* bfd_tell <1>:                          Miscellaneous.      (line  393)
+* bfd_thread_cleanup:                    Threading.          (line   37)
+* bfd_thread_cleanup <1>:                Threading.          (line   41)
+* bfd_thread_init:                       Threading.          (line   22)
+* bfd_thread_init <1>:                   Threading.          (line   26)
+* bfd_unlock:                            Threading.          (line   53)
+* bfd_unlock <1>:                        Threading.          (line   57)
+* bfd_write:                             Miscellaneous.      (line  381)
+* bfd_write <1>:                         Miscellaneous.      (line  385)
+* bfd_write_bigendian_4byte_int:         Internal.           (line   91)
+* bfd_write_bigendian_4byte_int <1>:     Internal.           (line   95)
+* bfd_zalloc:                            Internal.           (line   77)
+* bfd_zmalloc:                           Internal.           (line   58)
+* Byte swapping routines.:               Internal.           (line  256)
+* char:                                  Error reporting.    (line   79)
+* char <1>:                              Error reporting.    (line  181)
+* char <2>:                              section prototypes. (line  274)
+* char <3>:                              Formats.            (line   83)
+* char <4>:                              howto manager.      (line 3615)
+* char <5>:                              Core Files.         (line   14)
+* char <6>:                              bfd_target.         (line  587)
+* char <7>:                              bfd_target.         (line  604)
+* char <8>:                              Architectures.      (line  594)
+* char <9>:                              Architectures.      (line  610)
+* char <10>:                             Architectures.      (line  711)
+* char <11>:                             Opening and Closing.
+                                                             (line  382)
+* char <12>:                             Opening and Closing.
+                                                             (line  391)
+* coff_symbol_type:                      coff.               (line  234)
+* core_file_matches_executable_p:        Core Files.         (line   31)
+* core_file_matches_executable_p <1>:    Core Files.         (line   35)
+* generic_core_file_matches_executable_p: Core Files.        (line   40)
+* generic_core_file_matches_executable_p <1>: Core Files.    (line   44)
 * Hash tables:                           Hash Tables.        (line    6)
+* int:                                   Initialization.     (line    6)
+* int <1>:                               Miscellaneous.      (line   96)
+* int <2>:                               Architectures.      (line  667)
+* int <3>:                               Architectures.      (line  674)
+* int <4>:                               Architectures.      (line  721)
+* int <5>:                               Architectures.      (line  730)
+* int <6>:                               Internal.           (line  284)
+* int <7>:                               Write Other Derived Routines.
+                                                             (line  104)
 * 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)
-* separate_debug_file_exists:            Opening and Closing.
-                                                             (line  343)
-* struct bfd_iovec:                      Miscellaneous.      (line  414)
+* long:                                  Architectures.      (line  661)
+* machine_type:                          aout.               (line  134)
+* Other functions:                       Miscellaneous.      (line  165)
+* per_xvec_messages:                     Error reporting.    (line  155)
+* struct bfd_iovec:                      Miscellaneous.      (line  334)
 * target vector (_bfd_final_link):       Performing the Final Link.
                                                              (line    6)
 * target vector (_bfd_link_add_symbols): Adding Symbols to the Hash Table.
                                                              (line    6)
 * target vector (_bfd_link_hash_table_create): Creating a Linker Hash Table.
                                                              (line    6)
-* The HOWTO Macro:                       typedef arelent.    (line  287)
+* The HOWTO Macro:                       typedef arelent.    (line  254)
 * what is it?:                           Overview.           (line    6)
 
 
@@ -14650,62 +14763,63 @@ Node: What BFD Version 2 Can Do4927
 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: typedef bfd13566
+Node: Error reporting27423
+Node: Initialization34754
+Node: Threading35285
+Node: Miscellaneous37568
+Node: Memory Usage57036
+Node: Sections58261
+Node: Section Input58742
+Node: Section Output59936
+Node: typedef asection62423
+Node: section prototypes79845
+Node: Symbols91164
+Node: Reading Symbols92767
+Node: Writing Symbols93875
+Node: Mini Symbols95619
+Node: typedef asymbol96593
+Node: symbol handling functions102799
+Node: Archives108014
+Node: Formats112162
+Node: Relocations115505
+Node: typedef arelent116232
+Node: howto manager130107
+Node: Core Files269520
+Node: Targets271521
+Node: bfd_target273482
+Node: Architectures299160
+Node: Opening and Closing331454
+Node: Internal347313
+Node: File Caching358648
+Node: Linker Functions361411
+Node: Creating a Linker Hash Table363085
+Node: Adding Symbols to the Hash Table364824
+Node: Differing file formats365724
+Node: Adding symbols from an object file367449
+Node: Adding symbols from an archive369599
+Node: Performing the Final Link371945
+Node: Information provided by the linker373186
+Node: Relocating the section contents374340
+Node: Writing the symbol table376092
+Node: Hash Tables385440
+Node: Creating and Freeing a Hash Table386638
+Node: Looking Up or Entering a String387888
+Node: Traversing a Hash Table389141
+Node: Deriving a New Hash Table Type389930
+Node: Define the Derived Structures390996
+Node: Write the Derived Creation Routine392077
+Node: Write Other Derived Routines394688
+Node: BFD back ends400113
+Node: What to Put Where400383
+Node: aout400563
+Node: coff406648
+Node: elf427581
+Node: mmo427982
+Node: File layout428852
+Node: Symbol-table434765
+Node: mmo section mapping438528
+Node: GNU Free Documentation License442182
+Node: BFD Index467246
 
 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.20200303/bfd/doc/bfdint.texi ./bfd/doc/bfdint.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdint.texi	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/bfdint.texi	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 \input texinfo
-@c Copyright (C) 1988-2019 Free Software Foundation, Inc.
+@c Copyright (C) 1988-2025 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-2025 Free Software Foundation, Inc.
 Contributed by Cygnus Support.
 
 Permission is granted to copy, distribute and/or modify this document
@@ -346,10 +346,6 @@ Intel hex format.
 SOM (used on HP/UX).
 @item bfd_target_verilog_flavour
 Verilog memory hex dump format.
-@item bfd_target_os9k_flavour
-os9000.
-@item bfd_target_versados_flavour
-VERSAdos.
 @item bfd_target_msdos_flavour
 MS-DOS.
 @item bfd_target_evax_flavour
@@ -497,22 +493,25 @@ functions which don't easily fit into ot
 
 @table @samp
 @item _close_and_cleanup
-Free any target specific information associated with the BFD.  This is
-called when any BFD is closed (the @samp{bfd_write_contents} function
-mentioned earlier is only called for a BFD opened for writing).  Most
-targets use @samp{bfd_alloc} to allocate all target specific
-information, and therefore don't have to do anything in this function.
-This function pointer is typically set to
-@samp{_bfd_generic_close_and_cleanup}, which simply returns true.
+Free any target specific information associated with the BFD that
+isn't freed by @samp{_bfd_free_cached_info}.  This is called when any
+BFD is closed (the @samp{bfd_write_contents} function mentioned
+earlier is only called for a BFD opened for writing).  This function
+pointer is typically set to @samp{_bfd_generic_close_and_cleanup},
+which simply returns true.
 
 @item _bfd_free_cached_info
-Free any cached information associated with the BFD which can be
-recreated later if necessary.  This is used to reduce the memory
-consumption required by programs using BFD.  This is normally called via
-the @samp{bfd_free_cached_info} macro.  It is used by the default
-archive routines when computing the archive map.  Most targets do not
-do anything special for this entry point, and just set it to
-@samp{_bfd_generic_free_cached_info}, which simply returns true.
+This function is designed for use by the generic archive routines, and
+is also called by bfd_close.  After creating the archive map archive
+element bfds don't need symbols and other structures.  Many targets
+use @samp{bfd_alloc} to allocate target specific information and thus
+do not need to do anything special for this entry point, and just set
+it to @samp{_bfd_generic_free_cached_info} which throws away objalloc
+memory for the bfd.  Note that this means the bfd tdata and sections
+are no longer available.  Targets that malloc memory, attaching it to
+the bfd tdata or to section used_by_bfd should implement a target
+version of this function to free that memory before calling
+@samp{_bfd_generic_free_cached_info}.
 
 @item _new_section_hook
 This is called from @samp{bfd_make_section_anyway} whenever a new
@@ -524,19 +523,10 @@ corresponds to an actual section in an a
 Get the contents of a section.  This is called from
 @samp{bfd_get_section_contents}.  Most targets set this to
 @samp{_bfd_generic_get_section_contents}, which does a @samp{bfd_seek}
-based on the section's @samp{filepos} field and a @samp{bfd_bread}.  The
+based on the section's @samp{filepos} field and a @samp{bfd_read}.  The
 corresponding field in the target vector is named
 @samp{_bfd_get_section_contents}.
 
-@item _get_section_contents_in_window
-Set a @samp{bfd_window} to hold the contents of a section.  This is
-called from @samp{bfd_get_section_contents_in_window}.  The
-@samp{bfd_window} idea never really caught on, and I don't think this is
-ever called.  Pretty much all targets implement this as
-@samp{bfd_generic_get_section_contents_in_window}, which uses
-@samp{bfd_get_section_contents} to do the right thing.  The
-corresponding field in the target vector is named
-@samp{_bfd_get_section_contents_in_window}.
 @end table
 
 @node BFD target vector copy
@@ -657,7 +647,7 @@ always uses extended name tables anyhow.
 target vector is named @samp{_bfd_truncate_arname}.
 
 @item _write_armap
-Write out the archive symbol table using calls to @samp{bfd_bwrite}.
+Write out the archive symbol table using calls to @samp{bfd_write}.
 This is normally called from the archive @samp{write_contents} routine.
 The corresponding field in the target vector is named @samp{write_armap}
 (no leading underscore).
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdio.texi ./bfd/doc/bfdio.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdio.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/bfdio.texi	2026-03-05 02:11:13.000000000 +0000
@@ -1,6 +1,5 @@
 @findex struct bfd_iovec
 @subsubsection @code{struct bfd_iovec}
-@strong{Description}@*
 The @code{struct bfd_iovec} contains the internal file I/O class.
 Each @code{BFD} has an instance of this class and all file I/O is
 routed through it (it is assumed that the instance implements
@@ -28,34 +27,68 @@ struct bfd_iovec
   int (*bstat) (struct bfd *abfd, struct stat *sb);
   /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual
      mmap parameter, except that LEN and OFFSET do not need to be page
-     aligned.  Returns (void *)-1 on failure, mmapped address on success.
+     aligned.  Returns MAP_FAILED on failure, mmapped address on success.
      Also write in MAP_ADDR the address of the page aligned buffer and in
      MAP_LEN the size mapped (a page multiple).  Use unmap with MAP_ADDR and
      MAP_LEN to unmap.  */
-  void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
+  void *(*bmmap) (struct bfd *abfd, void *addr, size_t len,
                   int prot, int flags, file_ptr offset,
-                  void **map_addr, bfd_size_type *map_len);
+                  void **map_addr, size_t *map_len);
 @};
 extern const struct bfd_iovec _bfd_memory_iovec;
+
 @end example
 
+@findex bfd_read
+@subsubsection @code{bfd_read}
+@deftypefn {Function} bfd_size_type bfd_read (void *, bfd_size_type, bfd *) ATTRIBUTE_WARN_UNUSED_RESULT; 
+Attempt to read SIZE bytes from ABFD's iostream to PTR.
+Return the amount read.
+
+@end deftypefn
+@findex bfd_write
+@subsubsection @code{bfd_write}
+@deftypefn {Function} bfd_size_type bfd_write (const void *, bfd_size_type, bfd *) ATTRIBUTE_WARN_UNUSED_RESULT; 
+Attempt to write SIZE bytes to ABFD's iostream from PTR.
+Return the amount written.
+
+@end deftypefn
+@findex bfd_tell
+@subsubsection @code{bfd_tell}
+@deftypefn {Function} file_ptr bfd_tell (bfd *) ATTRIBUTE_WARN_UNUSED_RESULT; 
+Return ABFD's iostream file position.
+
+@end deftypefn
+@findex bfd_flush
+@subsubsection @code{bfd_flush}
+@deftypefn {Function} int bfd_flush (bfd *); 
+Flush ABFD's iostream pending IO.
+
+@end deftypefn
+@findex bfd_stat
+@subsubsection @code{bfd_stat}
+@deftypefn {Function} int bfd_stat (bfd *, struct stat *) ATTRIBUTE_WARN_UNUSED_RESULT; 
+Call fstat on ABFD's iostream.  Return 0 on success, and a
+negative value on failure.
+
+@end deftypefn
+@findex bfd_seek
+@subsubsection @code{bfd_seek}
+@deftypefn {Function} int bfd_seek (bfd *, file_ptr, int) ATTRIBUTE_WARN_UNUSED_RESULT; 
+Call fseek on ABFD's iostream.  Return 0 on success, and a
+negative value on failure.
+
+@end deftypefn
 @findex bfd_get_mtime
 @subsubsection @code{bfd_get_mtime}
-@strong{Synopsis}
-@example
-long bfd_get_mtime (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} long bfd_get_mtime (bfd *abfd); 
 Return the file modification time (as read from the file system, or
 from the archive header for archive members).
 
+@end deftypefn
 @findex bfd_get_size
 @subsubsection @code{bfd_get_size}
-@strong{Synopsis}
-@example
-ufile_ptr bfd_get_size (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} ufile_ptr bfd_get_size (bfd *abfd); 
 Return the file size (as read from file system) for the file
 associated with BFD @var{abfd}.
 
@@ -80,27 +113,35 @@ 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.
+
+@end deftypefn
 @findex bfd_get_file_size
 @subsubsection @code{bfd_get_file_size}
-@strong{Synopsis}
-@example
-ufile_ptr bfd_get_file_size (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} ufile_ptr bfd_get_file_size (bfd *abfd); 
 Return the file size (as read from file system) for the file
 associated with BFD @var{abfd}.  It supports both normal files
 and archive elements.
 
+@end deftypefn
 @findex bfd_mmap
 @subsubsection @code{bfd_mmap}
-@strong{Synopsis}
-@example
-void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
-    int prot, int flags, file_ptr offset,
-    void **map_addr, bfd_size_type *map_len);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void *bfd_mmap (bfd *abfd, void *addr, size_t len, int prot, int flags, file_ptr offset, void **map_addr, size_t *map_len) ATTRIBUTE_WARN_UNUSED_RESULT; 
 Return mmap()ed region of the file, if possible and implemented.
 LEN and OFFSET do not need to be page aligned.  The page aligned
 address and length are written to MAP_ADDR and MAP_LEN.
+Returns MAP_FAILED on failure.
+
+@end deftypefn
+@findex bfd_get_current_time
+@subsubsection @code{bfd_get_current_time}
+@deftypefn {Function} time_t bfd_get_current_time (time_t now); 
+Returns the current time.
+
+If the environment variable SOURCE_DATE_EPOCH is defined
+then this is parsed and its value is returned.  Otherwise
+if the paramter NOW is non-zero, then that is returned.
+Otherwise the result of the system call "time(NULL)" is
+returned.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdsumm.texi ./bfd/doc/bfdsumm.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdsumm.texi	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/bfdsumm.texi	2026-03-05 02:07:20.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-2025 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.20200303/bfd/doc/bfd.texi ./bfd/doc/bfd.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfd.texi	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/bfd.texi	2026-03-05 02:07:20.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-2025 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-2025 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-2025 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
@@ -198,9 +198,10 @@ IEEE-695.
 @menu
 * typedef bfd::
 * Error reporting::
+* Initialization::
+* Threading::
 * Miscellaneous::
 * Memory Usage::
-* Initialization::
 * Sections::
 * Symbols::
 * Archives::
@@ -219,7 +220,7 @@ IEEE-695.
 @include bfdt.texi
 @include bfdio.texi
 
-@node Memory Usage, Initialization, Miscellaneous, BFD front end
+@node Memory Usage, Sections, Miscellaneous, BFD front end
 @section Memory Usage
 BFD keeps all of its internal structures in obstacks. There is one obstack
 per open BFD file, into which the current state is stored. When a BFD is
@@ -242,10 +243,7 @@ select the greediest open BFD, close it
 some operation and reopen the BFD again, to get a fresh copy of the data
 structures.
 
-@node Initialization, Sections, Memory Usage, BFD front end
-@include  init.texi
-
-@node Sections, Symbols, Initialization, BFD front end
+@node Sections, Symbols, Memory Usage, BFD front end
 @include  section.texi
 
 @node Symbols, Archives, Sections, BFD front end
@@ -261,7 +259,7 @@ structures.
 @include  reloc.texi
 
 @node Core Files, Targets, Relocations, BFD front end
-@include  core.texi
+@include  corefile.texi
 
 @node Targets, Architectures, Core Files, BFD front end
 @include  targets.texi
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdt.texi ./bfd/doc/bfdt.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdt.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/bfdt.texi	2026-03-05 02:11:13.000000000 +0000
@@ -10,28 +10,6 @@ to the rest of the data.
 
 
 @example
-
-enum bfd_direction
-  @{
-    no_direction = 0,
-    read_direction = 1,
-    write_direction = 2,
-    both_direction = 3
-  @};
-
-enum bfd_plugin_format
-  @{
-    bfd_plugin_unknown = 0,
-    bfd_plugin_yes = 1,
-    bfd_plugin_no = 2
-  @};
-
-struct bfd_build_id
-  @{
-    bfd_size_type size;
-    bfd_byte data[1];
-  @};
-
 struct bfd
 @{
   /* The filename the application opened the BFD with.  */
@@ -60,12 +38,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;
 
@@ -122,8 +94,8 @@ struct bfd
 #define BFD_TRADITIONAL_FORMAT    0x400
 
   /* This flag indicates that the BFD contents are actually cached
-     in memory.  If this is set, iostream points to a bfd_in_memory
-     struct.  */
+     in memory.  If this is set, iostream points to a malloc'd
+     bfd_in_memory struct.  */
 #define BFD_IN_MEMORY             0x800
 
   /* This BFD has been created by the linker and doesn't correspond
@@ -157,17 +129,39 @@ struct bfd
   /* Put pathnames into archives (non-POSIX).  */
 #define BFD_ARCHIVE_FULL_PATH  0x100000
 
-  /* Flags bits to be saved in bfd_preserve_save.  */
-#define BFD_FLAGS_SAVED \
-  (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
-   | BFD_PLUGIN | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON \
-   | BFD_USE_ELF_STT_COMMON)
+#define BFD_CLOSED_BY_CACHE    0x200000
+  /* Compress sections in this BFD with SHF_COMPRESSED zstd.  */
+#define BFD_COMPRESS_ZSTD      0x400000
+
+  /* Don't generate ELF section header.  */
+#define BFD_NO_SECTION_HEADER  0x800000
 
   /* Flags bits which are for BFD use only.  */
 #define BFD_FLAGS_FOR_BFD_USE_MASK \
   (BFD_IN_MEMORY | BFD_COMPRESS | BFD_DECOMPRESS | BFD_LINKER_CREATED \
    | BFD_PLUGIN | BFD_TRADITIONAL_FORMAT | BFD_DETERMINISTIC_OUTPUT \
-   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON)
+   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON \
+   | BFD_NO_SECTION_HEADER)
+
+  /* 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;
+
+  /* POSIX.1-2017 (IEEE Std 1003.1) says of fopen : "When a file is
+     opened with update mode ('+' as the second or third character in
+     the mode argument), both input and output may be performed on
+     the associated stream.  However, the application shall ensure
+     that output is not directly followed by input without an
+     intervening call to fflush() or to a file positioning function
+     (fseek(), fsetpos(), or rewind()), and input is not directly
+     followed by output without an intervening call to a file
+     positioning function, unless the input operation encounters
+     end-of-file."
+     This field tracks the last IO operation, so that bfd can insert
+     a seek when IO direction changes.  */
+  ENUM_BITFIELD (bfd_last_io) last_io : 2;
 
   /* Is the file descriptor being cached?  That is, can it be closed as
      needed, and re-opened when accessed later?  */
@@ -217,16 +211,25 @@ struct bfd
   /* Set if this is a plugin output file.  */
   unsigned int lto_output : 1;
 
-  /* 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;
+
+  /* LTO object type.  */
+  ENUM_BITFIELD (bfd_lto_object_type) lto_type : 3;
+
+  /* Set if this BFD is currently being processed by
+     bfd_check_format_matches.  This is checked by the cache to
+     avoid closing the BFD in this case.  This should only be
+     examined or modified while the BFD lock is held.  */
+  unsigned int in_format_matches : 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
@@ -245,20 +248,32 @@ struct bfd
   /* The last section on the section list.  */
   struct bfd_section *section_last;
 
+  /* The object-only section on the section list.  */
+  struct bfd_section *object_only_section;
+
   /* The number of sections.  */
   unsigned int section_count;
 
+  /* The archive plugin file descriptor.  */
+  int archive_plugin_fd;
+
+  /* The number of opens on the archive plugin file descriptor.  */
+  unsigned int archive_plugin_fd_open_count;
+
   /* A field used by _bfd_generic_link_add_archive_symbols.  This will
      be used only for archive elements.  */
   int archive_pass;
 
+  /* The total size of memory from bfd_alloc.  */
+  bfd_size_type alloc_size;
+
   /* Stuff only useful for object files:
      The start address.  */
   bfd_vma start_address;
 
   /* 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 +284,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.  */
@@ -299,8 +319,6 @@ struct bfd
       struct tekhex_data_struct *tekhex_data;
       struct elf_obj_tdata *elf_obj_data;
       struct mmo_data_struct *mmo_data;
-      struct sun_core_struct *sun_core_data;
-      struct sco5_core_struct *sco5_core_data;
       struct trad_core_struct *trad_core_data;
       struct som_data_struct *som_data;
       struct hpux_core_struct *hpux_core_data;
@@ -309,7 +327,6 @@ struct bfd
       struct lynx_core_struct *lynx_core_data;
       struct osf_core_struct *osf_core_data;
       struct cisco_core_struct *cisco_core_data;
-      struct versados_data_struct *versados_data;
       struct netbsd_core_struct *netbsd_core_data;
       struct mach_o_data_struct *mach_o_data;
       struct mach_o_fat_data_struct *mach_o_fat_data;
@@ -331,232 +348,13 @@ struct bfd
 
   /* For input BFDs, the build ID, if the object has one. */
   const struct bfd_build_id *build_id;
-@};
-
-static inline const char *
-bfd_get_filename (const bfd *abfd)
-@{
-  return abfd->filename;
-@}
 
-static inline bfd_boolean
-bfd_get_cacheable (const bfd *abfd)
-@{
-  return abfd->cacheable;
-@}
-
-static inline enum bfd_format
-bfd_get_format (const bfd *abfd)
-@{
-  return abfd->format;
-@}
-
-static inline flagword
-bfd_get_file_flags (const bfd *abfd)
-@{
-  return abfd->flags;
-@}
-
-static inline bfd_vma
-bfd_get_start_address (const bfd *abfd)
-@{
-  return abfd->start_address;
-@}
-
-static inline unsigned int
-bfd_get_symcount (const bfd *abfd)
-@{
-  return abfd->symcount;
-@}
-
-static inline unsigned int
-bfd_get_dynamic_symcount (const bfd *abfd)
-@{
-  return abfd->dynsymcount;
-@}
-
-static inline struct bfd_symbol **
-bfd_get_outsymbols (const bfd *abfd)
-@{
-  return abfd->outsymbols;
-@}
-
-static inline unsigned int
-bfd_count_sections (const bfd *abfd)
-@{
-  return abfd->section_count;
-@}
-
-static inline bfd_boolean
-bfd_has_map (const bfd *abfd)
-@{
-  return abfd->has_armap;
-@}
-
-static inline bfd_boolean
-bfd_is_thin_archive (const bfd *abfd)
-@{
-  return abfd->is_thin_archive;
-@}
-
-static inline void *
-bfd_usrdata (const bfd *abfd)
-@{
-  return abfd->usrdata;
-@}
-
-/* See note beside bfd_set_section_userdata.  */
-static inline bfd_boolean
-bfd_set_cacheable (bfd * abfd, bfd_boolean val)
-@{
-  abfd->cacheable = val;
-  return TRUE;
-@}
-
-static inline void
-bfd_set_thin_archive (bfd *abfd, bfd_boolean val)
-@{
-  abfd->is_thin_archive = val;
-@}
-
-static inline void
-bfd_set_usrdata (bfd *abfd, void *val)
-@{
-  abfd->usrdata = val;
-@}
-
-static inline asection *
-bfd_asymbol_section (const asymbol *sy)
-@{
-  return sy->section;
-@}
-
-static inline bfd_vma
-bfd_asymbol_value (const asymbol *sy)
-@{
-  return sy->section->vma + sy->value;
-@}
-
-static inline const char *
-bfd_asymbol_name (const asymbol *sy)
-@{
-  return sy->name;
-@}
-
-static inline struct bfd *
-bfd_asymbol_bfd (const asymbol *sy)
-@{
-  return sy->the_bfd;
-@}
-
-static inline void
-bfd_set_asymbol_name (asymbol *sy, const char *name)
-@{
-  sy->name = name;
-@}
-
-static inline bfd_size_type
-bfd_get_section_limit_octets (const bfd *abfd, const asection *sec)
-@{
-  if (abfd->direction != write_direction && sec->rawsize != 0)
-    return sec->rawsize;
-  return sec->size;
-@}
-
-/* Find the address one past the end of SEC.  */
-static inline bfd_size_type
-bfd_get_section_limit (const bfd *abfd, const asection *sec)
-@{
-  return (bfd_get_section_limit_octets (abfd, sec)
-          / bfd_octets_per_byte (abfd, sec));
-@}
-
-/* Functions to handle insertion and deletion of a bfd's sections.  These
-   only handle the list pointers, ie. do not adjust section_count,
-   target_index etc.  */
-static inline void
-bfd_section_list_remove (bfd *abfd, asection *s)
-@{
-  asection *next = s->next;
-  asection *prev = s->prev;
-  if (prev)
-    prev->next = next;
-  else
-    abfd->sections = next;
-  if (next)
-    next->prev = prev;
-  else
-    abfd->section_last = prev;
-@}
-
-static inline void
-bfd_section_list_append (bfd *abfd, asection *s)
-@{
-  s->next = 0;
-  if (abfd->section_last)
-    @{
-      s->prev = abfd->section_last;
-      abfd->section_last->next = s;
-    @}
-  else
-    @{
-      s->prev = 0;
-      abfd->sections = s;
-    @}
-  abfd->section_last = s;
-@}
-
-static inline void
-bfd_section_list_prepend (bfd *abfd, asection *s)
-@{
-  s->prev = 0;
-  if (abfd->sections)
-    @{
-      s->next = abfd->sections;
-      abfd->sections->prev = s;
-    @}
-  else
-    @{
-      s->next = 0;
-      abfd->section_last = s;
-    @}
-  abfd->sections = s;
-@}
-
-static inline void
-bfd_section_list_insert_after (bfd *abfd, asection *a, asection *s)
-@{
-  asection *next = a->next;
-  s->next = next;
-  s->prev = a;
-  a->next = s;
-  if (next)
-    next->prev = s;
-  else
-    abfd->section_last = s;
-@}
-
-static inline void
-bfd_section_list_insert_before (bfd *abfd, asection *b, asection *s)
-@{
-  asection *prev = b->prev;
-  s->prev = prev;
-  s->next = b;
-  b->prev = s;
-  if (prev)
-    prev->next = s;
-  else
-    abfd->sections = s;
-@}
-
-static inline bfd_boolean
-bfd_section_removed_from_list (const bfd *abfd, const asection *s)
-@{
-  return s->next ? s->next->prev != s : abfd->section_last != s;
-@}
+  /* For input BFDs, mmapped entries. */
+  struct bfd_mmapped *mmapped;
+@};
 
 @end example
-@node Error reporting, Miscellaneous, typedef bfd, BFD front end
+@node Error reporting, Initialization, typedef bfd, BFD front end
 @section Error reporting
 Most BFD functions return nonzero on success (check their
 individual documentation for precise semantics).  On an error,
@@ -568,13 +366,14 @@ If that returns @code{bfd_error_system_c
 The easiest way to report a BFD error to the user is to
 use @code{bfd_perror}.
 
+The BFD error is thread-local.
+
 @subsection Type @code{bfd_error_type}
 The values returned by @code{bfd_get_error} are defined by the
 enumerated type @code{bfd_error_type}.
 
 
 @example
-
 typedef enum bfd_error
 @{
   bfd_error_no_error = 0,
@@ -606,59 +405,56 @@ bfd_error_type;
 @end example
 @findex bfd_get_error
 @subsubsection @code{bfd_get_error}
-@strong{Synopsis}
-@example
-bfd_error_type bfd_get_error (void);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_error_type bfd_get_error (void); 
 Return the current BFD error condition.
 
+@end deftypefn
 @findex bfd_set_error
 @subsubsection @code{bfd_set_error}
-@strong{Synopsis}
-@example
-void bfd_set_error (bfd_error_type error_tag);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_set_error (bfd_error_type error_tag); 
 Set the BFD error condition to be @var{error_tag}.
 
 @var{error_tag} must not be bfd_error_on_input.  Use
 bfd_set_input_error for input errors instead.
 
+@end deftypefn
 @findex bfd_set_input_error
 @subsubsection @code{bfd_set_input_error}
-@strong{Synopsis}
-@example
-void bfd_set_input_error (bfd *input, bfd_error_type error_tag);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_set_input_error (bfd *input, bfd_error_type error_tag); 
 Set the BFD error condition to be bfd_error_on_input.
 @var{input} is the input bfd where the error occurred, and
 @var{error_tag} the bfd_error_type error.
 
+@end deftypefn
 @findex bfd_errmsg
 @subsubsection @code{bfd_errmsg}
-@strong{Synopsis}
-@example
-const char *bfd_errmsg (bfd_error_type error_tag);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char *bfd_errmsg (bfd_error_type error_tag); 
 Return a string describing the error @var{error_tag}, or
 the system error if @var{error_tag} is @code{bfd_error_system_call}.
 
+@end deftypefn
 @findex bfd_perror
 @subsubsection @code{bfd_perror}
-@strong{Synopsis}
-@example
-void bfd_perror (const char *message);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_perror (const char *message); 
 Print to the standard error stream a string describing the
 last BFD error that occurred, or the last system error if
 the last BFD error was a system call failure.  If @var{message}
 is non-NULL and non-empty, the error string printed is preceded
 by @var{message}, a colon, and a space.  It is followed by a newline.
 
+@end deftypefn
+@findex bfd_asprintf
+@subsubsection @code{bfd_asprintf}
+@deftypefn {Function} char *bfd_asprintf (const char *fmt, ...); 
+Primarily for error reporting, this function is like
+libiberty's xasprintf except that it can return NULL on no
+memory and the returned string should not be freed.  Uses a
+thread-local malloc'd buffer managed by libbfd, _bfd_error_buf.
+Be aware that a call to this function frees the result of any
+previous call.  bfd_errmsg (bfd_error_on_input) also calls
+this function.
+
+@end deftypefn
 @subsection BFD error handler
 Some BFD functions want to print messages describing the
 problem.  They call a BFD error handler function.  This
@@ -668,17 +464,27 @@ The BFD error handler acts like vprintf.
 
 
 @example
-
 typedef void (*bfd_error_handler_type) (const char *, va_list);
 
 @end example
-@findex _bfd_error_handler
-@subsubsection @code{_bfd_error_handler}
-@strong{Synopsis}
+
 @example
-void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
+typedef int (*bfd_print_callback) (void *, const char *, ...);
 @end example
-@strong{Description}@*
+@findex bfd_print_error
+@subsubsection @code{bfd_print_error}
+@deftypefn {Function} void bfd_print_error (bfd_print_callback print_func, void *stream, const char *fmt, va_list ap); 
+This formats FMT and AP according to BFD "printf" rules,
+sending the output to STREAM by repeated calls to PRINT_FUNC.
+PRINT_FUNC is a printf-like function; it does not need to
+implement the BFD printf format extensions.  This can be used
+in a callback that is set via bfd_set_error_handler to turn
+the error into ordinary output.
+
+@end deftypefn
+@findex _bfd_error_handler
+@subsubsection @code{_bfd_error_handler}
+@deftypefn {Function} void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1; 
 This is the default routine to handle BFD error messages.
 Like fprintf (stderr, ...), but also handles some extra format
 specifiers.
@@ -690,28 +496,45 @@ archive too.
 
 Beware: Only supports a maximum of 9 format arguments.
 
+@end deftypefn
 @findex bfd_set_error_handler
 @subsubsection @code{bfd_set_error_handler}
-@strong{Synopsis}
-@example
-bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type); 
 Set the BFD error handler function.  Returns the previous
 function.
 
+@end deftypefn
+@findex _bfd_set_error_handler_caching
+@subsubsection @code{_bfd_set_error_handler_caching}
+@deftypefn {Function} struct per_xvec_messages *_bfd_set_error_handler_caching (struct per_xvec_messages *); 
+Set the BFD error handler function to one that stores messages
+to the per_xvec_messages object.  Returns the previous object
+to which messages are stored.  Note that two sequential calls
+to this with a non-NULL argument will cause output to be
+dropped, rather than gathered.
+
+@end deftypefn
+@findex _bfd_restore_error_handler_caching
+@subsubsection @code{_bfd_restore_error_handler_caching}
+@deftypefn {Function} void _bfd_restore_error_handler_caching (struct per_xvec_messages *); 
+Reset the BFD error handler object to an earlier value.
+
+@end deftypefn
 @findex bfd_set_error_program_name
 @subsubsection @code{bfd_set_error_program_name}
-@strong{Synopsis}
-@example
-void bfd_set_error_program_name (const char *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_set_error_program_name (const char *); 
 Set the program name to use when printing a BFD error.  This
 is printed before the error message followed by a colon and
 space.  The string must not be changed after it is passed to
 this function.
 
+@end deftypefn
+@findex _bfd_get_error_program_name
+@subsubsection @code{_bfd_get_error_program_name}
+@deftypefn {Function} const char *_bfd_get_error_program_name (void); 
+Get the program name used when printing a BFD error.
+
+@end deftypefn
 @subsection BFD assert handler
 If BFD finds an internal inconsistency, the bfd assert
 handler is called with information on the BFD version, BFD
@@ -723,7 +546,6 @@ _bfd_error_handler and continues.
 
 
 @example
-
 typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
                                          const char *bfd_version,
                                          const char *bfd_file,
@@ -732,15 +554,87 @@ typedef void (*bfd_assert_handler_type)
 @end example
 @findex bfd_set_assert_handler
 @subsubsection @code{bfd_set_assert_handler}
-@strong{Synopsis}
-@example
-bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type); 
 Set the BFD assert handler function.  Returns the previous
 function.
 
-@node Miscellaneous, Memory Usage, Error reporting, BFD front end
+@end deftypefn
+@node Initialization, Threading, Error reporting, BFD front end
+@findex bfd_init
+@subsubsection @code{bfd_init}
+@deftypefn {Function} unsigned int bfd_init (void); 
+This routine must be called before any other BFD function to
+initialize magical internal data structures.
+Returns a magic number, which may be used to check
+that the bfd library is configured as expected by users.
+@example
+/* Value returned by bfd_init.  */
+#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
+
+@end example
+
+@end deftypefn
+@node Threading, Miscellaneous, Initialization, BFD front end
+@section Threading
+BFD has limited support for thread-safety.  Most BFD globals
+are protected by locks, while the error-related globals are
+thread-local.  A given BFD cannot safely be used from two
+threads at the same time; it is up to the application to do
+any needed locking.  However, it is ok for different threads
+to work on different BFD objects at the same time.
+
+@subsection Thread functions.
+
+
+
+@example
+typedef bool (*bfd_lock_unlock_fn_type) (void *);
+@end example
+@findex _bfd_threading_enabled
+@subsubsection @code{_bfd_threading_enabled}
+@deftypefn {Function} bool _bfd_threading_enabled (void); 
+Return true if threading is enabled, false if not.
+
+@end deftypefn
+@findex bfd_thread_init
+@subsubsection @code{bfd_thread_init}
+@deftypefn {Function} bool bfd_thread_init (bfd_lock_unlock_fn_type lock, bfd_lock_unlock_fn_type unlock, void *data); 
+Initialize BFD threading.  The functions passed in will be
+used to lock and unlock global data structures.  This may only
+be called a single time in a given process.  Returns true on
+success and false on error.  On error, the caller should
+assume that BFD cannot be used by multiple threads.  DATA is
+passed verbatim to the lock and unlock functions.  The lock
+and unlock functions should return true on success, or set the
+BFD error and return false on failure.  Note also that the
+lock must be a recursive lock: BFD may attempt to acquire the
+lock when it is already held by the current thread.
+
+@end deftypefn
+@findex bfd_thread_cleanup
+@subsubsection @code{bfd_thread_cleanup}
+@deftypefn {Function} void bfd_thread_cleanup (void); 
+Clean up any thread-local state.  This should be called by a
+thread that uses any BFD functions, before the thread exits.
+It is fine to call this multiple times, or to call it and then
+later call BFD functions on the same thread again.
+
+@end deftypefn
+@findex bfd_lock
+@subsubsection @code{bfd_lock}
+@deftypefn {Function} bool bfd_lock (void); 
+Acquire the global BFD lock, if needed.  Returns true on
+success, false on error.
+
+@end deftypefn
+@findex bfd_unlock
+@subsubsection @code{bfd_unlock}
+@deftypefn {Function} bool bfd_unlock (void); 
+Release the global BFD lock, if needed.  Returns true on
+success, false on error.
+
+@end deftypefn
+@node Miscellaneous, Memory Usage, Threading, BFD front end
 @section Miscellaneous
 
 
@@ -749,23 +643,15 @@ function.
 
 @findex bfd_get_reloc_upper_bound
 @subsubsection @code{bfd_get_reloc_upper_bound}
-@strong{Synopsis}
-@example
-long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
-@end example
-@strong{Description}@*
+@deftypefn {Function} long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect); 
 Return the number of bytes required to store the
 relocation information associated with section @var{sect}
 attached to bfd @var{abfd}.  If an error occurs, return -1.
 
+@end deftypefn
 @findex bfd_canonicalize_reloc
 @subsubsection @code{bfd_canonicalize_reloc}
-@strong{Synopsis}
-@example
-long bfd_canonicalize_reloc
-   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
-@end example
-@strong{Description}@*
+@deftypefn {Function} long bfd_canonicalize_reloc (bfd *abfd, asection *sec, arelent **loc, asymbol **syms); 
 Call the back end associated with the open BFD
 @var{abfd} and translate the external form of the relocation
 information attached to @var{sec} into the internal canonical
@@ -777,14 +663,10 @@ been preallocated, usually by a call to
 The @var{syms} table is also needed for horrible internal magic
 reasons.
 
+@end deftypefn
 @findex bfd_set_reloc
 @subsubsection @code{bfd_set_reloc}
-@strong{Synopsis}
-@example
-void bfd_set_reloc
-   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_set_reloc (bfd *abfd, asection *sec, arelent **rel, unsigned int count); 
 Set the relocation pointer and count within
 section @var{sec} to the values @var{rel} and @var{count}.
 The argument @var{abfd} is ignored.
@@ -793,13 +675,10 @@ The argument @var{abfd} is ignored.
        BFD_SEND (abfd, _bfd_set_reloc, (abfd, asect, location, count))
 @end example
 
+@end deftypefn
 @findex bfd_set_file_flags
 @subsubsection @code{bfd_set_file_flags}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_file_flags (bfd *abfd, flagword flags); 
 Set the flag word in the BFD @var{abfd} to the value @var{flags}.
 
 Possible errors are:
@@ -816,29 +695,22 @@ type of file.  E.g., an attempt was made
 on a BFD format which does not support demand paging.
 @end itemize
 
+@end deftypefn
 @findex bfd_get_arch_size
 @subsubsection @code{bfd_get_arch_size}
-@strong{Synopsis}
-@example
-int bfd_get_arch_size (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} int bfd_get_arch_size (bfd *abfd); 
 Returns the normalized architecture address size, in bits, as
 determined by the object file's format.  By normalized, we mean
 either 32 or 64.  For ELF, this information is included in the
 header.  Use bfd_arch_bits_per_address for number of bits in
 the architecture address.
 
-@strong{Returns}@*
 Returns the arch size in bits if known, @code{-1} otherwise.
 
+@end deftypefn
 @findex bfd_get_sign_extend_vma
 @subsubsection @code{bfd_get_sign_extend_vma}
-@strong{Synopsis}
-@example
-int bfd_get_sign_extend_vma (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} int bfd_get_sign_extend_vma (bfd *abfd); 
 Indicates if the target architecture "naturally" sign extends
 an address.  Some architectures implicitly sign extend address
 values when they are converted to types larger than the size
@@ -846,71 +718,53 @@ of an address.  For instance, bfd_get_st
 return an address sign extended to fill a bfd_vma when this is
 the case.
 
-@strong{Returns}@*
 Returns @code{1} if the target architecture is known to sign
 extend addresses, @code{0} if the target architecture is known to
 not sign extend addresses, and @code{-1} otherwise.
 
+@end deftypefn
 @findex bfd_set_start_address
 @subsubsection @code{bfd_set_start_address}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_start_address (bfd *abfd, bfd_vma vma); 
 Make @var{vma} the entry point of output BFD @var{abfd}.
 
-@strong{Returns}@*
 Returns @code{TRUE} on success, @code{FALSE} otherwise.
 
+@end deftypefn
 @findex bfd_get_gp_size
 @subsubsection @code{bfd_get_gp_size}
-@strong{Synopsis}
-@example
-unsigned int bfd_get_gp_size (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} unsigned int bfd_get_gp_size (bfd *abfd); 
 Return the maximum size of objects to be optimized using the GP
 register under MIPS ECOFF.  This is typically set by the @code{-G}
 argument to the compiler, assembler or linker.
 
+@end deftypefn
 @findex bfd_set_gp_size
 @subsubsection @code{bfd_set_gp_size}
-@strong{Synopsis}
-@example
-void bfd_set_gp_size (bfd *abfd, unsigned int i);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_set_gp_size (bfd *abfd, unsigned int i); 
 Set the maximum size of objects to be optimized using the GP
 register under ECOFF or MIPS ELF.  This is typically set by
 the @code{-G} argument to the compiler, assembler or linker.
 
+@end deftypefn
+@findex bfd_set_gp_value
+@subsubsection @code{bfd_set_gp_value}
+@deftypefn {Function} void bfd_set_gp_value (bfd *abfd, bfd_vma v); 
+Allow external access to the fucntion to set the GP value.
+This is specifically added for gdb-compile support.
+
+@end deftypefn
 @findex bfd_scan_vma
 @subsubsection @code{bfd_scan_vma}
-@strong{Synopsis}
-@example
-bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
-@end example
-@strong{Description}@*
-Convert, like @code{strtoul}, a numerical expression
-@var{string} into a @code{bfd_vma} integer, and return that integer.
-(Though without as many bells and whistles as @code{strtoul}.)
-The expression is assumed to be unsigned (i.e., positive).
-If given a @var{base}, it is used as the base for conversion.
-A base of 0 causes the function to interpret the string
-in hex if a leading "0x" or "0X" is found, otherwise
-in octal if a leading zero is found, otherwise in decimal.
-
-If the value would overflow, the maximum @code{bfd_vma} value is
-returned.
+@deftypefn {Function} bfd_vma bfd_scan_vma (const char *string, const char **end, int base); 
+Convert, like @code{strtoul} or @code{stdtoull}depending on the size
+of a @code{bfd_vma}, a numerical expression @var{string} into a
+@code{bfd_vma} integer, and return that integer.
 
+@end deftypefn
 @findex bfd_copy_private_header_data
 @subsubsection @code{bfd_copy_private_header_data}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_copy_private_header_data (bfd *ibfd, bfd *obfd); 
 Copy private BFD header information from the BFD @var{ibfd} to the
 the BFD @var{obfd}.  This copies information that may require
 sections to exist, but does not require symbol tables.  Return
@@ -929,13 +783,10 @@ Not enough memory exists to create priva
                  (ibfd, obfd))
 @end example
 
+@end deftypefn
 @findex bfd_copy_private_bfd_data
 @subsubsection @code{bfd_copy_private_bfd_data}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd); 
 Copy private BFD information from the BFD @var{ibfd} to the
 the BFD @var{obfd}.  Return @code{TRUE} on success, @code{FALSE} on error.
 Possible error returns are:
@@ -952,13 +803,10 @@ Not enough memory exists to create priva
                  (ibfd, obfd))
 @end example
 
+@end deftypefn
 @findex bfd_set_private_flags
 @subsubsection @code{bfd_set_private_flags}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_private_flags (bfd *abfd, flagword flags); 
 Set private BFD flag information in the BFD @var{abfd}.
 Return @code{TRUE} on success, @code{FALSE} on error.  Possible error
 returns are:
@@ -974,9 +822,9 @@ Not enough memory exists to create priva
        BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
 @end example
 
+@end deftypefn
 @findex Other functions
 @subsubsection @code{Other functions}
-@strong{Description}@*
 The following functions exist but have not yet been documented.
 @example
 #define bfd_sizeof_headers(abfd, info) \
@@ -986,6 +834,11 @@ The following functions exist but have n
        BFD_SEND (abfd, _bfd_find_nearest_line, \
                  (abfd, syms, sec, off, file, func, line, NULL))
 
+#define bfd_find_nearest_line_with_alt(abfd, alt_filename, sec, syms, off, \
+                                       file, func, line, disc) \
+       BFD_SEND (abfd, _bfd_find_nearest_line_with_alt, \
+                 (abfd, alt_filename, syms, sec, off, file, func, line, disc))
+
 #define bfd_find_nearest_line_discriminator(abfd, sec, syms, off, file, func, \
                                            line, disc) \
        BFD_SEND (abfd, _bfd_find_nearest_line, \
@@ -1009,7 +862,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))
@@ -1072,148 +926,66 @@ The following functions exist but have n
 #define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
        BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
 
-extern bfd_byte *bfd_get_relocated_section_contents
-  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
-   bfd_boolean, asymbol **);
-
 @end example
 
+@findex bfd_get_relocated_section_contents
+@subsubsection @code{bfd_get_relocated_section_contents}
+@deftypefn {Function} bfd_byte *bfd_get_relocated_section_contents (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *, bool, asymbol **); 
+Read and relocate the indirect link_order section, into DATA
+(if non-NULL) or to a malloc'd buffer.  Return the buffer, or
+NULL on errors.
+
+@end deftypefn
+@findex bfd_record_phdr
+@subsubsection @code{bfd_record_phdr}
+@deftypefn {Function} bool bfd_record_phdr (bfd *, unsigned long, bool, flagword, bool, bfd_vma, bool, bool, unsigned int, struct bfd_section **); 
+Record information about an ELF program header.
+
+@end deftypefn
+@findex bfd_sprintf_vma
+@subsubsection @code{bfd_sprintf_vma}
+@deftypefn {Function} void bfd_sprintf_vma (bfd *, char *, bfd_vma); void bfd_fprintf_vma (bfd *, void *, bfd_vma); 
+bfd_sprintf_vma and bfd_fprintf_vma display an address in the
+target's address size.
+
+@end deftypefn
 @findex bfd_alt_mach_code
 @subsubsection @code{bfd_alt_mach_code}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_alt_mach_code (bfd *abfd, int alternative); 
 When more than one machine code number is available for the
 same machine type, this function can be used to switch between
 the preferred one (alternative == 0) and any others.  Currently,
 only ELF supports this feature, with up to two alternate
 machine codes.
 
+@end deftypefn
 @findex bfd_emul_get_maxpagesize
 @subsubsection @code{bfd_emul_get_maxpagesize}
-@strong{Synopsis}
-@example
-bfd_vma bfd_emul_get_maxpagesize (const char *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_vma bfd_emul_get_maxpagesize (const char *); 
 Returns the maximum page size, in bytes, as determined by
 emulation.
 
-@strong{Returns}@*
-Returns the maximum page size in bytes for ELF, 0 otherwise.
-
-@findex bfd_emul_set_maxpagesize
-@subsubsection @code{bfd_emul_set_maxpagesize}
-@strong{Synopsis}
-@example
-void bfd_emul_set_maxpagesize (const char *, bfd_vma);
-@end example
-@strong{Description}@*
-For ELF, set the maximum page size for the emulation.  It is
-a no-op for other formats.
-
+@end deftypefn
 @findex bfd_emul_get_commonpagesize
 @subsubsection @code{bfd_emul_get_commonpagesize}
-@strong{Synopsis}
-@example
-bfd_vma bfd_emul_get_commonpagesize (const char *, bfd_boolean);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_vma bfd_emul_get_commonpagesize (const char *); 
 Returns the common page size, in bytes, as determined by
 emulation.
 
-@strong{Returns}@*
-Returns the common page size in bytes for ELF, 0 otherwise.
-
-@findex bfd_emul_set_commonpagesize
-@subsubsection @code{bfd_emul_set_commonpagesize}
-@strong{Synopsis}
-@example
-void bfd_emul_set_commonpagesize (const char *, bfd_vma);
-@end example
-@strong{Description}@*
-For ELF, set the common page size for the emulation.  It is
-a no-op for other formats.
-
+@end deftypefn
 @findex bfd_demangle
 @subsubsection @code{bfd_demangle}
-@strong{Synopsis}
-@example
-char *bfd_demangle (bfd *, const char *, int);
-@end example
-@strong{Description}@*
+@deftypefn {Function} char *bfd_demangle (bfd *, const char *, int); 
 Wrapper around cplus_demangle.  Strips leading underscores and
 other such chars that would otherwise confuse the demangler.
 If passed a g++ v3 ABI mangled name, returns a buffer allocated
 with malloc holding the demangled name.  Returns NULL otherwise
 and on memory alloc failure.
 
-@findex bfd_update_compression_header
-@subsubsection @code{bfd_update_compression_header}
-@strong{Synopsis}
-@example
-void bfd_update_compression_header
-   (bfd *abfd, bfd_byte *contents, asection *sec);
-@end example
-@strong{Description}@*
-Set the compression header at CONTENTS of SEC in ABFD and update
-elf_section_flags for compression.
-
-@findex bfd_check_compression_header
-@subsubsection @code{bfd_check_compression_header}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_check_compression_header
-   (bfd *abfd, bfd_byte *contents, asection *sec,
-    bfd_size_type *uncompressed_size,
-    unsigned int *uncompressed_alignment_power);
-@end example
-@strong{Description}@*
-Check the compression header at CONTENTS of SEC in ABFD and
-store the uncompressed size in UNCOMPRESSED_SIZE and the
-uncompressed data alignment in UNCOMPRESSED_ALIGNMENT_POWER
-if the compression header is valid.
-
-@strong{Returns}@*
-Return TRUE if the compression header is valid.
-
-@findex bfd_get_compression_header_size
-@subsubsection @code{bfd_get_compression_header_size}
-@strong{Synopsis}
-@example
-int bfd_get_compression_header_size (bfd *abfd, asection *sec);
-@end example
-@strong{Description}@*
-Return the size of the compression header of SEC in ABFD.
-
-@strong{Returns}@*
-Return the size of the compression header in bytes.
-
-@findex bfd_convert_section_size
-@subsubsection @code{bfd_convert_section_size}
-@strong{Synopsis}
-@example
-bfd_size_type bfd_convert_section_size
-   (bfd *ibfd, asection *isec, bfd *obfd, bfd_size_type size);
-@end example
-@strong{Description}@*
-Convert the size @var{size} of the section @var{isec} in input
-BFD @var{ibfd} to the section size in output BFD @var{obfd}.
-
-@findex bfd_convert_section_contents
-@subsubsection @code{bfd_convert_section_contents}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_convert_section_contents
-   (bfd *ibfd, asection *isec, bfd *obfd,
-    bfd_byte **ptr, bfd_size_type *ptr_size);
-@end example
-@strong{Description}@*
-Convert the contents, stored in @var{*ptr}, of the section
-@var{isec} in input BFD @var{ibfd} to output BFD @var{obfd}
-if needed.  The original buffer pointed to by @var{*ptr} may
-be freed and @var{*ptr} is returned with memory malloc'd by this
-function, and the new size written to @var{ptr_size}.
+@end deftypefn
+@findex bfd_group_signature
+@subsubsection @code{bfd_group_signature}
+@deftypefn {Function} asymbol *bfd_group_signature (asection *group, asymbol **isympp); 
+Return a pointer to the symbol used as a signature for GROUP.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdver.texi ./bfd/doc/bfdver.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdver.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/bfdver.texi	2026-03-05 02:11:13.000000000 +0000
@@ -1,4 +1,4 @@
-@set VERSION 2.33.50
+@set VERSION 2.45.50
 @set VERSION_PACKAGE (GNU Binutils) 
-@set UPDATED March 2020
-@set BUGURL @uref{http://www.sourceware.org/bugzilla/}
+@set UPDATED March 2026
+@set BUGURL @uref{https://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.20200303/bfd/doc/bfdwin.texi ./bfd/doc/bfdwin.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/bfdwin.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/bfdwin.texi	1970-01-01 00:00:00.000000000 +0000
@@ -1,2 +0,0 @@
-@findex 
-@subsubsection @code{}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/cache.texi ./bfd/doc/cache.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/cache.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/cache.texi	2026-03-05 02:11:13.000000000 +0000
@@ -15,51 +15,57 @@ handle.
 
 @findex bfd_cache_init
 @subsubsection @code{bfd_cache_init}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_cache_init (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_cache_init (bfd *abfd); 
 Add a newly opened BFD to the cache.
 
+@end deftypefn
 @findex bfd_cache_close
 @subsubsection @code{bfd_cache_close}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_cache_close (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_cache_close (bfd *abfd); 
 Remove the BFD @var{abfd} from the cache. If the attached file is open,
 then close it too.
 
-@strong{Returns}@*
 @code{FALSE} is returned if closing the file fails, @code{TRUE} is
 returned if all is well.
 
+@end deftypefn
 @findex bfd_cache_close_all
 @subsubsection @code{bfd_cache_close_all}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_cache_close_all (void);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_cache_close_all (void); 
 Remove all BFDs from the cache. If the attached file is open,
-then close it too.
+then close it too.  Note - despite its name this function will
+close a BFD even if it is not marked as being cacheable, ie
+even if bfd_get_cacheable() returns false.
 
-@strong{Returns}@*
 @code{FALSE} is returned if closing one of the file fails, @code{TRUE} is
 returned if all is well.
 
+@end deftypefn
+@findex bfd_cache_set_uncloseable
+@subsubsection @code{bfd_cache_set_uncloseable}
+@deftypefn {Function} bool bfd_cache_set_uncloseable (bfd *abfd, bool value, bool *old); 
+Internal function to mark ABFD as either closeable or not.
+This is used by bfd_check_format_matches to avoid races
+where bfd_cache_close_all is called in another thread.
+VALUE is true to mark the BFD as temporarily uncloseable
+by the cache; false to mark it as closeable once again.
+OLD, if non-NULL, is set to the previous value of the flag.
+Returns false on error, true on success.
+
+@end deftypefn
+@findex bfd_cache_size
+@subsubsection @code{bfd_cache_size}
+@deftypefn {Function} unsigned bfd_cache_size (void); 
+Return the number of open files in the cache.
+
+@end deftypefn
 @findex bfd_open_file
 @subsubsection @code{bfd_open_file}
-@strong{Synopsis}
-@example
-FILE* bfd_open_file (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} FILE* bfd_open_file (bfd *abfd); 
 Call the OS to open a file for @var{abfd}.  Return the @code{FILE *}
 (possibly @code{NULL}) that results from this operation.  Set up the
 BFD so that future accesses know the file is open. If the @code{FILE *}
 returned is @code{NULL}, then it won't have been put in the
 cache, so it won't have to be removed from it.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/chew.c ./bfd/doc/chew.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/chew.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/chew.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* chew
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Contributed by steve chamberlain @cygnus
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -31,6 +31,9 @@
    You define new words thus:
    : <newword> <oldwords> ;
 
+   Variables are defined using:
+   variable NAME
+
 */
 
 /* Primitives provided by the program:
@@ -65,37 +68,34 @@
 	exit - fn chew_exit
 	swap
 	outputdots - strip out lines without leading dots
-	paramstuff - convert full declaration into "PARAMS" form if not already
 	maybecatstr - do catstr if internal_mode == internal_wanted, discard
 		value in any case
+	catstrif - do catstr if top of integer stack is nonzero
 	translatecomments - turn {* and *} into comment delimiters
 	kill_bogus_lines - get rid of extra newlines
 	indent
-	internalmode - pop from integer stack, set `internalmode' to that value
 	print_stack_level - print current stack depth to stderr
 	strip_trailing_newlines - go ahead, guess...
 	[quoted string] - push string onto string stack
 	[word starting with digit] - push atol(str) onto integer stack
 
+	internalmode - the internalmode variable (evaluates to address)
+
    A command must be all upper-case, and alone on a line.
 
    Foo.  */
 
-#include "ansidecl.h"
 #include <assert.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <stdlib.h>
 #include <string.h>
+#include <stdint.h>
+#include <inttypes.h>
 
 #define DEF_SIZE 5000
 #define STACK 50
 
-int internal_wanted;
-int internal_mode;
-
-int warning;
-
 /* Here is a string type ...  */
 
 typedef struct buffer
@@ -105,61 +105,105 @@ typedef struct buffer
   unsigned long size;
 } string_type;
 
-#ifdef __STDC__
-static void init_string_with_size (string_type *, unsigned int);
-static void init_string (string_type *);
-static int find (string_type *, char *);
-static void write_buffer (string_type *, FILE *);
-static void delete_string (string_type *);
-static char *addr (string_type *, unsigned int);
-static char at (string_type *, unsigned int);
-static void catchar (string_type *, int);
-static void overwrite_string (string_type *, string_type *);
-static void catbuf (string_type *, char *, unsigned int);
-static void cattext (string_type *, char *);
-static void catstr (string_type *, string_type *);
-static void die (char *);
-#endif
-
-static void
-init_string_with_size (buffer, size)
-     string_type *buffer;
-     unsigned int size;
+/* Compiled programs consist of arrays of these.  */
+
+typedef union
 {
-  buffer->write_idx = 0;
-  buffer->size = size;
-  buffer->ptr = (char *) malloc (size);
+  void (*f) (void);
+  struct dict_struct *e;
+  char *s;
+  intptr_t l;
+} pcu;
+
+typedef struct dict_struct
+{
+  char *word;
+  struct dict_struct *next;
+  pcu *code;
+  int code_length;
+  int code_end;
+} dict_type;
+
+int internal_wanted;
+intptr_t *internal_mode;
+
+int warning;
+
+string_type stack[STACK];
+string_type *tos;
+
+unsigned int pos_idx = 0; /* Pos in input buffer */
+string_type *buf_ptr; /* and the buffer */
+
+intptr_t istack[STACK];
+intptr_t *isp = &istack[0];
+
+dict_type *root;
+
+pcu *pc;
+
+static void
+die (char *msg)
+{
+  fprintf (stderr, "%s\n", msg);
+  exit (1);
+}
+
+static void *
+xmalloc (size_t size)
+{
+  void *newmem;
+
+  if (size == 0)
+    size = 1;
+  newmem = malloc (size);
+  if (!newmem)
+    die ("out of memory");
+
+  return newmem;
+}
+
+static void *
+xrealloc (void *oldmem, size_t size)
+{
+  void *newmem;
+
+  if (size == 0)
+    size = 1;
+  if (!oldmem)
+    newmem = malloc (size);
+  else
+    newmem = realloc (oldmem, size);
+  if (!newmem)
+    die ("out of memory");
+
+  return newmem;
+}
+
+static char *
+xstrdup (const char *s)
+{
+  size_t len = strlen (s) + 1;
+  char *ret = xmalloc (len);
+  return memcpy (ret, s, len);
 }
 
 static void
-init_string (buffer)
-     string_type *buffer;
+init_string_with_size (string_type *buffer, unsigned int size)
 {
-  init_string_with_size (buffer, DEF_SIZE);
+  buffer->write_idx = 0;
+  buffer->size = size;
+  buffer->ptr = xmalloc (size);
 }
 
-static int
-find (str, what)
-     string_type *str;
-     char *what;
+static void
+init_string (string_type *buffer)
 {
-  unsigned int i;
-  char *p;
-  p = what;
-  for (i = 0; i < str->write_idx && *p; i++)
-    {
-      if (*p == str->ptr[i])
-	p++;
-      else
-	p = what;
-    }
-  return (*p == 0);
+  init_string_with_size (buffer, DEF_SIZE);
 }
 
 static void
-write_buffer (buffer, f)
-     string_type *buffer;
-     FILE *f;
+write_buffer (string_type *buffer, FILE *f)
 {
   if (buffer->write_idx != 0
       && fwrite (buffer->ptr, buffer->write_idx, 1, f) != 1)
@@ -167,26 +211,20 @@ write_buffer (buffer, f)
 }
 
 static void
-delete_string (buffer)
-     string_type *buffer;
+delete_string (string_type *buffer)
 {
-  if (buffer->ptr)
-    free (buffer->ptr);
+  free (buffer->ptr);
   buffer->ptr = NULL;
 }
 
 static char *
-addr (buffer, idx)
-     string_type *buffer;
-     unsigned int idx;
+addr (string_type *buffer, unsigned int idx)
 {
   return buffer->ptr + idx;
 }
 
 static char
-at (buffer, pos)
-     string_type *buffer;
-     unsigned int pos;
+at (string_type *buffer, unsigned int pos)
 {
   if (pos >= buffer->write_idx)
     return 0;
@@ -194,23 +232,19 @@ at (buffer, pos)
 }
 
 static void
-catchar (buffer, ch)
-     string_type *buffer;
-     int ch;
+catchar (string_type *buffer, int ch)
 {
   if (buffer->write_idx == buffer->size)
     {
       buffer->size *= 2;
-      buffer->ptr = (char *) realloc (buffer->ptr, buffer->size);
+      buffer->ptr = xrealloc (buffer->ptr, buffer->size);
     }
 
   buffer->ptr[buffer->write_idx++] = ch;
 }
 
 static void
-overwrite_string (dst, src)
-     string_type *dst;
-     string_type *src;
+overwrite_string (string_type *dst, string_type *src)
 {
   free (dst->ptr);
   dst->size = src->size;
@@ -219,41 +253,32 @@ overwrite_string (dst, src)
 }
 
 static void
-catbuf (buffer, buf, len)
-     string_type *buffer;
-     char *buf;
-     unsigned int len;
+catbuf (string_type *buffer, char *buf, unsigned int len)
 {
   if (buffer->write_idx + len >= buffer->size)
     {
       while (buffer->write_idx + len >= buffer->size)
 	buffer->size *= 2;
-      buffer->ptr = (char *) realloc (buffer->ptr, buffer->size);
+      buffer->ptr = xrealloc (buffer->ptr, buffer->size);
     }
   memcpy (buffer->ptr + buffer->write_idx, buf, len);
   buffer->write_idx += len;
 }
 
 static void
-cattext (buffer, string)
-     string_type *buffer;
-     char *string;
+cattext (string_type *buffer, char *string)
 {
   catbuf (buffer, string, (unsigned int) strlen (string));
 }
 
 static void
-catstr (dst, src)
-     string_type *dst;
-     string_type *src;
+catstr (string_type *dst, string_type *src)
 {
   catbuf (dst, src->ptr, src->write_idx);
 }
 
 static unsigned int
-skip_white_and_stars (src, idx)
-     string_type *src;
-     unsigned int idx;
+skip_white_and_stars (string_type *src, unsigned int idx)
 {
   char c;
   while ((c = at (src, idx)),
@@ -268,9 +293,7 @@ skip_white_and_stars (src, idx)
 }
 
 static unsigned int
-skip_past_newline_1 (ptr, idx)
-     string_type *ptr;
-     unsigned int idx;
+skip_past_newline_1 (string_type *ptr, unsigned int idx)
 {
   while (at (ptr, idx)
 	 && at (ptr, idx) != '\n')
@@ -280,44 +303,8 @@ skip_past_newline_1 (ptr, idx)
   return idx;
 }
 
-/***********************************************************************/
-
-string_type stack[STACK];
-string_type *tos;
-
-unsigned int idx = 0; /* Pos in input buffer */
-string_type *ptr; /* and the buffer */
-typedef void (*stinst_type)();
-stinst_type *pc;
-stinst_type sstack[STACK];
-stinst_type *ssp = &sstack[0];
-long istack[STACK];
-long *isp = &istack[0];
-
-typedef int *word_type;
-
-struct dict_struct
-{
-  char *word;
-  struct dict_struct *next;
-  stinst_type *code;
-  int code_length;
-  int code_end;
-  int var;
-};
-
-typedef struct dict_struct dict_type;
-
 static void
-die (msg)
-     char *msg;
-{
-  fprintf (stderr, "%s\n", msg);
-  exit (1);
-}
-
-static void
-check_range ()
+check_range (void)
 {
   if (tos < stack)
     die ("underflow in string stack");
@@ -326,7 +313,7 @@ check_range ()
 }
 
 static void
-icheck_range ()
+icheck_range (void)
 {
   if (isp < istack)
     die ("underflow in integer stack");
@@ -334,63 +321,42 @@ icheck_range ()
     die ("overflow in integer stack");
 }
 
-#ifdef __STDC__
-static void exec (dict_type *);
-static void call (void);
-static void remchar (void), strip_trailing_newlines (void), push_number (void);
-static void push_text (void);
-static void remove_noncomments (string_type *, string_type *);
-static void print_stack_level (void);
-static void paramstuff (void), translatecomments (void);
-static void outputdots (void), courierize (void), bulletize (void);
-static void do_fancy_stuff (void);
-static int iscommand (string_type *, unsigned int);
-static int copy_past_newline (string_type *, unsigned int, string_type *);
-static void icopy_past_newline (void), kill_bogus_lines (void), indent (void);
-static void get_stuff_in_command (void), swap (void), other_dup (void);
-static void drop (void), idrop (void);
-static void icatstr (void), skip_past_newline (void), internalmode (void);
-static void maybecatstr (void);
-static char *nextword (char *, char **);
-dict_type *lookup_word (char *);
-static void perform (void);
-dict_type *newentry (char *);
-unsigned int add_to_definition (dict_type *, stinst_type);
-void add_intrinsic (char *, void (*)());
-void add_var (char *);
-void compile (char *);
-static void bang (void);
-static void atsign (void);
-static void hello (void);
-static void stdout_ (void);
-static void stderr_ (void);
-static void print (void);
-static void read_in (string_type *, FILE *);
-static void usage (void);
-static void chew_exit (void);
-#endif
+static void
+drop (void)
+{
+  tos--;
+  check_range ();
+  delete_string (tos + 1);
+  pc++;
+}
 
 static void
-exec (word)
-     dict_type *word;
+idrop (void)
+{
+  isp--;
+  icheck_range ();
+  pc++;
+}
+
+static void
+exec (dict_type *word)
 {
   pc = word->code;
-  while (*pc)
-    (*pc) ();
+  while (pc->f)
+    pc->f ();
 }
 
 static void
-call ()
+call (void)
 {
-  stinst_type *oldpc = pc;
-  dict_type *e;
-  e = (dict_type *) (pc[1]);
+  pcu *oldpc = pc;
+  dict_type *e = pc[1].e;
   exec (e);
   pc = oldpc + 2;
 }
 
 static void
-remchar ()
+remchar (void)
 {
   if (tos->write_idx)
     tos->write_idx--;
@@ -398,33 +364,41 @@ remchar ()
 }
 
 static void
-strip_trailing_newlines ()
+strip_trailing_newlines (void)
 {
-  while ((isspace ((unsigned char) at (tos, tos->write_idx - 1))
-	  || at (tos, tos->write_idx - 1) == '\n')
-	 && tos->write_idx > 0)
+  while (tos->write_idx > 0
+	 && (isspace ((unsigned char) at (tos, tos->write_idx - 1))
+	     || at (tos, tos->write_idx - 1) == '\n'))
     tos->write_idx--;
   pc++;
 }
 
 static void
-push_number ()
+push_number (void)
 {
   isp++;
   icheck_range ();
   pc++;
-  *isp = (long) (*pc);
+  *isp = pc->l;
   pc++;
 }
 
+/* This is a wrapper for push_number just so we can correctly free the
+   variable at the end.  */
+static void
+push_variable (void)
+{
+  push_number ();
+}
+
 static void
-push_text ()
+push_text (void)
 {
   tos++;
   check_range ();
   init_string (tos);
   pc++;
-  cattext (tos, *((char **) pc));
+  cattext (tos, pc->s);
   pc++;
 }
 
@@ -434,9 +408,7 @@ push_text ()
    Blank lines are turned into one blank line.  */
 
 static void
-remove_noncomments (src, dst)
-     string_type *src;
-     string_type *dst;
+remove_noncomments (string_type *src, string_type *dst)
 {
   unsigned int idx = 0;
 
@@ -487,7 +459,7 @@ remove_noncomments (src, dst)
 }
 
 static void
-print_stack_level ()
+print_stack_level (void)
 {
   fprintf (stderr, "current string stack depth = %ld, ",
 	   (long) (tos - stack));
@@ -496,89 +468,11 @@ print_stack_level ()
   pc++;
 }
 
-/* turn:
-     foobar name(stuff);
-   into:
-     foobar
-     name PARAMS ((stuff));
-   and a blank line.
- */
-
-static void
-paramstuff ()
-{
-  unsigned int openp;
-  unsigned int fname;
-  unsigned int idx;
-  unsigned int len;
-  string_type out;
-  init_string (&out);
-
-#define NO_PARAMS 1
-
-  /* Make sure that it's not already param'd or proto'd.  */
-  if (NO_PARAMS
-      || find (tos, "PARAMS") || find (tos, "PROTO") || !find (tos, "("))
-    {
-      catstr (&out, tos);
-    }
-  else
-    {
-      /* Find the open paren.  */
-      for (openp = 0; at (tos, openp) != '(' && at (tos, openp); openp++)
-	;
-
-      fname = openp;
-      /* Step back to the fname.  */
-      fname--;
-      while (fname && isspace ((unsigned char) at (tos, fname)))
-	fname--;
-      while (fname
-	     && !isspace ((unsigned char) at (tos,fname))
-	     && at (tos,fname) != '*')
-	fname--;
-
-      fname++;
-
-      /* Output type, omitting trailing whitespace character(s), if
-         any.  */
-      for (len = fname; 0 < len; len--)
-	{
-	  if (!isspace ((unsigned char) at (tos, len - 1)))
-	    break;
-	}
-      for (idx = 0; idx < len; idx++)
-	catchar (&out, at (tos, idx));
-
-      cattext (&out, "\n");	/* Insert a newline between type and fnname */
-
-      /* Output function name, omitting trailing whitespace
-         character(s), if any.  */
-      for (len = openp; 0 < len; len--)
-	{
-	  if (!isspace ((unsigned char) at (tos, len - 1)))
-	    break;
-	}
-      for (idx = fname; idx < len; idx++)
-	catchar (&out, at (tos, idx));
-
-      cattext (&out, " PARAMS (");
-
-      for (idx = openp; at (tos, idx) && at (tos, idx) != ';'; idx++)
-	catchar (&out, at (tos, idx));
-
-      cattext (&out, ");\n\n");
-    }
-  overwrite_string (tos, &out);
-  pc++;
-
-}
-
 /* turn {*
    and *} into comments */
 
 static void
-translatecomments ()
+translatecomments (void)
 {
   unsigned int idx = 0;
   string_type out;
@@ -608,9 +502,34 @@ translatecomments ()
   pc++;
 }
 
+/* Wrap tos-1 as a C comment, indenting by tos.  */
+
+static void
+wrap_comment (void)
+{
+  string_type out;
+  init_string (&out);
+
+  catstr (&out, tos);
+  cattext (&out, "/* ");
+  for (unsigned int idx = 0; at (tos - 1, idx); idx++)
+    {
+      catchar (&out, at (tos - 1, idx));
+      if (at (tos - 1, idx) == '\n' && at (tos - 1, idx + 1) != '\n')
+	{
+	  catstr (&out, tos);
+	  cattext (&out, "   ");
+	}
+    }
+  cattext (&out, "  */");
+
+  overwrite_string (tos - 1, &out);
+  drop ();
+}
+
 /* Mod tos so that only lines with leading dots remain */
 static void
-outputdots ()
+outputdots (void)
 {
   unsigned int idx = 0;
   string_type out;
@@ -622,11 +541,31 @@ outputdots ()
       if (at (tos, idx) == '.')
 	{
 	  char c;
+	  int spaces;
 
 	  idx++;
-
+	  spaces = 0;
 	  while ((c = at (tos, idx)) && c != '\n')
 	    {
+	      if (spaces >= 0)
+		{
+		  if (c == ' ')
+		    {
+		      spaces++;
+		      idx++;
+		      continue;
+		    }
+		  else
+		    {
+		      while (spaces >= 8)
+			{
+			  catchar (&out, '\t');
+			  spaces -= 8;
+			}
+		      while (spaces-- > 0)
+			catchar (&out, ' ');
+		    }
+		}
 	      if (c == '{' && at (tos, idx + 1) == '*')
 		{
 		  cattext (&out, "/*");
@@ -659,7 +598,7 @@ outputdots ()
 
 /* Find lines starting with . and | and put example around them on tos */
 static void
-courierize ()
+courierize (void)
 {
   string_type out;
   unsigned int idx = 0;
@@ -746,7 +685,7 @@ courierize ()
    itemize, inplace at TOS*/
 
 static void
-bulletize ()
+bulletize (void)
 {
   unsigned int idx = 0;
   int on = 0;
@@ -801,7 +740,7 @@ bulletize ()
 /* Turn <<foo>> into @code{foo} in place at TOS*/
 
 static void
-do_fancy_stuff ()
+do_fancy_stuff (void)
 {
   unsigned int idx = 0;
   string_type out;
@@ -840,9 +779,7 @@ do_fancy_stuff ()
 /* A command is all upper case,and alone on a line.  */
 
 static int
-iscommand (ptr, idx)
-     string_type *ptr;
-     unsigned int idx;
+iscommand (string_type *ptr, unsigned int idx)
 {
   unsigned int len = 0;
   while (at (ptr, idx))
@@ -866,10 +803,7 @@ iscommand (ptr, idx)
 }
 
 static int
-copy_past_newline (ptr, idx, dst)
-     string_type *ptr;
-     unsigned int idx;
-     string_type *dst;
+copy_past_newline (string_type *ptr, unsigned int idx, string_type *dst)
 {
   int column = 0;
 
@@ -898,20 +832,17 @@ copy_past_newline (ptr, idx, dst)
 }
 
 static void
-icopy_past_newline ()
+icopy_past_newline (void)
 {
   tos++;
   check_range ();
   init_string (tos);
-  idx = copy_past_newline (ptr, idx, tos);
+  pos_idx = copy_past_newline (buf_ptr, pos_idx, tos);
   pc++;
 }
 
-/* indent
-   Take the string at the top of the stack, do some prettying.  */
-
 static void
-kill_bogus_lines ()
+kill_bogus_lines (void)
 {
   int sl;
 
@@ -998,7 +929,42 @@ kill_bogus_lines ()
 }
 
 static void
-indent ()
+collapse_whitespace (void)
+{
+  int last_was_ws = 0;
+  int idx;
+
+  string_type out;
+  init_string (&out);
+
+  for (idx = 0; at (tos, idx) != 0; ++idx)
+    {
+      char c = at (tos, idx);
+      if (isspace (c))
+	{
+	  if (!last_was_ws)
+	    {
+	      catchar (&out, ' ');
+	      last_was_ws = 1;
+	    }
+	}
+      else
+	{
+	  catchar (&out, c);
+	  last_was_ws = 0;
+	}
+    }
+
+  pc++;
+  delete_string (tos);
+  *tos = out;
+}
+
+/* indent
+   Take the string at the top of the stack, do some prettying.  */
+
+static void
+indent (void)
 {
   string_type out;
   int tab = 0;
@@ -1010,33 +976,42 @@ indent ()
       switch (at (tos, idx))
 	{
 	case '\n':
-	  cattext (&out, "\n");
+	  catchar (&out, '\n');
 	  idx++;
 	  if (tab && at (tos, idx))
 	    {
-	      cattext (&out, "    ");
+	      int i;
+	      for (i = 0; i < tab - 1; i += 2)
+		catchar (&out, '\t');
+	      if (i < tab)
+		cattext (&out, "    ");
 	    }
 	  ol = 0;
 	  break;
 	case '(':
-	  tab++;
 	  if (ol == 0)
-	    cattext (&out, "   ");
+	    {
+	      int i;
+	      for (i = 1; i < tab - 1; i += 2)
+		catchar (&out, '\t');
+	      if (i < tab)
+		cattext (&out, "    ");
+	      cattext (&out, "   ");
+	    }
+	  tab++;
 	  idx++;
-	  cattext (&out, "(");
+	  catchar (&out, '(');
 	  ol = 1;
 	  break;
 	case ')':
 	  tab--;
-	  cattext (&out, ")");
+	  catchar (&out, ')');
 	  idx++;
 	  ol = 1;
-
 	  break;
 	default:
 	  catchar (&out, at (tos, idx));
 	  ol = 1;
-
 	  idx++;
 	  break;
 	}
@@ -1049,23 +1024,23 @@ indent ()
 }
 
 static void
-get_stuff_in_command ()
+get_stuff_in_command (void)
 {
   tos++;
   check_range ();
   init_string (tos);
 
-  while (at (ptr, idx))
+  while (at (buf_ptr, pos_idx))
     {
-      if (iscommand (ptr, idx))
+      if (iscommand (buf_ptr, pos_idx))
 	break;
-      idx = copy_past_newline (ptr, idx, tos);
+      pos_idx = copy_past_newline (buf_ptr, pos_idx, tos);
     }
   pc++;
 }
 
 static void
-swap ()
+swap (void)
 {
   string_type t;
 
@@ -1076,7 +1051,7 @@ swap ()
 }
 
 static void
-other_dup ()
+other_dup (void)
 {
   tos++;
   check_range ();
@@ -1086,65 +1061,51 @@ other_dup ()
 }
 
 static void
-drop ()
+icatstr (void)
 {
   tos--;
   check_range ();
+  catstr (tos, tos + 1);
   delete_string (tos + 1);
   pc++;
 }
 
 static void
-idrop ()
+skip_past_newline (void)
 {
-  isp--;
-  icheck_range ();
+  pos_idx = skip_past_newline_1 (buf_ptr, pos_idx);
   pc++;
 }
 
 static void
-icatstr ()
+maybecatstr (void)
 {
+  if (internal_wanted == *internal_mode)
+    {
+      catstr (tos - 1, tos);
+    }
+  delete_string (tos);
   tos--;
   check_range ();
-  catstr (tos, tos + 1);
-  delete_string (tos + 1);
   pc++;
 }
 
 static void
-skip_past_newline ()
+catstrif (void)
 {
-  idx = skip_past_newline_1 (ptr, idx);
-  pc++;
-}
-
-static void
-internalmode ()
-{
-  internal_mode = *(isp);
+  int cond = isp[0];
   isp--;
   icheck_range ();
-  pc++;
-}
-
-static void
-maybecatstr ()
-{
-  if (internal_wanted == internal_mode)
-    {
-      catstr (tos - 1, tos);
-    }
+  if (cond)
+    catstr (tos - 1, tos);
   delete_string (tos);
   tos--;
   check_range ();
   pc++;
 }
 
-char *
-nextword (string, word)
-     char *string;
-     char **word;
+static char *
+nextword (char *string, char **word)
 {
   char *word_start;
   int idx;
@@ -1197,7 +1158,7 @@ nextword (string, word)
 	}
     }
 
-  *word = (char *) malloc (length + 1);
+  *word = xmalloc (length + 1);
 
   dst = *word;
   src = word_start;
@@ -1231,11 +1192,8 @@ nextword (string, word)
     return NULL;
 }
 
-dict_type *root;
-
-dict_type *
-lookup_word (word)
-     char *word;
+static dict_type *
+lookup_word (char *word)
 {
   dict_type *ptr = root;
   while (ptr)
@@ -1258,17 +1216,21 @@ free_words (void)
     {
       dict_type *next;
 
-      if (ptr->word)
-	free (ptr->word);
+      free (ptr->word);
       if (ptr->code)
 	{
 	  int i;
 	  for (i = 0; i < ptr->code_end - 1; i ++)
-	    if (ptr->code[i] == push_text
-		&& ptr->code[i + 1])
+	    if (ptr->code[i].f == push_text
+		&& ptr->code[i + 1].s)
+	      {
+		free (ptr->code[i + 1].s - 1);
+		++i;
+	      }
+	    else if (ptr->code[i].f == push_variable)
 	      {
-		free ((char *) ptr->code[i + 1] - 1);
-		++ i;
+		free ((void *) ptr->code[i + 1].l);
+		++i;
 	      }
 	  free (ptr->code);
 	}
@@ -1283,15 +1245,15 @@ perform (void)
 {
   tos = stack;
 
-  while (at (ptr, idx))
+  while (at (buf_ptr, pos_idx))
     {
       /* It's worth looking through the command list.  */
-      if (iscommand (ptr, idx))
+      if (iscommand (buf_ptr, pos_idx))
 	{
 	  char *next;
 	  dict_type *word;
 
-	  (void) nextword (addr (ptr, idx), &next);
+	  (void) nextword (addr (buf_ptr, pos_idx), &next);
 
 	  word = lookup_word (next);
 
@@ -1303,69 +1265,72 @@ perform (void)
 	    {
 	      if (warning)
 		fprintf (stderr, "warning, %s is not recognised\n", next);
-	      skip_past_newline ();
+	      pos_idx = skip_past_newline_1 (buf_ptr, pos_idx);
 	    }
 	  free (next);
 	}
       else
-	skip_past_newline ();
+	pos_idx = skip_past_newline_1 (buf_ptr, pos_idx);
     }
 }
 
-dict_type *
-newentry (word)
-     char *word;
+static dict_type *
+newentry (char *word)
 {
-  dict_type *new_d = (dict_type *) malloc (sizeof (dict_type));
+  dict_type *new_d = xmalloc (sizeof (*new_d));
   new_d->word = word;
   new_d->next = root;
   root = new_d;
-  new_d->code = (stinst_type *) malloc (sizeof (stinst_type));
+  new_d->code = xmalloc (sizeof (*new_d->code));
   new_d->code_length = 1;
   new_d->code_end = 0;
   return new_d;
 }
 
-unsigned int
-add_to_definition (entry, word)
-     dict_type *entry;
-     stinst_type word;
+static unsigned int
+add_to_definition (dict_type *entry, pcu word)
 {
   if (entry->code_end == entry->code_length)
     {
       entry->code_length += 2;
-      entry->code =
-	(stinst_type *) realloc ((char *) (entry->code),
-				 entry->code_length * sizeof (stinst_type));
+      entry->code = xrealloc (entry->code,
+			      entry->code_length * sizeof (*entry->code));
     }
   entry->code[entry->code_end] = word;
 
   return entry->code_end++;
 }
 
-void
-add_intrinsic (name, func)
-     char *name;
-     void (*func) ();
-{
-  dict_type *new_d = newentry (strdup (name));
-  add_to_definition (new_d, func);
-  add_to_definition (new_d, 0);
+static void
+add_intrinsic (char *name, void (*func) (void))
+{
+  dict_type *new_d = newentry (xstrdup (name));
+  pcu p = { func };
+  add_to_definition (new_d, p);
+  p.f = 0;
+  add_to_definition (new_d, p);
 }
 
-void
-add_var (name)
-     char *name;
+static void
+add_variable (char *name, intptr_t *loc)
 {
   dict_type *new_d = newentry (name);
-  add_to_definition (new_d, push_number);
-  add_to_definition (new_d, (stinst_type) (&(new_d->var)));
-  add_to_definition (new_d, 0);
+  pcu p = { push_variable };
+  add_to_definition (new_d, p);
+  p.l = (intptr_t) loc;
+  add_to_definition (new_d, p);
+  p.f = 0;
+  add_to_definition (new_d, p);
 }
 
-void
-compile (string)
-     char *string;
+static void
+add_intrinsic_variable (const char *name, intptr_t *loc)
+{
+  add_variable (xstrdup (name), loc);
+}
+
+static void
+compile (char *string)
 {
   /* Add words to the dictionary.  */
   char *word;
@@ -1373,18 +1338,10 @@ compile (string)
   string = nextword (string, &word);
   while (string && *string && word[0])
     {
-      if (strcmp (word, "var") == 0)
-	{
-	  free (word);
-	  string = nextword (string, &word);
-	  if (!string)
-	    continue;
-	  add_var (word);
-	  string = nextword (string, &word);
-	}
-      else if (word[0] == ':')
+      if (word[0] == ':')
 	{
 	  dict_type *ptr;
+	  pcu p;
 
 	  /* Compile a word and add to dictionary.  */
 	  free (word);
@@ -1407,8 +1364,10 @@ compile (string)
 		case '"':
 		  /* got a string, embed magic push string
 		     function */
-		  add_to_definition (ptr, push_text);
-		  add_to_definition (ptr, (stinst_type) (word + 1));
+		  p.f = push_text;
+		  add_to_definition (ptr, p);
+		  p.s = word + 1;
+		  add_to_definition (ptr, p);
 		  break;
 		case '0':
 		case '1':
@@ -1422,56 +1381,71 @@ compile (string)
 		case '9':
 		  /* Got a number, embedd the magic push number
 		     function */
-		  add_to_definition (ptr, push_number);
-		  add_to_definition (ptr, (stinst_type) atol (word));
+		  p.f = push_number;
+		  add_to_definition (ptr, p);
+		  p.l = atol (word);
+		  add_to_definition (ptr, p);
 		  free (word);
 		  break;
 		default:
-		  add_to_definition (ptr, call);
-		  add_to_definition (ptr, (stinst_type) lookup_word (word));
+		  p.f = call;
+		  add_to_definition (ptr, p);
+		  p.e = lookup_word (word);
+		  add_to_definition (ptr, p);
 		  free (word);
 		}
 
 	      string = nextword (string, &word);
 	    }
-	  add_to_definition (ptr, 0);
+	  p.f = 0;
+	  add_to_definition (ptr, p);
+	  free (word);
+	  string = nextword (string, &word);
+	}
+      else if (strcmp (word, "variable") == 0)
+	{
 	  free (word);
 	  string = nextword (string, &word);
+	  if (!string)
+	    continue;
+	  intptr_t *loc = xmalloc (sizeof (intptr_t));
+	  *loc = 0;
+	  add_variable (word, loc);
+	  string = nextword (string, &word);
 	}
       else
 	{
 	  fprintf (stderr, "syntax error at %s\n", string - 1);
 	}
     }
-  if (word)
-    free (word);
+  free (word);
 }
 
 static void
-bang ()
+bang (void)
 {
-  *(long *) ((isp[0])) = isp[-1];
+  *(intptr_t *) ((isp[0])) = isp[-1];
   isp -= 2;
   icheck_range ();
   pc++;
 }
 
 static void
-atsign ()
+atsign (void)
 {
-  isp[0] = *(long *) (isp[0]);
+  isp[0] = *(intptr_t *) (isp[0]);
   pc++;
 }
 
 static void
-hello ()
+hello (void)
 {
   printf ("hello\n");
   pc++;
 }
 
 static void
-stdout_ ()
+stdout_ (void)
 {
   isp++;
   icheck_range ();
@@ -1480,7 +1454,7 @@ stdout_ ()
 }
 
 static void
-stderr_ ()
+stderr_ (void)
 {
   isp++;
   icheck_range ();
@@ -1489,14 +1463,14 @@ stderr_ ()
 }
 
 static void
-print ()
+print (void)
 {
   if (*isp == 1)
     write_buffer (tos, stdout);
   else if (*isp == 2)
     write_buffer (tos, stderr);
   else
-    fprintf (stderr, "print: illegal print destination `%ld'\n", *isp);
+    fprintf (stderr, "print: illegal print destination `%" PRIdPTR "'\n", *isp);
   isp--;
   tos--;
   icheck_range ();
@@ -1505,9 +1479,7 @@ print ()
 }
 
 static void
-read_in (str, file)
-     string_type *str;
-     FILE *file;
+read_in (string_type *str, FILE *file)
 {
   char buff[10000];
   unsigned int r;
@@ -1523,7 +1495,7 @@ read_in (str, file)
 }
 
 static void
-usage ()
+usage (void)
 {
   fprintf (stderr, "usage: -[d|i|g] <file >file\n");
   exit (33);
@@ -1535,15 +1507,13 @@ usage ()
    is a pointless waste of time.  */
 
 static void
-chew_exit ()
+chew_exit (void)
 {
   exit (0);
 }
 
 int
-main (ac, av)
-     int ac;
-     char *av[];
+main (int ac, char *av[])
 {
   unsigned int i;
   string_type buffer;
@@ -1553,7 +1523,7 @@ main (ac, av)
   init_string (&pptr);
   init_string (stack + 0);
   tos = stack + 1;
-  ptr = &pptr;
+  buf_ptr = &pptr;
 
   add_intrinsic ("push_text", push_text);
   add_intrinsic ("!", bang);
@@ -1579,20 +1549,25 @@ main (ac, av)
   add_intrinsic ("exit", chew_exit);
   add_intrinsic ("swap", swap);
   add_intrinsic ("outputdots", outputdots);
-  add_intrinsic ("paramstuff", paramstuff);
   add_intrinsic ("maybecatstr", maybecatstr);
+  add_intrinsic ("catstrif", catstrif);
   add_intrinsic ("translatecomments", translatecomments);
+  add_intrinsic ("wrap_comment", wrap_comment);
   add_intrinsic ("kill_bogus_lines", kill_bogus_lines);
   add_intrinsic ("indent", indent);
-  add_intrinsic ("internalmode", internalmode);
   add_intrinsic ("print_stack_level", print_stack_level);
   add_intrinsic ("strip_trailing_newlines", strip_trailing_newlines);
+  add_intrinsic ("collapse_whitespace", collapse_whitespace);
+
+  internal_mode = xmalloc (sizeof (intptr_t));
+  *internal_mode = 0;
+  add_intrinsic_variable ("internalmode", internal_mode);
 
   /* Put a nl at the start.  */
   catchar (&buffer, '\n');
 
   read_in (&buffer, stdin);
-  remove_noncomments (&buffer, ptr);
+  remove_noncomments (&buffer, buf_ptr);
   for (i = 1; i < (unsigned int) ac; i++)
     {
       if (av[i][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.20200303/bfd/doc/coffcode.texi ./bfd/doc/coffcode.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/coffcode.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/coffcode.texi	2026-03-05 02:11:13.000000000 +0000
@@ -102,9 +102,10 @@ structure.  The flag controls the genera
 in output BFDs at runtime; if it is false, as it will be by default
 when generating an executable image, long section names are truncated;
 if true, the long section names extension is employed.  The hook
-points to a function that allows the value of the flag to be altered
-at runtime, on formats that support long section names at all; on
-other formats it points to a stub that returns an error indication.
+points to a function that allows the value of a copy of the flag
+in coff object tdata to be altered at runtime, on formats that
+support long section names at all; on other formats it points
+to a stub that returns an error indication.
 
 With input BFDs, the flag is set according to whether any long section
 names are detected while reading the section headers.  For a completely
@@ -248,37 +249,38 @@ bit twiddlers, and writes out the table
 
 @findex coff_symbol_type
 @subsubsection @code{coff_symbol_type}
-@strong{Description}@*
 The hidden information for an @code{asymbol} is described in a
 @code{combined_entry_type}:
 
 
 @example
-
 typedef struct coff_ptr_struct
 @{
   /* Remembers the offset from the first symbol in the file for
-     this symbol. Generated by coff_renumber_symbols.  */
+     this symbol.  Generated by coff_renumber_symbols.  */
   unsigned int offset;
 
-  /* Should the value of this symbol be renumbered.  Used for
-     XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
-  unsigned int fix_value : 1;
+  /* Selects between the elements of the union below.  */
+  unsigned int is_sym : 1;
 
-  /* Should the tag field of this symbol be renumbered.
-     Created by coff_pointerize_aux.  */
+  /* Selects between the elements of the x_sym.x_tagndx union.  If set,
+     p is valid and the field will be renumbered.  */
   unsigned int fix_tag : 1;
 
-  /* Should the endidx field of this symbol be renumbered.
-     Created by coff_pointerize_aux.  */
+  /* Selects between the elements of the x_sym.x_fcnary.x_fcn.x_endndx
+     union.  If set, p is valid and the field will be renumbered.  */
   unsigned int fix_end : 1;
 
-  /* Should the x_csect.x_scnlen field be renumbered.
-     Created by coff_pointerize_aux.  */
+  /* Selects between the elements of the x_csect.x_scnlen union.  If set,
+     p is valid and the field will be renumbered.  */
   unsigned int fix_scnlen : 1;
 
-  /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
-     index into the line number entries.  Set by coff_slurp_symbol_table.  */
+  /* If set, u.syment.n_value contains a pointer to a symbol.  The final
+     value will be the offset field.  Used for XCOFF C_BSTAT symbols.  */
+  unsigned int fix_value : 1;
+
+  /* If set, u.syment.n_value is an index into the line number entries.
+     Used for XCOFF C_BINCL/C_EINCL symbols.  */
   unsigned int fix_line : 1;
 
   /* The container for the symbol structure as read and translated
@@ -289,11 +291,11 @@ typedef struct coff_ptr_struct
     struct internal_syment syment;
   @} u;
 
- /* Selector for the union above.  */
- bfd_boolean is_sym;
+ /* An extra pointer which can used by format based on COFF (like XCOFF)
+    to provide extra information to their backend.  */
+ void *extrap;
 @} combined_entry_type;
 
-
 /* Each canonical asymbol really looks like this: */
 
 typedef struct coff_symbol_struct
@@ -308,36 +310,14 @@ typedef struct coff_symbol_struct
   struct lineno_cache_entry *lineno;
 
   /* Have the line numbers been relocated yet ? */
-  bfd_boolean done_lineno;
+  bool done_lineno;
 @} coff_symbol_type;
+
 @end example
 @findex bfd_coff_backend_data
 @subsubsection @code{bfd_coff_backend_data}
 
 @example
-/* COFF symbol classifications.  */
-
-enum coff_symbol_classification
-@{
-  /* Global symbol.  */
-  COFF_SYMBOL_GLOBAL,
-  /* Common symbol.  */
-  COFF_SYMBOL_COMMON,
-  /* Undefined symbol.  */
-  COFF_SYMBOL_UNDEFINED,
-  /* Local symbol.  */
-  COFF_SYMBOL_LOCAL,
-  /* PE section symbol.  */
-  COFF_SYMBOL_PE_SECTION
-@};
-
-typedef asection * (*coff_gc_mark_hook_fn)
-  (asection *, struct bfd_link_info *, struct internal_reloc *,
-   struct coff_link_hash_entry *, struct internal_syment *);
-
-@end example
-Special entry points for gdb to swap in coff symbol table parts:
-@example
 typedef struct
 @{
   void (*_bfd_coff_swap_aux_in)
@@ -378,14 +358,14 @@ typedef struct
   unsigned int _bfd_relsz;
   unsigned int _bfd_linesz;
   unsigned int _bfd_filnmlen;
-  bfd_boolean _bfd_coff_long_filenames;
+  bool _bfd_coff_long_filenames;
 
-  bfd_boolean _bfd_coff_long_section_names;
-  bfd_boolean (*_bfd_coff_set_long_section_names)
+  bool _bfd_coff_long_section_names;
+  bool (*_bfd_coff_set_long_section_names)
     (bfd *, int);
 
   unsigned int _bfd_coff_default_section_alignment_power;
-  bfd_boolean _bfd_coff_force_symnames_in_strings;
+  bool _bfd_coff_force_symnames_in_strings;
   unsigned int _bfd_coff_debug_string_prefix_length;
   unsigned int _bfd_coff_max_nscns;
 
@@ -401,38 +381,38 @@ typedef struct
   void (*_bfd_coff_swap_reloc_in)
     (bfd *abfd, void *, void *);
 
-  bfd_boolean (*_bfd_coff_bad_format_hook)
+  bool (*_bfd_coff_bad_format_hook)
     (bfd *, void *);
 
-  bfd_boolean (*_bfd_coff_set_arch_mach_hook)
+  bool (*_bfd_coff_set_arch_mach_hook)
     (bfd *, void *);
 
   void * (*_bfd_coff_mkobject_hook)
     (bfd *, void *, void *);
 
-  bfd_boolean (*_bfd_styp_to_sec_flags_hook)
+  bool (*_bfd_styp_to_sec_flags_hook)
     (bfd *, void *, const char *, asection *, flagword *);
 
   void (*_bfd_set_alignment_hook)
     (bfd *, asection *, void *);
 
-  bfd_boolean (*_bfd_coff_slurp_symbol_table)
+  bool (*_bfd_coff_slurp_symbol_table)
     (bfd *);
 
-  bfd_boolean (*_bfd_coff_symname_in_debug)
+  bool (*_bfd_coff_symname_in_debug)
     (bfd *, struct internal_syment *);
 
-  bfd_boolean (*_bfd_coff_pointerize_aux_hook)
+  bool (*_bfd_coff_pointerize_aux_hook)
     (bfd *, combined_entry_type *, combined_entry_type *,
      unsigned int, combined_entry_type *);
 
-  bfd_boolean (*_bfd_coff_print_aux)
+  bool (*_bfd_coff_print_aux)
     (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
      combined_entry_type *, unsigned int);
 
-  void (*_bfd_coff_reloc16_extra_cases)
+  bool (*_bfd_coff_reloc16_extra_cases)
     (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
-     bfd_byte *, unsigned int *, unsigned int *);
+     bfd_byte *, size_t *, size_t *);
 
   int (*_bfd_coff_reloc16_estimate)
     (bfd *, asection *, arelent *, unsigned int,
@@ -441,13 +421,13 @@ typedef struct
   enum coff_symbol_classification (*_bfd_coff_classify_symbol)
     (bfd *, struct internal_syment *);
 
-  bfd_boolean (*_bfd_coff_compute_section_file_positions)
+  bool (*_bfd_coff_compute_section_file_positions)
     (bfd *);
 
-  bfd_boolean (*_bfd_coff_start_final_link)
+  bool (*_bfd_coff_start_final_link)
     (bfd *, struct bfd_link_info *);
 
-  bfd_boolean (*_bfd_coff_relocate_section)
+  bool (*_bfd_coff_relocate_section)
     (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
      struct internal_reloc *, struct internal_syment *, asection **);
 
@@ -455,170 +435,21 @@ typedef struct
     (bfd *, asection *, struct internal_reloc *,
      struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *);
 
-  bfd_boolean (*_bfd_coff_adjust_symndx)
+  bool (*_bfd_coff_adjust_symndx)
     (bfd *, struct bfd_link_info *, bfd *, asection *,
-     struct internal_reloc *, bfd_boolean *);
+     struct internal_reloc *, bool *);
 
-  bfd_boolean (*_bfd_coff_link_add_one_symbol)
-    (struct bfd_link_info *, bfd *, const char *, flagword,
-     asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
-     struct bfd_link_hash_entry **);
-
-  bfd_boolean (*_bfd_coff_link_output_has_begun)
+  bool (*_bfd_coff_link_output_has_begun)
     (bfd *, struct coff_final_link_info *);
 
-  bfd_boolean (*_bfd_coff_final_link_postscript)
+  bool (*_bfd_coff_final_link_postscript)
     (bfd *, struct coff_final_link_info *);
 
-  bfd_boolean (*_bfd_coff_print_pdata)
+  bool (*_bfd_coff_print_pdata)
     (bfd *, void *);
 
 @} bfd_coff_backend_data;
 
-#define coff_backend_info(abfd) \
-  ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
-
-#define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
-  ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
-
-#define bfd_coff_swap_sym_in(a,e,i) \
-  ((coff_backend_info (a)->_bfd_coff_swap_sym_in) (a,e,i))
-
-#define bfd_coff_swap_lineno_in(a,e,i) \
-  ((coff_backend_info ( a)->_bfd_coff_swap_lineno_in) (a,e,i))
-
-#define bfd_coff_swap_reloc_out(abfd, i, o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_out) (abfd, i, o))
-
-#define bfd_coff_swap_lineno_out(abfd, i, o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_lineno_out) (abfd, i, o))
-
-#define bfd_coff_swap_aux_out(a,i,t,c,ind,num,o) \
-  ((coff_backend_info (a)->_bfd_coff_swap_aux_out) (a,i,t,c,ind,num,o))
-
-#define bfd_coff_swap_sym_out(abfd, i,o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_sym_out) (abfd, i, o))
-
-#define bfd_coff_swap_scnhdr_out(abfd, i,o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_out) (abfd, i, o))
-
-#define bfd_coff_swap_filehdr_out(abfd, i,o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_out) (abfd, i, o))
-
-#define bfd_coff_swap_aouthdr_out(abfd, i,o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_out) (abfd, i, o))
-
-#define bfd_coff_filhsz(abfd) (coff_backend_info (abfd)->_bfd_filhsz)
-#define bfd_coff_aoutsz(abfd) (coff_backend_info (abfd)->_bfd_aoutsz)
-#define bfd_coff_scnhsz(abfd) (coff_backend_info (abfd)->_bfd_scnhsz)
-#define bfd_coff_symesz(abfd) (coff_backend_info (abfd)->_bfd_symesz)
-#define bfd_coff_auxesz(abfd) (coff_backend_info (abfd)->_bfd_auxesz)
-#define bfd_coff_relsz(abfd)  (coff_backend_info (abfd)->_bfd_relsz)
-#define bfd_coff_linesz(abfd) (coff_backend_info (abfd)->_bfd_linesz)
-#define bfd_coff_filnmlen(abfd) (coff_backend_info (abfd)->_bfd_filnmlen)
-#define bfd_coff_long_filenames(abfd) \
-  (coff_backend_info (abfd)->_bfd_coff_long_filenames)
-#define bfd_coff_long_section_names(abfd) \
-  (coff_backend_info (abfd)->_bfd_coff_long_section_names)
-#define bfd_coff_set_long_section_names(abfd, enable) \
-  ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable))
-#define bfd_coff_default_section_alignment_power(abfd) \
-  (coff_backend_info (abfd)->_bfd_coff_default_section_alignment_power)
-#define bfd_coff_max_nscns(abfd) \
-  (coff_backend_info (abfd)->_bfd_coff_max_nscns)
-
-#define bfd_coff_swap_filehdr_in(abfd, i,o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_filehdr_in) (abfd, i, o))
-
-#define bfd_coff_swap_aouthdr_in(abfd, i,o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_aouthdr_in) (abfd, i, o))
-
-#define bfd_coff_swap_scnhdr_in(abfd, i,o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_scnhdr_in) (abfd, i, o))
-
-#define bfd_coff_swap_reloc_in(abfd, i, o) \
-  ((coff_backend_info (abfd)->_bfd_coff_swap_reloc_in) (abfd, i, o))
-
-#define bfd_coff_bad_format_hook(abfd, filehdr) \
-  ((coff_backend_info (abfd)->_bfd_coff_bad_format_hook) (abfd, filehdr))
-
-#define bfd_coff_set_arch_mach_hook(abfd, filehdr)\
-  ((coff_backend_info (abfd)->_bfd_coff_set_arch_mach_hook) (abfd, filehdr))
-#define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
-  ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook)\
-   (abfd, filehdr, aouthdr))
-
-#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, section, flags_ptr)\
-  ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook)\
-   (abfd, scnhdr, name, section, flags_ptr))
-
-#define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
-  ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
-
-#define bfd_coff_slurp_symbol_table(abfd)\
-  ((coff_backend_info (abfd)->_bfd_coff_slurp_symbol_table) (abfd))
-
-#define bfd_coff_symname_in_debug(abfd, sym)\
-  ((coff_backend_info (abfd)->_bfd_coff_symname_in_debug) (abfd, sym))
-
-#define bfd_coff_force_symnames_in_strings(abfd)\
-  (coff_backend_info (abfd)->_bfd_coff_force_symnames_in_strings)
-
-#define bfd_coff_debug_string_prefix_length(abfd)\
-  (coff_backend_info (abfd)->_bfd_coff_debug_string_prefix_length)
-
-#define bfd_coff_print_aux(abfd, file, base, symbol, aux, indaux)\
-  ((coff_backend_info (abfd)->_bfd_coff_print_aux)\
-   (abfd, file, base, symbol, aux, indaux))
-
-#define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
-                                     reloc, data, src_ptr, dst_ptr)\
-  ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
-   (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
-
-#define bfd_coff_reloc16_estimate(abfd, section, reloc, shrink, link_info)\
-  ((coff_backend_info (abfd)->_bfd_coff_reloc16_estimate)\
-   (abfd, section, reloc, shrink, link_info))
-
-#define bfd_coff_classify_symbol(abfd, sym)\
-  ((coff_backend_info (abfd)->_bfd_coff_classify_symbol)\
-   (abfd, sym))
-
-#define bfd_coff_compute_section_file_positions(abfd)\
-  ((coff_backend_info (abfd)->_bfd_coff_compute_section_file_positions)\
-   (abfd))
-
-#define bfd_coff_start_final_link(obfd, info)\
-  ((coff_backend_info (obfd)->_bfd_coff_start_final_link)\
-   (obfd, info))
-#define bfd_coff_relocate_section(obfd,info,ibfd,o,con,rel,isyms,secs)\
-  ((coff_backend_info (ibfd)->_bfd_coff_relocate_section)\
-   (obfd, info, ibfd, o, con, rel, isyms, secs))
-#define bfd_coff_rtype_to_howto(abfd, sec, rel, h, sym, addendp)\
-  ((coff_backend_info (abfd)->_bfd_coff_rtype_to_howto)\
-   (abfd, sec, rel, h, sym, addendp))
-#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
-  ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
-   (obfd, info, ibfd, sec, rel, adjustedp))
-#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
-                                     value, string, cp, coll, hashp)\
-  ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
-   (info, abfd, name, flags, section, value, string, cp, coll, hashp))
-
-#define bfd_coff_link_output_has_begun(a,p) \
-  ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
-#define bfd_coff_final_link_postscript(a,p) \
-  ((coff_backend_info (a)->_bfd_coff_final_link_postscript) (a, p))
-
-#define bfd_coff_have_print_pdata(a) \
-  (coff_backend_info (a)->_bfd_coff_print_pdata)
-#define bfd_coff_print_pdata(a,p) \
-  ((coff_backend_info (a)->_bfd_coff_print_pdata) (a, p))
-
-/* Macro: Returns true if the bfd is a PE executable as opposed to a
-   PE object file.  */
-#define bfd_pei_p(abfd) \
-  (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))
 @end example
 @subsubsection Writing relocations
 To write relocations, the back end steps though the
@@ -677,5 +508,14 @@ The reloc index is turned into a pointer
 structure, in a back end specific way. For instance, the 386
 uses the @code{r_type} to directly produce an index
 into a howto table vector.
+
+@item
+Note that @code{arelent.addend} for COFF is often not what
+most people understand as a relocation addend, but rather an
+adjustment to the relocation addend stored in section contents
+of relocatable object files.  The value found in section
+contents may also be confusing, depending on both symbol value
+and addend somewhat similar to the field value for a
+final-linked object.  See @code{CALC_ADDEND}.
 @end itemize
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/corefile.texi ./bfd/doc/corefile.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/corefile.texi	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/doc/corefile.texi	2026-03-05 02:11:13.000000000 +0000
@@ -0,0 +1,52 @@
+@section Core files
+
+
+@subsection Core file functions
+
+
+These are functions pertaining to core files.
+
+@findex bfd_core_file_failing_command
+@subsubsection @code{bfd_core_file_failing_command}
+@deftypefn {Function} const char *bfd_core_file_failing_command (bfd *abfd); 
+Return a read-only string explaining which program was running
+when it failed and produced the core file @var{abfd}.
+
+@end deftypefn
+@findex bfd_core_file_failing_signal
+@subsubsection @code{bfd_core_file_failing_signal}
+@deftypefn {Function} int bfd_core_file_failing_signal (bfd *abfd); 
+Returns the signal number which caused the core dump which
+generated the file the BFD @var{abfd} is attached to.
+
+@end deftypefn
+@findex bfd_core_file_pid
+@subsubsection @code{bfd_core_file_pid}
+@deftypefn {Function} int bfd_core_file_pid (bfd *abfd); 
+Returns the PID of the process the core dump the BFD
+@var{abfd} is attached to was generated from.
+
+@end deftypefn
+@findex core_file_matches_executable_p
+@subsubsection @code{core_file_matches_executable_p}
+@deftypefn {Function} bool core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd); 
+Return @code{TRUE} if the core file attached to @var{core_bfd}
+was generated by a run of the executable file attached to
+@var{exec_bfd}, @code{FALSE} otherwise.
+
+@end deftypefn
+@findex generic_core_file_matches_executable_p
+@subsubsection @code{generic_core_file_matches_executable_p}
+@deftypefn {Function} bool generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd); 
+Return TRUE if the core file attached to @var{core_bfd}
+was generated by a run of the executable file attached
+to @var{exec_bfd}.  The match is based on executable
+basenames only.
+
+Note: When not able to determine the core file failing
+command or the executable name, we still return TRUE even
+though we're not sure that core file and executable match.
+This is to avoid generating a false warning in situations
+where we really don't know whether they match or not.
+
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/core.texi ./bfd/doc/core.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/core.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/core.texi	1970-01-01 00:00:00.000000000 +0000
@@ -1,70 +0,0 @@
-@section Core files
-
-
-@subsection Core file functions
-
-
-@strong{Description}@*
-These are functions pertaining to core files.
-
-@findex bfd_core_file_failing_command
-@subsubsection @code{bfd_core_file_failing_command}
-@strong{Synopsis}
-@example
-const char *bfd_core_file_failing_command (bfd *abfd);
-@end example
-@strong{Description}@*
-Return a read-only string explaining which program was running
-when it failed and produced the core file @var{abfd}.
-
-@findex bfd_core_file_failing_signal
-@subsubsection @code{bfd_core_file_failing_signal}
-@strong{Synopsis}
-@example
-int bfd_core_file_failing_signal (bfd *abfd);
-@end example
-@strong{Description}@*
-Returns the signal number which caused the core dump which
-generated the file the BFD @var{abfd} is attached to.
-
-@findex bfd_core_file_pid
-@subsubsection @code{bfd_core_file_pid}
-@strong{Synopsis}
-@example
-int bfd_core_file_pid (bfd *abfd);
-@end example
-@strong{Description}@*
-Returns the PID of the process the core dump the BFD
-@var{abfd} is attached to was generated from.
-
-@findex core_file_matches_executable_p
-@subsubsection @code{core_file_matches_executable_p}
-@strong{Synopsis}
-@example
-bfd_boolean core_file_matches_executable_p
-   (bfd *core_bfd, bfd *exec_bfd);
-@end example
-@strong{Description}@*
-Return @code{TRUE} if the core file attached to @var{core_bfd}
-was generated by a run of the executable file attached to
-@var{exec_bfd}, @code{FALSE} otherwise.
-
-@findex generic_core_file_matches_executable_p
-@subsubsection @code{generic_core_file_matches_executable_p}
-@strong{Synopsis}
-@example
-bfd_boolean generic_core_file_matches_executable_p
-   (bfd *core_bfd, bfd *exec_bfd);
-@end example
-@strong{Description}@*
-Return TRUE if the core file attached to @var{core_bfd}
-was generated by a run of the executable file attached
-to @var{exec_bfd}.  The match is based on executable
-basenames only.
-
-Note: When not able to determine the core file failing
-command or the executable name, we still return TRUE even
-though we're not sure that core file and executable match.
-This is to avoid generating a false warning in situations
-where we really don't know whether they match or not.
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/doc.str ./bfd/doc/doc.str
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/doc.str	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/doc.str	2026-03-05 02:07:20.000000000 +0000
@@ -1,3 +1,27 @@
+- Documentation extraction program for chew.
+-  Copyright (C) 1990-2025 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.
+
+- chew.c keywords defined here put output into doc/*.texi files
+- from comments in the source.  See also proto.str.
+
+-  True if SYNOPSIS was seen.
+variable synopsis_seen
+
 : DOCDD
 	skip_past_newline
 	get_stuff_in_command kill_bogus_lines catstr
@@ -11,7 +35,6 @@
 	skip_past_newline	
 	get_stuff_in_command kill_bogus_lines do_fancy_stuff translatecomments 
 	courierize catstr
-
 	;
 
 : INODE 
@@ -30,14 +53,14 @@
 
 : SYNOPSIS
 	skip_past_newline
-	"@strong{Synopsis}\n" catstr
-	"@example\n" catstr
+	1 synopsis_seen !
+	"@deftypefn {Function} " catstr
 	get_stuff_in_command  
 	kill_bogus_lines
+	collapse_whitespace
 	indent
 	catstr
-	"@end example\n" catstr
-
+	"\n" catstr
 	;
 
 : func
@@ -52,18 +75,6 @@
 	catstr 	catstr 	catstr 	catstr 	catstr 
 	;
 
-: FUNCTION
-	"@findex "	- a
-	skip_past_newline
-	copy_past_newline
-	dup		- a x x 
-	"@subsubsection @code{" - a x x b 
-	swap
-	remchar
-	"}\n" - a x b x c
-	catstr 	catstr 	catstr 	catstr 	catstr 
-	;
-
 : bodytext
 	get_stuff_in_command 
 	bulletize
@@ -96,28 +107,29 @@
 	bodytext
 	;
 
-
-
-	
 : DESCRIPTION 
-	"@strong{Description}@*\n" catstr subhead ;
+	subhead
+	"@end deftypefn\n" synopsis_seen @ catstrif
+	0 synopsis_seen !
+	;
 
-: RETURNS
-	"@strong{Returns}@*\n" catstr subhead ;
+: FUNCTION
+	func ;
 
 : INTERNAL_FUNCTION
 	func ;
 
+: DEFINITION
+	func ;
 
-: INTERNAL_DEFINITION 
+: INTERNAL_DEFINITION
 	func ;
 
+: EXTERNAL
+	COMMENT ;
 
 : INTERNAL
-	func ;
-
-: TYPEDEF
-	FUNCTION ;
+	COMMENT ;
 
 : SENUM
 	skip_past_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.20200303/bfd/doc/format.texi ./bfd/doc/format.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/format.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/format.texi	2026-03-05 02:11:13.000000000 +0000
@@ -28,11 +28,7 @@ The BFD contains the result of an execut
 
 @findex bfd_check_format
 @subsubsection @code{bfd_check_format}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_check_format (bfd *abfd, bfd_format format); 
 Verify if the file attached to the BFD @var{abfd} is compatible
 with the format @var{format} (i.e., one of @code{bfd_object},
 @code{bfd_archive} or @code{bfd_core}).
@@ -68,45 +64,42 @@ none of the backends recognised the file
 @code{bfd_error_file_ambiguously_recognized} -
 more than one backend recognised the file format.
 @end itemize
+When calling bfd_check_format (or bfd_check_format_matches),
+any underlying file descriptor will be kept open for the
+duration of the call.  This is done to avoid races when
+another thread calls bfd_cache_close_all.  In this scenario,
+the thread calling bfd_check_format must call bfd_cache_close
+itself.
 
+@end deftypefn
 @findex bfd_check_format_matches
 @subsubsection @code{bfd_check_format_matches}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_check_format_matches
-   (bfd *abfd, bfd_format format, char ***matching);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching); 
 Like @code{bfd_check_format}, except when it returns FALSE with
-@code{bfd_errno} set to @code{bfd_error_file_ambiguously_recognized}.  In that
-case, if @var{matching} is not NULL, it will be filled in with
-a NULL-terminated list of the names of the formats that matched,
-allocated with @code{malloc}.
+@code{bfd_errno} set to @code{bfd_error_file_ambiguously_recognized}.
+In that case, if @var{matching} is not NULL, it will be filled
+in with a NULL-terminated list of the names of the formats
+that matched, allocated with @code{malloc}.
 Then the user may choose a format and try again.
 
 When done with the list that @var{matching} points to, the caller
 should free it.
 
+@end deftypefn
 @findex bfd_set_format
 @subsubsection @code{bfd_set_format}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_format (bfd *abfd, bfd_format format); 
 This function sets the file format of the BFD @var{abfd} to the
 format @var{format}. If the target set in the BFD does not
 support the format requested, the format is invalid, or the BFD
 is not open for writing, then an error occurs.
 
+@end deftypefn
 @findex bfd_format_string
 @subsubsection @code{bfd_format_string}
-@strong{Synopsis}
-@example
-const char *bfd_format_string (bfd_format format);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char *bfd_format_string (bfd_format format); 
 Return a pointer to a const string
 @code{invalid}, @code{object}, @code{archive}, @code{core}, or @code{unknown},
 depending upon the value of @var{format}.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/hash.texi ./bfd/doc/hash.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/hash.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/hash.texi	2026-03-05 02:11:13.000000000 +0000
@@ -206,7 +206,6 @@ struct bfd_hash_entry *
   return (struct bfd_hash_entry *) ret;
 @}
 @end example
-@strong{Description}@*
 The creation routine for the linker hash table, which is in
 @code{linker.c}, looks just like this example.
 @var{function_name} is @code{_bfd_link_hash_newfunc}.
@@ -245,3 +244,111 @@ linker hash table, uses macros for the l
 routines.  These are @code{aout_link_hash_lookup} and
 @code{aout_link_hash_traverse} in aoutx.h.
 
+@findex bfd_hash_table_init_n
+@subsubsection @code{bfd_hash_table_init_n}
+@deftypefn {Function} bool bfd_hash_table_init_n (struct bfd_hash_table *, struct bfd_hash_entry *(* {*newfunc*}) (struct bfd_hash_entry *, struct bfd_hash_table *, const char *), unsigned int {*entsize*}, unsigned int {*size*}); 
+Create a new hash table, given a number of entries.
+
+@end deftypefn
+@findex bfd_hash_table_init
+@subsubsection @code{bfd_hash_table_init}
+@deftypefn {Function} bool bfd_hash_table_init (struct bfd_hash_table *, struct bfd_hash_entry *(* {*newfunc*}) (struct bfd_hash_entry *, struct bfd_hash_table *, const char *), unsigned int {*entsize*}); 
+Create a new hash table with the default number of entries.
+
+@end deftypefn
+@findex bfd_hash_table_free
+@subsubsection @code{bfd_hash_table_free}
+@deftypefn {Function} void bfd_hash_table_free (struct bfd_hash_table *); 
+Free a hash table.
+
+@end deftypefn
+@findex bfd_hash_lookup
+@subsubsection @code{bfd_hash_lookup}
+@deftypefn {Function} struct bfd_hash_entry *bfd_hash_lookup (struct bfd_hash_table *, const char *, bool {*create*}, bool {*copy*}); 
+Look up a string in a hash table.
+
+@end deftypefn
+@findex bfd_hash_insert
+@subsubsection @code{bfd_hash_insert}
+@deftypefn {Function} struct bfd_hash_entry *bfd_hash_insert (struct bfd_hash_table *, const char *, unsigned long {*hash*}); 
+Insert an entry in a hash table.
+
+@end deftypefn
+@findex bfd_hash_rename
+@subsubsection @code{bfd_hash_rename}
+@deftypefn {Function} void bfd_hash_rename (struct bfd_hash_table *, const char *, struct bfd_hash_entry *); 
+Rename an entry in a hash table.
+
+@end deftypefn
+@findex bfd_hash_replace
+@subsubsection @code{bfd_hash_replace}
+@deftypefn {Function} void bfd_hash_replace (struct bfd_hash_table *, struct bfd_hash_entry * {*old*}, struct bfd_hash_entry * {*new*}); 
+Replace an entry in a hash table.
+
+@end deftypefn
+@findex bfd_hash_allocate
+@subsubsection @code{bfd_hash_allocate}
+@deftypefn {Function} void *bfd_hash_allocate (struct bfd_hash_table *, unsigned int {*size*}); 
+Allocate space in a hash table.
+
+@end deftypefn
+@findex bfd_hash_newfunc
+@subsubsection @code{bfd_hash_newfunc}
+@deftypefn {Function} struct bfd_hash_entry *bfd_hash_newfunc (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); 
+Base method for creating a new hash table entry.
+
+@end deftypefn
+@findex bfd_hash_traverse
+@subsubsection @code{bfd_hash_traverse}
+@deftypefn {Function} void bfd_hash_traverse (struct bfd_hash_table *, bool (*) (struct bfd_hash_entry *, void *), void *); 
+Traverse a hash table.
+
+@end deftypefn
+@findex bfd_hash_set_default_size
+@subsubsection @code{bfd_hash_set_default_size}
+@deftypefn {Function} unsigned int bfd_hash_set_default_size (unsigned int); 
+Set hash table default size.
+
+@end deftypefn
+@findex _bfd_stringtab_init
+@subsubsection @code{_bfd_stringtab_init}
+@deftypefn {Function} struct bfd_strtab_hash *_bfd_stringtab_init (void); 
+Create a new strtab.
+
+@end deftypefn
+@findex _bfd_xcoff_stringtab_init
+@subsubsection @code{_bfd_xcoff_stringtab_init}
+@deftypefn {Function} struct bfd_strtab_hash *_bfd_xcoff_stringtab_init (bool {*isxcoff64*}); 
+Create a new strtab in which the strings are output in the format
+used in the XCOFF .debug section: a two byte length precedes each
+string.
+
+@end deftypefn
+@findex _bfd_stringtab_free
+@subsubsection @code{_bfd_stringtab_free}
+@deftypefn {Function} void _bfd_stringtab_free (struct bfd_strtab_hash *); 
+Free a strtab.
+
+@end deftypefn
+@findex _bfd_stringtab_add
+@subsubsection @code{_bfd_stringtab_add}
+@deftypefn {Function} bfd_size_type _bfd_stringtab_add (struct bfd_strtab_hash *, const char *, bool {*hash*}, bool {*copy*}); 
+Get the index of a string in a strtab, adding it if it is not
+already present.  If HASH is FALSE, we don't really use the hash
+table, and we don't eliminate duplicate strings.  If COPY is true
+then store a copy of STR if creating a new entry.
+
+@end deftypefn
+@findex _bfd_stringtab_size
+@subsubsection @code{_bfd_stringtab_size}
+@deftypefn {Function} bfd_size_type _bfd_stringtab_size (struct bfd_strtab_hash *); 
+Get the number of bytes in a strtab.
+
+@end deftypefn
+@findex _bfd_stringtab_emit
+@subsubsection @code{_bfd_stringtab_emit}
+@deftypefn {Function} bool _bfd_stringtab_emit (bfd *, struct bfd_strtab_hash *); 
+Write out a strtab.  ABFD must already be at the right location in
+the file.
+
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/init.texi ./bfd/doc/init.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/init.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/init.texi	1970-01-01 00:00:00.000000000 +0000
@@ -1,24 +0,0 @@
-@section Initialization
-
-
-@subsection Initialization functions
-These are the functions that handle initializing a BFD.
-
-@findex bfd_init
-@subsubsection @code{bfd_init}
-@strong{Synopsis}
-@example
-unsigned int bfd_init (void);
-@end example
-@strong{Description}@*
-This routine must be called before any other BFD function to
-initialize magical internal data structures.
-Returns a magic number, which may be used to check
-that the bfd library is configured as expected by users.
-@example
-
-/* Value returned by bfd_init.  */
-
-#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
-@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.20200303/bfd/doc/libbfd.texi ./bfd/doc/libbfd.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/libbfd.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/libbfd.texi	2026-03-05 02:11:13.000000000 +0000
@@ -4,27 +4,102 @@
 @subsection Internal functions
 
 
-@strong{Description}@*
 These routines are used within BFD.
 They are not intended for export, but are documented here for
 completeness.
 
+@findex bfd_malloc
+@subsubsection @code{bfd_malloc}
+@deftypefn {Function} void *bfd_malloc (bfd_size_type {*size*}); 
+Returns a pointer to an allocated block of memory that is at least
+SIZE bytes long.  If SIZE is 0 then it will be treated as if it were
+1.  If SIZE is too big then NULL will be returned.
+Returns NULL upon error and sets bfd_error.
+
+@end deftypefn
+@findex bfd_realloc
+@subsubsection @code{bfd_realloc}
+@deftypefn {Function} void *bfd_realloc (void *{*mem*}, bfd_size_type {*size*}); 
+Returns a pointer to an allocated block of memory that is at least
+SIZE bytes long.  If SIZE is 0 then it will be treated as if it were
+1.  If SIZE is too big then NULL will be returned.
+If MEM is not NULL then it must point to an allocated block of memory.
+If this block is large enough then MEM may be used as the return
+value for this function, but this is not guaranteed.
+
+If MEM is not returned then the first N bytes in the returned block
+will be identical to the first N bytes in region pointed to by MEM,
+where N is the lessor of SIZE and the length of the region of memory
+currently addressed by MEM.
+
+Returns NULL upon error and sets bfd_error.
+
+@end deftypefn
+@findex bfd_realloc_or_free
+@subsubsection @code{bfd_realloc_or_free}
+@deftypefn {Function} void *bfd_realloc_or_free (void *{*mem*}, bfd_size_type {*size*}); 
+Returns a pointer to an allocated block of memory that is at least
+SIZE bytes long.  If SIZE is 0 then no memory will be allocated,
+MEM will be freed, and NULL will be returned.  This will not cause
+bfd_error to be set.
+
+If SIZE is too big then NULL will be returned and bfd_error will be
+set. 
+If MEM is not NULL then it must point to an allocated block of memory.
+If this block is large enough then MEM may be used as the return
+value for this function, but this is not guaranteed.
+
+If MEM is not returned then the first N bytes in the returned block
+will be identical to the first N bytes in region pointed to by MEM,
+where N is the lessor of SIZE and the length of the region of memory
+currently addressed by MEM.
+
+@end deftypefn
+@findex bfd_zmalloc
+@subsubsection @code{bfd_zmalloc}
+@deftypefn {Function} void *bfd_zmalloc (bfd_size_type {*size*}); 
+Returns a pointer to an allocated block of memory that is at least
+SIZE bytes long.  If SIZE is 0 then it will be treated as if it were
+1.  If SIZE is too big then NULL will be returned.
+Returns NULL upon error and sets bfd_error.
+
+If NULL is not returned then the allocated block of memory will
+have been cleared.
+
+@end deftypefn
+@findex bfd_alloc
+@subsubsection @code{bfd_alloc}
+@deftypefn {Function} void *bfd_alloc (bfd *abfd, bfd_size_type wanted); 
+Allocate a block of @var{wanted} bytes of memory attached to
+@code{abfd} and return a pointer to it.
+
+@end deftypefn
+@findex bfd_zalloc
+@subsubsection @code{bfd_zalloc}
+@deftypefn {Function} void *bfd_zalloc (bfd *abfd, bfd_size_type wanted); 
+Allocate a block of @var{wanted} bytes of zeroed memory
+attached to @code{abfd} and return a pointer to it.
+
+@end deftypefn
+@findex bfd_release
+@subsubsection @code{bfd_release}
+@deftypefn {Function} void bfd_release (bfd *, void *); 
+Free a block allocated for a BFD.
+Note: Also frees all more recently allocated blocks!
+
+@end deftypefn
 @findex bfd_write_bigendian_4byte_int
 @subsubsection @code{bfd_write_bigendian_4byte_int}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_write_bigendian_4byte_int (bfd *, unsigned int); 
 Write a 4 byte integer @var{i} to the output BFD @var{abfd}, in big
 endian order regardless of what else is going on.  This is useful in
 archives.
 
+@end deftypefn
 @findex bfd_put_size
 @subsubsection @code{bfd_put_size}
 @findex bfd_get_size
 @subsubsection @code{bfd_get_size}
-@strong{Description}@*
 These macros as used for reading and writing raw data in
 sections; each access (except for bytes) is vectored through
 the target format of the BFD and mangled accordingly. The
@@ -46,13 +121,13 @@ To detect calling these with less than a
 /* Byte swapping macros for user section data.  */
 
 #define bfd_put_8(abfd, val, ptr) \
-  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
+  ((void) (*((bfd_byte *) (ptr)) = (val) & 0xff))
 #define bfd_put_signed_8 \
   bfd_put_8
 #define bfd_get_8(abfd, ptr) \
-  ((bfd_vma) *(const unsigned char *) (ptr) & 0xff)
+  ((bfd_vma) *(const bfd_byte *) (ptr) & 0xff)
 #define bfd_get_signed_8(abfd, ptr) \
-  ((((bfd_signed_vma) *(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
+  ((((bfd_signed_vma) *(const bfd_byte *) (ptr) & 0xff) ^ 0x80) - 0x80)
 
 #define bfd_put_16(abfd, val, ptr) \
   BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
@@ -96,7 +171,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)             \
@@ -113,7 +188,6 @@ bfd_vma bfd_getl24 (const void *p);
 
 @findex bfd_h_put_size
 @subsubsection @code{bfd_h_put_size}
-@strong{Description}@*
 These macros have the same function as their @code{bfd_get_x}
 brethren, except that they are used for removing information
 for the header records of object files. Believe it or not,
@@ -181,13 +255,20 @@ order and their data in little endian or
 
 @end example
 
+@findex Byte swapping routines.
+@subsubsection @code{Byte swapping routines.}
+@deftypefn {Function} uint64_t bfd_getb64 (const void *); uint64_t bfd_getl64 (const void *); int64_t bfd_getb_signed_64 (const void *); int64_t bfd_getl_signed_64 (const void *); bfd_vma bfd_getb32 (const void *); bfd_vma bfd_getl32 (const void *); bfd_signed_vma bfd_getb_signed_32 (const void *); bfd_signed_vma bfd_getl_signed_32 (const void *); bfd_vma bfd_getb16 (const void *); bfd_vma bfd_getl16 (const void *); bfd_signed_vma bfd_getb_signed_16 (const void *); bfd_signed_vma bfd_getl_signed_16 (const void *); void bfd_putb64 (uint64_t, void *); void bfd_putl64 (uint64_t, void *); void bfd_putb32 (bfd_vma, void *); void bfd_putl32 (bfd_vma, void *); void bfd_putb24 (bfd_vma, void *); void bfd_putl24 (bfd_vma, void *); void bfd_putb16 (bfd_vma, void *); void bfd_putl16 (bfd_vma, void *); uint64_t bfd_get_bits (const void *, int, bool); void bfd_put_bits (uint64_t, void *, int, bool); 
+Read and write integers in a particular endian order.  getb
+and putb functions handle big-endian, getl and putl handle
+little-endian.  bfd_get_bits and bfd_put_bits specify
+big-endian by passing TRUE in the last parameter,
+little-endian by passing FALSE.
+
+@end deftypefn
 @findex bfd_log2
 @subsubsection @code{bfd_log2}
-@strong{Synopsis}
-@example
-unsigned int bfd_log2 (bfd_vma x);
-@end example
-@strong{Description}@*
+@deftypefn {Function} unsigned int bfd_log2 (bfd_vma x); 
 Return the log base 2 of the value supplied, rounded up.  E.g., an
 @var{x} of 1025 returns 11.  A @var{x} of 0 returns 0.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/linker.texi ./bfd/doc/linker.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/linker.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/linker.texi	2026-03-05 02:11:13.000000000 +0000
@@ -344,13 +344,49 @@ traversing the global hash table with th
 while writing out the symbols, which is written to the output
 file at the end of @code{NAME(aout,final_link)}.
 
+@findex _bfd_generic_link_add_one_symbol
+@subsubsection @code{_bfd_generic_link_add_one_symbol}
+@deftypefn {Function} bool _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, bfd *abfd, const char *name, flagword flags, asection *section, bfd_vma value, const char *string, bool copy, bool collect, struct bfd_link_hash_entry **hashp); 
+Add a symbol to the global hash table.
+ABFD is the BFD the symbol comes from.
+NAME is the name of the symbol.
+FLAGS is the BSF_* bits associated with the symbol.
+SECTION is the section in which the symbol is defined; this may be
+bfd_und_section_ptr or bfd_com_section_ptr.
+VALUE is the value of the symbol, relative to the section.
+STRING is used for either an indirect symbol, in which case it is
+the name of the symbol to indirect to, or a warning symbol, in
+which case it is the warning string.
+COPY is TRUE if NAME or STRING must be copied into locally
+allocated memory if they need to be saved.
+COLLECT is TRUE if we should automatically collect gcc constructor
+or destructor names as collect2 does.
+HASHP, if not NULL, is a place to store the created hash table
+entry; if *HASHP is not NULL, the caller has already looked up
+the hash table entry, and stored it in *HASHP.
+
+@end deftypefn
+@findex bfd_link_align_section
+@subsubsection @code{bfd_link_align_section}
+@deftypefn {Function} bool bfd_link_align_section (asection *, unsigned int); 
+Increase section alignment if the current section alignment is
+less than the requested value.  Adjust output section
+alignment too, so that linker layout adjusts for alignment on
+the current lang_size_sections pass.  This is important for
+lang_size_relro_segment.  If the output section alignment
+isn't adjusted, the linker will place the output section at an
+address depending on its current alignment.  When sizing the
+output section, input sections attached transfer any increase
+in alignment to the output section, which will affect layout
+for the next sizing pass.  Which is all well and good except
+that lang_size_relro_segment for the current sizing pass uses
+that possibly increased alignment with a layout that doesn't
+suit.
+
+@end deftypefn
 @findex bfd_link_split_section
 @subsubsection @code{bfd_link_split_section}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_link_split_section (bfd *abfd, asection *sec); 
 Return nonzero if @var{sec} should be split during a
 reloceatable or final link.
 @example
@@ -359,15 +395,10 @@ reloceatable or final link.
 
 @end example
 
+@end deftypefn
 @findex bfd_section_already_linked
 @subsubsection @code{bfd_section_already_linked}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_section_already_linked (bfd *abfd,
-    asection *sec,
-    struct bfd_link_info *info);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_section_already_linked (bfd *abfd, asection *sec, struct bfd_link_info *info); 
 Check if @var{data} has been already linked during a reloceatable
 or final link.  Return TRUE if it has.
 @example
@@ -376,15 +407,10 @@ or final link.  Return TRUE if it has.
 
 @end example
 
+@end deftypefn
 @findex bfd_generic_define_common_symbol
 @subsubsection @code{bfd_generic_define_common_symbol}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_generic_define_common_symbol
-   (bfd *output_bfd, struct bfd_link_info *info,
-    struct bfd_link_hash_entry *h);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_generic_define_common_symbol (bfd *output_bfd, struct bfd_link_info *info, struct bfd_link_hash_entry *h); 
 Convert common symbol @var{h} into a defined symbol.
 Return TRUE on success and FALSE on failure.
 @example
@@ -393,15 +419,10 @@ Return TRUE on success and FALSE on fail
 
 @end example
 
+@end deftypefn
 @findex _bfd_generic_link_hide_symbol
 @subsubsection @code{_bfd_generic_link_hide_symbol}
-@strong{Synopsis}
-@example
-void _bfd_generic_link_hide_symbol
-   (bfd *output_bfd, struct bfd_link_info *info,
-    struct bfd_link_hash_entry *h);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void _bfd_generic_link_hide_symbol (bfd *output_bfd, struct bfd_link_info *info, struct bfd_link_hash_entry *h); 
 Hide symbol @var{h}.
 This is an internal function.  It should not be called from
 outside the BFD library.
@@ -411,15 +432,10 @@ outside the BFD library.
 
 @end example
 
+@end deftypefn
 @findex bfd_generic_define_start_stop
 @subsubsection @code{bfd_generic_define_start_stop}
-@strong{Synopsis}
-@example
-struct bfd_link_hash_entry *bfd_generic_define_start_stop
-   (struct bfd_link_info *info,
-    const char *symbol, asection *sec);
-@end example
-@strong{Description}@*
+@deftypefn {Function} struct bfd_link_hash_entry *bfd_generic_define_start_stop (struct bfd_link_info *info, const char *symbol, asection *sec); 
 Define a __start, __stop, .startof. or .sizeof. symbol.
 Return the symbol or NULL if no such undefined symbol exists.
 @example
@@ -428,65 +444,44 @@ Return the symbol or NULL if no such und
 
 @end example
 
+@end deftypefn
 @findex bfd_find_version_for_sym
 @subsubsection @code{bfd_find_version_for_sym}
-@strong{Synopsis}
-@example
-struct bfd_elf_version_tree * bfd_find_version_for_sym
-   (struct bfd_elf_version_tree *verdefs,
-    const char *sym_name, bfd_boolean *hide);
-@end example
-@strong{Description}@*
+@deftypefn {Function} struct bfd_elf_version_tree * bfd_find_version_for_sym (struct bfd_elf_version_tree *verdefs, const char *sym_name, bool *hide); 
 Search an elf version script tree for symbol versioning
 info and export / don't-export status for a given symbol.
 Return non-NULL on success and NULL on failure; also sets
 the output @samp{hide} boolean parameter.
 
+@end deftypefn
 @findex bfd_hide_sym_by_version
 @subsubsection @code{bfd_hide_sym_by_version}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_hide_sym_by_version
-   (struct bfd_elf_version_tree *verdefs, const char *sym_name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_hide_sym_by_version (struct bfd_elf_version_tree *verdefs, const char *sym_name); 
 Search an elf version script tree for symbol versioning
 info for a given symbol.  Return TRUE if the symbol is hidden.
 
+@end deftypefn
 @findex bfd_link_check_relocs
 @subsubsection @code{bfd_link_check_relocs}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_link_check_relocs
-   (bfd *abfd, struct bfd_link_info *info);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_link_check_relocs (bfd *abfd, struct bfd_link_info *info); 
 Checks the relocs in ABFD for validity.
 Does not execute the relocs.
 Return TRUE if everything is OK, FALSE otherwise.
 This is the external entry point to this code.
 
+@end deftypefn
 @findex _bfd_generic_link_check_relocs
 @subsubsection @code{_bfd_generic_link_check_relocs}
-@strong{Synopsis}
-@example
-bfd_boolean _bfd_generic_link_check_relocs
-   (bfd *abfd, struct bfd_link_info *info);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool _bfd_generic_link_check_relocs (bfd *abfd, struct bfd_link_info *info); 
 Stub function for targets that do not implement reloc checking.
 Return TRUE.
 This is an internal function.  It should not be called from
 outside the BFD library.
 
+@end deftypefn
 @findex bfd_merge_private_bfd_data
 @subsubsection @code{bfd_merge_private_bfd_data}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_merge_private_bfd_data
-   (bfd *ibfd, struct bfd_link_info *info);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info); 
 Merge private BFD information from the BFD @var{ibfd} to the
 the output file BFD when linking.  Return @code{TRUE} on success,
 @code{FALSE} on error.  Possible error returns are:
@@ -501,17 +496,15 @@ Not enough memory exists to create priva
 #define bfd_merge_private_bfd_data(ibfd, info) \
        BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
                  (ibfd, info))
+
 @end example
 
+@end deftypefn
 @findex _bfd_generic_verify_endian_match
 @subsubsection @code{_bfd_generic_verify_endian_match}
-@strong{Synopsis}
-@example
-bfd_boolean _bfd_generic_verify_endian_match
-   (bfd *ibfd, struct bfd_link_info *info);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool _bfd_generic_verify_endian_match (bfd *ibfd, struct bfd_link_info *info); 
 Can be used from / for bfd_merge_private_bfd_data to check that
 endianness matches between input and output file.  Returns
 TRUE for a match, otherwise returns FALSE and emits an error.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/local.mk ./bfd/doc/local.mk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/local.mk	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/doc/local.mk	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,150 @@
+## Process this file with automake to generate Makefile.in
+##
+##   Copyright (C) 2012-2025 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 Free Software Foundation; either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; see the file COPYING3.  If not see
+## <http://www.gnu.org/licenses/>.
+##
+
+DOCFILES = \
+	%D%/aoutx.texi \
+	%D%/archive.texi \
+	%D%/archures.texi \
+	%D%/bfdio.texi \
+	%D%/bfdt.texi \
+	%D%/bfdver.texi \
+	%D%/cache.texi \
+	%D%/coffcode.texi \
+	%D%/corefile.texi \
+	%D%/elfcode.texi \
+	%D%/elf.texi \
+	%D%/format.texi \
+	%D%/hash.texi \
+	%D%/libbfd.texi \
+	%D%/linker.texi \
+	%D%/mmo.texi \
+	%D%/opncls.texi \
+	%D%/reloc.texi \
+	%D%/section.texi \
+	%D%/syms.texi \
+	%D%/targets.texi
+
+# SRCDOC, SRCPROT, SRCIPROT only used to sidestep Sun Make bug in interaction
+# between VPATH and suffix rules.  If you use GNU Make, perhaps other Makes,
+# you don't need these three:
+SRCDOC = \
+	$(srcdir)/aoutx.h $(srcdir)/archive.c \
+	$(srcdir)/archures.c $(srcdir)/bfd.c \
+	$(srcdir)/cache.c $(srcdir)/coffcode.h \
+	$(srcdir)/corefile.c $(srcdir)/elf.c \
+	$(srcdir)/elfcode.h $(srcdir)/format.c \
+	$(srcdir)/libbfd.c $(srcdir)/opncls.c \
+	$(srcdir)/reloc.c $(srcdir)/section.c \
+	$(srcdir)/syms.c $(srcdir)/targets.c \
+	$(srcdir)/hash.c $(srcdir)/linker.c \
+	$(srcdir)/mmo.c
+
+SRCPROT = $(srcdir)/archive.c $(srcdir)/archures.c \
+	$(srcdir)/bfd.c $(srcdir)/coffcode.h $(srcdir)/corefile.c \
+	$(srcdir)/format.c $(srcdir)/libbfd.c \
+	$(srcdir)/opncls.c $(srcdir)/reloc.c \
+	$(srcdir)/section.c $(srcdir)/syms.c \
+	$(srcdir)/targets.c
+
+SRCIPROT = $(srcdir)/cache.c $(srcdir)/libbfd.c \
+	$(srcdir)/bfdio.c \
+	$(srcdir)/reloc.c $(srcdir)/cpu-h8300.c \
+	$(srcdir)/archures.c
+
+TEXIDIR = $(srcdir)/../texinfo/fsf
+
+info_TEXINFOS = %D%/bfd.texi
+%C%_bfd_TEXINFOS = $(DOCFILES) %D%/bfdsumm.texi
+
+AM_MAKEINFOFLAGS = --no-split -I "$(srcdir)/%D%" -P %D%
+TEXI2DVI = texi2dvi -I "$(srcdir)/%D%" -I %D%
+
+MKDOC = %D%/chew$(EXEEXT_FOR_BUILD)
+
+$(MKDOC): %D%/chew.stamp ; @true
+%D%/chew.stamp: $(srcdir)/%D%/chew.c %D%/$(am__dirstamp)
+	$(AM_V_CCLD)$(CC_FOR_BUILD) -o %D%/chw$$$$$(EXEEXT_FOR_BUILD) $(CFLAGS_FOR_BUILD) \
+	  $(WARN_CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) \
+	  -I. -I$(srcdir) -I%D% -I$(srcdir)/../include -I$(srcdir)/../intl -I../intl \
+	  $(srcdir)/%D%/chew.c && \
+	$(SHELL) $(srcdir)/../move-if-change \
+	  %D%/chw$$$$$(EXEEXT_FOR_BUILD) $(MKDOC) && \
+	touch $@
+
+# We can't replace these rules with an implicit rule, because
+# makes without VPATH support couldn't find the .h files in `..'.
+
+# We do not depend on chew directly so that we can distribute the info
+# files, and permit people to rebuild them, without requiring the makeinfo
+# program.  If somebody tries to rebuild info, but none of the .texi files
+# have changed, then nothing will be rebuilt.
+
+REGEN_TEXI = \
+	( \
+	set -e; \
+	$(MKDOC) -f $(srcdir)/%D%/doc.str < $< > $@.tmp; \
+	texi=$@; \
+	texi=$${texi%.stamp}.texi; \
+	test -e $$texi || test ! -f $(srcdir)/$$texi || $(LN_S) $(abs_srcdir)/$$texi $$texi; \
+	$(SHELL) $(srcdir)/../move-if-change $@.tmp $$texi; \
+	touch $@; \
+	)
+
+.PRECIOUS: %D%/%.stamp
+%D%/%.texi: %D%/%.stamp ; @true
+%D%/%.stamp: $(srcdir)/%.c $(srcdir)/%D%/doc.str $(MKDOC) %D%/$(am__dirstamp)
+	$(AM_V_GEN)$(REGEN_TEXI)
+%D%/%.stamp: $(srcdir)/%.h $(srcdir)/%D%/doc.str $(MKDOC) %D%/$(am__dirstamp)
+	$(AM_V_GEN)$(REGEN_TEXI)
+
+# Avoid the %.stamp generating a builddir/bfd.texi that overrides the
+# srcdir/ as well as regenerating doc/bfd.info for each make run.
+%D%/bfd.stamp: $(srcdir)/%D%/bfd.texi ; $(AM_V_at)touch $@
+
+# We use bfdt.texi, rather than bfd.texi, to avoid conflicting with
+# bfd.texi on an 8.3 filesystem.
+%D%/bfdt.stamp: $(srcdir)/bfd.c $(srcdir)/%D%/doc.str $(MKDOC) %D%/$(am__dirstamp)
+	$(AM_V_GEN)$(REGEN_TEXI)
+
+%D%/bfdver.texi: $(srcdir)/Makefile.in
+	$(AM_V_GEN)\
+	$(MKDIR_P) $(@D); \
+	echo "@set VERSION $(VERSION)" > $@; \
+	if test -n "$(PKGVERSION)"; then \
+	  echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@; \
+	fi; \
+	echo "@set UPDATED `date '+%B %Y'`" >> $@; \
+	if test -n "$(REPORT_BUGS_TEXI)"; then \
+	  echo "@set BUGURL $(REPORT_BUGS_TEXI)" >> $@; \
+	fi
+
+noinst_TEXINFOS = %D%/bfdint.texi
+
+MOSTLYCLEANFILES += $(MKDOC) %D%/*.o %D%/*.stamp
+
+DISTCLEANFILES += %D%/bfd.?? %D%/bfd.??? texput.log
+
+MAINTAINERCLEANFILES += $(DOCFILES)
+
+html-local: %D%/bfd/index.html
+%D%/bfd/index.html: %D%/bfd.texi $(bfd_TEXINFOS) %D%/$(am__dirstamp)
+	$(AM_V_at)$(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) \
+	  --split=node -o %D%/bfd $(srcdir)/%D%/bfd.texi
+
+MAINTAINERCLEANFILES += %D%/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.20200303/bfd/doc/Makefile.am ./bfd/doc/Makefile.am
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/Makefile.am	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/Makefile.am	1970-01-01 00:00:00.000000000 +0000
@@ -1,370 +0,0 @@
-## Process this file with automake to generate Makefile.in
-#
-#   Copyright (C) 2012-2019 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 Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-#
-
-AUTOMAKE_OPTIONS = info-in-builddir no-texinfo.tex foreign
-
-DOCFILES = aoutx.texi  archive.texi archures.texi \
-	bfdt.texi  cache.texi coffcode.texi \
-	core.texi elf.texi elfcode.texi  format.texi \
-	libbfd.texi bfdwin.texi bfdio.texi \
-	opncls.texi  reloc.texi  section.texi  \
-	syms.texi  targets.texi init.texi hash.texi linker.texi \
-	mmo.texi \
-	bfdver.texi
-
-PROTOS = archive.p archures.p bfd.p \
-	 core.p format.p \
-	bfdio.p bfdwin.p \
-	libbfd.p opncls.p reloc.p \
-	section.p syms.p targets.p  \
-	format.p  core.p init.p
-
-IPROTOS = cache.ip libbfd.ip reloc.ip init.ip archures.ip coffcode.ip
-
-# SRCDOC, SRCPROT, SRCIPROT only used to sidestep Sun Make bug in interaction 
-# between VPATH and suffix rules.  If you use GNU Make, perhaps other Makes,
-# you don't need these three:
-SRCDOC = $(srcdir)/../aoutx.h  $(srcdir)/../archive.c \
-	$(srcdir)/../archures.c $(srcdir)/../bfd.c \
-	$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
-	$(srcdir)/../cache.c $(srcdir)/../coffcode.h \
-	$(srcdir)/../corefile.c $(srcdir)/../elf.c \
-	$(srcdir)/../elfcode.h  $(srcdir)/../format.c \
-	$(srcdir)/../libbfd.c $(srcdir)/../opncls.c \
-	$(srcdir)/../reloc.c  $(srcdir)/../section.c \
-	$(srcdir)/../syms.c  $(srcdir)/../targets.c \
-	$(srcdir)/../hash.c $(srcdir)/../linker.c \
-	$(srcdir)/../mmo.c
-
-SRCPROT = $(srcdir)/../archive.c $(srcdir)/../archures.c \
-	$(srcdir)/../bfd.c $(srcdir)/../coffcode.h $(srcdir)/../corefile.c \
-	$(srcdir)/../format.c $(srcdir)/../libbfd.c \
-	$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
-	$(srcdir)/../opncls.c $(srcdir)/../reloc.c \
-	$(srcdir)/../section.c $(srcdir)/../syms.c \
-	$(srcdir)/../targets.c $(srcdir)/../init.c
-
-SRCIPROT = $(srcdir)/../cache.c $(srcdir)/../libbfd.c \
-	$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
-	$(srcdir)/../reloc.c $(srcdir)/../cpu-h8300.c \
-	$(srcdir)/../cpu-i960.c $(srcdir)/../archures.c \
-	$(srcdir)/../init.c
-
-TEXIDIR = $(srcdir)/../../texinfo/fsf
-
-info_TEXINFOS = bfd.texi
-bfd_TEXINFOS = $(DOCFILES) bfdsumm.texi
-
-MKDOC = chew$(EXEEXT_FOR_BUILD)
-
-AM_CPPFLAGS = -I.. -I$(srcdir)/.. -I$(srcdir)/../../include \
-	-I$(srcdir)/../../intl -I../../intl
-
-$(MKDOC): chew.stamp ; @true
-chew.stamp: $(srcdir)/chew.c
-	$(CC_FOR_BUILD) -o chw$$$$$(EXEEXT_FOR_BUILD) $(CFLAGS_FOR_BUILD) \
-	  $(LDFLAGS_FOR_BUILD) $(H_CFLAGS) $(AM_CPPFLAGS) $(srcdir)/chew.c; \
-	$(SHELL) $(srcdir)/../../move-if-change \
-	  chw$$$$$(EXEEXT_FOR_BUILD) $(MKDOC); \
-	touch $@
-
-protos: libbfd.h libcoff.h bfd.h
-
-# We can't replace these rules with an implicit rule, because
-# makes without VPATH support couldn't find the .h files in `..'.
-
-# We do not depend on chew directly so that we can distribute the info
-# files, and permit people to rebuild them, without requiring the makeinfo
-# program.  If somebody tries to rebuild info, but none of the .texi files
-# have changed, then nothing will be rebuilt.
-
-aoutx.texi: aoutx.stamp ; @true
-aoutx.stamp: $(srcdir)/../aoutx.h $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../aoutx.h >aoutx.tmp
-	test -e aoutx.texi || test ! -f $(srcdir)/aoutx.texi || cp -p $(srcdir)/aoutx.texi .
-	$(SHELL) $(srcdir)/../../move-if-change aoutx.tmp aoutx.texi
-	touch $@
-
-archive.texi: archive.stamp ; @true
-archive.stamp: $(srcdir)/../archive.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archive.c >archive.tmp
-	test -e archive.texi || test ! -f $(srcdir)/archive.texi || cp -p $(srcdir)/archive.texi .
-	$(SHELL) $(srcdir)/../../move-if-change archive.tmp archive.texi
-	touch $@
-
-archures.texi: archures.stamp ; @true
-archures.stamp: $(srcdir)/../archures.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archures.c >archures.tmp
-	test -e archures.texi || test ! -f $(srcdir)/archures.texi || cp -p $(srcdir)/archures.texi .
-	$(SHELL) $(srcdir)/../../move-if-change archures.tmp archures.texi
-	touch $@
-
-# We use bfdt.texi, rather than bfd.texi, to avoid conflicting with
-# bfd.texi on an 8.3 filesystem.
-bfdt.texi: bfdt.stamp ; @true
-bfdt.stamp: $(srcdir)/../bfd.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfd.c >bfd.tmp
-	test -e bfdt.texi || test ! -f $(srcdir)/bfdt.texi || cp -p $(srcdir)/bfdt.texi .
-	$(SHELL) $(srcdir)/../../move-if-change bfd.tmp bfdt.texi
-	touch $@
-
-cache.texi: cache.stamp ; @true
-cache.stamp: $(srcdir)/../cache.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../cache.c >cache.tmp
-	test -e cache.texi || test ! -f $(srcdir)/cache.texi || cp -p $(srcdir)/cache.texi .
-	$(SHELL) $(srcdir)/../../move-if-change cache.tmp cache.texi
-	touch $@
-
-coffcode.texi: coffcode.stamp ; @true
-coffcode.stamp: $(srcdir)/../coffcode.h $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../coffcode.h >coffcode.tmp
-	test -e coffcode.texi || test ! -f $(srcdir)/coffcode.texi || cp -p $(srcdir)/coffcode.texi .
-	$(SHELL) $(srcdir)/../../move-if-change coffcode.tmp coffcode.texi
-	touch $@
-
-core.texi: core.stamp ; @true
-core.stamp: $(srcdir)/../corefile.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../corefile.c >core.tmp
-	test -e core.texi || test ! -f $(srcdir)/core.texi || cp -p $(srcdir)/core.texi .
-	$(SHELL) $(srcdir)/../../move-if-change core.tmp core.texi
-	touch $@
-
-elf.texi: elf.stamp ; @true
-elf.stamp: $(srcdir)/../elf.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../elf.c >elf.tmp
-	test -e elf.texi || test ! -f $(srcdir)/elf.texi || cp -p $(srcdir)/elf.texi .
-	$(SHELL) $(srcdir)/../../move-if-change elf.tmp elf.texi
-	touch $@
-
-elfcode.texi: elfcode.stamp ; @true
-elfcode.stamp: $(srcdir)/../elfcode.h $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../elfcode.h >elfcode.tmp
-	test -e elfcode.texi || test ! -f $(srcdir)/elfcode.texi || cp -p $(srcdir)/elfcode.texi .
-	$(SHELL) $(srcdir)/../../move-if-change elfcode.tmp elfcode.texi
-	touch $@
-
-mmo.texi: mmo.stamp ; @true
-mmo.stamp: $(srcdir)/../mmo.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../mmo.c >mmo.tmp
-	test -e mmo.texi || test ! -f $(srcdir)/mmo.texi || cp -p $(srcdir)/mmo.texi .
-	$(SHELL) $(srcdir)/../../move-if-change mmo.tmp mmo.texi
-	touch $@
-
-format.texi: format.stamp ; @true
-format.stamp: $(srcdir)/../format.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../format.c >format.tmp
-	test -e format.texi || test ! -f $(srcdir)/format.texi || cp -p $(srcdir)/format.texi .
-	$(SHELL) $(srcdir)/../../move-if-change format.tmp format.texi
-	touch $@
-
-libbfd.texi: libbfd.stamp ; @true
-libbfd.stamp: $(srcdir)/../libbfd.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../libbfd.c >libbfd.tmp
-	test -e libbfd.texi || test ! -f $(srcdir)/libbfd.texi || cp -p $(srcdir)/libbfd.texi .
-	$(SHELL) $(srcdir)/../../move-if-change libbfd.tmp libbfd.texi
-	touch $@
-
-bfdio.texi: bfdio.stamp ; @true
-bfdio.stamp: $(srcdir)/../bfdio.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdio.c >bfdio.tmp
-	test -e bfdio.texi || test ! -f $(srcdir)/bfdio.texi || cp -p $(srcdir)/bfdio.texi .
-	$(SHELL) $(srcdir)/../../move-if-change bfdio.tmp bfdio.texi
-	touch $@
-
-bfdwin.texi: bfdwin.stamp ; @true
-bfdwin.stamp: $(srcdir)/../bfdwin.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdwin.c >bfdwin.tmp
-	test -e bfdwin.texi || test ! -f $(srcdir)/bfdwin.texi || cp -p $(srcdir)/bfdwin.texi .
-	$(SHELL) $(srcdir)/../../move-if-change bfdwin.tmp bfdwin.texi
-	touch $@
-
-opncls.texi: opncls.stamp ; @true
-opncls.stamp: $(srcdir)/../opncls.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../opncls.c >opncls.tmp
-	test -e opncls.texi || test ! -f $(srcdir)/opncls.texi || cp -p $(srcdir)/opncls.texi .
-	$(SHELL) $(srcdir)/../../move-if-change opncls.tmp opncls.texi
-	touch $@
-
-reloc.texi: reloc.stamp ; @true
-reloc.stamp: $(srcdir)/../reloc.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../reloc.c >reloc.tmp
-	test -e reloc.texi || test ! -f $(srcdir)/reloc.texi || cp -p $(srcdir)/reloc.texi .
-	$(SHELL) $(srcdir)/../../move-if-change reloc.tmp reloc.texi
-	touch $@
-
-section.texi: section.stamp ; @true
-section.stamp: $(srcdir)/../section.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../section.c >section.tmp
-	test -e section.texi || test ! -f $(srcdir)/section.texi || cp -p $(srcdir)/section.texi .
-	$(SHELL) $(srcdir)/../../move-if-change section.tmp section.texi
-	touch $@
-
-syms.texi: syms.stamp ; @true
-syms.stamp: $(srcdir)/../syms.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../syms.c >syms.tmp
-	test -e syms.texi || test ! -f $(srcdir)/syms.texi || cp -p $(srcdir)/syms.texi .
-	$(SHELL) $(srcdir)/../../move-if-change syms.tmp syms.texi
-	touch $@
-
-targets.texi: targets.stamp ; @true
-targets.stamp: $(srcdir)/../targets.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../targets.c >targets.tmp
-	test -e targets.texi || test ! -f $(srcdir)/targets.texi || cp -p $(srcdir)/targets.texi .
-	$(SHELL) $(srcdir)/../../move-if-change targets.tmp targets.texi
-	touch $@
-
-init.texi: init.stamp ; @true
-init.stamp: $(srcdir)/../init.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../init.c >init.tmp
-	test -e init.texi || test ! -f $(srcdir)/init.texi || cp -p $(srcdir)/init.texi .
-	$(SHELL) $(srcdir)/../../move-if-change init.tmp init.texi
-	touch $@
-
-hash.texi: hash.stamp ; @true
-hash.stamp: $(srcdir)/../hash.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../hash.c >hash.tmp
-	test -e hash.texi || test ! -f $(srcdir)/hash.texi || cp -p $(srcdir)/hash.texi .
-	$(SHELL) $(srcdir)/../../move-if-change hash.tmp hash.texi
-	touch $@
-
-linker.texi: linker.stamp ; @true
-linker.stamp: $(srcdir)/../linker.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../linker.c >linker.tmp
-	test -e linker.texi || test ! -f $(srcdir)/linker.texi || cp -p $(srcdir)/linker.texi .
-	$(SHELL) $(srcdir)/../../move-if-change linker.tmp linker.texi
-	touch $@
-
-LIBBFD_H_DEP = \
-	$(srcdir)/../libbfd-in.h	\
-	$(srcdir)/../libbfd.c		\
-	$(srcdir)/../bfdio.c		\
-	$(srcdir)/../bfdwin.c		\
-	$(srcdir)/../cache.c		\
-	$(srcdir)/../reloc.c		\
-	$(srcdir)/../archures.c		\
-	$(srcdir)/../linker.c		\
-	$(srcdir)/header.sed		\
-	$(srcdir)/proto.str		\
-	$(MKDOC)
-
-libbfd.h: $(LIBBFD_H_DEP)
-	echo "$(LIBBFD_H_DEP)" | sed -f $(srcdir)/header.sed > $@
-	for file in $(LIBBFD_H_DEP); do \
-	  case $$file in \
-	    *-in.h) cat $$file >> $@ ;; \
-	    */header.sed) break ;; \
-	    *)	echo $$file | sed -e 's,.*/,,' -e 's,^,/* Extracted from ,' \
-				-e 's,$$,.  */,' >> $@ ; \
-		./$(MKDOC) -i -f $(srcdir)/proto.str < $$file >> $@ ;; \
-	  esac; \
-	done
-	echo "#ifdef __cplusplus" >> $@
-	echo "}" >> $@
-	echo "#endif" >> $@
-	echo "#endif" >> $@
-
-LIBCOFF_H_DEP = \
-	$(srcdir)/../libcoff-in.h	\
-	$(srcdir)/../coffcode.h		\
-	$(srcdir)/header.sed		\
-	$(srcdir)/proto.str		\
-	$(MKDOC)
-
-libcoff.h: $(LIBCOFF_H_DEP)
-	echo "$(LIBCOFF_H_DEP)" | sed -f $(srcdir)/header.sed > $@
-	for file in $(LIBCOFF_H_DEP); do \
-	  case $$file in \
-	    *-in.h) cat $$file >> $@ ;; \
-	    */header.sed) break ;; \
-	    *)	echo $$file | sed -e 's,.*/,,' -e 's,^,/* Extracted from ,' \
-				-e 's,$$,.  */,' >> $@ ; \
-		./$(MKDOC) -i -f $(srcdir)/proto.str < $$file >> $@ ;; \
-	  esac; \
-	done
-	echo "#ifdef __cplusplus" >> $@
-	echo "}" >> $@
-	echo "#endif" >> $@
-	echo "#endif" >> $@
-
-BFD_H_DEP = \
-	$(srcdir)/../bfd-in.h 		\
-	$(srcdir)/../init.c 		\
-	$(srcdir)/../opncls.c 		\
-	$(srcdir)/../libbfd.c 		\
-	$(srcdir)/../bfdio.c		\
-	$(srcdir)/../bfdwin.c		\
-	$(srcdir)/../section.c 		\
-	$(srcdir)/../archures.c		\
-	$(srcdir)/../reloc.c		\
-	$(srcdir)/../syms.c		\
-	$(srcdir)/../bfd.c		\
-	$(srcdir)/../archive.c		\
-	$(srcdir)/../corefile.c		\
-	$(srcdir)/../targets.c		\
-	$(srcdir)/../format.c		\
-	$(srcdir)/../linker.c		\
-	$(srcdir)/../simple.c		\
-	$(srcdir)/../compress.c		\
-	$(srcdir)/header.sed		\
-	$(srcdir)/proto.str		\
-	$(srcdir)/../version.h		\
-	$(MKDOC)
-
-bfd.h: $(BFD_H_DEP)
-	echo "$(BFD_H_DEP)" | sed -f $(srcdir)/header.sed > $@
-	for file in $(BFD_H_DEP); do \
-	  case $$file in \
-	    *-in.h) cat $$file >> $@ ;; \
-	    */header.sed) break ;; \
-	    *)	echo $$file | sed -e 's,.*/,,' -e 's,^,/* Extracted from ,' \
-				-e 's,$$,.  */,' >> $@ ; \
-		./$(MKDOC) -f $(srcdir)/proto.str < $$file >> $@ ;; \
-	  esac; \
-	done
-	echo "#ifdef __cplusplus" >> $@
-	echo "}" >> $@
-	echo "#endif" >> $@
-	echo "#endif" >> $@
-
-bfdver.texi: $(srcdir)/Makefile.in
-	@echo "creating $@"; \
-	echo "@set VERSION $(VERSION)" > bfdver.texi; \
-	if test -n "$(PKGVERSION)"; then \
-	  echo "@set VERSION_PACKAGE $(PKGVERSION)" >> bfdver.texi; \
-	fi; \
-	echo "@set UPDATED `date '+%B %Y'`" >> bfdver.texi; \
-	if test -n "$(REPORT_BUGS_TEXI)"; then \
-	  echo "@set BUGURL $(REPORT_BUGS_TEXI)" >> bfdver.texi; \
-	fi
-
-noinst_TEXINFOS = bfdint.texi
-
-MOSTLYCLEANFILES = $(MKDOC) *.o *.stamp
-
-CLEANFILES = *.p *.ip
-
-DISTCLEANFILES = bfd.?? bfd.??? bfd.h libbfd.h libcoff.h texput.log
-
-MAINTAINERCLEANFILES = $(DOCFILES)
-
-# We want install to imply install-info as per GNU standards, despite the
-# cygnus option.
-install: install-info
-
-MAINTAINERCLEANFILES += 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.20200303/bfd/doc/Makefile.in ./bfd/doc/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/Makefile.in	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/Makefile.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,1171 +0,0 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
-
-# This Makefile.in 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.
-
-@SET_MAKE@
-
-#
-#   Copyright (C) 2012-2019 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 Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# 
-# You should have received a copy of the GNU General Public License
-# along with this program; see the file COPYING3.  If not see
-# <http://www.gnu.org/licenses/>.
-#
-VPATH = @srcdir@
-am__is_gnu_make = { \
-  if test -z '$(MAKELEVEL)'; then \
-    false; \
-  elif test -n '$(MAKE_HOST)'; then \
-    true; \
-  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
-    true; \
-  else \
-    false; \
-  fi; \
-}
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-target_triplet = @target@
-subdir = doc
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
-	$(top_srcdir)/../config/depstand.m4 \
-	$(top_srcdir)/../config/gettext-sister.m4 \
-	$(top_srcdir)/../config/largefile.m4 \
-	$(top_srcdir)/../config/lead-dot.m4 \
-	$(top_srcdir)/../config/nls.m4 \
-	$(top_srcdir)/../config/override.m4 \
-	$(top_srcdir)/../config/plugins.m4 \
-	$(top_srcdir)/../config/po.m4 \
-	$(top_srcdir)/../config/progtest.m4 \
-	$(top_srcdir)/../config/stdint.m4 \
-	$(top_srcdir)/../config/zlib.m4 $(top_srcdir)/../libtool.m4 \
-	$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
-	$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
-	$(top_srcdir)/bfd.m4 $(top_srcdir)/warning.m4 \
-	$(top_srcdir)/acinclude.m4 $(top_srcdir)/version.m4 \
-	$(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
-mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
-am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
-am__v_DVIPS_0 = @echo "  DVIPS   " $@;
-am__v_DVIPS_1 = 
-AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
-am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
-am__v_MAKEINFO_0 = @echo "  MAKEINFO" $@;
-am__v_MAKEINFO_1 = 
-AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
-am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
-am__v_INFOHTML_0 = @echo "  INFOHTML" $@;
-am__v_INFOHTML_1 = 
-AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
-am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
-am__v_TEXI2DVI_0 = @echo "  TEXI2DVI" $@;
-am__v_TEXI2DVI_1 = 
-AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
-am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
-am__v_TEXI2PDF_0 = @echo "  TEXI2PDF" $@;
-am__v_TEXI2PDF_1 = 
-AM_V_texinfo = $(am__v_texinfo_@AM_V@)
-am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
-am__v_texinfo_0 = -q
-am__v_texinfo_1 = 
-AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
-am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
-am__v_texidevnull_0 = > /dev/null
-am__v_texidevnull_1 = 
-INFO_DEPS = bfd.info
-am__TEXINFO_TEX_DIR = $(srcdir)
-DVIS = bfd.dvi
-PDFS = bfd.pdf
-PSS = bfd.ps
-HTMLS = bfd.html
-TEXINFOS = bfd.texi
-TEXI2DVI = texi2dvi
-TEXI2PDF = $(TEXI2DVI) --pdf --batch
-MAKEINFOHTML = $(MAKEINFO) --html
-AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
-DVIPS = dvips
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__installdirs = "$(DESTDIR)$(infodir)"
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-am__DIST_COMMON = $(bfd_TEXINFOS) $(srcdir)/Makefile.in \
-	$(top_srcdir)/../mkinstalldirs
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-BFD_HOSTPTR_T = @BFD_HOSTPTR_T@
-BFD_HOST_64BIT_LONG = @BFD_HOST_64BIT_LONG@
-BFD_HOST_64BIT_LONG_LONG = @BFD_HOST_64BIT_LONG_LONG@
-BFD_HOST_64_BIT = @BFD_HOST_64_BIT@
-BFD_HOST_64_BIT_DEFINED = @BFD_HOST_64_BIT_DEFINED@
-BFD_HOST_U_64_BIT = @BFD_HOST_U_64_BIT@
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS = @CFLAGS@
-COREFILE = @COREFILE@
-COREFLAG = @COREFLAG@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DATADIRNAME = @DATADIRNAME@
-DEBUGDIR = @DEBUGDIR@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DSYMUTIL = @DSYMUTIL@
-DUMPBIN = @DUMPBIN@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-EXEEXT_FOR_BUILD = @EXEEXT_FOR_BUILD@
-FGREP = @FGREP@
-GENCAT = @GENCAT@
-GMSGFMT = @GMSGFMT@
-GREP = @GREP@
-HDEFINES = @HDEFINES@
-INCINTL = @INCINTL@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-INSTOBJEXT = @INSTOBJEXT@
-LD = @LD@
-LDFLAGS = @LDFLAGS@
-LIBINTL = @LIBINTL@
-LIBINTL_DEP = @LIBINTL_DEP@
-LIBM = @LIBM@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIPO = @LIPO@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-MKINSTALLDIRS = @MKINSTALLDIRS@
-MSGFMT = @MSGFMT@
-MSGMERGE = @MSGMERGE@
-NM = @NM@
-NMEDIT = @NMEDIT@
-NO_WERROR = @NO_WERROR@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-OTOOL = @OTOOL@
-OTOOL64 = @OTOOL64@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKGVERSION = @PKGVERSION@
-POSUB = @POSUB@
-RANLIB = @RANLIB@
-REPORT_BUGS_TEXI = @REPORT_BUGS_TEXI@
-REPORT_BUGS_TO = @REPORT_BUGS_TO@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHARED_LDFLAGS = @SHARED_LDFLAGS@
-SHARED_LIBADD = @SHARED_LIBADD@
-SHELL = @SHELL@
-STRIP = @STRIP@
-TDEFINES = @TDEFINES@
-USE_NLS = @USE_NLS@
-VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@
-WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@
-XGETTEXT = @XGETTEXT@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
-all_backends = @all_backends@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bfd64_libs = @bfd64_libs@
-bfd_backends = @bfd_backends@
-bfd_default_target_size = @bfd_default_target_size@
-bfd_file_ptr = @bfd_file_ptr@
-bfd_machines = @bfd_machines@
-bfd_ufile_ptr = @bfd_ufile_ptr@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-havevecs = @havevecs@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_noncanonical = @host_noncanonical@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-lt_cv_dlopen_libs = @lt_cv_dlopen_libs@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-supports_plugins = @supports_plugins@
-sysconfdir = @sysconfdir@
-target = @target@
-target_alias = @target_alias@
-target_cpu = @target_cpu@
-target_noncanonical = @target_noncanonical@
-target_os = @target_os@
-target_vendor = @target_vendor@
-tdefaults = @tdefaults@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-wordsize = @wordsize@
-zlibdir = @zlibdir@
-zlibinc = @zlibinc@
-AUTOMAKE_OPTIONS = info-in-builddir no-texinfo.tex foreign
-DOCFILES = aoutx.texi  archive.texi archures.texi \
-	bfdt.texi  cache.texi coffcode.texi \
-	core.texi elf.texi elfcode.texi  format.texi \
-	libbfd.texi bfdwin.texi bfdio.texi \
-	opncls.texi  reloc.texi  section.texi  \
-	syms.texi  targets.texi init.texi hash.texi linker.texi \
-	mmo.texi \
-	bfdver.texi
-
-PROTOS = archive.p archures.p bfd.p \
-	 core.p format.p \
-	bfdio.p bfdwin.p \
-	libbfd.p opncls.p reloc.p \
-	section.p syms.p targets.p  \
-	format.p  core.p init.p
-
-IPROTOS = cache.ip libbfd.ip reloc.ip init.ip archures.ip coffcode.ip
-
-# SRCDOC, SRCPROT, SRCIPROT only used to sidestep Sun Make bug in interaction 
-# between VPATH and suffix rules.  If you use GNU Make, perhaps other Makes,
-# you don't need these three:
-SRCDOC = $(srcdir)/../aoutx.h  $(srcdir)/../archive.c \
-	$(srcdir)/../archures.c $(srcdir)/../bfd.c \
-	$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
-	$(srcdir)/../cache.c $(srcdir)/../coffcode.h \
-	$(srcdir)/../corefile.c $(srcdir)/../elf.c \
-	$(srcdir)/../elfcode.h  $(srcdir)/../format.c \
-	$(srcdir)/../libbfd.c $(srcdir)/../opncls.c \
-	$(srcdir)/../reloc.c  $(srcdir)/../section.c \
-	$(srcdir)/../syms.c  $(srcdir)/../targets.c \
-	$(srcdir)/../hash.c $(srcdir)/../linker.c \
-	$(srcdir)/../mmo.c
-
-SRCPROT = $(srcdir)/../archive.c $(srcdir)/../archures.c \
-	$(srcdir)/../bfd.c $(srcdir)/../coffcode.h $(srcdir)/../corefile.c \
-	$(srcdir)/../format.c $(srcdir)/../libbfd.c \
-	$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
-	$(srcdir)/../opncls.c $(srcdir)/../reloc.c \
-	$(srcdir)/../section.c $(srcdir)/../syms.c \
-	$(srcdir)/../targets.c $(srcdir)/../init.c
-
-SRCIPROT = $(srcdir)/../cache.c $(srcdir)/../libbfd.c \
-	$(srcdir)/../bfdio.c $(srcdir)/../bfdwin.c \
-	$(srcdir)/../reloc.c $(srcdir)/../cpu-h8300.c \
-	$(srcdir)/../cpu-i960.c $(srcdir)/../archures.c \
-	$(srcdir)/../init.c
-
-TEXIDIR = $(srcdir)/../../texinfo/fsf
-info_TEXINFOS = bfd.texi
-bfd_TEXINFOS = $(DOCFILES) bfdsumm.texi
-MKDOC = chew$(EXEEXT_FOR_BUILD)
-AM_CPPFLAGS = -I.. -I$(srcdir)/.. -I$(srcdir)/../../include \
-	-I$(srcdir)/../../intl -I../../intl
-
-LIBBFD_H_DEP = \
-	$(srcdir)/../libbfd-in.h	\
-	$(srcdir)/../libbfd.c		\
-	$(srcdir)/../bfdio.c		\
-	$(srcdir)/../bfdwin.c		\
-	$(srcdir)/../cache.c		\
-	$(srcdir)/../reloc.c		\
-	$(srcdir)/../archures.c		\
-	$(srcdir)/../linker.c		\
-	$(srcdir)/header.sed		\
-	$(srcdir)/proto.str		\
-	$(MKDOC)
-
-LIBCOFF_H_DEP = \
-	$(srcdir)/../libcoff-in.h	\
-	$(srcdir)/../coffcode.h		\
-	$(srcdir)/header.sed		\
-	$(srcdir)/proto.str		\
-	$(MKDOC)
-
-BFD_H_DEP = \
-	$(srcdir)/../bfd-in.h 		\
-	$(srcdir)/../init.c 		\
-	$(srcdir)/../opncls.c 		\
-	$(srcdir)/../libbfd.c 		\
-	$(srcdir)/../bfdio.c		\
-	$(srcdir)/../bfdwin.c		\
-	$(srcdir)/../section.c 		\
-	$(srcdir)/../archures.c		\
-	$(srcdir)/../reloc.c		\
-	$(srcdir)/../syms.c		\
-	$(srcdir)/../bfd.c		\
-	$(srcdir)/../archive.c		\
-	$(srcdir)/../corefile.c		\
-	$(srcdir)/../targets.c		\
-	$(srcdir)/../format.c		\
-	$(srcdir)/../linker.c		\
-	$(srcdir)/../simple.c		\
-	$(srcdir)/../compress.c		\
-	$(srcdir)/header.sed		\
-	$(srcdir)/proto.str		\
-	$(srcdir)/../version.h		\
-	$(MKDOC)
-
-noinst_TEXINFOS = bfdint.texi
-MOSTLYCLEANFILES = $(MKDOC) *.o *.stamp
-CLEANFILES = *.p *.ip
-DISTCLEANFILES = bfd.?? bfd.??? bfd.h libbfd.h libcoff.h texput.log
-MAINTAINERCLEANFILES = $(DOCFILES) bfd.info
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .dvi .ps
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign doc/Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-bfd.info: bfd.texi $(bfd_TEXINFOS)
-	$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
-	rm -rf $$backupdir && mkdir $$backupdir && \
-	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
-	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
-	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
-	  done; \
-	else :; fi && \
-	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
-	 -o $@ `test -f 'bfd.texi' || echo '$(srcdir)/'`bfd.texi; \
-	then \
-	  rc=0; \
-	else \
-	  rc=$$?; \
-	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
-	fi; \
-	rm -rf $$backupdir; exit $$rc
-
-bfd.dvi: bfd.texi $(bfd_TEXINFOS) 
-	$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
-	$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
-	`test -f 'bfd.texi' || echo '$(srcdir)/'`bfd.texi
-
-bfd.pdf: bfd.texi $(bfd_TEXINFOS) 
-	$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
-	$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
-	`test -f 'bfd.texi' || echo '$(srcdir)/'`bfd.texi
-
-bfd.html: bfd.texi $(bfd_TEXINFOS) 
-	$(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
-	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
-	 -o $(@:.html=.htp) `test -f 'bfd.texi' || echo '$(srcdir)/'`bfd.texi; \
-	then \
-	  rm -rf $@ && mv $(@:.html=.htp) $@; \
-	else \
-	  rm -rf $(@:.html=.htp); exit 1; \
-	fi
-.dvi.ps:
-	$(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-	$(DVIPS) $(AM_V_texinfo) -o $@ $<
-
-uninstall-dvi-am:
-	@$(NORMAL_UNINSTALL)
-	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(dvidir)/$$f"; \
-	done
-
-uninstall-html-am:
-	@$(NORMAL_UNINSTALL)
-	@list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
-	  rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
-	done
-
-uninstall-info-am:
-	@$(PRE_UNINSTALL)
-	@if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
-	  list='$(INFO_DEPS)'; \
-	  for file in $$list; do \
-	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
-	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
-	    if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
-	    then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
-	  done; \
-	else :; fi
-	@$(NORMAL_UNINSTALL)
-	@list='$(INFO_DEPS)'; \
-	for file in $$list; do \
-	  relfile=`echo "$$file" | sed 's|^.*/||'`; \
-	  relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
-	  (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
-	     echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
-	     rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
-	   else :; fi); \
-	done
-
-uninstall-pdf-am:
-	@$(NORMAL_UNINSTALL)
-	@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
-	done
-
-uninstall-ps-am:
-	@$(NORMAL_UNINSTALL)
-	@list='$(PSS)'; test -n "$(psdir)" || list=; \
-	for p in $$list; do \
-	  $(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(psdir)/$$f"; \
-	done
-
-dist-info: $(INFO_DEPS)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	list='$(INFO_DEPS)'; \
-	for base in $$list; do \
-	  case $$base in \
-	    $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
-	  esac; \
-	  if test -f $$base; then d=.; else d=$(srcdir); fi; \
-	  base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
-	  for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
-	    if test -f $$file; then \
-	      relfile=`expr "$$file" : "$$d/\(.*\)"`; \
-	      test -f "$(distdir)/$$relfile" || \
-		cp -p $$file "$(distdir)/$$relfile"; \
-	    else :; fi; \
-	  done; \
-	done
-
-mostlyclean-aminfo:
-	-rm -rf bfd.t2d bfd.t2p
-
-clean-aminfo:
-	-test -z "bfd.dvi bfd.pdf bfd.ps bfd.html" \
-	|| rm -rf bfd.dvi bfd.pdf bfd.ps bfd.html
-
-maintainer-clean-aminfo:
-	@list='$(INFO_DEPS)'; for i in $$list; do \
-	  i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
-	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
-	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
-	done
-tags TAGS:
-
-ctags CTAGS:
-
-cscope cscopelist:
-
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-	$(MAKE) $(AM_MAKEFLAGS) \
-	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
-	  dist-info
-check-am: all-am
-check: check-am
-all-am: Makefile $(INFO_DEPS)
-installdirs:
-	for dir in "$(DESTDIR)$(infodir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-	-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
-
-clean-generic:
-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-aminfo clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic
-
-dvi: dvi-am
-
-dvi-am: $(DVIS)
-
-html: html-am
-
-html-am: $(HTMLS)
-
-info: info-am
-
-info-am: $(INFO_DEPS)
-
-install-data-am: install-info-am
-
-install-dvi: install-dvi-am
-
-install-dvi-am: $(DVIS)
-	@$(NORMAL_INSTALL)
-	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
-	done
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am: $(HTMLS)
-	@$(NORMAL_INSTALL)
-	@list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  $(am__strip_dir) \
-	  d2=$$d$$p; \
-	  if test -d "$$d2"; then \
-	    echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
-	    $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
-	    echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
-	    $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
-	  else \
-	    list2="$$list2 $$d2"; \
-	  fi; \
-	done; \
-	test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
-	done; }
-install-info: install-info-am
-
-install-info-am: $(INFO_DEPS)
-	@$(NORMAL_INSTALL)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
-	fi; \
-	for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	  esac; \
-	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
-	  file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
-	  for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
-	               $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
-	    if test -f $$ifile; then \
-	      echo "$$ifile"; \
-	    else : ; fi; \
-	  done; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
-	@$(POST_INSTALL)
-	@if $(am__can_run_installinfo); then \
-	  list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
-	  for file in $$list; do \
-	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
-	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
-	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
-	  done; \
-	else : ; fi
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am: $(PDFS)
-	@$(NORMAL_INSTALL)
-	@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
-install-ps: install-ps-am
-
-install-ps-am: $(PSS)
-	@$(NORMAL_INSTALL)
-	@list='$(PSS)'; test -n "$(psdir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
-	fi; \
-	for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  echo "$$d$$p"; \
-	done | $(am__base_list) | \
-	while read files; do \
-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-aminfo \
-	maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am: $(PDFS)
-
-ps: ps-am
-
-ps-am: $(PSS)
-
-uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \
-	uninstall-pdf-am uninstall-ps-am
-
-.MAKE: install-am install-strip
-
-.PHONY: all all-am check check-am clean clean-aminfo clean-generic \
-	clean-libtool cscopelist-am ctags-am dist-info distclean \
-	distclean-generic distclean-libtool distdir dvi dvi-am html \
-	html-am info info-am install install-am install-data \
-	install-data-am install-dvi install-dvi-am install-exec \
-	install-exec-am install-html install-html-am install-info \
-	install-info-am install-man install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
-	mostlyclean-aminfo mostlyclean-generic mostlyclean-libtool pdf \
-	pdf-am ps ps-am tags-am uninstall uninstall-am \
-	uninstall-dvi-am uninstall-html-am uninstall-info-am \
-	uninstall-pdf-am uninstall-ps-am
-
-.PRECIOUS: Makefile
-
-
-$(MKDOC): chew.stamp ; @true
-chew.stamp: $(srcdir)/chew.c
-	$(CC_FOR_BUILD) -o chw$$$$$(EXEEXT_FOR_BUILD) $(CFLAGS_FOR_BUILD) \
-	  $(LDFLAGS_FOR_BUILD) $(H_CFLAGS) $(AM_CPPFLAGS) $(srcdir)/chew.c; \
-	$(SHELL) $(srcdir)/../../move-if-change \
-	  chw$$$$$(EXEEXT_FOR_BUILD) $(MKDOC); \
-	touch $@
-
-protos: libbfd.h libcoff.h bfd.h
-
-# We can't replace these rules with an implicit rule, because
-# makes without VPATH support couldn't find the .h files in `..'.
-
-# We do not depend on chew directly so that we can distribute the info
-# files, and permit people to rebuild them, without requiring the makeinfo
-# program.  If somebody tries to rebuild info, but none of the .texi files
-# have changed, then nothing will be rebuilt.
-
-aoutx.texi: aoutx.stamp ; @true
-aoutx.stamp: $(srcdir)/../aoutx.h $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../aoutx.h >aoutx.tmp
-	test -e aoutx.texi || test ! -f $(srcdir)/aoutx.texi || cp -p $(srcdir)/aoutx.texi .
-	$(SHELL) $(srcdir)/../../move-if-change aoutx.tmp aoutx.texi
-	touch $@
-
-archive.texi: archive.stamp ; @true
-archive.stamp: $(srcdir)/../archive.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archive.c >archive.tmp
-	test -e archive.texi || test ! -f $(srcdir)/archive.texi || cp -p $(srcdir)/archive.texi .
-	$(SHELL) $(srcdir)/../../move-if-change archive.tmp archive.texi
-	touch $@
-
-archures.texi: archures.stamp ; @true
-archures.stamp: $(srcdir)/../archures.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../archures.c >archures.tmp
-	test -e archures.texi || test ! -f $(srcdir)/archures.texi || cp -p $(srcdir)/archures.texi .
-	$(SHELL) $(srcdir)/../../move-if-change archures.tmp archures.texi
-	touch $@
-
-# We use bfdt.texi, rather than bfd.texi, to avoid conflicting with
-# bfd.texi on an 8.3 filesystem.
-bfdt.texi: bfdt.stamp ; @true
-bfdt.stamp: $(srcdir)/../bfd.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfd.c >bfd.tmp
-	test -e bfdt.texi || test ! -f $(srcdir)/bfdt.texi || cp -p $(srcdir)/bfdt.texi .
-	$(SHELL) $(srcdir)/../../move-if-change bfd.tmp bfdt.texi
-	touch $@
-
-cache.texi: cache.stamp ; @true
-cache.stamp: $(srcdir)/../cache.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../cache.c >cache.tmp
-	test -e cache.texi || test ! -f $(srcdir)/cache.texi || cp -p $(srcdir)/cache.texi .
-	$(SHELL) $(srcdir)/../../move-if-change cache.tmp cache.texi
-	touch $@
-
-coffcode.texi: coffcode.stamp ; @true
-coffcode.stamp: $(srcdir)/../coffcode.h $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../coffcode.h >coffcode.tmp
-	test -e coffcode.texi || test ! -f $(srcdir)/coffcode.texi || cp -p $(srcdir)/coffcode.texi .
-	$(SHELL) $(srcdir)/../../move-if-change coffcode.tmp coffcode.texi
-	touch $@
-
-core.texi: core.stamp ; @true
-core.stamp: $(srcdir)/../corefile.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../corefile.c >core.tmp
-	test -e core.texi || test ! -f $(srcdir)/core.texi || cp -p $(srcdir)/core.texi .
-	$(SHELL) $(srcdir)/../../move-if-change core.tmp core.texi
-	touch $@
-
-elf.texi: elf.stamp ; @true
-elf.stamp: $(srcdir)/../elf.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../elf.c >elf.tmp
-	test -e elf.texi || test ! -f $(srcdir)/elf.texi || cp -p $(srcdir)/elf.texi .
-	$(SHELL) $(srcdir)/../../move-if-change elf.tmp elf.texi
-	touch $@
-
-elfcode.texi: elfcode.stamp ; @true
-elfcode.stamp: $(srcdir)/../elfcode.h $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../elfcode.h >elfcode.tmp
-	test -e elfcode.texi || test ! -f $(srcdir)/elfcode.texi || cp -p $(srcdir)/elfcode.texi .
-	$(SHELL) $(srcdir)/../../move-if-change elfcode.tmp elfcode.texi
-	touch $@
-
-mmo.texi: mmo.stamp ; @true
-mmo.stamp: $(srcdir)/../mmo.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../mmo.c >mmo.tmp
-	test -e mmo.texi || test ! -f $(srcdir)/mmo.texi || cp -p $(srcdir)/mmo.texi .
-	$(SHELL) $(srcdir)/../../move-if-change mmo.tmp mmo.texi
-	touch $@
-
-format.texi: format.stamp ; @true
-format.stamp: $(srcdir)/../format.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../format.c >format.tmp
-	test -e format.texi || test ! -f $(srcdir)/format.texi || cp -p $(srcdir)/format.texi .
-	$(SHELL) $(srcdir)/../../move-if-change format.tmp format.texi
-	touch $@
-
-libbfd.texi: libbfd.stamp ; @true
-libbfd.stamp: $(srcdir)/../libbfd.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../libbfd.c >libbfd.tmp
-	test -e libbfd.texi || test ! -f $(srcdir)/libbfd.texi || cp -p $(srcdir)/libbfd.texi .
-	$(SHELL) $(srcdir)/../../move-if-change libbfd.tmp libbfd.texi
-	touch $@
-
-bfdio.texi: bfdio.stamp ; @true
-bfdio.stamp: $(srcdir)/../bfdio.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdio.c >bfdio.tmp
-	test -e bfdio.texi || test ! -f $(srcdir)/bfdio.texi || cp -p $(srcdir)/bfdio.texi .
-	$(SHELL) $(srcdir)/../../move-if-change bfdio.tmp bfdio.texi
-	touch $@
-
-bfdwin.texi: bfdwin.stamp ; @true
-bfdwin.stamp: $(srcdir)/../bfdwin.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../bfdwin.c >bfdwin.tmp
-	test -e bfdwin.texi || test ! -f $(srcdir)/bfdwin.texi || cp -p $(srcdir)/bfdwin.texi .
-	$(SHELL) $(srcdir)/../../move-if-change bfdwin.tmp bfdwin.texi
-	touch $@
-
-opncls.texi: opncls.stamp ; @true
-opncls.stamp: $(srcdir)/../opncls.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../opncls.c >opncls.tmp
-	test -e opncls.texi || test ! -f $(srcdir)/opncls.texi || cp -p $(srcdir)/opncls.texi .
-	$(SHELL) $(srcdir)/../../move-if-change opncls.tmp opncls.texi
-	touch $@
-
-reloc.texi: reloc.stamp ; @true
-reloc.stamp: $(srcdir)/../reloc.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../reloc.c >reloc.tmp
-	test -e reloc.texi || test ! -f $(srcdir)/reloc.texi || cp -p $(srcdir)/reloc.texi .
-	$(SHELL) $(srcdir)/../../move-if-change reloc.tmp reloc.texi
-	touch $@
-
-section.texi: section.stamp ; @true
-section.stamp: $(srcdir)/../section.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../section.c >section.tmp
-	test -e section.texi || test ! -f $(srcdir)/section.texi || cp -p $(srcdir)/section.texi .
-	$(SHELL) $(srcdir)/../../move-if-change section.tmp section.texi
-	touch $@
-
-syms.texi: syms.stamp ; @true
-syms.stamp: $(srcdir)/../syms.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../syms.c >syms.tmp
-	test -e syms.texi || test ! -f $(srcdir)/syms.texi || cp -p $(srcdir)/syms.texi .
-	$(SHELL) $(srcdir)/../../move-if-change syms.tmp syms.texi
-	touch $@
-
-targets.texi: targets.stamp ; @true
-targets.stamp: $(srcdir)/../targets.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../targets.c >targets.tmp
-	test -e targets.texi || test ! -f $(srcdir)/targets.texi || cp -p $(srcdir)/targets.texi .
-	$(SHELL) $(srcdir)/../../move-if-change targets.tmp targets.texi
-	touch $@
-
-init.texi: init.stamp ; @true
-init.stamp: $(srcdir)/../init.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../init.c >init.tmp
-	test -e init.texi || test ! -f $(srcdir)/init.texi || cp -p $(srcdir)/init.texi .
-	$(SHELL) $(srcdir)/../../move-if-change init.tmp init.texi
-	touch $@
-
-hash.texi: hash.stamp ; @true
-hash.stamp: $(srcdir)/../hash.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../hash.c >hash.tmp
-	test -e hash.texi || test ! -f $(srcdir)/hash.texi || cp -p $(srcdir)/hash.texi .
-	$(SHELL) $(srcdir)/../../move-if-change hash.tmp hash.texi
-	touch $@
-
-linker.texi: linker.stamp ; @true
-linker.stamp: $(srcdir)/../linker.c $(srcdir)/doc.str $(MKDOC)
-	./$(MKDOC) -f $(srcdir)/doc.str < $(srcdir)/../linker.c >linker.tmp
-	test -e linker.texi || test ! -f $(srcdir)/linker.texi || cp -p $(srcdir)/linker.texi .
-	$(SHELL) $(srcdir)/../../move-if-change linker.tmp linker.texi
-	touch $@
-
-libbfd.h: $(LIBBFD_H_DEP)
-	echo "$(LIBBFD_H_DEP)" | sed -f $(srcdir)/header.sed > $@
-	for file in $(LIBBFD_H_DEP); do \
-	  case $$file in \
-	    *-in.h) cat $$file >> $@ ;; \
-	    */header.sed) break ;; \
-	    *)	echo $$file | sed -e 's,.*/,,' -e 's,^,/* Extracted from ,' \
-				-e 's,$$,.  */,' >> $@ ; \
-		./$(MKDOC) -i -f $(srcdir)/proto.str < $$file >> $@ ;; \
-	  esac; \
-	done
-	echo "#ifdef __cplusplus" >> $@
-	echo "}" >> $@
-	echo "#endif" >> $@
-	echo "#endif" >> $@
-
-libcoff.h: $(LIBCOFF_H_DEP)
-	echo "$(LIBCOFF_H_DEP)" | sed -f $(srcdir)/header.sed > $@
-	for file in $(LIBCOFF_H_DEP); do \
-	  case $$file in \
-	    *-in.h) cat $$file >> $@ ;; \
-	    */header.sed) break ;; \
-	    *)	echo $$file | sed -e 's,.*/,,' -e 's,^,/* Extracted from ,' \
-				-e 's,$$,.  */,' >> $@ ; \
-		./$(MKDOC) -i -f $(srcdir)/proto.str < $$file >> $@ ;; \
-	  esac; \
-	done
-	echo "#ifdef __cplusplus" >> $@
-	echo "}" >> $@
-	echo "#endif" >> $@
-	echo "#endif" >> $@
-
-bfd.h: $(BFD_H_DEP)
-	echo "$(BFD_H_DEP)" | sed -f $(srcdir)/header.sed > $@
-	for file in $(BFD_H_DEP); do \
-	  case $$file in \
-	    *-in.h) cat $$file >> $@ ;; \
-	    */header.sed) break ;; \
-	    *)	echo $$file | sed -e 's,.*/,,' -e 's,^,/* Extracted from ,' \
-				-e 's,$$,.  */,' >> $@ ; \
-		./$(MKDOC) -f $(srcdir)/proto.str < $$file >> $@ ;; \
-	  esac; \
-	done
-	echo "#ifdef __cplusplus" >> $@
-	echo "}" >> $@
-	echo "#endif" >> $@
-	echo "#endif" >> $@
-
-bfdver.texi: $(srcdir)/Makefile.in
-	@echo "creating $@"; \
-	echo "@set VERSION $(VERSION)" > bfdver.texi; \
-	if test -n "$(PKGVERSION)"; then \
-	  echo "@set VERSION_PACKAGE $(PKGVERSION)" >> bfdver.texi; \
-	fi; \
-	echo "@set UPDATED `date '+%B %Y'`" >> bfdver.texi; \
-	if test -n "$(REPORT_BUGS_TEXI)"; then \
-	  echo "@set BUGURL $(REPORT_BUGS_TEXI)" >> bfdver.texi; \
-	fi
-
-# We want install to imply install-info as per GNU standards, despite the
-# cygnus option.
-install: install-info
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/makefile.vms ./bfd/doc/makefile.vms
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/makefile.vms	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/makefile.vms	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2025 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.20200303/bfd/doc/opncls.texi ./bfd/doc/opncls.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/opncls.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/opncls.texi	2026-03-05 02:11:13.000000000 +0000
@@ -1,22 +1,30 @@
-
-@example
-/* Set to N to open the next N BFDs using an alternate id space.  */
-extern unsigned int bfd_use_reserved_id;
-@end example
 @section Opening and closing BFDs
 
 
 @subsection Functions for opening and closing
 
 
+@findex _bfd_new_bfd
+@subsubsection @code{_bfd_new_bfd}
+@deftypefn {Function} bfd *_bfd_new_bfd (void); 
+Return a new BFD.  All BFD's are allocated through this routine.
+
+@end deftypefn
+@findex _bfd_new_bfd_contained_in
+@subsubsection @code{_bfd_new_bfd_contained_in}
+@deftypefn {Function} bfd *_bfd_new_bfd_contained_in (bfd *); 
+Allocate a new BFD as a member of archive OBFD.
+
+@end deftypefn
+@findex _bfd_free_cached_info
+@subsubsection @code{_bfd_free_cached_info}
+@deftypefn {Function} bool _bfd_free_cached_info (bfd *); 
+Free objalloc memory.
+
+@end deftypefn
 @findex bfd_fopen
 @subsubsection @code{bfd_fopen}
-@strong{Synopsis}
-@example
-bfd *bfd_fopen (const char *filename, const char *target,
-    const char *mode, int fd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd *bfd_fopen (const char *filename, const char *target, const char *mode, int fd); 
 Open the file @var{filename} with the target @var{target}.
 Return a pointer to the created BFD.  If @var{fd} is not -1,
 then @code{fdopen} is used to open the file; otherwise, @code{fopen}
@@ -37,13 +45,10 @@ On error, @var{fd} is always closed.
 A copy of the @var{filename} argument is stored in the newly created
 BFD.  It can be accessed via the bfd_get_filename() macro.
 
+@end deftypefn
 @findex bfd_openr
 @subsubsection @code{bfd_openr}
-@strong{Synopsis}
-@example
-bfd *bfd_openr (const char *filename, const char *target);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd *bfd_openr (const char *filename, const char *target); 
 Open the file @var{filename} (using @code{fopen}) with the target
 @var{target}.  Return a pointer to the created BFD.
 
@@ -57,13 +62,10 @@ are @code{bfd_error_no_memory}, @code{bf
 A copy of the @var{filename} argument is stored in the newly created
 BFD.  It can be accessed via the bfd_get_filename() macro.
 
+@end deftypefn
 @findex bfd_fdopenr
 @subsubsection @code{bfd_fdopenr}
-@strong{Synopsis}
-@example
-bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd *bfd_fdopenr (const char *filename, const char *target, int fd); 
 @code{bfd_fdopenr} is to @code{bfd_fopenr} much like @code{fdopen} is to
 @code{fopen}.  It opens a BFD on a file already described by the
 @var{fd} supplied.
@@ -86,40 +88,27 @@ On error, @var{fd} is closed.
 A copy of the @var{filename} argument is stored in the newly created
 BFD.  It can be accessed via the bfd_get_filename() macro.
 
+@end deftypefn
+@findex bfd_fdopenw
+@subsubsection @code{bfd_fdopenw}
+@deftypefn {Function} bfd *bfd_fdopenw (const char *filename, const char *target, int fd); 
+@code{bfd_fdopenw} is exactly like @code{bfd_fdopenr} with the exception that
+the resulting BFD is suitable for output.
+
+@end deftypefn
 @findex bfd_openstreamr
 @subsubsection @code{bfd_openstreamr}
-@strong{Synopsis}
-@example
-bfd *bfd_openstreamr (const char * filename, const char * target,
-    void * stream);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd *bfd_openstreamr (const char * filename, const char * target, void * stream); 
 Open a BFD for read access on an existing stdio stream.  When
 the BFD is passed to @code{bfd_close}, the stream will be closed.
 
 A copy of the @var{filename} argument is stored in the newly created
 BFD.  It can be accessed via the bfd_get_filename() macro.
 
+@end deftypefn
 @findex bfd_openr_iovec
 @subsubsection @code{bfd_openr_iovec}
-@strong{Synopsis}
-@example
-bfd *bfd_openr_iovec (const char *filename, const char *target,
-    void *(*open_func) (struct bfd *nbfd,
-    void *open_closure),
-    void *open_closure,
-    file_ptr (*pread_func) (struct bfd *nbfd,
-    void *stream,
-    void *buf,
-    file_ptr nbytes,
-    file_ptr offset),
-    int (*close_func) (struct bfd *nbfd,
-    void *stream),
-    int (*stat_func) (struct bfd *abfd,
-    void *stream,
-    struct stat *sb));
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd *bfd_openr_iovec (const char *filename, const char *target, void *(*open_func) (struct bfd *nbfd, void *open_closure), void *open_closure, file_ptr (*pread_func) (struct bfd *nbfd, void *stream, void *buf, file_ptr nbytes, file_ptr offset), int (*close_func) (struct bfd *nbfd, void *stream), int (*stat_func) (struct bfd *abfd, void *stream, struct stat *sb)); 
 Create and return a BFD backed by a read-only @var{stream}.
 The @var{stream} is created using @var{open_func}, accessed using
 @var{pread_func} and destroyed using @var{close_func}.
@@ -154,13 +143,10 @@ occurred.  Possible errors are @code{bfd
 A copy of the @var{filename} argument is stored in the newly created
 BFD.  It can be accessed via the bfd_get_filename() macro.
 
+@end deftypefn
 @findex bfd_openw
 @subsubsection @code{bfd_openw}
-@strong{Synopsis}
-@example
-bfd *bfd_openw (const char *filename, const char *target);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd *bfd_openw (const char *filename, const char *target); 
 Create a BFD, associated with file @var{filename}, using the
 file format @var{target}, and return a pointer to it.
 
@@ -170,13 +156,30 @@ Possible errors are @code{bfd_error_syst
 A copy of the @var{filename} argument is stored in the newly created
 BFD.  It can be accessed via the bfd_get_filename() macro.
 
+@end deftypefn
+@findex bfd_elf_bfd_from_remote_memory
+@subsubsection @code{bfd_elf_bfd_from_remote_memory}
+@deftypefn {Function} bfd *bfd_elf_bfd_from_remote_memory (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep, int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, bfd_size_type len)); 
+Create a new BFD as if by bfd_openr.  Rather than opening a
+file, reconstruct an ELF file by reading the segments out of
+remote memory based on the ELF file header at EHDR_VMA and the
+ELF program headers it points to.  If non-zero, SIZE is the
+known extent of the object.  If not null, *LOADBASEP is filled
+in with the difference between the VMAs from which the
+segments were read, and the VMAs the file headers (and hence
+BFD's idea of each section's VMA) put them at.
+
+The function TARGET_READ_MEMORY is called to copy LEN bytes
+from the remote memory at target address VMA into the local
+buffer at MYADDR; it should return zero on success or an
+errno code on failure.  TEMPL must be a BFD for an ELF
+target with the word size and byte order found in the remote
+memory.
+
+@end deftypefn
 @findex bfd_close
 @subsubsection @code{bfd_close}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_close (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_close (bfd *abfd); 
 Close a BFD. If the BFD was open for writing, then pending
 operations are completed and the file written out and closed.
 If the created file is executable, then @code{chmod} is called
@@ -187,16 +190,12 @@ All memory attached to the BFD is releas
 The file descriptor associated with the BFD is closed (even
 if it was passed in to BFD by @code{bfd_fdopenr}).
 
-@strong{Returns}@*
 @code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
 
+@end deftypefn
 @findex bfd_close_all_done
 @subsubsection @code{bfd_close_all_done}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_close_all_done (bfd *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_close_all_done (bfd *); 
 Close a BFD.  Differs from @code{bfd_close} since it does not
 complete any pending operations.  This routine would be used
 if the application had just used BFD for swapping and didn't
@@ -207,16 +206,12 @@ to mark it as such.
 
 All memory attached to the BFD is released.
 
-@strong{Returns}@*
 @code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
 
+@end deftypefn
 @findex bfd_create
 @subsubsection @code{bfd_create}
-@strong{Synopsis}
-@example
-bfd *bfd_create (const char *filename, bfd *templ);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd *bfd_create (const char *filename, bfd *templ); 
 Create a new BFD in the manner of @code{bfd_openw}, but without
 opening a file. The new BFD takes the target from the target
 used by @var{templ}. The format is always set to @code{bfd_object}.
@@ -224,143 +219,58 @@ used by @var{templ}. The format is alway
 A copy of the @var{filename} argument is stored in the newly created
 BFD.  It can be accessed via the bfd_get_filename() macro.
 
+@end deftypefn
 @findex bfd_make_writable
 @subsubsection @code{bfd_make_writable}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_make_writable (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_make_writable (bfd *abfd); 
 Takes a BFD as created by @code{bfd_create} and converts it
 into one like as returned by @code{bfd_openw}.  It does this
 by converting the BFD to BFD_IN_MEMORY.  It's assumed that
 you will call @code{bfd_make_readable} on this bfd later.
 
-@strong{Returns}@*
 @code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
 
+@end deftypefn
 @findex bfd_make_readable
 @subsubsection @code{bfd_make_readable}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_make_readable (bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_make_readable (bfd *abfd); 
 Takes a BFD as created by @code{bfd_create} and
 @code{bfd_make_writable} and converts it into one like as
 returned by @code{bfd_openr}.  It does this by writing the
 contents out to the memory buffer, then reversing the
 direction.
 
-@strong{Returns}@*
 @code{TRUE} is returned if all is ok, otherwise @code{FALSE}.
 
-@findex bfd_alloc
-@subsubsection @code{bfd_alloc}
-@strong{Synopsis}
-@example
-void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
-@end example
-@strong{Description}@*
-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}
-@example
-void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
-@end example
-@strong{Description}@*
-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.
-
+@end deftypefn
 @findex bfd_calc_gnu_debuglink_crc32
 @subsubsection @code{bfd_calc_gnu_debuglink_crc32}
-@strong{Synopsis}
-@example
-unsigned long bfd_calc_gnu_debuglink_crc32
-   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
-@end example
-@strong{Description}@*
+@deftypefn {Function} uint32_t bfd_calc_gnu_debuglink_crc32 (uint32_t crc, const bfd_byte *buf, bfd_size_type len); 
 Computes a CRC value as used in the .gnu_debuglink section.
 Advances the previously computed @var{crc} value by computing
 and adding in the crc32 for @var{len} bytes of @var{buf}.
 
-@strong{Returns}@*
 Return the updated CRC32 value.
 
-@findex bfd_get_debug_link_info_1
-@subsubsection @code{bfd_get_debug_link_info_1}
-@strong{Synopsis}
-@example
-char *bfd_get_debug_link_info_1 (bfd *abfd, void *crc32_out);
-@end example
-@strong{Description}@*
-Extracts the filename and CRC32 value for any separate debug
-information file associated with @var{abfd}.
-
-The @var{crc32_out} parameter is an untyped pointer because
-this routine is used as a @code{get_func_type} function, but it
-is expected to be an unsigned long pointer.
-
-@strong{Returns}@*
-The filename of the associated debug information file, or NULL
-if there is no such file.  If the filename was found then the
-contents of @var{crc32_out} are updated to hold the corresponding
-CRC32 value for the file.
-
-The returned filename is allocated with @code{malloc}; freeing
-it is the responsibility of the caller.
-
+@end deftypefn
 @findex bfd_get_debug_link_info
 @subsubsection @code{bfd_get_debug_link_info}
-@strong{Synopsis}
-@example
-char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
-@end example
-@strong{Description}@*
+@deftypefn {Function} char *bfd_get_debug_link_info (bfd *abfd, uint32_t *crc32_out); 
 Extracts the filename and CRC32 value for any separate debug
 information file associated with @var{abfd}.
 
-@strong{Returns}@*
-The filename of the associated debug information file, or NULL
-if there is no such file.  If the filename was found then the
-contents of @var{crc32_out} are updated to hold the corresponding
-CRC32 value for the file.
+Returns the filename of the associated debug information file,
+or NULL if there is no such file.  If the filename was found
+then the contents of @var{crc32_out} are updated to hold the
+corresponding CRC32 value for the file.
 
 The returned filename is allocated with @code{malloc}; freeing
 it is the responsibility of the caller.
 
+@end deftypefn
 @findex bfd_get_alt_debug_link_info
 @subsubsection @code{bfd_get_alt_debug_link_info}
-@strong{Synopsis}
-@example
-char *bfd_get_alt_debug_link_info (bfd * abfd,
-    bfd_size_type *buildid_len,
-    bfd_byte **buildid_out);
-@end example
-@strong{Description}@*
+@deftypefn {Function} char *bfd_get_alt_debug_link_info (bfd * abfd, bfd_size_type *buildid_len, bfd_byte **buildid_out); 
 Fetch the filename and BuildID value for any alternate debuginfo
 associated with @var{abfd}.  Return NULL if no such info found,
 otherwise return filename and update @var{buildid_len} and
@@ -368,65 +278,10 @@ otherwise return filename and update @va
 allocated with @code{malloc}; freeing them is the responsibility
 of the caller.
 
-@findex separate_debug_file_exists
-@subsubsection @code{separate_debug_file_exists}
-@strong{Synopsis}
-@example
-bfd_boolean separate_debug_file_exists
-   (char *name, void *crc32_p);
-@end example
-@strong{Description}@*
-Checks to see if @var{name} is a file and if its contents
-match @var{crc32}, which is a pointer to an @code{unsigned
-long} containing a CRC32.
-
-The @var{crc32_p} parameter is an untyped pointer because
-this routine is used as a @code{check_func_type} function.
-
-@findex separate_alt_debug_file_exists
-@subsubsection @code{separate_alt_debug_file_exists}
-@strong{Synopsis}
-@example
-bfd_boolean separate_alt_debug_file_exists
-   (char *name, void *unused);
-@end example
-@strong{Description}@*
-Checks to see if @var{name} is a file.
-
-@findex find_separate_debug_file
-@subsubsection @code{find_separate_debug_file}
-@strong{Synopsis}
-@example
-char *find_separate_debug_file
-   (bfd *abfd, const char *dir, bfd_boolean include_dirs,
-    get_func_type get, check_func_type check, void *data);
-@end example
-@strong{Description}@*
-Searches for a debug information file corresponding to @var{abfd}.
-
-The name of the separate debug info file is returned by the
-@var{get} function.  This function scans various fixed locations
-in the filesystem, including the file tree rooted at @var{dir}.
-If the @var{include_dirs} parameter is true then the directory
-components of @var{abfd}'s filename will be included in the
-searched locations.
-
-@var{data} is passed unmodified to the @var{get} and @var{check}
-functions.  It is generally used to implement build-id-like
-matching in the callback functions.
-
-@strong{Returns}@*
-Returns the filename of the first file to be found which
-receives a TRUE result from the @var{check} function.
-Returns NULL if no valid file could be found.
-
+@end deftypefn
 @findex bfd_follow_gnu_debuglink
 @subsubsection @code{bfd_follow_gnu_debuglink}
-@strong{Synopsis}
-@example
-char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
-@end example
-@strong{Description}@*
+@deftypefn {Function} char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir); 
 Takes a BFD and searches it for a .gnu_debuglink section.  If this
 section is found, it examines the section for the name and checksum
 of a '.debug' file containing auxiliary debugging information.  It
@@ -437,18 +292,15 @@ found returns the full filename.
 If @var{dir} is NULL, the search will take place starting at
 the current directory.
 
-@strong{Returns}@*
-@code{NULL} on any errors or failure to locate the .debug file,
-otherwise a pointer to a heap-allocated string containing the
-filename.  The caller is responsible for freeing this string.
+Returns @code{NULL} on any errors or failure to locate the .debug
+file, otherwise a pointer to a heap-allocated string
+containing the filename.  The caller is responsible for
+freeing this string.
 
+@end deftypefn
 @findex bfd_follow_gnu_debugaltlink
 @subsubsection @code{bfd_follow_gnu_debugaltlink}
-@strong{Synopsis}
-@example
-char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir);
-@end example
-@strong{Description}@*
+@deftypefn {Function} char *bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir); 
 Takes a BFD and searches it for a .gnu_debugaltlink section.  If this
 section is found, it examines the section for the name of a file
 containing auxiliary debugging information.  It then searches the
@@ -459,102 +311,38 @@ full filename.
 If @var{dir} is NULL, the search will take place starting at
 the current directory.
 
-@strong{Returns}@*
-@code{NULL} on any errors or failure to locate the debug file,
-otherwise a pointer to a heap-allocated string containing the
-filename.  The caller is responsible for freeing this string.
+Returns @code{NULL} on any errors or failure to locate the debug
+file, otherwise a pointer to a heap-allocated string
+containing the filename.  The caller is responsible for
+freeing this string.
 
+@end deftypefn
 @findex bfd_create_gnu_debuglink_section
 @subsubsection @code{bfd_create_gnu_debuglink_section}
-@strong{Synopsis}
-@example
-struct bfd_section *bfd_create_gnu_debuglink_section
-   (bfd *abfd, const char *filename);
-@end example
-@strong{Description}@*
+@deftypefn {Function} struct bfd_section *bfd_create_gnu_debuglink_section (bfd *abfd, const char *filename); 
 Takes a @var{BFD} and adds a .gnu_debuglink section to it.  The
 section is sized to be big enough to contain a link to the specified
 @var{filename}.
 
-@strong{Returns}@*
 A pointer to the new section is returned if all is ok.  Otherwise
 @code{NULL} is returned and bfd_error is set.
 
+@end deftypefn
 @findex bfd_fill_in_gnu_debuglink_section
 @subsubsection @code{bfd_fill_in_gnu_debuglink_section}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_fill_in_gnu_debuglink_section
-   (bfd *abfd, struct bfd_section *sect, const char *filename);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_fill_in_gnu_debuglink_section (bfd *abfd, struct bfd_section *sect, const char *filename); 
 Takes a @var{BFD} and containing a .gnu_debuglink section @var{SECT}
 and fills in the contents of the section to contain a link to the
-specified @var{filename}.  The filename should be relative to the
-current directory.
+specified @var{filename}.  The filename should be absolute or
+relative to the current directory.
 
-@strong{Returns}@*
 @code{TRUE} is returned if all is ok.  Otherwise @code{FALSE} is returned
 and bfd_error is set.
 
-@findex get_build_id
-@subsubsection @code{get_build_id}
-@strong{Synopsis}
-@example
-struct bfd_build_id * get_build_id (bfd *abfd);
-@end example
-@strong{Description}@*
-Finds the build-id associated with @var{abfd}.  If the build-id is
-extracted from the note section then a build-id structure is built
-for it, using memory allocated to @var{abfd}, and this is then
-attached to the @var{abfd}.
-
-@strong{Returns}@*
-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.
-
-@findex get_build_id_name
-@subsubsection @code{get_build_id_name}
-@strong{Synopsis}
-@example
-char * get_build_id_name (bfd *abfd, void *build_id_out_p)
-@end example
-@strong{Description}@*
-Searches @var{abfd} for a build-id, and then constructs a pathname
-from it.  The path is computed as .build-id/NN/NN+NN.debug where
-NNNN+NN is the build-id value as a hexadecimal string.
-
-@strong{Returns}@*
-Returns the constructed filename or NULL upon error.
-It is the caller's responsibility to free the memory used to hold the
-filename.
-If a filename is returned then the @var{build_id_out_p}
-parameter (which points to a @code{struct bfd_build_id}
-pointer) is set to a pointer to the build_id structure.
-
-@findex check_build_id_file
-@subsubsection @code{check_build_id_file}
-@strong{Synopsis}
-@example
-bfd_boolean check_build_id_file (char *name, void *buildid_p);
-@end example
-@strong{Description}@*
-Checks to see if @var{name} is a readable file and if its build-id
-matches @var{buildid}.
-
-@strong{Returns}@*
-Returns TRUE if the file exists, is readable, and contains a
-build-id which matches the build-id pointed at by
-@var{build_id_p} (which is really a @code{struct bfd_build_id **}).
-
+@end deftypefn
 @findex bfd_follow_build_id_debuglink
 @subsubsection @code{bfd_follow_build_id_debuglink}
-@strong{Synopsis}
-@example
-char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir);
-@end example
-@strong{Description}@*
+@deftypefn {Function} char *bfd_follow_build_id_debuglink (bfd *abfd, const char *dir); 
 Takes @var{abfd} and searches it for a .note.gnu.build-id section.
 If this section is found, it extracts the value of the NT_GNU_BUILD_ID
 note, which should be a hexadecimal value @var{NNNN+NN} (for
@@ -569,19 +357,24 @@ not implemented.
 If @var{dir} is NULL, the search will take place starting at
 the current directory.
 
-@strong{Returns}@*
-@code{NULL} on any errors or failure to locate the debug file,
-otherwise a pointer to a heap-allocated string containing the
-filename.  The caller is responsible for freeing this string.
+Returns @code{NULL} on any errors or failure to locate the debug
+file, otherwise a pointer to a heap-allocated string
+containing the filename.  The caller is responsible for
+freeing this string.
 
+@end deftypefn
 @findex bfd_set_filename
 @subsubsection @code{bfd_set_filename}
-@strong{Synopsis}
-@example
-void bfd_set_filename (bfd *abfd, 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}.
+@deftypefn {Function} const char *bfd_set_filename (bfd *abfd, const char *filename); 
+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.
+
+@end deftypefn
+@findex bfd_extract_object_only_section
+@subsubsection @code{bfd_extract_object_only_section}
+@deftypefn {Function} const char *bfd_extract_object_only_section (bfd *abfd); 
+Takes a @var{ABFD} and extract the .gnu_object_only section into
+a temporary file.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/proto.str ./bfd/doc/proto.str
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/proto.str	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/doc/proto.str	2026-03-05 02:07:20.000000000 +0000
@@ -1,12 +1,50 @@
+- Source extraction program for chew.
+-  Copyright (C) 1990-2025 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.
+
+- chew.c keywords defined here put output into bfd-in2.h and libbfd.h or
+- libcoff.h, from comments in the source.  See also doc.str.
+- Output lines generally come from comment lines starting with a dot,
+- or from keywords like SYNOPSIS.  Output switches to bfd-in2.h at the
+- end of each comment.  Use INTERNAL* to output to libbfd.h.
+-
+- EXTERNAL: output to bfd-in2.h, nothing to docs
+- INTERNAL: output to libbfd.h, nothing to docs
+- CODE_FRAGMENT: output to header and docs
+- FUNCTION: output to bfd-in2.h and docs
+- INTERNAL_FUNCTION: output to libbfd.h and docs
+- DEFINITION: alias for FUNCTION, but generally doesn't have SYNOPSIS,
+-	used for structs and other random code
+- INTERNAL_DEFINITION: as above, but output to libbfd.h and docs
+- ENUM* outputs to bfd-in2.h, libbfd.h and docs.
 
 : SYNOPSIS
 	skip_past_newline
 	get_stuff_in_command	
-	paramstuff
+	translatecomments
+	strip_trailing_newlines
+	remchar
+	" ATTRIBUTE_HIDDEN" internalmode @ catstrif
+	";\n\n" catstr
 	indent
 	maybecatstr
 ;
 
+- Ignore stuff that is for the docs.  Output lines starting with dots.
 : ignore
 	skip_past_newline 
 	get_stuff_in_command
@@ -17,17 +55,19 @@
 : CODE_FRAGMENT
 	ignore ;
 
-: external
-	0 internalmode ignore ;
-
-: internal 
-	1 internalmode ignore ;
+- Output goes to bfd-in2.h
+: EXTERNAL
+	0 internalmode ! ignore ;
+
+- Output goes to libbfd.h/libcoff.h
+: INTERNAL 
+	1 internalmode ! ignore ;
 
 - input stack { a b } output b if internal, a if external
 : ifinternal
-	"" swap 1 internalmode maybecatstr
+	"" swap 1 internalmode ! maybecatstr
 	swap
-	"" swap 0 internalmode maybecatstr
+	"" swap 0 internalmode ! maybecatstr
 	catstr
 	;
 
@@ -48,7 +88,7 @@
 : make_enum_header
 	dup
 	"enum " swap catstr
-	" {\n" catstr
+	"\n{\n" catstr
 	swap "  _dummy_first_" swap catstr catstr
 	",\n" catstr
 	;
@@ -74,7 +114,7 @@
 	skip_past_newline
 	copy_past_newline strip_trailing_newlines
 	dup
-	"  " swap catstr " };\n" catstr	swap
+	"  " swap catstr "\n};\n" catstr swap
 	" \"@@overflow: " swap catstr "@@\",\n};\n#endif\n\n" catstr
 	ifinternal
 	catstr
@@ -107,29 +147,28 @@
 	catstr
 	copy_past_newline
 	catstr
-	"" swap 0 internalmode maybecatstr
+	"" swap 0 internalmode ! maybecatstr
 	;
 : ENUMEQX ENUMEQ catstr ;
 : ENUMDOC
 	skip_past_newline
 	get_stuff_in_command
 	strip_trailing_newlines
-	"\n{* " swap catstr "  *}\n" catstr
-	translatecomments
+	"  " wrap_comment
+	"\n" swap catstr "\n" catstr
 	- discard it if we're doing internal mode
-	"" swap 0 internalmode maybecatstr
+	"" swap 0 internalmode ! maybecatstr
 	swap
 	catstr catstr
 	;
-: ENDDD external ;
 : SECTION ignore ;
 : SUBSECTION ignore ;
 : SUBSUBSECTION ignore ;
-: INTERNAL_DEFINITION internal ;
-: DESCRIPTION ignore ;
-: FUNCTION external ;
-: RETURNS ignore ;
-: TYPEDEF external ;
-: INTERNAL_FUNCTION internal ;
-: INTERNAL internal ;
 : INODE ignore ;
+: DESCRIPTION ignore ;
+: DOCDD ignore ;
+: ENDDD EXTERNAL ;
+: FUNCTION EXTERNAL ;
+: INTERNAL_FUNCTION INTERNAL ;
+: DEFINITION EXTERNAL ;
+: INTERNAL_DEFINITION INTERNAL ;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/reloc.texi ./bfd/doc/reloc.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/reloc.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/reloc.texi	2026-03-05 02:11:13.000000000 +0000
@@ -24,41 +24,7 @@ This is the structure of a relocation en
 
 
 @example
-
-typedef enum bfd_reloc_status
-@{
-  /* No errors detected.  Note - the value 2 is used so that it
-     will not be mistaken for the boolean TRUE or FALSE values.  */
-  bfd_reloc_ok = 2,
-
-  /* The relocation was performed, but there was an overflow.  */
-  bfd_reloc_overflow,
-
-  /* The address to relocate was not within the section supplied.  */
-  bfd_reloc_outofrange,
-
-  /* Used by special functions.  */
-  bfd_reloc_continue,
-
-  /* Unsupported relocation size requested.  */
-  bfd_reloc_notsupported,
-
-  /* Unused.  */
-  bfd_reloc_other,
-
-  /* The symbol to relocate against was undefined.  */
-  bfd_reloc_undefined,
-
-  /* The relocation was performed, but may not be ok.  If this type is
-     returned, the error_message argument to bfd_perform_relocation
-     will be set.  */
-  bfd_reloc_dangerous
- @}
- bfd_reloc_status_type;
-
-typedef const struct reloc_howto_struct reloc_howto_type;
-
-typedef struct reloc_cache_entry
+struct reloc_cache_entry
 @{
   /* A pointer into the canonical table of pointers.  */
   struct bfd_symbol **sym_ptr_ptr;
@@ -72,11 +38,9 @@ typedef struct reloc_cache_entry
   /* Pointer to how to perform the required relocation.  */
   reloc_howto_type *howto;
 
-@}
-arelent;
+@};
 
 @end example
-@strong{Description}@*
 Here is a description of each of the fields within an @code{arelent}:
 
 @itemize @bullet
@@ -231,7 +195,6 @@ performing a relocation.
 
 
 @example
-
 enum complain_overflow
 @{
   /* Do not complain on overflow.  */
@@ -250,6 +213,7 @@ enum complain_overflow
      unsigned number.  */
   complain_overflow_unsigned
 @};
+
 @end example
 @subsubsection @code{reloc_howto_type}
 The @code{reloc_howto_type} is a structure which contains all the
@@ -264,10 +228,8 @@ struct reloc_howto_struct
      an external reloc number is stored in this field.  */
   unsigned int type;
 
-  /* The encoded size of the item to be relocated.  This is *not* a
-     power-of-two measure.  Use bfd_get_reloc_size to find the size
-     of the item in bytes.  */
-  unsigned int size:3;
+  /* The size of the item to be relocated in bytes.  */
+  unsigned int size:4;
 
   /* The number of bits in the field to be relocated.  This is used
      when doing overflow checking.  */
@@ -316,6 +278,11 @@ struct reloc_howto_struct
      empty (e.g., ELF); this flag signals the fact.  */
   unsigned int pcrel_offset:1;
 
+  /* Whether bfd_install_relocation should just install the addend,
+     or should follow the practice of some older object formats and
+     install a value including the symbol.  */
+  unsigned int install_addend:1;
+
   /* src_mask selects the part of the instruction (or data) to be used
      in the relocation sum.  If the target relocations don't have an
      addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
@@ -344,38 +311,34 @@ struct reloc_howto_struct
 @end example
 @findex The HOWTO Macro
 @subsubsection @code{The HOWTO Macro}
-@strong{Description}@*
 The HOWTO macro fills in a reloc_howto_type (a typedef for
 const struct reloc_howto_struct).
 @example
+#define HOWTO_INSTALL_ADDEND 0
+#define HOWTO_RSIZE(sz) ((sz) < 0 ? -(sz) : (sz))
 #define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,   \
               inplace, src_mask, dst_mask, pcrel_off)                  \
-  @{ (unsigned) type, size < 0 ? -size : size, bits, right, left, ovf,  \
-    size < 0, pcrel, inplace, pcrel_off, src_mask, dst_mask, func, name @}
+  @{ (unsigned) type, HOWTO_RSIZE (size), bits, right, left, ovf,       \
+    size < 0, pcrel, inplace, pcrel_off, HOWTO_INSTALL_ADDEND,         \
+    src_mask, dst_mask, func, name @}
 @end example
 
-@strong{Description}@*
 This is used to fill in an empty howto entry in an array.
 @example
 #define EMPTY_HOWTO(C) \
-  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
-         NULL, FALSE, 0, 0, FALSE)
+  HOWTO ((C), 0, 1, 0, false, 0, complain_overflow_dont, NULL, \
+         NULL, false, 0, 0, false)
 
-@end example
+static inline unsigned int
+bfd_get_reloc_size (reloc_howto_type *howto)
+@{
+  return howto->size;
+@}
 
-@findex bfd_get_reloc_size
-@subsubsection @code{bfd_get_reloc_size}
-@strong{Synopsis}
-@example
-unsigned int bfd_get_reloc_size (reloc_howto_type *);
 @end example
-@strong{Description}@*
-For a reloc_howto_type that operates on a fixed number of bytes,
-this returns the number of bytes operated on.
 
 @findex arelent_chain
 @subsubsection @code{arelent_chain}
-@strong{Description}@*
 How relocs are tied together in an @code{asection}:
 @example
 typedef struct relent_chain
@@ -389,49 +352,24 @@ arelent_chain;
 
 @findex bfd_check_overflow
 @subsubsection @code{bfd_check_overflow}
-@strong{Synopsis}
-@example
-bfd_reloc_status_type bfd_check_overflow
-   (enum complain_overflow how,
-    unsigned int bitsize,
-    unsigned int rightshift,
-    unsigned int addrsize,
-    bfd_vma relocation);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_reloc_status_type bfd_check_overflow (enum complain_overflow how, unsigned int bitsize, unsigned int rightshift, unsigned int addrsize, bfd_vma relocation); 
 Perform overflow checking on @var{relocation} which has
 @var{bitsize} significant bits and will be shifted right by
 @var{rightshift} bits, on a machine with addresses containing
 @var{addrsize} significant bits.  The result is either of
 @code{bfd_reloc_ok} or @code{bfd_reloc_overflow}.
 
+@end deftypefn
 @findex bfd_reloc_offset_in_range
 @subsubsection @code{bfd_reloc_offset_in_range}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_reloc_offset_in_range
-   (reloc_howto_type *howto,
-    bfd *abfd,
-    asection *section,
-    bfd_size_type offset);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_reloc_offset_in_range (reloc_howto_type *howto, bfd *abfd, asection *section, bfd_size_type offset); 
 Returns TRUE if the reloc described by @var{HOWTO} can be
 applied at @var{OFFSET} octets in @var{SECTION}.
 
+@end deftypefn
 @findex bfd_perform_relocation
 @subsubsection @code{bfd_perform_relocation}
-@strong{Synopsis}
-@example
-bfd_reloc_status_type bfd_perform_relocation
-   (bfd *abfd,
-    arelent *reloc_entry,
-    void *data,
-    asection *input_section,
-    bfd *output_bfd,
-    char **error_message);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_reloc_status_type bfd_perform_relocation (bfd *abfd, arelent *reloc_entry, void *data, asection *input_section, bfd *output_bfd, char **error_message); 
 If @var{output_bfd} is supplied to this function, the
 generated image will be relocatable; the relocations are
 copied to the output file after they have been changed to
@@ -447,18 +385,10 @@ types with addends were invented to solv
 The @var{error_message} argument is set to an error message if
 this return @code{bfd_reloc_dangerous}.
 
+@end deftypefn
 @findex bfd_install_relocation
 @subsubsection @code{bfd_install_relocation}
-@strong{Synopsis}
-@example
-bfd_reloc_status_type bfd_install_relocation
-   (bfd *abfd,
-    arelent *reloc_entry,
-    void *data, bfd_vma data_start,
-    asection *input_section,
-    char **error_message);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_reloc_status_type bfd_install_relocation (bfd *abfd, arelent *reloc_entry, void *data, bfd_vma data_start, asection *input_section, char **error_message); 
 This looks remarkably like @code{bfd_perform_relocation}, except it
 does not expect that the section contents have been filled in.
 I.e., it's suitable for use when creating, rather than applying
@@ -467,6 +397,7 @@ a relocation.
 For now, this function should be considered reserved for the
 assembler.
 
+@end deftypefn
 
 @node howto manager,  , typedef arelent, Relocations
 @subsection The howto manager
@@ -474,9 +405,8 @@ When an application wants to create a re
 know what the target machine might call it, it can find out by
 using this bit of code.
 
-@findex bfd_reloc_code_type
-@subsubsection @code{bfd_reloc_code_type}
-@strong{Description}@*
+@findex bfd_reloc_code_real_type
+@subsubsection @code{bfd_reloc_code_real_type}
 The insides of a reloc code.  The idea is that, eventually, there
 will be one enumerator for every type of relocation we ever do.
 Pass one of these values to @code{bfd_reloc_type_lookup}, and it'll
@@ -503,11 +433,13 @@ Basic absolute relocations of N bits.
 @deffnx {} BFD_RELOC_16_PCREL
 @deffnx {} BFD_RELOC_12_PCREL
 @deffnx {} BFD_RELOC_8_PCREL
-PC-relative relocations.  Sometimes these are relative to the address
-of the relocation itself; sometimes they are relative to the start of
-the section containing the relocation.  It depends on the specific target.
+PC-relative relocations.  Sometimes these are relative to the
+address of the relocation itself; sometimes they are relative to the
+start of the section containing the relocation.  It depends on the
+specific target.
 @end deffn
 @deffn {} BFD_RELOC_32_SECREL
+@deffnx {} BFD_RELOC_16_SECIDX
 Section relative relocations.  Some targets need this for DWARF2.
 @end deffn
 @deffn {} BFD_RELOC_32_GOT_PCREL
@@ -581,8 +513,8 @@ displacement is used on the Alpha.
 @end deffn
 @deffn {} BFD_RELOC_HI22
 @deffnx {} BFD_RELOC_LO10
-High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
-the target word.  These are used on the SPARC.
+High 22 bits and low 10 bits of 32-bit value, placed into lower bits
+of the target word.  These are used on the SPARC.
 @end deffn
 @deffn {} BFD_RELOC_GPREL16
 @deffnx {} BFD_RELOC_GPREL32
@@ -650,10 +582,10 @@ I think these are specific to SPARC a.ou
 @deffnx {} BFD_RELOC_SPARC_SIZE32
 @deffnx {} BFD_RELOC_SPARC_SIZE64
 @deffnx {} BFD_RELOC_SPARC_WDISP10
-SPARC64 relocations
+SPARC64 relocations.
 @end deffn
 @deffn {} BFD_RELOC_SPARC_REV32
-SPARC little endian relocation
+SPARC little endian relocation.
 @end deffn
 @deffn {} BFD_RELOC_SPARC_TLS_GD_HI22
 @deffnx {} BFD_RELOC_SPARC_TLS_GD_LO10
@@ -679,7 +611,7 @@ SPARC little endian relocation
 @deffnx {} BFD_RELOC_SPARC_TLS_DTPOFF64
 @deffnx {} BFD_RELOC_SPARC_TLS_TPOFF32
 @deffnx {} BFD_RELOC_SPARC_TLS_TPOFF64
-SPARC TLS relocations
+SPARC TLS relocations.
 @end deffn
 @deffn {} BFD_RELOC_SPU_IMM7
 @deffnx {} BFD_RELOC_SPU_IMM8
@@ -821,18 +753,18 @@ to compensate for the borrow when the lo
 Low 16 bits.
 @end deffn
 @deffn {} BFD_RELOC_HI16_PCREL
-High 16 bits of 32-bit pc-relative value
+High 16 bits of 32-bit pc-relative value.
 @end deffn
 @deffn {} BFD_RELOC_HI16_S_PCREL
-High 16 bits of 32-bit pc-relative value, adjusted
+High 16 bits of 32-bit pc-relative value, adjusted.
 @end deffn
 @deffn {} BFD_RELOC_LO16_PCREL
-Low 16 bits of pc-relative value
+Low 16 bits of pc-relative value.
 @end deffn
 @deffn {} BFD_RELOC_MIPS16_GOT16
 @deffnx {} BFD_RELOC_MIPS16_CALL16
 Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
-16-bit immediate fields
+16-bit immediate fields.
 @end deffn
 @deffn {} BFD_RELOC_MIPS16_HI16
 MIPS16 high 16 bits of 32-bit value.
@@ -853,7 +785,7 @@ MIPS16 low 16 bits.
 @deffnx {} BFD_RELOC_MIPS16_TLS_GOTTPREL
 @deffnx {} BFD_RELOC_MIPS16_TLS_TPREL_HI16
 @deffnx {} BFD_RELOC_MIPS16_TLS_TPREL_LO16
-MIPS16 TLS relocations
+MIPS16 TLS relocations.
 @end deffn
 @deffn {} BFD_RELOC_MIPS_LITERAL
 @deffnx {} BFD_RELOC_MICROMIPS_LITERAL
@@ -910,7 +842,7 @@ microMIPS versions of generic BFD relocs
 @deffnx {} BFD_RELOC_MICROMIPS_HIGHER
 @deffnx {} BFD_RELOC_MIPS_SCN_DISP
 @deffnx {} BFD_RELOC_MICROMIPS_SCN_DISP
-@deffnx {} BFD_RELOC_MIPS_REL16
+@deffnx {} BFD_RELOC_MIPS_16
 @deffnx {} BFD_RELOC_MIPS_RELGOT
 @deffnx {} BFD_RELOC_MIPS_JALR
 @deffnx {} BFD_RELOC_MICROMIPS_JALR
@@ -1000,16 +932,16 @@ Fujitsu Frv Relocations.
 This is a 24bit GOT-relative reloc for the mn10300.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_GOT32
-This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
-in the instruction.
+This is a 32bit GOT-relative reloc for the mn10300, offset by two
+bytes in the instruction.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_GOT24
-This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
-in the instruction.
+This is a 24bit GOT-relative reloc for the mn10300, offset by two
+bytes in the instruction.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_GOT16
-This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
-in the instruction.
+This is a 16bit GOT-relative reloc for the mn10300, offset by two
+bytes in the instruction.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_COPY
 Copy symbol at runtime.
@@ -1024,14 +956,13 @@ Create PLT entry.
 Adjust by program base.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_SYM_DIFF
-Together with another reloc targeted at the same location,
-allows for a value that is the difference of two symbols
-in the same section.
+Together with another reloc targeted at the same location, allows
+for a value that is the difference of two symbols in the same
+section.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_ALIGN
-The addend of this reloc is an alignment power that must
-be honoured at the offset's location, regardless of linker
-relaxation.
+The addend of this reloc is an alignment power that must be honoured
+at the offset's location, regardless of linker relaxation.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_TLS_GD
 @deffnx {} BFD_RELOC_MN10300_TLS_LD
@@ -1045,12 +976,12 @@ relaxation.
 Various TLS-related relocations.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_32_PCREL
-This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
-instruction.
+This is a 32bit pcrel reloc for the mn10300, offset by two bytes in
+the instruction.
 @end deffn
 @deffn {} BFD_RELOC_MN10300_16_PCREL
-This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
-instruction.
+This is a 16bit pcrel reloc for the mn10300, offset by two bytes in
+the instruction.
 @end deffn
 @deffn {} BFD_RELOC_386_GOT32
 @deffnx {} BFD_RELOC_386_PLT32
@@ -1077,7 +1008,7 @@ instruction.
 @deffnx {} BFD_RELOC_386_TLS_DESC
 @deffnx {} BFD_RELOC_386_IRELATIVE
 @deffnx {} BFD_RELOC_386_GOT32X
-i386/elf relocations
+i386/elf relocations.
 @end deffn
 @deffn {} BFD_RELOC_X86_64_GOT32
 @deffnx {} BFD_RELOC_X86_64_PLT32
@@ -1110,7 +1041,16 @@ i386/elf relocations
 @deffnx {} BFD_RELOC_X86_64_PLT32_BND
 @deffnx {} BFD_RELOC_X86_64_GOTPCRELX
 @deffnx {} BFD_RELOC_X86_64_REX_GOTPCRELX
-x86-64/elf relocations
+@deffnx {} BFD_RELOC_X86_64_CODE_4_GOTPCRELX
+@deffnx {} BFD_RELOC_X86_64_CODE_4_GOTTPOFF
+@deffnx {} BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC
+@deffnx {} BFD_RELOC_X86_64_CODE_5_GOTPCRELX
+@deffnx {} BFD_RELOC_X86_64_CODE_5_GOTTPOFF
+@deffnx {} BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC
+@deffnx {} BFD_RELOC_X86_64_CODE_6_GOTPCRELX
+@deffnx {} BFD_RELOC_X86_64_CODE_6_GOTTPOFF
+@deffnx {} BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC
+x86-64/elf relocations.
 @end deffn
 @deffn {} BFD_RELOC_NS32K_IMM_8
 @deffnx {} BFD_RELOC_NS32K_IMM_16
@@ -1124,11 +1064,11 @@ x86-64/elf relocations
 @deffnx {} BFD_RELOC_NS32K_DISP_8_PCREL
 @deffnx {} BFD_RELOC_NS32K_DISP_16_PCREL
 @deffnx {} BFD_RELOC_NS32K_DISP_32_PCREL
-ns32k relocations
+ns32k relocations.
 @end deffn
 @deffn {} BFD_RELOC_PDP11_DISP_8_PCREL
 @deffnx {} BFD_RELOC_PDP11_DISP_6_PCREL
-PDP11 relocations
+PDP11 relocations.
 @end deffn
 @deffn {} BFD_RELOC_PJ_CODE_HI16
 @deffnx {} BFD_RELOC_PJ_CODE_LO16
@@ -1141,6 +1081,8 @@ Picojava relocs.  Not all of these appea
 @deffn {} BFD_RELOC_PPC_B26
 @deffnx {} BFD_RELOC_PPC_BA26
 @deffnx {} BFD_RELOC_PPC_TOC16
+@deffnx {} BFD_RELOC_PPC_TOC16_LO
+@deffnx {} BFD_RELOC_PPC_TOC16_HI
 @deffnx {} BFD_RELOC_PPC_B16
 @deffnx {} BFD_RELOC_PPC_B16_BRTAKEN
 @deffnx {} BFD_RELOC_PPC_B16_BRNTAKEN
@@ -1187,6 +1129,7 @@ Picojava relocs.  Not all of these appea
 @deffnx {} BFD_RELOC_PPC_VLE_SDAREL_HA16D
 @deffnx {} BFD_RELOC_PPC_16DX_HA
 @deffnx {} BFD_RELOC_PPC_REL16DX_HA
+@deffnx {} BFD_RELOC_PPC_NEG
 @deffnx {} BFD_RELOC_PPC64_HIGHER
 @deffnx {} BFD_RELOC_PPC64_HIGHER_S
 @deffnx {} BFD_RELOC_PPC64_HIGHEST
@@ -1221,6 +1164,7 @@ Picojava relocs.  Not all of these appea
 @deffnx {} BFD_RELOC_PPC64_ADDR64_LOCAL
 @deffnx {} BFD_RELOC_PPC64_ENTRY
 @deffnx {} BFD_RELOC_PPC64_REL24_NOTOC
+@deffnx {} BFD_RELOC_PPC64_REL24_P9NOTOC
 @deffnx {} BFD_RELOC_PPC64_D34
 @deffnx {} BFD_RELOC_PPC64_D34_LO
 @deffnx {} BFD_RELOC_PPC64_D34_HI30
@@ -1243,6 +1187,10 @@ Power(rs6000) and PowerPC relocations.
 @deffn {} BFD_RELOC_PPC_TLS
 @deffnx {} BFD_RELOC_PPC_TLSGD
 @deffnx {} BFD_RELOC_PPC_TLSLD
+@deffnx {} BFD_RELOC_PPC_TLSLE
+@deffnx {} BFD_RELOC_PPC_TLSIE
+@deffnx {} BFD_RELOC_PPC_TLSM
+@deffnx {} BFD_RELOC_PPC_TLSML
 @deffnx {} BFD_RELOC_PPC_DTPMOD
 @deffnx {} BFD_RELOC_PPC_TPREL16
 @deffnx {} BFD_RELOC_PPC_TPREL16_LO
@@ -1270,6 +1218,12 @@ Power(rs6000) and PowerPC relocations.
 @deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_LO
 @deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_HI
 @deffnx {} BFD_RELOC_PPC_GOT_DTPREL16_HA
+@deffnx {} BFD_RELOC_PPC64_TLSGD
+@deffnx {} BFD_RELOC_PPC64_TLSLD
+@deffnx {} BFD_RELOC_PPC64_TLSLE
+@deffnx {} BFD_RELOC_PPC64_TLSIE
+@deffnx {} BFD_RELOC_PPC64_TLSM
+@deffnx {} BFD_RELOC_PPC64_TLSML
 @deffnx {} BFD_RELOC_PPC64_TPREL16_DS
 @deffnx {} BFD_RELOC_PPC64_TPREL16_LO_DS
 @deffnx {} BFD_RELOC_PPC64_TPREL16_HIGH
@@ -1288,15 +1242,15 @@ 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
 @deffn {} BFD_RELOC_I370_D12
-IBM 370/390 relocations
+IBM 370/390 relocations.
 @end deffn
 @deffn {} BFD_RELOC_CTOR
 The type of reloc used to build a constructor table - at the moment
@@ -1304,8 +1258,8 @@ probably a 32 bit wide absolute relocati
 It generally does map to one of the other relocation types.
 @end deffn
 @deffn {} BFD_RELOC_ARM_PCREL_BRANCH
-ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
-not stored in the instruction.
+ARM 26 bit pc-relative branch.  The lowest two bits must be zero and
+are not stored in the instruction.
 @end deffn
 @deffn {} BFD_RELOC_ARM_PCREL_BLX
 ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
@@ -1318,7 +1272,8 @@ not stored in the instruction.  The 2nd
 field in the instruction.
 @end deffn
 @deffn {} BFD_RELOC_ARM_PCREL_CALL
-ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.
+ARM 26-bit pc-relative branch for an unconditional BL or BLX
+instruction.
 @end deffn
 @deffn {} BFD_RELOC_ARM_PCREL_JUMP
 ARM 26-bit pc-relative branch for B or conditional BL instruction.
@@ -1370,9 +1325,9 @@ Read-only segment base relative address.
 Data segment base relative address.
 @end deffn
 @deffn {} BFD_RELOC_ARM_TARGET2
-This reloc is used for references to RTTI data from exception handling
-tables.  The actual definition depends on the target.  It may be a
-pc-relative or some form of GOT-indirect relocation.
+This reloc is used for references to RTTI data from exception
+handling tables.  The actual definition depends on the target.  It
+may be a pc-relative or some form of GOT-indirect relocation.
 @end deffn
 @deffn {} BFD_RELOC_ARM_PREL31
 31-bit PC relative address.
@@ -1781,65 +1736,58 @@ ADI Blackfin arithmetic relocation.
 @end deffn
 @deffn {} BFD_RELOC_D10V_10_PCREL_R
 Mitsubishi D10V relocs.
-This is a 10-bit reloc with the right 2 bits
-assumed to be 0.
+This is a 10-bit reloc with the right 2 bits assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_D10V_10_PCREL_L
 Mitsubishi D10V relocs.
-This is a 10-bit reloc with the right 2 bits
-assumed to be 0.  This is the same as the previous reloc
-except it is in the left container, i.e.,
-shifted left 15 bits.
+This is a 10-bit reloc with the right 2 bits assumed to be 0.  This
+is the same as the previous reloc except it is in the left
+container, i.e., shifted left 15 bits.
 @end deffn
 @deffn {} BFD_RELOC_D10V_18
-This is an 18-bit reloc with the right 2 bits
-assumed to be 0.
+This is an 18-bit reloc with the right 2 bits assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_D10V_18_PCREL
-This is an 18-bit reloc with the right 2 bits
-assumed to be 0.
+This is an 18-bit reloc with the right 2 bits assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_D30V_6
 Mitsubishi D30V relocs.
 This is a 6-bit absolute reloc.
 @end deffn
 @deffn {} BFD_RELOC_D30V_9_PCREL
-This is a 6-bit pc-relative reloc with
-the right 3 bits assumed to be 0.
+This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+be 0.
 @end deffn
 @deffn {} BFD_RELOC_D30V_9_PCREL_R
-This is a 6-bit pc-relative reloc with
-the right 3 bits assumed to be 0. Same
-as the previous reloc but on the right side
-of the container.
+This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+be 0.  Same as the previous reloc but on the right side of the
+container.
 @end deffn
 @deffn {} BFD_RELOC_D30V_15
-This is a 12-bit absolute reloc with the
-right 3 bitsassumed to be 0.
+This is a 12-bit absolute reloc with the right 3 bitsassumed to
+be 0.
 @end deffn
 @deffn {} BFD_RELOC_D30V_15_PCREL
-This is a 12-bit pc-relative reloc with
-the right 3 bits assumed to be 0.
+This is a 12-bit pc-relative reloc with the right 3 bits assumed to
+be 0.
 @end deffn
 @deffn {} BFD_RELOC_D30V_15_PCREL_R
-This is a 12-bit pc-relative reloc with
-the right 3 bits assumed to be 0. Same
-as the previous reloc but on the right side
-of the container.
+This is a 12-bit pc-relative reloc with the right 3 bits assumed to
+be 0.  Same as the previous reloc but on the right side of the
+container.
 @end deffn
 @deffn {} BFD_RELOC_D30V_21
-This is an 18-bit absolute reloc with
-the right 3 bits assumed to be 0.
+This is an 18-bit absolute reloc with the right 3 bits assumed to
+be 0.
 @end deffn
 @deffn {} BFD_RELOC_D30V_21_PCREL
-This is an 18-bit pc-relative reloc with
-the right 3 bits assumed to be 0.
+This is an 18-bit pc-relative reloc with the right 3 bits assumed to
+be 0.
 @end deffn
 @deffn {} BFD_RELOC_D30V_21_PCREL_R
-This is an 18-bit pc-relative reloc with
-the right 3 bits assumed to be 0. Same
-as the previous reloc but on the right side
-of the container.
+This is an 18-bit pc-relative reloc with the right 3 bits assumed to
+be 0.  Same as the previous reloc but on the right side of the
+container.
 @end deffn
 @deffn {} BFD_RELOC_D30V_32
 This is a 32-bit absolute reloc.
@@ -1848,13 +1796,9 @@ This is a 32-bit absolute reloc.
 This is a 32-bit pc-relative reloc.
 @end deffn
 @deffn {} BFD_RELOC_DLX_HI16_S
-DLX relocs
-@end deffn
-@deffn {} BFD_RELOC_DLX_LO16
-DLX relocs
-@end deffn
-@deffn {} BFD_RELOC_DLX_JMP26
-DLX relocs
+@deffnx {} BFD_RELOC_DLX_LO16
+@deffnx {} BFD_RELOC_DLX_JMP26
+DLX relocs.
 @end deffn
 @deffn {} BFD_RELOC_M32C_HI8
 @deffnx {} BFD_RELOC_M32C_RL_JUMP
@@ -1867,7 +1811,8 @@ Renesas M32R (formerly Mitsubishi M32R)
 This is a 24 bit absolute address.
 @end deffn
 @deffn {} BFD_RELOC_M32R_10_PCREL
-This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.
+This is a 10-bit pc-relative reloc with the right 2 bits assumed to
+be 0.
 @end deffn
 @deffn {} BFD_RELOC_M32R_18_PCREL
 This is an 18-bit reloc with the right 2 bits assumed to be 0.
@@ -1887,8 +1832,8 @@ used when the lower 16 bits are treated
 This is a 16-bit reloc containing the lower 16 bits of an address.
 @end deffn
 @deffn {} BFD_RELOC_M32R_SDA16
-This is a 16-bit reloc containing the small data area offset for use in
-add3, load, and store instructions.
+This is a 16-bit reloc containing the small data area offset for use
+in add3, load, and store instructions.
 @end deffn
 @deffn {} BFD_RELOC_M32R_GOT24
 @deffnx {} BFD_RELOC_M32R_26_PLTREL
@@ -1914,10 +1859,12 @@ NDS32 relocs.
 This is a 20 bit absolute address.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_9_PCREL
-This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
+This is a 9-bit pc-relative reloc with the right 1 bit assumed to
+be 0.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_WORD_9_PCREL
-This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
+This is a 9-bit pc-relative reloc with the right 1 bit assumed to
+be 0.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_15_PCREL
 This is an 15-bit reloc with the right 1 bit assumed to be 0.
@@ -1930,59 +1877,59 @@ This is a 25-bit reloc with the right 1
 @end deffn
 @deffn {} BFD_RELOC_NDS32_HI20
 This is a 20-bit reloc containing the high 20 bits of an address
-used with the lower 12 bits
+used with the lower 12 bits.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_LO12S3
 This is a 12-bit reloc containing the lower 12 bits of an address
-then shift right by 3. This is used with ldi,sdi...
+then shift right by 3.  This is used with ldi,sdi.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_LO12S2
 This is a 12-bit reloc containing the lower 12 bits of an address
-then shift left by 2. This is used with lwi,swi...
+then shift left by 2.  This is used with lwi,swi.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_LO12S1
 This is a 12-bit reloc containing the lower 12 bits of an address
-then shift left by 1. This is used with lhi,shi...
+then shift left by 1.  This is used with lhi,shi.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_LO12S0
 This is a 12-bit reloc containing the lower 12 bits of an address
-then shift left by 0. This is used with lbisbi...
+then shift left by 0.  This is used with lbisbi.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_LO12S0_ORI
 This is a 12-bit reloc containing the lower 12 bits of an address
-then shift left by 0. This is only used with branch relaxations
+then shift left by 0.  This is only used with branch relaxations.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA15S3
-This is a 15-bit reloc containing the small data area 18-bit signed offset
-and shift left by 3 for use in ldi, sdi...
+This is a 15-bit reloc containing the small data area 18-bit signed
+offset and shift left by 3 for use in ldi, sdi.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA15S2
-This is a 15-bit reloc containing the small data area 17-bit signed offset
-and shift left by 2 for use in lwi, swi...
+This is a 15-bit reloc containing the small data area 17-bit signed
+offset and shift left by 2 for use in lwi, swi.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA15S1
-This is a 15-bit reloc containing the small data area 16-bit signed offset
-and shift left by 1 for use in lhi, shi...
+This is a 15-bit reloc containing the small data area 16-bit signed
+offset and shift left by 1 for use in lhi, shi.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA15S0
-This is a 15-bit reloc containing the small data area 15-bit signed offset
-and shift left by 0 for use in lbi, sbi...
+This is a 15-bit reloc containing the small data area 15-bit signed
+offset and shift left by 0 for use in lbi, sbi.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA16S3
-This is a 16-bit reloc containing the small data area 16-bit signed offset
-and shift left by 3
+This is a 16-bit reloc containing the small data area 16-bit signed
+offset and shift left by 3.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA17S2
-This is a 17-bit reloc containing the small data area 17-bit signed offset
-and shift left by 2 for use in lwi.gp, swi.gp...
+This is a 17-bit reloc containing the small data area 17-bit signed
+offset and shift left by 2 for use in lwi.gp, swi.gp.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA18S1
-This is a 18-bit reloc containing the small data area 18-bit signed offset
-and shift left by 1 for use in lhi.gp, shi.gp...
+This is a 18-bit reloc containing the small data area 18-bit signed
+offset and shift left by 1 for use in lhi.gp, shi.gp.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA19S0
-This is a 19-bit reloc containing the small data area 19-bit signed offset
-and shift left by 0 for use in lbi.gp, sbi.gp...
+This is a 19-bit reloc containing the small data area 19-bit signed
+offset and shift left by 0 for use in lbi.gp, sbi.gp.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_GOT20
 @deffnx {} BFD_RELOC_NDS32_9_PLTREL
@@ -1999,7 +1946,7 @@ and shift left by 0 for use in lbi.gp, s
 @deffnx {} BFD_RELOC_NDS32_GOT_LO12
 @deffnx {} BFD_RELOC_NDS32_GOTPC_HI20
 @deffnx {} BFD_RELOC_NDS32_GOTPC_LO12
-for PIC
+For PIC.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_INSN16
 @deffnx {} BFD_RELOC_NDS32_LABEL
@@ -2021,27 +1968,27 @@ for PIC
 @deffnx {} BFD_RELOC_NDS32_LONGJUMP5
 @deffnx {} BFD_RELOC_NDS32_LONGJUMP6
 @deffnx {} BFD_RELOC_NDS32_LONGJUMP7
-for relax
+For relax.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_PLTREL_HI20
 @deffnx {} BFD_RELOC_NDS32_PLTREL_LO12
 @deffnx {} BFD_RELOC_NDS32_PLT_GOTREL_HI20
 @deffnx {} BFD_RELOC_NDS32_PLT_GOTREL_LO12
-for PIC
+For PIC.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA12S2_DP
 @deffnx {} BFD_RELOC_NDS32_SDA12S2_SP
 @deffnx {} BFD_RELOC_NDS32_LO12S2_DP
 @deffnx {} BFD_RELOC_NDS32_LO12S2_SP
-for floating point
+For floating point.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_DWARF2_OP1
 @deffnx {} BFD_RELOC_NDS32_DWARF2_OP2
 @deffnx {} BFD_RELOC_NDS32_DWARF2_LEB
-for dwarf2 debug_line.
+For dwarf2 debug_line.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_UPDATE_TA
-for eliminate 16-bit instructions
+For eliminating 16-bit instructions.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_PLT_GOTREL_LO20
 @deffnx {} BFD_RELOC_NDS32_PLT_GOTREL_LO15
@@ -2052,14 +1999,15 @@ for eliminate 16-bit instructions
 @deffnx {} BFD_RELOC_NDS32_GOTOFF_LO19
 @deffnx {} BFD_RELOC_NDS32_GOT15S2
 @deffnx {} BFD_RELOC_NDS32_GOT17S2
-for PIC object relaxation
+For PIC object relaxation.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_5
 NDS32 relocs.
 This is a 5 bit absolute address.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_10_UPCREL
-This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0.
+This is a 10-bit unsigned pc-relative reloc with the right 1 bit
+assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_SDA_FP7U2_RELA
 If fp were omitted, fp can used as another gp.
@@ -2082,7 +2030,7 @@ If fp were omitted, fp can used as anoth
 @deffnx {} BFD_RELOC_NDS32_DIFF32
 @deffnx {} BFD_RELOC_NDS32_DIFF_ULEB128
 @deffnx {} BFD_RELOC_NDS32_EMPTY
-relaxation relative relocation types
+Relaxation relative relocation types.
 @end deffn
 @deffn {} BFD_RELOC_NDS32_25_ABS
 This is a 25 bit absolute address.
@@ -2127,10 +2075,10 @@ For TLS.
 For floating load store relaxation.
 @end deffn
 @deffn {} BFD_RELOC_V850_9_PCREL
-This is a 9-bit reloc
+This is a 9-bit reloc.
 @end deffn
 @deffn {} BFD_RELOC_V850_22_PCREL
-This is a 22-bit reloc
+This is a 22-bit reloc.
 @end deffn
 @deffn {} BFD_RELOC_V850_SDA_16_16_OFFSET
 This is a 16 bit offset from the short data area pointer.
@@ -2191,8 +2139,8 @@ Used for relaxing indirect jumps.
 Used to maintain alignment whilst relaxing.
 @end deffn
 @deffn {} BFD_RELOC_V850_LO16_SPLIT_OFFSET
-This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
-instructions.
+This is a variation of BFD_RELOC_LO16 that can be used in v850e
+ld.bu instructions.
 @end deffn
 @deffn {} BFD_RELOC_V850_16_PCREL
 This is a 16-bit reloc.
@@ -2216,49 +2164,29 @@ This is a 16-bit reloc.
 This is a 16-bit reloc.
 @end deffn
 @deffn {} BFD_RELOC_V850_LO16_S1
-Low 16 bits. 16 bit shifted by 1.
+Low 16 bits.  16 bit shifted by 1.
 @end deffn
 @deffn {} BFD_RELOC_V850_CALLT_15_16_OFFSET
 This is a 16 bit offset from the call table base pointer.
 @end deffn
 @deffn {} BFD_RELOC_V850_32_GOTPCREL
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_16_GOT
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_32_GOT
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_22_PLT_PCREL
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_32_PLT_PCREL
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_COPY
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_GLOB_DAT
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_JMP_SLOT
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_RELATIVE
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_16_GOTOFF
-DSO relocations.
-@end deffn
-@deffn {} BFD_RELOC_V850_32_GOTOFF
+@deffnx {} BFD_RELOC_V850_16_GOT
+@deffnx {} BFD_RELOC_V850_32_GOT
+@deffnx {} BFD_RELOC_V850_22_PLT_PCREL
+@deffnx {} BFD_RELOC_V850_32_PLT_PCREL
+@deffnx {} BFD_RELOC_V850_COPY
+@deffnx {} BFD_RELOC_V850_GLOB_DAT
+@deffnx {} BFD_RELOC_V850_JMP_SLOT
+@deffnx {} BFD_RELOC_V850_RELATIVE
+@deffnx {} BFD_RELOC_V850_16_GOTOFF
+@deffnx {} BFD_RELOC_V850_32_GOTOFF
 DSO relocations.
 @end deffn
 @deffn {} BFD_RELOC_V850_CODE
-start code.
+Start code.
 @end deffn
 @deffn {} BFD_RELOC_V850_DATA
-start data in text.
+Start data in text.
 @end deffn
 @deffn {} BFD_RELOC_TIC30_LDP
 This is a 8bit DP reloc for the tms320c30, where the most
@@ -2324,12 +2252,12 @@ TMS320C6000 relocations.
 This is a 48 bit reloc for the FR30 that stores 32 bits.
 @end deffn
 @deffn {} BFD_RELOC_FR30_20
-This is a 32 bit reloc for the FR30 that stores 20 bits split up into
-two sections.
+This is a 32 bit reloc for the FR30 that stores 20 bits split up
+into two sections.
 @end deffn
 @deffn {} BFD_RELOC_FR30_6_IN_4
-This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
-4 bits.
+This is a 16 bit reloc for the FR30 that stores a 6 bit word offset
+in 4 bits.
 @end deffn
 @deffn {} BFD_RELOC_FR30_8_IN_8
 This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
@@ -2448,8 +2376,8 @@ These are relocations for the PUSHJ inst
 These are relocations for the JMP instruction.
 @end deffn
 @deffn {} BFD_RELOC_MMIX_ADDR19
-This is a relocation for a relative address as in a GETA instruction or
-a branch.
+This is a relocation for a relative address as in a GETA instruction
+or a branch.
 @end deffn
 @deffn {} BFD_RELOC_MMIX_ADDR27
 This is a relocation for a relative address as in a JMP instruction.
@@ -2463,12 +2391,12 @@ This is a relocation for an instruction
 register.
 @end deffn
 @deffn {} BFD_RELOC_MMIX_BASE_PLUS_OFFSET
-This is a relocation for two instruction fields holding a register and
-an offset, the equivalent of the relocation.
+This is a relocation for two instruction fields holding a register
+and an offset, the equivalent of the relocation.
 @end deffn
 @deffn {} BFD_RELOC_MMIX_LOCAL
-This relocation is an assertion that the expression is not allocated as
-a global register.  It does not modify contents.
+This relocation is an assertion that the expression is not allocated
+as a global register.  It does not modify contents.
 @end deffn
 @deffn {} BFD_RELOC_AVR_7_PCREL
 This is a 16 bit reloc for the AVR that stores 8 bit pc relative
@@ -2491,12 +2419,13 @@ This is a 16 bit reloc for the AVR that
 of data memory address) into 8 bit immediate value of LDI insn.
 @end deffn
 @deffn {} BFD_RELOC_AVR_HH8_LDI
-This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-of program memory address) into 8 bit immediate value of LDI insn.
+This is a 16 bit reloc for the AVR that stores 8 bit value (most
+high 8 bit of program memory address) into 8 bit immediate value of
+LDI insn.
 @end deffn
 @deffn {} BFD_RELOC_AVR_MS8_LDI
-This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-of 32 bit value) into 8 bit immediate value of LDI insn.
+This is a 16 bit reloc for the AVR that stores 8 bit value (most
+high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
 @end deffn
 @deffn {} BFD_RELOC_AVR_LO8_LDI_NEG
 This is a 16 bit reloc for the AVR that stores negated 8 bit value
@@ -2509,12 +2438,12 @@ SUBI insn.
 @end deffn
 @deffn {} BFD_RELOC_AVR_HH8_LDI_NEG
 This is a 16 bit reloc for the AVR that stores negated 8 bit value
-(most high 8 bit of program memory address) into 8 bit immediate value
-of LDI or SUBI insn.
+(most high 8 bit of program memory address) into 8 bit immediate
+value of LDI or SUBI insn.
 @end deffn
 @deffn {} BFD_RELOC_AVR_MS8_LDI_NEG
-This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
-of 32 bit value) into 8 bit immediate value of LDI insn.
+This is a 16 bit reloc for the AVR that stores negated 8 bit value
+(msb of 32 bit value) into 8 bit immediate value of LDI insn.
 @end deffn
 @deffn {} BFD_RELOC_AVR_LO8_LDI_PM
 This is a 16 bit reloc for the AVR that stores 8 bit value (usually
@@ -2522,9 +2451,9 @@ command address) into 8 bit immediate va
 @end deffn
 @deffn {} BFD_RELOC_AVR_LO8_LDI_GS
 This is a 16 bit reloc for the AVR that stores 8 bit value
-(command address) into 8 bit immediate value of LDI insn. If the address
-is beyond the 128k boundary, the linker inserts a jump stub for this reloc
-in the lower 128k.
+(command address) into 8 bit immediate value of LDI insn. If the
+address is beyond the 128k boundary, the linker inserts a jump stub
+for this reloc in the lower 128k.
 @end deffn
 @deffn {} BFD_RELOC_AVR_HI8_LDI_PM
 This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
@@ -2532,13 +2461,14 @@ of command address) into 8 bit immediate
 @end deffn
 @deffn {} BFD_RELOC_AVR_HI8_LDI_GS
 This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
-of command address) into 8 bit immediate value of LDI insn.  If the address
-is beyond the 128k boundary, the linker inserts a jump stub for this reloc
-below 128k.
+of command address) into 8 bit immediate value of LDI insn.  If the
+address is beyond the 128k boundary, the linker inserts a jump stub
+for this reloc below 128k.
 @end deffn
 @deffn {} BFD_RELOC_AVR_HH8_LDI_PM
-This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-of command address) into 8 bit immediate value of LDI insn.
+This is a 16 bit reloc for the AVR that stores 8 bit value (most
+high 8 bit of command address) into 8 bit immediate value of LDI
+insn.
 @end deffn
 @deffn {} BFD_RELOC_AVR_LO8_LDI_PM_NEG
 This is a 16 bit reloc for the AVR that stores negated 8 bit value
@@ -2560,27 +2490,27 @@ into 22 bits.
 @end deffn
 @deffn {} BFD_RELOC_AVR_LDI
 This is a 16 bit reloc for the AVR that stores all needed bits
-for absolute addressing with ldi with overflow check to linktime
+for absolute addressing with ldi with overflow check to linktime.
 @end deffn
 @deffn {} BFD_RELOC_AVR_6
 This is a 6 bit reloc for the AVR that stores offset for ldd/std
-instructions
+instructions.
 @end deffn
 @deffn {} BFD_RELOC_AVR_6_ADIW
 This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
-instructions
+instructions.
 @end deffn
 @deffn {} BFD_RELOC_AVR_8_LO
 This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
-in .byte lo8(symbol)
+in .byte lo8(symbol).
 @end deffn
 @deffn {} BFD_RELOC_AVR_8_HI
 This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
-in .byte hi8(symbol)
+in .byte hi8(symbol).
 @end deffn
 @deffn {} BFD_RELOC_AVR_8_HLO
 This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
-in .byte hlo8(symbol)
+in .byte hlo8(symbol).
 @end deffn
 @deffn {} BFD_RELOC_AVR_DIFF8
 @deffnx {} BFD_RELOC_AVR_DIFF16
@@ -2598,11 +2528,11 @@ lds and sts instructions supported only
 @end deffn
 @deffn {} BFD_RELOC_AVR_PORT6
 This is a 6 bit reloc for the AVR that stores an I/O register
-number for the IN and OUT instructions
+number for the IN and OUT instructions.
 @end deffn
 @deffn {} BFD_RELOC_AVR_PORT5
 This is a 5 bit reloc for the AVR that stores an I/O register
-number for the SBIC, SBIS, SBI and CBI instructions
+number for the SBIC, SBIS, SBI and CBI instructions.
 @end deffn
 @deffn {} BFD_RELOC_RISCV_HI20
 @deffnx {} BFD_RELOC_RISCV_PCREL_HI20
@@ -2636,14 +2566,13 @@ number for the SBIC, SBIS, SBI and CBI i
 @deffnx {} BFD_RELOC_RISCV_TLS_DTPREL64
 @deffnx {} BFD_RELOC_RISCV_TLS_TPREL32
 @deffnx {} BFD_RELOC_RISCV_TLS_TPREL64
+@deffnx {} BFD_RELOC_RISCV_TLSDESC_HI20
+@deffnx {} BFD_RELOC_RISCV_TLSDESC_LOAD_LO12
+@deffnx {} BFD_RELOC_RISCV_TLSDESC_ADD_LO12
+@deffnx {} BFD_RELOC_RISCV_TLSDESC_CALL
 @deffnx {} BFD_RELOC_RISCV_ALIGN
 @deffnx {} BFD_RELOC_RISCV_RVC_BRANCH
 @deffnx {} BFD_RELOC_RISCV_RVC_JUMP
-@deffnx {} BFD_RELOC_RISCV_RVC_LUI
-@deffnx {} BFD_RELOC_RISCV_GPREL_I
-@deffnx {} BFD_RELOC_RISCV_GPREL_S
-@deffnx {} BFD_RELOC_RISCV_TPREL_I
-@deffnx {} BFD_RELOC_RISCV_TPREL_S
 @deffnx {} BFD_RELOC_RISCV_RELAX
 @deffnx {} BFD_RELOC_RISCV_CFA
 @deffnx {} BFD_RELOC_RISCV_SUB6
@@ -2652,6 +2581,8 @@ number for the SBIC, SBIS, SBI and CBI i
 @deffnx {} BFD_RELOC_RISCV_SET16
 @deffnx {} BFD_RELOC_RISCV_SET32
 @deffnx {} BFD_RELOC_RISCV_32_PCREL
+@deffnx {} BFD_RELOC_RISCV_SET_ULEB128
+@deffnx {} BFD_RELOC_RISCV_SUB_ULEB128
 RISC-V relocations.
 @end deffn
 @deffn {} BFD_RELOC_RL78_NEG8
@@ -2841,15 +2772,15 @@ Long displacement extension.
 STT_GNU_IFUNC relocation.
 @end deffn
 @deffn {} BFD_RELOC_SCORE_GPREL15
-Score relocations
-Low 16 bit for load/store
+Score relocations.
+Low 16 bit for load/store.
 @end deffn
 @deffn {} BFD_RELOC_SCORE_DUMMY2
 @deffnx {} BFD_RELOC_SCORE_JMP
-This is a 24-bit reloc with the right 1 bit assumed to be 0
+This is a 24-bit reloc with the right 1 bit assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_SCORE_BRANCH
-This is a 19-bit reloc with the right 1 bit assumed to be 0
+This is a 19-bit reloc with the right 1 bit assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_SCORE_IMM30
 This is a 32-bit reloc for 48-bit instructions.
@@ -2858,61 +2789,61 @@ This is a 32-bit reloc for 48-bit instru
 This is a 32-bit reloc for 48-bit instructions.
 @end deffn
 @deffn {} BFD_RELOC_SCORE16_JMP
-This is a 11-bit reloc with the right 1 bit assumed to be 0
+This is a 11-bit reloc with the right 1 bit assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_SCORE16_BRANCH
-This is a 8-bit reloc with the right 1 bit assumed to be 0
+This is a 8-bit reloc with the right 1 bit assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_SCORE_BCMP
-This is a 9-bit reloc with the right 1 bit assumed to be 0
+This is a 9-bit reloc with the right 1 bit assumed to be 0.
 @end deffn
 @deffn {} BFD_RELOC_SCORE_GOT15
 @deffnx {} BFD_RELOC_SCORE_GOT_LO16
 @deffnx {} BFD_RELOC_SCORE_CALL15
 @deffnx {} BFD_RELOC_SCORE_DUMMY_HI16
-Undocumented Score relocs
+Undocumented Score relocs.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_FR9
-Scenix IP2K - 9-bit register number / data address
+Scenix IP2K - 9-bit register number / data address.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_BANK
-Scenix IP2K - 4-bit register/data bank number
+Scenix IP2K - 4-bit register/data bank number.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_ADDR16CJP
-Scenix IP2K - low 13 bits of instruction word address
+Scenix IP2K - low 13 bits of instruction word address.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_PAGE3
-Scenix IP2K - high 3 bits of instruction word address
+Scenix IP2K - high 3 bits of instruction word address.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_LO8DATA
 @deffnx {} BFD_RELOC_IP2K_HI8DATA
 @deffnx {} BFD_RELOC_IP2K_EX8DATA
-Scenix IP2K - ext/low/high 8 bits of data address
+Scenix IP2K - ext/low/high 8 bits of data address.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_LO8INSN
 @deffnx {} BFD_RELOC_IP2K_HI8INSN
-Scenix IP2K - low/high 8 bits of instruction word address
+Scenix IP2K - low/high 8 bits of instruction word address.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_PC_SKIP
-Scenix IP2K - even/odd PC modifier to modify snb pcl.0
+Scenix IP2K - even/odd PC modifier to modify snb pcl.0.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_TEXT
 Scenix IP2K - 16 bit word address in text section.
 @end deffn
 @deffn {} BFD_RELOC_IP2K_FR_OFFSET
-Scenix IP2K - 7-bit sp or dp offset
+Scenix IP2K - 7-bit sp or dp offset.
 @end deffn
 @deffn {} BFD_RELOC_VPE4KMATH_DATA
 @deffnx {} BFD_RELOC_VPE4KMATH_INSN
-Scenix VPE4K coprocessor - data/insn-space addressing
+Scenix VPE4K coprocessor - data/insn-space addressing.
 @end deffn
 @deffn {} BFD_RELOC_VTABLE_INHERIT
 @deffnx {} BFD_RELOC_VTABLE_ENTRY
 These two relocations are used by the linker to determine which of
 the entries in a C++ virtual function table are actually used.  When
-the --gc-sections option is given, the linker will zero out the entries
-that are not used, so that the code for those functions need not be
-included in the output.
+the --gc-sections option is given, the linker will zero out the
+entries that are not used, so that the code for those functions need
+not be included in the output.
 
 VTABLE_INHERIT is a zero-space relocation used to describe to the
 linker the inheritance tree of a C++ virtual function table.  The
@@ -2920,11 +2851,11 @@ relocation's symbol should be the parent
 relocation should be located at the child vtable.
 
 VTABLE_ENTRY is a zero-space relocation that describes the use of a
-virtual function table entry.  The reloc's symbol should refer to the
-table of the class mentioned in the code.  Off of that base, an offset
-describes the entry that is being used.  For Rela hosts, this offset
-is stored in the reloc's addend.  For Rel hosts, we are forced to put
-this offset in the reloc's section offset.
+virtual function table entry.  The reloc's symbol should refer to
+the table of the class mentioned in the code.  Off of that base, an
+offset describes the entry that is being used.  For Rela hosts, this
+offset is stored in the reloc's addend.  For Rel hosts, we are
+forced to put this offset in the reloc's section offset.
 @end deffn
 @deffn {} BFD_RELOC_IA64_IMM14
 @deffnx {} BFD_RELOC_IA64_IMM22
@@ -3048,7 +2979,8 @@ the symbol.
 Motorola 68HC11 reloc.
 This is a 24-bit reloc that represents the address with a 16-bit
 value and a 8-bit page number.  The symbol address is transformed
-to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
+to follow the 16K memory bank of 68HC12 (seen as mapped in the
+window).
 @end deffn
 @deffn {} BFD_RELOC_M68HC12_5B
 Motorola 68HC12 reloc.
@@ -3066,8 +2998,8 @@ some of them.
 @end deffn
 @deffn {} BFD_RELOC_XGATE_LO16
 Freescale XGATE reloc.
-This is the 16-bit lower part of an address.  It is used for the '16-bit'
-instructions.
+This is the 16-bit lower part of an address.  It is used for the
+'16-bit' instructions.
 @end deffn
 @deffn {} BFD_RELOC_XGATE_GPAGE
 Freescale XGATE reloc.
@@ -3085,13 +3017,13 @@ This is a 10-bit pc-relative reloc.
 @end deffn
 @deffn {} BFD_RELOC_XGATE_IMM8_LO
 Freescale XGATE reloc.
-This is the 16-bit lower part of an address.  It is used for the '16-bit'
-instructions.
+This is the 16-bit lower part of an address.  It is used for the
+'16-bit' instructions.
 @end deffn
 @deffn {} BFD_RELOC_XGATE_IMM8_HI
 Freescale XGATE reloc.
-This is the 16-bit higher part of an address.  It is used for the '16-bit'
-instructions.
+This is the 16-bit higher part of an address.  It is used for the
+'16-bit' instructions.
 @end deffn
 @deffn {} BFD_RELOC_XGATE_IMM3
 Freescale XGATE reloc.
@@ -3123,18 +3055,18 @@ This is a PCREL10 branch.
 @end deffn
 @deffn {} BFD_RELOC_M68HC12_LO8XG
 Motorola 68HC12/XGATE reloc.
-This is the 8 bit low part of an absolute address and immediately precedes
-a matching HI8XG part.
+This is the 8 bit low part of an absolute address and immediately
+precedes a matching HI8XG part.
 @end deffn
 @deffn {} BFD_RELOC_M68HC12_HI8XG
 Motorola 68HC12/XGATE reloc.
-This is the 8 bit high part of an absolute address and immediately follows
-a matching LO8XG part.
+This is the 8 bit high part of an absolute address and immediately
+follows a matching LO8XG part.
 @end deffn
 @deffn {} BFD_RELOC_S12Z_15_PCREL
 Freescale S12Z reloc.
-This is a 15 bit relative address.  If the most significant bits are all zero
-then it may be truncated to 8 bits.
+This is a 15 bit relative address.  If the most significant bits are
+all zero then it may be truncated to 8 bits.
 @end deffn
 @deffn {} BFD_RELOC_CR16_NUM8
 @deffnx {} BFD_RELOC_CR16_NUM16
@@ -3231,7 +3163,8 @@ Relocs used in ELF shared libraries for
 32-bit offset to symbol with PLT entry, relative to GOT.
 @end deffn
 @deffn {} BFD_RELOC_CRIS_32_PLT_PCREL
-32-bit offset to symbol with PLT entry, relative to this relocation.
+32-bit offset to symbol with PLT entry, relative to this
+relocation.
 @end deffn
 @deffn {} BFD_RELOC_CRIS_32_GOT_GD
 @deffnx {} BFD_RELOC_CRIS_16_GOT_GD
@@ -3254,6 +3187,7 @@ Relocs used in TLS code for CRIS.
 @deffnx {} BFD_RELOC_OR1K_SLO13
 @deffnx {} BFD_RELOC_OR1K_GOTPC_HI16
 @deffnx {} BFD_RELOC_OR1K_GOTPC_LO16
+@deffnx {} BFD_RELOC_OR1K_GOT_AHI16
 @deffnx {} BFD_RELOC_OR1K_GOT16
 @deffnx {} BFD_RELOC_OR1K_GOT_PG21
 @deffnx {} BFD_RELOC_OR1K_GOT_LO13
@@ -3305,12 +3239,6 @@ Sony Xstormy16 Relocations.
 @deffn {} BFD_RELOC_RELC
 Self-describing complex relocations.
 @end deffn
-@deffn {} BFD_RELOC_XC16X_PAG
-@deffnx {} BFD_RELOC_XC16X_POF
-@deffnx {} BFD_RELOC_XC16X_SEG
-@deffnx {} BFD_RELOC_XC16X_SOF
-Infineon Relocations.
-@end deffn
 @deffn {} BFD_RELOC_VAX_GLOB_DAT
 @deffnx {} BFD_RELOC_VAX_JMP_SLOT
 @deffnx {} BFD_RELOC_VAX_RELATIVE
@@ -3356,61 +3284,9 @@ Morpho MT - 8 bit immediate relocation.
 @deffnx {} BFD_RELOC_MSP430_ABS_HI16
 @deffnx {} BFD_RELOC_MSP430_PREL31
 @deffnx {} BFD_RELOC_MSP430_SYM_DIFF
-msp430 specific relocation codes
-@end deffn
-@deffn {} BFD_RELOC_NIOS2_S16
-@deffnx {} BFD_RELOC_NIOS2_U16
-@deffnx {} BFD_RELOC_NIOS2_CALL26
-@deffnx {} BFD_RELOC_NIOS2_IMM5
-@deffnx {} BFD_RELOC_NIOS2_CACHE_OPX
-@deffnx {} BFD_RELOC_NIOS2_IMM6
-@deffnx {} BFD_RELOC_NIOS2_IMM8
-@deffnx {} BFD_RELOC_NIOS2_HI16
-@deffnx {} BFD_RELOC_NIOS2_LO16
-@deffnx {} BFD_RELOC_NIOS2_HIADJ16
-@deffnx {} BFD_RELOC_NIOS2_GPREL
-@deffnx {} BFD_RELOC_NIOS2_UJMP
-@deffnx {} BFD_RELOC_NIOS2_CJMP
-@deffnx {} BFD_RELOC_NIOS2_CALLR
-@deffnx {} BFD_RELOC_NIOS2_ALIGN
-@deffnx {} BFD_RELOC_NIOS2_GOT16
-@deffnx {} BFD_RELOC_NIOS2_CALL16
-@deffnx {} BFD_RELOC_NIOS2_GOTOFF_LO
-@deffnx {} BFD_RELOC_NIOS2_GOTOFF_HA
-@deffnx {} BFD_RELOC_NIOS2_PCREL_LO
-@deffnx {} BFD_RELOC_NIOS2_PCREL_HA
-@deffnx {} BFD_RELOC_NIOS2_TLS_GD16
-@deffnx {} BFD_RELOC_NIOS2_TLS_LDM16
-@deffnx {} BFD_RELOC_NIOS2_TLS_LDO16
-@deffnx {} BFD_RELOC_NIOS2_TLS_IE16
-@deffnx {} BFD_RELOC_NIOS2_TLS_LE16
-@deffnx {} BFD_RELOC_NIOS2_TLS_DTPMOD
-@deffnx {} BFD_RELOC_NIOS2_TLS_DTPREL
-@deffnx {} BFD_RELOC_NIOS2_TLS_TPREL
-@deffnx {} BFD_RELOC_NIOS2_COPY
-@deffnx {} BFD_RELOC_NIOS2_GLOB_DAT
-@deffnx {} BFD_RELOC_NIOS2_JUMP_SLOT
-@deffnx {} BFD_RELOC_NIOS2_RELATIVE
-@deffnx {} BFD_RELOC_NIOS2_GOTOFF
-@deffnx {} BFD_RELOC_NIOS2_CALL26_NOAT
-@deffnx {} BFD_RELOC_NIOS2_GOT_LO
-@deffnx {} BFD_RELOC_NIOS2_GOT_HA
-@deffnx {} BFD_RELOC_NIOS2_CALL_LO
-@deffnx {} BFD_RELOC_NIOS2_CALL_HA
-@deffnx {} BFD_RELOC_NIOS2_R2_S12
-@deffnx {} BFD_RELOC_NIOS2_R2_I10_1_PCREL
-@deffnx {} BFD_RELOC_NIOS2_R2_T1I7_1_PCREL
-@deffnx {} BFD_RELOC_NIOS2_R2_T1I7_2
-@deffnx {} BFD_RELOC_NIOS2_R2_T2I4
-@deffnx {} BFD_RELOC_NIOS2_R2_T2I4_1
-@deffnx {} BFD_RELOC_NIOS2_R2_T2I4_2
-@deffnx {} BFD_RELOC_NIOS2_R2_X1I7_2
-@deffnx {} BFD_RELOC_NIOS2_R2_X2L5
-@deffnx {} BFD_RELOC_NIOS2_R2_F1I5_2
-@deffnx {} BFD_RELOC_NIOS2_R2_L5I4X1
-@deffnx {} BFD_RELOC_NIOS2_R2_T1X1I6
-@deffnx {} BFD_RELOC_NIOS2_R2_T1X1I6_2
-Relocations used by the Altera Nios II core.
+@deffnx {} BFD_RELOC_MSP430_SET_ULEB128
+@deffnx {} BFD_RELOC_MSP430_SUB_ULEB128
+msp430 specific relocation codes.
 @end deffn
 @deffn {} BFD_RELOC_PRU_U16
 PRU LDI 16-bit unsigned data-memory relocation.
@@ -3431,8 +3307,8 @@ PRU 8-bit unsigned relocation used for t
 @end deffn
 @deffn {} BFD_RELOC_PRU_32_PMEM
 @deffnx {} BFD_RELOC_PRU_16_PMEM
-PRU Program Memory relocations.  Used to convert from byte addressing to
-32-bit word addressing.
+PRU Program Memory relocations.  Used to convert from byte
+addressing to 32-bit word addressing.
 @end deffn
 @deffn {} BFD_RELOC_PRU_GNU_DIFF8
 @deffnx {} BFD_RELOC_PRU_GNU_DIFF16
@@ -3440,12 +3316,12 @@ PRU Program Memory relocations.  Used to
 @deffnx {} BFD_RELOC_PRU_GNU_DIFF16_PMEM
 @deffnx {} BFD_RELOC_PRU_GNU_DIFF32_PMEM
 PRU 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
-second symbol so the linker can determine whether to adjust the field
-value. The PMEM variants encode the word difference, instead of byte
-difference between 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 second symbol so the linker can determine whether to
+adjust the field value.  The PMEM variants encode the word
+difference, instead of byte difference between symbols.
 @end deffn
 @deffn {} BFD_RELOC_IQ2000_OFFSET_16
 @deffnx {} BFD_RELOC_IQ2000_OFFSET_21
@@ -3463,18 +3339,21 @@ to one of its own internal functions or
 Xtensa relocations for ELF shared objects.
 @end deffn
 @deffn {} BFD_RELOC_XTENSA_PLT
-Xtensa relocation used in ELF object files for symbols that may require
-PLT entries.  Otherwise, this is just a generic 32-bit relocation.
+Xtensa relocation used in ELF object files for symbols that may
+require PLT entries.  Otherwise, this is just a generic 32-bit
+relocation.
 @end deffn
 @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
-assuming no relaxation.  The relocation encodes the position of the
-first symbol so the linker can determine whether to adjust the field
-value.
+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 first symbol so the linker can determine whether to
+adjust the field value.
 @end deffn
 @deffn {} BFD_RELOC_XTENSA_SLOT0_OP
 @deffnx {} BFD_RELOC_XTENSA_SLOT1_OP
@@ -3540,9 +3419,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
@@ -3588,8 +3504,8 @@ required.
 Used when referencing a GOT entry.
 @end deffn
 @deffn {} BFD_RELOC_MACH_O_X86_64_GOT_LOAD
-Used when loading a GOT entry with movq.  It is specially marked so that
-the linker could optimize the movq to a leaq if possible.
+Used when loading a GOT entry with movq.  It is specially marked so
+that the linker could optimize the movq to a leaq if possible.
 @end deffn
 @deffn {} BFD_RELOC_MACH_O_X86_64_PCREL32_1
 Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.
@@ -3616,70 +3532,75 @@ Relative offset within page of GOT slot.
 Address of a GOT entry.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_32_LO
-This is a 32 bit reloc for the microblaze that stores the
-low 16 bits of a value
+This is a 32 bit reloc for the microblaze that stores the low 16
+bits of a value.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_32_LO_PCREL
-This is a 32 bit pc-relative reloc for the microblaze that
-stores the low 16 bits of a value
+This is a 32 bit pc-relative reloc for the microblaze that stores
+the low 16 bits of a value.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_32_ROSDA
-This is a 32 bit reloc for the microblaze that stores a
-value relative to the read-only small data area anchor
+This is a 32 bit reloc for the microblaze that stores a value
+relative to the read-only small data area anchor.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_32_RWSDA
-This is a 32 bit reloc for the microblaze that stores a
-value relative to the read-write small data area anchor
+This is a 32 bit reloc for the microblaze that stores a value
+relative to the read-write small data area anchor.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
-This is a 32 bit reloc for the microblaze to handle
-expressions of the form "Symbol Op Symbol"
+This is a 32 bit reloc for the microblaze to handle expressions of
+the form "Symbol Op Symbol".
+@end deffn
+@deffn {} BFD_RELOC_MICROBLAZE_32_NONE
+This is a 32 bit reloc that stores the 32 bit pc relative value in
+two words (with an imm instruction).  No relocation is done here -
+only used for relaxing.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_NONE
-This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  No relocation is
-done here - only used for relaxing
+This is a 64 bit reloc that stores the 32 bit pc relative value in
+two words (with an imm instruction).  No relocation is done here -
+only used for relaxing.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_GOTPC
-This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  The relocation is
-PC-relative GOT offset
+This is a 64 bit reloc that stores the 32 bit pc relative value in
+two words (with an imm instruction).  The relocation is PC-relative
+GOT offset.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_GOT
-This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  The relocation is
-GOT offset
+This is a 64 bit reloc that stores the 32 bit pc relative value in
+two words (with an imm instruction).  The relocation is GOT offset.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_PLT
-This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  The relocation is
-PC-relative offset into PLT
+This is a 64 bit reloc that stores the 32 bit pc relative value in
+two words (with an imm instruction).  The relocation is PC-relative
+offset into PLT.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_GOTOFF
-This is a 64 bit reloc that stores the 32 bit GOT relative
-value in two words (with an imm instruction).  The relocation is
-relative offset from _GLOBAL_OFFSET_TABLE_
+This is a 64 bit reloc that stores the 32 bit GOT relative value in
+two words (with an imm instruction).  The relocation is relative
+offset from _GLOBAL_OFFSET_TABLE_.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_32_GOTOFF
-This is a 32 bit reloc that stores the 32 bit GOT relative
-value in a word.  The relocation is relative offset from
+This is a 32 bit reloc that stores the 32 bit GOT relative value in
+a word.  The relocation is relative offset from
+_GLOBAL_OFFSET_TABLE_.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_COPY
 This is used to tell the dynamic linker to copy the value out of
 the dynamic object into the runtime process image.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_TLS
-Unused Reloc
+Unused Reloc.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_TLSGD
 This is a 64 bit reloc that stores the 32 bit GOT relative value
-of the GOT TLS GD info entry in two words (with an imm instruction). The
-relocation is GOT offset.
+of the GOT TLS GD info entry in two words (with an imm instruction).
+The relocation is GOT offset.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_TLSLD
 This is a 64 bit reloc that stores the 32 bit GOT relative value
-of the GOT TLS LD info entry in two words (with an imm instruction). The
-relocation is GOT offset.
+of the GOT TLS LD info entry in two words (with an imm instruction).
+The relocation is GOT offset.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
 This is a 32 bit reloc that stores the Module ID to GOT(n).
@@ -3689,25 +3610,125 @@ This is a 32 bit reloc that stores TLS o
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_TLSDTPREL
 This is a 32 bit reloc for storing TLS offset to two words (uses imm
-instruction)
+instruction).
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
-This is a 64 bit reloc that stores 32-bit thread pointer relative offset
-to two words (uses imm instruction).
+This is a 64 bit reloc that stores 32-bit thread pointer relative
+offset to two words (uses imm instruction).
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_TLSTPREL
-This is a 64 bit reloc that stores 32-bit thread pointer relative offset
-to two words (uses imm instruction).
+This is a 64 bit reloc that stores 32-bit thread pointer relative
+offset to two words (uses imm instruction).
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_TEXTPCREL
-This is a 64 bit reloc that stores the 32 bit pc relative
-value in two words (with an imm instruction).  The relocation is
-PC-relative offset from start of TEXT.
+This is a 64 bit reloc that stores the 32 bit pc relative value in
+two words (with an imm instruction).  The relocation is PC-relative
+offset from start of TEXT.
 @end deffn
 @deffn {} BFD_RELOC_MICROBLAZE_64_TEXTREL
-This is a 64 bit reloc that stores the 32 bit offset
-value in two words (with an imm instruction).  The relocation is
-relative offset from start of TEXT.
+This is a 64 bit reloc that stores the 32 bit offset value in two
+words (with an imm instruction).  The relocation is relative offset
+from start of TEXT.
+@end deffn
+@deffn {} BFD_RELOC_KVX_RELOC_START
+KVX pseudo relocation code to mark the start of the KVX relocation
+enumerators.  N.B. the order of the enumerators is important as
+several tables in the KVX bfd backend are indexed by these
+enumerators; make sure they are all synced.
+@end deffn
+@deffn {} BFD_RELOC_KVX_NONE
+KVX null relocation code.
+@end deffn
+@deffn {} BFD_RELOC_KVX_16
+@deffnx {} BFD_RELOC_KVX_32
+@deffnx {} BFD_RELOC_KVX_64
+@deffnx {} BFD_RELOC_KVX_S16_PCREL
+@deffnx {} BFD_RELOC_KVX_PCREL17
+@deffnx {} BFD_RELOC_KVX_PCREL27
+@deffnx {} BFD_RELOC_KVX_32_PCREL
+@deffnx {} BFD_RELOC_KVX_S37_PCREL_LO10
+@deffnx {} BFD_RELOC_KVX_S37_PCREL_UP27
+@deffnx {} BFD_RELOC_KVX_S43_PCREL_LO10
+@deffnx {} BFD_RELOC_KVX_S43_PCREL_UP27
+@deffnx {} BFD_RELOC_KVX_S43_PCREL_EX6
+@deffnx {} BFD_RELOC_KVX_S64_PCREL_LO10
+@deffnx {} BFD_RELOC_KVX_S64_PCREL_UP27
+@deffnx {} BFD_RELOC_KVX_S64_PCREL_EX27
+@deffnx {} BFD_RELOC_KVX_64_PCREL
+@deffnx {} BFD_RELOC_KVX_S16
+@deffnx {} BFD_RELOC_KVX_S32_LO5
+@deffnx {} BFD_RELOC_KVX_S32_UP27
+@deffnx {} BFD_RELOC_KVX_S37_LO10
+@deffnx {} BFD_RELOC_KVX_S37_UP27
+@deffnx {} BFD_RELOC_KVX_S37_GOTOFF_LO10
+@deffnx {} BFD_RELOC_KVX_S37_GOTOFF_UP27
+@deffnx {} BFD_RELOC_KVX_S43_GOTOFF_LO10
+@deffnx {} BFD_RELOC_KVX_S43_GOTOFF_UP27
+@deffnx {} BFD_RELOC_KVX_S43_GOTOFF_EX6
+@deffnx {} BFD_RELOC_KVX_32_GOTOFF
+@deffnx {} BFD_RELOC_KVX_64_GOTOFF
+@deffnx {} BFD_RELOC_KVX_32_GOT
+@deffnx {} BFD_RELOC_KVX_S37_GOT_LO10
+@deffnx {} BFD_RELOC_KVX_S37_GOT_UP27
+@deffnx {} BFD_RELOC_KVX_S43_GOT_LO10
+@deffnx {} BFD_RELOC_KVX_S43_GOT_UP27
+@deffnx {} BFD_RELOC_KVX_S43_GOT_EX6
+@deffnx {} BFD_RELOC_KVX_64_GOT
+@deffnx {} BFD_RELOC_KVX_GLOB_DAT
+@deffnx {} BFD_RELOC_KVX_COPY
+@deffnx {} BFD_RELOC_KVX_JMP_SLOT
+@deffnx {} BFD_RELOC_KVX_RELATIVE
+@deffnx {} BFD_RELOC_KVX_S43_LO10
+@deffnx {} BFD_RELOC_KVX_S43_UP27
+@deffnx {} BFD_RELOC_KVX_S43_EX6
+@deffnx {} BFD_RELOC_KVX_S64_LO10
+@deffnx {} BFD_RELOC_KVX_S64_UP27
+@deffnx {} BFD_RELOC_KVX_S64_EX27
+@deffnx {} BFD_RELOC_KVX_S37_GOTADDR_LO10
+@deffnx {} BFD_RELOC_KVX_S37_GOTADDR_UP27
+@deffnx {} BFD_RELOC_KVX_S43_GOTADDR_LO10
+@deffnx {} BFD_RELOC_KVX_S43_GOTADDR_UP27
+@deffnx {} BFD_RELOC_KVX_S43_GOTADDR_EX6
+@deffnx {} BFD_RELOC_KVX_S64_GOTADDR_LO10
+@deffnx {} BFD_RELOC_KVX_S64_GOTADDR_UP27
+@deffnx {} BFD_RELOC_KVX_S64_GOTADDR_EX27
+@deffnx {} BFD_RELOC_KVX_64_DTPMOD
+@deffnx {} BFD_RELOC_KVX_64_DTPOFF
+@deffnx {} BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10
+@deffnx {} BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10
+@deffnx {} BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6
+@deffnx {} BFD_RELOC_KVX_S37_TLS_GD_LO10
+@deffnx {} BFD_RELOC_KVX_S37_TLS_GD_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_GD_LO10
+@deffnx {} BFD_RELOC_KVX_S43_TLS_GD_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_GD_EX6
+@deffnx {} BFD_RELOC_KVX_S37_TLS_LD_LO10
+@deffnx {} BFD_RELOC_KVX_S37_TLS_LD_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_LD_LO10
+@deffnx {} BFD_RELOC_KVX_S43_TLS_LD_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_LD_EX6
+@deffnx {} BFD_RELOC_KVX_64_TPOFF
+@deffnx {} BFD_RELOC_KVX_S37_TLS_IE_LO10
+@deffnx {} BFD_RELOC_KVX_S37_TLS_IE_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_IE_LO10
+@deffnx {} BFD_RELOC_KVX_S43_TLS_IE_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_IE_EX6
+@deffnx {} BFD_RELOC_KVX_S37_TLS_LE_LO10
+@deffnx {} BFD_RELOC_KVX_S37_TLS_LE_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_LE_LO10
+@deffnx {} BFD_RELOC_KVX_S43_TLS_LE_UP27
+@deffnx {} BFD_RELOC_KVX_S43_TLS_LE_EX6
+@deffnx {} BFD_RELOC_KVX_8
+KVX Relocations.
+@end deffn
+@deffn {} BFD_RELOC_KVX_RELOC_END
+KVX pseudo relocation code to mark the end of the KVX relocation
+enumerators that have direct mapping to ELF reloc codes.  There are
+a few more enumerators after this one; those are mainly used by the
+KVX assembler for the internal fixup or to select one of the above
+enumerators.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_RELOC_START
 AArch64 pseudo relocation code to mark the start of the AArch64
@@ -3735,77 +3756,77 @@ PC-relative relocations.  These are equi
 and they were added to assist the indexing of the howto table.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G0
-AArch64 MOV[NZK] instruction with most significant bits 0 to 15
-of an unsigned address/value.
+AArch64 MOV[NZK] instruction with most significant bits 0 to 15 of
+an unsigned address/value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G0_NC
 AArch64 MOV[NZK] instruction with less significant bits 0 to 15 of
 an address/value.  No overflow checking.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G1
-AArch64 MOV[NZK] instruction with most significant bits 16 to 31
-of an unsigned address/value.
+AArch64 MOV[NZK] instruction with most significant bits 16 to 31 of
+an unsigned address/value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G1_NC
-AArch64 MOV[NZK] instruction with less significant bits 16 to 31
-of an address/value.  No overflow checking.
+AArch64 MOV[NZK] instruction with less significant bits 16 to 31 of
+an address/value.  No overflow checking.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G2
-AArch64 MOV[NZK] instruction with most significant bits 32 to 47
-of an unsigned address/value.
+AArch64 MOV[NZK] instruction with most significant bits 32 to 47 of
+an unsigned address/value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G2_NC
-AArch64 MOV[NZK] instruction with less significant bits 32 to 47
-of an address/value.  No overflow checking.
+AArch64 MOV[NZK] instruction with less significant bits 32 to 47 of
+an address/value.  No overflow checking.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G3
-AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
-of a signed or unsigned address/value.
+AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 of a
+signed or unsigned address/value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G0_S
-AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+signed value.  Changes instruction to MOVZ or MOVN depending on the
 value's sign.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G1_S
-AArch64 MOV[NZ] instruction with most significant bits 16 to 31
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+AArch64 MOV[NZ] instruction with most significant bits 16 to 31 of a
+signed value.  Changes instruction to MOVZ or MOVN depending on the
 value's sign.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_G2_S
-AArch64 MOV[NZ] instruction with most significant bits 32 to 47
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+AArch64 MOV[NZ] instruction with most significant bits 32 to 47 of a
+signed value.  Changes instruction to MOVZ or MOVN depending on the
 value's sign.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_PREL_G0
-AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+signed value.  Changes instruction to MOVZ or MOVN depending on the
 value's sign.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_PREL_G0_NC
-AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+signed value.  Changes instruction to MOVZ or MOVN depending on the
 value's sign.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_PREL_G1
-AArch64 MOVK instruction with most significant bits 16 to 31
-of a signed value.
+AArch64 MOVK instruction with most significant bits 16 to 31 of a
+signed value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_PREL_G1_NC
-AArch64 MOVK instruction with most significant bits 16 to 31
-of a signed value.
+AArch64 MOVK instruction with most significant bits 16 to 31 of a
+signed value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_PREL_G2
-AArch64 MOVK instruction with most significant bits 32 to 47
-of a signed value.
+AArch64 MOVK instruction with most significant bits 32 to 47 of a
+signed value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_PREL_G2_NC
-AArch64 MOVK instruction with most significant bits 32 to 47
-of a signed value.
+AArch64 MOVK instruction with most significant bits 32 to 47 of a
+signed value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_PREL_G3
-AArch64 MOVK instruction with most significant bits 47 to 63
-of a signed value.
+AArch64 MOVK instruction with most significant bits 47 to 63 of a
+signed value.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_LD_LO19_PCREL
 AArch64 Load Literal instruction, holding a 19 bit pc-relative word
@@ -3813,7 +3834,8 @@ offset.  The lowest two bits must be zer
 instruction, giving a 21 bit signed byte offset.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_ADR_LO21_PCREL
-AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
+AArch64 ADR instruction, holding a simple 21 bit pc-relative byte
+offset.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_ADR_HI21_PCREL
 AArch64 ADRP instruction, with bits 12 to 32 of a pc-relative page
@@ -3825,8 +3847,8 @@ offset, giving a 4KB aligned page base a
 checking.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_ADD_LO12
-AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
-Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
+AArch64 ADD immediate instruction, holding bits 0 to 11 of the
+address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_LDST8_LO12
 AArch64 8-bit load/store instruction, holding bits 0 to 11 of the
@@ -3834,23 +3856,23 @@ address.  Used in conjunction with BFD_R
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TSTBR14
 AArch64 14 bit pc-relative test bit and branch.
-The lowest two bits must be zero and are not stored in the instruction,
-giving a 16 bit signed byte offset.
+The lowest two bits must be zero and are not stored in the
+instruction, giving a 16 bit signed byte offset.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_BRANCH19
 AArch64 19 bit pc-relative conditional branch and compare & branch.
-The lowest two bits must be zero and are not stored in the instruction,
-giving a 21 bit signed byte offset.
+The lowest two bits must be zero and are not stored in the
+instruction, giving a 21 bit signed byte offset.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_JUMP26
 AArch64 26 bit pc-relative unconditional branch.
-The lowest two bits must be zero and are not stored in the instruction,
-giving a 28 bit signed byte offset.
+The lowest two bits must be zero and are not stored in the
+instruction, giving a 28 bit signed byte offset.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_CALL26
 AArch64 26 bit pc-relative unconditional branch and link.
-The lowest two bits must be zero and are not stored in the instruction,
-giving a 28 bit signed byte offset.
+The lowest two bits must be zero and are not stored in the
+instruction, giving a 28 bit signed byte offset.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_LDST16_LO12
 AArch64 16-bit load/store instruction, holding bits 0 to 11 of the
@@ -3870,15 +3892,15 @@ address.  Used in conjunction with BFD_R
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_GOT_LD_PREL19
 AArch64 Load Literal instruction, holding a 19 bit PC relative word
-offset of the global offset table entry for a symbol.  The lowest two
-bits must be zero and are not stored in the instruction, giving a 21
-bit signed byte offset.  This relocation type requires signed overflow
-checking.
+offset of the global offset table entry for a symbol.  The lowest
+two bits must be zero and are not stored in the instruction, giving
+a 21 bit signed byte offset.  This relocation type requires signed
+overflow checking.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_ADR_GOT_PAGE
-Get to the page base of the global offset table entry for a symbol as
-part of an ADRP instruction using a 21 bit PC relative value.Used in
-conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
+Get to the page base of the global offset table entry for a symbol
+as part of an ADRP instruction using a 21 bit PC relative value.
+Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
 Unsigned 12 bit byte offset for 64 bit load/store from the page of
@@ -3895,18 +3917,20 @@ Unsigned 16 bit byte offset for 64 bit l
 for this symbol.  Valid in LP64 ABI only.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
-Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
-for this symbol.  Valid in LP64 ABI only.
+Unsigned 16 bit byte higher offset for 64 bit load/store from the
+GOT entry for this symbol.  Valid in LP64 ABI only.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
 Unsigned 15 bit byte offset for 64 bit load/store from the page of
 the GOT entry for this symbol.  Valid in LP64 ABI only.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
-Scaled 14 bit byte offset to the page base of the global offset table.
+Scaled 14 bit byte offset to the page base of the global offset
+table.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
-Scaled 15 bit byte offset to the page base of the global offset table.
+Scaled 15 bit byte offset to the page base of the global offset
+table.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
 Get to the page base of the global offset table entry for a symbols
@@ -3915,11 +3939,11 @@ relative value.  Used in conjunction wit
 BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSGD_ADR_PREL21
-AArch64 TLS General Dynamic
+AArch64 TLS General Dynamic.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
-Unsigned 12 bit byte offset to global offset table entry for a symbols
-tls_index structure.  Used in conjunction with
+Unsigned 12 bit byte offset to global offset table entry for a
+symbol's tls_index structure.  Used in conjunction with
 BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC
@@ -3953,11 +3977,12 @@ bit[23:12] of byte offset to module TLS
 Unsigned 12 bit byte offset to module TLS base address.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
-No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
+No overflow check version of
+BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC
-Unsigned 12 bit byte offset to global offset table entry for a symbols
-tls_index structure.  Used in conjunction with
+Unsigned 12 bit byte offset to global offset table entry for a
+symbol's tls_index structure.  Used in conjunction with
 BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
@@ -3965,47 +3990,52 @@ GOT entry page address for AArch64 TLS L
 instruction.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_ADR_PREL21
-GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction.
+GOT entry address for AArch64 TLS Local Dynamic, used with ADR
+instruction.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12
 bit[11:1] of byte offset to module TLS base address, encoded in ldst
 instructions.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no
+overflow check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12
 bit[11:2] of byte offset to module TLS base address, encoded in ldst
 instructions.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no
+overflow check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12
 bit[11:3] of byte offset to module TLS base address, encoded in ldst
 instructions.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no
+overflow check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12
 bit[11:0] of byte offset to module TLS base address, encoded in ldst
 instructions.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no
+overflow check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
 bit[15:0] of byte offset to module TLS base address.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
-No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
+No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
 bit[31:16] of byte offset to module TLS base address.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
-No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
+No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2
 bit[47:32] of byte offset to module TLS base address.
@@ -4039,85 +4069,57 @@ bit[11:1] of byte offset to module TLS b
 instructions.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no
+overflow check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12
 bit[11:2] of byte offset to module TLS base address, encoded in ldst
 instructions.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no
+overflow check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12
 bit[11:3] of byte offset to module TLS base address, encoded in ldst
 instructions.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no
+overflow check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12
 bit[11:0] of byte offset to module TLS base address, encoded in ldst
 instructions.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow
+check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_ADD_LO12
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_OFF_G1
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_LDR
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_ADD
-AArch64 TLS DESC relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC_CALL
-AArch64 TLS DESC relocation.
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_ADD_LO12
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_OFF_G1
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_LDR
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_ADD
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC_CALL
+AArch64 TLS DESC relocations.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_COPY
-AArch64 TLS relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_GLOB_DAT
-AArch64 TLS relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_JUMP_SLOT
-AArch64 TLS relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_RELATIVE
-AArch64 TLS relocation.
+@deffnx {} BFD_RELOC_AARCH64_GLOB_DAT
+@deffnx {} BFD_RELOC_AARCH64_JUMP_SLOT
+@deffnx {} BFD_RELOC_AARCH64_RELATIVE
+AArch64 DSO relocations.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLS_DTPMOD
-AArch64 TLS relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLS_DTPREL
-AArch64 TLS relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLS_TPREL
-AArch64 TLS relocation.
-@end deffn
-@deffn {} BFD_RELOC_AARCH64_TLSDESC
-AArch64 TLS relocation.
+@deffnx {} BFD_RELOC_AARCH64_TLS_DTPREL
+@deffnx {} BFD_RELOC_AARCH64_TLS_TPREL
+@deffnx {} BFD_RELOC_AARCH64_TLSDESC
+AArch64 TLS relocations.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_IRELATIVE
 AArch64 support for STT_GNU_IFUNC.
@@ -4138,20 +4140,22 @@ AArch64 unspecified load/store instructi
 address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12
-AArch64 pseudo relocation code for TLS local dynamic mode.  It's to be
-used internally by the AArch64 assembler and not (currently) written to
-any object files.
+AArch64 pseudo relocation code for TLS local dynamic mode.  It's to
+be used internally by the AArch64 assembler and not (currently)
+written to any object files.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow
+check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12
 AArch64 pseudo relocation code for TLS local exec mode.  It's to be
-used internally by the AArch64 assembler and not (currently) written to
-any object files.
+used internally by the AArch64 assembler and not (currently) written
+to any object files.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC
-Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow check.
+Similar to BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow
+check.
 @end deffn
 @deffn {} BFD_RELOC_AARCH64_LD_GOT_LO12_NC
 AArch64 pseudo relocation code to be used internally by the AArch64
@@ -4165,6 +4169,11 @@ assembler and not (currently) written to
 AArch64 pseudo relocation code to be used internally by the AArch64
 assembler and not (currently) written to any object files.
 @end deffn
+@deffn {} BFD_RELOC_AARCH64_BRANCH9
+AArch64 9 bit pc-relative conditional branch and compare & branch.
+The lowest two bits must be zero and are not stored in the
+instruction, giving an 11 bit signed byte offset.
+@end deffn
 @deffn {} BFD_RELOC_TILEPRO_COPY
 @deffnx {} BFD_RELOC_TILEPRO_GLOB_DAT
 @deffnx {} BFD_RELOC_TILEPRO_JMP_SLOT
@@ -4358,29 +4367,29 @@ Tilera TILEPro Relocations.
 Tilera TILE-Gx Relocations.
 @end deffn
 @deffn {} BFD_RELOC_BPF_64
-@deffnx {} BFD_RELOC_BPF_32
-@deffnx {} BFD_RELOC_BPF_16
-@deffnx {} BFD_RELOC_BPF_DISP16
 @deffnx {} BFD_RELOC_BPF_DISP32
+@deffnx {} BFD_RELOC_BPF_DISPCALL32
+@deffnx {} BFD_RELOC_BPF_DISP16
 Linux eBPF relocations.
 @end deffn
 @deffn {} BFD_RELOC_EPIPHANY_SIMM8
-Adapteva EPIPHANY - 8 bit signed pc-relative displacement
+Adapteva EPIPHANY - 8 bit signed pc-relative displacement.
 @end deffn
 @deffn {} BFD_RELOC_EPIPHANY_SIMM24
-Adapteva EPIPHANY - 24 bit signed pc-relative displacement
+Adapteva EPIPHANY - 24 bit signed pc-relative displacement.
 @end deffn
 @deffn {} BFD_RELOC_EPIPHANY_HIGH
-Adapteva EPIPHANY - 16 most-significant bits of absolute address
+Adapteva EPIPHANY - 16 most-significant bits of absolute address.
 @end deffn
 @deffn {} BFD_RELOC_EPIPHANY_LOW
-Adapteva EPIPHANY - 16 least-significant bits of absolute address
+Adapteva EPIPHANY - 16 least-significant bits of absolute address.
 @end deffn
 @deffn {} BFD_RELOC_EPIPHANY_SIMM11
-Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
+Adapteva EPIPHANY - 11 bit signed number - add/sub immediate.
 @end deffn
 @deffn {} BFD_RELOC_EPIPHANY_IMM11
-Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)
+Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st
+displacement).
 @end deffn
 @deffn {} BFD_RELOC_EPIPHANY_IMM8
 Adapteva EPIPHANY - 8 bit immediate for 16 bit mov instruction.
@@ -4476,133 +4485,189 @@ C-SKY relocations.
 @deffn {} BFD_RELOC_S12Z_OPR
 S12Z relocations.
 @end deffn
+@deffn {} BFD_RELOC_LARCH_TLS_DTPMOD32
+@deffnx {} BFD_RELOC_LARCH_TLS_DTPREL32
+@deffnx {} BFD_RELOC_LARCH_TLS_DTPMOD64
+@deffnx {} BFD_RELOC_LARCH_TLS_DTPREL64
+@deffnx {} BFD_RELOC_LARCH_TLS_TPREL32
+@deffnx {} BFD_RELOC_LARCH_TLS_TPREL64
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC32
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC64
+@deffnx {} BFD_RELOC_LARCH_MARK_LA
+@deffnx {} BFD_RELOC_LARCH_MARK_PCREL
+@deffnx {} BFD_RELOC_LARCH_SOP_PUSH_PCREL
+@deffnx {} BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE
+@deffnx {} BFD_RELOC_LARCH_SOP_PUSH_DUP
+@deffnx {} BFD_RELOC_LARCH_SOP_PUSH_GPREL
+@deffnx {} BFD_RELOC_LARCH_SOP_PUSH_TLS_TPREL
+@deffnx {} BFD_RELOC_LARCH_SOP_PUSH_TLS_GOT
+@deffnx {} BFD_RELOC_LARCH_SOP_PUSH_TLS_GD
+@deffnx {} BFD_RELOC_LARCH_SOP_PUSH_PLT_PCREL
+@deffnx {} BFD_RELOC_LARCH_SOP_ASSERT
+@deffnx {} BFD_RELOC_LARCH_SOP_NOT
+@deffnx {} BFD_RELOC_LARCH_SOP_SUB
+@deffnx {} BFD_RELOC_LARCH_SOP_SL
+@deffnx {} BFD_RELOC_LARCH_SOP_SR
+@deffnx {} BFD_RELOC_LARCH_SOP_ADD
+@deffnx {} BFD_RELOC_LARCH_SOP_AND
+@deffnx {} BFD_RELOC_LARCH_SOP_IF_ELSE
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_S_10_5
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_U_10_12
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_S_10_12
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_S_10_16
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_S_10_16_S2
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_S_5_20
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_S_0_5_10_16_S2
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_S_0_10_10_16_S2
+@deffnx {} BFD_RELOC_LARCH_SOP_POP_32_U
+@deffnx {} BFD_RELOC_LARCH_ADD8
+@deffnx {} BFD_RELOC_LARCH_ADD16
+@deffnx {} BFD_RELOC_LARCH_ADD24
+@deffnx {} BFD_RELOC_LARCH_ADD32
+@deffnx {} BFD_RELOC_LARCH_ADD64
+@deffnx {} BFD_RELOC_LARCH_SUB8
+@deffnx {} BFD_RELOC_LARCH_SUB16
+@deffnx {} BFD_RELOC_LARCH_SUB24
+@deffnx {} BFD_RELOC_LARCH_SUB32
+@deffnx {} BFD_RELOC_LARCH_SUB64
+@deffnx {} BFD_RELOC_LARCH_B16
+@deffnx {} BFD_RELOC_LARCH_B21
+@deffnx {} BFD_RELOC_LARCH_B26
+@deffnx {} BFD_RELOC_LARCH_ABS_HI20
+@deffnx {} BFD_RELOC_LARCH_ABS_LO12
+@deffnx {} BFD_RELOC_LARCH_ABS64_LO20
+@deffnx {} BFD_RELOC_LARCH_ABS64_HI12
+@deffnx {} BFD_RELOC_LARCH_PCALA_HI20
+@deffnx {} BFD_RELOC_LARCH_PCALA_LO12
+@deffnx {} BFD_RELOC_LARCH_PCALA64_LO20
+@deffnx {} BFD_RELOC_LARCH_PCALA64_HI12
+@deffnx {} BFD_RELOC_LARCH_GOT_PC_HI20
+@deffnx {} BFD_RELOC_LARCH_GOT_PC_LO12
+@deffnx {} BFD_RELOC_LARCH_GOT64_PC_LO20
+@deffnx {} BFD_RELOC_LARCH_GOT64_PC_HI12
+@deffnx {} BFD_RELOC_LARCH_GOT_HI20
+@deffnx {} BFD_RELOC_LARCH_GOT_LO12
+@deffnx {} BFD_RELOC_LARCH_GOT64_LO20
+@deffnx {} BFD_RELOC_LARCH_GOT64_HI12
+@deffnx {} BFD_RELOC_LARCH_TLS_LE_HI20
+@deffnx {} BFD_RELOC_LARCH_TLS_LE_LO12
+@deffnx {} BFD_RELOC_LARCH_TLS_LE64_LO20
+@deffnx {} BFD_RELOC_LARCH_TLS_LE64_HI12
+@deffnx {} BFD_RELOC_LARCH_TLS_IE_PC_HI20
+@deffnx {} BFD_RELOC_LARCH_TLS_IE_PC_LO12
+@deffnx {} BFD_RELOC_LARCH_TLS_IE64_PC_LO20
+@deffnx {} BFD_RELOC_LARCH_TLS_IE64_PC_HI12
+@deffnx {} BFD_RELOC_LARCH_TLS_IE_HI20
+@deffnx {} BFD_RELOC_LARCH_TLS_IE_LO12
+@deffnx {} BFD_RELOC_LARCH_TLS_IE64_LO20
+@deffnx {} BFD_RELOC_LARCH_TLS_IE64_HI12
+@deffnx {} BFD_RELOC_LARCH_TLS_LD_PC_HI20
+@deffnx {} BFD_RELOC_LARCH_TLS_LD_HI20
+@deffnx {} BFD_RELOC_LARCH_TLS_GD_PC_HI20
+@deffnx {} BFD_RELOC_LARCH_TLS_GD_HI20
+@deffnx {} BFD_RELOC_LARCH_32_PCREL
+@deffnx {} BFD_RELOC_LARCH_RELAX
+@deffnx {} BFD_RELOC_LARCH_DELETE
+@deffnx {} BFD_RELOC_LARCH_ALIGN
+@deffnx {} BFD_RELOC_LARCH_PCREL20_S2
+@deffnx {} BFD_RELOC_LARCH_CFA
+@deffnx {} BFD_RELOC_LARCH_ADD6
+@deffnx {} BFD_RELOC_LARCH_SUB6
+@deffnx {} BFD_RELOC_LARCH_ADD_ULEB128
+@deffnx {} BFD_RELOC_LARCH_SUB_ULEB128
+@deffnx {} BFD_RELOC_LARCH_64_PCREL
+@deffnx {} BFD_RELOC_LARCH_CALL36
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC_PC_HI20
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC_PC_LO12
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC64_PC_LO20
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC64_PC_HI12
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC_HI20
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC_LO12
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC64_LO20
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC64_HI12
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC_LD
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC_CALL
+@deffnx {} BFD_RELOC_LARCH_TLS_LE_HI20_R
+@deffnx {} BFD_RELOC_LARCH_TLS_LE_ADD_R
+@deffnx {} BFD_RELOC_LARCH_TLS_LE_LO12_R
+@deffnx {} BFD_RELOC_LARCH_TLS_LD_PCREL20_S2
+@deffnx {} BFD_RELOC_LARCH_TLS_GD_PCREL20_S2
+@deffnx {} BFD_RELOC_LARCH_TLS_DESC_PCREL20_S2
+LARCH relocations.
+@end deffn
 
 @example
-
 typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
+
 @end example
 @findex bfd_reloc_type_lookup
 @subsubsection @code{bfd_reloc_type_lookup}
-@strong{Synopsis}
-@example
-reloc_howto_type *bfd_reloc_type_lookup
-   (bfd *abfd, bfd_reloc_code_real_type code);
-reloc_howto_type *bfd_reloc_name_lookup
-   (bfd *abfd, const char *reloc_name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} reloc_howto_type *bfd_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code); reloc_howto_type *bfd_reloc_name_lookup (bfd *abfd, const char *reloc_name); 
 Return a pointer to a howto structure which, when
 invoked, will perform the relocation @var{code} on data from the
 architecture noted.
 
+@end deftypefn
 @findex bfd_default_reloc_type_lookup
 @subsubsection @code{bfd_default_reloc_type_lookup}
-@strong{Synopsis}
-@example
-reloc_howto_type *bfd_default_reloc_type_lookup
-   (bfd *abfd, bfd_reloc_code_real_type  code);
-@end example
-@strong{Description}@*
+@deftypefn {Function} reloc_howto_type *bfd_default_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code); 
 Provides a default relocation lookup routine for any architecture.
 
+@end deftypefn
 @findex bfd_get_reloc_code_name
 @subsubsection @code{bfd_get_reloc_code_name}
-@strong{Synopsis}
-@example
-const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code); 
 Provides a printable name for the supplied relocation code.
 Useful mainly for printing error messages.
 
+@end deftypefn
 @findex bfd_generic_relax_section
 @subsubsection @code{bfd_generic_relax_section}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_generic_relax_section
-   (bfd *abfd,
-    asection *section,
-    struct bfd_link_info *,
-    bfd_boolean *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_generic_relax_section (bfd *abfd, asection *section, struct bfd_link_info *, bool *); 
 Provides default handling for relaxing for back ends which
 don't do relaxing.
 
+@end deftypefn
 @findex bfd_generic_gc_sections
 @subsubsection @code{bfd_generic_gc_sections}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_generic_gc_sections
-   (bfd *, struct bfd_link_info *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_generic_gc_sections (bfd *, struct bfd_link_info *); 
 Provides default handling for relaxing for back ends which
 don't do section gc -- i.e., does nothing.
 
+@end deftypefn
 @findex bfd_generic_lookup_section_flags
 @subsubsection @code{bfd_generic_lookup_section_flags}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_generic_lookup_section_flags
-   (struct bfd_link_info *, struct flag_info *, asection *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_generic_lookup_section_flags (struct bfd_link_info *, struct flag_info *, asection *); 
 Provides default handling for section flags lookup
 -- i.e., does nothing.
 Returns FALSE if the section should be omitted, otherwise TRUE.
 
+@end deftypefn
 @findex bfd_generic_merge_sections
 @subsubsection @code{bfd_generic_merge_sections}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_generic_merge_sections
-   (bfd *, struct bfd_link_info *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_generic_merge_sections (bfd *, struct bfd_link_info *); 
 Provides default handling for SEC_MERGE section merging for back ends
 which don't have SEC_MERGE support -- i.e., does nothing.
 
+@end deftypefn
 @findex bfd_generic_get_relocated_section_contents
 @subsubsection @code{bfd_generic_get_relocated_section_contents}
-@strong{Synopsis}
-@example
-bfd_byte *bfd_generic_get_relocated_section_contents
-   (bfd *abfd,
-    struct bfd_link_info *link_info,
-    struct bfd_link_order *link_order,
-    bfd_byte *data,
-    bfd_boolean relocatable,
-    asymbol **symbols);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bfd_byte *bfd_generic_get_relocated_section_contents (bfd *abfd, struct bfd_link_info *link_info, struct bfd_link_order *link_order, bfd_byte *data, bool relocatable, asymbol **symbols); 
 Provides default handling of relocation effort for back ends
 which can't be bothered to do it efficiently.
 
+@end deftypefn
 @findex _bfd_generic_set_reloc
 @subsubsection @code{_bfd_generic_set_reloc}
-@strong{Synopsis}
-@example
-void _bfd_generic_set_reloc
-   (bfd *abfd,
-    sec_ptr section,
-    arelent **relptr,
-    unsigned int count);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void _bfd_generic_set_reloc (bfd *abfd, sec_ptr section, arelent **relptr, unsigned int count); 
 Installs a new set of internal relocations in SECTION.
 
+@end deftypefn
 @findex _bfd_unrecognized_reloc
 @subsubsection @code{_bfd_unrecognized_reloc}
-@strong{Synopsis}
-@example
-bfd_boolean _bfd_unrecognized_reloc
-   (bfd * abfd,
-    sec_ptr section,
-    unsigned int r_type);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool _bfd_unrecognized_reloc (bfd * abfd, sec_ptr section, unsigned int r_type); 
 Reports an unrecognized reloc.
 Written as a function in order to reduce code duplication.
 Returns FALSE so that it can be called from a return statement.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/section.texi ./bfd/doc/section.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/section.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/section.texi	2026-03-05 02:11:13.000000000 +0000
@@ -103,25 +103,28 @@ Here is the section structure:
 
 
 @example
-
 typedef struct bfd_section
 @{
   /* The name of the section; the name isn't a copy, the pointer is
      the same as that passed to bfd_make_section.  */
   const char *name;
 
-  /* A unique sequence number.  */
-  unsigned int id;
-
-  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
-  unsigned int index;
-
   /* The next section in the list belonging to the BFD, or NULL.  */
   struct bfd_section *next;
 
   /* The previous section in the list belonging to the BFD, or NULL.  */
   struct bfd_section *prev;
 
+  /* 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;
+
   /* The field flags contains attributes of the section. Some
      flags are read in from the object file, and some are
      synthesized from other information.  */
@@ -246,6 +249,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.  */
@@ -287,9 +294,8 @@ typedef struct bfd_section
      executables or shared objects. This is for COFF only.  */
 #define SEC_COFF_SHARED             0x8000000
 
-  /* This section should be compressed.  This is for ELF linker
-     internal use only.  */
-#define SEC_ELF_COMPRESS            0x8000000
+  /* Indicate that section has the purecode flag set.  */
+#define SEC_ELF_PURECODE            0x8000000
 
   /* When a section with this flag is being linked, then if the size of
      the input section is less than a page, it should not cross a page
@@ -298,9 +304,8 @@ typedef struct bfd_section
      TMS320C54X only.  */
 #define SEC_TIC54X_BLOCK           0x10000000
 
-  /* This section should be renamed.  This is for ELF linker
-     internal use only.  */
-#define SEC_ELF_RENAME             0x10000000
+  /* This section has the SHF_X86_64_LARGE flag.  This is ELF x86-64 only.  */
+#define SEC_ELF_LARGE              0x10000000
 
   /* Conditionally link this section; do not link if there are no
      references found to any symbol in the section.  This is for TI
@@ -319,9 +324,6 @@ typedef struct bfd_section
      when memory read flag isn't set. */
 #define SEC_COFF_NOREAD            0x40000000
 
-  /* Indicate that section has the purecode flag set.  */
-#define SEC_ELF_PURECODE           0x80000000
-
   /*  End of section flags.  */
 
   /* Some internal packed boolean fields.  */
@@ -343,7 +345,8 @@ typedef struct bfd_section
   unsigned int compress_status : 2;
 #define COMPRESS_SECTION_NONE    0
 #define COMPRESS_SECTION_DONE    1
-#define DECOMPRESS_SECTION_SIZED 2
+#define DECOMPRESS_SECTION_ZLIB  2
+#define DECOMPRESS_SECTION_ZSTD  3
 
   /* The following flags are used by the ELF linker. */
 
@@ -359,10 +362,17 @@ typedef struct bfd_section
 #define SEC_INFO_TYPE_JUST_SYMS 4
 #define SEC_INFO_TYPE_TARGET    5
 #define SEC_INFO_TYPE_EH_FRAME_ENTRY 6
+#define SEC_INFO_TYPE_SFRAME  7
 
   /* Nonzero if this section uses RELA relocations, rather than REL.  */
   unsigned int use_rela_p:1;
 
+  /* Nonzero if section contents are mmapped.  */
+  unsigned int mmapped_p:1;
+
+  /* Nonzero if section contents should not be freed.  */
+  unsigned int alloced:1;
+
   /* Bits used by various backends.  The generic code doesn't touch
      these fields.  */
 
@@ -406,13 +416,6 @@ typedef struct bfd_section
   /* The compressed size of the section in octets.  */
   bfd_size_type compressed_size;
 
-  /* Relaxation table. */
-  struct relax_table *relax;
-
-  /* Count of used relaxation table entries. */
-  int relax_count;
-
-
   /* If this section is going to be output, then this value is the
      offset in *bytes* into the output section of the first byte in the
      input section (byte ==> smallest addressable unit on the
@@ -425,10 +428,6 @@ typedef struct bfd_section
   /* The output section through which to map on output.  */
   struct bfd_section *output_section;
 
-  /* The alignment requirement of the section, as an exponent of 2 -
-     e.g., 3 aligns to 2^3 (or 8).  */
-  unsigned int alignment_power;
-
   /* If an input section, a pointer to a vector of relocation
      records for the data in this section.  */
   struct reloc_cache_entry *relocation;
@@ -440,6 +439,10 @@ typedef struct bfd_section
   /* The number of relocation records in one of the above.  */
   unsigned reloc_count;
 
+  /* The alignment requirement of the section, as an exponent of 2 -
+     e.g., 3 aligns to 2^3 (or 8).  */
+  unsigned int alignment_power;
+
   /* Information below is back end specific - and not always used
      or updated.  */
 
@@ -457,7 +460,7 @@ typedef struct bfd_section
 
   /* If the SEC_IN_MEMORY flag is set, this points to the actual
      contents.  */
-  unsigned char *contents;
+  bfd_byte *contents;
 
   /* Attached line number information.  */
   alent *lineno;
@@ -490,211 +493,27 @@ typedef struct bfd_section
 
   /* A symbol which points at this section only.  */
   struct bfd_symbol *symbol;
-  struct bfd_symbol **symbol_ptr_ptr;
 
   /* 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;
-@} asection;
-
-/* Relax table contains information about instructions which can
-   be removed by relaxation -- replacing a long address with a
-   short address.  */
-struct relax_table @{
-  /* Address where bytes may be deleted. */
-  bfd_vma addr;
-
-  /* Number of bytes to be deleted.  */
-  int size;
-@};
-
-static inline const char *
-bfd_section_name (const asection *sec)
-@{
-  return sec->name;
-@}
-
-static inline bfd_size_type
-bfd_section_size (const asection *sec)
-@{
-  return sec->size;
-@}
-
-static inline bfd_vma
-bfd_section_vma (const asection *sec)
-@{
-  return sec->vma;
-@}
-
-static inline bfd_vma
-bfd_section_lma (const asection *sec)
-@{
-  return sec->lma;
-@}
-
-static inline unsigned int
-bfd_section_alignment (const asection *sec)
-@{
-  return sec->alignment_power;
-@}
-
-static inline flagword
-bfd_section_flags (const asection *sec)
-@{
-  return sec->flags;
-@}
-
-static inline void *
-bfd_section_userdata (const asection *sec)
-@{
-  return sec->userdata;
-@}
-static inline bfd_boolean
-bfd_is_com_section (const asection *sec)
-@{
-  return (sec->flags & SEC_IS_COMMON) != 0;
-@}
-
-/* Note: the following are provided as inline functions rather than macros
-   because not all callers use the return value.  A macro implementation
-   would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
-   compilers will complain about comma expressions that have no effect.  */
-static inline bfd_boolean
-bfd_set_section_userdata (asection *sec, void *val)
-@{
-  sec->userdata = val;
-  return TRUE;
-@}
-
-static inline bfd_boolean
-bfd_set_section_vma (asection *sec, bfd_vma val)
-@{
-  sec->vma = sec->lma = val;
-  sec->user_set_vma = TRUE;
-  return TRUE;
-@}
 
-static inline bfd_boolean
-bfd_set_section_lma (asection *sec, bfd_vma val)
-@{
-  sec->lma = val;
-  return TRUE;
-@}
+  /* 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;
 
-static inline bfd_boolean
-bfd_set_section_alignment (asection *sec, unsigned int val)
-@{
-  sec->alignment_power = val;
-  return TRUE;
-@}
-
-/* These sections are global, and are managed by BFD.  The application
-   and target back end are not permitted to change the values in
-   these sections.  */
-extern asection _bfd_std_section[4];
-
-#define BFD_ABS_SECTION_NAME "*ABS*"
-#define BFD_UND_SECTION_NAME "*UND*"
-#define BFD_COM_SECTION_NAME "*COM*"
-#define BFD_IND_SECTION_NAME "*IND*"
-
-/* Pointer to the common section.  */
-#define bfd_com_section_ptr (&_bfd_std_section[0])
-/* Pointer to the undefined section.  */
-#define bfd_und_section_ptr (&_bfd_std_section[1])
-/* Pointer to the absolute section.  */
-#define bfd_abs_section_ptr (&_bfd_std_section[2])
-/* Pointer to the indirect section.  */
-#define bfd_ind_section_ptr (&_bfd_std_section[3])
-
-static inline bfd_boolean
-bfd_is_und_section (const asection *sec)
-@{
-  return sec == bfd_und_section_ptr;
-@}
+  /* Explicitly specified section type, if non-zero.  */
+  unsigned int type;
 
-static inline bfd_boolean
-bfd_is_abs_section (const asection *sec)
-@{
-  return sec == bfd_abs_section_ptr;
-@}
-
-static inline bfd_boolean
-bfd_is_ind_section (const asection *sec)
-@{
-  return sec == bfd_ind_section_ptr;
-@}
-
-static inline bfd_boolean
-bfd_is_const_section (const asection *sec)
-@{
-  return sec >= bfd_abs_section_ptr && sec <= bfd_ind_section_ptr;
-@}
-
-/* Return TRUE if input section SEC has been discarded.  */
-static inline bfd_boolean
-discarded_section (const asection *sec)
-@{
-  return (!bfd_is_abs_section (sec)
-          && bfd_is_abs_section (sec->output_section)
-          && sec->sec_info_type != SEC_INFO_TYPE_MERGE
-          && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
-@}
-
-#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,                           \
-                                                                       \
-  /* linker_mark, linker_has_input, gc_mark, decompress_status,    */  \
-     0,           0,                1,       0,                        \
-                                                                       \
-  /* segment_mark, sec_info_type, use_rela_p,                      */  \
-     0,            0,             0,                                   \
-                                                                       \
-  /* 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, */  \
-     0,   0,   0,    0,       0,               0,     0,               \
-                                                                       \
-  /* output_offset, output_section, alignment_power,               */  \
-     0,             &SEC,           0,                                 \
-                                                                       \
-  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
-     NULL,       NULL,        0,           0,       0,                 \
-                                                                       \
-  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
-     0,            NULL,     NULL,     NULL,   0,                      \
-                                                                       \
-  /* entsize, kept_section, moving_line_filepos,                    */ \
-     0,       NULL,          0,                                        \
-                                                                       \
-  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
-     0,            NULL,        NULL,              NULL,               \
-                                                                       \
-  /* symbol,                    symbol_ptr_ptr,                    */  \
-     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
-                                                                       \
-  /* map_head, map_tail                                            */  \
-     @{ NULL @}, @{ NULL @}                                                \
-    @}
-
-/* We use a macro to initialize the static asymbol structures because
-   traditional C does not permit us to initialize a union member while
-   gcc warns if we don't initialize it.
-   the_bfd, name, value, attr, section [, udata]  */
-#ifdef __STDC__
-#define GLOBAL_SYM_INIT(NAME, SECTION) \
-  @{ 0, NAME, 0, BSF_SECTION_SYM, SECTION, @{ 0 @}@}
-#else
-#define GLOBAL_SYM_INIT(NAME, SECTION) \
-  @{ 0, NAME, 0, BSF_SECTION_SYM, SECTION @}
-#endif
+@} asection;
 
 @end example
 
@@ -704,58 +523,38 @@ These are the functions exported by the
 
 @findex bfd_section_list_clear
 @subsubsection @code{bfd_section_list_clear}
-@strong{Synopsis}
-@example
-void bfd_section_list_clear (bfd *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_section_list_clear (bfd *); 
 Clears the section list, and also resets the section count and
 hash table entries.
 
+@end deftypefn
 @findex bfd_get_section_by_name
 @subsubsection @code{bfd_get_section_by_name}
-@strong{Synopsis}
-@example
-asection *bfd_get_section_by_name (bfd *abfd, const char *name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_get_section_by_name (bfd *abfd, const char *name); 
 Return the most recently created section attached to @var{abfd}
 named @var{name}.  Return NULL if no such section exists.
 
+@end deftypefn
 @findex bfd_get_next_section_by_name
 @subsubsection @code{bfd_get_next_section_by_name}
-@strong{Synopsis}
-@example
-asection *bfd_get_next_section_by_name (bfd *ibfd, asection *sec);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_get_next_section_by_name (bfd *ibfd, asection *sec); 
 Given @var{sec} is a section returned by @code{bfd_get_section_by_name},
 return the next most recently created section attached to the same
 BFD with the same name, or if no such section exists in the same BFD and
 IBFD is non-NULL, the next section with the same name in any input
 BFD following IBFD.  Return NULL on finding no section.
 
+@end deftypefn
 @findex bfd_get_linker_section
 @subsubsection @code{bfd_get_linker_section}
-@strong{Synopsis}
-@example
-asection *bfd_get_linker_section (bfd *abfd, const char *name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_get_linker_section (bfd *abfd, const char *name); 
 Return the linker created section attached to @var{abfd}
 named @var{name}.  Return NULL if no such section exists.
 
+@end deftypefn
 @findex bfd_get_section_by_name_if
 @subsubsection @code{bfd_get_section_by_name_if}
-@strong{Synopsis}
-@example
-asection *bfd_get_section_by_name_if
-   (bfd *abfd,
-    const char *name,
-    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
-    void *obj);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_get_section_by_name_if (bfd *abfd, const char *name, bool (*func) (bfd *abfd, asection *sect, void *obj), void *obj); 
 Call the provided function @var{func} for each section
 attached to the BFD @var{abfd} whose name matches @var{name},
 passing @var{obj} as an argument. The function will be called
@@ -768,27 +567,20 @@ as if by
 It returns the first section for which @var{func} returns true,
 otherwise @code{NULL}.
 
+@end deftypefn
 @findex bfd_get_unique_section_name
 @subsubsection @code{bfd_get_unique_section_name}
-@strong{Synopsis}
-@example
-char *bfd_get_unique_section_name
-   (bfd *abfd, const char *templat, int *count);
-@end example
-@strong{Description}@*
+@deftypefn {Function} char *bfd_get_unique_section_name (bfd *abfd, const char *templat, int *count); 
 Invent a section name that is unique in @var{abfd} by tacking
 a dot and a digit suffix onto the original @var{templat}.  If
 @var{count} is non-NULL, then it specifies the first number
 tried as a suffix to generate a unique name.  The value
 pointed to by @var{count} will be incremented in this case.
 
+@end deftypefn
 @findex bfd_make_section_old_way
 @subsubsection @code{bfd_make_section_old_way}
-@strong{Synopsis}
-@example
-asection *bfd_make_section_old_way (bfd *abfd, const char *name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_make_section_old_way (bfd *abfd, const char *name); 
 Create a new empty section called @var{name}
 and attach it to the end of the chain of sections for the
 BFD @var{abfd}. An attempt to create a section with a name which
@@ -809,14 +601,10 @@ If output has already started for this B
 If memory allocation fails.
 @end itemize
 
+@end deftypefn
 @findex bfd_make_section_anyway_with_flags
 @subsubsection @code{bfd_make_section_anyway_with_flags}
-@strong{Synopsis}
-@example
-asection *bfd_make_section_anyway_with_flags
-   (bfd *abfd, const char *name, flagword flags);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_make_section_anyway_with_flags (bfd *abfd, const char *name, flagword flags); 
 Create a new empty section called @var{name} and attach it to the end of
 the chain of sections for @var{abfd}.  Create a new section even if there
 is already a section with that name.  Also set the attributes of the
@@ -831,13 +619,10 @@ Return @code{NULL} and set @code{bfd_err
 @code{bfd_error_no_memory} - If memory allocation fails.
 @end itemize
 
+@end deftypefn
 @findex bfd_make_section_anyway
 @subsubsection @code{bfd_make_section_anyway}
-@strong{Synopsis}
-@example
-asection *bfd_make_section_anyway (bfd *abfd, const char *name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_make_section_anyway (bfd *abfd, const char *name); 
 Create a new empty section called @var{name} and attach it to the end of
 the chain of sections for @var{abfd}.  Create a new section even if there
 is already a section with that name.
@@ -851,39 +636,29 @@ Return @code{NULL} and set @code{bfd_err
 @code{bfd_error_no_memory} - If memory allocation fails.
 @end itemize
 
+@end deftypefn
 @findex bfd_make_section_with_flags
 @subsubsection @code{bfd_make_section_with_flags}
-@strong{Synopsis}
-@example
-asection *bfd_make_section_with_flags
-   (bfd *, const char *name, flagword flags);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_make_section_with_flags (bfd *, const char *name, flagword flags); 
 Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling
 bfd_set_error ()) without changing the section chain if there is already a
 section named @var{name}.  Also set the attributes of the new section to
 the value @var{flags}.  If there is an error, return @code{NULL} and set
 @code{bfd_error}.
 
+@end deftypefn
 @findex bfd_make_section
 @subsubsection @code{bfd_make_section}
-@strong{Synopsis}
-@example
-asection *bfd_make_section (bfd *, const char *name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_make_section (bfd *, const char *name); 
 Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling
 bfd_set_error ()) without changing the section chain if there is already a
 section named @var{name}.  If there is an error, return @code{NULL} and set
 @code{bfd_error}.
 
+@end deftypefn
 @findex bfd_set_section_flags
 @subsubsection @code{bfd_set_section_flags}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_section_flags (asection *sec, flagword flags); 
 Set the attributes of the section @var{sec} to the value @var{flags}.
 Return @code{TRUE} on success, @code{FALSE} on error.  Possible error
 returns are:
@@ -897,26 +672,16 @@ requested. For example, a .bss section i
 have the @code{SEC_HAS_CONTENTS} field set.
 @end itemize
 
+@end deftypefn
 @findex bfd_rename_section
 @subsubsection @code{bfd_rename_section}
-@strong{Synopsis}
-@example
-void bfd_rename_section
-   (asection *sec, const char *newname);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_rename_section (asection *sec, const char *newname); 
 Rename section @var{sec} to @var{newname}.
 
+@end deftypefn
 @findex bfd_map_over_sections
 @subsubsection @code{bfd_map_over_sections}
-@strong{Synopsis}
-@example
-void bfd_map_over_sections
-   (bfd *abfd,
-    void (*func) (bfd *abfd, asection *sect, void *obj),
-    void *obj);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_map_over_sections (bfd *abfd, void (*func) (bfd *abfd, asection *sect, void *obj), void *obj); 
 Call the provided function @var{func} for each section
 attached to the BFD @var{abfd}, passing @var{obj} as an
 argument. The function will be called as if by
@@ -934,16 +699,10 @@ alternative would be to use a loop:
              func (abfd, p, ...)
 @end example
 
+@end deftypefn
 @findex bfd_sections_find_if
 @subsubsection @code{bfd_sections_find_if}
-@strong{Synopsis}
-@example
-asection *bfd_sections_find_if
-   (bfd *abfd,
-    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
-    void *obj);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asection *bfd_sections_find_if (bfd *abfd, bool (*operation) (bfd *abfd, asection *sect, void *obj), void *obj); 
 Call the provided function @var{operation} for each section
 attached to the BFD @var{abfd}, passing @var{obj} as an
 argument. The function will be called as if by
@@ -954,13 +713,10 @@ argument. The function will be called as
 
 It returns the first section for which @var{operation} returns true.
 
+@end deftypefn
 @findex bfd_set_section_size
 @subsubsection @code{bfd_set_section_size}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_section_size (asection *sec, bfd_size_type val); 
 Set @var{sec} to the size @var{val}. If the operation is
 ok, then @code{TRUE} is returned, else @code{FALSE}.
 
@@ -972,15 +728,10 @@ Possible error returns:
 Writing has started to the BFD, so setting the size is invalid.
 @end itemize
 
+@end deftypefn
 @findex bfd_set_section_contents
 @subsubsection @code{bfd_set_section_contents}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_section_contents
-   (bfd *abfd, asection *section, const void *data,
-    file_ptr offset, bfd_size_type count);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_section_contents (bfd *abfd, asection *section, const void *data, file_ptr offset, bfd_size_type count); 
 Sets the contents of the section @var{section} in BFD
 @var{abfd} to the data starting in memory at @var{location}.
 The data is written to the output section starting at offset
@@ -1006,15 +757,10 @@ and some more too.
 This routine is front end to the back end function
 @code{_bfd_set_section_contents}.
 
+@end deftypefn
 @findex bfd_get_section_contents
 @subsubsection @code{bfd_get_section_contents}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_get_section_contents
-   (bfd *abfd, asection *section, void *location, file_ptr offset,
-    bfd_size_type count);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_get_section_contents (bfd *abfd, asection *section, void *location, file_ptr offset, bfd_size_type count); 
 Read data from @var{section} in BFD @var{abfd}
 into memory starting at @var{location}. The data is read at an
 offset of @var{offset} from the start of the input section,
@@ -1026,25 +772,19 @@ flag set are requested or if the section
 with zeroes. If no errors occur, @code{TRUE} is returned, else
 @code{FALSE}.
 
+@end deftypefn
 @findex bfd_malloc_and_get_section
 @subsubsection @code{bfd_malloc_and_get_section}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_malloc_and_get_section
-   (bfd *abfd, asection *section, bfd_byte **buf);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_malloc_and_get_section (bfd *abfd, asection *section, bfd_byte **buf); 
 Read all data from @var{section} in BFD @var{abfd}
 into a buffer, *@var{buf}, malloc'd by this function.
+Return @code{true} on success, @code{false} on failure in which
+case *@var{buf} will be NULL.
 
+@end deftypefn
 @findex bfd_copy_private_section_data
 @subsubsection @code{bfd_copy_private_section_data}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_copy_private_section_data
-   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_copy_private_section_data (bfd *ibfd, asection *isec, bfd *obfd, asection *osec, struct bfd_link_info *link_info); 
 Copy private section information from @var{isec} in the BFD
 @var{ibfd} to the section @var{osec} in the BFD @var{obfd}.
 Return @code{TRUE} on success, @code{FALSE} on error.  Possible error
@@ -1057,35 +797,35 @@ returns are:
 Not enough memory exists to create private data for @var{osec}.
 @end itemize
 @example
-#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
+#define bfd_copy_private_section_data(ibfd, isec, obfd, osec, link_info) \
        BFD_SEND (obfd, _bfd_copy_private_section_data, \
-                 (ibfd, isection, obfd, osection))
+                 (ibfd, isec, obfd, osec, link_info))
 @end example
 
+@end deftypefn
 @findex bfd_generic_is_group_section
 @subsubsection @code{bfd_generic_is_group_section}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_generic_is_group_section (bfd *, const asection *sec); 
 Returns TRUE if @var{sec} is a member of a group.
 
+@end deftypefn
 @findex bfd_generic_group_name
 @subsubsection @code{bfd_generic_group_name}
-@strong{Synopsis}
-@example
-const char *bfd_generic_group_name (bfd *, const asection *sec);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char *bfd_generic_group_name (bfd *, const asection *sec); 
 Returns group name if @var{sec} is a member of a group.
 
+@end deftypefn
 @findex bfd_generic_discard_group
 @subsubsection @code{bfd_generic_discard_group}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_generic_discard_group (bfd *abfd, asection *group); 
 Remove all members of @var{group} from the output.
 
+@end deftypefn
+@findex bfd_section_size_insane
+@subsubsection @code{bfd_section_size_insane}
+@deftypefn {Function} bool bfd_section_size_insane (bfd *abfd, asection *sec); 
+Returns true if the given section has a size that indicates
+it cannot be read from file.  Return false if the size is OK
+or* this function can't say one way or the other.
+
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/syms.texi ./bfd/doc/syms.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/syms.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/syms.texi	2026-03-05 02:11:13.000000000 +0000
@@ -139,7 +139,6 @@ An @code{asymbol} has the form:
 
 
 @example
-
 typedef struct bfd_symbol
 @{
   /* A pointer to the BFD which owns the symbol. This information
@@ -266,6 +265,9 @@ typedef struct bfd_symbol
      with this name and type in use.  BSF_OBJECT must also be set.  */
 #define BSF_GNU_UNIQUE          (1 << 23)
 
+  /* This section symbol should be included in the symbol table.  */
+#define BSF_SECTION_SYM_USED    (1 << 24)
+
   flagword flags;
 
   /* A pointer to the section to which this symbol is
@@ -291,7 +293,6 @@ asymbol;
 
 @findex bfd_get_symtab_upper_bound
 @subsubsection @code{bfd_get_symtab_upper_bound}
-@strong{Description}@*
 Return the number of bytes required to store a vector of pointers
 to @code{asymbols} for all the symbols in the BFD @var{abfd},
 including a terminal NULL pointer. If there are no symbols in
@@ -304,21 +305,14 @@ the BFD, then return 0.  If an error occ
 
 @findex bfd_is_local_label
 @subsubsection @code{bfd_is_local_label}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_is_local_label (bfd *abfd, asymbol *sym); 
 Return TRUE if the given symbol @var{sym} in the BFD @var{abfd} is
 a compiler generated local label, else return FALSE.
 
+@end deftypefn
 @findex bfd_is_local_label_name
 @subsubsection @code{bfd_is_local_label_name}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_is_local_label_name (bfd *abfd, const char *name); 
 Return TRUE if a symbol with the name @var{name} in the BFD
 @var{abfd} is a compiler generated local label, else return
 FALSE.  This just checks whether the name has the form of a
@@ -329,13 +323,10 @@ local label.
 
 @end example
 
+@end deftypefn
 @findex bfd_is_target_special_symbol
 @subsubsection @code{bfd_is_target_special_symbol}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_is_target_special_symbol (bfd *abfd, asymbol *sym); 
 Return TRUE iff a symbol @var{sym} in the BFD @var{abfd} is something
 special to the particular target represented by the BFD.  Such symbols
 should normally not be mentioned to the user.
@@ -345,9 +336,9 @@ should normally not be mentioned to the
 
 @end example
 
+@end deftypefn
 @findex bfd_canonicalize_symtab
 @subsubsection @code{bfd_canonicalize_symtab}
-@strong{Description}@*
 Read the symbols from the BFD @var{abfd}, and fills in
 the vector @var{location} with pointers to the symbols and
 a trailing NULL.
@@ -361,29 +352,21 @@ including the NULL.
 
 @findex bfd_set_symtab
 @subsubsection @code{bfd_set_symtab}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_symtab
-   (bfd *abfd, asymbol **location, unsigned int count);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_symtab (bfd *abfd, asymbol **location, unsigned int count); 
 Arrange that when the output BFD @var{abfd} is closed,
 the table @var{location} of @var{count} pointers to symbols
 will be written.
 
+@end deftypefn
 @findex bfd_print_symbol_vandf
 @subsubsection @code{bfd_print_symbol_vandf}
-@strong{Synopsis}
-@example
-void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
-@end example
-@strong{Description}@*
+@deftypefn {Function} void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol); 
 Print the value and flags of the @var{symbol} supplied to the
 stream @var{file}.
 
+@end deftypefn
 @findex bfd_make_empty_symbol
 @subsubsection @code{bfd_make_empty_symbol}
-@strong{Description}@*
 Create a new @code{asymbol} structure for the BFD @var{abfd}
 and return a pointer to it.
 
@@ -399,68 +382,49 @@ information, and will cause problems lat
 
 @findex _bfd_generic_make_empty_symbol
 @subsubsection @code{_bfd_generic_make_empty_symbol}
-@strong{Synopsis}
-@example
-asymbol *_bfd_generic_make_empty_symbol (bfd *);
-@end example
-@strong{Description}@*
+@deftypefn {Function} asymbol *_bfd_generic_make_empty_symbol (bfd *); 
 Create a new @code{asymbol} structure for the BFD @var{abfd}
 and return a pointer to it.  Used by core file routines,
 binary back-end and anywhere else where no private info
 is needed.
 
+@end deftypefn
 @findex bfd_make_debug_symbol
 @subsubsection @code{bfd_make_debug_symbol}
-@strong{Description}@*
 Create a new @code{asymbol} structure for the BFD @var{abfd},
-to be used as a debugging symbol.  Further details of its use have
-yet to be worked out.
+to be used as a debugging symbol.
 @example
-#define bfd_make_debug_symbol(abfd,ptr,size) \
-       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
+#define bfd_make_debug_symbol(abfd) \
+       BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd))
 
 @end example
 
 @findex bfd_decode_symclass
 @subsubsection @code{bfd_decode_symclass}
-@strong{Description}@*
+@deftypefn {Function} int bfd_decode_symclass (asymbol *symbol); 
 Return a character corresponding to the symbol
 class of @var{symbol}, or '?' for an unknown class.
 
-@strong{Synopsis}
-@example
-int bfd_decode_symclass (asymbol *symbol);
-@end example
+@end deftypefn
 @findex bfd_is_undefined_symclass
 @subsubsection @code{bfd_is_undefined_symclass}
-@strong{Description}@*
+@deftypefn {Function} bool bfd_is_undefined_symclass (int symclass); 
 Returns non-zero if the class symbol returned by
 bfd_decode_symclass represents an undefined symbol.
 Returns zero otherwise.
 
-@strong{Synopsis}
-@example
-bfd_boolean bfd_is_undefined_symclass (int symclass);
-@end example
+@end deftypefn
 @findex bfd_symbol_info
 @subsubsection @code{bfd_symbol_info}
-@strong{Description}@*
+@deftypefn {Function} void bfd_symbol_info (asymbol *symbol, symbol_info *ret); 
 Fill in the basic info about symbol that nm needs.
 Additional info may be added by the back-ends after
 calling this function.
 
-@strong{Synopsis}
-@example
-void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
-@end example
+@end deftypefn
 @findex bfd_copy_private_symbol_data
 @subsubsection @code{bfd_copy_private_symbol_data}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_copy_private_symbol_data
-   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_copy_private_symbol_data (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym); 
 Copy private symbol information from @var{isym} in the BFD
 @var{ibfd} to the symbol @var{osym} in the BFD @var{obfd}.
 Return @code{TRUE} on success, @code{FALSE} on error.  Possible error
@@ -479,3 +443,4 @@ Not enough memory exists to create priva
 
 @end example
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/targets.texi ./bfd/doc/targets.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/doc/targets.texi	2020-03-03 02:11:28.000000000 +0000
+++ ./bfd/doc/targets.texi	2026-03-05 02:11:13.000000000 +0000
@@ -1,7 +1,6 @@
 @section Targets
 
 
-@strong{Description}@*
 Each port of BFD to a different machine requires the creation
 of a target back end. All the back end provides to the root
 part of BFD is a structure containing pointers to functions
@@ -60,7 +59,6 @@ type is tried to see if it recognizes th
 @subsection bfd_target
 
 
-@strong{Description}@*
 This structure contains everything that BFD knows about a
 target. It includes things like its byte order, name, and which
 routines to call to do various operations.
@@ -102,6 +100,11 @@ For operations which index on the BFD fo
    (bfd_assert (__FILE__,__LINE__), NULL))
 #endif
 
+/* Defined to TRUE if unused section symbol should be kept.  */
+#ifndef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS true
+#endif
+
 @end example
 This is the structure which defines the type of BFD this is.  The
 @code{xvec} member of the struct @code{bfd} itself points here.  Each
@@ -111,41 +114,9 @@ defines one of these.
 FIXME, these names should be rationalised with the names of
 the entry points which call them. Too bad we can't have one
 macro to define them both!
-@example
-enum bfd_flavour
-@{
-  /* N.B. Update bfd_flavour_name if you change this.  */
-  bfd_target_unknown_flavour,
-  bfd_target_aout_flavour,
-  bfd_target_coff_flavour,
-  bfd_target_ecoff_flavour,
-  bfd_target_xcoff_flavour,
-  bfd_target_elf_flavour,
-  bfd_target_tekhex_flavour,
-  bfd_target_srec_flavour,
-  bfd_target_verilog_flavour,
-  bfd_target_ihex_flavour,
-  bfd_target_som_flavour,
-  bfd_target_os9k_flavour,
-  bfd_target_versados_flavour,
-  bfd_target_msdos_flavour,
-  bfd_target_ovax_flavour,
-  bfd_target_evax_flavour,
-  bfd_target_mmo_flavour,
-  bfd_target_mach_o_flavour,
-  bfd_target_pef_flavour,
-  bfd_target_pef_xlib_flavour,
-  bfd_target_sym_flavour
-@};
 
-enum bfd_endian @{ BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN @};
-
-/* Forward declaration.  */
-typedef struct bfd_link_info _bfd_link_info;
-
-/* Forward declaration.  */
-typedef struct flag_info flag_info;
 
+@example
 typedef struct bfd_target
 @{
   /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
@@ -183,12 +154,15 @@ typedef struct bfd_target
      possible targets when more than one target matches.  */
   unsigned char match_priority;
 
+ /* TRUE if unused section symbols should be kept.  */
+  bool keep_unused_section_symbols;
+
   /* Entries for byte swapping for data. These are different from the
      other entry points, since they don't take a BFD as the first argument.
      Certain other handlers could do the same.  */
-  bfd_uint64_t   (*bfd_getx64) (const void *);
-  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
-  void           (*bfd_putx64) (bfd_uint64_t, void *);
+  uint64_t       (*bfd_getx64) (const void *);
+  int64_t        (*bfd_getx_signed_64) (const void *);
+  void           (*bfd_putx64) (uint64_t, void *);
   bfd_vma        (*bfd_getx32) (const void *);
   bfd_signed_vma (*bfd_getx_signed_32) (const void *);
   void           (*bfd_putx32) (bfd_vma, void *);
@@ -197,9 +171,9 @@ typedef struct bfd_target
   void           (*bfd_putx16) (bfd_vma, void *);
 
   /* Byte swapping for the headers.  */
-  bfd_uint64_t   (*bfd_h_getx64) (const void *);
-  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
-  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
+  uint64_t       (*bfd_h_getx64) (const void *);
+  int64_t        (*bfd_h_getx_signed_64) (const void *);
+  void           (*bfd_h_putx64) (uint64_t, void *);
   bfd_vma        (*bfd_h_getx32) (const void *);
   bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
   void           (*bfd_h_putx32) (bfd_vma, void *);
@@ -210,47 +184,41 @@ 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 *);
+  bool (*_bfd_set_format[bfd_type_end]) (bfd *);
 
   /* Write cached information into a file being written, at @code{bfd_close}.  */
-  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
+  bool (*_bfd_write_contents[bfd_type_end]) (bfd *);
 
 @end example
 The general target vector.  These vectors are initialized using the
 BFD_JUMP_TABLE macros.
 @example
-
   /* Generic entry points.  */
 #define BFD_JUMP_TABLE_GENERIC(NAME) \
   NAME##_close_and_cleanup, \
   NAME##_bfd_free_cached_info, \
   NAME##_new_section_hook, \
-  NAME##_get_section_contents, \
-  NAME##_get_section_contents_in_window
+  NAME##_get_section_contents
 
   /* Called when the BFD is being closed to do any necessary cleanup.  */
-  bfd_boolean (*_close_and_cleanup) (bfd *);
+  bool (*_close_and_cleanup) (bfd *);
   /* Ask the BFD to free all cached information.  */
-  bfd_boolean (*_bfd_free_cached_info) (bfd *);
+  bool (*_bfd_free_cached_info) (bfd *);
   /* Called when a new section is created.  */
-  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
+  bool (*_new_section_hook) (bfd *, sec_ptr);
   /* Read the contents of a section.  */
-  bfd_boolean (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
-                                            bfd_size_type);
-  bfd_boolean (*_bfd_get_section_contents_in_window) (bfd *, sec_ptr,
-                                                      bfd_window *, file_ptr,
-                                                      bfd_size_type);
+  bool (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
+                                     bfd_size_type);
 
   /* Entry points to copy private data.  */
 #define BFD_JUMP_TABLE_COPY(NAME) \
   NAME##_bfd_copy_private_bfd_data, \
   NAME##_bfd_merge_private_bfd_data, \
-  _bfd_generic_init_private_section_data, \
   NAME##_bfd_copy_private_section_data, \
   NAME##_bfd_copy_private_symbol_data, \
   NAME##_bfd_copy_private_header_data, \
@@ -259,34 +227,26 @@ BFD_JUMP_TABLE macros.
 
   /* Called to copy BFD general private data from one object file
      to another.  */
-  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
+  bool (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
   /* Called to merge BFD general private data from one object file
      to a common output file when linking.  */
-  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
-  /* Called to initialize BFD private section data from one object file
-     to another.  */
-#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
-       BFD_SEND (obfd, _bfd_init_private_section_data, \
-                 (ibfd, isec, obfd, osec, link_info))
-  bfd_boolean (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *,
-                                                 sec_ptr,
-                                                 struct bfd_link_info *);
+  bool (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
   /* Called to copy BFD private section data from one object file
      to another.  */
-  bfd_boolean (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *,
-                                                 sec_ptr);
+  bool (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr,
+                                          struct bfd_link_info *);
   /* Called to copy BFD private symbol data from one symbol
      to another.  */
-  bfd_boolean (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, bfd *,
-                                                asymbol *);
+  bool (*_bfd_copy_private_symbol_data) (bfd *, asymbol *,
+                                         bfd *, asymbol *);
   /* Called to copy BFD private header data from one object file
      to another.  */
-  bfd_boolean (*_bfd_copy_private_header_data) (bfd *, bfd *);
+  bool (*_bfd_copy_private_header_data) (bfd *, bfd *);
   /* Called to set private backend flags.  */
-  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
+  bool (*_bfd_set_private_flags) (bfd *, flagword);
 
   /* Called to print private BFD data.  */
-  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
+  bool (*_bfd_print_private_bfd_data) (bfd *, void *);
 
   /* Core file entry points.  */
 #define BFD_JUMP_TABLE_CORE(NAME) \
@@ -295,10 +255,10 @@ BFD_JUMP_TABLE macros.
   NAME##_core_file_matches_executable_p, \
   NAME##_core_file_pid
 
-  char *      (*_core_file_failing_command) (bfd *);
-  int         (*_core_file_failing_signal) (bfd *);
-  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
-  int         (*_core_file_pid) (bfd *);
+  char *(*_core_file_failing_command) (bfd *);
+  int   (*_core_file_failing_signal) (bfd *);
+  bool  (*_core_file_matches_executable_p) (bfd *, bfd *);
+  int   (*_core_file_pid) (bfd *);
 
   /* Archive entry points.  */
 #define BFD_JUMP_TABLE_ARCHIVE(NAME) \
@@ -314,22 +274,21 @@ BFD_JUMP_TABLE macros.
   NAME##_generic_stat_arch_elt, \
   NAME##_update_armap_timestamp
 
-  bfd_boolean (*_bfd_slurp_armap) (bfd *);
-  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
-  bfd_boolean (*_bfd_construct_extended_name_table) (bfd *, char **,
-                                                     bfd_size_type *,
-                                                     const char **);
-  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
-  bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *,
-                              unsigned int, int);
-  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
-  bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
-  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
+  bool (*_bfd_slurp_armap) (bfd *);
+  bool (*_bfd_slurp_extended_name_table) (bfd *);
+  bool (*_bfd_construct_extended_name_table) (bfd *, char **,
+                                              bfd_size_type *,
+                                              const char **);
+  void (*_bfd_truncate_arname) (bfd *, const char *, char *);
+  bool (*write_armap) (bfd *, unsigned, struct orl *, unsigned, int);
+  void *(*_bfd_read_ar_hdr_fn) (bfd *);
+  bool (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
+  bfd *(*openr_next_archived_file) (bfd *, bfd *);
 #define bfd_get_elt_at_index(b,i) \
        BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
-  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
-  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
-  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
+  bfd *(*_bfd_get_elt_at_index) (bfd *, symindex);
+  int  (*_bfd_stat_arch_elt) (bfd *, struct stat *);
+  bool (*_bfd_update_armap_timestamp) (bfd *);
 
   /* Entry points used for symbols.  */
 #define BFD_JUMP_TABLE_SYMBOLS(NAME) \
@@ -343,52 +302,59 @@ BFD_JUMP_TABLE macros.
   NAME##_bfd_is_target_special_symbol, \
   NAME##_get_lineno, \
   NAME##_find_nearest_line, \
+  NAME##_find_nearest_line_with_alt, \
   NAME##_find_line, \
   NAME##_find_inliner_info, \
   NAME##_bfd_make_debug_symbol, \
   NAME##_read_minisymbols, \
   NAME##_minisymbol_to_symbol
 
-  long        (*_bfd_get_symtab_upper_bound) (bfd *);
-  long        (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
+  long (*_bfd_get_symtab_upper_bound) (bfd *);
+  long (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
   struct bfd_symbol *
-              (*_bfd_make_empty_symbol) (bfd *);
-  void        (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
-                                    bfd_print_symbol_type);
+       (*_bfd_make_empty_symbol) (bfd *);
+  void (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
+                             bfd_print_symbol_type);
 #define bfd_print_symbol(b,p,s,e) \
        BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
-  void        (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *,
-                                       symbol_info *);
+  void  (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *, symbol_info *);
 #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 *);
-#define bfd_get_symbol_version_string(b,s,h) \
-       BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,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 *);
-  bfd_boolean (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
-                                         struct bfd_section *, bfd_vma,
-                                         const char **, const char **,
-                                         unsigned int *, unsigned int *);
-  bfd_boolean (*_bfd_find_line) (bfd *, struct bfd_symbol **,
-                                 struct bfd_symbol *, const char **,
-                                 unsigned int *);
-  bfd_boolean (*_bfd_find_inliner_info)
+  const char *
+       (*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
+                                          bool, bool *);
+#define bfd_get_symbol_version_string(b,s,p,h) \
+       BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h))
+  bool (*_bfd_is_local_label_name) (bfd *, const char *);
+  bool (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
+  alent *
+       (*_get_lineno) (bfd *, struct bfd_symbol *);
+  bool (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
+                                  struct bfd_section *, bfd_vma,
+                                  const char **, const char **,
+                                  unsigned int *, unsigned int *);
+  bool (*_bfd_find_nearest_line_with_alt) (bfd *, const char *,
+                                           struct bfd_symbol **,
+                                           struct bfd_section *, bfd_vma,
+                                           const char **, const char **,
+                                           unsigned int *, unsigned int *);
+  bool (*_bfd_find_line) (bfd *, struct bfd_symbol **,
+                          struct bfd_symbol *, const char **,
+                          unsigned int *);
+  bool (*_bfd_find_inliner_info)
     (bfd *, const char **, const char **, unsigned int *);
  /* Back-door to allow format-aware applications to create debug symbols
     while using BFD for everything else.  Currently used by the assembler
     when creating COFF files.  */
-  asymbol *   (*_bfd_make_debug_symbol) (bfd *, void *, unsigned long size);
+  asymbol *
+       (*_bfd_make_debug_symbol) (bfd *);
 #define bfd_read_minisymbols(b, d, m, s) \
        BFD_SEND (b, _read_minisymbols, (b, d, m, s))
-  long        (*_read_minisymbols) (bfd *, bfd_boolean, void **,
-                                    unsigned int *);
+  long (*_read_minisymbols) (bfd *, bool, void **, unsigned int *);
 #define bfd_minisymbol_to_symbol(b, d, m, f) \
        BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
-  asymbol *   (*_minisymbol_to_symbol) (bfd *, bfd_boolean, const void *,
-                                        asymbol *);
+  asymbol *
+       (*_minisymbol_to_symbol) (bfd *, bool, const void *, asymbol *);
 
   /* Routines for relocs.  */
 #define BFD_JUMP_TABLE_RELOCS(NAME) \
@@ -398,25 +364,25 @@ BFD_JUMP_TABLE macros.
   NAME##_bfd_reloc_type_lookup, \
   NAME##_bfd_reloc_name_lookup
 
-  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
-  long        (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
-                                          struct bfd_symbol **);
-  void        (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
+  long (*_get_reloc_upper_bound) (bfd *, sec_ptr);
+  long (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
+                                   struct bfd_symbol **);
+  void (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
   /* See documentation on reloc types.  */
   reloc_howto_type *
-              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
+       (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
   reloc_howto_type *
-              (*reloc_name_lookup) (bfd *, const char *);
+       (*reloc_name_lookup) (bfd *, const char *);
 
   /* Routines used when writing an object file.  */
 #define BFD_JUMP_TABLE_WRITE(NAME) \
   NAME##_set_arch_mach, \
   NAME##_set_section_contents
 
-  bfd_boolean (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
+  bool (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
                                      unsigned long);
-  bfd_boolean (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
-                                            file_ptr, bfd_size_type);
+  bool (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
+                                     file_ptr, bfd_size_type);
 
   /* Routines used by the linker.  */
 #define BFD_JUMP_TABLE_LINK(NAME) \
@@ -441,72 +407,73 @@ BFD_JUMP_TABLE macros.
   NAME##_bfd_link_hide_symbol, \
   NAME##_bfd_define_start_stop
 
-  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
-  bfd_byte *  (*_bfd_get_relocated_section_contents) (bfd *,
-                                                      struct bfd_link_info *,
-                                                      struct bfd_link_order *,
-                                                      bfd_byte *, bfd_boolean,
-                                                      struct bfd_symbol **);
+  int  (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
+  bfd_byte *
+       (*_bfd_get_relocated_section_contents) (bfd *,
+                                               struct bfd_link_info *,
+                                               struct bfd_link_order *,
+                                               bfd_byte *, bool,
+                                               struct bfd_symbol **);
 
-  bfd_boolean (*_bfd_relax_section) (bfd *, struct bfd_section *,
-                                     struct bfd_link_info *, bfd_boolean *);
+  bool (*_bfd_relax_section) (bfd *, struct bfd_section *,
+                              struct bfd_link_info *, bool *);
 
   /* Create a hash table for the linker.  Different backends store
      different information in this table.  */
   struct bfd_link_hash_table *
-              (*_bfd_link_hash_table_create) (bfd *);
+       (*_bfd_link_hash_table_create) (bfd *);
 
   /* Add symbols from this object file into the hash table.  */
-  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
+  bool (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
 
   /* Indicate that we are only retrieving symbol values from this section.  */
-  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
+  void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
 
   /* Copy the symbol type and other attributes for a linker script
      assignment of one symbol to another.  */
 #define bfd_copy_link_hash_symbol_type(b, t, f) \
        BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
-  void        (*_bfd_copy_link_hash_symbol_type) (bfd *,
-                                                  struct bfd_link_hash_entry *,
-                                                  struct bfd_link_hash_entry *);
+  void (*_bfd_copy_link_hash_symbol_type) (bfd *,
+                                           struct bfd_link_hash_entry *,
+                                           struct bfd_link_hash_entry *);
 
   /* Do a link based on the link_order structures attached to each
      section of the BFD.  */
-  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
+  bool (*_bfd_final_link) (bfd *, struct bfd_link_info *);
 
   /* Should this section be split up into smaller pieces during linking.  */
-  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
+  bool (*_bfd_link_split_section) (bfd *, struct bfd_section *);
 
   /* Check the relocations in the bfd for validity.  */
-  bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
+  bool (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
 
   /* Remove sections that are not referenced from the output.  */
-  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
+  bool (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
 
   /* Sets the bitmask of allowed and disallowed section flags.  */
-  bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
-                                            struct flag_info *, asection *);
+  bool (*_bfd_lookup_section_flags) (struct bfd_link_info *,
+                                     struct flag_info *, asection *);
 
   /* Attempt to merge SEC_MERGE sections.  */
-  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
+  bool (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
 
   /* Is this section a member of a group?  */
-  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
+  bool (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 
   /* The group name, if section is a member of a group.  */
   const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
 
   /* Discard members of a group.  */
-  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
+  bool (*_bfd_discard_group) (bfd *, struct bfd_section *);
 
   /* Check if SEC has been already linked during a reloceatable or
      final link.  */
-  bfd_boolean (*_section_already_linked) (bfd *, asection *,
-                                          struct bfd_link_info *);
+  bool (*_section_already_linked) (bfd *, asection *,
+                                   struct bfd_link_info *);
 
   /* Define a common symbol.  */
-  bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
-                                            struct bfd_link_hash_entry *);
+  bool (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
+                                     struct bfd_link_hash_entry *);
 
   /* Hide a symbol.  */
   void (*_bfd_link_hide_symbol) (bfd *, struct bfd_link_info *,
@@ -514,8 +481,8 @@ BFD_JUMP_TABLE macros.
 
   /* Define a __start, __stop, .startof. or .sizeof. symbol.  */
   struct bfd_link_hash_entry *
-              (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
-                                         asection *);
+       (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
+                                  asection *);
 
   /* Routines to handle dynamic symbols and relocs.  */
 #define BFD_JUMP_TABLE_DYNAMIC(NAME) \
@@ -526,18 +493,18 @@ BFD_JUMP_TABLE macros.
   NAME##_canonicalize_dynamic_reloc
 
   /* Get the amount of memory required to hold the dynamic symbols.  */
-  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
+  long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
   /* Read in the dynamic symbols.  */
-  long        (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
+  long (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
   /* Create synthetized symbols.  */
-  long        (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
-                                            long, struct bfd_symbol **,
-                                            struct bfd_symbol **);
+  long (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
+                                     long, struct bfd_symbol **,
+                                     struct bfd_symbol **);
   /* Get the amount of memory required to hold the dynamic relocs.  */
-  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
+  long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
   /* Read in the dynamic relocs.  */
-  long        (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
-                                                  struct bfd_symbol **);
+  long (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
+                                           struct bfd_symbol **);
 
 @end example
 A pointer to an alternative bfd_target in case the current one is not
@@ -573,31 +540,31 @@ bfd_applicable_file_flags (const bfd *ab
   return abfd->xvec->object_flags;
 @}
 
-static inline bfd_boolean
+static inline bool
 bfd_family_coff (const bfd *abfd)
 @{
   return (bfd_get_flavour (abfd) == bfd_target_coff_flavour
           || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
 @}
 
-static inline bfd_boolean
+static inline bool
 bfd_big_endian (const bfd *abfd)
 @{
   return abfd->xvec->byteorder == BFD_ENDIAN_BIG;
 @}
-static inline bfd_boolean
+static inline bool
 bfd_little_endian (const bfd *abfd)
 @{
   return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE;
 @}
 
-static inline bfd_boolean
+static inline bool
 bfd_header_big_endian (const bfd *abfd)
 @{
   return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG;
 @}
 
-static inline bfd_boolean
+static inline bool
 bfd_header_little_endian (const bfd *abfd)
 @{
   return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE;
@@ -623,26 +590,31 @@ bfd_asymbol_flavour (const asymbol *sy)
   return sy->the_bfd->xvec->flavour;
 @}
 
-@end example
+static inline bool
+bfd_keep_unused_section_symbols (const bfd *abfd)
+@{
+  return abfd->xvec->keep_unused_section_symbols;
+@}
 
+static inline bool
+bfd_target_supports_archives (const bfd *abfd)
+@{
+  return (abfd->xvec->_bfd_check_format[bfd_archive]
+          != abfd->xvec->_bfd_check_format[bfd_unknown]);
+@}
+
+@end example
 @findex bfd_set_default_target
 @subsubsection @code{bfd_set_default_target}
-@strong{Synopsis}
-@example
-bfd_boolean bfd_set_default_target (const char *name);
-@end example
-@strong{Description}@*
+@deftypefn {Function} bool bfd_set_default_target (const char *name); 
 Set the default target vector to use when recognizing a BFD.
 This takes the name of the target, which may be a BFD target
 name or a configuration triplet.
 
+@end deftypefn
 @findex bfd_find_target
 @subsubsection @code{bfd_find_target}
-@strong{Synopsis}
-@example
-const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const bfd_target *bfd_find_target (const char *target_name, bfd *abfd); 
 Return a pointer to the transfer vector for the object target
 named @var{target_name}.  If @var{target_name} is @code{NULL},
 choose the one in the environment variable @code{GNUTARGET}; if
@@ -654,17 +626,10 @@ set in the BFD if @var{abfd} isn't @code
 @code{bfd_check_format} to loop over all the targets to find the
 one that matches the file being read.
 
+@end deftypefn
 @findex bfd_get_target_info
 @subsubsection @code{bfd_get_target_info}
-@strong{Synopsis}
-@example
-const bfd_target *bfd_get_target_info (const char *target_name,
-    bfd *abfd,
-    bfd_boolean *is_bigendian,
-    int *underscoring,
-    const char **def_target_arch);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const bfd_target *bfd_get_target_info (const char *target_name, bfd *abfd, bool *is_bigendian, int *underscoring, const char **def_target_arch); 
 Return a pointer to the transfer vector for the object target
 named @var{target_name}.  If @var{target_name} is @code{NULL},
 choose the one in the environment variable @code{GNUTARGET}; if
@@ -684,37 +649,27 @@ else the value of target vector's symbol
 If @var{def_target_arch} is not @code{NULL}, then set it to the architecture
 string specified by the target_name.
 
+@end deftypefn
 @findex bfd_target_list
 @subsubsection @code{bfd_target_list}
-@strong{Synopsis}
-@example
-const char ** bfd_target_list (void);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char ** bfd_target_list (void); 
 Return a freshly malloced NULL-terminated
 vector of the names of all the valid BFD targets. Do not
 modify the names.
 
+@end deftypefn
 @findex bfd_iterate_over_targets
 @subsubsection @code{bfd_iterate_over_targets}
-@strong{Synopsis}
-@example
-const bfd_target *bfd_iterate_over_targets
-   (int (*func) (const bfd_target *, void *),
-    void *data);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const bfd_target *bfd_iterate_over_targets (int (*func) (const bfd_target *, void *), void *data); 
 Call @var{func} for each target in the list of BFD target
 vectors, passing @var{data} to @var{func}.  Stop iterating if
 @var{func} returns a non-zero result, and return that target
 vector.  Return NULL if @var{func} always returns zero.
 
+@end deftypefn
 @findex bfd_flavour_name
 @subsubsection @code{bfd_flavour_name}
-@strong{Synopsis}
-@example
-const char *bfd_flavour_name (enum bfd_flavour flavour);
-@end example
-@strong{Description}@*
+@deftypefn {Function} const char *bfd_flavour_name (enum bfd_flavour flavour); 
 Return the string form of @var{flavour}.
 
+@end deftypefn
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/dwarf1.c ./bfd/dwarf1.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/dwarf1.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/dwarf1.c	2026-03-05 02:07:20.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-2025 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)
@@ -177,7 +177,7 @@ alloc_dwarf1_func (struct dwarf1_debug*
 
    Return FALSE if the die is invalidly formatted; TRUE otherwise.  */
 
-static bfd_boolean
+static bool
 parse_die (bfd *	     abfd,
 	   struct die_info * aDieInfo,
 	   bfd_byte *	     aDiePtr,
@@ -190,23 +190,23 @@ parse_die (bfd *	     abfd,
 
   /* First comes the length.  */
   if (xptr + 4 > aDiePtrEnd)
-    return FALSE;
+    return false;
   aDieInfo->length = bfd_get_32 (abfd, xptr);
   xptr += 4;
-  if (aDieInfo->length == 0
-      || this_die + aDieInfo->length > aDiePtrEnd)
-    return FALSE;
+  if (aDieInfo->length <= 4
+      || (size_t) (aDiePtrEnd - this_die) < aDieInfo->length)
+    return false;
   aDiePtrEnd = this_die + aDieInfo->length;
   if (aDieInfo->length < 6)
     {
       /* Just padding bytes.  */
       aDieInfo->tag = TAG_padding;
-      return TRUE;
+      return true;
     }
 
   /* Then the tag.  */
   if (xptr + 2 > aDiePtrEnd)
-    return FALSE;
+    return false;
   aDieInfo->tag = bfd_get_16 (abfd, xptr);
   xptr += 2;
 
@@ -258,9 +258,8 @@ parse_die (bfd *	     abfd,
 	  if (xptr + 2 <= aDiePtrEnd)
 	    {
 	      block_len = bfd_get_16 (abfd, xptr);
-	      if (xptr + block_len > aDiePtrEnd
-		  || xptr + block_len < xptr)
-		return FALSE;
+	      if ((size_t) (aDiePtrEnd - xptr) < block_len)
+		return false;
 	      xptr += block_len;
 	    }
 	  xptr += 2;
@@ -269,9 +268,8 @@ parse_die (bfd *	     abfd,
 	  if (xptr + 4 <= aDiePtrEnd)
 	    {
 	      block_len = bfd_get_32 (abfd, xptr);
-	      if (xptr + block_len > aDiePtrEnd
-		  || xptr + block_len < xptr)
-		return FALSE;
+	      if ((size_t) (aDiePtrEnd - xptr) < block_len)
+		return false;
 	      xptr += block_len;
 	    }
 	  xptr += 4;
@@ -284,14 +282,14 @@ parse_die (bfd *	     abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Parse a dwarf1 line number table for 'aUnit->stmt_list_offset'
    into 'aUnit->linenumber_table'.  Return FALSE if an error
    occurs; TRUE otherwise.  */
 
-static bfd_boolean
+static bool
 parse_line_table (struct dwarf1_debug* stash, struct dwarf1_unit* aUnit)
 {
   bfd_byte *xptr;
@@ -303,16 +301,16 @@ parse_line_table (struct dwarf1_debug* s
       bfd_size_type size;
 
       msec = bfd_get_section_by_name (stash->abfd, ".line");
-      if (! msec)
-	return FALSE;
+      if (! msec || (msec->flags & SEC_HAS_CONTENTS) == 0)
+	return false;
 
       size = msec->rawsize ? msec->rawsize : msec->size;
       stash->line_section
-	= bfd_simple_get_relocated_section_contents
-	(stash->abfd, msec, NULL, stash->syms);
+	= bfd_simple_get_relocated_section_contents (stash->abfd, msec, NULL,
+						     stash->syms);
 
       if (! stash->line_section)
-	return FALSE;
+	return false;
 
       stash->line_section_end = stash->line_section + size;
     }
@@ -342,7 +340,7 @@ parse_line_table (struct dwarf1_debug* s
       aUnit->linenumber_table = (struct linenumber *) bfd_alloc (stash->abfd,
 								 amt);
       if (!aUnit->linenumber_table)
-	return FALSE;
+	return false;
 
       for (eachLine = 0; eachLine < aUnit->line_count; eachLine++)
 	{
@@ -366,7 +364,7 @@ parse_line_table (struct dwarf1_debug* s
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Parse each function die in a compilation unit 'aUnit'.
@@ -374,7 +372,7 @@ parse_line_table (struct dwarf1_debug* s
    the result is placed in 'aUnit->func_list'.
    Return FALSE if error; TRUE otherwise.  */
 
-static bfd_boolean
+static bool
 parse_functions_in_unit (struct dwarf1_debug* stash, struct dwarf1_unit* aUnit)
 {
   bfd_byte *eachDie;
@@ -388,7 +386,7 @@ parse_functions_in_unit (struct dwarf1_d
 
 	if (! parse_die (stash->abfd, &eachDieInfo, eachDie,
 			 stash->debug_section_end))
-	  return FALSE;
+	  return false;
 
 	if (eachDieInfo.tag == TAG_global_subroutine
 	    || eachDieInfo.tag == TAG_subroutine
@@ -397,7 +395,7 @@ parse_functions_in_unit (struct dwarf1_d
 	  {
 	    struct dwarf1_func* aFunc = alloc_dwarf1_func (stash,aUnit);
 	    if (!aFunc)
-	      return FALSE;
+	      return false;
 
 	    aFunc->name = eachDieInfo.name;
 	    aFunc->low_pc = eachDieInfo.low_pc;
@@ -411,13 +409,13 @@ parse_functions_in_unit (struct dwarf1_d
 	  break;
       }
 
-  return TRUE;
+  return true;
 }
 
 /* Find the nearest line to 'addr' in 'aUnit'.
    Return whether we found the line (or a function) without error.  */
 
-static bfd_boolean
+static bool
 dwarf1_unit_find_nearest_line (struct dwarf1_debug* stash,
 			       struct dwarf1_unit* aUnit,
 			       unsigned long addr,
@@ -425,8 +423,8 @@ dwarf1_unit_find_nearest_line (struct dw
 			       const char **functionname_ptr,
 			       unsigned int *linenumber_ptr)
 {
-  int line_p = FALSE;
-  int func_p = FALSE;
+  int line_p = false;
+  int func_p = false;
 
   if (aUnit->low_pc <= addr && addr < aUnit->high_pc)
     {
@@ -438,13 +436,13 @@ dwarf1_unit_find_nearest_line (struct dw
 	  if (! aUnit->linenumber_table)
 	    {
 	      if (! parse_line_table (stash, aUnit))
-		return FALSE;
+		return false;
 	    }
 
 	  if (! aUnit->func_list)
 	    {
 	      if (! parse_functions_in_unit (stash, aUnit))
-		return FALSE;
+		return false;
 	    }
 
 	  for (i = 0; i < aUnit->line_count; i++)
@@ -454,7 +452,7 @@ dwarf1_unit_find_nearest_line (struct dw
 		{
 		  *filename_ptr = aUnit->name;
 		  *linenumber_ptr = aUnit->linenumber_table[i].linenumber;
-		  line_p = TRUE;
+		  line_p = true;
 		  break;
 		}
 	    }
@@ -467,7 +465,7 @@ dwarf1_unit_find_nearest_line (struct dw
 		  && addr < eachFunc->high_pc)
 		{
 		  *functionname_ptr = eachFunc->name;
-		  func_p = TRUE;
+		  func_p = true;
 		  break;
 		}
 	    }
@@ -480,7 +478,7 @@ dwarf1_unit_find_nearest_line (struct dw
 /* The DWARF 1 version of find_nearest line.
    Return TRUE if the line is found without error.  */
 
-bfd_boolean
+bool
 _bfd_dwarf1_find_nearest_line (bfd *abfd,
 			       asymbol **symbols,
 			       asection *section,
@@ -509,14 +507,15 @@ _bfd_dwarf1_find_nearest_line (bfd *abfd
 	= (struct dwarf1_debug *) bfd_zalloc (abfd, size);
 
       if (! stash)
-	return FALSE;
+	return false;
 
       msec = bfd_get_section_by_name (abfd, ".debug");
-      if (! msec)
+      if (! msec
+	  || (msec->flags & SEC_HAS_CONTENTS) == 0)
 	/* No dwarf1 info.  Note that at this point the stash
 	   has been allocated, but contains zeros, this lets
 	   future calls to this function fail quicker.  */
-	return FALSE;
+	return false;
 
       size = msec->rawsize ? msec->rawsize : msec->size;
       stash->debug_section
@@ -524,7 +523,7 @@ _bfd_dwarf1_find_nearest_line (bfd *abfd
 						     symbols);
 
       if (! stash->debug_section)
-	return FALSE;
+	return false;
 
       stash->debug_section_end = stash->debug_section + size;
       stash->currentDie = stash->debug_section;
@@ -536,7 +535,7 @@ _bfd_dwarf1_find_nearest_line (bfd *abfd
      or that an error occured while setting up the stash.  */
 
   if (! stash->debug_section)
-    return FALSE;
+    return false;
 
   /* Look at the previously parsed units to see if any contain
      the addr.  */
@@ -553,14 +552,14 @@ _bfd_dwarf1_find_nearest_line (bfd *abfd
 
       if (! parse_die (stash->abfd, &aDieInfo, stash->currentDie,
 		       stash->debug_section_end))
-	return FALSE;
+	return false;
 
       if (aDieInfo.tag == TAG_compile_unit)
 	{
 	  struct dwarf1_unit* aUnit
 	    = alloc_dwarf1_unit (stash);
 	  if (!aUnit)
-	    return FALSE;
+	    return false;
 
 	  aUnit->name = aDieInfo.name;
 	  aUnit->low_pc = aDieInfo.low_pc;
@@ -592,5 +591,17 @@ _bfd_dwarf1_find_nearest_line (bfd *abfd
 	stash->currentDie += aDieInfo.length;
     }
 
-  return FALSE;
+  return false;
+}
+
+void
+_bfd_dwarf1_cleanup_debug_info (bfd *abfd ATTRIBUTE_UNUSED, void **pinfo)
+{
+  struct dwarf1_debug* stash = *pinfo;
+
+  if (stash == NULL)
+    return;
+
+  free (stash->debug_section);
+  free (stash->line_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.20200303/bfd/dwarf2.c ./bfd/dwarf2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/dwarf2.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/dwarf2.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* DWARF 2 support.
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
 
    Adapted from gdb/dwarf2read.c by Gavin Koch of Cygnus Solutions
    (gavin@cygnus.com).
@@ -32,10 +32,12 @@
 #include "sysdep.h"
 #include "bfd.h"
 #include "libiberty.h"
+#include "demangle.h"
 #include "libbfd.h"
 #include "elf-bfd.h"
 #include "dwarf2.h"
 #include "hashtab.h"
+#include "splay-tree.h"
 
 /* The data in the .debug_line statement prologue looks like this.  */
 
@@ -63,8 +65,8 @@ struct attribute
   {
     char *str;
     struct dwarf_block *blk;
-    bfd_uint64_t val;
-    bfd_int64_t sval;
+    uint64_t val;
+    int64_t sval;
   }
   u;
 };
@@ -80,8 +82,120 @@ struct adjusted_section
 {
   asection *section;
   bfd_vma adj_vma;
+  bfd_vma orig_vma;
 };
 
+/* A trie to map quickly from address range to compilation unit.
+
+   This is a fairly standard radix-256 trie, used to quickly locate which
+   compilation unit any given address belongs to.  Given that each compilation
+   unit may register hundreds of very small and unaligned ranges (which may
+   potentially overlap, due to inlining and other concerns), and a large
+   program may end up containing hundreds of thousands of such ranges, we cannot
+   scan through them linearly without undue slowdown.
+
+   We use a hybrid trie to avoid memory explosion: There are two types of trie
+   nodes, leaves and interior nodes.  (Almost all nodes are leaves, so they
+   take up the bulk of the memory usage.) Leaves contain a simple array of
+   ranges (high/low address) and which compilation unit contains those ranges,
+   and when we get to a leaf, we scan through it linearly.  Interior nodes
+   contain pointers to 256 other nodes, keyed by the next byte of the address.
+   So for a 64-bit address like 0x1234567abcd, we would start at the root and go
+   down child[0x00]->child[0x00]->child[0x01]->child[0x23]->child[0x45] etc.,
+   until we hit a leaf.  (Nodes are, in general, leaves until they exceed the
+   default allocation of 16 elements, at which point they are converted to
+   interior node if possible.) This gives us near-constant lookup times;
+   the only thing that can be costly is if there are lots of overlapping ranges
+   within a single 256-byte segment of the binary, in which case we have to
+   scan through them all to find the best match.
+
+   For a binary with few ranges, we will in practice only have a single leaf
+   node at the root, containing a simple array.  Thus, the scheme is efficient
+   for both small and large binaries.
+ */
+
+/* Experiments have shown 16 to be a memory-efficient default leaf size.
+   The only case where a leaf will hold more memory than this, is at the
+   bottomost level (covering 256 bytes in the binary), where we'll expand
+   the leaf to be able to hold more ranges if needed.
+ */
+#define TRIE_LEAF_SIZE 16
+
+/* All trie_node pointers will really be trie_leaf or trie_interior,
+   but they have this common head.  */
+struct trie_node
+{
+  /* If zero, we are an interior node.
+     Otherwise, how many ranges we have room for in this leaf.  */
+  unsigned int num_room_in_leaf;
+};
+
+struct trie_leaf
+{
+  struct trie_node head;
+  unsigned int num_stored_in_leaf;
+  struct {
+    struct comp_unit *unit;
+    bfd_vma low_pc, high_pc;
+  } ranges[];
+};
+
+struct trie_interior
+{
+  struct trie_node head;
+  struct trie_node *children[256];
+};
+
+static struct trie_node *alloc_trie_leaf (bfd *abfd)
+{
+  struct trie_leaf *leaf;
+  size_t amt = sizeof (*leaf) + TRIE_LEAF_SIZE * sizeof (leaf->ranges[0]);
+  leaf = bfd_zalloc (abfd, amt);
+  if (leaf == NULL)
+    return NULL;
+  leaf->head.num_room_in_leaf = TRIE_LEAF_SIZE;
+  return &leaf->head;
+}
+
+struct addr_range
+{
+  bfd_byte *start;
+  bfd_byte *end;
+};
+
+/* Return true if address range do intersect.  */
+
+static bool
+addr_range_intersects (struct addr_range *r1, struct addr_range *r2)
+{
+  return (r1->start <= r2->start && r2->start < r1->end)
+    || (r1->start <= (r2->end - 1) && (r2->end - 1) < r1->end);
+}
+
+/* Compare function for splay tree of addr_ranges.  */
+
+static int
+splay_tree_compare_addr_range (splay_tree_key xa, splay_tree_key xb)
+{
+  struct addr_range *r1 = (struct addr_range *) xa;
+  struct addr_range *r2 = (struct addr_range *) xb;
+
+  if (addr_range_intersects (r1, r2) || addr_range_intersects (r2, r1))
+    return 0;
+  else if (r1->end <= r2->start)
+    return -1;
+  else
+    return 1;
+}
+
+/* Splay tree release function for keys (addr_range).  */
+
+static void
+splay_tree_free_addr_range (splay_tree_key key)
+{
+  free ((struct addr_range *)key);
+}
+
 struct dwarf2_debug_file
 {
   /* The actual bfd from which debug info was loaded.  Might be
@@ -118,6 +232,18 @@ struct dwarf2_debug_file
   /* Length of the loaded .debug_str section.  */
   bfd_size_type dwarf_str_size;
 
+  /* Pointer to the .debug_str_offsets section loaded into memory.  */
+  bfd_byte *dwarf_str_offsets_buffer;
+
+  /* Length of the loaded .debug_str_offsets section.  */
+  bfd_size_type dwarf_str_offsets_size;
+
+  /* Pointer to the .debug_addr section loaded into memory.  */
+  bfd_byte *dwarf_addr_buffer;
+
+  /* Length of the loaded .debug_addr section.  */
+  bfd_size_type dwarf_addr_size;
+
   /* Pointer to the .debug_line_str section loaded into memory.  */
   bfd_byte *dwarf_line_str_buffer;
 
@@ -130,9 +256,18 @@ 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;
 
+  /* A list of all previously read comp_units with no ranges (yet).  */
+  struct comp_unit *all_comp_units_without_ranges;
+
   /* Last comp unit in list above.  */
   struct comp_unit *last_comp_unit;
 
@@ -141,6 +276,12 @@ struct dwarf2_debug_file
 
   /* Hash table to map offsets to decoded abbrevs.  */
   htab_t abbrev_offsets;
+
+  /* Root of a trie to map addresses to compilation units.  */
+  struct trie_node *trie_root;
+
+  /* Splay tree to map info_ptr address to compilation units.  */
+  splay_tree comp_unit_tree;
 };
 
 struct dwarf2_debug
@@ -151,12 +292,6 @@ struct dwarf2_debug
   /* Per-file stuff.  */
   struct dwarf2_debug_file f, alt;
 
-  /* Pointer to the original bfd for which debug was loaded.  This is what
-     we use to compare and so check that the cached debug data is still
-     valid - it saves having to possibly dereference the gnu_debuglink each
-     time.  */
-  bfd *orig_bfd;
-
   /* If the most recent call to bfd_find_nearest_line was given an
      address in an inlined function, preserve a pointer into the
      calling chain for subsequent calls to bfd_find_inliner_info to
@@ -174,6 +309,9 @@ struct dwarf2_debug
   /* Array of sections with adjusted VMA.  */
   struct adjusted_section *adjusted_sections;
 
+  /* Used to validate the cached debug data.  */
+  unsigned int orig_bfd_id;
+
   /* Number of times find_line is called.  This is used in
      the heuristic for enabling the info hash tables.  */
   int info_hash_count;
@@ -196,7 +334,7 @@ struct dwarf2_debug
 #define STASH_INFO_HASH_DISABLED   2
 
   /* True if we opened bfd_ptr.  */
-  bfd_boolean close_on_cleanup;
+  bool close_on_cleanup;
 };
 
 struct arange
@@ -214,6 +352,11 @@ struct comp_unit
   /* Chain the previously read compilation units.  */
   struct comp_unit *next_unit;
 
+  /* Chain the previously read compilation units that have no ranges yet.
+     We scan these separately when we have a trie over the ranges.
+     Unused if arange.high != 0. */
+  struct comp_unit *next_unit_without_ranges;
+
   /* Likewise, chain the compilation unit read after this one.
      The comp units are stored in reversed reading order.  */
   struct comp_unit *prev_unit;
@@ -289,18 +432,28 @@ struct comp_unit
   bfd_vma base_address;
 
   /* TRUE if symbols are cached in hash table for faster lookup by name.  */
-  bfd_boolean cached;
+  bool cached;
+
+  /* Used when iterating over trie leaves to know which units we have
+     already seen in this iteration.  */
+  bool mark;
+
+ /* Base address of debug_addr section.  */
+  size_t dwarf_addr_offset;
+
+  /* Base address of string offset table.  */
+  size_t dwarf_str_offset;
 };
 
 /* 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.  */
+  bool                 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,10 +480,13 @@ 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", },
   { ".debug_str",		".zdebug_str", },
+  { ".debug_str_offsets",	".zdebug_str_offsets", },
+  { ".debug_addr",		".zdebug_addr", },
   { ".debug_line_str",		".zdebug_line_str", },
   { ".debug_types",		".zdebug_types" },
   /* GNU DWARF 1 extensions */
@@ -360,10 +516,13 @@ enum dwarf_debug_section_enum
   debug_pubnames,
   debug_pubtypes,
   debug_ranges,
+  debug_rnglists,
   debug_static_func,
   debug_static_vars,
   debug_str,
   debug_str_alt,
+  debug_str_offsets,
+  debug_addr,
   debug_line_str,
   debug_types,
   debug_sfnames,
@@ -470,30 +629,30 @@ create_info_hash_table (bfd *abfd)
    right type of info in inserted as info is passed as a void* pointer.
    This function returns true if there is no error.  */
 
-static bfd_boolean
+static bool
 insert_info_hash_table (struct info_hash_table *hash_table,
 			const char *key,
 			void *info,
-			bfd_boolean copy_p)
+			bool copy_p)
 {
   struct info_hash_entry *entry;
   struct info_list_node *node;
 
   entry = (struct info_hash_entry*) bfd_hash_lookup (&hash_table->base,
-						     key, TRUE, copy_p);
+						     key, true, copy_p);
   if (!entry)
-    return FALSE;
+    return false;
 
   node = (struct info_list_node *) bfd_hash_allocate (&hash_table->base,
 						      sizeof (*node));
   if (!node)
-    return FALSE;
+    return false;
 
   node->info = info;
   node->next = entry->head;
   entry->head = node;
 
-  return TRUE;
+  return true;
 }
 
 /* Look up an info entry list from an info hash table.  Return NULL
@@ -505,7 +664,7 @@ lookup_info_hash_table (struct info_hash
   struct info_hash_entry *entry;
 
   entry = (struct info_hash_entry*) bfd_hash_lookup (&hash_table->base, key,
-						     FALSE, FALSE);
+						     false, false);
   return entry ? entry->head : NULL;
 }
 
@@ -515,56 +674,73 @@ lookup_info_hash_table (struct info_hash
    section contents, otherwise use bfd_get_section_contents.  Fail if
    the located section does not contain at least OFFSET bytes.  */
 
-static bfd_boolean
-read_section (bfd *	      abfd,
+static bool
+read_section (bfd *abfd,
 	      const struct dwarf_debug_section *sec,
-	      asymbol **      syms,
-	      bfd_uint64_t    offset,
-	      bfd_byte **     section_buffer,
-	      bfd_size_type * section_size)
+	      asymbol **syms,
+	      uint64_t offset,
+	      bfd_byte **section_buffer,
+	      bfd_size_type *section_size)
 {
-  asection *msec;
   const char *section_name = sec->uncompressed_name;
   bfd_byte *contents = *section_buffer;
-  bfd_size_type amt;
 
   /* The section may have already been read.  */
   if (contents == NULL)
     {
+      bfd_size_type amt;
+      asection *msec;
+
       msec = bfd_get_section_by_name (abfd, section_name);
-      if (! msec)
+      if (msec == NULL)
 	{
 	  section_name = sec->compressed_name;
-	  if (section_name != NULL)
-	    msec = bfd_get_section_by_name (abfd, section_name);
+          msec = bfd_get_section_by_name (abfd, section_name);
 	}
-      if (! msec)
+      if (msec == NULL)
 	{
 	  _bfd_error_handler (_("DWARF error: can't find %s section."),
 			      sec->uncompressed_name);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
-      *section_size = msec->rawsize ? msec->rawsize : msec->size;
+      if ((msec->flags & SEC_HAS_CONTENTS) == 0)
+	{
+	  _bfd_error_handler (_("DWARF error: section %s has no contents"),
+			      section_name);
+	  bfd_set_error (bfd_error_no_contents);
+	  return false;
+	}
+
+      if (bfd_section_size_insane (abfd, msec))
+	{
+	  /* PR 26946 */
+	  _bfd_error_handler (_("DWARF error: section %s is too big"),
+			      section_name);
+	  return false;
+	}
+      amt = bfd_get_section_limit_octets (abfd, msec);
+      *section_size = amt;
       /* Paranoia - alloc one extra so that we can make sure a string
 	 section is NUL terminated.  */
-      amt = *section_size + 1;
+      amt += 1;
       if (amt == 0)
 	{
+	  /* Paranoia - this should never happen.  */
 	  bfd_set_error (bfd_error_no_memory);
-	  return FALSE;
+	  return false;
 	}
       contents = (bfd_byte *) bfd_malloc (amt);
       if (contents == NULL)
-	return FALSE;
+	return false;
       if (syms
 	  ? !bfd_simple_get_relocated_section_contents (abfd, msec, contents,
 							syms)
 	  : !bfd_get_section_contents (abfd, msec, contents, 0, *section_size))
 	{
 	  free (contents);
-	  return FALSE;
+	  return false;
 	}
       contents[*section_size] = 0;
       *section_buffer = contents;
@@ -580,143 +756,157 @@ read_section (bfd *	      abfd,
 			  (uint64_t) offset, section_name,
 			  (uint64_t) *section_size);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read dwarf information from a buffer.  */
 
+static inline uint64_t
+read_n_bytes (bfd *abfd, bfd_byte **ptr, bfd_byte *end, int n)
+{
+  bfd_byte *buf = *ptr;
+  if (end - buf < n)
+    {
+      *ptr = end;
+      return 0;
+    }
+  *ptr = buf + n;
+  return bfd_get (n * 8, abfd, buf);
+}
+
 static unsigned int
-read_1_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf, bfd_byte *end)
+read_1_byte (bfd *abfd, bfd_byte **ptr, bfd_byte *end)
 {
-  if (buf + 1 > end)
-    return 0;
-  return bfd_get_8 (abfd, buf);
+  return read_n_bytes (abfd, ptr, end, 1);
 }
 
 static int
-read_1_signed_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte *buf, bfd_byte *end)
+read_1_signed_byte (bfd *abfd ATTRIBUTE_UNUSED, bfd_byte **ptr, bfd_byte *end)
 {
-  if (buf + 1 > end)
-    return 0;
+  bfd_byte *buf = *ptr;
+  if (end - buf < 1)
+    {
+      *ptr = end;
+      return 0;
+    }
+  *ptr = buf + 1;
   return bfd_get_signed_8 (abfd, buf);
 }
 
 static unsigned int
-read_2_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end)
+read_2_bytes (bfd *abfd, bfd_byte **ptr, bfd_byte *end)
 {
-  if (buf + 2 > end)
-    return 0;
-  return bfd_get_16 (abfd, buf);
+  return read_n_bytes (abfd, ptr, end, 2);
 }
 
 static unsigned int
-read_4_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end)
+read_3_bytes (bfd *abfd, bfd_byte **ptr, bfd_byte *end)
 {
-  if (buf + 4 > end)
-    return 0;
-  return bfd_get_32 (abfd, buf);
+  unsigned int val = read_1_byte (abfd, ptr, end);
+  val <<= 8;
+  val |= read_1_byte (abfd, ptr, end);
+  val <<= 8;
+  val |= read_1_byte (abfd, ptr, end);
+  if (bfd_little_endian (abfd))
+    val = (((val >> 16) & 0xff)
+	   | (val & 0xff00)
+	   | ((val & 0xff) << 16));
+  return val;
+}
+
+static unsigned int
+read_4_bytes (bfd *abfd, bfd_byte **ptr, bfd_byte *end)
+{
+  return read_n_bytes (abfd, ptr, end, 4);
 }
 
-static bfd_uint64_t
-read_8_bytes (bfd *abfd, bfd_byte *buf, bfd_byte *end)
+static uint64_t
+read_8_bytes (bfd *abfd, bfd_byte **ptr, bfd_byte *end)
 {
-  if (buf + 8 > end)
-    return 0;
-  return bfd_get_64 (abfd, buf);
+  return read_n_bytes (abfd, ptr, end, 8);
 }
 
-static bfd_byte *
-read_n_bytes (bfd_byte *           buf,
-	      bfd_byte *           end,
-	      struct dwarf_block * block)
+static struct dwarf_block *
+read_blk (bfd *abfd, bfd_byte **ptr, bfd_byte *end, size_t size)
 {
-  unsigned int  size = block->size;
-  bfd_byte *    block_end = buf + size;
+  bfd_byte *buf = *ptr;
+  struct dwarf_block *block;
+
+  block = (struct dwarf_block *) bfd_alloc (abfd, sizeof (*block));
+  if (block == NULL)
+    return NULL;
 
-  if (block_end > end || block_end < buf)
+  if (size > (size_t) (end - buf))
     {
+      *ptr = end;
       block->data = NULL;
       block->size = 0;
-      return end;
     }
   else
     {
+      *ptr = buf + size;
       block->data = buf;
-      return block_end;
+      block->size = size;
     }
+  return block;
 }
 
-/* Scans a NUL terminated string starting at BUF, returning a pointer to it.
-   Returns the number of characters in the string, *including* the NUL byte,
-   in BYTES_READ_PTR.  This value is set even if the function fails.  Bytes
-   at or beyond BUF_END will not be read.  Returns NULL if there was a
-   problem, or if the string is empty.  */
+/* Scans a NUL terminated string starting at *PTR, returning a pointer to it.
+   Bytes at or beyond BUF_END will not be read.  Returns NULL if the
+   terminator is not found or if the string is empty.  *PTR is
+   incremented over the bytes scanned, including the terminator.  */
 
 static char *
-read_string (bfd *	    abfd ATTRIBUTE_UNUSED,
-	     bfd_byte *	    buf,
-	     bfd_byte *	    buf_end,
-	     unsigned int * bytes_read_ptr)
+read_string (bfd_byte **ptr,
+	     bfd_byte *buf_end)
 {
+  bfd_byte *buf = *ptr;
   bfd_byte *str = buf;
 
-  if (buf >= buf_end)
-    {
-      * bytes_read_ptr = 0;
-      return NULL;
-    }
-
-  if (*str == '\0')
-    {
-      * bytes_read_ptr = 1;
-      return NULL;
-    }
-
   while (buf < buf_end)
-    if (* buf ++ == 0)
+    if (*buf++ == 0)
       {
-	* bytes_read_ptr = buf - str;
+	if (str == buf - 1)
+	  break;
+	*ptr = buf;
 	return (char *) str;
       }
 
-  * bytes_read_ptr = buf - str;
+  *ptr = buf;
   return NULL;
 }
 
-/* Reads an offset from BUF and then locates the string at this offset
+/* Reads an offset from *PTR and then locates the string at this offset
    inside the debug string section.  Returns a pointer to the string.
-   Returns the number of bytes read from BUF, *not* the length of the string,
-   in BYTES_READ_PTR.  This value is set even if the function fails.  Bytes
-   at or beyond BUF_END will not be read from BUF.  Returns NULL if there was
-   a problem, or if the string is empty.  Does not check for NUL termination
-   of the string.  */
+   Increments *PTR by the number of bytes read for the offset.  This
+   value is set even if the function fails.  Bytes at or beyond
+   BUF_END will not be read.  Returns NULL if there was a problem, or
+   if the string is empty.  Does not check for NUL termination of the
+   string.  */
 
 static char *
-read_indirect_string (struct comp_unit * unit,
-		      bfd_byte *	 buf,
-		      bfd_byte *	 buf_end,
-		      unsigned int *	 bytes_read_ptr)
+read_indirect_string (struct comp_unit *unit,
+		      bfd_byte **ptr,
+		      bfd_byte *buf_end)
 {
-  bfd_uint64_t offset;
+  uint64_t offset;
   struct dwarf2_debug *stash = unit->stash;
   struct dwarf2_debug_file *file = unit->file;
   char *str;
 
-  if (buf + unit->offset_size > buf_end)
+  if (unit->offset_size > (size_t) (buf_end - *ptr))
     {
-      * bytes_read_ptr = 0;
+      *ptr = buf_end;
       return NULL;
     }
 
   if (unit->offset_size == 4)
-    offset = read_4_bytes (unit->abfd, buf, buf_end);
+    offset = read_4_bytes (unit->abfd, ptr, buf_end);
   else
-    offset = read_8_bytes (unit->abfd, buf, buf_end);
-
-  *bytes_read_ptr = unit->offset_size;
+    offset = read_8_bytes (unit->abfd, ptr, buf_end);
 
   if (! read_section (unit->abfd, &stash->debug_sections[debug_str],
 		      file->syms, offset,
@@ -732,28 +922,25 @@ read_indirect_string (struct comp_unit *
 /* Like read_indirect_string but from .debug_line_str section.  */
 
 static char *
-read_indirect_line_string (struct comp_unit * unit,
-			   bfd_byte *	      buf,
-			   bfd_byte *	      buf_end,
-			   unsigned int *     bytes_read_ptr)
+read_indirect_line_string (struct comp_unit *unit,
+			   bfd_byte **ptr,
+			   bfd_byte *buf_end)
 {
-  bfd_uint64_t offset;
+  uint64_t offset;
   struct dwarf2_debug *stash = unit->stash;
   struct dwarf2_debug_file *file = unit->file;
   char *str;
 
-  if (buf + unit->offset_size > buf_end)
+  if (unit->offset_size > (size_t) (buf_end - *ptr))
     {
-      * bytes_read_ptr = 0;
+      *ptr = buf_end;
       return NULL;
     }
 
   if (unit->offset_size == 4)
-    offset = read_4_bytes (unit->abfd, buf, buf_end);
+    offset = read_4_bytes (unit->abfd, ptr, buf_end);
   else
-    offset = read_8_bytes (unit->abfd, buf, buf_end);
-
-  *bytes_read_ptr = unit->offset_size;
+    offset = read_8_bytes (unit->abfd, ptr, buf_end);
 
   if (! read_section (unit->abfd, &stash->debug_sections[debug_line_str],
 		      file->syms, offset,
@@ -772,27 +959,24 @@ read_indirect_line_string (struct comp_u
    Used to impement DW_FORM_GNU_strp_alt.  */
 
 static char *
-read_alt_indirect_string (struct comp_unit * unit,
-			  bfd_byte *	     buf,
-			  bfd_byte *	     buf_end,
-			  unsigned int *     bytes_read_ptr)
+read_alt_indirect_string (struct comp_unit *unit,
+			  bfd_byte **ptr,
+			  bfd_byte *buf_end)
 {
-  bfd_uint64_t offset;
+  uint64_t offset;
   struct dwarf2_debug *stash = unit->stash;
   char *str;
 
-  if (buf + unit->offset_size > buf_end)
+  if (unit->offset_size > (size_t) (buf_end - *ptr))
     {
-      * bytes_read_ptr = 0;
+      *ptr = buf_end;
       return NULL;
     }
 
   if (unit->offset_size == 4)
-    offset = read_4_bytes (unit->abfd, buf, buf_end);
+    offset = read_4_bytes (unit->abfd, ptr, buf_end);
   else
-    offset = read_8_bytes (unit->abfd, buf, buf_end);
-
-  *bytes_read_ptr = unit->offset_size;
+    offset = read_8_bytes (unit->abfd, ptr, buf_end);
 
   if (stash->alt.bfd_ptr == NULL)
     {
@@ -835,8 +1019,7 @@ read_alt_indirect_string (struct comp_un
    or NULL upon failure.  */
 
 static bfd_byte *
-read_alt_indirect_ref (struct comp_unit * unit,
-		       bfd_uint64_t       offset)
+read_alt_indirect_ref (struct comp_unit *unit, uint64_t offset)
 {
   struct dwarf2_debug *stash = unit->stash;
 
@@ -872,17 +1055,22 @@ read_alt_indirect_ref (struct comp_unit
   return stash->alt.dwarf_info_buffer + offset;
 }
 
-static bfd_uint64_t
-read_address (struct comp_unit *unit, bfd_byte *buf, bfd_byte * buf_end)
+static uint64_t
+read_address (struct comp_unit *unit, bfd_byte **ptr, bfd_byte *buf_end)
 {
+  bfd_byte *buf = *ptr;
   int signed_vma = 0;
 
   if (bfd_get_flavour (unit->abfd) == bfd_target_elf_flavour)
     signed_vma = get_elf_backend_data (unit->abfd)->sign_extend_vma;
 
-  if (buf + unit->addr_size > buf_end)
-    return 0;
+  if (unit->addr_size > (size_t) (buf_end - buf))
+    {
+      *ptr = buf_end;
+      return 0;
+    }
 
+  *ptr = buf + unit->addr_size;
   if (signed_vma)
     {
       switch (unit->addr_size)
@@ -986,16 +1174,16 @@ del_abbrev (void *p)
    in a hash table.  */
 
 static struct abbrev_info**
-read_abbrevs (bfd *abfd, bfd_uint64_t offset, struct dwarf2_debug *stash,
+read_abbrevs (bfd *abfd, uint64_t offset, struct dwarf2_debug *stash,
 	      struct dwarf2_debug_file *file)
 {
   struct abbrev_info **abbrevs;
   bfd_byte *abbrev_ptr;
   bfd_byte *abbrev_end;
   struct abbrev_info *cur_abbrev;
-  unsigned int abbrev_number, bytes_read, abbrev_name;
+  unsigned int abbrev_number, abbrev_name;
   unsigned int abbrev_form, hash_number;
-  bfd_size_type amt;
+  size_t amt;
   void **slot;
   struct abbrev_offset_entry ent = { offset, NULL };
 
@@ -1021,9 +1209,8 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
 
   abbrev_ptr = file->dwarf_abbrev_buffer + offset;
   abbrev_end = file->dwarf_abbrev_buffer + file->dwarf_abbrev_size;
-  abbrev_number = _bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
-					 FALSE, abbrev_end);
-  abbrev_ptr += bytes_read;
+  abbrev_number = _bfd_safe_read_leb128 (abfd, &abbrev_ptr,
+					 false, abbrev_end);
 
   /* Loop until we reach an abbrev number of 0.  */
   while (abbrev_number)
@@ -1036,11 +1223,9 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
       /* Read in abbrev header.  */
       cur_abbrev->number = abbrev_number;
       cur_abbrev->tag = (enum dwarf_tag)
-	_bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
-			       FALSE, abbrev_end);
-      abbrev_ptr += bytes_read;
-      cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr, abbrev_end);
-      abbrev_ptr += 1;
+	_bfd_safe_read_leb128 (abfd, &abbrev_ptr,
+			       false, abbrev_end);
+      cur_abbrev->has_children = read_1_byte (abfd, &abbrev_ptr, abbrev_end);
 
       /* Now read in declarations.  */
       for (;;)
@@ -1048,20 +1233,13 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
 	  /* Initialize it just to avoid a GCC false warning.  */
 	  bfd_vma implicit_const = -1;
 
-	  abbrev_name = _bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
-					       FALSE, abbrev_end);
-	  abbrev_ptr += bytes_read;
-	  abbrev_form = _bfd_safe_read_leb128 (abfd, abbrev_ptr, &bytes_read,
-					       FALSE, abbrev_end);
-	  abbrev_ptr += bytes_read;
+	  abbrev_name = _bfd_safe_read_leb128 (abfd, &abbrev_ptr,
+					       false, abbrev_end);
+	  abbrev_form = _bfd_safe_read_leb128 (abfd, &abbrev_ptr,
+					       false, abbrev_end);
 	  if (abbrev_form == DW_FORM_implicit_const)
-	    {
-	      implicit_const = _bfd_safe_read_leb128 (abfd, abbrev_ptr,
-						      &bytes_read, TRUE,
-						      abbrev_end);
-	      abbrev_ptr += bytes_read;
-	    }
-
+	    implicit_const = _bfd_safe_read_leb128 (abfd, &abbrev_ptr,
+						    true, abbrev_end);
 	  if (abbrev_name == 0)
 	    break;
 
@@ -1100,9 +1278,8 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
       if ((size_t) (abbrev_ptr - file->dwarf_abbrev_buffer)
 	  >= file->dwarf_abbrev_size)
 	break;
-      abbrev_number = _bfd_safe_read_leb128 (abfd, abbrev_ptr,
-					     &bytes_read, FALSE, abbrev_end);
-      abbrev_ptr += bytes_read;
+      abbrev_number = _bfd_safe_read_leb128 (abfd, &abbrev_ptr,
+					     false, abbrev_end);
       if (lookup_abbrev (abbrev_number, abbrevs) != NULL)
 	break;
     }
@@ -1136,11 +1313,172 @@ read_abbrevs (bfd *abfd, bfd_uint64_t of
 
 /* Returns true if the form is one which has a string value.  */
 
-static inline bfd_boolean
-is_str_attr (enum dwarf_form form)
+static bool
+is_str_form (const struct attribute *attr)
 {
-  return (form == DW_FORM_string || form == DW_FORM_strp
-	  || form == DW_FORM_line_strp || form == DW_FORM_GNU_strp_alt);
+  switch (attr->form)
+    {
+    case DW_FORM_string:
+    case DW_FORM_strp:
+    case DW_FORM_strx:
+    case DW_FORM_strx1:
+    case DW_FORM_strx2:
+    case DW_FORM_strx3:
+    case DW_FORM_strx4:
+    case DW_FORM_line_strp:
+    case DW_FORM_GNU_strp_alt:
+      return true;
+
+    default:
+      return false;
+    }
+}
+
+/* Returns true if the form is one which has an integer value.  */
+
+static bool
+is_int_form (const struct attribute *attr)
+{
+  switch (attr->form)
+    {
+    case DW_FORM_addr:
+    case DW_FORM_data2:
+    case DW_FORM_data4:
+    case DW_FORM_data8:
+    case DW_FORM_data1:
+    case DW_FORM_flag:
+    case DW_FORM_sdata:
+    case DW_FORM_udata:
+    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_sec_offset:
+    case DW_FORM_flag_present:
+    case DW_FORM_ref_sig8:
+    case DW_FORM_addrx:
+    case DW_FORM_implicit_const:
+    case DW_FORM_addrx1:
+    case DW_FORM_addrx2:
+    case DW_FORM_addrx3:
+    case DW_FORM_addrx4:
+    case DW_FORM_GNU_ref_alt:
+      return true;
+
+    default:
+      return false;
+    }
+}
+
+/* Returns true if the form is strx[1-4].  */
+
+static inline bool
+is_strx_form (enum dwarf_form form)
+{
+  return (form == DW_FORM_strx
+	  || form == DW_FORM_strx1
+	  || form == DW_FORM_strx2
+	  || form == DW_FORM_strx3
+	  || form == DW_FORM_strx4);
+}
+
+/* Return true if the form is addrx[1-4].  */
+
+static inline bool
+is_addrx_form (enum dwarf_form form)
+{
+  return (form == DW_FORM_addrx
+	  || form == DW_FORM_addrx1
+	  || form == DW_FORM_addrx2
+	  || form == DW_FORM_addrx3
+	  || form == DW_FORM_addrx4);
+}
+
+/* Returns the address in .debug_addr section using DW_AT_addr_base.
+   Used to implement DW_FORM_addrx*.  */
+static uint64_t
+read_indexed_address (uint64_t idx, struct comp_unit *unit)
+{
+  struct dwarf2_debug *stash = unit->stash;
+  struct dwarf2_debug_file *file = unit->file;
+  bfd_byte *info_ptr;
+  size_t offset;
+
+  if (stash == NULL)
+    return 0;
+
+  if (!read_section (unit->abfd, &stash->debug_sections[debug_addr],
+		     file->syms, 0,
+		     &file->dwarf_addr_buffer, &file->dwarf_addr_size))
+    return 0;
+
+  if (_bfd_mul_overflow (idx, unit->addr_size, &offset))
+    return 0;
+
+  offset += unit->dwarf_addr_offset;
+  if (offset < unit->dwarf_addr_offset
+      || offset > file->dwarf_addr_size
+      || file->dwarf_addr_size - offset < unit->addr_size)
+    return 0;
+
+  info_ptr = file->dwarf_addr_buffer + offset;
+
+  if (unit->addr_size == 4)
+    return bfd_get_32 (unit->abfd, info_ptr);
+  else if (unit->addr_size == 8)
+    return bfd_get_64 (unit->abfd, info_ptr);
+  else
+    return 0;
+}
+
+/* Returns the string using DW_AT_str_offsets_base.
+   Used to implement DW_FORM_strx*.  */
+static const char *
+read_indexed_string (uint64_t idx, struct comp_unit *unit)
+{
+  struct dwarf2_debug *stash = unit->stash;
+  struct dwarf2_debug_file *file = unit->file;
+  bfd_byte *info_ptr;
+  uint64_t str_offset;
+  size_t offset;
+
+  if (stash == NULL)
+    return NULL;
+
+  if (!read_section (unit->abfd, &stash->debug_sections[debug_str],
+		     file->syms, 0,
+		     &file->dwarf_str_buffer, &file->dwarf_str_size))
+    return NULL;
+
+  if (!read_section (unit->abfd, &stash->debug_sections[debug_str_offsets],
+		     file->syms, 0,
+		     &file->dwarf_str_offsets_buffer,
+		     &file->dwarf_str_offsets_size))
+    return NULL;
+
+  if (_bfd_mul_overflow (idx, unit->offset_size, &offset))
+    return NULL;
+
+  offset += unit->dwarf_str_offset;
+  if (offset < unit->dwarf_str_offset
+      || offset > file->dwarf_str_offsets_size
+      || file->dwarf_str_offsets_size - offset < unit->offset_size)
+    return NULL;
+
+  info_ptr = file->dwarf_str_offsets_buffer + offset;
+
+  if (unit->offset_size == 4)
+    str_offset = bfd_get_32 (unit->abfd, info_ptr);
+  else if (unit->offset_size == 8)
+    str_offset = bfd_get_64 (unit->abfd, info_ptr);
+  else
+    return NULL;
+
+  if (str_offset >= file->dwarf_str_size)
+    return NULL;
+  return (const char *) file->dwarf_str_buffer + str_offset;
 }
 
 /* Read and fill in the value of attribute ATTR as described by FORM.
@@ -1156,172 +1494,186 @@ read_attribute_value (struct attribute *
 		      bfd_byte *	  info_ptr_end)
 {
   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)
     {
       _bfd_error_handler (_("DWARF error: info pointer extends beyond end of attributes"));
       bfd_set_error (bfd_error_bad_value);
-      return info_ptr;
+      return NULL;
     }
 
   attr->form = (enum dwarf_form) form;
 
   switch (form)
     {
+    case DW_FORM_flag_present:
+      attr->u.val = 1;
+      break;
     case DW_FORM_ref_addr:
       /* DW_FORM_ref_addr is an address in DWARF2, and an offset in
 	 DWARF3.  */
-      if (unit->version == 3 || unit->version == 4)
+      if (unit->version >= 3)
 	{
 	  if (unit->offset_size == 4)
-	    attr->u.val = read_4_bytes (unit->abfd, info_ptr, info_ptr_end);
+	    attr->u.val = read_4_bytes (unit->abfd, &info_ptr, info_ptr_end);
 	  else
-	    attr->u.val = read_8_bytes (unit->abfd, info_ptr, info_ptr_end);
-	  info_ptr += unit->offset_size;
+	    attr->u.val = read_8_bytes (unit->abfd, &info_ptr, info_ptr_end);
 	  break;
 	}
       /* FALLTHROUGH */
     case DW_FORM_addr:
-      attr->u.val = read_address (unit, info_ptr, info_ptr_end);
-      info_ptr += unit->addr_size;
+      attr->u.val = read_address (unit, &info_ptr, info_ptr_end);
       break;
     case DW_FORM_GNU_ref_alt:
     case DW_FORM_sec_offset:
       if (unit->offset_size == 4)
-	attr->u.val = read_4_bytes (unit->abfd, info_ptr, info_ptr_end);
+	attr->u.val = read_4_bytes (unit->abfd, &info_ptr, info_ptr_end);
       else
-	attr->u.val = read_8_bytes (unit->abfd, info_ptr, info_ptr_end);
-      info_ptr += unit->offset_size;
+	attr->u.val = read_8_bytes (unit->abfd, &info_ptr, info_ptr_end);
       break;
     case DW_FORM_block2:
-      amt = sizeof (struct dwarf_block);
-      blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
-      if (blk == NULL)
+      amt = read_2_bytes (abfd, &info_ptr, info_ptr_end);
+      attr->u.blk = read_blk (abfd, &info_ptr, info_ptr_end, amt);
+      if (attr->u.blk == NULL)
 	return NULL;
-      blk->size = read_2_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 2;
-      info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
-      attr->u.blk = blk;
       break;
     case DW_FORM_block4:
-      amt = sizeof (struct dwarf_block);
-      blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
-      if (blk == NULL)
+      amt = read_4_bytes (abfd, &info_ptr, info_ptr_end);
+      attr->u.blk = read_blk (abfd, &info_ptr, info_ptr_end, amt);
+      if (attr->u.blk == NULL)
 	return NULL;
-      blk->size = read_4_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 4;
-      info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
-      attr->u.blk = blk;
+      break;
+    case DW_FORM_ref1:
+    case DW_FORM_flag:
+    case DW_FORM_data1:
+      attr->u.val = read_1_byte (abfd, &info_ptr, info_ptr_end);
+      break;
+    case DW_FORM_addrx1:
+      attr->u.val = read_1_byte (abfd, &info_ptr, info_ptr_end);
+      /* dwarf_addr_offset value 0 indicates the attribute DW_AT_addr_base
+	 is not yet read.  */
+      if (unit->dwarf_addr_offset != 0)
+	attr->u.val = read_indexed_address (attr->u.val, unit);
       break;
     case DW_FORM_data2:
-      attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 2;
+    case DW_FORM_ref2:
+      attr->u.val = read_2_bytes (abfd, &info_ptr, info_ptr_end);
       break;
+    case DW_FORM_addrx2:
+      attr->u.val = read_2_bytes (abfd, &info_ptr, info_ptr_end);
+      if (unit->dwarf_addr_offset != 0)
+	attr->u.val = read_indexed_address (attr->u.val, unit);
+      break;
+    case DW_FORM_addrx3:
+      attr->u.val = read_3_bytes (abfd, &info_ptr, info_ptr_end);
+      if (unit->dwarf_addr_offset != 0)
+	attr->u.val = read_indexed_address(attr->u.val, unit);
+      break;
+    case DW_FORM_ref4:
     case DW_FORM_data4:
-      attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 4;
+      attr->u.val = read_4_bytes (abfd, &info_ptr, info_ptr_end);
+      break;
+    case DW_FORM_addrx4:
+      attr->u.val = read_4_bytes (abfd, &info_ptr, info_ptr_end);
+      if (unit->dwarf_addr_offset != 0)
+	attr->u.val = read_indexed_address (attr->u.val, unit);
       break;
     case DW_FORM_data8:
-      attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 8;
+    case DW_FORM_ref8:
+    case DW_FORM_ref_sig8:
+      attr->u.val = read_8_bytes (abfd, &info_ptr, info_ptr_end);
       break;
     case DW_FORM_string:
-      attr->u.str = read_string (abfd, info_ptr, info_ptr_end, &bytes_read);
-      info_ptr += bytes_read;
+      attr->u.str = read_string (&info_ptr, info_ptr_end);
       break;
     case DW_FORM_strp:
-      attr->u.str = read_indirect_string (unit, info_ptr, info_ptr_end, &bytes_read);
-      info_ptr += bytes_read;
+      attr->u.str = read_indirect_string (unit, &info_ptr, info_ptr_end);
       break;
     case DW_FORM_line_strp:
-      attr->u.str = read_indirect_line_string (unit, info_ptr, info_ptr_end, &bytes_read);
-      info_ptr += bytes_read;
+      attr->u.str = read_indirect_line_string (unit, &info_ptr, info_ptr_end);
       break;
     case DW_FORM_GNU_strp_alt:
-      attr->u.str = read_alt_indirect_string (unit, info_ptr, info_ptr_end, &bytes_read);
-      info_ptr += bytes_read;
+      attr->u.str = read_alt_indirect_string (unit, &info_ptr, info_ptr_end);
+      break;
+    case DW_FORM_strx1:
+      attr->u.val = read_1_byte (abfd, &info_ptr, info_ptr_end);
+      /* dwarf_str_offset value 0 indicates the attribute DW_AT_str_offsets_base
+	 is not yet read.  */
+      if (unit->dwarf_str_offset != 0)
+	attr->u.str = (char *) read_indexed_string (attr->u.val, unit);
+      else
+	attr->u.str = NULL;
+      break;
+    case DW_FORM_strx2:
+      attr->u.val = read_2_bytes (abfd, &info_ptr, info_ptr_end);
+      if (unit->dwarf_str_offset != 0)
+	attr->u.str = (char *) read_indexed_string (attr->u.val, unit);
+      else
+	attr->u.str = NULL;
+      break;
+    case DW_FORM_strx3:
+      attr->u.val = read_3_bytes (abfd, &info_ptr, info_ptr_end);
+      if (unit->dwarf_str_offset != 0)
+	attr->u.str = (char *) read_indexed_string (attr->u.val, unit);
+      else
+	attr->u.str = NULL;
+      break;
+    case DW_FORM_strx4:
+      attr->u.val = read_4_bytes (abfd, &info_ptr, info_ptr_end);
+      if (unit->dwarf_str_offset != 0)
+	attr->u.str = (char *) read_indexed_string (attr->u.val, unit);
+      else
+	attr->u.str = NULL;
+      break;
+    case DW_FORM_strx:
+      attr->u.val = _bfd_safe_read_leb128 (abfd, &info_ptr,
+					   false, info_ptr_end);
+      if (unit->dwarf_str_offset != 0)
+	attr->u.str = (char *) read_indexed_string (attr->u.val, unit);
+      else
+	attr->u.str = NULL;
       break;
     case DW_FORM_exprloc:
     case DW_FORM_block:
-      amt = sizeof (struct dwarf_block);
-      blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
-      if (blk == NULL)
+      amt = _bfd_safe_read_leb128 (abfd, &info_ptr,
+				   false, info_ptr_end);
+      attr->u.blk = read_blk (abfd, &info_ptr, info_ptr_end, amt);
+      if (attr->u.blk == NULL)
 	return NULL;
-      blk->size = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-					 FALSE, info_ptr_end);
-      info_ptr += bytes_read;
-      info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
-      attr->u.blk = blk;
       break;
     case DW_FORM_block1:
-      amt = sizeof (struct dwarf_block);
-      blk = (struct dwarf_block *) bfd_alloc (abfd, amt);
-      if (blk == NULL)
+      amt = read_1_byte (abfd, &info_ptr, info_ptr_end);
+      attr->u.blk = read_blk (abfd, &info_ptr, info_ptr_end, amt);
+      if (attr->u.blk == NULL)
 	return NULL;
-      blk->size = read_1_byte (abfd, info_ptr, info_ptr_end);
-      info_ptr += 1;
-      info_ptr = read_n_bytes (info_ptr, info_ptr_end, blk);
-      attr->u.blk = blk;
-      break;
-    case DW_FORM_data1:
-      attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end);
-      info_ptr += 1;
-      break;
-    case DW_FORM_flag:
-      attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end);
-      info_ptr += 1;
-      break;
-    case DW_FORM_flag_present:
-      attr->u.val = 1;
       break;
     case DW_FORM_sdata:
-      attr->u.sval = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-					    TRUE, info_ptr_end);
-      info_ptr += bytes_read;
+      attr->u.sval = _bfd_safe_read_leb128 (abfd, &info_ptr,
+					    true, info_ptr_end);
       break;
+
+    case DW_FORM_rnglistx:
+    case DW_FORM_loclistx:
+      /* FIXME: Add support for these forms!  */
+      /* Fall through.  */
+    case DW_FORM_ref_udata:
     case DW_FORM_udata:
-      attr->u.val = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-					   FALSE, info_ptr_end);
-      info_ptr += bytes_read;
+      attr->u.val = _bfd_safe_read_leb128 (abfd, &info_ptr,
+					   false, info_ptr_end);
       break;
-    case DW_FORM_ref1:
-      attr->u.val = read_1_byte (abfd, info_ptr, info_ptr_end);
-      info_ptr += 1;
-      break;
-    case DW_FORM_ref2:
-      attr->u.val = read_2_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 2;
-      break;
-    case DW_FORM_ref4:
-      attr->u.val = read_4_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 4;
-      break;
-    case DW_FORM_ref8:
-      attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 8;
-      break;
-    case DW_FORM_ref_sig8:
-      attr->u.val = read_8_bytes (abfd, info_ptr, info_ptr_end);
-      info_ptr += 8;
-      break;
-    case DW_FORM_ref_udata:
-      attr->u.val = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-					   FALSE, info_ptr_end);
-      info_ptr += bytes_read;
+    case DW_FORM_addrx:
+      attr->u.val = _bfd_safe_read_leb128 (abfd, &info_ptr,
+					   false, info_ptr_end);
+      if (unit->dwarf_addr_offset != 0)
+	attr->u.val = read_indexed_address (attr->u.val, unit);
       break;
     case DW_FORM_indirect:
-      form = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-				    FALSE, info_ptr_end);
-      info_ptr += bytes_read;
+      form = _bfd_safe_read_leb128 (abfd, &info_ptr,
+				    false, info_ptr_end);
       if (form == DW_FORM_implicit_const)
-	{
-	  implicit_const = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-						  TRUE, info_ptr_end);
-	  info_ptr += bytes_read;
-	}
+	implicit_const = _bfd_safe_read_leb128 (abfd, &info_ptr,
+						true, info_ptr_end);
       info_ptr = read_attribute_value (attr, form, implicit_const, unit,
 				       info_ptr, info_ptr_end);
       break;
@@ -1329,6 +1681,14 @@ 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.  */
+      attr->u.blk = read_blk (abfd, &info_ptr, info_ptr_end, 16);
+      if (attr->u.blk == NULL)
+	return NULL;
+      break;
+
     default:
       _bfd_error_handler (_("DWARF error: invalid or unhandled FORM value: %#x"),
 			  form);
@@ -1353,30 +1713,62 @@ read_attribute (struct attribute *    at
   return info_ptr;
 }
 
-/* Return whether DW_AT_name will return the same as DW_AT_linkage_name
-   for a function.  */
+/* Return mangling style given LANG.  */
 
-static bfd_boolean
-non_mangled (int lang)
+static int
+mangle_style (int lang)
 {
   switch (lang)
     {
+    case DW_LANG_Ada83:
+    case DW_LANG_Ada95:
+    case DW_LANG_Ada2005:
+    case DW_LANG_Ada2012:
+      return DMGL_GNAT;
+
+    case DW_LANG_C_plus_plus:
+    case DW_LANG_C_plus_plus_03:
+    case DW_LANG_C_plus_plus_11:
+    case DW_LANG_C_plus_plus_14:
+    case DW_LANG_C_plus_plus_17:
+    case DW_LANG_C_plus_plus_20:
+    case DW_LANG_C_plus_plus_23:
+      return DMGL_GNU_V3;
+
+    case DW_LANG_Java:
+      return DMGL_JAVA;
+
+    case DW_LANG_D:
+      return DMGL_DLANG;
+
+    case DW_LANG_Rust:
+    case DW_LANG_Rust_old:
+      return DMGL_RUST;
+
     default:
-      return FALSE;
+      return DMGL_AUTO;
 
     case DW_LANG_C89:
     case DW_LANG_C:
-    case DW_LANG_Ada83:
     case DW_LANG_Cobol74:
     case DW_LANG_Cobol85:
     case DW_LANG_Fortran77:
+    case DW_LANG_Fortran18:
+    case DW_LANG_Fortran23:
     case DW_LANG_Pascal83:
-    case DW_LANG_C99:
-    case DW_LANG_Ada95:
     case DW_LANG_PLI:
+    case DW_LANG_C99:
     case DW_LANG_UPC:
     case DW_LANG_C11:
-      return TRUE;
+    case DW_LANG_C17:
+    case DW_LANG_C23:
+    case DW_LANG_Mips_Assembler:
+    case DW_LANG_Assembly:
+    case DW_LANG_Upc:
+    case DW_LANG_HP_Basic91:
+    case DW_LANG_HP_IMacro:
+    case DW_LANG_HP_Assembler:
+      return 0;
     }
 }
 
@@ -1420,6 +1812,7 @@ struct line_info_table
   unsigned int		num_files;
   unsigned int		num_dirs;
   unsigned int		num_sequences;
+  bool                  use_dir_and_file_0;
   char *		comp_dir;
   char **		dirs;
   struct fileinfo*	files;
@@ -1435,61 +1828,64 @@ struct line_info_table
 struct funcinfo
 {
   /* Pointer to previous function in list of all functions.  */
-  struct funcinfo *	prev_func;
+  struct funcinfo *prev_func;
   /* Pointer to function one scope higher.  */
-  struct funcinfo *	caller_func;
+  struct funcinfo *caller_func;
   /* Source location file name where caller_func inlines this func.  */
-  char *		caller_file;
+  char *caller_file;
   /* Source location file name.  */
-  char *		file;
+  char *file;
   /* Source location line number where caller_func inlines this func.  */
-  int			caller_line;
+  int caller_line;
   /* Source location line number.  */
-  int			line;
-  int			tag;
-  bfd_boolean		is_linkage;
-  const char *		name;
-  struct arange		arange;
-  /* Where the symbol is defined.  */
-  asection *		sec;
+  int line;
+  int tag;
+  bool is_linkage;
+  const char *name;
+  struct arange arange;
+  /* The offset of the funcinfo from the start of the unit.  */
+  uint64_t unit_offset;
 };
 
 struct lookup_funcinfo
 {
   /* Function information corresponding to this lookup table entry.  */
-  struct funcinfo *	funcinfo;
+  struct funcinfo *funcinfo;
 
   /* The lowest address for this specific function.  */
-  bfd_vma		low_addr;
+  bfd_vma low_addr;
 
   /* The highest address of this function before the lookup table is sorted.
      The highest address of all prior functions after the lookup table is
      sorted, which is used for binary search.  */
-  bfd_vma		high_addr;
+  bfd_vma high_addr;
   /* Index of this function, used to ensure qsort is stable.  */
   unsigned int idx;
 };
 
 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.  */
+  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;
-  char *name;
+  /* The name of the variable, if it has one.  */
+  const char *name;
+  /* The address of the variable.  */
   bfd_vma addr;
-  /* Where the symbol is defined */
-  asection *sec;
-  /* Is this a stack variable? */
-  unsigned int stack: 1;
+  /* Is this a stack variable?  */
+  bool stack;
 };
 
 /* Return TRUE if NEW_LINE should sort after LINE.  */
 
-static inline bfd_boolean
+static inline bool
 new_line_sorts_after (struct line_info *new_line, struct line_info *line)
 {
   return (new_line->address > line->address
@@ -1503,7 +1899,7 @@ new_line_sorts_after (struct line_info *
    highest to lowest VMA (with possible duplicates); that is,
    line_info->prev_line always accesses an equal or smaller VMA.  */
 
-static bfd_boolean
+static bool
 add_line_info (struct line_info_table *table,
 	       bfd_vma address,
 	       unsigned char op_index,
@@ -1513,12 +1909,12 @@ 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);
 
   if (info == NULL)
-    return FALSE;
+    return false;
 
   /* Set member data of 'info'.  */
   info->prev_line = NULL;
@@ -1533,7 +1929,7 @@ add_line_info (struct line_info_table *t
     {
       info->filename = (char *) bfd_alloc (table->abfd, strlen (filename) + 1);
       if (info->filename == NULL)
-	return FALSE;
+	return false;
       strcpy (info->filename, filename);
     }
   else
@@ -1572,7 +1968,7 @@ add_line_info (struct line_info_table *t
       amt = sizeof (struct line_sequence);
       seq = (struct line_sequence *) bfd_malloc (amt);
       if (seq == NULL)
-	return FALSE;
+	return false;
       seq->low_pc = address;
       seq->prev_sequence = table->sequences;
       seq->last_line = info;
@@ -1621,7 +2017,7 @@ add_line_info (struct line_info_table *t
       if (address < seq->low_pc)
 	seq->low_pc = address;
     }
-  return TRUE;
+  return true;
 }
 
 /* Extract a fully qualified filename from a line info table.
@@ -1633,16 +2029,30 @@ concat_filename (struct line_info_table
 {
   char *filename;
 
-  if (table == NULL || file - 1 >= table->num_files)
+  /* Pre DWARF-5 entry 0 in the directory and filename tables was not used.
+     So in order to save space in the tables used here the info for, eg
+     directory 1 is stored in slot 0 of the directory table, directory 2
+     in slot 1 and so on.
+
+     Starting with DWARF-5 the 0'th entry is used so there is a one to one
+     mapping between DWARF slots and internal table entries.  */
+  if (! table->use_dir_and_file_0)
+    {
+      /* Pre DWARF-5, FILE == 0 means unknown.  */
+      if (file == 0)
+	return strdup ("<unknown>");
+      -- file;
+    }
+
+  if (table == NULL || file >= table->num_files)
     {
-      /* FILE == 0 means unknown.  */
-      if (file)
-	_bfd_error_handler
-	  (_("DWARF error: mangled line number section (bad file number)"));
+      _bfd_error_handler
+	(_("DWARF error: mangled line number section (bad file number)"));
       return strdup ("<unknown>");
     }
 
-  filename = table->files[file - 1].name;
+  filename = table->files[file].name;
+
   if (filename == NULL)
     return strdup ("<unknown>");
 
@@ -1652,13 +2062,16 @@ concat_filename (struct line_info_table
       char *subdir_name = NULL;
       char *name;
       size_t len;
+      unsigned int dir = table->files[file].dir;
 
-      if (table->files[file - 1].dir
-	  /* PR 17512: file: 0317e960.  */
-	  && table->files[file - 1].dir <= table->num_dirs
-	  /* PR 17512: file: 7f3d2e4b.  */
-	  && table->dirs != NULL)
-	subdir_name = table->dirs[table->files[file - 1].dir - 1];
+      if (!table->use_dir_and_file_0)
+	--dir;
+      /* Wrapping from 0 to -1u above gives the intended result with
+	 the test below of leaving subdir_name NULL for pre-DWARF5 dir
+	 of 0.  */
+      /* PR 17512: file: 0317e960, file: 7f3d2e4b.  */
+      if (dir < table->num_dirs)
+	subdir_name = table->dirs[dir];
 
       if (!subdir_name || !IS_ABSOLUTE_PATH (subdir_name))
 	dir_name = table->comp_dir;
@@ -1694,22 +2107,239 @@ concat_filename (struct line_info_table
   return strdup (filename);
 }
 
-static bfd_boolean
-arange_add (const struct comp_unit *unit, struct arange *first_arange,
-	    bfd_vma low_pc, bfd_vma high_pc)
+/* Number of bits in a bfd_vma.  */
+#define VMA_BITS (8 * sizeof (bfd_vma))
+
+/* Check whether [low1, high1) can be combined with [low2, high2),
+   i.e., they touch or overlap.  */
+
+static bool
+ranges_overlap (bfd_vma low1,
+		bfd_vma high1,
+		bfd_vma low2,
+		bfd_vma high2)
+{
+  if (low1 == low2 || high1 == high2)
+    return true;
+
+  /* Sort so that low1 is below low2. */
+  if (low1 > low2)
+    {
+      bfd_vma tmp;
+
+      tmp = low1;
+      low1 = low2;
+      low2 = tmp;
+
+      tmp = high1;
+      high1 = high2;
+      high2 = tmp;
+    }
+
+  /* We touch iff low2 == high1.
+     We overlap iff low2 is within [low1, high1). */
+  return low2 <= high1;
+}
+
+/* Insert an address range in the trie mapping addresses to compilation units.
+   Will return the new trie node (usually the same as is being sent in, but
+   in case of a leaf-to-interior conversion, or expansion of a leaf, it may be
+   different), or NULL on failure.  */
+
+static struct trie_node *
+insert_arange_in_trie (bfd *abfd,
+		       struct trie_node *trie,
+		       bfd_vma trie_pc,
+		       unsigned int trie_pc_bits,
+		       struct comp_unit *unit,
+		       bfd_vma low_pc,
+		       bfd_vma high_pc)
+{
+  bfd_vma clamped_low_pc, clamped_high_pc;
+  int ch, from_ch, to_ch;
+  bool is_full_leaf = false;
+  bool splitting_leaf_will_help = false;
+
+  /* See if we can extend any of the existing ranges.  This merging
+     isn't perfect (if merging opens up the possibility of merging two existing
+     ranges, we won't find them), but it takes the majority of the cases.  */
+  if (trie->num_room_in_leaf > 0)
+    {
+      struct trie_leaf *leaf = (struct trie_leaf *) trie;
+      unsigned int i;
+
+      for (i = 0; i < leaf->num_stored_in_leaf; ++i)
+	{
+	  if (leaf->ranges[i].unit == unit
+	      && ranges_overlap (low_pc, high_pc,
+				 leaf->ranges[i].low_pc,
+				 leaf->ranges[i].high_pc))
+	    {
+	      if (low_pc < leaf->ranges[i].low_pc)
+		leaf->ranges[i].low_pc = low_pc;
+	      if (high_pc > leaf->ranges[i].high_pc)
+		leaf->ranges[i].high_pc = high_pc;
+	      return trie;
+	    }
+	}
+
+      is_full_leaf = leaf->num_stored_in_leaf == trie->num_room_in_leaf;
+
+      if (is_full_leaf && trie_pc_bits < VMA_BITS)
+	{
+	  /* See if we have at least one leaf that does _not_ cover the
+	     entire bucket, so that splitting will actually reduce the number
+	     of elements in at least one of the child nodes.  (For simplicity,
+	     we don't test the range we're inserting, but it will be counted
+	     on the next insertion where we're full, if any.)   */
+	  bfd_vma bucket_high_pc =
+	    trie_pc + ((bfd_vma) -1 >> trie_pc_bits);  /* Inclusive.  */
+	  for (i = 0; i < leaf->num_stored_in_leaf; ++i)
+	    {
+	      if (leaf->ranges[i].low_pc > trie_pc
+		  || leaf->ranges[i].high_pc <= bucket_high_pc)
+		{
+		  splitting_leaf_will_help = true;
+		  break;
+		}
+	    }
+	}
+    }
+
+  /* If we're a leaf with no more room and we're _not_ at the bottom,
+     convert to an interior node.  */
+  if (is_full_leaf && splitting_leaf_will_help)
+    {
+      const struct trie_leaf *leaf = (struct trie_leaf *) trie;
+      unsigned int i;
+
+      trie = bfd_zalloc (abfd, sizeof (struct trie_interior));
+      if (!trie)
+	return NULL;
+      is_full_leaf = false;
+
+      /* TODO: If we wanted to save a little more memory at the cost of
+	 complexity, we could have reused the old leaf node as one of the
+	 children of the new interior node, instead of throwing it away.  */
+      for (i = 0; i < leaf->num_stored_in_leaf; ++i)
+        {
+	  if (!insert_arange_in_trie (abfd, trie, trie_pc, trie_pc_bits,
+				      leaf->ranges[i].unit, leaf->ranges[i].low_pc,
+				      leaf->ranges[i].high_pc))
+	    return NULL;
+	}
+    }
+
+  /* If we're a leaf with no more room and we _are_ at the bottom
+     (or splitting it won't help), we have no choice but to just
+     make it larger.  */
+  if (is_full_leaf)
+    {
+      const struct trie_leaf *leaf = (struct trie_leaf *) trie;
+      unsigned int new_room_in_leaf = trie->num_room_in_leaf * 2;
+      struct trie_leaf *new_leaf;
+      size_t amt = sizeof (*leaf) + new_room_in_leaf * sizeof (leaf->ranges[0]);
+      new_leaf = bfd_zalloc (abfd, amt);
+      new_leaf->head.num_room_in_leaf = new_room_in_leaf;
+      new_leaf->num_stored_in_leaf = leaf->num_stored_in_leaf;
+
+      memcpy (new_leaf->ranges,
+	      leaf->ranges,
+	      leaf->num_stored_in_leaf * sizeof (leaf->ranges[0]));
+      trie = &new_leaf->head;
+      is_full_leaf = false;
+
+      /* Now the insert below will go through.  */
+    }
+
+  /* If we're a leaf (now with room), we can just insert at the end.  */
+  if (trie->num_room_in_leaf > 0)
+    {
+      struct trie_leaf *leaf = (struct trie_leaf *) trie;
+
+      unsigned int i = leaf->num_stored_in_leaf++;
+      leaf->ranges[i].unit = unit;
+      leaf->ranges[i].low_pc = low_pc;
+      leaf->ranges[i].high_pc = high_pc;
+      return trie;
+    }
+
+  /* Now we are definitely an interior node, so recurse into all
+     the relevant buckets.  */
+
+  /* Clamp the range to the current trie bucket.  */
+  clamped_low_pc = low_pc;
+  clamped_high_pc = high_pc;
+  if (trie_pc_bits > 0)
+    {
+      bfd_vma bucket_high_pc =
+	trie_pc + ((bfd_vma) -1 >> trie_pc_bits);  /* Inclusive.  */
+      if (clamped_low_pc < trie_pc)
+	clamped_low_pc = trie_pc;
+      if (clamped_high_pc > bucket_high_pc)
+	clamped_high_pc = bucket_high_pc;
+    }
+
+  /* Insert the ranges in all buckets that it spans.  */
+  from_ch = (clamped_low_pc >> (VMA_BITS - trie_pc_bits - 8)) & 0xff;
+  to_ch = ((clamped_high_pc - 1) >> (VMA_BITS - trie_pc_bits - 8)) & 0xff;
+  for (ch = from_ch; ch <= to_ch; ++ch)
+    {
+      struct trie_interior *interior = (struct trie_interior *) trie;
+      struct trie_node *child = interior->children[ch];
+
+      if (child == NULL)
+        {
+	  child = alloc_trie_leaf (abfd);
+	  if (!child)
+	    return NULL;
+	}
+      bfd_vma bucket = (bfd_vma) ch << (VMA_BITS - trie_pc_bits - 8);
+      child = insert_arange_in_trie (abfd,
+				     child,
+				     trie_pc + bucket,
+				     trie_pc_bits + 8,
+				     unit,
+				     low_pc,
+				     high_pc);
+      if (!child)
+	return NULL;
+
+      interior->children[ch] = child;
+    }
+
+    return trie;
+}
+
+static bool
+arange_add (struct comp_unit *unit, struct arange *first_arange,
+	    struct trie_node **trie_root, bfd_vma low_pc, bfd_vma high_pc)
 {
   struct arange *arange;
 
   /* Ignore empty ranges.  */
   if (low_pc == high_pc)
-    return TRUE;
+    return true;
+
+  if (trie_root != NULL)
+    {
+      *trie_root = insert_arange_in_trie (unit->file->bfd_ptr,
+					  *trie_root,
+					  0,
+					  0,
+					  unit,
+					  low_pc,
+					  high_pc);
+      if (*trie_root == NULL)
+	return false;
+    }
 
   /* If the first arange is empty, use it.  */
   if (first_arange->high == 0)
     {
       first_arange->low = low_pc;
       first_arange->high = high_pc;
-      return TRUE;
+      return true;
     }
 
   /* Next see if we can cheaply extend an existing range.  */
@@ -1719,12 +2349,12 @@ arange_add (const struct comp_unit *unit
       if (low_pc == arange->high)
 	{
 	  arange->high = high_pc;
-	  return TRUE;
+	  return true;
 	}
       if (high_pc == arange->low)
 	{
 	  arange->low = low_pc;
-	  return TRUE;
+	  return true;
 	}
       arange = arange->next;
     }
@@ -1734,12 +2364,12 @@ arange_add (const struct comp_unit *unit
      Order isn't significant, so just insert after the first arange.  */
   arange = (struct arange *) bfd_alloc (unit->abfd, sizeof (*arange));
   if (arange == NULL)
-    return FALSE;
+    return false;
   arange->low = low_pc;
   arange->high = high_pc;
   arange->next = first_arange->next;
   first_arange->next = arange;
-  return TRUE;
+  return true;
 }
 
 /* Compare function for line sequences.  */
@@ -1778,18 +2408,18 @@ compare_sequences (const void* a, const
 
 /* Construct the line information table for quick lookup.  */
 
-static bfd_boolean
+static bool
 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;
+    return true;
 
   /* Count the number of line information entries.  We could do this while
      scanning the debug information, but some entries may be added via
@@ -1801,14 +2431,14 @@ build_line_info_table (struct line_info_
 
   seq->num_lines = num_lines;
   if (num_lines == 0)
-    return TRUE;
+    return true;
 
   /* Allocate space for the line information lookup table.  */
   amt = sizeof (struct line_info*) * num_lines;
   line_info_lookup = (struct line_info**) bfd_alloc (table->abfd, amt);
   seq->line_info_lookup = line_info_lookup;
   if (line_info_lookup == NULL)
-    return FALSE;
+    return false;
 
   /* Create the line information lookup table.  */
   line_index = num_lines;
@@ -1816,29 +2446,29 @@ build_line_info_table (struct line_info_
     line_info_lookup[--line_index] = each_line;
 
   BFD_ASSERT (line_index == 0);
-  return TRUE;
+  return true;
 }
 
 /* Sort the line sequences for quick lookup.  */
 
-static bfd_boolean
+static bool
 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;
+    return true;
 
   /* Allocate space for an array of sequences.  */
   amt = sizeof (struct line_sequence) * num_sequences;
   sequences = (struct line_sequence *) bfd_alloc (table->abfd, amt);
   if (sequences == NULL)
-    return FALSE;
+    return false;
 
   /* Copy the linked list into the array, freeing the original nodes.  */
   seq = table->sequences;
@@ -1886,33 +2516,33 @@ sort_line_sequences (struct line_info_ta
 
   table->sequences = sequences;
   table->num_sequences = num_sequences;
-  return TRUE;
+  return true;
 }
 
 /* Add directory to TABLE.  CUR_DIR memory ownership is taken by TABLE.  */
 
-static bfd_boolean
+static bool
 line_info_add_include_dir (struct line_info_table *table, char *cur_dir)
 {
   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 *);
 
       tmp = (char **) bfd_realloc (table->dirs, amt);
       if (tmp == NULL)
-	return FALSE;
+	return false;
       table->dirs = tmp;
     }
 
   table->dirs[table->num_dirs++] = cur_dir;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 line_info_add_include_dir_stub (struct line_info_table *table, char *cur_dir,
 				unsigned int dir ATTRIBUTE_UNUSED,
 				unsigned int xtime ATTRIBUTE_UNUSED,
@@ -1923,7 +2553,7 @@ line_info_add_include_dir_stub (struct l
 
 /* Add file to TABLE.  CUR_FILE memory ownership is taken by TABLE.  */
 
-static bfd_boolean
+static bool
 line_info_add_file_name (struct line_info_table *table, char *cur_file,
 			 unsigned int dir, unsigned int xtime,
 			 unsigned int size)
@@ -1931,14 +2561,14 @@ 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);
 
       tmp = (struct fileinfo *) bfd_realloc (table->files, amt);
       if (tmp == NULL)
-	return FALSE;
+	return false;
       table->files = tmp;
     }
 
@@ -1947,7 +2577,7 @@ line_info_add_file_name (struct line_inf
   table->files[table->num_files].time = xtime;
   table->files[table->num_files].size = size;
   table->num_files++;
-  return TRUE;
+  return true;
 }
 
 /* Read directory or file name entry format, starting with byte of
@@ -1955,40 +2585,35 @@ line_info_add_file_name (struct line_inf
    entries count and the entries themselves in the described entry
    format.  */
 
-static bfd_boolean
+static bool
 read_formatted_entries (struct comp_unit *unit, bfd_byte **bufp,
 			bfd_byte *buf_end, struct line_info_table *table,
-			bfd_boolean (*callback) (struct line_info_table *table,
-						 char *cur_file,
-						 unsigned int dir,
-						 unsigned int time,
-						 unsigned int size))
+			bool (*callback) (struct line_info_table *table,
+					  char *cur_file,
+					  unsigned int dir,
+					  unsigned int time,
+					  unsigned int size))
 {
   bfd *abfd = unit->abfd;
   bfd_byte format_count, formati;
   bfd_vma data_count, datai;
   bfd_byte *buf = *bufp;
   bfd_byte *format_header_data;
-  unsigned int bytes_read;
 
-  format_count = read_1_byte (abfd, buf, buf_end);
-  buf += 1;
+  format_count = read_1_byte (abfd, &buf, buf_end);
   format_header_data = buf;
   for (formati = 0; formati < format_count; formati++)
     {
-      _bfd_safe_read_leb128 (abfd, buf, &bytes_read, FALSE, buf_end);
-      buf += bytes_read;
-      _bfd_safe_read_leb128 (abfd, buf, &bytes_read, FALSE, buf_end);
-      buf += bytes_read;
+      _bfd_safe_read_leb128 (abfd, &buf, false, buf_end);
+      _bfd_safe_read_leb128 (abfd, &buf, false, buf_end);
     }
 
-  data_count = _bfd_safe_read_leb128 (abfd, buf, &bytes_read, FALSE, buf_end);
-  buf += bytes_read;
+  data_count = _bfd_safe_read_leb128 (abfd, &buf, false, buf_end);
   if (format_count == 0 && data_count != 0)
     {
       _bfd_error_handler (_("DWARF error: zero format count"));
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* PR 22210.  Paranoia check.  Don't bother running the loop
@@ -1999,7 +2624,7 @@ read_formatted_entries (struct comp_unit
 	(_("DWARF error: data count (%" PRIx64 ") larger than buffer size"),
 	 (uint64_t) data_count);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   for (datai = 0; datai < data_count; datai++)
@@ -2016,9 +2641,7 @@ read_formatted_entries (struct comp_unit
 	  unsigned int uint_trash, *uintp = &uint_trash;
 	  struct attribute attr;
 
-	  content_type = _bfd_safe_read_leb128 (abfd, format, &bytes_read,
-						FALSE, buf_end);
-	  format += bytes_read;
+	  content_type = _bfd_safe_read_leb128 (abfd, &format, false, buf_end);
 	  switch (content_type)
 	    {
 	    case DW_LNCT_path:
@@ -2040,20 +2663,22 @@ read_formatted_entries (struct comp_unit
 		(_("DWARF error: unknown format content type %" PRIu64),
 		 (uint64_t) content_type);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
-	  form = _bfd_safe_read_leb128 (abfd, format, &bytes_read, FALSE,
-					buf_end);
-	  format += bytes_read;
-
+	  form = _bfd_safe_read_leb128 (abfd, &format, false, buf_end);
 	  buf = read_attribute_value (&attr, form, 0, unit, buf, buf_end);
 	  if (buf == NULL)
-	    return FALSE;
+	    return false;
 	  switch (form)
 	    {
 	    case DW_FORM_string:
 	    case DW_FORM_line_strp:
+	    case DW_FORM_strx:
+	    case DW_FORM_strx1:
+	    case DW_FORM_strx2:
+	    case DW_FORM_strx3:
+	    case DW_FORM_strx4:
 	      *stringp = attr.u.str;
 	      break;
 
@@ -2064,15 +2689,19 @@ 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;
+	return false;
     }
 
   *bufp = buf;
-  return TRUE;
+  return true;
 }
 
 /* Decode the line number information for UNIT.  */
@@ -2087,11 +2716,11 @@ decode_line_info (struct comp_unit *unit
   bfd_byte *line_ptr;
   bfd_byte *line_end;
   struct line_head lh;
-  unsigned int i, bytes_read, offset_size;
+  unsigned int i, offset_size;
   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;
@@ -2113,20 +2742,17 @@ decode_line_info (struct comp_unit *unit
   line_end = file->dwarf_line_buffer + file->dwarf_line_size;
 
   /* Read in the prologue.  */
-  lh.total_length = read_4_bytes (abfd, line_ptr, line_end);
-  line_ptr += 4;
+  lh.total_length = read_4_bytes (abfd, &line_ptr, line_end);
   offset_size = 4;
   if (lh.total_length == 0xffffffff)
     {
-      lh.total_length = read_8_bytes (abfd, line_ptr, line_end);
-      line_ptr += 8;
+      lh.total_length = read_8_bytes (abfd, &line_ptr, line_end);
       offset_size = 8;
     }
   else if (lh.total_length == 0 && unit->addr_size == 8)
     {
       /* Handle (non-standard) 64-bit DWARF2 formats.  */
-      lh.total_length = read_4_bytes (abfd, line_ptr, line_end);
-      line_ptr += 4;
+      lh.total_length = read_4_bytes (abfd, &line_ptr, line_end);
       offset_size = 8;
     }
 
@@ -2143,7 +2769,7 @@ decode_line_info (struct comp_unit *unit
 
   line_end = line_ptr + lh.total_length;
 
-  lh.version = read_2_bytes (abfd, line_ptr, line_end);
+  lh.version = read_2_bytes (abfd, &line_ptr, line_end);
   if (lh.version < 2 || lh.version > 5)
     {
       _bfd_error_handler
@@ -2151,7 +2777,6 @@ decode_line_info (struct comp_unit *unit
       bfd_set_error (bfd_error_bad_value);
       return NULL;
     }
-  line_ptr += 2;
 
   if (line_ptr + offset_size + (lh.version >= 5 ? 8 : (lh.version >= 4 ? 6 : 5))
       >= line_end)
@@ -2167,11 +2792,9 @@ decode_line_info (struct comp_unit *unit
       unsigned int segment_selector_size;
 
       /* Skip address size.  */
-      read_1_byte (abfd, line_ptr, line_end);
-      line_ptr += 1;
+      read_1_byte (abfd, &line_ptr, line_end);
 
-      segment_selector_size = read_1_byte (abfd, line_ptr, line_end);
-      line_ptr += 1;
+      segment_selector_size = read_1_byte (abfd, &line_ptr, line_end);
       if (segment_selector_size != 0)
 	{
 	  _bfd_error_handler
@@ -2183,19 +2806,14 @@ decode_line_info (struct comp_unit *unit
     }
 
   if (offset_size == 4)
-    lh.prologue_length = read_4_bytes (abfd, line_ptr, line_end);
+    lh.prologue_length = read_4_bytes (abfd, &line_ptr, line_end);
   else
-    lh.prologue_length = read_8_bytes (abfd, line_ptr, line_end);
-  line_ptr += offset_size;
+    lh.prologue_length = read_8_bytes (abfd, &line_ptr, line_end);
 
-  lh.minimum_instruction_length = read_1_byte (abfd, line_ptr, line_end);
-  line_ptr += 1;
+  lh.minimum_instruction_length = read_1_byte (abfd, &line_ptr, line_end);
 
   if (lh.version >= 4)
-    {
-      lh.maximum_ops_per_insn = read_1_byte (abfd, line_ptr, line_end);
-      line_ptr += 1;
-    }
+    lh.maximum_ops_per_insn = read_1_byte (abfd, &line_ptr, line_end);
   else
     lh.maximum_ops_per_insn = 1;
 
@@ -2207,17 +2825,10 @@ decode_line_info (struct comp_unit *unit
       return NULL;
     }
 
-  lh.default_is_stmt = read_1_byte (abfd, line_ptr, line_end);
-  line_ptr += 1;
-
-  lh.line_base = read_1_signed_byte (abfd, line_ptr, line_end);
-  line_ptr += 1;
-
-  lh.line_range = read_1_byte (abfd, line_ptr, line_end);
-  line_ptr += 1;
-
-  lh.opcode_base = read_1_byte (abfd, line_ptr, line_end);
-  line_ptr += 1;
+  lh.default_is_stmt = read_1_byte (abfd, &line_ptr, line_end);
+  lh.line_base = read_1_signed_byte (abfd, &line_ptr, line_end);
+  lh.line_range = read_1_byte (abfd, &line_ptr, line_end);
+  lh.opcode_base = read_1_byte (abfd, &line_ptr, line_end);
 
   if (line_ptr + (lh.opcode_base - 1) >= line_end)
     {
@@ -2232,10 +2843,7 @@ decode_line_info (struct comp_unit *unit
   lh.standard_opcode_lengths[0] = 1;
 
   for (i = 1; i < lh.opcode_base; ++i)
-    {
-      lh.standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr, line_end);
-      line_ptr += 1;
-    }
+    lh.standard_opcode_lengths[i] = read_1_byte (abfd, &line_ptr, line_end);
 
   amt = sizeof (struct line_info_table);
   table = (struct line_info_table *) bfd_alloc (abfd, amt);
@@ -2266,39 +2874,30 @@ decode_line_info (struct comp_unit *unit
       if (!read_formatted_entries (unit, &line_ptr, line_end, table,
 				   line_info_add_file_name))
 	goto fail;
+      table->use_dir_and_file_0 = true;
     }
   else
     {
       /* Read directory table.  */
-      while ((cur_dir = read_string (abfd, line_ptr, line_end, &bytes_read)) != NULL)
+      while ((cur_dir = read_string (&line_ptr, line_end)) != NULL)
 	{
-	  line_ptr += bytes_read;
-
 	  if (!line_info_add_include_dir (table, cur_dir))
 	    goto fail;
 	}
 
-      line_ptr += bytes_read;
-
       /* Read file name table.  */
-      while ((cur_file = read_string (abfd, line_ptr, line_end, &bytes_read)) != NULL)
+      while ((cur_file = read_string (&line_ptr, line_end)) != NULL)
 	{
 	  unsigned int dir, xtime, size;
 
-	  line_ptr += bytes_read;
-
-	  dir = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end);
-	  line_ptr += bytes_read;
-	  xtime = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end);
-	  line_ptr += bytes_read;
-	  size = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read, FALSE, line_end);
-	  line_ptr += bytes_read;
+	  dir = _bfd_safe_read_leb128 (abfd, &line_ptr, false, line_end);
+	  xtime = _bfd_safe_read_leb128 (abfd, &line_ptr, false, line_end);
+	  size = _bfd_safe_read_leb128 (abfd, &line_ptr, false, line_end);
 
 	  if (!line_info_add_file_name (table, cur_file, dir, xtime, size))
 	    goto fail;
 	}
-
-      line_ptr += bytes_read;
+      table->use_dir_and_file_0 = false;
     }
 
   /* Read the statement sequences until there's nothing left.  */
@@ -2307,7 +2906,7 @@ decode_line_info (struct comp_unit *unit
       /* State machine registers.  */
       bfd_vma address = 0;
       unsigned char op_index = 0;
-      char * filename = table->num_files ? concat_filename (table, 1) : NULL;
+      char * filename = NULL;
       unsigned int line = 1;
       unsigned int column = 0;
       unsigned int discriminator = 0;
@@ -2322,11 +2921,17 @@ decode_line_info (struct comp_unit *unit
       bfd_vma low_pc  = (bfd_vma) -1;
       bfd_vma high_pc = 0;
 
+      if (table->num_files)
+	{
+	  /* PR 30783: Always start with a file index of 1, even
+	     for DWARF-5.  */
+	  filename = concat_filename (table, 1);
+	}
+
       /* Decode the table.  */
       while (!end_sequence && line_ptr < line_end)
 	{
-	  op_code = read_1_byte (abfd, line_ptr, line_end);
-	  line_ptr += 1;
+	  op_code = read_1_byte (abfd, &line_ptr, line_end);
 
 	  if (op_code >= lh.opcode_base)
 	    {
@@ -2359,11 +2964,9 @@ decode_line_info (struct comp_unit *unit
 	  else switch (op_code)
 	    {
 	    case DW_LNS_extended_op:
-	      exop_len = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-						FALSE, line_end);
-	      line_ptr += bytes_read;
-	      extended_op = read_1_byte (abfd, line_ptr, line_end);
-	      line_ptr += 1;
+	      exop_len = _bfd_safe_read_leb128 (abfd, &line_ptr,
+						false, line_end);
+	      extended_op = read_1_byte (abfd, &line_ptr, line_end);
 
 	      switch (extended_op)
 		{
@@ -2377,35 +2980,29 @@ decode_line_info (struct comp_unit *unit
 		    low_pc = address;
 		  if (address > high_pc)
 		    high_pc = address;
-		  if (!arange_add (unit, &unit->arange, low_pc, high_pc))
+		  if (!arange_add (unit, &unit->arange, &unit->file->trie_root,
+				   low_pc, high_pc))
 		    goto line_fail;
 		  break;
 		case DW_LNE_set_address:
-		  address = read_address (unit, line_ptr, line_end);
+		  address = read_address (unit, &line_ptr, line_end);
 		  op_index = 0;
-		  line_ptr += unit->addr_size;
 		  break;
 		case DW_LNE_define_file:
-		  cur_file = read_string (abfd, line_ptr, line_end, &bytes_read);
-		  line_ptr += bytes_read;
-		  dir = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-					       FALSE, line_end);
-		  line_ptr += bytes_read;
-		  xtime = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-						 FALSE, line_end);
-		  line_ptr += bytes_read;
-		  size = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-						FALSE, line_end);
-		  line_ptr += bytes_read;
+		  cur_file = read_string (&line_ptr, line_end);
+		  dir = _bfd_safe_read_leb128 (abfd, &line_ptr,
+					       false, line_end);
+		  xtime = _bfd_safe_read_leb128 (abfd, &line_ptr,
+						 false, line_end);
+		  size = _bfd_safe_read_leb128 (abfd, &line_ptr,
+						false, line_end);
 		  if (!line_info_add_file_name (table, cur_file, dir,
 						xtime, size))
 		    goto line_fail;
 		  break;
 		case DW_LNE_set_discriminator:
-		  discriminator =
-		    _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-					   FALSE, line_end);
-		  line_ptr += bytes_read;
+		  discriminator = _bfd_safe_read_leb128 (abfd, &line_ptr,
+							 false, line_end);
 		  break;
 		case DW_LNE_HP_source_file_correlation:
 		  line_ptr += exop_len - 1;
@@ -2415,8 +3012,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;
@@ -2433,24 +3029,20 @@ decode_line_info (struct comp_unit *unit
 	    case DW_LNS_advance_pc:
 	      if (lh.maximum_ops_per_insn == 1)
 		address += (lh.minimum_instruction_length
-			    * _bfd_safe_read_leb128 (abfd, line_ptr,
-						     &bytes_read,
-						     FALSE, line_end));
+			    * _bfd_safe_read_leb128 (abfd, &line_ptr,
+						     false, line_end));
 	      else
 		{
-		  bfd_vma adjust = _bfd_safe_read_leb128 (abfd, line_ptr,
-							  &bytes_read,
-							  FALSE, line_end);
+		  bfd_vma adjust = _bfd_safe_read_leb128 (abfd, &line_ptr,
+							  false, line_end);
 		  address = ((op_index + adjust) / lh.maximum_ops_per_insn
 			     * lh.minimum_instruction_length);
 		  op_index = (op_index + adjust) % lh.maximum_ops_per_insn;
 		}
-	      line_ptr += bytes_read;
 	      break;
 	    case DW_LNS_advance_line:
-	      line += _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-					     TRUE, line_end);
-	      line_ptr += bytes_read;
+	      line += _bfd_safe_read_leb128 (abfd, &line_ptr,
+					     true, line_end);
 	      break;
 	    case DW_LNS_set_file:
 	      {
@@ -2458,18 +3050,15 @@ decode_line_info (struct comp_unit *unit
 
 		/* The file and directory tables are 0
 		   based, the references are 1 based.  */
-		filenum = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-						 FALSE, line_end);
-		line_ptr += bytes_read;
-		if (filename)
-		  free (filename);
+		filenum = _bfd_safe_read_leb128 (abfd, &line_ptr,
+						 false, line_end);
+		free (filename);
 		filename = concat_filename (table, filenum);
 		break;
 	      }
 	    case DW_LNS_set_column:
-	      column = _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-					      FALSE, line_end);
-	      line_ptr += bytes_read;
+	      column = _bfd_safe_read_leb128 (abfd, &line_ptr,
+					      false, line_end);
 	      break;
 	    case DW_LNS_negate_stmt:
 	      is_stmt = (!is_stmt);
@@ -2492,24 +3081,19 @@ decode_line_info (struct comp_unit *unit
 		}
 	      break;
 	    case DW_LNS_fixed_advance_pc:
-	      address += read_2_bytes (abfd, line_ptr, line_end);
+	      address += read_2_bytes (abfd, &line_ptr, line_end);
 	      op_index = 0;
-	      line_ptr += 2;
 	      break;
 	    default:
 	      /* Unknown standard opcode, ignore it.  */
 	      for (i = 0; i < lh.standard_opcode_lengths[op_code]; i++)
-		{
-		  (void) _bfd_safe_read_leb128 (abfd, line_ptr, &bytes_read,
-						FALSE, line_end);
-		  line_ptr += bytes_read;
-		}
+		(void) _bfd_safe_read_leb128 (abfd, &line_ptr,
+					      false, line_end);
 	      break;
 	    }
 	}
 
-      if (filename)
-	free (filename);
+      free (filename);
     }
 
   if (unit->line_offset == 0)
@@ -2524,20 +3108,17 @@ 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;
 }
 
-/* If ADDR is within TABLE set the output parameters and return the
-   range of addresses covered by the entry used to fill them out.
-   Otherwise set * FILENAME_PTR to NULL and return 0.
+/* If ADDR is within TABLE set the output parameters and return TRUE,
+   otherwise set *FILENAME_PTR to NULL and return FALSE.
    The parameters FILENAME_PTR, LINENUMBER_PTR and DISCRIMINATOR_PTR
    are pointers to the objects to be filled in.  */
 
-static bfd_vma
+static bool
 lookup_address_in_line_info_table (struct line_info_table *table,
 				   bfd_vma addr,
 				   const char **filename_ptr,
@@ -2596,17 +3177,17 @@ lookup_address_in_line_info_table (struc
       *linenumber_ptr = info->line;
       if (discriminator_ptr)
 	*discriminator_ptr = info->discriminator;
-      return seq->last_line->address - seq->low_pc;
+      return true;
     }
 
-fail:
+ fail:
   *filename_ptr = NULL;
-  return 0;
+  return false;
 }
 
 /* Read in the .debug_ranges section for future reference.  */
 
-static bfd_boolean
+static bool
 read_debug_ranges (struct comp_unit * unit)
 {
   struct dwarf2_debug *stash = unit->stash;
@@ -2617,6 +3198,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 bool
+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
@@ -2641,7 +3235,7 @@ compare_lookup_funcinfos (const void * a
   return 0;
 }
 
-static bfd_boolean
+static bool
 build_lookup_funcinfo_table (struct comp_unit * unit)
 {
   struct lookup_funcinfo *lookup_funcinfo_table = unit->lookup_funcinfo_table;
@@ -2653,13 +3247,13 @@ build_lookup_funcinfo_table (struct comp
   bfd_vma low_addr, high_addr;
 
   if (lookup_funcinfo_table || number_of_functions == 0)
-    return TRUE;
+    return true;
 
   /* Create the function info lookup table.  */
   lookup_funcinfo_table = (struct lookup_funcinfo *)
     bfd_malloc (number_of_functions * sizeof (struct lookup_funcinfo));
   if (lookup_funcinfo_table == NULL)
-    return FALSE;
+    return false;
 
   /* Populate the function info lookup table.  */
   func_index = number_of_functions;
@@ -2705,7 +3299,7 @@ build_lookup_funcinfo_table (struct comp
     }
 
   unit->lookup_funcinfo_table = lookup_funcinfo_table;
-  return TRUE;
+  return true;
 }
 
 /* If ADDR is within UNIT's function tables, set FUNCTION_PTR, and return
@@ -2713,7 +3307,7 @@ build_lookup_funcinfo_table (struct comp
    that contains ADDR, to handle inlined functions without depending upon
    them being ordered in TABLE by increasing range.  */
 
-static bfd_boolean
+static bool
 lookup_address_in_function_table (struct comp_unit *unit,
 				  bfd_vma addr,
 				  struct funcinfo **function_ptr)
@@ -2722,18 +3316,18 @@ lookup_address_in_function_table (struct
   struct lookup_funcinfo* lookup_funcinfo = NULL;
   struct funcinfo* funcinfo = NULL;
   struct funcinfo* best_fit = NULL;
-  bfd_vma best_fit_len = 0;
+  bfd_vma best_fit_len = (bfd_vma) -1;
   bfd_size_type low, high, mid, first;
   struct arange *arange;
 
   if (number_of_functions == 0)
-    return FALSE;
+    return false;
 
   if (!build_lookup_funcinfo_table (unit))
-    return FALSE;
+    return false;
 
   if (unit->lookup_funcinfo_table[number_of_functions - 1].high_addr < addr)
-    return FALSE;
+    return false;
 
   /* Find the first function in the lookup table which may contain the
      specified address.  */
@@ -2768,8 +3362,7 @@ lookup_address_in_function_table (struct
 	  if (addr < arange->low || addr >= arange->high)
 	    continue;
 
-	  if (!best_fit
-	      || arange->high - arange->low < best_fit_len
+	  if (arange->high - arange->low < best_fit_len
 	      /* The following comparison is designed to return the same
 		 match as the previous algorithm for routines which have the
 		 same best fit length.  */
@@ -2785,60 +3378,49 @@ lookup_address_in_function_table (struct
     }
 
   if (!best_fit)
-    return FALSE;
+    return false;
 
   *function_ptr = best_fit;
-  return TRUE;
+  return true;
 }
 
 /* If SYM at ADDR is within function table of UNIT, set FILENAME_PTR
    and LINENUMBER_PTR, and return TRUE.  */
 
-static bfd_boolean
+static bool
 lookup_symbol_in_function_table (struct comp_unit *unit,
 				 asymbol *sym,
 				 bfd_vma addr,
 				 const char **filename_ptr,
 				 unsigned int *linenumber_ptr)
 {
-  struct funcinfo* each_func;
+  struct funcinfo* each;
   struct funcinfo* best_fit = NULL;
-  bfd_vma best_fit_len = 0;
+  bfd_vma best_fit_len = (bfd_vma) -1;
   struct arange *arange;
   const char *name = bfd_asymbol_name (sym);
-  asection *sec = bfd_asymbol_section (sym);
 
-  for (each_func = unit->function_table;
-       each_func;
-       each_func = each_func->prev_func)
-    {
-      for (arange = &each_func->arange;
-	   arange;
-	   arange = arange->next)
+  for (each = unit->function_table; each; each = each->prev_func)
+    for (arange = &each->arange; arange; arange = arange->next)
+      if (addr >= arange->low
+	  && addr < arange->high
+	  && arange->high - arange->low < best_fit_len
+	  && each->file
+	  && each->name
+	  && strstr (name, each->name) != NULL)
 	{
-	  if ((!each_func->sec || each_func->sec == sec)
-	      && addr >= arange->low
-	      && addr < arange->high
-	      && each_func->name
-	      && strcmp (name, each_func->name) == 0
-	      && (!best_fit
-		  || arange->high - arange->low < best_fit_len))
-	    {
-	      best_fit = each_func;
-	      best_fit_len = arange->high - arange->low;
-	    }
+	  best_fit = each;
+	  best_fit_len = arange->high - arange->low;
 	}
-    }
 
   if (best_fit)
     {
-      best_fit->sec = sec;
       *filename_ptr = best_fit->file;
       *linenumber_ptr = best_fit->line;
-      return TRUE;
+      return true;
     }
-  else
-    return FALSE;
+
+  return false;
 }
 
 /* Variable table functions.  */
@@ -2846,65 +3428,61 @@ lookup_symbol_in_function_table (struct
 /* If SYM is within variable table of UNIT, set FILENAME_PTR and
    LINENUMBER_PTR, and return TRUE.  */
 
-static bfd_boolean
+static bool
 lookup_symbol_in_variable_table (struct comp_unit *unit,
 				 asymbol *sym,
 				 bfd_vma addr,
 				 const char **filename_ptr,
 				 unsigned int *linenumber_ptr)
 {
-  const char *name = bfd_asymbol_name (sym);
-  asection *sec = bfd_asymbol_section (sym);
   struct varinfo* each;
+  const char *name = bfd_asymbol_name (sym);
 
   for (each = unit->variable_table; each; each = each->prev_var)
-    if (each->stack == 0
+    if (each->addr == addr
+	&& !each->stack
 	&& each->file != NULL
 	&& each->name != NULL
-	&& each->addr == addr
-	&& (!each->sec || each->sec == sec)
-	&& strcmp (name, each->name) == 0)
+	&& strstr (name, each->name) != NULL)
       break;
 
   if (each)
     {
-      each->sec = sec;
       *filename_ptr = each->file;
       *linenumber_ptr = each->line;
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 static struct comp_unit *stash_comp_unit (struct dwarf2_debug *,
 					  struct dwarf2_debug_file *);
-static bfd_boolean comp_unit_maybe_decode_line_info (struct comp_unit *);
+static bool comp_unit_maybe_decode_line_info (struct comp_unit *);
 
-static bfd_boolean
+static bool
 find_abstract_instance (struct comp_unit *unit,
 			struct attribute *attr_ptr,
 			unsigned int recur_count,
 			const char **pname,
-			bfd_boolean *is_linkage,
+			bool *is_linkage,
 			char **filename_ptr,
 			int *linenumber_ptr)
 {
   bfd *abfd = unit->abfd;
   bfd_byte *info_ptr = NULL;
   bfd_byte *info_ptr_end;
-  unsigned int abbrev_number, bytes_read, i;
+  unsigned int abbrev_number, i;
   struct abbrev_info *abbrev;
-  bfd_uint64_t die_ref = attr_ptr->u.val;
+  uint64_t die_ref = attr_ptr->u.val;
   struct attribute attr;
-  const char *name = NULL;
 
   if (recur_count == 100)
     {
       _bfd_error_handler
 	(_("DWARF error: abstract instance recursion detected"));
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* DW_FORM_ref_addr can reference an entry in a different CU. It
@@ -2932,19 +3510,19 @@ find_abstract_instance (struct comp_unit
       info_ptr_end = info_ptr + unit->file->dwarf_info_size;
       total = info_ptr_end - info_ptr;
       if (!die_ref)
-	return TRUE;
+	return true;
       else if (die_ref >= total)
 	{
 	  _bfd_error_handler
 	    (_("DWARF error: invalid abstract instance DIE ref"));
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       info_ptr += die_ref;
     }
   else if (attr_ptr->form == DW_FORM_GNU_ref_alt)
     {
-      bfd_boolean first_time = unit->stash->alt.dwarf_info_buffer == NULL;
+      bool first_time = unit->stash->alt.dwarf_info_buffer == NULL;
 
       info_ptr = read_alt_indirect_ref (unit, die_ref);
       if (first_time)
@@ -2955,7 +3533,7 @@ find_abstract_instance (struct comp_unit
 	    (_("DWARF error: unable to read alt ref %" PRIu64),
 	     (uint64_t) die_ref);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       info_ptr_end = (unit->stash->alt.dwarf_info_buffer
 		      + unit->stash->alt.dwarf_info_size);
@@ -2972,16 +3550,12 @@ find_abstract_instance (struct comp_unit
       else
 	{
 	  /* Check other CUs to see if they contain the abbrev.  */
-	  struct comp_unit *u;
-
-	  for (u = unit->prev_unit; u != NULL; u = u->prev_unit)
-	    if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
-	      break;
-
-	  if (u == NULL)
-	    for (u = unit->next_unit; u != NULL; u = u->next_unit)
-	      if (info_ptr >= u->info_ptr_unit && info_ptr < u->end_ptr)
-		break;
+	  struct comp_unit *u = NULL;
+	  struct addr_range range = { info_ptr, info_ptr };
+	  splay_tree_node v = splay_tree_lookup (unit->file->comp_unit_tree,
+						 (splay_tree_key)&range);
+	  if (v != NULL)
+	    u = (struct comp_unit *)v->value;
 
 	  if (attr_ptr->form == DW_FORM_ref_addr)
 	    while (u == NULL)
@@ -3011,7 +3585,7 @@ find_abstract_instance (struct comp_unit
 		(_("DWARF error: unable to locate abstract instance DIE ref %"
 		   PRIu64), (uint64_t) die_ref);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  unit = u;
 	  info_ptr_end = unit->end_ptr;
@@ -3032,15 +3606,13 @@ find_abstract_instance (struct comp_unit
 	  _bfd_error_handler
 	    (_("DWARF error: invalid abstract instance DIE ref"));
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       info_ptr += die_ref;
     }
 
-  abbrev_number = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-					 FALSE, info_ptr_end);
-  info_ptr += bytes_read;
-
+  abbrev_number = _bfd_safe_read_leb128 (abfd, &info_ptr,
+					 false, info_ptr_end);
   if (abbrev_number)
     {
       abbrev = lookup_abbrev (abbrev_number, unit->abbrevs);
@@ -3049,7 +3621,7 @@ find_abstract_instance (struct comp_unit
 	  _bfd_error_handler
 	    (_("DWARF error: could not find abbrev number %u"), abbrev_number);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       else
 	{
@@ -3064,37 +3636,43 @@ find_abstract_instance (struct comp_unit
 		case DW_AT_name:
 		  /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name
 		     over DW_AT_name.  */
-		  if (name == NULL && is_str_attr (attr.form))
+		  if (*pname == NULL && is_str_form (&attr))
 		    {
-		      name = attr.u.str;
-		      if (non_mangled (unit->lang))
-			*is_linkage = TRUE;
+		      *pname = attr.u.str;
+		      if (mangle_style (unit->lang) == 0)
+			*is_linkage = true;
 		    }
 		  break;
 		case DW_AT_specification:
-		  if (!find_abstract_instance (unit, &attr, recur_count + 1,
-					       &name, is_linkage,
-					       filename_ptr, linenumber_ptr))
-		    return FALSE;
+		  if (is_int_form (&attr)
+		      && !find_abstract_instance (unit, &attr, recur_count + 1,
+						  pname, is_linkage,
+						  filename_ptr, linenumber_ptr))
+		    return false;
 		  break;
 		case DW_AT_linkage_name:
 		case DW_AT_MIPS_linkage_name:
 		  /* PR 16949:  Corrupt debug info can place
 		     non-string forms into these attributes.  */
-		  if (is_str_attr (attr.form))
+		  if (is_str_form (&attr))
 		    {
-		      name = attr.u.str;
-		      *is_linkage = TRUE;
+		      *pname = attr.u.str;
+		      *is_linkage = true;
 		    }
 		  break;
 		case DW_AT_decl_file:
 		  if (!comp_unit_maybe_decode_line_info (unit))
-		    return FALSE;
-		  *filename_ptr = concat_filename (unit->line_table,
-						   attr.u.val);
+		    return false;
+		  if (is_int_form (&attr))
+		    {
+		      free (*filename_ptr);
+		      *filename_ptr = concat_filename (unit->line_table,
+						       attr.u.val);
+		    }
 		  break;
 		case DW_AT_decl_line:
-		  *linenumber_ptr = attr.u.val;
+		  if (is_int_form (&attr))
+		    *linenumber_ptr = attr.u.val;
 		  break;
 		default:
 		  break;
@@ -3102,13 +3680,12 @@ find_abstract_instance (struct comp_unit
 	    }
 	}
     }
-  *pname = name;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-read_rangelist (struct comp_unit *unit, struct arange *arange,
-		bfd_uint64_t offset)
+static bool
+read_ranges (struct comp_unit *unit, struct arange *arange,
+	     struct trie_node **trie_root, uint64_t offset)
 {
   bfd_byte *ranges_ptr;
   bfd_byte *ranges_end;
@@ -3117,12 +3694,12 @@ read_rangelist (struct comp_unit *unit,
   if (! unit->file->dwarf_ranges_buffer)
     {
       if (! read_debug_ranges (unit))
-	return FALSE;
+	return false;
     }
 
+  if (offset > unit->file->dwarf_ranges_size)
+    return false;
   ranges_ptr = unit->file->dwarf_ranges_buffer + offset;
-  if (ranges_ptr < unit->file->dwarf_ranges_buffer)
-    return FALSE;
   ranges_end = unit->file->dwarf_ranges_buffer + unit->file->dwarf_ranges_size;
 
   for (;;)
@@ -3131,74 +3708,219 @@ read_rangelist (struct comp_unit *unit,
       bfd_vma high_pc;
 
       /* PR 17512: file: 62cada7d.  */
-      if (ranges_ptr + 2 * unit->addr_size > ranges_end)
-	return FALSE;
+      if (2u * unit->addr_size > (size_t) (ranges_end - ranges_ptr))
+	return false;
 
-      low_pc = read_address (unit, ranges_ptr, ranges_end);
-      ranges_ptr += unit->addr_size;
-      high_pc = read_address (unit, ranges_ptr, ranges_end);
-      ranges_ptr += unit->addr_size;
+      low_pc = read_address (unit, &ranges_ptr, ranges_end);
+      high_pc = read_address (unit, &ranges_ptr, ranges_end);
 
       if (low_pc == 0 && high_pc == 0)
 	break;
-      if (low_pc == -1UL && high_pc != -1UL)
+      if (low_pc == (bfd_vma) -1 && high_pc != (bfd_vma) -1)
 	base_address = high_pc;
       else
 	{
-	  if (!arange_add (unit, arange,
+	  if (!arange_add (unit, arange, trie_root,
 			   base_address + low_pc, base_address + high_pc))
-	    return FALSE;
+	    return false;
+	}
+    }
+  return true;
+}
+
+static bool
+read_rnglists (struct comp_unit *unit, struct arange *arange,
+	       struct trie_node **trie_root, 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;
+
+      if (rngs_ptr >= rngs_end)
+	return false;
+
+      rlet = read_1_byte (abfd, &rngs_ptr, rngs_end);
+
+      switch (rlet)
+	{
+	case DW_RLE_end_of_list:
+	  return true;
+
+	case DW_RLE_base_address:
+	  if (unit->addr_size > (size_t) (rngs_end - rngs_ptr))
+	    return false;
+	  base_address = read_address (unit, &rngs_ptr, rngs_end);
+	  continue;
+
+	case DW_RLE_start_length:
+	  if (unit->addr_size > (size_t) (rngs_end - rngs_ptr))
+	    return false;
+	  low_pc = read_address (unit, &rngs_ptr, rngs_end);
+	  high_pc = low_pc;
+	  high_pc += _bfd_safe_read_leb128 (abfd, &rngs_ptr,
+					    false, rngs_end);
+	  break;
+
+	case DW_RLE_offset_pair:
+	  low_pc = base_address;
+	  low_pc += _bfd_safe_read_leb128 (abfd, &rngs_ptr,
+					   false, rngs_end);
+	  high_pc = base_address;
+	  high_pc += _bfd_safe_read_leb128 (abfd, &rngs_ptr,
+					    false, rngs_end);
+	  break;
+
+	case DW_RLE_start_end:
+	  if (2u * unit->addr_size > (size_t) (rngs_end - rngs_ptr))
+	    return false;
+	  low_pc = read_address (unit, &rngs_ptr, rngs_end);
+	  high_pc = read_address (unit, &rngs_ptr, rngs_end);
+	  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 (!arange_add (unit, arange, trie_root, low_pc, high_pc))
+	return false;
     }
-  return TRUE;
 }
 
+static bool
+read_rangelist (struct comp_unit *unit, struct arange *arange,
+		struct trie_node **trie_root, uint64_t offset)
+{
+  if (unit->version <= 4)
+    return read_ranges (unit, arange, trie_root, offset);
+  else
+    return read_rnglists (unit, arange, trie_root, offset);
+}
+
+static struct funcinfo *
+lookup_func_by_offset (uint64_t offset, struct funcinfo * table)
+{
+  for (; table != NULL; table = table->prev_func)
+    if (table->unit_offset == offset)
+      return table;
+  return NULL;
+}
+
+static struct varinfo *
+lookup_var_by_offset (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.  */
 
+static struct funcinfo *
+reverse_funcinfo_list (struct funcinfo *head)
+{
+  struct funcinfo *rhead;
+  struct funcinfo *temp;
+
+  for (rhead = NULL; head; head = temp)
+    {
+      temp = head->prev_func;
+      head->prev_func = rhead;
+      rhead = head;
+    }
+  return rhead;
+}
+
+static struct varinfo *
+reverse_varinfo_list (struct varinfo *head)
+{
+  struct varinfo *rhead;
+  struct varinfo *temp;
+
+  for (rhead = NULL; head; head = temp)
+    {
+      temp = head->prev_var;
+      head->prev_var = rhead;
+      rhead = head;
+    }
+  return rhead;
+}
+
 /* Scan over each die in a comp. unit looking for functions to add
    to the function table and variables to the variable table.  */
 
-static bfd_boolean
+static bool
 scan_unit_for_symbols (struct comp_unit *unit)
 {
   bfd *abfd = unit->abfd;
   bfd_byte *info_ptr = unit->first_child_die_ptr;
   bfd_byte *info_ptr_end = unit->end_ptr;
   int nesting_level = 0;
-  struct nest_funcinfo {
+  struct nest_funcinfo
+  {
     struct funcinfo *func;
   } *nested_funcs;
   int nested_funcs_size;
-
+  struct funcinfo *last_func;
+  struct varinfo *last_var;
+  
   /* Maintain a stack of in-scope functions and inlined functions, which we
      can use to set the caller_func field.  */
   nested_funcs_size = 32;
   nested_funcs = (struct nest_funcinfo *)
     bfd_malloc (nested_funcs_size * sizeof (*nested_funcs));
   if (nested_funcs == NULL)
-    return FALSE;
+    return false;
   nested_funcs[nesting_level].func = 0;
 
+  /* PR 27484: We must scan the DIEs twice.  The first time we look for
+     function and variable tags and accumulate them into their respective
+     tables.  The second time through we process the attributes of the
+     functions/variables and augment the table entries.  */
   while (nesting_level >= 0)
     {
-      unsigned int abbrev_number, bytes_read, i;
+      unsigned int abbrev_number, i;
       struct abbrev_info *abbrev;
-      struct attribute attr;
       struct funcinfo *func;
       struct varinfo *var;
-      bfd_vma low_pc = 0;
-      bfd_vma high_pc = 0;
-      bfd_boolean high_pc_relative = FALSE;
+      uint64_t current_offset;
 
       /* PR 17512: file: 9f405d9d.  */
       if (info_ptr >= info_ptr_end)
 	goto fail;
 
-      abbrev_number = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-					     FALSE, info_ptr_end);
-      info_ptr += bytes_read;
-
-      if (! abbrev_number)
+      current_offset = info_ptr - unit->info_ptr_unit;
+      abbrev_number = _bfd_safe_read_leb128 (abfd, &info_ptr,
+					     false, info_ptr_end);
+      if (abbrev_number == 0)
 	{
 	  nesting_level--;
 	  continue;
@@ -3221,17 +3943,19 @@ 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;
 	  func->tag = abbrev->tag;
 	  func->prev_func = unit->function_table;
+	  func->unit_offset = current_offset;
 	  unit->function_table = func;
 	  unit->number_of_functions++;
 	  BFD_ASSERT (!unit->cached);
@@ -3248,19 +3972,24 @@ 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;
@@ -3268,6 +3997,109 @@ scan_unit_for_symbols (struct comp_unit
 
       for (i = 0; i < abbrev->num_attrs; ++i)
 	{
+	  struct attribute attr;
+
+	  info_ptr = read_attribute (&attr, &abbrev->attrs[i],
+				     unit, info_ptr, info_ptr_end);
+	  if (info_ptr == NULL)
+	    goto fail;
+	}
+
+      if (abbrev->has_children)
+	{
+	  nesting_level++;
+
+	  if (nesting_level >= nested_funcs_size)
+	    {
+	      struct nest_funcinfo *tmp;
+
+	      nested_funcs_size *= 2;
+	      tmp = (struct nest_funcinfo *)
+		bfd_realloc (nested_funcs,
+			     nested_funcs_size * sizeof (*nested_funcs));
+	      if (tmp == NULL)
+		goto fail;
+	      nested_funcs = tmp;
+	    }
+	  nested_funcs[nesting_level].func = 0;
+	}
+    }
+
+  unit->function_table = reverse_funcinfo_list (unit->function_table);
+  unit->variable_table = reverse_varinfo_list (unit->variable_table);
+
+  /* This is the second pass over the abbrevs.  */      
+  info_ptr = unit->first_child_die_ptr;
+  nesting_level = 0;
+  
+  last_func = NULL;
+  last_var = NULL;
+
+  while (nesting_level >= 0)
+    {
+      unsigned int abbrev_number, i;
+      struct abbrev_info *abbrev;
+      struct attribute attr;
+      struct funcinfo *func;
+      struct varinfo *var;
+      bfd_vma low_pc = 0;
+      bfd_vma high_pc = 0;
+      bool high_pc_relative = false;
+      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,
+					     false, info_ptr_end);
+      if (! abbrev_number)
+	{
+	  nesting_level--;
+	  continue;
+	}
+
+      abbrev = lookup_abbrev (abbrev_number, unit->abbrevs);
+      /* This should have been handled above.  */
+      BFD_ASSERT (abbrev != NULL);
+
+      func = NULL;
+      var = NULL;
+      if (abbrev->tag == DW_TAG_subprogram
+	  || abbrev->tag == DW_TAG_entry_point
+	  || abbrev->tag == DW_TAG_inlined_subroutine)
+	{
+	  if (last_func
+	      && last_func->prev_func
+	      && last_func->prev_func->unit_offset == current_offset)
+	    func = last_func->prev_func;
+	  else
+	    func = lookup_func_by_offset (current_offset, unit->function_table);
+
+	  if (func == NULL)
+	    goto fail;
+
+	  last_func = func;
+	}
+      else if (abbrev->tag == DW_TAG_variable
+	       || abbrev->tag == DW_TAG_member)
+	{
+	  if (last_var
+	      && last_var->prev_var
+	      && last_var->prev_var->unit_offset == current_offset)
+	    var = last_var->prev_var;
+	  else
+	    var = lookup_var_by_offset (current_offset, unit->variable_table);
+
+	  if (var == NULL)
+	    goto fail;
+
+	  last_var = var;
+	}
+
+      for (i = 0; i < abbrev->num_attrs; ++i)
+	{
 	  info_ptr = read_attribute (&attr, &abbrev->attrs[i],
 				     unit, info_ptr, info_ptr_end);
 	  if (info_ptr == NULL)
@@ -3278,32 +4110,38 @@ scan_unit_for_symbols (struct comp_unit
 	      switch (attr.name)
 		{
 		case DW_AT_call_file:
-		  func->caller_file = concat_filename (unit->line_table,
-						       attr.u.val);
+		  if (is_int_form (&attr))
+		    {
+		      free (func->caller_file);
+		      func->caller_file = concat_filename (unit->line_table,
+							   attr.u.val);
+		    }
 		  break;
 
 		case DW_AT_call_line:
-		  func->caller_line = attr.u.val;
+		  if (is_int_form (&attr))
+		    func->caller_line = attr.u.val;
 		  break;
 
 		case DW_AT_abstract_origin:
 		case DW_AT_specification:
-		  if (!find_abstract_instance (unit, &attr, 0,
-					       &func->name,
-					       &func->is_linkage,
-					       &func->file,
-					       &func->line))
+		  if (is_int_form (&attr)
+		      && !find_abstract_instance (unit, &attr, 0,
+						  &func->name,
+						  &func->is_linkage,
+						  &func->file,
+						  &func->line))
 		    goto fail;
 		  break;
 
 		case DW_AT_name:
 		  /* Prefer DW_AT_MIPS_linkage_name or DW_AT_linkage_name
 		     over DW_AT_name.  */
-		  if (func->name == NULL && is_str_attr (attr.form))
+		  if (func->name == NULL && is_str_form (&attr))
 		    {
 		      func->name = attr.u.str;
-		      if (non_mangled (unit->lang))
-			func->is_linkage = TRUE;
+		      if (mangle_style (unit->lang) == 0)
+			func->is_linkage = true;
 		    }
 		  break;
 
@@ -3311,34 +4149,45 @@ scan_unit_for_symbols (struct comp_unit
 		case DW_AT_MIPS_linkage_name:
 		  /* PR 16949:  Corrupt debug info can place
 		     non-string forms into these attributes.  */
-		  if (is_str_attr (attr.form))
+		  if (is_str_form (&attr))
 		    {
 		      func->name = attr.u.str;
-		      func->is_linkage = TRUE;
+		      func->is_linkage = true;
 		    }
 		  break;
 
 		case DW_AT_low_pc:
-		  low_pc = attr.u.val;
+		  if (is_int_form (&attr))
+		    low_pc = attr.u.val;
 		  break;
 
 		case DW_AT_high_pc:
-		  high_pc = attr.u.val;
-		  high_pc_relative = attr.form != DW_FORM_addr;
+		  if (is_int_form (&attr))
+		    {
+		      high_pc = attr.u.val;
+		      high_pc_relative = attr.form != DW_FORM_addr;
+		    }
 		  break;
 
 		case DW_AT_ranges:
-		  if (!read_rangelist (unit, &func->arange, attr.u.val))
+		  if (is_int_form (&attr)
+		      && !read_rangelist (unit, &func->arange,
+					  &unit->file->trie_root, attr.u.val))
 		    goto fail;
 		  break;
 
 		case DW_AT_decl_file:
-		  func->file = concat_filename (unit->line_table,
-						attr.u.val);
+		  if (is_int_form (&attr))
+		    {
+		      free (func->file);
+		      func->file = concat_filename (unit->line_table,
+						    attr.u.val);
+		    }
 		  break;
 
 		case DW_AT_decl_line:
-		  func->line = attr.u.val;
+		  if (is_int_form (&attr))
+		    func->line = attr.u.val;
 		  break;
 
 		default:
@@ -3349,23 +4198,47 @@ scan_unit_for_symbols (struct comp_unit
 	    {
 	      switch (attr.name)
 		{
+		case DW_AT_specification:
+		  if (is_int_form (&attr) && attr.u.val)
+		    {
+		      bool is_linkage;
+		      if (!find_abstract_instance (unit, &attr, 0,
+						   &var->name,
+						   &is_linkage,
+						   &var->file,
+						   &var->line))
+			{
+			  _bfd_error_handler (_("DWARF error: could not find "
+						"variable specification "
+						"at offset 0x%lx"),
+					      (unsigned long) attr.u.val);
+			  break;
+			}
+		    }
+		  break;
+
 		case DW_AT_name:
-		  if (is_str_attr (attr.form))
+		  if (is_str_form (&attr))
 		    var->name = attr.u.str;
 		  break;
 
 		case DW_AT_decl_file:
-		  var->file = concat_filename (unit->line_table,
-					       attr.u.val);
+		  if (is_int_form (&attr))
+		    {
+		      free (var->file);
+		      var->file = concat_filename (unit->line_table,
+						   attr.u.val);
+		    }
 		  break;
 
 		case DW_AT_decl_line:
-		  var->line = attr.u.val;
+		  if (is_int_form (&attr))
+		    var->line = attr.u.val;
 		  break;
 
 		case DW_AT_external:
-		  if (attr.u.val != 0)
-		    var->stack = 0;
+		  if (is_int_form (&attr) && attr.u.val != 0)
+		    var->stack = false;
 		  break;
 
 		case DW_AT_location:
@@ -3379,7 +4252,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
@@ -3405,41 +4278,103 @@ scan_unit_for_symbols (struct comp_unit
 	    }
 	}
 
+      if (abbrev->has_children)
+	nesting_level++;
+
       if (high_pc_relative)
 	high_pc += low_pc;
 
       if (func && high_pc != 0)
 	{
-	  if (!arange_add (unit, &func->arange, low_pc, high_pc))
+	  if (!arange_add (unit, &func->arange, &unit->file->trie_root,
+			   low_pc, high_pc))
 	    goto fail;
 	}
-
-      if (abbrev->has_children)
-	{
-	  nesting_level++;
-
-	  if (nesting_level >= nested_funcs_size)
-	    {
-	      struct nest_funcinfo *tmp;
-
-	      nested_funcs_size *= 2;
-	      tmp = (struct nest_funcinfo *)
-		bfd_realloc (nested_funcs,
-			     nested_funcs_size * sizeof (*nested_funcs));
-	      if (tmp == NULL)
-		goto fail;
-	      nested_funcs = tmp;
-	    }
-	  nested_funcs[nesting_level].func = 0;
-	}
     }
 
+  unit->function_table = reverse_funcinfo_list (unit->function_table);
+  unit->variable_table = reverse_varinfo_list (unit->variable_table);
+
   free (nested_funcs);
-  return TRUE;
+  return true;
 
  fail:
   free (nested_funcs);
-  return FALSE;
+  return false;
+}
+
+/* Read the attributes of the form strx and addrx.  */
+
+static void
+reread_attribute (struct comp_unit *unit,
+		  struct attribute *attr,
+		  bfd_vma *low_pc,
+		  bfd_vma *high_pc,
+		  bool *high_pc_relative,
+		  bool compunit)
+{
+  if (is_strx_form (attr->form))
+    attr->u.str = (char *) read_indexed_string (attr->u.val, unit);
+  if (is_addrx_form (attr->form))
+    attr->u.val = read_indexed_address (attr->u.val, unit);
+
+  switch (attr->name)
+    {
+    case DW_AT_stmt_list:
+      unit->stmtlist = 1;
+      unit->line_offset = attr->u.val;
+      break;
+
+    case DW_AT_name:
+      if (is_str_form (attr))
+	unit->name = attr->u.str;
+      break;
+
+    case DW_AT_low_pc:
+      *low_pc = attr->u.val;
+      if (compunit)
+	unit->base_address = *low_pc;
+      break;
+
+    case DW_AT_high_pc:
+      *high_pc = attr->u.val;
+      *high_pc_relative = attr->form != DW_FORM_addr;
+      break;
+
+    case DW_AT_ranges:
+      if (!read_rangelist (unit, &unit->arange,
+			   &unit->file->trie_root, attr->u.val))
+	return;
+      break;
+
+    case DW_AT_comp_dir:
+      {
+	char *comp_dir = attr->u.str;
+
+	if (!is_str_form (attr))
+	  {
+	    _bfd_error_handler
+	      (_("DWARF error: DW_AT_comp_dir attribute encountered "
+		 "with a non-string form"));
+	    comp_dir = NULL;
+	  }
+
+	if (comp_dir)
+	  {
+	    char *cp = strchr (comp_dir, ':');
+
+	    if (cp && cp != comp_dir && cp[-1] == '.' && cp[1] == '/')
+	      comp_dir = cp + 1;
+	  }
+	unit->comp_dir = comp_dir;
+	break;
+      }
+
+    case DW_AT_language:
+      unit->lang = attr->u.val;
+    default:
+      break;
+    }
 }
 
 /* Parse a DWARF2 compilation unit starting at INFO_PTR.  UNIT_LENGTH
@@ -3461,23 +4396,26 @@ parse_comp_unit (struct dwarf2_debug *st
 {
   struct comp_unit* unit;
   unsigned int version;
-  bfd_uint64_t abbrev_offset = 0;
+  uint64_t abbrev_offset = 0;
   /* Initialize it just to avoid a GCC false warning.  */
   unsigned int addr_size = -1;
   struct abbrev_info** abbrevs;
-  unsigned int abbrev_number, bytes_read, i;
+  unsigned int abbrev_number, i;
   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;
-  bfd_boolean high_pc_relative = FALSE;
+  bool high_pc_relative = false;
   enum dwarf_unit_type unit_type;
+  struct attribute *str_addrp = NULL;
+  size_t str_count = 0;
+  size_t str_alloc = 0;
+  bool compunit_flag = false;
 
-  version = read_2_bytes (abfd, info_ptr, end_ptr);
-  info_ptr += 2;
+  version = read_2_bytes (abfd, &info_ptr, end_ptr);
   if (version < 2 || version > 5)
     {
       /* PR 19872: A version number of 0 probably means that there is padding
@@ -3498,33 +4436,36 @@ parse_comp_unit (struct dwarf2_debug *st
     unit_type = DW_UT_compile;
   else
     {
-      unit_type = read_1_byte (abfd, info_ptr, end_ptr);
-      info_ptr += 1;
-
-      addr_size = read_1_byte (abfd, info_ptr, end_ptr);
-      info_ptr += 1;
+      unit_type = read_1_byte (abfd, &info_ptr, end_ptr);
+      addr_size = read_1_byte (abfd, &info_ptr, end_ptr);
     }
 
   BFD_ASSERT (offset_size == 4 || offset_size == 8);
   if (offset_size == 4)
-    abbrev_offset = read_4_bytes (abfd, info_ptr, end_ptr);
+    abbrev_offset = read_4_bytes (abfd, &info_ptr, end_ptr);
   else
-    abbrev_offset = read_8_bytes (abfd, info_ptr, end_ptr);
-  info_ptr += offset_size;
+    abbrev_offset = read_8_bytes (abfd, &info_ptr, end_ptr);
 
   if (version < 5)
-    {
-      addr_size = read_1_byte (abfd, info_ptr, end_ptr);
-      info_ptr += 1;
-    }
+    addr_size = read_1_byte (abfd, &info_ptr, end_ptr);
 
-  if (unit_type == DW_UT_type)
+  switch (unit_type)
     {
+    case DW_UT_type:
       /* Skip type signature.  */
       info_ptr += 8;
 
       /* Skip type offset.  */
       info_ptr += offset_size;
+      break;
+
+    case DW_UT_skeleton:
+      /* Skip DWO_id field.  */
+      info_ptr += 8;
+      break;
+
+    default:
+      break;
     }
 
   if (addr_size > sizeof (bfd_vma))
@@ -3553,9 +4494,8 @@ parse_comp_unit (struct dwarf2_debug *st
   if (! abbrevs)
     return NULL;
 
-  abbrev_number = _bfd_safe_read_leb128 (abfd, info_ptr, &bytes_read,
-					 FALSE, end_ptr);
-  info_ptr += bytes_read;
+  abbrev_number = _bfd_safe_read_leb128 (abfd, &info_ptr,
+					 false, end_ptr);
   if (! abbrev_number)
     {
       /* PR 19872: An abbrev number of 0 probably means that there is padding
@@ -3588,43 +4528,76 @@ parse_comp_unit (struct dwarf2_debug *st
   unit->file = file;
   unit->info_ptr_unit = info_ptr_unit;
 
+  if (abbrev->tag == DW_TAG_compile_unit)
+    compunit_flag = true;
+
   for (i = 0; i < abbrev->num_attrs; ++i)
     {
       info_ptr = read_attribute (&attr, &abbrev->attrs[i], unit, info_ptr, end_ptr);
       if (info_ptr == NULL)
-	return NULL;
+	goto err_exit;
+
+      /* Identify attributes of the form strx* and addrx* which come before
+	 DW_AT_str_offsets_base and DW_AT_addr_base respectively in the CU.
+	 Store the attributes in an array and process them later.  */
+      if ((unit->dwarf_str_offset == 0 && is_strx_form (attr.form))
+	  || (unit->dwarf_addr_offset == 0 && is_addrx_form (attr.form)))
+	{
+	  if (str_count <= str_alloc)
+	    {
+	      str_alloc = 2 * str_alloc + 200;
+	      str_addrp = bfd_realloc (str_addrp,
+				       str_alloc * sizeof (*str_addrp));
+	      if (str_addrp == NULL)
+		goto err_exit;
+	    }
+	  str_addrp[str_count] = attr;
+	  str_count++;
+	  continue;
+	}
 
       /* Store the data if it is of an attribute we want to keep in a
 	 partial symbol table.  */
       switch (attr.name)
 	{
 	case DW_AT_stmt_list:
-	  unit->stmtlist = 1;
-	  unit->line_offset = attr.u.val;
+	  if (is_int_form (&attr))
+	    {
+	      unit->stmtlist = 1;
+	      unit->line_offset = attr.u.val;
+	    }
 	  break;
 
 	case DW_AT_name:
-	  if (is_str_attr (attr.form))
+	  if (is_str_form (&attr))
 	    unit->name = attr.u.str;
 	  break;
 
 	case DW_AT_low_pc:
-	  low_pc = attr.u.val;
-	  /* If the compilation unit DIE has a DW_AT_low_pc attribute,
-	     this is the base address to use when reading location
-	     lists or range lists.  */
-	  if (abbrev->tag == DW_TAG_compile_unit)
-	    unit->base_address = low_pc;
+	  if (is_int_form (&attr))
+	    {
+	      low_pc = attr.u.val;
+	      /* If the compilation unit DIE has a DW_AT_low_pc attribute,
+		 this is the base address to use when reading location
+		 lists or range lists.  */
+	      if (compunit_flag)
+		unit->base_address = low_pc;
+	    }
 	  break;
 
 	case DW_AT_high_pc:
-	  high_pc = attr.u.val;
-	  high_pc_relative = attr.form != DW_FORM_addr;
+	  if (is_int_form (&attr))
+	    {
+	      high_pc = attr.u.val;
+	      high_pc_relative = attr.form != DW_FORM_addr;
+	    }
 	  break;
 
 	case DW_AT_ranges:
-	  if (!read_rangelist (unit, &unit->arange, attr.u.val))
-	    return NULL;
+	  if (is_int_form (&attr)
+	      && !read_rangelist (unit, &unit->arange,
+				  &unit->file->trie_root, attr.u.val))
+	    goto err_exit;
 	  break;
 
 	case DW_AT_comp_dir:
@@ -3632,7 +4605,7 @@ parse_comp_unit (struct dwarf2_debug *st
 	    char *comp_dir = attr.u.str;
 
 	    /* PR 17512: file: 1fe726be.  */
-	    if (! is_str_attr (attr.form))
+	    if (!is_str_form (&attr))
 	      {
 		_bfd_error_handler
 		  (_("DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"));
@@ -3653,23 +4626,45 @@ parse_comp_unit (struct dwarf2_debug *st
 	  }
 
 	case DW_AT_language:
-	  unit->lang = attr.u.val;
+	  if (is_int_form (&attr))
+	    unit->lang = attr.u.val;
+	  break;
+
+	case DW_AT_addr_base:
+	  unit->dwarf_addr_offset = attr.u.val;
+	  break;
+
+	case DW_AT_str_offsets_base:
+	  unit->dwarf_str_offset = attr.u.val;
 	  break;
 
 	default:
 	  break;
 	}
     }
+
+  for (i = 0; i < str_count; ++i)
+    reread_attribute (unit, &str_addrp[i], &low_pc, &high_pc,
+		      &high_pc_relative, compunit_flag);
+
   if (high_pc_relative)
     high_pc += low_pc;
   if (high_pc != 0)
     {
-      if (!arange_add (unit, &unit->arange, low_pc, high_pc))
-	return NULL;
+      if (!arange_add (unit, &unit->arange, &unit->file->trie_root,
+		       low_pc, high_pc))
+	goto err_exit;
     }
 
   unit->first_child_die_ptr = info_ptr;
+
+  free (str_addrp);
   return unit;
+
+ err_exit:
+  unit->error = 1;
+  free (str_addrp);
+  return NULL;
 }
 
 /* Return TRUE if UNIT may contain the address given by ADDR.  When
@@ -3678,35 +4673,31 @@ parse_comp_unit (struct dwarf2_debug *st
    need to consult the line info table to see if a compilation unit
    really contains the given address.  */
 
-static bfd_boolean
-comp_unit_contains_address (struct comp_unit *unit, bfd_vma addr)
+static bool
+comp_unit_may_contain_address (struct comp_unit *unit, bfd_vma addr)
 {
   struct arange *arange;
 
   if (unit->error)
-    return FALSE;
+    return false;
 
-  arange = &unit->arange;
-  do
-    {
-      if (addr >= arange->low && addr < arange->high)
-	return TRUE;
-      arange = arange->next;
-    }
-  while (arange);
+  if (unit->arange.high == 0 /* No ranges have been computed yet.  */
+      || unit->line_table == NULL) /* The line info table has not been loaded.  */
+    return true;
 
-  return FALSE;
+  for (arange = &unit->arange; arange != NULL; arange = arange->next)
+    if (addr >= arange->low && addr < arange->high)
+      return true;
+
+  return false;
 }
 
 /* If UNIT contains ADDR, set the output parameters to the values for
-   the line containing ADDR.  The output parameters, FILENAME_PTR,
-   FUNCTION_PTR, and LINENUMBER_PTR, are pointers to the objects
-   to be filled in.
-
-   Returns the range of addresses covered by the entry that was used
-   to fill in *LINENUMBER_PTR or 0 if it was not filled in.  */
+   the line containing ADDR and return TRUE.  Otherwise return FALSE.
+   The output parameters, FILENAME_PTR, FUNCTION_PTR, and
+   LINENUMBER_PTR, are pointers to the objects to be filled in.  */
 
-static bfd_vma
+static bool
 comp_unit_find_nearest_line (struct comp_unit *unit,
 			     bfd_vma addr,
 			     const char **filename_ptr,
@@ -3714,38 +4705,40 @@ comp_unit_find_nearest_line (struct comp
 			     unsigned int *linenumber_ptr,
 			     unsigned int *discriminator_ptr)
 {
-  bfd_boolean func_p;
+  bool line_p, func_p;
 
   if (!comp_unit_maybe_decode_line_info (unit))
-    return FALSE;
+    return false;
 
   *function_ptr = NULL;
   func_p = lookup_address_in_function_table (unit, addr, function_ptr);
+
   if (func_p && (*function_ptr)->tag == DW_TAG_inlined_subroutine)
     unit->stash->inliner_chain = *function_ptr;
 
-  return lookup_address_in_line_info_table (unit->line_table, addr,
-					    filename_ptr,
-					    linenumber_ptr,
-					    discriminator_ptr);
+  line_p = lookup_address_in_line_info_table (unit->line_table, addr,
+					      filename_ptr,
+					      linenumber_ptr,
+					      discriminator_ptr);
+  return line_p || func_p;
 }
 
 /* Check to see if line info is already decoded in a comp_unit.
    If not, decode it.  Returns TRUE if no errors were encountered;
    FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 comp_unit_maybe_decode_line_info (struct comp_unit *unit)
 {
   if (unit->error)
-    return FALSE;
+    return false;
 
   if (! unit->line_table)
     {
       if (! unit->stmtlist)
 	{
 	  unit->error = 1;
-	  return FALSE;
+	  return false;
 	}
 
       unit->line_table = decode_line_info (unit);
@@ -3753,18 +4746,18 @@ comp_unit_maybe_decode_line_info (struct
       if (! unit->line_table)
 	{
 	  unit->error = 1;
-	  return FALSE;
+	  return false;
 	}
 
       if (unit->first_child_die_ptr < unit->end_ptr
 	  && ! scan_unit_for_symbols (unit))
 	{
 	  unit->error = 1;
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* If UNIT contains SYM at ADDR, set the output parameters to the
@@ -3775,7 +4768,7 @@ comp_unit_maybe_decode_line_info (struct
    Return TRUE if UNIT contains SYM, and no errors were encountered;
    FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 comp_unit_find_line (struct comp_unit *unit,
 		     asymbol *sym,
 		     bfd_vma addr,
@@ -3783,7 +4776,7 @@ comp_unit_find_line (struct comp_unit *u
 		     unsigned int *linenumber_ptr)
 {
   if (!comp_unit_maybe_decode_line_info (unit))
-    return FALSE;
+    return false;
 
   if (sym->flags & BSF_FUNCTION)
     return lookup_symbol_in_function_table (unit, sym, addr,
@@ -3795,41 +4788,11 @@ comp_unit_find_line (struct comp_unit *u
 					  linenumber_ptr);
 }
 
-static struct funcinfo *
-reverse_funcinfo_list (struct funcinfo *head)
-{
-  struct funcinfo *rhead;
-  struct funcinfo *temp;
-
-  for (rhead = NULL; head; head = temp)
-    {
-      temp = head->prev_func;
-      head->prev_func = rhead;
-      rhead = head;
-    }
-  return rhead;
-}
-
-static struct varinfo *
-reverse_varinfo_list (struct varinfo *head)
-{
-  struct varinfo *rhead;
-  struct varinfo *temp;
-
-  for (rhead = NULL; head; head = temp)
-    {
-      temp = head->prev_var;
-      head->prev_var = rhead;
-      rhead = head;
-    }
-  return rhead;
-}
-
 /* Extract all interesting funcinfos and varinfos of a compilation
    unit into hash tables for faster lookup.  Returns TRUE if no
    errors were enountered; FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 comp_unit_hash_info (struct dwarf2_debug *stash,
 		     struct comp_unit *unit,
 		     struct info_hash_table *funcinfo_hash_table,
@@ -3837,12 +4800,12 @@ comp_unit_hash_info (struct dwarf2_debug
 {
   struct funcinfo* each_func;
   struct varinfo* each_var;
-  bfd_boolean okay = TRUE;
+  bool okay = true;
 
   BFD_ASSERT (stash->info_hash_status != STASH_INFO_HASH_DISABLED);
 
   if (!comp_unit_maybe_decode_line_info (unit))
-    return FALSE;
+    return false;
 
   BFD_ASSERT (!unit->cached);
 
@@ -3862,11 +4825,11 @@ comp_unit_hash_info (struct dwarf2_debug
 	   name string is either in the dwarf string buffer or
 	   info in the stash.  */
 	okay = insert_info_hash_table (funcinfo_hash_table, each_func->name,
-				       (void*) each_func, FALSE);
+				       (void*) each_func, false);
     }
   unit->function_table = reverse_funcinfo_list (unit->function_table);
   if (!okay)
-    return FALSE;
+    return false;
 
   /* We do the same for variable infos.  */
   unit->variable_table = reverse_varinfo_list (unit->variable_table);
@@ -3875,18 +4838,18 @@ 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
 	   name string is either in the dwarf string buffer or
 	   info in the stash.  */
 	okay = insert_info_hash_table (varinfo_hash_table, each_var->name,
-				       (void*) each_var, FALSE);
+				       (void*) each_var, false);
     }
 
   unit->variable_table = reverse_varinfo_list (unit->variable_table);
-  unit->cached = TRUE;
+  unit->cached = true;
   return okay;
 }
 
@@ -3913,19 +4876,19 @@ find_debug_info (bfd *abfd, const struct
     {
       look = debug_sections[debug_info].uncompressed_name;
       msec = bfd_get_section_by_name (abfd, look);
-      if (msec != NULL)
+      /* Testing SEC_HAS_CONTENTS is an anti-fuzzer measure.  Of
+	 course debug sections always have contents.  */
+      if (msec != NULL && (msec->flags & SEC_HAS_CONTENTS) != 0)
 	return msec;
 
       look = debug_sections[debug_info].compressed_name;
-      if (look != NULL)
-	{
-	  msec = bfd_get_section_by_name (abfd, look);
-	  if (msec != NULL)
-	    return msec;
-	}
+      msec = bfd_get_section_by_name (abfd, look);
+      if (msec != NULL && (msec->flags & SEC_HAS_CONTENTS) != 0)
+        return msec;
 
       for (msec = abfd->sections; msec != NULL; msec = msec->next)
-	if (CONST_STRNEQ (msec->name, GNU_LINKONCE_INFO))
+	if ((msec->flags & SEC_HAS_CONTENTS) != 0
+	    && startswith (msec->name, GNU_LINKONCE_INFO))
 	  return msec;
 
       return NULL;
@@ -3933,6 +4896,9 @@ find_debug_info (bfd *abfd, const struct
 
   for (msec = after_sec->next; msec != NULL; msec = msec->next)
     {
+      if ((msec->flags & SEC_HAS_CONTENTS) == 0)
+	continue;
+
       look = debug_sections[debug_info].uncompressed_name;
       if (strcmp (msec->name, look) == 0)
 	return msec;
@@ -3941,7 +4907,7 @@ find_debug_info (bfd *abfd, const struct
       if (look != NULL && strcmp (msec->name, look) == 0)
 	return msec;
 
-      if (CONST_STRNEQ (msec->name, GNU_LINKONCE_INFO))
+      if (startswith (msec->name, GNU_LINKONCE_INFO))
 	return msec;
     }
 
@@ -4018,7 +4984,7 @@ unset_sections (struct dwarf2_debug *sta
   i = stash->adjusted_section_count;
   p = stash->adjusted_sections;
   for (; i > 0; i--, p++)
-    p->section->vma = 0;
+    p->section->vma = p->orig_vma;
 }
 
 /* Set VMAs for allocated and .debug_info sections in ORIG_BFD, a
@@ -4031,7 +4997,7 @@ unset_sections (struct dwarf2_debug *sta
    logical section.  ??? We should probably do the same for other
    debug sections.  */
 
-static bfd_boolean
+static bool
 place_sections (bfd *orig_bfd, struct dwarf2_debug *stash)
 {
   bfd *abfd;
@@ -4045,7 +5011,7 @@ place_sections (bfd *orig_bfd, struct dw
       p = stash->adjusted_sections;
       for (; i > 0; i--, p++)
 	p->section->vma = p->adj_vma;
-      return TRUE;
+      return true;
     }
 
   debug_info_name = stash->debug_sections[debug_info].uncompressed_name;
@@ -4059,14 +5025,13 @@ place_sections (bfd *orig_bfd, struct dw
 	{
 	  int is_debug_info;
 
-	  if ((sect->output_section != NULL
-	       && sect->output_section != sect
-	       && (sect->flags & SEC_DEBUGGING) == 0)
-	      || sect->vma != 0)
+	  if (sect->output_section != NULL
+	      && sect->output_section != sect
+	      && (sect->flags & SEC_DEBUGGING) == 0)
 	    continue;
 
 	  is_debug_info = (strcmp (sect->name, debug_info_name) == 0
-			   || CONST_STRNEQ (sect->name, GNU_LINKONCE_INFO));
+			   || startswith (sect->name, GNU_LINKONCE_INFO));
 
 	  if (!((sect->flags & SEC_ALLOC) != 0 && abfd == orig_bfd)
 	      && !is_debug_info)
@@ -4084,11 +5049,11 @@ 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)
-	return FALSE;
+	return false;
 
       stash->adjusted_sections = p;
       stash->adjusted_section_count = i;
@@ -4103,14 +5068,13 @@ place_sections (bfd *orig_bfd, struct dw
 	      bfd_size_type sz;
 	      int is_debug_info;
 
-	      if ((sect->output_section != NULL
-		   && sect->output_section != sect
-		   && (sect->flags & SEC_DEBUGGING) == 0)
-		  || sect->vma != 0)
+	      if (sect->output_section != NULL
+		  && sect->output_section != sect
+		  && (sect->flags & SEC_DEBUGGING) == 0)
 		continue;
 
 	      is_debug_info = (strcmp (sect->name, debug_info_name) == 0
-			       || CONST_STRNEQ (sect->name, GNU_LINKONCE_INFO));
+			       || startswith (sect->name, GNU_LINKONCE_INFO));
 
 	      if (!((sect->flags & SEC_ALLOC) != 0 && abfd == orig_bfd)
 		  && !is_debug_info)
@@ -4118,24 +5082,17 @@ place_sections (bfd *orig_bfd, struct dw
 
 	      sz = sect->rawsize ? sect->rawsize : sect->size;
 
-	      if (is_debug_info)
-		{
-		  BFD_ASSERT (sect->alignment_power == 0);
-		  sect->vma = last_dwarf;
-		  last_dwarf += sz;
-		}
-	      else
-		{
-		  /* Align the new address to the current section
-		     alignment.  */
-		  last_vma = ((last_vma
-			       + ~(-((bfd_vma) 1 << sect->alignment_power)))
-			      & (-((bfd_vma) 1 << sect->alignment_power)));
-		  sect->vma = last_vma;
-		  last_vma += sz;
-		}
-
 	      p->section = sect;
+	      p->orig_vma = sect->vma;
+
+	      bfd_vma *v = is_debug_info ? &last_dwarf : &last_vma;
+	      /* Align the new address to the current section
+		 alignment.  */
+	      bfd_vma mask = -(bfd_vma) 1 << sect->alignment_power;
+	      *v = (*v + ~mask) & mask;
+	      sect->vma = *v;
+	      *v += sz;
+
 	      p->adj_vma = sect->vma;
 	      p++;
 	    }
@@ -4148,7 +5105,7 @@ place_sections (bfd *orig_bfd, struct dw
   if (orig_bfd != stash->f.bfd_ptr)
     set_debug_vma (orig_bfd, stash->f.bfd_ptr);
 
-  return TRUE;
+  return true;
 }
 
 /* Look up a funcinfo by name using the given info hash table.  If found,
@@ -4157,7 +5114,7 @@ place_sections (bfd *orig_bfd, struct dw
    This function returns TRUE if a funcinfo that matches the given symbol
    and address is found with any error; otherwise it returns FALSE.  */
 
-static bfd_boolean
+static bool
 info_hash_lookup_funcinfo (struct info_hash_table *hash_table,
 			   asymbol *sym,
 			   bfd_vma addr,
@@ -4166,11 +5123,10 @@ info_hash_lookup_funcinfo (struct info_h
 {
   struct funcinfo* each_func;
   struct funcinfo* best_fit = NULL;
-  bfd_vma best_fit_len = 0;
+  bfd_vma best_fit_len = (bfd_vma) -1;
   struct info_list_node *node;
   struct arange *arange;
   const char *name = bfd_asymbol_name (sym);
-  asection *sec = bfd_asymbol_section (sym);
 
   for (node = lookup_info_hash_table (hash_table, name);
        node;
@@ -4181,11 +5137,9 @@ info_hash_lookup_funcinfo (struct info_h
 	   arange;
 	   arange = arange->next)
 	{
-	  if ((!each_func->sec || each_func->sec == sec)
-	      && addr >= arange->low
+	  if (addr >= arange->low
 	      && addr < arange->high
-	      && (!best_fit
-		  || arange->high - arange->low < best_fit_len))
+	      && arange->high - arange->low < best_fit_len)
 	    {
 	      best_fit = each_func;
 	      best_fit_len = arange->high - arange->low;
@@ -4195,13 +5149,12 @@ info_hash_lookup_funcinfo (struct info_h
 
   if (best_fit)
     {
-      best_fit->sec = sec;
       *filename_ptr = best_fit->file;
       *linenumber_ptr = best_fit->line;
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Look up a varinfo by name using the given info hash table.  If found,
@@ -4210,48 +5163,45 @@ info_hash_lookup_funcinfo (struct info_h
    This function returns TRUE if a varinfo that matches the given symbol
    and address is found with any error; otherwise it returns FALSE.  */
 
-static bfd_boolean
+static bool
 info_hash_lookup_varinfo (struct info_hash_table *hash_table,
 			  asymbol *sym,
 			  bfd_vma addr,
 			  const char **filename_ptr,
 			  unsigned int *linenumber_ptr)
 {
-  const char *name = bfd_asymbol_name (sym);
-  asection *sec = bfd_asymbol_section (sym);
   struct varinfo* each;
   struct info_list_node *node;
+  const char *name = bfd_asymbol_name (sym);
 
   for (node = lookup_info_hash_table (hash_table, name);
        node;
        node = node->next)
     {
       each = (struct varinfo *) node->info;
-      if (each->addr == addr
-	  && (!each->sec || each->sec == sec))
+      if (each->addr == addr)
 	{
-	  each->sec = sec;
 	  *filename_ptr = each->file;
 	  *linenumber_ptr = each->line;
-	  return TRUE;
+	  return true;
 	}
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Update the funcinfo and varinfo info hash tables if they are
    not up to date.  Returns TRUE if there is no error; otherwise
    returns FALSE and disable the info hash tables.  */
 
-static bfd_boolean
+static bool
 stash_maybe_update_info_hash_tables (struct dwarf2_debug *stash)
 {
   struct comp_unit *each;
 
   /* Exit if hash tables are up-to-date.  */
   if (stash->f.all_comp_units == stash->hash_units_head)
-    return TRUE;
+    return true;
 
   if (stash->hash_units_head)
     each = stash->hash_units_head->prev_unit;
@@ -4264,13 +5214,13 @@ stash_maybe_update_info_hash_tables (str
 				stash->varinfo_hash_table))
 	{
 	  stash->info_hash_status = STASH_INFO_HASH_DISABLED;
-	  return FALSE;
+	  return false;
 	}
       each = each->prev_unit;
     }
 
   stash->hash_units_head = stash->f.all_comp_units;
-  return TRUE;
+  return true;
 }
 
 /* Check consistency of info hash tables.  This is for debugging only.  */
@@ -4282,7 +5232,7 @@ stash_verify_info_hash_table (struct dwa
   struct funcinfo *each_func;
   struct varinfo *each_var;
   struct info_list_node *node;
-  bfd_boolean found;
+  bool found;
 
   for (each_unit = stash->f.all_comp_units;
        each_unit;
@@ -4297,7 +5247,7 @@ stash_verify_info_hash_table (struct dwa
 	  node = lookup_info_hash_table (stash->funcinfo_hash_table,
 					 each_func->name);
 	  BFD_ASSERT (node);
-	  found = FALSE;
+	  found = false;
 	  while (node && !found)
 	    {
 	      found = node->info == each_func;
@@ -4315,7 +5265,7 @@ stash_verify_info_hash_table (struct dwa
 	  node = lookup_info_hash_table (stash->varinfo_hash_table,
 					 each_var->name);
 	  BFD_ASSERT (node);
-	  found = FALSE;
+	  found = false;
 	  while (node && !found)
 	    {
 	      found = node->info == each_var;
@@ -4363,7 +5313,7 @@ stash_maybe_enable_info_hash_tables (bfd
    TRUE and update the locations pointed to by filename_ptr and linenumber_ptr;
    otherwise it returns FALSE.  */
 
-static bfd_boolean
+static bool
 stash_find_line_fast (struct dwarf2_debug *stash,
 		      asymbol *sym,
 		      bfd_vma addr,
@@ -4381,17 +5331,17 @@ stash_find_line_fast (struct dwarf2_debu
 
 /* Save current section VMAs.  */
 
-static bfd_boolean
+static bool
 save_section_vma (const bfd *abfd, struct dwarf2_debug *stash)
 {
   asection *s;
   unsigned int i;
 
   if (abfd->section_count == 0)
-    return TRUE;
+    return true;
   stash->sec_vma = bfd_malloc (sizeof (*stash->sec_vma) * abfd->section_count);
   if (stash->sec_vma == NULL)
-    return FALSE;
+    return false;
   stash->sec_vma_count = abfd->section_count;
   for (i = 0, s = abfd->sections;
        s != NULL && i < abfd->section_count;
@@ -4402,7 +5352,7 @@ save_section_vma (const bfd *abfd, struc
       else
 	stash->sec_vma[i] = s->vma;
     }
-  return TRUE;
+  return true;
 }
 
 /* Compare current section VMAs against those at the time the stash
@@ -4412,7 +5362,7 @@ save_section_vma (const bfd *abfd, struc
    sections, so the stashed section contents depend on symbol values,
    which in turn depend on section VMAs.  */
 
-static bfd_boolean
+static bool
 section_vma_same (const bfd *abfd, const struct dwarf2_debug *stash)
 {
   asection *s;
@@ -4422,7 +5372,7 @@ section_vma_same (const bfd *abfd, const
      when the stash was created and now, then we cannot trust the
      stashed vma information.  */
   if (abfd->section_count != stash->sec_vma_count)
-    return FALSE;
+    return false;
 
   for (i = 0, s = abfd->sections;
        s != NULL && i < abfd->section_count;
@@ -4435,9 +5385,9 @@ section_vma_same (const bfd *abfd, const
       else
 	vma = s->vma;
       if (vma != stash->sec_vma[i])
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Read debug information from DEBUG_BFD when DEBUG_BFD is specified.
@@ -4445,60 +5395,66 @@ section_vma_same (const bfd *abfd, const
    or its gnu_debuglink. The results will be stored in PINFO.
    The function returns TRUE iff debug information is ready.  */
 
-bfd_boolean
+bool
 _bfd_dwarf2_slurp_debug_info (bfd *abfd, bfd *debug_bfd,
 			      const struct dwarf_debug_section *debug_sections,
 			      asymbol **symbols,
 			      void **pinfo,
-			      bfd_boolean do_place)
+			      bool do_place)
 {
-  bfd_size_type amt = sizeof (struct dwarf2_debug);
   bfd_size_type total_size;
   asection *msec;
   struct dwarf2_debug *stash = (struct dwarf2_debug *) *pinfo;
 
   if (stash != NULL)
     {
-      if (stash->orig_bfd == abfd
+      if (stash->orig_bfd_id == abfd->id
 	  && section_vma_same (abfd, stash))
 	{
 	  /* Check that we did previously find some debug information
 	     before attempting to make use of it.  */
-	  if (stash->f.bfd_ptr != NULL)
+	  if (stash->f.dwarf_info_size != 0)
 	    {
 	      if (do_place && !place_sections (abfd, stash))
-		return FALSE;
-	      return TRUE;
+		return false;
+	      return true;
 	    }
 
-	  return FALSE;
+	  return false;
 	}
       _bfd_dwarf2_cleanup_debug_info (abfd, pinfo);
-      memset (stash, 0, amt);
+      memset (stash, 0, sizeof (*stash));
     }
   else
     {
-      stash = (struct dwarf2_debug *) bfd_zalloc (abfd, amt);
+      stash = (struct dwarf2_debug *) bfd_zalloc (abfd, sizeof (*stash));
       if (! stash)
-	return FALSE;
+	return false;
+      *pinfo = stash;
     }
-  stash->orig_bfd = abfd;
+  stash->orig_bfd_id = abfd->id;
   stash->debug_sections = debug_sections;
   stash->f.syms = symbols;
   if (!save_section_vma (abfd, stash))
-    return FALSE;
+    return false;
 
   stash->f.abbrev_offsets = htab_create_alloc (10, hash_abbrev, eq_abbrev,
 					       del_abbrev, calloc, free);
   if (!stash->f.abbrev_offsets)
-    return FALSE;
+    return false;
 
   stash->alt.abbrev_offsets = htab_create_alloc (10, hash_abbrev, eq_abbrev,
 						 del_abbrev, calloc, free);
   if (!stash->alt.abbrev_offsets)
-    return FALSE;
+    return false;
 
-  *pinfo = stash;
+  stash->f.trie_root = alloc_trie_leaf (abfd);
+  if (!stash->f.trie_root)
+    return false;
+
+  stash->alt.trie_root = alloc_trie_leaf (abfd);
+  if (!stash->alt.trie_root)
+    return false;
 
   if (debug_bfd == NULL)
     debug_bfd = abfd;
@@ -4517,13 +5473,13 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 	   Note that at this point the stash has been allocated, but
 	   contains zeros.  This lets future calls to this function
 	   fail more quickly.  */
-	return FALSE;
+	return false;
 
       debug_bfd = bfd_openr (debug_filename, NULL);
       free (debug_filename);
       if (debug_bfd == NULL)
 	/* FIXME: Should we report our failure to follow the debuglink ?  */
-	return FALSE;
+	return false;
 
       /* Set BFD_DECOMPRESS to decompress debug sections.  */
       debug_bfd->flags |= BFD_DECOMPRESS;
@@ -4533,38 +5489,35 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 	  || !bfd_generic_link_read_symbols (debug_bfd))
 	{
 	  bfd_close (debug_bfd);
-	  return FALSE;
+	  return false;
 	}
 
       symbols = bfd_get_outsymbols (debug_bfd);
       stash->f.syms = symbols;
-      stash->close_on_cleanup = TRUE;
+      stash->close_on_cleanup = true;
     }
   stash->f.bfd_ptr = debug_bfd;
 
   if (do_place
       && !place_sections (abfd, stash))
-    return FALSE;
+    return false;
 
   /* There can be more than one DWARF2 info section in a BFD these
      days.  First handle the easy case when there's only one.  If
-     there's more than one, try case two: none of the sections is
-     compressed.  In that case, read them all in and produce one
-     large stash.  We do this in two passes - in the first pass we
+     there's more than one, try case two: read them all in and produce
+     one large stash.  We do this in two passes - in the first pass we
      just accumulate the section sizes, and in the second pass we
      read in the section's contents.  (The allows us to avoid
-     reallocing the data as we add sections to the stash.)  If
-     some or all sections are compressed, then do things the slow
-     way, with a bunch of reallocs.  */
+     reallocing the data as we add sections to the stash.)  */
 
   if (! find_debug_info (debug_bfd, debug_sections, msec))
     {
       /* Case 1: only one info section.  */
-      total_size = msec->size;
+      total_size = bfd_get_section_limit_octets (debug_bfd, msec);
       if (! read_section (debug_bfd, &stash->debug_sections[debug_info],
 			  symbols, 0,
 			  &stash->f.dwarf_info_buffer, &total_size))
-	return FALSE;
+	goto restore_vma;
     }
   else
     {
@@ -4573,43 +5526,47 @@ _bfd_dwarf2_slurp_debug_info (bfd *abfd,
 	   msec;
 	   msec = find_debug_info (debug_bfd, debug_sections, msec))
 	{
+	  if (bfd_section_size_insane (debug_bfd, msec))
+	    goto restore_vma;
+	  bfd_size_type readsz = bfd_get_section_limit_octets (debug_bfd, msec);
 	  /* Catch PR25070 testcase overflowing size calculation here.  */
-	  if (total_size + msec->size < total_size
-	      || total_size + msec->size < msec->size)
+	  if (total_size + readsz < total_size)
 	    {
 	      bfd_set_error (bfd_error_no_memory);
-	      return FALSE;
+	      goto restore_vma;
 	    }
-	  total_size += msec->size;
+	  total_size += readsz;
 	}
 
       stash->f.dwarf_info_buffer = (bfd_byte *) bfd_malloc (total_size);
       if (stash->f.dwarf_info_buffer == NULL)
-	return FALSE;
+	goto restore_vma;
 
       total_size = 0;
       for (msec = find_debug_info (debug_bfd, debug_sections, NULL);
 	   msec;
 	   msec = find_debug_info (debug_bfd, debug_sections, msec))
 	{
-	  bfd_size_type size;
-
-	  size = msec->size;
-	  if (size == 0)
+	  bfd_size_type readsz = bfd_get_section_limit_octets (debug_bfd, msec);
+	  if (readsz == 0)
 	    continue;
 
 	  if (!(bfd_simple_get_relocated_section_contents
 		(debug_bfd, msec, stash->f.dwarf_info_buffer + total_size,
 		 symbols)))
-	    return FALSE;
+	    goto restore_vma;
 
-	  total_size += size;
+	  total_size += readsz;
 	}
     }
 
   stash->f.info_ptr = stash->f.dwarf_info_buffer;
   stash->f.dwarf_info_size = total_size;
-  return TRUE;
+  return true;
+
+ restore_vma:
+  unset_sections (stash);
+  return false;
 }
 
 /* Parse the next DWARF2 compilation unit at FILE->INFO_PTR.  */
@@ -4625,15 +5582,13 @@ stash_comp_unit (struct dwarf2_debug *st
   if (file->info_ptr >= info_ptr_end)
     return NULL;
 
-  length = read_4_bytes (file->bfd_ptr, file->info_ptr, info_ptr_end);
+  length = read_4_bytes (file->bfd_ptr, &file->info_ptr, info_ptr_end);
   /* A 0xffffff length is the DWARF3 way of indicating
      we use 64-bit offsets, instead of 32-bit offsets.  */
   if (length == 0xffffffff)
     {
       offset_size = 8;
-      length = read_8_bytes (file->bfd_ptr, file->info_ptr + 4,
-			     info_ptr_end);
-      file->info_ptr += 12;
+      length = read_8_bytes (file->bfd_ptr, &file->info_ptr, info_ptr_end);
     }
   /* A zero length is the IRIX way of indicating 64-bit offsets,
      mostly because the 64-bit length will generally fit in 32
@@ -4641,9 +5596,7 @@ stash_comp_unit (struct dwarf2_debug *st
   else if (length == 0)
     {
       offset_size = 8;
-      length = read_4_bytes (file->bfd_ptr, file->info_ptr + 4,
-			     info_ptr_end);
-      file->info_ptr += 8;
+      length = read_4_bytes (file->bfd_ptr, &file->info_ptr, info_ptr_end);
     }
   /* In the absence of the hints above, we assume 32-bit DWARF2
      offsets even for targets with 64-bit addresses, because:
@@ -4655,20 +5608,32 @@ stash_comp_unit (struct dwarf2_debug *st
      the size hints that are tested for above then they are
      not conforming to the DWARF3 standard anyway.  */
   else
-    {
-      offset_size = 4;
-      file->info_ptr += 4;
-    }
+    offset_size = 4;
 
   if (length != 0
-      && file->info_ptr + length <= info_ptr_end
-      && file->info_ptr + length > file->info_ptr)
+      && length <= (size_t) (info_ptr_end - file->info_ptr))
     {
       struct comp_unit *each = parse_comp_unit (stash, file,
 						file->info_ptr, length,
 						info_ptr_unit, offset_size);
       if (each)
 	{
+	  if (file->comp_unit_tree == NULL)
+	    file->comp_unit_tree
+	      = splay_tree_new (splay_tree_compare_addr_range,
+				splay_tree_free_addr_range, NULL);
+
+	  struct addr_range *r
+	    = (struct addr_range *)bfd_malloc (sizeof (struct addr_range));
+	  r->start = each->info_ptr_unit;
+	  r->end = each->end_ptr;
+	  splay_tree_node v = splay_tree_lookup (file->comp_unit_tree,
+						 (splay_tree_key)r);
+	  if (v != NULL || r->end <= r->start)
+	    abort ();
+	  splay_tree_insert (file->comp_unit_tree, (splay_tree_key)r,
+			     (splay_tree_value)each);
+
 	  if (file->all_comp_units)
 	    file->all_comp_units->prev_unit = each;
 	  else
@@ -4677,6 +5642,12 @@ stash_comp_unit (struct dwarf2_debug *st
 	  each->next_unit = file->all_comp_units;
 	  file->all_comp_units = each;
 
+	  if (each->arange.high == 0)
+	    {
+	      each->next_unit_without_ranges = file->all_comp_units_without_ranges;
+	      file->all_comp_units_without_ranges = each->next_unit_without_ranges;
+	    }
+
 	  file->info_ptr += length;
 	  return each;
 	}
@@ -4750,14 +5721,14 @@ _bfd_dwarf2_find_symbol_bias (asymbol **
 	  {
 	    asymbol search, *sym;
 
-	    /* FIXME: Do we need to scan the aranges looking for the lowest pc value ?  */
+	    /* FIXME: Do we need to scan the aranges looking for the
+	       lowest pc value?  */
 
 	    search.name = func->name;
 	    sym = htab_find (sym_hash, &search);
 	    if (sym != NULL)
 	      {
-		result = ((bfd_signed_vma) func->arange.low) -
-		  ((bfd_signed_vma) (sym->value + sym->section->vma));
+		result = func->arange.low - (sym->value + sym->section->vma);
 		goto done;
 	      }
 	  }
@@ -4768,18 +5739,7 @@ _bfd_dwarf2_find_symbol_bias (asymbol **
   return result;
 }
 
-/* Find the source code location of SYMBOL.  If SYMBOL is NULL
-   then find the nearest source code location corresponding to
-   the address SECTION + OFFSET.
-   Returns 1 if the line is found without error and fills in
-   FILENAME_PTR and LINENUMBER_PTR.  In the case where SYMBOL was
-   NULL the FUNCTIONNAME_PTR is also filled in.
-   Returns 2 if partial information from _bfd_elf_find_function is
-   returned (function and maybe file) by looking at symbols.  DWARF2
-   info is present but not regarding the requested code location.
-   Returns 0 otherwise.
-   SYMBOLS contains the symbol table for ABFD.
-   DEBUG_SECTIONS contains the name of the dwarf debug sections.  */
+/* See _bfd_dwarf2_find_nearest_line_with_alt.  */
 
 int
 _bfd_dwarf2_find_nearest_line (bfd *abfd,
@@ -4794,6 +5754,43 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 			       const struct dwarf_debug_section *debug_sections,
 			       void **pinfo)
 {
+  return _bfd_dwarf2_find_nearest_line_with_alt
+    (abfd, NULL, symbols, symbol, section, offset, filename_ptr,
+     functionname_ptr, linenumber_ptr, discriminator_ptr, debug_sections,
+     pinfo);
+}
+
+/* Find the source code location of SYMBOL.  If SYMBOL is NULL
+   then find the nearest source code location corresponding to
+   the address SECTION + OFFSET.
+   Returns 1 if the line is found without error and fills in
+   FILENAME_PTR and LINENUMBER_PTR.  In the case where SYMBOL was
+   NULL the FUNCTIONNAME_PTR is also filled in.
+   Returns 2 if partial information from _bfd_elf_find_function is
+   returned (function and maybe file) by looking at symbols.  DWARF2
+   info is present but not regarding the requested code location.
+   Returns 0 otherwise.
+   SYMBOLS contains the symbol table for ABFD.
+   DEBUG_SECTIONS contains the name of the dwarf debug sections.
+   If ALT_FILENAME is given, attempt to open the file and use it
+   as the .gnu_debugaltlink file. Otherwise this file will be
+   searched for when needed.  */
+
+int
+_bfd_dwarf2_find_nearest_line_with_alt
+  (bfd *abfd,
+   const char *alt_filename,
+   asymbol **symbols,
+   asymbol *symbol,
+   asection *section,
+   bfd_vma offset,
+   const char **filename_ptr,
+   const char **functionname_ptr,
+   unsigned int *linenumber_ptr,
+   unsigned int *discriminator_ptr,
+   const struct dwarf_debug_section *debug_sections,
+   void **pinfo)
+{
   /* Read each compilation unit from the section .debug_info, and check
      to see if it contains the address we are searching for.  If yes,
      lookup the address, and return the line number info.  If no, go
@@ -4807,8 +5804,8 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
   bfd_vma addr;
   struct comp_unit* each;
   struct funcinfo *function = NULL;
-  int found = FALSE;
-  bfd_boolean do_line;
+  int found = false;
+  bool do_line;
 
   *filename_ptr = NULL;
   if (functionname_ptr != NULL)
@@ -4820,10 +5817,27 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
   if (! _bfd_dwarf2_slurp_debug_info (abfd, NULL, debug_sections,
 				      symbols, pinfo,
 				      (abfd->flags & (EXEC_P | DYNAMIC)) == 0))
-    return FALSE;
+    return false;
 
   stash = (struct dwarf2_debug *) *pinfo;
 
+  if (stash->alt.bfd_ptr == NULL && alt_filename != NULL)
+    {
+      bfd *alt_bfd = bfd_openr (alt_filename, NULL);
+
+      if (alt_bfd == NULL)
+	/* bfd_openr will have set the bfd_error.  */
+	return false;
+      if (!bfd_check_format (alt_bfd, bfd_object))
+	{
+	  bfd_set_error (bfd_error_wrong_format);
+	  bfd_close (alt_bfd);
+	  return false;
+	}
+
+      stash->alt.bfd_ptr = alt_bfd;
+    }
+
   do_line = symbol != NULL;
   if (do_line)
     {
@@ -4860,7 +5874,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 		&& ((*tmp)->flags & BSF_SECTION_SYM) == 0)
 	      {
 		symbol = *tmp;
-		do_line = TRUE;
+		do_line = true;
 		/* For local symbols, keep going in the hope we find a
 		   global.  */
 		if ((symbol->flags & BSF_GLOBAL) != 0)
@@ -4877,7 +5891,7 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
   /* A null info_ptr indicates that there is no dwarf2 info
      (or that an error occured while setting up the stash).  */
   if (! stash->f.info_ptr)
-    return FALSE;
+    return false;
 
   stash->inliner_chain = NULL;
 
@@ -4897,76 +5911,84 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 
       if (stash->info_hash_status == STASH_INFO_HASH_ON)
 	{
-	  found = stash_find_line_fast (stash, symbol, addr, filename_ptr,
-					linenumber_ptr);
+	  found = stash_find_line_fast (stash, symbol, addr,
+					filename_ptr, linenumber_ptr);
 	  if (found)
 	    goto done;
 	}
-      else
-	{
-	  /* Check the previously read comp. units first.  */
-	  for (each = stash->f.all_comp_units; each; each = each->next_unit)
-	    if ((symbol->flags & BSF_FUNCTION) == 0
-		|| each->arange.high == 0
-		|| comp_unit_contains_address (each, addr))
-	      {
-		found = comp_unit_find_line (each, symbol, addr, filename_ptr,
-					     linenumber_ptr);
-		if (found)
-		  goto done;
-	      }
-	}
+
+      /* Check the previously read comp. units first.  */
+      for (each = stash->f.all_comp_units; each; each = each->next_unit)
+	if ((symbol->flags & BSF_FUNCTION) == 0
+	    || comp_unit_may_contain_address (each, addr))
+	  {
+	    found = comp_unit_find_line (each, symbol, addr, filename_ptr,
+					 linenumber_ptr);
+	    if (found)
+	      goto done;
+	  }
     }
   else
     {
-      bfd_vma min_range = (bfd_vma) -1;
-      const char * local_filename = NULL;
-      struct funcinfo *local_function = NULL;
-      unsigned int local_linenumber = 0;
-      unsigned int local_discriminator = 0;
+      struct trie_node *trie = stash->f.trie_root;
+      unsigned int bits = VMA_BITS - 8;
+      struct comp_unit **prev_each;
 
-      for (each = stash->f.all_comp_units; each; each = each->next_unit)
+      /* Traverse interior nodes until we get to a leaf.  */
+      while (trie && trie->num_room_in_leaf == 0)
 	{
-	  bfd_vma range = (bfd_vma) -1;
+	  int ch = (addr >> bits) & 0xff;
+	  trie = ((struct trie_interior *) trie)->children[ch];
+	  bits -= 8;
+	}
 
-	  found = ((each->arange.high == 0
-		    || comp_unit_contains_address (each, addr))
-		   && (range = (comp_unit_find_nearest_line
-				(each, addr, &local_filename,
-				 &local_function, &local_linenumber,
-				 &local_discriminator))) != 0);
-	  if (found)
+      if (trie)
+	{
+	  const struct trie_leaf *leaf = (struct trie_leaf *) trie;
+	  unsigned int i;
+
+	  for (i = 0; i < leaf->num_stored_in_leaf; ++i)
+	    leaf->ranges[i].unit->mark = false;
+
+	  for (i = 0; i < leaf->num_stored_in_leaf; ++i)
 	    {
-	      /* PRs 15935 15994: Bogus debug information may have provided us
-		 with an erroneous match.  We attempt to counter this by
-		 selecting the match that has the smallest address range
-		 associated with it.  (We are assuming that corrupt debug info
-		 will tend to result in extra large address ranges rather than
-		 extra small ranges).
-
-		 This does mean that we scan through all of the CUs associated
-		 with the bfd each time this function is called.  But this does
-		 have the benefit of producing consistent results every time the
-		 function is called.  */
-	      if (range <= min_range)
-		{
-		  if (filename_ptr && local_filename)
-		    * filename_ptr = local_filename;
-		  if (local_function)
-		    function = local_function;
-		  if (discriminator_ptr && local_discriminator)
-		    * discriminator_ptr = local_discriminator;
-		  if (local_linenumber)
-		    * linenumber_ptr = local_linenumber;
-		  min_range = range;
-		}
-	    }
+	      struct comp_unit *unit = leaf->ranges[i].unit;
+	      if (unit->mark
+		  || addr < leaf->ranges[i].low_pc
+		  || addr >= leaf->ranges[i].high_pc)
+	        continue;
+	      unit->mark = true;
+
+	      found = comp_unit_find_nearest_line (unit, addr,
+						   filename_ptr,
+						   &function,
+						   linenumber_ptr,
+						   discriminator_ptr);
+	      if (found)
+		goto done;
+	   }
 	}
 
-      if (* linenumber_ptr)
-	{
-	  found = TRUE;
-	  goto done;
+      /* Also scan through all compilation units without any ranges,
+         taking them out of the list if they have acquired any since
+	 last time.  */
+      prev_each = &stash->f.all_comp_units_without_ranges;
+      for (each = *prev_each; each; each = each->next_unit_without_ranges)
+        {
+	  if (each->arange.high != 0)
+	    {
+	      *prev_each = each->next_unit_without_ranges;
+	      continue;
+	    }
+
+	  found = comp_unit_find_nearest_line (each, addr,
+					       filename_ptr,
+					       &function,
+					       linenumber_ptr,
+					       discriminator_ptr);
+	  if (found)
+	    goto done;
+	  prev_each = &each->next_unit_without_ranges;
 	}
     }
 
@@ -4980,18 +6002,16 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 	 address.  */
       if (do_line)
 	found = (((symbol->flags & BSF_FUNCTION) == 0
-		  || each->arange.high == 0
-		  || comp_unit_contains_address (each, addr))
+		  || comp_unit_may_contain_address (each, addr))
 		 && comp_unit_find_line (each, symbol, addr,
 					 filename_ptr, linenumber_ptr));
       else
-	found = ((each->arange.high == 0
-		  || comp_unit_contains_address (each, addr))
+	found = (comp_unit_may_contain_address (each, addr)
 		 && comp_unit_find_nearest_line (each, addr,
 						 filename_ptr,
 						 &function,
 						 linenumber_ptr,
-						 discriminator_ptr) != 0);
+						 discriminator_ptr));
 
       if (found)
 	break;
@@ -4999,7 +6019,11 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 
  done:
   if (functionname_ptr && function && function->is_linkage)
-    *functionname_ptr = function->name;
+    {
+      *functionname_ptr = function->name;
+      if (!found)
+        found = 2;
+    }
   else if (functionname_ptr
 	   && (!*functionname_ptr
 	       || (function && !function->is_linkage)))
@@ -5023,22 +6047,22 @@ _bfd_dwarf2_find_nearest_line (bfd *abfd
 	  sec_vma = section->vma;
 	  if (section->output_section != NULL)
 	    sec_vma = section->output_section->vma + section->output_offset;
-	  if (fun != NULL
-	      && fun->value + sec_vma == function->arange.low)
+	  if (fun == NULL)
+	    *functionname_ptr = function->name;
+	  else if (fun->value + sec_vma == function->arange.low)
 	    function->name = *functionname_ptr;
 	  /* Even if we didn't find a linkage name, say that we have
 	     to stop a repeated search of symbols.  */
-	  function->is_linkage = TRUE;
+	  function->is_linkage = true;
 	}
     }
 
-  if ((abfd->flags & (EXEC_P | DYNAMIC)) == 0)
-    unset_sections (stash);
+  unset_sections (stash);
 
   return found;
 }
 
-bfd_boolean
+bool
 _bfd_dwarf2_find_inliner_info (bfd *abfd ATTRIBUTE_UNUSED,
 			       const char **filename_ptr,
 			       const char **functionname_ptr,
@@ -5058,11 +6082,11 @@ _bfd_dwarf2_find_inliner_info (bfd *abfd
 	  *functionname_ptr = func->caller_func->name;
 	  *linenumber_ptr = func->caller_line;
 	  stash->inliner_chain = func->caller_func;
-	  return TRUE;
+	  return true;
 	}
     }
 
-  return FALSE;
+  return false;
 }
 
 void
@@ -5094,34 +6118,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;
 	    }
 	}
@@ -5132,13 +6144,18 @@ _bfd_dwarf2_cleanup_debug_info (bfd *abf
 	  free (file->line_table->dirs);
 	}
       htab_delete (file->abbrev_offsets);
+      if (file->comp_unit_tree != NULL)
+	splay_tree_delete (file->comp_unit_tree);
 
       free (file->dwarf_line_str_buffer);
       free (file->dwarf_str_buffer);
       free (file->dwarf_ranges_buffer);
+      free (file->dwarf_rnglists_buffer);
       free (file->dwarf_line_buffer);
       free (file->dwarf_abbrev_buffer);
       free (file->dwarf_info_buffer);
+      free (file->dwarf_addr_buffer);
+      free (file->dwarf_str_offsets_buffer);
       if (file == &stash->alt)
 	break;
       file = &stash->alt;
@@ -5151,6 +6168,82 @@ _bfd_dwarf2_cleanup_debug_info (bfd *abf
     bfd_close (stash->alt.bfd_ptr);
 }
 
+typedef struct elf_find_function_cache
+{
+  asection *     last_section;
+  asymbol *      func;
+  const char *   filename;
+  bfd_size_type  code_size;
+  bfd_vma        code_off;
+
+} elf_find_function_cache;
+
+
+/* Returns TRUE if symbol SYM with address CODE_OFF and size CODE_SIZE
+   is a better fit to match OFFSET than whatever is currenly stored in
+   CACHE.  */
+
+static inline bool
+better_fit (elf_find_function_cache *  cache,
+	    asymbol *                  sym,
+	    bfd_vma                    code_off,
+	    bfd_size_type              code_size,
+	    bfd_vma                    offset)
+{
+  /* If the symbol is beyond the desired offset, ignore it.  */
+  if (code_off > offset)
+    return false;
+
+  /* If the symbol is further away from the desired
+     offset than our current best, then ignore it.  */
+  if (code_off < cache->code_off)
+    return false;
+
+  /* On the other hand, if it is closer, then use it.  */
+  if (code_off > cache->code_off)
+    return true;
+
+  /* assert (code_off == cache->code_off);  */
+
+  /* If our current best fit does not actually reach the desired
+     offset...  */
+  if (cache->code_off + cache->code_size <= offset)
+    /* ... then return whichever candidate covers
+       more area and hence gets closer to OFFSET.  */
+    return code_size > cache->code_size;
+
+  /* The current cache'd symbol covers OFFSET.  */
+
+  /* If the new symbol does not cover the desired offset then skip it.  */  
+  if (code_off + code_size <= offset)
+    return false;
+
+  /* Both symbols cover OFFSET.  */
+
+  /* Prefer functions over non-functions.  */
+  flagword cache_flags = cache->func->flags;
+  flagword sym_flags   = sym->flags;
+
+  if ((cache_flags & BSF_FUNCTION) && ((sym_flags & BSF_FUNCTION) == 0))
+    return false;
+  if ((sym_flags & BSF_FUNCTION) && ((cache_flags & BSF_FUNCTION) == 0))
+    return true;
+
+  /* FIXME: Should we choose LOCAL over GLOBAL ?  */
+
+  /* Prefer typed symbols over notyped.  */
+  int cache_type = ELF_ST_TYPE (((elf_symbol_type *) cache->func)->internal_elf_sym.st_info);
+  int sym_type   = ELF_ST_TYPE (((elf_symbol_type *) sym)->internal_elf_sym.st_info);
+
+  if (cache_type == STT_NOTYPE && sym_type != STT_NOTYPE)
+    return true;
+  if (cache_type != STT_NOTYPE && sym_type == STT_NOTYPE)
+    return false;
+
+  /* Otherwise choose whichever symbol covers a smaller area.  */
+  return code_size < cache->code_size;
+}
+
 /* Find the function to a particular section and offset,
    for error reporting.  */
 
@@ -5162,21 +6255,14 @@ _bfd_elf_find_function (bfd *abfd,
 			const char **filename_ptr,
 			const char **functionname_ptr)
 {
-  struct elf_find_function_cache
-  {
-    asection *last_section;
-    asymbol *func;
-    const char *filename;
-    bfd_size_type func_size;
-  } *cache;
-
   if (symbols == NULL)
     return NULL;
 
   if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
     return NULL;
 
-  cache = elf_tdata (abfd)->elf_find_function_cache;
+  elf_find_function_cache * cache = elf_tdata (abfd)->elf_find_function_cache;
+
   if (cache == NULL)
     {
       cache = bfd_zalloc (abfd, sizeof (*cache));
@@ -5184,13 +6270,13 @@ _bfd_elf_find_function (bfd *abfd,
       if (cache == NULL)
 	return NULL;
     }
+
   if (cache->last_section != section
       || cache->func == NULL
       || offset < cache->func->value
-      || offset >= cache->func->value + cache->func_size)
+      || offset >= cache->func->value + cache->code_size)
     {
       asymbol *file;
-      bfd_vma low_func;
       asymbol **p;
       /* ??? Given multiple file symbols, it is impossible to reliably
 	 choose the right file name for global symbols.  File symbols are
@@ -5204,11 +6290,11 @@ _bfd_elf_find_function (bfd *abfd,
       const struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
       file = NULL;
-      low_func = 0;
       state = nothing_seen;
       cache->filename = NULL;
       cache->func = NULL;
-      cache->func_size = 0;
+      cache->code_size = 0;
+      cache->code_off = 0;
       cache->last_section = section;
 
       for (p = symbols; *p != NULL; p++)
@@ -5225,24 +6311,36 @@ _bfd_elf_find_function (bfd *abfd,
 	      continue;
 	    }
 
+	  if (state == nothing_seen)
+	    state = symbol_seen;
+
 	  size = bed->maybe_function_sym (sym, section, &code_off);
-	  if (size != 0
-	      && code_off <= offset
-	      && (code_off > low_func
-		  || (code_off == low_func
-		      && size > cache->func_size)))
+
+	  if (size == 0)
+	    continue;
+
+	  if (better_fit (cache, sym, code_off, size, offset))
 	    {
 	      cache->func = sym;
-	      cache->func_size = size;
+	      cache->code_size = size;
+	      cache->code_off = code_off;
 	      cache->filename = NULL;
-	      low_func = code_off;
+
 	      if (file != NULL
 		  && ((sym->flags & BSF_LOCAL) != 0
 		      || state != file_after_symbol_seen))
 		cache->filename = bfd_asymbol_name (file);
 	    }
-	  if (state == nothing_seen)
-	    state = symbol_seen;
+	  /* Otherwise, if the symbol is beyond the desired offset but it
+	     lies within the bounds of the current best match then reduce
+	     the size of the current best match so that future searches
+	     will not not used the cached symbol by mistake.  */
+	  else if (code_off > offset 
+		   && code_off > cache->code_off
+		   && code_off < cache->code_off + cache->code_size)
+	    {
+	      cache->code_size = code_off - cache->code_off;
+	    }
 	}
     }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ecoff-bfd.h ./bfd/ecoff-bfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ecoff-bfd.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ecoff-bfd.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Externally visible ECOFF routines.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,9 +18,11 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-extern bfd_boolean bfd_ecoff_set_gp_value
+extern asection _bfd_ecoff_scom_section;
+
+extern bool bfd_ecoff_set_gp_value
   (bfd *abfd, bfd_vma gp_value);
-extern bfd_boolean bfd_ecoff_set_regmasks
+extern bool bfd_ecoff_set_regmasks
   (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
    unsigned long *cprmask);
 extern void *bfd_ecoff_debug_init
@@ -29,31 +31,31 @@ extern void *bfd_ecoff_debug_init
 extern void bfd_ecoff_debug_free
   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
    const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_accumulate
+extern bool bfd_ecoff_debug_accumulate
   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
    struct ecoff_debug_info *input_debug,
    const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_accumulate_other
+extern bool bfd_ecoff_debug_accumulate_other
   (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
    const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
    struct bfd_link_info *);
-extern bfd_boolean bfd_ecoff_debug_externals
+extern bool bfd_ecoff_debug_externals
   (bfd *abfd, struct ecoff_debug_info *debug,
-   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
-   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
+   const struct ecoff_debug_swap *swap, bool relocatable,
+   bool (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
    void (*set_index) (struct bfd_symbol *, bfd_size_type));
-extern bfd_boolean bfd_ecoff_debug_one_external
+extern bool bfd_ecoff_debug_one_external
   (bfd *abfd, struct ecoff_debug_info *debug,
    const struct ecoff_debug_swap *swap, const char *name,
    struct ecoff_extr *esym);
 extern bfd_size_type bfd_ecoff_debug_size
   (bfd *abfd, struct ecoff_debug_info *debug,
    const struct ecoff_debug_swap *swap);
-extern bfd_boolean bfd_ecoff_write_debug
+extern bool bfd_ecoff_write_debug
   (bfd *abfd, struct ecoff_debug_info *debug,
    const struct ecoff_debug_swap *swap, file_ptr where);
-extern bfd_boolean bfd_ecoff_write_accumulated_debug
+extern bool bfd_ecoff_write_accumulated_debug
   (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
    const struct ecoff_debug_swap *swap,
    struct bfd_link_info *info, file_ptr where);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ecoff.c ./bfd/ecoff.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ecoff.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ecoff.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic ECOFF (Extended-COFF) routines.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Original version by Per Bothner.
    Full support added by Ian Lance Taylor, ian@cygnus.com.
 
@@ -46,52 +46,24 @@
 #include "libiberty.h"
 
 #define streq(a, b)	(strcmp ((a), (b)) == 0)
-#define strneq(a, b, n)	(strncmp ((a), (b), (n)) == 0)
 
 
 /* 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,
-  /* linker_mark, linker_has_input, gc_mark, compress_status,	   */
-     0,		  0,		    1,	     0,
-  /* segment_mark, sec_info_type, use_rela_p,			   */
-     0,		   0,		  0,
-  /* 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, */
-     0,	  0,   0,    0,	      0,	       0,     0,
-  /* output_offset, output_section, alignment_power,		   */
-     0,		    NULL,	    0,
-  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */
-     NULL,	 NULL,	      0,	   0,	    0,
-  /* line_filepos, userdata, contents, lineno, lineno_count,	   */
-     0,		   NULL,     NULL,     NULL,   0,
-  /* entsize, kept_section, moving_line_filepos,		   */
-     0,	      NULL,	    0,
-  /* target_index, used_by_bfd, constructor_chain, owner,	   */
-     0,		   NULL,	NULL,		   NULL,
-  /* symbol,							   */
-     NULL,
-  /* symbol_ptr_ptr,						   */
-     NULL,
-  /* map_head, map_tail						   */
-     { NULL }, { NULL }
-};
+  BFD_FAKE_SECTION (bfd_debug_section, NULL, "*DEBUG*", 0, 0);
 
 /* Create an ECOFF object.  */
 
-bfd_boolean
+bool
 _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)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* This is a hook called by coff_real_object_p to create any backend
@@ -137,9 +109,29 @@ _bfd_ecoff_mkobject_hook (bfd *abfd, voi
   return (void *) ecoff;
 }
 
+bool
+_bfd_ecoff_bfd_free_cached_info (bfd *abfd)
+{
+  struct ecoff_tdata *tdata;
+
+  if ((bfd_get_format (abfd) == bfd_object
+       || bfd_get_format (abfd) == bfd_core)
+      && (tdata = ecoff_data (abfd)) != NULL)
+    {
+      while (tdata->mips_refhi_list != NULL)
+	{
+	  struct mips_hi *ref = tdata->mips_refhi_list;
+	  tdata->mips_refhi_list = ref->next;
+	  free (ref);
+	}
+      _bfd_ecoff_free_ecoff_debug_info (&tdata->debug_info);
+    }
+  return _bfd_generic_bfd_free_cached_info (abfd);
+}
+
 /* Initialize a new section.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_new_section_hook (bfd *abfd, asection *section)
 {
   unsigned int i;
@@ -154,14 +146,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}
   };
@@ -195,7 +187,7 @@ _bfd_ecoff_set_alignment_hook (bfd *abfd
    below.  This could be an ECOFF backend routine, with one version
    for each target, but there aren't all that many ECOFF targets.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_set_arch_mach_hook (bfd *abfd, void * filehdr)
 {
   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
@@ -239,12 +231,12 @@ _bfd_ecoff_set_arch_mach_hook (bfd *abfd
   return bfd_default_set_arch_mach (abfd, arch, mach);
 }
 
-bfd_boolean
+bool
 _bfd_ecoff_no_long_sections (bfd *abfd, int enable)
 {
   (void) abfd;
   (void) enable;
-  return FALSE;
+  return false;
 }
 
 /* Get the magic number to use based on the architecture and machine.
@@ -362,7 +354,7 @@ ecoff_sec_to_styp_flags (const char *nam
 
 /* Get the BFD flags to use for a section.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_styp_to_sec_flags (bfd *abfd ATTRIBUTE_UNUSED,
 			      void * hdr,
 			      const char *name ATTRIBUTE_UNUSED,
@@ -410,28 +402,31 @@ _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
     sec_flags |= SEC_ALLOC | SEC_LOAD;
 
   * flags_ptr = sec_flags;
-  return TRUE;
+  return true;
 }
 
 /* Read in the symbolic header for an ECOFF object file.  */
 
-static bfd_boolean
+static bool
 ecoff_slurp_symbolic_header (bfd *abfd)
 {
   const struct ecoff_backend_data * const backend = ecoff_backend (abfd);
@@ -442,13 +437,13 @@ ecoff_slurp_symbolic_header (bfd *abfd)
   /* See if we've already read it in.  */
   if (ecoff_data (abfd)->debug_info.symbolic_header.magic ==
       backend->debug_swap.sym_magic)
-    return TRUE;
+    return true;
 
   /* See whether there is a symbolic header.  */
   if (ecoff_data (abfd)->sym_filepos == 0)
     {
       abfd->symcount = 0;
-      return TRUE;
+      return true;
     }
 
   /* At this point bfd_get_symcount (abfd) holds the number of symbols
@@ -459,17 +454,16 @@ ecoff_slurp_symbolic_header (bfd *abfd)
   if (bfd_get_symcount (abfd) != external_hdr_size)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* 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);
 
@@ -479,23 +473,38 @@ ecoff_slurp_symbolic_header (bfd *abfd)
       goto error_return;
     }
 
+#define FIX(start, count) \
+  if (internal_symhdr->start == 0)	\
+    internal_symhdr->count = 0;
+
+  FIX (cbLineOffset, cbLine);
+  FIX (cbDnOffset, idnMax);
+  FIX (cbPdOffset, ipdMax);
+  FIX (cbSymOffset, isymMax);
+  FIX (cbOptOffset, ioptMax);
+  FIX (cbAuxOffset, iauxMax);
+  FIX (cbSsOffset, issMax);
+  FIX (cbSsExtOffset, issExtMax);
+  FIX (cbFdOffset, ifdMax);
+  FIX (cbRfdOffset, crfd);
+  FIX (cbExtOffset, iextMax);
+#undef FIX
+
   /* Now we can get the correct number of symbols.  */
   abfd->symcount = internal_symhdr->isymMax + internal_symhdr->iextMax;
 
-  if (raw != NULL)
-    free (raw);
-  return TRUE;
+  free (raw);
+  return true;
  error_return:
-  if (raw != NULL)
-    free (raw);
-  return FALSE;
+  free (raw);
+  return false;
 }
 
 /* Read in and swap the important symbolic information for an ECOFF
    object file.  This is called by gdb via the read_debug_info entry
    point in the backend structure.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_slurp_symbolic_info (bfd *abfd,
 				asection *ignore ATTRIBUTE_UNUSED,
 				struct ecoff_debug_info *debug)
@@ -512,21 +521,22 @@ _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);
 
   /* Check whether we've already gotten it, and whether there's any to
      get.  */
-  if (ecoff_data (abfd)->raw_syments != NULL)
-    return TRUE;
+  if (debug->alloc_syments)
+    return true;
   if (ecoff_data (abfd)->sym_filepos == 0)
     {
       abfd->symcount = 0;
-      return TRUE;
+      return true;
     }
 
   if (! ecoff_slurp_symbolic_header (abfd))
-    return FALSE;
+    return false;
 
   internal_symhdr = &debug->symbolic_header;
 
@@ -539,12 +549,24 @@ _bfd_ecoff_slurp_symbolic_info (bfd *abf
      documented section. And the ordering of the sections varies between
      statically and dynamically linked executables.
      If bfd supports SEEK_END someday, this code could be simplified.  */
-  raw_end = 0;
+  raw_end = raw_base;
 
 #define UPDATE_RAW_END(start, count, size) \
-  cb_end = internal_symhdr->start + internal_symhdr->count * (size); \
-  if (cb_end > raw_end) \
-    raw_end = cb_end
+  do									\
+    if (internal_symhdr->count != 0)					\
+      {									\
+	if (internal_symhdr->start < raw_base)				\
+	  goto err;							\
+	if (_bfd_mul_overflow ((unsigned long) internal_symhdr->count,	\
+			       (size), &amt))				\
+	  goto err;							\
+	cb_end = internal_symhdr->start + amt;				\
+	if (cb_end < internal_symhdr->start)				\
+	  goto err;							\
+	if (cb_end > raw_end)						\
+	  raw_end = cb_end;						\
+      }									\
+  while (0)
 
   UPDATE_RAW_END (cbLineOffset, cbLine, sizeof (unsigned char));
   UPDATE_RAW_END (cbDnOffset, idnMax, backend->debug_swap.external_dnr_size);
@@ -566,45 +588,45 @@ _bfd_ecoff_slurp_symbolic_info (bfd *abf
   if (raw_size == 0)
     {
       ecoff_data (abfd)->sym_filepos = 0;
-      return TRUE;
+      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;
+  debug->alloc_syments = true;
 
   /* Get pointers for the numeric offsets in the HDRR structure.  */
-#define FIX(off1, off2, type)				\
-  if (internal_symhdr->off1 == 0)			\
-    debug->off2 = NULL;					\
-  else							\
-    debug->off2 = (type) ((char *) raw			\
-			  + (internal_symhdr->off1	\
-			     - raw_base))
-
-  FIX (cbLineOffset, line, unsigned char *);
-  FIX (cbDnOffset, external_dnr, void *);
-  FIX (cbPdOffset, external_pdr, void *);
-  FIX (cbSymOffset, external_sym, void *);
-  FIX (cbOptOffset, external_opt, void *);
-  FIX (cbAuxOffset, external_aux, union aux_ext *);
-  FIX (cbSsOffset, ss, char *);
-  FIX (cbSsExtOffset, ssext, char *);
-  FIX (cbFdOffset, external_fdr, void *);
-  FIX (cbRfdOffset, external_rfd, void *);
-  FIX (cbExtOffset, external_ext, void *);
+#define FIX(start, count, ptr, type) \
+  if (internal_symhdr->count == 0)					\
+    debug->ptr = NULL;							\
+  else									\
+    debug->ptr = (type) ((char *) raw					\
+			 + (internal_symhdr->start - raw_base))
+
+  FIX (cbLineOffset, cbLine, line, unsigned char *);
+  FIX (cbDnOffset, idnMax, external_dnr, void *);
+  FIX (cbPdOffset, ipdMax, external_pdr, void *);
+  FIX (cbSymOffset, isymMax, external_sym, void *);
+  FIX (cbOptOffset, ioptMax, external_opt, void *);
+  FIX (cbAuxOffset, iauxMax, external_aux, union aux_ext *);
+  FIX (cbSsOffset, issMax, ss, char *);
+  FIX (cbSsExtOffset, issExtMax, ssext, char *);
+  FIX (cbFdOffset, ifdMax, external_fdr, void *);
+  FIX (cbRfdOffset, crfd, external_rfd, void *);
+  FIX (cbExtOffset, iextMax, external_ext, void *);
 #undef FIX
 
+  /* Ensure string sections are zero terminated.  */
+  if (debug->ss)
+    debug->ss[internal_symhdr->issMax - 1] = 0;
+  if (debug->ssext)
+    debug->ssext[internal_symhdr->issExtMax - 1] = 0;
+
   /* I don't want to always swap all the data, because it will just
      waste time and most programs will never look at it.  The only
      time the linker needs most of the debugging information swapped
@@ -613,49 +635,46 @@ _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))
+    {
+    err:
+      bfd_set_error (bfd_error_file_too_big);
+      return false;
+    }
+  debug->fdr = (FDR *) bfd_alloc (abfd, amt);
   if (debug->fdr == NULL)
-    return FALSE;
+    return false;
   external_fdr_size = backend->debug_swap.external_fdr_size;
   fdr_ptr = debug->fdr;
   fraw_src = (char *) debug->external_fdr;
   /* PR 17512: file: 3372-1243-0.004.  */
   if (fraw_src == NULL && internal_symhdr->ifdMax > 0)
-    return FALSE;
+    return false;
   fraw_end = fraw_src + internal_symhdr->ifdMax * external_fdr_size;
   for (; fraw_src < fraw_end; fraw_src += external_fdr_size, fdr_ptr++)
     (*backend->debug_swap.swap_fdr_in) (abfd, (void *) fraw_src, fdr_ptr);
 
-  return TRUE;
+  return true;
 }
 
 /* ECOFF symbol table routines.  The ECOFF symbol table is described
    in gcc/mips-tfile.c.  */
 
-/* ECOFF uses two common sections.  One is the usual one, and the
-   other is for small objects.  All the small objects are kept
-   together, and then referenced via the gp pointer, which yields
-   faster assembler code.  This is what we use for the small common
-   section.  */
-static asection ecoff_scom_section;
-static asymbol ecoff_scom_symbol;
-static asymbol *ecoff_scom_symbol_ptr;
-
 /* Create an empty symbol.  */
 
 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)
     return NULL;
   new_symbol->symbol.section = NULL;
   new_symbol->fdr = NULL;
-  new_symbol->local = FALSE;
+  new_symbol->local = false;
   new_symbol->native = NULL;
   new_symbol->symbol.the_bfd = abfd;
   return &new_symbol->symbol;
@@ -663,7 +682,7 @@ _bfd_ecoff_make_empty_symbol (bfd *abfd)
 
 /* Set the BFD flags and section for an ECOFF symbol.  */
 
-static bfd_boolean
+static bool
 ecoff_set_symbol_info (bfd *abfd,
 		       SYMR *ecoff_sym,
 		       asymbol *asym,
@@ -688,12 +707,12 @@ ecoff_set_symbol_info (bfd *abfd,
       if (ECOFF_IS_STAB (ecoff_sym))
 	{
 	  asym->flags = BSF_DEBUGGING;
-	  return TRUE;
+	  return true;
 	}
       break;
     default:
       asym->flags = BSF_DEBUGGING;
-      return TRUE;
+      return true;
     }
 
   if (weak)
@@ -782,20 +801,7 @@ ecoff_set_symbol_info (bfd *abfd,
 	}
       /* Fall through.  */
     case scSCommon:
-      if (ecoff_scom_section.name == NULL)
-	{
-	  /* Initialize the small common section.  */
-	  ecoff_scom_section.name = SCOMMON;
-	  ecoff_scom_section.flags = SEC_IS_COMMON;
-	  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;
-	  ecoff_scom_symbol.name = SCOMMON;
-	  ecoff_scom_symbol.flags = BSF_SECTION_SYM;
-	  ecoff_scom_symbol.section = &ecoff_scom_section;
-	  ecoff_scom_symbol_ptr = &ecoff_scom_symbol;
-	}
-      asym->section = &ecoff_scom_section;
+      asym->section = &_bfd_ecoff_scom_section;
       asym->flags = 0;
       break;
     case scVarRegister:
@@ -847,12 +853,12 @@ ecoff_set_symbol_info (bfd *abfd,
 	  break;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Read an ECOFF symbol table.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_slurp_symbol_table (bfd *abfd)
 {
   const struct ecoff_backend_data * const backend = ecoff_backend (abfd);
@@ -870,22 +876,28 @@ _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)
-    return TRUE;
+    return true;
 
   /* Get the symbolic information.  */
   if (! _bfd_ecoff_slurp_symbolic_info (abfd, NULL,
 					&ecoff_data (abfd)->debug_info))
-    return FALSE;
+    return false;
   if (bfd_get_symcount (abfd) == 0)
-    return TRUE;
+    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;
+    return false;
 
   internal_ptr = internal;
   eraw_src = (char *) ecoff_data (abfd)->debug_info.external_ext;
@@ -899,9 +911,13 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd
       (*swap_ext_in) (abfd, (void *) eraw_src, &internal_esym);
 
       /* PR 17512: file: 3372-1000-0.004.  */
-      if (internal_esym.asym.iss >= ecoff_data (abfd)->debug_info.symbolic_header.issExtMax
+      HDRR *symhdr = &ecoff_data (abfd)->debug_info.symbolic_header;
+      if (internal_esym.asym.iss >= symhdr->issExtMax
 	  || internal_esym.asym.iss < 0)
-	return FALSE;
+	{
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
 
       internal_ptr->symbol.name = (ecoff_data (abfd)->debug_info.ssext
 				   + internal_esym.asym.iss);
@@ -909,21 +925,17 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd
       if (!ecoff_set_symbol_info (abfd, &internal_esym.asym,
 				  &internal_ptr->symbol, 1,
 				  internal_esym.weakext))
-	return FALSE;
+	return false;
 
       /* The alpha uses a negative ifd field for section symbols.  */
-      if (internal_esym.ifd >= 0)
-	{
-	  /* PR 17512: file: 3372-1983-0.004.  */
-	  if (internal_esym.ifd >= ecoff_data (abfd)->debug_info.symbolic_header.ifdMax)
-	    internal_ptr->fdr = NULL;
-	  else
-	    internal_ptr->fdr = (ecoff_data (abfd)->debug_info.fdr
-				 + internal_esym.ifd);
-	}
-      else
+      /* PR 17512: file: 3372-1983-0.004.  */
+      if (internal_esym.ifd >= symhdr->ifdMax
+	  || internal_esym.ifd < 0)
 	internal_ptr->fdr = NULL;
-      internal_ptr->local = FALSE;
+      else
+	internal_ptr->fdr = (ecoff_data (abfd)->debug_info.fdr
+			     + internal_esym.ifd);
+      internal_ptr->local = false;
       internal_ptr->native = (void *) eraw_src;
     }
 
@@ -935,7 +947,22 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd
     {
       char *lraw_src;
       char *lraw_end;
+      HDRR *symhdr = &ecoff_data (abfd)->debug_info.symbolic_header;
 
+      if (fdr_ptr->csym == 0)
+	continue;
+      if (fdr_ptr->isymBase < 0
+	  || fdr_ptr->isymBase > symhdr->isymMax
+	  || fdr_ptr->csym < 0
+	  || fdr_ptr->csym > symhdr->isymMax - fdr_ptr->isymBase
+	  || fdr_ptr->csym > ((long) bfd_get_symcount (abfd)
+			      - (internal_ptr - internal))
+	  || fdr_ptr->issBase < 0
+	  || fdr_ptr->issBase > symhdr->issMax)
+	{
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
       lraw_src = ((char *) ecoff_data (abfd)->debug_info.external_sym
 		  + fdr_ptr->isymBase * external_sym_size);
       lraw_end = lraw_src + fdr_ptr->csym * external_sym_size;
@@ -946,14 +973,21 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd
 	  SYMR internal_sym;
 
 	  (*swap_sym_in) (abfd, (void *) lraw_src, &internal_sym);
+
+	  if (internal_sym.iss >= symhdr->issMax - fdr_ptr->issBase
+	      || internal_sym.iss < 0)
+	    {
+	      bfd_set_error (bfd_error_bad_value);
+	      return false;
+	    }
 	  internal_ptr->symbol.name = (ecoff_data (abfd)->debug_info.ss
 				       + fdr_ptr->issBase
 				       + internal_sym.iss);
 	  if (!ecoff_set_symbol_info (abfd, &internal_sym,
 				      &internal_ptr->symbol, 0, 0))
-	    return FALSE;
+	    return false;
 	  internal_ptr->fdr = fdr_ptr;
-	  internal_ptr->local = TRUE;
+	  internal_ptr->local = true;
 	  internal_ptr->native = (void *) lraw_src;
 	}
     }
@@ -975,7 +1009,7 @@ _bfd_ecoff_slurp_symbol_table (bfd *abfd
 
   ecoff_data (abfd)->canonical_symbols = internal;
 
-  return TRUE;
+  return true;
 }
 
 /* Return the amount of space needed for the canonical symbols.  */
@@ -1086,7 +1120,7 @@ ecoff_emit_aggregate (bfd *abfd,
 /* Convert the type information to string format.  */
 
 static char *
-ecoff_type_to_string (bfd *abfd, FDR *fdr, unsigned int indx)
+ecoff_type_to_string (bfd *abfd, FDR *fdr, unsigned int indx, char *buff)
 {
   union aux_ext *aux_ptr;
   int bigendian;
@@ -1101,9 +1135,8 @@ ecoff_type_to_string (bfd *abfd, FDR *fd
   unsigned int basic_type;
   int i;
   char buffer1[1024];
-  static char buffer2[1024];
   char *p1 = buffer1;
-  char *p2 = buffer2;
+  char *p2 = buff;
   RNDXR rndx;
 
   aux_ptr = ecoff_data (abfd)->debug_info.external_aux + fdr->iauxBase;
@@ -1269,7 +1302,7 @@ ecoff_type_to_string (bfd *abfd, FDR *fd
       break;
     }
 
-  p1 += strlen (buffer1);
+  p1 += strlen (p1);
 
   /* If this is a bitfield, get the bitsize.  */
   if (u.ti.fBitfield)
@@ -1278,7 +1311,6 @@ ecoff_type_to_string (bfd *abfd, FDR *fd
 
       bitsize = AUX_GET_WIDTH (bigendian, &aux_ptr[indx++]);
       sprintf (p1, " : %d", bitsize);
-      p1 += strlen (buffer1);
     }
 
   /* Deal with any qualifiers.  */
@@ -1362,7 +1394,7 @@ ecoff_type_to_string (bfd *abfd, FDR *fd
 			       (long) (qualifiers[j].stride));
 
 		    else
-		      sprintf (p2, " {%ld bits}", (long) (qualifiers[j].stride));
+		      sprintf (p2, " {%ld bits}", (long) qualifiers[j].stride);
 
 		    p2 += strlen (p2);
 		    strcpy (p2, "] of ");
@@ -1375,7 +1407,7 @@ ecoff_type_to_string (bfd *abfd, FDR *fd
     }
 
   strcpy (p2, buffer1);
-  return buffer2;
+  return buff;
 }
 
 /* Return information about ECOFF symbol SYMBOL in RET.  */
@@ -1390,7 +1422,7 @@ _bfd_ecoff_get_symbol_info (bfd *abfd AT
 
 /* Return whether this is a local label.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_bfd_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 				    const char *name)
 {
@@ -1408,11 +1440,13 @@ _bfd_ecoff_print_symbol (bfd *abfd,
   const struct ecoff_debug_swap * const debug_swap
     = &ecoff_backend (abfd)->debug_swap;
   FILE *file = (FILE *)filep;
+  const char *symname = (symbol->name != bfd_symbol_error_name
+			 ? symbol->name : _("<corrupt>"));
 
   switch (how)
     {
     case bfd_print_symbol_name:
-      fprintf (file, "%s", symbol->name);
+      fprintf (file, "%s", symname);
       break;
     case bfd_print_symbol_more:
       if (ecoffsymbol (symbol)->local)
@@ -1422,7 +1456,7 @@ _bfd_ecoff_print_symbol (bfd *abfd,
 	  (*debug_swap->swap_sym_in) (abfd, ecoffsymbol (symbol)->native,
 				      &ecoff_sym);
 	  fprintf (file, "ecoff local ");
-	  fprintf_vma (file, (bfd_vma) ecoff_sym.value);
+	  bfd_fprintf_vma (abfd, file, ecoff_sym.value);
 	  fprintf (file, " %x %x", (unsigned) ecoff_sym.st,
 		   (unsigned) ecoff_sym.sc);
 	}
@@ -1433,7 +1467,7 @@ _bfd_ecoff_print_symbol (bfd *abfd,
 	  (*debug_swap->swap_ext_in) (abfd, ecoffsymbol (symbol)->native,
 				      &ecoff_ext);
 	  fprintf (file, "ecoff extern ");
-	  fprintf_vma (file, (bfd_vma) ecoff_ext.asym.value);
+	  bfd_fprintf_vma (abfd, file, ecoff_ext.asym.value);
 	  fprintf (file, " %x %x", (unsigned) ecoff_ext.asym.st,
 		   (unsigned) ecoff_ext.asym.sc);
 	}
@@ -1476,13 +1510,13 @@ _bfd_ecoff_print_symbol (bfd *abfd,
 
 	fprintf (file, "[%3d] %c ",
 		 pos, type);
-	fprintf_vma (file, (bfd_vma) ecoff_ext.asym.value);
+	bfd_fprintf_vma (abfd, file, ecoff_ext.asym.value);
 	fprintf (file, " st %x sc %x indx %x %c%c%c %s",
 		 (unsigned) ecoff_ext.asym.st,
 		 (unsigned) ecoff_ext.asym.sc,
 		 (unsigned) ecoff_ext.asym.index,
 		 jmptbl, cobol_main, weakext,
-		 symbol->name);
+		 symname);
 
 	if (ecoffsymbol (symbol)->fdr != NULL
 	    && ecoff_ext.asym.index != indexNil)
@@ -1544,13 +1578,16 @@ _bfd_ecoff_print_symbol (bfd *abfd,
 		if (ECOFF_IS_STAB (&ecoff_ext.asym))
 		  ;
 		else if (ecoffsymbol (symbol)->local)
-		  /* xgettext:c-format */
-		  fprintf (file, _("\n      End+1 symbol: %-7ld   Type:  %s"),
-			   ((long)
-			    (AUX_GET_ISYM (bigendian,
-					   &aux_base[ecoff_ext.asym.index])
-			     + sym_base)),
-			   ecoff_type_to_string (abfd, fdr, indx + 1));
+		  {
+		    char buff[1024];
+		    /* xgettext:c-format */
+		    fprintf (file, _("\n      End+1 symbol: %-7ld   Type:  %s"),
+			     ((long)
+			      (AUX_GET_ISYM (bigendian,
+					     &aux_base[ecoff_ext.asym.index])
+			       + sym_base)),
+			     ecoff_type_to_string (abfd, fdr, indx + 1, buff));
+		  }
 		else
 		  fprintf (file, _("\n      Local symbol: %ld"),
 			   ((long) indx
@@ -1576,8 +1613,11 @@ _bfd_ecoff_print_symbol (bfd *abfd,
 
 	      default:
 		if (! ECOFF_IS_STAB (&ecoff_ext.asym))
-		  fprintf (file, _("\n      Type: %s"),
-			   ecoff_type_to_string (abfd, fdr, indx));
+		  {
+		    char buff[1024];
+		    fprintf (file, _("\n      Type: %s"),
+			     ecoff_type_to_string (abfd, fdr, indx, buff));
+		  }
 		break;
 	      }
 	  }
@@ -1588,7 +1628,7 @@ _bfd_ecoff_print_symbol (bfd *abfd,
 
 /* Read in the relocs for a section.  */
 
-static bfd_boolean
+static bool
 ecoff_slurp_reloc_table (bfd *abfd,
 			 asection *section,
 			 asymbol **symbols)
@@ -1597,31 +1637,34 @@ 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;
 
   if (section->relocation != NULL
       || section->reloc_count == 0
       || (section->flags & SEC_CONSTRUCTOR) != 0)
-    return TRUE;
+    return true;
 
   if (! _bfd_ecoff_slurp_symbol_table (abfd))
-    return FALSE;
-
-  amt = section->reloc_count;
-  amt *= sizeof (arelent);
-  internal_relocs = (arelent *) bfd_alloc (abfd, amt);
+    return false;
 
   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)
-    return FALSE;
+    return false;
+  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++)
     {
@@ -1630,22 +1673,17 @@ ecoff_slurp_reloc_table (bfd *abfd,
       (*backend->swap_reloc_in) (abfd,
 				 external_relocs + i * external_reloc_size,
 				 &intern);
+      rptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
+      rptr->addend = 0;
 
       if (intern.r_extern)
 	{
 	  /* r_symndx is an index into the external symbols.  */
-	  BFD_ASSERT (intern.r_symndx >= 0
-		      && (intern.r_symndx
-			  < (ecoff_data (abfd)
-			     ->debug_info.symbolic_header.iextMax)));
-	  rptr->sym_ptr_ptr = symbols + intern.r_symndx;
-	  rptr->addend = 0;
-	}
-      else if (intern.r_symndx == RELOC_SECTION_NONE
-	       || intern.r_symndx == RELOC_SECTION_ABS)
-	{
-	  rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
-	  rptr->addend = 0;
+	  if (symbols != NULL
+	      && intern.r_symndx >= 0
+	      && (intern.r_symndx
+		  < (ecoff_data (abfd)->debug_info.symbolic_header.iextMax)))
+	    rptr->sym_ptr_ptr = symbols + intern.r_symndx;
 	}
       else
 	{
@@ -1669,15 +1707,20 @@ ecoff_slurp_reloc_table (bfd *abfd,
 	    case RELOC_SECTION_FINI:  sec_name = _FINI;  break;
 	    case RELOC_SECTION_LITA:  sec_name = _LITA;  break;
 	    case RELOC_SECTION_RCONST: sec_name = _RCONST; break;
-	    default: abort ();
+	    default:
+	      sec_name = NULL;
+	      break;
 	    }
 
-	  sec = bfd_get_section_by_name (abfd, sec_name);
-	  if (sec == NULL)
-	    abort ();
-	  rptr->sym_ptr_ptr = sec->symbol_ptr_ptr;
-
-	  rptr->addend = - bfd_section_vma (sec);
+	  if (sec_name != NULL)
+	    {
+	      sec = bfd_get_section_by_name (abfd, sec_name);
+	      if (sec != NULL)
+		{
+		  rptr->sym_ptr_ptr = &sec->symbol;
+		  rptr->addend = - bfd_section_vma (sec);
+		}
+	    }
 	}
 
       rptr->address = intern.r_vaddr - bfd_section_vma (section);
@@ -1687,11 +1730,11 @@ 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;
 
-  return TRUE;
+  return true;
 }
 
 /* Get a canonical list of relocs.  */
@@ -1738,7 +1781,7 @@ _bfd_ecoff_canonicalize_reloc (bfd *abfd
    and return the name of the source file and the line nearest to the
    wanted location.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_find_nearest_line (bfd *abfd,
 			      asymbol **symbols ATTRIBUTE_UNUSED,
 			      asection *section,
@@ -1756,16 +1799,16 @@ _bfd_ecoff_find_nearest_line (bfd *abfd,
   /* Make sure we have the FDR's.  */
   if (! _bfd_ecoff_slurp_symbolic_info (abfd, NULL, debug_info)
       || bfd_get_symcount (abfd) == 0)
-    return FALSE;
+    return false;
 
   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);
       if (ecoff_data (abfd)->find_line_info == NULL)
-	return FALSE;
+	return false;
     }
 
   if (discriminator_ptr)
@@ -1789,7 +1832,7 @@ _bfd_ecoff_find_nearest_line (bfd *abfd,
    the symbol table, so this function only handles the other debugging
    information.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   struct ecoff_debug_info *iinfo = &ecoff_data (ibfd)->debug_info;
@@ -1797,13 +1840,13 @@ _bfd_ecoff_bfd_copy_private_bfd_data (bf
   int i;
   asymbol **sym_ptr_ptr;
   size_t c;
-  bfd_boolean local;
+  bool local;
 
   /* We only want to copy information over if both BFD's use ECOFF
      format.  */
   if (bfd_get_flavour (ibfd) != bfd_target_ecoff_flavour
       || bfd_get_flavour (obfd) != bfd_target_ecoff_flavour)
-    return TRUE;
+    return true;
 
   /* Copy the GP value and the register masks.  */
   ecoff_data (obfd)->gp = ecoff_data (ibfd)->gp;
@@ -1819,15 +1862,15 @@ _bfd_ecoff_bfd_copy_private_bfd_data (bf
   c = bfd_get_symcount (obfd);
   sym_ptr_ptr = bfd_get_outsymbols (obfd);
   if (c == 0 || sym_ptr_ptr == NULL)
-    return TRUE;
+    return true;
 
   /* See if there are any local symbols.  */
-  local = FALSE;
+  local = false;
   for (; c > 0; c--, sym_ptr_ptr++)
     {
       if (ecoffsymbol (*sym_ptr_ptr)->local)
 	{
-	  local = TRUE;
+	  local = true;
 	  break;
 	}
     }
@@ -1869,6 +1912,9 @@ _bfd_ecoff_bfd_copy_private_bfd_data (bf
 
       oinfo->symbolic_header.crfd = iinfo->symbolic_header.crfd;
       oinfo->external_rfd = iinfo->external_rfd;
+
+      /* Flag that oinfo entries should not be freed.  */
+      oinfo->alloc_syments = true;
     }
   else
     {
@@ -1890,14 +1936,14 @@ _bfd_ecoff_bfd_copy_private_bfd_data (bf
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the architecture.  The supported architecture is stored in the
    backend pointer.  We always set the architecture anyhow, since many
    callers ignore the return value.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_set_arch_mach (bfd *abfd,
 			  enum bfd_architecture arch,
 			  unsigned long machine)
@@ -1930,7 +1976,7 @@ _bfd_ecoff_sizeof_headers (bfd *abfd,
 
 /* Get the contents of a section.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_get_section_contents (bfd *abfd,
 				 asection *section,
 				 void * location,
@@ -1971,7 +2017,7 @@ ecoff_sort_hdrs (const void * arg1, cons
 /* Calculate the file position for each section, and set
    reloc_filepos.  */
 
-static bfd_boolean
+static bool
 ecoff_compute_section_file_positions (bfd *abfd)
 {
   file_ptr sofar, file_sofar;
@@ -1979,8 +2025,8 @@ ecoff_compute_section_file_positions (bf
   asection *current;
   unsigned int i;
   file_ptr old_sofar;
-  bfd_boolean rdata_in_text;
-  bfd_boolean first_data, first_nonalloc;
+  bool rdata_in_text;
+  bool first_data, first_nonalloc;
   const bfd_vma round = ecoff_backend (abfd)->round;
   bfd_size_type amt;
 
@@ -1992,7 +2038,7 @@ ecoff_compute_section_file_positions (bf
   amt *= sizeof (asection *);
   sorted_hdrs = (asection **) bfd_malloc (amt);
   if (sorted_hdrs == NULL)
-    return FALSE;
+    return false;
   for (current = abfd->sections, i = 0;
        current != NULL;
        current = current->next, i++)
@@ -2016,15 +2062,15 @@ ecoff_compute_section_file_positions (bf
 	      && ! streq (current->name, _PDATA)
 	      && ! streq (current->name, _RCONST))
 	    {
-	      rdata_in_text = FALSE;
+	      rdata_in_text = false;
 	      break;
 	    }
 	}
     }
   ecoff_data (abfd)->rdata_in_text = rdata_in_text;
 
-  first_data = TRUE;
-  first_nonalloc = TRUE;
+  first_data = true;
+  first_nonalloc = true;
   for (i = 0; i < abfd->section_count; i++)
     {
       unsigned int alignment_power;
@@ -2057,7 +2103,7 @@ ecoff_compute_section_file_positions (bf
 	{
 	  sofar = (sofar + round - 1) &~ (round - 1);
 	  file_sofar = (file_sofar + round - 1) &~ (round - 1);
-	  first_data = FALSE;
+	  first_data = false;
 	}
       else if (streq (current->name, _LIB))
 	{
@@ -2075,7 +2121,7 @@ ecoff_compute_section_file_positions (bf
 	  /* Skip up to the next page for an unallocated section, such
 	     as the .comment section on the Alpha.  This leaves room
 	     for the .bss section.  */
-	  first_nonalloc = FALSE;
+	  first_nonalloc = false;
 	  sofar = (sofar + round - 1) &~ (round - 1);
 	  file_sofar = (file_sofar + round - 1) &~ (round - 1);
 	}
@@ -2114,7 +2160,7 @@ ecoff_compute_section_file_positions (bf
 
   ecoff_data (abfd)->reloc_filepos = file_sofar;
 
-  return TRUE;
+  return true;
 }
 
 /* Determine the location of the relocs for all the sections in the
@@ -2135,7 +2181,7 @@ ecoff_compute_reloc_file_positions (bfd
     {
       if (! ecoff_compute_section_file_positions (abfd))
 	abort ();
-      abfd->output_has_begun = TRUE;
+      abfd->output_has_begun = true;
     }
 
   reloc_base = ecoff_data (abfd)->reloc_filepos;
@@ -2175,7 +2221,7 @@ ecoff_compute_reloc_file_positions (bfd
 
 /* Set the contents of a section.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_set_section_contents (bfd *abfd,
 				 asection *section,
 				 const void * location,
@@ -2188,7 +2234,7 @@ _bfd_ecoff_set_section_contents (bfd *ab
      going to set output_has_begun to TRUE.  */
   if (! abfd->output_has_begun
       && ! ecoff_compute_section_file_positions (abfd))
-    return FALSE;
+    return false;
 
   /* Handle the .lib section specially so that Irix 4 shared libraries
      work out.  See coff_set_section_contents in coffcode.h.  */
@@ -2208,38 +2254,38 @@ _bfd_ecoff_set_section_contents (bfd *ab
     }
 
   if (count == 0)
-    return TRUE;
+    return true;
 
   pos = section->filepos + offset;
   if (bfd_seek (abfd, pos, SEEK_SET) != 0
-      || bfd_bwrite (location, count, abfd) != count)
-    return FALSE;
+      || bfd_write (location, count, abfd) != count)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Set the GP value for an ECOFF file.  This is a hook used by the
    assembler.  */
 
-bfd_boolean
+bool
 bfd_ecoff_set_gp_value (bfd *abfd, bfd_vma gp_value)
 {
   if (bfd_get_flavour (abfd) != bfd_target_ecoff_flavour
       || bfd_get_format (abfd) != bfd_object)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   ecoff_data (abfd)->gp = gp_value;
 
-  return TRUE;
+  return true;
 }
 
 /* Set the register masks for an ECOFF file.  This is a hook used by
    the assembler.  */
 
-bfd_boolean
+bool
 bfd_ecoff_set_regmasks (bfd *abfd,
 			unsigned long gprmask,
 			unsigned long fprmask,
@@ -2251,7 +2297,7 @@ bfd_ecoff_set_regmasks (bfd *abfd,
       || bfd_get_format (abfd) != bfd_object)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   tdata = ecoff_data (abfd);
@@ -2265,13 +2311,13 @@ bfd_ecoff_set_regmasks (bfd *abfd,
 	tdata->cprmask[i] = cprmask[i];
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Get ECOFF EXTR information for an external symbol.  This function
    is passed to bfd_ecoff_debug_externals.  */
 
-static bfd_boolean
+static bool
 ecoff_get_extr (asymbol *sym, EXTR *esym)
 {
   ecoff_symbol_type *ecoff_sym_ptr;
@@ -2284,7 +2330,7 @@ ecoff_get_extr (asymbol *sym, EXTR *esym
       if ((sym->flags & BSF_DEBUGGING) != 0
 	  || (sym->flags & BSF_LOCAL) != 0
 	  || (sym->flags & BSF_SECTION_SYM) != 0)
-	return FALSE;
+	return false;
 
       esym->jmptbl = 0;
       esym->cobol_main = 0;
@@ -2296,13 +2342,13 @@ ecoff_get_extr (asymbol *sym, EXTR *esym
       esym->asym.sc = scAbs;
       esym->asym.reserved = 0;
       esym->asym.index = indexNil;
-      return TRUE;
+      return true;
     }
 
   ecoff_sym_ptr = ecoffsymbol (sym);
 
   if (ecoff_sym_ptr->local)
-    return FALSE;
+    return false;
 
   input_bfd = bfd_asymbol_bfd (sym);
   (*(ecoff_backend (input_bfd)->debug_swap.swap_ext_in))
@@ -2328,7 +2374,7 @@ ecoff_get_extr (asymbol *sym, EXTR *esym
 	esym->ifd = input_debug->ifdmap[esym->ifd];
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the external symbol index.  This routine is passed to
@@ -2342,7 +2388,7 @@ ecoff_set_index (asymbol *sym, bfd_size_
 
 /* Write out an ECOFF file.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_write_object_contents (bfd *abfd)
 {
   const struct ecoff_backend_data * const backend = ecoff_backend (abfd);
@@ -2364,10 +2410,10 @@ _bfd_ecoff_write_object_contents (bfd *a
   bfd_size_type reloc_size;
   bfd_size_type text_size;
   bfd_vma text_start;
-  bfd_boolean set_text_start;
+  bool set_text_start;
   bfd_size_type data_size;
   bfd_vma data_start;
-  bfd_boolean set_data_start;
+  bool set_data_start;
   bfd_size_type bss_size;
   void * buff = NULL;
   void * reloc_buff = NULL;
@@ -2393,10 +2439,10 @@ _bfd_ecoff_write_object_contents (bfd *a
   else
     text_size = 0;
   text_start = 0;
-  set_text_start = FALSE;
+  set_text_start = false;
   data_size = 0;
   data_start = 0;
-  set_data_start = FALSE;
+  set_data_start = false;
   bss_size = 0;
 
   /* Write section headers to the file.  */
@@ -2417,7 +2463,7 @@ _bfd_ecoff_write_object_contents (bfd *a
   }
 
   internal_f.f_nscns = 0;
-  if (bfd_seek (abfd, (file_ptr) (filhsz + aoutsz), SEEK_SET) != 0)
+  if (bfd_seek (abfd, filhsz + aoutsz, SEEK_SET) != 0)
     goto error_return;
 
   for (current = abfd->sections;
@@ -2472,7 +2518,7 @@ _bfd_ecoff_write_object_contents (bfd *a
 						 current->flags);
 
       if (bfd_coff_swap_scnhdr_out (abfd, (void *) &section, buff) == 0
-	  || bfd_bwrite (buff, scnhsz, abfd) != scnhsz)
+	  || bfd_write (buff, scnhsz, abfd) != scnhsz)
 	goto error_return;
 
       if ((section.s_flags & STYP_TEXT) != 0
@@ -2494,7 +2540,7 @@ _bfd_ecoff_write_object_contents (bfd *a
 	  if (! set_text_start || text_start > vma)
 	    {
 	      text_start = vma;
-	      set_text_start = TRUE;
+	      set_text_start = true;
 	    }
 	}
       else if ((section.s_flags & STYP_RDATA) != 0
@@ -2510,7 +2556,7 @@ _bfd_ecoff_write_object_contents (bfd *a
 	  if (! set_data_start || data_start > vma)
 	    {
 	      data_start = vma;
-	      set_data_start = TRUE;
+	      set_data_start = true;
 	    }
 	}
       else if ((section.s_flags & STYP_BSS) != 0
@@ -2617,15 +2663,15 @@ _bfd_ecoff_write_object_contents (bfd *a
     }
 
   /* Write out the file header and the optional header.  */
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
     goto error_return;
 
   bfd_coff_swap_filehdr_out (abfd, (void *) &internal_f, buff);
-  if (bfd_bwrite (buff, filhsz, abfd) != filhsz)
+  if (bfd_write (buff, filhsz, abfd) != filhsz)
     goto error_return;
 
   bfd_coff_swap_aouthdr_out (abfd, (void *) &internal_a, buff);
-  if (bfd_bwrite (buff, aoutsz, abfd) != aoutsz)
+  if (bfd_write (buff, aoutsz, abfd) != aoutsz)
     goto error_return;
 
   /* Build the external symbol information.  This must be done before
@@ -2657,7 +2703,7 @@ _bfd_ecoff_write_object_contents (bfd *a
 	    continue;
 
 	  amt = current->reloc_count * external_reloc_size;
-	  reloc_buff = bfd_alloc (abfd, amt);
+	  reloc_buff = bfd_zalloc (abfd, amt);
 	  if (reloc_buff == NULL)
 	    goto error_return;
 
@@ -2741,7 +2787,7 @@ _bfd_ecoff_write_object_contents (bfd *a
 	  if (bfd_seek (abfd, current->rel_filepos, SEEK_SET) != 0)
 	    goto error_return;
 	  amt = current->reloc_count * external_reloc_size;
-	  if (bfd_bwrite (reloc_buff, amt, abfd) != amt)
+	  if (bfd_write (reloc_buff, amt, abfd) != amt)
 	    goto error_return;
 	  bfd_release (abfd, reloc_buff);
 	  reloc_buff = NULL;
@@ -2767,29 +2813,25 @@ _bfd_ecoff_write_object_contents (bfd *a
     {
       char c;
 
-      if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1,
-		    SEEK_SET) != 0)
+      if (bfd_seek (abfd, ecoff_data (abfd)->sym_filepos - 1, SEEK_SET) != 0)
 	goto error_return;
-      if (bfd_bread (&c, (bfd_size_type) 1, abfd) == 0)
+      if (bfd_read (&c, 1, abfd) == 0)
 	c = 0;
-      if (bfd_seek (abfd, (file_ptr) ecoff_data (abfd)->sym_filepos - 1,
-		    SEEK_SET) != 0)
+      if (bfd_seek (abfd, ecoff_data (abfd)->sym_filepos - 1, SEEK_SET) != 0)
 	goto error_return;
-      if (bfd_bwrite (&c, (bfd_size_type) 1, abfd) != 1)
+      if (bfd_write (&c, 1, abfd) != 1)
 	goto error_return;
     }
 
   if (reloc_buff != NULL)
     bfd_release (abfd, reloc_buff);
-  if (buff != NULL)
-    free (buff);
-  return TRUE;
+  free (buff);
+  return true;
  error_return:
   if (reloc_buff != NULL)
     bfd_release (abfd, reloc_buff);
-  if (buff != NULL)
-    free (buff);
-  return FALSE;
+  free (buff);
+  return false;
 }
 
 /* Archive handling.  ECOFF uses what appears to be a unique type of
@@ -2861,13 +2903,13 @@ ecoff_armap_hash (const char *s,
 
 /* Read in the armap.  */
 
-bfd_boolean
+bool
 _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;
@@ -2877,35 +2919,35 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
   bfd_size_type amt;
 
   /* Get the name of the first element.  */
-  i = bfd_bread ((void *) nextname, (bfd_size_type) 16, abfd);
+  i = bfd_read (nextname, 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;
+  if (bfd_seek (abfd, -16, SEEK_CUR) != 0)
+    return false;
 
   /* Irix 4.0.5F apparently can use either an ECOFF armap or a
      standard COFF armap.  We could move the ECOFF armap stuff into
      bfd_slurp_armap, but that seems inappropriate since no other
      target uses this format.  Instead, we check directly for a COFF
      armap.  */
-  if (CONST_STRNEQ (nextname, "/               "))
+  if (startswith (nextname, "/               "))
     return bfd_slurp_armap (abfd);
 
   /* See if the first element is an armap.  */
-  if (! strneq (nextname, ecoff_backend (abfd)->armap_start, ARMAP_START_LENGTH)
+  if (strncmp (nextname, ecoff_backend (abfd)->armap_start, ARMAP_START_LENGTH) != 0
       || nextname[ARMAP_HEADER_MARKER_INDEX] != ARMAP_MARKER
       || (nextname[ARMAP_HEADER_ENDIAN_INDEX] != ARMAP_BIG_ENDIAN
 	  && nextname[ARMAP_HEADER_ENDIAN_INDEX] != ARMAP_LITTLE_ENDIAN)
       || nextname[ARMAP_OBJECT_MARKER_INDEX] != ARMAP_MARKER
       || (nextname[ARMAP_OBJECT_ENDIAN_INDEX] != ARMAP_BIG_ENDIAN
 	  && nextname[ARMAP_OBJECT_ENDIAN_INDEX] != ARMAP_LITTLE_ENDIAN)
-      || ! strneq (nextname + ARMAP_END_INDEX, ARMAP_END, sizeof ARMAP_END - 1))
+      || strncmp (nextname + ARMAP_END_INDEX, ARMAP_END, sizeof ARMAP_END - 1) != 0)
     {
-      abfd->has_armap = FALSE;
-      return TRUE;
+      abfd->has_armap = false;
+      return true;
     }
 
   /* Make sure we have the right byte ordering.  */
@@ -2915,32 +2957,33 @@ _bfd_ecoff_slurp_armap (bfd *abfd)
 	  ^ (bfd_big_endian (abfd))))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   /* Read in the armap.  */
   ardata = bfd_ardata (abfd);
   mapdata = (struct areltdata *) _bfd_read_ar_hdr (abfd);
   if (mapdata == NULL)
-    return FALSE;
+    return false;
   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);
-      return FALSE;
+      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 +2991,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 +3039,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 +3052,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,15 +3062,22 @@ _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;
 
-  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.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_write_armap (bfd *abfd,
 			unsigned int elength,
 			struct orl *map,
@@ -3079,9 +3132,9 @@ _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);
-  _bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%ld",
-		    (long) (statbuf.st_mtime + 60));
+  if (stat (bfd_get_filename (abfd), &statbuf) == 0)
+    _bfd_ar_spacepad (hdr.ar_date, sizeof (hdr.ar_date), "%ld",
+		      (long) (statbuf.st_mtime + ARMAP_TIME_OFFSET));
 
   /* The DECstation uses zeroes for the uid, gid and mode of the
      armap.  */
@@ -3102,17 +3155,16 @@ _bfd_ecoff_write_armap (bfd *abfd,
    if (((char *) (&hdr))[i] == '\0')
      (((char *) (&hdr))[i]) = ' ';
 
-  if (bfd_bwrite ((void *) &hdr, (bfd_size_type) sizeof (struct ar_hdr), abfd)
-      != sizeof (struct ar_hdr))
-    return FALSE;
+  if (bfd_write (&hdr, sizeof (struct ar_hdr), abfd) != sizeof (struct ar_hdr))
+    return false;
 
   H_PUT_32 (abfd, hashsize, temp);
-  if (bfd_bwrite ((void *) temp, (bfd_size_type) 4, abfd) != 4)
-    return FALSE;
+  if (bfd_write (temp, 4, abfd) != 4)
+    return false;
 
   hashtable = (bfd_byte *) bfd_zalloc (abfd, symdefsize);
   if (!hashtable)
-    return FALSE;
+    return false;
 
   current = abfd->archive_head;
   last_elt = current;
@@ -3156,33 +3208,33 @@ _bfd_ecoff_write_armap (bfd *abfd,
       H_PUT_32 (abfd, firstreal, (hashtable + hash * 8 + 4));
     }
 
-  if (bfd_bwrite ((void *) hashtable, symdefsize, abfd) != symdefsize)
-    return FALSE;
+  if (bfd_write (hashtable, symdefsize, abfd) != symdefsize)
+    return false;
 
   bfd_release (abfd, hashtable);
 
   /* Now write the strings.  */
   H_PUT_32 (abfd, stringsize, temp);
-  if (bfd_bwrite ((void *) temp, (bfd_size_type) 4, abfd) != 4)
-    return FALSE;
+  if (bfd_write (temp, 4, abfd) != 4)
+    return false;
   for (i = 0; i < orl_count; i++)
     {
       bfd_size_type len;
 
       len = strlen (*map[i].name) + 1;
-      if (bfd_bwrite ((void *) (*map[i].name), len, abfd) != len)
-	return FALSE;
+      if (bfd_write (*map[i].name, len, abfd) != len)
+	return false;
     }
 
   /* The spec sez this should be a newline.  But in order to be
      bug-compatible for DECstation ar we use a null.  */
   if (padit)
     {
-      if (bfd_bwrite ("", (bfd_size_type) 1, abfd) != 1)
-	return FALSE;
+      if (bfd_write ("", 1, abfd) != 1)
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* ECOFF linker code.  */
@@ -3216,8 +3268,8 @@ ecoff_link_hash_newfunc (struct bfd_hash
       ret->abfd = NULL;
       ret->written = 0;
       ret->small = 0;
+      memset ((void *) &ret->esym, 0, sizeof ret->esym);
     }
-  memset ((void *) &ret->esym, 0, sizeof ret->esym);
 
   return (struct bfd_hash_entry *) ret;
 }
@@ -3228,7 +3280,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)
@@ -3260,7 +3312,7 @@ _bfd_ecoff_bfd_link_hash_table_create (b
    explicitly save any information we may need later on in the link.
    We do not want to read the external symbol information again.  */
 
-static bfd_boolean
+static bool
 ecoff_link_add_externals (bfd *abfd,
 			  struct bfd_link_info *info,
 			  void * external_ext,
@@ -3282,7 +3334,7 @@ ecoff_link_add_externals (bfd *abfd,
   amt *= sizeof (struct bfd_link_hash_entry *);
   sym_hash = (struct bfd_link_hash_entry **) bfd_alloc (abfd, amt);
   if (!sym_hash)
-    return FALSE;
+    return false;
   ecoff_data (abfd)->sym_hashes = (struct ecoff_link_hash_entry **) sym_hash;
 
   ext_ptr = (char *) external_ext;
@@ -3290,7 +3342,7 @@ ecoff_link_add_externals (bfd *abfd,
   for (; ext_ptr < ext_end; ext_ptr += external_ext_size, sym_hash++)
     {
       EXTR esym;
-      bfd_boolean skip;
+      bool skip;
       bfd_vma value;
       asection *section;
       const char *name;
@@ -3301,7 +3353,7 @@ ecoff_link_add_externals (bfd *abfd,
       (*swap_ext_in) (abfd, (void *) ext_ptr, &esym);
 
       /* Skip debugging symbols.  */
-      skip = FALSE;
+      skip = false;
       switch (esym.asym.st)
 	{
 	case stGlobal:
@@ -3311,7 +3363,7 @@ ecoff_link_add_externals (bfd *abfd,
 	case stStaticProc:
 	  break;
 	default:
-	  skip = TRUE;
+	  skip = true;
 	  break;
 	}
 
@@ -3377,20 +3429,7 @@ ecoff_link_add_externals (bfd *abfd,
 	    }
 	  /* Fall through.  */
 	case scSCommon:
-	  if (ecoff_scom_section.name == NULL)
-	    {
-	      /* Initialize the small common section.  */
-	      ecoff_scom_section.name = SCOMMON;
-	      ecoff_scom_section.flags = SEC_IS_COMMON;
-	      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;
-	      ecoff_scom_symbol.name = SCOMMON;
-	      ecoff_scom_symbol.flags = BSF_SECTION_SYM;
-	      ecoff_scom_symbol.section = &ecoff_scom_section;
-	      ecoff_scom_symbol_ptr = &ecoff_scom_symbol;
-	    }
-	  section = &ecoff_scom_section;
+	  section = &_bfd_ecoff_scom_section;
 	  break;
 	case scSUndefined:
 	  section = bfd_und_section_ptr;
@@ -3417,8 +3456,8 @@ ecoff_link_add_externals (bfd *abfd,
       if (! (_bfd_generic_link_add_one_symbol
 	     (info, abfd, name,
 	      (flagword) (esym.weakext ? BSF_WEAK : BSF_GLOBAL),
-	      section, value, NULL, TRUE, TRUE, sym_hash)))
-	return FALSE;
+	      section, value, NULL, true, true, sym_hash)))
+	return false;
 
       h = (struct ecoff_link_hash_entry *) *sym_hash;
 
@@ -3458,13 +3497,13 @@ ecoff_link_add_externals (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Add symbols from an ECOFF object file to the global linker hash
    table.  */
 
-static bfd_boolean
+static bool
 ecoff_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   HDRR *symhdr;
@@ -3472,74 +3511,66 @@ ecoff_link_add_object_symbols (bfd *abfd
   void * external_ext = NULL;
   bfd_size_type esize;
   char *ssext = NULL;
-  bfd_boolean result;
+  bool result;
 
   if (! ecoff_slurp_symbolic_header (abfd))
-    return FALSE;
+    return false;
 
   /* If there are no symbols, we don't want it.  */
   if (bfd_get_symcount (abfd) == 0)
-    return TRUE;
+    return true;
 
   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);
-  return FALSE;
+  free (ssext);
+  free (external_ext);
+  return false;
 }
 
 /* This is called if we used _bfd_generic_link_add_archive_symbols
    because we were not dealing with an ECOFF archive.  */
 
-static bfd_boolean
+static bool
 ecoff_link_check_archive_element (bfd *abfd,
 				  struct bfd_link_info *info,
 				  struct bfd_link_hash_entry *h,
 				  const char *name,
-				  bfd_boolean *pneeded)
+				  bool *pneeded)
 {
-  *pneeded = FALSE;
+  *pneeded = false;
 
   /* Unlike the generic linker, we do not pull in elements because
      of common symbols.  */
   if (h->type != bfd_link_hash_undefined)
-    return TRUE;
+    return true;
 
   /* Include this element?  */
   if (!(*info->callbacks->add_archive_element) (info, abfd, name, &abfd))
-    return TRUE;
-  *pneeded = TRUE;
+    return true;
+  *pneeded = true;
 
   return ecoff_link_add_object_symbols (abfd, info);
 }
@@ -3551,7 +3582,7 @@ ecoff_link_check_archive_element (bfd *a
    already have a hash table, so there is no reason to construct
    another one.  */
 
-static bfd_boolean
+static bool
 ecoff_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   const struct ecoff_backend_data * const backend = ecoff_backend (abfd);
@@ -3567,9 +3598,9 @@ ecoff_link_add_archive_symbols (bfd *abf
     {
       /* An empty archive is a special case.  */
       if (bfd_openr_next_archived_file (abfd, NULL) == NULL)
-	return TRUE;
+	return true;
       bfd_set_error (bfd_error_no_armap);
-      return FALSE;
+      return false;
     }
 
   /* If we don't have any raw data for this archive, as can happen on
@@ -3647,10 +3678,10 @@ ecoff_link_add_archive_symbols (bfd *abf
 	  || ! streq (name, h->root.string))
 	{
 	  unsigned int srch;
-	  bfd_boolean found;
+	  bool found;
 
 	  /* That was the wrong symbol.  Try rehashing.  */
-	  found = FALSE;
+	  found = false;
 	  for (srch = (hash + rehash) & (armap_count - 1);
 	       srch != hash;
 	       srch = (srch + rehash) & (armap_count - 1))
@@ -3662,7 +3693,7 @@ ecoff_link_add_archive_symbols (bfd *abf
 	      if (name[0] == h->root.string[0]
 		  && streq (name, h->root.string))
 		{
-		  found = TRUE;
+		  found = true;
 		  break;
 		}
 	    }
@@ -3676,32 +3707,34 @@ ecoff_link_add_archive_symbols (bfd *abf
 	  hash = srch;
 	}
 
-      element = (*backend->get_elt_at_filepos) (abfd, (file_ptr) file_offset);
+      element = (*backend->get_elt_at_filepos) (abfd,
+						(file_ptr) file_offset,
+						info);
       if (element == NULL)
-	return FALSE;
+	return false;
 
       if (! bfd_check_format (element, bfd_object))
-	return FALSE;
+	return false;
 
       /* Unlike the generic linker, we know that this element provides
 	 a definition for an undefined symbol and we know that we want
 	 to include it.  We don't need to check anything.  */
       if (!(*info->callbacks
 	    ->add_archive_element) (info, element, name, &element))
-	return FALSE;
+	return false;
       if (! ecoff_link_add_object_symbols (element, info))
-	return FALSE;
+	return false;
 
       pundef = &(*pundef)->u.undef.next;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Given an ECOFF BFD, add symbols to the global hash table as
    appropriate.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_bfd_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   switch (bfd_get_format (abfd))
@@ -3712,7 +3745,7 @@ _bfd_ecoff_bfd_link_add_symbols (bfd *ab
       return ecoff_link_add_archive_symbols (abfd, info);
     default:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 }
 
@@ -3731,7 +3764,7 @@ struct extsym_info
    output BFD.  This must read in the symbolic information of the
    input BFD.  */
 
-static bfd_boolean
+static bool
 ecoff_final_link_debug_accumulate (bfd *output_bfd,
 				   bfd *input_bfd,
 				   struct bfd_link_info *info,
@@ -3741,43 +3774,48 @@ ecoff_final_link_debug_accumulate (bfd *
   const struct ecoff_debug_swap * const swap =
     &ecoff_backend (input_bfd)->debug_swap;
   HDRR *symhdr = &debug->symbolic_header;
-  bfd_boolean ret;
+  bool 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)					\
+  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 = _bfd_malloc_and_read (input_bfd, amt + 1, amt);	\
+      if (debug->ptr == NULL)						\
+	{								\
+	  ret = false;							\
+	  goto return_something;					\
+	}								\
+      ((char *) debug->ptr)[amt] = 0;					\
+    } while (0)
 
-  /* If raw_syments is not NULL, then the data was already by read by
+  /* If alloc_syments is true, then the data was already by read by
      _bfd_ecoff_slurp_symbolic_info.  */
-  if (ecoff_data (input_bfd)->raw_syments == NULL)
+  if (!debug->alloc_syments)
     {
-      READ (line, cbLineOffset, cbLine, sizeof (unsigned char),
-	    unsigned char *);
-      READ (external_dnr, cbDnOffset, idnMax, swap->external_dnr_size, void *);
-      READ (external_pdr, cbPdOffset, ipdMax, swap->external_pdr_size, void *);
-      READ (external_sym, cbSymOffset, isymMax, swap->external_sym_size, void *);
-      READ (external_opt, cbOptOffset, ioptMax, swap->external_opt_size, void *);
-      READ (external_aux, cbAuxOffset, iauxMax, sizeof (union aux_ext),
-	    union aux_ext *);
-      READ (ss, cbSsOffset, issMax, sizeof (char), char *);
-      READ (external_fdr, cbFdOffset, ifdMax, swap->external_fdr_size, void *);
-      READ (external_rfd, cbRfdOffset, crfd, swap->external_rfd_size, void *);
+      READ (line, cbLineOffset, cbLine, sizeof (unsigned char));
+      READ (external_dnr, cbDnOffset, idnMax, swap->external_dnr_size);
+      READ (external_pdr, cbPdOffset, ipdMax, swap->external_pdr_size);
+      READ (external_sym, cbSymOffset, isymMax, swap->external_sym_size);
+      READ (external_opt, cbOptOffset, ioptMax, swap->external_opt_size);
+      READ (external_aux, cbAuxOffset, iauxMax, sizeof (union aux_ext));
+      READ (ss, cbSsOffset, issMax, sizeof (char));
+      READ (external_fdr, cbFdOffset, ifdMax, swap->external_fdr_size);
+      READ (external_rfd, cbRfdOffset, crfd, swap->external_rfd_size);
     }
 #undef READ
 
@@ -3789,46 +3827,13 @@ ecoff_final_link_debug_accumulate (bfd *
 	  input_bfd, debug, swap, info));
 
  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);
-
-      /* Make sure we don't accidentally follow one of these pointers
-	 into freed memory.  */
-      debug->line = NULL;
-      debug->external_dnr = NULL;
-      debug->external_pdr = NULL;
-      debug->external_sym = NULL;
-      debug->external_opt = NULL;
-      debug->external_aux = NULL;
-      debug->ss = NULL;
-      debug->external_fdr = NULL;
-      debug->external_rfd = NULL;
-    }
-
+  _bfd_ecoff_free_ecoff_debug_info (debug);
   return ret;
 }
 
 /* Relocate and write an ECOFF section into an ECOFF output file.  */
 
-static bfd_boolean
+static bool
 ecoff_indirect_link_order (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   asection *output_section,
@@ -3846,7 +3851,7 @@ ecoff_indirect_link_order (bfd *output_b
   input_section = link_order->u.indirect.section;
   input_bfd = input_section->owner;
   if (input_section->size == 0)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (input_section->output_section == output_section);
   BFD_ASSERT (input_section->output_offset == link_order->offset);
@@ -3861,13 +3866,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.  */
@@ -3893,24 +3896,20 @@ ecoff_indirect_link_order (bfd *output_b
       file_ptr pos = (output_section->rel_filepos
 		      + output_section->reloc_count * external_reloc_size);
       if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-	  || (bfd_bwrite (external_relocs, external_relocs_size, output_bfd)
+	  || (bfd_write (external_relocs, external_relocs_size, output_bfd)
 	      != external_relocs_size))
 	goto error_return;
       output_section->reloc_count += input_section->reloc_count;
     }
 
-  if (contents != NULL)
-    free (contents);
-  if (external_relocs != NULL)
-    free (external_relocs);
-  return TRUE;
+  free (contents);
+  free (external_relocs);
+  return true;
 
  error_return:
-  if (contents != NULL)
-    free (contents);
-  if (external_relocs != NULL)
-    free (external_relocs);
-  return FALSE;
+  free (contents);
+  free (external_relocs);
+  return false;
 }
 
 /* Generate a reloc when linking an ECOFF file.  This is a reloc
@@ -3918,7 +3917,7 @@ ecoff_indirect_link_order (bfd *output_b
    is used to build constructor and destructor tables when linking
    with -Ur.  */
 
-static bfd_boolean
+static bool
 ecoff_reloc_link_order (bfd *output_bfd,
 			struct bfd_link_info *info,
 			asection *output_section,
@@ -3931,7 +3930,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
   struct internal_reloc in;
   bfd_size_type external_reloc_size;
   bfd_byte *rbuf;
-  bfd_boolean ok;
+  bool ok;
   file_ptr pos;
 
   type = link_order->type;
@@ -3946,13 +3945,13 @@ ecoff_reloc_link_order (bfd *output_bfd,
   if (rel.howto == 0)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   if (type == bfd_section_reloc_link_order)
     {
       section = link_order->u.reloc.p->u.section;
-      rel.sym_ptr_ptr = section->symbol_ptr_ptr;
+      rel.sym_ptr_ptr = &section->symbol;
     }
   else
     {
@@ -3962,7 +3961,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
 	 actually against the section.  */
       h = bfd_wrapped_link_hash_lookup (output_bfd, info,
 					link_order->u.reloc.p->u.name,
-					FALSE, FALSE, FALSE);
+					false, false, false);
       if (h != NULL
 	  && (h->type == bfd_link_hash_defined
 	      || h->type == bfd_link_hash_defweak))
@@ -3996,7 +3995,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
       size = bfd_get_reloc_size (rel.howto);
       buf = (bfd_byte *) bfd_zmalloc (size);
       if (buf == NULL && size != 0)
-	return FALSE;
+	return false;
       rstat = _bfd_relocate_contents (rel.howto, output_bfd,
 				      (bfd_vma) addend, buf);
       switch (rstat)
@@ -4019,7 +4018,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
 				     (file_ptr) link_order->offset, size);
       free (buf);
       if (! ok)
-	return FALSE;
+	return false;
     }
 
   rel.addend = 0;
@@ -4035,7 +4034,7 @@ ecoff_reloc_link_order (bfd *output_bfd,
       h = ((struct ecoff_link_hash_entry *)
 	   bfd_wrapped_link_hash_lookup (output_bfd, info,
 					 link_order->u.reloc.p->u.name,
-					 FALSE, FALSE, TRUE));
+					 false, false, true));
       if (h != NULL
 	  && h->indx != -1)
 	in.r_symndx = h->indx;
@@ -4097,14 +4096,14 @@ ecoff_reloc_link_order (bfd *output_bfd,
   external_reloc_size = ecoff_backend (output_bfd)->external_reloc_size;
   rbuf = (bfd_byte *) bfd_malloc (external_reloc_size);
   if (rbuf == NULL)
-    return FALSE;
+    return false;
 
   (*ecoff_backend (output_bfd)->swap_reloc_out) (output_bfd, &in, (void *) rbuf);
 
   pos = (output_section->rel_filepos
 	 + output_section->reloc_count * external_reloc_size);
   ok = (bfd_seek (output_bfd, pos, SEEK_SET) == 0
-	&& (bfd_bwrite ((void *) rbuf, external_reloc_size, output_bfd)
+	&& (bfd_write (rbuf, external_reloc_size, output_bfd)
 	    == external_reloc_size));
 
   if (ok)
@@ -4118,36 +4117,36 @@ ecoff_reloc_link_order (bfd *output_bfd,
 /* Put out information for an external symbol.  These come only from
    the hash table.  */
 
-static bfd_boolean
+static bool
 ecoff_link_write_external (struct bfd_hash_entry *bh, void * data)
 {
   struct ecoff_link_hash_entry *h = (struct ecoff_link_hash_entry *) bh;
   struct extsym_info *einfo = (struct extsym_info *) data;
   bfd *output_bfd = einfo->abfd;
-  bfd_boolean strip;
+  bool strip;
 
   if (h->root.type == bfd_link_hash_warning)
     {
       h = (struct ecoff_link_hash_entry *) h->root.u.i.link;
       if (h->root.type == bfd_link_hash_new)
-	return TRUE;
+	return true;
     }
 
   /* We need to check if this symbol is being stripped.  */
   if (h->root.type == bfd_link_hash_undefined
       || h->root.type == bfd_link_hash_undefweak)
-    strip = FALSE;
+    strip = false;
   else if (einfo->info->strip == strip_all
 	   || (einfo->info->strip == strip_some
 	       && bfd_hash_lookup (einfo->info->keep_hash,
 				   h->root.root.string,
-				   FALSE, FALSE) == NULL))
-    strip = TRUE;
+				   false, false) == NULL))
+    strip = true;
   else
-    strip = FALSE;
+    strip = false;
 
   if (strip || h->written)
-    return TRUE;
+    return true;
 
   if (h->abfd == NULL)
     {
@@ -4250,7 +4249,7 @@ ecoff_link_write_external (struct bfd_ha
     case bfd_link_hash_indirect:
       /* We ignore these symbols, since the indirected symbol is
 	 already in the hash table.  */
-      return TRUE;
+      return true;
     }
 
   /* bfd_ecoff_debug_one_external uses iextMax to keep track of the
@@ -4269,7 +4268,7 @@ ecoff_link_write_external (struct bfd_ha
    processes all the link order information.  This may cause it to
    close and reopen some input BFDs; I'll see how bad this is.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   const struct ecoff_backend_data * const backend = ecoff_backend (abfd);
@@ -4314,14 +4313,14 @@ _bfd_ecoff_bfd_final_link (bfd *abfd, st
 
   handle = bfd_ecoff_debug_init (abfd, debug, &backend->debug_swap, info);
   if (handle == NULL)
-    return FALSE;
+    return false;
 
   /* Accumulate the debugging symbols from each input BFD.  */
   for (input_bfd = info->input_bfds;
        input_bfd != NULL;
        input_bfd = input_bfd->link.next)
     {
-      bfd_boolean ret;
+      bool ret;
 
       if (bfd_get_flavour (input_bfd) == bfd_target_ecoff_flavour)
 	{
@@ -4338,7 +4337,7 @@ _bfd_ecoff_bfd_final_link (bfd *abfd, st
 						debug, &backend->debug_swap,
 						input_bfd, info);
       if (! ret)
-	return FALSE;
+	return false;
 
       /* Combine the register masks.  */
       ecoff_data (abfd)->gprmask |= ecoff_data (input_bfd)->gprmask;
@@ -4380,7 +4379,7 @@ _bfd_ecoff_bfd_final_link (bfd *abfd, st
   if (! bfd_ecoff_write_accumulated_debug (handle, abfd, debug,
 					   &backend->debug_swap, info,
 					   ecoff_data (abfd)->sym_filepos))
-    return FALSE;
+    return false;
 
   bfd_ecoff_debug_free (handle, abfd, debug, &backend->debug_swap, info);
 
@@ -4398,7 +4397,7 @@ _bfd_ecoff_bfd_final_link (bfd *abfd, st
     {
       struct bfd_link_hash_entry *h;
 
-      h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true);
       if (h != NULL
 	  && h->type == bfd_link_hash_defined)
 	ecoff_data (abfd)->gp = (h->u.def.value
@@ -4441,25 +4440,25 @@ _bfd_ecoff_bfd_final_link (bfd *abfd, st
 		  == bfd_target_ecoff_flavour))
 	    {
 	      if (! ecoff_indirect_link_order (abfd, info, o, p))
-		return FALSE;
+		return false;
 	    }
 	  else if (p->type == bfd_section_reloc_link_order
 		   || p->type == bfd_symbol_reloc_link_order)
 	    {
 	      if (! ecoff_reloc_link_order (abfd, info, o, p))
-		return FALSE;
+		return false;
 	    }
 	  else
 	    {
 	      if (! _bfd_default_link_order (abfd, info, o, p))
-		return FALSE;
+		return false;
 	    }
 	}
     }
 
   abfd->symcount = symhdr->iextMax + symhdr->isymMax;
 
-  ecoff_data (abfd)->linker = TRUE;
+  ecoff_data (abfd)->linker = true;
 
-  return TRUE;
+  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.20200303/bfd/ecofflink.c ./bfd/ecofflink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ecofflink.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ecofflink.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Routines to link ECOFF debugging information.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 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.
@@ -32,7 +32,18 @@
 #include "coff/ecoff.h"
 #include "libcoff.h"
 #include "libecoff.h"
-
+
+/* ECOFF uses two common sections.  One is the usual one, and the
+   other is for small objects.  All the small objects are kept
+   together, and then referenced via the gp pointer, which yields
+   faster assembler code.  This is what we use for the small common
+   section.  */
+static const asymbol ecoff_scom_symbol =
+  GLOBAL_SYM_INIT (SCOMMON, &_bfd_ecoff_scom_section);
+asection _bfd_ecoff_scom_section =
+  BFD_FAKE_SECTION (_bfd_ecoff_scom_section, &ecoff_scom_symbol,
+		    SCOMMON, 0, SEC_IS_COMMON | SEC_SMALL_DATA);
+
 /* Routines to swap auxiliary information in and out.  I am assuming
    that the auxiliary information format is always going to be target
    independent.  */
@@ -240,7 +251,7 @@ _bfd_ecoff_swap_rndx_out (int bigend,
 
 /* Add bytes to a buffer.  Return success.  */
 
-static bfd_boolean
+static bool
 ecoff_add_bytes (char **buf, char **bufend, size_t need)
 {
   size_t have;
@@ -258,10 +269,10 @@ ecoff_add_bytes (char **buf, char **bufe
     }
   newbuf = (char *) bfd_realloc (*buf, (bfd_size_type) have + want);
   if (newbuf == NULL)
-    return FALSE;
+    return false;
   *buf = newbuf;
   *bufend = *buf + have + want;
-  return TRUE;
+  return true;
 }
 
 /* We keep a hash table which maps strings to numbers.  We use it to
@@ -330,7 +341,7 @@ struct shuffle
   /* The length of the information.  */
   unsigned long size;
   /* Whether this information comes from a file or not.  */
-  bfd_boolean filep;
+  bool filep;
   union
     {
       struct
@@ -383,7 +394,7 @@ struct accumulate
 
 /* Add a file entry to a shuffle list.  */
 
-static bfd_boolean
+static bool
 add_file_shuffle (struct accumulate *ainfo,
 		  struct shuffle **head,
 		  struct shuffle **tail,
@@ -402,7 +413,7 @@ add_file_shuffle (struct accumulate *ain
       (*tail)->size += size;
       if ((*tail)->size > ainfo->largest_file_shuffle)
 	ainfo->largest_file_shuffle = (*tail)->size;
-      return TRUE;
+      return true;
     }
 
   n = (struct shuffle *) objalloc_alloc (ainfo->memory,
@@ -410,11 +421,11 @@ add_file_shuffle (struct accumulate *ain
   if (!n)
     {
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
   n->next = NULL;
   n->size = size;
-  n->filep = TRUE;
+  n->filep = true;
   n->u.file.input_bfd = input_bfd;
   n->u.file.offset = offset;
   if (*head == (struct shuffle *) NULL)
@@ -424,12 +435,12 @@ add_file_shuffle (struct accumulate *ain
   *tail = n;
   if (size > ainfo->largest_file_shuffle)
     ainfo->largest_file_shuffle = size;
-  return TRUE;
+  return true;
 }
 
 /* Add a memory entry to a shuffle list.  */
 
-static bfd_boolean
+static bool
 add_memory_shuffle (struct accumulate *ainfo,
 		    struct shuffle **head,
 		    struct shuffle **tail,
@@ -443,18 +454,18 @@ add_memory_shuffle (struct accumulate *a
   if (!n)
     {
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
   n->next = NULL;
   n->size = size;
-  n->filep = FALSE;
+  n->filep = false;
   n->u.memory = data;
   if (*head == (struct shuffle *) NULL)
     *head = n;
   if (*tail != (struct shuffle *) NULL)
     (*tail)->next = n;
   *tail = n;
-  return TRUE;
+  return true;
 }
 
 /* Initialize the FDR hash table.  This returns a handle which is then
@@ -467,7 +478,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)
@@ -546,7 +557,7 @@ bfd_ecoff_debug_free (void * handle,
    linker information structure.  HANDLE is returned by
    bfd_ecoff_debug_init.  */
 
-bfd_boolean
+bool
 bfd_ecoff_debug_accumulate (void * handle,
 			    bfd *output_bfd,
 			    struct ecoff_debug_info *output_debug,
@@ -639,10 +650,10 @@ bfd_ecoff_debug_accumulate (void * handl
   if (!input_debug->ifdmap || !rfd_out)
     {
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
   if (!add_memory_shuffle (ainfo, &ainfo->rfd, &ainfo->rfd_end, rfd_out, sz))
-    return FALSE;
+    return false;
 
   copied = 0;
 
@@ -683,14 +694,14 @@ bfd_ecoff_debug_accumulate (void * handl
 
 	  lookup = (char *) bfd_malloc ((bfd_size_type) strlen (name) + 20);
 	  if (lookup == NULL)
-	    return FALSE;
+	    return false;
 	  sprintf (lookup, "%s %lx %lx", name, (unsigned long) fdr.csym,
 		   (unsigned long) fdr.caux);
 
-	  fh = string_hash_lookup (&ainfo->fdr_hash, lookup, TRUE, TRUE);
+	  fh = string_hash_lookup (&ainfo->fdr_hash, lookup, true, true);
 	  free (lookup);
 	  if (fh == (struct string_hash_entry *) NULL)
-	    return FALSE;
+	    return false;
 
 	  if (fh->val != -1)
 	    {
@@ -740,10 +751,10 @@ bfd_ecoff_debug_accumulate (void * handl
   if (!fdr_out)
     {
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
   if (!add_memory_shuffle (ainfo, &ainfo->fdr, &ainfo->fdr_end, fdr_out, sz))
-    return FALSE;
+    return false;
   for (fdr_ptr = fdr_start, i = 0;
        fdr_ptr < fdr_end;
        fdr_ptr += fdr_add, i++)
@@ -752,7 +763,7 @@ bfd_ecoff_debug_accumulate (void * handl
       bfd_byte *sym_out;
       bfd_byte *lraw_src;
       bfd_byte *lraw_end;
-      bfd_boolean fgotfilename;
+      bool fgotfilename;
 
       if (input_debug->ifdmap[i] < output_symhdr->ifdMax)
 	{
@@ -772,17 +783,17 @@ bfd_ecoff_debug_accumulate (void * handl
 
       /* Swap in the local symbols, adjust their values, and swap them
 	 out again.  */
-      fgotfilename = FALSE;
+      fgotfilename = false;
       sz = fdr.csym * external_sym_size;
       sym_out = (bfd_byte *) objalloc_alloc (ainfo->memory, sz);
       if (!sym_out)
 	{
 	  bfd_set_error (bfd_error_no_memory);
-	  return FALSE;
+	  return false;
 	}
       if (!add_memory_shuffle (ainfo, &ainfo->sym, &ainfo->sym_end, sym_out,
 			       sz))
-	return FALSE;
+	return false;
       lraw_src = ((bfd_byte *) input_debug->external_sym
 		  + fdr.isymBase * input_swap->external_sym_size);
       lraw_end = lraw_src + fdr.csym * input_swap->external_sym_size;
@@ -821,13 +832,13 @@ bfd_ecoff_debug_accumulate (void * handl
 	     prevent us from easily merging different FDR's.  */
 	  if (! bfd_link_relocatable (info))
 	    {
-	      bfd_boolean ffilename;
+	      bool ffilename;
 	      const char *name;
 
 	      if (! fgotfilename && internal_sym.iss == fdr.rss)
-		ffilename = TRUE;
+		ffilename = true;
 	      else
-		ffilename = FALSE;
+		ffilename = false;
 
 	      /* Hash the name into the string table.  */
 	      name = input_debug->ss + fdr.issBase + internal_sym.iss;
@@ -837,9 +848,9 @@ bfd_ecoff_debug_accumulate (void * handl
 		{
 		  struct string_hash_entry *sh;
 
-		  sh = string_hash_lookup (&ainfo->str_hash, name, TRUE, TRUE);
+		  sh = string_hash_lookup (&ainfo->str_hash, name, true, true);
 		  if (sh == (struct string_hash_entry *) NULL)
-		    return FALSE;
+		    return false;
 		  if (sh->val == -1)
 		    {
 		      sh->val = output_symhdr->issMax;
@@ -857,7 +868,7 @@ bfd_ecoff_debug_accumulate (void * handl
 	      if (ffilename)
 		{
 		  fdr.rss = internal_sym.iss;
-		  fgotfilename = TRUE;
+		  fgotfilename = true;
 		}
 	    }
 
@@ -879,7 +890,7 @@ bfd_ecoff_debug_accumulate (void * handl
 	  file_ptr pos = input_symhdr->cbLineOffset + fdr.cbLineOffset;
 	  if (!add_file_shuffle (ainfo, &ainfo->line, &ainfo->line_end,
 				 input_bfd, pos, (unsigned long) fdr.cbLine))
-	    return FALSE;
+	    return false;
 	  fdr.ilineBase = output_symhdr->ilineMax;
 	  fdr.cbLineOffset = output_symhdr->cbLine;
 	  output_symhdr->ilineMax += fdr.cline;
@@ -892,7 +903,7 @@ bfd_ecoff_debug_accumulate (void * handl
 	  if (!add_file_shuffle (ainfo, &ainfo->aux, &ainfo->aux_end,
 				 input_bfd, pos,
 				 fdr.caux * sizeof (union aux_ext)))
-	    return FALSE;
+	    return false;
 	  fdr.iauxBase = output_symhdr->iauxMax;
 	  output_symhdr->iauxMax += fdr.caux;
 	}
@@ -911,7 +922,7 @@ bfd_ecoff_debug_accumulate (void * handl
 	  file_ptr pos = input_symhdr->cbSsOffset + fdr.issBase;
 	  if (!add_file_shuffle (ainfo, &ainfo->ss, &ainfo->ss_end,
 				 input_bfd, pos, (unsigned long) fdr.cbSs))
-	    return FALSE;
+	    return false;
 	  fdr.issBase = output_symhdr->issMax;
 	  output_symhdr->issMax += fdr.cbSs;
 	}
@@ -930,7 +941,7 @@ bfd_ecoff_debug_accumulate (void * handl
 	      unsigned long size = fdr.cpd * external_pdr_size;
 	      if (!add_file_shuffle (ainfo, &ainfo->pdr, &ainfo->pdr_end,
 				     input_bfd, pos, size))
-		return FALSE;
+		return false;
 	    }
 	  BFD_ASSERT (external_opt_size == input_swap->external_opt_size);
 	  if (fdr.copt > 0)
@@ -940,7 +951,7 @@ bfd_ecoff_debug_accumulate (void * handl
 	      unsigned long size = fdr.copt * external_opt_size;
 	      if (!add_file_shuffle (ainfo, &ainfo->opt, &ainfo->opt_end,
 				     input_bfd, pos, size))
-		return FALSE;
+		return false;
 	    }
 	}
       else
@@ -963,11 +974,11 @@ bfd_ecoff_debug_accumulate (void * handl
 	  if (!out)
 	    {
 	      bfd_set_error (bfd_error_no_memory);
-	      return FALSE;
+	      return false;
 	    }
 	  if (!add_memory_shuffle (ainfo, &ainfo->pdr, &ainfo->pdr_end, out,
 				   sz))
-	    return FALSE;
+	    return false;
 	  for (; in < end; in += insz, out += outsz)
 	    {
 	      PDR pdr;
@@ -987,11 +998,11 @@ bfd_ecoff_debug_accumulate (void * handl
 	  if (!out)
 	    {
 	      bfd_set_error (bfd_error_no_memory);
-	      return FALSE;
+	      return false;
 	    }
 	  if (!add_memory_shuffle (ainfo, &ainfo->opt, &ainfo->opt_end, out,
 				   sz))
-	    return FALSE;
+	    return false;
 	  for (; in < end; in += insz, out += outsz)
 	    {
 	      OPTR opt;
@@ -1023,7 +1034,7 @@ bfd_ecoff_debug_accumulate (void * handl
       ++output_symhdr->ifdMax;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Add a string to the debugging information we are accumulating.
@@ -1055,7 +1066,7 @@ ecoff_add_string (struct accumulate *ain
     {
       struct string_hash_entry *sh;
 
-      sh = string_hash_lookup (&ainfo->str_hash, string, TRUE, TRUE);
+      sh = string_hash_lookup (&ainfo->str_hash, string, true, true);
       if (sh == (struct string_hash_entry *) NULL)
 	return -1;
       if (sh->val == -1)
@@ -1077,7 +1088,7 @@ ecoff_add_string (struct accumulate *ain
 
 /* Add debugging information from a non-ECOFF file.  */
 
-bfd_boolean
+bool
 bfd_ecoff_debug_accumulate_other (void * handle,
 				  bfd *output_bfd,
 				  struct ecoff_debug_info *output_debug,
@@ -1112,21 +1123,21 @@ 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;
+    return false;
   fdr.isymBase = output_symhdr->isymMax;
 
   /* Get the local symbols from the input BFD.  */
   symsize = bfd_get_symtab_upper_bound (input_bfd);
   if (symsize < 0)
-    return FALSE;
+    return false;
   symbols = (asymbol **) bfd_alloc (output_bfd, (bfd_size_type) symsize);
   if (symbols == (asymbol **) NULL)
-    return FALSE;
+    return false;
   symcount = bfd_canonicalize_symtab (input_bfd, symbols);
   if (symcount < 0)
-    return FALSE;
+    return false;
   sym_end = symbols + symcount;
 
   /* Handle the local symbols.  Any external symbols are handled
@@ -1144,7 +1155,7 @@ bfd_ecoff_debug_accumulate_other (void *
 					   (*sym_ptr)->name);
 
       if (internal_sym.iss == -1)
-	return FALSE;
+	return false;
       if (bfd_is_com_section ((*sym_ptr)->section)
 	  || bfd_is_und_section ((*sym_ptr)->section))
 	internal_sym.value = (*sym_ptr)->value;
@@ -1161,7 +1172,7 @@ bfd_ecoff_debug_accumulate_other (void *
       if (!external_sym)
 	{
 	  bfd_set_error (bfd_error_no_memory);
-	  return FALSE;
+	  return false;
 	}
       (*swap_sym_out) (output_bfd, &internal_sym, external_sym);
       add_memory_shuffle (ainfo, &ainfo->sym, &ainfo->sym_end,
@@ -1182,7 +1193,7 @@ bfd_ecoff_debug_accumulate_other (void *
   if (!external_fdr)
     {
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
   (*output_swap->swap_fdr_out) (output_bfd, &fdr, external_fdr);
   add_memory_shuffle (ainfo, &ainfo->fdr, &ainfo->fdr_end,
@@ -1191,7 +1202,7 @@ bfd_ecoff_debug_accumulate_other (void *
 
   ++output_symhdr->ifdMax;
 
-  return TRUE;
+  return true;
 }
 
 /* Set up ECOFF debugging information for the external symbols.
@@ -1199,12 +1210,12 @@ bfd_ecoff_debug_accumulate_other (void *
    probably be changed to use a shuffle structure.  The assembler uses
    this interface, so that must be changed to do something else.  */
 
-bfd_boolean
+bool
 bfd_ecoff_debug_externals (bfd *abfd,
 			   struct ecoff_debug_info *debug,
 			   const struct ecoff_debug_swap *swap,
-			   bfd_boolean relocatable,
-			   bfd_boolean (*get_extr) (asymbol *, EXTR *),
+			   bool relocatable,
+			   bool (*get_extr) (asymbol *, EXTR *),
 			   void (*set_index) (asymbol *, bfd_size_type))
 {
   HDRR * const symhdr = &debug->symbolic_header;
@@ -1213,7 +1224,7 @@ bfd_ecoff_debug_externals (bfd *abfd,
 
   sym_ptr_ptr = bfd_get_outsymbols (abfd);
   if (sym_ptr_ptr == NULL)
-    return TRUE;
+    return true;
 
   for (c = bfd_get_symcount (abfd); c > 0; c--, sym_ptr_ptr++)
     {
@@ -1258,15 +1269,15 @@ bfd_ecoff_debug_externals (bfd *abfd,
 
       if (! bfd_ecoff_debug_one_external (abfd, debug, swap,
 					  sym_ptr->name, &esym))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Add a single external symbol to the debugging information.  */
 
-bfd_boolean
+bool
 bfd_ecoff_debug_one_external (bfd *abfd,
 			      struct ecoff_debug_info *debug,
 			      const struct ecoff_debug_swap *swap,
@@ -1287,7 +1298,7 @@ bfd_ecoff_debug_one_external (bfd *abfd,
       if (! ecoff_add_bytes ((char **) &debug->ssext,
 			     (char **) &debug->ssext_end,
 			     symhdr->issExtMax + namelen + 1))
-	return FALSE;
+	return false;
     }
   if ((size_t) ((char *) debug->external_ext_end
 		- (char *) debug->external_ext)
@@ -1298,7 +1309,7 @@ bfd_ecoff_debug_one_external (bfd *abfd,
       if (! ecoff_add_bytes ((char **) &external_ext,
 			     (char **) &external_ext_end,
 			     (symhdr->iextMax + 1) * (size_t) external_ext_size))
-	return FALSE;
+	return false;
       debug->external_ext = external_ext;
       debug->external_ext_end = external_ext_end;
     }
@@ -1314,7 +1325,7 @@ bfd_ecoff_debug_one_external (bfd *abfd,
   strcpy (debug->ssext + symhdr->issExtMax, name);
   symhdr->issExtMax += namelen + 1;
 
-  return TRUE;
+  return true;
 }
 
 /* Align the ECOFF debugging information.  */
@@ -1413,7 +1424,7 @@ bfd_ecoff_debug_size (bfd *abfd,
    going to be placed at.  This assumes that the counts are set
    correctly.  */
 
-static bfd_boolean
+static bool
 ecoff_write_symhdr (bfd *abfd,
 		    struct ecoff_debug_info *debug,
 		    const struct ecoff_debug_swap *swap,
@@ -1426,7 +1437,7 @@ ecoff_write_symhdr (bfd *abfd,
 
   /* Go to the right location in the file.  */
   if (bfd_seek (abfd, where, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   where += swap->external_hdr_size;
 
@@ -1460,17 +1471,15 @@ ecoff_write_symhdr (bfd *abfd,
     goto error_return;
 
   (*swap->swap_hdr_out) (abfd, symhdr, buff);
-  if (bfd_bwrite (buff, swap->external_hdr_size, abfd)
+  if (bfd_write (buff, swap->external_hdr_size, abfd)
       != swap->external_hdr_size)
     goto error_return;
 
-  if (buff != NULL)
-    free (buff);
-  return TRUE;
+  free (buff);
+  return true;
  error_return:
-  if (buff != NULL)
-    free (buff);
-  return FALSE;
+  free (buff);
+  return false;
 }
 
 /* Write out the ECOFF debugging information.  This function assumes
@@ -1479,7 +1488,7 @@ ecoff_write_symhdr (bfd *abfd,
    information to.  This function fills in the file offsets in the
    symbolic header.  */
 
-bfd_boolean
+bool
 bfd_ecoff_write_debug (bfd *abfd,
 		       struct ecoff_debug_info *debug,
 		       const struct ecoff_debug_swap *swap,
@@ -1488,22 +1497,22 @@ bfd_ecoff_write_debug (bfd *abfd,
   HDRR * const symhdr = &debug->symbolic_header;
 
   if (! ecoff_write_symhdr (abfd, debug, swap, where))
-    return FALSE;
+    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) \
-    return FALSE;
+  BFD_ASSERT (symhdr->offset == 0				\
+	      || (bfd_vma) bfd_tell (abfd) == symhdr->offset);	\
+  if (symhdr->count != 0					\
+      && bfd_write (debug->ptr, size * symhdr->count,		\
+		    abfd) != size * symhdr->count)		\
+    return false;
 
   WRITE (line, cbLine, sizeof (unsigned char), cbLineOffset);
   WRITE (external_dnr, idnMax, swap->external_dnr_size, cbDnOffset);
   WRITE (external_pdr, ipdMax, swap->external_pdr_size, cbPdOffset);
   WRITE (external_sym, isymMax, swap->external_sym_size, cbSymOffset);
   WRITE (external_opt, ioptMax, swap->external_opt_size, cbOptOffset);
-  WRITE (external_aux, iauxMax, (bfd_size_type) sizeof (union aux_ext),
-	 cbAuxOffset);
+  WRITE (external_aux, iauxMax, sizeof (union aux_ext), cbAuxOffset);
   WRITE (ss, issMax, sizeof (char), cbSsOffset);
   WRITE (ssext, issExtMax, sizeof (char), cbSsExtOffset);
   WRITE (external_fdr, ifdMax, swap->external_fdr_size, cbFdOffset);
@@ -1511,66 +1520,64 @@ bfd_ecoff_write_debug (bfd *abfd,
   WRITE (external_ext, iextMax, swap->external_ext_size, cbExtOffset);
 #undef WRITE
 
-  return TRUE;
+  return true;
 }
 
 /* Write out a shuffle list.  */
 
 
-static bfd_boolean
+static bool
 ecoff_write_shuffle (bfd *abfd,
 		     const struct ecoff_debug_swap *swap,
 		     struct shuffle *shuffle,
 		     void * space)
 {
   struct shuffle *l;
-  unsigned long total;
+  size_t total;
 
   total = 0;
-  for (l = shuffle; l != (struct shuffle *) NULL; l = l->next)
+  for (l = shuffle; l != NULL; l = l->next)
     {
       if (! l->filep)
 	{
-	  if (bfd_bwrite (l->u.memory, (bfd_size_type) l->size, abfd)
-	      != l->size)
-	    return FALSE;
+	  if (bfd_write (l->u.memory, l->size, abfd) != l->size)
+	    return false;
 	}
       else
 	{
 	  if (bfd_seek (l->u.file.input_bfd, l->u.file.offset, SEEK_SET) != 0
-	      || bfd_bread (space, (bfd_size_type) l->size,
-			   l->u.file.input_bfd) != l->size
-	      || bfd_bwrite (space, (bfd_size_type) l->size, abfd) != l->size)
-	    return FALSE;
+	      || bfd_read (space, l->size, l->u.file.input_bfd) != l->size
+	      || bfd_write (space, l->size, abfd) != l->size)
+	    return false;
 	}
       total += l->size;
     }
 
   if ((total & (swap->debug_align - 1)) != 0)
     {
-      unsigned int i;
+      size_t i;
       bfd_byte *s;
 
       i = swap->debug_align - (total & (swap->debug_align - 1));
-      s = (bfd_byte *) bfd_zmalloc ((bfd_size_type) i);
+      s = bfd_zmalloc (i);
       if (s == NULL && i != 0)
-	return FALSE;
+	return false;
 
-      if (bfd_bwrite (s, (bfd_size_type) i, abfd) != i)
+      if (bfd_write (s, i, abfd) != i)
 	{
 	  free (s);
-	  return FALSE;
+	  return false;
 	}
       free (s);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write out debugging information using accumulated linker
    information.  */
 
-bfd_boolean
+bool
 bfd_ecoff_write_accumulated_debug (void * handle,
 				   bfd *abfd,
 				   struct ecoff_debug_info *debug,
@@ -1611,36 +1618,34 @@ bfd_ecoff_write_accumulated_debug (void
       bfd_byte null;
       struct string_hash_entry *sh;
 
-      BFD_ASSERT (ainfo->ss == (struct shuffle *) NULL);
+      BFD_ASSERT (ainfo->ss == NULL);
       null = 0;
-      if (bfd_bwrite (&null, (bfd_size_type) 1, abfd) != 1)
+      if (bfd_write (&null, 1, abfd) != 1)
 	goto error_return;
       total = 1;
       BFD_ASSERT (ainfo->ss_hash == NULL || ainfo->ss_hash->val == 1);
-      for (sh = ainfo->ss_hash;
-	   sh != (struct string_hash_entry *) NULL;
-	   sh = sh->next)
+      for (sh = ainfo->ss_hash; sh != NULL; sh = sh->next)
 	{
 	  size_t len;
 
 	  len = strlen (sh->root.string);
 	  amt = len + 1;
-	  if (bfd_bwrite (sh->root.string, amt, abfd) != amt)
+	  if (bfd_write (sh->root.string, amt, abfd) != amt)
 	    goto error_return;
 	  total += len + 1;
 	}
 
       if ((total & (swap->debug_align - 1)) != 0)
 	{
-	  unsigned int i;
+	  size_t i;
 	  bfd_byte *s;
 
 	  i = swap->debug_align - (total & (swap->debug_align - 1));
-	  s = (bfd_byte *) bfd_zmalloc ((bfd_size_type) i);
+	  s = bfd_zmalloc (i);
 	  if (s == NULL && i != 0)
 	    goto error_return;
 
-	  if (bfd_bwrite (s, (bfd_size_type) i, abfd) != i)
+	  if (bfd_write (s, i, abfd) != i)
 	    {
 	      free (s);
 	      goto error_return;
@@ -1652,20 +1657,20 @@ 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_write (debug->ssext, amt, abfd) != amt)
     goto error_return;
   if ((debug->symbolic_header.issExtMax & (swap->debug_align - 1)) != 0)
     {
-      unsigned int i;
+      size_t i;
       bfd_byte *s;
 
       i = (swap->debug_align
 	   - (debug->symbolic_header.issExtMax & (swap->debug_align - 1)));
-      s = (bfd_byte *) bfd_zmalloc ((bfd_size_type) i);
+      s = bfd_zmalloc (i);
       if (s == NULL && i != 0)
 	goto error_return;
 
-      if (bfd_bwrite (s, (bfd_size_type) i, abfd) != i)
+      if (bfd_write (s, i, abfd) != i)
 	{
 	  free (s);
 	  goto error_return;
@@ -1682,22 +1687,52 @@ 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_write (debug->external_ext, amt, abfd) != amt)
     goto error_return;
 
-  if (space != NULL)
-    free (space);
-  return TRUE;
+  free (space);
+  return true;
 
  error_return:
-  if (space != NULL)
-    free (space);
-  return FALSE;
+  free (space);
+  return false;
 }
 
 /* Handle the find_nearest_line function for both ECOFF and MIPS ELF
    files.  */
 
+/* Free ECOFF debugging info used by find_nearest_line.  */
+
+void
+_bfd_ecoff_free_ecoff_debug_info (struct ecoff_debug_info *debug)
+{
+  if (!debug->alloc_syments)
+    {
+      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);
+    }
+  debug->line= NULL;
+  debug->external_dnr= NULL;
+  debug->external_pdr= NULL;
+  debug->external_sym= NULL;
+  debug->external_opt= NULL;
+  debug->external_aux= NULL;
+  debug->ss= NULL;
+  debug->ssext= NULL;
+  debug->external_fdr= NULL;
+  debug->external_rfd= NULL;
+  debug->external_ext= NULL;
+}
+
 /* Compare FDR entries.  This is called via qsort.  */
 
 static int
@@ -1721,7 +1756,7 @@ cmp_fdrtab_entry (const void * leftp, co
    table will be sorted by address so we can look it up via binary
    search.  */
 
-static bfd_boolean
+static bool
 mk_fdrtab (bfd *abfd,
 	   struct ecoff_debug_info * const debug_info,
 	   const struct ecoff_debug_swap * const debug_swap,
@@ -1731,9 +1766,9 @@ mk_fdrtab (bfd *abfd,
   FDR *fdr_ptr;
   FDR *fdr_start;
   FDR *fdr_end;
-  bfd_boolean stabs;
-  long len;
-  bfd_size_type amt;
+  bool stabs;
+  size_t len;
+  size_t amt;
 
   fdr_start = debug_info->fdr;
   fdr_end = fdr_start + debug_info->symbolic_header.ifdMax;
@@ -1741,17 +1776,27 @@ mk_fdrtab (bfd *abfd,
   /* First, let's see how long the table needs to be.  */
   for (len = 0, fdr_ptr = fdr_start; fdr_ptr < fdr_end; fdr_ptr++)
     {
-      if (fdr_ptr->cpd == 0)	/* Skip FDRs that have no PDRs.  */
+      /* Sanity check fdr procedure descriptor pointer.  */
+      long ipdMax = debug_info->symbolic_header.ipdMax;
+      if (fdr_ptr->ipdFirst >= ipdMax
+	  || fdr_ptr->cpd < 0
+	  || fdr_ptr->cpd > ipdMax - fdr_ptr->ipdFirst)
+	fdr_ptr->cpd = 0;
+      /* Skip FDRs that have no PDRs.  */
+      if (fdr_ptr->cpd == 0)
 	continue;
       ++len;
     }
 
   /* Now, create and fill in the table.  */
-  amt = (bfd_size_type) len * sizeof (struct ecoff_fdrtab_entry);
+  if (_bfd_mul_overflow (len, sizeof (struct ecoff_fdrtab_entry), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return false;
+    }
   line_info->fdrtab = (struct ecoff_fdrtab_entry*) bfd_zalloc (abfd, amt);
   if (line_info->fdrtab == NULL)
-    return FALSE;
-  line_info->fdrtab_len = len;
+    return false;
 
   tab = line_info->fdrtab;
   for (fdr_ptr = fdr_start; fdr_ptr < fdr_end; fdr_ptr++)
@@ -1762,18 +1807,27 @@ mk_fdrtab (bfd *abfd,
       /* Check whether this file has stabs debugging information.  In
 	 a file with stabs debugging information, the second local
 	 symbol is named @stabs.  */
-      stabs = FALSE;
+      stabs = false;
       if (fdr_ptr->csym >= 2)
 	{
 	  char *sym_ptr;
 	  SYMR sym;
 
+	  if ((long) ((unsigned long) fdr_ptr->isymBase + 1) <= 0
+	      || fdr_ptr->isymBase + 1 >= debug_info->symbolic_header.isymMax)
+	    continue;
+
 	  sym_ptr = ((char *) debug_info->external_sym
 		     + (fdr_ptr->isymBase + 1) * debug_swap->external_sym_size);
 	  (*debug_swap->swap_sym_in) (abfd, sym_ptr, &sym);
-	  if (strcmp (debug_info->ss + fdr_ptr->issBase + sym.iss,
-		      STABS_SYMBOL) == 0)
-	    stabs = TRUE;
+	  if (fdr_ptr->issBase >= 0
+	      && fdr_ptr->issBase < debug_info->symbolic_header.issMax
+	      && sym.iss >= 0
+	      && sym.iss < (debug_info->symbolic_header.issMax
+			    - fdr_ptr->issBase)
+	      && strcmp (debug_info->ss + fdr_ptr->issBase + sym.iss,
+			 STABS_SYMBOL) == 0)
+	    stabs = true;
 	}
 
       if (!stabs)
@@ -1799,15 +1853,17 @@ mk_fdrtab (bfd *abfd,
       tab->fdr = fdr_ptr;
       ++tab;
     }
+  len = tab - line_info->fdrtab;
+  line_info->fdrtab_len = len;
 
   /* Finally, the table is sorted in increasing memory-address order.
      The table is mostly sorted already, but there are cases (e.g.,
      static functions in include files), where this does not hold.
      Use "odump -PFv" to verify...  */
-  qsort (line_info->fdrtab, (size_t) len,
+  qsort (line_info->fdrtab, len,
 	 sizeof (struct ecoff_fdrtab_entry), cmp_fdrtab_entry);
 
-  return TRUE;
+  return true;
 }
 
 /* Return index of first FDR that covers to OFFSET.  */
@@ -1860,7 +1916,7 @@ fdrtab_lookup (struct ecoff_find_line *l
 /* Look up a line given an address, storing the information in
    LINE_INFO->cache.  */
 
-static bfd_boolean
+static bool
 lookup_line (bfd *abfd,
 	     struct ecoff_debug_info * const debug_info,
 	     const struct ecoff_debug_swap * const debug_swap,
@@ -1868,7 +1924,7 @@ lookup_line (bfd *abfd,
 {
   struct ecoff_fdrtab_entry *tab;
   bfd_vma offset;
-  bfd_boolean stabs;
+  bool stabs;
   FDR *fdr_ptr;
   int i;
 
@@ -1879,14 +1935,14 @@ lookup_line (bfd *abfd,
      don't have it already.  */
   if (line_info->fdrtab == NULL
       && !mk_fdrtab (abfd, debug_info, debug_swap, line_info))
-    return FALSE;
+    return false;
 
   tab = line_info->fdrtab;
 
   /* Find first FDR for address OFFSET.  */
   i = fdrtab_lookup (line_info, offset);
   if (i < 0)
-    return FALSE;		/* no FDR, no fun...  */
+    return false;		/* no FDR, no fun...  */
 
   /* eraxxon: 'fdrtab_lookup' doesn't give what we want, at least for Compaq's
      C++ compiler 6.2.  Consider three FDRs with starting addresses of x, y,
@@ -1962,20 +2018,33 @@ lookup_line (bfd *abfd,
   /* Check whether this file has stabs debugging information.  In a
      file with stabs debugging information, the second local symbol is
      named @stabs.  */
-  stabs = FALSE;
+  stabs = false;
   if (fdr_ptr->csym >= 2)
     {
       char *sym_ptr;
       SYMR sym;
 
-      sym_ptr = ((char *) debug_info->external_sym
-		 + (fdr_ptr->isymBase + 1) * debug_swap->external_sym_size);
-      (*debug_swap->swap_sym_in) (abfd, sym_ptr, &sym);
-      if (strcmp (debug_info->ss + fdr_ptr->issBase + sym.iss,
-		  STABS_SYMBOL) == 0)
-	stabs = TRUE;
+      if ((long) ((unsigned long) fdr_ptr->isymBase + 1) > 0
+	  && fdr_ptr->isymBase + 1 < debug_info->symbolic_header.isymMax)
+	{
+	  sym_ptr = ((char *) debug_info->external_sym
+		     + (fdr_ptr->isymBase + 1) * debug_swap->external_sym_size);
+	  (*debug_swap->swap_sym_in) (abfd, sym_ptr, &sym);
+	  if (fdr_ptr->issBase >= 0
+	      && fdr_ptr->issBase < debug_info->symbolic_header.issMax
+	      && sym.iss >= 0
+	      && sym.iss < (debug_info->symbolic_header.issMax
+			    - fdr_ptr->issBase)
+	      && strcmp (debug_info->ss + fdr_ptr->issBase + sym.iss,
+			 STABS_SYMBOL) == 0)
+	    stabs = true;
+	}
     }
 
+  line_info->cache.filename = NULL;
+  line_info->cache.functionname = NULL;
+  line_info->cache.line_num = 0;
+
   if (!stabs)
     {
       bfd_size_type external_pdr_size;
@@ -2062,7 +2131,7 @@ lookup_line (bfd *abfd,
 	     because we iterate over every FDR rather than just ones
 	     with a base address less than or equal to 'offset'.  */
 	  bfd_signed_vma dist = -1, min_dist = -1;
-	  char *pdr_hold;
+	  char *pdr_hold = NULL;
 	  char *pdr_end;
 
 	  fdr_ptr = tab[i].fdr;
@@ -2070,17 +2139,14 @@ lookup_line (bfd *abfd,
 	  pdr_ptr = ((char *) debug_info->external_pdr
 		     + fdr_ptr->ipdFirst * external_pdr_size);
 	  pdr_end = pdr_ptr + fdr_ptr->cpd * external_pdr_size;
-	  (*debug_swap->swap_pdr_in) (abfd, pdr_ptr, &pdr);
 	  /* Find PDR that is closest to OFFSET.  If pdr.prof is set,
 	     the procedure entry-point *may* be 0x10 below pdr.adr.  We
 	     simply pretend that pdr.prof *implies* a lower entry-point.
 	     This is safe because it just means that may identify 4 NOPs
 	     in front of the function as belonging to the function.  */
-	  for (pdr_hold = NULL;
-	       pdr_ptr < pdr_end;
-	       (pdr_ptr += external_pdr_size,
-		(*debug_swap->swap_pdr_in) (abfd, pdr_ptr, &pdr)))
+	  for (; pdr_ptr < pdr_end; pdr_ptr += external_pdr_size)
 	    {
+	      (*debug_swap->swap_pdr_in) (abfd, pdr_ptr, &pdr);
 	      if (offset >= (pdr.adr - 0x10 * pdr.prof))
 		{
 		  dist = offset - (pdr.adr - 0x10 * pdr.prof);
@@ -2108,7 +2174,7 @@ lookup_line (bfd *abfd,
       while (++i < line_info->fdrtab_len);
 
       if (!best_fdr || !best_pdr)
-	return FALSE;			/* Shouldn't happen...  */
+	return false;			/* Shouldn't happen...  */
 
       /* Phew, finally we got something that we can hold onto.  */
       fdr_ptr = best_fdr;
@@ -2118,12 +2184,20 @@ lookup_line (bfd *abfd,
 	 are stored in a very funky format, which I won't try to
 	 describe.  The search is bounded by the end of the FDRs line
 	 number entries.  */
-      line_end = debug_info->line + fdr_ptr->cbLineOffset + fdr_ptr->cbLine;
+      line_ptr = line_end = debug_info->line;
+      if (fdr_ptr->cbLineOffset < debug_info->symbolic_header.cbLine
+	  && fdr_ptr->cbLine <= (debug_info->symbolic_header.cbLine
+				 - fdr_ptr->cbLineOffset)
+	  && pdr.cbLineOffset <= (debug_info->symbolic_header.cbLine
+				  - fdr_ptr->cbLineOffset))
+	{
+	  line_end += fdr_ptr->cbLineOffset + fdr_ptr->cbLine;
+	  line_ptr += fdr_ptr->cbLineOffset + pdr.cbLineOffset;
+	}
 
       /* Make offset relative to procedure entry.  */
       offset -= pdr.adr - 0x10 * pdr.prof;
       lineno = pdr.lnLow;
-      line_ptr = debug_info->line + fdr_ptr->cbLineOffset + pdr.cbLineOffset;
       while (line_ptr < line_end)
 	{
 	  int delta;
@@ -2154,38 +2228,50 @@ lookup_line (bfd *abfd,
 	 symbols, at least according to gdb/mipsread.c.  */
       if (fdr_ptr->rss == -1)
 	{
-	  line_info->cache.filename = NULL;
-	  if (pdr.isym == -1)
-	    line_info->cache.functionname = NULL;
-	  else
-	    {
-	      EXTR proc_ext;
+	  EXTR proc_ext;
 
+	  if (pdr.isym >= 0
+	      && pdr.isym < debug_info->symbolic_header.iextMax)
+	    {
 	      (*debug_swap->swap_ext_in)
-		(abfd,
-		 ((char *) debug_info->external_ext
-		  + pdr.isym * debug_swap->external_ext_size),
+		(abfd, ((char *) debug_info->external_ext
+			+ pdr.isym * debug_swap->external_ext_size),
 		 &proc_ext);
-	      line_info->cache.functionname = (debug_info->ssext
-					       + proc_ext.asym.iss);
+	      if (proc_ext.asym.iss >= 0
+		  && proc_ext.asym.iss < debug_info->symbolic_header.issExtMax)
+		line_info->cache.functionname = (debug_info->ssext
+						 + proc_ext.asym.iss);
 	    }
 	}
-      else
+      else if (fdr_ptr->issBase >= 0
+	       && fdr_ptr->issBase < debug_info->symbolic_header.issMax
+	       && fdr_ptr->rss >= 0
+	       && fdr_ptr->rss < (debug_info->symbolic_header.issMax
+				  - fdr_ptr->issBase))
 	{
 	  SYMR proc_sym;
 
 	  line_info->cache.filename = (debug_info->ss
 				       + fdr_ptr->issBase
 				       + fdr_ptr->rss);
-	  (*debug_swap->swap_sym_in)
-	    (abfd,
-	     ((char *) debug_info->external_sym
-	      + ((fdr_ptr->isymBase + pdr.isym)
-		 * debug_swap->external_sym_size)),
-	     &proc_sym);
-	  line_info->cache.functionname = (debug_info->ss
-					   + fdr_ptr->issBase
-					   + proc_sym.iss);
+	  if (fdr_ptr->isymBase >= 0
+	      && fdr_ptr->isymBase < debug_info->symbolic_header.isymMax
+	      && pdr.isym >= 0
+	      && pdr.isym < (debug_info->symbolic_header.isymMax
+			     - fdr_ptr->isymBase))
+	    {
+	      (*debug_swap->swap_sym_in)
+		(abfd, ((char *) debug_info->external_sym
+			+ ((fdr_ptr->isymBase + pdr.isym)
+			   * debug_swap->external_sym_size)),
+		 &proc_sym);
+	      if (proc_sym.iss >= 0
+		  && proc_sym.iss < (debug_info->symbolic_header.issMax
+				     - fdr_ptr->issBase))
+		line_info->cache.functionname = (debug_info->ss
+						 + fdr_ptr->issBase
+						 + proc_sym.iss);
+	    }
 	}
       if (lineno == ilineNil)
 	lineno = 0;
@@ -2201,8 +2287,8 @@ lookup_line (bfd *abfd,
       const char *line_file_name;
       bfd_vma low_func_vma;
       bfd_vma low_line_vma;
-      bfd_boolean past_line;
-      bfd_boolean past_fn;
+      bool past_line;
+      bool past_fn;
       char *sym_ptr, *sym_ptr_end;
       size_t len, funclen;
       char *buffer = NULL;
@@ -2217,10 +2303,6 @@ lookup_line (bfd *abfd,
 	 looking through the symbols until we find both a line number
 	 and a function name which are beyond the address we want.  */
 
-      line_info->cache.filename = NULL;
-      line_info->cache.functionname = NULL;
-      line_info->cache.line_num = 0;
-
       directory_name = NULL;
       main_file_name = NULL;
       current_file_name = NULL;
@@ -2228,14 +2310,26 @@ lookup_line (bfd *abfd,
       line_file_name = NULL;
       low_func_vma = 0;
       low_line_vma = 0;
-      past_line = FALSE;
-      past_fn = FALSE;
+      past_line = false;
+      past_fn = false;
 
       external_sym_size = debug_swap->external_sym_size;
 
-      sym_ptr = ((char *) debug_info->external_sym
-		 + (fdr_ptr->isymBase + 2) * external_sym_size);
-      sym_ptr_end = sym_ptr + (fdr_ptr->csym - 2) * external_sym_size;
+      if (fdr_ptr->isymBase >= 0
+	  && fdr_ptr->isymBase < debug_info->symbolic_header.isymMax
+	  && fdr_ptr->csym >= 2
+	  && fdr_ptr->csym < (debug_info->symbolic_header.isymMax
+			      - fdr_ptr->isymBase))
+	{
+	  sym_ptr = ((char *) debug_info->external_sym
+		     + (fdr_ptr->isymBase + 2) * external_sym_size);
+	  sym_ptr_end = sym_ptr + (fdr_ptr->csym - 2) * external_sym_size;
+	}
+      else
+	{
+	  sym_ptr = NULL;
+	  sym_ptr_end = sym_ptr;
+	}
       for (;
 	   sym_ptr < sym_ptr_end && (! past_line || ! past_fn);
 	   sym_ptr += external_sym_size)
@@ -2249,8 +2343,13 @@ lookup_line (bfd *abfd,
 	      switch (ECOFF_UNMARK_STAB (sym.index))
 		{
 		case N_SO:
-		  main_file_name = current_file_name =
-		    debug_info->ss + fdr_ptr->issBase + sym.iss;
+		  if (fdr_ptr->issBase >= 0
+		      && fdr_ptr->issBase < debug_info->symbolic_header.issMax
+		      && sym.iss >= 0
+		      && sym.iss < (debug_info->symbolic_header.issMax
+				    - fdr_ptr->issBase))
+		    main_file_name = current_file_name
+		      = debug_info->ss + fdr_ptr->issBase + sym.iss;
 
 		  /* Check the next symbol to see if it is also an
 		     N_SO symbol.  */
@@ -2265,26 +2364,41 @@ lookup_line (bfd *abfd,
 			  && ECOFF_UNMARK_STAB (nextsym.index) == N_SO)
 			{
 			  directory_name = current_file_name;
-			  main_file_name = current_file_name =
-			    debug_info->ss + fdr_ptr->issBase + nextsym.iss;
+			  if (fdr_ptr->issBase >= 0
+			      && fdr_ptr->issBase < debug_info->symbolic_header.issMax
+			      && nextsym.iss >= 0
+			      && nextsym.iss < (debug_info->symbolic_header.issMax
+						- fdr_ptr->issBase))
+			  main_file_name = current_file_name
+			    = debug_info->ss + fdr_ptr->issBase + nextsym.iss;
 			  sym_ptr += external_sym_size;
 			}
 		    }
 		  break;
 
 		case N_SOL:
-		  current_file_name =
-		    debug_info->ss + fdr_ptr->issBase + sym.iss;
+		  if (fdr_ptr->issBase >= 0
+		      && fdr_ptr->issBase < debug_info->symbolic_header.issMax
+		      && sym.iss >= 0
+		      && sym.iss < (debug_info->symbolic_header.issMax
+				    - fdr_ptr->issBase))
+		    current_file_name
+		      = debug_info->ss + fdr_ptr->issBase + sym.iss;
 		  break;
 
 		case N_FUN:
 		  if (sym.value > offset)
-		    past_fn = TRUE;
+		    past_fn = true;
 		  else if (sym.value >= low_func_vma)
 		    {
 		      low_func_vma = sym.value;
-		      function_name =
-			debug_info->ss + fdr_ptr->issBase + sym.iss;
+		      if (fdr_ptr->issBase >= 0
+			  && fdr_ptr->issBase < debug_info->symbolic_header.issMax
+			  && sym.iss >= 0
+			  && sym.iss < (debug_info->symbolic_header.issMax
+					- fdr_ptr->issBase))
+			function_name
+			  = debug_info->ss + fdr_ptr->issBase + sym.iss;
 		    }
 		  break;
 		}
@@ -2292,7 +2406,7 @@ lookup_line (bfd *abfd,
 	  else if (sym.st == stLabel && sym.index != indexNil)
 	    {
 	      if (sym.value > offset)
-		past_line = TRUE;
+		past_line = true;
 	      else if (sym.value >= low_line_vma)
 		{
 		  low_line_vma = sym.value;
@@ -2320,12 +2434,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);
-	  if (buffer == NULL)
-	    return FALSE;
 	  line_info->find_buffer = buffer;
+	  if (buffer == NULL)
+	    return false;
 	}
 
       if (function_name != NULL)
@@ -2352,12 +2465,12 @@ lookup_line (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Do the work of find_nearest_line.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_locate_line (bfd *abfd,
 			asection *section,
 			bfd_vma offset,
@@ -2381,7 +2494,7 @@ _bfd_ecoff_locate_line (bfd *abfd,
       if (! lookup_line (abfd, debug_info, debug_swap, line_info))
 	{
 	  line_info->cache.sect = NULL;
-	  return FALSE;
+	  return false;
 	}
     }
 
@@ -2389,7 +2502,7 @@ _bfd_ecoff_locate_line (bfd *abfd,
   *functionname_ptr = line_info->cache.functionname;
   *retline_ptr = line_info->cache.line_num;
 
-  return TRUE;
+  return true;
 }
 
 /* These routines copy symbolic information into a memory buffer.
@@ -2402,12 +2515,9 @@ _bfd_ecoff_locate_line (bfd *abfd,
 
 /* Collect a shuffle into a memory buffer.  */
 
-static bfd_boolean
+static bool
 ecoff_collect_shuffle (struct shuffle *l, bfd_byte *buff)
 {
-  unsigned long total;
-
-  total = 0;
   for (; l != (struct shuffle *) NULL; l = l->next)
     {
       if (! l->filep)
@@ -2415,20 +2525,18 @@ ecoff_collect_shuffle (struct shuffle *l
       else
 	{
 	  if (bfd_seek (l->u.file.input_bfd, l->u.file.offset, SEEK_SET) != 0
-	      || (bfd_bread (buff, (bfd_size_type) l->size, l->u.file.input_bfd)
-		  != l->size))
-	    return FALSE;
+	      || bfd_read (buff, l->size, l->u.file.input_bfd) != l->size)
+	    return false;
 	}
-      total += l->size;
       buff += l->size;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy PDR information into a memory buffer.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_get_accumulated_pdr (void * handle,
 				bfd_byte *buff)
 {
@@ -2439,7 +2547,7 @@ _bfd_ecoff_get_accumulated_pdr (void * h
 
 /* Copy symbol information into a memory buffer.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_get_accumulated_sym (void * handle, bfd_byte *buff)
 {
   struct accumulate *ainfo = (struct accumulate *) handle;
@@ -2449,18 +2557,16 @@ _bfd_ecoff_get_accumulated_sym (void * h
 
 /* Copy the string table into a memory buffer.  */
 
-bfd_boolean
+bool
 _bfd_ecoff_get_accumulated_ss (void * handle, bfd_byte *buff)
 {
   struct accumulate *ainfo = (struct accumulate *) handle;
   struct string_hash_entry *sh;
-  unsigned long total;
 
   /* The string table is written out from the hash table if this is a
      final link.  */
   BFD_ASSERT (ainfo->ss == (struct shuffle *) NULL);
   *buff++ = '\0';
-  total = 1;
   BFD_ASSERT (ainfo->ss_hash == NULL || ainfo->ss_hash->val == 1);
   for (sh = ainfo->ss_hash;
        sh != (struct string_hash_entry *) NULL;
@@ -2470,9 +2576,8 @@ _bfd_ecoff_get_accumulated_ss (void * ha
 
       len = strlen (sh->root.string);
       memcpy (buff, sh->root.string, len + 1);
-      total += len + 1;
       buff += len + 1;
     }
 
-  return TRUE;
+  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.20200303/bfd/ecoffswap.h ./bfd/ecoffswap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ecoffswap.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ecoffswap.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic ECOFF swapping routines, for BFD.
-   Copyright (C) 1992-2019 Free Software Foundation, Inc.
+   Copyright (C) 1992-2025 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.20200303/bfd/elf32-am33lin.c ./bfd/elf32-am33lin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-am33lin.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-am33lin.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,6 +28,7 @@
 #define TARGET_LITTLE_SYM	am33_elf32_linux_vec
 #define TARGET_LITTLE_NAME	"elf32-am33lin"
 #define ELF_ARCH		bfd_arch_mn10300
+#define ELF_TARGET_ID		MN10300_ELF_DATA
 #define ELF_MACHINE_CODE	EM_MN10300
 #define ELF_MACHINE_ALT1	EM_CYGNUS_MN10300
 #define ELF_MAXPAGESIZE		0x1000
@@ -38,7 +39,7 @@
 #define _bfd_mn10300_elf_final_write_processing	 _bfd_am33_elf_final_write_processing
 
 /* Support for core dump NOTE sections.  */
-static bfd_boolean
+static bool
 elf32_am33lin_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -47,7 +48,7 @@ elf32_am33lin_grok_prstatus (bfd *abfd,
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 184:
       case 188:		/* Linux/am33 */
@@ -69,13 +70,13 @@ elf32_am33lin_grok_prstatus (bfd *abfd,
 					  note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf32_am33lin_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 124:		/* Linux/am33 elf_prpsinfo */
 	elf_tdata (abfd)->core->program
@@ -96,12 +97,12 @@ elf32_am33lin_grok_psinfo (bfd *abfd, El
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 #define elf_backend_grok_prstatus	elf32_am33lin_grok_prstatus
 #define elf_backend_grok_psinfo		elf32_am33lin_grok_psinfo
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #include "elf-m10300.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.20200303/bfd/elf32-arc.c ./bfd/elf32-arc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-arc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-arc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ARC-specific support for 32-bit ELF
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
    Contributed by Cupertino Miranda (cmiranda@synopsys.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -55,7 +55,7 @@ name_for_global_symbol (struct elf_link_
     Elf_Internal_Rela _rel;						\
     bfd_byte * _loc;							\
 									\
-    if (_htab->dynamic_sections_created == TRUE)				\
+    if (_htab->dynamic_sections_created)				\
       {									\
 	BFD_ASSERT (_htab->srel##SECTION &&_htab->srel##SECTION->contents); \
 	_loc = _htab->srel##SECTION->contents				\
@@ -125,58 +125,58 @@ bfd_put_32_me (bfd *abfd, bfd_vma value,
   bfd_put_16 (abfd, value & 0xffff, data + 2);
 }
 
-static ATTRIBUTE_UNUSED bfd_boolean
+static ATTRIBUTE_UNUSED bool
 is_reloc_PC_relative (reloc_howto_type *howto)
 {
-  return (strstr (howto->name, "PC") != NULL) ? TRUE : FALSE;
+  return strstr (howto->name, "PC") != NULL;
 }
 
-static bfd_boolean
+static bool
 is_reloc_SDA_relative (reloc_howto_type *howto)
 {
-  return (strstr (howto->name, "SDA") != NULL) ? TRUE : FALSE;
+  return strstr (howto->name, "SDA") != NULL;
 }
 
-static bfd_boolean
+static bool
 is_reloc_for_GOT (reloc_howto_type * howto)
 {
   if (strstr (howto->name, "TLS") != NULL)
-    return FALSE;
-  return (strstr (howto->name, "GOT") != NULL) ? TRUE : FALSE;
+    return false;
+  return strstr (howto->name, "GOT") != NULL;
 }
 
-static bfd_boolean
+static bool
 is_reloc_for_PLT (reloc_howto_type * howto)
 {
-  return (strstr (howto->name, "PLT") != NULL) ? TRUE : FALSE;
+  return strstr (howto->name, "PLT") != NULL;
 }
 
-static bfd_boolean
+static bool
 is_reloc_for_TLS (reloc_howto_type *howto)
 {
-  return (strstr (howto->name, "TLS") != NULL) ? TRUE : FALSE;
+  return strstr (howto->name, "TLS") != NULL;
 }
 
 struct arc_relocation_data
 {
-  bfd_signed_vma  reloc_offset;
-  bfd_signed_vma  reloc_addend;
-  bfd_signed_vma  got_offset_value;
+  bfd_signed_vma reloc_offset;
+  bfd_signed_vma reloc_addend;
+  bfd_signed_vma got_offset_value;
 
-  bfd_signed_vma  sym_value;
-  asection *	  sym_section;
+  bfd_signed_vma sym_value;
+  asection *sym_section;
 
   reloc_howto_type *howto;
 
-  asection *	  input_section;
+  asection *input_section;
 
-  bfd_signed_vma  sdata_begin_symbol_vma;
-  bfd_boolean	  sdata_begin_symbol_vma_set;
-  bfd_signed_vma  got_symbol_vma;
+  bfd_signed_vma sdata_begin_symbol_vma;
+  bool sdata_begin_symbol_vma_set;
+  bfd_signed_vma got_symbol_vma;
 
-  bfd_boolean	  should_relocate;
+  bool should_relocate;
 
-  const char *    symbol_name;
+  const char *symbol_name;
 };
 
 /* ARC ELF linker hash entry.  */
@@ -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;
 };
 
@@ -241,9 +238,9 @@ enum howto_list
 #undef ARC_RELOC_HOWTO
 
 #define ARC_RELOC_HOWTO(TYPE, VALUE, RSIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
-  [TYPE] = HOWTO (R_##TYPE, 0, RSIZE, BITSIZE, FALSE, 0,		\
+  [TYPE] = HOWTO (R_##TYPE, 0, RSIZE, BITSIZE, false, 0,		\
 		  complain_overflow_##OVERFLOW, arc_elf_reloc,		\
-		  "R_" #TYPE, FALSE, 0, 0, FALSE),
+		  "R_" #TYPE, false, 0, 0, false),
 
 static struct reloc_howto_struct elf_arc_howto_table[] =
 {
@@ -252,17 +249,17 @@ static struct reloc_howto_struct elf_arc
    example.
  HOWTO (R_ARC_NONE, // Type.
     0, // Rightshift.
-    2, // Size (0 = byte, 1 = short, 2 = long).
+    4, // Size.
     32, // Bitsize.
-    FALSE, // PC_relative.
+    false, // PC_relative.
     0, // Bitpos.
     complain_overflow_bitfield, // Complain_on_overflow.
     bfd_elf_generic_reloc, // Special_function.
     "R_ARC_NONE", // Name.
-    TRUE, // Partial_inplace.
+    true, // Partial_inplace.
     0, // Src_mask.
     0, // Dst_mask.
-    FALSE), // PCrel_offset.
+    false), // PCrel_offset.
 */
 };
 #undef ARC_RELOC_HOWTO
@@ -277,7 +274,7 @@ arc_elf_howto_init (void)
   /* Only 32 bit data relocations should be marked as ME.  */		\
   if (strstr (#FORMULA, " ME ") != NULL)				\
     {									\
-      BFD_ASSERT (SIZE == 2);						\
+      BFD_ASSERT (SIZE == 4);						\
     }
 
 #include "elf/arc-reloc.def"
@@ -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;
     }
 
@@ -367,8 +363,7 @@ arc_elf_link_hash_table_create (bfd *abf
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
 				      elf_arc_link_hash_newfunc,
-				      sizeof (struct elf_arc_link_hash_entry),
-				      ARC_ELF_DATA))
+				      sizeof (struct elf_arc_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -395,17 +390,17 @@ static const struct arc_reloc_map arc_re
 
 #undef ARC_RELOC_HOWTO
 
-typedef ATTRIBUTE_UNUSED bfd_vma (*replace_func) (unsigned, int ATTRIBUTE_UNUSED);
+typedef ATTRIBUTE_UNUSED unsigned (*replace_func) (unsigned, int ATTRIBUTE_UNUSED);
 
 #define ARC_RELOC_HOWTO(TYPE, VALUE, SIZE, BITSIZE, RELOC_FUNCTION, OVERFLOW, FORMULA) \
   case TYPE: \
-    func = (void *) RELOC_FUNCTION; \
+    func = RELOC_FUNCTION; \
     break;
 
 static replace_func
 get_replace_function (bfd *abfd, unsigned int r_type)
 {
-  void *func = NULL;
+  replace_func func = NULL;
 
   switch (r_type)
     {
@@ -415,7 +410,7 @@ get_replace_function (bfd *abfd, unsigne
   if (func == replace_bits24 && bfd_big_endian (abfd))
     func = replace_bits24_be;
 
-  return (replace_func) func;
+  return func;
 }
 #undef ARC_RELOC_HOWTO
 
@@ -435,16 +430,16 @@ arc_elf32_bfd_reloc_type_lookup (bfd * a
 }
 
 /* Function to set the ELF flag bits.  */
-static bfd_boolean
+static bool
 arc_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Print private flags.  */
-static bfd_boolean
+static bool
 arc_elf_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -482,23 +477,23 @@ arc_elf_print_private_bfd_data (bfd *abf
     }
 
   fputc ('\n', file);
-  return TRUE;
+  return true;
 }
 
 /* Copy backend specific data from one object module to another.  */
 
-static bfd_boolean
+static bool
 arc_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (!elf_flags_init (obfd)
 	      || elf_elfheader (obfd)->e_flags == elf_elfheader (ibfd)->e_flags);
 
   elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
-  elf_flags_init (obfd) = TRUE;
+  elf_flags_init (obfd) = true;
 
   /* Copy object attributes.  */
   _bfd_elf_copy_obj_attributes (ibfd, obfd);
@@ -522,7 +517,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd * a
 
 /* Set the howto pointer for an ARC ELF reloc.  */
 
-static bfd_boolean
+static bool
 arc_info_to_howto_rel (bfd * abfd,
 		       arelent * cache_ptr,
 		       Elf_Internal_Rela * dst)
@@ -536,11 +531,11 @@ arc_info_to_howto_rel (bfd * abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = arc_elf_howto (r_type);
-  return TRUE;
+  return true;
 }
 
 /* Extract CPU features from an NTBS.  */
@@ -585,14 +580,14 @@ arc_stralloc (char * s1, const char * s2
 /* Merge ARC object attributes from IBFD into OBFD.  Raise an error if
    there are conflicting attributes.  */
 
-static bfd_boolean
+static bool
 arc_elf_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   obj_attribute *in_attr;
   obj_attribute *out_attr;
   int i;
-  bfd_boolean result = TRUE;
+  bool result = true;
   const char *sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
   char *tagname = NULL;
 
@@ -600,13 +595,13 @@ arc_elf_merge_attributes (bfd *ibfd, str
      of accepting unknown attributes in the first input file - but
      is that a bug?  */
   if (ibfd->flags & BFD_LINKER_CREATED)
-    return TRUE;
+    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;
+    return true;
 
   if (!elf_known_obj_attributes_proc (obfd)[0].i)
     {
@@ -619,7 +614,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 	 initialized.  */
       out_attr[0].i = 1;
 
-      return TRUE;
+      return true;
     }
 
   in_attr = elf_known_obj_attributes_proc (ibfd);
@@ -667,7 +662,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 		 obfd,
 		 tagval[in_attr[i].i],
 		 tagval[out_attr[i].i]);
-	      result = FALSE;
+	      result = false;
 	      break;
 	    }
 	  else
@@ -702,7 +697,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 		      (_("error: %pB: unable to merge ISA extension attributes "
 			 "%s"),
 		       obfd, bfd_feature_list[j].name);
-		    result = FALSE;
+		    result = false;
 		    break;
 		  }
 	      /* Second, if we have compatible features with the
@@ -726,7 +721,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 		      (_("error: %pB: conflicting ISA extension attributes "
 			 "%s with %s"),
 		       obfd, p1, p2);
-		    result = FALSE;
+		    result = false;
 		    break;
 		  }
 	      /* Everithing is alright.  */
@@ -765,7 +760,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 	      _bfd_error_handler
 		(_("error: %pB: cannot mix rf16 with full register set %pB"),
 		 obfd, ibfd);
-	      result = FALSE;
+	      result = false;
 	    }
 	  break;
 
@@ -795,7 +790,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 		   obfd, tagname,
 		   tagval[in_attr[i].i],
 		   tagval[out_attr[i].i]);
-		result = FALSE;
+		result = false;
 	      }
 	    tagname = NULL;
 	    break;
@@ -820,7 +815,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 	      _bfd_error_handler
 		(_("error: %pB: conflicting attributes %s"),
 		 obfd, tagname);
-	      result = FALSE;
+	      result = false;
 	    }
 	  break;
 
@@ -848,7 +843,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
   if (!_bfd_elf_merge_object_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   /* Check for any attributes not known on ARC.  */
   result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd);
@@ -859,7 +854,7 @@ arc_elf_merge_attributes (bfd *ibfd, str
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 arc_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -871,11 +866,11 @@ arc_elf_merge_private_bfd_data (bfd *ibf
 
    /* Check if we have the same endianess.  */
   if (! _bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   /* Collect ELF flags.  */
   in_flags = elf_elfheader (ibfd)->e_flags & EF_ARC_MACH_MSK;
@@ -883,33 +878,33 @@ arc_elf_merge_private_bfd_data (bfd *ibf
 
   if (!elf_flags_init (obfd)) /* First call, no flags set.  */
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       out_flags = in_flags;
     }
 
   if (!arc_elf_merge_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   /* Check to see if the input BFD actually contains any sections.  Do
      not short-circuit dynamic objects; their section list may be
      emptied by elf_link_add_object_symbols.  */
   if (!(ibfd->flags & DYNAMIC))
     {
-      bfd_boolean null_input_bfd = TRUE;
-      bfd_boolean only_data_sections = TRUE;
+      bool null_input_bfd = true;
+      bool only_data_sections = true;
 
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
 	{
 	  if ((bfd_section_flags (sec)
 	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
-	    only_data_sections = FALSE;
+	    only_data_sections = false;
 
-	  null_input_bfd = FALSE;
+	  null_input_bfd = false;
 	}
 
       if (null_input_bfd || only_data_sections)
-	return TRUE;
+	return true;
     }
 
   /* Complain about various flag/architecture mismatches.  */
@@ -926,7 +921,7 @@ arc_elf_merge_private_bfd_data (bfd *ibf
 	  _bfd_error_handler (_("error: attempting to link %pB "
 				"with a binary %pB of different architecture"),
 			      ibfd, obfd);
-	  return FALSE;
+	  return false;
 	}
       else if ((in_flags != out_flags)
 	       /* If we have object attributes, then we already
@@ -942,7 +937,7 @@ arc_elf_merge_private_bfd_data (bfd *ibf
 		(_("%pB: uses different e_flags (%#x) fields than "
 		   "previous modules (%#x)"),
 		 ibfd, in_flags, out_flags);
-	      return FALSE;
+	      return false;
 	    }
 	  /* MWDT doesnt set the eflags hence make sure we choose the
 	     eflags set by gcc.  */
@@ -963,7 +958,7 @@ arc_elf_merge_private_bfd_data (bfd *ibf
       return bfd_set_arch_mach (obfd, bfd_arch_arc, bfd_get_mach (ibfd));
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return a best guess for the machine number based on the attributes.  */
@@ -991,7 +986,7 @@ bfd_arc_get_mach_from_attributes (bfd *
 }
 
 /* Set the right machine number for an ARC ELF file.  */
-static bfd_boolean
+static bool
 arc_elf_object_p (bfd * abfd)
 {
   /* Make sure this is initialised, or you'll have the potential of passing
@@ -1029,7 +1024,7 @@ arc_elf_object_p (bfd * abfd)
 	{
 	  _bfd_error_handler
 	    (_("error: the ARC4 architecture is no longer supported"));
-	  return FALSE;
+	  return false;
 	}
       else
 	{
@@ -1045,13 +1040,10 @@ arc_elf_object_p (bfd * abfd)
 /* The final processing done just before writing out an ARC ELF object file.
    This gets the ARC architecture right based on the machine number.  */
 
-static bfd_boolean
+static bool
 arc_elf_final_write_processing (bfd *abfd)
 {
   unsigned long emf;
-  int osver = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC,
-					Tag_ARC_ABI_osver);
-  flagword e_flags = elf_elfheader (abfd)->e_flags & ~EF_ARC_OSABI_MSK;
 
   switch (bfd_get_mach (abfd))
     {
@@ -1066,12 +1058,15 @@ arc_elf_final_write_processing (bfd *abf
   elf_elfheader (abfd)->e_machine = emf;
 
   /* Record whatever is the current syscall ABI version.  */
+  int osver = bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC,
+					Tag_ARC_ABI_osver);
+  flagword e_flags = elf_elfheader (abfd)->e_flags;
   if (osver)
-    e_flags |= ((osver & 0x0f) << 8);
-  else
+    e_flags = (e_flags & ~EF_ARC_OSABI_MSK) | ((osver & 0x0f) << 8);
+  else if ((e_flags & EF_ARC_OSABI_MSK) == 0)
     e_flags |= E_ARC_OSABI_V3;
 
-  elf_elfheader (abfd)->e_flags |= e_flags;
+  elf_elfheader (abfd)->e_flags = e_flags;
   return _bfd_elf_final_write_processing (abfd);
 }
 
@@ -1132,7 +1127,7 @@ debug_arc_reloc (struct arc_relocation_d
 #endif /* ARC_ENABLE_DEBUG */
 
 static bfd_vma
-middle_endian_convert (bfd_vma insn, bfd_boolean do_it)
+middle_endian_convert (bfd_vma insn, bool do_it)
 {
   if (do_it)
     {
@@ -1230,10 +1225,8 @@ arc_special_overflow_checks (const struc
   (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
 #define JLI (bfd_signed_vma) (reloc_data.sym_section->output_section->vma)
 #define _SDA_BASE_ (bfd_signed_vma) (reloc_data.sdata_begin_symbol_vma)
-#define TLS_REL (bfd_signed_vma) \
-  ((elf_hash_table (info))->tls_sec->output_section->vma)
-#define TLS_TBSS (align_power(TCB_SIZE, \
-		  reloc_data.sym_section->alignment_power))
+#define TLS_REL (bfd_signed_vma)(tls_sec->output_section->vma)
+#define TLS_TBSS (align_power (TCB_SIZE, tls_sec->alignment_power))
 
 #define none (0)
 
@@ -1255,11 +1248,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);					\
@@ -1311,23 +1304,24 @@ arc_do_relocation (bfd_byte * contents,
   bfd * abfd = reloc_data.input_section->owner;
   struct elf_link_hash_table *htab ATTRIBUTE_UNUSED = elf_hash_table (info);
   bfd_reloc_status_type flag;
+  asection *tls_sec = htab->tls_sec;
 
   if (!reloc_data.should_relocate)
     return bfd_reloc_ok;
 
-  switch (reloc_data.howto->size)
+  switch (bfd_get_reloc_size (reloc_data.howto))
     {
-    case 2:
+    case 4:
       insn = arc_bfd_get_32 (abfd,
 			     contents + reloc_data.reloc_offset,
 			     reloc_data.input_section);
       break;
-    case 1:
+    case 2:
       insn = arc_bfd_get_16 (abfd,
 			     contents + reloc_data.reloc_offset,
 			     reloc_data.input_section);
       break;
-    case 0:
+    case 1:
       insn = arc_bfd_get_8 (abfd,
 			    contents + reloc_data.reloc_offset,
 			    reloc_data.input_section);
@@ -1340,6 +1334,20 @@ arc_do_relocation (bfd_byte * contents,
 
   orig_insn = insn;
 
+  /* If we resolve a TLS relocation, make sure we do have a valid TLS
+     section.  */
+  switch (reloc_data.howto->type)
+    {
+    case R_ARC_TLS_LE_32:
+      if (tls_sec == NULL)
+	return bfd_reloc_notsupported;
+      break;
+
+    default:
+      break;
+    }
+
+
   switch (reloc_data.howto->type)
     {
 #include "elf/arc-reloc.def"
@@ -1371,19 +1379,19 @@ arc_do_relocation (bfd_byte * contents,
     }
 
   /* Write updated instruction back to memory.  */
-  switch (reloc_data.howto->size)
+  switch (bfd_get_reloc_size (reloc_data.howto))
     {
-    case 2:
+    case 4:
       arc_bfd_put_32 (abfd, insn,
 		      contents + reloc_data.reloc_offset,
 		      reloc_data.input_section);
       break;
-    case 1:
+    case 2:
 	arc_bfd_put_16 (abfd, insn,
 			contents + reloc_data.reloc_offset,
 			reloc_data.input_section);
 	break;
-    case 0:
+    case 1:
       arc_bfd_put_8 (abfd, insn,
 		     contents + reloc_data.reloc_offset,
 		     reloc_data.input_section);
@@ -1427,7 +1435,7 @@ arc_do_relocation (bfd_byte * contents,
 	      local_section : is an array giving the section in the input file
 			      corresponding to the st_shndx field of each
 			      local symbol.  */
-static bfd_boolean
+static int
 elf_arc_relocate_section (bfd *			  output_bfd,
 			  struct bfd_link_info *  info,
 			  bfd *			  input_bfd,
@@ -1451,15 +1459,15 @@ elf_arc_relocate_section (bfd *			  outp
   relend = relocs + input_section->reloc_count;
   for (; rel < relend; wrel++, rel++)
     {
-      enum elf_arc_reloc_type	    r_type;
-      reloc_howto_type *	    howto;
-      unsigned long		    r_symndx;
-      struct elf_link_hash_entry *  h;
-      Elf_Internal_Sym *	    sym;
-      asection *		    sec;
-      struct elf_link_hash_entry *  h2;
-      const char *		    msg;
-      bfd_boolean		    unresolved_reloc = FALSE;
+      enum elf_arc_reloc_type r_type;
+      reloc_howto_type *howto;
+      unsigned long r_symndx;
+      struct elf_link_hash_entry *h;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      struct elf_link_hash_entry *h2;
+      const char *msg;
+      bool unresolved_reloc = false;
 
       struct arc_relocation_data reloc_data =
       {
@@ -1471,9 +1479,9 @@ elf_arc_relocate_section (bfd *			  outp
 	.howto = NULL,
 	.input_section = NULL,
 	.sdata_begin_symbol_vma = 0,
-	.sdata_begin_symbol_vma_set = FALSE,
+	.sdata_begin_symbol_vma_set = false,
 	.got_symbol_vma = 0,
-	.should_relocate = FALSE
+	.should_relocate = false
       };
 
       r_type = ELF32_R_TYPE (rel->r_info);
@@ -1481,7 +1489,7 @@ elf_arc_relocate_section (bfd *			  outp
       if (r_type >= (int) R_ARC_max)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       howto = arc_elf_howto (r_type);
 
@@ -1517,7 +1525,7 @@ elf_arc_relocate_section (bfd *			  outp
 	}
 
       h2 = elf_link_hash_lookup (elf_hash_table (info), "__SDATA_BEGIN__",
-				 FALSE, FALSE, TRUE);
+				 false, false, true);
 
       if (!reloc_data.sdata_begin_symbol_vma_set
 	  && h2 != NULL && h2->root.type != bfd_link_hash_undefined
@@ -1527,7 +1535,7 @@ elf_arc_relocate_section (bfd *			  outp
 	  reloc_data.sdata_begin_symbol_vma =
 	    (h2->root.u.def.value
 	     + h2->root.u.def.section->output_section->vma);
-	  reloc_data.sdata_begin_symbol_vma_set = TRUE;
+	  reloc_data.sdata_begin_symbol_vma_set = true;
 	}
 
       reloc_data.input_section = input_section;
@@ -1547,7 +1555,7 @@ elf_arc_relocate_section (bfd *			  outp
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 	  bfd_vma relocation ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
@@ -1631,7 +1639,7 @@ elf_arc_relocate_section (bfd *			  outp
 	    reloc_data.got_symbol_vma = htab->sgot->output_section->vma
 					+ htab->sgot->output_offset;
 
-	  reloc_data.should_relocate = TRUE;
+	  reloc_data.should_relocate = true;
 	}
       else /* Global symbol.  */
 	{
@@ -1665,7 +1673,7 @@ elf_arc_relocate_section (bfd *			  outp
 	      reloc_data.sym_value = h->root.u.def.value;
 	      reloc_data.sym_section = h->root.u.def.section;
 
-	      reloc_data.should_relocate = TRUE;
+	      reloc_data.should_relocate = true;
 
 	      if (is_reloc_for_GOT (howto) && !bfd_link_pic (info))
 		{
@@ -1699,7 +1707,7 @@ elf_arc_relocate_section (bfd *			  outp
 		{
 		  reloc_data.sym_value = h->root.u.def.value;
 		  reloc_data.sym_section = htab->sgot;
-		  reloc_data.should_relocate = TRUE;
+		  reloc_data.should_relocate = true;
 		}
 	      else if (is_reloc_for_PLT (howto)
 		       && h->plt.offset != (bfd_vma) -1)
@@ -1707,7 +1715,7 @@ elf_arc_relocate_section (bfd *			  outp
 		  /* TODO: This is repeated up here.  */
 		  reloc_data.sym_value = h->plt.offset;
 		  reloc_data.sym_section = htab->splt;
-		  reloc_data.should_relocate = TRUE;
+		  reloc_data.should_relocate = true;
 		}
 	      else
 		continue;
@@ -1719,7 +1727,7 @@ elf_arc_relocate_section (bfd *			  outp
 		  reloc_data.sym_value = h->root.u.def.value;
 		  reloc_data.sym_section = htab->sgot;
 
-		  reloc_data.should_relocate = TRUE;
+		  reloc_data.should_relocate = true;
 		}
 	      else if (is_reloc_for_PLT (howto))
 		{
@@ -1728,16 +1736,16 @@ elf_arc_relocate_section (bfd *			  outp
 		  if (bfd_link_executable (info))
 		    (*info->callbacks->undefined_symbol)
 		      (info, h->root.root.string, input_bfd, input_section,
-		       rel->r_offset, TRUE);
+		       rel->r_offset, true);
 		  reloc_data.sym_value = h->plt.offset;
 		  reloc_data.sym_section = htab->splt;
 
-		  reloc_data.should_relocate = TRUE;
+		  reloc_data.should_relocate = true;
 		}
 	      else if (!bfd_link_pic (info) || bfd_link_executable (info))
 		(*info->callbacks->undefined_symbol)
 		  (info, h->root.root.string, input_bfd, input_section,
-		   rel->r_offset, TRUE);
+		   rel->r_offset, true);
 	    }
 
 	  BFD_ASSERT (htab->sgot != NULL || !is_reloc_for_GOT (howto));
@@ -1749,7 +1757,7 @@ elf_arc_relocate_section (bfd *			  outp
       if ((is_reloc_for_GOT (howto)
 	   || is_reloc_for_TLS (howto)))
 	{
-	  reloc_data.should_relocate = TRUE;
+	  reloc_data.should_relocate = true;
 
 	  struct got_entry **list
 	    = get_got_entry_list_for_symbol (input_bfd, r_symndx, h);
@@ -1786,6 +1794,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
@@ -1794,11 +1803,11 @@ elf_arc_relocate_section (bfd *			  outp
 	      {
 		Elf_Internal_Rela outrel;
 		bfd_byte *loc;
-		bfd_boolean skip = FALSE;
-		bfd_boolean relocate = FALSE;
+		bool skip = false;
+		bool relocate = false;
 		asection *sreloc = _bfd_elf_get_dynamic_reloc_section
 				 (input_bfd, input_section,
-				  /*RELA*/ TRUE);
+				  /*RELA*/ true);
 
 		BFD_ASSERT (sreloc != NULL);
 
@@ -1808,7 +1817,7 @@ elf_arc_relocate_section (bfd *			  outp
 							   rel->r_offset);
 
 		if (outrel.r_offset == (bfd_vma) -1)
-		  skip = TRUE;
+		  skip = true;
 
 		outrel.r_addend = rel->r_addend;
 		outrel.r_offset += (input_section->output_section->vma
@@ -1817,7 +1826,7 @@ elf_arc_relocate_section (bfd *			  outp
 		if (skip)
 		  {
 		    memset (&outrel, 0, sizeof outrel);
-		    relocate = FALSE;
+		    relocate = false;
 		  }
 		else if (h != NULL
 			 && h->dynindx != -1
@@ -1828,9 +1837,9 @@ elf_arc_relocate_section (bfd *			  outp
 		  {
 		    BFD_ASSERT (h != NULL);
 		    if ((input_section->flags & SEC_ALLOC) != 0)
-		      relocate = FALSE;
+		      relocate = false;
 		    else
-		      relocate = TRUE;
+		      relocate = true;
 
 		    BFD_ASSERT (h->dynindx != -1);
 		    outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
@@ -1847,7 +1856,7 @@ elf_arc_relocate_section (bfd *			  outp
 		       dynamic symbol table, and it's a regular symbol
 		       not defined in a shared object, then treat the
 		       symbol as local, resolve it now.  */
-		    relocate = TRUE;
+		    relocate = true;
 		    /* outrel.r_addend = 0; */
 		    outrel.r_info = ELF32_R_INFO (0, R_ARC_RELATIVE);
 		  }
@@ -1874,7 +1883,7 @@ elf_arc_relocate_section (bfd *			  outp
 	  _bfd_error_handler
 	    ("error: linker symbol __SDATA_BEGIN__ not found");
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       DEBUG_ARC_RELOC (reloc_data);
@@ -1887,7 +1896,7 @@ elf_arc_relocate_section (bfd *			  outp
 	  _bfd_error_handler
 	    (_("GOT and PLT relocations cannot be fixed with a non dynamic linker"));
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       msg = NULL;
@@ -1904,7 +1913,7 @@ elf_arc_relocate_section (bfd *			  outp
 
 	case bfd_reloc_undefined:
 	  (*info->callbacks->undefined_symbol)
-	    (info, reloc_data.symbol_name, input_bfd, input_section, rel->r_offset, TRUE);
+	    (info, reloc_data.symbol_name, input_bfd, input_section, rel->r_offset, true);
 	  break;
 
 	case bfd_reloc_other:
@@ -1935,17 +1944,30 @@ elf_arc_relocate_section (bfd *			  outp
 
       if (msg)
 	_bfd_error_handler (msg, input_bfd, input_section, reloc_data.symbol_name);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  if (wrel != rel)
+    {
+      Elf_Internal_Shdr *rel_hdr;
+      size_t deleted = rel - wrel;
+
+      rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section);
+      rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
+      rel_hdr = _bfd_elf_single_rel_hdr (input_section);
+      rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
+      input_section->reloc_count -= deleted;
+    }
+
+  return true;
 }
 
 #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
+static bool
 elf_arc_check_relocs (bfd *			 abfd,
 		      struct bfd_link_info *     info,
 		      asection *		 sec,
@@ -1960,7 +1982,7 @@ elf_arc_check_relocs (bfd *			 abfd,
   struct elf_link_hash_table *	htab = elf_hash_table (info);
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   if (htab->dynobj == NULL)
     htab->dynobj = abfd;
@@ -1982,7 +2004,7 @@ elf_arc_check_relocs (bfd *			 abfd,
       if (r_type >= (int) R_ARC_max)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       howto = arc_elf_howto (r_type);
 
@@ -2028,7 +2050,7 @@ elf_arc_check_relocs (bfd *			 abfd,
 		 arc_elf_howto (r_type)->name,
 		 name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	    /* In some cases we are not setting the 'non_got_ref'
@@ -2050,14 +2072,14 @@ elf_arc_check_relocs (bfd *			 abfd,
 		    if (info->dynamic
 			&& ! htab->dynamic_sections_created
 			&& ! _bfd_elf_link_create_dynamic_sections (abfd, info))
-		      return FALSE;
+		      return false;
 		    sreloc = _bfd_elf_make_dynamic_reloc_section (sec, dynobj,
 								  2, abfd,
 								  /*rela*/
-								  TRUE);
+								  true);
 
 		    if (sreloc == NULL)
-		      return FALSE;
+		      return false;
 		  }
 		sreloc->size += sizeof (Elf32_External_Rela);
 
@@ -2096,10 +2118,10 @@ elf_arc_check_relocs (bfd *			 abfd,
 		   arc_elf_howto (r_type)->name,
 		   name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  if (! _bfd_elf_create_got_section (dynobj, info))
-	    return FALSE;
+	    return false;
 
 	  arc_fill_got_info_for_reloc (
 		  arc_got_entry_type_for_reloc (howto),
@@ -2109,12 +2131,12 @@ elf_arc_check_relocs (bfd *			 abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 #define ELF_DYNAMIC_INTERPRETER  "/sbin/ld-uClibc.so"
 
-static struct plt_version_t *
+static const struct plt_version_t *
 arc_get_plt_version (struct bfd_link_info *info)
 {
   int i;
@@ -2148,7 +2170,7 @@ add_symbol_to_plt (struct bfd_link_info
   struct elf_link_hash_table *htab = elf_hash_table (info);
   bfd_vma ret;
 
-  struct plt_version_t *plt_data = arc_get_plt_version (info);
+  const struct plt_version_t *plt_data = arc_get_plt_version (info);
 
   /* If this is the first .plt entry, make room for the special first
      entry.  */
@@ -2228,7 +2250,7 @@ relocate_plt_for_symbol (bfd *output_bfd
 			 struct bfd_link_info *info,
 			 struct elf_link_hash_entry *h)
 {
-  struct plt_version_t *plt_data = arc_get_plt_version (info);
+  const struct plt_version_t *plt_data = arc_get_plt_version (info);
   struct elf_link_hash_table *htab = elf_hash_table (info);
 
   bfd_vma plt_index = (h->plt.offset  - plt_data->entry_size)
@@ -2294,7 +2316,7 @@ static void
 relocate_plt_for_entry (bfd *abfd,
 			struct bfd_link_info *info)
 {
-  struct plt_version_t *plt_data = arc_get_plt_version (info);
+  const struct plt_version_t *plt_data = arc_get_plt_version (info);
   struct elf_link_hash_table *htab = elf_hash_table (info);
 
   {
@@ -2317,7 +2339,7 @@ relocate_plt_for_entry (bfd *abfd,
    have to change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf_arc_adjust_dynamic_symbol (struct bfd_link_info *info,
 			      struct elf_link_hash_entry *h)
 {
@@ -2337,13 +2359,13 @@ elf_arc_adjust_dynamic_symbol (struct bf
 	     a procedure linkage table, and we can just do a PC32
 	     reloc instead.  */
 	  BFD_ASSERT (h->needs_plt);
-	  return TRUE;
+	  return true;
 	}
 
       /* Make sure this symbol is output as a dynamic symbol.  */
       if (h->dynindx == -1 && !h->forced_local
 	  && !bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
 
       if (bfd_link_pic (info)
 	  || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
@@ -2362,7 +2384,7 @@ elf_arc_adjust_dynamic_symbol (struct bf
 	  h->plt.offset = (bfd_vma) -1;
 	  h->needs_plt = 0;
 	}
-      return TRUE;
+      return true;
     }
 
   /* If this is a weak symbol, and there is a real definition, the
@@ -2374,7 +2396,7 @@ elf_arc_adjust_dynamic_symbol (struct bf
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2385,18 +2407,18 @@ elf_arc_adjust_dynamic_symbol (struct bf
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (!bfd_link_executable (info))
-    return TRUE;
+    return true;
 
   /* If there are no non-GOT references, we do not need a copy
      relocation.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -2410,7 +2432,7 @@ elf_arc_adjust_dynamic_symbol (struct bf
      same memory location for the variable.  */
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* We must generate a R_ARC_COPY reloc to tell the dynamic linker to
      copy the initial value out of the dynamic object and into the
@@ -2441,7 +2463,7 @@ elf_arc_adjust_dynamic_symbol (struct bf
 	       sym	  :
    Returns  : True/False as the return status.  */
 
-static bfd_boolean
+static bool
 elf_arc_finish_dynamic_symbol (bfd * output_bfd,
 			       struct bfd_link_info *info,
 			       struct elf_link_hash_entry *h,
@@ -2475,9 +2497,6 @@ elf_arc_finish_dynamic_symbol (bfd * out
     {
       struct elf_arc_link_hash_table *arc_htab = elf_arc_hash_table (info);
 
-      if (arc_htab == NULL)
-	return FALSE;
-
       if (h->dynindx == -1
 	  || (h->root.type != bfd_link_hash_defined
 	      && h->root.type != bfd_link_hash_defweak)
@@ -2508,14 +2527,14 @@ elf_arc_finish_dynamic_symbol (bfd * out
       || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 #define GET_SYMBOL_OR_SECTION(TAG, SYMBOL, SECTION)		\
   case TAG:							\
   if (SYMBOL != NULL)						\
     h = elf_link_hash_lookup (elf_hash_table (info),		\
-			      SYMBOL, FALSE, FALSE, TRUE);	\
+			      SYMBOL, false, false, true);	\
   else if (SECTION != NULL)					\
     s = bfd_get_linker_section (dynobj, SECTION);		\
   break;
@@ -2526,7 +2545,7 @@ struct obfd_info_group {
   struct bfd_link_info *info;
 };
 
-static bfd_boolean
+static bool
 arc_create_forced_local_got_entries_for_tls (struct bfd_hash_entry *bh,
 					     void *data)
 {
@@ -2549,7 +2568,7 @@ arc_create_forced_local_got_entries_for_
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -2561,7 +2580,7 @@ arc_create_forced_local_got_entries_for_
 	       sym	  :
    Returns  : True/False as the return status.  */
 
-static bfd_boolean
+static bool
 elf_arc_finish_dynamic_sections (bfd * output_bfd,
 				 struct bfd_link_info *info)
 {
@@ -2579,7 +2598,7 @@ elf_arc_finish_dynamic_sections (bfd * o
       for (; dyncon < dynconend; dyncon++)
 	{
 	  Elf_Internal_Dyn internal_dyn;
-	  bfd_boolean	  do_it = FALSE;
+	  bool do_it = false;
 
 	  struct elf_link_hash_entry *h = NULL;
 	  asection	 *s = NULL;
@@ -2621,7 +2640,7 @@ elf_arc_finish_dynamic_sections (bfd * o
 		     library and does not apply to this one.  */
 		  internal_dyn.d_un.d_val = 0;
 		}
-	      do_it = TRUE;
+	      do_it = true;
 	    }
 	  else if (s != NULL) /* With a section information.  */
 	    {
@@ -2634,12 +2653,12 @@ elf_arc_finish_dynamic_sections (bfd * o
 		  case DT_VERNEED:
 		    internal_dyn.d_un.d_ptr = (s->output_section->vma
 					       + s->output_offset);
-		    do_it = TRUE;
+		    do_it = true;
 		    break;
 
 		  case DT_PLTRELSZ:
 		    internal_dyn.d_un.d_val = s->size;
-		    do_it = TRUE;
+		    do_it = true;
 		    break;
 
 		  default:
@@ -2667,7 +2686,7 @@ elf_arc_finish_dynamic_sections (bfd * o
     {
       struct elf_link_hash_entry *h;
       h = elf_link_hash_lookup (elf_hash_table (info), "_GLOBAL_OFFSET_TABLE_",
-				 FALSE, FALSE, TRUE);
+				 false, false, true);
 
 	if (h != NULL && h->root.type != bfd_link_hash_undefined
 	    && h->root.u.def.section != NULL)
@@ -2692,29 +2711,29 @@ elf_arc_finish_dynamic_sections (bfd * o
   bfd_hash_traverse (&info->hash->table,
 		     arc_create_forced_local_got_entries_for_tls, &group);
 
-  return TRUE;
+  return true;
 }
 
 #define ADD_DYNAMIC_SYMBOL(NAME, TAG)					\
   h =  elf_link_hash_lookup (elf_hash_table (info),			\
-			     NAME, FALSE, FALSE, FALSE);		\
+			     NAME, false, false, false);		\
   if ((h != NULL && (h->ref_regular || h->def_regular)))		\
     if (! _bfd_elf_add_dynamic_entry (info, TAG, 0))			\
-      return FALSE;
+      return false;
 
 /* Set the sizes of the dynamic sections.  */
-static bfd_boolean
-elf_arc_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-			       struct bfd_link_info *info)
+static bool
+elf_arc_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			    struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs_exist = FALSE;
-  bfd_boolean reltext_exist = FALSE;
+  bool relocs_exist = false;
   struct elf_link_hash_table *htab = elf_hash_table (info);
 
   dynobj = htab->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (htab->dynamic_sections_created)
     {
@@ -2728,6 +2747,7 @@ elf_arc_size_dynamic_sections (bfd *outp
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof (ELF_DYNAMIC_INTERPRETER);
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
 
       /* Add some entries to the .dynamic section.  We fill in some of
@@ -2762,32 +2782,10 @@ elf_arc_size_dynamic_sections (bfd *outp
 	{
 	  /* Strip this section if we don't need it.  */
 	}
-      else if (strncmp (s->name, ".rela", 5) == 0)
+      else if (startswith (s->name, ".rela"))
 	{
 	  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.  */
@@ -2811,36 +2809,11 @@ elf_arc_size_dynamic_sections (bfd *outp
       /* Allocate memory for the section contents.  */
       s->contents = bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	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 false;
+      s->alloced = 1;
     }
 
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs_exist);
 }
 
 
@@ -2908,7 +2881,7 @@ const struct elf_size_info arc_elf32_siz
    function relies on offsets inside elf_prstatus structure in Linux to be
    stable.  */
 
-static bfd_boolean
+static bool
 elf32_arc_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -2917,7 +2890,7 @@ elf32_arc_grok_prstatus (bfd *abfd, Elf_
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 236: /* sizeof (struct elf_prstatus) on Linux/arc.  */
       /* pr_cursig */
@@ -2952,7 +2925,7 @@ elf32_arc_obj_attrs_arg_type (int tag)
 
 /* Attribute numbers >=14 can be safely ignored.  */
 
-static bfd_boolean
+static bool
 elf32_arc_obj_attrs_handle_unknown (bfd *abfd, int tag)
 {
   if ((tag & 127) < (Tag_ARC_ISA_mpy_option + 1))
@@ -2961,14 +2934,14 @@ elf32_arc_obj_attrs_handle_unknown (bfd
 	(_("%pB: unknown mandatory ARC object attribute %d"),
 	 abfd, tag);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   else
     {
       _bfd_error_handler
 	(_("warning: %pB: unknown ARC object attribute %d"),
 	 abfd, tag);
-      return TRUE;
+      return true;
     }
 }
 
@@ -2976,7 +2949,7 @@ elf32_arc_obj_attrs_handle_unknown (bfd
    called when bfd_section_from_shdr finds a section with an unknown
    type.  */
 
-static bfd_boolean
+static bool
 elf32_arc_section_from_shdr (bfd *abfd,
 			     Elf_Internal_Shdr * hdr,
 			     const char *name,
@@ -2989,13 +2962,13 @@ elf32_arc_section_from_shdr (bfd *abfd,
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Relaxation hook.
@@ -3006,9 +2979,9 @@ elf32_arc_section_from_shdr (bfd *abfd,
 
 */
 
-static bfd_boolean
+static bool
 arc_elf_relax_section (bfd *abfd, asection *sec,
-		       struct bfd_link_info *link_info, bfd_boolean *again)
+		       struct bfd_link_info *link_info, bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -3017,16 +2990,17 @@ arc_elf_relax_section (bfd *abfd, asecti
   Elf_Internal_Sym *isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if this
      section does not have relocs, or if this is not a code
      section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -3104,7 +3078,7 @@ arc_elf_relax_section (bfd *abfd, asecti
 	  bfd_put_32_me (abfd, code, contents + irel->r_offset - 4);
 
 	  /* The size isn't changed, don't redo.  */
-	  *again = FALSE;
+	  *again = false;
 	}
     }
 
@@ -3128,24 +3102,20 @@ 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;
+  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;
+  return false;
 }
 
 #define TARGET_LITTLE_SYM   arc_elf32_le_vec
@@ -3181,7 +3151,7 @@ arc_elf_relax_section (bfd *abfd, asecti
 #define elf_backend_finish_dynamic_symbol    elf_arc_finish_dynamic_symbol
 
 #define elf_backend_finish_dynamic_sections  elf_arc_finish_dynamic_sections
-#define elf_backend_size_dynamic_sections    elf_arc_size_dynamic_sections
+#define elf_backend_late_size_sections       elf_arc_late_size_sections
 
 #define elf_backend_can_gc_sections	1
 #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.20200303/bfd/elf32-arm.c ./bfd/elf32-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-arm.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-arm.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for ARM
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -25,7 +25,6 @@
 #include "libiberty.h"
 #include "libbfd.h"
 #include "elf-bfd.h"
-#include "elf-nacl.h"
 #include "elf-vxworks.h"
 #include "elf/arm.h"
 #include "elf32-arm.h"
@@ -66,10 +65,10 @@
 /* The Adjusted Place, as defined by AAELF.  */
 #define Pa(X) ((X) & 0xfffffffc)
 
-static bfd_boolean elf32_arm_write_section (bfd *output_bfd,
-					    struct bfd_link_info *link_info,
-					    asection *sec,
-					    bfd_byte *contents);
+static bool elf32_arm_write_section (bfd *output_bfd,
+				     struct bfd_link_info *link_info,
+				     asection *sec,
+				     bfd_byte *contents);
 
 /* Note: code such as elf32_arm_reloc_type_lookup expect to use e.g.
    R_ARM_PC24 as an index into this, and find the R_ARM_PC24 HOWTO
@@ -80,1581 +79,1581 @@ static reloc_howto_type elf32_arm_howto_
   /* No relocation.  */
   HOWTO (R_ARM_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_PC24,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_PC24",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ffffff,		/* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 32 bit absolute */
   HOWTO (R_ARM_ABS32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ABS32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* standard 32bit pc-relative reloc */
   HOWTO (R_ARM_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_REL32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit absolute - R_ARM_LDR_PC_G0 in AAELF */
   HOWTO (R_ARM_LDR_PC_G0,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDR_PC_G0",     /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
    /* 16 bit absolute */
   HOWTO (R_ARM_ABS16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ABS16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 12 bit absolute */
   HOWTO (R_ARM_ABS12,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ABS12",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_ABS5,	/* type */
 	 6,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 5,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_ABS5",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000007e0,		/* src_mask */
 	 0x000007e0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 8 bit absolute */
   HOWTO (R_ARM_ABS8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ABS8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_SBREL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_SBREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_CALL,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_CALL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x07ff2fff,		/* src_mask */
 	 0x07ff2fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_THM_PC8,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_PC8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_BREL_ADJ,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_BREL_ADJ",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_DESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_DESC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_SWI8,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_SWI8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* BLX instruction for the ARM.  */
   HOWTO (R_ARM_XPC25,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_XPC25",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ffffff,		/* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* BLX instruction for the Thumb.  */
   HOWTO (R_ARM_THM_XPC22,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_XPC22",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x07ff2fff,		/* src_mask */
 	 0x07ff2fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Dynamic TLS relocations.  */
 
   HOWTO (R_ARM_TLS_DTPMOD32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_TLS_DTPMOD32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_DTPOFF32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_TLS_DTPOFF32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_TPOFF32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_TLS_TPOFF32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Relocs used in ARM Linux */
 
   HOWTO (R_ARM_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_COPY",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_GLOB_DAT",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_JUMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_JUMP_SLOT",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_RELATIVE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_GOTOFF32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_GOTOFF32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_GOTPC,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_GOTPC",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_GOT32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_GOT32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_PLT32,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_PLT32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ffffff,		/* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_CALL,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_CALL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ffffff,		/* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_JUMP24,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_JUMP24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ffffff,		/* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_THM_JUMP24,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_JUMP24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x07ff2fff,		/* src_mask */
 	 0x07ff2fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_BASE_ABS,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_BASE_ABS",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_PCREL7_0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_PCREL_7_0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_PCREL15_8,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_PCREL_15_8",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_PCREL23_15,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 16,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_PCREL_23_15",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDR_SBREL_11_0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDR_SBREL_11_0",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_SBREL_19_12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 12,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_SBREL_19_12",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000ff000,		/* src_mask */
 	 0x000ff000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_SBREL_27_20,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 20,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_SBREL_27_20",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0ff00000,		/* src_mask */
 	 0x0ff00000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TARGET1,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TARGET1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_ROSEGREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ROSEGREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_V4BX,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_V4BX",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TARGET2,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TARGET2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_PREL31,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 31,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_PREL31",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x7fffffff,		/* src_mask */
 	 0x7fffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_MOVW_ABS_NC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_MOVW_ABS_NC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000f0fff,		/* src_mask */
 	 0x000f0fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_MOVT_ABS,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_MOVT_ABS",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000f0fff,		/* src_mask */
 	 0x000f0fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_MOVW_PREL_NC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_MOVW_PREL_NC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000f0fff,		/* src_mask */
 	 0x000f0fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_MOVT_PREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_MOVT_PREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000f0fff,		/* src_mask */
 	 0x000f0fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_THM_MOVW_ABS_NC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_MOVW_ABS_NC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x040f70ff,		/* src_mask */
 	 0x040f70ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_MOVT_ABS,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_MOVT_ABS",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x040f70ff,		/* src_mask */
 	 0x040f70ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_MOVW_PREL_NC,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_MOVW_PREL_NC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x040f70ff,		/* src_mask */
 	 0x040f70ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_THM_MOVT_PREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_MOVT_PREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x040f70ff,		/* src_mask */
 	 0x040f70ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_THM_JUMP19,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_THM_JUMP19",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x043f2fff,		/* src_mask */
 	 0x043f2fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_THM_JUMP6,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 6,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_JUMP6",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x02f8,		/* src_mask */
 	 0x02f8,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* These are declared as 13-bit signed relocations because we can
      address -4095 .. 4095(base) by altering ADDW to SUBW or vice
      versa.  */
   HOWTO (R_ARM_THM_ALU_PREL_11_0,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 13,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_ALU_PREL_11_0",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_THM_PC12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 13,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_PC12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ABS32_NOI,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ABS32_NOI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_REL32_NOI,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_REL32_NOI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Group relocations.  */
 
   HOWTO (R_ARM_ALU_PC_G0_NC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_PC_G0_NC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_PC_G0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_PC_G0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_PC_G1_NC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_PC_G1_NC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_PC_G1,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_PC_G1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_PC_G2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_PC_G2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDR_PC_G1,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDR_PC_G1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDR_PC_G2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDR_PC_G2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDRS_PC_G0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDRS_PC_G0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDRS_PC_G1,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDRS_PC_G1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDRS_PC_G2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDRS_PC_G2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDC_PC_G0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDC_PC_G0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDC_PC_G1,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDC_PC_G1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDC_PC_G2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDC_PC_G2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_SB_G0_NC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_SB_G0_NC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_SB_G0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_SB_G0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_SB_G1_NC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_SB_G1_NC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_SB_G1,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_SB_G1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_ALU_SB_G2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_ALU_SB_G2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDR_SB_G0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDR_SB_G0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDR_SB_G1,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDR_SB_G1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDR_SB_G2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDR_SB_G2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDRS_SB_G0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDRS_SB_G0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDRS_SB_G1,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDRS_SB_G1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDRS_SB_G2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDRS_SB_G2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDC_SB_G0,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDC_SB_G0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDC_SB_G1,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDC_SB_G1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_LDC_SB_G2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_LDC_SB_G2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* End of group relocations.  */
 
   HOWTO (R_ARM_MOVW_BREL_NC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_MOVW_BREL_NC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_MOVT_BREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_MOVT_BREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_MOVW_BREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_MOVW_BREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_MOVW_BREL_NC,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_MOVW_BREL_NC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x040f70ff,		/* src_mask */
 	 0x040f70ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_MOVT_BREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_MOVT_BREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x040f70ff,		/* src_mask */
 	 0x040f70ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_MOVW_BREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_MOVW_BREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x040f70ff,		/* src_mask */
 	 0x040f70ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_GOTDESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_ARM_TLS_GOTDESC",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_CALL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_CALL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ffffff,		/* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_DESCSEQ,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 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 */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_TLS_CALL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_TLS_CALL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x07ff07ff,		/* src_mask */
 	 0x07ff07ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_PLT32_ABS,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_PLT32_ABS",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_GOT_ABS,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_GOT_ABS",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   HOWTO (R_ARM_GOT_PREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_GOT_PREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_GOT_BREL12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_GOT_BREL12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_GOTOFF12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_GOTOFF12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (R_ARM_GOTRELAX),	 /* reserved for future GOT-load optimizations */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_ARM_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_ARM_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_ARM_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_ARM_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_THM_JUMP11,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_JUMP11",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000007ff,		/* src_mask */
 	 0x000007ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_ARM_THM_JUMP8,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_THM_JUMP8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* TLS relocations */
   HOWTO (R_ARM_TLS_GD32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_ARM_TLS_GD32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_LDM32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_TLS_LDM32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_LDO32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_TLS_LDO32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_IE32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			 /* pc_relative */
+	 false,			 /* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_ARM_TLS_IE32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_LE32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_ARM_TLS_LE32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_LDO12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_LDO12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_LE12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_LE12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_TLS_IE12GP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_IE12GP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000fff,		/* src_mask */
 	 0x00000fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 112-127 private relocations.  */
   EMPTY_HOWTO (112),
@@ -1679,111 +1678,111 @@ static reloc_howto_type elf32_arm_howto_
 
   HOWTO (R_ARM_THM_TLS_DESCSEQ,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 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 */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   EMPTY_HOWTO (130),
   EMPTY_HOWTO (131),
   HOWTO (R_ARM_THM_ALU_ABS_G0_NC,/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_bitfield,/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_ARM_THM_ALU_ABS_G0_NC",/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0x00000000,		/* src_mask.  */
 	 0x00000000,		/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
   HOWTO (R_ARM_THM_ALU_ABS_G1_NC,/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_bitfield,/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_ARM_THM_ALU_ABS_G1_NC",/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0x00000000,		/* src_mask.  */
 	 0x00000000,		/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
   HOWTO (R_ARM_THM_ALU_ABS_G2_NC,/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_bitfield,/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_ARM_THM_ALU_ABS_G2_NC",/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0x00000000,		/* src_mask.  */
 	 0x00000000,		/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
   HOWTO (R_ARM_THM_ALU_ABS_G3_NC,/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_bitfield,/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_ARM_THM_ALU_ABS_G3_NC",/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0x00000000,		/* src_mask.  */
 	 0x00000000,		/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
   /* Relocations for Armv8.1-M Mainline.  */
   HOWTO (R_ARM_THM_BF16,	/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont,/* do not complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_ARM_THM_BF16",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0x001f0ffe,		/* src_mask.  */
 	 0x001f0ffe,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
   HOWTO (R_ARM_THM_BF12,	/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 12,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont,/* do not complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_ARM_THM_BF12",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0x00010ffe,		/* src_mask.  */
 	 0x00010ffe,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
   HOWTO (R_ARM_THM_BF18,	/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 18,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont,/* do not complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_ARM_THM_BF18",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0x007f0ffe,		/* src_mask.  */
 	 0x007f0ffe,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 };
 
 /* 160 onwards: */
@@ -1791,108 +1790,108 @@ static reloc_howto_type elf32_arm_howto_
 {
   HOWTO (R_ARM_IRELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_ARM_IRELATIVE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_ARM_GOTFUNCDESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_GOTFUNCDESC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_ARM_GOTOFFFUNCDESC, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_GOTOFFFUNCDESC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_ARM_FUNCDESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_FUNCDESC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_ARM_FUNCDESC_VALUE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_FUNCDESC_VALUE",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_ARM_TLS_GD32_FDPIC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_GD32_FDPIC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_ARM_TLS_LDM32_FDPIC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_LDM32_FDPIC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_ARM_TLS_IE32_FDPIC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_TLS_IE32_FDPIC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* 249-255 extended, currently unused, relocations:  */
@@ -1900,59 +1899,59 @@ static reloc_howto_type elf32_arm_howto_
 {
   HOWTO (R_ARM_RREL32,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_RREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_RABS32,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_RABS32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_RPC24,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_RPC24",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_ARM_RBASE,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_ARM_RBASE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 false)			/* pcrel_offset */
 };
 
 static reloc_howto_type *
@@ -1972,7 +1971,7 @@ elf32_arm_howto_from_type (unsigned int
   return NULL;
 }
 
-static bfd_boolean
+static bool
 elf32_arm_info_to_howto (bfd * abfd, arelent * bfd_reloc,
 			 Elf_Internal_Rela * elf_reloc)
 {
@@ -1985,9 +1984,9 @@ elf32_arm_info_to_howto (bfd * abfd, are
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 struct elf32_arm_reloc_map
@@ -2140,7 +2139,7 @@ elf32_arm_reloc_name_lookup (bfd *abfd A
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf32_arm_nabi_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -2149,7 +2148,7 @@ elf32_arm_nabi_grok_prstatus (bfd *abfd,
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 148:		/* Linux/ARM 32-bit.  */
 	/* pr_cursig */
@@ -2170,13 +2169,13 @@ elf32_arm_nabi_grok_prstatus (bfd *abfd,
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf32_arm_nabi_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 124:		/* Linux/ARM elf_prpsinfo.  */
 	elf_tdata (abfd)->core->pid
@@ -2198,7 +2197,7 @@ elf32_arm_nabi_grok_psinfo (bfd *abfd, E
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 static char *
@@ -2426,7 +2425,7 @@ static const bfd_vma elf32_arm_plt_entry
   0xe5bcf000,		/* ldr	 pc, [ip, #0xNNN]!   */
 };
 
-static bfd_boolean elf32_arm_use_long_plt_entry = FALSE;
+static bool elf32_arm_use_long_plt_entry = false;
 
 #endif /* not FOUR_WORD_PLT */
 
@@ -2453,8 +2452,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
@@ -2497,58 +2496,23 @@ static const bfd_vma elf32_arm_plt_thumb
   0xe7fd		/* b .-2 */
 };
 
-/* The entries in a PLT when using a DLL-based target with multiple
-   address spaces.  */
-static const bfd_vma elf32_arm_symbian_plt_entry [] =
-{
-  0xe51ff004,	      /* ldr   pc, [pc, #-4] */
-  0x00000000,	      /* dcd   R_ARM_GLOB_DAT(X) */
-};
-
-/* The first entry in a procedure linkage table looks like
-   this.  It is set up so that any shared library function that is
-   called before the relocation has been set up calls the dynamic
-   linker first.  */
-static const bfd_vma elf32_arm_nacl_plt0_entry [] =
-{
-  /* First bundle: */
-  0xe300c000,		/* movw	ip, #:lower16:&GOT[2]-.+8	*/
-  0xe340c000,		/* movt	ip, #:upper16:&GOT[2]-.+8	*/
-  0xe08cc00f,		/* add	ip, ip, pc			*/
-  0xe52dc008,		/* str	ip, [sp, #-8]!			*/
-  /* Second bundle: */
-  0xe3ccc103,		/* bic	ip, ip, #0xc0000000		*/
-  0xe59cc000,		/* ldr	ip, [ip]			*/
-  0xe3ccc13f,		/* bic	ip, ip, #0xc000000f		*/
-  0xe12fff1c,		/* bx	ip				*/
-  /* Third bundle: */
-  0xe320f000,		/* nop					*/
-  0xe320f000,		/* nop					*/
-  0xe320f000,		/* nop					*/
-  /* .Lplt_tail: */
-  0xe50dc004,		/* str	ip, [sp, #-4]			*/
-  /* Fourth bundle: */
-  0xe3ccc103,		/* bic	ip, ip, #0xc0000000		*/
-  0xe59cc000,		/* ldr	ip, [ip]			*/
-  0xe3ccc13f,		/* bic	ip, ip, #0xc000000f		*/
-  0xe12fff1c,		/* bx	ip				*/
-};
-#define ARM_NACL_PLT_TAIL_OFFSET	(11 * 4)
-
-/* Subsequent entries in a procedure linkage table look like this.  */
-static const bfd_vma elf32_arm_nacl_plt_entry [] =
-{
-  0xe300c000,		/* movw	ip, #:lower16:&GOT[n]-.+8	*/
-  0xe340c000,		/* movt	ip, #:upper16:&GOT[n]-.+8	*/
-  0xe08cc00f,		/* add	ip, ip, pc			*/
-  0xea000000,		/* b	.Lplt_tail			*/
-};
-
+/* PR 28924:
+   There was a bug due to too high values of THM_MAX_FWD_BRANCH_OFFSET and
+   THM2_MAX_FWD_BRANCH_OFFSET.  The first macro concerns the case when Thumb-2
+   is not available, and second macro when Thumb-2 is available.  Among other
+   things, they affect the range of branches represented as BLX instructions
+   in Encoding T2 defined in Section A8.8.25 of the ARM Architecture
+   Reference Manual ARMv7-A and ARMv7-R edition issue C.d.  Such branches are
+   specified there to have a maximum forward offset that is a multiple of 4.
+   Previously, the respective values defined here were multiples of 2 but not
+   4 and they are included in comments for reference.  */
 #define ARM_MAX_FWD_BRANCH_OFFSET  ((((1 << 23) - 1) << 2) + 8)
-#define ARM_MAX_BWD_BRANCH_OFFSET  ((-((1 << 23) << 2)) + 8)
-#define THM_MAX_FWD_BRANCH_OFFSET  ((1 << 22) -2 + 4)
+#define ARM_MAX_BWD_BRANCH_OFFSET ((-((1 << 23) << 2)) + 8)
+#define THM_MAX_FWD_BRANCH_OFFSET   ((1 << 22) - 4 + 4)
+/* #def THM_MAX_FWD_BRANCH_OFFSET   ((1 << 22) - 2 + 4) */
 #define THM_MAX_BWD_BRANCH_OFFSET  (-(1 << 22) + 4)
-#define THM2_MAX_FWD_BRANCH_OFFSET (((1 << 24) - 2) + 4)
+#define THM2_MAX_FWD_BRANCH_OFFSET (((1 << 24) - 4) + 4)
+/* #def THM2_MAX_FWD_BRANCH_OFFSET (((1 << 24) - 2) + 4) */
 #define THM2_MAX_BWD_BRANCH_OFFSET (-(1 << 24) + 4)
 #define THM2_MAX_FWD_COND_BRANCH_OFFSET (((1 << 20) -2) + 4)
 #define THM2_MAX_BWD_COND_BRANCH_OFFSET (-(1 << 20) + 4)
@@ -2626,6 +2590,8 @@ static const insn_sequence elf32_arm_stu
   THUMB32_MOVW (0xf2400c00),	     /* mov.w ip, R_ARM_MOVW_ABS_NC */
   THUMB32_MOVT (0xf2c00c00),	     /* movt  ip, R_ARM_MOVT_ABS << 16 */
   THUMB16_INSN (0x4760),	     /* bx   ip */
+  THUMB16_INSN (0xbf00),	     /* nop */
+  /* The nop is added to ensure alignment of following stubs in the section.  */
 };
 
 /* V4T Thumb -> Thumb long branch stub. Using the stack is not
@@ -2743,32 +2709,6 @@ static const insn_sequence elf32_arm_stu
   DATA_WORD (0, R_ARM_REL32, -4),    /* dcd  R_ARM_REL32(X) */
 };
 
-/* NaCl ARM -> ARM long branch stub.  */
-static const insn_sequence elf32_arm_stub_long_branch_arm_nacl[] =
-{
-  ARM_INSN (0xe59fc00c),		/* ldr	ip, [pc, #12] */
-  ARM_INSN (0xe3ccc13f),		/* bic	ip, ip, #0xc000000f */
-  ARM_INSN (0xe12fff1c),		/* bx	ip */
-  ARM_INSN (0xe320f000),		/* nop */
-  ARM_INSN (0xe125be70),		/* bkpt	0x5be0 */
-  DATA_WORD (0, R_ARM_ABS32, 0),	/* dcd	R_ARM_ABS32(X) */
-  DATA_WORD (0, R_ARM_NONE, 0),		/* .word 0 */
-  DATA_WORD (0, R_ARM_NONE, 0),		/* .word 0 */
-};
-
-/* NaCl ARM -> ARM long branch stub, PIC.  */
-static const insn_sequence elf32_arm_stub_long_branch_arm_nacl_pic[] =
-{
-  ARM_INSN (0xe59fc00c),		/* ldr	ip, [pc, #12] */
-  ARM_INSN (0xe08cc00f),		/* add	ip, ip, pc */
-  ARM_INSN (0xe3ccc13f),		/* bic	ip, ip, #0xc000000f */
-  ARM_INSN (0xe12fff1c),		/* bx	ip */
-  ARM_INSN (0xe125be70),		/* bkpt	0x5be0 */
-  DATA_WORD (0, R_ARM_REL32, 8),	/* dcd	R_ARM_REL32(X+8) */
-  DATA_WORD (0, R_ARM_NONE, 0),		/* .word 0 */
-  DATA_WORD (0, R_ARM_NONE, 0),		/* .word 0 */
-};
-
 /* Stub used for transition to secure state (aka SG veneer).  */
 static const insn_sequence elf32_arm_stub_cmse_branch_thumb_only[] =
 {
@@ -2839,29 +2779,27 @@ static const insn_sequence elf32_arm_stu
 
 /* One entry per long/short branch stub defined above.  */
 #define DEF_STUBS \
-  DEF_STUB(long_branch_any_any)	\
-  DEF_STUB(long_branch_v4t_arm_thumb) \
-  DEF_STUB(long_branch_thumb_only) \
-  DEF_STUB(long_branch_v4t_thumb_thumb)	\
-  DEF_STUB(long_branch_v4t_thumb_arm) \
-  DEF_STUB(short_branch_v4t_thumb_arm) \
-  DEF_STUB(long_branch_any_arm_pic) \
-  DEF_STUB(long_branch_any_thumb_pic) \
-  DEF_STUB(long_branch_v4t_thumb_thumb_pic) \
-  DEF_STUB(long_branch_v4t_arm_thumb_pic) \
-  DEF_STUB(long_branch_v4t_thumb_arm_pic) \
-  DEF_STUB(long_branch_thumb_only_pic) \
-  DEF_STUB(long_branch_any_tls_pic) \
-  DEF_STUB(long_branch_v4t_thumb_tls_pic) \
-  DEF_STUB(long_branch_arm_nacl) \
-  DEF_STUB(long_branch_arm_nacl_pic) \
-  DEF_STUB(cmse_branch_thumb_only) \
-  DEF_STUB(a8_veneer_b_cond) \
-  DEF_STUB(a8_veneer_b) \
-  DEF_STUB(a8_veneer_bl) \
-  DEF_STUB(a8_veneer_blx) \
-  DEF_STUB(long_branch_thumb2_only) \
-  DEF_STUB(long_branch_thumb2_only_pure)
+  DEF_STUB (long_branch_any_any)	\
+  DEF_STUB (long_branch_v4t_arm_thumb) \
+  DEF_STUB (long_branch_thumb_only) \
+  DEF_STUB (long_branch_v4t_thumb_thumb)	\
+  DEF_STUB (long_branch_v4t_thumb_arm) \
+  DEF_STUB (short_branch_v4t_thumb_arm) \
+  DEF_STUB (long_branch_any_arm_pic) \
+  DEF_STUB (long_branch_any_thumb_pic) \
+  DEF_STUB (long_branch_v4t_thumb_thumb_pic) \
+  DEF_STUB (long_branch_v4t_arm_thumb_pic) \
+  DEF_STUB (long_branch_v4t_thumb_arm_pic) \
+  DEF_STUB (long_branch_thumb_only_pic) \
+  DEF_STUB (long_branch_any_tls_pic) \
+  DEF_STUB (long_branch_v4t_thumb_tls_pic) \
+  DEF_STUB (cmse_branch_thumb_only) \
+  DEF_STUB (a8_veneer_b_cond) \
+  DEF_STUB (a8_veneer_b) \
+  DEF_STUB (a8_veneer_bl) \
+  DEF_STUB (a8_veneer_blx) \
+  DEF_STUB (long_branch_thumb2_only) \
+  DEF_STUB (long_branch_thumb2_only_pure)
 
 #define DEF_STUB(x) arm_stub_##x,
 enum elf32_arm_stub_type
@@ -3096,7 +3034,7 @@ struct a8_erratum_reloc
   const char *sym_name;
   unsigned int r_type;
   enum arm_st_branch_type branch_type;
-  bfd_boolean non_a8_stub;
+  bool non_a8_stub;
 };
 
 /* The size of the thread control block.  */
@@ -3143,7 +3081,8 @@ struct arm_local_iplt_info
 };
 
 /* Structure to handle FDPIC support for local functions.  */
-struct fdpic_local {
+struct fdpic_local
+{
   unsigned int funcdesc_cnt;
   unsigned int gotofffuncdesc_cnt;
   int funcdesc_offset;
@@ -3153,6 +3092,16 @@ struct elf_arm_obj_tdata
 {
   struct elf_obj_tdata root;
 
+  /* Zero to warn when linking objects with incompatible enum sizes.  */
+  int no_enum_size_warning;
+
+  /* Zero to warn when linking objects with incompatible wchar_t sizes.  */
+  int no_wchar_size_warning;
+
+  /* The number of entries in each of the arrays in this strcuture.
+     Used to avoid buffer overruns.  */
+  bfd_size_type num_entries;
+
   /* tls_type for each local got entry.  */
   char *local_got_tls_type;
 
@@ -3162,12 +3111,6 @@ struct elf_arm_obj_tdata
   /* Information for local symbols that need entries in .iplt.  */
   struct arm_local_iplt_info **local_iplt;
 
-  /* Zero to warn when linking objects with incompatible enum sizes.  */
-  int no_enum_size_warning;
-
-  /* Zero to warn when linking objects with incompatible wchar_t sizes.  */
-  int no_wchar_size_warning;
-
   /* Maintains FDPIC counters and funcdesc info.  */
   struct fdpic_local *local_fdpic_cnts;
 };
@@ -3175,6 +3118,9 @@ struct elf_arm_obj_tdata
 #define elf_arm_tdata(bfd) \
   ((struct elf_arm_obj_tdata *) (bfd)->tdata.any)
 
+#define elf32_arm_num_entries(bfd) \
+  (elf_arm_tdata (bfd)->num_entries)
+
 #define elf32_arm_local_got_tls_type(bfd) \
   (elf_arm_tdata (bfd)->local_got_tls_type)
 
@@ -3192,11 +3138,10 @@ struct elf_arm_obj_tdata
    && elf_tdata (bfd) != NULL \
    && elf_object_id (bfd) == ARM_ELF_DATA)
 
-static bfd_boolean
+static bool
 elf32_arm_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_arm_obj_tdata),
-				  ARM_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_arm_obj_tdata));
 }
 
 #define elf32_arm_hash_entry(ent) ((struct elf32_arm_link_hash_entry *)(ent))
@@ -3215,9 +3160,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;
 
@@ -3254,13 +3196,14 @@ struct elf32_arm_link_hash_entry
 #define elf32_arm_link_hash_traverse(table, func, info)			\
   (elf_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (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,17 +3306,8 @@ 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;
+  bool use_rel;
 
   /* Nonzero if import library must be a secure gateway import library
      as per ARMv8-M Security Extensions.  */
@@ -3392,16 +3326,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 +3336,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;
 
@@ -3511,21 +3432,21 @@ static void elf32_arm_add_dynreloc (bfd
 				    asection *sreloc, Elf_Internal_Rela *rel);
 
 static void
-arm_elf_fill_funcdesc(bfd *output_bfd,
-		      struct bfd_link_info *info,
-		      int *funcdesc_offset,
-		      int dynindx,
-		      int offset,
-		      bfd_vma addr,
-		      bfd_vma dynreloc_value,
-		      bfd_vma seg)
+arm_elf_fill_funcdesc (bfd *output_bfd,
+		       struct bfd_link_info *info,
+		       int *funcdesc_offset,
+		       int dynindx,
+		       int offset,
+		       bfd_vma addr,
+		       bfd_vma dynreloc_value,
+		       bfd_vma seg)
 {
   if ((*funcdesc_offset & 1) == 0)
     {
       struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (info);
       asection *sgot = globals->root.sgot;
 
-      if (bfd_link_pic(info))
+      if (bfd_link_pic (info))
 	{
 	  asection *srelgot = globals->root.srelgot;
 	  Elf_Internal_Rela outrel;
@@ -3545,12 +3466,12 @@ arm_elf_fill_funcdesc(bfd *output_bfd,
 	    + hgot->root.u.def.section->output_section->vma
 	    + hgot->root.u.def.section->output_offset;
 
-	  arm_elf_add_rofixup(output_bfd, globals->srofixup,
-			      sgot->output_section->vma + sgot->output_offset
-			      + offset);
-	  arm_elf_add_rofixup(output_bfd, globals->srofixup,
-			      sgot->output_section->vma + sgot->output_offset
-			      + offset + 4);
+	  arm_elf_add_rofixup (output_bfd, globals->srofixup,
+			       sgot->output_section->vma + sgot->output_offset
+			       + offset);
+	  arm_elf_add_rofixup (output_bfd, globals->srofixup,
+			       sgot->output_section->vma + sgot->output_offset
+			       + offset + 4);
 	  bfd_put_32 (output_bfd, dynreloc_value, sgot->contents + offset);
 	  bfd_put_32 (output_bfd, got_value, sgot->contents + offset + 4);
 	}
@@ -3582,14 +3503,13 @@ 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;
       ret->plt.maybe_thumb_refcount = 0;
       ret->plt.noncall_refcount = 0;
       ret->plt.got_offset = -1;
-      ret->is_iplt = FALSE;
+      ret->is_iplt = false;
       ret->export_glue = NULL;
 
       ret->stub_cache = NULL;
@@ -3607,40 +3527,66 @@ elf32_arm_link_hash_newfunc (struct bfd_
 /* Ensure that we have allocated bookkeeping structures for ABFD's local
    symbols.  */
 
-static bfd_boolean
+static bool
 elf32_arm_allocate_local_sym_info (bfd *abfd)
 {
   if (elf_local_got_refcounts (abfd) == NULL)
     {
       bfd_size_type num_syms;
-      bfd_size_type size;
-      char *data;
+
+      elf32_arm_num_entries (abfd) = 0;
+
+      /* Whilst it might be tempting to allocate a single block of memory and
+	 then divide it up amoungst the arrays in the elf_arm_obj_tdata
+	 structure, this interferes with the work of memory checkers looking
+	 for buffer overruns.  So allocate each array individually.  */
 
       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));
-      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);
-
-      elf_local_got_refcounts (abfd) = (bfd_signed_vma *) data;
-      data += num_syms * sizeof (bfd_signed_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);
+      elf_local_got_refcounts (abfd) = bfd_zalloc
+	(abfd, num_syms * sizeof (* elf_local_got_refcounts (abfd)));
+
+      if (elf_local_got_refcounts (abfd) == NULL)
+	return false;
+
+      elf32_arm_local_tlsdesc_gotent (abfd) = bfd_zalloc
+	(abfd, num_syms * sizeof (* elf32_arm_local_tlsdesc_gotent (abfd)));
+
+      if (elf32_arm_local_tlsdesc_gotent (abfd) == NULL)
+	return false;
+
+      elf32_arm_local_iplt (abfd) = bfd_zalloc
+	(abfd, num_syms * sizeof (* elf32_arm_local_iplt (abfd)));
+
+      if (elf32_arm_local_iplt (abfd) == NULL)
+	return false;
+
+      elf32_arm_local_fdpic_cnts (abfd) = bfd_zalloc
+	(abfd, num_syms * sizeof (* elf32_arm_local_fdpic_cnts (abfd)));
+
+      if (elf32_arm_local_fdpic_cnts (abfd) == NULL)
+	return false;
+
+      elf32_arm_local_got_tls_type (abfd) = bfd_zalloc
+	(abfd, num_syms * sizeof (* elf32_arm_local_got_tls_type (abfd)));
+
+      if (elf32_arm_local_got_tls_type (abfd) == NULL)
+	return false;
 
-      elf32_arm_local_got_tls_type (abfd) = data;
+      elf32_arm_num_entries (abfd) = num_syms;
+
+#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;
+  return true;
 }
 
 /* Return the .iplt information for local symbol R_SYMNDX, which belongs
@@ -3656,6 +3602,7 @@ elf32_arm_create_local_iplt (bfd *abfd,
     return NULL;
 
   BFD_ASSERT (r_symndx < elf_tdata (abfd)->symtab_hdr.sh_info);
+  BFD_ASSERT (r_symndx < elf32_arm_num_entries (abfd));
   ptr = &elf32_arm_local_iplt (abfd)[r_symndx];
   if (*ptr == NULL)
     *ptr = bfd_zalloc (abfd, sizeof (**ptr));
@@ -3670,7 +3617,7 @@ elf32_arm_create_local_iplt (bfd *abfd,
    true, point *ROOT_PLT at the target-independent reference count/offset
    union and *ARM_PLT at the ARM-specific information.  */
 
-static bfd_boolean
+static bool
 elf32_arm_get_plt_info (bfd *abfd, struct elf32_arm_link_hash_table *globals,
 			struct elf32_arm_link_hash_entry *h,
 			unsigned long r_symndx, union gotplt_union **root_plt,
@@ -3679,33 +3626,36 @@ elf32_arm_get_plt_info (bfd *abfd, struc
   struct arm_local_iplt_info *local_iplt;
 
   if (globals->root.splt == NULL && globals->root.iplt == NULL)
-    return FALSE;
+    return false;
 
   if (h != NULL)
     {
       *root_plt = &h->root.plt;
       *arm_plt = &h->plt;
-      return TRUE;
+      return true;
     }
 
   if (elf32_arm_local_iplt (abfd) == NULL)
-    return FALSE;
+    return false;
+
+  if (r_symndx >= elf32_arm_num_entries (abfd))
+    return false;
 
   local_iplt = elf32_arm_local_iplt (abfd)[r_symndx];
   if (local_iplt == NULL)
-    return FALSE;
+    return false;
 
   *root_plt = &local_iplt->root;
   *arm_plt = &local_iplt->arm;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean using_thumb_only (struct elf32_arm_link_hash_table *globals);
+static bool using_thumb_only (struct elf32_arm_link_hash_table *globals);
 
 /* Return true if the PLT described by ARM_PLT requires a Thumb stub
    before it.  */
 
-static bfd_boolean
+static bool
 elf32_arm_plt_needs_thumb_stub_p (struct bfd_link_info *info,
 				  struct arm_plt_info *arm_plt)
 {
@@ -3713,7 +3663,7 @@ elf32_arm_plt_needs_thumb_stub_p (struct
 
   htab = elf32_arm_hash_table (info);
 
-  return (!using_thumb_only(htab) && (arm_plt->thumb_refcount != 0
+  return (!using_thumb_only (htab) && (arm_plt->thumb_refcount != 0
 	  || (!htab->use_blx && arm_plt->maybe_thumb_refcount != 0)));
 }
 
@@ -3744,7 +3694,7 @@ elf32_arm_get_local_dynreloc_list (bfd *
 
       s = bfd_section_from_elf_index (abfd, isym->st_shndx);
       if (s == NULL)
-	abort ();
+	return NULL;
 
       vpp = &elf_section_data (s)->local_dynrel;
       return (struct elf_dyn_relocs **) vpp;
@@ -3797,21 +3747,17 @@ stub_hash_newfunc (struct bfd_hash_entry
 /* Create .got, .gotplt, and .rel(a).got sections in DYNOBJ, and set up
    shortcuts to them in our hash table.  */
 
-static bfd_boolean
+static bool
 create_got_section (bfd *dynobj, struct bfd_link_info *info)
 {
   struct elf32_arm_link_hash_table *htab;
 
   htab = elf32_arm_hash_table (info);
   if (htab == NULL)
-    return FALSE;
-
-  /* BPABI objects never have a GOT, or associated sections.  */
-  if (htab->symbian_p)
-    return TRUE;
+    return false;
 
   if (! _bfd_elf_create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   /* Also create .rofixup.  */
   if (htab->fdpic_p)
@@ -3821,15 +3767,15 @@ create_got_section (bfd *dynobj, struct
 						     | SEC_IN_MEMORY | SEC_LINKER_CREATED | SEC_READONLY));
       if (htab->srofixup == NULL
 	  || !bfd_set_section_alignment (htab->srofixup, 2))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create the .iplt, .rel(a).iplt and .igot.plt sections.  */
 
-static bfd_boolean
+static bool
 create_ifunc_sections (struct bfd_link_info *info)
 {
   struct elf32_arm_link_hash_table *htab;
@@ -3849,7 +3795,7 @@ create_ifunc_sections (struct bfd_link_i
 					      flags | SEC_READONLY | SEC_CODE);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->plt_alignment))
-	return FALSE;
+	return false;
       htab->root.iplt = s;
     }
 
@@ -3860,7 +3806,7 @@ create_ifunc_sections (struct bfd_link_i
 					      flags | SEC_READONLY);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->root.irelplt = s;
     }
 
@@ -3869,15 +3815,15 @@ create_ifunc_sections (struct bfd_link_i
       s = bfd_make_section_anyway_with_flags (dynobj, ".igot.plt", flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->root.igotplt = s;
     }
-  return TRUE;
+  return true;
 }
 
 /* Determine if we're dealing with a Thumb only architecture.  */
 
-static bfd_boolean
+static bool
 using_thumb_only (struct elf32_arm_link_hash_table *globals)
 {
   int arch;
@@ -3898,23 +3844,25 @@ using_thumb_only (struct elf32_arm_link_
       || arch == TAG_CPU_ARCH_V8M_BASE
       || arch == TAG_CPU_ARCH_V8M_MAIN
       || arch == TAG_CPU_ARCH_V8_1M_MAIN)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Determine if we're dealing with a Thumb-2 object.  */
 
-static bfd_boolean
+static bool
 using_thumb2 (struct elf32_arm_link_hash_table *globals)
 {
   int arch;
   int thumb_isa = bfd_elf_get_obj_attr_int (globals->obfd, OBJ_ATTR_PROC,
 					    Tag_THUMB_ISA_use);
 
-  if (thumb_isa)
+  /* No use of thumb permitted, or a legacy thumb-1/2 definition.  */
+  if (thumb_isa < 3)
     return thumb_isa == 2;
 
+  /* Variant of thumb is described by the architecture tag.  */
   arch = bfd_elf_get_obj_attr_int (globals->obfd, OBJ_ATTR_PROC, Tag_CPU_arch);
 
   /* Force return logic to be reviewed for each new architecture.  */
@@ -3931,14 +3879,14 @@ using_thumb2 (struct elf32_arm_link_hash
 
 /* Determine whether Thumb-2 BL instruction is available.  */
 
-static bfd_boolean
+static bool
 using_thumb2_bl (struct elf32_arm_link_hash_table *globals)
 {
   int arch =
     bfd_elf_get_obj_attr_int (globals->obfd, OBJ_ATTR_PROC, Tag_CPU_arch);
 
   /* Force return logic to be reviewed for each new architecture.  */
-  BFD_ASSERT (arch <= TAG_CPU_ARCH_V8_1M_MAIN);
+  BFD_ASSERT (arch <= TAG_CPU_ARCH_V9);
 
   /* Architecture was introduced after ARMv6T2 (eg. ARMv6-M).  */
   return (arch == TAG_CPU_ARCH_V6T2
@@ -3949,25 +3897,25 @@ using_thumb2_bl (struct elf32_arm_link_h
    .rel(a).bss sections in DYNOBJ, and set up shortcuts to them in our
    hash table.  */
 
-static bfd_boolean
+static bool
 elf32_arm_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
 {
   struct elf32_arm_link_hash_table *htab;
 
   htab = elf32_arm_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (!htab->root.sgot && !create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   if (!_bfd_elf_create_dynamic_sections (dynobj, info))
-    return FALSE;
+    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;
+	return false;
 
       if (bfd_link_pic (info))
 	{
@@ -4006,9 +3954,9 @@ elf32_arm_create_dynamic_sections (bfd *
   if (htab->fdpic_p) {
     htab->plt_header_size = 0;
     if (info->flags & DF_BIND_NOW)
-      htab->plt_entry_size = 4 * (ARRAY_SIZE(elf32_arm_fdpic_plt_entry) - 5);
+      htab->plt_entry_size = 4 * (ARRAY_SIZE (elf32_arm_fdpic_plt_entry) - 5);
     else
-      htab->plt_entry_size = 4 * ARRAY_SIZE(elf32_arm_fdpic_plt_entry);
+      htab->plt_entry_size = 4 * ARRAY_SIZE (elf32_arm_fdpic_plt_entry);
   }
 
   if (!htab->root.splt
@@ -4017,7 +3965,7 @@ elf32_arm_create_dynamic_sections (bfd *
       || (!bfd_link_pic (info) && !htab->root.srelbss))
     abort ();
 
-  return TRUE;
+  return true;
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -4032,37 +3980,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 +4027,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)
@@ -4118,8 +4035,7 @@ elf32_arm_link_hash_table_create (bfd *a
 
   if (!_bfd_elf_link_hash_table_init (& ret->root, abfd,
 				      elf32_arm_link_hash_newfunc,
-				      sizeof (struct elf32_arm_link_hash_entry),
-				      ARM_ELF_DATA))
+				      sizeof (struct elf32_arm_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -4134,7 +4050,7 @@ elf32_arm_link_hash_table_create (bfd *a
   ret->plt_header_size = 20;
   ret->plt_entry_size = elf32_arm_use_long_plt_entry ? 16 : 12;
 #endif
-  ret->use_rel = TRUE;
+  ret->use_rel = true;
   ret->obfd = abfd;
   ret->fdpic_p = 0;
 
@@ -4151,23 +4067,24 @@ elf32_arm_link_hash_table_create (bfd *a
 
 /* Determine what kind of NOPs are available.  */
 
-static bfd_boolean
+static bool
 arch_has_arm_nop (struct elf32_arm_link_hash_table *globals)
 {
   const int arch = bfd_elf_get_obj_attr_int (globals->obfd, OBJ_ATTR_PROC,
 					     Tag_CPU_arch);
 
   /* Force return logic to be reviewed for each new architecture.  */
-  BFD_ASSERT (arch <= TAG_CPU_ARCH_V8_1M_MAIN);
+  BFD_ASSERT (arch <= TAG_CPU_ARCH_V9);
 
   return (arch == TAG_CPU_ARCH_V6T2
 	  || arch == TAG_CPU_ARCH_V6K
 	  || arch == TAG_CPU_ARCH_V7
 	  || arch == TAG_CPU_ARCH_V8
-	  || arch == TAG_CPU_ARCH_V8R);
+	  || arch == TAG_CPU_ARCH_V8R
+	  || arch == TAG_CPU_ARCH_V9);
 }
 
-static bfd_boolean
+static bool
 arm_stub_is_thumb (enum elf32_arm_stub_type stub_type)
 {
   switch (stub_type)
@@ -4181,13 +4098,13 @@ arm_stub_is_thumb (enum elf32_arm_stub_t
     case arm_stub_long_branch_v4t_thumb_tls_pic:
     case arm_stub_long_branch_thumb_only_pic:
     case arm_stub_cmse_branch_thumb_only:
-      return TRUE;
+      return true;
     case arm_stub_none:
       BFD_FAIL ();
-      return FALSE;
+      return false;
       break;
     default:
-      return FALSE;
+      return false;
     }
 }
 
@@ -4209,7 +4126,7 @@ arm_type_of_stub (struct bfd_link_info *
   bfd_signed_vma branch_offset;
   unsigned int r_type;
   struct elf32_arm_link_hash_table * globals;
-  bfd_boolean thumb2, thumb2_bl, thumb_only;
+  bool thumb2, thumb2_bl, thumb_only;
   enum elf32_arm_stub_type stub_type = arm_stub_none;
   int use_plt = 0;
   enum arm_st_branch_type branch_type = *actual_branch_type;
@@ -4241,12 +4158,33 @@ arm_type_of_stub (struct bfd_link_info *
 
   r_type = ELF32_R_TYPE (rel->r_info);
 
+  /* Don't pretend we know what stub to use (if any) when we target a
+     Thumb-only target and we don't know the actual destination
+     type.  */
+  if (branch_type == ST_BRANCH_UNKNOWN && thumb_only)
+    return stub_type;
+
   /* ST_BRANCH_TO_ARM is nonsense to thumb-only targets when we
      are considering a function call relocation.  */
   if (thumb_only && (r_type == R_ARM_THM_CALL || r_type == R_ARM_THM_JUMP24
 		     || r_type == R_ARM_THM_JUMP19)
       && branch_type == ST_BRANCH_TO_ARM)
-    branch_type = ST_BRANCH_TO_THUMB;
+    {
+      if (sym_sec == bfd_abs_section_ptr)
+	/* As an exception, assume that absolute symbols are of the
+	   right kind (Thumb).  They are presumably defined in the
+	   linker script, where it is not possible to declare them as
+	   Thumb (and thus are seen as Arm mode). We'll inform the
+	   user with a warning, though, in
+	   elf32_arm_final_link_relocate. */
+	branch_type = ST_BRANCH_TO_THUMB;
+      else
+	/* Otherwise do not silently build a stub, and let the users
+	   know they have to fix their code.  Indeed, we could decide
+	   to insert a stub involving Arm code and/or BLX, leading to
+	   a run-time crash.  */
+	return stub_type;
+    }
 
   /* For TLS call relocs, it is the caller's responsibility to provide
      the address of the appropriate trampoline.  */
@@ -4518,13 +4456,9 @@ 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
-		      ? arm_stub_long_branch_arm_nacl_pic
-		      : arm_stub_long_branch_any_arm_pic))
+		   : arm_stub_long_branch_any_arm_pic)
 		/* non-PIC stubs.  */
-		: (globals->nacl_p
-		   ? arm_stub_long_branch_arm_nacl
-		   : arm_stub_long_branch_any_any);
+		: arm_stub_long_branch_any_any;
 	    }
 	}
     }
@@ -4598,7 +4532,7 @@ elf32_arm_get_stub_entry (const asection
   /* If the input section is the CMSE stubs one and it needs a long
      branch stub to reach it's final destination, give up with an
      error message: this is not supported.  See PR ld/24709.  */
-  if (!strncmp (input_section->name, CMSE_STUB_NAME, strlen(CMSE_STUB_NAME)))
+  if (!strncmp (input_section->name, CMSE_STUB_NAME, strlen (CMSE_STUB_NAME)))
     {
       bfd *output_bfd = htab->obfd;
       asection *out_sec = bfd_get_section_by_name (output_bfd, CMSE_STUB_NAME);
@@ -4613,7 +4547,7 @@ elf32_arm_get_stub_entry (const asection
 			    + h->root.root.u.def.value);
       /* Exit, rather than leave incompletely processed
 	 relocations.  */
-      xexit(1);
+      xexit (1);
     }
 
   /* If this input section is part of a group of sections sharing one
@@ -4640,7 +4574,7 @@ elf32_arm_get_stub_entry (const asection
 	return NULL;
 
       stub_entry = arm_stub_hash_lookup (&htab->stub_hash_table,
-					stub_name, FALSE, FALSE);
+					stub_name, false, false);
       if (h != NULL)
 	h->stub_cache = stub_entry;
 
@@ -4653,7 +4587,7 @@ elf32_arm_get_stub_entry (const asection
 /* Whether veneers of type STUB_TYPE require to be in a dedicated output
    section.  */
 
-static bfd_boolean
+static bool
 arm_dedicated_stub_output_section_required (enum elf32_arm_stub_type stub_type)
 {
   if (stub_type >= max_stub_type)
@@ -4662,10 +4596,10 @@ arm_dedicated_stub_output_section_requir
   switch (stub_type)
     {
     case arm_stub_cmse_branch_thumb_only:
-      return TRUE;
+      return true;
 
     default:
-      return FALSE;
+      return false;
     }
 
   abort ();  /* Should be unreachable.  */
@@ -4756,7 +4690,7 @@ elf32_arm_create_or_find_stub_sec (asect
 {
   asection *link_sec, *out_sec, **stub_sec_p;
   const char *stub_sec_prefix;
-  bfd_boolean dedicated_output_section =
+  bool dedicated_output_section =
     arm_dedicated_stub_output_section_required (stub_type);
   int align;
 
@@ -4787,7 +4721,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 = 3;
     }
 
   if (*stub_sec_p == NULL)
@@ -4842,7 +4776,7 @@ elf32_arm_add_stub (const char *stub_nam
 
   /* Enter this entry into the linker stub hash table.  */
   stub_entry = arm_stub_hash_lookup (&htab->stub_hash_table, stub_name,
-				     TRUE, FALSE);
+				     true, false);
   if (stub_entry == NULL)
     {
       if (section == NULL)
@@ -4936,7 +4870,7 @@ static bfd_reloc_status_type elf32_arm_f
   (reloc_howto_type *, bfd *, bfd *, asection *, bfd_byte *,
    Elf_Internal_Rela *, bfd_vma, struct bfd_link_info *, asection *,
    const char *, unsigned char, enum arm_st_branch_type,
-   struct elf_link_hash_entry *, bfd_boolean *, char **);
+   struct elf_link_hash_entry *, bool *, char **);
 
 static unsigned int
 arm_stub_required_alignment (enum elf32_arm_stub_type stub_type)
@@ -4968,10 +4902,6 @@ arm_stub_required_alignment (enum elf32_
     case arm_stub_a8_veneer_blx:
       return 4;
 
-    case arm_stub_long_branch_arm_nacl:
-    case arm_stub_long_branch_arm_nacl_pic:
-      return 16;
-
     default:
       abort ();  /* Should be unreachable.  */
     }
@@ -4980,7 +4910,7 @@ arm_stub_required_alignment (enum elf32_
 /* Returns whether stubs of type STUB_TYPE take over the symbol they are
    veneering (TRUE) or have their own symbol (FALSE).  */
 
-static bfd_boolean
+static bool
 arm_stub_sym_claimed (enum elf32_arm_stub_type stub_type)
 {
   if (stub_type >= max_stub_type)
@@ -4989,10 +4919,10 @@ arm_stub_sym_claimed (enum elf32_arm_stu
   switch (stub_type)
     {
     case arm_stub_cmse_branch_thumb_only:
-      return TRUE;
+      return true;
 
     default:
-      return FALSE;
+      return false;
     }
 
   abort ();  /* Should be unreachable.  */
@@ -5038,12 +4968,12 @@ arm_new_stubs_start_offset_ptr (struct e
     }
 }
 
-static bfd_boolean
+static bool
 arm_build_one_stub (struct bfd_hash_entry *gen_entry,
 		    void * in_arg)
 {
 #define MAXRELOCS 3
-  bfd_boolean removed_sg_veneer;
+  bool removed_sg_veneer;
   struct elf32_arm_stub_hash_entry *stub_entry;
   struct elf32_arm_link_hash_table *globals;
   struct bfd_link_info *info;
@@ -5064,16 +4994,24 @@ 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->fatal (_("%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;
+    return false;
 
   stub_sec = stub_entry->stub_sec;
 
   if ((globals->fix_cortex_a8 < 0)
       != (arm_stub_required_alignment (stub_entry->stub_type) == 2))
     /* We have to do less-strictly-aligned fixes last.  */
-    return TRUE;
+    return true;
 
   /* Assign a slot at the end of section if none assigned yet.  */
   if (stub_entry->stub_offset == (bfd_vma) -1)
@@ -5150,7 +5088,7 @@ arm_build_one_stub (struct bfd_hash_entr
 
 	default:
 	  BFD_FAIL ();
-	  return FALSE;
+	  return false;
 	}
     }
 
@@ -5174,7 +5112,7 @@ arm_build_one_stub (struct bfd_hash_entr
   for (i = 0; i < nrelocs; i++)
     {
       Elf_Internal_Rela rel;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       char *error_message;
       bfd_vma points_to =
 	sym_value + template_sequence[stub_reloc_idx[i]].reloc_addend;
@@ -5203,7 +5141,7 @@ arm_build_one_stub (struct bfd_hash_entr
 	   &error_message);
     }
 
-  return TRUE;
+  return true;
 #undef MAXRELOCS
 }
 
@@ -5254,7 +5192,7 @@ find_stub_size_and_template (enum elf32_
 /* As above, but don't actually build the stub.  Just bump offset so
    we know stub section sizes.  */
 
-static bfd_boolean
+static bool
 arm_size_one_stub (struct bfd_hash_entry *gen_entry,
 		   void *in_arg ATTRIBUTE_UNUSED)
 {
@@ -5265,8 +5203,8 @@ arm_size_one_stub (struct bfd_hash_entry
   /* Massage our args to the form they really have.  */
   stub_entry = (struct elf32_arm_stub_hash_entry *) gen_entry;
 
-  BFD_ASSERT((stub_entry->stub_type > arm_stub_none)
-	     && stub_entry->stub_type < ARRAY_SIZE(stub_definitions));
+  BFD_ASSERT ((stub_entry->stub_type > arm_stub_none)
+	      && stub_entry->stub_type < ARRAY_SIZE (stub_definitions));
 
   size = find_stub_size_and_template (stub_entry->stub_type, &template_sequence,
 				      &template_size);
@@ -5281,12 +5219,12 @@ arm_size_one_stub (struct bfd_hash_entry
 
   /* Already accounted for.  */
   if (stub_entry->stub_offset != (bfd_vma) -1)
-    return TRUE;
+    return true;
 
   size = (size + 7) & ~7;
   stub_entry->stub_sec->size += size;
 
-  return TRUE;
+  return true;
 }
 
 /* External entry points for sizing and building linker stubs.  */
@@ -5304,13 +5242,11 @@ 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)
     return 0;
-  if (! is_elf_hash_table (htab))
-    return 0;
 
   /* Count the number of input BFDs and find the top input section id.  */
   for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0;
@@ -5410,7 +5346,7 @@ elf32_arm_next_input_section (struct bfd
 static void
 group_sections (struct elf32_arm_link_hash_table *htab,
 		bfd_size_type stub_group_size,
-		bfd_boolean stubs_always_after_branch)
+		bool stubs_always_after_branch)
 {
   asection **list = htab->input_list;
 
@@ -5526,7 +5462,7 @@ static struct elf_link_hash_entry *find_
    NUM_A8_FIXES_P, A8_FIX_TABLE_SIZE_P.  Returns true if an error occurs, false
    otherwise.  */
 
-static bfd_boolean
+static bool
 cortex_a8_erratum_scan (bfd *input_bfd,
 			struct bfd_link_info *info,
 			struct a8_erratum_fix **a8_fixes_p,
@@ -5535,7 +5471,7 @@ cortex_a8_erratum_scan (bfd *input_bfd,
 			struct a8_erratum_reloc *a8_relocs,
 			unsigned int num_a8_relocs,
 			unsigned prev_num_a8_fixes,
-			bfd_boolean *stub_changed_p)
+			bool *stub_changed_p)
 {
   asection *section;
   struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info);
@@ -5544,7 +5480,7 @@ cortex_a8_erratum_scan (bfd *input_bfd,
   unsigned int a8_fix_table_size = *a8_fix_table_size_p;
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   for (section = input_bfd->sections;
        section != NULL;
@@ -5567,7 +5503,7 @@ cortex_a8_erratum_scan (bfd *input_bfd,
       if (elf_section_data (section)->this_hdr.contents != NULL)
 	contents = elf_section_data (section)->this_hdr.contents;
       else if (! bfd_malloc_and_get_section (input_bfd, section, &contents))
-	return TRUE;
+	return true;
 
       sec_data = elf32_arm_section_data (section);
 
@@ -5578,7 +5514,7 @@ cortex_a8_erratum_scan (bfd *input_bfd,
 	    ? section->size : sec_data->map[span + 1].vma;
 	  unsigned int i;
 	  char span_type = sec_data->map[span].type;
-	  bfd_boolean last_was_32bit = FALSE, last_was_branch = FALSE;
+	  bool last_was_32bit = false, last_was_branch = false;
 
 	  if (span_type != 't')
 	    continue;
@@ -5598,11 +5534,11 @@ cortex_a8_erratum_scan (bfd *input_bfd,
 	  for (i = span_start; i < span_end;)
 	    {
 	      unsigned int insn = bfd_getl16 (&contents[i]);
-	      bfd_boolean insn_32bit = FALSE, is_blx = FALSE, is_b = FALSE;
-	      bfd_boolean is_bl = FALSE, is_bcc = FALSE, is_32bit_branch;
+	      bool insn_32bit = false, is_blx = false, is_b = false;
+	      bool is_bl = false, is_bcc = false, is_32bit_branch;
 
 	      if ((insn & 0xe000) == 0xe000 && (insn & 0x1800) != 0x0000)
-		insn_32bit = TRUE;
+		insn_32bit = true;
 
 	      if (insn_32bit)
 		{
@@ -5629,12 +5565,12 @@ cortex_a8_erratum_scan (bfd *input_bfd,
 		  && ! last_was_branch)
 		{
 		  bfd_signed_vma offset = 0;
-		  bfd_boolean force_target_arm = FALSE;
-		  bfd_boolean force_target_thumb = FALSE;
+		  bool force_target_arm = false;
+		  bool force_target_thumb = false;
 		  bfd_vma target;
 		  enum elf32_arm_stub_type stub_type = arm_stub_none;
 		  struct a8_erratum_reloc key, *found;
-		  bfd_boolean use_plt = FALSE;
+		  bool use_plt = false;
 
 		  key.from = base_vma + i;
 		  found = (struct a8_erratum_reloc *)
@@ -5653,20 +5589,20 @@ cortex_a8_erratum_scan (bfd *input_bfd,
 					       &error_message);
 
 		      if (entry)
-			found->non_a8_stub = TRUE;
+			found->non_a8_stub = true;
 
 		      /* Keep a simpler condition, for the sake of clarity.  */
 		      if (htab->root.splt != NULL && found->hash != NULL
 			  && found->hash->root.plt.offset != (bfd_vma) -1)
-			use_plt = TRUE;
+			use_plt = true;
 
 		      if (found->r_type == R_ARM_THM_CALL)
 			{
 			  if (found->branch_type == ST_BRANCH_TO_ARM
 			      || use_plt)
-			    force_target_arm = TRUE;
+			    force_target_arm = true;
 			  else
-			    force_target_thumb = TRUE;
+			    force_target_thumb = true;
 			}
 		    }
 
@@ -5724,8 +5660,8 @@ cortex_a8_erratum_scan (bfd *input_bfd,
 			  && stub_type == arm_stub_a8_veneer_bl)
 			{
 			  stub_type = arm_stub_a8_veneer_blx;
-			  is_blx = TRUE;
-			  is_bl = FALSE;
+			  is_blx = true;
+			  is_bl = false;
 			}
 		      /* Conversely, if the original instruction was
 			 BLX but the target is Thumb mode, use the BL
@@ -5734,8 +5670,8 @@ cortex_a8_erratum_scan (bfd *input_bfd,
 			       && stub_type == arm_stub_a8_veneer_blx)
 			{
 			  stub_type = arm_stub_a8_veneer_bl;
-			  is_blx = FALSE;
-			  is_bl = TRUE;
+			  is_blx = false;
+			  is_bl = true;
 			}
 
 		      if (is_blx)
@@ -5788,7 +5724,7 @@ cortex_a8_erratum_scan (bfd *input_bfd,
 				{
 				  free (stub_name);
 				  stub_name = NULL;
-				  *stub_changed_p = TRUE;
+				  *stub_changed_p = true;
 				}
 			    }
 
@@ -5829,7 +5765,7 @@ cortex_a8_erratum_scan (bfd *input_bfd,
   *num_a8_fixes_p = num_a8_fixes;
   *a8_fix_table_size_p = a8_fix_table_size;
 
-  return FALSE;
+  return false;
 }
 
 /* Create or update a stub entry depending on whether the stub can already be
@@ -5855,16 +5791,16 @@ elf32_arm_create_stub (struct elf32_arm_
 		       Elf_Internal_Rela *irela, asection *sym_sec,
 		       struct elf32_arm_link_hash_entry *hash, char *sym_name,
 		       bfd_vma sym_value, enum arm_st_branch_type branch_type,
-		       bfd_boolean *new_stub)
+		       bool *new_stub)
 {
   const asection *id_sec;
   char *stub_name;
   struct elf32_arm_stub_hash_entry *stub_entry;
   unsigned int r_type;
-  bfd_boolean sym_claimed = arm_stub_sym_claimed (stub_type);
+  bool sym_claimed = arm_stub_sym_claimed (stub_type);
 
   BFD_ASSERT (stub_type != arm_stub_none);
-  *new_stub = FALSE;
+  *new_stub = false;
 
   if (sym_claimed)
     stub_name = sym_name;
@@ -5884,8 +5820,8 @@ elf32_arm_create_stub (struct elf32_arm_
 	return NULL;
     }
 
-  stub_entry = arm_stub_hash_lookup (&htab->stub_hash_table, stub_name, FALSE,
-				     FALSE);
+  stub_entry = arm_stub_hash_lookup (&htab->stub_hash_table, stub_name, false,
+				     false);
   /* The proper stub has already been created, just update its value.  */
   if (stub_entry != NULL)
     {
@@ -5940,7 +5876,7 @@ elf32_arm_create_stub (struct elf32_arm_
 	sprintf (stub_entry->output_name, STUB_ENTRY_NAME, sym_name);
     }
 
-  *new_stub = TRUE;
+  *new_stub = true;
   return stub_entry;
 }
 
@@ -5965,7 +5901,7 @@ elf32_arm_create_stub (struct elf32_arm_
 
    The return value gives whether a stub failed to be allocated.  */
 
-static bfd_boolean
+static bool
 cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
 	   obj_attribute *out_attr, struct elf_link_hash_entry **sym_hashes,
 	   int *cmse_stub_created)
@@ -5980,7 +5916,7 @@ cmse_scan (bfd *input_bfd, struct elf32_
   bfd_vma sym_value;
   asection *section;
   struct elf32_arm_stub_hash_entry *stub_entry;
-  bfd_boolean is_v8m, new_stub, cmse_invalid, ret = TRUE;
+  bool is_v8m, new_stub, cmse_invalid, ret = true;
 
   bed = get_elf_backend_data (input_bfd);
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
@@ -5995,12 +5931,12 @@ cmse_scan (bfd *input_bfd, struct elf32_
 				       symtab_hdr->sh_info, 0, NULL, NULL,
 				       NULL);
   if (symtab_hdr->sh_info && local_syms == NULL)
-    return FALSE;
+    return false;
 
   /* Scan symbols.  */
   for (i = 0; i < sym_count; i++)
     {
-      cmse_invalid = FALSE;
+      cmse_invalid = false;
 
       if (i < ext_start)
 	{
@@ -6008,24 +5944,27 @@ cmse_scan (bfd *input_bfd, struct elf32_
 	  sym_name = bfd_elf_string_from_elf_section (input_bfd,
 						      symtab_hdr->sh_link,
 						      cmse_sym->st_name);
-	  if (!sym_name || !CONST_STRNEQ (sym_name, CMSE_PREFIX))
+	  if (!sym_name || !startswith (sym_name, CMSE_PREFIX))
 	    continue;
 
 	  /* Special symbol with local binding.  */
-	  cmse_invalid = TRUE;
+	  cmse_invalid = true;
 	}
       else
 	{
 	  cmse_hash = elf32_arm_hash_entry (sym_hashes[i - ext_start]);
+	  if (cmse_hash == NULL)
+	    continue;
+
 	  sym_name = (char *) cmse_hash->root.root.root.string;
-	  if (!CONST_STRNEQ (sym_name, CMSE_PREFIX))
+	  if (!startswith (sym_name, CMSE_PREFIX))
 	    continue;
 
 	  /* Special symbol has incorrect binding or type.  */
 	  if ((cmse_hash->root.root.type != bfd_link_hash_defined
 	       && cmse_hash->root.root.type != bfd_link_hash_defweak)
 	      || cmse_hash->root.type != STT_FUNC)
-	    cmse_invalid = TRUE;
+	    cmse_invalid = true;
 	}
 
       if (!is_v8m)
@@ -6033,8 +5972,8 @@ cmse_scan (bfd *input_bfd, struct elf32_
 	  _bfd_error_handler (_("%pB: special symbol `%s' only allowed for "
 				"ARMv8-M architecture or later"),
 			      input_bfd, sym_name);
-	  is_v8m = TRUE; /* Avoid multiple warning.  */
-	  ret = FALSE;
+	  is_v8m = true; /* Avoid multiple warning.  */
+	  ret = false;
 	}
 
       if (cmse_invalid)
@@ -6042,14 +5981,14 @@ cmse_scan (bfd *input_bfd, struct elf32_
 	  _bfd_error_handler (_("%pB: invalid special symbol `%s'; it must be"
 				" a global or weak function symbol"),
 			      input_bfd, sym_name);
-	  ret = FALSE;
+	  ret = false;
 	  if (i < ext_start)
 	    continue;
 	}
 
       sym_name += strlen (CMSE_PREFIX);
       hash = (struct elf32_arm_link_hash_entry *)
-	elf_link_hash_lookup (&(htab)->root, sym_name, FALSE, FALSE, TRUE);
+	elf_link_hash_lookup (&(htab)->root, sym_name, false, false, true);
 
       /* No associated normal symbol or it is neither global nor weak.  */
       if (!hash
@@ -6085,7 +6024,7 @@ cmse_scan (bfd *input_bfd, struct elf32_
 	  else
 	    _bfd_error_handler
 	      (_("%pB: absent standard symbol `%s'"), input_bfd, sym_name);
-	  ret = FALSE;
+	  ret = false;
 	  if (!hash)
 	    continue;
 	}
@@ -6098,7 +6037,7 @@ cmse_scan (bfd *input_bfd, struct elf32_
 	  _bfd_error_handler
 	    (_("%pB: `%s' and its special symbol are in different sections"),
 	     input_bfd, sym_name);
-	  ret = FALSE;
+	  ret = false;
 	}
       if (cmse_hash->root.root.u.def.value != sym_value)
 	continue; /* Ignore: could be an entry function starting with SG.  */
@@ -6116,7 +6055,7 @@ cmse_scan (bfd *input_bfd, struct elf32_
 	{
 	  _bfd_error_handler
 	    (_("%pB: entry function `%s' is empty"), input_bfd, sym_name);
-	  ret = FALSE;
+	  ret = false;
 	}
 
       if (!ret)
@@ -6128,7 +6067,7 @@ cmse_scan (bfd *input_bfd, struct elf32_
 				 sym_value, branch_type, &new_stub);
 
       if (stub_entry == NULL)
-	 ret = FALSE;
+	 ret = false;
       else
 	{
 	  BFD_ASSERT (new_stub);
@@ -6145,7 +6084,7 @@ cmse_scan (bfd *input_bfd, struct elf32_
    code entry function, ie can be called from non secure code without using a
    veneer.  */
 
-static bfd_boolean
+static bool
 cmse_entry_fct_p (struct elf32_arm_link_hash_entry *hash)
 {
   bfd_byte contents[4];
@@ -6157,9 +6096,9 @@ cmse_entry_fct_p (struct elf32_arm_link_
   /* Defined symbol of function type.  */
   if (hash->root.root.type != bfd_link_hash_defined
       && hash->root.root.type != bfd_link_hash_defweak)
-    return FALSE;
+    return false;
   if (hash->root.type != STT_FUNC)
-    return FALSE;
+    return false;
 
   /* Read first instruction.  */
   section = hash->root.root.u.def.section;
@@ -6167,7 +6106,7 @@ cmse_entry_fct_p (struct elf32_arm_link_
   offset = hash->root.root.u.def.value - section->vma;
   if (!bfd_get_section_contents (abfd, section, contents, offset,
 				 sizeof (contents)))
-    return FALSE;
+    return false;
 
   first_insn = bfd_get_32 (abfd, contents);
 
@@ -6179,7 +6118,7 @@ cmse_entry_fct_p (struct elf32_arm_link_
    secure gateway veneers (ie. the veneers was not in the input import library)
    and there is no output import library (GEN_INFO->out_implib_bfd is NULL.  */
 
-static bfd_boolean
+static bool
 arm_list_new_cmse_stub (struct bfd_hash_entry *gen_entry, void *gen_info)
 {
   struct elf32_arm_stub_hash_entry *stub_entry;
@@ -6190,15 +6129,15 @@ arm_list_new_cmse_stub (struct bfd_hash_
   info = (struct bfd_link_info *) gen_info;
 
   if (info->out_implib_bfd)
-    return TRUE;
+    return true;
 
   if (stub_entry->stub_type != arm_stub_cmse_branch_thumb_only)
-    return TRUE;
+    return true;
 
   if (stub_entry->stub_offset == (bfd_vma) -1)
     _bfd_error_handler ("  %s", stub_entry->output_name);
 
-  return TRUE;
+  return true;
 }
 
 /* Set offset of each secure gateway veneers so that its address remain
@@ -6214,7 +6153,7 @@ arm_list_new_cmse_stub (struct bfd_hash_
    and this function and HTAB->new_cmse_stub_offset is set to the biggest
    veneer observed set for new veneers to be layed out after.  */
 
-static bfd_boolean
+static bool
 set_cmse_veneer_addr_from_implib (struct bfd_link_info *info,
 				  struct elf32_arm_link_hash_table *htab,
 				  int *cmse_stub_created)
@@ -6225,7 +6164,7 @@ set_cmse_veneer_addr_from_implib (struct
   long i, symcount;
   bfd *in_implib_bfd;
   asection *stub_out_sec;
-  bfd_boolean ret = TRUE;
+  bool ret = true;
   Elf_Internal_Sym *intsym;
   const char *out_sec_name;
   bfd_size_type cmse_stub_size;
@@ -6239,30 +6178,30 @@ set_cmse_veneer_addr_from_implib (struct
 
   /* No input secure gateway import library.  */
   if (!htab->in_implib_bfd)
-    return TRUE;
+    return true;
 
   in_implib_bfd = htab->in_implib_bfd;
   if (!htab->cmse_implib)
     {
       _bfd_error_handler (_("%pB: --in-implib only supported for Secure "
 			    "Gateway import libraries"), in_implib_bfd);
-      return FALSE;
+      return false;
     }
 
   /* Get symbol table size.  */
   symsize = bfd_get_symtab_upper_bound (in_implib_bfd);
   if (symsize < 0)
-    return FALSE;
+    return false;
 
   /* Read in the input secure gateway import library's symbol table.  */
   sympp = (asymbol **) bfd_malloc (symsize);
   if (sympp == NULL)
-    return FALSE;
+    return false;
 
   symcount = bfd_canonicalize_symtab (in_implib_bfd, sympp);
   if (symcount < 0)
     {
-      ret = FALSE;
+      ret = false;
       goto free_sym_buf;
     }
 
@@ -6297,34 +6236,34 @@ set_cmse_veneer_addr_from_implib (struct
 				"symbol should be absolute, global and "
 				"refer to Thumb functions"),
 			      in_implib_bfd, sym_name);
-	  ret = FALSE;
+	  ret = false;
 	  continue;
 	}
 
       veneer_value = bfd_asymbol_value (sym);
       stub_offset = veneer_value - cmse_stub_sec_vma;
       stub_entry = arm_stub_hash_lookup (&htab->stub_hash_table, sym_name,
-					 FALSE, FALSE);
+					 false, false);
       hash = (struct elf32_arm_link_hash_entry *)
-	elf_link_hash_lookup (&(htab)->root, sym_name, FALSE, FALSE, TRUE);
+	elf_link_hash_lookup (&(htab)->root, sym_name, false, false, true);
 
       /* Stub entry should have been created by cmse_scan or the symbol be of
 	 a secure function callable from non secure code.  */
       if (!stub_entry && !hash)
 	{
-	  bfd_boolean new_stub;
+	  bool new_stub;
 
 	  _bfd_error_handler
 	    (_("entry function `%s' disappeared from secure code"), sym_name);
 	  hash = (struct elf32_arm_link_hash_entry *)
-	    elf_link_hash_lookup (&(htab)->root, sym_name, TRUE, TRUE, TRUE);
+	    elf_link_hash_lookup (&(htab)->root, sym_name, true, true, true);
 	  stub_entry
 	    = elf32_arm_create_stub (htab, arm_stub_cmse_branch_thumb_only,
 				     NULL, NULL, bfd_abs_section_ptr, hash,
 				     sym_name, veneer_value,
 				     ST_BRANCH_TO_THUMB, &new_stub);
 	  if (stub_entry == NULL)
-	    ret = FALSE;
+	    ret = false;
 	  else
 	  {
 	    BFD_ASSERT (new_stub);
@@ -6341,7 +6280,7 @@ set_cmse_veneer_addr_from_implib (struct
 	    {
 	      _bfd_error_handler (_("`%s' refers to a non entry function"),
 				  sym_name);
-	      ret = FALSE;
+	      ret = false;
 	    }
 	  continue;
 	}
@@ -6365,7 +6304,7 @@ set_cmse_veneer_addr_from_implib (struct
 	{
 	  _bfd_error_handler (_("%pB: incorrect size for symbol `%s'"),
 			      in_implib_bfd, sym_name);
-	  ret = FALSE;
+	  ret = false;
 	}
 
       /* Previous veneer address is before current SG veneer section.  */
@@ -6375,7 +6314,7 @@ set_cmse_veneer_addr_from_implib (struct
 	  if (stub_entry)
 	    stub_entry->stub_offset = 0;
 	  stub_offset = 0;
-	  ret = FALSE;
+	  ret = false;
 	}
 
       /* Complain if stub offset not a multiple of stub size.  */
@@ -6384,7 +6323,7 @@ set_cmse_veneer_addr_from_implib (struct
 	  _bfd_error_handler
 	    (_("offset of veneer for entry function `%s' not a multiple of "
 	       "its size"), sym_name);
-	  ret = FALSE;
+	  ret = false;
 	}
 
       if (!ret)
@@ -6412,10 +6351,10 @@ set_cmse_veneer_addr_from_implib (struct
       _bfd_error_handler
 	(_("start address of `%s' is different from previous link"),
 	 out_sec_name);
-      ret = FALSE;
+      ret = false;
     }
 
-free_sym_buf:
+ free_sym_buf:
   free (sympp);
   return ret;
 }
@@ -6426,7 +6365,7 @@ free_sym_buf:
    PC-relative calls to a target that is unreachable with a "bl"
    instruction.  */
 
-bfd_boolean
+bool
 elf32_arm_size_stubs (bfd *output_bfd,
 		      bfd *stub_bfd,
 		      struct bfd_link_info *info,
@@ -6436,11 +6375,11 @@ elf32_arm_size_stubs (bfd *output_bfd,
 						      unsigned int),
 		      void (*layout_sections_again) (void))
 {
-  bfd_boolean ret = TRUE;
+  bool ret = true;
   obj_attribute *out_attr;
   int cmse_stub_created = 0;
   bfd_size_type stub_group_size;
-  bfd_boolean m_profile, stubs_always_after_branch, first_veneer_scan = TRUE;
+  bool m_profile, stubs_always_after_branch, first_veneer_scan = true;
   struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info);
   struct a8_erratum_fix *a8_fixes = NULL;
   unsigned int num_a8_fixes = 0, a8_fix_table_size = 10;
@@ -6448,7 +6387,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
   unsigned int num_a8_relocs = 0, a8_reloc_table_size = 10, i;
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (htab->fix_cortex_a8)
     {
@@ -6512,16 +6451,15 @@ elf32_arm_size_stubs (bfd *output_bfd,
   while (1)
     {
       bfd *input_bfd;
-      unsigned int bfd_indx;
       asection *stub_sec;
       enum elf32_arm_stub_type stub_type;
-      bfd_boolean stub_changed = FALSE;
+      bool stub_changed = false;
       unsigned prev_num_a8_fixes = num_a8_fixes;
 
       num_a8_fixes = 0;
-      for (input_bfd = info->input_bfds, bfd_indx = 0;
+      for (input_bfd = info->input_bfds;
 	   input_bfd != NULL;
-	   input_bfd = input_bfd->link.next, bfd_indx++)
+	   input_bfd = input_bfd->link.next)
 	{
 	  Elf_Internal_Shdr *symtab_hdr;
 	  asection *section;
@@ -6553,7 +6491,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 		goto error_ret_free_local;
 
 	      if (cmse_stub_created != 0)
-		stub_changed = TRUE;
+		stub_changed = true;
 	    }
 
 	  /* Walk over each section attached to the input bfd.  */
@@ -6596,7 +6534,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 		  const char *sym_name;
 		  unsigned char st_type;
 		  enum arm_st_branch_type branch_type;
-		  bfd_boolean created_stub = FALSE;
+		  bool created_stub = false;
 
 		  r_type = ELF32_R_TYPE (irela->r_info);
 		  r_indx = ELF32_R_SYM (irela->r_info);
@@ -6609,11 +6547,9 @@ 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;
+		      return false;
 		    }
 
 		  hash = NULL;
@@ -6633,8 +6569,9 @@ elf32_arm_size_stubs (bfd *output_bfd,
 		      && (r_type != (unsigned int) R_ARM_PLT32)
 		      && !((r_type == (unsigned int) R_ARM_TLS_CALL
 			    || r_type == (unsigned int) R_ARM_THM_TLS_CALL)
-			   && r_type == elf32_arm_tls_transition
-			       (info, r_type, &hash->root)
+			   && r_type == (elf32_arm_tls_transition
+					 (info, r_type,
+					  (struct elf_link_hash_entry *) hash))
 			   && ((hash ? hash->tls_type
 				: (elf32_arm_local_got_tls_type
 				   (input_bfd)[r_indx]))
@@ -6784,7 +6721,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 
 		  do
 		    {
-		      bfd_boolean new_stub;
+		      bool new_stub;
 		      struct elf32_arm_stub_hash_entry *stub_entry;
 
 		      /* Determine what (if any) linker stub is needed.  */
@@ -6809,7 +6746,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 		      else if (!new_stub)
 			break;
 		      else
-			stub_changed = TRUE;
+			stub_changed = true;
 		    }
 		  while (0);
 
@@ -6888,10 +6825,10 @@ elf32_arm_size_stubs (bfd *output_bfd,
       if (first_veneer_scan
 	  && !set_cmse_veneer_addr_from_implib (info, htab,
 						&cmse_stub_created))
-	ret = FALSE;
+	ret = false;
 
       if (prev_num_a8_fixes != num_a8_fixes)
-	stub_changed = TRUE;
+	stub_changed = true;
 
       if (!stub_changed)
 	break;
@@ -6957,7 +6894,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 			 a8_fixes[i].section, htab, a8_fixes[i].stub_type);
 
 	    if (stub_sec == NULL)
-	      return FALSE;
+	      return false;
 
 	    stub_sec->size
 	      += find_stub_size_and_template (a8_fixes[i].stub_type, NULL,
@@ -6967,7 +6904,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
 
       /* Ask the linker to do its stuff.  */
       (*htab->layout_sections_again) ();
-      first_veneer_scan = FALSE;
+      first_veneer_scan = false;
     }
 
   /* Add stubs for Cortex-A8 erratum fixes now.  */
@@ -6985,12 +6922,12 @@ elf32_arm_size_stubs (bfd *output_bfd,
 	  int template_size, size = 0;
 
 	  stub_entry = arm_stub_hash_lookup (&htab->stub_hash_table, stub_name,
-					     TRUE, FALSE);
+					     true, false);
 	  if (stub_entry == NULL)
 	    {
 	      _bfd_error_handler (_("%pB: cannot create stub entry %s"),
 				  section->owner, stub_name);
-	      return FALSE;
+	      return false;
 	    }
 
 	  stub_entry->stub_sec = stub_sec;
@@ -7031,7 +6968,7 @@ elf32_arm_size_stubs (bfd *output_bfd,
    functions here.  This function is called via arm_elf_finish in the
    linker.  */
 
-bfd_boolean
+bool
 elf32_arm_build_stubs (struct bfd_link_info *info)
 {
   asection *stub_sec;
@@ -7041,7 +6978,7 @@ elf32_arm_build_stubs (struct bfd_link_i
 
   htab = elf32_arm_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   for (stub_sec = htab->stub_bfd->sections;
        stub_sec != NULL;
@@ -7060,7 +6997,8 @@ elf32_arm_build_stubs (struct bfd_link_i
       size = stub_sec->size;
       stub_sec->contents = (unsigned char *) bfd_zalloc (htab->stub_bfd, size);
       if (stub_sec->contents == NULL && size != 0)
-	return FALSE;
+	return false;
+      stub_sec->alloced = 1;
 
       stub_sec->size = 0;
     }
@@ -7091,7 +7029,7 @@ elf32_arm_build_stubs (struct bfd_link_i
       bfd_hash_traverse (table, arm_build_one_stub, info);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Locate the Thumb encoded calling stub for NAME.  */
@@ -7118,12 +7056,15 @@ find_thumb_glue (struct bfd_link_info *l
   sprintf (tmp_name, THUMB2ARM_GLUE_ENTRY_NAME, name);
 
   hash = elf_link_hash_lookup
-    (&(hash_table)->root, tmp_name, FALSE, FALSE, TRUE);
+    (&(hash_table)->root, tmp_name, false, false, true);
 
-  if (hash == NULL
-      && asprintf (error_message, _("unable to find %s glue '%s' for '%s'"),
-		   "Thumb", tmp_name, name) == -1)
-    *error_message = (char *) bfd_errmsg (bfd_error_system_call);
+  if (hash == NULL)
+    {
+      *error_message = bfd_asprintf (_("unable to find %s glue '%s' for '%s'"),
+				     "Thumb", tmp_name, name);
+      if (*error_message == NULL)
+	*error_message = (char *) bfd_errmsg (bfd_error_system_call);
+    }
 
   free (tmp_name);
 
@@ -7148,19 +7089,20 @@ 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);
 
   myh = elf_link_hash_lookup
-    (&(hash_table)->root, tmp_name, FALSE, FALSE, TRUE);
-
-  if (myh == NULL
-      && asprintf (error_message, _("unable to find %s glue '%s' for '%s'"),
-		   "ARM", tmp_name, name) == -1)
-    *error_message = (char *) bfd_errmsg (bfd_error_system_call);
+    (&(hash_table)->root, tmp_name, false, false, true);
 
+  if (myh == NULL)
+    {
+      *error_message = bfd_asprintf (_("unable to find %s glue '%s' for '%s'"),
+				     "ARM", tmp_name, name);
+      if (*error_message == NULL)
+	*error_message = (char *) bfd_errmsg (bfd_error_system_call);
+    }
   free (tmp_name);
 
   return myh;
@@ -7263,9 +7205,10 @@ arm_allocate_glue_section_space (bfd * a
 
   BFD_ASSERT (s->size == size);
   s->contents = contents;
+  s->alloced = 1;
 }
 
-bfd_boolean
+bool
 bfd_elf32_arm_allocate_interworking_sections (struct bfd_link_info * info)
 {
   struct elf32_arm_link_hash_table * globals;
@@ -7293,7 +7236,7 @@ bfd_elf32_arm_allocate_interworking_sect
 				   globals->bx_glue_size,
 				   ARM_BX_GLUE_SECTION_NAME);
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space and symbols for calling a Thumb function from Arm mode.
@@ -7323,13 +7266,12 @@ 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);
 
   myh = elf_link_hash_lookup
-    (&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
+    (&(globals)->root, tmp_name, false, false, true);
 
   if (myh != NULL)
     {
@@ -7346,7 +7288,7 @@ record_arm_to_thumb_glue (struct bfd_lin
   val = globals->arm_glue_size + 1;
   _bfd_generic_link_add_one_symbol (link_info, globals->bfd_of_glue_owner,
 				    tmp_name, BSF_GLOBAL, s, val,
-				    NULL, TRUE, FALSE, &bh);
+				    NULL, true, false, &bh);
 
   myh = (struct elf_link_hash_entry *) bh;
   myh->type = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
@@ -7355,7 +7297,6 @@ record_arm_to_thumb_glue (struct bfd_lin
   free (tmp_name);
 
   if (bfd_link_pic (link_info)
-      || globals->root.is_relocatable_executable
       || globals->pic_veneer)
     size = ARM2THUMB_PIC_GLUE_SIZE;
   else if (globals->use_blx)
@@ -7401,13 +7342,12 @@ 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);
 
   myh = elf_link_hash_lookup
-    (&(globals)->root, tmp_name, FALSE, FALSE, FALSE);
+    (&(globals)->root, tmp_name, false, false, false);
 
   BFD_ASSERT (myh == NULL);
 
@@ -7415,7 +7355,7 @@ record_arm_bx_glue (struct bfd_link_info
   val = globals->bx_glue_size;
   _bfd_generic_link_add_one_symbol (link_info, globals->bfd_of_glue_owner,
 				    tmp_name, BSF_FUNCTION | BSF_LOCAL, s, val,
-				    NULL, TRUE, FALSE, &bh);
+				    NULL, true, false, &bh);
 
   myh = (struct elf_link_hash_entry *) bh;
   myh->type = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
@@ -7493,14 +7433,13 @@ 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,
 	   hash_table->num_vfp11_fixes);
 
   myh = elf_link_hash_lookup
-    (&(hash_table)->root, tmp_name, FALSE, FALSE, FALSE);
+    (&(hash_table)->root, tmp_name, false, false, false);
 
   BFD_ASSERT (myh == NULL);
 
@@ -7508,7 +7447,7 @@ record_vfp11_erratum_veneer (struct bfd_
   val = hash_table->vfp11_erratum_glue_size;
   _bfd_generic_link_add_one_symbol (link_info, hash_table->bfd_of_glue_owner,
 				    tmp_name, BSF_FUNCTION | BSF_LOCAL, s, val,
-				    NULL, TRUE, FALSE, &bh);
+				    NULL, true, false, &bh);
 
   myh = (struct elf_link_hash_entry *) bh;
   myh->type = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
@@ -7533,7 +7472,7 @@ record_vfp11_erratum_veneer (struct bfd_
 	   hash_table->num_vfp11_fixes);
 
   myh = elf_link_hash_lookup
-    (&(hash_table)->root, tmp_name, FALSE, FALSE, FALSE);
+    (&(hash_table)->root, tmp_name, false, false, false);
 
   if (myh != NULL)
     abort ();
@@ -7541,7 +7480,7 @@ record_vfp11_erratum_veneer (struct bfd_
   bh = NULL;
   val = offset + 4;
   _bfd_generic_link_add_one_symbol (link_info, branch_bfd, tmp_name, BSF_LOCAL,
-				    branch_sec, val, NULL, TRUE, FALSE, &bh);
+				    branch_sec, val, NULL, true, false, &bh);
 
   myh = (struct elf_link_hash_entry *) bh;
   myh->type = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
@@ -7559,7 +7498,7 @@ record_vfp11_erratum_veneer (struct bfd_
       _bfd_generic_link_add_one_symbol (link_info,
 					hash_table->bfd_of_glue_owner, "$a",
 					BSF_LOCAL, s, 0, NULL,
-					TRUE, FALSE, &bh);
+					true, false, &bh);
 
       myh = (struct elf_link_hash_entry *) bh;
       myh->type = ELF_ST_INFO (STB_LOCAL, STT_NOTYPE);
@@ -7613,14 +7552,13 @@ 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,
 	   hash_table->num_stm32l4xx_fixes);
 
   myh = elf_link_hash_lookup
-    (&(hash_table)->root, tmp_name, FALSE, FALSE, FALSE);
+    (&(hash_table)->root, tmp_name, false, false, false);
 
   BFD_ASSERT (myh == NULL);
 
@@ -7628,7 +7566,7 @@ record_stm32l4xx_erratum_veneer (struct
   val = hash_table->stm32l4xx_erratum_glue_size;
   _bfd_generic_link_add_one_symbol (link_info, hash_table->bfd_of_glue_owner,
 				    tmp_name, BSF_FUNCTION | BSF_LOCAL, s, val,
-				    NULL, TRUE, FALSE, &bh);
+				    NULL, true, false, &bh);
 
   myh = (struct elf_link_hash_entry *) bh;
   myh->type = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
@@ -7653,7 +7591,7 @@ record_stm32l4xx_erratum_veneer (struct
 	   hash_table->num_stm32l4xx_fixes);
 
   myh = elf_link_hash_lookup
-    (&(hash_table)->root, tmp_name, FALSE, FALSE, FALSE);
+    (&(hash_table)->root, tmp_name, false, false, false);
 
   if (myh != NULL)
     abort ();
@@ -7661,7 +7599,7 @@ record_stm32l4xx_erratum_veneer (struct
   bh = NULL;
   val = offset + 4;
   _bfd_generic_link_add_one_symbol (link_info, branch_bfd, tmp_name, BSF_LOCAL,
-				    branch_sec, val, NULL, TRUE, FALSE, &bh);
+				    branch_sec, val, NULL, true, false, &bh);
 
   myh = (struct elf_link_hash_entry *) bh;
   myh->type = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
@@ -7678,7 +7616,7 @@ record_stm32l4xx_erratum_veneer (struct
       _bfd_generic_link_add_one_symbol (link_info,
 					hash_table->bfd_of_glue_owner, "$t",
 					BSF_LOCAL, s, 0, NULL,
-					TRUE, FALSE, &bh);
+					true, false, &bh);
 
       myh = (struct elf_link_hash_entry *) bh;
       myh->type = ELF_ST_INFO (STB_LOCAL, STT_NOTYPE);
@@ -7705,7 +7643,7 @@ record_stm32l4xx_erratum_veneer (struct
 
 /* Create a fake section for use by the ARM backend of the linker.  */
 
-static bfd_boolean
+static bool
 arm_make_glue_section (bfd * abfd, const char * name)
 {
   asection * sec;
@@ -7713,19 +7651,19 @@ arm_make_glue_section (bfd * abfd, const
   sec = bfd_get_linker_section (abfd, name);
   if (sec != NULL)
     /* Already made.  */
-    return TRUE;
+    return true;
 
   sec = bfd_make_section_anyway_with_flags (abfd, name, ARM_GLUE_SECTION_FLAGS);
 
   if (sec == NULL
       || !bfd_set_section_alignment (sec, 2))
-    return FALSE;
+    return false;
 
   /* Set the gc mark to prevent the section from being removed by garbage
      collection, despite the fact that no relocs refer to this section.  */
   sec->gc_mark = 1;
 
-  return TRUE;
+  return true;
 }
 
 /* Set size of .plt entries.  This function is called from the
@@ -7734,25 +7672,25 @@ arm_make_glue_section (bfd * abfd, const
 void
 bfd_elf32_arm_use_long_plt (void)
 {
-  elf32_arm_use_long_plt_entry = TRUE;
+  elf32_arm_use_long_plt_entry = true;
 }
 
 /* Add the glue sections to ABFD.  This function is called from the
    linker scripts in ld/emultempl/{armelf}.em.  */
 
-bfd_boolean
+bool
 bfd_elf32_arm_add_glue_sections_to_bfd (bfd *abfd,
 					struct bfd_link_info *info)
 {
   struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (info);
-  bfd_boolean dostm32l4xx = globals
+  bool dostm32l4xx = globals
     && globals->stm32l4xx_fix != BFD_ARM_STM32L4XX_FIX_NONE;
-  bfd_boolean addglue;
+  bool addglue;
 
   /* If we are only performing a partial
      link do not bother adding the glue.  */
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   addglue = arm_make_glue_section (abfd, ARM2THUMB_GLUE_SECTION_NAME)
     && arm_make_glue_section (abfd, THUMB2ARM_GLUE_SECTION_NAME)
@@ -7801,7 +7739,7 @@ bfd_elf32_arm_keep_private_stub_output_s
    This function is called from the linker scripts in ld/emultempl/
    {armelf/pe}.em.  */
 
-bfd_boolean
+bool
 bfd_elf32_arm_get_bfd_for_interworking (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf32_arm_link_hash_table *globals;
@@ -7809,7 +7747,7 @@ bfd_elf32_arm_get_bfd_for_interworking (
   /* If we are only performing a partial link
      do not bother getting a bfd to hold the glue.  */
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* Make sure we don't attach the glue sections to a dynamic object.  */
   BFD_ASSERT (!(abfd->flags & DYNAMIC));
@@ -7818,12 +7756,12 @@ bfd_elf32_arm_get_bfd_for_interworking (
   BFD_ASSERT (globals != NULL);
 
   if (globals->bfd_of_glue_owner != NULL)
-    return TRUE;
+    return true;
 
   /* Save the bfd for later use.  */
   globals->bfd_of_glue_owner = abfd;
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -7846,7 +7784,7 @@ check_use_blx (struct elf32_arm_link_has
     }
 }
 
-bfd_boolean
+bool
 bfd_elf32_arm_process_before_allocation (bfd *abfd,
 					 struct bfd_link_info *link_info)
 {
@@ -7861,7 +7799,7 @@ bfd_elf32_arm_process_before_allocation
   /* If we are only performing a partial link do not bother
      to construct any glue.  */
   if (bfd_link_relocatable (link_info))
-    return TRUE;
+    return true;
 
   /* 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.  */
@@ -7874,34 +7812,35 @@ bfd_elf32_arm_process_before_allocation
     {
       _bfd_error_handler (_("%pB: BE8 images only valid in big-endian mode"),
 			  abfd);
-      return FALSE;
+      return false;
     }
 
   /* PR 5398: If we have not decided to include any loadable sections in
      the output then we will not have a glue owner bfd.  This is OK, it
      just means that there is nothing else for us to do here.  */
   if (globals->bfd_of_glue_owner == NULL)
-    return TRUE;
+    return true;
 
   /* Rummage around all the relocs and map the glue vectors.  */
   sec = abfd->sections;
 
   if (sec == NULL)
-    return TRUE;
+    return true;
 
   for (; sec != NULL; sec = sec->next)
     {
       if (sec->reloc_count == 0)
 	continue;
 
-      if ((sec->flags & SEC_EXCLUDE) != 0)
+      if ((sec->flags & SEC_EXCLUDE) != 0
+	  || (sec->flags & SEC_HAS_CONTENTS) == 0)
 	continue;
 
       symtab_hdr = & elf_symtab_hdr (abfd);
 
       /* Load the relocs.  */
       internal_relocs
-	= _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL, FALSE);
+	= _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL, false);
 
       if (internal_relocs == NULL)
 	goto error_return;
@@ -7983,28 +7922,24 @@ 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;
+  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;
+  return false;
 }
 #endif
 
@@ -8156,7 +8091,7 @@ enum bfd_arm_vfp11_pipe
    encounter VFP3 instructions, so we allow the full range for DP registers.  */
 
 static unsigned int
-bfd_arm_vfp11_regno (unsigned int insn, bfd_boolean is_double, unsigned int rx,
+bfd_arm_vfp11_regno (unsigned int insn, bool is_double, unsigned int rx,
 		     unsigned int x)
 {
   if (is_double)
@@ -8179,7 +8114,7 @@ bfd_arm_vfp11_write_mask (unsigned int *
 
 /* Return TRUE if WMASK overwrites anything in REGS.  */
 
-static bfd_boolean
+static bool
 bfd_arm_vfp11_antidependency (unsigned int wmask, int *regs, int numregs)
 {
   int i;
@@ -8189,7 +8124,7 @@ bfd_arm_vfp11_antidependency (unsigned i
       unsigned int reg = regs[i];
 
       if (reg < 32 && (wmask & (1 << reg)) != 0)
-	return TRUE;
+	return true;
 
       reg -= 32;
 
@@ -8197,10 +8132,10 @@ bfd_arm_vfp11_antidependency (unsigned i
 	continue;
 
       if ((wmask & (3 << (reg * 2))) != 0)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* In this function, we're interested in two things: finding input registers
@@ -8216,7 +8151,7 @@ bfd_arm_vfp11_insn_decode (unsigned int
 			   int *numregs)
 {
   enum bfd_arm_vfp11_pipe vpipe = VFP11_BAD;
-  bfd_boolean is_double = ((insn & 0xf00) == 0xb00) ? 1 : 0;
+  bool is_double = ((insn & 0xf00) == 0xb00) ? 1 : 0;
 
   if ((insn & 0x0f000e10) == 0x0e000a00)  /* A data-processing insn.  */
     {
@@ -8404,7 +8339,7 @@ static int elf32_arm_compare_mapping (co
    (available from ARM) for details of the erratum.  A short version is
    described in ld.texinfo.  */
 
-bfd_boolean
+bool
 bfd_elf32_arm_vfp11_erratum_scan (bfd *abfd, struct bfd_link_info *link_info)
 {
   asection *sec;
@@ -8415,7 +8350,7 @@ bfd_elf32_arm_vfp11_erratum_scan (bfd *a
   int use_vector = (globals->vfp11_fix == BFD_ARM_VFP11_FIX_VECTOR);
 
   if (globals == NULL)
-    return FALSE;
+    return false;
 
   /* We use a simple FSM to match troublesome VFP11 instruction sequences.
      The states transition as follows:
@@ -8446,21 +8381,21 @@ bfd_elf32_arm_vfp11_erratum_scan (bfd *a
   /* If we are only performing a partial link do not bother
      to construct any glue.  */
   if (bfd_link_relocatable (link_info))
-    return TRUE;
+    return true;
 
   /* Skip if this bfd does not correspond to an ELF image.  */
   if (! is_arm_elf (abfd))
-    return TRUE;
+    return true;
 
   /* We should have chosen a fix type by the time we get here.  */
   BFD_ASSERT (globals->vfp11_fix != BFD_ARM_VFP11_FIX_DEFAULT);
 
   if (globals->vfp11_fix == BFD_ARM_VFP11_FIX_NONE)
-    return TRUE;
+    return true;
 
   /* Skip this BFD if it corresponds to an executable or dynamic object.  */
   if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
-    return TRUE;
+    return true;
 
   for (sec = abfd->sections; sec != NULL; sec = sec->next)
     {
@@ -8604,20 +8539,18 @@ 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;
+  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;
+  return false;
 }
 
 /* Find virtual-memory addresses for VFP11 erratum veneers and return locations
@@ -8644,6 +8577,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)
     {
@@ -8664,7 +8598,7 @@ bfd_elf32_arm_vfp11_fix_veneer_locations
 		       errnode->u.b.veneer->u.v.id);
 
 	      myh = elf_link_hash_lookup
-		(&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
+		(&(globals)->root, tmp_name, false, false, true);
 
 	      if (myh == NULL)
 		_bfd_error_handler (_("%pB: unable to find %s veneer `%s'"),
@@ -8684,7 +8618,7 @@ bfd_elf32_arm_vfp11_fix_veneer_locations
 		       errnode->u.v.id);
 
 	      myh = elf_link_hash_lookup
-		(&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
+		(&(globals)->root, tmp_name, false, false, true);
 
 	      if (myh == NULL)
 		_bfd_error_handler (_("%pB: unable to find %s veneer `%s'"),
@@ -8731,6 +8665,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)
     {
@@ -8750,7 +8685,7 @@ bfd_elf32_arm_stm32l4xx_fix_veneer_locat
 		       errnode->u.b.veneer->u.v.id);
 
 	      myh = elf_link_hash_lookup
-		(&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
+		(&(globals)->root, tmp_name, false, false, true);
 
 	      if (myh == NULL)
 		_bfd_error_handler (_("%pB: unable to find %s veneer `%s'"),
@@ -8769,7 +8704,7 @@ bfd_elf32_arm_stm32l4xx_fix_veneer_locat
 		       errnode->u.v.id);
 
 	      myh = elf_link_hash_lookup
-		(&(globals)->root, tmp_name, FALSE, FALSE, TRUE);
+		(&(globals)->root, tmp_name, false, false, true);
 
 	      if (myh == NULL)
 		_bfd_error_handler (_("%pB: unable to find %s veneer `%s'"),
@@ -8791,7 +8726,7 @@ bfd_elf32_arm_stm32l4xx_fix_veneer_locat
   free (tmp_name);
 }
 
-static inline bfd_boolean
+static inline bool
 is_thumb2_ldmia (const insn32 insn)
 {
   /* Encoding T2: LDM<c>.W <Rn>{!},<registers>
@@ -8799,7 +8734,7 @@ is_thumb2_ldmia (const insn32 insn)
   return (insn & 0xffd02000) == 0xe8900000;
 }
 
-static inline bfd_boolean
+static inline bool
 is_thumb2_ldmdb (const insn32 insn)
 {
   /* Encoding T1: LDMDB<c> <Rn>{!},<registers>
@@ -8807,7 +8742,7 @@ is_thumb2_ldmdb (const insn32 insn)
   return (insn & 0xffd02000) == 0xe9100000;
 }
 
-static inline bfd_boolean
+static inline bool
 is_thumb2_vldm (const insn32 insn)
 {
   /* A6.5 Extension register load or store instruction
@@ -8839,7 +8774,7 @@ is_thumb2_vldm (const insn32 insn)
    . replaces only if > 8-word accesses
    . or (testing purposes only) replaces all accesses.  */
 
-static bfd_boolean
+static bool
 stm32l4xx_need_create_replacing_stub (const insn32 insn,
 				      bfd_arm_stm32l4xx_fix stm32l4xx_fix)
 {
@@ -8854,15 +8789,15 @@ stm32l4xx_need_create_replacing_stub (co
 
   /* DEFAULT mode accounts for the real bug condition situation,
      ALL mode inserts stubs for each LDM/VLDM instruction (testing).  */
-  return
-    (stm32l4xx_fix == BFD_ARM_STM32L4XX_FIX_DEFAULT) ? nb_words > 8 :
-    (stm32l4xx_fix == BFD_ARM_STM32L4XX_FIX_ALL) ? TRUE : FALSE;
+  return (stm32l4xx_fix == BFD_ARM_STM32L4XX_FIX_DEFAULT
+	  ? nb_words > 8
+	  : stm32l4xx_fix == BFD_ARM_STM32L4XX_FIX_ALL);
 }
 
 /* Look for potentially-troublesome code sequences which might trigger
    the STM STM32L4XX erratum.  */
 
-bfd_boolean
+bool
 bfd_elf32_arm_stm32l4xx_erratum_scan (bfd *abfd,
 				      struct bfd_link_info *link_info)
 {
@@ -8871,23 +8806,23 @@ bfd_elf32_arm_stm32l4xx_erratum_scan (bf
   struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (link_info);
 
   if (globals == NULL)
-    return FALSE;
+    return false;
 
   /* If we are only performing a partial link do not bother
      to construct any glue.  */
   if (bfd_link_relocatable (link_info))
-    return TRUE;
+    return true;
 
   /* Skip if this bfd does not correspond to an ELF image.  */
   if (! is_arm_elf (abfd))
-    return TRUE;
+    return true;
 
   if (globals->stm32l4xx_fix == BFD_ARM_STM32L4XX_FIX_NONE)
-    return TRUE;
+    return true;
 
   /* Skip this BFD if it corresponds to an executable or dynamic object.  */
   if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
-    return TRUE;
+    return true;
 
   for (sec = abfd->sections; sec != NULL; sec = sec->next)
     {
@@ -8934,17 +8869,17 @@ bfd_elf32_arm_stm32l4xx_erratum_scan (bf
 	  for (i = span_start; i < span_end;)
 	    {
 	      unsigned int insn = bfd_get_16 (abfd, &contents[i]);
-	      bfd_boolean insn_32bit = FALSE;
-	      bfd_boolean is_ldm = FALSE;
-	      bfd_boolean is_vldm = FALSE;
-	      bfd_boolean is_not_last_in_it_block = FALSE;
+	      bool insn_32bit = false;
+	      bool is_ldm = false;
+	      bool is_vldm = false;
+	      bool is_not_last_in_it_block = false;
 
 	      /* The first 16-bits of all 32-bit thumb2 instructions start
 		 with opcode[15..13]=0b111 and the encoded op1 can be anything
 		 except opcode[12..11]!=0b00.
 		 See 32-bit Thumb instruction encoding.  */
 	      if ((insn & 0xe000) == 0xe000 && (insn & 0x1800) != 0x0000)
-		insn_32bit = TRUE;
+		insn_32bit = true;
 
 	      /* Compute the predicate that tells if the instruction
 		 is concerned by the IT block
@@ -9022,7 +8957,7 @@ bfd_elf32_arm_stm32l4xx_erratum_scan (bf
 		     There can be no nested IT blocks so an IT block
 		     is naturally a new one for which it is worth
 		     computing its size.  */
-		  bfd_boolean is_newitblock = ((insn & 0xff00) == 0xbf00)
+		  bool is_newitblock = ((insn & 0xff00) == 0xbf00)
 		    && ((insn & 0x000f) != 0x0000);
 		  /* If we have a new IT block we compute its size.  */
 		  if (is_newitblock)
@@ -9039,20 +8974,18 @@ 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;
+  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;
+  return false;
 }
 
 /* Set target relocation values needed during linking.  */
@@ -9150,7 +9083,7 @@ elf32_thumb_to_arm_stub (struct bfd_link
 
   myh = find_thumb_glue (info, name, error_message);
   if (myh == NULL)
-    return FALSE;
+    return false;
 
   globals = elf32_arm_hash_table (info);
   BFD_ASSERT (globals != NULL);
@@ -9176,7 +9109,7 @@ elf32_thumb_to_arm_stub (struct bfd_link
 	       " first occurrence: %pB: %s call to %s"),
 	     sym_sec->owner, name, input_bfd, "Thumb", "ARM");
 
-	  return FALSE;
+	  return false;
 	}
 
       --my_offset;
@@ -9225,7 +9158,7 @@ elf32_thumb_to_arm_stub (struct bfd_link
 
   insert_thumb_branch (input_bfd, ret_offset, hit_data - input_section->vma);
 
-  return TRUE;
+  return true;
 }
 
 /* Populate an Arm to Thumb stub.  Returns the stub symbol.  */
@@ -9271,7 +9204,6 @@ elf32_arm_create_thumb_stub (struct bfd_
       myh->root.u.def.value = my_offset;
 
       if (bfd_link_pic (info)
-	  || globals->root.is_relocatable_executable
 	  || globals->pic_veneer)
 	{
 	  /* For relocatable objects we can't use absolute addresses,
@@ -9358,7 +9290,7 @@ elf32_arm_to_thumb_stub (struct bfd_link
   myh = elf32_arm_create_thumb_stub (info, name, input_bfd, output_bfd,
 				     sym_sec, val, s, error_message);
   if (!myh)
-    return FALSE;
+    return false;
 
   my_offset = myh->root.u.def.value;
   tmp = bfd_get_32 (input_bfd, hit_data);
@@ -9377,12 +9309,12 @@ elf32_arm_to_thumb_stub (struct bfd_link
 
   bfd_put_32 (output_bfd, (bfd_vma) tmp, hit_data - input_section->vma);
 
-  return TRUE;
+  return true;
 }
 
 /* Populate Arm stub for an exported Thumb function.  */
 
-static bfd_boolean
+static bool
 elf32_arm_to_thumb_export_stub (struct elf_link_hash_entry *h, void * inf)
 {
   struct bfd_link_info * info = (struct bfd_link_info *) inf;
@@ -9397,7 +9329,7 @@ elf32_arm_to_thumb_export_stub (struct e
   eh = elf32_arm_hash_entry (h);
   /* Allocate stubs for exported Thumb functions on v4t.  */
   if (eh->export_glue == NULL)
-    return TRUE;
+    return true;
 
   globals = elf32_arm_hash_table (info);
   BFD_ASSERT (globals != NULL);
@@ -9421,7 +9353,7 @@ elf32_arm_to_thumb_export_stub (struct e
 				     globals->obfd, sec, val, s,
 				     &error_message);
   BFD_ASSERT (myh);
-  return TRUE;
+  return true;
 }
 
 /* Populate ARMv4 BX veneers.  Returns the absolute adress of the veneer.  */
@@ -9548,7 +9480,7 @@ elf32_arm_add_dynreloc (bfd *output_bfd,
 
 static void
 elf32_arm_allocate_plt_entry (struct bfd_link_info *info,
-			      bfd_boolean is_iplt_entry,
+			      bool is_iplt_entry,
 			      union gotplt_union *root_plt,
 			      struct arm_plt_info *arm_plt)
 {
@@ -9563,10 +9495,6 @@ elf32_arm_allocate_plt_entry (struct bfd
       splt = htab->root.iplt;
       sgotplt = htab->root.igotplt;
 
-      /* NaCl uses a special first entry in .iplt too.  */
-      if (htab->nacl_p && splt->size == 0)
-	splt->size += htab->plt_header_size;
-
       /* Allocate room for an R_ARM_IRELATIVE relocation in .rel.iplt.  */
       elf32_arm_allocate_irelocs (info, htab->root.irelplt, 1);
     }
@@ -9606,32 +9534,17 @@ elf32_arm_allocate_plt_entry (struct bfd
   root_plt->offset = splt->size;
   splt->size += htab->plt_entry_size;
 
-  if (!htab->symbian_p)
-    {
-      /* We also need to make an entry in the .got.plt section, which
-	 will be placed in the .got section by the linker script.  */
-      if (is_iplt_entry)
-	arm_plt->got_offset = sgotplt->size;
-      else
-	arm_plt->got_offset = sgotplt->size - 8 * htab->num_tls_desc;
-      if (htab->fdpic_p)
-	/* Function descriptor takes 64 bits in GOT.  */
-	sgotplt->size += 8;
-      else
-	sgotplt->size += 4;
-    }
-}
-
-static bfd_vma
-arm_movw_immediate (bfd_vma value)
-{
-  return (value & 0x00000fff) | ((value & 0x0000f000) << 4);
-}
-
-static bfd_vma
-arm_movt_immediate (bfd_vma value)
-{
-  return ((value & 0x0fff0000) >> 16) | ((value & 0xf0000000) >> 12);
+  /* We also need to make an entry in the .got.plt section, which
+     will be placed in the .got section by the linker script.  */
+  if (is_iplt_entry)
+    arm_plt->got_offset = sgotplt->size;
+  else
+    arm_plt->got_offset = sgotplt->size - 8 * htab->num_tls_desc;
+  if (htab->fdpic_p)
+    /* Function descriptor takes 64 bits in GOT.  */
+    sgotplt->size += 8;
+  else
+    sgotplt->size += 4;
 }
 
 /* Fill in a PLT entry and its associated GOT slot.  If DYNINDX == -1,
@@ -9645,7 +9558,7 @@ arm_movt_immediate (bfd_vma value)
 
    Returns FALSE if there was a problem.  */
 
-static bfd_boolean
+static bool
 elf32_arm_populate_plt_entry (bfd *output_bfd, struct bfd_link_info *info,
 			      union gotplt_union *root_plt,
 			      struct arm_plt_info *arm_plt,
@@ -9658,7 +9571,6 @@ elf32_arm_populate_plt_entry (bfd *outpu
   bfd_byte *loc;
   bfd_vma plt_index;
   Elf_Internal_Rela rel;
-  bfd_vma plt_header_size;
   bfd_vma got_header_size;
 
   htab = elf32_arm_hash_table (info);
@@ -9673,7 +9585,6 @@ elf32_arm_populate_plt_entry (bfd *outpu
       /* There are no reserved entries in .igot.plt, and no special
 	 first entry in .iplt.  */
       got_header_size = 0;
-      plt_header_size = 0;
     }
   else
     {
@@ -9682,342 +9593,281 @@ elf32_arm_populate_plt_entry (bfd *outpu
       srel = htab->root.srelplt;
 
       got_header_size = get_elf_backend_data (output_bfd)->got_header_size;
-      plt_header_size = htab->plt_header_size;
     }
   BFD_ASSERT (splt != NULL && srel != NULL);
 
-  /* Fill in the entry in the procedure linkage table.  */
-  if (htab->symbian_p)
-    {
-      BFD_ASSERT (dynindx >= 0);
-      put_arm_insn (htab, output_bfd,
-		    elf32_arm_symbian_plt_entry[0],
-		    splt->contents + root_plt->offset);
-      bfd_put_32 (output_bfd,
-		  elf32_arm_symbian_plt_entry[1],
-		  splt->contents + root_plt->offset + 4);
-
-      /* Fill in the entry in the .rel.plt section.  */
-      rel.r_offset = (splt->output_section->vma
-		      + splt->output_offset
-		      + root_plt->offset + 4);
-      rel.r_info = ELF32_R_INFO (dynindx, R_ARM_GLOB_DAT);
-
-      /* Get the index in the procedure linkage table which
-	 corresponds to this symbol.  This is the index of this symbol
-	 in all the symbols for which we are making plt entries.  The
-	 first entry in the procedure linkage table is reserved.  */
-      plt_index = ((root_plt->offset - plt_header_size)
-		   / htab->plt_entry_size);
-    }
+  bfd_vma got_offset, got_address, plt_address;
+  bfd_vma got_displacement, initial_got_entry;
+  bfd_byte * ptr;
+
+  BFD_ASSERT (sgot != NULL);
+
+  /* Get the offset into the .(i)got.plt table of the entry that
+     corresponds to this function.  */
+  got_offset = (arm_plt->got_offset & -2);
+
+  /* Get the index in the procedure linkage table which
+     corresponds to this symbol.  This is the index of this symbol
+     in all the symbols for which we are making plt entries.
+     After the reserved .got.plt entries, all symbols appear in
+     the same order as in .plt.  */
+  if (htab->fdpic_p)
+    /* Function descriptor takes 8 bytes.  */
+    plt_index = (got_offset - got_header_size) / 8;
   else
+    plt_index = (got_offset - got_header_size) / 4;
+
+  /* Calculate the address of the GOT entry.  */
+  got_address = (sgot->output_section->vma
+		 + sgot->output_offset
+		 + got_offset);
+
+  /* ...and the address of the PLT entry.  */
+  plt_address = (splt->output_section->vma
+		 + splt->output_offset
+		 + root_plt->offset);
+
+  ptr = splt->contents + root_plt->offset;
+  if (htab->root.target_os == is_vxworks && bfd_link_pic (info))
+    {
+      unsigned int i;
+      bfd_vma val;
+
+      for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4)
+	{
+	  val = elf32_arm_vxworks_shared_plt_entry[i];
+	  if (i == 2)
+	    val |= got_address - sgot->output_section->vma;
+	  if (i == 5)
+	    val |= plt_index * RELOC_SIZE (htab);
+	  if (i == 2 || i == 5)
+	    bfd_put_32 (output_bfd, val, ptr);
+	  else
+	    put_arm_insn (htab, output_bfd, val, ptr);
+	}
+    }
+  else if (htab->root.target_os == is_vxworks)
     {
-      bfd_vma got_offset, got_address, plt_address;
-      bfd_vma got_displacement, initial_got_entry;
-      bfd_byte * ptr;
+      unsigned int i;
+      bfd_vma val;
 
-      BFD_ASSERT (sgot != NULL);
+      for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4)
+	{
+	  val = elf32_arm_vxworks_exec_plt_entry[i];
+	  if (i == 2)
+	    val |= got_address;
+	  if (i == 4)
+	    val |= 0xffffff & -((root_plt->offset + i * 4 + 8) >> 2);
+	  if (i == 5)
+	    val |= plt_index * RELOC_SIZE (htab);
+	  if (i == 2 || i == 5)
+	    bfd_put_32 (output_bfd, val, ptr);
+	  else
+	    put_arm_insn (htab, output_bfd, val, ptr);
+	}
 
-      /* Get the offset into the .(i)got.plt table of the entry that
-	 corresponds to this function.  */
-      got_offset = (arm_plt->got_offset & -2);
-
-      /* Get the index in the procedure linkage table which
-	 corresponds to this symbol.  This is the index of this symbol
-	 in all the symbols for which we are making plt entries.
-	 After the reserved .got.plt entries, all symbols appear in
-	 the same order as in .plt.  */
-      if (htab->fdpic_p)
-	/* Function descriptor takes 8 bytes.  */
-	plt_index = (got_offset - got_header_size) / 8;
-      else
-	plt_index = (got_offset - got_header_size) / 4;
+      loc = (htab->srelplt2->contents
+	     + (plt_index * 2 + 1) * RELOC_SIZE (htab));
 
-      /* Calculate the address of the GOT entry.  */
-      got_address = (sgot->output_section->vma
-		     + sgot->output_offset
-		     + got_offset);
+      /* Create the .rela.plt.unloaded R_ARM_ABS32 relocation
+	 referencing the GOT for this PLT entry.  */
+      rel.r_offset = plt_address + 8;
+      rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_ARM_ABS32);
+      rel.r_addend = got_offset;
+      SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
+      loc += RELOC_SIZE (htab);
 
-      /* ...and the address of the PLT entry.  */
-      plt_address = (splt->output_section->vma
-		     + splt->output_offset
-		     + root_plt->offset);
+      /* Create the R_ARM_ABS32 relocation referencing the
+	 beginning of the PLT for this GOT entry.  */
+      rel.r_offset = got_address;
+      rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_ARM_ABS32);
+      rel.r_addend = 0;
+      SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
+    }
+  else if (htab->fdpic_p)
+    {
+      const bfd_vma *plt_entry = using_thumb_only (htab)
+	? elf32_arm_fdpic_thumb_plt_entry
+	: elf32_arm_fdpic_plt_entry;
+
+      /* Fill-up Thumb stub if needed.  */
+      if (elf32_arm_plt_needs_thumb_stub_p (info, arm_plt))
+	{
+	  put_thumb_insn (htab, output_bfd,
+			  elf32_arm_plt_thumb_stub[0], ptr - 4);
+	  put_thumb_insn (htab, output_bfd,
+			  elf32_arm_plt_thumb_stub[1], ptr - 2);
+	}
+      /* As we are using 32 bit instructions even for the Thumb
+	 version, we have to use 'put_arm_insn' instead of
+	 'put_thumb_insn'.  */
+      put_arm_insn (htab, output_bfd, plt_entry[0], ptr + 0);
+      put_arm_insn (htab, output_bfd, plt_entry[1], ptr + 4);
+      put_arm_insn (htab, output_bfd, plt_entry[2], ptr + 8);
+      put_arm_insn (htab, output_bfd, plt_entry[3], ptr + 12);
+      bfd_put_32 (output_bfd, got_offset, ptr + 16);
 
-      ptr = splt->contents + root_plt->offset;
-      if (htab->vxworks_p && bfd_link_pic (info))
+      if (!(info->flags & DF_BIND_NOW))
 	{
-	  unsigned int i;
-	  bfd_vma val;
-
-	  for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4)
-	    {
-	      val = elf32_arm_vxworks_shared_plt_entry[i];
-	      if (i == 2)
-		val |= got_address - sgot->output_section->vma;
-	      if (i == 5)
-		val |= plt_index * RELOC_SIZE (htab);
-	      if (i == 2 || i == 5)
-		bfd_put_32 (output_bfd, val, ptr);
-	      else
-		put_arm_insn (htab, output_bfd, val, ptr);
-	    }
+	  /* funcdesc_value_reloc_offset.  */
+	  bfd_put_32 (output_bfd,
+		      htab->root.srelplt->reloc_count * RELOC_SIZE (htab),
+		      ptr + 20);
+	  put_arm_insn (htab, output_bfd, plt_entry[6], ptr + 24);
+	  put_arm_insn (htab, output_bfd, plt_entry[7], ptr + 28);
+	  put_arm_insn (htab, output_bfd, plt_entry[8], ptr + 32);
+	  put_arm_insn (htab, output_bfd, plt_entry[9], ptr + 36);
 	}
-      else if (htab->vxworks_p)
+    }
+  else if (using_thumb_only (htab))
+    {
+      /* PR ld/16017: Generate thumb only PLT entries.  */
+      if (!using_thumb2 (htab))
 	{
-	  unsigned int i;
-	  bfd_vma val;
-
-	  for (i = 0; i != htab->plt_entry_size / 4; i++, ptr += 4)
-	    {
-	      val = elf32_arm_vxworks_exec_plt_entry[i];
-	      if (i == 2)
-		val |= got_address;
-	      if (i == 4)
-		val |= 0xffffff & -((root_plt->offset + i * 4 + 8) >> 2);
-	      if (i == 5)
-		val |= plt_index * RELOC_SIZE (htab);
-	      if (i == 2 || i == 5)
-		bfd_put_32 (output_bfd, val, ptr);
-	      else
-		put_arm_insn (htab, output_bfd, val, ptr);
-	    }
-
-	  loc = (htab->srelplt2->contents
-		 + (plt_index * 2 + 1) * RELOC_SIZE (htab));
+	  /* FIXME: We ought to be able to generate thumb-1 PLT
+	     instructions...  */
+	  _bfd_error_handler (_("%pB: warning: thumb-1 mode PLT generation not currently supported"),
+			      output_bfd);
+	  return false;
+	}
+
+      /* Calculate the displacement between the PLT slot and the entry in
+	 the GOT.  The 12-byte offset accounts for the value produced by
+	 adding to pc in the 3rd instruction of the PLT stub.  */
+      got_displacement = got_address - (plt_address + 12);
 
-	  /* Create the .rela.plt.unloaded R_ARM_ABS32 relocation
-	     referencing the GOT for this PLT entry.  */
-	  rel.r_offset = plt_address + 8;
-	  rel.r_info = ELF32_R_INFO (htab->root.hgot->indx, R_ARM_ABS32);
-	  rel.r_addend = got_offset;
-	  SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
-	  loc += RELOC_SIZE (htab);
+      /* As we are using 32 bit instructions we have to use 'put_arm_insn'
+	 instead of 'put_thumb_insn'.  */
+      put_arm_insn (htab, output_bfd,
+		    elf32_thumb2_plt_entry[0]
+		    | ((got_displacement & 0x000000ff) << 16)
+		    | ((got_displacement & 0x00000700) << 20)
+		    | ((got_displacement & 0x00000800) >>  1)
+		    | ((got_displacement & 0x0000f000) >> 12),
+		    ptr + 0);
+      put_arm_insn (htab, output_bfd,
+		    elf32_thumb2_plt_entry[1]
+		    | ((got_displacement & 0x00ff0000)      )
+		    | ((got_displacement & 0x07000000) <<  4)
+		    | ((got_displacement & 0x08000000) >> 17)
+		    | ((got_displacement & 0xf0000000) >> 28),
+		    ptr + 4);
+      put_arm_insn (htab, output_bfd,
+		    elf32_thumb2_plt_entry[2],
+		    ptr + 8);
+      put_arm_insn (htab, output_bfd,
+		    elf32_thumb2_plt_entry[3],
+		    ptr + 12);
+    }
+  else
+    {
+      /* Calculate the displacement between the PLT slot and the
+	 entry in the GOT.  The eight-byte offset accounts for the
+	 value produced by adding to pc in the first instruction
+	 of the PLT stub.  */
+      got_displacement = got_address - (plt_address + 8);
 
-	  /* Create the R_ARM_ABS32 relocation referencing the
-	     beginning of the PLT for this GOT entry.  */
-	  rel.r_offset = got_address;
-	  rel.r_info = ELF32_R_INFO (htab->root.hplt->indx, R_ARM_ABS32);
-	  rel.r_addend = 0;
-	  SWAP_RELOC_OUT (htab) (output_bfd, &rel, loc);
-	}
-      else if (htab->nacl_p)
+      if (elf32_arm_plt_needs_thumb_stub_p (info, arm_plt))
 	{
-	  /* Calculate the displacement between the PLT slot and the
-	     common tail that's part of the special initial PLT slot.  */
-	  int32_t tail_displacement
-	    = ((splt->output_section->vma + splt->output_offset
-		+ ARM_NACL_PLT_TAIL_OFFSET)
-	       - (plt_address + htab->plt_entry_size + 4));
-	  BFD_ASSERT ((tail_displacement & 3) == 0);
-	  tail_displacement >>= 2;
-
-	  BFD_ASSERT ((tail_displacement & 0xff000000) == 0
-		      || (-tail_displacement & 0xff000000) == 0);
-
-	  /* Calculate the displacement between the PLT slot and the entry
-	     in the GOT.  The offset accounts for the value produced by
-	     adding to pc in the penultimate instruction of the PLT stub.  */
-	  got_displacement = (got_address
-			      - (plt_address + htab->plt_entry_size));
+	  put_thumb_insn (htab, output_bfd,
+			  elf32_arm_plt_thumb_stub[0], ptr - 4);
+	  put_thumb_insn (htab, output_bfd,
+			  elf32_arm_plt_thumb_stub[1], ptr - 2);
+	}
 
-	  /* NaCl does not support interworking at all.  */
-	  BFD_ASSERT (!elf32_arm_plt_needs_thumb_stub_p (info, arm_plt));
+      if (!elf32_arm_use_long_plt_entry)
+	{
+	  BFD_ASSERT ((got_displacement & 0xf0000000) == 0);
 
 	  put_arm_insn (htab, output_bfd,
-			elf32_arm_nacl_plt_entry[0]
-			| arm_movw_immediate (got_displacement),
+			elf32_arm_plt_entry_short[0]
+			| ((got_displacement & 0x0ff00000) >> 20),
 			ptr + 0);
 	  put_arm_insn (htab, output_bfd,
-			elf32_arm_nacl_plt_entry[1]
-			| arm_movt_immediate (got_displacement),
-			ptr + 4);
+			elf32_arm_plt_entry_short[1]
+			| ((got_displacement & 0x000ff000) >> 12),
+			ptr+ 4);
 	  put_arm_insn (htab, output_bfd,
-			elf32_arm_nacl_plt_entry[2],
+			elf32_arm_plt_entry_short[2]
+			| (got_displacement & 0x00000fff),
 			ptr + 8);
-	  put_arm_insn (htab, output_bfd,
-			elf32_arm_nacl_plt_entry[3]
-			| (tail_displacement & 0x00ffffff),
-			ptr + 12);
+#ifdef FOUR_WORD_PLT
+	  bfd_put_32 (output_bfd, elf32_arm_plt_entry_short[3], ptr + 12);
+#endif
 	}
-      else if (htab->fdpic_p)
+      else
 	{
-	  const bfd_vma *plt_entry = using_thumb_only(htab)
-	    ? elf32_arm_fdpic_thumb_plt_entry
-	    : elf32_arm_fdpic_plt_entry;
-
-	  /* Fill-up Thumb stub if needed.  */
-	  if (elf32_arm_plt_needs_thumb_stub_p (info, arm_plt))
-	    {
-	      put_thumb_insn (htab, output_bfd,
-			      elf32_arm_plt_thumb_stub[0], ptr - 4);
-	      put_thumb_insn (htab, output_bfd,
-			      elf32_arm_plt_thumb_stub[1], ptr - 2);
-	    }
-	  /* As we are using 32 bit instructions even for the Thumb
-	     version, we have to use 'put_arm_insn' instead of
-	     'put_thumb_insn'.  */
-	  put_arm_insn(htab, output_bfd, plt_entry[0], ptr + 0);
-	  put_arm_insn(htab, output_bfd, plt_entry[1], ptr + 4);
-	  put_arm_insn(htab, output_bfd, plt_entry[2], ptr + 8);
-	  put_arm_insn(htab, output_bfd, plt_entry[3], ptr + 12);
-	  bfd_put_32 (output_bfd, got_offset, ptr + 16);
-
-	  if (!(info->flags & DF_BIND_NOW))
-	    {
-	      /* funcdesc_value_reloc_offset.  */
-	      bfd_put_32 (output_bfd,
-			  htab->root.srelplt->reloc_count * RELOC_SIZE (htab),
-			  ptr + 20);
-	      put_arm_insn(htab, output_bfd, plt_entry[6], ptr + 24);
-	      put_arm_insn(htab, output_bfd, plt_entry[7], ptr + 28);
-	      put_arm_insn(htab, output_bfd, plt_entry[8], ptr + 32);
-	      put_arm_insn(htab, output_bfd, plt_entry[9], ptr + 36);
-	    }
-	}
-      else if (using_thumb_only (htab))
-	{
-	  /* PR ld/16017: Generate thumb only PLT entries.  */
-	  if (!using_thumb2 (htab))
-	    {
-	      /* FIXME: We ought to be able to generate thumb-1 PLT
-		 instructions...  */
-	      _bfd_error_handler (_("%pB: warning: thumb-1 mode PLT generation not currently supported"),
-				  output_bfd);
-	      return FALSE;
-	    }
-
-	  /* Calculate the displacement between the PLT slot and the entry in
-	     the GOT.  The 12-byte offset accounts for the value produced by
-	     adding to pc in the 3rd instruction of the PLT stub.  */
-	  got_displacement = got_address - (plt_address + 12);
-
-	  /* As we are using 32 bit instructions we have to use 'put_arm_insn'
-	     instead of 'put_thumb_insn'.  */
 	  put_arm_insn (htab, output_bfd,
-			elf32_thumb2_plt_entry[0]
-			| ((got_displacement & 0x000000ff) << 16)
-			| ((got_displacement & 0x00000700) << 20)
-			| ((got_displacement & 0x00000800) >>  1)
-			| ((got_displacement & 0x0000f000) >> 12),
+			elf32_arm_plt_entry_long[0]
+			| ((got_displacement & 0xf0000000) >> 28),
 			ptr + 0);
 	  put_arm_insn (htab, output_bfd,
-			elf32_thumb2_plt_entry[1]
-			| ((got_displacement & 0x00ff0000)      )
-			| ((got_displacement & 0x07000000) <<  4)
-			| ((got_displacement & 0x08000000) >> 17)
-			| ((got_displacement & 0xf0000000) >> 28),
+			elf32_arm_plt_entry_long[1]
+			| ((got_displacement & 0x0ff00000) >> 20),
 			ptr + 4);
 	  put_arm_insn (htab, output_bfd,
-			elf32_thumb2_plt_entry[2],
-			ptr + 8);
+			elf32_arm_plt_entry_long[2]
+			| ((got_displacement & 0x000ff000) >> 12),
+			ptr+ 8);
 	  put_arm_insn (htab, output_bfd,
-			elf32_thumb2_plt_entry[3],
+			elf32_arm_plt_entry_long[3]
+			| (got_displacement & 0x00000fff),
 			ptr + 12);
 	}
-      else
-	{
-	  /* Calculate the displacement between the PLT slot and the
-	     entry in the GOT.  The eight-byte offset accounts for the
-	     value produced by adding to pc in the first instruction
-	     of the PLT stub.  */
-	  got_displacement = got_address - (plt_address + 8);
-
-	  if (elf32_arm_plt_needs_thumb_stub_p (info, arm_plt))
-	    {
-	      put_thumb_insn (htab, output_bfd,
-			      elf32_arm_plt_thumb_stub[0], ptr - 4);
-	      put_thumb_insn (htab, output_bfd,
-			      elf32_arm_plt_thumb_stub[1], ptr - 2);
-	    }
-
-	  if (!elf32_arm_use_long_plt_entry)
-	    {
-	      BFD_ASSERT ((got_displacement & 0xf0000000) == 0);
-
-	      put_arm_insn (htab, output_bfd,
-			    elf32_arm_plt_entry_short[0]
-			    | ((got_displacement & 0x0ff00000) >> 20),
-			    ptr + 0);
-	      put_arm_insn (htab, output_bfd,
-			    elf32_arm_plt_entry_short[1]
-			    | ((got_displacement & 0x000ff000) >> 12),
-			    ptr+ 4);
-	      put_arm_insn (htab, output_bfd,
-			    elf32_arm_plt_entry_short[2]
-			    | (got_displacement & 0x00000fff),
-			    ptr + 8);
-#ifdef FOUR_WORD_PLT
-	      bfd_put_32 (output_bfd, elf32_arm_plt_entry_short[3], ptr + 12);
-#endif
-	    }
-	  else
-	    {
-	      put_arm_insn (htab, output_bfd,
-			    elf32_arm_plt_entry_long[0]
-			    | ((got_displacement & 0xf0000000) >> 28),
-			    ptr + 0);
-	      put_arm_insn (htab, output_bfd,
-			    elf32_arm_plt_entry_long[1]
-			    | ((got_displacement & 0x0ff00000) >> 20),
-			    ptr + 4);
-	      put_arm_insn (htab, output_bfd,
-			    elf32_arm_plt_entry_long[2]
-			    | ((got_displacement & 0x000ff000) >> 12),
-			    ptr+ 8);
-	      put_arm_insn (htab, output_bfd,
-			    elf32_arm_plt_entry_long[3]
-			    | (got_displacement & 0x00000fff),
-			    ptr + 12);
-	    }
-	}
+    }
 
-      /* Fill in the entry in the .rel(a).(i)plt section.  */
-      rel.r_offset = got_address;
-      rel.r_addend = 0;
-      if (dynindx == -1)
+  /* Fill in the entry in the .rel(a).(i)plt section.  */
+  rel.r_offset = got_address;
+  rel.r_addend = 0;
+  if (dynindx == -1)
+    {
+      /* .igot.plt entries use IRELATIVE relocations against SYM_VALUE.
+	 The dynamic linker or static executable then calls SYM_VALUE
+	 to determine the correct run-time value of the .igot.plt entry.  */
+      rel.r_info = ELF32_R_INFO (0, R_ARM_IRELATIVE);
+      initial_got_entry = sym_value;
+    }
+  else
+    {
+      /* For FDPIC we will have to resolve a R_ARM_FUNCDESC_VALUE
+	 used by PLT entry.  */
+      if (htab->fdpic_p)
 	{
-	  /* .igot.plt entries use IRELATIVE relocations against SYM_VALUE.
-	     The dynamic linker or static executable then calls SYM_VALUE
-	     to determine the correct run-time value of the .igot.plt entry.  */
-	  rel.r_info = ELF32_R_INFO (0, R_ARM_IRELATIVE);
-	  initial_got_entry = sym_value;
+	  rel.r_info = ELF32_R_INFO (dynindx, R_ARM_FUNCDESC_VALUE);
+	  initial_got_entry = 0;
 	}
       else
 	{
-	  /* For FDPIC we will have to resolve a R_ARM_FUNCDESC_VALUE
-	     used by PLT entry.  */
-	  if (htab->fdpic_p)
-	    {
-	      rel.r_info = ELF32_R_INFO (dynindx, R_ARM_FUNCDESC_VALUE);
-	      initial_got_entry = 0;
-	    }
-	  else
-	    {
-	      rel.r_info = ELF32_R_INFO (dynindx, R_ARM_JUMP_SLOT);
-	      initial_got_entry = (splt->output_section->vma
-				   + splt->output_offset);
-	    }
+	  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;
 	}
+    }
 
-      /* Fill in the entry in the global offset table.  */
-      bfd_put_32 (output_bfd, initial_got_entry,
+  /* Fill in the entry in the global offset table.  */
+  bfd_put_32 (output_bfd, initial_got_entry,
+	      sgot->contents + got_offset);
+
+  if (htab->fdpic_p && !(info->flags & DF_BIND_NOW))
+    {
+      /* Setup initial funcdesc value.  */
+      /* FIXME: we don't support lazy binding because there is a
+	 race condition between both words getting written and
+	 some other thread attempting to read them. The ARM
+	 architecture does not have an atomic 64 bit load/store
+	 instruction that could be used to prevent it; it is
+	 recommended that threaded FDPIC applications run with the
+	 LD_BIND_NOW environment variable set.  */
+      bfd_put_32 (output_bfd, plt_address + 0x18,
 		  sgot->contents + got_offset);
-
-      if (htab->fdpic_p && !(info->flags & DF_BIND_NOW))
-	{
-	  /* Setup initial funcdesc value.  */
-	  /* FIXME: we don't support lazy binding because there is a
-	     race condition between both words getting written and
-	     some other thread attempting to read them. The ARM
-	     architecture does not have an atomic 64 bit load/store
-	     instruction that could be used to prevent it; it is
-	     recommended that threaded FDPIC applications run with the
-	     LD_BIND_NOW environment variable set.  */
-	  bfd_put_32(output_bfd, plt_address + 0x18,
-		     sgot->contents + got_offset);
-	  bfd_put_32(output_bfd, -1 /*TODO*/,
-		     sgot->contents + got_offset + 4);
-	}
+      bfd_put_32 (output_bfd, -1 /*TODO*/,
+		  sgot->contents + got_offset + 4);
     }
 
   if (dynindx == -1)
@@ -10030,9 +9880,9 @@ elf32_arm_populate_plt_entry (bfd *outpu
 	     lazy binding otherwise we put them in .rel.plt.  For now,
 	     we don't support lazy binding so put it in .rel.got.  */
 	  if (info->flags & DF_BIND_NOW)
-	    elf32_arm_add_dynreloc(output_bfd, info, htab->root.srelgot, &rel);
+	    elf32_arm_add_dynreloc (output_bfd, info, htab->root.srelgot, &rel);
 	  else
-	    elf32_arm_add_dynreloc(output_bfd, info, htab->root.srelplt, &rel);
+	    elf32_arm_add_dynreloc (output_bfd, info, htab->root.srelplt, &rel);
 	}
       else
 	{
@@ -10041,7 +9891,7 @@ elf32_arm_populate_plt_entry (bfd *outpu
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Some relocations map to different relocations depending on the
@@ -10289,7 +10139,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
@@ -10346,7 +10196,7 @@ elf32_arm_final_link_relocate (reloc_how
 			       unsigned char		    st_type,
 			       enum arm_st_branch_type	    branch_type,
 			       struct elf_link_hash_entry * h,
-			       bfd_boolean *		    unresolved_reloc_p,
+			       bool *			    unresolved_reloc_p,
 			       char **			    error_message)
 {
   unsigned long			r_type = howto->type;
@@ -10368,8 +10218,8 @@ elf32_arm_final_link_relocate (reloc_how
   struct arm_plt_info	       *arm_plt;
   bfd_vma			plt_offset;
   bfd_vma			gotplt_offset;
-  bfd_boolean			has_iplt_entry;
-  bfd_boolean			resolved_to_zero;
+  bool				has_iplt_entry;
+  bool				resolved_to_zero;
 
   globals = elf32_arm_hash_table (info);
   if (globals == NULL)
@@ -10403,28 +10253,26 @@ 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 (bfd_get_reloc_size (howto))
 	{
-	  signed_addend = -1;
-	  signed_addend &= ~ howto->src_mask;
-	  signed_addend |= addend;
-	}
-      else
-	signed_addend = addend;
+	case 1: addend = bfd_get_8 (input_bfd, hit_data); break;
+	case 2: addend = bfd_get_16 (input_bfd, hit_data); break;
+	case 4: 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;
 
-  /* ST_BRANCH_TO_ARM is nonsense to thumb-only targets when we
-     are resolving a function call relocation.  */
-  if (using_thumb_only (globals)
-      && (r_type == R_ARM_THM_CALL
-	  || r_type == R_ARM_THM_JUMP24)
-      && branch_type == ST_BRANCH_TO_ARM)
-    branch_type = ST_BRANCH_TO_THUMB;
-
   /* Record the symbol information that should be used in dynamic
      relocations.  */
   dynreloc_st_type = st_type;
@@ -10434,7 +10282,7 @@ elf32_arm_final_link_relocate (reloc_how
 
   /* Find out whether the symbol has a PLT.  Set ST_VALUE, BRANCH_TYPE and
      VALUE appropriately for relocations that we resolve at link time.  */
-  has_iplt_entry = FALSE;
+  has_iplt_entry = false;
   if (elf32_arm_get_plt_info (input_bfd, globals, eh, r_symndx, &root_plt,
 			      &arm_plt)
       && root_plt->offset != (bfd_vma) -1)
@@ -10444,7 +10292,7 @@ elf32_arm_final_link_relocate (reloc_how
 
       if (h == NULL || eh->is_iplt)
 	{
-	  has_iplt_entry = TRUE;
+	  has_iplt_entry = true;
 	  splt = globals->root.iplt;
 
 	  /* Populate .iplt entries here, because not all of them will
@@ -10487,6 +10335,73 @@ elf32_arm_final_link_relocate (reloc_how
       gotplt_offset = (bfd_vma) -1;
     }
 
+  /* ST_BRANCH_TO_ARM is nonsense to thumb-only targets when we are
+     resolving a function call relocation.  We want to inform the user
+     that something is wrong.  */
+  if (using_thumb_only (globals)
+      && (r_type == R_ARM_THM_CALL
+	  || r_type == R_ARM_THM_JUMP24)
+      && branch_type == ST_BRANCH_TO_ARM
+      /* Calls through a PLT are special: the assembly source code
+	 cannot be annotated with '.type foo(PLT), %function', and
+	 they handled specifically below anyway. */
+      && splt == NULL)
+    {
+      if (sym_sec == bfd_abs_section_ptr)
+	{
+	/* As an exception, assume that absolute symbols are of the
+	   right kind (Thumb).  They are presumably defined in the
+	   linker script, where it is not possible to declare them as
+	   Thumb (and thus are seen as Arm mode). Inform the user with
+	   a warning, though. */
+	  branch_type = ST_BRANCH_TO_THUMB;
+
+	  if (sym_sec->owner)
+	    _bfd_error_handler
+	      (_("warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU)"
+		 " in %pB"),
+	       sym_sec->owner, sym_name, input_bfd);
+	  else
+	    _bfd_error_handler
+	      (_("warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU)"
+		 " in %pB"),
+	       sym_name, input_bfd);
+	}
+      else
+	/* Otherwise do not silently build a stub, and let the users
+	   know they have to fix their code.  Indeed, we could decide
+	   to insert a stub involving Arm code and/or BLX, leading to
+	   a run-time crash.  */
+	branch_type = ST_BRANCH_UNKNOWN;
+    }
+
+  /* Fail early if branch_type is ST_BRANCH_UNKNOWN and we target a
+     Thumb-only CPU.  We could emit a warning on Arm-capable targets
+     too, but that would be too verbose (a lot of legacy code does not
+     use the .type foo, %function directive).  */
+  if (using_thumb_only (globals)
+      && (r_type == R_ARM_THM_CALL
+	  || r_type == R_ARM_THM_JUMP24)
+      && branch_type == ST_BRANCH_UNKNOWN
+      /* Exception to the rule above: a branch to an undefined weak
+	 symbol is turned into a jump to the next instruction unless a
+	 PLT entry will be created (see below).  */
+      && !(h && h->root.type == bfd_link_hash_undefweak
+	   && plt_offset == (bfd_vma) -1))
+    {
+      if (sym_sec != NULL
+	  && sym_sec->owner != NULL)
+	_bfd_error_handler
+	  (_("%pB(%s): Unknown destination type (ARM/Thumb) in %pB"),
+	   sym_sec->owner, sym_name, input_bfd);
+      else
+	_bfd_error_handler
+	  (_("(%s): Unknown destination type (ARM/Thumb) in %pB"),
+	   sym_name, input_bfd);
+
+      return bfd_reloc_notsupported;
+    }
+
   resolved_to_zero = (h != NULL
 		      && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
 
@@ -10495,11 +10410,11 @@ elf32_arm_final_link_relocate (reloc_how
     case R_ARM_NONE:
       /* We don't need to find a value for this symbol.  It's just a
 	 marker.  */
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       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.  */
 
@@ -10534,20 +10449,18 @@ elf32_arm_final_link_relocate (reloc_how
 	  value = (splt->output_section->vma
 		   + splt->output_offset
 		   + plt_offset);
-	  *unresolved_reloc_p = FALSE;
+	  *unresolved_reloc_p = false;
 	  return _bfd_final_link_relocate (howto, input_bfd, input_section,
 					   contents, rel->r_offset, value,
 					   rel->r_addend);
 	}
 
-      /* When generating a shared object or relocatable executable, these
-	 relocations are copied into the output file to be resolved at
-	 run time.  */
+      /* When generating a shared library or PIE, these relocations
+	 are copied into the output file to be resolved at run time.  */
       if ((bfd_link_pic (info)
-	   || 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)
@@ -10565,7 +10478,7 @@ elf32_arm_final_link_relocate (reloc_how
 	  && r_type != R_ARM_PLT32)
 	{
 	  Elf_Internal_Rela outrel;
-	  bfd_boolean skip, relocate;
+	  bool skip, relocate;
 	  int isrofixup = 0;
 
 	  if ((r_type == R_ARM_REL32 || r_type == R_ARM_REL32_NOI)
@@ -10583,7 +10496,7 @@ elf32_arm_final_link_relocate (reloc_how
 	      return bfd_reloc_notsupported;
 	    }
 
-	  *unresolved_reloc_p = FALSE;
+	  *unresolved_reloc_p = false;
 
 	  if (sreloc == NULL && globals->root.dynamic_sections_created)
 	    {
@@ -10594,17 +10507,17 @@ elf32_arm_final_link_relocate (reloc_how
 		return bfd_reloc_notsupported;
 	    }
 
-	  skip = FALSE;
-	  relocate = FALSE;
+	  skip = false;
+	  relocate = false;
 
 	  outrel.r_addend = addend;
 	  outrel.r_offset =
 	    _bfd_elf_section_offset (output_bfd, info, input_section,
 				     rel->r_offset);
 	  if (outrel.r_offset == (bfd_vma) -1)
-	    skip = TRUE;
+	    skip = true;
 	  else if (outrel.r_offset == (bfd_vma) -2)
-	    skip = TRUE, relocate = TRUE;
+	    skip = true, relocate = true;
 	  outrel.r_offset += (input_section->output_section->vma
 			      + input_section->output_offset);
 
@@ -10623,64 +10536,29 @@ 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)
-		{
-		  asection *osec;
-
-		  /* On Symbian OS, the data segment and text segement
-		     can be relocated independently.  Therefore, we
-		     must indicate the segment to which this
-		     relocation is relative.  The BPABI allows us to
-		     use any symbol in the right segment; we just use
-		     the section symbol as it is convenient.  (We
-		     cannot use the symbol given by "h" directly as it
-		     will not appear in the dynamic symbol table.)
-
-		     Note that the dynamic linker ignores the section
-		     symbol value, so we don't subtract osec->vma
-		     from the emitted reloc addend.  */
-		  if (sym_sec)
-		    osec = sym_sec->output_section;
-		  else
-		    osec = input_section->output_section;
-		  symbol = elf_section_data (osec)->dynindx;
-		  if (symbol == 0)
-		    {
-		      struct elf_link_hash_table *htab = elf_hash_table (info);
-
-		      if ((osec->flags & SEC_READONLY) == 0
-			  && htab->data_index_section != NULL)
-			osec = htab->data_index_section;
-		      else
-			osec = htab->text_index_section;
-		      symbol = elf_section_data (osec)->dynindx;
-		    }
-		  BFD_ASSERT (symbol != 0);
-		}
-	      else
-		/* On SVR4-ish systems, the dynamic loader cannot
-		   relocate the text and data segments independently,
-		   so the symbol does not matter.  */
-		symbol = 0;
+			  || (globals->fdpic_p && !bfd_link_pic (info)));
+	      /* On SVR4-ish systems, the dynamic loader cannot
+		 relocate the text and data segments independently,
+		 so the symbol does not matter.  */
+	      symbol = 0;
 	      if (dynreloc_st_type == STT_GNU_IFUNC)
 		/* We have an STT_GNU_IFUNC symbol that doesn't resolve
 		   to the .iplt entry.  Instead, every non-call reference
 		   must use an R_ARM_IRELATIVE relocation to obtain the
 		   correct run-time address.  */
 		outrel.r_info = ELF32_R_INFO (symbol, R_ARM_IRELATIVE);
-	      else if (globals->fdpic_p && !bfd_link_pic(info))
+	      else if (globals->fdpic_p && !bfd_link_pic (info))
 		isrofixup = 1;
 	      else
 		outrel.r_info = ELF32_R_INFO (symbol, R_ARM_RELATIVE);
 	      if (globals->use_rel)
-		relocate = TRUE;
+		relocate = true;
 	      else
 		outrel.r_addend += dynreloc_value;
 	    }
 
 	  if (isrofixup)
-	    arm_elf_add_rofixup(output_bfd, globals->srofixup, outrel.r_offset);
+	    arm_elf_add_rofixup (output_bfd, globals->srofixup, outrel.r_offset);
 	  else
 	    elf32_arm_add_dynreloc (output_bfd, info, sreloc, &outrel);
 
@@ -10765,7 +10643,7 @@ elf32_arm_final_link_relocate (reloc_how
 			       + stub_entry->stub_sec->output_section->vma);
 
 		    if (plt_offset != (bfd_vma) -1)
-		      *unresolved_reloc_p = FALSE;
+		      *unresolved_reloc_p = false;
 		  }
 		}
 	      else
@@ -10777,7 +10655,7 @@ elf32_arm_final_link_relocate (reloc_how
 		      value = (splt->output_section->vma
 			       + splt->output_offset
 			       + plt_offset);
-		      *unresolved_reloc_p = FALSE;
+		      *unresolved_reloc_p = false;
 		      /* The PLT entry is in ARM mode, regardless of the
 			 target function.  */
 		      branch_type = ST_BRANCH_TO_ARM;
@@ -10807,11 +10685,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 +10789,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 +10801,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.  */
@@ -11084,7 +10952,7 @@ elf32_arm_final_link_relocate (reloc_how
       {
 	bfd_vma relocation;
 	bfd_vma reloc_sign;
-	bfd_boolean overflow = FALSE;
+	bool overflow = false;
 	bfd_vma upper_insn = bfd_get_16 (input_bfd, hit_data);
 	bfd_vma lower_insn = bfd_get_16 (input_bfd, hit_data + 2);
 	bfd_signed_vma reloc_signed_max;
@@ -11211,7 +11079,7 @@ elf32_arm_final_link_relocate (reloc_how
 			     + stub_entry->stub_sec->output_section->vma);
 
 		    if (plt_offset != (bfd_vma) -1)
-		      *unresolved_reloc_p = FALSE;
+		      *unresolved_reloc_p = false;
 		  }
 
 		/* If this call becomes a call to Arm, force BLX.  */
@@ -11249,7 +11117,7 @@ elf32_arm_final_link_relocate (reloc_how
 		  value -= PLT_THUMB_STUB_SIZE;
 		branch_type = ST_BRANCH_TO_THUMB;
 	      }
-	    *unresolved_reloc_p = FALSE;
+	    *unresolved_reloc_p = false;
 	  }
 
 	relocation = value + signed_addend;
@@ -11278,7 +11146,7 @@ elf32_arm_final_link_relocate (reloc_how
 
 	/* Assumes two's complement.  */
 	if (signed_check > reloc_signed_max || signed_check < reloc_signed_min)
-	  overflow = TRUE;
+	  overflow = true;
 
 	if ((lower_insn & 0x5000) == 0x4000)
 	  /* For a BLX instruction, make sure that the relocation is rounded up
@@ -11311,7 +11179,7 @@ elf32_arm_final_link_relocate (reloc_how
       /* Thumb32 conditional branch instruction.  */
       {
 	bfd_vma relocation;
-	bfd_boolean overflow = FALSE;
+	bool overflow = false;
 	bfd_vma upper_insn = bfd_get_16 (input_bfd, hit_data);
 	bfd_vma lower_insn = bfd_get_16 (input_bfd, hit_data + 2);
 	bfd_signed_vma reloc_signed_max = 0xffffe;
@@ -11348,7 +11216,7 @@ elf32_arm_final_link_relocate (reloc_how
 		     + plt_offset);
 	    /* Target the Thumb stub before the ARM PLT entry.  */
 	    value -= PLT_THUMB_STUB_SIZE;
-	    *unresolved_reloc_p = FALSE;
+	    *unresolved_reloc_p = false;
 	  }
 
 	hash = (struct elf32_arm_link_hash_entry *)h;
@@ -11378,7 +11246,7 @@ elf32_arm_final_link_relocate (reloc_how
 	signed_check = (bfd_signed_vma) relocation;
 
 	if (signed_check > reloc_signed_max || signed_check < reloc_signed_min)
-	  overflow = TRUE;
+	  overflow = true;
 
 	/* Put RELOCATION back into the insn.  */
 	{
@@ -11411,25 +11279,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
@@ -11515,7 +11370,7 @@ elf32_arm_final_link_relocate (reloc_how
       if (sgot == NULL)
 	return bfd_reloc_notsupported;
 
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       value = sgot->output_section->vma;
       return _bfd_final_link_relocate (howto, input_bfd, input_section,
 				       contents, rel->r_offset, value,
@@ -11553,7 +11408,7 @@ elf32_arm_final_link_relocate (reloc_how
 	      off &= ~1;
 	      if (globals->root.dynamic_sections_created
 		  && !SYMBOL_REFERENCES_LOCAL (info, h))
-		*unresolved_reloc_p = FALSE;
+		*unresolved_reloc_p = false;
 	    }
 	  else
 	    {
@@ -11570,7 +11425,7 @@ elf32_arm_final_link_relocate (reloc_how
 		  if (globals->root.dynamic_sections_created)
 		    {
 		      outrel.r_info = ELF32_R_INFO (h->dynindx, R_ARM_GLOB_DAT);
-		      *unresolved_reloc_p = FALSE;
+		      *unresolved_reloc_p = false;
 		    }
 		  else
 		    outrel.r_info = 0;
@@ -11581,8 +11436,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
 		    {
@@ -11605,7 +11459,7 @@ elf32_arm_final_link_relocate (reloc_how
 
 	      if (isrofixup)
 		arm_elf_add_rofixup (output_bfd,
-				     elf32_arm_hash_table(info)->srofixup,
+				     elf32_arm_hash_table (info)->srofixup,
 				     sgot->output_section->vma
 				     + sgot->output_offset + off);
 
@@ -11732,9 +11586,9 @@ elf32_arm_final_link_relocate (reloc_how
 
 	if (r_type == R_ARM_TLS_LDM32_FDPIC)
 	  {
-	    bfd_put_32(output_bfd,
-		       globals->root.sgot->output_offset + off,
-		       contents + rel->r_offset);
+	    bfd_put_32 (output_bfd,
+			globals->root.sgot->output_offset + off,
+			contents + rel->r_offset);
 
 	    return bfd_reloc_ok;
 	  }
@@ -11768,7 +11622,7 @@ elf32_arm_final_link_relocate (reloc_how
 
 	if (h != NULL)
 	  {
-	    bfd_boolean dyn;
+	    bool dyn;
 	    dyn = globals->root.dynamic_sections_created;
 	    if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
 						 bfd_link_pic (info),
@@ -11776,7 +11630,7 @@ elf32_arm_final_link_relocate (reloc_how
 		&& (!bfd_link_pic (info)
 		    || !SYMBOL_REFERENCES_LOCAL (info, h)))
 	      {
-		*unresolved_reloc_p = FALSE;
+		*unresolved_reloc_p = false;
 		indx = h->dynindx;
 	      }
 	    off = h->got.offset;
@@ -11786,6 +11640,16 @@ elf32_arm_final_link_relocate (reloc_how
 	else
 	  {
 	    BFD_ASSERT (local_got_offsets != NULL);
+
+	    if (r_symndx >= elf32_arm_num_entries (input_bfd))
+	      {
+		_bfd_error_handler (_("\
+%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"),
+				    input_bfd,
+				    (unsigned long) elf32_arm_num_entries (input_bfd),
+				    r_symndx);
+		return false;
+	      }
 	    off = local_got_offsets[r_symndx];
 	    offplt = local_tlsdesc_gotents[r_symndx];
 	    tls_type = elf32_arm_local_got_tls_type (input_bfd)[r_symndx];
@@ -11793,7 +11657,7 @@ elf32_arm_final_link_relocate (reloc_how
 
 	/* Linker relaxations happens from one of the
 	   R_ARM_{GOTDESC,CALL,DESCSEQ} relocations to IE or LE.  */
-	if (ELF32_R_TYPE(rel->r_info) != r_type)
+	if (ELF32_R_TYPE (rel->r_info) != r_type)
 	  tls_type = GOT_TLS_IE;
 
 	BFD_ASSERT (tls_type != GOT_UNKNOWN);
@@ -11802,7 +11666,7 @@ elf32_arm_final_link_relocate (reloc_how
 	  off &= ~1;
 	else
 	  {
-	    bfd_boolean need_relocs = FALSE;
+	    bool need_relocs = false;
 	    Elf_Internal_Rela outrel;
 	    int cur_off = off;
 
@@ -11816,7 +11680,7 @@ elf32_arm_final_link_relocate (reloc_how
 			&& !resolved_to_zero)
 		    || h->root.type != bfd_link_hash_undefweak))
 	      {
-		need_relocs = TRUE;
+		need_relocs = true;
 		BFD_ASSERT (srelgot != NULL);
 	      }
 
@@ -11948,8 +11812,8 @@ elf32_arm_final_link_relocate (reloc_how
 	else if (tls_type & GOT_TLS_GDESC)
 	  off = offplt;
 
-	if (ELF32_R_TYPE(rel->r_info) == R_ARM_TLS_CALL
-	    || ELF32_R_TYPE(rel->r_info) == R_ARM_THM_TLS_CALL)
+	if (ELF32_R_TYPE (rel->r_info) == R_ARM_TLS_CALL
+	    || ELF32_R_TYPE (rel->r_info) == R_ARM_THM_TLS_CALL)
 	  {
 	    bfd_signed_vma offset;
 	    /* TLS stubs are arm mode.  The original symbol is a
@@ -11977,7 +11841,7 @@ elf32_arm_final_link_relocate (reloc_how
 			+ globals->root.splt->output_offset
 			+ globals->tls_trampoline);
 
-	    if (ELF32_R_TYPE(rel->r_info) == R_ARM_TLS_CALL)
+	    if (ELF32_R_TYPE (rel->r_info) == R_ARM_TLS_CALL)
 	      {
 		unsigned long inst;
 
@@ -12107,9 +11971,9 @@ elf32_arm_final_link_relocate (reloc_how
 	  {
 	    /* For FDPIC relocations, resolve to the offset of the GOT
 	       entry from the start of GOT.  */
-	    bfd_put_32(output_bfd,
-		       globals->root.sgot->output_offset + off,
-		       contents + rel->r_offset);
+	    bfd_put_32 (output_bfd,
+			globals->root.sgot->output_offset + off,
+			contents + rel->r_offset);
 
 	    return bfd_reloc_ok;
 	  }
@@ -12678,7 +12542,7 @@ elf32_arm_final_link_relocate (reloc_how
     case R_ARM_THM_ALU_ABS_G2_NC:
     case R_ARM_THM_ALU_ABS_G3_NC:
 	{
-	    const int shift_array[4] = {0, 8, 16, 24};
+	    static const int shift_array[4] = {0, 8, 16, 24};
 	    bfd_vma insn = bfd_get_16 (input_bfd, hit_data);
 	    bfd_vma addr = value;
 	    int shift = shift_array[r_type - R_ARM_THM_ALU_ABS_G0_NC];
@@ -12697,30 +12561,40 @@ elf32_arm_final_link_relocate (reloc_how
 	    bfd_put_16 (input_bfd, insn, hit_data);
 	}
 
-	*unresolved_reloc_p = FALSE;
+	*unresolved_reloc_p = false;
 	return bfd_reloc_ok;
 
     case R_ARM_GOTOFFFUNCDESC:
       {
 	if (h == NULL)
 	  {
-	    struct fdpic_local *local_fdpic_cnts = elf32_arm_local_fdpic_cnts(input_bfd);
+	    struct fdpic_local *local_fdpic_cnts = elf32_arm_local_fdpic_cnts (input_bfd);
 	    int dynindx = elf_section_data (sym_sec->output_section)->dynindx;
+
+	    if (r_symndx >= elf32_arm_num_entries (input_bfd))
+	      {
+		* error_message = _("local symbol index too big");
+		return bfd_reloc_dangerous;
+	      }
+
 	    int offset = local_fdpic_cnts[r_symndx].funcdesc_offset & ~1;
 	    bfd_vma addr = dynreloc_value - sym_sec->output_section->vma;
 	    bfd_vma seg = -1;
 
-	    if (bfd_link_pic(info) && dynindx == 0)
-	      abort();
+	    if (bfd_link_pic (info) && dynindx == 0)
+	      {
+		* error_message = _("no dynamic index information available");
+		return bfd_reloc_dangerous;
+	      }
 
 	    /* Resolve relocation.  */
-	    bfd_put_32(output_bfd, (offset + sgot->output_offset)
+	    bfd_put_32 (output_bfd, (offset + sgot->output_offset)
 		       , contents + rel->r_offset);
 	    /* Emit R_ARM_FUNCDESC_VALUE or two fixups on funcdesc if
 	       not done yet.  */
-	    arm_elf_fill_funcdesc(output_bfd, info,
-				  &local_fdpic_cnts[r_symndx].funcdesc_offset,
-				  dynindx, offset, addr, dynreloc_value, seg);
+	    arm_elf_fill_funcdesc (output_bfd, info,
+				   &local_fdpic_cnts[r_symndx].funcdesc_offset,
+				   dynindx, offset, addr, dynreloc_value, seg);
 	  }
 	else
 	  {
@@ -12741,24 +12615,30 @@ elf32_arm_final_link_relocate (reloc_how
 		addr = 0;
 	      }
 
-	    if (bfd_link_pic(info) && dynindx == 0)
-	      abort();
+	    if (bfd_link_pic (info) && dynindx == 0)
+	      {
+		* error_message = _("no dynamic index information available");
+		return bfd_reloc_dangerous;
+	      }
 
 	    /* This case cannot occur since funcdesc is allocated by
 	       the dynamic loader so we cannot resolve the relocation.  */
 	    if (h->dynindx != -1)
-	      abort();
+	      {
+		* error_message = _("invalid dynamic index");
+		return bfd_reloc_dangerous;
+	      }
 
 	    /* Resolve relocation.  */
-	    bfd_put_32(output_bfd, (offset + sgot->output_offset),
-		       contents + rel->r_offset);
+	    bfd_put_32 (output_bfd, (offset + sgot->output_offset),
+		        contents + rel->r_offset);
 	    /* Emit R_ARM_FUNCDESC_VALUE on funcdesc if not done yet.  */
-	    arm_elf_fill_funcdesc(output_bfd, info,
-				  &eh->fdpic_cnts.funcdesc_offset,
-				  dynindx, offset, addr, dynreloc_value, seg);
+	    arm_elf_fill_funcdesc (output_bfd, info,
+				   &eh->fdpic_cnts.funcdesc_offset,
+				   dynindx, offset, addr, dynreloc_value, seg);
 	  }
       }
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       return bfd_reloc_ok;
 
     case R_ARM_GOTFUNCDESC:
@@ -12768,11 +12648,11 @@ elf32_arm_final_link_relocate (reloc_how
 	    Elf_Internal_Rela outrel;
 
 	    /* Resolve relocation.  */
-	    bfd_put_32(output_bfd, ((eh->fdpic_cnts.gotfuncdesc_offset & ~1)
-				    + sgot->output_offset),
-		       contents + rel->r_offset);
+	    bfd_put_32 (output_bfd, ((eh->fdpic_cnts.gotfuncdesc_offset & ~1)
+				     + sgot->output_offset),
+			contents + rel->r_offset);
 	    /* Add funcdesc and associated R_ARM_FUNCDESC_VALUE.  */
-	    if(h->dynindx == -1)
+	    if (h->dynindx == -1)
 	      {
 		int dynindx;
 		int offset = eh->fdpic_cnts.funcdesc_offset & ~1;
@@ -12792,9 +12672,9 @@ elf32_arm_final_link_relocate (reloc_how
 		  }
 
 		/* Emit R_ARM_FUNCDESC_VALUE on funcdesc if not done yet.  */
-		arm_elf_fill_funcdesc(output_bfd, info,
-				      &eh->fdpic_cnts.funcdesc_offset,
-				      dynindx, offset, addr, dynreloc_value, seg);
+		arm_elf_fill_funcdesc (output_bfd, info,
+				       &eh->fdpic_cnts.funcdesc_offset,
+				       dynindx, offset, addr, dynreloc_value, seg);
 	      }
 
 	    /* Add a dynamic relocation on GOT entry if not already done.  */
@@ -12804,14 +12684,14 @@ elf32_arm_final_link_relocate (reloc_how
 		  {
 		    outrel.r_info = ELF32_R_INFO (0, R_ARM_RELATIVE);
 		    if (h->root.type == bfd_link_hash_undefweak)
-		      bfd_put_32(output_bfd, 0, sgot->contents
-				 + (eh->fdpic_cnts.gotfuncdesc_offset & ~1));
+		      bfd_put_32 (output_bfd, 0, sgot->contents
+				  + (eh->fdpic_cnts.gotfuncdesc_offset & ~1));
 		    else
-		      bfd_put_32(output_bfd, sgot->output_section->vma
-				 + sgot->output_offset
-				 + (eh->fdpic_cnts.funcdesc_offset & ~1),
-				 sgot->contents
-				 + (eh->fdpic_cnts.gotfuncdesc_offset & ~1));
+		      bfd_put_32 (output_bfd, sgot->output_section->vma
+				  + sgot->output_offset
+				  + (eh->fdpic_cnts.funcdesc_offset & ~1),
+				  sgot->contents
+				  + (eh->fdpic_cnts.gotfuncdesc_offset & ~1));
 		  }
 		else
 		  {
@@ -12821,12 +12701,12 @@ elf32_arm_final_link_relocate (reloc_how
 		  + sgot->output_offset
 		  + (eh->fdpic_cnts.gotfuncdesc_offset & ~1);
 		outrel.r_addend = 0;
-		if (h->dynindx == -1 && !bfd_link_pic(info))
+		if (h->dynindx == -1 && !bfd_link_pic (info))
 		  if (h->root.type == bfd_link_hash_undefweak)
-		    arm_elf_add_rofixup(output_bfd, globals->srofixup, -1);
+		    arm_elf_add_rofixup (output_bfd, globals->srofixup, -1);
 		  else
-		    arm_elf_add_rofixup(output_bfd, globals->srofixup,
-					outrel.r_offset);
+		    arm_elf_add_rofixup (output_bfd, globals->srofixup,
+					 outrel.r_offset);
 		else
 		  elf32_arm_add_dynreloc (output_bfd, info, srelgot, &outrel);
 		eh->fdpic_cnts.gotfuncdesc_offset |= 1;
@@ -12836,25 +12716,35 @@ elf32_arm_final_link_relocate (reloc_how
 	  {
 	    /* Such relocation on static function should not have been
 	       emitted by the compiler.  */
-	    abort();
+	    return bfd_reloc_notsupported;
 	  }
       }
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       return bfd_reloc_ok;
 
     case R_ARM_FUNCDESC:
       {
 	if (h == NULL)
 	  {
-	    struct fdpic_local *local_fdpic_cnts = elf32_arm_local_fdpic_cnts(input_bfd);
+	    struct fdpic_local *local_fdpic_cnts = elf32_arm_local_fdpic_cnts (input_bfd);
 	    Elf_Internal_Rela outrel;
 	    int dynindx = elf_section_data (sym_sec->output_section)->dynindx;
+
+	    if (r_symndx >= elf32_arm_num_entries (input_bfd))
+	      {
+		* error_message = _("local symbol index too big");
+		return bfd_reloc_dangerous;
+	      }
+
 	    int offset = local_fdpic_cnts[r_symndx].funcdesc_offset & ~1;
 	    bfd_vma addr = dynreloc_value - sym_sec->output_section->vma;
 	    bfd_vma seg = -1;
 
-	    if (bfd_link_pic(info) && dynindx == 0)
-	      abort();
+	    if (bfd_link_pic (info) && dynindx == 0)
+	      {
+		* error_message = _("dynamic index information not available");
+		return bfd_reloc_dangerous;
+	      }
 
 	    /* Replace static FUNCDESC relocation with a
 	       R_ARM_RELATIVE dynamic relocation or with a rofixup for
@@ -12863,18 +12753,18 @@ elf32_arm_final_link_relocate (reloc_how
 	    outrel.r_offset = input_section->output_section->vma
 	      + input_section->output_offset + rel->r_offset;
 	    outrel.r_addend = 0;
-	    if (bfd_link_pic(info))
+	    if (bfd_link_pic (info))
 	      elf32_arm_add_dynreloc (output_bfd, info, srelgot, &outrel);
 	    else
-	      arm_elf_add_rofixup(output_bfd, globals->srofixup, outrel.r_offset);
+	      arm_elf_add_rofixup (output_bfd, globals->srofixup, outrel.r_offset);
 
 	    bfd_put_32 (input_bfd, sgot->output_section->vma
 			+ sgot->output_offset + offset, hit_data);
 
 	    /* Emit R_ARM_FUNCDESC_VALUE on funcdesc if not done yet.  */
-	    arm_elf_fill_funcdesc(output_bfd, info,
-				  &local_fdpic_cnts[r_symndx].funcdesc_offset,
-				  dynindx, offset, addr, dynreloc_value, seg);
+	    arm_elf_fill_funcdesc (output_bfd, info,
+				   &local_fdpic_cnts[r_symndx].funcdesc_offset,
+				   dynindx, offset, addr, dynreloc_value, seg);
 	  }
 	else
 	  {
@@ -12898,8 +12788,8 @@ elf32_arm_final_link_relocate (reloc_how
 		    addr = 0;
 		  }
 
-		if (bfd_link_pic(info) && dynindx == 0)
-		  abort();
+		if (bfd_link_pic (info) && dynindx == 0)
+		  abort ();
 
 		/* Replace static FUNCDESC relocation with a
 		   R_ARM_RELATIVE dynamic relocation.  */
@@ -12907,18 +12797,18 @@ elf32_arm_final_link_relocate (reloc_how
 		outrel.r_offset = input_section->output_section->vma
 		  + input_section->output_offset + rel->r_offset;
 		outrel.r_addend = 0;
-		if (bfd_link_pic(info))
+		if (bfd_link_pic (info))
 		  elf32_arm_add_dynreloc (output_bfd, info, srelgot, &outrel);
 		else
-		  arm_elf_add_rofixup(output_bfd, globals->srofixup, outrel.r_offset);
+		  arm_elf_add_rofixup (output_bfd, globals->srofixup, outrel.r_offset);
 
 		bfd_put_32 (input_bfd, sgot->output_section->vma
 			    + sgot->output_offset + offset, hit_data);
 
 		/* Emit R_ARM_FUNCDESC_VALUE on funcdesc if not done yet.  */
-		arm_elf_fill_funcdesc(output_bfd, info,
-				      &eh->fdpic_cnts.funcdesc_offset,
-				      dynindx, offset, addr, dynreloc_value, seg);
+		arm_elf_fill_funcdesc (output_bfd, info,
+				       &eh->fdpic_cnts.funcdesc_offset,
+				       dynindx, offset, addr, dynreloc_value, seg);
 	      }
 	    else
 	      {
@@ -12933,7 +12823,7 @@ elf32_arm_final_link_relocate (reloc_how
 	      }
 	  }
       }
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       return bfd_reloc_ok;
 
     case R_ARM_THM_BF16:
@@ -13124,7 +13014,7 @@ arm_add_to_rel (bfd *		   abfd,
 	case R_ARM_PLT32:
 	case R_ARM_CALL:
 	case R_ARM_JUMP24:
-	  addend <<= howto->size;
+	  addend *= bfd_get_reloc_size (howto);
 	  addend += increment;
 
 	  /* Should we check for overflow here ?  */
@@ -13164,7 +13054,7 @@ arm_add_to_rel (bfd *		   abfd,
 
 /* Relocate an ARM ELF section.  */
 
-static bfd_boolean
+static int
 elf32_arm_relocate_section (bfd *		   output_bfd,
 			    struct bfd_link_info * info,
 			    bfd *		   input_bfd,
@@ -13183,7 +13073,7 @@ elf32_arm_relocate_section (bfd *		   ou
 
   globals = elf32_arm_hash_table (info);
   if (globals == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = & elf_symtab_hdr (input_bfd);
   sym_hashes = elf_sym_hashes (input_bfd);
@@ -13202,7 +13092,7 @@ elf32_arm_relocate_section (bfd *		   ou
       bfd_reloc_status_type	   r;
       arelent			   bfd_reloc;
       char			   sym_type;
-      bfd_boolean		   unresolved_reloc = FALSE;
+      bool			   unresolved_reloc = false;
       char *error_message = NULL;
 
       r_symndx = ELF32_R_SYM (rel->r_info);
@@ -13243,7 +13133,7 @@ elf32_arm_relocate_section (bfd *		   ou
 	      (info, bfd_elf_string_from_elf_section
 	       (input_bfd, symtab_hdr->sh_link, sym->st_name),
 	       input_bfd, input_section,
-	       rel->r_offset, TRUE);
+	       rel->r_offset, true);
 
 	  if (globals->use_rel)
 	    {
@@ -13287,7 +13177,7 @@ elf32_arm_relocate_section (bfd *		   ou
 			       "%s relocation against SEC_MERGE section"),
 			     input_bfd, input_section,
 			     (uint64_t) rel->r_offset, howto->name);
-			  return FALSE;
+			  return false;
 			}
 
 		      value = bfd_get_32 (input_bfd, contents + rel->r_offset);
@@ -13345,7 +13235,7 @@ elf32_arm_relocate_section (bfd *		   ou
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -13357,7 +13247,8 @@ elf32_arm_relocate_section (bfd *		   ou
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_ARM_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -13458,7 +13349,7 @@ elf32_arm_relocate_section (bfd *		   ou
 	     (uint64_t) rel->r_offset,
 	     howto->name,
 	     h->root.root.string);
-	  return FALSE;
+	  return false;
 	}
 
       if (r != bfd_reloc_ok)
@@ -13477,7 +13368,7 @@ elf32_arm_relocate_section (bfd *		   ou
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -13505,7 +13396,7 @@ elf32_arm_relocate_section (bfd *		   ou
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Add a new unwind edit to the list described by HEAD, TAIL.  If TINDEX is zero,
@@ -13553,8 +13444,9 @@ add_unwind_table_edit (arm_unwind_table_
 static _arm_elf_section_data *get_arm_elf_section_data (asection *);
 
 /* Increase the size of EXIDX_SEC by ADJUST bytes.  ADJUST mau be negative.  */
+
 static void
-adjust_exidx_size(asection *exidx_sec, int adjust)
+adjust_exidx_size (asection *exidx_sec, int adjust)
 {
   asection *out_sec;
 
@@ -13564,24 +13456,25 @@ adjust_exidx_size(asection *exidx_sec, i
   bfd_set_section_size (exidx_sec, exidx_sec->size + adjust);
   out_sec = exidx_sec->output_section;
   /* Adjust size of output section.  */
-  bfd_set_section_size (out_sec, out_sec->size +adjust);
+  bfd_set_section_size (out_sec, out_sec->size + adjust);
 }
 
 /* Insert an EXIDX_CANTUNWIND marker at the end of a section.  */
+
 static void
-insert_cantunwind_after(asection *text_sec, asection *exidx_sec)
+insert_cantunwind_after (asection *text_sec, asection *exidx_sec)
 {
   struct _arm_elf_section_data *exidx_arm_data;
 
   exidx_arm_data = get_arm_elf_section_data (exidx_sec);
-  add_unwind_table_edit (
-    &exidx_arm_data->u.exidx.unwind_edit_list,
-    &exidx_arm_data->u.exidx.unwind_edit_tail,
-    INSERT_EXIDX_CANTUNWIND_AT_END, text_sec, UINT_MAX);
+  add_unwind_table_edit
+    (&exidx_arm_data->u.exidx.unwind_edit_list,
+     &exidx_arm_data->u.exidx.unwind_edit_tail,
+     INSERT_EXIDX_CANTUNWIND_AT_END, text_sec, UINT_MAX);
 
   exidx_arm_data->additional_reloc_count++;
 
-  adjust_exidx_size(exidx_sec, 8);
+  adjust_exidx_size (exidx_sec, 8);
 }
 
 /* Scan .ARM.exidx tables, and create a list describing edits which should be
@@ -13596,11 +13489,11 @@ insert_cantunwind_after(asection *text_s
    The edits are applied when the tables are written
    (in elf32_arm_write_section).  */
 
-bfd_boolean
+bool
 elf32_arm_fix_exidx_coverage (asection **text_section_order,
 			      unsigned int num_text_sections,
 			      struct bfd_link_info *info,
-			      bfd_boolean merge_exidx_entries)
+			      bool merge_exidx_entries)
 {
   bfd *inp;
   unsigned int last_second_word = 0, i;
@@ -13671,7 +13564,7 @@ elf32_arm_fix_exidx_coverage (asection *
 	  if (sec->size == 0)
 	    continue;
 
-	  insert_cantunwind_after(last_text_sec, last_exidx_sec);
+	  insert_cantunwind_after (last_text_sec, last_exidx_sec);
 	  last_unwind_type = 0;
 	  continue;
 	}
@@ -13755,7 +13648,7 @@ elf32_arm_fix_exidx_coverage (asection *
       exidx_arm_data->u.exidx.unwind_edit_tail = unwind_edit_tail;
 
       if (deleted_exidx_bytes > 0)
-	adjust_exidx_size(exidx_sec, -deleted_exidx_bytes);
+	adjust_exidx_size (exidx_sec, - deleted_exidx_bytes);
 
       last_exidx_sec = exidx_sec;
       last_text_sec = sec;
@@ -13764,12 +13657,12 @@ elf32_arm_fix_exidx_coverage (asection *
   /* Add terminating CANTUNWIND entry.  */
   if (!bfd_link_relocatable (info) && last_exidx_sec
       && last_unwind_type != 0)
-    insert_cantunwind_after(last_text_sec, last_exidx_sec);
+    insert_cantunwind_after (last_text_sec, last_exidx_sec);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_arm_output_glue_section (struct bfd_link_info *info, bfd *obfd,
 			       bfd *ibfd, const char *name)
 {
@@ -13777,31 +13670,31 @@ elf32_arm_output_glue_section (struct bf
 
   sec = bfd_get_linker_section (ibfd, name);
   if (sec == NULL || (sec->flags & SEC_EXCLUDE) != 0)
-    return TRUE;
+    return true;
 
   osec = sec->output_section;
   if (elf32_arm_write_section (obfd, info, sec, sec->contents))
-    return TRUE;
+    return true;
 
   if (! bfd_set_section_contents (obfd, osec, sec->contents,
 				  sec->output_offset, sec->size))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_arm_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf32_arm_link_hash_table *globals = elf32_arm_hash_table (info);
   asection *sec, *osec;
 
   if (globals == NULL)
-    return FALSE;
+    return false;
 
   /* Invoke the regular ELF backend linker to do all the work.  */
   if (!bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
   /* Process stub sections (eg BE8 encoding, ...).  */
   struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info);
@@ -13816,7 +13709,7 @@ elf32_arm_final_link (bfd *abfd, struct
 	  elf32_arm_write_section (abfd, info, sec, sec->contents);
 	  if (! bfd_set_section_contents (abfd, osec, sec->contents,
 					  sec->output_offset, sec->size))
-	    return FALSE;
+	    return false;
 	}
     }
 
@@ -13827,30 +13720,30 @@ elf32_arm_final_link (bfd *abfd, struct
       if (! elf32_arm_output_glue_section (info, abfd,
 					   globals->bfd_of_glue_owner,
 					   ARM2THUMB_GLUE_SECTION_NAME))
-	return FALSE;
+	return false;
 
       if (! elf32_arm_output_glue_section (info, abfd,
 					   globals->bfd_of_glue_owner,
 					   THUMB2ARM_GLUE_SECTION_NAME))
-	return FALSE;
+	return false;
 
       if (! elf32_arm_output_glue_section (info, abfd,
 					   globals->bfd_of_glue_owner,
 					   VFP11_ERRATUM_VENEER_SECTION_NAME))
-	return FALSE;
+	return false;
 
       if (! elf32_arm_output_glue_section (info, abfd,
 					   globals->bfd_of_glue_owner,
 					   STM32L4XX_ERRATUM_VENEER_SECTION_NAME))
-	return FALSE;
+	return false;
 
       if (! elf32_arm_output_glue_section (info, abfd,
 					   globals->bfd_of_glue_owner,
 					   ARM_BX_GLUE_SECTION_NAME))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return a best guess for the machine number based on the attributes.  */
@@ -13928,6 +13821,8 @@ bfd_arm_get_mach_from_attributes (bfd *
 	return bfd_mach_arm_8M_MAIN;
     case TAG_CPU_ARCH_V8_1M_MAIN:
 	return bfd_mach_arm_8_1M_MAIN;
+    case TAG_CPU_ARCH_V9:
+	return bfd_mach_arm_9;
 
     default:
       /* Force entry to be added for any new known Tag_CPU_arch value.  */
@@ -13940,7 +13835,7 @@ bfd_arm_get_mach_from_attributes (bfd *
 
 /* Set the right machine number.  */
 
-static bfd_boolean
+static bool
 elf32_arm_object_p (bfd *abfd)
 {
   unsigned int mach;
@@ -13948,20 +13843,15 @@ elf32_arm_object_p (bfd *abfd)
   mach = bfd_arm_get_mach_from_notes (abfd, ARM_NOTE_SECTION);
 
   if (mach == bfd_mach_arm_unknown)
-    {
-      if (elf_elfheader (abfd)->e_flags & EF_ARM_MAVERICK_FLOAT)
-	mach = bfd_mach_arm_ep9312;
-      else
-	mach = bfd_arm_get_mach_from_attributes (abfd);
-    }
+    mach = bfd_arm_get_mach_from_attributes (abfd);
 
   bfd_default_set_arch_mach (abfd, bfd_arch_arm, mach);
-  return TRUE;
+  return true;
 }
 
 /* Function to keep ARM specific flags in the ELF header.  */
 
-static bfd_boolean
+static bool
 elf32_arm_set_private_flags (bfd *abfd, flagword flags)
 {
   if (elf_flags_init (abfd)
@@ -13982,22 +13872,22 @@ elf32_arm_set_private_flags (bfd *abfd,
   else
     {
       elf_elfheader (abfd)->e_flags = flags;
-      elf_flags_init (abfd) = TRUE;
+      elf_flags_init (abfd) = true;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy backend specific data from one object module to another.  */
 
-static bfd_boolean
+static bool
 elf32_arm_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   flagword in_flags;
   flagword out_flags;
 
   if (! is_arm_elf (ibfd) || ! is_arm_elf (obfd))
-    return TRUE;
+    return true;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
@@ -14008,11 +13898,11 @@ elf32_arm_copy_private_bfd_data (bfd *ib
     {
       /* Cannot mix APCS26 and APCS32 code.  */
       if ((in_flags & EF_ARM_APCS_26) != (out_flags & EF_ARM_APCS_26))
-	return FALSE;
+	return false;
 
       /* Cannot mix float APCS and non-float APCS code.  */
       if ((in_flags & EF_ARM_APCS_FLOAT) != (out_flags & EF_ARM_APCS_FLOAT))
-	return FALSE;
+	return false;
 
       /* If the src and dest have different interworking flags
 	 then turn off the interworking bit.  */
@@ -14032,7 +13922,7 @@ elf32_arm_copy_private_bfd_data (bfd *ib
     }
 
   elf_elfheader (obfd)->e_flags = in_flags;
-  elf_flags_init (obfd) = TRUE;
+  elf_flags_init (obfd) = true;
 
   return _bfd_elf_copy_private_bfd_data (ibfd, obfd);
 }
@@ -14101,7 +13991,7 @@ elf32_arm_obj_attrs_order (int num)
 }
 
 /* Attribute numbers >=64 (mod 128) can be safely ignored.  */
-static bfd_boolean
+static bool
 elf32_arm_obj_attrs_handle_unknown (bfd *abfd, int tag)
 {
   if ((tag & 127) < 64)
@@ -14110,14 +14000,14 @@ elf32_arm_obj_attrs_handle_unknown (bfd
 	(_("%pB: unknown mandatory EABI object attribute %d"),
 	 abfd, tag);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   else
     {
       _bfd_error_handler
 	(_("warning: %pB: unknown EABI object attribute %d"),
 	 abfd, tag);
-      return TRUE;
+      return true;
     }
 }
 
@@ -14171,11 +14061,12 @@ set_secondary_compatible_arch (bfd *abfd
 
 static int
 tag_cpu_arch_combine (bfd *ibfd, int oldtag, int *secondary_compat_out,
-		      int newtag, int secondary_compat)
+		      int newtag, int secondary_compat,
+		      const char *const name_table[])
 {
 #define T(X) TAG_CPU_ARCH_##X
   int tagl, tagh, result;
-  const int v6t2[] =
+  static const int v6t2[] =
     {
       T(V6T2),   /* PRE_V4.  */
       T(V6T2),   /* V4.  */
@@ -14187,7 +14078,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V7),     /* V6KZ.  */
       T(V6T2)    /* V6T2.  */
     };
-  const int v6k[] =
+  static const int v6k[] =
     {
       T(V6K),    /* PRE_V4.  */
       T(V6K),    /* V4.  */
@@ -14200,7 +14091,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V7),     /* V6T2.  */
       T(V6K)     /* V6K.  */
     };
-  const int v7[] =
+  static const int v7[] =
     {
       T(V7),     /* PRE_V4.  */
       T(V7),     /* V4.  */
@@ -14214,7 +14105,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V7),     /* V6K.  */
       T(V7)      /* V7.  */
     };
-  const int v6_m[] =
+  static const int v6_m[] =
     {
       -1,	 /* PRE_V4.  */
       -1,	 /* V4.  */
@@ -14229,7 +14120,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V7),     /* V7.  */
       T(V6_M)    /* V6_M.  */
     };
-  const int v6s_m[] =
+  static const int v6s_m[] =
     {
       -1,	 /* PRE_V4.  */
       -1,	 /* V4.  */
@@ -14245,7 +14136,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V6S_M),  /* V6_M.  */
       T(V6S_M)   /* V6S_M.  */
     };
-  const int v7e_m[] =
+  static const int v7e_m[] =
     {
       -1,	 /* PRE_V4.  */
       -1,	 /* V4.  */
@@ -14262,7 +14153,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V7E_M),  /* V6S_M.  */
       T(V7E_M)   /* V7E_M.  */
     };
-  const int v8[] =
+  static const int v8[] =
     {
       T(V8),		/* PRE_V4.  */
       T(V8),		/* V4.  */
@@ -14278,9 +14169,16 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V8),		/* V6_M.  */
       T(V8),		/* V6S_M.  */
       T(V8),		/* V7E_M.  */
-      T(V8)		/* V8.  */
+      T(V8),		/* V8.  */
+      T(V8),		/* V8-R.  */
+      T(V8),		/* V8-M.BASE.  */
+      T(V8),		/* V8-M.MAIN.  */
+      T(V8),		/* V8.1.  */
+      T(V8),		/* V8.2.  */
+      T(V8),		/* V8.3.  */
+      T(V8),		/* V8.1-M.MAIN.  */
     };
-  const int v8r[] =
+  static const int v8r[] =
     {
       T(V8R),		/* PRE_V4.  */
       T(V8R),		/* V4.  */
@@ -14299,7 +14197,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V8),		/* V8.  */
       T(V8R),		/* V8R.  */
     };
-  const int v8m_baseline[] =
+  static const int v8m_baseline[] =
     {
       -1,		/* PRE_V4.  */
       -1,		/* V4.  */
@@ -14319,7 +14217,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       -1,		/* V8R.  */
       T(V8M_BASE)	/* V8-M BASELINE.  */
     };
-  const int v8m_mainline[] =
+  static const int v8m_mainline[] =
     {
       -1,		/* PRE_V4.  */
       -1,		/* V4.  */
@@ -14340,7 +14238,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       T(V8M_MAIN),	/* V8-M BASELINE.  */
       T(V8M_MAIN)	/* V8-M MAINLINE.  */
     };
-  const int v8_1m_mainline[] =
+  static const int v8_1m_mainline[] =
     {
       -1,		/* PRE_V4.  */
       -1,		/* V4.  */
@@ -14365,7 +14263,33 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       -1,		/* Unused (20).  */
       T(V8_1M_MAIN)	/* V8.1-M MAINLINE.  */
     };
-  const int v4t_plus_v6_m[] =
+  static const int v9[] =
+    {
+      T(V9),		/* PRE_V4.  */
+      T(V9),		/* V4.  */
+      T(V9),		/* V4T.  */
+      T(V9),		/* V5T.  */
+      T(V9),		/* V5TE.  */
+      T(V9),		/* V5TEJ.  */
+      T(V9),		/* V6.  */
+      T(V9),		/* V6KZ.  */
+      T(V9),		/* V6T2.  */
+      T(V9),		/* V6K.  */
+      T(V9),		/* V7.  */
+      T(V9),		/* V6_M.  */
+      T(V9),		/* V6S_M.  */
+      T(V9),		/* V7E_M.  */
+      T(V9),		/* V8.  */
+      T(V9),		/* V8-R.  */
+      T(V9),		/* V8-M.BASE.  */
+      T(V9),		/* V8-M.MAIN.  */
+      T(V9),		/* V8.1.  */
+      T(V9),		/* V8.2.  */
+      T(V9),		/* V8.3.  */
+      T(V9),		/* V8.1-M.MAIN.  */
+      T(V9),		/* V9.  */
+     };
+  static const int v4t_plus_v6_m[] =
     {
       -1,		/* PRE_V4.  */
       -1,		/* V4.  */
@@ -14389,9 +14313,10 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       -1,		/* Unused (19).  */
       -1,		/* Unused (20).  */
       T(V8_1M_MAIN),	/* V8.1-M MAINLINE.  */
+      T(V9),		/* V9.  */
       T(V4T_PLUS_V6_M)	/* V4T plus V6_M.  */
     };
-  const int *comb[] =
+  static const int *const comb[] =
     {
       v6t2,
       v6k,
@@ -14407,6 +14332,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
       NULL,
       NULL,
       v8_1m_mainline,
+      v9,
       /* Pseudo-architecture.  */
       v4t_plus_v6_m
     };
@@ -14453,8 +14379,8 @@ tag_cpu_arch_combine (bfd *ibfd, int old
 
   if (result == -1)
     {
-      _bfd_error_handler (_("error: %pB: conflicting CPU architectures %d/%d"),
-			  ibfd, oldtag, newtag);
+      _bfd_error_handler (_("error: conflicting CPU architectures %s vs %s in %pB"),
+			  name_table[oldtag], name_table[newtag], ibfd);
       return -1;
     }
 
@@ -14464,7 +14390,7 @@ tag_cpu_arch_combine (bfd *ibfd, int old
 
 /* Query attributes object to see if integer divide instructions may be
    present in an object.  */
-static bfd_boolean
+static bool
 elf32_arm_attributes_accept_div (const obj_attribute *attr)
 {
   int arch = attr[Tag_CPU_arch].i;
@@ -14475,28 +14401,28 @@ elf32_arm_attributes_accept_div (const o
     case 0:
       /* Integer divide allowed if instruction contained in archetecture.  */
       if (arch == TAG_CPU_ARCH_V7 && (profile == 'R' || profile == 'M'))
-	return TRUE;
+	return true;
       else if (arch >= TAG_CPU_ARCH_V7E_M)
-	return TRUE;
+	return true;
       else
-	return FALSE;
+	return false;
 
     case 1:
       /* Integer divide explicitly prohibited.  */
-      return FALSE;
+      return false;
 
     default:
       /* Unrecognised case - treat as allowing divide everywhere.  */
     case 2:
       /* Integer divide allowed in ARM state.  */
-      return TRUE;
+      return true;
     }
 }
 
 /* Query attributes object to see if integer divide instructions are
    forbidden to be in the object.  This is not the inverse of
    elf32_arm_attributes_accept_div.  */
-static bfd_boolean
+static bool
 elf32_arm_attributes_forbid_div (const obj_attribute *attr)
 {
   return attr[Tag_DIV_use].i == 1;
@@ -14505,7 +14431,7 @@ elf32_arm_attributes_forbid_div (const o
 /* Merge EABI object attributes from IBFD into OBFD.  Raise an error if there
    are conflicting attributes.  */
 
-static bfd_boolean
+static bool
 elf32_arm_merge_eabi_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -14515,20 +14441,20 @@ elf32_arm_merge_eabi_attributes (bfd *ib
      2 = weak requirement.  */
   static const int order_021[3] = {0, 2, 1};
   int i;
-  bfd_boolean result = TRUE;
+  bool result = true;
   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;
+    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;
+    return true;
 
   if (!elf_known_obj_attributes_proc (obfd)[0].i)
     {
@@ -14552,7 +14478,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	      _bfd_error_handler
 		(_("Error: %pB has both the current and legacy "
 		   "Tag_MPextension_use attributes"), ibfd);
-	      result = FALSE;
+	      result = false;
 	    }
 
 	  out_attr[Tag_MPextension_use] =
@@ -14561,6 +14487,14 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	  out_attr[Tag_MPextension_use_legacy].i = 0;
 	}
 
+      /* PR 28859 and 28848:  Handle the case where the first input file,
+	 eg crti.o, has a Tag_ABI_HardFP_use of 3 but no Tag_FP_arch set.
+	 Using Tag_ABI_HardFP_use in this way is deprecated, so reset the
+	 attribute to zero.
+	 FIXME: Should we handle other non-zero values of Tag_ABI_HardFO_use ? */
+      if (out_attr[Tag_ABI_HardFP_use].i == 3 && out_attr[Tag_FP_arch].i == 0)
+	out_attr[Tag_ABI_HardFP_use].i = 0;
+
       return result;
     }
 
@@ -14582,7 +14516,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	    (_("error: %pB uses VFP register arguments, %pB does not"),
 	     in_attr[Tag_ABI_VFP_args].i ? ibfd : obfd,
 	     in_attr[Tag_ABI_VFP_args].i ? obfd : ibfd);
-	  result = FALSE;
+	  result = false;
 	}
     }
 
@@ -14606,7 +14540,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	    int secondary_compat = -1, secondary_compat_out = -1;
 	    unsigned int saved_out_attr = out_attr[i].i;
 	    int arch_attr;
-	    static const char *name_table[] =
+	    static const char *const name_table[] =
 	      {
 		/* These aren't real CPU names, but we can't guess
 		   that from the architecture version alone.  */
@@ -14623,10 +14557,16 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 		"ARM v7",
 		"ARM v6-M",
 		"ARM v6S-M",
+		"ARM v7E-M",
 		"ARM v8",
-		"",
+		"ARM v8-R",
 		"ARM v8-M.baseline",
 		"ARM v8-M.mainline",
+		"ARM v8.1-A",
+		"ARM v8.2-A",
+		"ARM v8.3-A",
+		"ARM v8.1-M.mainline",
+		"ARM v9",
 	    };
 
 	    /* Merge Tag_CPU_arch and Tag_also_compatible_with.  */
@@ -14635,11 +14575,12 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	    arch_attr = tag_cpu_arch_combine (ibfd, out_attr[i].i,
 					      &secondary_compat_out,
 					      in_attr[i].i,
-					      secondary_compat);
+					      secondary_compat,
+					      name_table);
 
 	    /* Return with error if failed to merge.  */
 	    if (arch_attr == -1)
-	      return FALSE;
+	      return false;
 
 	    out_attr[i].i = arch_attr;
 
@@ -14688,6 +14629,10 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	case Tag_T2EE_use:
 	case Tag_MPextension_use:
 	case Tag_MVE_arch:
+	case Tag_PAC_extension:
+	case Tag_BTI_extension:
+	case Tag_BTI_use:
+	case Tag_PACRET_use:
 	  /* Use the largest value specified.  */
 	  if (in_attr[i].i > out_attr[i].i)
 	    out_attr[i].i = in_attr[i].i;
@@ -14711,7 +14656,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	      _bfd_error_handler
 		(_("error: %pB: 8-byte data alignment conflicts with %pB"),
 		 obfd, ibfd);
-	      result = FALSE; */
+	      result = false; */
 	    }
 	  /* Fall through.  */
 	case Tag_ABI_FP_denormal:
@@ -14741,7 +14686,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 		    (_("error: %pB: unable to merge virtualization attributes "
 		       "with %pB"),
 		     obfd, ibfd);
-		  result = FALSE;
+		  result = false;
 		}
 	    }
 	  break;
@@ -14768,7 +14713,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 		     ibfd,
 		     in_attr[i].i ? in_attr[i].i : '0',
 		     out_attr[i].i ? out_attr[i].i : '0');
-		  result = FALSE;
+		  result = false;
 		}
 	    }
 	  break;
@@ -14913,7 +14858,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	    {
 	      _bfd_error_handler
 		(_("error: %pB: conflicting use of R9"), ibfd);
-	      result = FALSE;
+	      result = false;
 	    }
 	  if (out_attr[i].i == AEABI_R9_unused)
 	    out_attr[i].i = in_attr[i].i;
@@ -14926,7 +14871,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	      _bfd_error_handler
 		(_("error: %pB: SB relative addressing conflicts with use of R9"),
 		 ibfd);
-	      result = FALSE;
+	      result = false;
 	    }
 	  /* Use the smallest value specified.  */
 	  if (in_attr[i].i < out_attr[i].i)
@@ -14960,11 +14905,11 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 		  static const char *aeabi_enum_names[] =
 		    { "", "variable-size", "32-bit", "" };
 		  const char *in_name =
-		    in_attr[i].i < ARRAY_SIZE(aeabi_enum_names)
+		    in_attr[i].i < ARRAY_SIZE (aeabi_enum_names)
 		    ? aeabi_enum_names[in_attr[i].i]
 		    : "<unknown>";
 		  const char *out_name =
-		    out_attr[i].i < ARRAY_SIZE(aeabi_enum_names)
+		    out_attr[i].i < ARRAY_SIZE (aeabi_enum_names)
 		    ? aeabi_enum_names[out_attr[i].i]
 		    : "<unknown>";
 		  _bfd_error_handler
@@ -14982,7 +14927,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 	      _bfd_error_handler
 		(_("error: %pB uses iWMMXt register arguments, %pB does not"),
 		 ibfd, obfd);
-	      result = FALSE;
+	      result = false;
 	    }
 	  break;
 	case Tag_compatibility:
@@ -14999,7 +14944,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 		  _bfd_error_handler
 		    (_("error: fp16 format mismatch between %pB and %pB"),
 		     ibfd, obfd);
-		  result = FALSE;
+		  result = false;
 		}
 	    }
 	  if (in_attr[i].i != 0)
@@ -15036,7 +14981,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 		    (_("%pB has both the current and legacy "
 		       "Tag_MPextension_use attributes"),
 		     ibfd);
-		  result = FALSE;
+		  result = false;
 		}
 	    }
 
@@ -15074,7 +15019,7 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
   if (!_bfd_elf_merge_object_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   /* Check for any attributes not known on ARM.  */
   result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd);
@@ -15085,14 +15030,14 @@ elf32_arm_merge_eabi_attributes (bfd *ib
 
 /* Return TRUE if the two EABI versions are incompatible.  */
 
-static bfd_boolean
+static bool
 elf32_arm_versions_compatible (unsigned iver, unsigned over)
 {
   /* v4 and v5 are the same spec before and after it was released,
      so allow mixing them.  */
   if ((iver == EF_ARM_EABI_VER4 && over == EF_ARM_EABI_VER5)
       || (iver == EF_ARM_EABI_VER5 && over == EF_ARM_EABI_VER4))
-    return TRUE;
+    return true;
 
   return (iver == over);
 }
@@ -15100,12 +15045,12 @@ elf32_arm_versions_compatible (unsigned
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf32_arm_merge_private_bfd_data (bfd *, struct bfd_link_info *);
 
 /* Display the flags field.  */
 
-static bfd_boolean
+static bool
 elf32_arm_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE * file = (FILE *) ptr;
@@ -15120,7 +15065,7 @@ elf32_arm_print_private_bfd_data (bfd *a
   /* Ignore init flag - it may not be set, despite the flags field
      containing valid data.  */
 
-  fprintf (file, _("private flags = %lx:"), elf_elfheader (abfd)->e_flags);
+  fprintf (file, _("private flags = 0x%lx:"), elf_elfheader (abfd)->e_flags);
 
   switch (EF_ARM_EABI_VERSION (flags))
     {
@@ -15138,8 +15083,6 @@ elf32_arm_print_private_bfd_data (bfd *a
 
       if (flags & EF_ARM_VFP_FLOAT)
 	fprintf (file, _(" [VFP float format]"));
-      else if (flags & EF_ARM_MAVERICK_FLOAT)
-	fprintf (file, _(" [Maverick float format]"));
       else
 	fprintf (file, _(" [FPA float format]"));
 
@@ -15160,8 +15103,7 @@ elf32_arm_print_private_bfd_data (bfd *a
 
       flags &= ~(EF_ARM_INTERWORK | EF_ARM_APCS_26 | EF_ARM_APCS_FLOAT
 		 | EF_ARM_PIC | EF_ARM_NEW_ABI | EF_ARM_OLD_ABI
-		 | EF_ARM_SOFT_FLOAT | EF_ARM_VFP_FLOAT
-		 | EF_ARM_MAVERICK_FLOAT);
+		 | EF_ARM_SOFT_FLOAT | EF_ARM_VFP_FLOAT);
       break;
 
     case EF_ARM_EABI_VER1:
@@ -15241,11 +15183,11 @@ elf32_arm_print_private_bfd_data (bfd *a
   flags &= ~ (EF_ARM_RELEXEC | EF_ARM_PIC);
 
   if (flags)
-    fprintf (file, _("<Unrecognised flag bits set>"));
+    fprintf (file, _(" <Unrecognised flag bits set>"));
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 static int
@@ -15292,7 +15234,7 @@ elf32_arm_gc_mark_hook (asection *sec,
 
 /* Look through the relocs for a section during the first phase.  */
 
-static bfd_boolean
+static bool
 elf32_arm_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -15303,35 +15245,26 @@ elf32_arm_check_relocs (bfd *abfd, struc
   bfd *dynobj;
   asection *sreloc;
   struct elf32_arm_link_hash_table *htab;
-  bfd_boolean call_reloc_p;
-  bfd_boolean may_become_dynamic_p;
-  bfd_boolean may_need_local_target_p;
+  bool call_reloc_p;
+  bool may_become_dynamic_p;
+  bool may_need_local_target_p;
   unsigned long nsyms;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   BFD_ASSERT (is_arm_elf (abfd));
 
   htab = elf32_arm_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   sreloc = NULL;
 
-  /* Create dynamic sections for relocatable executables so that we can
-     copy relocations.  */
-  if (htab->root.is_relocatable_executable
-      && ! htab->root.dynamic_sections_created)
-    {
-      if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
-	return FALSE;
-    }
-
   if (htab->root.dynobj == NULL)
     htab->root.dynobj = abfd;
   if (!create_ifunc_sections (info))
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
 
@@ -15360,7 +15293,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	{
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"), abfd,
 			      r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       h = NULL;
@@ -15370,10 +15303,10 @@ 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;
+		return false;
 	    }
 	  else
 	    {
@@ -15386,9 +15319,9 @@ elf32_arm_check_relocs (bfd *abfd, struc
 
       eh = (struct elf32_arm_link_hash_entry *) h;
 
-      call_reloc_p = FALSE;
-      may_become_dynamic_p = FALSE;
-      may_need_local_target_p = FALSE;
+      call_reloc_p = false;
+      may_become_dynamic_p = false;
+      may_need_local_target_p = false;
 
       /* Could be done earlier, if h were already available.  */
       r_type = elf32_arm_tls_transition (info, r_type, h);
@@ -15399,9 +15332,11 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	    if (h == NULL)
 	      {
 		if (!elf32_arm_allocate_local_sym_info (abfd))
-		  return FALSE;
-		elf32_arm_local_fdpic_cnts(abfd)[r_symndx].gotofffuncdesc_cnt += 1;
-		elf32_arm_local_fdpic_cnts(abfd)[r_symndx].funcdesc_offset = -1;
+		  return false;
+		if (r_symndx >= elf32_arm_num_entries (abfd))
+		  return false;
+		elf32_arm_local_fdpic_cnts (abfd) [r_symndx].gotofffuncdesc_cnt += 1;
+		elf32_arm_local_fdpic_cnts (abfd) [r_symndx].funcdesc_offset = -1;
 	      }
 	    else
 	      {
@@ -15415,9 +15350,9 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	    if (h == NULL)
 	      {
 		/* Such a relocation is not supposed to be generated
-		   by gcc on a static function. */
+		   by gcc on a static function.  */
 		/* Anyway if needed it could be handled.  */
-		abort();
+		return false;
 	      }
 	    else
 	      {
@@ -15431,9 +15366,11 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	    if (h == NULL)
 	      {
 		if (!elf32_arm_allocate_local_sym_info (abfd))
-		  return FALSE;
-		elf32_arm_local_fdpic_cnts(abfd)[r_symndx].funcdesc_cnt += 1;
-		elf32_arm_local_fdpic_cnts(abfd)[r_symndx].funcdesc_offset = -1;
+		  return false;
+		if (r_symndx >= elf32_arm_num_entries (abfd))
+		  return false;
+		elf32_arm_local_fdpic_cnts (abfd) [r_symndx].funcdesc_cnt += 1;
+		elf32_arm_local_fdpic_cnts (abfd) [r_symndx].funcdesc_offset = -1;
 	      }
 	    else
 	      {
@@ -15485,7 +15422,14 @@ elf32_arm_check_relocs (bfd *abfd, struc
 		{
 		  /* This is a global offset table entry for a local symbol.  */
 		  if (!elf32_arm_allocate_local_sym_info (abfd))
-		    return FALSE;
+		    return false;
+		  if (r_symndx >= elf32_arm_num_entries (abfd))
+		    {
+		      _bfd_error_handler (_("%pB: bad symbol index: %d"), abfd,
+					  r_symndx);
+		      return false;
+		    }
+
 		  elf_local_got_refcounts (abfd)[r_symndx] += 1;
 		  old_tls_type = elf32_arm_local_got_tls_type (abfd) [r_symndx];
 		}
@@ -15530,7 +15474,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	  case R_ARM_GOTPC:
 	    if (htab->root.sgot == NULL
 		&& !create_got_section (htab->root.dynobj, info))
-	      return FALSE;
+	      return false;
 	    break;
 
 	  case R_ARM_PC24:
@@ -15541,16 +15485,16 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	  case R_ARM_THM_CALL:
 	  case R_ARM_THM_JUMP24:
 	  case R_ARM_THM_JUMP19:
-	    call_reloc_p = TRUE;
-	    may_need_local_target_p = TRUE;
+	    call_reloc_p = true;
+	    may_need_local_target_p = true;
 	    break;
 
 	  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;
+		may_need_local_target_p = true;
 		break;
 	      }
 	    else goto jump_over;
@@ -15568,7 +15512,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 		   abfd, elf32_arm_howto_table_1[r_type].name,
 		   (h) ? h->root.root.string : "a local symbol");
 		bfd_set_error (bfd_error_bad_value);
-		return FALSE;
+		return false;
 	      }
 
 	    /* Fall through.  */
@@ -15588,7 +15532,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	  case R_ARM_THM_MOVT_PREL:
 
 	    /* Should the interworking branches be listed here?  */
-	    if ((bfd_link_pic (info) || htab->root.is_relocatable_executable
+	    if ((bfd_link_pic (info)
 		 || htab->fdpic_p)
 		&& (sec->flags & SEC_ALLOC) != 0)
 	      {
@@ -15599,32 +15543,32 @@ elf32_arm_check_relocs (bfd *abfd, struc
 		       we treat local relative references as calls;
 		       see the related SYMBOL_CALLS_LOCAL code in
 		       allocate_dynrelocs.  */
-		    call_reloc_p = TRUE;
-		    may_need_local_target_p = TRUE;
+		    call_reloc_p = true;
+		    may_need_local_target_p = true;
 		  }
 		else
 		  /* We are creating a shared library or relocatable
 		     executable, and this is a reloc against a global symbol,
 		     or a non-PC-relative reloc against a local symbol.
 		     We may need to copy the reloc into the output.  */
-		  may_become_dynamic_p = TRUE;
+		  may_become_dynamic_p = true;
 	      }
 	    else
-	      may_need_local_target_p = TRUE;
+	      may_need_local_target_p = true;
 	    break;
 
 	/* This relocation describes the C++ object vtable hierarchy.
 	   Reconstruct it for later use during GC.  */
 	case R_ARM_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_ARM_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 	}
 
@@ -15662,7 +15606,7 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	    {
 	      local_iplt = elf32_arm_create_local_iplt (abfd, r_symndx);
 	      if (local_iplt == NULL)
-		return FALSE;
+		return false;
 	      root_plt = &local_iplt->root;
 	      arm_plt = &local_iplt->arm;
 	    }
@@ -15698,38 +15642,28 @@ elf32_arm_check_relocs (bfd *abfd, struc
 		(sec, dynobj, 2, abfd, ! htab->use_rel);
 
 	      if (sreloc == NULL)
-		return FALSE;
-
-	      /* BPABI objects never have dynamic relocations mapped.  */
-	      if (htab->symbian_p)
-		{
-		  flagword flags;
-
-		  flags = bfd_section_flags (sreloc);
-		  flags &= ~(SEC_LOAD | SEC_ALLOC);
-		  bfd_set_section_flags (sreloc, flags);
-		}
+		return false;
 	    }
 
 	  /* 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);
 	      if (head == NULL)
-		return FALSE;
+		return false;
 	    }
 
 	  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)
-		return FALSE;
+		return false;
 	      p->next = *head;
 	      *head = p;
 	      p->sec = sec;
@@ -15740,22 +15674,22 @@ elf32_arm_check_relocs (bfd *abfd, struc
 	  if (elf32_arm_howto_from_type (r_type)->pc_relative)
 	    p->pc_count += 1;
 	  p->count += 1;
-	  if (h == NULL && htab->fdpic_p && !bfd_link_pic(info)
-	      && r_type != R_ARM_ABS32 && r_type != R_ARM_ABS32_NOI) {
-	    /* Here we only support R_ARM_ABS32 and R_ARM_ABS32_NOI
-	       that will become rofixup.  */
-	    /* This is due to the fact that we suppose all will become rofixup.  */
-	    fprintf(stderr, "FDPIC does not yet support %d relocation to become dynamic for executable\n", r_type);
-	    _bfd_error_handler
-	      (_("FDPIC does not yet support %s relocation"
-		 " to become dynamic for executable"),
-	       elf32_arm_howto_table_1[r_type].name);
-	    abort();
-	  }
+	  if (h == NULL && htab->fdpic_p && !bfd_link_pic (info)
+	      && r_type != R_ARM_ABS32 && r_type != R_ARM_ABS32_NOI)
+	    {
+	      /* Here we only support R_ARM_ABS32 and R_ARM_ABS32_NOI
+		 that will become rofixup.  */
+	      /* This is due to the fact that we suppose all will become rofixup.  */
+	      _bfd_error_handler
+		(_("FDPIC does not yet support %s relocation"
+		   " to become dynamic for executable"),
+		 elf32_arm_howto_table_1[r_type].name);
+	      abort ();
+	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -15926,7 +15860,7 @@ elf32_arm_update_relocs (asection *o,
    their own section (as would be the case if code was compiled with
    -ffunction-sections).  */
 
-static bfd_boolean
+static bool
 elf32_arm_gc_mark_extra_sections (struct bfd_link_info *info,
 				  elf_gc_mark_hook_fn gc_mark_hook)
 {
@@ -15939,8 +15873,8 @@ elf32_arm_gc_mark_extra_sections (struct
   const struct elf_backend_data *bed;
   struct elf_link_hash_entry **sym_hashes;
   struct elf32_arm_link_hash_entry *cmse_hash;
-  bfd_boolean again, is_v8m, first_bfd_browse = TRUE;
-  bfd_boolean debug_sec_need_to_be_marked = FALSE;
+  bool again, is_v8m, first_bfd_browse = true;
+  bool extra_marks_added = false;
   asection *isec;
 
   _bfd_elf_gc_mark_extra_sections (info, gc_mark_hook);
@@ -15951,10 +15885,10 @@ elf32_arm_gc_mark_extra_sections (struct
 
   /* Marking EH data may cause additional code sections to be marked,
      requiring multiple passes.  */
-  again = TRUE;
+  again = true;
   while (again)
     {
-      again = FALSE;
+      again = false;
       for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
 	{
 	  asection *o;
@@ -15974,9 +15908,9 @@ elf32_arm_gc_mark_extra_sections (struct
 		  && !o->gc_mark
 		  && elf_shdrp[hdr->sh_link]->bfd_section->gc_mark)
 		{
-		  again = TRUE;
+		  again = true;
 		  if (!_bfd_elf_gc_mark (info, o, gc_mark_hook))
-		    return FALSE;
+		    return false;
 		}
 	    }
 
@@ -15984,6 +15918,8 @@ elf32_arm_gc_mark_extra_sections (struct
 	     of them so no need for a second browsing.  */
 	  if (is_v8m && first_bfd_browse)
 	    {
+	      bool debug_sec_need_to_be_marked = false;
+
 	      sym_hashes = elf_sym_hashes (sub);
 	      bed = get_elf_backend_data (sub);
 	      symtab_hdr = &elf_tdata (sub)->symtab_hdr;
@@ -15994,19 +15930,21 @@ elf32_arm_gc_mark_extra_sections (struct
 	      for (i = ext_start; i < sym_count; i++)
 		{
 		  cmse_hash = elf32_arm_hash_entry (sym_hashes[i - ext_start]);
+		  if (cmse_hash == NULL)
+		    continue;
 
 		  /* Assume it is a special symbol.  If not, cmse_scan will
 		     warn about it and user can do something about it.  */
-		  if (CONST_STRNEQ (cmse_hash->root.root.root.string,
-				    CMSE_PREFIX))
+		  if (startswith (cmse_hash->root.root.root.string,
+				  CMSE_PREFIX))
 		    {
 		      cmse_sec = cmse_hash->root.root.u.def.section;
 		      if (!cmse_sec->gc_mark
 			  && !_bfd_elf_gc_mark (info, cmse_sec, gc_mark_hook))
-			return FALSE;
+			return false;
 		      /* The debug sections related to these secure entry
 			 functions are marked on enabling below flag.  */
-		      debug_sec_need_to_be_marked = TRUE;
+		      debug_sec_need_to_be_marked = true;
 		    }
 		}
 
@@ -16019,21 +15957,30 @@ elf32_arm_gc_mark_extra_sections (struct
 		    {
 		      /* If not a debug sections, skip it.  */
 		      if (!isec->gc_mark && (isec->flags & SEC_DEBUGGING))
-			isec->gc_mark = 1 ;
+			{
+			  isec->gc_mark = 1;
+			  extra_marks_added = true;
+			}
 		    }
-		  debug_sec_need_to_be_marked = FALSE;
+		  debug_sec_need_to_be_marked = false;
 		}
 	    }
 	}
-      first_bfd_browse = FALSE;
+
+      first_bfd_browse = false;
     }
 
-  return TRUE;
+  /* PR 30354: If we have added extra marks then make sure that any
+     dependencies of the newly marked sections are also marked.  */
+  if (extra_marks_added)
+    _bfd_elf_gc_mark_extra_sections (info, gc_mark_hook);
+
+  return true;
 }
 
 /* Treat mapping symbols as special target symbols.  */
 
-static bfd_boolean
+static bool
 elf32_arm_is_target_special_symbol (bfd * abfd ATTRIBUTE_UNUSED, asymbol * sym)
 {
   return bfd_is_arm_special_symbol_name (sym->name,
@@ -16049,18 +15996,29 @@ elf32_arm_maybe_function_sym (const asym
 			      bfd_vma *code_off)
 {
   bfd_size_type size;
+  elf_symbol_type * elf_sym = (elf_symbol_type *) sym;
 
   if ((sym->flags & (BSF_SECTION_SYM | BSF_FILE | BSF_OBJECT
 		     | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC)) != 0
       || sym->section != sec)
     return 0;
 
+  size = (sym->flags & BSF_SYNTHETIC) ? 0 : elf_sym->internal_elf_sym.st_size;
+
   if (!(sym->flags & BSF_SYNTHETIC))
-    switch (ELF_ST_TYPE (((elf_symbol_type *) sym)->internal_elf_sym.st_info))
+    switch (ELF_ST_TYPE (elf_sym->internal_elf_sym.st_info))
       {
+	case STT_NOTYPE:
+	  /* Ignore symbols created by the annobin plugin for gcc and clang.
+	     These symbols are hidden, local, notype and have a size of 0.  */
+	  if (size == 0
+	      && sym->flags & BSF_LOCAL
+	      && ELF_ST_VISIBILITY (elf_sym->internal_elf_sym.st_other) == STV_HIDDEN)
+	    return 0;
+	  /* Fall through.  */
 	case STT_FUNC:
 	case STT_ARM_TFUNC:
-	case STT_NOTYPE:
+	  /* FIXME: Allow STT_GNU_IFUNC as well ?  */
 	  break;
 	default:
 	  return 0;
@@ -16072,51 +16030,32 @@ elf32_arm_maybe_function_sym (const asym
     return 0;
 
   *code_off = sym->value;
-  size = 0;
-  if (!(sym->flags & BSF_SYNTHETIC))
-    size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
-  if (size == 0)
-    size = 1;
-  return size;
+
+  /* Do not return 0 for the function's size.  */
+  return size ? size : 1;
+
 }
 
-static bfd_boolean
+static bool
 elf32_arm_find_inliner_info (bfd *	    abfd,
 			     const char **  filename_ptr,
 			     const char **  functionname_ptr,
 			     unsigned int * line_ptr)
 {
-  bfd_boolean found;
+  bool found;
   found = _bfd_dwarf2_find_inliner_info (abfd, filename_ptr,
 					 functionname_ptr, line_ptr,
 					 & elf_tdata (abfd)->dwarf2_find_line_info);
   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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf32_arm_adjust_dynamic_symbol (struct bfd_link_info * info,
 				 struct elf_link_hash_entry * h)
 {
@@ -16127,7 +16066,7 @@ elf32_arm_adjust_dynamic_symbol (struct
 
   globals = elf32_arm_hash_table (info);
   if (globals == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
 
@@ -16167,7 +16106,7 @@ elf32_arm_adjust_dynamic_symbol (struct
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     {
@@ -16191,13 +16130,13 @@ elf32_arm_adjust_dynamic_symbol (struct
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* If there are no non-GOT references, we do not need a copy
      relocation.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* This is a reference to a symbol defined by a dynamic object which
      is not a function.  */
@@ -16205,11 +16144,9 @@ elf32_arm_adjust_dynamic_symbol (struct
   /* If we are creating a shared library, we must presume that the
      only references to the symbol are via the global offset table.
      For such cases we need not do anything here; the relocations will
-     be handled correctly by relocate_section.  Relocatable executables
-     can reference data in shared objects directly, so we don't need to
-     do anything here.  */
-  if (bfd_link_pic (info) || globals->root.is_relocatable_executable)
-    return TRUE;
+     be handled correctly by relocate_section.  */
+  if (bfd_link_pic (info))
+    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
@@ -16248,7 +16185,7 @@ elf32_arm_adjust_dynamic_symbol (struct
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs_for_symbol (struct elf_link_hash_entry *h, void * inf)
 {
   struct bfd_link_info *info;
@@ -16257,14 +16194,14 @@ allocate_dynrelocs_for_symbol (struct el
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   eh = (struct elf32_arm_link_hash_entry *) h;
 
   info = (struct bfd_link_info *) inf;
   htab = elf32_arm_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if ((htab->root.dynamic_sections_created || h->type == STT_GNU_IFUNC)
       && h->plt.refcount > 0)
@@ -16275,7 +16212,7 @@ allocate_dynrelocs_for_symbol (struct el
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       /* If the call in the PLT entry binds locally, the associated
@@ -16322,7 +16259,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_.  */
@@ -16353,118 +16290,114 @@ allocate_dynrelocs_for_symbol (struct el
   if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = elf32_arm_hash_entry (h)->tls_type;
       int indx;
 
       /* Make sure this symbol is output as a dynamic symbol.
 	 Undefined weak syms won't yet be marked as dynamic.  */
-      if (htab->root.dynamic_sections_created && h->dynindx == -1 && !h->forced_local
+      if (htab->root.dynamic_sections_created
+	  && h->dynindx == -1
+	  && !h->forced_local
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
-      if (!htab->symbian_p)
-	{
-	  s = htab->root.sgot;
-	  h->got.offset = s->size;
+      s = htab->root.sgot;
+      h->got.offset = s->size;
 
-	  if (tls_type == GOT_UNKNOWN)
-	    abort ();
+      if (tls_type == GOT_UNKNOWN)
+	abort ();
 
-	  if (tls_type == GOT_NORMAL)
-	    /* Non-TLS symbols need one GOT slot.  */
-	    s->size += 4;
-	  else
+      if (tls_type == GOT_NORMAL)
+	/* Non-TLS symbols need one GOT slot.  */
+	s->size += 4;
+      else
+	{
+	  if (tls_type & GOT_TLS_GDESC)
 	    {
-	      if (tls_type & GOT_TLS_GDESC)
-		{
-		  /* R_ARM_TLS_DESC needs 2 GOT slots.  */
-		  eh->tlsdesc_got
-		    = (htab->root.sgotplt->size
-		       - elf32_arm_compute_jump_table_size (htab));
-		  htab->root.sgotplt->size += 8;
-		  h->got.offset = (bfd_vma) -2;
-		  /* plt.got_offset needs to know there's a TLS_DESC
-		     reloc in the middle of .got.plt.  */
-		  htab->num_tls_desc++;
-		}
-
-	      if (tls_type & GOT_TLS_GD)
-		{
-		  /* R_ARM_TLS_GD32 and R_ARM_TLS_GD32_FDPIC need two
-		     consecutive GOT slots.  If the symbol is both GD
-		     and GDESC, got.offset may have been
-		     overwritten.  */
-		  h->got.offset = s->size;
-		  s->size += 8;
-		}
-
-	      if (tls_type & GOT_TLS_IE)
-		/* R_ARM_TLS_IE32/R_ARM_TLS_IE32_FDPIC need one GOT
-		   slot.  */
-		s->size += 4;
+	      /* R_ARM_TLS_DESC needs 2 GOT slots.  */
+	      eh->tlsdesc_got
+		= (htab->root.sgotplt->size
+		   - elf32_arm_compute_jump_table_size (htab));
+	      htab->root.sgotplt->size += 8;
+	      h->got.offset = (bfd_vma) -2;
+	      /* plt.got_offset needs to know there's a TLS_DESC
+		 reloc in the middle of .got.plt.  */
+	      htab->num_tls_desc++;
+	    }
+
+	  if (tls_type & GOT_TLS_GD)
+	    {
+	      /* R_ARM_TLS_GD32 and R_ARM_TLS_GD32_FDPIC need two
+		 consecutive GOT slots.  If the symbol is both GD
+		 and GDESC, got.offset may have been
+		 overwritten.  */
+	      h->got.offset = s->size;
+	      s->size += 8;
 	    }
 
-	  dyn = htab->root.dynamic_sections_created;
+	  if (tls_type & GOT_TLS_IE)
+	    /* R_ARM_TLS_IE32/R_ARM_TLS_IE32_FDPIC need one GOT
+	       slot.  */
+	    s->size += 4;
+	}
 
-	  indx = 0;
-	  if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
-					       bfd_link_pic (info),
-					       h)
-	      && (!bfd_link_pic (info)
-		  || !SYMBOL_REFERENCES_LOCAL (info, h)))
-	    indx = h->dynindx;
-
-	  if (tls_type != GOT_NORMAL
-	      && (bfd_link_dll (info) || indx != 0)
-	      && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-		  || h->root.type != bfd_link_hash_undefweak))
-	    {
-	      if (tls_type & GOT_TLS_IE)
-		elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
+      dyn = htab->root.dynamic_sections_created;
 
-	      if (tls_type & GOT_TLS_GD)
-		elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
+      indx = 0;
+      if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)
+	  && (!bfd_link_pic (info)
+	      || !SYMBOL_REFERENCES_LOCAL (info, h)))
+	indx = h->dynindx;
+
+      if (tls_type != GOT_NORMAL
+	  && (bfd_link_dll (info) || indx != 0)
+	  && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+	      || h->root.type != bfd_link_hash_undefweak))
+	{
+	  if (tls_type & GOT_TLS_IE)
+	    elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
 
-	      if (tls_type & GOT_TLS_GDESC)
-		{
-		  elf32_arm_allocate_dynrelocs (info, htab->root.srelplt, 1);
-		  /* GDESC needs a trampoline to jump to.  */
-		  htab->tls_trampoline = -1;
-		}
+	  if (tls_type & GOT_TLS_GD)
+	    elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
 
-	      /* Only GD needs it.  GDESC just emits one relocation per
-		 2 entries.  */
-	      if ((tls_type & GOT_TLS_GD) && indx != 0)
-		elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
-	    }
-	  else if (((indx != -1) || htab->fdpic_p)
-		   && !SYMBOL_REFERENCES_LOCAL (info, h))
+	  if (tls_type & GOT_TLS_GDESC)
 	    {
-	      if (htab->root.dynamic_sections_created)
-		/* Reserve room for the GOT entry's R_ARM_GLOB_DAT relocation.  */
-		elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
+	      elf32_arm_allocate_dynrelocs (info, htab->root.srelplt, 1);
+	      /* GDESC needs a trampoline to jump to.  */
+	      htab->tls_trampoline = -1;
 	    }
-	  else if (h->type == STT_GNU_IFUNC
-		   && eh->plt.noncall_refcount == 0)
-	    /* No non-call references resolve the STT_GNU_IFUNC's PLT entry;
-	       they all resolve dynamically instead.  Reserve room for the
-	       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))
-	    /* Reserve room for the GOT entry's R_ARM_RELATIVE relocation.  */
+
+	  /* Only GD needs it.  GDESC just emits one relocation per
+	     2 entries.  */
+	  if ((tls_type & GOT_TLS_GD) && indx != 0)
 	    elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
-	  else if (htab->fdpic_p && tls_type == GOT_NORMAL)
-	    /* Reserve room for rofixup for FDPIC executable.  */
-	    /* TLS relocs do not need space since they are completely
-	       resolved.  */
-	    htab->srofixup->size += 4;
 	}
+      else if (((indx != -1) || htab->fdpic_p)
+	       && !SYMBOL_REFERENCES_LOCAL (info, h))
+	{
+	  if (htab->root.dynamic_sections_created)
+	    /* Reserve room for the GOT entry's R_ARM_GLOB_DAT relocation.  */
+	    elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
+	}
+      else if (h->type == STT_GNU_IFUNC
+	       && eh->plt.noncall_refcount == 0)
+	/* No non-call references resolve the STT_GNU_IFUNC's PLT entry;
+	   they all resolve dynamically instead.  Reserve room for the
+	   GOT entry's R_ARM_IRELATIVE relocation.  */
+	elf32_arm_allocate_irelocs (info, htab->root.srelgot, 1);
+      else if (bfd_link_pic (info)
+	       && !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)
+	/* Reserve room for rofixup for FDPIC executable.  */
+	/* TLS relocs do not need space since they are completely
+	   resolved.  */
+	htab->srofixup->size += 4;
     }
   else
     h->got.offset = (bfd_vma) -1;
@@ -16474,9 +16407,10 @@ allocate_dynrelocs_for_symbol (struct el
     {
       /* Symbol musn't be exported.  */
       if (h->dynindx != -1)
-	abort();
+	abort ();
 
-      /* We only allocate one function descriptor with its associated relocation.  */
+      /* We only allocate one function descriptor with its associated
+	 relocation.  */
       if (eh->fdpic_cnts.funcdesc_offset == -1)
 	{
 	  asection *s = htab->root.sgot;
@@ -16484,7 +16418,7 @@ allocate_dynrelocs_for_symbol (struct el
 	  eh->fdpic_cnts.funcdesc_offset = s->size;
 	  s->size += 8;
 	  /* We will add an R_ARM_FUNCDESC_VALUE relocation or two rofixups.  */
-	  if (bfd_link_pic(info))
+	  if (bfd_link_pic (info))
 	    elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
 	  else
 	    htab->srofixup->size += 8;
@@ -16498,18 +16432,20 @@ allocate_dynrelocs_for_symbol (struct el
       if (htab->root.dynamic_sections_created && h->dynindx == -1
 	  && !h->forced_local)
 	if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	  return FALSE;
+	  return false;
 
       if (h->dynindx == -1)
 	{
-	  /* We only allocate one function descriptor with its associated relocation. q */
+	  /* We only allocate one function descriptor with its
+	     associated relocation.  */
 	  if (eh->fdpic_cnts.funcdesc_offset == -1)
 	    {
 
 	      eh->fdpic_cnts.funcdesc_offset = s->size;
 	      s->size += 8;
-	      /* We will add an R_ARM_FUNCDESC_VALUE relocation or two rofixups.  */
-	      if (bfd_link_pic(info))
+	      /* We will add an R_ARM_FUNCDESC_VALUE relocation or two
+		 rofixups.  */
+	      if (bfd_link_pic (info))
 		elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
 	      else
 		htab->srofixup->size += 8;
@@ -16520,7 +16456,7 @@ allocate_dynrelocs_for_symbol (struct el
 	 R_ARM_RELATIVE/rofixup relocation on it.  */
       eh->fdpic_cnts.gotfuncdesc_offset = s->size;
       s->size += 4;
-      if (h->dynindx == -1 && !bfd_link_pic(info))
+      if (h->dynindx == -1 && !bfd_link_pic (info))
 	htab->srofixup->size += 4;
       else
 	elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
@@ -16531,25 +16467,27 @@ allocate_dynrelocs_for_symbol (struct el
       if (htab->root.dynamic_sections_created && h->dynindx == -1
 	  && !h->forced_local)
 	if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	  return FALSE;
+	  return false;
 
       if (h->dynindx == -1)
 	{
-	  /* We only allocate one function descriptor with its associated relocation.  */
+	  /* We only allocate one function descriptor with its
+	     associated relocation.  */
 	  if (eh->fdpic_cnts.funcdesc_offset == -1)
 	    {
 	      asection *s = htab->root.sgot;
 
 	      eh->fdpic_cnts.funcdesc_offset = s->size;
 	      s->size += 8;
-	      /* We will add an R_ARM_FUNCDESC_VALUE relocation or two rofixups.  */
-	      if (bfd_link_pic(info))
+	      /* We will add an R_ARM_FUNCDESC_VALUE relocation or two
+		 rofixups.  */
+	      if (bfd_link_pic (info))
 		elf32_arm_allocate_dynrelocs (info, htab->root.srelgot, 1);
 	      else
 		htab->srofixup->size += 8;
 	    }
 	}
-      if (h->dynindx == -1 && !bfd_link_pic(info))
+      if (h->dynindx == -1 && !bfd_link_pic (info))
 	{
 	  /* For FDPIC executable we replace R_ARM_RELATIVE with a rofixup.  */
 	  htab->srofixup->size += 4 * eh->fdpic_cnts.funcdesc_cnt;
@@ -16581,7 +16519,7 @@ allocate_dynrelocs_for_symbol (struct el
       _bfd_generic_link_add_one_symbol (info, s->owner,
 					name, BSF_GLOBAL, s,
 					h->root.u.def.value,
-					NULL, TRUE, FALSE, &bh);
+					NULL, true, false, &bh);
 
       myh = (struct elf_link_hash_entry *) bh;
       myh->type = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
@@ -16596,8 +16534,8 @@ allocate_dynrelocs_for_symbol (struct el
       h->root.u.def.value = th->root.u.def.value & ~1;
     }
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -16605,7 +16543,8 @@ allocate_dynrelocs_for_symbol (struct el
      space for pc-relative relocs that have become local due to symbol
      visibility changes.  */
 
-  if (bfd_link_pic (info) || htab->root.is_relocatable_executable || htab->fdpic_p)
+  if (bfd_link_pic (info)
+      || htab->fdpic_p)
     {
       /* Relocs that use pc_count are PC-relative forms, which will appear
 	 on something like ".long foo - ." or "movw REG, foo - .".  We want
@@ -16617,7 +16556,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 +16567,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 +16582,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.  */
@@ -16656,20 +16595,9 @@ allocate_dynrelocs_for_symbol (struct el
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
-
-      else if (htab->root.is_relocatable_executable && h->dynindx == -1
-	       && h->root.type == bfd_link_hash_new)
-	{
-	  /* Output absolute symbols so that we can create relocations
-	     against them.  For normal symbols we output a relocation
-	     against the section that contains them.  */
-	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
-	}
-
     }
   else
     {
@@ -16690,7 +16618,7 @@ allocate_dynrelocs_for_symbol (struct el
 	      && h->root.type == bfd_link_hash_undefweak)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -16699,13 +16627,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;
 
@@ -16713,43 +16641,16 @@ allocate_dynrelocs_for_symbol (struct el
 	  && eh->plt.noncall_refcount == 0
 	  && SYMBOL_REFERENCES_LOCAL (info, h))
 	elf32_arm_allocate_irelocs (info, sreloc, p->count);
-      else if (h->dynindx != -1 && (!bfd_link_pic(info) || !info->symbolic || !h->def_regular))
+      else if (h->dynindx != -1
+	       && (!bfd_link_pic (info) || !info->symbolic || !h->def_regular))
 	elf32_arm_allocate_dynrelocs (info, sreloc, p->count);
-      else if (htab->fdpic_p && !bfd_link_pic(info))
+      else if (htab->fdpic_p && !bfd_link_pic (info))
 	htab->srofixup->size += 4 * p->count;
       else
 	elf32_arm_allocate_dynrelocs (info, sreloc, p->count);
     }
 
-  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;
 }
 
 void
@@ -16767,23 +16668,24 @@ bfd_elf32_arm_set_byteswap_code (struct
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf32_arm_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
-				 struct bfd_link_info * info)
+static bool
+elf32_arm_late_size_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
+			      struct bfd_link_info * info)
 {
   bfd * dynobj;
   asection * s;
-  bfd_boolean plt;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
   struct elf32_arm_link_hash_table *htab;
 
   htab = elf32_arm_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
+
   check_use_blx (htab);
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -16795,6 +16697,7 @@ elf32_arm_size_dynamic_sections (bfd * o
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -16810,7 +16713,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 +16734,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)
 		{
@@ -16842,7 +16744,7 @@ elf32_arm_size_dynamic_sections (bfd * o
 	      else if (p->count != 0)
 		{
 		  srel = elf_section_data (p->sec)->sreloc;
-		  if (htab->fdpic_p && !bfd_link_pic(info))
+		  if (htab->fdpic_p && !bfd_link_pic (info))
 		    htab->srofixup->size += 4 * p->count;
 		  else
 		    elf32_arm_allocate_dynrelocs (info, srel, p->count);
@@ -16853,7 +16755,7 @@ elf32_arm_size_dynamic_sections (bfd * o
 	}
 
       local_got = elf_local_got_refcounts (ibfd);
-      if (!local_got)
+      if (local_got == NULL)
 	continue;
 
       symtab_hdr = & elf_symtab_hdr (ibfd);
@@ -16870,6 +16772,9 @@ elf32_arm_size_dynamic_sections (bfd * o
 	   ++local_got, ++local_iplt_ptr, ++local_tls_type,
 	   ++local_tlsdesc_gotent, ++symndx, ++local_fdpic_cnts)
 	{
+	  if (symndx >= elf32_arm_num_entries (ibfd))
+	    return false;
+
 	  *local_tlsdesc_gotent = (bfd_vma) -1;
 	  local_iplt = *local_iplt_ptr;
 
@@ -16882,7 +16787,7 @@ elf32_arm_size_dynamic_sections (bfd * o
 		  s->size += 8;
 
 		  /* We will add an R_ARM_FUNCDESC_VALUE relocation or two rofixups.  */
-		  if (bfd_link_pic(info))
+		  if (bfd_link_pic (info))
 		    elf32_arm_allocate_dynrelocs (info, srel, 1);
 		  else
 		    htab->srofixup->size += 8;
@@ -16897,14 +16802,14 @@ elf32_arm_size_dynamic_sections (bfd * o
 		  s->size += 8;
 
 		  /* We will add an R_ARM_FUNCDESC_VALUE relocation or two rofixups.  */
-		  if (bfd_link_pic(info))
+		  if (bfd_link_pic (info))
 		    elf32_arm_allocate_dynrelocs (info, srel, 1);
 		  else
 		    htab->srofixup->size += 8;
 		}
 
 	      /* We will add n R_ARM_RELATIVE relocations or n rofixups.  */
-	      if (bfd_link_pic(info))
+	      if (bfd_link_pic (info))
 		elf32_arm_allocate_dynrelocs (info, srel, local_fdpic_cnts->funcdesc_cnt);
 	      else
 		htab->srofixup->size += 4 * local_fdpic_cnts->funcdesc_cnt;
@@ -16916,7 +16821,7 @@ elf32_arm_size_dynamic_sections (bfd * o
 
 	      if (local_iplt->root.refcount > 0)
 		{
-		  elf32_arm_allocate_plt_entry (info, TRUE,
+		  elf32_arm_allocate_plt_entry (info, true,
 						&local_iplt->root,
 						&local_iplt->arm);
 		  if (local_iplt->arm.noncall_refcount == 0)
@@ -16973,9 +16878,10 @@ 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;
+		return false;
 
 	      /* If all references to an STT_GNU_IFUNC PLT are calls,
 		 then all non-call references, including this GOT entry,
@@ -17050,7 +16956,7 @@ elf32_arm_size_dynamic_sections (bfd * o
      for them, it suffices to multiply the reloc count by the jump
      slot size.  */
   if (htab->root.srelplt)
-    htab->sgotplt_jump_table_size = elf32_arm_compute_jump_table_size(htab);
+    htab->sgotplt_jump_table_size = elf32_arm_compute_jump_table_size (htab);
 
   if (htab->tls_trampoline)
     {
@@ -17062,12 +16968,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,8 +16983,7 @@ 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;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char * name;
@@ -17091,16 +16998,16 @@ 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"))
+      else if (startswith (name, ".rel"))
 	{
 	  if (s->size != 0)
 	    {
 	      /* Remember whether there are any reloc sections other
 		 than .rel(a).plt and .rela.plt.unloaded.  */
 	      if (s != htab->root.srelplt && s != htab->srelplt2)
-		relocs = TRUE;
+		relocs = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -17140,83 +17047,19 @@ elf32_arm_size_dynamic_sections (bfd * o
       /* Allocate memory for the section contents.  */
       s->contents = (unsigned char *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	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;
+	return false;
+      s->alloced = 1;
     }
-#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
    _TLS_MODULE_BASE_, if needed.  */
 
-static bfd_boolean
-elf32_arm_always_size_sections (bfd *output_bfd,
-				struct bfd_link_info *info)
+static bool
+elf32_arm_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   asection *tls_sec;
   struct elf32_arm_link_hash_table *htab;
@@ -17224,7 +17067,7 @@ elf32_arm_always_size_sections (bfd *out
   htab = elf32_arm_hash_table (info);
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   tls_sec = elf_hash_table (info)->tls_sec;
 
@@ -17233,7 +17076,7 @@ elf32_arm_always_size_sections (bfd *out
       struct elf_link_hash_entry *tlsbase;
 
       tlsbase = elf_link_hash_lookup
-	(elf_hash_table (info), "_TLS_MODULE_BASE_", TRUE, TRUE, FALSE);
+	(elf_hash_table (info), "_TLS_MODULE_BASE_", true, true, false);
 
       if (tlsbase)
 	{
@@ -17243,30 +17086,30 @@ elf32_arm_always_size_sections (bfd *out
 
 	  if (!(_bfd_generic_link_add_one_symbol
 		(info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL,
-		 tls_sec, 0, NULL, FALSE,
+		 tls_sec, 0, NULL, false,
 		 bed->collect, &bh)))
-	    return FALSE;
+	    return false;
 
 	  tlsbase->type = STT_TLS;
 	  tlsbase = (struct elf_link_hash_entry *)bh;
 	  tlsbase->def_regular = 1;
 	  tlsbase->other = STV_HIDDEN;
-	  (*bed->elf_backend_hide_symbol) (info, tlsbase, TRUE);
+	  (*bed->elf_backend_hide_symbol) (info, tlsbase, true);
 	}
     }
 
   if (htab->fdpic_p && !bfd_link_relocatable (info)
       && !bfd_elf_stack_segment_size (output_bfd, info,
 				      "__stacksize", DEFAULT_STACK_SIZE))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf32_arm_finish_dynamic_symbol (bfd * output_bfd,
 				 struct bfd_link_info * info,
 				 struct elf_link_hash_entry * h,
@@ -17276,8 +17119,6 @@ elf32_arm_finish_dynamic_symbol (bfd * o
   struct elf32_arm_link_hash_entry *eh;
 
   htab = elf32_arm_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   eh = (struct elf32_arm_link_hash_entry *) h;
 
@@ -17288,7 +17129,7 @@ elf32_arm_finish_dynamic_symbol (bfd * o
 	  BFD_ASSERT (h->dynindx != -1);
 	  if (! elf32_arm_populate_plt_entry (output_bfd, info, &h->plt, &eh->plt,
 					      h->dynindx, 0))
-	    return FALSE;
+	    return false;
 	}
 
       if (!h->def_regular)
@@ -17347,10 +17188,12 @@ 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;
+  return true;
 }
 
 static void
@@ -17371,41 +17214,9 @@ arm_put_trampoline (struct elf32_arm_lin
     }
 }
 
-/* Install the special first PLT entry for elf32-arm-nacl.  Unlike
-   other variants, NaCl needs this entry in a static executable's
-   .iplt too.  When we're handling that case, GOT_DISPLACEMENT is
-   zero.  For .iplt really only the last bundle is useful, and .iplt
-   could have a shorter first entry, with each individual PLT entry's
-   relative branch calculated differently so it targets the last
-   bundle instead of the instruction before it (labelled .Lplt_tail
-   above).  But it's simpler to keep the size and layout of PLT0
-   consistent with the dynamic case, at the cost of some dead code at
-   the start of .iplt and the one dead store to the stack at the start
-   of .Lplt_tail.  */
-static void
-arm_nacl_put_plt0 (struct elf32_arm_link_hash_table *htab, bfd *output_bfd,
-		   asection *plt, bfd_vma got_displacement)
-{
-  unsigned int i;
-
-  put_arm_insn (htab, output_bfd,
-		elf32_arm_nacl_plt0_entry[0]
-		| arm_movw_immediate (got_displacement),
-		plt->contents + 0);
-  put_arm_insn (htab, output_bfd,
-		elf32_arm_nacl_plt0_entry[1]
-		| arm_movt_immediate (got_displacement),
-		plt->contents + 4);
-
-  for (i = 2; i < ARRAY_SIZE (elf32_arm_nacl_plt0_entry); ++i)
-    put_arm_insn (htab, output_bfd,
-		  elf32_arm_nacl_plt0_entry[i],
-		  plt->contents + (i * 4));
-}
-
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf32_arm_finish_dynamic_sections (bfd * output_bfd, struct bfd_link_info * info)
 {
   bfd * dynobj;
@@ -17415,7 +17226,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 
   htab = elf32_arm_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
 
@@ -17423,7 +17234,7 @@ elf32_arm_finish_dynamic_sections (bfd *
   /* A broken linker script might have discarded the dynamic sections.
      Catch this here so that we do not seg-fault later on.  */
   if (sgot != NULL && bfd_is_abs_section (sgot->output_section))
-    return FALSE;
+    return false;
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -17433,7 +17244,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 (sgot != NULL);
 
       dyncon = (Elf32_External_Dyn *) sdyn->contents;
       dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size);
@@ -17448,35 +17259,22 @@ elf32_arm_finish_dynamic_sections (bfd *
 
 	  switch (dyn.d_tag)
 	    {
-	      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;
 
 	    case DT_HASH:
-	      name = ".hash";
-	      goto get_vma_if_bpabi;
 	    case DT_STRTAB:
-	      name = ".dynstr";
-	      goto get_vma_if_bpabi;
 	    case DT_SYMTAB:
-	      name = ".dynsym";
-	      goto get_vma_if_bpabi;
 	    case DT_VERSYM:
-	      name = ".gnu.version";
-	      goto get_vma_if_bpabi;
 	    case DT_VERDEF:
-	      name = ".gnu.version_d";
-	      goto get_vma_if_bpabi;
 	    case DT_VERNEED:
-	      name = ".gnu.version_r";
-	      goto get_vma_if_bpabi;
+	      break;
 
 	    case DT_PLTGOT:
-	      name = htab->symbian_p ? ".got" : ".got.plt";
+	      name = ".got.plt";
 	      goto get_vma;
 	    case DT_JMPREL:
 	      name = RELOC_SECTION (htab, ".plt");
@@ -17487,23 +17285,12 @@ elf32_arm_finish_dynamic_sections (bfd *
 		  _bfd_error_handler
 		    (_("could not find section %s"), name);
 		  bfd_set_error (bfd_error_invalid_operation);
-		  return FALSE;
+		  return false;
 		}
-	      if (!htab->symbian_p)
-		dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
-	      else
-		/* In the BPABI, tags in the PT_DYNAMIC section point
-		   at the file offset, not the memory address, for the
-		   convenience of the post linker.  */
-		dyn.d_un.d_ptr = s->output_section->filepos + s->output_offset;
+	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
 
-	    get_vma_if_bpabi:
-	      if (htab->symbian_p)
-		goto get_vma;
-	      break;
-
 	    case DT_PLTRELSZ:
 	      s = htab->root.srelplt;
 	      BFD_ASSERT (s != NULL);
@@ -17515,48 +17302,19 @@ elf32_arm_finish_dynamic_sections (bfd *
 	    case DT_RELASZ:
 	    case DT_REL:
 	    case DT_RELA:
-	      /* In the BPABI, the DT_REL tag must point at the file
-		 offset, not the VMA, of the first relocation
-		 section.  So, we use code similar to that in
-		 elflink.c, but do not check for SHF_ALLOC on the
-		 relocation section, since relocation sections are
-		 never allocated under the BPABI.  PLT relocs are also
-		 included.  */
-	      if (htab->symbian_p)
-		{
-		  unsigned int i;
-		  type = ((dyn.d_tag == DT_REL || dyn.d_tag == DT_RELSZ)
-			  ? SHT_REL : SHT_RELA);
-		  dyn.d_un.d_val = 0;
-		  for (i = 1; i < elf_numsections (output_bfd); i++)
-		    {
-		      Elf_Internal_Shdr *hdr
-			= elf_elfsections (output_bfd)[i];
-		      if (hdr->sh_type == type)
-			{
-			  if (dyn.d_tag == DT_RELSZ
-			      || dyn.d_tag == DT_RELASZ)
-			    dyn.d_un.d_val += hdr->sh_size;
-			  else if ((ufile_ptr) hdr->sh_offset
-				   <= dyn.d_un.d_val - 1)
-			    dyn.d_un.d_val = hdr->sh_offset;
-			}
-		    }
-		  bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
-		}
 	      break;
 
 	    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;
 
@@ -17575,7 +17333,7 @@ elf32_arm_finish_dynamic_sections (bfd *
 		  struct elf_link_hash_entry * eh;
 
 		  eh = elf_link_hash_lookup (elf_hash_table (info), name,
-					     FALSE, FALSE, TRUE);
+					     false, false, true);
 		  if (eh != NULL
 		      && ARM_GET_SYM_BRANCH_TYPE (eh->target_internal)
 			 == ST_BRANCH_TO_THUMB)
@@ -17598,7 +17356,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,9 +17379,6 @@ elf32_arm_finish_dynamic_sections (bfd *
 	      SWAP_RELOC_OUT (htab) (output_bfd, &rel,
 				     htab->srelplt2->contents);
 	    }
-	  else if (htab->nacl_p)
-	    arm_nacl_put_plt0 (htab, output_bfd, splt,
-			       got_address + 8 - (plt_address + 16));
 	  else if (using_thumb_only (htab))
 	    {
 	      got_displacement = got_address - (plt_address + 12);
@@ -17667,7 +17422,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 +17432,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 +17457,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,10 +17487,6 @@ elf32_arm_finish_dynamic_sections (bfd *
 	}
     }
 
-  if (htab->nacl_p && 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);
-
   /* Fill in the first three entries in the global offset table.  */
   if (sgot)
     {
@@ -17763,16 +17514,16 @@ elf32_arm_finish_dynamic_sections (bfd *
 	+ hgot->root.u.def.section->output_section->vma
 	+ hgot->root.u.def.section->output_offset;
 
-      arm_elf_add_rofixup(output_bfd, htab->srofixup, got_value);
+      arm_elf_add_rofixup (output_bfd, htab->srofixup, got_value);
 
       /* Make sure we allocated and generated the same number of fixups.  */
       BFD_ASSERT (htab->srofixup->reloc_count * 4 == htab->srofixup->size);
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_arm_init_file_header (bfd *abfd, struct bfd_link_info *link_info)
 {
   Elf_Internal_Ehdr * i_ehdrp;	/* ELF file header, internal form.  */
@@ -17780,7 +17531,7 @@ elf32_arm_init_file_header (bfd *abfd, s
   struct elf_segment_map *m;
 
   if (!_bfd_elf_init_file_header (abfd, link_info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
 
@@ -17827,7 +17578,7 @@ elf32_arm_init_file_header (bfd *abfd, s
 	  m->p_flags_valid = 1;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -17835,6 +17586,35 @@ elf32_arm_reloc_type_class (const struct
 			    const asection *rel_sec ATTRIBUTE_UNUSED,
 			    const Elf_Internal_Rela *rela)
 {
+  struct elf32_arm_link_hash_table *htab = elf32_arm_hash_table (info);
+
+  if (htab->root.dynsym != NULL
+      && htab->root.dynsym->contents != NULL)
+    {
+      /* Check relocation against STT_GNU_IFUNC symbol if there are
+	 dynamic symbols.  */
+      bfd *abfd = info->output_bfd;
+      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+      unsigned long r_symndx = ELF32_R_SYM (rela->r_info);
+      if (r_symndx != STN_UNDEF)
+	{
+	  Elf_Internal_Sym sym;
+	  if (!bed->s->swap_symbol_in (abfd,
+				       (htab->root.dynsym->contents
+					+ r_symndx * bed->s->sizeof_sym),
+				       0, &sym))
+	    {
+	      /* xgettext:c-format */
+	      _bfd_error_handler (_("%pB symbol number %lu references"
+				    " nonexistent SHT_SYMTAB_SHNDX section"),
+				  abfd, r_symndx);
+	      /* Ideally an error class should be returned here.  */
+	    }
+	  else if (ELF_ST_TYPE (sym.st_info) == STT_GNU_IFUNC)
+	    return reloc_class_ifunc;
+	}
+    }
+
   switch ((int) ELF32_R_TYPE (rela->r_info))
     {
     case R_ARM_RELATIVE:
@@ -17856,7 +17636,7 @@ arm_final_write_processing (bfd *abfd)
   bfd_arm_update_notes (abfd, ARM_NOTE_SECTION);
 }
 
-static bfd_boolean
+static bool
 elf32_arm_final_write_processing (bfd *abfd)
 {
   arm_final_write_processing (abfd);
@@ -17865,18 +17645,18 @@ elf32_arm_final_write_processing (bfd *a
 
 /* Return TRUE if this is an unwinding table entry.  */
 
-static bfd_boolean
+static bool
 is_arm_elf_unwind_section_name (bfd * abfd ATTRIBUTE_UNUSED, const char * name)
 {
-  return (CONST_STRNEQ (name, ELF_STRING_ARM_unwind)
-	  || CONST_STRNEQ (name, ELF_STRING_ARM_unwind_once));
+  return (startswith (name, ELF_STRING_ARM_unwind)
+	  || startswith (name, ELF_STRING_ARM_unwind_once));
 }
 
 
 /* Set the type and flags for an ARM section.  We do this by
    the section name, which is a hack, but ought to work.  */
 
-static bfd_boolean
+static bool
 elf32_arm_fake_sections (bfd * abfd, Elf_Internal_Shdr * hdr, asection * sec)
 {
   const char * name;
@@ -17892,14 +17672,14 @@ elf32_arm_fake_sections (bfd * abfd, Elf
   if (sec->flags & SEC_ELF_PURECODE)
     hdr->sh_flags |= SHF_ARM_PURECODE;
 
-  return TRUE;
+  return true;
 }
 
 /* Handle an ARM specific section when reading an object file.  This is
    called when bfd_section_from_shdr finds a section with an unknown
    type.  */
 
-static bfd_boolean
+static bool
 elf32_arm_section_from_shdr (bfd *abfd,
 			     Elf_Internal_Shdr * hdr,
 			     const char *name,
@@ -17918,13 +17698,13 @@ elf32_arm_section_from_shdr (bfd *abfd,
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 static _arm_elf_section_data *
@@ -17956,7 +17736,7 @@ enum map_symbol_type
 
 /* Output a single mapping symbol.  */
 
-static bfd_boolean
+static bool
 elf32_arm_output_map_sym (output_arch_syminfo *osi,
 			  enum map_symbol_type type,
 			  bfd_vma offset)
@@ -17971,7 +17751,7 @@ elf32_arm_output_map_sym (output_arch_sy
   sym.st_other = 0;
   sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_NOTYPE);
   sym.st_shndx = osi->sec_shndx;
-  sym.st_target_internal = 0;
+  sym.st_target_internal = ST_BRANCH_TO_ARM;
   elf32_arm_section_map_add (osi->sec, names[type][1], offset);
   return osi->func (osi->flaginfo, names[type], &sym, osi->sec, NULL) == 1;
 }
@@ -17979,9 +17759,9 @@ elf32_arm_output_map_sym (output_arch_sy
 /* Output mapping symbols for the PLT entry described by ROOT_PLT and ARM_PLT.
    IS_IPLT_ENTRY_P says whether the PLT is in .iplt rather than .plt.  */
 
-static bfd_boolean
+static bool
 elf32_arm_output_plt_map_1 (output_arch_syminfo *osi,
-			    bfd_boolean is_iplt_entry_p,
+			    bool is_iplt_entry_p,
 			    union gotplt_union *root_plt,
 			    struct arm_plt_info *arm_plt)
 {
@@ -17989,11 +17769,11 @@ elf32_arm_output_plt_map_1 (output_arch_
   bfd_vma addr, plt_header_size;
 
   if (root_plt->offset == (bfd_vma) -1)
-    return TRUE;
+    return true;
 
   htab = elf32_arm_hash_table (osi->info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (is_iplt_entry_p)
     {
@@ -18009,66 +17789,54 @@ 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 (!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)
+  if (htab->root.target_os == is_vxworks)
     {
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
-	return FALSE;
+	return false;
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 8))
-	return FALSE;
+	return false;
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr + 12))
-	return FALSE;
+	return false;
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 20))
-	return FALSE;
-    }
-  else if (htab->nacl_p)
-    {
-      if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
-	return FALSE;
+	return false;
     }
   else if (htab->fdpic_p)
     {
-      enum map_symbol_type type = using_thumb_only(htab)
+      enum map_symbol_type type = using_thumb_only (htab)
 	? ARM_MAP_THUMB
 	: ARM_MAP_ARM;
 
       if (elf32_arm_plt_needs_thumb_stub_p (osi->info, arm_plt))
 	if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr - 4))
-	  return FALSE;
+	  return false;
       if (!elf32_arm_output_map_sym (osi, type, addr))
-	return FALSE;
+	return false;
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 16))
-	return FALSE;
-      if (htab->plt_entry_size == 4 * ARRAY_SIZE(elf32_arm_fdpic_plt_entry))
+	return false;
+      if (htab->plt_entry_size == 4 * ARRAY_SIZE (elf32_arm_fdpic_plt_entry))
 	if (!elf32_arm_output_map_sym (osi, type, addr + 24))
-	  return FALSE;
+	  return false;
     }
   else if (using_thumb_only (htab))
     {
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr))
-	return FALSE;
+	return false;
     }
   else
     {
-      bfd_boolean thumb_stub_p;
+      bool thumb_stub_p;
 
       thumb_stub_p = elf32_arm_plt_needs_thumb_stub_p (osi->info, arm_plt);
       if (thumb_stub_p)
 	{
 	  if (!elf32_arm_output_map_sym (osi, ARM_MAP_THUMB, addr - 4))
-	    return FALSE;
+	    return false;
 	}
 #ifdef FOUR_WORD_PLT
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
-	return FALSE;
+	return false;
       if (!elf32_arm_output_map_sym (osi, ARM_MAP_DATA, addr + 12))
-	return FALSE;
+	return false;
 #else
       /* A three-word PLT with no Thumb thunk contains only Arm code,
 	 so only need to output a mapping symbol for the first PLT entry and
@@ -18076,24 +17844,24 @@ elf32_arm_output_plt_map_1 (output_arch_
       if (thumb_stub_p || addr == plt_header_size)
 	{
 	  if (!elf32_arm_output_map_sym (osi, ARM_MAP_ARM, addr))
-	    return FALSE;
+	    return false;
 	}
 #endif
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Output mapping symbols for PLT entries associated with H.  */
 
-static bfd_boolean
+static bool
 elf32_arm_output_plt_map (struct elf_link_hash_entry *h, void *inf)
 {
   output_arch_syminfo *osi = (output_arch_syminfo *) inf;
   struct elf32_arm_link_hash_entry *eh;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   if (h->root.type == bfd_link_hash_warning)
     /* When warning symbols are created, they **replace** the "real"
@@ -18122,7 +17890,7 @@ arm_stub_claim_sym (struct elf32_arm_stu
 
 /* Output a single local symbol for a generated stub.  */
 
-static bfd_boolean
+static bool
 elf32_arm_output_stub_sym (output_arch_syminfo *osi, const char *name,
 			   bfd_vma offset, bfd_vma size)
 {
@@ -18135,11 +17903,11 @@ elf32_arm_output_stub_sym (output_arch_s
   sym.st_other = 0;
   sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
   sym.st_shndx = osi->sec_shndx;
-  sym.st_target_internal = 0;
+  sym.st_target_internal = ST_BRANCH_TO_ARM;
   return osi->func (osi->flaginfo, name, &sym, osi->sec, NULL) == 1;
 }
 
-static bfd_boolean
+static bool
 arm_map_one_stub (struct bfd_hash_entry * gen_entry,
 		  void * in_arg)
 {
@@ -18163,7 +17931,7 @@ arm_map_one_stub (struct bfd_hash_entry
   /* Ensure this stub is attached to the current section being
      processed.  */
   if (stub_sec != osi->sec)
-    return TRUE;
+    return true;
 
   addr = (bfd_vma) stub_entry->stub_offset;
   template_sequence = stub_entry->stub_template;
@@ -18178,13 +17946,13 @@ arm_map_one_stub (struct bfd_hash_entry
 	case ARM_TYPE:
 	  if (!elf32_arm_output_stub_sym (osi, stub_name, addr,
 					  stub_entry->stub_size))
-	    return FALSE;
+	    return false;
 	  break;
 	case THUMB16_TYPE:
 	case THUMB32_TYPE:
 	  if (!elf32_arm_output_stub_sym (osi, stub_name, addr | 1,
 					  stub_entry->stub_size))
-	    return FALSE;
+	    return false;
 	  break;
 	default:
 	  BFD_FAIL ();
@@ -18213,14 +17981,14 @@ arm_map_one_stub (struct bfd_hash_entry
 
 	default:
 	  BFD_FAIL ();
-	  return FALSE;
+	  return false;
 	}
 
       if (template_sequence[i].type != prev_type)
 	{
 	  prev_type = template_sequence[i].type;
 	  if (!elf32_arm_output_map_sym (osi, sym_type, addr + size))
-	    return FALSE;
+	    return false;
 	}
 
       switch (template_sequence[i].type)
@@ -18240,18 +18008,18 @@ arm_map_one_stub (struct bfd_hash_entry
 
 	default:
 	  BFD_FAIL ();
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Output mapping symbols for linker generated sections,
    and for those data-only sections that do not have a
    $d.  */
 
-static bfd_boolean
+static bool
 elf32_arm_output_arch_local_syms (bfd *output_bfd,
 				  struct bfd_link_info *info,
 				  void *flaginfo,
@@ -18266,9 +18034,14 @@ elf32_arm_output_arch_local_syms (bfd *o
   bfd_size_type size;
   bfd *input_bfd;
 
+  if (info->strip == strip_all
+      && !info->emitrelocations
+      && !bfd_link_relocatable (info))
+    return true;
+
   htab = elf32_arm_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   check_use_blx (htab);
 
@@ -18314,7 +18087,7 @@ elf32_arm_output_arch_local_syms (bfd *o
 
       osi.sec_shndx = _bfd_elf_section_from_bfd_section
 	  (output_bfd, osi.sec->output_section);
-      if (bfd_link_pic (info) || htab->root.is_relocatable_executable
+      if (bfd_link_pic (info)
 	  || htab->pic_veneer)
 	size = ARM2THUMB_PIC_GLUE_SIZE;
       else if (htab->use_blx)
@@ -18387,52 +18160,37 @@ elf32_arm_output_arch_local_syms (bfd *o
       osi.sec_shndx = (_bfd_elf_section_from_bfd_section
 		       (output_bfd, osi.sec->output_section));
 
-      /* Output mapping symbols for the plt header.  SymbianOS does not have a
-	 plt header.  */
-      if (htab->vxworks_p)
+      /* Output mapping symbols for the plt header.  */
+      if (htab->root.target_os == is_vxworks)
 	{
 	  /* VxWorks shared libraries have no PLT header.  */
 	  if (!bfd_link_pic (info))
 	    {
 	      if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
-		return FALSE;
+		return false;
 	      if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 12))
-		return FALSE;
+		return false;
 	    }
 	}
-      else if (htab->nacl_p)
-	{
-	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
-	    return FALSE;
-	}
       else if (using_thumb_only (htab) && !htab->fdpic_p)
 	{
 	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_THUMB, 0))
-	    return FALSE;
+	    return false;
 	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 12))
-	    return FALSE;
+	    return false;
 	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_THUMB, 16))
-	    return FALSE;
+	    return false;
 	}
-      else if (!htab->symbian_p && !htab->fdpic_p)
+      else if (!htab->fdpic_p)
 	{
 	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
-	    return FALSE;
+	    return false;
 #ifndef FOUR_WORD_PLT
 	  if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA, 16))
-	    return FALSE;
+	    return false;
 #endif
 	}
     }
-  if (htab->nacl_p && htab->root.iplt && htab->root.iplt->size > 0)
-    {
-      /* NaCl uses a special first entry in .iplt too.  */
-      osi.sec = htab->root.iplt;
-      osi.sec_shndx = (_bfd_elf_section_from_bfd_section
-		       (output_bfd, osi.sec->output_section));
-      if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, 0))
-	return FALSE;
-    }
   if ((htab->root.splt && htab->root.splt->size > 0)
       || (htab->root.iplt && htab->root.iplt->size > 0))
     {
@@ -18444,42 +18202,55 @@ elf32_arm_output_arch_local_syms (bfd *o
 	  struct arm_local_iplt_info **local_iplt;
 	  unsigned int i, num_syms;
 
+	  if (!is_arm_elf (input_bfd))
+	    continue;
+
 	  local_iplt = elf32_arm_local_iplt (input_bfd);
 	  if (local_iplt != NULL)
 	    {
 	      num_syms = elf_symtab_hdr (input_bfd).sh_info;
+	      if (num_syms > elf32_arm_num_entries (input_bfd))
+		{
+		  _bfd_error_handler (_("\
+%pB: Number of symbols in input file has increased from %lu to %u\n"),
+				      input_bfd,
+				      (unsigned long) elf32_arm_num_entries (input_bfd),
+				      num_syms);
+		  return false;
+		}
 	      for (i = 0; i < num_syms; i++)
 		if (local_iplt[i] != NULL
-		    && !elf32_arm_output_plt_map_1 (&osi, TRUE,
+		    && !elf32_arm_output_plt_map_1 (&osi, true,
 						    &local_iplt[i]->root,
 						    &local_iplt[i]->arm))
-		  return FALSE;
+		  return false;
 	    }
 	}
     }
-  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))
-	return FALSE;
+      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))
-	return FALSE;
+				     htab->root.tlsdesc_plt + 24))
+	return false;
     }
   if (htab->tls_trampoline != 0)
     {
       /* Mapping symbols for the tls trampoline.  */
       if (!elf32_arm_output_map_sym (&osi, ARM_MAP_ARM, htab->tls_trampoline))
-	return FALSE;
+	return false;
 #ifdef FOUR_WORD_PLT
       if (!elf32_arm_output_map_sym (&osi, ARM_MAP_DATA,
 				     htab->tls_trampoline + 12))
-	return FALSE;
+	return false;
 #endif
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Filter normal symbols of CMSE entry functions of ABFD to include in
@@ -18505,6 +18276,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;
@@ -18531,7 +18304,7 @@ elf32_arm_filter_cmse_symbols (bfd *abfd
 	}
       snprintf (cmse_name, maxnamelen, "%s%s", CMSE_PREFIX, name);
       cmse_hash = (struct elf32_arm_link_hash_entry *)
-	elf_link_hash_lookup (&(htab)->root, cmse_name, FALSE, FALSE, TRUE);
+	elf_link_hash_lookup (&(htab)->root, cmse_name, false, false, true);
 
       if (!cmse_hash
 	  || (cmse_hash->root.root.type != bfd_link_hash_defined
@@ -18574,19 +18347,13 @@ elf32_arm_filter_implib_symbols (bfd *ab
 
 /* Allocate target specific section data.  */
 
-static bfd_boolean
+static bool
 elf32_arm_new_section_hook (bfd *abfd, asection *sec)
 {
-  if (!sec->used_by_bfd)
-    {
-      _arm_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
-
-      sdata = (_arm_elf_section_data *) bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  _arm_elf_section_data *sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
@@ -18657,7 +18424,7 @@ struct a8_branch_to_stub_data
 /* Helper to insert branches to Cortex-A8 erratum stubs in the right
    places for a particular section.  */
 
-static bfd_boolean
+static bool
 make_branch_to_a8_stub (struct bfd_hash_entry *gen_entry,
 		       void *in_arg)
 {
@@ -18675,7 +18442,7 @@ make_branch_to_a8_stub (struct bfd_hash_
 
   if (stub_entry->target_section != data->writing_section
       || stub_entry->stub_type < arm_stub_a8_veneer_lwm)
-    return TRUE;
+    return true;
 
   contents = data->contents;
 
@@ -18704,7 +18471,7 @@ make_branch_to_a8_stub (struct bfd_hash_
     {
       _bfd_error_handler (_("%pB: error: Cortex-A8 erratum stub is "
 			    "allocated in unsafe location"), abfd);
-      return FALSE;
+      return false;
     }
 
   switch (stub_entry->stub_type)
@@ -18731,7 +18498,7 @@ make_branch_to_a8_stub (struct bfd_hash_
 	       happens.  */
 	    _bfd_error_handler (_("%pB: error: Cortex-A8 erratum stub out "
 				  "of range (input file too large)"), abfd);
-	    return FALSE;
+	    return false;
 	  }
 
 	/* i1 = not(j1 eor s), so:
@@ -18753,13 +18520,13 @@ make_branch_to_a8_stub (struct bfd_hash_
 
     default:
       BFD_FAIL ();
-      return FALSE;
+      return false;
     }
 
   bfd_put_16 (abfd, (branch_insn >> 16) & 0xffff, &contents[loc]);
   bfd_put_16 (abfd, branch_insn & 0xffff, &contents[loc + 2]);
 
-  return TRUE;
+  return true;
 }
 
 /* Beginning of stm32l4xx work-around.  */
@@ -19379,13 +19146,13 @@ stm32l4xx_create_replacing_stub_vldm (st
     }
   else
     {
-      bfd_boolean is_dp = /* DP encoding.  */
+      bool is_dp = /* DP encoding.  */
 	(initial_insn & 0xfe100f00) == 0xec100b00;
-      bfd_boolean is_ia_nobang = /* (IA without !).  */
+      bool is_ia_nobang = /* (IA without !).  */
 	(((initial_insn << 7) >> 28) & 0xd) == 0x4;
-      bfd_boolean is_ia_bang = /* (IA with !) - includes VPOP.  */
+      bool is_ia_bang = /* (IA with !) - includes VPOP.  */
 	(((initial_insn << 7) >> 28) & 0xd) == 0x5;
-      bfd_boolean is_db_bang = /* (DB with !).  */
+      bool is_db_bang = /* (DB with !).  */
 	(((initial_insn << 7) >> 28) & 0xd) == 0x9;
       int base_reg = ((unsigned int) initial_insn << 12) >> 28;
       /* d = UInt (Vd:D);.  */
@@ -19497,7 +19264,7 @@ stm32l4xx_create_replacing_stub (struct
 /* Do code byteswapping.  Return FALSE afterwards so that the section is
    written out as normal.  */
 
-static bfd_boolean
+static bool
 elf32_arm_write_section (bfd *output_bfd,
 			 struct bfd_link_info *link_info,
 			 asection *sec,
@@ -19516,13 +19283,13 @@ elf32_arm_write_section (bfd *output_bfd
   unsigned int i;
 
   if (globals == NULL)
-    return FALSE;
+    return false;
 
   /* If this section has not been allocated an _arm_elf_section_data
      structure then we cannot record anything.  */
   arm_data = get_arm_elf_section_data (sec);
   if (arm_data == NULL)
-    return FALSE;
+    return false;
 
   mapcount = arm_data->mapcount;
   map = arm_data->map;
@@ -19700,6 +19467,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)
@@ -19780,7 +19549,7 @@ elf32_arm_write_section (bfd *output_bfd
 				  edited_contents,
 				  (file_ptr) sec->output_offset, sec->size);
 
-      return TRUE;
+      return true;
     }
 
   /* Fix code to point to Cortex-A8 erratum stubs.  */
@@ -19796,7 +19565,7 @@ elf32_arm_write_section (bfd *output_bfd
     }
 
   if (mapcount == 0)
-    return FALSE;
+    return false;
 
   if (globals->byteswap_code)
     {
@@ -19850,20 +19619,20 @@ elf32_arm_write_section (bfd *output_bfd
   arm_data->mapsize = 0;
   arm_data->map = NULL;
 
-  return FALSE;
+  return false;
 }
 
 /* Mangle thumb function symbols as we read them in.  */
 
-static bfd_boolean
+static bool
 elf32_arm_swap_symbol_in (bfd * abfd,
 			  const void *psrc,
 			  const void *pshn,
 			  Elf_Internal_Sym *dst)
 {
   if (!bfd_elf32_swap_symbol_in (abfd, psrc, pshn, dst))
-    return FALSE;
-  dst->st_target_internal = 0;
+    return false;
+  dst->st_target_internal = ST_BRANCH_TO_ARM;
 
   /* New EABI objects mark thumb function symbols by setting the low bit of
      the address.  */
@@ -19889,7 +19658,7 @@ elf32_arm_swap_symbol_in (bfd * abfd,
   else
     ARM_SET_SYM_BRANCH_TYPE (dst->st_target_internal, ST_BRANCH_UNKNOWN);
 
-  return TRUE;
+  return true;
 }
 
 
@@ -19932,7 +19701,7 @@ elf32_arm_swap_symbol_out (bfd *abfd,
 
 /* Add the PT_ARM_EXIDX program header.  */
 
-static bfd_boolean
+static bool
 elf32_arm_modify_segment_map (bfd *abfd,
 			      struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
@@ -19953,7 +19722,7 @@ elf32_arm_modify_segment_map (bfd *abfd,
 	  m = (struct elf_segment_map *)
 	      bfd_zalloc (abfd, sizeof (struct elf_segment_map));
 	  if (m == NULL)
-	    return FALSE;
+	    return false;
 	  m->p_type = PT_ARM_EXIDX;
 	  m->count = 1;
 	  m->sections[0] = sec;
@@ -19963,7 +19732,7 @@ elf32_arm_modify_segment_map (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We may add a PT_ARM_EXIDX program header.  */
@@ -19984,20 +19753,20 @@ elf32_arm_additional_program_headers (bf
 /* Hook called by the linker routine which adds symbols from an object
    file.  */
 
-static bfd_boolean
+static bool
 elf32_arm_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
 			   Elf_Internal_Sym *sym, const char **namep,
 			   flagword *flagsp, asection **secp, bfd_vma *valp)
 {
   if (elf32_arm_hash_table (info) == NULL)
-    return FALSE;
+    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;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* We use this to override swap_symbol_in and swap_symbol_out.  */
@@ -20055,11 +19824,15 @@ read_code16 (const bfd *abfd, const bfd_
    or (bfd_vma) -1 if size can not be determined.  */
 
 static bfd_vma
-elf32_arm_plt0_size (const bfd *abfd, const bfd_byte *addr)
+elf32_arm_plt0_size (const bfd *abfd, const bfd_byte *addr,
+		     bfd_size_type data_size)
 {
   bfd_vma first_word;
   bfd_vma plt0_size;
 
+  if (data_size < 4)
+    return (bfd_vma) -1;
+
   first_word = read_code32 (abfd, addr);
 
   if (first_word == elf32_arm_plt0_entry[0])
@@ -20078,24 +19851,28 @@ elf32_arm_plt0_size (const bfd *abfd, co
    or (bfd_vma) -1 if size can not be determined.  */
 
 static bfd_vma
-elf32_arm_plt_size (const bfd *abfd, const bfd_byte *start, bfd_vma offset)
+elf32_arm_plt_size (const bfd *abfd, const bfd_byte *start, bfd_vma offset,
+		    bfd_size_type data_size)
 {
   bfd_vma first_insn;
   bfd_vma plt_size = 0;
-  const bfd_byte *addr = start + offset;
 
   /* PLT entry size if fixed on Thumb-only platforms.  */
   if (read_code32 (abfd, start) == elf32_thumb2_plt0_entry[0])
-      return 4 * ARRAY_SIZE (elf32_thumb2_plt_entry);
+    return 4 * ARRAY_SIZE (elf32_thumb2_plt_entry);
 
   /* Respect Thumb stub if necessary.  */
-  if (read_code16 (abfd, addr) == elf32_arm_plt_thumb_stub[0])
+  if (offset + 2 > data_size)
+    return (bfd_vma) -1;
+  if (read_code16 (abfd, start + offset) == elf32_arm_plt_thumb_stub[0])
     {
-      plt_size += 2 * ARRAY_SIZE(elf32_arm_plt_thumb_stub);
+      plt_size += 2 * ARRAY_SIZE (elf32_arm_plt_thumb_stub);
     }
 
   /* Strip immediate from first add.  */
-  first_insn = read_code32 (abfd, addr + plt_size) & 0xffffff00;
+  if (offset + plt_size + 4 > data_size)
+    return (bfd_vma) -1;
+  first_insn = read_code32 (abfd, start + offset + plt_size) & 0xffffff00;
 
 #ifdef FOUR_WORD_PLT
   if (first_insn == elf32_arm_plt_entry[0])
@@ -20155,18 +19932,14 @@ elf32_arm_get_synthetic_symtab (bfd *abf
   if (plt == NULL)
     return 0;
 
-  if (!elf32_arm_size_info.slurp_reloc_table (abfd, relplt, dynsyms, TRUE))
+  if (!elf32_arm_size_info.slurp_reloc_table (abfd, relplt, dynsyms, true))
     return -1;
 
-  data = plt->contents;
-  if (data == NULL)
-    {
-      if (!bfd_get_full_section_contents(abfd, (asection *) plt, &data) || data == NULL)
-	return -1;
-      bfd_cache_section_contents((asection *) plt, data);
-    }
+  data = NULL;
+  if (!bfd_get_full_section_contents (abfd, plt, &data))
+    return -1;
 
-  count = relplt->size / hdr->sh_entsize;
+  count = NUM_SHDR_ENTRIES (hdr);
   size = count * sizeof (asymbol);
   p = relplt->relocation;
   for (i = 0; i < count; i++, p += elf32_arm_size_info.int_rels_per_ext_rel)
@@ -20176,13 +19949,13 @@ elf32_arm_get_synthetic_symtab (bfd *abf
 	size += sizeof ("+0x") - 1 + 8;
     }
 
-  s = *ret = (asymbol *) bfd_malloc (size);
-  if (s == NULL)
-    return -1;
-
-  offset = elf32_arm_plt0_size (abfd, data);
-  if (offset == (bfd_vma) -1)
-    return -1;
+  offset = elf32_arm_plt0_size (abfd, data, plt->size);
+  if (offset == (bfd_vma) -1
+      || (s = *ret = (asymbol *) bfd_malloc (size)) == NULL)
+    {
+      free (data);
+      return -1;
+    }
 
   names = (char *) (s + count);
   p = relplt->relocation;
@@ -20191,7 +19964,7 @@ elf32_arm_get_synthetic_symtab (bfd *abf
     {
       size_t len;
 
-      bfd_vma plt_size = elf32_arm_plt_size (abfd, data, offset);
+      bfd_vma plt_size = elf32_arm_plt_size (abfd, data, offset, plt->size);
       if (plt_size == (bfd_vma) -1)
 	break;
 
@@ -20227,15 +20000,16 @@ elf32_arm_get_synthetic_symtab (bfd *abf
       offset += plt_size;
     }
 
+  free (data);
   return n;
 }
 
-static bfd_boolean
-elf32_arm_section_flags (flagword *flags, const Elf_Internal_Shdr * hdr)
+static bool
+elf32_arm_section_flags (const Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_flags & SHF_ARM_PURECODE)
-    *flags |= SEC_ELF_PURECODE;
-  return TRUE;
+    hdr->bfd_section->flags |= SEC_ELF_PURECODE;
+  return true;
 }
 
 static flagword
@@ -20261,7 +20035,7 @@ elf32_arm_count_additional_relocs (asect
    FALSE otherwise.  ISECTION is the best guess matching section from the
    input bfd IBFD, but it might be NULL.  */
 
-static bfd_boolean
+static bool
 elf32_arm_copy_special_section_fields (const bfd *ibfd ATTRIBUTE_UNUSED,
 				       bfd *obfd ATTRIBUTE_UNUSED,
 				       const Elf_Internal_Shdr *isection ATTRIBUTE_UNUSED,
@@ -20328,7 +20102,7 @@ elf32_arm_copy_special_section_fields (c
 	       then the index section should be too.  */
 	    if (oheaders[i]->sh_flags & SHF_GROUP)
 	      osection->sh_flags |= SHF_GROUP;
-	    return TRUE;
+	    return true;
 	  }
       }
       break;
@@ -20344,7 +20118,7 @@ elf32_arm_copy_special_section_fields (c
       break;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Returns TRUE if NAME is an ARM mapping symbol.
@@ -20354,7 +20128,7 @@ elf32_arm_copy_special_section_fields (c
    Other tools might also produce $b (Thumb BL), $f, $p, $m and $v, but we do
    not support them here.  $t.x indicates the start of ThumbEE instructions.  */
 
-static bfd_boolean
+static bool
 is_arm_mapping_symbol (const char * name)
 {
   return name != NULL /* Paranoia.  */
@@ -20390,12 +20164,7 @@ elf32_arm_backend_symbol_processing (bfd
 #define ELF_ARCH			bfd_arch_arm
 #define ELF_TARGET_ID			ARM_ELF_DATA
 #define ELF_MACHINE_CODE		EM_ARM
-#ifdef __QNXTARGET__
 #define ELF_MAXPAGESIZE			0x1000
-#else
-#define ELF_MAXPAGESIZE			0x10000
-#endif
-#define ELF_MINPAGESIZE			0x1000
 #define ELF_COMMONPAGESIZE		0x1000
 
 #define bfd_elf32_mkobject			elf32_arm_mkobject
@@ -20425,8 +20194,8 @@ elf32_arm_backend_symbol_processing (bfd
 #define elf_backend_create_dynamic_sections	elf32_arm_create_dynamic_sections
 #define elf_backend_finish_dynamic_symbol	elf32_arm_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections	elf32_arm_finish_dynamic_sections
-#define elf_backend_size_dynamic_sections	elf32_arm_size_dynamic_sections
-#define elf_backend_always_size_sections	elf32_arm_always_size_sections
+#define elf_backend_late_size_sections		elf32_arm_late_size_sections
+#define elf_backend_early_size_sections		elf32_arm_early_size_sections
 #define elf_backend_init_index_section		_bfd_elf_init_2_index_sections
 #define elf_backend_init_file_header		elf32_arm_init_file_header
 #define elf_backend_reloc_type_class		elf32_arm_reloc_type_class
@@ -20457,7 +20226,7 @@ elf32_arm_backend_symbol_processing (bfd
 #define elf_backend_dtrel_excludes_plt 1
 
 #define elf_backend_got_header_size	12
-#define elf_backend_extern_protected_data 1
+#define elf_backend_extern_protected_data 0
 
 #undef	elf_backend_obj_attrs_vendor
 #define elf_backend_obj_attrs_vendor		"aeabi"
@@ -20475,91 +20244,7 @@ elf32_arm_backend_symbol_processing (bfd
 #undef	elf_backend_lookup_section_flags_hook
 #define elf_backend_lookup_section_flags_hook	elf32_arm_lookup_section_flags
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
-
-#include "elf32-target.h"
-
-/* Native Client targets.  */
-
-#undef	TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM		arm_elf32_nacl_le_vec
-#undef	TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME		"elf32-littlearm-nacl"
-#undef	TARGET_BIG_SYM
-#define TARGET_BIG_SYM			arm_elf32_nacl_be_vec
-#undef	TARGET_BIG_NAME
-#define TARGET_BIG_NAME			"elf32-bigarm-nacl"
-
-/* Like elf32_arm_link_hash_table_create -- but overrides
-   appropriately for NaCl.  */
-
-static struct bfd_link_hash_table *
-elf32_arm_nacl_link_hash_table_create (bfd *abfd)
-{
-  struct bfd_link_hash_table *ret;
-
-  ret = elf32_arm_link_hash_table_create (abfd);
-  if (ret)
-    {
-      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);
-    }
-  return ret;
-}
-
-/* Since NaCl doesn't use the ARM-specific unwind format, we don't
-   really need to use elf32_arm_modify_segment_map.  But we do it
-   anyway just to reduce gratuitous differences with the stock ARM backend.  */
-
-static bfd_boolean
-elf32_arm_nacl_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
-{
-  return (elf32_arm_modify_segment_map (abfd, info)
-	  && nacl_modify_segment_map (abfd, info));
-}
-
-static bfd_boolean
-elf32_arm_nacl_final_write_processing (bfd *abfd)
-{
-  arm_final_write_processing (abfd);
-  return nacl_final_write_processing (abfd);
-}
-
-static bfd_vma
-elf32_arm_nacl_plt_sym_val (bfd_vma i, const asection *plt,
-			    const arelent *rel ATTRIBUTE_UNUSED)
-{
-  return plt->vma
-    + 4 * (ARRAY_SIZE (elf32_arm_nacl_plt0_entry) +
-	   i * ARRAY_SIZE (elf32_arm_nacl_plt_entry));
-}
-
-#undef	elf32_bed
-#define elf32_bed				elf32_arm_nacl_bed
-#undef  bfd_elf32_bfd_link_hash_table_create
-#define bfd_elf32_bfd_link_hash_table_create	\
-  elf32_arm_nacl_link_hash_table_create
-#undef	elf_backend_plt_alignment
-#define elf_backend_plt_alignment		4
-#undef	elf_backend_modify_segment_map
-#define	elf_backend_modify_segment_map		elf32_arm_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	elf32_arm_nacl_final_write_processing
-#undef bfd_elf32_get_synthetic_symtab
-#undef  elf_backend_plt_sym_val
-#define elf_backend_plt_sym_val			elf32_arm_nacl_plt_sym_val
-#undef  elf_backend_copy_special_section_fields
-
-#undef	ELF_MINPAGESIZE
-#undef	ELF_COMMONPAGESIZE
-
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #include "elf32-target.h"
 
@@ -20571,7 +20256,6 @@ elf32_arm_nacl_plt_sym_val (bfd_vma i, c
 #undef  elf_backend_final_write_processing
 #define elf_backend_final_write_processing	elf32_arm_final_write_processing
 #undef	ELF_MINPAGESIZE
-#define ELF_MINPAGESIZE			0x1000
 #undef	ELF_COMMONPAGESIZE
 #define ELF_COMMONPAGESIZE		0x1000
 
@@ -20611,7 +20295,7 @@ elf32_arm_fdpic_link_hash_table_create (
 
 /* We need dynamic symbols for every section, since segments can
    relocate independently.  */
-static bfd_boolean
+static bool
 elf32_arm_fdpic_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
 				    struct bfd_link_info *info
 				    ATTRIBUTE_UNUSED,
@@ -20624,12 +20308,12 @@ elf32_arm_fdpic_omit_section_dynsym (bfd
       /* If sh_type is yet undecided, assume it could be
 	 SHT_PROGBITS/SHT_NOBITS.  */
     case SHT_NULL:
-      return FALSE;
+      return false;
 
       /* There shouldn't be section relative relocations
 	 against any other section.  */
     default:
-      return TRUE;
+      return true;
     }
 }
 
@@ -20642,6 +20326,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,12 +20359,11 @@ 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;
 }
 
-static bfd_boolean
+static bool
 elf32_arm_vxworks_final_write_processing (bfd *abfd)
 {
   arm_final_write_processing (abfd);
@@ -20705,6 +20390,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"
 
@@ -20712,24 +20399,24 @@ elf32_arm_vxworks_final_write_processing
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf32_arm_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword out_flags;
   flagword in_flags;
-  bfd_boolean flags_compatible = TRUE;
+  bool flags_compatible = true;
   asection *sec;
 
   /* Check if we have the same endianness.  */
   if (! _bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   if (! is_arm_elf (ibfd) || ! is_arm_elf (obfd))
-    return TRUE;
+    return true;
 
   if (!elf32_arm_merge_eabi_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   /* The input BFD must have had its flags initialised.  */
   /* The following seems bogus to me -- The flags are initialized in
@@ -20749,39 +20436,40 @@ elf32_arm_merge_private_bfd_data (bfd *i
     {
       _bfd_error_handler (_("error: %pB is already in final BE8 format"),
 			  ibfd);
-      return FALSE;
+      return false;
     }
 
   if (!elf_flags_init (obfd))
     {
-      /* If the input is the default architecture and had the default
-	 flags then do not bother setting the flags for the output
-	 architecture, instead allow future merges to do this.  If no
-	 future merges ever set these flags then they will retain their
-	 uninitialised values, which surprise surprise, correspond
-	 to the default values.  */
-      if (bfd_get_arch_info (ibfd)->the_default
-	  && elf_elfheader (ibfd)->e_flags == 0)
-	return TRUE;
-
-      elf_flags_init (obfd) = TRUE;
+      /* If the input has no flags set, then do not set the output flags.
+	 This will allow future bfds to determine the desired output flags.
+	 If no input bfds have any flags set, then neither will the output bfd.
+
+	 Note - we used to restrict this test to when the input architecture
+	 variant was the default variant, but this does not allow for
+	 linker scripts which override the default.  See PR 28910 for an
+	 example.  */
+      if (in_flags == 0)
+	return true;
+      
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
 	  && bfd_get_arch_info (obfd)->the_default)
 	return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd));
 
-      return TRUE;
+      return true;
     }
 
   /* Determine what should happen if the input ARM architecture
      does not match the output ARM architecture.  */
   if (! bfd_arm_merge_machines (ibfd, obfd))
-    return FALSE;
+    return false;
 
   /* Identical flags must be compatible.  */
   if (in_flags == out_flags)
-    return TRUE;
+    return true;
 
   /* Check to see if the input BFD actually contains any sections.  If
      not, its flags may not have been initialised either, but it
@@ -20795,8 +20483,8 @@ elf32_arm_merge_private_bfd_data (bfd *i
     in data sections ?  */
   if (!(ibfd->flags & DYNAMIC))
     {
-      bfd_boolean null_input_bfd = TRUE;
-      bfd_boolean only_data_sections = TRUE;
+      bool null_input_bfd = true;
+      bool only_data_sections = true;
 
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
 	{
@@ -20807,15 +20495,15 @@ elf32_arm_merge_private_bfd_data (bfd *i
 	      if ((bfd_section_flags (sec)
 		   & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 		  == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
-		only_data_sections = FALSE;
+		only_data_sections = false;
 
-	      null_input_bfd = FALSE;
+	      null_input_bfd = false;
 	      break;
 	    }
 	}
 
       if (null_input_bfd || only_data_sections)
-	return TRUE;
+	return true;
     }
 
   /* Complain about various flag mismatches.  */
@@ -20826,7 +20514,7 @@ elf32_arm_merge_private_bfd_data (bfd *i
 	(_("error: source object %pB has EABI version %d, but target %pB has EABI version %d"),
 	 ibfd, (in_flags & EF_ARM_EABIMASK) >> 24,
 	 obfd, (out_flags & EF_ARM_EABIMASK) >> 24);
-      return FALSE;
+      return false;
     }
 
   /* Not sure what needs to be checked for EABI versions >= 1.  */
@@ -20841,7 +20529,7 @@ elf32_arm_merge_private_bfd_data (bfd *i
 	    (_("error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"),
 	     ibfd, in_flags & EF_ARM_APCS_26 ? 26 : 32,
 	     obfd, out_flags & EF_ARM_APCS_26 ? 26 : 32);
-	  flags_compatible = FALSE;
+	  flags_compatible = false;
 	}
 
       if ((in_flags & EF_ARM_APCS_FLOAT) != (out_flags & EF_ARM_APCS_FLOAT))
@@ -20855,7 +20543,7 @@ elf32_arm_merge_private_bfd_data (bfd *i
 	      (_("error: %pB passes floats in integer registers, whereas %pB passes them in float registers"),
 	       ibfd, obfd);
 
-	  flags_compatible = FALSE;
+	  flags_compatible = false;
 	}
 
       if ((in_flags & EF_ARM_VFP_FLOAT) != (out_flags & EF_ARM_VFP_FLOAT))
@@ -20869,21 +20557,7 @@ elf32_arm_merge_private_bfd_data (bfd *i
 	      (_("error: %pB uses %s instructions, whereas %pB does not"),
 	       ibfd, "FPA", obfd);
 
-	  flags_compatible = FALSE;
-	}
-
-      if ((in_flags & EF_ARM_MAVERICK_FLOAT) != (out_flags & EF_ARM_MAVERICK_FLOAT))
-	{
-	  if (in_flags & EF_ARM_MAVERICK_FLOAT)
-	    _bfd_error_handler
-	      (_("error: %pB uses %s instructions, whereas %pB does not"),
-	       ibfd, "Maverick", obfd);
-	  else
-	    _bfd_error_handler
-	      (_("error: %pB does not use %s instructions, whereas %pB does"),
-	       ibfd, "Maverick", obfd);
-
-	  flags_compatible = FALSE;
+	  flags_compatible = false;
 	}
 
 #ifdef EF_ARM_SOFT_FLOAT
@@ -20906,7 +20580,7 @@ elf32_arm_merge_private_bfd_data (bfd *i
 		  (_("error: %pB uses hardware FP, whereas %pB uses software FP"),
 		   ibfd, obfd);
 
-	      flags_compatible = FALSE;
+	      flags_compatible = false;
 	    }
 	}
 #endif
@@ -20931,166 +20605,3 @@ elf32_arm_merge_private_bfd_data (bfd *i
 
   return flags_compatible;
 }
-
-
-/* Symbian OS Targets.  */
-
-#undef	TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM		arm_elf32_symbian_le_vec
-#undef	TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME		"elf32-littlearm-symbian"
-#undef	TARGET_BIG_SYM
-#define TARGET_BIG_SYM			arm_elf32_symbian_be_vec
-#undef	TARGET_BIG_NAME
-#define TARGET_BIG_NAME			"elf32-bigarm-symbian"
-
-/* Like elf32_arm_link_hash_table_create -- but overrides
-   appropriately for Symbian OS.  */
-
-static struct bfd_link_hash_table *
-elf32_arm_symbian_link_hash_table_create (bfd *abfd)
-{
-  struct bfd_link_hash_table *ret;
-
-  ret = elf32_arm_link_hash_table_create (abfd);
-  if (ret)
-    {
-      struct elf32_arm_link_hash_table *htab
-	= (struct elf32_arm_link_hash_table *)ret;
-      /* There is no PLT header for Symbian OS.  */
-      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;
-    }
-  return ret;
-}
-
-static const struct bfd_elf_special_section
-elf32_arm_symbian_special_sections[] =
-{
-  /* In a BPABI executable, the dynamic linking sections do not go in
-     the loadable read-only segment.  The post-linker may wish to
-     refer to these sections, but they are not part of the final
-     program image.  */
-  { STRING_COMMA_LEN (".dynamic"),	 0, SHT_DYNAMIC,  0 },
-  { STRING_COMMA_LEN (".dynstr"),	 0, SHT_STRTAB,	  0 },
-  { STRING_COMMA_LEN (".dynsym"),	 0, SHT_DYNSYM,	  0 },
-  { STRING_COMMA_LEN (".got"),		 0, SHT_PROGBITS, 0 },
-  { STRING_COMMA_LEN (".hash"),		 0, SHT_HASH,	  0 },
-  /* These sections do not need to be writable as the SymbianOS
-     postlinker will arrange things so that no dynamic relocation is
-     required.  */
-  { STRING_COMMA_LEN (".init_array"),	 0, SHT_INIT_ARRAY,    SHF_ALLOC },
-  { STRING_COMMA_LEN (".fini_array"),	 0, SHT_FINI_ARRAY,    SHF_ALLOC },
-  { STRING_COMMA_LEN (".preinit_array"), 0, SHT_PREINIT_ARRAY, SHF_ALLOC },
-  { NULL,			      0, 0, 0,		       0 }
-};
-
-static void
-elf32_arm_symbian_begin_write_processing (bfd *abfd,
-					  struct bfd_link_info *link_info)
-{
-  /* BPABI objects are never loaded directly by an OS kernel; they are
-     processed by a postlinker first, into an OS-specific format.  If
-     the D_PAGED bit is set on the file, BFD will align segments on
-     page boundaries, so that an OS can directly map the file.  With
-     BPABI objects, that just results in wasted space.  In addition,
-     because we clear the D_PAGED bit, map_sections_to_segments will
-     recognize that the program headers should not be mapped into any
-     loadable segment.  */
-  abfd->flags &= ~D_PAGED;
-  elf32_arm_begin_write_processing (abfd, link_info);
-}
-
-static bfd_boolean
-elf32_arm_symbian_modify_segment_map (bfd *abfd,
-				      struct bfd_link_info *info)
-{
-  struct elf_segment_map *m;
-  asection *dynsec;
-
-  /* BPABI shared libraries and executables should have a PT_DYNAMIC
-     segment.  However, because the .dynamic section is not marked
-     with SEC_LOAD, the generic ELF code will not create such a
-     segment.  */
-  dynsec = bfd_get_section_by_name (abfd, ".dynamic");
-  if (dynsec)
-    {
-      for (m = elf_seg_map (abfd); m != NULL; m = m->next)
-	if (m->p_type == PT_DYNAMIC)
-	  break;
-
-      if (m == NULL)
-	{
-	  m = _bfd_elf_make_dynamic_segment (abfd, dynsec);
-	  m->next = elf_seg_map (abfd);
-	  elf_seg_map (abfd) = m;
-	}
-    }
-
-  /* Also call the generic arm routine.  */
-  return elf32_arm_modify_segment_map (abfd, info);
-}
-
-/* Return address for Ith PLT stub in section PLT, for relocation REL
-   or (bfd_vma) -1 if it should not be included.  */
-
-static bfd_vma
-elf32_arm_symbian_plt_sym_val (bfd_vma i, const asection *plt,
-			       const arelent *rel ATTRIBUTE_UNUSED)
-{
-  return plt->vma + 4 * ARRAY_SIZE (elf32_arm_symbian_plt_entry) * i;
-}
-
-#undef  elf32_bed
-#define elf32_bed elf32_arm_symbian_bed
-
-/* The dynamic sections are not allocated on SymbianOS; the postlinker
-   will process them and then discard them.  */
-#undef  ELF_DYNAMIC_SEC_FLAGS
-#define ELF_DYNAMIC_SEC_FLAGS \
-  (SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED)
-
-#undef elf_backend_emit_relocs
-
-#undef  bfd_elf32_bfd_link_hash_table_create
-#define bfd_elf32_bfd_link_hash_table_create	elf32_arm_symbian_link_hash_table_create
-#undef  elf_backend_special_sections
-#define elf_backend_special_sections		elf32_arm_symbian_special_sections
-#undef  elf_backend_begin_write_processing
-#define elf_backend_begin_write_processing	elf32_arm_symbian_begin_write_processing
-#undef  elf_backend_final_write_processing
-#define elf_backend_final_write_processing	elf32_arm_final_write_processing
-
-#undef  elf_backend_modify_segment_map
-#define elf_backend_modify_segment_map elf32_arm_symbian_modify_segment_map
-
-/* There is no .got section for BPABI objects, and hence no header.  */
-#undef  elf_backend_got_header_size
-#define elf_backend_got_header_size 0
-
-/* Similarly, there is no .got.plt section.  */
-#undef  elf_backend_want_got_plt
-#define elf_backend_want_got_plt 0
-
-#undef  elf_backend_plt_sym_val
-#define elf_backend_plt_sym_val		elf32_arm_symbian_plt_sym_val
-
-#undef  elf_backend_may_use_rel_p
-#define elf_backend_may_use_rel_p	1
-#undef  elf_backend_may_use_rela_p
-#define elf_backend_may_use_rela_p	0
-#undef  elf_backend_default_use_rela_p
-#define elf_backend_default_use_rela_p	0
-#undef  elf_backend_want_plt_sym
-#define elf_backend_want_plt_sym	0
-#undef  elf_backend_dtrel_excludes_plt
-#define elf_backend_dtrel_excludes_plt	0
-#undef  ELF_MAXPAGESIZE
-#define ELF_MAXPAGESIZE			0x8000
-
-#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.20200303/bfd/elf32-arm.h ./bfd/elf32-arm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-arm.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-arm.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for ARM
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -37,7 +37,7 @@ extern void bfd_elf32_arm_set_vfp11_fix
 extern void bfd_elf32_arm_set_cortex_a8_fix
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
+extern bool bfd_elf32_arm_vfp11_erratum_scan
   (bfd *, struct bfd_link_info *);
 
 extern void bfd_elf32_arm_vfp11_fix_veneer_locations
@@ -54,17 +54,17 @@ typedef enum
 extern void bfd_elf32_arm_set_stm32l4xx_fix
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean bfd_elf32_arm_stm32l4xx_erratum_scan
+extern bool bfd_elf32_arm_stm32l4xx_erratum_scan
   (bfd *, struct bfd_link_info *);
 
 extern void bfd_elf32_arm_stm32l4xx_fix_veneer_locations
   (bfd *, struct bfd_link_info *);
 
 /* ELF ARM Interworking support.  Called from linker.  */
-extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
+extern bool bfd_elf32_arm_allocate_interworking_sections
   (struct bfd_link_info *);
 
-extern bfd_boolean bfd_elf32_arm_process_before_allocation
+extern bool bfd_elf32_arm_process_before_allocation
   (bfd *, struct bfd_link_info *);
 
 struct elf32_arm_params {
@@ -89,10 +89,10 @@ struct elf32_arm_params {
 void bfd_elf32_arm_set_target_params
   (bfd *, struct bfd_link_info *, struct elf32_arm_params *);
 
-extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
+extern bool bfd_elf32_arm_get_bfd_for_interworking
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
+extern bool bfd_elf32_arm_add_glue_sections_to_bfd
   (bfd *, struct bfd_link_info *);
 
 extern void bfd_elf32_arm_keep_private_stub_output_sections
@@ -108,14 +108,14 @@ extern int elf32_arm_setup_section_lists
   (bfd *, struct bfd_link_info *);
 extern void elf32_arm_next_input_section
   (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf32_arm_size_stubs
+extern bool elf32_arm_size_stubs
   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
    struct bfd_section * (*) (const char *, struct bfd_section *,
 			     struct bfd_section *, unsigned int),
    void (*) (void));
-extern bfd_boolean elf32_arm_build_stubs
+extern bool elf32_arm_build_stubs
   (struct bfd_link_info *);
 
 /* ARM unwind section editing support.  */
-extern bfd_boolean elf32_arm_fix_exidx_coverage
-(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
+extern bool elf32_arm_fix_exidx_coverage
+(struct bfd_section **, unsigned int, struct bfd_link_info *, bool);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-avr.c ./bfd/elf32-avr.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-avr.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-avr.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* AVR-specific support for 32-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
    Contributed by Denis Chertykov <denisc@overta.ru>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -27,10 +27,10 @@
 #include "elf32-avr.h"
 
 /* Enable debugging printout at stdout with this variable.  */
-static bfd_boolean debug_relax = FALSE;
+static bool debug_relax = false;
 
 /* Enable debugging printout at stdout with this variable.  */
-static bfd_boolean debug_stubs = FALSE;
+static bool debug_stubs = false;
 
 static bfd_reloc_status_type
 bfd_elf_avr_diff_reloc (bfd *, arelent *, asymbol *, void *,
@@ -62,7 +62,7 @@ struct elf32_avr_stub_hash_entry
   bfd_vma target_value;
 
   /* This way we could mark stubs to be no longer necessary.  */
-  bfd_boolean is_actually_needed;
+  bool is_actually_needed;
 };
 
 struct elf32_avr_link_hash_table
@@ -73,7 +73,7 @@ struct elf32_avr_link_hash_table
   /* The stub hash table.  */
   struct bfd_hash_table bstab;
 
-  bfd_boolean no_stubs;
+  bool no_stubs;
 
   /* Linker stub bfd.  */
   bfd *stub_bfd;
@@ -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))
@@ -121,541 +121,541 @@ static reloc_howto_type elf_avr_howto_ta
 {
   HOWTO (R_AVR_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_AVR_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 7 bit PC relative relocation.  */
   HOWTO (R_AVR_7_PCREL,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_AVR_7_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 13 bit PC relative relocation.  */
   HOWTO (R_AVR_13_PCREL,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 13,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_AVR_13_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_AVR_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit absolute relocation for command address
      Will be changed when linker stubs are needed.  */
   HOWTO (R_AVR_16_PM,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_16_PM",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 16 bit address.
      For LDI command.  */
   HOWTO (R_AVR_LO8_LDI,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_LO8_LDI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A high 8 bit absolute relocation of 16 bit address.
      For LDI command.  */
   HOWTO (R_AVR_HI8_LDI,		/* type */
 	 8,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_HI8_LDI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A high 6 bit absolute relocation of 22 bit address.
      For LDI command.  As well second most significant 8 bit value of
      a 32 bit link-time constant.  */
   HOWTO (R_AVR_HH8_LDI,		/* type */
 	 16,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_HH8_LDI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A negative low 8 bit absolute relocation of 16 bit address.
      For LDI command.  */
   HOWTO (R_AVR_LO8_LDI_NEG,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_LO8_LDI_NEG",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A negative high 8 bit absolute relocation of 16 bit address.
      For LDI command.  */
   HOWTO (R_AVR_HI8_LDI_NEG,	/* type */
 	 8,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_HI8_LDI_NEG",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A negative high 6 bit absolute relocation of 22 bit address.
      For LDI command.  */
   HOWTO (R_AVR_HH8_LDI_NEG,	/* type */
 	 16,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_HH8_LDI_NEG",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 24 bit program memory address.
      For LDI command.  Will not be changed when linker stubs are needed. */
   HOWTO (R_AVR_LO8_LDI_PM,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_LO8_LDI_PM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 24 bit program memory address.
      For LDI command.  Will not be changed when linker stubs are needed. */
   HOWTO (R_AVR_HI8_LDI_PM,	/* type */
 	 9,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_HI8_LDI_PM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 24 bit program memory address.
      For LDI command.  Will not be changed when linker stubs are needed. */
   HOWTO (R_AVR_HH8_LDI_PM,	/* type */
 	 17,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_HH8_LDI_PM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 24 bit program memory address.
      For LDI command.  Will not be changed when linker stubs are needed. */
   HOWTO (R_AVR_LO8_LDI_PM_NEG,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_LO8_LDI_PM_NEG", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 24 bit program memory address.
      For LDI command.  Will not be changed when linker stubs are needed. */
   HOWTO (R_AVR_HI8_LDI_PM_NEG,	/* type */
 	 9,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_HI8_LDI_PM_NEG", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 24 bit program memory address.
      For LDI command.  Will not be changed when linker stubs are needed. */
   HOWTO (R_AVR_HH8_LDI_PM_NEG,	/* type */
 	 17,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_HH8_LDI_PM_NEG", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* Relocation for CALL command in ATmega.  */
   HOWTO (R_AVR_CALL,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 23,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_CALL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
   /* A 16 bit absolute relocation of 16 bit address.
      For LDI command.  */
   HOWTO (R_AVR_LDI,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_LDI",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A 6 bit absolute relocation of 6 bit offset.
      For ldd/sdd command.  */
   HOWTO (R_AVR_6,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_6",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A 6 bit absolute relocation of 6 bit offset.
      For sbiw/adiw command.  */
   HOWTO (R_AVR_6_ADIW,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_6_ADIW",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* Most significant 8 bit value of a 32 bit link-time constant.  */
   HOWTO (R_AVR_MS8_LDI,		/* type */
 	 24,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_MS8_LDI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* Negative most significant 8 bit value of a 32 bit link-time constant.  */
   HOWTO (R_AVR_MS8_LDI_NEG,	/* type */
 	 24,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_MS8_LDI_NEG",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 24 bit program memory address.
      For LDI command.  Will be changed when linker stubs are needed.  */
   HOWTO (R_AVR_LO8_LDI_GS,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_AVR_LO8_LDI_GS",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* A low 8 bit absolute relocation of 24 bit program memory address.
      For LDI command.  Will be changed when linker stubs are needed.  */
   HOWTO (R_AVR_HI8_LDI_GS,	/* type */
 	 9,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_AVR_HI8_LDI_GS",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* 8 bit offset.  */
   HOWTO (R_AVR_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* lo8-part to use in  .byte lo8(sym).  */
   HOWTO (R_AVR_8_LO8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_8_LO8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* hi8-part to use in  .byte hi8(sym).  */
   HOWTO (R_AVR_8_HI8,		/* type */
 	 8,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_8_HI8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* hlo8-part to use in  .byte hlo8(sym).  */
   HOWTO (R_AVR_8_HLO8,		/* type */
 	 16,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_8_HLO8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_AVR_DIFF8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_avr_diff_reloc, /* special_function */
 	 "R_AVR_DIFF8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_AVR_DIFF16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_avr_diff_reloc,/* special_function */
 	 "R_AVR_DIFF16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_AVR_DIFF32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_avr_diff_reloc,/* special_function */
 	 "R_AVR_DIFF32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* 7 bit immediate for LDS/STS in Tiny core.  */
   HOWTO (R_AVR_LDS_STS_16,  /* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_AVR_LDS_STS_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_AVR_PORT6,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_PORT6",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_AVR_PORT5,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 5,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AVR_PORT5",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit PC relative relocation.  */
   HOWTO (R_AVR_32_PCREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_AVR_32_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 /* Map BFD reloc types to AVR ELF reloc types.  */
@@ -761,19 +761,15 @@ struct elf_avr_section_data
 
 /* Possibly initialise avr specific data for new section SEC from ABFD.  */
 
-static bfd_boolean
+static bool
 elf_avr_new_section_hook (bfd *abfd, asection *sec)
 {
-  if (!sec->used_by_bfd)
-    {
-      struct elf_avr_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+  struct elf_avr_section_data *sdata;
 
-      sdata = bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
@@ -858,10 +854,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 +869,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)
@@ -883,8 +877,7 @@ elf32_avr_link_hash_table_create (bfd *a
 
   if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd,
 				      elf32_avr_link_hash_newfunc,
-				      sizeof (struct elf_link_hash_entry),
-				      AVR_ELF_DATA))
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (htab);
       return NULL;
@@ -950,7 +943,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an AVR ELF reloc.  */
 
-static bfd_boolean
+static bool
 avr_info_to_howto_rela (bfd *abfd,
 			arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
@@ -964,13 +957,13 @@ avr_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_avr_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 avr_stub_is_required_for_16_bit_reloc (bfd_vma relocation)
 {
   return (relocation >= 0x020000);
@@ -1027,12 +1020,12 @@ avr_final_link_relocate (reloc_howto_typ
 			 struct elf32_avr_link_hash_table * htab)
 {
   bfd_reloc_status_type r = bfd_reloc_ok;
-  bfd_vma		x;
-  bfd_signed_vma	srel;
-  bfd_signed_vma	reloc_addr;
-  bfd_boolean		use_stubs = FALSE;
+  bfd_vma x;
+  bfd_signed_vma srel;
+  bfd_signed_vma reloc_addr;
+  bool use_stubs = false;
   /* Usually is 0, unless we are generating code for a bootloader.  */
-  bfd_signed_vma	base_addr = htab->vector_base;
+  bfd_signed_vma base_addr = htab->vector_base;
 
   /* Absolute addr of the reloc in the final excecutable.  */
   reloc_addr = rel->r_offset + input_section->output_section->vma
@@ -1050,11 +1043,11 @@ avr_final_link_relocate (reloc_howto_typ
 	       input_section->output_offset);
 
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       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;
 
@@ -1068,7 +1061,7 @@ avr_final_link_relocate (reloc_howto_typ
 	       input_section->output_offset);
 
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
 
       srel = avr_relative_distance_considering_wrap_around (srel);
 
@@ -1230,11 +1223,11 @@ avr_final_link_relocate (reloc_howto_typ
 		    (unsigned int) reloc_addr);
 
 	  if (avr_stub_is_required_for_16_bit_reloc (srel - base_addr))
-	    return bfd_reloc_outofrange;
+	    return bfd_reloc_overflow;
 	}
 
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       srel = srel >> 1;
       x = bfd_get_16 (input_bfd, contents);
       x = (x & 0xf0f0) | (srel & 0xf) | ((srel << 4) & 0xf00);
@@ -1263,11 +1256,11 @@ avr_final_link_relocate (reloc_howto_typ
 		    (unsigned int) reloc_addr);
 
 	  if (avr_stub_is_required_for_16_bit_reloc (srel - base_addr))
-	    return bfd_reloc_outofrange;
+	    return bfd_reloc_overflow;
 	}
 
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       srel = srel >> 1;
       srel = (srel >> 8) & 0xff;
       x = bfd_get_16 (input_bfd, contents);
@@ -1279,7 +1272,7 @@ avr_final_link_relocate (reloc_howto_typ
       contents += rel->r_offset;
       srel = (bfd_signed_vma) relocation + rel->r_addend;
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       srel = srel >> 1;
       srel = (srel >> 16) & 0xff;
       x = bfd_get_16 (input_bfd, contents);
@@ -1292,7 +1285,7 @@ avr_final_link_relocate (reloc_howto_typ
       srel = (bfd_signed_vma) relocation + rel->r_addend;
       srel = -srel;
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       srel = srel >> 1;
       x = bfd_get_16 (input_bfd, contents);
       x = (x & 0xf0f0) | (srel & 0xf) | ((srel << 4) & 0xf00);
@@ -1304,7 +1297,7 @@ avr_final_link_relocate (reloc_howto_typ
       srel = (bfd_signed_vma) relocation + rel->r_addend;
       srel = -srel;
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       srel = srel >> 1;
       srel = (srel >> 8) & 0xff;
       x = bfd_get_16 (input_bfd, contents);
@@ -1317,7 +1310,7 @@ avr_final_link_relocate (reloc_howto_typ
       srel = (bfd_signed_vma) relocation + rel->r_addend;
       srel = -srel;
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       srel = srel >> 1;
       srel = (srel >> 16) & 0xff;
       x = bfd_get_16 (input_bfd, contents);
@@ -1329,7 +1322,7 @@ avr_final_link_relocate (reloc_howto_typ
       contents += rel->r_offset;
       srel = (bfd_signed_vma) relocation + rel->r_addend;
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       srel = srel >> 1;
       x = bfd_get_16 (input_bfd, contents);
       x |= ((srel & 0x10000) | ((srel << 3) & 0x1f00000)) >> 16;
@@ -1357,11 +1350,11 @@ avr_final_link_relocate (reloc_howto_typ
 		    (unsigned int) reloc_addr);
 
 	  if (avr_stub_is_required_for_16_bit_reloc (srel - base_addr))
-	    return bfd_reloc_outofrange;
+	    return bfd_reloc_overflow;
 	}
 
       if (srel & 1)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_other;
       srel = srel >> 1;
       bfd_put_16 (input_bfd, (bfd_vma) srel &0x00ffff, contents);
       break;
@@ -1377,7 +1370,7 @@ avr_final_link_relocate (reloc_howto_typ
       contents += rel->r_offset;
       srel = (bfd_signed_vma) relocation + rel->r_addend;
       if ((srel & 0xFFFF) < 0x40 || (srel & 0xFFFF) > 0xbf)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_overflow;
       srel = srel & 0x7f;
       x = bfd_get_16 (input_bfd, contents);
       x |= (srel & 0x0f) | ((srel & 0x30) << 5) | ((srel & 0x40) << 2);
@@ -1388,7 +1381,7 @@ avr_final_link_relocate (reloc_howto_typ
       contents += rel->r_offset;
       srel = (bfd_signed_vma) relocation + rel->r_addend;
       if ((srel & 0xffff) > 0x3f)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_overflow;
       x = bfd_get_16 (input_bfd, contents);
       x = (x & 0xf9f0) | ((srel & 0x30) << 5) | (srel & 0x0f);
       bfd_put_16 (input_bfd, x, contents);
@@ -1398,7 +1391,7 @@ avr_final_link_relocate (reloc_howto_typ
       contents += rel->r_offset;
       srel = (bfd_signed_vma) relocation + rel->r_addend;
       if ((srel & 0xffff) > 0x1f)
-	return bfd_reloc_outofrange;
+	return bfd_reloc_overflow;
       x = bfd_get_16 (input_bfd, contents);
       x = (x & 0xff07) | ((srel & 0x1f) << 3);
       bfd_put_16 (input_bfd, x, contents);
@@ -1415,7 +1408,7 @@ avr_final_link_relocate (reloc_howto_typ
 
 /* Relocate an AVR ELF section.  */
 
-static bfd_boolean
+static int
 elf32_avr_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -1432,7 +1425,7 @@ elf32_avr_relocate_section (bfd *output_
   struct elf32_avr_link_hash_table * htab = avr_link_hash_table (info);
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
@@ -1469,7 +1462,7 @@ elf32_avr_relocate_section (bfd *output_
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1481,7 +1474,8 @@ elf32_avr_relocate_section (bfd *output_
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_AVR_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1491,8 +1485,6 @@ elf32_avr_relocate_section (bfd *output_
 
       if (r != bfd_reloc_ok)
 	{
-	  const char * msg = (const char *) NULL;
-
 	  switch (r)
 	    {
 	    case bfd_reloc_overflow:
@@ -1503,40 +1495,44 @@ elf32_avr_relocate_section (bfd *output_
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
-	      msg = _("internal error: out of range error");
-	      break;
-
-	    case bfd_reloc_notsupported:
-	      msg = _("internal error: unsupported relocation error");
+	      /* xgettext:c-format */
+	      (*info->callbacks->einfo)
+		(_("%X%H: %s against `%s':"
+		   " error: relocation applies outside section\n"),
+		 input_bfd, input_section, rel->r_offset, howto->name, name);
 	      break;
 
-	    case bfd_reloc_dangerous:
-	      msg = _("internal error: dangerous relocation");
+	    case bfd_reloc_other:
+	      /* xgettext:c-format */
+	      (*info->callbacks->einfo)
+		(_("%X%H: %s against `%s':"
+		   " error: relocation target address is odd\n"),
+		 input_bfd, input_section, rel->r_offset, howto->name, name);
 	      break;
 
 	    default:
-	      msg = _("internal error: unknown error");
+	      /* xgettext:c-format */
+	      (*info->callbacks->einfo)
+		(_("%X%H: %s against `%s':"
+		   " internal error: unexpected relocation result %d\n"),
+		 input_bfd, input_section, rel->r_offset, howto->name, name, r);
 	      break;
 	    }
-
-	  if (msg)
-	    (*info->callbacks->warning) (info, msg, name, input_bfd,
-					 input_section, rel->r_offset);
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* The final processing done just before writing out a AVR ELF object
    file.  This gets the AVR architecture right based on the machine
    number.  */
 
-static bfd_boolean
+static bool
 bfd_elf_avr_final_write_processing (bfd *abfd)
 {
   unsigned long val;
@@ -1625,7 +1621,7 @@ bfd_elf_avr_final_write_processing (bfd
 
 /* Set the right machine number.  */
 
-static bfd_boolean
+static bool
 elf32_avr_object_p (bfd *abfd)
 {
   unsigned int e_set = bfd_mach_avr2;
@@ -1717,7 +1713,7 @@ elf32_avr_object_p (bfd *abfd)
 
 /* Returns whether the relocation type passed is a diff reloc. */
 
-static bfd_boolean
+static bool
 elf32_avr_is_diff_reloc (Elf_Internal_Rela *irel)
 {
   return (ELF32_R_TYPE (irel->r_info) == R_AVR_DIFF8
@@ -1847,10 +1843,9 @@ elf32_avr_adjust_reloc_if_spans_insn (bf
   else
     {
       bfd_vma reloc_value = symval + irel->r_addend;
-      bfd_boolean addend_within_shrink_boundary =
-	(reloc_value <= shrink_boundary);
+      bool addend_within_shrink_boundary = reloc_value <= shrink_boundary;
 
-      bfd_boolean reloc_spans_insn =
+      bool reloc_spans_insn =
 	(symval <= shrinked_insn_address
 	 && reloc_value > shrinked_insn_address
 	 && addend_within_shrink_boundary);
@@ -1865,38 +1860,36 @@ elf32_avr_adjust_reloc_if_spans_insn (bf
     }
 }
 
-static bfd_boolean
+static bool
 avr_should_move_sym (symvalue symval,
 		     bfd_vma start,
 		     bfd_vma end,
-		     bfd_boolean did_pad)
+		     bool did_pad)
 {
-  bfd_boolean sym_within_boundary =
-	  did_pad ? symval < end : symval <= end;
+  bool sym_within_boundary = did_pad ? symval < end : symval <= end;
   return (symval > start && sym_within_boundary);
 }
 
-static bfd_boolean
+static bool
 avr_should_reduce_sym_size (symvalue symval,
 			    symvalue symend,
 			    bfd_vma start,
 			    bfd_vma end,
-			    bfd_boolean did_pad)
+			    bool did_pad)
 {
-  bfd_boolean sym_end_within_boundary =
-	  did_pad ? symend < end : symend <= end;
+  bool sym_end_within_boundary = did_pad ? symend < end : symend <= end;
   return (symval <= start && symend > start && sym_end_within_boundary);
 }
 
-static bfd_boolean
+static bool
 avr_should_increase_sym_size (symvalue symval,
 			      symvalue symend,
 			      bfd_vma start,
 			      bfd_vma end,
-			      bfd_boolean did_pad)
+			      bool did_pad)
 {
-  return avr_should_move_sym (symval, start, end, did_pad)
-	  && symend >= end && did_pad;
+  return (avr_should_move_sym (symval, start, end, did_pad)
+	  && symend >= end && did_pad);
 }
 
 /* Delete some bytes from a section while changing the size of an instruction.
@@ -1907,12 +1900,12 @@ avr_should_increase_sym_size (symvalue s
    record handling. In that case, addr is section-relative offset of start
    of padding, and count is the number of padding bytes to delete. */
 
-static bfd_boolean
+static bool
 elf32_avr_relax_delete_bytes (bfd *abfd,
 			      asection *sec,
 			      bfd_vma addr,
 			      int count,
-			      bfd_boolean delete_shrinks_insn)
+			      bool delete_shrinks_insn)
 {
   Elf_Internal_Shdr *symtab_hdr;
   unsigned int sec_shndx;
@@ -1926,8 +1919,8 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
   unsigned int symcount;
   struct avr_relax_info *relax_info;
   struct avr_property_record *prop_record = NULL;
-  bfd_boolean did_shrink = FALSE;
-  bfd_boolean did_pad = FALSE;
+  bool did_shrink = false;
+  bool did_pad = false;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
@@ -1966,12 +1959,12 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
     {
       memmove (contents + addr, contents + addr + count,
 	       (size_t) (toaddr - addr - count));
-      did_shrink = TRUE;
+      did_shrink = true;
     }
   if (prop_record == NULL)
     {
       sec->size -= count;
-      did_shrink = TRUE;
+      did_shrink = true;
     }
   else
     {
@@ -1997,11 +1990,11 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
 	 to remember we didn't delete anything i.e. don't set did_shrink,
 	 so that we don't corrupt reloc offsets or symbol values.*/
       memset (contents + toaddr - count, fill, count);
-      did_pad = TRUE;
+      did_pad = true;
     }
 
   if (!did_shrink)
-    return TRUE;
+    return true;
 
   /* Adjust all the reloc addresses.  */
   for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
@@ -2057,7 +2050,7 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
        irel = elf_section_data (isec)->relocs;
        /* PR 12161: Read in the relocs for this section if necessary.  */
        if (irel == NULL)
-	 irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, TRUE);
+	 irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, true);
 
        for (irelend = irel + isec->reloc_count;
 	    irel < irelend;
@@ -2073,7 +2066,7 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
 						 symtab_hdr->sh_info, 0,
 						 NULL, NULL, NULL);
 	       if (isymbuf == NULL)
-		 return FALSE;
+		 return false;
 	     }
 
 	   /* Get the value of the symbol referred to by the reloc.  */
@@ -2188,7 +2181,7 @@ elf32_avr_relax_delete_bytes (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static Elf_Internal_Sym *
@@ -2454,11 +2447,11 @@ avr_load_all_property_sections (struct b
    contains 4-byte jump instructions whose relative offset must not
    be changed.  */
 
-static bfd_boolean
+static bool
 elf32_avr_relax_section (bfd *abfd,
 			 asection *sec,
 			 struct bfd_link_info *link_info,
-			 bfd_boolean *again)
+			 bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -2466,11 +2459,11 @@ elf32_avr_relax_section (bfd *abfd,
   bfd_byte *contents = NULL;
   Elf_Internal_Sym *isymbuf = NULL;
   struct elf32_avr_link_hash_table *htab;
-  static bfd_boolean relaxation_initialised = FALSE;
+  static bool relaxation_initialised = false;
 
   if (!relaxation_initialised)
     {
-      relaxation_initialised = TRUE;
+      relaxation_initialised = true;
 
       /* Load entries from the .avr.prop sections.  */
       avr_load_all_property_sections (link_info);
@@ -2480,22 +2473,22 @@ elf32_avr_relax_section (bfd *abfd,
      relaxing. Such shrinking can cause issues for the sections such
      as .vectors and .jumptables. Instead the unused bytes should be
      filled with nop instructions. */
-  bfd_boolean shrinkable = TRUE;
+  bool shrinkable = true;
 
   if (!strcmp (sec->name,".vectors")
       || !strcmp (sec->name,".jumptables"))
-    shrinkable = FALSE;
+    shrinkable = false;
 
   if (bfd_link_relocatable (link_info))
-    (*link_info->callbacks->einfo)
-      (_("%P%F: --relax and -r may not be used together\n"));
+    link_info->callbacks->fatal
+      (_("%P: --relax and -r may not be used together\n"));
 
   htab = avr_link_hash_table (link_info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   if ((!htab->no_stubs) && (sec == htab->stub_sec))
     {
@@ -2508,32 +2501,33 @@ elf32_avr_relax_section (bfd *abfd,
 		(int) last_estimated_stub_section_size);
 
       elf32_avr_size_stubs (htab->stub_sec->output_section->owner,
-			    link_info, FALSE);
+			    link_info, false);
 
       /* Check if the number of trampolines changed.  */
       if (last_estimated_stub_section_size != htab->stub_sec->size)
-	*again = TRUE;
+	*again = true;
 
       if (debug_relax)
 	printf ("Size of stub section after this pass: %i\n",
 		(int) htab->stub_sec->size);
 
-      return TRUE;
+      return true;
     }
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   /* Check if the object file to relax uses internal symbols so that we
      could fix up the relocations.  */
   if (!(elf_elfheader (abfd)->e_flags & EF_AVR_LINKRELAX_PREPARED))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -2750,12 +2744,12 @@ elf32_avr_relax_section (bfd *abfd,
 		    /* Delete two bytes of data.  */
 		    if (!elf32_avr_relax_delete_bytes (abfd, sec,
 						       irel->r_offset + 2, 2,
-						       TRUE))
+						       true))
 		      goto error_return;
 
 		    /* That will change things, so, we should relax again.
 		       Note that this is not required, and it may be slow.  */
-		    *again = TRUE;
+		    *again = true;
 		  }
 	      }
 	  }
@@ -2801,7 +2795,7 @@ elf32_avr_relax_section (bfd *abfd,
 		      printf ("converted rcall/ret sequence at address 0x%x"
 			      " into rjmp/ret sequence. Section is %s\n\n",
 			      (int) dot, sec->name);
-		    *again = TRUE;
+		    *again = true;
 		    break;
 		  }
 	      }
@@ -2832,7 +2826,7 @@ elf32_avr_relax_section (bfd *abfd,
 		      printf ("converted call/ret sequence at address 0x%x"
 			      " into jmp/ret sequence. Section is %s\n\n",
 			      (int) dot, sec->name);
-		    *again = TRUE;
+		    *again = true;
 		    break;
 		  }
 	      }
@@ -2995,7 +2989,7 @@ elf32_avr_relax_section (bfd *abfd,
 
 			    rel = elf_section_data (isec)->relocs;
 			    if (rel == NULL)
-			      rel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, TRUE);
+			      rel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, true);
 
 			    relend = rel + isec->reloc_count;
 
@@ -3073,16 +3067,20 @@ elf32_avr_relax_section (bfd *abfd,
 				      "at address 0x%x deleted.\n",
 				      (int) dot + insn_size);
 
+			    elf_section_data (sec)->relocs = internal_relocs;
+			    elf_section_data (sec)->this_hdr.contents = contents;
+			    symtab_hdr->contents = (unsigned char *) isymbuf;
+
 			    /* Delete two bytes of data.  */
 			    if (!elf32_avr_relax_delete_bytes (abfd, sec,
 							       irel->r_offset + insn_size, 2,
-							       TRUE))
+							       true))
 			      goto error_return;
 
 			    /* That will change things, so, we should relax
 			       again. Note that this is not required, and it
 			       may be slow.  */
-			    *again = TRUE;
+			    *again = true;
 			    break;
 			  }
 		      }
@@ -3144,8 +3142,8 @@ elf32_avr_relax_section (bfd *abfd,
 			record->offset -= count;
 			elf32_avr_relax_delete_bytes (abfd, sec,
 						      addr - count,
-						      count, FALSE);
-			*again = TRUE;
+						      count, false);
+			*again = true;
 		      }
 		  }
 		  break;
@@ -3166,24 +3164,20 @@ 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;
+  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;
+  return false;
 }
 
 /* This is a version of bfd_generic_get_relocated_section_contents
@@ -3199,7 +3193,7 @@ elf32_avr_get_relocated_section_contents
 					  struct bfd_link_info *link_info,
 					  struct bfd_link_order *link_order,
 					  bfd_byte *data,
-					  bfd_boolean relocatable,
+					  bool relocatable,
 					  asymbol **symbols)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -3219,6 +3213,13 @@ elf32_avr_get_relocated_section_contents
 						       symbols);
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 
+  bfd_byte *orig_data = data;
+  if (data == NULL)
+    {
+      data = bfd_malloc (input_section->size);
+      if (data == NULL)
+	return NULL;
+    }
   memcpy (data, elf_section_data (input_section)->this_hdr.contents,
 	  (size_t) input_section->size);
 
@@ -3230,7 +3231,7 @@ elf32_avr_get_relocated_section_contents
       bfd_size_type amt;
 
       internal_relocs = (_bfd_elf_link_read_relocs
-			 (input_bfd, input_section, NULL, NULL, FALSE));
+			 (input_bfd, input_section, NULL, NULL, false));
       if (internal_relocs == NULL)
 	goto error_return;
 
@@ -3273,10 +3274,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,14 +3284,13 @@ 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);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
@@ -3330,7 +3328,7 @@ avr_add_stub (const char *stub_name,
   struct elf32_avr_stub_hash_entry *hsh;
 
   /* Enter this entry into the linker stub hash table.  */
-  hsh = avr_stub_hash_lookup (&htab->bstab, stub_name, TRUE, FALSE);
+  hsh = avr_stub_hash_lookup (&htab->bstab, stub_name, true, false);
 
   if (hsh == NULL)
     {
@@ -3351,7 +3349,7 @@ avr_add_stub (const char *stub_name,
    relative to the trampoline section start to the stub_offset entry in
    the stub hash table entry.  */
 
-static  bfd_boolean
+static  bool
 avr_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
 {
   struct elf32_avr_stub_hash_entry *hsh;
@@ -3369,13 +3367,13 @@ avr_build_one_stub (struct bfd_hash_entr
   hsh = avr_stub_hash_entry (bh);
 
   if (!hsh->is_actually_needed)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) in_arg;
 
   htab = avr_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   target = hsh->target_value;
 
@@ -3395,7 +3393,7 @@ avr_build_one_stub (struct bfd_hash_entr
 
   /* Check for the alignment of the address.  */
   if (target & 1)
-     return FALSE;
+     return false;
 
   starget = target >> 1;
   jmp_insn |= ((starget & 0x10000) | ((starget << 3) & 0x1f00000)) >> 16;
@@ -3419,22 +3417,22 @@ avr_build_one_stub (struct bfd_hash_entr
       }
   }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 avr_mark_stub_not_to_be_necessary (struct bfd_hash_entry *bh,
 				   void *in_arg ATTRIBUTE_UNUSED)
 {
   struct elf32_avr_stub_hash_entry *hsh;
 
   hsh = avr_stub_hash_entry (bh);
-  hsh->is_actually_needed = FALSE;
+  hsh->is_actually_needed = false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 avr_size_one_stub (struct bfd_hash_entry *bh, void *in_arg)
 {
   struct elf32_avr_stub_hash_entry *hsh;
@@ -3451,18 +3449,18 @@ avr_size_one_stub (struct bfd_hash_entry
     size = 0;
 
   htab->stub_sec->size += size;
-  return TRUE;
+  return true;
 }
 
 void
 elf32_avr_setup_params (struct bfd_link_info *info,
 			bfd *avr_stub_bfd,
 			asection *avr_stub_section,
-			bfd_boolean no_stubs,
-			bfd_boolean deb_stubs,
-			bfd_boolean deb_relax,
+			bool no_stubs,
+			bool deb_stubs,
+			bool deb_relax,
 			bfd_vma pc_wrap_around,
-			bfd_boolean call_ret_replacement)
+			bool call_ret_replacement)
 {
   struct elf32_avr_link_hash_table *htab = avr_link_hash_table (info);
 
@@ -3494,7 +3492,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 +3556,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;
@@ -3607,17 +3605,17 @@ get_local_syms (bfd *input_bfd, struct b
 
 #define ADD_DUMMY_STUBS_FOR_DEBUGGING 0
 
-bfd_boolean
+bool
 elf32_avr_size_stubs (bfd *output_bfd,
 		      struct bfd_link_info *info,
-		      bfd_boolean is_prealloc_run)
+		      bool is_prealloc_run)
 {
   struct elf32_avr_link_hash_table *htab;
   int stub_changed = 0;
 
   htab = avr_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* At this point we initialize htab->vector_base
      To the start of the text output section.  */
@@ -3627,7 +3625,7 @@ elf32_avr_size_stubs (bfd *output_bfd,
     {
       if (htab->all_local_syms)
 	goto error_ret_free_local;
-      return FALSE;
+      return false;
     }
 
   if (ADD_DUMMY_STUBS_FOR_DEBUGGING)
@@ -3808,13 +3806,13 @@ elf32_avr_size_stubs (bfd *output_bfd,
 
 		  hsh = avr_stub_hash_lookup (&htab->bstab,
 					      stub_name,
-					      FALSE, FALSE);
+					      false, false);
 		  if (hsh != NULL)
 		    {
 		      /* The proper stub has already been created.  Mark it
 			 to be used and write the possibly changed destination
 			 value.  */
-		      hsh->is_actually_needed = TRUE;
+		      hsh->is_actually_needed = true;
 		      hsh->target_value = destination;
 		      free (stub_name);
 		      continue;
@@ -3827,7 +3825,7 @@ elf32_avr_size_stubs (bfd *output_bfd,
 		      goto error_ret_free_internal;
 		    }
 
-		  hsh->is_actually_needed = TRUE;
+		  hsh->is_actually_needed = true;
 		  hsh->target_value = destination;
 
 		  if (debug_stubs)
@@ -3836,7 +3834,7 @@ elf32_avr_size_stubs (bfd *output_bfd,
 		  if (debug_stubs)
 		    printf ("(Pre-Alloc run: %i)\n", is_prealloc_run);
 
-		  stub_changed = TRUE;
+		  stub_changed = true;
 		}
 
 	      /* We're done with the internal relocs, free them.  */
@@ -3852,15 +3850,15 @@ elf32_avr_size_stubs (bfd *output_bfd,
       if (!stub_changed)
 	break;
 
-      stub_changed = FALSE;
+      stub_changed = false;
     }
 
   free (htab->all_local_syms);
-  return TRUE;
+  return true;
 
  error_ret_free_local:
   free (htab->all_local_syms);
-  return FALSE;
+  return false;
 }
 
 
@@ -3870,7 +3868,7 @@ elf32_avr_size_stubs (bfd *output_bfd,
    functions here.  This function is called via hppaelf_finish in the
    linker.  */
 
-bfd_boolean
+bool
 elf32_avr_build_stubs (struct bfd_link_info *info)
 {
   asection *stub_sec;
@@ -3880,7 +3878,7 @@ elf32_avr_build_stubs (struct bfd_link_i
 
   htab = avr_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* In case that there were several stub sections:  */
   for (stub_sec = htab->stub_bfd->sections;
@@ -3895,7 +3893,8 @@ elf32_avr_build_stubs (struct bfd_link_i
 
       stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
       if (stub_sec->contents == NULL && size != 0)
-	return FALSE;
+	return false;
+      stub_sec->alloced = 1;
       stub_sec->size = 0;
     }
 
@@ -3917,7 +3916,7 @@ elf32_avr_build_stubs (struct bfd_link_i
   if (debug_stubs)
     printf ("Final Stub section Size: %i\n", (int) htab->stub_sec->size);
 
-  return TRUE;
+  return true;
 }
 
 /* Callback used by QSORT to order relocations AP and BP.  */
@@ -3946,7 +3945,7 @@ internal_reloc_compare (const void *ap,
 
 /* Return true if ADDRESS is within the vma range of SECTION from ABFD.  */
 
-static bfd_boolean
+static bool
 avr_is_section_for_address (asection *section, bfd_vma address)
 {
   bfd_vma vma;
@@ -3954,13 +3953,13 @@ avr_is_section_for_address (asection *se
 
   vma = bfd_section_vma (section);
   if (address < vma)
-    return FALSE;
+    return false;
 
   size = section->size;
   if (address >= vma + size)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Data structure used by AVR_FIND_SECTION_FOR_ADDRESS.  */
@@ -4012,7 +4011,7 @@ avr_find_section_for_address (bfd *abfd
 static struct avr_property_record_list *
 avr_elf32_load_records_from_section (bfd *abfd, asection *sec)
 {
-  char *contents = NULL, *ptr;
+  bfd_byte *contents, *ptr;
   bfd_size_type size, mem_size;
   bfd_byte version, flags;
   uint16_t record_count, i;
@@ -4022,15 +4021,14 @@ avr_elf32_load_records_from_section (bfd
 
   fs_data.section = NULL;
 
-  size = bfd_section_size (sec);
-  contents = bfd_malloc (size);
-  bfd_get_section_contents (abfd, sec, contents, 0, size);
+  if (!bfd_malloc_and_get_section (abfd, sec, &contents))
+    goto load_failed;
   ptr = contents;
 
   /* Load the relocations for the '.avr.prop' section if there are any, and
      sort them.  */
   internal_relocs = (_bfd_elf_link_read_relocs
-		     (abfd, sec, NULL, NULL, FALSE));
+		     (abfd, sec, NULL, NULL, false));
   if (internal_relocs)
     qsort (internal_relocs, sec->reloc_count,
 	   sizeof (Elf_Internal_Rela), internal_reloc_compare);
@@ -4043,15 +4041,16 @@ avr_elf32_load_records_from_section (bfd
   */
 
   /* Check we have at least got a headers worth of bytes.  */
+  size = bfd_section_size (sec);
   if (size < AVR_PROPERTY_SECTION_HEADER_SIZE)
     goto load_failed;
 
-  version = *((bfd_byte *) ptr);
+  version = *ptr;
   ptr++;
-  flags = *((bfd_byte *) ptr);
+  flags = *ptr;
   ptr++;
-  record_count = *((uint16_t *) ptr);
-  ptr+=2;
+  record_count = bfd_get_16 (abfd, ptr);
+  ptr += 2;
   BFD_ASSERT (ptr - contents == AVR_PROPERTY_SECTION_HEADER_SIZE);
 
   /* Now allocate space for the list structure, and all of the list
@@ -4117,7 +4116,7 @@ avr_elf32_load_records_from_section (bfd
 	    }
 	}
 
-      address = *((uint32_t *) ptr);
+      address = bfd_get_32 (abfd, ptr);
       ptr += 4;
       size -= 4;
 
@@ -4146,7 +4145,7 @@ avr_elf32_load_records_from_section (bfd
 	    = address - bfd_section_vma (fs_data.section);
 	}
 
-      r_list->records [i].type = *((bfd_byte *) ptr);
+      r_list->records [i].type = *ptr;
       ptr += 1;
       size -= 1;
 
@@ -4159,7 +4158,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 +4166,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 +4177,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
@@ -4215,7 +4214,7 @@ avr_elf32_load_property_records (bfd *ab
 
   /* Find the '.avr.prop' section and load the contents into memory.  */
   sec = bfd_get_section_by_name (abfd, AVR_PROPERTY_RECORD_SECTION_NAME);
-  if (sec == NULL)
+  if (sec == NULL || (sec->flags & SEC_HAS_CONTENTS) == 0)
     return NULL;
   return avr_elf32_load_records_from_section (abfd, 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.20200303/bfd/elf32-avr.h ./bfd/elf32-avr.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-avr.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-avr.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* AVR-specific support for 32-bit ELF.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 Free Software Foundation, Inc.
 
    Written by Bjoern Haase <bjoern.m.haase@web.de>
 
@@ -25,16 +25,15 @@
 
 extern void
 elf32_avr_setup_params (struct bfd_link_info *, bfd *, asection *,
-			bfd_boolean, bfd_boolean, bfd_boolean,
-			bfd_vma, bfd_boolean);
+			bool, bool, bool, bfd_vma, bool);
 
 extern int
 elf32_avr_setup_section_lists (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
-elf32_avr_size_stubs (bfd *, struct bfd_link_info *, bfd_boolean);
+extern bool
+elf32_avr_size_stubs (bfd *, struct bfd_link_info *, bool);
 
-extern bfd_boolean
+extern bool
 elf32_avr_build_stubs (struct bfd_link_info *);
 
 /* The name of the section into which the property records are stored.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-bfin.c ./bfd/elf32-bfin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-bfin.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-bfin.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -58,9 +58,9 @@ bfin_pcrel24_reloc (bfd *abfd,
   bfd_vma output_base = 0;
   reloc_howto_type *howto = reloc_entry->howto;
   asection *output_section;
-  bfd_boolean relocatable = (output_bfd != NULL);
+  bool relocatable = (output_bfd != NULL);
 
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!bfd_reloc_offset_in_range (howto, abfd, input_section, addr - 2))
     return bfd_reloc_outofrange;
 
   if (bfd_is_und_section (symbol->section)
@@ -155,10 +155,10 @@ bfin_imm16_reloc (bfd *abfd,
   bfd_vma output_base = 0;
   reloc_howto_type *howto = reloc_entry->howto;
   asection *output_section;
-  bfd_boolean relocatable = (output_bfd != NULL);
+  bool relocatable = (output_bfd != NULL);
 
   /* Is the address of the relocation really within the section?  */
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!bfd_reloc_offset_in_range (howto, abfd, input_section, reloc_addr))
     return bfd_reloc_outofrange;
 
   if (bfd_is_und_section (symbol->section)
@@ -226,10 +226,11 @@ bfin_byte4_reloc (bfd *abfd,
   bfd_size_type addr = reloc_entry->address;
   bfd_vma output_base = 0;
   asection *output_section;
-  bfd_boolean relocatable = (output_bfd != NULL);
+  bool relocatable = (output_bfd != NULL);
 
   /* Is the address of the relocation really within the section?  */
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd, input_section,
+				  addr))
     return bfd_reloc_outofrange;
 
   if (bfd_is_und_section (symbol->section)
@@ -293,10 +294,10 @@ bfin_bfd_reloc (bfd *abfd,
   bfd_vma output_base = 0;
   reloc_howto_type *howto = reloc_entry->howto;
   asection *output_section;
-  bfd_boolean relocatable = (output_bfd != NULL);
+  bool relocatable = (output_bfd != NULL);
 
   /* Is the address of the relocation really within the section?  */
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!bfd_reloc_offset_in_range (howto, abfd, input_section, addr))
     return bfd_reloc_outofrange;
 
   if (bfd_is_und_section (symbol->section)
@@ -374,9 +375,9 @@ bfin_bfd_reloc (bfd *abfd,
   x = ( (x & ~howto->dst_mask) | (relocation & howto->dst_mask))
 
   /* handle 8 and 16 bit relocations here. */
-  switch (howto->size)
+  switch (bfd_get_reloc_size (howto))
     {
-    case 0:
+    case 1:
       {
 	char x = bfd_get_8 (abfd, (char *) data + addr);
 	DOIT (x);
@@ -384,7 +385,7 @@ bfin_bfd_reloc (bfd *abfd,
       }
       break;
 
-    case 1:
+    case 2:
       {
 	unsigned short x = bfd_get_16 (abfd, (bfd_byte *) data + addr);
 	DOIT (x);
@@ -424,59 +425,59 @@ static reloc_howto_type bfin_howto_table
   /* This reloc does nothing. .  */
   HOWTO (R_BFIN_UNUSED0,	/* type.  */
 	 0,			/* rightshift.  */
-	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* size.  */
 	 0,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont, /* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_BFIN_UNUSED0",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0,			/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL5M2,	/* type.  */
 	 1,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)..  */
+	 2,			/* size.  */
 	 4,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_unsigned, /* complain_on_overflow.  */
 	 bfin_bfd_reloc,	/* special_function.  */
 	 "R_BFIN_PCREL5M2",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x0000000F,		/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
   HOWTO (R_BFIN_UNUSED1,	/* type.  */
 	 0,			/* rightshift.  */
-	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* size.  */
 	 0,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont, /* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_BFIN_UNUSED1",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0,			/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL10,	/* type.  */
 	 1,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 10,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_bfd_reloc,	/* special_function.  */
 	 "R_BFIN_PCREL10",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x000003FF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL12_JUMP,	/* type.  */
 	 1,			/* rightshift.  */
@@ -484,511 +485,511 @@ static reloc_howto_type bfin_howto_table
 				   aligned on a word boundary so
 				   only 12 bits have to be used.
 				   Right shift the rightmost bit..  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 12,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_bfd_reloc,	/* special_function.  */
 	 "R_BFIN_PCREL12_JUMP",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x0FFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_RIMM16,		/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_imm16_reloc,	/* special_function.  */
 	 "R_BFIN_RIMM16",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x0000FFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_LUIMM16,	/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont, /* complain_on_overflow.  */
 	 bfin_imm16_reloc,	/* special_function.  */
 	 "R_BFIN_LUIMM16",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x0000FFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_HUIMM16,	/* type.  */
 	 16,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_unsigned, /* complain_on_overflow.  */
 	 bfin_imm16_reloc,	/* special_function.  */
 	 "R_BFIN_HUIMM16",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x0000FFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL12_JUMP_S,	/* type.  */
 	 1,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 12,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_bfd_reloc,	/* special_function.  */
 	 "R_BFIN_PCREL12_JUMP_S", /* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x00000FFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL24_JUMP_X,	/* type.  */
 	 1,			/* rightshift.  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* size.  */
 	 24,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_pcrel24_reloc,	/* special_function.  */
 	"R_BFIN_PCREL24_JUMP_X", /* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x00FFFFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL24,	/* type.  */
 	 1,			/* rightshift.  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* size.  */
 	 24,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_pcrel24_reloc,	/* special_function.  */
 	 "R_BFIN_PCREL24",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x00FFFFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_UNUSEDB,	/* type.  */
 	 0,			/* rightshift.  */
-	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* size.  */
 	 0,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont, /* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_BFIN_UNUSEDB",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0,			/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
   HOWTO (R_BFIN_UNUSEDC,	/* type.  */
 	 0,			/* rightshift.  */
-	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* size.  */
 	 0,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont, /* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_BFIN_UNUSEDC",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0,			/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL24_JUMP_L,	/* type.  */
 	 1,			/* rightshift.  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* size.  */
 	 24,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_pcrel24_reloc,	/* special_function.  */
 	 "R_BFIN_PCREL24_JUMP_L", /* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x00FFFFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL24_CALL_X,	/* type.  */
 	 1,			/* rightshift.  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* size.  */
 	 24,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_pcrel24_reloc,	/* special_function.  */
 	 "R_BFIN_PCREL24_CALL_X", /* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x00FFFFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_VAR_EQ_SYMB,	/* type.  */
 	 0,			/* rightshift.  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* size.  */
 	 32,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_bitfield, /* complain_on_overflow.  */
 	 bfin_bfd_reloc,	/* special_function.  */
 	 "R_BFIN_VAR_EQ_SYMB",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0,			/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
   HOWTO (R_BFIN_BYTE_DATA,	/* type.  */
 	 0,			/* rightshift.  */
-	 0,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 1,			/* size.  */
 	 8,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_unsigned, /* complain_on_overflow.  */
 	 bfin_bfd_reloc,	/* special_function.  */
 	 "R_BFIN_BYTE_DATA",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0xFF,			/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_BYTE2_DATA,	/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfin_bfd_reloc,	/* special_function.  */
 	 "R_BFIN_BYTE2_DATA",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0xFFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_BYTE4_DATA,	/* type.  */
 	 0,			/* rightshift.  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* size.  */
 	 32,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_unsigned, /* complain_on_overflow.  */
 	 bfin_byte4_reloc,	/* special_function.  */
 	 "R_BFIN_BYTE4_DATA",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0xFFFFFFFF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 
   HOWTO (R_BFIN_PCREL11,	/* type.  */
 	 1,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 10,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_unsigned, /* complain_on_overflow.  */
 	 bfin_bfd_reloc,	/* special_function.  */
 	 "R_BFIN_PCREL11",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x000003FF,		/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
 
   /* A 18-bit signed operand with the GOT offset for the address of
      the symbol.  */
   HOWTO (R_BFIN_GOT17M4,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_GOT17M4",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the address of the
      symbol.  */
   HOWTO (R_BFIN_GOTHI,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_GOTHI",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the address of the
      symbol.  */
   HOWTO (R_BFIN_GOTLO,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_GOTLO",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The 32-bit address of the canonical descriptor of a function.  */
   HOWTO (R_BFIN_FUNCDESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_FUNCDESC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the address of
      canonical descriptor of a function.  */
   HOWTO (R_BFIN_FUNCDESC_GOT17M4,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_FUNCDESC_GOT17M4", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the address of the
      canonical descriptor of a function.  */
   HOWTO (R_BFIN_FUNCDESC_GOTHI,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_FUNCDESC_GOTHI", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the address of the
      canonical descriptor of a function.  */
   HOWTO (R_BFIN_FUNCDESC_GOTLO,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_FUNCDESC_GOTLO", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The 32-bit address of the canonical descriptor of a function.  */
   HOWTO (R_BFIN_FUNCDESC_VALUE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_FUNCDESC_VALUE", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the address of
      canonical descriptor of a function.  */
   HOWTO (R_BFIN_FUNCDESC_GOTOFF17M4, /* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_FUNCDESC_GOTOFF17M4", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the address of the
      canonical descriptor of a function.  */
   HOWTO (R_BFIN_FUNCDESC_GOTOFFHI, /* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_FUNCDESC_GOTOFFHI", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the address of the
      canonical descriptor of a function.  */
   HOWTO (R_BFIN_FUNCDESC_GOTOFFLO, /* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_FUNCDESC_GOTOFFLO", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the address of
      the symbol.  */
   HOWTO (R_BFIN_GOTOFF17M4,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_GOTOFF17M4",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the address of the
      symbol.  */
   HOWTO (R_BFIN_GOTOFFHI,	 /* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_GOTOFFHI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the address of the
      symbol.  */
   HOWTO (R_BFIN_GOTOFFLO,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_BFIN_GOTOFFLO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 static reloc_howto_type bfin_gnuext_howto_table [] =
 {
   HOWTO (R_BFIN_PLTPC,		/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_bitfield, /* complain_on_overflow.  */
 	 bfin_pltpc_reloc,	/* special_function.  */
 	 "R_BFIN_PLTPC",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0xffff,		/* src_mask.  */
 	 0xffff,		/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
   HOWTO (R_BFIN_GOT,		/* type.  */
 	 0,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 16,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_bitfield, /* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_BFIN_GOT",		/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0x7fff,		/* src_mask.  */
 	 0x7fff,		/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
 /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_BFIN_GNU_VTINHERIT,	/* type.  */
 	 0,			/* rightshift.  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* size.  */
 	 0,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont, /* complain_on_overflow.  */
 	 NULL,			/* special_function.  */
 	 "R_BFIN_GNU_VTINHERIT", /* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0,			/* dst_mask.  */
-	 FALSE),		/* pcrel_offset.  */
+	 false),		/* pcrel_offset.  */
 
 /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_BFIN_GNU_VTENTRY,	/* type.  */
 	 0,			/* rightshift.  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* size.  */
 	 0,			/* bitsize.  */
-	 FALSE,			/* pc_relative.  */
+	 false,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_dont, /* complain_on_overflow.  */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function.  */
 	 "R_BFIN_GNU_VTENTRY",	/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0,			/* dst_mask.  */
-	 FALSE)			/* pcrel_offset.  */
+	 false)			/* pcrel_offset.  */
 };
 
 struct bfin_reloc_map
@@ -1041,7 +1042,7 @@ static const struct bfin_reloc_map bfin_
 };
 
 
-static bfd_boolean
+static bool
 bfin_info_to_howto (bfd *abfd,
 		    arelent *cache_ptr,
 		    Elf_Internal_Rela *dst)
@@ -1062,10 +1063,10 @@ bfin_info_to_howto (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Given a BFD reloc type, return the howto.  */
@@ -1129,12 +1130,12 @@ bfin_reloc_type_lookup (bfd * abfd ATTRI
 }
 
 /* Set by ld emulation if --code-in-l1.  */
-bfd_boolean elf32_bfin_code_in_l1 = 0;
+bool elf32_bfin_code_in_l1 = 0;
 
 /* Set by ld emulation if --data-in-l1.  */
-bfd_boolean elf32_bfin_data_in_l1 = 0;
+bool elf32_bfin_data_in_l1 = 0;
 
-static bfd_boolean
+static bool
 elf32_bfin_final_write_processing (bfd *abfd)
 {
   if (elf32_bfin_code_in_l1)
@@ -1146,11 +1147,11 @@ elf32_bfin_final_write_processing (bfd *
 
 /* Return TRUE if the name is a local label.
    bfin local labels begin with L$.  */
-static bfd_boolean
+static bool
 bfin_is_local_label_name (bfd *abfd, const char *label)
 {
   if (label[0] == 'L' && label[1] == '$' )
-    return TRUE;
+    return true;
 
   return _bfd_elf_is_local_label_name (abfd, label);
 }
@@ -1159,7 +1160,7 @@ bfin_is_local_label_name (bfd *abfd, con
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 bfin_check_relocs (bfd * abfd,
 		   struct bfd_link_info *info,
 		   asection *sec,
@@ -1175,7 +1176,7 @@ bfin_check_relocs (bfd * abfd,
   asection *srelgot;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -1197,6 +1198,9 @@ bfin_check_relocs (bfd * abfd,
       else
 	{
 	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *)h->root.u.i.link;
 	}
 
       switch (ELF32_R_TYPE (rel->r_info))
@@ -1205,14 +1209,14 @@ bfin_check_relocs (bfd * abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_BFIN_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries
 	   are actually used.  Record for later use during GC.  */
 	case R_BFIN_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_BFIN_GOT:
@@ -1226,7 +1230,7 @@ bfin_check_relocs (bfd * abfd,
 	      /* Create the .got section.  */
 	      elf_hash_table (info)->dynobj = dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (dynobj, info))
-		return FALSE;
+		return false;
 	    }
 
 	  sgot = elf_hash_table (info)->sgot;
@@ -1241,7 +1245,7 @@ bfin_check_relocs (bfd * abfd,
 		  if (h->dynindx == -1 && !h->forced_local)
 		    {
 		      if (!bfd_elf_link_record_dynamic_symbol (info, h))
-			return FALSE;
+			return false;
 		    }
 
 		  /* Allocate space in the .got section.  */
@@ -1263,7 +1267,7 @@ bfin_check_relocs (bfd * abfd,
 		  local_got_refcounts = ((bfd_signed_vma *)
 					 bfd_zalloc (abfd, size));
 		  if (local_got_refcounts == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_refcounts (abfd) = local_got_refcounts;
 		}
 	      if (local_got_refcounts[r_symndx] == 0)
@@ -1286,7 +1290,7 @@ bfin_check_relocs (bfd * abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -1314,8 +1318,9 @@ bfin_final_link_relocate (Elf_Internal_R
       bfd_reloc_status_type r = bfd_reloc_ok;
       bfd_vma x;
 
-      if (address > bfd_get_section_limit (input_bfd, input_section))
-	return bfd_reloc_outofrange;
+      if (!bfd_reloc_offset_in_range (howto, input_bfd, input_section,
+				      address - 2))
+	  return bfd_reloc_outofrange;
 
       value += addend;
 
@@ -1354,7 +1359,7 @@ bfin_final_link_relocate (Elf_Internal_R
 
 }
 
-static bfd_boolean
+static int
 bfin_relocate_section (bfd * output_bfd,
 		       struct bfd_link_info *info,
 		       bfd * input_bfd,
@@ -1371,7 +1376,6 @@ bfin_relocate_section (bfd * output_bfd,
   asection *sgot;
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
-  int i = 0;
 
   dynobj = elf_hash_table (info)->dynobj;
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
@@ -1382,7 +1386,7 @@ bfin_relocate_section (bfd * output_bfd,
 
   rel = relocs;
   relend = relocs + input_section->reloc_count;
-  for (; rel < relend; rel++, i++)
+  for (; rel < relend; rel++)
     {
       int r_type;
       reloc_howto_type *howto;
@@ -1391,7 +1395,7 @@ bfin_relocate_section (bfd * output_bfd,
       Elf_Internal_Sym *sym;
       asection *sec;
       bfd_vma relocation = 0;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       bfd_reloc_status_type r;
       bfd_vma address;
 
@@ -1399,7 +1403,7 @@ bfin_relocate_section (bfd * output_bfd,
       if (r_type < 0 || r_type >= 243)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       if (r_type == R_BFIN_GNU_VTENTRY
@@ -1410,14 +1414,14 @@ bfin_relocate_section (bfd * output_bfd,
       if (howto == NULL)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       r_symndx = ELF32_R_SYM (rel->r_info);
 
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -1427,7 +1431,7 @@ bfin_relocate_section (bfd * output_bfd,
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1437,7 +1441,8 @@ bfin_relocate_section (bfd * output_bfd,
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_BFIN_UNUSED0,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1469,7 +1474,7 @@ bfin_relocate_section (bfd * output_bfd,
 		/* Create the .got section.  */
 		elf_hash_table (info)->dynobj = dynobj = output_bfd;
 		if (!_bfd_elf_create_got_section (dynobj, info))
-		  return FALSE;
+		  return false;
 	      }
 
 	    sgot = elf_hash_table (info)->sgot;
@@ -1477,7 +1482,7 @@ bfin_relocate_section (bfd * output_bfd,
 
 	    if (h != NULL)
 	      {
-		bfd_boolean dyn;
+		bool dyn;
 
 		off = h->got.offset;
 		BFD_ASSERT (off != (bfd_vma) - 1);
@@ -1514,7 +1519,7 @@ bfin_relocate_section (bfd * output_bfd,
 		      }
 		  }
 		else
-		  unresolved_reloc = FALSE;
+		  unresolved_reloc = false;
 	      }
 	    else
 	      {
@@ -1585,7 +1590,7 @@ bfin_relocate_section (bfd * output_bfd,
 	       "unresolvable relocation against symbol `%s'"),
 	     input_bfd, input_section, (uint64_t) rel->r_offset,
 	     h->root.root.string);
-	  return FALSE;
+	  return false;
 	}
 
       if (r != bfd_reloc_ok)
@@ -1600,7 +1605,7 @@ bfin_relocate_section (bfd * output_bfd,
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      if (*name == '\0')
 		name = bfd_section_name (sec);
 	    }
@@ -1616,12 +1621,12 @@ bfin_relocate_section (bfd * output_bfd,
 		(_("%pB(%pA+%#" PRIx64 "): reloc against `%s': error %d"),
 		 input_bfd, input_section, (uint64_t) rel->r_offset,
 		 name, (int) r);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static asection *
@@ -1668,9 +1673,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 +1734,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)
@@ -1736,8 +1742,7 @@ bfinfdpic_elf_link_hash_table_create (bf
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
 				      _bfd_elf_link_hash_newfunc,
-				      sizeof (struct elf_link_hash_entry),
-				      BFIN_ELF_DATA))
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -2046,7 +2051,7 @@ _bfinfdpic_osec_to_segment (bfd *output_
   return (p != NULL) ? p - elf_tdata (output_bfd)->phdr : -1;
 }
 
-inline static bfd_boolean
+inline static bool
 _bfinfdpic_osec_readonly_p (bfd *output_bfd, asection *osec)
 {
   unsigned seg = _bfinfdpic_osec_to_segment (output_bfd, osec);
@@ -2057,7 +2062,7 @@ _bfinfdpic_osec_readonly_p (bfd *output_
 /* Generate relocations for GOT entries, function descriptors, and
    code for PLT and lazy PLT entries.  */
 
-inline static bfd_boolean
+inline static bool
 _bfinfdpic_emit_got_relocs_plt_entries (struct bfinfdpic_relocs_info *entry,
 					bfd *output_bfd,
 					struct bfd_link_info *info,
@@ -2069,7 +2074,7 @@ _bfinfdpic_emit_got_relocs_plt_entries (
   int dynindx = -1;
 
   if (entry->done)
-    return TRUE;
+    return true;
   entry->done = 1;
 
   if (entry->got_entry || entry->fdgot_entry || entry->fd_entry)
@@ -2185,7 +2190,7 @@ _bfinfdpic_emit_got_relocs_plt_entries (
 	      idx = dynindx;
 	      ad = addend;
 	      if (ad)
-		return FALSE;
+		return false;
 	    }
 	  else
 	    {
@@ -2329,7 +2334,7 @@ _bfinfdpic_emit_got_relocs_plt_entries (
       else if (entry->lazyplt)
 	{
 	  if (ad)
-	    return FALSE;
+	    return false;
 
 	  fd_lazy_rel_offset = ofst;
 
@@ -2450,7 +2455,7 @@ _bfinfdpic_emit_got_relocs_plt_entries (
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relocate an Blackfin ELF section.
@@ -2483,7 +2488,7 @@ _bfinfdpic_emit_got_relocs_plt_entries (
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 bfinfdpic_relocate_section (bfd * output_bfd,
 			    struct bfd_link_info *info,
 			    bfd * input_bfd,
@@ -2546,12 +2551,13 @@ bfinfdpic_relocate_section (bfd * output
       if (howto == NULL)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       h      = NULL;
       sym    = NULL;
       sec    = NULL;
+      picrel = NULL;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -2565,8 +2571,8 @@ bfinfdpic_relocate_section (bfd * output
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
-	  bfd_boolean unresolved_reloc;
+	  bool warned, ignored;
+	  bool unresolved_reloc;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2577,7 +2583,8 @@ bfinfdpic_relocate_section (bfd * output
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_BFIN_UNUSED0,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -2614,6 +2621,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,
@@ -2626,7 +2636,7 @@ bfinfdpic_relocate_section (bfd * output
 						      (info), input_bfd, r_symndx,
 						      orig_addend, INSERT);
 	  if (! picrel)
-	    return FALSE;
+	    return false;
 
 	  if (!_bfinfdpic_emit_got_relocs_plt_entries (picrel, output_bfd, info,
 						       osec, sym,
@@ -2637,7 +2647,7 @@ bfinfdpic_relocate_section (bfd * output
 		(_("%pB: relocation at `%pA+%#" PRIx64 "' "
 		   "references symbol `%s' with nonzero addend"),
 		 input_bfd, input_section, (uint64_t) rel->r_offset, name);
-	      return FALSE;
+	      return false;
 
 	    }
 
@@ -2653,7 +2663,7 @@ bfinfdpic_relocate_section (bfd * output
 	      info->callbacks->warning
 		(info, _("relocation references symbol not defined in the module"),
 		 name, input_bfd, input_section, rel->r_offset);
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 	}
@@ -2719,129 +2729,130 @@ bfinfdpic_relocate_section (bfd * output
 	  break;
 
 	case R_BFIN_FUNCDESC:
-	  {
-	    int dynindx;
-	    bfd_vma addend = rel->r_addend;
+	  if ((input_section->flags & SEC_ALLOC) != 0)
+	    {
+	      int dynindx;
+	      bfd_vma addend = rel->r_addend;
 
-	    if (! (h && h->root.type == bfd_link_hash_undefweak
-		   && BFINFDPIC_SYM_LOCAL (info, h)))
-	      {
-		/* If the symbol is dynamic and there may be dynamic
-		   symbol resolution because we are or are linked with a
-		   shared library, emit a FUNCDESC relocation such that
-		   the dynamic linker will allocate the function
-		   descriptor.  If the symbol needs a non-local function
-		   descriptor but binds locally (e.g., its visibility is
-		   protected, emit a dynamic relocation decayed to
-		   section+offset.  */
-		if (h && ! BFINFDPIC_FUNCDESC_LOCAL (info, h)
-		    && BFINFDPIC_SYM_LOCAL (info, h)
-		    && !bfd_link_pde (info))
-		  {
-		    dynindx = elf_section_data (h->root.u.def.section
-						->output_section)->dynindx;
-		    addend += h->root.u.def.section->output_offset
-		      + h->root.u.def.value;
-		  }
-		else if (h && ! BFINFDPIC_FUNCDESC_LOCAL (info, h))
-		  {
-		    if (addend)
-		      {
-			info->callbacks->warning
-			  (info, _("R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"),
-			   name, input_bfd, input_section, rel->r_offset);
-			return FALSE;
-		      }
-		    dynindx = h->dynindx;
-		  }
-		else
-		  {
-		    /* Otherwise, we know we have a private function
-		       descriptor, so reference it directly.  */
-		    BFD_ASSERT (picrel->privfd);
-		    r_type = R_BFIN_BYTE4_DATA;
-		    dynindx = elf_section_data (bfinfdpic_got_section (info)
-						->output_section)->dynindx;
-		    addend = bfinfdpic_got_section (info)->output_offset
-		      + bfinfdpic_got_initial_offset (info)
-		      + picrel->fd_entry;
-		  }
+	      if (! (h && h->root.type == bfd_link_hash_undefweak
+		     && BFINFDPIC_SYM_LOCAL (info, h)))
+		{
+		  /* If the symbol is dynamic and there may be dynamic
+		     symbol resolution because we are or are linked with a
+		     shared library, emit a FUNCDESC relocation such that
+		     the dynamic linker will allocate the function
+		     descriptor.  If the symbol needs a non-local function
+		     descriptor but binds locally (e.g., its visibility is
+		     protected, emit a dynamic relocation decayed to
+		     section+offset.  */
+		  if (h && ! BFINFDPIC_FUNCDESC_LOCAL (info, h)
+		      && BFINFDPIC_SYM_LOCAL (info, h)
+		      && !bfd_link_pde (info))
+		    {
+		      dynindx = elf_section_data (h->root.u.def.section
+						  ->output_section)->dynindx;
+		      addend += h->root.u.def.section->output_offset
+			+ h->root.u.def.value;
+		    }
+		  else if (h && ! BFINFDPIC_FUNCDESC_LOCAL (info, h))
+		    {
+		      if (addend)
+			{
+			  info->callbacks->warning
+			    (info, _("R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"),
+			     name, input_bfd, input_section, rel->r_offset);
+			  return false;
+			}
+		      dynindx = h->dynindx;
+		    }
+		  else
+		    {
+		      /* Otherwise, we know we have a private function
+			 descriptor, so reference it directly.  */
+		      BFD_ASSERT (picrel->privfd);
+		      r_type = R_BFIN_BYTE4_DATA;
+		      dynindx = elf_section_data (bfinfdpic_got_section (info)
+						  ->output_section)->dynindx;
+		      addend = bfinfdpic_got_section (info)->output_offset
+			+ bfinfdpic_got_initial_offset (info)
+			+ picrel->fd_entry;
+		    }
 
-		/* If there is room for dynamic symbol resolution, emit
-		   the dynamic relocation.  However, if we're linking an
-		   executable at a fixed location, we won't have emitted a
-		   dynamic symbol entry for the got section, so idx will
-		   be zero, which means we can and should compute the
-		   address of the private descriptor ourselves.  */
-		if (bfd_link_pde (info)
-		    && (!h || BFINFDPIC_FUNCDESC_LOCAL (info, h)))
-		  {
-		    bfd_vma offset;
+		  /* If there is room for dynamic symbol resolution, emit
+		     the dynamic relocation.  However, if we're linking an
+		     executable at a fixed location, we won't have emitted a
+		     dynamic symbol entry for the got section, so idx will
+		     be zero, which means we can and should compute the
+		     address of the private descriptor ourselves.  */
+		  if (bfd_link_pde (info)
+		      && (!h || BFINFDPIC_FUNCDESC_LOCAL (info, h)))
+		    {
+		      bfd_vma offset;
 
-		    addend += bfinfdpic_got_section (info)->output_section->vma;
-		    if ((bfd_section_flags (input_section->output_section)
-			 & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
-		      {
-			if (_bfinfdpic_osec_readonly_p (output_bfd,
-						       input_section
-						       ->output_section))
-			  {
-			    info->callbacks->warning
-			      (info,
-			       _("cannot emit fixups in read-only section"),
-			       name, input_bfd, input_section, rel->r_offset);
-			    return FALSE;
-			  }
+		      addend += bfinfdpic_got_section (info)->output_section->vma;
+		      if ((bfd_section_flags (input_section->output_section)
+			   & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+			{
+			  if (_bfinfdpic_osec_readonly_p (output_bfd,
+							  input_section
+							  ->output_section))
+			    {
+			      info->callbacks->warning
+				(info,
+				 _("cannot emit fixups in read-only section"),
+				 name, input_bfd, input_section, rel->r_offset);
+			      return false;
+			    }
+
+			  offset = _bfd_elf_section_offset
+			    (output_bfd, info,
+			     input_section, rel->r_offset);
 
-			offset = _bfd_elf_section_offset
-			  (output_bfd, info,
-			   input_section, rel->r_offset);
+			  if (offset != (bfd_vma)-1)
+			    _bfinfdpic_add_rofixup (output_bfd,
+						    bfinfdpic_gotfixup_section
+						    (info),
+						    offset + input_section
+						    ->output_section->vma
+						    + input_section->output_offset,
+						    picrel);
+			}
+		    }
+		  else if ((bfd_section_flags (input_section->output_section)
+			    & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
+		    {
+		      bfd_vma offset;
 
-			if (offset != (bfd_vma)-1)
-			  _bfinfdpic_add_rofixup (output_bfd,
-						  bfinfdpic_gotfixup_section
-						  (info),
+		      if (_bfinfdpic_osec_readonly_p (output_bfd,
+						      input_section
+						      ->output_section))
+			{
+			  info->callbacks->warning
+			    (info,
+			     _("cannot emit dynamic relocations in read-only section"),
+			     name, input_bfd, input_section, rel->r_offset);
+			  return false;
+			}
+		      offset = _bfd_elf_section_offset (output_bfd, info,
+							input_section, rel->r_offset);
+
+		      if (offset != (bfd_vma)-1)
+			_bfinfdpic_add_dyn_reloc (output_bfd,
+						  bfinfdpic_gotrel_section (info),
 						  offset + input_section
 						  ->output_section->vma
 						  + input_section->output_offset,
-						  picrel);
-		      }
-		  }
-		else if ((bfd_section_flags (input_section->output_section)
-			  & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD))
-		  {
-		    bfd_vma offset;
-
-		    if (_bfinfdpic_osec_readonly_p (output_bfd,
-						   input_section
-						   ->output_section))
-		      {
-			info->callbacks->warning
-			  (info,
-			   _("cannot emit dynamic relocations in read-only section"),
-			   name, input_bfd, input_section, rel->r_offset);
-			return FALSE;
-		      }
-		    offset = _bfd_elf_section_offset (output_bfd, info,
-						      input_section, rel->r_offset);
-
-		    if (offset != (bfd_vma)-1)
-		      _bfinfdpic_add_dyn_reloc (output_bfd,
-						bfinfdpic_gotrel_section (info),
-						offset + input_section
-						->output_section->vma
-						+ input_section->output_offset,
-						r_type,
-						dynindx, addend, picrel);
-		  }
-		else
-		  addend += bfinfdpic_got_section (info)->output_section->vma;
-	      }
+						  r_type,
+						  dynindx, addend, picrel);
+		    }
+		  else
+		    addend += bfinfdpic_got_section (info)->output_section->vma;
+		}
 
-	    /* We want the addend in-place because dynamic
-	       relocations are REL.  Setting relocation to it should
-	       arrange for it to be installed.  */
-	    relocation = addend - rel->r_addend;
+	      /* We want the addend in-place because dynamic
+		 relocations are REL.  Setting relocation to it should
+		 arrange for it to be installed.  */
+	      relocation = addend - rel->r_addend;
 	  }
 	  check_segment[0] = check_segment[1] = got_segment;
 	  break;
@@ -2870,7 +2881,7 @@ bfinfdpic_relocate_section (bfd * output
 		    info->callbacks->warning
 		      (info, _("R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"),
 		       name, input_bfd, input_section, rel->r_offset);
-		    return FALSE;
+		    return false;
 		  }
 		dynindx = h->dynindx;
 	      }
@@ -2911,7 +2922,7 @@ bfinfdpic_relocate_section (bfd * output
 			  (info,
 			   _("cannot emit fixups in read-only section"),
 			   name, input_bfd, input_section, rel->r_offset);
-			return FALSE;
+			return false;
 		      }
 		    if (!h || h->root.type != bfd_link_hash_undefweak)
 		      {
@@ -2948,7 +2959,7 @@ bfinfdpic_relocate_section (bfd * output
 			  (info,
 			   _("cannot emit dynamic relocations in read-only section"),
 			   name, input_bfd, input_section, rel->r_offset);
-			return FALSE;
+			return false;
 		      }
 
 		    if (offset != (bfd_vma)-1)
@@ -3015,11 +3026,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
@@ -3035,7 +3046,7 @@ bfinfdpic_relocate_section (bfd * output
 	       : _("warning: relocation references a different segment"),
 	       name, input_bfd, input_section, rel->r_offset);
 	  if (!silence_segment_error && bfd_link_pic (info))
-	    return FALSE;
+	    return false;
 	  elf_elfheader (output_bfd)->e_flags |= EF_BFIN_PIC;
 	}
 
@@ -3115,7 +3126,7 @@ bfinfdpic_relocate_section (bfd * output
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -3141,12 +3152,12 @@ bfinfdpic_relocate_section (bfd * output
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We need dynamic symbols for every section, since segments can
    relocate independently.  */
-static bfd_boolean
+static bool
 _bfinfdpic_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
 				    struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				    asection *p)
@@ -3158,12 +3169,12 @@ _bfinfdpic_link_omit_section_dynsym (bfd
       /* If sh_type is yet undecided, assume it could be
 	 SHT_PROGBITS/SHT_NOBITS.  */
     case SHT_NULL:
-      return FALSE;
+      return false;
 
       /* There shouldn't be section relative relocations
 	 against any other section.  */
     default:
-      return TRUE;
+      return true;
     }
 }
 
@@ -3171,7 +3182,7 @@ _bfinfdpic_link_omit_section_dynsym (bfd
    is almost entirely copied from
    elflink.c:_bfd_elf_create_got_section().  */
 
-static bfd_boolean
+static bool
 _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags, pltflags;
@@ -3183,7 +3194,7 @@ _bfin_create_got_section (bfd *abfd, str
   /* This function may be called more than once.  */
   s = elf_hash_table (info)->sgot;
   if (s != NULL)
-    return TRUE;
+    return true;
 
   /* Machine specific: although pointers are 32-bits wide, we want the
      GOT to be aligned to a 64-bit boundary, such that function
@@ -3199,7 +3210,7 @@ _bfin_create_got_section (bfd *abfd, str
   elf_hash_table (info)->sgot = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (bed->want_got_sym)
     {
@@ -3210,12 +3221,12 @@ _bfin_create_got_section (bfd *abfd, str
       h = _bfd_elf_define_linkage_sym (abfd, info, s, "__GLOBAL_OFFSET_TABLE_");
       elf_hash_table (info)->hgot = h;
       if (h == NULL)
-	return FALSE;
+	return false;
 
       /* Machine-specific: we want the symbol for executables as
 	 well.  */
       if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   /* The first bit of the global offset table is the header.  */
@@ -3230,13 +3241,13 @@ _bfin_create_got_section (bfd *abfd, str
 						      bfinfdpic_relocs_info_eq,
 						      (htab_del) NULL);
       if (! bfinfdpic_relocs_info (info))
-	return FALSE;
+	return false;
 
       s = bfd_make_section_anyway_with_flags (abfd, ".rel.got",
 					      (flags | SEC_READONLY));
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
 
       bfinfdpic_gotrel_section (info) = s;
 
@@ -3245,7 +3256,7 @@ _bfin_create_got_section (bfd *abfd, str
 					      (flags | SEC_READONLY));
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
 
       bfinfdpic_gotfixup_section (info) = s;
     }
@@ -3259,7 +3270,7 @@ _bfin_create_got_section (bfd *abfd, str
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
   /* Blackfin-specific: remember it.  */
   bfinfdpic_plt_section (info) = s;
 
@@ -3271,15 +3282,15 @@ _bfin_create_got_section (bfd *abfd, str
 
       if (! (_bfd_generic_link_add_one_symbol
 	     (info, abfd, "__PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s, 0, NULL,
-	      FALSE, get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	      false, get_elf_backend_data (abfd)->collect, &bh)))
+	return false;
       h = (struct elf_link_hash_entry *) bh;
       h->def_regular = 1;
       h->type = STT_OBJECT;
 
       if (! bfd_link_executable (info)
 	  && ! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   /* Blackfin-specific: we want rel relocations for the plt.  */
@@ -3287,17 +3298,17 @@ _bfin_create_got_section (bfd *abfd, str
 					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   /* Blackfin-specific: remember it.  */
   bfinfdpic_pltrel_section (info) = s;
 
-  return TRUE;
+  return true;
 }
 
 /* Make sure the got and plt sections exist, and that our pointers in
    the link hash table point to them.  */
 
-static bfd_boolean
+static bool
 elf32_bfinfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   /* This is mostly copied from
@@ -3314,7 +3325,7 @@ elf32_bfinfdpic_create_dynamic_sections
 
   /* Blackfin-specific: we want to create the GOT in the Blackfin way.  */
   if (! _bfin_create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   /* Blackfin-specific: make sure we created everything we wanted.  */
   BFD_ASSERT (bfinfdpic_got_section (info) && bfinfdpic_gotrel_section (info)
@@ -3333,7 +3344,7 @@ elf32_bfinfdpic_create_dynamic_sections
       s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
 					      SEC_ALLOC | SEC_LINKER_CREATED);
       if (s == NULL)
-	return FALSE;
+	return false;
 
       /* The .rel[a].bss section holds copy relocs.  This section is not
 	 normally needed.  We need to create it here, though, so that the
@@ -3353,11 +3364,11 @@ elf32_bfinfdpic_create_dynamic_sections
 						  flags | SEC_READONLY);
 	  if (s == NULL
 	      || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Compute the total GOT size required by each symbol in each range.
@@ -3425,7 +3436,7 @@ _bfinfdpic_count_nontls_entries (struct
 static void
 _bfinfdpic_count_relocs_fixups (struct bfinfdpic_relocs_info *entry,
 				struct _bfinfdpic_dynamic_got_info *dinfo,
-				bfd_boolean subtract)
+				bool subtract)
 {
   bfd_vma relocs = 0, fixups = 0;
 
@@ -3478,7 +3489,7 @@ _bfinfdpic_count_got_plt_entries (void *
 
   _bfinfdpic_count_nontls_entries (entry, dinfo);
 
-  _bfinfdpic_count_relocs_fixups (entry, dinfo, FALSE);
+  _bfinfdpic_count_relocs_fixups (entry, dinfo, false);
 
   return 1;
 }
@@ -3851,7 +3862,7 @@ _bfinfdpic_resolve_final_relocs_info (vo
    section and the rofixup section.  Assign locations for GOT and PLT
    entries.  */
 
-static bfd_boolean
+static bool
 _bfinfdpic_size_got_plt (bfd *output_bfd,
 			 struct _bfinfdpic_dynamic_got_plt_info *gpinfop)
 {
@@ -3917,7 +3928,8 @@ _bfinfdpic_size_got_plt (bfd *output_bfd
 	(bfd_byte *) bfd_zalloc (dynobj,
 				 bfinfdpic_got_section (info)->size);
       if (bfinfdpic_got_section (info)->contents == NULL)
-	return FALSE;
+	return false;
+      bfinfdpic_got_section (info)->alloced = 1;
     }
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -3936,7 +3948,8 @@ _bfinfdpic_size_got_plt (bfd *output_bfd
 	(bfd_byte *) bfd_zalloc (dynobj,
 				 bfinfdpic_gotrel_section (info)->size);
       if (bfinfdpic_gotrel_section (info)->contents == NULL)
-	return FALSE;
+	return false;
+      bfinfdpic_gotrel_section (info)->alloced = 1;
     }
 
   bfinfdpic_gotfixup_section (info)->size = (gpinfop->g.fixups + 1) * 4;
@@ -3948,7 +3961,8 @@ _bfinfdpic_size_got_plt (bfd *output_bfd
 	(bfd_byte *) bfd_zalloc (dynobj,
 				 bfinfdpic_gotfixup_section (info)->size);
       if (bfinfdpic_gotfixup_section (info)->contents == NULL)
-	return FALSE;
+	return false;
+      bfinfdpic_gotfixup_section (info)->alloced = 1;
     }
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -3962,7 +3976,8 @@ _bfinfdpic_size_got_plt (bfd *output_bfd
 	(bfd_byte *) bfd_zalloc (dynobj,
 				 bfinfdpic_pltrel_section (info)->size);
       if (bfinfdpic_pltrel_section (info)->contents == NULL)
-	return FALSE;
+	return false;
+      bfinfdpic_pltrel_section (info)->alloced = 1;
     }
 
   /* Add 4 bytes for every block of at most 65535 lazy PLT entries,
@@ -4007,17 +4022,18 @@ _bfinfdpic_size_got_plt (bfd *output_bfd
 	(bfd_byte *) bfd_zalloc (dynobj,
 				 bfinfdpic_plt_section (info)->size);
       if (bfinfdpic_plt_section (info)->contents == NULL)
-	return FALSE;
+	return false;
+      bfinfdpic_plt_section (info)->alloced = 1;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd,
-				      struct bfd_link_info *info)
+static bool
+elf32_bfinfdpic_late_size_sections (bfd *output_bfd,
+				    struct bfd_link_info *info)
 {
   struct elf_link_hash_table *htab;
   bfd *dynobj;
@@ -4026,7 +4042,8 @@ elf32_bfinfdpic_size_dynamic_sections (b
 
   htab = elf_hash_table (info);
   dynobj = htab->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (htab->dynamic_sections_created)
     {
@@ -4037,6 +4054,7 @@ elf32_bfinfdpic_size_dynamic_sections (b
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -4061,27 +4079,7 @@ elf32_bfinfdpic_size_dynamic_sections (b
   bfinfdpic_dynamic_got_plt_info (info) = bfd_alloc (dynobj, sizeof (gpinfo.g));
 
   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;
-    }
+      return false;
 
   s = bfd_get_linker_section (dynobj, ".dynbss");
   if (s && s->size == 0)
@@ -4091,41 +4089,38 @@ 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
-elf32_bfinfdpic_always_size_sections (bfd *output_bfd,
+static bool
+elf32_bfinfdpic_early_size_sections (bfd *output_bfd,
 				     struct bfd_link_info *info)
 {
   if (!bfd_link_relocatable (info)
       && !bfd_elf_stack_segment_size (output_bfd, info,
 				      "__stacksize", DEFAULT_STACK_SIZE))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Check whether any of the relocations was optimized away, and
    subtract it from the relocation or fixup count.  */
-static bfd_boolean
+static bool
 _bfinfdpic_check_discarded_relocs (bfd *abfd, asection *sec,
 				   struct bfd_link_info *info,
-				   bfd_boolean *changed)
+				   bool *changed)
 {
   Elf_Internal_Shdr *symtab_hdr;
-  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+  struct elf_link_hash_entry **sym_hashes;
   Elf_Internal_Rela *rel, *erel;
 
   if ((sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0)
-    return TRUE;
+    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);
-  if (!elf_bad_symtab (abfd))
-    sym_hashes_end -= symtab_hdr->sh_info;
 
   rel = elf_section_data (sec)->relocs;
 
@@ -4167,28 +4162,28 @@ _bfinfdpic_check_discarded_relocs (bfd *
 						 rel->r_addend, NO_INSERT);
 
       if (! picrel)
-	return FALSE;
+	return false;
 
-      *changed = TRUE;
+      *changed = true;
       dinfo = bfinfdpic_dynamic_got_plt_info (info);
 
-      _bfinfdpic_count_relocs_fixups (picrel, dinfo, TRUE);
+      _bfinfdpic_count_relocs_fixups (picrel, dinfo, true);
       if (ELF32_R_TYPE (rel->r_info) == R_BFIN_BYTE4_DATA)
 	picrel->relocs32--;
       else /* we know (ELF32_R_TYPE (rel->r_info) == R_BFIN_FUNCDESC) */
 	picrel->relocsfd--;
-      _bfinfdpic_count_relocs_fixups (picrel, dinfo, FALSE);
+      _bfinfdpic_count_relocs_fixups (picrel, dinfo, false);
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfinfdpic_elf_discard_info (bfd *ibfd,
 			   struct elf_reloc_cookie *cookie ATTRIBUTE_UNUSED,
 			   struct bfd_link_info *info)
 {
-  bfd_boolean changed = FALSE;
+  bool changed = false;
   asection *s;
   bfd *obfd = NULL;
 
@@ -4197,7 +4192,7 @@ bfinfdpic_elf_discard_info (bfd *ibfd,
     if (s->sec_info_type == SEC_INFO_TYPE_EH_FRAME)
       {
 	if (!_bfinfdpic_check_discarded_relocs (ibfd, s, info, &changed))
-	  return FALSE;
+	  return false;
 	obfd = s->output_section->owner;
       }
 
@@ -4215,13 +4210,13 @@ bfinfdpic_elf_discard_info (bfd *ibfd,
 		     NULL);
 
       if (!_bfinfdpic_size_got_plt (obfd, &gpinfo))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_bfinfdpic_finish_dynamic_sections (bfd *output_bfd,
 					struct bfd_link_info *info)
 {
@@ -4257,7 +4252,7 @@ elf32_bfinfdpic_finish_dynamic_sections
 	    {
 	      _bfd_error_handler
 		("LINKER BUG: .rofixup section size mismatch");
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
@@ -4313,13 +4308,13 @@ elf32_bfinfdpic_finish_dynamic_sections
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  */
 
-static bfd_boolean
+static bool
 elf32_bfinfdpic_adjust_dynamic_symbol (struct bfd_link_info *info,
 				       struct elf_link_hash_entry *h)
 {
@@ -4345,32 +4340,32 @@ elf32_bfinfdpic_adjust_dynamic_symbol (s
       h->root.u.def.value = def->root.u.def.value;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Perform any actions needed for dynamic symbols.  */
 
-static bfd_boolean
+static bool
 elf32_bfinfdpic_finish_dynamic_symbol
 (bfd *output_bfd ATTRIBUTE_UNUSED,
  struct bfd_link_info *info ATTRIBUTE_UNUSED,
  struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
  Elf_Internal_Sym *sym ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* Decide whether to attempt to turn absptr or lsda encodings in
    shared libraries into pcrel within the given input section.  */
 
-static bfd_boolean
+static bool
 bfinfdpic_elf_use_relative_eh_frame
 (bfd *input_bfd ATTRIBUTE_UNUSED,
  struct bfd_link_info *info ATTRIBUTE_UNUSED,
  asection *eh_frame_section ATTRIBUTE_UNUSED)
 {
   /* We can't use PC-relative encodings in FDPIC binaries, in general.  */
-  return FALSE;
+  return false;
 }
 
 /* Adjust the contents of an eh_frame_hdr section before they're output.  */
@@ -4510,7 +4505,7 @@ bfinfdpic_elf_encode_eh_address (bfd *ab
    PLT entry should be faster), or taking hints from the compiler.
    Given infinite time and money... :-)  */
 
-static bfd_boolean
+static bool
 bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -4522,7 +4517,7 @@ bfinfdpic_check_relocs (bfd *abfd, struc
   struct bfinfdpic_relocs_info *picrel;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -4538,7 +4533,12 @@ bfinfdpic_check_relocs (bfd *abfd, struc
       if (r_symndx < symtab_hdr->sh_info)
 	h = NULL;
       else
-	h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	{
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	}
 
       switch (ELF32_R_TYPE (rel->r_info))
 	{
@@ -4566,7 +4566,7 @@ bfinfdpic_check_relocs (bfd *abfd, struc
 	    {
 	      elf_hash_table (info)->dynobj = dynobj = abfd;
 	      if (! _bfin_create_got_section (abfd, info))
-		return FALSE;
+		return false;
 	    }
 	  if (! IS_FDPIC (abfd))
 	    {
@@ -4595,7 +4595,7 @@ bfinfdpic_check_relocs (bfd *abfd, struc
 						     (info), abfd, r_symndx,
 						     rel->r_addend, INSERT);
 	  if (! picrel)
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -4668,7 +4668,7 @@ bfinfdpic_check_relocs (bfd *abfd, struc
 	   Reconstruct it for later use during GC.  */
 	case R_BFIN_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
@@ -4677,7 +4677,7 @@ bfinfdpic_check_relocs (bfd *abfd, struc
 	  BFD_ASSERT (h != NULL);
 	  if (h != NULL
 	      && !bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_BFIN_HUIMM16:
@@ -4692,16 +4692,16 @@ bfinfdpic_check_relocs (bfd *abfd, struc
 	    /* xgettext:c-format */
 	    (_("%pB: unsupported relocation type %#x"),
 	     abfd, (int) ELF32_R_TYPE (rel->r_info));
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the right machine number for a Blackfin ELF file.  */
 
-static bfd_boolean
+static bool
 elf32_bfin_object_p (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_bfin, 0);
@@ -4709,16 +4709,16 @@ elf32_bfin_object_p (bfd *abfd)
 	  == (IS_FDPIC (abfd)));
 }
 
-static bfd_boolean
+static bool
 elf32_bfin_set_private_flags (bfd * abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Display the flags field.  */
-static bfd_boolean
+static bool
 elf32_bfin_print_private_bfd_data (bfd * abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -4742,18 +4742,22 @@ elf32_bfin_print_private_bfd_data (bfd *
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf32_bfin_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword old_flags, new_flags;
-  bfd_boolean error = FALSE;
+  bool 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;
@@ -4770,13 +4774,13 @@ elf32_bfin_merge_private_bfd_data (bfd *
 
   if (!elf_flags_init (obfd))			/* First call, no flags set.  */
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
 
   if (((new_flags & EF_BFIN_FDPIC) == 0) != (! IS_FDPIC (obfd)))
     {
-      error = TRUE;
+      error = true;
       if (IS_FDPIC (obfd))
 	_bfd_error_handler
 	  (_("%pB: cannot link non-fdpic object file into fdpic executable"),
@@ -4803,16 +4807,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,32 +4835,28 @@ 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,
-				      sizeof (struct elf_link_hash_entry),
-				      BFIN_ELF_DATA))
+  if (!_bfd_elf_link_hash_table_init (ret, abfd, bfin_link_hash_newfunc,
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       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.  */
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 bfin_finish_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
 			      struct bfd_link_info *info)
 {
@@ -4894,13 +4884,13 @@ bfin_finish_dynamic_sections (bfd * outp
 	}
 
     }
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 bfin_finish_dynamic_symbol (bfd * output_bfd,
 			    struct bfd_link_info *info,
 			    struct elf_link_hash_entry *h,
@@ -4933,8 +4923,7 @@ bfin_finish_dynamic_symbol (bfd * output
 	  && (info->symbolic
 	      || h->dynindx == -1 || h->forced_local) && h->def_regular)
 	{
-	  _bfd_error_handler (_("*** check this relocation %s"),
-			      __FUNCTION__);
+	  _bfd_error_handler (_("*** check this relocation %s"), __func__);
 	  rela.r_info = ELF32_R_INFO (0, R_BFIN_PCREL24);
 	  rela.r_addend = bfd_get_signed_32 (output_bfd,
 					     (sgot->contents
@@ -4964,7 +4953,7 @@ bfin_finish_dynamic_symbol (bfd * output
       || h == elf_hash_table (info)->hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -4973,7 +4962,7 @@ bfin_finish_dynamic_symbol (bfd * output
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 bfin_adjust_dynamic_symbol (struct bfd_link_info *info,
 			    struct elf_link_hash_entry *h)
 {
@@ -5006,7 +4995,7 @@ bfin_adjust_dynamic_symbol (struct bfd_l
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -5017,7 +5006,7 @@ bfin_adjust_dynamic_symbol (struct bfd_l
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    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
@@ -5050,7 +5039,7 @@ bfin_adjust_dynamic_symbol (struct bfd_l
   if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
     {
       _bfd_error_handler (_("the bfin target does not currently support the generation of copy relocations"));
-      return FALSE;
+      return false;
     }
 #endif
   /* We need to figure out the alignment required for this symbol.  I
@@ -5061,11 +5050,8 @@ bfin_adjust_dynamic_symbol (struct bfd_l
 
   /* Apply the required alignment.  */
   s->size = BFD_ALIGN (s->size, (bfd_size_type) (1 << power_of_two));
-  if (power_of_two > bfd_section_alignment (s))
-    {
-      if (!bfd_set_section_alignment (s, power_of_two))
-	return FALSE;
-    }
+  if (!bfd_link_align_section (s, power_of_two))
+    return false;
 
   /* Define the symbol as being at this point in the section.  */
   h->root.u.def.section = s;
@@ -5074,7 +5060,7 @@ bfin_adjust_dynamic_symbol (struct bfd_l
   /* Increment the section size to make room for the symbol.  */
   s->size += h->size;
 
-  return TRUE;
+  return true;
 }
 
 /* The bfin linker needs to keep track of the number of relocs that it
@@ -5109,7 +5095,7 @@ struct bfin_pcrel_relocs_copied
    against a readonly section, and set the DF_TEXTREL flag in this
    case.  */
 
-static bfd_boolean
+static bool
 bfin_discard_copies (struct elf_link_hash_entry *h, void * inf)
 {
   struct bfd_link_info *info = (struct bfd_link_info *) inf;
@@ -5129,26 +5115,27 @@ bfin_discard_copies (struct elf_link_has
 	      }
 	}
 
-      return TRUE;
+      return true;
     }
 
   for (s = bfin_hash_entry (h)->pcrel_relocs_copied;
        s != NULL; s = s->next)
     s->section->size -= s->count * sizeof (Elf32_External_Rela);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
-			    struct bfd_link_info *info)
+static bool
+bfin_late_size_sections (bfd * output_bfd ATTRIBUTE_UNUSED,
+			 struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -5159,6 +5146,7 @@ bfin_size_dynamic_sections (bfd * output
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
   else
@@ -5186,11 +5174,11 @@ bfin_size_dynamic_sections (bfd * output
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
-      bfd_boolean strip;
+      bool strip;
 
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
@@ -5199,9 +5187,9 @@ bfin_size_dynamic_sections (bfd * output
 	 of the dynobj section names depend upon the input files.  */
       name = bfd_section_name (s);
 
-      strip = FALSE;
+      strip = false;
 
-       if (CONST_STRNEQ (name, ".rela"))
+       if (startswith (name, ".rela"))
 	{
 	  if (s->size == 0)
 	    {
@@ -5214,18 +5202,18 @@ bfin_size_dynamic_sections (bfd * output
 		 adjust_dynamic_symbol is called, and it is that
 		 function which decides whether anything needs to go
 		 into these sections.  */
-	      strip = TRUE;
+	      strip = true;
 	    }
 	  else
 	    {
-	      relocs = TRUE;
+	      relocs = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
 	      s->reloc_count = 0;
 	    }
 	}
-      else if (! CONST_STRNEQ (name, ".got"))
+      else if (! startswith (name, ".got"))
 	{
 	  /* It's not one of our sections, so don't allocate space.  */
 	  continue;
@@ -5245,7 +5233,8 @@ bfin_size_dynamic_sections (bfd * output
 	 contents to zero.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL && s->size != 0)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -5261,7 +5250,7 @@ bfin_size_dynamic_sections (bfd * output
       if (!bfd_link_pic (info))
 	{
 	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
+	    return false;
 	}
 
 
@@ -5271,18 +5260,18 @@ bfin_size_dynamic_sections (bfd * output
 	      || !add_dynamic_entry (DT_RELASZ, 0)
 	      || !add_dynamic_entry (DT_RELAENT,
 				     sizeof (Elf32_External_Rela)))
-	    return FALSE;
+	    return false;
 	}
 
       if ((info->flags & DF_TEXTREL) != 0)
 	{
 	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
+	    return false;
 	}
     }
 #undef add_dynamic_entry
 
-  return TRUE;
+  return true;
 }
 
 /* Given a .data section and a .emreloc in-memory section, store
@@ -5292,7 +5281,7 @@ bfin_size_dynamic_sections (bfd * output
    after the add_symbols entry point has been called for all the
    objects, and before the final_link entry point is called.  */
 
-bfd_boolean
+bool
 bfd_bfin_elf32_create_embedded_relocs (bfd *abfd,
 				       struct bfd_link_info *info,
 				       asection *datasec,
@@ -5311,7 +5300,7 @@ bfd_bfin_elf32_create_embedded_relocs (b
   *errmsg = NULL;
 
   if (datasec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -5326,6 +5315,7 @@ bfd_bfin_elf32_create_embedded_relocs (b
   relsec->contents = (bfd_byte *) bfd_alloc (abfd, amt);
   if (relsec->contents == NULL)
     goto error_return;
+  relsec->alloced = 1;
 
   p = relsec->contents;
 
@@ -5391,20 +5381,18 @@ 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;
+  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;
+  return false;
 }
 
 struct bfd_elf_special_section const elf32_bfin_special_sections[] =
@@ -5432,10 +5420,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
@@ -5446,8 +5430,7 @@ struct bfd_elf_special_section const elf
 #define elf_backend_check_relocs	bfin_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
 					bfin_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections \
-					bfin_size_dynamic_sections
+#define elf_backend_late_size_sections	bfin_late_size_sections
 #define elf_backend_relocate_section	bfin_relocate_section
 #define elf_backend_finish_dynamic_symbol \
 					bfin_finish_dynamic_symbol
@@ -5493,9 +5476,9 @@ struct bfd_elf_special_section const elf
 #undef bfd_elf32_bfd_link_hash_table_create
 #define bfd_elf32_bfd_link_hash_table_create \
 		bfinfdpic_elf_link_hash_table_create
-#undef elf_backend_always_size_sections
-#define elf_backend_always_size_sections \
-		elf32_bfinfdpic_always_size_sections
+#undef elf_backend_early_size_sections
+#define elf_backend_early_size_sections \
+		elf32_bfinfdpic_early_size_sections
 
 #undef elf_backend_create_dynamic_sections
 #define elf_backend_create_dynamic_sections \
@@ -5503,9 +5486,9 @@ struct bfd_elf_special_section const elf
 #undef elf_backend_adjust_dynamic_symbol
 #define elf_backend_adjust_dynamic_symbol \
 		elf32_bfinfdpic_adjust_dynamic_symbol
-#undef elf_backend_size_dynamic_sections
-#define elf_backend_size_dynamic_sections \
-		elf32_bfinfdpic_size_dynamic_sections
+#undef elf_backend_late_size_sections
+#define elf_backend_late_size_sections \
+		elf32_bfinfdpic_late_size_sections
 #undef elf_backend_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_symbol \
 		elf32_bfinfdpic_finish_dynamic_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.20200303/bfd/elf32-bfin.h ./bfd/elf32-bfin.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-bfin.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-bfin.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ADI Blackfin BFD support for 32-bit ELF.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,6 +18,6 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
+extern bool bfd_bfin_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    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.20200303/bfd/elf32.c ./bfd/elf32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF 32-bit executable support for BFD.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 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.20200303/bfd/elf32-cr16.c ./bfd/elf32-cr16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-cr16.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-cr16.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by M R Swami Reddy.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -116,467 +116,467 @@ static reloc_howto_type cr16_elf_howto_t
 {
   HOWTO (R_CR16_NONE,		   /* type */
 	 0,			   /* rightshift */
-	 3,			   /* size */
+	 0,			   /* size */
 	 0,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_dont,   /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_NONE",		   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0,			   /* src_mask */
 	 0,			   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_NUM8,		   /* type */
 	 0,			   /* rightshift */
-	 0,			   /* size */
+	 1,			   /* size */
 	 8,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_NUM8",		   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xff,			   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_NUM16,		   /* type */
 	 0,			   /* rightshift */
-	 1,			   /* size */
+	 2,			   /* size */
 	 16,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_NUM16",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_NUM32,		   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 32,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_NUM32",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_NUM32a,		   /* type */
 	 1,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 32,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_NUM32a",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_REGREL4,	   /* type */
 	 0,			   /* rightshift */
-	 0,			   /* size */
+	 1,			   /* size */
 	 4,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_REGREL4",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xf,			   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_REGREL4a,	   /* type */
 	 0,			   /* rightshift */
-	 0,			   /* size */
+	 1,			   /* size */
 	 4,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_REGREL4a",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xf,			   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_REGREL14,	   /* type */
 	 0,			   /* rightshift */
-	 1,			   /* size */
+	 2,			   /* size */
 	 14,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_REGREL14",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0x3fff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_REGREL14a,	   /* type */
 	 0,			   /* rightshift */
-	 1,			   /* size */
+	 2,			   /* size */
 	 14,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_REGREL14a",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0x3fff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_REGREL16,	   /* type */
 	 0,			   /* rightshift */
-	 1,			   /* size */
+	 2,			   /* size */
 	 16,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_REGREL16",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_REGREL20,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 20,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_REGREL20",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xfffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_REGREL20a,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 20,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_REGREL20a",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xfffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_ABS20,		   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 20,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_ABS20",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xfffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_ABS24,		   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 24,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_ABS24",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_IMM4,		   /* type */
 	 0,			   /* rightshift */
-	 0,			   /* size */
+	 1,			   /* size */
 	 4,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_IMM4",		   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xf,			   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_IMM8,		   /* type */
 	 0,			   /* rightshift */
-	 0,			   /* size */
+	 1,			   /* size */
 	 8,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_IMM8",		   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xff,			   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_IMM16,		   /* type */
 	 0,			   /* rightshift */
-	 1,			   /* size */
+	 2,			   /* size */
 	 16,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_IMM16",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_IMM20,		   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 20,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_IMM20",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xfffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_IMM24,		   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 24,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_IMM24",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_IMM32,		   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 32,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_IMM32",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_IMM32a,		   /* type */
 	 1,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 32,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_IMM32a",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_DISP4,		   /* type */
 	 1,			   /* rightshift */
-	 0,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 1,			   /* size */
 	 4,			   /* bitsize */
-	 TRUE,			   /* pc_relative */
+	 true,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_DISP4",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xf,			   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_DISP8,		   /* type */
 	 1,			   /* rightshift */
-	 0,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 1,			   /* size */
 	 8,			   /* bitsize */
-	 TRUE,			   /* pc_relative */
+	 true,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_DISP8",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0x1ff,			   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_DISP16,		   /* type */
 	 0,			   /* rightshift REVIITS: To sync with WinIDEA*/
-	 1,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 2,			   /* size */
 	 16,			   /* bitsize */
-	 TRUE,			   /* pc_relative */
+	 true,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_DISP16",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0x1ffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
   /* REVISIT: DISP24 should be left-shift by 2 as per ISA doc
      but its not done, to sync with WinIDEA and CR16 4.1 tools */
   HOWTO (R_CR16_DISP24,		   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			   /* size */
 	 24,			   /* bitsize */
-	 TRUE,			   /* pc_relative */
+	 true,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_DISP24",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0x1ffffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_DISP24a,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			   /* size */
 	 24,			   /* bitsize */
-	 TRUE,			   /* pc_relative */
+	 true,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_DISP24a",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   /* An 8 bit switch table entry.  This is generated for an expression
      such as ``.byte L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_CR16_SWITCH8,	   /* type */
 	 0,			   /* rightshift */
-	 0,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 1,			   /* size */
 	 8,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_SWITCH8",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xff,			   /* dst_mask */
-	 TRUE),			   /* pcrel_offset */
+	 true),			   /* pcrel_offset */
 
   /* A 16 bit switch table entry.  This is generated for an expression
      such as ``.word L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_CR16_SWITCH16,	   /* type */
 	 0,			   /* rightshift */
-	 1,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 2,			   /* size */
 	 16,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_SWITCH16",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffff,		   /* dst_mask */
-	 TRUE),			   /* pcrel_offset */
+	 true),			   /* pcrel_offset */
 
   /* A 32 bit switch table entry.  This is generated for an expression
      such as ``.long L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_CR16_SWITCH32,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			   /* size */
 	 32,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_SWITCH32",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffffff,		   /* dst_mask */
-	 TRUE),			   /* pcrel_offset */
+	 true),			   /* pcrel_offset */
 
   HOWTO (R_CR16_GOT_REGREL20,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 20,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_GOT_REGREL20",	   /* name */
-	 TRUE,			   /* partial_inplace */
+	 true,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xfffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_GOTC_REGREL20,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size */
+	 4,			   /* size */
 	 20,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_GOTC_REGREL20",   /* name */
-	 TRUE,			   /* partial_inplace */
+	 true,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xfffff,		   /* dst_mask */
-	 FALSE),		   /* pcrel_offset */
+	 false),		   /* pcrel_offset */
 
   HOWTO (R_CR16_GLOB_DAT,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			   /* size */
 	 32,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	   /* special_function */
 	 "R_CR16_GLOB_DAT",	   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0x0,			   /* src_mask */
 	 0xffffffff,		   /* dst_mask */
-	 TRUE)			   /* pcrel_offset */
+	 true)			   /* pcrel_offset */
 };
 
 
 /* Create the GOT section.  */
 
-static bfd_boolean
+static bool
 _bfd_cr16_elf_create_got_section (bfd * abfd, struct bfd_link_info * info)
 {
   flagword   flags;
@@ -588,7 +588,7 @@ _bfd_cr16_elf_create_got_section (bfd *
 
   /* This function may be called more than once.  */
   if (htab->sgot != NULL)
-    return TRUE;
+    return true;
 
   switch (bed->s->arch_size)
     {
@@ -602,7 +602,7 @@ _bfd_cr16_elf_create_got_section (bfd *
 
     default:
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
@@ -612,7 +612,7 @@ _bfd_cr16_elf_create_got_section (bfd *
   htab->sgot= s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (bed->want_got_plt)
     {
@@ -620,7 +620,7 @@ _bfd_cr16_elf_create_got_section (bfd *
       htab->sgotplt = s;
       if (s == NULL
 	  || !bfd_set_section_alignment (s, ptralign))
-	return FALSE;
+	return false;
     }
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got
@@ -630,12 +630,12 @@ _bfd_cr16_elf_create_got_section (bfd *
   h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_");
   htab->hgot = h;
   if (h == NULL)
-    return FALSE;
+    return false;
 
   /* The first bit of the global offset table is the header.  */
   s->size += bed->got_header_size;
 
-  return TRUE;
+  return true;
 }
 
 
@@ -672,7 +672,7 @@ elf_cr16_reloc_name_lookup (bfd *abfd AT
 
 /* Retrieve a howto ptr using an internal relocation entry.  */
 
-static bfd_boolean
+static bool
 elf_cr16_info_to_howto (bfd *abfd, arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
 {
@@ -684,23 +684,23 @@ elf_cr16_info_to_howto (bfd *abfd, arele
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = cr16_elf_howto_table + r_type;
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase.
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 cr16_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
 		       const Elf_Internal_Rela *relocs)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Sym * isymbuf = NULL;
-  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+  struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
   bfd *      dynobj;
@@ -710,16 +710,13 @@ cr16_elf_check_relocs (bfd *abfd, struct
 
   sgot    = NULL;
   srelgot = NULL;
-  bfd_boolean result = FALSE;
+  bool result = false;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    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);
-  if (!elf_bad_symtab (abfd))
-    sym_hashes_end -= symtab_hdr->sh_info;
 
   dynobj = elf_hash_table (info)->dynobj;
   local_got_offsets = elf_local_got_offsets (abfd);
@@ -824,10 +821,9 @@ cr16_elf_check_relocs (bfd *abfd, struct
 	}
     }
 
-   result = TRUE;
-  fail:
-    if (isymbuf != NULL)
-      free (isymbuf);
+  result = true;
+ fail:
+  free (isymbuf);
 
   return result;
 }
@@ -855,56 +851,56 @@ cr16_elf_final_link_relocate (reloc_howt
 
   switch (r_type)
     {
-     case R_CR16_IMM4:
-     case R_CR16_IMM20:
-     case R_CR16_ABS20:
-       break;
-
-     case R_CR16_IMM8:
-     case R_CR16_IMM16:
-     case R_CR16_IMM32:
-     case R_CR16_IMM32a:
-     case R_CR16_REGREL4:
-     case R_CR16_REGREL4a:
-     case R_CR16_REGREL14:
-     case R_CR16_REGREL14a:
-     case R_CR16_REGREL16:
-     case R_CR16_REGREL20:
-     case R_CR16_REGREL20a:
-     case R_CR16_GOT_REGREL20:
-     case R_CR16_GOTC_REGREL20:
-     case R_CR16_ABS24:
-     case R_CR16_DISP16:
-     case R_CR16_DISP24:
-       /* 'hit_data' is relative to the start of the instruction, not the
-	   relocation offset. Advance it to account for the exact offset.  */
-       hit_data += 2;
-       break;
-
-     case R_CR16_NONE:
-       return bfd_reloc_ok;
-       break;
+    case R_CR16_IMM4:
+    case R_CR16_IMM20:
+    case R_CR16_ABS20:
+      break;
 
-     case R_CR16_DISP4:
-       if (is_local)
+    case R_CR16_IMM8:
+    case R_CR16_IMM16:
+    case R_CR16_IMM32:
+    case R_CR16_IMM32a:
+    case R_CR16_REGREL4:
+    case R_CR16_REGREL4a:
+    case R_CR16_REGREL14:
+    case R_CR16_REGREL14a:
+    case R_CR16_REGREL16:
+    case R_CR16_REGREL20:
+    case R_CR16_REGREL20a:
+    case R_CR16_GOT_REGREL20:
+    case R_CR16_GOTC_REGREL20:
+    case R_CR16_ABS24:
+    case R_CR16_DISP16:
+    case R_CR16_DISP24:
+      /* 'hit_data' is relative to the start of the instruction, not the
+	 relocation offset.  Advance it to account for the exact offset.  */
+      hit_data += 2;
+      break;
+
+    case R_CR16_NONE:
+      return bfd_reloc_ok;
+      break;
+
+    case R_CR16_DISP4:
+      if (is_local)
 	Rvalue += -1;
-       break;
+      break;
 
-     case R_CR16_DISP8:
-     case R_CR16_DISP24a:
-       if (is_local)
+    case R_CR16_DISP8:
+    case R_CR16_DISP24a:
+      if (is_local)
 	Rvalue -= -1;
-       break;
+      break;
 
-     case R_CR16_SWITCH8:
-     case R_CR16_SWITCH16:
-     case R_CR16_SWITCH32:
-       /* We only care about the addend, where the difference between
-	  expressions is kept.  */
-       Rvalue = 0;
+    case R_CR16_SWITCH8:
+    case R_CR16_SWITCH16:
+    case R_CR16_SWITCH32:
+      /* We only care about the addend, where the difference between
+	 expressions is kept.  */
+      Rvalue = 0;
 
-     default:
-       break;
+    default:
+      break;
     }
 
   if (howto->pc_relative)
@@ -923,31 +919,27 @@ 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)
-      || (r_type == R_CR16_GOTC_REGREL20)))
+	|| (r_type == R_CR16_GOTC_REGREL20)))
     {
       if (((bfd_vma) check & ~reloc_bits) != 0
 	  && (((bfd_vma) check & ~reloc_bits)
-	  != (-(bfd_vma) 1 & ~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));
+	      check |= ((bfd_vma) -1
+			& ~((bfd_vma) -1 >> howto->rightshift));
 
 	      if (((bfd_vma) check & ~reloc_bits)
 		  != (-(bfd_vma) 1 & ~reloc_bits))
-		 return bfd_reloc_overflow;
+		return bfd_reloc_overflow;
 	    }
 	  else
 	    return bfd_reloc_overflow;
@@ -960,278 +952,250 @@ cr16_elf_final_link_relocate (reloc_howt
       Rvalue &= howto->dst_mask;
     }
 
-  switch (howto->size)
+  switch (bfd_get_reloc_size (howto))
     {
-      case 0:
-	if (r_type == R_CR16_DISP8)
-	  {
-	     Rvalue1 = bfd_get_16 (input_bfd, hit_data);
-	     Rvalue = ((Rvalue1 & 0xf000) | ((Rvalue << 4) & 0xf00)
-		       | (Rvalue1 & 0x00f0) | (Rvalue & 0xf));
-	     bfd_put_16 (input_bfd, Rvalue, hit_data);
-	  }
-	else if (r_type == R_CR16_IMM4)
-	  {
-	     Rvalue1 = bfd_get_16 (input_bfd, hit_data);
-	     Rvalue = (((Rvalue1 & 0xff) << 8) | ((Rvalue << 4) & 0xf0)
-		       | ((Rvalue1 & 0x0f00) >> 8));
-	     bfd_put_16 (input_bfd, Rvalue, hit_data);
-	  }
-	else if (r_type == R_CR16_DISP4)
-	  {
-	     Rvalue1 = bfd_get_16 (input_bfd, hit_data);
-	     Rvalue = (Rvalue1 | ((Rvalue & 0xf) << 4));
-	     bfd_put_16 (input_bfd, Rvalue, hit_data);
-	  }
-	else
-	  {
-	     bfd_put_8 (input_bfd, (unsigned char) Rvalue, hit_data);
-	  }
-	break;
-
-      case 1:
-	if (r_type == R_CR16_DISP16)
-	  {
-	    Rvalue |= (bfd_get_16 (input_bfd, hit_data));
-	    Rvalue = ((Rvalue & 0xfffe) | ((Rvalue >> 16) & 0x1));
-	  }
-	if (r_type == R_CR16_IMM16)
-	  {
-	    Rvalue1 = bfd_get_16 (input_bfd, hit_data);
-
-	    /* Add or subtract the offset value.  */
-	    if (Rvalue1 & 0x8000)
-	      Rvalue -= (~Rvalue1 + 1) & 0xffff;
-	    else
-	      Rvalue += Rvalue1;
+    case 1:
+      if (r_type == R_CR16_DISP8)
+	{
+	  Rvalue1 = bfd_get_16 (input_bfd, hit_data);
+	  Rvalue = ((Rvalue1 & 0xf000) | ((Rvalue << 4) & 0xf00)
+		    | (Rvalue1 & 0x00f0) | (Rvalue & 0xf));
+	  bfd_put_16 (input_bfd, Rvalue, hit_data);
+	}
+      else if (r_type == R_CR16_IMM4)
+	{
+	  Rvalue1 = bfd_get_16 (input_bfd, hit_data);
+	  Rvalue = (((Rvalue1 & 0xff) << 8) | ((Rvalue << 4) & 0xf0)
+		    | ((Rvalue1 & 0x0f00) >> 8));
+	  bfd_put_16 (input_bfd, Rvalue, hit_data);
+	}
+      else if (r_type == R_CR16_DISP4)
+	{
+	  Rvalue1 = bfd_get_16 (input_bfd, hit_data);
+	  Rvalue = (Rvalue1 | ((Rvalue & 0xf) << 4));
+	  bfd_put_16 (input_bfd, Rvalue, hit_data);
+	}
+      else
+	{
+	  bfd_put_8 (input_bfd, (unsigned char) Rvalue, hit_data);
+	}
+      break;
 
-	     /* Check for range.  */
-	     if ((long) Rvalue > 0xffff || (long) Rvalue < 0x0)
-	      return bfd_reloc_overflow;
-	  }
-
-	bfd_put_16 (input_bfd, Rvalue, hit_data);
-	break;
-
-      case 2:
-	if ((r_type == R_CR16_ABS20) || (r_type == R_CR16_IMM20))
-	  {
-	     Rvalue1 = (bfd_get_16 (input_bfd, hit_data + 2)
-			| (((bfd_get_16 (input_bfd, hit_data) & 0xf) <<16)));
-
-	     /* Add or subtract the offset value.  */
-	     if (Rvalue1 & 0x80000)
-		Rvalue -= (~Rvalue1 + 1) & 0xfffff;
-	      else
-		Rvalue += Rvalue1;
+    case 2:
+      if (r_type == R_CR16_DISP16)
+	{
+	  Rvalue |= (bfd_get_16 (input_bfd, hit_data));
+	  Rvalue = ((Rvalue & 0xfffe) | ((Rvalue >> 16) & 0x1));
+	}
+      if (r_type == R_CR16_IMM16)
+	{
+	  Rvalue1 = bfd_get_16 (input_bfd, hit_data);
 
-	      /* Check for range.  */
-	      if ((long) Rvalue > 0xfffff || (long) Rvalue < 0x0)
-	       return bfd_reloc_overflow;
+	  Rvalue1 = (Rvalue1 ^ 0x8000) - 0x8000;
+	  Rvalue += Rvalue1;
 
-	    bfd_put_16 (input_bfd, ((bfd_get_16 (input_bfd, hit_data) & 0xfff0)
-			| ((Rvalue >> 16) & 0xf)), hit_data);
-	    bfd_put_16 (input_bfd, (Rvalue) & 0xffff, hit_data + 2);
-	  }
-	else if (r_type == R_CR16_GOT_REGREL20)
-	  {
-	    asection *sgot = elf_hash_table (info)->sgot;
-
-	    if (h != NULL)
-	      {
-		bfd_vma off;
-
-		off = h->got.offset;
-		BFD_ASSERT (off != (bfd_vma) -1);
-
-		if (! elf_hash_table (info)->dynamic_sections_created
-		     || SYMBOL_REFERENCES_LOCAL (info, h))
-		    /* This is actually a static link, or it is a
-		       -Bsymbolic link and the symbol is defined
-		       locally, or the symbol was forced to be local
-		       because of a version file.  We must initialize
-		       this entry in the global offset table.
-		       When doing a dynamic link, we create a .rela.got
-		       relocation entry to initialize the value.  This
-		       is done in the finish_dynamic_symbol routine.  */
-		  bfd_put_32 (output_bfd, Rvalue, sgot->contents + off);
+	  /* Check for range.  */
+	  if (Rvalue > 0xffff)
+	    return bfd_reloc_overflow;
+	}
 
-		  Rvalue = sgot->output_offset + off;
-		}
-	      else
-		{
-		   bfd_vma off;
+      bfd_put_16 (input_bfd, Rvalue, hit_data);
+      break;
 
-		   off = elf_local_got_offsets (input_bfd)[symndx];
-		   bfd_put_32 (output_bfd,Rvalue, sgot->contents + off);
+    case 4:
+      if ((r_type == R_CR16_ABS20) || (r_type == R_CR16_IMM20))
+	{
+	  Rvalue1 = (bfd_get_16 (input_bfd, hit_data + 2)
+		     | (((bfd_get_16 (input_bfd, hit_data) & 0xf) << 16)));
 
-		   Rvalue = sgot->output_offset + off;
-		}
+	  Rvalue1 = (Rvalue1 ^ 0x80000) - 0x80000;
+	  Rvalue += Rvalue1;
 
-	     Rvalue += addend;
+	  /* Check for range.  */
+	  if (Rvalue > 0xfffff)
+	    return bfd_reloc_overflow;
+
+	  bfd_put_16 (input_bfd, ((bfd_get_16 (input_bfd, hit_data) & 0xfff0)
+				  | ((Rvalue >> 16) & 0xf)), hit_data);
+	  bfd_put_16 (input_bfd, (Rvalue) & 0xffff, hit_data + 2);
+	}
+      else if (r_type == R_CR16_GOT_REGREL20)
+	{
+	  asection *sgot = elf_hash_table (info)->sgot;
+	  bfd_vma off;
 
-	     /* REVISIT: if ((long) Rvalue > 0xffffff ||
-				    (long) Rvalue < -0x800000).  */
-	     if ((long) Rvalue > 0xffffff || (long) Rvalue < 0)
-	       return bfd_reloc_overflow;
-
-
-	     bfd_put_16 (input_bfd, (bfd_get_16 (input_bfd, hit_data))
-			 | (((Rvalue >> 16) & 0xf) << 8), hit_data);
-	     bfd_put_16 (input_bfd, (Rvalue) & 0xffff, hit_data + 2);
-
-	  }
-	else if (r_type == R_CR16_GOTC_REGREL20)
-	  {
-	     asection *sgot = elf_hash_table (info)->sgot;
-
-	     if (h != NULL)
-	       {
-		 bfd_vma off;
-
-		 off = h->got.offset;
-		 BFD_ASSERT (off != (bfd_vma) -1);
-
-		  Rvalue >>=1; /* For code symbols.  */
-
-		 if (! elf_hash_table (info)->dynamic_sections_created
-		      || SYMBOL_REFERENCES_LOCAL (info, h))
-		 /* This is actually a static link, or it is a
-		    -Bsymbolic link and the symbol is defined
-		     locally, or the symbol was forced to be local
-		     because of a version file.  We must initialize
-		     this entry in the global offset table.
-		     When doing a dynamic link, we create a .rela.got
-		     relocation entry to initialize the value.  This
-		     is done in the finish_dynamic_symbol routine.  */
-		  bfd_put_32 (output_bfd, Rvalue, sgot->contents + off);
-
-		  Rvalue = sgot->output_offset + off;
-	       }
-	     else
-	       {
-		  bfd_vma off;
-
-		  off = elf_local_got_offsets (input_bfd)[symndx];
-		  Rvalue >>= 1;
-		  bfd_put_32 (output_bfd,Rvalue, sgot->contents + off);
-		  Rvalue = sgot->output_offset + off;
-	       }
-
-	     Rvalue += addend;
-
-	     /* Check if any value in DISP.  */
-	     Rvalue1 =((bfd_get_32 (input_bfd, hit_data) >>16)
-		       | (((bfd_get_32 (input_bfd, hit_data) & 0xfff) >> 8) <<16));
-
-	     /* Add or subtract the offset value.  */
-	     if (Rvalue1 & 0x80000)
-	       Rvalue -= (~Rvalue1 + 1) & 0xfffff;
-	     else
-	       Rvalue += Rvalue1;
+	  if (h != NULL)
+	    {
+	      off = h->got.offset;
+	      BFD_ASSERT (off != (bfd_vma) -1);
+
+	      if (! elf_hash_table (info)->dynamic_sections_created
+		  || SYMBOL_REFERENCES_LOCAL (info, h))
+		/* This is actually a static link, or it is a
+		   -Bsymbolic link and the symbol is defined
+		   locally, or the symbol was forced to be local
+		   because of a version file.  We must initialize
+		   this entry in the global offset table.
+		   When doing a dynamic link, we create a .rela.got
+		   relocation entry to initialize the value.  This
+		   is done in the finish_dynamic_symbol routine.  */
+		bfd_put_32 (output_bfd, Rvalue, sgot->contents + off);
+	    }
+	  else
+	    {
+	      off = elf_local_got_offsets (input_bfd)[symndx];
+	      bfd_put_32 (output_bfd, Rvalue, sgot->contents + off);
+	    }
+
+	  Rvalue = sgot->output_offset + off;
+	  Rvalue += addend;
+
+	  /* REVISIT: if ((long) Rvalue > 0xffffff ||
+	     (long) Rvalue < -0x800000).  */
+	  if (Rvalue > 0xffffff)
+	    return bfd_reloc_overflow;
+
+
+	  bfd_put_16 (input_bfd, (bfd_get_16 (input_bfd, hit_data))
+		      | (((Rvalue >> 16) & 0xf) << 8), hit_data);
+	  bfd_put_16 (input_bfd, (Rvalue) & 0xffff, hit_data + 2);
+
+	}
+      else if (r_type == R_CR16_GOTC_REGREL20)
+	{
+	  asection *sgot = elf_hash_table (info)->sgot;
+	  bfd_vma off;
+
+	  if (h != NULL)
+	    {
+	      off = h->got.offset;
+	      BFD_ASSERT (off != (bfd_vma) -1);
+
+	      Rvalue >>= 1; /* For code symbols.  */
+
+	      if (! elf_hash_table (info)->dynamic_sections_created
+		  || SYMBOL_REFERENCES_LOCAL (info, h))
+		/* This is actually a static link, or it is a
+		   -Bsymbolic link and the symbol is defined
+		   locally, or the symbol was forced to be local
+		   because of a version file.  We must initialize
+		   this entry in the global offset table.
+		   When doing a dynamic link, we create a .rela.got
+		   relocation entry to initialize the value.  This
+		   is done in the finish_dynamic_symbol routine.  */
+		bfd_put_32 (output_bfd, Rvalue, sgot->contents + off);
+	    }
+	  else
+	    {
+	      off = elf_local_got_offsets (input_bfd)[symndx];
+	      Rvalue >>= 1;
+	      bfd_put_32 (output_bfd, Rvalue, sgot->contents + off);
+	    }
+
+	  Rvalue = sgot->output_offset + off;
+	  Rvalue += addend;
+
+	  /* Check if any value in DISP.  */
+	  Rvalue1 = bfd_get_32 (input_bfd, hit_data);
+	  Rvalue1 = ((Rvalue1 >> 16) | ((Rvalue1 & 0xfff) >> 8 << 16));
+
+	  Rvalue1 = (Rvalue1 ^ 0x80000) - 0x80000;
+	  Rvalue += Rvalue1;
+
+	  /* Check for range.  */
+	  /* REVISIT: if ((long) Rvalue > 0xffffff
+	     || (long) Rvalue < -0x800000).  */
+	  if (Rvalue > 0xffffff)
+	    return bfd_reloc_overflow;
+
+	  bfd_put_16 (input_bfd, (bfd_get_16 (input_bfd, hit_data))
+		      | (((Rvalue >> 16) & 0xf) << 8), hit_data);
+	  bfd_put_16 (input_bfd, (Rvalue) & 0xffff, hit_data + 2);
+	}
+      else
+	{
+	  if (r_type == R_CR16_ABS24)
+	    {
+	      Rvalue1 = bfd_get_32 (input_bfd, hit_data);
+	      Rvalue1 = ((Rvalue1 >> 16)
+			 | ((Rvalue1 & 0xfff) >> 8 << 16)
+			 | ((Rvalue1 & 0xf) << 20));
+
+	      Rvalue1 = (Rvalue1 ^ 0x800000) - 0x800000;
+	      Rvalue += Rvalue1;
+
+	      /* Check for Range.  */
+	      if (Rvalue > 0xffffff)
+		return bfd_reloc_overflow;
+
+	      Rvalue = ((((Rvalue >> 20) & 0xf) | (((Rvalue >> 16) & 0xf)<<8)
+			 | (bfd_get_32 (input_bfd, hit_data) & 0xf0f0))
+			| ((Rvalue & 0xffff) << 16));
+	    }
+	  else if (r_type == R_CR16_DISP24)
+	    {
+	      Rvalue = ((((Rvalue >> 20)& 0xf) | (((Rvalue >>16) & 0xf)<<8)
+			 | (bfd_get_16 (input_bfd, hit_data)))
+			| (((Rvalue & 0xfffe) | ((Rvalue >> 24) & 0x1)) << 16));
+	    }
+	  else if ((r_type == R_CR16_IMM32) || (r_type == R_CR16_IMM32a))
+	    {
+	      Rvalue1 = bfd_get_32 (input_bfd, hit_data);
+	      Rvalue1 = (((Rvalue1 >> 16) & 0xffff)
+			 | ((Rvalue1 & 0xffff) << 16));
+
+	      Rvalue1 = (Rvalue1 ^ 0x80000000) - 0x80000000;
+	      Rvalue += Rvalue1;
 
 	      /* Check for range.  */
-	     /* REVISIT: if ((long) Rvalue > 0xffffff
-			     || (long) Rvalue < -0x800000).  */
-	     if ((long) Rvalue > 0xffffff || (long) Rvalue < 0)
-	       return bfd_reloc_overflow;
-
-	     bfd_put_16 (input_bfd, (bfd_get_16 (input_bfd, hit_data))
-			 | (((Rvalue >> 16) & 0xf) << 8), hit_data);
-	     bfd_put_16 (input_bfd, (Rvalue) & 0xffff, hit_data + 2);
-	  }
-	else
-	  {
-	     if (r_type == R_CR16_ABS24)
-	       {
-		  Rvalue1 = ((bfd_get_32 (input_bfd, hit_data) >> 16)
-			     | (((bfd_get_32 (input_bfd, hit_data) & 0xfff) >> 8) <<16)
-			     | (((bfd_get_32 (input_bfd, hit_data) & 0xf) <<20)));
-
-		  /* Add or subtract the offset value.  */
-		  if (Rvalue1 & 0x800000)
-		    Rvalue -= (~Rvalue1 + 1) & 0xffffff;
-		  else
-		    Rvalue += Rvalue1;
+	      if (Rvalue > 0xffffffff)
+		return bfd_reloc_overflow;
 
-		 /* Check for Range.  */
-		 if ((long) Rvalue > 0xffffff || (long) Rvalue < 0x0)
-		   return bfd_reloc_overflow;
-
-		 Rvalue = ((((Rvalue >> 20) & 0xf) | (((Rvalue >> 16) & 0xf)<<8)
-			   | (bfd_get_32 (input_bfd, hit_data) & 0xf0f0))
-			   | ((Rvalue & 0xffff) << 16));
-	       }
-	     else if (r_type == R_CR16_DISP24)
-	       {
-		  Rvalue = ((((Rvalue >> 20)& 0xf) | (((Rvalue >>16) & 0xf)<<8)
-			    | (bfd_get_16 (input_bfd, hit_data)))
-			    | (((Rvalue & 0xfffe) | ((Rvalue >> 24) & 0x1)) << 16));
-	       }
-	     else if ((r_type == R_CR16_IMM32) || (r_type == R_CR16_IMM32a))
-	       {
-		  Rvalue1 =((((bfd_get_32 (input_bfd, hit_data)) >> 16) &0xffff)
-			    | (((bfd_get_32 (input_bfd, hit_data)) &0xffff)) << 16);
-
-		 /* Add or subtract the offset value.  */
-		 if (Rvalue1 & 0x80000000)
-		   Rvalue -= (~Rvalue1 + 1) & 0xffffffff;
-		 else
-		   Rvalue += Rvalue1;
-
-		 /* Check for range.  */
-		 if (Rvalue > 0xffffffff || (long) Rvalue < 0x0)
-		   return bfd_reloc_overflow;
-
-		 Rvalue = (((Rvalue >> 16)& 0xffff) | (Rvalue & 0xffff) << 16);
-	       }
-	     else if (r_type == R_CR16_DISP24a)
-	       {
-		  Rvalue = (((Rvalue & 0xfffffe) | (Rvalue >> 23)));
-		  Rvalue = ((Rvalue >> 16) & 0xff) | ((Rvalue & 0xffff) << 16)
-			    | (bfd_get_32 (input_bfd, hit_data));
-	       }
-	     else if ((r_type == R_CR16_REGREL20)
-		      || (r_type == R_CR16_REGREL20a))
-	       {
-		  Rvalue1 = ((bfd_get_32 (input_bfd, hit_data) >> 16)
-			     | (((bfd_get_32 (input_bfd, hit_data) & 0xfff) >> 8) <<16));
-		  /* Add or subtract the offset value.  */
-		  if (Rvalue1 & 0x80000)
-		     Rvalue -= (~Rvalue1 + 1) & 0xfffff;
-		  else
-		     Rvalue += Rvalue1;
+	      Rvalue = (((Rvalue >> 16) & 0xffff) | (Rvalue & 0xffff) << 16);
+	    }
+	  else if (r_type == R_CR16_DISP24a)
+	    {
+	      Rvalue = (((Rvalue & 0xfffffe) | (Rvalue >> 23)));
+	      Rvalue = (((Rvalue >> 16) & 0xff) | ((Rvalue & 0xffff) << 16)
+			| bfd_get_32 (input_bfd, hit_data));
+	    }
+	  else if ((r_type == R_CR16_REGREL20)
+		   || (r_type == R_CR16_REGREL20a))
+	    {
+	      Rvalue1 = bfd_get_32 (input_bfd, hit_data);
+	      Rvalue1 = (((Rvalue1 >> 16) & 0xffff)
+			 | ((Rvalue1 & 0xfff) >> 8 << 16));
+
+	      Rvalue1 = (Rvalue1 ^ 0x80000) - 0x80000;
+	      Rvalue += Rvalue1;
 
-		  /* Check for range.  */
-		  if ((long) Rvalue > 0xfffff || (long) Rvalue < 0x0)
-		    return bfd_reloc_overflow;
-
-		  Rvalue = (((((Rvalue >> 20)& 0xf) | (((Rvalue >>16) & 0xf)<<8)
-			    | ((Rvalue & 0xffff) << 16)))
-			    | (bfd_get_32 (input_bfd, hit_data) & 0xf0ff));
-
-	      }
-	    else if (r_type == R_CR16_NUM32)
-	      {
-		 Rvalue1 = (bfd_get_32 (input_bfd, hit_data));
-
-		 /* Add or subtract the offset value */
-		 if (Rvalue1 & 0x80000000)
-		   Rvalue -= (~Rvalue1 + 1) & 0xffffffff;
-		 else
-		   Rvalue += Rvalue1;
-
-		/* Check for Ranga */
-		if (Rvalue > 0xffffffff)
-		  return bfd_reloc_overflow;
-	      }
-
-	    bfd_put_32 (input_bfd, Rvalue, hit_data);
-	  }
-	break;
+	      /* Check for range.  */
+	      if (Rvalue > 0xfffff)
+		return bfd_reloc_overflow;
+
+	      Rvalue = (((((Rvalue >> 20) & 0xf) | (((Rvalue >> 16) & 0xf) << 8)
+			  | ((Rvalue & 0xffff) << 16)))
+			| (bfd_get_32 (input_bfd, hit_data) & 0xf0ff));
 
-      default:
-	return bfd_reloc_notsupported;
+	    }
+	  else if (r_type == R_CR16_NUM32)
+	    {
+	      Rvalue1 = (bfd_get_32 (input_bfd, hit_data));
+
+	      Rvalue1 = (Rvalue1 ^ 0x80000000) - 0x80000000;
+	      Rvalue += Rvalue1;
+
+	      /* Check for Range.  */
+	      if (Rvalue > 0xffffffff)
+		return bfd_reloc_overflow;
+	    }
+
+	  bfd_put_32 (input_bfd, Rvalue, hit_data);
+	}
+      break;
+
+    default:
+      return bfd_reloc_notsupported;
     }
 
   return bfd_reloc_ok;
@@ -1239,7 +1203,7 @@ cr16_elf_final_link_relocate (reloc_howt
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 elf32_cr16_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
 			       asection *sec, bfd_vma addr, int count)
 {
@@ -1273,7 +1237,7 @@ elf32_cr16_relax_delete_bytes (struct bf
   for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
     /* Get the new reloc address.  */
     if ((irel->r_offset > addr && irel->r_offset < toaddr))
-	irel->r_offset -= count;
+      irel->r_offset -= count;
 
   /* Adjust the local symbols defined in this section.  */
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -1297,7 +1261,7 @@ elf32_cr16_relax_delete_bytes (struct bf
 	      if (ELF32_R_TYPE (irel->r_info) != (int) R_CR16_SWITCH8
 		  && ELF32_R_TYPE (irel->r_info) != (int) R_CR16_SWITCH16
 		  && ELF32_R_TYPE (irel->r_info) != (int) R_CR16_SWITCH32)
-		 continue;
+		continue;
 
 	      r_symndx = ELF32_R_SYM (irel->r_info);
 	      rsym = (Elf_Internal_Sym *) symtab_hdr->contents + r_symndx;
@@ -1323,7 +1287,7 @@ elf32_cr16_relax_delete_bytes (struct bf
 
   /* Now adjust the global symbols defined in this section.  */
   symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
-	       - symtab_hdr->sh_info);
+	      - symtab_hdr->sh_info);
   sym_hashes = start_hashes = elf_sym_hashes (abfd);
   end_hashes = sym_hashes + symcount;
 
@@ -1356,19 +1320,19 @@ elf32_cr16_relax_delete_bytes (struct bf
 	}
 
       if ((sym_hash->root.type == bfd_link_hash_defined
-	  || sym_hash->root.type == bfd_link_hash_defweak)
+	   || sym_hash->root.type == bfd_link_hash_defweak)
 	  && sym_hash->root.u.def.section == sec
 	  && sym_hash->root.u.def.value > addr
 	  && sym_hash->root.u.def.value < toaddr)
 	sym_hash->root.u.def.value -= count;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relocate a CR16 ELF section.  */
 
-static bfd_boolean
+static int
 elf32_cr16_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 			     bfd *input_bfd, asection *input_section,
 			     bfd_byte *contents, Elf_Internal_Rela *relocs,
@@ -1410,7 +1374,7 @@ elf32_cr16_relocate_section (bfd *output
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1420,7 +1384,8 @@ elf32_cr16_relocate_section (bfd *output
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_CR16_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1450,42 +1415,42 @@ elf32_cr16_relocate_section (bfd *output
 
 	  switch (r)
 	    {
-	     case bfd_reloc_overflow:
-	       (*info->callbacks->reloc_overflow)
-		 (info, (h ? &h->root : NULL), name, howto->name,
-		  (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
-	       break;
-
-	     case bfd_reloc_undefined:
-	       (*info->callbacks->undefined_symbol)
-		 (info, name, input_bfd, input_section, rel->r_offset, TRUE);
-	       break;
-
-	     case bfd_reloc_outofrange:
-	       msg = _("internal error: out of range error");
-	       goto common_error;
+	    case bfd_reloc_overflow:
+	      (*info->callbacks->reloc_overflow)
+		(info, (h ? &h->root : NULL), name, howto->name,
+		 (bfd_vma) 0, input_bfd, input_section, rel->r_offset);
+	      break;
 
-	     case bfd_reloc_notsupported:
-	       msg = _("internal error: unsupported relocation error");
-	       goto common_error;
+	    case bfd_reloc_undefined:
+	      (*info->callbacks->undefined_symbol)
+		(info, name, input_bfd, input_section, rel->r_offset, true);
+	      break;
 
-	     case bfd_reloc_dangerous:
-	       msg = _("internal error: dangerous error");
-	       goto common_error;
+	    case bfd_reloc_outofrange:
+	      msg = _("internal error: out of range error");
+	      goto common_error;
+
+	    case bfd_reloc_notsupported:
+	      msg = _("internal error: unsupported relocation error");
+	      goto common_error;
+
+	    case bfd_reloc_dangerous:
+	      msg = _("internal error: dangerous error");
+	      goto common_error;
 
-	     default:
-	       msg = _("internal error: unknown error");
-	       /* Fall through.  */
+	    default:
+	      msg = _("internal error: unknown error");
+	      /* Fall through.  */
 
-	     common_error:
-	       (*info->callbacks->warning) (info, msg, name, input_bfd,
-					    input_section, rel->r_offset);
-	       break;
+	    common_error:
+	      (*info->callbacks->warning) (info, msg, name, input_bfd,
+					   input_section, rel->r_offset);
+	      break;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This is a version of bfd_generic_get_relocated_section_contents
@@ -1496,7 +1461,7 @@ elf32_cr16_get_relocated_section_content
 					   struct bfd_link_info *link_info,
 					   struct bfd_link_order *link_order,
 					   bfd_byte *data,
-					   bfd_boolean relocatable,
+					   bool relocatable,
 					   asymbol **symbols)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -1517,6 +1482,13 @@ elf32_cr16_get_relocated_section_content
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 
+  bfd_byte *orig_data = data;
+  if (data == NULL)
+    {
+      data = bfd_malloc (input_section->size);
+      if (data == NULL)
+	return NULL;
+    }
   memcpy (data, elf_section_data (input_section)->this_hdr.contents,
 	  (size_t) input_section->size);
 
@@ -1529,7 +1501,7 @@ elf32_cr16_get_relocated_section_content
       bfd_size_type amt;
 
       internal_relocs = _bfd_elf_link_read_relocs (input_bfd, input_section,
-						   NULL, NULL, FALSE);
+						   NULL, NULL, false);
       if (internal_relocs == NULL)
 	goto error_return;
 
@@ -1568,14 +1540,12 @@ elf32_cr16_get_relocated_section_content
 	}
 
       if (! elf32_cr16_relocate_section (output_bfd, link_info, input_bfd,
-				     input_section, data, internal_relocs,
-				     isymbuf, sections))
+					 input_section, data, internal_relocs,
+					 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,14 +1554,13 @@ 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);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
@@ -1641,7 +1610,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)
@@ -1649,8 +1618,7 @@ elf32_cr16_link_hash_table_create (bfd *
 
   if (!_bfd_elf_link_hash_table_init (ret, abfd,
 				      elf32_cr16_link_hash_newfunc,
-				      sizeof (struct elf32_cr16_link_hash_entry),
-				      GENERIC_ELF_DATA))
+				      sizeof (struct elf32_cr16_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1664,8 +1632,8 @@ elf_cr16_mach (flagword flags)
 {
   switch (flags)
     {
-      case EM_CR16:
-      default:
+    case EM_CR16:
+    default:
       return bfd_mach_cr16;
     }
 }
@@ -1674,51 +1642,51 @@ elf_cr16_mach (flagword flags)
    file.  This gets the CR16 architecture right based on the machine
    number.  */
 
-static bfd_boolean
+static bool
 _bfd_cr16_elf_final_write_processing (bfd *abfd)
 {
   unsigned long val;
   switch (bfd_get_mach (abfd))
     {
-     default:
-     case bfd_mach_cr16:
-	val = EM_CR16;
-	break;
+    default:
+    case bfd_mach_cr16:
+      val = EM_CR16;
+      break;
     }
   elf_elfheader (abfd)->e_flags |= val;
   return _bfd_elf_final_write_processing (abfd);
 }
 
 
-static bfd_boolean
+static bool
 _bfd_cr16_elf_object_p (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_cr16,
 			     elf_cr16_mach (elf_elfheader (abfd)->e_flags));
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 _bfd_cr16_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
       && bfd_get_mach (obfd) < bfd_get_mach (ibfd))
     {
       if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
 			       bfd_get_mach (ibfd)))
-	 return FALSE;
-     }
+	return false;
+    }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1733,9 +1701,9 @@ _bfd_cr16_elf_merge_private_bfd_data (bf
 
    Symbol- and reloc-reading infrastructure copied from elf-m10200.c.  */
 
-static bfd_boolean
+static bool
 elf32_cr16_relax_section (bfd *abfd, asection *sec,
-			  struct bfd_link_info *link_info, bfd_boolean *again)
+			  struct bfd_link_info *link_info, bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -1744,16 +1712,17 @@ elf32_cr16_relax_section (bfd *abfd, ase
   Elf_Internal_Sym *isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -1870,11 +1839,13 @@ elf32_cr16_relax_section (bfd *abfd, ase
 	      unsigned int code;
 
 	      /* Get the opcode.  */
-	      code = (unsigned int) bfd_get_32 (abfd, contents + irel->r_offset);
+	      code = (unsigned int) bfd_get_32 (abfd,
+						contents + irel->r_offset);
 
 	      /* Verify it's a 'bcond' and fix the opcode.  */
 	      if ((code  & 0xffff) == 0x0010)
-		bfd_put_16 (abfd, 0x1800 | ((0xf & (code >> 20)) << 4), contents + irel->r_offset);
+		bfd_put_16 (abfd, 0x1800 | ((0xf & (code >> 20)) << 4),
+			    contents + irel->r_offset);
 	      else
 		continue;
 
@@ -1889,12 +1860,12 @@ elf32_cr16_relax_section (bfd *abfd, ase
 
 	      /* Delete two bytes of data.  */
 	      if (!elf32_cr16_relax_delete_bytes (link_info, abfd, sec,
-						   irel->r_offset + 2, 2))
+						  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.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -1918,7 +1889,7 @@ elf32_cr16_relax_section (bfd *abfd, ase
 	      unsigned short code;
 
 	      /* Get the opcode.  */
-	      code = (unsigned short) bfd_get_16 (abfd, contents + irel->r_offset);
+	      code = bfd_get_16 (abfd, contents + irel->r_offset);
 
 	      /* Verify it's a 'bcond' and fix the opcode.  */
 	      if ((code & 0xff0f) == 0x1800)
@@ -1937,12 +1908,12 @@ elf32_cr16_relax_section (bfd *abfd, ase
 
 	      /* Delete two bytes of data.  */
 	      if (!elf32_cr16_relax_delete_bytes (link_info, abfd, sec,
-						   irel->r_offset + 2, 2))
+						  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.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -1954,8 +1925,8 @@ elf32_cr16_relax_section (bfd *abfd, ase
 	  bfd_vma value1 = 0;
 
 	  /* Get the existing value from the mcode */
-	  value1 = ((bfd_get_32 (abfd, contents + irel->r_offset + 2) >> 16)
-		   |(((bfd_get_32 (abfd, contents + irel->r_offset + 2) & 0xffff) << 16)));
+	  value1 = bfd_get_32 (abfd, contents + irel->r_offset + 2);
+	  value1 = (value1 >> 16) | ((value1 & 0xffff) << 16);
 
 	  /* See if the value will fit in 20 bits.  */
 	  if ((long) (value + value1) < 0xfffff && (long) (value + value1) > 0)
@@ -1963,13 +1934,13 @@ elf32_cr16_relax_section (bfd *abfd, ase
 	      unsigned short code;
 
 	      /* Get the opcode.  */
-	      code = (unsigned short) bfd_get_16 (abfd, contents + irel->r_offset);
+	      code = bfd_get_16 (abfd, contents + irel->r_offset);
 
 	      /* Verify it's a 'arithmetic ADDD or MOVD instruction'.
 		 For ADDD and MOVD only, convert to IMM32 -> IMM20.  */
 
 	      if (((code & 0xfff0) == 0x0070) || ((code & 0xfff0) == 0x0020))
-		 is_add_mov = 1;
+		is_add_mov = 1;
 
 	      if (is_add_mov)
 		{
@@ -1991,9 +1962,16 @@ elf32_cr16_relax_section (bfd *abfd, ase
 		     place the 16-20bits (ie 4 bit) in new opcode,
 		     as the 0xffffxxxx, the higher 2 byte values removed. */
 		  if (value1 & 0x80000000)
-		    bfd_put_8 (abfd, (0x0f | (bfd_get_8(abfd, contents + irel->r_offset))), contents + irel->r_offset);
+		    bfd_put_8 (abfd,
+			       (0x0f | (bfd_get_8 (abfd,
+						   contents + irel->r_offset))),
+			       contents + irel->r_offset);
 		  else
-		    bfd_put_8 (abfd, (((value1 >> 16)&0xf) | (bfd_get_8(abfd, contents + irel->r_offset))), contents + irel->r_offset);
+		    bfd_put_8 (abfd,
+			       (((value1 >> 16) & 0xf)
+				| (bfd_get_8 (abfd,
+					      contents + irel->r_offset))),
+			       contents + irel->r_offset);
 
 		  /* Fix the relocation's type.  */
 		  irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
@@ -2006,7 +1984,7 @@ elf32_cr16_relax_section (bfd *abfd, ase
 
 		  /* That will change things, so, we should relax again.
 		     Note that this is not required, and it may be slow.  */
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2017,7 +1995,7 @@ elf32_cr16_relax_section (bfd *abfd, ase
 	      unsigned short code;
 
 	      /* Get the opcode.  */
-	      code = (unsigned short) bfd_get_16 (abfd, contents + irel->r_offset);
+	      code = bfd_get_16 (abfd, contents + irel->r_offset);
 
 	      /* Note that we've changed the relocs, section contents, etc.  */
 	      elf_section_data (sec)->relocs = internal_relocs;
@@ -2040,7 +2018,10 @@ elf32_cr16_relax_section (bfd *abfd, ase
 		 place the 12-16bits (ie 4 bit) in new opcode,
 		 as the 0xfffffxxx, the higher 2 byte values removed. */
 	      if (value1 & 0x80000000)
-		bfd_put_8 (abfd, (0x0f | (bfd_get_8(abfd, contents + irel->r_offset))), contents + irel->r_offset);
+		bfd_put_8 (abfd,
+			   (0x0f | (bfd_get_8 (abfd,
+					       contents + irel->r_offset))),
+			   contents + irel->r_offset);
 	      else
 		bfd_put_16 (abfd, value1, contents + irel->r_offset + 2);
 
@@ -2056,7 +2037,7 @@ elf32_cr16_relax_section (bfd *abfd, ase
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -2074,7 +2055,8 @@ elf32_cr16_relax_section (bfd *abfd, ase
 
 	  if (ELF32_R_TYPE (irel->r_info) == (int) R_CR16_IMM20)
 	    {
-	      value1 |= ((bfd_get_16 (abfd, contents + irel->r_offset + 1) & 0xf000) << 0x4);
+	      value1 |= ((bfd_get_16 (abfd, contents + irel->r_offset + 1)
+			  & 0xf000) << 0x4);
 	    }
 
 	  /* See if the value will fit in 4 bits.  */
@@ -2084,7 +2066,7 @@ elf32_cr16_relax_section (bfd *abfd, ase
 	      unsigned short code;
 
 	      /* Get the opcode.  */
-	      code = (unsigned short) bfd_get_16 (abfd, contents + irel->r_offset);
+	      code = bfd_get_16 (abfd, contents + irel->r_offset);
 
 	      /* Note that we've changed the relocs, section contents, etc.  */
 	      elf_section_data (sec)->relocs = internal_relocs;
@@ -2098,7 +2080,8 @@ elf32_cr16_relax_section (bfd *abfd, ase
 		    bfd_put_8 (abfd, 0x60, contents + irel->r_offset);
 		  else				      /* For addd imm20.  */
 		    bfd_put_8 (abfd, 0x54, contents + irel->r_offset);
-		  bfd_put_8 (abfd, (code & 0xf0) >> 4, contents + irel->r_offset + 1);
+		  bfd_put_8 (abfd, (code & 0xf0) >> 4,
+			     contents + irel->r_offset + 1);
 		}
 	      else
 		{
@@ -2147,7 +2130,7 @@ elf32_cr16_relax_section (bfd *abfd, ase
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 #endif
@@ -2159,8 +2142,8 @@ elf32_cr16_relax_section (bfd *abfd, ase
       if (! link_info->keep_memory)
 	free (isymbuf);
       else
-       /* Cache the symbols for elf_link_input_bfd.  */
-       symtab_hdr->contents = (unsigned char *) isymbuf;
+	/* Cache the symbols for elf_link_input_bfd.  */
+	symtab_hdr->contents = (unsigned char *) isymbuf;
     }
 
   if (contents != NULL
@@ -2169,29 +2152,25 @@ elf32_cr16_relax_section (bfd *abfd, ase
       if (! link_info->keep_memory)
 	free (contents);
       else
-       /* Cache the section contents for elf_link_input_bfd.  */
-       elf_section_data (sec)->this_hdr.contents = contents;
+	/* Cache the section contents for elf_link_input_bfd.  */
+	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;
+  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;
+  return false;
 }
 
 static asection *
@@ -2206,7 +2185,7 @@ elf32_cr16_gc_mark_hook (asection *sec,
 
 /* Create dynamic sections when linking against a dynamic object.  */
 
-static bfd_boolean
+static bool
 _bfd_cr16_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   flagword   flags;
@@ -2227,7 +2206,7 @@ _bfd_cr16_elf_create_dynamic_sections (b
 
     default:
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
@@ -2243,10 +2222,10 @@ _bfd_cr16_elf_create_dynamic_sections (b
   htab->srelplt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (! _bfd_cr16_elf_create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   if (bed->want_dynbss)
     {
@@ -2259,7 +2238,7 @@ _bfd_cr16_elf_create_dynamic_sections (b
       s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
 					      SEC_ALLOC | SEC_LINKER_CREATED);
       if (s == NULL)
-	return FALSE;
+	return false;
 
       /* The .rel[a].bss section holds copy relocs.  This section is not
 	 normally needed.  We need to create it here, though, so that the
@@ -2280,11 +2259,11 @@ _bfd_cr16_elf_create_dynamic_sections (b
 						  flags | SEC_READONLY);
 	  if (s == NULL
 	      || !bfd_set_section_alignment (s, ptralign))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -2293,7 +2272,7 @@ _bfd_cr16_elf_create_dynamic_sections (b
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 _bfd_cr16_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
 				     struct elf_link_hash_entry * h)
 {
@@ -2326,14 +2305,14 @@ _bfd_cr16_elf_adjust_dynamic_symbol (str
 	     a procedure linkage table, and we can just do a REL32
 	     reloc instead.  */
 	  BFD_ASSERT (h->needs_plt);
-	  return TRUE;
+	  return true;
 	}
 
       /* Make sure this symbol is output as a dynamic symbol.  */
       if (h->dynindx == -1)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       /* We also need to make an entry in the .got.plt section, which
@@ -2349,7 +2328,7 @@ _bfd_cr16_elf_adjust_dynamic_symbol (str
       BFD_ASSERT (s != NULL);
       s->size += sizeof (Elf32_External_Rela);
 
-      return TRUE;
+      return true;
     }
 
   /* If this is a weak symbol, and there is a real definition, the
@@ -2361,7 +2340,7 @@ _bfd_cr16_elf_adjust_dynamic_symbol (str
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2372,12 +2351,12 @@ _bfd_cr16_elf_adjust_dynamic_symbol (str
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_executable (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    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
@@ -2411,18 +2390,17 @@ _bfd_cr16_elf_adjust_dynamic_symbol (str
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-_bfd_cr16_elf_size_dynamic_sections (bfd * output_bfd,
-				     struct bfd_link_info * info)
+static bool
+_bfd_cr16_elf_late_size_sections (bfd * output_bfd,
+				  struct bfd_link_info * info)
 {
   bfd * dynobj;
   asection * s;
-  bfd_boolean plt;
-  bfd_boolean relocs;
-  bfd_boolean reltext;
+  bool relocs;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -2434,6 +2412,7 @@ _bfd_cr16_elf_size_dynamic_sections (bfd
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 #endif
 	}
     }
@@ -2452,9 +2431,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;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char * name;
@@ -2469,41 +2446,23 @@ _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"))
+      else if (startswith (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.  */
 	      s->reloc_count = 0;
 	    }
 	}
-      else if (! CONST_STRNEQ (name, ".got")
+      else if (! startswith (name, ".got")
 	       && strcmp (name, ".dynbss") != 0)
 	/* It's not one of our sections, so don't allocate space.  */
 	continue;
@@ -2523,8 +2482,8 @@ _bfd_cr16_elf_size_dynamic_sections (bfd
 	  continue;
 	}
 
-	if ((s->flags & SEC_HAS_CONTENTS) == 0)
-	  continue;
+      if ((s->flags & SEC_HAS_CONTENTS) == 0)
+	continue;
 
       /* Allocate memory for the section contents.  We use bfd_zalloc
 	 here in case unused entries are not reclaimed before the
@@ -2533,54 +2492,17 @@ _bfd_cr16_elf_size_dynamic_sections (bfd
 	 instead of garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
-  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
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 _bfd_cr16_elf_finish_dynamic_symbol (bfd * output_bfd,
 				     struct bfd_link_info * info,
 				     struct elf_link_hash_entry * h,
@@ -2654,7 +2576,7 @@ _bfd_cr16_elf_finish_dynamic_symbol (bfd
       bfd_elf32_swap_reloca_out (output_bfd, &rel,
 				 (bfd_byte *) ((Elf32_External_Rela *) s->contents
 					       + s->reloc_count));
-     ++ s->reloc_count;
+      ++ s->reloc_count;
     }
 
   /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute.  */
@@ -2662,12 +2584,12 @@ _bfd_cr16_elf_finish_dynamic_symbol (bfd
       || h == elf_hash_table (info)->hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 _bfd_cr16_elf_finish_dynamic_sections (bfd * output_bfd,
 				       struct bfd_link_info * info)
 {
@@ -2737,7 +2659,7 @@ _bfd_cr16_elf_finish_dynamic_sections (b
 
   elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
 
-  return TRUE;
+  return true;
 }
 
 /* Given a .data.rel section and a .emreloc in-memory section, store
@@ -2747,7 +2669,7 @@ _bfd_cr16_elf_finish_dynamic_sections (b
    after the add_symbols entry point has been called for all the
    objects, and before the final_link entry point is called.  */
 
-bfd_boolean
+bool
 bfd_cr16_elf32_create_embedded_relocs (bfd *abfd,
 				       struct bfd_link_info *info,
 				       asection *datasec,
@@ -2766,7 +2688,7 @@ bfd_cr16_elf32_create_embedded_relocs (b
   *errmsg = NULL;
 
   if (datasec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -2780,6 +2702,7 @@ bfd_cr16_elf32_create_embedded_relocs (b
   relsec->contents = (bfd_byte *) bfd_alloc (abfd, amt);
   if (relsec->contents == NULL)
     goto error_return;
+  relsec->alloced = 1;
 
   p = relsec->contents;
 
@@ -2789,14 +2712,14 @@ bfd_cr16_elf32_create_embedded_relocs (b
       asection *targetsec;
 
       /* We are going to write a four byte longword into the runtime
-       reloc section.  The longword will be the address in the data
-       section which must be relocated.  It is followed by the name
-       of the target section NUL-padded or truncated to 8
-       characters.  */
+	 reloc section.  The longword will be the address in the data
+	 section which must be relocated.  It is followed by the name
+	 of the target section NUL-padded or truncated to 8
+	 characters.  */
 
       /* We can only relocate absolute longword relocs at run time.  */
       if (!((ELF32_R_TYPE (irel->r_info) == (int) R_CR16_NUM32a)
-	  || (ELF32_R_TYPE (irel->r_info) == (int) R_CR16_NUM32)))
+	    || (ELF32_R_TYPE (irel->r_info) == (int) R_CR16_NUM32)))
 	{
 	  *errmsg = _("unsupported relocation type");
 	  bfd_set_error (bfd_error_bad_value);
@@ -2844,23 +2767,21 @@ bfd_cr16_elf32_create_embedded_relocs (b
       memset (p + 4, 0, 4);
       if ((ELF32_R_TYPE (irel->r_info) == (int) R_CR16_NUM32a)
 	  && (targetsec != NULL) )
-	 strncpy ((char *) p + 4, targetsec->output_section->name, 4);
+	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;
+  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;
+  return false;
 }
 
 
@@ -2886,6 +2807,7 @@ _bfd_cr16_elf_reloc_type_class (const st
 #define TARGET_LITTLE_SYM		  cr16_elf32_vec
 #define TARGET_LITTLE_NAME		  "elf32-cr16"
 #define ELF_ARCH			  bfd_arch_cr16
+#define ELF_TARGET_ID			  CR16_ELF_DATA
 #define ELF_MACHINE_CODE		  EM_CR16
 #define ELF_MACHINE_ALT1		  EM_CR16_OLD
 #define ELF_MAXPAGESIZE			  0x1
@@ -2919,8 +2841,8 @@ _bfd_cr16_elf_reloc_type_class (const st
 				  _bfd_cr16_elf_create_dynamic_sections
 #define elf_backend_adjust_dynamic_symbol \
 				  _bfd_cr16_elf_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections \
-				  _bfd_cr16_elf_size_dynamic_sections
+#define elf_backend_late_size_sections \
+				  _bfd_cr16_elf_late_size_sections
 #define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_all
 #define elf_backend_finish_dynamic_symbol \
 				   _bfd_cr16_elf_finish_dynamic_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.20200303/bfd/elf32-cr16.h ./bfd/elf32-cr16.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-cr16.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-cr16.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -17,6 +17,6 @@
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
 
-extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
+extern bool bfd_cr16_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    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.20200303/bfd/elf32-cris.c ./bfd/elf32-cris.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-cris.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-cris.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* CRIS-specific support for 32-bit ELF.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 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.
@@ -31,7 +31,7 @@
 bfd_reloc_status_type
 cris_elf_pcrel_reloc (bfd *, arelent *, asymbol *, void *,
 		      asection *, bfd *, char **);
-static bfd_boolean
+static bool
 cris_elf_set_mach_from_flags (bfd *, unsigned long);
 
 /* Forward declarations.  */
@@ -40,54 +40,54 @@ static reloc_howto_type cris_elf_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_CRIS_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_CRIS_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_CRIS_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_CRIS_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 /* We don't want overflow complaints for 64-bit vma builds
 	    for e.g. sym+0x40000000 (or actually sym-0xc0000000 in
@@ -97,85 +97,85 @@ static reloc_howto_type cris_elf_howto_t
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit PC-relative relocation.  */
   HOWTO (R_CRIS_8_PCREL,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 cris_elf_pcrel_reloc,	/* special_function */
 	 "R_CRIS_8_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit PC-relative relocation.  */
   HOWTO (R_CRIS_16_PCREL,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 cris_elf_pcrel_reloc,	/* special_function */
 	 "R_CRIS_16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 32 bit PC-relative relocation.  */
   HOWTO (R_CRIS_32_PCREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 cris_elf_pcrel_reloc,	/* special_function */
 	 "R_CRIS_32_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_CRIS_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_CRIS_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_CRIS_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_CRIS_GNU_VTENTRY",	 /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This is used only by the dynamic linker.  The symbol should exist
      both in the object being run and in some shared library.  The
@@ -184,172 +184,172 @@ static reloc_howto_type cris_elf_howto_t
      run has to have the data at some particular address.  */
   HOWTO (R_CRIS_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Like R_CRIS_32, but used when setting global offset table entries.  */
   HOWTO (R_CRIS_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Marks a procedure linkage table entry for a symbol.  */
   HOWTO (R_CRIS_JUMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_JUMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Used only by the dynamic linker.  When the object is run, this
      longword is set to the load address of the object, plus the
      addend.  */
   HOWTO (R_CRIS_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Like R_CRIS_32, but referring to the GOT table entry for the symbol.  */
   HOWTO (R_CRIS_16_GOT,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_16_GOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRIS_32_GOT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_32_GOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Like R_CRIS_32_GOT, but referring to (and requesting a) PLT part of
      the GOT table for the symbol.  */
   HOWTO (R_CRIS_16_GOTPLT,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_16_GOTPLT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRIS_32_GOTPLT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_32_GOTPLT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32-bit offset from GOT to (local const) symbol: no GOT entry should
      be necessary.  */
   HOWTO (R_CRIS_32_GOTREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_32_GOTREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32-bit offset from GOT to entry for this symbol in PLT and request
      to create PLT entry for symbol.  */
   HOWTO (R_CRIS_32_PLT_GOTREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRIS_32_PLT_GOTREL", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32-bit offset from PC (location after the relocation) + addend to
      entry for this symbol in PLT and request to create PLT entry for
      symbol.  */
   HOWTO (R_CRIS_32_PLT_PCREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 cris_elf_pcrel_reloc,	/* special_function */
 	 "R_CRIS_32_PLT_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* We don't handle these in any special manner and cross-format
      linking is not supported; just recognize them enough to pass them
@@ -357,11 +357,11 @@ static reloc_howto_type cris_elf_howto_t
      tests to actually refuse gracefully to handle these and PIC
      relocs for cross-format linking.  */
 #define TLSHOWTO32(name) \
- HOWTO (name, 0, 2, 32, FALSE, 0, complain_overflow_bitfield, \
-	bfd_elf_generic_reloc, #name, FALSE, 0, 0xffffffff, FALSE)
+ HOWTO (name, 0, 4, 32, false, 0, complain_overflow_bitfield, \
+	bfd_elf_generic_reloc, #name, false, 0, 0xffffffff, false)
 #define TLSHOWTO16X(name, X)	     \
- HOWTO (name, 0, 1, 16, FALSE, 0, complain_overflow_ ## X, \
-	bfd_elf_generic_reloc, #name, FALSE, 0, 0xffff, FALSE)
+ HOWTO (name, 0, 2, 16, false, 0, complain_overflow_ ## X, \
+	bfd_elf_generic_reloc, #name, false, 0, 0xffff, false)
 #define TLSHOWTO16(name) TLSHOWTO16X(name, unsigned)
 #define TLSHOWTO16S(name) TLSHOWTO16X(name, signed)
 
@@ -453,7 +453,7 @@ cris_reloc_name_lookup (bfd *abfd ATTRIB
 
 /* Set the howto pointer for an CRIS ELF reloc.  */
 
-static bfd_boolean
+static bool
 cris_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
 			 arelent * cache_ptr,
 			 Elf_Internal_Rela * dst)
@@ -467,10 +467,10 @@ cris_info_to_howto_rela (bfd * abfd ATTR
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & cris_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 bfd_reloc_status_type
@@ -492,7 +492,7 @@ cris_elf_pcrel_reloc (bfd *abfd ATTRIBUT
 
      Only adjust when doing a final link.  */
   if (output_bfd == (bfd *) NULL)
-    reloc_entry->addend -= 1 << reloc_entry->howto->size;
+    reloc_entry->addend -= bfd_get_reloc_size (reloc_entry->howto);
 
   return
     bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
@@ -504,7 +504,7 @@ cris_elf_pcrel_reloc (bfd *abfd ATTRIBUT
    some similarities with other ports, hoping to simplify general
    changes, while still keeping Linux/CRIS and Linux/CRISv32 code apart.  */
 
-static bfd_boolean
+static bool
 cris_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -514,7 +514,7 @@ cris_elf_grok_prstatus (bfd *abfd, Elf_I
     switch (note->descsz)
       {
       default:
-	return FALSE;
+	return false;
 
       case 202:		/* Linux/CRISv32 */
 	/* pr_cursig */
@@ -533,7 +533,7 @@ cris_elf_grok_prstatus (bfd *abfd, Elf_I
     switch (note->descsz)
       {
       default:
-	return FALSE;
+	return false;
 
       case 214:		/* Linux/CRIS */
 	/* pr_cursig */
@@ -554,14 +554,14 @@ cris_elf_grok_prstatus (bfd *abfd, Elf_I
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 cris_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (bfd_get_mach (abfd) == bfd_mach_cris_v32)
     switch (note->descsz)
       {
       default:
-	return FALSE;
+	return false;
 
       case 124:		/* Linux/CRISv32 elf_prpsinfo */
 	elf_tdata (abfd)->core->program
@@ -573,7 +573,7 @@ cris_elf_grok_psinfo (bfd *abfd, Elf_Int
     switch (note->descsz)
       {
       default:
-	return FALSE;
+	return false;
 
       case 124:		/* Linux/CRIS elf_prpsinfo */
 	elf_tdata (abfd)->core->program
@@ -594,7 +594,7 @@ cris_elf_grok_psinfo (bfd *abfd, Elf_Int
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 /* The name of the dynamic interpreter.  This is put in the .interp
@@ -787,10 +787,10 @@ struct elf_cris_link_hash_entry
   bfd_signed_vma dtp_refcount;
 };
 
-static bfd_boolean
+static bool
 elf_cris_discard_excess_dso_dynamics (struct elf_cris_link_hash_entry *,
 				      void * );
-static bfd_boolean
+static bool
 elf_cris_discard_excess_program_dynamics (struct elf_cris_link_hash_entry *,
 					  void *);
 
@@ -831,14 +831,15 @@ struct elf_cris_link_hash_table
 #define elf_cris_link_hash_traverse(table, func, info)			\
   (elf_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* 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)
@@ -897,8 +898,7 @@ elf_cris_link_hash_table_create (bfd *ab
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      elf_cris_link_hash_newfunc,
-				      sizeof (struct elf_cris_link_hash_entry),
-				      CRIS_ELF_DATA))
+				      sizeof (struct elf_cris_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -967,7 +967,7 @@ static int additional_relocation_error_m
 /* Relocate an CRIS ELF section.  See elf32-fr30.c, from where this was
    copied, for further comments.  */
 
-static bfd_boolean
+static int
 cris_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -991,7 +991,7 @@ cris_elf_relocate_section (bfd *output_b
 
   htab = elf_cris_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
   local_got_offsets = elf_local_got_offsets (input_bfd);
@@ -1021,7 +1021,7 @@ cris_elf_relocate_section (bfd *output_b
       bfd_reloc_status_type r;
       const char *symname = NULL;
       enum elf_cris_reloc_type r_type;
-      bfd_boolean resolved_to_zero;
+      bool resolved_to_zero;
 
       r_type = ELF32_R_TYPE (rel->r_info);
 
@@ -1048,8 +1048,8 @@ cris_elf_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
-	  bfd_boolean unresolved_reloc;
+	  bool warned, ignored;
+	  bool unresolved_reloc;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1122,14 +1122,15 @@ cris_elf_relocate_section (bfd *output_b
 		     cris_elf_howto_table[r_type].name,
 		     symname);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	    }
 	}
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_CRIS_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1196,7 +1197,7 @@ cris_elf_relocate_section (bfd *output_b
 		 do; this is probably an internal error.  But it is true
 		 that we didn't like that particular input.  */
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  /* Fall through.  */
 
@@ -1326,7 +1327,7 @@ cris_elf_relocate_section (bfd *output_b
 		     symname[0] != '\0' ? symname : _("[whose name is lost]"));
 
 		bfd_set_error (bfd_error_bad_value);
-		return FALSE;
+		return false;
 	      }
 	  }
 	  break;
@@ -1351,7 +1352,7 @@ cris_elf_relocate_section (bfd *output_b
 		 cris_elf_howto_table[r_type].name,
 		 symname);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  /* This can happen if we get a link error with the input ELF
@@ -1366,7 +1367,7 @@ cris_elf_relocate_section (bfd *output_b
 		 input_section,
 		 cris_elf_howto_table[r_type].name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  /* This relocation is like a PC-relative one, except the
@@ -1450,7 +1451,7 @@ cris_elf_relocate_section (bfd *output_b
 	    {
 	      Elf_Internal_Rela outrel;
 	      bfd_byte *loc;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
@@ -1459,25 +1460,25 @@ cris_elf_relocate_section (bfd *output_b
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_get_dynamic_reloc_section
-		    (dynobj, input_section, /*rela?*/ TRUE);
+		    (dynobj, input_section, /*rela?*/ true);
 		  /* The section should have been created in cris_elf_check_relocs,
 		     but that function will not be called for objects which fail in
 		     cris_elf_merge_private_bfd_data.  */
 		  if (sreloc == NULL)
 		    {
 		      bfd_set_error (bfd_error_bad_value);
-		      return FALSE;
+		      return false;
 		    }
 		}
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2
 		       /* For now, undefined weak symbols with non-default
 			  visibility (yielding 0), like exception info for
@@ -1488,7 +1489,7 @@ cris_elf_relocate_section (bfd *output_b
 		       || (h != NULL
 			   && h->root.type == bfd_link_hash_undefweak
 			   && ELF_ST_VISIBILITY (h->other) != STV_DEFAULT))
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -1510,7 +1511,7 @@ cris_elf_relocate_section (bfd *output_b
 
 		  if (r_type == R_CRIS_32)
 		    {
-		      relocate = TRUE;
+		      relocate = true;
 		      outrel.r_info = ELF32_R_INFO (0, R_CRIS_RELATIVE);
 		    }
 		  else
@@ -1522,7 +1523,7 @@ cris_elf_relocate_section (bfd *output_b
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -1590,7 +1591,7 @@ cris_elf_relocate_section (bfd *output_b
 		 symname != NULL && symname[0] != '\0'
 		 ? symname : _("[whose name is lost]"));
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  BFD_ASSERT ((input_section->flags & SEC_ALLOC) == 0
@@ -1651,7 +1652,7 @@ cris_elf_relocate_section (bfd *output_b
 
 	      /* We've already informed in cris_elf_check_relocs that
 		 this is an error.  */
-	      return FALSE;
+	      return false;
 	    }
 	  /* Fall through.  */
 
@@ -1674,7 +1675,7 @@ cris_elf_relocate_section (bfd *output_b
 		 symname[0] != '\0' ? symname : _("[whose name is lost]"));
 
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (!bfd_link_pic (info)
@@ -1803,7 +1804,7 @@ cris_elf_relocate_section (bfd *output_b
 
 	      /* We've already informed in cris_elf_check_relocs that
 		 this is an error.  */
-	      return FALSE;
+	      return false;
 	    }
 	  /* Fall through.  */
 
@@ -1826,7 +1827,7 @@ cris_elf_relocate_section (bfd *output_b
 		 (int64_t) rel->r_addend,
 		 symname[0] != '\0' ? symname : _("[whose name is lost]"));
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (!bfd_link_pic (info)
@@ -1940,7 +1941,7 @@ cris_elf_relocate_section (bfd *output_b
 
 	      /* We've already informed in cris_elf_check_relocs that
 		 this is an error.  */
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (h != NULL
@@ -1961,7 +1962,7 @@ cris_elf_relocate_section (bfd *output_b
 		 cris_elf_howto_table[r_type].name,
 		 symname);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  /* NULL if we had an error.  */
@@ -1975,7 +1976,7 @@ cris_elf_relocate_section (bfd *output_b
 
 	default:
 	  BFD_FAIL ();
-	  return FALSE;
+	  return false;
 	}
 
       r = cris_final_link_relocate (howto, input_bfd, input_section,
@@ -2026,7 +2027,7 @@ cris_elf_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, symname, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, symname, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -2052,13 +2053,13 @@ cris_elf_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf_cris_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
@@ -2081,8 +2082,6 @@ elf_cris_finish_dynamic_symbol (bfd *out
   const bfd_byte *plt_pic_entry = elf_cris_pic_plt_entry;
 
   htab = elf_cris_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   /* Adjust the various PLT entry offsets.  */
   if (bfd_get_mach (output_bfd) == bfd_mach_cris_v32)
@@ -2107,7 +2106,7 @@ elf_cris_finish_dynamic_symbol (bfd *out
 	= elf_cris_hash_entry (h)->gotplt_offset;
       Elf_Internal_Rela rela;
       bfd_byte *loc;
-      bfd_boolean has_gotplt = gotplt_offset != 0;
+      bool has_gotplt = gotplt_offset != 0;
 
       /* Get the index in the .rela.plt relocations for the .got.plt
 	 entry that corresponds to this symbol.
@@ -2302,14 +2301,14 @@ elf_cris_finish_dynamic_symbol (bfd *out
       || h == elf_hash_table (info)->hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  Do *not* emit relocs here, as their
    offsets were changed, as part of -z combreloc handling, from those we
    computed.  */
 
-static bfd_boolean
+static bool
 elf_cris_finish_dynamic_sections (bfd *output_bfd,
 				  struct bfd_link_info *info)
 {
@@ -2431,7 +2430,7 @@ elf_cris_finish_dynamic_sections (bfd *o
 
   elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -2526,10 +2525,10 @@ cris_elf_plt_sym_val (bfd_vma i ATTRIBUT
    entry but we found we will not create any.  Called when we find we will
    not have any PLT for this symbol, by for example
    elf_cris_adjust_dynamic_symbol when we're doing a proper dynamic link,
-   or elf_cris_size_dynamic_sections if no dynamic sections will be
+   or elf_cris_late_size_sections if no dynamic sections will be
    created (we're only linking static objects).  */
 
-static bfd_boolean
+static bool
 elf_cris_adjust_gotplt_to_got (struct elf_cris_link_hash_entry *h, void * p)
 {
   struct bfd_link_info *info = (struct bfd_link_info *) p;
@@ -2542,7 +2541,7 @@ elf_cris_adjust_gotplt_to_got (struct el
 
   /* If nobody wanted a GOTPLT with this symbol, we're done.  */
   if (h->gotplt_refcount <= 0)
-    return TRUE;
+    return true;
 
   if (h->reg_got_refcount > 0)
     {
@@ -2580,7 +2579,7 @@ elf_cris_adjust_gotplt_to_got (struct el
       srelgot->size += sizeof (Elf32_External_Rela);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Try to fold PLT entries with GOT entries.  There are two cases when we
@@ -2607,7 +2606,7 @@ elf_cris_adjust_gotplt_to_got (struct el
    version scripts.  The differing cases are handled by
    elf_cris_hide_symbol.  */
 
-static bfd_boolean
+static bool
 elf_cris_try_fold_plt_to_got (struct elf_cris_link_hash_entry *h, void * p)
 {
   struct bfd_link_info *info = (struct bfd_link_info *) p;
@@ -2616,7 +2615,7 @@ elf_cris_try_fold_plt_to_got (struct elf
      other reference so there's nothing to do.  Likewise if there are no
      PLT references; GOTPLT references included.  */
   if (h->root.got.refcount <= 0 || h->root.plt.refcount <= 0)
-    return TRUE;
+    return true;
 
   /* GOTPLT relocs are supposed to be included into the PLT refcount.  */
   BFD_ASSERT (h->gotplt_refcount <= h->root.plt.refcount);
@@ -2626,13 +2625,13 @@ elf_cris_try_fold_plt_to_got (struct elf
       /* The only PLT references are GOTPLT references, and there are GOT
 	 references.  Convert PLT to GOT references.  */
       if (! elf_cris_adjust_gotplt_to_got (h, info))
-	return FALSE;
+	return false;
 
       /* Clear the PLT references, so no PLT will be created.  */
       h->root.plt.offset = (bfd_vma) -1;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Our own version of hide_symbol, so that we can adjust a GOTPLT reloc
@@ -2642,7 +2641,7 @@ elf_cris_try_fold_plt_to_got (struct elf
 static void
 elf_cris_hide_symbol (struct bfd_link_info *info,
 		      struct elf_link_hash_entry *h,
-		      bfd_boolean force_local)
+		      bool force_local)
 {
   elf_cris_adjust_gotplt_to_got ((struct elf_cris_link_hash_entry *) h, info);
 
@@ -2655,7 +2654,7 @@ elf_cris_hide_symbol (struct bfd_link_in
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf_cris_adjust_dynamic_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h)
 {
@@ -2667,7 +2666,7 @@ elf_cris_adjust_dynamic_symbol (struct b
 
   htab = elf_cris_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
 
@@ -2720,21 +2719,21 @@ elf_cris_adjust_dynamic_symbol (struct b
       if (bfd_link_pic (info)
 	  && !elf_cris_try_fold_plt_to_got ((struct elf_cris_link_hash_entry*)
 					    h, info))
-	return FALSE;
+	return false;
 
       /* GC or folding may have rendered this entry unused.  */
       if (h->plt.refcount <= 0)
 	{
 	  h->needs_plt = 0;
 	  h->plt.offset = (bfd_vma) -1;
-	  return TRUE;
+	  return true;
 	}
 
       /* Make sure this symbol is output as a dynamic symbol.  */
       if (h->dynindx == -1)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->root.splt;
@@ -2781,7 +2780,7 @@ elf_cris_adjust_dynamic_symbol (struct b
 	  /* Make room for this entry.  */
 	  s->size += plt_entry_size;
 
-	  return TRUE;
+	  return true;
 	}
 
       /* No GOT reference for this symbol; prepare for an ordinary PLT.  */
@@ -2806,7 +2805,7 @@ elf_cris_adjust_dynamic_symbol (struct b
       BFD_ASSERT (s != NULL);
       s->size += sizeof (Elf32_External_Rela);
 
-      return TRUE;
+      return true;
     }
 
   /* Reinitialize the plt offset now that it is not used as a reference
@@ -2822,7 +2821,7 @@ elf_cris_adjust_dynamic_symbol (struct b
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2833,12 +2832,12 @@ elf_cris_adjust_dynamic_symbol (struct b
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    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
@@ -2942,7 +2941,7 @@ elf_cris_copy_indirect_symbol (struct bf
 
 /* Look through the relocs for a section during the first phase.  */
 
-static bfd_boolean
+static bool
 cris_elf_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
@@ -2960,11 +2959,11 @@ cris_elf_check_relocs (bfd *abfd,
   asection *sreloc;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = elf_cris_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -3050,7 +3049,7 @@ cris_elf_check_relocs (bfd *abfd,
 		    (_("%pB, section %pA: v10/v32 compatible object"
 		       " must not contain a PIC relocation"),
 		     abfd, sec);
-		  return FALSE;
+		  return false;
 		}
 	    }
 
@@ -3062,7 +3061,7 @@ cris_elf_check_relocs (bfd *abfd,
 		 can assume it's always present whenever there's a dynobj.
 		 It's ok to call this function more than once.  */
 	      if (!_bfd_elf_create_got_section (dynobj, info))
-		return FALSE;
+		return false;
 
 	      sgot = elf_hash_table (info)->sgot;
 	      srelgot = elf_hash_table (info)->srelgot;
@@ -3079,7 +3078,7 @@ cris_elf_check_relocs (bfd *abfd,
 	      amt *= sizeof (bfd_signed_vma);
 	      local_got_refcounts = ((bfd_signed_vma *) bfd_zalloc (abfd, amt));
 	      if (local_got_refcounts == NULL)
-		return FALSE;
+		return false;
 
 	      local_got_refcounts++;
 	      elf_local_got_refcounts (abfd) = local_got_refcounts;
@@ -3185,7 +3184,7 @@ cris_elf_check_relocs (bfd *abfd,
 		  if (h->dynindx == -1)
 		    {
 		      if (!bfd_elf_link_record_dynamic_symbol (info, h))
-			return FALSE;
+			return false;
 		    }
 		}
 
@@ -3358,7 +3357,7 @@ cris_elf_check_relocs (bfd *abfd,
 
 	  /* No need to do anything if we're not creating a shared object.  */
 	  if (! bfd_link_pic (info)
-	      || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
+	      || (h != NULL && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)))
 	    break;
 
 	  /* We may need to create a reloc section in the dynobj and made room
@@ -3366,10 +3365,10 @@ cris_elf_check_relocs (bfd *abfd,
 	  if (sreloc == NULL)
 	    {
 	      sreloc = _bfd_elf_make_dynamic_reloc_section
-		(sec, dynobj, 2, abfd, /*rela?*/ TRUE);
+		(sec, dynobj, 2, abfd, /*rela?*/ true);
 
 	      if (sreloc == NULL)
-		return FALSE;
+		return false;
 	    }
 
 	  if (sec->flags & SEC_READONLY)
@@ -3435,10 +3434,10 @@ cris_elf_check_relocs (bfd *abfd,
 	  if (sreloc == NULL)
 	    {
 	      sreloc = _bfd_elf_make_dynamic_reloc_section
-		(sec, dynobj, 2, abfd, /*rela?*/ TRUE);
+		(sec, dynobj, 2, abfd, /*rela?*/ true);
 
 	      if (sreloc == NULL)
-		return FALSE;
+		return false;
 	    }
 
 	  sreloc->size += sizeof (Elf32_External_Rela);
@@ -3463,7 +3462,7 @@ cris_elf_check_relocs (bfd *abfd,
 		p = ((struct elf_cris_pcrel_relocs_copied *)
 		     bfd_alloc (dynobj, (bfd_size_type) sizeof *p));
 		if (p == NULL)
-		  return FALSE;
+		  return false;
 		p->next = eh->pcrel_relocs_copied;
 		eh->pcrel_relocs_copied = p;
 		p->section = sec;
@@ -3479,14 +3478,14 @@ cris_elf_check_relocs (bfd *abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_CRIS_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_CRIS_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_CRIS_16_TPREL:
@@ -3497,31 +3496,31 @@ cris_elf_check_relocs (bfd *abfd,
 	default:
 	  /* Other relocs do not appear here.  */
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf_cris_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				struct bfd_link_info *info)
+static bool
+elf_cris_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			     struct bfd_link_info *info)
 {
   struct elf_cris_link_hash_table * htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean plt;
-  bfd_boolean relocs;
+  bool relocs;
 
   htab = elf_cris_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (htab->root.dynamic_sections_created)
     {
@@ -3532,6 +3531,7 @@ elf_cris_size_dynamic_sections (bfd *out
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
   else
@@ -3569,8 +3569,7 @@ 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;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -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)
 	{
@@ -3595,7 +3593,7 @@ elf_cris_size_dynamic_sections (bfd *out
 	  s->size += htab->dtpmod_refcount != 0
 	    ? 8 : 0;
 	}
-      else if (CONST_STRNEQ (name, ".rela"))
+      else if (startswith (name, ".rela"))
 	{
 	  if (strcmp (name, ".rela.got") == 0
 	      && htab->dtpmod_refcount != 0
@@ -3607,14 +3605,14 @@ elf_cris_size_dynamic_sections (bfd *out
 	      /* Remember whether there are any reloc sections other
 		 than .rela.plt.  */
 	      if (strcmp (name, ".rela.plt") != 0)
-		  relocs = TRUE;
+		  relocs = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
 	      s->reloc_count = 0;
 	    }
 	}
-      else if (! CONST_STRNEQ (name, ".got")
+      else if (! startswith (name, ".got")
 	       && strcmp (name, ".dynbss") != 0
 	       && s != htab->root.sdynrelro)
 	{
@@ -3647,52 +3645,11 @@ elf_cris_size_dynamic_sections (bfd *out
 	 this will make entries have the type R_CRIS_NONE.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	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;
-	}
+	return false;
+      s->alloced = 1;
     }
-#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
@@ -3704,7 +3661,7 @@ elf_cris_size_dynamic_sections (bfd *out
    check_relocs routine, but we won't fill them in in the
    relocate_section routine.  */
 
-static bfd_boolean
+static bool
 elf_cris_discard_excess_dso_dynamics (struct elf_cris_link_hash_entry *h,
 				      void * inf)
 {
@@ -3724,10 +3681,10 @@ elf_cris_discard_excess_dso_dynamics (st
 	    = _bfd_elf_get_dynamic_reloc_section (elf_hash_table (info)
 						  ->dynobj,
 						  s->section,
-						  /*rela?*/ TRUE);
+						  /*rela?*/ true);
 	  sreloc->size -= s->count * sizeof (Elf32_External_Rela);
 	}
-      return TRUE;
+      return true;
     }
 
   /* If we have accounted for PC-relative relocs for read-only
@@ -3753,14 +3710,14 @@ elf_cris_discard_excess_dso_dynamics (st
 	info->flags |= DF_TEXTREL;
       }
 
-  return TRUE;
+  return true;
 }
 
 /* This function is called via elf_cris_link_hash_traverse if we are *not*
    creating a shared object.  We discard space for relocs for symbols put
    in the .got, but which we found we do not have to resolve at run-time.  */
 
-static bfd_boolean
+static bool
 elf_cris_discard_excess_program_dynamics (struct elf_cris_link_hash_entry *h,
 					  void * inf)
 {
@@ -3808,17 +3765,17 @@ elf_cris_discard_excess_program_dynamics
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Reject a file depending on presence and expectation of prefixed
    underscores on symbols.  */
 
-static bfd_boolean
+static bool
 cris_elf_object_p (bfd *abfd)
 {
   if (! cris_elf_set_mach_from_flags (abfd, elf_elfheader (abfd)->e_flags))
-    return FALSE;
+    return false;
 
   if ((elf_elfheader (abfd)->e_flags & EF_CRIS_UNDERSCORE))
     return (bfd_get_symbol_leading_char (abfd) == '_');
@@ -3829,7 +3786,7 @@ cris_elf_object_p (bfd *abfd)
 /* Mark presence or absence of leading underscore.  Set machine type
    flags from mach type.  */
 
-static bfd_boolean
+static bool
 cris_elf_final_write_processing (bfd *abfd)
 {
   unsigned long e_flags = elf_elfheader (abfd)->e_flags;
@@ -3863,7 +3820,7 @@ cris_elf_final_write_processing (bfd *ab
 
 /* Set the mach type from e_flags value.  */
 
-static bfd_boolean
+static bool
 cris_elf_set_mach_from_flags (bfd *abfd,
 			      unsigned long flags)
 {
@@ -3886,15 +3843,15 @@ cris_elf_set_mach_from_flags (bfd *abfd,
 	 with this code; we'd have to require that all future handling
 	 would be optional.  */
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Display the flags field.  */
 
-static bfd_boolean
+static bool
 cris_elf_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -3915,30 +3872,30 @@ cris_elf_print_private_bfd_data (bfd *ab
     fprintf (file, _(" [v32]"));
 
   fputc ('\n', file);
-  return TRUE;
+  return true;
 }
 
 /* Don't mix files with and without a leading underscore.  */
 
-static bfd_boolean
+static bool
 cris_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   int imach, omach;
 
   if (! _bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   imach = bfd_get_mach (ibfd);
 
   if (! elf_flags_init (obfd))
     {
       /* This happens when ld starts out with a 'blank' output file.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
 
       /* We ignore the linker-set mach, and instead set it according to
 	 the first input file.  This would also happen if we could
@@ -3948,7 +3905,7 @@ cris_elf_merge_private_bfd_data (bfd *ib
 	 the output type, which might be a sane thing to do for a
 	 v10+v32 compatibility object.  */
       if (! bfd_set_arch_mach (obfd, bfd_arch_cris, imach))
-	return FALSE;
+	return false;
     }
 
   if (bfd_get_symbol_leading_char (ibfd)
@@ -3960,7 +3917,7 @@ cris_elf_merge_private_bfd_data (bfd *ib
 	 : _("%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"),
 	 ibfd);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   omach = bfd_get_mach (obfd);
@@ -3982,7 +3939,7 @@ cris_elf_merge_private_bfd_data (bfd *ib
 		 " with previous objects"),
 	     ibfd);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       /* We don't have to check the case where the input is compatible
@@ -3990,24 +3947,24 @@ cris_elf_merge_private_bfd_data (bfd *ib
 	 to the other (compatible) mach.  */
       if (omach == bfd_mach_cris_v10_v32
 	  && ! bfd_set_arch_mach (obfd, bfd_arch_cris, imach))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Do side-effects of e_flags copying to obfd.  */
 
-static bfd_boolean
+static bool
 cris_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   /* Call the base function.  */
   if (!_bfd_elf_copy_private_bfd_data (ibfd, obfd))
-    return FALSE;
+    return false;
 
   /* Do what we really came here for.  */
   return bfd_set_arch_mach (obfd, bfd_arch_cris, bfd_get_mach (ibfd));
@@ -4134,8 +4091,8 @@ elf_cris_got_elt_size (bfd *abfd ATTRIBU
 	elf_cris_adjust_dynamic_symbol
 #define elf_backend_copy_indirect_symbol \
 	elf_cris_copy_indirect_symbol
-#define elf_backend_size_dynamic_sections \
-	elf_cris_size_dynamic_sections
+#define elf_backend_late_size_sections \
+	elf_cris_late_size_sections
 #define elf_backend_init_index_section		_bfd_elf_init_1_index_section
 #define elf_backend_finish_dynamic_symbol \
 	elf_cris_finish_dynamic_symbol
@@ -4156,6 +4113,8 @@ elf_cris_got_elt_size (bfd *abfd ATTRIBU
 #define elf_backend_dtrel_excludes_plt	1
 #define elf_backend_want_dynrelro	1
 
+#define elf_backend_default_execstack	0
+
 /* Later, we my want to optimize RELA entries into REL entries for dynamic
    linking and libraries (if it's a win of any significance).  Until then,
    take the easy route.  */
@@ -4163,7 +4122,7 @@ elf_cris_got_elt_size (bfd *abfd ATTRIBU
 #define elf_backend_may_use_rela_p 1
 #define elf_backend_rela_normal		1
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #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.20200303/bfd/elf32-crx.c ./bfd/elf32-crx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-crx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-crx.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Tomer Levi, NSC, Israel.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -28,22 +28,22 @@
 
 static reloc_howto_type *elf_crx_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean elf_crx_info_to_howto
+static bool elf_crx_info_to_howto
   (bfd *, arelent *, Elf_Internal_Rela *);
-static bfd_boolean elf32_crx_relax_delete_bytes
+static bool elf32_crx_relax_delete_bytes
   (struct bfd_link_info *, bfd *, asection *, bfd_vma, int);
 static bfd_reloc_status_type crx_elf_final_link_relocate
   (reloc_howto_type *, bfd *, bfd *, asection *,
    bfd_byte *, bfd_vma, bfd_vma, bfd_vma,
    struct bfd_link_info *, asection *, int);
-static bfd_boolean elf32_crx_relocate_section
+static int elf32_crx_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    Elf_Internal_Rela *, Elf_Internal_Sym *, asection **);
-static bfd_boolean elf32_crx_relax_section
-  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
+static bool elf32_crx_relax_section
+  (bfd *, asection *, struct bfd_link_info *, bool *);
 static bfd_byte * elf32_crx_get_relocated_section_contents
   (bfd *, struct bfd_link_info *, struct bfd_link_order *,
-   bfd_byte *, bfd_boolean, asymbol **);
+   bfd_byte *, bool, asymbol **);
 
 /* crx_reloc_map array maps BFD relocation enum into a CRGAS relocation type.  */
 
@@ -82,306 +82,306 @@ static reloc_howto_type crx_elf_howto_ta
 {
   HOWTO (R_CRX_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REL4,		/* type */
 	 1,			/* rightshift */
-	 0,			/* size */
+	 1,			/* size */
 	 4,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REL4",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xf,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REL8,		/* type */
 	 1,			/* rightshift */
-	 0,			/* size */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REL8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REL8_CMP,	/* type */
 	 1,			/* rightshift */
-	 0,			/* size */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REL8_CMP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REL16,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REL16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REL24,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REL24",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REL32,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REL32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REGREL12,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size */
+	 2,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REGREL12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REGREL22,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size */
+	 4,			/* size */
 	 22,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REGREL22",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x3fffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REGREL28,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size */
+	 4,			/* size */
 	 28,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REGREL28",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xfffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_REGREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_REGREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_ABS16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_ABS16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_ABS32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_ABS32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_NUM8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_NUM8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_NUM16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_NUM16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_NUM32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_NUM32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_IMM16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_IMM16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_CRX_IMM32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_IMM32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit switch table entry.  This is generated for an expression
      such as ``.byte L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_CRX_SWITCH8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_SWITCH8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit switch table entry.  This is generated for an expression
      such as ``.word L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_CRX_SWITCH16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_SWITCH16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 32 bit switch table entry.  This is generated for an expression
      such as ``.long L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_CRX_SWITCH32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_CRX_SWITCH32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE)			/* pcrel_offset */
+	 true)			/* pcrel_offset */
 };
 
 /* Retrieve a howto ptr using a BFD reloc_code.  */
@@ -418,7 +418,7 @@ elf_crx_reloc_name_lookup (bfd *abfd ATT
 
 /* Retrieve a howto ptr using an internal relocation entry.  */
 
-static bfd_boolean
+static bool
 elf_crx_info_to_howto (bfd *abfd, arelent *cache_ptr,
 		       Elf_Internal_Rela *dst)
 {
@@ -429,10 +429,10 @@ elf_crx_info_to_howto (bfd *abfd, arelen
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &crx_elf_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* Perform a relocation as part of a final link.  */
@@ -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,14 +525,14 @@ 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;
 
-  switch (howto->size)
+  switch (bfd_get_reloc_size (howto))
     {
-     case 0:
+     case 1:
        if (r_type == R_CRX_REL4)
 	 {
 	   Rvalue <<= 4;
@@ -549,14 +542,14 @@ crx_elf_final_link_relocate (reloc_howto
        bfd_put_8 (input_bfd, (unsigned char) Rvalue, hit_data);
        break;
 
-     case 1:
+     case 2:
        if (r_type == R_CRX_REGREL12)
 	 Rvalue |= (bfd_get_16 (input_bfd, hit_data) & 0xf000);
 
        bfd_put_16 (input_bfd, Rvalue, hit_data);
        break;
 
-     case 2:
+     case 4:
        if (r_type == R_CRX_REL24
 	   || r_type == R_CRX_REGREL22
 	   || r_type == R_CRX_REGREL28)
@@ -591,7 +584,7 @@ crx_elf_final_link_relocate (reloc_howto
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 elf32_crx_relax_delete_bytes (struct bfd_link_info *link_info, bfd *abfd,
 			      asection *sec, bfd_vma addr, int count)
 {
@@ -717,7 +710,7 @@ elf32_crx_relax_delete_bytes (struct bfd
 	sym_hash->root.u.def.value -= count;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This is a version of bfd_generic_get_relocated_section_contents
@@ -728,7 +721,7 @@ elf32_crx_get_relocated_section_contents
 					  struct bfd_link_info *link_info,
 					  struct bfd_link_order *link_order,
 					  bfd_byte *data,
-					  bfd_boolean relocatable,
+					  bool relocatable,
 					  asymbol **symbols)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -749,6 +742,13 @@ elf32_crx_get_relocated_section_contents
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 
+  bfd_byte *orig_data = data;
+  if (data == NULL)
+    {
+      data = bfd_malloc (input_section->size);
+      if (data == NULL)
+	return NULL;
+    }
   memcpy (data, elf_section_data (input_section)->this_hdr.contents,
 	  (size_t) input_section->size);
 
@@ -762,7 +762,7 @@ elf32_crx_get_relocated_section_contents
 
       internal_relocs = (_bfd_elf_link_read_relocs
 			 (input_bfd, input_section, NULL,
-			  (Elf_Internal_Rela *) NULL, FALSE));
+			  (Elf_Internal_Rela *) NULL, false));
       if (internal_relocs == NULL)
 	goto error_return;
 
@@ -805,10 +805,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,20 +815,19 @@ 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);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
 /* Relocate a CRX ELF section.  */
 
-static bfd_boolean
+static int
 elf32_crx_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 			    bfd *input_bfd, asection *input_section,
 			    bfd_byte *contents, Elf_Internal_Rela *relocs,
@@ -872,7 +869,7 @@ elf32_crx_relocate_section (bfd *output_
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -882,7 +879,8 @@ elf32_crx_relocate_section (bfd *output_
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_CRX_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -918,7 +916,7 @@ elf32_crx_relocate_section (bfd *output_
 
 	     case bfd_reloc_undefined:
 	       (*info->callbacks->undefined_symbol)
-		 (info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		 (info, name, input_bfd, input_section, rel->r_offset, true);
 	       break;
 
 	     case bfd_reloc_outofrange:
@@ -945,7 +943,7 @@ elf32_crx_relocate_section (bfd *output_
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function handles relaxing for the CRX.
@@ -959,9 +957,9 @@ elf32_crx_relocate_section (bfd *output_
 
    Symbol- and reloc-reading infrastructure copied from elf-m10200.c.  */
 
-static bfd_boolean
+static bool
 elf32_crx_relax_section (bfd *abfd, asection *sec,
-			 struct bfd_link_info *link_info, bfd_boolean *again)
+			 struct bfd_link_info *link_info, bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -970,16 +968,17 @@ elf32_crx_relax_section (bfd *abfd, asec
   Elf_Internal_Sym *isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -1122,7 +1121,7 @@ elf32_crx_relax_section (bfd *abfd, asec
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -1167,7 +1166,7 @@ elf32_crx_relax_section (bfd *abfd, asec
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -1219,7 +1218,7 @@ elf32_crx_relax_section (bfd *abfd, asec
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -1260,7 +1259,7 @@ elf32_crx_relax_section (bfd *abfd, asec
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
     }
@@ -1289,24 +1288,20 @@ 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;
+  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;
+  return false;
 }
 
 /* Definitions for setting CRX target vector.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-csky.c ./bfd/elf32-csky.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-csky.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-csky.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for C-SKY.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
    Contributed by C-SKY Microsystems and Mentor Graphics.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -40,7 +40,7 @@ enum merge_class
   CSKY_V2
 };
 
-typedef struct csky_arch_for_merge
+typedef const struct csky_arch_for_merge
 {
   const char *name;
   const unsigned long arch_eflag;
@@ -53,17 +53,18 @@ typedef struct csky_arch_for_merge
   unsigned int do_warning;
 } csky_arch_for_merge;
 
-static struct csky_arch_for_merge csky_archs[] =
+static 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}
 };
 
@@ -85,60 +86,60 @@ static reloc_howto_type csky_elf_howto_t
 	 0,                           /* rightshift */
 	 0,                           /* size */
 	 0,                           /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_NONE",             /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0,                           /* src_mask */
 	 0,                           /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 1.  */
   HOWTO (R_CKCORE_ADDR32,             /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_ADDR32",           /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0,                           /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 2: Only for csky v1.  */
   HOWTO (R_CKCORE_PCREL_IMM8BY4,      /* type */
 	 2,                           /* rightshift */
-	 1,                           /* size */
+	 2,                           /* size */
 	 8,                           /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_bitfield,  /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_PCREL_IMM8BY4",    /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0xff,                        /* src_mask */
 	 0xff,                        /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 3: Only for csky v1.  */
   HOWTO (R_CKCORE_PCREL_IMM11BY2,     /* type */
 	 1,                           /* rightshift */
-	 1,                           /* size */
+	 2,                           /* size */
 	 11,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_signed,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL_IMM11BY2",   /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x7ff,                       /* src_mask */
 	 0x7ff,                       /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 4: DELETED.  */
   HOWTO (R_CKCORE_PCREL_IMM4BY2,0,0,0,0,0,0,0,"R_CKCORE_PCREL_IMM4BY2",0,0,0,0),
@@ -146,93 +147,93 @@ static reloc_howto_type csky_elf_howto_t
   /* 5.  */
   HOWTO (R_CKCORE_PCREL32,            /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL32",          /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 6: Only for csky v1.  */
   HOWTO (R_CKCORE_PCREL_JSR_IMM11BY2, /* type */
 	 1,                           /* rightshift */
-	 1,                           /* size */
+	 2,                           /* size */
 	 11,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_signed,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL_JSR_IMM11BY2", /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x7ff,                       /* src_mask */
 	 0x7ff,                       /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 7: GNU extension to record C++ vtable member usage.  */
   HOWTO (R_CKCORE_GNU_VTENTRY,        /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 0,                           /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_CKCORE_GNU_VTENTRY",      /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x0,                         /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 8: GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_CKCORE_GNU_VTINHERIT,      /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 0,                           /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_GNU_VTINHERIT",    /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x0,                         /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 9.  */
   HOWTO (R_CKCORE_RELATIVE,           /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_signed,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_RELATIVE",         /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 10: None.  */
   /* FIXME:  It is a bug that copy relocations are not implemented.  */
   HOWTO (R_CKCORE_COPY,               /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_bitfield,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_COPY",             /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0xffffffff,                  /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 11: None.  */
   HOWTO (R_CKCORE_GLOB_DAT,0,0,0,0,0,0,0,"R_CKCORE_GLOB_DAT",0,0,0,0),
@@ -243,62 +244,62 @@ static reloc_howto_type csky_elf_howto_t
   /* 13.  */
   HOWTO (R_CKCORE_GOTOFF,             /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOTOFF",           /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffffl,                 /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 14.  */
   HOWTO (R_CKCORE_GOTPC,              /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOTPC",            /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 15.  */
   HOWTO (R_CKCORE_GOT32,              /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOT32",            /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 16.  */
   HOWTO (R_CKCORE_PLT32,              /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PLT32",            /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 17: None.  */
   HOWTO (R_CKCORE_ADDRGOT,0,0,0,0,0,0,0,"R_CKCORE_ADDRGOT",0,0,0,0),
@@ -309,257 +310,257 @@ static reloc_howto_type csky_elf_howto_t
   /* 19: Only for csky v2.  */
   HOWTO (R_CKCORE_PCREL_IMM26BY2,     /* type */
 	 1,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 26,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_signed,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL_IMM26BY2",   /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x3ffffff,                   /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 20: Only for csky v2.  */
   HOWTO (R_CKCORE_PCREL_IMM16BY2,     /* type */
-	 1,                           /* rightshift */
-	 2,                           /* size */
-	 16,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
-	 0,                           /* bitpos */
-	 complain_overflow_signed,    /* complain_on_overflow */
-	 NULL,                        /* special_function */
-	 "R_CKCORE_PCREL_IMM16BY2",   /* name */
-	 FALSE,                       /* partial_inplace */
-	 0x0,                         /* src_mask */
-	 0xffff,                      /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+         1,                           /* rightshift */
+         4,                           /* size */
+         16,                          /* bitsize */
+         true,                        /* pc_relative */
+         0,                           /* bitpos */
+         complain_overflow_signed,    /* complain_on_overflow */
+         bfd_elf_generic_reloc,       /* special_function */
+         "R_CKCORE_PCREL_IMM16BY2",   /* name */
+         false,                       /* partial_inplace */
+         0x0,                         /* src_mask */
+         0xffff,                      /* dst_mask */
+         true),                       /* pcrel_offset */
 
   /* 21: Only for csky v2.  */
   HOWTO (R_CKCORE_PCREL_IMM16BY4,     /* type */
-	 2,                           /* rightshift */
-	 2,                           /* size */
-	 16,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
-	 0,                           /* bitpos */
-	 complain_overflow_bitfield,  /* complain_on_overflow */
-	 NULL,                        /* special_function */
-	 "R_CKCORE_PCREL_IMM16BY4",   /* name */
-	 FALSE,                       /* partial_inplace */
-	 0xffff0000,                  /* src_mask */
-	 0xffff,                      /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+         2,                           /* rightshift */
+         4,                           /* size */
+         16,                          /* bitsize */
+         true,                        /* pc_relative */
+         0,                           /* bitpos */
+         complain_overflow_bitfield,  /* complain_on_overflow */
+         bfd_elf_generic_reloc,       /* special_function */
+         "R_CKCORE_PCREL_IMM16BY4",   /* name */
+         false,                       /* partial_inplace */
+         0xffff0000,                  /* src_mask */
+         0xffff,                      /* dst_mask */
+         true),                       /* pcrel_offset */
 
   /* 22: Only for csky v2.  */
   HOWTO (R_CKCORE_PCREL_IMM10BY2,     /* type */
 	 1,                           /* rightshift */
-	 1,                           /* size */
+	 2,                           /* size */
 	 10,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_signed,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL_IMM10BY2",   /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x3ff,                       /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 23: Only for csky v2.  */
   HOWTO (R_CKCORE_PCREL_IMM10BY4,     /* type */
-	 2,                           /* rightshift */
-	 2,                           /* size */
-	 10,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
-	 0,                           /* bitpos */
-	 complain_overflow_bitfield,  /* complain_on_overflow */
-	 NULL,                        /* special_function */
-	 "R_CKCORE_PCREL_IMM10BY4",   /* name */
-	 FALSE,                       /* partial_inplace */
-	 0x0,                         /* src_mask */
-	 0x3ff,                       /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+         2,                           /* rightshift */
+         4,                           /* size */
+         10,                          /* bitsize */
+         true,                        /* pc_relative */
+         0,                           /* bitpos */
+         complain_overflow_bitfield,  /* complain_on_overflow */
+         bfd_elf_generic_reloc,       /* special_function */
+         "R_CKCORE_PCREL_IMM10BY4",   /* name */
+         false,                       /* partial_inplace */
+         0x0,                         /* src_mask */
+         0x3ff,                       /* dst_mask */
+         true),                       /* pcrel_offset */
 
   /* 24: Only for csky v2.  */
   HOWTO (R_CKCORE_ADDR_HI16,          /* type */
 	 16,                          /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_ADDR_HI16",        /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 25.  */
   HOWTO (R_CKCORE_ADDR_LO16,          /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_ADDR_LO16",        /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 26.  */
   HOWTO (R_CKCORE_GOTPC_HI16,         /* type */
 	 16,                          /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOTPC_HI16",       /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 27.  */
   HOWTO (R_CKCORE_GOTPC_LO16,         /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOTPC_LO16",       /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 28.  */
   HOWTO (R_CKCORE_GOTOFF_HI16,        /* type */
 	 16,                          /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOTOFF_HI16",      /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 29.  */
   HOWTO (R_CKCORE_GOTOFF_LO16,        /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOTOFF_LO16",      /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 30.  */
   HOWTO (R_CKCORE_GOT12,              /* type */
 	 2,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 12,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_bitfield,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOT12",            /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xfff,                       /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 31.  */
   HOWTO (R_CKCORE_GOT_HI16,           /* type */
 	 16,                          /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOT_HI16",         /* name */
-	 TRUE,                       /* partial_inplace */
+	 true,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 32.  */
   HOWTO (R_CKCORE_GOT_LO16,           /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOT_LO16",         /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 33.  */
   HOWTO (R_CKCORE_PLT12,              /* type */
 	 2,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 12,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_bitfield,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PLT12",            /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xfff,                       /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 34.  */
   HOWTO (R_CKCORE_PLT_HI16,           /* type */
 	 16,                          /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PLT_HI16",         /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 35.  */
   HOWTO (R_CKCORE_PLT_LO16,           /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PLT_LO16",         /* name */
-	 TRUE,                       /* partial_inplace */
+	 true,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 36: None.  */
   HOWTO (R_CKCORE_ADDRGOT_HI16,0,0,0,0,0,0,0,"R_CKCORE_",0,0,0,0),
@@ -576,242 +577,242 @@ static reloc_howto_type csky_elf_howto_t
   /* 40.  */
   HOWTO (R_CKCORE_PCREL_JSR_IMM26BY2, /* type */
 	 1,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 26,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_signed,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL_JSR_IMM26BY2", /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x3ffffff,                   /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 41.  */
   HOWTO (R_CKCORE_TOFFSET_LO16,       /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_unsigned,  /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_TOFFSET_LO16",     /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 42.  */
   HOWTO (R_CKCORE_DOFFSET_LO16,       /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 16,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_unsigned,  /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_DOFFSET_LO16",     /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 43.  */
   HOWTO (R_CKCORE_PCREL_IMM18BY2,     /* type */
-	 1,                           /* rightshift */
-	 2,                           /* size */
-	 18,                          /* bitsize */
-	 TRUE,                        /* pc_relative */
-	 0,                           /* bitpos */
-	 complain_overflow_signed,    /* complain_on_overflow */
-	 NULL,                        /* special_function */
-	 "R_CKCORE_PCREL_IMM18BY2",   /* name */
-	 FALSE,                       /* partial_inplace */
-	 0x0,                         /* src_mask */
-	 0x3ffff,                     /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+         1,                           /* rightshift */
+         4,                           /* size */
+         18,                          /* bitsize */
+         true,                        /* pc_relative */
+         0,                           /* bitpos */
+         complain_overflow_signed,    /* complain_on_overflow */
+         bfd_elf_generic_reloc,       /* special_function */
+         "R_CKCORE_PCREL_IMM18BY2",   /* name */
+         false,                       /* partial_inplace */
+         0x0,                         /* src_mask */
+         0x3ffff,                     /* dst_mask */
+         true),                       /* pcrel_offset */
 
   /* 44.  */
   HOWTO (R_CKCORE_DOFFSET_IMM18,      /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 18,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_unsigned,  /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_DOFFSET_IMM18",    /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x3ffff,                     /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 45.  */
   HOWTO (R_CKCORE_DOFFSET_IMM18BY2,   /* type */
 	 1,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 18,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_unsigned,  /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_DOFFSET_IMM18BY2", /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x3ffff,                     /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 46.  */
   HOWTO (R_CKCORE_DOFFSET_IMM18BY4,   /* type */
 	 2,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 18,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_unsigned,  /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_DOFFSET_IMM18BY4", /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x3ffff,                     /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 47.  */
   HOWTO (R_CKCORE_GOTOFF_IMM18,       /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 18,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_bitfield,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOTOFF_IMM18",     /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0xfffc,                      /* src_mask */
 	 0x3ffff,                     /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 48.  */
   HOWTO (R_CKCORE_GOT_IMM18BY4,       /* type */
 	 2,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 18,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_bitfield,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_GOT_IMM18BY4",     /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0xfffc,                      /* src_mask */
 	 0x3ffff,                     /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 49.  */
   HOWTO (R_CKCORE_PLT_IMM18BY4,       /* type */
 	 2,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 18,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_bitfield,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PLT_IMM18BY4",     /* name */
-	 TRUE,                        /* partial_inplace */
+	 true,                        /* partial_inplace */
 	 0xfffc,                      /* src_mask */
 	 0x3ffff,                     /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 50: for lrw16.  */
   HOWTO (R_CKCORE_PCREL_IMM7BY4,      /* type */
 	 2,                           /* rightshift */
-	 1,                           /* size */
+	 2,                           /* size */
 	 7,                           /* bitsize */
-	 TRUE,                        /* pc_relative */
+	 true,                        /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_bitfield,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL_IMM7BY4",    /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0xec1f,                      /* src_mask */
 	 0x31f,                       /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 51: for static nptl.  */
   HOWTO (R_CKCORE_TLS_LE32,           /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_TLS_LE32",         /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 52: for static nptl.  */
   HOWTO (R_CKCORE_TLS_IE32,           /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_TLS_IE32",         /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 53: for pic nptl.  */
   HOWTO (R_CKCORE_TLS_GD32,           /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_TLS_GD32",         /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 54: for pic nptl.  */
   HOWTO (R_CKCORE_TLS_LDM32,          /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_TLS_LDM32",        /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 55: for pic nptl.  */
   HOWTO (R_CKCORE_TLS_LDO32,          /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_TLS_LDO32",        /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xffffffff,                  /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 56: for linker.  */
   HOWTO (R_CKCORE_TLS_DTPMOD32,0,0,0,0,0,0,0,"R_CKCORE_TLS_DTPMOD32",0,0,0,0),
@@ -824,48 +825,48 @@ static reloc_howto_type csky_elf_howto_t
 
   /* 59: for ck807f.  */
   HOWTO (R_CKCORE_PCREL_FLRW_IMM8BY4, /* type */
-	 2,                           /* rightshift */
-	 2,                           /* size */
-	 8,                           /* bitsize */
-	 TRUE,                        /* pc_relative */
-	 0,                           /* bitpos */
-	 complain_overflow_bitfield,  /* complain_on_overflow */
-	 NULL,                        /* special_function */
-	 "R_CKCORE_PCREL_FLRW_IMM8BY4", /* name */
-	 FALSE,                       /* partial_inplace */
-	 0xfe1fff0f,                  /* src_mask */
-	 0x1e000f0,                   /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+         2,                           /* rightshift */
+         4,                           /* size */
+         8,                           /* bitsize */
+         true,                        /* pc_relative */
+         0,                           /* bitpos */
+         complain_overflow_bitfield,  /* complain_on_overflow */
+         bfd_elf_generic_reloc,       /* special_function */
+         "R_CKCORE_PCREL_FLRW_IMM8BY4",/* name */
+         false,                       /* partial_inplace */
+         0xfe1fff0f,                  /* src_mask */
+         0x1e000f0,                   /* dst_mask */
+         true),                       /* pcrel_offset */
 
   /* 60: for 810 not to generate jsri.  */
   HOWTO (R_CKCORE_NOJSRI,             /* type */
 	 0,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 32,                          /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_NOJSRI",           /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0xffff,                      /* src_mask */
 	 0xffff,                      /* dst_mask */
-	 FALSE),                      /* pcrel_offset */
+	 false),                      /* pcrel_offset */
 
   /* 61: for callgraph.  */
   HOWTO (R_CKCORE_CALLGRAPH,          /* type */
 	 0,                           /* rightshift */
 	 0,                           /* size */
 	 0,                           /* bitsize */
-	 FALSE,                       /* pc_relative */
+	 false,                       /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_dont,      /* complain_on_overflow */
 	 NULL,                        /* special_function */
 	 "R_CKCORE_CALLGRAPH",        /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0x0,                         /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
   /* 62: IRELATIVE*/
   HOWTO (R_CKCORE_IRELATIVE,0,0,0,0,0,0,0,"R_CKCORE_IRELATIVE",0,0,0,0),
@@ -873,31 +874,31 @@ static reloc_howto_type csky_elf_howto_t
   /* 63: for bloop instruction */
   HOWTO (R_CKCORE_PCREL_BLOOP_IMM4BY4, /* type */
 	 1,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 4,                           /* bitsize */
 	 1,                           /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_signed,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL_BLOOP_IMM4BY4", /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xf,                         /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
   /* 64: for bloop instruction */
   HOWTO (R_CKCORE_PCREL_BLOOP_IMM12BY4, /* type */
 	 1,                           /* rightshift */
-	 2,                           /* size */
+	 4,                           /* size */
 	 12,                          /* bitsize */
 	 1,                           /* pc_relative */
 	 0,                           /* bitpos */
 	 complain_overflow_signed,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,       /* special_function */
 	 "R_CKCORE_PCREL_BLOOP_IMM12BY4", /* name */
-	 FALSE,                       /* partial_inplace */
+	 false,                       /* partial_inplace */
 	 0x0,                         /* src_mask */
 	 0xfff,                       /* dst_mask */
-	 TRUE),                       /* pcrel_offset */
+	 true),                       /* pcrel_offset */
 
 
 };
@@ -975,7 +976,7 @@ elf32_csky_howto_from_type (unsigned int
     return NULL;
 }
 
-static bfd_boolean
+static bool
 csky_elf_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 			arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
@@ -990,9 +991,9 @@ csky_elf_info_to_howto (bfd *abfd ATTRIB
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* The Global Offset Table max size.  */
@@ -1036,7 +1037,7 @@ enum stub_insn_type
   DATA_TYPE
 };
 
-bfd_boolean use_branch_stub = TRUE;
+bool use_branch_stub = true;
 typedef struct
 {
   bfd_vma data;
@@ -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
@@ -1179,18 +1178,17 @@ struct csky_elf_link_hash_entry
 };
 
 /* Traverse an C-SKY ELF linker hash table.  */
-#define csky_elf_link_hash_traverse(table, func, info)                     \
-  (elf_link_hash_traverse                                                  \
-   (&(table)->root,                                                        \
-    (bfd_boolean (*) PARAMS ((struct elf_link_hash_entry *, PTR))) (func), \
+#define csky_elf_link_hash_traverse(table, func, info)			\
+  (elf_link_hash_traverse						\
+   (&(table)->root,							\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (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)
@@ -1508,8 +1502,7 @@ csky_elf_link_hash_table_create (bfd *ab
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
 				      csky_elf_link_hash_newfunc,
-				      sizeof (struct csky_elf_link_hash_entry),
-				      CSKY_ELF_DATA))
+				      sizeof (struct csky_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1525,11 +1518,10 @@ csky_elf_link_hash_table_create (bfd *ab
   return &ret->elf.root;
 }
 
-static bfd_boolean
+static bool
 csky_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct csky_elf_obj_tdata),
-				  CSKY_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct csky_elf_obj_tdata));
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -1538,7 +1530,7 @@ csky_elf_mkobject (bfd *abfd)
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 csky_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h)
 {
@@ -1548,11 +1540,11 @@ csky_elf_adjust_dynamic_symbol (struct b
   asection *s;
   eh = (struct csky_elf_link_hash_entry *)h;
   if (eh == NULL)
-    return FALSE;
+    return false;
 
   htab = csky_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Clear jsri2bsr_refcount, if creating shared library files.  */
   if (bfd_link_pic (info) && eh->jsri2bsr_refcount > 0)
@@ -1586,7 +1578,7 @@ csky_elf_adjust_dynamic_symbol (struct b
 	  h->got.refcount -= eh->plt_refcount;
 	  eh->plt_refcount = 0;
 	}
-      return TRUE;
+      return true;
     }
   else
     /* It's possible that we incorrectly decided a .plt reloc was
@@ -1605,13 +1597,13 @@ csky_elf_adjust_dynamic_symbol (struct b
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* If there are no non-GOT references, we do not need a copy
      relocation.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* This is a reference to a symbol defined by a dynamic object which
      is not a function.  */
@@ -1620,8 +1612,8 @@ csky_elf_adjust_dynamic_symbol (struct b
      only references to the symbol are via the global offset table.
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
-  if (bfd_link_pic (info) || htab->elf.is_relocatable_executable)
-    return TRUE;
+  if (bfd_link_pic (info))
+    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
@@ -1658,14 +1650,14 @@ csky_elf_adjust_dynamic_symbol (struct b
     }
 
   h->non_got_ref = 0;
-  return TRUE;
+  return true;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
-csky_allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf)
+static bool
+csky_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
   struct csky_elf_link_hash_table *htab;
@@ -1674,7 +1666,7 @@ csky_allocate_dynrelocs (struct elf_link
 
   /* For indirect case, such as _ZdlPv to _ZdlPv@@GLIBCXX_3.4.  */
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -1683,7 +1675,7 @@ csky_allocate_dynrelocs (struct elf_link
   info = (struct bfd_link_info *) inf;
   htab = csky_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
   /*TODO: how to deal with weak symbol relocs.  */
   if ((htab->elf.dynamic_sections_created || h->type == STT_GNU_IFUNC)
       && h->plt.refcount > 0)
@@ -1693,7 +1685,7 @@ csky_allocate_dynrelocs (struct elf_link
       if (h->dynindx == -1 && !h->forced_local
 	  && h->root.type == bfd_link_hash_undefweak
 	  && ! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
       if (bfd_link_pic (info) || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
 	{
 	  asection *splt = htab->elf.splt;
@@ -1747,7 +1739,7 @@ csky_allocate_dynrelocs (struct elf_link
   if (h->got.refcount > 0)
     {
       asection *sgot;
-      bfd_boolean dyn;
+      bool dyn;
       int indx;
 
       int tls_type = csky_elf_hash_entry (h)->tls_type;
@@ -1756,7 +1748,7 @@ csky_allocate_dynrelocs (struct elf_link
       if (h->dynindx == -1 && !h->forced_local
 	  && h->root.type == bfd_link_hash_undefweak
 	  && ! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
 
       sgot = htab->elf.sgot;
       h->got.offset = sgot->size;
@@ -1804,8 +1796,8 @@ 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)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -1819,7 +1811,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,24 +1824,24 @@ 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.  */
 	  else if (h->dynindx == -1
 		   && !h->forced_local
 		   && !bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
     }
@@ -1872,7 +1864,7 @@ csky_allocate_dynrelocs (struct elf_link
 	      && h->root.type == bfd_link_hash_undefweak)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -1881,81 +1873,39 @@ 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);
     }
 
-  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;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-csky_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				struct bfd_link_info *info)
+static bool
+csky_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			     struct bfd_link_info *info)
 {
   struct csky_elf_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
   htab = csky_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
   dynobj = htab->elf.dynobj;
   if (dynobj == NULL)
-    return FALSE;
+    return true;
 
   if (htab->elf.dynamic_sections_created)
     {
@@ -1966,6 +1916,7 @@ csky_elf_size_dynamic_sections (bfd *out
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -1990,8 +1941,7 @@ csky_elf_size_dynamic_sections (bfd *out
 	{
 	  struct elf_dyn_relocs *p;
 
-	  for (p = *((struct elf_dyn_relocs **)
-		     &elf_section_data (s)->local_dynrel);
+	  for (p = elf_section_data (s)->local_dynrel;
 	       p != NULL;
 	       p = p->next)
 	    {
@@ -2058,22 +2008,22 @@ csky_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->elf, csky_allocate_dynrelocs, (PTR) info);
+  elf_link_hash_traverse (&htab->elf, csky_allocate_dynrelocs, info);
 
   /* Check for GOT overflow.  */
   if (check_got_overflow == 1
       && htab->elf.sgot->size + htab->elf.sgotplt->size > GOT_MAX_SIZE)
     {
       _bfd_error_handler (_("GOT table size out of range")); /*  */
-      return FALSE;
+      return false;
     }
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
-      bfd_boolean strip_section = TRUE;
+      bool strip_section = true;
 
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
@@ -2091,12 +2041,12 @@ csky_elf_size_dynamic_sections (bfd *out
 	     It's too late to tell BFD to get rid of the symbols.  */
 
 	  if (htab->elf.hplt != NULL)
-	    strip_section = FALSE;
+	    strip_section = false;
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rel") )
+      else if (startswith (bfd_section_name (s), ".rel") )
 	{
 	  if (s->size != 0 )
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -2134,58 +2084,19 @@ csky_elf_size_dynamic_sections (bfd *out
 	 of garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
   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
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 csky_elf_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
@@ -2194,8 +2105,6 @@ csky_elf_finish_dynamic_symbol (bfd *out
   struct csky_elf_link_hash_table *htab;
 
   htab = csky_elf_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   /* Sanity check to make sure no unexpected symbol reaches here.
      This matches the test in csky_elf_relocate_section handling
@@ -2356,12 +2265,12 @@ csky_elf_finish_dynamic_symbol (bfd *out
       || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 csky_elf_finish_dynamic_sections (bfd *output_bfd,
 				  struct bfd_link_info *info)
 {
@@ -2372,7 +2281,7 @@ csky_elf_finish_dynamic_sections (bfd *o
 
   htab = csky_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->elf.dynobj;
   sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
@@ -2388,7 +2297,7 @@ csky_elf_finish_dynamic_sections (bfd *o
       for (; dyncon < dynconend; dyncon++)
 	{
 	  Elf_Internal_Dyn dyn;
-	  bfd_boolean size = FALSE;
+	  bool size = false;
 	  const char *name = NULL;
 
 	  bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
@@ -2398,15 +2307,15 @@ csky_elf_finish_dynamic_sections (bfd *o
 	      continue;
 	    case DT_RELA:
 	      name = ".rela.dyn";
-	      size = FALSE;
+	      size = false;
 	      break;
 	    case DT_RELASZ:
 	      name = ".rela.dyn";
-	      size = TRUE;
+	      size = true;
 	      break;
 	    case DT_PLTRELSZ:
 	      name = ".rela.plt";
-	      size = TRUE;
+	      size = true;
 	      break;
 	    case DT_PLTGOT:
 	      dyn.d_un.d_ptr = htab->elf.sgot->output_section->vma;
@@ -2450,7 +2359,7 @@ csky_elf_finish_dynamic_sections (bfd *o
 	}
       elf_section_data (got_sec->output_section)->this_hdr.sh_entsize = 4;
     }
-  return TRUE;
+  return true;
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -2465,35 +2374,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)
     {
@@ -2549,11 +2429,43 @@ csky_elf_gc_mark_hook (asection *sec,
   return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
 }
 
+/* Match symbol names created by tc-csky.c:make_mapping_symbol.  */
+
+static bool
+is_mapping_symbol_name (const char *name)
+{
+  return (name && name[0] == '$'
+	  && (name[1] == 't' || name[1] == 'd')
+	  && name[2] == 0);
+}
+
+/* Treat mapping symbols as special target symbols.  */
+
+static bool
+csky_elf_is_target_special_symbol (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
+{
+  return is_mapping_symbol_name (sym->name);
+}
+
+/* Exclude mapping symbols from being treated as function symbols by
+   objdump and nm.  */
+
+static bfd_size_type
+csky_elf_maybe_function_sym (const asymbol *sym, asection *sec,
+			     bfd_vma *code_off)
+{
+  if ((sym->flags & BSF_LOCAL) != 0
+      && is_mapping_symbol_name (sym->name))
+    return 0;
+
+  return _bfd_elf_maybe_function_sym (sym, sec, code_off);
+}
+
 /* Look through the relocs for a section during the first phase.
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 csky_elf_check_relocs (bfd * abfd,
 		       struct bfd_link_info * info,
 		       asection * sec,
@@ -2568,11 +2480,11 @@ csky_elf_check_relocs (bfd * abfd,
 
   /* if output type is relocatable, return.  */
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = csky_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -2591,10 +2503,10 @@ 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;
+	    return false;
 	  h = NULL;
 	}
       else
@@ -2663,10 +2575,10 @@ csky_elf_check_relocs (bfd * abfd,
 		    htab->elf.dynobj = abfd;
 
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, 2, abfd, TRUE);
+		    (sec, htab->elf.dynobj, 2, abfd, true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      if (h == NULL && !use_branch_stub
@@ -2687,7 +2599,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,10 +2610,10 @@ 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;
+		    return false;
 		  s = bfd_section_from_elf_index (abfd, loc_isym->st_shndx);
 		  if (s == NULL)
 		    s = sec;
@@ -2712,11 +2624,11 @@ 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)
-		    return FALSE;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -2816,7 +2728,7 @@ csky_elf_check_relocs (bfd * abfd,
 		    local_got_refcounts = ((bfd_signed_vma *)
 					   bfd_zalloc (abfd, size));
 		    if (local_got_refcounts == NULL)
-		      return FALSE;
+		      return false;
 		    elf_local_got_refcounts (abfd) = local_got_refcounts;
 		    csky_elf_local_got_tls_type (abfd)
 		      = (char *) (local_got_refcounts + symtab_hdr->sh_info);
@@ -2860,7 +2772,7 @@ csky_elf_check_relocs (bfd * abfd,
 	      if (htab->elf.dynobj == NULL)
 		htab->elf.dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	  break;
 
@@ -2868,19 +2780,19 @@ csky_elf_check_relocs (bfd * abfd,
 	     Reconstruct it for later use during GC.  */
 	case R_CKCORE_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_CKCORE_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static const struct bfd_elf_special_section csky_elf_special_sections[]=
@@ -2892,15 +2804,15 @@ static const struct bfd_elf_special_sect
 
 /* Function to keep CSKY specific flags in the ELF header.  */
 
-static bfd_boolean
+static bool
 csky_elf_set_private_flags (bfd * abfd, flagword flags)
 {
   BFD_ASSERT (! elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 static csky_arch_for_merge *
@@ -2920,10 +2832,194 @@ 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 bool
+elf32_csky_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
+{
+  bfd *obfd = info->output_bfd;
+  obj_attribute *in_attr;
+  obj_attribute *out_attr;
+  csky_arch_for_merge *old_arch = NULL;
+  csky_arch_for_merge *new_arch = NULL;
+  int i;
+  bool 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);
+
+      _bfd_elf_copy_obj_attributes (ibfd, obfd);
+
+      /* 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.  */
 
-static bfd_boolean
+static bool
 csky_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -2931,102 +3027,107 @@ 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))
-    return FALSE;
+    return false;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    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;
+      elf_flags_init (obfd) = true;
     }
-  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 | new_flags;
+
+  sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
+
+  if (bfd_get_section_by_name (ibfd, sec_name) == NULL
+      || ((new_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK)) !=
+	  (old_flags & (CSKY_ARCH_MASK | CSKY_ABI_MASK))))
     {
-      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);
+	}
     }
-  return TRUE;
+
+  elf_elfheader (obfd)->e_flags = newest_flag;
+
+  return true;
 }
 
 /* Ignore the discarded relocs in special sections in link time.  */
 
-static bfd_boolean
+static bool
 csky_elf_ignore_discarded_relocs (asection *sec)
 {
   if (strcmp (sec->name, ".csky_stack_size") == 0)
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
 /* .csky_stack_size are not referenced directly.  This pass marks all of
    them as required.  */
 
-static bfd_boolean
+static bool
 elf32_csky_gc_mark_extra_sections (struct bfd_link_info *info,
 				   elf_gc_mark_hook_fn gc_mark_hook ATTRIBUTE_UNUSED)
 {
@@ -3043,7 +3144,7 @@ elf32_csky_gc_mark_extra_sections (struc
 	  o->gc_mark = 1;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* The linker repeatedly calls this function for each input section,
@@ -3084,7 +3185,7 @@ elf32_csky_next_input_section (struct bf
 static void
 group_sections (struct csky_elf_link_hash_table *htab,
 		bfd_size_type stub_group_size,
-		bfd_boolean stubs_always_after_branch)
+		bool stubs_always_after_branch)
 {
   asection **list = htab->input_list;
 
@@ -3178,16 +3279,16 @@ group_sections (struct csky_elf_link_has
    or it is a weak symbol and we aim to create shared object file,
    we must create a stub for this bsr.  */
 
-static bfd_boolean
+static bool
 sym_must_create_stub (struct elf_link_hash_entry *h,
 		      struct bfd_link_info *info)
 {
   if (h != NULL
       && ((h->def_dynamic && !h->def_regular)
 	  || (bfd_link_pic (info) && h->root.type == bfd_link_hash_defweak)))
-    return TRUE;
+    return true;
   else
-    return FALSE;
+    return false;
 }
 
 /* Calculate the template, template size and instruction size for a stub.
@@ -3222,7 +3323,7 @@ find_stub_size_and_template (enum elf32_
 
       default:
 	BFD_FAIL ();
-	return FALSE;
+	return false;
       }
     }
 
@@ -3237,7 +3338,7 @@ find_stub_size_and_template (enum elf32_
 /* As above, but don't actually build the stub.  Just bump offset so
    we know stub section sizes.  */
 
-static bfd_boolean
+static bool
 csky_size_one_stub (struct bfd_hash_entry *gen_entry,
 		    void * in_arg ATTRIBUTE_UNUSED)
 {
@@ -3259,7 +3360,7 @@ csky_size_one_stub (struct bfd_hash_entr
 
   size = (size + 7) & ~7;
   stub_entry->stub_sec->size += size;
-  return TRUE;
+  return true;
 }
 
 /* Add a new stub entry to the stub hash.  Not all fields of the new
@@ -3280,7 +3381,7 @@ elf32_csky_add_stub (const char *stub_na
 
   /* Enter this entry into the linker stub hash table.  */
   stub_entry = csky_stub_hash_lookup (&htab->stub_hash_table, stub_name,
-				      TRUE, FALSE);
+				      true, false);
   if (stub_entry == NULL)
     {
       _bfd_error_handler (_("%pB: cannot create stub entry %s"),
@@ -3300,7 +3401,7 @@ elf32_csky_add_stub (const char *stub_na
    PC-relative calls to a target that is unreachable with a "bsr"
    instruction.  */
 
-bfd_boolean
+bool
 elf32_csky_size_stubs (bfd *output_bfd,
 		       bfd *stub_bfd,
 		       struct bfd_link_info *info,
@@ -3309,11 +3410,11 @@ elf32_csky_size_stubs (bfd *output_bfd,
 		       void (*layout_sections_again) (void))
 {
   bfd_size_type stub_group_size;
-  bfd_boolean stubs_always_after_branch;
+  bool stubs_always_after_branch;
   struct csky_elf_link_hash_table *htab = csky_elf_hash_table (info);
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Propagate mach to stub bfd, because it may not have been
      finalized when we created stub_bfd.  */
@@ -3345,13 +3446,12 @@ elf32_csky_size_stubs (bfd *output_bfd,
   while (1)
     {
       bfd *input_bfd;
-      unsigned int bfd_indx;
       asection *stub_sec;
-      bfd_boolean stub_changed = FALSE;
+      bool stub_changed = false;
 
-      for (input_bfd = info->input_bfds, bfd_indx = 0;
+      for (input_bfd = info->input_bfds;
 	   input_bfd != NULL;
-	   input_bfd = input_bfd->link.next, bfd_indx++)
+	   input_bfd = input_bfd->link.next)
 	{
 	  Elf_Internal_Shdr *symtab_hdr;
 	  asection *section;
@@ -3413,7 +3513,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;
@@ -3530,7 +3630,7 @@ error_ret_free_internal:
 		      stub_entry
 			= csky_stub_hash_lookup	(&htab->stub_hash_table,
 						 stub_name,
-						 FALSE, FALSE);
+						 false, false);
 		      if (stub_entry != NULL)
 			{
 			  /* The proper stub has already been created.  */
@@ -3564,7 +3664,7 @@ error_ret_free_internal:
 			}
 		      sprintf (stub_entry->output_name, STUB_ENTRY_NAME,
 			       sym_name);
-		      stub_changed = TRUE;
+		      stub_changed = true;
 		    }
 		  while (0);
 		}
@@ -3591,12 +3691,12 @@ error_ret_free_internal:
       (*htab->layout_sections_again) ();
     }
 
-  return TRUE;
-error_ret_free_local:
-  return FALSE;
+  return true;
+ error_ret_free_local:
+  return false;
 }
 
-static bfd_boolean
+static bool
 csky_build_one_stub (struct bfd_hash_entry *gen_entry,
 		     void * in_arg)
 {
@@ -3621,9 +3721,17 @@ 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->fatal (_("%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;
+    return false;
   stub_sec = stub_entry->stub_sec;
 
   /* Make a note of the offset within the stubs for this entry.  */
@@ -3671,7 +3779,7 @@ csky_build_one_stub (struct bfd_hash_ent
 	break;
       default:
 	BFD_FAIL ();
-	return FALSE;
+	return false;
       }
   stub_sec->size += size;
 
@@ -3710,7 +3818,7 @@ csky_build_one_stub (struct bfd_hash_ent
 				template_sequence[stub_reloc_idx[i]].reloc_addend);
     }
 
-  return TRUE;
+  return true;
 #undef MAXRELOCS
 }
 
@@ -3720,7 +3828,7 @@ csky_build_one_stub (struct bfd_hash_ent
    functions here.  This function is called via arm_elf_finish in the
    linker.  */
 
-bfd_boolean
+bool
 elf32_csky_build_stubs (struct bfd_link_info *info)
 {
   asection *stub_sec;
@@ -3730,7 +3838,7 @@ elf32_csky_build_stubs (struct bfd_link_
   htab = csky_elf_hash_table (info);
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   for (stub_sec = htab->stub_bfd->sections;
        stub_sec != NULL;
@@ -3746,7 +3854,8 @@ elf32_csky_build_stubs (struct bfd_link_
       size = stub_sec->size;
       stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
       if (stub_sec->contents == NULL && size != 0)
-	return FALSE;
+	return false;
+      stub_sec->alloced = 1;
       stub_sec->size = 0;
     }
 
@@ -3754,7 +3863,7 @@ elf32_csky_build_stubs (struct bfd_link_
   table = &htab->stub_hash_table;
   bfd_hash_traverse (table, csky_build_one_stub, info);
 
-  return TRUE;
+  return true;
 }
 
 /* Set up various things so that we can make a list of input sections
@@ -3770,13 +3879,11 @@ 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)
     return 0;
-  if (! is_elf_hash_table (htab))
-    return 0;
 
   /* Count the number of input BFDs and find the top input section id.  */
   for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0;
@@ -3828,7 +3935,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;
@@ -3837,15 +3944,13 @@ csky_relocate_contents (reloc_howto_type
   unsigned int rightshift = howto->rightshift;
   unsigned int bitpos = howto->bitpos;
 
-  /* If the size is negative, negate RELOCATION. This isn't very
-     general.  */
-  if (howto->size < 0)
+  if (howto->negate)
     relocation = -relocation;
 
   /* 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 +3976,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 +3987,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 +4008,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 +4100,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 +4127,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));
@@ -4082,7 +4187,7 @@ elf32_csky_get_stub_entry (const asectio
       if (stub_name == NULL)
 	return NULL;
       stub_entry = csky_stub_hash_lookup (&htab->stub_hash_table,
-					  stub_name, FALSE, FALSE);
+					  stub_name, false, false);
       if (h != NULL)
 	h->stub_cache = stub_entry;
       free (stub_name);
@@ -4166,7 +4271,7 @@ tpoff (struct bfd_link_info *info, bfd_v
 
 /* Relocate a csky section.  */
 
-static bfd_boolean
+static int
 csky_elf_relocate_section (bfd *                  output_bfd,
 			   struct bfd_link_info * info,
 			   bfd *                  input_bfd,
@@ -4181,13 +4286,13 @@ csky_elf_relocate_section (bfd *
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
   const char *name;
-  bfd_boolean ret = TRUE;
+  bool ret = true;
   struct csky_elf_link_hash_table * htab;
   bfd_vma *local_got_offsets = elf_local_got_offsets (input_bfd);
 
   htab = csky_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = & elf_symtab_hdr (input_bfd);
   sym_hashes = elf_sym_hashes (input_bfd);
@@ -4196,20 +4301,20 @@ csky_elf_relocate_section (bfd *
   relend = relocs + input_section->reloc_count;
   for (; rel < relend; rel++)
     {
-      enum elf_csky_reloc_type     r_type
+      enum elf_csky_reloc_type r_type
 	= (enum elf_csky_reloc_type) ELF32_R_TYPE (rel->r_info);
-      unsigned long                r_symndx;
-      reloc_howto_type *           howto;
-      Elf_Internal_Sym *           sym;
-      asection *                   sec;
-      bfd_vma                      relocation;
-      bfd_vma                      off;
+      unsigned long r_symndx;
+      reloc_howto_type *howto;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      bfd_vma relocation;
+      bfd_vma off;
       struct elf_link_hash_entry * h;
-      bfd_vma                      addend = (bfd_vma)rel->r_addend;
-      bfd_reloc_status_type        r = bfd_reloc_ok;
-      bfd_boolean                  unresolved_reloc = FALSE;
-      int                          do_final_relocate = TRUE;
-      bfd_boolean                  relative_reloc = FALSE;
+      bfd_vma addend = (bfd_vma)rel->r_addend;
+      bfd_reloc_status_type r = bfd_reloc_ok;
+      bool unresolved_reloc = false;
+      int do_final_relocate = true;
+      bool relative_reloc = false;
       bfd_signed_vma disp;
 
       /* Ignore these relocation types:
@@ -4224,7 +4329,7 @@ csky_elf_relocate_section (bfd *
 	  _bfd_error_handler (_("%pB: unsupported relocation type: %#x"),
 			      input_bfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	  continue;
 	}
 
@@ -4234,7 +4339,7 @@ csky_elf_relocate_section (bfd *
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -4246,7 +4351,7 @@ csky_elf_relocate_section (bfd *
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -4275,8 +4380,8 @@ csky_elf_relocate_section (bfd *
 	  else
 #endif
 	    RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					     rel, 1, relend, howto, 0,
-					     contents);
+					     rel, 1, relend, R_CKCORE_NONE,
+					     howto, 0, contents);
 	}
 
       if (bfd_link_relocatable (info))
@@ -4324,7 +4429,7 @@ csky_elf_relocate_section (bfd *
 	  if (h != NULL)
 	    {
 	      /* Global symbol is defined by other modules.  */
-	      bfd_boolean dyn;
+	      bool dyn;
 	      off = h->got.offset;
 	      dyn = htab->elf.dynamic_sections_created;
 	      if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
@@ -4367,11 +4472,11 @@ csky_elf_relocate_section (bfd *
 		      if (GENERATE_RELATIVE_RELOC_P (info, h))
 			/* If this symbol isn't dynamic
 			   in PIC, generate R_CKCORE_RELATIVE here.  */
-			relative_reloc = TRUE;
+			relative_reloc = true;
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    } /* End if h != NULL.  */
 	  else
 	    {
@@ -4389,7 +4494,7 @@ csky_elf_relocate_section (bfd *
 			      htab->elf.sgot->contents + off);
 		  local_got_offsets[r_symndx] |= 1;
 		  if (bfd_link_pic (info))
-		    relative_reloc = TRUE;
+		    relative_reloc = true;
 		}
 	    }
 	  if (relative_reloc)
@@ -4434,7 +4539,7 @@ csky_elf_relocate_section (bfd *
 	  /* Use global offset table as symbol value.  */
 	  relocation = htab->elf.sgot->output_section->vma;
 	  addend = -addend;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_CKCORE_DOFFSET_IMM18:
@@ -4478,7 +4583,7 @@ csky_elf_relocate_section (bfd *
 		 using -Bsymbolic.  */
 	      if (h->got.offset != (bfd_vma) -1)
 		{
-		  bfd_boolean dyn;
+		  bool dyn;
 
 		  off = h->got.offset;
 		  dyn = htab->elf.dynamic_sections_created;
@@ -4508,7 +4613,7 @@ csky_elf_relocate_section (bfd *
 			{
 			  h->got.offset |= 1;
 			  if (GENERATE_RELATIVE_RELOC_P (info, h))
-			    relative_reloc = TRUE;
+			    relative_reloc = true;
 			}
 		    }
 		  bfd_put_32 (output_bfd, relocation,
@@ -4543,7 +4648,7 @@ csky_elf_relocate_section (bfd *
 	    relocation = (h->plt.offset / PLT_ENTRY_SIZE + 2) * 4;
 	  else
 	    relocation = (h->plt.offset / PLT_ENTRY_SIZE_P + 2) * 4;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_CKCORE_PCREL_IMM26BY2:
@@ -4563,19 +4668,19 @@ csky_elf_relocate_section (bfd *
 	  /* TODO: deal with callgraph.  */
 	  if (h == NULL && r_symndx == 0)
 	    {
-	      do_final_relocate = FALSE;
+	      do_final_relocate = false;
 	      break;
 	    }
 
 	  /* Ignore weak references to undefined symbols.  */
 	  if (h != NULL && h->root.type == bfd_link_hash_undefweak)
 	    {
-	      do_final_relocate = FALSE;
+	      do_final_relocate = false;
 	      break;
 	    }
 
 	  /* Using branch stub.  */
-	  if (use_branch_stub == TRUE
+	  if (use_branch_stub == true
 	      && ELF32_R_TYPE (rel->r_info) == R_CKCORE_PCREL_IMM26BY2)
 	    {
 	      struct elf32_csky_stub_hash_entry *stub_entry = NULL;
@@ -4655,24 +4760,24 @@ csky_elf_relocate_section (bfd *
 			      || h->root.type == bfd_link_hash_indirect)))))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 	      bfd_byte *loc;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at
 		 run time.  */
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
 		{
-		  skip = TRUE;
-		  relocate = TRUE;
+		  skip = true;
+		  relocate = true;
 		}
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
@@ -4691,7 +4796,7 @@ csky_elf_relocate_section (bfd *
 	      else
 		{
 		  /* This symbol is local, or marked to become local.  */
-		  relocate = TRUE;
+		  relocate = true;
 		  outrel.r_info = ELF32_R_INFO (0, r_type);
 		  outrel.r_addend = relocation + rel->r_addend;
 		}
@@ -4720,7 +4825,7 @@ csky_elf_relocate_section (bfd *
 	  if (r_symndx == 0
 	      && strcmp (sec->name, ".csky_stack_size") == 0)
 	    {
-	      do_final_relocate = FALSE;
+	      do_final_relocate = false;
 	      break;
 	    }
 	  if (r_symndx >= symtab_hdr->sh_info
@@ -4741,25 +4846,25 @@ csky_elf_relocate_section (bfd *
 			      || h->root.type == bfd_link_hash_indirect)))))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 	      bfd_byte *loc;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at
 		 run time.  */
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
 		{
-		  skip = TRUE;
-		  relocate = TRUE;
+		  skip = true;
+		  relocate = true;
 		}
 
 	      outrel.r_offset += (input_section->output_section->vma
@@ -4853,7 +4958,7 @@ csky_elf_relocate_section (bfd *
 		   "in shared object"),
 		 input_bfd, input_section, (uint64_t)rel->r_offset,
 		 howto->name);
-	      return FALSE;
+	      return false;
 	    }
 	  else
 	    relocation = tpoff (info, relocation);
@@ -4869,14 +4974,14 @@ csky_elf_relocate_section (bfd *
 	    indx = 0;
 	    if (h != NULL)
 	      {
-		bfd_boolean dyn;
+		bool dyn;
 		dyn = htab->elf.dynamic_sections_created;
 		if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
 						     bfd_link_pic (info), h)
 		    && (!bfd_link_pic (info)
 			|| !SYMBOL_REFERENCES_LOCAL (info, h)))
 		  {
-		    unresolved_reloc = FALSE;
+		    unresolved_reloc = false;
 		    indx = h->dynindx;
 		  }
 		off = h->got.offset;
@@ -4895,7 +5000,7 @@ csky_elf_relocate_section (bfd *
 	      off &= ~1;
 	    else
 	      {
-		bfd_boolean need_relocs = FALSE;
+		bool need_relocs = false;
 		Elf_Internal_Rela outrel;
 		bfd_byte *loc = NULL;
 		int cur_off = off;
@@ -4908,7 +5013,7 @@ csky_elf_relocate_section (bfd *
 			    && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
 			|| h->root.type != bfd_link_hash_undefined))
 		  {
-		    need_relocs = TRUE;
+		    need_relocs = true;
 		    BFD_ASSERT (htab->elf.srelgot != NULL);
 
 		    loc = htab->elf.srelgot->contents;
@@ -5028,7 +5133,7 @@ csky_elf_relocate_section (bfd *
 	 does no change with the data read. But we may need this mechanism in
 	 the future.  */
 
-      if (howto->size == 2
+      if (bfd_get_reloc_size (howto) == 4
 	  && (howto->type == R_CKCORE_ADDR32
 	      || howto->type == R_CKCORE_PCREL32
 	      || howto->type == R_CKCORE_GOT32
@@ -5055,7 +5160,7 @@ csky_elf_relocate_section (bfd *
 
       if (r != bfd_reloc_ok)
 	{
-	  ret = FALSE;
+	  ret = false;
 	  switch (r)
 	    {
 	    default:
@@ -5085,7 +5190,7 @@ csky_elf_relocate_section (bfd *
   return ret;
 }
 
-static bfd_boolean
+static bool
 csky_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -5094,7 +5199,7 @@ csky_elf_grok_prstatus (bfd *abfd, Elf_I
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
       /* Sizeof (struct elf_prstatus) on C-SKY V1 arch.  */
     case 148:
       elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
@@ -5115,13 +5220,13 @@ csky_elf_grok_prstatus (bfd *abfd, Elf_I
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 csky_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
       /* Sizeof (struct elf_prpsinfo) on linux csky.  */
     case 124:
@@ -5142,7 +5247,48 @@ csky_elf_grok_psinfo (bfd *abfd, Elf_Int
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  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 bool
+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.  */
@@ -5153,6 +5299,7 @@ csky_elf_grok_psinfo (bfd *abfd, Elf_Int
 #define TARGET_LITTLE_SYM                     csky_elf32_le_vec
 #define TARGET_LITTLE_NAME                    "elf32-csky-little"
 #define ELF_ARCH                              bfd_arch_csky
+#define ELF_TARGET_ID			      CSKY_ELF_DATA
 #define ELF_MACHINE_CODE                      EM_CSKY
 #define ELF_MACHINE_ALT1		      EM_CSKY_OLD
 #define ELF_MAXPAGESIZE                       0x1000
@@ -5166,6 +5313,8 @@ csky_elf_grok_psinfo (bfd *abfd, Elf_Int
 #define bfd_elf32_bfd_merge_private_bfd_data  csky_elf_merge_private_bfd_data
 #define bfd_elf32_bfd_set_private_flags       csky_elf_set_private_flags
 #define elf_backend_copy_indirect_symbol      csky_elf_copy_indirect_symbol
+#define bfd_elf32_bfd_is_target_special_symbol csky_elf_is_target_special_symbol
+#define elf_backend_maybe_function_sym	      csky_elf_maybe_function_sym
 
 /* GC section related API.  */
 #define elf_backend_can_gc_sections           1
@@ -5183,7 +5332,7 @@ csky_elf_grok_psinfo (bfd *abfd, Elf_Int
 /* Dynamic relocate related API.  */
 #define elf_backend_create_dynamic_sections   _bfd_elf_create_dynamic_sections
 #define elf_backend_adjust_dynamic_symbol     csky_elf_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections     csky_elf_size_dynamic_sections
+#define elf_backend_late_size_sections        csky_elf_late_size_sections
 #define elf_backend_finish_dynamic_symbol     csky_elf_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections   csky_elf_finish_dynamic_sections
 #define elf_backend_rela_normal               1
@@ -5198,4 +5347,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.20200303/bfd/elf32-csky.h ./bfd/elf32-csky.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-csky.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-csky.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for C-SKY.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,9 +18,9 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-extern bfd_boolean elf32_csky_build_stubs
+extern bool elf32_csky_build_stubs
   (struct bfd_link_info *);
-extern bfd_boolean elf32_csky_size_stubs
+extern bool elf32_csky_size_stubs
   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
    struct bfd_section *(*) (const char*, struct bfd_section*),
    void (*) (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.20200303/bfd/elf32-d10v.c ./bfd/elf32-d10v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-d10v.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-d10v.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* D10V-specific support for 32-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,137 +33,137 @@ static reloc_howto_type elf_d10v_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_D10V_NONE,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 3,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_D10V_NONE",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* An PC Relative 10-bit relocation, shifted by 2, right container.  */
   HOWTO (R_D10V_10_PCREL_R,	/* Type.  */
 	 2,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 8,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_D10V_10_PCREL_R",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xff,			/* Src_mask.  */
 	 0xff,			/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* An PC Relative 10-bit relocation, shifted by 2, left container.  */
   HOWTO (R_D10V_10_PCREL_L,	/* Type.  */
 	 2,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 8,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 15,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_D10V_10_PCREL_L",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0x07f8000,		/* Src_mask.  */
 	 0x07f8000,		/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_D10V_16,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 1,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_D10V_16",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffff,		/* Src_mask.  */
 	 0xffff,		/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* An 18 bit absolute relocation, right shifted 2.  */
   HOWTO (R_D10V_18,		/* Type.  */
 	 2,			/* Rightshift.  */
-	 1,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_D10V_18",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffff,		/* Src_mask.  */
 	 0xffff,		/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* A relative 18 bit relocation, right shifted by 2.  */
   HOWTO (R_D10V_18_PCREL,	/* Type.  */
 	 2,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_D10V_18_PCREL",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffff,		/* Src_mask.  */
 	 0xffff,		/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_D10V_32,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_D10V_32",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Src_mask.  */
 	 0xffffffff,		/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_D10V_GNU_VTINHERIT,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 NULL,			/* Special_function.  */
 	 "R_D10V_GNU_VTINHERIT",/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_D10V_GNU_VTENTRY,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 _bfd_elf_rel_vtable_reloc_fn,  /* Special_function.  */
 	 "R_D10V_GNU_VTENTRY",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 };
 
 /* Map BFD reloc types to D10V ELF reloc types.  */
@@ -220,7 +220,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an D10V ELF reloc.  */
 
-static bfd_boolean
+static bool
 d10v_info_to_howto_rel (bfd *abfd,
 			arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
@@ -234,10 +234,10 @@ d10v_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_d10v_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 static asection *
@@ -262,7 +262,7 @@ elf32_d10v_gc_mark_hook (asection *sec,
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 elf32_d10v_check_relocs (bfd *abfd,
 			 struct bfd_link_info *info,
 			 asection *sec,
@@ -274,7 +274,7 @@ elf32_d10v_check_relocs (bfd *abfd,
   const Elf_Internal_Rela *rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -302,19 +302,19 @@ elf32_d10v_check_relocs (bfd *abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_D10V_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_D10V_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static bfd_vma
@@ -324,15 +324,15 @@ extract_rel_addend (bfd *abfd,
 {
   bfd_vma insn, val;
 
-  switch (howto->size)
+  switch (bfd_get_reloc_size (howto))
     {
-    case 0:
+    case 1:
       insn = bfd_get_8 (abfd, where);
       break;
-    case 1:
+    case 2:
       insn = bfd_get_16 (abfd, where);
       break;
-    case 2:
+    case 4:
       insn = bfd_get_32 (abfd, where);
       break;
     default:
@@ -362,19 +362,19 @@ insert_rel_addend (bfd *abfd,
 
   addend = (addend >> howto->rightshift << howto->bitpos) & howto->dst_mask;
   insn = ~howto->dst_mask;
-  switch (howto->size)
+  switch (bfd_get_reloc_size (howto))
     {
-    case 0:
+    case 1:
       insn &= bfd_get_8 (abfd, where);
       insn |= addend;
       bfd_put_8 (abfd, insn, where);
       break;
-    case 1:
+    case 2:
       insn &= bfd_get_16 (abfd, where);
       insn |= addend;
       bfd_put_16 (abfd, insn, where);
       break;
-    case 2:
+    case 4:
       insn &= bfd_get_32 (abfd, where);
       insn |= addend;
       bfd_put_32 (abfd, insn, where);
@@ -386,7 +386,7 @@ insert_rel_addend (bfd *abfd,
 
 /* Relocate a D10V ELF section.  */
 
-static bfd_boolean
+static int
 elf32_d10v_relocate_section (bfd *output_bfd,
 			     struct bfd_link_info *info,
 			     bfd *input_bfd,
@@ -460,7 +460,7 @@ elf32_d10v_relocate_section (bfd *output
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -470,7 +470,8 @@ elf32_d10v_relocate_section (bfd *output
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_D10V_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -503,7 +504,7 @@ elf32_d10v_relocate_section (bfd *output
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -530,7 +531,7 @@ elf32_d10v_relocate_section (bfd *output
 	}
     }
 
-  return TRUE;
+  return true;
 }
 #define ELF_ARCH		bfd_arch_d10v
 #define ELF_MACHINE_CODE	EM_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.20200303/bfd/elf32-d30v.c ./bfd/elf32-d30v.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-d30v.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-d30v.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* D30V-specific support for 32-bit ELF
-   Copyright (C) 1997-2019 Free Software Foundation, Inc.
+   Copyright (C) 1997-2025 Free Software Foundation, Inc.
    Contributed by Martin Hunt (hunt@cygnus.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -254,197 +254,197 @@ static reloc_howto_type elf_d30v_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_D30V_NONE,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 3,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* Special_function.  */
 	 "R_D30V_NONE",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* A 6 bit absolute relocation.  */
   HOWTO (R_D30V_6,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 6,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_bitfield, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* Special_function.  */
 	 "R_D30V_6",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0x3f,			/* Src_mask.  */
 	 0x3f,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* A relative 9 bit relocation, right shifted by 3.  */
   HOWTO (R_D30V_9_PCREL,	/* Type.  */
 	 3,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 6,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_d30v_reloc_21,	/* Special_function.  */
 	 "R_D30V_9_PCREL",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0x3f,			/* Src_mask.  */
 	 0x3f,			/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* A relative 9 bit relocation, right shifted by 3.  */
   HOWTO (R_D30V_9_PCREL_R,	/* Type.  */
 	 3,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 6,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_d30v_reloc_21,	/* Special_function.  */
 	 "R_D30V_9_PCREL_R",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0x3f,			/* Src_mask.  */
 	 0x3f,			/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* An absolute 15 bit relocation, right shifted by 3.  */
   HOWTO (R_D30V_15,		/* Type.  */
 	 3,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 12,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* Special_function.  */
 	 "R_D30V_15",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xfff,			/* Src_mask.  */
 	 0xfff,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* A relative 15 bit relocation, right shifted by 3.  */
   HOWTO (R_D30V_15_PCREL,	/* Type.  */
 	 3,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 12,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_d30v_reloc_21,	/* Special_function.  */
 	 "R_D30V_15_PCREL",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xfff,			/* Src_mask.  */
 	 0xfff,			/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* A relative 15 bit relocation, right shifted by 3.  */
   HOWTO (R_D30V_15_PCREL_R,	/* Type.  */
 	 3,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 12,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_d30v_reloc_21,	/* Special_function.  */
 	 "R_D30V_15_PCREL_R",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xfff,			/* Src_mask.  */
 	 0xfff,			/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* An absolute 21 bit relocation, right shifted by 3.  */
   HOWTO (R_D30V_21,		/* Type.  */
 	 3,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 18,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* Special_function.  */
 	 "R_D30V_21",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0x3ffff,		/* Src_mask.  */
 	 0x3ffff,		/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* A relative 21 bit relocation, right shifted by 3.  */
   HOWTO (R_D30V_21_PCREL,	/* Type.  */
 	 3,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 18,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_d30v_reloc_21,	/* Special_function.  */
 	 "R_D30V_21_PCREL",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0x3ffff,		/* Src_mask.  */
 	 0x3ffff,		/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* A relative 21 bit relocation, right shifted by 3, in the Right container.  */
   HOWTO (R_D30V_21_PCREL_R,	/* Type.  */
 	 3,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 18,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_d30v_reloc_21,	/* Special_function.  */
 	 "R_D30V_21_PCREL_R",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0x3ffff,		/* Src_mask.  */
 	 0x3ffff,		/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* A D30V 32 bit absolute relocation.  */
   HOWTO (R_D30V_32,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 4,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 8,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_bitfield, /* Complain_on_overflow.  */
 	 bfd_elf_d30v_reloc,	/* Special_function.  */
 	 "R_D30V_32",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Src_mask.  */
 	 0xffffffff,		/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* A relative 32 bit relocation.  */
   HOWTO (R_D30V_32_PCREL,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 4,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 8,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 bfd_elf_d30v_reloc,	/* Special_function.  */
 	 "R_D30V_32_PCREL",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Src_mask.  */
 	 0xffffffff,		/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* A regular 32 bit absolute relocation.  */
   HOWTO (R_D30V_32_NORMAL,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_bitfield, /* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* Special_function.  */
 	 "R_D30V_32_NORMAL",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Src_mask.  */
 	 0xffffffff,		/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
 };
 
@@ -508,7 +508,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an D30V ELF reloc (type REL).  */
 
-static bfd_boolean
+static bool
 d30v_info_to_howto_rel (bfd *abfd,
 			arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
@@ -522,15 +522,15 @@ d30v_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_d30v_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* Set the howto pointer for an D30V ELF reloc (type RELA).  */
 
-static bfd_boolean
+static bool
 d30v_info_to_howto_rela (bfd *abfd,
 			 arelent *cache_ptr,
 			 Elf_Internal_Rela *dst)
@@ -544,10 +544,10 @@ d30v_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_d30v_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 #define ELF_ARCH		bfd_arch_d30v
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-dlx.c ./bfd/elf32-dlx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-dlx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-dlx.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* DLX specific support for 32-bit ELF
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -238,157 +238,157 @@ static reloc_howto_type dlx_elf_howto_ta
   /* No relocation.  */
   HOWTO (R_DLX_NONE,		/* Type. */
 	 0,			/* Rightshift.  */
-	 3,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_DLX_NONE",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* 8 bit relocation.  */
   HOWTO (R_DLX_RELOC_8,		/* Type. */
 	 0,			/* Rightshift.  */
-	 0,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 1,			/* Size.  */
 	 8,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_DLX_RELOC_8",	/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xff,			/* Src_mask.  */
 	 0xff,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* 16 bit relocation.  */
   HOWTO (R_DLX_RELOC_16,	/* Type. */
 	 0,			/* Rightshift.  */
-	 1,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_DLX_RELOC_16",	/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xffff,		/* Src_mask.  */
 	 0xffff,		/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* 32 bit relocation.  */
   HOWTO (R_DLX_RELOC_32,	/* Type. */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_DLX_RELOC_32",	/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xffffffff,		/* Src_mask.  */
 	 0xffffffff,		/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_DLX_GNU_VTINHERIT,	/* Type. */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 NULL,			/* Special_function.  */
 	 "R_DLX_GNU_VTINHERIT", /* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_DLX_GNU_VTENTRY,	/* Type. */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 _bfd_elf_rel_vtable_reloc_fn,/* Special_function.  */
 	 "R_DLX_GNU_VTENTRY",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE)			/* PCrel_offset.  */
+	 false)			/* PCrel_offset.  */
 };
 
 /* 16 bit offset for pc-relative branches.  */
 static reloc_howto_type elf_dlx_gnu_rel16_s2 =
   HOWTO (R_DLX_RELOC_16_PCREL,	/* Type. */
 	 0,			/* Rightshift.  */
-	 1,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 elf32_dlx_relocate16,	/* Special_function.  */
 	 "R_DLX_RELOC_16_PCREL",/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xffff,		/* Src_mask.  */
 	 0xffff,		/* Dst_mask.  */
-	 TRUE);			/* PCrel_offset.  */
+	 true);			/* PCrel_offset.  */
 
 /* 26 bit offset for pc-relative branches.  */
 static reloc_howto_type elf_dlx_gnu_rel26_s2 =
   HOWTO (R_DLX_RELOC_26_PCREL,	/* Type. */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 26,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 elf32_dlx_relocate26,	/* Special_function.  */
 	 "R_DLX_RELOC_26_PCREL",/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xffff,		/* Src_mask.  */
 	 0xffff,		/* Dst_mask.  */
-	 TRUE);			/* PCrel_offset.  */
+	 true);			/* PCrel_offset.  */
 
 /* High 16 bits of symbol value.  */
 static reloc_howto_type elf_dlx_reloc_16_hi =
   HOWTO (R_DLX_RELOC_16_HI,	/* Type. */
 	 16,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 _bfd_dlx_elf_hi16_reloc,/* Special_function.  */
 	 "R_DLX_RELOC_16_HI",	/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xFFFF,		/* Src_mask.  */
 	 0xffff,		/* Dst_mask.  */
-	 FALSE);		/* PCrel_offset.  */
+	 false);		/* PCrel_offset.  */
 
   /* Low 16 bits of symbol value.  */
 static reloc_howto_type elf_dlx_reloc_16_lo =
   HOWTO (R_DLX_RELOC_16_LO,	/* Type. */
 	 0,			/* Rightshift.  */
-	 1,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc, /* Special_function.  */
 	 "R_DLX_RELOC_16_LO",	/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xffff,		/* Src_mask.  */
 	 0xffff,		/* Dst_mask.  */
-	 FALSE);		/* PCrel_offset.  */
+	 false);		/* PCrel_offset.  */
 
 /* A mapping from BFD reloc types to DLX ELF reloc types.
    Stolen from elf32-mips.c.
@@ -419,7 +419,7 @@ static const struct elf_reloc_map dlx_re
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 elf32_dlx_check_relocs (bfd *abfd,
 			struct bfd_link_info *info,
 			asection *sec,
@@ -431,7 +431,7 @@ elf32_dlx_check_relocs (bfd *abfd,
   const Elf_Internal_Rela *rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -459,19 +459,19 @@ elf32_dlx_check_relocs (bfd *abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_DLX_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_DLX_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Given a BFD reloc type, return a howto structure.  */
@@ -552,15 +552,15 @@ dlx_rtype_to_howto (bfd *abfd, unsigned
     }
 }
 
-static bfd_boolean
+static bool
 elf32_dlx_info_to_howto (bfd * abfd ATTRIBUTE_UNUSED,
 			 arelent * cache_ptr ATTRIBUTE_UNUSED,
 			 Elf_Internal_Rela * dst ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 elf32_dlx_info_to_howto_rel (bfd *abfd,
 			     arelent *cache_ptr,
 			     Elf_Internal_Rela *dst)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-dlx.h ./bfd/elf32-dlx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-dlx.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-dlx.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* DLX specific support for 32-bit ELF
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 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.20200303/bfd/elf32-epiphany.c ./bfd/elf32-epiphany.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-epiphany.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-epiphany.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Embecosm on behalf of Adapteva, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -42,7 +42,7 @@ struct epiphany_opcode
   unsigned short mask;
 };
 
-static bfd_boolean epiphany_relaxed = FALSE;
+static bool epiphany_relaxed = false;
 
 /* Relocation tables.  */
 static reloc_howto_type epiphany_elf_howto_table [] =
@@ -50,52 +50,52 @@ static reloc_howto_type epiphany_elf_how
 #define AHOW(t,rs,s,bs,pr,bp,co,name,sm,dm)	\
     HOWTO(t,			/* type */ \
 	  rs,			/* rightshift */ \
-	  s,			/* size (0 = byte, 1 = short, 2 = long) */ \
+	  s,			/* size */ \
 	  bs,			/* bitsize */ \
 	  pr,			/* pc_relative */ \
 	  bp,			/* bitpos */ \
 	  co,			/* complain_on_overflow */	       \
 	  bfd_elf_generic_reloc,/* special_function */ \
 	  name,			/* name */ \
-	  FALSE,		/* partial_inplace */ \
+	  false,		/* partial_inplace */ \
 	  sm,			/* src_mask */ \
 	  dm,			/* dst_mask */ \
 	  pr)			/* pcrel_offset */
 
   /* This reloc does nothing.  */
-  AHOW (R_EPIPHANY_NONE,    0, 3,0, FALSE, 0, complain_overflow_dont,	  "R_EPIPHANY_NONE",	    0,		0),
+  AHOW (R_EPIPHANY_NONE,    0, 0,0, false, 0, complain_overflow_dont,	  "R_EPIPHANY_NONE",	    0,		0),
 
   /* 8 bit absolute (not likely) */
-  AHOW (R_EPIPHANY_8,	    0, 0, 8, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_8",	0x000000ff, 0x000000ff),
+  AHOW (R_EPIPHANY_8,	    0, 1, 8, false, 0, complain_overflow_bitfield, "R_EPIPHANY_8",	0x000000ff, 0x000000ff),
   /* 16 bit absolute */
-  AHOW (R_EPIPHANY_16,	    0, 1,16, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_16",	0x0000ffff, 0x00ff1fe0),
+  AHOW (R_EPIPHANY_16,	    0, 2,16, false, 0, complain_overflow_bitfield, "R_EPIPHANY_16",	0x0000ffff, 0x00ff1fe0),
   /* A 32 bit absolute relocation.  */
-  AHOW (R_EPIPHANY_32,	    0, 2,32, FALSE, 0, complain_overflow_dont,	   "R_EPIPHANY_32",	0xffffffff, 0xffffffff),
+  AHOW (R_EPIPHANY_32,	    0, 4,32, false, 0, complain_overflow_dont,	   "R_EPIPHANY_32",	0xffffffff, 0xffffffff),
 
   /*  8 bit relative relocation */
-  HOWTO ( R_EPIPHANY_8_PCREL,  0, 0,  8, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", FALSE, 0x000000ff, 0x000000ff, FALSE),
+  HOWTO ( R_EPIPHANY_8_PCREL,  0, 1,  8, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", false, 0x000000ff, 0x000000ff, false),
   /* 16 bit relative relocation */
-  HOWTO ( R_EPIPHANY_16_PCREL, 0, 1, 16, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", FALSE, 0x000000ff, 0x000000ff, FALSE),
+  HOWTO ( R_EPIPHANY_16_PCREL, 0, 2, 16, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", false, 0x000000ff, 0x000000ff, false),
   /* 32 bit relative relocation */
-  HOWTO ( R_EPIPHANY_32_PCREL, 0, 2, 32, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", FALSE, 0x000000ff, 0x000000ff, FALSE),
+  HOWTO ( R_EPIPHANY_32_PCREL, 0, 4, 32, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_EPIPHANY_8_PCREL", false, 0x000000ff, 0x000000ff, false),
 
   /* 8 bit pc-relative relocation */
-  AHOW (R_EPIPHANY_SIMM8,   1, 0, 8,  TRUE, 8, complain_overflow_signed,   "R_EPIPHANY_SIMM8",	 0x000000ff, 0x0000ff00),
+  AHOW (R_EPIPHANY_SIMM8,   1, 1, 8,  true, 8, complain_overflow_signed,   "R_EPIPHANY_SIMM8",	 0x000000ff, 0x0000ff00),
   /* 24 bit pc-relative relocation */
-  AHOW (R_EPIPHANY_SIMM24,  1, 2,24,  TRUE, 8, complain_overflow_signed,   "R_EPIPHANY_SIMM24",	 0x00ffffff, 0xffffff00),
+  AHOW (R_EPIPHANY_SIMM24,  1, 4,24,  true, 8, complain_overflow_signed,   "R_EPIPHANY_SIMM24",	 0x00ffffff, 0xffffff00),
 
   /* %HIGH(EA) */
-  AHOW (R_EPIPHANY_HIGH,    0, 2,16, FALSE, 0, complain_overflow_dont,	   "R_EPIPHANY_HIGH",	 0x0ff01fe0, 0x0ff01fe0),
+  AHOW (R_EPIPHANY_HIGH,    0, 4,16, false, 0, complain_overflow_dont,	   "R_EPIPHANY_HIGH",	 0x0ff01fe0, 0x0ff01fe0),
 
   /* %LOW(EA) */
-  AHOW (R_EPIPHANY_LOW,	    0, 2,16, FALSE, 0, complain_overflow_dont,	"R_EPIPHANY_LOW",     0x0ff01fe0, 0x0ff01fe0),
+  AHOW (R_EPIPHANY_LOW,	    0, 4,16, false, 0, complain_overflow_dont,	"R_EPIPHANY_LOW",     0x0ff01fe0, 0x0ff01fe0),
 
   /* simm11 */
-  AHOW (R_EPIPHANY_SIMM11,  0, 2,11, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_SIMM11",	 0x00ff0380, 0x00ff0380),
+  AHOW (R_EPIPHANY_SIMM11,  0, 4,11, false, 0, complain_overflow_bitfield, "R_EPIPHANY_SIMM11",	 0x00ff0380, 0x00ff0380),
   /* imm12 - sign-magnitude */
-  AHOW (R_EPIPHANY_IMM11,   0, 2,11, FALSE, 0, complain_overflow_bitfield, "R_EPIPHANY_IMM12",	 0x00ff0380, 0x00ff0380),
+  AHOW (R_EPIPHANY_IMM11,   0, 4,11, false, 0, complain_overflow_bitfield, "R_EPIPHANY_IMM12",	 0x00ff0380, 0x00ff0380),
   /* imm8 */
-  AHOW (R_EPIPHANY_IMM8,    0, 1, 8, FALSE, 8, complain_overflow_signed,   "R_EPIPHANY_IMM8",	 0x0000ff00, 0x0000ff00)
+  AHOW (R_EPIPHANY_IMM8,    0, 2, 8, false, 8, complain_overflow_signed,   "R_EPIPHANY_IMM8",	 0x0000ff00, 0x0000ff00)
 
 
 };
@@ -175,10 +175,10 @@ epiphany_reloc_name_lookup (bfd *abfd AT
 /* This function handles relaxing for the epiphany.
    Dummy placeholder for future optimizations.  */
 
-static bfd_boolean
+static bool
 epiphany_elf_relax_section (bfd *abfd, asection *sec,
 			    struct bfd_link_info *link_info,
-			    bfd_boolean *again)
+			    bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -189,34 +189,35 @@ epiphany_elf_relax_section (bfd *abfd, a
   static unsigned long page_start = 0;
   static unsigned long page_end = 0;
   static unsigned int pass = 0;
-  static bfd_boolean new_pass = FALSE;
-  static bfd_boolean changed = FALSE;
+  static bool new_pass = false;
+  static bool changed = false;
   struct misc misc ATTRIBUTE_UNUSED;
   asection *stab;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   if (first_section == NULL)
     {
-      epiphany_relaxed = TRUE;
+      epiphany_relaxed = true;
       first_section = sec;
     }
 
   if (first_section == sec)
     {
       pass++;
-      new_pass = TRUE;
+      new_pass = true;
     }
 
   /* We don't have to do anything for a relocatable link,
      if this section does not have relocs, or if this is
      not a code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -278,8 +279,8 @@ epiphany_elf_relax_section (bfd *abfd, a
       if (new_pass)
 	{
 	  pass = 1;
-	  new_pass = FALSE;
-	  changed = TRUE; /* Pre-initialize to break out of pass 1.  */
+	  new_pass = false;
+	  changed = true; /* Pre-initialize to break out of pass 1.  */
 	  search_addr = 0xFFFFFFFF;
 	}
 
@@ -292,15 +293,15 @@ epiphany_elf_relax_section (bfd *abfd, a
 	    search_addr = BASEADDR (sec);
 
 	  /* Found a page => more work to do.  */
-	  *again = TRUE;
+	  *again = true;
 	}
     }
   else
     {
       if (new_pass)
 	{
-	  new_pass = FALSE;
-	  changed = FALSE;
+	  new_pass = false;
+	  changed = false;
 	  page_start = PAGENO (search_addr);
 	  page_end = page_start | 0x00003FFF;
 	}
@@ -313,9 +314,9 @@ epiphany_elf_relax_section (bfd *abfd, a
 	  if (!epiphany_elf_relax_section_page (abfd, sec, &changed, &misc,
 						page_start, page_end))
 #endif
-	    return FALSE;
+	    return false;
 	}
-      *again = TRUE;
+      *again = true;
     }
 
   /* Perform some house keeping after relaxing the section.  */
@@ -341,28 +342,24 @@ 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;
+  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;
+  return false;
 }
 
 /* Set the howto pointer for a EPIPHANY ELF reloc.  */
 
-static bfd_boolean
+static bool
 epiphany_info_to_howto_rela (bfd * abfd,
 			     arelent * cache_ptr,
 			     Elf_Internal_Rela * dst)
@@ -376,10 +373,10 @@ epiphany_info_to_howto_rela (bfd * abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & epiphany_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 /* Perform a single relocation.
@@ -472,7 +469,7 @@ epiphany_final_link_relocate (reloc_howt
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 epiphany_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 			       struct bfd_link_info *info,
 			       bfd *input_bfd,
@@ -522,9 +519,9 @@ epiphany_elf_relocate_section (bfd *outp
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean unresolved_reloc ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool unresolved_reloc ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -536,7 +533,8 @@ epiphany_elf_relocate_section (bfd *outp
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_EPIPHANY_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -559,7 +557,7 @@ epiphany_elf_relocate_section (bfd *outp
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -588,7 +586,7 @@ epiphany_elf_relocate_section (bfd *outp
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We only have a little-endian 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.20200303/bfd/elf32-fr30.c ./bfd/elf32-fr30.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-fr30.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-fr30.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* FR30-specific support for 32-bit ELF.
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -37,196 +37,196 @@ static reloc_howto_type fr30_elf_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_FR30_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FR30_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_FR30_8,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FR30_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x0ff0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 20 bit absolute relocation.  */
   HOWTO (R_FR30_20,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 20,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 fr30_elf_i20_reloc,	/* special_function */
 	 "R_FR30_20",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00f0ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_FR30_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FR30_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit into 48 bits absolute relocation.  */
   HOWTO (R_FR30_48,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 fr30_elf_i32_reloc,	/* special_function */
 	 "R_FR30_48",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 6 bit absolute relocation.  */
   HOWTO (R_FR30_6_IN_4,		/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FR30_6_IN_4",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x00f0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_FR30_8_IN_8,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,/* special_function */
 	 "R_FR30_8_IN_8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x0ff0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 9 bit absolute relocation.  */
   HOWTO (R_FR30_9_IN_8,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 9,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,/* special_function */
 	 "R_FR30_9_IN_8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x0ff0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 10 bit absolute relocation.  */
   HOWTO (R_FR30_10_IN_8,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,/* special_function */
 	 "R_FR30_10_IN_8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x0ff0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A PC relative 9 bit relocation, right shifted by 1.  */
   HOWTO (R_FR30_9_PCREL,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 9,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_FR30_9_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A PC relative 12 bit relocation, right shifted by 1.  */
   HOWTO (R_FR30_12_PCREL,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 12,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_FR30_12_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x07ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_FR30_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_FR30_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_FR30_GNU_VTENTRY,	 /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_FR30_GNU_VTENTRY",	 /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* Utility to actually perform an R_FR30_20 reloc.  */
@@ -367,7 +367,7 @@ fr30_reloc_name_lookup (bfd *abfd ATTRIB
 
 /* Set the howto pointer for an FR30 ELF reloc.  */
 
-static bfd_boolean
+static bool
 fr30_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
 			 arelent *cache_ptr,
 			 Elf_Internal_Rela *dst)
@@ -381,10 +381,10 @@ fr30_info_to_howto_rela (bfd *abfd ATTRI
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & fr30_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 /* Perform a single relocation.  By default we use the standard BFD
@@ -497,7 +497,7 @@ fr30_final_link_relocate (reloc_howto_ty
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 fr30_elf_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -553,7 +553,7 @@ fr30_elf_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -565,7 +565,8 @@ fr30_elf_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_FR30_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -587,7 +588,7 @@ fr30_elf_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -613,7 +614,7 @@ fr30_elf_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -641,7 +642,7 @@ fr30_elf_gc_mark_hook (asection *sec,
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 fr30_elf_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
@@ -653,7 +654,7 @@ fr30_elf_check_relocs (bfd *abfd,
   const Elf_Internal_Rela *rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -681,19 +682,19 @@ fr30_elf_check_relocs (bfd *abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_FR30_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_FR30_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 #define ELF_ARCH		bfd_arch_fr30
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-frv.c ./bfd/elf32-frv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-frv.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-frv.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* FRV-specific support for 32-bit ELF.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -35,722 +35,722 @@ static reloc_howto_type elf32_frv_howto_
   /* This reloc does nothing.  */
   HOWTO (R_FRV_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_FRV_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit pc-relative relocation.  */
   HOWTO (R_FRV_LABEL16,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_LABEL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 24-bit pc-relative relocation.  */
   HOWTO (R_FRV_LABEL24,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_LABEL24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x7e03ffff,		/* src_mask */
 	 0x7e03ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_FRV_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_LO16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FRV_HI16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_HI16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FRV_GPREL12,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GPREL12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FRV_GPRELU12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GPRELU12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0x3f03f,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FRV_GPREL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FRV_GPRELHI,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GPRELHI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FRV_GPRELLO,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GPRELLO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the address of
      the symbol.  */
   HOWTO (R_FRV_GOT12,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOT12",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the address of the
      symbol.  */
   HOWTO (R_FRV_GOTHI,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTHI",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the address of the
      symbol.  */
   HOWTO (R_FRV_GOTLO,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTLO",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The 32-bit address of the canonical descriptor of a function.  */
   HOWTO (R_FRV_FUNCDESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the address of
      canonical descriptor of a function.  */
   HOWTO (R_FRV_FUNCDESC_GOT12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC_GOT12", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the address of the
      canonical descriptor of a function.  */
   HOWTO (R_FRV_FUNCDESC_GOTHI,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC_GOTHI", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the address of the
      canonical descriptor of a function.  */
   HOWTO (R_FRV_FUNCDESC_GOTLO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC_GOTLO", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The 64-bit descriptor of a function.  */
   HOWTO (R_FRV_FUNCDESC_VALUE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC_VALUE", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the address of
      canonical descriptor of a function.  */
   HOWTO (R_FRV_FUNCDESC_GOTOFF12, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC_GOTOFF12", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the address of the
      canonical descriptor of a function.  */
   HOWTO (R_FRV_FUNCDESC_GOTOFFHI, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC_GOTOFFHI", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the address of the
      canonical descriptor of a function.  */
   HOWTO (R_FRV_FUNCDESC_GOTOFFLO, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC_GOTOFFLO", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the address of
      the symbol.  */
   HOWTO (R_FRV_GOTOFF12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTOFF12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the address of the
      symbol.  */
   HOWTO (R_FRV_GOTOFFHI,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTOFFHI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the address of the
      symbol.  */
   HOWTO (R_FRV_GOTOFFLO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTOFFLO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 24-bit pc-relative relocation referencing the TLS PLT entry for
      a thread-local symbol.  If the symbol number is 0, it refers to
      the module.  */
   HOWTO (R_FRV_GETTLSOFF,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GETTLSOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x7e03ffff,		/* src_mask */
 	 0x7e03ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 64-bit TLS descriptor for a symbol.  This relocation is only
      valid as a REL, dynamic relocation.  */
   HOWTO (R_FRV_TLSDESC_VALUE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSDESC_VALUE", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the TLS
      descriptor of the symbol.  */
   HOWTO (R_FRV_GOTTLSDESC12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTTLSDESC12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the TLS descriptor of the
      symbol.  */
   HOWTO (R_FRV_GOTTLSDESCHI,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTTLSDESCHI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the TLS descriptor of the
      symbol.  */
   HOWTO (R_FRV_GOTTLSDESCLO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTTLSDESCLO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the offset from the module base
      address to the thread-local symbol address.  */
   HOWTO (R_FRV_TLSMOFF12,	 /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSMOFF12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the offset from the module base address to
      the thread-local symbol address.  */
   HOWTO (R_FRV_TLSMOFFHI,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSMOFFHI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the offset from the module base address to
      the thread-local symbol address.  */
   HOWTO (R_FRV_TLSMOFFLO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSMOFFLO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12-bit signed operand with the GOT offset for the TLSOFF entry
      for a symbol.  */
   HOWTO (R_FRV_GOTTLSOFF12,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTTLSOFF12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xfff,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The upper 16 bits of the GOT offset for the TLSOFF entry for a
      symbol.  */
   HOWTO (R_FRV_GOTTLSOFFHI,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTTLSOFFHI",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The lower 16 bits of the GOT offset for the TLSOFF entry for a
      symbol.  */
   HOWTO (R_FRV_GOTTLSOFFLO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GOTTLSOFFLO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The 32-bit offset from the thread pointer (not the module base
      address) to a thread-local symbol.  */
   HOWTO (R_FRV_TLSOFF,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An annotation for linker relaxation, that denotes the
      symbol+addend whose TLS descriptor is referenced by the sum of
      the two input registers of an ldd instruction.  */
   HOWTO (R_FRV_TLSDESC_RELAX,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSDESC_RELAX",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An annotation for linker relaxation, that denotes the
      symbol+addend whose TLS resolver entry point is given by the sum
      of the two register operands of an calll instruction.  */
   HOWTO (R_FRV_GETTLSOFF_RELAX,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_GETTLSOFF_RELAX", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An annotation for linker relaxation, that denotes the
      symbol+addend whose TLS offset GOT entry is given by the sum of
      the two input registers of an ld instruction.  */
   HOWTO (R_FRV_TLSOFF_RELAX,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSOFF_RELAX",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32-bit offset from the module base address to
      the thread-local symbol address.  */
   HOWTO (R_FRV_TLSMOFF,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSMOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* GNU extension to record C++ vtable hierarchy.  */
 static reloc_howto_type elf32_frv_vtinherit_howto =
   HOWTO (R_FRV_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_FRV_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
 static reloc_howto_type elf32_frv_vtentry_howto =
   HOWTO (R_FRV_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_FRV_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* The following 3 relocations are REL.  The only difference to the
-   entries in the table above are that partial_inplace is TRUE.  */
+   entries in the table above are that partial_inplace is true.  */
 static reloc_howto_type elf32_frv_rel_32_howto =
   HOWTO (R_FRV_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 static reloc_howto_type elf32_frv_rel_funcdesc_howto =
   HOWTO (R_FRV_FUNCDESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 static reloc_howto_type elf32_frv_rel_funcdesc_value_howto =
   HOWTO (R_FRV_FUNCDESC_VALUE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_FUNCDESC_VALUE", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 static reloc_howto_type elf32_frv_rel_tlsdesc_value_howto =
   /* A 64-bit TLS descriptor for a symbol.  The first word resolves to
@@ -766,34 +766,34 @@ static reloc_howto_type elf32_frv_rel_tl
      thread.  */
   HOWTO (R_FRV_TLSDESC_VALUE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSDESC_VALUE", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 static reloc_howto_type elf32_frv_rel_tlsoff_howto =
   /* The 32-bit offset from the thread pointer (not the module base
      address) to a thread-local symbol.  */
   HOWTO (R_FRV_TLSOFF,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FRV_TLSOFF",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 
 
@@ -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)
@@ -950,8 +951,7 @@ frvfdpic_elf_link_hash_table_create (bfd
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
 				      _bfd_elf_link_hash_newfunc,
-				      sizeof (struct elf_link_hash_entry),
-				      FRV_ELF_DATA))
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1291,7 +1291,7 @@ _frvfdpic_osec_to_segment (bfd *output_b
   return (p != NULL) ? p - elf_tdata (output_bfd)->phdr : -1;
 }
 
-inline static bfd_boolean
+inline static bool
 _frvfdpic_osec_readonly_p (bfd *output_bfd, asection *osec)
 {
   unsigned seg = _frvfdpic_osec_to_segment (output_bfd, osec);
@@ -1317,7 +1317,7 @@ tls_biased_base (struct bfd_link_info *i
 /* Generate relocations for GOT entries, function descriptors, and
    code for PLT and lazy PLT entries.  */
 
-inline static bfd_boolean
+inline static bool
 _frvfdpic_emit_got_relocs_plt_entries (struct frvfdpic_relocs_info *entry,
 				       bfd *output_bfd,
 				       struct bfd_link_info *info,
@@ -1330,7 +1330,7 @@ _frvfdpic_emit_got_relocs_plt_entries (s
   int dynindx = -1;
 
   if (entry->done)
-    return TRUE;
+    return true;
   entry->done = 1;
 
   if (entry->got_entry || entry->fdgot_entry || entry->fd_entry
@@ -1453,7 +1453,7 @@ _frvfdpic_emit_got_relocs_plt_entries (s
 		     elf_hash_table (info)->dynobj,
 		     frvfdpic_got_section (info),
 		     entry->fdgot_entry);
-		  return FALSE;
+		  return false;
 		}
 	    }
 	  else
@@ -1604,7 +1604,7 @@ _frvfdpic_emit_got_relocs_plt_entries (s
 		 elf_hash_table (info)->dynobj,
 		 frvfdpic_got_section (info),
 		 entry->fd_entry);
-	      return FALSE;
+	      return false;
 	    }
 
 	  fd_lazy_rel_offset = ofst;
@@ -1787,8 +1787,8 @@ _frvfdpic_emit_got_relocs_plt_entries (s
 		{
 		  (*info->callbacks->undefined_symbol)
 		    (info, "TLS section", elf_hash_table (info)->dynobj,
-		     frvfdpic_got_section (info), entry->tlsoff_entry, TRUE);
-		  return FALSE;
+		     frvfdpic_got_section (info), entry->tlsoff_entry, true);
+		  return false;
 		}
 	      idx = elf_section_data (elf_hash_table (info)->tls_sec)->dynindx;
 	      ad += FRVFDPIC_TLS_BIAS;
@@ -1901,8 +1901,8 @@ _frvfdpic_emit_got_relocs_plt_entries (s
 		{
 		  (*info->callbacks->undefined_symbol)
 		    (info, "TLS section", elf_hash_table (info)->dynobj,
-		     frvfdpic_got_section (info), entry->tlsdesc_entry, TRUE);
-		  return FALSE;
+		     frvfdpic_got_section (info), entry->tlsdesc_entry, true);
+		  return false;
 		}
 	      idx = elf_section_data (elf_hash_table (info)->tls_sec)->dynindx;
 	      ad += FRVFDPIC_TLS_BIAS;
@@ -2115,7 +2115,7 @@ _frvfdpic_emit_got_relocs_plt_entries (s
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Handle an FRV small data reloc.  */
@@ -2132,7 +2132,7 @@ elf32_frv_relocate_gprel12 (struct bfd_l
   bfd_vma gp;
   struct bfd_link_hash_entry *h;
 
-  h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true);
 
   gp = (h->u.def.value
 	+ h->u.def.section->output_section->vma
@@ -2170,7 +2170,7 @@ elf32_frv_relocate_gprelu12 (struct bfd_
   struct bfd_link_hash_entry *h;
   bfd_vma mask;
 
-  h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true);
 
   gp = (h->u.def.value
 	+ h->u.def.section->output_section->vma
@@ -2297,7 +2297,7 @@ elf32_frv_relocate_gprelhi (struct bfd_l
   bfd_vma gp;
   struct bfd_link_hash_entry *h;
 
-  h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true);
 
   gp = (h->u.def.value
 	+ h->u.def.section->output_section->vma
@@ -2330,7 +2330,7 @@ elf32_frv_relocate_gprello (struct bfd_l
   bfd_vma gp;
   struct bfd_link_hash_entry *h;
 
-  h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true);
 
   gp = (h->u.def.value
 	+ h->u.def.section->output_section->vma
@@ -2533,7 +2533,7 @@ frv_reloc_name_lookup (bfd *abfd ATTRIBU
 
 /* Set the howto pointer for an FRV ELF reloc.  */
 
-static bfd_boolean
+static bool
 frv_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
 			arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
@@ -2558,17 +2558,17 @@ frv_info_to_howto_rela (bfd *abfd ATTRIB
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      abfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       cache_ptr->howto = & elf32_frv_howto_table [r_type];
       break;
     }
-  return TRUE;
+  return true;
 }
 
 /* Set the howto pointer for an FRV ELF REL reloc.  */
 
-static bfd_boolean
+static bool
 frvfdpic_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
 			    arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
@@ -2599,9 +2599,9 @@ frvfdpic_info_to_howto_rel (bfd *abfd AT
 
     default:
       cache_ptr->howto = NULL;
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Perform a single relocation.  By default we use the standard BFD
@@ -2651,7 +2651,7 @@ frv_final_link_relocate (reloc_howto_typ
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 elf32_frv_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -2712,7 +2712,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);
@@ -2740,8 +2740,8 @@ elf32_frv_relocate_section (bfd *output_
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
-	  bfd_boolean unresolved_reloc;
+	  bool warned, ignored;
+	  bool unresolved_reloc;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2753,7 +2753,8 @@ elf32_frv_relocate_section (bfd *output_
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_FRV_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -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,
@@ -2818,7 +2822,7 @@ elf32_frv_relocate_section (bfd *output_
 						     (info), input_bfd, r_symndx,
 						     orig_addend, INSERT);
 	  if (! picrel)
-	    return FALSE;
+	    return false;
 
 	  if (!_frvfdpic_emit_got_relocs_plt_entries (picrel, output_bfd, info,
 						      osec, sym,
@@ -2829,7 +2833,7 @@ elf32_frv_relocate_section (bfd *output_
 		(_("%H: relocation to `%s+%v'"
 		   " may have caused the error above\n"),
 		 input_bfd, input_section, rel->r_offset, name, rel->r_addend);
-	      return FALSE;
+	      return false;
 	    }
 
 	  break;
@@ -2846,7 +2850,7 @@ elf32_frv_relocate_section (bfd *output_
 		(_("%H: relocation references symbol"
 		   " not defined in the module\n"),
 		 input_bfd, input_section, rel->r_offset);
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 	}
@@ -2921,7 +2925,7 @@ elf32_frv_relocate_section (bfd *output_
 		info->callbacks->einfo
 		  (_("%H: R_FRV_GETTLSOFF not applied to a call instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_GETTLSOFF_LOCAL_EXEC_P (info, picrel,
@@ -2963,7 +2967,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_GOTTLSDESC12"
 		     " not applied to an lddi instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
@@ -3034,7 +3038,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_GOTTLSDESCHI"
 		     " not applied to a sethi instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
@@ -3071,7 +3075,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_GOTTLSDESCLO"
 		     " not applied to a setlo or setlos instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
@@ -3118,7 +3122,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_TLSDESC_RELAX"
 		     " not applied to an ldd instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
@@ -3202,7 +3206,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_GETTLSOFF_RELAX"
 		     " not applied to a calll instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_TLSDESC_LOCAL_EXEC_P (info, picrel,
@@ -3256,7 +3260,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_GOTTLSOFF12"
 		     " not applied to an ldi instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_GOTTLSOFF_LOCAL_EXEC_P (info, picrel,
@@ -3286,7 +3290,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_GOTTLSOFFHI"
 		     " not applied to a sethi instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_GOTTLSOFF_LOCAL_EXEC_P (info, picrel,
@@ -3315,7 +3319,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_GOTTLSOFFLO"
 		     " not applied to a setlo or setlos instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_GOTTLSOFF_LOCAL_EXEC_P (info, picrel,
@@ -3345,7 +3349,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_TLSOFF_RELAX"
 		     " not applied to an ld instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (RELAX_GOTTLSOFF_LOCAL_EXEC_P (info, picrel,
@@ -3390,7 +3394,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("%H: R_FRV_TLSMOFFHI"
 		     " not applied to a sethi instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (TLSMOFF_IN_RANGE_FOR_SETLOS_P (relocation + rel->r_addend,
@@ -3417,7 +3421,7 @@ elf32_frv_relocate_section (bfd *output_
 		  (_("R_FRV_TLSMOFFLO"
 		     " not applied to a setlo or setlos instruction\n"),
 		   input_bfd, input_section, rel->r_offset);
-		return FALSE;
+		return false;
 	      }
 
 	    if (TLSMOFF_IN_RANGE_FOR_SETLOS_P (relocation + rel->r_addend,
@@ -3539,7 +3543,7 @@ elf32_frv_relocate_section (bfd *output_
 			     " with nonzero addend\n"),
 			   input_bfd, input_section, rel->r_offset,
 			   "R_FRV_FUNCDESC");
-			return FALSE;
+			return false;
 		      }
 		    dynindx = h->dynindx;
 		  }
@@ -3579,7 +3583,7 @@ elf32_frv_relocate_section (bfd *output_
 			      (_("%H: cannot emit fixups"
 				 " in read-only section\n"),
 			       input_bfd, input_section, rel->r_offset);
-			    return FALSE;
+			    return false;
 			  }
 
 			offset = _bfd_elf_section_offset
@@ -3609,7 +3613,7 @@ elf32_frv_relocate_section (bfd *output_
 			  (_("%H: cannot emit dynamic relocations"
 			     " in read-only section\n"),
 			   input_bfd, input_section, rel->r_offset);
-			return FALSE;
+			return false;
 		      }
 
 		    offset = _bfd_elf_section_offset
@@ -3659,7 +3663,7 @@ elf32_frv_relocate_section (bfd *output_
 			 " with nonzero addend\n"),
 		       input_bfd, input_section, rel->r_offset,
 		       "R_FRV_FUNCDESC_VALUE");
-		    return FALSE;
+		    return false;
 		  }
 		dynindx = h->dynindx;
 	      }
@@ -3699,7 +3703,7 @@ elf32_frv_relocate_section (bfd *output_
 			info->callbacks->einfo
 			  (_("%H: cannot emit fixups in read-only section\n"),
 			   input_bfd, input_section, rel->r_offset);
-			return FALSE;
+			return false;
 		      }
 		    if (!h || h->root.type != bfd_link_hash_undefweak)
 		      {
@@ -3742,7 +3746,7 @@ elf32_frv_relocate_section (bfd *output_
 			  (_("%H: cannot emit dynamic relocations"
 			     " in read-only section\n"),
 			   input_bfd, input_section, rel->r_offset);
-			return FALSE;
+			return false;
 		      }
 
 		    offset = _bfd_elf_section_offset
@@ -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
@@ -3915,7 +3919,7 @@ elf32_frv_relocate_section (bfd *output_
 		 input_bfd, input_section, rel->r_offset, name);
 	    }
 	  if (!silence_segment_error && bfd_link_pic (info))
-	    return FALSE;
+	    return false;
 	  elf_elfheader (output_bfd)->e_flags |= EF_FRV_PIC;
 	}
 
@@ -4038,7 +4042,7 @@ elf32_frv_relocate_section (bfd *output_
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -4064,12 +4068,12 @@ elf32_frv_relocate_section (bfd *output_
 		/* xgettext:c-format */
 		(_("%H: reloc against `%s': %s\n"),
 		 input_bfd, input_section, rel->r_offset, name, msg);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -4096,7 +4100,7 @@ elf32_frv_gc_mark_hook (asection *sec,
 /* Hook called by the linker routine which adds symbols from an object
    file.  We use it to put .comm items in .scomm, and not .comm.  */
 
-static bfd_boolean
+static bool
 elf32_frv_add_symbol_hook (bfd *abfd,
 			   struct bfd_link_info *info,
 			   Elf_Internal_Sym *sym,
@@ -4119,21 +4123,22 @@ 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;
+	    return false;
 	}
 
       *secp = scomm;
       *valp = sym->st_size;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We need dynamic symbols for every section, since segments can
    relocate independently.  */
-static bfd_boolean
+static bool
 _frvfdpic_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
 				    struct bfd_link_info *info
 				    ATTRIBUTE_UNUSED,
@@ -4146,12 +4151,12 @@ _frvfdpic_link_omit_section_dynsym (bfd
       /* If sh_type is yet undecided, assume it could be
 	 SHT_PROGBITS/SHT_NOBITS.  */
     case SHT_NULL:
-      return FALSE;
+      return false;
 
       /* There shouldn't be section relative relocations
 	 against any other section.  */
     default:
-      return TRUE;
+      return true;
     }
 }
 
@@ -4159,7 +4164,7 @@ _frvfdpic_link_omit_section_dynsym (bfd
    is almost entirely copied from
    elflink.c:_bfd_elf_create_got_section().  */
 
-static bfd_boolean
+static bool
 _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags, pltflags;
@@ -4173,7 +4178,7 @@ _frv_create_got_section (bfd *abfd, stru
   /* This function may be called more than once.  */
   s = elf_hash_table (info)->sgot;
   if (s != NULL)
-    return TRUE;
+    return true;
 
   /* Machine specific: although pointers are 32-bits wide, we want the
      GOT to be aligned to a 64-bit boundary, such that function
@@ -4189,7 +4194,7 @@ _frv_create_got_section (bfd *abfd, stru
   elf_hash_table (info)->sgot = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (bed->want_got_sym)
     {
@@ -4200,12 +4205,12 @@ _frv_create_got_section (bfd *abfd, stru
       h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_");
       elf_hash_table (info)->hgot = h;
       if (h == NULL)
-	return FALSE;
+	return false;
 
       /* Machine-specific: we want the symbol for executables as
 	 well.  */
       if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   /* The first bit of the global offset table is the header.  */
@@ -4220,21 +4225,21 @@ _frv_create_got_section (bfd *abfd, stru
 						     frvfdpic_relocs_info_eq,
 						     (htab_del) NULL);
       if (! frvfdpic_relocs_info (info))
-	return FALSE;
+	return false;
 
       s = bfd_make_section_anyway_with_flags (abfd, ".rel.got",
 					      (flags | SEC_READONLY));
       elf_hash_table (info)->srelgot = s;
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
 
       /* Machine-specific.  */
       s = bfd_make_section_anyway_with_flags (abfd, ".rofixup",
 					      (flags | SEC_READONLY));
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
 
       frvfdpic_gotfixup_section (info) = s;
       offset = -2048;
@@ -4251,9 +4256,9 @@ _frv_create_got_section (bfd *abfd, stru
      linker script will override it.  */
   bh = NULL;
   if (!(_bfd_generic_link_add_one_symbol
-	(info, abfd, "_gp", flags, s, offset, (const char *) NULL, FALSE,
+	(info, abfd, "_gp", flags, s, offset, (const char *) NULL, false,
 	 bed->collect, &bh)))
-    return FALSE;
+    return false;
   h = (struct elf_link_hash_entry *) bh;
   h->def_regular = 1;
   h->type = STT_OBJECT;
@@ -4261,10 +4266,10 @@ _frv_create_got_section (bfd *abfd, stru
 
   /* Machine-specific: we want the symbol for executables as well.  */
   if (IS_FDPIC (abfd) && ! bfd_elf_link_record_dynamic_symbol (info, h))
-    return FALSE;
+    return false;
 
   if (!IS_FDPIC (abfd))
-    return TRUE;
+    return true;
 
   /* FDPIC supports Thread Local Storage, and this may require a
      procedure linkage table for TLS PLT entries.  */
@@ -4282,7 +4287,7 @@ _frv_create_got_section (bfd *abfd, stru
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
   /* FRV-specific: remember it.  */
   frvfdpic_plt_section (info) = s;
 
@@ -4294,7 +4299,7 @@ _frv_create_got_section (bfd *abfd, stru
 				       "_PROCEDURE_LINKAGE_TABLE_");
       elf_hash_table (info)->hplt = h;
       if (h == NULL)
-	return FALSE;
+	return false;
     }
 
   /* FRV-specific: we want rel relocations for the plt.  */
@@ -4302,17 +4307,17 @@ _frv_create_got_section (bfd *abfd, stru
 					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   /* FRV-specific: remember it.  */
   frvfdpic_pltrel_section (info) = s;
 
-  return TRUE;
+  return true;
 }
 
 /* Make sure the got and plt sections exist, and that our pointers in
    the link hash table point to them.  */
 
-static bfd_boolean
+static bool
 elf32_frvfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   /* This is mostly copied from
@@ -4330,7 +4335,7 @@ elf32_frvfdpic_create_dynamic_sections (
   /* FRV-specific: we want to create the GOT and the PLT in the FRV
      way.  */
   if (! _frv_create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   /* FRV-specific: make sure we created everything we wanted.  */
   BFD_ASSERT (frvfdpic_got_section (info) && frvfdpic_gotrel_section (info)
@@ -4349,7 +4354,7 @@ elf32_frvfdpic_create_dynamic_sections (
       s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
 					      SEC_ALLOC | SEC_LINKER_CREATED);
       if (s == NULL)
-	return FALSE;
+	return false;
 
       /* The .rel[a].bss section holds copy relocs.  This section is not
      normally needed.  We need to create it here, though, so that the
@@ -4370,11 +4375,11 @@ elf32_frvfdpic_create_dynamic_sections (
 						  flags | SEC_READONLY);
 	  if (s == NULL
 	      || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Compute the total GOT and PLT size required by each symbol in each
@@ -4450,7 +4455,7 @@ _frvfdpic_count_nontls_entries (struct f
 static void
 _frvfdpic_count_tls_entries (struct frvfdpic_relocs_info *entry,
 			     struct _frvfdpic_dynamic_got_info *dinfo,
-			     bfd_boolean subtract)
+			     bool subtract)
 {
   const int l = subtract ? -1 : 1;
 
@@ -4495,7 +4500,7 @@ _frvfdpic_count_tls_entries (struct frvf
 static void
 _frvfdpic_count_relocs_fixups (struct frvfdpic_relocs_info *entry,
 			       struct _frvfdpic_dynamic_got_info *dinfo,
-			       bfd_boolean subtract)
+			       bool subtract)
 {
   bfd_vma relocs = 0, fixups = 0, tlsrets = 0;
 
@@ -4566,9 +4571,9 @@ _frvfdpic_count_relocs_fixups (struct fr
 static void
 _frvfdpic_relax_tls_entries (struct frvfdpic_relocs_info *entry,
 			     struct _frvfdpic_dynamic_got_info *dinfo,
-			     bfd_boolean relaxing)
+			     bool relaxing)
 {
-  bfd_boolean changed = ! relaxing;
+  bool changed = ! relaxing;
 
   BFD_ASSERT (bfd_link_executable (dinfo->info)
 	      || (dinfo->info->flags & DF_STATIC_TLS));
@@ -4577,9 +4582,9 @@ _frvfdpic_relax_tls_entries (struct frvf
     {
       if (! changed)
 	{
-	  _frvfdpic_count_relocs_fixups (entry, dinfo, TRUE);
-	  _frvfdpic_count_tls_entries (entry, dinfo, TRUE);
-	  changed = TRUE;
+	  _frvfdpic_count_relocs_fixups (entry, dinfo, true);
+	  _frvfdpic_count_tls_entries (entry, dinfo, true);
+	  changed = true;
 	}
 
       /* When linking an executable, we can always decay GOTTLSDESC to
@@ -4633,9 +4638,9 @@ _frvfdpic_relax_tls_entries (struct frvf
     {
       if (! changed)
 	{
-	  _frvfdpic_count_relocs_fixups (entry, dinfo, TRUE);
-	  _frvfdpic_count_tls_entries (entry, dinfo, TRUE);
-	  changed = TRUE;
+	  _frvfdpic_count_relocs_fixups (entry, dinfo, true);
+	  _frvfdpic_count_tls_entries (entry, dinfo, true);
+	  changed = true;
 	}
 
       entry->tlsplt =
@@ -4655,9 +4660,9 @@ _frvfdpic_relax_tls_entries (struct frvf
     {
       if (! changed)
 	{
-	  _frvfdpic_count_relocs_fixups (entry, dinfo, TRUE);
-	  _frvfdpic_count_tls_entries (entry, dinfo, TRUE);
-	  changed = TRUE;
+	  _frvfdpic_count_relocs_fixups (entry, dinfo, true);
+	  _frvfdpic_count_tls_entries (entry, dinfo, true);
+	  changed = true;
 	}
 
       entry->tlsoff12 = 1;
@@ -4666,8 +4671,8 @@ _frvfdpic_relax_tls_entries (struct frvf
 
   if (changed)
     {
-      _frvfdpic_count_tls_entries (entry, dinfo, FALSE);
-      _frvfdpic_count_relocs_fixups (entry, dinfo, FALSE);
+      _frvfdpic_count_tls_entries (entry, dinfo, false);
+      _frvfdpic_count_relocs_fixups (entry, dinfo, false);
     }
 
   return;
@@ -4688,11 +4693,11 @@ _frvfdpic_count_got_plt_entries (void **
 
   if (bfd_link_executable (dinfo->info)
       || (dinfo->info->flags & DF_STATIC_TLS))
-    _frvfdpic_relax_tls_entries (entry, dinfo, FALSE);
+    _frvfdpic_relax_tls_entries (entry, dinfo, false);
   else
     {
-      _frvfdpic_count_tls_entries (entry, dinfo, FALSE);
-      _frvfdpic_count_relocs_fixups (entry, dinfo, FALSE);
+      _frvfdpic_count_tls_entries (entry, dinfo, false);
+      _frvfdpic_count_relocs_fixups (entry, dinfo, false);
     }
 
   return 1;
@@ -5209,7 +5214,7 @@ _frvfdpic_resolve_final_relocs_info (voi
    section and the rofixup section.  Assign locations for GOT and PLT
    entries.  */
 
-static bfd_boolean
+static bool
 _frvfdpic_size_got_plt (bfd *output_bfd,
 			struct _frvfdpic_dynamic_got_plt_info *gpinfop)
 {
@@ -5308,7 +5313,8 @@ _frvfdpic_size_got_plt (bfd *output_bfd,
 	(bfd_byte *) bfd_zalloc (dynobj,
 				 frvfdpic_got_section (info)->size);
       if (frvfdpic_got_section (info)->contents == NULL)
-	return FALSE;
+	return false;
+      frvfdpic_got_section (info)->alloced = 1;
     }
 
   if (frvfdpic_gotrel_section (info))
@@ -5327,7 +5333,8 @@ _frvfdpic_size_got_plt (bfd *output_bfd,
 	(bfd_byte *) bfd_zalloc (dynobj,
 				 frvfdpic_gotrel_section (info)->size);
       if (frvfdpic_gotrel_section (info)->contents == NULL)
-	return FALSE;
+	return false;
+      frvfdpic_gotrel_section (info)->alloced = 1;
     }
 
   frvfdpic_gotfixup_section (info)->size = (gpinfop->g.fixups + 1) * 4;
@@ -5339,7 +5346,8 @@ _frvfdpic_size_got_plt (bfd *output_bfd,
 	(bfd_byte *) bfd_zalloc (dynobj,
 				 frvfdpic_gotfixup_section (info)->size);
       if (frvfdpic_gotfixup_section (info)->contents == NULL)
-	return FALSE;
+	return false;
+      frvfdpic_gotfixup_section (info)->alloced = 1;
     }
 
   if (frvfdpic_pltrel_section (info))
@@ -5355,7 +5363,8 @@ _frvfdpic_size_got_plt (bfd *output_bfd,
 	    (bfd_byte *) bfd_zalloc (dynobj,
 				     frvfdpic_pltrel_section (info)->size);
 	  if (frvfdpic_pltrel_section (info)->contents == NULL)
-	    return FALSE;
+	    return false;
+	  frvfdpic_pltrel_section (info)->alloced = 1;
 	}
     }
 
@@ -5408,25 +5417,27 @@ _frvfdpic_size_got_plt (bfd *output_bfd,
 	    (bfd_byte *) bfd_zalloc (dynobj,
 				     frvfdpic_plt_section (info)->size);
 	  if (frvfdpic_plt_section (info)->contents == NULL)
-	    return FALSE;
+	    return false;
+	  frvfdpic_plt_section (info)->alloced = 1;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf32_frvfdpic_size_dynamic_sections (bfd *output_bfd,
-				      struct bfd_link_info *info)
+static bool
+elf32_frvfdpic_late_size_sections (bfd *output_bfd,
+				   struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
   struct _frvfdpic_dynamic_got_plt_info gpinfo;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -5437,6 +5448,7 @@ elf32_frvfdpic_size_dynamic_sections (bf
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -5461,50 +5473,29 @@ elf32_frvfdpic_size_dynamic_sections (bf
   frvfdpic_dynamic_got_plt_info (info) = bfd_alloc (dynobj, sizeof (gpinfo.g));
 
   if (!_frvfdpic_size_got_plt (output_bfd, &gpinfo))
-    return FALSE;
+    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;
-}
-
-static bfd_boolean
-elf32_frvfdpic_always_size_sections (bfd *output_bfd,
-				     struct bfd_link_info *info)
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, true);
+}
+
+static bool
+elf32_frvfdpic_early_size_sections (bfd *output_bfd,
+				    struct bfd_link_info *info)
 {
   if (!bfd_link_relocatable (info)
       && !bfd_elf_stack_segment_size (output_bfd, info,
 				      "__stacksize", DEFAULT_STACK_SIZE))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Check whether any of the relocations was optimized away, and
    subtract it from the relocation or fixup count.  */
-static bfd_boolean
+static bool
 _frvfdpic_check_discarded_relocs (bfd *abfd, asection *sec,
 				  struct bfd_link_info *info,
-
-				  bfd_boolean *changed)
+				  bool *changed)
 {
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
@@ -5512,7 +5503,7 @@ _frvfdpic_check_discarded_relocs (bfd *a
 
   if ((sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -5557,28 +5548,28 @@ _frvfdpic_check_discarded_relocs (bfd *a
 						 rel->r_addend, NO_INSERT);
 
       if (! picrel)
-	return FALSE;
+	return false;
 
-      *changed = TRUE;
+      *changed = true;
       dinfo = frvfdpic_dynamic_got_plt_info (info);
 
-      _frvfdpic_count_relocs_fixups (picrel, dinfo, TRUE);
+      _frvfdpic_count_relocs_fixups (picrel, dinfo, true);
       if (ELF32_R_TYPE (rel->r_info) == R_FRV_32)
 	picrel->relocs32--;
       else /* we know (ELF32_R_TYPE (rel->r_info) == R_FRV_FUNCDESC) */
 	picrel->relocsfd--;
-      _frvfdpic_count_relocs_fixups (picrel, dinfo, FALSE);
+      _frvfdpic_count_relocs_fixups (picrel, dinfo, false);
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 frvfdpic_elf_discard_info (bfd *ibfd,
 			   struct elf_reloc_cookie *cookie ATTRIBUTE_UNUSED,
 			   struct bfd_link_info *info)
 {
-  bfd_boolean changed = FALSE;
+  bool changed = false;
   asection *s;
   bfd *obfd = NULL;
 
@@ -5587,7 +5578,7 @@ frvfdpic_elf_discard_info (bfd *ibfd,
     if (s->sec_info_type == SEC_INFO_TYPE_EH_FRAME)
       {
 	if (!_frvfdpic_check_discarded_relocs (ibfd, s, info, &changed))
-	  return FALSE;
+	  return false;
 	obfd = s->output_section->owner;
       }
 
@@ -5605,10 +5596,10 @@ frvfdpic_elf_discard_info (bfd *ibfd,
 		     NULL);
 
       if (!_frvfdpic_size_got_plt (obfd, &gpinfo))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look for opportunities to relax TLS relocations.  We can assume
@@ -5621,38 +5612,38 @@ _frvfdpic_relax_got_plt_entries (void **
   struct frvfdpic_relocs_info *entry = *entryp;
   struct _frvfdpic_dynamic_got_info *dinfo = dinfo_;
 
-  _frvfdpic_relax_tls_entries (entry, dinfo, TRUE);
+  _frvfdpic_relax_tls_entries (entry, dinfo, true);
 
   return 1;
 }
 
-static bfd_boolean
+static bool
 elf32_frvfdpic_relax_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
-			      struct bfd_link_info *info, bfd_boolean *again)
+			      struct bfd_link_info *info, bool *again)
 {
   struct _frvfdpic_dynamic_got_plt_info gpinfo;
 
   if (bfd_link_relocatable (info))
-    (*info->callbacks->einfo)
-      (_("%P%F: --relax and -r may not be used together\n"));
+    info->callbacks->fatal
+      (_("%P: --relax and -r may not be used together\n"));
 
   /* If we return early, we didn't change anything.  */
-  *again = FALSE;
+  *again = false;
 
   /* We'll do our thing when requested to relax the GOT section.  */
   if (sec != frvfdpic_got_section (info))
-    return TRUE;
+    return true;
 
   /* We can only relax when linking the main executable or a library
      that can't be dlopened.  */
   if (! bfd_link_executable (info) && ! (info->flags & DF_STATIC_TLS))
-    return TRUE;
+    return true;
 
   /* If there isn't a TLS section for this binary, we can't do
      anything about its TLS relocations (it probably doesn't have
      any.  */
   if (elf_hash_table (info)->tls_sec == NULL)
-    return TRUE;
+    return true;
 
   memset (&gpinfo, 0, sizeof (gpinfo));
   memcpy (&gpinfo.g, frvfdpic_dynamic_got_plt_info (info), sizeof (gpinfo.g));
@@ -5676,7 +5667,7 @@ elf32_frvfdpic_relax_section (bfd *abfd
 	 be a better way to get to it.  */
       if (!_frvfdpic_size_got_plt (elf_hash_table (info)->tls_sec->owner,
 				   &gpinfo))
-	return FALSE;
+	return false;
 
       /* Repeat until we don't make any further changes.  We could fail to
 	 introduce changes in a round if, for example, the 12-bit range is
@@ -5684,23 +5675,23 @@ elf32_frvfdpic_relax_section (bfd *abfd
 	 descriptors in it.  We have to repeat the whole process because
 	 we might have changed the size of a section processed before this
 	 one.  */
-      *again = TRUE;
+      *again = true;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Fill in code and data in dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf32_frv_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 				   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
   /* Nothing to be done for non-FDPIC.  */
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_frvfdpic_finish_dynamic_sections (bfd *output_bfd,
 					struct bfd_link_info *info)
 {
@@ -5736,11 +5727,11 @@ elf32_frvfdpic_finish_dynamic_sections (
 	    error:
 	      info->callbacks->einfo
 		("LINKER BUG: .rofixup section size mismatch\n");
-	      return FALSE;
+	      return false;
 	    }
 
 	  hend = bfd_link_hash_lookup (info->hash, "__ROFIXUP_END__",
-				       FALSE, FALSE, TRUE);
+				       false, false, true);
 	  if (hend
 	      && (hend->type == bfd_link_hash_defined
 		  || hend->type == bfd_link_hash_defweak)
@@ -5811,13 +5802,13 @@ elf32_frvfdpic_finish_dynamic_sections (
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  */
 
-static bfd_boolean
+static bool
 elf32_frvfdpic_adjust_dynamic_symbol
 (struct bfd_link_info *info ATTRIBUTE_UNUSED,
  struct elf_link_hash_entry *h ATTRIBUTE_UNUSED)
@@ -5842,35 +5833,35 @@ elf32_frvfdpic_adjust_dynamic_symbol
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Perform any actions needed for dynamic symbols.  */
 
-static bfd_boolean
+static bool
 elf32_frvfdpic_finish_dynamic_symbol
 (bfd *output_bfd ATTRIBUTE_UNUSED,
  struct bfd_link_info *info ATTRIBUTE_UNUSED,
  struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
  Elf_Internal_Sym *sym ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* Decide whether to attempt to turn absptr or lsda encodings in
    shared libraries into pcrel within the given input section.  */
 
-static bfd_boolean
+static bool
 frvfdpic_elf_use_relative_eh_frame
 (bfd *input_bfd ATTRIBUTE_UNUSED,
  struct bfd_link_info *info ATTRIBUTE_UNUSED,
  asection *eh_frame_section ATTRIBUTE_UNUSED)
 {
   /* We can't use PC-relative encodings in FDPIC binaries, in general.  */
-  return FALSE;
+  return false;
 }
 
 /* Adjust the contents of an eh_frame_hdr section before they're output.  */
@@ -6008,7 +5999,7 @@ frvfdpic_elf_encode_eh_address (bfd *abf
    PLT entry should be faster), or taking hints from the compiler.
    Given infinite time and money... :-)  */
 
-static bfd_boolean
+static bool
 elf32_frv_check_relocs (bfd *abfd,
 			struct bfd_link_info *info,
 			asection *sec,
@@ -6022,7 +6013,7 @@ elf32_frv_check_relocs (bfd *abfd,
   struct frvfdpic_relocs_info *picrel;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -6087,7 +6078,7 @@ elf32_frv_check_relocs (bfd *abfd,
 	    {
 	      elf_hash_table (info)->dynobj = dynobj = abfd;
 	      if (! _frv_create_got_section (abfd, info))
-		return FALSE;
+		return false;
 	    }
 	  if (! IS_FDPIC (abfd))
 	    {
@@ -6116,7 +6107,7 @@ elf32_frv_check_relocs (bfd *abfd,
 						     (info), abfd, r_symndx,
 						     rel->r_addend, INSERT);
 	  if (! picrel)
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -6227,14 +6218,14 @@ elf32_frv_check_relocs (bfd *abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_FRV_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_FRV_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_FRV_LABEL16:
@@ -6255,11 +6246,11 @@ elf32_frv_check_relocs (bfd *abfd,
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      abfd, (unsigned int) ELF32_R_TYPE (rel->r_info));
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -6286,7 +6277,7 @@ elf32_frv_machine (bfd *abfd)
 
 /* Set the right machine number for a FRV ELF file.  */
 
-static bfd_boolean
+static bool
 elf32_frv_object_p (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_frv, elf32_frv_machine (abfd));
@@ -6296,54 +6287,58 @@ elf32_frv_object_p (bfd *abfd)
 
 /* Function to set the ELF flag bits.  */
 
-static bfd_boolean
+static bool
 frv_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Return true if the architecture described by elf header flag
    EXTENSION is an extension of the architecture described by BASE.  */
 
-static bfd_boolean
+static bool
 frv_elf_arch_extension_p (flagword base, flagword extension)
 {
   if (base == extension)
-    return TRUE;
+    return true;
 
   /* CPU_GENERIC code can be merged with code for a specific
      architecture, in which case the result is marked as being
      for the specific architecture.  Everything is therefore
      an extension of CPU_GENERIC.  */
   if (base == EF_FRV_CPU_GENERIC)
-    return TRUE;
+    return true;
 
   if (extension == EF_FRV_CPU_FR450)
     if (base == EF_FRV_CPU_FR400 || base == EF_FRV_CPU_FR405)
-      return TRUE;
+      return true;
 
   if (extension == EF_FRV_CPU_FR405)
     if (base == EF_FRV_CPU_FR400)
-      return TRUE;
+      return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 frv_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword old_flags, old_partial;
   flagword new_flags, new_partial;
-  bfd_boolean error = FALSE;
+  bool error = false;
   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;
@@ -6360,7 +6355,7 @@ frv_elf_merge_private_bfd_data (bfd *ibf
 
   if (!elf_flags_init (obfd))			/* First call, no flags set.  */
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       old_flags = new_flags;
     }
 
@@ -6502,7 +6497,7 @@ frv_elf_merge_private_bfd_data (bfd *ibf
 	    {
 	      old_flags &= ~ EF_FRV_PIC_FLAGS;
 #ifndef FRV_NO_PIC_ERROR
-	      error = TRUE;
+	      error = true;
 	      _bfd_error_handler
 		/* xgettext:c-format */
 		(_("%pB: compiled with %s and linked with modules"
@@ -6556,7 +6551,7 @@ frv_elf_merge_private_bfd_data (bfd *ibf
       /* Print out any mismatches from above.  */
       if (new_opt[0])
 	{
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: compiled with %s and linked with modules compiled with %s"),
@@ -6569,7 +6564,7 @@ frv_elf_merge_private_bfd_data (bfd *ibf
       if (new_partial != old_partial)
 	{
 	  old_flags |= new_partial;
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: uses different unknown e_flags (%#x) fields"
@@ -6591,7 +6586,7 @@ frv_elf_merge_private_bfd_data (bfd *ibf
   if (((new_flags & EF_FRV_FDPIC) == 0)
       != (! IS_FDPIC (ibfd)))
     {
-      error = TRUE;
+      error = true;
       if (IS_FDPIC (obfd))
 	_bfd_error_handler
 	  (_("%pB: cannot link non-fdpic object file into fdpic executable"),
@@ -6609,7 +6604,7 @@ frv_elf_merge_private_bfd_data (bfd *ibf
 }
 
 
-static bfd_boolean
+static bool
 frv_elf_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -6686,13 +6681,13 @@ frv_elf_print_private_bfd_data (bfd *abf
     fprintf (file, " -G0");
 
   fputc ('\n', file);
-  return TRUE;
+  return true;
 }
 
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf32_frv_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -6701,7 +6696,7 @@ elf32_frv_grok_prstatus (bfd *abfd, Elf_
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       /* The Linux/FRV elf_prstatus struct is 268 bytes long.  The other
 	 hardcoded offsets and sizes listed below (and contained within
@@ -6736,13 +6731,13 @@ elf32_frv_grok_prstatus (bfd *abfd, Elf_
 					  note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf32_frv_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       /* The Linux/FRV elf_prpsinfo struct is 124 bytes long.  */
       case 124:
@@ -6768,7 +6763,7 @@ elf32_frv_grok_psinfo (bfd *abfd, Elf_In
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 #define ELF_ARCH		bfd_arch_frv
 #define ELF_MACHINE_CODE	EM_CYGNUS_FRV
@@ -6807,7 +6802,7 @@ elf32_frv_grok_psinfo (bfd *abfd, Elf_In
 #define elf_backend_grok_prstatus	elf32_frv_grok_prstatus
 #define elf_backend_grok_psinfo		elf32_frv_grok_psinfo
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #include "elf32-target.h"
 
@@ -6829,9 +6824,9 @@ elf32_frv_grok_psinfo (bfd *abfd, Elf_In
 #undef bfd_elf32_bfd_link_hash_table_create
 #define bfd_elf32_bfd_link_hash_table_create \
 		frvfdpic_elf_link_hash_table_create
-#undef elf_backend_always_size_sections
-#define elf_backend_always_size_sections \
-		elf32_frvfdpic_always_size_sections
+#undef elf_backend_early_size_sections
+#define elf_backend_early_size_sections \
+		elf32_frvfdpic_early_size_sections
 
 #undef elf_backend_create_dynamic_sections
 #define elf_backend_create_dynamic_sections \
@@ -6839,9 +6834,9 @@ elf32_frv_grok_psinfo (bfd *abfd, Elf_In
 #undef elf_backend_adjust_dynamic_symbol
 #define elf_backend_adjust_dynamic_symbol \
 		elf32_frvfdpic_adjust_dynamic_symbol
-#undef elf_backend_size_dynamic_sections
-#define elf_backend_size_dynamic_sections \
-		elf32_frvfdpic_size_dynamic_sections
+#undef elf_backend_late_size_sections
+#define elf_backend_late_size_sections \
+		elf32_frvfdpic_late_size_sections
 #undef bfd_elf32_bfd_relax_section
 #define bfd_elf32_bfd_relax_section \
   elf32_frvfdpic_relax_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.20200303/bfd/elf32-ft32.c ./bfd/elf32-ft32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-ft32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-ft32.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,8 +1,8 @@
 /* ft32-specific support for 32-bit ELF.
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2025 Free Software Foundation, Inc.
 
    Copied from elf32-moxie.c which is..
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -29,7 +29,7 @@
 #include "elf/ft32.h"
 #include "opcode/ft32.h"
 
-static bfd_boolean debug_relax = FALSE;
+static bool debug_relax = false;
 
 static bfd_reloc_status_type
 bfd_elf_ft32_diff_reloc (bfd *, arelent *, asymbol *, void *,
@@ -40,187 +40,186 @@ static reloc_howto_type ft32_elf_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_FT32_NONE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 0,			/* size */
+	 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_FT32_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
 
   HOWTO (R_FT32_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FT32_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FT32_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FT32_10,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_10",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00003ff0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FT32_20,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 20,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_20",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x000fffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FT32_17,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_17",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0001ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FT32_18,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 18,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_18",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0003ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FT32_RELAX,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_RELAX",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_FT32_SC0,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_SC0",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_FT32_SC1,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 22,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_SC1",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x07ffff80,		/* src_mask */
 	 0x07ffff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_FT32_15,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_FT32_15",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00007fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_FT32_DIFF32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_ft32_diff_reloc, /* special_function */
 	 "R_FT32_DIFF32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
-
 /* Map BFD reloc types to FT32 ELF reloc types.  */
 
 struct ft32_reloc_map
@@ -267,8 +266,7 @@ ft32_reloc_type_lookup (bfd *abfd ATTRIB
 {
   unsigned int i;
 
-  for (i = sizeof (ft32_reloc_map) / sizeof (ft32_reloc_map[0]);
-       --i;)
+  for (i = 0; i < sizeof (ft32_reloc_map) / sizeof (ft32_reloc_map[0]); i++)
     if (ft32_reloc_map [i].bfd_reloc_val == code)
       return & ft32_elf_howto_table [ft32_reloc_map[i].ft32_reloc_val];
 
@@ -292,7 +290,7 @@ ft32_reloc_name_lookup (bfd *abfd ATTRIB
 
 /* Set the howto pointer for an FT32 ELF reloc.  */
 
-static bfd_boolean
+static bool
 ft32_info_to_howto_rela (bfd *abfd,
 			  arelent *cache_ptr,
 			  Elf_Internal_Rela *dst)
@@ -306,7 +304,7 @@ ft32_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = & ft32_elf_howto_table [r_type];
@@ -343,7 +341,7 @@ ft32_info_to_howto_rela (bfd *abfd,
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 ft32_elf_relocate_section (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -393,7 +391,7 @@ ft32_elf_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -405,7 +403,8 @@ ft32_elf_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_FT32_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -487,7 +486,7 @@ ft32_elf_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -513,12 +512,12 @@ ft32_elf_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relaxation.  */
 
-static bfd_boolean
+static bool
 ft32_reloc_shortable
     (bfd *		    abfd,
      asection *		    sec,
@@ -572,7 +571,7 @@ ft32_reloc_shortable
 	/* This appears to be a reference to an undefined
 	   symbol.  Just ignore it--it will be caught by the
 	   regular reloc processing.  */
-	return FALSE;
+	return false;
 
       symval = (h->root.u.def.value
 		+ h->root.u.def.section->output_section->vma
@@ -587,7 +586,7 @@ ft32_reloc_shortable
       case R_FT32_20:
       case R_FT32_RELAX:
 	if (symval != 0)
-	  return FALSE;
+	  return false;
 	insn = bfd_get_32 (abfd, contents + irel->r_offset);
 	insn |= ((symval + irel->r_addend) << howto->bitpos) & howto->dst_mask;
 	return ft32_shortcode (insn, sc);
@@ -604,23 +603,23 @@ ft32_reloc_shortable
 	  {
 	    switch (insn)
 	      {
-		case 0x00200000: *sc = (3 << 13) | (0  << 9); return TRUE;
-		case 0x00280000: *sc = (3 << 13) | (1  << 9); return TRUE;
-		case 0x00600000: *sc = (3 << 13) | (2  << 9); return TRUE;
-		case 0x00680000: *sc = (3 << 13) | (3  << 9); return TRUE;
-		case 0x00a00000: *sc = (3 << 13) | (4  << 9); return TRUE;
-		case 0x00a80000: *sc = (3 << 13) | (5  << 9); return TRUE;
-		case 0x00e00000: *sc = (3 << 13) | (6  << 9); return TRUE;
-		case 0x00e80000: *sc = (3 << 13) | (7  << 9); return TRUE;
-		case 0x01200000: *sc = (3 << 13) | (8  << 9); return TRUE;
-		case 0x01280000: *sc = (3 << 13) | (9  << 9); return TRUE;
-		case 0x01600000: *sc = (3 << 13) | (10 << 9); return TRUE;
-		case 0x01680000: *sc = (3 << 13) | (11 << 9); return TRUE;
-		case 0x01a00000: *sc = (3 << 13) | (12 << 9); return TRUE;
-		case 0x01a80000: *sc = (3 << 13) | (13 << 9); return TRUE;
+		case 0x00200000: *sc = (3 << 13) | (0  << 9); return true;
+		case 0x00280000: *sc = (3 << 13) | (1  << 9); return true;
+		case 0x00600000: *sc = (3 << 13) | (2  << 9); return true;
+		case 0x00680000: *sc = (3 << 13) | (3  << 9); return true;
+		case 0x00a00000: *sc = (3 << 13) | (4  << 9); return true;
+		case 0x00a80000: *sc = (3 << 13) | (5  << 9); return true;
+		case 0x00e00000: *sc = (3 << 13) | (6  << 9); return true;
+		case 0x00e80000: *sc = (3 << 13) | (7  << 9); return true;
+		case 0x01200000: *sc = (3 << 13) | (8  << 9); return true;
+		case 0x01280000: *sc = (3 << 13) | (9  << 9); return true;
+		case 0x01600000: *sc = (3 << 13) | (10 << 9); return true;
+		case 0x01680000: *sc = (3 << 13) | (11 << 9); return true;
+		case 0x01a00000: *sc = (3 << 13) | (12 << 9); return true;
+		case 0x01a80000: *sc = (3 << 13) | (13 << 9); return true;
 
-		case 0x00300000: *sc = (3 << 13) | (14 << 9); return TRUE;
-		case 0x00340000: *sc = (3 << 13) | (15 << 9); return TRUE;
+		case 0x00300000: *sc = (3 << 13) | (14 << 9); return true;
+		case 0x00340000: *sc = (3 << 13) | (15 << 9); return true;
 
 		default:
 		  break;
@@ -631,12 +630,12 @@ ft32_reloc_shortable
       default:
 	break;
     }
-  return FALSE;
+  return false;
 }
 
 /* Returns whether the relocation type passed is a diff reloc.  */
 
-static bfd_boolean
+static bool
 elf32_ft32_is_diff_reloc (Elf_Internal_Rela *irel)
 {
   return (ELF32_R_TYPE (irel->r_info) == R_FT32_DIFF32);
@@ -646,7 +645,7 @@ elf32_ft32_is_diff_reloc (Elf_Internal_R
    insn address happens to fall between the two symbols for which this
    diff reloc was emitted.  */
 
-static bfd_boolean
+static bool
 elf32_ft32_adjust_diff_reloc_value (bfd *abfd,
 				   struct bfd_section *isec,
 				   Elf_Internal_Rela *irel,
@@ -666,7 +665,7 @@ elf32_ft32_adjust_diff_reloc_value (bfd
   if (isec_contents == NULL)
     {
       if (! bfd_malloc_and_get_section (abfd, isec, &isec_contents))
-	return FALSE;
+	return false;
 
       elf_section_data (isec)->this_hdr.contents = isec_contents;
     }
@@ -681,7 +680,7 @@ elf32_ft32_adjust_diff_reloc_value (bfd
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   /* For a diff reloc sym1 - sym2 the diff at assembly time (x) is written
@@ -714,14 +713,14 @@ elf32_ft32_adjust_diff_reloc_value (bfd
 	  break;
 
 	default:
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_ft32_adjust_reloc_if_spans_insn (bfd *abfd,
 				      asection *isec,
 				      Elf_Internal_Rela *irel,  bfd_vma symval,
@@ -736,32 +735,32 @@ elf32_ft32_adjust_reloc_if_spans_insn (b
 					       symval,
 					       shrinked_insn_address,
 					       count))
-	return FALSE;
+	return false;
     }
   else
     {
       bfd_vma reloc_value = symval + irel->r_addend;
-      bfd_boolean addend_within_shrink_boundary =
+      bool addend_within_shrink_boundary =
 	(reloc_value <= shrink_boundary);
-      bfd_boolean reloc_spans_insn =
+      bool reloc_spans_insn =
 	(symval <= shrinked_insn_address
 	 && reloc_value > shrinked_insn_address
 	 && addend_within_shrink_boundary);
 
       if (! reloc_spans_insn)
-	return TRUE;
+	return true;
 
       irel->r_addend -= count;
 
       if (debug_relax)
 	printf ("Relocation's addend needed to be fixed \n");
     }
-  return TRUE;
+  return true;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 elf32_ft32_relax_delete_bytes (struct bfd_link_info *link_info, bfd * abfd,
 			       asection * sec, bfd_vma addr, int count)
 {
@@ -826,7 +825,7 @@ elf32_ft32_relax_delete_bytes (struct bf
 	irel = elf_section_data (isec)->relocs;
 	/* PR 12161: Read in the relocs for this section if necessary.  */
 	if (irel == NULL)
-	  irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, TRUE);
+	  irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, true);
 
 	for (irelend = irel + isec->reloc_count; irel < irelend; irel++)
 	  {
@@ -840,7 +839,7 @@ elf32_ft32_relax_delete_bytes (struct bf
 						  symtab_hdr->sh_info, 0,
 						  NULL, NULL, NULL);
 		if (isymbuf == NULL)
-		  return FALSE;
+		  return false;
 	      }
 
 	    /* Get the value of the symbol referred to by the reloc.  */
@@ -887,7 +886,7 @@ elf32_ft32_relax_delete_bytes (struct bf
 								    shrinked_insn_address,
 								    shrink_boundary,
 								    count))
-			  return FALSE;
+			  return false;
 		      }
 		  }
 		/* else reference symbol is absolute. No adjustment needed. */
@@ -953,12 +952,12 @@ elf32_ft32_relax_delete_bytes (struct bf
 	sym_hash->root.u.def.value -= count;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if LOC can be a target of a branch, jump or call.  */
 
-static bfd_boolean
+static bool
 elf32_ft32_relax_is_branch_target (struct bfd_link_info *link_info,
 				   bfd * abfd, asection * sec,
 				   bfd_vma loc)
@@ -982,7 +981,7 @@ elf32_ft32_relax_is_branch_target (struc
     {
       irel = elf_section_data (isec)->relocs;
       if (irel == NULL)
-	irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, TRUE);
+	irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, true);
 
       irelend = irel + isec->reloc_count;
 
@@ -998,7 +997,7 @@ elf32_ft32_relax_is_branch_target (struc
 						symtab_hdr->sh_info, 0,
 						NULL, NULL, NULL);
 	      if (isymbuf == NULL)
-		return FALSE;
+		return false;
 	    }
 
 	  /* Get the value of the symbol referred to by the reloc.  */
@@ -1024,7 +1023,7 @@ elf32_ft32_relax_is_branch_target (struc
 			    (unsigned int) symval,
 			    (unsigned int) (symval + irel->r_addend));
 		  if ((irel->r_addend) == loc)
-		    return TRUE;
+		    return true;
 		}
 	    }
 	}
@@ -1067,18 +1066,17 @@ elf32_ft32_relax_is_branch_target (struc
 	  || sym_hash->root.type == bfd_link_hash_defweak)
 	  && sym_hash->root.u.def.section == sec
 	  && sym_hash->root.u.def.value == loc)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
-ft32_elf_relax_section
-    (bfd *		    abfd,
-     asection *		    sec,
-     struct bfd_link_info * link_info,
-     bfd_boolean *	    again)
+static bool
+ft32_elf_relax_section (bfd *abfd,
+			asection *sec,
+			struct bfd_link_info *link_info,
+			bool *again)
 {
   Elf_Internal_Rela * free_relocs = NULL;
   Elf_Internal_Rela * internal_relocs;
@@ -1089,16 +1087,17 @@ ft32_elf_relax_section
   Elf_Internal_Sym *  isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   /* Get the section contents.  */
   if (elf_section_data (sec)->this_hdr.contents != NULL)
@@ -1199,7 +1198,7 @@ ft32_elf_relax_section
 
 	  /* That will change things, so, we should relax again.
 	     Note that this is not required, and it may be slow.  */
-	  *again = TRUE;
+	  *again = true;
 
 	  irel += 2;
 	}
@@ -1230,17 +1229,15 @@ 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;
+  return true;
 
  error_return:
-  if (free_relocs != NULL)
-    free (free_relocs);
+  free (free_relocs);
 
-  return TRUE;
+  return true;
 }
 
 #define ELF_ARCH		bfd_arch_ft32
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-gen.c ./bfd/elf32-gen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-gen.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-gen.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,34 +29,34 @@
 static reloc_howto_type dummy =
   HOWTO (0,			/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "UNKNOWN",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
-static bfd_boolean
+static bool
 elf_generic_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 			   arelent *bfd_reloc,
 			   Elf_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED)
 {
   bfd_reloc->howto = &dummy;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_generic_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
 			       arelent *bfd_reloc,
 			       Elf_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED)
 {
   bfd_reloc->howto = &dummy;
-  return TRUE;
+  return true;
 }
 
 static void
@@ -72,20 +72,20 @@ check_for_relocs (bfd * abfd, asection *
 			  abfd, ehdrp->e_machine);
 
       bfd_set_error (bfd_error_wrong_format);
-      * (bfd_boolean *) failed = TRUE;
+      * (bool *) failed = true;
     }
 }
 
-static bfd_boolean
+static bool
 elf32_generic_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
-  bfd_boolean failed = FALSE;
+  bool failed = false;
 
   /* Check if there are any relocations.  */
   bfd_map_over_sections (abfd, check_for_relocs, & failed);
 
   if (failed)
-    return FALSE;
+    return false;
   return bfd_elf_link_add_symbols (abfd, 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.20200303/bfd/elf32-h8300.c ./bfd/elf32-h8300.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-h8300.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-h8300.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -27,27 +27,27 @@
 
 static reloc_howto_type *elf32_h8_reloc_type_lookup
   (bfd *abfd, bfd_reloc_code_real_type code);
-static bfd_boolean elf32_h8_info_to_howto
+static bool elf32_h8_info_to_howto
   (bfd *, arelent *, Elf_Internal_Rela *);
-static bfd_boolean elf32_h8_info_to_howto_rel
+static bool elf32_h8_info_to_howto_rel
   (bfd *, arelent *, Elf_Internal_Rela *);
 static unsigned long elf32_h8_mach (flagword);
-static bfd_boolean elf32_h8_object_p (bfd *);
-static bfd_boolean elf32_h8_merge_private_bfd_data
+static bool elf32_h8_object_p (bfd *);
+static bool elf32_h8_merge_private_bfd_data
   (bfd *, struct bfd_link_info *);
-static bfd_boolean elf32_h8_relax_section
-  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
-static bfd_boolean elf32_h8_relax_delete_bytes
+static bool elf32_h8_relax_section
+  (bfd *, asection *, struct bfd_link_info *, bool *);
+static bool elf32_h8_relax_delete_bytes
   (bfd *, asection *, bfd_vma, int);
-static bfd_boolean elf32_h8_symbol_address_p (bfd *, asection *, bfd_vma);
+static bool elf32_h8_symbol_address_p (bfd *, asection *, bfd_vma);
 static bfd_byte *elf32_h8_get_relocated_section_contents
   (bfd *, struct bfd_link_info *, struct bfd_link_order *,
-   bfd_byte *, bfd_boolean, asymbol **);
+   bfd_byte *, bool, asymbol **);
 static bfd_reloc_status_type elf32_h8_final_link_relocate
   (unsigned long, bfd *, bfd *, asection *,
    bfd_byte *, bfd_vma, bfd_vma, bfd_vma,
    struct bfd_link_info *, asection *, int);
-static bfd_boolean elf32_h8_relocate_section
+static int elf32_h8_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *,
    bfd_byte *, Elf_Internal_Rela *,
    Elf_Internal_Sym *, asection **);
@@ -62,171 +62,171 @@ static reloc_howto_type h8_elf_howto_tab
 #define R_H8_NONE_X 0
   HOWTO (R_H8_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DIR32_X (R_H8_NONE_X + 1)
   HOWTO (R_H8_DIR32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DIR32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DIR16_X (R_H8_DIR32_X + 1)
   HOWTO (R_H8_DIR16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DIR16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DIR8_X (R_H8_DIR16_X + 1)
   HOWTO (R_H8_DIR8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DIR8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DIR16A8_X (R_H8_DIR8_X + 1)
   HOWTO (R_H8_DIR16A8,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DIR16A8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DIR16R8_X (R_H8_DIR16A8_X + 1)
   HOWTO (R_H8_DIR16R8,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DIR16R8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DIR24A8_X (R_H8_DIR16R8_X + 1)
   HOWTO (R_H8_DIR24A8,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DIR24A8",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff000000,		/* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DIR24R8_X (R_H8_DIR24A8_X + 1)
   HOWTO (R_H8_DIR24R8,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DIR24R8",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff000000,		/* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DIR32A16_X (R_H8_DIR24R8_X + 1)
   HOWTO (R_H8_DIR32A16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DIR32A16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_DISP32A16_X (R_H8_DIR32A16_X + 1)
   HOWTO (R_H8_DISP32A16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_DISP32A16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #define R_H8_PCREL16_X (R_H8_DISP32A16_X + 1)
   HOWTO (R_H8_PCREL16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_PCREL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 #define R_H8_PCREL8_X (R_H8_PCREL16_X + 1)
   HOWTO (R_H8_PCREL8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 special,		/* special_function */
 	 "R_H8_PCREL8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 /* This structure is used to map BFD reloc codes to H8 ELF relocs.  */
@@ -284,7 +284,7 @@ elf32_h8_reloc_name_lookup (bfd *abfd AT
   return NULL;
 }
 
-static bfd_boolean
+static bool
 elf32_h8_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
 			Elf_Internal_Rela *elf_reloc)
 {
@@ -296,20 +296,20 @@ elf32_h8_info_to_howto (bfd *abfd ATTRIB
     if (h8_elf_howto_table[i].type == r)
       {
 	bfd_reloc->howto = &h8_elf_howto_table[i];
-	return TRUE;
+	return true;
       }
   /* xgettext:c-format */
   _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r);
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 elf32_h8_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
 			    arelent *bfd_reloc ATTRIBUTE_UNUSED,
 			    Elf_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
 /* Special handling for H8/300 relocs.
@@ -425,7 +425,7 @@ elf32_h8_final_link_relocate (unsigned l
 }
 
 /* Relocate an H8 ELF section.  */
-static bfd_boolean
+static int
 elf32_h8_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 			   bfd *input_bfd, asection *input_section,
 			   bfd_byte *contents, Elf_Internal_Rela *relocs,
@@ -470,7 +470,7 @@ elf32_h8_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -480,7 +480,8 @@ elf32_h8_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_H8_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -516,7 +517,7 @@ elf32_h8_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -543,7 +544,7 @@ elf32_h8_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Object files encode the specific H8 model they were compiled
@@ -584,7 +585,7 @@ elf32_h8_mach (flagword flags)
    file.  We use this opportunity to encode the BFD machine type
    into the flags field in the object file.  */
 
-static bfd_boolean
+static bool
 elf32_h8_final_write_processing (bfd *abfd)
 {
   unsigned long val;
@@ -629,36 +630,36 @@ elf32_h8_final_write_processing (bfd *ab
 /* Return nonzero if ABFD represents a valid H8 ELF object file; also
    record the encoded machine type found in the ELF flags.  */
 
-static bfd_boolean
+static bool
 elf32_h8_object_p (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_h8300,
 			     elf32_h8_mach (elf_elfheader (abfd)->e_flags));
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  The only data we need to copy at this
    time is the architecture/machine information.  */
 
-static bfd_boolean
+static bool
 elf32_h8_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
       && bfd_get_mach (obfd) < bfd_get_mach (ibfd))
     {
       if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
 			       bfd_get_mach (ibfd)))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function handles relaxing for the H8..
@@ -687,9 +688,9 @@ elf32_h8_merge_private_bfd_data (bfd *ib
 
      mov.[bwl] @(displ:24/32+ERx) -> mov.[bwl] @(displ:16+ERx)	4 bytes.  */
 
-static bfd_boolean
+static bool
 elf32_h8_relax_section (bfd *abfd, asection *sec,
-			struct bfd_link_info *link_info, bfd_boolean *again)
+			struct bfd_link_info *link_info, bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -700,16 +701,17 @@ elf32_h8_relax_section (bfd *abfd, asect
   static Elf_Internal_Rela *last_reloc = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -934,7 +936,7 @@ elf32_h8_relax_section (bfd *abfd, asect
 							  4))
 			  goto error_return;
 
-			*again = TRUE;
+			*again = true;
 			break;
 		      }
 		  }
@@ -959,7 +961,7 @@ elf32_h8_relax_section (bfd *abfd, asect
 
 		/* That will change things, so, we should relax again.
 		   Note that this is not required, and it may be slow.  */
-		*again = TRUE;
+		*again = true;
 	      }
 	    break;
 	  }
@@ -1030,7 +1032,7 @@ elf32_h8_relax_section (bfd *abfd, asect
 
 		/* That will change things, so, we should relax again.
 		   Note that this is not required, and it may be slow.  */
-		*again = TRUE;
+		*again = true;
 	      }
 	    break;
 	  }
@@ -1118,7 +1120,7 @@ elf32_h8_relax_section (bfd *abfd, asect
 
 		/* That will change things, so, we should relax again.
 		   Note that this is not required, and it may be slow.  */
-		*again = TRUE;
+		*again = true;
 	      }
 	    break;
 	  }
@@ -1205,7 +1207,7 @@ elf32_h8_relax_section (bfd *abfd, asect
 
 		/* That will change things, so, we should relax again.
 		   Note that this is not required, and it may be slow.  */
-		*again = TRUE;
+		*again = true;
 		break;
 	      }
 	  }
@@ -1344,7 +1346,7 @@ elf32_h8_relax_section (bfd *abfd, asect
 
 		/* That will change things, so, we should relax again.
 		   Note that this is not required, and it may be slow.  */
-		*again = TRUE;
+		*again = true;
 	      }
 	    break;	/* case R_H8_DIR32A16 */
 	  }
@@ -1433,7 +1435,7 @@ elf32_h8_relax_section (bfd *abfd, asect
 
 		    /* That will change things, so, we should relax again.
 		       Note that this is not required, and it may be slow.  */
-		    *again = TRUE;
+		    *again = true;
 		  }
 	      }
 	  }
@@ -1465,28 +1467,24 @@ 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;
+  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;
+  return false;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 elf32_h8_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -1552,12 +1550,12 @@ elf32_h8_relax_delete_bytes (bfd *abfd,
 	sym_hash->root.u.def.value -= count;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if a symbol exists at the given address, else return
    FALSE.  */
-static bfd_boolean
+static bool
 elf32_h8_symbol_address_p (bfd *abfd, asection *sec, bfd_vma addr)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -1578,7 +1576,7 @@ elf32_h8_symbol_address_p (bfd *abfd, as
     {
       if (isym->st_shndx == sec_shndx
 	  && isym->st_value == addr)
-	return TRUE;
+	return true;
     }
 
   symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
@@ -1592,10 +1590,10 @@ elf32_h8_symbol_address_p (bfd *abfd, as
 	   || sym_hash->root.type == bfd_link_hash_defweak)
 	  && sym_hash->root.u.def.section == sec
 	  && sym_hash->root.u.def.value == addr)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* This is a version of bfd_generic_get_relocated_section_contents
@@ -1606,7 +1604,7 @@ elf32_h8_get_relocated_section_contents
 					 struct bfd_link_info *link_info,
 					 struct bfd_link_order *link_order,
 					 bfd_byte *data,
-					 bfd_boolean relocatable,
+					 bool relocatable,
 					 asymbol **symbols)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -1627,6 +1625,13 @@ elf32_h8_get_relocated_section_contents
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 
+  bfd_byte *orig_data = data;
+  if (data == NULL)
+    {
+      data = bfd_malloc (input_section->size);
+      if (data == NULL)
+	return NULL;
+    }
   memcpy (data, elf_section_data (input_section)->this_hdr.contents,
 	  (size_t) input_section->size);
 
@@ -1639,7 +1644,7 @@ elf32_h8_get_relocated_section_contents
 
       internal_relocs = (_bfd_elf_link_read_relocs
 			 (input_bfd, input_section, NULL,
-			  (Elf_Internal_Rela *) NULL, FALSE));
+			  (Elf_Internal_Rela *) NULL, false));
       if (internal_relocs == NULL)
 	goto error_return;
 
@@ -1682,10 +1687,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,14 +1697,13 @@ 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);
+  if (orig_data == NULL)
+    free (data);
   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.20200303/bfd/elf32-hppa.c ./bfd/elf32-hppa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-hppa.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-hppa.c	2026-03-05 02:07:20.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-2025 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,15 +411,14 @@ 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)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd, hppa_link_hash_newfunc,
-				      sizeof (struct elf32_hppa_link_hash_entry),
-				      HPPA32_ELF_DATA))
+				      sizeof (struct elf32_hppa_link_hash_entry)))
     {
       free (htab);
       return NULL;
@@ -440,6 +432,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;
@@ -530,7 +523,7 @@ hppa_get_stub_entry (const asection *inp
 	return NULL;
 
       hsh_entry = hppa_stub_hash_lookup (&htab->bstab,
-					  stub_name, FALSE, FALSE);
+					  stub_name, false, false);
       if (hh != NULL)
 	hh->hsh_cache = hsh_entry;
 
@@ -581,7 +574,7 @@ hppa_add_stub (const char *stub_name,
 
   /* Enter this entry into the linker stub hash table.  */
   hsh = hppa_stub_hash_lookup (&htab->bstab, stub_name,
-				      TRUE, FALSE);
+				      true, false);
   if (hsh == NULL)
     {
       /* xgettext:c-format */
@@ -697,7 +690,7 @@ hppa_type_of_stub (asection *input_sec,
 #define LDW_R1_DLT	LDW_R1_DP
 #endif
 
-static bfd_boolean
+static bool
 hppa_build_one_stub (struct bfd_hash_entry *bh, void *in_arg)
 {
   struct elf32_hppa_stub_hash_entry *hsh;
@@ -718,7 +711,7 @@ hppa_build_one_stub (struct bfd_hash_ent
 
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   stub_sec = hsh->stub_sec;
 
@@ -731,6 +724,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->fatal (_("%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 +753,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->fatal (_("%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 +834,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->fatal (_("%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
@@ -846,7 +866,7 @@ hppa_build_one_stub (struct bfd_hash_ent
 	     (uint64_t) hsh->stub_offset,
 	     hsh->bh_root.string);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       val = hppa_field_adjust (sym_value, (bfd_signed_vma) -8, e_fsel) >> 2;
@@ -871,11 +891,11 @@ hppa_build_one_stub (struct bfd_hash_ent
 
     default:
       BFD_FAIL ();
-      return FALSE;
+      return false;
     }
 
   stub_sec->size += size;
-  return TRUE;
+  return true;
 }
 
 #undef LDIL_R1
@@ -902,7 +922,7 @@ hppa_build_one_stub (struct bfd_hash_ent
 /* As above, but don't actually build the stub.  Just bump offset so
    we know stub section sizes.  */
 
-static bfd_boolean
+static bool
 hppa_size_one_stub (struct bfd_hash_entry *bh, void *in_arg)
 {
   struct elf32_hppa_stub_hash_entry *hsh;
@@ -928,13 +948,13 @@ hppa_size_one_stub (struct bfd_hash_entr
     }
 
   hsh->stub_sec->size += size;
-  return TRUE;
+  return true;
 }
 
 /* Return nonzero if ABFD represents an HPPA ELF32 file.
    Additionally we set the default architecture and machine.  */
 
-static bfd_boolean
+static bool
 elf32_hppa_object_p (bfd *abfd)
 {
   Elf_Internal_Ehdr * i_ehdrp;
@@ -947,7 +967,7 @@ elf32_hppa_object_p (bfd *abfd)
 	 but the kernel produces corefiles with OSABI=SysV.  */
       if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_GNU &&
 	  i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NONE) /* aka SYSV */
-	return FALSE;
+	return false;
     }
   else if (strcmp (bfd_get_target (abfd), "elf32-hppa-netbsd") == 0)
     {
@@ -955,12 +975,12 @@ elf32_hppa_object_p (bfd *abfd)
 	 but the kernel produces corefiles with OSABI=SysV.  */
       if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NETBSD &&
 	  i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NONE) /* aka SYSV */
-	return FALSE;
+	return false;
     }
   else
     {
       if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_HPUX)
-	return FALSE;
+	return false;
     }
 
   flags = i_ehdrp->e_flags;
@@ -975,13 +995,13 @@ elf32_hppa_object_p (bfd *abfd)
     case EFA_PARISC_2_0 | EF_PARISC_WIDE:
       return bfd_default_set_arch_mach (abfd, bfd_arch_hppa, 25);
     }
-  return TRUE;
+  return true;
 }
 
 /* Create the .plt and .got sections, and set up our hash table
    short-cuts to various dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf32_hppa_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf32_hppa_link_hash_table *htab;
@@ -990,13 +1010,13 @@ elf32_hppa_create_dynamic_sections (bfd
   /* Don't try to create the .plt and .got twice.  */
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
   if (htab->etab.splt != NULL)
-    return TRUE;
+    return true;
 
   /* Call the generic code to do most of the work.  */
   if (! _bfd_elf_create_dynamic_sections (abfd, info))
-    return FALSE;
+    return false;
 
   /* hppa-linux needs _GLOBAL_OFFSET_TABLE_ to be visible from the main
      application, because __canonicalize_funcptr_for_compare needs it.  */
@@ -1018,42 +1038,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;
@@ -1109,7 +1093,7 @@ hppa32_elf_local_refcounts (bfd *abfd)
    table, and dynamic reloc sections.  At this point we haven't
    necessarily read all the input files.  */
 
-static bfd_boolean
+static bool
 elf32_hppa_check_relocs (bfd *abfd,
 			 struct bfd_link_info *info,
 			 asection *sec,
@@ -1123,11 +1107,11 @@ elf32_hppa_check_relocs (bfd *abfd,
   asection *sreloc;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   eh_syms = elf_sym_hashes (abfd);
   sreloc = NULL;
@@ -1257,7 +1241,7 @@ elf32_hppa_check_relocs (bfd *abfd,
 		 abfd,
 		 elf_hppa_howto_table[r_type].name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  /* Fall through.  */
 
@@ -1275,14 +1259,14 @@ elf32_hppa_check_relocs (bfd *abfd,
 	     Reconstruct it for later use during GC.  */
 	case R_PARISC_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, &hh->eh, rela->r_offset))
-	    return FALSE;
+	    return false;
 	  continue;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_PARISC_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, &hh->eh, rela->r_addend))
-	    return FALSE;
+	    return false;
 	  continue;
 
 	case R_PARISC_TLS_GD21L:
@@ -1331,7 +1315,7 @@ elf32_hppa_check_relocs (bfd *abfd,
 	  if (htab->etab.sgot == NULL)
 	    {
 	      if (!elf32_hppa_create_dynamic_sections (htab->etab.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 
 	  if (hh != NULL)
@@ -1349,7 +1333,7 @@ elf32_hppa_check_relocs (bfd *abfd,
 	      /* This is a global offset table entry for a local symbol.  */
 	      local_got_refcounts = hppa32_elf_local_refcounts (abfd);
 	      if (local_got_refcounts == NULL)
-		return FALSE;
+		return false;
 	      if (tls_type == GOT_TLS_LDM)
 		htab->tls_ldm_got.refcount += 1;
 	      else
@@ -1389,7 +1373,7 @@ elf32_hppa_check_relocs (bfd *abfd,
 
 		  local_got_refcounts = hppa32_elf_local_refcounts (abfd);
 		  if (local_got_refcounts == NULL)
-		    return FALSE;
+		    return false;
 		  local_plt_refcounts = (local_got_refcounts
 					 + symtab_hdr->sh_info);
 		  local_plt_refcounts[r_symndx] += 1;
@@ -1454,12 +1438,12 @@ elf32_hppa_check_relocs (bfd *abfd,
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->etab.dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, htab->etab.dynobj, 2, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
 		    {
 		      bfd_set_error (bfd_error_bad_value);
-		      return FALSE;
+		      return false;
 		    }
 		}
 
@@ -1467,7 +1451,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,10 +1462,10 @@ 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;
+		    return false;
 
 		  sr = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (sr == NULL)
@@ -1496,7 +1480,7 @@ elf32_hppa_check_relocs (bfd *abfd,
 		{
 		  hdh_p = bfd_alloc (htab->etab.dynobj, sizeof *hdh_p);
 		  if (hdh_p == NULL)
-		    return FALSE;
+		    return false;
 		  hdh_p->next = *hdh_head;
 		  *hdh_head = hdh_p;
 		  hdh_p->sec = sec;
@@ -1515,7 +1499,7 @@ elf32_hppa_check_relocs (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against garbage collection
@@ -1541,7 +1525,7 @@ elf32_hppa_gc_mark_hook (asection *sec,
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf32_hppa_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -1550,7 +1534,7 @@ elf32_hppa_grok_prstatus (bfd *abfd, Elf
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 396:		/* Linux/hppa */
 	/* pr_cursig */
@@ -1571,13 +1555,13 @@ elf32_hppa_grok_prstatus (bfd *abfd, Elf
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf32_hppa_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 124:		/* Linux/hppa elf_prpsinfo.  */
 	elf_tdata (abfd)->core->program
@@ -1597,7 +1581,7 @@ elf32_hppa_grok_psinfo (bfd *abfd, Elf_I
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 /* Our own version of hide_symbol, so that we can keep plt entries for
@@ -1606,7 +1590,7 @@ elf32_hppa_grok_psinfo (bfd *abfd, Elf_I
 static void
 elf32_hppa_hide_symbol (struct bfd_link_info *info,
 			struct elf_link_hash_entry *eh,
-			bfd_boolean force_local)
+			bool force_local)
 {
   if (force_local)
     {
@@ -1632,41 +1616,22 @@ 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.  */
 
-static bfd_boolean
+static bool
 alias_readonly_dynrelocs (struct elf_link_hash_entry *eh)
 {
   struct elf32_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
   do
     {
-      if (readonly_dynrelocs (&hh->eh))
-	return TRUE;
+      if (_bfd_elf_readonly_dynrelocs (&hh->eh))
+	return true;
       hh = hppa_elf_hash_entry (hh->eh.u.alias);
     } while (hh != NULL && &hh->eh != eh);
 
-  return FALSE;
+  return false;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -1675,7 +1640,7 @@ alias_readonly_dynrelocs (struct elf_lin
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf32_hppa_adjust_dynamic_symbol (struct bfd_link_info *info,
 				  struct elf_link_hash_entry *eh)
 {
@@ -1687,12 +1652,12 @@ elf32_hppa_adjust_dynamic_symbol (struct
   if (eh->type == STT_FUNC
       || eh->needs_plt)
     {
-      bfd_boolean local = (SYMBOL_CALLS_LOCAL (info, eh)
-			   || UNDEFWEAK_NO_DYNAMIC_RELOC (info, eh));
+      bool local = (SYMBOL_CALLS_LOCAL (info, eh)
+		    || UNDEFWEAK_NO_DYNAMIC_RELOC (info, eh));
       /* 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
@@ -1722,14 +1687,14 @@ elf32_hppa_adjust_dynamic_symbol (struct
 	 be discarded.  */
 
       /* Function symbols can't have copy relocs.  */
-      return TRUE;
+      return true;
     }
   else
     eh->plt.offset = (bfd_vma) -1;
 
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* If this is a weak symbol, and there is a real definition, the
      processor independent code will have arranged for us to see the
@@ -1742,8 +1707,8 @@ 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;
-      return TRUE;
+	eh->dyn_relocs = NULL;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -1754,22 +1719,22 @@ elf32_hppa_adjust_dynamic_symbol (struct
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!eh->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
-    return TRUE;
+    return true;
 
   /* 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
       && !alias_readonly_dynrelocs (eh))
-    return TRUE;
+    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
@@ -1800,13 +1765,13 @@ 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);
 }
 
 /* If EH is undefined, make it dynamic if that makes sense.  */
 
-static bfd_boolean
+static bool
 ensure_undef_dynamic (struct bfd_link_info *info,
 		      struct elf_link_hash_entry *eh)
 {
@@ -1821,13 +1786,13 @@ ensure_undef_dynamic (struct bfd_link_in
       && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, eh)
       && ELF_ST_VISIBILITY (eh->other) == STV_DEFAULT)
     return bfd_elf_link_record_dynamic_symbol (info, eh);
-  return TRUE;
+  return true;
 }
 
 /* Allocate space in the .plt for entries that won't have relocations.
    ie. plabel entries.  */
 
-static bfd_boolean
+static bool
 allocate_plt_static (struct elf_link_hash_entry *eh, void *inf)
 {
   struct bfd_link_info *info;
@@ -1836,19 +1801,19 @@ allocate_plt_static (struct elf_link_has
   asection *sec;
 
   if (eh->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   hh = hppa_elf_hash_entry (eh);
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (htab->etab.dynamic_sections_created
       && eh->plt.refcount > 0)
     {
       if (!ensure_undef_dynamic (info, eh))
-	return FALSE;
+	return false;
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), eh))
 	{
@@ -1882,7 +1847,7 @@ allocate_plt_static (struct elf_link_has
       eh->needs_plt = 0;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Calculate size of GOT entries for symbol given its TLS_TYPE.  */
@@ -1908,7 +1873,7 @@ got_entries_needed (int tls_type)
 
 static inline unsigned int
 got_relocs_needed (int tls_type, unsigned int need,
-		   bfd_boolean dtprel_known, bfd_boolean tprel_known)
+		   bool dtprel_known, bool tprel_known)
 {
   /* All the entries we allocated need relocs.
      Except for GD and IE with local symbols.  */
@@ -1922,7 +1887,7 @@ got_relocs_needed (int tls_type, unsigne
 /* Allocate space in .plt, .got and associated reloc sections for
    global syms.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
 {
   struct bfd_link_info *info;
@@ -1932,12 +1897,12 @@ allocate_dynrelocs (struct elf_link_hash
   struct elf_dyn_relocs *hdh_p;
 
   if (eh->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = inf;
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   hh = hppa_elf_hash_entry (eh);
 
@@ -1961,7 +1926,7 @@ allocate_dynrelocs (struct elf_link_hash
       unsigned int need;
 
       if (!ensure_undef_dynamic (info, eh))
-	return FALSE;
+	return false;
 
       sec = htab->etab.sgot;
       eh->got.offset = sec->size;
@@ -1974,7 +1939,7 @@ allocate_dynrelocs (struct elf_link_hash
 		  && !SYMBOL_REFERENCES_LOCAL (info, eh)))
 	  && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, eh))
 	{
-	  bfd_boolean local = SYMBOL_REFERENCES_LOCAL (info, eh);
+	  bool local = SYMBOL_REFERENCES_LOCAL (info, eh);
 	  htab->etab.srelgot->size
 	    += got_relocs_needed (hh->tls_type, need, local,
 				  local && bfd_link_executable (info));
@@ -1985,16 +1950,16 @@ 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)
-    return TRUE;
+  if (eh->dyn_relocs == NULL)
+    return true;
 
   /* If this is a -Bsymbolic shared link, then we need to discard all
      space allocated for dynamic pc-relative relocs against symbols
@@ -2008,7 +1973,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,10 +1985,10 @@ 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;
+	    return false;
 	}
     }
   else if (ELIMINATE_COPY_RELOCS)
@@ -2037,23 +2002,23 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !ELF_COMMON_DEF_P (eh))
 	{
 	  if (!ensure_undef_dynamic (info, eh))
-	    return FALSE;
+	    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);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function is called via elf_link_hash_traverse to force
@@ -2063,64 +2028,35 @@ allocate_dynrelocs (struct elf_link_hash
    for all dynamic symbols.  Arguably, this is a bug in
    elf_adjust_dynamic_symbol.  */
 
-static bfd_boolean
+static bool
 clobber_millicode_symbols (struct elf_link_hash_entry *eh,
-			   struct bfd_link_info *info)
+			   void *info)
 {
   if (eh->type == STT_PARISC_MILLI
       && !eh->forced_local)
-    {
-      elf32_hppa_hide_symbol (info, eh, TRUE);
-    }
-  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;
+    elf32_hppa_hide_symbol ((struct bfd_link_info *) info, eh, true);
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf32_hppa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				  struct bfd_link_info *info)
+static bool
+elf32_hppa_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			       struct bfd_link_info *info)
 {
   struct elf32_hppa_link_hash_table *htab;
   bfd *dynobj;
   bfd *ibfd;
   asection *sec;
-  bfd_boolean relocs;
+  bool relocs;
 
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->etab.dynobj;
   if (dynobj == NULL)
-    abort ();
+    return true;
 
   if (htab->etab.dynamic_sections_created)
     {
@@ -2132,6 +2068,7 @@ elf32_hppa_size_dynamic_sections (bfd *o
 	    abort ();
 	  sec->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  sec->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  sec->alloced = 1;
 	}
 
       /* Force millicode symbols local.  */
@@ -2206,7 +2143,7 @@ elf32_hppa_size_dynamic_sections (bfd *o
 		  || (bfd_link_pic (info)
 		      && (*local_tls_type & GOT_NORMAL) != 0))
 		htab->etab.srelgot->size
-		  += got_relocs_needed (*local_tls_type, need, TRUE,
+		  += got_relocs_needed (*local_tls_type, need, true,
 					bfd_link_executable (info));
 	    }
 	  else
@@ -2265,7 +2202,7 @@ elf32_hppa_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.  */
-  relocs = FALSE;
+  relocs = false;
   for (sec = dynobj->sections; sec != NULL; sec = sec->next)
     {
       if ((sec->flags & SEC_LINKER_CREATED) == 0)
@@ -2279,12 +2216,10 @@ elf32_hppa_size_dynamic_sections (bfd *o
 		 section.  We want this stub right at the end, up
 		 against the .got section.  */
 	      int gotalign = bfd_section_alignment (htab->etab.sgot);
-	      int pltalign = bfd_section_alignment (sec);
 	      int align = gotalign > 3 ? gotalign : 3;
 	      bfd_size_type mask;
 
-	      if (align > pltalign)
-		bfd_set_section_alignment (sec, align);
+	      (void) bfd_link_align_section (sec, align);
 	      mask = ((bfd_size_type) 1 << gotalign) - 1;
 	      sec->size = (sec->size + sizeof (plt_stub) + mask) & ~mask;
 	    }
@@ -2293,14 +2228,14 @@ elf32_hppa_size_dynamic_sections (bfd *o
 	       || sec == htab->etab.sdynbss
 	       || sec == htab->etab.sdynrelro)
 	;
-      else if (CONST_STRNEQ (bfd_section_name (sec), ".rela"))
+      else if (startswith (bfd_section_name (sec), ".rela"))
 	{
 	  if (sec->size != 0)
 	    {
 	      /* Remember whether there are any reloc sections other
 		 than .rela.plt.  */
 	      if (sec != htab->etab.srelplt)
-		relocs = TRUE;
+		relocs = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -2335,62 +2270,11 @@ elf32_hppa_size_dynamic_sections (bfd *o
 	 we may not fill in all the reloc sections.  */
       sec->contents = bfd_zalloc (dynobj, sec->size);
       if (sec->contents == NULL)
-	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;
-	    }
-	}
+	return false;
+      sec->alloced = 1;
     }
-#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 +2291,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)
@@ -2508,7 +2392,7 @@ elf32_hppa_next_input_section (struct bf
 static void
 group_sections (struct elf32_hppa_link_hash_table *htab,
 		bfd_size_type stub_group_size,
-		bfd_boolean stubs_always_before_branch)
+		bool stubs_always_before_branch)
 {
   asection **list = htab->input_list + htab->top_index;
   do
@@ -2521,7 +2405,7 @@ group_sections (struct elf32_hppa_link_h
 	  asection *curr;
 	  asection *prev;
 	  bfd_size_type total;
-	  bfd_boolean big_sec;
+	  bool big_sec;
 
 	  curr = tail;
 	  total = tail->size;
@@ -2596,7 +2480,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)
@@ -2676,7 +2560,7 @@ get_local_syms (bfd *output_bfd, bfd *in
 		  stub_name = hh_name (hh);
 		  hsh = hppa_stub_hash_lookup (&htab->bstab,
 						      stub_name,
-						      FALSE, FALSE);
+						      false, false);
 		  if (hsh == NULL)
 		    {
 		      hsh = hppa_add_stub (stub_name, sec, htab);
@@ -2709,20 +2593,20 @@ get_local_syms (bfd *output_bfd, bfd *in
    PC-relative calls to a target that is unreachable with a "bl"
    instruction.  */
 
-bfd_boolean
+bool
 elf32_hppa_size_stubs
   (bfd *output_bfd, bfd *stub_bfd, struct bfd_link_info *info,
-   bfd_boolean multi_subspace, bfd_signed_vma group_size,
+   bool multi_subspace, bfd_signed_vma group_size,
    asection * (*add_stub_section) (const char *, asection *),
    void (*layout_sections_again) (void))
 {
   bfd_size_type stub_group_size;
-  bfd_boolean stubs_always_before_branch;
-  bfd_boolean stub_changed;
+  bool stubs_always_before_branch;
+  bool stub_changed;
   struct elf32_hppa_link_hash_table *htab = hppa_link_hash_table (info);
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Stash our params away.  */
   htab->stub_bfd = stub_bfd;
@@ -2762,14 +2646,14 @@ elf32_hppa_size_stubs
     default:
       if (htab->all_local_syms)
 	goto error_ret_free_local;
-      return FALSE;
+      return false;
 
     case 0:
-      stub_changed = FALSE;
+      stub_changed = false;
       break;
 
     case 1:
-      stub_changed = TRUE;
+      stub_changed = true;
       break;
     }
 
@@ -2940,7 +2824,7 @@ elf32_hppa_size_stubs
 
 		  hsh = hppa_stub_hash_lookup (&htab->bstab,
 						      stub_name,
-						      FALSE, FALSE);
+						      false, false);
 		  if (hsh != NULL)
 		    {
 		      /* The proper stub has already been created.  */
@@ -2966,7 +2850,7 @@ elf32_hppa_size_stubs
 			hsh->stub_type = hppa_stub_long_branch_shared;
 		    }
 		  hsh->hh = hh;
-		  stub_changed = TRUE;
+		  stub_changed = true;
 		}
 
 	      /* We're done with the internal relocs, free them.  */
@@ -2990,28 +2874,28 @@ elf32_hppa_size_stubs
 
       /* Ask the linker to do its stuff.  */
       (*htab->layout_sections_again) ();
-      stub_changed = FALSE;
+      stub_changed = false;
     }
 
   free (htab->all_local_syms);
-  return TRUE;
+  return true;
 
  error_ret_free_local:
   free (htab->all_local_syms);
-  return FALSE;
+  return false;
 }
 
 /* For a final link, this function is called after we have sized the
    stubs to provide a value for __gp.  */
 
-bfd_boolean
+bool
 elf32_hppa_set_gp (bfd *abfd, struct bfd_link_info *info)
 {
   struct bfd_link_hash_entry *h;
   asection *sec = NULL;
   bfd_vma gp_val = 0;
 
-  h = bfd_link_hash_lookup (info->hash, "$global$", FALSE, FALSE, FALSE);
+  h = bfd_link_hash_lookup (info->hash, "$global$", false, false, false);
 
   if (h != NULL
       && (h->type == bfd_link_hash_defined
@@ -3081,7 +2965,7 @@ elf32_hppa_set_gp (bfd *abfd, struct bfd
 
       elf_gp (abfd) = gp_val;
     }
-  return TRUE;
+  return true;
 }
 
 /* Build all the stubs associated with the current output file.  The
@@ -3090,7 +2974,7 @@ elf32_hppa_set_gp (bfd *abfd, struct bfd
    functions here.  This function is called via hppaelf_finish in the
    linker.  */
 
-bfd_boolean
+bool
 elf32_hppa_build_stubs (struct bfd_link_info *info)
 {
   asection *stub_sec;
@@ -3099,7 +2983,7 @@ elf32_hppa_build_stubs (struct bfd_link_
 
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   for (stub_sec = htab->stub_bfd->sections;
        stub_sec != NULL;
@@ -3110,7 +2994,8 @@ elf32_hppa_build_stubs (struct bfd_link_
 	/* Allocate memory to hold the linker stubs.  */
 	stub_sec->contents = bfd_zalloc (htab->stub_bfd, stub_sec->size);
 	if (stub_sec->contents == NULL)
-	  return FALSE;
+	  return false;
+	stub_sec->alloced = 1;
 	stub_sec->size = 0;
       }
 
@@ -3118,7 +3003,7 @@ elf32_hppa_build_stubs (struct bfd_link_
   table = &htab->bstab;
   bfd_hash_traverse (table, hppa_build_one_stub, info);
 
-  return TRUE;
+  return true;
 }
 
 /* Return the base vma address which should be subtracted from the real
@@ -3152,26 +3037,26 @@ tpoff (struct bfd_link_info *info, bfd_v
 
 /* Perform a final link.  */
 
-static bfd_boolean
+static bool
 elf32_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   struct stat buf;
 
   /* Invoke the regular ELF linker to do all the work.  */
   if (!bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
   /* If we're producing a final executable, sort the contents of the
      unwind section.  */
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* 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;
+    return true;
 
   return elf_hppa_sort_unwind (abfd);
 }
@@ -3221,11 +3106,11 @@ 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;
-  int r_format = howto->bitsize;
+  int r_format;
   enum hppa_reloc_field_selector_type_alt r_field;
   bfd *input_bfd = input_section->owner;
   bfd_vma offset = rela->r_offset;
@@ -3340,7 +3225,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 +3259,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);
 	    }
@@ -3547,6 +3432,64 @@ final_link_relocate (asection *input_sec
       break;
     }
 
+  switch (r_type)
+    {
+    case R_PARISC_DIR32:
+    case R_PARISC_SECREL32:
+    case R_PARISC_SEGBASE:
+    case R_PARISC_SEGREL32:
+    case R_PARISC_PLABEL32:
+      /* These relocations apply to data.  */
+      r_format = howto->bitsize;
+      break;
+
+    default:
+      r_format = bfd_hppa_insn2fmt (input_bfd, insn);
+      switch (r_format)
+	{
+	case 10:
+	case -10:
+	  if (val & 7)
+	    {
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB(%pA+%#" PRIx64 "): displacement %#x for insn %#x "
+		   "is not a multiple of 8 (gp %#x)"),
+		 input_bfd,
+		 input_section,
+		 (uint64_t) offset,
+		 val,
+		 insn,
+		 (unsigned int) elf_gp (input_section->output_section->owner));
+	      bfd_set_error (bfd_error_bad_value);
+	      return bfd_reloc_notsupported;
+	    }
+	  break;
+
+	case -11:
+	case -16:
+	  if (val & 3)
+	    {
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB(%pA+%#" PRIx64 "): displacement %#x for insn %#x "
+		   "is not a multiple of 4 (gp %#x)"),
+		 input_bfd,
+		 input_section,
+		 (uint64_t) offset,
+		 val,
+		 insn,
+		 (unsigned int) elf_gp (input_section->output_section->owner));
+	      bfd_set_error (bfd_error_bad_value);
+	      return bfd_reloc_notsupported;
+	    }
+	  break;
+
+	default:
+	  break;
+        }
+      break;
+    }
   insn = hppa_rebuild_insn (insn, val, r_format);
 
   /* Update the instruction word.  */
@@ -3556,7 +3499,7 @@ final_link_relocate (asection *input_sec
 
 /* Relocate an HPPA ELF section.  */
 
-static bfd_boolean
+static int
 elf32_hppa_relocate_section (bfd *output_bfd,
 			     struct bfd_link_info *info,
 			     bfd *input_bfd,
@@ -3576,7 +3519,7 @@ elf32_hppa_relocate_section (bfd *output
 
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   local_got_offsets = elf_local_got_offsets (input_bfd);
 
@@ -3593,14 +3536,14 @@ elf32_hppa_relocate_section (bfd *output
       bfd_vma relocation;
       bfd_reloc_status_type rstatus;
       const char *sym_name;
-      bfd_boolean plabel;
-      bfd_boolean warned_undef;
+      bool plabel;
+      bool warned_undef;
 
       r_type = ELF32_R_TYPE (rela->r_info);
       if (r_type >= (unsigned int) R_PARISC_UNIMPLEMENTED)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       if (r_type == (unsigned int) R_PARISC_GNU_VTENTRY
 	  || r_type == (unsigned int) R_PARISC_GNU_VTINHERIT)
@@ -3610,7 +3553,7 @@ elf32_hppa_relocate_section (bfd *output
       hh = NULL;
       sym = NULL;
       sym_sec = NULL;
-      warned_undef = FALSE;
+      warned_undef = false;
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  /* This is a local symbol, h defaults to NULL.  */
@@ -3621,7 +3564,7 @@ elf32_hppa_relocate_section (bfd *output
       else
 	{
 	  struct elf_link_hash_entry *eh;
-	  bfd_boolean unresolved_reloc, ignored;
+	  bool unresolved_reloc, ignored;
 	  struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rela,
@@ -3642,8 +3585,8 @@ elf32_hppa_relocate_section (bfd *output
 		{
 		  (*info->callbacks->undefined_symbol)
 		    (info, eh_name (eh), input_bfd,
-		     input_section, rela->r_offset, FALSE);
-		  warned_undef = TRUE;
+		     input_section, rela->r_offset, false);
+		  warned_undef = true;
 		}
 	    }
 	  hh = hppa_elf_hash_entry (eh);
@@ -3651,7 +3594,7 @@ elf32_hppa_relocate_section (bfd *output
 
       if (sym_sec != NULL && discarded_section (sym_sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rela, 1, relend,
+					 rela, 1, relend, R_PARISC_NONE,
 					 elf_hppa_howto_table + r_type, 0,
 					 contents);
 
@@ -3669,14 +3612,14 @@ elf32_hppa_relocate_section (bfd *output
 	case R_PARISC_DLTIND21L:
 	  {
 	    bfd_vma off;
-	    bfd_boolean do_got = FALSE;
-	    bfd_boolean reloc = bfd_link_pic (info);
+	    bool do_got = false;
+	    bool reloc = bfd_link_pic (info);
 
 	    /* Relocation is to the entry for this symbol in the
 	       global offset table.  */
 	    if (hh != NULL)
 	      {
-		bfd_boolean dyn;
+		bool dyn;
 
 		off = hh->eh.got.offset;
 		dyn = htab->etab.dynamic_sections_created;
@@ -3700,7 +3643,7 @@ elf32_hppa_relocate_section (bfd *output
 		    else
 		      {
 			hh->eh.got.offset |= 1;
-			do_got = TRUE;
+			do_got = true;
 		      }
 		  }
 	      }
@@ -3720,7 +3663,7 @@ elf32_hppa_relocate_section (bfd *output
 		else
 		  {
 		    local_got_offsets[r_symndx] |= 1;
-		    do_got = TRUE;
+		    do_got = true;
 		  }
 	      }
 
@@ -3772,7 +3715,7 @@ elf32_hppa_relocate_section (bfd *output
 	  if (htab->etab.dynamic_sections_created)
 	    {
 	      bfd_vma off;
-	      bfd_boolean do_plt = 0;
+	      bool do_plt = 0;
 	      /* If we have a global symbol with a PLT slot, then
 		 redirect this relocation to it.  */
 	      if (hh != NULL)
@@ -3882,14 +3825,14 @@ 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;
+	      bool skip;
 	      asection *sreloc;
 	      bfd_byte *loc;
 
@@ -4045,7 +3988,7 @@ elf32_hppa_relocate_section (bfd *output
 	      off &= ~1;
 	    else
 	      {
-		bfd_boolean need_relocs = FALSE;
+		bool need_relocs = false;
 		Elf_Internal_Rela outrel;
 		bfd_byte *loc = NULL;
 		int cur_off = off;
@@ -4059,7 +4002,7 @@ elf32_hppa_relocate_section (bfd *output
 			&& (hh == NULL
 			    || !UNDEFWEAK_NO_DYNAMIC_RELOC (info, &hh->eh))))
 		  {
-		    need_relocs = TRUE;
+		    need_relocs = true;
 		    loc = htab->etab.srelgot->contents;
 		    loc += (htab->etab.srelgot->reloc_count
 			    * sizeof (Elf32_External_Rela));
@@ -4149,16 +4092,16 @@ 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;
+		      return false;
 		    sym_name
 		      = bfd_elf_string_from_elf_section (input_bfd,
 							 symtab_hdr->sh_link,
 							 isym->st_name);
 		    if (sym_name == NULL)
-		      return FALSE;
+		      return false;
 		    if (*sym_name == '\0')
 		      sym_name = bfd_section_name (sym_sec);
 		    _bfd_error_handler
@@ -4166,7 +4109,7 @@ elf32_hppa_relocate_section (bfd *output
 		       input_bfd, sym_name);
 		  }
 		bfd_set_error (bfd_error_bad_value);
-		return FALSE;
+		return false;
 	      }
 
 	    if ((tls_type & GOT_TLS_GD)
@@ -4208,7 +4151,7 @@ elf32_hppa_relocate_section (bfd *output
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	  if (sym_name == NULL)
-	    return FALSE;
+	    return false;
 	  if (*sym_name == '\0')
 	    sym_name = bfd_section_name (sym_sec);
 	}
@@ -4228,7 +4171,7 @@ elf32_hppa_relocate_section (bfd *output
 		 howto->name,
 		 sym_name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
       else
@@ -4237,13 +4180,13 @@ elf32_hppa_relocate_section (bfd *output
 	   (bfd_vma) 0, input_bfd, input_section, rela->r_offset);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf32_hppa_finish_dynamic_symbol (bfd *output_bfd,
 				  struct bfd_link_info *info,
 				  struct elf_link_hash_entry *eh,
@@ -4254,8 +4197,6 @@ elf32_hppa_finish_dynamic_symbol (bfd *o
   bfd_byte *loc;
 
   htab = hppa_link_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   if (eh->plt.offset != (bfd_vma) -1)
     {
@@ -4314,8 +4255,8 @@ elf32_hppa_finish_dynamic_symbol (bfd *o
       && (hppa_elf_hash_entry (eh)->tls_type & GOT_NORMAL) != 0
       && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, eh))
     {
-      bfd_boolean is_dyn = (eh->dynindx != -1
-			    && !SYMBOL_REFERENCES_LOCAL (info, eh));
+      bool is_dyn = (eh->dynindx != -1
+		     && !SYMBOL_REFERENCES_LOCAL (info, eh));
 
       if (is_dyn || bfd_link_pic (info))
 	{
@@ -4331,7 +4272,9 @@ elf32_hppa_finish_dynamic_symbol (bfd *o
 	     file, we just want to emit a RELATIVE reloc.  The entry
 	     in the global offset table will already have been
 	     initialized in the relocate_section function.  */
-	  if (!is_dyn)
+	  if (!is_dyn
+	      && (eh->root.type == bfd_link_hash_defined
+		  || eh->root.type == bfd_link_hash_defweak))
 	    {
 	      rela.r_info = ELF32_R_INFO (0, R_PARISC_DIR32);
 	      rela.r_addend = (eh->root.u.def.value
@@ -4386,7 +4329,7 @@ elf32_hppa_finish_dynamic_symbol (bfd *o
       sym->st_shndx = SHN_ABS;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Used to decide how to sort relocs in an optimal manner for the
@@ -4424,7 +4367,7 @@ elf32_hppa_reloc_type_class (const struc
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf32_hppa_finish_dynamic_sections (bfd *output_bfd,
 				    struct bfd_link_info *info)
 {
@@ -4435,7 +4378,7 @@ elf32_hppa_finish_dynamic_sections (bfd
 
   htab = hppa_link_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->etab.dynobj;
 
@@ -4443,7 +4386,7 @@ elf32_hppa_finish_dynamic_sections (bfd
   /* A broken linker script might have discarded the dynamic sections.
      Catch this here so that we do not seg-fault later on.  */
   if (sgot != NULL && bfd_is_abs_section (sgot->output_section))
-    return FALSE;
+    return false;
 
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
 
@@ -4526,12 +4469,12 @@ elf32_hppa_finish_dynamic_sections (bfd
 	    {
 	      _bfd_error_handler
 		(_(".got section not immediately after .plt section"));
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Called when writing out an object file to decide the type of a
@@ -4565,7 +4508,7 @@ elf32_hppa_elf_get_symbol_type (Elf_Inte
 #define elf_backend_hide_symbol		     elf32_hppa_hide_symbol
 #define elf_backend_finish_dynamic_symbol    elf32_hppa_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections  elf32_hppa_finish_dynamic_sections
-#define elf_backend_size_dynamic_sections    elf32_hppa_size_dynamic_sections
+#define elf_backend_late_size_sections	     elf32_hppa_late_size_sections
 #define elf_backend_init_index_section	     _bfd_elf_init_1_index_section
 #define elf_backend_gc_mark_hook	     elf32_hppa_gc_mark_hook
 #define elf_backend_grok_prstatus	     elf32_hppa_grok_prstatus
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-hppa.h ./bfd/elf32-hppa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-hppa.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-hppa.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    Written by:
 
@@ -49,14 +49,14 @@ int elf32_hppa_setup_section_lists
 void elf32_hppa_next_input_section
   (struct bfd_link_info *, asection *);
 
-bfd_boolean elf32_hppa_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *, bfd_boolean, bfd_signed_vma,
+bool elf32_hppa_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bool, bfd_signed_vma,
    asection * (*) (const char *, asection *), void (*) (void));
 
-bfd_boolean elf32_hppa_set_gp
+bool elf32_hppa_set_gp
   (bfd *, struct bfd_link_info *);
 
-bfd_boolean elf32_hppa_build_stubs
+bool elf32_hppa_build_stubs
   (struct bfd_link_info *);
 
 elf_hppa_reloc_type elf32_hppa_reloc_final_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.20200303/bfd/elf32-i386.c ./bfd/elf32-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-i386.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-i386.c	2026-03-05 02:07:20.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-2025 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"
@@ -27,43 +26,41 @@
 /* 386 uses REL relocations instead of RELA.  */
 #define USE_REL	1
 
-#include "elf/i386.h"
-
 static reloc_howto_type elf_howto_table[]=
 {
-  HOWTO(R_386_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
+  HOWTO(R_386_NONE, 0, 0, 0, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_NONE",
-	TRUE, 0x00000000, 0x00000000, FALSE),
-  HOWTO(R_386_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0x00000000, 0x00000000, false),
+  HOWTO(R_386_32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_PC32, 0, 2, 32, TRUE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_PC32, 0, 4, 32, true, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_PC32",
-	TRUE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(R_386_GOT32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, true),
+  HOWTO(R_386_GOT32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_GOT32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_PLT32, 0, 2, 32, TRUE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_PLT32, 0, 4, 32, true, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_PLT32",
-	TRUE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(R_386_COPY, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, true),
+  HOWTO(R_386_COPY, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_COPY",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_GLOB_DAT, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_GLOB_DAT, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_GLOB_DAT",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_JUMP_SLOT, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_JUMP_SLOT, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_JUMP_SLOT",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_RELATIVE, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_RELATIVE, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_RELATIVE",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_GOTOFF, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_GOTOFF, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_GOTOFF",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_GOTPC, 0, 2, 32, TRUE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_GOTPC, 0, 4, 32, true, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_GOTPC",
-	TRUE, 0xffffffff, 0xffffffff, TRUE),
+	true, 0xffffffff, 0xffffffff, true),
 
   /* We have a gap in the reloc numbers here.
      R_386_standard counts the number up to this point, and
@@ -73,76 +70,76 @@ static reloc_howto_type elf_howto_table[
 #define R_386_ext_offset (R_386_TLS_TPOFF - R_386_standard)
 
   /* These relocs are a GNU extension.  */
-  HOWTO(R_386_TLS_TPOFF, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+  HOWTO(R_386_TLS_TPOFF, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_TPOFF",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_IE, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_IE, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_IE",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_GOTIE, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_GOTIE, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_GOTIE",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_LE, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_LE, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_LE",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_GD, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_GD, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_GD",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_LDM, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_LDM, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_LDM",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_16, 0, 2, 16, false, 0, complain_overflow_bitfield,
 	bfd_elf_generic_reloc, "R_386_16",
-	TRUE, 0xffff, 0xffff, FALSE),
-  HOWTO(R_386_PC16, 0, 1, 16, TRUE, 0, complain_overflow_bitfield,
+	true, 0xffff, 0xffff, false),
+  HOWTO(R_386_PC16, 0, 2, 16, true, 0, complain_overflow_bitfield,
 	bfd_elf_generic_reloc, "R_386_PC16",
-	TRUE, 0xffff, 0xffff, TRUE),
-  HOWTO(R_386_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffff, 0xffff, true),
+  HOWTO(R_386_8, 0, 1, 8, false, 0, complain_overflow_bitfield,
 	bfd_elf_generic_reloc, "R_386_8",
-	TRUE, 0xff, 0xff, FALSE),
-  HOWTO(R_386_PC8, 0, 0, 8, TRUE, 0, complain_overflow_signed,
+	true, 0xff, 0xff, false),
+  HOWTO(R_386_PC8, 0, 1, 8, true, 0, complain_overflow_signed,
 	bfd_elf_generic_reloc, "R_386_PC8",
-	TRUE, 0xff, 0xff, TRUE),
+	true, 0xff, 0xff, true),
 
 #define R_386_ext (R_386_PC8 + 1 - R_386_ext_offset)
 #define R_386_tls_offset (R_386_TLS_LDO_32 - R_386_ext)
   /* These are common with Solaris TLS implementation.  */
-  HOWTO(R_386_TLS_LDO_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+  HOWTO(R_386_TLS_LDO_32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_LDO_32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_IE_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_IE_32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_IE_32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_LE_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_LE_32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_LE_32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_DTPMOD32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_DTPMOD32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_DTPMOD32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_DTPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_DTPOFF32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_DTPOFF32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_TPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_TPOFF32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_TPOFF32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_SIZE32, 0, 2, 32, FALSE, 0, complain_overflow_unsigned,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_SIZE32, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_SIZE32",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_GOTDESC, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_GOTDESC, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_GOTDESC",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_TLS_DESC_CALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_TLS_DESC_CALL, 0, 0, 0, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_DESC_CALL",
-	FALSE, 0, 0, FALSE),
-  HOWTO(R_386_TLS_DESC, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	false, 0, 0, false),
+  HOWTO(R_386_TLS_DESC, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_TLS_DESC",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_IRELATIVE, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_IRELATIVE, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_IRELATIVE",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(R_386_GOT32X, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	true, 0xffffffff, 0xffffffff, false),
+  HOWTO(R_386_GOT32X, 0, 4, 32, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_386_GOT32X",
-	TRUE, 0xffffffff, 0xffffffff, FALSE),
+	true, 0xffffffff, 0xffffffff, false),
 
   /* Another gap.  */
 #define R_386_ext2 (R_386_GOT32X + 1 - R_386_tls_offset)
@@ -151,41 +148,37 @@ static reloc_howto_type elf_howto_table[
 /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_386_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_386_GNU_VTINHERIT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_386_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_386_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 false)			/* pcrel_offset */
 
 #define R_386_vt (R_386_GNU_VTENTRY + 1 - R_386_vt_offset)
 
 };
 
-#define X86_PCREL_TYPE_P(TYPE) ((TYPE) == R_386_PC32)
-
-#define X86_SIZE_TYPE_P(TYPE) ((TYPE) == R_386_SIZE32)
-
 #ifdef DEBUG_GEN_RELOC
 #define TRACE(str) \
   fprintf (stderr, "i386 bfd reloc lookup %d (%s)\n", code, str)
@@ -388,7 +381,7 @@ elf_i386_rtype_to_howto (unsigned r_type
   return &elf_howto_table[indx];
 }
 
-static bfd_boolean
+static bool
 elf_i386_info_to_howto_rel (bfd *abfd,
 			    arelent *cache_ptr,
 			    Elf_Internal_Rela *dst)
@@ -401,10 +394,10 @@ elf_i386_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return whether a symbol name implies a local label.  The UnixWare
@@ -413,18 +406,18 @@ elf_i386_info_to_howto_rel (bfd *abfd,
    If so, we should move the .X recognition into
    _bfd_elf_is_local_label_name.  */
 
-static bfd_boolean
+static bool
 elf_i386_is_local_label_name (bfd *abfd, const char *name)
 {
   if (name[0] == '.' && name[1] == 'X')
-    return TRUE;
+    return true;
 
   return _bfd_elf_is_local_label_name (abfd, name);
 }
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf_i386_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -435,7 +428,7 @@ elf_i386_grok_prstatus (bfd *abfd, Elf_I
       int pr_version = bfd_get_32 (abfd, note->descdata);
 
       if (pr_version != 1)
-	return FALSE;
+	return false;
 
       /* pr_cursig */
       elf_tdata (abfd)->core->signal = bfd_get_32 (abfd, note->descdata + 20);
@@ -452,7 +445,7 @@ elf_i386_grok_prstatus (bfd *abfd, Elf_I
       switch (note->descsz)
 	{
 	default:
-	  return FALSE;
+	  return false;
 
 	case 144:		/* Linux/i386 */
 	  /* pr_cursig */
@@ -474,7 +467,7 @@ elf_i386_grok_prstatus (bfd *abfd, Elf_I
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf_i386_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->namesz == 8 && strcmp (note->namedata, "FreeBSD") == 0)
@@ -482,7 +475,7 @@ elf_i386_grok_psinfo (bfd *abfd, Elf_Int
       int pr_version = bfd_get_32 (abfd, note->descdata);
 
       if (pr_version != 1)
-	return FALSE;
+	return false;
 
       elf_tdata (abfd)->core->program
 	= _bfd_elfcore_strndup (abfd, note->descdata + 8, 17);
@@ -494,7 +487,7 @@ elf_i386_grok_psinfo (bfd *abfd, Elf_Int
       switch (note->descsz)
 	{
 	default:
-	  return FALSE;
+	  return false;
 
 	case 124:		/* Linux/i386 elf_prpsinfo.  */
 	  elf_tdata (abfd)->core->pid
@@ -517,7 +510,7 @@ elf_i386_grok_psinfo (bfd *abfd, Elf_Int
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 /* Functions for the i386 ELF linker.
@@ -529,7 +522,7 @@ elf_i386_grok_psinfo (bfd *abfd, Elf_Int
    Functions named elf_i386_* are called by external routines, other
    functions are only called locally.  elf_i386_* functions appear
    in this file more or less in the order in which they are called
-   from external routines.  eg. elf_i386_check_relocs is called
+   from external routines.  eg. elf_i386_scan_relocs is called
    early in the link process, elf_i386_finish_dynamic_sections is
    one of the last functions.  */
 
@@ -843,18 +836,10 @@ 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.  */
 
-static bfd_boolean
+static enum elf_x86_tls_error_type
 elf_i386_check_tls_transition (asection *sec,
 			       bfd_byte *contents,
 			       Elf_Internal_Shdr *symtab_hdr,
@@ -868,7 +853,7 @@ elf_i386_check_tls_transition (asection
   struct elf_link_hash_entry *h;
   bfd_vma offset;
   bfd_byte *call;
-  bfd_boolean indirect_call;
+  bool indirect_call;
 
   offset = rel->r_offset;
   switch (r_type)
@@ -876,9 +861,9 @@ elf_i386_check_tls_transition (asection
     case R_386_TLS_GD:
     case R_386_TLS_LDM:
       if (offset < 2 || (rel + 1) >= relend)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
-      indirect_call = FALSE;
+      indirect_call = false;
       call = contents + offset + 4;
       val = *(call - 5);
       type = *(call - 6);
@@ -899,19 +884,19 @@ elf_i386_check_tls_transition (asection
 	     can transit to different access model.  */
 	  if ((offset + 10) > sec->size
 	      || (type != 0x8d && type != 0x04))
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 
 	  if (type == 0x04)
 	    {
 	      /* leal foo@tlsgd(,%ebx,1), %eax
 		 call ___tls_get_addr@PLT  */
 	      if (offset < 3)
-		return FALSE;
+		return elf_x86_tls_error_yes;
 
 	      if (*(call - 7) != 0x8d
 		  || val != 0x1d
 		  || call[0] != 0xe8)
-		return FALSE;
+		return elf_x86_tls_error_yes;
 	    }
 	  else
 	    {
@@ -929,7 +914,7 @@ elf_i386_check_tls_transition (asection
 		 is used to pass parameter to ___tls_get_addr.  */
 	      reg = val & 7;
 	      if ((val & 0xf8) != 0x80 || reg == 4 || reg == 0)
-		return FALSE;
+		return elf_x86_tls_error_yes;
 
 	      indirect_call = call[0] == 0xff;
 	      if (!(reg == 3 && call[0] == 0xe8 && call[5] == 0x90)
@@ -937,7 +922,7 @@ elf_i386_check_tls_transition (asection
 		  && !(indirect_call
 		       && (call[1] & 0xf8) == 0x90
 		       && (call[1] & 0x7) == reg))
-		return FALSE;
+		return elf_x86_tls_error_yes;
 	    }
 	}
       else
@@ -952,13 +937,13 @@ elf_i386_check_tls_transition (asection
 		addr32 call ___tls_get_addr
 	     can transit to different access model.  */
 	  if (type != 0x8d || (offset + 9) > sec->size)
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 
 	  /* %eax can't be used as the GOT base register since it is
 	     used to pass parameter to ___tls_get_addr.  */
 	  reg = val & 7;
 	  if ((val & 0xf8) != 0x80 || reg == 4 || reg == 0)
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 
 	  indirect_call = call[0] == 0xff;
 	  if (!(reg == 3 && call[0] == 0xe8)
@@ -966,45 +951,53 @@ elf_i386_check_tls_transition (asection
 	      && !(indirect_call
 		   && (call[1] & 0xf8) == 0x90
 		   && (call[1] & 0x7) == reg))
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 	}
 
       r_symndx = ELF32_R_SYM (rel[1].r_info);
       if (r_symndx < symtab_hdr->sh_info)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
       h = sym_hashes[r_symndx - symtab_hdr->sh_info];
       if (h == NULL
 	  || !((struct elf_x86_link_hash_entry *) h)->tls_get_addr)
-	return FALSE;
+	return elf_x86_tls_error_yes;
       else if (indirect_call)
-	return (ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32X);
+	return ((ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32X
+		 || ELF32_R_TYPE (rel[1].r_info) == R_386_GOT32)
+		? elf_x86_tls_error_none
+		: elf_x86_tls_error_yes);
       else
-	return (ELF32_R_TYPE (rel[1].r_info) == R_386_PC32
-		|| ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32);
+	return ((ELF32_R_TYPE (rel[1].r_info) == R_386_PC32
+		|| ELF32_R_TYPE (rel[1].r_info) == R_386_PLT32)
+		? elf_x86_tls_error_none
+		: elf_x86_tls_error_yes);
 
     case R_386_TLS_IE:
       /* Check transition from IE access model:
-		movl foo@indntpoff(%rip), %eax
-		movl foo@indntpoff(%rip), %reg
-		addl foo@indntpoff(%rip), %reg
+		movl foo@indntpoff, %eax
+		movl foo@indntpoff, %reg
+		addl foo@indntpoff, %reg
        */
 
       if (offset < 1 || (offset + 4) > sec->size)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
-      /* Check "movl foo@tpoff(%rip), %eax" first.  */
+      /* Check "movl foo@indntpoff, %eax" first.  */
       val = bfd_get_8 (abfd, contents + offset - 1);
       if (val == 0xa1)
-	return TRUE;
+	return elf_x86_tls_error_none;
 
       if (offset < 2)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
-      /* Check movl|addl foo@tpoff(%rip), %reg.   */
+      /* Check movl|addl foo@indntpoff, %reg.   */
       type = bfd_get_8 (abfd, contents + offset - 2);
-      return ((type == 0x8b || type == 0x03)
-	      && (val & 0xc7) == 0x05);
+      if (type != 0x8b && type != 0x03)
+	return elf_x86_tls_error_add_mov;
+      return ((val & 0xc7) == 0x05
+	      ? elf_x86_tls_error_none
+	      : elf_x86_tls_error_yes);
 
     case R_386_TLS_GOTIE:
     case R_386_TLS_IE_32:
@@ -1015,14 +1008,16 @@ elf_i386_check_tls_transition (asection
        */
 
       if (offset < 2 || (offset + 4) > sec->size)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
       val = bfd_get_8 (abfd, contents + offset - 1);
       if ((val & 0xc0) != 0x80 || (val & 7) == 4)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
       type = bfd_get_8 (abfd, contents + offset - 2);
-      return type == 0x8b || type == 0x2b || type == 0x03;
+      return (type == 0x8b || type == 0x2b || type == 0x03
+	      ? elf_x86_tls_error_none
+	      : elf_x86_tls_error_add_sub_mov);
 
     case R_386_TLS_GOTDESC:
       /* Check transition from GDesc access model:
@@ -1033,26 +1028,19 @@ elf_i386_check_tls_transition (asection
 	 going to be eax.  */
 
       if (offset < 2 || (offset + 4) > sec->size)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
       if (bfd_get_8 (abfd, contents + offset - 2) != 0x8d)
-	return FALSE;
+	return elf_x86_tls_error_lea;
 
       val = bfd_get_8 (abfd, contents + offset - 1);
-      return (val & 0xc7) == 0x83;
+      return ((val & 0xc7) == 0x83
+	      ? elf_x86_tls_error_none
+	      : elf_x86_tls_error_yes);
 
     case R_386_TLS_DESC_CALL:
-      /* Check transition from GDesc access model:
-		call *x@tlsdesc(%eax)
-       */
-      if (offset + 2 <= sec->size)
-	{
-	  /* Make sure that it's a call *x@tlsdesc(%eax).  */
-	  call = contents + offset;
-	  return call[0] == 0xff && call[1] == 0x10;
-	}
-
-      return FALSE;
+      /* It has been checked in elf_i386_tls_transition.  */
+      return elf_x86_tls_error_none;
 
     default:
       abort ();
@@ -1062,7 +1050,7 @@ elf_i386_check_tls_transition (asection
 /* Return TRUE if the TLS access transition is OK or no transition
    will be performed.  Update R_TYPE if there is a transition.  */
 
-static bfd_boolean
+static bool
 elf_i386_tls_transition (struct bfd_link_info *info, bfd *abfd,
 			 asection *sec, bfd_byte *contents,
 			 Elf_Internal_Shdr *symtab_hdr,
@@ -1071,34 +1059,74 @@ elf_i386_tls_transition (struct bfd_link
 			 const Elf_Internal_Rela *rel,
 			 const Elf_Internal_Rela *relend,
 			 struct elf_link_hash_entry *h,
-			 unsigned long r_symndx,
-			 bfd_boolean from_relocate_section)
+			 Elf_Internal_Sym *sym,
+			 bool from_relocate_section)
 {
   unsigned int from_type = *r_type;
   unsigned int to_type = from_type;
-  bfd_boolean check = TRUE;
+  bool check = true;
+  unsigned int to_le_type, to_ie_type;
+  bfd_vma offset;
+  bfd_byte *call;
 
   /* Skip TLS transition for functions.  */
   if (h != NULL
       && (h->type == STT_FUNC
 	  || h->type == STT_GNU_IFUNC))
-    return TRUE;
+    return true;
+
+  if (get_elf_backend_data (abfd)->target_os == is_solaris)
+    {
+      /* NB: Solaris only supports R_386_TLS_LE and R_386_TLS_IE.  */
+      to_le_type = R_386_TLS_LE;
+      to_ie_type = R_386_TLS_IE;
+    }
+  else
+    {
+      to_le_type = R_386_TLS_LE_32;
+      to_ie_type = R_386_TLS_IE_32;
+    }
 
   switch (from_type)
     {
+    case R_386_TLS_DESC_CALL:
+      /* Check valid GDesc call:
+		call *x@tlscall(%eax)
+       */
+      offset = rel->r_offset;
+      call = NULL;
+      if (offset + 2 <= sec->size)
+	{
+	  /* Make sure that it's a call *x@tlscall(%eax).  */
+	  call = contents + offset;
+	  if (call[0] != 0xff || call[1] != 0x10)
+	    call = NULL;
+	}
+
+      if (call == NULL)
+	{
+	  _bfd_x86_elf_link_report_tls_transition_error
+	    (info, abfd, sec, symtab_hdr, h, sym, rel,
+	     "R_386_TLS_DESC_CALL", NULL,
+	     elf_x86_tls_error_indirect_call);
+
+	  return false;
+	}
+
+      /* Fall through.  */
+
     case R_386_TLS_GD:
     case R_386_TLS_GOTDESC:
-    case R_386_TLS_DESC_CALL:
     case R_386_TLS_IE_32:
     case R_386_TLS_IE:
     case R_386_TLS_GOTIE:
       if (bfd_link_executable (info))
 	{
 	  if (h == NULL)
-	    to_type = R_386_TLS_LE_32;
+	    to_type = to_le_type;
 	  else if (from_type != R_386_TLS_IE
 		   && from_type != R_386_TLS_GOTIE)
-	    to_type = R_386_TLS_IE_32;
+	    to_type = to_ie_type;
 	}
 
       /* When we are called from elf_i386_relocate_section, there may
@@ -1108,7 +1136,7 @@ elf_i386_tls_transition (struct bfd_link
 	  unsigned int new_to_type = to_type;
 
 	  if (TLS_TRANSITION_IE_TO_LE_P (info, h, tls_type))
-	    new_to_type = R_386_TLS_LE_32;
+	    new_to_type = to_le_type;
 
 	  if (to_type == R_386_TLS_GD
 	      || to_type == R_386_TLS_GOTDESC
@@ -1117,11 +1145,11 @@ elf_i386_tls_transition (struct bfd_link
 	      if (tls_type == GOT_TLS_IE_POS)
 		new_to_type = R_386_TLS_GOTIE;
 	      else if (tls_type & GOT_TLS_IE)
-		new_to_type = R_386_TLS_IE_32;
+		new_to_type = to_ie_type;
 	    }
 
 	  /* We checked the transition before when we were called from
-	     elf_i386_check_relocs.  We only want to check the new
+	     elf_i386_scan_relocs.  We only want to check the new
 	     transition which hasn't been checked before.  */
 	  check = new_to_type != to_type && from_type == to_type;
 	  to_type = new_to_type;
@@ -1131,60 +1159,41 @@ elf_i386_tls_transition (struct bfd_link
 
     case R_386_TLS_LDM:
       if (bfd_link_executable (info))
-	to_type = R_386_TLS_LE_32;
+	to_type = to_le_type;
       break;
 
     default:
-      return TRUE;
+      return true;
     }
 
   /* Return TRUE if there is no transition.  */
   if (from_type == to_type)
-    return TRUE;
+    return true;
 
   /* Check if the transition can be performed.  */
+  enum elf_x86_tls_error_type tls_error;
   if (check
-      && ! elf_i386_check_tls_transition (sec, contents,
-					  symtab_hdr, sym_hashes,
-					  from_type, rel, relend))
+      && ((tls_error = elf_i386_check_tls_transition (sec, contents,
+						      symtab_hdr,
+						      sym_hashes,
+						      from_type, rel,
+						      relend))
+	  != elf_x86_tls_error_none))
     {
       reloc_howto_type *from, *to;
-      const char *name;
 
       from = elf_i386_rtype_to_howto (from_type);
       to = elf_i386_rtype_to_howto (to_type);
 
-      if (h)
-	name = h->root.root.string;
-      else
-	{
-	  struct elf_x86_link_hash_table *htab;
-
-	  htab = elf_x86_hash_table (info, I386_ELF_DATA);
-	  if (htab == NULL)
-	    name = "*unknown*";
-	  else
-	    {
-	      Elf_Internal_Sym *isym;
+      _bfd_x86_elf_link_report_tls_transition_error
+	(info, abfd, sec, symtab_hdr, h, sym, rel, from->name,
+	 to->name, tls_error);
 
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-					    abfd, r_symndx);
-	      name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
-	    }
-	}
-
-      _bfd_error_handler
-	/* xgettext:c-format */
-	(_("%pB: TLS transition from %s to %s against `%s'"
-	   " at %#" PRIx64 " in section `%pA' failed"),
-	 abfd, from->name, to->name, name,
-	 (uint64_t) rel->r_offset, sec);
-      bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   *r_type = to_type;
-  return TRUE;
+  return true;
 }
 
 /* With the local symbol, foo, we convert
@@ -1200,6 +1209,10 @@ elf_i386_tls_transition (struct bfd_link
    to
    test $foo, %reg1
    and convert
+   push foo@GOT[(%reg)]
+   to
+   push $foo
+   and convert
    binop foo@GOT[(%reg1)], %reg2
    to
    binop $foo, %reg2
@@ -1207,40 +1220,47 @@ elf_i386_tls_transition (struct bfd_link
    instructions.  */
 
 static
-bfd_boolean
+bool
 elf_i386_convert_load_reloc (bfd *abfd, Elf_Internal_Shdr *symtab_hdr,
 			     bfd_byte *contents,
 			     unsigned int *r_type_p,
 			     Elf_Internal_Rela *irel,
 			     struct elf_link_hash_entry *h,
-			     bfd_boolean *converted,
+			     bool *converted,
 			     struct bfd_link_info *link_info)
 {
   struct elf_x86_link_hash_table *htab;
   unsigned int opcode;
   unsigned int modrm;
-  bfd_boolean baseless;
+  bool baseless;
   Elf_Internal_Sym *isym;
   unsigned int addend;
   unsigned int nop;
   bfd_vma nop_offset;
-  bfd_boolean is_pic;
-  bfd_boolean to_reloc_32;
+  bool is_pic, is_branch = false;
+  bool to_reloc_32;
+  bool abs_symbol;
   unsigned int r_type;
   unsigned int r_symndx;
   bfd_vma roff = irel->r_offset;
-  bfd_boolean local_ref;
+  bool local_ref;
   struct elf_x86_link_hash_entry *eh;
 
   if (roff < 2)
-    return TRUE;
+    return true;
 
   /* Addend for R_386_GOT32X relocations must be 0.  */
   addend = bfd_get_32 (abfd, contents + roff);
   if (addend != 0)
-    return TRUE;
+    return true;
 
   htab = elf_x86_hash_table (link_info, I386_ELF_DATA);
+  if (htab == NULL || ! is_x86_elf (abfd, htab))
+    {
+      bfd_set_error (bfd_error_wrong_format);
+      return false;
+    }
+
   is_pic = bfd_link_pic (link_info);
 
   r_type = *r_type_p;
@@ -1249,6 +1269,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 +1291,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;
 
@@ -1269,14 +1300,31 @@ elf_i386_convert_load_reloc (bfd *abfd,
 	(_("%pB: direct GOT relocation R_386_GOT32X against `%s' without base"
 	   " register can not be used when making a shared object"),
 	 abfd, name);
-      return FALSE;
+      return false;
     }
 
   opcode = bfd_get_8 (abfd, contents + roff - 2);
 
-  /* Convert to R_386_32 if PIC is false or there is no base
-     register.  */
-  to_reloc_32 = !is_pic || baseless;
+  if (opcode == 0xff)
+    {
+      switch (modrm & 0x38)
+	{
+	case 0x10: /* CALL */
+	case 0x20: /* JMP */
+	  is_branch = true;
+	  break;
+
+	case 0x30: /* PUSH */
+	  break;
+
+	default:
+	  return true;
+	}
+    }
+
+  /* Convert to R_386_32 if PIC is false (if PIC is true we already know
+     there is a base register).  */
+  to_reloc_32 = !is_pic;
 
   eh = elf_x86_hash_entry (h);
 
@@ -1284,7 +1332,7 @@ elf_i386_convert_load_reloc (bfd *abfd,
      reloc.  */
   if (h == NULL)
     {
-      if (opcode == 0x0ff)
+      if (is_branch)
 	/* Convert "call/jmp *foo@GOT[(%reg)]".  */
 	goto convert_branch;
       else
@@ -1294,32 +1342,29 @@ 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
       && !eh->linker_def
       && local_ref)
     {
-      if (opcode == 0xff)
+      if (is_branch)
 	{
 	  /* No direct branch to 0 for PIC.  */
 	  if (is_pic)
-	    return TRUE;
+	    return true;
 	  else
 	    goto convert_branch;
 	}
       else
 	{
 	  /* We can convert load of address 0 to R_386_32.  */
-	  to_reloc_32 = TRUE;
+	  to_reloc_32 = true;
 	  goto convert_load;
 	}
     }
 
-  if (opcode == 0xff)
+  if (is_branch)
     {
       /* We have "call/jmp *foo@GOT[(%reg)]".  */
       if ((h->root.type == bfd_link_hash_defined
@@ -1327,7 +1372,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)
 	    {
@@ -1369,19 +1414,20 @@ convert_branch:
 	  bfd_put_32 (abfd, -4, contents + irel->r_offset);
 	  irel->r_info = ELF32_R_INFO (r_symndx, R_386_PC32);
 	  *r_type_p = R_386_PC32;
-	  *converted = TRUE;
+	  *converted = true;
 	}
     }
   else
     {
       /* We have "mov foo@GOT[(%re1g)], %reg2",
-	 "test %reg1, foo@GOT(%reg2)" and
+	 "test %reg1, foo@GOT(%reg2)",
+	 "push foo@GOT[(%reg)]", or
 	 "binop foo@GOT[(%reg1)], %reg2".
 
 	 Avoid optimizing _DYNAMIC since ld.so may use its
 	 link-time address.  */
       if (h == htab->elf.hdynamic)
-	return TRUE;
+	return true;
 
       /* def_regular is set by an assignment in a linker script in
 	 bfd_elf_record_link_assignment.  start_stop is set on
@@ -1393,9 +1439,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
@@ -1417,7 +1466,7 @@ convert_load:
 	    {
 	      /* Only R_386_32 is supported.  */
 	      if (!to_reloc_32)
-		return TRUE;
+		return true;
 
 	      if (opcode == 0x85)
 		{
@@ -1426,15 +1475,23 @@ convert_load:
 		  modrm = 0xc0 | (modrm & 0x38) >> 3;
 		  opcode = 0xf7;
 		}
-	      else
+	      else if ((opcode | 0x38) == 0x3b)
 		{
 		  /* Convert "binop foo@GOT(%reg1), %reg2" to
 		     "binop $foo, %reg2".  */
-		  modrm = (0xc0
-			   | (modrm & 0x38) >> 3
-			   | (opcode & 0x3c));
+		  modrm = 0xc0 | ((modrm & 0x38) >> 3) | (opcode & 0x38);
 		  opcode = 0x81;
 		}
+	      else if (opcode == 0xff)
+		{
+		  /* Convert "push foo@GOT(%reg)" to
+		     "push $foo".  */
+		  modrm = 0x68; /* Really the opcode.  */
+		  opcode = 0x2e; /* Really a meaningless %cs: prefix.  */
+		}
+	      else
+		return true;
+
 	      bfd_put_8 (abfd, modrm, contents + roff - 1);
 	      r_type = R_386_32;
 	    }
@@ -1442,53 +1499,39 @@ convert_load:
 	  bfd_put_8 (abfd, opcode, contents + roff - 2);
 	  irel->r_info = ELF32_R_INFO (r_symndx, r_type);
 	  *r_type_p = r_type;
-	  *converted = TRUE;
+	  *converted = true;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-/* Rename some of the generic section flags to better document how they
-   are used here.  */
-#define check_relocs_failed	sec_flg0
-
 /* Look through the relocs for a section during the first phase, and
-   calculate needed space in the global offset table, procedure linkage
-   table, and dynamic reloc sections.  */
+   calculate needed space in the global offset table, and procedure
+   linkage table.  */
 
-static bfd_boolean
-elf_i386_check_relocs (bfd *abfd,
-		       struct bfd_link_info *info,
-		       asection *sec,
-		       const Elf_Internal_Rela *relocs)
+static bool
+elf_i386_scan_relocs (bfd *abfd,
+		      struct bfd_link_info *info,
+		      asection *sec,
+		      const Elf_Internal_Rela *relocs)
 {
   struct elf_x86_link_hash_table *htab;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
-  asection *sreloc;
   bfd_byte *contents;
-  bfd_boolean converted;
+  bool converted;
 
   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;
+    return true;
 
   htab = elf_x86_hash_table (info, I386_ELF_DATA);
   if (htab == NULL)
     {
       sec->check_relocs_failed = 1;
-      return FALSE;
+      return false;
     }
 
   BFD_ASSERT (is_x86_elf (abfd, htab));
@@ -1496,18 +1539,16 @@ elf_i386_check_relocs (bfd *abfd,
   /* Get the section contents.  */
   if (elf_section_data (sec)->this_hdr.contents != NULL)
     contents = elf_section_data (sec)->this_hdr.contents;
-  else if (!bfd_malloc_and_get_section (abfd, sec, &contents))
+  else if (!_bfd_elf_mmap_section_contents (abfd, sec, &contents))
     {
       sec->check_relocs_failed = 1;
-      return FALSE;
+      return false;
     }
 
   symtab_hdr = &elf_symtab_hdr (abfd);
   sym_hashes = elf_sym_hashes (abfd);
 
-  converted = FALSE;
-
-  sreloc = NULL;
+  converted = false;
 
   rel_end = relocs + sec->reloc_count;
   for (rel = relocs; rel < rel_end; rel++)
@@ -1518,11 +1559,17 @@ elf_i386_check_relocs (bfd *abfd,
       struct elf_x86_link_hash_entry *eh;
       Elf_Internal_Sym *isym;
       const char *name;
-      bfd_boolean size_reloc;
+      bool size_reloc;
+      bool no_dynreloc;
+      reloc_howto_type *howto;
 
       r_symndx = ELF32_R_SYM (rel->r_info);
       r_type = ELF32_R_TYPE (rel->r_info);
 
+      /* Don't check R_386_NONE.  */
+      if (r_type == R_386_NONE)
+	continue;
+
       if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr))
 	{
 	  /* xgettext:c-format */
@@ -1531,10 +1578,21 @@ elf_i386_check_relocs (bfd *abfd,
 	  goto error_return;
 	}
 
+      howto = elf_i386_rtype_to_howto (r_type);
+      if (rel->r_offset + bfd_get_reloc_size (howto) > sec->size)
+	{
+	  /* xgettext:c-format */
+	  _bfd_error_handler
+	    (_("%pB: bad reloc offset (%#" PRIx32 " > %#" PRIx32 ") for"
+	       " section `%pA'"), abfd, (uint32_t) rel->r_offset,
+	     (uint32_t) sec->size, sec);
+	  goto error_return;
+	}
+
       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;
@@ -1542,7 +1600,7 @@ elf_i386_check_relocs (bfd *abfd,
 	  /* Check relocation against local STT_GNU_IFUNC symbol.  */
 	  if (ELF32_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
-	      h = _bfd_elf_x86_get_local_sym_hash (htab, abfd, rel, TRUE);
+	      h = _bfd_elf_x86_get_local_sym_hash (htab, abfd, rel, true);
 	      if (h == NULL)
 		goto error_return;
 
@@ -1587,15 +1645,19 @@ 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,
-				     rel, rel_end, h, r_symndx, FALSE))
+				     rel, rel_end, h, isym, false))
 	goto error_return;
 
       /* Check if _GLOBAL_OFFSET_TABLE_ is referenced.  */
       if (h == htab->elf.hgot)
-	htab->got_referenced = TRUE;
+	htab->got_referenced = true;
 
       switch (r_type)
 	{
@@ -1622,9 +1684,13 @@ elf_i386_check_relocs (bfd *abfd,
 	  break;
 
 	case R_386_SIZE32:
-	  size_reloc = TRUE;
+	  size_reloc = true;
 	  goto do_size;
 
+	case R_386_TLS_DESC_CALL:
+	  htab->has_tls_desc_call = 1;
+	  goto need_got;
+
 	case R_386_TLS_IE_32:
 	case R_386_TLS_IE:
 	case R_386_TLS_GOTIE:
@@ -1636,7 +1702,7 @@ elf_i386_check_relocs (bfd *abfd,
 	case R_386_GOT32X:
 	case R_386_TLS_GD:
 	case R_386_TLS_GOTDESC:
-	case R_386_TLS_DESC_CALL:
+ need_got:
 	  /* This symbol requires a global offset table entry.  */
 	  {
 	    int tls_type, old_tls_type;
@@ -1674,25 +1740,12 @@ elf_i386_check_relocs (bfd *abfd,
 	      {
 		bfd_signed_vma *local_got_refcounts;
 
+		if (!elf_x86_allocate_local_got_info (abfd,
+						      symtab_hdr->sh_info))
+		      goto error_return;
+
 		/* This is a global offset table entry for a local symbol.  */
 		local_got_refcounts = elf_local_got_refcounts (abfd);
-		if (local_got_refcounts == NULL)
-		  {
-		    bfd_size_type size;
-
-		    size = symtab_hdr->sh_info;
-		    size *= (sizeof (bfd_signed_vma)
-			     + sizeof (bfd_vma) + sizeof(char));
-		    local_got_refcounts = (bfd_signed_vma *)
-			bfd_zalloc (abfd, size);
-		    if (local_got_refcounts == NULL)
-		      goto error_return;
-		    elf_local_got_refcounts (abfd) = local_got_refcounts;
-		    elf_x86_local_tlsdesc_gotent (abfd)
-		      = (bfd_vma *) (local_got_refcounts + symtab_hdr->sh_info);
-		    elf_x86_local_got_tls_type (abfd)
-		      = (char *) (local_got_refcounts + 2 * symtab_hdr->sh_info);
-		  }
 		local_got_refcounts[r_symndx] = 1;
 		old_tls_type = elf_x86_local_got_tls_type (abfd) [r_symndx];
 	      }
@@ -1716,7 +1769,7 @@ elf_i386_check_relocs (bfd *abfd,
 		      name = h->root.root.string;
 		    else
 		      name = bfd_elf_sym_name (abfd, symtab_hdr, isym,
-					     NULL);
+					       NULL);
 		    _bfd_error_handler
 		      /* xgettext:c-format */
 		      (_("%pB: `%s' accessed both as normal and "
@@ -1739,7 +1792,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)
@@ -1750,7 +1803,7 @@ create_got:
 		  if (r_type == R_386_GOTOFF
 		      && h->root.type == bfd_link_hash_undefweak
 		      && bfd_link_executable (info))
-		    htab->got_referenced = TRUE;
+		    htab->got_referenced = true;
 		}
 	      break;
 	    }
@@ -1769,7 +1822,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.  */
@@ -1777,7 +1830,7 @@ do_relocation:
 	      && (bfd_link_executable (info)
 		  || h->type == STT_GNU_IFUNC))
 	    {
-	      bfd_boolean func_pointer_ref = FALSE;
+	      bool func_pointer_ref = false;
 
 	      if (r_type == R_386_PC32)
 		{
@@ -1799,11 +1852,20 @@ do_relocation:
 		}
 	      else
 		{
-		  h->pointer_equality_needed = 1;
-		  /* R_386_32 can be resolved at run-time.  */
+		  /* R_386_32 can be resolved at run-time.  Function
+		     pointer reference doesn't need PLT for pointer
+		     equality.  */
 		  if (r_type == R_386_32
 		      && (sec->flags & SEC_READONLY) == 0)
-		    func_pointer_ref = TRUE;
+		    func_pointer_ref = true;
+
+		  /* IFUNC symbol needs pointer equality in PDE so that
+		     function pointer reference will be resolved to its
+		     PLT entry directly.  */
+		  if (!func_pointer_ref
+		      || (bfd_link_pde (info)
+			  && h->type == STT_GNU_IFUNC))
+		    h->pointer_equality_needed = 1;
 		}
 
 	      if (!func_pointer_ref)
@@ -1816,40 +1878,51 @@ do_relocation:
 		     adjust_dynamic_symbol.  */
 		  h->non_got_ref = 1;
 
+		  if (!elf_has_indirect_extern_access (sec->owner))
+		    eh->non_got_ref_without_indirect_extern_access = 1;
+
 		  /* We may need a .plt entry if the symbol is a function
 		     defined in a shared lib or is a function referenced
 		     from the code or read-only section.  */
 		  if (!h->def_regular
 		      || (sec->flags & (SEC_CODE | SEC_READONLY)) != 0)
 		    h->plt.refcount = 1;
+
+		  if (htab->elf.target_os != is_solaris
+		      && h->pointer_equality_needed
+		      && h->type == STT_FUNC
+		      && eh->def_protected
+		      && !SYMBOL_DEFINED_NON_SHARED_P (h)
+		      && h->def_dynamic)
+		    {
+		      /* Disallow non-canonical reference to canonical
+			 protected function.  */
+		      _bfd_error_handler
+			/* xgettext:c-format */
+			(_("%pB: non-canonical reference to canonical "
+			   "protected function `%s' in %pB"),
+			 abfd, h->root.root.string,
+			 h->root.u.def.section->owner);
+		      bfd_set_error (bfd_error_bad_value);
+		      goto error_return;
+		    }
 		}
 	    }
 
-	  size_reloc = FALSE;
-do_size:
-	  if (NEED_DYNAMIC_RELOCATION_P (info, FALSE, h, sec, r_type,
-					 R_386_32))
+	  size_reloc = false;
+	do_size:
+	  if (!no_dynreloc
+	      && NEED_DYNAMIC_RELOCATION_P (false, info, false, h, sec,
+					    r_type, R_386_32))
 	    {
 	      struct elf_dyn_relocs *p;
 	      struct elf_dyn_relocs **head;
 
-	      /* We must copy these reloc types into the output file.
-		 Create a reloc section in dynobj and make room for
-		 this reloc.  */
-	      if (sreloc == NULL)
-		{
-		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, 2, abfd, /*rela?*/ FALSE);
-
-		  if (sreloc == NULL)
-		    goto error_return;
-		}
-
 	      /* 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
 		{
@@ -1859,7 +1932,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 +1948,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)
@@ -1915,13 +1988,14 @@ do_size:
 
   if (elf_section_data (sec)->this_hdr.contents != contents)
     {
-      if (!converted && !info->keep_memory)
-	free (contents);
+      if (!converted)
+	_bfd_elf_munmap_section_contents (sec, contents);
       else
 	{
 	  /* Cache the section contents for elf_link_input_bfd if any
 	     load is converted or --no-keep-memory isn't used.  */
 	  elf_section_data (sec)->this_hdr.contents = contents;
+	  info->cache_size += sec->size;
 	}
     }
 
@@ -1929,19 +2003,36 @@ do_size:
   if (elf_section_data (sec)->relocs != relocs && converted)
     elf_section_data (sec)->relocs = (Elf_Internal_Rela *) relocs;
 
-  return TRUE;
+  return true;
 
-error_return:
+ error_return:
   if (elf_section_data (sec)->this_hdr.contents != contents)
-    free (contents);
+    _bfd_elf_munmap_section_contents (sec, contents);
   sec->check_relocs_failed = 1;
-  return FALSE;
+  return false;
+}
+
+static bool
+elf_i386_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
+{
+  bfd *abfd;
+
+  /* Scan relocations after rel_from_abs has been set on __ehdr_start.  */
+  for (abfd = info->input_bfds;
+       abfd != (bfd *) NULL;
+       abfd = abfd->link.next)
+    if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+	&& !_bfd_elf_link_iterate_on_relocs (abfd, info,
+					     elf_i386_scan_relocs))
+      return false;
+
+  return _bfd_x86_elf_early_size_sections (output_bfd, info);
 }
 
 /* Set the correct type for an x86 ELF section.  We do this by the
    section name, which is a hack, but ought to work.  */
 
-static bfd_boolean
+static bool
 elf_i386_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 			Elf_Internal_Shdr *hdr,
 			asection *sec)
@@ -1969,7 +2060,7 @@ elf_i386_fake_sections (bfd *abfd ATTRIB
   if (strcmp (name, ".reloc") == 0)
     hdr->sh_type = SHT_PROGBITS;
 
-  return TRUE;
+  return true;
 }
 
 /* Return the relocation value for @tpoff relocation
@@ -1993,7 +2084,7 @@ elf_i386_tpoff (struct bfd_link_info *in
 
 /* Relocate an i386 ELF section.  */
 
-static bfd_boolean
+static int
 elf_i386_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -2011,21 +2102,22 @@ elf_i386_relocate_section (bfd *output_b
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *wrel;
   Elf_Internal_Rela *relend;
-  bfd_boolean is_vxworks_tls;
+  bool is_vxworks_tls;
+  unsigned expected_tls_le;
   unsigned plt_entry_size;
 
-  /* Skip if check_relocs failed.  */
+  /* Skip if check_relocs or scan_relocs failed.  */
   if (input_section->check_relocs_failed)
-    return FALSE;
+    return false;
 
   htab = elf_x86_hash_table (info, I386_ELF_DATA);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (!is_x86_elf (input_bfd, htab))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   symtab_hdr = &elf_symtab_hdr (input_bfd);
@@ -2034,7 +2126,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"));
@@ -2056,14 +2148,14 @@ elf_i386_relocate_section (bfd *output_b
       asection *sec;
       bfd_vma off, offplt, plt_offset;
       bfd_vma relocation;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       bfd_reloc_status_type r;
       unsigned int indx;
       int tls_type;
       bfd_vma st_size;
       asection *resolved_plt;
-      bfd_boolean resolved_to_zero;
-      bfd_boolean relative_reloc;
+      bool resolved_to_zero;
+      bool relative_reloc;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       if (r_type == R_386_GNU_VTINHERIT
@@ -2082,7 +2174,7 @@ elf_i386_relocate_section (bfd *output_b
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -2100,9 +2192,9 @@ elf_i386_relocate_section (bfd *output_b
 	      bfd_vma addend;
 	      bfd_byte *where = contents + rel->r_offset;
 
-	      switch (howto->size)
+	      switch (bfd_get_reloc_size (howto))
 		{
-		case 0:
+		case 1:
 		  addend = bfd_get_8 (input_bfd, where);
 		  if (howto->pc_relative)
 		    {
@@ -2110,7 +2202,7 @@ elf_i386_relocate_section (bfd *output_b
 		      addend += 1;
 		    }
 		  break;
-		case 1:
+		case 2:
 		  addend = bfd_get_16 (input_bfd, where);
 		  if (howto->pc_relative)
 		    {
@@ -2118,7 +2210,7 @@ elf_i386_relocate_section (bfd *output_b
 		      addend += 2;
 		    }
 		  break;
-		case 2:
+		case 4:
 		  addend = bfd_get_32 (input_bfd, where);
 		  if (howto->pc_relative)
 		    {
@@ -2141,20 +2233,20 @@ elf_i386_relocate_section (bfd *output_b
 		  addend += msec->output_section->vma + msec->output_offset;
 		}
 
-	      switch (howto->size)
+	      switch (bfd_get_reloc_size (howto))
 		{
-		case 0:
+		case 1:
 		  /* FIXME: overflow checks.  */
 		  if (howto->pc_relative)
 		    addend -= 1;
 		  bfd_put_8 (input_bfd, addend, where);
 		  break;
-		case 1:
+		case 2:
 		  if (howto->pc_relative)
 		    addend -= 2;
 		  bfd_put_16 (input_bfd, addend, where);
 		  break;
-		case 2:
+		case 4:
 		  if (howto->pc_relative)
 		    addend -= 4;
 		  bfd_put_32 (input_bfd, addend, where);
@@ -2166,7 +2258,7 @@ elf_i386_relocate_section (bfd *output_b
 	    {
 	      /* Relocate against local STT_GNU_IFUNC symbol.  */
 	      h = _bfd_elf_x86_get_local_sym_hash (htab, input_bfd, rel,
-						   FALSE);
+						   false);
 	      if (h == NULL)
 		abort ();
 
@@ -2177,8 +2269,8 @@ elf_i386_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2302,7 +2394,7 @@ elf_i386_relocate_section (bfd *output_b
 		    {
 		      /* This references the local defitionion.  We must
 			 initialize this entry in the global offset table.
-			 Since the offset must always be a multiple of 8,
+			 Since the offset must always be a multiple of 4,
 			 we use the least significant bit to record
 			 whether we have initialized it already.
 
@@ -2362,7 +2454,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
@@ -2374,7 +2466,7 @@ bad_ifunc_reloc:
 		   "symbol `%s' isn't supported"), input_bfd,
 		 howto->name, name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 
 	    case R_386_32:
 	      /* Generate dynamic relcoation only when there is a
@@ -2386,7 +2478,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,
@@ -2409,6 +2501,12 @@ do_ifunc_pointer:
 
 		      /* This symbol is resolved locally.  */
 		      outrel.r_info = ELF32_R_INFO (0, R_386_IRELATIVE);
+
+		      if (htab->params->report_relative_reloc)
+			_bfd_x86_elf_link_report_relative_reloc
+			  (info, input_section, h, sym,
+			   "R_386_IRELATIVE", &outrel);
+
 		      bfd_put_32 (output_bfd,
 				  (h->root.u.def.value
 				   + h->root.u.def.section->output_section->vma
@@ -2443,13 +2541,18 @@ do_ifunc_pointer:
 	      goto do_relocation;
 
 	    case R_386_GOTOFF:
+	      /* NB: We can't use the PLT entry as the function address
+		 for PIC since the PIC register may not be set up
+		 properly for indirect call. */
+	      if (bfd_link_pic (info))
+		goto bad_ifunc_reloc;
 	      relocation -= (gotplt->output_section->vma
 			     + gotplt->output_offset);
 	      goto do_relocation;
 	    }
 	}
 
-skip_ifunc:
+    skip_ifunc:
       resolved_to_zero = (eh != NULL
 			  && UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh));
 
@@ -2462,7 +2565,7 @@ skip_ifunc:
 	  if (htab->elf.sgot == NULL)
 	    abort ();
 
-	  relative_reloc = FALSE;
+	  relative_reloc = false;
 	  if (h != NULL)
 	    {
 	      off = h->got.offset;
@@ -2483,18 +2586,20 @@ skip_ifunc:
 		      bfd_put_32 (output_bfd, relocation,
 				  htab->elf.sgot->contents + off);
 		      h->got.offset |= 1;
-
-		      if (GENERATE_RELATIVE_RELOC_P (info, h))
+		      /* NB: Don't generate relative relocation here if
+			 it has been generated by DT_RELR.  */
+		      if (!info->enable_dt_relr
+			  && GENERATE_RELATIVE_RELOC_P (info, h))
 			{
 			  /* PR ld/21402: If this symbol isn't dynamic
 			     in PIC, generate R_386_RELATIVE here.  */
 			  eh->no_finish_dynamic_symbol = 1;
-			  relative_reloc = TRUE;
+			  relative_reloc = true;
 			}
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -2514,8 +2619,10 @@ skip_ifunc:
 			      htab->elf.sgot->contents + off);
 		  local_got_offsets[r_symndx] |= 1;
 
-		  if (bfd_link_pic (info))
-		    relative_reloc = TRUE;
+		  /* NB: Don't generate relative relocation here if it
+		     has been generated by DT_RELR.  */
+		  if (!info->enable_dt_relr && bfd_link_pic (info))
+		    relative_reloc = true;
 		}
 	    }
 
@@ -2532,6 +2639,12 @@ skip_ifunc:
 				 + htab->elf.sgot->output_offset
 				 + off);
 	      outrel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+
+	      if (htab->params->report_relative_reloc)
+		_bfd_x86_elf_link_report_relative_reloc
+		  (info, input_section, h, sym, "R_386_RELATIVE",
+		   &outrel);
+
 	      elf_append_rel (output_bfd, s, &outrel);
 	    }
 
@@ -2551,7 +2664,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);
@@ -2565,7 +2678,7 @@ disallow_got32:
 		       " when making a shared object"),
 		     input_bfd, howto->name, name);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	    }
 	  else
@@ -2614,7 +2727,7 @@ disallow_got32:
 		       " `%s' can not be used when making a shared object"),
 		     input_bfd, v, h->root.root.string);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	      else if (!SYMBOL_REFERENCES_LOCAL_P (info, h)
 		       && (h->type == STT_FUNC
@@ -2629,7 +2742,7 @@ disallow_got32:
 		     h->type == STT_FUNC ? "function" : "data",
 		     h->root.root.string);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	    }
 
@@ -2646,7 +2759,7 @@ disallow_got32:
 	  /* Use global offset table as symbol value.  */
 	  relocation = htab->elf.sgotplt->output_section->vma
 		       + htab->elf.sgotplt->output_offset;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_386_PLT32:
@@ -2690,7 +2803,7 @@ disallow_got32:
 	  relocation = (resolved_plt->output_section->vma
 			+ resolved_plt->output_offset
 			+ plt_offset);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_386_SIZE32:
@@ -2704,51 +2817,68 @@ disallow_got32:
 	      || is_vxworks_tls)
 	    break;
 
-	  if (GENERATE_DYNAMIC_RELOCATION_P (info, eh, r_type,
-					     FALSE, resolved_to_zero,
+	  if (GENERATE_DYNAMIC_RELOCATION_P (false, info, eh, r_type,
+					     sec, false,
+					     resolved_to_zero,
 					     (r_type == R_386_PC32)))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
+	      bool generate_dynamic_reloc = true;
 	      asection *sreloc;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
 		 time.  */
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
 	      if (skip)
 		memset (&outrel, 0, sizeof outrel);
-	      else if (COPY_INPUT_RELOC_P (info, h, r_type))
+	      else if (COPY_INPUT_RELOC_P (false, info, h, r_type))
 		outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
 	      else
 		{
 		  /* This symbol is local, or marked to become local.  */
-		  relocate = TRUE;
-		  outrel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
-		}
+		  relocate = true;
+		  /* NB: Don't generate relative relocation here if it
+		     has been generated by DT_RELR.  */
+		  if (info->enable_dt_relr)
+		    generate_dynamic_reloc = false;
+		  else
+		    {
+		      outrel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
 
-	      sreloc = elf_section_data (input_section)->sreloc;
+		      if (htab->params->report_relative_reloc)
+			_bfd_x86_elf_link_report_relative_reloc
+			  (info, input_section, h, sym, "R_386_RELATIVE",
+			   &outrel);
+		    }
+		}
 
-	      if (sreloc == NULL || sreloc->contents == NULL)
+	      if (generate_dynamic_reloc)
 		{
-		  r = bfd_reloc_notsupported;
-		  goto check_relocation_error;
-		}
+		  sreloc = elf_section_data (input_section)->sreloc;
 
-	      elf_append_rel (output_bfd, sreloc, &outrel);
+		  if (sreloc == NULL || sreloc->contents == NULL)
+		    {
+		      r = bfd_reloc_notsupported;
+		      goto check_relocation_error;
+		    }
+
+		  elf_append_rel (output_bfd, sreloc, &outrel);
+		}
 
 	      /* If this reloc is against an external symbol, we do
 		 not want to fiddle with the addend.  Otherwise, we
@@ -2769,6 +2899,12 @@ disallow_got32:
 				+ input_section->output_section->vma
 				+ input_section->output_offset;
 	      outrel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+
+	      if (htab->params->report_relative_reloc)
+		_bfd_x86_elf_link_report_relative_reloc
+		  (info, input_section, h, sym, "R_386_RELATIVE",
+		   &outrel);
+
 	      sreloc = elf_section_data (input_section)->sreloc;
 	      if (sreloc == NULL)
 		abort ();
@@ -2794,12 +2930,20 @@ disallow_got32:
 					 input_section, contents,
 					 symtab_hdr, sym_hashes,
 					 &r_type_tls, tls_type, rel,
-					 relend, h, r_symndx, TRUE))
-	    return FALSE;
+					 relend, h, sym, true))
+	    return false;
 
-	  if (r_type_tls == R_386_TLS_LE_32)
-	    {
-	      BFD_ASSERT (! unresolved_reloc);
+	  expected_tls_le = htab->elf.target_os == is_solaris
+	    ? R_386_TLS_LE : R_386_TLS_LE_32;
+	  if (r_type_tls == expected_tls_le)
+	    {
+	      /* NB: Solaris only supports R_386_TLS_GD->R_386_TLS_LE.  */
+	      BFD_ASSERT (! unresolved_reloc
+			  && (htab->elf.target_os != is_solaris
+			      || (htab->elf.target_os == is_solaris
+				  && (r_type == R_386_TLS_GD
+				      || r_type == R_386_TLS_IE
+				      || r_type == R_386_TLS_GOTIE))));
 	      if (r_type == R_386_TLS_GD)
 		{
 		  unsigned int type;
@@ -3019,7 +3163,6 @@ disallow_got32:
 
 	      if (GOT_TLS_GDESC_P (tls_type))
 		{
-		  bfd_byte *loc;
 		  outrel.r_info = ELF32_R_INFO (indx, R_386_TLS_DESC);
 		  BFD_ASSERT (htab->sgotplt_jump_table_size + offplt + 8
 			      <= htab->elf.sgotplt->size);
@@ -3027,13 +3170,8 @@ disallow_got32:
 				     + htab->elf.sgotplt->output_offset
 				     + offplt
 				     + htab->sgotplt_jump_table_size);
-		  sreloc = htab->elf.srelplt;
-		  loc = sreloc->contents;
-		  loc += (htab->next_tls_desc_index++
-			  * sizeof (Elf32_External_Rel));
-		  BFD_ASSERT (loc + sizeof (Elf32_External_Rel)
-			      <= sreloc->contents + sreloc->size);
-		  bfd_elf32_swap_reloc_out (output_bfd, &outrel, loc);
+		  sreloc = htab->rel_tls_desc;
+		  elf_append_rel (output_bfd, sreloc, &outrel);
 		  if (indx == 0)
 		    {
 		      BFD_ASSERT (! unresolved_reloc);
@@ -3124,7 +3262,7 @@ disallow_got32:
 	      || r_type_tls == R_386_TLS_DESC_CALL)
 	    {
 	      relocation = htab->sgotplt_jump_table_size + offplt;
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	    }
 	  else if (r_type_tls == r_type)
 	    {
@@ -3137,7 +3275,7 @@ disallow_got32:
 		relocation += 4;
 	      if (r_type == R_386_TLS_IE)
 		relocation += g_o_t;
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	    }
 	  else if (r_type == R_386_TLS_GD)
 	    {
@@ -3268,7 +3406,7 @@ disallow_got32:
 	      continue;
 	    }
 	  else
-	    BFD_ASSERT (FALSE);
+	    BFD_ASSERT (false);
 	  break;
 
 	case R_386_TLS_LDM:
@@ -3276,8 +3414,8 @@ disallow_got32:
 					 input_section, contents,
 					 symtab_hdr, sym_hashes,
 					 &r_type, GOT_UNKNOWN, rel,
-					 relend, h, r_symndx, TRUE))
-	    return FALSE;
+					 relend, h, sym, true))
+	    return false;
 
 	  if (r_type != R_386_TLS_LDM)
 	    {
@@ -3296,7 +3434,9 @@ disallow_got32:
 		 into:
 			movl %gs:0, %eax
 			leal 0(%esi), %esi  */
-	      BFD_ASSERT (r_type == R_386_TLS_LE_32);
+	      expected_tls_le = htab->elf.target_os == is_solaris
+		? R_386_TLS_LE : R_386_TLS_LE_32;
+	      BFD_ASSERT (r_type == expected_tls_le);
 	      if (*(contents + rel->r_offset + 4) == 0xff
 		  || *(contents + rel->r_offset + 4) == 0x67)
 		memcpy (contents + rel->r_offset - 2,
@@ -3338,7 +3478,7 @@ disallow_got32:
 		       + htab->elf.sgot->output_offset + off
 		       - htab->elf.sgotplt->output_section->vma
 		       - htab->elf.sgotplt->output_offset;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_386_TLS_LDO_32:
@@ -3406,15 +3546,15 @@ disallow_got32:
 	     (uint64_t) rel->r_offset,
 	     howto->name,
 	     h->root.root.string);
-	  return FALSE;
+	  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;
@@ -3427,7 +3567,7 @@ check_relocation_error:
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      if (*name == '\0')
 		name = bfd_section_name (sec);
 	    }
@@ -3443,7 +3583,7 @@ check_relocation_error:
 		(_("%pB(%pA+%#" PRIx64 "): reloc against `%s': error %d"),
 		 input_bfd, input_section,
 		 (uint64_t) rel->r_offset, name, (int) r);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -3458,26 +3598,18 @@ check_relocation_error:
 
       rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section);
       rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
-      if (rel_hdr->sh_size == 0)
-	{
-	  /* It is too late to remove an empty reloc section.  Leave
-	     one NONE reloc.
-	     ??? What is wrong with an empty section???  */
-	  rel_hdr->sh_size = rel_hdr->sh_entsize;
-	  deleted -= 1;
-	}
       rel_hdr = _bfd_elf_single_rel_hdr (input_section);
       rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
       input_section->reloc_count -= deleted;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf_i386_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
@@ -3486,12 +3618,10 @@ elf_i386_finish_dynamic_symbol (bfd *out
   struct elf_x86_link_hash_table *htab;
   unsigned plt_entry_size;
   struct elf_x86_link_hash_entry *eh;
-  bfd_boolean local_undefweak;
-  bfd_boolean use_plt_second;
+  bool local_undefweak;
+  bool use_plt_second;
 
   htab = elf_x86_hash_table (info, I386_ELF_DATA);
-  if (htab == NULL)
-    return FALSE;
 
   plt_entry_size = htab->plt.plt_entry_size;
 
@@ -3588,7 +3718,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;
 
@@ -3664,6 +3794,11 @@ elf_i386_finish_dynamic_symbol (bfd *out
 			   + h->root.u.def.section->output_offset),
 			  gotplt->contents + got_offset);
 	      rel.r_info = ELF32_R_INFO (0, R_386_IRELATIVE);
+
+	      if (htab->params->report_relative_reloc)
+		_bfd_x86_elf_link_report_relative_reloc
+		  (info, relplt, h, sym, "R_386_IRELATIVE", &rel);
+
 	      /* R_386_IRELATIVE comes last.  */
 	      plt_index = htab->next_irelative_index--;
 	    }
@@ -3762,6 +3897,8 @@ elf_i386_finish_dynamic_symbol (bfd *out
     {
       Elf_Internal_Rela rel;
       asection *relgot = htab->elf.srelgot;
+      const char *relative_reloc_name = NULL;
+      bool generate_dynamic_reloc = true;
 
       /* This symbol has an entry in the global offset table.  Set it
 	 up.  */
@@ -3802,6 +3939,7 @@ elf_i386_finish_dynamic_symbol (bfd *out
 			       + h->root.u.def.section->output_offset),
 			      htab->elf.sgot->contents + h->got.offset);
 		  rel.r_info = ELF32_R_INFO (0, R_386_IRELATIVE);
+		  relative_reloc_name = "R_386_IRELATIVE";
 		}
 	      else
 		goto do_glob_dat;
@@ -3836,25 +3974,39 @@ elf_i386_finish_dynamic_symbol (bfd *out
 			  (plt->output_section->vma
 			   + plt->output_offset + plt_offset),
 			  htab->elf.sgot->contents + h->got.offset);
-	      return TRUE;
+	      return true;
 	    }
 	}
       else if (bfd_link_pic (info)
 	       && SYMBOL_REFERENCES_LOCAL_P (info, h))
 	{
 	  BFD_ASSERT((h->got.offset & 1) != 0);
-	  rel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+	  if (info->enable_dt_relr)
+	    generate_dynamic_reloc = false;
+	  else
+	    {
+	      rel.r_info = ELF32_R_INFO (0, R_386_RELATIVE);
+	      relative_reloc_name = "R_386_RELATIVE";
+	    }
 	}
       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);
 	}
 
-      elf_append_rel (output_bfd, relgot, &rel);
+      if (generate_dynamic_reloc)
+	{
+	  if (relative_reloc_name != NULL
+	      && htab->params->report_relative_reloc)
+	    _bfd_x86_elf_link_report_relative_reloc
+	      (info, relgot, h, sym, relative_reloc_name, &rel);
+
+	  elf_append_rel (output_bfd, relgot, &rel);
+	}
     }
 
   if (h->needs_copy)
@@ -3876,13 +4028,13 @@ do_glob_dat:
       elf_append_rel (output_bfd, s, &rel);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up local dynamic symbol handling.  We set the contents of
    various dynamic sections here.  */
 
-static bfd_boolean
+static int
 elf_i386_finish_local_dynamic_symbol (void **slot, void *inf)
 {
   struct elf_link_hash_entry *h
@@ -3898,7 +4050,7 @@ elf_i386_finish_local_dynamic_symbol (vo
    here since undefined weak symbol may not be dynamic and may not be
    called for elf_i386_finish_dynamic_symbol.  */
 
-static bfd_boolean
+static bool
 elf_i386_pie_finish_undefweak_symbol (struct bfd_hash_entry *bh,
 				      void *inf)
 {
@@ -3907,7 +4059,7 @@ elf_i386_pie_finish_undefweak_symbol (st
 
   if (h->root.type != bfd_link_hash_undefweak
       || h->dynindx != -1)
-    return TRUE;
+    return true;
 
   return elf_i386_finish_dynamic_symbol (info->output_bfd,
 					 info, h, NULL);
@@ -3962,7 +4114,7 @@ elf_i386_reloc_type_class (const struct
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_i386_finish_dynamic_sections (bfd *output_bfd,
 				  struct bfd_link_info *info)
 {
@@ -3970,13 +4122,21 @@ elf_i386_finish_dynamic_sections (bfd *o
 
   htab = _bfd_x86_elf_finish_dynamic_sections (output_bfd, info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (!htab->elf.dynamic_sections_created)
-    return TRUE;
+    return true;
 
   if (htab->elf.splt && htab->elf.splt->size > 0)
     {
+      if (bfd_is_abs_section (htab->elf.splt->output_section))
+	{
+	  info->callbacks->fatal
+	    (_("%P: discarded output section: `%pA'\n"),
+	     htab->elf.splt);
+	  return false;
+	}
+
       /* UnixWare sets the entsize of .plt to 4, although that doesn't
 	 really seem like the right value.  */
       elf_section_data (htab->elf.splt->output_section)
@@ -4006,7 +4166,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
@@ -4066,7 +4226,7 @@ elf_i386_finish_dynamic_sections (bfd *o
 		       elf_i386_pie_finish_undefweak_symbol,
 		       info);
 
-  return TRUE;
+  return true;
 }
 
 /* Fill PLT/GOT entries and allocate dynamic relocations for local
@@ -4074,7 +4234,7 @@ elf_i386_finish_dynamic_sections (bfd *o
    It has to be done before elf_link_sort_relocs is called so that
    dynamic relocations are properly sorted.  */
 
-static bfd_boolean
+static bool
 elf_i386_output_arch_local_syms
   (bfd *output_bfd ATTRIBUTE_UNUSED,
    struct bfd_link_info *info,
@@ -4087,19 +4247,16 @@ elf_i386_output_arch_local_syms
   struct elf_x86_link_hash_table *htab
     = elf_x86_hash_table (info, I386_ELF_DATA);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Fill PLT and GOT entries for local STT_GNU_IFUNC symbols.  */
   htab_traverse (htab->loc_hash_table,
 		 elf_i386_finish_local_dynamic_symbol,
 		 info);
 
-  return TRUE;
+  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 +4304,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 +4315,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;
@@ -4198,7 +4354,7 @@ elf_i386_get_synthetic_symtab (bfd *abfd
 	      if (lazy_ibt_plt != NULL
 		  && (memcmp (plt_contents + lazy_ibt_plt->plt0_entry_size,
 			      lazy_ibt_plt->plt_entry,
-			      lazy_ibt_plt->plt_got_offset) == 0))
+			      lazy_ibt_plt->plt_reloc_offset) == 0))
 		plt_type = plt_lazy | plt_second;
 	      else
 		plt_type = plt_lazy;
@@ -4211,7 +4367,7 @@ elf_i386_get_synthetic_symtab (bfd *abfd
 	      if (lazy_ibt_plt != NULL
 		  && (memcmp (plt_contents + lazy_ibt_plt->plt0_entry_size,
 			      lazy_ibt_plt->pic_plt_entry,
-			      lazy_ibt_plt->plt_got_offset) == 0))
+			      lazy_ibt_plt->plt_reloc_offset) == 0))
 		plt_type = plt_lazy | plt_pic | plt_second;
 	      else
 		plt_type = plt_lazy | plt_pic;
@@ -4307,7 +4463,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 +4480,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;
@@ -4339,6 +4490,50 @@ elf_i386_link_setup_gnu_properties (stru
   return _bfd_x86_elf_link_setup_gnu_properties (info, &init_table);
 }
 
+static void
+elf_i386_add_glibc_version_dependency
+  (struct elf_find_verdep_info *rinfo)
+{
+  int i = 0;
+  const char *version[4] = { NULL, NULL, NULL, NULL };
+  bool auto_version[4] = { false, false, false, false };
+  struct elf_x86_link_hash_table *htab;
+
+  if (rinfo->info->enable_dt_relr)
+    {
+      version[i] = "GLIBC_ABI_DT_RELR";
+      i++;
+    }
+
+  htab = elf_x86_hash_table (rinfo->info, I386_ELF_DATA);
+  if (htab != NULL)
+    {
+      if (htab->params->gnu2_tls_version_tag && htab->has_tls_desc_call)
+	{
+	  version[i] = "GLIBC_ABI_GNU2_TLS";
+	  /* 2 == auto, enable if libc.so defines the GLIBC_ABI_GNU2_TLS
+	     version.  */
+	  if (htab->params->gnu2_tls_version_tag == 2)
+	    auto_version[i] = true;
+	  i++;
+	}
+      if (htab->params->gnu_tls_version_tag
+	  && htab->has_tls_get_addr_call)
+	{
+	  version[i] = "GLIBC_ABI_GNU_TLS";
+	  /* 2 == auto, enable if libc.so defines the GLIBC_ABI_GNU_TLS
+	     version.  */
+	  if (htab->params->gnu_tls_version_tag == 2)
+	    auto_version[i] = true;
+	  i++;
+	}
+    }
+
+  if (i != 0)
+    _bfd_elf_link_add_glibc_version_dependency (rinfo, version,
+						auto_version);
+}
+
 #define TARGET_LITTLE_SYM		i386_elf32_vec
 #define TARGET_LITTLE_NAME		"elf32-i386"
 #define ELF_ARCH			bfd_arch_i386
@@ -4354,7 +4549,6 @@ elf_i386_link_setup_gnu_properties (stru
 #define elf_backend_got_header_size	12
 #define elf_backend_plt_alignment	4
 #define elf_backend_dtrel_excludes_plt	1
-#define elf_backend_extern_protected_data 1
 #define elf_backend_caches_rawsize	1
 #define elf_backend_want_dynrelro	1
 
@@ -4368,7 +4562,7 @@ elf_i386_link_setup_gnu_properties (stru
 #define bfd_elf32_get_synthetic_symtab	      elf_i386_get_synthetic_symtab
 
 #define elf_backend_relocs_compatible	      _bfd_elf_relocs_compatible
-#define elf_backend_check_relocs	      elf_i386_check_relocs
+#define elf_backend_early_size_sections	      elf_i386_early_size_sections
 #define elf_backend_create_dynamic_sections   _bfd_elf_create_dynamic_sections
 #define elf_backend_fake_sections	      elf_i386_fake_sections
 #define elf_backend_finish_dynamic_sections   elf_i386_finish_dynamic_sections
@@ -4380,13 +4574,17 @@ elf_i386_link_setup_gnu_properties (stru
 #define elf_backend_relocate_section	      elf_i386_relocate_section
 #define elf_backend_setup_gnu_properties      elf_i386_link_setup_gnu_properties
 #define elf_backend_hide_symbol		      _bfd_x86_elf_hide_symbol
+#define elf_backend_add_glibc_version_dependency \
+  elf_i386_add_glibc_version_dependency
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #define	elf32_bed			      elf32_i386_bed
 
 #include "elf32-target.h"
 
+#undef elf_backend_add_glibc_version_dependency
+
 /* FreeBSD support.  */
 
 #undef	TARGET_LITTLE_SYM
@@ -4400,11 +4598,11 @@ elf_i386_link_setup_gnu_properties (stru
    "FreeBSD" label in the ELF header.  So we put this label on all
    executables and (for simplicity) also all other object files.  */
 
-static bfd_boolean
+static bool
 elf_i386_fbsd_init_file_header (bfd *abfd, struct bfd_link_info *info)
 {
   if (!_bfd_elf_init_file_header (abfd, info))
-    return FALSE;
+    return false;
 
 #ifdef OLD_FREEBSD_ABI_LABEL
   {
@@ -4413,7 +4611,7 @@ elf_i386_fbsd_init_file_header (bfd *abf
     memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
   }
 #endif
-  return TRUE;
+  return true;
 }
 
 #undef	elf_backend_init_file_header
@@ -4434,13 +4632,11 @@ 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_MAXPAGESIZE
+#define ELF_MAXPAGESIZE			0x10000
 
-#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.  */
@@ -4469,7 +4665,7 @@ static const struct elf_x86_backend_data
    FALSE otherwise.  ISECTION is the best guess matching section from the
    input bfd IBFD, but it might be NULL.  */
 
-static bfd_boolean
+static bool
 elf32_i386_copy_solaris_special_section_fields (const bfd *ibfd ATTRIBUTE_UNUSED,
 						bfd *obfd ATTRIBUTE_UNUSED,
 						const Elf_Internal_Shdr *isection ATTRIBUTE_UNUSED,
@@ -4477,7 +4673,7 @@ elf32_i386_copy_solaris_special_section_
 {
   /* PR 19938: FIXME: Need to add code for setting the sh_info
      and sh_link fields of Solaris specific section types.  */
-  return FALSE;
+  return false;
 
   /* Based upon Oracle Solaris 11.3 Linkers and Libraries Guide, Ch. 13,
      Object File Format, Table 13-9  ELF sh_link and sh_info Interpretation:
@@ -4548,12 +4744,12 @@ SHT_SUNW_versym	     The section header
 
 /* Intel MCU support.  */
 
-static bfd_boolean
+static bool
 elf32_iamcu_elf_object_p (bfd *abfd)
 {
   /* Set the right machine number for an IAMCU elf32 file.  */
   bfd_default_set_arch_mach (abfd, bfd_arch_iamcu, bfd_mach_i386_iamcu);
-  return TRUE;
+  return true;
 }
 
 #undef  TARGET_LITTLE_SYM
@@ -4566,9 +4762,10 @@ 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_MAXPAGESIZE
+#define ELF_MAXPAGESIZE			0x1000
 
+#undef	ELF_TARGET_OS
 #undef	ELF_OSABI
 
 #undef  elf32_bed
@@ -4592,201 +4789,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 +4803,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.20200303/bfd/elf32-ip2k.c ./bfd/elf32-ip2k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-ip2k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-ip2k.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -40,7 +40,7 @@ struct ip2k_opcode
   unsigned short mask;
 };
 
-static bfd_boolean ip2k_relaxed = FALSE;
+static bool ip2k_relaxed = false;
 
 static const struct ip2k_opcode ip2k_page_opcode[] =
 {
@@ -135,40 +135,40 @@ static reloc_howto_type ip2k_elf_howto_t
 	  complain_overflow_dont,/* complain_on_overflow */ \
 	  bfd_elf_generic_reloc,/* special_function */ \
 	  name,			/* name */ \
-	  FALSE,		/* partial_inplace */ \
+	  false,		/* partial_inplace */ \
 	  sm,			/* src_mask */ \
 	  dm,			/* dst_mask */ \
 	  pr)			/* pcrel_offset */
 
   /* This reloc does nothing.  */
-  IP2K_HOWTO (R_IP2K_NONE, 0,3,0, FALSE, 0, "R_IP2K_NONE", 0, 0),
+  IP2K_HOWTO (R_IP2K_NONE, 0,0,0, false, 0, "R_IP2K_NONE", 0, 0),
   /* A 16 bit absolute relocation.  */
-  IP2K_HOWTO (R_IP2K_16, 0,1,16, FALSE, 0, "R_IP2K_16", 0, 0xffff),
+  IP2K_HOWTO (R_IP2K_16, 0,2,16, false, 0, "R_IP2K_16", 0, 0xffff),
   /* A 32 bit absolute relocation.  */
-  IP2K_HOWTO (R_IP2K_32, 0,2,32, FALSE, 0, "R_IP2K_32", 0, 0xffffffff),
+  IP2K_HOWTO (R_IP2K_32, 0,4,32, false, 0, "R_IP2K_32", 0, 0xffffffff),
   /* A 8-bit data relocation for the FR9 field.  Ninth bit is computed specially.  */
-  IP2K_HOWTO (R_IP2K_FR9, 0,1,9, FALSE, 0, "R_IP2K_FR9", 0, 0x00ff),
+  IP2K_HOWTO (R_IP2K_FR9, 0,2,9, false, 0, "R_IP2K_FR9", 0, 0x00ff),
   /* A 4-bit data relocation.  */
-  IP2K_HOWTO (R_IP2K_BANK, 8,1,4, FALSE, 0, "R_IP2K_BANK", 0, 0x000f),
+  IP2K_HOWTO (R_IP2K_BANK, 8,2,4, false, 0, "R_IP2K_BANK", 0, 0x000f),
   /* A 13-bit insn relocation - word address => right-shift 1 bit extra.  */
-  IP2K_HOWTO (R_IP2K_ADDR16CJP, 1,1,13, FALSE, 0, "R_IP2K_ADDR16CJP", 0, 0x1fff),
+  IP2K_HOWTO (R_IP2K_ADDR16CJP, 1,2,13, false, 0, "R_IP2K_ADDR16CJP", 0, 0x1fff),
   /* A 3-bit insn relocation - word address => right-shift 1 bit extra.  */
-  IP2K_HOWTO (R_IP2K_PAGE3, 14,1,3, FALSE, 0, "R_IP2K_PAGE3", 0, 0x0007),
+  IP2K_HOWTO (R_IP2K_PAGE3, 14,2,3, false, 0, "R_IP2K_PAGE3", 0, 0x0007),
   /* Two 8-bit data relocations.  */
-  IP2K_HOWTO (R_IP2K_LO8DATA, 0,1,8, FALSE, 0, "R_IP2K_LO8DATA", 0, 0x00ff),
-  IP2K_HOWTO (R_IP2K_HI8DATA, 8,1,8, FALSE, 0, "R_IP2K_HI8DATA", 0, 0x00ff),
+  IP2K_HOWTO (R_IP2K_LO8DATA, 0,2,8, false, 0, "R_IP2K_LO8DATA", 0, 0x00ff),
+  IP2K_HOWTO (R_IP2K_HI8DATA, 8,2,8, false, 0, "R_IP2K_HI8DATA", 0, 0x00ff),
   /* Two 8-bit insn relocations.  word address => right-shift 1 bit extra.  */
-  IP2K_HOWTO (R_IP2K_LO8INSN, 1,1,8, FALSE, 0, "R_IP2K_LO8INSN", 0, 0x00ff),
-  IP2K_HOWTO (R_IP2K_HI8INSN, 9,1,8, FALSE, 0, "R_IP2K_HI8INSN", 0, 0x00ff),
+  IP2K_HOWTO (R_IP2K_LO8INSN, 1,2,8, false, 0, "R_IP2K_LO8INSN", 0, 0x00ff),
+  IP2K_HOWTO (R_IP2K_HI8INSN, 9,2,8, false, 0, "R_IP2K_HI8INSN", 0, 0x00ff),
 
   /* Special 1 bit relocation for SKIP instructions.  */
-  IP2K_HOWTO (R_IP2K_PC_SKIP, 1,1,1, FALSE, 12, "R_IP2K_PC_SKIP", 0xfffe, 0x1000),
+  IP2K_HOWTO (R_IP2K_PC_SKIP, 1,2,1, false, 12, "R_IP2K_PC_SKIP", 0xfffe, 0x1000),
   /* 16 bit word address.  */
-  IP2K_HOWTO (R_IP2K_TEXT, 1,1,16, FALSE, 0, "R_IP2K_TEXT", 0, 0xffff),
+  IP2K_HOWTO (R_IP2K_TEXT, 1,2,16, false, 0, "R_IP2K_TEXT", 0, 0xffff),
   /* A 7-bit offset relocation for the FR9 field.  Eigth and ninth bit comes from insn.  */
-  IP2K_HOWTO (R_IP2K_FR_OFFSET, 0,1,9, FALSE, 0, "R_IP2K_FR_OFFSET", 0x180, 0x007f),
+  IP2K_HOWTO (R_IP2K_FR_OFFSET, 0,2,9, false, 0, "R_IP2K_FR_OFFSET", 0x180, 0x007f),
   /* Bits 23:16 of an address.  */
-  IP2K_HOWTO (R_IP2K_EX8DATA, 16,1,8, FALSE, 0, "R_IP2K_EX8DATA", 0, 0x00ff),
+  IP2K_HOWTO (R_IP2K_EX8DATA, 16,2,8, false, 0, "R_IP2K_EX8DATA", 0, 0x00ff),
 };
 
 
@@ -247,7 +247,7 @@ ip2k_get_mem (bfd *abfd ATTRIBUTE_UNUSED
     * ptr ++ = bfd_get_8 (abfd, addr ++);
 }
 
-static bfd_boolean
+static bool
 ip2k_is_opcode (bfd_byte *code, const struct ip2k_opcode *opcodes)
 {
   unsigned short insn = (code[0] << 8) | code[1];
@@ -255,12 +255,12 @@ ip2k_is_opcode (bfd_byte *code, const st
   while (opcodes->mask != 0)
     {
       if ((insn & opcodes->mask) == opcodes->opcode)
-	return TRUE;
+	return true;
 
       opcodes ++;
     }
 
-  return FALSE;
+  return false;
 }
 
 #define PAGENO(ABSADDR) ((ABSADDR) & 0xFFFFC000)
@@ -530,7 +530,7 @@ ip2k_nominal_page_bits (bfd *abfd ATTRIB
   return 0;
 }
 
-static bfd_boolean
+static bool
 ip2k_test_page_insn (bfd *abfd ATTRIBUTE_UNUSED,
 		     asection *sec,
 		     Elf_Internal_Rela *irel,
@@ -544,14 +544,14 @@ ip2k_test_page_insn (bfd *abfd ATTRIBUTE
     /* This appears to be a reference to an undefined
        symbol.  Just ignore it--it will be caught by the
        regular reloc processing.  */
-    return FALSE;
+    return false;
 
   /* Test if we can delete this page instruction.  */
   if (PAGENO (symval + irel->r_addend) !=
       ip2k_nominal_page_bits (abfd, sec, irel->r_offset, misc->contents))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Parts of a Stabs entry.  */
@@ -623,7 +623,7 @@ adjust_all_relocations (bfd *abfd,
 
   /* Now fix the stab relocations.  */
   stab = bfd_get_section_by_name (abfd, ".stab");
-  if (stab)
+  if (stab && stab->reloc_count != 0)
     {
       bfd_byte *stabcontents, *stabend, *stabp;
       bfd_size_type stab_size = stab->rawsize ? stab->rawsize : stab->size;
@@ -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;
 	    }
 
@@ -781,7 +780,7 @@ adjust_all_relocations (bfd *abfd,
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 ip2k_elf_relax_delete_bytes (bfd *abfd,
 			     asection *sec,
 			     bfd_vma addr,
@@ -797,14 +796,14 @@ ip2k_elf_relax_delete_bytes (bfd *abfd,
   sec->size -= count;
 
   adjust_all_relocations (abfd, sec, addr + count, endaddr, -count, 0);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 ip2k_delete_page_insn (bfd *abfd ATTRIBUTE_UNUSED,
 		       asection *sec,
 		       Elf_Internal_Rela *irel,
-		       bfd_boolean *again,
+		       bool *again,
 		       struct misc *misc)
 {
   /* Note that we've changed the relocs, section contents, etc.  */
@@ -817,19 +816,19 @@ ip2k_delete_page_insn (bfd *abfd ATTRIBU
 
   /* Delete the PAGE insn.  */
   if (!ip2k_elf_relax_delete_bytes (abfd, sec, irel->r_offset, 2))
-    return FALSE;
+    return false;
 
   /* Modified => will need to iterate relaxation again.  */
-  *again = TRUE;
+  *again = true;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 ip2k_relax_switch_table_128 (bfd *abfd ATTRIBUTE_UNUSED,
 			     asection *sec,
 			     Elf_Internal_Rela *irel,
-			     bfd_boolean *again,
+			     bool *again,
 			     struct misc *misc)
 {
   Elf_Internal_Rela *irelend = misc->irelbase + sec->reloc_count;
@@ -854,18 +853,18 @@ ip2k_relax_switch_table_128 (bfd *abfd A
       if (ireltest >= irelend)
 	{
 	  _bfd_error_handler (_("ip2k relaxer: switch table without complete matching relocation information."));
-	  return FALSE;
+	  return false;
 	}
 
       if (ireltest->r_offset != addr)
 	{
 	  _bfd_error_handler (_("ip2k relaxer: switch table without complete matching relocation information."));
-	  return FALSE;
+	  return false;
 	}
 
       if (! ip2k_test_page_insn (abfd, sec, ireltest, misc))
 	/* Un-removable page insn => nothing can be done.  */
-	return TRUE;
+	return true;
 
       addr += 4;
       ireltest += 2;
@@ -877,30 +876,30 @@ ip2k_relax_switch_table_128 (bfd *abfd A
       || (! IS_ADD_PCL_W_OPCODE (code + 2)))
     {
       _bfd_error_handler (_("ip2k relaxer: switch table header corrupt."));
-      return FALSE;
+      return false;
     }
 
   if (!ip2k_elf_relax_delete_bytes (abfd, sec, irel->r_offset - 4, 2))
-    return FALSE;
+    return false;
 
-  *again = TRUE;
+  *again = true;
 
   /* Delete all page instructions in table.  */
   while (irel < ireltest)
     {
       if (!ip2k_delete_page_insn (abfd, sec, irel, again, misc))
-	return FALSE;
+	return false;
       irel += 2;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 ip2k_relax_switch_table_256 (bfd *abfd ATTRIBUTE_UNUSED,
 			     asection *sec,
 			     Elf_Internal_Rela *irel,
-			     bfd_boolean *again,
+			     bool *again,
 			     struct misc *misc)
 {
   Elf_Internal_Rela *irelend = misc->irelbase + sec->reloc_count;
@@ -927,18 +926,18 @@ ip2k_relax_switch_table_256 (bfd *abfd A
       if (ireltest >= irelend)
 	{
 	  _bfd_error_handler (_("ip2k relaxer: switch table without complete matching relocation information."));
-	  return FALSE;
+	  return false;
 	}
 
       if (ireltest->r_offset != addr)
 	{
 	  _bfd_error_handler (_("ip2k relaxer: switch table without complete matching relocation information."));
-	  return FALSE;
+	  return false;
 	}
 
       if (!ip2k_test_page_insn (abfd, sec, ireltest, misc))
 	/* Un-removable page insn => nothing can be done.  */
-	return TRUE;
+	return true;
 
       addr += 4;
       ireltest += 2;
@@ -960,32 +959,32 @@ ip2k_relax_switch_table_256 (bfd *abfd A
       || (!IS_INC_1SP_OPCODE (code + 10)))
     {
       _bfd_error_handler (_("ip2k relaxer: switch table header corrupt."));
-      return FALSE;
+      return false;
     }
 
   /* Delete first 3 opcodes.  */
   if (!ip2k_elf_relax_delete_bytes (abfd, sec, addr + 0, 6))
-    return FALSE;
+    return false;
 
-  *again = TRUE;
+  *again = true;
 
   /* Delete all page instructions in table.  */
   while (irel < ireltest)
     {
       if (!ip2k_delete_page_insn (abfd, sec, irel, again, misc))
-	return FALSE;
+	return false;
       irel += 2;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function handles relaxation of a section in a specific page.  */
 
-static bfd_boolean
+static bool
 ip2k_elf_relax_section_page (bfd *abfd,
 			     asection *sec,
-			     bfd_boolean *again,
+			     bool *again,
 			     struct misc *misc,
 			     unsigned long page_start,
 			     unsigned long page_end)
@@ -1010,7 +1009,7 @@ ip2k_elf_relax_section_page (bfd *abfd,
 
       if (BASEADDR (sec) + irel->r_offset > page_end)
 	/* Flow beyond end of page => nothing more to do for this page.  */
-	return TRUE;
+	return true;
 
       /* Detect switch tables.  */
       switch_table_128 = ip2k_is_switch_table_128 (abfd, sec, irel->r_offset, misc->contents);
@@ -1023,7 +1022,7 @@ ip2k_elf_relax_section_page (bfd *abfd,
       if (switch_table_128 == 0)
 	{
 	  if (!ip2k_relax_switch_table_128 (abfd, sec, irel, again, misc))
-	    return FALSE;
+	    return false;
 
 	  continue;
 	}
@@ -1031,7 +1030,7 @@ ip2k_elf_relax_section_page (bfd *abfd,
       if (switch_table_256 == 0)
 	{
 	  if (!ip2k_relax_switch_table_256 (abfd, sec, irel, again, misc))
-	    return FALSE;
+	    return false;
 
 	  continue;
 	}
@@ -1040,13 +1039,13 @@ ip2k_elf_relax_section_page (bfd *abfd,
       if (ip2k_test_page_insn (abfd, sec, irel, misc))
 	{
 	  if (!ip2k_delete_page_insn (abfd, sec, irel, again, misc))
-	    return FALSE;
+	    return false;
 
 	  continue;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function handles relaxing for the ip2k.
@@ -1059,11 +1058,11 @@ ip2k_elf_relax_section_page (bfd *abfd,
    Processing the pages one at a time from the lowest page allows a removal
    only policy to be used - pages can be removed but are never reinserted.  */
 
-static bfd_boolean
+static bool
 ip2k_elf_relax_section (bfd *abfd,
 			asection *sec,
 			struct bfd_link_info *link_info,
-			bfd_boolean *again)
+			bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -1074,33 +1073,34 @@ ip2k_elf_relax_section (bfd *abfd,
   static unsigned long page_start = 0;
   static unsigned long page_end = 0;
   static unsigned int pass = 0;
-  static bfd_boolean new_pass = FALSE;
-  static bfd_boolean changed = FALSE;
+  static bool new_pass = false;
+  static bool changed = false;
   struct misc misc;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   if (first_section == NULL)
     {
-      ip2k_relaxed = TRUE;
+      ip2k_relaxed = true;
       first_section = sec;
     }
 
   if (first_section == sec)
     {
       pass++;
-      new_pass = TRUE;
+      new_pass = true;
     }
 
   /* We don't have to do anything for a relocatable link,
      if this section does not have relocs, or if this is
      not a code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -1150,8 +1150,8 @@ ip2k_elf_relax_section (bfd *abfd,
       if (new_pass)
 	{
 	  pass = 1;
-	  new_pass = FALSE;
-	  changed = TRUE; /* Pre-initialize to break out of pass 1.  */
+	  new_pass = false;
+	  changed = true; /* Pre-initialize to break out of pass 1.  */
 	  search_addr = 0xFFFFFFFF;
 	}
 
@@ -1164,15 +1164,15 @@ ip2k_elf_relax_section (bfd *abfd,
 	    search_addr = BASEADDR (sec);
 
 	  /* Found a page => more work to do.  */
-	  *again = TRUE;
+	  *again = true;
 	}
     }
   else
     {
       if (new_pass)
 	{
-	  new_pass = FALSE;
-	  changed = FALSE;
+	  new_pass = false;
+	  changed = false;
 	  page_start = PAGENO (search_addr);
 	  page_end = page_start | 0x00003FFF;
 	}
@@ -1182,9 +1182,9 @@ ip2k_elf_relax_section (bfd *abfd,
 	  && (BASEADDR (sec) <= page_end))
 	{
 	  if (!ip2k_elf_relax_section_page (abfd, sec, &changed, &misc, page_start, page_end))
-	    return FALSE;
+	    return false;
 	}
-      *again = TRUE;
+      *again = true;
     }
 
   /* Perform some house keeping after relaxing the section.  */
@@ -1210,28 +1210,24 @@ 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;
+  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;
+  return false;
 }
 
 /* Set the howto pointer for a IP2K ELF reloc.  */
 
-static bfd_boolean
+static bool
 ip2k_info_to_howto_rela (bfd * abfd,
 			 arelent * cache_ptr,
 			 Elf_Internal_Rela * dst)
@@ -1245,10 +1241,10 @@ ip2k_info_to_howto_rela (bfd * abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & ip2k_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 /* Perform a single relocation.
@@ -1389,7 +1385,7 @@ ip2k_final_link_relocate (reloc_howto_ty
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 ip2k_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -1439,8 +1435,8 @@ ip2k_elf_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
-	  bfd_boolean unresolved_reloc;
+	  bool warned, ignored;
+	  bool unresolved_reloc;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1452,7 +1448,8 @@ ip2k_elf_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_IP2K_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1475,7 +1472,7 @@ ip2k_elf_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -1504,7 +1501,7 @@ ip2k_elf_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 #define TARGET_BIG_SYM	 ip2k_elf32_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.20200303/bfd/elf32-iq2000.c ./bfd/elf32-iq2000.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-iq2000.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-iq2000.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* IQ2000-specific support for 32-bit ELF.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -35,54 +35,54 @@ static reloc_howto_type iq2000_elf_howto
 
   HOWTO (R_IQ2000_NONE,		     /* type */
 	 0,			     /* rightshift */
-	 3,			     /* size (0 = byte, 1 = short, 2 = long) */
+	 0,			     /* size */
 	 0,			     /* bitsize */
-	 FALSE,			     /* pc_relative */
+	 false,			     /* pc_relative */
 	 0,			     /* bitpos */
 	 complain_overflow_dont,     /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	     /* special_function */
 	 "R_IQ2000_NONE",	     /* name */
-	 FALSE,			     /* partial_inplace */
+	 false,			     /* partial_inplace */
 	 0,			     /* src_mask */
 	 0,			     /* dst_mask */
-	 FALSE),		     /* pcrel_offset */
+	 false),		     /* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_IQ2000_16,		     /* type */
 	 0,			     /* rightshift */
-	 1,			     /* size (0 = byte, 1 = short, 2 = long) */
+	 2,			     /* size */
 	 16,			     /* bitsize */
-	 FALSE,			     /* pc_relative */
+	 false,			     /* pc_relative */
 	 0,			     /* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	     /* special_function */
 	 "R_IQ2000_16",		     /* name */
-	 FALSE,			     /* partial_inplace */
+	 false,			     /* partial_inplace */
 	 0x0000,		     /* src_mask */
 	 0xffff,		     /* dst_mask */
-	 FALSE),		     /* pcrel_offset */
+	 false),		     /* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_IQ2000_32,		     /* type */
 	 0,			     /* rightshift */
-	 2,			     /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			     /* size */
 	 31,			     /* bitsize */
-	 FALSE,			     /* pc_relative */
+	 false,			     /* pc_relative */
 	 0,			     /* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	     /* special_function */
 	 "R_IQ2000_32",		     /* name */
-	 FALSE,			     /* partial_inplace */
+	 false,			     /* partial_inplace */
 	 0x00000000,		     /* src_mask */
 	 0x7fffffff,		     /* dst_mask */
-	 FALSE),		     /* pcrel_offset */
+	 false),		     /* pcrel_offset */
 
   /* 26 bit branch address.  */
   HOWTO (R_IQ2000_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -90,115 +90,115 @@ static reloc_howto_type iq2000_elf_howto
 				   bits must match the PC.  */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_IQ2000_26",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit PC relative reference.  */
   HOWTO (R_IQ2000_PC16,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_IQ2000_PC16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* high 16 bits of symbol value.  */
   HOWTO (R_IQ2000_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 iq2000_elf_howto_hi16_reloc,	/* special_function */
 	 "R_IQ2000_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x7fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_IQ2000_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_IQ2000_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16-bit jump offset.  */
   HOWTO (R_IQ2000_OFFSET_16,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_IQ2000_OFFSET_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 21-bit jump offset.  */
   HOWTO (R_IQ2000_OFFSET_21,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_IQ2000_OFFSET_21",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000000,		/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* unsigned high 16 bits of value.  */
   HOWTO (R_IQ2000_OFFSET_21,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_IQ2000_UHI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x7fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute debug relocation.  */
   HOWTO (R_IQ2000_32_DEBUG,	     /* type */
 	 0,			     /* rightshift */
-	 2,			     /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			     /* size */
 	 32,			     /* bitsize */
-	 FALSE,			     /* pc_relative */
+	 false,			     /* pc_relative */
 	 0,			     /* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	     /* special_function */
 	 "R_IQ2000_32",		     /* name */
-	 FALSE,			     /* partial_inplace */
+	 false,			     /* partial_inplace */
 	 0x00000000,		     /* src_mask */
 	 0xffffffff,		     /* dst_mask */
-	 FALSE),		     /* pcrel_offset */
+	 false),		     /* pcrel_offset */
 
 };
 
@@ -206,33 +206,33 @@ static reloc_howto_type iq2000_elf_howto
 static reloc_howto_type iq2000_elf_vtinherit_howto =
   HOWTO (R_IQ2000_GNU_VTINHERIT,    /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			   /* size */
 	 0,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_dont,   /* complain_on_overflow */
 	 NULL,			   /* special_function */
 	 "R_IQ2000_GNU_VTINHERIT",  /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0,			   /* src_mask */
 	 0,			   /* dst_mask */
-	 FALSE);		   /* pcrel_offset */
+	 false);		   /* pcrel_offset */
 
 /* GNU extension to record C++ vtable member usage.  */
 static reloc_howto_type iq2000_elf_vtentry_howto =
   HOWTO (R_IQ2000_GNU_VTENTRY,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			   /* size */
 	 0,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_dont,   /* complain_on_overflow */
 	 NULL,			   /* special_function */
 	 "R_IQ2000_GNU_VTENTRY",    /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0,			   /* src_mask */
 	 0,			   /* dst_mask */
-	 FALSE);		   /* pcrel_offset */
+	 false);		   /* pcrel_offset */
 
 
 static bfd_reloc_status_type
@@ -417,7 +417,7 @@ iq2000_final_link_relocate (reloc_howto_
 
 /* Set the howto pointer for a IQ2000 ELF reloc.  */
 
-static bfd_boolean
+static bool
 iq2000_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
 			   arelent * cache_ptr,
 			   Elf_Internal_Rela * dst)
@@ -442,19 +442,19 @@ iq2000_info_to_howto_rela (bfd * abfd AT
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      abfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       cache_ptr->howto = & iq2000_elf_howto_table [r_type];
       break;
     }
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase.
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.	 */
 
-static bfd_boolean
+static bool
 iq2000_elf_check_relocs (bfd *abfd,
 			 struct bfd_link_info *info,
 			 asection *sec,
@@ -464,10 +464,10 @@ iq2000_elf_check_relocs (bfd *abfd,
   struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
-  bfd_boolean changed = FALSE;
+  bool changed = false;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -495,25 +495,25 @@ iq2000_elf_check_relocs (bfd *abfd,
 	     hierarchy.  Reconstruct it for later use during GC.  */
 	case R_IQ2000_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries
 	     are actually used.  Record for later use during GC.  */
 	case R_IQ2000_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_IQ2000_32:
 	  /* For debug section, change to special harvard-aware relocations.  */
-	  if (CONST_STRNEQ (sec->name, ".debug")
-	      || CONST_STRNEQ (sec->name, ".stab")
-	      || CONST_STRNEQ (sec->name, ".eh_frame"))
+	  if (startswith (sec->name, ".debug")
+	      || startswith (sec->name, ".stab")
+	      || startswith (sec->name, ".eh_frame"))
 	    {
 	      ((Elf_Internal_Rela *) rel)->r_info
 		= ELF32_R_INFO (ELF32_R_SYM (rel->r_info), R_IQ2000_32_DEBUG);
-	      changed = TRUE;
+	      changed = true;
 	    }
 	  break;
 	}
@@ -524,7 +524,7 @@ iq2000_elf_check_relocs (bfd *abfd,
        we'll free the relocs and lose our changes.  */
     elf_section_data (sec)->relocs = (Elf_Internal_Rela *) relocs;
 
-  return TRUE;
+  return true;
 }
 
 
@@ -561,7 +561,7 @@ iq2000_elf_check_relocs (bfd *abfd,
    section, which means that the addend must be adjusted
    accordingly.	 */
 
-static bfd_boolean
+static int
 iq2000_elf_relocate_section (bfd *		     output_bfd ATTRIBUTE_UNUSED,
 			     struct bfd_link_info *  info,
 			     bfd *		     input_bfd,
@@ -629,8 +629,8 @@ iq2000_elf_relocate_section (bfd *
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned, ignored;
+	  bool unresolved_reloc;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -642,7 +642,8 @@ iq2000_elf_relocate_section (bfd *
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_IQ2000_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -684,7 +685,7 @@ iq2000_elf_relocate_section (bfd *
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -710,7 +711,7 @@ iq2000_elf_relocate_section (bfd *
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -755,24 +756,24 @@ elf32_iq2000_machine (bfd *abfd)
 
 /* Function to set the ELF flag bits.  */
 
-static bfd_boolean
+static bool
 iq2000_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object
    file to the output object file when linking.  */
 
-static bfd_boolean
+static bool
 iq2000_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword old_flags, old_partial;
   flagword new_flags, new_partial;
-  bfd_boolean error = FALSE;
+  bool error = false;
   char new_opt[80];
   char old_opt[80];
 
@@ -783,7 +784,7 @@ iq2000_elf_merge_private_bfd_data (bfd *
   if (!elf_flags_init (obfd))
     {
       /* First call, no flags set.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
 
@@ -824,7 +825,7 @@ iq2000_elf_merge_private_bfd_data (bfd *
       /* Print out any mismatches from above.  */
       if (new_opt[0])
 	{
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: compiled with %s and linked with modules compiled with %s"),
@@ -837,7 +838,7 @@ iq2000_elf_merge_private_bfd_data (bfd *
       /* Warn about any other mismatches.  */
       if (new_flags != old_flags)
 	{
-	  error = TRUE;
+	  error = true;
 
 	  _bfd_error_handler
 	    /* xgettext:c-format */
@@ -853,7 +854,7 @@ iq2000_elf_merge_private_bfd_data (bfd *
 }
 
 
-static bfd_boolean
+static bool
 iq2000_elf_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -880,16 +881,16 @@ iq2000_elf_print_private_bfd_data (bfd *
     }
 
   fputc ('\n', file);
-  return TRUE;
+  return true;
 }
 
 static
-bfd_boolean
+bool
 iq2000_elf_object_p (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_iq2000,
 			     elf32_iq2000_machine (abfd));
-  return TRUE;
+  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.20200303/bfd/elf32-lm32.c ./bfd/elf32-lm32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-lm32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-lm32.c	2026-03-05 02:07:20.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-2025 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,55 +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),
-				      LM32_ELF_DATA))
+				      _bfd_elf_link_hash_newfunc,
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -175,14 +132,14 @@ _lm32fdpic_add_rofixup (bfd *output_bfd,
 /* Create .rofixup sections in DYNOBJ, and set up
    shortcuts to them in our hash table.  */
 
-static bfd_boolean
+static bool
 create_rofixup_section (bfd *dynobj, struct bfd_link_info *info)
 {
   struct elf_lm32_link_hash_table *htab;
   htab = lm32_elf_hash_table (info);
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Fixup section for R_LM32_32 relocs.  */
   lm32fdpic_fixup32_section (info)
@@ -196,9 +153,9 @@ create_rofixup_section (bfd *dynobj, str
 					   | SEC_READONLY));
   if (lm32fdpic_fixup32_section (info) == NULL
       || !bfd_set_section_alignment (lm32fdpic_fixup32_section (info), 2))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type lm32_elf_howto_table [] =
@@ -206,260 +163,260 @@ static reloc_howto_type lm32_elf_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_LM32_NONE,		    /* type */
 	 0,			    /* rightshift */
-	 3,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 0,			    /* size */
 	 0,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_dont,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_NONE",		    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0,			    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_LM32_8,		    /* type */
 	 0,			    /* rightshift */
-	 0,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 1,			    /* size */
 	 8,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_8",		    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0xff,			    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_LM32_16,		    /* type */
 	 0,			    /* rightshift */
-	 1,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 2,			    /* size */
 	 16,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_16",		    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0xffff,		    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_LM32_32,		    /* type */
 	 0,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 32,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_32",		    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0xffffffff,		    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   HOWTO (R_LM32_HI16,		    /* type */
 	 16,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 16,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_HI16",		    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0xffff,		    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   HOWTO (R_LM32_LO16,		    /* type */
 	 0,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 16,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_dont,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_LO16",		    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0xffff,		    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   HOWTO (R_LM32_GPREL16,	    /* type */
 	 0,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 16,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_dont,    /* complain_on_overflow */
 	 lm32_elf_gprel_reloc,	    /* special_function */
 	 "R_LM32_GPREL16",	    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0xffff,		    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   HOWTO (R_LM32_CALL,		    /* type */
 	 2,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 26,			    /* bitsize */
-	 TRUE,			    /* pc_relative */
+	 true,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_signed,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_CALL",		    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0x3ffffff,		    /* dst_mask */
-	 TRUE),			    /* pcrel_offset */
+	 true),			    /* pcrel_offset */
 
   HOWTO (R_LM32_BRANCH,		    /* type */
 	 2,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 16,			    /* bitsize */
-	 TRUE,			    /* pc_relative */
+	 true,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_signed,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_BRANCH",	    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0xffff,		    /* dst_mask */
-	 TRUE),			    /* pcrel_offset */
+	 true),			    /* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_LM32_GNU_VTINHERIT,	    /* type */
 	 0,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 0,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_dont,    /* complain_on_overflow */
 	 NULL,			    /* special_function */
 	 "R_LM32_GNU_VTINHERIT",    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0,			    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_LM32_GNU_VTENTRY,	    /* type */
 	 0,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 0,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_dont,    /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,/* special_function */
 	 "R_LM32_GNU_VTENTRY",	    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0,			    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   HOWTO (R_LM32_16_GOT,		    /* type */
 	 0,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 16,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_signed,  /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_16_GOT",	    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0,			    /* src_mask */
 	 0xffff,		    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   HOWTO (R_LM32_GOTOFF_HI16,	    /* type */
 	 16,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 16,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_dont,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_GOTOFF_HI16",	    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0xffff,		    /* src_mask */
 	 0xffff,		    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   HOWTO (R_LM32_GOTOFF_LO16,	    /* type */
 	 0,			    /* rightshift */
-	 2,			    /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			    /* size */
 	 16,			    /* bitsize */
-	 FALSE,			    /* pc_relative */
+	 false,			    /* pc_relative */
 	 0,			    /* bitpos */
 	 complain_overflow_dont,    /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	    /* special_function */
 	 "R_LM32_GOTOFF_LO16",	    /* name */
-	 FALSE,			    /* partial_inplace */
+	 false,			    /* partial_inplace */
 	 0xffff,		    /* src_mask */
 	 0xffff,		    /* dst_mask */
-	 FALSE),		    /* pcrel_offset */
+	 false),		    /* pcrel_offset */
 
   HOWTO (R_LM32_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_LM32_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_LM32_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_LM32_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_LM32_JMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_LM32_JMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_LM32_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_LM32_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 };
 
@@ -524,7 +481,7 @@ lm32_reloc_name_lookup (bfd *abfd ATTRIB
 
 /* Set the howto pointer for an Lattice Mico32 ELF reloc.  */
 
-static bfd_boolean
+static bool
 lm32_info_to_howto_rela (bfd *abfd,
 			 arelent *cache_ptr,
 			 Elf_Internal_Rela *dst)
@@ -538,15 +495,15 @@ lm32_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &lm32_elf_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* Set the right machine number for an Lattice Mico32 ELF file. */
 
-static bfd_boolean
+static bool
 lm32_elf_object_p (bfd *abfd)
 {
   return bfd_default_set_arch_mach (abfd, bfd_arch_lm32, bfd_mach_lm32);
@@ -554,7 +511,7 @@ lm32_elf_object_p (bfd *abfd)
 
 /* Set machine type flags just before file is written out. */
 
-static bfd_boolean
+static bool
 lm32_elf_final_write_processing (bfd *abfd)
 {
   elf_elfheader (abfd)->e_machine = EM_LATTICEMICO32;
@@ -573,7 +530,7 @@ lm32_elf_final_write_processing (bfd *ab
 /* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
    dangerous relocation.  */
 
-static bfd_boolean
+static bool
 lm32_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp)
 {
   unsigned int count;
@@ -583,7 +540,7 @@ lm32_elf_assign_gp (bfd *output_bfd, bfd
   /* If we've already figured out what GP will be, just return it. */
   *pgp = _bfd_get_gp_value (output_bfd);
   if (*pgp)
-    return TRUE;
+    return true;
 
   count = bfd_get_symcount (output_bfd);
   sym = bfd_get_outsymbols (output_bfd);
@@ -613,10 +570,10 @@ lm32_elf_assign_gp (bfd *output_bfd, bfd
       /* Only get the error once.  */
       *pgp = 4;
       _bfd_set_gp_value (output_bfd, *pgp);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We have to figure out the gp value, so that we can adjust the
@@ -626,7 +583,7 @@ lm32_elf_assign_gp (bfd *output_bfd, bfd
    external symbol if we are producing relocatable output.  */
 
 static bfd_reloc_status_type
-lm32_elf_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable,
+lm32_elf_final_gp (bfd *output_bfd, asymbol *symbol, bool relocatable,
 		    char **error_message, bfd_vma *pgp)
 {
   if (bfd_is_und_section (symbol->section) && !relocatable)
@@ -697,7 +654,7 @@ lm32_elf_gprel_reloc (bfd *abfd,
     + symbol->section->output_section->vma + symbol->section->output_offset;
 
   if ((r =
-       lm32_elf_final_gp (abfd, symbol, FALSE, msg, &gp)) == bfd_reloc_ok)
+       lm32_elf_final_gp (abfd, symbol, false, msg, &gp)) == bfd_reloc_ok)
     {
       relocation = relocation + reloc_entry->addend - gp;
       reloc_entry->addend = 0;
@@ -747,7 +704,7 @@ _lm32fdpic_osec_to_segment (bfd *output_
 
 /* Determine if an output section is read-only.  */
 
-inline static bfd_boolean
+inline static bool
 _lm32fdpic_osec_readonly_p (bfd *output_bfd, asection *osec)
 {
   unsigned seg = _lm32fdpic_osec_to_segment (output_bfd, osec);
@@ -757,7 +714,7 @@ _lm32fdpic_osec_readonly_p (bfd *output_
 
 /* Relocate a section */
 
-static bfd_boolean
+static int
 lm32_elf_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -775,7 +732,7 @@ lm32_elf_relocate_section (bfd *output_b
   asection *sgot;
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   local_got_offsets = elf_local_got_offsets (input_bfd);
 
@@ -825,8 +782,8 @@ lm32_elf_relocate_section (bfd *output_b
       else
 	{
 	  /* It's a global symbol.  */
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned, ignored;
+	  bool unresolved_reloc;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -837,7 +794,8 @@ lm32_elf_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_LM32_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -885,7 +843,7 @@ lm32_elf_relocate_section (bfd *output_b
 	      BFD_ASSERT (sgot != NULL);
 	      if (h != NULL)
 		{
-		  bfd_boolean dyn;
+		  bool dyn;
 		  bfd_vma off;
 
 		  off = h->got.offset;
@@ -1048,7 +1006,7 @@ lm32_elf_relocate_section (bfd *output_b
 				(info,
 				 _("cannot emit dynamic relocations in read-only section"),
 				 name, input_bfd, input_section, rel->r_offset);
-			       return FALSE;
+			       return false;
 			    }
 			  /* Create entry in .rofixup section.  */
 			  _lm32fdpic_add_rofixup (output_bfd,
@@ -1105,7 +1063,7 @@ lm32_elf_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -1132,7 +1090,7 @@ lm32_elf_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static asection *
@@ -1155,40 +1113,28 @@ lm32_elf_gc_mark_hook (asection *sec,
 
 /* Look through the relocs for a section during the first phase.  */
 
-static bfd_boolean
+static bool
 lm32_elf_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
 		       const Elf_Internal_Rela *relocs)
 {
   Elf_Internal_Shdr *symtab_hdr;
-  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+  struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
   struct elf_lm32_link_hash_table *htab;
   bfd *dynobj;
 
   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;
+    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);
-  if (!elf_bad_symtab (abfd))
-    sym_hashes_end -= symtab_hdr->sh_info;
 
   htab = lm32_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
 
@@ -1222,7 +1168,7 @@ lm32_elf_check_relocs (bfd *abfd,
 	      if (dynobj == NULL)
 		htab->root.dynobj = dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (dynobj, info))
-		return FALSE;
+		return false;
 	      break;
 	    }
 	}
@@ -1238,12 +1184,12 @@ lm32_elf_check_relocs (bfd *abfd,
 	      if (dynobj == NULL)
 		htab->root.dynobj = dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (dynobj, info))
-		return FALSE;
+		return false;
 	      /* Create .rofixup section */
 	      if (htab->sfixup32 == NULL)
 		{
 		  if (! create_rofixup_section (dynobj, info))
-		    return FALSE;
+		    return false;
 		}
 	      break;
 	    case R_LM32_16_GOT:
@@ -1255,7 +1201,7 @@ lm32_elf_check_relocs (bfd *abfd,
 		  if (dynobj == NULL)
 		    htab->root.dynobj = dynobj = abfd;
 		  if (! create_rofixup_section (dynobj, info))
-		    return FALSE;
+		    return false;
 		}
 	      break;
 	    }
@@ -1280,7 +1226,7 @@ lm32_elf_check_relocs (bfd *abfd,
 		  size *= sizeof (bfd_signed_vma);
 		  local_got_refcounts = bfd_zalloc (abfd, size);
 		  if (local_got_refcounts == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_refcounts (abfd) = local_got_refcounts;
 		}
 	      local_got_refcounts[r_symndx] += 1;
@@ -1291,25 +1237,25 @@ lm32_elf_check_relocs (bfd *abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_LM32_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_LM32_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 lm32_elf_finish_dynamic_sections (bfd *output_bfd,
 				  struct bfd_link_info *info)
 {
@@ -1320,7 +1266,7 @@ lm32_elf_finish_dynamic_sections (bfd *o
 
   htab = lm32_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
 
@@ -1437,11 +1383,11 @@ lm32_elf_finish_dynamic_sections (bfd *o
 	     " != relocs %d",
 	    (int64_t) (lm32fdpic_fixup32_section (info)->size / 4),
 	    lm32fdpic_fixup32_section (info)->reloc_count);
-	  return FALSE;
+	  return false;
 	}
 
       hend = bfd_link_hash_lookup (info->hash, "__ROFIXUP_END__",
-	      FALSE, FALSE, TRUE);
+	      false, false, true);
       if (hend
 	  && (hend->type == bfd_link_hash_defined
 	      || hend->type == bfd_link_hash_defweak)
@@ -1460,18 +1406,18 @@ lm32_elf_finish_dynamic_sections (bfd *o
 		("LINKER BUG: .rofixup section hend->u.def.value != value: %"
 		 PRId64 " != %" PRId64,
 		 (int64_t) hend->u.def.value, (int64_t) value);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 lm32_elf_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
@@ -1481,8 +1427,6 @@ lm32_elf_finish_dynamic_symbol (bfd *out
   bfd_byte *loc;
 
   htab = lm32_elf_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   if (h->plt.offset != (bfd_vma) -1)
     {
@@ -1625,7 +1569,7 @@ lm32_elf_finish_dynamic_symbol (bfd *out
   if (h == htab->root.hdynamic || h == htab->root.hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -1642,31 +1586,13 @@ 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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 lm32_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h)
 {
@@ -1705,7 +1631,7 @@ lm32_elf_adjust_dynamic_symbol (struct b
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -1719,7 +1645,7 @@ lm32_elf_adjust_dynamic_symbol (struct b
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -1730,26 +1656,26 @@ lm32_elf_adjust_dynamic_symbol (struct b
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (0 && info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -1764,7 +1690,7 @@ lm32_elf_adjust_dynamic_symbol (struct b
 
   htab = lm32_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   s = htab->sdynbss;
   BFD_ASSERT (s != NULL);
@@ -1789,23 +1715,20 @@ lm32_elf_adjust_dynamic_symbol (struct b
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
 {
   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)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = lm32_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
-
-  eh = (struct elf_lm32_link_hash_entry *) h;
+    return false;
 
   if (htab->root.dynamic_sections_created
       && h->plt.refcount > 0)
@@ -1816,7 +1739,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
@@ -1867,7 +1790,7 @@ allocate_dynrelocs (struct elf_link_hash
   if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
 
       /* Make sure this symbol is output as a dynamic symbol.
 	 Undefined weak syms won't yet be marked as dynamic.  */
@@ -1875,7 +1798,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->root.sgot;
@@ -1889,8 +1812,8 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -1906,7 +1829,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 +1842,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.  */
@@ -1931,7 +1854,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -1954,7 +1877,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -1963,66 +1886,40 @@ 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);
     }
 
-  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;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-lm32_elf_size_dynamic_sections (bfd *output_bfd,
-				struct bfd_link_info *info)
+static bool
+lm32_elf_late_size_sections (bfd *output_bfd,
+			     struct bfd_link_info *info)
 {
   struct elf_lm32_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
   htab = lm32_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (htab->root.dynamic_sections_created)
     {
@@ -2033,6 +1930,7 @@ lm32_elf_size_dynamic_sections (bfd *out
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -2105,7 +2003,7 @@ lm32_elf_size_dynamic_sections (bfd *out
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       if ((s->flags & SEC_LINKER_CREATED) == 0)
@@ -2119,10 +2017,10 @@ lm32_elf_size_dynamic_sections (bfd *out
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -2157,55 +2055,12 @@ lm32_elf_size_dynamic_sections (bfd *out
 	 of garbage.  */
       s->contents = bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
-  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))
@@ -2213,7 +2068,7 @@ lm32_elf_size_dynamic_sections (bfd *out
       struct weak_symbol_list *list_start = NULL, *list_end = NULL;
       int rgot_weak_count = 0;
       int r32_count = 0;
-      int rgot_count = 0;
+      int rgot_count ATTRIBUTE_UNUSED = 0;
       /* Look for deleted sections.  */
       for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
 	{
@@ -2225,7 +2080,7 @@ lm32_elf_size_dynamic_sections (bfd *out
 		  Elf_Internal_Rela *internal_relocs, *end;
 		  internal_relocs = elf_section_data (s)->relocs;
 		  if (internal_relocs == NULL)
-		    internal_relocs = (_bfd_elf_link_read_relocs (ibfd, s, NULL, NULL, FALSE));
+		    internal_relocs = (_bfd_elf_link_read_relocs (ibfd, s, NULL, NULL, false));
 		  if (internal_relocs != NULL)
 		    {
 		      end = internal_relocs + s->reloc_count;
@@ -2284,7 +2139,7 @@ lm32_elf_size_dynamic_sections (bfd *out
 				      /* Create a new entry.  */
 				      new_entry = malloc (sizeof (struct weak_symbol_list));
 				      if (!new_entry)
-					return FALSE;
+					return false;
 				      new_entry->name = h->root.root.string;
 				      new_entry->next = NULL;
 				      /* Add to list */
@@ -2307,7 +2162,7 @@ lm32_elf_size_dynamic_sections (bfd *out
 			}
 		    }
 		  else
-		    return FALSE;
+		    return false;
 		}
 	    }
 	}
@@ -2329,16 +2184,17 @@ lm32_elf_size_dynamic_sections (bfd *out
 	  lm32fdpic_fixup32_section (info)->contents =
 	     bfd_zalloc (dynobj, lm32fdpic_fixup32_section (info)->size);
 	  if (lm32fdpic_fixup32_section (info)->contents == NULL)
-	    return FALSE;
+	    return false;
+	  lm32fdpic_fixup32_section (info)->alloced = 1;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create dynamic sections when linking against a dynamic object.  */
 
-static bfd_boolean
+static bool
 lm32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_lm32_link_hash_table *htab;
@@ -2349,16 +2205,16 @@ lm32_elf_create_dynamic_sections (bfd *a
 
   htab = lm32_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Make sure we have a GOT - For the case where we have a dynamic object
      but none of the relocs in check_relocs */
   if (!_bfd_elf_create_got_section (abfd, info))
-    return FALSE;
+    return false;
   if (IS_FDPIC (abfd) && (htab->sfixup32 == NULL))
     {
       if (! create_rofixup_section (abfd, info))
-	return FALSE;
+	return false;
     }
 
   /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
@@ -2377,7 +2233,7 @@ lm32_elf_create_dynamic_sections (bfd *a
   htab->root.splt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
 
   if (bed->want_plt_sym)
     {
@@ -2388,9 +2244,9 @@ lm32_elf_create_dynamic_sections (bfd *a
 
       if (! (_bfd_generic_link_add_one_symbol
 	     (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s,
-	      (bfd_vma) 0, NULL, FALSE,
+	      (bfd_vma) 0, NULL, false,
 	      get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	return false;
       h = (struct elf_link_hash_entry *) bh;
       h->def_regular = 1;
       h->type = STT_OBJECT;
@@ -2398,7 +2254,7 @@ lm32_elf_create_dynamic_sections (bfd *a
 
       if (bfd_link_pic (info)
 	  && ! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   s = bfd_make_section_anyway_with_flags (abfd,
@@ -2408,11 +2264,11 @@ lm32_elf_create_dynamic_sections (bfd *a
   htab->root.srelplt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (htab->root.sgot == NULL
       && !_bfd_elf_create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   if (bed->want_dynbss)
     {
@@ -2426,7 +2282,7 @@ lm32_elf_create_dynamic_sections (bfd *a
 					      SEC_ALLOC | SEC_LINKER_CREATED);
       htab->sdynbss = s;
       if (s == NULL)
-	return FALSE;
+	return false;
       /* The .rel[a].bss section holds copy relocs.  This section is not
 	 normally needed.  We need to create it here, though, so that the
 	 linker will map it to an output section.  We can't just create it
@@ -2447,92 +2303,45 @@ lm32_elf_create_dynamic_sections (bfd *a
 	  htab->srelbss = s;
 	  if (s == NULL
 	      || !bfd_set_section_alignment (s, ptralign))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  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);
+  return true;
 }
 
-static bfd_boolean
-lm32_elf_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+lm32_elf_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   if (!bfd_link_relocatable (info))
     {
       if (!bfd_elf_stack_segment_size (output_bfd, info,
 				       "__stacksize", DEFAULT_STACK_SIZE))
-	return FALSE;
+	return false;
 
       asection *sec = bfd_get_section_by_name (output_bfd, ".stack");
       if (sec)
 	sec->size = info->stacksize >= 0 ? info->stacksize : 0;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 lm32_elf_fdpic_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   unsigned i;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   if (! _bfd_elf_copy_private_bfd_data (ibfd, obfd))
-    return FALSE;
+    return false;
 
   if (! elf_tdata (ibfd) || ! elf_tdata (ibfd)->phdr
       || ! elf_tdata (obfd) || ! elf_tdata (obfd)->phdr)
-    return TRUE;
+    return true;
 
   /* Copy the stack size.  */
   for (i = 0; i < elf_elfheader (ibfd)->e_phnum; i++)
@@ -2550,14 +2359,14 @@ lm32_elf_fdpic_copy_private_bfd_data (bf
 			    ->s->sizeof_ehdr, SEEK_SET) != 0
 		  || get_elf_backend_data (obfd)->s->write_out_phdrs (obfd, elf_tdata (obfd)->phdr,
 				     elf_elfheader (obfd)->e_phnum) != 0)
-		return FALSE;
+		return false;
 	      break;
 	    }
 
 	break;
       }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -2588,8 +2397,7 @@ 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_late_size_sections		lm32_elf_late_size_sections
 #define elf_backend_omit_section_dynsym		_bfd_elf_omit_section_dynsym_all
 #define elf_backend_create_dynamic_sections	lm32_elf_create_dynamic_sections
 #define elf_backend_finish_dynamic_sections	lm32_elf_finish_dynamic_sections
@@ -2610,8 +2418,8 @@ lm32_elf_fdpic_copy_private_bfd_data (bf
 #undef	elf32_bed
 #define	elf32_bed		elf32_lm32fdpic_bed
 
-#undef	elf_backend_always_size_sections
-#define elf_backend_always_size_sections	lm32_elf_always_size_sections
+#undef	elf_backend_early_size_sections
+#define elf_backend_early_size_sections		lm32_elf_early_size_sections
 #undef	bfd_elf32_bfd_copy_private_bfd_data
 #define bfd_elf32_bfd_copy_private_bfd_data	lm32_elf_fdpic_copy_private_bfd_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.20200303/bfd/elf32-m32c.c ./bfd/elf32-m32c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m32c.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-m32c.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,19 +28,19 @@
 /* Forward declarations.  */
 static reloc_howto_type * m32c_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean m32c_info_to_howto_rela
+static bool m32c_info_to_howto_rela
   (bfd *, arelent *, Elf_Internal_Rela *);
-static bfd_boolean m32c_elf_relocate_section
+static int m32c_elf_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Sym *, asection **);
-static bfd_boolean m32c_elf_check_relocs
+static bool m32c_elf_check_relocs
   (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *);
-static bfd_boolean m32c_elf_relax_delete_bytes (bfd *, asection *, bfd_vma, int);
+static bool m32c_elf_relax_delete_bytes (bfd *, asection *, bfd_vma, int);
 #ifdef DEBUG
 char * m32c_get_reloc (long reloc);
 void dump_symtab (bfd *, void *, void *);
 #endif
-static bfd_boolean m32c_elf_relax_section
-(bfd *abfd, asection *sec, struct bfd_link_info *link_info, bfd_boolean *again);
+static bool m32c_elf_relax_section
+(bfd *abfd, asection *sec, struct bfd_link_info *link_info, bool *again);
 static bfd_reloc_status_type m32c_apply_reloc_24
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 
@@ -50,188 +50,188 @@ static reloc_howto_type m32c_elf_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_M32C_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GCC intentionally overflows these next two in order to work
      around limitations in the addressing modes, so don't complain
      about overflow.  */
   HOWTO (R_M32C_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_24,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 m32c_apply_reloc_24,	/* special_function */
 	 "R_M32C_24",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_8_PCREL,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_8_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_M32C_16_PCREL,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_M32C_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_LO16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_LO16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_HI8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_HI8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_HI16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_HI16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_RL_JUMP,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_RL_JUMP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_RL_1ADDR,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_RL_1ADDR",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32C_RL_2ADDR,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32C_RL_2ADDR",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 };
 
@@ -291,7 +291,7 @@ m32c_reloc_name_lookup (bfd *abfd ATTRIB
 
 /* Set the howto pointer for an M32C ELF reloc.  */
 
-static bfd_boolean
+static bool
 m32c_info_to_howto_rela (bfd *               abfd,
 			 arelent *           cache_ptr,
 			 Elf_Internal_Rela * dst)
@@ -305,10 +305,10 @@ m32c_info_to_howto_rela (bfd *
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & m32c_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 
@@ -388,7 +388,7 @@ static bfd_reloc_status_type m32c_apply_
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 m32c_elf_relocate_section
     (bfd *		     output_bfd ATTRIBUTE_UNUSED,
      struct bfd_link_info *  info,
@@ -480,12 +480,13 @@ m32c_elf_relocate_section
 	  else if (!bfd_link_relocatable (info))
 	    (*info->callbacks->undefined_symbol) (info, h->root.root.string,
 						  input_bfd, input_section,
-						  rel->r_offset, TRUE);
+						  rel->r_offset, true);
 	}
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_M32C_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -617,7 +618,7 @@ m32c_elf_relocate_section
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -643,13 +644,13 @@ m32c_elf_relocate_section
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We support 16-bit pointers to code above 64k by generating a thunk
    below 64k containing a JMP instruction to the final address.  */
 
-static bfd_boolean
+static bool
 m32c_elf_check_relocs
     (bfd *		       abfd,
      struct bfd_link_info *    info,
@@ -665,7 +666,7 @@ m32c_elf_check_relocs
   bfd *dynobj;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -710,7 +711,7 @@ m32c_elf_check_relocs
 	      elf_hash_table (info)->splt = splt;
 	      if (splt == NULL
 		  || !bfd_set_section_alignment (splt, 1))
-		return FALSE;
+		return false;
 	    }
 
 	  if (h != NULL)
@@ -725,7 +726,7 @@ m32c_elf_check_relocs
 		  size = symtab_hdr->sh_info * sizeof (bfd_vma);
 		  local_plt_offsets = (bfd_vma *) bfd_alloc (abfd, size);
 		  if (local_plt_offsets == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_offsets (abfd) = local_plt_offsets;
 
 		  for (i = 0; i < symtab_hdr->sh_info; i++)
@@ -743,12 +744,12 @@ m32c_elf_check_relocs
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This must exist if dynobj is ever set.  */
 
-static bfd_boolean
+static bool
 m32c_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
 				  struct bfd_link_info *info)
 {
@@ -769,53 +770,54 @@ m32c_elf_finish_dynamic_sections (bfd *a
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-m32c_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-			       struct bfd_link_info *info)
+static bool
+m32c_elf_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			      struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *splt;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   if (dynobj == NULL)
-    return TRUE;
+    return true;
 
   splt = elf_hash_table (info)->splt;
   BFD_ASSERT (splt != NULL);
 
   splt->contents = (bfd_byte *) bfd_zalloc (dynobj, splt->size);
   if (splt->contents == NULL)
-    return FALSE;
+    return false;
+  splt->alloced = 1;
 
-  return TRUE;
+  return true;
 }
 
 /* Function to set the ELF flag bits.  */
 
-static bfd_boolean
+static bool
 m32c_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 m32c_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword old_flags, old_partial;
   flagword new_flags, new_partial;
-  bfd_boolean error = FALSE;
+  bool error = false;
   char new_opt[80];
   char old_opt[80];
 
@@ -833,7 +835,7 @@ m32c_elf_merge_private_bfd_data (bfd *ib
   if (!elf_flags_init (obfd))
     {
       /* First call, no flags set.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
 
@@ -870,7 +872,7 @@ m32c_elf_merge_private_bfd_data (bfd *ib
       /* Print out any mismatches from above.  */
       if (new_opt[0])
 	{
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: compiled with %s and linked with modules compiled with %s"),
@@ -883,7 +885,7 @@ m32c_elf_merge_private_bfd_data (bfd *ib
       /* Warn about any other mismatches.  */
       if (new_flags != old_flags)
 	{
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: uses different e_flags (%#x) fields"
@@ -899,7 +901,7 @@ m32c_elf_merge_private_bfd_data (bfd *ib
 }
 
 
-static bfd_boolean
+static bool
 m32c_elf_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -921,7 +923,7 @@ m32c_elf_print_private_bfd_data (bfd *ab
     }
 
   fputc ('\n', file);
-  return TRUE;
+  return true;
 }
 
 /* Return the MACH for an e_flags value.  */
@@ -938,12 +940,12 @@ elf32_m32c_machine (bfd *abfd)
   return bfd_mach_m16c;
 }
 
-static bfd_boolean
+static bool
 m32c_elf_object_p (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_m32c,
 			     elf32_m32c_machine (abfd));
-  return TRUE;
+  return true;
 }
  
 
@@ -956,7 +958,7 @@ dump_symtab (bfd * abfd, void *internal_
   Elf_Internal_Sym *isymend;
   Elf_Internal_Sym *isym;
   Elf_Internal_Shdr *symtab_hdr;
-  bfd_boolean free_internal = 0, free_external = 0;
+  bool free_internal = 0, free_external = 0;
   char * st_info_str;
   char * st_info_stb_str;
   char * st_other_str;
@@ -1097,10 +1099,10 @@ m32c_get_reloc (long reloc)
 struct relax_plt_data
 {
   asection *splt;
-  bfd_boolean *again;
+  bool *again;
 };
 
-static bfd_boolean
+static bool
 m32c_relax_plt_check (struct elf_link_hash_entry *h, void * xdata)
 {
   struct relax_plt_data *data = (struct relax_plt_data *) xdata;
@@ -1121,17 +1123,17 @@ m32c_relax_plt_check (struct elf_link_ha
 	{
 	  h->plt.offset = -1;
 	  data->splt->size -= 4;
-	  *data->again = TRUE;
+	  *data->again = true;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* A subroutine of m32c_elf_relax_section.  If the global symbol H
    previously had a plt entry, give it a new entry offset.  */
 
-static bfd_boolean
+static bool
 m32c_relax_plt_realloc (struct elf_link_hash_entry *h, void * xdata)
 {
   bfd_vma *entry = (bfd_vma *) xdata;
@@ -1142,26 +1144,26 @@ m32c_relax_plt_realloc (struct elf_link_
       *entry += 4;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 m32c_elf_relax_plt_section (asection *splt,
 			    struct bfd_link_info *info,
-			    bfd_boolean *again)
+			    bool *again)
 {
   struct relax_plt_data relax_plt_data;
   bfd *ibfd;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* Quick check for an empty plt.  */
   if (splt->size == 0)
-    return TRUE;
+    return true;
 
   /* Map across all global symbols; see which ones happen to
      fall in the low 64k.  */
@@ -1191,7 +1193,7 @@ m32c_elf_relax_plt_section (asection *sp
 					    symtab_hdr->sh_info, 0,
 					    NULL, NULL, NULL);
 	  if (isymbuf == NULL)
-	    return FALSE;
+	    return false;
 	}
 
       for (idx = 0; idx < symtab_hdr->sh_info; ++idx)
@@ -1220,7 +1222,7 @@ m32c_elf_relax_plt_section (asection *sp
 	    {
 	      local_plt_offsets[idx] = -1;
 	      splt->size -= 4;
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -1264,7 +1266,7 @@ m32c_elf_relax_plt_section (asection *sp
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static int
@@ -1284,7 +1286,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;
@@ -1347,7 +1349,7 @@ static int bytes_to_reloc[] = {
 /* If the displacement is within the given range and the new encoding
    differs from the old encoding (the index), then the insn can be
    relaxed to the new encoding.  */
-typedef struct {
+typedef const struct {
   int bytes;
   unsigned int max_disp;
   unsigned char new_encoding;
@@ -1426,12 +1428,11 @@ static EncodingTable m32c_addr_encodings
   { 0,     0, 31 }, /*  */
 };
 
-static bfd_boolean
-m32c_elf_relax_section
-    (bfd *		    abfd,
-     asection *		    sec,
-     struct bfd_link_info * link_info,
-     bfd_boolean *	    again)
+static bool
+m32c_elf_relax_section (bfd *abfd,
+			asection *sec,
+			struct bfd_link_info *link_info,
+			bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Shdr *shndx_hdr;
@@ -1442,16 +1443,17 @@ 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);
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   machine = elf32_m32c_machine (abfd);
 
@@ -1459,10 +1461,11 @@ m32c_elf_relax_section
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = & elf_symtab_hdr (abfd);
   if (elf_symtab_shndx_list (abfd))
@@ -1491,17 +1494,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.  */
@@ -1877,7 +1883,7 @@ m32c_elf_relax_section
       if (gap_size == 0)
 	continue;
 
-      *again = TRUE;
+      *again = true;
 
       srel->r_info = ELF32_R_INFO (ELF32_R_SYM (srel->r_info), new_type);
 
@@ -1898,11 +1904,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,37 +1931,33 @@ 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;
     }
 
-  return TRUE;
+  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);
-  return FALSE;
+  free (free_intsyms);
+  return false;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
-m32c_elf_relax_delete_bytes
- (bfd *	     abfd,
-  asection * sec,
-  bfd_vma    addr,
-  int	     count)
+static bool
+m32c_elf_relax_delete_bytes (bfd *abfd,
+			     asection *sec,
+			     bfd_vma addr,
+			     int count)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Shdr *shndx_hdr;
@@ -2075,7 +2074,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 ++)
@@ -2101,7 +2099,7 @@ m32c_elf_relax_delete_bytes
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This is for versions of gcc prior to 4.3.  */
@@ -2136,8 +2134,8 @@ _bfd_m32c_elf_eh_frame_address_size (bfd
 #define elf_backend_check_relocs		m32c_elf_check_relocs
 #define elf_backend_object_p			m32c_elf_object_p
 #define elf_symbol_leading_char			('_')
-#define elf_backend_always_size_sections \
-  m32c_elf_always_size_sections
+#define elf_backend_early_size_sections \
+  m32c_elf_early_size_sections
 #define elf_backend_finish_dynamic_sections \
   m32c_elf_finish_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.20200303/bfd/elf32-m32r.c ./bfd/elf32-m32r.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m32r.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-m32r.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* M32R-specific support for 32-bit ELF.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -221,16 +221,16 @@ m32r_elf_generic_reloc (bfd *input_bfd,
   (((x & reloc_entry->howto->src_mask) +  relocation) &	\
   reloc_entry->howto->dst_mask))
 
-  switch (reloc_entry->howto->size)
+  switch (bfd_get_reloc_size (reloc_entry->howto))
     {
-    case 1:
+    case 2:
       {
 	short x = bfd_get_16 (input_bfd, inplace_address);
 	DOIT (x);
 	bfd_put_16 (input_bfd, (bfd_vma) x, inplace_address);
       }
       break;
-    case 2:
+    case 4:
       {
 	unsigned long x = bfd_get_32 (input_bfd, inplace_address);
 	DOIT (x);
@@ -474,62 +474,62 @@ static reloc_howto_type m32r_elf_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_M32R_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_M32R_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 m32r_elf_generic_reloc,/* special_function */
 	 "R_M32R_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_M32R_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 m32r_elf_generic_reloc,/* special_function */
 	 "R_M32R_32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 24 bit address.  */
   HOWTO (R_M32R_24,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 m32r_elf_generic_reloc,/* special_function */
 	 "R_M32R_24",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An PC Relative 10-bit relocation, shifted by 2.
      This reloc is complicated because relocations are relative to pc & -4.
@@ -541,32 +541,32 @@ static reloc_howto_type m32r_elf_howto_t
      again.  */
   HOWTO (R_M32R_10_PCREL,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 m32r_elf_10_pcrel_reloc, /* special_function */
 	 "R_M32R_10_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A relative 18 bit relocation, right shifted by 2.  */
   HOWTO (R_M32R_18_PCREL,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_18_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A relative 26 bit relocation, right shifted by 2.  */
   /* ??? It's not clear whether this should have partial_inplace set or not.
@@ -575,107 +575,107 @@ static reloc_howto_type m32r_elf_howto_t
      again.  */
   HOWTO (R_M32R_26_PCREL,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_26_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* High 16 bits of address when lower 16 is or'd in.  */
   HOWTO (R_M32R_HI16_ULO,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 m32r_elf_hi16_reloc,	/* special_function */
 	 "R_M32R_HI16_ULO",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of address when lower 16 is added in.  */
   HOWTO (R_M32R_HI16_SLO,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 m32r_elf_hi16_reloc,	/* special_function */
 	 "R_M32R_HI16_SLO",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Lower 16 bits of address.  */
   HOWTO (R_M32R_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 m32r_elf_lo16_reloc,	/* special_function */
 	 "R_M32R_LO16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Small data area 16 bits offset.  */
   HOWTO (R_M32R_SDA16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 m32r_elf_sda16_reloc,	/* special_function */
 	 "R_M32R_SDA16",	/* name */
-	 TRUE,			/* partial_inplace */  /* FIXME: correct? */
+	 true,			/* partial_inplace */  /* FIXME: correct? */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_M32R_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_M32R_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_M32R_GNU_VTENTRY,	 /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_M32R_GNU_VTENTRY",	 /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (13),
   EMPTY_HOWTO (14),
@@ -701,196 +701,196 @@ static reloc_howto_type m32r_elf_howto_t
   /* A 16 bit absolute relocation.  */
   HOWTO (R_M32R_16_RELA,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_16_RELA",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_M32R_32_RELA,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,/* special_function */
 	 "R_M32R_32_RELA",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 24 bit address.  */
   HOWTO (R_M32R_24_RELA,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,/* special_function */
 	 "R_M32R_24_RELA",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32R_10_PCREL_RELA,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 m32r_elf_10_pcrel_reloc, /* special_function */
 	 "R_M32R_10_PCREL_RELA",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A relative 18 bit relocation, right shifted by 2.  */
   HOWTO (R_M32R_18_PCREL_RELA,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_18_PCREL_RELA",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A relative 26 bit relocation, right shifted by 2.  */
   HOWTO (R_M32R_26_PCREL_RELA,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_26_PCREL_RELA",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* High 16 bits of address when lower 16 is or'd in.  */
   HOWTO (R_M32R_HI16_ULO_RELA,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_HI16_ULO_RELA",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of address when lower 16 is added in.  */
   HOWTO (R_M32R_HI16_SLO_RELA,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_HI16_SLO_RELA",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Lower 16 bits of address.  */
   HOWTO (R_M32R_LO16_RELA,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_LO16_RELA",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Small data area 16 bits offset.  */
   HOWTO (R_M32R_SDA16_RELA,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_SDA16_RELA",	/* name */
-	 TRUE,			/* partial_inplace */  /* FIXME: correct? */
+	 true,			/* partial_inplace */  /* FIXME: correct? */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_M32R_RELA_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_M32R_RELA_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_M32R_RELA_GNU_VTENTRY,     /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_M32R_RELA_GNU_VTENTRY",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit PC relative relocation.  */
   HOWTO (R_M32R_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,/* special_function */
 	 "R_M32R_REL32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   EMPTY_HOWTO (46),
   EMPTY_HOWTO (47),
@@ -899,33 +899,33 @@ static reloc_howto_type m32r_elf_howto_t
      the symbol.  */
   HOWTO (R_M32R_GOT24,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_M32R_GOT24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Like R_M32R_PCREL, but referring to the procedure linkage table
      entry for the symbol.  */
   HOWTO (R_M32R_26_PLTREL,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_26_PLTREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* This is used only by the dynamic linker.  The symbol should exist
      both in the object being run and in some shared library.  The
@@ -934,236 +934,236 @@ static reloc_howto_type m32r_elf_howto_t
      run has to have the data at some particular address.  */
   HOWTO (R_M32R_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_M32R_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Like R_M32R_24, but used when setting global offset table
      entries.  */
   HOWTO (R_M32R_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_M32R_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Marks a procedure linkage table entry for a symbol.  */
   HOWTO (R_M32R_JMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_M32R_JMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Used only by the dynamic linker.  When the object is run, this
      longword is set to the load address of the object, plus the
      addend.  */
   HOWTO (R_M32R_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_M32R_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32R_GOTOFF,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_M32R_GOTOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An PC Relative 24-bit relocation used when setting PIC offset
      table register. */
   HOWTO (R_M32R_GOTPC24,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_M32R_GOTPC24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Like R_M32R_HI16_ULO, but referring to the GOT table entry for
      the symbol.  */
   HOWTO (R_M32R_GOT16_HI_ULO,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOT16_HI_ULO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Like R_M32R_HI16_SLO, but referring to the GOT table entry for
      the symbol.  */
   HOWTO (R_M32R_GOT16_HI_SLO,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOT16_HI_SLO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Like R_M32R_LO16, but referring to the GOT table entry for
      the symbol.  */
   HOWTO (R_M32R_GOT16_LO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOT16_LO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An PC Relative relocation used when setting PIC offset table register.
      Like R_M32R_HI16_ULO, but referring to the GOT table entry for
      the symbol.  */
   HOWTO (R_M32R_GOTPC_HI_ULO,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOTPC_HI_ULO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* An PC Relative relocation used when setting PIC offset table register.
      Like R_M32R_HI16_SLO, but referring to the GOT table entry for
      the symbol.  */
   HOWTO (R_M32R_GOTPC_HI_SLO,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOTPC_HI_SLO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* An PC Relative relocation used when setting PIC offset table register.
      Like R_M32R_LO16, but referring to the GOT table entry for
      the symbol.  */
   HOWTO (R_M32R_GOTPC_LO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOTPC_LO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_M32R_GOTOFF_HI_ULO,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOTOFF_HI_ULO",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32R_GOTOFF_HI_SLO,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOTOFF_HI_SLO",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_M32R_GOTOFF_LO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M32R_GOTOFF_LO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* Map BFD reloc types to M32R ELF reloc types.  */
@@ -1272,7 +1272,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an M32R ELF reloc.  */
 
-static bfd_boolean
+static bool
 m32r_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
 			arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
@@ -1286,13 +1286,13 @@ m32r_info_to_howto_rel (bfd *abfd ATTRIB
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &m32r_elf_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 m32r_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 		    arelent *cache_ptr,
 		    Elf_Internal_Rela *dst)
@@ -1304,20 +1304,20 @@ m32r_info_to_howto (bfd *abfd ATTRIBUTE_
 	  && (r_type < (unsigned int) R_M32R_max)))
     {
       cache_ptr->howto = &m32r_elf_howto_table[r_type];
-      return TRUE;
+      return true;
     }
 
   /* xgettext:c-format */
   _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r_type);
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
 
 
 /* Given a BFD section, try to locate the corresponding ELF section
    index.  */
 
-static bfd_boolean
+static bool
 _bfd_m32r_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					asection *sec,
 					int *retval)
@@ -1325,9 +1325,9 @@ _bfd_m32r_elf_section_from_bfd_section (
   if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_M32R_SCOMMON;
-      return TRUE;
+      return true;
     }
-  return FALSE;
+  return false;
 }
 
 /* M32R ELF uses two common sections.  One is the usual one, and the other
@@ -1337,8 +1337,11 @@ _bfd_m32r_elf_section_from_bfd_section (
    _SDA_BASE.  This is what we use for the small common section.  This
    approach is copied from elf32-mips.c.  */
 static asection m32r_elf_scom_section;
-static asymbol m32r_elf_scom_symbol;
-static asymbol *m32r_elf_scom_symbol_ptr;
+static const asymbol m32r_elf_scom_symbol =
+  GLOBAL_SYM_INIT (".scommon", &m32r_elf_scom_section);
+static asection m32r_elf_scom_section =
+  BFD_FAKE_SECTION (m32r_elf_scom_section, &m32r_elf_scom_symbol,
+		    ".scommon", 0, SEC_IS_COMMON | SEC_SMALL_DATA);
 
 /* Handle the special M32R section numbers that a symbol may use.  */
 
@@ -1350,19 +1353,6 @@ _bfd_m32r_elf_symbol_processing (bfd *ab
   switch (elfsym->internal_elf_sym.st_shndx)
     {
     case SHN_M32R_SCOMMON:
-      if (m32r_elf_scom_section.name == NULL)
-	{
-	  /* Initialize the small common section.  */
-	  m32r_elf_scom_section.name = ".scommon";
-	  m32r_elf_scom_section.flags = SEC_IS_COMMON;
-	  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;
-	  m32r_elf_scom_symbol.name = ".scommon";
-	  m32r_elf_scom_symbol.flags = BSF_SECTION_SYM;
-	  m32r_elf_scom_symbol.section = &m32r_elf_scom_section;
-	  m32r_elf_scom_symbol_ptr = &m32r_elf_scom_symbol;
-	}
       asym->section = &m32r_elf_scom_section;
       asym->value = elfsym->internal_elf_sym.st_size;
       break;
@@ -1374,7 +1364,7 @@ _bfd_m32r_elf_symbol_processing (bfd *ab
    We also keep watching for whether we need to create the sdata special
    linker sections.  */
 
-static bfd_boolean
+static bool
 m32r_elf_add_symbol_hook (bfd *abfd,
 			  struct bfd_link_info *info,
 			  Elf_Internal_Sym *sym,
@@ -1406,13 +1396,13 @@ m32r_elf_add_symbol_hook (bfd *abfd,
 	  s = bfd_make_section_anyway_with_flags (abfd, ".sdata",
 						  flags);
 	  if (s == NULL)
-	    return FALSE;
+	    return false;
 	  if (!bfd_set_section_alignment (s, 2))
-	    return FALSE;
+	    return false;
 	}
 
       bh = bfd_link_hash_lookup (info->hash, "_SDA_BASE_",
-				 FALSE, FALSE, FALSE);
+				 false, false, false);
 
       if ((bh == NULL || bh->type == bfd_link_hash_undefined)
 	  && !(_bfd_generic_link_add_one_symbol (info,
@@ -1422,10 +1412,10 @@ m32r_elf_add_symbol_hook (bfd *abfd,
 						 s,
 						 (bfd_vma) 32768,
 						 NULL,
-						 FALSE,
+						 false,
 						 get_elf_backend_data (abfd)->collect,
 						 &bh)))
-	return FALSE;
+	return false;
       h = (struct elf_link_hash_entry *) bh;
       h->type = STT_OBJECT;
     }
@@ -1434,12 +1424,12 @@ 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;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We have to figure out the SDA_BASE value, so that we can adjust the
@@ -1458,7 +1448,7 @@ m32r_elf_final_sda_base (bfd *output_bfd
     {
       struct bfd_link_hash_entry *h;
 
-      h = bfd_link_hash_lookup (info->hash, "_SDA_BASE_", FALSE, FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->hash, "_SDA_BASE_", false, false, true);
       if (h != NULL && h->type == bfd_link_hash_defined)
 	elf_gp (output_bfd) = (h->u.def.value
 			       + h->u.def.section->output_section->vma
@@ -1498,107 +1488,50 @@ 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)			\
   (elf_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* 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),
-				      M32R_ELF_DATA))
+  if (!_bfd_elf_link_hash_table_init (ret, abfd,
+				      _bfd_elf_link_hash_newfunc,
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
     }
 
-  return &ret->root.root;
+  return &ret->root;
 }
 
 /* Create dynamic sections when linking against a dynamic object.  */
 
-static bfd_boolean
+static bool
 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);
@@ -1606,7 +1539,7 @@ m32r_elf_create_dynamic_sections (bfd *a
 
   htab = m32r_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
      .rel[a].bss sections.  */
@@ -1621,10 +1554,10 @@ 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;
+    return false;
 
   if (bed->want_plt_sym)
     {
@@ -1635,31 +1568,31 @@ m32r_elf_create_dynamic_sections (bfd *a
 
       if (! (_bfd_generic_link_add_one_symbol
 	     (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s,
-	      (bfd_vma) 0, NULL, FALSE,
+	      (bfd_vma) 0, NULL, false,
 	      get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	return false;
       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))
-	return FALSE;
+	return false;
     }
 
   s = bfd_make_section_anyway_with_flags (abfd,
 					  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;
+    return false;
 
-  if (htab->root.sgot == NULL
+  if (htab->sgot == NULL
       && !_bfd_elf_create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   if (bed->want_dynbss)
     {
@@ -1673,7 +1606,7 @@ m32r_elf_create_dynamic_sections (bfd *a
 					      SEC_ALLOC | SEC_LINKER_CREATED);
       htab->sdynbss = s;
       if (s == NULL)
-	return FALSE;
+	return false;
       /* The .rel[a].bss section holds copy relocs.  This section is not
 	 normally needed.  We need to create it here, though, so that the
 	 linker will map it to an output section.  We can't just create it
@@ -1694,90 +1627,25 @@ m32r_elf_create_dynamic_sections (bfd *a
 	  htab->srelbss = s;
 	  if (s == NULL
 	      || !bfd_set_section_alignment (s, ptralign))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  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);
+  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 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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 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;
 
@@ -1816,7 +1684,7 @@ m32r_elf_adjust_dynamic_symbol (struct b
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -1830,7 +1698,7 @@ m32r_elf_adjust_dynamic_symbol (struct b
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -1841,26 +1709,26 @@ m32r_elf_adjust_dynamic_symbol (struct b
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (0 && info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -1875,7 +1743,7 @@ m32r_elf_adjust_dynamic_symbol (struct b
 
   htab = m32r_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   s = htab->sdynbss;
   BFD_ASSERT (s != NULL);
@@ -1900,25 +1768,22 @@ m32r_elf_adjust_dynamic_symbol (struct b
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 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)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = m32r_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    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.
@@ -1927,12 +1792,12 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       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 +1823,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
 	{
@@ -1978,7 +1843,7 @@ allocate_dynrelocs (struct elf_link_hash
   if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
 
       /* Make sure this symbol is output as a dynamic symbol.
 	 Undefined weak syms won't yet be marked as dynamic.  */
@@ -1986,22 +1851,22 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    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)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -2017,7 +1882,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 +1895,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.  */
@@ -2042,7 +1907,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -2055,7 +1920,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))))
 	{
@@ -2065,7 +1930,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -2074,72 +1939,46 @@ 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);
     }
 
-  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;
 }
 
 /* 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)
+static bool
+m32r_elf_late_size_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;
+  bool relocs;
   bfd *ibfd;
 
 #ifdef DEBUG_PIC
-  printf ("m32r_elf_size_dynamic_sections()\n");
+  printf ("m32r_elf_late_size_sections()\n");
 #endif
 
   htab = m32r_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
-  dynobj = htab->root.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  dynobj = htab->dynobj;
+  if (dynobj == NULL)
+    return true;
 
-  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)
@@ -2148,6 +1987,7 @@ m32r_elf_size_dynamic_sections (bfd *out
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -2198,8 +2038,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,28 +2056,28 @@ 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.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       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
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
-	  if (s->size != 0 && s != htab->root.srelplt)
-	    relocs = TRUE;
+	  if (s->size != 0 && s != htab->srelplt)
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -2272,57 +2112,11 @@ m32r_elf_size_dynamic_sections (bfd *out
 	 of garbage.  */
       s->contents = bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
-  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.
@@ -2358,7 +2152,7 @@ m32r_elf_size_dynamic_sections (bfd *out
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 m32r_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -2372,19 +2166,19 @@ m32r_elf_relocate_section (bfd *output_b
   struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
   Elf_Internal_Rela *rel, *relend;
   /* Assume success.  */
-  bfd_boolean ret = TRUE;
-  struct elf_m32r_link_hash_table *htab = m32r_elf_hash_table (info);
+  bool ret = true;
+  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);
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   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;
@@ -2407,7 +2201,7 @@ m32r_elf_relocate_section (bfd *output_b
       const char *sym_name;
       bfd_reloc_status_type r;
       const char *errmsg = NULL;
-      bfd_boolean use_rel = FALSE;
+      bool use_rel = false;
 
       h = NULL;
       r_type = ELF32_R_TYPE (rel->r_info);
@@ -2417,7 +2211,7 @@ m32r_elf_relocate_section (bfd *output_b
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      input_bfd, (int) r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	  continue;
 	}
 
@@ -2429,7 +2223,7 @@ m32r_elf_relocate_section (bfd *output_b
 	continue;
 
       if (r_type <= R_M32R_GNU_VTENTRY)
-	use_rel = TRUE;
+	use_rel = true;
 
       howto = m32r_elf_howto_table + r_type;
       r_symndx = ELF32_R_SYM (rel->r_info);
@@ -2477,10 +2271,10 @@ m32r_elf_relocate_section (bfd *output_b
 	  if (h->root.type == bfd_link_hash_defined
 	      || h->root.type == bfd_link_hash_defweak)
 	    {
-	      bfd_boolean dyn;
+	      bool 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,16 +2345,17 @@ 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,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_M32R_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info) && !use_rel)
 	{
@@ -2695,13 +2490,13 @@ m32r_elf_relocate_section (bfd *output_b
 
 	      if (h != NULL)
 		{
-		  bfd_boolean dyn;
+		  bool dyn;
 		  bfd_vma off;
 
 		  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 +2556,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
@@ -2837,7 +2632,7 @@ m32r_elf_relocate_section (bfd *output_b
 			      || !h->def_regular))))
 		{
 		  Elf_Internal_Rela outrel;
-		  bfd_boolean skip, relocate;
+		  bool skip, relocate;
 		  bfd_byte *loc;
 
 		  /* When generating a shared object, these relocations
@@ -2846,22 +2641,22 @@ m32r_elf_relocate_section (bfd *output_b
 		  if (sreloc == NULL)
 		    {
 		      sreloc = _bfd_elf_get_dynamic_reloc_section
-			(input_bfd, input_section, /*rela?*/ TRUE);
+			(input_bfd, input_section, /*rela?*/ true);
 		      if (sreloc == NULL)
-			return FALSE;
+			return false;
 		    }
 
-		  skip = FALSE;
-		  relocate = FALSE;
+		  skip = false;
+		  relocate = false;
 
 		  outrel.r_offset = _bfd_elf_section_offset (output_bfd,
 							     info,
 							     input_section,
 							     rel->r_offset);
 		  if (outrel.r_offset == (bfd_vma) -1)
-		    skip = TRUE;
+		    skip = true;
 		  else if (outrel.r_offset == (bfd_vma) -2)
-		    skip = relocate = TRUE;
+		    skip = relocate = true;
 		  outrel.r_offset += (input_section->output_section->vma
 				      + input_section->output_offset);
 
@@ -2884,7 +2679,7 @@ m32r_elf_relocate_section (bfd *output_b
 			|| ((info->symbolic || h->dynindx == -1)
 			     && h->def_regular))
 		      {
-			relocate = TRUE;
+			relocate = true;
 			outrel.r_info = ELF32_R_INFO (0, R_M32R_RELATIVE);
 			outrel.r_addend = relocation + rel->r_addend;
 		      }
@@ -2968,7 +2763,7 @@ m32r_elf_relocate_section (bfd *output_b
 						 &sda_base);
 		    if (r != bfd_reloc_ok)
 		      {
-			ret = FALSE;
+			ret = false;
 			goto check_reloc;
 		      }
 
@@ -2988,7 +2783,7 @@ m32r_elf_relocate_section (bfd *output_b
 		       m32r_elf_howto_table[(int) r_type].name,
 		       sec);
 		    /*bfd_set_error (bfd_error_bad_value); ??? why? */
-		    ret = FALSE;
+		    ret = false;
 		    continue;
 		  }
 	      }
@@ -3038,7 +2833,7 @@ m32r_elf_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, offset, TRUE);
+		(info, name, input_bfd, input_section, offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -3071,13 +2866,13 @@ m32r_elf_relocate_section (bfd *output_b
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 m32r_elf_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				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
@@ -3085,8 +2880,6 @@ m32r_elf_finish_dynamic_symbol (bfd *out
 #endif
 
   htab = m32r_elf_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   if (h->plt.offset != (bfd_vma) -1)
     {
@@ -3103,9 +2896,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 +2992,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 +3041,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,20 +3056,20 @@ 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;
+  return true;
 }
 
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 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;
@@ -3287,14 +3080,14 @@ m32r_elf_finish_dynamic_sections (bfd *o
 
   htab = m32r_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    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 +3110,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 +3128,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))
@@ -3382,13 +3175,13 @@ m32r_elf_finish_dynamic_sections (bfd *o
       elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
     }
 
-  return TRUE;
+  return true;
 }
 
 
 /* Set the right machine number.  */
 
-static bfd_boolean
+static bool
 m32r_elf_object_p (bfd *abfd)
 {
   switch (elf_elfheader (abfd)->e_flags & EF_M32R_ARCH)
@@ -3398,12 +3191,12 @@ m32r_elf_object_p (bfd *abfd)
     case E_M32RX_ARCH:  (void) bfd_default_set_arch_mach (abfd, bfd_arch_m32r, bfd_mach_m32rx); break;
     case E_M32R2_ARCH:  (void) bfd_default_set_arch_mach (abfd, bfd_arch_m32r, bfd_mach_m32r2); break;
     }
-  return TRUE;
+  return true;
 }
 
 /* Store the machine number in the flags field.  */
 
-static bfd_boolean
+static bool
 m32r_elf_final_write_processing (bfd *abfd)
 {
   unsigned long val;
@@ -3423,21 +3216,21 @@ m32r_elf_final_write_processing (bfd *ab
 
 /* Function to keep M32R specific file flags.  */
 
-static bfd_boolean
+static bool
 m32r_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 m32r_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -3446,7 +3239,7 @@ m32r_elf_merge_private_bfd_data (bfd *ib
 
   if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
@@ -3460,9 +3253,9 @@ m32r_elf_merge_private_bfd_data (bfd *ib
 	 unitialised values, which surprise surprise, correspond
 	 to the default values.  */
       if (bfd_get_arch_info (ibfd)->the_default)
-	return TRUE;
+	return true;
 
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -3470,12 +3263,12 @@ m32r_elf_merge_private_bfd_data (bfd *ib
 	return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
 				  bfd_get_mach (ibfd));
 
-      return TRUE;
+      return true;
     }
 
   /* Check flag compatibility.  */
   if (in_flags == out_flags)
-    return TRUE;
+    return true;
 
   if ((in_flags & EF_M32R_ARCH) != (out_flags & EF_M32R_ARCH))
     {
@@ -3487,16 +3280,16 @@ m32r_elf_merge_private_bfd_data (bfd *ib
 	    (_("%pB: instruction set mismatch with previous modules"), ibfd);
 
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Display the flags field.  */
 
-static bfd_boolean
+static bool
 m32r_elf_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE * file = (FILE *) ptr;
@@ -3517,7 +3310,7 @@ m32r_elf_print_private_bfd_data (bfd *ab
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 static asection *
@@ -3544,7 +3337,7 @@ m32r_elf_gc_mark_hook (asection *sec,
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 m32r_elf_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
@@ -3554,21 +3347,12 @@ 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;
+    return true;
 
   sreloc = NULL;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -3576,9 +3360,9 @@ m32r_elf_check_relocs (bfd *abfd,
 
   htab = m32r_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
-  dynobj = htab->root.dynobj;
+  dynobj = htab->dynobj;
 
   rel_end = relocs + sec->reloc_count;
   for (rel = relocs; rel < rel_end; rel++)
@@ -3600,7 +3384,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,9 +3401,9 @@ 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;
+		return false;
 	      break;
 
 	    default:
@@ -3651,7 +3435,7 @@ m32r_elf_check_relocs (bfd *abfd,
 		  size *= sizeof (bfd_signed_vma);
 		  local_got_refcounts = bfd_zalloc (abfd, size);
 		  if (local_got_refcounts == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_refcounts (abfd) = local_got_refcounts;
 		}
 	      local_got_refcounts[r_symndx] += 1;
@@ -3734,7 +3518,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
@@ -3742,16 +3526,16 @@ m32r_elf_check_relocs (bfd *abfd,
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, dynobj, 2, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* 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.  */
@@ -3762,7 +3546,7 @@ m32r_elf_check_relocs (bfd *abfd,
 		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
-		    return FALSE;
+		    return false;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
@@ -3775,11 +3559,11 @@ 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)
-		    return FALSE;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -3801,23 +3585,23 @@ m32r_elf_check_relocs (bfd *abfd,
 	case R_M32R_RELA_GNU_VTINHERIT:
 	case R_M32R_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_M32R_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 	case R_M32R_RELA_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static const struct bfd_elf_special_section m32r_elf_special_sections[] =
@@ -3827,6 +3611,18 @@ static const struct bfd_elf_special_sect
   { NULL,		      0,  0, 0,		   0 }
 };
 
+static bool
+m32r_elf_section_flags (const Elf_Internal_Shdr *hdr)
+{
+  const char *name = hdr->bfd_section->name;
+
+  if (startswith (name, ".sbss")
+      || startswith (name, ".sdata"))
+    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,
@@ -3863,13 +3659,12 @@ m32r_elf_reloc_type_class (const struct
 
 #define elf_backend_create_dynamic_sections	m32r_elf_create_dynamic_sections
 #define bfd_elf32_bfd_link_hash_table_create	m32r_elf_link_hash_table_create
-#define elf_backend_size_dynamic_sections	m32r_elf_size_dynamic_sections
+#define elf_backend_late_size_sections		m32r_elf_late_size_sections
 #define elf_backend_omit_section_dynsym		_bfd_elf_omit_section_dynsym_all
 #define elf_backend_finish_dynamic_sections	m32r_elf_finish_dynamic_sections
 #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,8 +3692,9 @@ 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
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #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.20200303/bfd/elf32-m68hc11.c ./bfd/elf32-m68hc11.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m68hc11.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-m68hc11.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Stephane Carrez (stcarrez@nerim.fr)
    (Heavily copied from the D10V port by Martin Hunt (hunt@cygnus.com))
 
@@ -32,20 +32,20 @@
 /* Relocation functions.  */
 static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean m68hc11_info_to_howto_rel
+static bool m68hc11_info_to_howto_rel
   (bfd *, arelent *, Elf_Internal_Rela *);
 
 /* Trampoline generation.  */
-static bfd_boolean m68hc11_elf_size_one_stub
+static bool m68hc11_elf_size_one_stub
   (struct bfd_hash_entry *gen_entry, void *in_arg);
-static bfd_boolean m68hc11_elf_build_one_stub
+static bool m68hc11_elf_build_one_stub
   (struct bfd_hash_entry *gen_entry, void *in_arg);
 static struct bfd_link_hash_table* m68hc11_elf_bfd_link_hash_table_create
   (bfd* abfd);
 
 /* Linker relaxation.  */
-static bfd_boolean m68hc11_elf_relax_section
-  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
+static bool m68hc11_elf_relax_section
+  (bfd *, asection *, struct bfd_link_info *, bool *);
 static void m68hc11_elf_relax_delete_bytes
   (bfd *, asection *, bfd_vma, int);
 static void m68hc11_relax_group
@@ -65,213 +65,213 @@ static reloc_howto_type elf_m68hc11_howt
   /* This reloc does nothing.  */
   HOWTO (R_M68HC11_NONE,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit absolute relocation */
   HOWTO (R_M68HC11_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit absolute relocation (upper address) */
   HOWTO (R_M68HC11_HI8,		/* type */
 	 8,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_HI8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit absolute relocation (upper address) */
   HOWTO (R_M68HC11_LO8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_LO8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit PC-rel relocation */
   HOWTO (R_M68HC11_PCREL_8,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_PCREL_8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit absolute relocation */
   HOWTO (R_M68HC11_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont /*bitfield */ ,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  This one is never used for the
      code relocation.  It's used by gas for -gstabs generation.  */
   HOWTO (R_M68HC11_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 3 bit absolute relocation */
   HOWTO (R_M68HC11_3B,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 3,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_4B",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x003,			/* src_mask */
 	 0x003,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit PC-rel relocation */
   HOWTO (R_M68HC11_PCREL_16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_PCREL_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_M68HC11_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_M68HC11_GNU_VTINHERIT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_M68HC11_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_M68HC11_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 24 bit relocation */
   HOWTO (R_M68HC11_24,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16-bit low relocation */
   HOWTO (R_M68HC11_LO16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A page relocation */
   HOWTO (R_M68HC11_PAGE,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC11_PAGE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (14),
   EMPTY_HOWTO (15),
@@ -283,32 +283,32 @@ static reloc_howto_type elf_m68hc11_howt
   /* Mark beginning of a jump instruction (any form).  */
   HOWTO (R_M68HC11_RL_JUMP,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 m68hc11_elf_ignore_reloc,	/* special_function */
 	 "R_M68HC11_RL_JUMP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Mark beginning of Gcc relaxation group instruction.  */
   HOWTO (R_M68HC11_RL_GROUP,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 m68hc11_elf_ignore_reloc,	/* special_function */
 	 "R_M68HC11_RL_GROUP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 /* Map BFD reloc types to M68HC11 ELF reloc types.  */
@@ -377,7 +377,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an M68HC11 ELF reloc.  */
 
-static bfd_boolean
+static bool
 m68hc11_info_to_howto_rel (bfd *abfd,
 			   arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
@@ -390,17 +390,17 @@ m68hc11_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_m68hc11_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 
 /* Far trampoline generation.  */
 
 /* Build a 68HC11 trampoline stub.  */
-static bfd_boolean
+static bool
 m68hc11_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 {
   struct elf32_m68hc11_stub_hash_entry *stub_entry;
@@ -415,9 +415,17 @@ 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->fatal (_("%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;
+    return false;
 
   stub_sec = stub_entry->stub_sec;
 
@@ -458,13 +466,13 @@ m68hc11_elf_build_one_stub (struct bfd_h
   bfd_put_8 (stub_bfd, 0x7E, loc);
   bfd_put_16 (stub_bfd, htab->pinfo.trampoline_addr, loc + 1);
 
-  return TRUE;
+  return true;
 }
 
 /* As above, but don't actually build the stub.  Just bump offset so
    we know stub section sizes.  */
 
-static bfd_boolean
+static bool
 m68hc11_elf_size_one_stub (struct bfd_hash_entry *gen_entry,
 			   void *in_arg ATTRIBUTE_UNUSED)
 {
@@ -474,7 +482,7 @@ m68hc11_elf_size_one_stub (struct bfd_ha
   stub_entry = (struct elf32_m68hc11_stub_hash_entry *) gen_entry;
 
   stub_entry->stub_sec->size += 10;
-  return TRUE;
+  return true;
 }
 
 /* Create a 68HC11 ELF linker hash table.  */
@@ -497,7 +505,7 @@ m68hc11_elf_bfd_link_hash_table_create (
 
 /* 68HC11 Linker Relaxation.  */
 
-struct m68hc11_direct_relax
+const struct m68hc11_direct_relax
 {
   const char *name;
   unsigned char code;
@@ -540,7 +548,7 @@ struct m68hc11_direct_relax
   { 0, 0, 0 }
 };
 
-static struct m68hc11_direct_relax *
+static const struct m68hc11_direct_relax *
 find_relaxable_insn (unsigned char code)
 {
   int i;
@@ -678,9 +686,9 @@ m68hc11_relax_group (bfd *abfd, asection
 
 	and somewhat more difficult to support.  */
 
-static bfd_boolean
+static bool
 m68hc11_elf_relax_section (bfd *abfd, asection *sec,
-			   struct bfd_link_info *link_info, bfd_boolean *again)
+			   struct bfd_link_info *link_info, bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -695,16 +703,17 @@ m68hc11_elf_relax_section (bfd *abfd, as
   Elf_Internal_Sym *isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -945,7 +954,7 @@ m68hc11_elf_relax_section (bfd *abfd, as
 					      irel->r_offset + 1, 3);
 	    }
 	  prev_insn_branch = 0;
-	  *again = TRUE;
+	  *again = true;
 	}
 
       /* Try to turn a 16 bit address into a 8 bit page0 address.  */
@@ -954,7 +963,7 @@ m68hc11_elf_relax_section (bfd *abfd, as
 	{
 	  unsigned char code;
 	  unsigned short offset;
-	  struct m68hc11_direct_relax *rinfo;
+	  const struct m68hc11_direct_relax *rinfo;
 
 	  prev_insn_branch = 0;
 	  offset = bfd_get_16 (abfd, contents + irel->r_offset);
@@ -987,7 +996,7 @@ m68hc11_elf_relax_section (bfd *abfd, as
 	      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
 					   R_M68HC11_NONE);
 	      if (sec->size != old_sec_size)
-		*again = TRUE;
+		*again = true;
 	      continue;
 	    }
 
@@ -1024,7 +1033,7 @@ m68hc11_elf_relax_section (bfd *abfd, as
 				       R_M68HC11_8);
 
 	  /* That will change things, so, we should relax again.  */
-	  *again = TRUE;
+	  *again = true;
 	}
       else if (ELF32_R_TYPE (irel->r_info) == R_M68HC11_16 && !is_far)
 	{
@@ -1066,7 +1075,7 @@ m68hc11_elf_relax_section (bfd *abfd, as
 		  m68hc11_elf_relax_delete_bytes (abfd, sec,
 						  irel->r_offset + 1, 1);
 		  /* That will change things, so, we should relax again.  */
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 	}
@@ -1074,11 +1083,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)
     {
@@ -1104,16 +1110,13 @@ m68hc11_elf_relax_section (bfd *abfd, as
       free_extsyms = NULL;
     }
 
-  return TRUE;
+  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);
-  return FALSE;
+  free (free_relocs);
+  free (free_contents);
+  free (free_extsyms);
+  return false;
 }
 
 /* Delete some bytes from a section while relaxing.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m68hc12.c ./bfd/elf32-m68hc12.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m68hc12.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-m68hc12.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Stephane Carrez (stcarrez@nerim.fr)
    (Heavily copied from the D10V port by Martin Hunt (hunt@cygnus.com))
 
@@ -32,7 +32,7 @@
 /* Relocation functions.  */
 static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean m68hc11_info_to_howto_rel
+static bool m68hc11_info_to_howto_rel
   (bfd *, arelent *, Elf_Internal_Rela *);
 
 /* Trampoline generation.  */
@@ -107,320 +107,320 @@ static reloc_howto_type elf_m68hc11_howt
   /* This reloc does nothing.  */
   HOWTO (R_M68HC11_NONE,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit absolute relocation */
   HOWTO (R_M68HC11_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit absolute relocation (upper address) */
   HOWTO (R_M68HC11_HI8,		/* type */
 	 8,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_HI8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit absolute relocation (upper address) */
   HOWTO (R_M68HC11_LO8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_LO8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit PC-rel relocation */
   HOWTO (R_M68HC11_PCREL_8,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_PCREL_8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit absolute relocation */
   HOWTO (R_M68HC11_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont /*bitfield */ ,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  This one is never used for the
      code relocation.  It's used by gas for -gstabs generation.  */
   HOWTO (R_M68HC11_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 3 bit absolute relocation */
   HOWTO (R_M68HC11_3B,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 3,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_4B",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x003,			/* src_mask */
 	 0x003,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit PC-rel relocation */
   HOWTO (R_M68HC11_PCREL_16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_PCREL_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_M68HC11_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_M68HC11_GNU_VTINHERIT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_M68HC11_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_M68HC11_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 24 bit relocation */
   HOWTO (R_M68HC11_24,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 m68hc11_elf_special_reloc,	/* special_function */
 	 "R_M68HC12_24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16-bit low relocation */
   HOWTO (R_M68HC11_LO16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 m68hc11_elf_special_reloc,/* special_function */
 	 "R_M68HC12_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A page relocation */
   HOWTO (R_M68HC11_PAGE,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 m68hc11_elf_special_reloc,/* special_function */
 	 "R_M68HC12_PAGE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (14),
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_M68HC12_16B,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_16B",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 9 bit PC-rel relocation.  */
   HOWTO (R_M68HC12_PCREL_9,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize (result is >>1) */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_PCREL_9",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xfe00,		/* src_mask */
 	 0x01ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 10 bit PC-rel relocation.  */
   HOWTO (R_M68HC12_PCREL_10,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize (result is >>1) */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_PCREL_10",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xfc00,		/* src_mask */
 	 0x03ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 8 bit absolute relocation (upper address).  */
   HOWTO (R_M68HC12_HI8XG,		/* type */
 	 8,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_HI8XG",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit absolute relocation (lower address).  */
   HOWTO (R_M68HC12_LO8XG,		/* type */
 	 8,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_M68HC12_LO8XG",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ff,		/* src_mask */
 	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Mark beginning of a jump instruction (any form).  */
   HOWTO (R_M68HC11_RL_JUMP,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 m68hc11_elf_ignore_reloc,	/* special_function */
 	 "R_M68HC12_RL_JUMP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Mark beginning of Gcc relaxation group instruction.  */
   HOWTO (R_M68HC11_RL_GROUP,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 m68hc11_elf_ignore_reloc,	/* special_function */
 	 "R_M68HC12_RL_GROUP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 /* Map BFD reloc types to M68HC11 ELF reloc types.  */
@@ -497,7 +497,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an M68HC11 ELF reloc.  */
 
-static bfd_boolean
+static bool
 m68hc11_info_to_howto_rel (bfd *abfd,
 			   arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
@@ -510,17 +510,17 @@ m68hc11_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_m68hc11_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 
 /* Far trampoline generation.  */
 
 /* Build a 68HC12 trampoline stub.  */
-static bfd_boolean
+static bool
 m68hc12_elf_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 {
   struct elf32_m68hc11_stub_hash_entry *stub_entry;
@@ -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->fatal (_("%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;
@@ -568,13 +576,13 @@ m68hc12_elf_build_one_stub (struct bfd_h
   bfd_put_16 (stub_bfd, htab->pinfo.trampoline_addr, loc + 1);
   bfd_put_8 (stub_bfd, phys_page, loc + 3);
 
-  return TRUE;
+  return true;
 }
 
 /* As above, but don't actually build the stub.  Just bump offset so
    we know stub section sizes.  */
 
-static bfd_boolean
+static bool
 m68hc12_elf_size_one_stub (struct bfd_hash_entry *gen_entry,
 			   void *in_arg ATTRIBUTE_UNUSED)
 {
@@ -584,7 +592,7 @@ m68hc12_elf_size_one_stub (struct bfd_ha
   stub_entry = (struct elf32_m68hc11_stub_hash_entry *) gen_entry;
 
   stub_entry->stub_sec->size += 7;
-  return TRUE;
+  return true;
 }
 
 /* Create a 68HC12 ELF linker hash table.  */
@@ -604,7 +612,7 @@ m68hc12_elf_bfd_link_hash_table_create (
   return &ret->root.root;
 }
 
-static bfd_boolean
+static bool
 m68hc12_elf_set_mach_from_flags (bfd *abfd)
 {
   flagword flags = elf_elfheader (abfd)->e_flags;
@@ -622,9 +630,9 @@ m68hc12_elf_set_mach_from_flags (bfd *ab
 				 bfd_mach_m6812_default);
       break;
     default:
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Specific 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.20200303/bfd/elf32-m68hc1x.c ./bfd/elf32-m68hc1x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m68hc1x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-m68hc1x.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Stephane Carrez (stcarrez@nerim.fr)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -20,7 +20,6 @@
    MA 02110-1301, USA.  */
 
 #include "sysdep.h"
-#include "alloca-conf.h"
 #include "bfd.h"
 #include "bfdlink.h"
 #include "libbfd.h"
@@ -46,7 +45,7 @@ static void m68hc11_elf_set_symbol (bfd*
 				    const char* name, bfd_vma value,
 				    asection* sec);
 
-static bfd_boolean m68hc11_elf_export_one_stub
+static bool m68hc11_elf_export_one_stub
   (struct bfd_hash_entry *gen_entry, void *in_arg);
 
 static void scan_sections_for_abi (bfd*, asection*, void *);
@@ -54,7 +53,7 @@ static void scan_sections_for_abi (bfd*,
 struct m68hc11_scan_param
 {
    struct m68hc11_page_info* pinfo;
-   bfd_boolean use_memory_banks;
+   bool use_memory_banks;
 };
 
 
@@ -77,7 +76,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)
@@ -85,8 +84,7 @@ m68hc11_elf_hash_table_create (bfd *abfd
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      _bfd_elf_link_hash_newfunc,
-				      sizeof (struct elf_link_hash_entry),
-				      M68HC11_ELF_DATA))
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -158,7 +156,7 @@ m68hc12_add_stub (const char *stub_name,
 
   /* Enter this entry into the linker stub hash table.  */
   stub_entry = m68hc12_stub_hash_lookup (htab->stub_hash_table, stub_name,
-					 TRUE, FALSE);
+					 true, false);
   if (stub_entry == NULL)
     {
       /* xgettext:c-format */
@@ -182,7 +180,7 @@ m68hc12_add_stub (const char *stub_name,
    file.  We use it for identify far symbols and force a loading of
    the trampoline handler.  */
 
-bfd_boolean
+bool
 elf32_m68hc11_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
 			       Elf_Internal_Sym *sym,
 			       const char **namep ATTRIBUTE_UNUSED,
@@ -196,7 +194,7 @@ elf32_m68hc11_add_symbol_hook (bfd *abfd
 
       h = (struct elf_link_hash_entry *)
 	bfd_link_hash_lookup (info->hash, "__far_trampoline",
-			      FALSE, FALSE, FALSE);
+			      false, false, false);
       if (h == NULL)
 	{
 	  struct bfd_link_hash_entry* entry = NULL;
@@ -206,11 +204,11 @@ elf32_m68hc11_add_symbol_hook (bfd *abfd
 					    BSF_GLOBAL,
 					    bfd_und_section_ptr,
 					    (bfd_vma) 0, (const char*) NULL,
-					    FALSE, FALSE, &entry);
+					    false, false, &entry);
 	}
 
     }
-  return TRUE;
+  return true;
 }
 
 /* Merge non-visibility st_other attributes, STO_M68HC12_FAR and
@@ -218,12 +216,12 @@ elf32_m68hc11_add_symbol_hook (bfd *abfd
 
 void
 elf32_m68hc11_merge_symbol_attribute (struct elf_link_hash_entry *h,
-				      const Elf_Internal_Sym *isym,
-				      bfd_boolean definition,
-				      bfd_boolean dynamic ATTRIBUTE_UNUSED)
+				      unsigned int st_other,
+				      bool definition,
+				      bool dynamic ATTRIBUTE_UNUSED)
 {
   if (definition)
-    h->other = ((isym->st_other & ~ELF_ST_VISIBILITY (-1))
+    h->other = ((st_other & ~ELF_ST_VISIBILITY (-1))
 		| ELF_ST_VISIBILITY (h->other));
 }
 
@@ -241,7 +239,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;
 
@@ -325,7 +323,7 @@ elf32_m68hc11_setup_section_lists (bfd *
    PC-relative calls to a target that is unreachable with a "bl"
    instruction.  */
 
-bfd_boolean
+bool
 elf32_m68hc11_size_stubs (bfd *output_bfd, bfd *stub_bfd,
 			  struct bfd_link_info *info,
 			  asection * (*add_stub_section) (const char*, asection*))
@@ -334,12 +332,12 @@ 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);
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Stash our params away.  */
   htab->stub_bfd = stub_bfd;
@@ -357,7 +355,7 @@ elf32_m68hc11_size_stubs (bfd *output_bf
   amt = sizeof (Elf_Internal_Sym *) * bfd_count;
   all_local_syms = (Elf_Internal_Sym **) bfd_zmalloc (amt);
   if (all_local_syms == NULL)
-    return FALSE;
+    return false;
 
   /* Walk over all the input BFDs, swapping in local symbols.  */
   for (input_bfd = info->input_bfds, bfd_indx = 0;
@@ -384,7 +382,7 @@ elf32_m68hc11_size_stubs (bfd *output_bf
       if (local_syms == NULL)
 	{
 	  free (all_local_syms);
-	  return FALSE;
+	  return false;
 	}
 
       all_local_syms[bfd_indx] = local_syms;
@@ -459,7 +457,7 @@ elf32_m68hc11_size_stubs (bfd *output_bf
 		{
 		  /* It's a local symbol.  */
 		  Elf_Internal_Shdr *hdr;
-		  bfd_boolean is_far;
+		  bool is_far;
 
 		  sym = local_syms + r_indx;
 		  is_far = (sym && (sym->st_other & STO_M68HC12_FAR));
@@ -524,7 +522,7 @@ elf32_m68hc11_size_stubs (bfd *output_bf
 	      stub_entry = m68hc12_stub_hash_lookup
 		(htab->stub_hash_table,
 		 stub_name,
-		 FALSE, FALSE);
+		 false, false);
 	      if (stub_entry == NULL)
 		{
 		  if (add_stub_section == 0)
@@ -564,27 +562,27 @@ elf32_m68hc11_size_stubs (bfd *output_bf
       bfd_hash_traverse (htab->stub_hash_table, htab->size_one_stub, htab);
     }
   free (all_local_syms);
-  return TRUE;
+  return true;
 
  error_ret_free_local:
   free (all_local_syms);
-  return FALSE;
+  return false;
 }
 
 /* Export the trampoline addresses in the symbol table.  */
-static bfd_boolean
+static bool
 m68hc11_elf_export_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 {
   struct bfd_link_info *info;
   struct m68hc11_elf_link_hash_table *htab;
   struct elf32_m68hc11_stub_hash_entry *stub_entry;
   char* name;
-  bfd_boolean result;
+  bool result;
 
   info = (struct bfd_link_info *) in_arg;
   htab = m68hc11_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Massage our args to the form they really have.  */
   stub_entry = (struct elf32_m68hc11_stub_hash_entry *) gen_entry;
@@ -611,7 +609,7 @@ m68hc11_elf_set_symbol (bfd *abfd, struc
   struct elf_link_hash_entry *h;
 
   h = (struct elf_link_hash_entry *)
-    bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, FALSE);
+    bfd_link_hash_lookup (info->hash, name, false, false, false);
   if (h == NULL)
     {
       _bfd_generic_link_add_one_symbol (info, abfd,
@@ -620,7 +618,7 @@ m68hc11_elf_set_symbol (bfd *abfd, struc
 					sec,
 					value,
 					(const char*) NULL,
-					TRUE, FALSE, NULL);
+					true, false, NULL);
     }
   else
     {
@@ -636,7 +634,7 @@ m68hc11_elf_set_symbol (bfd *abfd, struc
    table.  This function is called via m68hc12elf_finish in the
    linker.  */
 
-bfd_boolean
+bool
 elf32_m68hc11_build_stubs (bfd *abfd, struct bfd_link_info *info)
 {
   asection *stub_sec;
@@ -647,7 +645,7 @@ elf32_m68hc11_build_stubs (bfd *abfd, st
   m68hc11_elf_get_bank_parameters (info);
   htab = m68hc11_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   for (stub_sec = htab->stub_bfd->sections;
        stub_sec != NULL;
@@ -659,7 +657,8 @@ elf32_m68hc11_build_stubs (bfd *abfd, st
       size = stub_sec->size;
       stub_sec->contents = (unsigned char *) bfd_zalloc (htab->stub_bfd, size);
       if (stub_sec->contents == NULL && size != 0)
-	return FALSE;
+	return false;
+      stub_sec->alloced = 1;
       stub_sec->size = 0;
     }
 
@@ -672,7 +671,7 @@ elf32_m68hc11_build_stubs (bfd *abfd, st
      are mapped.  This is used by gdb and the simulator to obtain
      the information.  It can be used by programs to burn the eprom
      at the good addresses.  */
-  param.use_memory_banks = FALSE;
+  param.use_memory_banks = false;
   param.pinfo = &htab->pinfo;
   bfd_map_over_sections (abfd, scan_sections_for_abi, &param);
   if (param.use_memory_banks)
@@ -688,7 +687,7 @@ elf32_m68hc11_build_stubs (bfd *abfd, st
 			      bfd_abs_section_ptr);
     }
 
-  return TRUE;
+  return true;
 }
 
 void
@@ -714,7 +713,7 @@ m68hc11_elf_get_bank_parameters (struct
   pinfo->bank_size = 1 << M68HC12_BANK_SHIFT;
 
   h = bfd_link_hash_lookup (info->hash, BFD_M68HC11_BANK_START_NAME,
-			    FALSE, FALSE, TRUE);
+			    false, false, true);
   if (h != (struct bfd_link_hash_entry*) NULL
       && h->type == bfd_link_hash_defined)
     pinfo->bank_physical = (h->u.def.value
@@ -722,7 +721,7 @@ m68hc11_elf_get_bank_parameters (struct
 			    + h->u.def.section->output_offset);
 
   h = bfd_link_hash_lookup (info->hash, BFD_M68HC11_BANK_VIRTUAL_NAME,
-			    FALSE, FALSE, TRUE);
+			    false, false, true);
   if (h != (struct bfd_link_hash_entry*) NULL
       && h->type == bfd_link_hash_defined)
     pinfo->bank_virtual = (h->u.def.value
@@ -730,7 +729,7 @@ m68hc11_elf_get_bank_parameters (struct
 			   + h->u.def.section->output_offset);
 
   h = bfd_link_hash_lookup (info->hash, BFD_M68HC11_BANK_SIZE_NAME,
-			    FALSE, FALSE, TRUE);
+			    false, false, true);
   if (h != (struct bfd_link_hash_entry*) NULL
       && h->type == bfd_link_hash_defined)
     pinfo->bank_size = (h->u.def.value
@@ -745,8 +744,8 @@ m68hc11_elf_get_bank_parameters (struct
   pinfo->bank_physical_end = pinfo->bank_physical + pinfo->bank_size;
   pinfo->bank_param_initialized = 1;
 
-  h = bfd_link_hash_lookup (info->hash, "__far_trampoline", FALSE,
-			    FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, "__far_trampoline", false,
+			    false, true);
   if (h != (struct bfd_link_hash_entry*) NULL
       && h->type == bfd_link_hash_defined)
     pinfo->trampoline_addr = (h->u.def.value
@@ -845,7 +844,7 @@ m68hc11_elf_special_reloc (bfd *abfd ATT
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-bfd_boolean
+bool
 elf32_m68hc11_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			    asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -855,7 +854,7 @@ elf32_m68hc11_check_relocs (bfd *abfd, s
   const Elf_Internal_Rela *	rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -884,22 +883,22 @@ elf32_m68hc11_check_relocs (bfd *abfd, s
 	   Reconstruct it for later use during GC.  */
 	case R_M68HC11_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_M68HC11_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean ATTRIBUTE_PRINTF (6, 7)
+static bool ATTRIBUTE_PRINTF (6, 7)
 reloc_warning (struct bfd_link_info *info, const char *name, bfd *input_bfd,
 	       asection *input_section, const Elf_Internal_Rela *rel,
 	       const char *fmt, ...)
@@ -914,16 +913,16 @@ reloc_warning (struct bfd_link_info *inf
   if (ret < 0)
     {
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
   info->callbacks->warning (info, buf, name, input_bfd, input_section,
 			    rel->r_offset);
   free (buf);
-  return TRUE;
+  return true;
 }
 
 /* Relocate a 68hc11/68hc12 ELF section.  */
-bfd_boolean
+int
 elf32_m68hc11_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 				struct bfd_link_info *info,
 				bfd *input_bfd, asection *input_section,
@@ -946,7 +945,7 @@ elf32_m68hc11_relocate_section (bfd *out
 
   htab = m68hc11_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Get memory bank parameters.  */
   m68hc11_elf_get_bank_parameters (info);
@@ -969,9 +968,9 @@ elf32_m68hc11_relocate_section (bfd *out
       bfd_vma phys_addr;
       bfd_vma insn_addr;
       bfd_vma insn_page;
-      bfd_boolean is_far = FALSE;
-      bfd_boolean is_xgate_symbol = FALSE;
-      bfd_boolean is_section_symbol = FALSE;
+      bool is_far = false;
+      bool is_xgate_symbol = false;
+      bool is_section_symbol = false;
       struct elf_link_hash_entry *h;
       bfd_vma val;
       const char *msg;
@@ -1003,7 +1002,7 @@ elf32_m68hc11_relocate_section (bfd *out
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1016,7 +1015,8 @@ elf32_m68hc11_relocate_section (bfd *out
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_M68HC11_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -1044,13 +1044,13 @@ elf32_m68hc11_relocate_section (bfd *out
 	  struct elf32_m68hc11_stub_hash_entry* stub;
 
 	  stub = m68hc12_stub_hash_lookup (htab->stub_hash_table,
-					   name, FALSE, FALSE);
+					   name, false, false);
 	  if (stub)
 	    {
 	      relocation = stub->stub_offset
 		+ stub->stub_sec->output_section->vma
 		+ stub->stub_sec->output_offset;
-	      is_far = FALSE;
+	      is_far = false;
 	    }
 	}
 
@@ -1136,7 +1136,7 @@ elf32_m68hc11_relocate_section (bfd *out
 				  _("reference to the far symbol `%s' using a "
 				    "wrong relocation may result in incorrect "
 				    "execution"), name))
-		return FALSE;
+		return false;
 	    }
 
 	  /* Get virtual address of instruction having the relocation.  */
@@ -1169,7 +1169,7 @@ elf32_m68hc11_relocate_section (bfd *out
 					"you must manually offset the address, "
 					"and possibly manage the page, in your "
 					"code."), (long) phys_addr))
-		    return FALSE;
+		    return false;
 		  break;
 		}
 	    }
@@ -1188,7 +1188,7 @@ elf32_m68hc11_relocate_section (bfd *out
 				  (long) insn_page,
 				  (long) m68hc11_phys_addr (pinfo, insn_addr),
 				  (long) insn_addr))
-		return FALSE;
+		return false;
 	      break;
 	    }
 
@@ -1199,7 +1199,7 @@ elf32_m68hc11_relocate_section (bfd *out
 				    "in the normal address space at %04lx"),
 				  (long) phys_page, (long) phys_addr,
 				  (long) insn_addr))
-		return FALSE;
+		return false;
 	      relocation = phys_addr;
 	      break;
 	    }
@@ -1235,7 +1235,7 @@ elf32_m68hc11_relocate_section (bfd *out
 					"shared RAM(0x2000-0x4000), therefore "
 					"you must manually offset the address "
 					"in your code"), (long) phys_addr))
-		    return FALSE;
+		    return false;
 		  break;
 		}
 	    }
@@ -1265,7 +1265,7 @@ elf32_m68hc11_relocate_section (bfd *out
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -1292,42 +1292,42 @@ elf32_m68hc11_relocate_section (bfd *out
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
 
 /* Set and control ELF flags in ELF header.  */
 
-bfd_boolean
+bool
 _bfd_m68hc11_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-bfd_boolean
+bool
 _bfd_m68hc11_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword old_flags;
   flagword new_flags;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
 
   /* Check if we have the same endianness */
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
   elf_elfheader (obfd)->e_flags |= new_flags & EF_M68HC11_ABI;
@@ -1335,7 +1335,7 @@ _bfd_m68hc11_elf_merge_private_bfd_data
 
   if (! elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
       elf_elfheader (obfd)->e_ident[EI_CLASS]
 	= elf_elfheader (ibfd)->e_ident[EI_CLASS];
@@ -1345,10 +1345,10 @@ _bfd_m68hc11_elf_merge_private_bfd_data
 	{
 	  if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
 				   bfd_get_mach (ibfd)))
-	    return FALSE;
+	    return false;
 	}
 
-      return TRUE;
+      return true;
     }
 
   /* Check ABI compatibility.  */
@@ -1357,14 +1357,14 @@ _bfd_m68hc11_elf_merge_private_bfd_data
       _bfd_error_handler
 	(_("%pB: linking files compiled for 16-bit integers (-mshort) "
 	   "and others for 32-bit integers"), ibfd);
-      ok = FALSE;
+      ok = false;
     }
   if ((new_flags & E_M68HC11_F64) != (old_flags & E_M68HC11_F64))
     {
       _bfd_error_handler
 	(_("%pB: linking files compiled for 32-bit double (-fshort-double) "
 	   "and others for 64-bit double"), ibfd);
-      ok = FALSE;
+      ok = false;
     }
 
   /* Processor compatibility.  */
@@ -1373,7 +1373,7 @@ _bfd_m68hc11_elf_merge_private_bfd_data
       _bfd_error_handler
 	(_("%pB: linking files compiled for HCS12 with "
 	   "others compiled for HC12"), ibfd);
-      ok = FALSE;
+      ok = false;
     }
   new_flags = ((new_flags & ~EF_M68HC11_MACH_MASK)
 	       | (EF_M68HC11_MERGE_MACH (new_flags, old_flags)));
@@ -1390,19 +1390,19 @@ _bfd_m68hc11_elf_merge_private_bfd_data
 	/* xgettext:c-format */
 	(_("%pB: uses different e_flags (%#x) fields than previous modules (%#x)"),
 	 ibfd, new_flags, old_flags);
-      ok = FALSE;
+      ok = false;
     }
 
   if (! ok)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_m68hc11_elf_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -1442,7 +1442,7 @@ _bfd_m68hc11_elf_print_private_bfd_data
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 static void scan_sections_for_abi (bfd *abfd ATTRIBUTE_UNUSED,
@@ -1451,30 +1451,30 @@ static void scan_sections_for_abi (bfd *
   struct m68hc11_scan_param* p = (struct m68hc11_scan_param*) arg;
 
   if (asect->vma >= p->pinfo->bank_virtual)
-    p->use_memory_banks = TRUE;
+    p->use_memory_banks = true;
 }
 
 /* Tweak the OSABI field of the elf header.  */
 
-bfd_boolean
+bool
 elf32_m68hc11_init_file_header (bfd *abfd, struct bfd_link_info *link_info)
 {
   struct m68hc11_scan_param param;
   struct m68hc11_elf_link_hash_table *htab;
 
   if (!_bfd_elf_init_file_header (abfd, link_info))
-    return FALSE;
+    return false;
 
   if (link_info == NULL)
-    return TRUE;
+    return true;
 
   htab = m68hc11_elf_hash_table (link_info);
   if (htab == NULL)
-    return TRUE;
+    return true;
 
   m68hc11_elf_get_bank_parameters (link_info);
 
-  param.use_memory_banks = FALSE;
+  param.use_memory_banks = false;
   param.pinfo = & htab->pinfo;
 
   bfd_map_over_sections (abfd, scan_sections_for_abi, &param);
@@ -1486,5 +1486,5 @@ elf32_m68hc11_init_file_header (bfd *abf
       i_ehdrp = elf_elfheader (abfd);
       i_ehdrp->e_flags |= E_M68HC12_BANKS;
     }
-  return TRUE;
+  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.20200303/bfd/elf32-m68hc1x.h ./bfd/elf32-m68hc1x.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m68hc1x.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-m68hc1x.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Stephane Carrez (stcarrez@nerim.fr)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,10 +33,10 @@
 #define BFD_M68HC11_BANK_VIRTUAL_NAME "__bank_virtual"
 
 /* Set and control ELF flags in ELF header.  */
-extern bfd_boolean _bfd_m68hc11_elf_merge_private_bfd_data
+extern bool _bfd_m68hc11_elf_merge_private_bfd_data
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_m68hc11_elf_set_private_flags (bfd*,flagword);
-extern bfd_boolean _bfd_m68hc11_elf_print_private_bfd_data (bfd*, void*);
+extern bool _bfd_m68hc11_elf_set_private_flags (bfd*,flagword);
+extern bool _bfd_m68hc11_elf_print_private_bfd_data (bfd*, void*);
 
 /* This hash entry is used to record a trampoline that must be generated
    to call a far function using a normal calling convention ('jsr').
@@ -120,18 +120,16 @@ 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*);
+  bool (* size_one_stub)  (struct bfd_hash_entry*, void*);
+  bool (* build_one_stub) (struct bfd_hash_entry*, void*);
 };
 
 /* 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.  */
 
@@ -160,34 +158,33 @@ bfd_reloc_status_type m68hc11_elf_specia
     asymbol *symbol, void *data, asection *input_section,
     bfd *output_bfd, char **error_message);
 
-bfd_boolean elf32_m68hc11_check_relocs
+bool elf32_m68hc11_check_relocs
   (bfd * abfd, struct bfd_link_info * info,
    asection * sec, const Elf_Internal_Rela * relocs);
-bfd_boolean elf32_m68hc11_relocate_section
+int elf32_m68hc11_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);
 
-bfd_boolean elf32_m68hc11_add_symbol_hook
+bool elf32_m68hc11_add_symbol_hook
   (bfd *abfd, struct bfd_link_info *info,
    Elf_Internal_Sym *sym, const char **namep,
    flagword *flagsp, asection **secp,
    bfd_vma *valp);
 
 void elf32_m68hc11_merge_symbol_attribute
-  (struct elf_link_hash_entry *, const Elf_Internal_Sym *,
-   bfd_boolean, bfd_boolean);
+  (struct elf_link_hash_entry *, unsigned int, bool, bool);
 
 /* Tweak the OSABI field of the elf header.  */
 
-extern bfd_boolean elf32_m68hc11_init_file_header (bfd*, struct bfd_link_info*);
+extern bool elf32_m68hc11_init_file_header (bfd*, struct bfd_link_info*);
 
 int elf32_m68hc11_setup_section_lists (bfd *, struct bfd_link_info *);
 
-bfd_boolean elf32_m68hc11_size_stubs
+bool elf32_m68hc11_size_stubs
   (bfd *, bfd *, struct bfd_link_info *,
    asection * (*) (const char *, asection *));
 
-bfd_boolean elf32_m68hc11_build_stubs (bfd* abfd, struct bfd_link_info *);
+bool elf32_m68hc11_build_stubs (bfd* abfd, struct bfd_link_info *);
 #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.20200303/bfd/elf32-m68k.c ./bfd/elf32-m68k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m68k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-m68k.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,322 +28,322 @@
 #include "cpu-m68k.h"
 #include "elf32-m68k.h"
 
-static bfd_boolean
+static bool
 elf_m68k_discard_copies (struct elf_link_hash_entry *, void *);
 
 static reloc_howto_type howto_table[] =
 {
-  HOWTO(R_68K_NONE,	  0, 3, 0, FALSE,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_NONE",	  FALSE, 0, 0x00000000,FALSE),
-  HOWTO(R_68K_32,	  0, 2,32, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_32",	  FALSE, 0, 0xffffffff,FALSE),
-  HOWTO(R_68K_16,	  0, 1,16, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_16",	  FALSE, 0, 0x0000ffff,FALSE),
-  HOWTO(R_68K_8,	  0, 0, 8, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_8",	  FALSE, 0, 0x000000ff,FALSE),
-  HOWTO(R_68K_PC32,	  0, 2,32, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_PC32",	  FALSE, 0, 0xffffffff,TRUE),
-  HOWTO(R_68K_PC16,	  0, 1,16, TRUE, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PC16",	  FALSE, 0, 0x0000ffff,TRUE),
-  HOWTO(R_68K_PC8,	  0, 0, 8, TRUE, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PC8",	  FALSE, 0, 0x000000ff,TRUE),
-  HOWTO(R_68K_GOT32,	  0, 2,32, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_GOT32",	  FALSE, 0, 0xffffffff,TRUE),
-  HOWTO(R_68K_GOT16,	  0, 1,16, TRUE, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_GOT16",	  FALSE, 0, 0x0000ffff,TRUE),
-  HOWTO(R_68K_GOT8,	  0, 0, 8, TRUE, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_GOT8",	  FALSE, 0, 0x000000ff,TRUE),
-  HOWTO(R_68K_GOT32O,	  0, 2,32, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_GOT32O",	  FALSE, 0, 0xffffffff,FALSE),
-  HOWTO(R_68K_GOT16O,	  0, 1,16, FALSE,0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_GOT16O",	  FALSE, 0, 0x0000ffff,FALSE),
-  HOWTO(R_68K_GOT8O,	  0, 0, 8, FALSE,0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_GOT8O",	  FALSE, 0, 0x000000ff,FALSE),
-  HOWTO(R_68K_PLT32,	  0, 2,32, TRUE, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_PLT32",	  FALSE, 0, 0xffffffff,TRUE),
-  HOWTO(R_68K_PLT16,	  0, 1,16, TRUE, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PLT16",	  FALSE, 0, 0x0000ffff,TRUE),
-  HOWTO(R_68K_PLT8,	  0, 0, 8, TRUE, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PLT8",	  FALSE, 0, 0x000000ff,TRUE),
-  HOWTO(R_68K_PLT32O,	  0, 2,32, FALSE,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_PLT32O",	  FALSE, 0, 0xffffffff,FALSE),
-  HOWTO(R_68K_PLT16O,	  0, 1,16, FALSE,0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PLT16O",	  FALSE, 0, 0x0000ffff,FALSE),
-  HOWTO(R_68K_PLT8O,	  0, 0, 8, FALSE,0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PLT8O",	  FALSE, 0, 0x000000ff,FALSE),
-  HOWTO(R_68K_COPY,	  0, 0, 0, FALSE,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_COPY",	  FALSE, 0, 0xffffffff,FALSE),
-  HOWTO(R_68K_GLOB_DAT,	  0, 2,32, FALSE,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_GLOB_DAT",  FALSE, 0, 0xffffffff,FALSE),
-  HOWTO(R_68K_JMP_SLOT,	  0, 2,32, FALSE,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_JMP_SLOT",  FALSE, 0, 0xffffffff,FALSE),
-  HOWTO(R_68K_RELATIVE,	  0, 2,32, FALSE,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_RELATIVE",  FALSE, 0, 0xffffffff,FALSE),
+  HOWTO(R_68K_NONE,	  0, 0, 0, false,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_NONE",	  false, 0, 0x00000000,false),
+  HOWTO(R_68K_32,	  0, 4,32, false,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_32",	  false, 0, 0xffffffff,false),
+  HOWTO(R_68K_16,	  0, 2,16, false,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_16",	  false, 0, 0x0000ffff,false),
+  HOWTO(R_68K_8,	  0, 1, 8, false,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_8",	  false, 0, 0x000000ff,false),
+  HOWTO(R_68K_PC32,	  0, 4,32, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_PC32",	  false, 0, 0xffffffff,true),
+  HOWTO(R_68K_PC16,	  0, 2,16, true, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PC16",	  false, 0, 0x0000ffff,true),
+  HOWTO(R_68K_PC8,	  0, 1, 8, true, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PC8",	  false, 0, 0x000000ff,true),
+  HOWTO(R_68K_GOT32,	  0, 4,32, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_GOT32",	  false, 0, 0xffffffff,true),
+  HOWTO(R_68K_GOT16,	  0, 2,16, true, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_GOT16",	  false, 0, 0x0000ffff,true),
+  HOWTO(R_68K_GOT8,	  0, 1, 8, true, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_GOT8",	  false, 0, 0x000000ff,true),
+  HOWTO(R_68K_GOT32O,	  0, 4,32, false,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_GOT32O",	  false, 0, 0xffffffff,false),
+  HOWTO(R_68K_GOT16O,	  0, 2,16, false,0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_GOT16O",	  false, 0, 0x0000ffff,false),
+  HOWTO(R_68K_GOT8O,	  0, 1, 8, false,0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_GOT8O",	  false, 0, 0x000000ff,false),
+  HOWTO(R_68K_PLT32,	  0, 4,32, true, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_PLT32",	  false, 0, 0xffffffff,true),
+  HOWTO(R_68K_PLT16,	  0, 2,16, true, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PLT16",	  false, 0, 0x0000ffff,true),
+  HOWTO(R_68K_PLT8,	  0, 1, 8, true, 0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PLT8",	  false, 0, 0x000000ff,true),
+  HOWTO(R_68K_PLT32O,	  0, 4,32, false,0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_68K_PLT32O",	  false, 0, 0xffffffff,false),
+  HOWTO(R_68K_PLT16O,	  0, 2,16, false,0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PLT16O",	  false, 0, 0x0000ffff,false),
+  HOWTO(R_68K_PLT8O,	  0, 1, 8, false,0, complain_overflow_signed,	bfd_elf_generic_reloc, "R_68K_PLT8O",	  false, 0, 0x000000ff,false),
+  HOWTO(R_68K_COPY,	  0, 0, 0, false,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_COPY",	  false, 0, 0xffffffff,false),
+  HOWTO(R_68K_GLOB_DAT,	  0, 4,32, false,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_GLOB_DAT",  false, 0, 0xffffffff,false),
+  HOWTO(R_68K_JMP_SLOT,	  0, 4,32, false,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_JMP_SLOT",  false, 0, 0xffffffff,false),
+  HOWTO(R_68K_RELATIVE,	  0, 4,32, false,0, complain_overflow_dont,	bfd_elf_generic_reloc, "R_68K_RELATIVE",  false, 0, 0xffffffff,false),
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_68K_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_68K_GNU_VTINHERIT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),
+	 false),
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_68K_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_68K_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),
+	 false),
 
   /* TLS general dynamic variable reference.  */
   HOWTO (R_68K_TLS_GD32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_GD32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_GD16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_GD16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_GD8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_GD8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_68K_TLS_LDM32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LDM32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_LDM16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LDM16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_LDM8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LDM8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_LDO32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LDO32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_LDO16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LDO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_LDO8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LDO8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS initial execution variable reference.  */
   HOWTO (R_68K_TLS_IE32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_IE32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_IE16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_IE16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_IE8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_IE8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local execution variable reference.  */
   HOWTO (R_68K_TLS_LE32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LE32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_LE16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LE16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_LE8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_LE8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS GD/LD dynamic relocations.  */
   HOWTO (R_68K_TLS_DTPMOD32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_DTPMOD32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_DTPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_DTPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_68K_TLS_TPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_68K_TLS_TPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
-static bfd_boolean
+static bool
 rtype_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
   unsigned int indx = ELF32_R_TYPE (dst->r_info);
@@ -354,10 +354,10 @@ rtype_to_howto (bfd *abfd, arelent *cach
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, indx);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &howto_table[indx];
-  return TRUE;
+  return true;
 }
 
 #define elf_info_to_howto rtype_to_howto
@@ -756,7 +756,7 @@ elf_m68k_reloc_got_type (enum elf_m68k_r
       return R_68K_TLS_IE32;
 
     default:
-      BFD_ASSERT (FALSE);
+      BFD_ASSERT (false);
       return 0;
     }
 }
@@ -782,7 +782,7 @@ elf_m68k_reloc_got_offset_size (enum elf
       return R_8;
 
     default:
-      BFD_ASSERT (FALSE);
+      BFD_ASSERT (false);
       return 0;
     }
 }
@@ -804,14 +804,14 @@ elf_m68k_reloc_got_n_slots (enum elf_m68
       return 2;
 
     default:
-      BFD_ASSERT (FALSE);
+      BFD_ASSERT (false);
       return 0;
     }
 }
 
 /* Return TRUE if relocation R_TYPE is a TLS one.  */
 
-static bfd_boolean
+static bool
 elf_m68k_reloc_tls_p (enum elf_m68k_reloc_type r_type)
 {
   switch (r_type)
@@ -822,10 +822,10 @@ elf_m68k_reloc_tls_p (enum elf_m68k_relo
     case R_68K_TLS_IE32: case R_68K_TLS_IE16: case R_68K_TLS_IE8:
     case R_68K_TLS_LE32: case R_68K_TLS_LE16: case R_68K_TLS_LE8:
     case R_68K_TLS_DTPMOD32: case R_68K_TLS_DTPREL32: case R_68K_TLS_TPREL32:
-      return TRUE;
+      return true;
 
     default:
-      return FALSE;
+      return false;
     }
 }
 
@@ -889,22 +889,19 @@ 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;
 
   /* True, if GP is loaded within each function which uses it.
      Set to TRUE when GOT negative offsets or multi-GOT is enabled.  */
-  bfd_boolean local_gp_p;
+  bool local_gp_p;
 
   /* Switch controlling use of negative offsets to double the size of GOTs.  */
-  bfd_boolean use_neg_got_offsets_p;
+  bool use_neg_got_offsets_p;
 
   /* Switch controlling generation of multiple GOTs.  */
-  bfd_boolean allow_multigot_p;
+  bool allow_multigot_p;
 
   /* Multi-GOT data structure.  */
   struct elf_m68k_multi_got multi_got_;
@@ -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)
@@ -979,8 +977,7 @@ elf_m68k_link_hash_table_create (bfd *ab
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      elf_m68k_link_hash_newfunc,
-				      sizeof (struct elf_m68k_link_hash_entry),
-				      M68K_ELF_DATA))
+				      sizeof (struct elf_m68k_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -994,7 +991,7 @@ elf_m68k_link_hash_table_create (bfd *ab
 
 /* Set the right machine number.  */
 
-static bfd_boolean
+static bool
 elf32_m68k_object_p (bfd *abfd)
 {
   unsigned int mach = 0;
@@ -1049,13 +1046,13 @@ elf32_m68k_object_p (bfd *abfd)
   mach = bfd_m68k_features_to_mach (features);
   bfd_default_set_arch_mach (abfd, bfd_arch_m68k, mach);
 
-  return TRUE;
+  return true;
 }
 
 /* Somewhat reverse of elf32_m68k_object_p, this sets the e_flag
    field based on the machine number.  */
 
-static bfd_boolean
+static bool
 elf_m68k_final_write_processing (bfd *abfd)
 {
   int mach = bfd_get_mach (abfd);
@@ -1114,17 +1111,76 @@ elf_m68k_final_write_processing (bfd *ab
 
 /* Keep m68k-specific flags in the ELF header.  */
 
-static bfd_boolean
+static bool
 elf32_m68k_set_private_flags (bfd *abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
+}
+
+/* Merge object attributes from IBFD into OBFD.  Warn if
+   there are conflicting attributes. */
+static bool
+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;
+  bool 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
+static bool
 elf32_m68k_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -1138,21 +1194,24 @@ elf32_m68k_merge_private_bfd_data (bfd *
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
     /* PR 24523: For non-ELF files do not try to merge any private
        data, but also do not prevent the link from succeeding.  */
-    return TRUE;
+    return true;
 
   /* Get the merged machine.  This checks for incompatibility between
      Coldfire & non-Coldfire flags, incompability between different
      Coldfire ISAs, and incompability between different MAC types.  */
-  arch_info = bfd_arch_get_compatible (ibfd, obfd, FALSE);
+  arch_info = bfd_arch_get_compatible (ibfd, obfd, false);
   if (!arch_info)
-    return FALSE;
+    return false;
 
   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))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       out_flags = in_flags;
     }
   else
@@ -1183,12 +1242,12 @@ elf32_m68k_merge_private_bfd_data (bfd *
     }
   elf_elfheader (obfd)->e_flags = out_flags;
 
-  return TRUE;
+  return true;
 }
 
 /* Display the flags field.  */
 
-static bfd_boolean
+static bool
 elf32_m68k_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -1275,7 +1334,7 @@ elf32_m68k_print_private_bfd_data (bfd *
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 /* Multi-GOT support implementation design:
@@ -1821,7 +1880,7 @@ struct elf_m68k_can_merge_gots_arg
   struct bfd_link_info *info;
 
   /* Error flag.  */
-  bfd_boolean error_p;
+  bool error_p;
 };
 
 /* Process a single entry from the small GOT to see if it should be added
@@ -1874,7 +1933,7 @@ elf_m68k_can_merge_gots_1 (void **_entry
 				      arg->info);
       if (entry == NULL)
 	{
-	  arg->error_p = TRUE;
+	  arg->error_p = true;
 	  return 0;
 	}
 
@@ -1889,7 +1948,7 @@ elf_m68k_can_merge_gots_1 (void **_entry
    in BIG GOT to accumulate information from SMALL.
    INFO is the context where memory should be allocated.  */
 
-static bfd_boolean
+static bool
 elf_m68k_can_merge_gots (struct elf_m68k_got *big,
 			 const struct elf_m68k_got *small,
 			 struct bfd_link_info *info,
@@ -1902,12 +1961,12 @@ elf_m68k_can_merge_gots (struct elf_m68k
   arg_.big = big;
   arg_.diff = diff;
   arg_.info = info;
-  arg_.error_p = FALSE;
+  arg_.error_p = false;
   htab_traverse_noresize (small->entries, elf_m68k_can_merge_gots_1, &arg_);
   if (arg_.error_p)
     {
       diff->offset = 0;
-      return FALSE;
+      return false;
     }
 
   /* Check for overflow.  */
@@ -1915,9 +1974,9 @@ elf_m68k_can_merge_gots (struct elf_m68k
        > ELF_M68K_R_8_MAX_N_SLOTS_IN_GOT (info))
       || (big->n_slots[R_16] + arg_.diff->n_slots[R_16]
 	  > ELF_M68K_R_8_16_MAX_N_SLOTS_IN_GOT (info)))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 struct elf_m68k_merge_gots_arg
@@ -1929,7 +1988,7 @@ struct elf_m68k_merge_gots_arg
   struct bfd_link_info *info;
 
   /* Error flag.  */
-  bfd_boolean error_p;
+  bool error_p;
 };
 
 /* Process a single entry from DIFF got.  Add or update corresponding
@@ -1949,7 +2008,7 @@ elf_m68k_merge_gots_1 (void **entry_ptr,
 			       arg->info);
   if (to == NULL)
     {
-      arg->error_p = TRUE;
+      arg->error_p = true;
       return 0;
     }
 
@@ -1963,7 +2022,7 @@ elf_m68k_merge_gots_1 (void **entry_ptr,
 /* Merge data from DIFF to BIG.  INFO is context where memory should be
    allocated.  */
 
-static bfd_boolean
+static bool
 elf_m68k_merge_gots (struct elf_m68k_got *big,
 		     struct elf_m68k_got *diff,
 		     struct bfd_link_info *info)
@@ -1976,10 +2035,10 @@ elf_m68k_merge_gots (struct elf_m68k_got
       /* Merge entries.  */
       arg_.big = big;
       arg_.info = info;
-      arg_.error_p = FALSE;
+      arg_.error_p = false;
       htab_traverse_noresize (diff->entries, elf_m68k_merge_gots_1, &arg_);
       if (arg_.error_p)
-	return FALSE;
+	return false;
 
       /* Merge counters.  */
       big->n_slots[R_8] += diff->n_slots[R_8];
@@ -2002,7 +2061,7 @@ elf_m68k_merge_gots (struct elf_m68k_got
 		  && (big->n_slots[R_16]
 		      <= ELF_M68K_R_8_16_MAX_N_SLOTS_IN_GOT (info))));
 
-  return TRUE;
+  return true;
 }
 
 struct elf_m68k_finalize_got_offsets_arg
@@ -2105,7 +2164,7 @@ elf_m68k_finalize_got_offsets_1 (void **
 
 static void
 elf_m68k_finalize_got_offsets (struct elf_m68k_got *got,
-			       bfd_boolean use_neg_got_offsets_p,
+			       bool use_neg_got_offsets_p,
 			       struct elf_m68k_link_hash_entry **symndx2h,
 			       bfd_vma *final_offset, bfd_vma *n_ldm_entries)
 {
@@ -2218,7 +2277,7 @@ struct elf_m68k_partition_multi_got_arg
   bfd_vma slots_relas_diff;
 
   /* Error flag.  */
-  bfd_boolean error_p;
+  bool error_p;
 
   /* Mapping from global symndx to global symbols.
      This is used to build lists of got entries for global symbols.  */
@@ -2285,7 +2344,7 @@ elf_m68k_partition_multi_got_1 (void **_
 	  if (diff->offset == 0)
 	    /* Offset set to 0 in the diff_ indicates an error.  */
 	    {
-	      arg->error_p = TRUE;
+	      arg->error_p = true;
 	      goto final_return;
 	    }
 
@@ -2309,7 +2368,7 @@ elf_m68k_partition_multi_got_1 (void **_
       arg->current_got = elf_m68k_create_empty_got (arg->info);
       if (arg->current_got == NULL)
 	{
-	  arg->error_p = TRUE;
+	  arg->error_p = true;
 	  goto final_return;
 	}
 
@@ -2322,7 +2381,7 @@ elf_m68k_partition_multi_got_1 (void **_
     {
       if (!elf_m68k_merge_gots (arg->current_got, diff, arg->info))
 	{
-	  arg->error_p = TRUE;
+	  arg->error_p = true;
 	  goto final_return;
 	}
 
@@ -2356,7 +2415,7 @@ elf_m68k_partition_multi_got_1 (void **_
 
 /* Helper function to build symndx2h mapping.  */
 
-static bfd_boolean
+static bool
 elf_m68k_init_symndx2h_1 (struct elf_link_hash_entry *_h,
 			  void *_arg)
 {
@@ -2375,14 +2434,14 @@ elf_m68k_init_symndx2h_1 (struct elf_lin
       arg->symndx2h[h->got_entry_key] = h;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge GOTs of some BFDs, assign offsets to GOT entries and build
    lists of GOT entries for global symbols.
    Calculate sizes of .got and .rela.got sections.  */
 
-static bfd_boolean
+static bool
 elf_m68k_partition_multi_got (struct bfd_link_info *info)
 {
   struct elf_m68k_multi_got *multi_got;
@@ -2395,7 +2454,7 @@ elf_m68k_partition_multi_got (struct bfd
   arg_.info = info;
   arg_.n_slots = 0;
   arg_.slots_relas_diff = 0;
-  arg_.error_p = FALSE;
+  arg_.error_p = false;
 
   if (multi_got->bfd2got != NULL)
     {
@@ -2404,7 +2463,7 @@ elf_m68k_partition_multi_got (struct bfd
 	arg_.symndx2h = bfd_zmalloc (multi_got->global_symndx
 				     * sizeof (*arg_.symndx2h));
 	if (arg_.symndx2h == NULL)
-	  return FALSE;
+	  return false;
 
 	elf_link_hash_traverse (elf_hash_table (info),
 				elf_m68k_init_symndx2h_1, &arg_);
@@ -2418,7 +2477,7 @@ elf_m68k_partition_multi_got (struct bfd
 	  free (arg_.symndx2h);
 	  arg_.symndx2h = NULL;
 
-	  return FALSE;
+	  return false;
 	}
 
       /* Finish up last current_got.  */
@@ -2450,7 +2509,7 @@ elf_m68k_partition_multi_got (struct bfd
   else
     BFD_ASSERT (multi_got->bfd2got == NULL);
 
-  return TRUE;
+  return true;
 }
 
 /* Copy any information related to dynamic linking from a pre-existing
@@ -2498,7 +2557,7 @@ elf_m68k_copy_indirect_symbol (struct bf
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 elf_m68k_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
@@ -2513,7 +2572,7 @@ elf_m68k_check_relocs (bfd *abfd,
   struct elf_m68k_got *got;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -2583,7 +2642,7 @@ elf_m68k_check_relocs (bfd *abfd,
 	      /* Create the .got section.  */
 	      elf_hash_table (info)->dynobj = dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (dynobj, info))
-		return FALSE;
+		return false;
 	    }
 
 	  if (got == NULL)
@@ -2594,7 +2653,7 @@ elf_m68k_check_relocs (bfd *abfd,
 		= elf_m68k_get_bfd2got_entry (elf_m68k_multi_got (info),
 					      abfd, FIND_OR_CREATE, info);
 	      if (bfd2got_entry == NULL)
-		return FALSE;
+		return false;
 
 	      got = bfd2got_entry->got;
 	      BFD_ASSERT (got != NULL);
@@ -2608,7 +2667,7 @@ elf_m68k_check_relocs (bfd *abfd,
 						   ELF32_R_TYPE (rel->r_info),
 						   r_symndx, info);
 	    if (got_entry == NULL)
-	      return FALSE;
+	      return false;
 
 	    if (got_entry->u.s1.refcount == 1)
 	      {
@@ -2618,7 +2677,7 @@ elf_m68k_check_relocs (bfd *abfd,
 		    && !h->forced_local)
 		  {
 		    if (!bfd_elf_link_record_dynamic_symbol (info, h))
-		      return FALSE;
+		      return false;
 		  }
 	      }
 	  }
@@ -2655,7 +2714,7 @@ elf_m68k_check_relocs (bfd *abfd,
 		 local symbol.  FIXME: does it?  How to handle it if
 		 it does make sense?  */
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  /* Make sure this symbol is output as a dynamic symbol.  */
@@ -2663,7 +2722,7 @@ elf_m68k_check_relocs (bfd *abfd,
 	      && !h->forced_local)
 	    {
 	      if (!bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  h->needs_plt = 1;
@@ -2731,10 +2790,10 @@ elf_m68k_check_relocs (bfd *abfd,
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, dynobj, 2, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      if (sec->flags & SEC_READONLY
@@ -2774,10 +2833,10 @@ 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;
+			return false;
 
 		      s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		      if (s == NULL)
@@ -2796,7 +2855,7 @@ elf_m68k_check_relocs (bfd *abfd,
 		      p = ((struct elf_m68k_pcrel_relocs_copied *)
 			   bfd_alloc (dynobj, (bfd_size_type) sizeof *p));
 		      if (p == NULL)
-			return FALSE;
+			return false;
 		      p->next = *head;
 		      *head = p;
 		      p->section = sreloc;
@@ -2813,14 +2872,14 @@ elf_m68k_check_relocs (bfd *abfd,
 	     Reconstruct it for later use during GC.  */
 	case R_68K_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_68K_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -2828,7 +2887,7 @@ elf_m68k_check_relocs (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -2873,16 +2932,16 @@ elf_m68k_get_plt_info (bfd *output_bfd)
    and the input sections have been assigned to output sections.
    It's a convenient place to determine the PLT style.  */
 
-static bfd_boolean
-elf_m68k_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+elf_m68k_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   /* Bind input BFDs to GOTs and calculate sizes of .got and .rela.got
      sections.  */
   if (!elf_m68k_partition_multi_got (info))
-    return FALSE;
+    return false;
 
   elf_m68k_hash_table (info)->plt_info = elf_m68k_get_plt_info (output_bfd);
-  return TRUE;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -2891,7 +2950,7 @@ elf_m68k_always_size_sections (bfd *outp
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf_m68k_adjust_dynamic_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h)
 {
@@ -2933,7 +2992,7 @@ elf_m68k_adjust_dynamic_symbol (struct b
 	     linkage table, and we can just do a PCxx reloc instead.  */
 	  h->plt.offset = (bfd_vma) -1;
 	  h->needs_plt = 0;
-	  return TRUE;
+	  return true;
 	}
 
       /* Make sure this symbol is output as a dynamic symbol.  */
@@ -2941,7 +3000,7 @@ elf_m68k_adjust_dynamic_symbol (struct b
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->root.splt;
@@ -2980,7 +3039,7 @@ elf_m68k_adjust_dynamic_symbol (struct b
       BFD_ASSERT (s != NULL);
       s->size += sizeof (Elf32_External_Rela);
 
-      return TRUE;
+      return true;
     }
 
   /* Reinitialize the plt offset now that it is not used as a reference
@@ -2996,7 +3055,7 @@ elf_m68k_adjust_dynamic_symbol (struct b
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -3007,12 +3066,12 @@ elf_m68k_adjust_dynamic_symbol (struct b
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    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
@@ -3046,17 +3105,17 @@ elf_m68k_adjust_dynamic_symbol (struct b
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf_m68k_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				struct bfd_link_info *info)
+static bool
+elf_m68k_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			     struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean plt;
-  bfd_boolean relocs;
+  bool relocs;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -3067,6 +3126,7 @@ elf_m68k_size_dynamic_sections (bfd *out
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
   else
@@ -3095,8 +3155,7 @@ 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;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -3111,20 +3170,20 @@ 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"))
+      else if (startswith (name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
-	      relocs = TRUE;
+	      relocs = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
 	      s->reloc_count = 0;
 	    }
 	}
-      else if (! CONST_STRNEQ (name, ".got")
+      else if (! startswith (name, ".got")
 	       && strcmp (name, ".dynbss") != 0)
 	{
 	  /* It's not one of our sections, so don't allocate space.  */
@@ -3157,51 +3216,11 @@ elf_m68k_size_dynamic_sections (bfd *out
 	 contents to zero.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	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;
-	}
+	return false;
+      s->alloced = 1;
     }
-#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
@@ -3217,7 +3236,7 @@ elf_m68k_size_dynamic_sections (bfd *out
    against a readonly section, and set the DF_TEXTREL flag in this
    case.  */
 
-static bfd_boolean
+static bool
 elf_m68k_discard_copies (struct elf_link_hash_entry *h,
 			 void * inf)
 {
@@ -3248,10 +3267,10 @@ elf_m68k_discard_copies (struct elf_link
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
-      return TRUE;
+      return true;
     }
 
   for (s = elf_m68k_hash_entry (h)->pcrel_relocs_copied;
@@ -3259,7 +3278,7 @@ elf_m68k_discard_copies (struct elf_link
        s = s->next)
     s->section->size -= s->count * sizeof (Elf32_External_Rela);
 
-  return TRUE;
+  return true;
 }
 
 
@@ -3336,7 +3355,7 @@ elf_m68k_init_got_entry_static (struct b
       break;
 
     default:
-      BFD_ASSERT (FALSE);
+      BFD_ASSERT (false);
     }
 }
 
@@ -3387,7 +3406,7 @@ elf_m68k_init_got_entry_local_shared (st
       break;
 
     default:
-      BFD_ASSERT (FALSE);
+      BFD_ASSERT (false);
     }
 
   /* Offset of the GOT entry.  */
@@ -3403,7 +3422,7 @@ elf_m68k_init_got_entry_local_shared (st
 
 /* Relocate an M68K ELF section.  */
 
-static bfd_boolean
+static int
 elf_m68k_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -3444,15 +3463,15 @@ elf_m68k_relocate_section (bfd *output_b
       Elf_Internal_Sym *sym;
       asection *sec;
       bfd_vma relocation;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       bfd_reloc_status_type r;
-      bfd_boolean resolved_to_zero;
+      bool resolved_to_zero;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       if (r_type < 0 || r_type >= (int) R_68K_max)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       howto = howto_table + r_type;
 
@@ -3461,7 +3480,7 @@ elf_m68k_relocate_section (bfd *output_b
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -3471,7 +3490,7 @@ elf_m68k_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -3481,7 +3500,8 @@ elf_m68k_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_68K_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -3602,7 +3622,7 @@ elf_m68k_relocate_section (bfd *output_b
 		       itself.  */
 		    && elf_m68k_reloc_got_type (r_type) != R_68K_TLS_LDM32)
 		  {
-		    bfd_boolean dyn;
+		    bool dyn;
 
 		    dyn = elf_hash_table (info)->dynamic_sections_created;
 		    if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
@@ -3637,7 +3657,7 @@ elf_m68k_relocate_section (bfd *output_b
 			*off_ptr |= 1;
 		      }
 		    else
-		      unresolved_reloc = FALSE;
+		      unresolved_reloc = false;
 		  }
 		else if (bfd_link_pic (info)) /* && h == NULL */
 		  /* Process local symbol during dynamic link.  */
@@ -3718,7 +3738,7 @@ elf_m68k_relocate_section (bfd *output_b
 		 input_bfd, input_section, (uint64_t) rel->r_offset,
 		 howto->name);
 
-	      return FALSE;
+	      return false;
 	    }
 	  else
 	    relocation -= tpoff_base (info);
@@ -3751,7 +3771,7 @@ elf_m68k_relocate_section (bfd *output_b
 	  relocation = (splt->output_section->vma
 			+ splt->output_offset
 			+ h->plt.offset);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_68K_PLT8O:
@@ -3765,7 +3785,7 @@ elf_m68k_relocate_section (bfd *output_b
 	  BFD_ASSERT (splt != NULL);
 
 	  relocation = h->plt.offset;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 
 	  /* This relocation does not use the addend.  */
 	  rel->r_addend = 0;
@@ -3792,22 +3812,22 @@ elf_m68k_relocate_section (bfd *output_b
 	    {
 	      Elf_Internal_Rela outrel;
 	      bfd_byte *loc;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
 		 time.  */
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -3832,7 +3852,7 @@ elf_m68k_relocate_section (bfd *output_b
 
 		  if (r_type == R_68K_32)
 		    {
-		      relocate = TRUE;
+		      relocate = true;
 		      outrel.r_info = ELF32_R_INFO (0, R_68K_RELATIVE);
 		    }
 		  else
@@ -3844,7 +3864,7 @@ elf_m68k_relocate_section (bfd *output_b
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -3916,7 +3936,7 @@ elf_m68k_relocate_section (bfd *output_b
 	     (uint64_t) rel->r_offset,
 	     howto->name,
 	     h->root.root.string);
-	  return FALSE;
+	  return false;
 	}
 
       if (r_symndx != STN_UNDEF
@@ -3973,7 +3993,7 @@ elf_m68k_relocate_section (bfd *output_b
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      if (*name == '\0')
 		name = bfd_section_name (sec);
 	    }
@@ -3989,12 +4009,12 @@ elf_m68k_relocate_section (bfd *output_b
 		(_("%pB(%pA+%#" PRIx64 "): reloc against `%s': error %d"),
 		 input_bfd, input_section,
 		 (uint64_t) rel->r_offset, name, (int) r);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Install an M_68K_PC32 relocation against VALUE at offset OFFSET
@@ -4015,7 +4035,7 @@ elf_m68k_install_pc32 (asection *sec, bf
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf_m68k_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
@@ -4158,7 +4178,7 @@ elf_m68k_finish_dynamic_symbol (bfd *out
 		  break;
 
 		default:
-		  BFD_ASSERT (FALSE);
+		  BFD_ASSERT (false);
 		}
 
 	      elf_m68k_init_got_entry_local_shared (info,
@@ -4212,7 +4232,7 @@ elf_m68k_finish_dynamic_symbol (bfd *out
 		  break;
 
 		default:
-		  BFD_ASSERT (FALSE);
+		  BFD_ASSERT (false);
 		  break;
 		}
 	    }
@@ -4245,12 +4265,12 @@ elf_m68k_finish_dynamic_symbol (bfd *out
       bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_m68k_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd *dynobj;
@@ -4341,7 +4361,7 @@ elf_m68k_finish_dynamic_sections (bfd *o
 
   elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
 
-  return TRUE;
+  return true;
 }
 
 /* Given a .data section and a .emreloc in-memory section, store
@@ -4351,7 +4371,7 @@ elf_m68k_finish_dynamic_sections (bfd *o
    after the add_symbols entry point has been called for all the
    objects, and before the final_link entry point is called.  */
 
-bfd_boolean
+bool
 bfd_m68k_elf32_create_embedded_relocs (bfd *abfd, struct bfd_link_info *info,
 				       asection *datasec, asection *relsec,
 				       char **errmsg)
@@ -4368,7 +4388,7 @@ bfd_m68k_elf32_create_embedded_relocs (b
   *errmsg = NULL;
 
   if (datasec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -4383,6 +4403,7 @@ bfd_m68k_elf32_create_embedded_relocs (b
   relsec->contents = (bfd_byte *) bfd_alloc (abfd, amt);
   if (relsec->contents == NULL)
     goto error_return;
+  relsec->alloced = 1;
 
   p = relsec->contents;
 
@@ -4448,20 +4469,18 @@ 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;
+  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;
+  return false;
 }
 
 /* Set target options.  */
@@ -4470,35 +4489,35 @@ void
 bfd_elf_m68k_set_target_options (struct bfd_link_info *info, int got_handling)
 {
   struct elf_m68k_link_hash_table *htab;
-  bfd_boolean use_neg_got_offsets_p;
-  bfd_boolean allow_multigot_p;
-  bfd_boolean local_gp_p;
+  bool use_neg_got_offsets_p;
+  bool allow_multigot_p;
+  bool local_gp_p;
 
   switch (got_handling)
     {
     case 0:
       /* --got=single.  */
-      local_gp_p = FALSE;
-      use_neg_got_offsets_p = FALSE;
-      allow_multigot_p = FALSE;
+      local_gp_p = false;
+      use_neg_got_offsets_p = false;
+      allow_multigot_p = false;
       break;
 
     case 1:
       /* --got=negative.  */
-      local_gp_p = TRUE;
-      use_neg_got_offsets_p = TRUE;
-      allow_multigot_p = FALSE;
+      local_gp_p = true;
+      use_neg_got_offsets_p = true;
+      allow_multigot_p = false;
       break;
 
     case 2:
       /* --got=multigot.  */
-      local_gp_p = TRUE;
-      use_neg_got_offsets_p = TRUE;
-      allow_multigot_p = TRUE;
+      local_gp_p = true;
+      use_neg_got_offsets_p = true;
+      allow_multigot_p = true;
       break;
 
     default:
-      BFD_ASSERT (FALSE);
+      BFD_ASSERT (false);
       return;
     }
 
@@ -4541,7 +4560,7 @@ elf_m68k_plt_sym_val (bfd_vma i, const a
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf_m68k_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -4550,7 +4569,7 @@ elf_m68k_grok_prstatus (bfd *abfd, Elf_I
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 154:		/* Linux/m68k */
       /* pr_cursig */
@@ -4571,13 +4590,13 @@ elf_m68k_grok_prstatus (bfd *abfd, Elf_I
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf_m68k_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 124:		/* Linux/m68k elf_prpsinfo.  */
       elf_tdata (abfd)->core->pid
@@ -4599,7 +4618,7 @@ elf_m68k_grok_psinfo (bfd *abfd, Elf_Int
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 #define TARGET_BIG_SYM			m68k_elf32_vec
@@ -4613,12 +4632,11 @@ elf_m68k_grok_psinfo (bfd *abfd, Elf_Int
 #define bfd_elf32_bfd_final_link	bfd_elf_final_link
 
 #define elf_backend_check_relocs	elf_m68k_check_relocs
-#define elf_backend_always_size_sections \
-					elf_m68k_always_size_sections
+#define elf_backend_early_size_sections \
+					elf_m68k_early_size_sections
 #define elf_backend_adjust_dynamic_symbol \
 					elf_m68k_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections \
-					elf_m68k_size_dynamic_sections
+#define elf_backend_late_size_sections	elf_m68k_late_size_sections
 #define elf_backend_final_write_processing	elf_m68k_final_write_processing
 #define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section	elf_m68k_relocate_section
@@ -4649,6 +4667,6 @@ elf_m68k_grok_psinfo (bfd *abfd, Elf_Int
 #define elf_backend_rela_normal		1
 #define elf_backend_dtrel_excludes_plt	1
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #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.20200303/bfd/elf32-m68k.h ./bfd/elf32-m68k.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-m68k.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-m68k.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Motorola 68k series support for 32-bit ELF
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,7 +18,7 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
+extern bool bfd_m68k_elf32_create_embedded_relocs
   (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
    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.20200303/bfd/elf32-mcore.c ./bfd/elf32-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-mcore.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-mcore.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -34,21 +34,21 @@
 
 /* Function to set whether a module needs the -mrelocatable bit set.  */
 
-static bfd_boolean
+static bool
 mcore_elf_set_private_flags (bfd * abfd, flagword flags)
 {
   BFD_ASSERT (! elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 mcore_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -57,11 +57,11 @@ mcore_elf_merge_private_bfd_data (bfd *i
 
   /* Check if we have the same endianness.  */
   if (! _bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
@@ -69,7 +69,7 @@ mcore_elf_merge_private_bfd_data (bfd *i
   if (! elf_flags_init (obfd))
     {
       /* First call, no flags set.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
   else if (new_flags == old_flags)
@@ -80,7 +80,7 @@ mcore_elf_merge_private_bfd_data (bfd *i
       /* FIXME */
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Don't pretend we can deal with unsupported relocs.  */
@@ -111,95 +111,95 @@ static reloc_howto_type mcore_elf_howto_
   /* This reloc does nothing.  */
   HOWTO (R_MCORE_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,  /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MCORE_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A standard 32 bit relocation.  */
   HOWTO (R_MCORE_ADDR32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "ADDR32",		/* name *//* For compatibility with coff/pe port.  */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 8 bits + 2 zero bits; jmpi/jsri/lrw instructions.
      Should not appear in object files.  */
   HOWTO (R_MCORE_PCRELIMM8BY4,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mcore_elf_unsupported_reloc,	/* special_function */
 	 "R_MCORE_PCRELIMM8BY4",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* bsr/bt/bf/br instructions; 11 bits + 1 zero bit
      Span 2k instructions == 4k bytes.
      Only useful pieces at the relocated address are the opcode (5 bits) */
   HOWTO (R_MCORE_PCRELIMM11BY2,/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MCORE_PCRELIMM11BY2",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x7ff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 4 bits + 1 zero bit; 'loopt' instruction only; unsupported.  */
   HOWTO (R_MCORE_PCRELIMM4BY2,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 4,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mcore_elf_unsupported_reloc,/* special_function */
 	 "R_MCORE_PCRELIMM4BY2",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 32-bit pc-relative. Eventually this will help support PIC code.  */
   HOWTO (R_MCORE_PCREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MCORE_PCREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Like PCRELIMM11BY2, this relocation indicates that there is a
      'jsri' at the specified address. There is a separate relocation
@@ -210,61 +210,61 @@ static reloc_howto_type mcore_elf_howto_
      is a relocation that we are allowed to safely ignore.  */
   HOWTO (R_MCORE_PCRELJSR_IMM11BY2,/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MCORE_PCRELJSR_IMM11BY2", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x7ff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_MCORE_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MCORE_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_MCORE_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_MCORE_GNU_VTENTRY", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MCORE_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MCORE_RELATIVE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 false)			/* pcrel_offset */
 };
 
 #ifndef NUM_ELEM
@@ -336,7 +336,7 @@ mcore_elf_reloc_name_lookup (bfd *abfd A
 
 /* Set the howto pointer for a RCE ELF reloc.  */
 
-static bfd_boolean
+static bool
 mcore_elf_info_to_howto (bfd * abfd,
 			 arelent * cache_ptr,
 			 Elf_Internal_Rela * dst)
@@ -354,11 +354,11 @@ mcore_elf_info_to_howto (bfd * abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = mcore_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 /* The RELOCATE_SECTION function is called by the ELF backend linker
@@ -390,7 +390,7 @@ mcore_elf_info_to_howto (bfd * abfd,
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 mcore_elf_relocate_section (bfd * output_bfd,
 			    struct bfd_link_info * info,
 			    bfd * input_bfd,
@@ -404,7 +404,7 @@ mcore_elf_relocate_section (bfd * output
   struct elf_link_hash_entry ** sym_hashes = elf_sym_hashes (input_bfd);
   Elf_Internal_Rela * rel = relocs;
   Elf_Internal_Rela * relend = relocs + input_section->reloc_count;
-  bfd_boolean ret = TRUE;
+  bool ret = true;
 
 #ifdef DEBUG
   _bfd_error_handler
@@ -441,7 +441,7 @@ mcore_elf_relocate_section (bfd * output
 			      input_bfd, (int) r_type);
 
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	  continue;
 	}
 
@@ -457,7 +457,7 @@ mcore_elf_relocate_section (bfd * output
 			      howto->name);
 
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	  continue;
 	}
 
@@ -470,7 +470,7 @@ mcore_elf_relocate_section (bfd * output
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -480,7 +480,8 @@ mcore_elf_relocate_section (bfd * output
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_MCORE_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -514,7 +515,7 @@ mcore_elf_relocate_section (bfd * output
 
       if (r != bfd_reloc_ok)
 	{
-	  ret = FALSE;
+	  ret = false;
 
 	  switch (r)
 	    {
@@ -580,7 +581,7 @@ mcore_elf_gc_mark_hook (asection *sec,
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 mcore_elf_check_relocs (bfd * abfd,
 			struct bfd_link_info * info,
 			asection * sec,
@@ -592,7 +593,7 @@ mcore_elf_check_relocs (bfd * abfd,
   const Elf_Internal_Rela * rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -622,19 +623,19 @@ mcore_elf_check_relocs (bfd * abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_MCORE_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_MCORE_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static const struct bfd_elf_special_section mcore_elf_special_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.20200303/bfd/elf32-mep.c ./bfd/elf32-mep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-mep.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-mep.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* MeP-specific support for 32-bit ELF.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -30,7 +30,7 @@
 /* Private relocation functions.  */
 
 #define MEPREL(type, size, bits, right, left, pcrel, overflow, mask) \
-  HOWTO (type, right, size, bits, pcrel, left, overflow, bfd_elf_generic_reloc, #type, FALSE, 0, mask, 0)
+  HOWTO (type, right, size, bits, pcrel, left, overflow, bfd_elf_generic_reloc, #type, false, 0, mask, 0)
 
 #define N complain_overflow_dont
 #define S complain_overflow_signed
@@ -39,30 +39,30 @@
 static reloc_howto_type mep_elf_howto_table [] =
 {
   /* type, size, bits, leftshift, rightshift, pcrel, OD/OS/OU, mask.  */
-  MEPREL (R_MEP_NONE,	  3,  0, 0, 0, 0, N, 0),
+  MEPREL (R_MEP_NONE,	  0,  0, 0, 0, 0, N, 0),
   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_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_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_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_8,        1,  8, 0, 0, 0, U, 0xff),
+  MEPREL (R_MEP_16,       2, 16, 0, 0, 0, U, 0xffff),
+  MEPREL (R_MEP_32,       4, 32, 0, 0, 0, U, 0xffffffff),
+  MEPREL (R_MEP_PCREL8A2, 2,  8, 1, 1, 1, S, 0x00fe),
+  MEPREL (R_MEP_PCREL12A2,2, 12, 1, 1, 1, S, 0x0ffe),
+  MEPREL (R_MEP_PCREL17A2,4, 17, 0, 1, 1, S, 0x0000ffff),
+  MEPREL (R_MEP_PCREL24A2,4, 24, 0, 1, 1, S, 0x07f0ffff),
+  MEPREL (R_MEP_PCABS24A2,4, 24, 0, 1, 0, U, 0x07f0ffff),
+  MEPREL (R_MEP_LOW16,    4, 16, 0, 0, 0, N, 0x0000ffff),
+  MEPREL (R_MEP_HI16U,    4, 32, 0,16, 0, N, 0x0000ffff),
+  MEPREL (R_MEP_HI16S,    4, 32, 0,16, 0, N, 0x0000ffff),
+  MEPREL (R_MEP_GPREL,    4, 16, 0, 0, 0, S, 0x0000ffff),
+  MEPREL (R_MEP_TPREL,    4, 16, 0, 0, 0, S, 0x0000ffff),
+  MEPREL (R_MEP_TPREL7,   2,  7, 0, 0, 0, U, 0x007f),
+  MEPREL (R_MEP_TPREL7A2, 2,  7, 1, 1, 0, U, 0x007e),
+  MEPREL (R_MEP_TPREL7A4, 2,  7, 2, 2, 0, U, 0x007c),
+  MEPREL (R_MEP_UIMM24,   4, 24, 0, 0, 0, U, 0x00ffffff),
+  MEPREL (R_MEP_ADDR24A4, 4, 24, 0, 2, 0, U, 0x00fcffff),
+  MEPREL (R_MEP_GNU_VTINHERIT,2,  0,16,32, 0, N, 0x0000),
+  MEPREL (R_MEP_GNU_VTENTRY,2,  0,16,32, 0, N, 0x0000),
   /* MEPRELOC:END */
 };
 
@@ -185,7 +185,7 @@ mep_lookup_global
   if (*cache || *warn)
     return *cache;
 
-  h = bfd_link_hash_lookup (mep_info->hash, name, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (mep_info->hash, name, false, false, true);
   if (h == 0 || h->type != bfd_link_hash_defined)
     {
       *warn = ofs + 1;
@@ -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);
@@ -375,7 +371,7 @@ mep_final_link_relocate
 
 /* Set the howto pointer for a MEP ELF reloc.  */
 
-static bfd_boolean
+static bool
 mep_info_to_howto_rela (bfd *		    abfd,
 			arelent *	    cache_ptr,
 			Elf_Internal_Rela * dst)
@@ -389,10 +385,10 @@ mep_info_to_howto_rela (bfd *		    abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & mep_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 /* Relocate a MEP ELF section.
@@ -428,7 +424,7 @@ mep_info_to_howto_rela (bfd *		    abfd,
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 mep_elf_relocate_section
     (bfd *		     output_bfd ATTRIBUTE_UNUSED,
      struct bfd_link_info *  info,
@@ -481,7 +477,7 @@ mep_elf_relocate_section
 	}
       else
 	{
-	  bfd_boolean warned, unresolved_reloc, ignored;
+	  bool warned, unresolved_reloc, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL(info, input_bfd, input_section, rel,
 				  r_symndx, symtab_hdr, sym_hashes,
@@ -493,7 +489,8 @@ mep_elf_relocate_section
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_MEP_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -519,7 +516,7 @@ mep_elf_relocate_section
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -547,31 +544,31 @@ mep_elf_relocate_section
 
   if (warn_tp)
     info->callbacks->undefined_symbol
-      (info, "__tpbase", input_bfd, input_section, warn_tp-1, TRUE);
+      (info, "__tpbase", input_bfd, input_section, warn_tp-1, true);
   if (warn_sda)
     info->callbacks->undefined_symbol
-      (info, "__sdabase", input_bfd, input_section, warn_sda-1, TRUE);
+      (info, "__sdabase", input_bfd, input_section, warn_sda-1, true);
   if (warn_sda || warn_tp)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Function to set the ELF flag bits.  */
 
-static bfd_boolean
+static bool
 mep_elf_set_private_flags (bfd *    abfd,
 			   flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 mep_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -581,7 +578,7 @@ mep_elf_merge_private_bfd_data (bfd *ibf
 
   /* Check if we have the same endianness.  */
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
@@ -594,7 +591,7 @@ mep_elf_merge_private_bfd_data (bfd *ibf
     /* First call, no flags set.  */
     if (!elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       old_flags = new_flags;
     }
   else if ((new_flags | old_flags) & EF_MEP_LIBRARY)
@@ -622,7 +619,7 @@ mep_elf_merge_private_bfd_data (bfd *ibf
 	  _bfd_error_handler (_("%pB and %pB are for different cores"),
 			      last_ibfd, ibfd);
 	  bfd_set_error (bfd_error_invalid_target);
-	  return FALSE;
+	  return false;
 	}
 
       /* Make sure they're for the same me_module.  Allow basic config to
@@ -641,13 +638,13 @@ mep_elf_merge_private_bfd_data (bfd *ibf
 	  _bfd_error_handler (_("%pB and %pB are for different configurations"),
 			      last_ibfd, ibfd);
 	  bfd_set_error (bfd_error_invalid_target);
-	  return FALSE;
+	  return false;
 	}
     }
 
   elf_elfheader (obfd)->e_flags = old_flags;
   last_ibfd = ibfd;
-  return TRUE;
+  return true;
 }
 
 /* This will be edited by the MeP configration tool.  */
@@ -664,7 +661,7 @@ static const char * core_names[] =
   "MeP", "MeP-c2", "MeP-c3", "MeP-h1"
 };
 
-static bfd_boolean
+static bool
 mep_elf_print_private_bfd_data (bfd * abfd, void * ptr)
 {
   FILE *   file = (FILE *) ptr;
@@ -688,7 +685,7 @@ mep_elf_print_private_bfd_data (bfd * ab
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 /* Return the machine subcode from the ELF e_flags header.  */
@@ -709,29 +706,29 @@ elf32_mep_machine (bfd * abfd)
   return bfd_mach_mep;
 }
 
-static bfd_boolean
+static bool
 mep_elf_object_p (bfd * abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_mep, elf32_mep_machine (abfd));
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-mep_elf_section_flags (flagword * flags, const Elf_Internal_Shdr * hdr)
+static bool
+mep_elf_section_flags (const Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_flags & SHF_MEP_VLIW)
-    * flags |= SEC_MEP_VLIW;
-  return TRUE;
+    hdr->bfd_section->flags |= SEC_MEP_VLIW;
+  return true;
 }
 
-static bfd_boolean
+static bool
 mep_elf_fake_sections (bfd *		   abfd ATTRIBUTE_UNUSED,
 		       Elf_Internal_Shdr * hdr,
 		       asection *	   sec)
 {
   if (sec->flags & SEC_MEP_VLIW)
     hdr->sh_flags |= SHF_MEP_VLIW;
-  return TRUE;
+  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.20200303/bfd/elf32-metag.c ./bfd/elf32-metag.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-metag.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-metag.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Meta support for 32-bit ELF
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2025 Free Software Foundation, Inc.
    Contributed by Imagination Technologies Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -95,92 +95,92 @@ static reloc_howto_type elf_metag_howto_
   /* High order 16 bit absolute.  */
   HOWTO (R_METAG_HIADDR16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_HIADDR16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low order 16 bit absolute.  */
   HOWTO (R_METAG_LOADDR16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_LOADDR16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit absolute.  */
   HOWTO (R_METAG_ADDR32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_ADDR32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* No relocation.  */
   HOWTO (R_METAG_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 19 bit pc relative */
   HOWTO (R_METAG_RELBRANCH,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 5,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_RELBRANCH",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00ffffe0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GET/SET offset */
   HOWTO (R_METAG_GETSETOFF,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_GETSETOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (6),
   EMPTY_HOWTO (7),
@@ -209,194 +209,194 @@ static reloc_howto_type elf_metag_howto_
 
   HOWTO (R_METAG_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,		/* pc_relative */
+	 false,		/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_METAG_GNU_VTINHERIT", /* name */
-	 FALSE,		/* partial_inplace */
+	 false,		/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_METAG_GNU_VTENTRY",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High order 16 bit GOT offset */
   HOWTO (R_METAG_HI16_GOTOFF,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_HI16_GOTOFF", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low order 16 bit GOT offset */
   HOWTO (R_METAG_LO16_GOTOFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_LO16_GOTOFF", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GET/SET GOT offset */
   HOWTO (R_METAG_GETSET_GOTOFF, /* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_GETSET_GOTOFF", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GET/SET GOT relative */
   HOWTO (R_METAG_GETSET_GOT,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_GETSET_GOT",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High order 16 bit GOT reference */
   HOWTO (R_METAG_HI16_GOTPC,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_HI16_GOTPC",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low order 16 bit GOT reference */
   HOWTO (R_METAG_LO16_GOTPC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_LO16_GOTPC",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High order 16 bit PLT */
   HOWTO (R_METAG_HI16_PLT,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_HI16_PLT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low order 16 bit PLT */
   HOWTO (R_METAG_LO16_PLT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_LO16_PLT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_RELBRANCH_PLT, /* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 5,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_RELBRANCH_PLT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00ffffe0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Dummy relocs used by the linker internally.  */
   HOWTO (R_METAG_GOTOFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_GOTOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_PLT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_GOTOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This is used only by the dynamic linker.  The symbol should exist
      both in the object being run and in some shared library.  The
@@ -405,276 +405,276 @@ static reloc_howto_type elf_metag_howto_
      run has to have the data at some particular address.  */
   HOWTO (R_METAG_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_COPY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Marks a procedure linkage table entry for a symbol.  */
   HOWTO (R_METAG_JMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_JMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Used only by the dynamic linker.  When the object is run, this
      longword is set to the load address of the object, plus the
      addend.  */
   HOWTO (R_METAG_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_GD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_GD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_LDM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_LDO_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_LDO_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_LDO_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_LDO_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Dummy reloc used by the linker internally.  */
   HOWTO (R_METAG_TLS_LDO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_LDO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_IE,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_IE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007ff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Dummy reloc used by the linker internally.  */
   HOWTO (R_METAG_TLS_IENONPIC,  /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_IENONPIC", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_IENONPIC_HI16,/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_IENONPIC_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_IENONPIC_LO16,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_IENONPIC_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_TPOFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_TPOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_DTPMOD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_DTPMOD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_DTPOFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_DTPOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Dummy reloc used by the linker internally.  */
   HOWTO (R_METAG_TLS_LE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_LE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_LE_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_LE_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_METAG_TLS_LE_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 3,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_METAG_TLS_LE_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007fff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 };
 
@@ -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
   {
@@ -864,7 +857,7 @@ tpoff (struct bfd_link_info *info, bfd_v
 			 elf_hash_table (info)->tls_sec->alignment_power));
 }
 
-static bfd_boolean
+static bool
 metag_info_to_howto_rela (bfd *abfd,
 			  arelent *cache_ptr,
 			  Elf_Internal_Rela *dst)
@@ -878,10 +871,10 @@ metag_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & elf_metag_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type *
@@ -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)
@@ -1029,8 +1022,7 @@ elf_metag_link_hash_table_create (bfd *a
 
   if (!_bfd_elf_link_hash_table_init (&htab->etab, abfd,
 				      metag_link_hash_newfunc,
-				      sizeof (struct elf_metag_link_hash_entry),
-				      METAG_ELF_DATA))
+				      sizeof (struct elf_metag_link_hash_entry)))
     {
       free (htab);
       return NULL;
@@ -1044,6 +1036,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;
 }
@@ -1126,7 +1119,7 @@ metag_get_stub_entry (const asection *in
 	return NULL;
 
       hsh = metag_stub_hash_lookup (&htab->bstab,
-				    stub_name, FALSE, FALSE);
+				    stub_name, false, false);
 
       if (hh != NULL)
 	hh->hsh_cache = hsh;
@@ -1179,7 +1172,7 @@ metag_add_stub (const char *stub_name,
 
   /* Enter this entry into the linker stub hash table.  */
   hsh = metag_stub_hash_lookup (&htab->bstab, stub_name,
-				TRUE, FALSE);
+				true, false);
   if (hsh == NULL)
     {
       /* xgettext:c-format */
@@ -1197,7 +1190,7 @@ metag_add_stub (const char *stub_name,
 /* Check a signed integer value can be represented in the given number
    of bits.  */
 
-static bfd_boolean
+static bool
 within_signed_range (int value, unsigned int bits)
 {
   int min_val = -(1 << (bits - 1));
@@ -1390,44 +1383,6 @@ metag_final_link_relocate (reloc_howto_t
   return r;
 }
 
-/* This is defined because R_METAG_NONE != 0...
-   See RELOC_AGAINST_DISCARDED_SECTION for details.  */
-#define METAG_RELOC_AGAINST_DISCARDED_SECTION(info, input_bfd, input_section, \
-					      rel, relend, howto, contents) \
-  {									\
-    _bfd_clear_contents (howto, input_bfd, input_section,		\
-			 contents, rel->r_offset);			\
-									\
-    if (bfd_link_relocatable (info)					\
-	&& (input_section->flags & SEC_DEBUGGING))			\
-      {									\
-	/* Only remove relocations in debug sections since other	\
-	   sections may require relocations.  */			\
-	Elf_Internal_Shdr *rel_hdr;					\
-									\
-	rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section); \
-									\
-	/* Avoid empty output section.  */				\
-	if (rel_hdr->sh_size > rel_hdr->sh_entsize)			\
-	  {								\
-	    rel_hdr->sh_size -= rel_hdr->sh_entsize;			\
-	    rel_hdr = _bfd_elf_single_rel_hdr (input_section);		\
-	    rel_hdr->sh_size -= rel_hdr->sh_entsize;			\
-									\
-	    memmove (rel, rel + 1, (relend - rel) * sizeof (*rel));	\
-									\
-	    input_section->reloc_count--;				\
-	    relend--;							\
-	    rel--;							\
-	    continue;							\
-	  }								\
-      }									\
-									\
-    rel->r_info = R_METAG_NONE;						\
-    rel->r_addend = 0;							\
-    continue;								\
-  }
-
 /* Relocate a META ELF section.
 
 The RELOCATE_SECTION function is called by the new ELF backend linker
@@ -1458,7 +1413,7 @@ going to be the section symbol correspon
 section, which means that the addend must be adjusted
 accordingly.  */
 
-static bfd_boolean
+static int
 elf_metag_relocate_section (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -1524,7 +1479,7 @@ elf_metag_relocate_section (bfd *output_
       else
 	{
 	  struct elf_link_hash_entry *eh;
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, eh_syms,
@@ -1536,8 +1491,9 @@ elf_metag_relocate_section (bfd *output_
 	}
 
       if (sec != NULL && discarded_section (sec))
-	  METAG_RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-						 rel, relend, howto, contents);
+	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+					 rel, 1, relend, R_METAG_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1552,8 +1508,8 @@ elf_metag_relocate_section (bfd *output_
 	  if ((bfd_link_pic (info)
 	       && r_symndx != STN_UNDEF
 	       && (input_section->flags & SEC_ALLOC) != 0
-	       && (r_type != R_METAG_RELBRANCH
-		   || !SYMBOL_CALLS_LOCAL (info, &hh->eh)))
+	       && !(r_type == R_METAG_RELBRANCH
+		    && (hh == NULL || SYMBOL_CALLS_LOCAL (info, &hh->eh))))
 	      || (!bfd_link_pic (info)
 		  && hh != NULL
 		  && hh->eh.dynindx != -1
@@ -1564,7 +1520,7 @@ elf_metag_relocate_section (bfd *output_
 		      || hh->eh.root.type == bfd_link_hash_undefined)))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 	      bfd_byte *loc;
 
 	      /* When generating a shared object, these relocations
@@ -1574,17 +1530,17 @@ elf_metag_relocate_section (bfd *output_
 	      sreloc = elf_section_data (input_section)->sreloc;
 	      BFD_ASSERT (sreloc != NULL);
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset = _bfd_elf_section_offset (output_bfd,
 							 info,
 							 input_section,
 							 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -1607,7 +1563,7 @@ elf_metag_relocate_section (bfd *output_
 		      || ((info->symbolic || hh->eh.dynindx == -1)
 			  && hh->eh.def_regular))
 		    {
-		      relocate = TRUE;
+		      relocate = true;
 		      outrel.r_info = ELF32_R_INFO (0, R_METAG_RELATIVE);
 		      outrel.r_addend = relocation + rel->r_addend;
 		    }
@@ -1678,13 +1634,13 @@ elf_metag_relocate_section (bfd *output_
 	case R_METAG_GETSET_GOT:
 	  {
 	    bfd_vma off;
-	    bfd_boolean do_got = 0;
+	    bool do_got = 0;
 
 	    /* Relocation is to the entry for this symbol in the
 	       global offset table.  */
 	    if (hh != NULL)
 	      {
-		bfd_boolean dyn;
+		bool dyn;
 
 		off = hh->eh.got.offset;
 		dyn = htab->etab.dynamic_sections_created;
@@ -1773,7 +1729,7 @@ elf_metag_relocate_section (bfd *output_
 	    indx = 0;
 	    if (hh != NULL)
 	      {
-		bfd_boolean dyn;
+		bool dyn;
 		dyn = htab->etab.dynamic_sections_created;
 
 		if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
@@ -1804,7 +1760,7 @@ elf_metag_relocate_section (bfd *output_
 	      off &= ~1;
 	    else
 	      {
-		bfd_boolean need_relocs = FALSE;
+		bool need_relocs = false;
 		Elf_Internal_Rela outrel;
 		bfd_byte *loc = NULL;
 		int cur_off = off;
@@ -1818,7 +1774,7 @@ elf_metag_relocate_section (bfd *output_
 			|| ELF_ST_VISIBILITY (hh->eh.other) == STV_DEFAULT
 			|| hh->eh.root.type != bfd_link_hash_undefweak))
 		  {
-		    need_relocs = TRUE;
+		    need_relocs = true;
 		    loc = htab->etab.srelgot->contents;
 		    /* FIXME (CAO): Should this be reloc_count++ ? */
 		    loc += htab->etab.srelgot->reloc_count * sizeof (Elf32_External_Rela);
@@ -1865,7 +1821,7 @@ elf_metag_relocate_section (bfd *output_
 			else
 			  _bfd_error_handler (_("%pB(%pA): shared library symbol %s encountered whilst performing a static link"),
 					      input_bfd, input_section, name);
-			return FALSE;
+			return false;
 		      }
 
 		    cur_off += 8;
@@ -1920,7 +1876,7 @@ elf_metag_relocate_section (bfd *output_
 		   "%s relocation not permitted in shared object"),
 		 input_bfd, input_section, (uint64_t) rel->r_offset,
 		 howto->name);
-	      return FALSE;
+	      return false;
 	    }
 	  else
 	    relocation = tpoff (info, relocation);
@@ -1983,7 +1939,7 @@ elf_metag_relocate_section (bfd *output_
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -2009,13 +1965,13 @@ elf_metag_relocate_section (bfd *output_
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create the .plt and .got sections, and set up our hash table
    short-cuts to various dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_metag_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_metag_link_hash_table *htab;
@@ -2026,11 +1982,11 @@ elf_metag_create_dynamic_sections (bfd *
   /* Don't try to create the .plt and .got twice.  */
   htab = metag_link_hash_table (info);
   if (htab->etab.splt != NULL)
-    return TRUE;
+    return true;
 
   /* Call the generic code to do most of the work.  */
   if (! _bfd_elf_create_dynamic_sections (abfd, info))
-    return FALSE;
+    return false;
 
   /* The header goes at the start of the dynamic .got section, which
      is placed after the dynamic .got.plt section.  ie. The header is
@@ -2041,8 +1997,8 @@ elf_metag_create_dynamic_sections (bfd *
   bh = NULL;
   if (!(_bfd_generic_link_add_one_symbol
 	(info, abfd, "__GLOBAL_OFFSET_TABLE__", BSF_GLOBAL, htab->etab.sgot,
-	 (bfd_vma) 0, NULL, FALSE, bed->collect, &bh)))
-    return FALSE;
+	 (bfd_vma) 0, NULL, false, bed->collect, &bh)))
+    return false;
   eh = (struct elf_link_hash_entry *) bh;
   eh->def_regular = 1;
   eh->type = STT_OBJECT;
@@ -2050,11 +2006,11 @@ elf_metag_create_dynamic_sections (bfd *
 
   if (! bfd_link_executable (info)
       && ! bfd_elf_link_record_dynamic_symbol (info, eh))
-    return FALSE;
+    return false;
 
   htab->etab.hgot = eh;
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase, and
@@ -2062,7 +2018,7 @@ elf_metag_create_dynamic_sections (bfd *
    table, and dynamic reloc sections.  At this point we haven't
    necessarily read all the input files.  */
 
-static bfd_boolean
+static bool
 elf_metag_check_relocs (bfd *abfd,
 			struct bfd_link_info *info,
 			asection *sec,
@@ -2078,7 +2034,7 @@ elf_metag_check_relocs (bfd *abfd,
   int tls_type = GOT_UNKNOWN, old_tls_type = GOT_UNKNOWN;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = metag_link_hash_table (info);
   dynobj = htab->etab.dynobj;
@@ -2087,7 +2043,7 @@ elf_metag_check_relocs (bfd *abfd,
   sreloc = NULL;
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   rel_end = relocs + sec->reloc_count;
   for (rel = relocs; rel < rel_end; rel++)
@@ -2102,10 +2058,10 @@ 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;
+	    return false;
 
 	  hh = NULL;
 	}
@@ -2141,7 +2097,7 @@ elf_metag_check_relocs (bfd *abfd,
 	      if (dynobj == NULL)
 		htab->etab.dynobj = dynobj = abfd;
 	      if (!elf_metag_create_dynamic_sections (dynobj, info))
-		return FALSE;
+		return false;
 	      break;
 
 	    default:
@@ -2190,7 +2146,7 @@ elf_metag_check_relocs (bfd *abfd,
 		  local_got_refcounts = ((bfd_signed_vma *)
 					 bfd_zalloc (abfd, size));
 		  if (local_got_refcounts == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_refcounts (abfd) = local_got_refcounts;
 		  memset (metag_elf_local_got_tls_type (abfd),
 			  GOT_UNKNOWN, symtab_hdr->sh_info);
@@ -2257,7 +2213,7 @@ elf_metag_check_relocs (bfd *abfd,
 		(_("%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"),
 		 abfd, elf_metag_howto_table[r_type].name, name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  /* Fall through.  */
@@ -2314,12 +2270,12 @@ elf_metag_check_relocs (bfd *abfd,
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->etab.dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, htab->etab.dynobj, 2, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
 		    {
 		      bfd_set_error (bfd_error_bad_value);
-		      return FALSE;
+		      return false;
 		    }
 
 		  elf_section_data (sec)->sreloc = sreloc;
@@ -2328,7 +2284,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.  */
@@ -2349,7 +2305,7 @@ elf_metag_check_relocs (bfd *abfd,
 		  hdh_p = ((struct elf_dyn_relocs *)
 			   bfd_alloc (dynobj, sizeof *hdh_p));
 		  if (hdh_p == NULL)
-		    return FALSE;
+		    return false;
 		  hdh_p->next = *hdh_head;
 		  *hdh_head = hdh_p;
 		  hdh_p->sec = sec;
@@ -2368,19 +2324,19 @@ elf_metag_check_relocs (bfd *abfd,
 	case R_METAG_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, &hh->eh,
 					    rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_METAG_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, &hh->eh, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -2395,41 +2351,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,30 +2361,13 @@ 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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf_metag_adjust_dynamic_symbol (struct bfd_link_info *info,
 				 struct elf_link_hash_entry *eh)
 {
@@ -2490,7 +2394,7 @@ elf_metag_adjust_dynamic_symbol (struct
 	  eh->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     eh->plt.offset = (bfd_vma) -1;
@@ -2505,7 +2409,7 @@ elf_metag_adjust_dynamic_symbol (struct
       eh->root.u.def.section = def->root.u.def.section;
       eh->root.u.def.value = def->root.u.def.value;
       eh->non_got_ref = def->non_got_ref;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2516,26 +2420,26 @@ elf_metag_adjust_dynamic_symbol (struct
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!eh->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       eh->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -2575,16 +2479,15 @@ elf_metag_adjust_dynamic_symbol (struct
 /* Allocate space in .plt, .got and associated reloc sections for
    global syms.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *eh, void *inf)
 {
   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)
-    return TRUE;
+    return true;
 
   if (eh->root.type == bfd_link_hash_warning)
     eh = (struct elf_link_hash_entry *) eh->root.u.i.link;
@@ -2601,7 +2504,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !eh->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, eh))
-	    return FALSE;
+	    return false;
 	}
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), eh))
@@ -2652,7 +2555,7 @@ allocate_dynrelocs (struct elf_link_hash
   if (eh->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = metag_elf_hash_entry (eh)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -2661,7 +2564,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !eh->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, eh))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->etab.sgot;
@@ -2687,9 +2590,8 @@ 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)
-    return TRUE;
+  if (eh->dyn_relocs == NULL)
+    return true;
 
   /* If this is a -Bsymbolic shared link, then we need to discard all
      space allocated for dynamic pc-relative relocs against symbols
@@ -2702,7 +2604,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 +2617,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.  */
@@ -2727,7 +2629,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !eh->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, eh))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -2749,7 +2651,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !eh->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, eh))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -2758,65 +2660,38 @@ allocate_dynrelocs (struct elf_link_hash
 	    goto keep;
 	}
 
-      hh->dyn_relocs = NULL;
-      return TRUE;
+      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);
     }
 
-  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;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf_metag_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				 struct bfd_link_info *info)
+static bool
+elf_metag_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			      struct bfd_link_info *info)
 {
   struct elf_metag_link_hash_table *htab;
   bfd *dynobj;
   bfd *ibfd;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
 
   htab = metag_link_hash_table (info);
   dynobj = htab->etab.dynobj;
   if (dynobj == NULL)
-    abort ();
+    return true;
 
   if (htab->etab.dynamic_sections_created)
     {
@@ -2828,6 +2703,7 @@ elf_metag_size_dynamic_sections (bfd *ou
 	    abort ();
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -2917,10 +2793,10 @@ elf_metag_size_dynamic_sections (bfd *ou
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
-      bfd_boolean reloc_section = FALSE;
+      bool reloc_section = false;
 
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
@@ -2934,15 +2810,15 @@ elf_metag_size_dynamic_sections (bfd *ou
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->etab.srelplt)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
 	  s->reloc_count = 0;
-	  reloc_section = TRUE;
+	  reloc_section = true;
 	}
       else
 	{
@@ -2971,8 +2847,9 @@ elf_metag_size_dynamic_sections (bfd *ou
       /* Allocate memory for the section contents.  */
       s->contents = bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
-      else if (reloc_section)
+	return false;
+      s->alloced = 1;
+      if (reloc_section)
 	{
 	  unsigned char *contents = s->contents;
 	  Elf32_External_Rela reloc;
@@ -2988,61 +2865,13 @@ 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
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf_metag_finish_dynamic_symbol (bfd *output_bfd,
 				 struct bfd_link_info *info,
 				 struct elf_link_hash_entry *eh,
@@ -3232,22 +3061,22 @@ elf_metag_finish_dynamic_symbol (bfd *ou
       sym->st_shndx = SHN_ABS;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the Meta ELF ABI version.  */
 
-static bfd_boolean
+static bool
 elf_metag_init_file_header (bfd *abfd, struct bfd_link_info *link_info)
 {
   Elf_Internal_Ehdr * i_ehdrp;	/* ELF file header, internal form.  */
 
   if (!_bfd_elf_init_file_header (abfd, link_info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
   i_ehdrp->e_ident[EI_ABIVERSION] = METAG_ELF_ABI_VERSION;
-  return TRUE;
+  return true;
 }
 
 /* Used to decide how to sort relocs in an optimal manner for the
@@ -3273,7 +3102,7 @@ elf_metag_reloc_type_class (const struct
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_metag_finish_dynamic_sections (bfd *output_bfd,
 				   struct bfd_link_info *info)
 {
@@ -3384,7 +3213,7 @@ elf_metag_finish_dynamic_sections (bfd *
 	->this_hdr.sh_entsize = GOT_ENTRY_SIZE;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -3458,8 +3287,8 @@ metag_type_of_stub (asection *input_sec,
 #define ADD_A0_3_A0_3	0x82180000
 #define MOV_PC_A0_3	0xa3180ca0
 
-static bfd_boolean
-metag_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_UNUSED)
+static bool
+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 +3296,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->fatal (_("%P: Could not assign `%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    hsh->target_section);
 
   stub_sec = hsh->stub_sec;
 
@@ -3522,17 +3361,17 @@ metag_build_one_stub (struct bfd_hash_en
       break;
     default:
       BFD_FAIL ();
-      return FALSE;
+      return false;
     }
 
   stub_sec->size += size;
-  return TRUE;
+  return true;
 }
 
 /* As above, but don't actually build the stub.  Just bump offset so
    we know stub section sizes.  */
 
-static bfd_boolean
+static bool
 metag_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_UNUSED)
 {
   struct elf_metag_stub_hash_entry *hsh;
@@ -3547,7 +3386,7 @@ metag_size_one_stub (struct bfd_hash_ent
     size = 12;
 
   hsh->stub_sec->size += size;
-  return TRUE;
+  return true;
 }
 
 /* Set up various things so that we can make a list of input sections
@@ -3562,7 +3401,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.  */
@@ -3662,7 +3501,7 @@ elf_metag_next_input_section (struct bfd
 static void
 group_sections (struct elf_metag_link_hash_table *htab,
 		bfd_size_type stub_group_size,
-		bfd_boolean stubs_always_before_branch)
+		bool stubs_always_before_branch)
 {
   asection **list = htab->input_list + htab->top_index;
   do
@@ -3675,7 +3514,7 @@ group_sections (struct elf_metag_link_ha
 	  asection *curr;
 	  asection *prev;
 	  bfd_size_type total;
-	  bfd_boolean big_sec;
+	  bool big_sec;
 
 	  curr = tail;
 	  total = tail->size;
@@ -3741,7 +3580,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)
@@ -3786,7 +3625,7 @@ instruction.  */
 
 /* See elf32-hppa.c and elf64-ppc.c.  */
 
-bfd_boolean
+bool
 elf_metag_size_stubs(bfd *output_bfd, bfd *stub_bfd,
 		     struct bfd_link_info *info,
 		     bfd_signed_vma group_size,
@@ -3794,8 +3633,8 @@ elf_metag_size_stubs(bfd *output_bfd, bf
 		     void (*layout_sections_again) (void))
 {
   bfd_size_type stub_group_size;
-  bfd_boolean stubs_always_before_branch;
-  bfd_boolean stub_changed;
+  bool stubs_always_before_branch;
+  bool stub_changed;
   struct elf_metag_link_hash_table *htab = metag_link_hash_table (info);
 
   /* Stash our params away.  */
@@ -3828,14 +3667,14 @@ elf_metag_size_stubs(bfd *output_bfd, bf
     default:
       if (htab->all_local_syms)
 	goto error_ret_free_local;
-      return FALSE;
+      return false;
 
     case 0:
-      stub_changed = FALSE;
+      stub_changed = false;
       break;
 
     case 1:
-      stub_changed = TRUE;
+      stub_changed = true;
       break;
     }
 
@@ -4013,7 +3852,7 @@ elf_metag_size_stubs(bfd *output_bfd, bf
 
 		  hsh = metag_stub_hash_lookup (&htab->bstab,
 						stub_name,
-						FALSE, FALSE);
+						false, false);
 		  if (hsh != NULL)
 		    {
 		      /* The proper stub has already been created.  */
@@ -4032,7 +3871,7 @@ elf_metag_size_stubs(bfd *output_bfd, bf
 		  hsh->stub_type = stub_type;
 		  hsh->hh = hh;
 		  hsh->addend = irela->r_addend;
-		  stub_changed = TRUE;
+		  stub_changed = true;
 		}
 
 	      /* We're done with the internal relocs, free them.  */
@@ -4055,22 +3894,22 @@ elf_metag_size_stubs(bfd *output_bfd, bf
 
       /* Ask the linker to do its stuff.  */
       (*htab->layout_sections_again) ();
-      stub_changed = FALSE;
+      stub_changed = false;
     }
 
   free (htab->all_local_syms);
-  return TRUE;
+  return true;
 
  error_ret_free_local:
   free (htab->all_local_syms);
-  return FALSE;
+  return false;
 }
 
 /* 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 metagelf_finish in the linker.  */
 
-bfd_boolean
+bool
 elf_metag_build_stubs (struct bfd_link_info *info)
 {
   asection *stub_sec;
@@ -4089,7 +3928,8 @@ elf_metag_build_stubs (struct bfd_link_i
       size = stub_sec->size;
       stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
       if (stub_sec->contents == NULL && size != 0)
-	return FALSE;
+	return false;
+      stub_sec->alloced = 1;
       stub_sec->size = 0;
     }
 
@@ -4097,12 +3937,12 @@ elf_metag_build_stubs (struct bfd_link_i
   table = &htab->bstab;
   bfd_hash_traverse (table, metag_build_one_stub, info);
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if SYM represents a local label symbol.  */
 
-static bfd_boolean
+static bool
 elf_metag_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
 {
   if (name[0] == '$' && name[1] == 'L')
@@ -4123,8 +3963,7 @@ elf_metag_plt_sym_val (bfd_vma i, const
 #define ELF_ARCH		bfd_arch_metag
 #define ELF_TARGET_ID		METAG_ELF_DATA
 #define ELF_MACHINE_CODE	EM_METAG
-#define ELF_MINPAGESIZE	0x1000
-#define ELF_MAXPAGESIZE	0x4000
+#define ELF_MAXPAGESIZE		0x4000
 #define ELF_COMMONPAGESIZE	0x1000
 
 #define TARGET_LITTLE_SYM	metag_elf32_vec
@@ -4145,7 +3984,7 @@ elf_metag_plt_sym_val (bfd_vma i, const
 #define elf_backend_adjust_dynamic_symbol	elf_metag_adjust_dynamic_symbol
 #define elf_backend_finish_dynamic_symbol	elf_metag_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections	elf_metag_finish_dynamic_sections
-#define elf_backend_size_dynamic_sections	elf_metag_size_dynamic_sections
+#define elf_backend_late_size_sections		elf_metag_late_size_sections
 #define elf_backend_omit_section_dynsym \
 	_bfd_elf_omit_section_dynsym_all
 #define elf_backend_init_file_header		elf_metag_init_file_header
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-metag.h ./bfd/elf32-metag.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-metag.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-metag.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Meta support for 32-bit ELF
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
+   Copyright (C) 2013-2025 Free Software Foundation, Inc.
    Contributed by Imagination Technologies Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -28,11 +28,11 @@ extern int elf_metag_setup_section_lists
 extern void elf_metag_next_input_section
   (struct bfd_link_info *, asection *);
 
-extern bfd_boolean elf_metag_size_stubs
+extern bool elf_metag_size_stubs
   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
    asection * (*) (const char *, asection *), void (*) (void));
 
-extern bfd_boolean elf_metag_build_stubs
+extern bool elf_metag_build_stubs
   (struct bfd_link_info *);
 
 #endif  /* _ELF32_METAG_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.20200303/bfd/elf32-microblaze.c ./bfd/elf32-microblaze.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-microblaze.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-microblaze.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -20,8 +20,6 @@
    Boston, MA 02110-1301, USA.  */
 
 
-int dbg = 0;
-
 #include "sysdep.h"
 #include "bfd.h"
 #include "bfdlink.h"
@@ -44,487 +42,502 @@ static reloc_howto_type microblaze_elf_h
    /* This reloc does nothing.  */
    HOWTO (R_MICROBLAZE_NONE,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  3,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  0,			/* Size.  */
 	  0,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont,  /* Complain on overflow.  */
 	  NULL,			 /* Special Function.  */
 	  "R_MICROBLAZE_NONE",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0,			/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* A standard 32 bit relocation.  */
    HOWTO (R_MICROBLAZE_32,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  32,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_bitfield, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_32",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0xffffffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* A standard PCREL 32 bit relocation.  */
    HOWTO (R_MICROBLAZE_32_PCREL,/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  32,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_bitfield, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_32_PCREL",	/* Name.  */
-	  TRUE,			/* Partial Inplace.  */
+	  true,			/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0xffffffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
    /* A 64 bit PCREL relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_64_PCREL,/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_64_PCREL",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
    /* The low half of a PCREL 32 bit relocation.  */
    HOWTO (R_MICROBLAZE_32_PCREL_LO,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_signed, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,	/* Special Function.  */
 	  "R_MICROBLAZE_32_PCREL_LO",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
    /* A 64 bit relocation.  Table entry not really used.  */
    HOWTO (R_MICROBLAZE_64,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_64",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* The low half of a 32 bit relocation.  */
    HOWTO (R_MICROBLAZE_32_LO,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_signed, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_32_LO", /* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* Read-only small data section relocation.  */
    HOWTO (R_MICROBLAZE_SRO32,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_bitfield, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_SRO32", /* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* Read-write small data area relocation.  */
    HOWTO (R_MICROBLAZE_SRW32,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_bitfield, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_SRW32", /* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
+
+   /* This reloc does nothing.	Used for relaxation.  */
+   HOWTO (R_MICROBLAZE_32_NONE,	/* Type.  */
+	0,			/* Rightshift.  */
+	2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	32,			/* Bitsize.  */
+	true,			/* PC_relative.  */
+	0,			/* Bitpos.  */
+	complain_overflow_bitfield, /* Complain on overflow.  */
+	NULL,			/* Special Function.  */
+	"R_MICROBLAZE_32_NONE", /* Name.  */
+	false,			/* Partial Inplace.  */
+	0,			/* Source Mask.  */
+	0,			/* Dest Mask.  */
+	false),		/* PC relative offset?  */
 
    /* This reloc does nothing.	Used for relaxation.  */
    HOWTO (R_MICROBLAZE_64_NONE,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  3,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  0,			/* Size.  */
 	  0,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  NULL,			 /* Special Function.  */
 	  "R_MICROBLAZE_64_NONE",/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0,			/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* Symbol Op Symbol relocation.  */
    HOWTO (R_MICROBLAZE_32_SYM_OP_SYM,		/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  32,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_bitfield, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_32_SYM_OP_SYM",		/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0xffffffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* GNU extension to record C++ vtable hierarchy.  */
    HOWTO (R_MICROBLAZE_GNU_VTINHERIT, /* Type.  */
 	  0,			 /* Rightshift.  */
-	  2,			 /* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			 /* Size.  */
 	  0,			 /* Bitsize.  */
-	  FALSE,		 /* PC_relative.  */
+	  false,		 /* PC_relative.  */
 	  0,			 /* Bitpos.  */
 	  complain_overflow_dont,/* Complain on overflow.  */
 	  NULL,			 /* Special Function.  */
 	  "R_MICROBLAZE_GNU_VTINHERIT", /* Name.  */
-	  FALSE,		 /* Partial Inplace.  */
+	  false,		 /* Partial Inplace.  */
 	  0,			 /* Source Mask.  */
 	  0,			 /* Dest Mask.  */
-	  FALSE),		 /* PC relative offset?  */
+	  false),		 /* PC relative offset?  */
 
    /* GNU extension to record C++ vtable member usage.  */
    HOWTO (R_MICROBLAZE_GNU_VTENTRY,   /* Type.  */
 	  0,			 /* Rightshift.  */
-	  2,			 /* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			 /* Size.  */
 	  0,			 /* Bitsize.  */
-	  FALSE,		 /* PC_relative.  */
+	  false,		 /* PC_relative.  */
 	  0,			 /* Bitpos.  */
 	  complain_overflow_dont,/* Complain on overflow.  */
 	  _bfd_elf_rel_vtable_reloc_fn,	 /* Special Function.  */
 	  "R_MICROBLAZE_GNU_VTENTRY", /* Name.  */
-	  FALSE,		 /* Partial Inplace.  */
+	  false,		 /* Partial Inplace.  */
 	  0,			 /* Source Mask.  */
 	  0,			 /* Dest Mask.  */
-	  FALSE),		 /* PC relative offset?  */
+	  false),		 /* PC relative offset?  */
 
    /* A 64 bit GOTPC relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_GOTPC_64,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,	/* Special Function.  */
 	  "R_MICROBLAZE_GOTPC_64",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
      /* A 64 bit TEXTPCREL relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_TEXTPCREL_64,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,	/* Special Function.  */
 	  "R_MICROBLAZE_TEXTPCREL_64",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
    /* A 64 bit GOT relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_GOT_64,  /* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_GOT_64",/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
     /* A 64 bit TEXTREL relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_TEXTREL_64,  /* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_TEXTREL_64",/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* A 64 bit PLT relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_PLT_64,  /* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_PLT_64",/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
    /*  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_REL,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_REL",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
    /*  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_JUMP_SLOT,/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_JUMP_SLOT",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
    /*  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_GLOB_DAT,/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  TRUE,			/* PC_relative.  */
+	  true,			/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_GLOB_DAT",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  TRUE),		/* PC relative offset?  */
+	  true),		/* PC relative offset?  */
 
    /* A 64 bit GOT relative relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_GOTOFF_64,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_GOTOFF_64",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* A 32 bit GOT relative relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_GOTOFF_32,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,	/* Special Function.  */
 	  "R_MICROBLAZE_GOTOFF_32",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* COPY relocation.  Table-entry not really used.  */
    HOWTO (R_MICROBLAZE_COPY,	/* Type.  */
 	  0,			/* Rightshift.  */
-	  2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	  4,			/* Size.  */
 	  16,			/* Bitsize.  */
-	  FALSE,		/* PC_relative.  */
+	  false,		/* PC_relative.  */
 	  0,			/* Bitpos.  */
 	  complain_overflow_dont, /* Complain on overflow.  */
 	  bfd_elf_generic_reloc,/* Special Function.  */
 	  "R_MICROBLAZE_COPY",	/* Name.  */
-	  FALSE,		/* Partial Inplace.  */
+	  false,		/* Partial Inplace.  */
 	  0,			/* Source Mask.  */
 	  0x0000ffff,		/* Dest Mask.  */
-	  FALSE),		/* PC relative offset?  */
+	  false),		/* PC relative offset?  */
 
    /* Marker relocs for TLS.  */
    HOWTO (R_MICROBLAZE_TLS,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MICROBLAZE_TLS",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
    HOWTO (R_MICROBLAZE_TLSGD,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MICROBLAZE_TLSGD",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
    HOWTO (R_MICROBLAZE_TLSLD,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MICROBLAZE_TLSLD",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
    /* Computes the load module index of the load module that contains the
       definition of its TLS sym.  */
    HOWTO (R_MICROBLAZE_TLSDTPMOD32,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MICROBLAZE_TLSDTPMOD32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
    /* Computes a dtv-relative displacement, the difference between the value
       of sym+add and the base address of the thread-local storage block that
       contains the definition of sym, minus 0x8000.  Used for initializing GOT */
    HOWTO (R_MICROBLAZE_TLSDTPREL32,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MICROBLAZE_TLSDTPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
    /* Computes a dtv-relative displacement, the difference between the value
       of sym+add and the base address of the thread-local storage block that
       contains the definition of sym, minus 0x8000.  */
    HOWTO (R_MICROBLAZE_TLSDTPREL64,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MICROBLAZE_TLSDTPREL64",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
    /* Computes a tp-relative displacement, the difference between the value of
       sym+add and the value of the thread pointer (r13).  */
    HOWTO (R_MICROBLAZE_TLSGOTTPREL32,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MICROBLAZE_TLSGOTTPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
    /* Computes a tp-relative displacement, the difference between the value of
       sym+add and the value of the thread pointer (r13).  */
    HOWTO (R_MICROBLAZE_TLSTPREL32,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MICROBLAZE_TLSTPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 };
 
@@ -562,6 +575,9 @@ microblaze_elf_reloc_type_lookup (bfd *
     case BFD_RELOC_NONE:
       microblaze_reloc = R_MICROBLAZE_NONE;
       break;
+    case BFD_RELOC_MICROBLAZE_32_NONE:
+      microblaze_reloc = R_MICROBLAZE_32_NONE;
+      break;
     case BFD_RELOC_MICROBLAZE_64_NONE:
       microblaze_reloc = R_MICROBLAZE_64_NONE;
       break;
@@ -674,7 +690,7 @@ microblaze_elf_reloc_name_lookup (bfd *a
 
 /* Set the howto pointer for a RCE ELF reloc.  */
 
-static bfd_boolean
+static bool
 microblaze_elf_info_to_howto (bfd * abfd,
 			      arelent * cache_ptr,
 			      Elf_Internal_Rela * dst)
@@ -692,23 +708,60 @@ microblaze_elf_info_to_howto (bfd * abfd
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = microblaze_elf_howto_table [r_type];
-  return TRUE;
+  return true;
+}
+
+/* Relax table contains information about instructions which can
+   be removed by relaxation -- replacing a long address with a
+   short address.  */
+struct relax_table
+{
+  /* Address where bytes may be deleted.  */
+  bfd_vma addr;
+
+  /* Number of bytes to be deleted.  */
+  size_t size;
+};
+
+struct _microblaze_elf_section_data
+{
+  struct bfd_elf_section_data elf;
+  /* Count of used relaxation table entries.  */
+  size_t relax_count;
+  /* Relaxation table.  */
+  struct relax_table *relax;
+};
+
+#define microblaze_elf_section_data(sec) \
+  ((struct _microblaze_elf_section_data *) elf_section_data (sec))
+
+static bool
+microblaze_elf_new_section_hook (bfd *abfd, asection *sec)
+{
+  struct _microblaze_elf_section_data *sdata;
+
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
+
+  return _bfd_elf_new_section_hook (abfd, sec);
 }
 
 /* Microblaze ELF local labels start with 'L.' or '$L', not '.L'.  */
 
-static bfd_boolean
+static bool
 microblaze_elf_is_local_label_name (bfd *abfd, const char *name)
 {
   if (name[0] == 'L' && name[1] == '.')
-    return TRUE;
+    return true;
 
   if (name[0] == '$' && name[1] == 'L')
-    return TRUE;
+    return true;
 
   /* With gcc, the labels go back to starting with '.', so we accept
      the generic ELF local label syntax as well.  */
@@ -721,9 +774,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 +797,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 +809,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 +838,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,15 +850,14 @@ 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)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
-				      sizeof (struct elf32_mb_link_hash_entry),
-				      MICROBLAZE_ELF_DATA))
+				      sizeof (struct elf32_mb_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -827,14 +873,14 @@ microblaze_elf_final_sdp (struct bfd_lin
 {
   struct bfd_link_hash_entry *h;
 
-  h = bfd_link_hash_lookup (info->hash, RO_SDA_ANCHOR_NAME, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, RO_SDA_ANCHOR_NAME, false, false, true);
   if (h != (struct bfd_link_hash_entry *) NULL
       && h->type == bfd_link_hash_defined)
     ro_small_data_pointer = (h->u.def.value
 			     + h->u.def.section->output_section->vma
 			     + h->u.def.section->output_offset);
 
-  h = bfd_link_hash_lookup (info->hash, RW_SDA_ANCHOR_NAME, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, RW_SDA_ANCHOR_NAME, false, false, true);
   if (h != (struct bfd_link_hash_entry *) NULL
       && h->type == bfd_link_hash_defined)
     rw_small_data_pointer = (h->u.def.value
@@ -910,7 +956,7 @@ microblaze_elf_output_dynamic_relocation
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 microblaze_elf_relocate_section (bfd *output_bfd,
 				 struct bfd_link_info *info,
 				 bfd *input_bfd,
@@ -926,7 +972,7 @@ microblaze_elf_relocate_section (bfd *ou
   Elf_Internal_Rela *rel, *relend;
   int endian = (bfd_little_endian (output_bfd)) ? 0 : 2;
   /* Assume success.  */
-  bfd_boolean ret = TRUE;
+  bool ret = true;
   asection *sreloc;
   bfd_vma *local_got_offsets;
   unsigned int tls_type;
@@ -936,7 +982,7 @@ microblaze_elf_relocate_section (bfd *ou
 
   htab = elf32_mb_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   local_got_offsets = elf_local_got_offsets (input_bfd);
 
@@ -957,7 +1003,7 @@ microblaze_elf_relocate_section (bfd *ou
       const char *sym_name;
       bfd_reloc_status_type r = bfd_reloc_ok;
       const char *errmsg = NULL;
-      bfd_boolean unresolved_reloc = FALSE;
+      bool unresolved_reloc = false;
 
       h = NULL;
       r_type = ELF32_R_TYPE (rel->r_info);
@@ -969,7 +1015,7 @@ microblaze_elf_relocate_section (bfd *ou
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      input_bfd, (int) r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	  continue;
 	}
 
@@ -1019,12 +1065,12 @@ microblaze_elf_relocate_section (bfd *ou
       else
 	{
 	  bfd_vma relocation;
-	  bfd_boolean resolved_to_zero;
+	  bool resolved_to_zero;
 
 	  /* This is a final link.  */
 	  sym = NULL;
 	  sec = NULL;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 
 	  if (r_symndx < symtab_hdr->sh_info)
 	    {
@@ -1042,8 +1088,8 @@ microblaze_elf_relocate_section (bfd *ou
 	  else
 	    {
 	      /* External symbol.  */
-	      bfd_boolean warned ATTRIBUTE_UNUSED;
-	      bfd_boolean ignored ATTRIBUTE_UNUSED;
+	      bool warned ATTRIBUTE_UNUSED;
+	      bool ignored ATTRIBUTE_UNUSED;
 
 	      RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				       r_symndx, symtab_hdr, sym_hashes,
@@ -1080,7 +1126,7 @@ microblaze_elf_relocate_section (bfd *ou
 			  microblaze_elf_final_sdp (info);
 			if (ro_small_data_pointer == 0)
 			  {
-			    ret = FALSE;
+			    ret = false;
 			    r = bfd_reloc_undefined;
 			    goto check_reloc;
 			  }
@@ -1105,7 +1151,7 @@ microblaze_elf_relocate_section (bfd *ou
 			   microblaze_elf_howto_table[(int) r_type]->name,
 			   sec);
 			/*bfd_set_error (bfd_error_bad_value); ??? why? */
-			ret = FALSE;
+			ret = false;
 			continue;
 		      }
 		  }
@@ -1128,7 +1174,7 @@ microblaze_elf_relocate_section (bfd *ou
 			  microblaze_elf_final_sdp (info);
 			if (rw_small_data_pointer == 0)
 			  {
-			    ret = FALSE;
+			    ret = false;
 			    r = bfd_reloc_undefined;
 			    goto check_reloc;
 			  }
@@ -1153,7 +1199,7 @@ microblaze_elf_relocate_section (bfd *ou
 			   microblaze_elf_howto_table[(int) r_type]->name,
 			   sec);
 			/*bfd_set_error (bfd_error_bad_value); ??? why? */
-			ret = FALSE;
+			ret = false;
 			continue;
 		      }
 		  }
@@ -1197,7 +1243,7 @@ microblaze_elf_relocate_section (bfd *ou
 		    relocation = (htab->elf.splt->output_section->vma
 				  + htab->elf.splt->output_offset
 				  + h->plt.offset);
-		    unresolved_reloc = FALSE;
+		    unresolved_reloc = false;
 		    immediate = relocation - (input_section->output_section->vma
 					      + input_section->output_offset
 					      + offset + INST_WORD_SIZE);
@@ -1234,7 +1280,7 @@ microblaze_elf_relocate_section (bfd *ou
 		unsigned long indx;
 		bfd_vma static_value;
 
-		bfd_boolean need_relocs = FALSE;
+		bool need_relocs = false;
 		if (htab->elf.sgot == NULL)
 		  abort ();
 
@@ -1276,7 +1322,7 @@ microblaze_elf_relocate_section (bfd *ou
 		/* Symbol index to use for relocs */
 		if (h != NULL)
 		  {
-		    bfd_boolean dyn =
+		    bool dyn =
 			elf_hash_table (info)->dynamic_sections_created;
 
 		    if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
@@ -1290,10 +1336,10 @@ microblaze_elf_relocate_section (bfd *ou
 		/* Need to generate relocs ? */
 		if ((bfd_link_pic (info) || indx != 0)
 		    && (h == NULL
-		    || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-			&& !resolved_to_zero)
-		    || h->root.type != bfd_link_hash_undefweak))
-		  need_relocs = TRUE;
+			|| (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+			    && !resolved_to_zero)
+			|| h->root.type != bfd_link_hash_undefweak))
+		  need_relocs = true;
 
 		/* 2. Compute/Emit Static value of r-expression */
 		static_value = relocation + addend;
@@ -1399,7 +1445,7 @@ microblaze_elf_relocate_section (bfd *ou
 		bfd_put_16 (input_bfd, relocation & 0xffff,
 			    contents + offset + endian + INST_WORD_SIZE);
 
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 		break;
 	      }
 
@@ -1434,9 +1480,9 @@ microblaze_elf_relocate_section (bfd *ou
 	      relocation += addend;
 	      relocation -= dtprel_base(info);
 	      bfd_put_16 (input_bfd, (relocation >> 16) & 0xffff,
-			  contents + offset + 2);
+			  contents + offset + endian);
 	      bfd_put_16 (input_bfd, relocation & 0xffff,
-			  contents + offset + 2 + INST_WORD_SIZE);
+			  contents + offset + endian + INST_WORD_SIZE);
 	      break;
 	    case (int) R_MICROBLAZE_TEXTREL_64:
 	    case (int) R_MICROBLAZE_TEXTREL_32_LO:
@@ -1498,7 +1544,7 @@ microblaze_elf_relocate_section (bfd *ou
 		  {
 		    Elf_Internal_Rela outrel;
 		    bfd_byte *loc;
-		    bfd_boolean skip;
+		    bool skip;
 
 		    /* When generating a shared object, these relocations
 		       are copied into the output file to be resolved at run
@@ -1506,15 +1552,15 @@ microblaze_elf_relocate_section (bfd *ou
 
 		    BFD_ASSERT (sreloc != NULL);
 
-		    skip = FALSE;
+		    skip = false;
 
 		    outrel.r_offset =
 		      _bfd_elf_section_offset (output_bfd, info, input_section,
 					       rel->r_offset);
 		    if (outrel.r_offset == (bfd_vma) -1)
-		      skip = TRUE;
+		      skip = true;
 		    else if (outrel.r_offset == (bfd_vma) -2)
-		      skip = TRUE;
+		      skip = true;
 		    outrel.r_offset += (input_section->output_section->vma
 					+ input_section->output_offset);
 
@@ -1544,7 +1590,7 @@ microblaze_elf_relocate_section (bfd *ou
 			      (_("%pB: probably compiled without -fPIC?"),
 			       input_bfd);
 			    bfd_set_error (bfd_error_bad_value);
-			    return FALSE;
+			    return false;
 			  }
 		      }
 
@@ -1624,7 +1670,7 @@ microblaze_elf_relocate_section (bfd *ou
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, offset, TRUE);
+		(info, name, input_bfd, input_section, offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -1655,23 +1701,24 @@ microblaze_elf_relocate_section (bfd *ou
 
 /* Calculate fixup value for reference.  */
 
-static int
+static size_t
 calc_fixup (bfd_vma start, bfd_vma size, asection *sec)
 {
   bfd_vma end = start + size;
-  int i, fixup = 0;
+  size_t i, fixup = 0;
+  struct _microblaze_elf_section_data *sdata;
 
-  if (sec == NULL || sec->relax == NULL)
+  if (sec == NULL || (sdata = microblaze_elf_section_data (sec)) == NULL)
     return 0;
 
   /* Look for addr in relax table, total fixup value.  */
-  for (i = 0; i < sec->relax_count; i++)
+  for (i = 0; i < sdata->relax_count; i++)
     {
-      if (end <= sec->relax[i].addr)
+      if (end <= sdata->relax[i].addr)
 	break;
-      if ((end != start) && (start > sec->relax[i].addr))
+      if (end != start && start > sdata->relax[i].addr)
 	continue;
-      fixup += sec->relax[i].size;
+      fixup += sdata->relax[i].size;
     }
   return fixup;
 }
@@ -1706,11 +1753,11 @@ microblaze_bfd_write_imm_value_64 (bfd *
     bfd_put_32 (abfd, instr_lo, bfd_addr + INST_WORD_SIZE);
 }
 
-static bfd_boolean
+static bool
 microblaze_elf_relax_section (bfd *abfd,
 			      asection *sec,
 			      struct bfd_link_info *link_info,
-			      bfd_boolean *again)
+			      bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -1718,27 +1765,28 @@ microblaze_elf_relax_section (bfd *abfd,
   Elf_Internal_Rela *irel, *irelend;
   bfd_byte *contents = NULL;
   bfd_byte *free_contents = NULL;
-  int rel_count;
   unsigned int shndx;
-  int i, sym_index;
+  size_t i, sym_index;
   asection *o;
   struct elf_link_hash_entry *sym_hash;
   Elf_Internal_Sym *isymbuf, *isymend;
   Elf_Internal_Sym *isym;
-  int symcount;
-  int offset;
+  size_t symcount;
+  size_t offset;
   bfd_vma src, dest;
+  struct _microblaze_elf_section_data *sdata;
 
   /* We only do this once per section.  We may be able to delete some code
      by running multiple passes, but it is not worth it.  */
-  *again = FALSE;
+  *again = false;
 
   /* Only do this for a text section.  */
   if (bfd_link_relocatable (link_info)
       || (sec->flags & SEC_RELOC) == 0
-      || (sec->reloc_count == 0)
-      || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+      || (sec->flags & SEC_CODE) == 0
+      || sec->reloc_count == 0
+      || (sdata = microblaze_elf_section_data (sec)) == NULL)
+    return true;
 
   BFD_ASSERT ((sec->size > 0) || (sec->rawsize > 0));
 
@@ -1762,15 +1810,14 @@ microblaze_elf_relax_section (bfd *abfd,
   if (! link_info->keep_memory)
     free_relocs = internal_relocs;
 
-  sec->relax = (struct relax_table *) bfd_malloc ((sec->reloc_count + 1)
-						  * sizeof (struct relax_table));
-  if (sec->relax == NULL)
+  sdata->relax_count = 0;
+  sdata->relax = (struct relax_table *) bfd_malloc ((sec->reloc_count + 1)
+						    * sizeof (*sdata->relax));
+  if (sdata->relax == NULL)
     goto error_return;
-  sec->relax_count = 0;
 
   irelend = internal_relocs + sec->reloc_count;
-  rel_count = 0;
-  for (irel = internal_relocs; irel < irelend; irel++, rel_count++)
+  for (irel = internal_relocs; irel < irelend; irel++)
     {
       bfd_vma symval;
       if ((ELF32_R_TYPE (irel->r_info) != (int) R_MICROBLAZE_64_PCREL)
@@ -1856,9 +1903,9 @@ microblaze_elf_relax_section (bfd *abfd,
 	  || (symval & 0xffff8000) == 0xffff8000)
 	{
 	  /* We can delete this instruction.  */
-	  sec->relax[sec->relax_count].addr = irel->r_offset;
-	  sec->relax[sec->relax_count].size = INST_WORD_SIZE;
-	  sec->relax_count++;
+	  sdata->relax[sdata->relax_count].addr = irel->r_offset;
+	  sdata->relax[sdata->relax_count].size = INST_WORD_SIZE;
+	  sdata->relax_count++;
 
 	  /* Rewrite relocation type.  */
 	  switch ((enum elf_microblaze_reloc_type) ELF32_R_TYPE (irel->r_info))
@@ -1877,19 +1924,18 @@ microblaze_elf_relax_section (bfd *abfd,
 	      break;
 	    default:
 	      /* Cannot happen.  */
-	      BFD_ASSERT (FALSE);
+	      BFD_ASSERT (false);
 	    }
 	}
     } /* Loop through all relocations.  */
 
   /* Loop through the relocs again, and see if anything needs to change.  */
-  if (sec->relax_count > 0)
+  if (sdata->relax_count > 0)
     {
       shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
-      rel_count = 0;
-      sec->relax[sec->relax_count].addr = sec->size;
+      sdata->relax[sdata->relax_count].addr = sec->size;
 
-      for (irel = internal_relocs; irel < irelend; irel++, rel_count++)
+      for (irel = internal_relocs; irel < irelend; irel++)
 	{
 	  bfd_vma nraddr;
 
@@ -1918,10 +1964,11 @@ microblaze_elf_relax_section (bfd *abfd,
 		}
 	      break;
 	    case R_MICROBLAZE_NONE:
+	    case R_MICROBLAZE_32_NONE:
 	      {
 		/* This was a PC-relative instruction that was
 		   completely resolved.  */
-		int sfix, efix;
+		size_t sfix, efix;
 		bfd_vma target_address;
 		target_address = irel->r_addend + irel->r_offset;
 		sfix = calc_fixup (irel->r_offset, 0, sec);
@@ -1936,7 +1983,7 @@ microblaze_elf_relax_section (bfd *abfd,
 	      {
 		/* This was a PC-relative 64-bit instruction that was
 		   completely resolved.  */
-		int sfix, efix;
+		size_t sfix, efix;
 		bfd_vma target_address;
 		target_address = irel->r_addend + irel->r_offset + INST_WORD_SIZE;
 		sfix = calc_fixup (irel->r_offset + INST_WORD_SIZE, 0, sec);
@@ -1965,7 +2012,7 @@ microblaze_elf_relax_section (bfd *abfd,
 	  /* We always cache the relocs.  Perhaps, if info->keep_memory is
 	     FALSE, we should free them, if we are permitted to.  */
 
-	  irelocs = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, TRUE);
+	  irelocs = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, true);
 	  if (irelocs == NULL)
 	    goto error_return;
 
@@ -1973,7 +2020,8 @@ microblaze_elf_relax_section (bfd *abfd,
 	  irelscanend = irelocs + o->reloc_count;
 	  for (irelscan = irelocs; irelscan < irelscanend; irelscan++)
 	    {
-	      if (ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_32)
+	      if ((ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_32)
+		  || (ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_32_NONE))
 		{
 		  isym = isymbuf + ELF32_R_SYM (irelscan->r_info);
 
@@ -2032,7 +2080,7 @@ microblaze_elf_relax_section (bfd *abfd,
 			      elf_section_data (o)->this_hdr.contents = ocontents;
 			    }
 			}
-		      irelscan->r_addend -= calc_fixup (irel->r_addend
+		      irelscan->r_addend -= calc_fixup (irelscan->r_addend
 							+ isym->st_value,
 							0,
 							sec);
@@ -2040,9 +2088,9 @@ microblaze_elf_relax_section (bfd *abfd,
 		}
 	      else if ((ELF32_R_TYPE (irelscan->r_info) == (int) R_MICROBLAZE_32_PCREL_LO)
 		       || (ELF32_R_TYPE (irelscan->r_info)
-				   == (int) R_MICROBLAZE_32_LO)
+			   == (int) R_MICROBLAZE_32_LO)
 		       || (ELF32_R_TYPE (irelscan->r_info)
-				   == (int) R_MICROBLAZE_TEXTREL_32_LO))
+			   == (int) R_MICROBLAZE_TEXTREL_32_LO))
 		{
 		  isym = isymbuf + ELF32_R_SYM (irelscan->r_info);
 
@@ -2096,8 +2144,6 @@ microblaze_elf_relax_section (bfd *abfd,
 		  if (isym->st_shndx == shndx
 		      && (ELF32_ST_TYPE (isym->st_info) == STT_SECTION))
 		    {
-		      bfd_vma immediate;
-
 		      if (ocontents == NULL)
 			{
 			  if (elf_section_data (o)->this_hdr.contents != NULL)
@@ -2120,15 +2166,7 @@ microblaze_elf_relax_section (bfd *abfd,
 			      elf_section_data (o)->this_hdr.contents = ocontents;
 			    }
 			}
-	  unsigned long instr_hi =  bfd_get_32 (abfd, ocontents
-						+ irelscan->r_offset);
-	  unsigned long instr_lo =  bfd_get_32 (abfd, ocontents
-						+ irelscan->r_offset
-						+ INST_WORD_SIZE);
-	  immediate = (instr_hi & 0x0000ffff) << 16;
-	  immediate |= (instr_lo & 0x0000ffff);
 		      offset = calc_fixup (irelscan->r_addend, 0, sec);
-		      immediate -= offset;
 		      irelscan->r_addend -= offset;
 		    }
 		}
@@ -2213,15 +2251,16 @@ microblaze_elf_relax_section (bfd *abfd,
 	}
 
       /* Physically move the code and change the cooked size.  */
-      dest = sec->relax[0].addr;
-      for (i = 0; i < sec->relax_count; i++)
+      dest = sdata->relax[0].addr;
+      for (i = 0; i < sdata->relax_count; i++)
 	{
-	  int len;
-	  src = sec->relax[i].addr + sec->relax[i].size;
-	  len = sec->relax[i+1].addr - sec->relax[i].addr - sec->relax[i].size;
+	  size_t len;
+	  src = sdata->relax[i].addr + sdata->relax[i].size;
+	  len = (sdata->relax[i+1].addr - sdata->relax[i].addr
+		 - sdata->relax[i].size);
 
 	  memmove (contents + dest, contents + src, len);
-	  sec->size -= sec->relax[i].size;
+	  sec->size -= sdata->relax[i].size;
 	  dest += len;
 	}
 
@@ -2234,11 +2273,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)
     {
@@ -2250,28 +2286,23 @@ microblaze_elf_relax_section (bfd *abfd,
       free_contents = NULL;
     }
 
-  if (sec->relax_count == 0)
+  if (sdata->relax_count == 0)
     {
-      *again = FALSE;
-      free (sec->relax);
-      sec->relax = NULL;
+      *again = false;
+      free (sdata->relax);
+      sdata->relax = NULL;
     }
   else
-    *again = TRUE;
-  return TRUE;
+    *again = true;
+  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;
-    }
-  return FALSE;
+  free (free_relocs);
+  free (free_contents);
+  free (sdata->relax);
+  sdata->relax = NULL;
+  sdata->relax_count = 0;
+  return false;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -2305,7 +2336,7 @@ microblaze_elf_gc_mark_hook (asection *s
 #define PLT_ENTRY_WORD_2  0x98186000	      /* "brad r12".  */
 #define PLT_ENTRY_WORD_3  0x80000000	      /* "nop".  */
 
-static bfd_boolean
+static bool
 update_local_sym_info (bfd *abfd,
 		       Elf_Internal_Shdr *symtab_hdr,
 		       unsigned long r_symndx,
@@ -2321,7 +2352,7 @@ update_local_sym_info (bfd *abfd,
       size *= (sizeof (*local_got_refcounts) + sizeof (*local_got_tls_masks));
       local_got_refcounts = bfd_zalloc (abfd, size);
       if (local_got_refcounts == NULL)
-	return FALSE;
+	return false;
       elf_local_got_refcounts (abfd) = local_got_refcounts;
     }
 
@@ -2330,11 +2361,11 @@ update_local_sym_info (bfd *abfd,
   local_got_tls_masks[r_symndx] |= tls_type;
   local_got_refcounts[r_symndx] += 1;
 
-  return TRUE;
+  return true;
 }
 /* Look through the relocs for a section during the first phase.  */
 
-static bfd_boolean
+static bool
 microblaze_elf_check_relocs (bfd * abfd,
 			     struct bfd_link_info * info,
 			     asection * sec,
@@ -2342,24 +2373,20 @@ microblaze_elf_check_relocs (bfd * abfd,
 {
   Elf_Internal_Shdr *		symtab_hdr;
   struct elf_link_hash_entry ** sym_hashes;
-  struct elf_link_hash_entry ** sym_hashes_end;
   const Elf_Internal_Rela *	rel;
   const Elf_Internal_Rela *	rel_end;
   struct elf32_mb_link_hash_table *htab;
   asection *sreloc = NULL;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = elf32_mb_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   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);
-  if (!elf_bad_symtab (abfd))
-    sym_hashes_end -= symtab_hdr->sh_info;
 
   rel_end = relocs + sec->reloc_count;
 
@@ -2389,14 +2416,14 @@ microblaze_elf_check_relocs (bfd * abfd,
 	     Reconstruct it for later use during GC.  */
 	case R_MICROBLAZE_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_MICROBLAZE_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation requires .plt entry.  */
@@ -2424,7 +2451,7 @@ microblaze_elf_check_relocs (bfd * abfd,
 	      if (htab->elf.dynobj == NULL)
 		htab->elf.dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	  if (h != NULL)
 	    {
@@ -2434,7 +2461,7 @@ microblaze_elf_check_relocs (bfd * abfd,
 	  else
 	    {
 	      if (! update_local_sym_info(abfd, symtab_hdr, r_symndx, tls_type) )
-		return FALSE;
+		return false;
 	    }
 	  break;
 
@@ -2445,7 +2472,7 @@ microblaze_elf_check_relocs (bfd * abfd,
 	      if (htab->elf.dynobj == NULL)
 		htab->elf.dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	  break;
 
@@ -2518,13 +2545,13 @@ microblaze_elf_check_relocs (bfd * abfd,
 		    sreloc = _bfd_elf_make_dynamic_reloc_section (sec, dynobj,
 								  2, abfd, 1);
 		    if (sreloc == NULL)
-		      return FALSE;
+		      return false;
 		  }
 
 		/* 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,14 +2562,14 @@ 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;
+		      return false;
 
 		    s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		    if (s == NULL)
-		      return FALSE;
+		      return false;
 
 		    vpp = &elf_section_data (s)->local_dynrel;
 		    head = (struct elf_dyn_relocs **) vpp;
@@ -2551,11 +2578,11 @@ 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)
-		      return FALSE;
+		      return false;
 		    p->next = *head;
 		    *head = p;
 		    p->sec = sec;
@@ -2572,7 +2599,7 @@ microblaze_elf_check_relocs (bfd * abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -2587,63 +2614,12 @@ 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
+static bool
 microblaze_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				      struct elf_link_hash_entry *h)
 {
@@ -2653,7 +2629,7 @@ microblaze_elf_adjust_dynamic_symbol (st
 
   htab = elf32_mb_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* If this is a function, put it in the procedure linkage table.  We
      will fill in the contents of the procedure linkage table later,
@@ -2675,7 +2651,7 @@ microblaze_elf_adjust_dynamic_symbol (st
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     /* It's possible that we incorrectly decided a .plt reloc was
@@ -2694,7 +2670,7 @@ microblaze_elf_adjust_dynamic_symbol (st
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2705,26 +2681,26 @@ microblaze_elf_adjust_dynamic_symbol (st
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -2764,11 +2740,8 @@ microblaze_elf_adjust_dynamic_symbol (st
 
   /* Apply the required alignment.  */
   s->size = BFD_ALIGN (s->size, (bfd_size_type) (1 << power_of_two));
-  if (power_of_two > s->alignment_power)
-    {
-      if (!bfd_set_section_alignment (s, power_of_two))
-	return FALSE;
-    }
+  if (!bfd_link_align_section (s, power_of_two))
+    return false;
 
   /* Define the symbol as being at this point in the section.  */
   h->root.u.def.section = s;
@@ -2776,13 +2749,13 @@ microblaze_elf_adjust_dynamic_symbol (st
 
   /* Increment the section size to make room for the symbol.  */
   s->size += h->size;
-  return TRUE;
+  return true;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void * dat)
 {
   struct bfd_link_info *info;
@@ -2791,12 +2764,12 @@ allocate_dynrelocs (struct elf_link_hash
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) dat;
   htab = elf32_mb_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (htab->elf.dynamic_sections_created
       && h->plt.refcount > 0)
@@ -2807,7 +2780,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
@@ -2866,7 +2839,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       need = 0;
@@ -2906,8 +2879,8 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -2923,7 +2896,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 +2907,7 @@ allocate_dynrelocs (struct elf_link_hash
 	    }
 	}
       else if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	eh->dyn_relocs = NULL;
+	h->dyn_relocs = NULL;
     }
   else
     {
@@ -2955,7 +2928,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -2964,26 +2937,26 @@ 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);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-microblaze_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				      struct bfd_link_info *info)
+static bool
+microblaze_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+				   struct bfd_link_info *info)
 {
   struct elf32_mb_link_hash_table *htab;
   bfd *dynobj;
@@ -2992,10 +2965,11 @@ microblaze_elf_size_dynamic_sections (bf
 
   htab = elf32_mb_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->elf.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   /* Set up .got offsets for local syms, and space for local dynamic
      relocs.  */
@@ -3108,7 +3082,7 @@ microblaze_elf_size_dynamic_sections (bf
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
-      bfd_boolean strip = FALSE;
+      bool strip = false;
 
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
@@ -3117,7 +3091,7 @@ microblaze_elf_size_dynamic_sections (bf
 	 of the dynobj section names depend upon the input files.  */
       name = bfd_section_name (s);
 
-      if (strncmp (name, ".rela", 5) == 0)
+      if (startswith (name, ".rela"))
 	{
 	  if (s->size == 0)
 	    {
@@ -3130,7 +3104,7 @@ microblaze_elf_size_dynamic_sections (bf
 		 adjust_dynamic_symbol is called, and it is that
 		 function which decides whether anything needs to go
 		 into these sections.  */
-	      strip = TRUE;
+	      strip = true;
 	    }
 	  else
 	    {
@@ -3163,54 +3137,19 @@ microblaze_elf_size_dynamic_sections (bf
 	 contents to zero.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL && s->size != 0)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
-  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
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 microblaze_elf_finish_dynamic_symbol (bfd *output_bfd,
 				      struct bfd_link_info *info,
 				      struct elf_link_hash_entry *h,
@@ -3220,8 +3159,6 @@ microblaze_elf_finish_dynamic_symbol (bf
   struct elf32_mb_link_hash_entry *eh = elf32_mb_hash_entry(h);
 
   htab = elf32_mb_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   if (h->plt.offset != (bfd_vma) -1)
     {
@@ -3290,9 +3227,9 @@ microblaze_elf_finish_dynamic_symbol (bf
     }
 
   /* h->got.refcount to be checked ? */
-  if (h->got.offset != (bfd_vma) -1 &&
-      ! ((h->got.offset & 1) ||
-	  IS_TLS_LD(eh->tls_mask) || IS_TLS_GD(eh->tls_mask)))
+  if ((h->got.offset != (bfd_vma) -1)
+      && ! ((h->got.offset & 1)
+	    || IS_TLS_LD(eh->tls_mask) || IS_TLS_GD(eh->tls_mask)))
     {
       asection *sgot;
       asection *srela;
@@ -3375,13 +3312,13 @@ microblaze_elf_finish_dynamic_symbol (bf
       || h == htab->elf.hplt)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 microblaze_elf_finish_dynamic_sections (bfd *output_bfd,
 					struct bfd_link_info *info)
 {
@@ -3391,7 +3328,7 @@ microblaze_elf_finish_dynamic_sections (
 
   htab = elf32_mb_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->elf.dynobj;
 
@@ -3408,7 +3345,7 @@ microblaze_elf_finish_dynamic_sections (
 	{
 	  Elf_Internal_Dyn dyn;
 	  asection *s;
-	  bfd_boolean size;
+	  bool size;
 
 	  bfd_elf32_swap_dyn_in (dynobj, dyncon, &dyn);
 
@@ -3416,17 +3353,17 @@ microblaze_elf_finish_dynamic_sections (
 	    {
 	    case DT_PLTGOT:
 	      s = htab->elf.sgotplt;
-	      size = FALSE;
+	      size = false;
 	      break;
 
 	    case DT_PLTRELSZ:
 	      s = htab->elf.srelplt;
-	      size = TRUE;
+	      size = true;
 	      break;
 
 	    case DT_JMPREL:
 	      s = htab->elf.srelplt;
-	      size = FALSE;
+	      size = false;
 	      break;
 
 	    default:
@@ -3478,13 +3415,13 @@ microblaze_elf_finish_dynamic_sections (
   if (htab->elf.sgot && htab->elf.sgot->size > 0)
     elf_section_data (htab->elf.sgot->output_section)->this_hdr.sh_entsize = 4;
 
-  return TRUE;
+  return true;
 }
 
 /* Hook called by the linker routine which adds symbols from an object
    file.  We use it to put .comm items in .sbss, and not .bss.  */
 
-static bfd_boolean
+static bool
 microblaze_elf_add_symbol_hook (bfd *abfd,
 				struct bfd_link_info *info,
 				Elf_Internal_Sym *sym,
@@ -3501,13 +3438,13 @@ 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))
-	return FALSE;
+	  || !bfd_set_section_flags (*secp, SEC_IS_COMMON | SEC_SMALL_DATA))
+	return false;
 
       *valp = sym->st_size;
     }
 
-  return TRUE;
+  return true;
 }
 
 #define TARGET_LITTLE_SYM      microblaze_elf32_le_vec
@@ -3526,6 +3463,7 @@ microblaze_elf_add_symbol_hook (bfd *abf
 
 #define bfd_elf32_bfd_reloc_type_lookup		microblaze_elf_reloc_type_lookup
 #define bfd_elf32_bfd_is_local_label_name	microblaze_elf_is_local_label_name
+#define bfd_elf32_new_section_hook		microblaze_elf_new_section_hook
 #define elf_backend_relocate_section		microblaze_elf_relocate_section
 #define bfd_elf32_bfd_relax_section		microblaze_elf_relax_section
 #define bfd_elf32_bfd_merge_private_bfd_data	_bfd_generic_verify_endian_match
@@ -3548,7 +3486,7 @@ microblaze_elf_add_symbol_hook (bfd *abf
 #define elf_backend_create_dynamic_sections	_bfd_elf_create_dynamic_sections
 #define elf_backend_finish_dynamic_sections	microblaze_elf_finish_dynamic_sections
 #define elf_backend_finish_dynamic_symbol	microblaze_elf_finish_dynamic_symbol
-#define elf_backend_size_dynamic_sections	microblaze_elf_size_dynamic_sections
+#define elf_backend_late_size_sections		microblaze_elf_late_size_sections
 #define elf_backend_add_symbol_hook		microblaze_elf_add_symbol_hook
 
 #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.20200303/bfd/elf32-mips.c ./bfd/elf32-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-mips.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-mips.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS-specific support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    Most of the information added by Ian Lance Taylor, Cygnus Support,
    <ian@cygnus.com>.
@@ -50,32 +50,34 @@
 #include "ecoffswap.h"
 
 static bfd_reloc_status_type gprel32_with_gp
-  (bfd *, asymbol *, arelent *, asection *, bfd_boolean, void *, bfd_vma);
+  (bfd *, asymbol *, arelent *, asection *, bool, void *, bfd_vma);
 static bfd_reloc_status_type mips_elf_gprel32_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips32_64bit_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean mips_info_to_howto_rel
+static bool mips_info_to_howto_rel
   (bfd *, arelent *, Elf_Internal_Rela *);
-static bfd_boolean mips_info_to_howto_rela
+static bool mips_info_to_howto_rela
   (bfd *, arelent *, Elf_Internal_Rela *);
-static bfd_boolean mips_elf_sym_is_global
+static bool mips_elf_sym_is_global
   (bfd *, asymbol *);
-static bfd_boolean mips_elf32_object_p
+static bool mips_elf32_elfsym_local_is_section
   (bfd *);
-static bfd_boolean mips_elf_is_local_label_name
+static bool mips_elf32_object_p
+  (bfd *);
+static bool mips_elf_is_local_label_name
   (bfd *, const char *);
 static bfd_reloc_status_type mips16_gprel_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips_elf_final_gp
-  (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *);
-static bfd_boolean mips_elf_assign_gp
+  (bfd *, asymbol *, bool, char **, bfd_vma *);
+static bool mips_elf_assign_gp
   (bfd *, bfd_vma *);
-static bfd_boolean elf32_mips_grok_prstatus
+static bool elf32_mips_grok_prstatus
   (bfd *, Elf_Internal_Note *);
-static bfd_boolean elf32_mips_grok_psinfo
+static bool elf32_mips_grok_psinfo
   (bfd *, Elf_Internal_Note *);
 static irix_compat_t elf32_mips_irix_compat
   (bfd *);
@@ -105,69 +107,69 @@ static reloc_howto_type elf_mips_howto_t
   /* No relocation.  */
   HOWTO (R_MIPS_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit relocation.  */
   HOWTO (R_MIPS_16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation.  */
   HOWTO (R_MIPS_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit symbol relative relocation.  */
   HOWTO (R_MIPS_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_REL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 26 bit jump address.  */
   HOWTO (R_MIPS_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -175,132 +177,132 @@ static reloc_howto_type elf_mips_howto_t
 				   bits must match the PC + 4.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03ffffff,		/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MIPS_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_HI16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MIPS_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_LO16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MIPS_GPREL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MIPS_LITERAL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MIPS_GOT16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MIPS_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit PC relative reference.  Note that the ABI document has a typo
      and claims R_MIPS_PC16 to be not rightshifted, rendering it useless.
      We do the right thing here.  */
   HOWTO (R_MIPS_PC16,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MIPS_CALL16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit GP relative reference.  */
   HOWTO (R_MIPS_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 mips_elf_gprel32_reloc, /* special_function */
 	 "R_MIPS_GPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The remaining relocs are defined on Irix 5, although they are
      not defined by the ABI.  */
@@ -311,139 +313,139 @@ static reloc_howto_type elf_mips_howto_t
   /* A 5 bit shift field.  */
   HOWTO (R_MIPS_SHIFT5,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 5,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SHIFT5",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000007c0,		/* src_mask */
 	 0x000007c0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 6 bit shift field.  */
   /* FIXME: This is not handled correctly; a special function is
      needed to put the most significant bit in the right place.  */
   HOWTO (R_MIPS_SHIFT6,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SHIFT6",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000007c4,		/* src_mask */
 	 0x000007c4,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 64 bit relocation.  */
   HOWTO (R_MIPS_64,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 mips32_64bit_reloc,	/* special_function */
 	 "R_MIPS_64",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement in the global offset table.  */
   HOWTO (R_MIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_DISP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_PAGE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_OFST",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  Used in the N32 ABI.  */
   HOWTO (R_MIPS_SUB,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SUB",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Used to cause the linker to insert and delete instructions?  */
   EMPTY_HOWTO (R_MIPS_INSERT_A),
@@ -452,78 +454,78 @@ static reloc_howto_type elf_mips_howto_t
 
   /* Get the higher value of a 64 bit addend.  */
   HOWTO (R_MIPS_HIGHER,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_HIGHER",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the highest value of a 64 bit addend.  */
   HOWTO (R_MIPS_HIGHEST,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 48,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_HIGHEST",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement.  */
   HOWTO (R_MIPS_SCN_DISP,       /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SCN_DISP",     /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (R_MIPS_REL16),
   EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE),
@@ -534,46 +536,46 @@ static reloc_howto_type elf_mips_howto_t
      relocation is required for correctness.  */
   HOWTO (R_MIPS_JALR,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_JALR",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS GD/LD dynamic relocations.  */
   HOWTO (R_MIPS_TLS_DTPMOD32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPMOD32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MIPS_TLS_DTPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (R_MIPS_TLS_DTPMOD64),
   EMPTY_HOWTO (R_MIPS_TLS_DTPREL64),
@@ -581,139 +583,139 @@ static reloc_howto_type elf_mips_howto_t
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS IE dynamic relocations.  */
   HOWTO (R_MIPS_TLS_TPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (R_MIPS_TLS_TPREL64),
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation with no addend.  */
   HOWTO (R_MIPS_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (52),
   EMPTY_HOWTO (53),
@@ -726,87 +728,87 @@ static reloc_howto_type elf_mips_howto_t
 
   HOWTO (R_MIPS_PC21_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC21_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x001fffff,		/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC26_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC26_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03ffffff,		/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC18_S3,	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 18,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC18_S3",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0003ffff,		/* src_mask */
 	 0x0003ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC19_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC19_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0007ffff,		/* src_mask */
 	 0x0007ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCHI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc,   /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_PCHI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCLO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc,   /* special_function */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_PCLO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 /* The reloc used for BFD_RELOC_CTOR when doing a 64 bit link.  This
@@ -814,26 +816,26 @@ static reloc_howto_type elf_mips_howto_t
 static reloc_howto_type elf_mips_ctor64_howto =
   HOWTO (R_MIPS_64,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips32_64bit_reloc,	/* special_function */
 	 "R_MIPS_64",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 static reloc_howto_type elf_mips16_howto_table_rel[] =
 {
   /* The reloc used for the mips16 jump instruction.  */
   HOWTO (R_MIPS16_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -841,205 +843,205 @@ static reloc_howto_type elf_mips16_howto
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x3ffffff,		/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The reloc used for the mips16 gprel instruction.  */
   HOWTO (R_MIPS16_GPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips16_gprel_reloc,	/* special_function */
 	 "R_MIPS16_GPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 reference to the global offset table.  */
   HOWTO (R_MIPS16_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MIPS16_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 call through the global offset table.  */
   HOWTO (R_MIPS16_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 high 16 bits of symbol value.  */
   HOWTO (R_MIPS16_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 low 16 bits of symbol value.  */
   HOWTO (R_MIPS16_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS general dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_GD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 16-bit PC-relative branch offset.  */
   HOWTO (R_MIPS16_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_PC16_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 static reloc_howto_type elf_micromips_howto_table_rel[] =
@@ -1051,9 +1053,9 @@ static reloc_howto_type elf_micromips_ho
   /* 26 bit jump address.  */
   HOWTO (R_MICROMIPS_26_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -1061,143 +1063,143 @@ static reloc_howto_type elf_micromips_ho
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_26_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x3ffffff,		/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MICROMIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MICROMIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_LITERAL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MICROMIPS_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MICROMIPS_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This is for microMIPS branches.  */
   HOWTO (R_MICROMIPS_PC7_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC7_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000007f,		/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC10_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC10_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000003ff,		/* src_mask */
 	 0x000003ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC16_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MICROMIPS_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (143),
   EMPTY_HOWTO (144),
@@ -1205,199 +1207,199 @@ static reloc_howto_type elf_micromips_ho
   /* Displacement in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_DISP",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_PAGE",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_OFST",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_HI16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  Used in the N32 ABI.  */
   HOWTO (R_MICROMIPS_SUB,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SUB",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the higher value of a 64 bit addend.  */
   HOWTO (R_MICROMIPS_HIGHER,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HIGHER",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the highest value of a 64 bit addend.  */
   HOWTO (R_MICROMIPS_HIGHEST,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 48,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HIGHEST",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_HI16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement.  */
   HOWTO (R_MICROMIPS_SCN_DISP,  /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SCN_DISP",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MICROMIPS_JALR,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_JALR",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  Note that the high 16 bits of symbol values
      must be zero.  This is used for relaxation.  */
   HOWTO (R_MICROMIPS_HI0_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HI0_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (158),
   EMPTY_HOWTO (159),
@@ -1407,158 +1409,158 @@ static reloc_howto_type elf_micromips_ho
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (167),
   EMPTY_HOWTO (168),
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (171),
 
   /* GP- and PC-relative relocations.  */
   HOWTO (R_MICROMIPS_GPREL7_S2,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL7_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000007f,		/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC23_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 23,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC23_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fffff,		/* src_mask */
 	 0x007fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 /* 16 bit offset for pc-relative branches.  */
 static reloc_howto_type elf_mips_gnu_rel16_s2 =
   HOWTO (R_MIPS_GNU_REL16_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GNU_REL16_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE);			/* pcrel_offset */
+	 true);			/* pcrel_offset */
 
 /* 32 bit pc-relative.  This was a GNU extension used by embedded-PIC.
    It was co-opted by mips-linux for exception-handling data.  GCC stopped
@@ -1567,49 +1569,49 @@ static reloc_howto_type elf_mips_gnu_rel
 static reloc_howto_type elf_mips_gnu_pcrel32 =
   HOWTO (R_MIPS_PC32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE);			/* pcrel_offset */
+	 true);			/* pcrel_offset */
 
 /* GNU extension to record C++ vtable hierarchy */
 static reloc_howto_type elf_mips_gnu_vtinherit_howto =
   HOWTO (R_MIPS_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MIPS_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* GNU extension to record C++ vtable member usage */
 static reloc_howto_type elf_mips_gnu_vtentry_howto =
   HOWTO (R_MIPS_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_MIPS_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Originally a VxWorks extension, but now used for other systems too.  */
 static reloc_howto_type elf_mips_copy_howto =
@@ -1617,52 +1619,52 @@ static reloc_howto_type elf_mips_copy_ho
 	 0,			/* rightshift */
 	 0,			/* this one is variable size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Originally a VxWorks extension, but now used for other systems too.  */
 static reloc_howto_type elf_mips_jump_slot_howto =
   HOWTO (R_MIPS_JUMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_JUMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Used in EH tables.  */
 static reloc_howto_type elf_mips_eh_howto =
   HOWTO (R_MIPS_EH,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_EH",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
    dangerous relocation.  */
 
-static bfd_boolean
+static bool
 mips_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp)
 {
   unsigned int count;
@@ -1672,7 +1674,7 @@ mips_elf_assign_gp (bfd *output_bfd, bfd
   /* If we've already figured out what GP will be, just return it.  */
   *pgp = _bfd_get_gp_value (output_bfd);
   if (*pgp)
-    return TRUE;
+    return true;
 
   count = bfd_get_symcount (output_bfd);
   sym = bfd_get_outsymbols (output_bfd);
@@ -1702,10 +1704,10 @@ mips_elf_assign_gp (bfd *output_bfd, bfd
       /* Only get the error once.  */
       *pgp = 4;
       _bfd_set_gp_value (output_bfd, *pgp);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We have to figure out the gp value, so that we can adjust the
@@ -1715,11 +1717,10 @@ mips_elf_assign_gp (bfd *output_bfd, bfd
    external symbol if we are producing relocatable output.  */
 
 static bfd_reloc_status_type
-mips_elf_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable,
+mips_elf_final_gp (bfd *output_bfd, asymbol *symbol, bool relocatable,
 		   char **error_message, bfd_vma *pgp)
 {
-  if (bfd_is_und_section (symbol->section)
-      && ! relocatable)
+  if (output_bfd == NULL)
     {
       *pgp = 0;
       return bfd_reloc_undefined;
@@ -1759,7 +1760,7 @@ _bfd_mips_elf32_gprel16_reloc (bfd *abfd
 			       asection *input_section, bfd *output_bfd,
 			       char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_byte *location;
   bfd_vma gp;
@@ -1777,11 +1778,11 @@ _bfd_mips_elf32_gprel16_reloc (bfd *abfd
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      output_bfd = input_section->output_section->owner;
     }
 
   ret = mips_elf_final_gp (output_bfd, symbol, relocatable, error_message,
@@ -1789,8 +1790,12 @@ _bfd_mips_elf32_gprel16_reloc (bfd *abfd
   if (ret != bfd_reloc_ok)
     return ret;
 
+  if (!_bfd_mips_reloc_offset_in_range (abfd, input_section, reloc_entry,
+					check_shuffle))
+    return bfd_reloc_outofrange;
+
   location = (bfd_byte *) data + reloc_entry->address;
-  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, FALSE,
+  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, false,
 				 location);
   ret = _bfd_mips_elf_gprel16_with_gp (abfd, symbol, reloc_entry,
 				       input_section, relocatable,
@@ -1809,7 +1814,7 @@ mips_elf_gprel32_reloc (bfd *abfd, arele
 			void *data, asection *input_section, bfd *output_bfd,
 			char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -1824,11 +1829,11 @@ mips_elf_gprel32_reloc (bfd *abfd, arele
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      output_bfd = input_section->output_section->owner;
     }
 
   ret = mips_elf_final_gp (output_bfd, symbol, relocatable,
@@ -1842,7 +1847,7 @@ mips_elf_gprel32_reloc (bfd *abfd, arele
 
 static bfd_reloc_status_type
 gprel32_with_gp (bfd *abfd, asymbol *symbol, arelent *reloc_entry,
-		 asection *input_section, bfd_boolean relocatable,
+		 asection *input_section, bool relocatable,
 		 void *data, bfd_vma gp)
 {
   bfd_vma relocation;
@@ -1853,10 +1858,14 @@ gprel32_with_gp (bfd *abfd, asymbol *sym
   else
     relocation = symbol->value;
 
-  relocation += symbol->section->output_section->vma;
-  relocation += symbol->section->output_offset;
+  if (symbol->section->output_section != NULL)
+    {
+      relocation += symbol->section->output_section->vma;
+      relocation += symbol->section->output_offset;
+    }
 
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!_bfd_mips_reloc_offset_in_range (abfd, input_section, reloc_entry,
+					check_inplace))
     return bfd_reloc_outofrange;
 
   /* Set val to the offset into the section or symbol.  */
@@ -1927,7 +1936,7 @@ mips16_gprel_reloc (bfd *abfd, arelent *
 		    void *data, asection *input_section, bfd *output_bfd,
 		    char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_byte *location;
   bfd_vma gp;
@@ -1943,11 +1952,11 @@ mips16_gprel_reloc (bfd *abfd, arelent *
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      output_bfd = input_section->output_section->owner;
     }
 
   ret = mips_elf_final_gp (output_bfd, symbol, relocatable, error_message,
@@ -1955,8 +1964,12 @@ mips16_gprel_reloc (bfd *abfd, arelent *
   if (ret != bfd_reloc_ok)
     return ret;
 
+  if (!_bfd_mips_reloc_offset_in_range (abfd, input_section, reloc_entry,
+					check_shuffle))
+    return bfd_reloc_outofrange;
+
   location = (bfd_byte *) data + reloc_entry->address;
-  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, FALSE,
+  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, false,
 				 location);
   ret = _bfd_mips_elf_gprel16_with_gp (abfd, symbol, reloc_entry,
 				       input_section, relocatable,
@@ -1977,7 +1990,7 @@ struct elf_reloc_map {
 static const struct elf_reloc_map mips_reloc_map[] =
 {
   { BFD_RELOC_NONE, R_MIPS_NONE },
-  { BFD_RELOC_16, R_MIPS_16 },
+  { BFD_RELOC_MIPS_16, R_MIPS_16 },
   { BFD_RELOC_32, R_MIPS_32 },
   /* There is no BFD reloc for R_MIPS_REL32.  */
   { BFD_RELOC_64, R_MIPS_64 },
@@ -2122,8 +2135,8 @@ bfd_elf32_bfd_reloc_type_lookup (bfd *ab
       /* We need to handle BFD_RELOC_CTOR specially.
 	 Select the right relocation (R_MIPS_32 or R_MIPS_64) based on the
 	 size of addresses of the ABI.  */
-      if ((elf_elfheader (abfd)->e_flags & (E_MIPS_ABI_O64
-					    | E_MIPS_ABI_EABI64)) != 0)
+      if ((elf_elfheader (abfd)->e_flags & (EF_MIPS_ABI_O64
+					    | EF_MIPS_ABI_EABI64)) != 0)
 	return &elf_mips_ctor64_howto;
       else
 	return &howto_table[(int) R_MIPS_32];
@@ -2196,7 +2209,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 static reloc_howto_type *
 mips_elf32_rtype_to_howto (bfd *abfd,
 			   unsigned int r_type,
-			   bfd_boolean rela_p ATTRIBUTE_UNUSED)
+			   bool rela_p ATTRIBUTE_UNUSED)
 {
   reloc_howto_type *howto = NULL;
 
@@ -2235,16 +2248,16 @@ mips_elf32_rtype_to_howto (bfd *abfd,
 
 /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure.  */
 
-static bfd_boolean
+static bool
 mips_info_to_howto_rel (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  cache_ptr->howto = mips_elf32_rtype_to_howto (abfd, r_type, FALSE);
+  cache_ptr->howto = mips_elf32_rtype_to_howto (abfd, r_type, false);
 
   if (cache_ptr->howto == NULL)
-    return FALSE;
+    return false;
 
   /* The addend for a GPREL16 or LITERAL relocation comes from the GP
      value for the object file.  We get the addend now, rather than
@@ -2254,12 +2267,12 @@ mips_info_to_howto_rel (bfd *abfd, arele
       && (gprel16_reloc_p (r_type) || literal_reloc_p (r_type)))
     cache_ptr->addend = elf_gp (abfd);
 
-  return TRUE;
+  return true;
 }
 
 /* Given a MIPS Elf_Internal_Rela, fill in an arelent structure.  */
 
-static bfd_boolean
+static bool
 mips_info_to_howto_rela (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
   return mips_info_to_howto_rel (abfd, cache_ptr, dst);
@@ -2274,7 +2287,7 @@ mips_info_to_howto_rela (bfd *abfd, arel
    symbols.  On most ELF targets the split is between static symbols
    and externally visible symbols.  */
 
-static bfd_boolean
+static bool
 mips_elf_sym_is_global (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
 {
   if (SGI_COMPAT (abfd))
@@ -2284,35 +2297,43 @@ 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 bool
+mips_elf32_elfsym_local_is_section (bfd *abfd)
+{
+  return SGI_COMPAT (abfd);
+}
 
 /* Set the right machine number for a MIPS ELF file.  */
 
-static bfd_boolean
+static bool
 mips_elf32_object_p (bfd *abfd)
 {
   unsigned long mach;
 
   if (ABI_N32_P (abfd))
-    return FALSE;
+    return false;
 
   /* Irix 5 and 6 are broken.  Object file symbol tables are not always
      sorted correctly such that local symbols precede global symbols,
      and the sh_info field in the symbol table is not always right.  */
   if (SGI_COMPAT (abfd))
-    elf_bad_symtab (abfd) = TRUE;
+    elf_bad_symtab (abfd) = true;
 
   mach = _bfd_elf_mips_mach (elf_elfheader (abfd)->e_flags);
   bfd_default_set_arch_mach (abfd, bfd_arch_mips, mach);
-  return TRUE;
+  return true;
 }
 
 /* MIPS ELF local labels start with '$', not 'L'.  */
 
-static bfd_boolean
+static bool
 mips_elf_is_local_label_name (bfd *abfd, const char *name)
 {
   if (name[0] == '$')
-    return TRUE;
+    return true;
 
   /* On Irix 6, the labels go back to starting with '.', so we accept
      the generic ELF local label syntax as well.  */
@@ -2320,7 +2341,7 @@ mips_elf_is_local_label_name (bfd *abfd,
 }
 
 /* Support for core dump NOTE sections.  */
-static bfd_boolean
+static bool
 elf32_mips_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -2329,7 +2350,7 @@ elf32_mips_grok_prstatus (bfd *abfd, Elf
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 256:		/* Linux/MIPS */
 	/* pr_cursig */
@@ -2350,13 +2371,13 @@ elf32_mips_grok_prstatus (bfd *abfd, Elf
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf32_mips_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 128:		/* Linux/MIPS elf_prpsinfo */
 	elf_tdata (abfd)->core->pid
@@ -2379,7 +2400,7 @@ elf32_mips_grok_psinfo (bfd *abfd, Elf_I
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 /* Write Linux core PRSTATUS note into core file.  */
@@ -2423,13 +2444,13 @@ elf32_mips_write_core_note (bfd *abfd, c
 
 /* Remove the magic _gp_disp symbol from the symbol tables.  */
 
-static bfd_boolean
+static bool
 elf32_mips_fixup_symbol (struct bfd_link_info *info,
 			 struct elf_link_hash_entry *h)
 {
   if (strcmp (h->root.root.string, "_gp_disp") == 0)
-    _bfd_elf_link_hash_hide_symbol (info, h, TRUE);
-  return TRUE;
+    _bfd_elf_link_hash_hide_symbol (info, h, true);
+  return true;
 }
 
 /* Depending on the target vector we generate some version of Irix
@@ -2490,9 +2511,9 @@ static const struct ecoff_debug_swap mip
 #define ELF_TARGET_ID			MIPS_ELF_DATA
 #define ELF_MACHINE_CODE		EM_MIPS
 
-#define elf_backend_collect		TRUE
-#define elf_backend_type_change_ok	TRUE
-#define elf_backend_can_gc_sections	TRUE
+#define elf_backend_collect		true
+#define elf_backend_type_change_ok	true
+#define elf_backend_can_gc_sections	true
 #define elf_backend_gc_mark_extra_sections \
 					_bfd_mips_elf_gc_mark_extra_sections
 #define elf_info_to_howto		mips_info_to_howto_rela
@@ -2516,10 +2537,7 @@ static const struct ecoff_debug_swap mip
 #define elf_backend_get_target_dtag	_bfd_mips_elf_get_target_dtag
 #define elf_backend_adjust_dynamic_symbol \
 					_bfd_mips_elf_adjust_dynamic_symbol
-#define elf_backend_always_size_sections \
-					_bfd_mips_elf_always_size_sections
-#define elf_backend_size_dynamic_sections \
-					_bfd_mips_elf_size_dynamic_sections
+#define elf_backend_late_size_sections	_bfd_mips_elf_late_size_sections
 #define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section	_bfd_mips_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol \
@@ -2545,13 +2563,15 @@ static const struct ecoff_debug_swap mip
 #define elf_backend_may_use_rel_p	1
 #define elf_backend_may_use_rela_p	0
 #define elf_backend_default_use_rela_p	0
-#define elf_backend_sign_extend_vma	TRUE
+#define elf_backend_sign_extend_vma	true
 #define elf_backend_plt_readonly	1
 
 #define elf_backend_discard_info	_bfd_mips_elf_discard_info
 #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
@@ -2562,6 +2582,8 @@ static const struct ecoff_debug_swap mip
 					_bfd_mips_elf_is_target_special_symbol
 #define bfd_elf32_get_synthetic_symtab	_bfd_mips_elf_get_synthetic_symtab
 #define bfd_elf32_find_nearest_line	_bfd_mips_elf_find_nearest_line
+#define bfd_elf32_find_nearest_line_with_alt \
+					_bfd_mips_elf_find_nearest_line_with_alt
 #define bfd_elf32_find_inliner_info	_bfd_mips_elf_find_inliner_info
 #define bfd_elf32_new_section_hook	_bfd_mips_elf_new_section_hook
 #define bfd_elf32_set_section_contents	_bfd_mips_elf_set_section_contents
@@ -2577,6 +2599,7 @@ static const struct ecoff_debug_swap mip
 					_bfd_mips_elf_print_private_bfd_data
 #define bfd_elf32_bfd_relax_section	_bfd_mips_elf_relax_section
 #define bfd_elf32_mkobject		_bfd_mips_elf_mkobject
+#define bfd_elf32_bfd_free_cached_info	_bfd_mips_elf_free_cached_info
 
 /* Support for SGI-ish mips targets.  */
 #define TARGET_LITTLE_SYM		mips_elf32_le_vec
@@ -2643,7 +2666,7 @@ static const struct ecoff_debug_swap mip
 #include "elf32-target.h"
 /* Implement elf_backend_final_write_processing for VxWorks.  */
 
-static bfd_boolean
+static bool
 mips_vxworks_final_write_processing (bfd *abfd)
 {
   _bfd_mips_final_write_processing (abfd);
@@ -2670,6 +2693,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.20200303/bfd/elf32-moxie.c ./bfd/elf32-moxie.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-moxie.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-moxie.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,8 +1,8 @@
 /* moxie-specific support for 32-bit ELF.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
 
    Copied from elf32-fr30.c which is..
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -34,47 +34,47 @@ static reloc_howto_type moxie_elf_howto_
   /* This reloc does nothing.  */
   HOWTO (R_MOXIE_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MOXIE_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_MOXIE_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MOXIE_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 10 bit PC-relative relocation.  */
   HOWTO (R_MOXIE_PCREL10,	/* type.  */
 	 1,			/* rightshift.  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* size.  */
 	 10,			/* bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* bitpos.  */
 	 complain_overflow_signed, /* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,	/* special_function.  */
 	 "R_MOXIE_PCREL10",		/* name.  */
-	 FALSE,			/* partial_inplace.  */
+	 false,			/* partial_inplace.  */
 	 0,			/* src_mask.  */
 	 0x000003FF,		/* dst_mask.  */
-	 TRUE),			/* pcrel_offset.  */
+	 true),			/* pcrel_offset.  */
 };
 
 /* Map BFD reloc types to MOXIE ELF reloc types.  */
@@ -123,7 +123,7 @@ moxie_reloc_name_lookup (bfd *abfd ATTRI
 
 /* Set the howto pointer for an MOXIE ELF reloc.  */
 
-static bfd_boolean
+static bool
 moxie_info_to_howto_rela (bfd *abfd,
 			  arelent *cache_ptr,
 			  Elf_Internal_Rela *dst)
@@ -137,10 +137,10 @@ moxie_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & moxie_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 /* Perform a single relocation.  By default we use the standard BFD
@@ -197,7 +197,7 @@ moxie_final_link_relocate (reloc_howto_t
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 moxie_elf_relocate_section (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -247,7 +247,7 @@ moxie_elf_relocate_section (bfd *output_
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -259,7 +259,8 @@ moxie_elf_relocate_section (bfd *output_
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_MOXIE_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -281,7 +282,7 @@ moxie_elf_relocate_section (bfd *output_
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -307,7 +308,7 @@ moxie_elf_relocate_section (bfd *output_
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -327,7 +328,7 @@ moxie_elf_gc_mark_hook (asection *sec,
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 moxie_elf_check_relocs (bfd *abfd,
 			struct bfd_link_info *info,
 			asection *sec,
@@ -339,7 +340,7 @@ moxie_elf_check_relocs (bfd *abfd,
   const Elf_Internal_Rela *rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -362,7 +363,7 @@ moxie_elf_check_relocs (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 #define ELF_ARCH		bfd_arch_moxie
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-msp430.c ./bfd/elf32-msp430.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-msp430.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-msp430.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /*  MSP430-specific support for 32-bit ELF
-    Copyright (C) 2002-2019 Free Software Foundation, Inc.
+    Copyright (C) 2002-2025 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 bool debug_relocs = 0;
+
 /* All users of this file have bfd_octets_per_byte (abfd, sec) == 1.  */
 #define OCTETS_PER_BYTE(ABFD, SEC) 1
 
@@ -54,474 +56,554 @@ 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 */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MSP430_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 10 bit PC relative relocation.  */
   HOWTO (R_MSP430_10_PCREL,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_10_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3ff,			/* src_mask */
 	 0x3ff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_MSP430_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit PC relative relocation for command address.  */
   HOWTO (R_MSP430_16_PCREL,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit absolute relocation, byte operations.  */
   HOWTO (R_MSP430_16_BYTE,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_16_BYTE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit absolute relocation for command address.  */
   HOWTO (R_MSP430_16_PCREL_BYTE,/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_16_PCREL_BYTE",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 10 bit PC relative relocation for complicated polymorphs.  */
   HOWTO (R_MSP430_2X_PCREL,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_2X_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3ff,			/* src_mask */
 	 0x3ff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit relaxable relocation for command address.  */
   HOWTO (R_MSP430_RL_PCREL,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_RL_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE)			/* pcrel_offset */
+	 true)			/* pcrel_offset */
 
   /* A 8-bit absolute relocation.  */
   , HOWTO (R_MSP430_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Together with a following reloc, allows for the difference
      between two symbols to be the real addend of the second reloc.  */
   HOWTO (R_MSP430_SYM_DIFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 rl78_sym_diff_handler,	/* special handler.  */
 	 "R_MSP430_SYM_DIFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 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 */
+	 1,				/* 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 */
+	 1,				/* 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[] =
 {
   HOWTO (R_MSP430_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MSP430_ABS32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_ABS32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MSP430_ABS16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_ABS16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MSP430_ABS8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_ABS8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MSP430_PCR16,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_PCR16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_PCR20_EXT_SRC,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_PCR20_EXT_SRC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_PCR20_EXT_DST,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_PCR20_EXT_DST",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_PCR20_EXT_ODST,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_PCR20_EXT_ODST",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_ABS20_EXT_SRC,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_ABS20_EXT_SRC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_ABS20_EXT_DST,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_ABS20_EXT_DST",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_ABS20_EXT_ODST,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_ABS20_EXT_ODST",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_ABS20_ADR_SRC,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_ABS20_ADR_SRC",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_ABS20_ADR_DST,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_ABS20_ADR_DST",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_PCR16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_PCR16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_PCR20_CALL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_PCR20_CALL",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430X_ABS16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_ABS16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430_ABS_HI16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_ABS_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MSP430_PREL31,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430_PREL31",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   EMPTY_HOWTO (R_MSP430_EHTYPE),
 
   /* A 10 bit PC relative relocation.  */
   HOWTO (R_MSP430X_10_PCREL,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_10_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3ff,			/* src_mask */
 	 0x3ff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 10 bit PC relative relocation for complicated polymorphs.  */
   HOWTO (R_MSP430X_2X_PCREL,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MSP430X_2X_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3ff,			/* src_mask */
 	 0x3ff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Together with a following reloc, allows for the difference
      between two symbols to be the real addend of the second reloc.  */
   HOWTO (R_MSP430X_SYM_DIFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 rl78_sym_diff_handler,	/* special handler.  */
 	 "R_MSP430X_SYM_DIFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 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 */
+	 1,				/* 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 */
+	 1,				/* 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,10 +655,12 @@ 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
+static inline bool
 uses_msp430x_relocs (bfd * abfd)
 {
   extern const bfd_target msp430_elf32_ti_vec;
@@ -634,7 +720,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an MSP430 ELF reloc.  */
 
-static bfd_boolean
+static bool
 msp430_info_to_howto_rela (bfd * abfd,
 			   arelent * cache_ptr,
 			   Elf_Internal_Rela * dst)
@@ -651,7 +737,7 @@ msp430_info_to_howto_rela (bfd * abfd,
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      abfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       cache_ptr->howto = elf_msp430x_howto_table + r_type;
     }
@@ -661,19 +747,19 @@ msp430_info_to_howto_rela (bfd * abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   else
     cache_ptr->howto = &elf_msp430_howto_table[r_type];
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase.
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 elf32_msp430_check_relocs (bfd * abfd, struct bfd_link_info * info,
 			   asection * sec, const Elf_Internal_Rela * relocs)
 {
@@ -683,7 +769,7 @@ elf32_msp430_check_relocs (bfd * abfd, s
   const Elf_Internal_Rela *rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -706,7 +792,7 @@ elf32_msp430_check_relocs (bfd * abfd, s
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Perform a single relocation.  By default we use the standard BFD
@@ -728,7 +814,7 @@ msp430_final_link_relocate (reloc_howto_
   bfd_reloc_status_type r = bfd_reloc_ok;
   bfd_vma x;
   bfd_signed_vma srel;
-  bfd_boolean is_rel_reloc = FALSE;
+  bool is_rel_reloc = false;
 
   if (uses_msp430x_relocs (input_bfd))
     {
@@ -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:
@@ -832,14 +975,14 @@ msp430_final_link_relocate (reloc_howto_
 	  {
 	    if (info->disable_target_specific_optimizations < 0)
 	      {
-		static bfd_boolean warned = FALSE;
+		static bool warned = false;
 		if (! warned)
 		  {
 		    info->callbacks->warning
 		      (info,
 		       _("try enabling relaxation to avoid relocation truncations"),
 		       NULL, input_bfd, input_section, relocation);
-		    warned = TRUE;
+		    warned = true;
 		  }
 	      }
 	    return bfd_reloc_overflow;
@@ -1146,14 +1289,14 @@ msp430_final_link_relocate (reloc_howto_
 	{
 	  if (info->disable_target_specific_optimizations < 0)
 	    {
-	      static bfd_boolean warned = FALSE;
+	      static bool warned = false;
 	      if (! warned)
 		{
 		  info->callbacks->warning
 		    (info,
 		     _("try enabling relaxation to avoid relocation truncations"),
 		     NULL, input_bfd, input_section, relocation);
-		  warned = TRUE;
+		  warned = true;
 		}
 	    }
 	  return bfd_reloc_overflow;
@@ -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:
@@ -1266,7 +1411,7 @@ msp430_final_link_relocate (reloc_howto_
 
 /* Relocate an MSP430 ELF section.  */
 
-static bfd_boolean
+static int
 elf32_msp430_relocate_section (bfd * output_bfd ATTRIBUTE_UNUSED,
 			       struct bfd_link_info * info,
 			       bfd * input_bfd,
@@ -1321,7 +1466,7 @@ elf32_msp430_relocate_section (bfd * out
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1332,7 +1477,8 @@ elf32_msp430_relocate_section (bfd * out
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_MSP430_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1354,7 +1500,7 @@ elf32_msp430_relocate_section (bfd * out
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -1381,14 +1527,14 @@ elf32_msp430_relocate_section (bfd * out
 
     }
 
-  return TRUE;
+  return true;
 }
 
 /* The final processing done just before writing out a MSP430 ELF object
    file.  This gets the MSP430 architecture right based on the machine
    number.  */
 
-static bfd_boolean
+static bool
 bfd_elf_msp430_final_write_processing (bfd *abfd)
 {
   unsigned long val;
@@ -1429,7 +1575,7 @@ bfd_elf_msp430_final_write_processing (b
 
 /* Set the right machine number.  */
 
-static bfd_boolean
+static bool
 elf32_msp430_object_p (bfd * abfd)
 {
   int e_set = bfd_mach_msp14;
@@ -1564,7 +1710,7 @@ static struct rcodes_s
 
 /* Return TRUE if a symbol exists at the given address.  */
 
-static bfd_boolean
+static bool
 msp430_elf_symbol_address_p (bfd * abfd,
 			     asection * sec,
 			     Elf_Internal_Sym * isym,
@@ -1583,7 +1729,7 @@ msp430_elf_symbol_address_p (bfd * abfd,
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   for (isymend = isym + symtab_hdr->sh_info; isym < isymend; isym++)
     if (isym->st_shndx == sec_shndx && isym->st_value == addr)
-      return TRUE;
+      return true;
 
   symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
 	      - symtab_hdr->sh_info);
@@ -1597,16 +1743,16 @@ msp430_elf_symbol_address_p (bfd * abfd,
 	   || sym_hash->root.type == bfd_link_hash_defweak)
 	  && sym_hash->root.u.def.section == sec
 	  && sym_hash->root.u.def.value == addr)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Adjust all local symbols defined as '.section + 0xXXXX' (.section has
    sec_shndx) referenced from current and other sections.  */
 
-static bfd_boolean
+static bool
 msp430_elf_relax_adjust_locals (bfd * abfd, asection * sec, bfd_vma addr,
 				int count, unsigned int sec_shndx,
 				bfd_vma toaddr)
@@ -1618,7 +1764,7 @@ msp430_elf_relax_adjust_locals (bfd * ab
 
   irel = elf_section_data (sec)->relocs;
   if (irel == NULL)
-    return TRUE;
+    return true;
 
   irelend = irel + sec->reloc_count;
   symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
@@ -1636,12 +1782,12 @@ msp430_elf_relax_adjust_locals (bfd * ab
 	irel->r_addend -= count;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 msp430_elf_relax_delete_bytes (bfd * abfd, asection * sec, bfd_vma addr,
 			       int count)
 {
@@ -1663,6 +1809,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;
@@ -1707,13 +1856,18 @@ msp430_elf_relax_delete_bytes (bfd * abf
 		 the start of the next section.  */
 	      || (isym->st_value == toaddr
 		  && name != NULL
-		  && (CONST_STRNEQ (name, ".Letext")
-		      || CONST_STRNEQ (name, ".LFE")))))
+		  && (startswith (name, ".Letext")
+		      || startswith (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
@@ -1751,14 +1905,14 @@ msp430_elf_relax_delete_bytes (bfd * abf
 	sym_hash->size -= count;
     }
 
-  return TRUE;
+  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 +1926,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 +1953,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 +1967,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,16 +1990,16 @@ 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;
 }
 
-static bfd_boolean
+static bool
 msp430_elf_relax_section (bfd * abfd, asection * sec,
 			  struct bfd_link_info * link_info,
-			  bfd_boolean * again)
+			  bool * again)
 {
   Elf_Internal_Shdr * symtab_hdr;
   Elf_Internal_Rela * internal_relocs;
@@ -1843,15 +2009,21 @@ msp430_elf_relax_section (bfd * abfd, as
   Elf_Internal_Sym *  isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-    || (sec->flags & SEC_RELOC) == 0
-    || sec->reloc_count == 0 || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+      || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 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;
 
@@ -1864,6 +2036,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 +2094,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 +2124,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 +2150,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 +2162,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 +2187,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,36 +2210,70 @@ 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);
 	}
 
       /* Growing the section may mean that other
 	 conditional branches need to be fixed.  */
-      *again = TRUE;
+      *again = true;
     }
 
+    if (debug_relocs)
+      printf ("  trying code size shrinking relocs\n");
+
     for (irel = internal_relocs; irel < irelend; irel++)
       {
 	bfd_vma symval;
@@ -2083,6 +2318,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 +2348,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 +2438,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 +2453,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.  */
@@ -2225,7 +2488,7 @@ msp430_elf_relax_section (bfd * abfd, as
 
 		/* That will change things, so, we should relax again.
 		   Note that this is not required, and it may be slow.  */
-		*again = TRUE;
+		*again = true;
 	      }
 	  }
 
@@ -2247,11 +2510,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,25 +2529,79 @@ 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.  */
-		*again = TRUE;
+		*again = true;
 	      }
 	  }
       }
@@ -2312,30 +2629,27 @@ 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;
+  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;
+  return false;
 }
 
 /* Handle an MSP430 specific section when reading an object file.
    This is called when bfd_section_from_shdr finds a section with
    an unknown type.  */
 
-static bfd_boolean
+static bool
 elf32_msp430_section_from_shdr (bfd *abfd,
 				Elf_Internal_Shdr * hdr,
 				const char *name,
@@ -2348,18 +2662,18 @@ elf32_msp430_section_from_shdr (bfd *abf
     case SHT_MSP430_ATTRIBUTES:
       return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
     default:
-      return FALSE;
+      return false;
     }
 }
 
-static bfd_boolean
+static bool
 elf32_msp430_obj_attrs_handle_unknown (bfd *abfd, int tag)
 {
   _bfd_error_handler
     /* xgettext:c-format */
     (_("warning: %pB: unknown MSPABI object attribute %d"),
      abfd, tag);
-  return TRUE;
+  return true;
 }
 
 /* Determine whether an object attribute tag takes an integer, a
@@ -2414,24 +2728,24 @@ data_model (int model)
 /* Merge MSPABI and GNU object attributes from IBFD into OBFD.
    Raise an error if there are conflicting attributes.  */
 
-static bfd_boolean
+static bool
 elf32_msp430_merge_msp430_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   obj_attribute *in_msp_attr, *in_gnu_attr;
   obj_attribute *out_msp_attr, *out_gnu_attr;
-  bfd_boolean result = TRUE;
+  bool result = true;
   static bfd * first_input_bfd = NULL;
 
   /* Skip linker created files.  */
   if (ibfd->flags & BFD_LINKER_CREATED)
-    return TRUE;
+    return true;
 
   /* LTO can create temporary files for linking which may not have an attribute
      section.  */
   if (ibfd->lto_output
       && bfd_get_section_by_name (ibfd, ".MSP430.attributes") == NULL)
-    return TRUE;
+    return true;
 
   /* If this is the first real object just copy the attributes.  */
   if (!elf_known_obj_attributes_proc (obfd)[0].i)
@@ -2445,7 +2759,7 @@ elf32_msp430_merge_msp430_attributes (bf
       out_msp_attr[0].i = 1;
 
       first_input_bfd = ibfd;
-      return TRUE;
+      return true;
     }
 
   in_msp_attr = elf_known_obj_attributes_proc (ibfd);
@@ -2461,7 +2775,7 @@ elf32_msp430_merge_msp430_attributes (bf
 	(_("error: %pB uses %s instructions but %pB uses %s"),
 	 ibfd, isa_type (in_msp_attr[OFBA_MSPABI_Tag_ISA].i),
 	 first_input_bfd, isa_type (out_msp_attr[OFBA_MSPABI_Tag_ISA].i));
-      result = FALSE;
+      result = false;
     }
 
   /* The code models must be the same.  */
@@ -2474,7 +2788,7 @@ elf32_msp430_merge_msp430_attributes (bf
 	 ibfd, code_model (in_msp_attr[OFBA_MSPABI_Tag_Code_Model].i),
 	 first_input_bfd,
 	 code_model (out_msp_attr[OFBA_MSPABI_Tag_Code_Model].i));
-      result = FALSE;
+      result = false;
     }
 
   /* The large code model is only supported by the MSP430X.  */
@@ -2485,7 +2799,7 @@ elf32_msp430_merge_msp430_attributes (bf
 	/* xgettext:c-format */
 	(_("error: %pB uses the large code model but %pB uses MSP430 instructions"),
 	 ibfd, first_input_bfd);
-      result = FALSE;
+      result = false;
     }
 
   /* The data models must be the same.  */
@@ -2498,7 +2812,7 @@ elf32_msp430_merge_msp430_attributes (bf
 	 ibfd, data_model (in_msp_attr[OFBA_MSPABI_Tag_Data_Model].i),
 	 first_input_bfd,
 	 data_model (out_msp_attr[OFBA_MSPABI_Tag_Data_Model].i));
-      result = FALSE;
+      result = false;
     }
 
   /* The small code model requires the use of the small data model.  */
@@ -2510,7 +2824,7 @@ elf32_msp430_merge_msp430_attributes (bf
 	(_("error: %pB uses the small code model but %pB uses the %s data model"),
 	 ibfd, first_input_bfd,
 	 data_model (out_msp_attr[OFBA_MSPABI_Tag_Data_Model].i));
-      result = FALSE;
+      result = false;
     }
 
   /* The large data models are only supported by the MSP430X.  */
@@ -2522,7 +2836,7 @@ elf32_msp430_merge_msp430_attributes (bf
 	(_("error: %pB uses the %s data model but %pB only uses MSP430 instructions"),
 	 ibfd, data_model (in_msp_attr[OFBA_MSPABI_Tag_Data_Model].i),
 	 first_input_bfd);
-      result = FALSE;
+      result = false;
     }
 
   /* Just ignore the data region unless the large memory model is in use.
@@ -2535,10 +2849,10 @@ elf32_msp430_merge_msp430_attributes (bf
       /* We cannot allow "lower region only" to be linked with any other
 	 values (i.e. ANY or NONE).
 	 Before this attribute existed, "ANY" region was the default.  */
-      bfd_boolean ibfd_lower_region_used
+      bool ibfd_lower_region_used
 	= (in_gnu_attr[Tag_GNU_MSP430_Data_Region].i
 	   == Val_GNU_MSP430_Data_Region_Lower);
-      bfd_boolean obfd_lower_region_used
+      bool obfd_lower_region_used
 	= (out_gnu_attr[Tag_GNU_MSP430_Data_Region].i
 	   == Val_GNU_MSP430_Data_Region_Lower);
       if (ibfd_lower_region_used != obfd_lower_region_used)
@@ -2548,7 +2862,7 @@ elf32_msp430_merge_msp430_attributes (bf
 	       "but %pB assumes data is exclusively in lower memory"),
 	     ibfd_lower_region_used ? obfd : ibfd,
 	     ibfd_lower_region_used ? ibfd : obfd);
-	  result = FALSE;
+	  result = false;
 	}
     }
 
@@ -2558,7 +2872,7 @@ elf32_msp430_merge_msp430_attributes (bf
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf32_msp430_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -2573,23 +2887,23 @@ elf32_msp430_merge_private_bfd_data (bfd
   return elf32_msp430_merge_msp430_attributes (ibfd, info);
 }
 
-static bfd_boolean
+static bool
 msp430_elf_is_target_special_symbol (bfd *abfd, asymbol *sym)
 {
   return _bfd_elf_is_local_label_name (abfd, sym->name);
 }
 
-static bfd_boolean
+static bool
 uses_large_model (bfd *abfd)
 {
   obj_attribute * attr;
 
   if (abfd->flags & BFD_LINKER_CREATED)
-    return FALSE;
+    return false;
 
   attr = elf_known_obj_attributes_proc (abfd);
   if (attr == NULL)
-    return FALSE;
+    return false;
 
   return attr[OFBA_MSPABI_Tag_Code_Model].i == 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.20200303/bfd/elf32-mt.c ./bfd/elf32-mt.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-mt.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-mt.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,7 +28,7 @@
 static reloc_howto_type * mt_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
 
-static bfd_boolean mt_info_to_howto_rela
+static bool mt_info_to_howto_rela
   (bfd *, arelent *, Elf_Internal_Rela *);
 
 static bfd_reloc_status_type mt_elf_relocate_hi16
@@ -38,7 +38,7 @@ static bfd_reloc_status_type mt_final_li
   (reloc_howto_type *, bfd *, asection *, bfd_byte *,
    Elf_Internal_Rela *, bfd_vma);
 
-static bfd_boolean mt_elf_relocate_section
+static int mt_elf_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    Elf_Internal_Rela *, Elf_Internal_Sym *, asection **);
 
@@ -48,107 +48,107 @@ static reloc_howto_type mt_elf_howto_tab
   /* This reloc does nothing.  */
   HOWTO (R_MT_NONE,	      /* type */
 	  0,			  /* rightshift */
-	  3,			  /* size (0 = byte, 1 = short, 2 = long) */
+	  0,			  /* size */
 	  0,			  /* bitsize */
-	  FALSE,		  /* pc_relative */
+	  false,		  /* pc_relative */
 	  0,			  /* bitpos */
 	  complain_overflow_dont, /* complain_on_overflow */
 	  bfd_elf_generic_reloc,  /* special_function */
 	  "R_MT_NONE",		/* name */
-	  FALSE,		  /* partial_inplace */
+	  false,		  /* partial_inplace */
 	  0 ,			  /* src_mask */
 	  0,			  /* dst_mask */
-	  FALSE),		  /* pcrel_offset */
+	  false),		  /* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_MT_16,	      /* type */
 	  0,			  /* rightshift */
-	  2,			  /* size (0 = byte, 1 = short, 2 = long) */
+	  4,			  /* size */
 	  16,			  /* bitsize */
-	  FALSE,		  /* pc_relative */
+	  false,		  /* pc_relative */
 	  0,			  /* bitpos */
 	  complain_overflow_dont, /* complain_on_overflow */
 	  bfd_elf_generic_reloc,  /* special_function */
 	  "R_MT_16",		/* name */
-	  FALSE,		  /* partial_inplace */
+	  false,		  /* partial_inplace */
 	  0 ,			  /* src_mask */
 	  0xffff,		  /* dst_mask */
-	  FALSE),		  /* pcrel_offset */
+	  false),		  /* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_MT_32,	      /* type */
 	  0,			  /* rightshift */
-	  2,			  /* size (0 = byte, 1 = short, 2 = long) */
+	  4,			  /* size */
 	  32,			  /* bitsize */
-	  FALSE,		  /* pc_relative */
+	  false,		  /* pc_relative */
 	  0,			  /* bitpos */
 	  complain_overflow_dont, /* complain_on_overflow */
 	  bfd_elf_generic_reloc,  /* special_function */
 	  "R_MT_32",		/* name */
-	  FALSE,		  /* partial_inplace */
+	  false,		  /* partial_inplace */
 	  0 ,			  /* src_mask */
 	  0xffffffff,		  /* dst_mask */
-	  FALSE),		  /* pcrel_offset */
+	  false),		  /* pcrel_offset */
 
   /* A 32 bit pc-relative relocation.  */
   HOWTO (R_MT_32_PCREL,	      /* type */
 	  0,			  /* rightshift */
-	  2,			  /* size (0 = byte, 1 = short, 2 = long) */
+	  4,			  /* size */
 	  32,			  /* bitsize */
-	  TRUE,			  /* pc_relative */
+	  true,			  /* pc_relative */
 	  0,			  /* bitpos */
 	  complain_overflow_dont, /* complain_on_overflow */
 	  bfd_elf_generic_reloc,  /* special_function */
 	  "R_MT_32_PCREL",    /* name */
-	  FALSE,		  /* partial_inplace */
+	  false,		  /* partial_inplace */
 	  0 ,			  /* src_mask */
 	  0xffffffff,		  /* dst_mask */
-	  TRUE),		  /* pcrel_offset */
+	  true),		  /* pcrel_offset */
 
   /* A 16 bit pc-relative relocation.  */
   HOWTO (R_MT_PC16,	      /* type */
 	  0,			  /* rightshift */
-	  2,			  /* size (0 = byte, 1 = short, 2 = long) */
+	  4,			  /* size */
 	  16,			  /* bitsize */
-	  TRUE,			  /* pc_relative */
+	  true,			  /* pc_relative */
 	  0,			  /* bitpos */
 	  complain_overflow_signed, /* complain_on_overflow */
 	  bfd_elf_generic_reloc,  /* special_function */
 	  "R_MT_PC16",		/* name */
-	  FALSE,		  /* partial_inplace */
+	  false,		  /* partial_inplace */
 	  0,			  /* src_mask */
 	  0xffff,		  /* dst_mask */
-	  TRUE),		  /* pcrel_offset */
+	  true),		  /* pcrel_offset */
 
   /* high 16 bits of symbol value.  */
   HOWTO (R_MT_HI16,	     /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MT_HI16",	     /* name */
-	 FALSE,			 /* partial_inplace */
+	 false,			 /* partial_inplace */
 	 0xffff0000,		/* src_mask */
 	 0xffff0000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MT_LO16,	     /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_MT_LO16",	     /* name */
-	 FALSE,			 /* partial_inplace */
+	 false,			 /* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* Map BFD reloc types to MT ELF reloc types.  */
@@ -227,10 +227,10 @@ mt_elf_relocate_hi16
 
 /* Set the howto pointer for a MT ELF reloc.  */
 
-static bfd_boolean
-mt_info_to_howto_rela (bfd *		    abfd,
-		       arelent *	    cache_ptr,
-		       Elf_Internal_Rela *  dst)
+static bool
+mt_info_to_howto_rela (bfd *abfd,
+		       arelent *cache_ptr,
+		       Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
 
@@ -241,10 +241,10 @@ mt_info_to_howto_rela (bfd *		    abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & mt_elf_howto_table [r_type];
-  return TRUE;
+  return true;
 }
 
 /* Perform a single relocation.  By default we use the standard BFD
@@ -297,7 +297,7 @@ mt_final_link_relocate
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 mt_elf_relocate_section
     (bfd *		     output_bfd ATTRIBUTE_UNUSED,
      struct bfd_link_info *  info,
@@ -350,8 +350,8 @@ mt_elf_relocate_section
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned, ignored;
+	  bool unresolved_reloc;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -363,7 +363,8 @@ mt_elf_relocate_section
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_MT_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -395,7 +396,7 @@ mt_elf_relocate_section
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -417,27 +418,26 @@ mt_elf_relocate_section
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase.
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
-mt_elf_check_relocs
-    (bfd *		       abfd,
-     struct bfd_link_info *    info,
-     asection *		       sec,
-     const Elf_Internal_Rela * relocs)
-{
-  Elf_Internal_Shdr *		symtab_hdr;
-  struct elf_link_hash_entry ** sym_hashes;
-  const Elf_Internal_Rela *	rel;
-  const Elf_Internal_Rela *	rel_end;
+static bool
+mt_elf_check_relocs (bfd *abfd,
+		     struct bfd_link_info *info,
+		     asection *sec,
+		     const Elf_Internal_Rela *relocs)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  const Elf_Internal_Rela *rel;
+  const Elf_Internal_Rela *rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -460,7 +460,7 @@ mt_elf_check_relocs
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the MACH for an e_flags value.  */
@@ -478,45 +478,44 @@ elf32_mt_machine (bfd *abfd)
   return bfd_mach_ms1;
 }
 
-static bfd_boolean
-mt_elf_object_p (bfd * abfd)
+static bool
+mt_elf_object_p (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_mt, elf32_mt_machine (abfd));
 
-  return TRUE;
+  return true;
 }
 
 /* Function to set the ELF flag bits.  */
 
-static bfd_boolean
-mt_elf_set_private_flags (bfd *    abfd,
-			   flagword flags)
+static bool
+mt_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 mt_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
-  flagword     old_flags, new_flags;
-  bfd_boolean  ok = TRUE;
+  flagword old_flags, new_flags;
+  bool ok = true;
 
   /* Check if we have the same endianness.  */
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   /* If they're not both mt, then merging is meaningless, so just
      don't do it.  */
   if (strcmp (ibfd->arch_info->arch_name, "mt") != 0)
-    return TRUE;
+    return true;
   if (strcmp (obfd->arch_info->arch_name, "mt") != 0)
-    return TRUE;
+    return true;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
@@ -529,13 +528,13 @@ mt_elf_merge_private_bfd_data (bfd *ibfd
   if (!elf_flags_init (obfd))
     {
       old_flags = new_flags;
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
     }
   else if ((new_flags & EF_MT_CPU_MASK) != (old_flags & EF_MT_CPU_MASK))
     {
       /* CPU has changed.  This is invalid, because MRISC, MRISC2 and
 	 MS2 are not subsets of each other.   */
-      ok = FALSE;
+      ok = false;
     }
 
   if (ok)
@@ -547,10 +546,10 @@ mt_elf_merge_private_bfd_data (bfd *ibfd
   return ok;
 }
 
-static bfd_boolean
-mt_elf_print_private_bfd_data (bfd * abfd, void * ptr)
+static bool
+mt_elf_print_private_bfd_data (bfd *abfd, void *ptr)
 {
-  FILE *   file = (FILE *) ptr;
+  FILE *file = (FILE *) ptr;
   flagword flags;
 
   BFD_ASSERT (abfd != NULL && ptr != NULL);
@@ -571,7 +570,7 @@ mt_elf_print_private_bfd_data (bfd * abf
 
   fputc ('\n', file);
 
-  return TRUE;
+  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.20200303/bfd/elf32-nds32.c ./bfd/elf32-nds32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-nds32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-nds32.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* NDS32-specific support for 32-bit ELF.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2025 Free Software Foundation, Inc.
    Contributed by Andes Technology Corporation.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -62,14 +62,14 @@ static bfd_reloc_status_type nds32_elf_d
 static bfd_vma calculate_memory_address
   (bfd *, Elf_Internal_Rela *, Elf_Internal_Sym *, Elf_Internal_Shdr *);
 static int nds32_get_section_contents (bfd *, asection *,
-				       bfd_byte **, bfd_boolean);
+				       bfd_byte **, bool);
 static int nds32_get_local_syms (bfd *, asection *ATTRIBUTE_UNUSED,
 				 Elf_Internal_Sym **);
-static bfd_boolean  nds32_relax_fp_as_gp
+static bool  nds32_relax_fp_as_gp
   (struct bfd_link_info *link_info, bfd *abfd, asection *sec,
    Elf_Internal_Rela *internal_relocs, Elf_Internal_Rela *irelend,
    Elf_Internal_Sym *isymbuf);
-static bfd_boolean nds32_fag_remove_unused_fpbase
+static bool nds32_fag_remove_unused_fpbase
   (bfd *abfd, asection *sec, Elf_Internal_Rela *internal_relocs,
    Elf_Internal_Rela *irelend);
 
@@ -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;
 
@@ -256,11 +253,10 @@ struct elf_nds32_obj_tdata
 #define elf32_nds32_relax_group_ptr(bfd) \
   &(elf_nds32_tdata (bfd)->relax_group)
 
-static bfd_boolean
+static bool
 nds32_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_nds32_obj_tdata),
-				  NDS32_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_nds32_obj_tdata));
 }
 
 /* Relocations used for relocation.  */
@@ -276,62 +272,62 @@ static reloc_howto_type nds32_elf_howto_
   /* This reloc does nothing.  */
   HOWTO2 (R_NDS32_NONE,		/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_NONE",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0,			/* src_mask  */
 	 0,			/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* A 16 bit absolute relocation.  */
   HOWTO2 (R_NDS32_16,		/* type  */
 	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 nds32_elf_generic_reloc,/* special_function  */
 	 "R_NDS32_16",		/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffff,		/* src_mask  */
 	 0xffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* A 32 bit absolute relocation.  */
   HOWTO2 (R_NDS32_32,		/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 nds32_elf_generic_reloc,/* special_function  */
 	 "R_NDS32_32",		/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* A 20 bit address.  */
   HOWTO2 (R_NDS32_20,		/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_unsigned,/* complain_on_overflow  */
 	 nds32_elf_generic_reloc,/* special_function  */
 	 "R_NDS32_20",		/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xfffff,		/* src_mask  */
 	 0xfffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* An PC Relative 9-bit relocation, shifted by 2.
      This reloc is complicated because relocations are relative to pc & -4.
@@ -343,47 +339,47 @@ static reloc_howto_type nds32_elf_howto_
      again.  */
   HOWTO2 (R_NDS32_9_PCREL,	/* type  */
 	 1,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 8,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 nds32_elf_9_pcrel_reloc,/* special_function  */
 	 "R_NDS32_9_PCREL",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xff,			/* src_mask  */
 	 0xff,			/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* A relative 15 bit relocation, right shifted by 1.  */
   HOWTO2 (R_NDS32_15_PCREL,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 14,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_15_PCREL",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x3fff,		/* src_mask  */
 	 0x3fff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* A relative 17 bit relocation, right shifted by 1.  */
   HOWTO2 (R_NDS32_17_PCREL,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 16,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_17_PCREL",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffff,		/* src_mask  */
 	 0xffff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* A relative 25 bit relocation, right shifted by 1.  */
   /* It's not clear whether this should have partial_inplace set or not.
@@ -392,481 +388,481 @@ static reloc_howto_type nds32_elf_howto_
      again.  */
   HOWTO2 (R_NDS32_25_PCREL,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 24,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_25_PCREL",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffff,		/* src_mask  */
 	 0xffffff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* High 20 bits of address when lower 12 is or'd in.  */
   HOWTO2 (R_NDS32_HI20,		/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_hi20_reloc,	/* special_function  */
 	 "R_NDS32_HI20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S3,	/* type  */
 	 3,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 9,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_lo12_reloc,	/* special_function  */
 	 "R_NDS32_LO12S3",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000001ff,		/* src_mask  */
 	 0x000001ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S2,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 10,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_lo12_reloc,	/* special_function  */
 	 "R_NDS32_LO12S2",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000003ff,		/* src_mask  */
 	 0x000003ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S1,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 11,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_lo12_reloc,	/* special_function  */
 	 "R_NDS32_LO12S1",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000007ff,		/* src_mask  */
 	 0x000007ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S0,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_lo12_reloc,	/* special_function  */
 	 "R_NDS32_LO12S0",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 15 bits offset.  */
   HOWTO2 (R_NDS32_SDA15S3,	/* type  */
 	 3,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 nds32_elf_sda15_reloc,	/* special_function  */
 	 "R_NDS32_SDA15S3",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 15 bits offset.  */
   HOWTO2 (R_NDS32_SDA15S2,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 nds32_elf_sda15_reloc,	/* special_function  */
 	 "R_NDS32_SDA15S2",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 15 bits offset.  */
   HOWTO2 (R_NDS32_SDA15S1,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 nds32_elf_sda15_reloc,	/* special_function  */
 	 "R_NDS32_SDA15S1",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 15 bits offset.  */
   HOWTO2 (R_NDS32_SDA15S0,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 nds32_elf_sda15_reloc,	/* special_function  */
 	 "R_NDS32_SDA15S0",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* GNU extension to record C++ vtable hierarchy  */
   HOWTO2 (R_NDS32_GNU_VTINHERIT,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 0,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 NULL,			/* special_function  */
 	 "R_NDS32_GNU_VTINHERIT",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0,			/* src_mask  */
 	 0,			/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* GNU extension to record C++ vtable member usage  */
   HOWTO2 (R_NDS32_GNU_VTENTRY,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 0,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 _bfd_elf_rel_vtable_reloc_fn,/* special_function  */
 	 "R_NDS32_GNU_VTENTRY",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0,			/* src_mask  */
 	 0,			/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* A 16 bit absolute relocation.  */
   HOWTO2 (R_NDS32_16_RELA,	/* type  */
 	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_16_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffff,		/* src_mask  */
 	 0xffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* A 32 bit absolute relocation.  */
   HOWTO2 (R_NDS32_32_RELA,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_32_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* A 20 bit address.  */
   HOWTO2 (R_NDS32_20_RELA,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_20_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xfffff,		/* src_mask  */
 	 0xfffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_9_PCREL_RELA,	/* type  */
 	 1,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 8,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_9_PCREL_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xff,			/* src_mask  */
 	 0xff,			/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* A relative 15 bit relocation, right shifted by 1.  */
   HOWTO2 (R_NDS32_15_PCREL_RELA,/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 14,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_15_PCREL_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x3fff,		/* src_mask  */
 	 0x3fff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* A relative 17 bit relocation, right shifted by 1.  */
   HOWTO2 (R_NDS32_17_PCREL_RELA,/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 16,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_17_PCREL_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffff,		/* src_mask  */
 	 0xffff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* A relative 25 bit relocation, right shifted by 2.  */
   HOWTO2 (R_NDS32_25_PCREL_RELA,/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 24,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_25_PCREL_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffff,		/* src_mask  */
 	 0xffffff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* High 20 bits of address when lower 16 is or'd in.  */
   HOWTO2 (R_NDS32_HI20_RELA,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_HI20_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S3_RELA,	/* type  */
 	 3,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 9,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_LO12S3_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000001ff,		/* src_mask  */
 	 0x000001ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S2_RELA,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 10,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_LO12S2_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000003ff,		/* src_mask  */
 	 0x000003ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S1_RELA,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 11,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_LO12S1_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000007ff,		/* src_mask  */
 	 0x000007ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S0_RELA,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_LO12S0_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 15 bits offset.  */
   HOWTO2 (R_NDS32_SDA15S3_RELA,	/* type  */
 	 3,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA15S3_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 15 bits offset.  */
   HOWTO2 (R_NDS32_SDA15S2_RELA,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA15S2_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_SDA15S1_RELA,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA15S1_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_SDA15S0_RELA,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA15S0_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* GNU extension to record C++ vtable hierarchy  */
   HOWTO2 (R_NDS32_RELA_GNU_VTINHERIT,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 0,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 NULL,			/* special_function  */
 	 "R_NDS32_RELA_GNU_VTINHERIT",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0,			/* src_mask  */
 	 0,			/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* GNU extension to record C++ vtable member usage  */
   HOWTO2 (R_NDS32_RELA_GNU_VTENTRY,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 0,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 _bfd_elf_rel_vtable_reloc_fn,/* special_function  */
 	 "R_NDS32_RELA_GNU_VTENTRY",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0,			/* src_mask  */
 	 0,			/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Like R_NDS32_20, but referring to the GOT table entry for
      the symbol.  */
   HOWTO2 (R_NDS32_GOT20,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOT20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xfffff,		/* src_mask  */
 	 0xfffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Like R_NDS32_PCREL, but referring to the procedure linkage table
      entry for the symbol.  */
   HOWTO2 (R_NDS32_25_PLTREL,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 24,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_25_PLTREL",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffff,		/* src_mask  */
 	 0xffffff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* This is used only by the dynamic linker.  The symbol should exist
      both in the object being run and in some shared library.  The
@@ -875,1220 +871,1247 @@ static reloc_howto_type nds32_elf_howto_
      run has to have the data at some particular address.  */
   HOWTO2 (R_NDS32_COPY,		/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_COPY",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Like R_NDS32_20, but used when setting global offset table
      entries.  */
   HOWTO2 (R_NDS32_GLOB_DAT,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GLOB_DAT",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Marks a procedure linkage table entry for a symbol.  */
   HOWTO2 (R_NDS32_JMP_SLOT,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_JMP_SLOT",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Used only by the dynamic linker.  When the object is run, this
      longword is set to the load address of the object, plus the
      addend.  */
   HOWTO2 (R_NDS32_RELATIVE,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_RELATIVE",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_GOTOFF,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOTOFF",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xfffff,		/* src_mask  */
 	 0xfffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* An PC Relative 20-bit relocation used when setting PIC offset
      table register.  */
   HOWTO2 (R_NDS32_GOTPC20,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOTPC20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xfffff,		/* src_mask  */
 	 0xfffff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* Like R_NDS32_HI20, but referring to the GOT table entry for
      the symbol.  */
   HOWTO2 (R_NDS32_GOT_HI20,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOT_HI20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_GOT_LO12,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOT_LO12",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* An PC Relative relocation used when setting PIC offset table register.
      Like R_NDS32_HI20, but referring to the GOT table entry for
      the symbol.  */
   HOWTO2 (R_NDS32_GOTPC_HI20,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOTPC_HI20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_GOTPC_LO12,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOTPC_LO12",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_GOTOFF_HI20,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOTOFF_HI20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_GOTOFF_LO12,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOTOFF_LO12",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Alignment hint for relaxable instruction.  This is used with
      R_NDS32_LABEL as a pair.  Relax this instruction from 4 bytes to 2
      in order to make next label aligned on word boundary.  */
   HOWTO2 (R_NDS32_INSN16,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_INSN16",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Alignment hint for label.  */
   HOWTO2 (R_NDS32_LABEL,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LABEL",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for unconditional call sequence  */
   HOWTO2 (R_NDS32_LONGCALL1,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGCALL1",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional call sequence.  */
   HOWTO2 (R_NDS32_LONGCALL2,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGCALL2",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional call sequence.  */
   HOWTO2 (R_NDS32_LONGCALL3,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGCALL3",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for unconditional branch sequence.  */
   HOWTO2 (R_NDS32_LONGJUMP1,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGJUMP1",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional branch sequence.  */
   HOWTO2 (R_NDS32_LONGJUMP2,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGJUMP2",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional branch sequence.  */
   HOWTO2 (R_NDS32_LONGJUMP3,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGJUMP3",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for load/store sequence.   */
   HOWTO2 (R_NDS32_LOADSTORE,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LOADSTORE",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for load/store sequence.  */
   HOWTO2 (R_NDS32_9_FIXED_RELA,	/* type  */
 	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_9_FIXED_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000000ff,		/* src_mask  */
 	 0x000000ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for load/store sequence.  */
   HOWTO2 (R_NDS32_15_FIXED_RELA,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_15_FIXED_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00003fff,		/* src_mask  */
 	 0x00003fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for load/store sequence.  */
   HOWTO2 (R_NDS32_17_FIXED_RELA,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_17_FIXED_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0000ffff,		/* src_mask  */
 	 0x0000ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for load/store sequence.  */
   HOWTO2 (R_NDS32_25_FIXED_RELA,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_25_FIXED_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00ffffff,		/* src_mask  */
 	 0x00ffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* High 20 bits of PLT symbol offset relative to PC.  */
   HOWTO2 (R_NDS32_PLTREL_HI20,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_PLTREL_HI20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Low 12 bits of PLT symbol offset relative to PC.  */
   HOWTO2 (R_NDS32_PLTREL_LO12,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_PLTREL_LO12",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* High 20 bits of PLT symbol offset relative to GOT (GP).  */
   HOWTO2 (R_NDS32_PLT_GOTREL_HI20,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_PLT_GOTREL_HI20",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Low 12 bits of PLT symbol offset relative to GOT (GP).  */
   HOWTO2 (R_NDS32_PLT_GOTREL_LO12,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_PLT_GOTREL_LO12",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 12 bits offset.  */
   HOWTO2 (R_NDS32_SDA12S2_DP_RELA,/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA12S2_DP_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 12 bits offset.  */
   HOWTO2 (R_NDS32_SDA12S2_SP_RELA,/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA12S2_SP_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
   /* Lower 12 bits of address.  */
 
   HOWTO2 (R_NDS32_LO12S2_DP_RELA,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 10,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_LO12S2_DP_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000003ff,		/* src_mask  */
 	 0x000003ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Lower 12 bits of address.  */
   HOWTO2 (R_NDS32_LO12S2_SP_RELA,/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 10,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_LO12S2_SP_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000003ff,		/* src_mask  */
 	 0x000003ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* Lower 12 bits of address.  Special identity for or case.  */
   HOWTO2 (R_NDS32_LO12S0_ORI_RELA,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_LO12S0_ORI_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* Small data area 19 bits offset.  */
   HOWTO2 (R_NDS32_SDA16S3_RELA,	/* type  */
 	 3,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA16S3_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0000ffff,		/* src_mask  */
 	 0x0000ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Small data area 15 bits offset.  */
   HOWTO2 (R_NDS32_SDA17S2_RELA,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 17,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA17S2_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0001ffff,		/* src_mask  */
 	 0x0001ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_SDA18S1_RELA,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 18,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA18S1_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0003ffff,		/* src_mask  */
 	 0x0003ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_SDA19S0_RELA,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 19,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA19S0_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0007ffff,		/* src_mask  */
 	 0x0007ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
   HOWTO2 (R_NDS32_DWARF2_OP1_RELA,/* type  */
 	 0,			/* rightshift  */
-	 0,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 1,			/* size  */
 	 8,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_DWARF2_OP1_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xff,			/* src_mask  */
 	 0xff,			/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_DWARF2_OP2_RELA,/* type  */
 	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_DWARF2_OP2_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffff,		/* src_mask  */
 	 0xffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_DWARF2_LEB_RELA,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_DWARF2_LEB_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_UPDATE_TA_RELA,/* type  */
 	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_UPDATE_TA_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffff,		/* src_mask  */
 	 0xffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* Like R_NDS32_PCREL, but referring to the procedure linkage table
      entry for the symbol.  */
   HOWTO2 (R_NDS32_9_PLTREL,	/* type  */
 	 1,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 8,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_9_PLTREL",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xff,			/* src_mask  */
 	 0xff,			/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
+
   /* Low 20 bits of PLT symbol offset relative to GOT (GP).  */
   HOWTO2 (R_NDS32_PLT_GOTREL_LO20,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_PLT_GOTREL_LO20",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* low 15 bits of PLT symbol offset relative to GOT (GP)  */
   HOWTO2 (R_NDS32_PLT_GOTREL_LO15,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_PLT_GOTREL_LO15",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* Low 19 bits of PLT symbol offset relative to GOT (GP).  */
   HOWTO2 (R_NDS32_PLT_GOTREL_LO19,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 19,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_PLT_GOTREL_LO19",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0007ffff,		/* src_mask  */
 	 0x0007ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_GOT_LO15,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOT_LO15",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_GOT_LO19,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 19,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOT_LO19",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0007ffff,		/* src_mask  */
 	 0x0007ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_GOTOFF_LO15,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOTOFF_LO15",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_GOTOFF_LO19,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 19,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOTOFF_LO19",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0007ffff,		/* src_mask  */
 	 0x0007ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* GOT 15 bits offset.  */
   HOWTO2 (R_NDS32_GOT15S2_RELA,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOT15S2_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00007fff,		/* src_mask  */
 	 0x00007fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* GOT 17 bits offset.  */
   HOWTO2 (R_NDS32_GOT17S2_RELA,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 17,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_GOT17S2_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0001ffff,		/* src_mask  */
 	 0x0001ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* A 5 bit address.  */
   HOWTO2 (R_NDS32_5_RELA,	/* type  */
 	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 5,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_5_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x1f,			/* src_mask  */
 	 0x1f,			/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_10_UPCREL_RELA,/* type  */
 	 1,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 9,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_unsigned,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_10_UPCREL_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x1ff,			/* src_mask  */
 	 0x1ff,			/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_SDA_FP7U2_RELA,/* type  */
 	 2,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 7,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_unsigned,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_SDA_FP7U2_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0000007f,		/* src_mask  */
 	 0x0000007f,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_WORD_9_PCREL_RELA,/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 8,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_WORD_9_PCREL_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xff,			/* src_mask  */
 	 0xff,			/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_25_ABS_RELA,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 24,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_25_ABS_RELA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffff,		/* src_mask  */
 	 0xffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* A relative 17 bit relocation for ifc, right shifted by 1.  */
   HOWTO2 (R_NDS32_17IFC_PCREL_RELA,/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 16,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_17IFC_PCREL_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffff,		/* src_mask  */
 	 0xffff,		/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* A relative unsigned 10 bit relocation for ifc, right shifted by 1.  */
   HOWTO2 (R_NDS32_10IFCU_PCREL_RELA,/* type  */
 	 1,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 9,			/* bitsize  */
-	 TRUE,			/* pc_relative  */
+	 true,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_unsigned,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_10IFCU_PCREL_RELA",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x1ff,			/* src_mask  */
 	 0x1ff,			/* dst_mask  */
-	 TRUE),			/* pcrel_offset  */
+	 true),			/* pcrel_offset  */
 
   /* Like R_NDS32_HI20, but referring to the TLS LE entry for the symbol.  */
   HOWTO2 (R_NDS32_TLS_LE_HI20,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_LE_HI20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_TLS_LE_LO12,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_LE_LO12",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Like R_NDS32_HI20, but referring to the TLS IE entry for the symbol.  */
   HOWTO2 (R_NDS32_TLS_IE_HI20,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_IE_HI20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_TLS_IE_LO12S2,/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 10,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_IE_LO12S2",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000003ff,		/* src_mask  */
 	 0x000003ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* TLS LE TP offset relocation  */
   HOWTO2 (R_NDS32_TLS_TPOFF,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_TPOFF",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* A 20 bit address.  */
   HOWTO2 (R_NDS32_TLS_LE_20,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_LE_20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xfffff,		/* src_mask  */
 	 0xfffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_TLS_LE_15S0,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_LE_15S0",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x7fff,		/* src_mask  */
 	 0x7fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_TLS_LE_15S1,	/* type  */
 	 1,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_LE_15S1",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x7fff,		/* src_mask  */
 	 0x7fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO2 (R_NDS32_TLS_LE_15S2,	/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 15,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_LE_15S2",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x7fff,		/* src_mask  */
 	 0x7fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for unconditional call sequence  */
   HOWTO2 (R_NDS32_LONGCALL4,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGCALL4",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional call sequence.  */
   HOWTO2 (R_NDS32_LONGCALL5,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGCALL5",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional call sequence.  */
   HOWTO2 (R_NDS32_LONGCALL6,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGCALL6",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for unconditional branch sequence.  */
   HOWTO2 (R_NDS32_LONGJUMP4,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGJUMP4",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional branch sequence.  */
   HOWTO2 (R_NDS32_LONGJUMP5,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGJUMP5",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional branch sequence.  */
   HOWTO2 (R_NDS32_LONGJUMP6,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGJUMP6",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Relax hint for conditional branch sequence.  */
   HOWTO2 (R_NDS32_LONGJUMP7,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LONGJUMP7",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
+  EMPTY_HOWTO (114),
 
   HOWTO2 (R_NDS32_TLS_IE_LO12,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_IE_LO12",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* Like R_NDS32_HI20, but referring to the TLS IE (PIE)
      entry for the symbol.  */
   HOWTO2 (R_NDS32_TLS_IEGP_HI20,/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_IEGP_HI20",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_TLS_IEGP_LO12,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_IEGP_LO12",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   HOWTO2 (R_NDS32_TLS_IEGP_LO12S2,/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 10,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_IEGP_LO12S2",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000003ff,		/* src_mask  */
 	 0x000003ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* TLS description relocation  */
   HOWTO2 (R_NDS32_TLS_DESC,	/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_hi20_reloc,	/* special_function  */
 	 "R_NDS32_TLS_DESC_HI20",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* TLS GD/LD description offset high part.  */
   HOWTO2 (R_NDS32_TLS_DESC_HI20,/* type  */
 	 12,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_hi20_reloc,	/* special_function  */
 	 "R_NDS32_TLS_DESC_HI20",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* TLS GD/LD description offset low part.  */
   HOWTO2 (R_NDS32_TLS_DESC_LO12,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 12,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_lo12_reloc,	/* special_function  */
 	 "R_NDS32_TLS_DESC_LO12",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x00000fff,		/* src_mask  */
 	 0x00000fff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* TLS GD/LD description offset set (movi).  */
   HOWTO2 (R_NDS32_TLS_DESC_20,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 20,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_DESC_20",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000fffff,		/* src_mask  */
 	 0x000fffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 
   /* TLS GD/LD description offset set (lwi.gp).  */
   HOWTO2 (R_NDS32_TLS_DESC_SDA17S2,/* type  */
 	 2,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 17,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_signed,/* complain_on_overflow  */
 	 bfd_elf_generic_reloc,	/* special_function  */
 	 "R_NDS32_TLS_DESC_SDA17S2",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0001ffff,		/* src_mask  */
 	 0x0001ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
 };
 
 /* Relocations used for relaxation.  */
@@ -2098,401 +2121,430 @@ static reloc_howto_type nds32_elf_howto_
 static reloc_howto_type nds32_elf_relax_howto_table[] = {
   HOWTO3 (R_NDS32_RELAX_ENTRY,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_RELAX_ENTRY",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_GOT_SUFF,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_GOT_SUFF",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_GOTOFF_SUFF,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_bitfield,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_GOTOFF_SUFF",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_PLT_GOT_SUFF,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_PLT_GOT_SUFF",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_MULCALL_SUFF,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_MULCALL_SUFF",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_PTR,		/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_PTR",		/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_PTR_COUNT,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_PTR_COUNT",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_PTR_RESOLVED,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_PTR_RESOLVED",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_PLTBLOCK,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_PLTBLOCK",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_RELAX_REGION_BEGIN,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_RELAX_REGION_BEGIN",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_RELAX_REGION_END,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_RELAX_REGION_END",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_MINUEND,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_MINUEND",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_SUBTRAHEND,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_SUBTRAHEND",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_DIFF8,	/* type  */
 	 0,			/* rightshift  */
-	 0,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 1,			/* size  */
 	 8,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_DIFF8",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x000000ff,		/* src_mask  */
 	 0x000000ff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_DIFF16,	/* type  */
 	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 2,			/* size  */
 	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_DIFF16",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0x0000ffff,		/* src_mask  */
 	 0x0000ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_DIFF32,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_DIFF32",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_DIFF_ULEB128,	/* type  */
 	 0,			/* rightshift  */
-	 0,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 1,			/* size  */
 	 0,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_DIFF_ULEB128",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_DATA,		/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_DATA",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_TRAN,		/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_TRAN",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_TLS_LE_ADD,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_TLS_LE_ADD",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_TLS_LE_LS,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_TLS_LE_LS",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_EMPTY,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_EMPTY",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* TLS GD/LD description address base addition.  */
   HOWTO3 (R_NDS32_TLS_DESC_ADD,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_TLS_DESC_ADD",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* TLS GD/LD description function load.  */
   HOWTO3 (R_NDS32_TLS_DESC_FUNC,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_TLS_DESC_FUNC",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* TLS DESC resolve function call.  */
   HOWTO3 (R_NDS32_TLS_DESC_CALL,/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_TLS_DESC_CALL",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* TLS DESC variable access.  */
   HOWTO3 (R_NDS32_TLS_DESC_MEM,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_TLS_DESC_MEM",/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* TLS GD/LD description mark (@tlsdec).  */
   HOWTO3 (R_NDS32_RELAX_REMOVE,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_REMOVE",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* TLS GD/LD description mark (@tlsdec).  */
   HOWTO3 (R_NDS32_RELAX_GROUP,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_GROUP",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   HOWTO3 (R_NDS32_TLS_IEGP_LW,	/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_TLS_IEGP_LW",	/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
+	 false),		/* pcrel_offset  */
+
   /* LA and FLSI relaxation.  */
   HOWTO3 (R_NDS32_LSI,		/* type  */
 	 0,			/* rightshift  */
-	 2,			/* size (0 = byte, 1 = short, 2 = long)  */
+	 4,			/* size  */
 	 32,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
+	 false,			/* pc_relative  */
 	 0,			/* bitpos  */
 	 complain_overflow_dont,/* complain_on_overflow  */
 	 nds32_elf_ignore_reloc,/* special_function  */
 	 "R_NDS32_LSI",		/* name  */
-	 FALSE,			/* partial_inplace  */
+	 false,			/* partial_inplace  */
 	 0xffffffff,		/* src_mask  */
 	 0xffffffff,		/* dst_mask  */
-	 FALSE),
+	 false),
 };
 
 static unsigned long dl_tlsdesc_lazy_trampoline[] =
@@ -2523,7 +2575,7 @@ nds32_put_trampoline (void *contents, co
 /* nds32_insertion_sort sorts an array with nmemb elements of size size.
    This prototype is the same as qsort ().  */
 
-void
+static void
 nds32_insertion_sort (void *base, size_t nmemb, size_t size,
 		      int (*compar) (const void *lhs, const void *rhs))
 {
@@ -2640,12 +2692,13 @@ nds32_elf_do_9_pcrel_reloc (bfd *
 			    bfd_vma             symbol_value,
 			    bfd_vma             addend)
 {
-  bfd_signed_vma relocation;
+  bfd_vma relocation;
   unsigned short x;
   bfd_reloc_status_type status;
 
   /* Sanity check the address (offset in section).  */
-  if (offset > bfd_get_section_limit (abfd, input_section))
+  bfd_vma octet = offset * bfd_octets_per_byte (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octet))
     return bfd_reloc_outofrange;
 
   relocation = symbol_value + addend;
@@ -2656,7 +2709,7 @@ nds32_elf_do_9_pcrel_reloc (bfd *
      before doing pcrel calculations.  */
   relocation -= (offset & -(bfd_vma) 2);
 
-  if (relocation < -ACCURATE_8BIT_S1 || relocation >= ACCURATE_8BIT_S1)
+  if (relocation + ACCURATE_8BIT_S1 >= 2 * ACCURATE_8BIT_S1)
     status = bfd_reloc_overflow;
   else
     status = bfd_reloc_ok;
@@ -2699,7 +2752,7 @@ struct nds32_hi20
 static struct nds32_hi20 *nds32_hi20_list;
 
 static bfd_reloc_status_type
-nds32_elf_hi20_reloc (bfd *abfd ATTRIBUTE_UNUSED,
+nds32_elf_hi20_reloc (bfd *abfd,
 		      arelent *reloc_entry,
 		      asymbol *symbol,
 		      void *data,
@@ -2722,7 +2775,10 @@ nds32_elf_hi20_reloc (bfd *abfd ATTRIBUT
     }
 
   /* Sanity check the address (offset in section).  */
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  bfd_vma octet = (reloc_entry->address
+		   * bfd_octets_per_byte (abfd, input_section));
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto,
+				  abfd, input_section, octet))
     return bfd_reloc_outofrange;
 
   ret = bfd_reloc_ok;
@@ -2886,7 +2942,10 @@ nds32_elf_generic_reloc (bfd *input_bfd,
      a section relative addend which is wrong.  */
 
   /* Sanity check the address (offset in section).  */
-  if (reloc_entry->address > bfd_get_section_limit (input_bfd, input_section))
+  bfd_vma octet = (reloc_entry->address
+		   * bfd_octets_per_byte (input_bfd, input_section));
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, input_bfd, input_section,
+				  octet))
     return bfd_reloc_outofrange;
 
   ret = bfd_reloc_ok;
@@ -2933,9 +2992,9 @@ nds32_elf_generic_reloc (bfd *input_bfd,
   (((x & reloc_entry->howto->src_mask) +  relocation) &	\
   reloc_entry->howto->dst_mask))
 
-  switch (reloc_entry->howto->size)
+  switch (bfd_get_reloc_size (reloc_entry->howto))
     {
-    case 1:
+    case 2:
       {
 	short x = bfd_getb16 (inplace_address);
 
@@ -2943,7 +3002,7 @@ nds32_elf_generic_reloc (bfd *input_bfd,
 	bfd_putb16 ((bfd_vma) x, inplace_address);
       }
       break;
-    case 2:
+    case 4:
       {
 	unsigned long x = bfd_getb32 (inplace_address);
 
@@ -3187,26 +3246,19 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 }
 
 static reloc_howto_type *
-bfd_elf32_bfd_reloc_type_table_lookup (enum elf_nds32_reloc_type code)
+bfd_elf32_bfd_reloc_type_table_lookup (unsigned int code)
 {
   if (code < R_NDS32_RELAX_ENTRY)
     {
-      BFD_ASSERT (code < ARRAY_SIZE (nds32_elf_howto_table));
-      return &nds32_elf_howto_table[code];
+      if (code < ARRAY_SIZE (nds32_elf_howto_table))
+	return &nds32_elf_howto_table[code];
     }
   else
     {
-      if ((size_t) (code - R_NDS32_RELAX_ENTRY)
-	  >= ARRAY_SIZE (nds32_elf_relax_howto_table))
-	{
-	  int i = code;
-	  i += 1;
-	}
-
-      BFD_ASSERT ((size_t) (code - R_NDS32_RELAX_ENTRY)
-		  < ARRAY_SIZE (nds32_elf_relax_howto_table));
-      return &nds32_elf_relax_howto_table[code - R_NDS32_RELAX_ENTRY];
+      if (code - R_NDS32_RELAX_ENTRY < ARRAY_SIZE (nds32_elf_relax_howto_table))
+	return &nds32_elf_relax_howto_table[code - R_NDS32_RELAX_ENTRY];
     }
+  return NULL;
 }
 
 static reloc_howto_type *
@@ -3227,51 +3279,51 @@ bfd_elf32_bfd_reloc_type_lookup (bfd *ab
 
 /* Set the howto pointer for an NDS32 ELF reloc.  */
 
-static bfd_boolean
+static bool
 nds32_info_to_howto_rel (bfd *abfd, arelent *cache_ptr,
 			 Elf_Internal_Rela *dst)
 {
-  enum elf_nds32_reloc_type r_type;
+  unsigned int r_type = ELF32_R_TYPE (dst->r_info);
 
-  r_type = ELF32_R_TYPE (dst->r_info);
-  if (r_type > R_NDS32_GNU_VTENTRY)
+  cache_ptr->howto = NULL;
+  if (r_type <= R_NDS32_GNU_VTENTRY)
+    cache_ptr->howto = bfd_elf32_bfd_reloc_type_table_lookup (r_type);
+  if (cache_ptr->howto == NULL || cache_ptr->howto->name == NULL)
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-
-  BFD_ASSERT (ELF32_R_TYPE (dst->r_info) <= R_NDS32_GNU_VTENTRY);
-  cache_ptr->howto = bfd_elf32_bfd_reloc_type_table_lookup (r_type);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-nds32_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *cache_ptr,
+static bool
+nds32_info_to_howto (bfd *abfd, arelent *cache_ptr,
 		     Elf_Internal_Rela *dst)
 {
   unsigned int r_type = ELF32_R_TYPE (dst->r_info);
 
-  if ((r_type == R_NDS32_NONE)
-      || ((r_type > R_NDS32_GNU_VTENTRY)
-	  && (r_type < R_NDS32_max)))
+  cache_ptr->howto = NULL;
+  if (r_type == R_NDS32_NONE
+      || r_type > R_NDS32_GNU_VTENTRY)
+    cache_ptr->howto = bfd_elf32_bfd_reloc_type_table_lookup (r_type);
+  if (cache_ptr->howto == NULL || cache_ptr->howto->name == NULL)
     {
-      cache_ptr->howto = bfd_elf32_bfd_reloc_type_table_lookup (r_type);
-      return TRUE;
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+			  abfd, r_type);
+      bfd_set_error (bfd_error_bad_value);
+      return false;
     }
-
-  /* xgettext:c-format */
-  _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r_type);
-  bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return true;
 }
 
 /* Support for core dump NOTE sections.
    Reference to include/linux/elfcore.h in Linux.  */
 
-static bfd_boolean
+static bool
 nds32_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -3308,7 +3360,7 @@ nds32_elf_grok_prstatus (bfd *abfd, Elf_
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   /* Make a ".reg" section.  */
@@ -3316,7 +3368,7 @@ nds32_elf_grok_prstatus (bfd *abfd, Elf_
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 nds32_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
@@ -3332,7 +3384,7 @@ nds32_elf_grok_psinfo (bfd *abfd, Elf_In
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   /* Note that for some reason, a spurious space is tacked
@@ -3346,7 +3398,7 @@ nds32_elf_grok_psinfo (bfd *abfd, Elf_In
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 /* Hook called by the linker routine which adds symbols from an object
@@ -3354,7 +3406,7 @@ nds32_elf_grok_psinfo (bfd *abfd, Elf_In
    We also keep watching for whether we need to create the sdata special
    linker sections.  */
 
-static bfd_boolean
+static bool
 nds32_elf_add_symbol_hook (bfd *abfd,
 			   struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			   Elf_Internal_Sym *sym,
@@ -3371,7 +3423,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)
 	{
@@ -3388,15 +3440,15 @@ nds32_elf_add_symbol_hook (bfd *abfd,
 	  *secp = bfd_make_section_old_way (abfd, ".scommon_d");
 	  break;
 	default:
-	  return TRUE;
+	  return true;
 	}
 
-      (*secp)->flags |= SEC_IS_COMMON;
+      (*secp)->flags |= SEC_IS_COMMON | SEC_SMALL_DATA;
       *valp = sym->st_size;
       break;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function can figure out the best location for a base register to access
@@ -3447,10 +3499,10 @@ static asection *sda_rela_sec = NULL;
 #define SDA_SECTION_NUM 10
 
 static bfd_reloc_status_type
-nds32_elf_final_sda_base (bfd *                   output_bfd,
-			  struct bfd_link_info *  info,
-			  bfd_vma *               psb,
-			  bfd_boolean             add_symbol)
+nds32_elf_final_sda_base (bfd *output_bfd,
+			  struct bfd_link_info *info,
+			  bfd_vma *psb,
+			  bool add_symbol)
 {
   int relax_fp_as_gp;
   struct elf_nds32_link_hash_table *table;
@@ -3459,7 +3511,7 @@ nds32_elf_final_sda_base (bfd *
   asection *first = NULL, *final = NULL, *temp;
   bfd_vma sda_base = 0;
 
-  h = bfd_link_hash_lookup (info->hash, "_SDA_BASE_", FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, "_SDA_BASE_", false, false, true);
   if (!h || (h->type != bfd_link_hash_defined
 	     && h->type != bfd_link_hash_defweak))
     {
@@ -3582,9 +3634,9 @@ nds32_elf_final_sda_base (bfd *
 
       if (!_bfd_generic_link_add_one_symbol
 	  (info, output_bfd, "_SDA_BASE_", BSF_GLOBAL | BSF_WEAK, first,
-	   (bfd_vma) sda_base, (const char *) NULL, FALSE,
+	   (bfd_vma) sda_base, (const char *) NULL, false,
 	   get_elf_backend_data (output_bfd)->collect, &h))
-	return FALSE;
+	return false;
 
       sda_rela_sec = first;
     }
@@ -3592,7 +3644,7 @@ nds32_elf_final_sda_base (bfd *
   /* Set _FP_BASE_ to _SDA_BASE_.  */
   table = nds32_elf_hash_table (info);
   relax_fp_as_gp = table->relax_fp_as_gp;
-  h2 = bfd_link_hash_lookup (info->hash, FP_BASE_NAME, FALSE, FALSE, FALSE);
+  h2 = bfd_link_hash_lookup (info->hash, FP_BASE_NAME, false, false, false);
   /* _SDA_BASE_ is difined in linker script.  */
   if (!first)
     {
@@ -3610,8 +3662,8 @@ nds32_elf_final_sda_base (bfd *
       if (!_bfd_generic_link_add_one_symbol
 	  (info, output_bfd, FP_BASE_NAME, BSF_GLOBAL | BSF_WEAK,
 	   first, sda_base, (const char *) NULL,
-	   FALSE, get_elf_backend_data (output_bfd)->collect, &h2))
-	return FALSE;
+	   false, get_elf_backend_data (output_bfd)->collect, &h2))
+	return false;
     }
 
   if (add_symbol)
@@ -3669,7 +3721,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 +3735,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)
@@ -3693,15 +3744,12 @@ nds32_elf_link_hash_table_create (bfd *a
   /* Patch tag.  */
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      nds32_elf_link_hash_newfunc,
-				      sizeof (struct elf_nds32_link_hash_entry),
-				      NDS32_ELF_DATA))
+				      sizeof (struct elf_nds32_link_hash_entry)))
     {
       free (ret);
       return NULL;
     }
 
-  ret->sdynbss = NULL;
-  ret->srelbss = NULL;
   ret->sym_ld_script = NULL;
 
   return &ret->root.root;
@@ -3710,13 +3758,13 @@ nds32_elf_link_hash_table_create (bfd *a
 /* Create .got, .gotplt, and .rela.got sections in DYNOBJ, and set up
    shortcuts to them in our hash table.  */
 
-static bfd_boolean
+static bool
 create_got_section (bfd *dynobj, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *ehtab;
 
   if (!_bfd_elf_create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   ehtab = elf_hash_table (info);
   ehtab->sgot = bfd_get_section_by_name (dynobj, ".got");
@@ -3732,14 +3780,14 @@ create_got_section (bfd *dynobj, struct
 				  | SEC_IN_MEMORY | SEC_LINKER_CREATED
 				  | SEC_READONLY))
       || !bfd_set_section_alignment (ehtab->srelgot, 2))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Create dynamic sections when linking against a dynamic object.  */
 
-static bfd_boolean
+static bool
 nds32_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *ehtab;
@@ -3775,7 +3823,7 @@ nds32_elf_create_dynamic_sections (bfd *
   if (s == NULL
       || !bfd_set_section_flags (s, pltflags)
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
 
   if (bed->want_plt_sym)
     {
@@ -3786,16 +3834,16 @@ nds32_elf_create_dynamic_sections (bfd *
 
       if (!(_bfd_generic_link_add_one_symbol
 	    (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s,
-	     (bfd_vma) 0, (const char *) NULL, FALSE,
+	     (bfd_vma) 0, (const char *) NULL, false,
 	     get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	return false;
 
       h = (struct elf_link_hash_entry *) bh;
       h->def_regular = 1;
       h->type = STT_OBJECT;
 
       if (bfd_link_pic (info) && !bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   s = bfd_make_section (abfd,
@@ -3804,10 +3852,10 @@ nds32_elf_create_dynamic_sections (bfd *
   if (s == NULL
       || !bfd_set_section_flags (s, flags | SEC_READONLY)
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (ehtab->sgot == NULL && !create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   for (sec = abfd->sections; sec; sec = sec->next)
     {
@@ -3825,7 +3873,7 @@ nds32_elf_create_dynamic_sections (bfd *
       if (s == NULL
 	  || !bfd_set_section_flags (s, flags | SEC_READONLY)
 	  || !bfd_set_section_alignment (s, ptralign))
-	return FALSE;
+	return false;
     }
 
   if (bed->want_dynbss)
@@ -3837,10 +3885,10 @@ 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;
+	return false;
       /* The .rel[a].bss section holds copy relocs.  This section is not
 	 normally needed.  We need to create it here, though, so that the
 	 linker will map it to an output section.  We can't just create it
@@ -3856,15 +3904,15 @@ 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))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -3878,40 +3926,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,31 +3938,13 @@ 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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 nds32_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				 struct elf_link_hash_entry *h)
 {
@@ -3986,7 +3982,7 @@ nds32_elf_adjust_dynamic_symbol (struct
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) - 1;
@@ -4000,7 +3996,7 @@ nds32_elf_adjust_dynamic_symbol (struct
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -4011,26 +4007,26 @@ nds32_elf_adjust_dynamic_symbol (struct
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (0 && info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -4044,7 +4040,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 +4051,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;
@@ -4069,11 +4065,8 @@ nds32_elf_adjust_dynamic_symbol (struct
 
   /* Apply the required alignment.  */
   s->size = BFD_ALIGN (s->size, (bfd_size_type) (1 << power_of_two));
-  if (power_of_two > bfd_section_alignment (s))
-    {
-      if (!bfd_set_section_alignment (s, power_of_two))
-	return FALSE;
-    }
+  if (!bfd_link_align_section (s, power_of_two))
+    return false;
 
   /* Define the symbol as being at this point in the section.  */
   h->root.u.def.section = s;
@@ -4082,23 +4075,22 @@ nds32_elf_adjust_dynamic_symbol (struct
   /* Increment the section size to make room for the symbol.  */
   s->size += h->size;
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   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)
-    return TRUE;
+    return true;
 
   /* When warning symbols are created, they **replace** the "real"
      entry in the hash table, thus we never get to see the real
@@ -4106,15 +4098,11 @@ 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;
+    return false;
 
   if ((htab->root.dynamic_sections_created || h->type == STT_GNU_IFUNC)
       && h->plt.refcount > 0
@@ -4125,7 +4113,7 @@ allocate_dynrelocs (struct elf_link_hash
       if (h->dynindx == -1 && !h->forced_local)
 	{
 	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
@@ -4177,7 +4165,7 @@ allocate_dynrelocs (struct elf_link_hash
   if (h->got.refcount > 0)
     {
       asection *sgot;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = elf32_nds32_hash_entry (h)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -4185,7 +4173,7 @@ allocate_dynrelocs (struct elf_link_hash
       if (h->dynindx == -1 && !h->forced_local)
 	{
 	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       sgot = elf_hash_table (info)->sgot;
@@ -4227,8 +4215,8 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma)-1;
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -4242,7 +4230,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;
@@ -4270,7 +4258,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  if (h->dynindx == -1 && !h->forced_local)
 	    {
 	      if (!bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -4279,19 +4267,19 @@ 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);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Add relocation REL to the end of relocation section SRELOC.  */
@@ -4313,52 +4301,25 @@ 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
-nds32_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				 struct bfd_link_info *info)
+static bool
+nds32_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			      struct bfd_link_info *info)
 {
   struct elf_nds32_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
-  bfd_boolean plt;
+  bool relocs;
   bfd *ibfd;
 
   htab = nds32_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -4369,6 +4330,7 @@ nds32_elf_size_dynamic_sections (bfd *ou
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -4382,7 +4344,6 @@ nds32_elf_size_dynamic_sections (bfd *ou
       Elf_Internal_Shdr *symtab_hdr;
       asection *sgot;
       char *local_tls_type;
-      unsigned long symndx;
       bfd_vma *local_tlsdesc_gotent;
 
       if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
@@ -4424,8 +4385,8 @@ nds32_elf_size_dynamic_sections (bfd *ou
       sgot = elf_hash_table (info)->sgot;
       local_tls_type = elf32_nds32_local_got_tls_type (ibfd);
       local_tlsdesc_gotent = elf32_nds32_local_tlsdesc_gotent (ibfd);
-      for (symndx = 0; local_got < end_local_got;
-	   ++local_got, ++local_tls_type, ++local_tlsdesc_gotent, ++symndx)
+      for (; local_got < end_local_got;
+	   ++local_got, ++local_tls_type, ++local_tlsdesc_gotent)
 	{
 	  if (*local_got > 0)
 	    {
@@ -4493,12 +4454,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,8 +4471,7 @@ 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;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       if ((s->flags & SEC_LINKER_CREATED) == 0)
@@ -4519,7 +4481,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)
 	{
@@ -4529,10 +4491,10 @@ nds32_elf_size_dynamic_sections (bfd *ou
 	{
 	  got_size += s->size;
 	}
-      else if (strncmp (bfd_section_name (s), ".rela", 5) == 0)
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != elf_hash_table (info)->srelplt)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -4566,66 +4528,11 @@ nds32_elf_size_dynamic_sections (bfd *ou
 	 of garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
-
-  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
@@ -4638,9 +4545,7 @@ nds32_relocate_contents (reloc_howto_typ
   unsigned int rightshift = howto->rightshift;
   unsigned int bitpos = howto->bitpos;
 
-  /* If the size is negative, negate RELOCATION.  This isn't very
-     general.  */
-  if (howto->size < 0)
+  if (howto->negate)
     relocation = -relocation;
 
   /* Get the value we are going to relocate.  */
@@ -4799,7 +4704,8 @@ nds32_elf_final_link_relocate (reloc_how
   bfd_vma relocation;
 
   /* Sanity check the address.  */
-  if (address > bfd_get_section_limit (input_bfd, input_section))
+  bfd_vma octet = address * bfd_octets_per_byte (input_bfd, input_section);
+  if (!bfd_reloc_offset_in_range (howto, input_bfd, input_section, octet))
     return bfd_reloc_outofrange;
 
   /* This function assumes that we are dealing with a basic relocation
@@ -4825,7 +4731,7 @@ nds32_elf_final_link_relocate (reloc_how
 				  contents + address);
 }
 
-static bfd_boolean
+static int
 nds32_elf_output_symbol_hook (struct bfd_link_info *info,
 			      const char *name,
 			      Elf_Internal_Sym *elfsym ATTRIBUTE_UNUSED,
@@ -4839,13 +4745,13 @@ nds32_elf_output_symbol_hook (struct bfd
   table = nds32_elf_hash_table (info);
   sym_ld_script = table->sym_ld_script;
   if (!sym_ld_script)
-    return TRUE;
+    return true;
 
   if (!h || !name || *name == '\0')
-    return TRUE;
+    return true;
 
   if (input_sec->flags & SEC_EXCLUDE)
-    return TRUE;
+    return true;
 
   if (!check_start_export_sym)
     {
@@ -4857,12 +4763,12 @@ nds32_elf_output_symbol_hook (struct bfd
       || h->root.type == bfd_link_hash_defweak)
     {
       if (!h->root.u.def.section->output_section)
-	return TRUE;
+	return true;
 
       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,
@@ -4871,7 +4777,7 @@ nds32_elf_output_symbol_hook (struct bfd
 		+ h->root.u.def.section->output_offset), source);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relocate an NDS32/D ELF section.
@@ -4933,7 +4839,7 @@ gottpoff (struct bfd_link_info *info, bf
   return tp_offset;
 }
 
-static bfd_boolean
+static bool
 patch_tls_desc_to_ie (bfd_byte *contents, Elf_Internal_Rela *rel, bfd *ibfd)
 {
   /* TLS_GD/TLS_LD model #1
@@ -4968,7 +4874,7 @@ patch_tls_desc_to_ie (bfd_byte *contents
      04 00 00 01 lwi $r0,[$r0+#0x4]
      40 00 64 00 add $r0,$r0,$r25  */
 
-  bfd_boolean rz = FALSE;
+  bool rz = false;
 
   typedef struct
     {
@@ -5020,7 +4926,7 @@ patch_tls_desc_to_ie (bfd_byte *contents
       /* already patched?  */
       if ((patch[0] == (0xfff07fffu & bfd_getb32 (p + 0))) &&
 	  (patch[1] == bfd_getb32 (p + 4)))
-	rz = TRUE;
+	rz = true;
     }
   else if (mode0[0].opcode == (mode0[0].mask & bfd_getb32 (p + 0)))
     {
@@ -5030,7 +4936,7 @@ patch_tls_desc_to_ie (bfd_byte *contents
 	  bfd_putb32 (patch[0] | (regidx << 15), p + 0);
 	  bfd_putb32 (patch[1], p + 4);
 	  bfd_putb32 (patch[2], p + 8);
-	  rz = TRUE;
+	  rz = true;
 	}
     }
   else if (mode1[0].opcode == (mode1[0].mask & bfd_getb32 (p + 0)))
@@ -5041,13 +4947,13 @@ patch_tls_desc_to_ie (bfd_byte *contents
 	  bfd_putb32 (patch[0] | (regidx << 15), p + 0);
 	  bfd_putb32 (patch[1], p + 4);
 	  bfd_putb32 (patch[2], p + 8);
-	  rz = TRUE;
+	  rz = true;
 	}
     }
 
   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.  */
     }
@@ -5083,7 +4989,7 @@ fls (register unsigned int x)
 #define nds32_elf_local_tlsdesc_gotent(bfd) \
   (elf_nds32_tdata (bfd)->local_tlsdesc_gotent)
 
-static bfd_boolean
+static int
 nds32_elf_relocate_section (bfd *		   output_bfd ATTRIBUTE_UNUSED,
 			    struct bfd_link_info * info,
 			    bfd *		   input_bfd,
@@ -5096,7 +5002,7 @@ nds32_elf_relocate_section (bfd *		   ou
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   Elf_Internal_Rela *rel, *relend;
-  bfd_boolean ret = TRUE;		/* Assume success.  */
+  bool ret = true;		/* Assume success.  */
   int align = 0;
   bfd_reloc_status_type r;
   const char *errmsg = NULL;
@@ -5135,9 +5041,9 @@ nds32_elf_relocate_section (bfd *		   ou
   if ((!bfd_link_relocatable (info)))
     {
       is_SDA_BASE_set = 1;
-      r = nds32_elf_final_sda_base (output_bfd, info, &gp, TRUE);
+      r = nds32_elf_final_sda_base (output_bfd, info, &gp, true);
       if (r != bfd_reloc_ok)
-	return FALSE;
+	return false;
     }
 
   /* Do TLS model conversion once at first.  */
@@ -5177,7 +5083,7 @@ nds32_elf_relocate_section (bfd *		   ou
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      input_bfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	  continue;
 	}
 
@@ -5254,7 +5160,7 @@ nds32_elf_relocate_section (bfd *		   ou
 	  /* External symbol.  */
 	  if (bfd_link_relocatable (info))
 	    continue;
-	  bfd_boolean warned, ignored, unresolved_reloc;
+	  bool warned, ignored, unresolved_reloc;
 	  int symndx = r_symndx - symtab_hdr->sh_info;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
@@ -5440,7 +5346,7 @@ nds32_elf_relocate_section (bfd *		   ou
 	  if (h != NULL)
 	    {
 	      /* External symbol  */
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      BFD_ASSERT (off != (bfd_vma) - 1);
@@ -5557,7 +5463,7 @@ nds32_elf_relocate_section (bfd *		   ou
 		      && (!info->symbolic || !h->def_regular))))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 	      bfd_byte *loc;
 
 	      /* When generating a shared object, these relocations
@@ -5572,9 +5478,9 @@ nds32_elf_relocate_section (bfd *		   ou
 		    (input_bfd, elf_elfheader (input_bfd)->e_shstrndx,
 		     elf_section_data (input_section)->rela.hdr->sh_name);
 		  if (name == NULL)
-		    return FALSE;
+		    return false;
 
-		  BFD_ASSERT (strncmp (name, ".rela", 5) == 0
+		  BFD_ASSERT (startswith (name, ".rela")
 			      && strcmp (bfd_section_name (input_section),
 					 name + 5) == 0);
 
@@ -5582,17 +5488,17 @@ nds32_elf_relocate_section (bfd *		   ou
 		  BFD_ASSERT (sreloc != NULL);
 		}
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset = _bfd_elf_section_offset (output_bfd,
 							 info,
 							 input_section,
 							 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) - 1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) - 2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -5615,7 +5521,7 @@ nds32_elf_relocate_section (bfd *		   ou
 			  && h->def_regular)
 		      || (bfd_link_pie (info) && h->def_regular))
 		    {
-		      relocate = TRUE;
+		      relocate = true;
 		      outrel.r_info = ELF32_R_INFO (0, R_NDS32_RELATIVE);
 		      outrel.r_addend = relocation + rel->r_addend;
 
@@ -5643,7 +5549,7 @@ nds32_elf_relocate_section (bfd *		   ou
 			       "making a shared object; recompile with -fPIC"),
 			     input_bfd, nds32_elf_howto_table[r_type].name, h->root.root.string);
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 
 		      outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
@@ -5671,7 +5577,7 @@ nds32_elf_relocate_section (bfd *		   ou
 	      _bfd_error_handler
 		(_("%pB: warning: %s unsupported in shared mode"),
 		 input_bfd, "R_NDS32_25_ABS_RELA");
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 
@@ -5711,7 +5617,7 @@ nds32_elf_relocate_section (bfd *		   ou
 
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      BFD_ASSERT (off != (bfd_vma) - 1);
@@ -5796,7 +5702,7 @@ nds32_elf_relocate_section (bfd *		   ou
 	      /* Incorrect alignment.  */
 	      _bfd_error_handler
 		(_("%pB: warning: unaligned access to GOT entry"), input_bfd);
-	      ret = FALSE;
+	      ret = false;
 	      r = bfd_reloc_dangerous;
 	      goto check_reloc;
 	    }
@@ -5827,17 +5733,17 @@ 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.
 	     This happens when the relocation has a symbol@GOTOFF.  */
-	  r = nds32_elf_final_sda_base (output_bfd, info, &gp, FALSE);
+	  r = nds32_elf_final_sda_base (output_bfd, info, &gp, false);
 	  if (r != bfd_reloc_ok)
 	    {
 	      _bfd_error_handler
 		(_("%pB: warning: relocate SDA_BASE failed"), input_bfd);
-	      ret = FALSE;
+	      ret = false;
 	      goto check_reloc;
 	    }
 
@@ -5861,7 +5767,7 @@ handle_sda:
 		(_("%pB(%pA): warning: unaligned small data access"
 		   " of type %d"),
 		 input_bfd, input_section, r_type);
-	      ret = FALSE;
+	      ret = false;
 	      goto check_reloc;
 	    }
 	  break;
@@ -5906,7 +5812,7 @@ handle_sda:
 	    BFD_ASSERT (sgot != NULL);
 	    if (h != NULL)
 	      {
-		bfd_boolean dyn;
+		bool dyn;
 
 		off = h->got.offset;
 		BFD_ASSERT (off != (bfd_vma) -1);
@@ -5943,13 +5849,13 @@ handle_sda:
 	    /* The offset must always be a multiple of 4.  We use
 	       the least significant bit to record whether we have
 	       already processed this entry.  */
-	    bfd_boolean need_relocs = FALSE;
+	    bool need_relocs = false;
 	    srelgot = ehtab->srelgot;
 	    if ((bfd_link_pic (info) || indx != 0)
 		&& (h == NULL || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
 		    || h->root.type != bfd_link_hash_undefweak))
 	      {
-		need_relocs = TRUE;
+		need_relocs = true;
 		BFD_ASSERT (srelgot != NULL);
 	      }
 
@@ -6155,7 +6061,7 @@ handle_sda:
 	  break;
 	}
 
-check_reloc:
+    check_reloc:
 
       if (r != bfd_reloc_ok)
 	{
@@ -6185,7 +6091,7 @@ check_reloc:
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, offset, TRUE);
+		(info, name, input_bfd, input_section, offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -6204,7 +6110,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;
@@ -6222,7 +6128,7 @@ common_error:
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 nds32_elf_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
 				 struct elf_link_hash_entry *h, Elf_Internal_Sym *sym)
 {
@@ -6431,13 +6337,13 @@ nds32_elf_finish_dynamic_symbol (bfd *ou
       || strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 nds32_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd *dynobj;
@@ -6449,7 +6355,7 @@ nds32_elf_finish_dynamic_sections (bfd *
   ehtab = elf_hash_table (info);
   htab = nds32_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
 
@@ -6457,7 +6363,7 @@ nds32_elf_finish_dynamic_sections (bfd *
   /* A broken linker script might have discarded the dynamic sections.
      Catch this here so that we do not seg-fault later on.  */
   if (sgotplt != NULL && bfd_is_abs_section (sgotplt->output_section))
-    return FALSE;
+    return false;
   sdyn = bfd_get_section_by_name (dynobj, ".dynamic");
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -6484,18 +6390,18 @@ nds32_elf_finish_dynamic_sections (bfd *
 
 	    case DT_PLTGOT:
 	      /* name = ".got";  */
-	      s = ehtab->sgot->output_section;
+	      s = ehtab->sgot;
 	      goto get_vma;
 	    case DT_JMPREL:
-	      s = ehtab->srelplt->output_section;
-get_vma:
+	      s = ehtab->srelplt;
+	    get_vma:
 	      BFD_ASSERT (s != NULL);
-	      dyn.d_un.d_ptr = s->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 = ehtab->srelplt->output_section;
+	      s = ehtab->srelplt;
 	      BFD_ASSERT (s != NULL);
 	      dyn.d_un.d_val = s->size;
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
@@ -6513,7 +6419,7 @@ get_vma:
 		 about changing the DT_RELA entry.  */
 	      if (ehtab->srelplt != NULL)
 		{
-		  s = ehtab->srelplt->output_section;
+		  s = ehtab->srelplt;
 		  dyn.d_un.d_val -= s->size;
 		}
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
@@ -6522,14 +6428,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 +6498,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 +6518,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));
 	}
@@ -6633,13 +6539,13 @@ get_vma:
       elf_section_data (sgotplt->output_section)->this_hdr.sh_entsize = 4;
     }
 
-  return TRUE;
+  return true;
 }
 
 
 /* Set the right machine number.  */
 
-static bfd_boolean
+static bool
 nds32_elf_object_p (bfd *abfd)
 {
   static unsigned int cur_arch = 0;
@@ -6670,12 +6576,12 @@ nds32_elf_object_p (bfd *abfd)
       break;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Store the machine number in the flags field.  */
 
-static bfd_boolean
+static bool
 nds32_elf_final_write_processing (bfd *abfd)
 {
   unsigned long val;
@@ -6718,15 +6624,15 @@ nds32_elf_final_write_processing (bfd *a
 
 /* Function to keep NDS32 specific file flags.  */
 
-static bfd_boolean
+static bool
 nds32_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 static unsigned int
@@ -6757,7 +6663,7 @@ convert_e_flags (unsigned int e_flags, u
   return e_flags;
 }
 
-static bfd_boolean
+static bool
 nds32_check_vec_size (bfd *ibfd)
 {
   static unsigned int nds32_vec_size = 0;
@@ -6772,7 +6678,7 @@ nds32_check_vec_size (bfd *ibfd)
       /* Get vec_size in file.  */
       unsigned int flag_t;
 
-      nds32_get_section_contents (ibfd, sec_t, &contents, TRUE);
+      nds32_get_section_contents (ibfd, sec_t, &contents, true);
       flag_t = bfd_get_32 (ibfd, contents);
 
       /* The value could only be 4 or 16.  */
@@ -6789,20 +6695,20 @@ nds32_check_vec_size (bfd *ibfd)
 	     ibfd,
 	     nds32_vec_size == 1 ? 4 : nds32_vec_size == 2 ? 16 : 0xffffffff,
 	     (flag_t & 0x3) == 1 ? 4 : (flag_t & 0x3) == 2 ? 16 : 0xffffffff);
-	  return FALSE;
+	  return false;
 	}
       else
 	/* Only keep the first vec_size section.  */
 	sec_t->flags |= SEC_EXCLUDE;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 nds32_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -6817,13 +6723,17 @@ 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;
+    return false;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   if (bfd_little_endian (ibfd) != bfd_little_endian (obfd))
     {
@@ -6831,7 +6741,7 @@ nds32_elf_merge_private_bfd_data (bfd *i
 	(_("%pB: warning: endian mismatch with previous modules"), ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* -B option in objcopy cannot work as expected. e_flags = 0 shall be
@@ -6911,9 +6821,9 @@ nds32_elf_merge_private_bfd_data (bfd *i
 	     unitialised values, which surprise surprise, correspond
 	     to the default values.  */
 	  if (bfd_get_arch_info (ibfd)->the_default)
-	    return TRUE;
+	    return true;
 
-	  elf_flags_init (obfd) = TRUE;
+	  elf_flags_init (obfd) = true;
 	  elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
 
 	  if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -6923,7 +6833,7 @@ nds32_elf_merge_private_bfd_data (bfd *i
 					bfd_get_mach (ibfd));
 	    }
 
-	  return TRUE;
+	  return true;
 	}
 
       /* Check flag compatibility.  */
@@ -6932,7 +6842,7 @@ nds32_elf_merge_private_bfd_data (bfd *i
 	  _bfd_error_handler
 	    (_("%pB: error: ABI mismatch with previous modules"), ibfd);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       if ((in_flags & EF_NDS_ARCH) != (out_flags & EF_NDS_ARCH))
@@ -6944,7 +6854,7 @@ nds32_elf_merge_private_bfd_data (bfd *i
 		 ibfd);
 
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -6978,12 +6888,12 @@ nds32_elf_merge_private_bfd_data (bfd *i
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Display the flags field.  */
 
-static bfd_boolean
+static bool
 nds32_elf_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -7007,15 +6917,14 @@ nds32_elf_print_private_bfd_data (bfd *a
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 static unsigned int
 nds32_elf_action_discarded (asection *sec)
 {
 
-  if (strncmp
-      (".gcc_except_table", sec->name, sizeof (".gcc_except_table") - 1) == 0)
+  if (startswith (sec->name, ".gcc_except_table"))
     return 0;
 
   return _bfd_elf_default_action_discarded (sec);
@@ -7079,7 +6988,7 @@ get_tls_type (enum elf_nds32_reloc_type
 /* Ensure that we have allocated bookkeeping structures for ABFD's local
    symbols.  */
 
-static bfd_boolean
+static bool
 elf32_nds32_allocate_local_sym_info (bfd *abfd)
 {
   if (elf_local_got_refcounts (abfd) == NULL)
@@ -7093,10 +7002,10 @@ elf32_nds32_allocate_local_sym_info (bfd
 	 gp_offset.  The details can refer to struct elf_nds32_obj_tdata.  */
       size = num_syms * (sizeof (bfd_signed_vma) + sizeof (char)
 			 + sizeof (bfd_vma) + sizeof (int)
-			 + sizeof (bfd_boolean) + sizeof (bfd_vma));
+			 + sizeof (bool) + sizeof (bfd_vma));
       data = bfd_zalloc (abfd, size);
       if (data == NULL)
-	return FALSE;
+	return false;
 
       elf_local_got_refcounts (abfd) = (bfd_signed_vma *) data;
       data += num_syms * sizeof (bfd_signed_vma);
@@ -7111,19 +7020,19 @@ elf32_nds32_allocate_local_sym_info (bfd
       data += num_syms * sizeof (int);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase.
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 nds32_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			asection *sec, const Elf_Internal_Rela *relocs)
 {
   Elf_Internal_Shdr *symtab_hdr;
-  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+  struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
   struct elf_link_hash_table *ehtab;
@@ -7135,24 +7044,11 @@ nds32_elf_check_relocs (bfd *abfd, struc
   if (bfd_link_relocatable (info))
     {
       elf32_nds32_check_relax_group (abfd, sec);
-      return TRUE;
+      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);
-  if (!elf_bad_symtab (abfd))
-    sym_hashes_end -= symtab_hdr->sh_info;
 
   ehtab = elf_hash_table (info);
   htab = nds32_elf_hash_table (info);
@@ -7212,7 +7108,7 @@ nds32_elf_check_relocs (bfd *abfd, struc
 	      if (dynobj == NULL)
 		htab->root.dynobj = dynobj = abfd;
 	      if (!create_got_section (dynobj, info))
-		return FALSE;
+		return false;
 	      break;
 
 	    default:
@@ -7249,7 +7145,7 @@ nds32_elf_check_relocs (bfd *abfd, struc
 	    {
 	      /* This is a global offset table entry for a local symbol.  */
 	      if (!elf32_nds32_allocate_local_sym_info (abfd))
-		return FALSE;
+		return false;
 
 	      BFD_ASSERT (r_symndx < symtab_hdr->sh_info);
 	      if (tls_type != GOT_TLS_LE)
@@ -7390,9 +7286,9 @@ nds32_elf_check_relocs (bfd *abfd, struc
 		    (abfd, elf_elfheader (abfd)->e_shstrndx,
 		     elf_section_data (sec)->rela.hdr->sh_name);
 		  if (name == NULL)
-		    return FALSE;
+		    return false;
 
-		  BFD_ASSERT (strncmp (name, ".rela", 5) == 0
+		  BFD_ASSERT (startswith (name, ".rela")
 			      && strcmp (bfd_section_name (sec),
 					 name + 5) == 0);
 
@@ -7409,7 +7305,7 @@ nds32_elf_check_relocs (bfd *abfd, struc
 		      if (sreloc == NULL
 			  || !bfd_set_section_flags (sreloc, flags)
 			  || !bfd_set_section_alignment (sreloc, 2))
-			return FALSE;
+			return false;
 
 		      elf_section_type (sreloc) = SHT_RELA;
 		    }
@@ -7419,21 +7315,22 @@ 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;
+		    return false;
 
 		  /* Track dynamic relocs needed for local syms too.  */
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
-		    return FALSE;
+		    return false;
 
 		  vpp = &elf_section_data (s)->local_dynrel;
 		  head = (struct elf_dyn_relocs **) vpp;
@@ -7442,10 +7339,10 @@ 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;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -7505,23 +7402,23 @@ nds32_elf_check_relocs (bfd *abfd, struc
 	case R_NDS32_RELA_GNU_VTINHERIT:
 	case R_NDS32_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_NDS32_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 	case R_NDS32_RELA_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write VAL in uleb128 format to P, returning a pointer to the
@@ -8281,7 +8178,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 +8500,7 @@ nds32_convert_16_to_32 (bfd *abfd, uint1
       goto done;
     }
 
-done:
+ done:
   if (insn & 0x80000000)
     return 0;
 
@@ -8613,7 +8510,7 @@ done:
 }
 
 
-static bfd_boolean
+static bool
 is_sda_access_insn (unsigned long insn)
 {
   switch (N32_OP6 (insn))
@@ -8630,11 +8527,11 @@ is_sda_access_insn (unsigned long insn)
     case N32_OP6_LDC:
     case N32_OP6_SWC:
     case N32_OP6_SDC:
-      return TRUE;
+      return true;
     default:
       ;
     }
-  return FALSE;
+  return false;
 }
 
 static unsigned long
@@ -8836,12 +8733,12 @@ is_16bit_NOP (bfd *abfd ATTRIBUTE_UNUSED
   unsigned short insn16;
 
   if (!(rel->r_addend & R_NDS32_INSN16_CONVERT_FLAG))
-    return FALSE;
+    return false;
   contents = elf_section_data (sec)->this_hdr.contents;
   insn16 = bfd_getb16 (contents + rel->r_offset);
   if (insn16 == NDS32_NOP16)
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
 /* It checks whether the instruction could be converted to
@@ -8869,12 +8766,12 @@ is_convert_32_to_16 (bfd *abfd, asection
   bfd_vma offset;
 
   if (reloc->r_offset + 4 > sec->size)
-    return FALSE;
+    return false;
 
   offset = reloc->r_offset;
 
-  if (!nds32_get_section_contents (abfd, sec, &contents, TRUE))
-    return FALSE;
+  if (!nds32_get_section_contents (abfd, sec, &contents, true))
+    return false;
   insn = bfd_getb32 (contents + offset);
 
   if (nds32_convert_32_to_16 (abfd, insn, insn16, NULL))
@@ -8882,11 +8779,11 @@ is_convert_32_to_16 (bfd *abfd, asection
   else if (special_convert_32_to_16 (insn, insn16, reloc))
     convert_type = SPECIAL_32_TO_16;
   else
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   if (!nds32_get_local_syms (abfd, sec, &isymbuf))
-    return FALSE;
+    return false;
 
   /* Find the first relocation of the same relocation-type,
      so we iteratie them forward.  */
@@ -8904,7 +8801,7 @@ is_convert_32_to_16 (bfd *abfd, asection
 	  off = calculate_offset (abfd, sec, pc_rel, isymbuf, symtab_hdr);
 	  if (off >= ACCURATE_8BIT_S1 || off < -ACCURATE_8BIT_S1
 	      || off == 0)
-	    return FALSE;
+	    return false;
 	  break;
 	}
       else if (ELF32_R_TYPE (pc_rel->r_info) == R_NDS32_20_RELA)
@@ -8915,7 +8812,7 @@ is_convert_32_to_16 (bfd *abfd, asection
 	  /* mem_addr is unsigned, but the value should
 	     be between [-16, 15].  */
 	  if ((mem_addr + 0x10) >> 5)
-	    return FALSE;
+	    return false;
 	  break;
 	}
       else if ((ELF32_R_TYPE (pc_rel->r_info) == R_NDS32_TLS_LE_20)
@@ -8923,7 +8820,7 @@ is_convert_32_to_16 (bfd *abfd, asection
 	{
 	  /* It never happen movi to movi55 for R_NDS32_TLS_LE_20,
 	     because it can be relaxed to addi for TLS_LE_ADD.  */
-	  return FALSE;
+	  return false;
 	}
       else if ((ELF32_R_TYPE (pc_rel->r_info) == R_NDS32_SDA15S2_RELA
 		|| ELF32_R_TYPE (pc_rel->r_info) == R_NDS32_SDA17S2_RELA)
@@ -8944,18 +8841,18 @@ is_convert_32_to_16 (bfd *abfd, asection
 	{
 	  /* Prevent unresolved addi instruction translate
 	     to addi45 or addi333.  */
-	  return FALSE;
+	  return false;
 	}
       else if ((ELF32_R_TYPE (pc_rel->r_info) == R_NDS32_17IFC_PCREL_RELA))
 	{
 	  off = calculate_offset (abfd, sec, pc_rel, isymbuf, symtab_hdr);
 	  if (off >= ACCURATE_U9BIT_S1 || off <= 0)
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -9182,7 +9079,7 @@ get_nds32_elf_blank_total (nds32_elf_bla
     return blank_t->total_size + blank_t->size;
 }
 
-static bfd_boolean
+static bool
 insert_nds32_elf_blank (nds32_elf_blank_t **blank_p, bfd_vma addr, bfd_vma len)
 {
   nds32_elf_blank_t *blank_t, *blank_t2;
@@ -9190,7 +9087,7 @@ insert_nds32_elf_blank (nds32_elf_blank_
   if (!*blank_p)
     {
       *blank_p = create_nds32_elf_blank (addr, len);
-      return *blank_p ? TRUE : FALSE;
+      return *blank_p != NULL;
     }
 
   blank_t = search_nds32_elf_blank (*blank_p, addr);
@@ -9199,13 +9096,13 @@ insert_nds32_elf_blank (nds32_elf_blank_
     {
       blank_t = create_nds32_elf_blank (addr, len);
       if (!blank_t)
-	return FALSE;
+	return false;
       while ((*blank_p)->prev != NULL)
 	*blank_p = (*blank_p)->prev;
       blank_t->next = *blank_p;
       (*blank_p)->prev = blank_t;
       (*blank_p) = blank_t;
-      return TRUE;
+      return true;
     }
 
   if (addr < blank_t->offset + blank_t->size)
@@ -9218,7 +9115,7 @@ insert_nds32_elf_blank (nds32_elf_blank_
     {
       blank_t2 = create_nds32_elf_blank (addr, len);
       if (!blank_t2)
-	return FALSE;
+	return false;
       if (blank_t->next)
 	{
 	  blank_t->next->prev = blank_t2;
@@ -9229,17 +9126,17 @@ insert_nds32_elf_blank (nds32_elf_blank_
       *blank_p = blank_t2;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 insert_nds32_elf_blank_recalc_total (nds32_elf_blank_t **blank_p, bfd_vma addr,
 				     bfd_vma len)
 {
   nds32_elf_blank_t *blank_t;
 
   if (!insert_nds32_elf_blank (blank_p, addr, len))
-    return FALSE;
+    return false;
 
   blank_t = *blank_p;
 
@@ -9255,7 +9152,7 @@ insert_nds32_elf_blank_recalc_total (nds
       blank_t = blank_t->next;
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -9278,7 +9175,7 @@ calc_nds32_blank_total (nds32_elf_blank_
     }
 }
 
-static bfd_boolean
+static bool
 nds32_elf_relax_delete_blanks (bfd *abfd, asection *sec,
 			       nds32_elf_blank_t *blank_p)
 {
@@ -9323,7 +9220,7 @@ nds32_elf_relax_delete_blanks (bfd *abfd
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   if (!nds32_get_local_syms (abfd, sec, &isym))
-    return FALSE;
+    return false;
 
   if (isym == NULL)
     {
@@ -9333,7 +9230,7 @@ nds32_elf_relax_delete_blanks (bfd *abfd
     }
 
   if (isym == NULL || symtab_hdr->sh_info == 0)
-    return FALSE;
+    return false;
 
   blank_t = blank_head;
   calc_nds32_blank_total (blank_head);
@@ -9344,7 +9241,7 @@ nds32_elf_relax_delete_blanks (bfd *abfd
 
       /* Relocations MUST be kept in memory, because relaxation adjust them.  */
       internal_relocs = _bfd_elf_link_read_relocs (abfd, sect, NULL, NULL,
-						   TRUE /* keep_memory */);
+						   true /* keep_memory */);
       irelend = internal_relocs + sect->reloc_count;
 
       blank_t = blank_head;
@@ -9353,7 +9250,8 @@ nds32_elf_relax_delete_blanks (bfd *abfd
       if (!(sect->flags & SEC_RELOC))
 	continue;
 
-      nds32_get_section_contents (abfd, sect, &contents, TRUE);
+      contents = NULL;
+      nds32_get_section_contents (abfd, sect, &contents, true);
 
       for (irel = internal_relocs; irel < irelend; irel++)
 	{
@@ -9448,7 +9346,7 @@ nds32_elf_relax_delete_blanks (bfd *abfd
 	      if (p < endp)
 		*p |= 0x80;
 	    }
-done_adjust_diff:
+	done_adjust_diff:
 
 	  if (sec == sect)
 	    {
@@ -9595,27 +9493,27 @@ done_adjust_diff:
       remove_nds32_elf_blank (blank_t);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Get the contents of a section.  */
 
 static int
 nds32_get_section_contents (bfd *abfd, asection *sec,
-			    bfd_byte **contents_p, bfd_boolean cache)
+			    bfd_byte **contents_p, bool cache)
 {
   /* Get the section contents.  */
   if (elf_section_data (sec)->this_hdr.contents != NULL)
     *contents_p = elf_section_data (sec)->this_hdr.contents;
   else
     {
-      if (!bfd_malloc_and_get_section (abfd, sec, contents_p))
-	return FALSE;
+      if (!bfd_get_full_section_contents (abfd, sec, contents_p))
+	return false;
       if (cache)
 	elf_section_data (sec)->this_hdr.contents = *contents_p;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Get the contents of the internal symbol of abfd.  */
@@ -9637,12 +9535,12 @@ nds32_get_local_syms (bfd *abfd, asectio
 					     symtab_hdr->sh_info, 0,
 					     NULL, NULL, NULL);
 	  if (*isymbuf_p == NULL)
-	    return FALSE;
+	    return false;
 	}
     }
   symtab_hdr->contents = (bfd_byte *) (*isymbuf_p);
 
-  return TRUE;
+  return true;
 }
 
 /* Range of small data.  */
@@ -9666,11 +9564,11 @@ nds32_elf_insn_size (bfd *abfd ATTRIBUTE
    to do gp relaxation.  */
 
 static void
-relax_range_measurement (bfd *abfd)
+relax_range_measurement (bfd *abfd, struct bfd_link_info *link_info)
 {
   asection *sec_f, *sec_b;
   /* For upper bound.   */
-  bfd_vma maxpgsz = get_elf_backend_data (abfd)->maxpagesize;
+  bfd_vma maxpgsz;
   bfd_vma align;
   static int decide_relax_range = 0;
   int i;
@@ -9702,6 +9600,10 @@ relax_range_measurement (bfd *abfd)
       sec_b = sec_b->next;
     }
 
+  if (link_info != NULL)
+    maxpgsz = link_info->maxpagesize;
+  else
+    maxpgsz = get_elf_backend_data (abfd)->maxpagesize;
   /* I guess we can not determine the section before
      gp located section, so we assume the align is max page size.  */
   for (i = 0; i < range_number; i++)
@@ -9726,7 +9628,7 @@ static const char * unrecognized_reloc_m
 
 /* Relax LONGCALL1 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longcall1 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -9775,7 +9677,7 @@ nds32_elf_relax_longcall1 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL1",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -9785,7 +9687,7 @@ nds32_elf_relax_longcall1 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_24BIT_S1
       || foff >= CONSERVATIVE_24BIT_S1)
-    return FALSE;
+    return false;
 
   /* Relax to: jal symbol; 25_PCREL.  */
   /* For simplicity of coding, we are going to modify the section
@@ -9820,13 +9722,13 @@ nds32_elf_relax_longcall1 (bfd *abfd, as
       lo_irelfn->r_addend = R_NDS32_INSN16_CONVERT_FLAG;
       *insn_len += 2;
     }
-  return TRUE;
+  return true;
 }
 
 #define CONVERT_CONDITION_CALL(insn) (((insn) & 0xffff0000) ^ 0x90000)
 /* Relax LONGCALL2 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longcall2 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -9855,7 +9757,7 @@ nds32_elf_relax_longcall2 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL2",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   insn = bfd_getb32 (contents + laddr);
@@ -9866,7 +9768,7 @@ nds32_elf_relax_longcall2 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_16BIT_S1
       || foff >= CONSERVATIVE_16BIT_S1)
-    return FALSE;
+    return false;
 
   /* Relax to	bgezal   rt, label ; 17_PCREL
      or		bltzal   rt, label ; 17_PCREL */
@@ -9900,12 +9802,12 @@ nds32_elf_relax_longcall2 (bfd *abfd, as
   bfd_putb32 (insn, contents + irel->r_offset);
 
   *insn_len = 4;
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGCALL3 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longcall3 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -9960,7 +9862,7 @@ nds32_elf_relax_longcall3 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL3",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -9969,7 +9871,7 @@ nds32_elf_relax_longcall3 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_24BIT_S1
       || foff >= CONSERVATIVE_24BIT_S1)
-    return FALSE;
+    return false;
 
   insn = bfd_getb32 (contents + laddr);
   if (foff >= -CONSERVATIVE_16BIT_S1 && foff < CONSERVATIVE_16BIT_S1)
@@ -10037,12 +9939,12 @@ nds32_elf_relax_longcall3 (bfd *abfd, as
 	  insn_len += 2;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGJUMP1 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longjump1 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -10093,7 +9995,7 @@ nds32_elf_relax_longjump1 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP1",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -10102,7 +10004,7 @@ nds32_elf_relax_longjump1 (bfd *abfd, as
   if (foff == 0
       || foff >= CONSERVATIVE_24BIT_S1
       || foff < -CONSERVATIVE_24BIT_S1)
-    return FALSE;
+    return false;
 
   if (insn16_on
       && foff >= -ACCURATE_8BIT_S1
@@ -10145,7 +10047,7 @@ nds32_elf_relax_longjump1 (bfd *abfd, as
       lo_irelfn->r_addend = R_NDS32_INSN16_CONVERT_FLAG;
       *insn_len += 2;
     }
-  return TRUE;
+  return true;
 }
 
 /* Revert condition branch.  This function does not check if the input
@@ -10237,7 +10139,7 @@ nds32_elf_convert_branch (uint16_t insn1
 
 /* Relax LONGJUMP2 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longjump2 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -10301,7 +10203,7 @@ nds32_elf_relax_longjump2 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP2",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -10309,7 +10211,7 @@ nds32_elf_relax_longjump2 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_16BIT_S1
       || foff >= CONSERVATIVE_16BIT_S1)
-    return FALSE;
+    return false;
 
   /* Get the all corresponding instructions.  */
   if (first_size == 4)
@@ -10367,7 +10269,7 @@ nds32_elf_relax_longjump2 (bfd *abfd, as
       cond_reloc = R_NDS32_NONE;
     }
   else
-    return FALSE;
+    return false;
 
   /* Set all relocations.  */
   irel->r_info = ELF32_R_INFO (ELF32_R_SYM (i2_irelfn->r_info), reloc);
@@ -10390,12 +10292,12 @@ nds32_elf_relax_longjump2 (bfd *abfd, as
   else
     i2_irelfn->r_info = ELF32_R_INFO (ELF32_R_SYM (i2_irelfn->r_info),
 				      R_NDS32_NONE);
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGJUMP3 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longjump3 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -10494,7 +10396,7 @@ nds32_elf_relax_longjump3 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP3",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -10503,7 +10405,7 @@ nds32_elf_relax_longjump3 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_24BIT_S1
       || foff >= CONSERVATIVE_24BIT_S1)
-    return FALSE;
+    return false;
 
   /* Get the all corresponding instructions.  */
   if (first_size == 4)
@@ -10604,7 +10506,7 @@ nds32_elf_relax_longjump3 (bfd *abfd, as
       cond_reloc = R_NDS32_25_PLTREL;
     }
     else
-      return FALSE;
+      return false;
 
     if (cond_removed == 1)
       {
@@ -10639,12 +10541,12 @@ nds32_elf_relax_longjump3 (bfd *abfd, as
   else
     lo_irelfn->r_info = ELF32_R_INFO (ELF32_R_SYM (lo_irelfn->r_info),
 				      R_NDS32_NONE);
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGCALL4 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longcall4 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -10674,7 +10576,7 @@ nds32_elf_relax_longcall4 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL4",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -10684,7 +10586,7 @@ nds32_elf_relax_longcall4 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_24BIT_S1
       || foff >= CONSERVATIVE_24BIT_S1)
-    return FALSE;
+    return false;
 
   /* Relax to: jal symbol; 25_PCREL.  */
   /* For simplicity of coding, we are going to modify the section
@@ -10704,12 +10606,12 @@ nds32_elf_relax_longcall4 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL4",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
   /* Check these is enough space to insert jal in R_NDS32_EMPTY.  */
   insn = bfd_getb32 (contents + irel->r_addend);
   if (insn & 0x80000000)
-    return FALSE;
+    return false;
 
   /* Replace the long call with a jal.  */
   em_irel->r_info = ELF32_R_INFO (ELF32_R_SYM (em_irel->r_info),
@@ -10739,12 +10641,12 @@ nds32_elf_relax_longcall4 (bfd *abfd, as
     insn_irel->r_info =
       ELF32_R_INFO (ELF32_R_SYM (irel->r_info), R_NDS32_NONE);
 
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGCALL5 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longcall5 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -10774,7 +10676,7 @@ nds32_elf_relax_longcall5 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL5",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -10783,7 +10685,7 @@ nds32_elf_relax_longcall5 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_16BIT_S1
       || foff >= CONSERVATIVE_16BIT_S1)
-    return FALSE;
+    return false;
 
   /* Relax to	bgezal   rt, label ; 17_PCREL
      or		bltzal   rt, label ; 17_PCREL.  */
@@ -10815,12 +10717,12 @@ nds32_elf_relax_longcall5 (bfd *abfd, as
   cond_irel->r_info =
     ELF32_R_INFO (ELF32_R_SYM (cond_irel->r_info), R_NDS32_NONE);
 
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGCALL6 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longcall6 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -10851,7 +10753,7 @@ nds32_elf_relax_longcall6 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGCALL6",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -10860,12 +10762,12 @@ nds32_elf_relax_longcall6 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_24BIT_S1
       || foff >= CONSERVATIVE_24BIT_S1)
-    return FALSE;
+    return false;
 
   /* Check these is enough space to insert jal in R_NDS32_EMPTY.  */
   insn = bfd_getb32 (contents + irel->r_addend);
   if (insn & 0x80000000)
-    return FALSE;
+    return false;
 
   insn = bfd_getb32 (contents + laddr);
   if (foff >= -CONSERVATIVE_16BIT_S1 && foff < CONSERVATIVE_16BIT_S1)
@@ -10889,7 +10791,7 @@ nds32_elf_relax_longcall6 (bfd *abfd, as
 	{
 	  _bfd_error_handler (unrecognized_reloc_msg, abfd,
 			      "R_NDS32_LONGCALL6", (uint64_t) irel->r_offset);
-	  return FALSE;
+	  return false;
 	}
       cond_irel->r_addend = 1;
 
@@ -10938,7 +10840,7 @@ nds32_elf_relax_longcall6 (bfd *abfd, as
 	{
 	  _bfd_error_handler (unrecognized_reloc_msg, abfd,
 			      "R_NDS32_LONGCALL6", (uint64_t) irel->r_offset);
-	  return FALSE;
+	  return false;
 	}
       cond_irel->r_addend = 1;
 
@@ -10949,12 +10851,12 @@ nds32_elf_relax_longcall6 (bfd *abfd, as
 	cond_irel->r_info =
 	  ELF32_R_INFO (ELF32_R_SYM (cond_irel->r_info), R_NDS32_NONE);
     }
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGJUMP4 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longjump4 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   bfd_byte *contents, Elf_Internal_Sym *isymbuf,
@@ -10987,7 +10889,7 @@ nds32_elf_relax_longjump4 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP4",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -10996,7 +10898,7 @@ nds32_elf_relax_longjump4 (bfd *abfd, as
   if (foff == 0
       || foff >= CONSERVATIVE_24BIT_S1
       || foff < -CONSERVATIVE_24BIT_S1)
-    return FALSE;
+    return false;
 
   /* Convert it to "j label", it may be converted to j8 in the final
      pass of relaxation.  Therefore, we do not consider this currently.  */
@@ -11009,7 +10911,7 @@ nds32_elf_relax_longjump4 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP4",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   em_irel->r_info =
@@ -11033,12 +10935,12 @@ nds32_elf_relax_longjump4 (bfd *abfd, as
 	ELF32_R_INFO (ELF32_R_SYM (hi_irel->r_info), R_NDS32_NONE);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGJUMP5 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longjump5 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   int *seq_len, bfd_byte *contents,
@@ -11082,7 +10984,7 @@ nds32_elf_relax_longjump5 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP5",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -11091,7 +10993,7 @@ nds32_elf_relax_longjump5 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_16BIT_S1
       || foff >= CONSERVATIVE_16BIT_S1)
-    return FALSE;
+    return false;
 
   /* Get the all corresponding instructions.  */
   insn = bfd_getb32 (contents + laddr);
@@ -11127,7 +11029,7 @@ nds32_elf_relax_longjump5 (bfd *abfd, as
       reloc = R_NDS32_WORD_9_PCREL_RELA;
     }
   else
-    return FALSE;
+    return false;
 
   /* Set all relocations.  */
   cond_irel->r_info = ELF32_R_INFO (ELF32_R_SYM (cond_irel->r_info), reloc);
@@ -11157,12 +11059,12 @@ nds32_elf_relax_longjump5 (bfd *abfd, as
     }
   *insn_len = 0;
 
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGJUMP6 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longjump6 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   int *seq_len, bfd_byte *contents,
@@ -11210,7 +11112,7 @@ nds32_elf_relax_longjump6 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP6",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -11219,7 +11121,7 @@ nds32_elf_relax_longjump6 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_24BIT_S1
       || foff >= CONSERVATIVE_24BIT_S1)
-    return FALSE;
+    return false;
 
   insn = bfd_getb32 (contents + laddr);
   /* Check instruction size.  */
@@ -11277,7 +11179,7 @@ nds32_elf_relax_longjump6 (bfd *abfd, as
       bfd_putb32 (insn, contents + em_irel->r_offset);
     }
   else
-    return FALSE;
+    return false;
 
   /* Set all relocations.  */
   em_irel->r_info = ELF32_R_INFO (ELF32_R_SYM (em_irel->r_info), reloc);
@@ -11337,12 +11239,12 @@ nds32_elf_relax_longjump6 (bfd *abfd, as
 				   R_NDS32_LONGJUMP5);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relax LONGJUMP7 relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_longjump7 (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
 			   int *seq_len, bfd_byte *contents,
@@ -11379,7 +11281,7 @@ nds32_elf_relax_longjump7 (bfd *abfd, as
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LONGJUMP7",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   /* Get the value of the symbol referred to by the reloc.  */
@@ -11388,7 +11290,7 @@ nds32_elf_relax_longjump7 (bfd *abfd, as
   if (foff == 0
       || foff < -CONSERVATIVE_8BIT_S1
       || foff >= CONSERVATIVE_8BIT_S1)
-    return FALSE;
+    return false;
 
   /* Get the first instruction for its size.  */
   insn = bfd_getb32 (contents + laddr);
@@ -11437,7 +11339,7 @@ nds32_elf_relax_longjump7 (bfd *abfd, as
     }
   *insn_len = 0;
 
-  return TRUE;
+  return true;
 }
 
 /* We figure out and reassign the best gp value in nds32_elf_final_sda_base
@@ -11445,16 +11347,16 @@ nds32_elf_relax_longjump7 (bfd *abfd, as
    the truncated to fit errors for the the converted gp instructions.
    Therefore, we must reserve the minimum but safe enough size to prevent it.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_guard (bfd_vma *access_addr, bfd_vma local_sda, asection *sec,
-		       Elf_Internal_Rela *irel, bfd_boolean *again,
-		       bfd_boolean init,
+		       Elf_Internal_Rela *irel, bool *again,
+		       bool init,
 		       struct elf_nds32_link_hash_table *table,
 		       Elf_Internal_Sym *isymbuf, Elf_Internal_Shdr *symtab_hdr)
 
 {
   int offset_to_gp;
-  static bfd_boolean sec_pass = FALSE;
+  static bool sec_pass = false;
   static asection *first_sec = NULL, *sym_sec;
   /* Record the number of instructions which may be removed.  */
   static int count = 0, record_count;
@@ -11468,7 +11370,7 @@ nds32_elf_relax_guard (bfd_vma *access_a
 
   /* Force doing relaxation when hyper-relax is high.  */
   if (table->hyper_relax == 2)
-    return TRUE;
+    return true;
 
   /* Do not relax the load/store patterns for the first
      relax round.  */
@@ -11480,13 +11382,13 @@ nds32_elf_relax_guard (bfd_vma *access_a
 	{
 	  record_count = count;
 	  count = 0;
-	  sec_pass = TRUE;
+	  sec_pass = true;
 	}
 
       if (!sec_pass)
-	*again = TRUE;
+	*again = true;
 
-      return TRUE;
+      return true;
     }
 
   /* Generally, _SDA_BASE_ is fixed or smaller. But the large
@@ -11516,7 +11418,7 @@ nds32_elf_relax_guard (bfd_vma *access_a
 	{
 	  /* Forbid doing relaxation when hyper-relax is low.  */
 	  if (table->hyper_relax == 0)
-	    return FALSE;
+	    return false;
 
 	  offset_to_gp = *access_addr - local_sda;
 	  if (elf32_nds32_hash_entry (h)->offset_to_gp == 0)
@@ -11538,7 +11440,7 @@ nds32_elf_relax_guard (bfd_vma *access_a
     {
       /* Local symbols.  */
       if (!elf32_nds32_allocate_local_sym_info (abfd))
-	return FALSE;
+	return false;
       isym = isymbuf + r_symndx;
 
       sym_sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
@@ -11546,7 +11448,7 @@ nds32_elf_relax_guard (bfd_vma *access_a
 	{
 	  /* Forbid doing relaxation when hyper-relax is low.  */
 	  if (table->hyper_relax == 0)
-	    return FALSE;
+	    return false;
 
 	  offset_to_gp = *access_addr - local_sda;
 	  if (elf32_nds32_local_gp_offset (abfd)[r_symndx] == 0)
@@ -11565,14 +11467,14 @@ nds32_elf_relax_guard (bfd_vma *access_a
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 #define GET_LOADSTORE_RANGE(addend) (((addend) >> 8) & 0x3f)
 
 /* Relax LOADSTORE relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_loadstore (struct bfd_link_info *link_info, bfd *abfd,
 			   asection *sec, Elf_Internal_Rela *irel,
 			   Elf_Internal_Rela *internal_relocs, int *insn_len,
@@ -11617,12 +11519,12 @@ nds32_elf_relax_loadstore (struct bfd_li
       if (i != 0)
 	_bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_LOADSTORE",
 			    (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   range_type = GET_LOADSTORE_RANGE (irel->r_addend);
   nds32_elf_final_sda_base (sec->output_section->owner,
-			    link_info, &local_sda, FALSE);
+			    link_info, &local_sda, false);
 
   switch (ELF32_R_TYPE (hi_irelfn->r_info))
     {
@@ -11652,15 +11554,15 @@ nds32_elf_relax_loadstore (struct bfd_li
 	  break;
 	}
       else if (!nds32_elf_relax_guard (&access_addr, local_sda, sec, hi_irelfn,
-				       NULL, FALSE, table, isymbuf, symtab_hdr))
-	return FALSE;
+				       NULL, false, table, isymbuf, symtab_hdr))
+	return false;
 
       if (!load_store_relax)
-	return FALSE;
+	return false;
 
       /* Case for set gp register.  */
       if (N32_RT5 (insn) == REG_GP)
-	return FALSE;
+	return false;
 
       if (range_type == NDS32_LOADSTORE_FLOAT_S
 	  || range_type == NDS32_LOADSTORE_FLOAT_D)
@@ -11676,7 +11578,7 @@ nds32_elf_relax_loadstore (struct bfd_li
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   /* Delete sethi instruction.  */
@@ -11689,10 +11591,10 @@ nds32_elf_relax_loadstore (struct bfd_li
       irel->r_info =
 	ELF32_R_INFO (ELF32_R_SYM (irel->r_info), R_NDS32_NONE);
       *insn_len = 0;
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Relax LO12 relocation for nds32_elf_relax_section.  */
@@ -11715,7 +11617,7 @@ nds32_elf_relax_lo12 (struct bfd_link_in
 
   /* For SDA base relative relaxation.  */
   nds32_elf_final_sda_base (sec->output_section->owner, link_info,
-			    &local_sda, FALSE);
+			    &local_sda, false);
 
   irelend = internal_relocs + sec->reloc_count;
   laddr = irel->r_offset;
@@ -11748,7 +11650,7 @@ nds32_elf_relax_lo12 (struct bfd_link_in
 	  /* Fall through.  */
 	}
       else if (!nds32_elf_relax_guard (&access_addr, local_sda, sec, irel, NULL,
-				       FALSE, table, isymbuf, symtab_hdr))
+				       false, table, isymbuf, symtab_hdr))
 	return;
 
       range_l = sdata_range[1][0];
@@ -11812,7 +11714,7 @@ nds32_elf_relax_lo12 (struct bfd_link_in
 
 /* Relax PTR relocation for nds32_elf_relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_elf_relax_ptr (bfd *abfd, asection *sec, Elf_Internal_Rela *irel,
 		     Elf_Internal_Rela *internal_relocs, int *insn_len,
 		     int *seq_len, bfd_byte *contents)
@@ -11829,11 +11731,11 @@ nds32_elf_relax_ptr (bfd *abfd, asection
     {
       _bfd_error_handler (unrecognized_reloc_msg, abfd, "R_NDS32_PTR",
 			  (uint64_t) irel->r_offset);
-      return FALSE;
+      return false;
     }
 
   if (re_irel->r_addend != 1)
-    return FALSE;
+    return false;
 
   /* Pointed target is relaxed and no longer needs this void *,
      change the type to NONE.  */
@@ -11849,16 +11751,16 @@ nds32_elf_relax_ptr (bfd *abfd, asection
   if (count_irel != irelend)
     {
       if (--count_irel->r_addend > 0)
-	return FALSE;
+	return false;
     }
 
   if (ptr_irel != irelend)
-    return FALSE;
+    return false;
 
   /* If the PTR_COUNT is already 0, remove current instruction.  */
   *seq_len = nds32_elf_insn_size (abfd, contents, irel->r_offset);
   *insn_len = 0;
-  return TRUE;
+  return true;
 }
 
 /* Relax LWC relocation for nds32_elf_relax_section.  */
@@ -11868,7 +11770,7 @@ nds32_elf_relax_flsi (struct bfd_link_in
 		      asection *sec, Elf_Internal_Rela *irel,
 		      Elf_Internal_Rela *internal_relocs,
 		      bfd_byte *contents, Elf_Internal_Sym *isymbuf,
-		      Elf_Internal_Shdr *symtab_hdr, bfd_boolean *again)
+		      Elf_Internal_Shdr *symtab_hdr, bool *again)
 {
   /* Pattern:
      sethi    ra, hi20(symbol)      ; HI20/LOADSTORE
@@ -11916,7 +11818,7 @@ nds32_elf_relax_flsi (struct bfd_link_in
 
   /* For SDA base relative relaxation.  */
   nds32_elf_final_sda_base (sec->output_section->owner, link_info,
-			    &local_sda, FALSE);
+			    &local_sda, false);
   access_addr = calculate_memory_address (abfd, irel, isymbuf, symtab_hdr);
   flsi_offset = (insn & 0xfff) << 2;
   access_addr += flsi_offset;
@@ -11935,11 +11837,11 @@ nds32_elf_relax_flsi (struct bfd_link_in
       bfd_putb32 (insn, contents + re_irel->r_offset);
 
       re_irel->r_addend |= 1;
-      *again = TRUE;
+      *again = true;
     }
 }
 
-static bfd_boolean
+static bool
 nds32_relax_adjust_label (bfd *abfd, asection *sec,
 			  Elf_Internal_Rela *internal_relocs,
 			  bfd_byte *contents,
@@ -12080,13 +11982,13 @@ nds32_relax_adjust_label (bfd *abfd, ase
 
 		      if (!insert_nds32_elf_blank_recalc_total
 			  (relax_blank_list, insn_rel->r_offset + 2, 2))
-			return FALSE;
+			return false;
 		    }
 		  else if (is_16bit_NOP (abfd, sec, insn_rel))
 		    {
 		      if (!insert_nds32_elf_blank_recalc_total
 			  (relax_blank_list, insn_rel->r_offset, 2))
-			return FALSE;
+			return false;
 		    }
 		  insn_rel->r_info =
 		    ELF32_R_INFO (ELF32_R_SYM (insn_rel->r_info), R_NDS32_NONE);
@@ -12121,7 +12023,7 @@ nds32_relax_adjust_label (bfd *abfd, ase
 	    {
 	      /* Check if there is case which can not be aligned.  */
 	      if (irel->r_addend == 2 && address & 0x2)
-		return FALSE;
+		return false;
 	      continue;
 	    }
 
@@ -12164,13 +12066,13 @@ nds32_relax_adjust_label (bfd *abfd, ase
 
 		  if (!insert_nds32_elf_blank_recalc_total
 		      (relax_blank_list, insn_rel->r_offset + 2, 2))
-		    return FALSE;
+		    return false;
 		}
 	      else if (is_16bit_NOP (abfd, sec, insn_rel))
 		{
 		  if (!insert_nds32_elf_blank_recalc_total
 		      (relax_blank_list, insn_rel->r_offset, 2))
-		    return FALSE;
+		    return false;
 		}
 
 	    }
@@ -12190,7 +12092,7 @@ nds32_relax_adjust_label (bfd *abfd, ase
 			      irelend, insn16);
 	  if (!insert_nds32_elf_blank_recalc_total
 	      (relax_blank_list, insn_rel->r_offset + 2, 2))
-	    return FALSE;
+	    return false;
 	  insn_rel->r_info = ELF32_R_INFO (ELF32_R_SYM (insn_rel->r_info),
 					   R_NDS32_NONE);
 	}
@@ -12198,18 +12100,18 @@ nds32_relax_adjust_label (bfd *abfd, ase
 	{
 	  if (!insert_nds32_elf_blank_recalc_total
 	      (relax_blank_list, insn_rel->r_offset, 2))
-	    return FALSE;
+	    return false;
 	  insn_rel->r_info = ELF32_R_INFO (ELF32_R_SYM (insn_rel->r_info),
 					   R_NDS32_NONE);
 	}
     }
   insn_rel = NULL;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 nds32_elf_relax_section (bfd *abfd, asection *sec,
-			 struct bfd_link_info *link_info, bfd_boolean *again)
+			 struct bfd_link_info *link_info, bool *again)
 {
   nds32_elf_blank_t *relax_blank_list = NULL;
   Elf_Internal_Shdr *symtab_hdr;
@@ -12218,7 +12120,7 @@ nds32_elf_relax_section (bfd *abfd, asec
   Elf_Internal_Rela *irelend;
   Elf_Internal_Sym *isymbuf = NULL;
   bfd_byte *contents = NULL;
-  bfd_boolean result = TRUE;
+  bool result = true;
   int optimize = 0;
   int opt_size = 0;
   uint32_t insn;
@@ -12230,7 +12132,7 @@ nds32_elf_relax_section (bfd *abfd, asec
 
   relax_blank_list = NULL;
 
-  *again = FALSE;
+  *again = false;
 
   /* Nothing to do for
    * relocatable link or
@@ -12244,13 +12146,13 @@ nds32_elf_relax_section (bfd *abfd, asec
       || (sec->flags & SEC_CODE) == 0
       || sec->size == 0
       || sec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   /* 09.12.11 Workaround.  */
   /*  We have to adjust align for R_NDS32_LABEL if needed.
       The adjust approach only can fix 2-byte align once.  */
   if (sec->alignment_power > 2)
-    return TRUE;
+    return true;
 
   /* Do TLS model conversion once at first.  */
   nds32_elf_unify_tls_model (abfd, sec, contents, link_info);
@@ -12262,7 +12164,7 @@ nds32_elf_relax_section (bfd *abfd, asec
   /* Save the first section for abs symbol relaxation.
      This is used for checking gp relaxation in the
      nds32_elf_relax_loadstore and nds32_elf_relax_lo12.  */
-  nds32_elf_relax_guard (NULL, 0, sec, NULL, again, TRUE,
+  nds32_elf_relax_guard (NULL, 0, sec, NULL, again, true,
 			 table, NULL, NULL);
 
   /* The begining of general relaxation.  */
@@ -12272,14 +12174,14 @@ nds32_elf_relax_section (bfd *abfd, asec
       bfd_vma gp;
       is_SDA_BASE_set = 1;
       nds32_elf_final_sda_base (sec->output_section->owner, link_info,
-				&gp, FALSE);
-      relax_range_measurement (abfd);
+				&gp, false);
+      relax_range_measurement (abfd, link_info);
     }
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   /* Relocations MUST be kept in memory, because relaxation adjust them.  */
   internal_relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL,
-					       TRUE /* keep_memory */);
+					       true /* keep_memory */);
   if (internal_relocs == NULL)
     goto error_return;
 
@@ -12288,12 +12190,12 @@ nds32_elf_relax_section (bfd *abfd, asec
 				 irelend, R_NDS32_RELAX_ENTRY);
 
   if (irel == irelend)
-    return TRUE;
+    return true;
 
   if (ELF32_R_TYPE (irel->r_info) == R_NDS32_RELAX_ENTRY)
     {
       if (irel->r_addend & R_NDS32_RELAX_ENTRY_DISABLE_RELAX_FLAG)
-	return TRUE;
+	return true;
 
       if (irel->r_addend & R_NDS32_RELAX_ENTRY_OPTIMIZE_FLAG)
 	optimize = 1;
@@ -12305,7 +12207,8 @@ nds32_elf_relax_section (bfd *abfd, asec
   load_store_relax = table->load_store_relax;
 
   /* Get symbol table and section content.  */
-  if (!nds32_get_section_contents (abfd, sec, &contents, TRUE)
+  contents = NULL;
+  if (!nds32_get_section_contents (abfd, sec, &contents, true)
       || !nds32_get_local_syms (abfd, sec, &isymbuf))
     goto error_return;
 
@@ -12315,7 +12218,7 @@ nds32_elf_relax_section (bfd *abfd, asec
     {
       int seq_len;		/* Original length of instruction sequence.  */
       int insn_len = 0;		/* Final length of instruction sequence.  */
-      bfd_boolean removed;
+      bool removed;
 
       insn = 0;
       if (ELF32_R_TYPE (irel->r_info) == R_NDS32_LABEL
@@ -12383,7 +12286,7 @@ nds32_elf_relax_section (bfd *abfd, asec
 	continue;
 
       insn_len = seq_len;
-      removed = FALSE;
+      removed = false;
 
       switch (ELF32_R_TYPE (irel->r_info))
 	{
@@ -12499,7 +12402,7 @@ nds32_elf_relax_section (bfd *abfd, asec
 	      (&relax_blank_list, irel->r_offset + insn_len,
 	       seq_len - insn_len))
 	    goto error_return;
-	  *again = TRUE;
+	  *again = true;
 	}
     }
 
@@ -12567,22 +12470,20 @@ 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:
-  result = FALSE;
+ error_return:
+  result = false;
   goto finish;
 }
 
@@ -12593,14 +12494,26 @@ static struct bfd_elf_special_section co
   {NULL, 0, 0, 0, 0}
 };
 
-static bfd_boolean
+static bool
+nds32_elf_section_flags (const Elf_Internal_Shdr *hdr)
+{
+  const char *name = hdr->bfd_section->name;
+
+  if (startswith (name, ".sbss")
+      || startswith (name, ".sdata"))
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
+
+  return true;
+}
+
+static bool
 nds32_elf_output_arch_syms (bfd *output_bfd ATTRIBUTE_UNUSED,
 			    struct bfd_link_info *info,
 			    void *finfo ATTRIBUTE_UNUSED,
-			    bfd_boolean (*func) (void *, const char *,
-						 Elf_Internal_Sym *,
-						 asection *,
-						 struct elf_link_hash_entry *)
+			    int (*func) (void *, const char *,
+					 Elf_Internal_Sym *,
+					 asection *,
+					 struct elf_link_hash_entry *)
 			    ATTRIBUTE_UNUSED)
 {
   FILE *sym_ld_script = NULL;
@@ -12612,7 +12525,7 @@ nds32_elf_output_arch_syms (bfd *output_
   if (check_start_export_sym)
     fprintf (sym_ld_script, "}\n");
 
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -12841,7 +12754,7 @@ nds32_fag_find_base (struct nds32_fag *h
    `best_fag' is the best fp-base.  Only those inside the window
    of best_fag is applied the flag.  */
 
-static bfd_boolean
+static bool
 nds32_fag_mark_relax (struct bfd_link_info *link_info,
 		      asection *sec, struct nds32_fag *best_fag,
 		      Elf_Internal_Rela *internal_relocs,
@@ -12852,12 +12765,12 @@ nds32_fag_mark_relax (struct bfd_link_in
   bfd *output_bfd;
 
   output_bfd = sec->output_section->owner;
-  nds32_elf_final_sda_base (output_bfd, link_info, &gp, FALSE);
+  nds32_elf_final_sda_base (output_bfd, link_info, &gp, false);
   best_fpbase = best_fag->addr;
 
   if (best_fpbase > gp + sdata_range[1][1]
       || best_fpbase < gp - sdata_range[1][0])
-    return FALSE;
+    return false;
 
   /* Mark these inside the window R_NDS32_INSN16_FP7U2_FLAG flag,
      so we know they can be converted to lwi37.fp.   */
@@ -12883,7 +12796,7 @@ nds32_fag_mark_relax (struct bfd_link_in
 	    insn16_rel->r_addend = R_NDS32_INSN16_FP7U2_FLAG;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Reset INSN16 to clean fp as gp.  */
@@ -12917,7 +12830,7 @@ nds32_fag_unmark_relax (struct nds32_fag
 /* This is the main function of fp-as-gp optimization.
    It should be called by relax_section.  */
 
-static bfd_boolean
+static bool
 nds32_relax_fp_as_gp (struct bfd_link_info *link_info,
 		      bfd *abfd, asection *sec,
 		      Elf_Internal_Rela *internal_relocs,
@@ -12929,7 +12842,7 @@ nds32_relax_fp_as_gp (struct bfd_link_in
   struct nds32_fag fag_head;
   Elf_Internal_Shdr *symtab_hdr;
   bfd_byte *contents;
-  bfd_boolean ifc_inside = FALSE;
+  bool ifc_inside = false;
 
   /* FIXME: Can we bfd_elf_link_read_relocs for the relocs?  */
 
@@ -12952,9 +12865,10 @@ nds32_relax_fp_as_gp (struct bfd_link_in
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
-  if (!nds32_get_section_contents (abfd, sec, &contents, TRUE)
+  contents = NULL;
+  if (!nds32_get_section_contents (abfd, sec, &contents, true)
       || !nds32_get_local_syms (abfd, sec, &isymbuf))
-    return FALSE;
+    return false;
 
   /* Check whether it is worth for fp-as-gp optimization,
      i.e., at least 3 gp-load.
@@ -12979,7 +12893,7 @@ nds32_relax_fp_as_gp (struct bfd_link_in
 
 	  begin_rel = irel;
 	  nds32_fag_init (&fag_head);
-	  ifc_inside = FALSE;
+	  ifc_inside = false;
 	}
       else if (ELF32_R_TYPE (irel->r_info) == R_NDS32_RELAX_REGION_END
 	       && (irel->r_addend & R_NDS32_RELAX_REGION_OMIT_FP_FLAG))
@@ -13062,16 +12976,16 @@ nds32_relax_fp_as_gp (struct bfd_link_in
 	       || ELF32_R_TYPE (irel->r_info) == R_NDS32_10IFCU_PCREL_RELA)
 	{
 	  /* Suppress fp as gp when encounter ifc.  */
-	  ifc_inside = TRUE;
+	  ifc_inside = true;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Remove unused `la $fp, _FD_BASE_' instruction.  */
 
-static bfd_boolean
+static bool
 nds32_fag_remove_unused_fpbase (bfd *abfd, asection *sec,
 				Elf_Internal_Rela *internal_relocs,
 				Elf_Internal_Rela *irelend)
@@ -13080,8 +12994,8 @@ nds32_fag_remove_unused_fpbase (bfd *abf
   Elf_Internal_Shdr *symtab_hdr;
   bfd_byte *contents = NULL;
   nds32_elf_blank_t *relax_blank_list = NULL;
-  bfd_boolean result = TRUE;
-  bfd_boolean unused_region = FALSE;
+  bool result = true;
+  bool unused_region = false;
 
   /*
      NOTE: Disable fp-as-gp if we encounter ifcall relocations:
@@ -13089,7 +13003,7 @@ nds32_fag_remove_unused_fpbase (bfd *abf
        R_NDS32_10IFCU_PCREL_RELA.  */
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-  nds32_get_section_contents (abfd, sec, &contents, TRUE);
+  nds32_get_section_contents (abfd, sec, &contents, true);
 
   for (irel = internal_relocs; irel < irelend; irel++)
     {
@@ -13103,10 +13017,10 @@ nds32_fag_remove_unused_fpbase (bfd *abf
 
       if (ELF32_R_TYPE (irel->r_info) == R_NDS32_RELAX_REGION_BEGIN
 	  && (irel->r_addend & R_NDS32_RELAX_REGION_NOT_OMIT_FP_FLAG))
-	unused_region = TRUE;
+	unused_region = true;
       else if (ELF32_R_TYPE (irel->r_info) == R_NDS32_RELAX_REGION_END
 	       && (irel->r_addend & R_NDS32_RELAX_REGION_NOT_OMIT_FP_FLAG))
-	unused_region = FALSE;
+	unused_region = false;
 
       /* We're not in the region.  */
       if (!unused_region)
@@ -13152,7 +13066,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,8 +13074,8 @@ finish:
     }
   return result;
 
-error_return:
-  result = FALSE;
+ error_return:
+  result = false;
   goto finish;
 }
 
@@ -13177,7 +13091,7 @@ nds32_elf_get_relocated_section_contents
 					  struct bfd_link_info *link_info,
 					  struct bfd_link_order *link_order,
 					  bfd_byte *data,
-					  bfd_boolean relocatable,
+					  bool relocatable,
 					  asymbol **symbols)
 {
   bfd *input_bfd = link_order->u.indirect.section->owner;
@@ -13191,7 +13105,8 @@ nds32_elf_get_relocated_section_contents
     return NULL;
 
   /* Read in the section.  */
-  if (!nds32_get_section_contents (input_bfd, input_section, &data, FALSE))
+  bfd_byte *orig_data = data;
+  if (!nds32_get_section_contents (input_bfd, input_section, &data, false))
     return NULL;
 
   if (reloc_size == 0)
@@ -13199,7 +13114,7 @@ nds32_elf_get_relocated_section_contents
 
   reloc_vector = (arelent **) bfd_malloc (reloc_size);
   if (reloc_vector == NULL)
-    return NULL;
+    goto error_return;
 
   reloc_count = bfd_canonicalize_reloc (input_bfd, input_section,
 					reloc_vector, symbols);
@@ -13220,14 +13135,14 @@ nds32_elf_get_relocated_section_contents
 	    {
 	      bfd_vma off;
 	      static reloc_howto_type none_howto
-		= HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL,
-			 "unused", FALSE, 0, 0, FALSE);
+		= HOWTO (0, 0, 0, 0, false, 0, complain_overflow_dont, NULL,
+			 "unused", false, 0, 0, false);
 
 	      off = (*parent)->address * OCTETS_PER_BYTE (input_bfd,
 							  input_section);
 	      _bfd_clear_contents ((*parent)->howto, input_bfd,
 				   input_section, data, off);
-	      (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	      (*parent)->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	      (*parent)->addend = 0;
 	      (*parent)->howto = &none_howto;
 	      r = bfd_reloc_ok;
@@ -13254,7 +13169,7 @@ nds32_elf_get_relocated_section_contents
 		case bfd_reloc_undefined:
 		  (*link_info->callbacks->undefined_symbol)
 		    (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
-		     input_bfd, input_section, (*parent)->address, TRUE);
+		     input_bfd, input_section, (*parent)->address, true);
 		  break;
 		case bfd_reloc_dangerous:
 		  BFD_ASSERT (error_message != NULL);
@@ -13291,19 +13206,21 @@ nds32_elf_get_relocated_section_contents
   free (reloc_vector);
   return data;
 
-error_return:
+ error_return:
   free (reloc_vector);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
 /* Check target symbol.  */
 
-static bfd_boolean
+static bool
 nds32_elf_is_target_special_symbol (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
 {
   if (!sym || !sym->name || sym->name[0] != '$')
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 /* nds32 find maybe function sym.  Ignore target special symbol
@@ -13356,7 +13273,7 @@ list_insert (relax_group_list_t *pHead,
   /* Insert node.  */
   relax_group_list_t *pNew = bfd_malloc (sizeof (relax_group_list_t));
   if (!pNew)
-    return FALSE;
+    return false;
 
   relax_group_list_t *tmp = pNext->next;
   pNext->next = pNew;
@@ -13366,7 +13283,7 @@ list_insert (relax_group_list_t *pHead,
   pNew->next = tmp;
   pNew->next_sibling = NULL;
 
-  return TRUE;
+  return true;
 }
 
 int
@@ -13383,7 +13300,7 @@ list_insert_sibling (relax_group_list_t
   /* Insert node.  */
   relax_group_list_t *pNew = bfd_malloc (sizeof (relax_group_list_t));
   if (!pNew)
-    return FALSE;
+    return false;
 
   relax_group_list_t *tmp = pNext->next_sibling;
   pNext->next_sibling = pNew;
@@ -13393,7 +13310,7 @@ list_insert_sibling (relax_group_list_t
   pNew->next = NULL;
   pNew->next_sibling = tmp;
 
-  return TRUE;
+  return true;
 }
 
 void
@@ -13435,7 +13352,7 @@ elf32_nds32_check_relax_group (bfd *abfd
     {
       /* Relocations MUST be kept in memory, because relaxation adjust them.  */
       relocs = _bfd_elf_link_read_relocs (abfd, asec, NULL, NULL,
-					  TRUE /* keep_memory  */);
+					  true /* keep_memory  */);
       if (relocs == NULL)
 	break;
 
@@ -13455,9 +13372,9 @@ elf32_nds32_check_relax_group (bfd *abfd
 	    max_id = id;
 	}
     }
-  while (FALSE);
+  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)
@@ -13474,7 +13391,7 @@ elf32_nds32_check_relax_group (bfd *abfd
 }
 
 /* Reorder RELAX_GROUP ID when command line option '-r' is applied.  */
-struct section_id_list_t *relax_group_section_id_list = NULL;
+static struct section_id_list_t *relax_group_section_id_list = NULL;
 
 struct section_id_list_t *
 elf32_nds32_lookup_section_id (int id, struct section_id_list_t **lst_ptr)
@@ -13545,13 +13462,12 @@ elf32_nds32_unify_relax_group (bfd *abfd
   elf32_nds32_relax_group_t *relax_group_ptr =
     elf32_nds32_relax_group_ptr (abfd);
 
-  bfd_boolean result = TRUE;
+  bool result = true;
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
   Elf_Internal_Rela *relocs = NULL;
   enum elf_nds32_reloc_type rtype;
   struct section_id_list_t *node = NULL;
-  int count = 0;
 
   do
     {
@@ -13565,7 +13481,7 @@ elf32_nds32_unify_relax_group (bfd *abfd
 
       /* Relocations MUST be kept in memory, because relaxation adjust them.  */
       relocs = _bfd_elf_link_read_relocs (abfd, asec, NULL, NULL,
-					  TRUE /* keep_memory  */);
+					  true /* keep_memory  */);
       if (relocs == NULL)
 	{
 	  BFD_ASSERT (0); /* feed me */
@@ -13590,13 +13506,11 @@ elf32_nds32_unify_relax_group (bfd *abfd
 
 	  /* Change it.  */
 	  rel->r_addend += relax_group_ptr->bias;
-	  /* Debugging count.  */
-	  count++;
 	}
     }
-  while (FALSE);
+  while (false);
 
-  if (relocs != NULL && elf_section_data (asec)->relocs != relocs)
+  if (elf_section_data (asec)->relocs != relocs)
     free (relocs);
 
   return result;
@@ -13606,7 +13520,7 @@ int
 nds32_elf_unify_tls_model (bfd *inbfd, asection *insec, bfd_byte *incontents,
 			   struct bfd_link_info *lnkinfo)
 {
-  bfd_boolean result = TRUE;
+  bool result = true;
   Elf_Internal_Rela *irel;
   Elf_Internal_Rela *irelend;
   Elf_Internal_Rela *internal_relocs;
@@ -13619,12 +13533,8 @@ nds32_elf_unify_tls_model (bfd *inbfd, a
   relax_group_list_t chain = { .id = -1, .next = NULL, .next_sibling = NULL };
 
   Elf_Internal_Shdr *symtab_hdr = &elf_tdata (inbfd)->symtab_hdr;
-  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
+  struct elf_link_hash_entry **sym_hashes;
   sym_hashes = elf_sym_hashes (inbfd);
-  sym_hashes_end =
-    sym_hashes + symtab_hdr->sh_size / sizeof (Elf32_External_Sym);
-  if (!elf_bad_symtab (inbfd))
-    sym_hashes_end -= symtab_hdr->sh_info;
 
   /* Reorder RELAX_GROUP when command line option '-r' is applied.  */
   if (bfd_link_relocatable (lnkinfo))
@@ -13635,7 +13545,7 @@ nds32_elf_unify_tls_model (bfd *inbfd, a
 
   /* Relocations MUST be kept in memory, because relaxation adjust them.  */
   internal_relocs = _bfd_elf_link_read_relocs (inbfd, insec, NULL, NULL,
-					       TRUE /* keep_memory  */);
+					       true /* keep_memory  */);
   if (internal_relocs == NULL)
     goto error_return;
 
@@ -13707,7 +13617,7 @@ nds32_elf_unify_tls_model (bfd *inbfd, a
   /* Get symbol table and section content.  */
   if (incontents)
     contents = incontents;
-  else if (!nds32_get_section_contents (inbfd, insec, &contents, TRUE)
+  else if (!nds32_get_section_contents (inbfd, insec, &contents, true)
 	   || !nds32_get_local_syms (inbfd, insec, &local_syms))
     goto error_return;
 
@@ -14018,19 +13928,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,8 +13955,8 @@ finish:
 
   return result;
 
-error_return:
-  result = FALSE;
+ error_return:
+  result = false;
   goto finish;
 }
 
@@ -14081,7 +13989,7 @@ error_return:
 #define elf_backend_create_dynamic_sections	nds32_elf_create_dynamic_sections
 #define elf_backend_finish_dynamic_sections	nds32_elf_finish_dynamic_sections
 #define elf_backend_finish_dynamic_symbol	nds32_elf_finish_dynamic_symbol
-#define elf_backend_size_dynamic_sections	nds32_elf_size_dynamic_sections
+#define elf_backend_late_size_sections		nds32_elf_late_size_sections
 #define elf_backend_relocate_section		nds32_elf_relocate_section
 #define elf_backend_gc_mark_hook		nds32_elf_gc_mark_hook
 #define elf_backend_grok_prstatus		nds32_elf_grok_prstatus
@@ -14093,6 +14001,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.20200303/bfd/elf32-nds32.h ./bfd/elf32-nds32.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-nds32.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-nds32.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* NDS32-specific support for 32-bit ELF.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+   Copyright (C) 2012-2025 Free Software Foundation, Inc.
    Contributed by Andes Technology Corporation.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -95,8 +95,6 @@ extern int elf32_nds32_check_relax_group
 extern int elf32_nds32_unify_relax_group (bfd *, asection *);
 extern int nds32_elf_unify_tls_model (bfd *, asection *, bfd_byte *,
 				      struct bfd_link_info *);
-extern void nds32_insertion_sort
-(void *, size_t, size_t, int (*) (const void *, const void *));
 
 extern int	   nds32_convert_32_to_16 (bfd *, uint32_t, uint16_t *, int *);
 extern int	   nds32_convert_16_to_32 (bfd *, uint16_t, uint32_t *);
@@ -104,10 +102,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,32 +120,15 @@ 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.  */
   FILE *sym_ld_script;		/* --mgen-symbol-ld-script=<file>.  */
-  bfd_boolean hyper_relax;	/* Relax for symbol not in RW sections.  */
+  int hyper_relax;		/* Relax for symbol not in RW sections.  */
   int tls_desc_trampoline;	/* --m[no-]tlsdesc-trampoline.  */
   /* 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.20200303/bfd/elf32-nios2.c ./bfd/elf32-nios2.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-nios2.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-nios2.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,6155 +0,0 @@
-/* 32-bit ELF support for Nios II.
-   Copyright (C) 2012-2019 Free Software Foundation, Inc.
-   Contributed by Nigel Gray (ngray@altera.com).
-   Contributed by Mentor Graphics, 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.  */
-
-/* This file handles Altera Nios II ELF targets.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-#include "bfdlink.h"
-#include "genlink.h"
-#include "elf-bfd.h"
-#include "elf/nios2.h"
-#include "opcode/nios2.h"
-#include "elf32-nios2.h"
-#include "libiberty.h"
-
-/* Use RELA relocations.  */
-#ifndef USE_RELA
-#define USE_RELA
-#endif
-
-#ifdef USE_REL
-#undef USE_REL
-#endif
-
-/* Forward declarations.  */
-static bfd_reloc_status_type nios2_elf32_ignore_reloc
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_hi16_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_lo16_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_hiadj16_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_pcrel_lo16_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_pcrel_hiadj16_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_pcrel16_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_call26_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_gprel_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_ujmp_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_cjmp_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_reloc_status_type nios2_elf32_callr_relocate
-  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-
-/* Target vector.  */
-extern const bfd_target nios2_elf32_le_vec;
-extern const bfd_target nios2_elf32_be_vec;
-
-/* Offset of tp and dtp pointers from start of TLS block.  */
-#define TP_OFFSET	0x7000
-#define DTP_OFFSET	0x8000
-
-/* The relocation tables used for SHT_REL sections.  There are separate
-   tables for R1 and R2 encodings.  */
-static reloc_howto_type elf_nios2_r1_howto_table_rel[] = {
-  /* No relocation.  */
-  HOWTO (R_NIOS2_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_NIOS2_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* 16-bit signed immediate relocation.  */
-  HOWTO (R_NIOS2_S16,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 6,			/* bitpos */
-	 complain_overflow_signed,	/* complain on overflow */
-	 bfd_elf_generic_reloc,	/* special function */
-	 "R_NIOS2_S16",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0x003fffc0,		/* src_mask */
-	 0x003fffc0,		/* dest_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* 16-bit unsigned immediate relocation.  */
-  HOWTO (R_NIOS2_U16,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 6,			/* bitpos */
-	 complain_overflow_unsigned,	/* complain on overflow */
-	 bfd_elf_generic_reloc,	/* special function */
-	 "R_NIOS2_U16",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0x003fffc0,		/* src_mask */
-	 0x003fffc0,		/* dest_mask */
-	 FALSE),		/* pcrel_offset */
-
-  HOWTO (R_NIOS2_PCREL16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 6,			/* bitpos */
-	 complain_overflow_signed,	/* complain on overflow */
-	 nios2_elf32_pcrel16_relocate,	/* special function */
-	 "R_NIOS2_PCREL16",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x003fffc0,		/* src_mask */
-	 0x003fffc0,		/* dest_mask */
-	 TRUE),			/* pcrel_offset */
-
-  HOWTO (R_NIOS2_CALL26,	/* type */
-	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 6,			/* bitpos */
-	 complain_overflow_dont,	/* complain on overflow */
-	 nios2_elf32_call26_relocate,	/* special function */
-	 "R_NIOS2_CALL26",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffffffc0,		/* src_mask */
-	 0xffffffc0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  HOWTO (R_NIOS2_IMM5,
-	 0,
-	 2,
-	 5,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_IMM5",
-	 FALSE,
-	 0x000007c0,
-	 0x000007c0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CACHE_OPX,
-	 0,
-	 2,
-	 5,
-	 FALSE,
-	 22,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_CACHE_OPX",
-	 FALSE,
-	 0x07c00000,
-	 0x07c00000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_IMM6,
-	 0,
-	 2,
-	 6,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_IMM6",
-	 FALSE,
-	 0x00000fc0,
-	 0x00000fc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_IMM8,
-	 0,
-	 2,
-	 8,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_IMM8",
-	 FALSE,
-	 0x00003fc0,
-	 0x00003fc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_HI16,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_hi16_relocate,
-	 "R_NIOS2_HI16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_LO16,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_lo16_relocate,
-	 "R_NIOS2_LO16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_HIADJ16,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_hiadj16_relocate,
-	 "R_NIOS2_HIADJ16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_BFD_RELOC_32,
-	 0,
-	 2,			/* long */
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_BFD_RELOC32",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_BFD_RELOC_16,
-	 0,
-	 1,			/* short */
-	 16,
-	 FALSE,
-	 0,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_BFD_RELOC16",
-	 FALSE,
-	 0x0000ffff,
-	 0x0000ffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_BFD_RELOC_8,
-	 0,
-	 0,			/* byte */
-	 8,
-	 FALSE,
-	 0,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_BFD_RELOC8",
-	 FALSE,
-	 0x000000ff,
-	 0x000000ff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GPREL,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_gprel_relocate,
-	 "R_NIOS2_GPREL",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GNU_VTINHERIT,
-	 0,
-	 2,			/* short */
-	 0,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 NULL,
-	 "R_NIOS2_GNU_VTINHERIT",
-	 FALSE,
-	 0,
-	 0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GNU_VTENTRY,
-	 0,
-	 2,			/* byte */
-	 0,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 _bfd_elf_rel_vtable_reloc_fn,
-	 "R_NIOS2_GNU_VTENTRY",
-	 FALSE,
-	 0,
-	 0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_UJMP,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_ujmp_relocate,
-	 "R_NIOS2_UJMP",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CJMP,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_cjmp_relocate,
-	 "R_NIOS2_CJMP",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALLR,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_callr_relocate,
-	 "R_NIOS2_CALLR",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_ALIGN,
-	 0,
-	 2,
-	 0,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 nios2_elf32_ignore_reloc,
-	 "R_NIOS2_ALIGN",
-	 FALSE,
-	 0,
-	 0,
-	 TRUE),
-
-
-  HOWTO (R_NIOS2_GOT16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOT16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALL16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_CALL16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GOTOFF_LO,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOTOFF_LO",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GOTOFF_HA,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOTOFF_HA",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_PCREL_LO,
-	 0,
-	 2,
-	 16,
-	 TRUE,
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_pcrel_lo16_relocate,
-	 "R_NIOS2_PCREL_LO",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 TRUE),
-
-  HOWTO (R_NIOS2_PCREL_HA,
-	 0,
-	 2,
-	 16,
-	 FALSE, /* This is a PC-relative relocation, but we need to subtract
-		   PC ourselves before the HIADJ.  */
-	 6,
-	 complain_overflow_dont,
-	 nios2_elf32_pcrel_hiadj16_relocate,
-	 "R_NIOS2_PCREL_HA",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 TRUE),
-
-  HOWTO (R_NIOS2_TLS_GD16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_GD16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_LDM16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_LDM16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_LDO16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_LDO16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_IE16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_IE16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_LE16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_LE16",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_DTPMOD,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_DTPMOD",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_DTPREL,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_DTPREL",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_TPREL,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_TPREL",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_COPY,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_COPY",
-	 FALSE,
-	 0,
-	 0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GLOB_DAT,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GLOB_DAT",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_JUMP_SLOT,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_JUMP_SLOT",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_RELATIVE,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_RELATIVE",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GOTOFF,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOTOFF",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALL26_NOAT,	/* type */
-	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 6,			/* bitpos */
-	 complain_overflow_dont,	/* complain on overflow */
-	 nios2_elf32_call26_relocate,	/* special function */
-	 "R_NIOS2_CALL26_NOAT",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffffffc0,		/* src_mask */
-	 0xffffffc0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  HOWTO (R_NIOS2_GOT_LO,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOT_LO",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GOT_HA,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOT_HA",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALL_LO,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_CALL_LO",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALL_HA,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 6,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_CALL_HA",
-	 FALSE,
-	 0x003fffc0,
-	 0x003fffc0,
-	 FALSE),
-
-/* Add other relocations here.  */
-};
-
-static reloc_howto_type elf_nios2_r2_howto_table_rel[] = {
-  /* No relocation.  */
-  HOWTO (R_NIOS2_NONE,		/* type */
-	 0,			/* rightshift */
-	 0,			/* 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_NIOS2_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* 16-bit signed immediate relocation.  */
-  HOWTO (R_NIOS2_S16,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 16,			/* bitpos */
-	 complain_overflow_signed,	/* complain on overflow */
-	 bfd_elf_generic_reloc,	/* special function */
-	 "R_NIOS2_S16",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff0000,		/* src_mask */
-	 0xffff0000,		/* dest_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* 16-bit unsigned immediate relocation.  */
-  HOWTO (R_NIOS2_U16,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 16,			/* bitpos */
-	 complain_overflow_unsigned,	/* complain on overflow */
-	 bfd_elf_generic_reloc,	/* special function */
-	 "R_NIOS2_U16",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff0000,		/* src_mask */
-	 0xffff0000,		/* dest_mask */
-	 FALSE),		/* pcrel_offset */
-
-  HOWTO (R_NIOS2_PCREL16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 16,			/* bitpos */
-	 complain_overflow_signed,	/* complain on overflow */
-	 nios2_elf32_pcrel16_relocate,	/* special function */
-	 "R_NIOS2_PCREL16",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff0000,		/* src_mask */
-	 0xffff0000,		/* dest_mask */
-	 TRUE),			/* pcrel_offset */
-
-  HOWTO (R_NIOS2_CALL26,	/* type */
-	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 6,			/* bitpos */
-	 complain_overflow_dont,	/* complain on overflow */
-	 nios2_elf32_call26_relocate,	/* special function */
-	 "R_NIOS2_CALL26",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffffffc0,		/* src_mask */
-	 0xffffffc0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  HOWTO (R_NIOS2_IMM5,
-	 0,
-	 2,
-	 5,
-	 FALSE,
-	 21,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_IMM5",
-	 FALSE,
-	 0x03e00000,
-	 0x03e00000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CACHE_OPX,
-	 0,
-	 2,
-	 5,
-	 FALSE,
-	 11,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_CACHE_OPX",
-	 FALSE,
-	 0x0000f800,
-	 0x0000f800,
-	 FALSE),
-
-  HOWTO (R_NIOS2_IMM6,
-	 0,
-	 2,
-	 6,
-	 FALSE,
-	 26,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_IMM6",
-	 FALSE,
-	 0xfc000000,
-	 0xfc000000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_IMM8,
-	 0,
-	 2,
-	 8,
-	 FALSE,
-	 24,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_IMM8",
-	 FALSE,
-	 0xff000000,
-	 0xff000000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_HI16,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_hi16_relocate,
-	 "R_NIOS2_HI16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_LO16,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_lo16_relocate,
-	 "R_NIOS2_LO16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_HIADJ16,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_hiadj16_relocate,
-	 "R_NIOS2_HIADJ16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_BFD_RELOC_32,
-	 0,
-	 2,			/* long */
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_BFD_RELOC32",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_BFD_RELOC_16,
-	 0,
-	 1,			/* short */
-	 16,
-	 FALSE,
-	 0,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_BFD_RELOC16",
-	 FALSE,
-	 0x0000ffff,
-	 0x0000ffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_BFD_RELOC_8,
-	 0,
-	 0,			/* byte */
-	 8,
-	 FALSE,
-	 0,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_BFD_RELOC8",
-	 FALSE,
-	 0x000000ff,
-	 0x000000ff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GPREL,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_gprel_relocate,
-	 "R_NIOS2_GPREL",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GNU_VTINHERIT,
-	 0,
-	 2,			/* short */
-	 0,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 NULL,
-	 "R_NIOS2_GNU_VTINHERIT",
-	 FALSE,
-	 0,
-	 0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GNU_VTENTRY,
-	 0,
-	 2,			/* byte */
-	 0,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 _bfd_elf_rel_vtable_reloc_fn,
-	 "R_NIOS2_GNU_VTENTRY",
-	 FALSE,
-	 0,
-	 0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_UJMP,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_ujmp_relocate,
-	 "R_NIOS2_UJMP",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CJMP,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_cjmp_relocate,
-	 "R_NIOS2_CJMP",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALLR,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_callr_relocate,
-	 "R_NIOS2_CALLR",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_ALIGN,
-	 0,
-	 2,
-	 0,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 nios2_elf32_ignore_reloc,
-	 "R_NIOS2_ALIGN",
-	 FALSE,
-	 0,
-	 0,
-	 TRUE),
-
-  HOWTO (R_NIOS2_GOT16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOT16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALL16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_CALL16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GOTOFF_LO,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOTOFF_LO",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GOTOFF_HA,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOTOFF_HA",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_PCREL_LO,
-	 0,
-	 2,
-	 16,
-	 TRUE,
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_pcrel_lo16_relocate,
-	 "R_NIOS2_PCREL_LO",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 TRUE),
-
-  HOWTO (R_NIOS2_PCREL_HA,
-	 0,
-	 2,
-	 16,
-	 FALSE, /* This is a PC-relative relocation, but we need to subtract
-		   PC ourselves before the HIADJ.  */
-	 16,
-	 complain_overflow_dont,
-	 nios2_elf32_pcrel_hiadj16_relocate,
-	 "R_NIOS2_PCREL_HA",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 TRUE),
-
-  HOWTO (R_NIOS2_TLS_GD16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_GD16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_LDM16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_LDM16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_LDO16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_LDO16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_IE16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_IE16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_LE16,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_bitfield,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_LE16",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_DTPMOD,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_DTPMOD",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_DTPREL,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_DTPREL",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_TLS_TPREL,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_TLS_TPREL",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_COPY,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_COPY",
-	 FALSE,
-	 0,
-	 0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GLOB_DAT,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GLOB_DAT",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_JUMP_SLOT,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_JUMP_SLOT",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_RELATIVE,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_RELATIVE",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GOTOFF,
-	 0,
-	 2,
-	 32,
-	 FALSE,
-	 0,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOTOFF",
-	 FALSE,
-	 0xffffffff,
-	 0xffffffff,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALL26_NOAT,	/* type */
-	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 6,			/* bitpos */
-	 complain_overflow_dont,	/* complain on overflow */
-	 nios2_elf32_call26_relocate,	/* special function */
-	 "R_NIOS2_CALL26_NOAT",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffffffc0,		/* src_mask */
-	 0xffffffc0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  HOWTO (R_NIOS2_GOT_LO,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOT_LO",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_GOT_HA,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_GOT_HA",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALL_LO,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_CALL_LO",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_CALL_HA,
-	 0,
-	 2,
-	 16,
-	 FALSE,
-	 16,
-	 complain_overflow_dont,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_CALL_HA",
-	 FALSE,
-	 0xffff0000,
-	 0xffff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_S12,
-	 0,
-	 2,
-	 12,
-	 FALSE,
-	 16,
-	 complain_overflow_signed,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_S12",
-	 FALSE,
-	 0x0fff0000,
-	 0x0fff0000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_I10_1_PCREL,
-	 1,
-	 1,
-	 10,
-	 TRUE,
-	 6,
-	 complain_overflow_signed,
-	 bfd_elf_generic_reloc,		/* FIXME? */
-	 "R_NIOS2_R2_I10_1_PCREL",
-	 FALSE,
-	 0xffc0,
-	 0xffc0,
-	 TRUE),
-
-  HOWTO (R_NIOS2_R2_T1I7_1_PCREL,
-	 1,
-	 1,
-	 7,
-	 TRUE,
-	 9,
-	 complain_overflow_signed,
-	 bfd_elf_generic_reloc,		/* FIXME? */
-	 "R_NIOS2_R2_T1I7_1_PCREL",
-	 FALSE,
-	 0xfe00,
-	 0xfe00,
-	 TRUE),
-
-  HOWTO (R_NIOS2_R2_T1I7_2,
-	 2,
-	 1,
-	 7,
-	 FALSE,
-	 9,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_T1I7_2",
-	 FALSE,
-	 0xfe00,
-	 0xfe00,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_T2I4,
-	 0,
-	 1,
-	 4,
-	 FALSE,
-	 12,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_T2I4",
-	 FALSE,
-	 0xf000,
-	 0xf000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_T2I4_1,
-	 1,
-	 1,
-	 4,
-	 FALSE,
-	 12,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_T2I4_1",
-	 FALSE,
-	 0xf000,
-	 0xf000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_T2I4_2,
-	 2,
-	 1,
-	 4,
-	 FALSE,
-	 12,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_T2I4_2",
-	 FALSE,
-	 0xf000,
-	 0xf000,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_X1I7_2,
-	 2,
-	 1,
-	 7,
-	 FALSE,
-	 6,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_X1I7_2",
-	 FALSE,
-	 0x1fc0,
-	 0x1fc0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_X2L5,
-	 0,
-	 1,
-	 5,
-	 FALSE,
-	 6,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_X2L5",
-	 FALSE,
-	 0x07c0,
-	 0x07c0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_F1I5_2,
-	 2,
-	 1,
-	 5,
-	 FALSE,
-	 6,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_F1L5_2",
-	 FALSE,
-	 0x07c0,
-	 0x07c0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_L5I4X1,
-	 2,
-	 1,
-	 4,
-	 FALSE,
-	 6,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_L5I4X1",
-	 FALSE,
-	 0x03c0,
-	 0x03c0,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_T1X1I6,
-	 0,
-	 1,
-	 6,
-	 FALSE,
-	 9,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_T1X1I6",
-	 FALSE,
-	 0x7e00,
-	 0x7e00,
-	 FALSE),
-
-  HOWTO (R_NIOS2_R2_T1X1I6_2,
-	 2,
-	 2,
-	 6,
-	 FALSE,
-	 9,
-	 complain_overflow_unsigned,
-	 bfd_elf_generic_reloc,
-	 "R_NIOS2_R2_T1I1X6_2",
-	 FALSE,
-	 0x7e00,
-	 0x7e00,
-	 FALSE),
-
-/* Add other relocations here.  */
-};
-
-static unsigned char elf_code_to_howto_index[R_NIOS2_ILLEGAL + 1];
-
-
-/* Return true if producing output for a R2 BFD.  */
-#define BFD_IS_R2(abfd) (bfd_get_mach (abfd) == bfd_mach_nios2r2)
-
-/* Return the howto for relocation RTYPE.  */
-static reloc_howto_type *
-lookup_howto (unsigned int rtype, bfd *abfd)
-{
-  static int initialized = 0;
-  int i;
-  /* R2 relocations are a superset of R1, so use that for the lookup
-     table.  */
-  int r1_howto_tbl_size = (int) ARRAY_SIZE (elf_nios2_r1_howto_table_rel);
-  int r2_howto_tbl_size = (int) ARRAY_SIZE (elf_nios2_r2_howto_table_rel);
-
-  if (!initialized)
-    {
-      initialized = 1;
-      memset (elf_code_to_howto_index, 0xff,
-	      sizeof (elf_code_to_howto_index));
-      for (i = 0; i < r2_howto_tbl_size; i++)
-	{
-	  elf_code_to_howto_index[elf_nios2_r2_howto_table_rel[i].type] = i;
-	  if (i < r1_howto_tbl_size)
-	    BFD_ASSERT (elf_nios2_r2_howto_table_rel[i].type
-			== elf_nios2_r1_howto_table_rel[i].type);
-	}
-    }
-
-  if (rtype > R_NIOS2_ILLEGAL)
-    return NULL;
-  i = elf_code_to_howto_index[rtype];
-  if (BFD_IS_R2 (abfd))
-    {
-      if (i >= r2_howto_tbl_size)
-	return NULL;
-      return elf_nios2_r2_howto_table_rel + i;
-    }
-  else
-    {
-      if (i >= r1_howto_tbl_size)
-	return NULL;
-      return elf_nios2_r1_howto_table_rel + i;
-    }
-}
-
-/* Map for converting BFD reloc types to Nios II reloc types.  */
-struct elf_reloc_map
-{
-  bfd_reloc_code_real_type bfd_val;
-  enum elf_nios2_reloc_type elf_val;
-};
-
-static const struct elf_reloc_map nios2_reloc_map[] =
-{
-  {BFD_RELOC_NONE, R_NIOS2_NONE},
-  {BFD_RELOC_NIOS2_S16, R_NIOS2_S16},
-  {BFD_RELOC_NIOS2_U16, R_NIOS2_U16},
-  {BFD_RELOC_16_PCREL, R_NIOS2_PCREL16},
-  {BFD_RELOC_NIOS2_CALL26, R_NIOS2_CALL26},
-  {BFD_RELOC_NIOS2_IMM5, R_NIOS2_IMM5},
-  {BFD_RELOC_NIOS2_CACHE_OPX, R_NIOS2_CACHE_OPX},
-  {BFD_RELOC_NIOS2_IMM6, R_NIOS2_IMM6},
-  {BFD_RELOC_NIOS2_IMM8, R_NIOS2_IMM8},
-  {BFD_RELOC_NIOS2_HI16, R_NIOS2_HI16},
-  {BFD_RELOC_NIOS2_LO16, R_NIOS2_LO16},
-  {BFD_RELOC_NIOS2_HIADJ16, R_NIOS2_HIADJ16},
-  {BFD_RELOC_32, R_NIOS2_BFD_RELOC_32},
-  {BFD_RELOC_16, R_NIOS2_BFD_RELOC_16},
-  {BFD_RELOC_8, R_NIOS2_BFD_RELOC_8},
-  {BFD_RELOC_NIOS2_GPREL, R_NIOS2_GPREL},
-  {BFD_RELOC_VTABLE_INHERIT, R_NIOS2_GNU_VTINHERIT},
-  {BFD_RELOC_VTABLE_ENTRY, R_NIOS2_GNU_VTENTRY},
-  {BFD_RELOC_NIOS2_UJMP, R_NIOS2_UJMP},
-  {BFD_RELOC_NIOS2_CJMP, R_NIOS2_CJMP},
-  {BFD_RELOC_NIOS2_CALLR, R_NIOS2_CALLR},
-  {BFD_RELOC_NIOS2_ALIGN, R_NIOS2_ALIGN},
-  {BFD_RELOC_NIOS2_GOT16, R_NIOS2_GOT16},
-  {BFD_RELOC_NIOS2_CALL16, R_NIOS2_CALL16},
-  {BFD_RELOC_NIOS2_GOTOFF_LO, R_NIOS2_GOTOFF_LO},
-  {BFD_RELOC_NIOS2_GOTOFF_HA, R_NIOS2_GOTOFF_HA},
-  {BFD_RELOC_NIOS2_PCREL_LO, R_NIOS2_PCREL_LO},
-  {BFD_RELOC_NIOS2_PCREL_HA, R_NIOS2_PCREL_HA},
-  {BFD_RELOC_NIOS2_TLS_GD16, R_NIOS2_TLS_GD16},
-  {BFD_RELOC_NIOS2_TLS_LDM16, R_NIOS2_TLS_LDM16},
-  {BFD_RELOC_NIOS2_TLS_LDO16, R_NIOS2_TLS_LDO16},
-  {BFD_RELOC_NIOS2_TLS_IE16, R_NIOS2_TLS_IE16},
-  {BFD_RELOC_NIOS2_TLS_LE16, R_NIOS2_TLS_LE16},
-  {BFD_RELOC_NIOS2_TLS_DTPMOD, R_NIOS2_TLS_DTPMOD},
-  {BFD_RELOC_NIOS2_TLS_DTPREL, R_NIOS2_TLS_DTPREL},
-  {BFD_RELOC_NIOS2_TLS_TPREL, R_NIOS2_TLS_TPREL},
-  {BFD_RELOC_NIOS2_COPY, R_NIOS2_COPY},
-  {BFD_RELOC_NIOS2_GLOB_DAT, R_NIOS2_GLOB_DAT},
-  {BFD_RELOC_NIOS2_JUMP_SLOT, R_NIOS2_JUMP_SLOT},
-  {BFD_RELOC_NIOS2_RELATIVE, R_NIOS2_RELATIVE},
-  {BFD_RELOC_NIOS2_GOTOFF, R_NIOS2_GOTOFF},
-  {BFD_RELOC_NIOS2_CALL26_NOAT, R_NIOS2_CALL26_NOAT},
-  {BFD_RELOC_NIOS2_GOT_LO, R_NIOS2_GOT_LO},
-  {BFD_RELOC_NIOS2_GOT_HA, R_NIOS2_GOT_HA},
-  {BFD_RELOC_NIOS2_CALL_LO, R_NIOS2_CALL_LO},
-  {BFD_RELOC_NIOS2_CALL_HA, R_NIOS2_CALL_HA},
-  {BFD_RELOC_NIOS2_R2_S12, R_NIOS2_R2_S12},
-  {BFD_RELOC_NIOS2_R2_I10_1_PCREL, R_NIOS2_R2_I10_1_PCREL},
-  {BFD_RELOC_NIOS2_R2_T1I7_1_PCREL, R_NIOS2_R2_T1I7_1_PCREL},
-  {BFD_RELOC_NIOS2_R2_T1I7_2, R_NIOS2_R2_T1I7_2},
-  {BFD_RELOC_NIOS2_R2_T2I4, R_NIOS2_R2_T2I4},
-  {BFD_RELOC_NIOS2_R2_T2I4_1, R_NIOS2_R2_T2I4_1},
-  {BFD_RELOC_NIOS2_R2_T2I4_2, R_NIOS2_R2_T2I4_2},
-  {BFD_RELOC_NIOS2_R2_X1I7_2, R_NIOS2_R2_X1I7_2},
-  {BFD_RELOC_NIOS2_R2_X2L5, R_NIOS2_R2_X2L5},
-  {BFD_RELOC_NIOS2_R2_F1I5_2, R_NIOS2_R2_F1I5_2},
-  {BFD_RELOC_NIOS2_R2_L5I4X1, R_NIOS2_R2_L5I4X1},
-  {BFD_RELOC_NIOS2_R2_T1X1I6, R_NIOS2_R2_T1X1I6},
-  {BFD_RELOC_NIOS2_R2_T1X1I6_2, R_NIOS2_R2_T1X1I6_2},
-};
-
-enum elf32_nios2_stub_type
-{
-  nios2_stub_call26_before,
-  nios2_stub_call26_after,
-  nios2_stub_none
-};
-
-struct elf32_nios2_stub_hash_entry
-{
-  /* Base hash table entry structure.  */
-  struct bfd_hash_entry bh_root;
-
-  /* The stub section.  */
-  asection *stub_sec;
-
-  /* Offset within stub_sec of the beginning of this stub.  */
-  bfd_vma stub_offset;
-
-  /* Given the symbol's value and its section we can determine its final
-     value when building the stubs (so the stub knows where to jump.  */
-  bfd_vma target_value;
-  asection *target_section;
-
-  enum elf32_nios2_stub_type stub_type;
-
-  /* The symbol table entry, if any, that this was derived from.  */
-  struct elf32_nios2_link_hash_entry *hh;
-
-  /* And the reloc addend that this was derived from.  */
-  bfd_vma addend;
-
-  /* Where this stub is being called from, or, in the case of combined
-     stub sections, the first input section in the group.  */
-  asection *id_sec;
-};
-
-#define nios2_stub_hash_entry(ent) \
-  ((struct elf32_nios2_stub_hash_entry *)(ent))
-
-#define nios2_stub_hash_lookup(table, string, create, copy) \
-  ((struct elf32_nios2_stub_hash_entry *) \
-   bfd_hash_lookup ((table), (string), (create), (copy)))
-
-
-/* Nios II ELF linker hash entry.  */
-
-struct elf32_nios2_link_hash_entry
-{
-  struct elf_link_hash_entry root;
-
-  /* A pointer to the most recently used stub hash entry against this
-     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
-#define GOT_TLS_IE	4
-  unsigned char tls_type;
-
-  /* We need to detect and take special action for symbols which are only
-     referenced with %call() and not with %got().  Such symbols do not need
-     a dynamic GOT reloc in shared objects, only a dynamic PLT reloc.  Lazy
-     linking will not work if the dynamic GOT reloc exists.
-     To check for this condition efficiently, we compare got_types_used against
-     CALL_USED, meaning
-     (got_types_used & (GOT_USED | CALL_USED)) == CALL_USED.
-  */
-#define GOT_USED	1
-#define CALL_USED	2
-  unsigned char got_types_used;
-};
-
-#define elf32_nios2_hash_entry(ent) \
-  ((struct elf32_nios2_link_hash_entry *) (ent))
-
-/* Get the Nios II elf linker hash table from a link_info structure.  */
-#define elf32_nios2_hash_table(info) \
-  ((struct elf32_nios2_link_hash_table *) ((info)->hash))
-
-/* Nios II ELF linker hash table.  */
-struct elf32_nios2_link_hash_table
-  {
-    /* The main hash table.  */
-    struct elf_link_hash_table root;
-
-    /* The stub hash table.  */
-    struct bfd_hash_table bstab;
-
-    /* Linker stub bfd.  */
-    bfd *stub_bfd;
-
-    /* Linker call-backs.  */
-    asection * (*add_stub_section) (const char *, asection *, bfd_boolean);
-    void (*layout_sections_again) (void);
-
-    /* Array to keep track of which stub sections have been created, and
-       information on stub grouping.  */
-    struct map_stub
-    {
-      /* These are the section to which stubs in the group will be
-	 attached.  */
-      asection *first_sec, *last_sec;
-      /* The stub sections.  There might be stubs inserted either before
-	 or after the real section.*/
-      asection *first_stub_sec, *last_stub_sec;
-    } *stub_group;
-
-    /* Assorted information used by nios2_elf32_size_stubs.  */
-    unsigned int bfd_count;
-    unsigned int top_index;
-    asection **input_list;
-    Elf_Internal_Sym **all_local_syms;
-
-    /* Short-cuts to get to dynamic linker sections.  */
-    asection *sbss;
-
-    /* GOT pointer symbol _gp_got.  */
-    struct elf_link_hash_entry *h_gp_got;
-
-    union {
-      bfd_signed_vma refcount;
-      bfd_vma offset;
-    } tls_ldm_got;
-
-    /* Small local sym cache.  */
-    struct sym_cache sym_cache;
-
-    bfd_vma res_n_size;
-  };
-
-struct nios2_elf32_obj_tdata
-{
-  struct elf_obj_tdata root;
-
-  /* tls_type for each local got entry.  */
-  char *local_got_tls_type;
-
-  /* TRUE if TLS GD relocs have been seen for this object.  */
-  bfd_boolean has_tlsgd;
-};
-
-#define elf32_nios2_tdata(abfd) \
-  ((struct nios2_elf32_obj_tdata *) (abfd)->tdata.any)
-
-#define elf32_nios2_local_got_tls_type(abfd) \
-  (elf32_nios2_tdata (abfd)->local_got_tls_type)
-
-/* The name of the dynamic interpreter.  This is put in the .interp
-   section.  */
-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
-
-/* PLT implementation for position-dependent code.  */
-static const bfd_vma nios2_plt_entry[] = { /* .PLTn: */
-  0x03c00034,	/* movhi r15, %hiadj(plt_got_slot_address) */
-  0x7bc00017,	/* ldw r15, %lo(plt_got_slot_address)(r15) */
-  0x7800683a	/* jmp r15 */
-};
-
-static const bfd_vma nios2_plt0_entry[] = { /* .PLTresolve */
-  0x03800034,	/* movhi r14, %hiadj(res_0) */
-  0x73800004,	/* addi r14, r14, %lo(res_0) */
-  0x7b9fc83a,	/* sub r15, r15, r14 */
-  0x03400034,	/* movhi r13, %hiadj(_GLOBAL_OFFSET_TABLE_) */
-  0x6b800017,	/* ldw r14, %lo(_GLOBAL_OFFSET_TABLE_+4)(r13) */
-  0x6b400017,	/* ldw r13, %lo(_GLOBAL_OFFSET_TABLE_+8)(r13) */
-  0x6800683a	/* jmp r13 */
-};
-
-/* PLT implementation for position-independent code.  */
-static const bfd_vma nios2_so_plt_entry[] = { /* .PLTn */
-  0x03c00034,	/* movhi r15, %hiadj(index * 4) */
-  0x7bc00004,	/* addi r15, r15, %lo(index * 4) */
-  0x00000006	/* br .PLTresolve */
-};
-
-static const bfd_vma nios2_so_plt0_entry[] = { /* .PLTresolve */
-  0x001ce03a,	/* nextpc r14 */
-  0x03400034,	/* movhi r13, %hiadj(_GLOBAL_OFFSET_TABLE_) */
-  0x6b9b883a,	/* add r13, r13, r14 */
-  0x6b800017,	/* ldw r14, %lo(_GLOBAL_OFFSET_TABLE_+4)(r13) */
-  0x6b400017,	/* ldw r13, %lo(_GLOBAL_OFFSET_TABLE_+8)(r13) */
-  0x6800683a	/* jmp r13 */
-};
-
-/* CALL26 stub.  */
-static const bfd_vma nios2_call26_stub_entry[] = {
-  0x00400034,	/* orhi at, r0, %hiadj(dest) */
-  0x08400004,	/* addi at, at, %lo(dest) */
-  0x0800683a	/* jmp at */
-};
-
-/* Install 16-bit immediate value VALUE at offset OFFSET into section SEC.  */
-static void
-nios2_elf32_install_imm16 (asection *sec, bfd_vma offset, bfd_vma value)
-{
-  bfd_vma word = bfd_get_32 (sec->owner, sec->contents + offset);
-
-  BFD_ASSERT (value <= 0xffff || ((bfd_signed_vma) value) >= -0xffff);
-
-  bfd_put_32 (sec->owner, word | ((value & 0xffff) << 6),
-	      sec->contents + offset);
-}
-
-/* Install COUNT 32-bit values DATA starting at offset OFFSET into
-   section SEC. */
-static void
-nios2_elf32_install_data (asection *sec, const bfd_vma *data, bfd_vma offset,
-			  int count)
-{
-  while (count--)
-    {
-      bfd_put_32 (sec->owner, *data, sec->contents + offset);
-      offset += 4;
-      ++data;
-    }
-}
-
-/* The usual way of loading a 32-bit constant into a Nios II register is to
-   load the high 16 bits in one instruction and then add the low 16 bits with
-   a signed add. This means that the high halfword needs to be adjusted to
-   compensate for the sign bit of the low halfword. This function returns the
-   adjusted high halfword for a given 32-bit constant.  */
-static
-bfd_vma hiadj (bfd_vma symbol_value)
-{
-  return ((symbol_value + 0x8000) >> 16) & 0xffff;
-}
-
-/* Implement elf_backend_grok_prstatus:
-   Support for core dump NOTE sections.  */
-static bfd_boolean
-nios2_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
-{
-  int offset;
-  size_t size;
-
-  switch (note->descsz)
-    {
-    default:
-      return FALSE;
-
-    case 212:	      /* Linux/Nios II */
-      /* pr_cursig */
-      elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
-
-      /* pr_pid */
-      elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, note->descdata + 24);
-
-      /* pr_reg */
-      offset = 72;
-      size = 136;
-
-      break;
-    }
-
-  /* Make a ".reg/999" section.  */
-  return _bfd_elfcore_make_pseudosection (abfd, ".reg",
-					  size, note->descpos + offset);
-}
-
-/* Implement elf_backend_grok_psinfo.  */
-static bfd_boolean
-nios2_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
-{
-  switch (note->descsz)
-    {
-    default:
-      return FALSE;
-
-    case 124:	      /* Linux/Nios II elf_prpsinfo */
-      elf_tdata (abfd)->core->program
-	= _bfd_elfcore_strndup (abfd, note->descdata + 28, 16);
-      elf_tdata (abfd)->core->command
-	= _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
-    }
-
-  /* Note that for some reason, a spurious space is tacked
-     onto the end of the args in some (at least one anyway)
-     implementations, so strip it off if it exists.  */
-
-  {
-    char *command = elf_tdata (abfd)->core->command;
-    int n = strlen (command);
-
-    if (0 < n && command[n - 1] == ' ')
-      command[n - 1] = '\0';
-  }
-
-  return TRUE;
-}
-
-/* Assorted hash table functions.  */
-
-/* Initialize an entry in the stub hash table.  */
-static struct bfd_hash_entry *
-stub_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_nios2_stub_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 elf32_nios2_stub_hash_entry *hsh;
-
-      /* Initialize the local fields.  */
-      hsh = (struct elf32_nios2_stub_hash_entry *) entry;
-      hsh->stub_sec = NULL;
-      hsh->stub_offset = 0;
-      hsh->target_value = 0;
-      hsh->target_section = NULL;
-      hsh->stub_type = nios2_stub_none;
-      hsh->hh = NULL;
-      hsh->id_sec = NULL;
-    }
-
-  return entry;
-}
-
-/* Create an entry in a Nios II ELF linker hash table.  */
-static struct bfd_hash_entry *
-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_nios2_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)
-    {
-      struct elf32_nios2_link_hash_entry *eh;
-
-      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;
-    }
-
-  return entry;
-}
-
-/* Section name for stubs is the associated section name plus this
-   string.  */
-#define STUB_SUFFIX ".stub"
-
-/* Build a name for an entry in the stub hash table.  */
-static char *
-nios2_stub_name (const asection *input_section,
-		 const asection *sym_sec,
-		 const struct elf32_nios2_link_hash_entry *hh,
-		 const Elf_Internal_Rela *rel,
-		 enum elf32_nios2_stub_type stub_type)
-{
-  char *stub_name;
-  bfd_size_type len;
-  char stubpos = (stub_type == nios2_stub_call26_before) ? 'b' : 'a';
-
-  if (hh)
-    {
-      len = 8 + 1 + 1 + 1+ strlen (hh->root.root.root.string) + 1 + 8 + 1;
-      stub_name = bfd_malloc (len);
-      if (stub_name != NULL)
-	{
-	  sprintf (stub_name, "%08x_%c_%s+%x",
-		   input_section->id & 0xffffffff,
-		   stubpos,
-		   hh->root.root.root.string,
-		   (int) rel->r_addend & 0xffffffff);
-	}
-    }
-  else
-    {
-      len = 8 + 1 + 1 + 1+ 8 + 1 + 8 + 1 + 8 + 1;
-      stub_name = bfd_malloc (len);
-      if (stub_name != NULL)
-	{
-	  sprintf (stub_name, "%08x_%c_%x:%x+%x",
-		   input_section->id & 0xffffffff,
-		   stubpos,
-		   sym_sec->id & 0xffffffff,
-		   (int) ELF32_R_SYM (rel->r_info) & 0xffffffff,
-		   (int) rel->r_addend & 0xffffffff);
-	}
-    }
-  return stub_name;
-}
-
-/* Look up an entry in the stub hash.  Stub entries are cached because
-   creating the stub name takes a bit of time.  */
-static struct elf32_nios2_stub_hash_entry *
-nios2_get_stub_entry (const asection *input_section,
-		      const asection *sym_sec,
-		      struct elf32_nios2_link_hash_entry *hh,
-		      const Elf_Internal_Rela *rel,
-		      struct elf32_nios2_link_hash_table *htab,
-		      enum elf32_nios2_stub_type stub_type)
-{
-  struct elf32_nios2_stub_hash_entry *hsh;
-  const asection *id_sec;
-
-  /* If this input section is part of a group of sections sharing one
-     stub section, then use the id of the first/last section in the group,
-     depending on the stub section placement relative to the group.
-     Stub names need to include a section id, as there may well be
-     more than one stub used to reach say, printf, and we need to
-     distinguish between them.  */
-  if (stub_type == nios2_stub_call26_before)
-    id_sec = htab->stub_group[input_section->id].first_sec;
-  else
-    id_sec = htab->stub_group[input_section->id].last_sec;
-
-  if (hh != NULL && hh->hsh_cache != NULL
-      && hh->hsh_cache->hh == hh
-      && hh->hsh_cache->id_sec == id_sec
-      && hh->hsh_cache->stub_type == stub_type)
-    {
-      hsh = hh->hsh_cache;
-    }
-  else
-    {
-      char *stub_name;
-
-      stub_name = nios2_stub_name (id_sec, sym_sec, hh, rel, stub_type);
-      if (stub_name == NULL)
-	return NULL;
-
-      hsh = nios2_stub_hash_lookup (&htab->bstab,
-				    stub_name, FALSE, FALSE);
-
-      if (hh != NULL)
-	hh->hsh_cache = hsh;
-
-      free (stub_name);
-    }
-
-  return hsh;
-}
-
-/* Add a new stub entry to the stub hash.  Not all fields of the new
-   stub entry are initialised.  */
-static struct elf32_nios2_stub_hash_entry *
-nios2_add_stub (const char *stub_name,
-		asection *section,
-		struct elf32_nios2_link_hash_table *htab,
-		enum elf32_nios2_stub_type stub_type)
-{
-  asection *link_sec;
-  asection *stub_sec;
-  asection **secptr, **linkptr;
-  struct elf32_nios2_stub_hash_entry *hsh;
-  bfd_boolean afterp;
-
-  if (stub_type == nios2_stub_call26_before)
-    {
-      link_sec = htab->stub_group[section->id].first_sec;
-      secptr = &(htab->stub_group[section->id].first_stub_sec);
-      linkptr = &(htab->stub_group[link_sec->id].first_stub_sec);
-      afterp = FALSE;
-    }
-  else
-    {
-      link_sec = htab->stub_group[section->id].last_sec;
-      secptr = &(htab->stub_group[section->id].last_stub_sec);
-      linkptr = &(htab->stub_group[link_sec->id].last_stub_sec);
-      afterp = TRUE;
-    }
-  stub_sec = *secptr;
-  if (stub_sec == NULL)
-    {
-      stub_sec = *linkptr;
-      if (stub_sec == NULL)
-	{
-	  size_t namelen;
-	  bfd_size_type len;
-	  char *s_name;
-
-	  namelen = strlen (link_sec->name);
-	  len = namelen + sizeof (STUB_SUFFIX);
-	  s_name = bfd_alloc (htab->stub_bfd, len);
-	  if (s_name == NULL)
-	    return NULL;
-
-	  memcpy (s_name, link_sec->name, namelen);
-	  memcpy (s_name + namelen, STUB_SUFFIX, sizeof (STUB_SUFFIX));
-
-	  stub_sec = (*htab->add_stub_section) (s_name, link_sec, afterp);
-	  if (stub_sec == NULL)
-	    return NULL;
-	  *linkptr = stub_sec;
-	}
-      *secptr = stub_sec;
-    }
-
-  /* Enter this entry into the linker stub hash table.  */
-  hsh = nios2_stub_hash_lookup (&htab->bstab, stub_name,
-				TRUE, FALSE);
-  if (hsh == NULL)
-    {
-      /* xgettext:c-format */
-      _bfd_error_handler (_("%pB: cannot create stub entry %s"),
-			  section->owner,
-			  stub_name);
-      return NULL;
-    }
-
-  hsh->stub_sec = stub_sec;
-  hsh->stub_offset = 0;
-  hsh->id_sec = link_sec;
-  return hsh;
-}
-
-/* Set up various things so that we can make a list of input sections
-   for each output section included in the link.  Returns -1 on error,
-   0 when no stubs will be needed, and 1 on success.  */
-int
-nios2_elf32_setup_section_lists (bfd *output_bfd, struct bfd_link_info *info)
-{
-  bfd *input_bfd;
-  unsigned int bfd_count;
-  unsigned int top_id, top_index;
-  asection *section;
-  asection **input_list, **list;
-  bfd_size_type 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.  */
-  for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0;
-       input_bfd != NULL;
-       input_bfd = input_bfd->link.next)
-    {
-      bfd_count += 1;
-      for (section = input_bfd->sections;
-	   section != NULL;
-	   section = section->next)
-	{
-	  if (top_id < section->id)
-	    top_id = section->id;
-	}
-    }
-
-  htab->bfd_count = bfd_count;
-
-  amt = sizeof (struct map_stub) * (top_id + 1);
-  htab->stub_group = bfd_zmalloc (amt);
-  if (htab->stub_group == NULL)
-    return -1;
-
-  /* We can't use output_bfd->section_count here to find the top output
-     section index as some sections may have been removed, and
-     strip_excluded_output_sections doesn't renumber the indices.  */
-  for (section = output_bfd->sections, top_index = 0;
-       section != NULL;
-       section = section->next)
-    {
-      if (top_index < section->index)
-	top_index = section->index;
-    }
-
-  htab->top_index = top_index;
-  amt = sizeof (asection *) * (top_index + 1);
-  input_list = bfd_malloc (amt);
-  htab->input_list = input_list;
-  if (input_list == NULL)
-    return -1;
-
-  /* For sections we aren't interested in, mark their entries with a
-     value we can check later.  */
-  list = input_list + top_index;
-  do
-    *list = bfd_abs_section_ptr;
-  while (list-- != input_list);
-
-  for (section = output_bfd->sections;
-       section != NULL;
-       section = section->next)
-    {
-      /* FIXME: This is a bit of hack. Currently our .ctors and .dtors
-       * have PC relative relocs in them but no code flag set.  */
-      if (((section->flags & SEC_CODE) != 0) ||
-	  strcmp(".ctors", section->name) ||
-	  strcmp(".dtors", section->name))
-	input_list[section->index] = NULL;
-    }
-
-  return 1;
-}
-
-/* The linker repeatedly calls this function for each input section,
-   in the order that input sections are linked into output sections.
-   Build lists of input sections to determine groupings between which
-   we may insert linker stubs.  */
-void
-nios2_elf32_next_input_section (struct bfd_link_info *info, asection *isec)
-{
-  struct elf32_nios2_link_hash_table *htab = elf32_nios2_hash_table (info);
-
-  if (isec->output_section->index <= htab->top_index)
-    {
-      asection **list = htab->input_list + isec->output_section->index;
-      if (*list != bfd_abs_section_ptr)
-	{
-	  /* Steal the last_sec pointer for our list.
-	     This happens to make the list in reverse order,
-	     which is what we want.  */
-	  htab->stub_group[isec->id].last_sec = *list;
-	  *list = isec;
-	}
-    }
-}
-
-/* Segment mask for CALL26 relocation relaxation.  */
-#define CALL26_SEGMENT(x) ((x) & 0xf0000000)
-
-/* Fudge factor for approximate maximum size of all stubs that might
-   be inserted by the linker.  This does not actually limit the number
-   of stubs that might be inserted, and only affects strategy for grouping
-   and placement of stubs.  Perhaps this should be computed based on number
-   of relocations seen, or be specifiable on the command line.  */
-#define MAX_STUB_SECTION_SIZE 0xffff
-
-/* See whether we can group stub sections together.  Grouping stub
-   sections may result in fewer stubs.  More importantly, we need to
-   put all .init* and .fini* stubs at the end of the .init or
-   .fini output sections respectively, because glibc splits the
-   _init and _fini functions into multiple parts.  Putting a stub in
-   the middle of a function is not a good idea.
-   Rather than computing groups of a maximum fixed size, for Nios II
-   CALL26 relaxation it makes more sense to compute the groups based on
-   sections that fit within a 256MB address segment.  Also do not allow
-   a group to span more than one output section, since different output
-   sections might correspond to different memory banks on a bare-metal
-   target, etc.  */
-static void
-group_sections (struct elf32_nios2_link_hash_table *htab)
-{
-  asection **list = htab->input_list + htab->top_index;
-  do
-    {
-      /* The list is in reverse order so we'll search backwards looking
-	 for the first section that begins in the same memory segment,
-	 marking sections along the way to point at the tail for this
-	 group.  */
-      asection *tail = *list;
-      if (tail == bfd_abs_section_ptr)
-	continue;
-      while (tail != NULL)
-	{
-	  bfd_vma start = tail->output_section->vma + tail->output_offset;
-	  bfd_vma end = start + tail->size;
-	  bfd_vma segment = CALL26_SEGMENT (end);
-	  asection *prev;
-
-	  if (segment != CALL26_SEGMENT (start)
-	      || segment != CALL26_SEGMENT (end + MAX_STUB_SECTION_SIZE))
-	    /* This section spans more than one memory segment, or is
-	       close enough to the end of the segment that adding stub
-	       sections before it might cause it to move so that it
-	       spans memory segments, or that stubs added at the end of
-	       this group might overflow into the next memory segment.
-	       Put it in a group by itself to localize the effects.  */
-	    {
-	      prev = htab->stub_group[tail->id].last_sec;
-	      htab->stub_group[tail->id].last_sec = tail;
-	      htab->stub_group[tail->id].first_sec = tail;
-	    }
-	  else
-	    /* Collect more sections for this group.  */
-	    {
-	      asection *curr, *first;
-	      for (curr = tail; ; curr = prev)
-		{
-		  prev = htab->stub_group[curr->id].last_sec;
-		  if (!prev
-		      || tail->output_section != prev->output_section
-		      || (CALL26_SEGMENT (prev->output_section->vma
-					  + prev->output_offset)
-			  != segment))
-		    break;
-		}
-	      first = curr;
-	      for (curr = tail; ; curr = prev)
-		{
-		  prev = htab->stub_group[curr->id].last_sec;
-		  htab->stub_group[curr->id].last_sec = tail;
-		  htab->stub_group[curr->id].first_sec = first;
-		  if (curr == first)
-		    break;
-		}
-	    }
-
-	  /* Reset tail for the next group.  */
-	  tail = prev;
-	}
-    }
-  while (list-- != htab->input_list);
-  free (htab->input_list);
-}
-
-/* Determine the type of stub needed, if any, for a call.  */
-static enum elf32_nios2_stub_type
-nios2_type_of_stub (asection *input_sec,
-		    const Elf_Internal_Rela *rel,
-		    struct elf32_nios2_link_hash_entry *hh,
-		    struct elf32_nios2_link_hash_table *htab,
-		    bfd_vma destination,
-		    struct bfd_link_info *info ATTRIBUTE_UNUSED)
-{
-  bfd_vma location, segment, start, end;
-  asection *s0, *s1, *s;
-
-  if (hh != NULL &&
-      !(hh->root.root.type == bfd_link_hash_defined
-	|| hh->root.root.type == bfd_link_hash_defweak))
-    return nios2_stub_none;
-
-  /* Determine where the call point is.  */
-  location = (input_sec->output_section->vma
-	      + input_sec->output_offset + rel->r_offset);
-  segment = CALL26_SEGMENT (location);
-
-  /* Nios II CALL and JMPI instructions can transfer control to addresses
-     within the same 256MB segment as the PC.  */
-  if (segment == CALL26_SEGMENT (destination))
-    return nios2_stub_none;
-
-  /* Find the start and end addresses of the stub group.  Also account for
-     any already-created stub sections for this group.  Note that for stubs
-     in the end section, only the first instruction of the last stub
-     (12 bytes long) needs to be within range.  */
-  s0 = htab->stub_group[input_sec->id].first_sec;
-  s = htab->stub_group[s0->id].first_stub_sec;
-  if (s != NULL && s->size > 0)
-    start = s->output_section->vma + s->output_offset;
-  else
-    start = s0->output_section->vma + s0->output_offset;
-
-  s1 = htab->stub_group[input_sec->id].last_sec;
-  s = htab->stub_group[s1->id].last_stub_sec;
-  if (s != NULL && s->size > 0)
-    end = s->output_section->vma + s->output_offset + s->size - 8;
-  else
-    end = s1->output_section->vma + s1->output_offset + s1->size;
-
-  BFD_ASSERT (start < end);
-  BFD_ASSERT (start <= location);
-  BFD_ASSERT (location < end);
-
-  /* Put stubs at the end of the group unless that is not a valid
-     location and the beginning of the group is.  It might be that
-     neither the beginning nor end works if we have an input section
-     so large that it spans multiple segment boundaries.  In that
-     case, punt; the end result will be a relocation overflow error no
-     matter what we do here.
-
-     Note that adding stubs pushes up the addresses of all subsequent
-     sections, so that stubs allocated on one pass through the
-     relaxation loop may not be valid on the next pass.  (E.g., we may
-     allocate a stub at the beginning of the section on one pass and
-     find that the call site has been bumped into the next memory
-     segment on the next pass.)  The important thing to note is that
-     we never try to reclaim the space allocated to such unused stubs,
-     so code size and section addresses can only increase with each
-     iteration.  Accounting for the start and end addresses of the
-     already-created stub sections ensures that when the algorithm
-     converges, it converges accurately, with the entire appropriate
-     stub section accessible from the call site and not just the
-     address at the start or end of the stub group proper.  */
-
-  if (segment == CALL26_SEGMENT (end))
-    return nios2_stub_call26_after;
-  else if (segment == CALL26_SEGMENT (start))
-    return nios2_stub_call26_before;
-  else
-    /* Perhaps this should be a dedicated error code.  */
-    return nios2_stub_none;
-}
-
-static bfd_boolean
-nios2_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_UNUSED)
-{
-  struct elf32_nios2_stub_hash_entry *hsh
-    = (struct elf32_nios2_stub_hash_entry *) gen_entry;
-  asection *stub_sec = hsh->stub_sec;
-  bfd_vma sym_value;
-
-  /* Make a note of the offset within the stubs for this entry.  */
-  hsh->stub_offset = stub_sec->size;
-
-  switch (hsh->stub_type)
-    {
-    case nios2_stub_call26_before:
-    case nios2_stub_call26_after:
-      /* A call26 stub looks like:
-	   orhi at, %hiadj(dest)
-	   addi at, at, %lo(dest)
-	   jmp at
-	 Note that call/jmpi instructions can't be used in PIC code
-	 so there is no reason for the stub to be PIC, either.  */
-      sym_value = (hsh->target_value
-		   + hsh->target_section->output_offset
-		   + hsh->target_section->output_section->vma
-		   + hsh->addend);
-
-      nios2_elf32_install_data (stub_sec, nios2_call26_stub_entry,
-				hsh->stub_offset, 3);
-      nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset,
-				 hiadj (sym_value));
-      nios2_elf32_install_imm16 (stub_sec, hsh->stub_offset + 4,
-				 (sym_value & 0xffff));
-      stub_sec->size += 12;
-      break;
-    default:
-      BFD_FAIL ();
-      return FALSE;
-    }
-
-  return TRUE;
-}
-
-/* As above, but don't actually build the stub.  Just bump offset so
-   we know stub section sizes.  */
-static bfd_boolean
-nios2_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg ATTRIBUTE_UNUSED)
-{
-  struct elf32_nios2_stub_hash_entry *hsh
-    = (struct elf32_nios2_stub_hash_entry *) gen_entry;
-
-  switch (hsh->stub_type)
-    {
-    case nios2_stub_call26_before:
-    case nios2_stub_call26_after:
-      hsh->stub_sec->size += 12;
-      break;
-    default:
-      BFD_FAIL ();
-      return FALSE;
-    }
-  return TRUE;
-}
-
-/* Read in all local syms for all input bfds.
-   Returns -1 on error, 0 otherwise.  */
-
-static int
-get_local_syms (bfd *output_bfd ATTRIBUTE_UNUSED, bfd *input_bfd,
-		struct bfd_link_info *info)
-{
-  unsigned int bfd_indx;
-  Elf_Internal_Sym *local_syms, **all_local_syms;
-  struct elf32_nios2_link_hash_table *htab = elf32_nios2_hash_table (info);
-
-  /* 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;
-  all_local_syms = bfd_zmalloc (amt);
-  htab->all_local_syms = all_local_syms;
-  if (all_local_syms == NULL)
-    return -1;
-
-  /* Walk over all the input BFDs, swapping in local symbols.  */
-  for (bfd_indx = 0;
-       input_bfd != NULL;
-       input_bfd = input_bfd->link.next, bfd_indx++)
-    {
-      Elf_Internal_Shdr *symtab_hdr;
-
-      /* We'll need the symbol table in a second.  */
-      symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
-      if (symtab_hdr->sh_info == 0)
-	continue;
-
-      /* We need an array of the local symbols attached to the input bfd.  */
-      local_syms = (Elf_Internal_Sym *) symtab_hdr->contents;
-      if (local_syms == NULL)
-	{
-	  local_syms = bfd_elf_get_elf_syms (input_bfd, symtab_hdr,
-					     symtab_hdr->sh_info, 0,
-					     NULL, NULL, NULL);
-	  /* Cache them for elf_link_input_bfd.  */
-	  symtab_hdr->contents = (unsigned char *) local_syms;
-	}
-      if (local_syms == NULL)
-	return -1;
-
-      all_local_syms[bfd_indx] = local_syms;
-    }
-
-  return 0;
-}
-
-/* Determine and set the size of the stub section for a final link.  */
-bfd_boolean
-nios2_elf32_size_stubs (bfd *output_bfd, bfd *stub_bfd,
-			struct bfd_link_info *info,
-			asection *(*add_stub_section) (const char *,
-						       asection *, bfd_boolean),
-			void (*layout_sections_again) (void))
-{
-  bfd_boolean stub_changed = FALSE;
-  struct elf32_nios2_link_hash_table *htab = elf32_nios2_hash_table (info);
-
-  /* Stash our params away.  */
-  htab->stub_bfd = stub_bfd;
-  htab->add_stub_section = add_stub_section;
-  htab->layout_sections_again = layout_sections_again;
-
-  /* FIXME: We only compute the section groups once.  This could cause
-     problems if adding a large stub section causes following sections,
-     or parts of them, to move into another segment.  However, this seems
-     to be consistent with the way other back ends handle this....  */
-  group_sections (htab);
-
-  if (get_local_syms (output_bfd, info->input_bfds, info))
-    {
-      if (htab->all_local_syms)
-	goto error_ret_free_local;
-      return FALSE;
-    }
-
-  while (1)
-    {
-      bfd *input_bfd;
-      unsigned int bfd_indx;
-      asection *stub_sec;
-
-      for (input_bfd = info->input_bfds, bfd_indx = 0;
-	   input_bfd != NULL;
-	   input_bfd = input_bfd->link.next, bfd_indx++)
-	{
-	  Elf_Internal_Shdr *symtab_hdr;
-	  asection *section;
-	  Elf_Internal_Sym *local_syms;
-
-	  /* We'll need the symbol table in a second.  */
-	  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
-	  if (symtab_hdr->sh_info == 0)
-	    continue;
-
-	  local_syms = htab->all_local_syms[bfd_indx];
-
-	  /* Walk over each section attached to the input bfd.  */
-	  for (section = input_bfd->sections;
-	       section != NULL;
-	       section = section->next)
-	    {
-	      Elf_Internal_Rela *internal_relocs, *irelaend, *irela;
-
-	      /* If there aren't any relocs, then there's nothing more
-		 to do.  */
-	      if ((section->flags & SEC_RELOC) == 0
-		  || section->reloc_count == 0)
-		continue;
-
-	      /* If this section is a link-once section that will be
-		 discarded, then don't create any stubs.  */
-	      if (section->output_section == NULL
-		  || section->output_section->owner != output_bfd)
-		continue;
-
-	      /* Get the relocs.  */
-	      internal_relocs
-		= _bfd_elf_link_read_relocs (input_bfd, section, NULL, NULL,
-					     info->keep_memory);
-	      if (internal_relocs == NULL)
-		goto error_ret_free_local;
-
-	      /* Now examine each relocation.  */
-	      irela = internal_relocs;
-	      irelaend = irela + section->reloc_count;
-	      for (; irela < irelaend; irela++)
-		{
-		  unsigned int r_type, r_indx;
-		  enum elf32_nios2_stub_type stub_type;
-		  struct elf32_nios2_stub_hash_entry *hsh;
-		  asection *sym_sec;
-		  bfd_vma sym_value;
-		  bfd_vma destination;
-		  struct elf32_nios2_link_hash_entry *hh;
-		  char *stub_name;
-		  const asection *id_sec;
-
-		  r_type = ELF32_R_TYPE (irela->r_info);
-		  r_indx = ELF32_R_SYM (irela->r_info);
-
-		  if (r_type >= (unsigned int) R_NIOS2_ILLEGAL)
-		    {
-		      bfd_set_error (bfd_error_bad_value);
-		    error_ret_free_internal:
-		      if (elf_section_data (section)->relocs == NULL)
-			free (internal_relocs);
-		      goto error_ret_free_local;
-		    }
-
-		  /* Only look for stubs on CALL and JMPI instructions.  */
-		  if (r_type != (unsigned int) R_NIOS2_CALL26)
-		    continue;
-
-		  /* Now determine the call target, its name, value,
-		     section.  */
-		  sym_sec = NULL;
-		  sym_value = 0;
-		  destination = 0;
-		  hh = NULL;
-		  if (r_indx < symtab_hdr->sh_info)
-		    {
-		      /* It's a local symbol.  */
-		      Elf_Internal_Sym *sym;
-		      Elf_Internal_Shdr *hdr;
-		      unsigned int shndx;
-
-		      sym = local_syms + r_indx;
-		      if (ELF_ST_TYPE (sym->st_info) != STT_SECTION)
-			sym_value = sym->st_value;
-		      shndx = sym->st_shndx;
-		      if (shndx < elf_numsections (input_bfd))
-			{
-			  hdr = elf_elfsections (input_bfd)[shndx];
-			  sym_sec = hdr->bfd_section;
-			  destination = (sym_value + irela->r_addend
-					 + sym_sec->output_offset
-					 + sym_sec->output_section->vma);
-			}
-		    }
-		  else
-		    {
-		      /* It's an external symbol.  */
-		      int e_indx;
-
-		      e_indx = r_indx - symtab_hdr->sh_info;
-		      hh = ((struct elf32_nios2_link_hash_entry *)
-			    elf_sym_hashes (input_bfd)[e_indx]);
-
-		      while (hh->root.root.type == bfd_link_hash_indirect
-			     || hh->root.root.type == bfd_link_hash_warning)
-			hh = ((struct elf32_nios2_link_hash_entry *)
-			      hh->root.root.u.i.link);
-
-		      if (hh->root.root.type == bfd_link_hash_defined
-			  || hh->root.root.type == bfd_link_hash_defweak)
-			{
-			  sym_sec = hh->root.root.u.def.section;
-			  sym_value = hh->root.root.u.def.value;
-
-			  if (sym_sec->output_section != NULL)
-			    destination = (sym_value + irela->r_addend
-					   + sym_sec->output_offset
-					   + sym_sec->output_section->vma);
-			  else
-			    continue;
-			}
-		      else if (hh->root.root.type == bfd_link_hash_undefweak)
-			{
-			  if (! bfd_link_pic (info))
-			    continue;
-			}
-		      else if (hh->root.root.type == bfd_link_hash_undefined)
-			{
-			  if (! (info->unresolved_syms_in_objects == RM_IGNORE
-				 && (ELF_ST_VISIBILITY (hh->root.other)
-				     == STV_DEFAULT)))
-			    continue;
-			}
-		      else
-			{
-			  bfd_set_error (bfd_error_bad_value);
-			  goto error_ret_free_internal;
-			}
-		    }
-
-		  /* Determine what (if any) linker stub is needed.  */
-		  stub_type = nios2_type_of_stub (section, irela, hh, htab,
-						  destination, info);
-		  if (stub_type == nios2_stub_none)
-		    continue;
-
-		  /* Support for grouping stub sections.  */
-		  if (stub_type == nios2_stub_call26_before)
-		    id_sec = htab->stub_group[section->id].first_sec;
-		  else
-		    id_sec = htab->stub_group[section->id].last_sec;
-
-		  /* Get the name of this stub.  */
-		  stub_name = nios2_stub_name (id_sec, sym_sec, hh, irela,
-					       stub_type);
-		  if (!stub_name)
-		    goto error_ret_free_internal;
-
-		  hsh = nios2_stub_hash_lookup (&htab->bstab,
-						stub_name,
-						FALSE, FALSE);
-		  if (hsh != NULL)
-		    {
-		      /* The proper stub has already been created.  */
-		      free (stub_name);
-		      continue;
-		    }
-
-		  hsh = nios2_add_stub (stub_name, section, htab, stub_type);
-		  if (hsh == NULL)
-		    {
-		      free (stub_name);
-		      goto error_ret_free_internal;
-		    }
-		  hsh->target_value = sym_value;
-		  hsh->target_section = sym_sec;
-		  hsh->stub_type = stub_type;
-		  hsh->hh = hh;
-		  hsh->addend = irela->r_addend;
-		  stub_changed = TRUE;
-		}
-
-	      /* We're done with the internal relocs, free them.  */
-	      if (elf_section_data (section)->relocs == NULL)
-		free (internal_relocs);
-	    }
-	}
-
-      if (!stub_changed)
-	break;
-
-      /* OK, we've added some stubs.  Find out the new size of the
-	 stub sections.  */
-      for (stub_sec = htab->stub_bfd->sections;
-	   stub_sec != NULL;
-	   stub_sec = stub_sec->next)
-	stub_sec->size = 0;
-
-      bfd_hash_traverse (&htab->bstab, nios2_size_one_stub, htab);
-
-      /* Ask the linker to do its stuff.  */
-      (*htab->layout_sections_again) ();
-      stub_changed = FALSE;
-    }
-
-  free (htab->all_local_syms);
-  return TRUE;
-
- error_ret_free_local:
-  free (htab->all_local_syms);
-  return FALSE;
-}
-
-/* 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 nios2elf_finish in the linker.  */
-bfd_boolean
-nios2_elf32_build_stubs (struct bfd_link_info *info)
-{
-  asection *stub_sec;
-  struct bfd_hash_table *table;
-  struct elf32_nios2_link_hash_table *htab;
-
-  htab = elf32_nios2_hash_table (info);
-
-  for (stub_sec = htab->stub_bfd->sections;
-       stub_sec != NULL;
-       stub_sec = stub_sec->next)
-    /* The stub_bfd may contain non-stub sections if it is also the
-       dynobj.  Any such non-stub sections are created with the
-       SEC_LINKER_CREATED flag set, while stub sections do not
-       have that flag.  Ignore any non-stub sections here.  */
-    if ((stub_sec->flags & SEC_LINKER_CREATED) == 0)
-      {
-	bfd_size_type size;
-
-	/* Allocate memory to hold the linker stubs.  */
-	size = stub_sec->size;
-	stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
-	if (stub_sec->contents == NULL && size != 0)
-	  return FALSE;
-	stub_sec->size = 0;
-      }
-
-  /* Build the stubs as directed by the stub hash table.  */
-  table = &htab->bstab;
-  bfd_hash_traverse (table, nios2_build_one_stub, info);
-
-  return TRUE;
-}
-
-
-#define is_nios2_elf(bfd) \
-  (bfd_get_flavour (bfd) == bfd_target_elf_flavour \
-   && elf_object_id (bfd) == NIOS2_ELF_DATA)
-
-/* Merge backend specific data from an object file to the output
-   object file when linking.  */
-
-static bfd_boolean
-nios2_elf32_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
-{
-  bfd *obfd = info->output_bfd;
-  flagword old_flags;
-  flagword new_flags;
-
-  if (!is_nios2_elf (ibfd) || !is_nios2_elf (obfd))
-    return TRUE;
-
-  /* Check if we have the same endianness.  */
-  if (! _bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
-
-  new_flags = elf_elfheader (ibfd)->e_flags;
-  old_flags = elf_elfheader (obfd)->e_flags;
-  if (!elf_flags_init (obfd))
-    {
-      /* First call, no flags set.  */
-      elf_flags_init (obfd) = TRUE;
-      elf_elfheader (obfd)->e_flags = new_flags;
-
-      switch (new_flags)
-	{
-	default:
-	case EF_NIOS2_ARCH_R1:
-	  bfd_default_set_arch_mach (obfd, bfd_arch_nios2, bfd_mach_nios2r1);
-	  break;
-	case EF_NIOS2_ARCH_R2:
-	  if (bfd_big_endian (ibfd))
-	    {
-	      _bfd_error_handler
-		(_("error: %pB: big-endian R2 is not supported"), ibfd);
-	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
-	    }
-	  bfd_default_set_arch_mach (obfd, bfd_arch_nios2, bfd_mach_nios2r2);
-	  break;
-	}
-    }
-
-  /* Incompatible flags.  */
-  else if (new_flags != old_flags)
-    {
-      /* So far, the only incompatible flags denote incompatible
-	 architectures.  */
-      _bfd_error_handler
-	/* xgettext:c-format */
-	(_("error: %pB: conflicting CPU architectures %d/%d"),
-	 ibfd, new_flags, old_flags);
-      bfd_set_error (bfd_error_bad_value);
-      return FALSE;
-    }
-
-  /* Merge Tag_compatibility attributes and any common GNU ones.  */
-  _bfd_elf_merge_object_attributes (ibfd, info);
-
-  return TRUE;
-}
-
-/* Implement bfd_elf32_bfd_reloc_type_lookup:
-   Given a BFD reloc type, return a howto structure.  */
-
-static reloc_howto_type *
-nios2_elf32_bfd_reloc_type_lookup (bfd *abfd,
-				   bfd_reloc_code_real_type code)
-{
-  int i;
-
-  for (i = 0; i < (int) ARRAY_SIZE (nios2_reloc_map); ++i)
-    if (nios2_reloc_map[i].bfd_val == code)
-      return lookup_howto (nios2_reloc_map[i].elf_val, abfd);
-  return NULL;
-}
-
-/* Implement bfd_elf32_bfd_reloc_name_lookup:
-   Given a reloc name, return a howto structure.  */
-
-static reloc_howto_type *
-nios2_elf32_bfd_reloc_name_lookup (bfd *abfd,
-				   const char *r_name)
-{
-  int i;
-  reloc_howto_type *howto_tbl;
-  int howto_tbl_size;
-
-  if (BFD_IS_R2 (abfd))
-    {
-      howto_tbl = elf_nios2_r2_howto_table_rel;
-      howto_tbl_size = (int) ARRAY_SIZE (elf_nios2_r2_howto_table_rel);
-    }
-  else
-    {
-      howto_tbl = elf_nios2_r1_howto_table_rel;
-      howto_tbl_size = (int) ARRAY_SIZE (elf_nios2_r1_howto_table_rel);
-    }
-
-  for (i = 0; i < howto_tbl_size; i++)
-    if (howto_tbl[i].name && strcasecmp (howto_tbl[i].name, r_name) == 0)
-      return howto_tbl + i;
-
-  return NULL;
-}
-
-/* Implement elf_info_to_howto:
-   Given a ELF32 relocation, fill in a arelent structure.  */
-
-static bfd_boolean
-nios2_elf32_info_to_howto (bfd *abfd, arelent *cache_ptr,
-			   Elf_Internal_Rela *dst)
-{
-  unsigned int r_type;
-
-  r_type = ELF32_R_TYPE (dst->r_info);
-  if ((cache_ptr->howto = lookup_howto (r_type, abfd)) == NULL)
-    {
-      /* xgettext:c-format */
-      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
-			  abfd, r_type);
-      bfd_set_error (bfd_error_bad_value);
-      return FALSE;
-    }
-  return TRUE;
-}
-
-/* Return the base VMA address which should be subtracted from real addresses
-   when resolving @dtpoff relocation.
-   This is PT_TLS segment p_vaddr.  */
-static bfd_vma
-dtpoff_base (struct bfd_link_info *info)
-{
-  /* If tls_sec is NULL, we should have signalled an error already.  */
-  if (elf_hash_table (info)->tls_sec == NULL)
-    return 0;
-  return elf_hash_table (info)->tls_sec->vma;
-}
-
-/* Return the relocation value for @tpoff relocation
-   if STT_TLS virtual address is ADDRESS.  */
-static bfd_vma
-tpoff (struct bfd_link_info *info, bfd_vma address)
-{
-  struct elf_link_hash_table *htab = elf_hash_table (info);
-
-  /* If tls_sec is NULL, we should have signalled an error already.  */
-  if (htab->tls_sec == NULL)
-    return 0;
-  return address - htab->tls_sec->vma;
-}
-
-/* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
-   dangerous relocation.  */
-static bfd_boolean
-nios2_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp, struct bfd_link_info *info)
-{
-
-  bfd_boolean gp_found;
-  struct bfd_hash_entry *h;
-  struct bfd_link_hash_entry *lh;
-
-  /* If we've already figured out what GP will be, just return it. */
-  *pgp = _bfd_get_gp_value (output_bfd);
-  if (*pgp)
-    return TRUE;
-
-  h = bfd_hash_lookup (&info->hash->table, "_gp", FALSE, FALSE);
-  lh = (struct bfd_link_hash_entry *) h;
-lookup:
-  if (lh)
-    {
-      switch (lh->type)
-	{
-	case bfd_link_hash_undefined:
-	case bfd_link_hash_undefweak:
-	case bfd_link_hash_common:
-	  gp_found = FALSE;
-	  break;
-	case bfd_link_hash_defined:
-	case bfd_link_hash_defweak:
-	  gp_found = TRUE;
-	  {
-	    asection *sym_sec = lh->u.def.section;
-	    bfd_vma sym_value = lh->u.def.value;
-
-	    if (sym_sec->output_section)
-	      sym_value = (sym_value + sym_sec->output_offset
-			   + sym_sec->output_section->vma);
-	    *pgp = sym_value;
-	  }
-	  break;
-	case bfd_link_hash_indirect:
-	case bfd_link_hash_warning:
-	  lh = lh->u.i.link;
-	  /* @@FIXME  ignoring warning for now */
-	  goto lookup;
-	case bfd_link_hash_new:
-	default:
-	  abort ();
-	}
-    }
-  else
-    gp_found = FALSE;
-
-  if (!gp_found)
-    {
-      /* Only get the error once. */
-      *pgp = 4;
-      _bfd_set_gp_value (output_bfd, *pgp);
-      return FALSE;
-    }
-
-  _bfd_set_gp_value (output_bfd, *pgp);
-
-  return TRUE;
-}
-
-/* Retrieve the previously cached _gp pointer, returning bfd_reloc_dangerous
-   if it's not available as we don't have a link_info pointer available here
-   to look it up in the output symbol table.  We don't need to adjust the
-   symbol value for an external symbol if we are producing relocatable
-   output.  */
-static bfd_reloc_status_type
-nios2_elf_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable,
-		    char **error_message, bfd_vma *pgp)
-{
-  if (bfd_is_und_section (symbol->section) && !relocatable)
-    {
-      *pgp = 0;
-      return bfd_reloc_undefined;
-    }
-
-  *pgp = _bfd_get_gp_value (output_bfd);
-  if (*pgp == 0 && (!relocatable || (symbol->flags & BSF_SECTION_SYM) != 0))
-    {
-      if (relocatable)
-	{
-	  /* Make up a value.  */
-	  *pgp = symbol->section->output_section->vma + 0x4000;
-	  _bfd_set_gp_value (output_bfd, *pgp);
-	}
-      else
-	{
-	  *error_message
-	    = (char *) _("global pointer relative relocation when _gp not defined");
-	  return bfd_reloc_dangerous;
-	}
-    }
-
-  return bfd_reloc_ok;
-}
-
-/* Do the relocations that require special handling.  */
-static bfd_reloc_status_type
-nios2_elf32_do_hi16_relocate (bfd *abfd, reloc_howto_type *howto,
-			      asection *input_section,
-			      bfd_byte *data, bfd_vma offset,
-			      bfd_vma symbol_value, bfd_vma addend)
-{
-  symbol_value = symbol_value + addend;
-  addend = 0;
-  symbol_value = (symbol_value >> 16) & 0xffff;
-  return _bfd_final_link_relocate (howto, abfd, input_section,
-				   data, offset, symbol_value, addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_lo16_relocate (bfd *abfd, reloc_howto_type *howto,
-			      asection *input_section,
-			      bfd_byte *data, bfd_vma offset,
-			      bfd_vma symbol_value, bfd_vma addend)
-{
-  symbol_value = symbol_value + addend;
-  addend = 0;
-  symbol_value = symbol_value & 0xffff;
-  return _bfd_final_link_relocate (howto, abfd, input_section,
-				   data, offset, symbol_value, addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_hiadj16_relocate (bfd *abfd, reloc_howto_type *howto,
-				 asection *input_section,
-				 bfd_byte *data, bfd_vma offset,
-				 bfd_vma symbol_value, bfd_vma addend)
-{
-  symbol_value = symbol_value + addend;
-  addend = 0;
-  symbol_value = hiadj(symbol_value);
-  return _bfd_final_link_relocate (howto, abfd, input_section, data, offset,
-				   symbol_value, addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_pcrel_lo16_relocate (bfd *abfd, reloc_howto_type *howto,
-				    asection *input_section,
-				    bfd_byte *data, bfd_vma offset,
-				    bfd_vma symbol_value, bfd_vma addend)
-{
-  symbol_value = symbol_value + addend;
-  addend = 0;
-  symbol_value = symbol_value & 0xffff;
-  return _bfd_final_link_relocate (howto, abfd, input_section,
-				   data, offset, symbol_value, addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_pcrel_hiadj16_relocate (bfd *abfd, reloc_howto_type *howto,
-				       asection *input_section,
-				       bfd_byte *data, bfd_vma offset,
-				       bfd_vma symbol_value, bfd_vma addend)
-{
-  symbol_value = symbol_value + addend;
-  symbol_value -= (input_section->output_section->vma
-		   + input_section->output_offset);
-  symbol_value -= offset;
-  addend = 0;
-  symbol_value = hiadj(symbol_value);
-  return _bfd_final_link_relocate (howto, abfd, input_section, data, offset,
-				   symbol_value, addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_pcrel16_relocate (bfd *abfd, reloc_howto_type *howto,
-				 asection *input_section,
-				 bfd_byte *data, bfd_vma offset,
-				 bfd_vma symbol_value, bfd_vma addend)
-{
-  /* NIOS2 pc relative relocations are relative to the next 32-bit instruction
-     so we need to subtract 4 before doing a final_link_relocate. */
-  symbol_value = symbol_value + addend - 4;
-  addend = 0;
-  return _bfd_final_link_relocate (howto, abfd, input_section,
-				   data, offset, symbol_value, addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_call26_relocate (bfd *abfd, reloc_howto_type *howto,
-				asection *input_section,
-				bfd_byte *data, bfd_vma offset,
-				bfd_vma symbol_value, bfd_vma addend)
-{
-  /* Check that the relocation is in the same page as the current address.  */
-  if (CALL26_SEGMENT (symbol_value + addend)
-      != CALL26_SEGMENT (input_section->output_section->vma
-			 + input_section->output_offset
-			 + offset))
-    return bfd_reloc_overflow;
-
-  /* Check that the target address is correctly aligned on a 4-byte
-     boundary.  */
-  if ((symbol_value + addend) & 0x3)
-    return bfd_reloc_overflow;
-
-  return _bfd_final_link_relocate (howto, abfd, input_section,
-				   data, offset, symbol_value, addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_gprel_relocate (bfd *abfd, reloc_howto_type *howto,
-			       asection *input_section,
-			       bfd_byte *data, bfd_vma offset,
-			       bfd_vma symbol_value, bfd_vma addend)
-{
-  /* Because we need the output_bfd, the special handling is done
-     in nios2_elf32_relocate_section or in nios2_elf32_gprel_relocate.  */
-  return _bfd_final_link_relocate (howto, abfd, input_section,
-				   data, offset, symbol_value, addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_ujmp_relocate (bfd *abfd, reloc_howto_type *howto,
-			      asection *input_section,
-			      bfd_byte *data, bfd_vma offset,
-			      bfd_vma symbol_value, bfd_vma addend)
-{
-  bfd_vma symbol_lo16, symbol_hi16;
-  bfd_reloc_status_type r;
-  symbol_value = symbol_value + addend;
-  addend = 0;
-  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-  symbol_lo16 = symbol_value & 0xffff;
-
-  r = _bfd_final_link_relocate (howto, abfd, input_section,
-				data, offset, symbol_hi16, addend);
-
-  if (r == bfd_reloc_ok)
-    return _bfd_final_link_relocate (howto, abfd, input_section,
-				     data, offset + 4, symbol_lo16, addend);
-
-  return r;
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_cjmp_relocate (bfd *abfd, reloc_howto_type *howto,
-			      asection *input_section,
-			      bfd_byte *data, bfd_vma offset,
-			      bfd_vma symbol_value, bfd_vma addend)
-{
-  bfd_vma symbol_lo16, symbol_hi16;
-  bfd_reloc_status_type r;
-  symbol_value = symbol_value + addend;
-  addend = 0;
-  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-  symbol_lo16 = symbol_value & 0xffff;
-
-  r = _bfd_final_link_relocate (howto, abfd, input_section,
-				data, offset, symbol_hi16, addend);
-
-  if (r == bfd_reloc_ok)
-    return _bfd_final_link_relocate (howto, abfd, input_section,
-				     data, offset + 4, symbol_lo16, addend);
-
-  return r;
-}
-
-static bfd_reloc_status_type
-nios2_elf32_do_callr_relocate (bfd *abfd, reloc_howto_type *howto,
-			       asection *input_section,
-			       bfd_byte *data, bfd_vma offset,
-			       bfd_vma symbol_value, bfd_vma addend)
-{
-  bfd_vma symbol_lo16, symbol_hi16;
-  bfd_reloc_status_type r;
-  symbol_value = symbol_value + addend;
-  addend = 0;
-  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-  symbol_lo16 = symbol_value & 0xffff;
-
-  r = _bfd_final_link_relocate (howto, abfd, input_section,
-				data, offset, symbol_hi16, addend);
-
-  if (r == bfd_reloc_ok)
-    return _bfd_final_link_relocate (howto, abfd, input_section,
-				     data, offset + 4, symbol_lo16, addend);
-
-  return r;
-}
-
-/* HOWTO handlers for relocations that require special handling.  */
-
-/* This is for relocations used only when relaxing to ensure
-   changes in size of section don't screw up .align.  */
-static bfd_reloc_status_type
-nios2_elf32_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 bfd_reloc_status_type
-nios2_elf32_hi16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			   void *data, asection *input_section,
-			   bfd *output_bfd,
-			   char **error_message ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_hi16_relocate (abfd, reloc_entry->howto,
-				       input_section,
-				       data, reloc_entry->address,
-				       (symbol->value
-					+ symbol->section->output_section->vma
-					+ symbol->section->output_offset),
-				       reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_lo16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			   void *data, asection *input_section,
-			   bfd *output_bfd,
-			   char **error_message ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_lo16_relocate (abfd, reloc_entry->howto,
-				       input_section,
-				       data, reloc_entry->address,
-				       (symbol->value
-					+ symbol->section->output_section->vma
-					+ symbol->section->output_offset),
-				       reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_hiadj16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			      void *data, asection *input_section,
-			      bfd *output_bfd,
-			      char **error_message ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_hiadj16_relocate (abfd, reloc_entry->howto,
-					  input_section,
-					  data, reloc_entry->address,
-					  (symbol->value
-					   + symbol->section->output_section->vma
-					   + symbol->section->output_offset),
-					  reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_pcrel_lo16_relocate (bfd *abfd, arelent *reloc_entry,
-				 asymbol *symbol, void *data,
-				 asection *input_section, bfd *output_bfd,
-				 char **error_message ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_pcrel_lo16_relocate (
-    abfd, reloc_entry->howto, input_section, data, reloc_entry->address,
-    (symbol->value + symbol->section->output_section->vma
-     + symbol->section->output_offset),
-    reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_pcrel_hiadj16_relocate (bfd *abfd, arelent *reloc_entry,
-				    asymbol *symbol, void *data,
-				    asection *input_section, bfd *output_bfd,
-				    char **error_message ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_pcrel_hiadj16_relocate (
-    abfd, reloc_entry->howto, input_section, data, reloc_entry->address,
-    (symbol->value + symbol->section->output_section->vma
-     + symbol->section->output_offset),
-    reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_pcrel16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			      void *data, asection *input_section,
-			      bfd *output_bfd,
-			      char **error_message ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_pcrel16_relocate (abfd, reloc_entry->howto,
-					  input_section,
-					  data, reloc_entry->address,
-					  (symbol->value
-					   + symbol->section->output_section->vma
-					   + symbol->section->output_offset),
-					  reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_call26_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			     void *data, asection *input_section,
-			     bfd *output_bfd,
-			     char **error_message ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_call26_relocate (abfd, reloc_entry->howto,
-					 input_section,
-					 data, reloc_entry->address,
-					 (symbol->value
-					  + symbol->section->output_section->vma
-					  + symbol->section->output_offset),
-					 reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_gprel_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			    void *data, asection *input_section,
-			    bfd *output_bfd, char **msg)
-{
-  bfd_vma relocation;
-  bfd_vma gp;
-  bfd_reloc_status_type r;
-
-
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  relocation = (symbol->value
-		+ symbol->section->output_section->vma
-		+ symbol->section->output_offset);
-
-  /* This assumes we've already cached the _gp symbol.  */
-  r = nios2_elf_final_gp (abfd, symbol, FALSE, msg, &gp);
-  if (r == bfd_reloc_ok)
-    {
-      relocation = relocation + reloc_entry->addend - gp;
-      reloc_entry->addend = 0;
-      if ((signed) relocation < -32768 || (signed) relocation > 32767)
-	{
-	  *msg = _("global pointer relative address out of range");
-	  r = bfd_reloc_outofrange;
-	}
-      else
-	r = nios2_elf32_do_gprel_relocate (abfd, reloc_entry->howto,
-					   input_section,
-					   data, reloc_entry->address,
-					   relocation, reloc_entry->addend);
-    }
-
-  return r;
-}
-
-static bfd_reloc_status_type
-nios2_elf32_ujmp_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			   void *data, asection *input_section,
-			   bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_ujmp_relocate (abfd, reloc_entry->howto,
-				       input_section,
-				       data, reloc_entry->address,
-				       (symbol->value
-					+ symbol->section->output_section->vma
-					+ symbol->section->output_offset),
-				       reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_cjmp_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			   void *data, asection *input_section,
-			   bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_cjmp_relocate (abfd, reloc_entry->howto,
-				       input_section,
-				       data, reloc_entry->address,
-				       (symbol->value
-					+ symbol->section->output_section->vma
-					+ symbol->section->output_offset),
-				       reloc_entry->addend);
-}
-
-static bfd_reloc_status_type
-nios2_elf32_callr_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-			    void *data, asection *input_section,
-			    bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-{
-  /* This part is from bfd_elf_generic_reloc.  */
-  if (output_bfd != NULL
-      && (symbol->flags & BSF_SECTION_SYM) == 0
-      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  if (output_bfd != NULL)
-    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-    return bfd_reloc_continue;
-
-  return nios2_elf32_do_callr_relocate (abfd, reloc_entry->howto,
-					input_section,
-					data, reloc_entry->address,
-					(symbol->value
-					 + symbol->section->output_section->vma
-					 + symbol->section->output_offset),
-					reloc_entry->addend);
-}
-
-
-/* Implement elf_backend_relocate_section.  */
-static bfd_boolean
-nios2_elf32_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;
-  Elf_Internal_Rela *relend;
-  struct elf32_nios2_link_hash_table *htab;
-  asection *sgot;
-  asection *splt;
-  asection *sreloc = NULL;
-  bfd_vma *local_got_offsets;
-  bfd_vma got_base;
-
-  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
-  sym_hashes = elf_sym_hashes (input_bfd);
-  relend = relocs + input_section->reloc_count;
-
-  htab = elf32_nios2_hash_table (info);
-  sgot = htab->root.sgot;
-  splt = htab->root.splt;
-  local_got_offsets = elf_local_got_offsets (input_bfd);
-
-  if (htab->h_gp_got == NULL)
-    got_base = 0;
-  else
-    got_base = htab->h_gp_got->root.u.def.value;
-
-  for (rel = relocs; rel < relend; rel++)
-    {
-      reloc_howto_type *howto;
-      unsigned long r_symndx;
-      Elf_Internal_Sym *sym;
-      asection *sec;
-      struct elf_link_hash_entry *h;
-      struct elf32_nios2_link_hash_entry *eh;
-      bfd_vma relocation;
-      bfd_vma gp;
-      bfd_reloc_status_type r = bfd_reloc_ok;
-      const char *name = NULL;
-      int r_type;
-      const char *format;
-      char *msgbuf = NULL;
-      char *msg = NULL;
-      bfd_boolean unresolved_reloc;
-      bfd_vma off;
-      int use_plt;
-
-      r_type = ELF32_R_TYPE (rel->r_info);
-      r_symndx = ELF32_R_SYM (rel->r_info);
-
-      howto = lookup_howto ((unsigned) ELF32_R_TYPE (rel->r_info), output_bfd);
-      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 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 && discarded_section (sec))
-	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
-
-      /* Nothing more to do unless this is a final link.  */
-      if (bfd_link_relocatable (info))
-	continue;
-
-      if (howto)
-	{
-	  bfd_boolean resolved_to_zero;
-
-	  resolved_to_zero = (h != NULL
-			      && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
-	  switch (howto->type)
-	    {
-	    case R_NIOS2_HI16:
-	      r = nios2_elf32_do_hi16_relocate (input_bfd, howto,
-						input_section,
-						contents, rel->r_offset,
-						relocation, rel->r_addend);
-	      break;
-	    case R_NIOS2_LO16:
-	      r = nios2_elf32_do_lo16_relocate (input_bfd, howto,
-						input_section,
-						contents, rel->r_offset,
-						relocation, rel->r_addend);
-	      break;
-	    case R_NIOS2_PCREL_LO:
-	      r = nios2_elf32_do_pcrel_lo16_relocate (input_bfd, howto,
-						      input_section,
-						      contents,
-						      rel->r_offset,
-						      relocation,
-						      rel->r_addend);
-	      break;
-	    case R_NIOS2_HIADJ16:
-	      r = nios2_elf32_do_hiadj16_relocate (input_bfd, howto,
-						   input_section, contents,
-						   rel->r_offset, relocation,
-						   rel->r_addend);
-	      break;
-	    case R_NIOS2_PCREL_HA:
-	      r = nios2_elf32_do_pcrel_hiadj16_relocate (input_bfd, howto,
-							 input_section,
-							 contents,
-							 rel->r_offset,
-							 relocation,
-							 rel->r_addend);
-	      break;
-	    case R_NIOS2_PCREL16:
-	      r = nios2_elf32_do_pcrel16_relocate (input_bfd, howto,
-						   input_section, contents,
-						   rel->r_offset, relocation,
-						   rel->r_addend);
-	      break;
-	    case R_NIOS2_GPREL:
-	      /* Turns an absolute address into a gp-relative address.  */
-	      if (!nios2_elf_assign_gp (output_bfd, &gp, info))
-		{
-		  bfd_vma reloc_address;
-
-		  if (sec && sec->output_section)
-		    reloc_address = (sec->output_section->vma
-				     + sec->output_offset
-				     + rel->r_offset);
-		  else
-		    reloc_address = 0;
-
-		  format = _("global pointer relative relocation at address "
-			     "%#" PRIx64 " when _gp not defined\n");
-		  if (asprintf (&msgbuf, format,
-				(uint64_t) reloc_address) == -1)
-		    msgbuf = NULL;
-		  msg = msgbuf;
-		  r = bfd_reloc_dangerous;
-		}
-	      else
-		{
-		  bfd_vma symbol_address = rel->r_addend + relocation;
-		  relocation = symbol_address - gp;
-		  rel->r_addend = 0;
-		  if (((signed) relocation < -32768
-		       || (signed) relocation > 32767)
-		      && (!h
-			  || h->root.type == bfd_link_hash_defined
-			  || h->root.type == bfd_link_hash_defweak))
-		    {
-		      if (h)
-			name = h->root.root.string;
-		      else
-			{
-			  name = (bfd_elf_string_from_elf_section
-				  (input_bfd, symtab_hdr->sh_link,
-				   sym->st_name));
-			  if (name == NULL || *name == '\0')
-			    name = bfd_section_name (sec);
-			}
-		      /* xgettext:c-format */
-		      format = _("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" );
-		      if (asprintf (&msgbuf, format, name,
-				    (uint64_t) symbol_address, (uint64_t) gp,
-				    (int64_t) relocation) == -1)
-			msgbuf = NULL;
-		      msg = msgbuf;
-		      r = bfd_reloc_outofrange;
-		    }
-		  else
-		    r =	_bfd_final_link_relocate (howto, input_bfd,
-						  input_section, contents,
-						  rel->r_offset, relocation,
-						  rel->r_addend);
-		}
-	      break;
-	    case R_NIOS2_UJMP:
-	      r = nios2_elf32_do_ujmp_relocate (input_bfd, howto,
-						input_section,
-						contents, rel->r_offset,
-						relocation, rel->r_addend);
-	      break;
-	    case R_NIOS2_CJMP:
-	      r = nios2_elf32_do_cjmp_relocate (input_bfd, howto,
-						input_section,
-						contents, rel->r_offset,
-						relocation, rel->r_addend);
-	      break;
-	    case R_NIOS2_CALLR:
-	      r = nios2_elf32_do_callr_relocate (input_bfd, howto,
-						 input_section, contents,
-						 rel->r_offset, relocation,
-						 rel->r_addend);
-	      break;
-	    case R_NIOS2_CALL26:
-	    case R_NIOS2_CALL26_NOAT:
-	      /* If we have a call to an undefined weak symbol, we just want
-		 to stuff a zero in the bits of the call instruction and
-		 bypass the normal call26 relocation handling, because it'll
-		 diagnose an overflow error if address 0 isn't in the same
-		 256MB segment as the call site.  Presumably the call
-		 should be guarded by a null check anyway.  */
-	      if (h != NULL && h->root.type == bfd_link_hash_undefweak)
-		{
-		  BFD_ASSERT (relocation == 0 && rel->r_addend == 0);
-		  r = _bfd_final_link_relocate (howto, input_bfd,
-						input_section, contents,
-						rel->r_offset, relocation,
-						rel->r_addend);
-		  break;
-		}
-	      /* Handle relocations which should use the PLT entry.
-		 NIOS2_BFD_RELOC_32 relocations will use the symbol's value,
-		 which may point to a PLT entry, but we don't need to handle
-		 that here.  If we created a PLT entry, all branches in this
-		 object should go to it.  */
-	      if (h != NULL && splt != NULL && h->plt.offset != (bfd_vma) -1)
-		{
-		  /* If we've created a .plt section, and assigned a PLT entry
-		     to this function, it should not be known to bind locally.
-		     If it were, we would have cleared the PLT entry.  */
-		  BFD_ASSERT (!SYMBOL_CALLS_LOCAL (info, h));
-
-		  relocation = (splt->output_section->vma
-				+ splt->output_offset
-				+ h->plt.offset);
-
-		  unresolved_reloc = FALSE;
-		}
-	      /* Detect R_NIOS2_CALL26 relocations that would overflow the
-		 256MB segment.  Replace the target with a reference to a
-		 trampoline instead.
-		 Note that htab->stub_group is null if relaxation has been
-		 disabled by the --no-relax linker command-line option, so
-		 we can use that to skip this processing entirely.  */
-	      if (howto->type == R_NIOS2_CALL26 && htab->stub_group)
-		{
-		  bfd_vma dest = relocation + rel->r_addend;
-		  enum elf32_nios2_stub_type stub_type;
-
-		  eh = (struct elf32_nios2_link_hash_entry *)h;
-		  stub_type = nios2_type_of_stub (input_section, rel, eh,
-						  htab, dest, NULL);
-
-		  if (stub_type != nios2_stub_none)
-		    {
-		      struct elf32_nios2_stub_hash_entry *hsh;
-
-		      hsh = nios2_get_stub_entry (input_section, sec,
-						  eh, rel, htab, stub_type);
-		      if (hsh == NULL)
-			{
-			  r = bfd_reloc_undefined;
-			  break;
-			}
-
-		      dest = (hsh->stub_offset
-			      + hsh->stub_sec->output_offset
-			      + hsh->stub_sec->output_section->vma);
-		      r = nios2_elf32_do_call26_relocate (input_bfd, howto,
-							  input_section,
-							  contents,
-							  rel->r_offset,
-							  dest, 0);
-		      break;
-		    }
-		}
-
-	      /* Normal case.  */
-	      r = nios2_elf32_do_call26_relocate (input_bfd, howto,
-						  input_section, contents,
-						  rel->r_offset, relocation,
-						  rel->r_addend);
-	      break;
-	    case R_NIOS2_ALIGN:
-	      r = bfd_reloc_ok;
-	      /* For symmetry this would be
-		 r = nios2_elf32_do_ignore_reloc (input_bfd, howto,
-						  input_section, contents,
-						  rel->r_offset, relocation,
-						  rel->r_addend);
-		but do_ignore_reloc would do no more than return
-		bfd_reloc_ok. */
-	      break;
-
-	    case R_NIOS2_GOT16:
-	    case R_NIOS2_CALL16:
-	    case R_NIOS2_GOT_LO:
-	    case R_NIOS2_GOT_HA:
-	    case R_NIOS2_CALL_LO:
-	    case R_NIOS2_CALL_HA:
-	      /* Relocation is to the entry for this symbol in the
-		 global offset table.  */
-	      if (sgot == NULL)
-		{
-		  r = bfd_reloc_notsupported;
-		  break;
-		}
-
-	      use_plt = 0;
-
-	      if (h != NULL)
-		{
-		  bfd_boolean dyn;
-
-		  eh = (struct elf32_nios2_link_hash_entry *)h;
-		  use_plt = (eh->got_types_used == CALL_USED
-			     && h->plt.offset != (bfd_vma) -1);
-
-		  off = h->got.offset;
-		  BFD_ASSERT (off != (bfd_vma) -1);
-		  dyn = htab->root.dynamic_sections_created;
-		  if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
-							 bfd_link_pic (info),
-							 h)
-		      || (bfd_link_pic (info)
-			  && SYMBOL_REFERENCES_LOCAL (info, h))
-		      || ((ELF_ST_VISIBILITY (h->other)
-			   || resolved_to_zero)
-			  && h->root.type == bfd_link_hash_undefweak))
-		    {
-		      /* This is actually a static link, or it is a -Bsymbolic
-			 link and the symbol is defined locally.  We must
-			 initialize this entry in the global offset table.
-			 Since the offset must always be a multiple of 4, we
-			 use the least significant bit to record whether we
-			 have initialized it already.
-
-			 When doing a dynamic link, we create a .rela.got
-			 relocation entry to initialize the value.  This is
-			 done in the finish_dynamic_symbol routine.  */
-		      if ((off & 1) != 0)
-			off &= ~1;
-		      else
-			{
-			  bfd_put_32 (output_bfd, relocation,
-				      sgot->contents + off);
-			  h->got.offset |= 1;
-			}
-		    }
-		  else
-		    unresolved_reloc = FALSE;
-		}
-	      else
-		{
-		  BFD_ASSERT (local_got_offsets != NULL
-			      && local_got_offsets[r_symndx] != (bfd_vma) -1);
-
-		  off = local_got_offsets[r_symndx];
-
-		  /* The offset must always be a multiple of 4.  We use the
-		     least significant bit to record whether we have already
-		     generated the necessary reloc.  */
-		  if ((off & 1) != 0)
-		    off &= ~1;
-		  else
-		    {
-		      bfd_put_32 (output_bfd, relocation,
-				  sgot->contents + off);
-
-		      if (bfd_link_pic (info))
-			{
-			  asection *srelgot;
-			  Elf_Internal_Rela outrel;
-			  bfd_byte *loc;
-
-			  srelgot = htab->root.srelgot;
-			  BFD_ASSERT (srelgot != NULL);
-
-			  outrel.r_addend = relocation;
-			  outrel.r_offset = (sgot->output_section->vma
-					     + sgot->output_offset
-					     + off);
-			  outrel.r_info = ELF32_R_INFO (0, R_NIOS2_RELATIVE);
-			  loc = srelgot->contents;
-			  loc += (srelgot->reloc_count++ *
-				  sizeof (Elf32_External_Rela));
-			  bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
-			}
-
-		      local_got_offsets[r_symndx] |= 1;
-		    }
-		}
-
-	      if (use_plt && bfd_link_pic (info))
-		{
-		  off = ((h->plt.offset - 24) / 12 + 3) * 4;
-		  relocation = (htab->root.sgotplt->output_offset + off
-				- got_base);
-		}
-	      else
-		relocation = sgot->output_offset + off - got_base;
-
-	      /* This relocation does not use the addend.  */
-	      rel->r_addend = 0;
-
-	      switch (howto->type)
-		{
-		case R_NIOS2_GOT_LO:
-		case R_NIOS2_CALL_LO:
-		  r = nios2_elf32_do_lo16_relocate (input_bfd, howto,
-						    input_section, contents,
-						    rel->r_offset, relocation,
-						    rel->r_addend);
-		  break;
-		case R_NIOS2_GOT_HA:
-		case R_NIOS2_CALL_HA:
-		  r = nios2_elf32_do_hiadj16_relocate (input_bfd, howto,
-						       input_section, contents,
-						       rel->r_offset,
-						       relocation,
-						       rel->r_addend);
-		  break;
-		default:
-		  r = _bfd_final_link_relocate (howto, input_bfd,
-						input_section, contents,
-						rel->r_offset, relocation,
-						rel->r_addend);
-		  break;
-		}
-	      break;
-
-	    case R_NIOS2_GOTOFF_LO:
-	    case R_NIOS2_GOTOFF_HA:
-	    case R_NIOS2_GOTOFF:
-	      /* Relocation is relative to the global offset table pointer.  */
-
-	      BFD_ASSERT (sgot != NULL);
-	      if (sgot == NULL)
-		{
-		  r = bfd_reloc_notsupported;
-		  break;
-		}
-
-	      /* Note that sgot->output_offset is not involved in this
-		 calculation.  We always want the start of .got.  */
-	      relocation -= sgot->output_section->vma;
-
-	      /* Now we adjust the relocation to be relative to the GOT pointer
-		 (the _gp_got symbol), which possibly contains the 0x8000 bias.  */
-	      relocation -= got_base;
-
-	      switch (howto->type)
-		{
-		case R_NIOS2_GOTOFF_LO:
-		  r = nios2_elf32_do_lo16_relocate (input_bfd, howto,
-						    input_section, contents,
-						    rel->r_offset, relocation,
-						    rel->r_addend);
-		  break;
-		case R_NIOS2_GOTOFF_HA:
-		  r = nios2_elf32_do_hiadj16_relocate (input_bfd, howto,
-						       input_section, contents,
-						       rel->r_offset,
-						       relocation,
-						       rel->r_addend);
-		  break;
-		default:
-		  r = _bfd_final_link_relocate (howto, input_bfd,
-						input_section, contents,
-						rel->r_offset, relocation,
-						rel->r_addend);
-		  break;
-		}
-	      break;
-
-	    case R_NIOS2_TLS_LDO16:
-	      relocation -= dtpoff_base (info) + DTP_OFFSET;
-
-	      r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-					    contents, rel->r_offset,
-					    relocation, rel->r_addend);
-	      break;
-	    case R_NIOS2_TLS_LDM16:
-	      if (htab->root.sgot == NULL)
-		abort ();
-
-	      off = htab->tls_ldm_got.offset;
-
-	      if ((off & 1) != 0)
-		off &= ~1;
-	      else
-		{
-		  /* If we don't know the module number, create a relocation
-		     for it.  */
-		  if (bfd_link_pic (info))
-		    {
-		      Elf_Internal_Rela outrel;
-		      bfd_byte *loc;
-
-		      if (htab->root.srelgot == NULL)
-			abort ();
-
-		      outrel.r_addend = 0;
-		      outrel.r_offset = (htab->root.sgot->output_section->vma
-					 + htab->root.sgot->output_offset
-					 + off);
-		      outrel.r_info = ELF32_R_INFO (0, R_NIOS2_TLS_DTPMOD);
-
-		      loc = htab->root.srelgot->contents;
-		      loc += (htab->root.srelgot->reloc_count++
-			      * sizeof (Elf32_External_Rela));
-		      bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
-		    }
-		  else
-		    bfd_put_32 (output_bfd, 1,
-				htab->root.sgot->contents + off);
-
-		  htab->tls_ldm_got.offset |= 1;
-		}
-
-	      relocation = htab->root.sgot->output_offset + off - got_base;
-
-	      r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-					    contents, rel->r_offset,
-					    relocation, rel->r_addend);
-
-	      break;
-	    case R_NIOS2_TLS_GD16:
-	    case R_NIOS2_TLS_IE16:
-	      {
-		int indx;
-		char tls_type;
-
-		if (htab->root.sgot == NULL)
-		  abort ();
-
-		indx = 0;
-		if (h != NULL)
-		  {
-		    bfd_boolean dyn;
-		    dyn = htab->root.dynamic_sections_created;
-		    if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
-							 bfd_link_pic (info),
-							 h)
-			&& (!bfd_link_pic (info)
-			    || !SYMBOL_REFERENCES_LOCAL (info, h)))
-		      {
-			unresolved_reloc = FALSE;
-			indx = h->dynindx;
-		      }
-		    off = h->got.offset;
-		    tls_type = (((struct elf32_nios2_link_hash_entry *) h)
-				->tls_type);
-		  }
-		else
-		  {
-		    if (local_got_offsets == NULL)
-		      abort ();
-		    off = local_got_offsets[r_symndx];
-		    tls_type = (elf32_nios2_local_got_tls_type (input_bfd)
-				[r_symndx]);
-		  }
-
-		if (tls_type == GOT_UNKNOWN)
-		  abort ();
-
-		if ((off & 1) != 0)
-		  off &= ~1;
-		else
-		  {
-		    bfd_boolean need_relocs = FALSE;
-		    Elf_Internal_Rela outrel;
-		    bfd_byte *loc = NULL;
-		    int cur_off = off;
-
-		    /* The GOT entries have not been initialized yet.  Do it
-		       now, and emit any relocations.  If both an IE GOT and a
-		       GD GOT are necessary, we emit the GD first.  */
-
-		    if ((bfd_link_pic (info) || indx != 0)
-			&& (h == NULL
-			    || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-				&& !resolved_to_zero)
-			    || h->root.type != bfd_link_hash_undefweak))
-		      {
-			need_relocs = TRUE;
-			if (htab->root.srelgot == NULL)
-			  abort ();
-			loc = htab->root.srelgot->contents;
-			loc += (htab->root.srelgot->reloc_count *
-				sizeof (Elf32_External_Rela));
-		      }
-
-		    if (tls_type & GOT_TLS_GD)
-		      {
-			if (need_relocs)
-			  {
-			    outrel.r_addend = 0;
-			    outrel.r_offset = (htab->root.sgot->output_section->vma
-					       + htab->root.sgot->output_offset
-					       + cur_off);
-			    outrel.r_info = ELF32_R_INFO (indx,
-							  R_NIOS2_TLS_DTPMOD);
-
-			    bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-						       loc);
-			    htab->root.srelgot->reloc_count++;
-			    loc += sizeof (Elf32_External_Rela);
-
-			    if (indx == 0)
-			      bfd_put_32 (output_bfd,
-					  (relocation - dtpoff_base (info) -
-					   DTP_OFFSET),
-					  htab->root.sgot->contents + cur_off + 4);
-			    else
-			      {
-				outrel.r_addend = 0;
-				outrel.r_info = ELF32_R_INFO (indx,
-				  R_NIOS2_TLS_DTPREL);
-				outrel.r_offset += 4;
-
-				bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-							   loc);
-				htab->root.srelgot->reloc_count++;
-				loc += sizeof (Elf32_External_Rela);
-			      }
-			  }
-			else
-			  {
-			    /* If we are not emitting relocations for a
-			       general dynamic reference, then we must be in a
-			       static link or an executable link with the
-			       symbol binding locally.  Mark it as belonging
-			       to module 1, the executable.  */
-			    bfd_put_32 (output_bfd, 1,
-					htab->root.sgot->contents + cur_off);
-			    bfd_put_32 (output_bfd, (relocation -
-						     dtpoff_base (info) -
-						     DTP_OFFSET),
-					htab->root.sgot->contents + cur_off + 4);
-			  }
-
-			cur_off += 8;
-		      }
-
-		    if (tls_type & GOT_TLS_IE)
-		      {
-			if (need_relocs)
-			  {
-			    if (indx == 0)
-			      outrel.r_addend = (relocation -
-						 dtpoff_base (info));
-			    else
-			      outrel.r_addend = 0;
-			    outrel.r_offset = (htab->root.sgot->output_section->vma
-					       + htab->root.sgot->output_offset
-					       + cur_off);
-			    outrel.r_info = ELF32_R_INFO (indx,
-							  R_NIOS2_TLS_TPREL);
-
-			    bfd_elf32_swap_reloca_out (output_bfd, &outrel,
-						       loc);
-			    htab->root.srelgot->reloc_count++;
-			    loc += sizeof (Elf32_External_Rela);
-			  }
-			else
-			  bfd_put_32 (output_bfd, (tpoff (info, relocation)
-						   - TP_OFFSET),
-				      htab->root.sgot->contents + cur_off);
-			cur_off += 4;
-		      }
-
-		    if (h != NULL)
-		      h->got.offset |= 1;
-		    else
-		      local_got_offsets[r_symndx] |= 1;
-		  }
-
-		if ((tls_type & GOT_TLS_GD) && r_type != R_NIOS2_TLS_GD16)
-		  off += 8;
-		relocation = htab->root.sgot->output_offset + off - got_base;
-
-		r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-					      contents, rel->r_offset,
-					      relocation, rel->r_addend);
-	      }
-
-	      break;
-	    case R_NIOS2_TLS_LE16:
-	      if (bfd_link_dll (info))
-		{
-		  _bfd_error_handler
-		    /* xgettext:c-format */
-		    (_("%pB(%pA+%#" PRIx64 "): %s relocation not "
-		       "permitted in shared object"),
-		     input_bfd, input_section,
-		     (uint64_t) rel->r_offset, howto->name);
-		  return FALSE;
-		}
-	      else
-		relocation = tpoff (info, relocation) - TP_OFFSET;
-
-	      r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-					    contents, rel->r_offset,
-					    relocation, rel->r_addend);
-	      break;
-
-	    case R_NIOS2_BFD_RELOC_32:
-	      if (bfd_link_pic (info)
-		  && (input_section->flags & SEC_ALLOC) != 0
-		  && (h == NULL
-		      || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-			  && !resolved_to_zero)
-		      || h->root.type != bfd_link_hash_undefweak))
-		{
-		  Elf_Internal_Rela outrel;
-		  bfd_byte *loc;
-		  bfd_boolean skip, relocate;
-
-		  /* When generating a shared object, these relocations
-		     are copied into the output file to be resolved at run
-		     time.  */
-
-		  skip = FALSE;
-		  relocate = FALSE;
-
-		  outrel.r_offset
-		    = _bfd_elf_section_offset (output_bfd, info,
-					       input_section, rel->r_offset);
-		  if (outrel.r_offset == (bfd_vma) -1)
-		    skip = TRUE;
-		  else if (outrel.r_offset == (bfd_vma) -2)
-		    skip = TRUE, relocate = TRUE;
-		  outrel.r_offset += (input_section->output_section->vma
-				      + input_section->output_offset);
-
-		  if (skip)
-		    memset (&outrel, 0, sizeof outrel);
-		  else if (h != NULL
-			   && h->dynindx != -1
-			   && (!bfd_link_pic (info)
-			       || !SYMBOLIC_BIND (info, h)
-			       || !h->def_regular))
-		    {
-		      outrel.r_info = ELF32_R_INFO (h->dynindx, r_type);
-		      outrel.r_addend = rel->r_addend;
-		    }
-		  else
-		    {
-		      /* This symbol is local, or marked to become local.  */
-		      outrel.r_addend = relocation + rel->r_addend;
-		      relocate = TRUE;
-		      outrel.r_info = ELF32_R_INFO (0, R_NIOS2_RELATIVE);
-		    }
-
-		  sreloc = elf_section_data (input_section)->sreloc;
-		  if (sreloc == NULL)
-		    abort ();
-
-		  loc = sreloc->contents;
-		  loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rela);
-		  bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
-
-		  /* This reloc will be computed at runtime, so there's no
-		     need to do anything now, except for R_NIOS2_BFD_RELOC_32
-		     relocations that have been turned into
-		     R_NIOS2_RELATIVE.  */
-		  if (!relocate)
-		    break;
-		}
-
-	      r = _bfd_final_link_relocate (howto, input_bfd,
-					    input_section, contents,
-					    rel->r_offset, relocation,
-					    rel->r_addend);
-	      break;
-
-	    case R_NIOS2_TLS_DTPREL:
-	      relocation -= dtpoff_base (info);
-	      /* Fall through.  */
-
-	    default:
-	      r = _bfd_final_link_relocate (howto, input_bfd,
-					    input_section, contents,
-					    rel->r_offset, relocation,
-					    rel->r_addend);
-	      break;
-	    }
-	}
-      else
-	r = bfd_reloc_notsupported;
-
-      if (r != bfd_reloc_ok)
-	{
-	  if (h != NULL)
-	    name = h->root.root.string;
-	  else
-	    {
-	      name = bfd_elf_string_from_elf_section (input_bfd,
-						      symtab_hdr->sh_link,
-						      sym->st_name);
-	      if (name == NULL || *name == '\0')
-		name = bfd_section_name (sec);
-	    }
-
-	  switch (r)
-	    {
-	    case bfd_reloc_overflow:
-	      (*info->callbacks->reloc_overflow) (info, NULL, name,
-						  howto->name, (bfd_vma) 0,
-						  input_bfd, input_section,
-						  rel->r_offset);
-	      break;
-
-	    case bfd_reloc_undefined:
-	      (*info->callbacks->undefined_symbol) (info, name, input_bfd,
-						    input_section,
-						    rel->r_offset, TRUE);
-	      break;
-
-	    case bfd_reloc_outofrange:
-	      if (msg == NULL)
-		msg = _("relocation out of range");
-	      break;
-
-	    case bfd_reloc_notsupported:
-	      if (msg == NULL)
-		msg = _("unsupported relocation");
-	      break;
-
-	    case bfd_reloc_dangerous:
-	      if (msg == NULL)
-		msg = _("dangerous relocation");
-	      break;
-
-	    default:
-	      if (msg == NULL)
-		msg = _("unknown error");
-	      break;
-	    }
-
-	  if (msg)
-	    {
-	      (*info->callbacks->warning) (info, msg, name, input_bfd,
-					   input_section, rel->r_offset);
-	      if (msgbuf)
-		free (msgbuf);
-	      return FALSE;
-	    }
-	}
-    }
-  return TRUE;
-}
-
-/* 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)
-{
-  if (hdr->sh_flags & SHF_NIOS2_GPREL)
-    *flags |= SEC_SMALL_DATA;
-
-  return TRUE;
-}
-
-/* Implement elf_backend_fake_sections:
-   Set the correct type for an NIOS2 ELF section.  We do this by the
-   section name, which is a hack, but ought to work.  */
-static bfd_boolean
-nios2_elf32_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
-			   Elf_Internal_Shdr *hdr, asection *sec)
-{
-  const char *name = bfd_section_name (sec);
-
-  if ((sec->flags & SEC_SMALL_DATA)
-      || strcmp (name, ".sdata") == 0
-      || strcmp (name, ".sbss") == 0
-      || strcmp (name, ".lit4") == 0 || strcmp (name, ".lit8") == 0)
-    hdr->sh_flags |= SHF_NIOS2_GPREL;
-
-  return TRUE;
-}
-
-/* Create .got, .gotplt, and .rela.got sections in DYNOBJ, and set up
-   shortcuts to them in our hash table.  */
-static bfd_boolean
-create_got_section (bfd *dynobj, struct bfd_link_info *info)
-{
-  struct elf32_nios2_link_hash_table *htab;
-  struct elf_link_hash_entry *h;
-
-  htab = elf32_nios2_hash_table (info);
-
-  if (! _bfd_elf_create_got_section (dynobj, info))
-    return FALSE;
-
-  /* In order for the two loads in .PLTresolve to share the same %hiadj,
-     _GLOBAL_OFFSET_TABLE_ must be aligned to a 16-byte boundary.  */
-  if (!bfd_set_section_alignment (htab->root.sgotplt, 4))
-    return FALSE;
-
-  /* The Nios II ABI specifies that GOT-relative relocations are relative
-     to the linker-created symbol _gp_got, rather than using
-     _GLOBAL_OFFSET_TABLE_ directly.  In particular, the latter always
-     points to the base of the GOT while _gp_got may include a bias.  */
-  h = _bfd_elf_define_linkage_sym (dynobj, info, htab->root.sgotplt,
-				   "_gp_got");
-  htab->h_gp_got = h;
-  if (h == NULL)
-    return FALSE;
-
-  return TRUE;
-}
-
-/* Implement elf_backend_create_dynamic_sections:
-   Create .plt, .rela.plt, .got, .got.plt, .rela.got, .dynbss, and
-   .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
-   hash table.  */
-static bfd_boolean
-nios2_elf32_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
-{
-  struct elf32_nios2_link_hash_table *htab;
-
-  htab = elf32_nios2_hash_table (info);
-  if (!htab->root.sgot && !create_got_section (dynobj, info))
-    return FALSE;
-
-  if (!_bfd_elf_create_dynamic_sections (dynobj, info))
-    return FALSE;
-
-  /* In order for the two loads in a shared object .PLTresolve to share the
-     same %hiadj, the start of the PLT (as well as the GOT) must be aligned
-     to a 16-byte boundary.  This is because the addresses for these loads
-     include the -(.plt+4) PIC correction.  */
-  return bfd_set_section_alignment (htab->root.splt, 4);
-}
-
-/* Implement elf_backend_copy_indirect_symbol:
-   Copy the extra info we tack onto an elf_link_hash_entry.  */
-static void
-nios2_elf32_copy_indirect_symbol (struct bfd_link_info *info,
-				  struct elf_link_hash_entry *dir,
-				  struct elf_link_hash_entry *ind)
-{
-  struct elf32_nios2_link_hash_entry *edir, *eind;
-
-  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)
-    {
-      edir->tls_type = eind->tls_type;
-      eind->tls_type = GOT_UNKNOWN;
-    }
-
-  edir->got_types_used |= eind->got_types_used;
-
-  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
-}
-
-/* Set the right machine number for a NIOS2 ELF file.  */
-
-static bfd_boolean
-nios2_elf32_object_p (bfd *abfd)
-{
-  unsigned long mach;
-
-  mach = elf_elfheader (abfd)->e_flags;
-
-  switch (mach)
-    {
-    default:
-    case EF_NIOS2_ARCH_R1:
-      bfd_default_set_arch_mach (abfd, bfd_arch_nios2, bfd_mach_nios2r1);
-      break;
-    case EF_NIOS2_ARCH_R2:
-      bfd_default_set_arch_mach (abfd, bfd_arch_nios2, bfd_mach_nios2r2);
-      break;
-    }
-
-  return TRUE;
-}
-
-/* Implement elf_backend_check_relocs:
-   Look through the relocs for a section during the first phase.  */
-static bfd_boolean
-nios2_elf32_check_relocs (bfd *abfd, struct bfd_link_info *info,
-			  asection *sec, const Elf_Internal_Rela *relocs)
-{
-  Elf_Internal_Shdr *symtab_hdr;
-  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
-  const Elf_Internal_Rela *rel;
-  const Elf_Internal_Rela *rel_end;
-  struct elf32_nios2_link_hash_table *htab;
-  asection *sreloc = NULL;
-  bfd_signed_vma *local_got_refcounts;
-
-  if (bfd_link_relocatable (info))
-    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));
-  if (!elf_bad_symtab (abfd))
-    sym_hashes_end -= symtab_hdr->sh_info;
-  local_got_refcounts = elf_local_got_refcounts (abfd);
-
-  htab = elf32_nios2_hash_table (info);
-
-  rel_end = relocs + sec->reloc_count;
-  for (rel = relocs; rel < rel_end; rel++)
-    {
-      unsigned int r_type;
-      struct elf_link_hash_entry *h;
-      unsigned long r_symndx;
-
-      r_symndx = ELF32_R_SYM (rel->r_info);
-      if (r_symndx < symtab_hdr->sh_info)
-	h = NULL;
-      else
-	{
-	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-	  while (h->root.type == bfd_link_hash_indirect
-		 || h->root.type == bfd_link_hash_warning)
-	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-	}
-
-      r_type = ELF32_R_TYPE (rel->r_info);
-
-      switch (r_type)
-	{
-	case R_NIOS2_GOT16:
-	case R_NIOS2_GOT_LO:
-	case R_NIOS2_GOT_HA:
-	case R_NIOS2_CALL16:
-	case R_NIOS2_CALL_LO:
-	case R_NIOS2_CALL_HA:
-	case R_NIOS2_TLS_GD16:
-	case R_NIOS2_TLS_IE16:
-	  /* This symbol requires a global offset table entry.  */
-	  {
-	    int tls_type, old_tls_type;
-
-	    switch (r_type)
-	      {
-	      default:
-	      case R_NIOS2_GOT16:
-	      case R_NIOS2_GOT_LO:
-	      case R_NIOS2_GOT_HA:
-	      case R_NIOS2_CALL16:
-	      case R_NIOS2_CALL_LO:
-	      case R_NIOS2_CALL_HA:
-		tls_type = GOT_NORMAL;
-		break;
-	      case R_NIOS2_TLS_GD16:
-		tls_type = GOT_TLS_GD;
-		break;
-	      case R_NIOS2_TLS_IE16:
-		tls_type = GOT_TLS_IE;
-		break;
-	      }
-
-	    if (h != NULL)
-	      {
-		struct elf32_nios2_link_hash_entry *eh
-		  = (struct elf32_nios2_link_hash_entry *)h;
-		h->got.refcount++;
-		old_tls_type = elf32_nios2_hash_entry(h)->tls_type;
-		if (r_type == R_NIOS2_CALL16
-		    || r_type == R_NIOS2_CALL_LO
-		    || r_type == R_NIOS2_CALL_HA)
-		  {
-		    /* Make sure a plt entry is created for this symbol if
-		       it turns out to be a function defined by a dynamic
-		       object.  */
-		    h->plt.refcount++;
-		    h->needs_plt = 1;
-		    h->type = STT_FUNC;
-		    eh->got_types_used |= CALL_USED;
-		  }
-		else
-		  eh->got_types_used |= GOT_USED;
-	      }
-	    else
-	      {
-		/* This is a global offset table entry for a local symbol.  */
-		if (local_got_refcounts == NULL)
-		  {
-		    bfd_size_type size;
-
-		    size = symtab_hdr->sh_info;
-		    size *= (sizeof (bfd_signed_vma) + sizeof (char));
-		    local_got_refcounts
-		      = ((bfd_signed_vma *) bfd_zalloc (abfd, size));
-		    if (local_got_refcounts == NULL)
-		      return FALSE;
-		    elf_local_got_refcounts (abfd) = local_got_refcounts;
-		    elf32_nios2_local_got_tls_type (abfd)
-		      = (char *) (local_got_refcounts + symtab_hdr->sh_info);
-		  }
-		local_got_refcounts[r_symndx]++;
-		old_tls_type = elf32_nios2_local_got_tls_type (abfd) [r_symndx];
-	      }
-
-	    /* We will already have issued an error message if there is a
-	       TLS / non-TLS mismatch, based on the symbol type.  We don't
-	       support any linker relaxations.  So just combine any TLS
-	       types needed.  */
-	    if (old_tls_type != GOT_UNKNOWN && old_tls_type != GOT_NORMAL
-		&& tls_type != GOT_NORMAL)
-	      tls_type |= old_tls_type;
-
-	    if (old_tls_type != tls_type)
-	      {
-		if (h != NULL)
-		  elf32_nios2_hash_entry (h)->tls_type = tls_type;
-		else
-		  elf32_nios2_local_got_tls_type (abfd) [r_symndx] = tls_type;
-	      }
-	  }
-	make_got:
-	  if (htab->root.sgot == NULL)
-	    {
-	      if (htab->root.dynobj == NULL)
-		htab->root.dynobj = abfd;
-	      if (!create_got_section (htab->root.dynobj, info))
-		return FALSE;
-	    }
-	  break;
-
-	case R_NIOS2_TLS_LDM16:
-	  htab->tls_ldm_got.refcount++;
-	  goto make_got;
-
-	  /* This relocation describes the C++ object vtable hierarchy.
-	     Reconstruct it for later use during GC.  */
-	case R_NIOS2_GNU_VTINHERIT:
-	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
-	  break;
-
-	  /* This relocation describes which C++ vtable entries are actually
-	     used.  Record for later use during GC.  */
-	case R_NIOS2_GNU_VTENTRY:
-	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
-	  break;
-
-	case R_NIOS2_BFD_RELOC_32:
-	case R_NIOS2_CALL26:
-	case R_NIOS2_CALL26_NOAT:
-	case R_NIOS2_HIADJ16:
-	case R_NIOS2_LO16:
-
-	  if (h != NULL)
-	    {
-	      /* If this reloc is in a read-only section, we might
-		   need a copy reloc.  We can't check reliably at this
-		   stage whether the section is read-only, as input
-		   sections have not yet been mapped to output sections.
-		   Tentatively set the flag for now, and correct in
-		   adjust_dynamic_symbol.  */
-	      if (!bfd_link_pic (info))
-		h->non_got_ref = 1;
-
-	      /* Make sure a plt entry is created for this symbol if it
-		 turns out to be a function defined by a dynamic object.  */
-	      h->plt.refcount++;
-
-	      if (r_type == R_NIOS2_CALL26 || r_type == R_NIOS2_CALL26_NOAT)
-		h->needs_plt = 1;
-	    }
-
-	  /* If we are creating a shared library, we need to copy the
-	     reloc into the shared library.  */
-	  if (bfd_link_pic (info)
-	      && (sec->flags & SEC_ALLOC) != 0
-	      && (r_type == R_NIOS2_BFD_RELOC_32
-		  || (h != NULL && ! h->needs_plt
-		      && (! SYMBOLIC_BIND (info, h) || ! h->def_regular))))
-	    {
-	      struct elf_dyn_relocs *p;
-	      struct elf_dyn_relocs **head;
-
-	      /* When creating a shared object, we must copy these
-		 reloc types into the output file.  We create a reloc
-		 section in dynobj and make room for this reloc.  */
-	      if (sreloc == NULL)
-		{
-		  if (htab->root.dynobj == NULL)
-		    htab->root.dynobj = abfd;
-
-		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->root.dynobj, 2, abfd, TRUE);
-		  if (sreloc == NULL)
-		    return FALSE;
-		}
-
-	      /* 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;
-	      else
-		{
-		  /* Track dynamic relocs needed for local syms too.
-		     We really need local syms available to do this
-		     easily.  Oh well.  */
-
-		  asection *s;
-		  void *vpp;
-		  Elf_Internal_Sym *isym;
-
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-						abfd, r_symndx);
-		  if (isym == NULL)
-		    return FALSE;
-
-		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
-		  if (s == NULL)
-		    s = sec;
-
-		  vpp = &elf_section_data (s)->local_dynrel;
-		  head = (struct elf_dyn_relocs **) vpp;
-		}
-
-	      p = *head;
-	      if (p == NULL || p->sec != sec)
-		{
-		  bfd_size_type amt = sizeof *p;
-		  p = ((struct elf_dyn_relocs *)
-		       bfd_alloc (htab->root.dynobj, amt));
-		  if (p == NULL)
-		    return FALSE;
-		  p->next = *head;
-		  *head = p;
-		  p->sec = sec;
-		  p->count = 0;
-		  p->pc_count = 0;
-		}
-
-	      p->count += 1;
-
-	    }
-	  break;
-	}
-    }
-
-  return TRUE;
-}
-
-
-/* Implement elf_backend_gc_mark_hook:
-   Return the section that should be marked against GC for a given
-   relocation.  */
-static asection *
-nios2_elf32_gc_mark_hook (asection *sec,
-			  struct bfd_link_info *info,
-			  Elf_Internal_Rela *rel,
-			  struct elf_link_hash_entry *h,
-			  Elf_Internal_Sym *sym)
-{
-  if (h != NULL)
-    switch (ELF32_R_TYPE (rel->r_info))
-      {
-      case R_NIOS2_GNU_VTINHERIT:
-      case R_NIOS2_GNU_VTENTRY:
-	return NULL;
-      }
-  return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
-}
-
-/* Implement elf_backend_finish_dynamic_symbols:
-   Finish up dynamic symbol handling.  We set the contents of various
-   dynamic sections here.  */
-static bfd_boolean
-nios2_elf32_finish_dynamic_symbol (bfd *output_bfd,
-				   struct bfd_link_info *info,
-				   struct elf_link_hash_entry *h,
-				   Elf_Internal_Sym *sym)
-{
-  struct elf32_nios2_link_hash_table *htab;
-  struct elf32_nios2_link_hash_entry *eh
-    = (struct elf32_nios2_link_hash_entry *)h;
-  int use_plt;
-
-  htab = elf32_nios2_hash_table (info);
-
-  if (h->plt.offset != (bfd_vma) -1)
-    {
-      asection *splt;
-      asection *sgotplt;
-      asection *srela;
-      bfd_vma plt_index;
-      bfd_vma got_offset;
-      Elf_Internal_Rela rela;
-      bfd_byte *loc;
-      bfd_vma got_address;
-
-      /* This symbol has an entry in the procedure linkage table.  Set
-	 it up.  */
-      BFD_ASSERT (h->dynindx != -1);
-      splt = htab->root.splt;
-      sgotplt = htab->root.sgotplt;
-      srela = htab->root.srelplt;
-      BFD_ASSERT (splt != NULL && sgotplt != NULL && srela != NULL);
-
-      /* Emit the PLT entry.  */
-      if (bfd_link_pic (info))
-	{
-	  nios2_elf32_install_data (splt, nios2_so_plt_entry, h->plt.offset,
-				    3);
-	  plt_index = (h->plt.offset - 24) / 12;
-	  got_offset = (plt_index + 3) * 4;
-	  nios2_elf32_install_imm16 (splt, h->plt.offset,
-				     hiadj(plt_index * 4));
-	  nios2_elf32_install_imm16 (splt, h->plt.offset + 4,
-				     (plt_index * 4) & 0xffff);
-	  nios2_elf32_install_imm16 (splt, h->plt.offset + 8,
-				     0xfff4 - h->plt.offset);
-	  got_address = (sgotplt->output_section->vma + sgotplt->output_offset
-			 + got_offset);
-
-	  /* Fill in the entry in the global offset table.  There are no
-	     res_n slots for a shared object PLT, instead the .got.plt entries
-	     point to the PLT entries.  */
-	  bfd_put_32 (output_bfd,
-		      splt->output_section->vma + splt->output_offset
-		      + h->plt.offset, sgotplt->contents + got_offset);
-	}
-      else
-	{
-	  plt_index = (h->plt.offset - 28 - htab->res_n_size) / 12;
-	  got_offset = (plt_index + 3) * 4;
-
-	  nios2_elf32_install_data (splt, nios2_plt_entry, h->plt.offset, 3);
-	  got_address = (sgotplt->output_section->vma + sgotplt->output_offset
-			 + got_offset);
-	  nios2_elf32_install_imm16 (splt, h->plt.offset, hiadj(got_address));
-	  nios2_elf32_install_imm16 (splt, h->plt.offset + 4,
-				     got_address & 0xffff);
-
-	  /* Fill in the entry in the global offset table.  */
-	  bfd_put_32 (output_bfd,
-		      splt->output_section->vma + splt->output_offset
-		      + plt_index * 4, sgotplt->contents + got_offset);
-	}
-
-      /* Fill in the entry in the .rela.plt section.  */
-      rela.r_offset = got_address;
-      rela.r_info = ELF32_R_INFO (h->dynindx, R_NIOS2_JUMP_SLOT);
-      rela.r_addend = 0;
-      loc = srela->contents + plt_index * sizeof (Elf32_External_Rela);
-      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
-
-      if (!h->def_regular)
-	{
-	  /* Mark the symbol as undefined, rather than as defined in
-	     the .plt section.  Leave the value alone.  */
-	  sym->st_shndx = SHN_UNDEF;
-	  /* If the symbol is weak, we do need to clear the value.
-	     Otherwise, the PLT entry would provide a definition for
-	     the symbol even if the symbol wasn't defined anywhere,
-	     and so the symbol would never be NULL.  */
-	  if (!h->ref_regular_nonweak)
-	    sym->st_value = 0;
-	}
-    }
-
-  use_plt = (eh->got_types_used == CALL_USED
-	     && h->plt.offset != (bfd_vma) -1);
-
-  if (!use_plt && h->got.offset != (bfd_vma) -1
-      && (elf32_nios2_hash_entry (h)->tls_type & GOT_TLS_GD) == 0
-      && (elf32_nios2_hash_entry (h)->tls_type & GOT_TLS_IE) == 0)
-    {
-      asection *sgot;
-      asection *srela;
-      Elf_Internal_Rela rela;
-      bfd_byte *loc;
-      bfd_vma offset;
-
-      /* 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);
-
-      offset = (h->got.offset & ~(bfd_vma) 1);
-      rela.r_offset = (sgot->output_section->vma
-		       + sgot->output_offset + offset);
-
-      /* If this is a -Bsymbolic link, and the symbol is defined
-	 locally, we just want to emit a RELATIVE reloc.  Likewise if
-	 the symbol was forced to be local because of a version file.
-	 The entry in the global offset table will already have been
-	 initialized in the relocate_section function.  */
-
-      if (bfd_link_pic (info) && SYMBOL_REFERENCES_LOCAL (info, h))
-	{
-	  rela.r_info = ELF32_R_INFO (0, R_NIOS2_RELATIVE);
-	  rela.r_addend = bfd_get_signed_32 (output_bfd,
-					     (sgot->contents + offset));
-	  bfd_put_32 (output_bfd, (bfd_vma) 0, sgot->contents + offset);
-	}
-      else
-	{
-	  bfd_put_32 (output_bfd, (bfd_vma) 0,
-		      sgot->contents + offset);
-	  rela.r_info = ELF32_R_INFO (h->dynindx, R_NIOS2_GLOB_DAT);
-	  rela.r_addend = 0;
-	}
-
-      loc = srela->contents;
-      loc += srela->reloc_count++ * sizeof (Elf32_External_Rela);
-      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
-    }
-
-  if (use_plt && h->got.offset != (bfd_vma) -1)
-    {
-      bfd_vma offset = (h->got.offset & ~(bfd_vma) 1);
-      asection *sgot = htab->root.sgot;
-      asection *splt = htab->root.splt;
-      bfd_put_32 (output_bfd, (splt->output_section->vma + splt->output_offset
-			       + h->plt.offset),
-		  sgot->contents + offset);
-    }
-
-  if (h->needs_copy)
-    {
-      asection *s;
-      Elf_Internal_Rela rela;
-      bfd_byte *loc;
-
-      /* This symbol needs a copy reloc.  Set it up.  */
-      BFD_ASSERT (h->dynindx != -1
-		  && (h->root.type == bfd_link_hash_defined
-		      || h->root.type == bfd_link_hash_defweak));
-
-      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_info = ELF32_R_INFO (h->dynindx, R_NIOS2_COPY);
-      rela.r_addend = 0;
-      if (h->root.u.def.section == htab->root.sdynrelro)
-	s = htab->root.sreldynrelro;
-      else
-	s = htab->root.srelbss;
-      BFD_ASSERT (s != NULL);
-      loc = s->contents + s->reloc_count++ * sizeof (Elf32_External_Rela);
-      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
-    }
-
-  /* Mark _DYNAMIC, _GLOBAL_OFFSET_TABLE_, and _gp_got as absolute.  */
-  if (strcmp (h->root.root.string, "_DYNAMIC") == 0
-      || h == htab->root.hgot
-      || h == htab->h_gp_got)
-    sym->st_shndx = SHN_ABS;
-
-  return TRUE;
-}
-
-/* Implement elf_backend_finish_dynamic_sections.  */
-static bfd_boolean
-nios2_elf32_finish_dynamic_sections (bfd *output_bfd,
-				     struct bfd_link_info *info)
-{
-  asection *sgotplt;
-  asection *sdyn;
-  struct elf32_nios2_link_hash_table *htab;
-
-  htab = elf32_nios2_hash_table (info);
-  sgotplt = htab->root.sgotplt;
-  sdyn = NULL;
-
-  if (htab->root.dynamic_sections_created)
-    {
-      asection *splt;
-      Elf32_External_Dyn *dyncon, *dynconend;
-
-      splt = htab->root.splt;
-      sdyn = bfd_get_linker_section (htab->root.dynobj, ".dynamic");
-      BFD_ASSERT (splt != NULL && sdyn != NULL && sgotplt != NULL);
-
-      dyncon = (Elf32_External_Dyn *) sdyn->contents;
-      dynconend = (Elf32_External_Dyn *) (sdyn->contents + sdyn->size);
-      for (; dyncon < dynconend; dyncon++)
-	{
-	  Elf_Internal_Dyn dyn;
-	  asection *s;
-
-	  bfd_elf32_swap_dyn_in (htab->root.dynobj, dyncon, &dyn);
-
-	  switch (dyn.d_tag)
-	    {
-	    default:
-	      break;
-
-	    case DT_PLTGOT:
-	      s = htab->root.sgotplt;
-	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
-	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
-	      break;
-
-	    case DT_JMPREL:
-	      s = htab->root.srelplt;
-	      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;
-	      dyn.d_un.d_val = s->size;
-	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
-	      break;
-
-	    case DT_NIOS2_GP:
-	      s = htab->root.sgotplt;
-	      dyn.d_un.d_ptr
-		= s->output_section->vma + s->output_offset + 0x7ff0;
-	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
-	      break;
-	    }
-	}
-
-      /* Fill in the first entry in the procedure linkage table.  */
-      if (splt->size > 0)
-	{
-	  bfd_vma got_address = (sgotplt->output_section->vma
-				 + sgotplt->output_offset);
-	  if (bfd_link_pic (info))
-	    {
-	      bfd_vma got_pcrel = got_address - (splt->output_section->vma
-						 + splt->output_offset);
-	      /* Both GOT and PLT must be aligned to a 16-byte boundary
-		 for the two loads to share the %hiadj part.  The 4-byte
-		 offset for nextpc is accounted for in the %lo offsets
-		 on the loads.  */
-	      BFD_ASSERT ((got_pcrel & 0xf) == 0);
-	      nios2_elf32_install_data (splt, nios2_so_plt0_entry, 0, 6);
-	      nios2_elf32_install_imm16 (splt, 4, hiadj (got_pcrel));
-	      nios2_elf32_install_imm16 (splt, 12, got_pcrel & 0xffff);
-	      nios2_elf32_install_imm16 (splt, 16, (got_pcrel + 4) & 0xffff);
-	    }
-	  else
-	    {
-	      /* Divide by 4 here, not 3 because we already corrected for the
-		 res_N branches.  */
-	      bfd_vma res_size = (splt->size - 28) / 4;
-	      bfd_vma res_start = (splt->output_section->vma
-				   + splt->output_offset);
-	      bfd_vma res_offset;
-
-	      for (res_offset = 0; res_offset < res_size; res_offset += 4)
-		bfd_put_32 (output_bfd,
-			    6 | ((res_size - (res_offset + 4)) << 6),
-			    splt->contents + res_offset);
-
-	      /* The GOT must be aligned to a 16-byte boundary for the
-		 two loads to share the same %hiadj part.  */
-	      BFD_ASSERT ((got_address & 0xf) == 0);
-
-	      nios2_elf32_install_data (splt, nios2_plt0_entry, res_size, 7);
-	      nios2_elf32_install_imm16 (splt, res_size, hiadj (res_start));
-	      nios2_elf32_install_imm16 (splt, res_size + 4,
-					 res_start & 0xffff);
-	      nios2_elf32_install_imm16 (splt, res_size + 12,
-					 hiadj (got_address));
-	      nios2_elf32_install_imm16 (splt, res_size + 16,
-					 (got_address + 4) & 0xffff);
-	      nios2_elf32_install_imm16 (splt, res_size + 20,
-					 (got_address + 8) & 0xffff);
-	    }
-	}
-    }
-
-  /* Fill in the first three entries in the global offset table.  */
-  if (sgotplt != NULL && sgotplt->size > 0)
-    {
-      if (sdyn == NULL)
-	bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents);
-      else
-	bfd_put_32 (output_bfd,
-		    sdyn->output_section->vma + sdyn->output_offset,
-		    sgotplt->contents);
-      bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents + 4);
-      bfd_put_32 (output_bfd, (bfd_vma) 0, sgotplt->contents + 8);
-
-      if (sgotplt->output_section != bfd_abs_section_ptr)
-	elf_section_data (sgotplt->output_section)->this_hdr.sh_entsize = 4;
-    }
-
-  return TRUE;
-}
-
-/* Implement elf_backend_adjust_dynamic_symbol:
-   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
-   change the definition to something the rest of the link can
-   understand.  */
-static bfd_boolean
-nios2_elf32_adjust_dynamic_symbol (struct bfd_link_info *info,
-				   struct elf_link_hash_entry *h)
-{
-  struct elf32_nios2_link_hash_table *htab;
-  bfd *dynobj;
-  asection *s, *srel;
-  unsigned align2;
-
-  htab = elf32_nios2_hash_table (info);
-  dynobj = htab->root.dynobj;
-
-  /* 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 this is a function, put it in the procedure linkage table.  We
-     will fill in the contents of the procedure linkage table later,
-     when we know the address of the .got section.  */
-  if (h->type == STT_FUNC || h->needs_plt)
-    {
-      if (h->plt.refcount <= 0
-	  || SYMBOL_CALLS_LOCAL (info, h)
-	  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
-	      && h->root.type == bfd_link_hash_undefweak))
-	{
-	  /* This case can occur if we saw a PLT reloc in an input
-	     file, but the symbol was never referred to by a dynamic
-	     object, or if all references were garbage collected.  In
-	     such a case, we don't actually need to build a procedure
-	     linkage table, and we can just do a PCREL reloc instead.  */
-	  h->plt.offset = (bfd_vma) -1;
-	  h->needs_plt = 0;
-	}
-
-      return TRUE;
-    }
-
-  /* Reinitialize the plt offset now that it is not used as a reference
-     count any more.  */
-  h->plt.offset = (bfd_vma) -1;
-
-  /* If this is a weak symbol, and there is a real definition, the
-     processor independent code will have arranged for us to see the
-     real definition first, and we can just use the same value.  */
-  if (h->is_weakalias)
-    {
-      struct elf_link_hash_entry *def = weakdef (h);
-      BFD_ASSERT (def->root.type == bfd_link_hash_defined);
-      h->root.u.def.section = def->root.u.def.section;
-      h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
-    }
-
-  /* If there are no non-GOT references, we do not need a copy
-     relocation.  */
-  if (!h->non_got_ref)
-    return TRUE;
-
-  /* This is a reference to a symbol defined by a dynamic object which
-     is not a function.
-     If we are creating a shared library, we must presume that the
-     only references to the symbol are via the global offset table.
-     For such cases we need not do anything here; the relocations will
-     be handled correctly by relocate_section.  */
-  if (bfd_link_pic (info))
-    return TRUE;
-
-  if (h->size == 0)
-    {
-      _bfd_error_handler (_("dynamic variable `%s' is zero size"),
-			  h->root.root.string);
-      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
-     object will contain position independent code, so all references
-     from the dynamic object to this symbol will go through the global
-     offset table.  The dynamic linker will use the .dynsym entry to
-     determine the address it must put in the global offset table, so
-     both the dynamic object and the regular object will refer to the
-     same memory location for the variable.  */
-  /* We must generate a R_NIOS2_COPY reloc to tell the dynamic linker to
-     copy the initial value out of the dynamic object and into the
-     runtime process image.  We need to remember the offset into the
-     .rela.bss section we are going to use.  */
-  if ((h->root.u.def.section->flags & SEC_READONLY) != 0)
-    {
-      s = htab->root.sdynrelro;
-      srel = htab->root.sreldynrelro;
-    }
-  else
-    {
-      s = htab->root.sdynbss;
-      srel = htab->root.srelbss;
-    }
-  if ((h->root.u.def.section->flags & SEC_ALLOC) != 0)
-    {
-      srel->size += sizeof (Elf32_External_Rela);
-      h->needs_copy = 1;
-    }
-
-  align2 = bfd_log2 (h->size);
-  if (align2 > h->root.u.def.section->alignment_power)
-    align2 = h->root.u.def.section->alignment_power;
-
-  /* Align dynbss.  */
-  s->size = BFD_ALIGN (s->size, (bfd_size_type)1 << align2);
-  if (align2 > bfd_section_alignment (s)
-      && !bfd_set_section_alignment (s, align2))
-    return FALSE;
-
-  /* Define the symbol as being at this point in the section.  */
-  h->root.u.def.section = s;
-  h->root.u.def.value = s->size;
-
-  /* Increment the section size to make room for the symbol.  */
-  s->size += h->size;
-
-  return TRUE;
-}
-
-/* Worker function for nios2_elf32_size_dynamic_sections.  */
-static bfd_boolean
-adjust_dynrelocs (struct elf_link_hash_entry *h, PTR inf)
-{
-  struct bfd_link_info *info;
-  struct elf32_nios2_link_hash_table *htab;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  if (h->root.type == bfd_link_hash_warning)
-    /* When warning symbols are created, they **replace** the "real"
-       entry in the hash table, thus we never get to see the real
-       symbol in a hash traversal.  So look at it now.  */
-    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
-  info = (struct bfd_link_info *) inf;
-  htab = elf32_nios2_hash_table (info);
-
-  if (h->plt.offset != (bfd_vma)-1)
-    h->plt.offset += htab->res_n_size;
-  if (htab->root.splt == h->root.u.def.section)
-    h->root.u.def.value += htab->res_n_size;
-
-  return TRUE;
-}
-
-/* Another worker function for nios2_elf32_size_dynamic_sections.
-   Allocate space in .plt, .got and associated reloc sections for
-   dynamic relocs.  */
-static bfd_boolean
-allocate_dynrelocs (struct elf_link_hash_entry *h, PTR inf)
-{
-  struct bfd_link_info *info;
-  struct elf32_nios2_link_hash_table *htab;
-  struct elf32_nios2_link_hash_entry *eh;
-  struct elf_dyn_relocs *p;
-  int use_plt;
-
-  if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
-
-  if (h->root.type == bfd_link_hash_warning)
-    /* When warning symbols are created, they **replace** the "real"
-       entry in the hash table, thus we never get to see the real
-       symbol in a hash traversal.  So look at it now.  */
-    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
-  info = (struct bfd_link_info *) inf;
-  htab = elf32_nios2_hash_table (info);
-
-  if (htab->root.dynamic_sections_created
-      && h->plt.refcount > 0)
-    {
-      /* Make sure this symbol is output as a dynamic symbol.
-	 Undefined weak syms won't yet be marked as dynamic.  */
-      if (h->dynindx == -1
-	  && !h->forced_local
-	  && !bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
-
-      if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
-	{
-	  asection *s = htab->root.splt;
-
-	  /* Allocate room for the header.  */
-	  if (s->size == 0)
-	    {
-	      if (bfd_link_pic (info))
-		s->size = 24;
-	      else
-		s->size = 28;
-	    }
-
-	  h->plt.offset = s->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
-	     location in the .plt.  This is required to make function
-	     pointers compare as equal between the normal executable and
-	     the shared library.  */
-	  if (! bfd_link_pic (info)
-	      && !h->def_regular)
-	    {
-	      h->root.u.def.section = s;
-	      h->root.u.def.value = h->plt.offset;
-	    }
-
-	  /* Make room for this entry.  */
-	  s->size += 12;
-
-	  /* We also need to make an entry in the .rela.plt section.  */
-	  htab->root.srelplt->size += sizeof (Elf32_External_Rela);
-
-	  /* And the .got.plt section.  */
-	  htab->root.sgotplt->size += 4;
-	}
-      else
-	{
-	  h->plt.offset = (bfd_vma) -1;
-	  h->needs_plt = 0;
-	}
-    }
-  else
-    {
-      h->plt.offset = (bfd_vma) -1;
-      h->needs_plt = 0;
-    }
-
-  eh = (struct elf32_nios2_link_hash_entry *) h;
-  use_plt = (eh->got_types_used == CALL_USED
-	     && h->plt.offset != (bfd_vma) -1);
-
-  if (h->got.refcount > 0)
-    {
-      asection *s;
-      bfd_boolean dyn;
-      int tls_type = eh->tls_type;
-      int indx;
-
-      /* Make sure this symbol is output as a dynamic symbol.
-	 Undefined weak syms won't yet be marked as dynamic.  */
-      if (h->dynindx == -1
-	  && !h->forced_local
-	  && !bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
-
-      s = htab->root.sgot;
-      h->got.offset = s->size;
-
-      if (tls_type == GOT_UNKNOWN)
-	abort ();
-
-      if (tls_type == GOT_NORMAL)
-	/* Non-TLS symbols need one GOT slot.  */
-	s->size += 4;
-      else
-	{
-	  if (tls_type & GOT_TLS_GD)
-	    /* R_NIOS2_TLS_GD16 needs 2 consecutive GOT slots.  */
-	    s->size += 8;
-	  if (tls_type & GOT_TLS_IE)
-	    /* R_NIOS2_TLS_IE16 needs one GOT slot.  */
-	    s->size += 4;
-	}
-
-      dyn = htab->root.dynamic_sections_created;
-
-      indx = 0;
-      if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)
-	  && (!bfd_link_pic (info)
-	      || !SYMBOL_REFERENCES_LOCAL (info, h)))
-	indx = h->dynindx;
-
-      if (tls_type != GOT_NORMAL
-	  && (bfd_link_pic (info) || indx != 0)
-	  && (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-	      || h->root.type != bfd_link_hash_undefweak))
-	{
-	  if (tls_type & GOT_TLS_IE)
-	    htab->root.srelgot->size += sizeof (Elf32_External_Rela);
-
-	  if (tls_type & GOT_TLS_GD)
-	    htab->root.srelgot->size += sizeof (Elf32_External_Rela);
-
-	  if ((tls_type & GOT_TLS_GD) && indx != 0)
-	    htab->root.srelgot->size += sizeof (Elf32_External_Rela);
-	}
-      else if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-		|| h->root.type != bfd_link_hash_undefweak)
-	       && !use_plt
-	       && (bfd_link_pic (info)
-		   || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
-	htab->root.srelgot->size += sizeof (Elf32_External_Rela);
-    }
-  else
-    h->got.offset = (bfd_vma) -1;
-
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
-
-  /* In the shared -Bsymbolic case, discard space allocated for
-     dynamic pc-relative relocs against symbols which turn out to be
-     defined in regular objects.  For the normal shared case, discard
-     space for pc-relative relocs that have become local due to symbol
-     visibility changes.  */
-
-  if (bfd_link_pic (info))
-    {
-      if (h->def_regular
-	  && (h->forced_local || SYMBOLIC_BIND (info, h)))
-	{
-	  struct elf_dyn_relocs **pp;
-
-	  for (pp = &eh->dyn_relocs; (p = *pp) != NULL; )
-	    {
-	      p->count -= p->pc_count;
-	      p->pc_count = 0;
-	      if (p->count == 0)
-		*pp = p->next;
-	      else
-		pp = &p->next;
-	    }
-	}
-
-      /* Also discard relocs on undefined weak syms with non-default
-	 visibility.  */
-      if (eh->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;
-
-	  /* Make sure undefined weak symbols are output as a dynamic
-	     symbol in PIEs.  */
-	  else if (h->dynindx == -1
-		   && !h->forced_local
-		   && !bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
-	}
-    }
-  else
-    {
-      /* For the non-shared case, discard space for relocs against
-	 symbols which turn out to need copy relocs or are not
-	 dynamic.  */
-
-      if (!h->non_got_ref
-	  && ((h->def_dynamic && !h->def_regular)
-	      || (htab->root.dynamic_sections_created
-		  && (h->root.type == bfd_link_hash_undefweak
-		      || h->root.type == bfd_link_hash_undefined))))
-	{
-	  /* Make sure this symbol is output as a dynamic symbol.
-	     Undefined weak syms won't yet be marked as dynamic.  */
-	  if (h->dynindx == -1
-	      && !h->forced_local
-	      && !bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
-
-	  /* If that succeeded, we know we'll be keeping all the
-	     relocs.  */
-	  if (h->dynindx != -1)
-	    goto keep;
-	}
-
-      eh->dyn_relocs = NULL;
-
-    keep: ;
-    }
-
-  /* Finally, allocate space.  */
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
-    {
-      asection *sreloc = elf_section_data (p->sec)->sreloc;
-      sreloc->size += p->count * sizeof (Elf32_External_Rela);
-    }
-
-  return TRUE;
-}
-
-/* Implement elf_backend_size_dynamic_sections:
-   Set the sizes of the dynamic sections.  */
-static bfd_boolean
-nios2_elf32_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				   struct bfd_link_info *info)
-{
-  bfd *dynobj;
-  asection *s;
-  bfd_boolean relocs;
-  bfd *ibfd;
-  struct elf32_nios2_link_hash_table *htab;
-
-  htab = elf32_nios2_hash_table (info);
-  dynobj = htab->root.dynobj;
-  BFD_ASSERT (dynobj != NULL);
-
-  htab->res_n_size = 0;
-  if (htab->root.dynamic_sections_created)
-    {
-      /* Set the contents of the .interp section to the interpreter.  */
-      if (bfd_link_executable (info) && !info->nointerp)
-	{
-	  s = bfd_get_linker_section (dynobj, ".interp");
-	  BFD_ASSERT (s != NULL);
-	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
-	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
-	}
-    }
-  else
-    {
-      /* We may have created entries in the .rela.got section.
-	 However, if we are not creating the dynamic sections, we will
-	 not actually use these entries.  Reset the size of .rela.got,
-	 which will cause it to get stripped from the output file
-	 below.  */
-      s = htab->root.srelgot;
-      if (s != NULL)
-	s->size = 0;
-    }
-
-  /* Set up .got offsets for local syms, and space for local dynamic
-     relocs.  */
-  for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
-    {
-      bfd_signed_vma *local_got;
-      bfd_signed_vma *end_local_got;
-      char *local_tls_type;
-      bfd_size_type locsymcount;
-      Elf_Internal_Shdr *symtab_hdr;
-      asection *srel;
-
-      if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
-	continue;
-
-      for (s = ibfd->sections; s != NULL; s = s->next)
-	{
-	  struct elf_dyn_relocs *p;
-
-	  for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
-	    {
-	      if (!bfd_is_abs_section (p->sec)
-		  && bfd_is_abs_section (p->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)
-		{
-		  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;
-		}
-	    }
-	}
-
-      local_got = elf_local_got_refcounts (ibfd);
-      if (!local_got)
-	continue;
-
-      symtab_hdr = &elf_tdata (ibfd)->symtab_hdr;
-      locsymcount = symtab_hdr->sh_info;
-      end_local_got = local_got + locsymcount;
-      local_tls_type = elf32_nios2_local_got_tls_type (ibfd);
-      s = htab->root.sgot;
-      srel = htab->root.srelgot;
-      for (; local_got < end_local_got; ++local_got, ++local_tls_type)
-	{
-	  if (*local_got > 0)
-	    {
-	      *local_got = s->size;
-	      if (*local_tls_type & GOT_TLS_GD)
-		/* TLS_GD relocs need an 8-byte structure in the GOT.  */
-		s->size += 8;
-	      if (*local_tls_type & GOT_TLS_IE)
-		s->size += 4;
-	      if (*local_tls_type == GOT_NORMAL)
-		s->size += 4;
-
-	      if (bfd_link_pic (info) || *local_tls_type == GOT_TLS_GD)
-		srel->size += sizeof (Elf32_External_Rela);
-	    }
-	  else
-	    *local_got = (bfd_vma) -1;
-	}
-    }
-
-  if (htab->tls_ldm_got.refcount > 0)
-    {
-      /* Allocate two GOT entries and one dynamic relocation (if necessary)
-	 for R_NIOS2_TLS_LDM16 relocations.  */
-      htab->tls_ldm_got.offset = htab->root.sgot->size;
-      htab->root.sgot->size += 8;
-      if (bfd_link_pic (info))
-	htab->root.srelgot->size += sizeof (Elf32_External_Rela);
-    }
-  else
-    htab->tls_ldm_got.offset = -1;
-
-  /* Allocate global sym .plt and .got entries, and space for global
-     sym dynamic relocs.  */
-  elf_link_hash_traverse (& htab->root, allocate_dynrelocs, info);
-
-  if (htab->root.dynamic_sections_created)
-    {
-      /* If the .got section is more than 0x8000 bytes, we add
-	 0x8000 to the value of _gp_got, so that 16-bit relocations
-	 have a greater chance of working. */
-      if (htab->root.sgot->size >= 0x8000
-	  && htab->h_gp_got->root.u.def.value == 0)
-	htab->h_gp_got->root.u.def.value = 0x8000;
-    }
-
-  /* The check_relocs and adjust_dynamic_symbol entry points have
-     determined the sizes of the various dynamic sections.  Allocate
-     memory for them.  */
-  relocs = FALSE;
-  for (s = dynobj->sections; s != NULL; s = s->next)
-    {
-      const char *name;
-
-      if ((s->flags & SEC_LINKER_CREATED) == 0)
-	continue;
-
-      /* It's OK to base decisions on the section name, because none
-	 of the dynobj section names depend upon the input files.  */
-      name = bfd_section_name (s);
-
-      if (CONST_STRNEQ (name, ".rela"))
-	{
-	  if (s->size != 0)
-	    {
-	      if (s != htab->root.srelplt)
-		relocs = TRUE;
-
-	      /* We use the reloc_count field as a counter if we need
-		 to copy relocs into the output file.  */
-	      s->reloc_count = 0;
-	    }
-	}
-      else if (s == htab->root.splt)
-	{
-	  /* Correct for the number of res_N branches.  */
-	  if (s->size != 0 && !bfd_link_pic (info))
-	    {
-	      htab->res_n_size = (s->size - 28) / 3;
-	      s->size += htab->res_n_size;
-	    }
-	}
-      else if (s != htab->sbss
-	       && s != htab->root.sgot
-	       && s != htab->root.sgotplt
-	       && s != htab->root.sdynbss
-	       && s != htab->root.sdynrelro)
-	/* It's not one of our sections, so don't allocate space.  */
-	continue;
-
-      if (s->size == 0)
-	{
-	  s->flags |= SEC_EXCLUDE;
-	  continue;
-	}
-
-      if ((s->flags & SEC_HAS_CONTENTS) == 0)
-	continue;
-
-      /* Allocate memory for the section contents.  */
-      s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
-      if (s->contents == NULL)
-	return FALSE;
-    }
-
-  /* Adjust dynamic symbols that point to the plt to account for the
-     now-known number of resN slots.  */
-  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;
-}
-
-/* Free the derived linker hash table.  */
-static void
-nios2_elf32_link_hash_table_free (bfd *obfd)
-{
-  struct elf32_nios2_link_hash_table *htab
-    = (struct elf32_nios2_link_hash_table *) obfd->link.hash;
-
-  bfd_hash_table_free (&htab->bstab);
-  _bfd_elf_link_hash_table_free (obfd);
-}
-
-/* Implement bfd_elf32_bfd_link_hash_table_create.  */
-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);
-
-  ret = bfd_zmalloc (amt);
-  if (ret == NULL)
-    return NULL;
-
-  if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
-				      link_hash_newfunc,
-				      sizeof (struct
-					      elf32_nios2_link_hash_entry),
-				      NIOS2_ELF_DATA))
-    {
-      free (ret);
-      return NULL;
-    }
-
-  /* Init the stub hash table too.  */
-  if (!bfd_hash_table_init (&ret->bstab, stub_hash_newfunc,
-			    sizeof (struct elf32_nios2_stub_hash_entry)))
-    {
-      _bfd_elf_link_hash_table_free (abfd);
-      return NULL;
-    }
-  ret->root.root.hash_table_free = nios2_elf32_link_hash_table_free;
-
-  return &ret->root.root;
-}
-
-/* Implement elf_backend_reloc_type_class.  */
-static enum elf_reloc_type_class
-nios2_elf32_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
-			      const asection *rel_sec ATTRIBUTE_UNUSED,
-			      const Elf_Internal_Rela *rela)
-{
-  switch ((int) ELF32_R_TYPE (rela->r_info))
-    {
-    case R_NIOS2_RELATIVE:
-      return reloc_class_relative;
-    case R_NIOS2_JUMP_SLOT:
-      return reloc_class_plt;
-    case R_NIOS2_COPY:
-      return reloc_class_copy;
-    default:
-      return reloc_class_normal;
-    }
-}
-
-/* Return 1 if target is one of ours.  */
-static bfd_boolean
-is_nios2_elf_target (const struct bfd_target *targ)
-{
-  return (targ == &nios2_elf32_le_vec
-	  || targ == &nios2_elf32_be_vec);
-}
-
-/* Implement elf_backend_add_symbol_hook.
-   This hook is called by the linker when adding symbols from an object
-   file.  We use it to put .comm items in .sbss, and not .bss.  */
-static bfd_boolean
-nios2_elf_add_symbol_hook (bfd *abfd,
-			   struct bfd_link_info *info,
-			   Elf_Internal_Sym *sym,
-			   const char **namep ATTRIBUTE_UNUSED,
-			   flagword *flagsp ATTRIBUTE_UNUSED,
-			   asection **secp,
-			   bfd_vma *valp)
-{
-  if (sym->st_shndx == SHN_COMMON
-      && !bfd_link_relocatable (info)
-      && sym->st_size <= elf_gp_size (abfd)
-      && is_nios2_elf_target (info->output_bfd->xvec))
-    {
-      /* Common symbols less than or equal to -G nn bytes are automatically
-	 put into .sbss.  */
-      struct elf32_nios2_link_hash_table *htab;
-
-      htab = elf32_nios2_hash_table (info);
-      if (htab->sbss == NULL)
-	{
-	  flagword flags = SEC_IS_COMMON | SEC_LINKER_CREATED;
-
-	  if (htab->root.dynobj == NULL)
-	    htab->root.dynobj = abfd;
-
-	  htab->sbss = bfd_make_section_anyway_with_flags (htab->root.dynobj,
-							   ".sbss", flags);
-	  if (htab->sbss == NULL)
-	    return FALSE;
-	}
-
-      *secp = htab->sbss;
-      *valp = sym->st_size;
-    }
-
-  return TRUE;
-}
-
-/* Implement elf_backend_can_make_relative_eh_frame:
-   Decide whether to attempt to turn absptr or lsda encodings in
-   shared libraries into pcrel within the given input section.  */
-static bfd_boolean
-nios2_elf32_can_make_relative_eh_frame (bfd *input_bfd ATTRIBUTE_UNUSED,
-					struct bfd_link_info *info
-					ATTRIBUTE_UNUSED,
-					asection *eh_frame_section
-					ATTRIBUTE_UNUSED)
-{
-  /* We can't use PC-relative encodings in the .eh_frame section.  */
-  return FALSE;
-}
-
-/* Implement elf_backend_special_sections.  */
-const struct bfd_elf_special_section elf32_nios2_special_sections[] =
-{
-  { STRING_COMMA_LEN (".sbss"),	 -2, SHT_NOBITS,
-    SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL },
-  { STRING_COMMA_LEN (".sdata"), -2, SHT_PROGBITS,
-    SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL },
-  { NULL,		      0,  0, 0,		     0 }
-};
-
-#define ELF_ARCH			bfd_arch_nios2
-#define ELF_TARGET_ID			NIOS2_ELF_DATA
-#define ELF_MACHINE_CODE		EM_ALTERA_NIOS2
-
-/* The Nios II MMU uses a 4K page size.  */
-
-#define ELF_MAXPAGESIZE			0x1000
-
-#define bfd_elf32_bfd_link_hash_table_create \
-					  nios2_elf32_link_hash_table_create
-
-#define bfd_elf32_bfd_merge_private_bfd_data \
-					  nios2_elf32_merge_private_bfd_data
-
-/* Relocation table lookup macros.  */
-
-#define bfd_elf32_bfd_reloc_type_lookup	  nios2_elf32_bfd_reloc_type_lookup
-#define bfd_elf32_bfd_reloc_name_lookup	  nios2_elf32_bfd_reloc_name_lookup
-
-/* JUMP_TABLE_LINK macros.  */
-
-/* elf_info_to_howto (using RELA relocations).  */
-
-#define elf_info_to_howto		  nios2_elf32_info_to_howto
-
-/* elf backend functions.  */
-
-#define elf_backend_can_gc_sections	1
-#define elf_backend_can_refcount	1
-#define elf_backend_plt_readonly	1
-#define elf_backend_want_got_plt	1
-#define elf_backend_want_dynrelro	1
-#define elf_backend_rela_normal		1
-#define elf_backend_dtrel_excludes_plt	1
-
-#define elf_backend_relocate_section	  nios2_elf32_relocate_section
-#define elf_backend_section_flags	  nios2_elf32_section_flags
-#define elf_backend_fake_sections	  nios2_elf32_fake_sections
-#define elf_backend_check_relocs	  nios2_elf32_check_relocs
-
-#define elf_backend_gc_mark_hook	  nios2_elf32_gc_mark_hook
-#define elf_backend_create_dynamic_sections \
-					  nios2_elf32_create_dynamic_sections
-#define elf_backend_finish_dynamic_symbol nios2_elf32_finish_dynamic_symbol
-#define elf_backend_finish_dynamic_sections \
-					  nios2_elf32_finish_dynamic_sections
-#define elf_backend_adjust_dynamic_symbol nios2_elf32_adjust_dynamic_symbol
-#define elf_backend_reloc_type_class	  nios2_elf32_reloc_type_class
-#define elf_backend_size_dynamic_sections nios2_elf32_size_dynamic_sections
-#define elf_backend_add_symbol_hook	  nios2_elf_add_symbol_hook
-#define elf_backend_copy_indirect_symbol  nios2_elf32_copy_indirect_symbol
-#define elf_backend_object_p		  nios2_elf32_object_p
-
-#define elf_backend_grok_prstatus	  nios2_grok_prstatus
-#define elf_backend_grok_psinfo		  nios2_grok_psinfo
-
-#undef elf_backend_can_make_relative_eh_frame
-#define elf_backend_can_make_relative_eh_frame \
-					  nios2_elf32_can_make_relative_eh_frame
-
-#define elf_backend_special_sections	  elf32_nios2_special_sections
-
-#define TARGET_LITTLE_SYM		nios2_elf32_le_vec
-#define TARGET_LITTLE_NAME		"elf32-littlenios2"
-#define TARGET_BIG_SYM			nios2_elf32_be_vec
-#define TARGET_BIG_NAME			"elf32-bignios2"
-
-#define elf_backend_got_header_size	12
-#define elf_backend_default_execstack	0
-
-#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.20200303/bfd/elf32-nios2.h ./bfd/elf32-nios2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-nios2.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-nios2.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-/* Nios II support for 32-bit ELF
-   Copyright (C) 2013-2019 Free Software Foundation, Inc.
-   Contributed by Mentor Graphics
-
-   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.  */
-
-#ifndef _ELF32_NIOS2_H
-#define _ELF32_NIOS2_H
-
-extern int nios2_elf32_setup_section_lists
-  (bfd *, struct bfd_link_info *);
-
-extern void nios2_elf32_next_input_section
-  (struct bfd_link_info *, asection *);
-
-extern bfd_boolean nios2_elf32_size_stubs
-  (bfd *, bfd *, struct bfd_link_info *,
-   asection * (*) (const char *, asection *, bfd_boolean), void (*) (void));
-
-extern bfd_boolean nios2_elf32_build_stubs
-  (struct bfd_link_info *);
-
-#endif  /* _ELF32_NIOS2_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.20200303/bfd/elf32-or1k.c ./bfd/elf32-or1k.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-or1k.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-or1k.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Or1k-specific support for 32-bit ELF.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
    Contributed for OR32 by Johan Rydberg, jrydberg@opencores.org
 
    PIC parts added by Stefan Kristiansson, stefan.kristiansson@saunalahti.fi,
@@ -30,10 +30,14 @@
 #define N_ONES(X)	(((bfd_vma)2 << (X)) - 1)
 
 #define PLT_ENTRY_SIZE 16
+#define PLT_ENTRY_SIZE_LARGE (6*4)
+#define PLT_MAX_INSN_COUNT 6
 
 #define OR1K_MOVHI(D)		(0x18000000 | (D << 21))
 #define OR1K_ADRP(D)		(0x08000000 | (D << 21))
 #define OR1K_LWZ(D,A)		(0x84000000 | (D << 21) | (A << 16))
+#define OR1K_ADD(D,A,B)		(0xE0000000 | (D << 21) | (A << 16) | (B << 11))
+#define OR1K_ORI(D,A)		(0xA8000000 | (D << 21) | (A << 16))
 #define OR1K_ORI0(D)		(0xA8000000 | (D << 21))
 #define OR1K_JR(B)		(0x44000000 | (B << 11))
 #define OR1K_NOP		0x15000000
@@ -45,595 +49,595 @@ static reloc_howto_type or1k_elf_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_OR1K_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_32,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_16,
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_8,
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_LO_16_IN_INSN, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_LO_16_IN_INSN", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_HI_16_IN_INSN, /* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_HI_16_IN_INSN", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A PC relative 26 bit relocation, right shifted by 2.  */
   HOWTO (R_OR1K_INSN_REL_26, /* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_INSN_REL_26", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_OR1K_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_OR1K_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_OR1K_GNU_VTENTRY, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_OR1K_GNU_VTENTRY", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_32_PCREL,
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_32_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_OR1K_16_PCREL,
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_OR1K_8_PCREL,
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_8_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
    HOWTO (R_OR1K_GOTPC_HI16,	/* Type.  */
 	 16,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont, /* Complain on overflow.  */
 	 bfd_elf_generic_reloc, /* Special Function.  */
 	 "R_OR1K_GOTPC_HI16",	/* Name.  */
-	 FALSE,		/* Partial Inplace.  */
+	 false,		/* Partial Inplace.  */
 	 0,			/* Source Mask.  */
 	 0xffff,		/* Dest Mask.  */
-	 TRUE),			/* PC relative offset?  */
+	 true),			/* PC relative offset?  */
 
    HOWTO (R_OR1K_GOTPC_LO16,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont, /* Complain on overflow.  */
 	 bfd_elf_generic_reloc, /* Special Function.  */
 	 "R_OR1K_GOTPC_LO16",	/* Name.  */
-	 FALSE,		/* Partial Inplace.  */
+	 false,		/* Partial Inplace.  */
 	 0,			/* Source Mask.  */
 	 0xffff,		/* Dest Mask.  */
-	 TRUE),			/* PC relative offset?  */
+	 true),			/* PC relative offset?  */
 
   HOWTO (R_OR1K_GOT16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_GOT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 26 bit PLT relocation.  Shifted by 2.  */
   HOWTO (R_OR1K_PLT26,		/* Type.  */
 	 2,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 26,			/* Bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain on overflow.  */
 	 bfd_elf_generic_reloc, /* Special Function.  */
 	 "R_OR1K_PLT26",	/* Name.  */
-	 FALSE,			/* Partial Inplace.  */
+	 false,			/* Partial Inplace.  */
 	 0,			/* Source Mask.  */
 	 0x03ffffff,		/* Dest Mask.  */
-	 TRUE),			/* PC relative offset?  */
+	 true),			/* PC relative offset?  */
 
   HOWTO (R_OR1K_GOTOFF_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_GOTOFF_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_GOTOFF_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_GOTOFF_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_JMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_JMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_GD_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_GD_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_GD_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_GD_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LDM_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LDM_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LDM_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LDM_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LDO_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LDO_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LDO_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LDO_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_IE_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_IE_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_IE_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_IE_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LE_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LE_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LE_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LE_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_TPOFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_TPOFF",    /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_DTPOFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_DTPOFF",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_DTPMOD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_DTPMOD",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_AHI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_AHI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_GOTOFF_AHI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_GOTOFF_AHI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_IE_AHI16,   /* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_IE_AHI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LE_AHI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LE_AHI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_SLO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_SLO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_GOTOFF_SLO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_GOTOFF_SLO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LE_SLO16,   /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LE_SLO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A page relative 21 bit relocation, right shifted by 13, aligned.
      Note that this is *page* relative, not pc relative.  The idea is
@@ -642,174 +646,205 @@ static reloc_howto_type or1k_elf_howto_t
      pc-relative relocations to local symbols.  */
   HOWTO (R_OR1K_PCREL_PG21,    /* type */
 	 13,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_PCREL_PG21",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_OR1K_GOT_PG21,       /* type */
 	 13,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_GOT_PG21",     /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_GD_PG21,    /* type */
 	 13,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_GD_PG21",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LDM_PG21,   /* type */
 	 13,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_LDM_PG21", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_IE_PG21,    /* type */
 	 13,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_IE_PG21",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_OR1K_LO13,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_LO13",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_GOT_LO13,       /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_GOT_LO13",     /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_GD_LO13,    /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_GD_LO13",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_LDM_LO13,   /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLD_LDM_LO13", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_TLS_IE_LO13,    /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_TLS_IE_LO13",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_OR1K_SLO13,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_OR1K_SLO13",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 26 bit PLT relocation, using ADRP.  Shifted by 2.  */
   HOWTO (R_OR1K_PLTA26,		/* Type.  */
 	 2,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 26,			/* Bitsize.  */
-	 TRUE,			/* pc_relative.  */
+	 true,			/* pc_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain on overflow.  */
 	 bfd_elf_generic_reloc,	/* Special Function.  */
 	 "R_OR1K_PLTA26",	/* Name.  */
-	 FALSE,			/* Partial Inplace.  */
+	 false,			/* Partial Inplace.  */
 	 0,			/* Source Mask.  */
 	 0x03ffffff,		/* Dest Mask.  */
-	 TRUE),			/* PC relative offset?  */
+	 true),			/* PC relative offset?  */
+
+  HOWTO (R_OR1K_GOT_AHI16,	/* type */
+	 16,			/* rightshift */
+	 4,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_signed, /* complain_on_overflow */
+	 bfd_elf_generic_reloc, /* special_function */
+	 "R_OR1K_GOT_AHI16",	/* name */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
 };
 
+/* A copy of the R_OR1K_GOT16 used in the presense of R_OR1K_GOT_AHI16
+   relocations when we know we can ignore overflows.  */
+static reloc_howto_type or1k_elf_got16_no_overflow_howto =
+  HOWTO (R_OR1K_GOT16,		/* type */
+	 0,			/* rightshift */
+	 4,			/* size */
+	 16,			/* bitsize */
+	 false,			/* pc_relative */
+	 0,			/* bitpos */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 bfd_elf_generic_reloc, /* special_function */
+	 "R_OR1K_GOT16",	/* name */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
+	 0xffff,		/* dst_mask */
+	 false);		/* pcrel_offset */
+
 /* Map BFD reloc types to Or1k ELF reloc types.  */
 
 struct or1k_reloc_map
@@ -871,23 +906,30 @@ static const struct or1k_reloc_map or1k_
   { BFD_RELOC_OR1K_TLS_IE_LO13,	R_OR1K_TLS_IE_LO13 },
   { BFD_RELOC_OR1K_SLO13,	R_OR1K_SLO13 },
   { BFD_RELOC_OR1K_PLTA26,	R_OR1K_PLTA26 },
+  { BFD_RELOC_OR1K_GOT_AHI16,	R_OR1K_GOT_AHI16 },
 };
 
+/* 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;
-
+  /* For calculating PLT size.  */
+  bfd_vma plt_index;
   /* Track type of TLS access.  */
   unsigned char tls_type;
 };
@@ -912,22 +954,30 @@ 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;
+  bfd_vma plt_count;
+  bool saw_plta;
 };
 
+static size_t
+elf_or1k_plt_entry_size (bfd_vma plt_index)
+{
+  bfd_vma plt_reloc;
+
+  plt_reloc = plt_index * sizeof (Elf32_External_Rela);
+
+  return (plt_reloc > 0xffff) ? PLT_ENTRY_SIZE_LARGE : PLT_ENTRY_SIZE;
+}
+
 /* 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
+static bool
 elf_or1k_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_or1k_obj_tdata),
-				  OR1K_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_or1k_obj_tdata));
 }
 
 /* Create an entry in an or1k ELF linker hash table.  */
@@ -957,7 +1007,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 +1019,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)
@@ -978,8 +1027,7 @@ or1k_elf_link_hash_table_create (bfd *ab
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      or1k_elf_link_hash_newfunc,
-				      sizeof (struct elf_or1k_link_hash_entry),
-				      OR1K_ELF_DATA))
+				      sizeof (struct elf_or1k_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1023,7 +1071,7 @@ or1k_reloc_name_lookup (bfd *abfd ATTRIB
 
 /* Set the howto pointer for an Or1k ELF reloc.  */
 
-static bfd_boolean
+static bool
 or1k_info_to_howto_rela (bfd * abfd,
 			 arelent * cache_ptr,
 			 Elf_Internal_Rela * dst)
@@ -1037,25 +1085,55 @@ or1k_info_to_howto_rela (bfd * abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = & or1k_elf_howto_table[r_type];
-  return TRUE;
+  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, bool 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.  */
@@ -1080,6 +1158,7 @@ or1k_final_link_relocate (reloc_howto_ty
   switch (howto->type)
     {
     case R_OR1K_AHI16:
+    case R_OR1K_GOT_AHI16:
     case R_OR1K_GOTOFF_AHI16:
     case R_OR1K_TLS_IE_AHI16:
     case R_OR1K_TLS_LE_AHI16:
@@ -1211,7 +1290,7 @@ or1k_final_link_relocate (reloc_howto_ty
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 or1k_elf_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -1226,17 +1305,16 @@ 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;
   bfd_vma plt_base, got_base, got_sym_value;
-  bfd_boolean ret_val = TRUE;
+  bool ret_val = true;
+  bool saw_gotha = false;
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
-  dynobj = htab->root.dynobj;
   local_got_offsets = elf_local_got_offsets (input_bfd);
 
   sreloc = elf_section_data (input_section)->sreloc;
@@ -1254,13 +1332,24 @@ 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;
   sym_hashes = elf_sym_hashes (input_bfd);
   relend = relocs + input_section->reloc_count;
 
+  /* Make a full scan for R_OR1K_GOT_AHI16, since it could be AFTER R_OR1K_GOT16.  */
+  for (rel = relocs; rel < relend; rel++)
+    {
+      int r_type = ELF32_R_TYPE (rel->r_info);
+      if (r_type==R_OR1K_GOT_AHI16)
+        {
+	  saw_gotha = true;
+	  break;
+        }
+    }
+
   for (rel = relocs; rel < relend; rel++)
     {
       reloc_howto_type *howto;
@@ -1286,7 +1375,7 @@ or1k_elf_relocate_section (bfd *output_b
 	    (_("%pB: unknown relocation type %d"),
 	     input_bfd, (int) r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret_val = FALSE;
+	  ret_val = false;
 	  continue;
 	}
 
@@ -1307,7 +1396,7 @@ or1k_elf_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1318,7 +1407,8 @@ or1k_elf_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_OR1K_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1340,10 +1430,11 @@ or1k_elf_relocate_section (bfd *output_b
 		(_("%pB: addend should be zero for plt relocations"),
 		 input_bfd);
 	      bfd_set_error (bfd_error_bad_value);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  break;
 
+	case R_OR1K_GOT_AHI16:
 	case R_OR1K_GOT16:
 	case R_OR1K_GOT_PG21:
 	case R_OR1K_GOT_LO13:
@@ -1355,7 +1446,7 @@ or1k_elf_relocate_section (bfd *output_b
 	  BFD_ASSERT (sgot != NULL);
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      BFD_ASSERT (off != (bfd_vma) -1);
@@ -1416,16 +1507,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;
@@ -1435,9 +1526,16 @@ or1k_elf_relocate_section (bfd *output_b
 	    /* The GOT_PG21 and GOT_LO13 relocs are pc-relative,
 	       while the GOT16 reloc is GOT relative.  */
 	    relocation = got_base + off;
-	    if (r_type == R_OR1K_GOT16)
+	    if (r_type == R_OR1K_GOT16
+		|| r_type == R_OR1K_GOT_AHI16)
 	      relocation -= got_sym_value;
 
+	    /* If we have a R_OR1K_GOT16 following a R_OR1K_GOT_AHI16
+	       relocation we assume the code is doing the right thing to avoid
+	       overflows.  */
+	    if (r_type == R_OR1K_GOT16 && saw_gotha)
+	      howto = &or1k_elf_got16_no_overflow_howto;
+
 	  /* Addend should be zero.  */
 	  if (rel->r_addend != 0)
 	    {
@@ -1445,7 +1543,7 @@ or1k_elf_relocate_section (bfd *output_b
 		(_("%pB: addend should be zero for got relocations"),
 		 input_bfd);
 	      bfd_set_error (bfd_error_bad_value);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  }
 	  break;
@@ -1461,13 +1559,25 @@ or1k_elf_relocate_section (bfd *output_b
 	      _bfd_error_handler
 		(_("%pB: gotoff relocation against dynamic symbol %s"),
 		 input_bfd, h->root.root.string);
-	      ret_val = FALSE;
+	      ret_val = false;
 	      bfd_set_error (bfd_error_bad_value);
 	    }
 	  relocation -= got_sym_value;
 	  break;
 
 	case R_OR1K_INSN_REL_26:
+	  /* For a non-shared link, these will reference plt or call the
+	     version of actual object.  */
+	  if (bfd_link_pic (info) && !SYMBOL_CALLS_LOCAL (info, h))
+	    {
+	      _bfd_error_handler
+		(_("%pB: pc-relative relocation against dynamic symbol %s"),
+		 input_bfd, name);
+	      ret_val = false;
+	      bfd_set_error (bfd_error_bad_value);
+	    }
+	  break;
+
 	case R_OR1K_PCREL_PG21:
 	case R_OR1K_LO13:
 	case R_OR1K_SLO13:
@@ -1478,7 +1588,7 @@ or1k_elf_relocate_section (bfd *output_b
 	      _bfd_error_handler
 		(_("%pB: pc-relative relocation against dynamic symbol %s"),
 		 input_bfd, name);
-	      ret_val = FALSE;
+	      ret_val = false;
 	      bfd_set_error (bfd_error_bad_value);
 	    }
 	  break;
@@ -1492,7 +1602,7 @@ or1k_elf_relocate_section (bfd *output_b
 	      _bfd_error_handler
 		(_("%pB: non-pic relocation against symbol %s"),
 		 input_bfd, name);
-	      ret_val = FALSE;
+	      ret_val = false;
 	      bfd_set_error (bfd_error_bad_value);
 	    }
 	  break;
@@ -1523,7 +1633,7 @@ or1k_elf_relocate_section (bfd *output_b
 	      {
 		Elf_Internal_Rela outrel;
 		bfd_byte *loc;
-		bfd_boolean skip;
+		bool skip;
 
 		/* When generating a shared object, these relocations
 		   are copied into the output file to be resolved at run
@@ -1531,15 +1641,15 @@ or1k_elf_relocate_section (bfd *output_b
 
 		BFD_ASSERT (sreloc != NULL);
 
-		skip = FALSE;
+		skip = false;
 
 		outrel.r_offset =
 		  _bfd_elf_section_offset (output_bfd, info, input_section,
 					   rel->r_offset);
 		if (outrel.r_offset == (bfd_vma) -1)
-		  skip = TRUE;
+		  skip = true;
 		else if (outrel.r_offset == (bfd_vma) -2)
-		  skip = TRUE;
+		  skip = true;
 		outrel.r_offset += (input_section->output_section->vma
 				    + input_section->output_offset);
 
@@ -1577,7 +1687,7 @@ or1k_elf_relocate_section (bfd *output_b
 	    (_("%pB: support for local dynamic not implemented"),
 	     input_bfd);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 
 	case R_OR1K_TLS_GD_HI16:
 	case R_OR1K_TLS_GD_LO16:
@@ -1591,54 +1701,80 @@ or1k_elf_relocate_section (bfd *output_b
 	  {
 	    bfd_vma gotoff;
 	    Elf_Internal_Rela rela;
+	    asection *srelgot;
 	    bfd_byte *loc;
-	    int dynamic;
+	    bool 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)
+	      {
+		bool dyn = htab->root.dynamic_sections_created;
+		bool 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 +1786,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 +1823,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 +1853,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:
@@ -1729,7 +1866,7 @@ or1k_elf_relocate_section (bfd *output_b
 	    (_("%pB: will not resolve runtime TLS relocation"),
 	     input_bfd);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 
 	default:
 	  break;
@@ -1752,7 +1889,7 @@ or1k_elf_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -1804,7 +1941,7 @@ or1k_elf_gc_mark_hook (asection *sec,
 
 /* Look through the relocs for a section during the first phase.  */
 
-static bfd_boolean
+static bool
 or1k_elf_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
@@ -1820,23 +1957,14 @@ or1k_elf_check_relocs (bfd *abfd,
   asection *sreloc = NULL;
 
   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;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
 
   htab = or1k_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
 
@@ -1895,7 +2023,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;
@@ -1909,10 +2037,10 @@ or1k_elf_check_relocs (bfd *abfd,
 	      size = symtab_hdr->sh_info;
 	      local_tls_type = bfd_zalloc (abfd, size);
 	      if (local_tls_type == NULL)
-		return FALSE;
+		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)
@@ -1921,19 +2049,19 @@ or1k_elf_check_relocs (bfd *abfd,
 	     Reconstruct it for later use during GC.  */
 	case R_OR1K_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_OR1K_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation requires .plt entry.  */
 	case R_OR1K_PLTA26:
-	  htab->saw_plta = TRUE;
+	  htab->saw_plta = true;
 	  /* FALLTHRU */
 	case R_OR1K_PLT26:
 	  if (h != NULL)
@@ -1943,6 +2071,7 @@ or1k_elf_check_relocs (bfd *abfd,
 	    }
 	  break;
 
+	case R_OR1K_GOT_AHI16:
 	case R_OR1K_GOT16:
 	case R_OR1K_GOT_PG21:
 	case R_OR1K_GOT_LO13:
@@ -1971,7 +2100,7 @@ or1k_elf_check_relocs (bfd *abfd,
 		      size *= sizeof (bfd_signed_vma);
 		      local_got_refcounts = bfd_zalloc (abfd, size);
 		      if (local_got_refcounts == NULL)
-			return FALSE;
+			return false;
 		      elf_local_got_refcounts (abfd) = local_got_refcounts;
 		    }
 		  local_got_refcounts[r_symndx] += 1;
@@ -1987,7 +2116,7 @@ or1k_elf_check_relocs (bfd *abfd,
 	      if (dynobj == NULL)
 		htab->root.dynobj = dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	  break;
 
@@ -2047,7 +2176,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
@@ -2061,9 +2190,9 @@ or1k_elf_check_relocs (bfd *abfd,
 
 		    name = bfd_elf_string_from_elf_section (abfd, strndx, shnam);
 		    if (name == NULL)
-		      return FALSE;
+		      return false;
 
-		    if (strncmp (name, ".rela", 5) != 0
+		    if (!startswith (name, ".rela")
 			|| strcmp (bfd_section_name (sec), name + 5) != 0)
 		      {
 			_bfd_error_handler
@@ -2080,10 +2209,10 @@ or1k_elf_check_relocs (bfd *abfd,
 		    if (sreloc == NULL)
 		      {
 			sreloc = _bfd_elf_make_dynamic_reloc_section
-			  (sec, dynobj, 2, abfd, /*rela?*/ TRUE);
+			  (sec, dynobj, 2, abfd, /*rela?*/ true);
 
 			if (sreloc == NULL)
-			  return FALSE;
+			  return false;
 		      }
 		    elf_section_data (sec)->sreloc = sreloc;
 		  }
@@ -2091,7 +2220,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,79 +2231,94 @@ 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;
+		      return false;
 
 		    s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		    if (s == NULL)
-		      return FALSE;
+		      return false;
 
 		    vpp = &elf_section_data (s)->local_dynrel;
 		    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)
-		      return FALSE;
-		    p->next = *head;
-		    *head = p;
-		    p->sec = sec;
-		    p->count = 0;
-		    p->pc_count = 0;
+		    size_t amt = sizeof *sec_relocs;
+		    sec_relocs = ((struct elf_dyn_relocs *)
+				  bfd_alloc (htab->root.dynobj, amt));
+		    if (sec_relocs == NULL)
+		      return false;
+		    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;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
-or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insn1,
-		      unsigned insn2, unsigned insn3, unsigned insnj)
+or1k_write_plt_entry (bfd *output_bfd, bfd_byte *contents, unsigned insnj,
+		      unsigned insns[], size_t insn_count)
 {
   unsigned nodelay = elf_elfheader (output_bfd)->e_flags & EF_OR1K_NODELAY;
-  unsigned insn4;
+  unsigned output_insns[PLT_MAX_INSN_COUNT];
+
+  /* Copy instructions into the output buffer.  */
+  for (size_t i = 0; i < insn_count; i++)
+    output_insns[i] = insns[i];
 
   /* Honor the no-delay-slot setting.  */
-  if (insn3 == OR1K_NOP)
+  if (insns[insn_count-1] == OR1K_NOP)
     {
-      insn4 = insn3;
+      unsigned slot1, slot2;
+
       if (nodelay)
-	insn3 = insnj;
+	slot1 = insns[insn_count-2], slot2 = insnj;
       else
-	insn3 = insn2, insn2 = insnj;
+	slot1 = insnj, slot2 = insns[insn_count-2];
+
+      output_insns[insn_count-2] = slot1;
+      output_insns[insn_count-1] = slot2;
+      output_insns[insn_count]   = OR1K_NOP;
     }
   else
     {
+      unsigned slot1, slot2;
+
       if (nodelay)
-	insn4 = insnj;
+	slot1 = insns[insn_count-1], slot2 = insnj;
       else
-	insn4 = insn3, insn3 = insnj;
+	slot1 = insnj, slot2 = insns[insn_count-1];
+
+      output_insns[insn_count-1] = slot1;
+      output_insns[insn_count]   = slot2;
     }
 
-  bfd_put_32 (output_bfd, insn1, contents);
-  bfd_put_32 (output_bfd, insn2, contents + 4);
-  bfd_put_32 (output_bfd, insn3, contents + 8);
-  bfd_put_32 (output_bfd, insn4, contents + 12);
+  /* Write out the output buffer.  */
+  for (size_t i = 0; i < (insn_count+1); i++)
+    bfd_put_32 (output_bfd, output_insns[i], contents + (i*4));
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 or1k_elf_finish_dynamic_sections (bfd *output_bfd,
 				  struct bfd_link_info *info)
 {
@@ -2184,7 +2328,7 @@ or1k_elf_finish_dynamic_sections (bfd *o
 
   htab = or1k_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
 
@@ -2236,7 +2380,8 @@ or1k_elf_finish_dynamic_sections (bfd *o
       splt = htab->root.splt;
       if (splt && splt->size > 0)
 	{
-	  unsigned plt0, plt1, plt2;
+	  unsigned plt[PLT_MAX_INSN_COUNT];
+	  size_t plt_insn_count = 3;
 	  bfd_vma got_addr = sgot->output_section->vma + sgot->output_offset;
 
 	  /* Note we force 16 byte alignment on the .got, so that
@@ -2247,27 +2392,27 @@ or1k_elf_finish_dynamic_sections (bfd *o
 	      bfd_vma pc = splt->output_section->vma + splt->output_offset;
 	      unsigned pa = ((got_addr >> 13) - (pc >> 13)) & 0x1fffff;
 	      unsigned po = got_addr & 0x1fff;
-	      plt0 = OR1K_ADRP(12) | pa;
-	      plt1 = OR1K_LWZ(15,12) | (po + 8);
-	      plt2 = OR1K_LWZ(12,12) | (po + 4);
+	      plt[0] = OR1K_ADRP(12) | pa;
+	      plt[1] = OR1K_LWZ(15,12) | (po + 8);
+	      plt[2] = OR1K_LWZ(12,12) | (po + 4);
 	    }
 	  else if (bfd_link_pic (info))
 	    {
-	      plt0 = OR1K_LWZ(15, 16) | 8;	/* .got+8 */
-	      plt1 = OR1K_LWZ(12, 16) | 4;	/* .got+4 */
-	      plt2 = OR1K_NOP;
+	      plt[0] = OR1K_LWZ(15, 16) | 8;	/* .got+8 */
+	      plt[1] = OR1K_LWZ(12, 16) | 4;	/* .got+4 */
+	      plt[2] = OR1K_NOP;
 	    }
 	  else
 	    {
 	      unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff;
 	      unsigned lo = got_addr & 0xffff;
-	      plt0 = OR1K_MOVHI(12) | ha;
-	      plt1 = OR1K_LWZ(15,12) | (lo + 8);
-	      plt2 = OR1K_LWZ(12,12) | (lo + 4);
+	      plt[0] = OR1K_MOVHI(12) | ha;
+	      plt[1] = OR1K_LWZ(15,12) | (lo + 8);
+	      plt[2] = OR1K_LWZ(12,12) | (lo + 4);
 	    }
 
-	  or1k_write_plt_entry (output_bfd, splt->contents,
-				plt0, plt1, plt2, OR1K_JR(15));
+	  or1k_write_plt_entry (output_bfd, splt->contents, OR1K_JR(15),
+				plt, plt_insn_count);
 
 	  elf_section_data (splt->output_section)->this_hdr.sh_entsize = 4;
 	}
@@ -2289,13 +2434,13 @@ or1k_elf_finish_dynamic_sections (bfd *o
   if (htab->root.sgot && htab->root.sgot->size > 0)
     elf_section_data (htab->root.sgot->output_section)->this_hdr.sh_entsize = 4;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 or1k_elf_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
@@ -2305,12 +2450,11 @@ or1k_elf_finish_dynamic_symbol (bfd *out
   bfd_byte *loc;
 
   htab = or1k_elf_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   if (h->plt.offset != (bfd_vma) -1)
     {
-      unsigned int plt0, plt1, plt2;
+      unsigned int plt[PLT_MAX_INSN_COUNT];
+      size_t plt_insn_count = 3;
       asection *splt;
       asection *sgot;
       asection *srela;
@@ -2322,6 +2466,7 @@ or1k_elf_finish_dynamic_symbol (bfd *out
       bfd_vma got_offset;
       bfd_vma got_addr;
       Elf_Internal_Rela rela;
+      bool large_plt_entry;
 
       /* This symbol has an entry in the procedure linkage table.  Set
 	 it up.  */
@@ -2339,10 +2484,13 @@ or1k_elf_finish_dynamic_symbol (bfd *out
 	 corresponds to this symbol.  This is the index of this symbol
 	 in all the symbols for which we are making plt entries.  The
 	 first entry in the procedure linkage table is reserved.  */
-      plt_index = h->plt.offset / PLT_ENTRY_SIZE - 1;
+      plt_index = ((struct elf_or1k_link_hash_entry *) h)->plt_index;
       plt_addr = plt_base_addr + h->plt.offset;
       plt_reloc = plt_index * sizeof (Elf32_External_Rela);
 
+      large_plt_entry = (elf_or1k_plt_entry_size (plt_index)
+			 == PLT_ENTRY_SIZE_LARGE);
+
       /* Get the offset into the .got table of the entry that
 	corresponds to this function.  Each .got entry is 4 bytes.
 	The first three are reserved.  */
@@ -2354,27 +2502,57 @@ or1k_elf_finish_dynamic_symbol (bfd *out
 	{
 	  unsigned pa = ((got_addr >> 13) - (plt_addr >> 13)) & 0x1fffff;
 	  unsigned po = (got_addr & 0x1fff);
-	  plt0 = OR1K_ADRP(12) | pa;
-	  plt1 = OR1K_LWZ(12,12) | po;
-	  plt2 = OR1K_ORI0(11) | plt_reloc;
+	  plt[0] = OR1K_ADRP(12) | pa;
+	  plt[1] = OR1K_LWZ(12,12) | po;
+	  plt[2] = OR1K_ORI0(11) | plt_reloc;
 	}
       else if (bfd_link_pic (info))
 	{
-	  plt0 = OR1K_LWZ(12,16) | got_offset;
-	  plt1 = OR1K_ORI0(11) | plt_reloc;
-	  plt2 = OR1K_NOP;
+	  if (large_plt_entry)
+	    {
+	      unsigned gotha = ((got_offset + 0x8000) >> 16) & 0xffff;
+	      unsigned got = got_offset & 0xffff;
+	      unsigned pltrelhi = (plt_reloc >> 16) & 0xffff;
+	      unsigned pltrello = plt_reloc & 0xffff;
+
+	      plt[0] = OR1K_MOVHI(12) | gotha;
+	      plt[1] = OR1K_ADD(12,12,16);
+	      plt[2] = OR1K_LWZ(12,12) | got;
+	      plt[3] = OR1K_MOVHI(11) | pltrelhi;
+	      plt[4] = OR1K_ORI(11,11) | pltrello;
+	      plt_insn_count = 5;
+	    }
+	  else
+	    {
+	      plt[0] = OR1K_LWZ(12,16) | got_offset;
+	      plt[1] = OR1K_ORI0(11) | plt_reloc;
+	      plt[2] = OR1K_NOP;
+	    }
 	}
       else
 	{
 	  unsigned ha = ((got_addr + 0x8000) >> 16) & 0xffff;
 	  unsigned lo = got_addr & 0xffff;
-	  plt0 = OR1K_MOVHI(12) | ha;
-	  plt1 = OR1K_LWZ(12,12) | lo;
-	  plt2 = OR1K_ORI0(11) | plt_reloc;
+	  plt[0] = OR1K_MOVHI(12) | ha;
+	  plt[1] = OR1K_LWZ(12,12) | lo;
+	  plt[2] = OR1K_ORI0(11) | plt_reloc;
+	}
+
+      /* For large code model we fixup the non-PIC PLT relocation instructions
+	 here.  */
+      if (large_plt_entry && !bfd_link_pic (info))
+	{
+	  unsigned pltrelhi = (plt_reloc >> 16) & 0xffff;
+	  unsigned pltrello = plt_reloc & 0xffff;
+
+	  plt[2] = OR1K_MOVHI(11) | pltrelhi;
+	  plt[3] = OR1K_ORI(11,11) | pltrello;
+	  plt[4] = OR1K_NOP;
+	  plt_insn_count = 5;
 	}
 
       or1k_write_plt_entry (output_bfd, splt->contents + h->plt.offset,
-			    plt0, plt1, plt2, OR1K_JR(12));
+			    OR1K_JR(12), plt, plt_insn_count);
 
       /* Fill in the entry in the global offset table.  We initialize it to
 	 point to the top of the plt.  This is done to lazy lookup the actual
@@ -2402,14 +2580,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 +2613,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)
@@ -2470,7 +2648,7 @@ or1k_elf_finish_dynamic_symbol (bfd *out
       || h == htab->root.hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -2487,31 +2665,13 @@ 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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 or1k_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h)
 {
@@ -2535,11 +2695,10 @@ or1k_elf_adjust_dynamic_symbol (struct b
   if (h->type == STT_FUNC
       || h->needs_plt)
     {
-      if (! bfd_link_pic (info)
-	  && !h->def_dynamic
-	  && !h->ref_dynamic
-	  && h->root.type != bfd_link_hash_undefweak
-	  && h->root.type != bfd_link_hash_undefined)
+      if (h->plt.refcount <= 0
+	  || (SYMBOL_CALLS_LOCAL (info, h)
+	  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
+	      && h->root.type == bfd_link_hash_undefweak)))
 	{
 	  /* This case can occur if we saw a PLT reloc in an input
 	     file, but the symbol was never referred to by a dynamic
@@ -2550,7 +2709,7 @@ or1k_elf_adjust_dynamic_symbol (struct b
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -2564,7 +2723,7 @@ or1k_elf_adjust_dynamic_symbol (struct b
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2575,26 +2734,26 @@ or1k_elf_adjust_dynamic_symbol (struct b
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -2609,7 +2768,7 @@ or1k_elf_adjust_dynamic_symbol (struct b
 
   htab = or1k_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* We must generate a R_OR1K_COPY reloc to tell the dynamic linker
      to copy the initial value out of the dynamic object and into the
@@ -2634,26 +2793,73 @@ 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 bool dynamic,
+			     bfd_vma *got_size,
+			     bfd_vma *rela_size)
+{
+  bool 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)
+    *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)
+	*rela_size += sizeof (Elf32_External_Rela);
+    }
+}
+
+
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
 {
   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;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = or1k_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
-
-  eh = (struct elf_or1k_link_hash_entry *) h;
+    return false;
 
   if (htab->root.dynamic_sections_created
       && h->plt.refcount > 0)
@@ -2664,19 +2870,24 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
 	{
-	  asection *s = htab->root.splt;
+	  asection *splt = htab->root.splt;
+	  bfd_vma plt_index;
+
+	  /* Track the index of our plt entry for use in calculating size.  */
+	  plt_index = htab->plt_count++;
+	  ((struct elf_or1k_link_hash_entry *) h)->plt_index = plt_index;
 
 	  /* 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 = elf_or1k_plt_entry_size (plt_index);
 
-	  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 +2897,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 += elf_or1k_plt_entry_size (plt_index);
 
 	  /* 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,8 +2925,8 @@ allocate_dynrelocs (struct elf_link_hash
 
   if (h->got.refcount > 0)
     {
-      asection *s;
-      bfd_boolean dyn;
+      asection *sgot;
+      bool dyn;
       unsigned char tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -2724,34 +2935,25 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    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)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -2765,24 +2967,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.  */
@@ -2790,7 +2992,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -2813,7 +3015,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -2822,66 +3024,42 @@ 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;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-or1k_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				struct bfd_link_info *info)
+static bool
+or1k_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			     struct bfd_link_info *info)
 {
   struct elf_or1k_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
   htab = or1k_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (htab->root.dynamic_sections_created)
     {
@@ -2892,6 +3070,7 @@ or1k_elf_size_dynamic_sections (bfd *out
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -2911,26 +3090,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 +3131,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
 
@@ -2980,7 +3154,7 @@ or1k_elf_size_dynamic_sections (bfd *out
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       if ((s->flags & SEC_LINKER_CREATED) == 0)
@@ -2995,10 +3169,10 @@ or1k_elf_size_dynamic_sections (bfd *out
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -3032,59 +3206,12 @@ or1k_elf_size_dynamic_sections (bfd *out
 	 but this way if it does, we get a R_OR1K_NONE reloc instead
 	 of garbage.  */
       s->contents = bfd_zalloc (dynobj, s->size);
-
       if (s->contents == NULL)
-	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;
-	   }
-       }
+	return false;
+      s->alloced = 1;
     }
 
-#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 +3227,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)
@@ -3145,7 +3241,7 @@ or1k_elf_copy_indirect_symbol (struct bf
 
 /* Set the right machine number.  */
 
-static bfd_boolean
+static bool
 or1k_elf_object_p (bfd *abfd)
 {
   unsigned long mach = bfd_mach_or1k;
@@ -3158,7 +3254,7 @@ or1k_elf_object_p (bfd *abfd)
 
 /* Store the machine number in the flags field.  */
 
-static bfd_boolean
+static bool
 or1k_elf_final_write_processing (bfd *abfd)
 {
   switch (bfd_get_mach (abfd))
@@ -3173,21 +3269,21 @@ or1k_elf_final_write_processing (bfd *ab
   return _bfd_elf_final_write_processing (abfd);
 }
 
-static bfd_boolean
+static bool
 or1k_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Make sure all input files are consistent with respect to
    EF_OR1K_NODELAY flag setting.  */
 
-static bfd_boolean
+static bool
 elf32_or1k_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -3199,18 +3295,18 @@ elf32_or1k_merge_private_bfd_data (bfd *
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   if (!elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
-      return TRUE;
+      return true;
     }
 
   if (in_flags == out_flags)
-    return TRUE;
+    return true;
 
   if ((in_flags & EF_OR1K_NODELAY) != (out_flags & EF_OR1K_NODELAY))
     {
@@ -3219,16 +3315,16 @@ elf32_or1k_merge_private_bfd_data (bfd *
 	 ibfd, "EF_OR1K_NODELAY");
 
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 
 }
 
 /* Implement elf_backend_grok_prstatus:
    Support for core dump NOTE sections.  */
-static bfd_boolean
+static bool
 or1k_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -3237,7 +3333,7 @@ or1k_grok_prstatus (bfd *abfd, Elf_Inter
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 212:	      /* Linux/OpenRISC */
       /* pr_cursig */
@@ -3259,13 +3355,13 @@ or1k_grok_prstatus (bfd *abfd, Elf_Inter
 }
 
 /* Implement elf_backend_grok_psinfo.  */
-static bfd_boolean
+static bool
 or1k_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 128:	      /* Linux/OpenRISC elf_prpsinfo */
       elf_tdata (abfd)->core->program
@@ -3274,7 +3370,7 @@ or1k_grok_psinfo (bfd *abfd, Elf_Interna
 	= _bfd_elfcore_strndup (abfd, note->descdata + 48, 80);
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -3317,7 +3413,7 @@ or1k_grok_psinfo (bfd *abfd, Elf_Interna
 #define elf_backend_copy_indirect_symbol	or1k_elf_copy_indirect_symbol
 #define elf_backend_create_dynamic_sections	_bfd_elf_create_dynamic_sections
 #define elf_backend_finish_dynamic_sections	or1k_elf_finish_dynamic_sections
-#define elf_backend_size_dynamic_sections	or1k_elf_size_dynamic_sections
+#define elf_backend_late_size_sections		or1k_elf_late_size_sections
 #define elf_backend_adjust_dynamic_symbol	or1k_elf_adjust_dynamic_symbol
 #define elf_backend_finish_dynamic_symbol	or1k_elf_finish_dynamic_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.20200303/bfd/elf32-pj.c ./bfd/elf32-pj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-pj.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-pj.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* picoJava specific support for 32-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
    Contributed by Steve Chamberlan of Transmeta (sac@pobox.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -114,78 +114,78 @@ static reloc_howto_type pj_elf_howto_tab
   /* No relocation.  */
   HOWTO (R_PJ_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 pj_elf_reloc,		/* special_function */
 	 "R_PJ_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit absolute relocation.  Setting partial_inplace to TRUE and
      src_mask to a non-zero value is similar to the COFF toolchain.  */
   HOWTO (R_PJ_DATA_DIR32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 pj_elf_reloc,		/* special_function */
 	 "R_PJ_DIR32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit PC relative relocation.  */
   HOWTO (R_PJ_CODE_REL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 pj_elf_reloc,		/* special_function */
 	 "R_PJ_REL32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 /* 16 bit PC relative relocation.  */
   HOWTO (R_PJ_CODE_REL16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overf6w */
 	 pj_elf_reloc,		/* special_function */
 	 "R_PJ_REL16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   EMPTY_HOWTO (4),
   EMPTY_HOWTO (5),
   HOWTO (R_PJ_CODE_DIR32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 pj_elf_reloc,		/* special_function */
 	 "R_PJ_CODE_DIR32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (7),
   EMPTY_HOWTO (8),
@@ -196,61 +196,61 @@ static reloc_howto_type pj_elf_howto_tab
 
   HOWTO (R_PJ_CODE_LO16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 pj_elf_reloc,		/* special_function */
 	 "R_PJ_LO16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
     HOWTO (R_PJ_CODE_HI16,	/* type */
 	 16,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 pj_elf_reloc,		/* special_function */
 	 "R_PJ_HI16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_PJ_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_PJ_GNU_VTINHERIT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_PJ_GNU_VTENTRY,     /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_PJ_GNU_VTENTRY",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* This structure is used to map BFD reloc codes to PJ ELF relocs.  */
@@ -311,7 +311,7 @@ pj_elf_reloc_name_lookup (bfd *abfd ATTR
 
 /* Given an ELF reloc, fill in the howto field of a relent.  */
 
-static bfd_boolean
+static bool
 pj_elf_info_to_howto (bfd *abfd,
 		      arelent *cache_ptr,
 		      Elf_Internal_Rela *dst)
@@ -326,17 +326,17 @@ pj_elf_info_to_howto (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = &pj_elf_howto_table[r];
-  return TRUE;
+  return true;
 }
 
 /* Take this moment to fill in the special picoJava bits in the
    e_flags field.  */
 
-static bfd_boolean
+static bool
 pj_elf_final_write_processing (bfd *abfd)
 {
   elf_elfheader (abfd)->e_flags |= EF_PICOJAVA_ARCH;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-ppc.c ./bfd/elf32-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-ppc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-ppc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC-specific support for 32-bit ELF
-   Copyright (C) 1994-2019 Free Software Foundation, Inc.
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -19,11 +19,10 @@
    Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
    Boston, MA 02110-1301, USA.  */
 
-
-/* This file is based on a preliminary PowerPC ELF ABI.  The
-   information may not match the final PowerPC ELF ABI.  It includes
-   suggestions from the in-progress Embedded PowerPC ABI, and that
-   information may also not match.  */
+/* The assembler should generate a full set of section symbols even
+   when they appear unused.  The linux kernel build tool recordmcount
+   needs them.  */
+#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS true
 
 #include "sysdep.h"
 #include <stdarg.h>
@@ -54,6 +53,10 @@ static bfd_reloc_status_type ppc_elf_add
 static bfd_reloc_status_type ppc_elf_unhandled_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 
+#ifndef ARRAY_SIZE
+#define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+#endif
+
 /* Branch prediction bit for branch taken relocs.  */
 #define BRANCH_PREDICT_BIT 0x200000
 /* Mask to set RA in memory instructions.  */
@@ -201,101 +204,101 @@ static const bfd_vma ppc_elf_vxworks_pic
 	    complain, special_func)				\
   HOWTO (type, rightshift, size, bitsize, pc_relative, 0,	\
 	 complain_overflow_ ## complain, special_func,		\
-	 #type, FALSE, 0, mask, pc_relative)
+	 #type, false, 0, mask, pc_relative)
 
 static reloc_howto_type *ppc_elf_howto_table[R_PPC_max];
 
 static reloc_howto_type ppc_elf_howto_raw[] = {
   /* This reloc does nothing.  */
-  HOW (R_PPC_NONE, 3, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC_NONE, 0, 0, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* A standard 32 bit relocation.  */
-  HOW (R_PPC_ADDR32, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_ADDR32, 4, 32, 0xffffffff, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* An absolute 26 bit branch; the lower two bits must be zero.
      FIXME: we don't check that, we just clear them.  */
-  HOW (R_PPC_ADDR24, 2, 26, 0x3fffffc, 0, FALSE, signed,
+  HOW (R_PPC_ADDR24, 4, 26, 0x3fffffc, 0, false, signed,
        bfd_elf_generic_reloc),
 
   /* A standard 16 bit relocation.  */
-  HOW (R_PPC_ADDR16, 1, 16, 0xffff, 0, FALSE, bitfield,
+  HOW (R_PPC_ADDR16, 2, 16, 0xffff, 0, false, bitfield,
        bfd_elf_generic_reloc),
 
   /* A 16 bit relocation without overflow.  */
-  HOW (R_PPC_ADDR16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_ADDR16_LO, 2, 16, 0xffff, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* The high order 16 bits of an address.  */
-  HOW (R_PPC_ADDR16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_ADDR16_HI, 2, 16, 0xffff, 16, false, dont,
        bfd_elf_generic_reloc),
 
   /* The high order 16 bits of an address, plus 1 if the contents of
      the low 16 bits, treated as a signed number, is negative.  */
-  HOW (R_PPC_ADDR16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_ADDR16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_addr16_ha_reloc),
 
   /* An absolute 16 bit branch; the lower two bits must be zero.
      FIXME: we don't check that, we just clear them.  */
-  HOW (R_PPC_ADDR14, 2, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC_ADDR14, 4, 16, 0xfffc, 0, false, signed,
        bfd_elf_generic_reloc),
 
   /* An absolute 16 bit branch, for which bit 10 should be set to
      indicate that the branch is expected to be taken.	The lower two
      bits must be zero.  */
-  HOW (R_PPC_ADDR14_BRTAKEN, 2, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC_ADDR14_BRTAKEN, 4, 16, 0xfffc, 0, false, signed,
        bfd_elf_generic_reloc),
 
   /* An absolute 16 bit branch, for which bit 10 should be set to
      indicate that the branch is not expected to be taken.  The lower
      two bits must be zero.  */
-  HOW (R_PPC_ADDR14_BRNTAKEN, 2, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC_ADDR14_BRNTAKEN, 4, 16, 0xfffc, 0, false, signed,
        bfd_elf_generic_reloc),
 
   /* A relative 26 bit branch; the lower two bits must be zero.  */
-  HOW (R_PPC_REL24, 2, 26, 0x3fffffc, 0, TRUE, signed,
+  HOW (R_PPC_REL24, 4, 26, 0x3fffffc, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* A relative 16 bit branch; the lower two bits must be zero.  */
-  HOW (R_PPC_REL14, 2, 16, 0xfffc, 0, TRUE, signed,
+  HOW (R_PPC_REL14, 4, 16, 0xfffc, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* A relative 16 bit branch.  Bit 10 should be set to indicate that
      the branch is expected to be taken.  The lower two bits must be
      zero.  */
-  HOW (R_PPC_REL14_BRTAKEN, 2, 16, 0xfffc, 0, TRUE, signed,
+  HOW (R_PPC_REL14_BRTAKEN, 4, 16, 0xfffc, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* A relative 16 bit branch.  Bit 10 should be set to indicate that
      the branch is not expected to be taken.  The lower two bits must
      be zero.  */
-  HOW (R_PPC_REL14_BRNTAKEN, 2, 16, 0xfffc, 0, TRUE, signed,
+  HOW (R_PPC_REL14_BRNTAKEN, 4, 16, 0xfffc, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC_ADDR16, but referring to the GOT table entry for the
      symbol.  */
-  HOW (R_PPC_GOT16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_GOT16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_ADDR16_LO, but referring to the GOT table entry for
      the symbol.  */
-  HOW (R_PPC_GOT16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_GOT16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_ADDR16_HI, but referring to the GOT table entry for
      the symbol.  */
-  HOW (R_PPC_GOT16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_ADDR16_HA, but referring to the GOT table entry for
      the symbol.  */
-  HOW (R_PPC_GOT16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_REL24, but referring to the procedure linkage table
      entry for the symbol.  */
-  HOW (R_PPC_PLTREL24, 2, 26, 0x3fffffc, 0, TRUE, signed,
+  HOW (R_PPC_PLTREL24, 4, 26, 0x3fffffc, 0, true, signed,
        ppc_elf_unhandled_reloc),
 
   /* This is used only by the dynamic linker.  The symbol should exist
@@ -303,269 +306,269 @@ static reloc_howto_type ppc_elf_howto_ra
      dynamic linker copies the data addressed by the symbol from the
      shared library into the object, because the object being
      run has to have the data at some particular address.  */
-  HOW (R_PPC_COPY, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC_COPY, 4, 32, 0, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_ADDR32, but used when setting global offset table
      entries.  */
-  HOW (R_PPC_GLOB_DAT, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_GLOB_DAT, 4, 32, 0xffffffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Marks a procedure linkage table entry for a symbol.  */
-  HOW (R_PPC_JMP_SLOT, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC_JMP_SLOT, 4, 32, 0, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Used only by the dynamic linker.  When the object is run, this
      longword is set to the load address of the object, plus the
      addend.  */
-  HOW (R_PPC_RELATIVE, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_RELATIVE, 4, 32, 0xffffffff, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC_REL24, but uses the value of the symbol within the
      object rather than the final value.  Normally used for
      _GLOBAL_OFFSET_TABLE_.  */
-  HOW (R_PPC_LOCAL24PC, 2, 26, 0x3fffffc, 0, TRUE, signed,
+  HOW (R_PPC_LOCAL24PC, 4, 26, 0x3fffffc, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC_ADDR32, but may be unaligned.  */
-  HOW (R_PPC_UADDR32, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_UADDR32, 4, 32, 0xffffffff, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC_ADDR16, but may be unaligned.  */
-  HOW (R_PPC_UADDR16, 1, 16, 0xffff, 0, FALSE, bitfield,
+  HOW (R_PPC_UADDR16, 2, 16, 0xffff, 0, false, bitfield,
        bfd_elf_generic_reloc),
 
   /* 32-bit PC relative */
-  HOW (R_PPC_REL32, 2, 32, 0xffffffff, 0, TRUE, dont,
+  HOW (R_PPC_REL32, 4, 32, 0xffffffff, 0, true, dont,
        bfd_elf_generic_reloc),
 
   /* 32-bit relocation to the symbol's procedure linkage table.
      FIXME: not supported.  */
-  HOW (R_PPC_PLT32, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC_PLT32, 4, 32, 0, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* 32-bit PC relative relocation to the symbol's procedure linkage table.
      FIXME: not supported.  */
-  HOW (R_PPC_PLTREL32, 2, 32, 0, 0, TRUE, dont,
+  HOW (R_PPC_PLTREL32, 4, 32, 0, 0, true, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_ADDR16_LO, but referring to the PLT table entry for
      the symbol.  */
-  HOW (R_PPC_PLT16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_PLT16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_ADDR16_HI, but referring to the PLT table entry for
      the symbol.  */
-  HOW (R_PPC_PLT16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_PLT16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_ADDR16_HA, but referring to the PLT table entry for
      the symbol.  */
-  HOW (R_PPC_PLT16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_PLT16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* A sign-extended 16 bit value relative to _SDA_BASE_, for use with
      small data items.  */
-  HOW (R_PPC_SDAREL16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_SDAREL16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* 16-bit section relative relocation.  */
-  HOW (R_PPC_SECTOFF, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_SECTOFF, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* 16-bit lower half section relative relocation.  */
-  HOW (R_PPC_SECTOFF_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_SECTOFF_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* 16-bit upper half section relative relocation.  */
-  HOW (R_PPC_SECTOFF_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_SECTOFF_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* 16-bit upper half adjusted section relative relocation.  */
-  HOW (R_PPC_SECTOFF_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_SECTOFF_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Marker relocs for TLS.  */
-  HOW (R_PPC_TLS, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC_TLS, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC_TLSGD, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC_TLSGD, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC_TLSLD, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC_TLSLD, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Marker relocs on inline plt call instructions.  */
-  HOW (R_PPC_PLTSEQ, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC_PLTSEQ, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC_PLTCALL, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC_PLTCALL, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Computes the load module index of the load module that contains the
      definition of its TLS sym.  */
-  HOW (R_PPC_DTPMOD32, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_DTPMOD32, 4, 32, 0xffffffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Computes a dtv-relative displacement, the difference between the value
      of sym+add and the base address of the thread-local storage block that
      contains the definition of sym, minus 0x8000.  */
-  HOW (R_PPC_DTPREL32, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_DTPREL32, 4, 32, 0xffffffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* A 16 bit dtprel reloc.  */
-  HOW (R_PPC_DTPREL16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_DTPREL16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Like DTPREL16, but no overflow.  */
-  HOW (R_PPC_DTPREL16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_DTPREL16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like DTPREL16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC_DTPREL16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_DTPREL16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like DTPREL16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC_DTPREL16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_DTPREL16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Computes a tp-relative displacement, the difference between the value of
      sym+add and the value of the thread pointer (r13).  */
-  HOW (R_PPC_TPREL32, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_TPREL32, 4, 32, 0xffffffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* A 16 bit tprel reloc.  */
-  HOW (R_PPC_TPREL16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_TPREL16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Like TPREL16, but no overflow.  */
-  HOW (R_PPC_TPREL16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_TPREL16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like TPREL16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC_TPREL16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_TPREL16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like TPREL16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC_TPREL16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_TPREL16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Allocates two contiguous entries in the GOT to hold a tls_index structure,
      with values (sym+add)@dtpmod and (sym+add)@dtprel, and computes the offset
      to the first entry.  */
-  HOW (R_PPC_GOT_TLSGD16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_GOT_TLSGD16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TLSGD16, but no overflow.  */
-  HOW (R_PPC_GOT_TLSGD16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_GOT_TLSGD16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TLSGD16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC_GOT_TLSGD16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT_TLSGD16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TLSGD16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC_GOT_TLSGD16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT_TLSGD16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Allocates two contiguous entries in the GOT to hold a tls_index structure,
      with values (sym+add)@dtpmod and zero, and computes the offset to the
      first entry.  */
-  HOW (R_PPC_GOT_TLSLD16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_GOT_TLSLD16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TLSLD16, but no overflow.  */
-  HOW (R_PPC_GOT_TLSLD16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_GOT_TLSLD16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TLSLD16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC_GOT_TLSLD16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT_TLSLD16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TLSLD16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC_GOT_TLSLD16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT_TLSLD16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Allocates an entry in the GOT with value (sym+add)@dtprel, and computes
      the offset to the entry.  */
-  HOW (R_PPC_GOT_DTPREL16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_GOT_DTPREL16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_DTPREL16, but no overflow.  */
-  HOW (R_PPC_GOT_DTPREL16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_GOT_DTPREL16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_DTPREL16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC_GOT_DTPREL16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT_DTPREL16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_DTPREL16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC_GOT_DTPREL16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT_DTPREL16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Allocates an entry in the GOT with value (sym+add)@tprel, and computes the
      offset to the entry.  */
-  HOW (R_PPC_GOT_TPREL16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_GOT_TPREL16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TPREL16, but no overflow.  */
-  HOW (R_PPC_GOT_TPREL16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_GOT_TPREL16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TPREL16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC_GOT_TPREL16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT_TPREL16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Like GOT_TPREL16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC_GOT_TPREL16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_GOT_TPREL16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* The remaining relocs are from the Embedded ELF ABI, and are not
      in the SVR4 ELF ABI.  */
 
   /* 32 bit value resulting from the addend minus the symbol.  */
-  HOW (R_PPC_EMB_NADDR32, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_EMB_NADDR32, 4, 32, 0xffffffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* 16 bit value resulting from the addend minus the symbol.  */
-  HOW (R_PPC_EMB_NADDR16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_EMB_NADDR16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* 16 bit value resulting from the addend minus the symbol.  */
-  HOW (R_PPC_EMB_NADDR16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_EMB_NADDR16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* The high order 16 bits of the addend minus the symbol.  */
-  HOW (R_PPC_EMB_NADDR16_HI, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_EMB_NADDR16_HI, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* The high order 16 bits of the result of the addend minus the address,
      plus 1 if the contents of the low 16 bits, treated as a signed number,
      is negative.  */
-  HOW (R_PPC_EMB_NADDR16_HA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC_EMB_NADDR16_HA, 2, 16, 0xffff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* 16 bit value resulting from allocating a 4 byte word to hold an
      address in the .sdata section, and returning the offset from
      _SDA_BASE_ for that relocation.  */
-  HOW (R_PPC_EMB_SDAI16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_EMB_SDAI16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* 16 bit value resulting from allocating a 4 byte word to hold an
      address in the .sdata2 section, and returning the offset from
      _SDA2_BASE_ for that relocation.  */
-  HOW (R_PPC_EMB_SDA2I16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_EMB_SDA2I16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* A sign-extended 16 bit value relative to _SDA2_BASE_, for use with
      small data items.	 */
-  HOW (R_PPC_EMB_SDA2REL, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_EMB_SDA2REL, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Relocate against either _SDA_BASE_ or _SDA2_BASE_, filling in the 16 bit
      signed offset from the appropriate base, and filling in the register
      field with the appropriate register (0, 2, or 13).  */
-  HOW (R_PPC_EMB_SDA21, 2, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_EMB_SDA21, 4, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Relocation not handled: R_PPC_EMB_MRKREF */
@@ -578,121 +581,121 @@ static reloc_howto_type ppc_elf_howto_ra
   /* PC relative relocation against either _SDA_BASE_ or _SDA2_BASE_, filling
      in the 16 bit signed offset from the appropriate base, and filling in the
      register field with the appropriate register (0, 2, or 13).  */
-  HOW (R_PPC_EMB_RELSDA, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_EMB_RELSDA, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* A relative 8 bit branch.  */
-  HOW (R_PPC_VLE_REL8, 1, 8, 0xff, 1, TRUE, signed,
+  HOW (R_PPC_VLE_REL8, 2, 8, 0xff, 1, true, signed,
        bfd_elf_generic_reloc),
 
   /* A relative 15 bit branch.  */
-  HOW (R_PPC_VLE_REL15, 2, 16, 0xfffe, 0, TRUE, signed,
+  HOW (R_PPC_VLE_REL15, 4, 16, 0xfffe, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* A relative 24 bit branch.  */
-  HOW (R_PPC_VLE_REL24, 2, 25, 0x1fffffe, 0, TRUE, signed,
+  HOW (R_PPC_VLE_REL24, 4, 25, 0x1fffffe, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* The 16 LSBS in split16a format.  */
-  HOW (R_PPC_VLE_LO16A, 2, 16, 0x1f07ff, 0, FALSE, dont,
+  HOW (R_PPC_VLE_LO16A, 4, 16, 0x1f07ff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* The 16 LSBS in split16d format.  */
-  HOW (R_PPC_VLE_LO16D, 2, 16, 0x3e007ff, 0, FALSE, dont,
+  HOW (R_PPC_VLE_LO16D, 4, 16, 0x3e007ff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Bits 16-31 split16a format.  */
-  HOW (R_PPC_VLE_HI16A, 2, 16, 0x1f07ff, 16, FALSE, dont,
+  HOW (R_PPC_VLE_HI16A, 4, 16, 0x1f07ff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Bits 16-31 split16d format.  */
-  HOW (R_PPC_VLE_HI16D, 2, 16, 0x3e007ff, 16, FALSE, dont,
+  HOW (R_PPC_VLE_HI16D, 4, 16, 0x3e007ff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Bits 16-31 (High Adjusted) in split16a format.  */
-  HOW (R_PPC_VLE_HA16A, 2, 16, 0x1f07ff, 16, FALSE, dont,
+  HOW (R_PPC_VLE_HA16A, 4, 16, 0x1f07ff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Bits 16-31 (High Adjusted) in split16d format.  */
-  HOW (R_PPC_VLE_HA16D, 2, 16, 0x3e007ff, 16, FALSE, dont,
+  HOW (R_PPC_VLE_HA16D, 4, 16, 0x3e007ff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* This reloc is like R_PPC_EMB_SDA21 but only applies to e_add16i
      instructions.  If the register base is 0 then the linker changes
      the e_add16i to an e_li instruction.  */
-  HOW (R_PPC_VLE_SDA21, 2, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_VLE_SDA21, 4, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 
   /* Like R_PPC_VLE_SDA21 but ignore overflow.  */
-  HOW (R_PPC_VLE_SDA21_LO, 2, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC_VLE_SDA21_LO, 4, 16, 0xffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* The 16 LSBS relative to _SDA_BASE_ in split16a format.  */
-  HOW (R_PPC_VLE_SDAREL_LO16A, 2, 16, 0x1f07ff, 0, FALSE, dont,
+  HOW (R_PPC_VLE_SDAREL_LO16A, 4, 16, 0x1f07ff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* The 16 LSBS relative to _SDA_BASE_ in split16d format.  */
-  HOW (R_PPC_VLE_SDAREL_LO16D, 2, 16, 0x3e007ff, 0, FALSE, dont,
+  HOW (R_PPC_VLE_SDAREL_LO16D, 4, 16, 0x3e007ff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Bits 16-31 relative to _SDA_BASE_ in split16a format.  */
-  HOW (R_PPC_VLE_SDAREL_HI16A, 2, 16, 0x1f07ff, 16, FALSE, dont,
+  HOW (R_PPC_VLE_SDAREL_HI16A, 4, 16, 0x1f07ff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Bits 16-31 relative to _SDA_BASE_ in split16d format.  */
-  HOW (R_PPC_VLE_SDAREL_HI16D, 2, 16, 0x3e007ff, 16, FALSE, dont,
+  HOW (R_PPC_VLE_SDAREL_HI16D, 4, 16, 0x3e007ff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Bits 16-31 (HA) relative to _SDA_BASE split16a format.  */
-  HOW (R_PPC_VLE_SDAREL_HA16A, 2, 16, 0x1f07ff, 16, FALSE, dont,
+  HOW (R_PPC_VLE_SDAREL_HA16A, 4, 16, 0x1f07ff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* Bits 16-31 (HA) relative to _SDA_BASE split16d format.  */
-  HOW (R_PPC_VLE_SDAREL_HA16D, 2, 16, 0x3e007ff, 16, FALSE, dont,
+  HOW (R_PPC_VLE_SDAREL_HA16D, 4, 16, 0x3e007ff, 16, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* e_li split20 format.  */
-  HOW (R_PPC_VLE_ADDR20, 2, 20, 0x1f7fff, 0, FALSE, dont,
+  HOW (R_PPC_VLE_ADDR20, 4, 20, 0x1f7fff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
-  HOW (R_PPC_IRELATIVE, 2, 32, 0xffffffff, 0, FALSE, dont,
+  HOW (R_PPC_IRELATIVE, 4, 32, 0xffffffff, 0, false, dont,
        ppc_elf_unhandled_reloc),
 
   /* A 16 bit relative relocation.  */
-  HOW (R_PPC_REL16, 1, 16, 0xffff, 0, TRUE, signed,
+  HOW (R_PPC_REL16, 2, 16, 0xffff, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* A 16 bit relative relocation without overflow.  */
-  HOW (R_PPC_REL16_LO, 1, 16, 0xffff, 0, TRUE, dont,
+  HOW (R_PPC_REL16_LO, 2, 16, 0xffff, 0, true, dont,
        bfd_elf_generic_reloc),
 
   /* The high order 16 bits of a relative address.  */
-  HOW (R_PPC_REL16_HI, 1, 16, 0xffff, 16, TRUE, dont,
+  HOW (R_PPC_REL16_HI, 2, 16, 0xffff, 16, true, dont,
        bfd_elf_generic_reloc),
 
   /* The high order 16 bits of a relative address, plus 1 if the contents of
      the low 16 bits, treated as a signed number, is negative.  */
-  HOW (R_PPC_REL16_HA, 1, 16, 0xffff, 16, TRUE, dont,
+  HOW (R_PPC_REL16_HA, 2, 16, 0xffff, 16, true, dont,
        ppc_elf_addr16_ha_reloc),
 
   /* Like R_PPC_REL16_HA but for split field in addpcis.  */
-  HOW (R_PPC_REL16DX_HA, 2, 16, 0x1fffc1, 16, TRUE, signed,
+  HOW (R_PPC_REL16DX_HA, 4, 16, 0x1fffc1, 16, true, signed,
        ppc_elf_addr16_ha_reloc),
 
   /* A split-field reloc for addpcis, non-relative (gas internal use only).  */
-  HOW (R_PPC_16DX_HA, 2, 16, 0x1fffc1, 16, FALSE, signed,
+  HOW (R_PPC_16DX_HA, 4, 16, 0x1fffc1, 16, false, signed,
        ppc_elf_addr16_ha_reloc),
 
   /* GNU extension to record C++ vtable hierarchy.  */
-  HOW (R_PPC_GNU_VTINHERIT, 0, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC_GNU_VTINHERIT, 0, 0, 0, 0, false, dont,
        NULL),
 
   /* GNU extension to record C++ vtable member usage.  */
-  HOW (R_PPC_GNU_VTENTRY, 0, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC_GNU_VTENTRY, 0, 0, 0, 0, false, dont,
        NULL),
 
   /* Phony reloc to handle AIX style TOC entries.  */
-  HOW (R_PPC_TOC16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC_TOC16, 2, 16, 0xffff, 0, false, signed,
        ppc_elf_unhandled_reloc),
 };
 
@@ -703,13 +706,10 @@ ppc_elf_howto_init (void)
 {
   unsigned int i, type;
 
-  for (i = 0;
-       i < sizeof (ppc_elf_howto_raw) / sizeof (ppc_elf_howto_raw[0]);
-       i++)
+  for (i = 0; i < ARRAY_SIZE (ppc_elf_howto_raw); i++)
     {
       type = ppc_elf_howto_raw[i].type;
-      if (type >= (sizeof (ppc_elf_howto_table)
-		   / sizeof (ppc_elf_howto_table[0])))
+      if (type >= ARRAY_SIZE (ppc_elf_howto_table))
 	abort ();
       ppc_elf_howto_table[type] = &ppc_elf_howto_raw[i];
     }
@@ -871,9 +871,7 @@ ppc_elf_reloc_name_lookup (bfd *abfd ATT
 {
   unsigned int i;
 
-  for (i = 0;
-       i < sizeof (ppc_elf_howto_raw) / sizeof (ppc_elf_howto_raw[0]);
-       i++)
+  for (i = 0; i < ARRAY_SIZE (ppc_elf_howto_raw); i++)
     if (ppc_elf_howto_raw[i].name != NULL
 	&& strcasecmp (ppc_elf_howto_raw[i].name, r_name) == 0)
       return &ppc_elf_howto_raw[i];
@@ -883,7 +881,7 @@ ppc_elf_reloc_name_lookup (bfd *abfd ATT
 
 /* Set the howto pointer for a PowerPC ELF reloc.  */
 
-static bfd_boolean
+static bool
 ppc_elf_info_to_howto (bfd *abfd,
 		       arelent *cache_ptr,
 		       Elf_Internal_Rela *dst)
@@ -895,30 +893,18 @@ ppc_elf_info_to_howto (bfd *abfd,
     ppc_elf_howto_init ();
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  if (r_type >= R_PPC_max)
+  if (r_type >= ARRAY_SIZE (ppc_elf_howto_table)
+      || ppc_elf_howto_table[r_type] == NULL)
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = ppc_elf_howto_table[r_type];
-
-  /* Just because the above assert didn't trigger doesn't mean that
-     ELF32_R_TYPE (dst->r_info) is necessarily a valid relocation.  */
-  if (cache_ptr->howto == NULL)
-    {
-      /* xgettext:c-format */
-      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
-			  abfd, r_type);
-      bfd_set_error (bfd_error_bad_value);
-
-      return FALSE;
-    }
-
-  return TRUE;
+  return true;
 }
 
 /* Handle the R_PPC_ADDR16_HA and R_PPC_REL16_HA relocs.  */
@@ -960,6 +946,10 @@ ppc_elf_addr16_ha_reloc (bfd *abfd,
   value >>= 16;
 
   octets = reloc_entry->address * OCTETS_PER_BYTE (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, octets))
+    return bfd_reloc_outofrange;
+
   insn = bfd_get_32 (abfd, (bfd_byte *) data + octets);
   insn &= ~0x1fffc1;
   insn |= (value & 0xffc1) | ((value & 0x3e) << 15);
@@ -984,12 +974,8 @@ ppc_elf_unhandled_reloc (bfd *abfd,
 				  input_section, output_bfd, error_message);
 
   if (error_message != NULL)
-    {
-      static char buf[60];
-      sprintf (buf, _("generic linker can't handle %s"),
-	       reloc_entry->howto->name);
-      *error_message = buf;
-    }
+    *error_message = bfd_asprintf (_("generic linker can't handle %s"),
+				     reloc_entry->howto->name);
   return bfd_reloc_dangerous;
 }
 
@@ -1050,16 +1036,15 @@ struct ppc_elf_obj_tdata
 
 /* Override the generic function because we store some extras.  */
 
-static bfd_boolean
+static bool
 ppc_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct ppc_elf_obj_tdata),
-				  PPC32_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct ppc_elf_obj_tdata));
 }
 
 /* When defaulting arch/mach, decode apuinfo to find a better match.  */
 
-bfd_boolean
+bool
 _bfd_elf_ppc_set_arch (bfd *abfd)
 {
   unsigned long mach = 0;
@@ -1082,6 +1067,7 @@ _bfd_elf_ppc_set_arch (bfd *abfd)
       s = bfd_get_section_by_name (abfd, APUINFO_SECTION_NAME);
       if (s != NULL
 	  && s->size >= 24
+	  && (s->flags & SEC_HAS_CONTENTS) != 0
 	  && bfd_malloc_and_get_section (abfd, s, &contents))
 	{
 	  unsigned int apuinfo_size = bfd_get_32 (abfd, contents + 4);
@@ -1134,17 +1120,17 @@ _bfd_elf_ppc_set_arch (bfd *abfd)
 	    break;
 	  }
     }
-  return TRUE;
+  return true;
 }
 
 /* Fix bad default arch selected for a 32 bit input bfd when the
    default is 64 bit.  Also select arch based on apuinfo.  */
 
-static bfd_boolean
+static bool
 ppc_elf_object_p (bfd *abfd)
 {
   if (!abfd->arch_info->the_default)
-    return TRUE;
+    return true;
 
   if (abfd->arch_info->bits_per_word == 64)
     {
@@ -1162,20 +1148,20 @@ ppc_elf_object_p (bfd *abfd)
 
 /* Function to set whether a module needs the -mrelocatable bit set.  */
 
-static bfd_boolean
+static bool
 ppc_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 ppc_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -1184,7 +1170,7 @@ ppc_elf_grok_prstatus (bfd *abfd, Elf_In
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 268:		/* Linux/PPC.  */
       /* pr_cursig */
@@ -1205,13 +1191,13 @@ ppc_elf_grok_prstatus (bfd *abfd, Elf_In
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 ppc_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 128:		/* Linux/PPC elf_prpsinfo.  */
       elf_tdata (abfd)->core->pid
@@ -1234,7 +1220,7 @@ ppc_elf_grok_psinfo (bfd *abfd, Elf_Inte
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 static char *
@@ -1319,7 +1305,7 @@ ppc_elf_plt_sym_val (bfd_vma i ATTRIBUTE
    is called when bfd_section_from_shdr finds a section with an unknown
    type.  */
 
-static bfd_boolean
+static bool
 ppc_elf_section_from_shdr (bfd *abfd,
 			   Elf_Internal_Shdr *hdr,
 			   const char *name,
@@ -1329,23 +1315,29 @@ ppc_elf_section_from_shdr (bfd *abfd,
   flagword flags;
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    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 (startswith (name, ".PPC.EMB"))
+    name += 8;
+  if (startswith (name, ".sbss")
+      || startswith (name, ".sdata"))
+    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.  */
 
-static bfd_boolean
+static bool
 ppc_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 		       Elf_Internal_Shdr *shdr,
 		       asection *asect)
@@ -1353,7 +1345,7 @@ ppc_elf_fake_sections (bfd *abfd ATTRIBU
   if ((asect->flags & SEC_SORT_ENTRIES) != 0)
     shdr->sh_type = SHT_ORDERED;
 
-  return TRUE;
+  return true;
 }
 
 /* If we have .sbss2 or .PPC.EMB.sbss0 output sections, we
@@ -1379,7 +1371,7 @@ ppc_elf_additional_program_headers (bfd
 
 /* Modify the segment map for VLE executables.  */
 
-bfd_boolean
+bool
 ppc_elf_modify_segment_map (bfd *abfd,
 			    struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
@@ -1394,7 +1386,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;
 
@@ -1450,7 +1442,7 @@ ppc_elf_modify_segment_map (bfd *abfd,
       amt += (m->count - j - 1) * sizeof (asection *);
       n = (struct elf_segment_map *) bfd_zalloc (abfd, amt);
       if (n == NULL)
-	return FALSE;
+	return false;
 
       n->p_type = PT_LOAD;
       n->count = m->count - j;
@@ -1462,7 +1454,7 @@ ppc_elf_modify_segment_map (bfd *abfd,
       m->next = n;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Add extra PPC sections -- Note, for now, make .sbss2 and
@@ -1485,7 +1477,7 @@ static const struct bfd_elf_special_sect
 };
 
 /* This is what we want for new plt/got.  */
-static struct bfd_elf_special_section ppc_alt_plt =
+static const struct bfd_elf_special_section ppc_alt_plt =
   { STRING_COMMA_LEN (".plt"),		   0, SHT_PROGBITS, SHF_ALLOC };
 
 static const struct bfd_elf_special_section *
@@ -1518,13 +1510,13 @@ typedef struct apuinfo_list
 apuinfo_list;
 
 static apuinfo_list *head;
-static bfd_boolean apuinfo_set;
+static bool apuinfo_set;
 
 static void
 apuinfo_list_init (void)
 {
   head = NULL;
-  apuinfo_set = FALSE;
+  apuinfo_set = false;
 }
 
 static void
@@ -1624,11 +1616,10 @@ ppc_elf_begin_write_processing (bfd *abf
       if (length < 20)
 	goto fail;
 
-      apuinfo_set = TRUE;
+      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)
@@ -1636,7 +1627,7 @@ ppc_elf_begin_write_processing (bfd *abf
 	}
 
       if (bfd_seek (ibfd, asec->filepos, SEEK_SET) != 0
-	  || (bfd_bread (buffer, length, ibfd) != length))
+	  || (bfd_read (buffer, length, ibfd) != length))
 	{
 	  /* xgettext:c-format */
 	  error_message = _("unable to read in %s section from %pB");
@@ -1686,8 +1677,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);
@@ -1696,7 +1686,7 @@ ppc_elf_begin_write_processing (bfd *abf
 /* Prevent the output section from accumulating the input sections'
    contents.  We have already stored this in our linked list structure.  */
 
-static bfd_boolean
+static bool
 ppc_elf_write_section (bfd *abfd ATTRIBUTE_UNUSED,
 		       struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
 		       asection *asec,
@@ -1760,20 +1750,20 @@ ppc_final_write_processing (bfd *abfd)
   apuinfo_list_finish ();
 }
 
-static bfd_boolean
+static bool
 ppc_elf_final_write_processing (bfd *abfd)
 {
   ppc_final_write_processing (abfd);
   return _bfd_elf_final_write_processing (abfd);
 }
 
-static bfd_boolean
+static bool
 is_nonpic_glink_stub (bfd *abfd, asection *glink, bfd_vma off)
 {
   bfd_byte buf[4 * 4];
 
   if (!bfd_get_section_contents (abfd, glink, buf, off, sizeof buf))
-    return FALSE;
+    return false;
 
   return ((bfd_get_32 (abfd, buf + 0) & 0xffff0000) == LIS_11
 	  && (bfd_get_32 (abfd, buf + 4) & 0xffff0000) == LWZ_11_11
@@ -1781,7 +1771,7 @@ is_nonpic_glink_stub (bfd *abfd, asectio
 	  && bfd_get_32 (abfd, buf + 12) == BCTR);
 }
 
-static bfd_boolean
+static bool
 section_covers_vma (bfd *abfd ATTRIBUTE_UNUSED, asection *section, void *ptr)
 {
   bfd_vma vma = *(bfd_vma *) ptr;
@@ -1795,14 +1785,14 @@ ppc_elf_get_synthetic_symtab (bfd *abfd,
 			      long dynsymcount, asymbol **dynsyms,
 			      asymbol **ret)
 {
-  bfd_boolean (*slurp_relocs) (bfd *, asection *, asymbol **, bfd_boolean);
+  bool (*slurp_relocs) (bfd *, asection *, asymbol **, bool);
   asection *plt, *relplt, *dynamic, *glink;
   bfd_vma glink_vma = 0;
   bfd_vma resolv_vma = 0;
   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];
@@ -1831,7 +1821,8 @@ ppc_elf_get_synthetic_symtab (bfd *abfd,
   /* If this object was prelinked, the prelinker stored the address
      of .glink at got[1].  If it wasn't prelinked, got[1] will be zero.  */
   dynamic = bfd_get_section_by_name (abfd, ".dynamic");
-  if (dynamic != NULL)
+  if (dynamic != NULL
+      && (dynamic->flags & SEC_HAS_CONTENTS) != 0)
     {
       bfd_byte *dynbuf, *extdyn, *extdynend;
       size_t extdynsize;
@@ -1843,9 +1834,9 @@ ppc_elf_get_synthetic_symtab (bfd *abfd,
       extdynsize = get_elf_backend_data (abfd)->s->sizeof_dyn;
       swap_dyn_in = get_elf_backend_data (abfd)->s->swap_dyn_in;
 
-      extdyn = dynbuf;
-      extdynend = extdyn + dynamic->size;
-      for (; extdyn < extdynend; extdyn += extdynsize)
+      for (extdyn = dynbuf, extdynend = dynbuf + dynamic->size;
+	   (size_t) (extdynend - extdyn) >= extdynsize;
+	   extdyn += extdynsize)
 	{
 	  Elf_Internal_Dyn dyn;
 	  (*swap_dyn_in) (abfd, extdyn, &dyn);
@@ -1909,7 +1900,7 @@ ppc_elf_get_synthetic_symtab (bfd *abfd,
 	    }
     }
 
-  count = relplt->size / sizeof (Elf32_External_Rela);
+  count = NUM_SHDR_ENTRIES (&elf_section_data (relplt)->this_hdr);
   /* If the stubs are those for -shared/-pie then we might have
      multiple stubs for each plt entry.  If that is the case then
      there is no way to associate stubs with their plt entries short
@@ -1924,7 +1915,7 @@ ppc_elf_get_synthetic_symtab (bfd *abfd,
     return 0;
 
   slurp_relocs = get_elf_backend_data (abfd)->s->slurp_reloc_table;
-  if (! (*slurp_relocs) (abfd, relplt, dynsyms, TRUE))
+  if (! (*slurp_relocs) (abfd, relplt, dynsyms, true))
     return -1;
 
   size = count * sizeof (asymbol);
@@ -2112,9 +2103,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 +2182,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 +2199,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 +2217,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 +2243,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;
     }
@@ -2283,8 +2265,7 @@ ppc_elf_link_hash_table_create (bfd *abf
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
 				      ppc_elf_link_hash_newfunc,
-				      sizeof (struct ppc_elf_link_hash_entry),
-				      PPC32_ELF_DATA))
+				      sizeof (struct ppc_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -2326,33 +2307,33 @@ ppc_elf_link_params (struct bfd_link_inf
 
 /* Create .got and the related sections.  */
 
-static bfd_boolean
+static bool
 ppc_elf_create_got (bfd *abfd, struct bfd_link_info *info)
 {
   struct ppc_elf_link_hash_table *htab;
 
   if (!_bfd_elf_create_got_section (abfd, info))
-    return FALSE;
+    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.  */
       flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS
 			| SEC_IN_MEMORY | SEC_LINKER_CREATED);
       if (!bfd_set_section_flags (htab->elf.sgot, flags))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create a special linker section, used for R_PPC_EMB_SDAI16 and
    R_PPC_EMB_SDA2I16 pointers.  These sections become part of .sdata
    and .sdata2.  Create _SDA_BASE_ and _SDA2_BASE too.  */
 
-static bfd_boolean
+static bool
 ppc_elf_create_linker_section (bfd *abfd,
 			       struct bfd_link_info *info,
 			       flagword flags,
@@ -2365,7 +2346,7 @@ ppc_elf_create_linker_section (bfd *abfd
 
   s = bfd_make_section_anyway_with_flags (abfd, lsect->name, flags);
   if (s == NULL)
-    return FALSE;
+    return false;
   lsect->section = s;
 
   /* Define the sym on the first section of this name.  */
@@ -2373,12 +2354,12 @@ ppc_elf_create_linker_section (bfd *abfd
 
   lsect->sym = _bfd_elf_define_linkage_sym (abfd, info, s, lsect->sym_name);
   if (lsect->sym == NULL)
-    return FALSE;
+    return false;
   lsect->sym->root.u.def.value = 0x8000;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 ppc_elf_create_glink (bfd *abfd, struct bfd_link_info *info)
 {
   struct ppc_elf_link_hash_table *htab = ppc_elf_hash_table (info);
@@ -2395,7 +2376,7 @@ ppc_elf_create_glink (bfd *abfd, struct
     p2align = htab->params->plt_stub_align;
   if (s == NULL
       || !bfd_set_section_alignment (s, p2align))
-    return FALSE;
+    return false;
 
   if (!info->no_ld_generated_unwind_info)
     {
@@ -2405,7 +2386,7 @@ ppc_elf_create_glink (bfd *abfd, struct
       htab->glink_eh_frame = s;
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
     }
 
   flags = SEC_ALLOC | SEC_LINKER_CREATED;
@@ -2413,7 +2394,7 @@ ppc_elf_create_glink (bfd *abfd, struct
   htab->elf.iplt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, 4))
-    return FALSE;
+    return false;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY | SEC_HAS_CONTENTS
 	   | SEC_IN_MEMORY | SEC_LINKER_CREATED);
@@ -2421,7 +2402,7 @@ ppc_elf_create_glink (bfd *abfd, struct
   htab->elf.irelplt = s;
   if (s == NULL
       || ! bfd_set_section_alignment (s, 2))
-    return FALSE;
+    return false;
 
   /* Local plt entries.  */
   flags = (SEC_ALLOC | SEC_LOAD
@@ -2430,7 +2411,7 @@ ppc_elf_create_glink (bfd *abfd, struct
 						       flags);
   if (htab->pltlocal == NULL
       || !bfd_set_section_alignment (htab->pltlocal, 2))
-    return FALSE;
+    return false;
 
   if (bfd_link_pic (info))
     {
@@ -2440,25 +2421,25 @@ ppc_elf_create_glink (bfd *abfd, struct
 	= bfd_make_section_anyway_with_flags (abfd, ".rela.branch_lt", flags);
       if (htab->relpltlocal == NULL
 	  || !bfd_set_section_alignment (htab->relpltlocal, 2))
-	return FALSE;
+	return false;
     }
 
   if (!ppc_elf_create_linker_section (abfd, info, 0,
 				      &htab->sdata[0]))
-    return FALSE;
+    return false;
 
   if (!ppc_elf_create_linker_section (abfd, info, SEC_READONLY,
 				      &htab->sdata[1]))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* We have to create .dynsbss and .rela.sbss here so that they get mapped
    to output sections (just like _bfd_elf_create_dynamic_sections has
    to create .dynbss and .rela.bss).  */
 
-static bfd_boolean
+static bool
 ppc_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct ppc_elf_link_hash_table *htab;
@@ -2469,20 +2450,20 @@ ppc_elf_create_dynamic_sections (bfd *ab
 
   if (htab->elf.sgot == NULL
       && !ppc_elf_create_got (abfd, info))
-    return FALSE;
+    return false;
 
   if (!_bfd_elf_create_dynamic_sections (abfd, info))
-    return FALSE;
+    return false;
 
   if (htab->glink == NULL
       && !ppc_elf_create_glink (abfd, info))
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".dynsbss",
 					  SEC_ALLOC | SEC_LINKER_CREATED);
   htab->dynsbss = s;
   if (s == NULL)
-    return FALSE;
+    return false;
 
   if (! bfd_link_pic (info))
     {
@@ -2492,12 +2473,12 @@ ppc_elf_create_dynamic_sections (bfd *ab
       htab->relsbss = s;
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
     }
 
-  if (htab->is_vxworks
+  if (htab->elf.target_os == is_vxworks
       && !elf_vxworks_create_dynamic_sections (abfd, info, &htab->srelplt2))
-    return FALSE;
+    return false;
 
   s = htab->elf.splt;
   flags = SEC_ALLOC | SEC_CODE | SEC_LINKER_CREATED;
@@ -2534,20 +2515,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 +2539,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
@@ -2614,7 +2595,7 @@ ppc_elf_copy_indirect_symbol (struct bfd
 /* Hook called by the linker routine which adds symbols from an object
    file.  We use it to put .comm items in .sbss, and not .bss.  */
 
-static bfd_boolean
+static bool
 ppc_elf_add_symbol_hook (bfd *abfd,
 			 struct bfd_link_info *info,
 			 Elf_Internal_Sym *sym,
@@ -2635,7 +2616,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;
@@ -2644,14 +2625,14 @@ ppc_elf_add_symbol_hook (bfd *abfd,
 							   ".sbss",
 							   flags);
 	  if (htab->sbss == NULL)
-	    return FALSE;
+	    return false;
 	}
 
       *secp = htab->sbss;
       *valp = sym->st_size;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Find a linker generated pointer with a given addend and type.  */
@@ -2671,7 +2652,7 @@ elf_find_pointer_linker_section
 
 /* Allocate a pointer to live in a linker created section.  */
 
-static bfd_boolean
+static bool
 elf_allocate_pointer_linker_section (bfd *abfd,
 				     elf_linker_section_t *lsect,
 				     struct elf_link_hash_entry *h,
@@ -2694,7 +2675,7 @@ elf_allocate_pointer_linker_section (bfd
       if (elf_find_pointer_linker_section (eh->linker_section_pointer,
 					   rel->r_addend,
 					   lsect))
-	return TRUE;
+	return true;
 
       ptr_linker_section_ptr = &eh->linker_section_pointer;
     }
@@ -2715,7 +2696,7 @@ elf_allocate_pointer_linker_section (bfd
 	  ptr = bfd_zalloc (abfd, amt);
 
 	  if (!ptr)
-	    return FALSE;
+	    return false;
 
 	  elf_local_ptr_offsets (abfd) = ptr;
 	}
@@ -2724,7 +2705,7 @@ elf_allocate_pointer_linker_section (bfd
       if (elf_find_pointer_linker_section (ptr[r_symndx],
 					   rel->r_addend,
 					   lsect))
-	return TRUE;
+	return true;
 
       ptr_linker_section_ptr = &ptr[r_symndx];
     }
@@ -2736,7 +2717,7 @@ elf_allocate_pointer_linker_section (bfd
   linker_section_ptr = bfd_alloc (abfd, amt);
 
   if (!linker_section_ptr)
-    return FALSE;
+    return false;
 
   linker_section_ptr->next = *ptr_linker_section_ptr;
   linker_section_ptr->addend = rel->r_addend;
@@ -2744,7 +2725,7 @@ elf_allocate_pointer_linker_section (bfd
   *ptr_linker_section_ptr = linker_section_ptr;
 
   if (!bfd_set_section_alignment (lsect->section, 2))
-    return FALSE;
+    return false;
   linker_section_ptr->offset = lsect->section->size;
   lsect->section->size += 4;
 
@@ -2755,7 +2736,7 @@ elf_allocate_pointer_linker_section (bfd
 	   (long) lsect->section->size);
 #endif
 
-  return TRUE;
+  return true;
 }
 
 static struct plt_entry **
@@ -2789,7 +2770,7 @@ update_local_sym_info (bfd *abfd,
   return local_plt + r_symndx;
 }
 
-static bfd_boolean
+static bool
 update_plt_info (bfd *abfd, struct plt_entry **plist,
 		 asection *sec, bfd_vma addend)
 {
@@ -2802,10 +2783,10 @@ 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;
+	return false;
       ent->next = *plist;
       ent->sec = sec;
       ent->addend = addend;
@@ -2813,7 +2794,7 @@ update_plt_info (bfd *abfd, struct plt_e
       *plist = ent;
     }
   ent->plt.refcount += 1;
-  return TRUE;
+  return true;
 }
 
 static struct plt_entry *
@@ -2829,7 +2810,7 @@ find_plt_ent (struct plt_entry **plist,
   return ent;
 }
 
-static bfd_boolean
+static bool
 is_branch_reloc (enum elf_ppc_reloc_type r_type)
 {
   return (r_type == R_PPC_PLTREL24
@@ -2847,7 +2828,7 @@ is_branch_reloc (enum elf_ppc_reloc_type
 
 /* Relocs on inline plt call sequence insns prior to the call.  */
 
-static bfd_boolean
+static bool
 is_plt_seq_reloc (enum elf_ppc_reloc_type r_type)
 {
   return (r_type == R_PPC_PLT16_HA
@@ -2856,6 +2837,15 @@ is_plt_seq_reloc (enum elf_ppc_reloc_typ
 	  || r_type == R_PPC_PLTSEQ);
 }
 
+/* Like bfd_reloc_offset_in_range but without a howto.  Return true
+   iff a field of SIZE bytes at OFFSET is within SEC limits.  */
+
+static bool
+offset_in_range (asection *sec, bfd_vma offset, size_t size)
+{
+  return offset <= sec->size && size <= sec->size - offset;
+}
+
 static void
 bad_shared_reloc (bfd *abfd, enum elf_ppc_reloc_type r_type)
 {
@@ -2871,7 +2861,7 @@ bad_shared_reloc (bfd *abfd, enum elf_pp
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 ppc_elf_check_relocs (bfd *abfd,
 		      struct bfd_link_info *info,
 		      asection *sec,
@@ -2886,16 +2876,7 @@ ppc_elf_check_relocs (bfd *abfd,
   struct elf_link_hash_entry *tga;
 
   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;
+    return true;
 
 #ifdef DEBUG
   _bfd_error_handler ("ppc_elf_check_relocs called for section %pA in %pB",
@@ -2914,10 +2895,10 @@ ppc_elf_check_relocs (bfd *abfd,
       if (htab->elf.dynobj == NULL)
 	htab->elf.dynobj = abfd;
       if (!ppc_elf_create_glink (htab->elf.dynobj, info))
-	return FALSE;
+	return false;
     }
   tga = elf_link_hash_lookup (&htab->elf, "__tls_get_addr",
-			      FALSE, FALSE, TRUE);
+			      false, false, true);
   symtab_hdr = &elf_symtab_hdr (abfd);
   sym_hashes = elf_sym_hashes (abfd);
   got2 = bfd_get_section_by_name (abfd, ".got2");
@@ -2929,6 +2910,7 @@ ppc_elf_check_relocs (bfd *abfd,
       unsigned long r_symndx;
       enum elf_ppc_reloc_type r_type;
       struct elf_link_hash_entry *h;
+      Elf_Internal_Sym *isym;
       int tls_type;
       struct plt_entry **ifunc;
       struct plt_entry **pltent;
@@ -2936,13 +2918,19 @@ ppc_elf_check_relocs (bfd *abfd,
 
       r_symndx = ELF32_R_SYM (rel->r_info);
       if (r_symndx < symtab_hdr->sh_info)
-	h = NULL;
+	{
+	  h = NULL;
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, abfd, r_symndx);
+	  if (isym == NULL)
+	    return false;
+	}
       else
 	{
 	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 	  while (h->root.type == bfd_link_hash_indirect
 		 || h->root.type == bfd_link_hash_warning)
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	  isym = NULL;
 	}
 
       /* If a relocation refers to _GLOBAL_OFFSET_TABLE_, create the .got.
@@ -2955,27 +2943,30 @@ ppc_elf_check_relocs (bfd *abfd,
 	  if (htab->elf.dynobj == NULL)
 	    htab->elf.dynobj = abfd;
 	  if (!ppc_elf_create_got (htab->elf.dynobj, info))
-	    return FALSE;
+	    return false;
 	  BFD_ASSERT (h == htab->elf.hgot);
 	}
 
       tls_type = 0;
       r_type = ELF32_R_TYPE (rel->r_info);
       ifunc = NULL;
-      if (h == NULL && !htab->is_vxworks)
+      if (h != NULL)
+	{
+	  if (h->type == STT_GNU_IFUNC)
+	    {
+	      h->needs_plt = 1;
+	      ifunc = &h->plt.plist;
+	    }
+	}
+      else if (htab->elf.target_os != is_vxworks)
 	{
-	  Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-							  abfd, r_symndx);
-	  if (isym == NULL)
-	    return FALSE;
-
 	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
 	      /* Set PLT_IFUNC flag for this sym, no GOT entry yet.  */
 	      ifunc = update_local_sym_info (abfd, symtab_hdr, r_symndx,
 					     NON_GOT | PLT_IFUNC);
 	      if (ifunc == NULL)
-		return FALSE;
+		return false;
 
 	      /* STT_GNU_IFUNC symbols must have a PLT entry;
 		 In a non-pie executable even when there are
@@ -2996,12 +2987,12 @@ ppc_elf_check_relocs (bfd *abfd,
 			  || r_type == R_PPC_PLT16_HA))
 		    addend = rel->r_addend;
 		  if (!update_plt_info (abfd, ifunc, got2, addend))
-		    return FALSE;
+		    return false;
 		}
 	    }
 	}
 
-      if (!htab->is_vxworks
+      if (htab->elf.target_os != is_vxworks
 	  && is_branch_reloc (r_type)
 	  && h != NULL
 	  && h == tga)
@@ -3028,7 +3019,7 @@ ppc_elf_check_relocs (bfd *abfd,
 	  else
 	    if (!update_local_sym_info (abfd, symtab_hdr, r_symndx,
 					NON_GOT | TLS_TLS | TLS_MARK))
-	      return FALSE;
+	      return false;
 	  break;
 
 	case R_PPC_PLTSEQ:
@@ -3077,7 +3068,7 @@ ppc_elf_check_relocs (bfd *abfd,
 	      if (htab->elf.dynobj == NULL)
 		htab->elf.dynobj = abfd;
 	      if (!ppc_elf_create_got (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	  if (h != NULL)
 	    {
@@ -3087,14 +3078,14 @@ ppc_elf_check_relocs (bfd *abfd,
 	  else
 	    /* This is a global offset table entry for a local symbol.  */
 	    if (!update_local_sym_info (abfd, symtab_hdr, r_symndx, tls_type))
-	      return FALSE;
+	      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))
 	    {
 	      if (!update_plt_info (abfd, &h->plt.plist, NULL, 0))
-		return FALSE;
+		return false;
 	    }
 	  break;
 
@@ -3103,11 +3094,11 @@ ppc_elf_check_relocs (bfd *abfd,
 	  htab->sdata[0].sym->ref_regular = 1;
 	  if (!elf_allocate_pointer_linker_section (abfd, &htab->sdata[0],
 						    h, rel))
-	    return FALSE;
+	    return false;
 	  if (h != NULL)
 	    {
-	      ppc_elf_hash_entry (h)->has_sda_refs = TRUE;
-	      h->non_got_ref = TRUE;
+	      ppc_elf_hash_entry (h)->has_sda_refs = true;
+	      h->non_got_ref = true;
 	    }
 	  break;
 
@@ -3116,16 +3107,16 @@ ppc_elf_check_relocs (bfd *abfd,
 	  if (!bfd_link_executable (info))
 	    {
 	      bad_shared_reloc (abfd, r_type);
-	      return FALSE;
+	      return false;
 	    }
 	  htab->sdata[1].sym->ref_regular = 1;
 	  if (!elf_allocate_pointer_linker_section (abfd, &htab->sdata[1],
 						    h, rel))
-	    return FALSE;
+	    return false;
 	  if (h != NULL)
 	    {
-	      ppc_elf_hash_entry (h)->has_sda_refs = TRUE;
-	      h->non_got_ref = TRUE;
+	      ppc_elf_hash_entry (h)->has_sda_refs = true;
+	      h->non_got_ref = true;
 	    }
 	  break;
 
@@ -3141,8 +3132,8 @@ ppc_elf_check_relocs (bfd *abfd,
 	case R_PPC_VLE_SDAREL_HA16D:
 	  if (h != NULL)
 	    {
-	      ppc_elf_hash_entry (h)->has_sda_refs = TRUE;
-	      h->non_got_ref = TRUE;
+	      ppc_elf_hash_entry (h)->has_sda_refs = true;
+	      h->non_got_ref = true;
 	    }
 	  break;
 
@@ -3162,13 +3153,13 @@ ppc_elf_check_relocs (bfd *abfd,
 	  if (!bfd_link_executable (info))
 	    {
 	      bad_shared_reloc (abfd, r_type);
-	      return FALSE;
+	      return false;
 	    }
 	  htab->sdata[1].sym->ref_regular = 1;
 	  if (h != NULL)
 	    {
-	      ppc_elf_hash_entry (h)->has_sda_refs = TRUE;
-	      h->non_got_ref = TRUE;
+	      ppc_elf_hash_entry (h)->has_sda_refs = true;
+	      h->non_got_ref = true;
 	    }
 	  break;
 
@@ -3178,8 +3169,8 @@ ppc_elf_check_relocs (bfd *abfd,
 	case R_PPC_EMB_RELSDA:
 	  if (h != NULL)
 	    {
-	      ppc_elf_hash_entry (h)->has_sda_refs = TRUE;
-	      h->non_got_ref = TRUE;
+	      ppc_elf_hash_entry (h)->has_sda_refs = true;
+	      h->non_got_ref = true;
 	    }
 	  break;
 
@@ -3189,7 +3180,7 @@ ppc_elf_check_relocs (bfd *abfd,
 	case R_PPC_EMB_NADDR16_HI:
 	case R_PPC_EMB_NADDR16_HA:
 	  if (h != NULL)
-	    h->non_got_ref = TRUE;
+	    h->non_got_ref = true;
 	  break;
 
 	case R_PPC_PLTREL24:
@@ -3217,7 +3208,7 @@ ppc_elf_check_relocs (bfd *abfd,
 	      pltent = update_local_sym_info (abfd, symtab_hdr, r_symndx,
 					      NON_GOT | PLT_KEEP);
 	      if (pltent == NULL)
-		return FALSE;
+		return false;
 	    }
 	  else
 	    {
@@ -3234,7 +3225,7 @@ ppc_elf_check_relocs (bfd *abfd,
 		  || r_type == R_PPC_PLT16_HA))
 	    addend = rel->r_addend;
 	  if (!update_plt_info (abfd, pltent, got2, addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* The following relocations don't need to propagate the
@@ -3294,34 +3285,34 @@ ppc_elf_check_relocs (bfd *abfd,
 	      htab->plt_type = PLT_OLD;
 	      htab->old_bfd = abfd;
 	    }
-	  if (h != NULL && h->type == STT_GNU_IFUNC)
-	    {
-	      h->needs_plt = 1;
-	      if (!update_plt_info (abfd, &h->plt.plist, NULL, 0))
-		return FALSE;
-	    }
+	  if (h != NULL
+	      && ifunc != NULL
+	      && !update_plt_info (abfd, ifunc, NULL, 0))
+	    return false;
 	  break;
 
 	  /* This relocation describes the C++ object vtable hierarchy.
 	     Reconstruct it for later use during GC.  */
 	case R_PPC_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_PPC_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    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;
@@ -3345,12 +3336,6 @@ ppc_elf_check_relocs (bfd *abfd,
 		 reliably deduce the GOT pointer value needed for
 		 PLT call stubs.  */
 	      asection *s;
-	      Elf_Internal_Sym *isym;
-
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-					    abfd, r_symndx);
-	      if (isym == NULL)
-		return FALSE;
 
 	      s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 	      if (s == got2)
@@ -3375,7 +3360,7 @@ ppc_elf_check_relocs (bfd *abfd,
 	      /* We may need a plt entry if the symbol turns out to be
 		 a function defined in a dynamic object.  */
 	      if (!update_plt_info (abfd, &h->plt.plist, NULL, 0))
-		return FALSE;
+		return false;
 
 	      /* We may need a copy reloc too.  */
 	      h->non_got_ref = 1;
@@ -3414,43 +3399,26 @@ ppc_elf_check_relocs (bfd *abfd,
 		 a function defined in a dynamic object.  */
 	      h->needs_plt = 1;
 	      if (!update_plt_info (abfd, &h->plt.plist, NULL, 0))
-		return FALSE;
+		return false;
 	      break;
 	    }
 
 	dodyn:
-	  /* If we are creating a shared library, and this is a reloc
-	     against a global symbol, or a non PC relative reloc
-	     against a local symbol, then we need to copy the reloc
-	     into the shared library.  However, if we are linking with
-	     -Bsymbolic, we do not need to copy a reloc against a
-	     global symbol which is defined in an object we are
-	     including in the link (i.e., DEF_REGULAR is set).  At
-	     this point we have not seen all the input files, so it is
-	     possible that DEF_REGULAR is not set now but will be set
-	     later (it is never cleared).  In case of a weak definition,
-	     DEF_REGULAR may be cleared later by a strong definition in
-	     a shared library.  We account for that possibility below by
-	     storing information in the dyn_relocs field of the hash
-	     table entry.  A similar situation occurs when creating
-	     shared libraries and symbol visibility changes render the
-	     symbol local.
-
-	     If on the other hand, we are creating an executable, we
-	     may need to keep relocations for symbols satisfied by a
-	     dynamic library if we manage to avoid copy relocs for the
-	     symbol.  */
-	  if ((bfd_link_pic (info)
-	       && (must_be_dyn_reloc (info, r_type)
-		   || (h != NULL
-		       && (!SYMBOLIC_BIND (info, h)
-			   || h->root.type == bfd_link_hash_defweak
-			   || !h->def_regular))))
-	      || (ELIMINATE_COPY_RELOCS
-		  && !bfd_link_pic (info)
-		  && h != NULL
-		  && (h->root.type == bfd_link_hash_defweak
-		      || !h->def_regular)))
+	  /* Set up information for symbols that might need dynamic
+	     relocations.  At this point in linking we have read all
+	     the input files and resolved most symbols, but have not
+	     yet decided whether symbols are dynamic or finalized
+	     symbol flags.  In some cases we might be setting dynamic
+	     reloc info for symbols that do not end up needing such.
+	     That's OK, adjust_dynamic_symbol and allocate_dynrelocs
+	     work together with this code.  */
+	  if ((h != NULL
+	       && !SYMBOL_REFERENCES_LOCAL (info, h))
+	      || (bfd_link_pic (info)
+		  && (h != NULL
+		      ? !bfd_is_abs_symbol (&h->root)
+		      : isym->st_shndx != SHN_ABS)
+		  && must_be_dyn_reloc (info, r_type)))
 	    {
 #ifdef DEBUG
 	      fprintf (stderr,
@@ -3465,10 +3433,10 @@ ppc_elf_check_relocs (bfd *abfd,
 		    htab->elf.dynobj = abfd;
 
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, htab->elf.dynobj, 2, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* If this is a global symbol, we count the number of
@@ -3478,13 +3446,13 @@ 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)
 		    {
 		      p = bfd_alloc (htab->elf.dynobj, sizeof *p);
 		      if (p == NULL)
-			return FALSE;
+			return false;
 		      p->next = *rel_head;
 		      *rel_head = p;
 		      p->sec = sec;
@@ -3502,15 +3470,9 @@ ppc_elf_check_relocs (bfd *abfd,
 		     easily.  Oh well.  */
 		  struct ppc_dyn_relocs *p;
 		  struct ppc_dyn_relocs **rel_head;
-		  bfd_boolean is_ifunc;
+		  bool is_ifunc;
 		  asection *s;
 		  void *vpp;
-		  Elf_Internal_Sym *isym;
-
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-						abfd, r_symndx);
-		  if (isym == NULL)
-		    return FALSE;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
@@ -3518,7 +3480,7 @@ ppc_elf_check_relocs (bfd *abfd,
 
 		  vpp = &elf_section_data (s)->local_dynrel;
 		  rel_head = (struct ppc_dyn_relocs **) vpp;
-		  is_ifunc = ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC;
+		  is_ifunc = ifunc != NULL;
 		  p = *rel_head;
 		  if (p != NULL && p->sec == sec && p->ifunc != is_ifunc)
 		    p = p->next;
@@ -3526,7 +3488,7 @@ ppc_elf_check_relocs (bfd *abfd,
 		    {
 		      p = bfd_alloc (htab->elf.dynobj, sizeof *p);
 		      if (p == NULL)
-			return FALSE;
+			return false;
 		      p->next = *rel_head;
 		      *rel_head = p;
 		      p->sec = sec;
@@ -3541,18 +3503,29 @@ ppc_elf_check_relocs (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Warn for conflicting Tag_GNU_Power_ABI_FP attributes between IBFD
    and OBFD, and merge non-conflicting ones.  */
-bfd_boolean
+bool
 _bfd_elf_ppc_merge_fp_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;
+  bool ret = true;
+  bool 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 +3543,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 +3556,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 +3564,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 +3572,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 +3580,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 +3589,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 +3602,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 +3610,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 +3618,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 +3626,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;
 	}
     }
 
@@ -3661,16 +3640,16 @@ _bfd_elf_ppc_merge_fp_attributes (bfd *i
 
 /* Merge object attributes from IBFD into OBFD.  Warn if
    there are conflicting attributes.  */
-static bfd_boolean
+static bool
 ppc_elf_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd;
   obj_attribute *in_attr, *in_attrs;
   obj_attribute *out_attr, *out_attrs;
-  bfd_boolean ret;
+  bool ret;
 
   if (!_bfd_elf_ppc_merge_fp_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   obfd = info->output_bfd;
   in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
@@ -3680,7 +3659,7 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
      merge non-conflicting ones.  */
   in_attr = &in_attrs[Tag_GNU_Power_ABI_Vector];
   out_attr = &out_attrs[Tag_GNU_Power_ABI_Vector];
-  ret = TRUE;
+  ret = true;
   if (in_attr->i != out_attr->i)
     {
       int in_vec = in_attr->i & 3;
@@ -3715,7 +3694,7 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
 	    (_("%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"),
 	     last_vec, ibfd);
 	  out_attr->type = ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_ERROR;
-	  ret = FALSE;
+	  ret = false;
 	}
       else if (out_vec > in_vec)
 	{
@@ -3724,7 +3703,7 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
 	    (_("%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"),
 	     ibfd, last_vec);
 	  out_attr->type = ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_ERROR;
-	  ret = FALSE;
+	  ret = false;
 	}
     }
 
@@ -3753,7 +3732,7 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
 	    (_("%pB uses r3/r4 for small structure returns, "
 	       "%pB uses memory"), last_struct, ibfd);
 	  out_attr->type = ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_ERROR;
-	  ret = FALSE;
+	  ret = false;
 	}
       else if (out_struct > in_struct)
 	{
@@ -3762,13 +3741,13 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
 	    (_("%pB uses r3/r4 for small structure returns, "
 	       "%pB uses memory"), ibfd, last_struct);
 	  out_attr->type = ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_ERROR;
-	  ret = FALSE;
+	  ret = false;
 	}
     }
   if (!ret)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
@@ -3778,30 +3757,33 @@ ppc_elf_merge_obj_attributes (bfd *ibfd,
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 ppc_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword old_flags;
   flagword new_flags;
-  bfd_boolean error;
+  bool error;
 
   if (!is_ppc_elf (ibfd) || !is_ppc_elf (obfd))
-    return TRUE;
+    return true;
 
   /* Check if we have the same endianness.  */
   if (! _bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   if (!ppc_elf_merge_obj_attributes (ibfd, info))
-    return FALSE;
+    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))
     {
       /* First call, no flags set.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
 
@@ -3814,11 +3796,11 @@ ppc_elf_merge_private_bfd_data (bfd *ibf
     {
       /* Warn about -mrelocatable mismatch.  Allow -mrelocatable-lib
 	 to be linked with either.  */
-      error = FALSE;
+      error = false;
       if ((new_flags & EF_PPC_RELOCATABLE) != 0
 	  && (old_flags & (EF_PPC_RELOCATABLE | EF_PPC_RELOCATABLE_LIB)) == 0)
 	{
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    (_("%pB: compiled with -mrelocatable and linked with "
 	       "modules compiled normally"), ibfd);
@@ -3826,7 +3808,7 @@ ppc_elf_merge_private_bfd_data (bfd *ibf
       else if ((new_flags & (EF_PPC_RELOCATABLE | EF_PPC_RELOCATABLE_LIB)) == 0
 	       && (old_flags & EF_PPC_RELOCATABLE) != 0)
 	{
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    (_("%pB: compiled normally and linked with "
 	       "modules compiled with -mrelocatable"), ibfd);
@@ -3853,7 +3835,7 @@ ppc_elf_merge_private_bfd_data (bfd *ibf
       /* Warn about any other mismatches.  */
       if (new_flags != old_flags)
 	{
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: uses different e_flags (%#x) fields "
@@ -3864,24 +3846,26 @@ ppc_elf_merge_private_bfd_data (bfd *ibf
       if (error)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static void
+static bfd_reloc_status_type
 ppc_elf_vle_split16 (bfd *input_bfd,
 		     asection *input_section,
 		     unsigned long offset,
 		     bfd_byte *loc,
 		     bfd_vma value,
 		     split16_format_type split16_format,
-		     bfd_boolean fixup)
+		     bool fixup)
 {
   unsigned int insn, opcode;
 
+  if (!offset_in_range (input_section, offset, 4))
+    return bfd_reloc_outofrange;
   insn = bfd_get_32 (input_bfd, loc);
   opcode = insn & E_OPCODE_MASK;
   if (opcode == E_OR2I_INSN
@@ -3938,6 +3922,7 @@ ppc_elf_vle_split16 (bfd *input_bfd,
     }
   insn |= value & 0x7ff;
   bfd_put_32 (input_bfd, insn, loc);
+  return bfd_reloc_ok;
 }
 
 static void
@@ -3977,7 +3962,7 @@ ppc_elf_select_plt_layout (bfd *output_b
       else if (bfd_link_pic (info)
 	       && htab->elf.dynamic_sections_created
 	       && (h = elf_link_hash_lookup (&htab->elf, "_mcount",
-					     FALSE, FALSE, TRUE)) != NULL
+					     false, false, true)) != NULL
 	       && (h->type == STT_FUNC
 		   || h->needs_plt)
 	       && h->ref_regular
@@ -4016,12 +4001,19 @@ ppc_elf_select_plt_layout (bfd *output_b
 	  htab->plt_type = plt_type;
 	}
     }
-  if (htab->plt_type == PLT_OLD && htab->params->plt_style == PLT_NEW)
+  if (htab->plt_type == PLT_OLD)
     {
-      if (htab->old_bfd != NULL)
-	_bfd_error_handler (_("bss-plt forced due to %pB"), htab->old_bfd);
-      else
-	_bfd_error_handler (_("bss-plt forced by profiling"));
+      if (!info->user_warn_rwx_segments)
+	info->no_warn_rwx_segments = 1;
+      if (htab->params->plt_style == PLT_NEW
+	  || (htab->params->plt_style != PLT_OLD
+	      && !info->no_warn_rwx_segments))
+	{
+	  if (htab->old_bfd != NULL)
+	    _bfd_error_handler (_("bss-plt forced due to %pB"), htab->old_bfd);
+	  else
+	    _bfd_error_handler (_("bss-plt forced by profiling"));
+	}
     }
 
   BFD_ASSERT (htab->plt_type != PLT_VXWORKS);
@@ -4072,7 +4064,7 @@ ppc_elf_gc_mark_hook (asection *sec,
   return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
 }
 
-static bfd_boolean
+static bool
 get_sym_h (struct elf_link_hash_entry **hp,
 	   Elf_Internal_Sym **symp,
 	   asection **symsecp,
@@ -4124,7 +4116,7 @@ get_sym_h (struct elf_link_hash_entry **
 					    symtab_hdr->sh_info,
 					    0, NULL, NULL, NULL);
 	  if (locsyms == NULL)
-	    return FALSE;
+	    return false;
 	  *locsymsp = locsyms;
 	}
       sym = locsyms + r_symndx;
@@ -4156,13 +4148,13 @@ get_sym_h (struct elf_link_hash_entry **
 	  *tls_maskp = tls_mask;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Analyze inline PLT call relocations to see whether calls to locally
    defined functions can be converted to direct calls.  */
 
-bfd_boolean
+bool
 ppc_elf_inline_plt (struct bfd_link_info *info)
 {
   struct ppc_elf_link_hash_table *htab;
@@ -4172,7 +4164,7 @@ ppc_elf_inline_plt (struct bfd_link_info
 
   htab = ppc_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* A bl insn can reach -0x2000000 to 0x1fffffc.  The limit is
      reduced somewhat to cater for possible stubs that might be added
@@ -4195,7 +4187,7 @@ ppc_elf_inline_plt (struct bfd_link_info
   if (high_vma - low_vma < limit)
     {
       htab->can_convert_all_inline_plt = 1;
-      return TRUE;
+      return true;
     }
 
   /* Otherwise, go looking through relocs for cases where a direct
@@ -4232,10 +4224,10 @@ ppc_elf_inline_plt (struct bfd_link_info
 	    relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
 						  info->keep_memory);
 	    if (relstart == NULL)
-	      return FALSE;
+	      return false;
 
 	    relend = relstart + sec->reloc_count;
-	    for (rel = relstart; rel < relend; )
+	    for (rel = relstart; rel < relend; rel++)
 	      {
 		enum elf_ppc_reloc_type r_type;
 		unsigned long r_symndx;
@@ -4254,10 +4246,9 @@ 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;
+		    return false;
 		  }
 
 		if (sym_sec != NULL && sym_sec->output_section != NULL)
@@ -4291,7 +4282,7 @@ ppc_elf_inline_plt (struct bfd_link_info
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set plt output section type, htab->tls_get_addr, and call the
@@ -4304,15 +4295,15 @@ ppc_elf_tls_setup (bfd *obfd, struct bfd
 
   htab = ppc_elf_hash_table (info);
   htab->tls_get_addr = elf_link_hash_lookup (&htab->elf, "__tls_get_addr",
-					     FALSE, FALSE, TRUE);
+					     false, false, true);
   if (htab->plt_type != PLT_NEW)
-    htab->params->no_tls_get_addr_opt = TRUE;
+    htab->params->no_tls_get_addr_opt = true;
 
   if (!htab->params->no_tls_get_addr_opt)
     {
       struct elf_link_hash_entry *opt, *tga;
       opt = elf_link_hash_lookup (&htab->elf, "__tls_get_addr_opt",
-				  FALSE, FALSE, TRUE);
+				  false, false, true);
       if (opt != NULL
 	  && (opt->root.type == bfd_link_hash_defined
 	      || opt->root.type == bfd_link_hash_defweak))
@@ -4346,14 +4337,14 @@ ppc_elf_tls_setup (bfd *obfd, struct bfd
 		      _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
 					      opt->dynstr_index);
 		      if (!bfd_elf_link_record_dynamic_symbol (info, opt))
-			return FALSE;
+			return NULL;
 		    }
 		  htab->tls_get_addr = opt;
 		}
 	    }
 	}
       else
-	htab->params->no_tls_get_addr_opt = TRUE;
+	htab->params->no_tls_get_addr_opt = true;
     }
   if (htab->plt_type == PLT_NEW
       && htab->elf.splt != NULL
@@ -4369,7 +4360,7 @@ ppc_elf_tls_setup (bfd *obfd, struct bfd
 /* Return TRUE iff REL is a branch reloc with a global symbol matching
    HASH.  */
 
-static bfd_boolean
+static bool
 branch_reloc_hash_match (const bfd *ibfd,
 			 const Elf_Internal_Rela *rel,
 			 const struct elf_link_hash_entry *hash)
@@ -4388,15 +4379,15 @@ branch_reloc_hash_match (const bfd *ibfd
 	     || h->root.type == bfd_link_hash_warning)
 	h = (struct elf_link_hash_entry *) h->root.u.i.link;
       if (h == hash)
-	return TRUE;
+	return true;
     }
-  return FALSE;
+  return false;
 }
 
 /* Run through all the TLS relocs looking for optimization
    opportunities.  */
 
-bfd_boolean
+bool
 ppc_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED,
 		      struct bfd_link_info *info)
 {
@@ -4406,11 +4397,13 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
   int pass;
 
   if (!bfd_link_executable (info))
-    return TRUE;
+    return true;
 
   htab = ppc_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    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
@@ -4434,7 +4427,7 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
 	      relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
 						    info->keep_memory);
 	      if (relstart == NULL)
-		return FALSE;
+		return false;
 
 	      relend = relstart + sec->reloc_count;
 	      for (rel = relstart; rel < relend; rel++)
@@ -4444,7 +4437,7 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
 		  struct elf_link_hash_entry *h = NULL;
 		  unsigned char *tls_mask;
 		  unsigned char tls_set, tls_clear;
-		  bfd_boolean is_local;
+		  bool is_local;
 		  bfd_signed_vma *got_count;
 
 		  r_symndx = ELF32_R_SYM (rel->r_info);
@@ -4479,7 +4472,7 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
 					      ibfd, sec, rel->r_offset);
 		      if (elf_section_data (sec)->relocs != relstart)
 			free (relstart);
-		      return TRUE;
+		      return true;
 		    }
 
 		  expecting_tls_get_addr = 0;
@@ -4577,6 +4570,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;
 		    }
@@ -4601,7 +4625,7 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
 					      ibfd, sec, rel->r_offset);
 		      if (elf_section_data (sec)->relocs != relstart)
 			free (relstart);
-		      return TRUE;
+		      return true;
 		    }
 
 		  if (h != NULL)
@@ -4671,56 +4695,38 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUT
 		free (relstart);
 	    }
       }
-  htab->do_tls_opt = 1;
-  return TRUE;
+  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.  */
 
-static bfd_boolean
+static bool
 alias_readonly_dynrelocs (struct elf_link_hash_entry *h)
 {
   struct ppc_elf_link_hash_entry *eh = ppc_elf_hash_entry (h);
   do
     {
-      if (readonly_dynrelocs (&eh->elf))
-	return TRUE;
+      if (_bfd_elf_readonly_dynrelocs (&eh->elf))
+	return true;
       eh = ppc_elf_hash_entry (eh->elf.u.alias);
     } while (eh != NULL && &eh->elf != h);
 
-  return FALSE;
+  return false;
 }
 
 /* Return whether H has pc-relative dynamic relocs.  */
 
-static bfd_boolean
+static bool
 pc_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)
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
     if (p->pc_count != 0)
-      return TRUE;
-  return FALSE;
+      return true;
+  return false;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -4729,7 +4735,7 @@ pc_dynrelocs (struct elf_link_hash_entry
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 ppc_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 			       struct elf_link_hash_entry *h)
 {
@@ -4756,12 +4762,12 @@ ppc_elf_adjust_dynamic_symbol (struct bf
       || h->type == STT_GNU_IFUNC
       || h->needs_plt)
     {
-      bfd_boolean local = (SYMBOL_CALLS_LOCAL (info, h)
+      bool local = (SYMBOL_CALLS_LOCAL (info, h)
 			   || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
       /* 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 +4811,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,11 +4824,11 @@ 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.  */
-      return TRUE;
+      return true;
     }
   else
     h->plt.plist = NULL;
@@ -4839,8 +4845,8 @@ 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;
-      return TRUE;
+	h->dyn_relocs = NULL;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -4853,7 +4859,7 @@ ppc_elf_adjust_dynamic_symbol (struct bf
   if (bfd_link_pic (info))
     {
       h->protected_def = 0;
-      return TRUE;
+      return true;
     }
 
   /* If there are no references to this symbol that do not use the
@@ -4861,7 +4867,7 @@ ppc_elf_adjust_dynamic_symbol (struct bf
   if (!h->non_got_ref)
     {
       h->protected_def = 0;
-      return TRUE;
+      return true;
     }
 
   /* Protected variables do not work with .dynbss.  The copy in
@@ -4876,12 +4882,12 @@ ppc_elf_adjust_dynamic_symbol (struct bf
 	  && htab->params->pic_fixup == 0
 	  && info->disable_target_specific_optimizations <= 1)
 	htab->params->pic_fixup = 1;
-      return TRUE;
+      return true;
     }
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
-    return TRUE;
+    return true;
 
    /* 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.
@@ -4891,10 +4897,10 @@ 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;
+    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
@@ -4935,7 +4941,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);
 }
 
@@ -4945,7 +4951,7 @@ ppc_elf_adjust_dynamic_symbol (struct bf
    is xxxxxxxx.plt_pic32.<callee>, and for -fPIC
    xxxxxxxx.got2.plt_pic32.<callee>.  */
 
-static bfd_boolean
+static bool
 add_stub_sym (struct plt_entry *ent,
 	      struct elf_link_hash_entry *h,
 	      struct bfd_link_info *info)
@@ -4966,17 +4972,17 @@ add_stub_sym (struct plt_entry *ent,
   len3 = 0;
   if (ent->sec)
     len3 = strlen (ent->sec->name);
-  name = bfd_malloc (len1 + len2 + len3 + 9);
+  name = bfd_alloc (info->output_bfd, len1 + len2 + len3 + 9);
   if (name == NULL)
-    return FALSE;
+    return false;
   sprintf (name, "%08x", (unsigned) ent->addend & 0xffffffff);
   if (ent->sec)
     memcpy (name + 8, ent->sec->name, len3);
   memcpy (name + 8 + len3, stub, len2);
   memcpy (name + 8 + len3 + len2, h->root.root.string, len1 + 1);
-  sh = elf_link_hash_lookup (&htab->elf, name, TRUE, FALSE, FALSE);
+  sh = elf_link_hash_lookup (&htab->elf, name, true, false, false);
   if (sh == NULL)
-    return FALSE;
+    return false;
   if (sh->root.type == bfd_link_hash_new)
     {
       sh->root.type = bfd_link_hash_defined;
@@ -4989,7 +4995,7 @@ add_stub_sym (struct plt_entry *ent,
       sh->non_elf = 0;
       sh->root.linker_def = 1;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate NEED contiguous space in .got, and return the offset.
@@ -5053,7 +5059,7 @@ got_entries_needed (int tls_mask)
 
 /* If H is undefined, make it dynamic if that makes sense.  */
 
-static bfd_boolean
+static bool
 ensure_undef_dynamic (struct bfd_link_info *info,
 		      struct elf_link_hash_entry *h)
 {
@@ -5067,22 +5073,33 @@ ensure_undef_dynamic (struct bfd_link_in
       && !h->forced_local
       && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
     return bfd_elf_link_record_dynamic_symbol (info, h);
-  return TRUE;
+  return true;
+}
+
+/* Choose whether to use htab->iplt or htab->pltlocal rather than the
+   usual htab->elf.splt section for a PLT entry.  */
+
+static inline
+bool use_local_plt (struct bfd_link_info *info,
+			   struct elf_link_hash_entry *h)
+{
+  return (h == NULL
+	  || h->dynindx == -1
+	  || !elf_hash_table (info)->dynamic_sections_created);
 }
 
 /* Allocate space in associated reloc sections for dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info = inf;
   struct ppc_elf_link_hash_entry *eh;
   struct ppc_elf_link_hash_table *htab;
   struct elf_dyn_relocs *p;
-  bfd_boolean dyn;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   htab = ppc_elf_hash_table (info);
   eh = (struct ppc_elf_link_hash_entry *) h;
@@ -5094,13 +5111,12 @@ allocate_dynrelocs (struct elf_link_hash
 	  && eh->has_addr16_lo
 	  && htab->params->pic_fixup > 0))
     {
-      unsigned int need;
-
       /* Make sure this symbol is output as a dynamic symbol.  */
       if (!ensure_undef_dynamic (info, &eh->elf))
-	return FALSE;
+	return false;
 
-      need = 0;
+      unsigned int need = got_entries_needed (eh->tls_mask);
+      unsigned int rel_need = need * sizeof (Elf32_External_Rela) / 4;
       if ((eh->tls_mask & (TLS_TLS | TLS_LD)) == (TLS_TLS | TLS_LD))
 	{
 	  if (SYMBOL_REFERENCES_LOCAL (info, &eh->elf))
@@ -5109,9 +5125,11 @@ allocate_dynrelocs (struct elf_link_hash
 	       a local dynamic reloc against a non-local symbol.  */
 	    htab->tlsld_got.refcount += 1;
 	  else
-	    need += 8;
+	    {
+	      need += 8;
+	      rel_need += sizeof (Elf32_External_Rela);
+	    }
 	}
-      need += got_entries_needed (eh->tls_mask);
       if (need == 0)
 	eh->elf.got.offset = (bfd_vma) -1;
       else
@@ -5120,7 +5138,8 @@ allocate_dynrelocs (struct elf_link_hash
 	  if (((bfd_link_pic (info)
 		&& !((eh->tls_mask & TLS_TLS) != 0
 		     && bfd_link_executable (info)
-		     && SYMBOL_REFERENCES_LOCAL (info, &eh->elf)))
+		     && SYMBOL_REFERENCES_LOCAL (info, &eh->elf))
+		&& !bfd_is_abs_symbol (&h->root))
 	       || (htab->elf.dynamic_sections_created
 		   && eh->elf.dynindx != -1
 		   && !SYMBOL_REFERENCES_LOCAL (info, &eh->elf)))
@@ -5128,13 +5147,10 @@ allocate_dynrelocs (struct elf_link_hash
 	    {
 	      asection *rsec;
 
-	      need *= sizeof (Elf32_External_Rela) / 4;
-	      if ((eh->tls_mask & (TLS_TLS | TLS_LD)) == (TLS_TLS | TLS_LD))
-		need -= sizeof (Elf32_External_Rela);
 	      rsec = htab->elf.srelgot;
 	      if (eh->elf.type == STT_GNU_IFUNC)
 		rsec = htab->elf.irelplt;
-	      rsec->size += need;
+	      rsec->size += rel_need;
 	    }
 	}
     }
@@ -5145,19 +5161,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 +5193,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 +5204,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,11 +5217,11 @@ 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))
-	    return FALSE;
+	    return false;
 	}
     }
   else if (ELIMINATE_COPY_RELOCS)
@@ -5213,7 +5229,11 @@ allocate_dynrelocs (struct elf_link_hash
       /* For the non-pic case, discard space for relocs against
 	 symbols which turn out to need copy relocs or are not
 	 dynamic.  */
-      if (h->dynamic_adjusted
+      if ((h->dynamic_adjusted
+	   || (h->ref_regular
+	       && h->root.type == bfd_link_hash_undefweak
+	       && (info->dynamic_undefined_weak > 0
+		   || !_bfd_elf_readonly_dynrelocs (h))))
 	  && !h->def_regular
 	  && !ELF_COMMON_DEF_P (h)
 	  && !(h->protected_def
@@ -5223,23 +5243,24 @@ allocate_dynrelocs (struct elf_link_hash
 	{
 	  /* Make sure this symbol is output as a dynamic symbol.  */
 	  if (!ensure_undef_dynamic (info, h))
-	    return FALSE;
+	    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)
-    {
-      asection *sreloc = elf_section_data (p->sec)->sreloc;
-      if (eh->elf.type == STT_GNU_IFUNC)
-	sreloc = htab->elf.irelplt;
-      sreloc->size += p->count * sizeof (Elf32_External_Rela);
-    }
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
+    if (!discarded_section (p->sec))
+      {
+	asection *sreloc = elf_section_data (p->sec)->sreloc;
+	if (eh->elf.type == STT_GNU_IFUNC)
+	  sreloc = htab->elf.irelplt;
+	sreloc->size += p->count * sizeof (Elf32_External_Rela);
+      }
 
   /* Handle PLT relocs.  Done last, after dynindx has settled.
      We might need a PLT entry when the symbol
@@ -5247,8 +5268,7 @@ allocate_dynrelocs (struct elf_link_hash
      b) is an ifunc, or
      c) has plt16 relocs and has been processed by adjust_dynamic_symbol, or
      d) has plt16 relocs and we are linking statically.  */
-  dyn = htab->elf.dynamic_sections_created && h->dynindx != -1;
-  if (dyn
+  if ((htab->elf.dynamic_sections_created && h->dynindx != -1)
       || h->type == STT_GNU_IFUNC
       || (h->needs_plt && h->dynamic_adjusted)
       || (h->needs_plt
@@ -5259,14 +5279,20 @@ allocate_dynrelocs (struct elf_link_hash
 	      & (TLS_TLS | PLT_KEEP)) == PLT_KEEP))
     {
       struct plt_entry *ent;
-      bfd_boolean doneone = FALSE;
+      bool doneone = false;
       bfd_vma plt_offset = 0, glink_offset = (bfd_vma) -1;
 
       for (ent = h->plt.plist; ent != NULL; ent = ent->next)
 	if (ent->plt.refcount > 0)
 	  {
-	    asection *s = htab->elf.splt;
+	    asection *s;
+	    bool dyn;
+
+	    if (!ensure_undef_dynamic (info, h))
+	      return false;
 
+	    dyn = !use_local_plt (info, h);
+	    s = htab->elf.splt;
 	    if (!dyn)
 	      {
 		if (h->type == STT_GNU_IFUNC)
@@ -5306,7 +5332,7 @@ allocate_dynrelocs (struct elf_link_hash
 
 		    if (htab->params->emit_stub_syms
 			&& !add_stub_sym (ent, h, info))
-		      return FALSE;
+		      return false;
 		  }
 	      }
 	    else
@@ -5400,7 +5426,7 @@ allocate_dynrelocs (struct elf_link_hash
 			htab->elf.sgotplt->size += 4;
 		      }
 		  }
-		doneone = TRUE;
+		doneone = true;
 	      }
 	  }
 	else
@@ -5418,34 +5444,7 @@ allocate_dynrelocs (struct elf_link_hash
       h->needs_plt = 0;
     }
 
-  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;
 }
 
 static const unsigned char glink_eh_frame_cie[] =
@@ -5464,21 +5463,22 @@ static const unsigned char glink_eh_fram
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-ppc_elf_size_dynamic_sections (bfd *output_bfd,
-			       struct bfd_link_info *info)
+static bool
+ppc_elf_late_size_sections (bfd *output_bfd,
+			    struct bfd_link_info *info)
 {
   struct ppc_elf_link_hash_table *htab;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
 #ifdef DEBUG
-  fprintf (stderr, "ppc_elf_size_dynamic_sections called\n");
+  fprintf (stderr, "ppc_elf_late_size_sections called\n");
 #endif
 
   htab = ppc_elf_hash_table (info);
-  BFD_ASSERT (htab->elf.dynobj != NULL);
+  if (htab->elf.dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -5489,6 +5489,7 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -5508,6 +5509,8 @@ ppc_elf_size_dynamic_sections (bfd *outp
       char *lgot_masks;
       bfd_size_type locsymcount;
       Elf_Internal_Shdr *symtab_hdr;
+      Elf_Internal_Sym *local_syms;
+      Elf_Internal_Sym *isym;
 
       if (!is_ppc_elf (ibfd))
 	continue;
@@ -5521,15 +5524,14 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	       p != NULL;
 	       p = p->next)
 	    {
-	      if (!bfd_is_abs_section (p->sec)
-		  && bfd_is_abs_section (p->sec->output_section))
+	      if (discarded_section (p->sec))
 		{
 		  /* 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 (htab->is_vxworks
+	      else if (htab->elf.target_os == is_vxworks
 		       && strcmp (p->sec->output_section->name,
 				  ".tls_vars") == 0)
 		{
@@ -5564,8 +5566,18 @@ ppc_elf_size_dynamic_sections (bfd *outp
       local_plt = (struct plt_entry **) end_local_got;
       end_local_plt = local_plt + locsymcount;
       lgot_masks = (char *) end_local_plt;
+      local_syms = (Elf_Internal_Sym *) symtab_hdr->contents;
+      if (local_syms == NULL && locsymcount != 0)
+	{
+	  local_syms = bfd_elf_get_elf_syms (ibfd, symtab_hdr, locsymcount,
+					     0, NULL, NULL, NULL);
+	  if (local_syms == NULL)
+	    return false;
+	}
 
-      for (; local_got < end_local_got; ++local_got, ++lgot_masks)
+      for (isym = local_syms;
+	   local_got < end_local_got;
+	   ++local_got, ++lgot_masks, ++isym)
 	if (*local_got > 0)
 	  {
 	    unsigned int need;
@@ -5579,7 +5591,8 @@ ppc_elf_size_dynamic_sections (bfd *outp
 		*local_got = allocate_got (htab, need);
 		if (bfd_link_pic (info)
 		    && !((*lgot_masks & TLS_TLS) != 0
-			 && bfd_link_executable (info)))
+			 && bfd_link_executable (info))
+		    && isym->st_shndx != SHN_ABS)
 		  {
 		    asection *srel;
 
@@ -5594,7 +5607,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.  */
@@ -5602,7 +5615,7 @@ ppc_elf_size_dynamic_sections (bfd *outp
       for (; local_plt < end_local_plt; ++local_plt, ++lgot_masks)
 	{
 	  struct plt_entry *ent;
-	  bfd_boolean doneone = FALSE;
+	  bool doneone = false;
 	  bfd_vma plt_offset = 0, glink_offset = (bfd_vma) -1;
 
 	  for (ent = *local_plt; ent != NULL; ent = ent->next)
@@ -5646,12 +5659,21 @@ ppc_elf_size_dynamic_sections (bfd *outp
 			s = htab->relpltlocal;
 			s->size += sizeof (Elf32_External_Rela);
 		      }
-		    doneone = TRUE;
+		    doneone = true;
 		  }
 	      }
 	    else
 	      ent->plt.offset = (bfd_vma) -1;
 	}
+
+      if (local_syms != NULL
+	  && symtab_hdr->contents != (unsigned char *) local_syms)
+	{
+	  if (!info->keep_memory)
+	    free (local_syms);
+	  else
+	    symtab_hdr->contents = (unsigned char *) local_syms;
+	}
     }
 
   /* Allocate space for global sym dynamic relocs.  */
@@ -5719,9 +5741,9 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	{
 	  struct elf_link_hash_entry *sh;
 	  sh = elf_link_hash_lookup (&htab->elf, "__glink",
-				     TRUE, FALSE, FALSE);
+				     true, false, false);
 	  if (sh == NULL)
-	    return FALSE;
+	    return false;
 	  if (sh->root.type == bfd_link_hash_new)
 	    {
 	      sh->root.type = bfd_link_hash_defined;
@@ -5735,9 +5757,9 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	      sh->root.linker_def = 1;
 	    }
 	  sh = elf_link_hash_lookup (&htab->elf, "__glink_PLTresolve",
-				     TRUE, FALSE, FALSE);
+				     true, false, false);
 	  if (sh == NULL)
-	    return FALSE;
+	    return false;
 	  if (sh->root.type == bfd_link_hash_new)
 	    {
 	      sh->root.type = bfd_link_hash_defined;
@@ -5771,10 +5793,10 @@ ppc_elf_size_dynamic_sections (bfd *outp
 
   /* We've now determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = htab->elf.dynobj->sections; s != NULL; s = s->next)
     {
-      bfd_boolean strip_section = TRUE;
+      bool strip_section = true;
 
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
@@ -5786,7 +5808,7 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	     we've exported dynamic symbols from them we must leave them.
 	     It's too late to tell BFD to get rid of the symbols.  */
 	  if (htab->elf.hplt != NULL)
-	    strip_section = FALSE;
+	    strip_section = false;
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
@@ -5807,12 +5829,12 @@ ppc_elf_size_dynamic_sections (bfd *outp
 	{
 	  strip_section = (s->flags & SEC_KEEP) == 0;
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0)
 	    {
 	      /* Remember whether there are any relocation sections.  */
-	      relocs = TRUE;
+	      relocs = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -5846,7 +5868,8 @@ ppc_elf_size_dynamic_sections (bfd *outp
       /* Allocate memory for the section contents.  */
       s->contents = bfd_zalloc (htab->elf.dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
   if (htab->elf.dynamic_sections_created)
@@ -5859,56 +5882,22 @@ 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
 	  && htab->glink->size != 0)
 	{
 	  if (!add_dynamic_entry (DT_PPC_GOT, 0))
-	    return FALSE;
+	    return false;
 	  if (!htab->params->no_tls_get_addr_opt
 	      && htab->tls_get_addr != NULL
 	      && htab->tls_get_addr->plt.plist != NULL
 	      && !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;
+	    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
 
@@ -5972,7 +5961,7 @@ ppc_elf_size_dynamic_sections (bfd *outp
 		  == htab->glink_eh_frame->size);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Arrange to have _SDA_BASE_ or _SDA2_BASE_ stripped from the output
@@ -6017,14 +6006,14 @@ ppc_elf_maybe_strip_sdata_syms (struct b
 
 /* Return TRUE if symbol should be hashed in the `.gnu.hash' section.  */
 
-static bfd_boolean
+static bool
 ppc_elf_hash_symbol (struct elf_link_hash_entry *h)
 {
   if (h->plt.plist != NULL
       && !h->def_regular
       && (!h->pointer_equality_needed
 	  || !h->ref_regular_nonweak))
-    return FALSE;
+    return false;
 
   return _bfd_elf_hash_symbol (h);
 }
@@ -6064,11 +6053,11 @@ struct ppc_elf_relax_info
    space for the workaround has its size extended so that we can
    add trampolines at the end of the section.  */
 
-static bfd_boolean
+static bool
 ppc_elf_relax_section (bfd *abfd,
 		       asection *isec,
 		       struct bfd_link_info *link_info,
-		       bfd_boolean *again)
+		       bool *again)
 {
   struct one_branch_fixup
   {
@@ -6088,30 +6077,31 @@ ppc_elf_relax_section (bfd *abfd,
   struct one_branch_fixup *branch_fixups = NULL;
   struct ppc_elf_relax_info *relax_info = NULL;
   unsigned changes = 0;
-  bfd_boolean workaround_change;
+  bool workaround_change;
   struct ppc_elf_link_hash_table *htab;
   bfd_size_type trampbase, trampoff, newsize, picfixup_size;
   asection *got2;
-  bfd_boolean maybe_pasted;
+  bool maybe_pasted;
 
-  *again = FALSE;
+  *again = false;
 
   /* No need to do anything with non-alloc or non-code sections.  */
   if ((isec->flags & SEC_ALLOC) == 0
       || (isec->flags & SEC_CODE) == 0
+      || (isec->flags & SEC_HAS_CONTENTS) == 0
       || (isec->flags & SEC_LINKER_CREATED) != 0
       || isec->size < 4)
-    return TRUE;
+    return true;
 
   /* We cannot represent the required PIC relocs in the output, so don't
      do anything.  The linker doesn't support mixing -shared and -r
      anyway.  */
   if (bfd_link_relocatable (link_info) && bfd_link_pic (link_info))
-    return TRUE;
+    return true;
 
   htab = ppc_elf_hash_table (link_info);
   if (htab == NULL)
-    return TRUE;
+    return true;
 
   isec->size = (isec->size + 3) & -4;
   if (isec->rawsize == 0)
@@ -6130,7 +6120,7 @@ ppc_elf_relax_section (bfd *abfd,
 	  elf_section_data (isec)->sec_info
 	    = bfd_zalloc (abfd, sizeof (struct ppc_elf_relax_info));
 	  if (elf_section_data (isec)->sec_info == NULL)
-	    return FALSE;
+	    return false;
 	}
       relax_info = elf_section_data (isec)->sec_info;
       trampbase -= relax_info->workaround_size;
@@ -6167,7 +6157,7 @@ ppc_elf_relax_section (bfd *abfd,
 	  asection *tsec;
 	  struct one_branch_fixup *f;
 	  size_t insn_offset = 0;
-	  bfd_vma max_branch_offset = 0, val;
+	  bfd_vma max_branch_offset = 0, val, reladdr;
 	  bfd_byte *hit_addr;
 	  unsigned long t0;
 	  struct elf_link_hash_entry *h;
@@ -6413,6 +6403,7 @@ ppc_elf_relax_section (bfd *abfd,
 	    continue;
 
 	  roff = irel->r_offset;
+	  reladdr = isec->output_section->vma + isec->output_offset + roff;
 
 	  /* Avoid creating a lot of unnecessary fixups when
 	     relocatable if the output section size is such that a
@@ -6431,10 +6422,9 @@ ppc_elf_relax_section (bfd *abfd,
 		     final link, so do not presume they remain in range.  */
 		  || tsec->output_section == isec->output_section))
 	    {
-	      bfd_vma symaddr, reladdr;
+	      bfd_vma symaddr;
 
 	      symaddr = tsec->output_section->vma + tsec->output_offset + toff;
-	      reladdr = isec->output_section->vma + isec->output_offset + roff;
 	      if (symaddr - reladdr + max_branch_offset
 		  < 2 * max_branch_offset)
 		continue;
@@ -6505,6 +6495,12 @@ ppc_elf_relax_section (bfd *abfd,
 	      irel->r_info = ELF32_R_INFO (0, R_PPC_NONE);
 	    }
 
+	  link_info->callbacks->minfo
+	    (_("%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"),
+	     abfd, reladdr,
+	     (h && h->root.root.string? h->root.root.string : "<unknown>"),
+	     f->tsec->name);
+
 	  /* Get the section contents.  */
 	  if (contents == NULL)
 	    {
@@ -6548,7 +6544,7 @@ ppc_elf_relax_section (bfd *abfd,
 	}
     }
 
-  workaround_change = FALSE;
+  workaround_change = false;
   newsize = trampoff;
   if (htab->params->ppc476_workaround
       && (!bfd_link_relocatable (link_info)
@@ -6572,7 +6568,7 @@ ppc_elf_relax_section (bfd *abfd,
 	  if (relax_info->workaround_size < newsize)
 	    {
 	      relax_info->workaround_size = newsize;
-	      workaround_change = TRUE;
+	      workaround_change = true;
 	    }
 	  /* Ensure relocate_section is called.  */
 	  isec->flags |= SEC_RELOC;
@@ -6620,34 +6616,22 @@ ppc_elf_relax_section (bfd *abfd,
     {
       /* Append sufficient NOP relocs so we can write out relocation
 	 information for the trampolines.  */
-      Elf_Internal_Shdr *rel_hdr;
-      Elf_Internal_Rela *new_relocs = bfd_malloc ((changes + isec->reloc_count)
-						  * sizeof (*new_relocs));
-      unsigned ix;
-
-      if (!new_relocs)
+      size_t old_size = isec->reloc_count * sizeof (*internal_relocs);
+      size_t extra_size = changes * sizeof (*internal_relocs);
+      internal_relocs = bfd_realloc (internal_relocs, old_size + extra_size);
+      elf_section_data (isec)->relocs = internal_relocs;
+      if (!internal_relocs)
 	goto error_return;
-      memcpy (new_relocs, internal_relocs,
-	      isec->reloc_count * sizeof (*new_relocs));
-      for (ix = changes; ix--;)
-	{
-	  irel = new_relocs + ix + isec->reloc_count;
-
-	  irel->r_info = ELF32_R_INFO (0, R_PPC_NONE);
-	}
-      if (internal_relocs != elf_section_data (isec)->relocs)
-	free (internal_relocs);
-      elf_section_data (isec)->relocs = new_relocs;
+      memset ((char *) internal_relocs + old_size, 0, extra_size);
       isec->reloc_count += changes;
-      rel_hdr = _bfd_elf_single_rel_hdr (isec);
+      Elf_Internal_Shdr *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;
-  return TRUE;
+  return true;
 
  error_return:
   while (branch_fixups != NULL)
@@ -6656,15 +6640,13 @@ 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;
+  return false;
 }
 
 /* What to do when ld finds relocations against symbols defined in
@@ -6825,7 +6807,7 @@ write_glink_stub (struct elf_link_hash_e
 
 /* Return true if symbol is defined statically.  */
 
-static bfd_boolean
+static bool
 is_static_defined (struct elf_link_hash_entry *h)
 {
   return ((h->root.type == bfd_link_hash_defined
@@ -6843,7 +6825,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 +6843,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 +6864,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
@@ -6919,23 +6901,40 @@ _bfd_elf_ppc_at_tprel_transform (unsigne
   return insn;
 }
 
-static bfd_boolean
+static bool
 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
+static bool
 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));
 }
 
+static bool
+swap_reloc_out (bfd *obfd, Elf_Internal_Rela *rel, bfd_byte *loc, asection *s)
+{
+  if ((size_t) (loc - s->contents) >= s->size)
+    return false;
+  bfd_elf32_swap_reloca_out (obfd, rel, loc);
+  return true;
+}
+
+static bool
+count_and_swap_reloc_out (bfd *obfd, Elf_Internal_Rela *rel, asection *s)
+{
+  bfd_byte *loc = s->contents;
+  loc += s->reloc_count++ * sizeof (Elf32_External_Rela);
+  return swap_reloc_out (obfd, rel, loc, s);
+}
+
 /* The RELOCATE_SECTION function is called by the ELF backend linker
    to handle the relocations for a section.
 
@@ -6965,7 +6964,7 @@ is_insn_dq_form (unsigned int insn)
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 ppc_elf_relocate_section (bfd *output_bfd,
 			  struct bfd_link_info *info,
 			  bfd *input_bfd,
@@ -6984,9 +6983,9 @@ ppc_elf_relocate_section (bfd *output_bf
   Elf_Internal_Rela outrel;
   asection *got2;
   bfd_vma *local_got_offsets;
-  bfd_boolean ret = TRUE;
+  bool ret = true;
   bfd_vma d_offset = (bfd_big_endian (input_bfd) ? 2 : 0);
-  bfd_boolean is_vxworks_tls;
+  bool is_vxworks_tls;
   unsigned int picfixup_size = 0;
   struct ppc_elf_relax_info *relax_info = NULL;
 
@@ -7001,7 +7000,7 @@ ppc_elf_relocate_section (bfd *output_bf
   if (!is_ppc_elf (input_bfd))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   got2 = bfd_get_section_by_name (input_bfd, ".got2");
@@ -7016,7 +7015,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)
@@ -7036,8 +7035,8 @@ ppc_elf_relocate_section (bfd *output_bf
       unsigned long r_symndx;
       bfd_vma relocation;
       bfd_vma branch_bit, from;
-      bfd_boolean unresolved_reloc, save_unresolved_reloc;
-      bfd_boolean warned;
+      bool unresolved_reloc, save_unresolved_reloc;
+      bool warned;
       unsigned int tls_type, tls_mask, tls_gd;
       struct plt_entry **ifunc, **plt_list;
       struct reloc_howto_struct alt_howto;
@@ -7047,8 +7046,8 @@ ppc_elf_relocate_section (bfd *output_bf
       sym = NULL;
       sec = NULL;
       h = NULL;
-      unresolved_reloc = FALSE;
-      warned = FALSE;
+      unresolved_reloc = false;
+      warned = false;
       r_symndx = ELF32_R_SYM (rel->r_info);
 
       if (r_symndx < symtab_hdr->sh_info)
@@ -7061,7 +7060,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	}
       else
 	{
-	  bfd_boolean ignored;
+	  bool ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -7076,12 +7075,11 @@ ppc_elf_relocate_section (bfd *output_bf
 	  /* For relocs against symbols from removed linkonce sections,
 	     or sections discarded by a linker script, we just want the
 	     section contents zeroed.  Avoid any special processing.  */
-	  howto = NULL;
-	  if (r_type < R_PPC_max)
-	    howto = ppc_elf_howto_table[r_type];
-
-	  _bfd_clear_contents (howto, input_bfd, input_section,
-			       contents, rel->r_offset);
+	  if (r_type < ARRAY_SIZE (ppc_elf_howto_table)
+	      && ppc_elf_howto_table[r_type] != NULL)
+	    _bfd_clear_contents (ppc_elf_howto_table[r_type],
+				 input_bfd, input_section,
+				 contents, rel->r_offset);
 	  wrel->r_offset = rel->r_offset;
 	  wrel->r_info = 0;
 	  wrel->r_addend = 0;
@@ -7149,7 +7147,8 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_GOT_TPREL16:
 	case R_PPC_GOT_TPREL16_LO:
 	  if ((tls_mask & TLS_TLS) != 0
-	      && (tls_mask & TLS_TPREL) == 0)
+	      && (tls_mask & TLS_TPREL) == 0
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    {
 	      bfd_vma insn;
 
@@ -7166,7 +7165,8 @@ ppc_elf_relocate_section (bfd *output_bf
 
 	case R_PPC_TLS:
 	  if ((tls_mask & TLS_TLS) != 0
-	      && (tls_mask & TLS_TPREL) == 0)
+	      && (tls_mask & TLS_TPREL) == 0
+	      && offset_in_range (input_section, rel->r_offset, 4))
 	    {
 	      bfd_vma insn;
 
@@ -7187,13 +7187,15 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_GOT_TLSGD16_HI:
 	case R_PPC_GOT_TLSGD16_HA:
 	  tls_gd = TLS_GDIE;
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0)
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    goto tls_gdld_hi;
 	  break;
 
 	case R_PPC_GOT_TLSLD16_HI:
 	case R_PPC_GOT_TLSLD16_HA:
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0)
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    {
 	    tls_gdld_hi:
 	      if ((tls_mask & tls_gd) != 0)
@@ -7212,13 +7214,15 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_GOT_TLSGD16:
 	case R_PPC_GOT_TLSGD16_LO:
 	  tls_gd = TLS_GDIE;
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0)
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    goto tls_ldgd_opt;
 	  break;
 
 	case R_PPC_GOT_TLSLD16:
 	case R_PPC_GOT_TLSLD16_LO:
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0)
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    {
 	      unsigned int insn1, insn2;
 	      bfd_vma offset;
@@ -7245,8 +7249,9 @@ ppc_elf_relocate_section (bfd *output_bf
 		{
 		  /* IE */
 		  insn1 &= (0x1f << 21) | (0x1f << 16);
-		  insn1 |= 32 << 26;	/* lwz */
-		  if (offset != (bfd_vma) -1)
+		  insn1 |= 32u << 26;	/* lwz */
+		  if (offset != (bfd_vma) -1
+		      && offset_in_range (input_section, offset, 4))
 		    {
 		      rel[1].r_info = ELF32_R_INFO (STN_UNDEF, R_PPC_NONE);
 		      insn2 = 0x7c631214;	/* add 3,3,2 */
@@ -7279,7 +7284,8 @@ ppc_elf_relocate_section (bfd *output_bf
 		    }
 		  r_type = R_PPC_TPREL16_HA;
 		  rel->r_info = ELF32_R_INFO (r_symndx, r_type);
-		  if (offset != (bfd_vma) -1)
+		  if (offset != (bfd_vma) -1
+		      && offset_in_range (input_section, offset, 4))
 		    {
 		      rel[1].r_info = ELF32_R_INFO (r_symndx, R_PPC_TPREL16_LO);
 		      rel[1].r_offset = offset + d_offset;
@@ -7301,7 +7307,8 @@ ppc_elf_relocate_section (bfd *output_bf
 
 	case R_PPC_TLSGD:
 	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0
-	      && rel + 1 < relend)
+	      && rel + 1 < relend
+	      && offset_in_range (input_section, rel->r_offset, 4))
 	    {
 	      unsigned int insn2;
 	      bfd_vma offset = rel->r_offset;
@@ -7336,7 +7343,8 @@ ppc_elf_relocate_section (bfd *output_bf
 
 	case R_PPC_TLSLD:
 	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0
-	      && rel + 1 < relend)
+	      && rel + 1 < relend
+	      && offset_in_range (input_section, rel->r_offset, 4))
 	    {
 	      unsigned int insn2;
 
@@ -7389,48 +7397,50 @@ ppc_elf_relocate_section (bfd *output_bf
 	  /* Branch not taken prediction relocations.  */
 	case R_PPC_ADDR14_BRNTAKEN:
 	case R_PPC_REL14_BRNTAKEN:
-	  {
-	    unsigned int insn;
-
-	    insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
-	    insn &= ~BRANCH_PREDICT_BIT;
-	    insn |= branch_bit;
+	  if (offset_in_range (input_section, rel->r_offset, 4))
+	    {
+	      unsigned int insn;
 
-	    from = (rel->r_offset
-		    + input_section->output_offset
-		    + input_section->output_section->vma);
+	      insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
+	      insn &= ~BRANCH_PREDICT_BIT;
+	      insn |= branch_bit;
 
-	    /* Invert 'y' bit if not the default.  */
-	    if ((bfd_signed_vma) (relocation + rel->r_addend - from) < 0)
-	      insn ^= BRANCH_PREDICT_BIT;
+	      from = (rel->r_offset
+		      + input_section->output_offset
+		      + input_section->output_section->vma);
+
+	      /* Invert 'y' bit if not the default.  */
+	      if ((bfd_signed_vma) (relocation + rel->r_addend - from) < 0)
+		insn ^= BRANCH_PREDICT_BIT;
 
-	    bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
-	  }
+	      bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
+	    }
 	  break;
 
 	case R_PPC_PLT16_HA:
-	  {
-	    unsigned int insn;
+	  if (offset_in_range (input_section, rel->r_offset - d_offset, 4))
+	    {
+	      unsigned int insn;
 
-	    insn = bfd_get_32 (input_bfd,
-			       contents + rel->r_offset - d_offset);
-	    if ((insn & (0x3f << 26)) == 15u << 26
-		&& (insn & (0x1f << 16)) != 0)
-	      {
-		if (!bfd_link_pic (info))
-		  {
-		    /* Convert addis to lis.  */
-		    insn &= ~(0x1f << 16);
-		    bfd_put_32 (input_bfd, insn,
-				contents + rel->r_offset - d_offset);
-		  }
-	      }
-	    else if (bfd_link_pic (info))
-	      info->callbacks->einfo
-		(_("%P: %H: error: %s with unexpected instruction %x\n"),
-		 input_bfd, input_section, rel->r_offset,
-		 "R_PPC_PLT16_HA", insn);
-	  }
+	      insn = bfd_get_32 (input_bfd,
+				 contents + rel->r_offset - d_offset);
+	      if ((insn & (0x3fu << 26)) == 15u << 26
+		  && (insn & (0x1f << 16)) != 0)
+		{
+		  if (!bfd_link_pic (info))
+		    {
+		      /* Convert addis to lis.  */
+		      insn &= ~(0x1f << 16);
+		      bfd_put_32 (input_bfd, insn,
+				  contents + rel->r_offset - d_offset);
+		    }
+		}
+	      else if (bfd_link_pic (info))
+		info->callbacks->einfo
+		  (_("%P: %H: error: %s with unexpected instruction %x\n"),
+		   input_bfd, input_section, rel->r_offset,
+		   "R_PPC_PLT16_HA", insn);
+	    }
 	  break;
 	}
 
@@ -7446,11 +7456,12 @@ ppc_elf_relocate_section (bfd *output_bf
 	     variable defined in a shared library to PIC.  */
 	  unsigned int insn;
 
-	  if (r_type == R_PPC_ADDR16_HA)
+	  if (r_type == R_PPC_ADDR16_HA
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    {
 	      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;
@@ -7509,32 +7520,34 @@ ppc_elf_relocate_section (bfd *output_bf
 		   input_bfd, input_section, (uint64_t) rel->r_offset,
 		   "R_PPC_ADDR16_HA", insn);
 	    }
-	  else if (r_type == R_PPC_ADDR16_LO)
+	  else if (r_type == R_PPC_ADDR16_LO
+		   && offset_in_range (input_section,
+				       rel->r_offset - d_offset, 4))
 	    {
 	      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.  */
 		  relocation = 0;
-		  unresolved_reloc = FALSE;
+		  unresolved_reloc = false;
 		  rel->r_info = ELF32_R_INFO (0, r_type);
 		}
 	      else
@@ -7548,7 +7561,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;
 
@@ -7608,7 +7621,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		       input_bfd, input_section, rel->r_offset, sym_name);
 		}
 
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	      if (htab->plt_type == PLT_NEW
 		  || !htab->elf.dynamic_sections_created
 		  || h == NULL
@@ -7626,52 +7639,25 @@ ppc_elf_relocate_section (bfd *output_bf
       addend = rel->r_addend;
       save_unresolved_reloc = unresolved_reloc;
       howto = NULL;
-      if (r_type < R_PPC_max)
+      if (r_type < ARRAY_SIZE (ppc_elf_howto_table))
 	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)
 	{
 	default:
-	  /* xgettext:c-format */
-	  _bfd_error_handler (_("%pB: %s unsupported"),
-			      input_bfd, howto->name);
+	de_fault:
+	  if (howto)
+	    /* xgettext:c-format */
+	    _bfd_error_handler (_("%pB: %s unsupported"),
+				input_bfd, howto->name);
+	  else
+	    /* xgettext:c-format */
+	    _bfd_error_handler (_("%pB: reloc %#x unsupported"),
+				input_bfd, r_type);
 
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	  goto copy_reloc;
 
 	case R_PPC_NONE:
@@ -7749,7 +7735,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		else
 		  {
 		    indx = h->dynindx;
-		    unresolved_reloc = FALSE;
+		    unresolved_reloc = false;
 		  }
 		offp = &h->got.offset;
 	      }
@@ -7813,10 +7799,12 @@ ppc_elf_relocate_section (bfd *output_bf
 				|| !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
 			    && !(tls_ty != 0
 				 && bfd_link_executable (info)
-				 && SYMBOL_REFERENCES_LOCAL (info, h))))
+				 && SYMBOL_REFERENCES_LOCAL (info, h))
+			    && (h != NULL
+				? !bfd_is_abs_symbol (&h->root)
+				: sym->st_shndx != SHN_ABS)))
 		      {
 			asection *rsec = htab->elf.srelgot;
-			bfd_byte * loc;
 
 			if (ifunc != NULL)
 			  {
@@ -7835,11 +7823,9 @@ ppc_elf_relocate_section (bfd *output_bf
 			    outrel.r_info = ELF32_R_INFO (indx, R_PPC_DTPMOD32);
 			    if (tls_ty == (TLS_TLS | TLS_GD))
 			      {
-				loc = rsec->contents;
-				loc += (rsec->reloc_count++
-					* sizeof (Elf32_External_Rela));
-				bfd_elf32_swap_reloca_out (output_bfd,
-							   &outrel, loc);
+				BFD_ASSERT (count_and_swap_reloc_out (output_bfd,
+								      &outrel,
+								      rsec));
 				outrel.r_offset += 4;
 				outrel.r_info
 				  = ELF32_R_INFO (indx, R_PPC_DTPREL32);
@@ -7866,10 +7852,8 @@ ppc_elf_relocate_section (bfd *output_bf
 				  outrel.r_addend -= htab->elf.tls_sec->vma;
 			      }
 			  }
-			loc = rsec->contents;
-			loc += (rsec->reloc_count++
-				* sizeof (Elf32_External_Rela));
-			bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
+			BFD_ASSERT (count_and_swap_reloc_out (output_bfd,
+							      &outrel, rsec));
 		      }
 
 		    /* Init the .got section contents if we're not
@@ -7970,7 +7954,7 @@ ppc_elf_relocate_section (bfd *output_bf
 						    input_bfd,
 						    input_section,
 						    rel->r_offset,
-						    TRUE);
+						    true);
 	      goto copy_reloc;
 	    }
 	  if (h != NULL && h->type == STT_GNU_IFUNC && bfd_link_pic (info))
@@ -8006,7 +7990,8 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_TPREL16_HA:
 	  if (h != NULL
 	      && h->root.type == bfd_link_hash_undefweak
-	      && h->dynindx == -1)
+	      && h->dynindx == -1
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    {
 	      /* Make this relocation against an undefined weak symbol
 		 resolve to zero.  This is really just a tweak, since
@@ -8091,14 +8076,13 @@ 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;
 	      asection *sreloc;
 	      long indx = 0;
 
@@ -8136,7 +8120,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		{
 		  indx = h->dynindx;
 		  BFD_ASSERT (indx != -1);
-		  unresolved_reloc = FALSE;
+		  unresolved_reloc = false;
 		  outrel.r_info = ELF32_R_INFO (indx, r_type);
 		  outrel.r_addend = rel->r_addend;
 		}
@@ -8167,14 +8151,14 @@ ppc_elf_relocate_section (bfd *output_bf
 			     input_bfd, input_section, rel->r_offset,
 			     howto->name,
 			     sym_name);
-			  ret = FALSE;
+			  ret = false;
 			}
 		      else if (r_symndx == STN_UNDEF || bfd_is_abs_section (sec))
 			;
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  ret = FALSE;
+			  ret = false;
 			}
 		      else
 			{
@@ -8228,11 +8212,10 @@ ppc_elf_relocate_section (bfd *output_bf
 		    htab->maybe_local_ifunc_resolver = 1;
 		}
 	      if (sreloc == NULL)
-		return FALSE;
+		return false;
 
-	      loc = sreloc->contents;
-	      loc += sreloc->reloc_count++ * sizeof (Elf32_External_Rela);
-	      bfd_elf32_swap_reloca_out (output_bfd, &outrel, loc);
+	      BFD_ASSERT (count_and_swap_reloc_out (output_bfd, &outrel,
+						    sreloc));
 
 	      if (skip == -1)
 		goto copy_reloc;
@@ -8274,66 +8257,73 @@ ppc_elf_relocate_section (bfd *output_bf
 	  /* Fall through.  */
 
 	case R_PPC_RELAX:
-	  {
-	    const int *stub;
-	    size_t size;
-	    size_t insn_offset = rel->r_offset;
-	    unsigned int insn;
-
-	    if (bfd_link_pic (info))
-	      {
-		relocation -= (input_section->output_section->vma
-			       + input_section->output_offset
-			       + rel->r_offset - 4);
-		stub = shared_stub_entry;
-		bfd_put_32 (input_bfd, stub[0], contents + insn_offset - 12);
-		bfd_put_32 (input_bfd, stub[1], contents + insn_offset - 8);
-		bfd_put_32 (input_bfd, stub[2], contents + insn_offset - 4);
-		stub += 3;
-		size = ARRAY_SIZE (shared_stub_entry) - 3;
-	      }
-	    else
-	      {
-		stub = stub_entry;
-		size = ARRAY_SIZE (stub_entry);
-	      }
+	  if (bfd_link_pic (info)
+	      ? offset_in_range (input_section, rel->r_offset - 12,
+				 ARRAY_SIZE (shared_stub_entry) * 4)
+	      : offset_in_range (input_section, rel->r_offset,
+				 ARRAY_SIZE (stub_entry) * 4))
+	    {
+	      const int *stub;
+	      size_t size;
+	      size_t insn_offset = rel->r_offset;
+	      unsigned int insn;
 
-	    relocation += addend;
-	    if (bfd_link_relocatable (info))
-	      relocation = 0;
-
-	    /* First insn is HA, second is LO.  */
-	    insn = *stub++;
-	    insn |= ((relocation + 0x8000) >> 16) & 0xffff;
-	    bfd_put_32 (input_bfd, insn, contents + insn_offset);
-	    insn_offset += 4;
-
-	    insn = *stub++;
-	    insn |= relocation & 0xffff;
-	    bfd_put_32 (input_bfd, insn, contents + insn_offset);
-	    insn_offset += 4;
-	    size -= 2;
+	      if (bfd_link_pic (info))
+		{
+		  relocation -= (input_section->output_section->vma
+				 + input_section->output_offset
+				 + rel->r_offset - 4);
+		  stub = shared_stub_entry;
+		  bfd_put_32 (input_bfd, stub[0], contents + insn_offset - 12);
+		  bfd_put_32 (input_bfd, stub[1], contents + insn_offset - 8);
+		  bfd_put_32 (input_bfd, stub[2], contents + insn_offset - 4);
+		  stub += 3;
+		  size = ARRAY_SIZE (shared_stub_entry) - 3;
+		}
+	      else
+		{
+		  stub = stub_entry;
+		  size = ARRAY_SIZE (stub_entry);
+		}
 
-	    while (size != 0)
-	      {
-		insn = *stub++;
-		--size;
-		bfd_put_32 (input_bfd, insn, contents + insn_offset);
-		insn_offset += 4;
-	      }
+	      relocation += addend;
+	      if (bfd_link_relocatable (info))
+		relocation = 0;
 
-	    /* Rewrite the reloc and convert one of the trailing nop
-	       relocs to describe this relocation.  */
-	    BFD_ASSERT (ELF32_R_TYPE (relend[-1].r_info) == R_PPC_NONE);
-	    /* The relocs are at the bottom 2 bytes */
-	    wrel->r_offset = rel->r_offset + d_offset;
-	    wrel->r_info = ELF32_R_INFO (r_symndx, R_PPC_ADDR16_HA);
-	    wrel->r_addend = rel->r_addend;
-	    memmove (wrel + 1, wrel, (relend - wrel - 1) * sizeof (*wrel));
-	    wrel++, rel++;
-	    wrel->r_offset += 4;
-	    wrel->r_info = ELF32_R_INFO (r_symndx, R_PPC_ADDR16_LO);
-	  }
+	      /* First insn is HA, second is LO.  */
+	      insn = *stub++;
+	      insn |= ((relocation + 0x8000) >> 16) & 0xffff;
+	      bfd_put_32 (input_bfd, insn, contents + insn_offset);
+	      insn_offset += 4;
+
+	      insn = *stub++;
+	      insn |= relocation & 0xffff;
+	      bfd_put_32 (input_bfd, insn, contents + insn_offset);
+	      insn_offset += 4;
+	      size -= 2;
+
+	      while (size != 0)
+		{
+		  insn = *stub++;
+		  --size;
+		  bfd_put_32 (input_bfd, insn, contents + insn_offset);
+		  insn_offset += 4;
+		}
+
+	      /* Rewrite the reloc and convert one of the trailing nop
+		 relocs to describe this relocation.  */
+	      BFD_ASSERT (ELF32_R_TYPE (relend[-1].r_info) == R_PPC_NONE);
+	      /* The relocs are at the bottom 2 bytes */
+	      wrel->r_offset = rel->r_offset + d_offset;
+	      wrel->r_info = ELF32_R_INFO (r_symndx, R_PPC_ADDR16_HA);
+	      wrel->r_addend = rel->r_addend;
+	      memmove (wrel + 1, wrel, (relend - wrel - 1) * sizeof (*wrel));
+	      wrel++, rel++;
+	      wrel->r_offset += 4;
+	      wrel->r_info = ELF32_R_INFO (r_symndx, R_PPC_ADDR16_LO);
+	    }
+	  else
+	    goto de_fault;
 	  continue;
 
 	  /* Indirect .sdata relocation.  */
@@ -8341,7 +8331,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	  BFD_ASSERT (htab->sdata[0].section != NULL);
 	  if (!is_static_defined (htab->sdata[0].sym))
 	    {
-	      unresolved_reloc = TRUE;
+	      unresolved_reloc = true;
 	      break;
 	    }
 	  relocation
@@ -8355,7 +8345,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	  BFD_ASSERT (htab->sdata[1].section != NULL);
 	  if (!is_static_defined (htab->sdata[1].sym))
 	    {
-	      unresolved_reloc = TRUE;
+	      unresolved_reloc = true;
 	      break;
 	    }
 	  relocation
@@ -8371,7 +8361,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_TOC16:			/* phony GOT16 relocations */
 	  if (sec == NULL || sec->output_section == NULL)
 	    {
-	      unresolved_reloc = TRUE;
+	      unresolved_reloc = true;
 	      break;
 	    }
 	  BFD_ASSERT (strcmp (bfd_section_name (sec), ".got") == 0
@@ -8398,7 +8388,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		{
 		  /* Relocation is to the entry for this symbol in the
 		     procedure linkage table.  */
-		  unresolved_reloc = FALSE;
+		  unresolved_reloc = false;
 		  if (htab->plt_type == PLT_NEW)
 		    relocation = (htab->glink->output_section->vma
 				  + htab->glink->output_offset
@@ -8433,7 +8423,7 @@ ppc_elf_relocate_section (bfd *output_bf
 						 + symtab_hdr->sh_info);
 	      plt_list = local_plt + r_symndx;
 	    }
-	  unresolved_reloc = TRUE;
+	  unresolved_reloc = true;
 	  if (plt_list != NULL)
 	    {
 	      struct plt_entry *ent;
@@ -8444,11 +8434,9 @@ ppc_elf_relocate_section (bfd *output_bf
 		{
 		  asection *plt;
 
-		  unresolved_reloc = FALSE;
+		  unresolved_reloc = false;
 		  plt = htab->elf.splt;
-		  if (!htab->elf.dynamic_sections_created
-		      || h == NULL
-		      || h->dynindx == -1)
+		  if (use_local_plt (info, h))
 		    {
 		      if (ifunc != NULL)
 			plt = htab->elf.iplt;
@@ -8485,7 +8473,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		|| sec->output_section == NULL
 		|| !is_static_defined (sda))
 	      {
-		unresolved_reloc = TRUE;
+		unresolved_reloc = true;
 		break;
 	      }
 	    addend -= SYM_VAL (sda);
@@ -8516,7 +8504,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		|| sec->output_section == NULL
 		|| !is_static_defined (sda))
 	      {
-		unresolved_reloc = TRUE;
+		unresolved_reloc = true;
 		break;
 	      }
 	    addend -= SYM_VAL (sda);
@@ -8539,151 +8527,164 @@ ppc_elf_relocate_section (bfd *output_bf
 
 	case R_PPC_VLE_LO16A:
 	  relocation = relocation + addend;
-	  ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-			       contents + rel->r_offset, relocation,
-			       split16a_type, htab->params->vle_reloc_fixup);
-	  goto copy_reloc;
+	  r = ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
+				   contents + rel->r_offset, relocation,
+				   split16a_type,
+				   htab->params->vle_reloc_fixup);
+	  goto report_reloc;
 
 	case R_PPC_VLE_LO16D:
 	  relocation = relocation + addend;
-	  ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-			       contents + rel->r_offset, relocation,
-			       split16d_type, htab->params->vle_reloc_fixup);
-	  goto copy_reloc;
+	  r = ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
+				   contents + rel->r_offset, relocation,
+				   split16d_type,
+				   htab->params->vle_reloc_fixup);
+	  goto report_reloc;
 
 	case R_PPC_VLE_HI16A:
 	  relocation = (relocation + addend) >> 16;
-	  ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-			       contents + rel->r_offset, relocation,
-			       split16a_type, htab->params->vle_reloc_fixup);
-	  goto copy_reloc;
+	  r = ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
+				   contents + rel->r_offset, relocation,
+				   split16a_type,
+				   htab->params->vle_reloc_fixup);
+	  goto report_reloc;
 
 	case R_PPC_VLE_HI16D:
 	  relocation = (relocation + addend) >> 16;
-	  ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-			       contents + rel->r_offset, relocation,
-			       split16d_type, htab->params->vle_reloc_fixup);
-	  goto copy_reloc;
+	  r = ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
+				   contents + rel->r_offset, relocation,
+				   split16d_type,
+				   htab->params->vle_reloc_fixup);
+	  goto report_reloc;
 
 	case R_PPC_VLE_HA16A:
 	  relocation = (relocation + addend + 0x8000) >> 16;
-	  ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-			       contents + rel->r_offset, relocation,
-			       split16a_type, htab->params->vle_reloc_fixup);
-	  goto copy_reloc;
+	  r = ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
+				   contents + rel->r_offset, relocation,
+				   split16a_type,
+				   htab->params->vle_reloc_fixup);
+	  goto report_reloc;
 
 	case R_PPC_VLE_HA16D:
 	  relocation = (relocation + addend + 0x8000) >> 16;
-	  ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-			       contents + rel->r_offset, relocation,
-			       split16d_type, htab->params->vle_reloc_fixup);
-	  goto copy_reloc;
+	  r = ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
+				   contents + rel->r_offset, relocation,
+				   split16d_type,
+				   htab->params->vle_reloc_fixup);
+	  goto report_reloc;
 
 	  /* Relocate against either _SDA_BASE_, _SDA2_BASE_, or 0.  */
 	case R_PPC_EMB_SDA21:
 	case R_PPC_VLE_SDA21:
 	case R_PPC_EMB_RELSDA:
 	case R_PPC_VLE_SDA21_LO:
-	  {
-	    const char *name;
-	    int reg;
-	    unsigned int insn;
-	    struct elf_link_hash_entry *sda = NULL;
+	  if (!offset_in_range (input_section, rel->r_offset, 4))
+	    {
+	      r = bfd_reloc_outofrange;
+	      goto report_reloc;
+	    }
+	  else
+	    {
+	      const char *name;
+	      int reg;
+	      unsigned int insn;
+	      struct elf_link_hash_entry *sda = NULL;
 
-	    if (sec == NULL || sec->output_section == NULL)
-	      {
-		unresolved_reloc = TRUE;
-		break;
-	      }
+	      if (sec == NULL || sec->output_section == NULL)
+		{
+		  unresolved_reloc = true;
+		  break;
+		}
 
-	    name = bfd_section_name (sec->output_section);
-	    if (strcmp (name, ".sdata") == 0
-		|| strcmp (name, ".sbss") == 0)
-	      {
-		reg = 13;
-		sda = htab->sdata[0].sym;
-	      }
-	    else if (strcmp (name, ".sdata2") == 0
-		     || strcmp (name, ".sbss2") == 0)
-	      {
-		reg = 2;
-		sda = htab->sdata[1].sym;
-	      }
-	    else if (strcmp (name, ".PPC.EMB.sdata0") == 0
-		     || strcmp (name, ".PPC.EMB.sbss0") == 0)
-	      {
-		reg = 0;
-	      }
-	    else
-	      {
-		_bfd_error_handler
-		  /* xgettext:c-format */
-		  (_("%pB: the target (%s) of a %s relocation is "
-		     "in the wrong output section (%s)"),
-		   input_bfd,
-		   sym_name,
-		   howto->name,
-		   name);
+	      name = bfd_section_name (sec->output_section);
+	      if (strcmp (name, ".sdata") == 0
+		  || strcmp (name, ".sbss") == 0)
+		{
+		  reg = 13;
+		  sda = htab->sdata[0].sym;
+		}
+	      else if (strcmp (name, ".sdata2") == 0
+		       || strcmp (name, ".sbss2") == 0)
+		{
+		  reg = 2;
+		  sda = htab->sdata[1].sym;
+		}
+	      else if (strcmp (name, ".PPC.EMB.sdata0") == 0
+		       || strcmp (name, ".PPC.EMB.sbss0") == 0)
+		{
+		  reg = 0;
+		}
+	      else
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB: the target (%s) of a %s relocation is "
+		       "in the wrong output section (%s)"),
+		     input_bfd,
+		     sym_name,
+		     howto->name,
+		     name);
+
+		  bfd_set_error (bfd_error_bad_value);
+		  ret = false;
+		  goto copy_reloc;
+		}
 
-		bfd_set_error (bfd_error_bad_value);
-		ret = FALSE;
-		goto copy_reloc;
-	      }
+	      if (sda != NULL)
+		{
+		  if (!is_static_defined (sda))
+		    {
+		      unresolved_reloc = true;
+		      break;
+		    }
+		  addend -= SYM_VAL (sda);
+		}
 
-	    if (sda != NULL)
-	      {
-		if (!is_static_defined (sda))
-		  {
-		    unresolved_reloc = TRUE;
-		    break;
-		  }
-		addend -= SYM_VAL (sda);
-	      }
+	      if (r_type == R_PPC_EMB_RELSDA)
+		break;
 
-	    if (r_type == R_PPC_EMB_RELSDA)
-	      break;
+	      /* The PowerPC Embedded Application Binary Interface
+		 version 1.0 insanely chose to specify R_PPC_EMB_SDA21
+		 operating on a 24-bit field at r_offset.  GNU as and
+		 GNU ld have always assumed R_PPC_EMB_SDA21 operates on
+		 a 32-bit bit insn at r_offset.  Cope with object file
+		 producers that possibly comply with the EABI in
+		 generating an odd r_offset for big-endian objects.  */
+	      if (r_type == R_PPC_EMB_SDA21)
+		rel->r_offset &= ~1;
 
-	    /* The PowerPC Embedded Application Binary Interface
-	       version 1.0 insanely chose to specify R_PPC_EMB_SDA21
-	       operating on a 24-bit field at r_offset.  GNU as and
-	       GNU ld have always assumed R_PPC_EMB_SDA21 operates on
-	       a 32-bit bit insn at r_offset.  Cope with object file
-	       producers that possibly comply with the EABI in
-	       generating an odd r_offset for big-endian objects.  */
-	    if (r_type == R_PPC_EMB_SDA21)
-	      rel->r_offset &= ~1;
-
-	    insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
-	    if (reg == 0
-		&& (r_type == R_PPC_VLE_SDA21
-		    || r_type == R_PPC_VLE_SDA21_LO))
-	      {
-		relocation = relocation + addend;
-		addend = 0;
+	      insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
+	      if (reg == 0
+		  && (r_type == R_PPC_VLE_SDA21
+		      || r_type == R_PPC_VLE_SDA21_LO))
+		{
+		  relocation = relocation + addend;
+		  addend = 0;
 
-		/* Force e_li insn, keeping RT from original insn.  */
-		insn &= 0x1f << 21;
-		insn |= 28u << 26;
-
-		/* We have an li20 field, bits 17..20, 11..15, 21..31.  */
-		/* Top 4 bits of value to 17..20.  */
-		insn |= (relocation & 0xf0000) >> 5;
-		/* Next 5 bits of the value to 11..15.  */
-		insn |= (relocation & 0xf800) << 5;
-		/* And the final 11 bits of the value to bits 21 to 31.  */
-		insn |= relocation & 0x7ff;
-
-		bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
-
-		if (r_type == R_PPC_VLE_SDA21
-		    && ((relocation + 0x80000) & 0xffffffff) > 0x100000)
-		  goto overflow;
-		goto copy_reloc;
-	      }
-	    /* Fill in register field.  */
-	    insn = (insn & ~RA_REGISTER_MASK) | (reg << RA_REGISTER_SHIFT);
-	    bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
-	  }
+		  /* Force e_li insn, keeping RT from original insn.  */
+		  insn &= 0x1f << 21;
+		  insn |= 28u << 26;
+
+		  /* We have an li20 field, bits 17..20, 11..15, 21..31.  */
+		  /* Top 4 bits of value to 17..20.  */
+		  insn |= (relocation & 0xf0000) >> 5;
+		  /* Next 5 bits of the value to 11..15.  */
+		  insn |= (relocation & 0xf800) << 5;
+		  /* And the final 11 bits of the value to bits 21 to 31.  */
+		  insn |= relocation & 0x7ff;
+
+		  bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
+
+		  r = bfd_reloc_ok;
+		  if (r_type == R_PPC_VLE_SDA21
+		      && ((relocation + 0x80000) & 0xffffffff) > 0x100000)
+		    r = bfd_reloc_overflow;
+		  goto report_reloc;
+		}
+	      /* Fill in register field.  */
+	      insn = (insn & ~RA_REGISTER_MASK) | (reg << RA_REGISTER_SHIFT);
+	      bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
+	    }
 	  break;
 
 	case R_PPC_VLE_SDAREL_LO16A:
@@ -8692,95 +8693,113 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_VLE_SDAREL_HI16D:
 	case R_PPC_VLE_SDAREL_HA16A:
 	case R_PPC_VLE_SDAREL_HA16D:
-	  {
-	    bfd_vma value;
-	    const char *name;
-	    struct elf_link_hash_entry *sda = NULL;
-
-	    if (sec == NULL || sec->output_section == NULL)
-	      {
-		unresolved_reloc = TRUE;
-		break;
-	      }
+	  if (!offset_in_range (input_section, rel->r_offset, 4))
+	    r = bfd_reloc_outofrange;
+	  else
+	    {
+	      bfd_vma value;
+	      const char *name;
+	      struct elf_link_hash_entry *sda = NULL;
 
-	    name = bfd_section_name (sec->output_section);
-	    if (strcmp (name, ".sdata") == 0
-		|| strcmp (name, ".sbss") == 0)
-	      sda = htab->sdata[0].sym;
-	    else if (strcmp (name, ".sdata2") == 0
-		     || strcmp (name, ".sbss2") == 0)
-	      sda = htab->sdata[1].sym;
-	    else
-	      {
-		_bfd_error_handler
-		  /* xgettext:c-format */
-		  (_("%pB: the target (%s) of a %s relocation is "
-		     "in the wrong output section (%s)"),
-		   input_bfd,
-		   sym_name,
-		   howto->name,
-		   name);
+	      if (sec == NULL || sec->output_section == NULL)
+		{
+		  unresolved_reloc = true;
+		  break;
+		}
 
-		bfd_set_error (bfd_error_bad_value);
-		ret = FALSE;
-		goto copy_reloc;
-	      }
+	      name = bfd_section_name (sec->output_section);
+	      if (strcmp (name, ".sdata") == 0
+		  || strcmp (name, ".sbss") == 0)
+		sda = htab->sdata[0].sym;
+	      else if (strcmp (name, ".sdata2") == 0
+		       || strcmp (name, ".sbss2") == 0)
+		sda = htab->sdata[1].sym;
+	      else
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB: the target (%s) of a %s relocation is "
+		       "in the wrong output section (%s)"),
+		     input_bfd,
+		     sym_name,
+		     howto->name,
+		     name);
+
+		  bfd_set_error (bfd_error_bad_value);
+		  ret = false;
+		  goto copy_reloc;
+		}
 
-	    if (sda == NULL || !is_static_defined (sda))
-	      {
-		unresolved_reloc = TRUE;
-		break;
-	      }
-	    value = relocation + addend - SYM_VAL (sda);
+	      if (sda == NULL || !is_static_defined (sda))
+		{
+		  unresolved_reloc = true;
+		  break;
+		}
+	      value = relocation + addend - SYM_VAL (sda);
 
-	    if (r_type == R_PPC_VLE_SDAREL_LO16A)
-	      ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-				   contents + rel->r_offset, value,
-				   split16a_type,
-				   htab->params->vle_reloc_fixup);
-	    else if (r_type == R_PPC_VLE_SDAREL_LO16D)
-	      ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-				   contents + rel->r_offset, value,
-				   split16d_type,
-				   htab->params->vle_reloc_fixup);
-	    else if (r_type == R_PPC_VLE_SDAREL_HI16A)
-	      {
-		value = value >> 16;
-		ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-				     contents + rel->r_offset, value,
-				     split16a_type,
-				     htab->params->vle_reloc_fixup);
-	      }
-	    else if (r_type == R_PPC_VLE_SDAREL_HI16D)
-	      {
-		value = value >> 16;
-		ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-				     contents + rel->r_offset, value,
-				     split16d_type,
-				     htab->params->vle_reloc_fixup);
-	      }
-	    else if (r_type == R_PPC_VLE_SDAREL_HA16A)
-	      {
-		value = (value + 0x8000) >> 16;
-		ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-				     contents + rel->r_offset, value,
-				     split16a_type,
-				     htab->params->vle_reloc_fixup);
-	      }
-	    else if (r_type == R_PPC_VLE_SDAREL_HA16D)
-	      {
-		value = (value + 0x8000) >> 16;
-		ppc_elf_vle_split16 (input_bfd, input_section, rel->r_offset,
-				     contents + rel->r_offset, value,
-				     split16d_type,
-				     htab->params->vle_reloc_fixup);
-	      }
-	  }
-	  goto copy_reloc;
+	      if (r_type == R_PPC_VLE_SDAREL_LO16A)
+		r = ppc_elf_vle_split16 (input_bfd, input_section,
+					 rel->r_offset,
+					 contents + rel->r_offset, value,
+					 split16a_type,
+					 htab->params->vle_reloc_fixup);
+	      else if (r_type == R_PPC_VLE_SDAREL_LO16D)
+		r = ppc_elf_vle_split16 (input_bfd, input_section,
+					 rel->r_offset,
+					 contents + rel->r_offset, value,
+					 split16d_type,
+					 htab->params->vle_reloc_fixup);
+	      else if (r_type == R_PPC_VLE_SDAREL_HI16A)
+		{
+		  value = value >> 16;
+		  r = ppc_elf_vle_split16 (input_bfd, input_section,
+					   rel->r_offset,
+					   contents + rel->r_offset, value,
+					   split16a_type,
+					   htab->params->vle_reloc_fixup);
+		}
+	      else if (r_type == R_PPC_VLE_SDAREL_HI16D)
+		{
+		  value = value >> 16;
+		  r = ppc_elf_vle_split16 (input_bfd, input_section,
+					   rel->r_offset,
+					   contents + rel->r_offset, value,
+					   split16d_type,
+					   htab->params->vle_reloc_fixup);
+		}
+	      else if (r_type == R_PPC_VLE_SDAREL_HA16A)
+		{
+		  value = (value + 0x8000) >> 16;
+		  r = ppc_elf_vle_split16 (input_bfd, input_section,
+					   rel->r_offset,
+					   contents + rel->r_offset, value,
+					   split16a_type,
+					   htab->params->vle_reloc_fixup);
+		}
+	      else if (r_type == R_PPC_VLE_SDAREL_HA16D)
+		{
+		  value = (value + 0x8000) >> 16;
+		  r = ppc_elf_vle_split16 (input_bfd, input_section,
+					   rel->r_offset,
+					   contents + rel->r_offset, value,
+					   split16d_type,
+					   htab->params->vle_reloc_fixup);
+		}
+	      else
+		abort ();
+	    }
+	  goto report_reloc;
 
 	case R_PPC_VLE_ADDR20:
-	  ppc_elf_vle_split20 (output_bfd, contents + rel->r_offset, relocation);
-	  continue;
+	  if (!offset_in_range (input_section, rel->r_offset, 4))
+	    r = bfd_reloc_outofrange;
+	  else
+	    {
+	      ppc_elf_vle_split20 (output_bfd, contents + rel->r_offset,
+				   relocation);
+	      r = bfd_reloc_ok;
+	    }
+	  goto report_reloc;
 
 	  /* Relocate against the beginning of the section.  */
 	case R_PPC_SECTOFF:
@@ -8789,7 +8808,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_SECTOFF_HA:
 	  if (sec == NULL || sec->output_section == NULL)
 	    {
-	      unresolved_reloc = TRUE;
+	      unresolved_reloc = true;
 	      break;
 	    }
 	  addend -= sec->output_section->vma;
@@ -8822,7 +8841,7 @@ ppc_elf_relocate_section (bfd *output_bf
 			      input_bfd, howto->name);
 
 	  bfd_set_error (bfd_error_invalid_operation);
-	  ret = FALSE;
+	  ret = false;
 	  goto copy_reloc;
 	}
 
@@ -8831,16 +8850,49 @@ ppc_elf_relocate_section (bfd *output_bf
 	default:
 	  break;
 
+	case R_PPC_TPREL16_HA:
+	  if (htab->do_tls_opt
+	      && relocation + addend + 0x8000 < 0x10000
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
+
+	    {
+	      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
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
+	    {
+	      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)
 	    {
-	      bfd_byte *p = contents + rel->r_offset;
-	      unsigned int insn = bfd_get_32 (input_bfd, p);
-	      insn &= 1;
-	      bfd_put_32 (input_bfd, B | insn, p);
-	      unresolved_reloc = save_unresolved_reloc;
-	      r_type = R_PPC_REL24;
-	      howto = ppc_elf_howto_table[r_type];
+	      if (offset_in_range (input_section, rel->r_offset, 4))
+		{
+		  bfd_byte *p = contents + rel->r_offset;
+		  unsigned int insn = bfd_get_32 (input_bfd, p);
+		  insn &= 1;
+		  bfd_put_32 (input_bfd, B | insn, p);
+		  unresolved_reloc = save_unresolved_reloc;
+		  r_type = R_PPC_REL24;
+		  howto = ppc_elf_howto_table[r_type];
+		}
 	    }
 	  else if (htab->plt_type != PLT_NEW)
 	    info->callbacks->einfo
@@ -8854,11 +8906,14 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_PLT16_LO:
 	  if (unresolved_reloc)
 	    {
-	      bfd_byte *p = contents + (rel->r_offset & ~3);
-	      bfd_put_32 (input_bfd, NOP, p);
-	      unresolved_reloc = FALSE;
-	      r_type = R_PPC_NONE;
-	      howto = ppc_elf_howto_table[r_type];
+	      if (offset_in_range (input_section, rel->r_offset & ~3, 4))
+		{
+		  bfd_byte *p = contents + (rel->r_offset & ~3);
+		  bfd_put_32 (input_bfd, NOP, p);
+		  unresolved_reloc = false;
+		  r_type = R_PPC_NONE;
+		  howto = ppc_elf_howto_table[r_type];
+		}
 	    }
 	  else if (htab->plt_type != PLT_NEW)
 	    info->callbacks->einfo
@@ -8920,36 +8975,37 @@ ppc_elf_relocate_section (bfd *output_bf
 	case R_PPC_GOT_DTPREL16_LO:
 	case R_PPC_GOT_TPREL16:
 	case R_PPC_GOT_TPREL16_LO:
-	  {
-	    /* The 32-bit ABI lacks proper relocations to deal with
-	       certain 64-bit instructions.  Prevent damage to bits
-	       that make up part of the insn opcode.  */
-	    unsigned int insn, mask, lobit;
-
-	    insn = bfd_get_32 (input_bfd,
-			       contents + rel->r_offset - d_offset);
-	    mask = 0;
-	    if (is_insn_ds_form (insn))
-	      mask = 3;
-	    else if (is_insn_dq_form (insn))
-	      mask = 15;
-	    else
-	      break;
-	    relocation += addend;
-	    addend = insn & mask;
-	    lobit = mask & relocation;
-	    if (lobit != 0)
-	      {
-		relocation ^= lobit;
-		info->callbacks->einfo
-		  /* xgettext:c-format */
-		  (_("%H: error: %s against `%s' not a multiple of %u\n"),
-		   input_bfd, input_section, rel->r_offset,
-		   howto->name, sym_name, mask + 1);
-		bfd_set_error (bfd_error_bad_value);
-		ret = FALSE;
-	      }
-	  }
+	  if (offset_in_range (input_section, rel->r_offset - d_offset, 4))
+	    {
+	      /* The 32-bit ABI lacks proper relocations to deal with
+		 certain 64-bit instructions.  Prevent damage to bits
+		 that make up part of the insn opcode.  */
+	      unsigned int insn, mask, lobit;
+
+	      insn = bfd_get_32 (input_bfd,
+				 contents + rel->r_offset - d_offset);
+	      mask = 0;
+	      if (is_insn_ds_form (insn))
+		mask = 3;
+	      else if (is_insn_dq_form (insn))
+		mask = 15;
+	      else
+		break;
+	      relocation += addend;
+	      addend = insn & mask;
+	      lobit = mask & relocation;
+	      if (lobit != 0)
+		{
+		  relocation ^= lobit;
+		  info->callbacks->einfo
+		    /* xgettext:c-format */
+		    (_("%H: error: %s against `%s' not a multiple of %u\n"),
+		     input_bfd, input_section, rel->r_offset,
+		     howto->name, sym_name, mask + 1);
+		  bfd_set_error (bfd_error_bad_value);
+		  ret = false;
+		}
+	    }
 	  break;
 	}
 
@@ -8976,7 +9032,7 @@ ppc_elf_relocate_section (bfd *output_bf
 	     input_bfd, input_section, rel->r_offset,
 	     howto->name,
 	     sym_name);
-	  ret = FALSE;
+	  ret = false;
 	}
 
       /* 16-bit fields in insns mostly have signed values, but a
@@ -8984,7 +9040,8 @@ ppc_elf_relocate_section (bfd *output_bf
 	 have different reloc types.  */
       if (howto->complain_on_overflow != complain_overflow_dont
 	  && howto->dst_mask == 0xffff
-	  && (input_section->flags & SEC_CODE) != 0)
+	  && (input_section->flags & SEC_CODE) != 0
+	  && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	{
 	  enum complain_overflow complain = complain_overflow_signed;
 
@@ -8993,11 +9050,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)
@@ -9011,7 +9068,7 @@ ppc_elf_relocate_section (bfd *output_bf
       if (r_type == R_PPC_REL16DX_HA)
 	{
 	  /* Split field reloc isn't handled by _bfd_final_link_relocate.  */
-	  if (rel->r_offset + 4 > input_section->size)
+	  if (offset_in_range (input_section, rel->r_offset, 4))
 	    r = bfd_reloc_outofrange;
 	  else
 	    {
@@ -9033,11 +9090,11 @@ ppc_elf_relocate_section (bfd *output_bf
 	r = _bfd_final_link_relocate (howto, input_bfd, input_section, contents,
 				      rel->r_offset, relocation, addend);
 
+    report_reloc:
       if (r != bfd_reloc_ok)
 	{
 	  if (r == bfd_reloc_overflow)
 	    {
-	    overflow:
 	      /* On code like "if (foo) foo();" don't report overflow
 		 on a branch to zero when foo is undefined.  */
 	      if (!warned
@@ -9056,7 +9113,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		(_("%H: %s reloc against `%s': error %d\n"),
 		 input_bfd, input_section, rel->r_offset,
 		 howto->name, sym_name, (int) r);
-	      ret = FALSE;
+	      ret = false;
 	    }
 	}
     copy_reloc:
@@ -9071,15 +9128,6 @@ ppc_elf_relocate_section (bfd *output_bf
 
       rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section);
       rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
-      if (rel_hdr->sh_size == 0)
-	{
-	  /* It is too late to remove an empty reloc section.  Leave
-	     one NONE reloc.
-	     ??? What is wrong with an empty section???  */
-	  rel_hdr->sh_size = rel_hdr->sh_entsize;
-	  deleted -= 1;
-	  wrel++;
-	}
       relend = wrel;
       rel_hdr = _bfd_elf_single_rel_hdr (input_section);
       rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
@@ -9141,13 +9189,13 @@ ppc_elf_relocate_section (bfd *output_bf
 	{
 	  bfd_vma offset = addr - start_addr;
 	  Elf_Internal_Rela *lo, *hi;
-	  bfd_boolean is_data;
+	  bool is_data;
 	  bfd_vma patch_off, patch_addr;
 	  unsigned int insn;
 
 	  /* Do we have a data reloc at this offset?  If so, leave
 	     the word alone.  */
-	  is_data = FALSE;
+	  is_data = false;
 	  lo = relocs;
 	  hi = relend;
 	  rel = NULL;
@@ -9166,7 +9214,7 @@ ppc_elf_relocate_section (bfd *output_bf
 		    case R_PPC_UADDR32:
 		    case R_PPC_REL32:
 		    case R_PPC_ADDR30:
-		      is_data = TRUE;
+		      is_data = true;
 		      break;
 		    default:
 		      break;
@@ -9221,10 +9269,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 +9356,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;
@@ -9387,18 +9435,20 @@ ppc_elf_relocate_section (bfd *output_bf
 
 /* Write out the PLT relocs and entries for H.  */
 
-static bfd_boolean
+static bool
 write_global_sym_plt (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info = (struct bfd_link_info *) inf;
   struct ppc_elf_link_hash_table *htab = ppc_elf_hash_table (info);
   struct plt_entry *ent;
-  bfd_boolean doneone;
+  bool doneone;
 
-  doneone = FALSE;
+  doneone = false;
   for (ent = h->plt.plist; ent != NULL; ent = ent->next)
     if (ent->plt.offset != (bfd_vma) -1)
       {
+	bool dyn = !use_local_plt (info, h);
+
 	if (!doneone)
 	  {
 	    Elf_Internal_Rela rela;
@@ -9407,9 +9457,7 @@ write_global_sym_plt (struct elf_link_ha
 	    asection *plt = htab->elf.splt;
 	    asection *relplt = htab->elf.srelplt;
 
-	    if (htab->plt_type == PLT_NEW
-		|| !htab->elf.dynamic_sections_created
-		|| h->dynindx == -1)
+	    if (htab->plt_type == PLT_NEW || !dyn)
 	      reloc_index = ent->plt.offset / 4;
 	    else
 	      {
@@ -9422,9 +9470,7 @@ write_global_sym_plt (struct elf_link_ha
 
 	    /* This symbol has an entry in the procedure linkage table.
 	       Set it up.  */
-	    if (htab->plt_type == PLT_VXWORKS
-		&& htab->elf.dynamic_sections_created
-		&& h->dynindx != -1)
+	    if (htab->plt_type == PLT_VXWORKS && dyn)
 	      {
 		bfd_vma got_offset;
 		const bfd_vma *plt_entry;
@@ -9510,7 +9556,8 @@ write_global_sym_plt (struct elf_link_ha
 		    rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx,
 						R_PPC_ADDR16_HA);
 		    rela.r_addend = got_offset;
-		    bfd_elf32_swap_reloca_out (info->output_bfd, &rela, loc);
+		    BFD_ASSERT (swap_reloc_out (info->output_bfd, &rela, loc,
+						htab->srelplt2));
 		    loc += sizeof (Elf32_External_Rela);
 
 		    /* Provide the @l relocation for the second instruction.  */
@@ -9520,7 +9567,8 @@ write_global_sym_plt (struct elf_link_ha
 		    rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx,
 						R_PPC_ADDR16_LO);
 		    rela.r_addend = got_offset;
-		    bfd_elf32_swap_reloca_out (info->output_bfd, &rela, loc);
+		    BFD_ASSERT (swap_reloc_out (info->output_bfd, &rela, loc,
+						htab->srelplt2));
 		    loc += sizeof (Elf32_External_Rela);
 
 		    /* Provide a relocation for the GOT entry corresponding to this
@@ -9531,7 +9579,8 @@ write_global_sym_plt (struct elf_link_ha
 		    rela.r_info = ELF32_R_INFO (htab->elf.hplt->indx,
 						R_PPC_ADDR32);
 		    rela.r_addend = ent->plt.offset + 16;
-		    bfd_elf32_swap_reloca_out (info->output_bfd, &rela, loc);
+		    BFD_ASSERT (swap_reloc_out (info->output_bfd, &rela, loc,
+						htab->srelplt2));
 		  }
 
 		/* VxWorks uses non-standard semantics for R_PPC_JMP_SLOT.
@@ -9547,8 +9596,7 @@ write_global_sym_plt (struct elf_link_ha
 	    else
 	      {
 		rela.r_addend = 0;
-		if (!htab->elf.dynamic_sections_created
-		    || h->dynindx == -1)
+		if (!dyn)
 		  {
 		    if (h->type == STT_GNU_IFUNC)
 		      {
@@ -9577,9 +9625,7 @@ write_global_sym_plt (struct elf_link_ha
 				     + plt->output_offset
 				     + ent->plt.offset);
 
-		    if (htab->plt_type == PLT_OLD
-			|| !htab->elf.dynamic_sections_created
-			|| h->dynindx == -1)
+		    if (htab->plt_type == PLT_OLD || !dyn)
 		      {
 			/* We don't need to fill in the .plt.  The ppc dynamic
 			   linker will fill it in.  */
@@ -9598,8 +9644,7 @@ write_global_sym_plt (struct elf_link_ha
 	    if (relplt != NULL)
 	      {
 		/* Fill in the entry in the .rela.plt section.  */
-		if (!htab->elf.dynamic_sections_created
-		    || h->dynindx == -1)
+		if (!dyn)
 		  {
 		    if (h->type == STT_GNU_IFUNC)
 		      rela.r_info = ELF32_R_INFO (0, R_PPC_IRELATIVE);
@@ -9617,20 +9662,18 @@ write_global_sym_plt (struct elf_link_ha
 		    if (h->type == STT_GNU_IFUNC && is_static_defined (h))
 		      htab->maybe_local_ifunc_resolver = 1;
 		  }
-		bfd_elf32_swap_reloca_out (info->output_bfd, &rela, loc);
+		BFD_ASSERT (swap_reloc_out (info->output_bfd, &rela,
+					    loc, relplt));
 	      }
-	    doneone = TRUE;
+	    doneone = true;
 	  }
 
-	if (htab->plt_type == PLT_NEW
-	    || !htab->elf.dynamic_sections_created
-	    || h->dynindx == -1)
+	if (htab->plt_type == PLT_NEW || !dyn)
 	  {
 	    unsigned char *p;
 	    asection *plt = htab->elf.splt;
 
-	    if (!htab->elf.dynamic_sections_created
-		|| h->dynindx == -1)
+	    if (!dyn)
 	      {
 		if (h->type == STT_GNU_IFUNC)
 		  plt = htab->elf.iplt;
@@ -9648,19 +9691,19 @@ write_global_sym_plt (struct elf_link_ha
 	else
 	  break;
       }
-  return TRUE;
+  return true;
 }
 
 /* Finish up PLT handling.  */
 
-bfd_boolean
+bool
 ppc_finish_symbols (struct bfd_link_info *info)
 {
   struct ppc_elf_link_hash_table *htab = ppc_elf_hash_table (info);
   bfd *ibfd;
 
   if (!htab)
-    return TRUE;
+    return true;
 
   elf_link_hash_traverse (&htab->elf, write_global_sym_plt, info);
 
@@ -9701,10 +9744,9 @@ 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;
+		    return false;
 		  }
 
 		val = sym->st_value;
@@ -9738,9 +9780,8 @@ ppc_finish_symbols (struct bfd_link_info
 				 + plt->output_offset
 				 + plt->output_section->vma);
 		rela.r_addend = val;
-		loc = relplt->contents + (relplt->reloc_count++
-					  * sizeof (Elf32_External_Rela));
-		bfd_elf32_swap_reloca_out (info->output_bfd, &rela, loc);
+		BFD_ASSERT (count_and_swap_reloc_out (info->output_bfd, &rela,
+						      relplt));
 
 		p = (unsigned char *) htab->glink->contents + ent->glink_offset;
 		write_glink_stub (NULL, ent, htab->elf.iplt, p, info);
@@ -9756,13 +9797,13 @@ ppc_finish_symbols (struct bfd_link_info
 	    symtab_hdr->contents = (unsigned char *) local_syms;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 ppc_elf_finish_dynamic_symbol (bfd *output_bfd,
 			       struct bfd_link_info *info,
 			       struct elf_link_hash_entry *h,
@@ -9824,7 +9865,6 @@ ppc_elf_finish_dynamic_symbol (bfd *outp
     {
       asection *s;
       Elf_Internal_Rela rela;
-      bfd_byte *loc;
 
       /* This symbols needs a copy reloc.  Set it up.  */
 
@@ -9845,15 +9885,14 @@ ppc_elf_finish_dynamic_symbol (bfd *outp
       rela.r_offset = SYM_VAL (h);
       rela.r_info = ELF32_R_INFO (h->dynindx, R_PPC_COPY);
       rela.r_addend = 0;
-      loc = s->contents + s->reloc_count++ * sizeof (Elf32_External_Rela);
-      bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+      BFD_ASSERT (count_and_swap_reloc_out (output_bfd, &rela, s));
     }
 
 #ifdef DEBUG
   fprintf (stderr, "\n");
 #endif
 
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -9881,7 +9920,7 @@ ppc_elf_reloc_type_class (const struct b
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 ppc_elf_finish_dynamic_sections (bfd *output_bfd,
 				 struct bfd_link_info *info)
 {
@@ -9889,7 +9928,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
   struct ppc_elf_link_hash_table *htab;
   bfd_vma got;
   bfd *dynobj;
-  bfd_boolean ret = TRUE;
+  bool ret = true;
 
 #ifdef DEBUG
   fprintf (stderr, "ppc_elf_finish_dynamic_sections called\n");
@@ -9921,7 +9960,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 +9992,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;
@@ -9998,14 +10037,14 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 			      (htab->elf.sgotplt != NULL
 			       ? htab->elf.sgotplt : htab->elf.sgot));
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	}
 
       elf_section_data (htab->elf.sgot->output_section)->this_hdr.sh_entsize = 4;
     }
 
   /* 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)
@@ -10050,7 +10089,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 			   + 2);
 	  rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_PPC_ADDR16_HA);
 	  rela.r_addend = 0;
-	  bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+	  BFD_ASSERT (swap_reloc_out (output_bfd, &rela, loc, htab->srelplt2));
 	  loc += sizeof (Elf32_External_Rela);
 
 	  /* Output the @l relocation for the second instruction.  */
@@ -10059,7 +10098,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 			   + 6);
 	  rela.r_info = ELF32_R_INFO (htab->elf.hgot->indx, R_PPC_ADDR16_LO);
 	  rela.r_addend = 0;
-	  bfd_elf32_swap_reloca_out (output_bfd, &rela, loc);
+	  BFD_ASSERT (swap_reloc_out (output_bfd, &rela, loc, htab->srelplt2));
 	  loc += sizeof (Elf32_External_Rela);
 
 	  /* Fix up the remaining relocations.  They may have the wrong
@@ -10310,7 +10349,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 	  && !_bfd_elf_write_section_eh_frame (output_bfd, info,
 					       htab->glink_eh_frame,
 					       htab->glink_eh_frame->contents))
-	return FALSE;
+	return false;
     }
 
   return ret;
@@ -10325,7 +10364,6 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 #define ELF_MACHINE_CODE	EM_PPC
 #define ELF_MAXPAGESIZE		0x10000
 #define ELF_COMMONPAGESIZE	0x1000
-#define ELF_RELROPAGESIZE	ELF_MAXPAGESIZE
 #define elf_info_to_howto	ppc_elf_info_to_howto
 
 #ifdef  EM_CYGNUS_POWERPC
@@ -10362,7 +10400,7 @@ ppc_elf_finish_dynamic_sections (bfd *ou
 #define elf_backend_copy_indirect_symbol	ppc_elf_copy_indirect_symbol
 #define elf_backend_adjust_dynamic_symbol	ppc_elf_adjust_dynamic_symbol
 #define elf_backend_add_symbol_hook		ppc_elf_add_symbol_hook
-#define elf_backend_size_dynamic_sections	ppc_elf_size_dynamic_sections
+#define elf_backend_late_size_sections		ppc_elf_late_size_sections
 #define elf_backend_hash_symbol			ppc_elf_hash_symbol
 #define elf_backend_finish_dynamic_symbol	ppc_elf_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections	ppc_elf_finish_dynamic_sections
@@ -10414,6 +10452,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 +10480,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;
@@ -10449,7 +10489,7 @@ ppc_elf_vxworks_link_hash_table_create (
 }
 
 /* Tweak magic VxWorks symbols as they are loaded.  */
-static bfd_boolean
+static bool
 ppc_elf_vxworks_add_symbol_hook (bfd *abfd,
 				 struct bfd_link_info *info,
 				 Elf_Internal_Sym *sym,
@@ -10460,12 +10500,12 @@ ppc_elf_vxworks_add_symbol_hook (bfd *ab
 {
   if (!elf_vxworks_add_symbol_hook (abfd, info, sym, namep, flagsp, secp,
 				    valp))
-    return FALSE;
+    return false;
 
   return ppc_elf_add_symbol_hook (abfd, info, sym, namep, flagsp, secp, valp);
 }
 
-static bfd_boolean
+static bool
 ppc_elf_vxworks_final_write_processing (bfd *abfd)
 {
   ppc_final_write_processing (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.20200303/bfd/elf32-ppc.h ./bfd/elf32-ppc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-ppc.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-ppc.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC-specific support for 64-bit ELF.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -60,10 +60,10 @@ struct ppc_elf_params
 
 void ppc_elf_link_params (struct bfd_link_info *, struct ppc_elf_params *);
 int ppc_elf_select_plt_layout (bfd *, struct bfd_link_info *);
-bfd_boolean ppc_elf_inline_plt (struct bfd_link_info *);
+bool ppc_elf_inline_plt (struct bfd_link_info *);
 asection *ppc_elf_tls_setup (bfd *, struct bfd_link_info *);
-bfd_boolean ppc_elf_tls_optimize (bfd *, struct bfd_link_info *);
+bool ppc_elf_tls_optimize (bfd *, struct bfd_link_info *);
 void ppc_elf_maybe_strip_sdata_syms (struct bfd_link_info *);
-extern bfd_boolean ppc_elf_modify_segment_map (bfd *, struct bfd_link_info *);
-extern bfd_boolean ppc_elf_section_processing (bfd *, Elf_Internal_Shdr *);
-extern bfd_boolean ppc_finish_symbols (struct bfd_link_info *);
+extern bool ppc_elf_modify_segment_map (bfd *, struct bfd_link_info *);
+extern bool ppc_elf_section_processing (bfd *, Elf_Internal_Shdr *);
+extern bool ppc_finish_symbols (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.20200303/bfd/elf32-pru.c ./bfd/elf32-pru.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-pru.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-pru.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for TI PRU.
-   Copyright (C) 2014-2019 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 Free Software Foundation, Inc.
    Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
    Based on elf32-nios2.c
 
@@ -43,7 +43,7 @@
   } while (0)
 
 /* Enable debugging printout at stdout with this variable.  */
-static bfd_boolean debug_relax = FALSE;
+static bool debug_relax = false;
 
 /* Forward declarations.  */
 static bfd_reloc_status_type pru_elf32_pmem_relocate
@@ -65,229 +65,229 @@ static reloc_howto_type elf_pru_howto_ta
   /* No relocation.  */
   HOWTO (R_PRU_NONE,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
-	 3,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 0,			/* size */
+	 0,			/* bitsize */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_PRU_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_PRU_16_PMEM,
 	 2,
-	 1,			/* short */
+	 2,			/* short */
 	 32,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 bfd_elf_generic_reloc,
 	 "R_PRU_16_PMEM",
-	 FALSE,
+	 false,
 	 0,			/* src_mask */
 	 0xffff,
-	 FALSE),
+	 false),
 
   HOWTO (R_PRU_U16_PMEMIMM,
 	 2,
-	 2,
+	 4,
 	 32,
-	 FALSE,
+	 false,
 	 8,
 	 complain_overflow_unsigned,
 	 pru_elf32_pmem_relocate,
 	 "R_PRU_U16_PMEMIMM",
-	 FALSE,
+	 false,
 	 0,			/* src_mask */
 	 0x00ffff00,
-	 FALSE),
+	 false),
 
   HOWTO (R_PRU_BFD_RELOC_16,
 	 0,
-	 1,			/* short */
+	 2,			/* short */
 	 16,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_PRU_BFD_RELOC16",
-	 FALSE,
+	 false,
 	 0,			/* src_mask */
 	 0x0000ffff,
-	 FALSE),
+	 false),
 
   /* 16-bit unsigned immediate relocation.  */
   HOWTO (R_PRU_U16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain on overflow */
 	 bfd_elf_generic_reloc,	/* special function */
 	 "R_PRU_U16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00ffff00,		/* dest_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_PRU_32_PMEM,
 	 2,
-	 2,			/* long */
+	 4,			/* long */
 	 32,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 pru_elf32_pmem_relocate,
 	 "R_PRU_32_PMEM",
-	 FALSE,
+	 false,
 	 0,			/* src_mask */
 	 0xffffffff,
-	 FALSE),
+	 false),
 
   HOWTO (R_PRU_BFD_RELOC_32,
 	 0,
-	 2,			/* long */
+	 4,			/* long */
 	 32,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 bfd_elf_generic_reloc,
 	 "R_PRU_BFD_RELOC32",
-	 FALSE,
+	 false,
 	 0,			/* src_mask */
 	 0xffffffff,
-	 FALSE),
+	 false),
 
   HOWTO (R_PRU_S10_PCREL,
 	 2,
-	 2,
+	 4,
 	 10,
-	 TRUE,
+	 true,
 	 0,
 	 complain_overflow_bitfield,
 	 pru_elf32_s10_pcrel_relocate,
 	 "R_PRU_S10_PCREL",
-	 FALSE,
+	 false,
 	 0,			/* src_mask */
 	 0x060000ff,
-	 TRUE),
+	 true),
 
   HOWTO (R_PRU_U8_PCREL,
 	 2,
-	 2,
+	 4,
 	 8,
-	 TRUE,
+	 true,
 	 0,
 	 complain_overflow_unsigned,
 	 pru_elf32_u8_pcrel_relocate,
 	 "R_PRU_U8_PCREL",
-	 FALSE,
+	 false,
 	 0,			/* src_mask */
 	 0x000000ff,
-	 TRUE),
+	 true),
 
   HOWTO (R_PRU_LDI32,
 	 0,			/* rightshift */
-	 4,			/* size (4 = 8bytes) */
+	 8,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain on overflow */
 	 pru_elf32_ldi32_relocate, /* special function */
 	 "R_PRU_LDI32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dest_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU-specific relocations.  */
   HOWTO (R_PRU_GNU_BFD_RELOC_8,
 	 0,
-	 0,			/* byte */
+	 1,			/* byte */
 	 8,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_PRU_BFD_RELOC8",
-	 FALSE,
+	 false,
 	 0,			/* src_mask */
 	 0x000000ff,
-	 FALSE),
+	 false),
 
   HOWTO (R_PRU_GNU_DIFF8,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_pru_diff_relocate, /* special_function */
 	 "R_PRU_DIFF8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_PRU_GNU_DIFF16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_pru_diff_relocate,/* special_function */
 	 "R_PRU_DIFF16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_PRU_GNU_DIFF32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_pru_diff_relocate,/* special_function */
 	 "R_PRU_DIFF32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_PRU_GNU_DIFF16_PMEM,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_pru_diff_relocate,/* special_function */
 	 "R_PRU_DIFF16_PMEM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_PRU_GNU_DIFF32_PMEM, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_pru_diff_relocate,/* special_function */
 	 "R_PRU_DIFF32_PMEM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 /* Add other relocations here.  */
 };
@@ -299,14 +299,14 @@ static unsigned char elf_code_to_howto_i
 static reloc_howto_type *
 lookup_howto (unsigned int rtype)
 {
-  static bfd_boolean initialized = FALSE;
+  static bool initialized = false;
   int i;
   int howto_tbl_size = (int) (sizeof (elf_pru_howto_table_rel)
 			      / sizeof (elf_pru_howto_table_rel[0]));
 
   if (! initialized)
     {
-      initialized = TRUE;
+      initialized = true;
       memset (elf_code_to_howto_index, 0xff,
 	      sizeof (elf_code_to_howto_index));
       for (i = 0; i < howto_tbl_size; i++)
@@ -410,7 +410,7 @@ pru_elf32_bfd_reloc_name_lookup (bfd *ab
 /* Implement elf_info_to_howto:
    Given a ELF32 relocation, fill in a arelent structure.  */
 
-static bfd_boolean
+static bool
 pru_elf32_info_to_howto (bfd *abfd, arelent *cache_ptr,
 			 Elf_Internal_Rela *dst)
 {
@@ -422,7 +422,7 @@ pru_elf32_info_to_howto (bfd *abfd, arel
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = lookup_howto (r_type);
@@ -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;
@@ -680,7 +680,7 @@ pru_elf32_ldi32_relocate (bfd *abfd, are
 
 
 /* Implement elf_backend_relocate_section.  */
-static bfd_boolean
+static int
 pru_elf32_relocate_section (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -695,7 +695,7 @@ pru_elf32_relocate_section (bfd *output_
   struct elf_link_hash_entry **sym_hashes;
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
-  bfd_boolean is_rel_reloc;
+  bool is_rel_reloc;
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
@@ -719,7 +719,7 @@ pru_elf32_relocate_section (bfd *output_
       bfd_reloc_status_type r = bfd_reloc_ok;
       const char *name = NULL;
       const char* msg = (const char*) NULL;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       bfd_vma addend;
 
       /* If we are using a REL relocation then the addend should be empty.  */
@@ -740,7 +740,7 @@ pru_elf32_relocate_section (bfd *output_
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -750,7 +750,8 @@ pru_elf32_relocate_section (bfd *output_
 
       if (sec && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_PRU_NONE,
+					 howto, 0, contents);
 
       /* Nothing more to do unless this is a final link.  */
       if (bfd_link_relocatable (info))
@@ -923,7 +924,7 @@ pru_elf32_relocate_section (bfd *output_
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol) (info, name, input_bfd,
 						    input_section,
-						    rel->r_offset, TRUE);
+						    rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -951,11 +952,11 @@ pru_elf32_relocate_section (bfd *output_
 	    {
 	      (*info->callbacks->warning) (info, msg, name, input_bfd,
 					   input_section, rel->r_offset);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
-  return TRUE;
+  return true;
 }
 
 
@@ -977,7 +978,7 @@ bfd_elf_pru_diff_relocate (bfd *abfd ATT
 
 /* Returns whether the relocation type passed is a diff reloc.  */
 
-static bfd_boolean
+static bool
 elf32_pru_is_diff_reloc (Elf_Internal_Rela *irel)
 {
   return (ELF32_R_TYPE (irel->r_info) == R_PRU_GNU_DIFF8
@@ -1116,7 +1117,7 @@ elf32_pru_adjust_diff_reloc_value (bfd *
 
    Idea copied from the AVR port.  */
 
-static bfd_boolean
+static bool
 pru_elf_relax_delete_bytes (bfd *abfd,
 			    asection *sec,
 			    bfd_vma addr,
@@ -1200,7 +1201,7 @@ pru_elf_relax_delete_bytes (bfd *abfd,
        irel = elf_section_data (isec)->relocs;
        /* PR 12161: Read in the relocs for this section if necessary.  */
        if (irel == NULL)
-	 irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, TRUE);
+	 irel = _bfd_elf_link_read_relocs (abfd, isec, NULL, NULL, true);
 
        for (irelend = irel + isec->reloc_count;
 	    irel < irelend;
@@ -1216,7 +1217,7 @@ pru_elf_relax_delete_bytes (bfd *abfd,
 						 symtab_hdr->sh_info, 0,
 						 NULL, NULL, NULL);
 	       if (isymbuf == NULL)
-		 return FALSE;
+		 return false;
 	     }
 
 	   /* Get the value of the symbol referred to by the reloc.  */
@@ -1332,13 +1333,13 @@ pru_elf_relax_delete_bytes (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-pru_elf32_relax_section (bfd * abfd, asection * sec,
-			  struct bfd_link_info * link_info,
-			  bfd_boolean * again)
+static bool
+pru_elf32_relax_section (bfd *abfd, asection *sec,
+			 struct bfd_link_info *link_info,
+			 bool *again)
 {
   Elf_Internal_Shdr * symtab_hdr;
   Elf_Internal_Rela * internal_relocs;
@@ -1348,15 +1349,17 @@ pru_elf32_relax_section (bfd * abfd, ase
   Elf_Internal_Sym *  isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-    || (sec->flags & SEC_RELOC) == 0
-    || sec->reloc_count == 0 || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+      || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
+      || (sec->flags & SEC_CODE) == 0)
+    return true;
 
   symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
 
@@ -1495,7 +1498,7 @@ pru_elf32_relax_section (bfd * abfd, ase
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
     }
@@ -1523,23 +1526,20 @@ 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;
+  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;
+  return false;
 }
 
 /* Free the derived linker hash table.  */
@@ -1554,17 +1554,14 @@ 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)
     return NULL;
 
-  if (!_bfd_elf_link_hash_table_init (ret, abfd,
-				      link_hash_newfunc,
-				      sizeof (struct
-					      elf_link_hash_entry),
-				      PRU_ELF_DATA))
+  if (!_bfd_elf_link_hash_table_init (ret, abfd, link_hash_newfunc,
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1604,6 +1601,9 @@ pru_elf32_link_hash_table_create (bfd *a
 
 #define elf_backend_relocate_section	pru_elf32_relocate_section
 #define bfd_elf32_bfd_relax_section	pru_elf32_relax_section
+#define elf_backend_can_gc_sections	1
+
+#define elf_backend_default_execstack	0
 
 #define TARGET_LITTLE_SYM		pru_elf32_vec
 #define TARGET_LITTLE_NAME		"elf32-pru"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-rl78.c ./bfd/elf32-rl78.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-rl78.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-rl78.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -27,17 +27,16 @@
 
 #define valid_16bit_address(v) ((v) <= 0x0ffff || (v) >= 0xf0000)
 
-#define RL78REL(n,sz,bit,shift,complain,pcrel)				     \
+#define RL78REL(n,sz,bit,mask,shift,complain,pcrel) \
   HOWTO (R_RL78_##n, shift, sz, bit, pcrel, 0, complain_overflow_ ## complain, \
-	 bfd_elf_generic_reloc, "R_RL78_" #n, FALSE, 0, ~0, FALSE)
+	 bfd_elf_generic_reloc, "R_RL78_" #n, false, 0, mask, false)
 
 static bfd_reloc_status_type rl78_special_reloc (bfd *, arelent *, asymbol *, void *,
 						 asection *, bfd *, char **);
 
-/* FIXME: We could omit the SHIFT parameter, it is always zero.  */
-#define RL78_OP_REL(n,sz,bit,shift,complain,pcrel)			\
+#define RL78_OP_REL(n,sz,bit,mask,shift,complain,pcrel)			\
   HOWTO (R_RL78_##n, shift, sz, bit, pcrel, 0, complain_overflow_ ## complain, \
-	 rl78_special_reloc, "R_RL78_" #n, FALSE, 0, ~0, FALSE)
+	 rl78_special_reloc, "R_RL78_" #n, false, 0, mask, false)
 
 /* Note that the relocations around 0x7f are internal to this file;
    feel free to move them as needed to avoid conflicts with published
@@ -45,25 +44,25 @@ static bfd_reloc_status_type rl78_specia
 
 static reloc_howto_type rl78_elf_howto_table [] =
 {
-  RL78REL (NONE,	 3,  0, 0, dont,     FALSE),
-  RL78REL (DIR32,	 2, 32, 0, signed,   FALSE),
-  RL78REL (DIR24S,	 2, 24, 0, signed,   FALSE),
-  RL78REL (DIR16,	 1, 16, 0, dont,     FALSE),
-  RL78REL (DIR16U,	 1, 16, 0, unsigned, FALSE),
-  RL78REL (DIR16S,	 1, 16, 0, signed,   FALSE),
-  RL78REL (DIR8,	 0,  8, 0, dont,     FALSE),
-  RL78REL (DIR8U,	 0,  8, 0, unsigned, FALSE),
-  RL78REL (DIR8S,	 0,  8, 0, signed,   FALSE),
-  RL78REL (DIR24S_PCREL, 2, 24, 0, signed,   TRUE),
-  RL78REL (DIR16S_PCREL, 1, 16, 0, signed,   TRUE),
-  RL78REL (DIR8S_PCREL,	 0,  8, 0, signed,   TRUE),
-  RL78REL (DIR16UL,	 1, 16, 2, unsigned, FALSE),
-  RL78REL (DIR16UW,	 1, 16, 1, unsigned, FALSE),
-  RL78REL (DIR8UL,	 0,  8, 2, unsigned, FALSE),
-  RL78REL (DIR8UW,	 0,  8, 1, unsigned, FALSE),
-  RL78REL (DIR32_REV,	 1, 16, 0, dont,     FALSE),
-  RL78REL (DIR16_REV,	 1, 16, 0, dont,     FALSE),
-  RL78REL (DIR3U_PCREL,	 0,  3, 0, dont,     TRUE),
+  RL78REL (NONE,	 0,  0, 0,          0, dont,     false),
+  RL78REL (DIR32,	 4, 32, 0xffffffff, 0, dont,     false),
+  RL78REL (DIR24S,	 4, 24, 0xffffff,   0, signed,   false),
+  RL78REL (DIR16,	 2, 16, 0xffff,     0, bitfield, false),
+  RL78REL (DIR16U,	 2, 16, 0xffff,     0, unsigned, false),
+  RL78REL (DIR16S,	 2, 16, 0xffff,     0, bitfield, false),
+  RL78REL (DIR8,	 1,  8, 0xff,       0, dont,     false),
+  RL78REL (DIR8U,	 1,  8, 0xff,       0, unsigned, false),
+  RL78REL (DIR8S,	 1,  8, 0xff,       0, bitfield, false),
+  RL78REL (DIR24S_PCREL, 4, 24, 0xffffff,   0, signed,   true),
+  RL78REL (DIR16S_PCREL, 2, 16, 0xffff,     0, signed,   true),
+  RL78REL (DIR8S_PCREL,	 1,  8, 0xff,       0, signed,   true),
+  RL78REL (DIR16UL,	 2, 16, 0xffff,     2, unsigned, false),
+  RL78REL (DIR16UW,	 2, 16, 0xffff,     1, unsigned, false),
+  RL78REL (DIR8UL,	 1,  8, 0xff,       2, unsigned, false),
+  RL78REL (DIR8UW,	 1,  8, 0xff,       1, unsigned, false),
+  RL78REL (DIR32_REV,	 4, 32, 0xffffffff, 0, dont,     false),
+  RL78REL (DIR16_REV,	 2, 16, 0xffff,     0, bitfield, false),
+  RL78REL (DIR3U_PCREL,	 1,  3, 0x7,        0, unsigned, true),
 
   EMPTY_HOWTO (0x13),
   EMPTY_HOWTO (0x14),
@@ -92,10 +91,11 @@ static reloc_howto_type rl78_elf_howto_t
   EMPTY_HOWTO (0x2a),
   EMPTY_HOWTO (0x2b),
   EMPTY_HOWTO (0x2c),
-  RL78REL (RH_RELAX, 0,	 0, 0, dont,	 FALSE),
 
-  EMPTY_HOWTO (0x2e),
-  RL78REL (RH_SADDR, 0,	 0, 0, dont,	 FALSE),
+  RL78REL (RH_RELAX,	 0,  0, 0,          0, dont,	 false),
+  RL78REL (RH_SFR,	 1,  8, 0xff,       0, unsigned, false),
+  RL78REL (RH_SADDR,	 1,  8, 0xff,       0, unsigned, false),
+
   EMPTY_HOWTO (0x30),
   EMPTY_HOWTO (0x31),
   EMPTY_HOWTO (0x32),
@@ -114,23 +114,23 @@ static reloc_howto_type rl78_elf_howto_t
   EMPTY_HOWTO (0x3f),
   EMPTY_HOWTO (0x40),
 
-  RL78_OP_REL (ABS32,	     2, 32, 0, dont,	 FALSE),
-  RL78_OP_REL (ABS24S,	     2, 24, 0, signed,	 FALSE),
-  RL78_OP_REL (ABS16,	     1, 16, 0, dont,	 FALSE),
-  RL78_OP_REL (ABS16U,	     1, 16, 0, unsigned, FALSE),
-  RL78_OP_REL (ABS16S,	     1, 16, 0, signed,	 FALSE),
-  RL78_OP_REL (ABS8,	     0,	 8, 0, dont,	 FALSE),
-  RL78_OP_REL (ABS8U,	     0,	 8, 0, unsigned, FALSE),
-  RL78_OP_REL (ABS8S,	     0,	 8, 0, signed,	 FALSE),
-  RL78_OP_REL (ABS24S_PCREL, 2, 24, 0, signed,	 TRUE),
-  RL78_OP_REL (ABS16S_PCREL, 1, 16, 0, signed,	 TRUE),
-  RL78_OP_REL (ABS8S_PCREL,  0,	 8, 0, signed,	 TRUE),
-  RL78_OP_REL (ABS16UL,	     1, 16, 0, unsigned, FALSE),
-  RL78_OP_REL (ABS16UW,	     1, 16, 0, unsigned, FALSE),
-  RL78_OP_REL (ABS8UL,	     0,	 8, 0, unsigned, FALSE),
-  RL78_OP_REL (ABS8UW,	     0,	 8, 0, unsigned, FALSE),
-  RL78_OP_REL (ABS32_REV,    2, 32, 0, dont,	 FALSE),
-  RL78_OP_REL (ABS16_REV,    1, 16, 0, dont,	 FALSE),
+  RL78_OP_REL (ABS32,	     4, 32, 0xffffffff, 0, dont,	false),
+  RL78_OP_REL (ABS24S,	     4, 24, 0xffffff,   0, signed,	false),
+  RL78_OP_REL (ABS16,	     2, 16, 0xffff,     0, bitfield,	false),
+  RL78_OP_REL (ABS16U,	     2, 16, 0xffff,     0, unsigned,	false),
+  RL78_OP_REL (ABS16S,	     2, 16, 0xffff,     0, signed,	false),
+  RL78_OP_REL (ABS8,	     1,	 8, 0xff,       0, bitfield,	false),
+  RL78_OP_REL (ABS8U,	     1,	 8, 0xff,       0, unsigned,	false),
+  RL78_OP_REL (ABS8S,	     1,	 8, 0xff,       0, signed,	false),
+  RL78_OP_REL (ABS24S_PCREL, 4, 24, 0xffffff,   0, signed,	true),
+  RL78_OP_REL (ABS16S_PCREL, 2, 16, 0xffff,     0, signed,	true),
+  RL78_OP_REL (ABS8S_PCREL,  1,	 8, 0xff,       0, signed,	true),
+  RL78_OP_REL (ABS16UL,	     2, 16, 0xffff,     0, unsigned,	false),
+  RL78_OP_REL (ABS16UW,	     2, 16, 0xffff,     0, unsigned,	false),
+  RL78_OP_REL (ABS8UL,	     1,	 8, 0xff,       0, unsigned,	false),
+  RL78_OP_REL (ABS8UW,	     1,	 8, 0xff,       0, unsigned,	false),
+  RL78_OP_REL (ABS32_REV,    4, 32, 0xffffffff, 0, dont,	false),
+  RL78_OP_REL (ABS16_REV,    2, 16, 0xffff,     0, bitfield,	false),
 
 #define STACK_REL_P(x) ((x) <= R_RL78_ABS16_REV && (x) >= R_RL78_ABS32)
 
@@ -182,29 +182,29 @@ static reloc_howto_type rl78_elf_howto_t
   EMPTY_HOWTO (0x7e),
   EMPTY_HOWTO (0x7f),
 
-  RL78_OP_REL (SYM,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPneg,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPadd,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPsub,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPmul,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPdiv,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPshla,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPshra,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPsctsize, 2, 32, 0, dont, FALSE),
+  RL78_OP_REL (SYM,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPneg,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPadd,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPsub,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPmul,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPdiv,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPshla,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPshra,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPsctsize, 0, 0, 0, 0, dont, false),
   EMPTY_HOWTO (0x89),
   EMPTY_HOWTO (0x8a),
   EMPTY_HOWTO (0x8b),
   EMPTY_HOWTO (0x8c),
-  RL78_OP_REL (OPscttop,  2, 32, 0, dont, FALSE),
+  RL78_OP_REL (OPscttop,  0, 0, 0, 0, dont, false),
   EMPTY_HOWTO (0x8e),
   EMPTY_HOWTO (0x8f),
-  RL78_OP_REL (OPand,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPor,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPxor,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPnot,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPmod,	  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPromtop,  2, 32, 0, dont, FALSE),
-  RL78_OP_REL (OPramtop,  2, 32, 0, dont, FALSE)
+  RL78_OP_REL (OPand,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPor,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPxor,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPnot,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPmod,	  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPromtop,  0, 0, 0, 0, dont, false),
+  RL78_OP_REL (OPramtop,  0, 0, 0, 0, dont, false)
 };
 
 /* Map BFD reloc types to RL78 ELF reloc types.  */
@@ -277,7 +277,7 @@ rl78_reloc_name_lookup (bfd * abfd ATTRI
 
 /* Set the howto pointer for an RL78 ELF reloc.  */
 
-static bfd_boolean
+static bool
 rl78_info_to_howto_rela (bfd *		     abfd,
 			 arelent *	     cache_ptr,
 			 Elf_Internal_Rela * dst)
@@ -291,10 +291,10 @@ rl78_info_to_howto_rela (bfd *		     abf
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = rl78_elf_howto_table + r_type;
-  return TRUE;
+  return true;
 }
 
 static bfd_vma
@@ -309,14 +309,14 @@ get_symbol_value (const char *		  name,
   if (info == NULL)
     return 0;
 
-  h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, name, false, false, true);
 
   if (h == NULL
       || (h->type != bfd_link_hash_defined
 	  && h->type != bfd_link_hash_defweak))
     {
       (*info->callbacks->undefined_symbol)
-	(info, name, input_bfd, input_section, offset, TRUE);
+	(info, name, input_bfd, input_section, offset, true);
       return 0;
     }
 
@@ -331,13 +331,13 @@ get_romstart (struct bfd_link_info *  in
 	      asection *	      sec,
 	      int		      offset)
 {
-  static bfd_boolean cached = FALSE;
-  static bfd_vma     cached_value = 0;
+  static bool cached = false;
+  static bfd_vma cached_value = 0;
 
   if (!cached)
     {
       cached_value = get_symbol_value ("_start", info, abfd, sec, offset);
-      cached = TRUE;
+      cached = true;
     }
   return cached_value;
 }
@@ -348,13 +348,13 @@ get_ramstart (struct bfd_link_info *  in
 	      asection *	      sec,
 	      int		      offset)
 {
-  static bfd_boolean cached = FALSE;
-  static bfd_vma     cached_value = 0;
+  static bool cached = false;
+  static bfd_vma cached_value = 0;
 
   if (!cached)
     {
       cached_value = get_symbol_value ("__datastart", info, abfd, sec, offset);
-      cached = TRUE;
+      cached = true;
     }
   return cached_value;
 }
@@ -363,28 +363,24 @@ get_ramstart (struct bfd_link_info *  in
 static int32_t rl78_stack [ NUM_STACK_ENTRIES ];
 static unsigned int rl78_stack_top;
 
-#define RL78_STACK_PUSH(val)			\
-  do						\
-    {						\
-      if (rl78_stack_top < NUM_STACK_ENTRIES)	\
-	rl78_stack [rl78_stack_top ++] = (val);	\
-      else					\
-	_bfd_error_handler (_("internal error: RL78 reloc stack overflow")); \
-    }						\
-  while (0)
-
-#define RL78_STACK_POP(dest)			\
-  do						\
-    {						\
-      if (rl78_stack_top > 0)			\
-	(dest) = rl78_stack [-- rl78_stack_top];\
-      else					\
-	{					\
-	  _bfd_error_handler (_("internal error: RL78 reloc stack underflow")); \
-	  (dest) = 0;				\
-	}					\
-    }						\
-  while (0)
+static inline void
+rl78_stack_push (bfd_vma val, bfd_reloc_status_type *r)
+{
+  if (rl78_stack_top < NUM_STACK_ENTRIES)
+    rl78_stack[rl78_stack_top++] = val;
+  else
+    *r = bfd_reloc_dangerous;
+}
+
+static inline bfd_vma
+rl78_stack_pop (bfd_reloc_status_type *r)
+{
+  if (rl78_stack_top > 0)
+    return rl78_stack[-- rl78_stack_top];
+  else
+    *r = bfd_reloc_dangerous;
+  return 0;
+}
 
 /* Special handling for RL78 complex relocs.  Returns the
    value of the reloc, or 0 for relocs which do not generate
@@ -393,23 +389,27 @@ static unsigned int rl78_stack_top;
 
 static bfd_vma
 rl78_compute_complex_reloc (unsigned long  r_type,
-			    bfd_vma	   symval,
-			    asection *	   input_section)
+			    bfd_vma symval,
+			    asection *input_section,
+			    bfd_reloc_status_type *r,
+			    char **error_message)
 {
   int32_t tmp1, tmp2;
-  bfd_vma relocation;
+  bfd_vma relocation = 0;
+  bfd_reloc_status_type status = bfd_reloc_ok;
 
   switch (r_type)
     {
     default:
-      return 0;
+      status = bfd_reloc_notsupported;
+      break;
 
     case R_RL78_ABS24S_PCREL:
     case R_RL78_ABS16S_PCREL:
     case R_RL78_ABS8S_PCREL:
-      RL78_STACK_POP (relocation);
+      relocation = rl78_stack_pop (&status);
       relocation -= input_section->output_section->vma + input_section->output_offset;
-      return relocation;
+      break;
 
     case R_RL78_ABS32:
     case R_RL78_ABS32_REV:
@@ -420,124 +420,175 @@ rl78_compute_complex_reloc (unsigned lon
     case R_RL78_ABS8:
     case R_RL78_ABS8U:
     case R_RL78_ABS8S:
-      RL78_STACK_POP (relocation);
-      return relocation;
+      relocation = rl78_stack_pop (&status);
+      break;
 
     case R_RL78_ABS16UL:
     case R_RL78_ABS8UL:
-      RL78_STACK_POP (relocation);
-      return relocation >> 2;
+      relocation = rl78_stack_pop (&status) >> 2;
+      break;;
 
     case R_RL78_ABS16UW:
     case R_RL78_ABS8UW:
-      RL78_STACK_POP (relocation);
-      return relocation >> 1;
+      relocation = rl78_stack_pop (&status) >> 1;
+      break;
 
       /* The rest of the relocs compute values and then push them onto the stack.  */
     case R_RL78_OPramtop:
     case R_RL78_OPromtop:
     case R_RL78_SYM:
-      RL78_STACK_PUSH (symval);
-      return 0;
+      rl78_stack_push (symval, &status);
+      break;
 
     case R_RL78_OPneg:
-      RL78_STACK_POP (tmp1);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 = - tmp1;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPadd:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 += tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPsub:
       /* For the expression "A - B", the assembler pushes A,
 	 then B, then OPSUB.  So the first op we pop is B, not A.  */
-      RL78_STACK_POP (tmp2);	/* B */
-      RL78_STACK_POP (tmp1);	/* A */
+      tmp2 = rl78_stack_pop (&status);	/* B */
+      tmp1 = rl78_stack_pop (&status);	/* A */
       tmp1 -= tmp2;		/* A - B */
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPmul:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 *= tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPdiv:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
-      tmp1 /= tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
+      if (tmp2 != 0)
+	tmp1 /= tmp2;
+      else
+	{
+	  tmp1 = 0;
+	  status = bfd_reloc_overflow;
+	}
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPshla:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 <<= tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPshra:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 >>= tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPsctsize:
-      RL78_STACK_PUSH (input_section->size);
-      return 0;
+      rl78_stack_push (input_section->size, &status);
+      break;
 
     case R_RL78_OPscttop:
-      RL78_STACK_PUSH (input_section->output_section->vma);
-      return 0;
+      rl78_stack_push (input_section->output_section->vma, &status);
+      break;
 
     case R_RL78_OPand:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 &= tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPor:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 |= tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPxor:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 ^= tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPnot:
-      RL78_STACK_POP (tmp1);
+      tmp1 = rl78_stack_pop (&status);
       tmp1 = ~ tmp1;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      rl78_stack_push (tmp1, &status);
+      break;
 
     case R_RL78_OPmod:
-      RL78_STACK_POP (tmp2);
-      RL78_STACK_POP (tmp1);
-      tmp1 %= tmp2;
-      RL78_STACK_PUSH (tmp1);
-      return 0;
+      tmp2 = rl78_stack_pop (&status);
+      tmp1 = rl78_stack_pop (&status);
+      if (tmp2 != 0)
+	tmp1 %= tmp2;
+      else
+	{
+	  tmp1 = 0;
+	  status = bfd_reloc_overflow;
+	}
+      rl78_stack_push (tmp1, &status);
+      break;
+    }
+
+  if (r)
+    {
+      if (status == bfd_reloc_dangerous)
+	*error_message = (_("RL78 reloc stack overflow/underflow"));
+      else if (status == bfd_reloc_overflow)
+	{
+	  status = bfd_reloc_dangerous;
+	  *error_message = (_("RL78 reloc divide by zero"));
+	}
+      *r = status;
     }
+  return relocation;
 }
 
-#undef RL78_STACK_PUSH
-#undef RL78_STACK_POP
+/* Check whether RELOCATION overflows a relocation field described by
+   HOWTO.  */
+
+static bfd_reloc_status_type
+check_overflow (reloc_howto_type *howto, bfd_vma relocation)
+{
+  switch (howto->complain_on_overflow)
+    {
+    case complain_overflow_dont:
+      break;
+
+    case complain_overflow_bitfield:
+      if ((bfd_signed_vma) relocation < -(1LL << (howto->bitsize - 1))
+	  || (bfd_signed_vma) relocation >= 1LL << howto->bitsize)
+	return bfd_reloc_overflow;
+      break;
 
-#define OP(i)      (contents[reloc->address + (i)])
+    case complain_overflow_signed:
+      if ((bfd_signed_vma) relocation < -(1LL << (howto->bitsize - 1))
+	  || (bfd_signed_vma) relocation >= 1LL << (howto->bitsize - 1))
+	return bfd_reloc_overflow;
+      break;
+
+    case complain_overflow_unsigned:
+      if (relocation >= 1ULL << howto->bitsize)
+	return bfd_reloc_overflow;
+      break;
+    }
+  return bfd_reloc_ok;
+}
 
 static bfd_reloc_status_type
 rl78_special_reloc (bfd *      input_bfd,
@@ -546,7 +597,7 @@ rl78_special_reloc (bfd *      input_bfd
 		    void *     data,
 		    asection * input_section,
 		    bfd *      output_bfd ATTRIBUTE_UNUSED,
-		    char **    error_message ATTRIBUTE_UNUSED)
+		    char **    error_message)
 {
   bfd_reloc_status_type	 r = bfd_reloc_ok;
   bfd_vma		 relocation = 0;
@@ -575,69 +626,45 @@ rl78_special_reloc (bfd *      input_bfd
     }
 
   /* Get the value of the relocation.  */
-  relocation = rl78_compute_complex_reloc (r_type, relocation, input_section);
+  relocation = rl78_compute_complex_reloc (r_type, relocation, input_section,
+					   &r, error_message);
 
-  /* If the relocation alters the contents of the section then apply it now.
-     Note - since this function is called from
-     bfd_generic_get_relocated_section_contents via bfd_perform_relocation,
-     and not from the linker, we do not perform any range checking.  The
-     clients who are calling us are only interested in some relocated section
-     contents, and not any linkage problems that might occur later.  */
-  switch (r_type)
+  if (STACK_REL_P (r_type))
     {
-    case R_RL78_ABS32:
-      OP (0) = relocation;
-      OP (1) = relocation >> 8;
-      OP (2) = relocation >> 16;
-      OP (3) = relocation >> 24;
-      break;
+      bfd_size_type limit;
+      unsigned int nbytes;
 
-    case R_RL78_ABS32_REV:
-      OP (3) = relocation;
-      OP (2) = relocation >> 8;
-      OP (1) = relocation >> 16;
-      OP (0) = relocation >> 24;
-      break;
+      if (r == bfd_reloc_ok)
+	r = check_overflow (reloc->howto, relocation);
 
-    case R_RL78_ABS24S_PCREL:
-    case R_RL78_ABS24S:
-      OP (0) = relocation;
-      OP (1) = relocation >> 8;
-      OP (2) = relocation >> 16;
-      break;
-
-    case R_RL78_ABS16_REV:
-      OP (1) = relocation;
-      OP (0) = relocation >> 8;
-      break;
-
-    case R_RL78_ABS16S_PCREL:
-    case R_RL78_ABS16:
-    case R_RL78_ABS16S:
-    case R_RL78_ABS16U:
-    case R_RL78_ABS16UL:
-    case R_RL78_ABS16UW:
-      OP (0) = relocation;
-      OP (1) = relocation >> 8;
-      break;
+      if (r_type == R_RL78_ABS16_REV)
+	relocation = ((relocation & 0xff) << 8) | ((relocation >> 8) & 0xff);
+      else if (r_type == R_RL78_ABS32_REV)
+	relocation = (((relocation & 0xff) << 24)
+		      | ((relocation & 0xff00) << 8)
+		      | ((relocation >> 8) & 0xff00)
+		      | ((relocation >> 24) & 0xff));
 
-    case R_RL78_ABS8S_PCREL:
-    case R_RL78_ABS8:
-    case R_RL78_ABS8U:
-    case R_RL78_ABS8UL:
-    case R_RL78_ABS8UW:
-    case R_RL78_ABS8S:
-      OP (0) = relocation;
-      break;
+      limit = bfd_get_section_limit_octets (input_bfd, input_section);
+      nbytes = reloc->howto->bitsize / 8;
+      if (reloc->address < limit
+	  && nbytes <= limit - reloc->address)
+	{
+	  unsigned int i;
 
-    default:
-      break;
+	  for (i = 0; i < nbytes; i++)
+	    {
+	      contents[reloc->address + i] = relocation;
+	      relocation >>= 8;
+	    }
+	}
+      else
+	r = bfd_reloc_outofrange;
     }
 
   return r;
 }
 
-#undef  OP
 #define OP(i)      (contents[rel->r_offset + (i)])
 
 /* Relocate an RL78 ELF section.
@@ -673,7 +700,7 @@ rl78_special_reloc (bfd *      input_bfd
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 rl78_elf_relocate_section
     (bfd *		     output_bfd,
      struct bfd_link_info *  info,
@@ -689,25 +716,27 @@ rl78_elf_relocate_section
   Elf_Internal_Rela *		rel;
   Elf_Internal_Rela *		relend;
   asection *splt;
+  bool ret;
 
   symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
   relend     = relocs + input_section->reloc_count;
 
   splt = elf_hash_table (info)->splt;
-
+  ret = true;
   for (rel = relocs; rel < relend; rel ++)
     {
-      reloc_howto_type *	   howto;
-      unsigned long		   r_symndx;
-      Elf_Internal_Sym *	   sym;
-      asection *		   sec;
-      struct elf_link_hash_entry * h;
-      bfd_vma			   relocation;
-      bfd_reloc_status_type	   r;
-      const char *		   name = NULL;
-      bfd_boolean		   unresolved_reloc = TRUE;
-      int			   r_type;
+      reloc_howto_type *howto;
+      unsigned long r_symndx;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      struct elf_link_hash_entry *h;
+      bfd_vma relocation;
+      bfd_reloc_status_type r;
+      const char *name = NULL;
+      bool unresolved_reloc = true;
+      int r_type;
+      char *error_message;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       r_symndx = ELF32_R_SYM (rel->r_info);
@@ -730,8 +759,8 @@ rl78_elf_relocate_section
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes, h,
@@ -743,7 +772,8 @@ rl78_elf_relocate_section
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_RL78_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -823,326 +853,312 @@ rl78_elf_relocate_section
 	}
 
       r = bfd_reloc_ok;
+      if (howto->bitsize != 0
+	  && (rel->r_offset >= input_section->size
+	      || ((howto->bitsize + 7u) / 8
+		  > input_section->size - rel->r_offset)))
+	r = bfd_reloc_outofrange;
+      else
+	switch (r_type)
+	  {
+	  case R_RL78_NONE:
+	    break;
 
-#define RANGE(a,b) if (a > (long) relocation || (long) relocation > b) r = bfd_reloc_overflow
-
-      /* Opcode relocs are always big endian.  Data relocs are bi-endian.  */
-      switch (r_type)
-	{
-	case R_RL78_NONE:
-	  break;
-
-	case R_RL78_RH_RELAX:
-	  break;
-
-	case R_RL78_DIR8S_PCREL:
-	  RANGE (-128, 127);
-	  OP (0) = relocation;
-	  break;
-
-	case R_RL78_DIR8S:
-	  RANGE (-128, 255);
-	  OP (0) = relocation;
-	  break;
-
-	case R_RL78_DIR8U:
-	  RANGE (0, 255);
-	  OP (0) = relocation;
-	  break;
-
-	case R_RL78_DIR16S_PCREL:
-	  RANGE (-32768, 32767);
-	  OP (0) = relocation;
-	  OP (1) = relocation >> 8;
-	  break;
-
-	case R_RL78_DIR16S:
-	  if ((relocation & 0xf0000) == 0xf0000)
-	    relocation &= 0xffff;
-	  RANGE (-32768, 65535);
-	  OP (0) = relocation;
-	  OP (1) = relocation >> 8;
-	  break;
-
-	case R_RL78_DIR16U:
-	  RANGE (0, 65536);
-	  OP (0) = relocation;
-	  OP (1) = relocation >> 8;
-	  break;
-
-	case R_RL78_DIR16:
-	  RANGE (-32768, 65536);
-	  OP (0) = relocation;
-	  OP (1) = relocation >> 8;
-	  break;
-
-	case R_RL78_DIR16_REV:
-	  RANGE (-32768, 65536);
-	  OP (1) = relocation;
-	  OP (0) = relocation >> 8;
-	  break;
-
-	case R_RL78_DIR3U_PCREL:
-	  RANGE (3, 10);
-	  OP (0) &= 0xf8;
-	  OP (0) |= relocation & 0x07;
-	  break;
-
-	case R_RL78_DIR24S_PCREL:
-	  RANGE (-0x800000, 0x7fffff);
-	  OP (0) = relocation;
-	  OP (1) = relocation >> 8;
-	  OP (2) = relocation >> 16;
-	  break;
-
-	case R_RL78_DIR24S:
-	  RANGE (-0x800000, 0x7fffff);
-	  OP (0) = relocation;
-	  OP (1) = relocation >> 8;
-	  OP (2) = relocation >> 16;
-	  break;
-
-	case R_RL78_DIR32:
-	  OP (0) = relocation;
-	  OP (1) = relocation >> 8;
-	  OP (2) = relocation >> 16;
-	  OP (3) = relocation >> 24;
-	  break;
-
-	case R_RL78_DIR32_REV:
-	  OP (3) = relocation;
-	  OP (2) = relocation >> 8;
-	  OP (1) = relocation >> 16;
-	  OP (0) = relocation >> 24;
-	  break;
-
-	case R_RL78_RH_SFR:
-	  RANGE (0xfff00, 0xfffff);
-	  OP (0) = relocation & 0xff;
-	  break;
-
-	case R_RL78_RH_SADDR:
-	  RANGE (0xffe20, 0xfff1f);
-	  OP (0) = relocation & 0xff;
-	  break;
-
-	  /* Complex reloc handling:  */
-	case R_RL78_ABS32:
-	case R_RL78_ABS32_REV:
-	case R_RL78_ABS24S_PCREL:
-	case R_RL78_ABS24S:
-	case R_RL78_ABS16:
-	case R_RL78_ABS16_REV:
-	case R_RL78_ABS16S_PCREL:
-	case R_RL78_ABS16S:
-	case R_RL78_ABS16U:
-	case R_RL78_ABS16UL:
-	case R_RL78_ABS16UW:
-	case R_RL78_ABS8:
-	case R_RL78_ABS8U:
-	case R_RL78_ABS8UL:
-	case R_RL78_ABS8UW:
-	case R_RL78_ABS8S_PCREL:
-	case R_RL78_ABS8S:
-	case R_RL78_OPneg:
-	case R_RL78_OPadd:
-	case R_RL78_OPsub:
-	case R_RL78_OPmul:
-	case R_RL78_OPdiv:
-	case R_RL78_OPshla:
-	case R_RL78_OPshra:
-	case R_RL78_OPsctsize:
-	case R_RL78_OPscttop:
-	case R_RL78_OPand:
-	case R_RL78_OPor:
-	case R_RL78_OPxor:
-	case R_RL78_OPnot:
-	case R_RL78_OPmod:
-	  relocation = rl78_compute_complex_reloc (r_type, 0, input_section);
-
-	  switch (r_type)
-	    {
-	    case R_RL78_ABS32:
-	      OP (0) = relocation;
-	      OP (1) = relocation >> 8;
-	      OP (2) = relocation >> 16;
-	      OP (3) = relocation >> 24;
-	      break;
-
-	    case R_RL78_ABS32_REV:
-	      OP (3) = relocation;
-	      OP (2) = relocation >> 8;
-	      OP (1) = relocation >> 16;
-	      OP (0) = relocation >> 24;
-	      break;
-
-	    case R_RL78_ABS24S_PCREL:
-	    case R_RL78_ABS24S:
-	      RANGE (-0x800000, 0x7fffff);
-	      OP (0) = relocation;
-	      OP (1) = relocation >> 8;
-	      OP (2) = relocation >> 16;
-	      break;
-
-	    case R_RL78_ABS16:
-	      RANGE (-32768, 65535);
-	      OP (0) = relocation;
-	      OP (1) = relocation >> 8;
-	      break;
-
-	    case R_RL78_ABS16_REV:
-	      RANGE (-32768, 65535);
-	      OP (1) = relocation;
-	      OP (0) = relocation >> 8;
-	      break;
-
-	    case R_RL78_ABS16S_PCREL:
-	    case R_RL78_ABS16S:
-	      RANGE (-32768, 32767);
-	      OP (0) = relocation;
-	      OP (1) = relocation >> 8;
-	      break;
-
-	    case R_RL78_ABS16U:
-	    case R_RL78_ABS16UL:
-	    case R_RL78_ABS16UW:
-	      RANGE (0, 65536);
-	      OP (0) = relocation;
-	      OP (1) = relocation >> 8;
-	      break;
-
-	    case R_RL78_ABS8:
-	      RANGE (-128, 255);
-	      OP (0) = relocation;
-	      break;
-
-	    case R_RL78_ABS8U:
-	    case R_RL78_ABS8UL:
-	    case R_RL78_ABS8UW:
-	      RANGE (0, 255);
-	      OP (0) = relocation;
-	      break;
-
-	    case R_RL78_ABS8S_PCREL:
-	    case R_RL78_ABS8S:
-	      RANGE (-128, 127);
-	      OP (0) = relocation;
-	      break;
+	  case R_RL78_RH_RELAX:
+	    break;
 
-	    default:
-	      break;
-	    }
-	  break;
+	  case R_RL78_DIR8S_PCREL:
+	    OP (0) = relocation;
+	    break;
+
+	  case R_RL78_DIR8S:
+	    OP (0) = relocation;
+	    break;
+
+	  case R_RL78_DIR8U:
+	    OP (0) = relocation;
+	    break;
+
+	  case R_RL78_DIR16S_PCREL:
+	    OP (0) = relocation;
+	    OP (1) = relocation >> 8;
+	    break;
+
+	  case R_RL78_DIR16S:
+	    if ((relocation & 0xf0000) == 0xf0000)
+	      relocation &= 0xffff;
+	    OP (0) = relocation;
+	    OP (1) = relocation >> 8;
+	    break;
+
+	  case R_RL78_DIR16U:
+	    OP (0) = relocation;
+	    OP (1) = relocation >> 8;
+	    break;
+
+	  case R_RL78_DIR16:
+	    OP (0) = relocation;
+	    OP (1) = relocation >> 8;
+	    break;
+
+	  case R_RL78_DIR16_REV:
+	    OP (1) = relocation;
+	    OP (0) = relocation >> 8;
+	    break;
+
+	  case R_RL78_DIR3U_PCREL:
+	    OP (0) &= 0xf8;
+	    OP (0) |= relocation & 0x07;
+	    /* Map [3, 10] to [0, 7].  The code below using howto
+	       bitsize will check for unsigned overflow.  */
+	    relocation -= 3;
+	    break;
+
+	  case R_RL78_DIR24S_PCREL:
+	    OP (0) = relocation;
+	    OP (1) = relocation >> 8;
+	    OP (2) = relocation >> 16;
+	    break;
+
+	  case R_RL78_DIR24S:
+	    OP (0) = relocation;
+	    OP (1) = relocation >> 8;
+	    OP (2) = relocation >> 16;
+	    break;
+
+	  case R_RL78_DIR32:
+	    OP (0) = relocation;
+	    OP (1) = relocation >> 8;
+	    OP (2) = relocation >> 16;
+	    OP (3) = relocation >> 24;
+	    break;
+
+	  case R_RL78_DIR32_REV:
+	    OP (3) = relocation;
+	    OP (2) = relocation >> 8;
+	    OP (1) = relocation >> 16;
+	    OP (0) = relocation >> 24;
+	    break;
+
+	  case R_RL78_RH_SFR:
+	    relocation -= 0xfff00;
+	    OP (0) = relocation;
+	    break;
+
+	  case R_RL78_RH_SADDR:
+	    relocation -= 0xffe20;
+	    OP (0) = relocation;
+	    break;
+
+	    /* Complex reloc handling:  */
+	  case R_RL78_ABS32:
+	  case R_RL78_ABS32_REV:
+	  case R_RL78_ABS24S_PCREL:
+	  case R_RL78_ABS24S:
+	  case R_RL78_ABS16:
+	  case R_RL78_ABS16_REV:
+	  case R_RL78_ABS16S_PCREL:
+	  case R_RL78_ABS16S:
+	  case R_RL78_ABS16U:
+	  case R_RL78_ABS16UL:
+	  case R_RL78_ABS16UW:
+	  case R_RL78_ABS8:
+	  case R_RL78_ABS8U:
+	  case R_RL78_ABS8UL:
+	  case R_RL78_ABS8UW:
+	  case R_RL78_ABS8S_PCREL:
+	  case R_RL78_ABS8S:
+	  case R_RL78_OPneg:
+	  case R_RL78_OPadd:
+	  case R_RL78_OPsub:
+	  case R_RL78_OPmul:
+	  case R_RL78_OPdiv:
+	  case R_RL78_OPshla:
+	  case R_RL78_OPshra:
+	  case R_RL78_OPsctsize:
+	  case R_RL78_OPscttop:
+	  case R_RL78_OPand:
+	  case R_RL78_OPor:
+	  case R_RL78_OPxor:
+	  case R_RL78_OPnot:
+	  case R_RL78_OPmod:
+	    relocation = rl78_compute_complex_reloc (r_type, 0, input_section,
+						     &r, &error_message);
 
-	case R_RL78_SYM:
-	  if (r_symndx < symtab_hdr->sh_info)
-	    relocation = sec->output_section->vma + sec->output_offset
-	      + sym->st_value + rel->r_addend;
-	  else if (h != NULL
-		   && (h->root.type == bfd_link_hash_defined
-		       || h->root.type == bfd_link_hash_defweak))
-	    relocation = h->root.u.def.value
-	      + sec->output_section->vma
-	      + sec->output_offset
-	      + rel->r_addend;
-	  else
-	    {
-	      relocation = 0;
-	      if (h->root.type != bfd_link_hash_undefweak)
-		_bfd_error_handler
-		  (_("warning: RL78_SYM reloc with an unknown symbol"));
-	    }
-	  (void) rl78_compute_complex_reloc (r_type, relocation, input_section);
-	  break;
+	    switch (r_type)
+	      {
+	      case R_RL78_ABS32:
+		OP (0) = relocation;
+		OP (1) = relocation >> 8;
+		OP (2) = relocation >> 16;
+		OP (3) = relocation >> 24;
+		break;
+
+	      case R_RL78_ABS32_REV:
+		OP (3) = relocation;
+		OP (2) = relocation >> 8;
+		OP (1) = relocation >> 16;
+		OP (0) = relocation >> 24;
+		break;
+
+	      case R_RL78_ABS24S_PCREL:
+	      case R_RL78_ABS24S:
+		OP (0) = relocation;
+		OP (1) = relocation >> 8;
+		OP (2) = relocation >> 16;
+		break;
+
+	      case R_RL78_ABS16:
+		OP (0) = relocation;
+		OP (1) = relocation >> 8;
+		break;
+
+	      case R_RL78_ABS16_REV:
+		OP (1) = relocation;
+		OP (0) = relocation >> 8;
+		break;
+
+	      case R_RL78_ABS16S_PCREL:
+	      case R_RL78_ABS16S:
+		OP (0) = relocation;
+		OP (1) = relocation >> 8;
+		break;
+
+	      case R_RL78_ABS16U:
+	      case R_RL78_ABS16UL:
+	      case R_RL78_ABS16UW:
+		OP (0) = relocation;
+		OP (1) = relocation >> 8;
+		break;
+
+	      case R_RL78_ABS8:
+		OP (0) = relocation;
+		break;
+
+	      case R_RL78_ABS8U:
+	      case R_RL78_ABS8UL:
+	      case R_RL78_ABS8UW:
+		OP (0) = relocation;
+		break;
+
+	      case R_RL78_ABS8S_PCREL:
+	      case R_RL78_ABS8S:
+		OP (0) = relocation;
+		break;
 
-	case R_RL78_OPromtop:
-	  relocation = get_romstart (info, input_bfd, input_section, rel->r_offset);
-	  (void) rl78_compute_complex_reloc (r_type, relocation, input_section);
-	  break;
+	      default:
+		break;
+	      }
+	    break;
 
-	case R_RL78_OPramtop:
-	  relocation = get_ramstart (info, input_bfd, input_section, rel->r_offset);
-	  (void) rl78_compute_complex_reloc (r_type, relocation, input_section);
-	  break;
+	  case R_RL78_SYM:
+	    if (r_symndx < symtab_hdr->sh_info)
+	      relocation = sec->output_section->vma + sec->output_offset
+		+ sym->st_value + rel->r_addend;
+	    else if (h != NULL
+		     && (h->root.type == bfd_link_hash_defined
+			 || h->root.type == bfd_link_hash_defweak))
+	      relocation = h->root.u.def.value
+		+ sec->output_section->vma
+		+ sec->output_offset
+		+ rel->r_addend;
+	    else
+	      {
+		relocation = 0;
+		if (h->root.type != bfd_link_hash_undefweak)
+		  _bfd_error_handler
+		    (_("warning: RL78_SYM reloc with an unknown symbol"));
+	      }
+	    (void) rl78_compute_complex_reloc (r_type, relocation, input_section,
+					       &r, &error_message);
+	    break;
+
+	  case R_RL78_OPromtop:
+	    relocation = get_romstart (info, input_bfd, input_section,
+				       rel->r_offset);
+	    (void) rl78_compute_complex_reloc (r_type, relocation, input_section,
+					       &r, &error_message);
+	    break;
+
+	  case R_RL78_OPramtop:
+	    relocation = get_ramstart (info, input_bfd, input_section,
+				       rel->r_offset);
+	    (void) rl78_compute_complex_reloc (r_type, relocation, input_section,
+					       &r, &error_message);
+	    break;
+
+	  default:
+	    r = bfd_reloc_notsupported;
+	    break;
+	  }
 
-	default:
-	  r = bfd_reloc_notsupported;
-	  break;
-	}
+      if (r == bfd_reloc_ok)
+	r = check_overflow (howto, relocation);
 
       if (r != bfd_reloc_ok)
 	{
-	  const char * msg = NULL;
-
 	  switch (r)
 	    {
 	    case bfd_reloc_overflow:
-	      /* Catch the case of a missing function declaration
-		 and emit a more helpful error message.  */
-	      if (r_type == R_RL78_DIR24S_PCREL)
-		/* xgettext:c-format */
-		msg = _("%pB(%pA): error: call to undefined function '%s'");
-	      else
-		(*info->callbacks->reloc_overflow)
-		  (info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
-		   input_bfd, input_section, rel->r_offset);
+	      (*info->callbacks->reloc_overflow)
+		(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
+		 input_bfd, input_section, rel->r_offset);
 	      break;
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
-	      break;
-
-	    case bfd_reloc_other:
-	      /* xgettext:c-format */
-	      msg = _("%pB(%pA): warning: unaligned access to symbol '%s' in the small data area");
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
-	      /* xgettext:c-format */
-	      msg = _("%pB(%pA): internal error: out of range error");
+	       /* xgettext:c-format */
+	      (*info->callbacks->einfo)
+		(_("%H: %s out of range\n"),
+		 input_bfd, input_section, rel->r_offset, howto->name);
 	      break;
 
 	    case bfd_reloc_notsupported:
 	      /* xgettext:c-format */
-	      msg = _("%pB(%pA): internal error: unsupported relocation error");
+	      (*info->callbacks->einfo)
+		(_("%H: relocation type %u is not supported\n"),
+		 input_bfd, input_section, rel->r_offset, r_type);
 	      break;
 
 	    case bfd_reloc_dangerous:
-	      /* xgettext:c-format */
-	      msg = _("%pB(%pA): internal error: dangerous relocation");
+	      (*info->callbacks->reloc_dangerous)
+		(info, error_message, input_bfd, input_section, rel->r_offset);
 	      break;
 
 	    default:
 	      /* xgettext:c-format */
-	      msg = _("%pB(%pA): internal error: unknown error");
+	      (*info->callbacks->einfo)
+		(_("%H: relocation %s returns an unrecognized value %x\n"),
+		 input_bfd, input_section, rel->r_offset, howto->name, r);
 	      break;
 	    }
-
-	  if (msg)
-	    _bfd_error_handler (msg, input_bfd, input_section, name);
+	  ret = false;
 	}
     }
 
-  return TRUE;
+  return ret;
 }
 
 /* Function to set the ELF flag bits.  */
 
-static bfd_boolean
+static bool
 rl78_elf_set_private_flags (bfd * abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
-static bfd_boolean no_warn_mismatch = FALSE;
+static bool no_warn_mismatch = false;
 
-void bfd_elf32_rl78_set_target_flags (bfd_boolean);
+void bfd_elf32_rl78_set_target_flags (bool);
 
 void
-bfd_elf32_rl78_set_target_flags (bfd_boolean user_no_warn_mismatch)
+bfd_elf32_rl78_set_target_flags (bool user_no_warn_mismatch)
 {
   no_warn_mismatch = user_no_warn_mismatch;
 }
@@ -1162,13 +1178,13 @@ rl78_cpu_name (flagword flags)
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 rl78_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword new_flags;
   flagword old_flags;
-  bfd_boolean error = FALSE;
+  bool error = false;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
@@ -1176,7 +1192,7 @@ rl78_elf_merge_private_bfd_data (bfd *ib
   if (!elf_flags_init (obfd))
     {
       /* First call, no flags set.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
   else if (old_flags != new_flags)
@@ -1198,7 +1214,7 @@ rl78_elf_merge_private_bfd_data (bfd *ib
 		     If the output is set to "any" this means that it is
 		     a G14 file that does not use hardware multiply/divide,
 		     but that is still incompatible with the G10 ABI.  */
-		  error = TRUE;
+		  error = true;
 
 		  _bfd_error_handler
 		    /* xgettext:c-format */
@@ -1215,7 +1231,7 @@ rl78_elf_merge_private_bfd_data (bfd *ib
 	    }
 	  else
 	    {
-	      error = TRUE;
+	      error = true;
 
 	      _bfd_error_handler
 		/* xgettext:c-format */
@@ -1238,14 +1254,14 @@ rl78_elf_merge_private_bfd_data (bfd *ib
 	    /* xgettext:c-format */
 	    _bfd_error_handler (_("- %pB is 64-bit, %pB is not"),
 				ibfd, obfd);
-	  error = TRUE;
+	  error = true;
 	}
     }
 
   return !error;
 }
 
-static bfd_boolean
+static bool
 rl78_elf_print_private_bfd_data (bfd * abfd, void * ptr)
 {
   FILE * file = (FILE *) ptr;
@@ -1266,7 +1282,7 @@ rl78_elf_print_private_bfd_data (bfd * a
     fprintf (file, _(" [64-bit doubles]"));
 
   fputc ('\n', file);
-  return TRUE;
+  return true;
 }
 
 /* Return the MACH for an e_flags value.  */
@@ -1277,12 +1293,12 @@ elf32_rl78_machine (bfd * abfd ATTRIBUTE
   return bfd_mach_rl78;
 }
 
-static bfd_boolean
+static bool
 rl78_elf_object_p (bfd * abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_rl78,
 			     elf32_rl78_machine (abfd));
-  return TRUE;
+  return true;
 }
 
 /* support PLT for 16-bit references to 24-bit functions.  */
@@ -1290,7 +1306,7 @@ rl78_elf_object_p (bfd * abfd)
 /* We support 16-bit pointers to code above 64k by generating a thunk
    below 64k containing a JMP instruction to the final address.  */
 
-static bfd_boolean
+static bool
 rl78_elf_check_relocs
     (bfd *		       abfd,
      struct bfd_link_info *    info,
@@ -1306,7 +1322,7 @@ rl78_elf_check_relocs
   bfd *dynobj;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -1350,7 +1366,7 @@ rl78_elf_check_relocs
 	      elf_hash_table (info)->splt = splt;
 	      if (splt == NULL
 		  || !bfd_set_section_alignment (splt, 1))
-		return FALSE;
+		return false;
 	    }
 
 	  if (h != NULL)
@@ -1365,7 +1381,7 @@ rl78_elf_check_relocs
 		  size = symtab_hdr->sh_info * sizeof (bfd_vma);
 		  local_plt_offsets = (bfd_vma *) bfd_alloc (abfd, size);
 		  if (local_plt_offsets == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_offsets (abfd) = local_plt_offsets;
 
 		  for (i = 0; i < symtab_hdr->sh_info; i++)
@@ -1383,12 +1399,12 @@ rl78_elf_check_relocs
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This must exist if dynobj is ever set.  */
 
-static bfd_boolean
+static bool
 rl78_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
 				  struct bfd_link_info *info)
 {
@@ -1396,7 +1412,7 @@ rl78_elf_finish_dynamic_sections (bfd *a
   asection *splt;
 
   if (!elf_hash_table (info)->dynamic_sections_created)
-    return TRUE;
+    return true;
 
   /* As an extra sanity check, verify that all plt entries have been
      filled in.  However, relaxing might have changed the relocs so
@@ -1405,7 +1421,7 @@ rl78_elf_finish_dynamic_sections (bfd *a
      called before relaxation.  */
 
   if (info->relax_trip > 0)
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   splt = elf_hash_table (info)->splt;
@@ -1421,31 +1437,32 @@ rl78_elf_finish_dynamic_sections (bfd *a
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-rl78_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-			       struct bfd_link_info *info)
+static bool
+rl78_elf_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			      struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *splt;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   if (dynobj == NULL)
-    return TRUE;
+    return true;
 
   splt = elf_hash_table (info)->splt;
   BFD_ASSERT (splt != NULL);
 
   splt->contents = (bfd_byte *) bfd_zalloc (dynobj, splt->size);
   if (splt->contents == NULL)
-    return FALSE;
+    return false;
+  splt->alloced = 1;
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1458,10 +1475,10 @@ rl78_elf_always_size_sections (bfd *outp
 struct relax_plt_data
 {
   asection *splt;
-  bfd_boolean *again;
+  bool *again;
 };
 
-static bfd_boolean
+static bool
 rl78_relax_plt_check (struct elf_link_hash_entry *h, void * xdata)
 {
   struct relax_plt_data *data = (struct relax_plt_data *) xdata;
@@ -1482,17 +1499,17 @@ rl78_relax_plt_check (struct elf_link_ha
 	{
 	  h->plt.offset = -1;
 	  data->splt->size -= 4;
-	  *data->again = TRUE;
+	  *data->again = true;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* A subroutine of rl78_elf_relax_section.  If the global symbol H
    previously had a plt entry, give it a new entry offset.  */
 
-static bfd_boolean
+static bool
 rl78_relax_plt_realloc (struct elf_link_hash_entry *h, void * xdata)
 {
   bfd_vma *entry = (bfd_vma *) xdata;
@@ -1503,32 +1520,32 @@ rl78_relax_plt_realloc (struct elf_link_
       *entry += 4;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 rl78_elf_relax_plt_section (bfd *dynobj,
 			    asection *splt,
 			    struct bfd_link_info *info,
-			    bfd_boolean *again)
+			    bool *again)
 {
   struct relax_plt_data relax_plt_data;
   bfd *ibfd;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* We only relax the .plt section at the moment.  */
   if (dynobj != elf_hash_table (info)->dynobj
       || strcmp (splt->name, ".plt") != 0)
-    return TRUE;
+    return true;
 
   /* Quick check for an empty plt.  */
   if (splt->size == 0)
-    return TRUE;
+    return true;
 
   /* Map across all global symbols; see which ones happen to
      fall in the low 64k.  */
@@ -1558,7 +1575,7 @@ rl78_elf_relax_plt_section (bfd *dynobj,
 					    symtab_hdr->sh_info, 0,
 					    NULL, NULL, NULL);
 	  if (isymbuf == NULL)
-	    return FALSE;
+	    return false;
 	}
 
       for (idx = 0; idx < symtab_hdr->sh_info; ++idx)
@@ -1587,7 +1604,7 @@ rl78_elf_relax_plt_section (bfd *dynobj,
 	    {
 	      local_plt_offsets[idx] = -1;
 	      splt->size -= 4;
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -1631,12 +1648,12 @@ rl78_elf_relax_plt_section (bfd *dynobj,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 elf32_rl78_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count,
 			       Elf_Internal_Rela *alignment_rel, int force_snip)
 {
@@ -1668,7 +1685,7 @@ elf32_rl78_relax_delete_bytes (bfd *abfd
   irel = elf_section_data (sec)->relocs;
   if (irel == NULL)
     {
-      _bfd_elf_link_read_relocs (sec->owner, sec, NULL, NULL, TRUE);
+      _bfd_elf_link_read_relocs (sec->owner, sec, NULL, NULL, true);
       irel = elf_section_data (sec)->relocs;
     }
 
@@ -1755,7 +1772,7 @@ elf32_rl78_relax_delete_bytes (bfd *abfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Used to sort relocs by address.  If relocs have the same address,
@@ -1766,34 +1783,34 @@ static void
 reloc_bubblesort (Elf_Internal_Rela * r, int count)
 {
   int i;
-  bfd_boolean again;
-  bfd_boolean swappit;
+  bool again;
+  bool swappit;
 
   /* This is almost a classic bubblesort.  It's the slowest sort, but
      we're taking advantage of the fact that the relocations are
      mostly in order already (the assembler emits them that way) and
      we need relocs with the same address to remain in the same
      relative order.  */
-  again = TRUE;
+  again = true;
   while (again)
     {
-      again = FALSE;
+      again = false;
       for (i = 0; i < count - 1; i ++)
 	{
 	  if (r[i].r_offset > r[i + 1].r_offset)
-	    swappit = TRUE;
+	    swappit = true;
 	  else if (r[i].r_offset < r[i + 1].r_offset)
-	    swappit = FALSE;
+	    swappit = false;
 	  else if (ELF32_R_TYPE (r[i + 1].r_info) == R_RL78_RH_RELAX
 		   && (r[i + 1].r_addend & RL78_RELAXA_ALIGN))
-	    swappit = TRUE;
+	    swappit = true;
 	  else if (ELF32_R_TYPE (r[i + 1].r_info) == R_RL78_RH_RELAX
 		   && (r[i + 1].r_addend & RL78_RELAXA_ELIGN)
 		   && !(ELF32_R_TYPE (r[i].r_info) == R_RL78_RH_RELAX
 			&& (r[i].r_addend & RL78_RELAXA_ALIGN)))
-	    swappit = TRUE;
+	    swappit = true;
 	  else
-	    swappit = FALSE;
+	    swappit = false;
 
 	  if (swappit)
 	    {
@@ -1807,7 +1824,7 @@ reloc_bubblesort (Elf_Internal_Rela * r,
 		 most of the O(n^2) behavior for our cases.  */
 	      if (i > 0)
 		i -= 2;
-	      again = TRUE;
+	      again = true;
 	    }
 	}
     }
@@ -1822,7 +1839,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,
@@ -1917,17 +1934,20 @@ rl78_offset_for_reloc (bfd *			abfd,
       switch (r_type)
 	{
 	case R_RL78_SYM:
-	  (void) rl78_compute_complex_reloc (r_type, symval, input_section);
+	  (void) rl78_compute_complex_reloc (r_type, symval, input_section,
+					     NULL, NULL);
 	  break;
 
 	case R_RL78_OPromtop:
 	  symval = get_romstart (info, input_bfd, input_section, rel->r_offset);
-	  (void) rl78_compute_complex_reloc (r_type, symval, input_section);
+	  (void) rl78_compute_complex_reloc (r_type, symval, input_section,
+					     NULL, NULL);
 	  break;
 
 	case R_RL78_OPramtop:
 	  symval = get_ramstart (info, input_bfd, input_section, rel->r_offset);
-	  (void) rl78_compute_complex_reloc (r_type, symval, input_section);
+	  (void) rl78_compute_complex_reloc (r_type, symval, input_section,
+					     NULL, NULL);
 	  break;
 
 	case R_RL78_OPneg:
@@ -1944,7 +1964,8 @@ rl78_offset_for_reloc (bfd *			abfd,
 	case R_RL78_OPxor:
 	case R_RL78_OPnot:
 	case R_RL78_OPmod:
-	  (void) rl78_compute_complex_reloc (r_type, 0, input_section);
+	  (void) rl78_compute_complex_reloc (r_type, 0, input_section,
+					     NULL, NULL);
 	  break;
 
 	case R_RL78_DIR16UL:
@@ -1963,7 +1984,8 @@ rl78_offset_for_reloc (bfd *			abfd,
 
 	default:
 	reloc_computes_value:
-	  symval = rl78_compute_complex_reloc (r_type, symval, input_section);
+	  symval = rl78_compute_complex_reloc (r_type, symval, input_section,
+					       NULL, NULL);
 	  /* Fall through.  */
 	case R_RL78_DIR32:
 	case R_RL78_DIR24S:
@@ -1982,7 +2004,7 @@ rl78_offset_for_reloc (bfd *			abfd,
     }
 }
 
-struct {
+const struct {
   int prefix;		/* or -1 for "no prefix" */
   int insn;		/* or -1 for "end of list" */
   int insn_for_saddr;	/* or -1 for "no alternative" */
@@ -2049,12 +2071,11 @@ struct {
 
 /* Relax one section.  */
 
-static bfd_boolean
-rl78_elf_relax_section
-    (bfd *		    abfd,
-     asection *		    sec,
-     struct bfd_link_info * link_info,
-     bfd_boolean *	    again)
+static bool
+rl78_elf_relax_section (bfd *abfd,
+			asection *sec,
+			struct bfd_link_info *link_info,
+			bool *again)
 {
   Elf_Internal_Shdr * symtab_hdr;
   Elf_Internal_Shdr * shndx_hdr;
@@ -2068,7 +2089,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;
@@ -2081,16 +2102,17 @@ rl78_elf_relax_section
     return rl78_elf_relax_plt_section (abfd, sec, link_info, again);
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = & elf_symtab_hdr (abfd);
   if (elf_symtab_shndx_list (abfd))
@@ -2121,17 +2143,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.  */
@@ -2229,7 +2254,7 @@ rl78_elf_relax_section
 
 	  elf32_rl78_relax_delete_bytes (abfd, sec, erel->r_offset - nbytes, nbytes,
 					 next_alignment, erel->r_offset == sec->size);
-	  *again = TRUE;
+	  *again = true;
 
 	  continue;
 	}
@@ -2330,7 +2355,7 @@ rl78_elf_relax_section
 		      SNIPNR (4, 1);
 		      SNIP (1, 2, R_RL78_DIR8S_PCREL);
 		      insn[1] = pcrel;
-		      *again = TRUE;
+		      *again = true;
 		    }
 		}
 	      break;
@@ -2343,7 +2368,7 @@ rl78_elf_relax_section
 		  insn[0] = 0xef;
 		  insn[1] = pcrel;
 		  SNIP (2, 2, R_RL78_DIR8S_PCREL);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      else if (symval < 65536)
 		{
@@ -2351,7 +2376,7 @@ rl78_elf_relax_section
 		  insn[1] = symval & 0xff;
 		  insn[2] = symval >> 8;
 		  SNIP (2, 1, R_RL78_DIR16U);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      else if (pcrel < 32767
 		       && pcrel > -32767)
@@ -2360,7 +2385,7 @@ rl78_elf_relax_section
 		  insn[1] = pcrel & 0xff;
 		  insn[2] = pcrel >> 8;
 		  SNIP (2, 1, R_RL78_DIR16S_PCREL);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2372,7 +2397,7 @@ rl78_elf_relax_section
 		  insn[0] = 0xef;
 		  insn[1] = pcrel;
 		  SNIP (2, 1, R_RL78_DIR8S_PCREL);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2383,7 +2408,7 @@ rl78_elf_relax_section
 		  insn[1] = symval & 0xff;
 		  insn[2] = symval >> 8;
 		  SNIP (2, 1, R_RL78_DIR16U);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      else if (pcrel < 32767
 		       && pcrel > -32767)
@@ -2392,7 +2417,7 @@ rl78_elf_relax_section
 		  insn[1] = pcrel & 0xff;
 		  insn[2] = pcrel >> 8;
 		  SNIP (2, 1, R_RL78_DIR16S_PCREL);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2419,7 +2444,7 @@ rl78_elf_relax_section
 			  SNIPNR (5, 1);
 			  SNIP (2, 2, R_RL78_DIR8S_PCREL);
 			  insn[2] = pcrel;
-			  *again = TRUE;
+			  *again = true;
 			}
 		    }
 		  break;
@@ -2546,14 +2571,11 @@ rl78_elf_relax_section
       /*----------------------------------------------------------------------*/
     }
 
-  return TRUE;
+  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,10 +2583,9 @@ rl78_elf_relax_section
       free (shndx_buf);
     }
 
-  if (free_intsyms != NULL)
-    free (free_intsyms);
+  free (free_intsyms);
 
-  return TRUE;
+  return true;
 }
 
 
@@ -2591,8 +2612,8 @@ rl78_elf_relax_section
 
 #define bfd_elf32_bfd_relax_section		rl78_elf_relax_section
 #define elf_backend_check_relocs		rl78_elf_check_relocs
-#define elf_backend_always_size_sections \
-  rl78_elf_always_size_sections
+#define elf_backend_early_size_sections \
+  rl78_elf_early_size_sections
 #define elf_backend_finish_dynamic_sections \
   rl78_elf_finish_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.20200303/bfd/elf32-rx.c ./bfd/elf32-rx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-rx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-rx.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -41,7 +41,7 @@ void rx_dump_symtab (bfd *, void *, void
 
 #define RXREL(n,sz,bit,shift,complain,pcrel)				     \
   HOWTO (R_RX_##n, shift, sz, bit, pcrel, 0, complain_overflow_ ## complain, \
-	 bfd_elf_generic_reloc, "R_RX_" #n, FALSE, 0, ~0, FALSE)
+	 bfd_elf_generic_reloc, "R_RX_" #n, false, 0, ~0, false)
 
 /* Note that the relocations around 0x7f are internal to this file;
    feel free to move them as needed to avoid conflicts with published
@@ -49,25 +49,25 @@ void rx_dump_symtab (bfd *, void *, void
 
 static reloc_howto_type rx_elf_howto_table [] =
 {
-  RXREL (NONE,	       3,  0, 0, dont,	   FALSE),
-  RXREL (DIR32,	       2, 32, 0, signed,   FALSE),
-  RXREL (DIR24S,       2, 24, 0, signed,   FALSE),
-  RXREL (DIR16,	       1, 16, 0, dont,	   FALSE),
-  RXREL (DIR16U,       1, 16, 0, unsigned, FALSE),
-  RXREL (DIR16S,       1, 16, 0, signed,   FALSE),
-  RXREL (DIR8,	       0,  8, 0, dont,	   FALSE),
-  RXREL (DIR8U,	       0,  8, 0, unsigned, FALSE),
-  RXREL (DIR8S,	       0,  8, 0, signed,   FALSE),
-  RXREL (DIR24S_PCREL, 2, 24, 0, signed,   TRUE),
-  RXREL (DIR16S_PCREL, 1, 16, 0, signed,   TRUE),
-  RXREL (DIR8S_PCREL,  0,  8, 0, signed,   TRUE),
-  RXREL (DIR16UL,      1, 16, 2, unsigned, FALSE),
-  RXREL (DIR16UW,      1, 16, 1, unsigned, FALSE),
-  RXREL (DIR8UL,       0,  8, 2, unsigned, FALSE),
-  RXREL (DIR8UW,       0,  8, 1, unsigned, FALSE),
-  RXREL (DIR32_REV,    1, 16, 0, dont,	   FALSE),
-  RXREL (DIR16_REV,    1, 16, 0, dont,	   FALSE),
-  RXREL (DIR3U_PCREL,  0,  3, 0, dont,	   TRUE),
+  RXREL (NONE,	       0,  0, 0, dont,	   false),
+  RXREL (DIR32,	       4, 32, 0, signed,   false),
+  RXREL (DIR24S,       4, 24, 0, signed,   false),
+  RXREL (DIR16,	       2, 16, 0, dont,	   false),
+  RXREL (DIR16U,       2, 16, 0, unsigned, false),
+  RXREL (DIR16S,       2, 16, 0, signed,   false),
+  RXREL (DIR8,	       1,  8, 0, dont,	   false),
+  RXREL (DIR8U,	       1,  8, 0, unsigned, false),
+  RXREL (DIR8S,	       1,  8, 0, signed,   false),
+  RXREL (DIR24S_PCREL, 4, 24, 0, signed,   true),
+  RXREL (DIR16S_PCREL, 2, 16, 0, signed,   true),
+  RXREL (DIR8S_PCREL,  1,  8, 0, signed,   true),
+  RXREL (DIR16UL,      2, 16, 2, unsigned, false),
+  RXREL (DIR16UW,      2, 16, 1, unsigned, false),
+  RXREL (DIR8UL,       1,  8, 2, unsigned, false),
+  RXREL (DIR8UW,       1,  8, 1, unsigned, false),
+  RXREL (DIR32_REV,    2, 16, 0, dont,	   false),
+  RXREL (DIR16_REV,    2, 16, 0, dont,	   false),
+  RXREL (DIR3U_PCREL,  1,  3, 0, dont,	   true),
 
   EMPTY_HOWTO (0x13),
   EMPTY_HOWTO (0x14),
@@ -83,20 +83,20 @@ static reloc_howto_type rx_elf_howto_tab
   EMPTY_HOWTO (0x1e),
   EMPTY_HOWTO (0x1f),
 
-  RXREL (RH_3_PCREL, 0,	 3, 0, signed,	 TRUE),
-  RXREL (RH_16_OP,   1, 16, 0, signed,	 FALSE),
-  RXREL (RH_24_OP,   2, 24, 0, signed,	 FALSE),
-  RXREL (RH_32_OP,   2, 32, 0, signed,	 FALSE),
-  RXREL (RH_24_UNS,  2, 24, 0, unsigned, FALSE),
-  RXREL (RH_8_NEG,   0,	 8, 0, signed,	 FALSE),
-  RXREL (RH_16_NEG,  1, 16, 0, signed,	 FALSE),
-  RXREL (RH_24_NEG,  2, 24, 0, signed,	 FALSE),
-  RXREL (RH_32_NEG,  2, 32, 0, signed,	 FALSE),
-  RXREL (RH_DIFF,    2, 32, 0, signed,	 FALSE),
-  RXREL (RH_GPRELB,  1, 16, 0, unsigned, FALSE),
-  RXREL (RH_GPRELW,  1, 16, 0, unsigned, FALSE),
-  RXREL (RH_GPRELL,  1, 16, 0, unsigned, FALSE),
-  RXREL (RH_RELAX,   0,	 0, 0, dont,	 FALSE),
+  RXREL (RH_3_PCREL, 1,	 3, 0, signed,	 true),
+  RXREL (RH_16_OP,   2, 16, 0, signed,	 false),
+  RXREL (RH_24_OP,   4, 24, 0, signed,	 false),
+  RXREL (RH_32_OP,   4, 32, 0, signed,	 false),
+  RXREL (RH_24_UNS,  4, 24, 0, unsigned, false),
+  RXREL (RH_8_NEG,   1,	 8, 0, signed,	 false),
+  RXREL (RH_16_NEG,  2, 16, 0, signed,	 false),
+  RXREL (RH_24_NEG,  4, 24, 0, signed,	 false),
+  RXREL (RH_32_NEG,  4, 32, 0, signed,	 false),
+  RXREL (RH_DIFF,    4, 32, 0, signed,	 false),
+  RXREL (RH_GPRELB,  2, 16, 0, unsigned, false),
+  RXREL (RH_GPRELW,  2, 16, 0, unsigned, false),
+  RXREL (RH_GPRELL,  2, 16, 0, unsigned, false),
+  RXREL (RH_RELAX,   0,	 0, 0, dont,	 false),
 
   EMPTY_HOWTO (0x2e),
   EMPTY_HOWTO (0x2f),
@@ -118,23 +118,23 @@ static reloc_howto_type rx_elf_howto_tab
   EMPTY_HOWTO (0x3f),
   EMPTY_HOWTO (0x40),
 
-  RXREL (ABS32,	       2, 32, 0, dont,	   FALSE),
-  RXREL (ABS24S,       2, 24, 0, signed,   FALSE),
-  RXREL (ABS16,	       1, 16, 0, dont,	   FALSE),
-  RXREL (ABS16U,       1, 16, 0, unsigned, FALSE),
-  RXREL (ABS16S,       1, 16, 0, signed,   FALSE),
-  RXREL (ABS8,	       0,  8, 0, dont,	   FALSE),
-  RXREL (ABS8U,	       0,  8, 0, unsigned, FALSE),
-  RXREL (ABS8S,	       0,  8, 0, signed,   FALSE),
-  RXREL (ABS24S_PCREL, 2, 24, 0, signed,   TRUE),
-  RXREL (ABS16S_PCREL, 1, 16, 0, signed,   TRUE),
-  RXREL (ABS8S_PCREL,  0,  8, 0, signed,   TRUE),
-  RXREL (ABS16UL,      1, 16, 0, unsigned, FALSE),
-  RXREL (ABS16UW,      1, 16, 0, unsigned, FALSE),
-  RXREL (ABS8UL,       0,  8, 0, unsigned, FALSE),
-  RXREL (ABS8UW,       0,  8, 0, unsigned, FALSE),
-  RXREL (ABS32_REV,    2, 32, 0, dont,	   FALSE),
-  RXREL (ABS16_REV,    1, 16, 0, dont,	   FALSE),
+  RXREL (ABS32,	       4, 32, 0, dont,	   false),
+  RXREL (ABS24S,       4, 24, 0, signed,   false),
+  RXREL (ABS16,	       2, 16, 0, dont,	   false),
+  RXREL (ABS16U,       2, 16, 0, unsigned, false),
+  RXREL (ABS16S,       2, 16, 0, signed,   false),
+  RXREL (ABS8,	       1,  8, 0, dont,	   false),
+  RXREL (ABS8U,	       1,  8, 0, unsigned, false),
+  RXREL (ABS8S,	       1,  8, 0, signed,   false),
+  RXREL (ABS24S_PCREL, 4, 24, 0, signed,   true),
+  RXREL (ABS16S_PCREL, 2, 16, 0, signed,   true),
+  RXREL (ABS8S_PCREL,  1,  8, 0, signed,   true),
+  RXREL (ABS16UL,      2, 16, 0, unsigned, false),
+  RXREL (ABS16UW,      2, 16, 0, unsigned, false),
+  RXREL (ABS8UL,       1,  8, 0, unsigned, false),
+  RXREL (ABS8UW,       1,  8, 0, unsigned, false),
+  RXREL (ABS32_REV,    4, 32, 0, dont,	   false),
+  RXREL (ABS16_REV,    2, 16, 0, dont,	   false),
 
 #define STACK_REL_P(x) ((x) <= R_RX_ABS16_REV && (x) >= R_RX_ABS32)
 
@@ -181,44 +181,54 @@ static reloc_howto_type rx_elf_howto_tab
   /* A 5-bit unsigned displacement to a B/W/L address, at bit position 8/12.  */
   /* ---- ----   4--- 3210.  */
 #define R_RX_RH_ABS5p8B 0x78
-  RXREL (RH_ABS5p8B,   0,  0, 0, dont,	   FALSE),
+  RXREL (RH_ABS5p8B,   0,  0, 0, dont,	   false),
 #define R_RX_RH_ABS5p8W 0x79
-  RXREL (RH_ABS5p8W,   0,  0, 0, dont,	   FALSE),
+  RXREL (RH_ABS5p8W,   0,  0, 0, dont,	   false),
 #define R_RX_RH_ABS5p8L 0x7a
-  RXREL (RH_ABS5p8L,   0,  0, 0, dont,	   FALSE),
+  RXREL (RH_ABS5p8L,   0,  0, 0, dont,	   false),
   /* A 5-bit unsigned displacement to a B/W/L address, at bit position 5/12.  */
   /* ---- -432   1--- 0---.  */
 #define R_RX_RH_ABS5p5B 0x7b
-  RXREL (RH_ABS5p5B,   0,  0, 0, dont,	   FALSE),
+  RXREL (RH_ABS5p5B,   0,  0, 0, dont,	   false),
 #define R_RX_RH_ABS5p5W 0x7c
-  RXREL (RH_ABS5p5W,   0,  0, 0, dont,	   FALSE),
+  RXREL (RH_ABS5p5W,   0,  0, 0, dont,	   false),
 #define R_RX_RH_ABS5p5L 0x7d
-  RXREL (RH_ABS5p5L,   0,  0, 0, dont,	   FALSE),
+  RXREL (RH_ABS5p5L,   0,  0, 0, dont,	   false),
   /* A 4-bit unsigned immediate at bit position 8.  */
 #define R_RX_RH_UIMM4p8 0x7e
-  RXREL (RH_UIMM4p8,   0,  0, 0, dont,	   FALSE),
+  RXREL (RH_UIMM4p8,   0,  0, 0, dont,	   false),
   /* A 4-bit negative unsigned immediate at bit position 8.  */
 #define R_RX_RH_UNEG4p8 0x7f
-  RXREL (RH_UNEG4p8,   0,  0, 0, dont,	   FALSE),
+  RXREL (RH_UNEG4p8,   0,  0, 0, dont,	   false),
   /* End of internal relocs.  */
 
-  RXREL (SYM,	    2, 32, 0, dont, FALSE),
-  RXREL (OPneg,	    2, 32, 0, dont, FALSE),
-  RXREL (OPadd,	    2, 32, 0, dont, FALSE),
-  RXREL (OPsub,	    2, 32, 0, dont, FALSE),
-  RXREL (OPmul,	    2, 32, 0, dont, FALSE),
-  RXREL (OPdiv,	    2, 32, 0, dont, FALSE),
-  RXREL (OPshla,    2, 32, 0, dont, FALSE),
-  RXREL (OPshra,    2, 32, 0, dont, FALSE),
-  RXREL (OPsctsize, 2, 32, 0, dont, FALSE),
-  RXREL (OPscttop,  2, 32, 0, dont, FALSE),
-  RXREL (OPand,	    2, 32, 0, dont, FALSE),
-  RXREL (OPor,	    2, 32, 0, dont, FALSE),
-  RXREL (OPxor,	    2, 32, 0, dont, FALSE),
-  RXREL (OPnot,	    2, 32, 0, dont, FALSE),
-  RXREL (OPmod,	    2, 32, 0, dont, FALSE),
-  RXREL (OPromtop,  2, 32, 0, dont, FALSE),
-  RXREL (OPramtop,  2, 32, 0, dont, FALSE)
+  RXREL (SYM,	    4, 32, 0, dont, false),
+  RXREL (OPneg,	    4, 32, 0, dont, false),
+  RXREL (OPadd,	    4, 32, 0, dont, false),
+  RXREL (OPsub,	    4, 32, 0, dont, false),
+  RXREL (OPmul,	    4, 32, 0, dont, false),
+  RXREL (OPdiv,	    4, 32, 0, dont, false),
+  RXREL (OPshla,    4, 32, 0, dont, false),
+  RXREL (OPshra,    4, 32, 0, dont, false),
+  RXREL (OPsctsize, 4, 32, 0, dont, false),
+
+  EMPTY_HOWTO (0x89),
+  EMPTY_HOWTO (0x8a),
+  EMPTY_HOWTO (0x8b),
+  EMPTY_HOWTO (0x8c),
+
+  RXREL (OPscttop,  4, 32, 0, dont, false),
+
+  EMPTY_HOWTO (0x8e),
+  EMPTY_HOWTO (0x8f),
+
+  RXREL (OPand,	    4, 32, 0, dont, false),
+  RXREL (OPor,	    4, 32, 0, dont, false),
+  RXREL (OPxor,	    4, 32, 0, dont, false),
+  RXREL (OPnot,	    4, 32, 0, dont, false),
+  RXREL (OPmod,	    4, 32, 0, dont, false),
+  RXREL (OPromtop,  4, 32, 0, dont, false),
+  RXREL (OPramtop,  4, 32, 0, dont, false)
 };
 
 /* Map BFD reloc types to RX ELF reloc types.  */
@@ -299,7 +309,7 @@ rx_reloc_name_lookup (bfd * abfd ATTRIBU
 
 /* Set the howto pointer for an RX ELF reloc.  */
 
-static bfd_boolean
+static bool
 rx_info_to_howto_rela (bfd *		   abfd,
 		       arelent *	   cache_ptr,
 		       Elf_Internal_Rela * dst)
@@ -307,13 +317,14 @@ rx_info_to_howto_rela (bfd *		   abfd,
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  if (r_type >= (unsigned int) R_RX_max)
+  BFD_ASSERT (R_RX_max == ARRAY_SIZE (rx_elf_howto_table));
+  if (r_type >= ARRAY_SIZE (rx_elf_howto_table))
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = rx_elf_howto_table + r_type;
   if (cache_ptr->howto->name == NULL)
@@ -322,9 +333,9 @@ rx_info_to_howto_rela (bfd *		   abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 static bfd_vma
@@ -337,13 +348,13 @@ get_symbol_value (const char *		  name,
   bfd_vma value = 0;
   struct bfd_link_hash_entry * h;
 
-  h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, name, false, false, true);
 
   if (h == NULL
       || (h->type != bfd_link_hash_defined
 	  && h->type != bfd_link_hash_defweak))
     (*info->callbacks->undefined_symbol)
-      (info, name, input_bfd, input_section, offset, TRUE);
+      (info, name, input_bfd, input_section, offset, true);
   else
     value = (h->u.def.value
 	     + h->u.def.section->output_section->vma
@@ -359,7 +370,7 @@ get_symbol_value_maybe (const char *		na
   bfd_vma value = 0;
   struct bfd_link_hash_entry * h;
 
-  h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, name, false, false, true);
 
   if (h == NULL
       || (h->type != bfd_link_hash_defined
@@ -379,13 +390,13 @@ get_gp (struct bfd_link_info *	info,
 	asection *		sec,
 	int			offset)
 {
-  static bfd_boolean cached = FALSE;
-  static bfd_vma     cached_value = 0;
+  static bool cached = false;
+  static bfd_vma cached_value = 0;
 
   if (!cached)
     {
       cached_value = get_symbol_value ("__gp", info, abfd, sec, offset);
-      cached = TRUE;
+      cached = true;
     }
   return cached_value;
 }
@@ -396,13 +407,13 @@ get_romstart (struct bfd_link_info *  in
 	      asection *	      sec,
 	      int		      offset)
 {
-  static bfd_boolean cached = FALSE;
-  static bfd_vma     cached_value = 0;
+  static bool cached = false;
+  static bfd_vma cached_value = 0;
 
   if (!cached)
     {
       cached_value = get_symbol_value ("_start", info, abfd, sec, offset);
-      cached = TRUE;
+      cached = true;
     }
   return cached_value;
 }
@@ -413,13 +424,13 @@ get_ramstart (struct bfd_link_info *  in
 	      asection *	      sec,
 	      int		      offset)
 {
-  static bfd_boolean cached = FALSE;
-  static bfd_vma     cached_value = 0;
+  static bool cached = false;
+  static bfd_vma cached_value = 0;
 
   if (!cached)
     {
       cached_value = get_symbol_value ("__datastart", info, abfd, sec, offset);
-      cached = TRUE;
+      cached = true;
     }
   return cached_value;
 }
@@ -481,7 +492,7 @@ static unsigned int rx_stack_top;
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 rx_elf_relocate_section
     (bfd *		     output_bfd,
      struct bfd_link_info *  info,
@@ -492,36 +503,36 @@ rx_elf_relocate_section
      Elf_Internal_Sym *	     local_syms,
      asection **	     local_sections)
 {
-  Elf_Internal_Shdr *		symtab_hdr;
-  struct elf_link_hash_entry ** sym_hashes;
-  Elf_Internal_Rela *		rel;
-  Elf_Internal_Rela *		relend;
-  bfd_boolean			pid_mode;
-  bfd_boolean			saw_subtract = FALSE;
-  const char *			table_default_cache = NULL;
-  bfd_vma			table_start_cache = 0;
-  bfd_vma			table_end_cache = 0;
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  Elf_Internal_Rela *rel;
+  Elf_Internal_Rela *relend;
+  bool pid_mode;
+  bool saw_subtract = false;
+  const char *table_default_cache = NULL;
+  bfd_vma table_start_cache = 0;
+  bfd_vma table_end_cache = 0;
 
   if (elf_elfheader (output_bfd)->e_flags & E_FLAG_RX_PID)
-    pid_mode = TRUE;
+    pid_mode = true;
   else
-    pid_mode = FALSE;
+    pid_mode = false;
 
   symtab_hdr = & elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
   relend     = relocs + input_section->reloc_count;
   for (rel = relocs; rel < relend; rel ++)
     {
-      reloc_howto_type *	   howto;
-      unsigned long		   r_symndx;
-      Elf_Internal_Sym *	   sym;
-      asection *		   sec;
-      struct elf_link_hash_entry * h;
-      bfd_vma			   relocation;
-      bfd_reloc_status_type	   r;
-      const char *		   name = NULL;
-      bfd_boolean		   unresolved_reloc = TRUE;
-      int			   r_type;
+      reloc_howto_type *howto;
+      unsigned long r_symndx;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      struct elf_link_hash_entry *h;
+      bfd_vma relocation;
+      bfd_reloc_status_type r;
+      const char * name = NULL;
+      bool unresolved_reloc = true;
+      int r_type;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       r_symndx = ELF32_R_SYM (rel->r_info);
@@ -533,7 +544,7 @@ rx_elf_relocate_section
       relocation = 0;
 
       if (rx_stack_top == 0)
-	saw_subtract = FALSE;
+	saw_subtract = false;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -547,7 +558,7 @@ rx_elf_relocate_section
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes, h,
@@ -557,7 +568,7 @@ rx_elf_relocate_section
 	  name = h->root.root.string;
 	}
 
-      if (strncmp (name, "$tableentry$default$", 20) == 0)
+      if (startswith (name, "$tableentry$default$"))
 	{
 	  bfd_vma entry_vma;
 	  int idx;
@@ -576,7 +587,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,10 +631,13 @@ 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);
+	      h = (struct elf_link_hash_entry *) bfd_link_hash_lookup (info->hash, buf, false, false, true);
 
 	      if (h)
 		{
@@ -636,7 +652,8 @@ rx_elf_relocate_section
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_RX_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -1293,7 +1310,7 @@ rx_elf_relocate_section
 	  {
 	    int32_t tmp;
 
-	    saw_subtract = TRUE;
+	    saw_subtract = true;
 	    RX_STACK_POP (tmp);
 	    tmp = - tmp;
 	    RX_STACK_PUSH (tmp);
@@ -1315,7 +1332,7 @@ rx_elf_relocate_section
 	  {
 	    int32_t tmp1, tmp2;
 
-	    saw_subtract = TRUE;
+	    saw_subtract = true;
 	    RX_STACK_POP (tmp1);
 	    RX_STACK_POP (tmp2);
 	    tmp2 -= tmp1;
@@ -1462,7 +1479,7 @@ rx_elf_relocate_section
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_other:
@@ -1496,7 +1513,7 @@ rx_elf_relocate_section
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relaxation Support.  */
@@ -1554,7 +1571,7 @@ next_smaller_reloc (int r)
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 elf32_rx_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, int count,
 			     Elf_Internal_Rela *alignment_rel, int force_snip,
 			     Elf_Internal_Rela *irelstart)
@@ -1671,7 +1688,7 @@ elf32_rx_relax_delete_bytes (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Used to sort relocs by address.  If relocs have the same address,
@@ -1682,34 +1699,34 @@ static void
 reloc_bubblesort (Elf_Internal_Rela * r, int count)
 {
   int i;
-  bfd_boolean again;
-  bfd_boolean swappit;
+  bool again;
+  bool swappit;
 
   /* This is almost a classic bubblesort.  It's the slowest sort, but
      we're taking advantage of the fact that the relocations are
      mostly in order already (the assembler emits them that way) and
      we need relocs with the same address to remain in the same
      relative order.  */
-  again = TRUE;
+  again = true;
   while (again)
     {
-      again = FALSE;
+      again = false;
       for (i = 0; i < count - 1; i ++)
 	{
 	  if (r[i].r_offset > r[i + 1].r_offset)
-	    swappit = TRUE;
+	    swappit = true;
 	  else if (r[i].r_offset < r[i + 1].r_offset)
-	    swappit = FALSE;
+	    swappit = false;
 	  else if (ELF32_R_TYPE (r[i + 1].r_info) == R_RX_RH_RELAX
 		   && (r[i + 1].r_addend & RX_RELAXA_ALIGN))
-	    swappit = TRUE;
+	    swappit = true;
 	  else if (ELF32_R_TYPE (r[i + 1].r_info) == R_RX_RH_RELAX
 		   && (r[i + 1].r_addend & RX_RELAXA_ELIGN)
 		   && !(ELF32_R_TYPE (r[i].r_info) == R_RX_RH_RELAX
 			&& (r[i].r_addend & RX_RELAXA_ALIGN)))
-	    swappit = TRUE;
+	    swappit = true;
 	  else
-	    swappit = FALSE;
+	    swappit = false;
 
 	  if (swappit)
 	    {
@@ -1723,7 +1740,7 @@ reloc_bubblesort (Elf_Internal_Rela * r,
 		 most of the O(n^2) behavior for our cases.  */
 	      if (i > 0)
 		i -= 2;
-	      again = TRUE;
+	      again = true;
 	    }
 	}
     }
@@ -1738,7 +1755,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,
@@ -1986,26 +2003,26 @@ move_reloc (Elf_Internal_Rela * irel, El
 
 /* Relax one section.  */
 
-static bfd_boolean
-elf32_rx_relax_section (bfd *		       abfd,
-			asection *	       sec,
-			struct bfd_link_info * link_info,
-			bfd_boolean *	       again,
-			bfd_boolean	       allow_pcrel3)
-{
-  Elf_Internal_Shdr * symtab_hdr;
-  Elf_Internal_Shdr * shndx_hdr;
-  Elf_Internal_Rela * internal_relocs;
-  Elf_Internal_Rela * irel;
-  Elf_Internal_Rela * srel;
-  Elf_Internal_Rela * irelend;
-  Elf_Internal_Rela * next_alignment;
-  Elf_Internal_Rela * prev_alignment;
-  bfd_byte *	      contents = NULL;
-  bfd_byte *	      free_contents = NULL;
-  Elf_Internal_Sym *  intsyms = NULL;
-  Elf_Internal_Sym *  free_intsyms = NULL;
-  Elf_External_Sym_Shndx * shndx_buf = NULL;
+static bool
+elf32_rx_relax_section (bfd *abfd,
+			asection *sec,
+			struct bfd_link_info *link_info,
+			bool *again,
+			bool allow_pcrel3)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  Elf_Internal_Shdr *shndx_hdr;
+  Elf_Internal_Rela *internal_relocs;
+  Elf_Internal_Rela *irel;
+  Elf_Internal_Rela *srel;
+  Elf_Internal_Rela *irelend;
+  Elf_Internal_Rela *next_alignment;
+  Elf_Internal_Rela *prev_alignment;
+  bfd_byte *contents = NULL;
+  bfd_byte *free_contents = NULL;
+  Elf_Internal_Sym *intsyms = NULL;
+  Elf_Internal_Sym *free_intsyms = NULL;
+  bfd_byte *shndx_buf = NULL;
   bfd_vma pc;
   bfd_vma sec_start;
   bfd_vma symval = 0;
@@ -2016,16 +2033,17 @@ elf32_rx_relax_section (bfd *		       ab
   int scale;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = & elf_symtab_hdr (abfd);
   if (elf_symtab_shndx_list (abfd))
@@ -2058,17 +2076,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.  */
@@ -2078,7 +2099,7 @@ elf32_rx_relax_section (bfd *		       ab
      as bytes are deleted from the section, and with this relaxation
      function itself being called multiple times on the same section...  */
   internal_relocs = _bfd_elf_link_read_relocs
-    (abfd, sec, NULL, (Elf_Internal_Rela *) NULL, TRUE);
+    (abfd, sec, NULL, (Elf_Internal_Rela *) NULL, true);
   if (internal_relocs == NULL)
     goto error_return;
 
@@ -2171,7 +2192,7 @@ elf32_rx_relax_section (bfd *		       ab
 
 	  elf32_rx_relax_delete_bytes (abfd, sec, erel->r_offset-nbytes, nbytes, next_alignment,
 				       erel->r_offset == sec->size, internal_relocs);
-	  *again = TRUE;
+	  *again = true;
 
 	  continue;
 	}
@@ -2241,7 +2262,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE (srel->r_info))
 		{
 		  SNIP (3, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2249,7 +2270,7 @@ elf32_rx_relax_section (bfd *		       ab
 	    {
 	      insn[0] &= 0xfc;
 	      SNIP (2, 1, R_RX_NONE);
-	      *again = TRUE;
+	      *again = true;
 	    }
 
 	  /* Special case DSP:5 format: MOV.bwl dsp:5[Rsrc],Rdst.  */
@@ -2346,7 +2367,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE (srel->r_info))
 		{
 		  SNIP (offset+1, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2354,7 +2375,7 @@ elf32_rx_relax_section (bfd *		       ab
 	    {
 	      insn[0] &= 0xf3;
 	      SNIP (offset, 1, R_RX_NONE);
-	      *again = TRUE;
+	      *again = true;
 	    }
 	  /* Special case DSP:5 format: MOV.bwl Rsrc,dsp:5[Rdst] */
 	  else if (code == 1 && symval/scale <= 31
@@ -2415,14 +2436,14 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE (srel->r_info))
 		{
 		  SNIP (offset, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 	  else if (code == 1 && symval == 0)
 	    {
 	      insn[1] &= 0xfc;
 	      SNIP (offset, 1, R_RX_NONE);
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -2454,7 +2475,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE (srel->r_info))
 		{
 		  SNIP (2, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2468,7 +2489,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE (srel->r_info))
 		{
 		  SNIP (2, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2493,7 +2514,7 @@ elf32_rx_relax_section (bfd *		       ab
 		newrel = R_RX_DIR8U;
 
 	      SNIP (2, 1, newrel);
-	      *again = TRUE;
+	      *again = true;
 	    }
 
 	  else if (code == 2 && ssymval <= 127 && ssymval >= -128)
@@ -2506,7 +2527,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE (srel->r_info))
 		{
 		  SNIP (2, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2528,7 +2549,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      move_reloc (irel, srel, -1);
 
 	      SNIP (2, 1, R_RX_RH_UIMM4p8);
-	      *again = TRUE;
+	      *again = true;
 	    }
 
 	  /* Special case UIMM4 format: ADD -> ADD/SUB.  */
@@ -2562,7 +2583,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      move_reloc (irel, srel, -1);
 
 	      SNIP (2, 1, newrel);
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -2601,7 +2622,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE (srel->r_info))
 		{
 		  SNIP (offset, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2615,7 +2636,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE (srel->r_info))
 		{
 		  SNIP (offset, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2640,7 +2661,7 @@ elf32_rx_relax_section (bfd *		       ab
 		newrel = R_RX_DIR8U;
 
 	      SNIP (2, 1, newrel);
-	      *again = TRUE;
+	      *again = true;
 	    }
 
 	  else if (code == 2 && ssymval <= 127 && ssymval >= -128)
@@ -2653,7 +2674,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      if (newrel != ELF32_R_TYPE(srel->r_info))
 		{
 		  SNIP (offset, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 
@@ -2673,7 +2694,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      move_reloc (irel, srel, -1);
 
 	      SNIP (2, 1, R_RX_RH_UIMM4p8);
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -2716,7 +2737,7 @@ elf32_rx_relax_section (bfd *		       ab
 		{
 		  insn[0] = 0x38;
 		  SNIP (3, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2726,7 +2747,7 @@ elf32_rx_relax_section (bfd *		       ab
 		{
 		  insn[0] = 0x2e;
 		  SNIP (2, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2743,7 +2764,7 @@ elf32_rx_relax_section (bfd *		       ab
 		  insn[0] = 0x08;
 		  SNIP (1, 1, newrel);
 		  move_reloc (irel, srel, -1);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2753,7 +2774,7 @@ elf32_rx_relax_section (bfd *		       ab
 		{
 		  insn[0] = 0x39;
 		  SNIP (1, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2764,7 +2785,7 @@ elf32_rx_relax_section (bfd *		       ab
 		{
 		  insn[0] = 0x20 | (insn[0] & 1);
 		  SNIP (1, 1, newrel);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2777,7 +2798,7 @@ elf32_rx_relax_section (bfd *		       ab
 		  insn[0] = 0x10 | ((insn[0] & 1) << 3);
 		  SNIP (1, 1, newrel);
 		  move_reloc (irel, srel, -1);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 
@@ -2795,7 +2816,7 @@ elf32_rx_relax_section (bfd *		       ab
 		     will get moved too, and too much.  */
 		  SNIP (3, 2, newrel);
 		  move_reloc (irel, srel, -1);
-		  *again = TRUE;
+		  *again = true;
 		}
 	      break;
 	    }
@@ -2812,7 +2833,7 @@ elf32_rx_relax_section (bfd *		       ab
 	      insn[1] = 0x05;
 	      insn[2] = 0x38;
 	      SNIP (5, 1, newrel);
-	      *again = TRUE;
+	      *again = true;
 	    }
 
 	  /* Special case - synthetic conditional branches, pcrel16 */
@@ -2830,7 +2851,7 @@ elf32_rx_relax_section (bfd *		       ab
 		 delete_bytes move it also.  */
 	      move_reloc (irel, srel, -2);
 	      SNIP (2, 3, newrel);
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -3007,7 +3028,7 @@ elf32_rx_relax_section (bfd *		       ab
 		}
 
 	      SNIPNR (3, ilen - 3);
-	      *again = TRUE;
+	      *again = true;
 
 	      /* We can't relax this new opcode.  */
 	      irel->r_addend = 0;
@@ -3021,16 +3042,15 @@ elf32_rx_relax_section (bfd *		       ab
      don't request a pass after that one!  */
   if (!*again && !allow_pcrel3)
     {
-      bfd_boolean ignored;
+      bool ignored;
 
-      elf32_rx_relax_section (abfd, sec, link_info, &ignored, TRUE);
+      elf32_rx_relax_section (abfd, sec, link_info, &ignored, true);
     }
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (free_contents != NULL)
-    free (free_contents);
+  free (free_contents);
 
   if (shndx_buf != NULL)
     {
@@ -3038,39 +3058,38 @@ elf32_rx_relax_section (bfd *		       ab
       free (shndx_buf);
     }
 
-  if (free_intsyms != NULL)
-    free (free_intsyms);
+  free (free_intsyms);
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
-elf32_rx_relax_section_wrapper (bfd *		       abfd,
-				asection *	       sec,
-				struct bfd_link_info * link_info,
-				bfd_boolean *	       again)
+static bool
+elf32_rx_relax_section_wrapper (bfd *abfd,
+				asection *sec,
+				struct bfd_link_info *link_info,
+				bool *again)
 {
-  return elf32_rx_relax_section (abfd, sec, link_info, again, FALSE);
+  return elf32_rx_relax_section (abfd, sec, link_info, again, false);
 }
 
 /* Function to set the ELF flag bits.  */
 
-static bfd_boolean
+static bool
 rx_elf_set_private_flags (bfd * abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
-static bfd_boolean no_warn_mismatch = FALSE;
-static bfd_boolean ignore_lma = TRUE;
+static bool no_warn_mismatch = false;
+static bool ignore_lma = true;
 
-void bfd_elf32_rx_set_target_flags (bfd_boolean, bfd_boolean);
+void bfd_elf32_rx_set_target_flags (bool, bool);
 
 void
-bfd_elf32_rx_set_target_flags (bfd_boolean user_no_warn_mismatch,
-			       bfd_boolean user_ignore_lma)
+bfd_elf32_rx_set_target_flags (bool user_no_warn_mismatch,
+			       bool user_ignore_lma)
 {
   no_warn_mismatch = user_no_warn_mismatch;
   ignore_lma = user_ignore_lma;
@@ -3080,10 +3099,8 @@ bfd_elf32_rx_set_target_flags (bfd_boole
    Returns a static pointer.  */
 
 static const char *
-describe_flags (flagword flags)
+describe_flags (flagword flags, char *buf)
 {
-  static char buf [128];
-
   buf[0] = 0;
 
   if (flags & E_FLAG_RX_64BIT_DOUBLES)
@@ -3115,13 +3132,13 @@ describe_flags (flagword flags)
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 rx_elf_merge_private_bfd_data (bfd * ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword old_flags;
   flagword new_flags;
-  bfd_boolean error = FALSE;
+  bool error = false;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
@@ -3129,7 +3146,7 @@ rx_elf_merge_private_bfd_data (bfd * ibf
   if (!elf_flags_init (obfd))
     {
       /* First call, no flags set.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
   else if (old_flags != new_flags)
@@ -3164,14 +3181,16 @@ rx_elf_merge_private_bfd_data (bfd * ibf
 	    }
 	  else
 	    {
+	      char buf[128];
+
 	      _bfd_error_handler (_("there is a conflict merging the"
 				    " ELF header flags from %pB"),
 				  ibfd);
 	      _bfd_error_handler (_("  the input  file's flags: %s"),
-				  describe_flags (new_flags));
+				  describe_flags (new_flags, buf));
 	      _bfd_error_handler (_("  the output file's flags: %s"),
-				  describe_flags (old_flags));
-	      error = TRUE;
+				  describe_flags (old_flags, buf));
+	      error = true;
 	    }
 	}
       else
@@ -3184,11 +3203,12 @@ rx_elf_merge_private_bfd_data (bfd * ibf
   return !error;
 }
 
-static bfd_boolean
+static bool
 rx_elf_print_private_bfd_data (bfd * abfd, void * ptr)
 {
   FILE * file = (FILE *) ptr;
   flagword flags;
+  char buf[128];
 
   BFD_ASSERT (abfd != NULL && ptr != NULL);
 
@@ -3198,8 +3218,8 @@ rx_elf_print_private_bfd_data (bfd * abf
   flags = elf_elfheader (abfd)->e_flags;
   fprintf (file, _("private flags = 0x%lx:"), (long) flags);
 
-  fprintf (file, "%s", describe_flags (flags));
-  return TRUE;
+  fprintf (file, "%s", describe_flags (flags, buf));
+  return true;
 }
 
 /* Return the MACH for an e_flags value.  */
@@ -3222,7 +3242,7 @@ elf32_rx_machine (bfd * abfd ATTRIBUTE_U
   return 0;
 }
 
-static bfd_boolean
+static bool
 rx_elf_object_p (bfd * abfd)
 {
   int i;
@@ -3231,7 +3251,7 @@ rx_elf_object_p (bfd * abfd)
   Elf_Internal_Ehdr *ehdr = elf_elfheader (abfd);
   int nphdrs = ehdr->e_phnum;
   sec_ptr bsec;
-  static int saw_be = FALSE;
+  static int saw_be = false;
   bfd_vma end_phdroff;
 
   /* We never want to automatically choose the non-swapping big-endian
@@ -3239,16 +3259,16 @@ rx_elf_object_p (bfd * abfd)
      and objcopy.  */
   if (abfd->xvec == &rx_elf32_be_ns_vec
       && abfd->target_defaulted)
-    return FALSE;
+    return false;
 
   /* BFD->target_defaulted is not set to TRUE when a target is chosen
      as a fallback, so we check for "scanning" to know when to stop
      using the non-swapping target.  */
   if (abfd->xvec == &rx_elf32_be_ns_vec
       && saw_be)
-    return FALSE;
+    return false;
   if (abfd->xvec == &rx_elf32_be_vec)
-    saw_be = TRUE;
+    saw_be = true;
 
   bfd_default_set_arch_mach (abfd, bfd_arch_rx,
 			     elf32_rx_machine (abfd));
@@ -3312,14 +3332,14 @@ rx_elf_object_p (bfd * abfd)
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 rx_linux_object_p (bfd * abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_rx, elf32_rx_machine (abfd));
-  return TRUE;
+  return true;
 }
  
 
@@ -3332,26 +3352,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 +3411,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 *
@@ -3427,7 +3431,7 @@ rx_get_reloc (long reloc)
    have code sections stored with 32-bit words swapped relative to
    what you'd get by default.  */
 
-static bfd_boolean
+static bool
 rx_get_section_contents (bfd *	       abfd,
 			 sec_ptr       section,
 			 void *	       location,
@@ -3436,7 +3440,7 @@ rx_get_section_contents (bfd *	       ab
 {
   int exec = (abfd->flags & EXEC_P) ? 1 : 0;
   int s_code = (section->flags & SEC_CODE) ? 1 : 0;
-  bfd_boolean rv;
+  bool rv;
 
 #ifdef DJDEBUG
   fprintf (stderr, "dj: get %ld %ld from %s  %s e%d sc%d  %08lx:%08lx\n",
@@ -3451,7 +3455,7 @@ rx_get_section_contents (bfd *	       ab
       char * cloc = (char *) location;
       bfd_size_type cnt, end_cnt;
 
-      rv = TRUE;
+      rv = true;
 
       /* Fetch and swap unaligned bytes at the beginning.  */
       if (offset % 4)
@@ -3461,7 +3465,7 @@ rx_get_section_contents (bfd *	       ab
 	  rv = _bfd_generic_get_section_contents (abfd, section, buf,
 						  (offset & -4), 4);
 	  if (!rv)
-	    return FALSE;
+	    return false;
 
 	  bfd_putb32 (bfd_getl32 (buf), buf);
 
@@ -3484,7 +3488,7 @@ rx_get_section_contents (bfd *	       ab
 	  rv = _bfd_generic_get_section_contents (abfd, section, cloc, offset,
 						  count - end_cnt);
 	  if (!rv)
-	    return FALSE;
+	    return false;
 
 	  for (cnt = count; cnt >= 4; cnt -= 4, cloc += 4)
 	    bfd_putb32 (bfd_getl32 (cloc), cloc);
@@ -3499,7 +3503,7 @@ rx_get_section_contents (bfd *	       ab
 	  rv = _bfd_generic_get_section_contents (abfd, section, buf,
 						  offset + count - end_cnt, 4);
 	  if (!rv)
-	    return FALSE;
+	    return false;
 
 	  bfd_putb32 (bfd_getl32 (buf), buf);
 	  memcpy (cloc, buf, end_cnt);
@@ -3512,7 +3516,7 @@ rx_get_section_contents (bfd *	       ab
 }
 
 #ifdef DJDEBUG
-static bfd_boolean
+static bool
 rx2_set_section_contents (bfd *	       abfd,
 			 sec_ptr       section,
 			 const void *  location,
@@ -3543,16 +3547,16 @@ rx2_set_section_contents (bfd *	       a
 #define _bfd_elf_set_section_contents rx2_set_section_contents
 #endif
 
-static bfd_boolean
+static bool
 rx_set_section_contents (bfd *	       abfd,
 			 sec_ptr       section,
 			 const void *  location,
 			 file_ptr      offset,
 			 bfd_size_type count)
 {
-  bfd_boolean exec = (abfd->flags & EXEC_P) ? TRUE : FALSE;
-  bfd_boolean s_code = (section->flags & SEC_CODE) ? TRUE : FALSE;
-  bfd_boolean rv;
+  bool exec = (abfd->flags & EXEC_P) != 0;
+  bool s_code = (section->flags & SEC_CODE) != 0;
+  bool rv;
   char * swapped_data = NULL;
   bfd_size_type i;
   bfd_vma caddr = section->vma + offset;
@@ -3615,6 +3619,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)
 	{
@@ -3655,10 +3661,10 @@ rx_set_section_contents (bfd *	       ab
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 rx_final_link (bfd * abfd, struct bfd_link_info * info)
 {
   asection * o;
@@ -3683,7 +3689,7 @@ rx_final_link (bfd * abfd, struct bfd_li
   return bfd_elf_final_link (abfd, info);
 }
 
-static bfd_boolean
+static bool
 elf32_rx_modify_headers (bfd *abfd, struct bfd_link_info *info)
 {
   const struct elf_backend_data * bed;
@@ -3742,7 +3748,7 @@ typedef struct {
   FILE *mapfile;
 } RX_Table_Info;
 
-static bfd_boolean
+static bool
 rx_table_find (struct bfd_hash_entry *vent, void *vinfo)
 {
   RX_Table_Info *info = (RX_Table_Info *)vinfo;
@@ -3760,14 +3766,14 @@ rx_table_find (struct bfd_hash_entry *ve
      $tablestart$<NAME>.  */
   if (ent->type != bfd_link_hash_defined
       && ent->type != bfd_link_hash_defweak)
-    return TRUE;
+    return true;
 
   name = ent->root.string;
   sec = ent->u.def.section;
   abfd = sec->owner;
 
-  if (strncmp (name, "$tablestart$", 12))
-    return TRUE;
+  if (!startswith (name, "$tablestart$"))
+    return true;
 
   sec->flags |= SEC_KEEP;
 
@@ -3779,17 +3785,19 @@ 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);
+  h = bfd_link_hash_lookup (info->info->hash, buf, false, false, true);
   if (!h || (h->type != bfd_link_hash_defined
 	     && h->type != bfd_link_hash_defweak))
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB:%pA: table %s missing corresponding %s"),
 			  abfd, sec, name, buf);
-      return TRUE;
+      return true;
     }
 
   if (h->u.def.section != ent->u.def.section)
@@ -3798,13 +3806,13 @@ rx_table_find (struct bfd_hash_entry *ve
       _bfd_error_handler (_("%pB:%pA: %s and %s must be in the same input section"),
 			  h->u.def.section->owner, h->u.def.section,
 			  name, buf);
-      return TRUE;
+      return true;
     }
 
   end_addr = h->u.def.value;
 
   sprintf (buf, "$tableentry$default$%s", tname);
-  h = bfd_link_hash_lookup (info->info->hash, buf, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->info->hash, buf, false, false, true);
   if (h && (h->type == bfd_link_hash_defined
 	    || h->type == bfd_link_hash_defweak))
     {
@@ -3814,7 +3822,7 @@ rx_table_find (struct bfd_hash_entry *ve
   for (idx = 0; idx < (int) (end_addr - start_addr) / 4; idx ++)
     {
       sprintf (buf, "$tableentry$%d$%s", idx, tname);
-      h = bfd_link_hash_lookup (info->info->hash, buf, FALSE, FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->info->hash, buf, false, false, true);
       if (h && (h->type == bfd_link_hash_defined
 		|| h->type == bfd_link_hash_defweak))
 	{
@@ -3823,13 +3831,13 @@ rx_table_find (struct bfd_hash_entry *ve
     }
 
   /* Return TRUE to keep scanning, FALSE to end the traversal.  */
-  return TRUE;
+  return true;
 }
 
 /* We need to check for table entry symbols and build the tables, and
    we need to do it before the linker does garbage collection.  This function is
    called once per input object file.  */
-static bfd_boolean
+static bool
 rx_check_directives
     (bfd *		       abfd ATTRIBUTE_UNUSED,
      struct bfd_link_info *    info ATTRIBUTE_UNUSED)
@@ -3840,11 +3848,11 @@ rx_check_directives
   stuff.info = info;
   bfd_hash_traverse (&(info->hash->table), rx_table_find, &stuff);
 
-  return TRUE;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 rx_table_map_2 (struct bfd_hash_entry *vent, void *vinfo)
 {
   RX_Table_Info *info = (RX_Table_Info *)vinfo;
@@ -3858,12 +3866,12 @@ rx_table_map_2 (struct bfd_hash_entry *v
 
   if (ent->type != bfd_link_hash_defined
       && ent->type != bfd_link_hash_defweak)
-    return TRUE;
+    return true;
 
   name = ent->root.string;
 
   if (name[0] == '$' || name[0] == '.' || name[0] < ' ')
-    return TRUE;
+    return true;
 
   addr = (ent->u.def.value
 	  + ent->u.def.section->output_section->vma
@@ -3876,10 +3884,10 @@ rx_table_map_2 (struct bfd_hash_entry *v
   if (addr == info->table_default_handler)
     info->table_default_entry = ent;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 rx_table_map (struct bfd_hash_entry *vent, void *vinfo)
 {
   RX_Table_Info *info = (RX_Table_Info *)vinfo;
@@ -3896,25 +3904,27 @@ rx_table_map (struct bfd_hash_entry *ven
      $tablestart$<NAME>.  */
   if (ent->type != bfd_link_hash_defined
       && ent->type != bfd_link_hash_defweak)
-    return TRUE;
+    return true;
 
   name = ent->root.string;
 
-  if (strncmp (name, "$tablestart$", 12))
-    return TRUE;
+  if (!startswith (name, "$tablestart$"))
+    return true;
 
   tname = name + 12;
   start_addr = (ent->u.def.value
 		+ 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);
 
   sprintf (buf, "$tableentry$default$%s", tname);
-  h = bfd_link_hash_lookup (info->info->hash, buf, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->info->hash, buf, false, false, true);
   if (h)
     {
       info->table_default_handler = (h->u.def.value
@@ -3928,13 +3938,26 @@ 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 ++)
     {
       sprintf (buf, "$tableentry$%d$%s", idx, tname);
-      h = bfd_link_hash_lookup (info->info->hash, buf, FALSE, FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->info->hash, buf, false, false, true);
       if (h && (h->type == bfd_link_hash_defined
 		|| h->type == bfd_link_hash_defweak))
 	{
@@ -3951,16 +3974,17 @@ rx_table_map (struct bfd_hash_entry *ven
 
   bfd_hash_traverse (&(info->info->hash->table), rx_table_map_2, info);
 
-  fprintf (info->mapfile, "\nRX Vector Table: %s has %d entries at 0x%08" BFD_VMA_FMT "x\n\n",
-	   tname, info->table_size, start_addr);
+  fprintf (info->mapfile,
+	   "\nRX Vector Table: %s has %d entries at 0x%08" PRIx64 "\n\n",
+	   tname, info->table_size, (uint64_t) start_addr);
 
   if (info->table_default_entry)
-    fprintf (info->mapfile, "  default handler is: %s at 0x%08" BFD_VMA_FMT "x\n",
+    fprintf (info->mapfile, "  default handler is: %s at 0x%08" PRIx64 "\n",
 	     info->table_default_entry->root.string,
-	     info->table_default_handler);
+	     (uint64_t) info->table_default_handler);
   else if (info->table_default_handler != (bfd_vma)(-1))
-    fprintf (info->mapfile, "  default handler is at 0x%08" BFD_VMA_FMT "x\n",
-	     info->table_default_handler);
+    fprintf (info->mapfile, "  default handler is at 0x%08" PRIx64 "\n",
+	     (uint64_t) info->table_default_handler);
   else
     fprintf (info->mapfile, "  no default handler\n");
 
@@ -3976,7 +4000,8 @@ rx_table_map (struct bfd_hash_entry *ven
 	}
       need_elipses = 1;
 
-      fprintf (info->mapfile, "  0x%08" BFD_VMA_FMT "x [%3d] ", start_addr + 4 * idx, idx);
+      fprintf (info->mapfile,
+	       "  0x%08" PRIx64 " [%3d] ", (uint64_t) start_addr + 4 * idx, idx);
 
       if (info->table_handlers[idx] == (bfd_vma) (-1))
 	fprintf (info->mapfile, "(no handler found)\n");
@@ -3991,18 +4016,21 @@ rx_table_map (struct bfd_hash_entry *ven
 
       else if (info->table_entries[idx])
 	{
-	  fprintf (info->mapfile, "0x%08" BFD_VMA_FMT "x %s\n", info->table_handlers[idx], info->table_entries[idx]->root.string);
+	  fprintf (info->mapfile, "0x%08" PRIx64 " %s\n",
+		   (uint64_t) info->table_handlers[idx],
+		   info->table_entries[idx]->root.string);
 	}
 
       else
 	{
-	  fprintf (info->mapfile, "0x%08" BFD_VMA_FMT "x ???\n", info->table_handlers[idx]);
+	  fprintf (info->mapfile, "0x%08" PRIx64 " ???\n",
+		   (uint64_t) info->table_handlers[idx]);
 	}
     }
   if (need_elipses)
     fprintf (info->mapfile, "  . . .\n");
 
-  return TRUE;
+  return true;
 }
 
 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.20200303/bfd/elf32-rx.h ./bfd/elf32-rx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-rx.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-rx.h	2026-03-05 02:07:20.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-2025 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.20200303/bfd/elf32-s12z.c ./bfd/elf32-s12z.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-s12z.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-s12z.c	2026-03-05 02:07:20.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-2025 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.
@@ -33,7 +33,7 @@
 /* Relocation functions.  */
 static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean s12z_info_to_howto_rel
+static bool s12z_info_to_howto_rel
   (bfd *, arelent *, Elf_Internal_Rela *);
 
 static bfd_reloc_status_type
@@ -100,92 +100,92 @@ static reloc_howto_type elf_s12z_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_S12Z_NONE,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_S12Z_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 24 bit absolute relocation emitted by the OPR mode operands  */
   HOWTO (R_S12Z_OPR,        /* type */
 	 0,			/* rightshift */
-	 5,			/* size (0 = byte, 1 = short, 2 = long) */
+	 3,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 shift_addend_reloc,
 	 "R_S12Z_OPR",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00ffffff,            /* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The purpose of this reloc is not known */
   HOWTO (R_S12Z_UKNWN_2,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_S12Z_UKNWN_2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 15 bit PC-rel relocation */
   HOWTO (R_S12Z_PCREL_7_15,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 15,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 shift_addend_reloc,
 	 "R_S12Z_PCREL_7_15",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00,                  /* src_mask */
 	 0x007fff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 24 bit absolute relocation emitted by EXT24 mode operands */
   HOWTO (R_S12Z_EXT24,        /* type */
 	 0,			/* rightshift */
-	 5,			/* size (0 = byte, 1 = short, 2 = long) */
+	 3,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_S12Z_EXT24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,            /* src_mask */
 	 0x00ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 18 bit absolute relocation */
   HOWTO (R_S12Z_EXT18,        /* type */
 	 0,			/* rightshift */
-	 5,			/* size (0 = byte, 1 = short, 2 = long) */
+	 3,			/* size */
 	 18,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 opru18_reloc,	        /* special_function */
 	 "R_S12Z_EXT18",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,            /* src_mask */
 	 0x0005ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.   This kind of relocation is
      schizophrenic - Although they appear in sections named .rela.debug.*
@@ -198,32 +198,32 @@ static reloc_howto_type elf_s12z_howto_t
 
   HOWTO (R_S12Z_CW32,        /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_S12Z_CW32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,            /* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation  */
   HOWTO (R_S12Z_EXT32,        /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_S12Z_EXT32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,            /* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* Map BFD reloc types to S12Z ELF reloc types.  */
@@ -284,7 +284,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an S12Z ELF reloc.  */
 
-static bfd_boolean
+static bool
 s12z_info_to_howto_rel (bfd *abfd,
 			  arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
@@ -296,19 +296,19 @@ s12z_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = &elf_s12z_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 s12z_elf_set_mach_from_flags (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_s12z, 0);
 
-  return TRUE;
+  return true;
 }
 
 #define ELF_ARCH		bfd_arch_s12z
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-s390.c ./bfd/elf32-s390.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-s390.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-s390.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Carl B. Pedersen and Martin Schwidefsky.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -40,142 +40,142 @@ static reloc_howto_type elf_howto_table[
 {
   HOWTO (R_390_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_390_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
-  HOWTO(R_390_8,	 0, 0,	8, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_8",	 FALSE, 0,0x000000ff, FALSE),
-  HOWTO(R_390_12,	 0, 1, 12, FALSE, 0, complain_overflow_dont,
-	bfd_elf_generic_reloc, "R_390_12",	 FALSE, 0,0x00000fff, FALSE),
-  HOWTO(R_390_16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_16",	 FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_32",	 FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_PC32,	 0, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC32",	 FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_GOT12,	 0, 1, 12, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOT12",	 FALSE, 0,0x00000fff, FALSE),
-  HOWTO(R_390_GOT32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOT32",	 FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_PLT32,	 0, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT32",	 FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_COPY,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_COPY",	 FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_GLOB_DAT,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GLOB_DAT", FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_JMP_SLOT,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_JMP_SLOT", FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_RELATIVE,	 0, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_RELATIVE", FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_GOTOFF32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTOFF32", FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_GOTPC,	 0, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPC",	 FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_GOT16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOT16",	 FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_PC16,	 0, 1, 16,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC16",	 FALSE, 0,0x0000ffff, TRUE),
-  HOWTO(R_390_PC16DBL,	 1, 1, 16,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC16DBL",	 FALSE, 0,0x0000ffff, TRUE),
-  HOWTO(R_390_PLT16DBL,	 1, 1, 16,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT16DBL", FALSE, 0,0x0000ffff, TRUE),
-  HOWTO(R_390_PC32DBL,	 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC32DBL",	 FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_PLT32DBL,	 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT32DBL", FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_GOTPCDBL,	 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPCDBL", FALSE, 0,0xffffffff, TRUE),
+  HOWTO(R_390_8,	 0, 1,	8, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_8",	 false, 0,0x000000ff, false),
+  HOWTO(R_390_12,	 0, 2, 12, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_390_12",	 false, 0,0x00000fff, false),
+  HOWTO(R_390_16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_16",	 false, 0,0x0000ffff, false),
+  HOWTO(R_390_32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_32",	 false, 0,0xffffffff, false),
+  HOWTO(R_390_PC32,	 0, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC32",	 false, 0,0xffffffff, true),
+  HOWTO(R_390_GOT12,	 0, 2, 12, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOT12",	 false, 0,0x00000fff, false),
+  HOWTO(R_390_GOT32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOT32",	 false, 0,0xffffffff, false),
+  HOWTO(R_390_PLT32,	 0, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT32",	 false, 0,0xffffffff, true),
+  HOWTO(R_390_COPY,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_COPY",	 false, 0,0xffffffff, false),
+  HOWTO(R_390_GLOB_DAT,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GLOB_DAT", false, 0,0xffffffff, false),
+  HOWTO(R_390_JMP_SLOT,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_JMP_SLOT", false, 0,0xffffffff, false),
+  HOWTO(R_390_RELATIVE,	 0, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_RELATIVE", false, 0,0xffffffff, false),
+  HOWTO(R_390_GOTOFF32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTOFF32", false, 0,0xffffffff, false),
+  HOWTO(R_390_GOTPC,	 0, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPC",	 false, 0,0xffffffff, true),
+  HOWTO(R_390_GOT16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOT16",	 false, 0,0x0000ffff, false),
+  HOWTO(R_390_PC16,	 0, 2, 16,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC16",	 false, 0,0x0000ffff, true),
+  HOWTO(R_390_PC16DBL,	 1, 2, 16,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC16DBL",	 false, 0,0x0000ffff, true),
+  HOWTO(R_390_PLT16DBL,	 1, 2, 16,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT16DBL", false, 0,0x0000ffff, true),
+  HOWTO(R_390_PC32DBL,	 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC32DBL",	 false, 0,0xffffffff, true),
+  HOWTO(R_390_PLT32DBL,	 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT32DBL", false, 0,0xffffffff, true),
+  HOWTO(R_390_GOTPCDBL,	 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPCDBL", false, 0,0xffffffff, true),
   EMPTY_HOWTO (R_390_64),	/* Empty entry for R_390_64.  */
   EMPTY_HOWTO (R_390_PC64),	/* Empty entry for R_390_PC64.  */
   EMPTY_HOWTO (R_390_GOT64),	/* Empty entry for R_390_GOT64.  */
   EMPTY_HOWTO (R_390_PLT64),	/* Empty entry for R_390_PLT64.  */
-  HOWTO(R_390_GOTENT,	 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTENT",	 FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_GOTOFF16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTOFF16", FALSE, 0,0x0000ffff, FALSE),
+  HOWTO(R_390_GOTENT,	 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTENT",	 false, 0,0xffffffff, true),
+  HOWTO(R_390_GOTOFF16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTOFF16", false, 0,0x0000ffff, false),
   EMPTY_HOWTO (R_390_GOTOFF64),	/* Empty entry for R_390_GOTOFF64.  */
-  HOWTO(R_390_GOTPLT12,	 0, 1, 12, FALSE, 0, complain_overflow_dont,
-	bfd_elf_generic_reloc, "R_390_GOTPLT12", FALSE, 0,0x00000fff, FALSE),
-  HOWTO(R_390_GOTPLT16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPLT16", FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_GOTPLT32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPLT32", FALSE, 0,0xffffffff, FALSE),
+  HOWTO(R_390_GOTPLT12,	 0, 2, 12, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_390_GOTPLT12", false, 0,0x00000fff, false),
+  HOWTO(R_390_GOTPLT16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPLT16", false, 0,0x0000ffff, false),
+  HOWTO(R_390_GOTPLT32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPLT32", false, 0,0xffffffff, false),
   EMPTY_HOWTO (R_390_GOTPLT64),	/* Empty entry for R_390_GOTPLT64.  */
-  HOWTO(R_390_GOTPLTENT, 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPLTENT",FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_PLTOFF16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLTOFF16", FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_PLTOFF32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLTOFF32", FALSE, 0,0xffffffff, FALSE),
+  HOWTO(R_390_GOTPLTENT, 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPLTENT",false, 0,0xffffffff, true),
+  HOWTO(R_390_PLTOFF16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLTOFF16", false, 0,0x0000ffff, false),
+  HOWTO(R_390_PLTOFF32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLTOFF32", false, 0,0xffffffff, false),
   EMPTY_HOWTO (R_390_PLTOFF64),	/* Empty entry for R_390_PLTOFF64.  */
-  HOWTO(R_390_TLS_LOAD, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-	s390_tls_reloc, "R_390_TLS_LOAD", FALSE, 0, 0, FALSE),
-  HOWTO(R_390_TLS_GDCALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-	s390_tls_reloc, "R_390_TLS_GDCALL", FALSE, 0, 0, FALSE),
-  HOWTO(R_390_TLS_LDCALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-	s390_tls_reloc, "R_390_TLS_LDCALL", FALSE, 0, 0, FALSE),
-  HOWTO(R_390_TLS_GD32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_GD32", FALSE, 0, 0xffffffff, FALSE),
+  HOWTO(R_390_TLS_LOAD, 0, 0, 0, false, 0, complain_overflow_dont,
+	s390_tls_reloc, "R_390_TLS_LOAD", false, 0, 0, false),
+  HOWTO(R_390_TLS_GDCALL, 0, 0, 0, false, 0, complain_overflow_dont,
+	s390_tls_reloc, "R_390_TLS_GDCALL", false, 0, 0, false),
+  HOWTO(R_390_TLS_LDCALL, 0, 0, 0, false, 0, complain_overflow_dont,
+	s390_tls_reloc, "R_390_TLS_LDCALL", false, 0, 0, false),
+  HOWTO(R_390_TLS_GD32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_GD32", false, 0, 0xffffffff, false),
   EMPTY_HOWTO (R_390_TLS_GD64),	/* Empty entry for R_390_TLS_GD64.  */
-  HOWTO(R_390_TLS_GOTIE12, 0, 1, 12, FALSE, 0, complain_overflow_dont,
-	bfd_elf_generic_reloc, "R_390_TLS_GOTIE12", FALSE, 0, 0x00000fff, FALSE),
-  HOWTO(R_390_TLS_GOTIE32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_GOTIE32", FALSE, 0, 0xffffffff, FALSE),
+  HOWTO(R_390_TLS_GOTIE12, 0, 2, 12, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_390_TLS_GOTIE12", false, 0, 0x00000fff, false),
+  HOWTO(R_390_TLS_GOTIE32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_GOTIE32", false, 0, 0xffffffff, false),
   EMPTY_HOWTO (R_390_TLS_GOTIE64),	/* Empty entry for R_390_TLS_GOTIE64.  */
-  HOWTO(R_390_TLS_LDM32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_LDM32", FALSE, 0, 0xffffffff, FALSE),
+  HOWTO(R_390_TLS_LDM32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_LDM32", false, 0, 0xffffffff, false),
   EMPTY_HOWTO (R_390_TLS_LDM64),	/* Empty entry for R_390_TLS_LDM64.  */
-  HOWTO(R_390_TLS_IE32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_IE32", FALSE, 0, 0xffffffff, FALSE),
+  HOWTO(R_390_TLS_IE32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_IE32", false, 0, 0xffffffff, false),
   EMPTY_HOWTO (R_390_TLS_IE64),	/* Empty entry for R_390_TLS_IE64.  */
-  HOWTO(R_390_TLS_IEENT, 1, 2, 32, TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_IEENT", FALSE, 0, 0xffffffff, TRUE),
-  HOWTO(R_390_TLS_LE32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_LE32", FALSE, 0, 0xffffffff, FALSE),
+  HOWTO(R_390_TLS_IEENT, 1, 4, 32, true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_IEENT", false, 0, 0xffffffff, true),
+  HOWTO(R_390_TLS_LE32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_LE32", false, 0, 0xffffffff, false),
   EMPTY_HOWTO (R_390_TLS_LE64),	/* Empty entry for R_390_TLS_LE64.  */
-  HOWTO(R_390_TLS_LDO32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_LDO32", FALSE, 0, 0xffffffff, FALSE),
+  HOWTO(R_390_TLS_LDO32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_LDO32", false, 0, 0xffffffff, false),
   EMPTY_HOWTO (R_390_TLS_LDO64),	/* Empty entry for R_390_TLS_LDO64.  */
-  HOWTO(R_390_TLS_DTPMOD, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_DTPMOD", FALSE, 0, 0xffffffff, FALSE),
-  HOWTO(R_390_TLS_DTPOFF, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_DTPOFF", FALSE, 0, 0xffffffff, FALSE),
-  HOWTO(R_390_TLS_TPOFF, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_TPOFF", FALSE, 0, 0xffffffff, FALSE),
-  HOWTO(R_390_20,	 0, 2, 20, FALSE, 8, complain_overflow_dont,
-	s390_elf_ldisp_reloc, "R_390_20",      FALSE, 0,0x0fffff00, FALSE),
-  HOWTO(R_390_GOT20,	 0, 2, 20, FALSE, 8, complain_overflow_dont,
-	s390_elf_ldisp_reloc, "R_390_GOT20",   FALSE, 0,0x0fffff00, FALSE),
-  HOWTO(R_390_GOTPLT20,	 0, 2, 20, FALSE, 8, complain_overflow_dont,
-	s390_elf_ldisp_reloc, "R_390_GOTPLT20", FALSE, 0,0x0fffff00, FALSE),
-  HOWTO(R_390_TLS_GOTIE20, 0, 2, 20, FALSE, 8, complain_overflow_dont,
-	s390_elf_ldisp_reloc, "R_390_TLS_GOTIE20", FALSE, 0,0x0fffff00, FALSE),
-  HOWTO(R_390_IRELATIVE, 0, 2, 32, TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_IRELATIVE", FALSE, 0, 0xffffffff, FALSE),
-  HOWTO(R_390_PC12DBL,	 1, 1, 12,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC12DBL",	 FALSE, 0,0x00000fff, TRUE),
-  HOWTO(R_390_PLT12DBL,	 1, 1, 12,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT12DBL", FALSE, 0,0x00000fff, TRUE),
-  HOWTO(R_390_PC24DBL,	 1, 2, 24,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC24DBL",	 FALSE, 0,0x00ffffff, TRUE),
-  HOWTO(R_390_PLT24DBL,	 1, 2, 24,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT24DBL", FALSE, 0,0x00ffffff, TRUE),
+  HOWTO(R_390_TLS_DTPMOD, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_DTPMOD", false, 0, 0xffffffff, false),
+  HOWTO(R_390_TLS_DTPOFF, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_DTPOFF", false, 0, 0xffffffff, false),
+  HOWTO(R_390_TLS_TPOFF, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_TPOFF", false, 0, 0xffffffff, false),
+  HOWTO(R_390_20,	 0, 4, 20, false, 8, complain_overflow_dont,
+	s390_elf_ldisp_reloc, "R_390_20",      false, 0,0x0fffff00, false),
+  HOWTO(R_390_GOT20,	 0, 4, 20, false, 8, complain_overflow_dont,
+	s390_elf_ldisp_reloc, "R_390_GOT20",   false, 0,0x0fffff00, false),
+  HOWTO(R_390_GOTPLT20,	 0, 4, 20, false, 8, complain_overflow_dont,
+	s390_elf_ldisp_reloc, "R_390_GOTPLT20", false, 0,0x0fffff00, false),
+  HOWTO(R_390_TLS_GOTIE20, 0, 4, 20, false, 8, complain_overflow_dont,
+	s390_elf_ldisp_reloc, "R_390_TLS_GOTIE20", false, 0,0x0fffff00, false),
+  HOWTO(R_390_IRELATIVE, 0, 4, 32, true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_IRELATIVE", false, 0, 0xffffffff, false),
+  HOWTO(R_390_PC12DBL,	 1, 2, 12,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC12DBL",	 false, 0,0x00000fff, true),
+  HOWTO(R_390_PLT12DBL,	 1, 2, 12,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT12DBL", false, 0,0x00000fff, true),
+  HOWTO(R_390_PC24DBL,	 1, 4, 24,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC24DBL",	 false, 0,0x00ffffff, true),
+  HOWTO(R_390_PLT24DBL,	 1, 4, 24,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT24DBL", false, 0,0x00ffffff, true),
 };
 
 /* GNU extension to record C++ vtable hierarchy.  */
 static reloc_howto_type elf32_s390_vtinherit_howto =
-  HOWTO (R_390_GNU_VTINHERIT, 0,2,0,FALSE,0,complain_overflow_dont, NULL, "R_390_GNU_VTINHERIT", FALSE,0, 0, FALSE);
+  HOWTO (R_390_GNU_VTINHERIT, 0,4,0,false,0,complain_overflow_dont, NULL, "R_390_GNU_VTINHERIT", false,0, 0, false);
 static reloc_howto_type elf32_s390_vtentry_howto =
-  HOWTO (R_390_GNU_VTENTRY, 0,2,0,FALSE,0,complain_overflow_dont, _bfd_elf_rel_vtable_reloc_fn,"R_390_GNU_VTENTRY", FALSE,0,0, FALSE);
+  HOWTO (R_390_GNU_VTENTRY, 0,4,0,false,0,complain_overflow_dont, _bfd_elf_rel_vtable_reloc_fn,"R_390_GNU_VTENTRY", false,0,0, false);
 
 static reloc_howto_type *
 elf_s390_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
@@ -323,7 +323,7 @@ elf_s390_reloc_name_lookup (bfd *abfd AT
 /* We need to use ELF32_R_TYPE so we have our own copy of this function,
    and elf32-s390.c has its own copy.  */
 
-static bfd_boolean
+static bool
 elf_s390_info_to_howto (bfd *abfd,
 			arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
@@ -347,12 +347,12 @@ elf_s390_info_to_howto (bfd *abfd,
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      abfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       cache_ptr->howto = &elf_howto_table[r_type];
     }
 
-  return TRUE;
+  return true;
 }
 
 /* A relocation function which doesn't do anything.  */
@@ -421,11 +421,11 @@ s390_elf_ldisp_reloc (bfd *abfd ATTRIBUT
     return bfd_reloc_ok;
 }
 
-static bfd_boolean
+static bool
 elf_s390_is_local_label_name (bfd *abfd, const char *name)
 {
   if (name[0] == '.' && (name[1] == 'X' || name[1] == 'L'))
-    return TRUE;
+    return true;
 
   return _bfd_elf_is_local_label_name (abfd, name);
 }
@@ -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;
 
@@ -721,14 +718,13 @@ struct elf_s390_obj_tdata
    && elf_tdata (bfd) != NULL \
    && elf_object_id (bfd) == S390_ELF_DATA)
 
-static bfd_boolean
+static bool
 elf_s390_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_s390_obj_tdata),
-				  S390_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_s390_obj_tdata));
 }
 
-static bfd_boolean
+static bool
 elf_s390_object_p (bfd *abfd)
 {
   /* Set the right machine number for an s390 elf32 file.  */
@@ -749,16 +745,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 +781,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,15 +796,14 @@ 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)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
-				      sizeof (struct elf_s390_link_hash_entry),
-				      S390_ELF_DATA))
+				      sizeof (struct elf_s390_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -832,37 +824,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)
     {
@@ -917,7 +878,7 @@ elf_s390_tls_transition (struct bfd_link
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 elf_s390_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
@@ -934,7 +895,7 @@ elf_s390_check_relocs (bfd *abfd,
   Elf_Internal_Sym *isym;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   BFD_ASSERT (is_s390_elf (abfd));
 
@@ -959,16 +920,16 @@ elf_s390_check_relocs (bfd *abfd,
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"),
 			      abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       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;
+	    return false;
 
 	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
@@ -978,12 +939,12 @@ elf_s390_check_relocs (bfd *abfd,
 		htab->elf.dynobj = abfd;
 
 	      if (!s390_elf_create_ifunc_sections (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 
 	      if (local_got_refcounts == NULL)
 		{
 		  if (!elf_s390_allocate_local_syminfo (abfd, symtab_hdr))
-		    return FALSE;
+		    return false;
 		  local_got_refcounts = elf_local_got_refcounts (abfd);
 		}
 	      plt = elf_s390_local_plt (abfd);
@@ -1027,7 +988,7 @@ elf_s390_check_relocs (bfd *abfd,
 	      && local_got_refcounts == NULL)
 	    {
 	      if (!elf_s390_allocate_local_syminfo (abfd, symtab_hdr))
-		return FALSE;
+		return false;
 	      local_got_refcounts = elf_local_got_refcounts (abfd);
 	    }
 	  /* Fall through.  */
@@ -1040,7 +1001,7 @@ elf_s390_check_relocs (bfd *abfd,
 	      if (htab->elf.dynobj == NULL)
 		htab->elf.dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	}
 
@@ -1049,7 +1010,7 @@ elf_s390_check_relocs (bfd *abfd,
 	  if (htab->elf.dynobj == NULL)
 	    htab->elf.dynobj = abfd;
 	  if (!s390_elf_create_ifunc_sections (htab->elf.dynobj, info))
-	    return FALSE;
+	    return false;
 
 	  /* Make sure an IFUNC symbol defined in a non-shared object
 	     always gets a PLT slot.  */
@@ -1187,7 +1148,7 @@ elf_s390_check_relocs (bfd *abfd,
 		    /* xgettext:c-format */
 		    (_("%pB: `%s' accessed both as normal and thread local symbol"),
 		     abfd, h->root.root.string);
-		  return FALSE;
+		  return false;
 		}
 	      if (old_tls_type > tls_type)
 		tls_type = old_tls_type;
@@ -1296,17 +1257,17 @@ elf_s390_check_relocs (bfd *abfd,
 		    htab->elf.dynobj = abfd;
 
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, htab->elf.dynobj, 2, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* If this is a global symbol, we count the number of
 		 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,10 +1277,10 @@ 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;
+		    return false;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
@@ -1332,12 +1293,12 @@ 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)
-		    return FALSE;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -1360,14 +1321,14 @@ elf_s390_check_relocs (bfd *abfd,
 	     Reconstruct it for later use during GC.  */
 	case R_390_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_390_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -1375,7 +1336,7 @@ elf_s390_check_relocs (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -1403,7 +1364,7 @@ elf_s390_gc_mark_hook (asection *sec,
    entry but we found we will not create any.  Called when we find we will
    not have any PLT for this symbol, by for example
    elf_s390_adjust_dynamic_symbol when we're doing a proper dynamic link,
-   or elf_s390_size_dynamic_sections if no dynamic sections will be
+   or elf_s390_late_size_sections if no dynamic sections will be
    created (we're only linking static objects).  */
 
 static void
@@ -1421,30 +1382,13 @@ 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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf_s390_adjust_dynamic_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h)
 {
@@ -1460,11 +1404,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;
@@ -1492,7 +1434,7 @@ elf_s390_adjust_dynamic_symbol (struct b
 	  h->plt.offset = (bfd_vma) -1;
 	  h->needs_plt = 0;
 	}
-      return TRUE;
+      return true;
     }
 
   /* If this is a function, put it in the procedure linkage table.  We
@@ -1503,8 +1445,7 @@ elf_s390_adjust_dynamic_symbol (struct b
     {
       if (h->plt.refcount <= 0
 	  || SYMBOL_CALLS_LOCAL (info, h)
-	  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
-	      && h->root.type != bfd_link_hash_undefweak))
+	  || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
 	{
 	  /* This case can occur if we saw a PLT32 reloc in an input
 	     file, but the symbol was never referred to by a dynamic
@@ -1516,7 +1457,7 @@ elf_s390_adjust_dynamic_symbol (struct b
 	  elf_s390_adjust_gotplt((struct elf_s390_link_hash_entry *) h);
 	}
 
-      return TRUE;
+      return true;
     }
   else
     /* It's possible that we incorrectly decided a .plt reloc was
@@ -1537,7 +1478,7 @@ elf_s390_adjust_dynamic_symbol (struct b
       h->root.u.def.value = def->root.u.def.value;
       if (ELIMINATE_COPY_RELOCS || info->nocopyreloc)
 	h->non_got_ref = def->non_got_ref;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -1548,26 +1489,26 @@ elf_s390_adjust_dynamic_symbol (struct b
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -1607,16 +1548,15 @@ elf_s390_adjust_dynamic_symbol (struct b
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
 {
   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)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = elf_s390_hash_table (info);
@@ -1634,7 +1574,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (bfd_link_pic (info)
@@ -1708,7 +1648,7 @@ allocate_dynrelocs (struct elf_link_hash
   else if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = elf_s390_hash_entry(h)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -1717,7 +1657,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->elf.sgot;
@@ -1734,8 +1674,7 @@ allocate_dynrelocs (struct elf_link_hash
 	htab->elf.srelgot->size += sizeof (Elf32_External_Rela);
       else if (tls_type == GOT_TLS_GD)
 	htab->elf.srelgot->size += 2 * sizeof (Elf32_External_Rela);
-      else if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-		|| h->root.type != bfd_link_hash_undefweak)
+      else if (!UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)
 	       && (bfd_link_pic (info)
 		   || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
 	htab->elf.srelgot->size += sizeof (Elf32_External_Rela);
@@ -1743,8 +1682,8 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -1758,7 +1697,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 +1710,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.  */
@@ -1784,7 +1723,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -1807,7 +1746,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -1816,65 +1755,38 @@ 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);
     }
 
-  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;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				struct bfd_link_info *info)
+static bool
+elf_s390_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			     struct bfd_link_info *info)
 {
   struct elf_s390_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
   htab = elf_s390_hash_table (info);
   dynobj = htab->elf.dynobj;
   if (dynobj == NULL)
-    abort ();
+    return true;
 
   if (htab->elf.dynamic_sections_created)
     {
@@ -1886,6 +1798,7 @@ elf_s390_size_dynamic_sections (bfd *out
 	    abort ();
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -1985,7 +1898,7 @@ elf_s390_size_dynamic_sections (bfd *out
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       if ((s->flags & SEC_LINKER_CREATED) == 0)
@@ -2003,10 +1916,10 @@ elf_s390_size_dynamic_sections (bfd *out
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -2044,56 +1957,11 @@ elf_s390_size_dynamic_sections (bfd *out
 	 of garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
-  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
@@ -2146,7 +2014,7 @@ invalid_tls_insn (bfd *input_bfd,
 
 /* Relocate a 390 ELF section.  */
 
-static bfd_boolean
+static int
 elf_s390_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -2166,7 +2034,7 @@ elf_s390_relocate_section (bfd *output_b
   if (!is_s390_elf (input_bfd))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   htab = elf_s390_hash_table (info);
@@ -2186,11 +2054,11 @@ elf_s390_relocate_section (bfd *output_b
       asection *sec;
       bfd_vma off;
       bfd_vma relocation;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       bfd_reloc_status_type r;
       int tls_type;
       asection *base_got = htab->elf.sgot;
-      bfd_boolean resolved_to_zero;
+      bool resolved_to_zero;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       if (r_type == (int) R_390_GNU_VTINHERIT
@@ -2199,7 +2067,7 @@ elf_s390_relocate_section (bfd *output_b
       if (r_type >= (int) R_390_max)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       howto = elf_howto_table + r_type;
@@ -2208,7 +2076,7 @@ elf_s390_relocate_section (bfd *output_b
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -2217,7 +2085,7 @@ elf_s390_relocate_section (bfd *output_b
 	    {
 	      struct plt_entry *local_plt = elf_s390_local_plt (input_bfd);
 	      if (local_plt == NULL)
-		return FALSE;
+		return false;
 
 	      /* Address of the PLT slot.  */
 	      relocation = (htab->elf.iplt->output_section->vma
@@ -2266,8 +2134,8 @@ elf_s390_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2277,7 +2145,8 @@ elf_s390_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_390_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -2326,7 +2195,7 @@ elf_s390_relocate_section (bfd *output_b
 		  if (r_type == R_390_GOTPLTENT)
 		    relocation += htab->elf.sgot->output_section->vma;
 		}
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 
 	    }
 	  /* Fall through.  */
@@ -2343,7 +2212,7 @@ elf_s390_relocate_section (bfd *output_b
 
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      dyn = htab->elf.dynamic_sections_created;
@@ -2368,11 +2237,8 @@ elf_s390_relocate_section (bfd *output_b
 	      else if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
 							  bfd_link_pic (info),
 							  h)
-		       || (bfd_link_pic (info)
-			   && SYMBOL_REFERENCES_LOCAL (info, h))
-		       || (ELF_ST_VISIBILITY (h->other)
-			   && h->root.type == bfd_link_hash_undefweak))
-
+		       || SYMBOL_REFERENCES_LOCAL (info, h)
+		       || resolved_to_zero)
 		{
 		  /* This is actually a static link, or it is a
 		     -Bsymbolic link and the symbol is defined
@@ -2396,7 +2262,6 @@ elf_s390_relocate_section (bfd *output_b
 		    }
 
 		  if ((h->def_regular
-		       && bfd_link_pic (info)
 		       && SYMBOL_REFERENCES_LOCAL (info, h))
 		      /* lrl rx,sym@GOTENT -> larl rx, sym */
 		      && ((r_type == R_390_GOTENT
@@ -2426,7 +2291,7 @@ elf_s390_relocate_section (bfd *output_b
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -2513,7 +2378,7 @@ elf_s390_relocate_section (bfd *output_b
 	case R_390_GOTPCDBL:
 	  /* Use global offset table as symbol value.  */
 	  relocation = htab->elf.sgot->output_section->vma;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_PLT12DBL:
@@ -2546,7 +2411,7 @@ elf_s390_relocate_section (bfd *output_b
 	    relocation = (htab->elf.splt->output_section->vma
 			  + htab->elf.splt->output_offset
 			  + h->plt.offset);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_PLTOFF16:
@@ -2574,7 +2439,7 @@ elf_s390_relocate_section (bfd *output_b
 			  + htab->elf.splt->output_offset
 			  + h->plt.offset
 			  - htab->elf.sgot->output_section->vma);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_PC16:
@@ -2694,7 +2559,7 @@ elf_s390_relocate_section (bfd *output_b
 		      || h->root.type == bfd_link_hash_undefined)))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 	      asection *sreloc;
 	      bfd_byte *loc;
 
@@ -2702,16 +2567,16 @@ elf_s390_relocate_section (bfd *output_b
 		 are copied into the output file to be resolved at run
 		 time.  */
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -2738,7 +2603,7 @@ elf_s390_relocate_section (bfd *output_b
 		  outrel.r_addend = relocation + rel->r_addend;
 		  if (r_type == R_390_32)
 		    {
-		      relocate = TRUE;
+		      relocate = true;
 		      outrel.r_info = ELF32_R_INFO (0, R_390_RELATIVE);
 		    }
 		  else
@@ -2750,7 +2615,7 @@ elf_s390_relocate_section (bfd *output_b
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error(bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -2836,7 +2701,7 @@ elf_s390_relocate_section (bfd *output_b
 	      /* This relocation gets optimized away by the local exec
 		 access optimization.  */
 	      BFD_ASSERT (! unresolved_reloc);
-	      bfd_put_32 (output_bfd, -tpoff (info, relocation),
+	      bfd_put_32 (output_bfd, -tpoff (info, relocation) + rel->r_addend,
 			  contents + rel->r_offset);
 	      continue;
 	    }
@@ -2918,7 +2783,7 @@ elf_s390_relocate_section (bfd *output_b
 	      relocation = htab->elf.sgot->output_offset + off;
 	      if (r_type == R_390_TLS_IE32 || r_type == R_390_TLS_IEENT)
 		relocation += htab->elf.sgot->output_section->vma;
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -2958,7 +2823,7 @@ elf_s390_relocate_section (bfd *output_b
 	  relocation = htab->elf.sgot->output_offset + off;
 	  if (r_type == R_390_TLS_IEENT)
 	    relocation += htab->elf.sgot->output_section->vma;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_TLS_LDM32:
@@ -2996,7 +2861,7 @@ elf_s390_relocate_section (bfd *output_b
 	      htab->tls_ldm_got.offset |= 1;
 	    }
 	  relocation = htab->elf.sgot->output_offset + off;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_TLS_LE32:
@@ -3031,7 +2896,7 @@ elf_s390_relocate_section (bfd *output_b
 	  else
 	    {
 	      BFD_ASSERT (! unresolved_reloc);
-	      bfd_put_32 (output_bfd, -tpoff (info, relocation),
+	      bfd_put_32 (output_bfd, -tpoff (info, relocation) + rel->r_addend,
 			  contents + rel->r_offset);
 	    }
 	  continue;
@@ -3084,7 +2949,7 @@ elf_s390_relocate_section (bfd *output_b
 		  else
 		    {
 		      invalid_tls_insn (input_bfd, input_section, rel);
-		      return FALSE;
+		      return false;
 		    }
 		  insn = 0x18000700 | (insn & 0x00f00000) | ry;
 		  bfd_put_32 (output_bfd, insn, contents + rel->r_offset);
@@ -3100,7 +2965,7 @@ elf_s390_relocate_section (bfd *output_b
 		  (insn & 0xff000000) != 0x0d000000)
 		{
 		  invalid_tls_insn (input_bfd, input_section, rel);
-		  return FALSE;
+		  return false;
 		}
 	      if (!bfd_link_pic (info) && (h == NULL || h->dynindx == -1))
 		{
@@ -3132,7 +2997,7 @@ elf_s390_relocate_section (bfd *output_b
 		  if ((insn & 0xff000000) == 0x0d000000)
 		    {
 		      invalid_tls_insn (input_bfd, input_section, rel);
-		      return FALSE;
+		      return false;
 		    }
 
 		  if ((insn & 0xff000000) == 0x4d000000)
@@ -3165,7 +3030,7 @@ elf_s390_relocate_section (bfd *output_b
 		      (insn & 0xff000000) != 0x0d000000)
 		    {
 		      invalid_tls_insn (input_bfd, input_section, rel);
-		      return FALSE;
+		      return false;
 		    }
 
 		  if ((insn & 0xff000000) == 0x0d000000)
@@ -3252,7 +3117,7 @@ elf_s390_relocate_section (bfd *output_b
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      if (*name == '\0')
 		name = bfd_section_name (sec);
 	    }
@@ -3268,12 +3133,12 @@ elf_s390_relocate_section (bfd *output_b
 		(_("%pB(%pA+%#" PRIx64 "): reloc against `%s': error %d"),
 		 input_bfd, input_section,
 		 (uint64_t) rel->r_offset, name, (int) r);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Generate the PLT slots together with the dynamic relocations needed
@@ -3425,7 +3290,7 @@ elf_s390_finish_ifunc_symbol (bfd *outpu
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf_s390_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
@@ -3623,12 +3488,14 @@ elf_s390_finish_dynamic_symbol (bfd *out
 				       + htab->elf.iplt->output_offset
 				       + h->plt.offset),
 			  htab->elf.sgot->contents + h->got.offset);
-	      return TRUE;
+	      return true;
 	    }
 	}
-      else if (bfd_link_pic (info)
-	       && SYMBOL_REFERENCES_LOCAL (info, h))
+      else if (SYMBOL_REFERENCES_LOCAL (info, h))
 	{
+	  if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
+	    return true;
+
 	  /* If this is a static link, or it is a -Bsymbolic link and
 	     the symbol is defined locally or was forced to be local
 	     because of a version file, we just want to emit a
@@ -3636,7 +3503,7 @@ elf_s390_finish_dynamic_symbol (bfd *out
 	     will already have been initialized in the
 	     relocate_section function.  */
 	  if (!(h->def_regular || ELF_COMMON_DEF_P (h)))
-	    return FALSE;
+	    return false;
 	  BFD_ASSERT((h->got.offset & 1) != 0);
 	  rela.r_info = ELF32_R_INFO (0, R_390_RELATIVE);
 	  rela.r_addend = (h->root.u.def.value
@@ -3691,7 +3558,7 @@ elf_s390_finish_dynamic_symbol (bfd *out
       || h == htab->elf.hplt)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Used to decide how to sort relocs in an optimal manner for the
@@ -3734,7 +3601,7 @@ elf_s390_reloc_type_class (const struct
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_s390_finish_dynamic_sections (bfd *output_bfd,
 				  struct bfd_link_info *info)
 {
@@ -3850,9 +3717,9 @@ 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;
+		  return false;
 
 		if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 		  elf_s390_finish_ifunc_symbol (output_bfd, info, NULL, htab,
@@ -3864,12 +3731,12 @@ elf_s390_finish_dynamic_sections (bfd *o
 	      }
 	  }
     }
-  return TRUE;
+  return true;
 }
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf_s390_grok_prstatus (bfd * abfd, Elf_Internal_Note * note)
 {
   int offset;
@@ -3878,7 +3745,7 @@ elf_s390_grok_prstatus (bfd * abfd, Elf_
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 224:			/* S/390 Linux.  */
       /* pr_cursig */
@@ -3898,13 +3765,13 @@ elf_s390_grok_prstatus (bfd * abfd, Elf_
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf_s390_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 124:			/* sizeof(struct elf_prpsinfo) on s390 */
       elf_tdata (abfd)->core->pid
@@ -3928,7 +3795,7 @@ elf_s390_grok_psinfo (bfd *abfd, Elf_Int
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 static char *
@@ -4005,19 +3872,19 @@ elf_s390_plt_sym_val (bfd_vma i, const a
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf32_s390_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
 
   if (!is_s390_elf (ibfd) || !is_s390_elf (obfd))
-    return TRUE;
+    return true;
 
   if (!elf_s390_merge_obj_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   elf_elfheader (obfd)->e_flags |= elf_elfheader (ibfd)->e_flags;
-  return TRUE;
+  return true;
 }
 
 
@@ -4056,7 +3923,7 @@ elf32_s390_merge_private_bfd_data (bfd *
 #define elf_backend_gc_mark_hook	      elf_s390_gc_mark_hook
 #define elf_backend_reloc_type_class	      elf_s390_reloc_type_class
 #define elf_backend_relocate_section	      elf_s390_relocate_section
-#define elf_backend_size_dynamic_sections     elf_s390_size_dynamic_sections
+#define elf_backend_late_size_sections	      elf_s390_late_size_sections
 #define elf_backend_init_index_section	      _bfd_elf_init_1_index_section
 #define elf_backend_grok_prstatus	      elf_s390_grok_prstatus
 #define elf_backend_grok_psinfo		      elf_s390_grok_psinfo
@@ -4067,6 +3934,6 @@ elf32_s390_merge_private_bfd_data (bfd *
 #define bfd_elf32_mkobject		elf_s390_mkobject
 #define elf_backend_object_p		elf_s390_object_p
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #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.20200303/bfd/elf32-score7.c ./bfd/elf32-score7.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-score7.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-score7.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for S+core.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -44,22 +44,22 @@ struct score_elf_link_hash_entry
   unsigned int possibly_dynamic_relocs;
 
   /* If the R_SCORE_ABS32, R_SCORE_REL32 reloc is against a readonly section.  */
-  bfd_boolean readonly_reloc;
+  bool readonly_reloc;
 
   /* We must not create a stub for a symbol that has relocations related to
      taking the function's address, i.e. any but R_SCORE_CALL15 ones.  */
-  bfd_boolean no_fn_stub;
+  bool no_fn_stub;
 
   /* Are we forced local?  This will only be set if we have converted
      the initial global GOT entry to a local GOT entry.  */
-  bfd_boolean forced_local;
+  bool forced_local;
 };
 
 /* Traverse a score ELF linker hash table.  */
 #define score_elf_link_hash_traverse(table, func, info) \
-  (elf_link_hash_traverse \
-   ((table),						     \
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \
+  (elf_link_hash_traverse					\
+   ((table),							\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),	\
     (info)))
 
 /* This structure is used to hold .got entries while estimating got sizes.  */
@@ -197,9 +197,12 @@ static bfd *reldyn_sorting_bfd;
    together, and then referenced via the gp pointer, which yields
    faster assembler code.  This is what we use for the small common
    section.  This approach is copied from ecoff.c.  */
-static asection  score_elf_scom_section;
-static asymbol   score_elf_scom_symbol;
-static asymbol * score_elf_scom_symbol_ptr;
+static asection score_elf_scom_section;
+static const asymbol score_elf_scom_symbol =
+  GLOBAL_SYM_INIT (".scommon", &score_elf_scom_section);
+static asection score_elf_scom_section =
+  BFD_FAKE_SECTION (score_elf_scom_section, &score_elf_scom_symbol,
+		    ".scommon", 0, SEC_IS_COMMON | SEC_SMALL_DATA);
 
 static bfd_reloc_status_type
 score_elf_hi16_reloc (bfd *abfd ATTRIBUTE_UNUSED,
@@ -247,7 +250,7 @@ score_elf_lo16_reloc (bfd *abfd,
 /* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
    dangerous relocation.  */
 
-static bfd_boolean
+static bool
 score_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp)
 {
   unsigned int count;
@@ -257,7 +260,7 @@ score_elf_assign_gp (bfd *output_bfd, bf
   /* If we've already figured out what GP will be, just return it.  */
   *pgp = _bfd_get_gp_value (output_bfd);
   if (*pgp)
-    return TRUE;
+    return true;
 
   count = bfd_get_symcount (output_bfd);
   sym = bfd_get_outsymbols (output_bfd);
@@ -287,10 +290,10 @@ score_elf_assign_gp (bfd *output_bfd, bf
       /* Only get the error once.  */
       *pgp = 4;
       _bfd_set_gp_value (output_bfd, *pgp);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We have to figure out the gp value, so that we can adjust the
@@ -302,7 +305,7 @@ score_elf_assign_gp (bfd *output_bfd, bf
 static bfd_reloc_status_type
 score_elf_final_gp (bfd *output_bfd,
 		    asymbol *symbol,
-		    bfd_boolean relocatable,
+		    bool relocatable,
 		    char **error_message,
 		    bfd_vma *pgp)
 {
@@ -337,23 +340,14 @@ score_elf_final_gp (bfd *output_bfd,
 
 static bfd_reloc_status_type
 score_elf_gprel15_with_gp (bfd *abfd,
-			   asymbol *symbol,
 			   arelent *reloc_entry,
 			   asection *input_section,
-			   bfd_boolean relocateable,
+			   bool relocateable,
 			   void * data,
 			   bfd_vma gp ATTRIBUTE_UNUSED)
 {
-  bfd_vma relocation;
   unsigned long insn;
 
-  if (bfd_is_com_section (symbol->section))
-    relocation = 0;
-  else
-    relocation = symbol->value;
-
-  relocation += symbol->section->output_section->vma;
-  relocation += symbol->section->output_offset;
   if (reloc_entry->address > input_section->size)
     return bfd_reloc_outofrange;
 
@@ -372,7 +366,7 @@ score_elf_gprel15_with_gp (bfd *abfd,
 
 static bfd_reloc_status_type
 gprel32_with_gp (bfd *abfd, asymbol *symbol, arelent *reloc_entry,
-		 asection *input_section, bfd_boolean relocatable,
+		 asection *input_section, bool relocatable,
 		 void *data, bfd_vma gp)
 {
   bfd_vma relocation;
@@ -422,7 +416,7 @@ score_elf_gprel15_reloc (bfd *abfd,
 			 bfd *output_bfd,
 			 char **error_message)
 {
-  bfd_boolean relocateable;
+  bool relocateable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -433,19 +427,21 @@ score_elf_gprel15_reloc (bfd *abfd,
       return bfd_reloc_ok;
     }
   if (output_bfd != NULL)
-    relocateable = TRUE;
+    relocateable = true;
   else
     {
-      relocateable = FALSE;
+      relocateable = false;
       output_bfd = symbol->section->output_section->owner;
+      if (output_bfd == NULL)
+	return bfd_reloc_undefined;
     }
 
   ret = score_elf_final_gp (output_bfd, symbol, relocateable, error_message, &gp);
   if (ret != bfd_reloc_ok)
     return ret;
 
-  return score_elf_gprel15_with_gp (abfd, symbol, reloc_entry,
-					 input_section, relocateable, data, gp);
+  return score_elf_gprel15_with_gp (abfd, reloc_entry,
+				    input_section, relocateable, data, gp);
 }
 
 /* Do a R_SCORE_GPREL32 relocation.  This is a 32 bit value which must
@@ -456,7 +452,7 @@ score_elf_gprel32_reloc (bfd *abfd, arel
 			 void *data, asection *input_section, bfd *output_bfd,
 			 char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -471,10 +467,10 @@ score_elf_gprel32_reloc (bfd *abfd, arel
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
+      relocatable = false;
       output_bfd = symbol->section->output_section->owner;
     }
 
@@ -546,301 +542,301 @@ static reloc_howto_type elf32_score_howt
   /* No relocation.  */
   HOWTO (R_SCORE_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_HI16 */
   HOWTO (R_SCORE_HI16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_hi16_reloc,	/* special_function */
 	 "R_SCORE_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x37fff,		/* src_mask */
 	 0x37fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_LO16 */
   HOWTO (R_SCORE_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_lo16_reloc,	/* special_function */
 	 "R_SCORE_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x37fff,		/* src_mask */
 	 0x37fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /*  R_SCORE_BCMP */
   HOWTO (R_SCORE_BCMP,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_BCMP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SCORE_24,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_24",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3ff7fff,		/* src_mask */
 	 0x3ff7fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /*R_SCORE_PC19 */
   HOWTO (R_SCORE_PC19,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_PC19",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3ff03fe,		/* src_mask */
 	 0x3ff03fe,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /*R_SCORE16_11 */
   HOWTO (R_SCORE16_11,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE16_11",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000000ffe,		/* src_mask */
 	 0x000000ffe,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE16_PC8 */
   HOWTO (R_SCORE16_PC8,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE16_PC8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit absolute */
   HOWTO (R_SCORE_ABS32,		/* type 8 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_ABS32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit absolute */
   HOWTO (R_SCORE_ABS16,		/* type 11 */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_ABS16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_DUMMY2 */
   HOWTO (R_SCORE_DUMMY2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_DUMMY2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x00007fff,		/* src_mask */
 	 0x00007fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_GP15 */
   HOWTO (R_SCORE_GP15,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_gprel15_reloc,/* special_function */
 	 "R_SCORE_GP15",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x00007fff,		/* src_mask */
 	 0x00007fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_SCORE_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_SCORE_GNU_VTINHERIT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_SCORE_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_SCORE_GNU_VTENTRY", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_SCORE_GOT15,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 score_elf_got15_reloc, /* special_function */
 	 "R_SCORE_GOT15",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x00007fff,		/* src_mask */
 	 0x00007fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_SCORE_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_got_lo16_reloc, /* special_function */
 	 "R_SCORE_GOT_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x37ffe,		/* src_mask */
 	 0x37ffe,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 15 bit call through global offset table.  */
   HOWTO (R_SCORE_CALL15,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_CALL15",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x00007fff,		/* src_mask */
 	 0x00007fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit GP relative reference.  */
   HOWTO (R_SCORE_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_gprel32_reloc, /* special_function */
 	 "R_SCORE_GPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit symbol relative relocation.  */
   HOWTO (R_SCORE_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_REL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_DUMMY_HI16 */
   HOWTO (R_SCORE_DUMMY_HI16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_hi16_reloc,	/* special_function */
 	 "R_SCORE_DUMMY_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x37fff,		/* src_mask */
 	 0x37fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 struct score_reloc_map
@@ -873,7 +869,7 @@ static const struct score_reloc_map elf3
   {BFD_RELOC_SCORE_DUMMY_HI16,	 R_SCORE_DUMMY_HI16},
 };
 
-static INLINE hashval_t
+static inline hashval_t
 score_elf_hash_bfd_vma (bfd_vma addr)
 {
 #ifdef BFD64
@@ -915,14 +911,14 @@ score_elf_got_entry_eq (const void *entr
    index.  Otherwise, assign it the lowest available dynamic
    index.  */
 
-static bfd_boolean
+static bool
 score_elf_sort_hash_table_f (struct score_elf_link_hash_entry *h, void *data)
 {
   struct score_elf_hash_sort_data *hsd = data;
 
   /* Symbols without dynamic symbol table entries aren't interesting at all.  */
   if (h->root.dynindx == -1)
-    return TRUE;
+    return true;
 
   /* Global symbols that need GOT entries that are not explicitly
      referenced are marked with got offset 2.  Those that are
@@ -942,11 +938,11 @@ score_elf_sort_hash_table_f (struct scor
       hsd->low = (struct elf_link_hash_entry *) h;
     }
 
-  return TRUE;
+  return true;
 }
 
 static asection *
-score_elf_got_section (bfd *abfd, bfd_boolean maybe_excluded)
+score_elf_got_section (bfd *abfd, bool maybe_excluded)
 {
   asection *sgot = bfd_get_linker_section (abfd, ".got");
 
@@ -964,7 +960,7 @@ score_elf_got_info (bfd *abfd, asection
   asection *sgot;
   struct score_got_info *g;
 
-  sgot = score_elf_got_section (abfd, TRUE);
+  sgot = score_elf_got_section (abfd, true);
   BFD_ASSERT (sgot != NULL);
   BFD_ASSERT (elf_section_data (sgot) != NULL);
   g = score_elf_section_data (sgot)->u.got_info;
@@ -979,10 +975,10 @@ score_elf_got_info (bfd *abfd, asection
    appear towards the end.  This reduces the amount of GOT space
    required.  MAX_LOCAL is used to set the number of local symbols
    known to be in the dynamic symbol table.  During
-   s7_bfd_score_elf_size_dynamic_sections, this value is 1.  Afterward, the
+   s7_bfd_score_elf_late_size_sections, this value is 1.  Afterward, the
    section symbols are added and the count is higher.  */
 
-static bfd_boolean
+static bool
 score_elf_sort_hash_table (struct bfd_link_info *info,
 			   unsigned long max_local)
 {
@@ -1020,7 +1016,7 @@ score_elf_sort_hash_table (struct bfd_li
      table index in the GOT.  */
   g->global_gotsym = hsd.low;
 
-  return TRUE;
+  return true;
 }
 
 /* Returns the first relocation of type r_type found, beginning with
@@ -1059,11 +1055,11 @@ score_elf_sort_dynamic_relocs (const voi
 }
 
 /* Return whether a relocation is against a local symbol.  */
-static bfd_boolean
+static bool
 score_elf_local_relocation_p (bfd *input_bfd,
 			      const Elf_Internal_Rela *relocation,
 			      asection **local_sections,
-			      bfd_boolean check_forced)
+			      bool check_forced)
 {
   unsigned long r_symndx;
   Elf_Internal_Shdr *symtab_hdr;
@@ -1075,9 +1071,9 @@ score_elf_local_relocation_p (bfd *input
   extsymoff = (elf_bad_symtab (input_bfd)) ? 0 : symtab_hdr->sh_info;
 
   if (r_symndx < extsymoff)
-    return TRUE;
+    return true;
   if (elf_bad_symtab (input_bfd) && local_sections[r_symndx] != NULL)
-    return TRUE;
+    return true;
 
   if (check_forced)
     {
@@ -1089,16 +1085,16 @@ score_elf_local_relocation_p (bfd *input
 	     || h->root.root.type == bfd_link_hash_warning)
 	h = (struct score_elf_link_hash_entry *) h->root.root.u.i.link;
       if (h->root.forced_local)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Returns the dynamic relocation section for DYNOBJ.  */
 
 static asection *
-score_elf_rel_dyn_section (bfd *dynobj, bfd_boolean create_p)
+score_elf_rel_dyn_section (bfd *dynobj, bool create_p)
 {
   static const char dname[] = ".rel.dyn";
   asection *sreloc;
@@ -1126,7 +1122,7 @@ score_elf_allocate_dynamic_relocations (
 {
   asection *s;
 
-  s = score_elf_rel_dyn_section (abfd, FALSE);
+  s = score_elf_rel_dyn_section (abfd, false);
   BFD_ASSERT (s != NULL);
 
   if (s->size == 0)
@@ -1143,7 +1139,7 @@ score_elf_allocate_dynamic_relocations (
    dynamic relocation.  The ADDENDP is adjusted if necessary; the
    caller should store the result in place of the original addend.  */
 
-static bfd_boolean
+static bool
 score_elf_create_dynamic_relocation (bfd *output_bfd,
 				     struct bfd_link_info *info,
 				     const Elf_Internal_Rela *rel,
@@ -1151,38 +1147,34 @@ score_elf_create_dynamic_relocation (bfd
 				     bfd_vma symbol,
 				     bfd_vma *addendp, asection *input_section)
 {
-  Elf_Internal_Rela outrel[3];
+  Elf_Internal_Rela outrel;
   asection *sreloc;
   bfd *dynobj;
   int r_type;
   long indx;
-  bfd_boolean defined_p;
+  bool defined_p;
 
   r_type = ELF32_R_TYPE (rel->r_info);
   dynobj = elf_hash_table (info)->dynobj;
-  sreloc = score_elf_rel_dyn_section (dynobj, FALSE);
+  sreloc = score_elf_rel_dyn_section (dynobj, false);
   BFD_ASSERT (sreloc != NULL);
   BFD_ASSERT (sreloc->contents != NULL);
   BFD_ASSERT (sreloc->reloc_count * SCORE_ELF_REL_SIZE (output_bfd) < sreloc->size);
 
-  outrel[0].r_offset =
-    _bfd_elf_section_offset (output_bfd, info, input_section, rel[0].r_offset);
-  outrel[1].r_offset =
-    _bfd_elf_section_offset (output_bfd, info, input_section, rel[1].r_offset);
-  outrel[2].r_offset =
-    _bfd_elf_section_offset (output_bfd, info, input_section, rel[2].r_offset);
+  outrel.r_offset =
+    _bfd_elf_section_offset (output_bfd, info, input_section, rel->r_offset);
 
-  if (outrel[0].r_offset == MINUS_ONE)
+  if (outrel.r_offset == MINUS_ONE)
     /* The relocation field has been deleted.  */
-    return TRUE;
+    return true;
 
-  if (outrel[0].r_offset == MINUS_TWO)
+  if (outrel.r_offset == MINUS_TWO)
     {
       /* The relocation field has been converted into a relative value of
 	 some sort.  Functions like _bfd_elf_write_section_eh_frame expect
 	 the field to be fully relocated, so add in the symbol's value.  */
       *addendp += symbol;
-      return TRUE;
+      return true;
     }
 
   /* We must now calculate the dynamic symbol table index to use
@@ -1198,12 +1190,12 @@ score_elf_create_dynamic_relocation (bfd
 	   relocation field.  It therefore treats relocs against
 	   defined symbols in the same way as relocs against
 	   undefined symbols.  */
-      defined_p = FALSE;
+      defined_p = false;
     }
   else
     {
       indx = 0;
-      defined_p = TRUE;
+      defined_p = true;
     }
 
   /* If the relocation was previously an absolute relocation and
@@ -1215,7 +1207,7 @@ score_elf_create_dynamic_relocation (bfd
 
   /* The relocation is always an REL32 relocation because we don't
      know where the shared library will wind up at load-time.  */
-  outrel[0].r_info = ELF32_R_INFO ((unsigned long) indx, R_SCORE_REL32);
+  outrel.r_info = ELF32_R_INFO ((unsigned long) indx, R_SCORE_REL32);
 
   /* For strict adherence to the ABI specification, we should
      generate a R_SCORE_64 relocation record by itself before the
@@ -1229,24 +1221,18 @@ score_elf_create_dynamic_relocation (bfd
      invocation if ABI_64_P, and here we should generate an
      additional relocation record with R_SCORE_64 by itself for a
      NULL symbol before this relocation record.  */
-  outrel[1].r_info = ELF32_R_INFO (0, R_SCORE_NONE);
-  outrel[2].r_info = ELF32_R_INFO (0, R_SCORE_NONE);
 
   /* Adjust the output offset of the relocation to reference the
      correct location in the output file.  */
-  outrel[0].r_offset += (input_section->output_section->vma
-			 + input_section->output_offset);
-  outrel[1].r_offset += (input_section->output_section->vma
-			 + input_section->output_offset);
-  outrel[2].r_offset += (input_section->output_section->vma
-			 + input_section->output_offset);
+  outrel.r_offset += (input_section->output_section->vma
+		      + input_section->output_offset);
 
   /* Put the relocation back out.  We have to use the special
      relocation outputter in the 64-bit case since the 64-bit
      relocation format is non-standard.  */
   bfd_elf32_swap_reloc_out
-      (output_bfd, &outrel[0],
-       (sreloc->contents + sreloc->reloc_count * sizeof (Elf32_External_Rel)));
+    (output_bfd, &outrel,
+     sreloc->contents + sreloc->reloc_count * sizeof (Elf32_External_Rel));
 
   /* We've now added another relocation.  */
   ++sreloc->reloc_count;
@@ -1255,28 +1241,28 @@ score_elf_create_dynamic_relocation (bfd
      will be writing to it.  */
   elf_section_data (input_section->output_section)->this_hdr.sh_flags |= SHF_WRITE;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 score_elf_create_got_section (bfd *abfd,
 			      struct bfd_link_info *info,
-			      bfd_boolean maybe_exclude)
+			      bool maybe_exclude)
 {
   flagword flags;
   asection *s;
   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);
+  s = score_elf_got_section (abfd, true);
   if (s)
     {
       if (! maybe_exclude)
 	s->flags &= ~SEC_EXCLUDE;
-      return TRUE;
+      return true;
     }
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED);
@@ -1290,7 +1276,7 @@ score_elf_create_got_section (bfd *abfd,
   elf_hash_table (info)->sgot = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, 4))
-    return FALSE;
+    return false;
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_.  We don't do this in the
      linker script because we don't want to define the symbol if we
@@ -1298,8 +1284,8 @@ score_elf_create_got_section (bfd *abfd,
   bh = NULL;
   if (! (_bfd_generic_link_add_one_symbol
 	 (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s,
-	  0, NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh)))
-    return FALSE;
+	  0, NULL, false, get_elf_backend_data (abfd)->collect, &bh)))
+    return false;
 
   h = (struct elf_link_hash_entry *) bh;
   h->non_elf = 0;
@@ -1309,12 +1295,12 @@ score_elf_create_got_section (bfd *abfd,
 
   if (bfd_link_pic (info)
       && ! bfd_elf_link_record_dynamic_symbol (info, h))
-    return FALSE;
+    return false;
 
   amt = sizeof (struct score_got_info);
   g = bfd_alloc (abfd, amt);
   if (g == NULL)
-    return FALSE;
+    return false;
 
   g->global_gotsym = NULL;
   g->global_gotno = 0;
@@ -1326,11 +1312,11 @@ score_elf_create_got_section (bfd *abfd,
   g->got_entries = htab_try_create (1, score_elf_got_entry_hash,
 				    score_elf_got_entry_eq, NULL);
   if (g->got_entries == NULL)
-    return FALSE;
+    return false;
   score_elf_section_data (s)->u.got_info = g;
   score_elf_section_data (s)->elf.this_hdr.sh_flags |= SHF_ALLOC | SHF_WRITE | SHF_SCORE_GPREL;
 
-  return TRUE;
+  return true;
 }
 
 /* Calculate the %high function.  */
@@ -1394,7 +1380,7 @@ score_elf_create_local_got_entry (bfd *a
 
 static bfd_vma
 score_elf_got16_entry (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
-		       bfd_vma value, bfd_boolean external)
+		       bfd_vma value, bool external)
 {
   asection *sgot;
   struct score_got_info *g;
@@ -1422,7 +1408,7 @@ score_elf_got16_entry (bfd *abfd, bfd *i
 void
 s7_bfd_score_elf_hide_symbol (struct bfd_link_info *info,
 			      struct elf_link_hash_entry *entry,
-			      bfd_boolean force_local)
+			      bool force_local)
 {
   bfd *dynobj;
   asection *got;
@@ -1432,12 +1418,12 @@ s7_bfd_score_elf_hide_symbol (struct bfd
   h = (struct score_elf_link_hash_entry *) entry;
   if (h->forced_local)
     return;
-  h->forced_local = TRUE;
+  h->forced_local = true;
 
   dynobj = elf_hash_table (info)->dynobj;
   if (dynobj != NULL && force_local)
     {
-      got = score_elf_got_section (dynobj, FALSE);
+      got = score_elf_got_section (dynobj, false);
       if (got == NULL)
 	return;
       g = score_elf_section_data (got)->u.got_info;
@@ -1497,7 +1483,7 @@ s7_bfd_score_elf_hide_symbol (struct bfd
    symbol table index lower than any we've seen to date, record it for
    posterity.  */
 
-static bfd_boolean
+static bool
 score_elf_record_global_got_symbol (struct elf_link_hash_entry *h,
 				    bfd *abfd,
 				    struct bfd_link_info *info,
@@ -1512,11 +1498,11 @@ score_elf_record_global_got_symbol (stru
 	{
 	case STV_INTERNAL:
 	case STV_HIDDEN:
-	  s7_bfd_score_elf_hide_symbol (info, h, TRUE);
+	  s7_bfd_score_elf_hide_symbol (info, h, true);
 	  break;
 	}
       if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   entry.abfd = abfd;
@@ -1528,31 +1514,31 @@ score_elf_record_global_got_symbol (stru
   /* If we've already marked this entry as needing GOT space, we don't
      need to do it again.  */
   if (*loc)
-    return TRUE;
+    return true;
 
   *loc = bfd_alloc (abfd, sizeof entry);
   if (! *loc)
-    return FALSE;
+    return false;
 
   entry.gotidx = -1;
 
   memcpy (*loc, &entry, sizeof (entry));
 
   if (h->got.offset != MINUS_ONE)
-    return TRUE;
+    return true;
 
   /* By setting this to a value other than -1, we are indicating that
      there needs to be a GOT entry for H.  Avoid using zero, as the
      generic ELF copy_indirect_symbol tests for <= 0.  */
   h->got.offset = 1;
 
-  return TRUE;
+  return true;
 }
 
 /* Reserve space in G for a GOT entry containing the value of symbol
    SYMNDX in input bfd ABDF, plus ADDEND.  */
 
-static bfd_boolean
+static bool
 score_elf_record_local_got_symbol (bfd *abfd,
 				   long symndx,
 				   bfd_vma addend,
@@ -1566,17 +1552,17 @@ score_elf_record_local_got_symbol (bfd *
   loc = (struct score_got_entry **) htab_find_slot (g->got_entries, &entry, INSERT);
 
   if (*loc)
-    return TRUE;
+    return true;
 
   entry.gotidx = g->local_gotno++;
 
   *loc = bfd_alloc (abfd, sizeof(entry));
   if (! *loc)
-    return FALSE;
+    return false;
 
   memcpy (*loc, &entry, sizeof (entry));
 
-  return TRUE;
+  return true;
 }
 
 /* Returns the GOT offset at which the indicated address can be found.
@@ -1818,7 +1804,7 @@ score_elf_final_link_relocate (reloc_how
 			       struct score_elf_link_hash_entry *h,
 			       Elf_Internal_Sym *local_syms,
 			       asection **local_sections,
-			       bfd_boolean gp_disp_p)
+			       bool gp_disp_p)
 {
   unsigned long r_type;
   unsigned long r_symndx;
@@ -1835,14 +1821,14 @@ score_elf_final_link_relocate (reloc_how
      symbol, adjusted by the addend, resides during execution.  */
   bfd_vma g = MINUS_ONE;
   /* TRUE if the symbol referred to by this relocation is a local symbol.  */
-  bfd_boolean local_p;
+  bool local_p;
   /* The eventual value we will relocate.  */
   bfd_vma value = symbol;
   unsigned long hi16_addend, hi16_offset, hi16_value, uvalue, offset, abs_value = 0;
 
   Elf_Internal_Sym *sym = 0;
   asection *sec = NULL;
-  bfd_boolean merge_p = 0;
+  bool merge_p = 0;
 
 
   if (elf_gp (output_bfd) == 0)
@@ -1883,7 +1869,7 @@ score_elf_final_link_relocate (reloc_how
   rel_addr = (input_section->output_section->vma + input_section->output_offset + rel->r_offset);
 
   /* For hidden symbol.  */
-  local_p = score_elf_local_relocation_p (input_bfd, rel, local_sections, FALSE);
+  local_p = score_elf_local_relocation_p (input_bfd, rel, local_sections, false);
   if (local_p)
     {
       sym = local_syms + r_symndx;
@@ -1954,7 +1940,7 @@ score_elf_final_link_relocate (reloc_how
 	}
     }
 
-  local_p = score_elf_local_relocation_p (input_bfd, rel, local_sections, TRUE);
+  local_p = score_elf_local_relocation_p (input_bfd, rel, local_sections, true);
 
   /* If we haven't already determined the GOT offset, or the GP value,
      and we're going to need it, get it now.  */
@@ -1975,7 +1961,7 @@ score_elf_final_link_relocate (reloc_how
 		 symbol is defined locally, or was forced to be local.
 		 We must initialize this entry in the GOT.  */
 	      bfd *tmpbfd = elf_hash_table (info)->dynobj;
-	      asection *sgot = score_elf_got_section (tmpbfd, FALSE);
+	      asection *sgot = score_elf_got_section (tmpbfd, false);
 	      bfd_put_32 (tmpbfd, value, sgot->contents + g);
 	    }
 	}
@@ -2157,12 +2143,12 @@ score_elf_final_link_relocate (reloc_how
     case R_SCORE_CALL15:
       if (local_p)
 	{
-	  bfd_boolean forced;
+	  bool forced;
 
 	  /* The special case is when the symbol is forced to be local.  We need the
 	     full address in the GOT since no R_SCORE_GOT_LO16 relocation follows.  */
 	  forced = ! score_elf_local_relocation_p (input_bfd, rel,
-						   local_sections, FALSE);
+						   local_sections, false);
 	  value = score_elf_got16_entry (output_bfd, input_bfd, info,
 					 symbol + addend, forced);
 	  if (value == MINUS_ONE)
@@ -2214,8 +2200,8 @@ score_elf_final_link_relocate (reloc_how
 
 /* Score backend functions.  */
 
-bfd_boolean
-s7_bfd_score_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
+bool
+s7_bfd_score_info_to_howto (bfd *abfd,
 			    arelent *bfd_reloc,
 			    Elf_Internal_Rela *elf_reloc)
 {
@@ -2223,15 +2209,21 @@ s7_bfd_score_info_to_howto (bfd *abfd AT
 
   r_type = ELF32_R_TYPE (elf_reloc->r_info);
   if (r_type >= ARRAY_SIZE (elf32_score_howto_table))
-    return FALSE;
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+			  abfd, r_type);
+      bfd_set_error (bfd_error_bad_value);
+      return false;
+    }
 
   bfd_reloc->howto = &elf32_score_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* Relocate an score ELF section.  */
 
-bfd_boolean
+int
 s7_bfd_score_elf_relocate_section (bfd *output_bfd,
 				   struct bfd_link_info *info,
 				   bfd *input_bfd,
@@ -2248,7 +2240,7 @@ s7_bfd_score_elf_relocate_section (bfd *
   unsigned long offset;
   unsigned long hi16_addend, hi16_offset, hi16_value, uvalue;
   size_t extsymoff;
-  bfd_boolean gp_disp_p = FALSE;
+  bool gp_disp_p = false;
 
   /* Sort dynsym.  */
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -2267,7 +2259,7 @@ s7_bfd_score_elf_relocate_section (bfd *
 	}
 
       if (!score_elf_sort_hash_table (info, dynsecsymcount + 1))
-	return FALSE;
+	return false;
     }
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
@@ -2403,7 +2395,7 @@ s7_bfd_score_elf_relocate_section (bfd *
 	      if (r_type != R_SCORE_HI16 && r_type != R_SCORE_LO16)
 		return bfd_reloc_notsupported;
 
-	      gp_disp_p = TRUE;
+	      gp_disp_p = true;
 	    }
 
 	  /* If this symbol is defined, calculate its address.  Note that
@@ -2443,18 +2435,20 @@ 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;
 	    }
 	}
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_SCORE_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -2535,7 +2529,7 @@ s7_bfd_score_elf_relocate_section (bfd *
 	      break;
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -2562,13 +2556,13 @@ s7_bfd_score_elf_relocate_section (bfd *
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase, and
    allocate space in the global offset table.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_check_relocs (bfd *abfd,
 			       struct bfd_link_info *info,
 			       asection *sec,
@@ -2585,7 +2579,7 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
   asection *sreloc;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -2599,7 +2593,7 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
     }
   else
     {
-      sgot = score_elf_got_section (dynobj, FALSE);
+      sgot = score_elf_got_section (dynobj, false);
       if (sgot == NULL)
 	g = NULL;
       else
@@ -2631,7 +2625,7 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 	    /* xgettext:c-format */
 	    (_("%pB: malformed reloc detected for section %pA"), abfd, sec);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       else
 	{
@@ -2654,8 +2648,8 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 	    case R_SCORE_CALL15:
 	      if (dynobj == NULL)
 		elf_hash_table (info)->dynobj = dynobj = abfd;
-	      if (!score_elf_create_got_section (dynobj, info, FALSE))
-		return FALSE;
+	      if (!score_elf_create_got_section (dynobj, info, false))
+		return false;
 	      g = score_elf_got_info (dynobj, &sgot);
 	      break;
 	    case R_SCORE_ABS32:
@@ -2673,7 +2667,7 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
       if (!h && (r_type == R_SCORE_GOT_LO16))
 	{
 	  if (! score_elf_record_local_got_symbol (abfd, r_symndx, rel->r_addend, g))
-	    return FALSE;
+	    return false;
 	}
 
       switch (r_type)
@@ -2686,13 +2680,13 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 		(_("%pB: CALL15 reloc at %#" PRIx64 " not against global symbol"),
 		 abfd, (uint64_t) rel->r_offset);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  else
 	    {
 	      /* This symbol requires a global offset table entry.  */
 	      if (! score_elf_record_global_got_symbol (h, abfd, info, g))
-		return FALSE;
+		return false;
 
 	      /* We need a stub, not a plt entry for the undefined function.  But we record
 		 it as if it needs plt.  See _bfd_elf_adjust_dynamic_symbol.  */
@@ -2702,7 +2696,7 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 	  break;
 	case R_SCORE_GOT15:
 	  if (h && ! score_elf_record_global_got_symbol (h, abfd, info, g))
-	    return FALSE;
+	    return false;
 	  break;
 	case R_SCORE_ABS32:
 	case R_SCORE_REL32:
@@ -2711,9 +2705,9 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 	    {
 	      if (sreloc == NULL)
 		{
-		  sreloc = score_elf_rel_dyn_section (dynobj, TRUE);
+		  sreloc = score_elf_rel_dyn_section (dynobj, true);
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 #define SCORE_READONLY_SECTION (SEC_ALLOC | SEC_LOAD | SEC_READONLY)
 	      if (bfd_link_pic (info))
@@ -2740,7 +2734,7 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 		      == SCORE_READONLY_SECTION)
 		    /* We need it to tell the dynamic linker if there
 		       are relocations against the text segment.  */
-		    hscore->readonly_reloc = TRUE;
+		    hscore->readonly_reloc = true;
 		}
 
 	      /* Even though we don't directly need a GOT entry for this symbol,
@@ -2750,11 +2744,11 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 		{
 		  if (dynobj == NULL)
 		    elf_hash_table (info)->dynobj = dynobj = abfd;
-		  if (! score_elf_create_got_section (dynobj, info, TRUE))
-		    return FALSE;
+		  if (! score_elf_create_got_section (dynobj, info, true))
+		    return false;
 		  g = score_elf_got_info (dynobj, &sgot);
 		  if (! score_elf_record_global_got_symbol (h, abfd, info, g))
-		    return FALSE;
+		    return false;
 		}
 	    }
 	  break;
@@ -2763,14 +2757,14 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 	     Reconstruct it for later use during GC.  */
 	case R_SCORE_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_SCORE_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 	default:
 	  break;
@@ -2786,7 +2780,7 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 	      struct score_elf_link_hash_entry *sh;
 
 	      sh = (struct score_elf_link_hash_entry *) h;
-	      sh->no_fn_stub = TRUE;
+	      sh->no_fn_stub = true;
 	    }
 	  break;
 	case R_SCORE_CALL15:
@@ -2794,10 +2788,10 @@ s7_bfd_score_elf_check_relocs (bfd *abfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 s7_bfd_score_elf_add_symbol_hook (bfd *abfd,
 				  struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  Elf_Internal_Sym *sym,
@@ -2814,12 +2808,12 @@ 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;
     }
 
-  return TRUE;
+  return true;
 }
 
 void
@@ -2835,19 +2829,6 @@ s7_bfd_score_elf_symbol_processing (bfd
 	break;
       /* Fall through.  */
     case SHN_SCORE_SCOMMON:
-      if (score_elf_scom_section.name == NULL)
-	{
-	  /* Initialize the small common section.  */
-	  score_elf_scom_section.name = ".scommon";
-	  score_elf_scom_section.flags = SEC_IS_COMMON;
-	  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;
-	  score_elf_scom_symbol.name = ".scommon";
-	  score_elf_scom_symbol.flags = BSF_SECTION_SYM;
-	  score_elf_scom_symbol.section = &score_elf_scom_section;
-	  score_elf_scom_symbol_ptr = &score_elf_scom_symbol;
-	}
       asym->section = &score_elf_scom_section;
       asym->value = elfsym->internal_elf_sym.st_size;
       break;
@@ -2870,7 +2851,7 @@ s7_bfd_score_elf_link_output_symbol_hook
   return 1;
 }
 
-bfd_boolean
+bool
 s7_bfd_score_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					 asection *sec,
 					 int *retval)
@@ -2878,10 +2859,10 @@ s7_bfd_score_elf_section_from_bfd_sectio
   if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_SCORE_SCOMMON;
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -2889,7 +2870,7 @@ s7_bfd_score_elf_section_from_bfd_sectio
    dynamic object, but we're not including those sections.  We have to
    change the definition to something the rest of the link can understand.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 					struct elf_link_hash_entry *h)
 {
@@ -2924,7 +2905,7 @@ s7_bfd_score_elf_adjust_dynamic_symbol (
   if (!hscore->no_fn_stub && h->needs_plt)
     {
       if (!elf_hash_table (info)->dynamic_sections_created)
-	return TRUE;
+	return true;
 
       /* If this symbol is not defined in a regular file, then set
 	 the symbol to the stub location.  This is required to make
@@ -2947,7 +2928,7 @@ s7_bfd_score_elf_adjust_dynamic_symbol (
 
 	  /* The last half word of the stub will be filled with the index
 	     of this symbol in .dynsym section.  */
-	  return TRUE;
+	  return true;
 	}
     }
   else if ((h->type == STT_FUNC) && !h->needs_plt)
@@ -2955,7 +2936,7 @@ s7_bfd_score_elf_adjust_dynamic_symbol (
       /* This will set the entry for this symbol in the GOT to 0, and
 	 the dynamic linker will take care of this.  */
       h->root.u.def.value = 0;
-      return TRUE;
+      return true;
     }
 
   /* If this is a weak symbol, and there is a real definition, the
@@ -2967,20 +2948,20 @@ s7_bfd_score_elf_adjust_dynamic_symbol (
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
      is not a function.  */
-  return TRUE;
+  return true;
 }
 
 /* This function is called after all the input files have been read,
    and the input sections have been assigned to output sections.  */
 
-bfd_boolean
-s7_bfd_score_elf_always_size_sections (bfd *output_bfd,
-				       struct bfd_link_info *info)
+bool
+s7_bfd_score_elf_early_size_sections (bfd *output_bfd,
+				      struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
@@ -2993,11 +2974,11 @@ s7_bfd_score_elf_always_size_sections (b
   dynobj = elf_hash_table (info)->dynobj;
   if (dynobj == NULL)
     /* Relocatable links don't have it.  */
-    return TRUE;
+    return true;
 
   g = score_elf_got_info (dynobj, &s);
   if (s == NULL)
-    return TRUE;
+    return true;
 
   /* Calculate the total loadable size of the output.  That will give us the
      maximum number of GOT_PAGE entries required.  */
@@ -3022,7 +3003,7 @@ s7_bfd_score_elf_always_size_sections (b
      that need GOT entries at the end of the symbol table.  We
      do that here.  */
   if (! score_elf_sort_hash_table (info, 1))
-    return FALSE;
+    return false;
 
   if (g->global_gotsym != NULL)
     i = elf_hash_table (info)->dynsymcount - g->global_gotsym->dynindx;
@@ -3051,20 +3032,21 @@ s7_bfd_score_elf_always_size_sections (b
       /* Fixme. Error message or Warning message should be issued here.  */
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-bfd_boolean
-s7_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
+bool
+s7_bfd_score_elf_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean reltext;
+  bool reltext;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -3075,13 +3057,14 @@ s7_bfd_score_elf_size_dynamic_sections (
 	  BFD_ASSERT (s != NULL);
 	  s->size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
 	  s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  reltext = FALSE;
+  reltext = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -3093,7 +3076,7 @@ s7_bfd_score_elf_size_dynamic_sections (
 	 of the dynobj section names depend upon the input files.  */
       name = bfd_section_name (s);
 
-      if (CONST_STRNEQ (name, ".rel"))
+      if (startswith (name, ".rel"))
 	{
 	  if (s->size == 0)
 	    {
@@ -3123,7 +3106,7 @@ s7_bfd_score_elf_size_dynamic_sections (
 	      if ((target != NULL
 		   && (target->flags & SEC_READONLY) != 0
 		   && (target->flags & SEC_ALLOC) != 0) || strcmp (outname, ".rel.dyn") == 0)
-		reltext = TRUE;
+		reltext = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -3131,9 +3114,9 @@ s7_bfd_score_elf_size_dynamic_sections (
 		s->reloc_count = 0;
 	    }
 	}
-      else if (CONST_STRNEQ (name, ".got"))
+      else if (startswith (name, ".got"))
 	{
-	  /* s7_bfd_score_elf_always_size_sections() has already done
+	  /* s7_bfd_score_elf_early_size_sections() has already done
 	     most of the work, but some symbols may have been mapped
 	     to versions that we must now resolve in the got_entries
 	     hash tables.  */
@@ -3144,7 +3127,7 @@ s7_bfd_score_elf_size_dynamic_sections (
 	     of .text section. So put a dummy. XXX  */
 	  s->size += SCORE_FUNCTION_STUB_SIZE;
 	}
-      else if (! CONST_STRNEQ (name, ".init"))
+      else if (! startswith (name, ".init"))
 	{
 	  /* It's not one of our sections, so don't allocate space.  */
 	  continue;
@@ -3155,8 +3138,9 @@ s7_bfd_score_elf_size_dynamic_sections (
       if (s->contents == NULL && s->size != 0)
 	{
 	  bfd_set_error (bfd_error_no_memory);
-	  return FALSE;
+	  return false;
 	}
+      s->alloced = 1;
     }
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -3168,7 +3152,7 @@ s7_bfd_score_elf_size_dynamic_sections (
 	 dynamic linker and used by the debugger.  */
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_DEBUG, 0))
-	return FALSE;
+	return false;
 
       if (reltext)
 	info->flags |= DF_TEXTREL;
@@ -3176,47 +3160,47 @@ s7_bfd_score_elf_size_dynamic_sections (
       if ((info->flags & DF_TEXTREL) != 0)
 	{
 	  if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_TEXTREL, 0))
-	    return FALSE;
+	    return false;
 	}
 
       if (! SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTGOT, 0))
-	return FALSE;
+	return false;
 
-      if (score_elf_rel_dyn_section (dynobj, FALSE))
+      if (score_elf_rel_dyn_section (dynobj, false))
 	{
 	  if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_REL, 0))
-	    return FALSE;
+	    return false;
 
 	  if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELSZ, 0))
-	    return FALSE;
+	    return false;
 
 	  if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELENT, 0))
-	    return FALSE;
+	    return false;
 	}
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_BASE_ADDRESS, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_LOCAL_GOTNO, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_SYMTABNO, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_UNREFEXTNO, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_GOTSYM, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_HIPAGENO, 0))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 s7_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_entry *h;
@@ -3232,15 +3216,15 @@ s7_bfd_score_elf_create_dynamic_sections
   if (s != NULL)
     {
       if (!bfd_set_section_flags (s, flags))
-	return FALSE;
+	return false;
     }
 
   /* We need to create .got section.  */
-  if (!score_elf_create_got_section (abfd, info, FALSE))
-    return FALSE;
+  if (!score_elf_create_got_section (abfd, info, false))
+    return false;
 
-  if (!score_elf_rel_dyn_section (elf_hash_table (info)->dynobj, TRUE))
-    return FALSE;
+  if (!score_elf_rel_dyn_section (elf_hash_table (info)->dynobj, true))
+    return false;
 
   /* Create .stub section.  */
   if (bfd_get_linker_section (abfd, SCORE_ELF_STUB_SECTION_NAME) == NULL)
@@ -3250,7 +3234,7 @@ s7_bfd_score_elf_create_dynamic_sections
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
 
-	return FALSE;
+	return false;
     }
 
   if (!bfd_link_pic (info))
@@ -3261,8 +3245,8 @@ s7_bfd_score_elf_create_dynamic_sections
       bh = NULL;
       if (!(_bfd_generic_link_add_one_symbol
 	    (info, abfd, name, BSF_GLOBAL, bfd_abs_section_ptr,
-	     (bfd_vma) 0, NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	     (bfd_vma) 0, NULL, false, get_elf_backend_data (abfd)->collect, &bh)))
+	return false;
 
       h = (struct elf_link_hash_entry *) bh;
       h->non_elf = 0;
@@ -3270,17 +3254,17 @@ s7_bfd_score_elf_create_dynamic_sections
       h->type = STT_SECTION;
 
       if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_finish_dynamic_symbol (bfd *output_bfd,
 					struct bfd_link_info *info,
 					struct elf_link_hash_entry *h,
@@ -3306,7 +3290,13 @@ s7_bfd_score_elf_finish_dynamic_symbol (
 
       /* FIXME: Can h->dynindex be more than 64K?  */
       if (h->dynindx & 0xffff0000)
-	return FALSE;
+	{
+	  _bfd_error_handler
+	    (_("%pB: cannot handle more than %d dynamic symbols"),
+	     output_bfd, 0xffff);
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
 
       /* Fill the stub.  */
       bfd_put_32 (output_bfd, STUB_LW, stub);
@@ -3329,7 +3319,7 @@ s7_bfd_score_elf_finish_dynamic_symbol (
 
   BFD_ASSERT (h->dynindx != -1 || h->forced_local);
 
-  sgot = score_elf_got_section (dynobj, FALSE);
+  sgot = score_elf_got_section (dynobj, false);
   BFD_ASSERT (sgot != NULL);
   BFD_ASSERT (score_elf_section_data (sgot) != NULL);
   g = score_elf_section_data (sgot)->u.got_info;
@@ -3365,12 +3355,12 @@ s7_bfd_score_elf_finish_dynamic_symbol (
       sym->st_value = elf_gp (output_bfd);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_finish_dynamic_sections (bfd *output_bfd,
 					  struct bfd_link_info *info)
 {
@@ -3384,7 +3374,7 @@ s7_bfd_score_elf_finish_dynamic_sections
 
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
 
-  sgot = score_elf_got_section (dynobj, FALSE);
+  sgot = score_elf_got_section (dynobj, false);
   if (sgot == NULL)
     g = NULL;
   else
@@ -3408,13 +3398,13 @@ s7_bfd_score_elf_finish_dynamic_sections
 	  Elf_Internal_Dyn dyn;
 	  const char *name;
 	  size_t elemsize;
-	  bfd_boolean swap_out_p;
+	  bool swap_out_p;
 
 	  /* Read in the current dynamic entry.  */
 	  (*get_elf_backend_data (dynobj)->s->swap_dyn_in) (dynobj, b, &dyn);
 
 	  /* Assume that we're going to modify it and write it out.  */
-	  swap_out_p = TRUE;
+	  swap_out_p = true;
 
 	  switch (dyn.d_tag)
 	    {
@@ -3473,7 +3463,7 @@ s7_bfd_score_elf_finish_dynamic_sections
 	      break;
 
 	    default:
-	      swap_out_p = FALSE;
+	      swap_out_p = false;
 	      break;
 	    }
 
@@ -3497,7 +3487,7 @@ s7_bfd_score_elf_finish_dynamic_sections
 
 
   /* We need to sort the entries of the dynamic relocation section.  */
-  s = score_elf_rel_dyn_section (dynobj, FALSE);
+  s = score_elf_rel_dyn_section (dynobj, false);
 
   if (s != NULL && s->size > (bfd_vma)2 * SCORE_ELF_REL_SIZE (output_bfd))
     {
@@ -3506,13 +3496,13 @@ s7_bfd_score_elf_finish_dynamic_sections
 	     sizeof (Elf32_External_Rel), score_elf_sort_dynamic_relocs);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function set up the ELF section header for a BFD section in preparation for writing
    it out.  This is where the flags and type fields are set for unusual sections.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 				Elf_Internal_Shdr *hdr,
 				asection *sec)
@@ -3527,7 +3517,7 @@ s7_bfd_score_elf_fake_sections (bfd *abf
       || strcmp (name, ".sbss") == 0)
     hdr->sh_flags |= SHF_SCORE_GPREL;
 
-  return TRUE;
+  return true;
 }
 
 /* This function do additional processing on the ELF section header before writing
@@ -3538,7 +3528,7 @@ s7_bfd_score_elf_fake_sections (bfd *abf
    assign_file_positions_except_relocs(); backend_section_processing after it.  so, we
    modify section flag there, but not backend_fake_section.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_section_processing (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Shdr *hdr)
 {
   if (hdr->bfd_section != NULL)
@@ -3562,20 +3552,20 @@ s7_bfd_score_elf_section_processing (bfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 s7_bfd_score_elf_write_section (bfd *output_bfd, asection *sec, bfd_byte *contents)
 {
   bfd_byte *to, *from, *end;
   int i;
 
   if (strcmp (sec->name, ".pdr") != 0)
-    return FALSE;
+    return false;
 
   if (score_elf_section_data (sec)->u.tdata == NULL)
-    return FALSE;
+    return false;
 
   to = contents;
   end = contents + sec->size;
@@ -3592,7 +3582,7 @@ s7_bfd_score_elf_write_section (bfd *out
   bfd_set_section_contents (output_bfd, sec->output_section, contents,
 			    (file_ptr) sec->output_offset, sec->size);
 
-  return TRUE;
+  return true;
 }
 
 /* Copy data from a SCORE ELF indirect symbol to its direct symbol, hiding the old
@@ -3615,38 +3605,38 @@ s7_bfd_score_elf_copy_indirect_symbol (s
   dirscore->possibly_dynamic_relocs += indscore->possibly_dynamic_relocs;
 
   if (indscore->readonly_reloc)
-    dirscore->readonly_reloc = TRUE;
+    dirscore->readonly_reloc = true;
 
   if (indscore->no_fn_stub)
-    dirscore->no_fn_stub = TRUE;
+    dirscore->no_fn_stub = true;
 }
 
 /* Remove information about discarded functions from other sections which mention them.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_discard_info (bfd *abfd,
 			       struct elf_reloc_cookie *cookie,
 			       struct bfd_link_info *info)
 {
   asection *o;
-  bfd_boolean ret = FALSE;
+  bool ret = false;
   unsigned char *tdata;
   size_t i, skip;
 
   o = bfd_get_section_by_name (abfd, ".pdr");
   if ((!o) || (o->size == 0) || (o->size % PDR_SIZE != 0)
       || (o->output_section != NULL && bfd_is_abs_section (o->output_section)))
-    return FALSE;
+    return false;
 
   tdata = bfd_zmalloc (o->size / PDR_SIZE);
   if (!tdata)
-    return FALSE;
+    return false;
 
   cookie->rels = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, info->keep_memory);
   if (!cookie->rels)
     {
       free (tdata);
-      return FALSE;
+      return false;
     }
 
   cookie->rel = cookie->rels;
@@ -3665,7 +3655,7 @@ s7_bfd_score_elf_discard_info (bfd *abfd
     {
       score_elf_section_data (o)->u.tdata = tdata;
       o->size -= skip * PDR_SIZE;
-      ret = TRUE;
+      ret = true;
     }
   else
     free (tdata);
@@ -3678,12 +3668,12 @@ s7_bfd_score_elf_discard_info (bfd *abfd
 
 /* Signal that discard_info() has removed the discarded relocations for this section.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_ignore_discarded_relocs (asection *sec)
 {
   if (strcmp (sec->name, ".pdr") == 0)
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -3709,7 +3699,7 @@ s7_bfd_score_elf_gc_mark_hook (asection
 
 /* Support for core dump NOTE sections.  */
 
-bfd_boolean
+bool
 s7_bfd_score_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -3718,7 +3708,7 @@ s7_bfd_score_elf_grok_prstatus (bfd *abf
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
     case 272:		       /* Linux/Score elf_prstatus */
 
       /* pr_cursig */
@@ -3741,13 +3731,13 @@ s7_bfd_score_elf_grok_prstatus (bfd *abf
 					  note->descpos + offset);
 }
 
-bfd_boolean
+bool
 s7_bfd_score_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 128:		       /* Linux/Score elf_prpsinfo.  */
       /* pr_fname */
@@ -3772,7 +3762,7 @@ s7_bfd_score_elf_grok_psinfo (bfd *abfd,
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -3790,7 +3780,7 @@ s7_elf32_score_reloc_type_lookup (bfd *a
   return NULL;
 }
 
-bfd_boolean
+bool
 s7_elf32_score_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -3812,10 +3802,10 @@ s7_elf32_score_print_private_bfd_data (b
     }
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 s7_elf32_score_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -3823,21 +3813,25 @@ s7_elf32_score_merge_private_bfd_data (b
   flagword out_flags;
 
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    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;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   in_flags = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
   if (! elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -3846,7 +3840,7 @@ s7_elf32_score_merge_private_bfd_data (b
 	  return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd));
 	}
 
-      return TRUE;
+      return true;
     }
 
   if (((in_flags & EF_SCORE_PIC) != 0) != ((out_flags & EF_SCORE_PIC) != 0))
@@ -3855,18 +3849,17 @@ s7_elf32_score_merge_private_bfd_data (b
     }
 
   /* Maybe dependency fix compatibility should be checked here.  */
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 s7_elf32_score_new_section_hook (bfd *abfd, asection *sec)
 {
   struct _score_elf_section_data *sdata;
-  bfd_size_type amt = sizeof (*sdata);
 
-  sdata = bfd_zalloc (abfd, amt);
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
   if (sdata == NULL)
-    return FALSE;
+    return false;
   sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, 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.20200303/bfd/elf32-score.c ./bfd/elf32-score.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-score.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-score.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for S+core.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 Free Software Foundation, Inc.
    Contributed by
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -47,22 +47,22 @@ struct score_elf_link_hash_entry
   unsigned int possibly_dynamic_relocs;
 
   /* If the R_SCORE_ABS32, R_SCORE_REL32 reloc is against a readonly section.  */
-  bfd_boolean readonly_reloc;
+  bool readonly_reloc;
 
   /* We must not create a stub for a symbol that has relocations related to
      taking the function's address, i.e. any but R_SCORE_CALL15 ones.  */
-  bfd_boolean no_fn_stub;
+  bool no_fn_stub;
 
   /* Are we forced local?  This will only be set if we have converted
      the initial global GOT entry to a local GOT entry.  */
-  bfd_boolean forced_local;
+  bool forced_local;
 };
 
 /* Traverse a score ELF linker hash table.  */
 #define score_elf_link_hash_traverse(table, func, info) \
-  (elf_link_hash_traverse \
-   ((table),							     \
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \
+  (elf_link_hash_traverse					\
+   ((table),							\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),	\
     (info)))
 
 /* This structure is used to hold .got entries while estimating got sizes.  */
@@ -201,8 +201,11 @@ static bfd *reldyn_sorting_bfd;
    faster assembler code.  This is what we use for the small common
    section.  This approach is copied from ecoff.c.  */
 static asection score_elf_scom_section;
-static asymbol  score_elf_scom_symbol;
-static asymbol  *score_elf_scom_symbol_ptr;
+static const asymbol score_elf_scom_symbol =
+  GLOBAL_SYM_INIT (".scommon", &score_elf_scom_section);
+static asection score_elf_scom_section =
+  BFD_FAKE_SECTION (score_elf_scom_section, &score_elf_scom_symbol,
+		    ".scommon", 0, SEC_IS_COMMON | SEC_SMALL_DATA);
 
 static bfd_vma
 score_bfd_get_16 (bfd *abfd, const void *data)
@@ -227,14 +230,14 @@ static bfd_vma
 score3_bfd_getl48 (const void *p)
 {
   const bfd_byte *addr = p;
-  bfd_uint64_t v;
+  uint64_t v;
 
-  v = (bfd_uint64_t) addr[4];
-  v |= (bfd_uint64_t) addr[5] << 8;
-  v |= (bfd_uint64_t) addr[2] << 16;
-  v |= (bfd_uint64_t) addr[3] << 24;
-  v |= (bfd_uint64_t) addr[0] << 32;
-  v |= (bfd_uint64_t) addr[1] << 40;
+  v = (uint64_t) addr[4];
+  v |= (uint64_t) addr[5] << 8;
+  v |= (uint64_t) addr[2] << 16;
+  v |= (uint64_t) addr[3] << 24;
+  v |= (uint64_t) addr[0] << 32;
+  v |= (uint64_t) addr[1] << 40;
   return v;
 }
 
@@ -348,7 +351,7 @@ score_elf_lo16_reloc (bfd *abfd,
 /* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
    dangerous relocation.  */
 
-static bfd_boolean
+static bool
 score_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp)
 {
   unsigned int count;
@@ -358,7 +361,7 @@ score_elf_assign_gp (bfd *output_bfd, bf
   /* If we've already figured out what GP will be, just return it.  */
   *pgp = _bfd_get_gp_value (output_bfd);
   if (*pgp)
-    return TRUE;
+    return true;
 
   count = bfd_get_symcount (output_bfd);
   sym = bfd_get_outsymbols (output_bfd);
@@ -388,10 +391,10 @@ score_elf_assign_gp (bfd *output_bfd, bf
       /* Only get the error once.  */
       *pgp = 4;
       _bfd_set_gp_value (output_bfd, *pgp);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We have to figure out the gp value, so that we can adjust the
@@ -402,7 +405,7 @@ score_elf_assign_gp (bfd *output_bfd, bf
 static bfd_reloc_status_type
 score_elf_final_gp (bfd *output_bfd,
 		    asymbol *symbol,
-		    bfd_boolean relocatable,
+		    bool relocatable,
 		     char **error_message,
 		    bfd_vma *pgp)
 {
@@ -437,23 +440,14 @@ score_elf_final_gp (bfd *output_bfd,
 
 static bfd_reloc_status_type
 score_elf_gprel15_with_gp (bfd *abfd,
-			   asymbol *symbol,
 			   arelent *reloc_entry,
 			   asection *input_section,
-			   bfd_boolean relocateable,
+			   bool relocateable,
 			   void * data,
 			   bfd_vma gp ATTRIBUTE_UNUSED)
 {
-  bfd_vma relocation;
   unsigned long insn;
 
-  if (bfd_is_com_section (symbol->section))
-    relocation = 0;
-  else
-    relocation = symbol->value;
-
-  relocation += symbol->section->output_section->vma;
-  relocation += symbol->section->output_offset;
   if (reloc_entry->address > input_section->size)
     return bfd_reloc_outofrange;
 
@@ -472,7 +466,7 @@ score_elf_gprel15_with_gp (bfd *abfd,
 
 static bfd_reloc_status_type
 gprel32_with_gp (bfd *abfd, asymbol *symbol, arelent *reloc_entry,
-		 asection *input_section, bfd_boolean relocatable,
+		 asection *input_section, bool relocatable,
 		 void *data, bfd_vma gp)
 {
   bfd_vma relocation;
@@ -522,7 +516,7 @@ score_elf_gprel15_reloc (bfd *abfd,
 			 bfd *output_bfd,
 			 char **error_message)
 {
-  bfd_boolean relocateable;
+  bool relocateable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -533,10 +527,10 @@ score_elf_gprel15_reloc (bfd *abfd,
       return bfd_reloc_ok;
     }
   if (output_bfd != NULL)
-    relocateable = TRUE;
+    relocateable = true;
   else
     {
-      relocateable = FALSE;
+      relocateable = false;
       output_bfd = symbol->section->output_section->owner;
     }
 
@@ -544,8 +538,8 @@ score_elf_gprel15_reloc (bfd *abfd,
   if (ret != bfd_reloc_ok)
     return ret;
 
-  return score_elf_gprel15_with_gp (abfd, symbol, reloc_entry,
-					 input_section, relocateable, data, gp);
+  return score_elf_gprel15_with_gp (abfd, reloc_entry,
+				    input_section, relocateable, data, gp);
 }
 
 /* Do a R_SCORE_GPREL32 relocation.  This is a 32 bit value which must
@@ -556,7 +550,7 @@ score_elf_gprel32_reloc (bfd *abfd, arel
 			void *data, asection *input_section, bfd *output_bfd,
 			char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -571,10 +565,10 @@ score_elf_gprel32_reloc (bfd *abfd, arel
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
+      relocatable = false;
       output_bfd = symbol->section->output_section->owner;
     }
 
@@ -645,332 +639,332 @@ static reloc_howto_type elf32_score_howt
   /* No relocation.  */
   HOWTO (R_SCORE_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_HI16 */
   HOWTO (R_SCORE_HI16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_hi16_reloc,	/* special_function */
 	 "R_SCORE_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x37fff,		/* src_mask */
 	 0x37fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_LO16 */
   HOWTO (R_SCORE_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_lo16_reloc,	/* special_function */
 	 "R_SCORE_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x37fff,		/* src_mask */
 	 0x37fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /*  R_SCORE_BCMP */
   HOWTO (R_SCORE_BCMP,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_BCMP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x03e00381,		/* src_mask */
 	 0x03e00381,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /*R_SCORE_24 */
   HOWTO (R_SCORE_24,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_24",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3ff7fff,		/* src_mask */
 	 0x3ff7fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /*R_SCORE_PC19 */
   HOWTO (R_SCORE_PC19,		/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_PC19",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3ff03fe,		/* src_mask */
 	 0x3ff03fe,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /*R_SCORE16_11 */
   HOWTO (R_SCORE16_11,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE16_11",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000000ffe,		/* src_mask */
 	 0x000000ffe,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE16_PC8 */
   HOWTO (R_SCORE16_PC8,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 9,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE16_PC8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x000001ff,		/* src_mask */
 	 0x000001ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit absolute */
   HOWTO (R_SCORE_ABS32,		/* type	 8 */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_ABS32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit absolute */
   HOWTO (R_SCORE_ABS16,		/* type 11 */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_ABS16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_DUMMY2 */
   HOWTO (R_SCORE_DUMMY2,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_DUMMY2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x00007fff,		/* src_mask */
 	 0x00007fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_GP15 */
   HOWTO (R_SCORE_GP15,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_gprel15_reloc,/* special_function */
 	 "R_SCORE_GP15",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x00007fff,		/* src_mask */
 	 0x00007fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_SCORE_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_SCORE_GNU_VTINHERIT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_SCORE_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_SCORE_GNU_VTENTRY", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_SCORE_GOT15,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 score_elf_got15_reloc, /* special_function */
 	 "R_SCORE_GOT15",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x00007fff,		/* src_mask */
 	 0x00007fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_SCORE_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_got_lo16_reloc, /* special_function */
 	 "R_SCORE_GOT_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x37ffe,		/* src_mask */
 	 0x37ffe,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 15 bit call through global offset table.  */
   HOWTO (R_SCORE_CALL15,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_CALL15",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit GP relative reference.  */
   HOWTO (R_SCORE_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_gprel32_reloc, /* special_function */
 	 "R_SCORE_GPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit symbol relative relocation.  */
   HOWTO (R_SCORE_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_REL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_DUMMY_HI16 */
   HOWTO (R_SCORE_DUMMY_HI16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 score_elf_hi16_reloc,	/* special_function */
 	 "R_SCORE_DUMMY_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x37fff,		/* src_mask */
 	 0x37fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_IMM30 */
   HOWTO (R_SCORE_IMM30,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 30,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_IMM30",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x7f7fff7f80LL,	/* src_mask */
 	 0x7f7fff7f80LL,	/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_SCORE_IMM32 */
   HOWTO (R_SCORE_IMM32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 5,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_SCORE_IMM32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x7f7fff7fe0LL,	/* src_mask */
 	 0x7f7fff7fe0LL,	/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 struct score_reloc_map
@@ -1032,14 +1026,14 @@ score_elf_got_entry_eq (const void *entr
 /* If H needs a GOT entry, assign it the highest available dynamic
    index.  Otherwise, assign it the lowest available dynamic
    index.  */
-static bfd_boolean
+static bool
 score_elf_sort_hash_table_f (struct score_elf_link_hash_entry *h, void *data)
 {
   struct score_elf_hash_sort_data *hsd = data;
 
   /* Symbols without dynamic symbol table entries aren't interesting at all.  */
   if (h->root.dynindx == -1)
-    return TRUE;
+    return true;
 
   /* Global symbols that need GOT entries that are not explicitly
      referenced are marked with got offset 2.  Those that are
@@ -1059,11 +1053,11 @@ score_elf_sort_hash_table_f (struct scor
       hsd->low = (struct elf_link_hash_entry *) h;
     }
 
-  return TRUE;
+  return true;
 }
 
 static asection *
-score_elf_got_section (bfd *abfd, bfd_boolean maybe_excluded)
+score_elf_got_section (bfd *abfd, bool maybe_excluded)
 {
   asection *sgot = bfd_get_linker_section (abfd, ".got");
 
@@ -1080,7 +1074,7 @@ score_elf_got_info (bfd *abfd, asection
   asection *sgot;
   struct score_got_info *g;
 
-  sgot = score_elf_got_section (abfd, TRUE);
+  sgot = score_elf_got_section (abfd, true);
   BFD_ASSERT (sgot != NULL);
   BFD_ASSERT (elf_section_data (sgot) != NULL);
   g = score_elf_section_data (sgot)->u.got_info;
@@ -1095,9 +1089,9 @@ score_elf_got_info (bfd *abfd, asection
    appear towards the end.  This reduces the amount of GOT space
    required.  MAX_LOCAL is used to set the number of local symbols
    known to be in the dynamic symbol table.  During
-   s3_bfd_score_elf_size_dynamic_sections, this value is 1.  Afterward, the
+   s3_bfd_score_elf_late_size_sections, this value is 1.  Afterward, the
    section symbols are added and the count is higher.  */
-static bfd_boolean
+static bool
 score_elf_sort_hash_table (struct bfd_link_info *info,
 			   unsigned long max_local)
 {
@@ -1135,7 +1129,7 @@ score_elf_sort_hash_table (struct bfd_li
      table index in the GOT.  */
   g->global_gotsym = hsd.low;
 
-  return TRUE;
+  return true;
 }
 
 /* Create an entry in an score ELF linker hash table.  */
@@ -1160,9 +1154,9 @@ score_elf_link_hash_newfunc (struct bfd_
   if (ret != NULL)
     {
       ret->possibly_dynamic_relocs = 0;
-      ret->readonly_reloc = FALSE;
-      ret->no_fn_stub = FALSE;
-      ret->forced_local = FALSE;
+      ret->readonly_reloc = false;
+      ret->no_fn_stub = false;
+      ret->forced_local = false;
     }
 
   return (struct bfd_hash_entry *) ret;
@@ -1203,11 +1197,11 @@ score_elf_sort_dynamic_relocs (const voi
 }
 
 /* Return whether a relocation is against a local symbol.  */
-static bfd_boolean
+static bool
 score_elf_local_relocation_p (bfd *input_bfd,
 			      const Elf_Internal_Rela *relocation,
 			      asection **local_sections,
-			      bfd_boolean check_forced)
+			      bool check_forced)
 {
   unsigned long r_symndx;
   Elf_Internal_Shdr *symtab_hdr;
@@ -1219,9 +1213,9 @@ score_elf_local_relocation_p (bfd *input
   extsymoff = (elf_bad_symtab (input_bfd)) ? 0 : symtab_hdr->sh_info;
 
   if (r_symndx < extsymoff)
-    return TRUE;
+    return true;
   if (elf_bad_symtab (input_bfd) && local_sections[r_symndx] != NULL)
-    return TRUE;
+    return true;
 
   if (check_forced)
     {
@@ -1233,15 +1227,15 @@ score_elf_local_relocation_p (bfd *input
 	     || h->root.root.type == bfd_link_hash_warning)
 	h = (struct score_elf_link_hash_entry *) h->root.root.u.i.link;
       if (h->root.forced_local)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Returns the dynamic relocation section for DYNOBJ.  */
 static asection *
-score_elf_rel_dyn_section (bfd *dynobj, bfd_boolean create_p)
+score_elf_rel_dyn_section (bfd *dynobj, bool create_p)
 {
   static const char dname[] = ".rel.dyn";
   asection *sreloc;
@@ -1269,7 +1263,7 @@ score_elf_allocate_dynamic_relocations (
 {
   asection *s;
 
-  s = score_elf_rel_dyn_section (abfd, FALSE);
+  s = score_elf_rel_dyn_section (abfd, false);
   BFD_ASSERT (s != NULL);
 
   if (s->size == 0)
@@ -1285,7 +1279,7 @@ score_elf_allocate_dynamic_relocations (
    is the original relocation, which is now being transformed into a
    dynamic relocation.  The ADDENDP is adjusted if necessary; the
    caller should store the result in place of the original addend.  */
-static bfd_boolean
+static bool
 score_elf_create_dynamic_relocation (bfd *output_bfd,
 				     struct bfd_link_info *info,
 				     const Elf_Internal_Rela *rel,
@@ -1293,38 +1287,34 @@ score_elf_create_dynamic_relocation (bfd
 				     bfd_vma symbol,
 				     bfd_vma *addendp, asection *input_section)
 {
-  Elf_Internal_Rela outrel[3];
+  Elf_Internal_Rela outrel;
   asection *sreloc;
   bfd *dynobj;
   int r_type;
   long indx;
-  bfd_boolean defined_p;
+  bool defined_p;
 
   r_type = ELF32_R_TYPE (rel->r_info);
   dynobj = elf_hash_table (info)->dynobj;
-  sreloc = score_elf_rel_dyn_section (dynobj, FALSE);
+  sreloc = score_elf_rel_dyn_section (dynobj, false);
   BFD_ASSERT (sreloc != NULL);
   BFD_ASSERT (sreloc->contents != NULL);
   BFD_ASSERT (sreloc->reloc_count * SCORE_ELF_REL_SIZE (output_bfd) < sreloc->size);
 
-  outrel[0].r_offset =
-    _bfd_elf_section_offset (output_bfd, info, input_section, rel[0].r_offset);
-  outrel[1].r_offset =
-    _bfd_elf_section_offset (output_bfd, info, input_section, rel[1].r_offset);
-  outrel[2].r_offset =
-    _bfd_elf_section_offset (output_bfd, info, input_section, rel[2].r_offset);
+  outrel.r_offset =
+    _bfd_elf_section_offset (output_bfd, info, input_section, rel->r_offset);
 
-  if (outrel[0].r_offset == MINUS_ONE)
+  if (outrel.r_offset == MINUS_ONE)
     /* The relocation field has been deleted.  */
-    return TRUE;
+    return true;
 
-  if (outrel[0].r_offset == MINUS_TWO)
+  if (outrel.r_offset == MINUS_TWO)
     {
       /* The relocation field has been converted into a relative value of
 	 some sort.  Functions like _bfd_elf_write_section_eh_frame expect
 	 the field to be fully relocated, so add in the symbol's value.  */
       *addendp += symbol;
-      return TRUE;
+      return true;
     }
 
   /* We must now calculate the dynamic symbol table index to use
@@ -1340,12 +1330,12 @@ score_elf_create_dynamic_relocation (bfd
 	   relocation field.  It therefore treats relocs against
 	   defined symbols in the same way as relocs against
 	   undefined symbols.  */
-      defined_p = FALSE;
+      defined_p = false;
     }
   else
     {
       indx = 0;
-      defined_p = TRUE;
+      defined_p = true;
     }
 
   /* If the relocation was previously an absolute relocation and
@@ -1357,7 +1347,7 @@ score_elf_create_dynamic_relocation (bfd
 
   /* The relocation is always an REL32 relocation because we don't
      know where the shared library will wind up at load-time.  */
-  outrel[0].r_info = ELF32_R_INFO ((unsigned long) indx, R_SCORE_REL32);
+  outrel.r_info = ELF32_R_INFO ((unsigned long) indx, R_SCORE_REL32);
 
   /* For strict adherence to the ABI specification, we should
      generate a R_SCORE_64 relocation record by itself before the
@@ -1371,24 +1361,18 @@ score_elf_create_dynamic_relocation (bfd
      invocation if ABI_64_P, and here we should generate an
      additional relocation record with R_SCORE_64 by itself for a
      NULL symbol before this relocation record.  */
-  outrel[1].r_info = ELF32_R_INFO (0, R_SCORE_NONE);
-  outrel[2].r_info = ELF32_R_INFO (0, R_SCORE_NONE);
 
   /* Adjust the output offset of the relocation to reference the
      correct location in the output file.  */
-  outrel[0].r_offset += (input_section->output_section->vma
-			 + input_section->output_offset);
-  outrel[1].r_offset += (input_section->output_section->vma
-			 + input_section->output_offset);
-  outrel[2].r_offset += (input_section->output_section->vma
-			 + input_section->output_offset);
+  outrel.r_offset += (input_section->output_section->vma
+		      + input_section->output_offset);
 
   /* Put the relocation back out.  We have to use the special
      relocation outputter in the 64-bit case since the 64-bit
      relocation format is non-standard.  */
   bfd_elf32_swap_reloc_out
-      (output_bfd, &outrel[0],
-       (sreloc->contents + sreloc->reloc_count * sizeof (Elf32_External_Rel)));
+    (output_bfd, &outrel,
+     sreloc->contents + sreloc->reloc_count * sizeof (Elf32_External_Rel));
 
   /* We've now added another relocation.  */
   ++sreloc->reloc_count;
@@ -1397,28 +1381,28 @@ score_elf_create_dynamic_relocation (bfd
      will be writing to it.  */
   elf_section_data (input_section->output_section)->this_hdr.sh_flags |= SHF_WRITE;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 score_elf_create_got_section (bfd *abfd,
 			      struct bfd_link_info *info,
-			      bfd_boolean maybe_exclude)
+			      bool maybe_exclude)
 {
   flagword flags;
   asection *s;
   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);
+  s = score_elf_got_section (abfd, true);
   if (s)
     {
       if (! maybe_exclude)
 	s->flags &= ~SEC_EXCLUDE;
-      return TRUE;
+      return true;
     }
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED);
@@ -1432,7 +1416,7 @@ score_elf_create_got_section (bfd *abfd,
   elf_hash_table (info)->sgot = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, 4))
-    return FALSE;
+    return false;
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_.  We don't do this in the
      linker script because we don't want to define the symbol if we
@@ -1440,8 +1424,8 @@ score_elf_create_got_section (bfd *abfd,
   bh = NULL;
   if (! (_bfd_generic_link_add_one_symbol
 	 (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s,
-	  0, NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh)))
-    return FALSE;
+	  0, NULL, false, get_elf_backend_data (abfd)->collect, &bh)))
+    return false;
 
   h = (struct elf_link_hash_entry *) bh;
   h->non_elf = 0;
@@ -1450,12 +1434,12 @@ score_elf_create_got_section (bfd *abfd,
   elf_hash_table (info)->hgot = h;
 
   if (bfd_link_pic (info) && ! bfd_elf_link_record_dynamic_symbol (info, h))
-    return FALSE;
+    return false;
 
   amt = sizeof (struct score_got_info);
   g = bfd_alloc (abfd, amt);
   if (g == NULL)
-    return FALSE;
+    return false;
 
   g->global_gotsym = NULL;
   g->global_gotno = 0;
@@ -1467,11 +1451,11 @@ score_elf_create_got_section (bfd *abfd,
   g->got_entries = htab_try_create (1, score_elf_got_entry_hash,
 				    score_elf_got_entry_eq, NULL);
   if (g->got_entries == NULL)
-    return FALSE;
+    return false;
   score_elf_section_data (s)->u.got_info = g;
   score_elf_section_data (s)->elf.this_hdr.sh_flags |= SHF_ALLOC | SHF_WRITE | SHF_SCORE_GPREL;
 
-  return TRUE;
+  return true;
 }
 
 /* Calculate the %high function.  */
@@ -1532,7 +1516,7 @@ score_elf_create_local_got_entry (bfd *a
    for value.  Return the index into the GOT for this entry.  */
 static bfd_vma
 score_elf_got16_entry (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
-		       bfd_vma value, bfd_boolean external)
+		       bfd_vma value, bool external)
 {
   asection *sgot;
   struct score_got_info *g;
@@ -1560,7 +1544,7 @@ score_elf_got16_entry (bfd *abfd, bfd *i
 static void
 s3_bfd_score_elf_hide_symbol (struct bfd_link_info *info,
 			      struct elf_link_hash_entry *entry,
-			      bfd_boolean force_local)
+			      bool force_local)
 {
   bfd *dynobj;
   asection *got;
@@ -1570,12 +1554,12 @@ s3_bfd_score_elf_hide_symbol (struct bfd
   h = (struct score_elf_link_hash_entry *) entry;
   if (h->forced_local)
     return;
-  h->forced_local = TRUE;
+  h->forced_local = true;
 
   dynobj = elf_hash_table (info)->dynobj;
   if (dynobj != NULL && force_local)
     {
-      got = score_elf_got_section (dynobj, FALSE);
+      got = score_elf_got_section (dynobj, false);
       if (got == NULL)
 	return;
       g = score_elf_section_data (got)->u.got_info;
@@ -1634,7 +1618,7 @@ s3_bfd_score_elf_hide_symbol (struct bfd
 /* If H is a symbol that needs a global GOT entry, but has a dynamic
    symbol table index lower than any we've seen to date, record it for
    posterity.  */
-static bfd_boolean
+static bool
 score_elf_record_global_got_symbol (struct elf_link_hash_entry *h,
 				    bfd *abfd,
 				    struct bfd_link_info *info,
@@ -1649,11 +1633,11 @@ score_elf_record_global_got_symbol (stru
 	{
 	case STV_INTERNAL:
 	case STV_HIDDEN:
-	  s3_bfd_score_elf_hide_symbol (info, h, TRUE);
+	  s3_bfd_score_elf_hide_symbol (info, h, true);
 	  break;
 	}
       if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   entry.abfd = abfd;
@@ -1665,30 +1649,30 @@ score_elf_record_global_got_symbol (stru
   /* If we've already marked this entry as needing GOT space, we don't
      need to do it again.  */
   if (*loc)
-    return TRUE;
+    return true;
 
   *loc = bfd_alloc (abfd, sizeof entry);
   if (! *loc)
-    return FALSE;
+    return false;
 
   entry.gotidx = -1;
 
   memcpy (*loc, &entry, sizeof (entry));
 
   if (h->got.offset != MINUS_ONE)
-    return TRUE;
+    return true;
 
   /* By setting this to a value other than -1, we are indicating that
      there needs to be a GOT entry for H.  Avoid using zero, as the
      generic ELF copy_indirect_symbol tests for <= 0.  */
   h->got.offset = 1;
 
-  return TRUE;
+  return true;
 }
 
 /* Reserve space in G for a GOT entry containing the value of symbol
    SYMNDX in input bfd ABDF, plus ADDEND.  */
-static bfd_boolean
+static bool
 score_elf_record_local_got_symbol (bfd *abfd,
 				   long symndx,
 				   bfd_vma addend,
@@ -1702,17 +1686,17 @@ score_elf_record_local_got_symbol (bfd *
   loc = (struct score_got_entry **)htab_find_slot (g->got_entries, &entry, INSERT);
 
   if (*loc)
-    return TRUE;
+    return true;
 
   entry.gotidx = g->local_gotno++;
 
   *loc = bfd_alloc (abfd, sizeof(entry));
   if (! *loc)
-    return FALSE;
+    return false;
 
   memcpy (*loc, &entry, sizeof (entry));
 
-  return TRUE;
+  return true;
 }
 
 /* Returns the GOT offset at which the indicated address can be found.
@@ -1974,7 +1958,7 @@ score_elf_final_link_relocate (reloc_how
 			       int sym_flags ATTRIBUTE_UNUSED,
 			       struct score_elf_link_hash_entry *h,
 			       asection **local_sections,
-			       bfd_boolean gp_disp_p)
+			       bool gp_disp_p)
 {
   unsigned long r_type;
   unsigned long r_symndx;
@@ -1989,7 +1973,7 @@ score_elf_final_link_relocate (reloc_how
      symbol, adjusted by the addend, resides during execution.  */
   bfd_vma g = MINUS_ONE;
   /* TRUE if the symbol referred to by this relocation is a local symbol.  */
-  bfd_boolean local_p;
+  bool local_p;
   /* The eventual value we will relocate.  */
   bfd_vma value = symbol;
   unsigned long hi16_addend, hi16_offset, hi16_value, uvalue, offset, abs_value = 0;
@@ -2028,7 +2012,7 @@ score_elf_final_link_relocate (reloc_how
   r_symndx = ELF32_R_SYM (rel->r_info);
   r_type = ELF32_R_TYPE (rel->r_info);
   rel_addr = (input_section->output_section->vma + input_section->output_offset + rel->r_offset);
-  local_p = score_elf_local_relocation_p (input_bfd, rel, local_sections, TRUE);
+  local_p = score_elf_local_relocation_p (input_bfd, rel, local_sections, true);
 
   if (r_type == R_SCORE_GOT15)
     {
@@ -2075,7 +2059,7 @@ score_elf_final_link_relocate (reloc_how
 		 symbol is defined locally, or was forced to be local.
 		 We must initialize this entry in the GOT.  */
 	      bfd *tmpbfd = elf_hash_table (info)->dynobj;
-	      asection *sgot = score_elf_got_section (tmpbfd, FALSE);
+	      asection *sgot = score_elf_got_section (tmpbfd, false);
 	      score_bfd_put_32 (tmpbfd, value, sgot->contents + g);
 	    }
 	}
@@ -2319,12 +2303,12 @@ score_elf_final_link_relocate (reloc_how
     case R_SCORE_CALL15:
       if (local_p)
 	{
-	  bfd_boolean forced;
+	  bool forced;
 
 	  /* The special case is when the symbol is forced to be local.  We need the
 	     full address in the GOT since no R_SCORE_GOT_LO16 relocation follows.  */
 	  forced = ! score_elf_local_relocation_p (input_bfd, rel,
-						   local_sections, FALSE);
+						   local_sections, false);
 	  value = score_elf_got16_entry (output_bfd, input_bfd, info,
 					 symbol + addend, forced);
 	  if (value == MINUS_ONE)
@@ -2375,8 +2359,8 @@ score_elf_final_link_relocate (reloc_how
 }
 
 /* Score backend functions.  */
-static bfd_boolean
-s3_bfd_score_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
+static bool
+s3_bfd_score_info_to_howto (bfd *abfd,
 			    arelent *bfd_reloc,
 			    Elf_Internal_Rela *elf_reloc)
 {
@@ -2384,14 +2368,20 @@ s3_bfd_score_info_to_howto (bfd *abfd AT
 
   r_type = ELF32_R_TYPE (elf_reloc->r_info);
   if (r_type >= ARRAY_SIZE (elf32_score_howto_table))
-    return FALSE;
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+			  abfd, r_type);
+      bfd_set_error (bfd_error_bad_value);
+      return false;
+    }
 
   bfd_reloc->howto = &elf32_score_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* Relocate an score ELF section.  */
-static bfd_boolean
+static int
 s3_bfd_score_elf_relocate_section (bfd *output_bfd,
 				   struct bfd_link_info *info,
 				   bfd *input_bfd,
@@ -2408,7 +2398,7 @@ s3_bfd_score_elf_relocate_section (bfd *
   unsigned long offset;
   unsigned long hi16_addend, hi16_offset, hi16_value, uvalue;
   size_t extsymoff;
-  bfd_boolean gp_disp_p = FALSE;
+  bool gp_disp_p = false;
 
   /* Sort dynsym.  */
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -2427,7 +2417,7 @@ s3_bfd_score_elf_relocate_section (bfd *
 	}
 
       if (!score_elf_sort_hash_table (info, dynsecsymcount + 1))
-	return FALSE;
+	return false;
     }
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
@@ -2629,7 +2619,7 @@ s3_bfd_score_elf_relocate_section (bfd *
 	      if (r_type != R_SCORE_HI16 && r_type != R_SCORE_LO16)
 		return bfd_reloc_notsupported;
 
-	      gp_disp_p = TRUE;
+	      gp_disp_p = true;
 	    }
 
 	  /* If this symbol is defined, calculate its address.  Note that
@@ -2669,18 +2659,20 @@ 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))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_SCORE_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -2726,7 +2718,7 @@ s3_bfd_score_elf_relocate_section (bfd *
 	      break;
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -2758,12 +2750,12 @@ s3_bfd_score_elf_relocate_section (bfd *
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase, and
    allocate space in the global offset table.  */
-static bfd_boolean
+static bool
 s3_bfd_score_elf_check_relocs (bfd *abfd,
 			       struct bfd_link_info *info,
 			       asection *sec,
@@ -2780,7 +2772,7 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
   asection *sreloc;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -2794,7 +2786,7 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
     }
   else
     {
-      sgot = score_elf_got_section (dynobj, FALSE);
+      sgot = score_elf_got_section (dynobj, false);
       if (sgot == NULL)
 	g = NULL;
       else
@@ -2826,7 +2818,7 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 	    /* xgettext:c-format */
 	    (_("%pB: malformed reloc detected for section %pA"), abfd, sec);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       else
 	{
@@ -2849,8 +2841,8 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 	    case R_SCORE_CALL15:
 	      if (dynobj == NULL)
 		elf_hash_table (info)->dynobj = dynobj = abfd;
-	      if (!score_elf_create_got_section (dynobj, info, FALSE))
-		return FALSE;
+	      if (!score_elf_create_got_section (dynobj, info, false))
+		return false;
 	      g = score_elf_got_info (dynobj, &sgot);
 	      break;
 	    case R_SCORE_ABS32:
@@ -2868,7 +2860,7 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
       if (!h && (r_type == R_SCORE_GOT_LO16))
 	{
 	  if (! score_elf_record_local_got_symbol (abfd, r_symndx, rel->r_addend, g))
-	    return FALSE;
+	    return false;
 	}
 
       switch (r_type)
@@ -2881,13 +2873,13 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 		(_("%pB: CALL15 reloc at %#" PRIx64 " not against global symbol"),
 		 abfd, (uint64_t) rel->r_offset);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  else
 	    {
 	      /* This symbol requires a global offset table entry.  */
 	      if (! score_elf_record_global_got_symbol (h, abfd, info, g))
-		return FALSE;
+		return false;
 
 	      /* We need a stub, not a plt entry for the undefined function.  But we record
 		 it as if it needs plt.  See _bfd_elf_adjust_dynamic_symbol.  */
@@ -2897,7 +2889,7 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 	  break;
 	case R_SCORE_GOT15:
 	  if (h && ! score_elf_record_global_got_symbol (h, abfd, info, g))
-	    return FALSE;
+	    return false;
 	  break;
 	case R_SCORE_ABS32:
 	case R_SCORE_REL32:
@@ -2906,9 +2898,9 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 	    {
 	      if (sreloc == NULL)
 		{
-		  sreloc = score_elf_rel_dyn_section (dynobj, TRUE);
+		  sreloc = score_elf_rel_dyn_section (dynobj, true);
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 #define SCORE_READONLY_SECTION (SEC_ALLOC | SEC_LOAD | SEC_READONLY)
 	      if (bfd_link_pic (info))
@@ -2935,7 +2927,7 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 		      == SCORE_READONLY_SECTION)
 		    /* We need it to tell the dynamic linker if there
 		       are relocations against the text segment.  */
-		    hscore->readonly_reloc = TRUE;
+		    hscore->readonly_reloc = true;
 		}
 
 	      /* Even though we don't directly need a GOT entry for this symbol,
@@ -2945,11 +2937,11 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 		{
 		  if (dynobj == NULL)
 		    elf_hash_table (info)->dynobj = dynobj = abfd;
-		  if (! score_elf_create_got_section (dynobj, info, TRUE))
-		    return FALSE;
+		  if (! score_elf_create_got_section (dynobj, info, true))
+		    return false;
 		  g = score_elf_got_info (dynobj, &sgot);
 		  if (! score_elf_record_global_got_symbol (h, abfd, info, g))
-		    return FALSE;
+		    return false;
 		}
 	    }
 	  break;
@@ -2958,14 +2950,14 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 	     Reconstruct it for later use during GC.  */
 	case R_SCORE_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_SCORE_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 	default:
 	  break;
@@ -2981,7 +2973,7 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 	      struct score_elf_link_hash_entry *sh;
 
 	      sh = (struct score_elf_link_hash_entry *) h;
-	      sh->no_fn_stub = TRUE;
+	      sh->no_fn_stub = true;
 	    }
 	  break;
 	case R_SCORE_CALL15:
@@ -2989,10 +2981,10 @@ s3_bfd_score_elf_check_relocs (bfd *abfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 s3_bfd_score_elf_add_symbol_hook (bfd *abfd,
 				  struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  Elf_Internal_Sym *sym,
@@ -3009,12 +3001,12 @@ 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;
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -3030,19 +3022,6 @@ s3_bfd_score_elf_symbol_processing (bfd
 	break;
       /* Fall through.  */
     case SHN_SCORE_SCOMMON:
-      if (score_elf_scom_section.name == NULL)
-	{
-	  /* Initialize the small common section.  */
-	  score_elf_scom_section.name = ".scommon";
-	  score_elf_scom_section.flags = SEC_IS_COMMON;
-	  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;
-	  score_elf_scom_symbol.name = ".scommon";
-	  score_elf_scom_symbol.flags = BSF_SECTION_SYM;
-	  score_elf_scom_symbol.section = &score_elf_scom_section;
-	  score_elf_scom_symbol_ptr = &score_elf_scom_symbol;
-	}
       asym->section = &score_elf_scom_section;
       asym->value = elfsym->internal_elf_sym.st_size;
       break;
@@ -3065,7 +3044,7 @@ s3_bfd_score_elf_link_output_symbol_hook
   return 1;
 }
 
-static bfd_boolean
+static bool
 s3_bfd_score_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					   asection *sec,
 					   int *retval)
@@ -3073,17 +3052,17 @@ s3_bfd_score_elf_section_from_bfd_sectio
   if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_SCORE_SCOMMON;
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* 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
    change the definition to something the rest of the link can understand.  */
-static bfd_boolean
+static bool
 s3_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 					struct elf_link_hash_entry *h)
 {
@@ -3118,7 +3097,7 @@ s3_bfd_score_elf_adjust_dynamic_symbol (
   if (!hscore->no_fn_stub && h->needs_plt)
     {
       if (!elf_hash_table (info)->dynamic_sections_created)
-	return TRUE;
+	return true;
 
       /* If this symbol is not defined in a regular file, then set
 	 the symbol to the stub location.  This is required to make
@@ -3141,7 +3120,7 @@ s3_bfd_score_elf_adjust_dynamic_symbol (
 
 	  /* The last half word of the stub will be filled with the index
 	     of this symbol in .dynsym section.  */
-	  return TRUE;
+	  return true;
 	}
     }
   else if ((h->type == STT_FUNC) && !h->needs_plt)
@@ -3149,7 +3128,7 @@ s3_bfd_score_elf_adjust_dynamic_symbol (
       /* This will set the entry for this symbol in the GOT to 0, and
 	 the dynamic linker will take care of this.  */
       h->root.u.def.value = 0;
-      return TRUE;
+      return true;
     }
 
   /* If this is a weak symbol, and there is a real definition, the
@@ -3161,19 +3140,19 @@ s3_bfd_score_elf_adjust_dynamic_symbol (
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
      is not a function.  */
-  return TRUE;
+  return true;
 }
 
 /* This function is called after all the input files have been read,
    and the input sections have been assigned to output sections.  */
-static bfd_boolean
-s3_bfd_score_elf_always_size_sections (bfd *output_bfd,
-				       struct bfd_link_info *info)
+static bool
+s3_bfd_score_elf_early_size_sections (bfd *output_bfd,
+				      struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
@@ -3186,11 +3165,11 @@ s3_bfd_score_elf_always_size_sections (b
   dynobj = elf_hash_table (info)->dynobj;
   if (dynobj == NULL)
     /* Relocatable links don't have it.  */
-    return TRUE;
+    return true;
 
   g = score_elf_got_info (dynobj, &s);
   if (s == NULL)
-    return TRUE;
+    return true;
 
   /* Calculate the total loadable size of the output.  That will give us the
      maximum number of GOT_PAGE entries required.  */
@@ -3215,7 +3194,7 @@ s3_bfd_score_elf_always_size_sections (b
      that need GOT entries at the end of the symbol table.  We
      do that here.  */
   if (! score_elf_sort_hash_table (info, 1))
-    return FALSE;
+    return false;
 
   if (g->global_gotsym != NULL)
     i = elf_hash_table (info)->dynsymcount - g->global_gotsym->dynindx;
@@ -3244,19 +3223,20 @@ s3_bfd_score_elf_always_size_sections (b
       /* Fixme. Error message or Warning message should be issued here.  */
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
-static bfd_boolean
-s3_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+s3_bfd_score_elf_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean reltext;
+  bool reltext;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -3267,13 +3247,14 @@ s3_bfd_score_elf_size_dynamic_sections (
 	  BFD_ASSERT (s != NULL);
 	  s->size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
 	  s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  reltext = FALSE;
+  reltext = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -3285,7 +3266,7 @@ s3_bfd_score_elf_size_dynamic_sections (
 	 of the dynobj section names depend upon the input files.  */
       name = bfd_section_name (s);
 
-      if (CONST_STRNEQ (name, ".rel"))
+      if (startswith (name, ".rel"))
 	{
 	  if (s->size == 0)
 	    {
@@ -3315,7 +3296,7 @@ s3_bfd_score_elf_size_dynamic_sections (
 	      if ((target != NULL
 		   && (target->flags & SEC_READONLY) != 0
 		   && (target->flags & SEC_ALLOC) != 0) || strcmp (outname, ".rel.dyn") == 0)
-		reltext = TRUE;
+		reltext = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -3323,9 +3304,9 @@ s3_bfd_score_elf_size_dynamic_sections (
 		s->reloc_count = 0;
 	    }
 	}
-      else if (CONST_STRNEQ (name, ".got"))
+      else if (startswith (name, ".got"))
 	{
-	  /* s3_bfd_score_elf_always_size_sections() has already done
+	  /* s3_bfd_score_elf_early_size_sections() has already done
 	     most of the work, but some symbols may have been mapped
 	     to versions that we must now resolve in the got_entries
 	     hash tables.  */
@@ -3336,7 +3317,7 @@ s3_bfd_score_elf_size_dynamic_sections (
 	     of .text section. So put a dummy. XXX  */
 	  s->size += SCORE_FUNCTION_STUB_SIZE;
 	}
-      else if (! CONST_STRNEQ (name, ".init"))
+      else if (! startswith (name, ".init"))
 	{
 	  /* It's not one of our sections, so don't allocate space.  */
 	  continue;
@@ -3347,8 +3328,9 @@ s3_bfd_score_elf_size_dynamic_sections (
       if (s->contents == NULL && s->size != 0)
 	{
 	  bfd_set_error (bfd_error_no_memory);
-	  return FALSE;
+	  return false;
 	}
+      s->alloced = 1;
     }
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -3360,7 +3342,7 @@ s3_bfd_score_elf_size_dynamic_sections (
 	 dynamic linker and used by the debugger.  */
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_DEBUG, 0))
-	return FALSE;
+	return false;
 
       if (reltext)
 	info->flags |= DF_TEXTREL;
@@ -3368,47 +3350,47 @@ s3_bfd_score_elf_size_dynamic_sections (
       if ((info->flags & DF_TEXTREL) != 0)
 	{
 	  if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_TEXTREL, 0))
-	    return FALSE;
+	    return false;
 	}
 
       if (! SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTGOT, 0))
-	return FALSE;
+	return false;
 
-      if (score_elf_rel_dyn_section (dynobj, FALSE))
+      if (score_elf_rel_dyn_section (dynobj, false))
 	{
 	  if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_REL, 0))
-	    return FALSE;
+	    return false;
 
 	  if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELSZ, 0))
-	    return FALSE;
+	    return false;
 
 	  if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELENT, 0))
-	    return FALSE;
+	    return false;
 	}
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_BASE_ADDRESS, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_LOCAL_GOTNO, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_SYMTABNO, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_UNREFEXTNO, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_GOTSYM, 0))
-	return FALSE;
+	return false;
 
       if (!SCORE_ELF_ADD_DYNAMIC_ENTRY (info, DT_SCORE_HIPAGENO, 0))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 s3_bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_entry *h;
@@ -3424,15 +3406,15 @@ s3_bfd_score_elf_create_dynamic_sections
   if (s != NULL)
     {
       if (!bfd_set_section_flags (s, flags))
-	return FALSE;
+	return false;
     }
 
   /* We need to create .got section.  */
-  if (!score_elf_create_got_section (abfd, info, FALSE))
-    return FALSE;
+  if (!score_elf_create_got_section (abfd, info, false))
+    return false;
 
-  if (!score_elf_rel_dyn_section (elf_hash_table (info)->dynobj, TRUE))
-    return FALSE;
+  if (!score_elf_rel_dyn_section (elf_hash_table (info)->dynobj, true))
+    return false;
 
   /* Create .stub section.  */
   if (bfd_get_linker_section (abfd, SCORE_ELF_STUB_SECTION_NAME) == NULL)
@@ -3442,7 +3424,7 @@ s3_bfd_score_elf_create_dynamic_sections
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
 
-	return FALSE;
+	return false;
     }
 
   if (!bfd_link_pic (info))
@@ -3453,8 +3435,8 @@ s3_bfd_score_elf_create_dynamic_sections
       bh = NULL;
       if (!(_bfd_generic_link_add_one_symbol
 	    (info, abfd, name, BSF_GLOBAL, bfd_abs_section_ptr,
-	     (bfd_vma) 0, NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	     (bfd_vma) 0, NULL, false, get_elf_backend_data (abfd)->collect, &bh)))
+	return false;
 
       h = (struct elf_link_hash_entry *)bh;
       h->non_elf = 0;
@@ -3462,16 +3444,16 @@ s3_bfd_score_elf_create_dynamic_sections
       h->type = STT_SECTION;
 
       if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
-static bfd_boolean
+static bool
 s3_bfd_score_elf_finish_dynamic_symbol (bfd *output_bfd,
 					struct bfd_link_info *info,
 					struct elf_link_hash_entry *h,
@@ -3497,7 +3479,13 @@ s3_bfd_score_elf_finish_dynamic_symbol (
 
       /* FIXME: Can h->dynindex be more than 64K?  */
       if (h->dynindx & 0xffff0000)
-	return FALSE;
+	{
+	  _bfd_error_handler
+	    (_("%pB: cannot handle more than %d dynamic symbols"),
+	     output_bfd, 0xffff);
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
 
       /* Fill the stub.  */
       score_bfd_put_32 (output_bfd, STUB_LW, stub);
@@ -3520,7 +3508,7 @@ s3_bfd_score_elf_finish_dynamic_symbol (
 
   BFD_ASSERT (h->dynindx != -1 || h->forced_local);
 
-  sgot = score_elf_got_section (dynobj, FALSE);
+  sgot = score_elf_got_section (dynobj, false);
   BFD_ASSERT (sgot != NULL);
   BFD_ASSERT (score_elf_section_data (sgot) != NULL);
   g = score_elf_section_data (sgot)->u.got_info;
@@ -3556,11 +3544,11 @@ s3_bfd_score_elf_finish_dynamic_symbol (
       sym->st_value = elf_gp (output_bfd);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
-static bfd_boolean
+static bool
 s3_bfd_score_elf_finish_dynamic_sections (bfd *output_bfd,
 					  struct bfd_link_info *info)
 {
@@ -3574,7 +3562,7 @@ s3_bfd_score_elf_finish_dynamic_sections
 
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
 
-  sgot = score_elf_got_section (dynobj, FALSE);
+  sgot = score_elf_got_section (dynobj, false);
   if (sgot == NULL)
     g = NULL;
   else
@@ -3598,13 +3586,13 @@ s3_bfd_score_elf_finish_dynamic_sections
 	  Elf_Internal_Dyn dyn;
 	  const char *name;
 	  size_t elemsize;
-	  bfd_boolean swap_out_p;
+	  bool swap_out_p;
 
 	  /* Read in the current dynamic entry.  */
 	  (*get_elf_backend_data (dynobj)->s->swap_dyn_in) (dynobj, b, &dyn);
 
 	  /* Assume that we're going to modify it and write it out.  */
-	  swap_out_p = TRUE;
+	  swap_out_p = true;
 
 	  switch (dyn.d_tag)
 	    {
@@ -3663,7 +3651,7 @@ s3_bfd_score_elf_finish_dynamic_sections
 	      break;
 
 	    default:
-	      swap_out_p = FALSE;
+	      swap_out_p = false;
 	      break;
 	    }
 
@@ -3687,7 +3675,7 @@ s3_bfd_score_elf_finish_dynamic_sections
 
 
   /* We need to sort the entries of the dynamic relocation section.  */
-  s = score_elf_rel_dyn_section (dynobj, FALSE);
+  s = score_elf_rel_dyn_section (dynobj, false);
 
   if (s != NULL && s->size > (bfd_vma)2 * SCORE_ELF_REL_SIZE (output_bfd))
     {
@@ -3696,12 +3684,12 @@ s3_bfd_score_elf_finish_dynamic_sections
 	     sizeof (Elf32_External_Rel), score_elf_sort_dynamic_relocs);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function set up the ELF section header for a BFD section in preparation for writing
    it out.  This is where the flags and type fields are set for unusual sections.  */
-static bfd_boolean
+static bool
 s3_bfd_score_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 				Elf_Internal_Shdr *hdr,
 				asection *sec)
@@ -3716,7 +3704,7 @@ s3_bfd_score_elf_fake_sections (bfd *abf
       || strcmp (name, ".sbss") == 0)
     hdr->sh_flags |= SHF_SCORE_GPREL;
 
-  return TRUE;
+  return true;
 }
 
 /* This function do additional processing on the ELF section header before writing
@@ -3726,7 +3714,7 @@ s3_bfd_score_elf_fake_sections (bfd *abf
    warning message will be issued.  backend_fake_section is called before
    assign_file_positions_except_relocs(); backend_section_processing after it.  so, we
    modify section flag there, but not backend_fake_section.  */
-static bfd_boolean
+static bool
 s3_bfd_score_elf_section_processing (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Shdr *hdr)
 {
   if (hdr->bfd_section != NULL)
@@ -3750,20 +3738,20 @@ s3_bfd_score_elf_section_processing (bfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 s3_bfd_score_elf_write_section (bfd *output_bfd, asection *sec, bfd_byte *contents)
 {
   bfd_byte *to, *from, *end;
   int i;
 
   if (strcmp (sec->name, ".pdr") != 0)
-    return FALSE;
+    return false;
 
   if (score_elf_section_data (sec)->u.tdata == NULL)
-    return FALSE;
+    return false;
 
   to = contents;
   end = contents + sec->size;
@@ -3780,7 +3768,7 @@ s3_bfd_score_elf_write_section (bfd *out
   bfd_set_section_contents (output_bfd, sec->output_section, contents,
 			    (file_ptr) sec->output_offset, sec->size);
 
-  return TRUE;
+  return true;
 }
 
 /* Copy data from a SCORE ELF indirect symbol to its direct symbol, hiding the old
@@ -3802,36 +3790,36 @@ s3_bfd_score_elf_copy_indirect_symbol (s
   dirscore->possibly_dynamic_relocs += indscore->possibly_dynamic_relocs;
 
   if (indscore->readonly_reloc)
-    dirscore->readonly_reloc = TRUE;
+    dirscore->readonly_reloc = true;
 
   if (indscore->no_fn_stub)
-    dirscore->no_fn_stub = TRUE;
+    dirscore->no_fn_stub = true;
 }
 
 /* Remove information about discarded functions from other sections which mention them.  */
-static bfd_boolean
+static bool
 s3_bfd_score_elf_discard_info (bfd *abfd, struct elf_reloc_cookie *cookie,
 			       struct bfd_link_info *info)
 {
   asection *o;
-  bfd_boolean ret = FALSE;
+  bool ret = false;
   unsigned char *tdata;
   size_t i, skip;
 
   o = bfd_get_section_by_name (abfd, ".pdr");
   if ((!o) || (o->size == 0) || (o->size % PDR_SIZE != 0)
       || (o->output_section != NULL && bfd_is_abs_section (o->output_section)))
-    return FALSE;
+    return false;
 
   tdata = bfd_zmalloc (o->size / PDR_SIZE);
   if (!tdata)
-    return FALSE;
+    return false;
 
   cookie->rels = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL, info->keep_memory);
   if (!cookie->rels)
     {
       free (tdata);
-      return FALSE;
+      return false;
     }
 
   cookie->rel = cookie->rels;
@@ -3850,7 +3838,7 @@ s3_bfd_score_elf_discard_info (bfd *abfd
     {
       score_elf_section_data (o)->u.tdata = tdata;
       o->size -= skip * PDR_SIZE;
-      ret = TRUE;
+      ret = true;
     }
   else
     free (tdata);
@@ -3862,12 +3850,12 @@ s3_bfd_score_elf_discard_info (bfd *abfd
 }
 
 /* Signal that discard_info() has removed the discarded relocations for this section.  */
-static bfd_boolean
+static bool
 s3_bfd_score_elf_ignore_discarded_relocs (asection *sec)
 {
   if (strcmp (sec->name, ".pdr") == 0)
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -3892,7 +3880,7 @@ s3_bfd_score_elf_gc_mark_hook (asection
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 s3_bfd_score_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -3901,7 +3889,7 @@ s3_bfd_score_elf_grok_prstatus (bfd *abf
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 148:		       /* Linux/Score 32-bit.  */
       /* pr_cursig */
@@ -3924,13 +3912,13 @@ s3_bfd_score_elf_grok_prstatus (bfd *abf
 					  note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 s3_bfd_score_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 124:		       /* Linux/Score elf_prpsinfo.  */
       elf_tdata (abfd)->core->program
@@ -3951,7 +3939,7 @@ s3_bfd_score_elf_grok_psinfo (bfd *abfd,
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -3985,7 +3973,7 @@ elf32_score_reloc_name_lookup (bfd *abfd
   return NULL;
 }
 
-static bfd_boolean
+static bool
 s3_elf32_score_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -4007,10 +3995,10 @@ s3_elf32_score_print_private_bfd_data (b
     }
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 s3_elf32_score_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -4018,21 +4006,25 @@ s3_elf32_score_merge_private_bfd_data (b
   flagword out_flags;
 
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    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;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   in_flags = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
   if (! elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -4041,7 +4033,7 @@ s3_elf32_score_merge_private_bfd_data (b
 	  return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd), bfd_get_mach (ibfd));
 	}
 
-      return TRUE;
+      return true;
     }
 
   if (((in_flags & EF_SCORE_PIC) != 0) != ((out_flags & EF_SCORE_PIC) != 0))
@@ -4050,18 +4042,17 @@ s3_elf32_score_merge_private_bfd_data (b
 
   /* FIXME: Maybe dependency fix compatibility should be checked here.  */
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 s3_elf32_score_new_section_hook (bfd *abfd, asection *sec)
 {
   struct _score_elf_section_data *sdata;
-  bfd_size_type amt = sizeof (*sdata);
 
-  sdata = bfd_zalloc (abfd, amt);
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
   if (sdata == NULL)
-    return FALSE;
+    return false;
   sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
@@ -4070,7 +4061,7 @@ s3_elf32_score_new_section_hook (bfd *ab
 /*****************************************************************************/
 
 /* s3_s7: backend hooks.  */
-static bfd_boolean
+static bool
 _bfd_score_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 			  arelent *bfd_reloc,
 			  Elf_Internal_Rela *elf_reloc)
@@ -4081,7 +4072,7 @@ _bfd_score_info_to_howto (bfd *abfd ATTR
     return s7_bfd_score_info_to_howto (abfd, bfd_reloc, elf_reloc);
 }
 
-static bfd_boolean
+static int
 _bfd_score_elf_relocate_section (bfd *output_bfd,
 				 struct bfd_link_info *info,
 				 bfd *input_bfd,
@@ -4101,7 +4092,7 @@ _bfd_score_elf_relocate_section (bfd *ou
 	     local_syms, local_sections);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_check_relocs (bfd *abfd,
 			     struct bfd_link_info *info,
 			     asection *sec,
@@ -4113,7 +4104,7 @@ _bfd_score_elf_check_relocs (bfd *abfd,
     return s7_bfd_score_elf_check_relocs (abfd, info, sec, relocs);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_add_symbol_hook (bfd *abfd,
 				struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				Elf_Internal_Sym *sym,
@@ -4163,7 +4154,7 @@ _bfd_score_elf_link_output_symbol_hook (
     return s7_bfd_score_elf_link_output_symbol_hook (info, name, sym, input_sec, h);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					 asection *sec,
 					 int *retval)
@@ -4174,7 +4165,7 @@ _bfd_score_elf_section_from_bfd_section
     return s7_bfd_score_elf_section_from_bfd_section (abfd, sec, retval);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				      struct elf_link_hash_entry *h)
 {
@@ -4184,26 +4175,26 @@ _bfd_score_elf_adjust_dynamic_symbol (st
     return s7_bfd_score_elf_adjust_dynamic_symbol (info, h);
 }
 
-static bfd_boolean
-_bfd_score_elf_always_size_sections (bfd *output_bfd,
-				     struct bfd_link_info *info)
+static bool
+_bfd_score_elf_early_size_sections (bfd *output_bfd,
+				    struct bfd_link_info *info)
 {
   if (bfd_get_mach (output_bfd) == bfd_mach_score3)
-    return s3_bfd_score_elf_always_size_sections (output_bfd, info);
+    return s3_bfd_score_elf_early_size_sections (output_bfd, info);
   else
-    return s7_bfd_score_elf_always_size_sections (output_bfd, info);
+    return s7_bfd_score_elf_early_size_sections (output_bfd, info);
 }
 
-static bfd_boolean
-_bfd_score_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+_bfd_score_elf_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   if (bfd_get_mach (output_bfd) == bfd_mach_score3)
-    return s3_bfd_score_elf_size_dynamic_sections (output_bfd, info);
+    return s3_bfd_score_elf_late_size_sections (output_bfd, info);
   else
-    return s7_bfd_score_elf_size_dynamic_sections (output_bfd, info);
+    return s7_bfd_score_elf_late_size_sections (output_bfd, info);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   if (bfd_get_mach (abfd) == bfd_mach_score3)
@@ -4212,7 +4203,7 @@ _bfd_score_elf_create_dynamic_sections (
     return s7_bfd_score_elf_create_dynamic_sections (abfd, info);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_finish_dynamic_symbol (bfd *output_bfd,
 				      struct bfd_link_info *info,
 				      struct elf_link_hash_entry *h,
@@ -4224,7 +4215,7 @@ _bfd_score_elf_finish_dynamic_symbol (bf
     return s7_bfd_score_elf_finish_dynamic_symbol (output_bfd, info, h, sym);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_finish_dynamic_sections (bfd *output_bfd,
 					struct bfd_link_info *info)
 {
@@ -4234,7 +4225,7 @@ _bfd_score_elf_finish_dynamic_sections (
     return s7_bfd_score_elf_finish_dynamic_sections (output_bfd, info);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 			      Elf_Internal_Shdr *hdr,
 			      asection *sec)
@@ -4245,7 +4236,7 @@ _bfd_score_elf_fake_sections (bfd *abfd
     return s7_bfd_score_elf_fake_sections (abfd, hdr, sec);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_section_processing (bfd *abfd ATTRIBUTE_UNUSED, Elf_Internal_Shdr *hdr)
 {
   if (bfd_get_mach (abfd) == bfd_mach_score3)
@@ -4254,7 +4245,7 @@ _bfd_score_elf_section_processing (bfd *
     return s7_bfd_score_elf_section_processing (abfd, hdr);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_write_section (bfd *output_bfd,
 			      struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
 			      asection *sec, bfd_byte *contents)
@@ -4279,7 +4270,7 @@ _bfd_score_elf_copy_indirect_symbol (str
 static void
 _bfd_score_elf_hide_symbol (struct bfd_link_info *info,
 			    struct elf_link_hash_entry *entry,
-			    bfd_boolean force_local)
+			    bool force_local)
 {
   if (bfd_get_mach (info->input_bfds) == bfd_mach_score3)
     return s3_bfd_score_elf_hide_symbol (info, entry, force_local);
@@ -4287,7 +4278,7 @@ _bfd_score_elf_hide_symbol (struct bfd_l
     return s7_bfd_score_elf_hide_symbol (info, entry, force_local);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_discard_info (bfd *abfd, struct elf_reloc_cookie *cookie,
 			 struct bfd_link_info *info)
 {
@@ -4297,7 +4288,7 @@ _bfd_score_elf_discard_info (bfd *abfd,
     return s7_bfd_score_elf_discard_info (abfd, cookie, info);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_ignore_discarded_relocs (asection *sec)
 {
   if (bfd_get_mach (sec->owner) == bfd_mach_score3)
@@ -4319,7 +4310,7 @@ _bfd_score_elf_gc_mark_hook (asection *s
     return s7_bfd_score_elf_gc_mark_hook (sec, info, rel, h, sym);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   if (bfd_get_mach (abfd) == bfd_mach_score3)
@@ -4328,7 +4319,7 @@ _bfd_score_elf_grok_prstatus (bfd *abfd,
     return s7_bfd_score_elf_grok_prstatus (abfd, note);
 }
 
-static bfd_boolean
+static bool
 _bfd_score_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (bfd_get_mach (abfd) == bfd_mach_score3)
@@ -4359,15 +4350,14 @@ 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)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (ret, abfd, score_elf_link_hash_newfunc,
-				      sizeof (struct score_elf_link_hash_entry),
-				      GENERIC_ELF_DATA))
+				      sizeof (struct score_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -4376,7 +4366,7 @@ elf32_score_link_hash_table_create (bfd
   return &ret->root;
 }
 
-static bfd_boolean
+static bool
 elf32_score_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   if (bfd_get_mach (abfd) == bfd_mach_score3)
@@ -4385,7 +4375,7 @@ elf32_score_print_private_bfd_data (bfd
     return s7_elf32_score_print_private_bfd_data (abfd, ptr);
 }
 
-static bfd_boolean
+static bool
 elf32_score_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   if (bfd_get_mach (info->output_bfd) == bfd_mach_score3)
@@ -4394,7 +4384,7 @@ elf32_score_merge_private_bfd_data (bfd
     return s7_elf32_score_merge_private_bfd_data (ibfd, info);
 }
 
-static bfd_boolean
+static bool
 elf32_score_new_section_hook (bfd *abfd, asection *sec)
 {
   if (bfd_get_mach (abfd) == bfd_mach_score3)
@@ -4407,7 +4397,7 @@ elf32_score_new_section_hook (bfd *abfd,
 /* s3_s7: don't need to split.  */
 
 /* Set the right machine number.  */
-static bfd_boolean
+static bool
 _bfd_score_elf_score_object_p (bfd * abfd)
 {
   int e_set = bfd_mach_score7;
@@ -4432,7 +4422,7 @@ _bfd_score_elf_score_object_p (bfd * abf
   return bfd_default_set_arch_mach (abfd, bfd_arch_score, e_set);
 }
 
-bfd_boolean
+bool
 _bfd_score_elf_common_definition (Elf_Internal_Sym *sym)
 {
   return (sym->st_shndx == SHN_COMMON || sym->st_shndx == SHN_SCORE_SCOMMON);
@@ -4449,6 +4439,7 @@ _bfd_score_elf_common_definition (Elf_In
 #define ELF_ARCH			bfd_arch_score
 #define ELF_MACHINE_CODE		EM_SCORE
 #define ELF_MACHINE_ALT1		EM_SCORE_OLD
+#define ELF_TARGET_ID			SCORE_ELF_DATA
 #define ELF_MAXPAGESIZE			0x8000
 
 #define elf_info_to_howto		NULL
@@ -4463,10 +4454,10 @@ _bfd_score_elf_common_definition (Elf_In
   _bfd_score_elf_section_from_bfd_section
 #define elf_backend_adjust_dynamic_symbol \
   _bfd_score_elf_adjust_dynamic_symbol
-#define elf_backend_always_size_sections \
-  _bfd_score_elf_always_size_sections
-#define elf_backend_size_dynamic_sections \
-  _bfd_score_elf_size_dynamic_sections
+#define elf_backend_early_size_sections \
+  _bfd_score_elf_early_size_sections
+#define elf_backend_late_size_sections \
+  _bfd_score_elf_late_size_sections
 #define elf_backend_omit_section_dynsym   _bfd_elf_omit_section_dynsym_all
 #define elf_backend_create_dynamic_sections \
   _bfd_score_elf_create_dynamic_sections
@@ -4489,8 +4480,8 @@ _bfd_score_elf_common_definition (Elf_In
 #define elf_backend_want_plt_sym	  0
 #define elf_backend_got_header_size	  (4 * SCORE_RESERVED_GOTNO)
 #define elf_backend_plt_header_size	  0
-#define elf_backend_collect		  TRUE
-#define elf_backend_type_change_ok	  TRUE
+#define elf_backend_collect		  true
+#define elf_backend_type_change_ok	  true
 #define elf_backend_object_p		      _bfd_score_elf_score_object_p
 
 #define bfd_elf32_bfd_reloc_type_lookup	     elf32_score_reloc_type_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.20200303/bfd/elf32-score.h ./bfd/elf32-score.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-score.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-score.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for S+core.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by
    Brain.lin (brain.lin@sunplusct.com)
    Mei Ligang (ligang@sunnorth.com.cn)
@@ -28,12 +28,12 @@
 extern void
 s7_bfd_score_elf_hide_symbol (struct bfd_link_info *,
 			      struct elf_link_hash_entry *,
-			      bfd_boolean);
+			      bool);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_info_to_howto (bfd *, arelent *, Elf_Internal_Rela *);
 
-extern bfd_boolean
+extern int
 s7_bfd_score_elf_relocate_section (bfd *,
 				   struct bfd_link_info *,
 				   bfd *,
@@ -43,13 +43,13 @@ s7_bfd_score_elf_relocate_section (bfd *
 				   Elf_Internal_Sym *,
 				   asection **);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_check_relocs (bfd *,
 			       struct bfd_link_info *,
 			       asection *,
 			       const Elf_Internal_Rela *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_add_symbol_hook (bfd *,
 				  struct bfd_link_info *,
 				  Elf_Internal_Sym *,
@@ -68,42 +68,42 @@ s7_bfd_score_elf_link_output_symbol_hook
 					  asection *,
 					  struct elf_link_hash_entry *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_section_from_bfd_section (bfd *,
 					   asection *,
 					   int *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_adjust_dynamic_symbol (struct bfd_link_info *,
 					struct elf_link_hash_entry *);
 
-extern bfd_boolean
-s7_bfd_score_elf_always_size_sections (bfd *, struct bfd_link_info *);
+extern bool
+s7_bfd_score_elf_early_size_sections (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
-s7_bfd_score_elf_size_dynamic_sections (bfd *, struct bfd_link_info *);
+extern bool
+s7_bfd_score_elf_late_size_sections (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_create_dynamic_sections (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_finish_dynamic_symbol (bfd *,
 					struct bfd_link_info *,
 					struct elf_link_hash_entry *,
 					Elf_Internal_Sym *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_finish_dynamic_sections (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_fake_sections (bfd *,
 				Elf_Internal_Shdr *,
 				asection *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_section_processing (bfd *, Elf_Internal_Shdr *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_write_section (bfd *, asection *, bfd_byte *);
 
 extern void
@@ -111,11 +111,11 @@ s7_bfd_score_elf_copy_indirect_symbol (s
 				       struct elf_link_hash_entry *,
 				       struct elf_link_hash_entry *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_discard_info (bfd *, struct elf_reloc_cookie *,
 			       struct bfd_link_info *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_ignore_discarded_relocs (asection *);
 
 extern asection *
@@ -125,10 +125,10 @@ s7_bfd_score_elf_gc_mark_hook (asection
 			       struct elf_link_hash_entry *,
 			       Elf_Internal_Sym *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_grok_prstatus (bfd *, Elf_Internal_Note *);
 
-extern bfd_boolean
+extern bool
 s7_bfd_score_elf_grok_psinfo (bfd *, Elf_Internal_Note *);
 
 extern reloc_howto_type *
@@ -137,16 +137,16 @@ s7_elf32_score_reloc_type_lookup (bfd *,
 extern struct bfd_link_hash_table *
 s7_elf32_score_link_hash_table_create (bfd *);
 
-extern bfd_boolean
+extern bool
 s7_elf32_score_print_private_bfd_data (bfd *, void *);
 
-extern bfd_boolean
+extern bool
 s7_elf32_score_merge_private_bfd_data (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
+extern bool
 s7_elf32_score_new_section_hook (bfd *, asection *);
 
-extern bfd_boolean
+extern bool
 _bfd_score_elf_common_definition (Elf_Internal_Sym *);
 
 #define elf_backend_common_definition   _bfd_score_elf_common_definition
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-sh.c ./bfd/elf32-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-sh.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-sh.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -37,11 +37,11 @@ static bfd_reloc_status_type sh_elf_relo
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type sh_elf_ignore_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_boolean sh_elf_relax_delete_bytes
+static bool sh_elf_relax_delete_bytes
   (bfd *, asection *, bfd_vma, int);
-static bfd_boolean sh_elf_align_loads
-  (bfd *, asection *, Elf_Internal_Rela *, bfd_byte *, bfd_boolean *);
-static bfd_boolean sh_elf_swap_insns
+static bool sh_elf_align_loads
+  (bfd *, asection *, Elf_Internal_Rela *, bfd_byte *, bool *);
+static bool sh_elf_swap_insns
   (bfd *, asection *, void *, bfd_byte *, bfd_vma);
 static int sh_elf_optimized_tls_reloc
   (struct bfd_link_info *, int, int);
@@ -67,7 +67,7 @@ static bfd_vma tpoff
   (SYMBOL_REFERENCES_LOCAL (INFO, H) \
    || ! elf_hash_table (INFO)->dynamic_sections_created)
 
-#define SH_PARTIAL32 TRUE
+#define SH_PARTIAL32 true
 #define SH_SRC_MASK32 0xffffffff
 #define SH_ELF_RELOC sh_elf_reloc
 static reloc_howto_type sh_elf_howto_table[] =
@@ -75,7 +75,7 @@ static reloc_howto_type sh_elf_howto_tab
 #include "elf32-sh-relocs.h"
 };
 
-#define SH_PARTIAL32 FALSE
+#define SH_PARTIAL32 false
 #define SH_SRC_MASK32 0
 #define SH_ELF_RELOC bfd_elf_generic_reloc
 static reloc_howto_type sh_vxworks_howto_table[] =
@@ -85,7 +85,7 @@ static reloc_howto_type sh_vxworks_howto
 
 /* Return true if OUTPUT_BFD is a VxWorks object.  */
 
-static bfd_boolean
+static bool
 vxworks_object_p (bfd *abfd ATTRIBUTE_UNUSED)
 {
 #if !defined SH_TARGET_ALREADY_DEFINED
@@ -95,13 +95,13 @@ vxworks_object_p (bfd *abfd ATTRIBUTE_UN
   return (abfd->xvec == &sh_elf32_vxworks_le_vec
 	  || abfd->xvec == &sh_elf32_vxworks_vec);
 #else
-  return FALSE;
+  return false;
 #endif
 }
 
 /* Return true if OUTPUT_BFD is an FDPIC object.  */
 
-static bfd_boolean
+static bool
 fdpic_object_p (bfd *abfd ATTRIBUTE_UNUSED)
 {
 #if !defined SH_TARGET_ALREADY_DEFINED
@@ -111,7 +111,7 @@ fdpic_object_p (bfd *abfd ATTRIBUTE_UNUS
   return (abfd->xvec == &sh_elf32_fdpic_le_vec
 	  || abfd->xvec == &sh_elf32_fdpic_be_vec);
 #else
-  return FALSE;
+  return false;
 #endif
 }
 
@@ -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);
@@ -421,30 +419,29 @@ sh_elf_reloc_name_lookup (bfd *abfd, con
 
 /* Given an ELF reloc, fill in the howto field of a relent.  */
 
-static bfd_boolean
+static bool
 sh_elf_info_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
   unsigned int r;
 
   r = ELF32_R_TYPE (dst->r_info);
 
-  if (r >= R_SH_max
+  if (r >= R_SH_FIRST_INVALID_RELOC_6
       || (r >= R_SH_FIRST_INVALID_RELOC   && r <= R_SH_LAST_INVALID_RELOC)
       || (r >= R_SH_FIRST_INVALID_RELOC_2 && r <= R_SH_LAST_INVALID_RELOC_2)
       || (r >= R_SH_FIRST_INVALID_RELOC_3 && r <= R_SH_LAST_INVALID_RELOC_3)
       || (r >= R_SH_FIRST_INVALID_RELOC_4 && r <= R_SH_LAST_INVALID_RELOC_4)
-      || (r >= R_SH_FIRST_INVALID_RELOC_5 && r <= R_SH_LAST_INVALID_RELOC_5)
-      || (r >= R_SH_FIRST_INVALID_RELOC_6 && r <= R_SH_LAST_INVALID_RELOC_6))
+      || (r >= R_SH_FIRST_INVALID_RELOC_5 && r <= R_SH_LAST_INVALID_RELOC_5))
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = get_howto_table (abfd) + r;
-  return TRUE;
+  return true;
 }
 
 /* This function handles relaxing for SH ELF.  See the corresponding
@@ -457,23 +454,24 @@ sh_elf_info_to_howto (bfd *abfd, arelent
    values; in coff-sh.c they come from include/coff/sh.h, whereas here
    they come from enum elf_sh_reloc_type in include/elf/sh.h.  */
 
-static bfd_boolean
+static bool
 sh_elf_relax_section (bfd *abfd, asection *sec,
-		      struct bfd_link_info *link_info, bfd_boolean *again)
+		      struct bfd_link_info *link_info, bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
-  bfd_boolean have_code;
+  bool have_code;
   Elf_Internal_Rela *irel, *irelend;
   bfd_byte *contents = NULL;
   Elf_Internal_Sym *isymbuf = NULL;
 
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (link_info)
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_symtab_hdr (abfd);
 
@@ -483,7 +481,7 @@ sh_elf_relax_section (bfd *abfd, asectio
   if (internal_relocs == NULL)
     goto error_return;
 
-  have_code = FALSE;
+  have_code = false;
 
   irelend = internal_relocs + sec->reloc_count;
   for (irel = internal_relocs; irel < irelend; irel++)
@@ -494,7 +492,7 @@ sh_elf_relax_section (bfd *abfd, asectio
       bfd_signed_vma foff;
 
       if (ELF32_R_TYPE (irel->r_info) == (int) R_SH_CODE)
-	have_code = TRUE;
+	have_code = true;
 
       if (ELF32_R_TYPE (irel->r_info) != (int) R_SH_USES)
 	continue;
@@ -719,7 +717,7 @@ sh_elf_relax_section (bfd *abfd, asectio
       /* That will change things, so, just in case it permits some
 	 other function call to come within range, we should relax
 	 again.  Note that this is not required, and it may be slow.  */
-      *again = TRUE;
+      *again = true;
 
       /* Now check whether we got a COUNT reloc.  */
       if (irelcount >= irelend)
@@ -761,7 +759,7 @@ sh_elf_relax_section (bfd *abfd, asectio
   if ((elf_elfheader (abfd)->e_flags & EF_SH_MACH_MASK) != EF_SH4
       && have_code)
     {
-      bfd_boolean swapped;
+      bool swapped;
 
       /* Get the section contents.  */
       if (contents == NULL)
@@ -811,31 +809,27 @@ 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;
+  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;
+  return false;
 }
 
 /* Delete some bytes from a section while relaxing.  FIXME: There is a
    lot of duplication between this function and sh_relax_delete_bytes
    in coff-sh.c.  */
 
-static bfd_boolean
+static bool
 sh_elf_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr,
 			   int count)
 {
@@ -902,7 +896,7 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
       int insn = 0;
       int off, adjust, oinsn;
       bfd_signed_vma voff = 0;
-      bfd_boolean overflow;
+      bool overflow;
 
       /* Get the new reloc address.  */
       nraddr = irel->r_offset;
@@ -1077,7 +1071,7 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
       if (adjust != 0)
 	{
 	  oinsn = insn;
-	  overflow = FALSE;
+	  overflow = false;
 	  switch ((enum elf_sh_reloc_type) ELF32_R_TYPE (irel->r_info))
 	    {
 	    default:
@@ -1088,14 +1082,14 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
 	    case R_SH_DIR8WPZ:
 	      insn += adjust / 2;
 	      if ((oinsn & 0xff00) != (insn & 0xff00))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, contents + nraddr);
 	      break;
 
 	    case R_SH_IND12W:
 	      insn += adjust / 2;
 	      if ((oinsn & 0xf000) != (insn & 0xf000))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, contents + nraddr);
 	      break;
 
@@ -1109,21 +1103,21 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
 		    ++insn;
 		}
 	      if ((oinsn & 0xff00) != (insn & 0xff00))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, contents + nraddr);
 	      break;
 
 	    case R_SH_SWITCH8:
 	      voff += adjust;
 	      if (voff < 0 || voff >= 0xff)
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_8 (abfd, voff, contents + nraddr);
 	      break;
 
 	    case R_SH_SWITCH16:
 	      voff += adjust;
 	      if (voff < - 0x8000 || voff >= 0x8000)
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_signed_16 (abfd, (bfd_vma) voff, contents + nraddr);
 	      break;
 
@@ -1144,7 +1138,7 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
 		(_("%pB: %#" PRIx64 ": fatal: reloc overflow while relaxing"),
 		 abfd, (uint64_t) irel->r_offset);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -1161,6 +1155,7 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
       bfd_byte *ocontents;
 
       if (o == sec
+	  || (o->flags & SEC_HAS_CONTENTS) == 0
 	  || (o->flags & SEC_RELOC) == 0
 	  || o->reloc_count == 0)
 	continue;
@@ -1169,9 +1164,9 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
 	 FALSE, we should free them, if we are permitted to, when we
 	 leave sh_coff_relax_section.  */
       internal_relocs = (_bfd_elf_link_read_relocs
-			 (abfd, o, NULL, (Elf_Internal_Rela *) NULL, TRUE));
+			 (abfd, o, NULL, (Elf_Internal_Rela *) NULL, true));
       if (internal_relocs == NULL)
-	return FALSE;
+	return false;
 
       ocontents = NULL;
       irelscanend = internal_relocs + o->reloc_count;
@@ -1195,9 +1190,8 @@ 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);
-			  return FALSE;
+			  free (ocontents);
+			  return false;
 			}
 
 		      elf_section_data (o)->this_hdr.contents = ocontents;
@@ -1253,9 +1247,8 @@ 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);
-			  return FALSE;
+			  free (ocontents);
+			  return false;
 			}
 
 		      elf_section_data (o)->this_hdr.contents = ocontents;
@@ -1316,24 +1309,24 @@ sh_elf_relax_delete_bytes (bfd *abfd, as
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look for loads and stores which we can align to four byte
    boundaries.  This is like sh_align_loads in coff-sh.c.  */
 
-static bfd_boolean
+static bool
 sh_elf_align_loads (bfd *abfd ATTRIBUTE_UNUSED, asection *sec,
 		    Elf_Internal_Rela *internal_relocs,
 		    bfd_byte *contents ATTRIBUTE_UNUSED,
-		    bfd_boolean *pswapped)
+		    bool *pswapped)
 {
   Elf_Internal_Rela *irel, *irelend;
   bfd_vma *labels = NULL;
   bfd_vma *label, *label_end;
   bfd_size_type amt;
 
-  *pswapped = FALSE;
+  *pswapped = false;
 
   irelend = internal_relocs + sec->reloc_count;
 
@@ -1384,17 +1377,16 @@ sh_elf_align_loads (bfd *abfd ATTRIBUTE_
 
   free (labels);
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (labels != NULL)
-    free (labels);
-  return FALSE;
+  free (labels);
+  return false;
 }
 
 /* Swap two SH instructions.  This is like sh_swap_insns in coff-sh.c.  */
 
-static bfd_boolean
+static bool
 sh_elf_swap_insns (bfd *abfd, asection *sec, void *relocs,
 		   bfd_byte *contents, bfd_vma addr)
 {
@@ -1437,9 +1429,9 @@ sh_elf_swap_insns (bfd *abfd, asection *
 
 	  off = irel->r_offset + 4 + irel->r_addend;
 	  if (off == addr)
-	    irel->r_offset += 2;
+	    irel->r_addend += 2;
 	  else if (off == addr + 2)
-	    irel->r_offset -= 2;
+	    irel->r_addend -= 2;
 	}
 
       if (irel->r_offset == addr)
@@ -1459,10 +1451,10 @@ sh_elf_swap_insns (bfd *abfd, asection *
 	{
 	  bfd_byte *loc;
 	  unsigned short insn, oinsn;
-	  bfd_boolean overflow;
+	  bool overflow;
 
 	  loc = contents + irel->r_offset;
-	  overflow = FALSE;
+	  overflow = false;
 	  switch (type)
 	    {
 	    default:
@@ -1474,7 +1466,7 @@ sh_elf_swap_insns (bfd *abfd, asection *
 	      oinsn = insn;
 	      insn += add / 2;
 	      if ((oinsn & 0xff00) != (insn & 0xff00))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, loc);
 	      break;
 
@@ -1483,7 +1475,7 @@ sh_elf_swap_insns (bfd *abfd, asection *
 	      oinsn = insn;
 	      insn += add / 2;
 	      if ((oinsn & 0xf000) != (insn & 0xf000))
-		overflow = TRUE;
+		overflow = true;
 	      bfd_put_16 (abfd, (bfd_vma) insn, loc);
 	      break;
 
@@ -1500,7 +1492,7 @@ sh_elf_swap_insns (bfd *abfd, asection *
 		  oinsn = insn;
 		  insn += add / 2;
 		  if ((oinsn & 0xff00) != (insn & 0xff00))
-		    overflow = TRUE;
+		    overflow = true;
 		  bfd_put_16 (abfd, (bfd_vma) insn, loc);
 		}
 
@@ -1514,12 +1506,12 @@ sh_elf_swap_insns (bfd *abfd, asection *
 		(_("%pB: %#" PRIx64 ": fatal: reloc overflow while relaxing"),
 		 abfd, (uint64_t) irel->r_offset);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Describes one of the various PLT styles.  */
@@ -1551,9 +1543,8 @@ struct elf_sh_plt_info
     bfd_vma got_entry; /* the address of the symbol's .got.plt entry */
     bfd_vma plt; /* .plt (or a branch to .plt on VxWorks) */
     bfd_vma reloc_offset; /* the offset of the symbol's JMP_SLOT reloc */
-    bfd_boolean got20; /* TRUE if got_entry points to a movi20
-			  instruction (instead of a constant pool
-			  entry).  */
+    bool got20; /* TRUE if got_entry points to a movi20 instruction
+		   (instead of a constant pool entry).  */
   } symbol_fields;
 
   /* The offset of the resolver stub from the start of SYMBOL_ENTRY.  */
@@ -1687,7 +1678,7 @@ static const struct elf_sh_plt_info elf_
       { MINUS_ONE, 24, 20 },
       elf_sh_plt_entry_be,
       ELF_PLT_ENTRY_SIZE,
-      { 20, 16, 24, FALSE },
+      { 20, 16, 24, false },
       8,
       NULL
     },
@@ -1698,7 +1689,7 @@ static const struct elf_sh_plt_info elf_
       { MINUS_ONE, 24, 20 },
       elf_sh_plt_entry_le,
       ELF_PLT_ENTRY_SIZE,
-      { 20, 16, 24, FALSE },
+      { 20, 16, 24, false },
       8,
       NULL
     },
@@ -1711,7 +1702,7 @@ static const struct elf_sh_plt_info elf_
       { MINUS_ONE, MINUS_ONE, MINUS_ONE },
       elf_sh_pic_plt_entry_be,
       ELF_PLT_ENTRY_SIZE,
-      { 20, MINUS_ONE, 24, FALSE },
+      { 20, MINUS_ONE, 24, false },
       8,
       NULL
     },
@@ -1722,7 +1713,7 @@ static const struct elf_sh_plt_info elf_
       { MINUS_ONE, MINUS_ONE, MINUS_ONE },
       elf_sh_pic_plt_entry_le,
       ELF_PLT_ENTRY_SIZE,
-      { 20, MINUS_ONE, 24, FALSE },
+      { 20, MINUS_ONE, 24, false },
       8,
       NULL
     },
@@ -1815,7 +1806,7 @@ static const struct elf_sh_plt_info vxwo
       { MINUS_ONE, MINUS_ONE, 8 },
       vxworks_sh_plt_entry_be,
       VXWORKS_PLT_ENTRY_SIZE,
-      { 8, 14, 20, FALSE },
+      { 8, 14, 20, false },
       12,
       NULL
     },
@@ -1826,7 +1817,7 @@ static const struct elf_sh_plt_info vxwo
       { MINUS_ONE, MINUS_ONE, 8 },
       vxworks_sh_plt_entry_le,
       VXWORKS_PLT_ENTRY_SIZE,
-      { 8, 14, 20, FALSE },
+      { 8, 14, 20, false },
       12,
       NULL
     },
@@ -1839,7 +1830,7 @@ static const struct elf_sh_plt_info vxwo
       { MINUS_ONE, MINUS_ONE, MINUS_ONE },
       vxworks_sh_pic_plt_entry_be,
       VXWORKS_PLT_ENTRY_SIZE,
-      { 8, MINUS_ONE, 20, FALSE },
+      { 8, MINUS_ONE, 20, false },
       12,
       NULL
     },
@@ -1850,7 +1841,7 @@ static const struct elf_sh_plt_info vxwo
       { MINUS_ONE, MINUS_ONE, MINUS_ONE },
       vxworks_sh_pic_plt_entry_le,
       VXWORKS_PLT_ENTRY_SIZE,
-      { 8, MINUS_ONE, 20, FALSE },
+      { 8, MINUS_ONE, 20, false },
       12,
       NULL
     },
@@ -1911,7 +1902,7 @@ static const struct elf_sh_plt_info fdpi
     { MINUS_ONE, MINUS_ONE, MINUS_ONE },
     fdpic_sh_plt_entry_be,
     FDPIC_PLT_ENTRY_SIZE,
-    { 12, MINUS_ONE, 16, FALSE },
+    { 12, MINUS_ONE, 16, false },
     FDPIC_PLT_LAZY_OFFSET,
     NULL
   },
@@ -1922,7 +1913,7 @@ static const struct elf_sh_plt_info fdpi
     { MINUS_ONE, MINUS_ONE, MINUS_ONE },
     fdpic_sh_plt_entry_le,
     FDPIC_PLT_ENTRY_SIZE,
-    { 12, MINUS_ONE, 16, FALSE },
+    { 12, MINUS_ONE, 16, false },
     FDPIC_PLT_LAZY_OFFSET,
     NULL
   },
@@ -1971,7 +1962,7 @@ static const struct elf_sh_plt_info fdpi
   { MINUS_ONE, MINUS_ONE, MINUS_ONE },
   fdpic_sh2a_plt_entry_be,
   FDPIC_SH2A_PLT_ENTRY_SIZE,
-  { 0, MINUS_ONE, 12, TRUE },
+  { 0, MINUS_ONE, 12, true },
   FDPIC_SH2A_PLT_LAZY_OFFSET,
   NULL
 };
@@ -1983,7 +1974,7 @@ static const struct elf_sh_plt_info fdpi
   { MINUS_ONE, MINUS_ONE, MINUS_ONE },
   fdpic_sh2a_plt_entry_le,
   FDPIC_SH2A_PLT_ENTRY_SIZE,
-  { 0, MINUS_ONE, 12, TRUE },
+  { 0, MINUS_ONE, 12, true },
   FDPIC_SH2A_PLT_LAZY_OFFSET,
   NULL
 };
@@ -1996,7 +1987,7 @@ static const struct elf_sh_plt_info fdpi
     { MINUS_ONE, MINUS_ONE, MINUS_ONE },
     fdpic_sh_plt_entry_be,
     FDPIC_PLT_ENTRY_SIZE,
-    { 12, MINUS_ONE, 16, FALSE },
+    { 12, MINUS_ONE, 16, false },
     FDPIC_PLT_LAZY_OFFSET,
     &fdpic_sh2a_short_plt_be
   },
@@ -2007,7 +1998,7 @@ static const struct elf_sh_plt_info fdpi
     { MINUS_ONE, MINUS_ONE, MINUS_ONE },
     fdpic_sh_plt_entry_le,
     FDPIC_PLT_ENTRY_SIZE,
-    { 12, MINUS_ONE, 16, FALSE },
+    { 12, MINUS_ONE, 16, false },
     FDPIC_PLT_LAZY_OFFSET,
     &fdpic_sh2a_short_plt_le
   },
@@ -2017,7 +2008,7 @@ static const struct elf_sh_plt_info fdpi
    the object is position-independent.  */
 
 static const struct elf_sh_plt_info *
-get_plt_info (bfd *abfd, bfd_boolean pic_p)
+get_plt_info (bfd *abfd, bool pic_p)
 {
   if (fdpic_object_p (abfd))
     {
@@ -2038,7 +2029,7 @@ get_plt_info (bfd *abfd, bfd_boolean pic
    not data.  */
 
 inline static void
-install_plt_field (bfd *output_bfd, bfd_boolean code_p ATTRIBUTE_UNUSED,
+install_plt_field (bfd *output_bfd, bool code_p ATTRIBUTE_UNUSED,
 		   unsigned long value, bfd_byte *addr)
 {
   bfd_put_32 (output_bfd, value, addr);
@@ -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
@@ -2158,11 +2146,10 @@ struct sh_elf_obj_tdata
 /* Override the generic function because we need to store sh_elf_obj_tdata
    as the specific tdata.  */
 
-static bfd_boolean
+static bool
 sh_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct sh_elf_obj_tdata),
-				  SH_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct sh_elf_obj_tdata));
 }
 
 /* sh ELF linker hash table.  */
@@ -2172,8 +2159,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 +2166,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,11 +2176,8 @@ 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;
+  bool fdpic_p;
 };
 
 /* Traverse an sh ELF linker hash table.  */
@@ -2206,14 +2185,15 @@ struct elf_sh_link_hash_table
 #define sh_elf_link_hash_traverse(table, func, info)			\
   (elf_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func), \
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* 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 +2220,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 +2235,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)
@@ -2264,20 +2243,22 @@ sh_elf_link_hash_table_create (bfd *abfd
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      sh_elf_link_hash_newfunc,
-				      sizeof (struct elf_sh_link_hash_entry),
-				      SH_ELF_DATA))
+				      sizeof (struct elf_sh_link_hash_entry)))
     {
       free (ret);
       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;
 }
 
-static bfd_boolean
+static bool
 sh_elf_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
 			    struct bfd_link_info *info, asection *p)
 {
@@ -2285,7 +2266,7 @@ sh_elf_omit_section_dynsym (bfd *output_
 
   /* Non-FDPIC binaries do not need dynamic symbols for sections.  */
   if (!htab->fdpic_p)
-    return TRUE;
+    return true;
 
   /* We need dynamic symbols for every section, since segments can
      relocate independently.  */
@@ -2296,29 +2277,29 @@ sh_elf_omit_section_dynsym (bfd *output_
       /* If sh_type is yet undecided, assume it could be
 	 SHT_PROGBITS/SHT_NOBITS.  */
     case SHT_NULL:
-      return FALSE;
+      return false;
 
       /* There shouldn't be section relative relocations
 	 against any other section.  */
     default:
-      return TRUE;
+      return true;
     }
 }
 
 /* Create .got, .gotplt, and .rela.got sections in DYNOBJ, and set up
    shortcuts to them in our hash table.  */
 
-static bfd_boolean
+static bool
 create_got_section (bfd *dynobj, struct bfd_link_info *info)
 {
   struct elf_sh_link_hash_table *htab;
 
   if (! _bfd_elf_create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   htab = sh_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   htab->sfuncdesc = bfd_make_section_anyway_with_flags (dynobj, ".got.funcdesc",
 							(SEC_ALLOC | SEC_LOAD
@@ -2327,7 +2308,7 @@ create_got_section (bfd *dynobj, struct
 							 | SEC_LINKER_CREATED));
   if (htab->sfuncdesc == NULL
       || !bfd_set_section_alignment (htab->sfuncdesc, 2))
-    return FALSE;
+    return false;
 
   htab->srelfuncdesc = bfd_make_section_anyway_with_flags (dynobj,
 							   ".rela.got.funcdesc",
@@ -2338,7 +2319,7 @@ create_got_section (bfd *dynobj, struct
 							    | SEC_READONLY));
   if (htab->srelfuncdesc == NULL
       || !bfd_set_section_alignment (htab->srelfuncdesc, 2))
-    return FALSE;
+    return false;
 
   /* Also create .rofixup.  */
   htab->srofixup = bfd_make_section_anyway_with_flags (dynobj, ".rofixup",
@@ -2349,14 +2330,14 @@ create_got_section (bfd *dynobj, struct
 							| SEC_READONLY));
   if (htab->srofixup == NULL
       || !bfd_set_section_alignment (htab->srofixup, 2))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Create dynamic sections when linking against a dynamic object.  */
 
-static bfd_boolean
+static bool
 sh_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_sh_link_hash_table *htab;
@@ -2377,15 +2358,15 @@ sh_elf_create_dynamic_sections (bfd *abf
 
     default:
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   htab = sh_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (htab->root.dynamic_sections_created)
-    return TRUE;
+    return true;
 
   /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
      .rel[a].bss sections.  */
@@ -2404,7 +2385,7 @@ sh_elf_create_dynamic_sections (bfd *abf
   htab->root.splt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
 
   if (bed->want_plt_sym)
     {
@@ -2415,9 +2396,9 @@ sh_elf_create_dynamic_sections (bfd *abf
 
       if (! (_bfd_generic_link_add_one_symbol
 	     (info, abfd, "_PROCEDURE_LINKAGE_TABLE_", BSF_GLOBAL, s,
-	      (bfd_vma) 0, (const char *) NULL, FALSE,
+	      (bfd_vma) 0, (const char *) NULL, false,
 	      get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	return false;
 
       h = (struct elf_link_hash_entry *) bh;
       h->def_regular = 1;
@@ -2426,7 +2407,7 @@ sh_elf_create_dynamic_sections (bfd *abf
 
       if (bfd_link_pic (info)
 	  && ! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   s = bfd_make_section_anyway_with_flags (abfd,
@@ -2436,11 +2417,11 @@ sh_elf_create_dynamic_sections (bfd *abf
   htab->root.srelplt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (htab->root.sgot == NULL
       && !create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   if (bed->want_dynbss)
     {
@@ -2452,9 +2433,9 @@ 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;
+	return false;
 
       /* The .rel[a].bss section holds copy relocs.  This section is not
 	 normally needed.  We need to create it here, though, so that the
@@ -2473,46 +2454,29 @@ 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;
+	    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;
+	return false;
     }
 
-  return TRUE;
+  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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 sh_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 			      struct elf_link_hash_entry *h)
 {
@@ -2521,7 +2485,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
 
   htab = sh_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Make sure we know what is going on here.  */
   BFD_ASSERT (htab->root.dynobj != NULL
@@ -2551,7 +2515,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -2567,7 +2531,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
       h->root.u.def.value = def->root.u.def.value;
       if (info->nocopyreloc)
 	h->non_got_ref = def->non_got_ref;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2578,26 +2542,26 @@ sh_elf_adjust_dynamic_symbol (struct bfd
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (0 && info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -2610,7 +2574,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 +2585,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;
@@ -2633,7 +2597,7 @@ sh_elf_adjust_dynamic_symbol (struct bfd
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
@@ -2642,12 +2606,12 @@ allocate_dynrelocs (struct elf_link_hash
   struct elf_dyn_relocs *p;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = sh_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   eh = (struct elf_sh_link_hash_entry *) h;
   if ((h->got.refcount > 0
@@ -2672,7 +2636,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (bfd_link_pic (info)
@@ -2718,7 +2682,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
@@ -2750,7 +2714,7 @@ allocate_dynrelocs (struct elf_link_hash
   if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       enum got_type got_type = sh_elf_hash_entry (h)->got_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -2759,7 +2723,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->root.sgot;
@@ -2851,8 +2815,8 @@ allocate_dynrelocs (struct elf_link_hash
 	htab->srelfuncdesc->size += sizeof (Elf32_External_Rela);
     }
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -2866,7 +2830,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 +2841,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 +2856,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.  */
@@ -2905,7 +2869,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -2928,7 +2892,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -2937,13 +2901,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);
@@ -2953,42 +2917,15 @@ allocate_dynrelocs (struct elf_link_hash
 	htab->srofixup->size -= 4 * (p->count - p->pc_count);
     }
 
-  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;
 }
 
 /* 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.  */
 
-static bfd_boolean
-sh_elf_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+sh_elf_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   sh_elf_hash_table (info)->plt_info = get_plt_info (output_bfd,
 						     bfd_link_pic (info));
@@ -2996,28 +2933,29 @@ sh_elf_always_size_sections (bfd *output
   if (sh_elf_hash_table (info)->fdpic_p && !bfd_link_relocatable (info)
       && !bfd_elf_stack_segment_size (output_bfd, info,
 				      "__stacksize", DEFAULT_STACK_SIZE))
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-sh_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-			      struct bfd_link_info *info)
+static bool
+sh_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			   struct bfd_link_info *info)
 {
   struct elf_sh_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
   htab = sh_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->root.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (htab->root.dynamic_sections_created)
     {
@@ -3028,6 +2966,7 @@ sh_elf_size_dynamic_sections (bfd *outpu
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -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)
 		{
@@ -3122,7 +3061,7 @@ sh_elf_size_dynamic_sections (bfd *outpu
 			  local_funcdesc = (union gotref *) bfd_zalloc (ibfd,
 									size);
 			  if (local_funcdesc == NULL)
-			    return FALSE;
+			    return false;
 			  sh_elf_local_funcdesc (ibfd) = local_funcdesc;
 			  local_funcdesc += (local_got
 					     - elf_local_got_refcounts (ibfd));
@@ -3197,7 +3136,7 @@ sh_elf_size_dynamic_sections (bfd *outpu
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       if ((s->flags & SEC_LINKER_CREATED) == 0)
@@ -3208,15 +3147,15 @@ 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.  */
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt && s != htab->srelplt2)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -3254,65 +3193,12 @@ sh_elf_size_dynamic_sections (bfd *outpu
 	 of garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	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;
+	return false;
+      s->alloced = 1;
     }
-#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.  */
@@ -3378,7 +3264,7 @@ sh_elf_osec_to_segment (bfd *output_bfd,
   return (p != NULL) ? p - elf_tdata (output_bfd)->phdr : -1;
 }
 
-static bfd_boolean
+static bool
 sh_elf_osec_readonly_p (bfd *output_bfd, asection *osec)
 {
   unsigned seg = sh_elf_osec_to_segment (output_bfd, osec);
@@ -3389,7 +3275,7 @@ sh_elf_osec_readonly_p (bfd *output_bfd,
 
 /* Generate the initial contents of a local function descriptor, along
    with any relocations or fixups required.  */
-static bfd_boolean
+static bool
 sh_elf_initialize_funcdesc (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    struct elf_link_hash_entry *h,
@@ -3457,7 +3343,7 @@ sh_elf_initialize_funcdesc (bfd *output_
   bfd_put_32 (output_bfd, addr, htab->sfuncdesc->contents + offset);
   bfd_put_32 (output_bfd, seg, htab->sfuncdesc->contents + offset + 4);
 
-  return TRUE;
+  return true;
 }
 
 /* Install a 20-bit movi20 field starting at ADDR, which occurs in OUTPUT_BFD.
@@ -3491,7 +3377,7 @@ install_movi20_field (bfd *output_bfd, u
 
 /* Relocate an SH ELF section.  */
 
-static bfd_boolean
+static int
 sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 			 bfd *input_bfd, asection *input_section,
 			 bfd_byte *contents, Elf_Internal_Rela *relocs,
@@ -3508,14 +3394,14 @@ sh_elf_relocate_section (bfd *output_bfd
   asection *splt = NULL;
   asection *sreloc = NULL;
   asection *srelgot = NULL;
-  bfd_boolean is_vxworks_tls;
+  bool is_vxworks_tls;
   unsigned isec_segment, got_segment, plt_segment, check_segment[2];
-  bfd_boolean fdpic_p = FALSE;
+  bool fdpic_p = false;
 
   if (!is_sh_elf (input_bfd))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   htab = sh_elf_hash_table (info);
@@ -3546,7 +3432,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,11 +3449,10 @@ 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;
-      bfd_boolean resolved_to_zero;
+      bool resolved_to_zero;
 
       r_symndx = ELF32_R_SYM (rel->r_info);
 
@@ -3597,7 +3482,7 @@ sh_elf_relocate_section (bfd *output_bfd
 	      && r_type <= (int) R_SH_LAST_INVALID_RELOC_6))
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       howto = get_howto_table (output_bfd) + r_type;
@@ -3607,7 +3492,7 @@ sh_elf_relocate_section (bfd *output_bfd
       if (! howto->partial_inplace)
 	addend = rel->r_addend;
 
-      resolved_to_zero = FALSE;
+      resolved_to_zero = false;
       h = NULL;
       sym = NULL;
       sec = NULL;
@@ -3626,14 +3511,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.  */
@@ -3692,7 +3569,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		       "%s relocation against SEC_MERGE section"),
 		     input_bfd, input_section,
 		     (uint64_t) rel->r_offset, howto->name);
-		  return FALSE;
+		  return false;
 		}
 
 	      addend = bfd_get_32 (input_bfd, contents + rel->r_offset);
@@ -3718,9 +3595,9 @@ sh_elf_relocate_section (bfd *output_bfd
 	  if (h->root.type == bfd_link_hash_defined
 	      || h->root.type == bfd_link_hash_defweak)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
-	      dyn = htab ? htab->root.dynamic_sections_created : FALSE;
+	      dyn = htab ? htab->root.dynamic_sections_created : false;
 	      sec = h->root.u.def.section;
 	      /* In these cases, we don't need the relocation value.
 		 We check specially because in some obscure cases
@@ -3783,14 +3660,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,
@@ -3806,7 +3678,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		     (uint64_t) rel->r_offset,
 		     howto->name,
 		     h->root.root.string);
-		  return FALSE;
+		  return false;
 		}
 	    }
 	  else if (h->root.type == bfd_link_hash_undefweak)
@@ -3815,16 +3687,18 @@ 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,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_SH_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -3884,7 +3758,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		     input_section->owner,
 		     (uint64_t) rel->r_offset);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	      relocation -= 4;
 	      goto final_link_relocate;
@@ -3894,7 +3768,7 @@ sh_elf_relocate_section (bfd *output_bfd
 
 	default:
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 
 	case R_SH_DIR16:
 	case R_SH_DIR8:
@@ -3914,7 +3788,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		 input_section->owner, (uint64_t) rel->r_offset,
 		 howto->name, (uint64_t) relocation);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  goto final_link_relocate;
 
@@ -3931,7 +3805,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		 (uint64_t) rel->r_offset, howto->name,
 		 (uint64_t) relocation);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  goto final_link_relocate;
 
@@ -3947,7 +3821,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		 (uint64_t) rel->r_offset,
 		 (int64_t) relocation);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  goto final_link_relocate;
 
@@ -3963,7 +3837,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		 (uint64_t) rel->r_offset,
 		 (int64_t) relocation);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  goto final_link_relocate;
 
@@ -3982,7 +3856,7 @@ sh_elf_relocate_section (bfd *output_bfd
 	    {
 	      Elf_Internal_Rela outrel;
 	      bfd_byte *loc;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
@@ -3991,21 +3865,21 @@ sh_elf_relocate_section (bfd *output_bfd
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_get_dynamic_reloc_section
-		    (input_bfd, input_section, /*rela?*/ TRUE);
+		    (input_bfd, input_section, /*rela?*/ true);
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -4093,7 +3967,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		       input_section,
 		       (uint64_t) rel->r_offset,
 		       symname);
-		    return FALSE;
+		    return false;
 		  }
 
 	      offset = _bfd_elf_section_offset (output_bfd, info,
@@ -4154,7 +4028,7 @@ sh_elf_relocate_section (bfd *output_bfd
 
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      BFD_ASSERT (off != (bfd_vma) -1);
@@ -4449,7 +4323,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		      {
 			if (!sh_elf_initialize_funcdesc (output_bfd, info, h,
 							 offset, NULL, 0))
-			  return FALSE;
+			  return false;
 			sh_elf_hash_entry (h)->funcdesc.offset |= 1;
 		      }
 		  }
@@ -4465,7 +4339,7 @@ sh_elf_relocate_section (bfd *output_bfd
 			if (!sh_elf_initialize_funcdesc (output_bfd, info, NULL,
 							 offset, sec,
 							 sym->st_value))
-			  return FALSE;
+			  return false;
 			local_funcdesc[r_symndx].offset |= 1;
 		      }
 		  }
@@ -4488,7 +4362,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		       input_section,
 		       (uint64_t) rel->r_offset,
 		       symname);
-		    return FALSE;
+		    return false;
 		  }
 
 		offset = _bfd_elf_section_offset (output_bfd, info,
@@ -4512,7 +4386,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		      (info,
 		       _("cannot emit dynamic relocations in read-only section"),
 		       symname, input_bfd, reloc_section, reloc_offset);
-		    return FALSE;
+		    return false;
 		  }
 
 		offset = _bfd_elf_section_offset (output_bfd, info,
@@ -4589,7 +4463,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		   "%s relocation against external symbol \"%s\""),
 		 input_bfd, input_section, (uint64_t) rel->r_offset,
 		 howto->name, h->root.root.string);
-	      return FALSE;
+	      return false;
 	    }
 	  else
 	    {
@@ -4605,7 +4479,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		    {
 		      if (!sh_elf_initialize_funcdesc (output_bfd, info, h,
 						       offset, NULL, 0))
-			return FALSE;
+			return false;
 		      sh_elf_hash_entry (h)->funcdesc.offset |= 1;
 		    }
 		}
@@ -4621,7 +4495,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		      if (!sh_elf_initialize_funcdesc (output_bfd, info, NULL,
 						       offset, sec,
 						       sym->st_value))
-			return FALSE;
+			return false;
 		      local_funcdesc[r_symndx].offset |= 1;
 		    }
 		}
@@ -4706,7 +4580,7 @@ sh_elf_relocate_section (bfd *output_bfd
 			/* xgettext:c-format */
 			(_("%pB(%pA): offset in relocation for GD->LE translation is too small: %#" PRIx64),
 			 input_bfd, input_section, (uint64_t) offset);
-		      return FALSE;
+		      return false;
 		    }
 
 		  /* Size of GD instructions is 16 or 18.  */
@@ -4795,7 +4669,7 @@ sh_elf_relocate_section (bfd *output_bfd
 			/* xgettext:c-format */
 			(_("%pB(%pA): offset in relocation for IE->LE translation is too small: %#" PRIx64),
 			 input_bfd, input_section, (uint64_t) offset);
-		      return FALSE;
+		      return false;
 		    }
 
 		  /* Size of IE instructions is 10 or 12.  */
@@ -4944,7 +4818,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		    /* xgettext:c-format */
 		    (_("%pB(%pA): offset in relocation for GD->IE translation is too small: %#" PRIx64),
 		     input_bfd, input_section, (uint64_t) offset);
-		  return FALSE;
+		  return false;
 		}
 
 	      /* Size of GD instructions is 16 or 18.  */
@@ -5012,7 +4886,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		    /* xgettext:c-format */
 		    (_("%pB(%pA): offset in relocation for LD->LE translation is too small: %#" PRIx64),
 		     input_bfd, input_section, (uint64_t) offset);
-		  return FALSE;
+		  return false;
 		}
 
 	      /* Size of LD instructions is 16 or 18.  */
@@ -5101,9 +4975,9 @@ sh_elf_relocate_section (bfd *output_bfd
 	    if (sreloc == NULL)
 	      {
 		sreloc = _bfd_elf_get_dynamic_reloc_section
-		  (input_bfd, input_section, /*rela?*/ TRUE);
+		  (input_bfd, input_section, /*rela?*/ true);
 		if (sreloc == NULL)
-		  return FALSE;
+		  return false;
 	      }
 
 	    if (h == NULL || h->dynindx == -1)
@@ -5138,14 +5012,14 @@ sh_elf_relocate_section (bfd *output_bfd
 		{
 		  info->callbacks->einfo
 		    /* xgettext:c-format */
-		    (_("%X%C: relocation to \"%s\" references a different segment\n"),
+		    (_("%X%H: relocation to \"%s\" references a different segment\n"),
 		     input_bfd, input_section, rel->r_offset, symname);
-		  return FALSE;
+		  return false;
 		}
 	      else
 		info->callbacks->einfo
 		  /* xgettext:c-format */
-		  (_("%C: warning: relocation to \"%s\" references a different segment\n"),
+		  (_("%H: warning: relocation to \"%s\" references a different segment\n"),
 		   input_bfd, input_section, rel->r_offset, symname);
 	    }
 
@@ -5170,7 +5044,7 @@ sh_elf_relocate_section (bfd *output_bfd
 		    name = (bfd_elf_string_from_elf_section
 			    (input_bfd, symtab_hdr->sh_link, sym->st_name));
 		    if (name == NULL)
-		      return FALSE;
+		      return false;
 		    if (*name == '\0')
 		      name = bfd_section_name (sec);
 		  }
@@ -5183,7 +5057,7 @@ sh_elf_relocate_section (bfd *output_bfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This is a version of bfd_generic_get_relocated_section_contents
@@ -5194,7 +5068,7 @@ sh_elf_get_relocated_section_contents (b
 				       struct bfd_link_info *link_info,
 				       struct bfd_link_order *link_order,
 				       bfd_byte *data,
-				       bfd_boolean relocatable,
+				       bool relocatable,
 				       asymbol **symbols)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -5215,6 +5089,13 @@ sh_elf_get_relocated_section_contents (b
 
   symtab_hdr = &elf_symtab_hdr (input_bfd);
 
+  bfd_byte *orig_data = data;
+  if (data == NULL)
+    {
+      data = bfd_malloc (input_section->size);
+      if (data == NULL)
+	return NULL;
+    }
   memcpy (data, elf_section_data (input_section)->this_hdr.contents,
 	  (size_t) input_section->size);
 
@@ -5227,7 +5108,7 @@ sh_elf_get_relocated_section_contents (b
 
       internal_relocs = (_bfd_elf_link_read_relocs
 			 (input_bfd, input_section, NULL,
-			  (Elf_Internal_Rela *) NULL, FALSE));
+			  (Elf_Internal_Rela *) NULL, false));
       if (internal_relocs == NULL)
 	goto error_return;
 
@@ -5270,10 +5151,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,14 +5161,13 @@ 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);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
@@ -5351,36 +5229,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;
@@ -5436,7 +5284,7 @@ sh_elf_optimized_tls_reloc (struct bfd_l
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 sh_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
 		     const Elf_Internal_Rela *relocs)
 {
@@ -5452,16 +5300,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
   sreloc = NULL;
 
   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;
+    return true;
 
   BFD_ASSERT (is_sh_elf (abfd));
 
@@ -5470,7 +5309,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 
   htab = sh_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   rel_end = relocs + sec->reloc_count;
   for (rel = relocs; rel < rel_end; rel++)
@@ -5552,7 +5391,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 	      if (htab->root.dynobj == NULL)
 		htab->root.dynobj = abfd;
 	      if (!create_got_section (htab->root.dynobj, info))
-		return FALSE;
+		return false;
 	      break;
 
 	    default:
@@ -5566,14 +5405,14 @@ sh_elf_check_relocs (bfd *abfd, struct b
 	     Reconstruct it for later use during GC.  */
 	case R_SH_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_SH_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_SH_TLS_IE_32:
@@ -5626,7 +5465,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 		  local_got_refcounts = ((bfd_signed_vma *)
 					 bfd_zalloc (abfd, size));
 		  if (local_got_refcounts == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_refcounts (abfd) = local_got_refcounts;
 		  sh_elf_local_got_type (abfd)
 		    = (char *) (local_got_refcounts + symtab_hdr->sh_info);
@@ -5661,7 +5500,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 		      /* xgettext:c-format */
 		      (_("%pB: `%s' accessed both as normal and thread local symbol"),
 		       abfd, h->root.root.string);
-		  return FALSE;
+		  return false;
 		}
 	    }
 
@@ -5687,7 +5526,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 	      _bfd_error_handler
 		(_("%pB: Function descriptor relocation with non-zero addend"),
 		 abfd);
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (h == NULL)
@@ -5703,7 +5542,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 		  size = symtab_hdr->sh_info * sizeof (union gotref);
 		  local_funcdesc = (union gotref *) bfd_zalloc (abfd, size);
 		  if (local_funcdesc == NULL)
-		    return FALSE;
+		    return false;
 		  sh_elf_local_funcdesc (abfd) = local_funcdesc;
 		}
 	      local_funcdesc[r_symndx].refcount += 1;
@@ -5830,16 +5669,16 @@ sh_elf_check_relocs (bfd *abfd, struct b
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->root.dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, htab->root.dynobj, 2, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* 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,10 +5686,10 @@ 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;
+		    return false;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
@@ -5863,10 +5702,10 @@ 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;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -5894,7 +5733,7 @@ sh_elf_check_relocs (bfd *abfd, struct b
 	      _bfd_error_handler
 		(_("%pB: TLS local exec code cannot be linked into shared objects"),
 		 abfd);
-	      return FALSE;
+	      return false;
 	    }
 
 	  break;
@@ -5908,26 +5747,26 @@ sh_elf_check_relocs (bfd *abfd, struct b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 #ifndef sh_elf_set_mach_from_flags
 static unsigned int sh_ef_bfd_table[] = { EF_SH_BFD_TABLE };
 
-static bfd_boolean
+static bool
 sh_elf_set_mach_from_flags (bfd *abfd)
 {
   flagword flags = elf_elfheader (abfd)->e_flags & EF_SH_MACH_MASK;
 
   if (flags >= ARRAY_SIZE (sh_ef_bfd_table))
-    return FALSE;
+    return false;
 
   if (sh_ef_bfd_table[flags] == 0)
-    return FALSE;
+    return false;
 
   bfd_default_set_arch_mach (abfd, bfd_arch_sh, sh_ef_bfd_table[flags]);
 
-  return TRUE;
+  return true;
 }
 
 
@@ -5955,14 +5794,14 @@ sh_elf_get_flags_from_mach (unsigned lon
 #ifndef sh_elf_copy_private_data
 /* Copy backend specific data from one object module to another */
 
-static bfd_boolean
+static bool
 sh_elf_copy_private_data (bfd * ibfd, bfd * obfd)
 {
   if (! is_sh_elf (ibfd) || ! is_sh_elf (obfd))
-    return TRUE;
+    return true;
 
   if (! _bfd_elf_copy_private_bfd_data (ibfd, obfd))
-    return FALSE;
+    return false;
 
   return sh_elf_set_mach_from_flags (obfd);
 }
@@ -5989,14 +5828,14 @@ sh_find_elf_flags (unsigned int arch_set
    DSP while the other uses FPU - or there is no known architecture
    that fits the requirements then an error is emitted.  */
 
-static bfd_boolean
+static bool
 sh_merge_bfd_arch (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   unsigned int old_arch, new_arch, merged_arch;
 
   if (! _bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   old_arch = sh_get_arch_up_from_bfd_mach (bfd_get_mach (obfd));
   new_arch = sh_get_arch_up_from_bfd_mach (bfd_get_mach (ibfd));
@@ -6013,7 +5852,7 @@ sh_merge_bfd_arch (bfd *ibfd, struct bfd
 	 SH_ARCH_SET_HAS_DSP (new_arch) ? "dsp" : "floating point",
 	 SH_ARCH_SET_HAS_DSP (new_arch) ? "floating point" : "dsp");
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   else if (!SH_VALID_ARCH_SET (merged_arch))
     {
@@ -6024,30 +5863,34 @@ sh_merge_bfd_arch (bfd *ibfd, struct bfd
 	 bfd_printable_name (obfd),
 	 bfd_printable_name (ibfd));
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   bfd_default_set_arch_mach (obfd, bfd_arch_sh,
 			     sh_get_bfd_mach_from_arch_set (merged_arch));
 
-  return TRUE;
+  return true;
 }
 
 /* This routine initialises the elf flags when required and
    calls sh_merge_bfd_arch() to check dsp/fpu compatibility.  */
 
-static bfd_boolean
+static bool
 sh_elf_merge_private_data (bfd *ibfd, struct bfd_link_info *info)
 {
   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;
+    return true;
 
   if (! elf_flags_init (obfd))
     {
       /* This happens when ld starts out with a 'blank' output file.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
       sh_elf_set_mach_from_flags (obfd);
       if (elf_elfheader (obfd)->e_flags & EF_SH_FDPIC)
@@ -6060,7 +5903,7 @@ sh_elf_merge_private_data (bfd *ibfd, st
 			    "with instructions used in previous modules"),
 			  ibfd);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   elf_elfheader (obfd)->e_flags &= ~EF_SH_MACH_MASK;
@@ -6072,10 +5915,10 @@ sh_elf_merge_private_data (bfd *ibfd, st
       _bfd_error_handler (_("%pB: attempt to mix FDPIC and non-FDPIC objects"),
 			  ibfd);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 #endif /* not sh_elf_merge_private_data */
 
@@ -6083,11 +5926,11 @@ sh_elf_merge_private_data (bfd *ibfd, st
    as the specific tdata.  We set also the machine architecture from flags
    here.  */
 
-static bfd_boolean
+static bool
 sh_elf_object_p (bfd *abfd)
 {
   if (! sh_elf_set_mach_from_flags (abfd))
-    return FALSE;
+    return false;
 
   return (((elf_elfheader (abfd)->e_flags & EF_SH_FDPIC) != 0)
 	  == fdpic_object_p (abfd));
@@ -6096,7 +5939,7 @@ sh_elf_object_p (bfd *abfd)
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 sh_elf_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
 			      struct elf_link_hash_entry *h,
 			      Elf_Internal_Sym *sym)
@@ -6104,8 +5947,6 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
   struct elf_sh_link_hash_table *htab;
 
   htab = sh_elf_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   if (h->plt.offset != (bfd_vma) -1)
     {
@@ -6173,7 +6014,7 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
 	      BFD_ASSERT (r == bfd_reloc_ok);
 	    }
 	  else
-	    install_plt_field (output_bfd, FALSE, got_offset,
+	    install_plt_field (output_bfd, false, got_offset,
 			       (splt->contents
 				+ h->plt.offset
 				+ plt_info->symbol_fields.got_entry));
@@ -6182,14 +6023,14 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
 	{
 	  BFD_ASSERT (!plt_info->symbol_fields.got20);
 
-	  install_plt_field (output_bfd, FALSE,
+	  install_plt_field (output_bfd, false,
 			     (sgotplt->output_section->vma
 			      + sgotplt->output_offset
 			      + got_offset),
 			     (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;
@@ -6221,7 +6062,7 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
 			   + plt_info->symbol_fields.plt));
 	    }
 	  else
-	    install_plt_field (output_bfd, TRUE,
+	    install_plt_field (output_bfd, true,
 			       splt->output_section->vma + splt->output_offset,
 			       (splt->contents
 				+ h->plt.offset
@@ -6237,7 +6078,7 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
 	got_offset = plt_index * 8;
 
       if (plt_info->symbol_fields.reloc_offset != MINUS_ONE)
-	install_plt_field (output_bfd, FALSE,
+	install_plt_field (output_bfd, false,
 			   plt_index * sizeof (Elf32_External_Rela),
 			   (splt->contents
 			    + h->plt.offset
@@ -6270,7 +6111,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.  */
@@ -6333,6 +6174,8 @@ sh_elf_finish_dynamic_symbol (bfd *outpu
 	 The entry in the global offset table will already have been
 	 initialized in the relocate_section function.  */
       if (bfd_link_pic (info)
+	  && (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
 	  && SYMBOL_REFERENCES_LOCAL (info, h))
 	{
 	  if (htab->fdpic_p)
@@ -6393,15 +6236,15 @@ 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;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 sh_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   struct elf_sh_link_hash_table *htab;
@@ -6410,7 +6253,7 @@ sh_elf_finish_dynamic_sections (bfd *out
 
   htab = sh_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   sgotplt = htab->root.sgotplt;
   sdyn = bfd_get_linker_section (htab->root.dynobj, ".dynamic");
@@ -6434,7 +6277,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;
@@ -6448,15 +6291,13 @@ sh_elf_finish_dynamic_sections (bfd *out
 	      break;
 
 	    case DT_JMPREL:
-	      s = htab->root.srelplt->output_section;
-	      BFD_ASSERT (s != NULL);
-	      dyn.d_un.d_ptr = s->vma;
+	      s = htab->root.srelplt;
+	      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->output_section;
-	      BFD_ASSERT (s != NULL);
+	      s = htab->root.srelplt;
 	      dyn.d_un.d_val = s->size;
 	      bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
@@ -6474,14 +6315,14 @@ sh_elf_finish_dynamic_sections (bfd *out
 		  htab->plt_info->plt0_entry_size);
 	  for (i = 0; i < ARRAY_SIZE (htab->plt_info->plt0_got_fields); i++)
 	    if (htab->plt_info->plt0_got_fields[i] != MINUS_ONE)
-	      install_plt_field (output_bfd, FALSE,
+	      install_plt_field (output_bfd, false,
 				 (sgotplt->output_section->vma
 				  + sgotplt->output_offset
 				  + (i * 4)),
 				 (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;
@@ -6564,7 +6405,7 @@ sh_elf_finish_dynamic_sections (bfd *out
     BFD_ASSERT (htab->root.srelgot->reloc_count * sizeof (Elf32_External_Rela)
 		== htab->root.srelgot->size);
 
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -6588,7 +6429,7 @@ sh_elf_reloc_type_class (const struct bf
 #if !defined SH_TARGET_ALREADY_DEFINED
 /* Support for Linux core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf32_shlin_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -6597,7 +6438,7 @@ elf32_shlin_grok_prstatus (bfd *abfd, El
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 168:		/* Linux/SH */
 	/* pr_cursig */
@@ -6618,13 +6459,13 @@ elf32_shlin_grok_prstatus (bfd *abfd, El
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf32_shlin_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 124:		/* Linux/SH elf_prpsinfo */
 	elf_tdata (abfd)->core->program
@@ -6645,7 +6486,7 @@ elf32_shlin_grok_psinfo (bfd *abfd, Elf_
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 #endif /* not SH_TARGET_ALREADY_DEFINED */
 
@@ -6666,7 +6507,7 @@ sh_elf_plt_sym_val (bfd_vma i, const ase
 /* Decide whether to attempt to turn absptr or lsda encodings in
    shared libraries into pcrel within the given input section.  */
 
-static bfd_boolean
+static bool
 sh_elf_use_relative_eh_frame (bfd *input_bfd ATTRIBUTE_UNUSED,
 			      struct bfd_link_info *info,
 			      asection *eh_frame_section ATTRIBUTE_UNUSED)
@@ -6675,9 +6516,9 @@ sh_elf_use_relative_eh_frame (bfd *input
 
   /* We can't use PC-relative encodings in FDPIC binaries, in general.  */
   if (htab->fdpic_p)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust the contents of an eh_frame_hdr section before they're output.  */
@@ -6759,10 +6600,8 @@ sh_elf_encode_eh_address (bfd *abfd,
 					sh_elf_link_hash_table_create
 #define elf_backend_adjust_dynamic_symbol \
 					sh_elf_adjust_dynamic_symbol
-#define elf_backend_always_size_sections \
-					sh_elf_always_size_sections
-#define elf_backend_size_dynamic_sections \
-					sh_elf_size_dynamic_sections
+#define elf_backend_early_size_sections	sh_elf_early_size_sections
+#define elf_backend_late_size_sections	sh_elf_late_size_sections
 #define elf_backend_omit_section_dynsym	sh_elf_omit_section_dynsym
 #define elf_backend_finish_dynamic_symbol \
 					sh_elf_finish_dynamic_symbol
@@ -6786,7 +6625,7 @@ sh_elf_encode_eh_address (bfd *abfd,
 #define elf_backend_got_header_size	12
 #define elf_backend_dtrel_excludes_plt	1
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #if !defined SH_TARGET_ALREADY_DEFINED
 
@@ -6882,6 +6721,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.20200303/bfd/elf32-sh-relocs.h ./bfd/elf32-sh-relocs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-sh-relocs.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-sh-relocs.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -20,25 +20,25 @@
 /* No relocation.  */
   HOWTO (R_SH_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit absolute relocation.  Setting partial_inplace to TRUE and
      src_mask to a non-zero value is similar to the COFF toolchain.  */
   HOWTO (R_SH_DIR32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 SH_ELF_RELOC,		/* special_function */
@@ -46,14 +46,14 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit PC relative relocation.  */
   HOWTO (R_SH_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
@@ -61,150 +61,150 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit PC relative branch divided by 2.  */
   HOWTO (R_SH_DIR8WPN,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_DIR8WPN",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 12 bit PC relative branch divided by 2.  */
   /* This cannot be partial_inplace because relaxation can't know the
      eventual value of a symbol.  */
   HOWTO (R_SH_IND12W,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 12,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_SH_IND12W",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit unsigned PC relative divided by 4.  */
   HOWTO (R_SH_DIR8WPL,		/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_DIR8WPL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit unsigned PC relative divided by 2.  */
   HOWTO (R_SH_DIR8WPZ,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_DIR8WPZ",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit GBR relative.  FIXME: This only makes sense if we have some
      special symbol for the GBR relative area, and that is not
      implemented.  */
   HOWTO (R_SH_DIR8BP,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_DIR8BP",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit GBR relative divided by 2.  FIXME: This only makes sense if
      we have some special symbol for the GBR relative area, and that
      is not implemented.  */
   HOWTO (R_SH_DIR8W,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_DIR8W",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit GBR relative divided by 4.  FIXME: This only makes sense if
      we have some special symbol for the GBR relative area, and that
      is not implemented.  */
   HOWTO (R_SH_DIR8L,		/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_DIR8L",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
   HOWTO (R_SH_LOOP_START,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_LOOP_START",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 8 bit PC relative divided by 2 - but specified in a very odd way.  */
   HOWTO (R_SH_LOOP_END,		/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_LOOP_END",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xff,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   EMPTY_HOWTO (12),
   EMPTY_HOWTO (13),
@@ -225,83 +225,83 @@
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_SH_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_SH_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_SH_GNU_VTENTRY,     /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_SH_GNU_VTENTRY",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit switch table entry.  This is generated for an expression
      such as ``.word L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_SH_SWITCH8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_SWITCH8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit switch table entry.  This is generated for an expression
      such as ``.word L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_SH_SWITCH16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_SWITCH16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 32 bit switch table entry.  This is generated for an expression
      such as ``.long L1 - L2''.  The offset holds the difference
      between the reloc address and L2.  */
   HOWTO (R_SH_SWITCH32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_SWITCH32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Indicates a .uses pseudo-op.  The compiler will generate .uses
      pseudo-ops when it finds a function call which can be relaxed.
@@ -309,17 +309,17 @@
      which loads the register used in the function call.  */
   HOWTO (R_SH_USES,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_USES",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The assembler will generate this reloc for addresses referred to
      by the register loads associated with USES relocs.  The offset
@@ -327,253 +327,253 @@
      object file.  */
   HOWTO (R_SH_COUNT,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_COUNT",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Indicates an alignment statement.  The offset field is the power
      of 2 to which subsequent portions of the object file must be
      aligned.  */
   HOWTO (R_SH_ALIGN,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_ALIGN",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The assembler will generate this reloc before a block of
      instructions.  A section should be processed as assuming it
      contains data, unless this reloc is seen.  */
   HOWTO (R_SH_CODE,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_CODE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The assembler will generate this reloc after a block of
      instructions when it sees data that is not instructions.  */
   HOWTO (R_SH_DATA,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_DATA",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The assembler generates this reloc for each label within a block
      of instructions.  This permits the linker to avoid swapping
      instructions which are the targets of branches.  */
   HOWTO (R_SH_LABEL,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 sh_elf_ignore_reloc,	/* special_function */
 	 "R_SH_LABEL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The next 12 are only supported via linking in SHC-generated objects.  */
   HOWTO (R_SH_DIR16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR8UL,		/* type */
 	 2,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR8UL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR8UW,		/* type */
 	 1,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR8UW",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR8U,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR8U",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR8SW,		/* type */
 	 1,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR8SW",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR8S,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR8S",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR4UL,		/* type */
 	 2,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 4,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR4UL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0f,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR4UW,		/* type */
 	 1,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 4,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR4UW",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0f,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_DIR4U,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 4,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR4U",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0f,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_PSHA,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_PSHA",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0f,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_PSHL,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 4,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_PSHL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0f,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (45),
   EMPTY_HOWTO (46),
@@ -587,17 +587,17 @@
 
   HOWTO (R_SH_DIR16S,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_DIR16S",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (54),
   EMPTY_HOWTO (55),
@@ -692,9 +692,9 @@
 
   HOWTO (R_SH_TLS_GD_32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* */
@@ -702,13 +702,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_TLS_LD_32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* */
@@ -716,13 +716,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_TLS_LDO_32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* */
@@ -730,13 +730,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_TLS_IE_32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* */
@@ -744,13 +744,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_TLS_LE_32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* */
@@ -758,13 +758,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_TLS_DTPMOD32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* */
@@ -772,13 +772,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_TLS_DTPOFF32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* */
@@ -786,13 +786,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_TLS_TPOFF32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* */
@@ -800,7 +800,7 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (152),
   EMPTY_HOWTO (153),
@@ -813,9 +813,9 @@
 
   HOWTO (R_SH_GOT32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
@@ -823,13 +823,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_PLT32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
@@ -837,13 +837,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_SH_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
@@ -851,13 +851,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_GLOB_DAT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
@@ -865,13 +865,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_JMP_SLOT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
@@ -879,13 +879,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_RELATIVE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
@@ -893,13 +893,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_GOTOFF,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
@@ -907,13 +907,13 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_SH_GOTPC,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
@@ -921,22 +921,22 @@
 	 SH_PARTIAL32,		/* partial_inplace */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_SH_GOTPLT32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_SH_GOTPLT32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 /* ??? Why not 0?  */
 	 SH_SRC_MASK32,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (169),
   EMPTY_HOWTO (170),
@@ -974,123 +974,123 @@
   /* FDPIC-relative offset to a GOT entry, for movi20.  */
   HOWTO (R_SH_GOT20,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 20,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_GOT20",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00f0ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* FDPIC-relative offset to a data object, for movi20.  */
   HOWTO (R_SH_GOTOFF20,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 20,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_GOTOFF20",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00f0ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* FDPIC-relative offset to a GOT entry for a function descriptor.  */
   HOWTO (R_SH_GOTFUNCDESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_GOTFUNCDESC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* FDPIC-relative offset to a GOT entry for a function descriptor,
      for movi20.  */
   HOWTO (R_SH_GOTFUNCDESC20,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 20,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_GOTFUNCDESC20",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00f0ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* FDPIC-relative offset to a function descriptor.  */
   HOWTO (R_SH_GOTOFFFUNCDESC,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_GOTOFFFUNCDESC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* FDPIC-relative offset to a function descriptor, for movi20.  */
   HOWTO (R_SH_GOTOFFFUNCDESC20,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 20,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_GOTOFFFUNCDESC20", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00f0ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Address of an official function descriptor.  */
   HOWTO (R_SH_FUNCDESC,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_FUNCDESC",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Function descriptor to be filled in by the dynamic linker.  */
   HOWTO (R_SH_FUNCDESC_VALUE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_SH_FUNCDESC_VALUE", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 #undef SH_PARTIAL32
 #undef SH_SRC_MASK32
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-sparc.c ./bfd/elf32-sparc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-sparc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-sparc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* SPARC-specific support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -30,13 +30,13 @@
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf32_sparc_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 260:			/* Solaris prpsinfo_t.  */
       elf_tdata (abfd)->core->program
@@ -53,7 +53,7 @@ elf32_sparc_grok_psinfo (bfd *abfd, Elf_
       break;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Functions for dealing with the e_flags field.
@@ -66,25 +66,25 @@ elf32_sparc_grok_psinfo (bfd *abfd, Elf_
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf32_sparc_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
-  bfd_boolean error;
+  bool error;
   unsigned long ibfd_mach;
   /* FIXME: This should not be static.  */
   static unsigned long previous_ibfd_e_flags = (unsigned long) -1;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
-  error = FALSE;
+  error = false;
 
   ibfd_mach = bfd_get_mach (ibfd);
   if (bfd_mach_sparc_64bit_p (ibfd_mach))
     {
-      error = TRUE;
+      error = true;
       _bfd_error_handler
 	(_("%pB: compiled for a 64 bit system and target is 32 bit"), ibfd);
     }
@@ -100,14 +100,14 @@ elf32_sparc_merge_private_bfd_data (bfd
     {
       _bfd_error_handler
 	(_("%pB: linking little endian files with big endian files"), ibfd);
-      error = TRUE;
+      error = true;
     }
   previous_ibfd_e_flags = elf_elfheader (ibfd)->e_flags & EF_SPARC_LEDATA;
 
   if (error)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   return _bfd_sparc_elf_merge_private_bfd_data (ibfd, info);
@@ -121,42 +121,46 @@ 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;
     }
 }
 
-static bfd_boolean
+static bool
 elf32_sparc_final_write_processing (bfd *abfd)
 {
   sparc_final_write_processing (abfd);
@@ -244,8 +248,7 @@ elf32_sparc_reloc_type_class (const stru
 #define elf_backend_adjust_dynamic_symbol \
 					_bfd_sparc_elf_adjust_dynamic_symbol
 #define elf_backend_omit_section_dynsym	_bfd_sparc_elf_omit_section_dynsym
-#define elf_backend_size_dynamic_sections \
-					_bfd_sparc_elf_size_dynamic_sections
+#define elf_backend_late_size_sections	_bfd_sparc_elf_late_size_sections
 #define elf_backend_relocate_section	_bfd_sparc_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol \
 					_bfd_sparc_elf_finish_dynamic_symbol
@@ -267,7 +270,7 @@ elf32_sparc_reloc_type_class (const stru
 #define elf_backend_want_dynrelro 1
 #define elf_backend_rela_normal 1
 
-#define elf_backend_linux_prpsinfo32_ugid16	TRUE
+#define elf_backend_linux_prpsinfo32_ugid16	true
 
 #include "elf32-target.h"
 
@@ -278,7 +281,10 @@ elf32_sparc_reloc_type_class (const stru
 #undef	TARGET_BIG_NAME
 #define	TARGET_BIG_NAME				"elf32-sparc-sol2"
 
-#undef elf32_bed
+#undef  ELF_TARGET_OS
+#define ELF_TARGET_OS				is_solaris
+
+#undef  elf32_bed
 #define elf32_bed				elf32_sparc_sol2_bed
 
 /* The 32-bit static TLS arena size is rounded to the nearest 8-byte
@@ -289,7 +295,7 @@ elf32_sparc_reloc_type_class (const stru
 #undef	elf_backend_strtab_flags
 #define elf_backend_strtab_flags	SHF_STRINGS
 
-static bfd_boolean
+static bool
 elf32_sparc_copy_solaris_special_section_fields (const bfd *ibfd ATTRIBUTE_UNUSED,
 						 bfd *obfd ATTRIBUTE_UNUSED,
 						 const Elf_Internal_Shdr *isection ATTRIBUTE_UNUSED,
@@ -297,7 +303,7 @@ elf32_sparc_copy_solaris_special_section
 {
   /* PR 19938: FIXME: Need to add code for setting the sh_info
      and sh_link fields of Solaris specific section types.  */
-  return FALSE;
+  return false;
 }
 
 #undef  elf_backend_copy_special_section_fields
@@ -305,29 +311,10 @@ 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.  */
 
-static bfd_boolean
+static bool
 elf32_sparc_vxworks_final_write_processing (bfd *abfd)
 {
   sparc_final_write_processing (abfd);
@@ -342,9 +329,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.20200303/bfd/elf32-spu.c ./bfd/elf32-spu.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-spu.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-spu.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* SPU specific support for 32-bit ELF
 
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -40,60 +40,60 @@ static bfd_reloc_status_type spu_elf_rel
    array, so it must be declared in the order of that type.  */
 
 static reloc_howto_type elf_howto_table[] = {
-  HOWTO (R_SPU_NONE,	   0, 3,  0, FALSE,  0, complain_overflow_dont,
+  HOWTO (R_SPU_NONE,	   0, 0,  0, false,  0, complain_overflow_dont,
 	 bfd_elf_generic_reloc, "SPU_NONE",
-	 FALSE, 0, 0x00000000, FALSE),
-  HOWTO (R_SPU_ADDR10,	   4, 2, 10, FALSE, 14, complain_overflow_bitfield,
+	 false, 0, 0x00000000, false),
+  HOWTO (R_SPU_ADDR10,	   4, 4, 10, false, 14, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "SPU_ADDR10",
-	 FALSE, 0, 0x00ffc000, FALSE),
-  HOWTO (R_SPU_ADDR16,	   2, 2, 16, FALSE,  7, complain_overflow_bitfield,
+	 false, 0, 0x00ffc000, false),
+  HOWTO (R_SPU_ADDR16,	   2, 4, 16, false,  7, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "SPU_ADDR16",
-	 FALSE, 0, 0x007fff80, FALSE),
-  HOWTO (R_SPU_ADDR16_HI, 16, 2, 16, FALSE,  7, complain_overflow_bitfield,
+	 false, 0, 0x007fff80, false),
+  HOWTO (R_SPU_ADDR16_HI, 16, 4, 16, false,  7, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "SPU_ADDR16_HI",
-	 FALSE, 0, 0x007fff80, FALSE),
-  HOWTO (R_SPU_ADDR16_LO,  0, 2, 16, FALSE,  7, complain_overflow_dont,
+	 false, 0, 0x007fff80, false),
+  HOWTO (R_SPU_ADDR16_LO,  0, 4, 16, false,  7, complain_overflow_dont,
 	 bfd_elf_generic_reloc, "SPU_ADDR16_LO",
-	 FALSE, 0, 0x007fff80, FALSE),
-  HOWTO (R_SPU_ADDR18,	   0, 2, 18, FALSE,  7, complain_overflow_bitfield,
+	 false, 0, 0x007fff80, false),
+  HOWTO (R_SPU_ADDR18,	   0, 4, 18, false,  7, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "SPU_ADDR18",
-	 FALSE, 0, 0x01ffff80, FALSE),
-  HOWTO (R_SPU_ADDR32,	   0, 2, 32, FALSE,  0, complain_overflow_dont,
+	 false, 0, 0x01ffff80, false),
+  HOWTO (R_SPU_ADDR32,	   0, 4, 32, false,  0, complain_overflow_dont,
 	 bfd_elf_generic_reloc, "SPU_ADDR32",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_SPU_REL16,	   2, 2, 16,  TRUE,  7, complain_overflow_bitfield,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_SPU_REL16,	   2, 4, 16,  true,  7, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "SPU_REL16",
-	 FALSE, 0, 0x007fff80, TRUE),
-  HOWTO (R_SPU_ADDR7,	   0, 2,  7, FALSE, 14, complain_overflow_dont,
+	 false, 0, 0x007fff80, true),
+  HOWTO (R_SPU_ADDR7,	   0, 4,  7, false, 14, complain_overflow_dont,
 	 bfd_elf_generic_reloc, "SPU_ADDR7",
-	 FALSE, 0, 0x001fc000, FALSE),
-  HOWTO (R_SPU_REL9,	   2, 2,  9,  TRUE,  0, complain_overflow_signed,
+	 false, 0, 0x001fc000, false),
+  HOWTO (R_SPU_REL9,	   2, 4,  9,  true,  0, complain_overflow_signed,
 	 spu_elf_rel9,		"SPU_REL9",
-	 FALSE, 0, 0x0180007f, TRUE),
-  HOWTO (R_SPU_REL9I,	   2, 2,  9,  TRUE,  0, complain_overflow_signed,
+	 false, 0, 0x0180007f, true),
+  HOWTO (R_SPU_REL9I,	   2, 4,  9,  true,  0, complain_overflow_signed,
 	 spu_elf_rel9,		"SPU_REL9I",
-	 FALSE, 0, 0x0000c07f, TRUE),
-  HOWTO (R_SPU_ADDR10I,	   0, 2, 10, FALSE, 14, complain_overflow_signed,
+	 false, 0, 0x0000c07f, true),
+  HOWTO (R_SPU_ADDR10I,	   0, 4, 10, false, 14, complain_overflow_signed,
 	 bfd_elf_generic_reloc, "SPU_ADDR10I",
-	 FALSE, 0, 0x00ffc000, FALSE),
-  HOWTO (R_SPU_ADDR16I,	   0, 2, 16, FALSE,  7, complain_overflow_signed,
+	 false, 0, 0x00ffc000, false),
+  HOWTO (R_SPU_ADDR16I,	   0, 4, 16, false,  7, complain_overflow_signed,
 	 bfd_elf_generic_reloc, "SPU_ADDR16I",
-	 FALSE, 0, 0x007fff80, FALSE),
-  HOWTO (R_SPU_REL32,	   0, 2, 32, TRUE,  0, complain_overflow_dont,
+	 false, 0, 0x007fff80, false),
+  HOWTO (R_SPU_REL32,	   0, 4, 32, true,  0, complain_overflow_dont,
 	 bfd_elf_generic_reloc, "SPU_REL32",
-	 FALSE, 0, 0xffffffff, TRUE),
-  HOWTO (R_SPU_ADDR16X,	   0, 2, 16, FALSE,  7, complain_overflow_bitfield,
+	 false, 0, 0xffffffff, true),
+  HOWTO (R_SPU_ADDR16X,	   0, 4, 16, false,  7, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "SPU_ADDR16X",
-	 FALSE, 0, 0x007fff80, FALSE),
-  HOWTO (R_SPU_PPU32,	   0, 2, 32, FALSE,  0, complain_overflow_dont,
+	 false, 0, 0x007fff80, false),
+  HOWTO (R_SPU_PPU32,	   0, 4, 32, false,  0, complain_overflow_dont,
 	 bfd_elf_generic_reloc, "SPU_PPU32",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_SPU_PPU64,	   0, 4, 64, FALSE,  0, complain_overflow_dont,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_SPU_PPU64,	   0, 8, 64, false,  0, complain_overflow_dont,
 	 bfd_elf_generic_reloc, "SPU_PPU64",
-	 FALSE, 0, -1, FALSE),
-  HOWTO (R_SPU_ADD_PIC,	     0, 0, 0, FALSE,  0, complain_overflow_dont,
+	 false, 0, -1, false),
+  HOWTO (R_SPU_ADD_PIC,	   0, 0,  0, false,  0, complain_overflow_dont,
 	 bfd_elf_generic_reloc, "SPU_ADD_PIC",
-	 FALSE, 0, 0x00000000, FALSE),
+	 false, 0, 0x00000000, false),
 };
 
 static struct bfd_elf_special_section const spu_elf_special_sections[] = {
@@ -148,7 +148,7 @@ spu_elf_bfd_to_reloc_type (bfd_reloc_cod
     }
 }
 
-static bfd_boolean
+static bool
 spu_elf_info_to_howto (bfd *abfd,
 		       arelent *cache_ptr,
 		       Elf_Internal_Rela *dst)
@@ -163,10 +163,10 @@ spu_elf_info_to_howto (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_howto_table[(int) r_type];
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type *
@@ -244,25 +244,22 @@ spu_elf_rel9 (bfd *abfd, arelent *reloc_
   return bfd_reloc_ok;
 }
 
-static bfd_boolean
+static bool
 spu_elf_new_section_hook (bfd *abfd, asection *sec)
 {
-  if (!sec->used_by_bfd)
-    {
-      struct _spu_elf_section_data *sdata;
+  struct _spu_elf_section_data *sdata;
 
-      sdata = bfd_zalloc (abfd, sizeof (*sdata));
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
 
 /* Set up overlay info for executables.  */
 
-static bfd_boolean
+static bool
 spu_elf_object_p (bfd *abfd)
 {
   if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
@@ -286,7 +283,8 @@ spu_elf_object_p (bfd *abfd)
 	      {
 		Elf_Internal_Shdr *shdr = elf_elfsections (abfd)[j];
 
-		if (ELF_SECTION_SIZE (shdr, phdr) != 0
+		if (shdr->bfd_section != NULL
+		    && ELF_SECTION_SIZE (shdr, phdr) != 0
 		    && ELF_SECTION_IN_SEGMENT (shdr, phdr))
 		  {
 		    asection *sec = shdr->bfd_section;
@@ -296,7 +294,7 @@ spu_elf_object_p (bfd *abfd)
 	      }
 	  }
     }
-  return TRUE;
+  return true;
 }
 
 /* Specially mark defined symbols named _EAR_* with BSF_KEEP so that
@@ -307,7 +305,7 @@ spu_elf_backend_symbol_processing (bfd *
 {
   if (sym->name != NULL
       && sym->section != bfd_abs_section_ptr
-      && strncmp (sym->name, "_EAR_", 5) == 0)
+      && startswith (sym->name, "_EAR_"))
     sym->flags |= BSF_KEEP;
 }
 
@@ -371,8 +369,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
 {
@@ -459,8 +458,7 @@ spu_elf_link_hash_table_create (bfd *abf
 
   if (!_bfd_elf_link_hash_table_init (&htab->elf, abfd,
 				      _bfd_elf_link_hash_newfunc,
-				      sizeof (struct elf_link_hash_entry),
-				      SPU_ELF_DATA))
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (htab);
       return NULL;
@@ -494,7 +492,7 @@ spu_elf_setup (struct bfd_link_info *inf
    to (hash, NULL) for global symbols, and (NULL, sym) for locals.  Set
    *SYMSECP to the symbol's section.  *LOCSYMSP caches local syms.  */
 
-static bfd_boolean
+static bool
 get_sym_h (struct elf_link_hash_entry **hp,
 	   Elf_Internal_Sym **symp,
 	   asection **symsecp,
@@ -542,7 +540,7 @@ get_sym_h (struct elf_link_hash_entry **
 					    symtab_hdr->sh_info,
 					    0, NULL, NULL, NULL);
 	  if (locsyms == NULL)
-	    return FALSE;
+	    return false;
 	  *locsymsp = locsyms;
 	}
       sym = locsyms + r_symndx;
@@ -557,13 +555,13 @@ get_sym_h (struct elf_link_hash_entry **
 	*symsecp = bfd_section_from_elf_index (ibfd, sym->st_shndx);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create the note section if not already present.  This is done early so
    that the linker maps the sections to the right place in the output.  */
 
-bfd_boolean
+bool
 spu_elf_create_sections (struct bfd_link_info *info)
 {
   struct spu_link_hash_table *htab = spu_hash_table (info);
@@ -589,7 +587,7 @@ spu_elf_create_sections (struct bfd_link
       s = bfd_make_section_anyway_with_flags (ibfd, SPU_PTNOTE_SPUNAME, flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 4))
-	return FALSE;
+	return false;
       /* Because we didn't set SEC_LINKER_CREATED we need to set the
 	 proper section type.  */
       elf_section_type (s) = SHT_NOTE;
@@ -599,11 +597,11 @@ spu_elf_create_sections (struct bfd_link
       size += (name_len + 3) & -4;
 
       if (!bfd_set_section_size (s, size))
-	return FALSE;
+	return false;
 
       data = bfd_zalloc (ibfd, size);
       if (data == NULL)
-	return FALSE;
+	return false;
 
       bfd_put_32 (ibfd, sizeof (SPU_PLUGIN_NAME), data + 0);
       bfd_put_32 (ibfd, name_len, data + 4);
@@ -612,6 +610,7 @@ spu_elf_create_sections (struct bfd_link
       memcpy (data + 12 + ((sizeof (SPU_PLUGIN_NAME) + 3) & -4),
 	      bfd_get_filename (info->output_bfd), name_len);
       s->contents = data;
+      s->alloced = 1;
     }
 
   if (htab->params->emit_fixups)
@@ -626,11 +625,11 @@ spu_elf_create_sections (struct bfd_link
 	       | SEC_IN_MEMORY | SEC_LINKER_CREATED);
       s = bfd_make_section_anyway_with_flags (ibfd, ".fixup", flags);
       if (s == NULL || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
       htab->sfixup = s;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* qsort predicate to sort sections by vma.  */
@@ -724,7 +723,7 @@ spu_elf_find_overlays (struct bfd_link_i
 	     an overlay, in the sense that it might be loaded in
 	     by the overlay manager, but rather the initial
 	     section contents for the overlay buffer.  */
-	  if (strncmp (s->name, ".ovl.init", 9) != 0)
+	  if (!startswith (s->name, ".ovl.init"))
 	    {
 	      num_buf = ((s->vma - vma_start) >> htab->line_size_log2) + 1;
 	      set_id = (num_buf == prev_buf)? set_id + 1 : 0;
@@ -784,7 +783,7 @@ spu_elf_find_overlays (struct bfd_link_i
 	      if (spu_elf_section_data (s0)->u.o.ovl_index == 0)
 		{
 		  ++num_buf;
-		  if (strncmp (s0->name, ".ovl.init", 9) != 0)
+		  if (!startswith (s0->name, ".ovl.init"))
 		    {
 		      alloc_sec[ovl_index] = s0;
 		      spu_elf_section_data (s0)->u.o.ovl_index = ++ovl_index;
@@ -793,7 +792,7 @@ spu_elf_find_overlays (struct bfd_link_i
 		  else
 		    ovl_end = s->vma + s->size;
 		}
-	      if (strncmp (s->name, ".ovl.init", 9) != 0)
+	      if (!startswith (s->name, ".ovl.init"))
 		{
 		  alloc_sec[ovl_index] = s;
 		  spu_elf_section_data (s)->u.o.ovl_index = ++ovl_index;
@@ -830,7 +829,7 @@ spu_elf_find_overlays (struct bfd_link_i
       struct elf_link_hash_entry *h;
 
       name = entry_names[i][htab->params->ovly_flavour];
-      h = elf_link_hash_lookup (&htab->elf, name, TRUE, FALSE, FALSE);
+      h = elf_link_hash_lookup (&htab->elf, name, true, false, false);
       if (h == NULL)
 	return 0;
 
@@ -868,7 +867,7 @@ spu_elf_find_overlays (struct bfd_link_i
    brhz  00100010 0..
    brhnz 00100011 0..  */
 
-static bfd_boolean
+static bool
 is_branch (const unsigned char *insn)
 {
   return (insn[0] & 0xec) == 0x20 && (insn[1] & 0x80) == 0;
@@ -884,7 +883,7 @@ is_branch (const unsigned char *insn)
    bihz   00100101 010
    bihnz  00100101 011  */
 
-static bfd_boolean
+static bool
 is_indirect_branch (const unsigned char *insn)
 {
   return (insn[0] & 0xef) == 0x25 && (insn[1] & 0x80) == 0;
@@ -894,7 +893,7 @@ is_indirect_branch (const unsigned char
    hbra  0001000..
    hbrr  0001001..  */
 
-static bfd_boolean
+static bool
 is_hint (const unsigned char *insn)
 {
   return (insn[0] & 0xfc) == 0x10;
@@ -902,22 +901,22 @@ is_hint (const unsigned char *insn)
 
 /* True if INPUT_SECTION might need overlay stubs.  */
 
-static bfd_boolean
+static bool
 maybe_needs_stubs (asection *input_section)
 {
   /* No stubs for debug sections and suchlike.  */
   if ((input_section->flags & SEC_ALLOC) == 0)
-    return FALSE;
+    return false;
 
   /* No stubs for link-once sections that will be discarded.  */
   if (input_section->output_section == bfd_abs_section_ptr)
-    return FALSE;
+    return false;
 
   /* Don't create stubs for .eh_frame references.  */
   if (strcmp (input_section->name, ".eh_frame") == 0)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 enum _stub_type
@@ -951,7 +950,7 @@ needs_ovl_stub (struct elf_link_hash_ent
   struct spu_link_hash_table *htab = spu_hash_table (info);
   enum elf_spu_reloc_type r_type;
   unsigned int sym_type;
-  bfd_boolean branch, hint, call;
+  bool branch, hint, call;
   enum _stub_type ret = no_stub;
   bfd_byte insn[4];
 
@@ -969,7 +968,7 @@ needs_ovl_stub (struct elf_link_hash_ent
       /* setjmp always goes via an overlay stub, because then the return
 	 and hence the longjmp goes via __ovly_return.  That magically
 	 makes setjmp/longjmp between overlays work.  */
-      if (strncmp (h->root.root.string, "setjmp", 6) == 0
+      if (startswith (h->root.root.string, "setjmp")
 	  && (h->root.root.string[6] == '\0' || h->root.root.string[6] == '@'))
 	ret = call_ovl_stub;
     }
@@ -980,9 +979,9 @@ needs_ovl_stub (struct elf_link_hash_ent
     sym_type = ELF_ST_TYPE (sym->st_info);
 
   r_type = ELF32_R_TYPE (irela->r_info);
-  branch = FALSE;
-  hint = FALSE;
-  call = FALSE;
+  branch = false;
+  hint = false;
+  call = false;
   if (r_type == R_SPU_REL16 || r_type == R_SPU_ADDR16)
     {
       if (contents == NULL)
@@ -1071,7 +1070,7 @@ needs_ovl_stub (struct elf_link_hash_ent
   return ret;
 }
 
-static bfd_boolean
+static bool
 count_stub (struct spu_link_hash_table *htab,
 	    bfd *ibfd,
 	    asection *isec,
@@ -1101,7 +1100,7 @@ count_stub (struct spu_link_hash_table *
 			       * sizeof (*elf_local_got_ents (ibfd)));
 	  elf_local_got_ents (ibfd) = bfd_zmalloc (amt);
 	  if (elf_local_got_ents (ibfd) == NULL)
-	    return FALSE;
+	    return false;
 	}
       head = elf_local_got_ents (ibfd) + ELF32_R_SYM (irela->r_info);
     }
@@ -1109,7 +1108,7 @@ count_stub (struct spu_link_hash_table *
   if (htab->params->ovly_flavour == ovly_soft_icache)
     {
       htab->stub_count[ovl] += 1;
-      return TRUE;
+      return true;
     }
 
   addend = 0;
@@ -1149,7 +1148,7 @@ count_stub (struct spu_link_hash_table *
     {
       g = bfd_malloc (sizeof *g);
       if (g == NULL)
-	return FALSE;
+	return false;
       g->ovl = ovl;
       g->addend = addend;
       g->stub_addr = (bfd_vma) -1;
@@ -1159,7 +1158,7 @@ count_stub (struct spu_link_hash_table *
       htab->stub_count[ovl] += 1;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Support two sizes of overlay stubs, a slower more compact stub of two
@@ -1202,7 +1201,7 @@ ovl_stub_size_log2 (struct spu_elf_param
    .quad xor_pattern
 */
 
-static bfd_boolean
+static bool
 build_stub (struct bfd_link_info *info,
 	    bfd *ibfd,
 	    asection *isec,
@@ -1236,7 +1235,7 @@ build_stub (struct bfd_link_info *info,
     {
       g = bfd_malloc (sizeof *g);
       if (g == NULL)
-	return FALSE;
+	return false;
       g->ovl = ovl;
       g->br_addr = 0;
       if (irela != NULL)
@@ -1255,10 +1254,10 @@ build_stub (struct bfd_link_info *info,
 	abort ();
 
       if (g->ovl == 0 && ovl != 0)
-	return TRUE;
+	return true;
 
       if (g->stub_addr != (bfd_vma) -1)
-	return TRUE;
+	return true;
     }
 
   sec = htab->stub_sec[ovl];
@@ -1272,7 +1271,7 @@ build_stub (struct bfd_link_info *info,
   if (((dest | to | from) & 3) != 0)
     {
       htab->stub_err = 1;
-      return FALSE;
+      return false;
     }
   dest_ovl = spu_elf_section_data (dest_sec->output_section)->u.o.ovl_index;
 
@@ -1446,7 +1445,7 @@ build_stub (struct bfd_link_info *info,
 	len += 1 + 8;
       name = bfd_malloc (len + 1);
       if (name == NULL)
-	return FALSE;
+	return false;
 
       sprintf (name, "%08x.ovl_call.", g->ovl);
       if (h != NULL)
@@ -1458,10 +1457,10 @@ build_stub (struct bfd_link_info *info,
       if (add != 0)
 	sprintf (name + len - 9, "+%x", add);
 
-      h = elf_link_hash_lookup (&htab->elf, name, TRUE, TRUE, FALSE);
+      h = elf_link_hash_lookup (&htab->elf, name, true, true, false);
       free (name);
       if (h == NULL)
-	return FALSE;
+	return false;
       if (h->root.type == bfd_link_hash_new)
 	{
 	  h->root.type = bfd_link_hash_defined;
@@ -1477,13 +1476,13 @@ build_stub (struct bfd_link_info *info,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Called via elf_link_hash_traverse to allocate stubs for any _SPUEAR_
    symbols.  */
 
-static bfd_boolean
+static bool
 allocate_spuear_stubs (struct elf_link_hash_entry *h, void *inf)
 {
   /* Symbols starting with _SPUEAR_ need a stub because they may be
@@ -1495,7 +1494,7 @@ allocate_spuear_stubs (struct elf_link_h
   if ((h->root.type == bfd_link_hash_defined
        || h->root.type == bfd_link_hash_defweak)
       && h->def_regular
-      && strncmp (h->root.root.string, "_SPUEAR_", 8) == 0
+      && startswith (h->root.root.string, "_SPUEAR_")
       && (sym_sec = h->root.u.def.section) != NULL
       && sym_sec->output_section != bfd_abs_section_ptr
       && spu_elf_section_data (sym_sec->output_section) != NULL
@@ -1505,10 +1504,10 @@ allocate_spuear_stubs (struct elf_link_h
       return count_stub (htab, NULL, NULL, nonovl_stub, h, NULL);
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 build_spuear_stubs (struct elf_link_hash_entry *h, void *inf)
 {
   /* Symbols starting with _SPUEAR_ need a stub because they may be
@@ -1520,7 +1519,7 @@ build_spuear_stubs (struct elf_link_hash
   if ((h->root.type == bfd_link_hash_defined
        || h->root.type == bfd_link_hash_defweak)
       && h->def_regular
-      && strncmp (h->root.root.string, "_SPUEAR_", 8) == 0
+      && startswith (h->root.root.string, "_SPUEAR_")
       && (sym_sec = h->root.u.def.section) != NULL
       && sym_sec->output_section != bfd_abs_section_ptr
       && spu_elf_section_data (sym_sec->output_section) != NULL
@@ -1531,13 +1530,13 @@ build_spuear_stubs (struct elf_link_hash
 			 h->root.u.def.value, sym_sec);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Size or build stubs.  */
 
-static bfd_boolean
-process_stubs (struct bfd_link_info *info, bfd_boolean build)
+static bool
+process_stubs (struct bfd_link_info *info, bool build)
 {
   struct spu_link_hash_table *htab = spu_hash_table (info);
   bfd *ibfd;
@@ -1598,11 +1597,9 @@ 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;
+		  return false;
 		}
 
 	      /* Determine the reloc target section.  */
@@ -1660,7 +1657,7 @@ process_stubs (struct bfd_link_info *inf
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space for overlay call and return stubs.
@@ -1676,7 +1673,7 @@ spu_elf_size_stubs (struct bfd_link_info
   unsigned int i;
   asection *stub;
 
-  if (!process_stubs (info, FALSE))
+  if (!process_stubs (info, false))
     return 0;
 
   htab = spu_hash_table (info);
@@ -1862,7 +1859,7 @@ ovl_mgr_stat (struct bfd *abfd ATTRIBUTE
   return 0;
 }
 
-bfd_boolean
+bool
 spu_elf_open_builtin_lib (bfd **ovl_bfd, const struct _ovl_stream *stream)
 {
   *ovl_bfd = bfd_openr_iovec ("builtin ovl_mgr",
@@ -1891,7 +1888,7 @@ define_ovtab_symbol (struct spu_link_has
 {
   struct elf_link_hash_entry *h;
 
-  h = elf_link_hash_lookup (&htab->elf, name, TRUE, FALSE, FALSE);
+  h = elf_link_hash_lookup (&htab->elf, name, true, false, false);
   if (h == NULL)
     return NULL;
 
@@ -1928,7 +1925,7 @@ define_ovtab_symbol (struct spu_link_has
 
 /* Fill in all stubs and the overlay tables.  */
 
-static bfd_boolean
+static bool
 spu_elf_build_stubs (struct bfd_link_info *info)
 {
   struct spu_link_hash_table *htab = spu_hash_table (info);
@@ -1954,7 +1951,7 @@ spu_elf_build_stubs (struct bfd_link_inf
 		  _bfd_error_handler (_("%s in overlay section"),
 				      h->root.root.string);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	    }
 	}
@@ -1968,13 +1965,14 @@ spu_elf_build_stubs (struct bfd_link_inf
 	    htab->stub_sec[i]->contents = bfd_zalloc (htab->stub_sec[i]->owner,
 						      htab->stub_sec[i]->size);
 	    if (htab->stub_sec[i]->contents == NULL)
-	      return FALSE;
+	      return false;
+	    htab->stub_sec[i]->alloced = 1;
 	    htab->stub_sec[i]->rawsize = htab->stub_sec[i]->size;
 	    htab->stub_sec[i]->size = 0;
 	  }
 
       /* Fill in all the stubs.  */
-      process_stubs (info, TRUE);
+      process_stubs (info, true);
       if (!htab->stub_err)
 	elf_link_hash_traverse (&htab->elf, build_spuear_stubs, info);
 
@@ -1982,7 +1980,7 @@ spu_elf_build_stubs (struct bfd_link_inf
 	{
 	  _bfd_error_handler (_("overlay stub relocation overflow"));
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       for (i = 0; i <= htab->num_overlays; i++)
@@ -1991,18 +1989,19 @@ spu_elf_build_stubs (struct bfd_link_inf
 	    {
 	      _bfd_error_handler  (_("stubs don't match calculated size"));
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  htab->stub_sec[i]->rawsize = 0;
 	}
     }
 
   if (htab->ovtab == NULL || htab->ovtab->size == 0)
-    return TRUE;
+    return true;
 
   htab->ovtab->contents = bfd_zalloc (htab->ovtab->owner, htab->ovtab->size);
   if (htab->ovtab->contents == NULL)
-    return FALSE;
+    return false;
+  htab->ovtab->alloced = 1;
 
   p = htab->ovtab->contents;
   if (htab->params->ovly_flavour == ovly_soft_icache)
@@ -2011,90 +2010,90 @@ spu_elf_build_stubs (struct bfd_link_inf
 
       h = define_ovtab_symbol (htab, "__icache_tag_array");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = 0;
       h->size = 16 << htab->num_lines_log2;
       off = h->size;
 
       h = define_ovtab_symbol (htab, "__icache_tag_array_size");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = 16 << htab->num_lines_log2;
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_rewrite_to");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = off;
       h->size = 16 << htab->num_lines_log2;
       off += h->size;
 
       h = define_ovtab_symbol (htab, "__icache_rewrite_to_size");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = 16 << htab->num_lines_log2;
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_rewrite_from");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = off;
       h->size = 16 << (htab->fromelem_size_log2 + htab->num_lines_log2);
       off += h->size;
 
       h = define_ovtab_symbol (htab, "__icache_rewrite_from_size");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = 16 << (htab->fromelem_size_log2
 				   + htab->num_lines_log2);
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_log2_fromelemsize");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = htab->fromelem_size_log2;
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_base");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = htab->ovl_sec[0]->vma;
       h->root.u.def.section = bfd_abs_section_ptr;
       h->size = htab->num_buf << htab->line_size_log2;
 
       h = define_ovtab_symbol (htab, "__icache_linesize");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = 1 << htab->line_size_log2;
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_log2_linesize");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = htab->line_size_log2;
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_neg_log2_linesize");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = -htab->line_size_log2;
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_cachesize");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = 1 << (htab->num_lines_log2 + htab->line_size_log2);
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_log2_cachesize");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = htab->num_lines_log2 + htab->line_size_log2;
       h->root.u.def.section = bfd_abs_section_ptr;
 
       h = define_ovtab_symbol (htab, "__icache_neg_log2_cachesize");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = -(htab->num_lines_log2 + htab->line_size_log2);
       h->root.u.def.section = bfd_abs_section_ptr;
 
@@ -2103,11 +2102,12 @@ spu_elf_build_stubs (struct bfd_link_inf
 	  htab->init->contents = bfd_zalloc (htab->init->owner,
 					     htab->init->size);
 	  if (htab->init->contents == NULL)
-	    return FALSE;
+	    return false;
+	  htab->init->alloced = 1;
 
 	  h = define_ovtab_symbol (htab, "__icache_fileoff");
 	  if (h == NULL)
-	    return FALSE;
+	    return false;
 	  h->root.u.def.value = 0;
 	  h->root.u.def.section = htab->init;
 	  h->size = 8;
@@ -2138,37 +2138,37 @@ spu_elf_build_stubs (struct bfd_link_inf
 
       h = define_ovtab_symbol (htab, "_ovly_table");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = 16;
       h->size = htab->num_overlays * 16;
 
       h = define_ovtab_symbol (htab, "_ovly_table_end");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = htab->num_overlays * 16 + 16;
       h->size = 0;
 
       h = define_ovtab_symbol (htab, "_ovly_buf_table");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = htab->num_overlays * 16 + 16;
       h->size = htab->num_buf * 4;
 
       h = define_ovtab_symbol (htab, "_ovly_buf_table_end");
       if (h == NULL)
-	return FALSE;
+	return false;
       h->root.u.def.value = htab->num_overlays * 16 + 16 + htab->num_buf * 4;
       h->size = 0;
     }
 
   h = define_ovtab_symbol (htab, "_EAR_");
   if (h == NULL)
-    return FALSE;
+    return false;
   h->root.u.def.section = htab->toe;
   h->root.u.def.value = 0;
   h->size = 16;
 
-  return TRUE;
+  return true;
 }
 
 /* Check that all loadable section VMAs lie in the range
@@ -2210,14 +2210,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))
@@ -2393,8 +2393,8 @@ alloc_stack_info (asection *sec, int max
 static struct function_info *
 maybe_insert_function (asection *sec,
 		       void *sym_h,
-		       bfd_boolean global,
-		       bfd_boolean is_func)
+		       bool global,
+		       bool is_func)
 {
   struct _spu_elf_section_data *sec_data = spu_elf_section_data (sec);
   struct spu_elf_stack_info *sinfo = sec_data->u.i.stack_info;
@@ -2434,11 +2434,11 @@ maybe_insert_function (asection *sec,
 	  /* Prefer globals over local syms.  */
 	  if (global && !sinfo->fun[i].global)
 	    {
-	      sinfo->fun[i].global = TRUE;
+	      sinfo->fun[i].global = true;
 	      sinfo->fun[i].u.h = sym_h;
 	    }
 	  if (is_func)
-	    sinfo->fun[i].is_func = TRUE;
+	    sinfo->fun[i].is_func = true;
 	  return &sinfo->fun[i];
 	}
       /* Ignore a zero-size symbol inside an existing function.  */
@@ -2516,25 +2516,25 @@ func_name (struct function_info *fun)
 /* Read the instruction at OFF in SEC.  Return true iff the instruction
    is a nop, lnop, or stop 0 (all zero insn).  */
 
-static bfd_boolean
+static bool
 is_nop (asection *sec, bfd_vma off)
 {
   unsigned char insn[4];
 
   if (off + 4 > sec->size
       || !bfd_get_section_contents (sec->owner, sec, insn, off, 4))
-    return FALSE;
+    return false;
   if ((insn[0] & 0xbf) == 0 && (insn[1] & 0xe0) == 0x20)
-    return TRUE;
+    return true;
   if (insn[0] == 0 && insn[1] == 0 && insn[2] == 0 && insn[3] == 0)
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
 /* Extend the range of FUN to cover nop padding up to LIMIT.
    Return TRUE iff some instruction other than a NOP was found.  */
 
-static bfd_boolean
+static bool
 insns_at_end (struct function_info *fun, bfd_vma limit)
 {
   bfd_vma off = (fun->hi + 3) & -4;
@@ -2544,25 +2544,25 @@ insns_at_end (struct function_info *fun,
   if (off < limit)
     {
       fun->hi = off;
-      return TRUE;
+      return true;
     }
   fun->hi = limit;
-  return FALSE;
+  return false;
 }
 
 /* Check and fix overlapping function ranges.  Return TRUE iff there
    are gaps in the current info we have about functions in SEC.  */
 
-static bfd_boolean
+static bool
 check_function_ranges (asection *sec, struct bfd_link_info *info)
 {
   struct _spu_elf_section_data *sec_data = spu_elf_section_data (sec);
   struct spu_elf_stack_info *sinfo = sec_data->u.i.stack_info;
   int i;
-  bfd_boolean gaps = FALSE;
+  bool gaps = false;
 
   if (sinfo == NULL)
-    return FALSE;
+    return false;
 
   for (i = 1; i < sinfo->num_fun; i++)
     if (sinfo->fun[i - 1].hi > sinfo->fun[i].lo)
@@ -2576,14 +2576,14 @@ check_function_ranges (asection *sec, st
 	sinfo->fun[i - 1].hi = sinfo->fun[i].lo;
       }
     else if (insns_at_end (&sinfo->fun[i - 1], sinfo->fun[i].lo))
-      gaps = TRUE;
+      gaps = true;
 
   if (sinfo->num_fun == 0)
-    gaps = TRUE;
+    gaps = true;
   else
     {
       if (sinfo->fun[0].lo != 0)
-	gaps = TRUE;
+	gaps = true;
       if (sinfo->fun[sinfo->num_fun - 1].hi > sec->size)
 	{
 	  const char *f1 = func_name (&sinfo->fun[sinfo->num_fun - 1]);
@@ -2592,7 +2592,7 @@ check_function_ranges (asection *sec, st
 	  sinfo->fun[sinfo->num_fun - 1].hi = sec->size;
 	}
       else if (insns_at_end (&sinfo->fun[sinfo->num_fun - 1], sec->size))
-	gaps = TRUE;
+	gaps = true;
     }
   return gaps;
 }
@@ -2630,7 +2630,7 @@ find_function (asection *sec, bfd_vma of
    if CALLEE was new.  If this function return FALSE, CALLEE should
    be freed.  */
 
-static bfd_boolean
+static bool
 insert_callee (struct function_info *caller, struct call_info *callee)
 {
   struct call_info **pp, *p;
@@ -2644,39 +2644,39 @@ insert_callee (struct function_info *cal
 	if (!p->is_tail)
 	  {
 	    p->fun->start = NULL;
-	    p->fun->is_func = TRUE;
+	    p->fun->is_func = true;
 	  }
 	p->count += callee->count;
 	/* Reorder list so most recent call is first.  */
 	*pp = p->next;
 	p->next = caller->call_list;
 	caller->call_list = p;
-	return FALSE;
+	return false;
       }
   callee->next = caller->call_list;
   caller->call_list = callee;
-  return TRUE;
+  return true;
 }
 
 /* Copy CALL and insert the copy into CALLER.  */
 
-static bfd_boolean
+static bool
 copy_callee (struct function_info *caller, const struct call_info *call)
 {
   struct call_info *callee;
   callee = bfd_malloc (sizeof (*callee));
   if (callee == NULL)
-    return FALSE;
+    return false;
   *callee = *call;
   if (!insert_callee (caller, callee))
     free (callee);
-  return TRUE;
+  return true;
 }
 
 /* We're only interested in code sections.  Testing SEC_IN_MEMORY excludes
    overlay stub sections.  */
 
-static bfd_boolean
+static bool
 interesting_section (asection *s)
 {
   return (s->output_section != bfd_abs_section_ptr
@@ -2691,7 +2691,7 @@ interesting_section (asection *s)
    look at branches, which may be tail calls or go to hot/cold
    section part of same function.  */
 
-static bfd_boolean
+static bool
 mark_functions_via_relocs (asection *sec,
 			   struct bfd_link_info *info,
 			   int call_tree)
@@ -2700,16 +2700,16 @@ mark_functions_via_relocs (asection *sec
   Elf_Internal_Shdr *symtab_hdr;
   void *psyms;
   unsigned int priority = 0;
-  static bfd_boolean warned;
+  static bool warned;
 
   if (!interesting_section (sec)
       || sec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   internal_relocs = _bfd_elf_link_read_relocs (sec->owner, sec, NULL, NULL,
 					       info->keep_memory);
   if (internal_relocs == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_tdata (sec->owner)->symtab_hdr;
   psyms = &symtab_hdr->contents;
@@ -2723,7 +2723,7 @@ mark_functions_via_relocs (asection *sec
       Elf_Internal_Sym *sym;
       struct elf_link_hash_entry *h;
       bfd_vma val;
-      bfd_boolean nonbranch, is_call;
+      bool nonbranch, is_call;
       struct function_info *caller;
       struct call_info *callee;
 
@@ -2732,20 +2732,20 @@ mark_functions_via_relocs (asection *sec
 
       r_indx = ELF32_R_SYM (irela->r_info);
       if (!get_sym_h (&h, &sym, &sym_sec, psyms, r_indx, sec->owner))
-	return FALSE;
+	return false;
 
       if (sym_sec == NULL
 	  || sym_sec->output_section == bfd_abs_section_ptr)
 	continue;
 
-      is_call = FALSE;
+      is_call = false;
       if (!nonbranch)
 	{
 	  unsigned char insn[4];
 
 	  if (!bfd_get_section_contents (sec->owner, sec, insn,
 					 irela->r_offset, 4))
-	    return FALSE;
+	    return false;
 	  if (is_branch (insn))
 	    {
 	      is_call = (insn[0] & 0xfd) == 0x31;
@@ -2765,13 +2765,13 @@ mark_functions_via_relocs (asection *sec
 			 " %pB(%pA), analysis incomplete\n"),
 		       sec->owner, sec, irela->r_offset,
 		       sym_sec->owner, sym_sec);
-		  warned = TRUE;
+		  warned = true;
 		  continue;
 		}
 	    }
 	  else
 	    {
-	      nonbranch = TRUE;
+	      nonbranch = true;
 	      if (is_hint (insn))
 		continue;
 	    }
@@ -2817,18 +2817,18 @@ mark_functions_via_relocs (asection *sec
 	    {
 	      Elf_Internal_Sym *fake = bfd_zmalloc (sizeof (*fake));
 	      if (fake == NULL)
-		return FALSE;
+		return false;
 	      fake->st_value = val;
 	      fake->st_shndx
 		= _bfd_elf_section_from_bfd_section (sym_sec->owner, sym_sec);
 	      sym = fake;
 	    }
 	  if (sym)
-	    fun = maybe_insert_function (sym_sec, sym, FALSE, is_call);
+	    fun = maybe_insert_function (sym_sec, sym, false, is_call);
 	  else
-	    fun = maybe_insert_function (sym_sec, h, TRUE, is_call);
+	    fun = maybe_insert_function (sym_sec, h, true, is_call);
 	  if (fun == NULL)
-	    return FALSE;
+	    return false;
 	  if (irela->r_addend != 0
 	      && fun->u.sym != sym)
 	    free (sym);
@@ -2837,17 +2837,17 @@ mark_functions_via_relocs (asection *sec
 
       caller = find_function (sec, irela->r_offset, info);
       if (caller == NULL)
-	return FALSE;
+	return false;
       callee = bfd_malloc (sizeof *callee);
       if (callee == NULL)
-	return FALSE;
+	return false;
 
       callee->fun = find_function (sym_sec, val, info);
       if (callee->fun == NULL)
-	return FALSE;
+	return false;
       callee->is_tail = !is_call;
-      callee->is_pasted = FALSE;
-      callee->broken_cycle = FALSE;
+      callee->is_pasted = false;
+      callee->broken_cycle = false;
       callee->priority = priority;
       callee->count = nonbranch? 0 : 1;
       if (callee->fun->last_caller != sec)
@@ -2869,7 +2869,7 @@ mark_functions_via_relocs (asection *sec
 	  if (sec->owner != sym_sec->owner)
 	    {
 	      callee->fun->start = NULL;
-	      callee->fun->is_func = TRUE;
+	      callee->fun->is_func = true;
 	    }
 	  else if (callee->fun->start == NULL)
 	    {
@@ -2893,19 +2893,19 @@ mark_functions_via_relocs (asection *sec
 	      if (caller_start != callee_start)
 		{
 		  callee->fun->start = NULL;
-		  callee->fun->is_func = TRUE;
+		  callee->fun->is_func = true;
 		}
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Handle something like .init or .fini, which has a piece of a function.
    These sections are pasted together to form a single function.  */
 
-static bfd_boolean
+static bool
 pasted_function (asection *sec)
 {
   struct bfd_link_order *l;
@@ -2916,14 +2916,14 @@ pasted_function (asection *sec)
 
   fake = bfd_zmalloc (sizeof (*fake));
   if (fake == NULL)
-    return FALSE;
+    return false;
   fake->st_value = 0;
   fake->st_size = sec->size;
   fake->st_shndx
     = _bfd_elf_section_from_bfd_section (sec->owner, sec);
-  fun = maybe_insert_function (sec, fake, FALSE, FALSE);
+  fun = maybe_insert_function (sec, fake, false, false);
   if (!fun)
-    return FALSE;
+    return false;
 
   /* Find a function immediately preceding this section.  */
   fun_start = NULL;
@@ -2935,18 +2935,18 @@ pasted_function (asection *sec)
 	    {
 	      struct call_info *callee = bfd_malloc (sizeof *callee);
 	      if (callee == NULL)
-		return FALSE;
+		return false;
 
 	      fun->start = fun_start;
 	      callee->fun = fun;
-	      callee->is_tail = TRUE;
-	      callee->is_pasted = TRUE;
-	      callee->broken_cycle = FALSE;
+	      callee->is_tail = true;
+	      callee->is_pasted = true;
+	      callee->broken_cycle = false;
 	      callee->priority = 0;
 	      callee->count = 1;
 	      if (!insert_callee (fun_start, callee))
 		free (callee);
-	      return TRUE;
+	      return true;
 	    }
 	  break;
 	}
@@ -2959,19 +2959,19 @@ pasted_function (asection *sec)
 
   /* Don't return an error if we did not find a function preceding this
      section.  The section may have incorrect flags.  */
-  return TRUE;
+  return true;
 }
 
 /* Map address ranges in code sections to functions.  */
 
-static bfd_boolean
+static bool
 discover_functions (struct bfd_link_info *info)
 {
   bfd *ibfd;
   int bfd_idx;
   Elf_Internal_Sym ***psym_arr;
   asection ***sec_arr;
-  bfd_boolean gaps = FALSE;
+  bool gaps = false;
 
   bfd_idx = 0;
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
@@ -2979,10 +2979,10 @@ discover_functions (struct bfd_link_info
 
   psym_arr = bfd_zmalloc (bfd_idx * sizeof (*psym_arr));
   if (psym_arr == NULL)
-    return FALSE;
+    return false;
   sec_arr = bfd_zmalloc (bfd_idx * sizeof (*sec_arr));
   if (sec_arr == NULL)
-    return FALSE;
+    return false;
 
   for (ibfd = info->input_bfds, bfd_idx = 0;
        ibfd != NULL;
@@ -3007,33 +3007,30 @@ discover_functions (struct bfd_link_info
 	    for (sec = ibfd->sections; sec != NULL && !gaps; sec = sec->next)
 	      if (interesting_section (sec))
 		{
-		  gaps = TRUE;
+		  gaps = true;
 		  break;
 		}
 	  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;
       if (syms == NULL)
-	return FALSE;
+	return false;
 
       /* Select defined function symbols that are going to be output.  */
       psyms = bfd_malloc ((symcount + 1) * sizeof (*psyms));
       if (psyms == NULL)
-	return FALSE;
+	return false;
       psym_arr[bfd_idx] = psyms;
       psecs = bfd_malloc (symcount * sizeof (*psecs));
       if (psecs == NULL)
-	return FALSE;
+	return false;
       sec_arr[bfd_idx] = psecs;
       for (psy = psyms, p = psecs, sy = syms; sy < syms + symcount; ++p, ++sy)
 	if (ELF_ST_TYPE (sy->st_info) == STT_NOTYPE
@@ -3064,7 +3061,7 @@ discover_functions (struct bfd_link_info
 	      break;
 
 	  if (!alloc_stack_info (s, psy2 - psy))
-	    return FALSE;
+	    return false;
 	  psy = psy2;
 	}
 
@@ -3078,8 +3075,8 @@ discover_functions (struct bfd_link_info
 	  if (ELF_ST_TYPE (sy->st_info) == STT_FUNC)
 	    {
 	      asection *s = psecs[sy - syms];
-	      if (!maybe_insert_function (s, sy, FALSE, TRUE))
-		return FALSE;
+	      if (!maybe_insert_function (s, sy, false, true))
+		return false;
 	    }
 	}
 
@@ -3102,8 +3099,8 @@ discover_functions (struct bfd_link_info
 	    continue;
 
 	  for (sec = ibfd->sections; sec != NULL; sec = sec->next)
-	    if (!mark_functions_via_relocs (sec, info, FALSE))
-	      return FALSE;
+	    if (!mark_functions_via_relocs (sec, info, false))
+	      return false;
 	}
 
       for (ibfd = info->input_bfds, bfd_idx = 0;
@@ -3123,7 +3120,7 @@ discover_functions (struct bfd_link_info
 	  symtab_hdr = &elf_tdata (ibfd)->symtab_hdr;
 	  syms = (Elf_Internal_Sym *) symtab_hdr->contents;
 
-	  gaps = FALSE;
+	  gaps = false;
 	  for (sec = ibfd->sections; sec != NULL && !gaps; sec = sec->next)
 	    if (interesting_section (sec))
 	      gaps |= check_function_ranges (sec, info);
@@ -3141,8 +3138,8 @@ discover_functions (struct bfd_link_info
 	      if (ELF_ST_TYPE (sy->st_info) != STT_FUNC
 		  && ELF_ST_BIND (sy->st_info) == STB_GLOBAL)
 		{
-		  if (!maybe_insert_function (s, sy, FALSE, FALSE))
-		    return FALSE;
+		  if (!maybe_insert_function (s, sy, false, false))
+		    return false;
 		}
 	    }
 	}
@@ -3183,7 +3180,7 @@ discover_functions (struct bfd_link_info
 		/* No symbols in this section.  Must be .init or .fini
 		   or something similar.  */
 		else if (!pasted_function (sec))
-		  return FALSE;
+		  return false;
 	      }
 	}
     }
@@ -3202,17 +3199,17 @@ discover_functions (struct bfd_link_info
   free (psym_arr);
   free (sec_arr);
 
-  return TRUE;
+  return true;
 }
 
 /* Iterate over all function_info we have collected, calling DOIT on
    each node if ROOT_ONLY is false.  Only call DOIT on root nodes
    if ROOT_ONLY.  */
 
-static bfd_boolean
-for_each_node (bfd_boolean (*doit) (struct function_info *,
-				    struct bfd_link_info *,
-				    void *),
+static bool
+for_each_node (bool (*doit) (struct function_info *,
+			     struct bfd_link_info *,
+			     void *),
 	       struct bfd_link_info *info,
 	       void *param,
 	       int root_only)
@@ -3239,17 +3236,17 @@ for_each_node (bfd_boolean (*doit) (stru
 	      for (i = 0; i < sinfo->num_fun; ++i)
 		if (!root_only || !sinfo->fun[i].non_root)
 		  if (!doit (&sinfo->fun[i], info, param))
-		    return FALSE;
+		    return false;
 	    }
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Transfer call info attached to struct function_info entries for
    all of a given function's sections to the first entry.  */
 
-static bfd_boolean
+static bool
 transfer_calls (struct function_info *fun,
 		struct bfd_link_info *info ATTRIBUTE_UNUSED,
 		void *param ATTRIBUTE_UNUSED)
@@ -3270,12 +3267,12 @@ transfer_calls (struct function_info *fu
 	}
       fun->call_list = NULL;
     }
-  return TRUE;
+  return true;
 }
 
 /* Mark nodes in the call graph that are called by some other node.  */
 
-static bfd_boolean
+static bool
 mark_non_root (struct function_info *fun,
 	       struct bfd_link_info *info ATTRIBUTE_UNUSED,
 	       void *param ATTRIBUTE_UNUSED)
@@ -3283,19 +3280,19 @@ mark_non_root (struct function_info *fun
   struct call_info *call;
 
   if (fun->visit1)
-    return TRUE;
-  fun->visit1 = TRUE;
+    return true;
+  fun->visit1 = true;
   for (call = fun->call_list; call; call = call->next)
     {
-      call->fun->non_root = TRUE;
+      call->fun->non_root = true;
       mark_non_root (call->fun, 0, 0);
     }
-  return TRUE;
+  return true;
 }
 
 /* Remove cycles from the call graph.  Set depth of nodes.  */
 
-static bfd_boolean
+static bool
 remove_cycles (struct function_info *fun,
 	       struct bfd_link_info *info,
 	       void *param)
@@ -3305,8 +3302,8 @@ remove_cycles (struct function_info *fun
   unsigned int max_depth = depth;
 
   fun->depth = depth;
-  fun->visit2 = TRUE;
-  fun->marking = TRUE;
+  fun->visit2 = true;
+  fun->marking = true;
 
   callp = &fun->call_list;
   while ((call = *callp) != NULL)
@@ -3315,7 +3312,7 @@ remove_cycles (struct function_info *fun
       if (!call->fun->visit2)
 	{
 	  if (!remove_cycles (call->fun, info, &call->max_depth))
-	    return FALSE;
+	    return false;
 	  if (max_depth < call->max_depth)
 	    max_depth = call->max_depth;
 	}
@@ -3335,13 +3332,13 @@ remove_cycles (struct function_info *fun
 				     f1, f2);
 	    }
 
-	  call->broken_cycle = TRUE;
+	  call->broken_cycle = true;
 	}
       callp = &call->next;
     }
-  fun->marking = FALSE;
+  fun->marking = false;
   *(unsigned int *) param = max_depth;
-  return TRUE;
+  return true;
 }
 
 /* Check that we actually visited all nodes in remove_cycles.  If we
@@ -3349,21 +3346,21 @@ remove_cycles (struct function_info *fun
    any root node.  Arbitrarily choose a node in the cycle as a new
    root and break the cycle.  */
 
-static bfd_boolean
+static bool
 mark_detached_root (struct function_info *fun,
 		    struct bfd_link_info *info,
 		    void *param)
 {
   if (fun->visit2)
-    return TRUE;
-  fun->non_root = FALSE;
+    return true;
+  fun->non_root = false;
   *(unsigned int *) param = 0;
   return remove_cycles (fun, info, param);
 }
 
 /* Populate call_list for each function.  */
 
-static bfd_boolean
+static bool
 build_call_tree (struct bfd_link_info *info)
 {
   bfd *ibfd;
@@ -3378,27 +3375,27 @@ build_call_tree (struct bfd_link_info *i
 	continue;
 
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
-	if (!mark_functions_via_relocs (sec, info, TRUE))
-	  return FALSE;
+	if (!mark_functions_via_relocs (sec, info, true))
+	  return false;
     }
 
   /* Transfer call info from hot/cold section part of function
      to main entry.  */
   if (!spu_hash_table (info)->params->auto_overlay
-      && !for_each_node (transfer_calls, info, 0, FALSE))
-    return FALSE;
+      && !for_each_node (transfer_calls, info, 0, false))
+    return false;
 
   /* Find the call graph root(s).  */
-  if (!for_each_node (mark_non_root, info, 0, FALSE))
-    return FALSE;
+  if (!for_each_node (mark_non_root, info, 0, false))
+    return false;
 
   /* Remove cycles from the call graph.  We start from the root node(s)
      so that we break cycles in a reasonable place.  */
   depth = 0;
-  if (!for_each_node (remove_cycles, info, &depth, TRUE))
-    return FALSE;
+  if (!for_each_node (remove_cycles, info, &depth, true))
+    return false;
 
-  return for_each_node (mark_detached_root, info, &depth, FALSE);
+  return for_each_node (mark_detached_root, info, &depth, false);
 }
 
 /* qsort predicate to sort calls by priority, max_depth then count.  */
@@ -3442,7 +3439,7 @@ struct _mos_param {
    Sort the call graph so that the deepest nodes will be visited
    first.  */
 
-static bfd_boolean
+static bool
 mark_overlay_section (struct function_info *fun,
 		      struct bfd_link_info *info,
 		      void *param)
@@ -3453,13 +3450,13 @@ mark_overlay_section (struct function_in
   struct spu_link_hash_table *htab = spu_hash_table (info);
 
   if (fun->visit4)
-    return TRUE;
+    return true;
 
-  fun->visit4 = TRUE;
+  fun->visit4 = true;
   if (!fun->sec->linker_mark
       && (htab->params->ovly_flavour != ovly_soft_icache
 	  || htab->params->non_ia_text
-	  || strncmp (fun->sec->name, ".text.ia.", 9) == 0
+	  || startswith (fun->sec->name, ".text.ia.")
 	  || strcmp (fun->sec->name, ".init") == 0
 	  || strcmp (fun->sec->name, ".fini") == 0))
     {
@@ -3484,24 +3481,24 @@ mark_overlay_section (struct function_in
 	    {
 	      name = bfd_malloc (sizeof (".rodata"));
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      memcpy (name, ".rodata", sizeof (".rodata"));
 	    }
-	  else if (strncmp (fun->sec->name, ".text.", 6) == 0)
+	  else if (startswith (fun->sec->name, ".text."))
 	    {
 	      size_t len = strlen (fun->sec->name);
 	      name = bfd_malloc (len + 3);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      memcpy (name, ".rodata", sizeof (".rodata"));
 	      memcpy (name + 7, fun->sec->name + 5, len - 4);
 	    }
-	  else if (strncmp (fun->sec->name, ".gnu.linkonce.t.", 16) == 0)
+	  else if (startswith (fun->sec->name, ".gnu.linkonce.t."))
 	    {
 	      size_t len = strlen (fun->sec->name) + 1;
 	      name = bfd_malloc (len);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      memcpy (name, fun->sec->name, len);
 	      name[14] = 'r';
 	    }
@@ -3553,7 +3550,7 @@ mark_overlay_section (struct function_in
     {
       struct call_info **calls = bfd_malloc (count * sizeof (*calls));
       if (calls == NULL)
-	return FALSE;
+	return false;
 
       for (count = 0, call = fun->call_list; call != NULL; call = call->next)
 	calls[count++] = call;
@@ -3580,20 +3577,20 @@ mark_overlay_section (struct function_in
 	}
       if (!call->broken_cycle
 	  && !mark_overlay_section (call->fun, info, param))
-	return FALSE;
+	return false;
     }
 
   /* Don't put entry code into an overlay.  The overlay manager needs
      a stack!  Also, don't mark .ovl.init as an overlay.  */
   if (fun->lo + fun->sec->output_offset + fun->sec->output_section->vma
       == info->output_bfd->start_address
-      || strncmp (fun->sec->output_section->name, ".ovl.init", 9) == 0)
+      || startswith (fun->sec->output_section->name, ".ovl.init"))
     {
       fun->sec->linker_mark = 0;
       if (fun->rodata != NULL)
 	fun->rodata->linker_mark = 0;
     }
-  return TRUE;
+  return true;
 }
 
 /* If non-zero then unmark functions called from those within sections
@@ -3609,7 +3606,7 @@ struct _uos_param {
 
 /* Undo some of mark_overlay_section's work.  */
 
-static bfd_boolean
+static bool
 unmark_overlay_section (struct function_info *fun,
 			struct bfd_link_info *info,
 			void *param)
@@ -3619,9 +3616,9 @@ unmark_overlay_section (struct function_
   unsigned int excluded = 0;
 
   if (fun->visit5)
-    return TRUE;
+    return true;
 
-  fun->visit5 = TRUE;
+  fun->visit5 = true;
 
   excluded = 0;
   if (fun->sec == uos_param->exclude_input_section
@@ -3641,11 +3638,11 @@ unmark_overlay_section (struct function_
   for (call = fun->call_list; call != NULL; call = call->next)
     if (!call->broken_cycle
 	&& !unmark_overlay_section (call->fun, info, param))
-      return FALSE;
+      return false;
 
   if (RECURSE_UNMARK)
     uos_param->clearing -= excluded;
-  return TRUE;
+  return true;
 }
 
 struct _cl_param {
@@ -3657,7 +3654,7 @@ struct _cl_param {
    for consideration as non-overlay sections.  The array consist of
    pairs of sections, (text,rodata), for functions in the call graph.  */
 
-static bfd_boolean
+static bool
 collect_lib_sections (struct function_info *fun,
 		      struct bfd_link_info *info,
 		      void *param)
@@ -3667,11 +3664,11 @@ collect_lib_sections (struct function_in
   unsigned int size;
 
   if (fun->visit6)
-    return TRUE;
+    return true;
 
-  fun->visit6 = TRUE;
+  fun->visit6 = true;
   if (!fun->sec->linker_mark || !fun->sec->gc_mark || fun->sec->segment_mark)
-    return TRUE;
+    return true;
 
   size = fun->sec->size;
   if (fun->rodata)
@@ -3694,7 +3691,7 @@ collect_lib_sections (struct function_in
     if (!call->broken_cycle)
       collect_lib_sections (call->fun, info, param);
 
-  return TRUE;
+  return true;
 }
 
 /* qsort predicate to sort sections by call count.  */
@@ -3766,7 +3763,7 @@ auto_ovl_lib_functions (struct bfd_link_
   collect_lib_param.lib_size = lib_size;
   collect_lib_param.lib_sections = lib_sections;
   if (!for_each_node (collect_lib_sections, info, &collect_lib_param,
-		      TRUE))
+		      true))
     return (unsigned int) -1;
   lib_count = (collect_lib_param.lib_sections - lib_sections) / 2;
 
@@ -3872,28 +3869,28 @@ auto_ovl_lib_functions (struct bfd_link_
    from the parent section.  The idea being to group sections to
    minimise calls between different overlays.  */
 
-static bfd_boolean
+static bool
 collect_overlays (struct function_info *fun,
 		  struct bfd_link_info *info,
 		  void *param)
 {
   struct call_info *call;
-  bfd_boolean added_fun;
+  bool added_fun;
   asection ***ovly_sections = param;
 
   if (fun->visit7)
-    return TRUE;
+    return true;
 
-  fun->visit7 = TRUE;
+  fun->visit7 = true;
   for (call = fun->call_list; call != NULL; call = call->next)
     if (!call->is_pasted && !call->broken_cycle)
       {
 	if (!collect_overlays (call->fun, info, ovly_sections))
-	  return FALSE;
+	  return false;
 	break;
       }
 
-  added_fun = FALSE;
+  added_fun = false;
   if (fun->sec->linker_mark && fun->sec->gc_mark)
     {
       fun->sec->gc_mark = 0;
@@ -3905,7 +3902,7 @@ collect_overlays (struct function_info *
 	}
       else
 	*(*ovly_sections)++ = NULL;
-      added_fun = TRUE;
+      added_fun = true;
 
       /* Pasted sections must stay with the first section.  We don't
 	 put pasted sections in the array, just the first section.
@@ -3934,7 +3931,7 @@ collect_overlays (struct function_info *
   for (call = fun->call_list; call != NULL; call = call->next)
     if (!call->broken_cycle
 	&& !collect_overlays (call->fun, info, ovly_sections))
-      return FALSE;
+      return false;
 
   if (added_fun)
     {
@@ -3947,22 +3944,22 @@ collect_overlays (struct function_info *
 	  int i;
 	  for (i = 0; i < sinfo->num_fun; ++i)
 	    if (!collect_overlays (&sinfo->fun[i], info, ovly_sections))
-	      return FALSE;
+	      return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 struct _sum_stack_param {
   size_t cum_stack;
   size_t overall_stack;
-  bfd_boolean emit_stack_syms;
+  bool emit_stack_syms;
 };
 
 /* Descend the call graph for FUN, accumulating total stack required.  */
 
-static bfd_boolean
+static bool
 sum_stack (struct function_info *fun,
 	   struct bfd_link_info *info,
 	   void *param)
@@ -3971,25 +3968,25 @@ sum_stack (struct function_info *fun,
   struct function_info *max;
   size_t stack, cum_stack;
   const char *f1;
-  bfd_boolean has_call;
+  bool has_call;
   struct _sum_stack_param *sum_stack_param = param;
   struct spu_link_hash_table *htab;
 
   cum_stack = fun->stack;
   sum_stack_param->cum_stack = cum_stack;
   if (fun->visit3)
-    return TRUE;
+    return true;
 
-  has_call = FALSE;
+  has_call = false;
   max = NULL;
   for (call = fun->call_list; call; call = call->next)
     {
       if (call->broken_cycle)
 	continue;
       if (!call->is_pasted)
-	has_call = TRUE;
+	has_call = true;
       if (!sum_stack (call->fun, info, sum_stack_param))
-	return FALSE;
+	return false;
       stack = sum_stack_param->cum_stack;
       /* Include caller stack for normal calls, don't do so for
 	 tail calls.  fun->stack here is local stack usage for
@@ -4007,7 +4004,7 @@ sum_stack (struct function_info *fun,
   stack = fun->stack;
   /* Now fun->stack holds cumulative stack.  */
   fun->stack = cum_stack;
-  fun->visit3 = TRUE;
+  fun->visit3 = true;
 
   if (!fun->non_root
       && sum_stack_param->overall_stack < cum_stack)
@@ -4015,7 +4012,7 @@ sum_stack (struct function_info *fun,
 
   htab = spu_hash_table (info);
   if (htab->params->auto_overlay)
-    return TRUE;
+    return true;
 
   f1 = func_name (fun);
   if (htab->params->stack_analysis)
@@ -4046,14 +4043,14 @@ sum_stack (struct function_info *fun,
       struct elf_link_hash_entry *h;
 
       if (name == NULL)
-	return FALSE;
+	return false;
 
       if (fun->global || ELF_ST_BIND (fun->u.sym->st_info) == STB_GLOBAL)
 	sprintf (name, "__stack_%s", f1);
       else
 	sprintf (name, "__stack_%x_%s", fun->sec->id & 0xffffffff, f1);
 
-      h = elf_link_hash_lookup (&htab->elf, name, TRUE, TRUE, FALSE);
+      h = elf_link_hash_lookup (&htab->elf, name, true, true, false);
       free (name);
       if (h != NULL
 	  && (h->root.type == bfd_link_hash_new
@@ -4073,7 +4070,7 @@ sum_stack (struct function_info *fun,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* SEC is part of a pasted function.  Return the call_info for the
@@ -4103,7 +4100,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 +4120,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 +4134,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 +4152,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 +4169,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)
@@ -4239,7 +4236,7 @@ spu_elf_auto_overlay (struct bfd_link_in
 
       sum_stack_param.emit_stack_syms = 0;
       sum_stack_param.overall_stack = 0;
-      if (!for_each_node (sum_stack, info, &sum_stack_param, TRUE))
+      if (!for_each_node (sum_stack, info, &sum_stack_param, true))
 	goto err_exit;
       reserved = (sum_stack_param.overall_stack
 		  + htab->params->extra_stack_space);
@@ -4261,7 +4258,7 @@ spu_elf_auto_overlay (struct bfd_link_in
   if (htab->params->ovly_flavour == ovly_soft_icache)
     ovly_mgr_entry = "__icache_br_handler";
   h = elf_link_hash_lookup (&htab->elf, ovly_mgr_entry,
-			    FALSE, FALSE, FALSE);
+			    false, false, false);
   if (h != NULL
       && (h->root.type == bfd_link_hash_defined
 	  || h->root.type == bfd_link_hash_defweak)
@@ -4279,7 +4276,7 @@ spu_elf_auto_overlay (struct bfd_link_in
 
   /* Mark overlay sections, and find max overlay section size.  */
   mos_param.max_overlay_size = 0;
-  if (!for_each_node (mark_overlay_section, info, &mos_param, TRUE))
+  if (!for_each_node (mark_overlay_section, info, &mos_param, true))
     goto err_exit;
 
   /* We can't put the overlay manager or interrupt routines in
@@ -4287,7 +4284,7 @@ spu_elf_auto_overlay (struct bfd_link_in
   uos_param.clearing = 0;
   if ((uos_param.exclude_input_section
        || uos_param.exclude_output_section)
-      && !for_each_node (unmark_overlay_section, info, &uos_param, TRUE))
+      && !for_each_node (unmark_overlay_section, info, &uos_param, true))
     goto err_exit;
 
   bfd_count = 0;
@@ -4321,7 +4318,7 @@ spu_elf_auto_overlay (struct bfd_link_in
 	  }
 	else if ((sec->flags & (SEC_ALLOC | SEC_LOAD)) == (SEC_ALLOC | SEC_LOAD)
 		 && sec->output_section->owner == info->output_bfd
-		 && strncmp (sec->output_section->name, ".ovl.init", 9) == 0)
+		 && startswith (sec->output_section->name, ".ovl.init"))
 	  fixed_size -= sec->size;
       if (count != old_count)
 	bfd_arr[bfd_count++] = ibfd;
@@ -4331,23 +4328,24 @@ spu_elf_auto_overlay (struct bfd_link_in
      section name, ensure that file names are unique.  */
   if (bfd_count > 1)
     {
-      bfd_boolean ok = TRUE;
+      bool ok = true;
 
       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);
-		ok = FALSE;
+					  bfd_get_filename (bfd_arr[i]));
+		ok = false;
 	      }
 	  }
       if (!ok)
@@ -4420,7 +4418,7 @@ spu_elf_auto_overlay (struct bfd_link_in
   if (ovly_sections == NULL)
     goto err_exit;
   ovly_p = ovly_sections;
-  if (!for_each_node (collect_overlays, info, &ovly_p, TRUE))
+  if (!for_each_node (collect_overlays, info, &ovly_p, true))
     goto err_exit;
   count = (size_t) (ovly_p - ovly_sections) / 2;
   ovly_map = bfd_malloc (count * sizeof (*ovly_map));
@@ -4691,23 +4689,22 @@ spu_elf_auto_overlay (struct bfd_link_in
  file_err:
   bfd_set_error (bfd_error_system_call);
  err_exit:
-  info->callbacks->einfo (_("%F%P: auto overlay error: %E\n"));
-  xexit (1);
+  info->callbacks->fatal (_("%P: auto overlay error: %E\n"));
 }
 
 /* Provide an estimate of total stack required.  */
 
-static bfd_boolean
+static bool
 spu_elf_stack_analysis (struct bfd_link_info *info)
 {
   struct spu_link_hash_table *htab;
   struct _sum_stack_param sum_stack_param;
 
   if (!discover_functions (info))
-    return FALSE;
+    return false;
 
   if (!build_call_tree (info))
-    return FALSE;
+    return false;
 
   htab = spu_hash_table (info);
   if (htab->params->stack_analysis)
@@ -4719,18 +4716,18 @@ spu_elf_stack_analysis (struct bfd_link_
 
   sum_stack_param.emit_stack_syms = htab->params->emit_stack_syms;
   sum_stack_param.overall_stack = 0;
-  if (!for_each_node (sum_stack, info, &sum_stack_param, TRUE))
-    return FALSE;
+  if (!for_each_node (sum_stack, info, &sum_stack_param, true))
+    return false;
 
   if (htab->params->stack_analysis)
     info->callbacks->info (_("Maximum stack required is 0x%v\n"),
 			   (bfd_vma) sum_stack_param.overall_stack);
-  return TRUE;
+  return true;
 }
 
 /* Perform a final link.  */
 
-static bfd_boolean
+static bool
 spu_elf_final_link (bfd *output_bfd, struct bfd_link_info *info)
 {
   struct spu_link_hash_table *htab = spu_hash_table (info);
@@ -4745,7 +4742,7 @@ spu_elf_final_link (bfd *output_bfd, str
     info->callbacks->einfo (_("%X%P: stack/lrlive analysis error: %E\n"));
 
   if (!spu_elf_build_stubs (info))
-    info->callbacks->einfo (_("%F%P: can not build overlay stubs: %E\n"));
+    info->callbacks->fatal (_("%P: can not build overlay stubs: %E\n"));
 
   return bfd_elf_final_link (output_bfd, info);
 }
@@ -4840,10 +4837,10 @@ spu_elf_relocate_section (bfd *output_bf
   Elf_Internal_Rela *rel, *relend;
   struct spu_link_hash_table *htab;
   asection *ea;
-  int ret = TRUE;
-  bfd_boolean emit_these_relocs = FALSE;
-  bfd_boolean is_ea_sym;
-  bfd_boolean stubs;
+  int ret = true;
+  bool emit_these_relocs = false;
+  bool is_ea_sym;
+  bool stubs;
   unsigned int iovl = 0;
 
   htab = spu_hash_table (info);
@@ -4868,13 +4865,13 @@ spu_elf_relocate_section (bfd *output_bf
       bfd_vma relocation;
       bfd_vma addend;
       bfd_reloc_status_type r;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       enum _stub_type stub_type;
 
       r_symndx = ELF32_R_SYM (rel->r_info);
       r_type = ELF32_R_TYPE (rel->r_info);
       howto = elf_howto_table + r_type;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       h = NULL;
       sym = NULL;
       sec = NULL;
@@ -4888,7 +4885,7 @@ spu_elf_relocate_section (bfd *output_bf
       else
 	{
 	  if (sym_hashes == NULL)
-	    return FALSE;
+	    return false;
 
 	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 
@@ -4912,7 +4909,7 @@ spu_elf_relocate_section (bfd *output_bf
 		   relocation value for this symbol.  output_section
 		   is typically NULL for symbols satisfied by a shared
 		   library.  */
-		unresolved_reloc = TRUE;
+		unresolved_reloc = true;
 	      else
 		relocation = (h->root.u.def.value
 			      + sec->output_section->vma
@@ -4926,21 +4923,23 @@ spu_elf_relocate_section (bfd *output_bf
 	  else if (!bfd_link_relocatable (info)
 		   && !(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);
+	      bool 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;
 	}
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_SPU_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -5037,11 +5036,11 @@ spu_elf_relocate_section (bfd *output_bf
 				+ elf_section_data (ea)->this_hdr.sh_offset);
 	      rel->r_info = ELF32_R_INFO (0, r_type);
 	    }
-	  emit_these_relocs = TRUE;
+	  emit_these_relocs = true;
 	  continue;
 	}
       else if (is_ea_sym)
-	unresolved_reloc = TRUE;
+	unresolved_reloc = true;
 
       if (unresolved_reloc
 	  && _bfd_elf_section_offset (output_bfd, info, input_section,
@@ -5056,7 +5055,7 @@ spu_elf_relocate_section (bfd *output_bf
 	     (uint64_t) rel->r_offset,
 	     howto->name,
 	     sym_name);
-	  ret = FALSE;
+	  ret = false;
 	}
 
       r = _bfd_final_link_relocate (howto,
@@ -5079,7 +5078,7 @@ spu_elf_relocate_section (bfd *output_bf
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, sym_name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, sym_name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -5099,7 +5098,7 @@ spu_elf_relocate_section (bfd *output_bf
 	      /* fall through */
 
 	    common_error:
-	      ret = FALSE;
+	      ret = false;
 	      (*info->callbacks->warning) (info, msg, sym_name, input_bfd,
 					   input_section, rel->r_offset);
 	      break;
@@ -5134,11 +5133,11 @@ spu_elf_relocate_section (bfd *output_bf
   return ret;
 }
 
-static bfd_boolean
+static bool
 spu_elf_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 				 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* Adjust _SPUEAR_ syms to point at their overlay stubs.  */
@@ -5158,7 +5157,7 @@ spu_elf_output_symbol_hook (struct bfd_l
       && (h->root.type == bfd_link_hash_defined
 	  || h->root.type == bfd_link_hash_defweak)
       && h->def_regular
-      && strncmp (h->root.root.string, "_SPUEAR_", 8) == 0)
+      && startswith (h->root.root.string, "_SPUEAR_"))
     {
       struct got_entry *g;
 
@@ -5188,11 +5187,11 @@ spu_elf_plugin (int val)
 
 /* Set ELF header e_type for plugins.  */
 
-static bfd_boolean
+static bool
 spu_elf_init_file_header (bfd *abfd, struct bfd_link_info *info)
 {
   if (!_bfd_elf_init_file_header (abfd, info))
-    return FALSE;
+    return false;
 
   if (spu_plugin)
     {
@@ -5200,7 +5199,7 @@ spu_elf_init_file_header (bfd *abfd, str
 
       i_ehdrp->e_type = ET_DYN;
     }
-  return TRUE;
+  return true;
 }
 
 /* We may add an extra PT_LOAD segment for .toe.  We also need extra
@@ -5231,7 +5230,7 @@ spu_elf_additional_program_headers (bfd
 /* Remove .toe section from other PT_LOAD segments and put it in
    a segment of its own.  Put overlays in separate segments too.  */
 
-static bfd_boolean
+static bool
 spu_elf_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
 {
   asection *toe, *s;
@@ -5240,7 +5239,7 @@ spu_elf_modify_segment_map (bfd *abfd, s
   unsigned int i;
 
   if (info == NULL)
-    return TRUE;
+    return true;
 
   toe = bfd_get_section_by_name (abfd, ".toe");
   for (m = elf_seg_map (abfd); m != NULL; m = m->next)
@@ -5258,7 +5257,7 @@ spu_elf_modify_segment_map (bfd *abfd, s
 		amt += (m->count - (i + 2)) * sizeof (m->sections[0]);
 		m2 = bfd_zalloc (abfd, amt);
 		if (m2 == NULL)
-		  return FALSE;
+		  return false;
 		m2->count = m->count - (i + 1);
 		memcpy (m2->sections, m->sections + i + 1,
 			m2->count * sizeof (m->sections[0]));
@@ -5273,7 +5272,7 @@ spu_elf_modify_segment_map (bfd *abfd, s
 		amt = sizeof (struct elf_segment_map);
 		m2 = bfd_zalloc (abfd, amt);
 		if (m2 == NULL)
-		  return FALSE;
+		  return false;
 		m2->p_type = PT_LOAD;
 		m2->count = 1;
 		m2->sections[0] = s;
@@ -5331,24 +5330,24 @@ spu_elf_modify_segment_map (bfd *abfd, s
       *p = m_overlay;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Tweak the section type of .note.spu_name.  */
 
-static bfd_boolean
+static bool
 spu_elf_fake_sections (bfd *obfd ATTRIBUTE_UNUSED,
 		       Elf_Internal_Shdr *hdr,
 		       asection *sec)
 {
   if (strcmp (sec->name, SPU_PTNOTE_SPUNAME) == 0)
     hdr->sh_type = SHT_NOTE;
-  return TRUE;
+  return true;
 }
 
 /* Tweak phdrs before writing them out.  */
 
-static int
+static bool
 spu_elf_modify_headers (bfd *abfd, struct bfd_link_info *info)
 {
   if (info != NULL)
@@ -5444,7 +5443,7 @@ spu_elf_modify_headers (bfd *abfd, struc
   return _bfd_elf_modify_headers (abfd, info);
 }
 
-bfd_boolean
+bool
 spu_elf_size_sections (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
 {
   struct spu_link_hash_table *htab = spu_hash_table (info);
@@ -5480,7 +5479,7 @@ spu_elf_size_sections (bfd *obfd ATTRIBU
 		_bfd_elf_link_read_relocs (ibfd, isec, NULL, NULL,
 					   info->keep_memory);
 	      if (internal_relocs == NULL)
-		return FALSE;
+		return false;
 
 	      /* 1 quadword can contain up to 4 R_SPU_ADDR32
 		 relocations.  They are stored in a single word by
@@ -5503,12 +5502,13 @@ spu_elf_size_sections (bfd *obfd ATTRIBU
       /* We always have a NULL fixup as a sentinel */
       size = (fixup_count + 1) * FIXUP_RECORD_SIZE;
       if (!bfd_set_section_size (sfixup, size))
-	return FALSE;
+	return false;
       sfixup->contents = (bfd_byte *) bfd_zalloc (info->input_bfds, size);
       if (sfixup->contents == NULL)
-	return FALSE;
+	return false;
+      sfixup->alloced = 1;
     }
-  return TRUE;
+  return true;
 }
 
 #define TARGET_BIG_SYM		spu_elf32_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.20200303/bfd/elf32-spu.h ./bfd/elf32-spu.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-spu.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-spu.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* SPU specific support for 32-bit ELF.
 
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -115,10 +115,9 @@ struct _ovl_stream
 
 extern void spu_elf_setup (struct bfd_link_info *, struct spu_elf_params *);
 extern void spu_elf_plugin (int);
-extern bfd_boolean spu_elf_open_builtin_lib (bfd **,
-					     const struct _ovl_stream *);
-extern bfd_boolean spu_elf_create_sections (struct bfd_link_info *);
-extern bfd_boolean spu_elf_size_sections (bfd *, struct bfd_link_info *);
+extern bool spu_elf_open_builtin_lib (bfd **, const struct _ovl_stream *);
+extern bool spu_elf_create_sections (struct bfd_link_info *);
+extern bool spu_elf_size_sections (bfd *, struct bfd_link_info *);
 extern int spu_elf_find_overlays (struct bfd_link_info *);
 extern int spu_elf_size_stubs (struct bfd_link_info *);
 extern void spu_elf_place_overlay_data (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.20200303/bfd/elf32-tic6x.c ./bfd/elf32-tic6x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-tic6x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-tic6x.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for TI C6X
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2025 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,
@@ -124,7 +111,7 @@ struct elf32_tic6x_obj_tdata
   /* Whether to use RELA relocations when generating relocations.
      This is a per-object flag to allow the assembler to generate REL
      relocations for use in linker testcases.  */
-  bfd_boolean use_rela_p;
+  bool use_rela_p;
 };
 
 #define elf32_tic6x_tdata(abfd) \
@@ -141,414 +128,417 @@ struct elf32_tic6x_obj_tdata
    faster assembler code.  This is what we use for the small common
    section.  This approach is copied from ecoff.c.  */
 static asection tic6x_elf_scom_section;
-static asymbol  tic6x_elf_scom_symbol;
-static asymbol  *tic6x_elf_scom_symbol_ptr;
+static const asymbol tic6x_elf_scom_symbol =
+  GLOBAL_SYM_INIT (".scommon", &tic6x_elf_scom_section);
+static asection tic6x_elf_scom_section =
+  BFD_FAKE_SECTION (tic6x_elf_scom_section, &tic6x_elf_scom_symbol,
+		    ".scommon", 0, SEC_IS_COMMON | SEC_SMALL_DATA);
 
 static reloc_howto_type elf32_tic6x_howto_table[] =
 {
   HOWTO (R_C6000_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_PCR_S21,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_S21",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0fffff80,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_PCR_S12,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 16,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_S12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0fff0000,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_PCR_S10,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 13,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_S10",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fe000,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_PCR_S7,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 7,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 16,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_S7",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007f0000,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_ABS_S16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS_S16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS_L16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS_L16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS_H16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS_H16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_U15_B,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_U15_B",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_U15_H,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_U15_H",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_U15_W,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_U15_W",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_S16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_S16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_L16_B,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_L16_B",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_L16_H,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_L16_H",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_L16_W,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_L16_W",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_H16_B,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_H16_B",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_H16_H,	/* type */
 	 17,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_H16_H",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_H16_W,	/* type */
 	 18,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_H16_W",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_GOT_U15_W,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_GOT_U15_W",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_GOT_L16_W,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_GOT_L16_W",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_GOT_H16_W,	/* type */
 	 18,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_GOT_H16_W",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_DSBT_INDEX,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_DSBT_INDEX",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_PREL31,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 31,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PREL31",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x7fffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_COPY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_JUMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_JUMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_EHTYPE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_EHTYPE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_PCR_H16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_H16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_PCR_L16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_L16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   EMPTY_HOWTO (31),
   EMPTY_HOWTO (32),
   EMPTY_HOWTO (33),
@@ -773,364 +763,364 @@ static reloc_howto_type elf32_tic6x_howt
   EMPTY_HOWTO (252),
   HOWTO (R_C6000_ALIGN,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ALIGN",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_FPHEAD,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_FPHEAD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_NOCMP,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_NOCMP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 false)			/* pcrel_offset */
 };
 
 static reloc_howto_type elf32_tic6x_howto_table_rel[] =
 {
   HOWTO (R_C6000_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_NONE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS8",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000000ff,		/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_PCR_S21,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_S21",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0fffff80,		/* src_mask */
 	 0x0fffff80,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_PCR_S12,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 16,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_S12",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0fff0000,		/* src_mask */
 	 0x0fff0000,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_PCR_S10,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 13,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_S10",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fe000,		/* src_mask */
 	 0x007fe000,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_PCR_S7,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 7,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 16,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PCR_S7",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007f0000,		/* src_mask */
 	 0x007f0000,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_ABS_S16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS_S16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff80,		/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_ABS_L16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ABS_L16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff80,		/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   EMPTY_HOWTO (R_C6000_ABS_H16),
   HOWTO (R_C6000_SBR_U15_B,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_U15_B",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff00,		/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_U15_H,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_U15_H",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff00,		/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_U15_W,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_U15_W",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff00,		/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_S16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_S16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff80,		/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_L16_B,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_L16_B",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff80,		/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_L16_H,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_L16_H",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff80,		/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_L16_W,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_L16_W",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff80,		/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   EMPTY_HOWTO (R_C6000_SBR_H16_B),
   EMPTY_HOWTO (R_C6000_SBR_H16_H),
   EMPTY_HOWTO (R_C6000_SBR_H16_W),
   HOWTO (R_C6000_SBR_GOT_U15_W,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_GOT_U15_W",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff00,		/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_SBR_GOT_L16_W,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 7,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_SBR_GOT_L16_W",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fff80,		/* src_mask */
 	 0x007fff80,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   EMPTY_HOWTO (R_C6000_SBR_GOT_H16_W),
   HOWTO (R_C6000_DSBT_INDEX,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 15,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 8,			/* bitpos */
 	 complain_overflow_unsigned,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_DSBT_INDEX",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fff00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_PREL31,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 31,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_PREL31",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x7fffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
   HOWTO (R_C6000_COPY,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_COPY",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_JUMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_JUMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_EHTYPE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_EHTYPE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   EMPTY_HOWTO (R_C6000_PCR_H16),
   EMPTY_HOWTO (R_C6000_PCR_L16),
   EMPTY_HOWTO (31),
@@ -1357,43 +1347,43 @@ static reloc_howto_type elf32_tic6x_howt
   EMPTY_HOWTO (252),
   HOWTO (R_C6000_ALIGN,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_ALIGN",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_FPHEAD,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_FPHEAD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_C6000_NOCMP,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_C6000_NOCMP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 false)			/* pcrel_offset */
 };
 
 /* Map BFD relocations to ELF relocations.  */
@@ -1495,7 +1485,7 @@ elf32_tic6x_reloc_name_lookup (bfd *abfd
   return NULL;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
 			   Elf_Internal_Rela *elf_reloc)
 {
@@ -1508,7 +1498,7 @@ elf32_tic6x_info_to_howto (bfd *abfd ATT
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   bfd_reloc->howto = &elf32_tic6x_howto_table[r_type];
@@ -1518,13 +1508,13 @@ elf32_tic6x_info_to_howto (bfd *abfd ATT
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
 			       Elf_Internal_Rela *elf_reloc)
 {
@@ -1537,7 +1527,7 @@ elf32_tic6x_info_to_howto_rel (bfd *abfd
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   bfd_reloc->howto = &elf32_tic6x_howto_table_rel[r_type];
@@ -1547,64 +1537,33 @@ elf32_tic6x_info_to_howto_rel (bfd *abfd
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 void
-elf32_tic6x_set_use_rela_p (bfd *abfd, bfd_boolean use_rela_p)
+elf32_tic6x_set_use_rela_p (bfd *abfd, bool use_rela_p)
 {
   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),
-				      TIC6X_ELF_DATA))
+				      _bfd_elf_link_hash_newfunc,
+				      sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1616,7 +1575,7 @@ elf32_tic6x_link_hash_table_create (bfd
   return &ret->elf.root;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   if (bfd_link_pic (info))
@@ -1636,9 +1595,9 @@ elf32_tic6x_final_link (bfd *abfd, struc
     }
   /* Invoke the regular ELF backend linker to do all the work.  */
   if (!bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Called to pass PARAMS to the backend.  We store them in the hash table
@@ -1654,7 +1613,7 @@ elf32_tic6x_setup (struct bfd_link_info
 
 /* Determine if we're dealing with a DSBT object.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_using_dsbt (bfd *abfd)
 {
   return bfd_elf_get_obj_attr_int (abfd, OBJ_ATTR_PROC,
@@ -1665,7 +1624,7 @@ elf32_tic6x_using_dsbt (bfd *abfd)
    sections in DYNOBJ, and set up shortcuts to them in our hash
    table.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
 {
   struct elf32_tic6x_link_hash_table *htab;
@@ -1673,10 +1632,10 @@ elf32_tic6x_create_dynamic_sections (bfd
 
   htab = elf32_tic6x_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (!_bfd_elf_create_dynamic_sections (dynobj, info))
-    return FALSE;
+    return false;
 
   /* Create .dsbt  */
   flags = (SEC_ALLOC | SEC_LOAD
@@ -1686,20 +1645,19 @@ elf32_tic6x_create_dynamic_sections (bfd
   if (htab->dsbt == NULL
       || !bfd_set_section_alignment (htab->dsbt, 2)
       || !bfd_set_section_alignment (htab->elf.splt, 5))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_mkobject (bfd *abfd)
 {
-  bfd_boolean ret;
+  bool ret;
 
-  ret = bfd_elf_allocate_object (abfd, sizeof (struct elf32_tic6x_obj_tdata),
-				 TIC6X_ELF_DATA);
+  ret = bfd_elf_allocate_object (abfd, sizeof (struct elf32_tic6x_obj_tdata));
   if (ret)
-    elf32_tic6x_set_use_rela_p (abfd, TRUE);
+    elf32_tic6x_set_use_rela_p (abfd, true);
   return ret;
 }
 
@@ -1749,7 +1707,7 @@ elf32_tic6x_make_got_dynreloc (bfd *outp
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_finish_dynamic_symbol (bfd * output_bfd,
 				   struct bfd_link_info *info,
 				   struct elf_link_hash_entry *h,
@@ -1921,28 +1879,28 @@ elf32_tic6x_finish_dynamic_symbol (bfd *
       || h == elf_hash_table (info)->hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Unwinding tables are not referenced directly.  This pass marks them as
    required if the corresponding code section is marked.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_gc_mark_extra_sections (struct bfd_link_info *info,
 				    elf_gc_mark_hook_fn gc_mark_hook)
 {
   bfd *sub;
   Elf_Internal_Shdr **elf_shdrp;
-  bfd_boolean again;
+  bool again;
 
   _bfd_elf_gc_mark_extra_sections (info, gc_mark_hook);
 
   /* Marking EH data may cause additional code sections to be marked,
      requiring multiple passes.  */
-  again = TRUE;
+  again = true;
   while (again)
     {
-      again = FALSE;
+      again = false;
       for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
 	{
 	  asection *o;
@@ -1962,31 +1920,31 @@ elf32_tic6x_gc_mark_extra_sections (stru
 		  && !o->gc_mark
 		  && elf_shdrp[hdr->sh_link]->bfd_section->gc_mark)
 		{
-		  again = TRUE;
+		  again = true;
 		  if (!_bfd_elf_gc_mark (info, o, gc_mark_hook))
-		    return FALSE;
+		    return false;
 		}
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if this is an unwinding table index.  */
 
-static bfd_boolean
+static bool
 is_tic6x_elf_unwind_section_name (const char *name)
 {
-  return (CONST_STRNEQ (name, ELF_STRING_C6000_unwind)
-	  || CONST_STRNEQ (name, ELF_STRING_C6000_unwind_once));
+  return (startswith (name, ELF_STRING_C6000_unwind)
+	  || startswith (name, ELF_STRING_C6000_unwind_once));
 }
 
 
 /* Set the type and flags for an unwinding index table.  We do this by
    the section name, which is a hack, but ought to work.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 			   Elf_Internal_Shdr *hdr, asection *sec)
 {
@@ -2000,26 +1958,7 @@ elf32_tic6x_fake_sections (bfd *abfd ATT
       hdr->sh_flags |= SHF_LINK_ORDER;
     }
 
-  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;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -2028,7 +1967,7 @@ readonly_dynrelocs (struct elf_link_hash
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_adjust_dynamic_symbol (struct bfd_link_info *info,
 				   struct elf_link_hash_entry *h)
 {
@@ -2064,7 +2003,7 @@ elf32_tic6x_adjust_dynamic_symbol (struc
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
 
   /* If this is a weak symbol, and there is a real definition, the
@@ -2077,7 +2016,7 @@ elf32_tic6x_adjust_dynamic_symbol (struc
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
       h->non_got_ref = def->non_got_ref;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2088,23 +2027,23 @@ elf32_tic6x_adjust_dynamic_symbol (struc
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   htab = elf32_tic6x_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* We must allocate the symbol in our .dynbss section, which will
      become part of the .bss section of the executable.  There will be
@@ -2138,22 +2077,16 @@ elf32_tic6x_adjust_dynamic_symbol (struc
   return _bfd_elf_adjust_dynamic_copy (info, h, s);
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_new_section_hook (bfd *abfd, asection *sec)
 {
-  bfd_boolean ret;
+  bool ret;
+  _tic6x_elf_section_data *sdata;
 
-  /* Allocate target specific section data.  */
-  if (!sec->used_by_bfd)
-    {
-      _tic6x_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
-
-      sdata = (_tic6x_elf_section_data *) bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   ret = _bfd_elf_new_section_hook (abfd, sec);
   sec->use_rela_p = elf32_tic6x_tdata (abfd)->use_rela_p;
@@ -2165,7 +2098,7 @@ elf32_tic6x_new_section_hook (bfd *abfd,
    than RELA relocation.  RELOCS is the first relocation in the
    section and ABFD is the bfd that contains SEC.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_rel_relocation_p (bfd *abfd, asection *sec,
 			      const Elf_Internal_Rela *relocs,
 			      const Elf_Internal_Rela *rel)
@@ -2177,7 +2110,7 @@ elf32_tic6x_rel_relocation_p (bfd *abfd,
      fact that the INPUT_SECTION's REL_HDR is read before RELA_HDR.  */
   rel_hdr = elf_section_data (sec)->rel.hdr;
   if (rel_hdr == NULL)
-    return FALSE;
+    return false;
   bed = get_elf_backend_data (abfd);
   return ((size_t) (rel - relocs)
 	  < NUM_SHDR_ENTRIES (rel_hdr) * bed->s->int_rels_per_ext_rel);
@@ -2185,7 +2118,7 @@ elf32_tic6x_rel_relocation_p (bfd *abfd,
 
 /* We need dynamic symbols for every section, since segments can
    relocate independently.  */
-static bfd_boolean
+static bool
 elf32_tic6x_link_omit_section_dynsym (bfd *output_bfd ATTRIBUTE_UNUSED,
 				      struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				      asection *p)
@@ -2197,16 +2130,16 @@ elf32_tic6x_link_omit_section_dynsym (bf
       /* If sh_type is yet undecided, assume it could be
 	 SHT_PROGBITS/SHT_NOBITS.  */
     case SHT_NULL:
-      return FALSE;
+      return false;
 
       /* There shouldn't be section relative relocations
 	 against any other section.  */
     default:
-      return TRUE;
+      return true;
     }
 }
 
-static bfd_boolean
+static int
 elf32_tic6x_relocate_section (bfd *output_bfd,
 			      struct bfd_link_info *info,
 			      bfd *input_bfd,
@@ -2222,7 +2155,7 @@ elf32_tic6x_relocate_section (bfd *outpu
   bfd_vma *local_got_offsets;
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
 
   htab = elf32_tic6x_hash_table (info);
   symtab_hdr = & elf_symtab_hdr (input_bfd);
@@ -2241,11 +2174,11 @@ elf32_tic6x_relocate_section (bfd *outpu
       asection *sec;
       struct elf_link_hash_entry *h;
       bfd_vma off, off2, relocation;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       bfd_reloc_status_type r;
       struct bfd_link_hash_entry *sbh;
-      bfd_boolean is_rel;
-      bfd_boolean res;
+      bool is_rel;
+      bool res;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       r_symndx = ELF32_R_SYM (rel->r_info);
@@ -2261,13 +2194,13 @@ elf32_tic6x_relocate_section (bfd *outpu
       if (!res || (howto = bfd_reloc.howto) == NULL)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -2277,7 +2210,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2287,7 +2220,8 @@ elf32_tic6x_relocate_section (bfd *outpu
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_C6000_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -2353,7 +2287,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 	  relocation += (input_section->output_section->vma
 			 + input_section->output_offset
 			 + rel->r_offset) & 0x1f;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_C6000_PCR_H16:
@@ -2392,24 +2326,24 @@ elf32_tic6x_relocate_section (bfd *outpu
 		  || h->root.type != bfd_link_hash_undefweak))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 	      asection *sreloc;
 
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 
 	      sreloc = elf_section_data (input_section)->sreloc;
 	      BFD_ASSERT (sreloc != NULL && sreloc->contents != NULL);
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -2435,7 +2369,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 		  else if (sec == NULL || sec->owner == NULL)
 		    {
 		      bfd_set_error (bfd_error_bad_value);
-		      return FALSE;
+		      return false;
 		    }
 		  else
 		    {
@@ -2473,7 +2407,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 	case R_C6000_SBR_H16_H:
 	case R_C6000_SBR_H16_W:
 	  sbh = bfd_link_hash_lookup (info->hash, "__c6xabi_DSBT_BASE",
-				      FALSE, FALSE, TRUE);
+				      false, false, true);
 	  if (sbh != NULL
 	      && (sbh->type == bfd_link_hash_defined
 		  || sbh->type == bfd_link_hash_defweak))
@@ -2493,7 +2427,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 	      _bfd_error_handler (_("%pB: SB-relative relocation but "
 				    "__c6xabi_DSBT_BASE not defined"),
 				  input_bfd);
-	      ok = FALSE;
+	      ok = false;
 	      continue;
 	    }
 	  break;
@@ -2509,7 +2443,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      dyn = htab->elf.dynamic_sections_created;
@@ -2551,7 +2485,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -2619,7 +2553,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 		   : _("[whose name is lost]"));
 
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 
@@ -2642,7 +2576,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      input_bfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ok = FALSE;
+	  ok = false;
 	  continue;
 	}
 
@@ -2681,7 +2615,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      if (*name == '\0')
 		name = bfd_section_name (sec);
 	    }
@@ -2701,7 +2635,7 @@ elf32_tic6x_relocate_section (bfd *outpu
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol) (info, name, input_bfd,
 						    input_section,
-						    rel->r_offset, TRUE);
+						    rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -2737,7 +2671,7 @@ elf32_tic6x_relocate_section (bfd *outpu
    calculate needed space in the global offset table, procedure linkage
    table, and dynamic reloc sections.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			  asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -2749,7 +2683,7 @@ elf32_tic6x_check_relocs (bfd *abfd, str
   asection *sreloc;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = elf32_tic6x_hash_table (info);
   symtab_hdr = &elf_symtab_hdr (abfd);
@@ -2761,7 +2695,7 @@ elf32_tic6x_check_relocs (bfd *abfd, str
       && ! htab->elf.dynamic_sections_created)
     {
       if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
-	return FALSE;
+	return false;
     }
 
   sreloc = NULL;
@@ -2782,16 +2716,16 @@ elf32_tic6x_check_relocs (bfd *abfd, str
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"),
 			      abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       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;
+	    return false;
 	  h = NULL;
 	}
       else
@@ -2847,7 +2781,7 @@ elf32_tic6x_check_relocs (bfd *abfd, str
 			   + sizeof (bfd_vma) + sizeof(char));
 		  local_got_refcounts = bfd_zalloc (abfd, size);
 		  if (local_got_refcounts == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_refcounts (abfd) = local_got_refcounts;
 		}
 	      local_got_refcounts[r_symndx] += 1;
@@ -2858,7 +2792,7 @@ elf32_tic6x_check_relocs (bfd *abfd, str
 	      if (htab->elf.dynobj == NULL)
 		htab->elf.dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	  break;
 
@@ -2914,17 +2848,17 @@ elf32_tic6x_check_relocs (bfd *abfd, str
 		    htab->elf.dynobj = abfd;
 
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, 2, abfd, /*rela? */ TRUE);
+		    (sec, htab->elf.dynobj, 2, abfd, /*rela? */ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* If this is a global symbol, we count the number of
 		 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,10 +2879,10 @@ 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;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -2981,8 +2915,8 @@ elf32_tic6x_check_relocs (bfd *abfd, str
 						   "__c6xabi_DSBT_BASE",
 						   BSF_GLOBAL,
 						   bfd_und_section_ptr, 0,
-						   NULL, FALSE, FALSE, &bh))
-	      return FALSE;
+						   NULL, false, false, &bh))
+	      return false;
 	    ((struct elf_link_hash_entry *) bh)->non_elf = 0;
 	  }
 	  if (h != NULL && bfd_link_executable (info))
@@ -2998,10 +2932,10 @@ elf32_tic6x_check_relocs (bfd *abfd, str
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_add_symbol_hook (bfd *abfd,
 			     struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			     Elf_Internal_Sym *sym,
@@ -3014,13 +2948,13 @@ 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;
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -3032,19 +2966,6 @@ elf32_tic6x_symbol_processing (bfd *abfd
   switch (elfsym->internal_elf_sym.st_shndx)
     {
     case SHN_TIC6X_SCOMMON:
-      if (tic6x_elf_scom_section.name == NULL)
-	{
-	  /* Initialize the small common section.  */
-	  tic6x_elf_scom_section.name = ".scommon";
-	  tic6x_elf_scom_section.flags = SEC_IS_COMMON;
-	  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;
-	  tic6x_elf_scom_symbol.name = ".scommon";
-	  tic6x_elf_scom_symbol.flags = BSF_SECTION_SYM;
-	  tic6x_elf_scom_symbol.section = &tic6x_elf_scom_section;
-	  tic6x_elf_scom_symbol_ptr = &tic6x_elf_scom_symbol;
-	}
       asym->section = &tic6x_elf_scom_section;
       asym->value = elfsym->internal_elf_sym.st_size;
       break;
@@ -3067,7 +2988,7 @@ elf32_tic6x_link_output_symbol_hook (str
   return 1;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 				      asection *sec,
 				      int *retval)
@@ -3075,27 +2996,25 @@ elf32_tic6x_section_from_bfd_section (bf
   if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_TIC6X_SCOMMON;
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   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;
+    return true;
 
-  eh = (struct elf32_tic6x_link_hash_entry *) h;
   info = (struct bfd_link_info *) inf;
   htab = elf32_tic6x_hash_table (info);
 
@@ -3106,7 +3025,7 @@ elf32_tic6x_allocate_dynrelocs (struct e
       if (h->dynindx == -1 && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (bfd_link_pic (info)
@@ -3162,7 +3081,7 @@ elf32_tic6x_allocate_dynrelocs (struct e
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->elf.sgot;
@@ -3176,8 +3095,8 @@ elf32_tic6x_allocate_dynrelocs (struct e
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* Discard relocs on undefined weak syms with non-default
      visibility.  */
@@ -3189,7 +3108,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 +3119,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.  */
@@ -3212,13 +3131,13 @@ elf32_tic6x_allocate_dynrelocs (struct e
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
 
   /* 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;
 
@@ -3228,51 +3147,24 @@ elf32_tic6x_allocate_dynrelocs (struct e
       sreloc->size += p->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;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf32_tic6x_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+elf32_tic6x_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   struct elf32_tic6x_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
   htab = elf32_tic6x_hash_table (info);
   dynobj = htab->elf.dynobj;
   if (dynobj == NULL)
-    abort ();
+    return true;
 
   if (htab->elf.dynamic_sections_created)
     {
@@ -3284,6 +3176,7 @@ elf32_tic6x_size_dynamic_sections (bfd *
 	    abort ();
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -3356,10 +3249,10 @@ elf32_tic6x_size_dynamic_sections (bfd *
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
-      bfd_boolean strip_section = TRUE;
+      bool strip_section = true;
 
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
@@ -3379,17 +3272,17 @@ elf32_tic6x_size_dynamic_sections (bfd *
 	     It's too late to tell BFD to get rid of the symbols.  */
 
 	  if (htab->elf.hplt != NULL)
-	    strip_section = FALSE;
+	    strip_section = false;
 
 	  /* Round up the size of the PLT section to a multiple of 32.  */
 	  if (s == htab->elf.splt && s->size > 0)
 	    s->size = (s->size + 31) & ~(bfd_vma)31;
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0
 	      && s != htab->elf.srelplt)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -3427,7 +3320,8 @@ elf32_tic6x_size_dynamic_sections (bfd *
 	 of garbage.  */
       s->contents = bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
   if (htab->elf.dynamic_sections_created)
@@ -3440,66 +3334,36 @@ 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)
 	  || !add_dynamic_entry (DT_C6000_DSBT_INDEX,
 				 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);
+	return false;
 
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
     }
 #undef add_dynamic_entry
 
-  return TRUE;
+  return true;
 }
 
 /* This function is called after all the input files have been read,
    and the input sections have been assigned to output sections.  */
 
-static bfd_boolean
-elf32_tic6x_always_size_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+elf32_tic6x_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   if (elf32_tic6x_using_dsbt (output_bfd) && !bfd_link_relocatable (info)
       && !bfd_elf_stack_segment_size (output_bfd, info,
 				      "__stacksize", DEFAULT_STACK_SIZE))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_finish_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
 				     struct bfd_link_info *info)
 {
@@ -3585,7 +3449,7 @@ elf32_tic6x_finish_dynamic_sections (bfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return address for Ith PLT stub in section PLT, for relocation REL
@@ -3619,7 +3483,7 @@ elf32_tic6x_obj_attrs_order (int num)
   return num;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_obj_attrs_handle_unknown (bfd *abfd, int tag)
 {
   if ((tag & 127) < 64)
@@ -3629,7 +3493,7 @@ elf32_tic6x_obj_attrs_handle_unknown (bf
 	(_("%pB: error: unknown mandatory EABI object attribute %d"),
 	 abfd, tag);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   else
     {
@@ -3637,7 +3501,7 @@ elf32_tic6x_obj_attrs_handle_unknown (bf
 	/* xgettext:c-format */
 	(_("%pB: warning: unknown EABI object attribute %d"),
 	 abfd, tag);
-      return TRUE;
+      return true;
     }
 }
 
@@ -3714,16 +3578,20 @@ elf32_tic6x_array_alignment_to_tag (int
 /* Merge attributes from IBFD and OBFD, returning TRUE if the merge
    succeeded, FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
-  bfd_boolean result = TRUE;
+  bool result = true;
   obj_attribute *in_attr;
   obj_attribute *out_attr;
   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.  */
@@ -3735,7 +3603,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
 	 initialized.  */
       out_attr[0].i = 1;
 
-      return TRUE;
+      return true;
     }
 
   in_attr = elf_known_obj_attributes_proc (ibfd);
@@ -3751,7 +3619,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
 	/* xgettext:c-format */
 	(_("error: %pB requires more stack alignment than %pB preserves"),
 	 ibfd, obfd);
-      result = FALSE;
+      result = false;
     }
   if (in_attr[Tag_ABI_stack_align_preserved].i
       < out_attr[Tag_ABI_stack_align_needed].i)
@@ -3760,7 +3628,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
 	/* xgettext:c-format */
 	(_("error: %pB requires more stack alignment than %pB preserves"),
 	 obfd, ibfd);
-      result = FALSE;
+      result = false;
     }
 
   array_align_in = elf32_tic6x_tag_to_array_alignment
@@ -3770,7 +3638,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
       _bfd_error_handler
 	(_("error: unknown Tag_ABI_array_object_alignment value in %pB"),
 	 ibfd);
-      result = FALSE;
+      result = false;
     }
   array_align_out = elf32_tic6x_tag_to_array_alignment
     (out_attr[Tag_ABI_array_object_alignment].i);
@@ -3779,7 +3647,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
       _bfd_error_handler
 	(_("error: unknown Tag_ABI_array_object_alignment value in %pB"),
 	 obfd);
-      result = FALSE;
+      result = false;
     }
   array_expect_in = elf32_tic6x_tag_to_array_alignment
     (in_attr[Tag_ABI_array_object_align_expected].i);
@@ -3788,7 +3656,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
       _bfd_error_handler
 	(_("error: unknown Tag_ABI_array_object_align_expected value in %pB"),
 	 ibfd);
-      result = FALSE;
+      result = false;
     }
   array_expect_out = elf32_tic6x_tag_to_array_alignment
     (out_attr[Tag_ABI_array_object_align_expected].i);
@@ -3797,7 +3665,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
       _bfd_error_handler
 	(_("error: unknown Tag_ABI_array_object_align_expected value in %pB"),
 	 obfd);
-      result = FALSE;
+      result = false;
     }
 
   if (array_align_out < array_expect_in)
@@ -3806,7 +3674,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
 	/* xgettext:c-format */
 	(_("error: %pB requires more array alignment than %pB preserves"),
 	 ibfd, obfd);
-      result = FALSE;
+      result = false;
     }
   if (array_align_in < array_expect_out)
     {
@@ -3814,7 +3682,7 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
 	/* xgettext:c-format */
 	(_("error: %pB requires more array alignment than %pB preserves"),
 	 obfd, ibfd);
-      result = FALSE;
+      result = false;
     }
 
   for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
@@ -3862,6 +3730,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;
@@ -3909,26 +3780,26 @@ elf32_tic6x_merge_attributes (bfd *ibfd,
 
   /* Merge Tag_ABI_compatibility attributes and any common GNU ones.  */
   if (!_bfd_elf_merge_object_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd);
 
   return result;
 }
 
-static bfd_boolean
+static bool
 elf32_tic6x_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   if (! is_tic6x_elf (ibfd) || ! is_tic6x_elf (info->output_bfd))
-    return TRUE;
+    return true;
 
   if (!elf32_tic6x_merge_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Add a new unwind edit to the list described by HEAD, TAIL.  If TINDEX is zero,
@@ -4026,11 +3897,11 @@ elf32_tic6x_insert_cantunwind_after (ase
    (in elf32_tic6x_write_section).
 */
 
-bfd_boolean
+bool
 elf32_tic6x_fix_exidx_coverage (asection **text_section_order,
 				unsigned int num_text_sections,
 				struct bfd_link_info *info,
-				bfd_boolean merge_exidx_entries)
+				bool merge_exidx_entries)
 {
   bfd *inp;
   unsigned int last_second_word = 0, i;
@@ -4185,7 +4056,7 @@ elf32_tic6x_fix_exidx_coverage (asection
   if (last_exidx_sec && last_unwind_type != 0)
     elf32_tic6x_insert_cantunwind_after (last_text_sec, last_exidx_sec);
 
-  return TRUE;
+  return true;
 }
 
 /* Add ADDEND to lower 31 bits of VAL, leaving other bits unmodified.  */
@@ -4223,7 +4094,7 @@ elf32_tic6x_copy_exidx_entry (bfd *outpu
 
 /* Do the actual mangling of exception index tables.  */
 
-static bfd_boolean
+static bool
 elf32_tic6x_write_section (bfd *output_bfd,
 			 struct bfd_link_info *link_info,
 			 asection *sec,
@@ -4235,16 +4106,16 @@ elf32_tic6x_write_section (bfd *output_b
   bfd_vma offset = sec->output_section->vma + sec->output_offset;
 
   if (globals == NULL)
-    return FALSE;
+    return false;
 
   /* If this section has not been allocated an _tic6x_elf_section_data
      structure then we cannot record anything.  */
   tic6x_data = get_tic6x_elf_section_data (sec);
   if (tic6x_data == NULL)
-    return FALSE;
+    return false;
 
   if (tic6x_data->elf.this_hdr.sh_type != SHT_C6000_UNWIND)
-    return FALSE;
+    return false;
 
   tic6x_unwind_table_edit *edit_node
     = tic6x_data->u.exidx.unwind_edit_list;
@@ -4331,9 +4202,11 @@ elf32_tic6x_write_section (bfd *output_b
 			      edited_contents,
 			      (file_ptr) sec->output_offset, sec->size);
 
-  return TRUE;
+  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
@@ -4383,10 +4256,10 @@ elf32_tic6x_write_section (bfd *output_b
 #define elf_backend_relocs_compatible	_bfd_elf_relocs_compatible
 #define elf_backend_finish_dynamic_symbol \
   elf32_tic6x_finish_dynamic_symbol
-#define elf_backend_always_size_sections \
-  elf32_tic6x_always_size_sections
-#define elf_backend_size_dynamic_sections \
-  elf32_tic6x_size_dynamic_sections
+#define elf_backend_early_size_sections \
+  elf32_tic6x_early_size_sections
+#define elf_backend_late_size_sections \
+  elf32_tic6x_late_size_sections
 #define elf_backend_finish_dynamic_sections \
   elf32_tic6x_finish_dynamic_sections
 #define bfd_elf32_bfd_final_link \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-tic6x.h ./bfd/elf32-tic6x.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-tic6x.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-tic6x.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF support for TI C6X
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -26,7 +26,7 @@ extern int elf32_tic6x_merge_arch_attrib
 
 /* This function is provided for use from the assembler.  */
 
-extern void elf32_tic6x_set_use_rela_p (bfd *, bfd_boolean);
+extern void elf32_tic6x_set_use_rela_p (bfd *, bool);
 
 struct elf32_tic6x_params
 {
@@ -38,10 +38,10 @@ extern void elf32_tic6x_setup (struct bf
 			       struct elf32_tic6x_params *);
 
 /* C6x unwind section editing support.  */
-extern bfd_boolean elf32_tic6x_fix_exidx_coverage (struct bfd_section **,
-						   unsigned int,
-						   struct bfd_link_info *,
-						   bfd_boolean);
+extern bool elf32_tic6x_fix_exidx_coverage (struct bfd_section **,
+					    unsigned int,
+					    struct bfd_link_info *,
+					    bool);
 #ifdef __cplusplus
 }
 #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.20200303/bfd/elf32-tilegx.c ./bfd/elf32-tilegx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-tilegx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-tilegx.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,14 +28,14 @@
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 tilegx_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
   size_t size;
 
   if (note->descsz != TILEGX_PRSTATUS_SIZEOF)
-    return FALSE;
+    return false;
 
   /* pr_cursig */
   elf_tdata (abfd)->core->signal =
@@ -54,11 +54,11 @@ tilegx_elf_grok_prstatus (bfd *abfd, Elf
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 tilegx_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz != TILEGX_PRPSINFO_SIZEOF)
-    return FALSE;
+    return false;
 
   elf_tdata (abfd)->core->program
     = _bfd_elfcore_strndup (abfd, note->descdata + TILEGX_PRPSINFO_OFFSET_PR_FNAME, 16);
@@ -77,7 +77,7 @@ tilegx_elf_grok_psinfo (bfd *abfd, Elf_I
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -105,7 +105,7 @@ tilegx_elf_grok_psinfo (bfd *abfd, Elf_I
 #define elf_backend_check_relocs	     tilegx_elf_check_relocs
 #define elf_backend_adjust_dynamic_symbol    tilegx_elf_adjust_dynamic_symbol
 #define elf_backend_omit_section_dynsym	     tilegx_elf_omit_section_dynsym
-#define elf_backend_size_dynamic_sections    tilegx_elf_size_dynamic_sections
+#define elf_backend_late_size_sections	     tilegx_elf_late_size_sections
 #define elf_backend_relocate_section	     tilegx_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol    tilegx_elf_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections  tilegx_elf_finish_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.20200303/bfd/elf32-tilegx.h ./bfd/elf32-tilegx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-tilegx.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-tilegx.h	2026-03-05 02:07:20.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-2025 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.20200303/bfd/elf32-tilepro.c ./bfd/elf32-tilepro.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-tilepro.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-tilepro.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILEPro-specific support for 32-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -34,275 +34,275 @@ static reloc_howto_type tilepro_elf_howt
   /* This reloc does nothing.  */
   HOWTO (R_TILEPRO_NONE,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_TILEPRO_32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_TILEPRO_16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_TILEPRO_8,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit pc-relative relocation.  */
   HOWTO (R_TILEPRO_32_PCREL,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_32_PCREL", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit pc-relative relocation.  */
   HOWTO (R_TILEPRO_16_PCREL,/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* An 8 bit pc-relative relocation.  */
   HOWTO (R_TILEPRO_8_PCREL,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_8_PCREL",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit relocation without overflow.  */
   HOWTO (R_TILEPRO_LO16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The high order 16 bits of an address.  */
   HOWTO (R_TILEPRO_HI16,	/* type */
 	 16,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The high order 16 bits of an address, plus 1 if the contents of
      the low 16 bits, treated as a signed number, is negative.  */
   HOWTO (R_TILEPRO_HA16,	/* type */
 	 16,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEPRO_HA16",  /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
-  HOWTO (R_TILEPRO_COPY,		/* type */
+  HOWTO (R_TILEPRO_COPY,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_JMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_JMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_BROFF_X1, /* type */
 	 TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEPRO_BROFF_X1", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_JOFFLONG_X1, /* type */
 	 TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 29,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEPRO_JOFFLONG_X1", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_JOFFLONG_X1_PLT, /* type */
 	 TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 29,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEPRO_JOFFLONG_X1_PLT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 #define TILEPRO_IMM_HOWTO(name, size, bitsize) \
-  HOWTO (name, 0, size, bitsize, FALSE, 0, \
+  HOWTO (name, 0, size, bitsize, false, 0, \
 	 complain_overflow_signed, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, -1, FALSE)
+	 #name, false, 0, -1, false)
 
 #define TILEPRO_UIMM_HOWTO(name, size, bitsize) \
-  HOWTO (name, 0, size, bitsize, FALSE, 0, \
+  HOWTO (name, 0, size, bitsize, false, 0, \
 	 complain_overflow_unsigned, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, -1, FALSE)
+	 #name, false, 0, -1, false)
 
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X0,  0,  8),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y0,  0,  8),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X1,  0,  8),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y1,  0,  8),
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_MT_IMM15_X1, 1,  15),
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_MF_IMM15_X1, 1,  15),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X0, 1, 16),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X1, 1, 16),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X0,  1,  8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y0,  1,  8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X1,  1,  8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y1,  1,  8),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_MT_IMM15_X1, 2,  15),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_MF_IMM15_X1, 2,  15),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X0, 2, 16),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X1, 2, 16),
 
 #define TILEPRO_IMM16_HOWTO(name, rshift) \
-  HOWTO (name, rshift, 1, 16, FALSE, 0, \
+  HOWTO (name, rshift, 2, 16, false, 0, \
 	 complain_overflow_dont, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, 0xffff, FALSE)
+	 #name, false, 0, 0xffff, false)
 
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_LO,  0),
@@ -315,36 +315,36 @@ static reloc_howto_type tilepro_elf_howt
 
   HOWTO (R_TILEPRO_IMM16_X0_PCREL,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_IMM16_X0_PCREL",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_IMM16_X1_PCREL,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_IMM16_X1_PCREL",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 #define TILEPRO_IMM16_HOWTO_PCREL(name, rshift) \
-  HOWTO (name, rshift, 1, 16, TRUE, 0, \
+  HOWTO (name, rshift, 2, 16, true, 0, \
 	 complain_overflow_dont, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, 0xffff, TRUE)
+	 #name, false, 0, 0xffff, true)
 
   TILEPRO_IMM16_HOWTO_PCREL (R_TILEPRO_IMM16_X0_LO_PCREL,  0),
   TILEPRO_IMM16_HOWTO_PCREL (R_TILEPRO_IMM16_X1_LO_PCREL,  0),
@@ -354,8 +354,8 @@ static reloc_howto_type tilepro_elf_howt
   TILEPRO_IMM16_HOWTO_PCREL (R_TILEPRO_IMM16_X1_HA_PCREL, 16),
 
   /* Byte offset into GOT for a particular symbol. */
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X0_GOT, 1, 16),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X1_GOT, 1, 16),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X0_GOT, 2, 16),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM16_X1_GOT, 2, 16),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_GOT_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_GOT_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_GOT_HI, 16),
@@ -363,17 +363,17 @@ static reloc_howto_type tilepro_elf_howt
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_GOT_HA, 16),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_GOT_HA, 16),
 
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_MMSTART_X0, 0, 5),
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_MMEND_X0,   0, 5),
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_MMSTART_X1, 0, 5),
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_MMEND_X1,   0, 5),
-
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_SHAMT_X0, 0, 5),
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_SHAMT_X1, 0, 5),
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_SHAMT_Y0, 0, 5),
-  TILEPRO_UIMM_HOWTO(R_TILEPRO_SHAMT_Y1, 0, 5),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_MMSTART_X0, 1, 5),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_MMEND_X0,   1, 5),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_MMSTART_X1, 1, 5),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_MMEND_X1,   1, 5),
+
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_SHAMT_X0, 1, 5),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_SHAMT_X1, 1, 5),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_SHAMT_Y0, 1, 5),
+  TILEPRO_UIMM_HOWTO(R_TILEPRO_SHAMT_Y1, 1, 5),
 
-  TILEPRO_IMM_HOWTO(R_TILEPRO_DEST_IMM8_X1, 0, 8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_DEST_IMM8_X1, 1, 8),
 
   /* These relocs are currently not defined.  */
   EMPTY_HOWTO (56),
@@ -383,53 +383,53 @@ static reloc_howto_type tilepro_elf_howt
 
   HOWTO (R_TILEPRO_TLS_GD_CALL, /* type */
 	 TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 29,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEPRO_TLS_GD_CALL", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X0_TLS_GD_ADD,  0,  8),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X1_TLS_GD_ADD,  0,  8),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y0_TLS_GD_ADD,  0,  8),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y1_TLS_GD_ADD,  0,  8),
-  TILEPRO_IMM_HOWTO(R_TILEPRO_TLS_IE_LOAD,  0,  8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X0_TLS_GD_ADD,  1,  8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_X1_TLS_GD_ADD,  1,  8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y0_TLS_GD_ADD,  1,  8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_IMM8_Y1_TLS_GD_ADD,  1,  8),
+  TILEPRO_IMM_HOWTO(R_TILEPRO_TLS_IE_LOAD,  1,  8),
 
   /* Offsets into the GOT of TLS Descriptors. */
 
   HOWTO (R_TILEPRO_IMM16_X0_TLS_GD,/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_IMM16_X0_TLS_GD",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_TILEPRO_IMM16_X1_TLS_GD,/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_IMM16_X1_TLS_GD",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_GD_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_GD_LO,  0),
@@ -442,31 +442,31 @@ static reloc_howto_type tilepro_elf_howt
 
   HOWTO (R_TILEPRO_IMM16_X0_TLS_IE,/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_IMM16_X0_TLS_IE",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_IMM16_X1_TLS_IE,/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_IMM16_X1_TLS_IE",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_IE_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_IE_LO,  0),
@@ -476,43 +476,43 @@ static reloc_howto_type tilepro_elf_howt
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_IE_HA, 16),
 
   /* These are common with the Solaris TLS implementation. */
-  HOWTO(R_TILEPRO_TLS_DTPMOD32, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+  HOWTO(R_TILEPRO_TLS_DTPMOD32, 0, 0, 0, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_TILEPRO_TLS_DTPMOD32",
-	FALSE, 0, 0, TRUE),
-  HOWTO(R_TILEPRO_TLS_DTPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	false, 0, 0, true),
+  HOWTO(R_TILEPRO_TLS_DTPOFF32, 0, 4, 32, false, 0, complain_overflow_bitfield,
 	bfd_elf_generic_reloc, "R_TILEPRO_TLS_DTPOFF32",
-	FALSE, 0, 0xFFFFFFFF, TRUE),
-  HOWTO(R_TILEPRO_TLS_TPOFF32, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+	false, 0, 0xFFFFFFFF, true),
+  HOWTO(R_TILEPRO_TLS_TPOFF32, 0, 0, 0, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_TILEPRO_TLS_TPOFF32",
-	FALSE, 0, 0, TRUE),
+	false, 0, 0, true),
 
   HOWTO (R_TILEPRO_IMM16_X0_TLS_LE,/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_IMM16_X0_TLS_LE",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEPRO_IMM16_X1_TLS_LE,/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEPRO_IMM16_X1_TLS_LE",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X0_TLS_LE_LO,  0),
   TILEPRO_IMM16_HOWTO (R_TILEPRO_IMM16_X1_TLS_LE_LO,  0),
@@ -527,32 +527,32 @@ static reloc_howto_type tilepro_elf_howt
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_TILEPRO_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_TILEPRO_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_TILEPRO_GNU_VTENTRY,	    /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_TILEPRO_GNU_VTENTRY",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 };
 
@@ -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
@@ -719,30 +716,21 @@ struct _bfd_tilepro_elf_obj_tdata
 
 /* Allocate TILEPro ELF private object data.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_mkobject (bfd *abfd)
 {
   return bfd_elf_allocate_object (abfd,
-				  sizeof (struct _bfd_tilepro_elf_obj_tdata),
-				  TILEPRO_ELF_DATA);
+				  sizeof (struct _bfd_tilepro_elf_obj_tdata));
 }
 
 #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,
@@ -783,7 +771,7 @@ tilepro_reloc_name_lookup (bfd *abfd ATT
 
 /* Set the howto pointer for an TILEPro ELF reloc.  */
 
-static bfd_boolean
+static bool
 tilepro_info_to_howto_rela (bfd * abfd ATTRIBUTE_UNUSED,
 			    arelent * cache_ptr,
 			    Elf_Internal_Rela * dst)
@@ -803,9 +791,9 @@ tilepro_info_to_howto_rela (bfd * abfd A
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 typedef tilepro_bundle_bits (*tilepro_create_func)(int);
@@ -918,14 +906,14 @@ static const tilepro_create_func reloc_t
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
   size_t size;
 
   if (note->descsz != TILEPRO_PRSTATUS_SIZEOF)
-    return FALSE;
+    return false;
 
   /* pr_cursig */
   elf_tdata (abfd)->core->signal =
@@ -944,11 +932,11 @@ tilepro_elf_grok_prstatus (bfd *abfd, El
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 tilepro_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz != TILEPRO_PRPSINFO_SIZEOF)
-    return FALSE;
+    return false;
 
   elf_tdata (abfd)->core->program
     = _bfd_elfcore_strndup (abfd,
@@ -971,7 +959,7 @@ tilepro_elf_grok_psinfo (bfd *abfd, Elf_
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1116,7 +1104,7 @@ tilepro_plt_entry_build (asection *splt,
   bfd_signed_vma dist_got0 = dist_got_entry - got_offset;
 
   /* Check whether we can use the short plt entry with 16-bit offset.  */
-  bfd_boolean short_plt_entry =
+  bool short_plt_entry =
     (dist_got_entry <= 0x7fff && dist_got0 >= -0x8000);
 
   /* Copy the plt entry template.  */
@@ -1176,7 +1164,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,27 +1175,26 @@ 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,
-				      sizeof (struct tilepro_elf_link_hash_entry),
-				      TILEPRO_ELF_DATA))
+  if (!_bfd_elf_link_hash_table_init (ret, abfd, link_hash_newfunc,
+				      sizeof (struct tilepro_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
     }
 
-  return &ret->elf.root;
+  return &ret->root;
 }
 
 /* Create the .got section.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags;
@@ -1219,7 +1205,7 @@ tilepro_elf_create_got_section (bfd *abf
 
   /* This function may be called more than once.  */
   if (htab->sgot != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
 
@@ -1230,13 +1216,13 @@ tilepro_elf_create_got_section (bfd *abf
 				    | SEC_READONLY));
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->srelgot = s;
 
   s = s_got = bfd_make_section_with_flags (abfd, ".got", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->sgot = s;
 
   /* The first bit of the global offset table is the header.  */
@@ -1247,7 +1233,7 @@ tilepro_elf_create_got_section (bfd *abf
       s = bfd_make_section_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->sgotplt = s;
 
       /* Reserve room for the header.  */
@@ -1264,22 +1250,22 @@ tilepro_elf_create_got_section (bfd *abf
 				       "_GLOBAL_OFFSET_TABLE_");
       elf_hash_table (info)->hgot = h;
       if (h == NULL)
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create .plt, .rela.plt, .got, .got.plt, .rela.got, .dynbss, and
    .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
    hash table.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_create_dynamic_sections (bfd *dynobj,
 				     struct bfd_link_info *info)
 {
   if (!tilepro_elf_create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   return _bfd_elf_create_dynamic_sections (dynobj, info);
 }
@@ -1296,37 +1282,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)
     {
@@ -1433,11 +1388,11 @@ tilepro_elf_tls_transition (struct bfd_l
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 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;
@@ -1446,7 +1401,7 @@ tilepro_elf_check_relocs (bfd *abfd, str
   int num_relocs;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = tilepro_elf_hash_table (info);
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -1458,8 +1413,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++)
@@ -1477,7 +1432,7 @@ tilepro_elf_check_relocs (bfd *abfd, str
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"),
 			      abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       if (r_symndx < symtab_hdr->sh_info)
@@ -1566,7 +1521,7 @@ tilepro_elf_check_relocs (bfd *abfd, str
 		    local_got_refcounts = ((bfd_signed_vma *)
 					   bfd_zalloc (abfd, size));
 		    if (local_got_refcounts == NULL)
-		      return FALSE;
+		      return false;
 		    elf_local_got_refcounts (abfd) = local_got_refcounts;
 		    _bfd_tilepro_elf_local_got_tls_type (abfd)
 		      = (char *) (local_got_refcounts + symtab_hdr->sh_info);
@@ -1590,7 +1545,7 @@ tilepro_elf_check_relocs (bfd *abfd, str
 		      /* xgettext:c-format */
 		      (_("%pB: `%s' accessed both as normal and thread local symbol"),
 		       abfd, h ? h->root.root.string : "<local>");
-		    return FALSE;
+		    return false;
 		  }
 	      }
 
@@ -1604,10 +1559,10 @@ 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))
-		return FALSE;
+	      if (!tilepro_elf_create_got_section (htab->dynobj, info))
+		return false;
 	    }
 	  break;
 
@@ -1620,9 +1575,9 @@ tilepro_elf_check_relocs (bfd *abfd, str
 	      if (! _bfd_generic_link_add_one_symbol (info, abfd,
 						      "__tls_get_addr", 0,
 						      bfd_und_section_ptr, 0,
-						      NULL, FALSE, FALSE,
+						      NULL, false, false,
 						      &bh))
-		return FALSE;
+		return false;
 	      h = (struct elf_link_hash_entry *) bh;
 	    }
 	  else
@@ -1751,17 +1706,16 @@ 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;
+		    return false;
 		}
 
 	      /* 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.
@@ -1775,7 +1729,7 @@ tilepro_elf_check_relocs (bfd *abfd, str
 		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
 						abfd, r_symndx);
 		  if (isym == NULL)
-		    return FALSE;
+		    return false;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
@@ -1788,11 +1742,11 @@ 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;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -1809,12 +1763,12 @@ tilepro_elf_check_relocs (bfd *abfd, str
 
 	case R_TILEPRO_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_TILEPRO_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -1822,7 +1776,7 @@ tilepro_elf_check_relocs (bfd *abfd, str
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1861,8 +1815,8 @@ tilepro_elf_gc_mark_hook (asection *sec,
 	  if (! _bfd_generic_link_add_one_symbol (info, sec->owner,
 						  "__tls_get_addr", 0,
 						  bfd_und_section_ptr,
-						  0, NULL, FALSE,
-						  FALSE, &bh))
+						  0, NULL, false,
+						  false, &bh))
 	    return NULL;
 	  h = (struct elf_link_hash_entry *) bh;
 	  BFD_ASSERT (h != NULL);
@@ -1876,41 +1830,24 @@ 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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 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
@@ -1937,7 +1874,7 @@ tilepro_elf_adjust_dynamic_symbol (struc
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -1951,7 +1888,7 @@ tilepro_elf_adjust_dynamic_symbol (struc
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -1962,26 +1899,26 @@ tilepro_elf_adjust_dynamic_symbol (struc
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -2000,13 +1937,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)
     {
@@ -2020,22 +1957,21 @@ tilepro_elf_adjust_dynamic_symbol (struc
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 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)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   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.
@@ -2044,12 +1980,12 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       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 +2011,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
 	{
@@ -2102,7 +2038,7 @@ allocate_dynrelocs (struct elf_link_hash
   else if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = tilepro_elf_hash_entry(h)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -2111,32 +2047,31 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    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)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -2150,7 +2085,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 +2098,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.  */
@@ -2176,7 +2111,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -2189,7 +2124,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))))
 	{
@@ -2199,7 +2134,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -2208,52 +2143,25 @@ 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;
     }
 
-  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;
 }
 
 /* Return true if the dynamic symbol for a given section should be
    omitted when creating a shared library.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_omit_section_dynsym (bfd *output_bfd,
 				    struct bfd_link_info *info,
 				    asection *p)
@@ -2262,7 +2170,7 @@ tilepro_elf_omit_section_dynsym (bfd *ou
      against the _GLOBAL_OFFSET_TABLE_ symbol emitted in PIC mode
      can be turned into relocations against the .got symbol.  */
   if (strcmp (p->name, ".got") == 0)
-    return FALSE;
+    return false;
 
   return _bfd_elf_omit_section_dynsym_default (output_bfd, info, p);
 }
@@ -2271,21 +2179,20 @@ tilepro_elf_omit_section_dynsym (bfd *ou
 
 #define ELF32_DYNAMIC_INTERPRETER "/lib/ld.so.1"
 
-static bfd_boolean
-tilepro_elf_size_dynamic_sections (bfd *output_bfd,
-				      struct bfd_link_info *info)
+static bool
+tilepro_elf_late_size_sections (bfd *output_bfd,
+				struct bfd_link_info *info)
 {
-  (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;
-  BFD_ASSERT (dynobj != NULL);
+  dynobj = htab->dynobj;
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -2296,6 +2203,7 @@ tilepro_elf_size_dynamic_sections (bfd *
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF32_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF32_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -2350,8 +2258,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,37 +2280,37 @@ 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),
 				  "_GLOBAL_OFFSET_TABLE_",
-				  FALSE, FALSE, FALSE);
+				  false, false, false);
 
       /* Don't allocate .got.plt section if there are no GOT nor PLT
 	 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,16 +2321,16 @@ 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.  */
 	}
-      else if (strncmp (s->name, ".rela", 5) == 0)
+      else if (startswith (s->name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
@@ -2460,53 +2368,11 @@ tilepro_elf_size_dynamic_sections (bfd *
 	 at the beginning, and we don't want garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	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;
-	}
+	return false;
+      s->alloced = 1;
     }
-#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
@@ -2645,14 +2511,14 @@ static const bfd_byte insn_tls_gd_add_Y0
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 tilepro_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)
 {
-  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;
@@ -2681,7 +2547,7 @@ tilepro_elf_relocate_section (bfd *outpu
   for (; rel < relend; rel++)
     {
       int r_type, tls_type;
-      bfd_boolean is_tls_iele, is_tls_le;
+      bool is_tls_iele, is_tls_le;
       reloc_howto_type *howto;
       unsigned long r_symndx;
       struct elf_link_hash_entry *h;
@@ -2692,9 +2558,9 @@ tilepro_elf_relocate_section (bfd *outpu
       bfd_reloc_status_type r;
       const char *name;
       bfd_vma off;
-      bfd_boolean is_plt = FALSE;
-      bfd_boolean resolved_to_zero;
-      bfd_boolean unresolved_reloc;
+      bool is_plt = false;
+      bool resolved_to_zero;
+      bool unresolved_reloc;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       if (r_type == R_TILEPRO_GNU_VTINHERIT
@@ -2711,7 +2577,7 @@ tilepro_elf_relocate_section (bfd *outpu
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -2720,8 +2586,8 @@ tilepro_elf_relocate_section (bfd *outpu
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2741,7 +2607,8 @@ tilepro_elf_relocate_section (bfd *outpu
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_TILEPRO_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -2797,8 +2664,8 @@ tilepro_elf_relocate_section (bfd *outpu
 
 	      /* GD -> GD */
 	      h = (struct elf_link_hash_entry *)
-		bfd_link_hash_lookup (info->hash, "__tls_get_addr", FALSE,
-				      FALSE, TRUE);
+		bfd_link_hash_lookup (info->hash, "__tls_get_addr", false,
+				      false, true);
 	      BFD_ASSERT (h != NULL);
 	      r_type = R_TILEPRO_JOFFLONG_X1_PLT;
 	      howto = tilepro_elf_howto_table + r_type;
@@ -2883,12 +2750,12 @@ 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)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      BFD_ASSERT (off != (bfd_vma) -1);
@@ -2917,12 +2784,12 @@ 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;
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -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,10 +2845,10 @@ 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;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_TILEPRO_32_PCREL:
@@ -3054,7 +2921,7 @@ tilepro_elf_relocate_section (bfd *outpu
 		      || h->root.type == bfd_link_hash_undefined)))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate = FALSE;
+	      bool skip, relocate = false;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
@@ -3062,15 +2929,15 @@ tilepro_elf_relocate_section (bfd *outpu
 
 	      BFD_ASSERT (sreloc != NULL);
 
-	      skip = FALSE;
+	      skip = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -3085,7 +2952,7 @@ tilepro_elf_relocate_section (bfd *outpu
 		     FIXME: Add code tracking needed dynamic relocs as
 		     e.g. i386 has.  */
 		  if (h->dynindx == -1)
-		    skip = TRUE, relocate = TRUE;
+		    skip = true, relocate = true;
 		  break;
 		}
 
@@ -3118,14 +2985,14 @@ 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;
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -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;
 			    }
 
@@ -3154,7 +3021,7 @@ tilepro_elf_relocate_section (bfd *outpu
 				(_("%pB: probably compiled without -fPIC?"),
 				 input_bfd);
 			      bfd_set_error (bfd_error_bad_value);
-			      return FALSE;
+			      return false;
 			    }
 			}
 
@@ -3182,17 +3049,17 @@ tilepro_elf_relocate_section (bfd *outpu
 	  if (!bfd_link_executable (info))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip;
+	      bool skip;
 
 	      BFD_ASSERT (sreloc != NULL);
-	      skip = FALSE;
+	      skip = false;
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE;
+		skip = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 	      if (skip)
@@ -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)
@@ -3276,15 +3143,15 @@ tilepro_elf_relocate_section (bfd *outpu
 	    {
 	      Elf_Internal_Rela outrel;
 	      int indx = 0;
-	      bfd_boolean need_relocs = FALSE;
+	      bool 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;
+		bool dyn;
+		dyn = htab->dynamic_sections_created;
 
 		if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
 						     bfd_link_pic (info),
@@ -3302,7 +3169,7 @@ tilepro_elf_relocate_section (bfd *outpu
 		  && (h == NULL
 		      || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
 		      || h->root.type != bfd_link_hash_undefweak))
-		    need_relocs = TRUE;
+		    need_relocs = true;
 
 	      switch (r_type)
 		{
@@ -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;
@@ -3387,7 +3254,7 @@ tilepro_elf_relocate_section (bfd *outpu
 	    abort ();
 
 	  relocation = off - got_base;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  howto = tilepro_elf_howto_table + r_type;
 	  break;
 
@@ -3498,7 +3365,7 @@ tilepro_elf_relocate_section (bfd *outpu
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -3524,19 +3391,19 @@ tilepro_elf_relocate_section (bfd *outpu
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 tilepro_elf_finish_dynamic_symbol (bfd *output_bfd,
 				   struct bfd_link_info *info,
 				   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,30 +3520,30 @@ 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;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 tilepro_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
 		    bfd *dynobj, asection *sdyn,
 		    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:
@@ -3709,29 +3576,29 @@ tilepro_finish_dyn (bfd *output_bfd, str
 
       bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 tilepro_elf_finish_dynamic_sections (bfd *output_bfd,
 				     struct bfd_link_info *info)
 {
   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");
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       asection *splt;
-      bfd_boolean ret;
+      bool 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,46 +3619,46 @@ 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);
-	  return FALSE;
+	    (_("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;
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -3872,7 +3739,7 @@ tilepro_additional_program_headers (bfd
 #define elf_backend_check_relocs	     tilepro_elf_check_relocs
 #define elf_backend_adjust_dynamic_symbol    tilepro_elf_adjust_dynamic_symbol
 #define elf_backend_omit_section_dynsym	     tilepro_elf_omit_section_dynsym
-#define elf_backend_size_dynamic_sections    tilepro_elf_size_dynamic_sections
+#define elf_backend_late_size_sections	     tilepro_elf_late_size_sections
 #define elf_backend_relocate_section	     tilepro_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol    tilepro_elf_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections  tilepro_elf_finish_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.20200303/bfd/elf32-tilepro.h ./bfd/elf32-tilepro.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-tilepro.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-tilepro.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILEPro-specific support for 32-bit ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 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.20200303/bfd/elf32-v850.c ./bfd/elf32-v850.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-v850.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-v850.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* V850-specific support for 32-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -43,13 +43,13 @@ static reloc_howto_type v850_elf_howto_t
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 v850_elf_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
 		       const Elf_Internal_Rela *relocs)
 {
-  bfd_boolean ret = TRUE;
+  bool ret = true;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
@@ -59,7 +59,7 @@ v850_elf_check_relocs (bfd *abfd,
   const char *common = NULL;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
 #ifdef DEBUG
   _bfd_error_handler ("v850_elf_check_relocs called for section %pA in %pB",
@@ -96,14 +96,14 @@ v850_elf_check_relocs (bfd *abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_V850_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries
 	   are actually used.  Record for later use during GC.  */
 	case R_V850_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_V850_SDA_16_16_SPLIT_OFFSET:
@@ -144,7 +144,7 @@ v850_elf_check_relocs (bfd *abfd,
 		  && (h->other & V850_OTHER_ERROR) == 0)
 		{
 		  const char * msg;
-		  static char  buff[200]; /* XXX */
+		  char *buff;
 
 		  switch (h->other & V850_OTHER_MASK)
 		    {
@@ -165,14 +165,18 @@ v850_elf_check_relocs (bfd *abfd,
 		      break;
 		    }
 
-		  sprintf (buff, msg, h->root.root.string);
-		  info->callbacks->warning (info, buff, h->root.root.string,
+		  if (asprintf (&buff, msg, h->root.root.string) < 0)
+		    buff = NULL;
+		  else
+		    msg = buff;
+		  info->callbacks->warning (info, msg, h->root.root.string,
 					    abfd, h->root.u.def.section,
 					    (bfd_vma) 0);
+		  free (buff);
 
 		  bfd_set_error (bfd_error_bad_value);
 		  h->other |= V850_OTHER_ERROR;
-		  ret = FALSE;
+		  ret = false;
 		}
 	    }
 
@@ -183,7 +187,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
@@ -214,11 +218,11 @@ v850_elf_check_relocs (bfd *abfd,
 
 typedef struct hi16s_location
 {
-  bfd_vma		  addend;
-  bfd_byte *		  address;
-  unsigned long		  counter;
-  bfd_boolean		  found;
-  struct hi16s_location * next;
+  bfd_vma addend;
+  bfd_byte *address;
+  unsigned long counter;
+  bool found;
+  struct hi16s_location *next;
 }
 hi16s_location;
 
@@ -230,7 +234,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)
@@ -242,7 +246,7 @@ remember_hi16s_reloc (bfd *abfd, bfd_vma
   entry->addend  = addend;
   entry->address = address;
   entry->counter = hi16s_counter ++;
-  entry->found   = FALSE;
+  entry->found   = false;
   entry->next    = previous_hi16s;
   previous_hi16s = entry;
 
@@ -258,7 +262,7 @@ remember_hi16s_reloc (bfd *abfd, bfd_vma
 }
 
 static bfd_byte *
-find_remembered_hi16s_reloc (bfd_vma addend, bfd_boolean *already_found)
+find_remembered_hi16s_reloc (bfd_vma addend, bool *already_found)
 {
   hi16s_location *match = NULL;
   hi16s_location *entry;
@@ -285,7 +289,7 @@ find_remembered_hi16s_reloc (bfd_vma add
     * already_found = match->found;
 
   /* Note that this entry has now been used.  */
-  match->found = TRUE;
+  match->found = true;
 
   return addr;
 }
@@ -432,7 +436,7 @@ find_remembered_hi16s_reloc (bfd_vma add
      ------------
        0x00006fff   which is wrong (assuming that fred is at 0xffff).  */
 
-static bfd_boolean
+static bool
 v850_elf_perform_lo16_relocation (bfd *abfd, unsigned long *insn,
 				  unsigned long addend)
 {
@@ -443,7 +447,7 @@ v850_elf_perform_lo16_relocation (bfd *a
       || (OVERFLOWS (addend, *insn)
 	  && ((! BIT15_SET (*insn)) || (BIT15_SET (addend)))))
     {
-      bfd_boolean already_updated;
+      bool already_updated;
       bfd_byte *hi16s_address = find_remembered_hi16s_reloc
 	(addend, & already_updated);
 
@@ -460,7 +464,7 @@ v850_elf_perform_lo16_relocation (bfd *a
       else
 	{
 	  _bfd_error_handler (_("failed to find previous HI16 reloc"));
-	  return FALSE;
+	  return false;
 	}
     }
 #undef OVERFLOWS
@@ -469,7 +473,7 @@ v850_elf_perform_lo16_relocation (bfd *a
   /* Do not complain if value has top bit set, as this has been
      anticipated.  */
   *insn = (*insn + addend) & 0xffff;
-  return TRUE;
+  return true;
 }
 
 /* FIXME:  The code here probably ought to be removed and the code in reloc.c
@@ -891,665 +895,665 @@ static reloc_howto_type v850_elf_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_V850_NONE,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 3,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,				/* Size.  */
 	 0,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* Special_function.  */
 	 "R_V850_NONE",			/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0,				/* Src_mask.  */
 	 0,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* A PC relative 9 bit branch.  */
   HOWTO (R_V850_9_PCREL,		/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 9,				/* Bitsize.  */
-	 TRUE,				/* PC_relative.  */
+	 true,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_bitfield,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_9_PCREL",		/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x00ffffff,			/* Src_mask.  */
 	 0x00ffffff,			/* Dst_mask.  */
-	 TRUE),				/* PCrel_offset.  */
+	 true),				/* PCrel_offset.  */
 
   /* A PC relative 22 bit branch.  */
   HOWTO (R_V850_22_PCREL,		/* Type.  */
 	 0,				/* Rightshift.  */
-	 2,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* Size.  */
 	 22,				/* Bitsize.  */
-	 TRUE,				/* PC_relative.  */
+	 true,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_signed,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_22_PCREL",		/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x07ffff80,			/* Src_mask.  */
 	 0x07ffff80,			/* Dst_mask.  */
-	 TRUE),				/* PCrel_offset.  */
+	 true),				/* PCrel_offset.  */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_V850_HI16_S,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_HI16_S",		/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_V850_HI16,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_HI16",			/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_V850_LO16,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_LO16",			/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* Simple 32bit reloc.  */
   HOWTO (R_V850_ABS32,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 2,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* Size.  */
 	 32,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_ABS32",		/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffffffff,			/* Src_mask.  */
 	 0xffffffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* Simple 16bit reloc.  */
   HOWTO (R_V850_16,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* Special_function.  */
 	 "R_V850_16",			/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* Simple 8bit reloc.  */
   HOWTO (R_V850_8,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 0,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 1,				/* Size.  */
 	 8,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* Special_function.  */
 	 "R_V850_8",			/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xff,				/* Src_mask.  */
 	 0xff,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 16 bit offset from the short data area pointer.  */
   HOWTO (R_V850_SDA_16_16_OFFSET,	/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_SDA_16_16_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 15 bit offset from the short data area pointer.  */
   HOWTO (R_V850_SDA_15_16_OFFSET,	/* Type.  */
 	 1,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 1,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_SDA_15_16_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xfffe,			/* Src_mask.  */
 	 0xfffe,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 16 bit offset from the zero data area pointer.  */
   HOWTO (R_V850_ZDA_16_16_OFFSET,	/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_ZDA_16_16_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 15 bit offset from the zero data area pointer.  */
   HOWTO (R_V850_ZDA_15_16_OFFSET,	/* Type.  */
 	 1,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 1,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_ZDA_15_16_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xfffe,			/* Src_mask.  */
 	 0xfffe,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 6 bit offset from the tiny data area pointer.  */
   HOWTO (R_V850_TDA_6_8_OFFSET,		/* Type.  */
 	 2,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 8,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 1,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_TDA_6_8_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x7e,				/* Src_mask.  */
 	 0x7e,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 8 bit offset from the tiny data area pointer.  */
   HOWTO (R_V850_TDA_7_8_OFFSET,		/* Type.  */
 	 1,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 8,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_TDA_7_8_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x7f,				/* Src_mask.  */
 	 0x7f,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 7 bit offset from the tiny data area pointer.  */
   HOWTO (R_V850_TDA_7_7_OFFSET,		/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 7,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_TDA_7_7_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x7f,				/* Src_mask.  */
 	 0x7f,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 16 bit offset from the tiny data area pointer!  */
   HOWTO (R_V850_TDA_16_16_OFFSET,	/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_TDA_16_16_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xfff,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 5 bit offset from the tiny data area pointer.  */
   HOWTO (R_V850_TDA_4_5_OFFSET,		/* Type.  */
 	 1,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 5,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_TDA_4_5_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x0f,				/* Src_mask.  */
 	 0x0f,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 4 bit offset from the tiny data area pointer.  */
   HOWTO (R_V850_TDA_4_4_OFFSET,		/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 4,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_TDA_4_4_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x0f,				/* Src_mask.  */
 	 0x0f,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 16 bit offset from the short data area pointer.  */
   HOWTO (R_V850_SDA_16_16_SPLIT_OFFSET,	/* Type.  */
 	 0,				/* Rightshift.  */
-	 2,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_SDA_16_16_SPLIT_OFFSET",/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xfffe0020,			/* Src_mask.  */
 	 0xfffe0020,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 16 bit offset from the zero data area pointer.  */
   HOWTO (R_V850_ZDA_16_16_SPLIT_OFFSET,	/* Type.  */
 	 0,				/* Rightshift.  */
-	 2,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_ZDA_16_16_SPLIT_OFFSET",/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xfffe0020,			/* Src_mask.  */
 	 0xfffe0020,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 6 bit offset from the call table base pointer.  */
   HOWTO (R_V850_CALLT_6_7_OFFSET,	/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 7,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_CALLT_6_7_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x3f,				/* Src_mask.  */
 	 0x3f,				/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* 16 bit offset from the call table base pointer.  */
   HOWTO (R_V850_CALLT_16_16_OFFSET,	/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_CALLT_16_16_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
 
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_V850_GNU_VTINHERIT, /* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont, /* Complain_on_overflow.  */
 	 NULL,			/* Special_function.  */
 	 "R_V850_GNU_VTINHERIT", /* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_V850_GNU_VTENTRY,	 /* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont, /* Complain_on_overflow.  */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* Special_function.  */
 	 "R_V850_GNU_VTENTRY",	 /* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
+	 false),		/* PCrel_offset.  */
 
   /* Indicates a .longcall pseudo-op.  The compiler will generate a .longcall
      pseudo-op when it finds a function call which can be relaxed.  */
   HOWTO (R_V850_LONGCALL,     /* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 v850_elf_ignore_reloc, /* Special_function.  */
 	 "R_V850_LONGCALL",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* Indicates a .longjump pseudo-op.  The compiler will generate a
      .longjump pseudo-op when it finds a branch which can be relaxed.  */
   HOWTO (R_V850_LONGJUMP,     /* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 TRUE,			/* PC_relative.  */
+	 true,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 v850_elf_ignore_reloc, /* Special_function.  */
 	 "R_V850_LONGJUMP",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   HOWTO (R_V850_ALIGN,	      /* Type.  */
 	 0,			/* Rightshift.  */
-	 1,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
+	 false,			/* PC_relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_unsigned, /* Complain_on_overflow.  */
 	 v850_elf_ignore_reloc, /* Special_function.  */
 	 "R_V850_ALIGN",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Src_mask.  */
 	 0,			/* Dst_mask.  */
-	 TRUE),			/* PCrel_offset.  */
+	 true),			/* PCrel_offset.  */
 
   /* Simple pc-relative 32bit reloc.  */
   HOWTO (R_V850_REL32,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 2,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* Size.  */
 	 32,				/* Bitsize.  */
-	 TRUE,				/* PC_relative.  */
+	 true,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_REL32",		/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffffffff,			/* Src_mask.  */
 	 0xffffffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* An ld.bu version of R_V850_LO16.  */
   HOWTO (R_V850_LO16_SPLIT_OFFSET,	/* Type.  */
 	 0,				/* Rightshift.  */
-	 2,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_LO16_SPLIT_OFFSET",	/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xfffe0020,			/* Src_mask.  */
 	 0xfffe0020,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* A unsigned PC relative 16 bit loop.  */
   HOWTO (R_V850_16_PCREL,		/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 TRUE,				/* PC_relative.  */
+	 true,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_bitfield,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_16_PCREL",		/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xfffe,			/* Src_mask.  */
 	 0xfffe,			/* Dst_mask.  */
-	 TRUE),				/* PCrel_offset.  */
+	 true),				/* PCrel_offset.  */
 
   /* A PC relative 17 bit branch.  */
   HOWTO (R_V850_17_PCREL,		/* Type.  */
 	 0,				/* Rightshift.  */
-	 2,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* Size.  */
 	 17,				/* Bitsize.  */
-	 TRUE,				/* PC_relative.  */
+	 true,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_bitfield,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_17_PCREL",		/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0x0010fffe,			/* Src_mask.  */
 	 0x0010fffe,			/* Dst_mask.  */
-	 TRUE),				/* PCrel_offset.  */
+	 true),				/* PCrel_offset.  */
 
   /* A 23bit offset ld/st.  */
   HOWTO (R_V850_23,			/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 23,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_dont,	/* complain_on_overflow.  */
 	 v850_elf_reloc,		/* special_function.  */
 	 "R_V850_23",			/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffff07f0,			/* src_mask.  */
 	 0xffff07f0,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* A PC relative 32 bit branch.  */
   HOWTO (R_V850_32_PCREL,		/* type.  */
 	 1,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 32,				/* bitsize.  */
-	 TRUE,				/* pc_relative.  */
+	 true,				/* pc_relative.  */
 	 1,				/* bitpos.  */
 	 complain_overflow_signed,	/* complain_on_overflow.  */
 	 v850_elf_reloc,		/* special_function.  */
 	 "R_V850_32_PCREL",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xfffffffe,			/* src_mask.  */
 	 0xfffffffe,			/* dst_mask.  */
-	 TRUE),				/* pcrel_offset.  */
+	 true),				/* pcrel_offset.  */
 
   /* A absolute 32 bit branch.  */
   HOWTO (R_V850_32_ABS,			/* type.  */
 	 1,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 32,				/* bitsize.  */
-	 TRUE,				/* pc_relative.  */
+	 true,				/* pc_relative.  */
 	 1,				/* bitpos.  */
 	 complain_overflow_signed,	/* complain_on_overflow.  */
 	 v850_elf_reloc,		/* special_function.  */
 	 "R_V850_32_ABS",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xfffffffe,			/* src_mask.  */
 	 0xfffffffe,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_V850_HI16,			/* Type.  */
 	 0,				/* Rightshift.  */
-	 1,				/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* Size.  */
 	 16,				/* Bitsize.  */
-	 FALSE,				/* PC_relative.  */
+	 false,				/* PC_relative.  */
 	 0,				/* Bitpos.  */
 	 complain_overflow_dont,	/* Complain_on_overflow.  */
 	 v850_elf_reloc,		/* Special_function.  */
 	 "R_V850_HI16",			/* Name.  */
-	 FALSE,				/* Partial_inplace.  */
+	 false,				/* Partial_inplace.  */
 	 0xffff,			/* Src_mask.  */
 	 0xffff,			/* Dst_mask.  */
-	 FALSE),			/* PCrel_offset.  */
+	 false),			/* PCrel_offset.  */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_V850_16_S1,			/* type.  */
 	 1,				/* rightshift.  */
-	 1,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* size.  */
 	 16,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 1,				/* bitpos.  */
 	 complain_overflow_dont,	/* complain_on_overflow.  */
 	 v850_elf_reloc,		/* special_function.  */
 	 "R_V850_16_S1",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xfffe,			/* src_mask.  */
 	 0xfffe,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_V850_LO16_S1,		/* type.  */
 	 1,				/* rightshift.  */
-	 1,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* size.  */
 	 16,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 1,				/* bitpos.  */
 	 complain_overflow_dont,	/* complain_on_overflow.  */
 	 v850_elf_reloc,		/* special_function.  */
 	 "R_V850_LO16_S1",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xfffe,			/* src_mask.  */
 	 0xfffe,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* 16 bit offset from the call table base pointer.  */
   HOWTO (R_V850_CALLT_15_16_OFFSET,	/* type.  */
 	 1,				/* rightshift.  */
-	 1,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 2,				/* size.  */
 	 16,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 1,				/* bitpos.  */
 	 complain_overflow_dont,	/* complain_on_overflow.  */
 	 v850_elf_reloc,		/* special_function.  */
 	 "R_V850_CALLT_15_16_OFFSET",	/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xfffe,			/* src_mask.  */
 	 0xfffe,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* Like R_V850_32 PCREL, but referring to the GOT table entry for
      the symbol.  */
   HOWTO (R_V850_32_GOTPCREL,		/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 32,				/* bitsize.  */
-	 TRUE,				/* pc_relative.  */
+	 true,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_unsigned,	/* complain_on_overflow.  */
 	 v850_elf_reloc,		/* special_function.  */
 	 "R_V850_32_GOTPCREL",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffffffff,			/* src_mask.  */
 	 0xffffffff,			/* dst_mask.  */
-	 TRUE),				/* pcrel_offset.  */
+	 true),				/* pcrel_offset.  */
 
   /* Like R_V850_SDA_, but referring to the GOT table entry for
      the symbol.  */
   HOWTO (R_V850_16_GOT,			/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 16,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_unsigned,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_16_GOT",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffff,			/* src_mask.  */
 	 0xffff,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   HOWTO (R_V850_32_GOT,			/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 32,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_unsigned,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_32_GOT",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffffffff,			/* src_mask.  */
 	 0xffffffff,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* Like R_V850_22_PCREL, but referring to the procedure linkage table
      entry for the symbol.  */
   HOWTO (R_V850_22_PLT,			/* type.  */
 	 1,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 22,				/* bitsize.  */
-	 TRUE,				/* pc_relative.  */
+	 true,				/* pc_relative.  */
 	 7,				/* bitpos.  */
 	 complain_overflow_signed,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_22_PLT",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0x07ffff80,			/* src_mask.  */
 	 0x07ffff80,			/* dst_mask.  */
-	 TRUE),				/* pcrel_offset.  */
+	 true),				/* pcrel_offset.  */
 
   HOWTO (R_V850_32_PLT,			/* type.  */
 	 1,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 32,				/* bitsize.  */
-	 TRUE,				/* pc_relative.  */
+	 true,				/* pc_relative.  */
 	 1,				/* bitpos.  */
 	 complain_overflow_signed,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_32_PLT",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffffffff,			/* src_mask.  */
 	 0xffffffff,			/* dst_mask.  */
-	 TRUE),				/* pcrel_offset.  */
+	 true),				/* pcrel_offset.  */
 
   /* This is used only by the dynamic linker.  The symbol should exist
      both in the object being run and in some shared library.  The
@@ -1558,121 +1562,121 @@ static reloc_howto_type v850_elf_howto_t
      run has to have the data at some particular address.  */
   HOWTO (R_V850_COPY,			/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long).  */
+	 4,				/* size.  */
 	 32,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_bitfield,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_COPY",			/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffffffff,			/* src_mask.  */
 	 0xffffffff,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* Like R_M32R_24, but used when setting global offset table
      entries.  */
   HOWTO (R_V850_GLOB_DAT,		/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
+	 4,				/* size */
 	 32,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_bitfield,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_GLOB_DAT",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffffffff,			/* src_mask.  */
 	 0xffffffff,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* Marks a procedure linkage table entry for a symbol.  */
   HOWTO (R_V850_JMP_SLOT,		/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
+	 4,				/* size */
 	 32,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_bitfield,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_JMP_SLOT",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffffffff,			/* src_mask.  */
 	 0xffffffff,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   /* Used only by the dynamic linker.  When the object is run, this
      longword is set to the load address of the object, plus the
      addend.  */
   HOWTO (R_V850_RELATIVE,		/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
+	 4,				/* size */
 	 32,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_bitfield,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_RELATIVE",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffffffff,			/* src_mask.  */
 	 0xffffffff,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   HOWTO (R_V850_16_GOTOFF,		/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
+	 4,				/* size */
 	 16,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_bitfield,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_16_GOTOFF",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffff,			/* src_mask.  */
 	 0xffff,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   HOWTO (R_V850_32_GOTOFF,		/* type.  */
 	 0,				/* rightshift.  */
-	 2,				/* size (0 = byte, 1 = short, 2 = long) */
+	 4,				/* size */
 	 32,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_bitfield,	/* complain_on_overflow.  */
 	 bfd_elf_generic_reloc,		/* special_function.  */
 	 "R_V850_32_GOTOFF",		/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0xffffffff,			/* src_mask.  */
 	 0xffffffff,			/* dst_mask.  */
-	 FALSE),			/* pcrel_offset.  */
+	 false),			/* pcrel_offset.  */
 
   HOWTO (R_V850_CODE,			/* type.  */
 	 0,				/* rightshift.  */
-	 1,				/* size (0 = byte, 1 = short, 2 = long) */
+	 2,				/* size */
 	 0,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_unsigned,	/* complain_on_overflow.  */
 	 v850_elf_ignore_reloc,		/* special_function.  */
 	 "R_V850_CODE",			/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0,				/* src_mask.  */
 	 0,				/* dst_mask.  */
-	 TRUE),				/* pcrel_offset.  */
+	 true),				/* pcrel_offset.  */
 
   HOWTO (R_V850_DATA,			/* type.  */
 	 0,				/* rightshift.  */
-	 1,				/* size (0 = byte, 1 = short, 2 = long) */
+	 2,				/* size */
 	 0,				/* bitsize.  */
-	 FALSE,				/* pc_relative.  */
+	 false,				/* pc_relative.  */
 	 0,				/* bitpos.  */
 	 complain_overflow_unsigned,	/* complain_on_overflow.  */
 	 v850_elf_ignore_reloc,		/* special_function.  */
 	 "R_V850_DATA",			/* name.  */
-	 FALSE,				/* partial_inplace.  */
+	 false,				/* partial_inplace.  */
 	 0,				/* src_mask.  */
 	 0,				/* dst_mask.  */
-	 TRUE),				/* pcrel_offset.  */
+	 true),				/* pcrel_offset.  */
 
 };
 
@@ -1744,7 +1748,7 @@ static const struct v850_elf_reloc_map v
 
 #define V800_RELOC(name,sz,bit,shift,complain,pcrel,resolver)		 \
   HOWTO (name, shift, sz, bit, pcrel, 0, complain_overflow_ ## complain, \
-	 bfd_elf_ ## resolver ## _reloc, #name, FALSE, 0, ~0, FALSE)
+	 bfd_elf_ ## resolver ## _reloc, #name, false, 0, ~0, false)
 
 #define V800_EMPTY(name) EMPTY_HOWTO (name - R_V810_NONE)
 
@@ -1757,92 +1761,92 @@ static const struct v850_elf_reloc_map v
 
 static reloc_howto_type v800_elf_howto_table[] =
 {
-  V800_RELOC (R_V810_NONE,      0,  0, 0, dont,     FALSE, generic),	/* Type = 0x30 */
-  V800_RELOC (R_V810_BYTE,      0,  8, 0, dont,     FALSE, generic),
-  V800_RELOC (R_V810_HWORD,     1, 16, 0, dont,     FALSE, generic),
-  V800_RELOC (R_V810_WORD,      2, 32, 0, dont,     FALSE, generic),
-  V800_RELOC (R_V810_WLO,       1, 16, 0, dont,     FALSE, generic),
-  V800_RELOC (R_V810_WHI,       1, 16, 0, dont,     FALSE, generic),
-  V800_RELOC (R_V810_WHI1,      1, 16, 0, dont,     FALSE, generic),
-  V800_RELOC (R_V810_GPBYTE,    0,  8, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_GPHWORD,   1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_GPWORD,    2, 32, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_GPWLO,     1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_GPWHI,     1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_GPWHI1,    1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_HWLO,      1, 16, 0, dont,     FALSE, generic),
+  V800_RELOC (R_V810_NONE,      0,  0, 0, dont,     false, generic),	/* Type = 0x30 */
+  V800_RELOC (R_V810_BYTE,      1,  8, 0, dont,     false, generic),
+  V800_RELOC (R_V810_HWORD,     2, 16, 0, dont,     false, generic),
+  V800_RELOC (R_V810_WORD,      4, 32, 0, dont,     false, generic),
+  V800_RELOC (R_V810_WLO,       2, 16, 0, dont,     false, generic),
+  V800_RELOC (R_V810_WHI,       2, 16, 0, dont,     false, generic),
+  V800_RELOC (R_V810_WHI1,      2, 16, 0, dont,     false, generic),
+  V800_RELOC (R_V810_GPBYTE,    1,  8, 0, dont,     false, v850),
+  V800_RELOC (R_V810_GPHWORD,   2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_GPWORD,    4, 32, 0, dont,     false, v850),
+  V800_RELOC (R_V810_GPWLO,     2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_GPWHI,     2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_GPWHI1,    2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V850_HWLO,      2, 16, 0, dont,     false, generic),
   V800_EMPTY (R_V810_reserved1),
-  V800_RELOC (R_V850_EP7BIT,    0,  7, 0, unsigned, FALSE, v850),
-  V800_RELOC (R_V850_EPHBYTE,   0,  8, 1, unsigned, FALSE, v850),
-  V800_RELOC (R_V850_EPWBYTE,   0,  8, 2, unsigned, FALSE, v850),
-  V800_RELOC (R_V850_REGHWLO,   1, 16, 0, dont,     FALSE, v850),
+  V800_RELOC (R_V850_EP7BIT,    1,  7, 0, unsigned, false, v850),
+  V800_RELOC (R_V850_EPHBYTE,   1,  8, 1, unsigned, false, v850),
+  V800_RELOC (R_V850_EPWBYTE,   1,  8, 2, unsigned, false, v850),
+  V800_RELOC (R_V850_REGHWLO,   2, 16, 0, dont,     false, v850),
   V800_EMPTY (R_V810_reserved2),
-  V800_RELOC (R_V850_GPHWLO,    1, 16, 0, dont,     FALSE, v850),
+  V800_RELOC (R_V850_GPHWLO,    2, 16, 0, dont,     false, v850),
   V800_EMPTY (R_V810_reserved3),
-  V800_RELOC (R_V850_PCR22,     2, 22, 0, signed,   TRUE,  generic),
-  V800_RELOC (R_V850_BLO,       2, 24, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_EP4BIT,    0,  4, 0, unsigned, FALSE, v850),
-  V800_RELOC (R_V850_EP5BIT,    0,  5, 0, unsigned, FALSE, v850),
-  V800_RELOC (R_V850_REGBLO,    2, 24, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_GPBLO,     2, 24, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_WLO_1,     1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_GPWLO_1,   1, 16, 0, signed,   FALSE, v850),
-  V800_RELOC (R_V850_BLO_1,     2, 16, 0, signed,   FALSE, v850),
-  V800_RELOC (R_V850_HWLO_1,    1, 16, 0, signed,   FALSE, v850),
+  V800_RELOC (R_V850_PCR22,     4, 22, 0, signed,   true,  generic),
+  V800_RELOC (R_V850_BLO,       4, 24, 0, dont,     false, v850),
+  V800_RELOC (R_V850_EP4BIT,    1,  4, 0, unsigned, false, v850),
+  V800_RELOC (R_V850_EP5BIT,    1,  5, 0, unsigned, false, v850),
+  V800_RELOC (R_V850_REGBLO,    4, 24, 0, dont,     false, v850),
+  V800_RELOC (R_V850_GPBLO,     4, 24, 0, dont,     false, v850),
+  V800_RELOC (R_V810_WLO_1,     2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_GPWLO_1,   2, 16, 0, signed,   false, v850),
+  V800_RELOC (R_V850_BLO_1,     4, 16, 0, signed,   false, v850),
+  V800_RELOC (R_V850_HWLO_1,    2, 16, 0, signed,   false, v850),
   V800_EMPTY  (R_V810_reserved4),
-  V800_RELOC (R_V850_GPBLO_1,   2, 16, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_GPHWLO_1,  1, 16, 1, signed,   FALSE, v850),
+  V800_RELOC (R_V850_GPBLO_1,   4, 16, 1, signed,   false, v850),
+  V800_RELOC (R_V850_GPHWLO_1,  2, 16, 1, signed,   false, v850),
   V800_EMPTY (R_V810_reserved5),
-  V800_RELOC (R_V850_EPBLO,     2, 16, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_EPHWLO,    1, 16, 1, signed,   FALSE, v850),
+  V800_RELOC (R_V850_EPBLO,     4, 16, 1, signed,   false, v850),
+  V800_RELOC (R_V850_EPHWLO,    2, 16, 1, signed,   false, v850),
   V800_EMPTY (R_V810_reserved6),
-  V800_RELOC (R_V850_EPWLO_N,   1, 16, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_PC32,      2, 32, 1, signed,   TRUE,  v850),
-  V800_RELOC (R_V850_W23BIT,    2, 23, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_GPW23BIT,  2, 23, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_EPW23BIT,  2, 23, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_B23BIT,    2, 23, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_GPB23BIT,  2, 23, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_EPB23BIT,  2, 23, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_PC16U,     1, 16, 1, unsigned, TRUE,  generic),
-  V800_RELOC (R_V850_PC17,      2, 17, 1, signed,   TRUE,  generic),
-  V800_RELOC (R_V850_DW8,       2,  8, 2, signed,   FALSE, v850),
-  V800_RELOC (R_V850_GPDW8,     2,  8, 2, signed,   FALSE, v850),
-  V800_RELOC (R_V850_EPDW8,     2,  8, 2, signed,   FALSE, v850),
-  V800_RELOC (R_V850_PC9,       1,  9, 3, signed,   TRUE,  v850),
-  V800_RELOC (R_V810_REGBYTE,   0,  8, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_REGHWORD,  1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_REGWORD,   2, 32, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_REGWLO,    1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_REGWHI,    1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_REGWHI1,   1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_REGW23BIT, 2, 23, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_REGB23BIT, 2, 23, 1, signed,   FALSE, v850),
-  V800_RELOC (R_V850_REGDW8,    2,  8, 2, signed,   FALSE, v850),
-  V800_RELOC (R_V810_EPBYTE,    0,  8, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_EPHWORD,   1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_EPWORD,    2, 32, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_WLO23,     2, 32, 1, dont,     FALSE, v850),
-  V800_RELOC (R_V850_WORD_E,    2, 32, 1, dont,     FALSE, v850),
-  V800_RELOC (R_V850_REGWORD_E, 2, 32, 1, dont,     FALSE, v850),
-  V800_RELOC (R_V850_WORD,      2, 32, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_GPWORD,    2, 32, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_REGWORD,   2, 32, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_EPWORD,    2, 32, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_TPBYTE,    0,  8, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_TPHWORD,   1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_TPWORD,    2, 32, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_TPWLO,     1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_TPWHI,     1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_TPWHI1,    1, 16, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V850_TPHWLO,    1, 16, 1, dont,     FALSE, v850),
-  V800_RELOC (R_V850_TPBLO,     2, 24, 0, dont,     FALSE, v850),
-  V800_RELOC (R_V810_TPWLO_1,   1, 16, 0, signed,   FALSE, v850),
-  V800_RELOC (R_V850_TPBLO_1,   2, 16, 0, signed,   FALSE, v850),
-  V800_RELOC (R_V850_TPHWLO_1,  1, 16, 0, signed,   FALSE, v850),
-  V800_RELOC (R_V850_TP23BIT,   2, 23, 0, signed,   FALSE, v850),
-  V800_RELOC (R_V850_TPW23BIT,  2, 23, 0, signed,   FALSE, v850),
-  V800_RELOC (R_V850_TPDW8,     2,  8, 0, signed,   FALSE, v850)
+  V800_RELOC (R_V850_EPWLO_N,   2, 16, 1, signed,   false, v850),
+  V800_RELOC (R_V850_PC32,      4, 32, 1, signed,   true,  v850),
+  V800_RELOC (R_V850_W23BIT,    4, 23, 1, signed,   false, v850),
+  V800_RELOC (R_V850_GPW23BIT,  4, 23, 1, signed,   false, v850),
+  V800_RELOC (R_V850_EPW23BIT,  4, 23, 1, signed,   false, v850),
+  V800_RELOC (R_V850_B23BIT,    4, 23, 1, signed,   false, v850),
+  V800_RELOC (R_V850_GPB23BIT,  4, 23, 1, signed,   false, v850),
+  V800_RELOC (R_V850_EPB23BIT,  4, 23, 1, signed,   false, v850),
+  V800_RELOC (R_V850_PC16U,     2, 16, 1, unsigned, true,  generic),
+  V800_RELOC (R_V850_PC17,      4, 17, 1, signed,   true,  generic),
+  V800_RELOC (R_V850_DW8,       4,  8, 2, signed,   false, v850),
+  V800_RELOC (R_V850_GPDW8,     4,  8, 2, signed,   false, v850),
+  V800_RELOC (R_V850_EPDW8,     4,  8, 2, signed,   false, v850),
+  V800_RELOC (R_V850_PC9,       2,  9, 3, signed,   true,  v850),
+  V800_RELOC (R_V810_REGBYTE,   1,  8, 0, dont,     false, v850),
+  V800_RELOC (R_V810_REGHWORD,  2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_REGWORD,   4, 32, 0, dont,     false, v850),
+  V800_RELOC (R_V810_REGWLO,    2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_REGWHI,    2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_REGWHI1,   2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V850_REGW23BIT, 4, 23, 1, signed,   false, v850),
+  V800_RELOC (R_V850_REGB23BIT, 4, 23, 1, signed,   false, v850),
+  V800_RELOC (R_V850_REGDW8,    4,  8, 2, signed,   false, v850),
+  V800_RELOC (R_V810_EPBYTE,    1,  8, 0, dont,     false, v850),
+  V800_RELOC (R_V810_EPHWORD,   2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_EPWORD,    4, 32, 0, dont,     false, v850),
+  V800_RELOC (R_V850_WLO23,     4, 32, 1, dont,     false, v850),
+  V800_RELOC (R_V850_WORD_E,    4, 32, 1, dont,     false, v850),
+  V800_RELOC (R_V850_REGWORD_E, 4, 32, 1, dont,     false, v850),
+  V800_RELOC (R_V850_WORD,      4, 32, 0, dont,     false, v850),
+  V800_RELOC (R_V850_GPWORD,    4, 32, 0, dont,     false, v850),
+  V800_RELOC (R_V850_REGWORD,   4, 32, 0, dont,     false, v850),
+  V800_RELOC (R_V850_EPWORD,    4, 32, 0, dont,     false, v850),
+  V800_RELOC (R_V810_TPBYTE,    1,  8, 0, dont,     false, v850),
+  V800_RELOC (R_V810_TPHWORD,   2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_TPWORD,    4, 32, 0, dont,     false, v850),
+  V800_RELOC (R_V810_TPWLO,     2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_TPWHI,     2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V810_TPWHI1,    2, 16, 0, dont,     false, v850),
+  V800_RELOC (R_V850_TPHWLO,    2, 16, 1, dont,     false, v850),
+  V800_RELOC (R_V850_TPBLO,     4, 24, 0, dont,     false, v850),
+  V800_RELOC (R_V810_TPWLO_1,   2, 16, 0, signed,   false, v850),
+  V800_RELOC (R_V850_TPBLO_1,   4, 16, 0, signed,   false, v850),
+  V800_RELOC (R_V850_TPHWLO_1,  2, 16, 0, signed,   false, v850),
+  V800_RELOC (R_V850_TP23BIT,   4, 23, 0, signed,   false, v850),
+  V800_RELOC (R_V850_TPW23BIT,  4, 23, 0, signed,   false, v850),
+  V800_RELOC (R_V850_TPDW8,     4,  8, 0, signed,   false, v850)
 };
 
 /* Map a bfd relocation into the appropriate howto structure.  */
@@ -1884,7 +1888,7 @@ v850_elf_reloc_name_lookup (bfd *abfd AT
 
 /* Set the howto pointer for an V850 ELF reloc.  */
 
-static bfd_boolean
+static bool
 v850_elf_info_to_howto_rel (bfd *abfd,
 			    arelent *cache_ptr,
 			    Elf_Internal_Rela *dst)
@@ -1898,15 +1902,15 @@ v850_elf_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &v850_elf_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* Set the howto pointer for a V850 ELF reloc (type RELA).  */
 
-static bfd_boolean
+static bool
 v850_elf_info_to_howto_rela (bfd *abfd,
 			     arelent * cache_ptr,
 			     Elf_Internal_Rela *dst)
@@ -1920,20 +1924,23 @@ v850_elf_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &v850_elf_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 v850_elf_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
 {
-  return (   (name[0] == '.' && (name[1] == 'L' || name[1] == '.'))
-	  || (name[0] == '_' &&  name[1] == '.' && name[2] == 'L' && name[3] == '_'));
+  if (name[0] == '.' && (name[1] == 'L' || name[1] == '.'))
+    return true;
+  if (name[0] == '_' && name[1] == '.' && name[2] == 'L' && name[3] == '_')
+    return true;
+  return false;
 }
 
-static bfd_boolean
+static bool
 v850_elf_is_target_special_symbol (bfd *abfd, asymbol *sym)
 {
   return v850_elf_is_local_label_name (abfd, sym->name);
@@ -2060,7 +2067,7 @@ v850_elf_final_link_relocate (reloc_howt
 	  return bfd_reloc_undefined;
 
 	/* Get the value of __gp.  */
-	h = bfd_link_hash_lookup (info->hash, "__gp", FALSE, FALSE, TRUE);
+	h = bfd_link_hash_lookup (info->hash, "__gp", false, false, true);
 	if (h == NULL
 	    || h->type != bfd_link_hash_defined)
 	  return bfd_reloc_gp_not_found;
@@ -2085,7 +2092,7 @@ v850_elf_final_link_relocate (reloc_howt
 	struct bfd_link_hash_entry * h;
 
 	/* Get the value of __ep.  */
-	h = bfd_link_hash_lookup (info->hash, "__ep", FALSE, FALSE, TRUE);
+	h = bfd_link_hash_lookup (info->hash, "__ep", false, false, true);
 	if (h == NULL
 	    || h->type != bfd_link_hash_defined)
 	  return bfd_reloc_ep_not_found;
@@ -2104,7 +2111,7 @@ v850_elf_final_link_relocate (reloc_howt
 	struct bfd_link_hash_entry * h;
 
 	/* Get the value of __ctbp.  */
-	h = bfd_link_hash_lookup (info->hash, "__ctbp", FALSE, FALSE, TRUE);
+	h = bfd_link_hash_lookup (info->hash, "__ctbp", false, false, true);
 	if (h == NULL
 	    || h->type != bfd_link_hash_defined)
 	  return bfd_reloc_ctbp_not_found;
@@ -2126,7 +2133,7 @@ v850_elf_final_link_relocate (reloc_howt
 	  return bfd_reloc_undefined;
 
 	/* Get the value of __ctbp.  */
-	h = bfd_link_hash_lookup (info->hash, "__ctbp", FALSE, FALSE, TRUE);
+	h = bfd_link_hash_lookup (info->hash, "__ctbp", false, false, true);
 	if (h == NULL
 	    || h->type != bfd_link_hash_defined)
 	  return bfd_reloc_ctbp_not_found;
@@ -2163,7 +2170,7 @@ v850_elf_final_link_relocate (reloc_howt
 
 /* Relocate an V850 ELF section.  */
 
-static bfd_boolean
+static int
 v850_elf_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -2224,7 +2231,7 @@ v850_elf_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  /* Note - this check is delayed until now as it is possible and
 	     valid to have a file without any symbols but with relocs that
@@ -2235,7 +2242,7 @@ v850_elf_relocate_section (bfd *output_b
 		(info, "no hash table available",
 		 NULL, input_bfd, input_section, (bfd_vma) 0);
 
-	      return FALSE;
+	      return false;
 	    }
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
@@ -2246,7 +2253,8 @@ v850_elf_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_V850_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -2283,7 +2291,7 @@ v850_elf_relocate_section (bfd *output_b
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -2322,7 +2330,7 @@ v850_elf_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static asection *
@@ -2385,6 +2393,7 @@ v850_elf_make_note_section (bfd * abfd)
     return NULL;
 
   s->contents = data;
+  s->alloced = 1;
 
   /* Provide default (= uninitilaised) values for all of the notes.  */
   for (id = V850_NOTE_ALIGNMENT; id <= NUM_V850_NOTES; id++)
@@ -2396,7 +2405,7 @@ v850_elf_make_note_section (bfd * abfd)
 /* Create the note section if not already present.  This is done early so
    that the linker maps the sections to the right place in the output.  */
 
-bfd_boolean
+bool
 v850_elf_create_sections (struct bfd_link_info * info)
 {
   bfd * ibfd;
@@ -2404,27 +2413,27 @@ v850_elf_create_sections (struct bfd_lin
   /* If we already have a note section, do not make another.  */
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
     if (bfd_get_section_by_name (ibfd, V850_NOTE_SECNAME) != NULL)
-      return TRUE;
+      return true;
 
   return v850_elf_make_note_section (info->input_bfds) != NULL;
 }
 
-bfd_boolean
-v850_elf_set_note (bfd * abfd, enum v850_notes note, unsigned int val)
+bool
+v850_elf_set_note (bfd * abfd, unsigned int note, unsigned int val)
 {
   asection * notes = bfd_get_section_by_name (abfd, V850_NOTE_SECNAME);
 
   if (val > 2)
     /* At the moment, no known note has a value over 2.  */
-    return FALSE;
+    return false;
 
   if (notes == NULL)
     notes = v850_elf_make_note_section (abfd);
   if (notes == NULL)
-    return FALSE;
+    return false;
 
   v850_set_note (abfd, notes, note, val);
-  return TRUE;
+  return true;
 }
 
 /* Copy a v850 note section from one object module to another.  */
@@ -2464,7 +2473,7 @@ v850_elf_copy_notes (bfd *ibfd, bfd *obf
 
 /* Copy backend specific data from one object module to another.  */
 
-static bfd_boolean
+static bool
 v850_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   v850_elf_copy_notes (ibfd, obfd);
@@ -2472,18 +2481,18 @@ v850_elf_copy_private_bfd_data (bfd *ibf
 }
 #define bfd_elf32_bfd_copy_private_bfd_data	v850_elf_copy_private_bfd_data
 
-static bfd_boolean
+static bool
 v850_elf_merge_notes (bfd * ibfd, bfd *obfd)
 {
   asection * onotes;
   asection * inotes;
-  bfd_boolean result = TRUE;
+  bool result = true;
 
   /* If the output bfd does not have a note section, then
      skip the merge.  The normal input to output section
      copying will take care of everythng for us.  */
   if ((onotes = bfd_get_section_by_name (obfd, V850_NOTE_SECNAME)) == NULL)
-    return TRUE;
+    return true;
 
   if ((inotes = bfd_get_section_by_name (ibfd, V850_NOTE_SECNAME)) != NULL)
     {
@@ -2530,7 +2539,7 @@ v850_elf_merge_notes (bfd * ibfd, bfd *o
 		    /* xgettext:c-format */
 		    (_("error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"),
 				      ibfd, obfd);
-		  result = FALSE;
+		  result = false;
 		}
 	      else
 		/* ibfd uses 4-byte alignment, obfd uses 8-byte alignment.
@@ -2546,7 +2555,7 @@ v850_elf_merge_notes (bfd * ibfd, bfd *o
 		    /* xgettext:c-format */
 		    (_("error: %pB uses 64-bit doubles but "
 		       "%pB uses 32-bit doubles"), ibfd, obfd);
-		  result = FALSE;
+		  result = false;
 		}
 	      else
 		/* ibfd uses 32-bit doubles, obfd uses 64-bit doubles.
@@ -2561,7 +2570,7 @@ v850_elf_merge_notes (bfd * ibfd, bfd *o
 		    /* xgettext:c-format */
 		    (_("error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"),
 		     ibfd, obfd);
-		  result = FALSE;
+		  result = false;
 		}
 	      else
 		/* ibfd uses FPU-2.0, obfd uses FPU-3.0.  Leave obfd as it is.  */
@@ -2681,7 +2690,7 @@ v850_elf_print_notes (bfd * abfd, FILE *
 
 /* Set the right machine number and architecture.  */
 
-static bfd_boolean
+static bool
 v850_elf_object_p (bfd *abfd)
 {
   enum bfd_architecture arch;
@@ -2711,7 +2720,7 @@ v850_elf_object_p (bfd *abfd)
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   return bfd_default_set_arch_mach (abfd, arch, mach);
@@ -2719,7 +2728,7 @@ v850_elf_object_p (bfd *abfd)
 
 /* Store the machine number in the flags field.  */
 
-static bfd_boolean
+static bool
 v850_elf_final_write_processing (bfd *abfd)
 {
   unsigned long val;
@@ -2755,31 +2764,31 @@ v850_elf_final_write_processing (bfd *ab
 
 /* Function to keep V850 specific file flags.  */
 
-static bfd_boolean
+static bool
 v850_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file
    to the output object file when linking.  */
 
-static bfd_boolean
+static bool
 v850_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword out_flags;
   flagword in_flags;
-  bfd_boolean result = TRUE;
+  bool result = true;
 
   if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   result &= v850_elf_merge_notes (ibfd, obfd);
 
@@ -2795,9 +2804,9 @@ v850_elf_merge_private_bfd_data (bfd *ib
 	 unitialised values, which surprise surprise, correspond
 	 to the default values.  */
       if (bfd_get_arch_info (ibfd)->the_default)
-	return TRUE;
+	return true;
 
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -2880,7 +2889,7 @@ v850_elf_merge_private_bfd_data (bfd *ib
 
 /* Display the flags field.  */
 
-static bfd_boolean
+static bool
 v850_elf_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE * file = (FILE *) ptr;
@@ -2919,7 +2928,7 @@ v850_elf_print_private_bfd_data (bfd *ab
 
   v850_elf_print_notes (abfd, file);
 
-  return TRUE;
+  return true;
 }
 
 /* V850 ELF uses four common sections.  One is the usual one, and the
@@ -2929,20 +2938,34 @@ v850_elf_print_private_bfd_data (bfd *ab
    respectively, which yields smaller, faster assembler code.  This
    approach is copied from elf32-mips.c.  */
 
-static asection  v850_elf_scom_section;
-static asymbol   v850_elf_scom_symbol;
-static asymbol * v850_elf_scom_symbol_ptr;
-static asection  v850_elf_tcom_section;
-static asymbol   v850_elf_tcom_symbol;
-static asymbol * v850_elf_tcom_symbol_ptr;
-static asection  v850_elf_zcom_section;
-static asymbol   v850_elf_zcom_symbol;
-static asymbol * v850_elf_zcom_symbol_ptr;
+static asection v850_elf_scom_section;
+static const asymbol v850_elf_scom_symbol =
+  GLOBAL_SYM_INIT (".scommon", &v850_elf_scom_section);
+static asection v850_elf_scom_section =
+  BFD_FAKE_SECTION (v850_elf_scom_section, &v850_elf_scom_symbol,
+		    ".scommon", 0,
+		    SEC_IS_COMMON | SEC_SMALL_DATA | SEC_ALLOC | SEC_DATA);
+
+static asection v850_elf_tcom_section;
+static const asymbol v850_elf_tcom_symbol =
+  GLOBAL_SYM_INIT (".tcommon", &v850_elf_tcom_section);
+static asection v850_elf_tcom_section =
+  BFD_FAKE_SECTION (v850_elf_tcom_section, &v850_elf_tcom_symbol,
+		    ".tcommon", 0,
+		    SEC_IS_COMMON | SEC_SMALL_DATA);
+
+static asection v850_elf_zcom_section;
+static const asymbol v850_elf_zcom_symbol =
+  GLOBAL_SYM_INIT (".zcommon", &v850_elf_zcom_section);
+static asection v850_elf_zcom_section =
+  BFD_FAKE_SECTION (v850_elf_zcom_section, &v850_elf_zcom_symbol,
+		    ".zcommon", 0,
+		    SEC_IS_COMMON | SEC_SMALL_DATA);
 
 /* Given a BFD section, try to locate the
    corresponding ELF section index.  */
 
-static bfd_boolean
+static bool
 v850_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 				   asection *sec,
 				   int *retval)
@@ -2954,9 +2977,9 @@ v850_elf_section_from_bfd_section (bfd *
   else if (strcmp (bfd_section_name (sec), ".zcommon") == 0)
     *retval = SHN_V850_ZCOMMON;
   else
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Handle the special V850 section numbers that a symbol may use.  */
@@ -2997,55 +3020,16 @@ v850_elf_symbol_processing (bfd *abfd, a
   switch (indx)
     {
     case SHN_V850_SCOMMON:
-      if (v850_elf_scom_section.name == NULL)
-	{
-	  /* 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.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;
-	  v850_elf_scom_symbol.name	       = ".scommon";
-	  v850_elf_scom_symbol.flags	       = BSF_SECTION_SYM;
-	  v850_elf_scom_symbol.section	       = & v850_elf_scom_section;
-	  v850_elf_scom_symbol_ptr	       = & v850_elf_scom_symbol;
-	}
       asym->section = & v850_elf_scom_section;
       asym->value = elfsym->internal_elf_sym.st_size;
       break;
 
     case SHN_V850_TCOMMON:
-      if (v850_elf_tcom_section.name == NULL)
-	{
-	  /* Initialize the tcommon section.  */
-	  v850_elf_tcom_section.name	       = ".tcommon";
-	  v850_elf_tcom_section.flags	       = SEC_IS_COMMON;
-	  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;
-	  v850_elf_tcom_symbol.name	       = ".tcommon";
-	  v850_elf_tcom_symbol.flags	       = BSF_SECTION_SYM;
-	  v850_elf_tcom_symbol.section	       = & v850_elf_tcom_section;
-	  v850_elf_tcom_symbol_ptr	       = & v850_elf_tcom_symbol;
-	}
       asym->section = & v850_elf_tcom_section;
       asym->value = elfsym->internal_elf_sym.st_size;
       break;
 
     case SHN_V850_ZCOMMON:
-      if (v850_elf_zcom_section.name == NULL)
-	{
-	  /* Initialize the zcommon section.  */
-	  v850_elf_zcom_section.name	       = ".zcommon";
-	  v850_elf_zcom_section.flags	       = SEC_IS_COMMON;
-	  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;
-	  v850_elf_zcom_symbol.name	       = ".zcommon";
-	  v850_elf_zcom_symbol.flags	       = BSF_SECTION_SYM;
-	  v850_elf_zcom_symbol.section	       = & v850_elf_zcom_section;
-	  v850_elf_zcom_symbol_ptr	       = & v850_elf_zcom_symbol;
-	}
       asym->section = & v850_elf_zcom_section;
       asym->value = elfsym->internal_elf_sym.st_size;
       break;
@@ -3055,7 +3039,7 @@ v850_elf_symbol_processing (bfd *abfd, a
 /* Hook called by the linker routine which adds symbols from an object
    file.  We must handle the special v850 section numbers here.  */
 
-static bfd_boolean
+static bool
 v850_elf_add_symbol_hook (bfd *abfd,
 			  struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			  Elf_Internal_Sym *sym,
@@ -3095,24 +3079,24 @@ 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;
     }
 
-  return TRUE;
+  return true;
 }
 
 static int
@@ -3145,37 +3129,42 @@ v850_elf_link_output_symbol_hook (struct
   return 1;
 }
 
-static bfd_boolean
+static bool
 v850_elf_section_from_shdr (bfd *abfd,
 			    Elf_Internal_Shdr *hdr,
 			    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.  */
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    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
    by the section name, which is a hack, but ought to work.  */
 
-static bfd_boolean
+static bool
 v850_elf_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 			Elf_Internal_Shdr *hdr,
 			asection *sec)
@@ -3197,12 +3186,12 @@ v850_elf_fake_sections (bfd *abfd ATTRIB
       hdr->sh_entsize = SIZEOF_V850_NOTE;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 v850_elf_relax_delete_bytes (bfd *abfd,
 			     asection *sec,
 			     bfd_vma addr,
@@ -3412,7 +3401,7 @@ v850_elf_relax_delete_bytes (bfd *abfd,
 	++ shndx;
     }
 
-  return TRUE;
+  return true;
 }
 
 #define NOP_OPCODE	(0x0000)
@@ -3435,11 +3424,11 @@ v850_elf_relax_delete_bytes (bfd *abfd,
 #define JMP_R_MASK	0xFFE0
 #define JMP_R1(insn)	((insn) & 0x1f)
 
-static bfd_boolean
+static bool
 v850_elf_relax_section (bfd *abfd,
 			asection *sec,
 			struct bfd_link_info *link_info,
-			bfd_boolean *again)
+			bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -3451,14 +3440,15 @@ v850_elf_relax_section (bfd *abfd,
   bfd_vma addr = 0;
   bfd_vma toaddr;
   int align_pad_size = 0;
-  bfd_boolean result = TRUE;
+  bool result = true;
 
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (link_info)
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = & elf_tdata (abfd)->symtab_hdr;
 
@@ -3837,7 +3827,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,22 +4078,19 @@ 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;
 
  error_return:
-  result = FALSE;
+  result = false;
   goto finish;
 }
 
@@ -4249,7 +4236,7 @@ v800_elf_reloc_name_lookup (bfd * abfd,
 
 /* Set the howto pointer in CACHE_PTR for a V800 ELF reloc.  */
 
-static bfd_boolean
+static bool
 v800_elf_info_to_howto (bfd *		    abfd,
 			arelent *	    cache_ptr,
 			Elf_Internal_Rela * dst)
@@ -4268,11 +4255,11 @@ v800_elf_info_to_howto (bfd *		    abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = v800_elf_howto_table + (r_type - R_V810_NONE);
-  return TRUE;
+  return true;
 }
 
 #undef  TARGET_LITTLE_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.20200303/bfd/elf32-v850.h ./bfd/elf32-v850.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-v850.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-v850.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* V850 Note manipulation routines.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,8 +18,8 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-extern bfd_boolean v850_elf_create_sections
+extern bool v850_elf_create_sections
   (struct bfd_link_info *);
 
-extern bfd_boolean v850_elf_set_note
+extern bool v850_elf_set_note
   (bfd *, unsigned int, unsigned 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.20200303/bfd/elf32-vax.c ./bfd/elf32-vax.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-vax.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-vax.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* VAX series support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
    Contributed by Matt Thomas <matt@3am-software.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -27,143 +27,141 @@
 #include "elf/vax.h"
 
 static reloc_howto_type *reloc_type_lookup (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean rtype_to_howto (bfd *, arelent *, Elf_Internal_Rela *);
+static bool rtype_to_howto (bfd *, arelent *, Elf_Internal_Rela *);
 static struct bfd_hash_entry *elf_vax_link_hash_newfunc (struct bfd_hash_entry *,
 							 struct bfd_hash_table *,
 							 const char *);
 static struct bfd_link_hash_table *elf_vax_link_hash_table_create (bfd *);
-static bfd_boolean elf_vax_check_relocs (bfd *, struct bfd_link_info *,
-					 asection *, const Elf_Internal_Rela *);
-static bfd_boolean elf_vax_adjust_dynamic_symbol (struct bfd_link_info *,
-						  struct elf_link_hash_entry *);
-static bfd_boolean elf_vax_size_dynamic_sections (bfd *, struct bfd_link_info *);
-static bfd_boolean elf_vax_relocate_section (bfd *, struct bfd_link_info *,
-					     bfd *, asection *, bfd_byte *,
-					     Elf_Internal_Rela *,
-					     Elf_Internal_Sym *, asection **);
-static bfd_boolean elf_vax_finish_dynamic_symbol (bfd *, struct bfd_link_info *,
-						  struct elf_link_hash_entry *,
-						  Elf_Internal_Sym *);
-static bfd_boolean elf_vax_finish_dynamic_sections (bfd *,
-						    struct bfd_link_info *);
+static bool elf_vax_check_relocs (bfd *, struct bfd_link_info *,
+				  asection *, const Elf_Internal_Rela *);
+static bool elf_vax_adjust_dynamic_symbol (struct bfd_link_info *,
+					   struct elf_link_hash_entry *);
+static int elf_vax_relocate_section (bfd *, struct bfd_link_info *,
+				     bfd *, asection *, bfd_byte *,
+				     Elf_Internal_Rela *,
+				     Elf_Internal_Sym *, asection **);
+static bool elf_vax_finish_dynamic_symbol (bfd *, struct bfd_link_info *,
+					   struct elf_link_hash_entry *,
+					   Elf_Internal_Sym *);
+static bool elf_vax_finish_dynamic_sections (bfd *, struct bfd_link_info *);
 static bfd_vma elf_vax_plt_sym_val (bfd_vma, const asection *,
 				    const arelent *);
 
-static bfd_boolean elf32_vax_set_private_flags (bfd *, flagword);
-static bfd_boolean elf32_vax_print_private_bfd_data (bfd *, void *);
+static bool elf32_vax_set_private_flags (bfd *, flagword);
+static bool elf32_vax_print_private_bfd_data (bfd *, void *);
 
 static reloc_howto_type howto_table[] = {
   HOWTO (R_VAX_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_VAX_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_VAX_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_VAX_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_VAX_PC32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_PC32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_VAX_PC16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_PC16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_VAX_PC8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_PC8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000000ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_VAX_GOT32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_GOT32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   EMPTY_HOWTO (-1),
   EMPTY_HOWTO (-1),
@@ -173,17 +171,17 @@ static reloc_howto_type howto_table[] =
 
   HOWTO (R_VAX_PLT32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_PLT32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   EMPTY_HOWTO (-1),
   EMPTY_HOWTO (-1),
@@ -193,92 +191,92 @@ static reloc_howto_type howto_table[] =
 
   HOWTO (R_VAX_COPY,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_VAX_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_VAX_JMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_JMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_VAX_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VAX_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_VAX_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_VAX_GNU_VTINHERIT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_VAX_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_VAX_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
-static bfd_boolean
+static bool
 rtype_to_howto (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
@@ -290,10 +288,10 @@ rtype_to_howto (bfd *abfd, arelent *cach
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 #define elf_info_to_howto rtype_to_howto
@@ -417,20 +415,20 @@ struct elf_vax_link_hash_entry
 
 /* Declare this now that the above structures are defined.  */
 
-static bfd_boolean elf_vax_discard_copies (struct elf_vax_link_hash_entry *,
-					   void *);
+static bool elf_vax_discard_copies (struct elf_vax_link_hash_entry *,
+				    void *);
 
 /* Declare this now that the above structures are defined.  */
 
-static bfd_boolean elf_vax_instantiate_got_entries (struct elf_link_hash_entry *,
-						    void *);
+static bool elf_vax_instantiate_got_entries (struct elf_link_hash_entry *,
+					     void *);
 
 /* Traverse an VAX ELF linker hash table.  */
 
 #define elf_vax_link_hash_traverse(table, func, info)			\
   (elf_link_hash_traverse						\
    ((table),								\
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* Create an entry in an VAX ELF linker hash table.  */
@@ -470,7 +468,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)
@@ -478,8 +476,7 @@ elf_vax_link_hash_table_create (bfd *abf
 
   if (!_bfd_elf_link_hash_table_init (ret, abfd,
 				      elf_vax_link_hash_newfunc,
-				      sizeof (struct elf_vax_link_hash_entry),
-				      GENERIC_ELF_DATA))
+				      sizeof (struct elf_vax_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -489,17 +486,17 @@ elf_vax_link_hash_table_create (bfd *abf
 }
 
 /* Keep vax-specific flags in the ELF header */
-static bfd_boolean
+static bool
 elf32_vax_set_private_flags (bfd *abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
-static bfd_boolean
+static bool
 elf32_vax_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -507,21 +504,21 @@ elf32_vax_merge_private_bfd_data (bfd *i
 
   if (   bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
 
   if (!elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Display the flags field */
-static bfd_boolean
+static bool
 elf32_vax_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -547,13 +544,13 @@ elf32_vax_print_private_bfd_data (bfd *a
 
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 /* Look through the relocs for a section during the first phase, and
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 elf_vax_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
 		      const Elf_Internal_Rela *relocs)
 {
@@ -565,7 +562,7 @@ elf_vax_check_relocs (bfd *abfd, struct
   asection *sreloc;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -598,7 +595,7 @@ elf_vax_check_relocs (bfd *abfd, struct
 
 	  /* If this is a local symbol, we resolve it directly without
 	     creating a global offset table entry.  */
-	  if (h->forced_local
+	  if (SYMBOL_REFERENCES_LOCAL (info, h)
 	      || h == elf_hash_table (info)->hgot
 	      || h == elf_hash_table (info)->hplt)
 	    break;
@@ -610,7 +607,7 @@ elf_vax_check_relocs (bfd *abfd, struct
 	      /* Create the .got section.  */
 	      elf_hash_table (info)->dynobj = dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (dynobj, info))
-		return FALSE;
+		return false;
 	    }
 
 	  if (h != NULL)
@@ -712,6 +709,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)
@@ -723,10 +725,10 @@ elf_vax_check_relocs (bfd *abfd, struct
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, dynobj, 2, abfd, /*rela?*/ TRUE);
+		    (sec, dynobj, 2, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 
 		  if (sec->flags & SEC_READONLY)
 		    info->flags |= DF_TEXTREL;
@@ -760,7 +762,7 @@ elf_vax_check_relocs (bfd *abfd, struct
 		      p = ((struct elf_vax_pcrel_relocs_copied *)
 			   bfd_alloc (dynobj, (bfd_size_type) sizeof *p));
 		      if (p == NULL)
-			return FALSE;
+			return false;
 		      p->next = eh->pcrel_relocs_copied;
 		      eh->pcrel_relocs_copied = p;
 		      p->section = sreloc;
@@ -777,14 +779,14 @@ elf_vax_check_relocs (bfd *abfd, struct
 	     Reconstruct it for later use during GC.  */
 	case R_VAX_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_VAX_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -792,7 +794,7 @@ elf_vax_check_relocs (bfd *abfd, struct
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -822,7 +824,7 @@ elf_vax_gc_mark_hook (asection *sec,
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf_vax_adjust_dynamic_symbol (struct bfd_link_info *info,
 			       struct elf_link_hash_entry *h)
 {
@@ -857,7 +859,7 @@ elf_vax_adjust_dynamic_symbol (struct bf
 	     linkage table, and we can just do a PCxx reloc instead.  */
 	  h->plt.offset = (bfd_vma) -1;
 	  h->needs_plt = 0;
-	  return TRUE;
+	  return true;
 	}
 
       s = elf_hash_table (info)->splt;
@@ -900,7 +902,7 @@ elf_vax_adjust_dynamic_symbol (struct bf
       BFD_ASSERT (s != NULL);
       s->size += sizeof (Elf32_External_Rela);
 
-      return TRUE;
+      return true;
     }
 
   /* Reinitialize the plt offset now that it is not used as a reference
@@ -916,7 +918,7 @@ elf_vax_adjust_dynamic_symbol (struct bf
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -927,7 +929,12 @@ elf_vax_adjust_dynamic_symbol (struct bf
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    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
@@ -963,21 +970,21 @@ elf_vax_adjust_dynamic_symbol (struct bf
    and PLT (.GOT) reference counts back to -1 so normal PC32 relocation
    will be done.  */
 
-static bfd_boolean
+static bool
 elf_vax_discard_got_entries (struct elf_link_hash_entry *h,
 			     void *infoptr ATTRIBUTE_UNUSED)
 {
   h->got.refcount = -1;
   h->plt.refcount = -1;
 
-  return TRUE;
+  return true;
 }
 
 /* Discard unused dynamic data if this is a static link.  */
 
-static bfd_boolean
-elf_vax_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-			      struct bfd_link_info *info)
+static bool
+elf_vax_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			     struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
@@ -1009,22 +1016,21 @@ elf_vax_always_size_sections (bfd *outpu
 			    elf_vax_discard_got_entries,
 			    info);
 
-  return TRUE;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf_vax_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+elf_vax_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean plt;
-  bfd_boolean relocs;
-  bfd_boolean reltext;
+  bool relocs;
 
   dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -1035,6 +1041,7 @@ elf_vax_size_dynamic_sections (bfd *outp
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -1057,9 +1064,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;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -1074,40 +1079,21 @@ 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"))
+      else if (startswith (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.  */
 	      s->reloc_count = 0;
 	    }
 	}
-      else if (! CONST_STRNEQ (name, ".got")
+      else if (! startswith (name, ".got")
 	       && strcmp (name, ".dynbss") != 0)
 	{
 	  /* It's not one of our sections, so don't allocate space.  */
@@ -1135,51 +1121,11 @@ elf_vax_size_dynamic_sections (bfd *outp
       /* Allocate memory for the section contents.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	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;
-	}
+	return false;
+      s->alloced = 1;
     }
-#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
@@ -1188,7 +1134,7 @@ elf_vax_size_dynamic_sections (bfd *outp
    in regular objects.  We allocated space for them in the check_relocs
    routine, but we won't fill them in in the relocate_section routine.  */
 
-static bfd_boolean
+static bool
 elf_vax_discard_copies (struct elf_vax_link_hash_entry *h,
 			void * ignore ATTRIBUTE_UNUSED)
 {
@@ -1196,12 +1142,12 @@ elf_vax_discard_copies (struct elf_vax_l
 
   /* We only discard relocs for symbols defined in a regular object.  */
   if (!h->root.def_regular)
-    return TRUE;
+    return true;
 
   for (s = h->pcrel_relocs_copied; s != NULL; s = s->next)
     s->section->size -= s->count * sizeof (Elf32_External_Rela);
 
-  return TRUE;
+  return true;
 }
 
 /* This function is called via elf_link_hash_traverse.  It looks for
@@ -1211,7 +1157,7 @@ elf_vax_discard_copies (struct elf_vax_l
    be done.  Otherwise space in the .got and .rela.got will be reserved
    for the symbol.  */
 
-static bfd_boolean
+static bool
 elf_vax_instantiate_got_entries (struct elf_link_hash_entry *h, void * infoptr)
 {
   struct bfd_link_info *info = (struct bfd_link_info *) infoptr;
@@ -1221,7 +1167,7 @@ elf_vax_instantiate_got_entries (struct
 
   /* We don't care about non-GOT (and non-PLT) entries.  */
   if (h->got.refcount <= 0 && h->plt.refcount <= 0)
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   BFD_ASSERT (dynobj != NULL);
@@ -1240,7 +1186,7 @@ elf_vax_instantiate_got_entries (struct
       if (h->dynindx == -1)
 	{
 	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       /* Allocate space in the .got and .rela.got sections.  */
@@ -1248,12 +1194,12 @@ elf_vax_instantiate_got_entries (struct
       srelgot->size += sizeof (Elf32_External_Rela);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relocate an VAX ELF section.  */
 
-static bfd_boolean
+static int
 elf_vax_relocate_section (bfd *output_bfd,
 			  struct bfd_link_info *info,
 			  bfd *input_bfd,
@@ -1299,7 +1245,7 @@ elf_vax_relocate_section (bfd *output_bf
       if (r_type < 0 || r_type >= (int) R_VAX_max)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       howto = howto_table + r_type;
 
@@ -1315,8 +1261,8 @@ elf_vax_relocate_section (bfd *output_bf
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned, ignored;
+	  bool unresolved_reloc;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1358,7 +1304,8 @@ elf_vax_relocate_section (bfd *output_bf
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_VAX_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -1471,7 +1418,7 @@ elf_vax_relocate_section (bfd *output_bf
 	    {
 	      Elf_Internal_Rela outrel;
 	      bfd_byte *loc;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
@@ -1479,21 +1426,21 @@ elf_vax_relocate_section (bfd *output_bf
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_get_dynamic_reloc_section
-		    (input_bfd, input_section, /*rela?*/ TRUE);
+		    (input_bfd, input_section, /*rela?*/ true);
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -1513,7 +1460,7 @@ elf_vax_relocate_section (bfd *output_bf
 		{
 		  if (r_type == R_VAX_32)
 		    {
-		      relocate = TRUE;
+		      relocate = true;
 		      outrel.r_info = ELF32_R_INFO (0, R_VAX_RELATIVE);
 		      BFD_ASSERT (bfd_get_signed_32 (input_bfd,
 						     &contents[rel->r_offset]) == 0);
@@ -1528,7 +1475,7 @@ elf_vax_relocate_section (bfd *output_bf
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -1630,7 +1577,7 @@ elf_vax_relocate_section (bfd *output_bf
 							    symtab_hdr->sh_link,
 							    sym->st_name);
 		    if (name == NULL)
-		      return FALSE;
+		      return false;
 		    if (*name == '\0')
 		      name = bfd_section_name (sec);
 		  }
@@ -1643,13 +1590,13 @@ elf_vax_relocate_section (bfd *output_bf
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf_vax_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
 			       struct elf_link_hash_entry *h,
 			       Elf_Internal_Sym *sym)
@@ -1781,12 +1728,12 @@ elf_vax_finish_dynamic_symbol (bfd *outp
       || h == elf_hash_table (info)->hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_vax_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd *dynobj;
@@ -1874,7 +1821,7 @@ elf_vax_finish_dynamic_sections (bfd *ou
   if (elf_section_data (sgot->output_section) != NULL)
     elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
 
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -1904,6 +1851,7 @@ elf_vax_plt_sym_val (bfd_vma i, const as
 
 #define TARGET_LITTLE_SYM		vax_elf32_vec
 #define TARGET_LITTLE_NAME		"elf32-vax"
+#define ELF_TARGET_ID			VAX_ELF_DATA
 #define ELF_MACHINE_CODE		EM_VAX
 #define ELF_MAXPAGESIZE			0x1000
 
@@ -1916,10 +1864,8 @@ elf_vax_plt_sym_val (bfd_vma i, const as
 #define elf_backend_check_relocs	elf_vax_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
 					elf_vax_adjust_dynamic_symbol
-#define elf_backend_always_size_sections \
-					elf_vax_always_size_sections
-#define elf_backend_size_dynamic_sections \
-					elf_vax_size_dynamic_sections
+#define elf_backend_early_size_sections	elf_vax_early_size_sections
+#define elf_backend_late_size_sections	elf_vax_late_size_sections
 #define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section	elf_vax_relocate_section
 #define elf_backend_finish_dynamic_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.20200303/bfd/elf32-visium.c ./bfd/elf32-visium.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-visium.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-visium.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* Visium-specific support for 32-bit ELF.
 
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,220 +28,220 @@
 #include "libiberty.h"
 
 static bfd_reloc_status_type visium_elf_howto_parity_reloc
-  (bfd *, arelent *, asymbol *, PTR, asection *, bfd *, char **);
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 
 static reloc_howto_type visium_elf_howto_table[] = {
   /* This reloc does nothing.  */
   HOWTO (R_VISIUM_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VISIUM_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 8 bit absolute relocation.  */
   HOWTO (R_VISIUM_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VISIUM_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_VISIUM_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VISIUM_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_VISIUM_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VISIUM_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 
   /* A 8 bit PC relative relocation.  */
   HOWTO (R_VISIUM_8_PCREL,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VISIUM_8_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit PC relative relocation.  */
   HOWTO (R_VISIUM_16_PCREL,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VISIUM_16_PCREL",	/* name */
-	 FALSE,			/* partial inplace */
+	 false,			/* partial inplace */
 	 0x0000,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 32-bit PC relative relocation.  */
   HOWTO (R_VISIUM_32_PCREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_VISIUM_32_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16-bit PC word relative offset, relative to start of instruction
      and always in the second half of the instruction.  */
   HOWTO (R_VISIUM_PC16,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 visium_elf_howto_parity_reloc,	/* special_function */
 	 "R_VISIUM_PC16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The high 16 bits of symbol value.  */
   HOWTO (R_VISIUM_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 visium_elf_howto_parity_reloc,	/* special_function */
 	 "R_VISIUM_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The low 16 bits of symbol value.  */
   HOWTO (R_VISIUM_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 visium_elf_howto_parity_reloc,	/* special_function */
 	 "R_VISIUM_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit immediate value.  */
   HOWTO (R_VISIUM_IM16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 visium_elf_howto_parity_reloc,	/* special_function */
 	 "R_VISIUM_IM16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000000,		/* src_mask */
 	 0x000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The high 16 bits of symbol value, pc relative.  */
   HOWTO (R_VISIUM_HI16_PCREL,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 visium_elf_howto_parity_reloc,	/* special_function */
 	 "R_VISIUM_HI16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The low 16 bits of symbol value, pc relative.  */
   HOWTO (R_VISIUM_LO16_PCREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 visium_elf_howto_parity_reloc,	/* special_function */
 	 "R_VISIUM_LO16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit immediate value, pc relative.  */
   HOWTO (R_VISIUM_IM16_PCREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 visium_elf_howto_parity_reloc,	/* special_function */
 	 "R_VISIUM_IM16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000000,		/* src_mask */
 	 0x000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 };
 
@@ -249,33 +249,33 @@ static reloc_howto_type visium_elf_howto
 static reloc_howto_type visium_elf_vtinherit_howto =
   HOWTO (R_VISIUM_GNU_VTINHERIT,      /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			   /* size */
 	 0,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_dont,   /* complain_on_overflow */
 	 NULL,			   /* special_function */
 	 "R_VISIUM_GNU_VTINHERIT", /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0,			   /* src_mask */
 	 0,			   /* dst_mask */
-	 FALSE);		   /* pcrel_offset */
+	 false);		   /* pcrel_offset */
 
 /* GNU extension to record C++ vtable member usage.  */
 static reloc_howto_type visium_elf_vtentry_howto =
   HOWTO (R_VISIUM_GNU_VTENTRY,	   /* type */
 	 0,			   /* rightshift */
-	 2,			   /* size (0 = byte, 1 = short, 2 = long) */
+	 4,			   /* size */
 	 0,			   /* bitsize */
-	 FALSE,			   /* pc_relative */
+	 false,			   /* pc_relative */
 	 0,			   /* bitpos */
 	 complain_overflow_dont,   /* complain_on_overflow */
 	 NULL,			   /* special_function */
 	 "R_VISIUM_GNU_VTENTRY",   /* name */
-	 FALSE,			   /* partial_inplace */
+	 false,			   /* partial_inplace */
 	 0,			   /* src_mask */
 	 0,			   /* dst_mask */
-	 FALSE);		   /* pcrel_offset */
+	 false);		   /* pcrel_offset */
 
 /* Return the parity bit for INSN shifted to its final position.  */
 
@@ -304,7 +304,7 @@ visium_parity_bit (bfd_vma insn)
 
 static bfd_reloc_status_type
 visium_elf_howto_parity_reloc (bfd * input_bfd, arelent *reloc_entry,
-			       asymbol *symbol, PTR data,
+			       asymbol *symbol, void *data,
 			       asection *input_section, bfd *output_bfd,
 			       char **error_message ATTRIBUTE_UNUSED)
 {
@@ -458,7 +458,7 @@ visium_reloc_name_lookup (bfd *abfd ATTR
 
 /* Set the howto pointer for a VISIUM ELF reloc.  */
 
-static bfd_boolean
+static bool
 visium_info_to_howto_rela (bfd *abfd, arelent *cache_ptr,
 			   Elf_Internal_Rela *dst)
 {
@@ -481,19 +481,19 @@ visium_info_to_howto_rela (bfd *abfd, ar
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      abfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       cache_ptr->howto = &visium_elf_howto_table[r_type];
       break;
     }
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase.
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 visium_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			 asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -503,7 +503,7 @@ visium_elf_check_relocs (bfd *abfd, stru
   const Elf_Internal_Rela *rel_end;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -531,24 +531,24 @@ visium_elf_check_relocs (bfd *abfd, stru
 	     Reconstruct it for later use during GC.  */
 	case R_VISIUM_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_VISIUM_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relocate a VISIUM ELF section.  */
 
-static bfd_boolean
+static int
 visium_elf_relocate_section (bfd *output_bfd,
 			     struct bfd_link_info *info, bfd *input_bfd,
 			     asection *input_section, bfd_byte *contents,
@@ -603,8 +603,8 @@ visium_elf_relocate_section (bfd *output
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned, ignored;
+	  bool unresolved_reloc;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -615,17 +615,9 @@ visium_elf_relocate_section (bfd *output
 	}
 
       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 zeroed.  Avoid any special processing.  */
-	  _bfd_clear_contents (howto, input_bfd, input_section,
-			       contents, rel->r_offset);
-
-	  rel->r_info = 0;
-	  rel->r_addend = 0;
-	  continue;
-	}
+	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+					 rel, 1, relend, R_VISIUM_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -673,7 +665,7 @@ visium_elf_relocate_section (bfd *output
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -699,7 +691,7 @@ visium_elf_relocate_section (bfd *output
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function is called during section gc to discover the section a
@@ -722,55 +714,55 @@ visium_elf_gc_mark_hook (asection *sec,
   return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
 }
 
-static bfd_boolean
+static bool
 visium_elf_init_file_header (bfd *abfd, struct bfd_link_info *info)
 {
   Elf_Internal_Ehdr *i_ehdrp;
 
   if (!_bfd_elf_init_file_header (abfd, info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
   i_ehdrp->e_ident[EI_ABIVERSION] = 1;
-  return TRUE;
+  return true;
 }
 
 /* Function to set the ELF flag bits.  */
 
-static bfd_boolean
+static bool
 visium_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Copy backend specific data from one object module to another.  */
 
-static bfd_boolean
+static bool
 visium_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (!elf_flags_init (obfd)
 	      || elf_elfheader (obfd)->e_flags ==
 	      elf_elfheader (ibfd)->e_flags);
 
   elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
-  elf_flags_init (obfd) = TRUE;
+  elf_flags_init (obfd) = true;
 
   /* Copy object attributes.  */
   _bfd_elf_copy_obj_attributes (ibfd, obfd);
 
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object
    file to the output object file when linking.  */
 
-static bfd_boolean
+static bool
 visium_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -792,7 +784,7 @@ visium_elf_merge_private_bfd_data (bfd *
   if (!elf_flags_init (obfd))
     {
       /* First call, no flags set.  */
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
   else
@@ -826,10 +818,10 @@ visium_elf_merge_private_bfd_data (bfd *
 	   ibfd, new_opt_with, opt_arch, old_opt_with, opt_arch);
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 visium_elf_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -851,7 +843,7 @@ visium_elf_print_private_bfd_data (bfd *
     fprintf (file, " -mtune=mcm24");
 
   fputc ('\n', file);
-  return TRUE;
+  return true;
 }
 
 #define ELF_ARCH		bfd_arch_visium
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-wasm32.c ./bfd/elf32-wasm32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-wasm32.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-wasm32.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* 32-bit ELF for the WebAssembly target
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,32 +29,32 @@ static reloc_howto_type elf32_wasm32_how
 {
   HOWTO (R_WASM32_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_WASM32_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit absolute */
   HOWTO (R_WASM32_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_WASM32_32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* Look up the relocation CODE.  */
@@ -116,7 +116,7 @@ elf32_wasm32_rtype_to_howto (bfd *abfd,
 
 /* Translate the ELF-internal relocation RELA into CACHE_PTR.  */
 
-static bfd_boolean
+static bool
 elf32_wasm32_info_to_howto_rela (bfd *abfd,
 				arelent *cache_ptr,
 				Elf_Internal_Rela *dst)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-xc16x.c ./bfd/elf32-xc16x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-xc16x.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-xc16x.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,487 +0,0 @@
-/* Infineon XC16X-specific support for 16-bit ELF.
-   Copyright (C) 2006-2019 Free Software Foundation, Inc.
-   Contributed by KPIT Cummins Infosystems
-
-   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 "libbfd.h"
-#include "elf-bfd.h"
-#include "elf/xc16x.h"
-#include "dwarf2.h"
-#include "libiberty.h"
-
-static reloc_howto_type xc16x_elf_howto_table [] =
-{
-  /* This reloc does nothing.  */
-  HOWTO (R_XC16X_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_XC16X_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* An 8 bit absolute relocation.  */
-  HOWTO (R_XC16X_ABS_8,		/* type */
-	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
-	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 8,			/* bitpos */
-	 complain_overflow_bitfield, /* complain_on_overflow */
-	 bfd_elf_generic_reloc,	/* special_function */
-	 "R_XC16X_ABS_8",	/* name */
-	 TRUE,			/* partial_inplace */
-	 0x0000,		/* src_mask */
-	 0x00ff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* A 16 bit absolute relocation.  */
-  HOWTO (R_XC16X_ABS_16,	/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_dont, /* complain_on_overflow */
-	 bfd_elf_generic_reloc,	/* special_function */
-	 "R_XC16X_ABS_16",	/* name */
-	 TRUE,			/* partial_inplace */
-	 0x00000000,		/* src_mask */
-	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  HOWTO (R_XC16X_ABS_32,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_bitfield, /* complain_on_overflow */
-	 bfd_elf_generic_reloc,	/* special_function */
-	 "R_XC16X_ABS_32",	/* name */
-	 TRUE,			/* partial_inplace */
-	 0x00000000,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-
-  /* A PC relative 8 bit relocation.  */
-  HOWTO (R_XC16X_8_PCREL,	/* type */
-	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
-	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 8,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_XC16X_8_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x0000,		/* src_mask */
-	 0x00ff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
-
-  /* Relocation regarding page number.  */
-    HOWTO (R_XC16X_PAG,	/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_XC16X_PAG",	/* name */
-	 TRUE,			/* partial_inplace */
-	 0x00000000,		/* src_mask */
-	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-
-  /* Relocation regarding page number.  */
-      HOWTO (R_XC16X_POF,	/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos  */
-	 complain_overflow_signed, /* complain_on_overflow  */
-	 bfd_elf_generic_reloc, /* special_function  */
-	 "R_XC16X_POF",	/* name  */
-	 TRUE,			/* partial_inplace  */
-	 0x00000000,		/* src_mask  */
-	 0x0000ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
-
-
-  /* Relocation regarding segment number.   */
-      HOWTO (R_XC16X_SEG,	/* type  */
-	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
-	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
-	 0,			/* bitpos  */
-	 complain_overflow_signed, /* complain_on_overflow  */
-	 bfd_elf_generic_reloc, /* special_function  */
-	 "R_XC16X_SEG",	/* name  */
-	 TRUE,			/* partial_inplace  */
-	 0x00000000,		/* src_mask  */
-	 0x0000ffff,		/* dst_mask  */
-	 FALSE),		/* pcrel_offset  */
-
-  /* Relocation regarding segment offset.  */
-      HOWTO (R_XC16X_SOF,	/* type  */
-	 0,			/* rightshift  */
-	 1,			/* size (0 = byte, 1 = short, 2 = long)  */
-	 16,			/* bitsize  */
-	 FALSE,			/* pc_relative  */
-	 0,			/* bitpos  */
-	 complain_overflow_signed, /* complain_on_overflow  */
-	 bfd_elf_generic_reloc, /* special_function  */
-	 "R_XC16X_SOF",	/* name */
-	 TRUE,			/* partial_inplace  */
-	 0x00000000,		/* src_mask  */
-	 0x0000ffff,		/* dst_mask  */
-	 FALSE)			/* pcrel_offset  */
-};
-
-
-/* Map BFD reloc types to XC16X ELF reloc types.  */
-
-struct xc16x_reloc_map
-{
-  bfd_reloc_code_real_type bfd_reloc_val;
-  unsigned int xc16x_reloc_val;
-};
-
-static const struct xc16x_reloc_map xc16x_reloc_map [] =
-{
-  { BFD_RELOC_NONE,	      R_XC16X_NONE },
-  { BFD_RELOC_8,	      R_XC16X_ABS_8 },
-  { BFD_RELOC_16,	      R_XC16X_ABS_16 },
-  { BFD_RELOC_32,	      R_XC16X_ABS_32 },
-  { BFD_RELOC_8_PCREL,	      R_XC16X_8_PCREL },
-  { BFD_RELOC_XC16X_PAG,      R_XC16X_PAG},
-  { BFD_RELOC_XC16X_POF,      R_XC16X_POF},
-  { BFD_RELOC_XC16X_SEG,      R_XC16X_SEG},
-  { BFD_RELOC_XC16X_SOF,      R_XC16X_SOF},
-};
-
-
-/* This function is used to search for correct relocation type from
-   howto structure.  */
-
-static reloc_howto_type *
-xc16x_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			 bfd_reloc_code_real_type code)
-{
-  unsigned int i;
-
-  for (i = ARRAY_SIZE (xc16x_reloc_map); --i;)
-    if (xc16x_reloc_map [i].bfd_reloc_val == code)
-      return & xc16x_elf_howto_table [xc16x_reloc_map[i].xc16x_reloc_val];
-
-  return NULL;
-}
-
-static reloc_howto_type *
-xc16x_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
-			 const char *r_name)
-{
-  unsigned int i;
-
-  for (i = 0; i < ARRAY_SIZE (xc16x_elf_howto_table); i++)
-    if (xc16x_elf_howto_table[i].name != NULL
-	&& strcasecmp (xc16x_elf_howto_table[i].name, r_name) == 0)
-      return &xc16x_elf_howto_table[i];
-
-  return NULL;
-}
-
-static reloc_howto_type *
-elf32_xc16x_rtype_to_howto (bfd *abfd ATTRIBUTE_UNUSED, unsigned r_type)
-{
-  if (r_type < ARRAY_SIZE (xc16x_elf_howto_table))
-    return & xc16x_elf_howto_table[r_type];
-
-  return NULL;
-}
-
-/* For a particular operand this function is
-   called to finalise the type of relocation.  */
-
-static bfd_boolean
-elf32_xc16x_info_to_howto (bfd *abfd, arelent *bfd_reloc,
-			   Elf_Internal_Rela *elf_reloc)
-{
-  unsigned int r;
-  unsigned int i;
-
-  r = ELF32_R_TYPE (elf_reloc->r_info);
-  for (i = 0; i < ARRAY_SIZE (xc16x_elf_howto_table); i++)
-    if (xc16x_elf_howto_table[i].type == r)
-      {
-	bfd_reloc->howto = &xc16x_elf_howto_table[i];
-	return TRUE;
-      }
-  /* xgettext:c-format */
-  _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r);
-  bfd_set_error (bfd_error_bad_value);
-  return FALSE;
-}
-
-static bfd_reloc_status_type
-elf32_xc16x_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_byte *hit_data = contents + offset;
-  bfd_vma val1;
-
-  switch (r_type)
-    {
-    case R_XC16X_NONE:
-      return bfd_reloc_ok;
-
-    case R_XC16X_ABS_16:
-      value += addend;
-      bfd_put_16 (input_bfd, value, hit_data);
-      return bfd_reloc_ok;
-
-    case R_XC16X_8_PCREL:
-      bfd_put_8 (input_bfd, value, hit_data);
-      return bfd_reloc_ok;
-
-      /* Following case is to find page number from actual
-	 address for this divide value by 16k i.e. page size.  */
-
-    case R_XC16X_PAG:
-      value += addend;
-      value /= 0x4000;
-      bfd_put_16 (input_bfd, value, hit_data);
-      return bfd_reloc_ok;
-
-      /* Following case is to find page offset from actual address
-	 for this take modulo of value by 16k i.e. page size.  */
-
-    case R_XC16X_POF:
-      value += addend;
-      value %= 0x4000;
-      bfd_put_16 (input_bfd, value, hit_data);
-      return bfd_reloc_ok;
-
-      /* Following case is to find segment number from actual
-	 address for this divide value by 64k i.e. segment size.  */
-
-    case R_XC16X_SEG:
-      value += addend;
-      value /= 0x10000;
-      bfd_put_16 (input_bfd, value, hit_data);
-      return bfd_reloc_ok;
-
-      /* Following case is to find segment offset from actual address
-	 for this take modulo of value by 64k i.e. segment size.  */
-
-    case R_XC16X_SOF:
-      value += addend;
-      value %= 0x10000;
-      bfd_put_16 (input_bfd, value, hit_data);
-      return bfd_reloc_ok;
-
-    case R_XC16X_ABS_32:
-      if (!strstr (input_section->name,".debug"))
-	{
-	  value += addend;
-	  val1 = value;
-	  value %= 0x4000;
-	  val1 /= 0x4000;
-	  val1 = val1 << 16;
-	  value += val1;
-	  bfd_put_32 (input_bfd, value, hit_data);
-	}
-      else
-	{
-	  value += addend;
-	  bfd_put_32 (input_bfd, value, hit_data);
-	}
-      return bfd_reloc_ok;
-
-    default:
-      return bfd_reloc_notsupported;
-    }
-}
-
-static bfd_boolean
-elf32_xc16x_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 = elf32_xc16x_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;
-
-      elf32_xc16x_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;
-}
-
-
-static bfd_boolean
-elf32_xc16x_final_write_processing (bfd *abfd)
-{
-  unsigned long val;
-
-  switch (bfd_get_mach (abfd))
-    {
-    default:
-    case bfd_mach_xc16x:
-      val = 0x1000;
-      break;
-
-    case bfd_mach_xc16xl:
-      val = 0x1001;
-      break;
-
-    case bfd_mach_xc16xs:
-      val = 0x1002;
-      break;
-    }
-
-  elf_elfheader (abfd)->e_flags |= val;
-  return _bfd_elf_final_write_processing (abfd);
-}
-
-static unsigned long
-elf32_xc16x_mach (flagword flags)
-{
-  switch (flags)
-    {
-    case 0x1000:
-    default:
-      return bfd_mach_xc16x;
-
-    case 0x1001:
-      return bfd_mach_xc16xl;
-
-    case 0x1002:
-      return bfd_mach_xc16xs;
-    }
-}
-
-
-static bfd_boolean
-elf32_xc16x_object_p (bfd *abfd)
-{
-  bfd_default_set_arch_mach (abfd, bfd_arch_xc16x,
-			     elf32_xc16x_mach (elf_elfheader (abfd)->e_flags));
-  return TRUE;
-}
-
-
-#define ELF_ARCH		bfd_arch_xc16x
-#define ELF_MACHINE_CODE	EM_XC16X
-#define ELF_MAXPAGESIZE		0x100
-
-#define TARGET_LITTLE_SYM       xc16x_elf32_vec
-#define TARGET_LITTLE_NAME	"elf32-xc16x"
-#define elf_backend_final_write_processing	elf32_xc16x_final_write_processing
-#define elf_backend_object_p		elf32_xc16x_object_p
-#define elf_backend_can_gc_sections	1
-#define bfd_elf32_bfd_reloc_type_lookup	xc16x_reloc_type_lookup
-#define bfd_elf32_bfd_reloc_name_lookup xc16x_reloc_name_lookup
-#define elf_info_to_howto		elf32_xc16x_info_to_howto
-#define elf_info_to_howto_rel		elf32_xc16x_info_to_howto
-#define elf_backend_relocate_section	elf32_xc16x_relocate_section
-#define elf_backend_rela_normal		1
-
-#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.20200303/bfd/elf32-xgate.c ./bfd/elf32-xgate.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-xgate.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-xgate.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Sean Keys(skeys@ipdatasys.com)
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -42,303 +42,303 @@ static reloc_howto_type elf_xgate_howto_
   /* This reloc does nothing.  */
   HOWTO (R_XGATE_NONE, /* type */
 	 0, /* rightshift */
-	 3, /* size (0 = byte, 1 = short, 2 = long) */
+	 0, /* size */
 	 0, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_NONE", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0, /* src_mask */
 	 0, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 8 bit absolute relocation.  */
   HOWTO (R_XGATE_8, /* type */
 	 0, /* rightshift */
-	 0, /* size (0 = byte, 1 = short, 2 = long) */
+	 1, /* size */
 	 8, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_8", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 8 bit PC-rel relocation.  */
   HOWTO (R_XGATE_PCREL_8, /* type */
 	 0, /* rightshift */
-	 0, /* size (0 = byte, 1 = short, 2 = long) */
+	 1, /* size */
 	 8, /* bitsize */
-	 TRUE, /* pc_relative */
+	 true, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_PCREL_8", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 TRUE), /* pcrel_offset */
+	 true), /* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_XGATE_16, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont /*bitfield */, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_16", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0xffff, /* src_mask */
 	 0xffff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 32 bit absolute relocation.  This one is never used for the
      code relocation.  It's used by gas for -gstabs generation.  */
   HOWTO (R_XGATE_32, /* type */
 	 0, /* rightshift */
-	 2, /* size (0 = byte, 1 = short, 2 = long) */
+	 4, /* size */
 	 32, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_32", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0xffffffff, /* src_mask */
 	 0xffffffff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 16 bit PC-rel relocation.  */
   HOWTO (R_XGATE_PCREL_16, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 TRUE, /* pc_relative */
+	 true, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_PCREL_16", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0xffff, /* src_mask */
 	 0xffff, /* dst_mask */
-	 TRUE), /* pcrel_offset */
+	 true), /* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_XGATE_GNU_VTINHERIT, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 0, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL, /* special_function */
 	 "R_XGATE_GNU_VTINHERIT", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0, /* src_mask */
 	 0, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_XGATE_GNU_VTENTRY, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 0, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_XGATE_GNU_VTENTRY", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0, /* src_mask */
 	 0, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 24 bit relocation.  */
   HOWTO (R_XGATE_24, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_IMM8_LO", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 16-bit low relocation.  */
   HOWTO (R_XGATE_LO16, /* type */
 	 8, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_IMM8_HI", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A page relocation.  */
   HOWTO (R_XGATE_GPAGE, /* type */
 	 0, /* rightshift */
-	 0, /* size (0 = byte, 1 = short, 2 = long) */
+	 1, /* size */
 	 8, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 xgate_elf_special_reloc,/* special_function */
 	 "R_XGATE_GPAGE", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 9 bit absolute relocation.   */
   HOWTO (R_XGATE_PCREL_9, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 9, /* bitsize */
-	 TRUE, /* pc_relative */
+	 true, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_PCREL_9", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0xffff, /* src_mask */
 	 0xffff, /* dst_mask */
-	 TRUE), /* pcrel_offset */
+	 true), /* pcrel_offset */
 
   /* A 8 bit absolute relocation (upper address).  */
   HOWTO (R_XGATE_PCREL_10, /* type */
 	 8, /* rightshift */
-	 0, /* size (0 = byte, 1 = short, 2 = long) */
+	 1, /* size */
 	 10, /* bitsize */
-	 TRUE, /* pc_relative */
+	 true, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_PCREL_10", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 TRUE), /* pcrel_offset */
+	 true), /* pcrel_offset */
 
   /* A 8 bit absolute relocation.  */
   HOWTO (R_XGATE_IMM8_LO, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_IMM8_LO", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0xffff, /* src_mask */
 	 0xffff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 16 bit absolute relocation (upper address).  */
   HOWTO (R_XGATE_IMM8_HI, /* type */
 	 8, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_IMM8_HI", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 3 bit absolute relocation.  */
   HOWTO (R_XGATE_IMM3, /* type */
 	 8, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_IMM3", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 4 bit absolute relocation.  */
   HOWTO (R_XGATE_IMM4, /* type */
 	 8, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_IMM4", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* A 5 bit absolute relocation.  */
   HOWTO (R_XGATE_IMM5, /* type */
 	 8, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 16, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_XGATE_IMM5", /* name */
-	 FALSE, /* partial_inplace */
+	 false, /* partial_inplace */
 	 0x00ff, /* src_mask */
 	 0x00ff, /* dst_mask */
-	 FALSE), /* pcrel_offset */
+	 false), /* pcrel_offset */
 
   /* Mark beginning of a jump instruction (any form).  */
   HOWTO (R_XGATE_RL_JUMP, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 0, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 xgate_elf_ignore_reloc, /* special_function */
 	 "R_XGATE_RL_JUMP", /* name */
-	 TRUE, /* partial_inplace */
+	 true, /* partial_inplace */
 	 0, /* src_mask */
 	 0, /* dst_mask */
-	 TRUE), /* pcrel_offset */
+	 true), /* pcrel_offset */
 
   /* Mark beginning of Gcc relaxation group instruction.  */
   HOWTO (R_XGATE_RL_GROUP, /* type */
 	 0, /* rightshift */
-	 1, /* size (0 = byte, 1 = short, 2 = long) */
+	 2, /* size */
 	 0, /* bitsize */
-	 FALSE, /* pc_relative */
+	 false, /* pc_relative */
 	 0, /* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 xgate_elf_ignore_reloc, /* special_function */
 	 "R_XGATE_RL_GROUP", /* name */
-	 TRUE, /* partial_inplace */
+	 true, /* partial_inplace */
 	 0, /* src_mask */
 	 0, /* dst_mask */
-	 TRUE), /* pcrel_offset */
+	 true), /* pcrel_offset */
 };
 
 /* Map BFD reloc types to XGATE ELF reloc types.  */
@@ -404,7 +404,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an XGATE ELF reloc.  */
 
-static bfd_boolean
+static bool
 xgate_info_to_howto_rel (bfd *abfd,
 			 arelent *cache_ptr,
 			 Elf_Internal_Rela *dst)
@@ -418,10 +418,10 @@ xgate_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_xgate_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* Specific sections:
@@ -480,7 +480,7 @@ xgate_elf_special_reloc (bfd *abfd ATTRI
   abort ();
 }
 
-static bfd_boolean
+static bool
 _bfd_xgate_elf_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -508,7 +508,7 @@ _bfd_xgate_elf_print_private_bfd_data (b
     fprintf (file, _("error reading cpu type from elf private data"));
   fputc ('\n', file);
 
-  return TRUE;
+  return true;
 }
 
 #define ELF_ARCH			     bfd_arch_xgate
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-xstormy16.c ./bfd/elf32-xstormy16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-xstormy16.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-xstormy16.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Xstormy16-specific support for 32-bit ELF.
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -73,197 +73,197 @@ static reloc_howto_type xstormy16_elf_ho
   /* This reloc does nothing.  */
   HOWTO (R_XSTORMY16_NONE,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_XSTORMY16_32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_XSTORMY16_16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_XSTORMY16_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit pc-relative relocation.  */
   HOWTO (R_XSTORMY16_PC32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_PC32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit pc-relative relocation.  */
   HOWTO (R_XSTORMY16_PC16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_PC16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* An 8 bit pc-relative relocation.  */
   HOWTO (R_XSTORMY16_PC8,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_PC8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 12-bit pc-relative relocation suitable for the branch instructions.  */
   HOWTO (R_XSTORMY16_REL_12,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 11,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 1,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_REL_12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0ffe,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 24-bit absolute relocation suitable for the jump instructions.  */
   HOWTO (R_XSTORMY16_24,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 xstormy16_elf_24_reloc,	/* special_function */
 	 "R_XSTORMY16_24",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff00ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit absolute relocation to a function pointer.  */
   HOWTO (R_XSTORMY16_FPTR16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_FPTR16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low order 16 bit value of a high memory address.  */
   HOWTO (R_XSTORMY16_LO16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High order 16 bit value of a high memory address.  */
   HOWTO (R_XSTORMY16_HI16,	/* type */
 	 16,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 12 bit absolute relocation.  */
   HOWTO (R_XSTORMY16_12,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_XSTORMY16_12",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0000,		/* src_mask */
 	 0x0fff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 static reloc_howto_type xstormy16_elf_howto_table2 [] =
@@ -271,32 +271,32 @@ static reloc_howto_type xstormy16_elf_ho
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_XSTORMY16_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_XSTORMY16_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_XSTORMY16_GNU_VTENTRY,     /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_XSTORMY16_GNU_VTENTRY",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 };
 
@@ -375,7 +375,7 @@ xstormy16_reloc_name_lookup (bfd *abfd A
 
 /* Set the howto pointer for an XSTORMY16 ELF reloc.  */
 
-static bfd_boolean
+static bool
 xstormy16_info_to_howto_rela (bfd * abfd,
 			      arelent * cache_ptr,
 			      Elf_Internal_Rela * dst)
@@ -395,9 +395,9 @@ xstormy16_info_to_howto_rela (bfd * abfd
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* We support 16-bit pointers to code above 64k by generating a thunk
@@ -406,7 +406,7 @@ xstormy16_info_to_howto_rela (bfd * abfd
    -relax switch is given, as otherwise we have no idea where the
    sections will fall in the address space.  */
 
-static bfd_boolean
+static bool
 xstormy16_elf_check_relocs (bfd *abfd,
 			    struct bfd_link_info *info,
 			    asection *sec,
@@ -420,7 +420,7 @@ xstormy16_elf_check_relocs (bfd *abfd,
   bfd *dynobj;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata(abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -472,7 +472,7 @@ xstormy16_elf_check_relocs (bfd *abfd,
 	      elf_hash_table (info)->splt = splt;
 	      if (splt == NULL
 		  || !bfd_set_section_alignment (splt, 1))
-		return FALSE;
+		return false;
 	    }
 
 	  if (h != NULL)
@@ -487,7 +487,7 @@ xstormy16_elf_check_relocs (bfd *abfd,
 		  size = symtab_hdr->sh_info * sizeof (bfd_vma);
 		  local_plt_offsets = bfd_alloc (abfd, size);
 		  if (local_plt_offsets == NULL)
-		    return FALSE;
+		    return false;
 		  elf_local_got_offsets (abfd) = local_plt_offsets;
 
 		  for (i = 0; i < symtab_hdr->sh_info; i++)
@@ -507,19 +507,19 @@ xstormy16_elf_check_relocs (bfd *abfd,
 	     Reconstruct it for later use during GC.  */
 	case R_XSTORMY16_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_XSTORMY16_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* A subroutine of xstormy16_elf_relax_section.  If the global symbol H
@@ -528,10 +528,10 @@ xstormy16_elf_check_relocs (bfd *abfd,
 struct relax_plt_data
 {
   asection *splt;
-  bfd_boolean *again;
+  bool *again;
 };
 
-static bfd_boolean
+static bool
 xstormy16_relax_plt_check (struct elf_link_hash_entry *h, void * xdata)
 {
   struct relax_plt_data *data = (struct relax_plt_data *) xdata;
@@ -552,17 +552,17 @@ xstormy16_relax_plt_check (struct elf_li
 	{
 	  h->plt.offset = -1;
 	  data->splt->size -= 4;
-	  *data->again = TRUE;
+	  *data->again = true;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* A subroutine of xstormy16_elf_relax_section.  If the global symbol H
    previously had a plt entry, give it a new entry offset.  */
 
-static bfd_boolean
+static bool
 xstormy16_relax_plt_realloc (struct elf_link_hash_entry *h, void * xdata)
 {
   bfd_vma *entry = (bfd_vma *) xdata;
@@ -573,32 +573,33 @@ xstormy16_relax_plt_realloc (struct elf_
       *entry += 4;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 xstormy16_elf_relax_section (bfd *dynobj,
 			     asection *splt,
 			     struct bfd_link_info *info,
-			     bfd_boolean *again)
+			     bool *again)
 {
   struct relax_plt_data relax_plt_data;
   bfd *ibfd;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
-  if (bfd_link_relocatable (info))
-    return TRUE;
+  if (bfd_link_relocatable (info)
+      || !is_elf_hash_table (info->hash))
+    return true;
 
   /* We only relax the .plt section at the moment.  */
   if (dynobj != elf_hash_table (info)->dynobj
       || strcmp (splt->name, ".plt") != 0)
-    return TRUE;
+    return true;
 
   /* Quick check for an empty plt.  */
   if (splt->size == 0)
-    return TRUE;
+    return true;
 
   /* Map across all global symbols; see which ones happen to
      fall in the low 64k.  */
@@ -628,7 +629,7 @@ xstormy16_elf_relax_section (bfd *dynobj
 					    symtab_hdr->sh_info, 0,
 					    NULL, NULL, NULL);
 	  if (isymbuf == NULL)
-	    return FALSE;
+	    return false;
 	}
 
       for (idx = 0; idx < symtab_hdr->sh_info; ++idx)
@@ -657,7 +658,7 @@ xstormy16_elf_relax_section (bfd *dynobj
 	    {
 	      local_plt_offsets[idx] = -1;
 	      splt->size -= 4;
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -701,31 +702,32 @@ xstormy16_elf_relax_section (bfd *dynobj
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-xstormy16_elf_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				    struct bfd_link_info *info)
+static bool
+xstormy16_elf_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+				   struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *splt;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   if (dynobj == NULL)
-    return TRUE;
+    return true;
 
   splt = elf_hash_table (info)->splt;
   BFD_ASSERT (splt != NULL);
 
   splt->contents = bfd_zalloc (dynobj, splt->size);
   if (splt->contents == NULL)
-    return FALSE;
+    return false;
+  splt->alloced = 1;
 
-  return TRUE;
+  return true;
 }
 
 /* Relocate an XSTORMY16 ELF section.
@@ -758,7 +760,7 @@ xstormy16_elf_always_size_sections (bfd
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 xstormy16_elf_relocate_section (bfd *			output_bfd ATTRIBUTE_UNUSED,
 				struct bfd_link_info *	info,
 				bfd *			input_bfd,
@@ -812,7 +814,7 @@ xstormy16_elf_relocate_section (bfd *
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -822,7 +824,8 @@ xstormy16_elf_relocate_section (bfd *
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_XSTORMY16_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -922,7 +925,7 @@ xstormy16_elf_relocate_section (bfd *
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -948,12 +951,12 @@ xstormy16_elf_relocate_section (bfd *
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This must exist if dynobj is ever set.  */
 
-static bfd_boolean
+static bool
 xstormy16_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
 				       struct bfd_link_info *info)
 {
@@ -976,7 +979,7 @@ xstormy16_elf_finish_dynamic_sections (b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -1012,8 +1015,8 @@ xstormy16_elf_gc_mark_hook (asection *se
 #define elf_backend_relocate_section		xstormy16_elf_relocate_section
 #define elf_backend_gc_mark_hook		xstormy16_elf_gc_mark_hook
 #define elf_backend_check_relocs		xstormy16_elf_check_relocs
-#define elf_backend_always_size_sections \
-  xstormy16_elf_always_size_sections
+#define elf_backend_early_size_sections \
+  xstormy16_elf_early_size_sections
 #define elf_backend_omit_section_dynsym \
   _bfd_elf_omit_section_dynsym_all
 #define elf_backend_finish_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.20200303/bfd/elf32-xtensa.c ./bfd/elf32-xtensa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-xtensa.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf32-xtensa.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Xtensa-specific support for 32-bit ELF.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -30,29 +30,33 @@
 #include "elf/xtensa.h"
 #include "splay-tree.h"
 #include "xtensa-isa.h"
-#include "xtensa-config.h"
+#include "xtensa-dynconfig.h"
 
 /* All users of this file have bfd_octets_per_byte (abfd, sec) == 1.  */
 #define OCTETS_PER_BYTE(ABFD, SEC) 1
 
 #define XTENSA_NO_NOP_REMOVAL 0
 
+#ifndef XTHAL_ABI_UNDEFINED
+#define XTHAL_ABI_UNDEFINED -1
+#endif
+
 /* Local helper functions.  */
 
-static bfd_boolean add_extra_plt_sections (struct bfd_link_info *, int);
+static bool add_extra_plt_sections (struct bfd_link_info *, int);
 static char *vsprint_msg (const char *, const char *, int, ...) ATTRIBUTE_PRINTF(2,4);
 static bfd_reloc_status_type bfd_elf_xtensa_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_boolean do_fix_for_relocatable_link
+static bool do_fix_for_relocatable_link
   (Elf_Internal_Rela *, bfd *, asection *, bfd_byte *);
 static void do_fix_for_final_link
   (Elf_Internal_Rela *, bfd *, asection *, bfd_byte *, bfd_vma *);
 
 /* Local functions to handle Xtensa configurability.  */
 
-static bfd_boolean is_indirect_call_opcode (xtensa_opcode);
-static bfd_boolean is_direct_call_opcode (xtensa_opcode);
-static bfd_boolean is_windowed_call_opcode (xtensa_opcode);
+static bool is_indirect_call_opcode (xtensa_opcode);
+static bool is_direct_call_opcode (xtensa_opcode);
+static bool is_windowed_call_opcode (xtensa_opcode);
 static xtensa_opcode get_const16_opcode (void);
 static xtensa_opcode get_l32r_opcode (void);
 static bfd_vma l32r_offset (bfd_vma, bfd_vma);
@@ -60,21 +64,21 @@ static int get_relocation_opnd (xtensa_o
 static int get_relocation_slot (int);
 static xtensa_opcode get_relocation_opcode
   (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *);
-static bfd_boolean is_l32r_relocation
+static bool is_l32r_relocation
   (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *);
-static bfd_boolean is_alt_relocation (int);
-static bfd_boolean is_operand_relocation (int);
+static bool is_alt_relocation (int);
+static bool is_operand_relocation (int);
 static bfd_size_type insn_decode_len
   (bfd_byte *, bfd_size_type, bfd_size_type);
 static int insn_num_slots
   (bfd_byte *, bfd_size_type, bfd_size_type);
 static xtensa_opcode insn_decode_opcode
   (bfd_byte *, bfd_size_type, bfd_size_type, int);
-static bfd_boolean check_branch_target_aligned
+static bool check_branch_target_aligned
   (bfd_byte *, bfd_size_type, bfd_vma, bfd_vma);
-static bfd_boolean check_loop_aligned
+static bool check_loop_aligned
   (bfd_byte *, bfd_size_type, bfd_vma, bfd_vma);
-static bfd_boolean check_branch_target_aligned_address (bfd_vma, int);
+static bool check_branch_target_aligned_address (bfd_vma, int);
 static bfd_size_type get_asm_simplify_size
   (bfd_byte *, bfd_size_type, bfd_size_type);
 
@@ -85,15 +89,15 @@ static bfd_reloc_status_type elf_xtensa_
 static bfd_reloc_status_type contract_asm_expansion
   (bfd_byte *, bfd_vma, Elf_Internal_Rela *, char **);
 static xtensa_opcode swap_callx_for_call_opcode (xtensa_opcode);
-static xtensa_opcode get_expanded_call_opcode (bfd_byte *, int, bfd_boolean *);
+static xtensa_opcode get_expanded_call_opcode (bfd_byte *, int, bool *);
 
 /* Access to internal relocations, section contents and symbols.  */
 
 static Elf_Internal_Rela *retrieve_internal_relocs
-  (bfd *, asection *, bfd_boolean);
+  (bfd *, asection *, bool);
 static void pin_internal_relocs (asection *, Elf_Internal_Rela *);
 static void release_internal_relocs (asection *, Elf_Internal_Rela *);
-static bfd_byte *retrieve_contents (bfd *, asection *, bfd_boolean);
+static bfd_byte *retrieve_contents (bfd *, asection *, bool);
 static void pin_contents (asection *, bfd_byte *);
 static void release_contents (asection *, bfd_byte *);
 static Elf_Internal_Sym *retrieve_local_syms (bfd *);
@@ -106,12 +110,12 @@ static asection *get_elf_r_symndx_sectio
 static struct elf_link_hash_entry *get_elf_r_symndx_hash_entry
   (bfd *, unsigned long);
 static bfd_vma get_elf_r_symndx_offset (bfd *, unsigned long);
-static bfd_boolean is_reloc_sym_weak (bfd *, Elf_Internal_Rela *);
-static bfd_boolean pcrel_reloc_fits (xtensa_opcode, int, bfd_vma, bfd_vma);
-static bfd_boolean xtensa_is_property_section (asection *);
-static bfd_boolean xtensa_is_insntable_section (asection *);
-static bfd_boolean xtensa_is_littable_section (asection *);
-static bfd_boolean xtensa_is_proptable_section (asection *);
+static bool is_reloc_sym_weak (bfd *, Elf_Internal_Rela *);
+static bool pcrel_reloc_fits (xtensa_opcode, int, bfd_vma, bfd_vma);
+static bool xtensa_is_property_section (asection *);
+static bool xtensa_is_insntable_section (asection *);
+static bool xtensa_is_littable_section (asection *);
+static bool xtensa_is_proptable_section (asection *);
 static int internal_reloc_compare (const void *, const void *);
 static int internal_reloc_matches (const void *, const void *);
 static asection *xtensa_get_property_section (asection *, const char *);
@@ -121,7 +125,7 @@ static flagword xtensa_get_property_pred
 
 typedef void (*deps_callback_t)
   (asection *, bfd_vma, asection *, bfd_vma, void *);
-extern bfd_boolean xtensa_callback_required_dependence
+extern bool xtensa_callback_required_dependence
   (bfd *, asection *, struct bfd_link_info *, deps_callback_t, void *);
 
 
@@ -152,7 +156,7 @@ xtensa_isa xtensa_default_isa;
    symbols from other input files.  The per-section list of "fix"
    records needs to be checked when resolving relocations.  */
 
-static bfd_boolean relaxing_section = FALSE;
+static bool relaxing_section = false;
 
 /* When this is true, during final links, literals that cannot be
    coalesced and their relocations may be moved to other sections.  */
@@ -162,7 +166,11 @@ int elf32xtensa_no_literal_movement = 1;
 /* Place property records for a section into individual property section
    with xt.prop. prefix.  */
 
-bfd_boolean elf32xtensa_separate_props = FALSE;
+bool 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.  */
@@ -171,160 +179,174 @@ bfd_boolean elf32xtensa_separate_props =
 
 static reloc_howto_type elf_howto_table[] =
 {
-  HOWTO (R_XTENSA_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
+  HOWTO (R_XTENSA_NONE, 0, 0, 0, false, 0, complain_overflow_dont,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_NONE",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_XTENSA_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	 false, 0, 0, false),
+  HOWTO (R_XTENSA_32, 0, 4, 32, false, 0, complain_overflow_bitfield,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_32",
-	 TRUE, 0xffffffff, 0xffffffff, FALSE),
+	 true, 0xffffffff, 0xffffffff, false),
 
   /* Replace a 32-bit value with a value from the runtime linker (only
      used by linker-generated stub functions).  The r_addend value is
      special: 1 means to substitute a pointer to the runtime linker's
      dynamic resolver function; 2 means to substitute the link map for
      the shared object.  */
-  HOWTO (R_XTENSA_RTLD, 0, 2, 32, FALSE, 0, complain_overflow_dont,
-	 NULL, "R_XTENSA_RTLD", FALSE, 0, 0, FALSE),
+  HOWTO (R_XTENSA_RTLD, 0, 4, 32, false, 0, complain_overflow_dont,
+	 NULL, "R_XTENSA_RTLD", false, 0, 0, false),
 
-  HOWTO (R_XTENSA_GLOB_DAT, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+  HOWTO (R_XTENSA_GLOB_DAT, 0, 4, 32, false, 0, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "R_XTENSA_GLOB_DAT",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_XTENSA_JMP_SLOT, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_XTENSA_JMP_SLOT, 0, 4, 32, false, 0, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "R_XTENSA_JMP_SLOT",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_XTENSA_RELATIVE, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_XTENSA_RELATIVE, 0, 4, 32, false, 0, complain_overflow_bitfield,
 	 bfd_elf_generic_reloc, "R_XTENSA_RELATIVE",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_XTENSA_PLT, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_XTENSA_PLT, 0, 4, 32, false, 0, complain_overflow_bitfield,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_PLT",
-	 FALSE, 0, 0xffffffff, FALSE),
+	 false, 0, 0xffffffff, false),
 
   EMPTY_HOWTO (7),
 
   /* Old relocations for backward compatibility.  */
-  HOWTO (R_XTENSA_OP0, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_OP0", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_OP1, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_OP1", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_OP2, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_OP2", FALSE, 0, 0, TRUE),
+  HOWTO (R_XTENSA_OP0, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_OP0", false, 0, 0, true),
+  HOWTO (R_XTENSA_OP1, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_OP1", false, 0, 0, true),
+  HOWTO (R_XTENSA_OP2, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_OP2", false, 0, 0, true),
 
   /* Assembly auto-expansion.  */
-  HOWTO (R_XTENSA_ASM_EXPAND, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_ASM_EXPAND", FALSE, 0, 0, TRUE),
+  HOWTO (R_XTENSA_ASM_EXPAND, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_ASM_EXPAND", false, 0, 0, true),
   /* Relax assembly auto-expansion.  */
-  HOWTO (R_XTENSA_ASM_SIMPLIFY, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_ASM_SIMPLIFY", FALSE, 0, 0, TRUE),
+  HOWTO (R_XTENSA_ASM_SIMPLIFY, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_ASM_SIMPLIFY", false, 0, 0, true),
 
   EMPTY_HOWTO (13),
 
-  HOWTO (R_XTENSA_32_PCREL, 0, 2, 32, TRUE, 0, complain_overflow_bitfield,
+  HOWTO (R_XTENSA_32_PCREL, 0, 4, 32, true, 0, complain_overflow_bitfield,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_32_PCREL",
-	 FALSE, 0, 0xffffffff, TRUE),
+	 false, 0, 0xffffffff, true),
 
   /* GNU extension to record C++ vtable hierarchy.  */
-  HOWTO (R_XTENSA_GNU_VTINHERIT, 0, 2, 0, FALSE, 0, complain_overflow_dont,
+  HOWTO (R_XTENSA_GNU_VTINHERIT, 0, 4, 0, false, 0, complain_overflow_dont,
 	 NULL, "R_XTENSA_GNU_VTINHERIT",
-	 FALSE, 0, 0, FALSE),
+	 false, 0, 0, false),
   /* GNU extension to record C++ vtable member usage.  */
-  HOWTO (R_XTENSA_GNU_VTENTRY, 0, 2, 0, FALSE, 0, complain_overflow_dont,
+  HOWTO (R_XTENSA_GNU_VTENTRY, 0, 4, 0, false, 0, complain_overflow_dont,
 	 _bfd_elf_rel_vtable_reloc_fn, "R_XTENSA_GNU_VTENTRY",
-	 FALSE, 0, 0, FALSE),
+	 false, 0, 0, false),
 
   /* Relocations for supporting difference of symbols.  */
-  HOWTO (R_XTENSA_DIFF8, 0, 0, 8, FALSE, 0, complain_overflow_signed,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_DIFF8", FALSE, 0, 0xff, FALSE),
-  HOWTO (R_XTENSA_DIFF16, 0, 1, 16, FALSE, 0, complain_overflow_signed,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_DIFF16", FALSE, 0, 0xffff, FALSE),
-  HOWTO (R_XTENSA_DIFF32, 0, 2, 32, FALSE, 0, complain_overflow_signed,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_DIFF32", FALSE, 0, 0xffffffff, FALSE),
+  HOWTO (R_XTENSA_DIFF8, 0, 1, 8, false, 0, complain_overflow_signed,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_DIFF8", false, 0, 0xff, false),
+  HOWTO (R_XTENSA_DIFF16, 0, 2, 16, false, 0, complain_overflow_signed,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_DIFF16", false, 0, 0xffff, false),
+  HOWTO (R_XTENSA_DIFF32, 0, 4, 32, false, 0, complain_overflow_signed,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_DIFF32", false, 0, 0xffffffff, false),
 
   /* General immediate operand relocations.  */
-  HOWTO (R_XTENSA_SLOT0_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT0_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT1_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT1_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT2_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT2_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT3_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT3_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT4_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT4_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT5_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT5_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT6_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT6_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT7_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT7_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT8_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT8_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT9_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT9_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT10_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT10_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT11_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT11_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT12_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT12_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT13_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT13_OP", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT14_OP, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT14_OP", FALSE, 0, 0, TRUE),
+  HOWTO (R_XTENSA_SLOT0_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT0_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT1_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT1_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT2_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT2_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT3_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT3_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT4_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT4_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT5_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT5_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT6_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT6_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT7_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT7_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT8_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT8_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT9_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT9_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT10_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT10_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT11_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT11_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT12_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT12_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT13_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT13_OP", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT14_OP, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT14_OP", false, 0, 0, true),
 
   /* "Alternate" relocations.  The meaning of these is opcode-specific.  */
-  HOWTO (R_XTENSA_SLOT0_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT0_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT1_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT1_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT2_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT2_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT3_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT3_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT4_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT4_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT5_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT5_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT6_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT6_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT7_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT7_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT8_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT8_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT9_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT9_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT10_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT10_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT11_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT11_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT12_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT12_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT13_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT13_ALT", FALSE, 0, 0, TRUE),
-  HOWTO (R_XTENSA_SLOT14_ALT, 0, 0, 0, TRUE, 0, complain_overflow_dont,
-	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT14_ALT", FALSE, 0, 0, TRUE),
+  HOWTO (R_XTENSA_SLOT0_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT0_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT1_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT1_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT2_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT2_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT3_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT3_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT4_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT4_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT5_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT5_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT6_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT6_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT7_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT7_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT8_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT8_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT9_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT9_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT10_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT10_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT11_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT11_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT12_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT12_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT13_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT13_ALT", false, 0, 0, true),
+  HOWTO (R_XTENSA_SLOT14_ALT, 0, 0, 0, true, 0, complain_overflow_dont,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_SLOT14_ALT", false, 0, 0, true),
 
   /* TLS relocations.  */
-  HOWTO (R_XTENSA_TLSDESC_FN, 0, 2, 32, FALSE, 0, complain_overflow_dont,
+  HOWTO (R_XTENSA_TLSDESC_FN, 0, 4, 32, false, 0, complain_overflow_dont,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_TLSDESC_FN",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_XTENSA_TLSDESC_ARG, 0, 2, 32, FALSE, 0, complain_overflow_dont,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_XTENSA_TLSDESC_ARG, 0, 4, 32, false, 0, complain_overflow_dont,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_TLSDESC_ARG",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_XTENSA_TLS_DTPOFF, 0, 2, 32, FALSE, 0, complain_overflow_dont,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_XTENSA_TLS_DTPOFF, 0, 4, 32, false, 0, complain_overflow_dont,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_TLS_DTPOFF",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_XTENSA_TLS_TPOFF, 0, 2, 32, FALSE, 0, complain_overflow_dont,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_XTENSA_TLS_TPOFF, 0, 4, 32, false, 0, complain_overflow_dont,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_TLS_TPOFF",
-	 FALSE, 0, 0xffffffff, FALSE),
-  HOWTO (R_XTENSA_TLS_FUNC, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+	 false, 0, 0xffffffff, false),
+  HOWTO (R_XTENSA_TLS_FUNC, 0, 0, 0, false, 0, complain_overflow_dont,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_TLS_FUNC",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_XTENSA_TLS_ARG, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+	 false, 0, 0, false),
+  HOWTO (R_XTENSA_TLS_ARG, 0, 0, 0, false, 0, complain_overflow_dont,
 	 bfd_elf_xtensa_reloc, "R_XTENSA_TLS_ARG",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_XTENSA_TLS_CALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+	 false, 0, 0, false),
+  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),
+	 false, 0, 0, false),
+
+  HOWTO (R_XTENSA_PDIFF8, 0, 1, 8, false, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF8", false, 0, 0xff, false),
+  HOWTO (R_XTENSA_PDIFF16, 0, 2, 16, false, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF16", false, 0, 0xffff, false),
+  HOWTO (R_XTENSA_PDIFF32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_PDIFF32", false, 0, 0xffffffff, false),
+
+  HOWTO (R_XTENSA_NDIFF8, 0, 1, 8, false, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF8", false, 0, 0xff, false),
+  HOWTO (R_XTENSA_NDIFF16, 0, 2, 16, false, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF16", false, 0, 0xffff, false),
+  HOWTO (R_XTENSA_NDIFF32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	 bfd_elf_xtensa_reloc, "R_XTENSA_NDIFF32", false, 0, 0xffffffff, false),
 };
 
 #if DEBUG_GEN_RELOC
@@ -364,6 +386,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 ];
@@ -485,7 +531,7 @@ elf_xtensa_reloc_name_lookup (bfd *abfd
 /* Given an ELF "rela" relocation, find the corresponding howto and record
    it in the BFD internal arelent representation of the relocation.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_info_to_howto_rela (bfd *abfd,
 			       arelent *cache_ptr,
 			       Elf_Internal_Rela *dst)
@@ -498,10 +544,10 @@ elf_xtensa_info_to_howto_rela (bfd *abfd
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 
@@ -616,11 +662,10 @@ struct elf_xtensa_obj_tdata
    && elf_tdata (bfd) != NULL \
    && elf_object_id (bfd) == XTENSA_ELF_DATA)
 
-static bfd_boolean
+static bool
 elf_xtensa_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_xtensa_obj_tdata),
-				  XTENSA_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_xtensa_obj_tdata));
 }
 
 /* Xtensa ELF linker hash table.  */
@@ -647,8 +692,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 +732,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)
@@ -694,8 +740,7 @@ elf_xtensa_link_hash_table_create (bfd *
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
 				      elf_xtensa_link_hash_newfunc,
-				      sizeof (struct elf_xtensa_link_hash_entry),
-				      XTENSA_ELF_DATA))
+				      sizeof (struct elf_xtensa_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -704,10 +749,11 @@ elf_xtensa_link_hash_table_create (bfd *
   /* Create a hash entry for "_TLS_MODULE_BASE_" to speed up checking
      for it later.  */
   tlsbase = elf_link_hash_lookup (&ret->elf, "_TLS_MODULE_BASE_",
-				  TRUE, FALSE, FALSE);
+				  true, false, false);
   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;
 
@@ -741,7 +787,7 @@ elf_xtensa_copy_indirect_symbol (struct
   _bfd_elf_link_hash_copy_indirect (info, dir, ind);
 }
 
-static inline bfd_boolean
+static inline bool
 elf_xtensa_dynamic_symbol_p (struct elf_link_hash_entry *h,
 			     struct bfd_link_info *info)
 {
@@ -812,7 +858,7 @@ xtensa_read_table_entries (bfd *abfd,
 			   asection *section,
 			   property_table_entry **table_p,
 			   const char *sec_name,
-			   bfd_boolean output_addr)
+			   bool output_addr)
 {
   asection *table_section;
   bfd_size_type table_size = 0;
@@ -825,7 +871,8 @@ xtensa_read_table_entries (bfd *abfd,
   flagword predef_flags;
   bfd_size_type table_entry_size, section_limit;
 
-  if (!section
+  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour
+      || !section
       || !(section->flags & SEC_ALLOC)
       || (section->flags & SEC_DEBUGGING))
     {
@@ -849,7 +896,14 @@ xtensa_read_table_entries (bfd *abfd,
     table_entry_size -= 4;
 
   num_records = table_size / table_entry_size;
-  table_data = retrieve_contents (abfd, table_section, TRUE);
+
+  table_data = retrieve_contents (abfd, table_section, true);
+  if (table_data == NULL)
+    {
+      *table_p = NULL;
+      return 0;
+    }
+
   blocks = (property_table_entry *)
     bfd_malloc (num_records * sizeof (property_table_entry));
   block_count = 0;
@@ -859,7 +913,7 @@ xtensa_read_table_entries (bfd *abfd,
   else
     section_addr = section->vma;
 
-  internal_relocs = retrieve_internal_relocs (abfd, table_section, TRUE);
+  internal_relocs = retrieve_internal_relocs (abfd, table_section, true);
   if (internal_relocs && !table_section->reloc_done)
     {
       qsort (internal_relocs, table_section->reloc_count,
@@ -974,22 +1028,22 @@ elf_xtensa_find_property_entry (property
 }
 
 
-static bfd_boolean
+static bool
 elf_xtensa_in_literal_pool (property_table_entry *lit_table,
 			    int lit_table_size,
 			    bfd_vma addr)
 {
   if (elf_xtensa_find_property_entry (lit_table, lit_table_size, addr))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 
 /* Look through the relocs for a section during the first phase, and
    calculate needed space in the dynamic reloc sections.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_check_relocs (bfd *abfd,
 			 struct bfd_link_info *info,
 			 asection *sec,
@@ -1001,14 +1055,14 @@ 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)
-    return TRUE;
+  if (bfd_link_relocatable (info))
+    return true;
 
   BFD_ASSERT (is_xtensa_elf (abfd));
 
   htab = elf_xtensa_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (abfd);
@@ -1021,9 +1075,9 @@ elf_xtensa_check_relocs (bfd *abfd,
       struct elf_link_hash_entry *h = NULL;
       struct elf_xtensa_link_hash_entry *eh;
       int tls_type, old_tls_type;
-      bfd_boolean is_got = FALSE;
-      bfd_boolean is_plt = FALSE;
-      bfd_boolean is_tlsfunc = FALSE;
+      bool is_got = false;
+      bool is_plt = false;
+      bool is_tlsfunc = false;
 
       r_symndx = ELF32_R_SYM (rel->r_info);
       r_type = ELF32_R_TYPE (rel->r_info);
@@ -1033,7 +1087,7 @@ elf_xtensa_check_relocs (bfd *abfd,
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"),
 			      abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       if (r_symndx >= symtab_hdr->sh_info)
@@ -1048,32 +1102,33 @@ elf_xtensa_check_relocs (bfd *abfd,
       switch (r_type)
 	{
 	case R_XTENSA_TLSDESC_FN:
-	  if (bfd_link_pic (info))
+	  if (bfd_link_dll (info))
 	    {
 	      tls_type = GOT_TLS_GD;
-	      is_got = TRUE;
-	      is_tlsfunc = TRUE;
+	      is_got = true;
+	      is_tlsfunc = true;
 	    }
 	  else
 	    tls_type = GOT_TLS_IE;
 	  break;
 
 	case R_XTENSA_TLSDESC_ARG:
-	  if (bfd_link_pic (info))
+	  if (bfd_link_dll (info))
 	    {
 	      tls_type = GOT_TLS_GD;
-	      is_got = TRUE;
+	      is_got = true;
 	    }
 	  else
 	    {
 	      tls_type = GOT_TLS_IE;
-	      if (h && elf_xtensa_hash_entry (h) != htab->tlsbase)
-		is_got = TRUE;
+	      if (h && elf_xtensa_hash_entry (h) != htab->tlsbase
+		  && elf_xtensa_dynamic_symbol_p (h, info))
+		is_got = true;
 	    }
 	  break;
 
 	case R_XTENSA_TLS_DTPOFF:
-	  if (bfd_link_pic (info))
+	  if (bfd_link_dll (info))
 	    tls_type = GOT_TLS_GD;
 	  else
 	    tls_type = GOT_TLS_IE;
@@ -1083,32 +1138,32 @@ elf_xtensa_check_relocs (bfd *abfd,
 	  tls_type = GOT_TLS_IE;
 	  if (bfd_link_pic (info))
 	    info->flags |= DF_STATIC_TLS;
-	  if (bfd_link_pic (info) || h)
-	    is_got = TRUE;
+	  if (bfd_link_dll (info) || elf_xtensa_dynamic_symbol_p (h, info))
+	    is_got = true;
 	  break;
 
 	case R_XTENSA_32:
 	  tls_type = GOT_NORMAL;
-	  is_got = TRUE;
+	  is_got = true;
 	  break;
 
 	case R_XTENSA_PLT:
 	  tls_type = GOT_NORMAL;
-	  is_plt = TRUE;
+	  is_plt = true;
 	  break;
 
 	case R_XTENSA_GNU_VTINHERIT:
 	  /* This relocation describes the C++ object vtable hierarchy.
 	     Reconstruct it for later use during GC.  */
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  continue;
 
 	case R_XTENSA_GNU_VTENTRY:
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  continue;
 
 	default:
@@ -1136,7 +1191,7 @@ elf_xtensa_check_relocs (bfd *abfd,
 	      if (elf_hash_table (info)->dynamic_sections_created)
 		{
 		  if (! add_extra_plt_sections (info, htab->plt_reloc_count))
-		    return FALSE;
+		    return false;
 		}
 	    }
 	  else if (is_got)
@@ -1162,17 +1217,17 @@ elf_xtensa_check_relocs (bfd *abfd,
 
 	      mem = bfd_zalloc (abfd, size * sizeof (bfd_signed_vma));
 	      if (mem == NULL)
-		return FALSE;
+		return false;
 	      elf_local_got_refcounts (abfd) = (bfd_signed_vma *) mem;
 
 	      mem = bfd_zalloc (abfd, size);
 	      if (mem == NULL)
-		return FALSE;
+		return false;
 	      elf_xtensa_local_got_tls_type (abfd) = (char *) mem;
 
 	      mem = bfd_zalloc (abfd, size * sizeof (bfd_signed_vma));
 	      if (mem == NULL)
-		return FALSE;
+		return false;
 	      elf_xtensa_local_tlsfunc_refcounts (abfd)
 		= (bfd_signed_vma *) mem;
 	    }
@@ -1206,7 +1261,7 @@ elf_xtensa_check_relocs (bfd *abfd,
 		(_("%pB: `%s' accessed both as normal and thread local symbol"),
 		 abfd,
 		 h ? h->root.root.string : "<local>");
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -1219,7 +1274,7 @@ elf_xtensa_check_relocs (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1251,7 +1306,7 @@ elf_xtensa_make_sym_local (struct bfd_li
 static void
 elf_xtensa_hide_symbol (struct bfd_link_info *info,
 			struct elf_link_hash_entry *h,
-			bfd_boolean force_local)
+			bool force_local)
 {
   /* For a shared link, move the plt refcount to the got refcount to leave
      space for RELATIVE relocs.  */
@@ -1298,7 +1353,7 @@ elf_xtensa_gc_mark_hook (asection *sec,
 
 /* Create all the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
 {
   struct elf_xtensa_link_hash_table *htab;
@@ -1306,16 +1361,16 @@ elf_xtensa_create_dynamic_sections (bfd
 
   htab = elf_xtensa_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* First do all the standard stuff.  */
   if (! _bfd_elf_create_dynamic_sections (dynobj, info))
-    return FALSE;
+    return false;
 
   /* Create any extra PLT sections in case check_relocs has already
      been called on all the non-dynamic input files.  */
   if (! add_extra_plt_sections (info, htab->plt_reloc_count))
-    return FALSE;
+    return false;
 
   noalloc_flags = (SEC_HAS_CONTENTS | SEC_IN_MEMORY
 		   | SEC_LINKER_CREATED | SEC_READONLY);
@@ -1324,27 +1379,27 @@ elf_xtensa_create_dynamic_sections (bfd
   /* Mark the ".got.plt" section READONLY.  */
   if (htab->elf.sgotplt == NULL
       || !bfd_set_section_flags (htab->elf.sgotplt, flags))
-    return FALSE;
+    return false;
 
   /* Create ".got.loc" (literal tables for use by dynamic linker).  */
   htab->sgotloc = bfd_make_section_anyway_with_flags (dynobj, ".got.loc",
 						      flags);
   if (htab->sgotloc == NULL
       || !bfd_set_section_alignment (htab->sgotloc, 2))
-    return FALSE;
+    return false;
 
   /* Create ".xt.lit.plt" (literal table for ".got.plt*").  */
   htab->spltlittbl = bfd_make_section_anyway_with_flags (dynobj, ".xt.lit.plt",
 							 noalloc_flags);
   if (htab->spltlittbl == NULL
       || !bfd_set_section_alignment (htab->spltlittbl, 2))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 add_extra_plt_sections (struct bfd_link_info *info, int count)
 {
   bfd *dynobj = elf_hash_table (info)->dynobj;
@@ -1370,17 +1425,17 @@ add_extra_plt_sections (struct bfd_link_
       s = bfd_make_section_anyway_with_flags (dynobj, sname, flags | SEC_CODE);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
 
       sname = (char *) bfd_malloc (14);
       sprintf (sname, ".got.plt.%u", chunk);
       s = bfd_make_section_anyway_with_flags (dynobj, sname, flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, 2))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1390,7 +1445,7 @@ add_extra_plt_sections (struct bfd_link_
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  struct elf_link_hash_entry *h)
 {
@@ -1403,18 +1458,18 @@ elf_xtensa_adjust_dynamic_symbol (struct
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object.  The
      reference must go through the GOT, so there's no need for COPY relocs,
      .dynbss, etc.  */
 
-  return TRUE;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 elf_xtensa_allocate_dynrelocs (struct elf_link_hash_entry *h, void *arg)
 {
   struct bfd_link_info *info;
@@ -1422,12 +1477,12 @@ elf_xtensa_allocate_dynrelocs (struct el
   struct elf_xtensa_link_hash_entry *eh = elf_xtensa_hash_entry (h);
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) arg;
   htab = elf_xtensa_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* If we saw any use of an IE model for this symbol, we can then optimize
      away GOT entries for any TLSDESC_FN relocs.  */
@@ -1442,7 +1497,7 @@ elf_xtensa_allocate_dynrelocs (struct el
 
   if (! elf_xtensa_dynamic_symbol_p (h, info)
       && h->root.type == bfd_link_hash_undefweak)
-    return TRUE;
+    return true;
 
   if (h->plt.refcount > 0)
     htab->elf.srelplt->size += (h->plt.refcount * sizeof (Elf32_External_Rela));
@@ -1450,7 +1505,7 @@ elf_xtensa_allocate_dynrelocs (struct el
   if (h->got.refcount > 0)
     htab->elf.srelgot->size += (h->got.refcount * sizeof (Elf32_External_Rela));
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1499,14 +1554,14 @@ elf_xtensa_allocate_local_got_size (stru
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf_xtensa_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				  struct bfd_link_info *info)
+static bool
+elf_xtensa_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			       struct bfd_link_info *info)
 {
   struct elf_xtensa_link_hash_table *htab;
   bfd *dynobj, *abfd;
   asection *s, *srelplt, *splt, *sgotplt, *srelgot, *spltlittbl, *sgotloc;
-  bfd_boolean relplt, relgot;
+  bool relplt, relgot;
   int plt_entries, plt_chunks, chunk;
 
   plt_entries = 0;
@@ -1514,11 +1569,11 @@ elf_xtensa_size_dynamic_sections (bfd *o
 
   htab = elf_xtensa_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
   if (dynobj == NULL)
-    abort ();
+    return true;
   srelgot = htab->elf.srelgot;
   srelplt = htab->elf.srelplt;
 
@@ -1538,6 +1593,7 @@ elf_xtensa_size_dynamic_sections (bfd *o
 	    abort ();
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
 
       /* Allocate room for one word in ".got".  */
@@ -1618,8 +1674,8 @@ elf_xtensa_size_dynamic_sections (bfd *o
     }
 
   /* Allocate memory for dynamic sections.  */
-  relplt = FALSE;
-  relgot = FALSE;
+  relplt = false;
+  relgot = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -1631,22 +1687,22 @@ elf_xtensa_size_dynamic_sections (bfd *o
 	 of the dynobj section names depend upon the input files.  */
       name = bfd_section_name (s);
 
-      if (CONST_STRNEQ (name, ".rela"))
+      if (startswith (name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
 	      if (strcmp (name, ".rela.plt") == 0)
-		relplt = TRUE;
+		relplt = true;
 	      else if (strcmp (name, ".rela.got") == 0)
-		relgot = TRUE;
+		relgot = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
 	      s->reloc_count = 0;
 	    }
 	}
-      else if (! CONST_STRNEQ (name, ".plt.")
-	       && ! CONST_STRNEQ (name, ".got.plt.")
+      else if (! startswith (name, ".plt.")
+	       && ! startswith (name, ".got.plt.")
 	       && strcmp (name, ".got") != 0
 	       && strcmp (name, ".plt") != 0
 	       && strcmp (name, ".got.plt") != 0
@@ -1675,7 +1731,8 @@ elf_xtensa_size_dynamic_sections (bfd *o
 	  /* Allocate memory for the section contents.  */
 	  s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
 	  if (s->contents == NULL)
-	    return FALSE;
+	    return false;
+	  s->alloced = 1;
 	}
     }
 
@@ -1709,48 +1766,28 @@ 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;
+	return false;
     }
 #undef add_dynamic_entry
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-elf_xtensa_always_size_sections (bfd *output_bfd,
-				 struct bfd_link_info *info)
+static bool
+elf_xtensa_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   struct elf_xtensa_link_hash_table *htab;
   asection *tls_sec;
 
   htab = elf_xtensa_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   tls_sec = htab->elf.tls_sec;
 
@@ -1763,15 +1800,15 @@ elf_xtensa_always_size_sections (bfd *ou
       tlsbase->type = STT_TLS;
       if (!(_bfd_generic_link_add_one_symbol
 	    (info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL,
-	     tls_sec, 0, NULL, FALSE,
+	     tls_sec, 0, NULL, false,
 	     bed->collect, &bh)))
-	return FALSE;
+	return false;
       tlsbase->def_regular = 1;
       tlsbase->other = STV_HIDDEN;
-      (*bed->elf_backend_hide_symbol) (info, tlsbase, TRUE);
+      (*bed->elf_backend_hide_symbol) (info, tlsbase, true);
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -1819,7 +1856,7 @@ elf_xtensa_do_reloc (reloc_howto_type *h
 		     bfd_vma relocation,
 		     bfd_byte *contents,
 		     bfd_vma address,
-		     bfd_boolean is_weak_undef,
+		     bool is_weak_undef,
 		     char **error_message)
 {
   xtensa_format fmt;
@@ -1851,6 +1888,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:
@@ -1921,6 +1964,8 @@ elf_xtensa_do_reloc (reloc_howto_type *h
       return bfd_reloc_dangerous;
     }
 
+  if (input_size <= address)
+    return bfd_reloc_outofrange;
   /* Read the instruction into a buffer and decode the opcode.  */
   xtensa_insnbuf_from_chars (isa, ibuff, contents + address,
 			     input_size - address);
@@ -2063,7 +2108,7 @@ vsprint_msg (const char *origmsg, const
   static bfd_size_type alloc_size = 0;
   static char *message = NULL;
   bfd_size_type orig_len, len = 0;
-  bfd_boolean is_append;
+  bool is_append;
   va_list ap;
 
   va_start (ap, arglen);
@@ -2111,7 +2156,7 @@ bfd_elf_xtensa_reloc (bfd *abfd,
   bfd_vma output_base = 0;
   reloc_howto_type *howto = reloc_entry->howto;
   asection *reloc_target_output_section;
-  bfd_boolean is_weak_undef;
+  bool is_weak_undef;
 
   if (!xtensa_default_isa)
     xtensa_default_isa = xtensa_isa_init (0, 0);
@@ -2203,6 +2248,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 +2267,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 +2288,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);
@@ -2253,14 +2306,14 @@ elf_xtensa_create_plt_entry (struct bfd_
 }
 
 
-static bfd_boolean get_indirect_call_dest_reg (xtensa_opcode, unsigned *);
+static bool get_indirect_call_dest_reg (xtensa_opcode, unsigned *);
 
-static bfd_boolean
+static bool
 replace_tls_insn (Elf_Internal_Rela *rel,
 		  bfd *abfd,
 		  asection *input_section,
 		  bfd_byte *contents,
-		  bfd_boolean is_ld_model,
+		  bool is_ld_model,
 		  char **error_message)
 {
   static xtensa_insnbuf ibuff = NULL;
@@ -2287,7 +2340,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
   if (fmt == XTENSA_UNDEFINED)
     {
       *error_message = "cannot decode instruction format";
-      return FALSE;
+      return false;
     }
 
   BFD_ASSERT (xtensa_format_num_slots (isa, fmt) == 1);
@@ -2297,7 +2350,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
   if (old_op == XTENSA_UNDEFINED)
     {
       *error_message = "cannot decode instruction opcode";
-      return FALSE;
+      return false;
     }
 
   r_type = ELF32_R_TYPE (rel->r_info);
@@ -2310,7 +2363,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
 				       sbuff, &dest_reg) != 0)
 	{
 	  *error_message = "cannot extract L32R destination for TLS access";
-	  return FALSE;
+	  return false;
 	}
       break;
 
@@ -2320,7 +2373,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
 				       sbuff, &src_reg) != 0)
 	{
 	  *error_message = "cannot extract CALLXn operands for TLS access";
-	  return FALSE;
+	  return false;
 	}
       break;
 
@@ -2350,7 +2403,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
 					       sbuff, 1) != 0)
 		{
 		  *error_message = "cannot encode OR for TLS access";
-		  return FALSE;
+		  return false;
 		}
 	    }
 	  else
@@ -2358,7 +2411,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
 	      if (xtensa_opcode_encode (isa, fmt, 0, sbuff, new_op) != 0)
 		{
 		  *error_message = "cannot encode NOP for TLS access";
-		  return FALSE;
+		  return false;
 		}
 	    }
 	  break;
@@ -2372,7 +2425,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
 					   sbuff, dest_reg + 2) != 0)
 	    {
 	      *error_message = "cannot encode RUR.THREADPTR for TLS access";
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 	}
@@ -2389,13 +2442,13 @@ replace_tls_insn (Elf_Internal_Rela *rel
 					   sbuff, dest_reg) != 0)
 	    {
 	      *error_message = "cannot encode RUR.THREADPTR for TLS access";
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 
 	case R_XTENSA_TLS_ARG:
 	  /* Nothing to do.  Keep the original L32R instruction.  */
-	  return TRUE;
+	  return true;
 
 	case R_XTENSA_TLS_CALL:
 	  /* Add the CALLX's src register (holding the THREADPTR value)
@@ -2412,7 +2465,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
 					   sbuff, src_reg) != 0)
 	    {
 	      *error_message = "cannot encode ADD for TLS access";
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 	}
@@ -2422,7 +2475,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
   xtensa_insnbuf_to_chars (isa, ibuff, contents + rel->r_offset,
 			   input_size - rel->r_offset);
 
-  return TRUE;
+  return true;
 }
 
 
@@ -2438,7 +2491,7 @@ replace_tls_insn (Elf_Internal_Rela *rel
 /* Relocate an Xtensa ELF section.  This is invoked by the linker for
    both relocatable and final links.  */
 
-static bfd_boolean
+static int
 elf_xtensa_relocate_section (bfd *output_bfd,
 			     struct bfd_link_info *info,
 			     bfd *input_bfd,
@@ -2466,12 +2519,12 @@ elf_xtensa_relocate_section (bfd *output
   if (!is_xtensa_elf (input_bfd))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   htab = elf_xtensa_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
   sym_hashes = elf_sym_hashes (input_bfd);
@@ -2481,9 +2534,9 @@ elf_xtensa_relocate_section (bfd *output
     {
       ltblsize = xtensa_read_table_entries (input_bfd, input_section,
 					    &lit_table, XTENSA_LIT_SEC_NAME,
-					    TRUE);
+					    true);
       if (ltblsize < 0)
-	return FALSE;
+	return false;
     }
 
   input_size = bfd_get_section_limit (input_bfd, input_section);
@@ -2502,10 +2555,10 @@ elf_xtensa_relocate_section (bfd *output
       asection *sec;
       bfd_vma relocation;
       bfd_reloc_status_type r;
-      bfd_boolean is_weak_undef;
-      bfd_boolean unresolved_reloc;
-      bfd_boolean warned;
-      bfd_boolean dynamic_symbol;
+      bool is_weak_undef;
+      bool unresolved_reloc;
+      bool warned;
+      bool dynamic_symbol;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       if (r_type == (int) R_XTENSA_GNU_VTINHERIT
@@ -2515,7 +2568,7 @@ elf_xtensa_relocate_section (bfd *output
       if (r_type < 0 || r_type >= (int) R_XTENSA_max)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       howto = &elf_howto_table[r_type];
 
@@ -2524,9 +2577,9 @@ elf_xtensa_relocate_section (bfd *output
       h = NULL;
       sym = NULL;
       sec = NULL;
-      is_weak_undef = FALSE;
-      unresolved_reloc = FALSE;
-      warned = FALSE;
+      is_weak_undef = false;
+      unresolved_reloc = false;
+      warned = false;
 
       if (howto->partial_inplace && !bfd_link_relocatable (info))
 	{
@@ -2547,7 +2600,7 @@ elf_xtensa_relocate_section (bfd *output
 	}
       else
 	{
-	  bfd_boolean ignored;
+	  bool ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2557,14 +2610,15 @@ elf_xtensa_relocate_section (bfd *output
 	  if (relocation == 0
 	      && !unresolved_reloc
 	      && h->root.type == bfd_link_hash_undefweak)
-	    is_weak_undef = TRUE;
+	    is_weak_undef = true;
 
 	  sym_type = h->type;
 	}
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_XTENSA_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -2584,7 +2638,7 @@ elf_xtensa_relocate_section (bfd *output
 	      /* Check if this references a section in another input file.  */
 	      if (!do_fix_for_relocatable_link (rel, input_bfd, input_section,
 						contents))
-		return FALSE;
+		return false;
 	    }
 
 	  dest_addr = sym_sec->output_section->vma + sym_sec->output_offset
@@ -2630,7 +2684,7 @@ elf_xtensa_relocate_section (bfd *output
 	    {
 	      r = elf_xtensa_do_reloc (howto, input_bfd, input_section,
 				       rel->r_addend, contents,
-				       rel->r_offset, FALSE,
+				       rel->r_offset, false,
 				       &error_message);
 	      rel->r_addend = 0;
 	    }
@@ -2648,7 +2702,7 @@ elf_xtensa_relocate_section (bfd *output
 		{
 		  r = elf_xtensa_do_reloc (howto, input_bfd, input_section,
 					   dest_addr, contents,
-					   rel->r_offset, FALSE,
+					   rel->r_offset, false,
 					   &error_message);
 		}
 	    }
@@ -2681,7 +2735,7 @@ elf_xtensa_relocate_section (bfd *output
 	     input_bfd, input_section, (uint64_t) rel->r_offset,
 	     (uint64_t) input_size);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       if (h != NULL)
@@ -2788,7 +2842,7 @@ elf_xtensa_relocate_section (bfd *output
 			    elf_xtensa_create_plt_entry (info, output_bfd,
 							 srel->reloc_count);
 			}
-		      unresolved_reloc = FALSE;
+		      unresolved_reloc = false;
 		    }
 		  else if (!is_weak_undef)
 		    {
@@ -2819,7 +2873,7 @@ elf_xtensa_relocate_section (bfd *output
 
 	case R_XTENSA_TLS_TPOFF:
 	  /* Switch to LE model for local symbols in an executable.  */
-	  if (! bfd_link_pic (info) && ! dynamic_symbol)
+	  if (! bfd_link_dll (info) && ! dynamic_symbol)
 	    {
 	      relocation = tpoff (info, relocation);
 	      break;
@@ -2831,12 +2885,12 @@ elf_xtensa_relocate_section (bfd *output
 	  {
 	    if (r_type == R_XTENSA_TLSDESC_FN)
 	      {
-		if (! bfd_link_pic (info) || (tls_type & GOT_TLS_IE) != 0)
+		if (! bfd_link_dll (info) || (tls_type & GOT_TLS_IE) != 0)
 		  r_type = R_XTENSA_NONE;
 	      }
 	    else if (r_type == R_XTENSA_TLSDESC_ARG)
 	      {
-		if (bfd_link_pic (info))
+		if (bfd_link_dll (info))
 		  {
 		    if ((tls_type & GOT_TLS_IE) != 0)
 		      r_type = R_XTENSA_TLS_TPOFF;
@@ -2897,7 +2951,7 @@ elf_xtensa_relocate_section (bfd *output
 
 		outrel.r_info = ELF32_R_INFO (indx, r_type);
 		relocation = 0;
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 
 		BFD_ASSERT (srel);
 		loc = (srel->contents
@@ -2910,7 +2964,7 @@ elf_xtensa_relocate_section (bfd *output
 	  break;
 
 	case R_XTENSA_TLS_DTPOFF:
-	  if (! bfd_link_pic (info))
+	  if (! bfd_link_dll (info))
 	    /* Switch from LD model to LE model.  */
 	    relocation = tpoff (info, relocation);
 	  else
@@ -2923,7 +2977,7 @@ elf_xtensa_relocate_section (bfd *output
 	  /* Check if optimizing to IE or LE model.  */
 	  if ((tls_type & GOT_TLS_IE) != 0)
 	    {
-	      bfd_boolean is_ld_model =
+	      bool is_ld_model =
 		(h && elf_xtensa_hash_entry (h) == htab->tlsbase);
 	      if (! replace_tls_insn (rel, input_bfd, input_section, contents,
 				      is_ld_model, &error_message))
@@ -2973,7 +3027,7 @@ elf_xtensa_relocate_section (bfd *output
 	     (uint64_t) rel->r_offset,
 	     howto->name,
 	     name);
-	  return FALSE;
+	  return false;
 	}
 
       /* TLS optimizations may have changed r_type; update "howto".  */
@@ -3004,19 +3058,17 @@ elf_xtensa_relocate_section (bfd *output
 	}
     }
 
-  if (lit_table)
-    free (lit_table);
-
-  input_section->reloc_done = TRUE;
+  free (lit_table);
+  input_section->reloc_done = true;
 
-  return TRUE;
+  return true;
 }
 
 
 /* Finish up dynamic symbol handling.  There's not much to do here since
    the PLT and GOT entries are all set up by relocate_section.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_finish_dynamic_symbol (bfd *output_bfd ATTRIBUTE_UNUSED,
 				  struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  struct elf_link_hash_entry *h,
@@ -3040,7 +3092,7 @@ elf_xtensa_finish_dynamic_symbol (bfd *o
       || h == elf_hash_table (info)->hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 
@@ -3064,6 +3116,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 +3141,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;
     }
@@ -3107,15 +3161,15 @@ elf_xtensa_combine_prop_entries (bfd *ou
 
   for (n = 0; n < num; n++)
     {
-      bfd_boolean remove_entry = FALSE;
+      bool remove_entry = false;
 
       if (table[n].size == 0)
-	remove_entry = TRUE;
+	remove_entry = true;
       else if (n > 0
 	       && (table[n-1].address + table[n-1].size == table[n].address))
 	{
 	  table[n-1].size += table[n].size;
-	  remove_entry = TRUE;
+	  remove_entry = true;
 	}
 
       if (remove_entry)
@@ -3159,7 +3213,7 @@ elf_xtensa_combine_prop_entries (bfd *ou
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_finish_dynamic_sections (bfd *output_bfd,
 				    struct bfd_link_info *info)
 {
@@ -3170,11 +3224,11 @@ elf_xtensa_finish_dynamic_sections (bfd
   int num_xtlit_entries = 0;
 
   if (! elf_hash_table (info)->dynamic_sections_created)
-    return TRUE;
+    return true;
 
   htab = elf_xtensa_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
@@ -3278,7 +3332,7 @@ elf_xtensa_finish_dynamic_sections (bfd
 				      spltlittbl->contents,
 				      spltlittbl->output_offset,
 				      spltlittbl->size))
-	return FALSE;
+	return false;
       /* Clear SEC_HAS_CONTENTS so the contents won't be output again.  */
       spltlittbl->flags &= ~SEC_HAS_CONTENTS;
     }
@@ -3301,7 +3355,7 @@ elf_xtensa_finish_dynamic_sections (bfd
       num_xtlit_entries =
 	elf_xtensa_combine_prop_entries (output_bfd, sxtlit, sgotloc);
       if (num_xtlit_entries < 0)
-	return FALSE;
+	return false;
     }
 
   dyncon = (Elf32_External_Dyn *) sdyn->contents;
@@ -3344,7 +3398,7 @@ elf_xtensa_finish_dynamic_sections (bfd
       bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon);
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -3353,7 +3407,7 @@ elf_xtensa_finish_dynamic_sections (bfd
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -3362,12 +3416,12 @@ elf_xtensa_merge_private_bfd_data (bfd *
 
   /* Check if we have the same endianness.  */
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   /* 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;
+    return false;
 
   out_flag = elf_elfheader (obfd)->e_flags;
   in_flag = elf_elfheader (ibfd)->e_flags;
@@ -3381,12 +3435,12 @@ elf_xtensa_merge_private_bfd_data (bfd *
 	(_("%pB: incompatible machine type; output is 0x%x; input is 0x%x"),
 	 ibfd, out_mach, in_mach);
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   if (! elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flag;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -3394,7 +3448,7 @@ elf_xtensa_merge_private_bfd_data (bfd *
 	return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
 				  bfd_get_mach (ibfd));
 
-      return TRUE;
+      return true;
     }
 
   if ((out_flag & EF_XTENSA_XT_INSN) != (in_flag & EF_XTENSA_XT_INSN))
@@ -3403,24 +3457,24 @@ elf_xtensa_merge_private_bfd_data (bfd *
   if ((out_flag & EF_XTENSA_XT_LIT) != (in_flag & EF_XTENSA_XT_LIT))
     elf_elfheader (obfd)->e_flags &= (~ EF_XTENSA_XT_LIT);
 
-  return TRUE;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 elf_xtensa_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags |= flags;
-  elf_flags_init (abfd) = TRUE;
+  elf_flags_init (abfd) = true;
 
-  return TRUE;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 elf_xtensa_print_private_bfd_data (bfd *abfd, void *farg)
 {
   FILE *f = (FILE *) farg;
@@ -3444,7 +3498,7 @@ elf_xtensa_print_private_bfd_data (bfd *
 
 /* Set the right machine number for an Xtensa ELF file.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_object_p (bfd *abfd)
 {
   int mach;
@@ -3456,11 +3510,11 @@ elf_xtensa_object_p (bfd *abfd)
       mach = bfd_mach_xtensa;
       break;
     default:
-      return FALSE;
+      return false;
     }
 
   (void) bfd_default_set_arch_mach (abfd, bfd_arch_xtensa, mach);
-  return TRUE;
+  return true;
 }
 
 
@@ -3468,7 +3522,7 @@ elf_xtensa_object_p (bfd *abfd)
    file.  This gets the Xtensa architecture right based on the machine
    number.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_final_write_processing (bfd *abfd)
 {
   int mach;
@@ -3506,7 +3560,7 @@ elf_xtensa_reloc_type_class (const struc
 }
 
 
-static bfd_boolean
+static bool
 elf_xtensa_discard_info_for_section (bfd *abfd,
 				     struct elf_reloc_cookie *cookie,
 				     struct bfd_link_info *info,
@@ -3519,7 +3573,7 @@ elf_xtensa_discard_info_for_section (bfd
 
   if (sec->output_section
       && bfd_is_abs_section (sec->output_section))
-    return FALSE;
+    return false;
 
   if (xtensa_is_proptable_section (sec))
     entry_size = 12;
@@ -3527,17 +3581,17 @@ elf_xtensa_discard_info_for_section (bfd
     entry_size = 8;
 
   if (sec->size == 0 || sec->size % entry_size != 0)
-    return FALSE;
+    return false;
 
   contents = retrieve_contents (abfd, sec, info->keep_memory);
   if (!contents)
-    return FALSE;
+    return false;
 
   cookie->rels = retrieve_internal_relocs (abfd, sec, info->keep_memory);
   if (!cookie->rels)
     {
       release_contents (sec, contents);
-      return FALSE;
+      return false;
     }
 
   /* Sort the relocations.  They should already be in order when
@@ -3636,20 +3690,20 @@ elf_xtensa_discard_info_for_section (bfd
 }
 
 
-static bfd_boolean
+static bool
 elf_xtensa_discard_info (bfd *abfd,
 			 struct elf_reloc_cookie *cookie,
 			 struct bfd_link_info *info)
 {
   asection *sec;
-  bfd_boolean changed = FALSE;
+  bool changed = false;
 
   for (sec = abfd->sections; sec != NULL; sec = sec->next)
     {
       if (xtensa_is_property_section (sec))
 	{
 	  if (elf_xtensa_discard_info_for_section (abfd, cookie, info, sec))
-	    changed = TRUE;
+	    changed = true;
 	}
     }
 
@@ -3657,7 +3711,7 @@ elf_xtensa_discard_info (bfd *abfd,
 }
 
 
-static bfd_boolean
+static bool
 elf_xtensa_ignore_discarded_relocs (asection *sec)
 {
   return xtensa_is_property_section (sec);
@@ -3679,14 +3733,20 @@ elf_xtensa_action_discarded (asection *s
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf_xtensa_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
   unsigned int size;
 
+  if (elf_tdata (abfd) == NULL
+      || elf_tdata (abfd)->core == NULL)
+    return false;
+
   /* The size for Xtensa is variable, so don't try to recognize the format
      based on the size.  Just assume this is GNU/Linux.  */
+  if (note == NULL || note->descsz < 28)
+    return false;
 
   /* pr_cursig */
   elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
@@ -3703,14 +3763,13 @@ elf_xtensa_grok_prstatus (bfd *abfd, Elf
 					  size, note->descpos + offset);
 }
 
-
-static bfd_boolean
+static bool
 elf_xtensa_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 128:		/* GNU/Linux elf_prpsinfo */
 	elf_tdata (abfd)->core->program
@@ -3731,7 +3790,7 @@ elf_xtensa_grok_psinfo (bfd *abfd, Elf_I
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -3763,7 +3822,7 @@ init_call_opcodes (void)
 }
 
 
-static bfd_boolean
+static bool
 is_indirect_call_opcode (xtensa_opcode opcode)
 {
   init_call_opcodes ();
@@ -3774,7 +3833,7 @@ is_indirect_call_opcode (xtensa_opcode o
 }
 
 
-static bfd_boolean
+static bool
 is_direct_call_opcode (xtensa_opcode opcode)
 {
   init_call_opcodes ();
@@ -3785,7 +3844,7 @@ is_direct_call_opcode (xtensa_opcode opc
 }
 
 
-static bfd_boolean
+static bool
 is_windowed_call_opcode (xtensa_opcode opcode)
 {
   init_call_opcodes ();
@@ -3798,7 +3857,7 @@ is_windowed_call_opcode (xtensa_opcode o
 }
 
 
-static bfd_boolean
+static bool
 get_indirect_call_dest_reg (xtensa_opcode opcode, unsigned *pdst)
 {
   unsigned dst = (unsigned) -1;
@@ -3814,22 +3873,22 @@ get_indirect_call_dest_reg (xtensa_opcod
     dst = 12;
 
   if (dst == (unsigned) -1)
-    return FALSE;
+    return false;
 
   *pdst = dst;
-  return TRUE;
+  return true;
 }
 
 
 static xtensa_opcode
 get_const16_opcode (void)
 {
-  static bfd_boolean done_lookup = FALSE;
+  static bool done_lookup = false;
   static xtensa_opcode const16_opcode = XTENSA_UNDEFINED;
   if (!done_lookup)
     {
       const16_opcode = xtensa_opcode_lookup (xtensa_default_isa, "const16");
-      done_lookup = TRUE;
+      done_lookup = true;
     }
   return const16_opcode;
 }
@@ -3839,12 +3898,12 @@ static xtensa_opcode
 get_l32r_opcode (void)
 {
   static xtensa_opcode l32r_opcode = XTENSA_UNDEFINED;
-  static bfd_boolean done_lookup = FALSE;
+  static bool done_lookup = false;
 
   if (!done_lookup)
     {
       l32r_opcode = xtensa_opcode_lookup (xtensa_default_isa, "l32r");
-      done_lookup = TRUE;
+      done_lookup = true;
     }
   return l32r_opcode;
 }
@@ -3867,11 +3926,11 @@ static xtensa_opcode
 get_rsr_lend_opcode (void)
 {
   static xtensa_opcode rsr_lend_opcode = XTENSA_UNDEFINED;
-  static bfd_boolean done_lookup = FALSE;
+  static bool done_lookup = false;
   if (!done_lookup)
     {
       rsr_lend_opcode = xtensa_opcode_lookup (xtensa_default_isa, "rsr.lend");
-      done_lookup = TRUE;
+      done_lookup = true;
     }
   return rsr_lend_opcode;
 }
@@ -3880,11 +3939,11 @@ static xtensa_opcode
 get_wsr_lbeg_opcode (void)
 {
   static xtensa_opcode wsr_lbeg_opcode = XTENSA_UNDEFINED;
-  static bfd_boolean done_lookup = FALSE;
+  static bool done_lookup = false;
   if (!done_lookup)
     {
       wsr_lbeg_opcode = xtensa_opcode_lookup (xtensa_default_isa, "wsr.lbeg");
-      done_lookup = TRUE;
+      done_lookup = true;
     }
   return wsr_lbeg_opcode;
 }
@@ -3993,7 +4052,7 @@ get_relocation_opcode (bfd *abfd,
 }
 
 
-bfd_boolean
+bool
 is_l32r_relocation (bfd *abfd,
 		    asection *sec,
 		    bfd_byte *contents,
@@ -4001,7 +4060,7 @@ is_l32r_relocation (bfd *abfd,
 {
   xtensa_opcode opcode;
   if (!is_operand_relocation (ELF32_R_TYPE (irel->r_info)))
-    return FALSE;
+    return false;
   opcode = get_relocation_opcode (abfd, sec, contents, irel);
   return (opcode == get_l32r_opcode ());
 }
@@ -4030,7 +4089,7 @@ get_asm_simplify_size (bfd_byte *content
 }
 
 
-bfd_boolean
+bool
 is_alt_relocation (int r_type)
 {
   return (r_type >= R_XTENSA_SLOT0_ALT
@@ -4038,7 +4097,7 @@ is_alt_relocation (int r_type)
 }
 
 
-bfd_boolean
+bool
 is_operand_relocation (int r_type)
 {
   switch (r_type)
@@ -4046,17 +4105,17 @@ is_operand_relocation (int r_type)
     case R_XTENSA_OP0:
     case R_XTENSA_OP1:
     case R_XTENSA_OP2:
-      return TRUE;
+      return true;
 
     default:
       if (r_type >= R_XTENSA_SLOT0_OP && r_type <= R_XTENSA_SLOT14_OP)
-	return TRUE;
+	return true;
       if (r_type >= R_XTENSA_SLOT0_ALT && r_type <= R_XTENSA_SLOT14_ALT)
-	return TRUE;
+	return true;
       break;
     }
 
-  return FALSE;
+  return false;
 }
 
 
@@ -4153,7 +4212,7 @@ insn_decode_opcode (bfd_byte *contents,
 /* The offset is the offset in the contents.
    The address is the address of that offset.  */
 
-static bfd_boolean
+static bool
 check_branch_target_aligned (bfd_byte *contents,
 			     bfd_size_type content_length,
 			     bfd_vma offset,
@@ -4161,12 +4220,12 @@ check_branch_target_aligned (bfd_byte *c
 {
   bfd_size_type insn_len = insn_decode_len (contents, content_length, offset);
   if (insn_len == 0)
-    return FALSE;
+    return false;
   return check_branch_target_aligned_address (address, insn_len);
 }
 
 
-static bfd_boolean
+static bool
 check_loop_aligned (bfd_byte *contents,
 		    bfd_size_type content_length,
 		    bfd_vma offset,
@@ -4179,16 +4238,16 @@ check_loop_aligned (bfd_byte *contents,
   if (opcode == XTENSA_UNDEFINED
       || xtensa_opcode_is_loop (xtensa_default_isa, opcode) != 1)
     {
-      BFD_ASSERT (FALSE);
-      return FALSE;
+      BFD_ASSERT (false);
+      return false;
     }
 
   loop_len = insn_decode_len (contents, content_length, offset);
   insn_len = insn_decode_len (contents, content_length, offset + loop_len);
   if (loop_len == 0 || insn_len == 0)
     {
-      BFD_ASSERT (FALSE);
-      return FALSE;
+      BFD_ASSERT (false);
+      return false;
     }
 
   /* If this is relaxed loop, analyze first instruction of the actual loop
@@ -4209,7 +4268,7 @@ check_loop_aligned (bfd_byte *contents,
 }
 
 
-static bfd_boolean
+static bool
 check_branch_target_aligned_address (bfd_vma addr, int len)
 {
   if (len == 8)
@@ -4286,7 +4345,7 @@ struct string_pair
   const char *narrow;
 };
 
-struct string_pair narrowable[] =
+const struct string_pair narrowable[] =
 {
   { "add", "add.n" },
   { "addi", "addi.n" },
@@ -4299,7 +4358,7 @@ struct string_pair narrowable[] =
   { "or", "mov.n" } /* special case only when op1 == op2 */
 };
 
-struct string_pair widenable[] =
+const struct string_pair widenable[] =
 {
   { "add", "add.n" },
   { "addi", "addi.n" },
@@ -4341,7 +4400,7 @@ can_narrow_instruction (xtensa_insnbuf s
 
   for (opi = 0; opi < (sizeof (narrowable)/sizeof (struct string_pair)); opi++)
     {
-      bfd_boolean is_or = (strcmp ("or", narrowable[opi].wide) == 0);
+      bool is_or = (strcmp ("or", narrowable[opi].wide) == 0);
 
       if (opcode == xtensa_opcode_lookup (isa, narrowable[opi].wide))
 	{
@@ -4424,7 +4483,7 @@ can_narrow_instruction (xtensa_insnbuf s
    the action in-place directly into the contents and return TRUE.  Otherwise,
    the return value is FALSE and the contents are not modified.  */
 
-static bfd_boolean
+static bool
 narrow_instruction (bfd_byte *contents,
 		    bfd_size_type content_length,
 		    bfd_size_type offset)
@@ -4447,7 +4506,7 @@ narrow_instruction (bfd_byte *contents,
   BFD_ASSERT (offset < content_length);
 
   if (content_length < 2)
-    return FALSE;
+    return false;
 
   /* We will hand-code a few of these for a little while.
      These have all been specified in the assembler aleady.  */
@@ -4455,27 +4514,27 @@ narrow_instruction (bfd_byte *contents,
 			     content_length - offset);
   fmt = xtensa_format_decode (isa, insnbuf);
   if (xtensa_format_num_slots (isa, fmt) != 1)
-    return FALSE;
+    return false;
 
   if (xtensa_format_get_slot (isa, fmt, 0, insnbuf, slotbuf) != 0)
-    return FALSE;
+    return false;
 
   opcode = xtensa_opcode_decode (isa, fmt, 0, slotbuf);
   if (opcode == XTENSA_UNDEFINED)
-    return FALSE;
+    return false;
   insn_len = xtensa_format_length (isa, fmt);
   if (insn_len > content_length)
-    return FALSE;
+    return false;
 
   o_insnbuf = can_narrow_instruction (slotbuf, fmt, opcode);
   if (o_insnbuf)
     {
       xtensa_insnbuf_to_chars (isa, o_insnbuf, contents + offset,
 			       content_length - offset);
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 
@@ -4505,9 +4564,9 @@ can_widen_instruction (xtensa_insnbuf sl
 
   for (opi = 0; opi < (sizeof (widenable)/sizeof (struct string_pair)); opi++)
     {
-      bfd_boolean is_or = (strcmp ("or", widenable[opi].wide) == 0);
-      bfd_boolean is_branch = (strcmp ("beqz", widenable[opi].wide) == 0
-			       || strcmp ("bnez", widenable[opi].wide) == 0);
+      bool is_or = (strcmp ("or", widenable[opi].wide) == 0);
+      bool is_branch = (strcmp ("beqz", widenable[opi].wide) == 0
+			|| strcmp ("bnez", widenable[opi].wide) == 0);
 
       if (opcode == xtensa_opcode_lookup (isa, widenable[opi].narrow))
 	{
@@ -4593,7 +4652,7 @@ can_widen_instruction (xtensa_insnbuf sl
    the action in-place directly into the contents and return TRUE.  Otherwise,
    the return value is FALSE and the contents are not modified.  */
 
-static bfd_boolean
+static bool
 widen_instruction (bfd_byte *contents,
 		   bfd_size_type content_length,
 		   bfd_size_type offset)
@@ -4616,7 +4675,7 @@ widen_instruction (bfd_byte *contents,
   BFD_ASSERT (offset < content_length);
 
   if (content_length < 2)
-    return FALSE;
+    return false;
 
   /* We will hand-code a few of these for a little while.
      These have all been specified in the assembler aleady.  */
@@ -4624,26 +4683,26 @@ widen_instruction (bfd_byte *contents,
 			     content_length - offset);
   fmt = xtensa_format_decode (isa, insnbuf);
   if (xtensa_format_num_slots (isa, fmt) != 1)
-    return FALSE;
+    return false;
 
   if (xtensa_format_get_slot (isa, fmt, 0, insnbuf, slotbuf) != 0)
-    return FALSE;
+    return false;
 
   opcode = xtensa_opcode_decode (isa, fmt, 0, slotbuf);
   if (opcode == XTENSA_UNDEFINED)
-    return FALSE;
+    return false;
   insn_len = xtensa_format_length (isa, fmt);
   if (insn_len > content_length)
-    return FALSE;
+    return false;
 
   o_insnbuf = can_widen_instruction (slotbuf, fmt, opcode);
   if (o_insnbuf)
     {
       xtensa_insnbuf_to_chars (isa, o_insnbuf, contents + offset,
 			       content_length - offset);
-      return TRUE;
+      return true;
     }
-  return FALSE;
+  return false;
 }
 
 
@@ -4757,7 +4816,7 @@ swap_callx_for_call_opcode (xtensa_opcod
 #define CALLN_SOURCE_OPERAND 0
 
 static xtensa_opcode
-get_expanded_call_opcode (bfd_byte *buf, int bufsize, bfd_boolean *p_uses_l32r)
+get_expanded_call_opcode (bfd_byte *buf, int bufsize, bool *p_uses_l32r)
 {
   static xtensa_insnbuf insnbuf = NULL;
   static xtensa_insnbuf slotbuf = NULL;
@@ -4786,7 +4845,7 @@ get_expanded_call_opcode (bfd_byte *buf,
   if (opcode == get_l32r_opcode ())
     {
       if (p_uses_l32r)
-	*p_uses_l32r = TRUE;
+	*p_uses_l32r = true;
       if (xtensa_operand_get_field (isa, opcode, L32R_TARGET_REG_OPERAND,
 				    fmt, 0, slotbuf, &regno)
 	  || xtensa_operand_decode (isa, opcode, L32R_TARGET_REG_OPERAND,
@@ -4796,7 +4855,7 @@ get_expanded_call_opcode (bfd_byte *buf,
   else if (opcode == get_const16_opcode ())
     {
       if (p_uses_l32r)
-	*p_uses_l32r = FALSE;
+	*p_uses_l32r = false;
       if (xtensa_operand_get_field (isa, opcode, CONST16_TARGET_REG_OPERAND,
 				    fmt, 0, slotbuf, &regno)
 	  || xtensa_operand_decode (isa, opcode, CONST16_TARGET_REG_OPERAND,
@@ -4885,7 +4944,7 @@ struct r_reloc_struct
    struct to zero.  The r_reloc_is_const function should be used to
    detect this case.  */
 
-static bfd_boolean
+static bool
 r_reloc_is_const (const r_reloc *r_rel)
 {
   return (r_rel->abfd == NULL);
@@ -4921,19 +4980,19 @@ r_reloc_get_section (const r_reloc *r_re
 }
 
 
-static bfd_boolean
+static bool
 r_reloc_is_defined (const r_reloc *r_rel)
 {
   asection *sec;
   if (r_rel == NULL)
-    return FALSE;
+    return false;
 
   sec = r_reloc_get_section (r_rel);
   if (sec == bfd_abs_section_ptr
       || sec == bfd_com_section_ptr
       || sec == bfd_und_section_ptr)
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 
@@ -4984,12 +5043,9 @@ print_r_reloc (FILE *fp, const r_reloc *
   else
     fprintf (fp, " ?? + ");
 
-  fprintf_vma (fp, r_rel->target_offset);
+  fprintf (fp, "%" PRIx64, (uint64_t) r_rel->target_offset);
   if (r_rel->virtual_offset)
-    {
-      fprintf (fp, " + ");
-      fprintf_vma (fp, r_rel->virtual_offset);
-    }
+    fprintf (fp, " + %" PRIx64, (uint64_t) r_rel->virtual_offset);
 
   fprintf (fp, ")");
 }
@@ -5022,8 +5078,8 @@ struct source_reloc_struct
   r_reloc r_rel;
   xtensa_opcode opcode;
   int opnd;
-  bfd_boolean is_null;
-  bfd_boolean is_abs_literal;
+  bool is_null;
+  bool is_abs_literal;
 };
 
 
@@ -5033,13 +5089,13 @@ init_source_reloc (source_reloc *reloc,
 		   const r_reloc *r_rel,
 		   xtensa_opcode opcode,
 		   int opnd,
-		   bfd_boolean is_abs_literal)
+		   bool is_abs_literal)
 {
   reloc->source_sec = source_sec;
   reloc->r_rel = *r_rel;
   reloc->opcode = opcode;
   reloc->opnd = opnd;
-  reloc->is_null = FALSE;
+  reloc->is_null = false;
   reloc->is_abs_literal = is_abs_literal;
 }
 
@@ -5112,7 +5168,7 @@ struct literal_value_struct
 {
   r_reloc r_rel;
   unsigned long value;
-  bfd_boolean is_abs_literal;
+  bool is_abs_literal;
 };
 
 struct value_map_struct
@@ -5127,7 +5183,7 @@ struct value_map_hash_table_struct
   unsigned bucket_count;
   value_map **buckets;
   unsigned count;
-  bfd_boolean has_last_loc;
+  bool has_last_loc;
   r_reloc last_loc;
 };
 
@@ -5136,7 +5192,7 @@ static void
 init_literal_value (literal_value *lit,
 		    const r_reloc *r_rel,
 		    unsigned long value,
-		    bfd_boolean is_abs_literal)
+		    bool is_abs_literal)
 {
   lit->r_rel = *r_rel;
   lit->value = value;
@@ -5144,36 +5200,43 @@ init_literal_value (literal_value *lit,
 }
 
 
-static bfd_boolean
+static bool
 literal_value_equal (const literal_value *src1,
 		     const literal_value *src2,
-		     bfd_boolean final_static_link)
+		     bool final_static_link)
 {
   struct elf_link_hash_entry *h1, *h2;
 
   if (r_reloc_is_const (&src1->r_rel) != r_reloc_is_const (&src2->r_rel))
-    return FALSE;
+    return false;
 
   if (r_reloc_is_const (&src1->r_rel))
     return (src1->value == src2->value);
 
   if (ELF32_R_TYPE (src1->r_rel.rela.r_info)
       != ELF32_R_TYPE (src2->r_rel.rela.r_info))
-    return FALSE;
+    return false;
 
   if (src1->r_rel.target_offset != src2->r_rel.target_offset)
-    return FALSE;
+    return false;
 
   if (src1->r_rel.virtual_offset != src2->r_rel.virtual_offset)
-    return FALSE;
+    return false;
 
   if (src1->value != src2->value)
-    return FALSE;
+    return false;
 
   /* Now check for the same section (if defined) or the same elf_hash
      (if undefined or weak).  */
   h1 = r_reloc_get_hash_entry (&src1->r_rel);
   h2 = r_reloc_get_hash_entry (&src2->r_rel);
+
+  /* Keep start_stop literals always unique to avoid dropping it due to them
+     having late initialization.
+     Now they are equal because initialized with zeroed values.  */
+  if (h2 && h2->start_stop)
+      return false;
+
   if (r_reloc_is_defined (&src1->r_rel)
       && (final_static_link
 	  || ((!h1 || h1->root.type != bfd_link_hash_defweak)
@@ -5181,19 +5244,19 @@ literal_value_equal (const literal_value
     {
       if (r_reloc_get_section (&src1->r_rel)
 	  != r_reloc_get_section (&src2->r_rel))
-	return FALSE;
+	return false;
     }
   else
     {
       /* Require that the hash entries (i.e., symbols) be identical.  */
       if (h1 != h2 || h1 == 0)
-	return FALSE;
+	return false;
     }
 
   if (src1->is_abs_literal != src2->is_abs_literal)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 
@@ -5216,7 +5279,7 @@ value_map_hash_table_init (void)
       free (values);
       return NULL;
     }
-  values->has_last_loc = FALSE;
+  values->has_last_loc = false;
 
   return values;
 }
@@ -5267,7 +5330,7 @@ literal_value_hash (const literal_value
 static value_map *
 value_map_get_cached_value (value_map_hash_table *map,
 			    const literal_value *val,
-			    bfd_boolean final_static_link)
+			    bool final_static_link)
 {
   value_map *map_e;
   value_map *bucket;
@@ -5292,7 +5355,7 @@ static value_map *
 add_value_map (value_map_hash_table *map,
 	       const literal_value *val,
 	       const r_reloc *loc,
-	       bfd_boolean final_static_link)
+	       bool final_static_link)
 {
   value_map **bucket_p;
   unsigned idx;
@@ -5597,7 +5660,7 @@ static int
 removed_by_actions (text_action_list *action_list,
 		    text_action **p_start_action,
 		    bfd_vma offset,
-		    bfd_boolean before_fill)
+		    bool before_fill)
 {
   text_action *r;
   int removed = 0;
@@ -5634,7 +5697,7 @@ offset_with_removed_text (text_action_li
 {
   text_action *r = action_first (action_list);
 
-  return offset - removed_by_actions (action_list, &r, offset, FALSE);
+  return offset - removed_by_actions (action_list, &r, offset, false);
 }
 
 
@@ -5649,7 +5712,7 @@ struct map_action_fn_context_struct
 {
   int removed;
   removal_by_action_map map;
-  bfd_boolean eq_complete;
+  bool eq_complete;
 };
 
 static int
@@ -5666,7 +5729,7 @@ map_action_fn (splay_tree_node node, voi
   else
     {
       ++ctx->map.n_entries;
-      ctx->eq_complete = FALSE;
+      ctx->eq_complete = false;
       ientry->offset = r->offset;
       ientry->eq_removed_before_fill = ctx->removed;
     }
@@ -5676,7 +5739,7 @@ map_action_fn (splay_tree_node node, voi
       if (r->action != ta_fill || r->removed_bytes >= 0)
 	{
 	  ientry->eq_removed = ctx->removed;
-	  ctx->eq_complete = TRUE;
+	  ctx->eq_complete = true;
 	}
       else
 	ientry->eq_removed = ctx->removed + r->removed_bytes;
@@ -5696,7 +5759,7 @@ map_removal_by_action (text_action_list
   ctx.map.n_entries = 0;
   ctx.map.entry = bfd_malloc (action_list_count (action_list) *
 			      sizeof (removal_by_action_entry));
-  ctx.eq_complete = FALSE;
+  ctx.eq_complete = false;
 
   splay_tree_foreach (action_list->tree, map_action_fn, &ctx);
   action_list->map = ctx.map;
@@ -5704,7 +5767,7 @@ map_removal_by_action (text_action_list
 
 static int
 removed_by_actions_map (text_action_list *action_list, bfd_vma offset,
-			bfd_boolean before_fill)
+			bool before_fill)
 {
   unsigned a, b;
 
@@ -5746,7 +5809,7 @@ removed_by_actions_map (text_action_list
 static bfd_vma
 offset_with_removed_text_map (text_action_list *action_list, bfd_vma offset)
 {
-  int removed = removed_by_actions_map (action_list, offset, FALSE);
+  int removed = removed_by_actions_map (action_list, offset, false);
   return offset - removed;
 }
 
@@ -5938,13 +6001,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 +6022,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;
 }
@@ -6001,8 +6067,8 @@ typedef struct reloc_bfd_fix_struct relo
 
 struct xtensa_relax_info_struct
 {
-  bfd_boolean is_relaxable_literal_section;
-  bfd_boolean is_relaxable_asm_section;
+  bool is_relaxable_literal_section;
+  bool is_relaxable_asm_section;
   int visited;				/* Number of times visited.  */
 
   source_reloc *src_relocs;		/* Array[src_count].  */
@@ -6033,19 +6099,15 @@ struct elf_xtensa_section_data
 };
 
 
-static bfd_boolean
+static bool
 elf_xtensa_new_section_hook (bfd *abfd, asection *sec)
 {
-  if (!sec->used_by_bfd)
-    {
-      struct elf_xtensa_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+  struct elf_xtensa_section_data *sdata;
 
-      sdata = bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
@@ -6070,8 +6132,8 @@ init_xtensa_relax_info (asection *sec)
 {
   xtensa_relax_info *relax_info = get_xtensa_relax_info (sec);
 
-  relax_info->is_relaxable_literal_section = FALSE;
-  relax_info->is_relaxable_asm_section = FALSE;
+  relax_info->is_relaxable_literal_section = false;
+  relax_info->is_relaxable_asm_section = false;
   relax_info->visited = 0;
 
   relax_info->src_relocs = NULL;
@@ -6113,7 +6175,7 @@ struct reloc_bfd_fix_struct
 
   asection *target_sec;
   bfd_vma target_offset;
-  bfd_boolean translated;
+  bool translated;
 
   reloc_bfd_fix *next;
 };
@@ -6125,7 +6187,7 @@ reloc_bfd_fix_init (asection *src_sec,
 		    unsigned src_type,
 		    asection *target_sec,
 		    bfd_vma target_offset,
-		    bfd_boolean translated)
+		    bool translated)
 {
   reloc_bfd_fix *fix;
 
@@ -6251,13 +6313,12 @@ 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);
     }
 }
 
 
-static bfd_boolean
+static bool
 section_cache_section (section_cache_t *sec_cache,
 		       asection *sec,
 		       struct bfd_link_info *link_info)
@@ -6270,9 +6331,9 @@ section_cache_section (section_cache_t *
   bfd_size_type sec_size;
 
   if (sec == NULL)
-    return FALSE;
+    return false;
   if (sec == sec_cache->sec)
-    return TRUE;
+    return true;
 
   abfd = sec->owner;
   sec_size = bfd_get_section_limit (abfd, sec);
@@ -6288,7 +6349,7 @@ section_cache_section (section_cache_t *
 
   /* Get the entry table.  */
   ptblsize = xtensa_read_table_entries (abfd, sec, &prop_table,
-					XTENSA_PROP_SEC_NAME, FALSE);
+					XTENSA_PROP_SEC_NAME, false);
   if (ptblsize < 0)
     goto err;
 
@@ -6304,14 +6365,13 @@ section_cache_section (section_cache_t *
   sec_cache->pte_count = ptblsize;
   sec_cache->ptbl = prop_table;
 
-  return TRUE;
+  return true;
 
  err:
   release_contents (sec, contents);
   release_internal_relocs (sec, internal_relocs);
-  if (prop_table)
-    free (prop_table);
-  return FALSE;
+  free (prop_table);
+  return false;
 }
 
 
@@ -6349,7 +6409,7 @@ struct ebb_struct
   unsigned end_ptbl_idx;
   unsigned end_reloc_idx;
 
-  bfd_boolean ends_section;	/* Is this the last ebb in a section?  */
+  bool ends_section;	/* Is this the last ebb in a section?  */
 
   /* The unreachable property table at the end of this set of blocks;
      NULL if the end is not an unreachable block.  */
@@ -6384,7 +6444,7 @@ struct proposed_action_struct
   text_action_t action;
   bfd_vma offset;
   int removed_bytes;
-  bfd_boolean do_action; /* If false, then we will not perform the action.  */
+  bool do_action; /* If false, then we will not perform the action.  */
 };
 
 
@@ -6396,14 +6456,14 @@ typedef struct ebb_constraint_struct ebb
 struct ebb_constraint_struct
 {
   ebb_t ebb;
-  bfd_boolean start_movable;
+  bool start_movable;
 
   /* Bytes of extra space at the beginning if movable.  */
   int start_extra_space;
 
   enum ebb_target_enum start_align;
 
-  bfd_boolean end_movable;
+  bool end_movable;
 
   /* Bytes of extra space at the end if movable.  */
   int end_extra_space;
@@ -6429,8 +6489,7 @@ init_ebb_constraint (ebb_constraint *c)
 static void
 free_ebb_constraint (ebb_constraint *c)
 {
-  if (c->actions)
-    free (c->actions);
+  free (c->actions);
 }
 
 
@@ -6467,23 +6526,23 @@ init_ebb (ebb_t *ebb,
    a block that cannot be transformed.  Then we push it backwards
    searching for similar conditions.  */
 
-static bfd_boolean extend_ebb_bounds_forward (ebb_t *);
-static bfd_boolean extend_ebb_bounds_backward (ebb_t *);
+static bool extend_ebb_bounds_forward (ebb_t *);
+static bool extend_ebb_bounds_backward (ebb_t *);
 static bfd_size_type insn_block_decodable_len
   (bfd_byte *, bfd_size_type, bfd_vma, bfd_size_type);
 
-static bfd_boolean
+static bool
 extend_ebb_bounds (ebb_t *ebb)
 {
   if (!extend_ebb_bounds_forward (ebb))
-    return FALSE;
+    return false;
   if (!extend_ebb_bounds_backward (ebb))
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 extend_ebb_bounds_forward (ebb_t *ebb)
 {
   property_table_entry *the_entry, *new_entry;
@@ -6512,12 +6571,12 @@ extend_ebb_bounds_forward (ebb_t *ebb)
 	       "possible configuration mismatch"),
 	     ebb->sec->owner, ebb->sec,
 	     (uint64_t) (ebb->end_offset + insn_block_len));
-	  return FALSE;
+	  return false;
 	}
       ebb->end_offset += insn_block_len;
 
       if (ebb->end_offset == ebb->sec->size)
-	ebb->ends_section = TRUE;
+	ebb->ends_section = true;
 
       /* Update the reloc counter.  */
       while (ebb->end_reloc_idx + 1 < ebb->reloc_count
@@ -6528,7 +6587,7 @@ extend_ebb_bounds_forward (ebb_t *ebb)
 	}
 
       if (ebb->end_ptbl_idx + 1 == ebb->pte_count)
-	return TRUE;
+	return true;
 
       new_entry = &ebb->ptbl[ebb->end_ptbl_idx + 1];
       if (((new_entry->flags & XTENSA_PROP_INSN) == 0)
@@ -6547,7 +6606,7 @@ extend_ebb_bounds_forward (ebb_t *ebb)
   if (ebb->end_ptbl_idx + 1 == ebb->pte_count)
     {
       if (ebb->end_offset == ebb->content_length)
-	ebb->ends_section = TRUE;
+	ebb->ends_section = true;
     }
   else
     {
@@ -6558,11 +6617,11 @@ extend_ebb_bounds_forward (ebb_t *ebb)
     }
 
   /* Any other ending requires exact alignment.  */
-  return TRUE;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 extend_ebb_bounds_backward (ebb_t *ebb)
 {
   property_table_entry *the_entry, *new_entry;
@@ -6591,7 +6650,7 @@ extend_ebb_bounds_backward (ebb_t *ebb)
 	       "possible configuration mismatch"),
 	     ebb->sec->owner, ebb->sec,
 	     (uint64_t) (ebb->end_offset + insn_block_len));
-	  return FALSE;
+	  return false;
 	}
       ebb->start_offset -= insn_block_len;
 
@@ -6604,20 +6663,20 @@ extend_ebb_bounds_backward (ebb_t *ebb)
 	}
 
       if (ebb->start_ptbl_idx == 0)
-	return TRUE;
+	return true;
 
       new_entry = &ebb->ptbl[ebb->start_ptbl_idx - 1];
       if ((new_entry->flags & XTENSA_PROP_INSN) == 0
 	  || ((new_entry->flags & XTENSA_PROP_NO_TRANSFORM) != 0)
 	  || ((new_entry->flags & XTENSA_PROP_ALIGN) != 0))
-	return TRUE;
+	return true;
       if (new_entry->address + new_entry->size != the_entry->address)
-	return TRUE;
+	return true;
 
       the_entry = new_entry;
       ebb->start_ptbl_idx--;
     }
-  return TRUE;
+  return true;
 }
 
 
@@ -6649,7 +6708,7 @@ ebb_propose_action (ebb_constraint *c,
 		    text_action_t action,
 		    bfd_vma offset,
 		    int removed_bytes,
-		    bfd_boolean do_action)
+		    bool do_action)
 {
   proposed_action *act;
 
@@ -6664,8 +6723,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;
     }
@@ -6692,7 +6750,7 @@ ebb_propose_action (ebb_constraint *c,
    standard BFD functions to take care of this for us.  */
 
 static Elf_Internal_Rela *
-retrieve_internal_relocs (bfd *abfd, asection *sec, bfd_boolean keep_memory)
+retrieve_internal_relocs (bfd *abfd, asection *sec, bool keep_memory)
 {
   Elf_Internal_Rela *internal_relocs;
 
@@ -6717,14 +6775,13 @@ 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);
 }
 
 
 static bfd_byte *
-retrieve_contents (bfd *abfd, asection *sec, bfd_boolean keep_memory)
+retrieve_contents (bfd *abfd, asection *sec, bool keep_memory)
 {
   bfd_byte *contents;
   bfd_size_type sec_size;
@@ -6736,8 +6793,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 +6813,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);
 }
 
@@ -6788,77 +6844,77 @@ retrieve_local_syms (bfd *input_bfd)
 /* Code for link-time relaxation.  */
 
 /* Initialization for relaxation: */
-static bfd_boolean analyze_relocations (struct bfd_link_info *);
-static bfd_boolean find_relaxable_sections
-  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
-static bfd_boolean collect_source_relocs
+static bool analyze_relocations (struct bfd_link_info *);
+static bool find_relaxable_sections
+  (bfd *, asection *, struct bfd_link_info *, bool *);
+static bool collect_source_relocs
   (bfd *, asection *, struct bfd_link_info *);
-static bfd_boolean is_resolvable_asm_expansion
+static bool is_resolvable_asm_expansion
   (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, struct bfd_link_info *,
-   bfd_boolean *);
+   bool *);
 static Elf_Internal_Rela *find_associated_l32r_irel
   (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, Elf_Internal_Rela *);
-static bfd_boolean compute_text_actions
+static bool compute_text_actions
   (bfd *, asection *, struct bfd_link_info *);
-static bfd_boolean compute_ebb_proposed_actions (ebb_constraint *);
-static bfd_boolean compute_ebb_actions (ebb_constraint *);
+static bool compute_ebb_proposed_actions (ebb_constraint *);
+static bool compute_ebb_actions (ebb_constraint *);
 typedef struct reloc_range_list_struct reloc_range_list;
-static bfd_boolean check_section_ebb_pcrels_fit
+static bool check_section_ebb_pcrels_fit
   (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *,
    reloc_range_list *, const ebb_constraint *,
    const xtensa_opcode *);
-static bfd_boolean check_section_ebb_reduces (const ebb_constraint *);
+static bool check_section_ebb_reduces (const ebb_constraint *);
 static void text_action_add_proposed
   (text_action_list *, const ebb_constraint *, asection *);
 
 /* First pass: */
-static bfd_boolean compute_removed_literals
+static bool compute_removed_literals
   (bfd *, asection *, struct bfd_link_info *, value_map_hash_table *);
 static Elf_Internal_Rela *get_irel_at_offset
   (asection *, Elf_Internal_Rela *, bfd_vma);
-static bfd_boolean is_removable_literal
+static bool is_removable_literal
   (const source_reloc *, int, const source_reloc *, int, asection *,
    property_table_entry *, int);
-static bfd_boolean remove_dead_literal
+static bool remove_dead_literal
   (bfd *, asection *, struct bfd_link_info *, Elf_Internal_Rela *,
    Elf_Internal_Rela *, source_reloc *, property_table_entry *, int);
-static bfd_boolean identify_literal_placement
+static bool identify_literal_placement
   (bfd *, asection *, bfd_byte *, struct bfd_link_info *,
-   value_map_hash_table *, bfd_boolean *, Elf_Internal_Rela *, int,
+   value_map_hash_table *, bool *, Elf_Internal_Rela *, int,
    source_reloc *, property_table_entry *, int, section_cache_t *,
-   bfd_boolean);
-static bfd_boolean relocations_reach (source_reloc *, int, const r_reloc *);
-static bfd_boolean coalesce_shared_literal
+   bool);
+static bool relocations_reach (source_reloc *, int, const r_reloc *);
+static bool coalesce_shared_literal
   (asection *, source_reloc *, property_table_entry *, int, value_map *);
-static bfd_boolean move_shared_literal
+static bool move_shared_literal
   (asection *, struct bfd_link_info *, source_reloc *, property_table_entry *,
    int, const r_reloc *, const literal_value *, section_cache_t *);
 
 /* Second pass: */
-static bfd_boolean relax_section (bfd *, asection *, struct bfd_link_info *);
-static bfd_boolean translate_section_fixes (asection *);
-static bfd_boolean translate_reloc_bfd_fix (reloc_bfd_fix *);
+static bool relax_section (bfd *, asection *, struct bfd_link_info *);
+static bool translate_section_fixes (asection *);
+static bool translate_reloc_bfd_fix (reloc_bfd_fix *);
 static asection *translate_reloc (const r_reloc *, r_reloc *, asection *);
 static void shrink_dynamic_reloc_sections
   (struct bfd_link_info *, bfd *, asection *, Elf_Internal_Rela *);
-static bfd_boolean move_literal
+static bool move_literal
   (bfd *, struct bfd_link_info *, asection *, bfd_vma, bfd_byte *,
    xtensa_relax_info *, Elf_Internal_Rela **, const literal_value *);
-static bfd_boolean relax_property_section
+static bool relax_property_section
   (bfd *, asection *, struct bfd_link_info *);
 
 /* Third pass: */
-static bfd_boolean relax_section_symbols (bfd *, asection *);
+static bool relax_section_symbols (bfd *, asection *);
 
 
-static bfd_boolean
+static bool
 elf_xtensa_relax_section (bfd *abfd,
 			  asection *sec,
 			  struct bfd_link_info *link_info,
-			  bfd_boolean *again)
+			  bool *again)
 {
   static value_map_hash_table *values = NULL;
-  static bfd_boolean relocations_analyzed = FALSE;
+  static bool relocations_analyzed = false;
   xtensa_relax_info *relax_info;
 
   if (!relocations_analyzed)
@@ -6866,17 +6922,17 @@ elf_xtensa_relax_section (bfd *abfd,
       /* Do some overall initialization for relaxation.  */
       values = value_map_hash_table_init ();
       if (values == NULL)
-	return FALSE;
-      relaxing_section = TRUE;
+	return false;
+      relaxing_section = true;
       if (!analyze_relocations (link_info))
-	return FALSE;
-      relocations_analyzed = TRUE;
+	return false;
+      relocations_analyzed = true;
     }
-  *again = FALSE;
+  *again = false;
 
   /* Don't mess with linker-created sections.  */
   if ((sec->flags & SEC_LINKER_CREATED) != 0)
-    return TRUE;
+    return true;
 
   relax_info = get_xtensa_relax_info (sec);
   BFD_ASSERT (relax_info != NULL);
@@ -6888,8 +6944,8 @@ elf_xtensa_relax_section (bfd *abfd,
 	 analyze_relocations, but it is important for this step that the
 	 sections be examined in link order.  */
       if (!compute_removed_literals (abfd, sec, link_info, values))
-	return FALSE;
-      *again = TRUE;
+	return false;
+      *again = true;
       break;
 
     case 1:
@@ -6897,18 +6953,18 @@ elf_xtensa_relax_section (bfd *abfd,
 	value_map_hash_table_delete (values);
       values = NULL;
       if (!relax_section (abfd, sec, link_info))
-	return FALSE;
-      *again = TRUE;
+	return false;
+      *again = true;
       break;
 
     case 2:
       if (!relax_section_symbols (abfd, sec))
-	return FALSE;
+	return false;
       break;
     }
 
   relax_info->visited++;
-  return TRUE;
+  return true;
 }
 
 
@@ -6926,12 +6982,12 @@ elf_xtensa_relax_section (bfd *abfd,
    the L32R associated with the longcall while optionally preserving
    branch target alignments.  */
 
-static bfd_boolean
+static bool
 analyze_relocations (struct bfd_link_info *link_info)
 {
   bfd *abfd;
   asection *sec;
-  bfd_boolean is_relaxable = FALSE;
+  bool is_relaxable = false;
 
   /* Initialize the per-section relaxation info.  */
   for (abfd = link_info->input_bfds; abfd != NULL; abfd = abfd->link.next)
@@ -6945,12 +7001,12 @@ analyze_relocations (struct bfd_link_inf
     for (sec = abfd->sections; sec != NULL; sec = sec->next)
       {
 	if (!find_relaxable_sections (abfd, sec, link_info, &is_relaxable))
-	  return FALSE;
+	  return false;
       }
 
   /* Bail out if there are no relaxable sections.  */
   if (!is_relaxable)
-    return TRUE;
+    return true;
 
   /* Allocate space for source_relocs.  */
   for (abfd = link_info->input_bfds; abfd != NULL; abfd = abfd->link.next)
@@ -6974,7 +7030,7 @@ analyze_relocations (struct bfd_link_inf
     for (sec = abfd->sections; sec != NULL; sec = sec->next)
       {
 	if (!collect_source_relocs (abfd, sec, link_info))
-	  return FALSE;
+	  return false;
       }
 
   /* Compute the text actions.  */
@@ -6982,10 +7038,10 @@ analyze_relocations (struct bfd_link_inf
     for (sec = abfd->sections; sec != NULL; sec = sec->next)
       {
 	if (!compute_text_actions (abfd, sec, link_info))
-	  return FALSE;
+	  return false;
       }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -6999,18 +7055,18 @@ analyze_relocations (struct bfd_link_inf
    know how much space to allocate for source_relocs against each
    relaxable literal section.  */
 
-static bfd_boolean
+static bool
 find_relaxable_sections (bfd *abfd,
 			 asection *sec,
 			 struct bfd_link_info *link_info,
-			 bfd_boolean *is_relaxable_p)
+			 bool *is_relaxable_p)
 {
   Elf_Internal_Rela *internal_relocs;
   bfd_byte *contents;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
   unsigned i;
   xtensa_relax_info *source_relax_info;
-  bfd_boolean is_l32r_reloc;
+  bool is_l32r_reloc;
 
   internal_relocs = retrieve_internal_relocs (abfd, sec,
 					      link_info->keep_memory);
@@ -7020,7 +7076,7 @@ find_relaxable_sections (bfd *abfd,
   contents = retrieve_contents (abfd, sec, link_info->keep_memory);
   if (contents == NULL && sec->size != 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
@@ -7040,13 +7096,13 @@ find_relaxable_sections (bfd *abfd,
 	  && !source_relax_info->is_relaxable_asm_section
 	  && ELF32_R_TYPE (irel->r_info) == R_XTENSA_ASM_EXPAND)
 	{
-	  bfd_boolean is_reachable = FALSE;
+	  bool is_reachable = false;
 	  if (is_resolvable_asm_expansion (abfd, sec, contents, irel,
 					   link_info, &is_reachable)
 	      && is_reachable)
 	    {
-	      source_relax_info->is_relaxable_asm_section = TRUE;
-	      *is_relaxable_p = TRUE;
+	      source_relax_info->is_relaxable_asm_section = true;
+	      *is_relaxable_p = true;
 	    }
 	}
 
@@ -7061,7 +7117,7 @@ find_relaxable_sections (bfd *abfd,
       /* Count PC-relative operand relocations against the target section.
 	 Note: The conditions tested here must match the conditions under
 	 which init_source_reloc is called in collect_source_relocs().  */
-      is_l32r_reloc = FALSE;
+      is_l32r_reloc = false;
       if (is_operand_relocation (ELF32_R_TYPE (irel->r_info)))
 	{
 	  xtensa_opcode opcode =
@@ -7078,8 +7134,8 @@ find_relaxable_sections (bfd *abfd,
       if (is_l32r_reloc && r_reloc_is_defined (&r_rel))
 	{
 	  /* Mark the target section as relaxable.  */
-	  target_relax_info->is_relaxable_literal_section = TRUE;
-	  *is_relaxable_p = TRUE;
+	  target_relax_info->is_relaxable_literal_section = true;
+	  *is_relaxable_p = true;
 	}
     }
 
@@ -7094,14 +7150,14 @@ find_relaxable_sections (bfd *abfd,
    get rid of ASM_EXPAND relocs by either converting them to
    ASM_SIMPLIFY or by removing them.  */
 
-static bfd_boolean
+static bool
 collect_source_relocs (bfd *abfd,
 		       asection *sec,
 		       struct bfd_link_info *link_info)
 {
   Elf_Internal_Rela *internal_relocs;
   bfd_byte *contents;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
   unsigned i;
   bfd_size_type sec_size;
 
@@ -7114,7 +7170,7 @@ collect_source_relocs (bfd *abfd,
   contents = retrieve_contents (abfd, sec, link_info->keep_memory);
   if (contents == NULL && sec_size != 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
@@ -7137,7 +7193,7 @@ collect_source_relocs (bfd *abfd,
 	{
 	  xtensa_opcode opcode = XTENSA_UNDEFINED;
 	  int opnd = -1;
-	  bfd_boolean is_abs_literal = FALSE;
+	  bool is_abs_literal = false;
 
 	  if (is_alt_relocation (ELF32_R_TYPE (irel->r_info)))
 	    {
@@ -7148,7 +7204,7 @@ collect_source_relocs (bfd *abfd,
 	      opcode = get_relocation_opcode (abfd, sec, contents, irel);
 	      if (opcode == get_l32r_opcode ())
 		{
-		  is_abs_literal = TRUE;
+		  is_abs_literal = true;
 		  opnd = 1;
 		}
 	      else
@@ -7180,7 +7236,7 @@ collect_source_relocs (bfd *abfd,
   for (i = 0; i < sec->reloc_count; i++)
     {
       Elf_Internal_Rela *irel = &internal_relocs[i];
-      bfd_boolean is_reachable;
+      bool is_reachable;
 
       if (!is_resolvable_asm_expansion (abfd, sec, contents, irel, link_info,
 					&is_reachable))
@@ -7220,7 +7276,7 @@ collect_source_relocs (bfd *abfd,
 					   target_relax_info->src_next,
 					   sec, l32r_irel);
 	      BFD_ASSERT (s_reloc);
-	      s_reloc->is_null = TRUE;
+	      s_reloc->is_null = true;
 	    }
 
 	  /* Convert this reloc to ASM_SIMPLIFY.  */
@@ -7253,13 +7309,13 @@ collect_source_relocs (bfd *abfd,
    the call is within the range of a direct call, given the current VMA
    for this section and the target section.  */
 
-bfd_boolean
+bool
 is_resolvable_asm_expansion (bfd *abfd,
 			     asection *sec,
 			     bfd_byte *contents,
 			     Elf_Internal_Rela *irel,
 			     struct bfd_link_info *link_info,
-			     bfd_boolean *is_reachable_p)
+			     bool *is_reachable_p)
 {
   asection *target_sec;
   asection *s;
@@ -7272,32 +7328,32 @@ is_resolvable_asm_expansion (bfd *abfd,
   xtensa_opcode opcode, direct_call_opcode;
   bfd_vma self_address;
   bfd_vma dest_address;
-  bfd_boolean uses_l32r;
+  bool uses_l32r;
   bfd_size_type sec_size;
 
-  *is_reachable_p = FALSE;
+  *is_reachable_p = false;
 
   if (contents == NULL)
-    return FALSE;
+    return false;
 
   if (ELF32_R_TYPE (irel->r_info) != R_XTENSA_ASM_EXPAND)
-    return FALSE;
+    return false;
 
   sec_size = bfd_get_section_limit (abfd, sec);
   opcode = get_expanded_call_opcode (contents + irel->r_offset,
 				     sec_size - irel->r_offset, &uses_l32r);
   /* Optimization of longcalls that use CONST16 is not yet implemented.  */
   if (!uses_l32r)
-    return FALSE;
+    return false;
 
   direct_call_opcode = swap_callx_for_call_opcode (opcode);
   if (direct_call_opcode == XTENSA_UNDEFINED)
-    return FALSE;
+    return false;
 
   /* Check and see that the target resolves.  */
   r_reloc_init (&r_rel, abfd, irel, contents, sec_size);
   if (!r_reloc_is_defined (&r_rel))
-    return FALSE;
+    return false;
 
   target_sec = r_reloc_get_section (&r_rel);
   target_offset = r_rel.target_offset;
@@ -7307,7 +7363,7 @@ is_resolvable_asm_expansion (bfd *abfd,
      non-PIC calls on systems that use shared libraries, but the linker
      shouldn't crash regardless.  */
   if (!target_sec->output_section)
-    return FALSE;
+    return false;
 
   /* For relocatable sections, we can only simplify when the output
      section of the target is the same as the output section of the
@@ -7315,7 +7371,7 @@ is_resolvable_asm_expansion (bfd *abfd,
   if (bfd_link_relocatable (link_info)
       && (target_sec->output_section != sec->output_section
 	  || is_reloc_sym_weak (abfd, irel)))
-    return FALSE;
+    return false;
 
   if (target_sec->output_section != sec->output_section)
     {
@@ -7410,9 +7466,9 @@ is_resolvable_asm_expansion (bfd *abfd,
 
   if ((self_address >> CALL_SEGMENT_BITS) !=
       (dest_address >> CALL_SEGMENT_BITS))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 
@@ -7461,7 +7517,7 @@ build_reloc_opcodes (bfd *abfd,
 struct reloc_range_struct
 {
   bfd_vma addr;
-  bfd_boolean add; /* TRUE if start of a range, FALSE otherwise.  */
+  bool add; /* TRUE if start of a range, FALSE otherwise.  */
   /* Original irel index in the array of relocations for a section.  */
   unsigned irel_index;
 };
@@ -7480,7 +7536,7 @@ struct reloc_range_list_entry_struct
 struct reloc_range_list_struct
 {
   /* The rest of the structure is only meaningful when ok is TRUE.  */
-  bfd_boolean ok;
+  bool ok;
 
   unsigned n_range; /* Number of range markers.  */
   reloc_range *range; /* Sorted range markers.  */
@@ -7521,7 +7577,7 @@ build_reloc_ranges (bfd *abfd, asection
     bfd_malloc (sec->reloc_count * sizeof (*reloc));
 
   memset (list, 0, sizeof (*list));
-  list->ok = TRUE;
+  list->ok = true;
 
   for (i = 0; i < sec->reloc_count; i++)
     {
@@ -7579,14 +7635,14 @@ build_reloc_ranges (bfd *abfd, asection
 
 	  if (opcode == XTENSA_UNDEFINED)
 	    {
-	      list->ok = FALSE;
+	      list->ok = false;
 	      break;
 	    }
 
 	  opnum = get_relocation_opnd (opcode, ELF32_R_TYPE (irel->r_info));
 	  if (opnum == XTENSA_UNDEFINED)
 	    {
-	      list->ok = FALSE;
+	      list->ok = false;
 	      break;
 	    }
 
@@ -7685,7 +7741,7 @@ static void free_reloc_range_list (reloc
    The actual changes are performed by relax_section() in the second
    pass.  */
 
-bfd_boolean
+bool
 compute_text_actions (bfd *abfd,
 		      asection *sec,
 		      struct bfd_link_info *link_info)
@@ -7694,7 +7750,7 @@ compute_text_actions (bfd *abfd,
   xtensa_relax_info *relax_info;
   bfd_byte *contents;
   Elf_Internal_Rela *internal_relocs;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
   unsigned i;
   property_table_entry *prop_table = 0;
   int ptblsize = 0;
@@ -7720,15 +7776,15 @@ compute_text_actions (bfd *abfd,
   contents = retrieve_contents (abfd, sec, link_info->keep_memory);
   if (contents == NULL && sec_size != 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
   ptblsize = xtensa_read_table_entries (abfd, sec, &prop_table,
-					XTENSA_PROP_SEC_NAME, FALSE);
+					XTENSA_PROP_SEC_NAME, false);
   if (ptblsize < 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
@@ -7839,13 +7895,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;
 }
@@ -7854,7 +7908,7 @@ error_return:
 /* Do not widen an instruction if it is preceeded by a
    loop opcode.  It might cause misalignment.  */
 
-static bfd_boolean
+static bool
 prev_instr_is_a_loop (bfd_byte *contents,
 		      bfd_size_type content_length,
 		      bfd_size_type offset)
@@ -7862,7 +7916,7 @@ prev_instr_is_a_loop (bfd_byte *contents
   xtensa_opcode prev_opcode;
 
   if (offset < 3)
-    return FALSE;
+    return false;
   prev_opcode = insn_decode_opcode (contents, content_length, offset-3, 0);
   return (xtensa_opcode_is_loop (xtensa_default_isa, prev_opcode) == 1);
 }
@@ -7870,7 +7924,7 @@ prev_instr_is_a_loop (bfd_byte *contents
 
 /* Find all of the possible actions for an extended basic block.  */
 
-bfd_boolean
+bool
 compute_ebb_proposed_actions (ebb_constraint *ebb_table)
 {
   const ebb_t *ebb = &ebb_table->ebb;
@@ -7911,7 +7965,7 @@ compute_ebb_proposed_actions (ebb_constr
 	  enum ebb_target_enum align_type = EBB_DESIRE_TGT_ALIGN;
 	  BFD_ASSERT (offset != end_offset);
 	  if (offset == end_offset)
-	    return FALSE;
+	    return false;
 
 	  insn_len = insn_decode_len (ebb->contents, ebb->content_length,
 				      offset);
@@ -7922,7 +7976,7 @@ compute_ebb_proposed_actions (ebb_constr
 	    align_type = EBB_REQUIRE_TGT_ALIGN;
 
 	  ebb_propose_action (ebb_table, align_type, 0,
-			      ta_none, offset, 0, TRUE);
+			      ta_none, offset, 0, true);
 	}
 
       while (offset != end_offset)
@@ -7951,7 +8005,7 @@ compute_ebb_proposed_actions (ebb_constr
 		goto decode_error;
 
 	      ebb_propose_action (ebb_table, EBB_NO_ALIGN, 0,
-				  ta_convert_longcall, offset, 0, TRUE);
+				  ta_convert_longcall, offset, 0, true);
 
 	      offset += simplify_size;
 	      continue;
@@ -7985,7 +8039,7 @@ compute_ebb_proposed_actions (ebb_constr
 	    {
 	      /* Add an instruction narrow action.  */
 	      ebb_propose_action (ebb_table, EBB_NO_ALIGN, 0,
-				  ta_narrow_insn, offset, 0, FALSE);
+				  ta_narrow_insn, offset, 0, false);
 	    }
 	  else if ((entry->flags & XTENSA_PROP_NO_TRANSFORM) == 0
 		   && can_widen_instruction (slotbuf, fmt, opcode) != 0
@@ -7994,13 +8048,13 @@ compute_ebb_proposed_actions (ebb_constr
 	    {
 	      /* Add an instruction widen action.  */
 	      ebb_propose_action (ebb_table, EBB_NO_ALIGN, 0,
-				  ta_widen_insn, offset, 0, FALSE);
+				  ta_widen_insn, offset, 0, false);
 	    }
 	  else if (xtensa_opcode_is_loop (xtensa_default_isa, opcode) == 1)
 	    {
 	      /* Check for branch targets.  */
 	      ebb_propose_action (ebb_table, EBB_REQUIRE_LOOP_ALIGN, 0,
-				  ta_none, offset, 0, TRUE);
+				  ta_none, offset, 0, true);
 	    }
 
 	  offset += insn_len;
@@ -8010,10 +8064,10 @@ compute_ebb_proposed_actions (ebb_constr
   if (ebb->ends_unreachable)
     {
       ebb_propose_action (ebb_table, EBB_NO_ALIGN, 0,
-			  ta_fill, ebb->end_offset, 0, TRUE);
+			  ta_fill, ebb->end_offset, 0, true);
     }
 
-  return TRUE;
+  return true;
 
  decode_error:
   _bfd_error_handler
@@ -8021,7 +8075,7 @@ compute_ebb_proposed_actions (ebb_constr
     (_("%pB(%pA+%#" PRIx64 "): could not decode instruction; "
        "possible configuration mismatch"),
      ebb->sec->owner, ebb->sec, (uint64_t) offset);
-  return FALSE;
+  return false;
 }
 
 
@@ -8042,7 +8096,7 @@ compute_ebb_proposed_actions (ebb_constr
    narrow all wide instructions, and remove all no-ops unless the end
    of the EBB prevents it.  */
 
-bfd_boolean
+bool
 compute_ebb_actions (ebb_constraint *ebb_table)
 {
   unsigned i = 0;
@@ -8061,7 +8115,7 @@ compute_ebb_actions (ebb_constraint *ebb
      If so, use it.  */
   for (seg_idx_end = 0; seg_idx_end < ebb_table->action_count; seg_idx_end++)
     {
-      bfd_boolean requires_text_end_align = FALSE;
+      bool requires_text_end_align = false;
       unsigned longcall_count = 0;
       unsigned longcall_convert_count = 0;
       unsigned narrowable_count = 0;
@@ -8094,7 +8148,7 @@ compute_ebb_actions (ebb_constraint *ebb
       seg_idx_end = i;
 
       if (seg_idx_end == ebb_table->action_count && !ebb->ends_unreachable)
-	requires_text_end_align = TRUE;
+	requires_text_end_align = true;
 
       if (elf32xtensa_size_opt && !requires_text_end_align
 	  && action->align_type != EBB_REQUIRE_LOOP_ALIGN
@@ -8146,7 +8200,7 @@ compute_ebb_actions (ebb_constraint *ebb
 	      if (longcall_convert_count != 0)
 		{
 		  action->action = ta_remove_longcall;
-		  action->do_action = TRUE;
+		  action->do_action = true;
 		  action->removed_bytes += 3;
 		  longcall_convert_count--;
 		}
@@ -8154,7 +8208,7 @@ compute_ebb_actions (ebb_constraint *ebb
 	    case ta_narrow_insn:
 	      if (narrowable_convert_count != 0)
 		{
-		  action->do_action = TRUE;
+		  action->do_action = true;
 		  action->removed_bytes += 1;
 		  narrowable_convert_count--;
 		}
@@ -8162,7 +8216,7 @@ compute_ebb_actions (ebb_constraint *ebb
 	    case ta_widen_insn:
 	      if (widenable_convert_count != 0)
 		{
-		  action->do_action = TRUE;
+		  action->do_action = true;
 		  action->removed_bytes -= 1;
 		  widenable_convert_count--;
 		}
@@ -8186,7 +8240,7 @@ compute_ebb_actions (ebb_constraint *ebb
 
 	  if (action->do_action && action->action == ta_convert_longcall)
 	    {
-	      bfd_boolean bad_alignment = FALSE;
+	      bool bad_alignment = false;
 	      removed_bytes += 3;
 	      for (j = i + 1; j < ebb_table->action_count; j++)
 		{
@@ -8199,7 +8253,7 @@ compute_ebb_actions (ebb_constraint *ebb
 			   ebb_table->ebb.content_length,
 			   offset, offset - removed_bytes))
 			{
-			  bad_alignment = TRUE;
+			  bad_alignment = true;
 			  break;
 			}
 		    }
@@ -8210,7 +8264,7 @@ compute_ebb_actions (ebb_constraint *ebb
 					       offset,
 					       offset - removed_bytes))
 			{
-			  bad_alignment = TRUE;
+			  bad_alignment = true;
 			  break;
 			}
 		    }
@@ -8219,9 +8273,9 @@ compute_ebb_actions (ebb_constraint *ebb
 		      && ebb_table->ebb.sec->alignment_power == 2)
 		    {
 		      /* Narrow an instruction and we are done.  */
-		      new_action->do_action = TRUE;
+		      new_action->do_action = true;
 		      new_action->removed_bytes += 1;
-		      bad_alignment = FALSE;
+		      bad_alignment = false;
 		      break;
 		    }
 		  if (new_action->action == ta_widen_insn
@@ -8229,9 +8283,9 @@ compute_ebb_actions (ebb_constraint *ebb
 		      && ebb_table->ebb.sec->alignment_power == 2)
 		    {
 		      /* Narrow an instruction and we are done.  */
-		      new_action->do_action = FALSE;
+		      new_action->do_action = false;
 		      new_action->removed_bytes += 1;
-		      bad_alignment = FALSE;
+		      bad_alignment = false;
 		      break;
 		    }
 		  if (new_action->do_action)
@@ -8241,7 +8295,7 @@ compute_ebb_actions (ebb_constraint *ebb
 		{
 		  action->removed_bytes += 3;
 		  action->action = ta_remove_longcall;
-		  action->do_action = TRUE;
+		  action->do_action = true;
 		}
 	    }
 	  removed_bytes = old_removed_bytes;
@@ -8276,7 +8330,7 @@ compute_ebb_actions (ebb_constraint *ebb
 
       action->removed_bytes = extra_space - br;
     }
-  return TRUE;
+  return true;
 }
 
 
@@ -8445,10 +8499,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);
+    }
 }
 
 
@@ -8456,7 +8511,7 @@ free_xlate_map (xlate_map_t *map)
    relocations in a section will fit if a proposed set of actions
    are performed.  */
 
-static bfd_boolean
+static bool
 check_section_ebb_pcrels_fit (bfd *abfd,
 			      asection *sec,
 			      bfd_byte *contents,
@@ -8469,7 +8524,7 @@ check_section_ebb_pcrels_fit (bfd *abfd,
   unsigned n = sec->reloc_count;
   Elf_Internal_Rela *irel;
   xlate_map_t *xmap = NULL;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
   xtensa_relax_info *relax_info;
   reloc_range_list_entry *entry = NULL;
 
@@ -8486,7 +8541,7 @@ check_section_ebb_pcrels_fit (bfd *abfd,
     {
       if (!relevant_relocs->ok)
 	{
-	  ok = FALSE;
+	  ok = false;
 	  n = 0;
 	}
       else
@@ -8612,34 +8667,33 @@ check_section_ebb_pcrels_fit (bfd *abfd,
 		opcode = get_relocation_opcode (abfd, sec, contents, irel);
 	      if (opcode == XTENSA_UNDEFINED)
 		{
-		  ok = FALSE;
+		  ok = false;
 		  break;
 		}
 
 	      opnum = get_relocation_opnd (opcode, ELF32_R_TYPE (irel->r_info));
 	      if (opnum == XTENSA_UNDEFINED)
 		{
-		  ok = FALSE;
+		  ok = false;
 		  break;
 		}
 	    }
 
 	  if (!pcrel_reloc_fits (opcode, opnum, self_offset, target_offset))
 	    {
-	      ok = FALSE;
+	      ok = false;
 	      break;
 	    }
 	}
     }
 
-  if (xmap)
-    free_xlate_map (xmap);
+  free_xlate_map (xmap);
 
   return ok;
 }
 
 
-static bfd_boolean
+static bool
 check_section_ebb_reduces (const ebb_constraint *constraint)
 {
   int removed = 0;
@@ -8652,9 +8706,9 @@ check_section_ebb_reduces (const ebb_con
 	removed += action->removed_bytes;
     }
   if (removed < 0)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 
@@ -8727,7 +8781,7 @@ xtensa_compute_fill_extra_space (propert
    add an entry to the per-section list of removed literals.  The
    actual changes are deferred until the next pass.  */
 
-static bfd_boolean
+static bool
 compute_removed_literals (bfd *abfd,
 			  asection *sec,
 			  struct bfd_link_info *link_info,
@@ -8737,11 +8791,11 @@ compute_removed_literals (bfd *abfd,
   bfd_byte *contents;
   Elf_Internal_Rela *internal_relocs;
   source_reloc *src_relocs, *rel;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
   property_table_entry *prop_table = NULL;
   int ptblsize;
   int i, prev_i;
-  bfd_boolean last_loc_is_prev = FALSE;
+  bool last_loc_is_prev = false;
   bfd_vma last_target_offset = 0;
   section_cache_t target_sec_cache;
   bfd_size_type sec_size;
@@ -8761,7 +8815,7 @@ compute_removed_literals (bfd *abfd,
   contents = retrieve_contents (abfd, sec, link_info->keep_memory);
   if (contents == NULL && sec_size != 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
@@ -8773,10 +8827,10 @@ compute_removed_literals (bfd *abfd,
 	 internal_reloc_compare);
 
   ptblsize = xtensa_read_table_entries (abfd, sec, &prop_table,
-					XTENSA_PROP_SEC_NAME, FALSE);
+					XTENSA_PROP_SEC_NAME, false);
   if (ptblsize < 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
@@ -8808,7 +8862,7 @@ compute_removed_literals (bfd *abfd,
 
       if (last_loc_is_prev &&
 	  last_target_offset + 4 != rel->r_rel.target_offset)
-	last_loc_is_prev = FALSE;
+	last_loc_is_prev = false;
 
       /* Check if the relocation was from an L32R that is being removed
 	 because a CALLX was converted to a direct CALL, and check if
@@ -8819,7 +8873,7 @@ compute_removed_literals (bfd *abfd,
 	  if (!remove_dead_literal (abfd, sec, link_info, internal_relocs,
 				    irel, rel, prop_table, ptblsize))
 	    {
-	      ok = FALSE;
+	      ok = false;
 	      goto error_return;
 	    }
 	  last_target_offset = rel->r_rel.target_offset;
@@ -8833,7 +8887,7 @@ compute_removed_literals (bfd *abfd,
 				       prop_table, ptblsize,
 				       &target_sec_cache, rel->is_abs_literal))
 	{
-	  ok = FALSE;
+	  ok = false;
 	  goto error_return;
 	}
       last_target_offset = rel->r_rel.target_offset;
@@ -8844,9 +8898,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);
@@ -8895,7 +8948,7 @@ get_irel_at_offset (asection *sec,
 }
 
 
-bfd_boolean
+bool
 is_removable_literal (const source_reloc *rel,
 		      int i,
 		      const source_reloc *src_relocs,
@@ -8908,30 +8961,30 @@ is_removable_literal (const source_reloc
   property_table_entry *entry;
 
   if (!rel->is_null)
-    return FALSE;
+    return false;
 
   entry = elf_xtensa_find_property_entry (prop_table, ptblsize,
 					  sec->vma + rel->r_rel.target_offset);
   if (entry && (entry->flags & XTENSA_PROP_NO_TRANSFORM))
-    return FALSE;
+    return false;
 
   for (++i; i < src_count; ++i)
     {
       curr_rel = &src_relocs[i];
       /* If all others have the same target offset....  */
       if (curr_rel->r_rel.target_offset != rel->r_rel.target_offset)
-	return TRUE;
+	return true;
 
       if (!curr_rel->is_null
 	  && !xtensa_is_property_section (curr_rel->source_sec)
 	  && !(curr_rel->source_sec->flags & SEC_DEBUGGING))
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 
-bfd_boolean
+bool
 remove_dead_literal (bfd *abfd,
 		     asection *sec,
 		     struct bfd_link_info *link_info,
@@ -8946,7 +8999,7 @@ remove_dead_literal (bfd *abfd,
 
   relax_info = get_xtensa_relax_info (sec);
   if (!relax_info)
-    return FALSE;
+    return false;
 
   entry = elf_xtensa_find_property_entry (prop_table, ptblsize,
 					  sec->vma + rel->r_rel.target_offset);
@@ -8998,37 +9051,37 @@ remove_dead_literal (bfd *abfd,
     }
 
   /* Do not modify "last_loc_is_prev".  */
-  return TRUE;
+  return true;
 }
 
 
-bfd_boolean
+bool
 identify_literal_placement (bfd *abfd,
 			    asection *sec,
 			    bfd_byte *contents,
 			    struct bfd_link_info *link_info,
 			    value_map_hash_table *values,
-			    bfd_boolean *last_loc_is_prev_p,
+			    bool *last_loc_is_prev_p,
 			    Elf_Internal_Rela *irel,
 			    int remaining_src_rels,
 			    source_reloc *rel,
 			    property_table_entry *prop_table,
 			    int ptblsize,
 			    section_cache_t *target_sec_cache,
-			    bfd_boolean is_abs_literal)
+			    bool is_abs_literal)
 {
   literal_value val;
   value_map *val_map;
   xtensa_relax_info *relax_info;
-  bfd_boolean literal_placed = FALSE;
+  bool literal_placed = false;
   r_reloc r_rel;
   unsigned long value;
-  bfd_boolean final_static_link;
+  bool final_static_link;
   bfd_size_type sec_size;
 
   relax_info = get_xtensa_relax_info (sec);
   if (!relax_info)
-    return FALSE;
+    return false;
 
   sec_size = bfd_get_section_limit (abfd, sec);
 
@@ -9066,7 +9119,7 @@ identify_literal_placement (bfd *abfd,
       && coalesce_shared_literal (sec, rel, prop_table, ptblsize, val_map))
     {
       /* No change to last_loc_is_prev.  */
-      literal_placed = TRUE;
+      literal_placed = true;
     }
 
   /* For relocatable links, do not try to move literals.  To do it
@@ -9089,7 +9142,7 @@ identify_literal_placement (bfd *abfd,
 				      &try_loc, &val, target_sec_cache))
 	    {
 	      values->last_loc.virtual_offset += 4;
-	      literal_placed = TRUE;
+	      literal_placed = true;
 	      if (!val_map)
 		val_map = add_value_map (values, &val, &try_loc,
 					 final_static_link);
@@ -9102,16 +9155,16 @@ identify_literal_placement (bfd *abfd,
   if (!literal_placed)
     {
       /* Nothing worked, leave the literal alone but update the last loc.  */
-      values->has_last_loc = TRUE;
+      values->has_last_loc = true;
       values->last_loc = rel->r_rel;
       if (!val_map)
 	val_map = add_value_map (values, &val, &rel->r_rel, final_static_link);
       else
 	val_map->loc = rel->r_rel;
-      *last_loc_is_prev_p = TRUE;
+      *last_loc_is_prev_p = true;
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -9126,7 +9179,7 @@ identify_literal_placement (bfd *abfd,
    is sorted by target offset so we know all the entries for the same
    literal will be contiguous.  */
 
-static bfd_boolean
+static bool
 relocations_reach (source_reloc *reloc,
 		   int remaining_relocs,
 		   const r_reloc *r_rel)
@@ -9136,7 +9189,7 @@ relocations_reach (source_reloc *reloc,
   int i;
 
   if (!r_reloc_is_defined (r_rel))
-    return FALSE;
+    return false;
 
   sec = r_reloc_get_section (r_rel);
   from_offset = reloc[0].r_rel.target_offset;
@@ -9154,7 +9207,7 @@ relocations_reach (source_reloc *reloc,
 	 in order to coalesce.  */
       if (r_reloc_get_section (&reloc[i].r_rel)->output_section
 	  != sec->output_section)
-	return FALSE;
+	return false;
 
       /* Absolute literals in the same output section can always be
 	 combined.  */
@@ -9174,18 +9227,18 @@ relocations_reach (source_reloc *reloc,
 
 	  if (!pcrel_reloc_fits (reloc[i].opcode, reloc[i].opnd,
 				 source_address, dest_address))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
 /* Move a literal to another literal location because it is
    the same as the other literal value.  */
 
-static bfd_boolean
+static bool
 coalesce_shared_literal (asection *sec,
 			 source_reloc *rel,
 			 property_table_entry *prop_table,
@@ -9200,12 +9253,12 @@ coalesce_shared_literal (asection *sec,
 
   relax_info = get_xtensa_relax_info (sec);
   if (!relax_info)
-    return FALSE;
+    return false;
 
   entry = elf_xtensa_find_property_entry
     (prop_table, ptblsize, sec->vma + rel->r_rel.target_offset);
   if (entry && (entry->flags & XTENSA_PROP_NO_TRANSFORM))
-    return TRUE;
+    return true;
 
   /* Mark that the literal will be coalesced.  */
   add_removed_literal (&relax_info->removed_list, &rel->r_rel, &val_map->loc);
@@ -9242,7 +9295,7 @@ coalesce_shared_literal (asection *sec,
 			 ta_fill, sec, entry_sec_offset, removed_diff);
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -9250,7 +9303,7 @@ coalesce_shared_literal (asection *sec,
    total amount of space used because of alignments so we need to do
    this carefully.  Also, it may make a branch go out of range.  */
 
-static bfd_boolean
+static bool
 move_shared_literal (asection *sec,
 		     struct bfd_link_info *link_info,
 		     source_reloc *rel,
@@ -9267,16 +9320,16 @@ move_shared_literal (asection *sec,
   asection *target_sec;
   ebb_t *ebb;
   ebb_constraint ebb_table;
-  bfd_boolean relocs_fit;
+  bool relocs_fit;
 
   /* If this routine always returns FALSE, the literals that cannot be
      coalesced will not be moved.  */
   if (elf32xtensa_no_literal_movement)
-    return FALSE;
+    return false;
 
   relax_info = get_xtensa_relax_info (sec);
   if (!relax_info)
-    return FALSE;
+    return false;
 
   target_sec = r_reloc_get_section (target_loc);
   target_relax_info = get_xtensa_relax_info (target_sec);
@@ -9284,23 +9337,23 @@ move_shared_literal (asection *sec,
   /* Literals to undefined sections may not be moved because they
      must report an error.  */
   if (bfd_is_und_section (target_sec))
-    return FALSE;
+    return false;
 
   src_entry = elf_xtensa_find_property_entry
     (prop_table, ptblsize, sec->vma + rel->r_rel.target_offset);
 
   if (!section_cache_section (target_sec_cache, target_sec, link_info))
-    return FALSE;
+    return false;
 
   target_entry = elf_xtensa_find_property_entry
     (target_sec_cache->ptbl, target_sec_cache->pte_count,
      target_sec->vma + target_loc->target_offset);
 
   if (!target_entry)
-    return FALSE;
+    return false;
 
   /* Make sure that we have not broken any branches.  */
-  relocs_fit = FALSE;
+  relocs_fit = false;
 
   init_ebb_constraint (&ebb_table);
   ebb = &ebb_table.ebb;
@@ -9313,7 +9366,7 @@ move_shared_literal (asection *sec,
      destination.  */
   ebb_propose_action (&ebb_table, EBB_NO_ALIGN, 0,
 		      ta_fill, target_loc->target_offset,
-		      -4 - (1 << target_sec->alignment_power), TRUE);
+		      -4 - (1 << target_sec->alignment_power), true);
 
   /* Check all of the PC-relative relocations to make sure they still fit.  */
   relocs_fit = check_section_ebb_pcrels_fit (target_sec->owner, target_sec,
@@ -9322,7 +9375,7 @@ move_shared_literal (asection *sec,
 					     &ebb_table, NULL);
 
   if (!relocs_fit)
-    return FALSE;
+    return false;
 
   text_action_add_literal (&target_relax_info->action_list,
 			   ta_add_literal, target_loc, lit_value, -4);
@@ -9394,7 +9447,7 @@ move_shared_literal (asection *sec,
 			 ta_fill, sec, entry_sec_offset, removed_diff);
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -9414,16 +9467,16 @@ action_remove_bytes_fn (splay_tree_node
    is a relaxable section, delete the unwanted literals and fix the
    section size.  */
 
-bfd_boolean
+bool
 relax_section (bfd *abfd, asection *sec, struct bfd_link_info *link_info)
 {
   Elf_Internal_Rela *internal_relocs;
   xtensa_relax_info *relax_info;
   bfd_byte *contents;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
   unsigned i;
-  bfd_boolean rv = FALSE;
-  bfd_boolean virtual_action;
+  bool rv = false;
+  bool virtual_action;
   bfd_size_type sec_size;
 
   sec_size = bfd_get_section_limit (abfd, sec);
@@ -9443,12 +9496,12 @@ relax_section (bfd *abfd, asection *sec,
   internal_relocs = retrieve_internal_relocs (abfd, sec,
 					      link_info->keep_memory);
   if (!internal_relocs && !action_list_count (&relax_info->action_list))
-    return TRUE;
+    return true;
 
   contents = retrieve_contents (abfd, sec, link_info->keep_memory);
   if (contents == NULL && sec_size != 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
@@ -9604,7 +9657,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 +9679,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 +9726,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"),
@@ -9689,7 +9789,7 @@ relax_section (bfd *abfd, asection *sec,
 		    new_reloc.target_offset + new_reloc.virtual_offset;
 		  fix = reloc_bfd_fix_init (sec, source_offset, r_type,
 					    target_sec,
-					    addend_displacement, TRUE);
+					    addend_displacement, true);
 		  add_fix (sec, fix);
 		}
 	    }
@@ -9731,7 +9831,7 @@ relax_section (bfd *abfd, asection *sec,
       for (action = action_first (&relax_info->action_list); action;
 	   action = action_next (&relax_info->action_list, action))
 	{
-	  virtual_action = FALSE;
+	  virtual_action = false;
 	  if (action->offset > orig_dot)
 	    {
 	      orig_dot += orig_dot_copied;
@@ -9773,7 +9873,7 @@ relax_section (bfd *abfd, asection *sec,
 		      orig_dot_copied = copy_size;
 		      dup_dot += copy_size;
 		    }
-		  virtual_action = TRUE;
+		  virtual_action = true;
 		}
 	      else
 		BFD_ASSERT (action->virtual_offset <= orig_dot_vo);
@@ -9909,7 +10009,7 @@ relax_section (bfd *abfd, asection *sec,
 }
 
 
-static bfd_boolean
+static bool
 translate_section_fixes (asection *sec)
 {
   xtensa_relax_info *relax_info;
@@ -9917,20 +10017,20 @@ translate_section_fixes (asection *sec)
 
   relax_info = get_xtensa_relax_info (sec);
   if (!relax_info)
-    return TRUE;
+    return true;
 
   for (r = relax_info->fix_list; r != NULL; r = r->next)
     if (!translate_reloc_bfd_fix (r))
-      return FALSE;
+      return false;
 
-  return TRUE;
+  return true;
 }
 
 
 /* Translate a fix given the mapping in the relax info for the target
    section.  If it has already been translated, no work is required.  */
 
-static bfd_boolean
+static bool
 translate_reloc_bfd_fix (reloc_bfd_fix *fix)
 {
   reloc_bfd_fix new_fix;
@@ -9940,7 +10040,7 @@ translate_reloc_bfd_fix (reloc_bfd_fix *
   bfd_vma new_offset, target_offset;
 
   if (fix->translated)
-    return TRUE;
+    return true;
 
   sec = fix->target_sec;
   target_offset = fix->target_offset;
@@ -9948,8 +10048,8 @@ translate_reloc_bfd_fix (reloc_bfd_fix *
   relax_info = get_xtensa_relax_info (sec);
   if (!relax_info)
     {
-      fix->translated = TRUE;
-      return TRUE;
+      fix->translated = true;
+      return true;
     }
 
   new_fix = *fix;
@@ -9958,8 +10058,8 @@ translate_reloc_bfd_fix (reloc_bfd_fix *
   if (!relax_info->is_relaxable_literal_section
       && !relax_info->is_relaxable_asm_section)
     {
-      fix->translated = TRUE;
-      return TRUE;
+      fix->translated = true;
+      return true;
     }
 
   /* If the literal has been moved and this relocation was on an
@@ -9967,7 +10067,7 @@ translate_reloc_bfd_fix (reloc_bfd_fix *
      location.  Otherwise, the relocation should move within the
      section.  */
 
-  removed = FALSE;
+  removed = NULL;
   if (is_operand_relocation (fix->src_type))
     {
       /* Check if the original relocation is against a literal being
@@ -9997,9 +10097,9 @@ translate_reloc_bfd_fix (reloc_bfd_fix *
 	      target_offset = removed->to.target_offset;
 	      new_fix.target_sec = new_sec;
 	      new_fix.target_offset = target_offset;
-	      new_fix.translated = TRUE;
+	      new_fix.translated = true;
 	      *fix = new_fix;
-	      return TRUE;
+	      return true;
 	    }
 	}
       target_offset = removed->to.target_offset;
@@ -10012,9 +10112,9 @@ translate_reloc_bfd_fix (reloc_bfd_fix *
 
   new_fix.target_offset = new_offset;
   new_fix.target_offset = new_offset;
-  new_fix.translated = TRUE;
+  new_fix.translated = true;
   *fix = new_fix;
-  return TRUE;
+  return true;
 }
 
 
@@ -10038,7 +10138,7 @@ translate_reloc (const r_reloc *orig_rel
 
   target_offset = orig_rel->target_offset;
 
-  removed = FALSE;
+  removed = NULL;
   if (is_operand_relocation (ELF32_R_TYPE (orig_rel->rela.r_info)))
     {
       /* Check if the original relocation is against a literal being
@@ -10081,9 +10181,9 @@ translate_reloc (const r_reloc *orig_rel
   if (base_offset <= target_offset)
     {
       int base_removed = removed_by_actions_map (&relax_info->action_list,
-						 base_offset, FALSE);
+						 base_offset, false);
       int addend_removed = removed_by_actions_map (&relax_info->action_list,
-						   target_offset, FALSE) -
+						   target_offset, false) -
 	base_removed;
 
       new_rel->target_offset = target_offset - base_removed - addend_removed;
@@ -10093,9 +10193,9 @@ translate_reloc (const r_reloc *orig_rel
     {
       /* Handle a negative addend.  The base offset comes first.  */
       int tgt_removed = removed_by_actions_map (&relax_info->action_list,
-						target_offset, FALSE);
+						target_offset, false);
       int addend_removed = removed_by_actions_map (&relax_info->action_list,
-						   base_offset, FALSE) -
+						   base_offset, false) -
 	tgt_removed;
 
       new_rel->target_offset = target_offset - tgt_removed;
@@ -10127,7 +10227,7 @@ shrink_dynamic_reloc_sections (struct bf
   unsigned long r_symndx;
   int r_type;
   struct elf_link_hash_entry *h;
-  bfd_boolean dynamic_symbol;
+  bool dynamic_symbol;
 
   htab = elf_xtensa_hash_table (info);
   if (htab == NULL)
@@ -10148,18 +10248,17 @@ 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;
+      bool is_plt = false;
 
       if (dynamic_symbol && r_type == R_XTENSA_PLT)
 	{
 	  srel = htab->elf.srelplt;
-	  is_plt = TRUE;
+	  is_plt = true;
 	}
       else
 	srel = htab->elf.srelgot;
@@ -10220,7 +10319,7 @@ shrink_dynamic_reloc_sections (struct bf
    appropriate address.  Contents and internal relocations for the
    section must be pinned after calling this routine.  */
 
-static bfd_boolean
+static bool
 move_literal (bfd *abfd,
 	      struct bfd_link_info *link_info,
 	      asection *sec,
@@ -10261,7 +10360,7 @@ move_literal (bfd *abfd,
       fix = reloc_bfd_fix_init (sec, offset, r_type,
 				r_reloc_get_section (r_rel),
 				r_rel->target_offset + r_rel->virtual_offset,
-				FALSE);
+				false);
       /* We also need to mark that relocations are needed here.  */
       sec->flags |= SEC_RELOC;
 
@@ -10296,7 +10395,7 @@ move_literal (bfd *abfd,
 	  new_relocs = (Elf_Internal_Rela *)
 	    bfd_zmalloc (sizeof (Elf_Internal_Rela) * (new_relocs_count));
 	  if (!new_relocs)
-	    return FALSE;
+	    return false;
 
 	  /* We could handle this more quickly by finding the split point.  */
 	  if (insert_at != 0)
@@ -10342,7 +10441,7 @@ move_literal (bfd *abfd,
 	    relax_info->relocs_count = sec->reloc_count;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 
@@ -10351,7 +10450,7 @@ move_literal (bfd *abfd,
    algorithm does NOT allow for relocations into the middle of the
    property sections.  */
 
-static bfd_boolean
+static bool
 relax_property_section (bfd *abfd,
 			asection *sec,
 			struct bfd_link_info *link_info)
@@ -10359,8 +10458,8 @@ relax_property_section (bfd *abfd,
   Elf_Internal_Rela *internal_relocs;
   bfd_byte *contents;
   unsigned i;
-  bfd_boolean ok = TRUE;
-  bfd_boolean is_full_prop_section;
+  bool ok = true;
+  bool is_full_prop_section;
   size_t last_zfill_target_offset = 0;
   asection *last_zfill_target_sec = NULL;
   bfd_size_type sec_size;
@@ -10372,7 +10471,7 @@ relax_property_section (bfd *abfd,
   contents = retrieve_contents (abfd, sec, link_info->keep_memory);
   if (contents == NULL && sec_size != 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
@@ -10425,7 +10524,7 @@ relax_property_section (bfd *abfd,
 	      long old_size, new_size;
 	      int removed_by_old_offset =
 		removed_by_actions_map (&target_relax_info->action_list,
-					old_offset, FALSE);
+					old_offset, false);
 	      new_offset = old_offset - removed_by_old_offset;
 
 	      /* Assert that we are not out of bounds.  */
@@ -10452,7 +10551,7 @@ relax_property_section (bfd *abfd,
 			 include any fill inserted by relaxation.  */
 		      removed_by_old_offset =
 			removed_by_actions_map (&target_relax_info->action_list,
-						old_offset, TRUE);
+						old_offset, true);
 		      new_offset = old_offset - removed_by_old_offset;
 
 		      /* If it is not unreachable and we have not yet
@@ -10472,7 +10571,7 @@ relax_property_section (bfd *abfd,
 		{
 		  int removed_by_old_offset_size =
 		    removed_by_actions_map (&target_relax_info->action_list,
-					    old_offset + old_size, TRUE);
+					    old_offset + old_size, true);
 		  new_size -= removed_by_old_offset_size - removed_by_old_offset;
 		}
 
@@ -10524,7 +10623,7 @@ relax_property_section (bfd *abfd,
 	{
 	  Elf_Internal_Rela *offset_rel, *extra_rel;
 	  bfd_vma bytes_to_remove, size, actual_offset;
-	  bfd_boolean remove_this_rel;
+	  bool remove_this_rel;
 	  flagword flags;
 
 	  /* Find the first relocation for the entry at the current offset.
@@ -10593,7 +10692,7 @@ relax_property_section (bfd *abfd,
 	  else
 	    next_rel = NULL;
 
-	  remove_this_rel = FALSE;
+	  remove_this_rel = false;
 	  bytes_to_remove = 0;
 	  actual_offset = offset - removed_bytes;
 	  size = bfd_get_32 (abfd, &contents[actual_offset + 4]);
@@ -10610,7 +10709,7 @@ relax_property_section (bfd *abfd,
 	      /* Always remove entries with zero size and no alignment.  */
 	      bytes_to_remove = entry_size;
 	      if (offset_rel)
-		remove_this_rel = TRUE;
+		remove_this_rel = true;
 	    }
 	  else if (offset_rel
 		   && ELF32_R_TYPE (offset_rel->r_info) == R_XTENSA_32)
@@ -10643,7 +10742,7 @@ relax_property_section (bfd *abfd,
 		      bfd_put_32 (abfd, old_size + size,
 				  &contents[last_irel->r_offset + 4]);
 		      bytes_to_remove = entry_size;
-		      remove_this_rel = TRUE;
+		      remove_this_rel = true;
 		    }
 		  else
 		    last_irel = offset_rel;
@@ -10701,7 +10800,7 @@ relax_property_section (bfd *abfd,
 
 /* Change symbol values to account for removed literals.  */
 
-bfd_boolean
+bool
 relax_section_symbols (bfd *abfd, asection *sec)
 {
   xtensa_relax_info *relax_info;
@@ -10715,7 +10814,7 @@ relax_section_symbols (bfd *abfd, asecti
 
   if (!relax_info->is_relaxable_literal_section
       && !relax_info->is_relaxable_asm_section)
-    return TRUE;
+    return true;
 
   sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
 
@@ -10734,13 +10833,13 @@ relax_section_symbols (bfd *abfd, asecti
 	{
 	  bfd_vma orig_addr = isym->st_value;
 	  int removed = removed_by_actions_map (&relax_info->action_list,
-						orig_addr, FALSE);
+						orig_addr, false);
 
 	  isym->st_value -= removed;
 	  if (ELF32_ST_TYPE (isym->st_info) == STT_FUNC)
 	    isym->st_size -=
 	      removed_by_actions_map (&relax_info->action_list,
-				      orig_addr + isym->st_size, FALSE) -
+				      orig_addr + isym->st_size, false) -
 	      removed;
 	}
     }
@@ -10761,25 +10860,25 @@ relax_section_symbols (bfd *abfd, asecti
 	{
 	  bfd_vma orig_addr = sym_hash->root.u.def.value;
 	  int removed = removed_by_actions_map (&relax_info->action_list,
-						orig_addr, FALSE);
+						orig_addr, false);
 
 	  sym_hash->root.u.def.value -= removed;
 
 	  if (sym_hash->type == STT_FUNC)
 	    sym_hash->size -=
 	      removed_by_actions_map (&relax_info->action_list,
-				      orig_addr + sym_hash->size, FALSE) -
+				      orig_addr + sym_hash->size, false) -
 	      removed;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
 /* "Fix" handling functions, called while performing relocations.  */
 
-static bfd_boolean
+static bool
 do_fix_for_relocatable_link (Elf_Internal_Rela *rel,
 			     bfd *input_bfd,
 			     asection *input_section,
@@ -10792,11 +10891,11 @@ do_fix_for_relocatable_link (Elf_Interna
   reloc_bfd_fix *fix;
 
   if (r_type == R_XTENSA_NONE)
-    return TRUE;
+    return true;
 
   fix = get_bfd_fix (input_section, rel->r_offset, r_type);
   if (!fix)
-    return TRUE;
+    return true;
 
   r_reloc_init (&r_rel, input_bfd, rel, contents,
 		bfd_get_section_limit (input_bfd, input_section));
@@ -10812,7 +10911,7 @@ do_fix_for_relocatable_link (Elf_Interna
 	    (_("%pB(%pA+%#" PRIx64 "): unexpected fix for %s relocation"),
 	     input_bfd, input_section, (uint64_t) rel->r_offset,
 	     elf_howto_table[r_type].name);
-	  return FALSE;
+	  return false;
 	}
       /* Leave it be.  Resolution will happen in a later stage.  */
     }
@@ -10822,7 +10921,7 @@ do_fix_for_relocatable_link (Elf_Interna
       rel->r_addend += ((sec->output_offset + fix->target_offset)
 			- (old_sec->output_offset + old_offset));
     }
-  return TRUE;
+  return true;
 }
 
 
@@ -11006,7 +11105,7 @@ get_elf_r_symndx_offset (bfd *abfd, unsi
 }
 
 
-static bfd_boolean
+static bool
 is_reloc_sym_weak (bfd *abfd, Elf_Internal_Rela *rel)
 {
   unsigned long r_symndx = ELF32_R_SYM (rel->r_info);
@@ -11014,12 +11113,12 @@ is_reloc_sym_weak (bfd *abfd, Elf_Intern
 
   h = get_elf_r_symndx_hash_entry (abfd, r_symndx);
   if (h && h->root.type == bfd_link_hash_defweak)
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
 
-static bfd_boolean
+static bool
 pcrel_reloc_fits (xtensa_opcode opc,
 		  int opnd,
 		  bfd_vma self_address,
@@ -11029,53 +11128,53 @@ pcrel_reloc_fits (xtensa_opcode opc,
   uint32 valp = dest_address;
   if (xtensa_operand_do_reloc (isa, opc, opnd, &valp, self_address)
       || xtensa_operand_encode (isa, opc, opnd, &valp))
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 xtensa_is_property_section (asection *sec)
 {
   if (xtensa_is_insntable_section (sec)
       || xtensa_is_littable_section (sec)
       || xtensa_is_proptable_section (sec))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 
-static bfd_boolean
+static bool
 xtensa_is_insntable_section (asection *sec)
 {
-  if (CONST_STRNEQ (sec->name, XTENSA_INSN_SEC_NAME)
-      || CONST_STRNEQ (sec->name, ".gnu.linkonce.x."))
-    return TRUE;
+  if (startswith (sec->name, XTENSA_INSN_SEC_NAME)
+      || startswith (sec->name, ".gnu.linkonce.x."))
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 
-static bfd_boolean
+static bool
 xtensa_is_littable_section (asection *sec)
 {
-  if (CONST_STRNEQ (sec->name, XTENSA_LIT_SEC_NAME)
-      || CONST_STRNEQ (sec->name, ".gnu.linkonce.p."))
-    return TRUE;
+  if (startswith (sec->name, XTENSA_LIT_SEC_NAME)
+      || startswith (sec->name, ".gnu.linkonce.p."))
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 
-static bfd_boolean
+static bool
 xtensa_is_proptable_section (asection *sec)
 {
-  if (CONST_STRNEQ (sec->name, XTENSA_PROP_SEC_NAME)
-      || CONST_STRNEQ (sec->name, ".gnu.linkonce.prop."))
-    return TRUE;
+  if (startswith (sec->name, XTENSA_PROP_SEC_NAME)
+      || startswith (sec->name, ".gnu.linkonce.prop."))
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 
@@ -11116,7 +11215,7 @@ internal_reloc_matches (const void *ap,
 
 /* Predicate function used to look up a section in a particular group.  */
 
-static bfd_boolean
+static bool
 match_section_group (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *inf)
 {
   const char *gname = inf;
@@ -11150,9 +11249,9 @@ xtensa_add_names (const char *base, cons
 
 static int linkonce_len = sizeof (".gnu.linkonce.") - 1;
 
-static char *
+char *
 xtensa_property_section_name (asection *sec, const char *base_name,
-			      bfd_boolean separate_sections)
+			      bool separate_sections)
 {
   const char *suffix, *group_name;
   char *prop_sec_name;
@@ -11165,7 +11264,7 @@ xtensa_property_section_name (asection *
 	suffix = 0;
       prop_sec_name = xtensa_add_names (base_name, suffix);
     }
-  else if (strncmp (sec->name, ".gnu.linkonce.", linkonce_len) == 0)
+  else if (startswith (sec->name, ".gnu.linkonce."))
     {
       char *linkonce_kind = 0;
 
@@ -11186,7 +11285,7 @@ xtensa_property_section_name (asection *
       suffix = sec->name + linkonce_len;
       /* For backward compatibility, replace "t." instead of inserting
 	 the new linkonce_kind (but not for "prop" sections).  */
-      if (CONST_STRNEQ (suffix, "t.") && linkonce_kind[1] == '.')
+      if (startswith (suffix, "t.") && linkonce_kind[1] == '.')
 	suffix += 2;
       strcat (prop_sec_name + linkonce_len, suffix);
     }
@@ -11202,7 +11301,7 @@ xtensa_property_section_name (asection *
 
 static asection *
 xtensa_get_separate_property_section (asection *sec, const char *base_name,
-				      bfd_boolean separate_section)
+				      bool separate_section)
 {
   char *prop_sec_name;
   asection *prop_sec;
@@ -11222,48 +11321,16 @@ xtensa_get_property_section (asection *s
   asection *prop_sec;
 
   /* Try individual property section first.  */
-  prop_sec = xtensa_get_separate_property_section (sec, base_name, TRUE);
+  prop_sec = xtensa_get_separate_property_section (sec, base_name, true);
 
   /* Refer to a common property section if individual is not present.  */
   if (!prop_sec)
-    prop_sec = xtensa_get_separate_property_section (sec, base_name, FALSE);
+    prop_sec = xtensa_get_separate_property_section (sec, base_name, false);
 
   return prop_sec;
 }
 
 
-asection *
-xtensa_make_property_section (asection *sec, const char *base_name)
-{
-  char *prop_sec_name;
-  asection *prop_sec;
-
-  /* Check if the section already exists.  */
-  prop_sec_name = xtensa_property_section_name (sec, base_name,
-						elf32xtensa_separate_props);
-  prop_sec = bfd_get_section_by_name_if (sec->owner, prop_sec_name,
-					 match_section_group,
-					 (void *) elf_group_name (sec));
-  /* If not, create it.  */
-  if (! prop_sec)
-    {
-      flagword flags = (SEC_RELOC | SEC_HAS_CONTENTS | SEC_READONLY);
-      flags |= (bfd_section_flags (sec)
-		& (SEC_LINK_ONCE | SEC_LINK_DUPLICATES));
-
-      prop_sec = bfd_make_section_anyway_with_flags
-	(sec->owner, strdup (prop_sec_name), flags);
-      if (! prop_sec)
-	return 0;
-
-      elf_group_name (prop_sec) = elf_group_name (sec);
-    }
-
-  free (prop_sec_name);
-  return prop_sec;
-}
-
-
 flagword
 xtensa_get_property_predef_flags (asection *sec)
 {
@@ -11283,7 +11350,7 @@ xtensa_get_property_predef_flags (asecti
 
 /* Other functions called directly by the linker.  */
 
-bfd_boolean
+bool
 xtensa_callback_required_dependence (bfd *abfd,
 				     asection *sec,
 				     struct bfd_link_info *link_info,
@@ -11293,7 +11360,7 @@ xtensa_callback_required_dependence (bfd
   Elf_Internal_Rela *internal_relocs;
   bfd_byte *contents;
   unsigned i;
-  bfd_boolean ok = TRUE;
+  bool ok = true;
   bfd_size_type sec_size;
 
   sec_size = bfd_get_section_limit (abfd, sec);
@@ -11301,7 +11368,7 @@ xtensa_callback_required_dependence (bfd
   /* ".plt*" sections have no explicit relocations but they contain L32R
      instructions that reference the corresponding ".got.plt*" sections.  */
   if ((sec->flags & SEC_LINKER_CREATED) != 0
-      && CONST_STRNEQ (sec->name, ".plt"))
+      && startswith (sec->name, ".plt"))
     {
       asection *sgotplt;
 
@@ -11342,7 +11409,7 @@ xtensa_callback_required_dependence (bfd
   contents = retrieve_contents (abfd, sec, link_info->keep_memory);
   if (contents == NULL && sec_size != 0)
     {
-      ok = FALSE;
+      ok = false;
       goto error_return;
     }
 
@@ -11441,8 +11508,8 @@ static const struct bfd_elf_special_sect
 #define elf_backend_object_p		     elf_xtensa_object_p
 #define elf_backend_reloc_type_class	     elf_xtensa_reloc_type_class
 #define elf_backend_relocate_section	     elf_xtensa_relocate_section
-#define elf_backend_size_dynamic_sections    elf_xtensa_size_dynamic_sections
-#define elf_backend_always_size_sections     elf_xtensa_always_size_sections
+#define elf_backend_late_size_sections	     elf_xtensa_late_size_sections
+#define elf_backend_early_size_sections	     elf_xtensa_early_size_sections
 #define elf_backend_omit_section_dynsym      _bfd_elf_omit_section_dynsym_all
 #define elf_backend_special_sections	     elf_xtensa_special_sections
 #define elf_backend_action_discarded	     elf_xtensa_action_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.20200303/bfd/elf32-z80.c ./bfd/elf32-z80.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf32-z80.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elf32-z80.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,633 @@
+/* Zilog (e)Z80-specific support for 32-bit ELF
+   Copyright (C) 1999-2025 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 const 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 */
+	 0,			/* size */
+	 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 */
+	 1,			/* size */
+	 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 */
+	 1,			/* size */
+	 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 */
+	 1,			/* size */
+	 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 */
+	 2,			/* size */
+	 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 */
+	 3,			/* size */
+	 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 */
+	 4,			/* size */
+	 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 */
+	 1,			/* size */
+	 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 */
+	 1,			/* size */
+	 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 */
+	 1,			/* size */
+	 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 */
+	 1,			/* size */
+	 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 */
+	 2,			/* size */
+	 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 */
+	 2,			/* size */
+	 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 */
+	 2,			/* size */
+	 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 bool
+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)
+{
+  bool 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 int
+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
+	{
+	  bool 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, R_Z80_NONE,
+					   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 bool
+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 bool
+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 bool
+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.20200303/bfd/elf64-alpha.c ./bfd/elf64-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-alpha.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-alpha.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Alpha specific support for 64-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 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,20 +73,20 @@
 #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 */
 
 /* Set by ld emulation.  Putting this into the link_info or hash structure
    is simply working too hard.  */
 #ifdef USE_SECUREPLT
-bfd_boolean elf64_alpha_use_secureplt = TRUE;
+bool elf64_alpha_use_secureplt = true;
 #else
-bfd_boolean elf64_alpha_use_secureplt = FALSE;
+bool elf64_alpha_use_secureplt = false;
 #endif
 
 #define OLD_PLT_HEADER_SIZE	32
@@ -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
@@ -210,14 +210,15 @@ struct alpha_elf_link_hash_table
 #define alpha_elf_link_hash_traverse(table, func, info)			\
   (elf_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* 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.  */
 
@@ -229,7 +230,7 @@ struct alpha_elf_link_hash_table
    equality wrt PLT entries -- we don't create a PLT entry if a symbol's
    address is ever taken.  */
 
-static inline bfd_boolean
+static inline bool
 alpha_elf_dynamic_symbol_p (struct elf_link_hash_entry *h,
 			    struct bfd_link_info *info)
 {
@@ -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)
@@ -288,8 +289,7 @@ elf64_alpha_bfd_link_hash_table_create (
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      elf64_alpha_link_hash_newfunc,
-				      sizeof (struct alpha_elf_link_hash_entry),
-				      ALPHA_ELF_DATA))
+				      sizeof (struct alpha_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -350,14 +350,13 @@ struct alpha_elf_obj_tdata
    && elf_tdata (bfd) != NULL \
    && elf_object_id (bfd) == ALPHA_ELF_DATA)
 
-static bfd_boolean
+static bool
 elf64_alpha_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct alpha_elf_obj_tdata),
-				  ALPHA_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct alpha_elf_obj_tdata));
 }
 
-static bfd_boolean
+static bool
 elf64_alpha_object_p (bfd *abfd)
 {
   /* Set the right machine number for an Alpha ELF file.  */
@@ -487,79 +486,79 @@ static reloc_howto_type elf64_alpha_howt
 {
   HOWTO (R_ALPHA_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 elf64_alpha_reloc_nil,	/* special_function */
 	 "NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 32 bit reference to a symbol.  */
   HOWTO (R_ALPHA_REFLONG,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "REFLONG",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 64 bit reference to a symbol.  */
   HOWTO (R_ALPHA_REFQUAD,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "REFQUAD",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit GP relative offset.  This is just like REFLONG except
      that when the value is used the value of the gp register will be
      added in.  */
   HOWTO (R_ALPHA_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "GPREL32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Used for an instruction that refers to memory off the GP register.  */
   HOWTO (R_ALPHA_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "ELF_LITERAL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This reloc only appears immediately following an ELF_LITERAL reloc.
      It identifies a use of the literal.  The symbol index is special:
@@ -570,17 +569,17 @@ static reloc_howto_type elf64_alpha_howt
      This does not actually do any relocation.  */
   HOWTO (R_ALPHA_LITUSE,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 elf64_alpha_reloc_nil,	/* special_function */
 	 "LITUSE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Load the gp register.  This is always used for a ldah instruction
      which loads the upper 16 bits of the gp register.  The symbol
@@ -600,92 +599,92 @@ static reloc_howto_type elf64_alpha_howt
      in the GPDISP_HI16 reloc.  */
   HOWTO (R_ALPHA_GPDISP,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 elf64_alpha_reloc_gpdisp, /* special_function */
 	 "GPDISP",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 21 bit branch.  */
   HOWTO (R_ALPHA_BRADDR,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "BRADDR",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x1fffff,		/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A hint for a jump to a register.  */
   HOWTO (R_ALPHA_HINT,		/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 14,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "HINT",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x3fff,		/* src_mask */
 	 0x3fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit PC relative offset.  */
   HOWTO (R_ALPHA_SREL16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "SREL16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 32 bit PC relative offset.  */
   HOWTO (R_ALPHA_SREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "SREL32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 64 bit PC relative offset.  */
   HOWTO (R_ALPHA_SREL64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "SREL64",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Skip 12 - 16; deprecated ECOFF relocs.  */
   SKIP_HOWTO (12),
@@ -697,47 +696,47 @@ static reloc_howto_type elf64_alpha_howt
   /* The high 16 bits of the displacement from GP to the target.  */
   HOWTO (R_ALPHA_GPRELHIGH,
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "GPRELHIGH",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The low 16 bits of the displacement from GP to the target.  */
   HOWTO (R_ALPHA_GPRELLOW,
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "GPRELLOW",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16-bit displacement from the GP to the target.  */
   HOWTO (R_ALPHA_GPREL16,
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "GPREL16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Skip 20 - 23; deprecated ECOFF relocs.  */
   SKIP_HOWTO (20),
@@ -755,272 +754,272 @@ static reloc_howto_type elf64_alpha_howt
 	 0,
 	 0,
 	 0,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 bfd_elf_generic_reloc,
 	 "COPY",
-	 FALSE,
+	 false,
 	 0,
 	 0,
-	 TRUE),
+	 true),
 
   /* A dynamic relocation for a .got entry.  */
   HOWTO (R_ALPHA_GLOB_DAT,
 	 0,
 	 0,
 	 0,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 bfd_elf_generic_reloc,
 	 "GLOB_DAT",
-	 FALSE,
+	 false,
 	 0,
 	 0,
-	 TRUE),
+	 true),
 
   /* A dynamic relocation for a .plt entry.  */
   HOWTO (R_ALPHA_JMP_SLOT,
 	 0,
 	 0,
 	 0,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 bfd_elf_generic_reloc,
 	 "JMP_SLOT",
-	 FALSE,
+	 false,
 	 0,
 	 0,
-	 TRUE),
+	 true),
 
   /* A dynamic relocation to add the base of the DSO to a 64-bit field.  */
   HOWTO (R_ALPHA_RELATIVE,
 	 0,
 	 0,
 	 0,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 bfd_elf_generic_reloc,
 	 "RELATIVE",
-	 FALSE,
+	 false,
 	 0,
 	 0,
-	 TRUE),
+	 true),
 
   /* A 21 bit branch that adjusts for gp loads.  */
   HOWTO (R_ALPHA_BRSGP,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "BRSGP",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x1fffff,		/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Creates a tls_index for the symbol in the got.  */
   HOWTO (R_ALPHA_TLSGD,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "TLSGD",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Creates a tls_index for the (current) module in the got.  */
   HOWTO (R_ALPHA_TLSLDM,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "TLSLDM",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A dynamic relocation for a DTP module entry.  */
   HOWTO (R_ALPHA_DTPMOD64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "DTPMOD64",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Creates a 64-bit offset in the got for the displacement
      from DTP to the target.  */
   HOWTO (R_ALPHA_GOTDTPREL,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "GOTDTPREL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A dynamic relocation for a displacement from DTP to the target.  */
   HOWTO (R_ALPHA_DTPREL64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "DTPREL64",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The high 16 bits of the displacement from DTP to the target.  */
   HOWTO (R_ALPHA_DTPRELHI,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "DTPRELHI",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The low 16 bits of the displacement from DTP to the target.  */
   HOWTO (R_ALPHA_DTPRELLO,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "DTPRELLO",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16-bit displacement from DTP to the target.  */
   HOWTO (R_ALPHA_DTPREL16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "DTPREL16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Creates a 64-bit offset in the got for the displacement
      from TP to the target.  */
   HOWTO (R_ALPHA_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "GOTTPREL",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A dynamic relocation for a displacement from TP to the target.  */
   HOWTO (R_ALPHA_TPREL64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "TPREL64",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The high 16 bits of the displacement from TP to the target.  */
   HOWTO (R_ALPHA_TPRELHI,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "TPRELHI",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The low 16 bits of the displacement from TP to the target.  */
   HOWTO (R_ALPHA_TPRELLO,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "TPRELLO",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16-bit displacement from TP to the target.  */
   HOWTO (R_ALPHA_TPREL16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "TPREL16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 };
 
 /* A mapping from BFD reloc types to Alpha ELF reloc types.  */
@@ -1101,7 +1100,7 @@ elf64_alpha_bfd_reloc_name_lookup (bfd *
 
 /* Given an Alpha ELF reloc type, fill in an arelent structure.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_info_to_howto (bfd *abfd, arelent *cache_ptr,
 			   Elf_Internal_Rela *dst)
 {
@@ -1113,10 +1112,10 @@ elf64_alpha_info_to_howto (bfd *abfd, ar
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf64_alpha_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* These two relocations create a two-word entry in the got.  */
@@ -1136,11 +1135,9 @@ 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
+static bool
 elf64_alpha_section_from_shdr (bfd *abfd,
 			       Elf_Internal_Shdr *hdr,
 			       const char *name,
@@ -1157,41 +1154,41 @@ elf64_alpha_section_from_shdr (bfd *abfd
     {
     case SHT_ALPHA_DEBUG:
       if (strcmp (name, ".mdebug") != 0)
-	return FALSE;
+	return false;
       break;
     default:
-      return FALSE;
+      return false;
     }
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    return false;
   newsect = hdr->bfd_section;
 
   if (hdr->sh_type == SHT_ALPHA_DEBUG)
     {
       if (!bfd_set_section_flags (newsect,
 				  bfd_section_flags (newsect) | SEC_DEBUGGING))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Convert Alpha specific section flags to bfd internal section flags.  */
 
-static bfd_boolean
-elf64_alpha_section_flags (flagword *flags, const Elf_Internal_Shdr *hdr)
+static bool
+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;
+  return true;
 }
 
 /* Set the correct type for an Alpha ELF section.  We do this by the
    section name, which is a hack, but ought to work.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
 {
   register const char *name;
@@ -1215,13 +1212,13 @@ elf64_alpha_fake_sections (bfd *abfd, El
 	   || strcmp (name, ".lit8") == 0)
     hdr->sh_flags |= SHF_ALPHA_GPREL;
 
-  return TRUE;
+  return true;
 }
 
 /* Hook called by the linker routine which adds symbols from an object
    file.  We use it to put .comm items in .sbss, and not .bss.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
 			     Elf_Internal_Sym *sym,
 			     const char **namep ATTRIBUTE_UNUSED,
@@ -1242,21 +1239,22 @@ 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;
+	    return false;
 	}
 
       *secp = scomm;
       *valp = sym->st_size;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create the .got section.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_create_got_section (bfd *abfd,
 				struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
@@ -1264,14 +1262,14 @@ elf64_alpha_create_got_section (bfd *abf
   asection *s;
 
   if (! is_alpha_elf (abfd))
-    return FALSE;
+    return false;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
 	   | SEC_LINKER_CREATED);
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
 
   alpha_elf_tdata (abfd)->got = s;
 
@@ -1280,12 +1278,12 @@ elf64_alpha_create_got_section (bfd *abf
      we've collected each object's info.  */
   alpha_elf_tdata (abfd)->gotobj = abfd;
 
-  return TRUE;
+  return true;
 }
 
 /* Create all the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   asection *s;
@@ -1293,7 +1291,7 @@ elf64_alpha_create_dynamic_sections (bfd
   struct elf_link_hash_entry *h;
 
   if (! is_alpha_elf (abfd))
-    return FALSE;
+    return false;
 
   /* We need to create .plt, .rela.plt, .got, and .rela.got sections.  */
 
@@ -1303,7 +1301,7 @@ elf64_alpha_create_dynamic_sections (bfd
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", flags);
   elf_hash_table (info)->splt = s;
   if (s == NULL || ! bfd_set_section_alignment (s, 4))
-    return FALSE;
+    return false;
 
   /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
      .plt section.  */
@@ -1311,14 +1309,14 @@ elf64_alpha_create_dynamic_sections (bfd
 				   "_PROCEDURE_LINKAGE_TABLE_");
   elf_hash_table (info)->hplt = h;
   if (h == NULL)
-    return FALSE;
+    return false;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
 	   | SEC_LINKER_CREATED | SEC_READONLY);
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.plt", flags);
   elf_hash_table (info)->srelplt = s;
   if (s == NULL || ! bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
 
   if (elf64_alpha_use_secureplt)
     {
@@ -1326,7 +1324,7 @@ elf64_alpha_create_dynamic_sections (bfd
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       elf_hash_table (info)->sgotplt = s;
       if (s == NULL || ! bfd_set_section_alignment (s, 3))
-	return FALSE;
+	return false;
     }
 
   /* We may or may not have created a .got section for this object, but
@@ -1335,7 +1333,7 @@ elf64_alpha_create_dynamic_sections (bfd
   if (alpha_elf_tdata(abfd)->gotobj == NULL)
     {
       if (!elf64_alpha_create_got_section (abfd, info))
-	return FALSE;
+	return false;
     }
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
@@ -1344,7 +1342,7 @@ elf64_alpha_create_dynamic_sections (bfd
   elf_hash_table (info)->srelgot = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the
      dynobj's .got section.  We don't do this in the linker script
@@ -1354,15 +1352,15 @@ elf64_alpha_create_dynamic_sections (bfd
 				   "_GLOBAL_OFFSET_TABLE_");
   elf_hash_table (info)->hgot = h;
   if (h == NULL)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Read ECOFF debugging information from a .mdebug section into a
    ecoff_debug_info structure.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_read_ecoff_info (bfd *abfd, asection *section,
 			     struct ecoff_debug_info *debug)
 {
@@ -1387,18 +1385,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 *);
@@ -1416,45 +1419,23 @@ elf64_alpha_read_ecoff_info (bfd *abfd,
 
   debug->fdr = NULL;
 
-  return TRUE;
+  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);
-  return FALSE;
+  free (ext_hdr);
+  _bfd_ecoff_free_ecoff_debug_info (debug);
+  return false;
 }
 
 /* Alpha ELF local labels start with '$'.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
 {
   return name[0] == '$';
 }
 
-static bfd_boolean
+static bool
 elf64_alpha_find_nearest_line (bfd *abfd, asymbol **symbols,
 			       asection *section, bfd_vma offset,
 			       const char **filename_ptr,
@@ -1470,7 +1451,7 @@ elf64_alpha_find_nearest_line (bfd *abfd
 				     dwarf_debug_sections,
 				     &elf_tdata (abfd)->dwarf2_find_line_info)
       == 1)
-    return TRUE;
+    return true;
 
   msec = bfd_get_section_by_name (abfd, ".mdebug");
   if (msec != NULL)
@@ -1500,13 +1481,13 @@ elf64_alpha_find_nearest_line (bfd *abfd
 	  if (fi == NULL)
 	    {
 	      msec->flags = origflags;
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (!elf64_alpha_read_ecoff_info (abfd, msec, &fi->d))
 	    {
 	      msec->flags = origflags;
-	      return FALSE;
+	      return false;
 	    }
 
 	  /* Swap in the FDR information.  */
@@ -1515,7 +1496,7 @@ elf64_alpha_find_nearest_line (bfd *abfd
 	  if (fi->d.fdr == NULL)
 	    {
 	      msec->flags = origflags;
-	      return FALSE;
+	      return false;
 	    }
 	  external_fdr_size = swap->external_fdr_size;
 	  fdr_ptr = fi->d.fdr;
@@ -1526,13 +1507,6 @@ elf64_alpha_find_nearest_line (bfd *abfd
 	    (*swap->swap_fdr_in) (abfd, fraw_src, fdr_ptr);
 
 	  alpha_elf_tdata (abfd)->find_line_info = fi;
-
-	  /* Note that we don't bother to ever free this information.
-	     find_nearest_line is either called all the time, as in
-	     objdump -l, so the information should be saved, or it is
-	     rarely called, as in ld error messages, so the memory
-	     wasted is unimportant.  Still, it would probably be a
-	     good idea for free_cached_info to throw it away.  */
 	}
 
       if (_bfd_ecoff_locate_line (abfd, section, offset, &fi->d, swap,
@@ -1540,7 +1514,7 @@ elf64_alpha_find_nearest_line (bfd *abfd
 				  line_ptr))
 	{
 	  msec->flags = origflags;
-	  return TRUE;
+	  return true;
 	}
 
       msec->flags = origflags;
@@ -1561,35 +1535,36 @@ struct extsym_info
   struct bfd_link_info *info;
   struct ecoff_debug_info *debug;
   const struct ecoff_debug_swap *swap;
-  bfd_boolean failed;
+  bool failed;
 };
 
-static bfd_boolean
-elf64_alpha_output_extsym (struct alpha_elf_link_hash_entry *h, void * data)
+static bool
+elf64_alpha_output_extsym (struct elf_link_hash_entry *x, void * data)
 {
+  struct alpha_elf_link_hash_entry *h = (struct alpha_elf_link_hash_entry *) x;
   struct extsym_info *einfo = (struct extsym_info *) data;
-  bfd_boolean strip;
+  bool strip;
   asection *sec, *output_section;
 
   if (h->root.indx == -2)
-    strip = FALSE;
+    strip = false;
   else if ((h->root.def_dynamic
 	    || h->root.ref_dynamic
 	    || h->root.root.type == bfd_link_hash_new)
 	   && !h->root.def_regular
 	   && !h->root.ref_regular)
-    strip = TRUE;
+    strip = true;
   else if (einfo->info->strip == strip_all
 	   || (einfo->info->strip == strip_some
 	       && bfd_hash_lookup (einfo->info->keep_hash,
 				   h->root.root.root.string,
-				   FALSE, FALSE) == NULL))
-    strip = TRUE;
+				   false, false) == NULL))
+    strip = true;
   else
-    strip = FALSE;
+    strip = false;
 
   if (strip)
-    return TRUE;
+    return true;
 
   if (h->esym.ifd == -2)
     {
@@ -1669,11 +1644,11 @@ elf64_alpha_output_extsym (struct alpha_
 				      h->root.root.root.string,
 				      &h->esym))
     {
-      einfo->failed = TRUE;
-      return FALSE;
+      einfo->failed = true;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Search for and possibly create a got entry.  */
@@ -1724,7 +1699,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);
@@ -1754,7 +1729,7 @@ get_got_entry (bfd *abfd, struct alpha_e
   return gotent;
 }
 
-static bfd_boolean
+static bool
 elf64_alpha_want_plt (struct alpha_elf_link_hash_entry *ah)
 {
   return ((ah->root.type == STT_FUNC
@@ -1769,7 +1744,7 @@ elf64_alpha_want_plt (struct alpha_elf_l
    as is.  On the other hand, elf-eh-frame.c processing requires .eh_frame
    relocs to be sorted.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_sort_relocs_p (asection *sec)
 {
   return (sec->flags & SEC_CODE) == 0;
@@ -1778,7 +1753,7 @@ elf64_alpha_sort_relocs_p (asection *sec
 
 /* Handle dynamic relocations when doing an Alpha ELF link.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			  asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -1787,19 +1762,9 @@ 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;
+    return true;
 
   BFD_ASSERT (is_alpha_elf (abfd));
 
@@ -1823,7 +1788,7 @@ elf64_alpha_check_relocs (bfd *abfd, str
       unsigned long r_symndx, r_type;
       struct alpha_elf_link_hash_entry *h;
       unsigned int gotent_flags;
-      bfd_boolean maybe_dynamic;
+      bool maybe_dynamic;
       unsigned int need;
       bfd_vma addend;
 
@@ -1847,13 +1812,13 @@ elf64_alpha_check_relocs (bfd *abfd, str
 	 locally or externally defined, as not all of the input files
 	 have yet been processed.  Do something with what we know, as
 	 this may help reduce memory usage and processing time later.  */
-      maybe_dynamic = FALSE;
+      maybe_dynamic = false;
       if (h && ((bfd_link_pic (info)
 		 && (!info->symbolic
 		     || info->unresolved_syms_in_shared_libs == RM_IGNORE))
 		|| !h->root.def_regular
 		|| h->root.root.type == bfd_link_hash_defweak))
-	maybe_dynamic = TRUE;
+	maybe_dynamic = true;
 
       need = 0;
       gotent_flags = 0;
@@ -1898,7 +1863,7 @@ elf64_alpha_check_relocs (bfd *abfd, str
 	     reloc to the STN_UNDEF (0) symbol so that they all match.  */
 	  r_symndx = STN_UNDEF;
 	  h = 0;
-	  maybe_dynamic = FALSE;
+	  maybe_dynamic = false;
 	  /* FALLTHRU */
 
 	case R_ALPHA_TLSGD:
@@ -1929,7 +1894,7 @@ elf64_alpha_check_relocs (bfd *abfd, str
 	  if (alpha_elf_tdata(abfd)->gotobj == NULL)
 	    {
 	      if (!elf64_alpha_create_got_section (abfd, info))
-		return FALSE;
+		return false;
 	    }
 	}
 
@@ -1939,7 +1904,7 @@ elf64_alpha_check_relocs (bfd *abfd, str
 
 	  gotent = get_got_entry (abfd, h, r_type, r_symndx, addend);
 	  if (!gotent)
-	    return FALSE;
+	    return false;
 
 	  if (gotent_flags)
 	    {
@@ -1968,10 +1933,10 @@ elf64_alpha_check_relocs (bfd *abfd, str
 	  if (sreloc == NULL)
 	    {
 	      sreloc = _bfd_elf_make_dynamic_reloc_section
-		(sec, dynobj, 3, abfd, /*rela?*/ TRUE);
+		(sec, dynobj, 3, abfd, /*rela?*/ true);
 
 	      if (sreloc == NULL)
-		return FALSE;
+		return false;
 	    }
 
 	  if (h)
@@ -1990,15 +1955,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;
+		    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,12 +1977,18 @@ 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 a local symbol in "
+		       "read-only section `%pA'\n"),
+		     sec->owner, sec);
+		}
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -2047,7 +2018,7 @@ elf64_alpha_gc_mark_hook (asection *sec,
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_adjust_dynamic_symbol (struct bfd_link_info *info,
 				   struct elf_link_hash_entry *h)
 {
@@ -2065,20 +2036,20 @@ elf64_alpha_adjust_dynamic_symbol (struc
      of STT_FUNC.  */
   if (alpha_elf_dynamic_symbol_p (h, info) && elf64_alpha_want_plt (ah))
     {
-      h->needs_plt = TRUE;
+      h->needs_plt = true;
 
       s = elf_hash_table(info)->splt;
       if (!s && !elf64_alpha_create_dynamic_sections (dynobj, info))
-	return FALSE;
+	return false;
 
       /* We need one plt entry per got subsection.  Delay allocation of
 	 the actual plt entries until size_plt_section, called from
 	 size_dynamic_sections or during relaxation.  */
 
-      return TRUE;
+      return true;
     }
   else
-    h->needs_plt = FALSE;
+    h->needs_plt = false;
 
   /* If this is a weak symbol, and there is a real definition, the
      processor independent code will have arranged for us to see the
@@ -2089,7 +2060,7 @@ elf64_alpha_adjust_dynamic_symbol (struc
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2097,20 +2068,20 @@ elf64_alpha_adjust_dynamic_symbol (struc
      symbols even in regular objects, does not need the hackery of a
      .dynbss section and COPY dynamic relocations.  */
 
-  return TRUE;
+  return true;
 }
 
 /* Record STO_ALPHA_NOPV and STO_ALPHA_STD_GPLOAD.  */
 
 static void
 elf64_alpha_merge_symbol_attribute (struct elf_link_hash_entry *h,
-				    const Elf_Internal_Sym *isym,
-				    bfd_boolean definition,
-				    bfd_boolean dynamic)
+				    unsigned int st_other,
+				    bool definition,
+				    bool dynamic)
 {
   if (!dynamic && definition)
     h->other = ((h->other & ELF_ST_VISIBILITY (-1))
-		| (isym->st_other & ~ELF_ST_VISIBILITY (-1)));
+		| (st_other & ~ELF_ST_VISIBILITY (-1)));
 }
 
 /* Symbol versioning can create new symbols, and make our old symbols
@@ -2196,7 +2167,7 @@ elf64_alpha_copy_indirect_symbol (struct
 
 /* Is it possible to merge two object file's .got tables?  */
 
-static bfd_boolean
+static bool
 elf64_alpha_can_merge_gots (bfd *a, bfd *b)
 {
   int total = alpha_elf_tdata (a)->total_got_size;
@@ -2204,11 +2175,11 @@ elf64_alpha_can_merge_gots (bfd *a, bfd
 
   /* Trivial quick fallout test.  */
   if (total + alpha_elf_tdata (b)->total_got_size <= MAX_GOT_SIZE)
-    return TRUE;
+    return true;
 
   /* By their nature, local .got entries cannot be merged.  */
   if ((total += alpha_elf_tdata (b)->local_got_size) > MAX_GOT_SIZE)
-    return FALSE;
+    return false;
 
   /* Failing the common trivial comparison, we must effectively
      perform the merge.  Not actually performing the merge means that
@@ -2245,13 +2216,13 @@ elf64_alpha_can_merge_gots (bfd *a, bfd
 
 	      total += alpha_got_entry_size (be->reloc_type);
 	      if (total > MAX_GOT_SIZE)
-		return FALSE;
+		return false;
 	    global_found:;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Actually merge two .got tables.  */
@@ -2354,7 +2325,7 @@ elf64_alpha_merge_gots (bfd *a, bfd *b)
 
 /* Calculate the offsets for the got entries.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_calc_got_offsets_for_symbol (struct alpha_elf_link_hash_entry *h,
 					 void * arg ATTRIBUTE_UNUSED)
 {
@@ -2372,7 +2343,7 @@ elf64_alpha_calc_got_offsets_for_symbol
 	*plge += alpha_got_entry_size (gotent->reloc_type);
       }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -2426,16 +2397,16 @@ elf64_alpha_calc_got_offsets (struct bfd
 
 /* Constructs the gots.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_size_got_sections (struct bfd_link_info *info,
-			       bfd_boolean may_merge)
+			       bool may_merge)
 {
   bfd *i, *got_list, *cur_got_obj = NULL;
   struct alpha_elf_link_hash_table * htab;
 
   htab = alpha_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
   got_list = htab->got_list;
 
   /* On the first time through, pretend we have an existing got list
@@ -2463,7 +2434,7 @@ elf64_alpha_size_got_sections (struct bf
 		/* xgettext:c-format */
 		(_("%pB: .got subsegment exceeds 64K (size %d)"),
 		 i, alpha_elf_tdata (this_got)->total_got_size);
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (got_list == NULL)
@@ -2475,14 +2446,14 @@ elf64_alpha_size_got_sections (struct bf
 
       /* Strange degenerate case of no got references.  */
       if (got_list == NULL)
-	return TRUE;
+	return true;
 
       htab->got_list = got_list;
     }
 
   cur_got_obj = got_list;
   if (cur_got_obj == NULL)
-    return FALSE;
+    return false;
 
   if (may_merge)
     {
@@ -2509,20 +2480,20 @@ elf64_alpha_size_got_sections (struct bf
      everything therein.  */
   elf64_alpha_calc_got_offsets (info);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_alpha_size_plt_section_1 (struct alpha_elf_link_hash_entry *h,
 				void * data)
 {
   asection *splt = (asection *) data;
   struct alpha_elf_got_entry *gotent;
-  bfd_boolean saw_one = FALSE;
+  bool saw_one = false;
 
   /* If we didn't need an entry before, we still don't.  */
   if (!h->root.needs_plt)
-    return TRUE;
+    return true;
 
   /* For each LITERAL got entry still in use, allocate a plt entry.  */
   for (gotent = h->got_entries; gotent ; gotent = gotent->next)
@@ -2533,14 +2504,14 @@ elf64_alpha_size_plt_section_1 (struct a
 	  splt->size = PLT_HEADER_SIZE;
 	gotent->plt_offset = splt->size;
 	splt->size += PLT_ENTRY_SIZE;
-	saw_one = TRUE;
+	saw_one = true;
       }
 
   /* If there weren't any, there's no longer a need for the PLT entry.  */
   if (!saw_one)
-    h->root.needs_plt = FALSE;
+    h->root.needs_plt = false;
 
-  return TRUE;
+  return true;
 }
 
 /* Called from relax_section to rebuild the PLT in light of potential changes
@@ -2588,22 +2559,22 @@ elf64_alpha_size_plt_section (struct bfd
     }
 }
 
-static bfd_boolean
-elf64_alpha_always_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				  struct bfd_link_info *info)
+static bool
+elf64_alpha_early_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+				 struct bfd_link_info *info)
 {
   bfd *i;
   struct alpha_elf_link_hash_table * htab;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = alpha_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
-  if (!elf64_alpha_size_got_sections (info, TRUE))
-    return FALSE;
+  if (!elf64_alpha_size_got_sections (info, true))
+    return false;
 
   /* Allocate space for all of the .got subsections.  */
   i = htab->got_list;
@@ -2614,11 +2585,12 @@ elf64_alpha_always_size_sections (bfd *o
 	{
 	  s->contents = (bfd_byte *) bfd_zalloc (i, s->size);
 	  if (s->contents == NULL)
-	    return FALSE;
+	    return false;
+	  s->alloced = 1;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* The number of dynamic relocations required by a static relocation.  */
@@ -2656,11 +2628,11 @@ alpha_dynamic_entries_for_reloc (int r_t
 
 /* Work out the sizes of the dynamic relocation entries.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_calc_dynrel_sizes (struct alpha_elf_link_hash_entry *h,
 			       struct bfd_link_info *info)
 {
-  bfd_boolean dynamic;
+  bool dynamic;
   struct alpha_elf_reloc_entry *relent;
   unsigned long entries;
 
@@ -2688,7 +2660,7 @@ elf64_alpha_calc_dynrel_sizes (struct al
      relocations.  Avoid the loop which may want to add RELATIVE relocs
      based on bfd_link_pic (info).  */
   if (h->root.root.type == bfd_link_hash_undefweak && !dynamic)
-    return TRUE;
+    return true;
 
   for (relent = h->reloc_entries; relent; relent = relent->next)
     {
@@ -2697,31 +2669,38 @@ 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);
+	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Subroutine of elf64_alpha_size_rela_got_section for doing the
    global symbols.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_size_rela_got_1 (struct alpha_elf_link_hash_entry *h,
 			     struct bfd_link_info *info)
 {
-  bfd_boolean dynamic;
+  bool dynamic;
   struct alpha_elf_got_entry *gotent;
   unsigned long entries;
 
   /* If we're using a plt for this symbol, then all of its relocations
      for its got entries go into .rela.plt.  */
   if (h->root.needs_plt)
-    return TRUE;
+    return true;
 
   /* If the symbol is dynamic, we'll need all the relocations in their
      natural form.  If this is a shared object, and it has been forced
@@ -2732,7 +2711,7 @@ elf64_alpha_size_rela_got_1 (struct alph
      relocations.  Avoid the loop which may want to add RELATIVE relocs
      based on bfd_link_pic (info).  */
   if (h->root.root.type == bfd_link_hash_undefweak && !dynamic)
-    return TRUE;
+    return true;
 
   entries = 0;
   for (gotent = h->got_entries; gotent ; gotent = gotent->next)
@@ -2748,7 +2727,7 @@ elf64_alpha_size_rela_got_1 (struct alph
       srel->size += sizeof (Elf64_External_Rela) * entries;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the sizes of the dynamic relocation sections.  */
@@ -2808,21 +2787,22 @@ elf64_alpha_size_rela_got_section (struc
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf64_alpha_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				   struct bfd_link_info *info)
+static bool
+elf64_alpha_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+				struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s;
-  bfd_boolean relplt, relocs;
+  bool relplt, relocs;
   struct alpha_elf_link_hash_table * htab;
 
   htab = alpha_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = elf_hash_table(info)->dynobj;
-  BFD_ASSERT(dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -2833,6 +2813,7 @@ elf64_alpha_size_dynamic_sections (bfd *
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
 
       /* Now that we've seen all of the input files, we can decide which
@@ -2850,8 +2831,8 @@ elf64_alpha_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.  */
-  relplt = FALSE;
-  relocs = FALSE;
+  relplt = false;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -2863,21 +2844,21 @@ elf64_alpha_size_dynamic_sections (bfd *
 	 of the dynobj section names depend upon the input files.  */
       name = bfd_section_name (s);
 
-      if (CONST_STRNEQ (name, ".rela"))
+      if (startswith (name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
 	      if (strcmp (name, ".rela.plt") == 0)
-		relplt = TRUE;
+		relplt = true;
 	      else
-		relocs = TRUE;
+		relocs = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
 	      s->reloc_count = 0;
 	    }
 	}
-      else if (! CONST_STRNEQ (name, ".got")
+      else if (! startswith (name, ".got")
 	       && strcmp (name, ".plt") != 0
 	       && strcmp (name, ".dynbss") != 0)
 	{
@@ -2894,7 +2875,7 @@ elf64_alpha_size_dynamic_sections (bfd *
 	     linker does that before adjust_dynamic_symbol is called, and
 	     it is that function which decides whether anything needs to
 	     go into these sections.  */
-	  if (!CONST_STRNEQ (name, ".got"))
+	  if (!startswith (name, ".got"))
 	    s->flags |= SEC_EXCLUDE;
 	}
       else if ((s->flags & SEC_HAS_CONTENTS) != 0)
@@ -2902,7 +2883,8 @@ elf64_alpha_size_dynamic_sections (bfd *
 	  /* Allocate memory for the section contents.  */
 	  s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
 	  if (s->contents == NULL)
-	    return FALSE;
+	    return false;
+	  s->alloced = 1;
 	}
     }
 
@@ -2916,42 +2898,18 @@ 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 (info->flags & DF_TEXTREL)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
+      if (!_bfd_elf_add_dynamic_tags (output_bfd, info,
+				      relocs || relplt))
+	return false;
+
+      if (relplt
+	  && elf64_alpha_use_secureplt
+	  && !add_dynamic_entry (DT_ALPHA_PLTRO, 1))
+	return false;
     }
 #undef add_dynamic_entry
 
-  return TRUE;
+  return true;
 }
 
 /* These functions do relaxation for Alpha ELF.
@@ -2981,8 +2939,8 @@ struct alpha_relax_info
   struct alpha_elf_link_hash_entry *h;
   struct alpha_elf_got_entry **first_gotent;
   struct alpha_elf_got_entry *gotent;
-  bfd_boolean changed_contents;
-  bfd_boolean changed_relocs;
+  bool changed_contents;
+  bool changed_relocs;
   unsigned char other;
 };
 
@@ -3001,7 +2959,7 @@ elf64_alpha_find_reloc_at_ofs (Elf_Inter
   return NULL;
 }
 
-static bfd_boolean
+static bool
 elf64_alpha_relax_got_load (struct alpha_relax_info *info, bfd_vma symval,
 			    Elf_Internal_Rela *irel, unsigned long r_type)
 {
@@ -3019,17 +2977,18 @@ elf64_alpha_relax_got_load (struct alpha
 	(_("%pB: %pA+%#" PRIx64 ": warning: "
 	   "%s relocation against unexpected insn"),
 	 info->abfd, info->sec, (uint64_t) irel->r_offset, howto->name);
-      return TRUE;
+      return true;
     }
 
   /* Can't relax dynamic symbols.  */
-  if (alpha_elf_dynamic_symbol_p (&info->h->root, info->link_info))
-    return TRUE;
+  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.  */
   if (r_type == R_ALPHA_GOTTPREL
       && bfd_link_dll (info->link_info))
-    return TRUE;
+    return true;
 
   if (r_type == R_ALPHA_LITERAL)
     {
@@ -3048,7 +3007,7 @@ elf64_alpha_relax_got_load (struct alpha
 	{
 	  /* We may only create GPREL relocs during the second pass.  */
 	  if (info->link_info->relax_pass == 0)
-	    return TRUE;
+	    return true;
 
 	  disp = symval - info->gp;
 	  insn = (OP_LDA << 26) | (insn & 0x03ff0000);
@@ -3076,15 +3035,15 @@ elf64_alpha_relax_got_load (struct alpha
 	  break;
 	default:
 	  BFD_ASSERT (0);
-	  return FALSE;
+	  return false;
 	}
     }
 
   if (disp < -0x8000 || disp >= 0x8000)
-    return TRUE;
+    return true;
 
   bfd_put_32 (info->abfd, (bfd_vma) insn, info->contents + irel->r_offset);
-  info->changed_contents = TRUE;
+  info->changed_contents = true;
 
   /* Reduce the use count on this got entry by one, possibly
      eliminating it.  */
@@ -3098,7 +3057,7 @@ elf64_alpha_relax_got_load (struct alpha
 
   /* Smash the existing GOT relocation for its 16-bit immediate pair.  */
   irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info), r_type);
-  info->changed_relocs = TRUE;
+  info->changed_relocs = true;
 
   /* ??? Search forward through this basic block looking for insns
      that use the target register.  Stop after an insn modifying the
@@ -3113,7 +3072,7 @@ elf64_alpha_relax_got_load (struct alpha
      This would mean that we'd have to _add_ relocations, the pain of
      which gives one pause.  */
 
-  return TRUE;
+  return true;
 }
 
 static bfd_vma
@@ -3171,12 +3130,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
@@ -3188,19 +3145,19 @@ elf64_alpha_relax_opt_call (struct alpha
   return symval + 8;
 }
 
-static bfd_boolean
+static bool
 elf64_alpha_relax_with_lituse (struct alpha_relax_info *info,
 			       bfd_vma symval, Elf_Internal_Rela *irel)
 {
   Elf_Internal_Rela *urel, *erel, *irelend = info->relend;
   int flags;
   bfd_signed_vma disp;
-  bfd_boolean fits16;
-  bfd_boolean fits32;
-  bfd_boolean lit_reused = FALSE;
-  bfd_boolean all_optimized = TRUE;
-  bfd_boolean changed_contents;
-  bfd_boolean changed_relocs;
+  bool fits16;
+  bool fits32;
+  bool lit_reused = false;
+  bool all_optimized = true;
+  bool changed_contents;
+  bool changed_relocs;
   bfd_byte *contents = info->contents;
   bfd *abfd = info->abfd;
   bfd_vma sec_output_vma;
@@ -3215,12 +3172,13 @@ elf64_alpha_relax_with_lituse (struct al
 	(_("%pB: %pA+%#" PRIx64 ": warning: "
 	   "%s relocation against unexpected insn"),
 	 abfd, info->sec, (uint64_t) irel->r_offset, "LITERAL");
-      return TRUE;
+      return true;
     }
 
   /* Can't relax dynamic symbols.  */
-  if (alpha_elf_dynamic_symbol_p (&info->h->root, info->link_info))
-    return TRUE;
+  if (info->h != NULL
+      && alpha_elf_dynamic_symbol_p (&info->h->root, info->link_info))
+    return true;
 
   changed_contents = info->changed_contents;
   changed_relocs = info->changed_relocs;
@@ -3255,14 +3213,14 @@ elf64_alpha_relax_with_lituse (struct al
 	default:
 	  /* This type is really just a placeholder to note that all
 	     uses cannot be optimized, but to still allow some.  */
-	  all_optimized = FALSE;
+	  all_optimized = false;
 	  break;
 
 	case LITUSE_ALPHA_BASE:
 	  /* We may only create GPREL relocs during the second pass.  */
 	  if (relax_pass == 0)
 	    {
-	      all_optimized = FALSE;
+	      all_optimized = false;
 	      break;
 	    }
 
@@ -3284,7 +3242,7 @@ elf64_alpha_relax_with_lituse (struct al
 		 register from the literal insn.  Leave the offset alone.  */
 	      insn = (insn & 0xffe0ffff) | (lit_insn & 0x001f0000);
 	      bfd_put_32 (abfd, (bfd_vma) insn, contents + urel_r_offset);
-	      changed_contents = TRUE;
+	      changed_contents = true;
 
 	      nrel = *urel;
 	      nrel.r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
@@ -3296,7 +3254,7 @@ elf64_alpha_relax_with_lituse (struct al
 	      if (urel < --erel)
 		*urel-- = *erel;
 	      *erel = nrel;
-	      changed_relocs = TRUE;
+	      changed_relocs = true;
 	    }
 
 	  /* If all mem+byte, we can optimize 32-bit mem displacements.  */
@@ -3308,18 +3266,18 @@ elf64_alpha_relax_with_lituse (struct al
 					   R_ALPHA_GPRELHIGH);
 	      lit_insn = (OP_LDAH << 26) | (lit_insn & 0x03ff0000);
 	      bfd_put_32 (abfd, (bfd_vma) lit_insn, contents + irel->r_offset);
-	      lit_reused = TRUE;
-	      changed_contents = TRUE;
+	      lit_reused = true;
+	      changed_contents = true;
 
 	      /* Since all relocs must be optimized, don't bother swapping
 		 this relocation to the end.  */
 	      urel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
 					   R_ALPHA_GPRELLOW);
 	      urel->r_addend = irel->r_addend;
-	      changed_relocs = TRUE;
+	      changed_relocs = true;
 	    }
 	  else
-	    all_optimized = FALSE;
+	    all_optimized = false;
 	  break;
 
 	case LITUSE_ALPHA_BYTOFF:
@@ -3331,7 +3289,7 @@ elf64_alpha_relax_with_lituse (struct al
 	  insn &= ~ (unsigned) 0x001ff000;
 	  insn |= ((symval & 7) << 13) | 0x1000;
 	  bfd_put_32 (abfd, (bfd_vma) insn, contents + urel_r_offset);
-	  changed_contents = TRUE;
+	  changed_contents = true;
 
 	  nrel = *urel;
 	  nrel.r_info = ELF64_R_INFO (0, R_ALPHA_NONE);
@@ -3342,7 +3300,7 @@ elf64_alpha_relax_with_lituse (struct al
 	  if (urel < --erel)
 	    *urel-- = *erel;
 	  *erel = nrel;
-	  changed_relocs = TRUE;
+	  changed_relocs = true;
 	  break;
 
 	case LITUSE_ALPHA_JSR:
@@ -3361,7 +3319,7 @@ elf64_alpha_relax_with_lituse (struct al
 		insn |= 31 << 16;
 		bfd_put_32 (abfd, (bfd_vma) insn, contents + urel_r_offset);
 
-		changed_contents = TRUE;
+		changed_contents = true;
 		break;
 	      }
 
@@ -3380,7 +3338,7 @@ elf64_alpha_relax_with_lituse (struct al
 		else
 		  insn = (OP_BR << 26) | (insn & 0x03e00000);
 		bfd_put_32 (abfd, (bfd_vma) insn, contents + urel_r_offset);
-		changed_contents = TRUE;
+		changed_contents = true;
 
 		nrel = *urel;
 		nrel.r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
@@ -3390,7 +3348,7 @@ elf64_alpha_relax_with_lituse (struct al
 		if (optdest)
 		  nrel.r_addend += optdest - symval;
 		else
-		  all_optimized = FALSE;
+		  all_optimized = false;
 
 		/* Kill any HINT reloc that might exist for this insn.  */
 		xrel = (elf64_alpha_find_reloc_at_ofs
@@ -3405,10 +3363,10 @@ elf64_alpha_relax_with_lituse (struct al
 		  *urel-- = *erel;
 		*erel = nrel;
 
-		info->changed_relocs = TRUE;
+		info->changed_relocs = true;
 	      }
 	    else
-	      all_optimized = FALSE;
+	      all_optimized = false;
 
 	    /* Even if the target is not in range for a direct branch,
 	       if we share a GP, we can eliminate the gp reload.  */
@@ -3436,8 +3394,8 @@ elf64_alpha_relax_with_lituse (struct al
 			bfd_put_32 (abfd, (bfd_vma) INSN_UNOP, p_lda);
 
 			gpdisp->r_info = ELF64_R_INFO (0, R_ALPHA_NONE);
-			changed_contents = TRUE;
-			changed_relocs = TRUE;
+			changed_contents = true;
+			changed_relocs = true;
 		      }
 		  }
 	      }
@@ -3468,10 +3426,10 @@ elf64_alpha_relax_with_lituse (struct al
       if (!lit_reused)
 	{
 	  irel->r_info = ELF64_R_INFO (0, R_ALPHA_NONE);
-	  changed_relocs = TRUE;
+	  changed_relocs = true;
 
 	  bfd_put_32 (abfd, (bfd_vma) INSN_UNOP, contents + irel->r_offset);
-	  changed_contents = TRUE;
+	  changed_contents = true;
 	}
     }
 
@@ -3479,21 +3437,22 @@ elf64_alpha_relax_with_lituse (struct al
   info->changed_relocs = changed_relocs;
 
   if (all_optimized || relax_pass == 0)
-    return TRUE;
+    return true;
   return elf64_alpha_relax_got_load (info, symval, irel, R_ALPHA_LITERAL);
 }
 
-static bfd_boolean
+static bool
 elf64_alpha_relax_tls_get_addr (struct alpha_relax_info *info, bfd_vma symval,
-				Elf_Internal_Rela *irel, bfd_boolean is_gd)
+				Elf_Internal_Rela *irel, bool is_gd)
 {
   bfd_byte *pos[5];
   unsigned int insn, tlsgd_reg;
   Elf_Internal_Rela *gpdisp, *hint;
-  bfd_boolean dynamic, use_gottprel;
+  bool 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.  */
@@ -3508,23 +3467,23 @@ elf64_alpha_relax_tls_get_addr (struct a
 
   /* Otherwise we must be building an executable to do anything.  */
   else if (bfd_link_pic (info->link_info))
-    return TRUE;
+    return true;
 
   /* The TLSGD/TLSLDM relocation must be followed by a LITERAL and
      the matching LITUSE_TLS relocations.  */
   if (irel + 2 >= info->relend)
-    return TRUE;
+    return true;
   if (ELF64_R_TYPE (irel[1].r_info) != R_ALPHA_LITERAL
       || ELF64_R_TYPE (irel[2].r_info) != R_ALPHA_LITUSE
       || irel[2].r_addend != (is_gd ? LITUSE_ALPHA_TLSGD : LITUSE_ALPHA_TLSLDM))
-    return TRUE;
+    return true;
 
   /* There must be a GPDISP relocation positioned immediately after the
      LITUSE relocation.  */
   gpdisp = elf64_alpha_find_reloc_at_ofs (info->relocs, info->relend,
 					  irel[2].r_offset + 4, R_ALPHA_GPDISP);
   if (!gpdisp)
-    return TRUE;
+    return true;
 
   pos[0] = info->contents + irel[0].r_offset;
   pos[1] = info->contents + irel[1].r_offset;
@@ -3549,7 +3508,7 @@ elf64_alpha_relax_tls_get_addr (struct a
       pos[1] = tmp;
     }
   if (pos[1] >= pos[2] || pos[2] >= pos[3])
-    return TRUE;
+    return true;
 
   /* Reduce the use count on the LITERAL relocation.  Do this before we
      smash the symndx when we adjust the relocations below.  */
@@ -3603,7 +3562,7 @@ elf64_alpha_relax_tls_get_addr (struct a
 
      as appropriate.  */
 
-  use_gottprel = FALSE;
+  use_gottprel = false;
   new_symndx = is_gd ? ELF64_R_SYM (irel->r_info) : STN_UNDEF;
 
   /* Some compilers warn about a Boolean-looking expression being
@@ -3649,7 +3608,7 @@ elf64_alpha_relax_tls_get_addr (struct a
       /* FALLTHRU */
 
     default:
-      use_gottprel = TRUE;
+      use_gottprel = true;
 
       insn = (OP_LDQ << 26) | (tlsgd_reg << 21) | (29 << 16);
       bfd_put_32 (info->abfd, (bfd_vma) insn, pos[0]);
@@ -3676,8 +3635,8 @@ elf64_alpha_relax_tls_get_addr (struct a
   if (hint)
     hint->r_info = ELF64_R_INFO (0, R_ALPHA_NONE);
 
-  info->changed_contents = TRUE;
-  info->changed_relocs = TRUE;
+  info->changed_contents = true;
+  info->changed_relocs = true;
 
   /* Reduce the use count on the TLSGD/TLSLDM relocation.  */
   if (--info->gotent->use_count == 0)
@@ -3711,7 +3670,7 @@ elf64_alpha_relax_tls_get_addr (struct a
 	      tprel_gotent = (struct alpha_elf_got_entry *)
 		bfd_alloc (info->abfd, sizeof (struct alpha_elf_got_entry));
 	      if (!tprel_gotent)
-		return FALSE;
+		return false;
 
 	      tprel_gotent->next = *info->first_gotent;
 	      *info->first_gotent = tprel_gotent;
@@ -3728,12 +3687,12 @@ elf64_alpha_relax_tls_get_addr (struct a
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_alpha_relax_section (bfd *abfd, asection *sec,
-			   struct bfd_link_info *link_info, bfd_boolean *again)
+			   struct bfd_link_info *link_info, bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -3746,16 +3705,16 @@ elf64_alpha_relax_section (bfd *abfd, as
 
   htab = alpha_elf_hash_table (link_info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* There's nothing to change, yet.  */
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (link_info)
-      || ((sec->flags & (SEC_CODE | SEC_RELOC | SEC_ALLOC))
-	  != (SEC_CODE | SEC_RELOC | SEC_ALLOC))
+      || ((sec->flags & (SEC_CODE | SEC_RELOC | SEC_ALLOC | SEC_HAS_CONTENTS))
+	  != (SEC_CODE | SEC_RELOC | SEC_ALLOC | SEC_HAS_CONTENTS))
       || sec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (is_alpha_elf (abfd));
   relax_pass = link_info->relax_pass;
@@ -3787,7 +3746,7 @@ elf64_alpha_relax_section (bfd *abfd, as
 		     (abfd, sec, NULL, (Elf_Internal_Rela *) NULL,
 		      link_info->keep_memory));
   if (internal_relocs == NULL)
-    return FALSE;
+    return false;
 
   memset(&info, 0, sizeof (info));
   info.abfd = abfd;
@@ -4019,19 +3978,16 @@ elf64_alpha_relax_section (bfd *abfd, as
 
   *again = info.changed_contents || info.changed_relocs;
 
-  return TRUE;
+  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;
+  return false;
 }
 
 /* Emit a dynamic relocation for (DYNINDX, RTYPE, ADDEND) at (SEC, OFFSET)
@@ -4068,7 +4024,7 @@ elf64_alpha_emit_dynrel (bfd *abfd, stru
    symbol, in which case we have to adjust according to where the section
    symbol winds up in the output section.  */
 
-static bfd_boolean
+static int
 elf64_alpha_relocate_section_r (bfd *output_bfd ATTRIBUTE_UNUSED,
 				struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				bfd *input_bfd, asection *input_section,
@@ -4081,7 +4037,7 @@ elf64_alpha_relocate_section_r (bfd *out
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
   struct elf_link_hash_entry **sym_hashes;
-  bfd_boolean ret_val = TRUE;
+  bool ret_val = true;
 
   symtab_hdr_sh_info = elf_symtab_hdr (input_bfd).sh_info;
   sym_hashes = elf_sym_hashes (input_bfd);
@@ -4102,7 +4058,7 @@ elf64_alpha_relocate_section_r (bfd *out
 	    (_("%pB: unsupported relocation type %#x"),
 	     input_bfd, (int) r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret_val = FALSE;
+	  ret_val = false;
 	  continue;
 	}
 
@@ -4137,7 +4093,7 @@ elf64_alpha_relocate_section_r (bfd *out
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend,
+					 rel, 1, relend, R_ALPHA_NONE,
 					 elf64_alpha_howto_table + r_type, 0,
 					 contents);
 
@@ -4150,7 +4106,7 @@ elf64_alpha_relocate_section_r (bfd *out
 
 /* Relocate an Alpha ELF section.  */
 
-static bfd_boolean
+static int
 elf64_alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 			      bfd *input_bfd, asection *input_section,
 			      bfd_byte *contents, Elf_Internal_Rela *relocs,
@@ -4164,7 +4120,7 @@ elf64_alpha_relocate_section (bfd *outpu
   bfd *dynobj, *gotobj;
   bfd_vma gp, tp_base, dtp_base;
   struct alpha_elf_got_entry **local_got_entries;
-  bfd_boolean ret_val;
+  bool ret_val;
 
   BFD_ASSERT (is_alpha_elf (input_bfd));
 
@@ -4176,7 +4132,7 @@ elf64_alpha_relocate_section (bfd *outpu
 
   /* This is a final link.  */
 
-  ret_val = TRUE;
+  ret_val = true;
 
   symtab_hdr = &elf_symtab_hdr (input_bfd);
 
@@ -4237,9 +4193,9 @@ elf64_alpha_relocate_section (bfd *outpu
       asection *sec = NULL;
       bfd_vma value;
       bfd_vma addend;
-      bfd_boolean dynamic_symbol_p;
-      bfd_boolean unresolved_reloc = FALSE;
-      bfd_boolean undef_weak_ref = FALSE;
+      bool dynamic_symbol_p;
+      bool unresolved_reloc = false;
+      bool undef_weak_ref = false;
       unsigned long r_type;
 
       r_type = ELF64_R_TYPE(rel->r_info);
@@ -4250,7 +4206,7 @@ elf64_alpha_relocate_section (bfd *outpu
 	    (_("%pB: unsupported relocation type %#x"),
 	     input_bfd, (int) r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret_val = FALSE;
+	  ret_val = false;
 	  continue;
 	}
 
@@ -4316,11 +4272,11 @@ elf64_alpha_relocate_section (bfd *outpu
 		}
 	    }
 
-	  dynamic_symbol_p = FALSE;
+	  dynamic_symbol_p = false;
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 	  struct elf_link_hash_entry *hh;
 	  struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
 
@@ -4335,7 +4291,7 @@ elf64_alpha_relocate_section (bfd *outpu
 	  if (value == 0
 	      && ! unresolved_reloc
 	      && hh->root.type == bfd_link_hash_undefweak)
-	    undef_weak_ref = TRUE;
+	    undef_weak_ref = true;
 
 	  h = (struct alpha_elf_link_hash_entry *) hh;
 	  dynamic_symbol_p = alpha_elf_dynamic_symbol_p (&h->root, info);
@@ -4344,7 +4300,8 @@ elf64_alpha_relocate_section (bfd *outpu
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_ALPHA_NONE,
+					 howto, 0, contents);
 
       addend = rel->r_addend;
       value += addend;
@@ -4415,7 +4372,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		/* xgettext:c-format */
 		(_("%pB: gp-relative relocation against dynamic symbol %s"),
 		 input_bfd, h->root.root.root.string);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  BFD_ASSERT(gp != 0);
 	  value -= gp;
@@ -4428,7 +4385,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		/* xgettext:c-format */
 		(_("%pB: gp-relative relocation against dynamic symbol %s"),
 		 input_bfd, h->root.root.root.string);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  BFD_ASSERT(gp != 0);
 	  value -= gp;
@@ -4455,7 +4412,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		/* xgettext:c-format */
 		(_("%pB: pc-relative relocation against dynamic symbol %s"),
 		 input_bfd, h->root.root.root.string);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  /* The regular PC-relative stuff measures from the start of
 	     the instruction rather than the end.  */
@@ -4484,7 +4441,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		  /* xgettext:c-format */
 		  (_("%pB: change in gp: BRSGP %s"),
 		   input_bfd, h->root.root.root.string);
-		ret_val = FALSE;
+		ret_val = false;
 	      }
 
 	    /* The symbol should be marked either NOPV or STD_GPLOAD.  */
@@ -4515,7 +4472,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		  /* xgettext:c-format */
 		  (_("%pB: !samegp reloc against symbol without .prologue: %s"),
 		   input_bfd, name);
-		ret_val = FALSE;
+		ret_val = false;
 		break;
 	      }
 
@@ -4574,7 +4531,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		      (_("%pB: unhandled dynamic relocation against %s"),
 		       input_bfd,
 		       h->root.root.root.string);
-		    ret_val = FALSE;
+		    ret_val = false;
 		  }
 		dynindx = 0;
 		dyntype = R_ALPHA_RELATIVE;
@@ -4599,7 +4556,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		/* xgettext:c-format */
 		(_("%pB: pc-relative relocation against dynamic symbol %s"),
 		 input_bfd, h->root.root.root.string);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  else if (bfd_link_pic (info)
 		   && undef_weak_ref)
@@ -4608,7 +4565,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		/* xgettext:c-format */
 		(_("%pB: pc-relative relocation against undefined weak symbol %s"),
 		 input_bfd, h->root.root.root.string);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 
 
@@ -4674,7 +4631,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		/* xgettext:c-format */
 		(_("%pB: dtp-relative relocation against dynamic symbol %s"),
 		 input_bfd, h->root.root.root.string);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL);
 	  value -= dtp_base;
@@ -4691,7 +4648,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		/* xgettext:c-format */
 		(_("%pB: TLS local exec code cannot be linked into shared objects"),
 		input_bfd);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  else if (dynamic_symbol_p)
 	    {
@@ -4699,7 +4656,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		/* xgettext:c-format */
 		(_("%pB: tp-relative relocation against dynamic symbol %s"),
 		 input_bfd, h->root.root.root.string);
-	      ret_val = FALSE;
+	      ret_val = false;
 	    }
 	  BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL);
 	  value -= tp_base;
@@ -4778,7 +4735,7 @@ elf64_alpha_relocate_section (bfd *outpu
 		name = (bfd_elf_string_from_elf_section
 			(input_bfd, symtab_hdr->sh_link, sym->st_name));
 		if (name == NULL)
-		  return FALSE;
+		  return false;
 		if (*name == '\0')
 		  name = bfd_section_name (sec);
 	      }
@@ -4800,7 +4757,7 @@ elf64_alpha_relocate_section (bfd *outpu
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_finish_dynamic_symbol (bfd *output_bfd, struct bfd_link_info *info,
 				   struct elf_link_hash_entry *h,
 				   Elf_Internal_Sym *sym)
@@ -4943,12 +4900,12 @@ elf64_alpha_finish_dynamic_symbol (bfd *
       || h == elf_hash_table (info)->hplt)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_finish_dynamic_sections (bfd *output_bfd,
 				     struct bfd_link_info *info)
 {
@@ -5065,14 +5022,14 @@ elf64_alpha_finish_dynamic_sections (bfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We need to use a special link routine to handle the .mdebug section.
    We need to merge all instances of these sections together, not write
    them all out sequentially.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   asection *o;
@@ -5087,7 +5044,7 @@ elf64_alpha_final_link (bfd *abfd, struc
 
   htab = alpha_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Go through the sections and collect the mdebug information.  */
   mdebug_sec = NULL;
@@ -5132,7 +5089,7 @@ elf64_alpha_final_link (bfd *abfd, struc
 
 	  mdebug_handle = bfd_ecoff_debug_init (abfd, &debug, swap, info);
 	  if (mdebug_handle == NULL)
-	    return FALSE;
+	    return false;
 
 	  if (1)
 	    {
@@ -5171,7 +5128,7 @@ elf64_alpha_final_link (bfd *abfd, struc
 
 		  if (! bfd_ecoff_debug_one_external (abfd, &debug, swap,
 						      name[i], &esym))
-		    return FALSE;
+		    return false;
 		}
 	    }
 
@@ -5212,12 +5169,12 @@ elf64_alpha_final_link (bfd *abfd, struc
 		 ecoff_debug_info structure, so we do that now.  */
 	      if (!elf64_alpha_read_ecoff_info (input_bfd, input_section,
 						&input_debug))
-		return FALSE;
+		return false;
 
 	      if (! (bfd_ecoff_debug_accumulate
 		     (mdebug_handle, abfd, &debug, swap, input_bfd,
 		      &input_debug, input_swap, info)))
-		return FALSE;
+		return false;
 
 	      /* Loop through the external symbols.  For each one with
 		 interesting information, try to find the symbol in
@@ -5242,7 +5199,7 @@ elf64_alpha_final_link (bfd *abfd, struc
 		    continue;
 
 		  name = input_debug.ssext + ext.asym.iss;
-		  h = alpha_elf_link_hash_lookup (htab, name, FALSE, FALSE, TRUE);
+		  h = alpha_elf_link_hash_lookup (htab, name, false, false, true);
 		  if (h == NULL || h->esym.ifd != -2)
 		    continue;
 
@@ -5279,12 +5236,12 @@ elf64_alpha_final_link (bfd *abfd, struc
 	  einfo.info = info;
 	  einfo.debug = &debug;
 	  einfo.swap = swap;
-	  einfo.failed = FALSE;
+	  einfo.failed = false;
 	  elf_link_hash_traverse (elf_hash_table (info),
 				  elf64_alpha_output_extsym,
 				  &einfo);
 	  if (einfo.failed)
-	    return FALSE;
+	    return false;
 
 	  /* Set the size of the .mdebug section.  */
 	  o->size = bfd_ecoff_debug_size (abfd, &debug, swap);
@@ -5299,7 +5256,7 @@ elf64_alpha_final_link (bfd *abfd, struc
 
   /* Invoke the regular ELF backend linker to do all the work.  */
   if (! bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
   /* Now write out the computed sections.  */
 
@@ -5321,7 +5278,7 @@ elf64_alpha_final_link (bfd *abfd, struc
 					sgot->contents,
 					(file_ptr) sgot->output_offset,
 					sgot->size))
-	  return FALSE;
+	  return false;
       }
   }
 
@@ -5331,12 +5288,12 @@ elf64_alpha_final_link (bfd *abfd, struc
       if (! bfd_ecoff_write_accumulated_debug (mdebug_handle, abfd, &debug,
 					       swap, info,
 					       mdebug_sec->filepos))
-	return FALSE;
+	return false;
 
       bfd_ecoff_debug_free (mdebug_handle, abfd, &debug, swap, info);
     }
 
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -5494,10 +5451,10 @@ static const struct elf_size_info alpha_
   elf64_alpha_merge_symbol_attribute
 #define elf_backend_copy_indirect_symbol \
   elf64_alpha_copy_indirect_symbol
-#define elf_backend_always_size_sections \
-  elf64_alpha_always_size_sections
-#define elf_backend_size_dynamic_sections \
-  elf64_alpha_size_dynamic_sections
+#define elf_backend_early_size_sections \
+  elf64_alpha_early_size_sections
+#define elf_backend_late_size_sections \
+  elf64_alpha_late_size_sections
 #define elf_backend_omit_section_dynsym \
   _bfd_elf_omit_section_dynsym_all
 #define elf_backend_relocate_section \
@@ -5523,6 +5480,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
@@ -5545,13 +5505,13 @@ static const struct elf_size_info alpha_
    "FreeBSD" label in the ELF header.  So we put this label on all
    executables and (for simplicity) also all other object files.  */
 
-static bfd_boolean
+static bool
 elf64_alpha_fbsd_init_file_header (bfd *abfd, struct bfd_link_info *info)
 {
   Elf_Internal_Ehdr * i_ehdrp;	/* ELF file header, internal form.  */
 
   if (!_bfd_elf_init_file_header (abfd, info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
 
@@ -5561,7 +5521,7 @@ elf64_alpha_fbsd_init_file_header (bfd *
   /* The ABI label supported by FreeBSD <= 4.0 is quite nonstandard.  */
   memcpy (&i_ehdrp->e_ident[EI_ABIVERSION], "FreeBSD", 8);
 #endif
-  return TRUE;
+  return true;
 }
 
 #undef elf_backend_init_file_header
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-amdgcn.c ./bfd/elf64-amdgcn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-amdgcn.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elf64-amdgcn.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,80 @@
+/* AMDGCN ELF support for BFD.
+
+   Copyright (C) 2019-2025 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, see <http://www.gnu.org/licenses/>.  */
+
+/* This file handles ELF files that are of the AMDGCN architecture.  The
+   format is documented here:
+
+     https://llvm.org/docs/AMDGPUUsage.html#elf-code-object */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "elf/amdgpu.h"
+
+#include <string.h>
+
+static bool
+elf64_amdgcn_object_p (bfd *abfd)
+{
+  Elf_Internal_Ehdr *hdr = elf_elfheader (abfd);
+  unsigned int mach;
+  unsigned char osabi;
+  unsigned char osabi_version;
+
+  BFD_ASSERT (hdr->e_machine == EM_AMDGPU);
+
+  osabi = hdr->e_ident[EI_OSABI];
+  osabi_version = hdr->e_ident[EI_ABIVERSION];
+
+  /* Objects with OS ABI HSA version 2 encoded the GPU model differently (in a
+     note), but they are deprecated, so we don't need to support them.  Reject
+     them specifically.
+
+     At the time of writing, all AMDGCN objects encode the specific GPU
+     model in the EF_AMDGPU_MACH field of e_flags.  */
+  if (osabi == ELFOSABI_AMDGPU_HSA
+      && osabi_version < ELFABIVERSION_AMDGPU_HSA_V3)
+    return false;
+
+  mach = elf_elfheader (abfd)->e_flags & EF_AMDGPU_MACH;
+
+  /* Avoid matching non-AMDGCN AMDGPU objects (e.g. r600).  */
+  if (mach < EF_AMDGPU_MACH_AMDGCN_MIN)
+    return false;
+
+  bfd_default_set_arch_mach (abfd, bfd_arch_amdgcn, mach);
+  return true;
+}
+
+
+#define TARGET_LITTLE_SYM	amdgcn_elf64_le_vec
+#define TARGET_LITTLE_NAME	"elf64-amdgcn"
+#define ELF_ARCH		bfd_arch_amdgcn
+#define ELF_TARGET_ID		AMDGCN_ELF_DATA
+#define ELF_MACHINE_CODE	EM_AMDGPU
+#define ELF_MAXPAGESIZE		0x10000 /* 64KB */
+#define ELF_COMMONPAGESIZE	0x1000  /* 4KB */
+
+#define bfd_elf64_bfd_reloc_type_lookup bfd_default_reloc_type_lookup
+#define bfd_elf64_bfd_reloc_name_lookup _bfd_norelocs_bfd_reloc_name_lookup
+
+#define elf_backend_object_p elf64_amdgcn_object_p
+
+#include "elf64-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.20200303/bfd/elf64-bpf.c ./bfd/elf64-bpf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-bpf.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-bpf.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Linux bpf specific support for 64-bit ELF
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
    Contributed by Oracle Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -31,214 +31,43 @@
 
 #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 **);
+
+#undef BPF_HOWTO
+#define BPF_HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,   \
+		  inplace, src_mask, dst_mask, pcrel_off)                  \
+	type##_IDX,
+enum bpf_reloc_index {
+  R_BPF_INVALID_IDX = -1,
+#include "bpf-reloc.def"
+  R_BPF_SIZE
+};
+#undef BPF_HOWTO
+
 /* Relocation tables.  */
+#define BPF_HOWTO(...) HOWTO(__VA_ARGS__),
 static reloc_howto_type bpf_elf_howto_table [] =
 {
-  /* This reloc does nothing.  */
-  HOWTO (R_BPF_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_BPF_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* 64-immediate in LDDW instruction.  */
-  HOWTO (R_BPF_INSN_64,		/* type */
-	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
-	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_INSN_64",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 MINUS_ONE,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* 32-immediate in LDDW instruction.  */
-  HOWTO (R_BPF_INSN_32,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_INSN_32",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* 16-bit offsets in instructions.  */
-  HOWTO (R_BPF_INSN_16,		/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_INSN_16",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* 16-bit PC-relative address in jump instructions.  */
-  HOWTO (R_BPF_INSN_DISP16,	/* type */
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 32,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_INSN_DISP16",   /* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
-	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  HOWTO (R_BPF_DATA_8_PCREL,
-	 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_BPF_8_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  HOWTO (R_BPF_DATA_16_PCREL,
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  HOWTO (R_BPF_DATA_32_PCREL,
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_32_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  HOWTO (R_BPF_DATA_8,
-	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
-	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_unsigned, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_DATA_8",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  HOWTO (R_BPF_DATA_16,
-	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
-	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_unsigned, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_DATA_16",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
-
-  /* 32-bit PC-relative address in call instructions.  */
-  HOWTO (R_BPF_INSN_DISP32,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_INSN_DISP32",   /* name */
-	 FALSE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* 32-bit data.  */
-  HOWTO (R_BPF_DATA_32,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_bitfield, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_DATA_32",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  /* 64-bit data.  */
-  HOWTO (R_BPF_DATA_64,		/* type */
-	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
-	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_bitfield, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_DATA_64",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 MINUS_ONE,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
-
-  HOWTO (R_BPF_DATA_64_PCREL,
-	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
-	 64,			/* bitsize */
-	 TRUE,			/* pc_relative */
-	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 bfd_elf_generic_reloc, /* special_function */
-	 "R_BPF_64_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
-	 0,			/* src_mask */
-	 MINUS_ONE,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+  #include "bpf-reloc.def"
 };
 #undef AHOW
+#undef BPF_HOWTO
+
+#define BPF_HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,   \
+		  inplace, src_mask, dst_mask, pcrel_off)                  \
+    case type: { return type##_IDX; }
+static enum bpf_reloc_index
+bpf_index_for_rtype(unsigned int r_type)
+{
+  switch(r_type) {
+#include "bpf-reloc.def"
+    default:
+      /* Unreachable code. */
+      BFD_ASSERT(0);
+      return -1;
+  };
+}
 
 /* Map BFD reloc types to bpf ELF reloc types.  */
 
@@ -246,44 +75,23 @@ static reloc_howto_type *
 bpf_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
                         bfd_reloc_code_real_type code)
 {
-  /* Note that the bpf_elf_howto_table is indexed by the R_ constants.
-     Thus, the order that the howto records appear in the table *must*
-     match the order of the relocation types defined in
-     include/elf/bpf.h.  */
-
   switch (code)
     {
     case BFD_RELOC_NONE:
-      return &bpf_elf_howto_table[ (int) R_BPF_NONE];
+      return &bpf_elf_howto_table[ (int) R_BPF_NONE_IDX];
 
-    case BFD_RELOC_8_PCREL:
-      return &bpf_elf_howto_table[ (int) R_BPF_DATA_8_PCREL];
-    case BFD_RELOC_16_PCREL:
-      return &bpf_elf_howto_table[ (int) R_BPF_DATA_16_PCREL];
-    case BFD_RELOC_32_PCREL:
-      return &bpf_elf_howto_table[ (int) R_BPF_DATA_32_PCREL];
-    case BFD_RELOC_64_PCREL:
-      return &bpf_elf_howto_table[ (int) R_BPF_DATA_64_PCREL];
-
-    case BFD_RELOC_8:
-      return &bpf_elf_howto_table[ (int) R_BPF_DATA_8];
-    case BFD_RELOC_16:
-      return &bpf_elf_howto_table[ (int) R_BPF_DATA_16];
     case BFD_RELOC_32:
-      return &bpf_elf_howto_table[ (int) R_BPF_DATA_32];
+      return &bpf_elf_howto_table[ (int) R_BPF_64_ABS32_IDX];
     case BFD_RELOC_64:
-      return &bpf_elf_howto_table[ (int) R_BPF_DATA_64];
+      return &bpf_elf_howto_table[ (int) R_BPF_64_ABS64_IDX];
 
     case BFD_RELOC_BPF_64:
-      return &bpf_elf_howto_table[ (int) R_BPF_INSN_64];
-    case BFD_RELOC_BPF_32:
-      return &bpf_elf_howto_table[ (int) R_BPF_INSN_32];
-    case BFD_RELOC_BPF_16:
-      return &bpf_elf_howto_table[ (int) R_BPF_INSN_16];
-    case BFD_RELOC_BPF_DISP16:
-      return &bpf_elf_howto_table[ (int) R_BPF_INSN_DISP16];
+      return &bpf_elf_howto_table[ (int) R_BPF_64_64_IDX];
     case BFD_RELOC_BPF_DISP32:
-      return &bpf_elf_howto_table[ (int) R_BPF_INSN_DISP32];
+    case BFD_RELOC_BPF_DISPCALL32:
+      return &bpf_elf_howto_table[ (int) R_BPF_64_32_IDX];
+    case BFD_RELOC_BPF_DISP16:
+      return &bpf_elf_howto_table[ (int) R_BPF_GNU_64_16_IDX];
 
     default:
       /* Pacify gcc -Wall.  */
@@ -299,7 +107,7 @@ bpf_reloc_name_lookup (bfd *abfd ATTRIBU
 {
   unsigned int i;
 
-  for (i = 0; i < ARRAY_SIZE (bpf_elf_howto_table); i++)
+  for (i = 0; i < R_BPF_SIZE; i++)
     if (bpf_elf_howto_table[i].name != NULL
 	&& strcasecmp (bpf_elf_howto_table[i].name, r_name) == 0)
       return &bpf_elf_howto_table[i];
@@ -309,24 +117,26 @@ bpf_reloc_name_lookup (bfd *abfd ATTRIBU
 
 /* Set the howto pointer for a bpf reloc.  */
 
-static bfd_boolean
+static bool
 bpf_info_to_howto (bfd *abfd, arelent *bfd_reloc,
                     Elf_Internal_Rela *elf_reloc)
 {
   unsigned int r_type;
-
+  unsigned int i;
   r_type = ELF64_R_TYPE (elf_reloc->r_info);
-  if (r_type >= (unsigned int) R_BPF_max)
+
+  i = bpf_index_for_rtype(r_type);
+  if (i == (unsigned int) -1)
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
                           abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  bfd_reloc->howto = &bpf_elf_howto_table [r_type];
-  return TRUE;
+  bfd_reloc->howto = &bpf_elf_howto_table [i];
+  return true;
 }
 
 /* Relocate an eBPF ELF section.
@@ -361,7 +171,7 @@ bpf_info_to_howto (bfd *abfd, arelent *b
 
 #define sec_addr(sec) ((sec)->output_section->vma + (sec)->output_offset)
 
-static bfd_boolean
+static int
 bpf_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
                           struct bfd_link_info *info,
                           bfd *input_bfd,
@@ -383,6 +193,7 @@ bpf_elf_relocate_section (bfd *output_bf
   for (rel = relocs; rel < relend; rel ++)
     {
       reloc_howto_type *	   howto;
+      unsigned int		   howto_index;
       unsigned long		   r_symndx;
       Elf_Internal_Sym *	   sym;
       asection *		   sec;
@@ -391,13 +202,18 @@ 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);
-      howto  = bpf_elf_howto_table + ELF64_R_TYPE (rel->r_info);
+
+      howto_index = bpf_index_for_rtype (ELF64_R_TYPE (rel->r_info));
+      howto  = &bpf_elf_howto_table[howto_index];
       h      = NULL;
       sym    = NULL;
       sec    = NULL;
+      where  = contents + rel->r_offset;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -411,9 +227,9 @@ bpf_elf_relocate_section (bfd *output_bf
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean unresolved_reloc ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool unresolved_reloc ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -425,23 +241,22 @@ bpf_elf_relocate_section (bfd *output_bf
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_BPF_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
 
       switch (howto->type)
         {
-        case R_BPF_INSN_DISP16:
-        case R_BPF_INSN_DISP32:
+	case R_BPF_64_32:
           {
-            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 +275,50 @@ bpf_elf_relocate_section (bfd *output_bf
             r = bfd_reloc_ok;
             break;
           }
+	case R_BPF_64_ABS64:
+	case R_BPF_64_ABS32:
+	case R_BPF_64_NODYLD32:
+	  {
+	    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_64_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;
@@ -480,7 +333,7 @@ bpf_elf_relocate_section (bfd *output_bf
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -507,22 +360,115 @@ bpf_elf_relocate_section (bfd *output_bf
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf64_bpf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   /* Check if we have the same endianness.  */
   if (! _bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
+/* A generic howto special function for installing BPF relocations.
+   This function will be called by the assembler (via bfd_install_relocation),
+   and by various get_relocated_section_contents functions.
+   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;
+
+  /* From bfd_elf_generic_reloc.  */
+  if (output_bfd != NULL
+      && (symbol->flags & BSF_SECTION_SYM) == 0
+      && (! reloc_entry->howto->partial_inplace
+	  || reloc_entry->addend == 0))
+    {
+      reloc_entry->address += input_section->output_offset;
+      return bfd_reloc_ok;
+    }
+
+  if (output_bfd == NULL
+      && !reloc_entry->howto->pc_relative
+      && (symbol->section->flags & SEC_DEBUGGING) != 0
+      && (input_section->flags & SEC_DEBUGGING) != 0)
+    reloc_entry->addend -= symbol->section->output_section->vma;
+
+  /* Sanity check that the address is in range.  */
+  bfd_size_type end = bfd_get_section_limit_octets (abfd, input_section);
+  bfd_size_type reloc_size;
+  if (reloc_entry->howto->type == R_BPF_64_64)
+    reloc_size = 16;
+  else
+    reloc_size = (reloc_entry->howto->bitsize
+		  + reloc_entry->howto->bitpos) / 8;
+
+  if (reloc_entry->address > end
+      || end - reloc_entry->address < reloc_size)
+    return bfd_reloc_outofrange;
+
+  /* Behave similarly to bfd_install_relocation with install_addend set.
+     That is, just install the addend and do not include the value of
+     the symbol.  */
+  relocation = reloc_entry->addend;
+
+  if (symbol->flags & BSF_SECTION_SYM)
+    /* Relocation against a section symbol: add in the section base address.  */
+    relocation += BASEADDR (symbol->section);
+
+  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_64_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 (abfd, (relocation & 0xFFFFFFFF), where + 4);
+      bfd_put_32 (abfd, (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, abfd, relocation,
+	       where + reloc_entry->howto->bitpos / 8);
+    }
+
+  if (output_bfd != NULL)
+    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.20200303/bfd/elf64.c ./bfd/elf64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF 64-bit executable support for BFD.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 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.20200303/bfd/elf64-gen.c ./bfd/elf64-gen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-gen.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-gen.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic support for 64-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,34 +29,34 @@
 static reloc_howto_type dummy =
   HOWTO (0,			/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "UNKNOWN",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
-static bfd_boolean
+static bool
 elf_generic_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 			   arelent *bfd_reloc,
 			   Elf_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED)
 {
   bfd_reloc->howto = &dummy;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_generic_info_to_howto_rel (bfd *abfd ATTRIBUTE_UNUSED,
 			       arelent *bfd_reloc,
 			       Elf_Internal_Rela *elf_reloc ATTRIBUTE_UNUSED)
 {
   bfd_reloc->howto = &dummy;
-  return TRUE;
+  return true;
 }
 
 static void
@@ -72,20 +72,20 @@ check_for_relocs (bfd * abfd, asection *
 			  abfd, ehdrp->e_machine);
 
       bfd_set_error (bfd_error_wrong_format);
-      * (bfd_boolean *) failed = TRUE;
+      * (bool *) failed = true;
     }
 }
 
-static bfd_boolean
+static bool
 elf64_generic_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
-  bfd_boolean failed = FALSE;
+  bool failed = false;
 
   /* Check if there are any relocations.  */
   bfd_map_over_sections (abfd, check_for_relocs, & failed);
 
   if (failed)
-    return FALSE;
+    return false;
   return bfd_elf_link_add_symbols (abfd, 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.20200303/bfd/elf64-hppa.c ./bfd/elf64-hppa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-hppa.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-hppa.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Support for HPPA 64-bit ELF
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -19,7 +19,6 @@
    MA 02110-1301, USA.  */
 
 #include "sysdep.h"
-#include "alloca-conf.h"
 #include "bfd.h"
 #include "libbfd.h"
 #include "elf-bfd.h"
@@ -28,6 +27,10 @@
 #include "elf64-hppa.h"
 #include "libiberty.h"
 
+/* Target vectors for HPUX and non-HPUX versions of HPPA ELF binaries.  */
+extern const bfd_target hppa_elf64_vec;
+extern const bfd_target hppa_elf64_linux_vec;
+
 #define ARCH_SIZE	       64
 
 #define PLT_ENTRY_SIZE 0x10
@@ -117,8 +120,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 +148,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))
@@ -166,83 +168,80 @@ static struct bfd_link_hash_table *elf64
    hash tables and shared functions.  */
 #include "elf-hppa.h"
 
-static bfd_boolean elf64_hppa_object_p
+static bool elf64_hppa_object_p
   (bfd *);
 
-static bfd_boolean elf64_hppa_create_dynamic_sections
+static bool elf64_hppa_create_dynamic_sections
   (bfd *, struct bfd_link_info *);
 
-static bfd_boolean elf64_hppa_adjust_dynamic_symbol
+static bool elf64_hppa_adjust_dynamic_symbol
   (struct bfd_link_info *, struct elf_link_hash_entry *);
 
-static bfd_boolean elf64_hppa_mark_milli_and_exported_functions
+static bool elf64_hppa_mark_milli_and_exported_functions
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean elf64_hppa_size_dynamic_sections
-  (bfd *, struct bfd_link_info *);
-
 static int elf64_hppa_link_output_symbol_hook
   (struct bfd_link_info *, const char *, Elf_Internal_Sym *,
    asection *, struct elf_link_hash_entry *);
 
-static bfd_boolean elf64_hppa_finish_dynamic_symbol
+static bool elf64_hppa_finish_dynamic_symbol
   (bfd *, struct bfd_link_info *,
    struct elf_link_hash_entry *, Elf_Internal_Sym *);
 
-static bfd_boolean elf64_hppa_finish_dynamic_sections
+static bool elf64_hppa_finish_dynamic_sections
   (bfd *, struct bfd_link_info *);
 
-static bfd_boolean elf64_hppa_check_relocs
+static bool elf64_hppa_check_relocs
   (bfd *, struct bfd_link_info *,
    asection *, const Elf_Internal_Rela *);
 
-static bfd_boolean elf64_hppa_dynamic_symbol_p
+static bool elf64_hppa_dynamic_symbol_p
   (struct elf_link_hash_entry *, struct bfd_link_info *);
 
-static bfd_boolean elf64_hppa_mark_exported_functions
+static bool elf64_hppa_mark_exported_functions
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean elf64_hppa_finalize_opd
+static bool elf64_hppa_finalize_opd
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean elf64_hppa_finalize_dlt
+static bool elf64_hppa_finalize_dlt
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean allocate_global_data_dlt
+static bool allocate_global_data_dlt
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean allocate_global_data_plt
+static bool allocate_global_data_plt
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean allocate_global_data_stub
+static bool allocate_global_data_stub
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean allocate_global_data_opd
+static bool allocate_global_data_opd
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean get_reloc_section
+static bool get_reloc_section
   (bfd *, struct elf64_hppa_link_hash_table *, asection *);
 
-static bfd_boolean count_dyn_reloc
+static bool count_dyn_reloc
   (bfd *, struct elf64_hppa_link_hash_entry *,
    int, asection *, int, bfd_vma, bfd_vma);
 
-static bfd_boolean allocate_dynrel_entries
+static bool allocate_dynrel_entries
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean elf64_hppa_finalize_dynreloc
+static bool elf64_hppa_finalize_dynreloc
   (struct elf_link_hash_entry *, void *);
 
-static bfd_boolean get_opd
+static bool get_opd
   (bfd *, struct bfd_link_info *, struct elf64_hppa_link_hash_table *);
 
-static bfd_boolean get_plt
+static bool get_plt
   (bfd *, struct bfd_link_info *, struct elf64_hppa_link_hash_table *);
 
-static bfd_boolean get_dlt
+static bool get_dlt
   (bfd *, struct bfd_link_info *, struct elf64_hppa_link_hash_table *);
 
-static bfd_boolean get_stub
+static bool get_stub
   (bfd *, struct bfd_link_info *, struct elf64_hppa_link_hash_table *);
 
 static int elf64_hppa_elf_get_symbol_type
@@ -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)
@@ -297,13 +296,13 @@ elf64_hppa_hash_table_create (bfd *abfd)
 
   if (!_bfd_elf_link_hash_table_init (&htab->root, abfd,
 				      hppa64_link_hash_newfunc,
-				      sizeof (struct elf64_hppa_link_hash_entry),
-				      HPPA64_ELF_DATA))
+				      sizeof (struct elf64_hppa_link_hash_entry)))
     {
       free (htab);
       return NULL;
     }
 
+  htab->root.dt_pltgot_required = true;
   htab->text_segment_base = (bfd_vma) -1;
   htab->data_segment_base = (bfd_vma) -1;
 
@@ -313,20 +312,20 @@ elf64_hppa_hash_table_create (bfd *abfd)
 /* Return nonzero if ABFD represents a PA2.0 ELF64 file.
 
    Additionally we set the default architecture and machine.  */
-static bfd_boolean
+static bool
 elf64_hppa_object_p (bfd *abfd)
 {
   Elf_Internal_Ehdr * i_ehdrp;
   unsigned int flags;
 
   i_ehdrp = elf_elfheader (abfd);
-  if (strcmp (bfd_get_target (abfd), "elf64-hppa-linux") == 0)
+  if (abfd->xvec == & hppa_elf64_linux_vec)
     {
       /* GCC on hppa-linux produces binaries with OSABI=GNU,
 	 but the kernel produces corefiles with OSABI=SysV.  */
       if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_GNU
 	  && i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NONE) /* aka SYSV */
-	return FALSE;
+	return false;
     }
   else
     {
@@ -334,7 +333,7 @@ elf64_hppa_object_p (bfd *abfd)
 	 but the kernel produces corefiles with OSABI=SysV.  */
       if (i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_HPUX
 	  && i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_NONE) /* aka SYSV */
-	return FALSE;
+	return false;
     }
 
   flags = i_ehdrp->e_flags;
@@ -353,12 +352,12 @@ elf64_hppa_object_p (bfd *abfd)
       return bfd_default_set_arch_mach (abfd, bfd_arch_hppa, 25);
     }
   /* Don't be fussy.  */
-  return TRUE;
+  return true;
 }
 
 /* Given section type (hdr->sh_type), return a boolean indicating
    whether or not the section is an elf64-hppa specific section.  */
-static bfd_boolean
+static bool
 elf64_hppa_section_from_shdr (bfd *abfd,
 			      Elf_Internal_Shdr *hdr,
 			      const char *name,
@@ -368,28 +367,30 @@ elf64_hppa_section_from_shdr (bfd *abfd,
     {
     case SHT_PARISC_EXT:
       if (strcmp (name, ".PARISC.archext") != 0)
-	return FALSE;
+	return false;
       break;
     case SHT_PARISC_UNWIND:
       if (strcmp (name, ".PARISC.unwind") != 0)
-	return FALSE;
+	return false;
       break;
     case SHT_PARISC_DOC:
     case SHT_PARISC_ANNOT:
     default:
-      return FALSE;
+      return false;
     }
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    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
    a suitable section for holding relocs in the output BFD for a link.  */
 
-static bfd_boolean
+static bool
 get_reloc_section (bfd *abfd,
 		   struct elf64_hppa_link_hash_table *hppa_info,
 		   asection *sec)
@@ -402,7 +403,7 @@ get_reloc_section (bfd *abfd,
 	       (abfd, elf_elfheader(abfd)->e_shstrndx,
 		_bfd_elf_single_rel_hdr(sec)->sh_name));
   if (srel_name == NULL)
-    return FALSE;
+    return false;
 
   dynobj = hppa_info->root.dynobj;
   if (!dynobj)
@@ -420,11 +421,11 @@ get_reloc_section (bfd *abfd,
 						  | SEC_READONLY));
       if (srel == NULL
 	  || !bfd_set_section_alignment (srel, 3))
-	return FALSE;
+	return false;
     }
 
   hppa_info->other_rel_sec = srel;
-  return TRUE;
+  return true;
 }
 
 /* Add a new entry to the list of dynamic relocations against DYN_H.
@@ -433,7 +434,7 @@ get_reloc_section (bfd *abfd,
    particular symbol so that we can create FPTR relocations in the
    output file.  */
 
-static bfd_boolean
+static bool
 count_dyn_reloc (bfd *abfd,
 		 struct elf64_hppa_link_hash_entry *hh,
 		 int type,
@@ -447,7 +448,7 @@ count_dyn_reloc (bfd *abfd,
   rent = (struct elf64_hppa_dyn_reloc_entry *)
   bfd_alloc (abfd, (bfd_size_type) sizeof (*rent));
   if (!rent)
-    return FALSE;
+    return false;
 
   rent->next = hh->reloc_entries;
   rent->type = type;
@@ -457,7 +458,7 @@ count_dyn_reloc (bfd *abfd,
   rent->addend = addend;
   hh->reloc_entries = rent;
 
-  return TRUE;
+  return true;
 }
 
 /* Return a pointer to the local DLT, PLT and OPD reference counts
@@ -488,7 +489,7 @@ hppa64_elf_local_refcounts (bfd *abfd)
 /* Scan the RELOCS and record the type of dynamic entries that each
    referenced symbol needs.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_check_relocs (bfd *abfd,
 			 struct bfd_link_info *info,
 			 asection *sec,
@@ -501,19 +502,19 @@ elf64_hppa_check_relocs (bfd *abfd,
   unsigned int sec_symndx;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* If this is the first dynamic object found in the link, create
      the special sections required for dynamic linking.  */
   if (! elf_hash_table (info)->dynamic_sections_created)
     {
       if (! _bfd_elf_link_create_dynamic_sections (abfd, info))
-	return FALSE;
+	return false;
     }
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
   /* If necessary, build a new table holding section symbols indices
@@ -532,8 +533,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)
@@ -544,7 +544,7 @@ elf64_hppa_check_relocs (bfd *abfd,
 					       symtab_hdr->sh_info, 0,
 					       NULL, NULL, NULL);
 	  if (local_syms == NULL)
-	    return FALSE;
+	    return false;
 	}
 
       /* Record the highest section index referenced by the local symbols.  */
@@ -600,7 +600,7 @@ elf64_hppa_check_relocs (bfd *abfd,
       /* If we did not find a section symbol for this section, then
 	 something went terribly wrong above.  */
       if (sec_symndx == SHN_BAD)
-	return FALSE;
+	return false;
 
       if (sec_symndx < SHN_LORESERVE)
 	sec_symndx = hppa_info->section_syms[sec_symndx];
@@ -625,7 +625,7 @@ elf64_hppa_check_relocs (bfd *abfd,
       unsigned long r_symndx = ELF64_R_SYM (rel->r_info);
       struct elf64_hppa_link_hash_entry *hh;
       int need_entry;
-      bfd_boolean maybe_dynamic;
+      bool maybe_dynamic;
       int dynrel_type = R_PARISC_NONE;
       static reloc_howto_type *howto;
 
@@ -650,13 +650,13 @@ elf64_hppa_check_relocs (bfd *abfd,
 	 locally or externally defined, as not all of the input files
 	 have yet been processed.  Do something with what we know, as
 	 this may help reduce memory usage and processing time later.  */
-      maybe_dynamic = FALSE;
+      maybe_dynamic = false;
       if (hh && ((bfd_link_pic (info)
 		 && (!info->symbolic
 		     || info->unresolved_syms_in_shared_libs == RM_IGNORE))
 		|| !hh->eh.def_regular
 		|| hh->eh.root.type == bfd_link_hash_defweak))
-	maybe_dynamic = TRUE;
+	maybe_dynamic = true;
 
       howto = elf_hppa_howto_table + ELF64_R_TYPE (rel->r_info);
       need_entry = 0;
@@ -794,14 +794,14 @@ elf64_hppa_check_relocs (bfd *abfd,
 	      /* This is a DLT entry for a local symbol.  */
 	      local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
 	      if (local_dlt_refcounts == NULL)
-		return FALSE;
+		return false;
 	      local_dlt_refcounts[r_symndx] += 1;
 	    }
 	}
 
       if (need_entry & NEED_PLT)
 	{
-	  if (! hppa_info->plt_sec
+	  if (! hppa_info->root.splt
 	      && ! get_plt (abfd, info, hppa_info))
 	    goto err_out;
 
@@ -819,7 +819,7 @@ elf64_hppa_check_relocs (bfd *abfd,
 	      /* This is a PLT entry for a local symbol.  */
 	      local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
 	      if (local_dlt_refcounts == NULL)
-		return FALSE;
+		return false;
 	      local_plt_refcounts = local_dlt_refcounts + symtab_hdr->sh_info;
 	      local_plt_refcounts[r_symndx] += 1;
 	    }
@@ -853,7 +853,7 @@ elf64_hppa_check_relocs (bfd *abfd,
 	      /* This is a OPD for a local symbol.  */
 	      local_dlt_refcounts = hppa64_elf_local_refcounts (abfd);
 	      if (local_dlt_refcounts == NULL)
-		return FALSE;
+		return false;
 	      local_opd_refcounts = (local_dlt_refcounts
 				     + 2 * symtab_hdr->sh_info);
 	      local_opd_refcounts[r_symndx] += 1;
@@ -881,14 +881,14 @@ elf64_hppa_check_relocs (bfd *abfd,
 	  if (bfd_link_pic (info) && dynrel_type == R_PARISC_FPTR64
 	      && ! (bfd_elf_link_record_local_dynamic_symbol
 		    (info, abfd, sec_symndx)))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 
  err_out:
-  return FALSE;
+  return false;
 }
 
 struct elf64_hppa_allocate_data
@@ -899,7 +899,7 @@ struct elf64_hppa_allocate_data
 
 /* Should we do dynamic things to this symbol?  */
 
-static bfd_boolean
+static bool
 elf64_hppa_dynamic_symbol_p (struct elf_link_hash_entry *eh,
 			     struct bfd_link_info *info)
 {
@@ -910,18 +910,18 @@ elf64_hppa_dynamic_symbol_p (struct elf_
     {
       /* ??? Why is this here and not elsewhere is_local_label_name.  */
       if (eh->root.root.string[0] == '$' && eh->root.root.string[1] == '$')
-	return FALSE;
+	return false;
 
-      return TRUE;
+      return true;
     }
   else
-    return FALSE;
+    return false;
 }
 
 /* Mark all functions exported by this file so that we can later allocate
    entries in .opd for them.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_mark_exported_functions (struct elf_link_hash_entry *eh, void *data)
 {
   struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
@@ -930,7 +930,7 @@ elf64_hppa_mark_exported_functions (stru
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   if (eh
       && (eh->root.type == bfd_link_hash_defined
@@ -940,7 +940,7 @@ elf64_hppa_mark_exported_functions (stru
     {
       if (! hppa_info->opd_sec
 	  && ! get_opd (hppa_info->root.dynobj, info, hppa_info))
-	return FALSE;
+	return false;
 
       hh->want_opd = 1;
 
@@ -949,12 +949,12 @@ elf64_hppa_mark_exported_functions (stru
       eh->needs_plt = 1;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space for a DLT entry.  */
 
-static bfd_boolean
+static bool
 allocate_global_data_dlt (struct elf_link_hash_entry *eh, void *data)
 {
   struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
@@ -973,19 +973,19 @@ allocate_global_data_dlt (struct elf_lin
 
 	      if (! (bfd_elf_link_record_local_dynamic_symbol
 		     (x->info, owner, hh->sym_indx)))
-		return FALSE;
+		return false;
 	    }
 	}
 
       hh->dlt_offset = x->ofs;
       x->ofs += DLT_ENTRY_SIZE;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate space for a DLT.PLT entry.  */
 
-static bfd_boolean
+static bool
 allocate_global_data_plt (struct elf_link_hash_entry *eh, void *data)
 {
   struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
@@ -1005,7 +1005,7 @@ allocate_global_data_plt (struct elf_lin
 
 	  hppa_info = hppa_link_hash_table (x->info);
 	  if (hppa_info == NULL)
-	    return FALSE;
+	    return false;
 
 	  hppa_info->gp_offset = hh->plt_offset;
 	}
@@ -1013,12 +1013,12 @@ allocate_global_data_plt (struct elf_lin
   else
     hh->want_plt = 0;
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space for a STUB entry.  */
 
-static bfd_boolean
+static bool
 allocate_global_data_stub (struct elf_link_hash_entry *eh, void *data)
 {
   struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
@@ -1035,12 +1035,12 @@ allocate_global_data_stub (struct elf_li
     }
   else
     hh->want_stub = 0;
-  return TRUE;
+  return true;
 }
 
 /* Allocate space for a FPTR entry.  */
 
-static bfd_boolean
+static bool
 allocate_global_data_opd (struct elf_link_hash_entry *eh, void *data)
 {
   struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
@@ -1077,7 +1077,7 @@ allocate_global_data_opd (struct elf_lin
 
 	      if (!bfd_elf_link_record_local_dynamic_symbol
 		    (x->info, owner, hh->sym_indx))
-		return FALSE;
+		return false;
 	    }
 
 	  /* This may not be necessary or desirable anymore now that
@@ -1093,7 +1093,7 @@ allocate_global_data_opd (struct elf_lin
 	      new_name = concat (".", eh->root.root.string, NULL);
 
 	      nh = elf_link_hash_lookup (elf_hash_table (x->info),
-					 new_name, TRUE, TRUE, TRUE);
+					 new_name, true, true, true);
 
 	      free (new_name);
 	      nh->root.type = eh->root.type;
@@ -1101,7 +1101,7 @@ allocate_global_data_opd (struct elf_lin
 	      nh->root.u.def.section = eh->root.u.def.section;
 
 	      if (! bfd_elf_link_record_dynamic_symbol (x->info, nh))
-		return FALSE;
+		return false;
 	     }
 	  hh->opd_offset = x->ofs;
 	  x->ofs += OPD_ENTRY_SIZE;
@@ -1111,24 +1111,24 @@ allocate_global_data_opd (struct elf_lin
       else
 	hh->want_opd = 0;
     }
-  return TRUE;
+  return true;
 }
 
 /* HP requires the EI_OSABI field to be filled in.  The assignment to
    EI_ABIVERSION may not be strictly necessary.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_init_file_header (bfd *abfd, struct bfd_link_info *info)
 {
   Elf_Internal_Ehdr *i_ehdrp;
 
   if (!_bfd_elf_init_file_header (abfd, info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
   i_ehdrp->e_ident[EI_OSABI] = get_elf_backend_data (abfd)->elf_osabi;
   i_ehdrp->e_ident[EI_ABIVERSION] = 1;
-  return TRUE;
+  return true;
 }
 
 /* Create function descriptor section (.opd).  This section is called .opd
@@ -1136,7 +1136,7 @@ elf64_hppa_init_file_header (bfd *abfd,
    refers to the fact that these descriptors are used when taking the address
    of a procedure, thus ensuring a unique address for each procedure.  */
 
-static bfd_boolean
+static bool
 get_opd (bfd *abfd,
 	 struct bfd_link_info *info ATTRIBUTE_UNUSED,
 	 struct elf64_hppa_link_hash_table *hppa_info)
@@ -1161,18 +1161,18 @@ get_opd (bfd *abfd,
 	  || !bfd_set_section_alignment (opd, 3))
 	{
 	  BFD_ASSERT (0);
-	  return FALSE;
+	  return false;
 	}
 
       hppa_info->opd_sec = opd;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create the PLT section.  */
 
-static bfd_boolean
+static bool
 get_plt (bfd *abfd,
 	 struct bfd_link_info *info ATTRIBUTE_UNUSED,
 	 struct elf64_hppa_link_hash_table *hppa_info)
@@ -1180,7 +1180,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;
@@ -1197,18 +1197,18 @@ get_plt (bfd *abfd,
 	  || !bfd_set_section_alignment (plt, 3))
 	{
 	  BFD_ASSERT (0);
-	  return FALSE;
+	  return false;
 	}
 
-      hppa_info->plt_sec = plt;
+      hppa_info->root.splt = plt;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create the DLT section.  */
 
-static bfd_boolean
+static bool
 get_dlt (bfd *abfd,
 	 struct bfd_link_info *info ATTRIBUTE_UNUSED,
 	 struct elf64_hppa_link_hash_table *hppa_info)
@@ -1233,18 +1233,18 @@ get_dlt (bfd *abfd,
 	  || !bfd_set_section_alignment (dlt, 3))
 	{
 	  BFD_ASSERT (0);
-	  return FALSE;
+	  return false;
 	}
 
       hppa_info->dlt_sec = dlt;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create the stubs section.  */
 
-static bfd_boolean
+static bool
 get_stub (bfd *abfd,
 	  struct bfd_link_info *info ATTRIBUTE_UNUSED,
 	  struct elf64_hppa_link_hash_table *hppa_info)
@@ -1269,13 +1269,13 @@ get_stub (bfd *abfd,
 	  || !bfd_set_section_alignment (stub, 3))
 	{
 	  BFD_ASSERT (0);
-	  return FALSE;
+	  return false;
 	}
 
       hppa_info->stub_sec = stub;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create sections necessary for dynamic linking.  This is only a rough
@@ -1316,7 +1316,7 @@ get_stub (bfd *abfd,
    .rela.opd:
 	EPLT relocations for symbols exported from shared libraries.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_create_dynamic_sections (bfd *abfd,
 				    struct bfd_link_info *info)
 {
@@ -1325,19 +1325,19 @@ elf64_hppa_create_dynamic_sections (bfd
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   if (! get_stub (abfd, info, hppa_info))
-    return FALSE;
+    return false;
 
   if (! get_dlt (abfd, info, hppa_info))
-    return FALSE;
+    return false;
 
   if (! get_plt (abfd, info, hppa_info))
-    return FALSE;
+    return false;
 
   if (! get_opd (abfd, info, hppa_info))
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.dlt",
 					  (SEC_ALLOC | SEC_LOAD
@@ -1347,7 +1347,7 @@ elf64_hppa_create_dynamic_sections (bfd
 					   | SEC_LINKER_CREATED));
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
   hppa_info->dlt_rel_sec = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.plt",
@@ -1358,8 +1358,8 @@ elf64_hppa_create_dynamic_sections (bfd
 					   | SEC_LINKER_CREATED));
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
-  hppa_info->plt_rel_sec = s;
+    return false;
+  hppa_info->root.srelplt = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.data",
 					  (SEC_ALLOC | SEC_LOAD
@@ -1369,7 +1369,7 @@ elf64_hppa_create_dynamic_sections (bfd
 					   | SEC_LINKER_CREATED));
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
   hppa_info->other_rel_sec = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.opd",
@@ -1380,27 +1380,27 @@ elf64_hppa_create_dynamic_sections (bfd
 					   | SEC_LINKER_CREATED));
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
   hppa_info->opd_rel_sec = s;
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate dynamic relocations for those symbols that turned out
    to be dynamic.  */
 
-static bfd_boolean
+static bool
 allocate_dynrel_entries (struct elf_link_hash_entry *eh, void *data)
 {
   struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
   struct elf64_hppa_allocate_data *x = (struct elf64_hppa_allocate_data *)data;
   struct elf64_hppa_link_hash_table *hppa_info;
   struct elf64_hppa_dyn_reloc_entry *rent;
-  bfd_boolean dynamic_symbol, shared;
+  bool dynamic_symbol, shared;
 
   hppa_info = hppa_link_hash_table (x->info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   dynamic_symbol = elf64_hppa_dynamic_symbol_p (eh, x->info);
   shared = bfd_link_pic (x->info);
@@ -1408,7 +1408,7 @@ allocate_dynrel_entries (struct elf_link
   /* We may need to allocate relocations for a non-dynamic symbol
      when creating a shared library.  */
   if (!dynamic_symbol && !shared)
-    return TRUE;
+    return true;
 
   /* Take care of the normal data relocations.  */
 
@@ -1427,7 +1427,7 @@ allocate_dynrel_entries (struct elf_link
       if (eh->dynindx == -1 && eh->type != STT_PARISC_MILLI)
 	if (!bfd_elf_link_record_local_dynamic_symbol
 	    (x->info, rent->sec->owner, hh->sym_indx))
-	  return FALSE;
+	  return false;
     }
 
   /* Take care of the GOT and PLT relocations.  */
@@ -1453,16 +1453,16 @@ 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;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
    regular object.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  struct elf_link_hash_entry *eh)
 {
@@ -1478,7 +1478,7 @@ elf64_hppa_adjust_dynamic_symbol (struct
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       eh->root.u.def.section = def->root.u.def.section;
       eh->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* If this is a reference to a symbol defined by a dynamic object which
@@ -1488,7 +1488,7 @@ elf64_hppa_adjust_dynamic_symbol (struct
      But PA64 code is canonically PIC, so as a rule we can avoid this sort
      of hackery.  */
 
-  return TRUE;
+  return true;
 }
 
 /* This function is called via elf_link_hash_traverse to mark millicode
@@ -1496,7 +1496,7 @@ elf64_hppa_adjust_dynamic_symbol (struct
    from the dynamic symbol table.  If the symbol is not a millicode symbol,
    elf64_hppa_mark_exported_functions is called.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_mark_milli_and_exported_functions (struct elf_link_hash_entry *eh,
 					      void *data)
 {
@@ -1510,7 +1510,7 @@ elf64_hppa_mark_milli_and_exported_funct
 	  _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
 				  eh->dynstr_index);
 	}
-      return TRUE;
+      return true;
     }
 
   return elf64_hppa_mark_exported_functions (eh, data);
@@ -1519,24 +1519,23 @@ elf64_hppa_mark_milli_and_exported_funct
 /* Set the final sizes of the dynamic sections and allocate memory for
    the contents of our special sections.  */
 
-static bfd_boolean
-elf64_hppa_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
+static bool
+elf64_hppa_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   struct elf64_hppa_link_hash_table *hppa_info;
   struct elf64_hppa_allocate_data data;
   bfd *dynobj;
   bfd *ibfd;
   asection *sec;
-  bfd_boolean plt;
-  bfd_boolean relocs;
-  bfd_boolean reltext;
+  bool relocs;
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   dynobj = hppa_info->root.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   /* Mark each function this program exports so that we will allocate
      space in the .opd section for each function's FPTR.  If we are
@@ -1560,6 +1559,7 @@ elf64_hppa_size_dynamic_sections (bfd *o
 	  BFD_ASSERT (sec != NULL);
 	  sec->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  sec->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  sec->alloced = 1;
 	}
     }
   else
@@ -1652,8 +1652,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 +1706,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 +1737,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;
+  relocs = false;
   for (sec = dynobj->sections; sec != NULL; sec = sec->next)
     {
       const char *name;
@@ -1754,41 +1752,23 @@ 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")
+	       || startswith (name, ".dlt")
 	       || strcmp (name, ".stub") == 0
 	       || strcmp (name, ".got") == 0)
 	{
 	  /* Strip this section if we don't need it; see the comment below.  */
 	}
-      else if (CONST_STRNEQ (name, ".rela"))
+      else if (startswith (name, ".rela"))
 	{
 	  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.  */
@@ -1829,7 +1809,8 @@ elf64_hppa_size_dynamic_sections (bfd *o
 	{
 	  sec->contents = (bfd_byte *) bfd_zalloc (dynobj, sec->size);
 	  if (sec->contents == NULL)
-	    return FALSE;
+	    return false;
+	  sec->alloced = 1;
 	}
     }
 
@@ -1841,9 +1822,8 @@ 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))
-	return FALSE;
+      if (!add_dynamic_entry (DT_HP_DLD_FLAGS, 0))
+	return false;
 
       /* Add some entries to the .dynamic section.  We fill in the
 	 values later, in elf64_hppa_finish_dynamic_sections, but we
@@ -1852,43 +1832,23 @@ 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;
+	    return false;
 	}
 
       /* Force DT_FLAGS to always be set.
-	 Required by HPUX 11.00 patch PHSS_26559.  */
-      if (!add_dynamic_entry (DT_FLAGS, (info)->flags))
-	return FALSE;
-
-      if (plt)
+	 Required by HPUX 11.00 patch PHSS_26559.
+	 PR 30743: But do not set them for non-HPUX targets.  */
+      if (output_bfd->xvec == & hppa_elf64_vec)
 	{
-	  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;
+	  if (!add_dynamic_entry (DT_FLAGS, (info)->flags))
+	    return false;
 	}
     }
 #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
@@ -1934,7 +1894,7 @@ elf64_hppa_link_output_symbol_hook (stru
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_finish_dynamic_symbol (bfd *output_bfd,
 				  struct bfd_link_info *info,
 				  struct elf_link_hash_entry *eh,
@@ -1945,13 +1905,11 @@ elf64_hppa_finish_dynamic_symbol (bfd *o
   struct elf64_hppa_link_hash_table *hppa_info;
 
   hppa_info = hppa_link_hash_table (info);
-  if (hppa_info == NULL)
-    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.
@@ -2078,7 +2036,7 @@ elf64_hppa_finish_dynamic_symbol (bfd *o
 	    /* xgettext:c-format */
 	    (_("stub entry for %s cannot load .plt, dp offset = %" PRId64),
 	     hh->eh.root.root.string, (int64_t) value);
-	  return FALSE;
+	  return false;
 	}
 
       bfd_put_32 (stub->owner, (bfd_vma) insn,
@@ -2101,13 +2059,13 @@ elf64_hppa_finish_dynamic_symbol (bfd *o
 		  stub->contents + hh->stub_offset + 8);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* The .opd section contains FPTRs for each function this file
    exports.  Initialize the FPTR entries.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_finalize_opd (struct elf_link_hash_entry *eh, void *data)
 {
   struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
@@ -2118,7 +2076,7 @@ elf64_hppa_finalize_opd (struct elf_link
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   sopd = hppa_info->opd_sec;
   sopdrel = hppa_info->opd_rel_sec;
@@ -2204,7 +2162,7 @@ elf64_hppa_finalize_opd (struct elf_link
 	  new_name = concat (".", eh->root.root.string, NULL);
 
 	  nh = elf_link_hash_lookup (elf_hash_table (info),
-				     new_name, TRUE, TRUE, FALSE);
+				     new_name, true, true, false);
 
 	  /* All we really want from the new symbol is its dynamic
 	     symbol index.  */
@@ -2220,14 +2178,14 @@ elf64_hppa_finalize_opd (struct elf_link
       loc += sopdrel->reloc_count++ * sizeof (Elf64_External_Rela);
       bfd_elf64_swap_reloca_out (info->output_bfd, &rel, loc);
     }
-  return TRUE;
+  return true;
 }
 
 /* The .dlt section contains addresses for items referenced through the
    dlt.  Note that we can have a DLTIND relocation for a local symbol, thus
    we can not depend on finish_dynamic_symbol to initialize the .dlt.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_finalize_dlt (struct elf_link_hash_entry *eh, void *data)
 {
   struct elf64_hppa_link_hash_entry *hh = hppa_elf_hash_entry (eh);
@@ -2237,7 +2195,7 @@ elf64_hppa_finalize_dlt (struct elf_link
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   sdlt = hppa_info->dlt_sec;
   sdltrel = hppa_info->dlt_rel_sec;
@@ -2315,13 +2273,13 @@ elf64_hppa_finalize_dlt (struct elf_link
       loc += sdltrel->reloc_count++ * sizeof (Elf64_External_Rela);
       bfd_elf64_swap_reloca_out (info->output_bfd, &rel, loc);
     }
-  return TRUE;
+  return true;
 }
 
 /* Finalize the dynamic relocations.  Specifically the FPTR relocations
    for dynamic functions used to initialize static data.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_finalize_dynreloc (struct elf_link_hash_entry *eh,
 			      void *data)
 {
@@ -2333,7 +2291,7 @@ elf64_hppa_finalize_dynreloc (struct elf
   dynamic_symbol = elf64_hppa_dynamic_symbol_p (eh, info);
 
   if (!dynamic_symbol && !bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   if (hh->reloc_entries)
     {
@@ -2342,7 +2300,7 @@ elf64_hppa_finalize_dynreloc (struct elf
 
       hppa_info = hppa_link_hash_table (info);
       if (hppa_info == NULL)
-	return FALSE;
+	return false;
 
       /* We may need to do a relocation against a local symbol, in
 	 which case we have to look up it's dynamic symbol index off
@@ -2433,7 +2391,7 @@ elf64_hppa_finalize_dynreloc (struct elf
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Used to decide how to sort relocs in an optimal manner for the
@@ -2460,7 +2418,7 @@ elf64_hppa_reloc_type_class (const struc
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_finish_dynamic_sections (bfd *output_bfd,
 				    struct bfd_link_info *info)
 {
@@ -2470,7 +2428,7 @@ elf64_hppa_finish_dynamic_sections (bfd
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   /* Finalize the contents of the .opd section.  */
   elf_link_hash_traverse (elf_hash_table (info),
@@ -2519,7 +2477,7 @@ elf64_hppa_finish_dynamic_sections (bfd
 		 to is find the start of the .data section.  */
 	      s = bfd_get_section_by_name (output_bfd, ".data");
 	      if (!s)
-		return FALSE;
+		return false;
 	      dyn.d_un.d_ptr = s->vma;
 	      bfd_elf64_swap_dyn_out (output_bfd, &dyn, dyncon);
 	      break;
@@ -2531,13 +2489,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 +2520,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;
@@ -2571,12 +2529,12 @@ elf64_hppa_finish_dynamic_sections (bfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -2585,7 +2543,7 @@ elf64_hppa_grok_prstatus (bfd *abfd, Elf
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 760:		/* Linux/hppa */
 	/* pr_cursig */
@@ -2606,7 +2564,7 @@ elf64_hppa_grok_prstatus (bfd *abfd, Elf
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf64_hppa_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   char * command;
@@ -2615,7 +2573,7 @@ elf64_hppa_grok_psinfo (bfd *abfd, Elf_I
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 136:		/* Linux/hppa elf_prpsinfo.  */
       elf_tdata (abfd)->core->program
@@ -2633,7 +2591,7 @@ elf64_hppa_grok_psinfo (bfd *abfd, Elf_I
   if (0 < n && command[n - 1] == ' ')
     command[n - 1] = '\0';
 
-  return TRUE;
+  return true;
 }
 
 /* Return the number of additional phdrs we will need.
@@ -2662,12 +2620,12 @@ elf64_hppa_additional_program_headers (b
   return 0;
 }
 
-static bfd_boolean
+static bool
 elf64_hppa_allow_non_load_phdr (bfd *abfd ATTRIBUTE_UNUSED,
 				const Elf_Internal_Phdr *phdr ATTRIBUTE_UNUSED,
 				unsigned int count ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* Allocate and initialize any program headers required by this
@@ -2683,7 +2641,7 @@ elf64_hppa_allow_non_load_phdr (bfd *abf
    to guess whether or not we are building a shared library based on the
    existence of a .interp section.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_segment_map *m;
@@ -2694,7 +2652,7 @@ elf64_hppa_modify_segment_map (bfd *abfd
       m = ((struct elf_segment_map *)
 	   bfd_zalloc (abfd, (bfd_size_type) sizeof *m));
       if (m == NULL)
-	return FALSE;
+	return false;
 
       m->p_type = PT_PHDR;
       m->p_flags = PF_R | PF_X;
@@ -2724,7 +2682,7 @@ elf64_hppa_modify_segment_map (bfd *abfd
 	  }
       }
 
-  return TRUE;
+  return true;
 }
 
 /* Called when writing out an object file to decide the type of a
@@ -2741,7 +2699,7 @@ elf64_hppa_elf_get_symbol_type (Elf_Inte
 
 /* Support HP specific sections for core files.  */
 
-static bfd_boolean
+static bool
 elf64_hppa_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int sec_index,
 			      const char *typename)
 {
@@ -2750,15 +2708,15 @@ elf64_hppa_section_from_phdr (bfd *abfd,
       asection *sect;
 
       if (!_bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename))
-	return FALSE;
+	return false;
 
       sect = bfd_make_section_anyway (abfd, ".kernel");
       if (sect == NULL)
-	return FALSE;
+	return false;
       sect->size = hdr->p_filesz;
       sect->filepos = hdr->p_offset;
       sect->flags = SEC_HAS_CONTENTS | SEC_READONLY;
-      return TRUE;
+      return true;
     }
 
   if (hdr->p_type == PT_HP_CORE_PROC)
@@ -2766,14 +2724,14 @@ elf64_hppa_section_from_phdr (bfd *abfd,
       int sig;
 
       if (bfd_seek (abfd, hdr->p_offset, SEEK_SET) != 0)
-	return FALSE;
-      if (bfd_bread (&sig, 4, abfd) != 4)
-	return FALSE;
+	return false;
+      if (bfd_read (&sig, 4, abfd) != 4)
+	return false;
 
       elf_tdata (abfd)->core->signal = sig;
 
       if (!_bfd_elf_make_section_from_phdr (abfd, hdr, sec_index, typename))
-	return FALSE;
+	return false;
 
       /* GDB uses the ".reg" section to read register contents.  */
       return _bfd_elfcore_make_pseudosection (abfd, ".reg", hdr->p_filesz,
@@ -2792,7 +2750,7 @@ elf64_hppa_section_from_phdr (bfd *abfd,
    file.  HP's libraries define symbols with HP specific section
    indices, which we have to handle.  */
 
-static bfd_boolean
+static bool
 elf_hppa_add_symbol_hook (bfd *abfd,
 			  struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			  Elf_Internal_Sym *sym,
@@ -2818,10 +2776,10 @@ elf_hppa_add_symbol_hook (bfd *abfd,
       break;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_hppa_unmark_useless_dynamic_symbols (struct elf_link_hash_entry *h,
 					 void *data)
 {
@@ -2849,10 +2807,10 @@ elf_hppa_unmark_useless_dynamic_symbols
       h->pointer_equality_needed = 1;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_hppa_remark_useless_dynamic_symbols (struct elf_link_hash_entry *h,
 					 void *data)
 {
@@ -2881,10 +2839,10 @@ elf_hppa_remark_useless_dynamic_symbols
       h->pointer_equality_needed = 0;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_hppa_is_dynamic_loader_symbol (const char *name)
 {
   return (! strcmp (name, "__CPU_REVISION")
@@ -2936,14 +2894,14 @@ elf_hppa_record_segment_addrs (bfd *abfd
    We use this hook to (possibly) provide a value for __gp, then we
    fall back to the generic ELF final link routine.  */
 
-static bfd_boolean
+static bool
 elf_hppa_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   struct stat buf;
   struct elf64_hppa_link_hash_table *hppa_info = hppa_link_hash_table (info);
 
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   if (! bfd_link_relocatable (info))
     {
@@ -2954,8 +2912,8 @@ elf_hppa_final_link (bfd *abfd, struct b
 	 by one of the objects being linked.  First try to find the symbol
 	 in the hash table.  If that fails, just compute the value __gp
 	 should have had.  */
-      gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", FALSE,
-				 FALSE, FALSE);
+      gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", false,
+				 false, false);
 
       if (gp)
 	{
@@ -2980,7 +2938,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
@@ -3024,7 +2982,7 @@ elf_hppa_final_link (bfd *abfd, struct b
 
   /* Invoke the regular ELF backend linker to do all the work.  */
   if (!bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
   elf_link_hash_traverse (elf_hash_table (info),
 			  elf_hppa_remark_useless_dynamic_symbols,
@@ -3033,14 +2991,14 @@ elf_hppa_final_link (bfd *abfd, struct b
   /* If we're producing a final executable, sort the contents of the
      unwind section. */
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* 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;
+    return true;
 
   return elf_hppa_sort_unwind (abfd);
 }
@@ -3529,8 +3487,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,
@@ -3735,7 +3693,7 @@ elf_hppa_final_link_relocate (Elf_Intern
       }
 
     case R_PARISC_SECREL32:
-      if (sym_sec)
+      if (sym_sec && sym_sec->output_section)
 	value -= sym_sec->output_section->vma;
       bfd_put_32 (input_bfd, value + addend, hit_data);
       return bfd_reloc_ok;
@@ -3781,7 +3739,7 @@ elf_hppa_final_link_relocate (Elf_Intern
 
 /* Relocate an HPPA ELF section.  */
 
-static bfd_boolean
+static int
 elf64_hppa_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -3798,7 +3756,7 @@ elf64_hppa_relocate_section (bfd *output
 
   hppa_info = hppa_link_hash_table (info);
   if (hppa_info == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 
@@ -3819,7 +3777,7 @@ elf64_hppa_relocate_section (bfd *output
       if (r_type < 0 || r_type >= (int) R_PARISC_UNIMPLEMENTED)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       if (r_type == (unsigned int) R_PARISC_GNU_VTENTRY
 	  || r_type == (unsigned int) R_PARISC_GNU_VTINHERIT)
@@ -3845,7 +3803,7 @@ elf64_hppa_relocate_section (bfd *output
 	  /* It seems this can happen with erroneous or unsupported
 	     input (mixing a.out and elf in an archive, for example.)  */
 	  if (sym_hashes == NULL)
-	    return FALSE;
+	    return false;
 
 	  eh = sym_hashes[r_symndx - symtab_hdr->sh_info];
 
@@ -3879,14 +3837,15 @@ elf64_hppa_relocate_section (bfd *output
 	    continue;
 	  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);
+	      bool 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,15 +3857,16 @@ 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);
+		   input_section, rel->r_offset, false);
 	    }
 	}
 
       if (sym_sec != NULL && discarded_section (sym_sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_PARISC_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -3934,7 +3894,7 @@ elf64_hppa_relocate_section (bfd *output
 								symtab_hdr->sh_link,
 								sym->st_name);
 		    if (sym_name == NULL)
-		      return FALSE;
+		      return false;
 		    if (*sym_name == '\0')
 		      sym_name = bfd_section_name (sym_sec);
 		  }
@@ -3947,7 +3907,7 @@ elf64_hppa_relocate_section (bfd *output
 	    }
 	}
     }
-  return TRUE;
+  return true;
 }
 
 static const struct bfd_elf_special_section elf64_hppa_special_sections[] =
@@ -4030,8 +3990,7 @@ const struct elf_size_info hppa64_elf_si
 #define elf_backend_adjust_dynamic_symbol \
 					elf64_hppa_adjust_dynamic_symbol
 
-#define elf_backend_size_dynamic_sections \
-					elf64_hppa_size_dynamic_sections
+#define elf_backend_late_size_sections	elf64_hppa_late_size_sections
 
 #define elf_backend_finish_dynamic_symbol \
 					elf64_hppa_finish_dynamic_symbol
@@ -4066,7 +4025,7 @@ const struct elf_size_info hppa64_elf_si
 #define elf_backend_plt_readonly	0
 #define elf_backend_want_plt_sym	0
 #define elf_backend_got_header_size     0
-#define elf_backend_type_change_ok	TRUE
+#define elf_backend_type_change_ok	true
 #define elf_backend_get_symbol_type	elf64_hppa_elf_get_symbol_type
 #define elf_backend_reloc_type_class	elf64_hppa_reloc_type_class
 #define elf_backend_rela_normal		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.20200303/bfd/elf64-hppa.h ./bfd/elf64-hppa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-hppa.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-hppa.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* ELF64/HPPA support
 
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 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.20200303/bfd/elf64-ia64-vms.c ./bfd/elf64-ia64-vms.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-ia64-vms.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-ia64-vms.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* IA-64 support for OpenVMS
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -170,15 +170,16 @@ 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
 {
   struct elf_obj_tdata root;
 
   /* Ident for shared library.  */
-  bfd_uint64_t ident;
+  uint64_t ident;
 
   /* Used only during link: offset in the .fixups section for this bfd.  */
   bfd_vma fixups_off;
@@ -215,22 +216,22 @@ typedef struct
 static struct elf64_ia64_dyn_sym_info * get_dyn_sym_info
   (struct elf64_ia64_link_hash_table *,
    struct elf_link_hash_entry *,
-   bfd *, const Elf_Internal_Rela *, bfd_boolean);
-static bfd_boolean elf64_ia64_dynamic_symbol_p
+   bfd *, const Elf_Internal_Rela *, bool);
+static bool elf64_ia64_dynamic_symbol_p
   (struct elf_link_hash_entry *);
-static bfd_boolean elf64_ia64_choose_gp
-  (bfd *, struct bfd_link_info *, bfd_boolean);
+static bool elf64_ia64_choose_gp
+  (bfd *, struct bfd_link_info *, bool);
 static void elf64_ia64_dyn_sym_traverse
   (struct elf64_ia64_link_hash_table *,
-   bfd_boolean (*) (struct elf64_ia64_dyn_sym_info *, void *),
+   bool (*) (struct elf64_ia64_dyn_sym_info *, void *),
    void *);
-static bfd_boolean allocate_global_data_got
+static bool allocate_global_data_got
   (struct elf64_ia64_dyn_sym_info *, void *);
-static bfd_boolean allocate_global_fptr_got
+static bool allocate_global_fptr_got
   (struct elf64_ia64_dyn_sym_info *, void *);
-static bfd_boolean allocate_local_got
+static bool allocate_local_got
   (struct elf64_ia64_dyn_sym_info *, void *);
-static bfd_boolean allocate_dynrel_entries
+static bool allocate_dynrel_entries
   (struct elf64_ia64_dyn_sym_info *, void *);
 static asection *get_pltoff
   (bfd *, struct elf64_ia64_link_hash_table *);
@@ -240,7 +241,7 @@ static asection *get_got
 
 /* Given a ELF reloc, return the matching HOWTO structure.  */
 
-static bfd_boolean
+static bool
 elf64_ia64_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 			  arelent *bfd_reloc,
 			  Elf_Internal_Rela *elf_reloc)
@@ -254,10 +255,10 @@ elf64_ia64_info_to_howto (bfd *abfd ATTR
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -329,10 +330,10 @@ elf64_ia64_update_short_info (asection *
    the other relaxations are done.
 */
 
-static bfd_boolean
+static bool
 elf64_ia64_relax_section (bfd *abfd, asection *sec,
 			  struct bfd_link_info *link_info,
-			  bfd_boolean *again)
+			  bool *again)
 {
   struct one_fixup
     {
@@ -349,35 +350,36 @@ elf64_ia64_relax_section (bfd *abfd, ase
   Elf_Internal_Sym *isymbuf = NULL;
   struct elf64_ia64_link_hash_table *ia64_info;
   struct one_fixup *fixups = NULL;
-  bfd_boolean changed_contents = FALSE;
-  bfd_boolean changed_relocs = FALSE;
-  bfd_boolean skip_relax_pass_0 = TRUE;
-  bfd_boolean skip_relax_pass_1 = TRUE;
+  bool changed_contents = false;
+  bool changed_relocs = false;
+  bool skip_relax_pass_0 = true;
+  bool skip_relax_pass_1 = true;
   bfd_vma gp = 0;
 
   /* Assume we're not going to change any sizes, and we'll only need
      one pass.  */
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (link_info))
-    (*link_info->callbacks->einfo)
-      (_("%P%F: --relax and -r may not be used together\n"));
+    link_info->callbacks->fatal
+      (_("%P: --relax and -r may not be used together\n"));
 
   /* Don't even try to relax for non-ELF outputs.  */
   if (!is_elf_hash_table (link_info->hash))
-    return FALSE;
+    return false;
 
   /* Nothing to do if there are no relocations or there is no need for
      the current pass.  */
-  if ((sec->flags & SEC_RELOC) == 0
-      || sec->reloc_count == 0
+  if (sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (link_info->relax_pass == 0 && sec->skip_relax_pass_0)
       || (link_info->relax_pass == 1 && sec->skip_relax_pass_1))
-    return TRUE;
+    return true;
 
   ia64_info = elf64_ia64_hash_table (link_info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -386,7 +388,7 @@ elf64_ia64_relax_section (bfd *abfd, ase
 		     (abfd, sec, NULL, (Elf_Internal_Rela *) NULL,
 		      link_info->keep_memory));
   if (internal_relocs == NULL)
-    return FALSE;
+    return false;
 
   irelend = internal_relocs + sec->reloc_count;
 
@@ -406,7 +408,7 @@ elf64_ia64_relax_section (bfd *abfd, ase
       asection *tsec;
       struct one_fixup *f;
       bfd_size_type amt;
-      bfd_boolean is_branch;
+      bool is_branch;
       struct elf64_ia64_dyn_sym_info *dyn_i;
 
       switch (r_type)
@@ -418,8 +420,8 @@ elf64_ia64_relax_section (bfd *abfd, ase
 	  /* In pass 1, all br relaxations are done. We can skip it. */
 	  if (link_info->relax_pass == 1)
 	    continue;
-	  skip_relax_pass_0 = FALSE;
-	  is_branch = TRUE;
+	  skip_relax_pass_0 = false;
+	  is_branch = true;
 	  break;
 
 	case R_IA64_PCREL60B:
@@ -427,10 +429,10 @@ elf64_ia64_relax_section (bfd *abfd, ase
 	     will increase the code size. Defer it to pass 1.  */
 	  if (link_info->relax_pass == 0)
 	    {
-	      skip_relax_pass_1 = FALSE;
+	      skip_relax_pass_1 = false;
 	      continue;
 	    }
-	  is_branch = TRUE;
+	  is_branch = true;
 	  break;
 
 	case R_IA64_GPREL22:
@@ -442,10 +444,10 @@ elf64_ia64_relax_section (bfd *abfd, ase
 	     increase the code size. Defer it to pass 1.  */
 	  if (link_info->relax_pass == 0)
 	    {
-	      skip_relax_pass_1 = FALSE;
+	      skip_relax_pass_1 = false;
 	      continue;
 	    }
-	  is_branch = FALSE;
+	  is_branch = false;
 	  break;
 
 	default:
@@ -483,7 +485,7 @@ elf64_ia64_relax_section (bfd *abfd, ase
 	    tsec = bfd_section_from_elf_index (abfd, isym->st_shndx);
 
 	  toff = isym->st_value;
-	  dyn_i = get_dyn_sym_info (ia64_info, NULL, abfd, irel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, NULL, abfd, irel, false);
 	}
       else
 	{
@@ -498,7 +500,7 @@ elf64_ia64_relax_section (bfd *abfd, ase
 		 || h->root.type == bfd_link_hash_warning)
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  dyn_i = get_dyn_sym_info (ia64_info, h, abfd, irel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, abfd, irel, false);
 
 	  /* For branches to dynamic symbols, we're interested instead
 	     in a branch to the PLT entry.  */
@@ -685,8 +687,8 @@ elf64_ia64_relax_section (bfd *abfd, ase
 	      != bfd_reloc_ok)
 	    goto error_return;
 
-	  changed_contents = TRUE;
-	  changed_relocs = TRUE;
+	  changed_contents = true;
+	  changed_relocs = true;
 	}
       else
 	{
@@ -697,7 +699,7 @@ elf64_ia64_relax_section (bfd *abfd, ase
 	      gp = _bfd_get_gp_value (obfd);
 	      if (gp == 0)
 		{
-		  if (!elf64_ia64_choose_gp (obfd, link_info, FALSE))
+		  if (!elf64_ia64_choose_gp (obfd, link_info, false))
 		    goto error_return;
 		  gp = _bfd_get_gp_value (obfd);
 		}
@@ -720,7 +722,7 @@ elf64_ia64_relax_section (bfd *abfd, ase
 
 	      irel->r_info = ELF64_R_INFO (ELF64_R_SYM (irel->r_info),
 					   R_IA64_GPREL22);
-	      changed_relocs = TRUE;
+	      changed_relocs = true;
 
 	      elf64_ia64_update_short_info (tsec->output_section,
 					    tsec->output_offset + toff,
@@ -730,8 +732,8 @@ elf64_ia64_relax_section (bfd *abfd, ase
 	    {
 	      ia64_elf_relax_ldxmov (contents, roff);
 	      irel->r_info = ELF64_R_INFO (0, R_IA64_NONE);
-	      changed_contents = TRUE;
-	      changed_relocs = TRUE;
+	      changed_contents = true;
+	      changed_relocs = true;
 	    }
 	}
     }
@@ -789,30 +791,28 @@ elf64_ia64_relax_section (bfd *abfd, ase
     }
 
   *again = changed_contents || changed_relocs;
-  return TRUE;
+  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;
+  return false;
 }
 #undef skip_relax_pass_0
 #undef skip_relax_pass_1
 
 /* Return TRUE if NAME is an unwind table section name.  */
 
-static inline bfd_boolean
+static inline bool
 is_unwind_section_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
 {
-  return ((CONST_STRNEQ (name, ELF_STRING_ia64_unwind)
-	   && ! CONST_STRNEQ (name, ELF_STRING_ia64_unwind_info))
-	  || CONST_STRNEQ (name, ELF_STRING_ia64_unwind_once));
+  return ((startswith (name, ELF_STRING_ia64_unwind)
+	   && ! startswith (name, ELF_STRING_ia64_unwind_info))
+	  || startswith (name, ELF_STRING_ia64_unwind_once));
 }
 
 
@@ -821,20 +821,19 @@ is_unwind_section_name (bfd *abfd ATTRIB
 /* ??? There is no bfd internal flag equivalent to the SHF_IA_64_NORECOV
    flag.  */
 
-static bfd_boolean
-elf64_ia64_section_flags (flagword *flags,
-			  const Elf_Internal_Shdr *hdr)
+static bool
+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;
+  return true;
 }
 
 /* Set the correct type for an IA-64 ELF section.  We do this by the
    section name, which is a hack, but ought to work.  */
 
-static bfd_boolean
+static bool
 elf64_ia64_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr,
 			  asection *sec)
 {
@@ -855,13 +854,13 @@ elf64_ia64_fake_sections (bfd *abfd, Elf
   if (sec->flags & SEC_SMALL_DATA)
     hdr->sh_flags |= SHF_IA_64_SHORT;
 
-  return TRUE;
+  return true;
 }
 
 /* Hook called by the linker routine which adds symbols from an object
    file.  We use it to put .comm items in .sbss, and not .bss.  */
 
-static bfd_boolean
+static bool
 elf64_ia64_add_symbol_hook (bfd *abfd,
 			    struct bfd_link_info *info,
 			    Elf_Internal_Sym *sym,
@@ -884,22 +883,23 @@ 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;
+	    return false;
 	}
 
       *secp = scomm;
       *valp = sym->st_size;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* According to the Tahoe assembler spec, all labels starting with a
    '.' are local.  */
 
-static bfd_boolean
+static bool
 elf64_ia64_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 				const char *name)
 {
@@ -908,7 +908,7 @@ elf64_ia64_is_local_label_name (bfd *abf
 
 /* Should we do dynamic things to this symbol?  */
 
-static bfd_boolean
+static bool
 elf64_ia64_dynamic_symbol_p (struct elf_link_hash_entry *h)
 {
   return h != NULL && h->def_dynamic;
@@ -945,7 +945,7 @@ elf64_ia64_new_elf_hash_entry (struct bf
 static void
 elf64_ia64_hash_hide_symbol (struct bfd_link_info *info,
 			     struct elf_link_hash_entry *xh,
-			     bfd_boolean force_local)
+			     bool force_local)
 {
   struct elf64_ia64_link_hash_entry *h;
   struct elf64_ia64_dyn_sym_info *dyn_i;
@@ -990,8 +990,8 @@ elf64_ia64_local_htab_eq (const void *pt
 
 /* Free the global elf64_ia64_dyn_sym_info array.  */
 
-static bfd_boolean
-elf64_ia64_global_dyn_info_free (void **xentry,
+static bool
+elf64_ia64_global_dyn_info_free (struct elf_link_hash_entry *xentry,
 				 void * unused ATTRIBUTE_UNUSED)
 {
   struct elf64_ia64_link_hash_entry *entry
@@ -1000,37 +1000,31 @@ 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;
+  return true;
 }
 
 /* Free the local elf64_ia64_dyn_sym_info array.  */
 
-static bfd_boolean
+static int
 elf64_ia64_local_dyn_info_free (void **slot,
 				void * unused ATTRIBUTE_UNUSED)
 {
   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;
+  return true;
 }
 
 /* Destroy IA-64 linker hash table.  */
@@ -1068,8 +1062,7 @@ elf64_ia64_hash_table_create (bfd *abfd)
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      elf64_ia64_new_elf_hash_entry,
-				      sizeof (struct elf64_ia64_link_hash_entry),
-				      IA64_ELF_DATA))
+				      sizeof (struct elf64_ia64_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1092,12 +1085,12 @@ elf64_ia64_hash_table_create (bfd *abfd)
 
 struct elf64_ia64_dyn_sym_traverse_data
 {
-  bfd_boolean (*func) (struct elf64_ia64_dyn_sym_info *, void *);
+  bool (*func) (struct elf64_ia64_dyn_sym_info *, void *);
   void * data;
 };
 
-static bfd_boolean
-elf64_ia64_global_dyn_sym_thunk (struct bfd_hash_entry *xentry,
+static bool
+elf64_ia64_global_dyn_sym_thunk (struct elf_link_hash_entry *xentry,
 				 void * xdata)
 {
   struct elf64_ia64_link_hash_entry *entry
@@ -1114,11 +1107,11 @@ elf64_ia64_global_dyn_sym_thunk (struct
        count != 0;
        count--, dyn_i++)
     if (! (*data->func) (dyn_i, data->data))
-      return FALSE;
-  return TRUE;
+      return false;
+  return true;
 }
 
-static bfd_boolean
+static int
 elf64_ia64_local_dyn_sym_thunk (void **slot, void * xdata)
 {
   struct elf64_ia64_local_hash_entry *entry
@@ -1132,13 +1125,13 @@ elf64_ia64_local_dyn_sym_thunk (void **s
        count != 0;
        count--, dyn_i++)
     if (! (*data->func) (dyn_i, data->data))
-      return FALSE;
-  return TRUE;
+      return false;
+  return true;
 }
 
 static void
 elf64_ia64_dyn_sym_traverse (struct elf64_ia64_link_hash_table *ia64_info,
-			     bfd_boolean (*func) (struct elf64_ia64_dyn_sym_info *, void *),
+			     bool (*func) (struct elf64_ia64_dyn_sym_info *, void *),
 			     void * data)
 {
   struct elf64_ia64_dyn_sym_traverse_data xdata;
@@ -1154,7 +1147,7 @@ elf64_ia64_dyn_sym_traverse (struct elf6
 
 #define NOTE_NAME "IPF/VMS"
 
-static bfd_boolean
+static bool
 create_ia64_vms_notes (bfd *abfd, struct bfd_link_info *info,
 		       unsigned int time_hi, unsigned int time_lo)
 {
@@ -1173,7 +1166,7 @@ create_ia64_vms_notes (bfd *abfd, struct
 
   ia64_info = elf64_ia64_hash_table (info);
 
-  module_name = vms_get_module_name (bfd_get_filename (abfd), TRUE);
+  module_name = vms_get_module_name (bfd_get_filename (abfd), true);
   module_name_len = strlen (module_name) + 1;
 
   bfd_putl32 (time_lo, cur_time + 0);
@@ -1209,7 +1202,7 @@ create_ia64_vms_notes (bfd *abfd, struct
   orig_dyn_size = (sizeof (*orig_dyn) + sizeof (IMG_ID) - 1 + 7) & ~7;
   orig_dyn = bfd_zalloc (abfd, orig_dyn_size);
   if (orig_dyn == NULL)
-    return FALSE;
+    return false;
   bfd_putl32 (1, orig_dyn->major_id);
   bfd_putl32 (3, orig_dyn->minor_id);
   memcpy (orig_dyn->manipulation_date, cur_time, sizeof (cur_time));
@@ -1235,7 +1228,7 @@ create_ia64_vms_notes (bfd *abfd, struct
   /* Malloc a temporary buffer large enough for most notes */
   note_contents = (unsigned char *) bfd_zalloc (abfd, note_size);
   if (note_contents == NULL)
-    return FALSE;
+    return false;
   noteptr = note_contents;
 
   /* Fill notes.  */
@@ -1255,14 +1248,15 @@ create_ia64_vms_notes (bfd *abfd, struct
     }
 
   ia64_info->note_sec->contents = note_contents;
+  ia64_info->note_sec->alloced = 1;
   ia64_info->note_sec->size = note_size;
 
   free (module_name);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_ia64_create_dynamic_sections (bfd *abfd,
 				    struct bfd_link_info *info)
 {
@@ -1273,10 +1267,10 @@ elf64_ia64_create_dynamic_sections (bfd
 
   ia64_info = elf64_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   if (elf_hash_table (info)->dynamic_sections_created)
-    return TRUE;
+    return true;
 
   abfd = elf_hash_table (info)->dynobj;
   bed = get_elf_backend_data (abfd);
@@ -1287,19 +1281,19 @@ elf64_ia64_create_dynamic_sections (bfd
 					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
   ia64_info->root.splt = s;
 
   if (!get_got (abfd, ia64_info))
-    return FALSE;
+    return false;
 
   if (!get_pltoff (abfd, ia64_info))
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".vmsdynstr",
 					  (SEC_ALLOC
@@ -1308,7 +1302,7 @@ elf64_ia64_create_dynamic_sections (bfd
 					   | SEC_LINKER_CREATED));
   if (s == NULL
       || !bfd_set_section_alignment (s, 0))
-    return FALSE;
+    return false;
 
   /* Create a fixup section.  */
   s = bfd_make_section_anyway_with_flags (abfd, ".fixups",
@@ -1318,7 +1312,7 @@ elf64_ia64_create_dynamic_sections (bfd
 					   | SEC_LINKER_CREATED));
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
   ia64_info->fixups_sec = s;
 
   /* Create the transfer fixup section.  */
@@ -1329,7 +1323,7 @@ elf64_ia64_create_dynamic_sections (bfd
 					   | SEC_LINKER_CREATED));
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
   s->size = sizeof (struct elf64_vms_transfer);
   ia64_info->transfer_sec = s;
 
@@ -1341,18 +1335,18 @@ elf64_ia64_create_dynamic_sections (bfd
 					   | SEC_READONLY));
   if (s == NULL
       || !bfd_set_section_alignment (s, 3))
-    return FALSE;
+    return false;
   ia64_info->note_sec = s;
 
-  elf_hash_table (info)->dynamic_sections_created = TRUE;
-  return TRUE;
+  elf_hash_table (info)->dynamic_sections_created = true;
+  return true;
 }
 
 /* Find and/or create a hash entry for local symbol.  */
 static struct elf64_ia64_local_hash_entry *
 get_local_sym_hash (struct elf64_ia64_link_hash_table *ia64_info,
 		    bfd *abfd, const Elf_Internal_Rela *rel,
-		    bfd_boolean create)
+		    bool create)
 {
   struct elf64_ia64_local_hash_entry e, *ret;
   asection *sec = abfd->sections;
@@ -1582,7 +1576,7 @@ sort_dyn_sym_info (struct elf64_ia64_dyn
 static struct elf64_ia64_dyn_sym_info *
 get_dyn_sym_info (struct elf64_ia64_link_hash_table *ia64_info,
 		  struct elf_link_hash_entry *h, bfd *abfd,
-		  const Elf_Internal_Rela *rel, bfd_boolean create)
+		  const Elf_Internal_Rela *rel, bool create)
 {
   struct elf64_ia64_dyn_sym_info **info_p, *info, *dyn_i, key;
   unsigned int *count_p, *sorted_count_p, *size_p;
@@ -1674,7 +1668,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));
@@ -1842,7 +1836,7 @@ get_pltoff (bfd *abfd, struct elf64_ia64
 static asection *
 get_reloc_section (bfd *abfd,
 		   struct elf64_ia64_link_hash_table *ia64_info,
-		   asection *sec, bfd_boolean create)
+		   asection *sec, bool create)
 {
   const char *srel_name;
   asection *srel;
@@ -1854,9 +1848,9 @@ get_reloc_section (bfd *abfd,
   if (srel_name == NULL)
     return NULL;
 
-  BFD_ASSERT ((CONST_STRNEQ (srel_name, ".rela")
+  BFD_ASSERT ((startswith (srel_name, ".rela")
 	       && strcmp (bfd_section_name (sec), srel_name+5) == 0)
-	      || (CONST_STRNEQ (srel_name, ".rel")
+	      || (startswith (srel_name, ".rel")
 		  && strcmp (bfd_section_name (sec), srel_name+4) == 0));
 
   dynobj = ia64_info->root.dynobj;
@@ -1880,7 +1874,7 @@ get_reloc_section (bfd *abfd,
   return srel;
 }
 
-static bfd_boolean
+static bool
 count_dyn_reloc (bfd *abfd, struct elf64_ia64_dyn_sym_info *dyn_i,
 		 asection *srel, int type)
 {
@@ -1895,7 +1889,7 @@ count_dyn_reloc (bfd *abfd, struct elf64
       rent = ((struct elf64_ia64_dyn_reloc_entry *)
 	      bfd_alloc (abfd, (bfd_size_type) sizeof (*rent)));
       if (!rent)
-	return FALSE;
+	return false;
 
       rent->next = dyn_i->reloc_entries;
       rent->srel = srel;
@@ -1905,10 +1899,10 @@ count_dyn_reloc (bfd *abfd, struct elf64
     }
   rent->count++;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_ia64_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			 asection *sec,
 			 const Elf_Internal_Rela *relocs)
@@ -1931,15 +1925,15 @@ elf64_ia64_check_relocs (bfd *abfd, stru
   int need_entry;
   struct elf_link_hash_entry *h;
   unsigned long r_symndx;
-  bfd_boolean maybe_dynamic;
+  bool maybe_dynamic;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   ia64_info = elf64_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   got = fptr = srel = pltoff = NULL;
 
@@ -2084,8 +2078,8 @@ elf64_ia64_check_relocs (bfd *abfd, stru
 	     abfd, 0, (bfd_vma) 0);
 	}
 
-      if (get_dyn_sym_info (ia64_info, h, abfd, rel, TRUE) == NULL)
-	return FALSE;
+      if (get_dyn_sym_info (ia64_info, h, abfd, rel, true) == NULL)
+	return false;
     }
 
   /* Now, we only do lookup without insertion, which is very fast
@@ -2224,7 +2218,7 @@ elf64_ia64_check_relocs (bfd *abfd, stru
       if (!need_entry)
 	continue;
 
-      dyn_i = get_dyn_sym_info (ia64_info, h, abfd, rel, FALSE);
+      dyn_i = get_dyn_sym_info (ia64_info, h, abfd, rel, false);
 
       /* Record whether or not this is a local symbol.  */
       dyn_i->h = h;
@@ -2236,7 +2230,7 @@ elf64_ia64_check_relocs (bfd *abfd, stru
 	    {
 	      got = get_got (abfd, ia64_info);
 	      if (!got)
-		return FALSE;
+		return false;
 	    }
 	  if (need_entry & NEED_GOT)
 	    dyn_i->want_got = 1;
@@ -2250,7 +2244,7 @@ elf64_ia64_check_relocs (bfd *abfd, stru
 	    {
 	      fptr = get_fptr (abfd, info, ia64_info);
 	      if (!fptr)
-		return FALSE;
+		return false;
 	    }
 	  dyn_i->want_fptr = 1;
 	}
@@ -2273,7 +2267,7 @@ elf64_ia64_check_relocs (bfd *abfd, stru
 	    {
 	      pltoff = get_pltoff (abfd, ia64_info);
 	      if (!pltoff)
-		return FALSE;
+		return false;
 	    }
 
 	  dyn_i->want_pltoff = 1;
@@ -2282,22 +2276,22 @@ elf64_ia64_check_relocs (bfd *abfd, stru
 	{
 	  if (!srel)
 	    {
-	      srel = get_reloc_section (abfd, ia64_info, sec, TRUE);
+	      srel = get_reloc_section (abfd, ia64_info, sec, true);
 	      if (!srel)
-		return FALSE;
+		return false;
 	    }
 	  if (!count_dyn_reloc (abfd, dyn_i, srel, dynrel_type))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* For cleanliness, and potentially faster dynamic loading, allocate
    external GOT entries first.  */
 
-static bfd_boolean
+static bool
 allocate_global_data_got (struct elf64_ia64_dyn_sym_info *dyn_i,
 			  void * data)
 {
@@ -2311,12 +2305,12 @@ allocate_global_data_got (struct elf64_i
        dyn_i->got_offset = x->ofs;
        x->ofs += 8;
      }
-  return TRUE;
+  return true;
 }
 
 /* Next, allocate all the GOT entries used by LTOFF_FPTR relocs.  */
 
-static bfd_boolean
+static bool
 allocate_global_fptr_got (struct elf64_ia64_dyn_sym_info *dyn_i,
 			  void * data)
 {
@@ -2329,12 +2323,12 @@ allocate_global_fptr_got (struct elf64_i
       dyn_i->got_offset = x->ofs;
       x->ofs += 8;
     }
-  return TRUE;
+  return true;
 }
 
 /* Lastly, allocate all the GOT entries for local data.  */
 
-static bfd_boolean
+static bool
 allocate_local_got (struct elf64_ia64_dyn_sym_info *dyn_i,
 		    void * data)
 {
@@ -2346,13 +2340,13 @@ allocate_local_got (struct elf64_ia64_dy
       dyn_i->got_offset = x->ofs;
       x->ofs += 8;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate function descriptors.  We can do these for every function
    in a main executable that is not exported.  */
 
-static bfd_boolean
+static bool
 allocate_fptr (struct elf64_ia64_dyn_sym_info *dyn_i, void * data)
 {
   struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *) data;
@@ -2375,12 +2369,12 @@ allocate_fptr (struct elf64_ia64_dyn_sym
       else
 	dyn_i->want_fptr = 0;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate all the minimal PLT entries.  */
 
-static bfd_boolean
+static bool
 allocate_plt_entries (struct elf64_ia64_dyn_sym_info *dyn_i,
 		      void * data ATTRIBUTE_UNUSED)
 {
@@ -2404,12 +2398,12 @@ allocate_plt_entries (struct elf64_ia64_
 	  dyn_i->want_plt2 = 0;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate all the full PLT entries.  */
 
-static bfd_boolean
+static bool
 allocate_plt2_entries (struct elf64_ia64_dyn_sym_info *dyn_i,
 		       void * data)
 {
@@ -2428,7 +2422,7 @@ allocate_plt2_entries (struct elf64_ia64
 	h = (struct elf_link_hash_entry *) h->root.u.i.link;
       dyn_i->h->plt.offset = ofs;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate all the PLTOFF entries requested by relocations and
@@ -2436,7 +2430,7 @@ allocate_plt2_entries (struct elf64_ia64
    because the latter are not necessarily addressable by the GP.
    ??? Relaxation might be able to determine that they are.  */
 
-static bfd_boolean
+static bool
 allocate_pltoff_entries (struct elf64_ia64_dyn_sym_info *dyn_i,
 			 void * data)
 {
@@ -2447,25 +2441,25 @@ allocate_pltoff_entries (struct elf64_ia
       dyn_i->pltoff_offset = x->ofs;
       x->ofs += 16;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate dynamic relocations for those symbols that turned out
    to be dynamic.  */
 
-static bfd_boolean
+static bool
 allocate_dynrel_entries (struct elf64_ia64_dyn_sym_info *dyn_i,
 			 void * data)
 {
   struct elf64_ia64_allocate_data *x = (struct elf64_ia64_allocate_data *)data;
   struct elf64_ia64_link_hash_table *ia64_info;
   struct elf64_ia64_dyn_reloc_entry *rent;
-  bfd_boolean dynamic_symbol, shared, resolved_zero;
+  bool dynamic_symbol, shared, resolved_zero;
   struct elf64_ia64_link_hash_entry *h_ia64;
 
   ia64_info = elf64_ia64_hash_table (x->info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   /* Note that this can't be used in relation to FPTR relocs below.  */
   dynamic_symbol = elf64_ia64_dynamic_symbol_p (dyn_i->h);
@@ -2519,8 +2513,6 @@ allocate_dynrel_entries (struct elf64_ia
 
   for (rent = dyn_i->reloc_entries; rent; rent = rent->next)
     {
-      int count = rent->count;
-
       switch (rent->type)
 	{
 	case R_IA64_FPTR32LSB:
@@ -2545,10 +2537,6 @@ allocate_dynrel_entries (struct elf64_ia
 	case R_IA64_IPLTLSB:
 	  if (!dynamic_symbol && !shared)
 	    continue;
-	  /* Use two REL relocations for IPLT relocations
-	     against local symbols.  */
-	  if (!dynamic_symbol)
-	    count *= 2;
 	  break;
 	case R_IA64_DTPREL32LSB:
 	case R_IA64_TPREL64LSB:
@@ -2570,10 +2558,10 @@ allocate_dynrel_entries (struct elf64_ia
 	sizeof (Elf64_External_VMS_IMAGE_FIXUP);
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_ia64_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  struct elf_link_hash_entry *h)
 {
@@ -2589,7 +2577,7 @@ elf64_ia64_adjust_dynamic_symbol (struct
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* If this is a reference to a symbol defined by a dynamic object which
@@ -2599,12 +2587,12 @@ elf64_ia64_adjust_dynamic_symbol (struct
      But IA-64 code is canonically PIC, so as a rule we can avoid this sort
      of hackery.  */
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-elf64_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				  struct bfd_link_info *info)
+static bool
+elf64_ia64_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			       struct bfd_link_info *info)
 {
   struct elf64_ia64_allocate_data data;
   struct elf64_ia64_link_hash_table *ia64_info;
@@ -2613,11 +2601,12 @@ elf64_ia64_size_dynamic_sections (bfd *o
   struct elf_link_hash_table *hash_table;
 
   hash_table = elf_hash_table (info);
-  dynobj = hash_table->dynobj;
   ia64_info = elf64_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
-  BFD_ASSERT(dynobj != NULL);
+    return false;
+  dynobj = hash_table->dynobj;
+  if (dynobj == NULL)
+    return true;
   data.info = info;
 
   /* Allocate the GOT entries.  */
@@ -2683,7 +2672,7 @@ elf64_ia64_size_dynamic_sections (bfd *o
      Allocate memory for them.  */
   for (sec = dynobj->sections; sec != NULL; sec = sec->next)
     {
-      bfd_boolean strip;
+      bool strip;
 
       if (!(sec->flags & SEC_LINKER_CREATED))
 	continue;
@@ -2699,7 +2688,7 @@ elf64_ia64_size_dynamic_sections (bfd *o
       strip = (sec->size == 0);
 
       if (sec == ia64_info->root.sgot)
-	strip = FALSE;
+	strip = false;
       else if (sec == ia64_info->root.srelgot)
 	{
 	  if (strip)
@@ -2751,8 +2740,8 @@ elf64_ia64_size_dynamic_sections (bfd *o
 	  name = bfd_section_name (sec);
 
 	  if (strcmp (name, ".got.plt") == 0)
-	    strip = FALSE;
-	  else if (CONST_STRNEQ (name, ".rel"))
+	    strip = false;
+	  else if (startswith (name, ".rel"))
 	    {
 	      if (!strip)
 		{
@@ -2772,7 +2761,8 @@ elf64_ia64_size_dynamic_sections (bfd *o
 	  /* Allocate memory for the section contents.  */
 	  sec->contents = (bfd_byte *) bfd_zalloc (dynobj, sec->size);
 	  if (sec->contents == NULL && sec->size != 0)
-	    return FALSE;
+	    return false;
+	  sec->alloced = 1;
 	}
     }
 
@@ -2802,31 +2792,31 @@ elf64_ia64_size_dynamic_sections (bfd *o
       vms_get_time (&time_hi, &time_lo);
 
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_IDENT, 0))
-	return FALSE;
+	return false;
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_LINKTIME,
-				       (((bfd_uint64_t)time_hi) << 32)
+				       ((uint64_t) time_hi << 32)
 				       + time_lo))
-	return FALSE;
+	return false;
 
       /* Strtab.  */
       strdyn_off = dynsec->size;
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_STRTAB_OFFSET, 0))
-	return FALSE;
+	return false;
       if (!_bfd_elf_add_dynamic_entry (info, DT_STRSZ, 0))
-	return FALSE;
+	return false;
 
       /* PLTGOT  */
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_PLTGOT_SEG, 0))
-	return FALSE;
+	return false;
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_PLTGOT_OFFSET, 0))
-	return FALSE;
+	return false;
 
       /* Misc.  */
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_FPMODE, 0x9800000))
-	return FALSE;
+	return false;
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_LNKFLAGS,
 				       VMS_LF_IMGSTA | VMS_LF_MAIN))
-	return FALSE;
+	return false;
 
       /* Add entries for shared libraries.  */
       for (abfd = info->input_bfds; abfd; abfd = abfd->link.next)
@@ -2843,27 +2833,27 @@ elf64_ia64_size_dynamic_sections (bfd *o
 
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_NEEDED_IDENT,
 					   elf_ia64_vms_ident (abfd)))
-	    return FALSE;
+	    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;
+	    return false;
 	  strindex = dynstrsec->size;
 	  soname_len = strlen (soname) + 1;
 	  newcontents = (bfd_byte *) bfd_realloc (dynstrsec->contents,
 						  strindex + soname_len);
 	  if (newcontents == NULL)
-	    return FALSE;
+	    return false;
 	  memcpy (newcontents + strindex, soname, soname_len);
 	  dynstrsec->size += soname_len;
 	  dynstrsec->contents = newcontents;
 
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_NEEDED, strindex))
-	    return FALSE;
+	    return false;
 
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_FIXUP_NEEDED,
 					   shl_num))
-	    return FALSE;
+	    return false;
 	  shl_num++;
 
 	  /* The fixups_off was in fact containing the size of the fixup
@@ -2874,27 +2864,27 @@ elf64_ia64_size_dynamic_sections (bfd *o
 	  if (!_bfd_elf_add_dynamic_entry
 	      (info, DT_IA_64_VMS_FIXUP_RELA_CNT,
 	       fixups_shl_off / sizeof (Elf64_External_VMS_IMAGE_FIXUP)))
-	    return FALSE;
+	    return false;
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_FIXUP_RELA_OFF,
 					   fixups_off))
-	    return FALSE;
+	    return false;
 	  fixups_off += fixups_shl_off;
 	}
 
       /* Unwind.  */
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_UNWINDSZ, 0))
-	return FALSE;
+	return false;
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_UNWIND_CODSEG, 0))
-	return FALSE;
+	return false;
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_UNWIND_INFOSEG, 0))
-	return FALSE;
+	return false;
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_UNWIND_OFFSET, 0))
-	return FALSE;
+	return false;
       if (!_bfd_elf_add_dynamic_entry (info, DT_IA_64_VMS_UNWIND_SEG, 0))
-	return FALSE;
+	return false;
 
       if (!_bfd_elf_add_dynamic_entry (info, DT_NULL, 0xdead))
-	    return FALSE;
+	    return false;
 
       /* Fix the strtab entries.  */
       bed = get_elf_backend_data (hash_table->dynobj);
@@ -2920,12 +2910,12 @@ elf64_ia64_size_dynamic_sections (bfd *o
 
       /* Note section.  */
       if (!create_ia64_vms_notes (output_bfd, info, time_hi, time_lo))
-	return FALSE;
+	return false;
     }
 
   /* ??? Perhaps force __gp local.  */
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -2977,7 +2967,7 @@ set_got_entry (bfd *abfd, struct bfd_lin
 {
   struct elf64_ia64_link_hash_table *ia64_info;
   asection *got_sec;
-  bfd_boolean done;
+  bool done;
   bfd_vma got_offset;
 
   ia64_info = elf64_ia64_hash_table (info);
@@ -2996,7 +2986,7 @@ set_got_entry (bfd *abfd, struct bfd_lin
       break;
     default:
       done = dyn_i->got_done;
-      dyn_i->got_done = TRUE;
+      dyn_i->got_done = true;
       got_offset = dyn_i->got_offset;
       break;
     }
@@ -3037,7 +3027,7 @@ set_got_entry (bfd *abfd, struct bfd_lin
 	      dyn_r_type = R_IA64_VMS_FIX64;
 	      break;
 	    default:
-	      BFD_ASSERT (FALSE);
+	      BFD_ASSERT (false);
 	      break;
 	    }
 	  elf64_ia64_install_fixup
@@ -3095,7 +3085,7 @@ set_fptr_entry (bfd *abfd, struct bfd_li
 static bfd_vma
 set_pltoff_entry (bfd *abfd, struct bfd_link_info *info,
 		  struct elf64_ia64_dyn_sym_info *dyn_i,
-		  bfd_vma value, bfd_boolean is_plt)
+		  bfd_vma value, bool is_plt)
 {
   struct elf64_ia64_link_hash_table *ia64_info;
   asection *pltoff_sec;
@@ -3157,8 +3147,8 @@ elf64_ia64_unwind_entry_compare (const v
 }
 
 /* Make sure we've got ourselves a nice fat __gp value.  */
-static bfd_boolean
-elf64_ia64_choose_gp (bfd *abfd, struct bfd_link_info *info, bfd_boolean final)
+static bool
+elf64_ia64_choose_gp (bfd *abfd, struct bfd_link_info *info, bool final)
 {
   bfd_vma min_vma = (bfd_vma) -1, max_vma = 0;
   bfd_vma min_short_vma = min_vma, max_short_vma = 0;
@@ -3169,7 +3159,7 @@ elf64_ia64_choose_gp (bfd *abfd, struct
 
   ia64_info = elf64_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   /* Find the min and max vma of all sections marked short.  Also collect
      min and max vma of any type, for use in selecting a nice gp.  */
@@ -3218,8 +3208,8 @@ elf64_ia64_choose_gp (bfd *abfd, struct
     }
 
   /* See if the user wants to force a value.  */
-  gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", FALSE,
-			     FALSE, FALSE);
+  gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", false,
+			     false, false);
 
   if (gp
       && (gp->root.type == bfd_link_hash_defined
@@ -3284,12 +3274,12 @@ 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)"),
 	     abfd, (uint64_t) (max_short_vma - min_short_vma));
-	  return FALSE;
+	  return false;
 	}
       else if ((gp_val > min_short_vma
 		&& gp_val - min_short_vma > 0x200000)
@@ -3298,16 +3288,16 @@ overflow:
 	{
 	  _bfd_error_handler
 	    (_("%pB: __gp does not cover short data segment"), abfd);
-	  return FALSE;
+	  return false;
 	}
     }
 
   _bfd_set_gp_value (abfd, gp_val);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_ia64_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf64_ia64_link_hash_table *ia64_info;
@@ -3315,7 +3305,7 @@ elf64_ia64_final_link (bfd *abfd, struct
 
   ia64_info = elf64_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   /* Make sure we've got ourselves a nice fat __gp value.  */
   if (!bfd_link_relocatable (info))
@@ -3326,12 +3316,12 @@ elf64_ia64_final_link (bfd *abfd, struct
       /* We assume after gp is set, section size will only decrease. We
 	 need to adjust gp for it.  */
       _bfd_set_gp_value (abfd, 0);
-      if (! elf64_ia64_choose_gp (abfd, info, TRUE))
-	return FALSE;
+      if (! elf64_ia64_choose_gp (abfd, info, true))
+	return false;
       gp_val = _bfd_get_gp_value (abfd);
 
-      gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", FALSE,
-				 FALSE, FALSE);
+      gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", false,
+				 false, false);
       if (gp)
 	{
 	  gp->root.type = bfd_link_hash_defined;
@@ -3353,13 +3343,13 @@ elf64_ia64_final_link (bfd *abfd, struct
 	  unwind_output_sec->contents
 	    = bfd_malloc (unwind_output_sec->size);
 	  if (unwind_output_sec->contents == NULL)
-	    return FALSE;
+	    return false;
 	}
     }
 
   /* Invoke the regular ELF backend linker to do all the work.  */
   if (!bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
   if (unwind_output_sec)
     {
@@ -3372,13 +3362,13 @@ elf64_ia64_final_link (bfd *abfd, struct
       if (! bfd_set_section_contents (abfd, unwind_output_sec,
 				      unwind_output_sec->contents, (bfd_vma) 0,
 				      unwind_output_sec->size))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static int
 elf64_ia64_relocate_section (bfd *output_bfd,
 			     struct bfd_link_info *info,
 			     bfd *input_bfd,
@@ -3392,13 +3382,13 @@ elf64_ia64_relocate_section (bfd *output
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
-  bfd_boolean ret_val = TRUE;	/* for non-fatal errors */
+  bool ret_val = true;	/* for non-fatal errors */
   bfd_vma gp_val;
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
   ia64_info = elf64_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   /* Infect various flags from the input section to the output section.  */
   if (bfd_link_relocatable (info))
@@ -3428,8 +3418,8 @@ elf64_ia64_relocate_section (bfd *output
       bfd_vma value;
       asection *sym_sec;
       bfd_byte *hit_addr;
-      bfd_boolean dynamic_symbol_p;
-      bfd_boolean undef_weak_ref;
+      bool dynamic_symbol_p;
+      bool undef_weak_ref;
 
       r_type = ELF64_R_TYPE (rel->r_info);
       if (r_type > R_IA64_MAX_RELOC_CODE)
@@ -3438,21 +3428,21 @@ elf64_ia64_relocate_section (bfd *output
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      input_bfd, (int) r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret_val = FALSE;
+	  ret_val = false;
 	  continue;
 	}
 
       howto = ia64_elf_lookup_howto (r_type);
       if (howto == NULL)
 	{
-	  ret_val = FALSE;
+	  ret_val = false;
 	  continue;
 	}
       r_symndx = ELF64_R_SYM (rel->r_info);
       h = NULL;
       sym = NULL;
       sym_sec = NULL;
-      undef_weak_ref = FALSE;
+      undef_weak_ref = false;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -3469,7 +3459,7 @@ elf64_ia64_relocate_section (bfd *output
 	    {
 	      struct elf64_ia64_local_hash_entry *loc_h;
 
-	      loc_h = get_local_sym_hash (ia64_info, input_bfd, rel, FALSE);
+	      loc_h = get_local_sym_hash (ia64_info, input_bfd, rel, false);
 	      if (loc_h && ! loc_h->sec_merge_done)
 		{
 		  struct elf64_ia64_dyn_sym_info *dynent;
@@ -3508,8 +3498,8 @@ elf64_ia64_relocate_section (bfd *output
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned, ignored;
+	  bool unresolved_reloc;
+	  bool warned, ignored;
 	  struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
@@ -3518,7 +3508,7 @@ elf64_ia64_relocate_section (bfd *output
 				   unresolved_reloc, warned, ignored);
 
 	  if (h->root.type == bfd_link_hash_undefweak)
-	    undef_weak_ref = TRUE;
+	    undef_weak_ref = true;
 	  else if (warned)
 	    continue;
 	}
@@ -3528,7 +3518,8 @@ elf64_ia64_relocate_section (bfd *output
 	 section contents zeroed.  Avoid any special processing.  */
       if (sym_sec != NULL && discarded_section (sym_sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_IA64_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -3573,7 +3564,7 @@ elf64_ia64_relocate_section (bfd *output
 		     h ? h->root.root.string
 		       : bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
 					   sym_sec));
-		  ret_val = FALSE;
+		  ret_val = false;
 		  continue;
 
 		default:
@@ -3603,7 +3594,7 @@ elf64_ia64_relocate_section (bfd *output
 		  dyn_r_type = R_IA64_VMS_FIX64;
 		  break;
 		default:
-		  BFD_ASSERT (FALSE);
+		  BFD_ASSERT (false);
 		  break;
 		}
 	      elf64_ia64_install_fixup
@@ -3636,7 +3627,7 @@ elf64_ia64_relocate_section (bfd *output
 		 h ? h->root.root.string
 		   : bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
 				       sym_sec));
-	      ret_val = FALSE;
+	      ret_val = false;
 	      continue;
 	    }
 	  value -= gp_val;
@@ -3646,7 +3637,7 @@ elf64_ia64_relocate_section (bfd *output
 	case R_IA64_LTOFF22:
 	case R_IA64_LTOFF22X:
 	case R_IA64_LTOFF64I:
-	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
 	  value = set_got_entry (input_bfd, info, dyn_i,
 				 rel->r_addend, value, R_IA64_DIR64LSB);
 	  value -= gp_val;
@@ -3657,8 +3648,8 @@ elf64_ia64_relocate_section (bfd *output
 	case R_IA64_PLTOFF64I:
 	case R_IA64_PLTOFF64MSB:
 	case R_IA64_PLTOFF64LSB:
-	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
-	  value = set_pltoff_entry (output_bfd, info, dyn_i, value, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
+	  value = set_pltoff_entry (output_bfd, info, dyn_i, value, false);
 	  value -= gp_val;
 	  r = ia64_elf_install_value (hit_addr, value, r_type);
 	  break;
@@ -3668,7 +3659,7 @@ elf64_ia64_relocate_section (bfd *output
 	case R_IA64_FPTR32LSB:
 	case R_IA64_FPTR64MSB:
 	case R_IA64_FPTR64LSB:
-	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
 	  if (dyn_i->want_fptr)
 	    {
 	      if (!undef_weak_ref)
@@ -3692,7 +3683,7 @@ elf64_ia64_relocate_section (bfd *output
 		      _bfd_error_handler
 			(_("%pB: linking non-pic code in a position independent executable"),
 			 input_bfd);
-		      ret_val = FALSE;
+		      ret_val = false;
 		      continue;
 		    }
 		}
@@ -3718,7 +3709,7 @@ elf64_ia64_relocate_section (bfd *output
 	case R_IA64_LTOFF_FPTR32LSB:
 	case R_IA64_LTOFF_FPTR64MSB:
 	case R_IA64_LTOFF_FPTR64LSB:
-	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
 	  if (dyn_i->want_fptr)
 	    {
 	      BFD_ASSERT (h == NULL || !h->def_dynamic);
@@ -3751,7 +3742,7 @@ elf64_ia64_relocate_section (bfd *output
 	  /* We should have created a PLT entry for any dynamic symbol.  */
 	  dyn_i = NULL;
 	  if (h)
-	    dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, FALSE);
+	    dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
 
 	  if (dyn_i && dyn_i->want_plt2)
 	    {
@@ -3805,7 +3796,7 @@ elf64_ia64_relocate_section (bfd *output
 						      symtab_hdr,
 						      sym,
 						      sym_sec));
-	      ret_val = FALSE;
+	      ret_val = false;
 	      continue;
 	    }
 	  goto finish_pcrel;
@@ -3911,7 +3902,7 @@ elf64_ia64_relocate_section (bfd *output
 	     don't try to continue.  */
 	  (*info->callbacks->undefined_symbol)
 	    (info, "__gp", input_bfd, input_section, rel->r_offset, 1);
-	  return FALSE;
+	  return false;
 
 	case bfd_reloc_notsupported:
 	  {
@@ -3925,7 +3916,7 @@ elf64_ia64_relocate_section (bfd *output
 	    (*info->callbacks->warning) (info, _("unsupported reloc"),
 					 name, input_bfd,
 					 input_section, rel->r_offset);
-	    ret_val = FALSE;
+	    ret_val = false;
 	  }
 	  break;
 
@@ -3996,7 +3987,7 @@ elf64_ia64_relocate_section (bfd *output
 		break;
 	      }
 
-	    ret_val = FALSE;
+	    ret_val = false;
 	  }
 	  break;
 	}
@@ -4005,7 +3996,7 @@ elf64_ia64_relocate_section (bfd *output
   return ret_val;
 }
 
-static bfd_boolean
+static bool
 elf64_ia64_finish_dynamic_symbol (bfd *output_bfd,
 				  struct bfd_link_info *info,
 				  struct elf_link_hash_entry *h,
@@ -4015,10 +4006,8 @@ elf64_ia64_finish_dynamic_symbol (bfd *o
   struct elf64_ia64_dyn_sym_info *dyn_i;
 
   ia64_info = elf64_ia64_hash_table (info);
-  if (ia64_info == NULL)
-    return FALSE;
 
-  dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, FALSE);
+  dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
 
   /* Fill in the PLT data, if required.  */
   if (dyn_i && dyn_i->want_plt)
@@ -4031,7 +4020,7 @@ elf64_ia64_finish_dynamic_symbol (bfd *o
 
       plt_sec = ia64_info->root.splt;
       plt_addr = 0;  /* Not used as overriden by FIXUPs.  */
-      pltoff_addr = set_pltoff_entry (output_bfd, info, dyn_i, plt_addr, TRUE);
+      pltoff_addr = set_pltoff_entry (output_bfd, info, dyn_i, plt_addr, true);
 
       /* Initialize the FULL PLT entry, if needed.  */
       if (dyn_i->want_plt2)
@@ -4062,10 +4051,10 @@ elf64_ia64_finish_dynamic_symbol (bfd *o
       || h == ia64_info->root.hplt)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_ia64_finish_dynamic_sections (bfd *abfd,
 				    struct bfd_link_info *info)
 {
@@ -4074,7 +4063,7 @@ elf64_ia64_finish_dynamic_sections (bfd
 
   ia64_info = elf64_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   dynobj = ia64_info->root.dynobj;
 
@@ -4185,8 +4174,8 @@ elf64_ia64_finish_dynamic_sections (bfd
 		+ tfr_sec->output_offset
 		+ 6 * 8, tfr->tfradr3);
 
-    tfr3 = elf_link_hash_lookup (elf_hash_table (info), "ELF$TFRADR", FALSE,
-				 FALSE, FALSE);
+    tfr3 = elf_link_hash_lookup (elf_hash_table (info), "ELF$TFRADR", false,
+				 false, false);
 
     if (tfr3
 	&& (tfr3->root.type == bfd_link_hash_defined
@@ -4207,44 +4196,48 @@ elf64_ia64_finish_dynamic_sections (bfd
        handle lib$initialize.  */
   }
 
-  return TRUE;
+  return true;
 }
 
 /* ELF file flag handling:  */
 
 /* Function to keep IA-64 specific file flags.  */
-static bfd_boolean
+static bool
 elf64_ia64_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
-static bfd_boolean
+static bool
 elf64_ia64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword out_flags;
   flagword in_flags;
-  bfd_boolean ok = TRUE;
+  bool 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)
-    return FALSE;
+    return false;
 
   in_flags  = elf_elfheader (ibfd)->e_flags;
   out_flags = elf_elfheader (obfd)->e_flags;
 
   if (! elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -4254,12 +4247,12 @@ elf64_ia64_merge_private_bfd_data (bfd *
 				    bfd_get_mach (ibfd));
 	}
 
-      return TRUE;
+      return true;
     }
 
   /* Check flag compatibility.  */
   if (in_flags == out_flags)
-    return TRUE;
+    return true;
 
   /* Output has EF_IA_64_REDUCEDFP set only if all inputs have it set.  */
   if (!(in_flags & EF_IA_64_REDUCEDFP) && (out_flags & EF_IA_64_REDUCEDFP))
@@ -4272,7 +4265,7 @@ elf64_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
   if ((in_flags & EF_IA_64_BE) != (out_flags & EF_IA_64_BE))
     {
@@ -4281,7 +4274,7 @@ elf64_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
   if ((in_flags & EF_IA_64_ABI64) != (out_flags & EF_IA_64_ABI64))
     {
@@ -4290,7 +4283,7 @@ elf64_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
   if ((in_flags & EF_IA_64_CONS_GP) != (out_flags & EF_IA_64_CONS_GP))
     {
@@ -4299,7 +4292,7 @@ elf64_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
   if ((in_flags & EF_IA_64_NOFUNCDESC_CONS_GP)
       != (out_flags & EF_IA_64_NOFUNCDESC_CONS_GP))
@@ -4309,13 +4302,13 @@ elf64_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
 
   return ok;
 }
 
-static bfd_boolean
+static bool
 elf64_ia64_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -4334,7 +4327,7 @@ elf64_ia64_print_private_bfd_data (bfd *
 	   (flags & EF_IA_64_ABI64) ? "ABI64" : "ABI32");
 
   _bfd_elf_print_private_bfd_data (abfd, ptr);
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -4366,7 +4359,7 @@ static const struct bfd_elf_special_sect
   { NULL,		     0,	  0, 0,		   0 }
 };
 
-static bfd_boolean
+static bool
 elf64_ia64_object_p (bfd *abfd)
 {
   asection *sec;
@@ -4374,10 +4367,10 @@ 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;
+    return true;
 
   /* Flags for fake group section.  */
   flags = (SEC_LINKER_CREATED | SEC_GROUP | SEC_LINK_ONCE
@@ -4390,14 +4383,14 @@ elf64_ia64_object_p (bfd *abfd)
       if (elf_sec_group (sec) == NULL
 	  && ((sec->flags & (SEC_LINK_ONCE | SEC_CODE | SEC_GROUP))
 	      == (SEC_LINK_ONCE | SEC_CODE))
-	  && CONST_STRNEQ (sec->name, ".gnu.linkonce.t."))
+	  && startswith (sec->name, ".gnu.linkonce.t."))
 	{
 	  name = sec->name + 16;
 
 	  amt = strlen (name) + sizeof (".gnu.linkonce.ia64unwi.");
 	  unwi_name = bfd_alloc (abfd, amt);
 	  if (!unwi_name)
-	    return FALSE;
+	    return false;
 
 	  strcpy (stpcpy (unwi_name, ".gnu.linkonce.ia64unwi."), name);
 	  unwi = bfd_get_section_by_name (abfd, unwi_name);
@@ -4405,7 +4398,7 @@ elf64_ia64_object_p (bfd *abfd)
 	  amt = strlen (name) + sizeof (".gnu.linkonce.ia64unw.");
 	  unw_name = bfd_alloc (abfd, amt);
 	  if (!unw_name)
-	    return FALSE;
+	    return false;
 
 	  strcpy (stpcpy (unw_name, ".gnu.linkonce.ia64unw."), name);
 	  unw = bfd_get_section_by_name (abfd, unw_name);
@@ -4415,7 +4408,7 @@ elf64_ia64_object_p (bfd *abfd)
 	  group = bfd_make_section_anyway_with_flags (abfd, name,
 						      flags);
 	  if (group == NULL)
-	    return FALSE;
+	    return false;
 
 	  /* Move the fake group section to the beginning.  */
 	  bfd_section_list_remove (abfd, group);
@@ -4456,14 +4449,14 @@ elf64_ia64_object_p (bfd *abfd)
 	  elf_section_data (group)->this_hdr.sh_type = SHT_GROUP;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Handle an IA-64 specific section when reading an object file.  This
    is called when bfd_section_from_shdr finds a section with an unknown
    type.  */
 
-static bfd_boolean
+static bool
 elf64_vms_section_from_shdr (bfd *abfd,
 			     Elf_Internal_Shdr *hdr,
 			     const char *name,
@@ -4485,15 +4478,15 @@ elf64_vms_section_from_shdr (bfd *abfd,
 
     case SHT_IA_64_EXT:
       if (strcmp (name, ELF_STRING_ia64_archext) != 0)
-	return FALSE;
+	return false;
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    return false;
 
   if (secflags != 0)
     {
@@ -4501,13 +4494,13 @@ elf64_vms_section_from_shdr (bfd *abfd,
 
       if (!bfd_set_section_flags (newsect,
 				  bfd_section_flags (newsect) | secflags))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_vms_object_p (bfd *abfd)
 {
   Elf_Internal_Ehdr *i_ehdrp = elf_elfheader (abfd);
@@ -4519,7 +4512,7 @@ elf64_vms_object_p (bfd *abfd)
   char name[16];
 
   if (!elf64_ia64_object_p (abfd))
-    return FALSE;
+    return false;
 
   /* Many VMS compilers do not generate sections for the corresponding
      segment.  This is boring as binutils tools won't be able to disassemble
@@ -4593,14 +4586,14 @@ elf64_vms_object_p (bfd *abfd)
 	      size_t name_len = strlen (name) + 1;
 	      nname = bfd_alloc (abfd, name_len);
 	      if (nname == NULL)
-		return FALSE;
+		return false;
 	      memcpy (nname, name, name_len);
 	    }
 
 	  /* Create and fill new section.  */
 	  nsec = bfd_make_section_anyway_with_flags (abfd, nname, flags);
 	  if (nsec == NULL)
-	    return FALSE;
+	    return false;
 	  nsec->vma = base_vma;
 	  nsec->size = next_vma - base_vma;
 	  nsec->filepos = i_phdr->p_offset + (base_vma - i_phdr->p_vaddr);
@@ -4608,24 +4601,24 @@ elf64_vms_object_p (bfd *abfd)
 	  base_vma = next_vma;
 	}
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_vms_init_file_header (bfd *abfd, struct bfd_link_info *info)
 {
   Elf_Internal_Ehdr *i_ehdrp;
 
   if (!_bfd_elf_init_file_header (abfd, info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
   i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_OPENVMS;
   i_ehdrp->e_ident[EI_ABIVERSION] = 2;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_vms_section_processing (bfd *abfd ATTRIBUTE_UNUSED,
 			      Elf_Internal_Shdr *hdr)
 {
@@ -4655,13 +4648,13 @@ elf64_vms_section_processing (bfd *abfd
 	hdr->sh_type = SHT_IA_64_VMS_DEBUG_STR;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* The final processing done just before writing out a VMS IA-64 ELF
    object file.  */
 
-static bfd_boolean
+static bool
 elf64_vms_final_write_processing (bfd *abfd)
 {
   Elf_Internal_Shdr *hdr;
@@ -4695,32 +4688,34 @@ elf64_vms_final_write_processing (bfd *a
 	flags |= EF_IA_64_ABI64;
 
       elf_elfheader (abfd)->e_flags = flags;
-      elf_flags_init (abfd) = TRUE;
+      elf_flags_init (abfd) = true;
     }
   return _bfd_elf_final_write_processing (abfd);
 }
 
-static bfd_boolean
+static bool
 elf64_vms_write_shdrs_and_ehdr (bfd *abfd)
 {
   unsigned char needed_count[8];
 
   if (!bfd_elf64_write_shdrs_and_ehdr (abfd))
-    return FALSE;
+    return false;
 
   bfd_putl64 (elf_ia64_vms_tdata (abfd)->needed_count, needed_count);
 
   if (bfd_seek (abfd, sizeof (Elf64_External_Ehdr), SEEK_SET) != 0
-      || bfd_bwrite (needed_count, 8, abfd) != 8)
-    return FALSE;
+      || bfd_write (needed_count, 8, abfd) != 8)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_vms_close_and_cleanup (bfd *abfd)
 {
-  if (bfd_get_format (abfd) == bfd_object)
+  bool ret = true;
+  if (bfd_get_format (abfd) == bfd_object
+      && bfd_write_p (abfd))
     {
       long isize;
 
@@ -4728,20 +4723,21 @@ elf64_vms_close_and_cleanup (bfd *abfd)
       isize = bfd_get_size (abfd);
       if ((isize & 7) != 0)
 	{
-	  int ishort = 8 - (isize & 7);
-	  bfd_uint64_t pad = 0;
+	  unsigned int ishort = 8 - (isize & 7);
+	  uint64_t pad = 0;
 
-	  bfd_seek (abfd, isize, SEEK_SET);
-	  bfd_bwrite (&pad, ishort, abfd);
+	  if (bfd_seek (abfd, isize, SEEK_SET) != 0
+	      || bfd_write (&pad, ishort, abfd) != ishort)
+	    ret = false;
 	}
     }
 
-  return _bfd_elf_close_and_cleanup (abfd);
+  return _bfd_generic_close_and_cleanup (abfd) && ret;
 }
 
 /* Add symbols from an ELF object file to the linker hash table.  */
 
-static bfd_boolean
+static bool
 elf64_vms_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   Elf_Internal_Shdr *hdr;
@@ -4749,7 +4745,7 @@ elf64_vms_link_add_object_symbols (bfd *
   bfd_size_type extsymcount;
   bfd_size_type extsymoff;
   struct elf_link_hash_entry **sym_hash;
-  bfd_boolean dynamic;
+  bool dynamic;
   Elf_Internal_Sym *isymbuf = NULL;
   Elf_Internal_Sym *isym;
   Elf_Internal_Sym *isymend;
@@ -4761,16 +4757,16 @@ elf64_vms_link_add_object_symbols (bfd *
   bed = get_elf_backend_data (abfd);
 
   if ((abfd->flags & DYNAMIC) == 0)
-    dynamic = FALSE;
+    dynamic = false;
   else
     {
-      dynamic = TRUE;
+      dynamic = true;
 
       /* You can't use -r against a dynamic object.  Also, there's no
 	 hope of using a dynamic object which does not exactly match
 	 the format of the output file.  */
       if (bfd_link_relocatable (info)
-	  || !is_elf_hash_table (htab)
+	  || !is_elf_hash_table (&htab->root)
 	  || info->output_bfd->xvec != abfd->xvec)
 	{
 	  if (bfd_link_relocatable (info))
@@ -4789,7 +4785,7 @@ elf64_vms_link_add_object_symbols (bfd *
 	 format.  FIXME: If there are no input BFD's of the same
 	 format as the output, we can't make a shared library.  */
       if (bfd_link_pic (info)
-	  && is_elf_hash_table (htab)
+	  && is_elf_hash_table (&htab->root)
 	  && info->output_bfd->xvec == abfd->xvec
 	  && !htab->dynamic_sections_created)
 	{
@@ -4797,7 +4793,7 @@ elf64_vms_link_add_object_symbols (bfd *
 	    goto error_return;
 	}
     }
-  else if (!is_elf_hash_table (htab))
+  else if (!is_elf_hash_table (&htab->root))
     goto error_return;
   else
     {
@@ -4848,13 +4844,13 @@ 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;
 	}
 
       for (extdyn = dynbuf;
-	   extdyn < dynbuf + s->size;
+	   (size_t) (dynbuf + s->size - extdyn) >= bed->s->sizeof_dyn;
 	   extdyn += bed->s->sizeof_dyn)
 	{
 	  Elf_Internal_Dyn dyn;
@@ -4862,7 +4858,7 @@ error_free_dyn:
 	  bed->s->swap_dyn_in (abfd, extdyn, &dyn);
 	  if (dyn.d_tag == DT_IA_64_VMS_IDENT)
 	    {
-	      bfd_uint64_t tagv = dyn.d_un.d_val;
+	      uint64_t tagv = dyn.d_un.d_val;
 	      elf_ia64_vms_ident (abfd) = tagv;
 	      break;
 	    }
@@ -4923,10 +4919,10 @@ error_free_dyn:
       flagword flags;
       const char *name;
       struct elf_link_hash_entry *h;
-      bfd_boolean definition;
-      bfd_boolean size_change_ok;
-      bfd_boolean type_change_ok;
-      bfd_boolean common;
+      bool definition;
+      bool size_change_ok;
+      bool type_change_ok;
+      bool common;
       unsigned int old_alignment;
       bfd *old_bfd;
 
@@ -5017,27 +5013,27 @@ error_free_dyn:
 
       if (bfd_is_und_section (sec)
 	  || bfd_is_com_section (sec))
-	definition = FALSE;
+	definition = false;
       else
-	definition = TRUE;
+	definition = true;
 
-      size_change_ok = FALSE;
+      size_change_ok = false;
       type_change_ok = bed->type_change_ok;
       old_alignment = 0;
       old_bfd = NULL;
       new_sec = sec;
 
       if (! bfd_is_und_section (sec))
-	h = elf_link_hash_lookup (htab, name, TRUE, FALSE, FALSE);
+	h = elf_link_hash_lookup (htab, name, true, false, false);
       else
 	h = ((struct elf_link_hash_entry *) bfd_wrapped_link_hash_lookup
-	     (abfd, info, name, TRUE, FALSE, FALSE));
+	     (abfd, info, name, true, false, false));
       if (h == NULL)
 	goto error_free_sym;
 
       *sym_hash = h;
 
-      if (is_elf_hash_table (htab))
+      if (is_elf_hash_table (&htab->root))
 	{
 	  while (h->root.type == bfd_link_hash_indirect
 		 || h->root.type == bfd_link_hash_warning)
@@ -5070,7 +5066,7 @@ error_free_dyn:
 	}
 
       if (! (_bfd_generic_link_add_one_symbol
-	     (info, abfd, name, flags, sec, value, NULL, FALSE, bed->collect,
+	     (info, abfd, name, flags, sec, value, NULL, false, bed->collect,
 	      (struct bfd_link_hash_entry **) sym_hash)))
 	goto error_free_vers;
 
@@ -5106,7 +5102,7 @@ error_free_dyn:
 	    h->root.u.c.p->alignment_power = old_alignment;
 	}
 
-      if (is_elf_hash_table (htab))
+      if (is_elf_hash_table (&htab->root))
 	{
 	  /* Check the alignment when a common symbol is involved. This
 	     can change when a common symbol is overridden by a normal
@@ -5239,11 +5235,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
@@ -5263,7 +5256,7 @@ error_free_dyn:
      I have no idea how to handle linking PIC code into a file of a
      different format.  It probably can't be done.  */
   if (! dynamic
-      && is_elf_hash_table (htab)
+      && is_elf_hash_table (&htab->root)
       && bed->check_relocs != NULL
       && (*bed->relocs_compatible) (abfd->xvec, info->output_bfd->xvec))
     {
@@ -5272,7 +5265,7 @@ error_free_dyn:
       for (o = abfd->sections; o != NULL; o = o->next)
 	{
 	  Elf_Internal_Rela *internal_relocs;
-	  bfd_boolean ok;
+	  bool ok;
 
 	  if ((o->flags & SEC_RELOC) == 0
 	      || o->reloc_count == 0
@@ -5296,17 +5289,16 @@ error_free_dyn:
 	}
     }
 
-  return TRUE;
+  return true;
 
  error_free_vers:
  error_free_sym:
-  if (isymbuf != NULL)
-    free (isymbuf);
+  free (isymbuf);
  error_return:
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 elf64_vms_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   int pass;
@@ -5317,7 +5309,7 @@ elf64_vms_link_add_archive_symbols (bfd
   if (info->output_bfd->xvec != abfd->xvec)
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   /* The archive_pass field in the archive itself is used to
@@ -5364,7 +5356,7 @@ elf64_vms_link_add_archive_symbols (bfd
 
       element = bfd_get_elt_at_index (abfd, symidx);
       if (element == NULL)
-	return FALSE;
+	return false;
 
       if (element->archive_pass == -1 || element->archive_pass == pass)
 	{
@@ -5379,13 +5371,13 @@ elf64_vms_link_add_archive_symbols (bfd
 	  if (element == NULL || !bfd_check_format (element, bfd_object))
 	    {
 	      orig_element->archive_pass = -1;
-	      return FALSE;
+	      return false;
 	    }
 	}
       else if (! bfd_check_format (element, bfd_object))
 	{
 	  element->archive_pass = -1;
-	  return FALSE;
+	  return false;
 	}
 
       /* Unlike the generic linker, we know that this element provides
@@ -5395,15 +5387,15 @@ elf64_vms_link_add_archive_symbols (bfd
 						     h->root.string, &element))
 	continue;
       if (! elf64_vms_link_add_object_symbols (element, info))
-	return FALSE;
+	return false;
 
       orig_element->archive_pass = pass;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_vms_bfd_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   switch (bfd_get_format (abfd))
@@ -5416,15 +5408,15 @@ elf64_vms_bfd_link_add_symbols (bfd *abf
       break;
     default:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 }
 
-static bfd_boolean
+static bool
 elf64_ia64_vms_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object
-    (abfd, sizeof (struct elf64_ia64_vms_obj_tdata), IA64_ELF_DATA);
+  return bfd_elf_allocate_object (abfd,
+				  sizeof (struct elf64_ia64_vms_obj_tdata));
 }
 
 
@@ -5459,6 +5451,7 @@ static const struct elf_size_info elf64_
 };
 
 #define ELF_ARCH			bfd_arch_ia64
+#define ELF_TARGET_ID			IA64_ELF_DATA
 #define ELF_MACHINE_CODE		EM_IA_64
 #define ELF_MAXPAGESIZE			0x10000	/* 64KB */
 #define ELF_COMMONPAGESIZE		0x200	/* 16KB */
@@ -5497,8 +5490,8 @@ static const struct elf_size_info elf64_
 	elf64_ia64_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
 	elf64_ia64_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections \
-	elf64_ia64_size_dynamic_sections
+#define elf_backend_late_size_sections \
+	elf64_ia64_late_size_sections
 #define elf_backend_omit_section_dynsym \
 	_bfd_elf_omit_section_dynsym_all
 #define elf_backend_relocate_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.20200303/bfd/elf64-mips.c ./bfd/elf64-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-mips.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-mips.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS-specific support for 64-bit ELF
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
    Ian Lance Taylor, Cygnus Support
    Linker support added by Mark Mitchell, CodeSourcery, LLC.
    <mark@codesourcery.com>
@@ -80,15 +80,15 @@ static void mips_elf64_be_swap_reloca_ou
   (bfd *, const Elf_Internal_Rela *, bfd_byte *);
 static reloc_howto_type *bfd_elf64_bfd_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean mips_elf64_info_to_howto_rela
+static bool mips_elf64_info_to_howto_rela
   (bfd *, arelent *, Elf_Internal_Rela *);
 static long mips_elf64_get_dynamic_reloc_upper_bound
   (bfd *);
-static bfd_boolean mips_elf64_slurp_one_reloc_table
+static bool mips_elf64_slurp_one_reloc_table
   (bfd *, asection *, Elf_Internal_Shdr *, bfd_size_type, arelent *,
-   asymbol **, bfd_boolean);
-static bfd_boolean mips_elf64_slurp_reloc_table
-  (bfd *, asection *, asymbol **, bfd_boolean);
+   asymbol **, bool);
+static bool mips_elf64_slurp_reloc_table
+  (bfd *, asection *, asymbol **, bool);
 static void mips_elf64_write_relocs
   (bfd *, asection *, void *);
 static void mips_elf64_write_rel
@@ -105,17 +105,17 @@ static bfd_reloc_status_type mips_elf64_
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips16_gprel_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_boolean mips_elf64_assign_gp
+static bool mips_elf64_assign_gp
   (bfd *, bfd_vma *);
 static bfd_reloc_status_type mips_elf64_final_gp
-  (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *);
-static bfd_boolean mips_elf64_object_p
+  (bfd *, asymbol *, bool, char **, bfd_vma *);
+static bool mips_elf64_object_p
   (bfd *);
 static irix_compat_t elf64_mips_irix_compat
   (bfd *);
-static bfd_boolean elf64_mips_grok_prstatus
+static bool elf64_mips_grok_prstatus
   (bfd *, Elf_Internal_Note *);
-static bfd_boolean elf64_mips_grok_psinfo
+static bool elf64_mips_grok_psinfo
   (bfd *, Elf_Internal_Note *);
 
 extern const bfd_target mips_elf64_be_vec;
@@ -135,69 +135,69 @@ static reloc_howto_type mips_elf64_howto
   /* No relocation.  */
   HOWTO (R_MIPS_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit relocation.  */
   HOWTO (R_MIPS_16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation.  */
   HOWTO (R_MIPS_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit symbol relative relocation.  */
   HOWTO (R_MIPS_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_REL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 26 bit jump address.  */
   HOWTO (R_MIPS_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -205,10 +205,10 @@ static reloc_howto_type mips_elf64_howto
 				   bits must match the PC + 4.  */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03ffffff,		/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_MIPS_HI16 and R_MIPS_LO16 are unsupported for NewABI REL.
      However, the native IRIX6 tools use them, so we try our best. */
@@ -216,124 +216,124 @@ static reloc_howto_type mips_elf64_howto
   /* High 16 bits of symbol value.  */
   HOWTO (R_MIPS_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_HI16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MIPS_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_LO16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_elf64_gprel16_reloc, /* special_function */
 	 "R_MIPS_GPREL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_elf64_literal_reloc, /* special_function */
 	 "R_MIPS_LITERAL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MIPS_GOT16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MIPS_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit PC relative reference.  Note that the ABI document has a typo
      and claims R_MIPS_PC16 to be not rightshifted, rendering it useless.
      We do the right thing here.  */
   HOWTO (R_MIPS_PC16,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_PC16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MIPS_CALL16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit GP relative reference.  */
   HOWTO (R_MIPS_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 mips_elf64_gprel32_reloc, /* special_function */
 	 "R_MIPS_GPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (13),
   EMPTY_HOWTO (14),
@@ -342,186 +342,186 @@ static reloc_howto_type mips_elf64_howto
   /* A 5 bit shift field.  */
   HOWTO (R_MIPS_SHIFT5,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 5,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_SHIFT5",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000007c0,		/* src_mask */
 	 0x000007c0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 6 bit shift field.  */
   HOWTO (R_MIPS_SHIFT6,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mips_elf64_shift6_reloc, /* special_function */
 	 "R_MIPS_SHIFT6",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000007c4,		/* src_mask */
 	 0x000007c4,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit relocation.  */
   HOWTO (R_MIPS_64,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_64",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement in the global offset table.  */
   HOWTO (R_MIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_DISP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_PAGE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_OFST",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  */
   HOWTO (R_MIPS_SUB,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_SUB",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Insert the addend as an instruction.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_INSERT_A,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_INSERT_A",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Insert the addend as an instruction, and change all relocations
      to refer to the old instruction at the address.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_INSERT_B,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_INSERT_B",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Delete a 32 bit instruction.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_DELETE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_DELETE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The MIPS ELF64 ABI Draft wants us to support these for REL relocations.
      We don't, because
@@ -534,62 +534,62 @@ static reloc_howto_type mips_elf64_howto
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_CALL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_CALL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement, used by an associated event location section.  */
   HOWTO (R_MIPS_SCN_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_SCN_DISP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MIPS_REL16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_REL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* These two are obsolete.  */
   EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE),
@@ -599,33 +599,33 @@ static reloc_howto_type mips_elf64_howto
      It must be used for multigot GOT's (and only there).  */
   HOWTO (R_MIPS_RELGOT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_RELGOT",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MIPS_JALR,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_JALR",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS relocations.  */
   EMPTY_HOWTO (R_MIPS_TLS_DTPMOD32),
@@ -633,168 +633,168 @@ static reloc_howto_type mips_elf64_howto
 
   HOWTO (R_MIPS_TLS_DTPMOD64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPMOD64",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MIPS_TLS_DTPREL64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL64",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS IE dynamic relocations.  */
   EMPTY_HOWTO (R_MIPS_TLS_TPREL32),
 
   HOWTO (R_MIPS_TLS_TPREL64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL64",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation with no addend.  */
   HOWTO (R_MIPS_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (52),
   EMPTY_HOWTO (53),
@@ -807,87 +807,87 @@ static reloc_howto_type mips_elf64_howto
 
   HOWTO (R_MIPS_PC21_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC21_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x001fffff,		/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC26_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC26_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03ffffff,		/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC18_S3,	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 18,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC18_S3",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0003ffff,		/* src_mask */
 	 0x0003ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC19_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC19_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0007ffff,		/* src_mask */
 	 0x0007ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCHI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc,   /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_PCHI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCLO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc,   /* special_function */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_PCLO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 };
 
@@ -898,69 +898,69 @@ static reloc_howto_type mips_elf64_howto
   /* No relocation.  */
   HOWTO (R_MIPS_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit relocation.  */
   HOWTO (R_MIPS_16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation.  */
   HOWTO (R_MIPS_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit symbol relative relocation.  */
   HOWTO (R_MIPS_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_REL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 26 bit jump address.  */
   HOWTO (R_MIPS_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -968,132 +968,132 @@ static reloc_howto_type mips_elf64_howto
 				   bits must match the PC + 4.  */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_26",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MIPS_HI16,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_HI16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MIPS_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_LO16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_elf64_gprel16_reloc, /* special_function */
 	 "R_MIPS_GPREL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_elf64_literal_reloc, /* special_function */
 	 "R_MIPS_LITERAL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MIPS_GOT16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit PC relative reference.  Note that the ABI document has a typo
      and claims R_MIPS_PC16 to be not rightshifted, rendering it useless.
      We do the right thing here.  */
   HOWTO (R_MIPS_PC16,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_PC16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MIPS_CALL16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_CALL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit GP relative reference.  */
   HOWTO (R_MIPS_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 mips_elf64_gprel32_reloc, /* special_function */
 	 "R_MIPS_GPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (13),
   EMPTY_HOWTO (14),
@@ -1102,275 +1102,275 @@ static reloc_howto_type mips_elf64_howto
   /* A 5 bit shift field.  */
   HOWTO (R_MIPS_SHIFT5,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 5,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_SHIFT5",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000007c0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 6 bit shift field.  */
   HOWTO (R_MIPS_SHIFT6,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mips_elf64_shift6_reloc, /* special_function */
 	 "R_MIPS_SHIFT6",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000007c4,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit relocation.  */
   HOWTO (R_MIPS_64,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_64",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement in the global offset table.  */
   HOWTO (R_MIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_DISP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_PAGE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_OFST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GOT_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  */
   HOWTO (R_MIPS_SUB,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_SUB",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Insert the addend as an instruction.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_INSERT_A,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_INSERT_A",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Insert the addend as an instruction, and change all relocations
      to refer to the old instruction at the address.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_INSERT_B,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_INSERT_B",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Delete a 32 bit instruction.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_DELETE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_DELETE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the higher value of a 64 bit addend.  */
   HOWTO (R_MIPS_HIGHER,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_HIGHER",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the highest value of a 64 bit addend.  */
   HOWTO (R_MIPS_HIGHEST,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 48,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_HIGHEST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_CALL_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_CALL_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement, used by an associated event location section.  */
   HOWTO (R_MIPS_SCN_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_SCN_DISP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MIPS_REL16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_REL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* These two are obsolete.  */
   EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE),
@@ -1380,33 +1380,33 @@ static reloc_howto_type mips_elf64_howto
      It must be used for multigot GOT's (and only there).  */
   HOWTO (R_MIPS_RELGOT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_RELGOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MIPS_JALR,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_JALR",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS relocations.  */
   EMPTY_HOWTO (R_MIPS_TLS_DTPMOD32),
@@ -1414,168 +1414,168 @@ static reloc_howto_type mips_elf64_howto
 
   HOWTO (R_MIPS_TLS_DTPMOD64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPMOD64", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MIPS_TLS_DTPREL64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL64",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_LDM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GOTTPREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS IE dynamic relocations.  */
   EMPTY_HOWTO (R_MIPS_TLS_TPREL32),
 
   HOWTO (R_MIPS_TLS_TPREL64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL64",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation with no addend.  */
   HOWTO (R_MIPS_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (52),
   EMPTY_HOWTO (53),
@@ -1588,87 +1588,87 @@ static reloc_howto_type mips_elf64_howto
 
   HOWTO (R_MIPS_PC21_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC21_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC26_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC26_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC18_S3,	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 18,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC18_S3",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0003ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC19_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC19_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCHI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PCHI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCLO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PCLO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 };
 
@@ -1677,9 +1677,9 @@ static reloc_howto_type mips16_elf64_how
   /* The reloc used for the mips16 jump instruction.  */
   HOWTO (R_MIPS16_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -1687,205 +1687,205 @@ static reloc_howto_type mips16_elf64_how
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x3ffffff,		/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The reloc used for the mips16 gprel instruction.  */
   HOWTO (R_MIPS16_GPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips16_gprel_reloc,	/* special_function */
 	 "R_MIPS16_GPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 reference to the global offset table.  */
   HOWTO (R_MIPS16_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MIPS16_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 call through the global offset table.  */
   HOWTO (R_MIPS16_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 high 16 bits of symbol value.  */
   HOWTO (R_MIPS16_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 low 16 bits of symbol value.  */
   HOWTO (R_MIPS16_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS general dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_GD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 16-bit PC-relative branch offset.  */
   HOWTO (R_MIPS16_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_PC16_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 static reloc_howto_type mips16_elf64_howto_table_rela[] =
@@ -1893,9 +1893,9 @@ static reloc_howto_type mips16_elf64_how
   /* The reloc used for the mips16 jump instruction.  */
   HOWTO (R_MIPS16_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -1903,205 +1903,205 @@ static reloc_howto_type mips16_elf64_how
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_26",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The reloc used for the mips16 gprel instruction.  */
   HOWTO (R_MIPS16_GPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips16_gprel_reloc,	/* special_function */
 	 "R_MIPS16_GPREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 reference to the global offset table.  */
   HOWTO (R_MIPS16_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_got16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_GOT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 call through the global offset table.  */
   HOWTO (R_MIPS16_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_CALL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 high 16 bits of symbol value.  */
   HOWTO (R_MIPS16_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_hi16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 low 16 bits of symbol value.  */
   HOWTO (R_MIPS16_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_lo16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS general dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_GD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_LDM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GOTTPREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 16-bit PC-relative branch offset.  */
   HOWTO (R_MIPS16_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_PC16_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 static reloc_howto_type micromips_elf64_howto_table_rel[] =
@@ -2113,9 +2113,9 @@ static reloc_howto_type micromips_elf64_
   /* 26 bit jump address.  */
   HOWTO (R_MICROMIPS_26_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -2123,143 +2123,143 @@ static reloc_howto_type micromips_elf64_
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_26_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x3ffffff,		/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MICROMIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MICROMIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_LITERAL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MICROMIPS_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MICROMIPS_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This is for microMIPS branches.  */
   HOWTO (R_MICROMIPS_PC7_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC7_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000007f,		/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC10_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC10_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000003ff,		/* src_mask */
 	 0x000003ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC16_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MICROMIPS_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (143),
   EMPTY_HOWTO (144),
@@ -2267,92 +2267,92 @@ static reloc_howto_type micromips_elf64_
   /* Displacement in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_DISP",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_PAGE",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_OFST",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_HI16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  Used in the N32 ABI.  */
   HOWTO (R_MICROMIPS_SUB,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SUB",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* We don't support these for REL relocations, because it means building
      the addend from a R_MICROMIPS_HIGHEST/R_MICROMIPS_HIGHER/
@@ -2363,80 +2363,80 @@ static reloc_howto_type micromips_elf64_
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_HI16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement.  */
   HOWTO (R_MICROMIPS_SCN_DISP,  /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SCN_DISP", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MICROMIPS_JALR,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_JALR",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  Note that the high 16 bits of symbol values
      must be zero.  This is used for relaxation.  */
   HOWTO (R_MICROMIPS_HI0_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HI0_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (158),
   EMPTY_HOWTO (159),
@@ -2446,141 +2446,141 @@ static reloc_howto_type micromips_elf64_
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (167),
   EMPTY_HOWTO (168),
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (171),
 
   /* GP- and PC-relative relocations.  */
   HOWTO (R_MICROMIPS_GPREL7_S2,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL7_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000007f,		/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC23_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 23,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC23_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fffff,		/* src_mask */
 	 0x007fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 static reloc_howto_type micromips_elf64_howto_table_rela[] =
@@ -2592,9 +2592,9 @@ static reloc_howto_type micromips_elf64_
   /* 26 bit jump address.  */
   HOWTO (R_MICROMIPS_26_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -2602,143 +2602,143 @@ static reloc_howto_type micromips_elf64_
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_26_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_hi16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_lo16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MICROMIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MICROMIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_LITERAL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MICROMIPS_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_got16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This is for microMIPS branches.  */
   HOWTO (R_MICROMIPS_PC7_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC7_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC10_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC10_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000003ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC16_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MICROMIPS_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (143),
   EMPTY_HOWTO (144),
@@ -2746,199 +2746,199 @@ static reloc_howto_type micromips_elf64_
   /* Displacement in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_DISP",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_PAGE",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_OFST",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_HI16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_LO16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  Used in the N32 ABI.  */
   HOWTO (R_MICROMIPS_SUB,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SUB",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the higher value of a 64 bit addend.  */
   HOWTO (R_MICROMIPS_HIGHER,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HIGHER",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the highest value of a 64 bit addend.  */
   HOWTO (R_MICROMIPS_HIGHEST,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 48,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HIGHEST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_HI16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_LO16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement.  */
   HOWTO (R_MICROMIPS_SCN_DISP,  /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SCN_DISP", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MICROMIPS_JALR,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_JALR",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  Note that the high 16 bits of symbol values
      must be zero.  This is used for relaxation.  */
   HOWTO (R_MICROMIPS_HI0_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HI0_LO16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (158),
   EMPTY_HOWTO (159),
@@ -2948,222 +2948,222 @@ static reloc_howto_type micromips_elf64_
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_LDM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GOTTPREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (167),
   EMPTY_HOWTO (168),
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (171),
 
   /* GP- and PC-relative relocations.  */
   HOWTO (R_MICROMIPS_GPREL7_S2,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL7_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC23_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 23,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC23_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 /* GNU extension to record C++ vtable hierarchy */
 static reloc_howto_type elf_mips_gnu_vtinherit_howto =
   HOWTO (R_MIPS_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MIPS_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* GNU extension to record C++ vtable member usage */
 static reloc_howto_type elf_mips_gnu_vtentry_howto =
   HOWTO (R_MIPS_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_MIPS_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* 16 bit offset for pc-relative branches.  */
 static reloc_howto_type elf_mips_gnu_rel16_s2 =
   HOWTO (R_MIPS_GNU_REL16_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GNU_REL16_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE);			/* pcrel_offset */
+	 true);			/* pcrel_offset */
 
 /* 16 bit offset for pc-relative branches.  */
 static reloc_howto_type elf_mips_gnu_rela16_s2 =
   HOWTO (R_MIPS_GNU_REL16_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,	/* special_function */
 	 "R_MIPS_GNU_REL16_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE);			/* pcrel_offset */
+	 true);			/* pcrel_offset */
 
 /* 32 bit pc-relative.  Used for compact EH tables.  */
 static reloc_howto_type elf_mips_gnu_pcrel32 =
   HOWTO (R_MIPS_PC32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE);			/* pcrel_offset */
+	 true);			/* pcrel_offset */
 
 
 /* Originally a VxWorks extension, but now used for other systems too.  */
@@ -3172,47 +3172,47 @@ static reloc_howto_type elf_mips_copy_ho
 	 0,			/* rightshift */
 	 0,			/* this one is variable size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Originally a VxWorks extension, but now used for other systems too.  */
 static reloc_howto_type elf_mips_jump_slot_howto =
   HOWTO (R_MIPS_JUMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_JUMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Used in EH tables.  */
 static reloc_howto_type elf_mips_eh_howto =
   HOWTO (R_MIPS_EH,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_EH",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 
 /* Swap in a MIPS 64-bit Rel reloc.  */
@@ -3371,7 +3371,7 @@ mips_elf64_be_swap_reloca_out (bfd *abfd
 /* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
    dangerous relocation.  */
 
-static bfd_boolean
+static bool
 mips_elf64_assign_gp (bfd *output_bfd, bfd_vma *pgp)
 {
   unsigned int count;
@@ -3381,7 +3381,7 @@ mips_elf64_assign_gp (bfd *output_bfd, b
   /* If we've already figured out what GP will be, just return it.  */
   *pgp = _bfd_get_gp_value (output_bfd);
   if (*pgp)
-    return TRUE;
+    return true;
 
   count = bfd_get_symcount (output_bfd);
   sym = bfd_get_outsymbols (output_bfd);
@@ -3411,10 +3411,10 @@ mips_elf64_assign_gp (bfd *output_bfd, b
       /* Only get the error once.  */
       *pgp = 4;
       _bfd_set_gp_value (output_bfd, *pgp);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We have to figure out the gp value, so that we can adjust the
@@ -3424,11 +3424,10 @@ mips_elf64_assign_gp (bfd *output_bfd, b
    external symbol if we are producing relocatable output.  */
 
 static bfd_reloc_status_type
-mips_elf64_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable,
+mips_elf64_final_gp (bfd *output_bfd, asymbol *symbol, bool relocatable,
 		     char **error_message, bfd_vma *pgp)
 {
-  if (bfd_is_und_section (symbol->section)
-      && ! relocatable)
+  if (output_bfd == NULL)
     {
       *pgp = 0;
       return bfd_reloc_undefined;
@@ -3464,7 +3463,7 @@ mips_elf64_gprel16_reloc (bfd *abfd, are
 			  void *data, asection *input_section, bfd *output_bfd,
 			  char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -3479,11 +3478,11 @@ mips_elf64_gprel16_reloc (bfd *abfd, are
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      output_bfd = input_section->output_section->owner;
     }
 
   ret = mips_elf64_final_gp (output_bfd, symbol, relocatable, error_message,
@@ -3503,7 +3502,7 @@ mips_elf64_literal_reloc (bfd *abfd, are
 			  void *data, asection *input_section, bfd *output_bfd,
 			  char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -3519,11 +3518,11 @@ mips_elf64_literal_reloc (bfd *abfd, are
 
   /* FIXME: The entries in the .lit8 and .lit4 sections should be merged.  */
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      output_bfd = input_section->output_section->owner;
     }
 
   ret = mips_elf64_final_gp (output_bfd, symbol, relocatable, error_message,
@@ -3544,7 +3543,7 @@ mips_elf64_gprel32_reloc (bfd *abfd, are
 			  void *data, asection *input_section, bfd *output_bfd,
 			  char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
   bfd_vma relocation;
@@ -3561,11 +3560,11 @@ mips_elf64_gprel32_reloc (bfd *abfd, are
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      output_bfd = input_section->output_section->owner;
     }
 
   ret = mips_elf64_final_gp (output_bfd, symbol, relocatable,
@@ -3578,10 +3577,14 @@ mips_elf64_gprel32_reloc (bfd *abfd, are
   else
     relocation = symbol->value;
 
-  relocation += symbol->section->output_section->vma;
-  relocation += symbol->section->output_offset;
+  if (symbol->section->output_section != NULL)
+    {
+      relocation += symbol->section->output_section->vma;
+      relocation += symbol->section->output_offset;
+    }
 
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!_bfd_mips_reloc_offset_in_range (abfd, input_section, reloc_entry,
+					check_inplace))
     return bfd_reloc_outofrange;
 
   /* Set val to the offset into the section or symbol.  */
@@ -3634,7 +3637,7 @@ mips16_gprel_reloc (bfd *abfd, arelent *
 		    void *data, asection *input_section, bfd *output_bfd,
 		    char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_byte *location;
   bfd_vma gp;
@@ -3650,11 +3653,11 @@ mips16_gprel_reloc (bfd *abfd, arelent *
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      output_bfd = input_section->output_section->owner;
     }
 
   ret = mips_elf64_final_gp (output_bfd, symbol, relocatable, error_message,
@@ -3662,8 +3665,12 @@ mips16_gprel_reloc (bfd *abfd, arelent *
   if (ret != bfd_reloc_ok)
     return ret;
 
+  if (!_bfd_mips_reloc_offset_in_range (abfd, input_section, reloc_entry,
+					check_shuffle))
+    return bfd_reloc_outofrange;
+
   location = (bfd_byte *) data + reloc_entry->address;
-  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, FALSE,
+  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, false,
 				 location);
   ret = _bfd_mips_elf_gprel16_with_gp (abfd, symbol, reloc_entry,
 				       input_section, relocatable,
@@ -3684,7 +3691,8 @@ struct elf_reloc_map {
 static const struct elf_reloc_map mips_reloc_map[] =
 {
   { BFD_RELOC_NONE, R_MIPS_NONE },
-  { BFD_RELOC_16, R_MIPS_16 },
+  { BFD_RELOC_MIPS_16, R_MIPS_16 },
+  { BFD_RELOC_16, R_MIPS_REL16 },
   { BFD_RELOC_32, R_MIPS_32 },
   /* There is no BFD reloc for R_MIPS_REL32.  */
   { BFD_RELOC_64, R_MIPS_64 },
@@ -3714,7 +3722,6 @@ static const struct elf_reloc_map mips_r
   { BFD_RELOC_MIPS_CALL_HI16, R_MIPS_CALL_HI16 },
   { BFD_RELOC_MIPS_CALL_LO16, R_MIPS_CALL_LO16 },
   { BFD_RELOC_MIPS_SCN_DISP, R_MIPS_SCN_DISP },
-  { BFD_RELOC_MIPS_REL16, R_MIPS_REL16 },
   /* Use of R_MIPS_ADD_IMMEDIATE and R_MIPS_PJUMP is deprecated.  */
   { BFD_RELOC_MIPS_RELGOT, R_MIPS_RELGOT },
   { BFD_RELOC_MIPS_JALR, R_MIPS_JALR },
@@ -3905,7 +3912,7 @@ bfd_elf64_bfd_reloc_name_lookup (bfd *ab
 /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure.  */
 
 static reloc_howto_type *
-mips_elf64_rtype_to_howto (bfd *abfd, unsigned int r_type, bfd_boolean rela_p)
+mips_elf64_rtype_to_howto (bfd *abfd, unsigned int r_type, bool rela_p)
 {
   reloc_howto_type *howto = NULL;
 
@@ -3964,7 +3971,7 @@ mips_elf64_rtype_to_howto (bfd *abfd, un
 
 /* Prevent relocation handling by bfd for MIPS ELF64.  */
 
-static bfd_boolean
+static bool
 mips_elf64_info_to_howto_rela (bfd *abfd,
 			       arelent *cache_ptr ATTRIBUTE_UNUSED,
 			       Elf_Internal_Rela *dst)
@@ -3974,7 +3981,7 @@ mips_elf64_info_to_howto_rela (bfd *abfd
   _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 		      abfd, r_type);
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
 
 /* Since each entry in an SHT_REL or SHT_RELA section can represent up
@@ -3995,12 +4002,12 @@ mips_elf64_get_dynamic_reloc_upper_bound
    however that would also remove them from `objdump -r' output,
    breaking a long-established tradition and likely confusing people.  */
 
-static bfd_boolean
+static bool
 mips_elf64_slurp_one_reloc_table (bfd *abfd, asection *asect,
 				  Elf_Internal_Shdr *rel_hdr,
 				  bfd_size_type reloc_count,
 				  arelent *relents, asymbol **symbols,
-				  bfd_boolean dynamic)
+				  bool dynamic)
 {
   void *allocated;
   bfd_byte *native_relocs;
@@ -4008,16 +4015,13 @@ mips_elf64_slurp_one_reloc_table (bfd *a
   arelent *relent;
   bfd_vma i;
   int entsize;
-  bfd_boolean rela_p;
+  bool 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;
+    return false;
 
   native_relocs = allocated;
 
@@ -4026,9 +4030,9 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 	      || entsize == sizeof (Elf64_Mips_External_Rela));
 
   if (entsize == sizeof (Elf64_Mips_External_Rel))
-    rela_p = FALSE;
+    rela_p = false;
   else
-    rela_p = TRUE;
+    rela_p = true;
 
   if (dynamic)
     symcount = bfd_get_dynamic_symcount (abfd);
@@ -4040,7 +4044,7 @@ mips_elf64_slurp_one_reloc_table (bfd *a
        i++, native_relocs += entsize)
     {
       Elf64_Mips_Internal_Rela rela;
-      bfd_boolean used_sym, used_ssym;
+      bool used_sym, used_ssym;
       int ir;
 
       if (entsize == sizeof (Elf64_Mips_External_Rela))
@@ -4054,8 +4058,8 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 
       /* Each entry represents exactly three actual relocations.  */
 
-      used_sym = FALSE;
-      used_ssym = FALSE;
+      used_sym = false;
+      used_ssym = false;
       for (ir = 0; ir < 3; ir++)
 	{
 	  enum elf_mips_reloc_type type;
@@ -4076,6 +4080,7 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 	    }
 
 	  /* Some types require symbols, whereas some do not.  */
+	  relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	  switch (type)
 	    {
 	    case R_MIPS_NONE:
@@ -4083,14 +4088,13 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 	    case R_MIPS_INSERT_A:
 	    case R_MIPS_INSERT_B:
 	    case R_MIPS_DELETE:
-	      relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
 	      break;
 
 	    default:
 	      if (! used_sym)
 		{
 		  if (rela.r_sym == STN_UNDEF)
-		    relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+		    ;
 		  else if (rela.r_sym > symcount)
 		    {
 		      _bfd_error_handler
@@ -4099,8 +4103,6 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 			   " has invalid symbol index %ld"),
 			 abfd, asect, (uint64_t) i, rela.r_sym);
 		      bfd_set_error (bfd_error_bad_value);
-		      relent->sym_ptr_ptr
-			= bfd_abs_section_ptr->symbol_ptr_ptr;
 		    }
 		  else
 		    {
@@ -4111,18 +4113,16 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 		      if ((s->flags & BSF_SECTION_SYM) == 0)
 			relent->sym_ptr_ptr = ps;
 		      else
-			relent->sym_ptr_ptr = s->section->symbol_ptr_ptr;
+			relent->sym_ptr_ptr = &s->section->symbol;
 		    }
 
-		  used_sym = TRUE;
+		  used_sym = true;
 		}
 	      else if (! used_ssym)
 		{
 		  switch (rela.r_ssym)
 		    {
 		    case RSS_UNDEF:
-		      relent->sym_ptr_ptr =
-			bfd_abs_section_ptr->symbol_ptr_ptr;
 		      break;
 
 		    case RSS_GP:
@@ -4138,11 +4138,8 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 		      break;
 		    }
 
-		  used_ssym = TRUE;
+		  used_ssym = true;
 		}
-	      else
-		relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
-
 	      break;
 	    }
 
@@ -4165,15 +4162,12 @@ mips_elf64_slurp_one_reloc_table (bfd *a
 	}
     }
 
-  if (allocated != NULL)
-    free (allocated);
-
-  return TRUE;
+  free (allocated);
+  return true;
 
  error_return:
-  if (allocated != NULL)
-    free (allocated);
-  return FALSE;
+  free (allocated);
+  return false;
 }
 
 /* Read the relocations.  On Irix 6, there can be two reloc sections
@@ -4181,9 +4175,9 @@ mips_elf64_slurp_one_reloc_table (bfd *a
    elfcode.h as well, with changes as small as accounting for 3
    internal relocs per external reloc.  */
 
-static bfd_boolean
+static bool
 mips_elf64_slurp_reloc_table (bfd *abfd, asection *asect,
-			      asymbol **symbols, bfd_boolean dynamic)
+			      asymbol **symbols, bool dynamic)
 {
   struct bfd_elf_section_data * const d = elf_section_data (asect);
   Elf_Internal_Shdr *rel_hdr;
@@ -4194,13 +4188,13 @@ mips_elf64_slurp_reloc_table (bfd *abfd,
   bfd_size_type amt;
 
   if (asect->relocation != NULL)
-    return TRUE;
+    return true;
 
   if (! dynamic)
     {
       if ((asect->flags & SEC_RELOC) == 0
 	  || asect->reloc_count == 0)
-	return TRUE;
+	return true;
 
       rel_hdr = d->rel.hdr;
       reloc_count = rel_hdr ? NUM_SHDR_ENTRIES (rel_hdr) : 0;
@@ -4219,7 +4213,7 @@ mips_elf64_slurp_reloc_table (bfd *abfd,
 	 dynamic symbol table, and in that case bfd_section_from_shdr
 	 in elf.c does not update the RELOC_COUNT.  */
       if (asect->size == 0)
-	return TRUE;
+	return true;
 
       rel_hdr = &d->this_hdr;
       reloc_count = NUM_SHDR_ENTRIES (rel_hdr);
@@ -4231,23 +4225,23 @@ mips_elf64_slurp_reloc_table (bfd *abfd,
   amt = (reloc_count + reloc_count2) * 3 * sizeof (arelent);
   relents = bfd_alloc (abfd, amt);
   if (relents == NULL)
-    return FALSE;
+    return false;
 
   if (rel_hdr != NULL
       && ! mips_elf64_slurp_one_reloc_table (abfd, asect,
 					     rel_hdr, reloc_count,
 					     relents,
 					     symbols, dynamic))
-    return FALSE;
+    return false;
   if (rel_hdr2 != NULL
       && ! mips_elf64_slurp_one_reloc_table (abfd, asect,
 					     rel_hdr2, reloc_count2,
 					     relents + reloc_count * 3,
 					     symbols, dynamic))
-    return FALSE;
+    return false;
 
   asect->relocation = relents;
-  return TRUE;
+  return true;
 }
 
 /* Write out the relocations.  */
@@ -4255,7 +4249,7 @@ mips_elf64_slurp_reloc_table (bfd *abfd,
 static void
 mips_elf64_write_relocs (bfd *abfd, asection *sec, void *data)
 {
-  bfd_boolean *failedp = data;
+  bool *failedp = data;
   int count;
   Elf_Internal_Shdr *rel_hdr;
   unsigned int idx;
@@ -4320,7 +4314,7 @@ mips_elf64_write_rel (bfd *abfd, asectio
 		      Elf_Internal_Shdr *rel_hdr,
 		      int *count, void *data)
 {
-  bfd_boolean *failedp = data;
+  bool *failedp = data;
   Elf64_Mips_External_Rel *ext_rel;
   unsigned int idx;
   asymbol *last_sym = 0;
@@ -4330,7 +4324,7 @@ mips_elf64_write_rel (bfd *abfd, asectio
   rel_hdr->contents = bfd_alloc (abfd, rel_hdr->sh_size);
   if (rel_hdr->contents == NULL)
     {
-      *failedp = TRUE;
+      *failedp = true;
       return;
     }
 
@@ -4364,7 +4358,7 @@ mips_elf64_write_rel (bfd *abfd, asectio
 	  n = _bfd_elf_symbol_from_bfd_symbol (abfd, &sym);
 	  if (n < 0)
 	    {
-	      *failedp = TRUE;
+	      *failedp = true;
 	      return;
 	    }
 	  last_sym_idx = n;
@@ -4377,7 +4371,7 @@ mips_elf64_write_rel (bfd *abfd, asectio
 	  && (*ptr->sym_ptr_ptr)->the_bfd->xvec != abfd->xvec
 	  && ! _bfd_elf_validate_reloc (abfd, ptr))
 	{
-	  *failedp = TRUE;
+	  *failedp = true;
 	  return;
 	}
 
@@ -4419,7 +4413,7 @@ mips_elf64_write_rela (bfd *abfd, asecti
 		       Elf_Internal_Shdr *rela_hdr,
 		       int *count, void *data)
 {
-  bfd_boolean *failedp = data;
+  bool *failedp = data;
   Elf64_Mips_External_Rela *ext_rela;
   unsigned int idx;
   asymbol *last_sym = 0;
@@ -4429,7 +4423,7 @@ mips_elf64_write_rela (bfd *abfd, asecti
   rela_hdr->contents = bfd_alloc (abfd, rela_hdr->sh_size);
   if (rela_hdr->contents == NULL)
     {
-      *failedp = TRUE;
+      *failedp = true;
       return;
     }
 
@@ -4463,7 +4457,7 @@ mips_elf64_write_rela (bfd *abfd, asecti
 	  n = _bfd_elf_symbol_from_bfd_symbol (abfd, &sym);
 	  if (n < 0)
 	    {
-	      *failedp = TRUE;
+	      *failedp = true;
 	      return;
 	    }
 	  last_sym_idx = n;
@@ -4477,7 +4471,7 @@ mips_elf64_write_rela (bfd *abfd, asecti
 	  && (*ptr->sym_ptr_ptr)->the_bfd->xvec != abfd->xvec
 	  && ! _bfd_elf_validate_reloc (abfd, ptr))
 	{
-	  *failedp = TRUE;
+	  *failedp = true;
 	  return;
 	}
 
@@ -4516,7 +4510,7 @@ mips_elf64_write_rela (bfd *abfd, asecti
 
 /* Set the right machine number for a MIPS ELF file.  */
 
-static bfd_boolean
+static bool
 mips_elf64_object_p (bfd *abfd)
 {
   unsigned long mach;
@@ -4525,11 +4519,11 @@ mips_elf64_object_p (bfd *abfd)
      sorted correctly such that local symbols precede global symbols,
      and the sh_info field in the symbol table is not always right.  */
   if (elf64_mips_irix_compat (abfd) != ict_none)
-    elf_bad_symtab (abfd) = TRUE;
+    elf_bad_symtab (abfd) = true;
 
   mach = _bfd_elf_mips_mach (elf_elfheader (abfd)->e_flags);
   bfd_default_set_arch_mach (abfd, bfd_arch_mips, mach);
-  return TRUE;
+  return true;
 }
 
 /* Depending on the target vector we generate some version of Irix
@@ -4545,7 +4539,7 @@ elf64_mips_irix_compat (bfd *abfd)
 }
 
 /* Support for core dump NOTE sections.  */
-static bfd_boolean
+static bool
 elf64_mips_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -4554,7 +4548,7 @@ elf64_mips_grok_prstatus (bfd *abfd, Elf
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 480:		/* Linux/MIPS - N64 kernel */
 	/* pr_cursig */
@@ -4575,13 +4569,13 @@ elf64_mips_grok_prstatus (bfd *abfd, Elf
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf64_mips_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 136:		/* Linux/MIPS - N64 kernel elf_prpsinfo */
 	elf_tdata (abfd)->core->pid
@@ -4604,7 +4598,7 @@ elf64_mips_grok_psinfo (bfd *abfd, Elf_I
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 /* Write Linux core PRSTATUS note into core file.  */
@@ -4729,9 +4723,9 @@ const struct elf_size_info mips_elf64_si
 #define ELF_TARGET_ID			MIPS_ELF_DATA
 #define ELF_MACHINE_CODE		EM_MIPS
 
-#define elf_backend_collect		TRUE
-#define elf_backend_type_change_ok	TRUE
-#define elf_backend_can_gc_sections	TRUE
+#define elf_backend_collect		true
+#define elf_backend_type_change_ok	true
+#define elf_backend_can_gc_sections	true
 #define elf_backend_gc_mark_extra_sections \
 					_bfd_mips_elf_gc_mark_extra_sections
 #define elf_info_to_howto		mips_elf64_info_to_howto_rela
@@ -4754,10 +4748,8 @@ const struct elf_size_info mips_elf64_si
 #define elf_backend_get_target_dtag	_bfd_mips_elf_get_target_dtag
 #define elf_backend_adjust_dynamic_symbol \
 				_bfd_mips_elf_adjust_dynamic_symbol
-#define elf_backend_always_size_sections \
-				_bfd_mips_elf_always_size_sections
-#define elf_backend_size_dynamic_sections \
-				_bfd_mips_elf_size_dynamic_sections
+#define elf_backend_late_size_sections \
+				_bfd_mips_elf_late_size_sections
 #define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section    _bfd_mips_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol \
@@ -4795,7 +4787,7 @@ const struct elf_size_info mips_elf64_si
 #define elf_backend_plt_readonly	1
 #define elf_backend_plt_sym_val		_bfd_mips_elf_plt_sym_val
 
-#define elf_backend_sign_extend_vma	TRUE
+#define elf_backend_sign_extend_vma	true
 
 #define elf_backend_write_section	_bfd_mips_elf_write_section
 #define elf_backend_sort_relocs_p	_bfd_mips_elf_sort_relocs_p
@@ -4806,6 +4798,8 @@ const struct elf_size_info mips_elf64_si
 #define bfd_elf64_bfd_is_target_special_symbol \
 					_bfd_mips_elf_is_target_special_symbol
 #define bfd_elf64_find_nearest_line	_bfd_mips_elf_find_nearest_line
+#define bfd_elf64_find_nearest_line_with_alt \
+				_bfd_mips_elf_find_nearest_line_with_alt
 #define bfd_elf64_find_inliner_info	_bfd_mips_elf_find_inliner_info
 #define bfd_elf64_new_section_hook	_bfd_mips_elf_new_section_hook
 #define bfd_elf64_set_section_contents	_bfd_mips_elf_set_section_contents
@@ -4822,6 +4816,7 @@ const struct elf_size_info mips_elf64_si
 
 #define bfd_elf64_get_dynamic_reloc_upper_bound mips_elf64_get_dynamic_reloc_upper_bound
 #define bfd_elf64_mkobject		_bfd_mips_elf_mkobject
+#define bfd_elf64_bfd_free_cached_info	_bfd_mips_elf_free_cached_info
 
 /* The SGI style (n)64 NewABI.  */
 #define TARGET_LITTLE_SYM		mips_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.20200303/bfd/elf64-mmix.c ./bfd/elf64-mmix.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-mmix.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-mmix.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* MMIX-specific support for 64-bit ELF.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
    Contributed by Hans-Peter Nilsson <hp@bitrange.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -79,8 +79,8 @@ struct _mmix_elf_section_data
      linked due to a specific cause.  FIXME: a way to access the
      linker info or output section, then stuff the limiter guard
      there. */
-  bfd_boolean has_warned_bpo;
-  bfd_boolean has_warned_pushj;
+  bool has_warned_bpo;
+  bool has_warned_pushj;
 };
 
 #define mmix_elf_section_data(sec) \
@@ -125,7 +125,7 @@ struct bpo_reloc_request
     /* Set when the value is computed.  Better than coding "guard values"
        into the other members.  Is FALSE only for BPO relocs in a GC:ed
        section.  */
-    bfd_boolean valid;
+    bool valid;
   };
 
 /* We attach this as mmix_elf_section_data (sec)->bpo in the linker-allocated
@@ -166,7 +166,7 @@ struct bpo_greg_section_info
   };
 
 
-extern bfd_boolean mmix_elf_final_link (bfd *, struct bfd_link_info *);
+extern bool mmix_elf_final_link (bfd *, struct bfd_link_info *);
 
 extern void mmix_elf_symbol_processing (bfd *, asymbol *);
 
@@ -192,197 +192,197 @@ static reloc_howto_type elf_mmix_howto_t
   /* This reloc does nothing.  */
   HOWTO (R_MMIX_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_MMIX_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 16 bit absolute relocation.  */
   HOWTO (R_MMIX_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 24 bit absolute relocation.  */
   HOWTO (R_MMIX_24,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_24",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 32 bit absolute relocation.  */
   HOWTO (R_MMIX_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit relocation.  */
   HOWTO (R_MMIX_64,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_64",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit PC-relative relocation.  */
   HOWTO (R_MMIX_PC_8,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_PC_8",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* An 16 bit PC-relative relocation.  */
   HOWTO (R_MMIX_PC_16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_PC_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* An 24 bit PC-relative relocation.  */
   HOWTO (R_MMIX_PC_24,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_PC_24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 32 bit absolute PC-relative relocation.  */
   HOWTO (R_MMIX_PC_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_PC_32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 64 bit PC-relative relocation.  */
   HOWTO (R_MMIX_PC_64,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_MMIX_PC_64",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_MMIX_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MMIX_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage.  */
   HOWTO (R_MMIX_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_MMIX_GNU_VTENTRY", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The GETA relocation is supposed to get any address that could
      possibly be reached by the GETA instruction.  It can silently expand
@@ -390,59 +390,59 @@ static reloc_howto_type elf_mmix_howto_t
      significant bits are set.  The howto members reflect a simple GETA.  */
   HOWTO (R_MMIX_GETA,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_GETA",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_GETA_1,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_GETA_1",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_GETA_2,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_GETA_2",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_GETA_3,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_GETA_3",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The conditional branches are supposed to reach any (code) address.
      It can silently expand to a 64-bit operand, but will emit an error if
@@ -450,73 +450,73 @@ static reloc_howto_type elf_mmix_howto_t
      reflect a simple branch.  */
   HOWTO (R_MMIX_CBRANCH,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_CBRANCH",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_CBRANCH_J,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_CBRANCH_J",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_CBRANCH_1,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_CBRANCH_1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_CBRANCH_2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_CBRANCH_2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_CBRANCH_3,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_CBRANCH_3",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* The PUSHJ instruction can reach any (code) address, as long as it's
      the beginning of a function (no usable restriction).  It can silently
@@ -526,59 +526,59 @@ static reloc_howto_type elf_mmix_howto_t
      PUSHJ.  */
   HOWTO (R_MMIX_PUSHJ,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_PUSHJ",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_PUSHJ_1,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_PUSHJ_1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_PUSHJ_2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_PUSHJ_2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_PUSHJ_3,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_PUSHJ_3",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A JMP is supposed to reach any (code) address.  By itself, it can
      reach +-64M; the expansion can reach all 64 bits.  Note that the 64M
@@ -586,139 +586,139 @@ static reloc_howto_type elf_mmix_howto_t
      memory segments.  The howto members reflect a trivial JMP.  */
   HOWTO (R_MMIX_JMP,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 27,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_JMP",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x1ffffff,		/* src_mask */
 	 0x1ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_JMP_1,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 27,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_JMP_1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x1ffffff,		/* src_mask */
 	 0x1ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_JMP_2,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 27,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_JMP_2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x1ffffff,		/* src_mask */
 	 0x1ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MMIX_JMP_3,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 27,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_JMP_3",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x1ffffff,		/* src_mask */
 	 0x1ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* When we don't emit link-time-relaxable code from the assembler, or
      when relaxation has done all it can do, these relocs are used.  For
      GETA/PUSHJ/branches.  */
   HOWTO (R_MMIX_ADDR19,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_ADDR19",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* For JMP.  */
   HOWTO (R_MMIX_ADDR27,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 27,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_ADDR27",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x1ffffff,		/* src_mask */
 	 0x1ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A general register or the value 0..255.  If a value, then the
      instruction (offset -3) needs adjusting.  */
   HOWTO (R_MMIX_REG_OR_BYTE,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_REG_OR_BYTE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A general register.  */
   HOWTO (R_MMIX_REG,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_REG",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A register plus an index, corresponding to the relocation expression.
      The sizes must correspond to the valid range of the expression, while
      the bitmasks correspond to what we store in the image.  */
   HOWTO (R_MMIX_BASE_PLUS_OFFSET,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_BASE_PLUS_OFFSET", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A "magic" relocation for a LOCAL expression, asserting that the
      expression is less than the number of global registers.  No actual
@@ -727,31 +727,31 @@ static reloc_howto_type elf_mmix_howto_t
      section to discard *after* relocation.  */
   HOWTO (R_MMIX_LOCAL,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_LOCAL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MMIX_PUSHJ_STUBBABLE, /* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mmix_elf_reloc,	/* special_function */
 	 "R_MMIX_PUSHJ_STUBBABLE", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 ~0x0100ffff,		/* src_mask */
 	 0x0100ffff,		/* dst_mask */
-	 TRUE)			/* pcrel_offset */
+	 true)			/* pcrel_offset */
  };
 
 
@@ -825,19 +825,15 @@ bfd_elf64_bfd_reloc_name_lookup (bfd *ab
   return NULL;
 }
 
-static bfd_boolean
+static bool
 mmix_elf_new_section_hook (bfd *abfd, asection *sec)
 {
-  if (!sec->used_by_bfd)
-    {
-      struct _mmix_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+  struct _mmix_elf_section_data *sdata;
 
-      sdata = bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
@@ -987,7 +983,7 @@ mmix_elf_perform_relocation (asection *i
 			" ELF or mmo,"
 			" or assemble using"
 			" \"-no-expand\" (for gcc, \"-Wa,-no-expand\"");
-		  mmix_elf_section_data (isec)->has_warned_pushj = TRUE;
+		  mmix_elf_section_data (isec)->has_warned_pushj = true;
 		  return bfd_reloc_dangerous;
 		}
 
@@ -1171,7 +1167,7 @@ mmix_elf_perform_relocation (asection *i
 		      " ELF or mmo,"
 		      " or compile using the gcc-option"
 		      " \"-mno-base-addresses\".");
-		mmix_elf_section_data (isec)->has_warned_bpo = TRUE;
+		mmix_elf_section_data (isec)->has_warned_bpo = true;
 		return bfd_reloc_dangerous;
 	      }
 
@@ -1250,7 +1246,7 @@ mmix_elf_perform_relocation (asection *i
 
 /* Set the howto pointer for an MMIX ELF reloc (type RELA).  */
 
-static bfd_boolean
+static bool
 mmix_info_to_howto_rela (bfd *abfd,
 			 arelent *cache_ptr,
 			 Elf_Internal_Rela *dst)
@@ -1264,10 +1260,10 @@ mmix_info_to_howto_rela (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_mmix_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 /* Any MMIX-specific relocation gets here at assembly time or when linking
@@ -1350,7 +1346,7 @@ mmix_elf_reloc (bfd *abfd,
 /* Relocate an MMIX ELF section.  Modified from elf32-fr30.c; look to it
    for guidance if you're thinking of copying this.  */
 
-static bfd_boolean
+static int
 mmix_elf_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -1389,7 +1385,7 @@ mmix_elf_relocate_section (bfd *output_b
       bfd_reloc_status_type r;
       const char *name = NULL;
       int r_type;
-      bfd_boolean undefined_signalled = FALSE;
+      bool undefined_signalled = false;
 
       r_type = ELF64_R_TYPE (rel->r_info);
 
@@ -1418,7 +1414,7 @@ mmix_elf_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, ignored;
+	  bool unresolved_reloc, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1430,7 +1426,8 @@ mmix_elf_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_MMIX_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	{
@@ -1476,7 +1473,7 @@ mmix_elf_relocate_section (bfd *output_b
 						+ mmix_elf_section_data (input_section)
 						->pjs.stub_offset,
 						NULL, NULL, NULL) != bfd_reloc_ok)
-		    return FALSE;
+		    return false;
 
 		  /* Put a JMP insn at the stub; it goes with the
 		     R_MMIX_JMP reloc.  */
@@ -1500,7 +1497,7 @@ mmix_elf_relocate_section (bfd *output_b
 		  /* Shift this reloc to the end of the relocs to maintain
 		     the r_offset sorted reloc order.  */
 		  relcpy = *rel;
-		  memmove (rel, rel + 1, (char *) relend - (char *) rel);
+		  memmove (rel, rel + 1, (char *) relend - (char *) (rel + 1));
 		  relend[-1] = relcpy;
 
 		  /* Back up one reloc, or else we'd skip the next reloc
@@ -1533,8 +1530,8 @@ mmix_elf_relocate_section (bfd *output_b
 	      /* We may have sent this message above.  */
 	      if (! undefined_signalled)
 		info->callbacks->undefined_symbol
-		  (info, name, input_bfd, input_section, rel->r_offset, TRUE);
-	      undefined_signalled = TRUE;
+		  (info, name, input_bfd, input_section, rel->r_offset, true);
+	      undefined_signalled = true;
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -1560,7 +1557,7 @@ mmix_elf_relocate_section (bfd *output_b
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Perform a single relocation.  By default we use the standard BFD
@@ -1815,7 +1812,7 @@ mmix_elf_sort_relocs (const void * p1, c
 
 /* Subset of mmix_elf_check_relocs, common to ELF and mmo linking.  */
 
-static bfd_boolean
+static bool
 mmix_elf_check_common_relocs  (bfd *abfd,
 			       struct bfd_link_info *info,
 			       asection *sec,
@@ -1875,12 +1872,12 @@ mmix_elf_check_common_relocs  (bfd *abfd
 		 GREG allocations, and that works.  */
 	      if (allocated_gregs_section == NULL
 		  || !bfd_set_section_alignment (allocated_gregs_section, 3))
-		return FALSE;
+		return false;
 
 	      gregdata = (struct bpo_greg_section_info *)
 		bfd_zalloc (bpo_greg_owner, sizeof (struct bpo_greg_section_info));
 	      if (gregdata == NULL)
-		return FALSE;
+		return false;
 	      mmix_elf_section_data (allocated_gregs_section)->bpo.greg
 		= gregdata;
 	    }
@@ -1898,7 +1895,7 @@ mmix_elf_check_common_relocs  (bfd *abfd
 			   sizeof (struct bpo_reloc_section_info)
 			   * (sec->reloc_count + 1));
 	      if (bpodata == NULL)
-		return FALSE;
+		return false;
 	      mmix_elf_section_data (sec)->bpo.reloc = bpodata;
 	      bpodata->first_base_plus_offset_reloc
 		= bpodata->bpo_index
@@ -1934,18 +1931,18 @@ mmix_elf_check_common_relocs  (bfd *abfd
 		     * sizeof (mmix_elf_section_data (sec)
 			       ->pjs.stub_size[0]));
       if (mmix_elf_section_data (sec)->pjs.stub_size == NULL)
-	return FALSE;
+	return false;
 
       for (i = 0; i < mmix_elf_section_data (sec)->pjs.n_pushj_relocs; i++)
 	mmix_elf_section_data (sec)->pjs.stub_size[i] = MAX_PUSHJ_STUB_SIZE;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase.  */
 
-static bfd_boolean
+static bool
 mmix_elf_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
@@ -1966,10 +1963,10 @@ mmix_elf_check_relocs (bfd *abfd,
 
   /* Do the common part.  */
   if (!mmix_elf_check_common_relocs (abfd, info, sec, relocs))
-    return FALSE;
+    return false;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   rel_end = relocs + sec->reloc_count;
   for (rel = relocs; rel < rel_end; rel++)
@@ -1994,25 +1991,25 @@ mmix_elf_check_relocs (bfd *abfd,
 	   Reconstruct it for later use during GC.  */
 	case R_MMIX_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	/* This relocation describes which C++ vtable entries are actually
 	   used.  Record for later use during GC.  */
 	case R_MMIX_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Wrapper for mmix_elf_check_common_relocs, called when linking to mmo.
    Copied from elf_link_add_object_symbols.  */
 
-bfd_boolean
+bool
 _bfd_mmix_check_all_relocs (bfd *abfd, struct bfd_link_info *info)
 {
   asection *o;
@@ -2020,7 +2017,7 @@ _bfd_mmix_check_all_relocs (bfd *abfd, s
   for (o = abfd->sections; o != NULL; o = o->next)
     {
       Elf_Internal_Rela *internal_relocs;
-      bfd_boolean ok;
+      bool ok;
 
       if ((o->flags & SEC_RELOC) == 0
 	  || o->reloc_count == 0
@@ -2034,7 +2031,7 @@ _bfd_mmix_check_all_relocs (bfd *abfd, s
 				     (Elf_Internal_Rela *) NULL,
 				     info->keep_memory);
       if (internal_relocs == NULL)
-	return FALSE;
+	return false;
 
       ok = mmix_elf_check_common_relocs (abfd, info, o, internal_relocs);
 
@@ -2042,10 +2039,10 @@ _bfd_mmix_check_all_relocs (bfd *abfd, s
 	free (internal_relocs);
 
       if (! ok)
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Change symbols relative to the reg contents section to instead be to
@@ -2076,8 +2073,11 @@ mmix_elf_link_output_symbol_hook (struct
    formats (e.g. mmo) than for example a STT_REGISTER attribute.
    This section faking is based on a construct in elf32-mips.c.  */
 static asection mmix_elf_reg_section;
-static asymbol mmix_elf_reg_section_symbol;
-static asymbol *mmix_elf_reg_section_symbol_ptr;
+static const asymbol mmix_elf_reg_section_symbol =
+  GLOBAL_SYM_INIT (MMIX_REG_SECTION_NAME, &mmix_elf_reg_section);
+static asection mmix_elf_reg_section =
+  BFD_FAKE_SECTION (mmix_elf_reg_section, &mmix_elf_reg_section_symbol,
+		    MMIX_REG_SECTION_NAME, 0, SEC_NO_FLAGS);
 
 /* Handle the special section numbers that a symbol may use.  */
 
@@ -2090,19 +2090,6 @@ mmix_elf_symbol_processing (bfd *abfd AT
   switch (elfsym->internal_elf_sym.st_shndx)
     {
     case SHN_REGISTER:
-      if (mmix_elf_reg_section.name == NULL)
-	{
-	  /* Initialize the register section.  */
-	  mmix_elf_reg_section.name = MMIX_REG_SECTION_NAME;
-	  mmix_elf_reg_section.flags = SEC_NO_FLAGS;
-	  mmix_elf_reg_section.output_section = &mmix_elf_reg_section;
-	  mmix_elf_reg_section.symbol = &mmix_elf_reg_section_symbol;
-	  mmix_elf_reg_section.symbol_ptr_ptr = &mmix_elf_reg_section_symbol_ptr;
-	  mmix_elf_reg_section_symbol.name = MMIX_REG_SECTION_NAME;
-	  mmix_elf_reg_section_symbol.flags = BSF_SECTION_SYM;
-	  mmix_elf_reg_section_symbol.section = &mmix_elf_reg_section;
-	  mmix_elf_reg_section_symbol_ptr = &mmix_elf_reg_section_symbol;
-	}
       asym->section = &mmix_elf_reg_section;
       break;
 
@@ -2114,7 +2101,7 @@ mmix_elf_symbol_processing (bfd *abfd AT
 /* Given a BFD section, try to locate the corresponding ELF section
    index.  */
 
-static bfd_boolean
+static bool
 mmix_elf_section_from_bfd_section (bfd *       abfd ATTRIBUTE_UNUSED,
 				   asection *  sec,
 				   int *       retval)
@@ -2122,9 +2109,9 @@ mmix_elf_section_from_bfd_section (bfd *
   if (strcmp (bfd_section_name (sec), MMIX_REG_SECTION_NAME) == 0)
     *retval = SHN_REGISTER;
   else
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Hook called by the linker routine which adds symbols from an object
@@ -2134,7 +2121,7 @@ mmix_elf_section_from_bfd_section (bfd *
    symbols, since otherwise having two with the same value would cause
    them to be "merged", but with the contents serialized.  */
 
-static bfd_boolean
+static bool
 mmix_elf_add_symbol_hook (bfd *abfd,
 			  struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			  Elf_Internal_Sym *sym,
@@ -2149,14 +2136,14 @@ mmix_elf_add_symbol_hook (bfd *abfd,
       (*secp)->flags |= SEC_LINKER_CREATED;
     }
   else if ((*namep)[0] == '_' && (*namep)[1] == '_' && (*namep)[2] == '.'
-	   && CONST_STRNEQ (*namep, MMIX_LOC_SECTION_START_SYMBOL_PREFIX))
+	   && startswith (*namep, MMIX_LOC_SECTION_START_SYMBOL_PREFIX))
     {
       /* See if we have another one.  */
       struct bfd_link_hash_entry *h = bfd_link_hash_lookup (info->hash,
 							    *namep,
-							    FALSE,
-							    FALSE,
-							    FALSE);
+							    false,
+							    false,
+							    false);
 
       if (h != NULL && h->type != bfd_link_hash_undefined)
 	{
@@ -2169,16 +2156,16 @@ mmix_elf_add_symbol_hook (bfd *abfd,
 	     abfd, *namep,
 	     *namep + strlen (MMIX_LOC_SECTION_START_SYMBOL_PREFIX));
 	   bfd_set_error (bfd_error_bad_value);
-	   return FALSE;
+	   return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We consider symbols matching "L.*:[0-9]+" to be local symbols.  */
 
-static bfd_boolean
+static bool
 mmix_elf_is_local_label_name (bfd *abfd, const char *name)
 {
   const char *colpos;
@@ -2186,19 +2173,19 @@ mmix_elf_is_local_label_name (bfd *abfd,
 
   /* Also include the default local-label definition.  */
   if (_bfd_elf_is_local_label_name (abfd, name))
-    return TRUE;
+    return true;
 
   if (*name != 'L')
-    return FALSE;
+    return false;
 
   /* If there's no ":", or more than one, it's not a local symbol.  */
   colpos = strchr (name, ':');
   if (colpos == NULL || strchr (colpos + 1, ':') != NULL)
-    return FALSE;
+    return false;
 
   /* Check that there are remaining characters and that they are digits.  */
   if (colpos[1] == 0)
-    return FALSE;
+    return false;
 
   digits = strspn (colpos + 1, "0123456789");
   return digits != 0 && colpos[1 + digits] == 0;
@@ -2206,7 +2193,7 @@ mmix_elf_is_local_label_name (bfd *abfd,
 
 /* We get rid of the register section here.  */
 
-bfd_boolean
+bool
 mmix_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   /* We never output a register section, though we create one for
@@ -2230,7 +2217,7 @@ mmix_elf_final_link (bfd *abfd, struct b
     }
 
   if (! bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
   /* Since this section is marked SEC_LINKER_CREATED, it isn't output by
      the regular linker machinery.  We do it here, like other targets with
@@ -2245,9 +2232,9 @@ mmix_elf_final_link (bfd *abfd, struct b
 				     greg_section->contents,
 				     (file_ptr) greg_section->output_offset,
 				     greg_section->size))
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* We need to include the maximum size of PUSHJ-stubs in the initial
@@ -2280,7 +2267,7 @@ mmix_set_relaxable_size (bfd *abfd ATTRI
 /* Initialize stuff for the linker-generated GREGs to match
    R_MMIX_BASE_PLUS_OFFSET relocs seen by the linker.  */
 
-bfd_boolean
+bool
 _bfd_mmix_before_linker_allocation (bfd *abfd ATTRIBUTE_UNUSED,
 				    struct bfd_link_info *info)
 {
@@ -2302,19 +2289,19 @@ _bfd_mmix_before_linker_allocation (bfd
      If there is no such object, there was no R_MMIX_BASE_PLUS_OFFSET.  */
   bpo_greg_owner = (bfd *) info->base_file;
   if (bpo_greg_owner == NULL)
-    return TRUE;
+    return true;
 
   bpo_gregs_section
     = bfd_get_section_by_name (bpo_greg_owner,
 			       MMIX_LD_ALLOCATED_REG_CONTENTS_SECTION_NAME);
 
   if (bpo_gregs_section == NULL)
-    return TRUE;
+    return true;
 
   /* We use the target-data handle in the ELF section data.  */
   gregdata = mmix_elf_section_data (bpo_gregs_section)->bpo.greg;
   if (gregdata == NULL)
-    return FALSE;
+    return false;
 
   n_gregs = gregdata->n_bpo_relocs;
   gregdata->n_allocated_bpo_gregs = n_gregs;
@@ -2327,7 +2314,7 @@ _bfd_mmix_before_linker_allocation (bfd
   gregs_size = n_gregs * 8;
 
   if (!bfd_set_section_size (bpo_gregs_section, gregs_size))
-    return FALSE;
+    return false;
 
   /* Allocate and set up the GREG arrays.  They're filled in at relaxation
      time.  Note that we must use the max number ever noted for the array,
@@ -2343,7 +2330,7 @@ _bfd_mmix_before_linker_allocation (bfd
 		 gregdata->n_max_bpo_relocs
 		 * sizeof (size_t));
   if (bpo_reloc_indexes == NULL)
-    return FALSE;
+    return false;
 
   /* The default order is an identity mapping.  */
   for (i = 0; i < gregdata->n_max_bpo_relocs; i++)
@@ -2352,13 +2339,13 @@ _bfd_mmix_before_linker_allocation (bfd
       gregdata->reloc_request[i].bpo_reloc_no = i;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Fill in contents in the linker allocated gregs.  Everything is
    calculated at this point; we just move the contents into place here.  */
 
-bfd_boolean
+bool
 _bfd_mmix_after_linker_allocation (bfd *abfd ATTRIBUTE_UNUSED,
 				   struct bfd_link_info *link_info)
 {
@@ -2375,7 +2362,7 @@ _bfd_mmix_after_linker_allocation (bfd *
      object, there was no R_MMIX_BASE_PLUS_OFFSET.  */
   bpo_greg_owner = (bfd *) link_info->base_file;
   if (bpo_greg_owner == NULL)
-    return TRUE;
+    return true;
 
   bpo_gregs_section
     = bfd_get_section_by_name (bpo_greg_owner,
@@ -2385,20 +2372,21 @@ _bfd_mmix_after_linker_allocation (bfd *
      without any R_MMIX_BASE_PLUS_OFFSET seen, there will be no such
      section.  */
   if (bpo_gregs_section == NULL)
-    return TRUE;
+    return true;
 
   /* We use the target-data handle in the ELF section data.  */
 
   gregdata = mmix_elf_section_data (bpo_gregs_section)->bpo.greg;
   if (gregdata == NULL)
-    return FALSE;
+    return false;
 
   n_gregs = gregdata->n_allocated_bpo_gregs;
 
   bpo_gregs_section->contents
     = contents = bfd_alloc (bpo_greg_owner, bpo_gregs_section->size);
   if (contents == NULL)
-    return FALSE;
+    return false;
+  bpo_gregs_section->alloced = 1;
 
   /* Sanity check: If these numbers mismatch, some relocation has not been
      accounted for and the rest of gregdata is probably inconsistent.
@@ -2413,7 +2401,7 @@ _bfd_mmix_after_linker_allocation (bfd *
 	   " please report this bug"),
 	 (unsigned long) gregdata->n_remaining_bpo_relocs_this_relaxation_round,
 	 (unsigned long) gregdata->n_bpo_relocs);
-      return FALSE;
+      return false;
     }
 
   for (lastreg = 255, i = 0, j = 0; j < n_gregs; i++)
@@ -2425,7 +2413,7 @@ _bfd_mmix_after_linker_allocation (bfd *
 	j++;
       }
 
-  return TRUE;
+  return true;
 }
 
 /* Sort valid relocs to come before non-valid relocs, then on increasing
@@ -2521,11 +2509,11 @@ mmix_dump_bpo_gregs (struct bfd_link_inf
 
    Symbol- and reloc-reading infrastructure copied from elf-m10200.c.  */
 
-static bfd_boolean
+static bool
 mmix_elf_relax_section (bfd *abfd,
 			asection *sec,
 			struct bfd_link_info *link_info,
-			bfd_boolean *again)
+			bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -2538,13 +2526,14 @@ 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;
 
   mmix_elf_section_data (sec)->pjs.stubs_size_sum = 0;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything if this section does not have relocs, or
      if this is not a code section.  */
@@ -2556,7 +2545,7 @@ mmix_elf_relax_section (bfd *abfd,
 	 then nothing to do.  */
       || (bpodata == NULL
 	  && mmix_elf_section_data (sec)->pjs.n_pushj_relocs == 0))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -2703,6 +2692,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;
 	    }
 	}
@@ -2765,7 +2759,7 @@ mmix_elf_relax_section (bfd *abfd,
 
       gregdata->reloc_request[gregdata->bpo_reloc_indexes[bpono]].value
 	= symval + irel->r_addend;
-      gregdata->reloc_request[gregdata->bpo_reloc_indexes[bpono++]].valid = TRUE;
+      gregdata->reloc_request[gregdata->bpo_reloc_indexes[bpono++]].valid = true;
       gregdata->n_remaining_bpo_relocs_this_relaxation_round--;
     }
 
@@ -2799,7 +2793,7 @@ mmix_elf_relax_section (bfd *abfd,
 	  {
 	    gregdata->bpo_reloc_indexes[gregdata->reloc_request[i].bpo_reloc_no]
 	      = i;
-	    *again = TRUE;
+	    *again = true;
 	  }
 
       /* Allocate register numbers (indexing from 0).  Stop at the first
@@ -2825,7 +2819,7 @@ mmix_elf_relax_section (bfd *abfd,
       if (gregdata->n_allocated_bpo_gregs != regindex + 1)
 	{
 	  gregdata->n_allocated_bpo_gregs = regindex + 1;
-	  *again = TRUE;
+	  *again = true;
 	}
 
       bpo_gregs_section->size = (regindex + 1) * 8;
@@ -2842,10 +2836,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)
@@ -2854,22 +2848,22 @@ mmix_elf_relax_section (bfd *abfd,
   if (sec->size > size + mmix_elf_section_data (sec)->pjs.stubs_size_sum)
     {
       sec->size = size + mmix_elf_section_data (sec)->pjs.stubs_size_sum;
-      *again = TRUE;
+      *again = true;
     }
 
-  return TRUE;
+  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;
+  return false;
 }
 
 #define ELF_ARCH		bfd_arch_mmix
 #define ELF_MACHINE_CODE	EM_MMIX
+#define ELF_TARGET_ID		MMIX_ELF_DATA
 
 /* According to mmix-doc page 36 (paragraph 45), this should be (1LL << 48LL).
    However, that's too much for something somewhere in the linker part 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.20200303/bfd/elf64-nfp.c ./bfd/elf64-nfp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-nfp.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-nfp.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* NFP-specific support for 64-bit ELF
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
    Contributed by Francois H. Theron <francois.theron@netronome.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -40,128 +40,41 @@ elf64_nfp_reloc (bfd * abfd ATTRIBUTE_UN
    names.
    Most of these are mainly used by the NFP toolchain to resolve things
    before the final ELF file is created.  */
+#define NFP_HOWTO(type) \
+  HOWTO (type, 0, 0, 0, false, 0, complain_overflow_dont, elf64_nfp_reloc, \
+	 #type, false, 0, 0, false)
 static reloc_howto_type elf_nfp_howto_table[] =
 {
-  HOWTO (R_NFP_NOTYPE,		/* Type.  */
-	 0,			/* Rightshift.  */
-	 3,			/* Size.  */
-	 0,			/* Bitsize.  */
-	 FALSE,			/* PC_relative.  */
-	 0,			/* Bitpos.  */
-	 complain_overflow_dont,/* Complain_on_overflow.  */
-	 elf64_nfp_reloc,	/* Special_function.  */
-	 "R_NFP_NOTYPE",	/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
-	 0,			/* Src_mask.  */
-	 0,			/* Dst_mask.  */
-	 FALSE),		/* PCrel_offset.  */
-  HOWTO (R_NFP_W32LE, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W32LE",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_SRC8_A, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_SRC8_A",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_SRC8_B, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_SRC8_B",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_IMMED8_I, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_IMMED8_I",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_SC, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_SC",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_IMMED_LO16_I_A, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_IMMED_LO16_I_A",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_IMMED_LO16_I_B, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_IMMED_LO16_I_B",
-	 TRUE, 0, 0, FALSE),
-  HOWTO (R_NFP_SRC7_B, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_SRC7_B",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_SRC7_A, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_SRC7_A",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_SRC8_I_B, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_SRC8_I_B",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_SRC8_I_A, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_SRC8_I_A",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_IMMED_HI16_I_A, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_IMMED_HI16_I_A",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_IMMED_HI16_I_B, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_IMMED_HI16_I_B",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W64LE, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W64LE",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_SH_INFO, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_SH_INFO",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W32BE, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W32BE",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W64BE, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W64BE",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W32_29_24, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W32_29_24",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W32LE_AND, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W32LE_AND",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W32BE_AND, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W32BE_AND",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W32LE_OR, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W32LE_OR",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W32BE_OR, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W32BE_OR",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W64LE_AND, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W64LE_AND",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W64BE_AND, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W64BE_AND",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W64LE_OR, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W64LE_OR",
-	 FALSE, 0, 0, FALSE),
-  HOWTO (R_NFP_W64BE_OR, 0, 3, 0, FALSE, 0,
-	 complain_overflow_dont, elf64_nfp_reloc,
-	 "R_NFP_W64BE_OR",
-	 FALSE, 0, 0, FALSE)
+  NFP_HOWTO (R_NFP_NOTYPE),
+  NFP_HOWTO (R_NFP_W32LE),
+  NFP_HOWTO (R_NFP_SRC8_A),
+  NFP_HOWTO (R_NFP_SRC8_B),
+  NFP_HOWTO (R_NFP_IMMED8_I),
+  NFP_HOWTO (R_NFP_SC),
+  NFP_HOWTO (R_NFP_IMMED_LO16_I_A),
+  NFP_HOWTO (R_NFP_IMMED_LO16_I_B),
+  NFP_HOWTO (R_NFP_SRC7_B),
+  NFP_HOWTO (R_NFP_SRC7_A),
+  NFP_HOWTO (R_NFP_SRC8_I_B),
+  NFP_HOWTO (R_NFP_SRC8_I_A),
+  NFP_HOWTO (R_NFP_IMMED_HI16_I_A),
+  NFP_HOWTO (R_NFP_IMMED_HI16_I_B),
+  NFP_HOWTO (R_NFP_W64LE),
+  NFP_HOWTO (R_NFP_SH_INFO),
+  NFP_HOWTO (R_NFP_W32BE),
+  NFP_HOWTO (R_NFP_W64BE),
+  NFP_HOWTO (R_NFP_W32_29_24),
+  NFP_HOWTO (R_NFP_W32LE_AND),
+  NFP_HOWTO (R_NFP_W32BE_AND),
+  NFP_HOWTO (R_NFP_W32LE_OR),
+  NFP_HOWTO (R_NFP_W32BE_OR),
+  NFP_HOWTO (R_NFP_W64LE_AND),
+  NFP_HOWTO (R_NFP_W64BE_AND),
+  NFP_HOWTO (R_NFP_W64LE_OR),
+  NFP_HOWTO (R_NFP_W64BE_OR)
 };
 
-static bfd_boolean
+static bool
 elf64_nfp_object_p (bfd * abfd)
 {
   /* If the e_machine value is one of the unofficial ones, we convert
@@ -188,16 +101,16 @@ elf64_nfp_object_p (bfd * abfd)
 	case E_NFP_MACH_3200:
 	case E_NFP_MACH_6000:
 	  if (!bfd_default_set_arch_mach (abfd, bfd_arch_nfp, e_mach))
-	    return FALSE;
+	    return false;
 	default:
 	  break;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf64_nfp_section_from_shdr (bfd * abfd,
 			     Elf_Internal_Shdr * hdr,
 			     const char *name, int shindex)
@@ -209,7 +122,7 @@ elf64_nfp_section_from_shdr (bfd * abfd,
     case SHT_NFP_UDEBUG:
       return _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
     default:
-      return FALSE;
+      return false;
     }
 }
 
@@ -225,7 +138,7 @@ elf64_nfp_reloc (bfd * abfd ATTRIBUTE_UN
   return bfd_reloc_ok;
 }
 
-static bfd_boolean
+static bool
 elf64_nfp_info_to_howto (bfd * abfd ATTRIBUTE_UNUSED,
 			 arelent * cache_ptr, Elf_Internal_Rela * dst)
 {
@@ -238,10 +151,10 @@ elf64_nfp_info_to_howto (bfd * abfd ATTR
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = &elf_nfp_howto_table[r_type];
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_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.20200303/bfd/elf64-ppc.c ./bfd/elf64-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-ppc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-ppc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC64-specific support for 64-bit ELF.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 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.
@@ -25,6 +25,11 @@
    http://www.linuxbase.org/spec/ELF/ppc64/PPC-elf64abi.txt, and
    http://www.linuxbase.org/spec/ELF/ppc64/spec/book1.html  */
 
+/* The assembler should generate a full set of section symbols even
+   when they appear unused.  The linux kernel build tool recordmcount
+   needs them.  */
+#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS true
+
 #include "sysdep.h"
 #include <stdarg.h>
 #include "bfd.h"
@@ -59,7 +64,7 @@ static bfd_reloc_status_type ppc64_elf_p
 static bfd_reloc_status_type ppc64_elf_unhandled_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_vma opd_entry_value
-  (asection *, bfd_vma, asection **, bfd_vma *, bfd_boolean);
+  (asection *, bfd_vma, asection **, bfd_vma *, bool);
 
 #define TARGET_LITTLE_SYM	powerpc_elf64_le_vec
 #define TARGET_LITTLE_NAME	"elf64-powerpcle"
@@ -70,7 +75,6 @@ static bfd_vma opd_entry_value
 #define ELF_MACHINE_CODE	EM_PPC64
 #define ELF_MAXPAGESIZE		0x10000
 #define ELF_COMMONPAGESIZE	0x1000
-#define ELF_RELROPAGESIZE	ELF_MAXPAGESIZE
 #define elf_info_to_howto	ppc64_elf_info_to_howto
 
 #define elf_backend_want_got_sym 0
@@ -86,6 +90,7 @@ static bfd_vma opd_entry_value
 #define elf_backend_default_execstack 0
 
 #define bfd_elf64_mkobject		      ppc64_elf_mkobject
+#define bfd_elf64_bfd_free_cached_info	      ppc64_elf_free_cached_info
 #define bfd_elf64_bfd_reloc_type_lookup	      ppc64_elf_reloc_type_lookup
 #define bfd_elf64_bfd_reloc_name_lookup	      ppc64_elf_reloc_name_lookup
 #define bfd_elf64_bfd_merge_private_bfd_data  ppc64_elf_merge_private_bfd_data
@@ -114,8 +119,8 @@ static bfd_vma opd_entry_value
 #define elf_backend_adjust_dynamic_symbol     ppc64_elf_adjust_dynamic_symbol
 #define elf_backend_hide_symbol		      ppc64_elf_hide_symbol
 #define elf_backend_maybe_function_sym	      ppc64_elf_maybe_function_sym
-#define elf_backend_always_size_sections      ppc64_elf_func_desc_adjust
-#define elf_backend_size_dynamic_sections     ppc64_elf_size_dynamic_sections
+#define elf_backend_early_size_sections	      ppc64_elf_edit
+#define elf_backend_late_size_sections	      ppc64_elf_late_size_sections
 #define elf_backend_hash_symbol		      ppc64_elf_hash_symbol
 #define elf_backend_init_index_section	      _bfd_elf_init_2_index_sections
 #define elf_backend_action_discarded	      ppc64_elf_action_discarded
@@ -125,6 +130,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
@@ -210,9 +216,10 @@ static bfd_vma opd_entry_value
 #define PLD_R12_PC	0x04100000e5800000ULL
 #define PNOP		0x0700000000000000ULL
 
-/* __glink_PLTresolve stub instructions.  We enter with the index in R0.  */
+/* __glink_PLTresolve stub instructions.  We enter with the index in
+   R0 for ELFv1, and the address of a glink branch in R12 for ELFv2.  */
 #define GLINK_PLTRESOLVE_SIZE(htab)			\
-  (8u + (htab->opd_abi ? 11 * 4 : 14 * 4))
+  (8u + (htab->opd_abi ? 11 * 4 : htab->has_plt_localentry0 ? 14 * 4 : 13 * 4))
 					/* 0:				*/
 					/*  .quad plt0-1f		*/
 					/* __glink:			*/
@@ -228,11 +235,14 @@ static bfd_vma opd_entry_value
 					/*  mtctr %12			*/
 					/*  ld %11,16(%11)		*/
 					/*  bctr			*/
-#define MFLR_R0		0x7c0802a6	/*  mflr %r0			*/
-#define MTLR_R0		0x7c0803a6	/*  mtlr %r0			*/
-#define SUB_R12_R12_R11	0x7d8b6050	/*  subf %r12,%r11,%r12		*/
-#define ADDI_R0_R12	0x380c0000	/*  addi %r0,%r12,0		*/
-#define SRDI_R0_R0_2	0x7800f082	/*  rldicl %r0,%r0,62,2		*/
+
+#define MFLR_R0		0x7c0802a6	/* mflr %r0			*/
+#define MTLR_R0		0x7c0803a6	/* mtlr %r0			*/
+#define SUB_R12_R12_R11	0x7d8b6050	/* subf %r12,%r11,%r12		*/
+#define ADDI_R0_R12	0x380c0000	/* addi %r0,%r12,0		*/
+#define SRDI_R0_R0_2	0x7800f082	/* rldicl %r0,%r0,62,2		*/
+#define LD_R0_0R11	0xe80b0000	/* ld %r0,0(%r11)		*/
+#define ADD_R11_R0_R11	0x7d605a14	/* add %r11,%r0,%r11		*/
 
 /* Pad with this.  */
 #define NOP		0x60000000
@@ -287,6 +297,10 @@ set_abiversion (bfd *abfd, int ver)
   elf_elfheader (abfd)->e_flags &= ~EF_PPC64_ABI;
   elf_elfheader (abfd)->e_flags |= ver & EF_PPC64_ABI;
 }
+
+#define is_ppc64_elf(bfd) \
+  (bfd_get_flavour (bfd) == bfd_target_elf_flavour \
+   && elf_object_id (bfd) == PPC64_ELF_DATA)
 
 /* Relocation HOWTO's.  */
 /* Like other ELF RELA targets that don't apply multiple
@@ -300,101 +314,105 @@ set_abiversion (bfd *abfd, int ver)
 	    complain, special_func)				\
   HOWTO (type, rightshift, size, bitsize, pc_relative, 0,	\
 	 complain_overflow_ ## complain, special_func,		\
-	 #type, FALSE, 0, mask, pc_relative)
+	 #type, false, 0, mask, pc_relative)
 
 static reloc_howto_type *ppc64_elf_howto_table[(int) R_PPC64_max];
 
 static reloc_howto_type ppc64_elf_howto_raw[] =
 {
   /* This reloc does nothing.  */
-  HOW (R_PPC64_NONE, 3, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC64_NONE, 0, 0, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* A standard 32 bit relocation.  */
-  HOW (R_PPC64_ADDR32, 2, 32, 0xffffffff, 0, FALSE, bitfield,
+  HOW (R_PPC64_ADDR32, 4, 32, 0xffffffff, 0, false, bitfield,
        bfd_elf_generic_reloc),
 
   /* An absolute 26 bit branch; the lower two bits must be zero.
      FIXME: we don't check that, we just clear them.  */
-  HOW (R_PPC64_ADDR24, 2, 26, 0x03fffffc, 0, FALSE, bitfield,
+  HOW (R_PPC64_ADDR24, 4, 26, 0x03fffffc, 0, false, bitfield,
        bfd_elf_generic_reloc),
 
   /* A standard 16 bit relocation.  */
-  HOW (R_PPC64_ADDR16, 1, 16, 0xffff, 0, FALSE, bitfield,
+  HOW (R_PPC64_ADDR16, 2, 16, 0xffff, 0, false, bitfield,
        bfd_elf_generic_reloc),
 
   /* A 16 bit relocation without overflow.  */
-  HOW (R_PPC64_ADDR16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_ADDR16_LO, 2, 16, 0xffff, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Bits 16-31 of an address.  */
-  HOW (R_PPC64_ADDR16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_ADDR16_HI, 2, 16, 0xffff, 16, false, signed,
        bfd_elf_generic_reloc),
 
   /* Bits 16-31 of an address, plus 1 if the contents of the low 16
      bits, treated as a signed number, is negative.  */
-  HOW (R_PPC64_ADDR16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_ADDR16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_ha_reloc),
 
   /* An absolute 16 bit branch; the lower two bits must be zero.
      FIXME: we don't check that, we just clear them.  */
-  HOW (R_PPC64_ADDR14, 2, 16, 0x0000fffc, 0, FALSE, signed,
+  HOW (R_PPC64_ADDR14, 4, 16, 0x0000fffc, 0, false, signed,
        ppc64_elf_branch_reloc),
 
   /* An absolute 16 bit branch, for which bit 10 should be set to
      indicate that the branch is expected to be taken.  The lower two
      bits must be zero.  */
-  HOW (R_PPC64_ADDR14_BRTAKEN, 2, 16, 0x0000fffc, 0, FALSE, signed,
+  HOW (R_PPC64_ADDR14_BRTAKEN, 4, 16, 0x0000fffc, 0, false, signed,
        ppc64_elf_brtaken_reloc),
 
   /* An absolute 16 bit branch, for which bit 10 should be set to
      indicate that the branch is not expected to be taken.  The lower
      two bits must be zero.  */
-  HOW (R_PPC64_ADDR14_BRNTAKEN, 2, 16, 0x0000fffc, 0, FALSE, signed,
+  HOW (R_PPC64_ADDR14_BRNTAKEN, 4, 16, 0x0000fffc, 0, false, signed,
        ppc64_elf_brtaken_reloc),
 
   /* A relative 26 bit branch; the lower two bits must be zero.  */
-  HOW (R_PPC64_REL24, 2, 26, 0x03fffffc, 0, TRUE, signed,
+  HOW (R_PPC64_REL24, 4, 26, 0x03fffffc, 0, true, signed,
        ppc64_elf_branch_reloc),
 
   /* A variant of R_PPC64_REL24, used when r2 is not the toc pointer.  */
-  HOW (R_PPC64_REL24_NOTOC, 2, 26, 0x03fffffc, 0, TRUE, signed,
+  HOW (R_PPC64_REL24_NOTOC, 4, 26, 0x03fffffc, 0, true, signed,
+       ppc64_elf_branch_reloc),
+
+  /* Another variant, when p10 insns can't be used on stubs.  */
+  HOW (R_PPC64_REL24_P9NOTOC, 4, 26, 0x03fffffc, 0, true, signed,
        ppc64_elf_branch_reloc),
 
   /* A relative 16 bit branch; the lower two bits must be zero.  */
-  HOW (R_PPC64_REL14, 2, 16, 0x0000fffc, 0, TRUE, signed,
+  HOW (R_PPC64_REL14, 4, 16, 0x0000fffc, 0, true, signed,
        ppc64_elf_branch_reloc),
 
   /* A relative 16 bit branch.  Bit 10 should be set to indicate that
      the branch is expected to be taken.  The lower two bits must be
      zero.  */
-  HOW (R_PPC64_REL14_BRTAKEN, 2, 16, 0x0000fffc, 0, TRUE, signed,
+  HOW (R_PPC64_REL14_BRTAKEN, 4, 16, 0x0000fffc, 0, true, signed,
        ppc64_elf_brtaken_reloc),
 
   /* A relative 16 bit branch.  Bit 10 should be set to indicate that
      the branch is not expected to be taken.  The lower two bits must
      be zero.  */
-  HOW (R_PPC64_REL14_BRNTAKEN, 2, 16, 0x0000fffc, 0, TRUE, signed,
+  HOW (R_PPC64_REL14_BRNTAKEN, 4, 16, 0x0000fffc, 0, true, signed,
        ppc64_elf_brtaken_reloc),
 
   /* Like R_PPC64_ADDR16, but referring to the GOT table entry for the
      symbol.  */
-  HOW (R_PPC64_GOT16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC64_GOT16, 2, 16, 0xffff, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_ADDR16_LO, but referring to the GOT table entry for
      the symbol.  */
-  HOW (R_PPC64_GOT16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_GOT16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_ADDR16_HI, but referring to the GOT table entry for
      the symbol.  */
-  HOW (R_PPC64_GOT16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_ADDR16_HA, but referring to the GOT table entry for
      the symbol.  */
-  HOW (R_PPC64_GOT16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* This is used only by the dynamic linker.  The symbol should exist
@@ -402,148 +420,148 @@ static reloc_howto_type ppc64_elf_howto_
      dynamic linker copies the data addressed by the symbol from the
      shared library into the object, because the object being
      run has to have the data at some particular address.  */
-  HOW (R_PPC64_COPY, 0, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC64_COPY, 0, 0, 0, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_ADDR64, but used when setting global offset table
      entries.  */
-  HOW (R_PPC64_GLOB_DAT, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_GLOB_DAT, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Created by the link editor.  Marks a procedure linkage table
      entry for a symbol.  */
-  HOW (R_PPC64_JMP_SLOT, 0, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC64_JMP_SLOT, 0, 0, 0, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Used only by the dynamic linker.  When the object is run, this
      doubleword64 is set to the load address of the object, plus the
      addend.  */
-  HOW (R_PPC64_RELATIVE, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_RELATIVE, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC64_ADDR32, but may be unaligned.  */
-  HOW (R_PPC64_UADDR32, 2, 32, 0xffffffff, 0, FALSE, bitfield,
+  HOW (R_PPC64_UADDR32, 4, 32, 0xffffffff, 0, false, bitfield,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC64_ADDR16, but may be unaligned.  */
-  HOW (R_PPC64_UADDR16, 1, 16, 0xffff, 0, FALSE, bitfield,
+  HOW (R_PPC64_UADDR16, 2, 16, 0xffff, 0, false, bitfield,
        bfd_elf_generic_reloc),
 
   /* 32-bit PC relative.  */
-  HOW (R_PPC64_REL32, 2, 32, 0xffffffff, 0, TRUE, signed,
+  HOW (R_PPC64_REL32, 4, 32, 0xffffffff, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* 32-bit relocation to the symbol's procedure linkage table.  */
-  HOW (R_PPC64_PLT32, 2, 32, 0xffffffff, 0, FALSE, bitfield,
+  HOW (R_PPC64_PLT32, 4, 32, 0xffffffff, 0, false, bitfield,
        ppc64_elf_unhandled_reloc),
 
   /* 32-bit PC relative relocation to the symbol's procedure linkage table.
      FIXME: R_PPC64_PLTREL32 not supported.  */
-  HOW (R_PPC64_PLTREL32, 2, 32, 0xffffffff, 0, TRUE, signed,
+  HOW (R_PPC64_PLTREL32, 4, 32, 0xffffffff, 0, true, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_ADDR16_LO, but referring to the PLT table entry for
      the symbol.  */
-  HOW (R_PPC64_PLT16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_PLT16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_ADDR16_HI, but referring to the PLT table entry for
      the symbol.  */
-  HOW (R_PPC64_PLT16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_PLT16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_ADDR16_HA, but referring to the PLT table entry for
      the symbol.  */
-  HOW (R_PPC64_PLT16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_PLT16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* 16-bit section relative relocation.  */
-  HOW (R_PPC64_SECTOFF, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC64_SECTOFF, 2, 16, 0xffff, 0, false, signed,
        ppc64_elf_sectoff_reloc),
 
   /* Like R_PPC64_SECTOFF, but no overflow warning.  */
-  HOW (R_PPC64_SECTOFF_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_SECTOFF_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_sectoff_reloc),
 
   /* 16-bit upper half section relative relocation.  */
-  HOW (R_PPC64_SECTOFF_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_SECTOFF_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_sectoff_reloc),
 
   /* 16-bit upper half adjusted section relative relocation.  */
-  HOW (R_PPC64_SECTOFF_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_SECTOFF_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_sectoff_ha_reloc),
 
   /* Like R_PPC64_REL24 without touching the two least significant bits.  */
-  HOW (R_PPC64_REL30, 2, 30, 0xfffffffc, 2, TRUE, dont,
+  HOW (R_PPC64_REL30, 4, 30, 0xfffffffc, 2, true, dont,
        bfd_elf_generic_reloc),
 
   /* Relocs in the 64-bit PowerPC ELF ABI, not in the 32-bit ABI.  */
 
   /* A standard 64-bit relocation.  */
-  HOW (R_PPC64_ADDR64, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_ADDR64, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* The bits 32-47 of an address.  */
-  HOW (R_PPC64_ADDR16_HIGHER, 1, 16, 0xffff, 32, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHER, 2, 16, 0xffff, 32, false, dont,
        bfd_elf_generic_reloc),
 
   /* The bits 32-47 of an address, plus 1 if the contents of the low
      16 bits, treated as a signed number, is negative.  */
-  HOW (R_PPC64_ADDR16_HIGHERA, 1, 16, 0xffff, 32, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHERA, 2, 16, 0xffff, 32, false, dont,
        ppc64_elf_ha_reloc),
 
   /* The bits 48-63 of an address.  */
-  HOW (R_PPC64_ADDR16_HIGHEST, 1, 16, 0xffff, 48, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHEST, 2, 16, 0xffff, 48, false, dont,
        bfd_elf_generic_reloc),
 
   /* The bits 48-63 of an address, plus 1 if the contents of the low
      16 bits, treated as a signed number, is negative.  */
-  HOW (R_PPC64_ADDR16_HIGHESTA, 1, 16, 0xffff, 48, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHESTA, 2, 16, 0xffff, 48, false, dont,
        ppc64_elf_ha_reloc),
 
   /* Like ADDR64, but may be unaligned.  */
-  HOW (R_PPC64_UADDR64, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_UADDR64, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* 64-bit relative relocation.  */
-  HOW (R_PPC64_REL64, 4, 64, 0xffffffffffffffffULL, 0, TRUE, dont,
+  HOW (R_PPC64_REL64, 8, 64, 0xffffffffffffffffULL, 0, true, dont,
        bfd_elf_generic_reloc),
 
   /* 64-bit relocation to the symbol's procedure linkage table.  */
-  HOW (R_PPC64_PLT64, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_PLT64, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* 64-bit PC relative relocation to the symbol's procedure linkage
      table.  */
   /* FIXME: R_PPC64_PLTREL64 not supported.  */
-  HOW (R_PPC64_PLTREL64, 4, 64, 0xffffffffffffffffULL, 0, TRUE, dont,
+  HOW (R_PPC64_PLTREL64, 8, 64, 0xffffffffffffffffULL, 0, true, dont,
        ppc64_elf_unhandled_reloc),
 
   /* 16 bit TOC-relative relocation.  */
   /* R_PPC64_TOC16	  47	   half16*	S + A - .TOC.  */
-  HOW (R_PPC64_TOC16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC64_TOC16, 2, 16, 0xffff, 0, false, signed,
        ppc64_elf_toc_reloc),
 
   /* 16 bit TOC-relative relocation without overflow.  */
   /* R_PPC64_TOC16_LO	  48	   half16	 #lo (S + A - .TOC.)  */
-  HOW (R_PPC64_TOC16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_TOC16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_toc_reloc),
 
   /* 16 bit TOC-relative relocation, high 16 bits.  */
   /* R_PPC64_TOC16_HI	  49	   half16	 #hi (S + A - .TOC.)  */
-  HOW (R_PPC64_TOC16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_TOC16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_toc_reloc),
 
   /* 16 bit TOC-relative relocation, high 16 bits, plus 1 if the
      contents of the low 16 bits, treated as a signed number, is
      negative.  */
   /* R_PPC64_TOC16_HA	  50	   half16	 #ha (S + A - .TOC.)  */
-  HOW (R_PPC64_TOC16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_TOC16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_toc_ha_reloc),
 
   /* 64-bit relocation; insert value of TOC base (.TOC.).  */
   /* R_PPC64_TOC		  51	   doubleword64	 .TOC.  */
-  HOW (R_PPC64_TOC, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_TOC, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        ppc64_elf_toc64_reloc),
 
   /* Like R_PPC64_GOT16, but also informs the link editor that the
@@ -555,428 +573,428 @@ static reloc_howto_type ppc64_elf_howto_
      The link editor may also skip all of this and just (c) emit a
      R_PPC64_GLOB_DAT to tie the symbol to the GOT entry.  */
   /* FIXME: R_PPC64_PLTGOT16 not implemented.  */
-    HOW (R_PPC64_PLTGOT16, 1, 16, 0xffff, 0, FALSE,signed,
+    HOW (R_PPC64_PLTGOT16, 2, 16, 0xffff, 0, false,signed,
 	  ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_PLTGOT16, but without overflow.  */
   /* FIXME: R_PPC64_PLTGOT16_LO not implemented.  */
-  HOW (R_PPC64_PLTGOT16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_PLTGOT16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_PLT_GOT16, but using bits 16-31 of the address.  */
   /* FIXME: R_PPC64_PLTGOT16_HI not implemented.  */
-  HOW (R_PPC64_PLTGOT16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_PLTGOT16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_PLT_GOT16, but using bits 16-31 of the address, plus
      1 if the contents of the low 16 bits, treated as a signed number,
      is negative.  */
   /* FIXME: R_PPC64_PLTGOT16_HA not implemented.  */
-  HOW (R_PPC64_PLTGOT16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_PLTGOT16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_ADDR16, but for instructions with a DS field.  */
-  HOW (R_PPC64_ADDR16_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_ADDR16_DS, 2, 16, 0xfffc, 0, false, signed,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC64_ADDR16_LO, but for instructions with a DS field.  */
-  HOW (R_PPC64_ADDR16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_ADDR16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC64_GOT16, but for instructions with a DS field.  */
-  HOW (R_PPC64_GOT16_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_GOT16_DS, 2, 16, 0xfffc, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_GOT16_LO, but for instructions with a DS field.  */
-  HOW (R_PPC64_GOT16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_GOT16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_PLT16_LO, but for instructions with a DS field.  */
-  HOW (R_PPC64_PLT16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_PLT16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_SECTOFF, but for instructions with a DS field.  */
-  HOW (R_PPC64_SECTOFF_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_SECTOFF_DS, 2, 16, 0xfffc, 0, false, signed,
        ppc64_elf_sectoff_reloc),
 
   /* Like R_PPC64_SECTOFF_LO, but for instructions with a DS field.  */
-  HOW (R_PPC64_SECTOFF_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_SECTOFF_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_sectoff_reloc),
 
   /* Like R_PPC64_TOC16, but for instructions with a DS field.  */
-  HOW (R_PPC64_TOC16_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_TOC16_DS, 2, 16, 0xfffc, 0, false, signed,
        ppc64_elf_toc_reloc),
 
   /* Like R_PPC64_TOC16_LO, but for instructions with a DS field.  */
-  HOW (R_PPC64_TOC16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_TOC16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_toc_reloc),
 
   /* Like R_PPC64_PLTGOT16, but for instructions with a DS field.  */
   /* FIXME: R_PPC64_PLTGOT16_DS not implemented.  */
-  HOW (R_PPC64_PLTGOT16_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_PLTGOT16_DS, 2, 16, 0xfffc, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_PLTGOT16_LO, but for instructions with a DS field.  */
   /* FIXME: R_PPC64_PLTGOT16_LO not implemented.  */
-  HOW (R_PPC64_PLTGOT16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_PLTGOT16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Marker relocs for TLS.  */
-  HOW (R_PPC64_TLS, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_TLS, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_TLSGD, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_TLSGD, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_TLSLD, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_TLSLD, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Marker reloc for optimizing r2 save in prologue rather than on
      each plt call stub.  */
-  HOW (R_PPC64_TOCSAVE, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_TOCSAVE, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Marker relocs on inline plt call instructions.  */
-  HOW (R_PPC64_PLTSEQ, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_PLTSEQ, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_PLTCALL, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_PLTCALL, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Computes the load module index of the load module that contains the
      definition of its TLS sym.  */
-  HOW (R_PPC64_DTPMOD64, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_DTPMOD64, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Computes a dtv-relative displacement, the difference between the value
      of sym+add and the base address of the thread-local storage block that
      contains the definition of sym, minus 0x8000.  */
-  HOW (R_PPC64_DTPREL64, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_DTPREL64, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* A 16 bit dtprel reloc.  */
-  HOW (R_PPC64_DTPREL16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC64_DTPREL16, 2, 16, 0xffff, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16, but no overflow.  */
-  HOW (R_PPC64_DTPREL16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_DTPREL16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC64_DTPREL16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_DTPREL16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC64_DTPREL16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_DTPREL16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16_HI, but next higher group of 16 bits.  */
-  HOW (R_PPC64_DTPREL16_HIGHER, 1, 16, 0xffff, 32, FALSE, dont,
+  HOW (R_PPC64_DTPREL16_HIGHER, 2, 16, 0xffff, 32, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16_HIGHER, but adjust for low 16 bits.  */
-  HOW (R_PPC64_DTPREL16_HIGHERA, 1, 16, 0xffff, 32, FALSE, dont,
+  HOW (R_PPC64_DTPREL16_HIGHERA, 2, 16, 0xffff, 32, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16_HIGHER, but next higher group of 16 bits.  */
-  HOW (R_PPC64_DTPREL16_HIGHEST, 1, 16, 0xffff, 48, FALSE, dont,
+  HOW (R_PPC64_DTPREL16_HIGHEST, 2, 16, 0xffff, 48, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16_HIGHEST, but adjust for low 16 bits.  */
-  HOW (R_PPC64_DTPREL16_HIGHESTA, 1, 16, 0xffff, 48, FALSE, dont,
+  HOW (R_PPC64_DTPREL16_HIGHESTA, 2, 16, 0xffff, 48, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16, but for insns with a DS field.  */
-  HOW (R_PPC64_DTPREL16_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_DTPREL16_DS, 2, 16, 0xfffc, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like DTPREL16_DS, but no overflow.  */
-  HOW (R_PPC64_DTPREL16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_DTPREL16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Computes a tp-relative displacement, the difference between the value of
      sym+add and the value of the thread pointer (r13).  */
-  HOW (R_PPC64_TPREL64, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_TPREL64, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* A 16 bit tprel reloc.  */
-  HOW (R_PPC64_TPREL16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC64_TPREL16, 2, 16, 0xffff, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16, but no overflow.  */
-  HOW (R_PPC64_TPREL16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_TPREL16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC64_TPREL16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_TPREL16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC64_TPREL16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_TPREL16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16_HI, but next higher group of 16 bits.  */
-  HOW (R_PPC64_TPREL16_HIGHER, 1, 16, 0xffff, 32, FALSE, dont,
+  HOW (R_PPC64_TPREL16_HIGHER, 2, 16, 0xffff, 32, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16_HIGHER, but adjust for low 16 bits.  */
-  HOW (R_PPC64_TPREL16_HIGHERA, 1, 16, 0xffff, 32, FALSE, dont,
+  HOW (R_PPC64_TPREL16_HIGHERA, 2, 16, 0xffff, 32, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16_HIGHER, but next higher group of 16 bits.  */
-  HOW (R_PPC64_TPREL16_HIGHEST, 1, 16, 0xffff, 48, FALSE, dont,
+  HOW (R_PPC64_TPREL16_HIGHEST, 2, 16, 0xffff, 48, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16_HIGHEST, but adjust for low 16 bits.  */
-  HOW (R_PPC64_TPREL16_HIGHESTA, 1, 16, 0xffff, 48, FALSE, dont,
+  HOW (R_PPC64_TPREL16_HIGHESTA, 2, 16, 0xffff, 48, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16, but for insns with a DS field.  */
-  HOW (R_PPC64_TPREL16_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_TPREL16_DS, 2, 16, 0xfffc, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like TPREL16_DS, but no overflow.  */
-  HOW (R_PPC64_TPREL16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_TPREL16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Allocates two contiguous entries in the GOT to hold a tls_index structure,
      with values (sym+add)@dtpmod and (sym+add)@dtprel, and computes the offset
      to the first entry relative to the TOC base (r2).  */
-  HOW (R_PPC64_GOT_TLSGD16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC64_GOT_TLSGD16, 2, 16, 0xffff, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TLSGD16, but no overflow.  */
-  HOW (R_PPC64_GOT_TLSGD16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_GOT_TLSGD16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TLSGD16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC64_GOT_TLSGD16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT_TLSGD16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TLSGD16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC64_GOT_TLSGD16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT_TLSGD16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Allocates two contiguous entries in the GOT to hold a tls_index structure,
      with values (sym+add)@dtpmod and zero, and computes the offset to the
      first entry relative to the TOC base (r2).  */
-  HOW (R_PPC64_GOT_TLSLD16, 1, 16, 0xffff, 0, FALSE, signed,
+  HOW (R_PPC64_GOT_TLSLD16, 2, 16, 0xffff, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TLSLD16, but no overflow.  */
-  HOW (R_PPC64_GOT_TLSLD16_LO, 1, 16, 0xffff, 0, FALSE, dont,
+  HOW (R_PPC64_GOT_TLSLD16_LO, 2, 16, 0xffff, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TLSLD16_LO, but next higher group of 16 bits.  */
-  HOW (R_PPC64_GOT_TLSLD16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT_TLSLD16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TLSLD16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC64_GOT_TLSLD16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT_TLSLD16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Allocates an entry in the GOT with value (sym+add)@dtprel, and computes
      the offset to the entry relative to the TOC base (r2).  */
-  HOW (R_PPC64_GOT_DTPREL16_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_GOT_DTPREL16_DS, 2, 16, 0xfffc, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_DTPREL16_DS, but no overflow.  */
-  HOW (R_PPC64_GOT_DTPREL16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_GOT_DTPREL16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_DTPREL16_LO_DS, but next higher group of 16 bits.  */
-  HOW (R_PPC64_GOT_DTPREL16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT_DTPREL16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_DTPREL16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC64_GOT_DTPREL16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT_DTPREL16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Allocates an entry in the GOT with value (sym+add)@tprel, and computes the
      offset to the entry relative to the TOC base (r2).  */
-  HOW (R_PPC64_GOT_TPREL16_DS, 1, 16, 0xfffc, 0, FALSE, signed,
+  HOW (R_PPC64_GOT_TPREL16_DS, 2, 16, 0xfffc, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TPREL16_DS, but no overflow.  */
-  HOW (R_PPC64_GOT_TPREL16_LO_DS, 1, 16, 0xfffc, 0, FALSE, dont,
+  HOW (R_PPC64_GOT_TPREL16_LO_DS, 2, 16, 0xfffc, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TPREL16_LO_DS, but next higher group of 16 bits.  */
-  HOW (R_PPC64_GOT_TPREL16_HI, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT_TPREL16_HI, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
   /* Like GOT_TPREL16_HI, but adjust for low 16 bits.  */
-  HOW (R_PPC64_GOT_TPREL16_HA, 1, 16, 0xffff, 16, FALSE, signed,
+  HOW (R_PPC64_GOT_TPREL16_HA, 2, 16, 0xffff, 16, false, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_JMP_IREL, 0, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC64_JMP_IREL, 0, 0, 0, 0, false, dont,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_IRELATIVE, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_IRELATIVE, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* A 16 bit relative relocation.  */
-  HOW (R_PPC64_REL16, 1, 16, 0xffff, 0, TRUE, signed,
+  HOW (R_PPC64_REL16, 2, 16, 0xffff, 0, true, signed,
        bfd_elf_generic_reloc),
 
   /* A 16 bit relative relocation without overflow.  */
-  HOW (R_PPC64_REL16_LO, 1, 16, 0xffff, 0, TRUE, dont,
+  HOW (R_PPC64_REL16_LO, 2, 16, 0xffff, 0, true, dont,
        bfd_elf_generic_reloc),
 
   /* The high order 16 bits of a relative address.  */
-  HOW (R_PPC64_REL16_HI, 1, 16, 0xffff, 16, TRUE, signed,
+  HOW (R_PPC64_REL16_HI, 2, 16, 0xffff, 16, true, signed,
        bfd_elf_generic_reloc),
 
   /* The high order 16 bits of a relative address, plus 1 if the contents of
      the low 16 bits, treated as a signed number, is negative.  */
-  HOW (R_PPC64_REL16_HA, 1, 16, 0xffff, 16, TRUE, signed,
+  HOW (R_PPC64_REL16_HA, 2, 16, 0xffff, 16, true, signed,
        ppc64_elf_ha_reloc),
 
-  HOW (R_PPC64_REL16_HIGH, 1, 16, 0xffff, 16, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGH, 2, 16, 0xffff, 16, true, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_REL16_HIGHA, 1, 16, 0xffff, 16, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHA, 2, 16, 0xffff, 16, true, dont,
        ppc64_elf_ha_reloc),
 
-  HOW (R_PPC64_REL16_HIGHER, 1, 16, 0xffff, 32, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHER, 2, 16, 0xffff, 32, true, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_REL16_HIGHERA, 1, 16, 0xffff, 32, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHERA, 2, 16, 0xffff, 32, true, dont,
        ppc64_elf_ha_reloc),
 
-  HOW (R_PPC64_REL16_HIGHEST, 1, 16, 0xffff, 48, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHEST, 2, 16, 0xffff, 48, true, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_REL16_HIGHESTA, 1, 16, 0xffff, 48, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHESTA, 2, 16, 0xffff, 48, true, dont,
        ppc64_elf_ha_reloc),
 
   /* Like R_PPC64_REL16_HA but for split field in addpcis.  */
-  HOW (R_PPC64_REL16DX_HA, 2, 16, 0x1fffc1, 16, TRUE, signed,
+  HOW (R_PPC64_REL16DX_HA, 4, 16, 0x1fffc1, 16, true, signed,
        ppc64_elf_ha_reloc),
 
   /* A split-field reloc for addpcis, non-relative (gas internal use only).  */
-  HOW (R_PPC64_16DX_HA, 2, 16, 0x1fffc1, 16, FALSE, signed,
+  HOW (R_PPC64_16DX_HA, 4, 16, 0x1fffc1, 16, false, signed,
        ppc64_elf_ha_reloc),
 
   /* Like R_PPC64_ADDR16_HI, but no overflow.  */
-  HOW (R_PPC64_ADDR16_HIGH, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGH, 2, 16, 0xffff, 16, false, dont,
        bfd_elf_generic_reloc),
 
   /* Like R_PPC64_ADDR16_HA, but no overflow.  */
-  HOW (R_PPC64_ADDR16_HIGHA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHA, 2, 16, 0xffff, 16, false, dont,
        ppc64_elf_ha_reloc),
 
   /* Like R_PPC64_DTPREL16_HI, but no overflow.  */
-  HOW (R_PPC64_DTPREL16_HIGH, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC64_DTPREL16_HIGH, 2, 16, 0xffff, 16, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_DTPREL16_HA, but no overflow.  */
-  HOW (R_PPC64_DTPREL16_HIGHA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC64_DTPREL16_HIGHA, 2, 16, 0xffff, 16, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_TPREL16_HI, but no overflow.  */
-  HOW (R_PPC64_TPREL16_HIGH, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC64_TPREL16_HIGH, 2, 16, 0xffff, 16, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Like R_PPC64_TPREL16_HA, but no overflow.  */
-  HOW (R_PPC64_TPREL16_HIGHA, 1, 16, 0xffff, 16, FALSE, dont,
+  HOW (R_PPC64_TPREL16_HIGHA, 2, 16, 0xffff, 16, false, dont,
        ppc64_elf_unhandled_reloc),
 
   /* Marker reloc on ELFv2 large-model function entry.  */
-  HOW (R_PPC64_ENTRY, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_ENTRY, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
   /* Like ADDR64, but use local entry point of function.  */
-  HOW (R_PPC64_ADDR64_LOCAL, 4, 64, 0xffffffffffffffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_ADDR64_LOCAL, 8, 64, 0xffffffffffffffffULL, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_PLTSEQ_NOTOC, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_PLTSEQ_NOTOC, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_PLTCALL_NOTOC, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_PLTCALL_NOTOC, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_PCREL_OPT, 2, 32, 0, 0, FALSE, dont,
+  HOW (R_PPC64_PCREL_OPT, 4, 32, 0, 0, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_D34, 4, 34, 0x3ffff0000ffffULL, 0, FALSE, signed,
+  HOW (R_PPC64_D34, 8, 34, 0x3ffff0000ffffULL, 0, false, signed,
        ppc64_elf_prefix_reloc),
 
-  HOW (R_PPC64_D34_LO, 4, 34, 0x3ffff0000ffffULL, 0, FALSE, dont,
+  HOW (R_PPC64_D34_LO, 8, 34, 0x3ffff0000ffffULL, 0, false, dont,
        ppc64_elf_prefix_reloc),
 
-  HOW (R_PPC64_D34_HI30, 4, 34, 0x3ffff0000ffffULL, 34, FALSE, dont,
+  HOW (R_PPC64_D34_HI30, 8, 34, 0x3ffff0000ffffULL, 34, false, dont,
        ppc64_elf_prefix_reloc),
 
-  HOW (R_PPC64_D34_HA30, 4, 34, 0x3ffff0000ffffULL, 34, FALSE, dont,
+  HOW (R_PPC64_D34_HA30, 8, 34, 0x3ffff0000ffffULL, 34, false, dont,
        ppc64_elf_prefix_reloc),
 
-  HOW (R_PPC64_PCREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_PCREL34, 8, 34, 0x3ffff0000ffffULL, 0, true, signed,
        ppc64_elf_prefix_reloc),
 
-  HOW (R_PPC64_GOT_PCREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_GOT_PCREL34, 8, 34, 0x3ffff0000ffffULL, 0, true, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_PLT_PCREL34, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_PLT_PCREL34, 8, 34, 0x3ffff0000ffffULL, 0, true, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_PLT_PCREL34_NOTOC, 4, 34, 0x3ffff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_PLT_PCREL34_NOTOC, 8, 34, 0x3ffff0000ffffULL, 0, true, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_TPREL34, 4, 34, 0x3ffff0000ffffULL, 0, FALSE, signed,
+  HOW (R_PPC64_TPREL34, 8, 34, 0x3ffff0000ffffULL, 0, false, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_DTPREL34, 4, 34, 0x3ffff0000ffffULL, 0, FALSE, signed,
+  HOW (R_PPC64_DTPREL34, 8, 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, 8, 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, 8, 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, 8, 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, 8, 34, 0x3ffff0000ffffULL, 0, true, signed,
        ppc64_elf_unhandled_reloc),
 
-  HOW (R_PPC64_ADDR16_HIGHER34, 1, 16, 0xffff, 34, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHER34, 2, 16, 0xffff, 34, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_ADDR16_HIGHERA34, 1, 16, 0xffff, 34, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHERA34, 2, 16, 0xffff, 34, false, dont,
        ppc64_elf_ha_reloc),
 
-  HOW (R_PPC64_ADDR16_HIGHEST34, 1, 16, 0xffff, 50, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHEST34, 2, 16, 0xffff, 50, false, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_ADDR16_HIGHESTA34, 1, 16, 0xffff, 50, FALSE, dont,
+  HOW (R_PPC64_ADDR16_HIGHESTA34, 2, 16, 0xffff, 50, false, dont,
        ppc64_elf_ha_reloc),
 
-  HOW (R_PPC64_REL16_HIGHER34, 1, 16, 0xffff, 34, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHER34, 2, 16, 0xffff, 34, true, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_REL16_HIGHERA34, 1, 16, 0xffff, 34, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHERA34, 2, 16, 0xffff, 34, true, dont,
        ppc64_elf_ha_reloc),
 
-  HOW (R_PPC64_REL16_HIGHEST34, 1, 16, 0xffff, 50, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHEST34, 2, 16, 0xffff, 50, true, dont,
        bfd_elf_generic_reloc),
 
-  HOW (R_PPC64_REL16_HIGHESTA34, 1, 16, 0xffff, 50, TRUE, dont,
+  HOW (R_PPC64_REL16_HIGHESTA34, 2, 16, 0xffff, 50, true, dont,
        ppc64_elf_ha_reloc),
 
-  HOW (R_PPC64_D28, 4, 28, 0xfff0000ffffULL, 0, FALSE, signed,
+  HOW (R_PPC64_D28, 8, 28, 0xfff0000ffffULL, 0, false, signed,
        ppc64_elf_prefix_reloc),
 
-  HOW (R_PPC64_PCREL28, 4, 28, 0xfff0000ffffULL, 0, TRUE, signed,
+  HOW (R_PPC64_PCREL28, 8, 28, 0xfff0000ffffULL, 0, true, signed,
        ppc64_elf_prefix_reloc),
 
   /* GNU extension to record C++ vtable hierarchy.  */
-  HOW (R_PPC64_GNU_VTINHERIT, 0, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC64_GNU_VTINHERIT, 0, 0, 0, 0, false, dont,
        NULL),
 
   /* GNU extension to record C++ vtable member usage.  */
-  HOW (R_PPC64_GNU_VTENTRY, 0, 0, 0, 0, FALSE, dont,
+  HOW (R_PPC64_GNU_VTENTRY, 0, 0, 0, 0, false, dont,
        NULL),
 };
 
@@ -998,8 +1016,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;
 
@@ -1044,6 +1061,8 @@ ppc64_elf_reloc_type_lookup (bfd *abfd,
       break;
     case BFD_RELOC_PPC64_REL24_NOTOC:		r = R_PPC64_REL24_NOTOC;
       break;
+    case BFD_RELOC_PPC64_REL24_P9NOTOC:		r = R_PPC64_REL24_P9NOTOC;
+      break;
     case BFD_RELOC_PPC_B16:			r = R_PPC64_REL14;
       break;
     case BFD_RELOC_PPC_B16_BRTAKEN:		r = R_PPC64_REL14_BRTAKEN;
@@ -1279,13 +1298,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,22 +1336,39 @@ 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;
 }
 
 /* Set the howto pointer for a PowerPC ELF reloc.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_info_to_howto (bfd *abfd, arelent *cache_ptr,
 			 Elf_Internal_Rela *dst)
 {
@@ -1343,25 +1379,17 @@ ppc64_elf_info_to_howto (bfd *abfd, arel
     ppc_howto_init ();
 
   type = ELF64_R_TYPE (dst->r_info);
-  if (type >= ARRAY_SIZE (ppc64_elf_howto_table))
+  if (type >= ARRAY_SIZE (ppc64_elf_howto_table)
+      || ppc64_elf_howto_table[type] == NULL)
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = ppc64_elf_howto_table[type];
-  if (cache_ptr->howto == NULL || cache_ptr->howto->name == NULL)
-    {
-      /* xgettext:c-format */
-      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
-			  abfd, type);
-      bfd_set_error (bfd_error_bad_value);
-      return FALSE;
-    }
-
-  return TRUE;
+  return true;
 }
 
 /* Handle the R_PPC64_ADDR16_HA and similar relocs.  */
@@ -1409,6 +1437,10 @@ ppc64_elf_ha_reloc (bfd *abfd, arelent *
   value = (bfd_signed_vma) value >> 16;
 
   octets = reloc_entry->address * OCTETS_PER_BYTE (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, octets))
+    return bfd_reloc_outofrange;
+
   insn = bfd_get_32 (abfd, (bfd_byte *) data + octets);
   insn &= ~0x1fffc1;
   insn |= (value & 0xffc1) | ((value & 0x3e) << 15);
@@ -1427,12 +1459,16 @@ ppc64_elf_branch_reloc (bfd *abfd, arele
     return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
 				  input_section, output_bfd, error_message);
 
+  if (symbol->section->owner == NULL
+      || !is_ppc64_elf (symbol->section->owner))
+    return bfd_reloc_continue;
+
   if (strcmp (symbol->section->name, ".opd") == 0
       && (symbol->section->owner->flags & DYNAMIC) == 0)
     {
       bfd_vma dest = opd_entry_value (symbol->section,
 				      symbol->value + reloc_entry->addend,
-				      NULL, NULL, FALSE);
+				      NULL, NULL, false);
       if (dest != (bfd_vma) -1)
 	reloc_entry->addend = dest - (symbol->value
 				      + symbol->section->output_section->vma
@@ -1443,7 +1479,6 @@ ppc64_elf_branch_reloc (bfd *abfd, arele
       elf_symbol_type *elfsym = (elf_symbol_type *) symbol;
 
       if (symbol->section->owner != abfd
-	  && symbol->section->owner != NULL
 	  && abiversion (symbol->section->owner) >= 2)
 	{
 	  unsigned int i;
@@ -1474,7 +1509,7 @@ ppc64_elf_brtaken_reloc (bfd *abfd, arel
   enum elf_ppc64_reloc_type r_type;
   bfd_size_type octets;
   /* Assume 'at' branch hints.  */
-  bfd_boolean is_isa_v2 = TRUE;
+  bool is_isa_v2 = true;
 
   /* If this is a relocatable link (output_bfd test tells us), just
      call the generic function.  Any adjustment will be done at final
@@ -1484,6 +1519,10 @@ ppc64_elf_brtaken_reloc (bfd *abfd, arel
 				  input_section, output_bfd, error_message);
 
   octets = reloc_entry->address * OCTETS_PER_BYTE (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, octets))
+    return bfd_reloc_outofrange;
+
   insn = bfd_get_32 (abfd, (bfd_byte *) data + octets);
   insn &= ~(0x01 << 21);
   r_type = reloc_entry->howto->type;
@@ -1629,11 +1668,15 @@ ppc64_elf_toc64_reloc (bfd *abfd, arelen
     return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
 				  input_section, output_bfd, error_message);
 
+  octets = reloc_entry->address * OCTETS_PER_BYTE (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, octets))
+    return bfd_reloc_outofrange;
+
   TOCstart = _bfd_get_gp_value (input_section->output_section->owner);
   if (TOCstart == 0)
     TOCstart = ppc64_elf_set_toc (NULL, input_section->output_section->owner);
 
-  octets = reloc_entry->address * OCTETS_PER_BYTE (abfd, input_section);
   bfd_put_64 (abfd, TOCstart + TOC_BASE_OFF, (bfd_byte *) data + octets);
   return bfd_reloc_ok;
 }
@@ -1645,14 +1688,20 @@ ppc64_elf_prefix_reloc (bfd *abfd, arele
 {
   uint64_t insn;
   bfd_vma targ;
+  bfd_size_type octets;
 
   if (output_bfd != NULL)
     return bfd_elf_generic_reloc (abfd, reloc_entry, symbol, data,
 				  input_section, output_bfd, error_message);
 
-  insn = bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address);
+  octets = reloc_entry->address * OCTETS_PER_BYTE (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, octets))
+    return bfd_reloc_outofrange;
+
+  insn = bfd_get_32 (abfd, (bfd_byte *) data + octets);
   insn <<= 32;
-  insn |= bfd_get_32 (abfd, (bfd_byte *) data + reloc_entry->address + 4);
+  insn |= bfd_get_32 (abfd, (bfd_byte *) data + octets + 4);
 
   targ = (symbol->section->output_section->vma
 	  + symbol->section->output_offset
@@ -1671,8 +1720,8 @@ ppc64_elf_prefix_reloc (bfd *abfd, arele
   targ >>= reloc_entry->howto->rightshift;
   insn &= ~reloc_entry->howto->dst_mask;
   insn |= ((targ << 16) | (targ & 0xffff)) & reloc_entry->howto->dst_mask;
-  bfd_put_32 (abfd, insn >> 32, (bfd_byte *) data + reloc_entry->address);
-  bfd_put_32 (abfd, insn, (bfd_byte *) data + reloc_entry->address + 4);
+  bfd_put_32 (abfd, insn >> 32, (bfd_byte *) data + octets);
+  bfd_put_32 (abfd, insn, (bfd_byte *) data + octets + 4);
   if (reloc_entry->howto->complain_on_overflow == complain_overflow_signed
       && (targ + (1ULL << (reloc_entry->howto->bitsize - 1))
 	  >= 1ULL << reloc_entry->howto->bitsize))
@@ -1693,12 +1742,8 @@ ppc64_elf_unhandled_reloc (bfd *abfd, ar
 				  input_section, output_bfd, error_message);
 
   if (error_message != NULL)
-    {
-      static char buf[60];
-      sprintf (buf, "generic linker can't handle %s",
-	       reloc_entry->howto->name);
-      *error_message = buf;
-    }
+    *error_message = bfd_asprintf (_("generic linker can't handle %s"),
+				   reloc_entry->howto->name);
   return bfd_reloc_dangerous;
 }
 
@@ -1766,15 +1811,6 @@ struct ppc64_elf_obj_tdata
      sections means we potentially need one of these for each input bfd.  */
   struct got_entry tlsld_got;
 
-  union
-  {
-    /* A copy of relocs before they are modified for --emit-relocs.  */
-    Elf_Internal_Rela *relocs;
-
-    /* Section contents.  */
-    bfd_byte *contents;
-  } opd;
-
   /* Nonzero if this bfd has small toc/got relocs, ie. that expect
      the reloc to be in the range -32768 to 32767.  */
   unsigned int has_small_toc_reloc : 1;
@@ -1794,27 +1830,22 @@ struct ppc64_elf_obj_tdata
 #define ppc64_tlsld_got(bfd) \
   (&ppc64_elf_tdata (bfd)->tlsld_got)
 
-#define is_ppc64_elf(bfd) \
-  (bfd_get_flavour (bfd) == bfd_target_elf_flavour \
-   && elf_object_id (bfd) == PPC64_ELF_DATA)
-
 /* Override the generic function because we store some extras.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct ppc64_elf_obj_tdata),
-				  PPC64_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct ppc64_elf_obj_tdata));
 }
 
 /* Fix bad default arch selected for a 64 bit input bfd when the
    default is 32 bit.  Also select arch based on apuinfo.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_object_p (bfd *abfd)
 {
   if (!abfd->arch_info->the_default)
-    return TRUE;
+    return true;
 
   if (abfd->arch_info->bits_per_word == 32)
     {
@@ -1832,13 +1863,13 @@ ppc64_elf_object_p (bfd *abfd)
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   size_t offset, size;
 
   if (note->descsz != 504)
-    return FALSE;
+    return false;
 
   /* pr_cursig */
   elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
@@ -1855,11 +1886,11 @@ ppc64_elf_grok_prstatus (bfd *abfd, Elf_
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 ppc64_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz != 136)
-    return FALSE;
+    return false;
 
   elf_tdata (abfd)->core->pid
     = bfd_get_32 (abfd, note->descdata + 24);
@@ -1868,7 +1899,7 @@ ppc64_elf_grok_psinfo (bfd *abfd, Elf_In
   elf_tdata (abfd)->core->command
     = _bfd_elfcore_strndup (abfd, note->descdata + 56, 80);
 
-  return TRUE;
+  return true;
 }
 
 static char *
@@ -1945,7 +1976,8 @@ static const struct bfd_elf_special_sect
 enum _ppc64_sec_type {
   sec_normal = 0,
   sec_opd = 1,
-  sec_toc = 2
+  sec_toc = 2,
+  sec_stub = 3
 };
 
 struct _ppc64_elf_section_data
@@ -1964,6 +1996,15 @@ struct _ppc64_elf_section_data
 
       /* After editing .opd, adjust references to opd local syms.  */
       long *adjust;
+
+      union
+      {
+	/* A copy of relocs before they are modified for --emit-relocs.  */
+	Elf_Internal_Rela *relocs;
+
+	/* Section contents.  */
+	bfd_byte *contents;
+      } u;
     } opd;
 
     /* An array for toc sections, indexed by offset/8.  */
@@ -1975,6 +2016,9 @@ struct _ppc64_elf_section_data
       /* And the relocation addend.  */
       bfd_vma *add;
     } toc;
+
+    /* Stub debugging.  */
+    struct ppc_stub_hash_entry *last_ent;
   } u;
 
   enum _ppc64_sec_type sec_type:2;
@@ -1994,23 +2038,31 @@ struct _ppc64_elf_section_data
 #define ppc64_elf_section_data(sec) \
   ((struct _ppc64_elf_section_data *) elf_section_data (sec))
 
-static bfd_boolean
+static bool
 ppc64_elf_new_section_hook (bfd *abfd, asection *sec)
 {
-  if (!sec->used_by_bfd)
-    {
-      struct _ppc64_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+  struct _ppc64_elf_section_data *sdata;
 
-      sdata = bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
 
+static bool
+ppc64_elf_section_flags (const Elf_Internal_Shdr *hdr)
+{
+  const char *name = hdr->bfd_section->name;
+
+  if (startswith (name, ".sbss")
+      || startswith (name, ".sdata"))
+    hdr->bfd_section->flags |= SEC_SMALL_DATA;
+
+  return true;
+}
+
 static struct _opd_sec_data *
 get_opd_info (asection * sec)
 {
@@ -2022,8 +2074,8 @@ get_opd_info (asection * sec)
 }
 
 /* Parameters for the qsort hook.  */
-static bfd_boolean synthetic_relocatable;
-static asection *synthetic_opd;
+static bool synthetic_relocatable;
+static const asection *synthetic_opd;
 
 /* qsort comparison function for ppc64_elf_get_synthetic_symtab.  */
 
@@ -2120,9 +2172,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)
     {
@@ -2157,7 +2210,7 @@ sym_exists_at (asymbol **syms, long lo,
   return NULL;
 }
 
-static bfd_boolean
+static bool
 section_covers_vma (bfd *abfd ATTRIBUTE_UNUSED, asection *section, void *ptr)
 {
   bfd_vma vma = *(bfd_vma *) ptr;
@@ -2181,7 +2234,7 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
   char *names;
   size_t symcount, codesecsym, codesecsymend, secsymend, opdsymend;
   asection *opd = NULL;
-  bfd_boolean relocatable = (abfd->flags & (EXEC_P | DYNAMIC)) == 0;
+  bool relocatable = (abfd->flags & (EXEC_P | DYNAMIC)) == 0;
   asymbol **syms;
   int abi = abiversion (abfd);
 
@@ -2263,7 +2316,8 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
 	 sym->section directly.  With separate debug info files, the
 	 symbols will be extracted from the debug file while abfd passed
 	 to this function is the real binary.  */
-      if (strcmp (syms[i]->section->name, ".opd") == 0)
+      if ((syms[i]->flags & BSF_SECTION_SYM) != 0
+	  && strcmp (syms[i]->section->name, ".opd") == 0)
 	++i;
       codesecsym = i;
 
@@ -2296,7 +2350,7 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
 
   if (relocatable)
     {
-      bfd_boolean (*slurp_relocs) (bfd *, asection *, asymbol **, bfd_boolean);
+      bool (*slurp_relocs) (bfd *, asection *, asymbol **, bool);
       arelent *r;
       size_t size;
       size_t relcount;
@@ -2309,7 +2363,7 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
       if (relcount == 0)
 	goto done;
 
-      if (!(*slurp_relocs) (abfd, opd, static_syms, FALSE))
+      if (!(*slurp_relocs) (abfd, opd, static_syms, false))
 	{
 	  count = -1;
 	  goto done;
@@ -2395,7 +2449,7 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
     }
   else
     {
-      bfd_boolean (*slurp_relocs) (bfd *, asection *, asymbol **, bfd_boolean);
+      bool (*slurp_relocs) (bfd *, asection *, asymbol **, bool);
       bfd_byte *contents = NULL;
       size_t size;
       size_t plt_count = 0;
@@ -2403,13 +2457,14 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
       asection *dynamic, *glink = NULL, *relplt = NULL;
       arelent *p;
 
-      if (opd != NULL && !bfd_malloc_and_get_section (abfd, opd, &contents))
+      if (opd != NULL
+	  && ((opd->flags & SEC_HAS_CONTENTS) == 0
+	      || !bfd_malloc_and_get_section (abfd, opd, &contents)))
 	{
 	free_contents_and_exit_err:
 	  count = -1;
 	free_contents_and_exit:
-	  if (contents)
-	    free (contents);
+	  free (contents);
 	  goto done;
 	}
 
@@ -2439,15 +2494,16 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
 	  size_t extdynsize;
 	  void (*swap_dyn_in) (bfd *, const void *, Elf_Internal_Dyn *);
 
-	  if (!bfd_malloc_and_get_section (abfd, dynamic, &dynbuf))
+	  if ((dynamic->flags & SEC_HAS_CONTENTS) == 0
+	      || !bfd_malloc_and_get_section (abfd, dynamic, &dynbuf))
 	    goto free_contents_and_exit_err;
 
 	  extdynsize = get_elf_backend_data (abfd)->s->sizeof_dyn;
 	  swap_dyn_in = get_elf_backend_data (abfd)->s->swap_dyn_in;
 
-	  extdyn = dynbuf;
-	  extdynend = extdyn + dynamic->size;
-	  for (; extdyn < extdynend; extdyn += extdynsize)
+	  for (extdyn = dynbuf, extdynend = dynbuf + dynamic->size;
+	       (size_t) (extdynend - extdyn) >= extdynsize;
+	       extdyn += extdynsize)
 	    {
 	      Elf_Internal_Dyn dyn;
 	      (*swap_dyn_in) (abfd, extdyn, &dyn);
@@ -2502,10 +2558,10 @@ ppc64_elf_get_synthetic_symtab (bfd *abf
 	  if (relplt != NULL)
 	    {
 	      slurp_relocs = get_elf_backend_data (abfd)->s->slurp_reloc_table;
-	      if (!(*slurp_relocs) (abfd, relplt, dyn_syms, TRUE))
+	      if (!(*slurp_relocs) (abfd, relplt, dyn_syms, true))
 		goto free_contents_and_exit_err;
 
-	      plt_count = relplt->size / sizeof (Elf64_External_Rela);
+	      plt_count = NUM_SHDR_ENTRIES (&elf_section_data (relplt)->this_hdr);
 	      size += plt_count * sizeof (asymbol);
 
 	      p = relplt->relocation;
@@ -2787,20 +2843,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 +2872,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
 
@@ -2825,7 +2881,7 @@ must_be_dyn_reloc (struct bfd_link_info
    Used to call a function in a shared library.  If it so happens that
    the plt entry referenced crosses a 64k boundary, then an extra
    "addi %r11,%r11,xxx@toc@l" will be inserted before the "mtctr".
-   ppc_stub_plt_call_r2save starts with "std %r2,40(%r1)".
+   An r2save variant starts with "std %r2,40(%r1)".
    .	addis	%r11,%r2,xxx@toc@ha
    .	ld	%r12,xxx+0@toc@l(%r11)
    .	mtctr	%r12
@@ -2843,8 +2899,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
@@ -2854,13 +2910,8 @@ must_be_dyn_reloc (struct bfd_link_info
    variants exist too, simpler for plt calls since a new toc pointer
    and static chain are not loaded by the stub.  In addition, ELFv2
    has some more complex stubs to handle calls marked with NOTOC
-   relocs from functions where r2 is not a valid toc pointer.  These
-   come in two flavours, the ones shown below, and _both variants that
-   start with "std %r2,24(%r1)" to save r2 in the unlikely event that
-   one call is from a function where r2 is used as the toc pointer but
-   needs a toc adjusting stub for small-model multi-toc, and another
-   call is from a function where r2 is not valid.
-   ppc_stub_long_branch_notoc:
+   relocs from functions where r2 is not a valid toc pointer.
+   ppc_stub_long_branch_p9notoc:
    .	mflr	%r12
    .	bcl	20,31,1f
    .  1:
@@ -2870,7 +2921,7 @@ must_be_dyn_reloc (struct bfd_link_info
    .	addi	%r12,%r12,dest-1b@l
    .	b	dest
 
-   ppc_stub_plt_branch_notoc:
+   ppc_stub_plt_branch_p9notoc:
    .	mflr	%r12
    .	bcl	20,31,1f
    .  1:
@@ -2885,7 +2936,7 @@ must_be_dyn_reloc (struct bfd_link_info
    .	mtctr	%r12
    .	bctr
 
-   ppc_stub_plt_call_notoc:
+   ppc_stub_plt_call_p9notoc:
    .	mflr	%r12
    .	bcl	20,31,1f
    .  1:
@@ -2900,7 +2951,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,15 +2974,13 @@ 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
    .	bctr
 
-   For a given stub group (a set of sections all using the same toc
-   pointer value) there will be just one stub type used for any
-   particular function symbol.  For example, if printf is called from
+   Stub variants may be merged.  For example, if printf is called from
    code with the tocsave optimization (ie. r2 saved in function
    prologue) and therefore calls use a ppc_stub_plt_call linkage stub,
    and from other code without the tocsave optimization requiring a
@@ -2942,33 +2991,36 @@ must_be_dyn_reloc (struct bfd_link_info
    relocations.  These require a ppc_stub_plt_call_notoc linkage stub
    to call an external function like printf.  If other calls to printf
    require a ppc_stub_plt_call linkage stub then a single
-   ppc_stub_plt_call_notoc linkage stub will be used for both types of
-   call.  If other calls to printf require a ppc_stub_plt_call_r2save
-   linkage stub then a single ppc_stub_plt_call_both linkage stub will
-   be created and calls not requiring r2 to be saved will enter the
-   stub after the r2 save instruction.  There is an analogous
-   hierarchy of long branch and plt branch stubs for local call
-   linkage.  */
+   ppc_stub_plt_call_notoc linkage stub may be used for both types of
+   call.  */
 
-enum ppc_stub_type
+enum ppc_stub_main_type
 {
   ppc_stub_none,
   ppc_stub_long_branch,
-  ppc_stub_long_branch_r2off,
-  ppc_stub_long_branch_notoc,
-  ppc_stub_long_branch_both, /* r2off and notoc variants both needed.  */
   ppc_stub_plt_branch,
-  ppc_stub_plt_branch_r2off,
-  ppc_stub_plt_branch_notoc,
-  ppc_stub_plt_branch_both,
   ppc_stub_plt_call,
-  ppc_stub_plt_call_r2save,
-  ppc_stub_plt_call_notoc,
-  ppc_stub_plt_call_both,
   ppc_stub_global_entry,
   ppc_stub_save_res
 };
 
+/* ppc_stub_long_branch, ppc_stub_plt_branch and ppc_stub_plt_call have
+   these variations.  */
+
+enum ppc_stub_sub_type
+{
+  ppc_stub_toc,
+  ppc_stub_notoc,
+  ppc_stub_p9notoc
+};
+
+struct ppc_stub_type
+{
+  ENUM_BITFIELD (ppc_stub_main_type) main : 3;
+  ENUM_BITFIELD (ppc_stub_sub_type) sub : 2;
+  unsigned int r2save : 1;
+};
+
 /* Information on stub grouping.  */
 struct map_stub
 {
@@ -2997,7 +3049,7 @@ struct ppc_stub_hash_entry
   /* Base hash table entry structure.  */
   struct bfd_hash_entry root;
 
-  enum ppc_stub_type stub_type;
+  struct ppc_stub_type type;
 
   /* Group information.  */
   struct map_stub *group;
@@ -3019,6 +3071,9 @@ struct ppc_stub_hash_entry
 
   /* Symbol st_other.  */
   unsigned char other;
+
+  /* Debug: Track hash table traversal.  */
+  unsigned int id;
 };
 
 struct ppc_branch_hash_entry
@@ -3033,7 +3088,7 @@ struct ppc_branch_hash_entry
   unsigned int iter;
 };
 
-/* Used to track dynamic relocations for local symbols.  */
+/* Used to track dynamic relocations.  */
 struct ppc_dyn_relocs
 {
   struct ppc_dyn_relocs *next;
@@ -3042,7 +3097,27 @@ struct ppc_dyn_relocs
   asection *sec;
 
   /* Total number of relocs copied for the input section.  */
-  unsigned int count : 31;
+  unsigned int count;
+
+  /* Number of pc-relative relocs copied for the input section.  */
+  unsigned int pc_count;
+
+  /* Number of relocs that might become R_PPC64_RELATIVE.  */
+  unsigned int rel_count;
+};
+
+struct ppc_local_dyn_relocs
+{
+  struct ppc_local_dyn_relocs *next;
+
+  /* The input section of the reloc.  */
+  asection *sec;
+
+  /* Total number of relocs copied for the input section.  */
+  unsigned int count;
+
+  /* Number of relocs that might become R_PPC64_RELATIVE.  */
+  unsigned int rel_count : 31;
 
   /* Whether this entry is for STT_GNU_IFUNC symbols.  */
   unsigned int ifunc : 1;
@@ -3062,9 +3137,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 +3183,18 @@ 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;
+}
+
+static inline struct elf_link_hash_entry *
+elf_hash_entry (struct ppc_link_hash_entry *ent)
+{
+  return (struct elf_link_hash_entry *) ent;
+}
+
 /* ppc64 ELF linker hash table.  */
 
 struct ppc_link_hash_table
@@ -3173,12 +3257,24 @@ 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;
 
+  /* DT_RELR array of section/r_offset.  */
+  size_t relr_alloc;
+  size_t relr_count;
+  struct
+  {
+    asection *sec;
+    bfd_vma off;
+  } *relr;
+
   /* Statistics.  */
-  unsigned long stub_count[ppc_stub_global_entry];
+  unsigned long stub_count[ppc_stub_save_res];
 
   /* Number of stubs against global syms.  */
   unsigned long stub_globals;
@@ -3198,31 +3294,36 @@ struct ppc_link_hash_table
   /* Set if inline plt calls should be converted to direct calls.  */
   unsigned int can_convert_all_inline_plt:1;
 
+  /* Set if a stub_offset changed.  */
+  unsigned int stub_changed:1;
+
   /* Set on error.  */
   unsigned int stub_error:1;
 
   /* 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 once for each stub sized.  */
+  unsigned int stub_id;
 
   /* Incremented every time we size stubs.  */
   unsigned int stub_iteration;
 
-  /* Small local sym cache.  */
-  struct sym_cache sym_cache;
+/* After 20 iterations of stub sizing we no longer allow stubs to
+   shrink.  This is to break out of a pathological case where adding
+   stubs or increasing their size on one iteration decreases section
+   gaps (perhaps due to alignment), which then results in smaller
+   stubs on the next iteration.  */
+#define STUB_SHRINK_ITER 20
 };
 
 /* Rename some of the generic section flags to better document how they
@@ -3249,8 +3350,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 *) \
@@ -3284,14 +3386,18 @@ stub_hash_newfunc (struct bfd_hash_entry
 
       /* Initialize the local fields.  */
       eh = (struct ppc_stub_hash_entry *) entry;
-      eh->stub_type = ppc_stub_none;
+      eh->type.main = ppc_stub_none;
+      eh->type.sub = ppc_stub_toc;
+      eh->type.r2save = 0;
       eh->group = NULL;
       eh->stub_offset = 0;
       eh->target_value = 0;
       eh->target_section = NULL;
       eh->h = NULL;
       eh->plt_ent = NULL;
+      eh->symtype = 0;
       eh->other = 0;
+      eh->id = 0;
     }
 
   return entry;
@@ -3412,6 +3518,7 @@ ppc64_elf_link_hash_table_free (bfd *obf
   struct ppc_link_hash_table *htab;
 
   htab = (struct ppc_link_hash_table *) obfd->link.hash;
+  free (htab->relr);
   if (htab->tocsave_htab)
     htab_delete (htab->tocsave_htab);
   bfd_hash_table_free (&htab->branch_hash_table);
@@ -3425,15 +3532,14 @@ 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)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&htab->elf, abfd, link_hash_newfunc,
-				      sizeof (struct ppc_link_hash_entry),
-				      PPC64_ELF_DATA))
+				      sizeof (struct ppc_link_hash_entry)))
     {
       free (htab);
       return NULL;
@@ -3485,7 +3591,7 @@ ppc64_elf_link_hash_table_create (bfd *a
 
 /* Create sections for linker generated code.  */
 
-static bfd_boolean
+static bool
 create_linkage_sections (bfd *dynobj, struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
@@ -3502,18 +3608,18 @@ create_linkage_sections (bfd *dynobj, st
 						       flags);
       if (htab->sfpr == NULL
 	  || !bfd_set_section_alignment (htab->sfpr, 2))
-	return FALSE;
+	return false;
     }
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   /* Create .glink for lazy dynamic linking support.  */
   htab->glink = bfd_make_section_anyway_with_flags (dynobj, ".glink",
 						    flags);
   if (htab->glink == NULL
       || !bfd_set_section_alignment (htab->glink, 3))
-    return FALSE;
+    return false;
 
   /* The part of .glink used by global entry stubs, separate so that
      it can be aligned appropriately without affecting htab->glink.  */
@@ -3521,7 +3627,7 @@ create_linkage_sections (bfd *dynobj, st
 							   flags);
   if (htab->global_entry == NULL
       || !bfd_set_section_alignment (htab->global_entry, 2))
-    return FALSE;
+    return false;
 
   if (!info->no_ld_generated_unwind_info)
     {
@@ -3532,14 +3638,14 @@ create_linkage_sections (bfd *dynobj, st
 								 flags);
       if (htab->glink_eh_frame == NULL
 	  || !bfd_set_section_alignment (htab->glink_eh_frame, 2))
-	return FALSE;
+	return false;
     }
 
   flags = SEC_ALLOC | SEC_LINKER_CREATED;
   htab->elf.iplt = bfd_make_section_anyway_with_flags (dynobj, ".iplt", flags);
   if (htab->elf.iplt == NULL
       || !bfd_set_section_alignment (htab->elf.iplt, 3))
-    return FALSE;
+    return false;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY
 	   | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED);
@@ -3547,7 +3653,7 @@ create_linkage_sections (bfd *dynobj, st
     = bfd_make_section_anyway_with_flags (dynobj, ".rela.iplt", flags);
   if (htab->elf.irelplt == NULL
       || !bfd_set_section_alignment (htab->elf.irelplt, 3))
-    return FALSE;
+    return false;
 
   /* Create branch lookup table for plt_branch stubs.  */
   flags = (SEC_ALLOC | SEC_LOAD
@@ -3556,7 +3662,7 @@ create_linkage_sections (bfd *dynobj, st
 						   flags);
   if (htab->brlt == NULL
       || !bfd_set_section_alignment (htab->brlt, 3))
-    return FALSE;
+    return false;
 
   /* Local plt entries, put in .branch_lt but a separate section for
      convenience.  */
@@ -3564,10 +3670,10 @@ create_linkage_sections (bfd *dynobj, st
 						       flags);
   if (htab->pltlocal == NULL
       || !bfd_set_section_alignment (htab->pltlocal, 3))
-    return FALSE;
+    return false;
 
   if (!bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY
 	   | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED);
@@ -3575,20 +3681,20 @@ create_linkage_sections (bfd *dynobj, st
     = bfd_make_section_anyway_with_flags (dynobj, ".rela.branch_lt", flags);
   if (htab->relbrlt == NULL
       || !bfd_set_section_alignment (htab->relbrlt, 3))
-    return FALSE;
+    return false;
 
   htab->relpltlocal
     = bfd_make_section_anyway_with_flags (dynobj, ".rela.branch_lt", flags);
   if (htab->relpltlocal == NULL
       || !bfd_set_section_alignment (htab->relpltlocal, 3))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Satisfy the ELF linker by filling in some fields in our fake bfd.  */
 
-bfd_boolean
+bool
 ppc64_elf_init_stub_bfd (struct bfd_link_info *info,
 			 struct ppc64_elf_params *params)
 {
@@ -3652,6 +3758,46 @@ 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 there may be multiple stub types for any
+   given symbol.  Up to three classes of stubs are stored in separate
+   stub_hash_table entries having the same key string.  The 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,
+		 enum elf_ppc64_reloc_type r_type)
+{
+  enum ppc_stub_sub_type subt;
+
+  switch (r_type)
+    {
+    case R_PPC64_REL24_NOTOC:
+      subt = ppc_stub_notoc;
+      break;
+    case R_PPC64_REL24_P9NOTOC:
+      subt = ppc_stub_p9notoc;
+      break;
+    default:
+      subt = ppc_stub_toc;
+      break;
+    }
+
+  while (entry != NULL && entry->type.sub != subt)
+    {
+      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.  */
 
@@ -3689,13 +3835,16 @@ ppc_get_stub_entry (const asection *inpu
 	return NULL;
 
       stub_entry = ppc_stub_hash_lookup (&htab->stub_hash_table,
-					 stub_name, FALSE, FALSE);
+					 stub_name, false, false);
       if (h != NULL)
 	h->u.stub_cache = stub_entry;
 
       free (stub_name);
     }
 
+  if (stub_entry != NULL && htab->params->power10_stubs == -1)
+    stub_entry = select_alt_stub (stub_entry, ELF64_R_TYPE (rel->r_info));
+
   return stub_entry;
 }
 
@@ -3738,7 +3887,7 @@ ppc_add_stub (const char *stub_name,
 
   /* Enter this entry into the linker stub hash table.  */
   stub_entry = ppc_stub_hash_lookup (&htab->stub_hash_table, stub_name,
-				     TRUE, FALSE);
+				     true, true);
   if (stub_entry == NULL)
     {
       /* xgettext:c-format */
@@ -3752,10 +3901,79 @@ ppc_add_stub (const char *stub_name,
   return stub_entry;
 }
 
+/* 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
+   stubs or vice versa, but we might be upgrading from plt_call to
+   plt_call with r2save for example.  */
+
+static bool
+ppc_merge_stub (struct ppc_link_hash_table *htab,
+		struct ppc_stub_hash_entry *stub_entry,
+		struct ppc_stub_type stub_type,
+		enum elf_ppc64_reloc_type r_type)
+{
+  struct ppc_stub_type old_type = stub_entry->type;
+
+  if (old_type.main == ppc_stub_save_res)
+    return true;
+
+  if (htab->params->power10_stubs == -1)
+    {
+      /* For --power10-stubs=auto, don't merge _notoc and other
+	 varieties of stubs.  */
+      struct ppc_stub_hash_entry *alt_stub;
+
+      alt_stub = select_alt_stub (stub_entry, r_type);
+      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)
+	    return false;
+
+	  *alt_stub = *stub_entry;
+	  stub_entry->root.next = &alt_stub->root;
+
+	  /* Sort notoc stubs first, then toc stubs, then p9notoc.
+	     Not that it matters, this just puts smaller stubs first.  */
+	  if (stub_type.sub == ppc_stub_notoc)
+	    alt_stub = stub_entry;
+	  else if (stub_type.sub == ppc_stub_p9notoc
+		   && alt_stub->root.next
+		   && alt_stub->root.next->string == alt_stub->root.string)
+	    {
+	      struct ppc_stub_hash_entry *next
+		= (struct ppc_stub_hash_entry *) alt_stub->root.next;
+	      alt_stub->type = next->type;
+	      alt_stub = next;
+	    }
+	  alt_stub->type = stub_type;
+	  return true;
+	}
+      stub_entry = alt_stub;
+    }
+
+  old_type = stub_entry->type;
+  if (old_type.main == ppc_stub_plt_branch)
+    old_type.main = ppc_stub_long_branch;
+
+  if (old_type.main != stub_type.main
+      || (old_type.sub != stub_type.sub
+	  && old_type.sub != ppc_stub_toc
+	  && stub_type.sub != ppc_stub_toc))
+    abort ();
+
+  stub_entry->type.sub |= stub_type.sub;
+  stub_entry->type.r2save |= stub_type.r2save;
+  return true;
+}
+
 /* Create .got and .rela.got sections in ABFD, and .got in dynobj if
    not already done.  */
 
-static bfd_boolean
+static bool
 create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   asection *got, *relgot;
@@ -3763,13 +3981,13 @@ create_got_section (bfd *abfd, struct bf
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
 
   if (!is_ppc64_elf (abfd))
-    return FALSE;
+    return false;
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (!htab->elf.sgot
       && !_bfd_elf_create_got_section (htab->elf.dynobj, info))
-    return FALSE;
+    return false;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
 	   | SEC_LINKER_CREATED);
@@ -3777,17 +3995,17 @@ create_got_section (bfd *abfd, struct bf
   got = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (!got
       || !bfd_set_section_alignment (got, 3))
-    return FALSE;
+    return false;
 
   relgot = bfd_make_section_anyway_with_flags (abfd, ".rela.got",
 					       flags | SEC_READONLY);
   if (!relgot
       || !bfd_set_section_alignment (relgot, 3))
-    return FALSE;
+    return false;
 
   ppc64_elf_tdata (abfd)->got = got;
   ppc64_elf_tdata (abfd)->relgot = relgot;
-  return TRUE;
+  return true;
 }
 
 /* Follow indirect and warning symbol links.  */
@@ -3810,7 +4028,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 +4075,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,35 +4102,40 @@ 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;
+	  struct ppc_dyn_relocs **pp;
+	  struct ppc_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)
+	  for (pp = (struct ppc_dyn_relocs **) &ind->dyn_relocs;
+	       (p = *pp) != NULL;
+	       )
+	    {
+	      struct ppc_dyn_relocs *q;
+
+	      for (q = (struct ppc_dyn_relocs *) dir->dyn_relocs;
+		   q != NULL;
+		   q = q->next)
 		if (q->sec == p->sec)
 		  {
-		    q->pc_count += p->pc_count;
 		    q->count += p->count;
+		    q->pc_count += p->pc_count;
+		    q->rel_count += p->rel_count;
 		    *pp = p->next;
 		    break;
 		  }
 	      if (q == NULL)
 		pp = &p->next;
 	    }
-	  *pp = edir->dyn_relocs;
+	  *pp = (struct ppc_dyn_relocs *) 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 +4197,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;
 
@@ -4007,7 +4230,7 @@ make_fdh (struct bfd_link_info *info,
   if (!_bfd_generic_link_add_one_symbol (info, abfd,
 					 fh->elf.root.root.string + 1,
 					 flags, bfd_und_section_ptr, 0,
-					 NULL, FALSE, FALSE, &bh))
+					 NULL, false, false, &bh))
     return NULL;
 
   fdh = (struct ppc_link_hash_entry *) bh;
@@ -4023,7 +4246,7 @@ make_fdh (struct bfd_link_info *info,
 /* Fix function descriptor symbols defined in .opd sections to be
    function type.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_add_symbol_hook (bfd *ibfd,
 			   struct bfd_link_info *info,
 			   Elf_Internal_Sym *isym,
@@ -4046,7 +4269,7 @@ ppc64_elf_add_symbol_hook (bfd *ibfd,
       if (!bfd_link_relocatable (info)
 	  && (*sec)->reloc_count != 0
 	  && opd_entry_value (*sec, *value, &code_sec, NULL,
-			      FALSE) != (bfd_vma) -1
+			      false) != (bfd_vma) -1
 	  && discarded_section (code_sec))
 	{
 	  *sec = bfd_und_section_ptr;
@@ -4071,42 +4294,42 @@ ppc64_elf_add_symbol_hook (bfd *ibfd,
 	  _bfd_error_handler (_("symbol '%s' has invalid st_other"
 				" for ABI version 1"), *name);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge non-visibility st_other attributes: local entry point.  */
 
 static void
 ppc64_elf_merge_symbol_attribute (struct elf_link_hash_entry *h,
-				  const Elf_Internal_Sym *isym,
-				  bfd_boolean definition,
-				  bfd_boolean dynamic)
+				  unsigned int st_other,
+				  bool definition,
+				  bool dynamic)
 {
   if (definition && (!dynamic || !h->def_regular))
-    h->other = ((isym->st_other & ~ELF_ST_VISIBILITY (-1))
+    h->other = ((st_other & ~ELF_ST_VISIBILITY (-1))
 		| ELF_ST_VISIBILITY (h->other));
 }
 
 /* Hook called on merging a symbol.  We use this to clear "fake" since
    we now have a real symbol.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_merge_symbol (struct elf_link_hash_entry *h,
 			const Elf_Internal_Sym *isym,
 			asection **psec ATTRIBUTE_UNUSED,
-			bfd_boolean newdef ATTRIBUTE_UNUSED,
-			bfd_boolean olddef ATTRIBUTE_UNUSED,
+			bool newdef ATTRIBUTE_UNUSED,
+			bool olddef ATTRIBUTE_UNUSED,
 			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;
-  return TRUE;
+    ppc_elf_hash_entry (h)->non_zero_localentry = 1;
+  return true;
 }
 
 /* This function makes an old ABI object reference to ".bar" cause the
@@ -4114,17 +4337,18 @@ ppc64_elf_merge_symbol (struct elf_link_
    NAME is a symbol defined in an archive.  Return a symbol in the hash
    table that might be satisfied by the archive symbols.  */
 
-static struct elf_link_hash_entry *
+static struct bfd_link_hash_entry *
 ppc64_elf_archive_symbol_lookup (bfd *abfd,
 				 struct bfd_link_info *info,
 				 const char *name)
 {
-  struct elf_link_hash_entry *h;
+  struct bfd_link_hash_entry *h;
   char *dot_name;
   size_t len;
 
   h = _bfd_elf_archive_symbol_lookup (abfd, info, name);
   if (h != NULL
+      && ppc_hash_table (info) != 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)
@@ -4136,11 +4360,16 @@ ppc64_elf_archive_symbol_lookup (bfd *ab
   len = strlen (name);
   dot_name = bfd_alloc (abfd, len + 2);
   if (dot_name == NULL)
-    return (struct elf_link_hash_entry *) -1;
+    return (struct bfd_link_hash_entry *) -1;
   dot_name[0] = '.';
   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;
 }
 
@@ -4153,7 +4382,7 @@ ppc64_elf_archive_symbol_lookup (bfd *ab
    most restrictive visibility of the function descriptor and the
    function entry symbol is used.  */
 
-static bfd_boolean
+static bool
 add_symbol_adjust (struct ppc_link_hash_entry *eh, struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
@@ -4163,14 +4392,14 @@ add_symbol_adjust (struct ppc_link_hash_
     eh = (struct ppc_link_hash_entry *) eh->elf.root.u.i.link;
 
   if (eh->elf.root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   if (eh->elf.root.root.string[0] != '.')
     abort ();
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   fdh = lookup_fdh (eh, htab);
   if (fdh == NULL
@@ -4184,7 +4413,7 @@ add_symbol_adjust (struct ppc_link_hash_
 	 elsewhere.  */
       fdh = make_fdh (info, eh);
       if (fdh == NULL)
-	return FALSE;
+	return false;
     }
 
   if (fdh != NULL)
@@ -4216,17 +4445,17 @@ add_symbol_adjust (struct ppc_link_hash_
 	      || eh->elf.def_regular))
 	{
 	  if (!bfd_elf_link_record_dynamic_symbol (info, &fdh->elf))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set up opd section info and abiversion for IBFD, and process list
    of dot-symbols we made in link_hash_newfunc.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_before_check_relocs (bfd *ibfd, struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
@@ -4235,8 +4464,10 @@ ppc64_elf_before_check_relocs (bfd *ibfd
 
   if (opd != NULL && opd->size != 0)
     {
-      BFD_ASSERT (ppc64_elf_section_data (opd)->sec_type == sec_normal);
-      ppc64_elf_section_data (opd)->sec_type = sec_opd;
+      if (ppc64_elf_section_data (opd)->sec_type == sec_normal)
+	ppc64_elf_section_data (opd)->sec_type = sec_opd;
+      else if (ppc64_elf_section_data (opd)->sec_type != sec_opd)
+	BFD_FAIL ();
 
       if (abiversion (ibfd) == 0)
 	set_abiversion (ibfd, 1);
@@ -4246,7 +4477,7 @@ ppc64_elf_before_check_relocs (bfd *ibfd
 	  _bfd_error_handler (_("%pB .opd not allowed in ABI version %d"),
 			      ibfd, abiversion (ibfd));
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
     }
 
@@ -4254,7 +4485,7 @@ ppc64_elf_before_check_relocs (bfd *ibfd
     {
       /* For input files without an explicit abiversion in e_flags
 	 we should have flagged any with symbol st_other bits set
-	 as ELFv1 and above flagged those with .opd as ELFv2.
+	 as ELFv2 and above flagged those with .opd as ELFv1.
 	 Set the output abiversion if not yet set, and for any input
 	 still ambiguous, take its abiversion from the output.
 	 Differences in ABI are reported later.  */
@@ -4266,7 +4497,7 @@ ppc64_elf_before_check_relocs (bfd *ibfd
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return TRUE;
+    return true;
 
   if (opd != NULL && opd->size != 0
       && (ibfd->flags & DYNAMIC) == 0
@@ -4290,12 +4521,12 @@ ppc64_elf_before_check_relocs (bfd *ibfd
       amt = OPD_NDX (opd->size) * sizeof (*opd_sym_map);
       opd_sym_map = bfd_zalloc (ibfd, amt);
       if (opd_sym_map == NULL)
-	return FALSE;
+	return false;
       ppc64_elf_section_data (opd)->u.opd.func_sec = opd_sym_map;
       relocs = _bfd_elf_link_read_relocs (ibfd, opd, NULL, NULL,
 					  info->keep_memory);
       if (relocs == NULL)
-	return FALSE;
+	return false;
       symtab_hdr = &elf_symtab_hdr (ibfd);
       rel_end = relocs + opd->reloc_count - 1;
       for (rel = relocs; rel < rel_end; rel++)
@@ -4310,12 +4541,13 @@ 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)
 		    free (relocs);
-		  return FALSE;
+		  return false;
 		}
 
 	      s = bfd_section_from_elf_index (ibfd, isym->st_shndx);
@@ -4340,17 +4572,17 @@ ppc64_elf_before_check_relocs (bfd *ibfd
 	{
 	  htab->need_func_desc_adj = 1;
 	  if (!add_symbol_adjust (eh, info))
-	    return FALSE;
+	    return false;
 	}
       p = &eh->u.next_dot_sym;
     }
-  return TRUE;
+  return true;
 }
 
 /* Undo hash table changes when an --as-needed input file is determined
    not to be needed.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_notice_as_needed (bfd *ibfd,
 			    struct bfd_link_info *info,
 			    enum notice_asneeded_action act)
@@ -4360,7 +4592,7 @@ ppc64_elf_notice_as_needed (bfd *ibfd,
       struct ppc_link_hash_table *htab = ppc_hash_table (info);
 
       if (htab == NULL)
-	return FALSE;
+	return false;
 
       htab->dot_syms = NULL;
     }
@@ -4416,15 +4648,15 @@ 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;
+	    return NULL;
 	  ent->next = local_got_ents[r_symndx];
 	  ent->addend = r_addend;
 	  ent->owner = abfd;
 	  ent->tls_type = tls_type;
-	  ent->is_indirect = FALSE;
+	  ent->is_indirect = false;
 	  ent->got.refcount = 0;
 	  local_got_ents[r_symndx] = ent;
 	}
@@ -4438,7 +4670,7 @@ update_local_sym_info (bfd *abfd, Elf_In
   return local_plt + r_symndx;
 }
 
-static bfd_boolean
+static bool
 update_plt_info (bfd *abfd, struct plt_entry **plist, bfd_vma addend)
 {
   struct plt_entry *ent;
@@ -4448,24 +4680,25 @@ 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;
+	return false;
       ent->next = *plist;
       ent->addend = addend;
       ent->plt.refcount = 0;
       *plist = ent;
     }
   ent->plt.refcount += 1;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 is_branch_reloc (enum elf_ppc64_reloc_type r_type)
 {
   return (r_type == R_PPC64_REL24
 	  || r_type == R_PPC64_REL24_NOTOC
+	  || r_type == R_PPC64_REL24_P9NOTOC
 	  || r_type == R_PPC64_REL14
 	  || r_type == R_PPC64_REL14_BRTAKEN
 	  || r_type == R_PPC64_REL14_BRNTAKEN
@@ -4479,7 +4712,7 @@ is_branch_reloc (enum elf_ppc64_reloc_ty
 
 /* Relocs on inline plt call sequence insns prior to the call.  */
 
-static bfd_boolean
+static bool
 is_plt_seq_reloc (enum elf_ppc64_reloc_type r_type)
 {
   return (r_type == R_PPC64_PLT16_HA
@@ -4492,11 +4725,49 @@ is_plt_seq_reloc (enum elf_ppc64_reloc_t
 	  || r_type == R_PPC64_PLTSEQ_NOTOC);
 }
 
+/* Of relocs which might appear paired with TLSGD and TLSLD marker
+   relocs, return true for those that operate on a dword.  */
+
+static bool
+is_8byte_reloc (enum elf_ppc64_reloc_type r_type)
+{
+  return (r_type == R_PPC64_PLT_PCREL34
+	  || r_type == R_PPC64_PLT_PCREL34_NOTOC
+	  || r_type == R_PPC64_PLTCALL);
+}
+
+/* The RELR encoding doesn't allow odd addresses, so RELR_ALIGN must
+   be at least 1.  R_PPC64_RELATIVE relocs require alignment of 2**3.
+   We use 3 here to avoid complexity in relocate_section, where for a
+   value of 1 we'd need to test for not just an output RELATIVE reloc
+   near the call to maybe_relr but also UADDR64 and some conditions on
+   the symbol.  See PR30824.  */
+#define RELR_ALIGN 3
+
+static bool
+maybe_relr (enum elf_ppc64_reloc_type r_type,
+	    const Elf_Internal_Rela *rel,
+	    const asection *sec)
+{
+  return ((r_type == R_PPC64_ADDR64 || r_type == R_PPC64_TOC)
+	  && (rel->r_offset & ((1 << RELR_ALIGN) - 1)) == 0
+	  && sec->alignment_power >= RELR_ALIGN);
+}
+
+/* Like bfd_reloc_offset_in_range but without a howto.  Return true
+   iff a field of SIZE bytes at OFFSET is within SEC limits.  */
+
+static bool
+offset_in_range (asection *sec, bfd_vma offset, size_t size)
+{
+  return offset <= sec->size && size <= sec->size - offset;
+}
+
 /* Look through the relocs for a section during the first phase, and
    calculate needed space in the global offset table, procedure
    linkage table, and dynamic reloc sections.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -4507,30 +4778,21 @@ ppc64_elf_check_relocs (bfd *abfd, struc
   const Elf_Internal_Rela *rel_end;
   asection *sreloc;
   struct elf_link_hash_entry *tga, *dottga;
-  bfd_boolean is_opd;
+  bool is_opd;
 
   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;
+    return true;
 
   BFD_ASSERT (is_ppc64_elf (abfd));
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   tga = elf_link_hash_lookup (&htab->elf, "__tls_get_addr",
-			      FALSE, FALSE, TRUE);
+			      false, false, true);
   dottga = elf_link_hash_lookup (&htab->elf, ".__tls_get_addr",
-				 FALSE, FALSE, TRUE);
+				 false, false, true);
   symtab_hdr = &elf_symtab_hdr (abfd);
   sym_hashes = elf_sym_hashes (abfd);
   sreloc = NULL;
@@ -4540,6 +4802,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
     {
       unsigned long r_symndx;
       struct elf_link_hash_entry *h;
+      Elf_Internal_Sym *isym;
       enum elf_ppc64_reloc_type r_type;
       int tls_type;
       struct _ppc64_elf_section_data *ppc64_sec;
@@ -4547,9 +4810,15 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 
       r_symndx = ELF64_R_SYM (rel->r_info);
       if (r_symndx < symtab_hdr->sh_info)
-	h = NULL;
+	{
+	  h = NULL;
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, abfd, r_symndx);
+	  if (isym == NULL)
+	    return false;
+	}
       else
 	{
+	  isym = NULL;
 	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 	  h = elf_follow_link (h);
 
@@ -4569,14 +4838,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,35 +4889,39 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	}
       else
 	{
-	  Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-							  abfd, r_symndx);
-	  if (isym == NULL)
-	    return FALSE;
-
 	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
 	      ifunc = update_local_sym_info (abfd, symtab_hdr, r_symndx,
 					     rel->r_addend,
 					     NON_GOT | PLT_IFUNC);
 	      if (ifunc == NULL)
-		return FALSE;
+		return false;
 	    }
 	}
 
       tls_type = 0;
       switch (r_type)
 	{
+	case R_PPC64_PLTSEQ:
+	case R_PPC64_PLTSEQ_NOTOC:
+	  /* Inline plt call code emitted by gcc doesn't support
+	     modifying the tls_index words to short-circuit
+	     __tls_get_addr calls.  See PR32387.  */
+	  if (h != NULL && (h == tga || h == dottga))
+	    htab->params->tls_get_addr_opt = 0;
+	  break;
+
 	case R_PPC64_TLSGD:
 	case R_PPC64_TLSLD:
 	  /* 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,
 					NON_GOT | TLS_TLS | TLS_MARK))
-	      return FALSE;
+	      return false;
 	  sec->has_tls_reloc = 1;
 	  break;
 
@@ -4656,7 +4929,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 +4937,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 +4945,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 +4955,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;
@@ -4711,14 +4984,14 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 
 	  if (ppc64_elf_tdata (abfd)->got == NULL
 	      && !create_got_section (abfd, info))
-	    return FALSE;
+	    return false;
 
 	  if (h != NULL)
 	    {
 	      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,15 +4999,15 @@ 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;
+		    return false;
 		  ent->next = eh->elf.got.glist;
 		  ent->addend = rel->r_addend;
 		  ent->owner = abfd;
 		  ent->tls_type = tls_type;
-		  ent->is_indirect = FALSE;
+		  ent->is_indirect = false;
 		  ent->got.refcount = 0;
 		  eh->elf.got.glist = ent;
 		}
@@ -4745,15 +5018,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	    /* This is a global offset table entry for a local symbol.  */
 	    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;
-	    }
+	      return false;
 	  break;
 
 	case R_PPC64_PLT16_HA:
@@ -4771,8 +5036,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)
@@ -4780,7 +5045,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 					      rel->r_addend,
 					      NON_GOT | PLT_KEEP);
 	  if (!update_plt_info (abfd, plt_list, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* The following relocations don't need to propagate the
@@ -4831,12 +5096,12 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      if (!ppc64_elf_howto_table[R_PPC64_ADDR32])
 		ppc_howto_init ();
 	      /* xgettext:c-format */
-	      info->callbacks->einfo (_("%H: %s reloc unsupported "
+	      info->callbacks->einfo (_("%H: %s unsupported "
 					"in shared libraries and PIEs\n"),
 				      abfd, sec, rel->r_offset,
 				      ppc64_elf_howto_table[r_type]->name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 
@@ -4870,14 +5135,14 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	     Reconstruct it for later use during GC.  */
 	case R_PPC64_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_PPC64_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_PPC64_REL14:
@@ -4896,16 +5161,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 		  dest = h->root.u.def.section;
 	      }
 	    else
-	      {
-		Elf_Internal_Sym *isym;
-
-		isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-					      abfd, r_symndx);
-		if (isym == NULL)
-		  return FALSE;
-
-		dest = bfd_section_from_elf_index (abfd, isym->st_shndx);
-	      }
+	      dest = bfd_section_from_elf_index (abfd, isym->st_shndx);
 
 	    if (dest != sec)
 	      ppc64_elf_section_data (sec)->has_14bit_branch = 1;
@@ -4919,6 +5175,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 
 	case R_PPC64_REL24:
 	case R_PPC64_REL24_NOTOC:
+	case R_PPC64_REL24_P9NOTOC:
 	rel24:
 	  plt_list = ifunc;
 	  if (h != NULL)
@@ -4926,7 +5183,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)
 		{
@@ -4948,7 +5205,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	     refers to is in a shared lib.  */
 	  if (plt_list
 	      && !update_plt_info (abfd, plt_list, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_PPC64_ADDR14:
@@ -4984,18 +5241,14 @@ 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))
-	      return FALSE;
+	      return false;
 
 	  ppc64_sec = ppc64_elf_section_data (sec);
-	  if (ppc64_sec->sec_type != sec_toc)
+	  if (ppc64_sec->sec_type == sec_normal)
 	    {
 	      bfd_size_type amt;
 
@@ -5003,15 +5256,22 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      amt = sec->size * sizeof (unsigned) / 8 + sizeof (unsigned);
 	      ppc64_sec->u.toc.symndx = bfd_zalloc (abfd, amt);
 	      if (ppc64_sec->u.toc.symndx == NULL)
-		return FALSE;
+		return false;
 	      amt = sec->size * sizeof (bfd_vma) / 8;
 	      ppc64_sec->u.toc.add = bfd_zalloc (abfd, amt);
 	      if (ppc64_sec->u.toc.add == NULL)
-		return FALSE;
-	      BFD_ASSERT (ppc64_sec->sec_type == sec_normal);
+		return false;
 	      ppc64_sec->sec_type = sec_toc;
 	    }
-	  BFD_ASSERT (rel->r_offset % 8 == 0);
+	  if (ppc64_sec->sec_type != sec_toc
+	      || rel->r_offset % 8 != 0)
+	    {
+	      info->callbacks->einfo (_("%H: %s unsupported here\n"),
+				      abfd, sec, rel->r_offset,
+				      ppc64_elf_howto_table[r_type]->name);
+	      bfd_set_error (bfd_error_bad_value);
+	      return false;
+	    }
 	  ppc64_sec->u.toc.symndx[rel->r_offset / 8] = r_symndx;
 	  ppc64_sec->u.toc.add[rel->r_offset / 8] = rel->r_addend;
 
@@ -5023,19 +5283,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 +5308,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.  */
 
@@ -5077,7 +5339,7 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      /* We may need a .plt entry if this reloc refers to a
 		 function in a shared lib.  */
 	      if (!update_plt_info (abfd, &h->plt.plist, 0))
-		return FALSE;
+		return false;
 	      h->pointer_equality_needed = 1;
 	    }
 	  /* Fall through.  */
@@ -5098,35 +5360,21 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	  if (NO_OPD_RELOCS && is_opd)
 	    break;
 
-	  /* If we are creating a shared library, and this is a reloc
-	     against a global symbol, or a non PC relative reloc
-	     against a local symbol, then we need to copy the reloc
-	     into the shared library.  However, if we are linking with
-	     -Bsymbolic, we do not need to copy a reloc against a
-	     global symbol which is defined in an object we are
-	     including in the link (i.e., DEF_REGULAR is set).  At
-	     this point we have not seen all the input files, so it is
-	     possible that DEF_REGULAR is not set now but will be set
-	     later (it is never cleared).  In case of a weak definition,
-	     DEF_REGULAR may be cleared later by a strong definition in
-	     a shared library.  We account for that possibility below by
-	     storing information in the dyn_relocs field of the hash
-	     table entry.  A similar situation occurs when creating
-	     shared libraries and symbol visibility changes render the
-	     symbol local.
-
-	     If on the other hand, we are creating an executable, we
-	     may need to keep relocations for symbols satisfied by a
-	     dynamic library if we manage to avoid copy relocs for the
-	     symbol.  */
+	  /* Set up information for symbols that might need dynamic
+	     relocations.  At this point in linking we have read all
+	     the input files and resolved most symbols, but have not
+	     yet decided whether symbols are dynamic or finalized
+	     symbol flags.  In some cases we might be setting dynamic
+	     reloc info for symbols that do not end up needing such.
+	     That's OK, adjust_dynamic_symbol and allocate_dynrelocs
+	     work together with this code.  */
 	dodyn:
 	  if ((h != NULL
-	       && (h->root.type == bfd_link_hash_defweak
-		   || !h->def_regular))
-	      || (h != NULL
-		  && !bfd_link_executable (info)
-		  && !SYMBOLIC_BIND (info, h))
+	       && !SYMBOL_REFERENCES_LOCAL (info, h))
 	      || (bfd_link_pic (info)
+		  && (h != NULL
+		      ? !bfd_is_abs_symbol (&h->root)
+		      : isym->st_shndx != SHN_ABS)
 		  && must_be_dyn_reloc (info, r_type))
 	      || (!bfd_link_pic (info)
 		  && ifunc != NULL))
@@ -5137,59 +5385,54 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	      if (sreloc == NULL)
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, 3, abfd, /*rela?*/ TRUE);
+		    (sec, htab->elf.dynobj, 3, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* If this is a global symbol, we count the number of
 		 relocations we need for this symbol.  */
 	      if (h != NULL)
 		{
-		  struct elf_dyn_relocs *p;
-		  struct elf_dyn_relocs **head;
+		  struct ppc_dyn_relocs *p;
+		  struct ppc_dyn_relocs **head;
 
-		  head = &((struct ppc_link_hash_entry *) h)->dyn_relocs;
+		  head = (struct ppc_dyn_relocs **) &h->dyn_relocs;
 		  p = *head;
 		  if (p == NULL || p->sec != sec)
 		    {
 		      p = bfd_alloc (htab->elf.dynobj, sizeof *p);
 		      if (p == NULL)
-			return FALSE;
+			return false;
 		      p->next = *head;
 		      *head = p;
 		      p->sec = sec;
 		      p->count = 0;
 		      p->pc_count = 0;
+		      p->rel_count = 0;
 		    }
 		  p->count += 1;
 		  if (!must_be_dyn_reloc (info, r_type))
 		    p->pc_count += 1;
+		  if (maybe_relr (r_type, rel, sec))
+		    p->rel_count += 1;
 		}
 	      else
 		{
-		  /* Track dynamic relocs needed for local syms too.
-		     We really need local syms available to do this
-		     easily.  Oh well.  */
-		  struct ppc_dyn_relocs *p;
-		  struct ppc_dyn_relocs **head;
-		  bfd_boolean is_ifunc;
+		  /* Track dynamic relocs needed for local syms too.  */
+		  struct ppc_local_dyn_relocs *p;
+		  struct ppc_local_dyn_relocs **head;
+		  bool is_ifunc;
 		  asection *s;
 		  void *vpp;
-		  Elf_Internal_Sym *isym;
-
-		  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-						abfd, r_symndx);
-		  if (isym == NULL)
-		    return FALSE;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
 		    s = sec;
 
 		  vpp = &elf_section_data (s)->local_dynrel;
-		  head = (struct ppc_dyn_relocs **) vpp;
+		  head = (struct ppc_local_dyn_relocs **) vpp;
 		  is_ifunc = ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC;
 		  p = *head;
 		  if (p != NULL && p->sec == sec && p->ifunc != is_ifunc)
@@ -5198,14 +5441,17 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 		    {
 		      p = bfd_alloc (htab->elf.dynobj, sizeof *p);
 		      if (p == NULL)
-			return FALSE;
+			return false;
 		      p->next = *head;
 		      *head = p;
 		      p->sec = sec;
-		      p->ifunc = is_ifunc;
 		      p->count = 0;
+		      p->rel_count = 0;
+		      p->ifunc = is_ifunc;
 		    }
 		  p->count += 1;
+		  if (maybe_relr (r_type, rel, sec))
+		    p->rel_count += 1;
 		}
 	    }
 	  break;
@@ -5215,26 +5461,26 @@ ppc64_elf_check_relocs (bfd *abfd, struc
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   unsigned long iflags, oflags;
 
   if ((ibfd->flags & BFD_LINKER_CREATED) != 0)
-    return TRUE;
+    return true;
 
   if (!is_ppc64_elf (ibfd) || !is_ppc64_elf (obfd))
-    return TRUE;
+    return true;
 
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   iflags = elf_elfheader (ibfd)->e_flags;
   oflags = elf_elfheader (obfd)->e_flags;
@@ -5245,7 +5491,7 @@ ppc64_elf_merge_private_bfd_data (bfd *i
 	/* xgettext:c-format */
 	(_("%pB uses unknown e_flags 0x%lx"), ibfd, iflags);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   else if (iflags != oflags && iflags != 0)
     {
@@ -5254,17 +5500,17 @@ ppc64_elf_merge_private_bfd_data (bfd *i
 	(_("%pB: ABI version %ld is not compatible with ABI version %ld output"),
 	 ibfd, iflags, oflags);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   if (!_bfd_elf_ppc_merge_fp_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
   return _bfd_elf_merge_object_attributes (ibfd, info);
 }
 
-static bfd_boolean
+static bool
 ppc64_elf_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   /* Print normal ELF private data.  */
@@ -5283,7 +5529,7 @@ ppc64_elf_print_private_bfd_data (bfd *a
       fputc ('\n', file);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* OFFSET in OPD_SEC specifies a function descriptor.  Return the address
@@ -5295,24 +5541,33 @@ opd_entry_value (asection *opd_sec,
 		 bfd_vma offset,
 		 asection **code_sec,
 		 bfd_vma *code_off,
-		 bfd_boolean in_code_sec)
+		 bool in_code_sec)
 {
   bfd *opd_bfd = opd_sec->owner;
   Elf_Internal_Rela *relocs;
   Elf_Internal_Rela *lo, *hi, *look;
   bfd_vma val;
 
+  if (!is_ppc64_elf (opd_bfd))
+    return (bfd_vma) -1;
+
+  if (ppc64_elf_section_data (opd_sec)->sec_type == sec_normal)
+    ppc64_elf_section_data (opd_sec)->sec_type = sec_opd;
+  else if (ppc64_elf_section_data (opd_sec)->sec_type != sec_opd)
+    return (bfd_vma) -1;
+
   /* No relocs implies we are linking a --just-symbols object, or looking
      at a final linked executable with addr2line or somesuch.  */
   if (opd_sec->reloc_count == 0)
     {
-      bfd_byte *contents = ppc64_elf_tdata (opd_bfd)->opd.contents;
+      bfd_byte *contents = ppc64_elf_section_data (opd_sec)->u.opd.u.contents;
 
       if (contents == NULL)
 	{
-	  if (!bfd_malloc_and_get_section (opd_bfd, opd_sec, &contents))
+	  if ((opd_sec->flags & SEC_HAS_CONTENTS) == 0
+	      || !bfd_malloc_and_get_section (opd_bfd, opd_sec, &contents))
 	    return (bfd_vma) -1;
-	  ppc64_elf_tdata (opd_bfd)->opd.contents = contents;
+	  ppc64_elf_section_data (opd_sec)->u.opd.u.contents = contents;
 	}
 
       /* PR 17512: file: 64b9dfbb.  */
@@ -5349,11 +5604,9 @@ opd_entry_value (asection *opd_sec,
       return val;
     }
 
-  BFD_ASSERT (is_ppc64_elf (opd_bfd));
-
-  relocs = ppc64_elf_tdata (opd_bfd)->opd.relocs;
+  relocs = ppc64_elf_section_data (opd_sec)->u.opd.u.relocs;
   if (relocs == NULL)
-    relocs = _bfd_elf_link_read_relocs (opd_bfd, opd_sec, NULL, NULL, TRUE);
+    relocs = _bfd_elf_link_read_relocs (opd_bfd, opd_sec, NULL, NULL, true);
   /* PR 17512: file: df8e1fd6.  */
   if (relocs == NULL)
     return (bfd_vma) -1;
@@ -5429,10 +5682,15 @@ opd_entry_value (asection *opd_sec,
 			break;
 		    }
 		  sec = bfd_section_from_elf_index (opd_bfd, sym->st_shndx);
+		  if (sec != NULL)
+		    {
+		      BFD_ASSERT ((sec->flags & SEC_MERGE) == 0);
+		      val = sym->st_value;
+		    }
+		  if (symndx >= symtab_hdr->sh_info)
+		    free (sym);
 		  if (sec == NULL)
 		    break;
-		  BFD_ASSERT ((sec->flags & SEC_MERGE) == 0);
-		  val = sym->st_value;
 		}
 
 	      val += look->r_addend;
@@ -5464,14 +5722,25 @@ ppc64_elf_maybe_function_sym (const asym
 			      bfd_vma *code_off)
 {
   bfd_size_type size;
+  elf_symbol_type * elf_sym = (elf_symbol_type *) sym;
 
   if ((sym->flags & (BSF_SECTION_SYM | BSF_FILE | BSF_OBJECT
 		     | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC)) != 0)
     return 0;
 
-  size = 0;
-  if (!(sym->flags & BSF_SYNTHETIC))
-    size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
+  size = (sym->flags & BSF_SYNTHETIC) ? 0 : elf_sym->internal_elf_sym.st_size;
+
+  /* In theory we should check that the symbol's type satisfies
+     _bfd_elf_is_function_type(), but there are some function-like
+     symbols which would fail this test.  (eg _start).  Instead
+     we check for hidden, local, notype symbols with zero size.
+     This type of symbol is generated by the annobin plugin for gcc
+     and clang, and should not be considered to be a function symbol.  */
+  if (size == 0
+      && ((sym->flags & (BSF_SYNTHETIC | BSF_LOCAL)) == BSF_LOCAL)
+      && ELF_ST_TYPE (elf_sym->internal_elf_sym.st_info) == STT_NOTYPE
+      && ELF_ST_VISIBILITY (elf_sym->internal_elf_sym.st_other) == STV_HIDDEN)
+    return 0;
 
   if (strcmp (sym->section->name, ".opd") == 0)
     {
@@ -5492,7 +5761,7 @@ ppc64_elf_maybe_function_sym (const asym
 	}
 
       if (opd_entry_value (sym->section, symval,
-			   &sec, code_off, TRUE) == (bfd_vma) -1)
+			   &sec, code_off, true) == (bfd_vma) -1)
 	return 0;
       /* An old ABI binary with dot-syms has a size of 24 on the .opd
 	 symbol.  This size has nothing to do with the code size of the
@@ -5515,30 +5784,30 @@ ppc64_elf_maybe_function_sym (const asym
 	return 0;
       *code_off = sym->value;
     }
-  if (size == 0)
-    size = 1;
-  return size;
+
+  /* Do not return 0 for the function's size.  */
+  return size ? size : 1;
 }
 
 /* Return true if symbol is a strong function defined in an ELFv2
    object with st_other localentry bits of zero, ie. its local entry
    point coincides with its global entry point.  */
 
-static bfd_boolean
+static bool
 is_elfv2_localentry0 (struct elf_link_hash_entry *h)
 {
   return (h != NULL
 	  && 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);
 }
 
 /* Return true if symbol is defined in a regular object file.  */
 
-static bfd_boolean
+static bool
 is_static_defined (struct elf_link_hash_entry *h)
 {
   return ((h->root.type == bfd_link_hash_defined
@@ -5580,11 +5849,34 @@ defined_func_desc (struct ppc_link_hash_
   return NULL;
 }
 
-static bfd_boolean func_desc_adjust (struct elf_link_hash_entry *, void *);
+/* 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 bool
+is_tls_get_addr (struct elf_link_hash_entry *h,
+		 struct ppc_link_hash_table *htab)
+{
+  return (h == elf_hash_entry (htab->tls_get_addr_fd)
+	  || h == elf_hash_entry (htab->tga_desc_fd)
+	  || h == elf_hash_entry (htab->tls_get_addr)
+	  || h == elf_hash_entry (htab->tga_desc));
+}
+
+static bool func_desc_adjust (struct elf_link_hash_entry *, void *);
 
 /* Garbage collect sections, after first dealing with dot-symbols.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_gc_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
@@ -5613,8 +5905,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
@@ -5630,7 +5922,7 @@ ppc64_elf_gc_keep (struct bfd_link_info
       else if (get_opd_info (eh->elf.root.u.def.section) != NULL
 	       && opd_entry_value (eh->elf.root.u.def.section,
 				   eh->elf.root.u.def.value,
-				   &sec, NULL, FALSE) != (bfd_vma) -1)
+				   &sec, NULL, false) != (bfd_vma) -1)
 	sec->flags |= SEC_KEEP;
 
       sec = eh->elf.root.u.def.section;
@@ -5642,11 +5934,11 @@ ppc64_elf_gc_keep (struct bfd_link_info
    building shared libraries, we must assume that any visible symbol is
    referenced.  */
 
-static bfd_boolean
+static bool
 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;
 
@@ -5657,6 +5949,9 @@ ppc64_elf_gc_mark_dynamic_ref (struct el
 
   if ((eh->elf.root.type == bfd_link_hash_defined
        || eh->elf.root.type == bfd_link_hash_defweak)
+      && (!eh->elf.start_stop
+	  || eh->elf.root.ldscript_def
+	  || !info->start_stop_gc)
       && ((eh->elf.ref_dynamic && !eh->elf.forced_local)
 	  || ((eh->elf.def_regular || ELF_COMMON_DEF_P (&eh->elf))
 	      && ELF_ST_VISIBILITY (eh->elf.other) != STV_INTERNAL
@@ -5688,11 +5983,11 @@ ppc64_elf_gc_mark_dynamic_ref (struct el
       else if (get_opd_info (eh->elf.root.u.def.section) != NULL
 	       && opd_entry_value (eh->elf.root.u.def.section,
 				   eh->elf.root.u.def.value,
-				   &code_sec, NULL, FALSE) != (bfd_vma) -1)
+				   &code_sec, NULL, false) != (bfd_vma) -1)
 	code_sec->flags |= SEC_KEEP;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -5730,7 +6025,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)
 		{
@@ -5756,7 +6051,7 @@ ppc64_elf_gc_mark_hook (asection *sec,
 	      else if (get_opd_info (eh->elf.root.u.def.section) != NULL
 		       && opd_entry_value (eh->elf.root.u.def.section,
 					   eh->elf.root.u.def.value,
-					   &rsec, NULL, FALSE) != (bfd_vma) -1)
+					   &rsec, NULL, false) != (bfd_vma) -1)
 		eh->elf.root.u.def.section->gc_mark = 1;
 	      else
 		rsec = h->root.u.def.section;
@@ -5803,7 +6098,7 @@ struct sfpr_def_parms
    If STUB_SEC is non-null, define alias symbols in STUB_SEC
    instead.  */
 
-static bfd_boolean
+static bool
 sfpr_define (struct bfd_link_info *info,
 	     const struct sfpr_def_parms *parm,
 	     asection *stub_sec)
@@ -5811,11 +6106,11 @@ sfpr_define (struct bfd_link_info *info,
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
   unsigned int i;
   size_t len = strlen (parm->name);
-  bfd_boolean writing = FALSE;
+  bool writing = false;
   char sym[16];
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   memcpy (sym, parm->name, len);
   sym[len + 2] = 0;
@@ -5826,8 +6121,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
@@ -5837,9 +6132,9 @@ sfpr_define (struct bfd_link_info *info,
 	      struct elf_link_hash_entry *s;
 	      char buf[32];
 	      sprintf (buf, "%08x.%s", stub_sec->id & 0xffffffff, sym);
-	      s = elf_link_hash_lookup (&htab->elf, buf, TRUE, TRUE, FALSE);
+	      s = elf_link_hash_lookup (&htab->elf, buf, true, true, false);
 	      if (s == NULL)
-		return FALSE;
+		return false;
 	      if (s->root.type == bfd_link_hash_new)
 		{
 		  s->root.type = bfd_link_hash_defined;
@@ -5867,14 +6162,15 @@ sfpr_define (struct bfd_link_info *info,
 	      h->elf.type = STT_FUNC;
 	      h->elf.def_regular = 1;
 	      h->elf.non_elf = 0;
-	      _bfd_elf_link_hash_hide_symbol (info, &h->elf, TRUE);
-	      writing = TRUE;
+	      _bfd_elf_link_hash_hide_symbol (info, &h->elf, true);
+	      writing = true;
 	      if (htab->sfpr->contents == NULL)
 		{
 		  htab->sfpr->contents
 		    = bfd_alloc (htab->elf.dynobj, SFPR_MAX);
 		  if (htab->sfpr->contents == NULL)
-		    return FALSE;
+		    return false;
+		  htab->sfpr->alloced = 1;
 		}
 	    }
 	}
@@ -5889,7 +6185,7 @@ sfpr_define (struct bfd_link_info *info,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static bfd_byte *
@@ -6054,34 +6350,113 @@ 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.  */
+   function descriptor symbol entries.  Must not be called twice for
+   any given code symbol.  */
 
-static bfd_boolean
+static bool
 func_desc_adjust (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
   struct ppc_link_hash_table *htab;
   struct ppc_link_hash_entry *fh;
   struct ppc_link_hash_entry *fdh;
-  bfd_boolean force_local;
+  bool 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;
+    return true;
 
   if (!fh->is_func)
-    return TRUE;
+    return true;
 
   if (fh->elf.root.root.string[0] != '.'
       || fh->elf.root.root.string[1] == '\0')
-    return TRUE;
+    return true;
 
   info = inf;
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Find the corresponding function descriptor symbol.  */
   fdh = lookup_fdh (fh, htab);
@@ -6098,7 +6473,7 @@ func_desc_adjust (struct elf_link_hash_e
       && opd_entry_value (fdh->elf.root.u.def.section,
 			  fdh->elf.root.u.def.value,
 			  &fh->elf.root.u.def.section,
-			  &fh->elf.root.u.def.value, FALSE) != (bfd_vma) -1)
+			  &fh->elf.root.u.def.value, false) != (bfd_vma) -1)
     {
       fh->elf.root.type = fdh->elf.root.type;
       fh->elf.forced_local = 1;
@@ -6114,7 +6489,11 @@ func_desc_adjust (struct elf_link_hash_e
 	if (ent->plt.refcount > 0)
 	  break;
       if (ent == NULL)
-	return TRUE;
+	{
+	  if (fdh != NULL && fdh->fake)
+	    _bfd_elf_link_hash_hide_symbol (info, &fdh->elf, true);
+	  return true;
+	}
     }
 
   /* Create a descriptor as undefined if necessary.  */
@@ -6125,7 +6504,7 @@ func_desc_adjust (struct elf_link_hash_e
     {
       fdh = make_fdh (info, fh);
       if (fdh == NULL)
-	return FALSE;
+	return false;
     }
 
   /* We can't support overriding of symbols on a fake descriptor.  */
@@ -6133,7 +6512,7 @@ func_desc_adjust (struct elf_link_hash_e
       && fdh->fake
       && (fh->elf.root.type == bfd_link_hash_defined
 	  || fh->elf.root.type == bfd_link_hash_defweak))
-    _bfd_elf_link_hash_hide_symbol (info, &fdh->elf, TRUE);
+    _bfd_elf_link_hash_hide_symbol (info, &fdh->elf, true);
 
   /* Transfer dynamic linking information to the function descriptor.  */
   if (fdh != NULL)
@@ -6151,7 +6530,7 @@ func_desc_adjust (struct elf_link_hash_e
       if (!fdh->elf.forced_local
 	  && fh->elf.dynindx != -1)
 	if (!bfd_elf_link_record_dynamic_symbol (info, &fdh->elf))
-	  return FALSE;
+	  return false;
     }
 
   /* Now that the info is on the function descriptor, clear the
@@ -6167,7 +6546,7 @@ func_desc_adjust (struct elf_link_hash_e
 		 || fdh->elf.forced_local);
   _bfd_elf_link_hash_hide_symbol (info, &fh->elf, force_local);
 
-  return TRUE;
+  return true;
 }
 
 static const struct sfpr_def_parms save_res_funcs[] =
@@ -6187,19 +6566,22 @@ static const struct sfpr_def_parms save_
   };
 
 /* Called near the start of bfd_elf_size_dynamic_sections.  We use
-   this hook to a) provide some gcc support functions, and b) transfer
-   dynamic linking information gathered so far on function code symbol
-   entries, to their corresponding function descriptor symbol entries.  */
-
-static bfd_boolean
-ppc64_elf_func_desc_adjust (bfd *obfd ATTRIBUTE_UNUSED,
-			    struct bfd_link_info *info)
+   this hook to a) run the edit functions in this file, b) provide
+   some gcc support functions, and c) transfer dynamic linking
+   information gathered so far on function code symbol entries, to
+   their corresponding function descriptor symbol entries.  */
+
+static bool
+ppc64_elf_edit (bfd *obfd ATTRIBUTE_UNUSED, struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
+
+  /* Call back into the linker, which then runs the edit functions.  */
+  htab->params->edit ();
 
   /* Provide any missing _save* and _rest* functions.  */
   if (htab->sfpr != NULL)
@@ -6209,17 +6591,17 @@ ppc64_elf_func_desc_adjust (bfd *obfd AT
       htab->sfpr->size = 0;
       for (i = 0; i < ARRAY_SIZE (save_res_funcs); i++)
 	if (!sfpr_define (info, &save_res_funcs[i], NULL))
-	  return FALSE;
+	  return false;
       if (htab->sfpr->size == 0)
 	htab->sfpr->flags |= SEC_EXCLUDE;
     }
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   if (htab->elf.hgot != NULL)
     {
-      _bfd_elf_link_hash_hide_symbol (info, htab->elf.hgot, TRUE);
+      _bfd_elf_link_hash_hide_symbol (info, htab->elf.hgot, true);
       /* Make .TOC. defined so as to prevent it being made dynamic.
 	 The wrong value here is fixed later in ppc64_elf_set_toc.  */
       if (!htab->elf.hgot->def_regular
@@ -6236,86 +6618,59 @@ ppc64_elf_func_desc_adjust (bfd *obfd AT
 	= (htab->elf.hgot->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
     }
 
-  if (htab->need_func_desc_adj)
-    {
-      elf_link_hash_traverse (&htab->elf, func_desc_adjust, info);
-      htab->need_func_desc_adj = 0;
-    }
-
-  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;
 }
 
 /* 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.  */
 
-static bfd_boolean
+static bool
 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))
-	return TRUE;
-      eh = (struct ppc_link_hash_entry *) eh->elf.u.alias;
+      if (_bfd_elf_readonly_dynrelocs (&eh->elf))
+	return true;
+      eh = ppc_elf_hash_entry (eh->elf.u.alias);
     }
   while (eh != NULL && &eh->elf != h);
 
-  return FALSE;
+  return false;
 }
 
 /* Return whether EH has pc-relative dynamic relocs.  */
 
-static bfd_boolean
+static bool
 pc_dynrelocs (struct ppc_link_hash_entry *eh)
 {
-  struct elf_dyn_relocs *p;
+  struct ppc_dyn_relocs *p;
 
-  for (p = eh->dyn_relocs; p != NULL; p = p->next)
+  for (p = (struct ppc_dyn_relocs *) eh->elf.dyn_relocs; p != NULL; p = p->next)
     if (p->pc_count != 0)
-      return TRUE;
-  return FALSE;
+      return true;
+  return false;
 }
 
 /* Return true if a global entry stub will be created for H.  Valid
    for ELFv2 before plt entries have been allocated.  */
 
-static bfd_boolean
+static bool
 global_entry_stub (struct elf_link_hash_entry *h)
 {
   struct plt_entry *pent;
 
   if (!h->pointer_equality_needed
       || h->def_regular)
-    return FALSE;
+    return false;
 
   for (pent = h->plt.plist; pent != NULL; pent = pent->next)
     if (pent->plt.refcount > 0
 	&& pent->addend == 0)
-      return TRUE;
+      return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -6324,7 +6679,7 @@ global_entry_stub (struct elf_link_hash_
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				 struct elf_link_hash_entry *h)
 {
@@ -6333,16 +6688,16 @@ ppc64_elf_adjust_dynamic_symbol (struct
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Deal with function syms.  */
   if (h->type == STT_FUNC
       || h->type == STT_GNU_IFUNC
       || h->needs_plt)
     {
-      bfd_boolean local = (((struct ppc_link_hash_entry *) h)->save_res
-			   || SYMBOL_CALLS_LOCAL (info, h)
-			   || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
+      bool 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
 	 function symbol is local and not an ifunc.  We keep dynamic
 	 relocs for ifuncs when local rather than always emitting a
@@ -6355,7 +6710,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 +6722,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 +6740,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,20 +6751,20 @@ 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;
+	  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.  */
 	  h->plt.plist = NULL;
 	  h->pointer_equality_needed = 0;
-	  return TRUE;
+	  return true;
 	}
     }
   else
@@ -6426,8 +6781,8 @@ 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;
-      return TRUE;
+	h->dyn_relocs = NULL;
+      return true;
     }
 
   /* If we are creating a shared library, we must presume that the
@@ -6435,12 +6790,12 @@ ppc64_elf_adjust_dynamic_symbol (struct
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (!bfd_link_executable (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* Don't generate a copy reloc for symbols defined in the executable.  */
   if (!h->def_dynamic || !h->ref_regular || h->def_regular
@@ -6459,15 +6814,25 @@ ppc64_elf_adjust_dynamic_symbol (struct
 	 definition for the variable.  Text relocations are preferable
 	 to an incorrect program.  */
       || h->protected_def)
-    return TRUE;
+    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 +6871,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);
 }
 
@@ -6515,7 +6880,7 @@ ppc64_elf_adjust_dynamic_symbol (struct
 static void
 ppc64_elf_hide_symbol (struct bfd_link_info *info,
 		       struct elf_link_hash_entry *h,
-		       bfd_boolean force_local)
+		       bool force_local)
 {
   struct ppc_link_hash_entry *eh;
   _bfd_elf_link_hash_hide_symbol (info, h, force_local);
@@ -6523,7 +6888,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 +6911,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 +6925,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)
 	    {
@@ -6574,7 +6939,7 @@ ppc64_elf_hide_symbol (struct bfd_link_i
     }
 }
 
-static bfd_boolean
+static bool
 get_sym_h (struct elf_link_hash_entry **hp,
 	   Elf_Internal_Sym **symp,
 	   asection **symsecp,
@@ -6609,12 +6974,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
     {
@@ -6629,7 +6989,7 @@ get_sym_h (struct elf_link_hash_entry **
 					    symtab_hdr->sh_info,
 					    0, NULL, NULL, NULL);
 	  if (locsyms == NULL)
-	    return FALSE;
+	    return false;
 	  *locsymsp = locsyms;
 	}
       sym = locsyms + r_symndx;
@@ -6661,7 +7021,7 @@ get_sym_h (struct elf_link_hash_entry **
 	  *tls_maskp = tls_mask;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Returns TLS_MASKP for the given REL symbol.  Function return is 0 on
@@ -6771,7 +7131,7 @@ tocsave_find (struct ppc_link_hash_table
 /* Adjust all global syms defined in opd sections.  In gcc generated
    code for the old ABI, these will already have been done.  */
 
-static bfd_boolean
+static bool
 adjust_opd_syms (struct elf_link_hash_entry *h, void *inf ATTRIBUTE_UNUSED)
 {
   struct ppc_link_hash_entry *eh;
@@ -6779,15 +7139,15 @@ adjust_opd_syms (struct elf_link_hash_en
   struct _opd_sec_data *opd;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   if (h->root.type != bfd_link_hash_defined
       && h->root.type != bfd_link_hash_defweak)
-    return TRUE;
+    return true;
 
-  eh = (struct ppc_link_hash_entry *) h;
+  eh = ppc_elf_hash_entry (h);
   if (eh->adjust_done)
-    return TRUE;
+    return true;
 
   sym_sec = eh->elf.root.u.def.section;
   opd = get_opd_info (sym_sec);
@@ -6814,15 +7174,15 @@ adjust_opd_syms (struct elf_link_hash_en
 	eh->elf.root.u.def.value += adjust;
       eh->adjust_done = 1;
     }
-  return TRUE;
+  return true;
 }
 
 /* Handles decrementing dynamic reloc counts for the reloc specified by
    R_INFO in section SEC.  If LOCAL_SYMS is NULL, then H and SYM
    have already been determined.  */
 
-static bfd_boolean
-dec_dynrel_count (bfd_vma r_info,
+static bool
+dec_dynrel_count (const Elf_Internal_Rela *rel,
 		  asection *sec,
 		  struct bfd_link_info *info,
 		  Elf_Internal_Sym **local_syms,
@@ -6834,11 +7194,11 @@ dec_dynrel_count (bfd_vma r_info,
 
   /* Can this reloc be dynamic?  This switch, and later tests here
      should be kept in sync with the code in check_relocs.  */
-  r_type = ELF64_R_TYPE (r_info);
+  r_type = ELF64_R_TYPE (rel->r_info);
   switch (r_type)
     {
     default:
-      return TRUE;
+      return true;
 
     case R_PPC64_TOC16:
     case R_PPC64_TOC16_DS:
@@ -6847,7 +7207,7 @@ dec_dynrel_count (bfd_vma r_info,
     case R_PPC64_TOC16_HA:
     case R_PPC64_TOC16_LO_DS:
       if (h == NULL)
-	return TRUE;
+	return true;
       break;
 
     case R_PPC64_TPREL16:
@@ -6908,18 +7268,17 @@ dec_dynrel_count (bfd_vma r_info,
       unsigned long r_symndx;
       bfd *ibfd = sec->owner;
 
-      r_symndx = ELF64_R_SYM (r_info);
+      r_symndx = ELF64_R_SYM (rel->r_info);
       if (!get_sym_h (&h, &sym, &sym_sec, NULL, local_syms, r_symndx, ibfd))
-	return FALSE;
+	return false;
     }
 
   if ((h != NULL
-       && (h->root.type == bfd_link_hash_defweak
-	   || !h->def_regular))
-      || (h != NULL
-	  && !bfd_link_executable (info)
-	  && !SYMBOLIC_BIND (info, h))
+       && !SYMBOL_REFERENCES_LOCAL (info, h))
       || (bfd_link_pic (info)
+	  && (h != NULL
+	      ? !bfd_is_abs_symbol (&h->root)
+	      : sym_sec != bfd_abs_section_ptr)
 	  && must_be_dyn_reloc (info, r_type))
       || (!bfd_link_pic (info)
 	  && (h != NULL
@@ -6927,20 +7286,20 @@ dec_dynrel_count (bfd_vma r_info,
 	      : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)))
     ;
   else
-    return TRUE;
+    return true;
 
   if (h != NULL)
     {
-      struct elf_dyn_relocs *p;
-      struct elf_dyn_relocs **pp;
-      pp = &((struct ppc_link_hash_entry *) h)->dyn_relocs;
+      struct ppc_dyn_relocs *p;
+      struct ppc_dyn_relocs **pp;
+      pp = (struct ppc_dyn_relocs **) &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
 	 changed by elf_gc_sweep_symbol, confusing the test above.  Don't
 	 report a dynreloc miscount.  */
       if (*pp == NULL && info->gc_sections)
-	return TRUE;
+	return true;
 
       while ((p = *pp) != NULL)
 	{
@@ -6948,20 +7307,22 @@ dec_dynrel_count (bfd_vma r_info,
 	    {
 	      if (!must_be_dyn_reloc (info, r_type))
 		p->pc_count -= 1;
+	      if (maybe_relr (r_type, rel, sec))
+		p->rel_count -= 1;
 	      p->count -= 1;
 	      if (p->count == 0)
 		*pp = p->next;
-	      return TRUE;
+	      return true;
 	    }
 	  pp = &p->next;
 	}
     }
   else
     {
-      struct ppc_dyn_relocs *p;
-      struct ppc_dyn_relocs **pp;
+      struct ppc_local_dyn_relocs *p;
+      struct ppc_local_dyn_relocs **pp;
       void *vpp;
-      bfd_boolean is_ifunc;
+      bool is_ifunc;
 
       if (local_syms == NULL)
 	sym_sec = bfd_section_from_elf_index (sec->owner, sym->st_shndx);
@@ -6969,20 +7330,22 @@ dec_dynrel_count (bfd_vma r_info,
 	sym_sec = sec;
 
       vpp = &elf_section_data (sym_sec)->local_dynrel;
-      pp = (struct ppc_dyn_relocs **) vpp;
+      pp = (struct ppc_local_dyn_relocs **) vpp;
 
       if (*pp == NULL && info->gc_sections)
-	return TRUE;
+	return true;
 
       is_ifunc = ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC;
       while ((p = *pp) != NULL)
 	{
 	  if (p->sec == sec && p->ifunc == is_ifunc)
 	    {
+	      if (maybe_relr (r_type, rel, sec))
+		p->rel_count -= 1;
 	      p->count -= 1;
 	      if (p->count == 0)
 		*pp = p->next;
-	      return TRUE;
+	      return true;
 	    }
 	  pp = &p->next;
 	}
@@ -6992,7 +7355,7 @@ dec_dynrel_count (bfd_vma r_info,
   _bfd_error_handler (_("dynreloc miscount for %pB, section %pA"),
 		      sec->owner, sec);
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
 
 /* Remove unused Official Procedure Descriptor entries.  Currently we
@@ -7001,17 +7364,17 @@ dec_dynrel_count (bfd_vma r_info,
    would be possible to remove many more entries for statically linked
    applications.  */
 
-bfd_boolean
+bool
 ppc64_elf_edit_opd (struct bfd_link_info *info)
 {
   bfd *ibfd;
-  bfd_boolean some_edited = FALSE;
+  bool some_edited = false;
   asection *need_pad = NULL;
   struct ppc_link_hash_table *htab;
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
     {
@@ -7020,14 +7383,16 @@ ppc64_elf_edit_opd (struct bfd_link_info
       Elf_Internal_Shdr *symtab_hdr;
       Elf_Internal_Sym *local_syms;
       struct _opd_sec_data *opd;
-      bfd_boolean need_edit, add_aux_fields, broken;
+      bool need_edit, add_aux_fields, broken;
       bfd_size_type cnt_16b = 0;
 
       if (!is_ppc64_elf (ibfd))
 	continue;
 
       sec = bfd_get_section_by_name (ibfd, ".opd");
-      if (sec == NULL || sec->size == 0)
+      if (sec == NULL
+	  || sec->size == 0
+	  || (sec->flags & SEC_HAS_CONTENTS) == 0)
 	continue;
 
       if (sec->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
@@ -7047,12 +7412,12 @@ ppc64_elf_edit_opd (struct bfd_link_info
       relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
 					    info->keep_memory);
       if (relstart == NULL)
-	return FALSE;
+	return false;
 
       /* First run through the relocs to check they are sane, and to
 	 determine whether we need to edit this opd section.  */
-      need_edit = FALSE;
-      broken = FALSE;
+      need_edit = false;
+      broken = false;
       need_pad = sec;
       relend = relstart + sec->reloc_count;
       for (rel = relstart; rel < relend; )
@@ -7079,7 +7444,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	    broken_opd:
 	      _bfd_error_handler
 		(_("%pB: .opd is not a regular array of opd entries"), ibfd);
-	      broken = TRUE;
+	      broken = true;
 	      break;
 	    }
 
@@ -7090,7 +7455,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 		/* xgettext:c-format */
 		(_("%pB: unexpected reloc type %u in .opd section"),
 		 ibfd, r_type);
-	      broken = TRUE;
+	      broken = true;
 	      break;
 	    }
 
@@ -7112,7 +7477,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 		/* xgettext:c-format */
 		(_("%pB: undefined sym `%s' in .opd section"),
 		 ibfd, sym_name);
-	      broken = TRUE;
+	      broken = true;
 	      break;
 	    }
 
@@ -7125,7 +7490,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	     which we test for via the output_section.  */
 	  if (sym_sec->owner != ibfd
 	      || sym_sec->output_section == bfd_abs_section_ptr)
-	    need_edit = TRUE;
+	    need_edit = true;
 
 	  rel += 2;
 	  if (rel + 1 == relend
@@ -7175,7 +7540,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	  opd = &ppc64_elf_section_data (sec)->u.opd;
 	  opd->adjust = bfd_zalloc (sec->owner, amt);
 	  if (opd->adjust == NULL)
-	    return FALSE;
+	    return false;
 
 	  /* This seems a waste of time as input .opd sections are all
 	     zeros as generated by gcc, but I suppose there's no reason
@@ -7186,15 +7551,13 @@ 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);
-		  return FALSE;
+		  return false;
 		}
 	      sec->contents = loc;
 	      sec->flags |= (SEC_IN_MEMORY | SEC_HAS_CONTENTS);
@@ -7207,7 +7570,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	    {
 	      new_contents = bfd_malloc (sec->size + cnt_16b * 8);
 	      if (new_contents == NULL)
-		return FALSE;
+		return false;
 	      need_pad = NULL;
 	    }
 	  wptr = new_contents;
@@ -7222,7 +7585,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	      Elf_Internal_Sym *sym;
 	      long opd_ent_size;
 	      Elf_Internal_Rela *next_rel;
-	      bfd_boolean skip;
+	      bool skip;
 
 	      r_symndx = ELF64_R_SYM (rel->r_info);
 	      if (!get_sym_h (&h, &sym, &sym_sec, NULL, &local_syms,
@@ -7250,7 +7613,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);
@@ -7278,7 +7641,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 		  else
 		    while (1)
 		      {
-			if (!dec_dynrel_count (rel->r_info, sec, info,
+			if (!dec_dynrel_count (rel, sec, info,
 					       NULL, h, sym))
 			  goto error_ret;
 
@@ -7353,7 +7716,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	     elf_bfd_final_link if we are emitting relocs.  */
 	  rel_hdr = _bfd_elf_single_rel_hdr (sec);
 	  rel_hdr->sh_size = sec->reloc_count * rel_hdr->sh_entsize;
-	  some_edited = TRUE;
+	  some_edited = true;
 	}
       else if (elf_section_data (sec)->relocs != relstart)
 	free (relstart);
@@ -7383,11 +7746,11 @@ ppc64_elf_edit_opd (struct bfd_link_info
 
 	  p = bfd_malloc (need_pad->size + 8);
 	  if (p == NULL)
-	    return FALSE;
+	    return false;
 
 	  if (!bfd_get_section_contents (need_pad->owner, need_pad,
 					 p, 0, need_pad->size))
-	    return FALSE;
+	    return false;
 
 	  need_pad->contents = p;
 	  need_pad->flags |= (SEC_IN_MEMORY | SEC_HAS_CONTENTS);
@@ -7396,7 +7759,7 @@ ppc64_elf_edit_opd (struct bfd_link_info
 	{
 	  p = bfd_realloc (need_pad->contents, need_pad->size + 8);
 	  if (p == NULL)
-	    return FALSE;
+	    return false;
 
 	  need_pad->contents = p;
 	}
@@ -7405,13 +7768,13 @@ ppc64_elf_edit_opd (struct bfd_link_info
       need_pad->size += 8;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Analyze inline PLT call relocations to see whether calls to locally
    defined functions can be converted to direct calls.  */
 
-bfd_boolean
+bool
 ppc64_elf_inline_plt (struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
@@ -7421,7 +7784,7 @@ ppc64_elf_inline_plt (struct bfd_link_in
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* A bl insn can reach -0x2000000 to 0x1fffffc.  The limit is
      reduced somewhat to cater for possible stubs that might be added
@@ -7456,7 +7819,7 @@ ppc64_elf_inline_plt (struct bfd_link_in
   if (high_vma - low_vma < limit)
     {
       htab->can_convert_all_inline_plt = 1;
-      return TRUE;
+      return true;
     }
 
   /* Otherwise, go looking through relocs for cases where a direct
@@ -7493,10 +7856,10 @@ ppc64_elf_inline_plt (struct bfd_link_in
 	    relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
 						  info->keep_memory);
 	    if (relstart == NULL)
-	      return FALSE;
+	      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,10 +7879,9 @@ 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;
+		    return false;
 		  }
 
 		if (sym_sec != NULL && sym_sec->output_section != NULL)
@@ -7557,19 +7919,29 @@ ppc64_elf_inline_plt (struct bfd_link_in
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-/* Set htab->tls_get_addr and call the generic ELF tls_setup function.  */
+/* Set htab->tls_get_addr and various other info specific to TLS.
+   This needs to run before dynamic symbols are processed in
+   bfd_elf_size_dynamic_sections.  */
 
-asection *
+bool
 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)
-    return NULL;
+    return false;
+
+  /* Move dynamic linking info to the function descriptor sym.  */
+  if (htab->need_func_desc_adj)
+    {
+      elf_link_hash_traverse (&htab->elf, func_desc_adjust, info);
+      htab->need_func_desc_adj = 0;
+    }
 
   if (abiversion (info->output_bfd) == 1)
     htab->opd_abi = 1;
@@ -7595,32 +7967,48 @@ ppc64_elf_tls_setup (struct bfd_link_inf
      --plt-localentry can cause trouble.  */
   if (htab->params->plt_localentry0 < 0)
     htab->params->plt_localentry0 = 0;
+  if (htab->params->plt_localentry0 && htab->has_power10_relocs)
+    {
+      /* The issue is that __glink_PLTresolve saves r2, which is done
+	 because glibc ld.so _dl_runtime_resolve restores r2 to support
+	 a glibc plt call optimisation where global entry code is
+	 skipped on calls that resolve to the same binary.  The
+	 __glink_PLTresolve save of r2 is incompatible with code
+	 making tail calls, because the tail call might go via the
+	 resolver and thus overwrite the proper saved r2.  */
+      _bfd_error_handler (_("warning: --plt-localentry is incompatible with "
+			    "power10 pc-relative code"));
+      htab->params->plt_localentry0 = 0;
+    }
   if (htab->params->plt_localentry0
       && elf_link_hash_lookup (&htab->elf, "GLIBC_2.26",
-			       FALSE, FALSE, FALSE) == NULL)
+			       false, false, false) == NULL)
     _bfd_error_handler
       (_("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));
-  /* 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));
+  tga = elf_link_hash_lookup (&htab->elf, ".__tls_get_addr",
+			      false, false, true);
+  htab->tls_get_addr = ppc_elf_hash_entry (tga);
+  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);
+  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);
-      if (opt != NULL)
-	func_desc_adjust (opt, info);
+				  false, false, true);
       opt_fd = elf_link_hash_lookup (&htab->elf, "__tls_get_addr_opt",
-				     FALSE, FALSE, TRUE);
+				     false, false, true);
       if (opt_fd != NULL
 	  && (opt_fd->root.type == bfd_link_hash_defined
 	      || opt_fd->root.type == bfd_link_hash_defweak))
@@ -7629,24 +8017,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)
 		    {
@@ -7655,27 +8068,52 @@ ppc64_elf_tls_setup (struct bfd_link_inf
 		      _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
 					      opt_fd->dynstr_index);
 		      if (!bfd_elf_link_record_dynamic_symbol (info, opt_fd))
-			return NULL;
+			return false;
 		    }
-		  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 = elf_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 +8121,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;
     }
-  return _bfd_elf_tls_setup (info->output_bfd, info);
+
+  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 true;
 }
 
 /* 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)
+static bool
+branch_reloc_hash_match (bfd *ibfd,
+			 Elf_Internal_Rela *rel,
+			 struct ppc_link_hash_entry *hash1,
+			 struct ppc_link_hash_entry *hash2,
+			 struct ppc_link_hash_entry *hash3,
+			 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,10 +8152,13 @@ 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)
-	return TRUE;
+      if (h == elf_hash_entry (hash1)
+	  || h == elf_hash_entry (hash2)
+	  || h == elf_hash_entry (hash3)
+	  || h == elf_hash_entry (hash4))
+	return true;
     }
-  return FALSE;
+  return false;
 }
 
 /* Run through all the TLS relocs looking for optimization
@@ -7719,7 +8168,7 @@ branch_reloc_hash_match (const bfd *ibfd
    to know the tp offset, and we need to optimize before allocating
    dynamic relocations.  */
 
-bfd_boolean
+bool
 ppc64_elf_tls_optimize (struct bfd_link_info *info)
 {
   bfd *ibfd;
@@ -7729,11 +8178,13 @@ ppc64_elf_tls_optimize (struct bfd_link_
   int pass;
 
   if (!bfd_link_executable (info))
-    return TRUE;
+    return true;
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    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
@@ -7753,7 +8204,7 @@ ppc64_elf_tls_optimize (struct bfd_link_
 	  if (sec->has_tls_reloc && !bfd_is_abs_section (sec->output_section))
 	    {
 	      Elf_Internal_Rela *relstart, *rel, *relend;
-	      bfd_boolean found_tls_get_addr_arg = 0;
+	      bool found_tls_get_addr_arg = 0;
 
 	      /* Read the relocations.  */
 	      relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL,
@@ -7761,7 +8212,7 @@ ppc64_elf_tls_optimize (struct bfd_link_
 	      if (relstart == NULL)
 		{
 		  free (toc_ref);
-		  return FALSE;
+		  return false;
 		}
 
 	      relend = relstart + sec->reloc_count;
@@ -7775,10 +8226,10 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		  unsigned char *tls_mask;
 		  unsigned int tls_set, tls_clear, tls_type = 0;
 		  bfd_vma value;
-		  bfd_boolean ok_tprel, is_local;
+		  bool ok_tprel, is_local;
 		  long toc_ref_index = 0;
 		  int expecting_tls_get_addr = 0;
-		  bfd_boolean ret = FALSE;
+		  bool ret = false;
 
 		  r_symndx = ELF64_R_SYM (rel->r_info);
 		  if (!get_sym_h (&h, &sym, &sym_sec, &tls_mask, &locsyms,
@@ -7787,11 +8238,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;
 		    }
@@ -7814,13 +8263,13 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		       STT_TLS.  So no need for .opd local sym adjust.  */
 		    value = sym->st_value;
 
-		  ok_tprel = FALSE;
+		  ok_tprel = false;
 		  is_local = SYMBOL_REFERENCES_LOCAL (info, h);
 		  if (is_local)
 		    {
 		      if (h != NULL
 			  && h->root.type == bfd_link_hash_undefweak)
-			ok_tprel = TRUE;
+			ok_tprel = true;
 		      else if (sym_sec != NULL
 			       && sym_sec->output_section != NULL)
 			{
@@ -7847,15 +8296,14 @@ 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))
 		    {
 		      info->callbacks->minfo (_("%H __tls_get_addr lost arg, "
 						"TLS optimization disabled\n"),
 					      ibfd, sec, rel->r_offset);
-		      ret = TRUE;
+		      ret = true;
 		      goto err_free_rel;
 		    }
 
@@ -7864,7 +8312,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 +8333,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 +8350,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 +8490,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 +8538,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)
 			    {
@@ -8088,7 +8574,7 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		      info->callbacks->minfo (_("%H arg lost __tls_get_addr, "
 						"TLS optimization disabled\n"),
 					      ibfd, sec, rel->r_offset);
-		      ret = TRUE;
+		      ret = true;
 		      goto err_free_rel;
 		    }
 
@@ -8110,15 +8596,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)
@@ -8161,15 +8661,15 @@ ppc64_elf_tls_optimize (struct bfd_link_
 		    {
 		      /* If we got rid of a DTPMOD/DTPREL reloc pair then
 			 we'll lose one or two dyn relocs.  */
-		      if (!dec_dynrel_count (rel->r_info, sec, info,
+		      if (!dec_dynrel_count (rel, sec, info,
 					     NULL, h, sym))
-			return FALSE;
+			return false;
 
 		      if (tls_set == (TLS_EXPLICIT | TLS_GD))
 			{
-			  if (!dec_dynrel_count ((rel + 1)->r_info, sec, info,
+			  if (!dec_dynrel_count (rel + 1, sec, info,
 						 NULL, h, sym))
-			    return FALSE;
+			    return false;
 			}
 		    }
 
@@ -8191,10 +8691,8 @@ ppc64_elf_tls_optimize (struct bfd_link_
 	  }
       }
 
-  if (toc_ref != NULL)
-    free (toc_ref);
-  htab->do_tls_opt = 1;
-  return TRUE;
+  free (toc_ref);
+  return true;
 }
 
 /* Called via elf_link_hash_traverse from ppc64_elf_edit_toc to adjust
@@ -8207,12 +8705,12 @@ struct adjust_toc_info
 {
   asection *toc;
   unsigned long *skip;
-  bfd_boolean global_toc_syms;
+  bool global_toc_syms;
 };
 
 enum toc_skip_enum { ref_from_discarded = 1, can_optimize = 2 };
 
-static bfd_boolean
+static bool
 adjust_toc_syms (struct elf_link_hash_entry *h, void *inf)
 {
   struct ppc_link_hash_entry *eh;
@@ -8221,11 +8719,11 @@ adjust_toc_syms (struct elf_link_hash_en
 
   if (h->root.type != bfd_link_hash_defined
       && h->root.type != bfd_link_hash_defweak)
-    return TRUE;
+    return true;
 
-  eh = (struct ppc_link_hash_entry *) h;
+  eh = ppc_elf_hash_entry (h);
   if (eh->adjust_done)
-    return TRUE;
+    return true;
 
   if (eh->elf.root.u.def.section == toc_inf->toc)
     {
@@ -8248,45 +8746,45 @@ adjust_toc_syms (struct elf_link_hash_en
       eh->adjust_done = 1;
     }
   else if (strcmp (eh->elf.root.u.def.section->name, ".toc") == 0)
-    toc_inf->global_toc_syms = TRUE;
+    toc_inf->global_toc_syms = true;
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE iff INSN with a relocation of R_TYPE is one we expect
    on a _LO variety toc/got reloc.  */
 
-static bfd_boolean
+static bool
 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));
 }
 
@@ -8306,7 +8804,7 @@ ok_lo_toc_insn (unsigned int insn, enum
    the pld can be replaced with pla: *PINSN1 is that pla insn,
    while *PINSN2 is the second instruction.  */
 
-static bfd_boolean
+static bool
 xlate_pcrel_opt (uint64_t *pinsn1, uint64_t *pinsn2, bfd_signed_vma *poff)
 {
   uint64_t insn1 = *pinsn1;
@@ -8317,29 +8815,29 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint6
     {
       /* Check that regs match.  */
       if (((insn2 >> 16) & 31) != ((insn1 >> 21) & 31))
-	return FALSE;
+	return false;
 
       /* P8LS or PMLS form, non-pcrel.  */
       if ((insn2 & (-1ULL << 50) & ~(1ULL << 56)) != (1ULL << 58))
-	return FALSE;
+	return false;
 
       *pinsn1 = (insn2 & ~(31 << 16) & ~0x3ffff0000ffffULL) | (1ULL << 52);
       *pinsn2 = PNOP;
       off = ((insn2 >> 16) & 0x3ffff0000ULL) | (insn2 & 0xffff);
       *poff = (off ^ 0x200000000ULL) - 0x200000000ULL;
-      return TRUE;
+      return true;
     }
 
   insn2 >>= 32;
 
   /* Check that regs match.  */
   if (((insn2 >> 16) & 31) != ((insn1 >> 21) & 31))
-    return FALSE;
+    return false;
 
   switch ((insn2 >> 26) & 63)
     {
     default:
-      return FALSE;
+      return false;
 
     case 32: /* lwz */
     case 34: /* lbz */
@@ -8361,7 +8859,7 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint6
 
     case 58: /* lwa, ld */
       if ((insn2 & 1) != 0)
-	return FALSE;
+	return false;
       insn1 = ((1ULL << 58) | (1ULL << 52)
 	       | (insn2 & 2 ? 41ULL << 26 : 57ULL << 26)
 	       | (insn2 & (31ULL << 21)));
@@ -8370,7 +8868,7 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint6
 
     case 57: /* lxsd, lxssp */
       if ((insn2 & 3) < 2)
-	return FALSE;
+	return false;
       insn1 = ((1ULL << 58) | (1ULL << 52)
 	       | ((40ULL | (insn2 & 3)) << 26)
 	       | (insn2 & (31ULL << 21)));
@@ -8379,7 +8877,7 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint6
 
     case 61: /* stxsd, stxssp, lxv, stxv  */
       if ((insn2 & 3) == 0)
-	return FALSE;
+	return false;
       else if ((insn2 & 3) >= 2)
 	{
 	  insn1 = ((1ULL << 58) | (1ULL << 52)
@@ -8402,9 +8900,18 @@ 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;
+	return false;
       insn1 = ((1ULL << 58) | (1ULL << 52)
 	       | ((insn2 & 2) == 0 ? 61ULL << 26 : 60ULL << 26)
 	       | (insn2 & (31ULL << 21)));
@@ -8415,13 +8922,13 @@ xlate_pcrel_opt (uint64_t *pinsn1, uint6
   *pinsn1 = insn1;
   *pinsn2 = (uint64_t) NOP << 32;
   *poff = (off ^ 0x8000) - 0x8000;
-  return TRUE;
+  return true;
 }
 
 /* Examine all relocs referencing .toc sections in order to remove
    unused .toc entries.  */
 
-bfd_boolean
+bool
 ppc64_elf_edit_toc (struct bfd_link_info *info)
 {
   bfd *ibfd;
@@ -8429,7 +8936,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
 
   htab->do_toc_opt = 1;
-  toc_inf.global_toc_syms = TRUE;
+  toc_inf.global_toc_syms = true;
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
     {
       asection *toc, *sec;
@@ -8446,6 +8953,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
       toc = bfd_get_section_by_name (ibfd, ".toc");
       if (toc == NULL
 	  || toc->size == 0
+	  || (toc->flags & SEC_HAS_CONTENTS) == 0
 	  || toc->sec_info_type == SEC_INFO_TYPE_JUST_SYMS
 	  || discarded_section (toc))
 	continue;
@@ -8466,7 +8974,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 	      || (sec->flags & SEC_DEBUGGING) != 0)
 	    continue;
 
-	  relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, FALSE);
+	  relstart = _bfd_elf_link_read_relocs (ibfd, sec, NULL, NULL, false);
 	  if (relstart == NULL)
 	    goto error_ret;
 
@@ -8574,7 +9082,9 @@ ppc64_elf_edit_toc (struct bfd_link_info
 		  || discarded_section (sym_sec))
 		continue;
 
-	      if (!SYMBOL_REFERENCES_LOCAL (info, h))
+	      if (!SYMBOL_REFERENCES_LOCAL (info, h)
+		  || (bfd_link_pic (info)
+		      && sym_sec == bfd_abs_section_ptr))
 		continue;
 
 	      if (h != NULL)
@@ -8623,19 +9133,15 @@ 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);
-	  return FALSE;
+	  free (skip);
+	  return false;
 	}
 
       /* Now check all kept sections that might reference the toc.
@@ -8796,7 +9302,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 	  bfd_byte *contents, *src;
 	  unsigned long off;
 	  Elf_Internal_Sym *sym;
-	  bfd_boolean local_toc_syms = FALSE;
+	  bool local_toc_syms = false;
 
 	  /* Shuffle the toc contents, and at the same time convert the
 	     skip array from booleans into offsets.  */
@@ -8872,7 +9378,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 		    {
 		      val = sym->st_value;
 		      if (val != 0)
-			local_toc_syms = TRUE;
+			local_toc_syms = true;
 		    }
 
 		  val += rel->r_addend;
@@ -8962,7 +9468,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 	    {
 	      toc_inf.toc = toc;
 	      toc_inf.skip = skip;
-	      toc_inf.global_toc_syms = FALSE;
+	      toc_inf.global_toc_syms = false;
 	      elf_link_hash_traverse (elf_hash_table (info), adjust_toc_syms,
 				      &toc_inf);
 	    }
@@ -8990,7 +9496,7 @@ ppc64_elf_edit_toc (struct bfd_link_info
 		    wrel->r_addend = rel->r_addend;
 		    ++wrel;
 		  }
-		else if (!dec_dynrel_count (rel->r_info, toc, info,
+		else if (!dec_dynrel_count (rel, toc, info,
 					    &local_syms, NULL, NULL))
 		  goto error_ret;
 
@@ -9001,8 +9507,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,14 +9558,12 @@ 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;
+	      return false;
 	    }
 
 	  for (rel = relstart; rel < relstart + sec->reloc_count; ++rel)
@@ -9117,7 +9620,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,7 +9663,12 @@ ppc64_elf_edit_toc (struct bfd_link_info
 		  || discarded_section (sym_sec))
 		continue;
 
-	      if (!SYMBOL_REFERENCES_LOCAL (info, h))
+	      if ((h ? h->type : ELF_ST_TYPE (sym->st_info)) == STT_GNU_IFUNC)
+		continue;
+
+	      if (!SYMBOL_REFERENCES_LOCAL (info, h)
+		  || (bfd_link_pic (info)
+		      && sym_sec == bfd_abs_section_ptr))
 		continue;
 
 	      if (h != NULL)
@@ -9188,7 +9696,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 +9709,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 +9726,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;
 		}
@@ -9254,13 +9762,13 @@ ppc64_elf_edit_toc (struct bfd_link_info
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return true iff input section I references the TOC using
    instructions limited to +/-32k offsets.  */
 
-bfd_boolean
+bool
 ppc64_elf_has_small_toc_reloc (asection *i)
 {
   return (is_ppc64_elf (i->owner)
@@ -9275,7 +9783,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
@@ -9291,9 +9799,11 @@ allocate_got (struct elf_link_hash_entry
       htab->got_reli_size += rentsize;
     }
   else if (((bfd_link_pic (info)
-	     && !(gent->tls_type != 0
-		  && bfd_link_executable (info)
-		  && SYMBOL_REFERENCES_LOCAL (info, h)))
+	     && (gent->tls_type == 0
+		 ? !info->enable_dt_relr
+		 : !(bfd_link_executable (info)
+		     && SYMBOL_REFERENCES_LOCAL (info, h)))
+	     && !bfd_is_abs_symbol (&h->root))
 	    || (htab->elf.dynamic_sections_created
 		&& h->dynindx != -1
 		&& !SYMBOL_REFERENCES_LOCAL (info, h)))
@@ -9319,14 +9829,14 @@ merge_got_entries (struct got_entry **pe
 	    && ent2->tls_type == ent->tls_type
 	    && elf_gp (ent2->owner) == elf_gp (ent->owner))
 	  {
-	    ent2->is_indirect = TRUE;
+	    ent2->is_indirect = true;
 	    ent2->got.ent = ent;
 	  }
 }
 
 /* If H is undefined, make it dynamic if that makes sense.  */
 
-static bfd_boolean
+static bool
 ensure_undef_dynamic (struct bfd_link_info *info,
 		      struct elf_link_hash_entry *h)
 {
@@ -9340,13 +9850,25 @@ ensure_undef_dynamic (struct bfd_link_in
       && !h->forced_local
       && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
     return bfd_elf_link_record_dynamic_symbol (info, h);
-  return TRUE;
+  return true;
+}
+
+/* Choose whether to use htab->iplt or htab->pltlocal rather than the
+   usual htab->elf.splt section for a PLT entry.  */
+
+static inline
+bool use_local_plt (struct bfd_link_info *info,
+			   struct elf_link_hash_entry *h)
+{
+  return (h == NULL
+	  || h->dynindx == -1
+	  || !elf_hash_table (info)->dynamic_sections_created);
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
@@ -9356,14 +9878,14 @@ allocate_dynrelocs (struct elf_link_hash
   struct got_entry **pgent, *gent;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    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))
@@ -9417,7 +9939,7 @@ allocate_dynrelocs (struct elf_link_hash
 	/* Ensure we catch all the cases where this symbol should
 	   be made dynamic.  */
 	if (!ensure_undef_dynamic (info, h))
-	  return FALSE;
+	  return false;
 
 	if (!is_ppc64_elf (gent->owner))
 	  abort ();
@@ -9429,21 +9951,21 @@ 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;
+      struct ppc_dyn_relocs *p, **pp;
 
       /* In the shared -Bsymbolic case, discard space allocated for
 	 dynamic pc-relative relocs against symbols which turn out to
@@ -9461,7 +9983,9 @@ 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 = (struct ppc_dyn_relocs **) &h->dyn_relocs;
+		   (p = *pp) != NULL;
+		   )
 		{
 		  p->count -= p->pc_count;
 		  p->pc_count = 0;
@@ -9472,12 +9996,12 @@ 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.  */
 	      if (!ensure_undef_dynamic (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
 
@@ -9485,31 +10009,44 @@ allocate_dynrelocs (struct elf_link_hash
 	 relocs against symbols which are not dynamic.  */
       else if (h->type != STT_GNU_IFUNC)
 	{
-	  if (h->dynamic_adjusted
+	  if ((h->dynamic_adjusted
+	       || (h->ref_regular
+		   && h->root.type == bfd_link_hash_undefweak
+		   && (info->dynamic_undefined_weak > 0
+		       || !_bfd_elf_readonly_dynrelocs (h))))
 	      && !h->def_regular
 	      && !ELF_COMMON_DEF_P (h))
 	    {
 	      /* Ensure we catch all the cases where this symbol
 		 should be made dynamic.  */
 	      if (!ensure_undef_dynamic (info, h))
-		return FALSE;
+		return false;
 
 	      /* 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)
-	{
-	  asection *sreloc = elf_section_data (p->sec)->sreloc;
-	  if (eh->elf.type == STT_GNU_IFUNC)
-	    sreloc = htab->elf.irelplt;
-	  sreloc->size += p->count * sizeof (Elf64_External_Rela);
-	}
+      for (p = (struct ppc_dyn_relocs *) h->dyn_relocs; p != NULL; p = p->next)
+	if (!discarded_section (p->sec))
+	  {
+	    unsigned int count;
+	    asection *sreloc = elf_section_data (p->sec)->sreloc;
+	    if (eh->elf.type == STT_GNU_IFUNC)
+	      sreloc = htab->elf.irelplt;
+	    count = p->count;
+	    if (info->enable_dt_relr
+		&& ((!NO_OPD_RELOCS
+		     && ppc64_elf_section_data (p->sec)->sec_type == sec_opd)
+		    || (eh->elf.type != STT_GNU_IFUNC
+			&& SYMBOL_REFERENCES_LOCAL (info, h))))
+	      count -= p->rel_count;
+	    sreloc->size += count * sizeof (Elf64_External_Rela);
+	  }
     }
 
   /* We might need a PLT entry when the symbol
@@ -9524,16 +10061,18 @@ 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;
-      bfd_boolean doneone = FALSE;
+      bool doneone = false;
       for (pent = h->plt.plist; pent != NULL; pent = pent->next)
 	if (pent->plt.refcount > 0)
 	  {
-	    if (!htab->elf.dynamic_sections_created
-		|| h->dynindx == -1)
+	    if (!ensure_undef_dynamic (info, h))
+	      return false;
+
+	    if (use_local_plt (info, h))
 	      {
 		if (h->type == STT_GNU_IFUNC)
 		  {
@@ -9547,7 +10086,10 @@ allocate_dynrelocs (struct elf_link_hash
 		    s = htab->pltlocal;
 		    pent->plt.offset = s->size;
 		    s->size += LOCAL_PLT_ENTRY_SIZE (htab);
-		    s = bfd_link_pic (info) ? htab->relpltlocal : NULL;
+		    s = NULL;
+		    if (bfd_link_pic (info)
+			&& !(info->enable_dt_relr && !htab->opd_abi))
+		      s = htab->relpltlocal;
 		  }
 	      }
 	    else
@@ -9582,7 +10124,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      }
 	    if (s != NULL)
 	      s->size += sizeof (Elf64_External_Rela);
-	    doneone = TRUE;
+	    doneone = true;
 	  }
 	else
 	  pent->plt.offset = (bfd_vma) -1;
@@ -9598,7 +10140,7 @@ allocate_dynrelocs (struct elf_link_hash
       h->needs_plt = 0;
     }
 
-  return TRUE;
+  return true;
 }
 
 #define PPC_LO(v) ((v) & 0xffff)
@@ -9608,11 +10150,11 @@ allocate_dynrelocs (struct elf_link_hash
   ((((v) & 0x3ffff0000ULL) << 16) | (v & 0xffff))
 #define HA34(v) ((v + (1ULL << 33)) >> 34)
 
-/* Called via elf_link_hash_traverse from ppc64_elf_size_dynamic_sections
+/* Called via elf_link_hash_traverse from ppc64_elf_late_size_sections
    to set up space for global entry stubs.  These are put in glink,
    after the branch table.  */
 
-static bfd_boolean
+static bool
 size_global_entry_stubs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
@@ -9621,18 +10163,18 @@ size_global_entry_stubs (struct elf_link
   asection *s, *plt;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   if (!h->pointer_equality_needed)
-    return TRUE;
+    return true;
 
   if (h->def_regular)
-    return TRUE;
+    return true;
 
   info = inf;
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   s = htab->global_entry;
   plt = htab->elf.splt;
@@ -9657,8 +10199,8 @@ size_global_entry_stubs (struct elf_link
 	   non-empty.  Otherwise the .text output section will be
 	   aligned at least to plt_stub_align even when no global
 	   entry stubs are needed.  */
-	if (s->alignment_power < align_power)
-	  s->alignment_power = align_power;
+	if (!bfd_link_align_section (s, align_power))
+	  return false;
 	stub_align = (bfd_vma) 1 << align_power;
 	if (htab->params->plt_stub_align >= 0
 	    || ((((stub_off + stub_size - 1) & -stub_align)
@@ -9679,56 +10221,29 @@ size_global_entry_stubs (struct elf_link
 	s->size = stub_off + stub_size;
 	break;
       }
-  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;
+  return true;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-ppc64_elf_size_dynamic_sections (bfd *output_bfd,
-				 struct bfd_link_info *info)
+static bool
+ppc64_elf_late_size_sections (bfd *output_bfd,
+			      struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
   struct got_entry *first_tlsld;
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->elf.dynobj;
   if (dynobj == NULL)
-    abort ();
+    return true;
 
   if (htab->elf.dynamic_sections_created)
     {
@@ -9740,6 +10255,7 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	    abort ();
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -9754,18 +10270,19 @@ ppc64_elf_size_dynamic_sections (bfd *ou
       unsigned char *lgot_masks;
       bfd_size_type locsymcount;
       Elf_Internal_Shdr *symtab_hdr;
+      Elf_Internal_Sym *local_syms;
+      Elf_Internal_Sym *isym;
 
       if (!is_ppc64_elf (ibfd))
 	continue;
 
       for (s = ibfd->sections; s != NULL; s = s->next)
 	{
-	  struct ppc_dyn_relocs *p;
+	  struct ppc_local_dyn_relocs *p;
 
 	  for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
 	    {
-	      if (!bfd_is_abs_section (p->sec)
-		  && bfd_is_abs_section (p->sec->output_section))
+	      if (discarded_section (p->sec))
 		{
 		  /* Input section has been discarded, either because
 		     it is a copy of a linkonce section or due to
@@ -9774,10 +10291,20 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 		}
 	      else if (p->count != 0)
 		{
-		  asection *srel = elf_section_data (p->sec)->sreloc;
+		  unsigned int count;
+		  asection *srel;
+
+		  count = p->count;
+		  if (info->enable_dt_relr
+		      && ((!NO_OPD_RELOCS
+			   && (ppc64_elf_section_data (p->sec)->sec_type
+			       == sec_opd))
+			  || !p->ifunc))
+		    count -= p->rel_count;
+		  srel = elf_section_data (p->sec)->sreloc;
 		  if (p->ifunc)
 		    srel = htab->elf.irelplt;
-		  srel->size += p->count * sizeof (Elf64_External_Rela);
+		  srel->size += count * sizeof (Elf64_External_Rela);
 		  if ((p->sec->output_section->flags & SEC_READONLY) != 0)
 		    info->flags |= DF_TEXTREL;
 		}
@@ -9794,8 +10321,18 @@ ppc64_elf_size_dynamic_sections (bfd *ou
       local_plt = (struct plt_entry **) end_lgot_ents;
       end_local_plt = local_plt + locsymcount;
       lgot_masks = (unsigned char *) end_local_plt;
+      local_syms = (Elf_Internal_Sym *) symtab_hdr->contents;
+      if (local_syms == NULL && locsymcount != 0)
+	{
+	  local_syms = bfd_elf_get_elf_syms (ibfd, symtab_hdr, locsymcount,
+					     0, NULL, NULL, NULL);
+	  if (local_syms == NULL)
+	    return false;
+	}
       s = ppc64_elf_tdata (ibfd)->got;
-      for (; lgot_ents < end_lgot_ents; ++lgot_ents, ++lgot_masks)
+      for (isym = local_syms;
+	   lgot_ents < end_lgot_ents;
+	   ++lgot_ents, ++lgot_masks, isym++)
 	{
 	  struct got_entry **pent, *ent;
 
@@ -9826,8 +10363,10 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 			htab->got_reli_size += rel_size;
 		      }
 		    else if (bfd_link_pic (info)
-			     && !(ent->tls_type != 0
-				  && bfd_link_executable (info)))
+			     && (ent->tls_type == 0
+				 ? !info->enable_dt_relr
+				 : !bfd_link_executable (info))
+			     && isym->st_shndx != SHN_ABS)
 		      {
 			asection *srel = ppc64_elf_tdata (ibfd)->relgot;
 			srel->size += rel_size;
@@ -9838,6 +10377,14 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	    else
 	      *pent = ent->next;
 	}
+      if (local_syms != NULL
+	  && symtab_hdr->contents != (unsigned char *) local_syms)
+	{
+	  if (!info->keep_memory)
+	    free (local_syms);
+	  else
+	    symtab_hdr->contents = (unsigned char *) local_syms;
+	}
 
       /* Allocate space for plt calls to local syms.  */
       lgot_masks = (unsigned char *) end_local_plt;
@@ -9863,7 +10410,8 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 		    s = htab->pltlocal;
 		    ent->plt.offset = s->size;
 		    s->size += LOCAL_PLT_ENTRY_SIZE (htab);
-		    if (bfd_link_pic (info))
+		    if (bfd_link_pic (info)
+			&& !(info->enable_dt_relr && !htab->opd_abi))
 		      htab->relpltlocal->size += sizeof (Elf64_External_Rela);
 		  }
 	      }
@@ -9892,7 +10440,7 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	{
 	  if (!htab->do_multi_toc && first_tlsld != NULL)
 	    {
-	      ent->is_indirect = TRUE;
+	      ent->is_indirect = true;
 	      ent->got.ent = first_tlsld;
 	    }
 	  else
@@ -9916,13 +10464,13 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
 
-      if (s == htab->brlt || s == htab->relbrlt)
+      if (s == htab->brlt || s == htab->relbrlt || s == htab->elf.srelrdyn)
 	/* These haven't been allocated yet;  don't strip.  */
 	continue;
       else if (s == htab->elf.sgot
@@ -9943,12 +10491,12 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	    /* Not sized yet.  */
 	    continue;
 	}
-      else if (CONST_STRNEQ (s->name, ".rela"))
+      else if (startswith (s->name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
 	      if (s != htab->elf.srelplt)
-		relocs = TRUE;
+		relocs = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -9992,7 +10540,8 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	 the GOT and .dynrelro.  */
       s->contents = bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
@@ -10009,7 +10558,8 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	    {
 	      s->contents = bfd_zalloc (ibfd, s->size);
 	      if (s->contents == NULL)
-		return FALSE;
+		return false;
+	      s->alloced = 1;
 	    }
 	}
       s = ppc64_elf_tdata (ibfd)->relgot;
@@ -10021,8 +10571,9 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	    {
 	      s->contents = bfd_zalloc (ibfd, s->size);
 	      if (s->contents == NULL)
-		return FALSE;
-	      relocs = TRUE;
+		return false;
+	      s->alloced = 1;
+	      relocs = true;
 	      s->reloc_count = 0;
 	    }
 	}
@@ -10030,7 +10581,7 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 
   if (htab->elf.dynamic_sections_created)
     {
-      bfd_boolean tls_opt;
+      bool tls_opt;
 
       /* Add some entries to the .dynamic section.  We fill in the
 	 values later, in ppc64_elf_finish_dynamic_sections, but we
@@ -10043,7 +10594,7 @@ ppc64_elf_size_dynamic_sections (bfd *ou
       if (bfd_link_executable (info))
 	{
 	  if (!add_dynamic_entry (DT_DEBUG, 0))
-	    return FALSE;
+	    return false;
 	}
 
       if (htab->elf.splt != NULL && htab->elf.splt->size != 0)
@@ -10053,23 +10604,25 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	      || !add_dynamic_entry (DT_PLTREL, DT_RELA)
 	      || !add_dynamic_entry (DT_JMPREL, 0)
 	      || !add_dynamic_entry (DT_PPC64_GLINK, 0))
-	    return FALSE;
+	    return false;
 	}
 
       if (NO_OPD_RELOCS && abiversion (output_bfd) <= 1)
 	{
 	  if (!add_dynamic_entry (DT_PPC64_OPD, 0)
 	      || !add_dynamic_entry (DT_PPC64_OPDSZ, 0))
-	    return FALSE;
+	    return false;
 	}
 
       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))
-	    return FALSE;
+	    return false;
 	}
 
       if (relocs)
@@ -10077,41 +10630,42 @@ ppc64_elf_size_dynamic_sections (bfd *ou
 	  if (!add_dynamic_entry (DT_RELA, 0)
 	      || !add_dynamic_entry (DT_RELASZ, 0)
 	      || !add_dynamic_entry (DT_RELAENT, sizeof (Elf64_External_Rela)))
-	    return FALSE;
+	    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);
+	    elf_link_hash_traverse (&htab->elf,
+				    _bfd_elf_maybe_set_textrel, info);
 
 	  if ((info->flags & DF_TEXTREL) != 0)
 	    {
 	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
+		return false;
 	    }
 	}
     }
 #undef add_dynamic_entry
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if symbol should be hashed in the `.gnu.hash' section.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_hash_symbol (struct elf_link_hash_entry *h)
 {
   if (h->plt.plist != NULL
       && !h->def_regular
       && !h->pointer_equality_needed)
-    return FALSE;
+    return false;
 
   return _bfd_elf_hash_symbol (h);
 }
 
 /* Determine the type of stub needed, if any, for a call.  */
 
-static inline enum ppc_stub_type
+static inline enum ppc_stub_main_type
 ppc_type_of_stub (asection *input_sec,
 		  const Elf_Internal_Rela *rel,
 		  struct ppc_link_hash_entry **hash,
@@ -10210,7 +10764,7 @@ ppc_type_of_stub (asection *input_sec,
    .	add/ldx	%r12,%r11,%r12  */
 
 static bfd_byte *
-build_offset (bfd *abfd, bfd_byte *p, bfd_vma off, bfd_boolean load)
+build_offset (bfd *abfd, bfd_byte *p, bfd_vma off, bool load)
 {
   bfd_put_32 (abfd, MFLR_R12, p);
   p += 4;
@@ -10389,8 +10943,8 @@ emit_relocs_for_offset (struct bfd_link_
 }
 
 static bfd_byte *
-build_powerxx_offset (bfd *abfd, bfd_byte *p, bfd_vma off, int odd,
-		      bfd_boolean load)
+build_power10_offset (bfd *abfd, bfd_byte *p, bfd_vma off, int odd,
+		      bool load)
 {
   uint64_t insn;
   if (off - odd + (1ULL << 33) < 1ULL << 34)
@@ -10471,7 +11025,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 +11036,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 +11047,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)
 {
@@ -10599,55 +11153,61 @@ eh_advance_size (unsigned int delta)
 static inline unsigned int
 plt_stub_size (struct ppc_link_hash_table *htab,
 	       struct ppc_stub_hash_entry *stub_entry,
-	       bfd_vma off)
+	       bfd_vma off,
+	       unsigned int odd)
 {
   unsigned size;
 
-  if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
+  if (stub_entry->type.sub == ppc_stub_notoc)
     {
-      if (htab->powerxx_stubs)
-	{
-	  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);
-	}
-      else
-	size = 8 + size_offset (off - 8);
-      if (stub_entry->stub_type > ppc_stub_plt_call_notoc)
+      size = 8 + size_power10_offset (off, odd);
+      if (stub_entry->type.r2save)
 	size += 4;
-      return size;
     }
-
-  size = 12;
-  if (ALWAYS_EMIT_R2SAVE
-      || stub_entry->stub_type == ppc_stub_plt_call_r2save)
-    size += 4;
-  if (PPC_HA (off) != 0)
-    size += 4;
-  if (htab->opd_abi)
+  else if (stub_entry->type.sub == ppc_stub_p9notoc)
     {
-      size += 4;
-      if (htab->params->plt_static_chain)
+      size = 8 + size_offset (off - 8);
+      if (stub_entry->type.r2save)
+	size += 4;
+    }
+  else
+    {
+      size = 12;
+      if (ALWAYS_EMIT_R2SAVE || stub_entry->type.r2save)
 	size += 4;
-      if (htab->params->plt_thread_safe
-	  && htab->elf.dynamic_sections_created
-	  && stub_entry->h != NULL
-	  && stub_entry->h->elf.dynindx != -1)
-	size += 8;
-      if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain) != PPC_HA (off))
+      if (PPC_HA (off) != 0)
 	size += 4;
+      if (htab->opd_abi)
+	{
+	  size += 4;
+	  if (htab->params->plt_static_chain)
+	    size += 4;
+	  if (htab->params->plt_thread_safe
+	      && htab->elf.dynamic_sections_created
+	      && stub_entry->h != NULL
+	      && stub_entry->h->elf.dynindx != -1)
+	    size += 8;
+	  if (PPC_HA (off + 8 + 8 * htab->params->plt_static_chain)
+	      != PPC_HA (off))
+	    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 += 30 * 4;
+	  if (stub_entry->type.r2save)
+	    size += 4;
+	}
+      else
+	{
+	  size += 7 * 4;
+	  if (stub_entry->type.r2save)
+	    size += 6 * 4;
+	}
     }
   return size;
 }
@@ -10659,31 +11219,25 @@ plt_stub_size (struct ppc_link_hash_tabl
    boundaries if we align, then return the padding needed to do so.  */
 
 static inline unsigned int
-plt_stub_pad (struct ppc_link_hash_table *htab,
-	      struct ppc_stub_hash_entry *stub_entry,
-	      bfd_vma plt_off)
-{
-  int stub_align;
-  unsigned stub_size;
-  bfd_vma stub_off = stub_entry->group->stub_sec->size;
-
-  if (htab->params->plt_stub_align >= 0)
-    {
-      stub_align = 1 << htab->params->plt_stub_align;
-      if ((stub_off & (stub_align - 1)) != 0)
-	return stub_align - (stub_off & (stub_align - 1));
-      return 0;
-    }
+plt_stub_pad (int plt_stub_align,
+	      bfd_vma stub_off,
+	      unsigned int stub_size)
+{
+  unsigned int stub_align;
 
-  stub_align = 1 << -htab->params->plt_stub_align;
-  stub_size = plt_stub_size (htab, stub_entry, plt_off);
-  if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align)
-      > ((stub_size - 1) & -stub_align))
-    return stub_align - (stub_off & (stub_align - 1));
-  return 0;
+  if (plt_stub_align >= 0)
+    stub_align = 1u << plt_stub_align;
+  else
+    {
+      stub_align = 1u << -plt_stub_align;
+      if (((stub_off + stub_size - 1) & -stub_align) - (stub_off & -stub_align)
+	  <= ((stub_size - 1) & -stub_align))
+	return 0;
+    }
+  return stub_align - 1 - ((stub_off - 1) & (stub_align - 1));
 }
 
-/* Build a .plt call stub.  */
+/* Build a toc using .plt call stub.  */
 
 static inline bfd_byte *
 build_plt_stub (struct ppc_link_hash_table *htab,
@@ -10691,20 +11245,20 @@ build_plt_stub (struct ppc_link_hash_tab
 		bfd_byte *p, bfd_vma offset, Elf_Internal_Rela *r)
 {
   bfd *obfd = htab->params->stub_bfd;
-  bfd_boolean plt_load_toc = htab->opd_abi;
-  bfd_boolean plt_static_chain = htab->params->plt_static_chain;
-  bfd_boolean plt_thread_safe = (htab->params->plt_thread_safe
-				 && htab->elf.dynamic_sections_created
-				 && stub_entry->h != NULL
-				 && stub_entry->h->elf.dynindx != -1);
-  bfd_boolean use_fake_dep = plt_thread_safe;
+  bool plt_load_toc = htab->opd_abi;
+  bool plt_static_chain = htab->params->plt_static_chain;
+  bool plt_thread_safe = (htab->params->plt_thread_safe
+			  && htab->elf.dynamic_sections_created
+			  && stub_entry->h != NULL
+			  && stub_entry->h->elf.dynindx != -1);
+  bool use_fake_dep = plt_thread_safe;
   bfd_vma cmp_branch_off = 0;
 
   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;
@@ -10719,8 +11273,7 @@ build_plt_stub (struct ppc_link_hash_tab
 	    + htab->glink->output_offset
 	    + htab->glink->output_section->vma);
       from = (p - stub_entry->group->stub_sec->contents
-	      + 4 * (ALWAYS_EMIT_R2SAVE
-		     || stub_entry->stub_type == ppc_stub_plt_call_r2save)
+	      + 4 * (ALWAYS_EMIT_R2SAVE || stub_entry->type.r2save)
 	      + 4 * (PPC_HA (offset) != 0)
 	      + 4 * (PPC_HA (offset + 8 + 8 * plt_static_chain)
 		     != PPC_HA (offset))
@@ -10736,8 +11289,7 @@ build_plt_stub (struct ppc_link_hash_tab
     {
       if (r != NULL)
 	{
-	  if (ALWAYS_EMIT_R2SAVE
-	      || stub_entry->stub_type == ppc_stub_plt_call_r2save)
+	  if (ALWAYS_EMIT_R2SAVE || stub_entry->type.r2save)
 	    r[0].r_offset += 4;
 	  r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_HA);
 	  r[1].r_offset = r[0].r_offset + 4;
@@ -10765,8 +11317,7 @@ build_plt_stub (struct ppc_link_hash_tab
 		}
 	    }
 	}
-      if (ALWAYS_EMIT_R2SAVE
-	  || stub_entry->stub_type == ppc_stub_plt_call_r2save)
+      if (ALWAYS_EMIT_R2SAVE || stub_entry->type.r2save)
 	bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p),	p += 4;
       if (plt_load_toc)
 	{
@@ -10801,8 +11352,7 @@ build_plt_stub (struct ppc_link_hash_tab
     {
       if (r != NULL)
 	{
-	  if (ALWAYS_EMIT_R2SAVE
-	      || stub_entry->stub_type == ppc_stub_plt_call_r2save)
+	  if (ALWAYS_EMIT_R2SAVE || stub_entry->type.r2save)
 	    r[0].r_offset += 4;
 	  r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_DS);
 	  if (plt_load_toc)
@@ -10827,8 +11377,7 @@ build_plt_stub (struct ppc_link_hash_tab
 		}
 	    }
 	}
-      if (ALWAYS_EMIT_R2SAVE
-	  || stub_entry->stub_type == ppc_stub_plt_call_r2save)
+      if (ALWAYS_EMIT_R2SAVE || stub_entry->type.r2save)
 	bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p),	p += 4;
       bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (offset), p),	p += 4;
       if (plt_load_toc
@@ -10863,70 +11412,145 @@ 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,
+static bfd_byte *
+build_tls_get_addr_head (struct ppc_link_hash_table *htab,
 			 struct ppc_stub_hash_entry *stub_entry,
-			 bfd_byte *p, bfd_vma offset, Elf_Internal_Rela *r)
+			 bfd_byte *p)
 {
   bfd *obfd = htab->params->stub_bfd;
-  bfd_byte *loc = p;
 
-  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)
+    p = tls_get_addr_prologue (obfd, p, htab);
+  else if (stub_entry->type.r2save)
+    {
+      bfd_put_32 (obfd, MFLR_R0, p);
+      p += 4;
+      bfd_put_32 (obfd, STD_R0_0R1 + STK_LINKER (htab), p);
+      p += 4;
+    }
+  return p;
+}
+
+static bfd_byte *
+build_tls_get_addr_tail (struct ppc_link_hash_table *htab,
+			 struct ppc_stub_hash_entry *stub_entry,
+			 bfd_byte *p,
+			 bfd_byte *loc)
+{
+  bfd *obfd = htab->params->stub_bfd;
+
+  if (!htab->params->no_tls_get_addr_regsave)
+    {
+      bfd_put_32 (obfd, BCTRL, p - 4);
+
+      if (stub_entry->type.r2save)
+	{
+	  bfd_put_32 (obfd, LD_R2_0R1 + STK_TOC (htab), p);
+	  p += 4;
+	}
+      p = tls_get_addr_epilogue (obfd, p, htab);
+    }
+  else if (stub_entry->type.r2save)
+    {
+      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;
+    }
 
   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;
-      *eh++ = DW_CFA_restore_extended;
-      *eh++ = 65;
-      stub_entry->group->eh_size = eh - base;
+
+      if (!htab->params->no_tls_get_addr_regsave)
+	{
+	  unsigned int cfa_updt, delta, i;
+
+	  /* 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;
+	}
+      else if (stub_entry->type.r2save)
+	{
+	  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;
+	  *eh++ = DW_CFA_restore_extended;
+	  *eh++ = 65;
+	  stub_entry->group->eh_size = eh - base;
+	}
     }
   return p;
 }
@@ -10943,7 +11567,7 @@ get_relocs (asection *sec, int count)
     {
       bfd_size_type relsize;
       relsize = sec->reloc_count * sizeof (*relocs);
-      relocs = bfd_alloc (sec->owner, relsize);
+      relocs = bfd_malloc (relsize);
       if (relocs == NULL)
 	return NULL;
       elfsec_data->relocs = relocs;
@@ -10961,11 +11585,29 @@ get_relocs (asection *sec, int count)
   return relocs;
 }
 
+static bool
+swap_reloc_out (bfd *obfd, Elf_Internal_Rela *rel, bfd_byte *loc, asection *s)
+{
+  if ((size_t) (loc - s->contents) >= s->size)
+    return false;
+  bfd_elf64_swap_reloca_out (obfd, rel, loc);
+  return true;
+}
+
+static bool
+count_and_swap_reloc_out (bfd *obfd, Elf_Internal_Rela *rel, asection *s)
+{
+  bfd_byte *loc = s->contents;
+  loc += s->reloc_count++ * sizeof (Elf64_External_Rela);
+  return swap_reloc_out (obfd, rel, loc, s);
+}
+
+
 /* Convert the relocs R[0] thru R[-NUM_REL+1], which are all no-symbol
    forms, to the equivalent relocs against the global symbol given by
    STUB_ENTRY->H.  */
 
-static bfd_boolean
+static bool
 use_global_in_relocs (struct ppc_link_hash_table *htab,
 		      struct ppc_stub_hash_entry *stub_entry,
 		      Elf_Internal_Rela *r, unsigned int num_rel)
@@ -10989,7 +11631,7 @@ use_global_in_relocs (struct ppc_link_ha
       hsize = (htab->stub_globals + 1) * sizeof (*hashes);
       hashes = bfd_zalloc (htab->params->stub_bfd, hsize);
       if (hashes == NULL)
-	return FALSE;
+	return false;
       elf_sym_hashes (htab->params->stub_bfd) = hashes;
       htab->stub_globals = 1;
     }
@@ -11000,9 +11642,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));
@@ -11017,7 +11657,7 @@ use_global_in_relocs (struct ppc_link_ha
 	r->r_addend -= symval;
       --r;
     }
-  return TRUE;
+  return true;
 }
 
 static bfd_vma
@@ -11055,13 +11695,53 @@ get_r2off (struct bfd_link_info *info,
   return r2off;
 }
 
-static bfd_boolean
+/* Debug dump.  */
+
+static void
+dump_stub (const char *header,
+	   struct ppc_stub_hash_entry *stub_entry,
+	   size_t end_offset)
+{
+  const char *t1, *t2, *t3;
+  switch (stub_entry->type.main)
+    {
+    case ppc_stub_none:		t1 = "none";		break;
+    case ppc_stub_long_branch:	t1 = "long_branch";	break;
+    case ppc_stub_plt_branch:	t1 = "plt_branch";	break;
+    case ppc_stub_plt_call:	t1 = "plt_call";	break;
+    case ppc_stub_global_entry:	t1 = "global_entry";	break;
+    case ppc_stub_save_res:	t1 = "save_res";	break;
+    default:			t1 = "???";		break;
+    }
+  switch (stub_entry->type.sub)
+    {
+    case ppc_stub_toc:		t2 = "toc";		break;
+    case ppc_stub_notoc:	t2 = "notoc";		break;
+    case ppc_stub_p9notoc:	t2 = "p9notoc";		break;
+    default:			t2 = "???";		break;
+    }
+  t3 = stub_entry->type.r2save ? "r2save" : "";
+  fprintf (stderr, "%s id = %u type = %s:%s:%s\n",
+	   header, stub_entry->id, t1, t2, t3);
+  fprintf (stderr, "name = %s\n", stub_entry->root.string);
+  fprintf (stderr, "offset = 0x%" PRIx64 ":", stub_entry->stub_offset);
+  for (size_t i = stub_entry->stub_offset; i < end_offset; i += 4)
+    {
+      asection *stub_sec = stub_entry->group->stub_sec;
+      uint32_t *p = (uint32_t *) (stub_sec->contents + i);
+      fprintf (stderr, " %08x", (uint32_t) bfd_get_32 (stub_sec->owner, p));
+    }
+  fprintf (stderr, "\n");
+}
+
+static bool
 ppc_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 {
   struct ppc_stub_hash_entry *stub_entry;
   struct ppc_branch_hash_entry *br_entry;
   struct bfd_link_info *info;
   struct ppc_link_hash_table *htab;
+  bfd *obfd;
   bfd_byte *loc;
   bfd_byte *p, *relp;
   bfd_vma targ, off;
@@ -11069,6 +11749,7 @@ ppc_build_one_stub (struct bfd_hash_entr
   asection *plt;
   int num_rel;
   int odd;
+  bool is_tga;
 
   /* Massage our args to the form they really have.  */
   stub_entry = (struct ppc_stub_hash_entry *) gen_entry;
@@ -11076,16 +11757,37 @@ ppc_build_one_stub (struct bfd_hash_entr
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
-  BFD_ASSERT (stub_entry->stub_offset >= stub_entry->group->stub_sec->size);
+  struct _ppc64_elf_section_data *esd
+    = ppc64_elf_section_data (stub_entry->group->stub_sec);
+  ++htab->stub_id;
+  if (stub_entry->id != htab->stub_id
+      || (stub_entry->type.main != ppc_stub_save_res
+	  && stub_entry->stub_offset < stub_entry->group->stub_sec->size))
+    {
+      BFD_ASSERT (0);
+      if (stub_entry->id != htab->stub_id)
+	fprintf (stderr, "Expected id %u, got %u\n",
+		 htab->stub_id, stub_entry->id);
+      if (stub_entry->stub_offset < stub_entry->group->stub_sec->size)
+	fprintf (stderr, "Expected offset >= %" PRIx64 ", got %"
+		 PRIx64 "\n", stub_entry->group->stub_sec->size,
+		 stub_entry->stub_offset);
+      if (esd->sec_type == sec_stub)
+	dump_stub ("Previous:", esd->u.last_ent, stub_entry->stub_offset);
+      dump_stub ("Current:", stub_entry, 0);
+    }
+  if (esd->sec_type == sec_normal)
+    esd->sec_type = sec_stub;
+  if (esd->sec_type == sec_stub)
+    esd->u.last_ent = stub_entry;
   loc = stub_entry->group->stub_sec->contents + stub_entry->stub_offset;
 
-  htab->stub_count[stub_entry->stub_type - 1] += 1;
-  switch (stub_entry->stub_type)
+  htab->stub_count[stub_entry->type.main - 1] += 1;
+  if (stub_entry->type.main == ppc_stub_long_branch
+      && stub_entry->type.sub == ppc_stub_toc)
     {
-    case ppc_stub_long_branch:
-    case ppc_stub_long_branch_r2off:
       /* Branches are relative.  This is where we are going to.  */
       targ = (stub_entry->target_value
 	      + stub_entry->target_section->output_offset
@@ -11099,32 +11801,31 @@ ppc_build_one_stub (struct bfd_hash_entr
       off = targ - off;
 
       p = loc;
-      if (stub_entry->stub_type == ppc_stub_long_branch_r2off)
+      obfd = htab->params->stub_bfd;
+      if (stub_entry->type.r2save)
 	{
 	  bfd_vma r2off = get_r2off (info, stub_entry);
 
 	  if (r2off == (bfd_vma) -1)
 	    {
-	      htab->stub_error = TRUE;
-	      return FALSE;
+	      htab->stub_error = true;
+	      return false;
 	    }
-	  bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+	  bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
 	  p += 4;
 	  if (PPC_HA (r2off) != 0)
 	    {
-	      bfd_put_32 (htab->params->stub_bfd,
-			  ADDIS_R2_R2 | PPC_HA (r2off), p);
+	      bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p);
 	      p += 4;
 	    }
 	  if (PPC_LO (r2off) != 0)
 	    {
-	      bfd_put_32 (htab->params->stub_bfd,
-			  ADDI_R2_R2 | PPC_LO (r2off), p);
+	      bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p);
 	      p += 4;
 	    }
 	  off -= p - loc;
 	}
-      bfd_put_32 (htab->params->stub_bfd, B_DOT | (off & 0x3fffffc), p);
+      bfd_put_32 (obfd, B_DOT | (off & 0x3fffffc), p);
       p += 4;
 
       if (off + (1 << 25) >= (bfd_vma) (1 << 26))
@@ -11132,41 +11833,41 @@ ppc_build_one_stub (struct bfd_hash_entr
 	  _bfd_error_handler
 	    (_("long branch stub `%s' offset overflow"),
 	     stub_entry->root.string);
-	  htab->stub_error = TRUE;
-	  return FALSE;
+	  htab->stub_error = true;
+	  return false;
 	}
 
       if (info->emitrelocations)
 	{
 	  r = get_relocs (stub_entry->group->stub_sec, 1);
 	  if (r == NULL)
-	    return FALSE;
+	    return false;
 	  r->r_offset = p - 4 - stub_entry->group->stub_sec->contents;
 	  r->r_info = ELF64_R_INFO (0, R_PPC64_REL24);
 	  r->r_addend = targ;
 	  if (stub_entry->h != NULL
 	      && !use_global_in_relocs (htab, stub_entry, r, 1))
-	    return FALSE;
+	    return false;
 	}
-      break;
-
-    case ppc_stub_plt_branch:
-    case ppc_stub_plt_branch_r2off:
+    }
+  else if (stub_entry->type.main == ppc_stub_plt_branch
+	   && stub_entry->type.sub == ppc_stub_toc)
+    {
       br_entry = ppc_branch_hash_lookup (&htab->branch_hash_table,
 					 stub_entry->root.string + 9,
-					 FALSE, FALSE);
+					 false, false);
       if (br_entry == NULL)
 	{
 	  _bfd_error_handler (_("can't find branch stub `%s'"),
 			      stub_entry->root.string);
-	  htab->stub_error = TRUE;
-	  return FALSE;
+	  htab->stub_error = true;
+	  return false;
 	}
 
       targ = (stub_entry->target_value
 	      + stub_entry->target_section->output_offset
 	      + stub_entry->target_section->output_section->vma);
-      if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
+      if (!stub_entry->type.r2save)
 	targ += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
 
       bfd_put_64 (htab->brlt->owner, targ,
@@ -11176,11 +11877,10 @@ ppc_build_one_stub (struct bfd_hash_entr
 	{
 	  br_entry->iter = 0;
 
-	  if (htab->relbrlt != NULL)
+	  if (htab->relbrlt != NULL && !info->enable_dt_relr)
 	    {
 	      /* Create a reloc for the branch lookup table entry.  */
 	      Elf_Internal_Rela rela;
-	      bfd_byte *rl;
 
 	      rela.r_offset = (br_entry->offset
 			       + htab->brlt->output_offset
@@ -11188,16 +11888,14 @@ ppc_build_one_stub (struct bfd_hash_entr
 	      rela.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE);
 	      rela.r_addend = targ;
 
-	      rl = htab->relbrlt->contents;
-	      rl += (htab->relbrlt->reloc_count++
-		     * sizeof (Elf64_External_Rela));
-	      bfd_elf64_swap_reloca_out (htab->relbrlt->owner, &rela, rl);
+	      BFD_ASSERT (count_and_swap_reloc_out (htab->relbrlt->owner, &rela,
+						    htab->relbrlt));
 	    }
 	  else if (info->emitrelocations)
 	    {
 	      r = get_relocs (htab->brlt, 1);
 	      if (r == NULL)
-		return FALSE;
+		return false;
 	      /* brlt, being SEC_LINKER_CREATED does not go through the
 		 normal reloc processing.  Symbols and offsets are not
 		 translated from input file to output file form, so
@@ -11224,19 +11922,19 @@ ppc_build_one_stub (struct bfd_hash_entr
 	    (_("%P: linkage table error against `%pT'\n"),
 	     stub_entry->root.string);
 	  bfd_set_error (bfd_error_bad_value);
-	  htab->stub_error = TRUE;
-	  return FALSE;
+	  htab->stub_error = true;
+	  return false;
 	}
 
       if (info->emitrelocations)
 	{
 	  r = get_relocs (stub_entry->group->stub_sec, 1 + (PPC_HA (off) != 0));
 	  if (r == NULL)
-	    return FALSE;
+	    return false;
 	  r[0].r_offset = loc - stub_entry->group->stub_sec->contents;
 	  if (bfd_big_endian (info->output_bfd))
 	    r[0].r_offset += 2;
-	  if (stub_entry->stub_type == ppc_stub_plt_branch_r2off)
+	  if (stub_entry->type.r2save)
 	    r[0].r_offset += 4;
 	  r[0].r_info = ELF64_R_INFO (0, R_PPC64_TOC16_DS);
 	  r[0].r_addend = targ;
@@ -11250,19 +11948,17 @@ ppc_build_one_stub (struct bfd_hash_entr
 	}
 
       p = loc;
-      if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
+      obfd = htab->params->stub_bfd;
+      if (!stub_entry->type.r2save)
 	{
 	  if (PPC_HA (off) != 0)
 	    {
-	      bfd_put_32 (htab->params->stub_bfd,
-			  ADDIS_R12_R2 | PPC_HA (off), p);
+	      bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p);
 	      p += 4;
-	      bfd_put_32 (htab->params->stub_bfd,
-			  LD_R12_0R12 | PPC_LO (off), p);
+	      bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p);
 	    }
 	  else
-	    bfd_put_32 (htab->params->stub_bfd,
-			LD_R12_0R2 | PPC_LO (off), p);
+	    bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p);
 	}
       else
 	{
@@ -11270,71 +11966,69 @@ ppc_build_one_stub (struct bfd_hash_entr
 
 	  if (r2off == (bfd_vma) -1)
 	    {
-	      htab->stub_error = TRUE;
-	      return FALSE;
+	      htab->stub_error = true;
+	      return false;
 	    }
 
-	  bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+	  bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
 	  p += 4;
 	  if (PPC_HA (off) != 0)
 	    {
-	      bfd_put_32 (htab->params->stub_bfd,
-			  ADDIS_R12_R2 | PPC_HA (off), p);
+	      bfd_put_32 (obfd, ADDIS_R12_R2 | PPC_HA (off), p);
 	      p += 4;
-	      bfd_put_32 (htab->params->stub_bfd,
-			  LD_R12_0R12 | PPC_LO (off), p);
+	      bfd_put_32 (obfd, LD_R12_0R12 | PPC_LO (off), p);
 	    }
 	  else
-	    bfd_put_32 (htab->params->stub_bfd, LD_R12_0R2 | PPC_LO (off), p);
+	    bfd_put_32 (obfd, LD_R12_0R2 | PPC_LO (off), p);
 
 	  if (PPC_HA (r2off) != 0)
 	    {
 	      p += 4;
-	      bfd_put_32 (htab->params->stub_bfd,
-			  ADDIS_R2_R2 | PPC_HA (r2off), p);
+	      bfd_put_32 (obfd, ADDIS_R2_R2 | PPC_HA (r2off), p);
 	    }
 	  if (PPC_LO (r2off) != 0)
 	    {
 	      p += 4;
-	      bfd_put_32 (htab->params->stub_bfd,
-			  ADDI_R2_R2 | PPC_LO (r2off), p);
+	      bfd_put_32 (obfd, ADDI_R2_R2 | PPC_LO (r2off), p);
 	    }
 	}
       p += 4;
-      bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p);
+      bfd_put_32 (obfd, MTCTR_R12, p);
       p += 4;
-      bfd_put_32 (htab->params->stub_bfd, BCTR, p);
+      bfd_put_32 (obfd, BCTR, p);
       p += 4;
-      break;
-
-    case ppc_stub_long_branch_notoc:
-    case ppc_stub_long_branch_both:
-    case ppc_stub_plt_branch_notoc:
-    case ppc_stub_plt_branch_both:
-    case ppc_stub_plt_call_notoc:
-    case ppc_stub_plt_call_both:
+    }
+  else if (stub_entry->type.sub >= ppc_stub_notoc)
+    {
+      bool is_plt = stub_entry->type.main == ppc_stub_plt_call;
       p = loc;
       off = (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_long_branch_both
-	  || stub_entry->stub_type == ppc_stub_plt_branch_both
-	  || stub_entry->stub_type == ppc_stub_plt_call_both)
+      obfd = htab->params->stub_bfd;
+      is_tga = (is_plt
+		&& stub_entry->h != NULL
+		&& is_tls_get_addr (&stub_entry->h->elf, htab)
+		&& htab->params->tls_get_addr_opt);
+      if (is_tga)
+	{
+	  p = build_tls_get_addr_head (htab, stub_entry, p);
+	  off += p - loc;
+	}
+      if (stub_entry->type.r2save)
 	{
 	  off += 4;
-	  bfd_put_32 (htab->params->stub_bfd, STD_R2_0R1 + STK_TOC (htab), p);
+	  bfd_put_32 (obfd, STD_R2_0R1 + STK_TOC (htab), p);
 	  p += 4;
 	}
-      if (stub_entry->stub_type >= ppc_stub_plt_call_notoc)
+      if (is_plt)
 	{
 	  targ = stub_entry->plt_ent->plt.offset & ~1;
 	  if (targ >= (bfd_vma) -2)
 	    abort ();
 
 	  plt = htab->elf.splt;
-	  if (!htab->elf.dynamic_sections_created
-	      || stub_entry->h == NULL
-	      || stub_entry->h->elf.dynindx == -1)
+	  if (use_local_plt (info, elf_hash_entry (stub_entry->h)))
 	    {
 	      if (stub_entry->symtype == STT_GNU_IFUNC)
 		plt = htab->elf.iplt;
@@ -11352,24 +12046,42 @@ ppc_build_one_stub (struct bfd_hash_entr
 
       relp = p;
       num_rel = 0;
-      if (htab->powerxx_stubs)
-	{
-	  bfd_boolean load = stub_entry->stub_type >= ppc_stub_plt_call_notoc;
-	  p = build_powerxx_offset (htab->params->stub_bfd, p, off, odd, load);
-	}
+      if (stub_entry->type.sub == ppc_stub_notoc)
+	p = build_power10_offset (obfd, p, off, odd, is_plt);
       else
 	{
+	  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 - loc) + 8;
+	      delta = lr_used - stub_entry->group->lr_restore;
+	      stub_entry->group->lr_restore = lr_used + 8;
+	      eh = eh_advance (htab->elf.dynobj, eh, delta);
+	      *eh++ = DW_CFA_register;
+	      *eh++ = 65;
+	      *eh++ = 12;
+	      *eh++ = DW_CFA_advance_loc + 2;
+	      *eh++ = DW_CFA_restore_extended;
+	      *eh++ = 65;
+	      stub_entry->group->eh_size = eh - base;
+	    }
+
 	  /* The notoc stubs calculate their target (either a PLT entry or
 	     the global entry point of a function) relative to the PC
 	     returned by the "bcl" two instructions past the start of the
 	     sequence emitted by build_offset.  The offset is therefore 8
 	     less than calculated from the start of the sequence.  */
 	  off -= 8;
-	  p = build_offset (htab->params->stub_bfd, p, off,
-			    stub_entry->stub_type >= ppc_stub_plt_call_notoc);
+	  p = build_offset (obfd, p, off, is_plt);
 	}
 
-      if (stub_entry->stub_type <= ppc_stub_long_branch_both)
+      if (stub_entry->type.main == ppc_stub_long_branch)
 	{
 	  bfd_vma from;
 	  num_rel = 1;
@@ -11377,22 +12089,24 @@ ppc_build_one_stub (struct bfd_hash_entr
 		  + stub_entry->group->stub_sec->output_offset
 		  + stub_entry->group->stub_sec->output_section->vma
 		  + (p - loc));
-	  bfd_put_32 (htab->params->stub_bfd,
-		      B_DOT | ((targ - from) & 0x3fffffc), p);
+	  bfd_put_32 (obfd, B_DOT | ((targ - from) & 0x3fffffc), p);
 	}
       else
 	{
-	  bfd_put_32 (htab->params->stub_bfd, MTCTR_R12, p);
+	  bfd_put_32 (obfd, MTCTR_R12, p);
 	  p += 4;
-	  bfd_put_32 (htab->params->stub_bfd, BCTR, p);
+	  bfd_put_32 (obfd, BCTR, p);
 	}
       p += 4;
 
+      if (is_tga)
+	p = build_tls_get_addr_tail (htab, stub_entry, p, loc);
+
       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 (stub_entry->type.sub == ppc_stub_notoc)
+	    num_rel += num_relocs_for_power10_offset (off, odd);
 	  else
 	    {
 	      num_rel += num_relocs_for_offset (off);
@@ -11400,13 +12114,12 @@ 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);
+	    return false;
+	  if (stub_entry->type.sub == ppc_stub_notoc)
+	    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
-	      || stub_entry->stub_type == ppc_stub_long_branch_both)
+	  if (stub_entry->type.main == ppc_stub_long_branch)
 	    {
 	      ++r;
 	      roff = p - 4 - stub_entry->group->stub_sec->contents;
@@ -11415,40 +12128,12 @@ ppc_build_one_stub (struct bfd_hash_entr
 	      r->r_addend = targ;
 	      if (stub_entry->h != NULL
 		  && !use_global_in_relocs (htab, stub_entry, r, num_rel))
-		return FALSE;
+		return false;
 	    }
 	}
-
-      if (!htab->powerxx_stubs
-	  && 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 + 8;
-	  if (stub_entry->stub_type == ppc_stub_long_branch_both
-	      || stub_entry->stub_type == ppc_stub_plt_branch_both
-	      || stub_entry->stub_type == ppc_stub_plt_call_both)
-	    lr_used += 4;
-	  delta = lr_used - stub_entry->group->lr_restore;
-	  stub_entry->group->lr_restore = lr_used + 8;
-	  eh = eh_advance (htab->elf.dynobj, eh, delta);
-	  *eh++ = DW_CFA_register;
-	  *eh++ = 65;
-	  *eh++ = 12;
-	  *eh++ = DW_CFA_advance_loc + 2;
-	  *eh++ = DW_CFA_restore_extended;
-	  *eh++ = 65;
-	  stub_entry->group->eh_size = eh - base;
-	}
-      break;
-
-    case ppc_stub_plt_call:
-    case ppc_stub_plt_call_r2save:
+    }
+  else if (stub_entry->type.main == ppc_stub_plt_call)
+    {
       if (stub_entry->h != NULL
 	  && stub_entry->h->is_func_descriptor
 	  && stub_entry->h->oh != NULL)
@@ -11469,9 +12154,7 @@ ppc_build_one_stub (struct bfd_hash_entr
 	abort ();
 
       plt = htab->elf.splt;
-      if (!htab->elf.dynamic_sections_created
-	  || stub_entry->h == NULL
-	  || stub_entry->h->elf.dynindx == -1)
+      if (use_local_plt (info, elf_hash_entry (stub_entry->h)))
 	{
 	  if (stub_entry->symtype == STT_GNU_IFUNC)
 	    plt = htab->elf.iplt;
@@ -11493,8 +12176,8 @@ ppc_build_one_stub (struct bfd_hash_entr
 	     ? stub_entry->h->elf.root.root.string
 	     : "<local sym>");
 	  bfd_set_error (bfd_error_bad_value);
-	  htab->stub_error = TRUE;
-	  return FALSE;
+	  htab->stub_error = true;
+	  return false;
 	}
 
       r = NULL;
@@ -11507,27 +12190,33 @@ ppc_build_one_stub (struct bfd_hash_entr
 				     && PPC_HA (off + 16) == PPC_HA (off))
 			      : 1)));
 	  if (r == NULL)
-	    return FALSE;
+	    return false;
 	  r[0].r_offset = loc - stub_entry->group->stub_sec->contents;
 	  if (bfd_big_endian (info->output_bfd))
 	    r[0].r_offset += 2;
 	  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)
-	  && htab->params->tls_get_addr_opt)
-	p = build_tls_get_addr_stub (htab, stub_entry, loc, off, r);
-      else
-	p = build_plt_stub (htab, stub_entry, loc, off, r);
-      break;
-
-    case ppc_stub_save_res:
-      return TRUE;
-
-    default:
+      p = loc;
+      obfd = htab->params->stub_bfd;
+      is_tga = (stub_entry->h != NULL
+		&& is_tls_get_addr (&stub_entry->h->elf, htab)
+		&& htab->params->tls_get_addr_opt);
+      if (is_tga)
+	{
+	  p = build_tls_get_addr_head (htab, stub_entry, p);
+	  if (r != NULL)
+	    r[0].r_offset += p - loc;
+	}
+      p = build_plt_stub (htab, stub_entry, p, off, r);
+      if (is_tga)
+	p = build_tls_get_addr_tail (htab, stub_entry, p, loc);
+    }
+  else if (stub_entry->type.main == ppc_stub_save_res)
+    return true;
+  else
+    {
       BFD_FAIL ();
-      return FALSE;
+      return false;
     }
 
   stub_entry->group->stub_sec->size = stub_entry->stub_offset + (p - loc);
@@ -11537,30 +12226,21 @@ ppc_build_one_stub (struct bfd_hash_entr
       struct elf_link_hash_entry *h;
       size_t len1, len2;
       char *name;
-      const char *const stub_str[] = { "long_branch",
-				       "long_branch",
-				       "long_branch",
-				       "long_branch",
-				       "plt_branch",
-				       "plt_branch",
-				       "plt_branch",
-				       "plt_branch",
-				       "plt_call",
-				       "plt_call",
-				       "plt_call",
-				       "plt_call" };
+      static const char stub_str[][16] = { "long_branch",
+					   "plt_branch",
+					   "plt_call" };
 
-      len1 = strlen (stub_str[stub_entry->stub_type - 1]);
+      len1 = strlen (stub_str[stub_entry->type.main - 1]);
       len2 = strlen (stub_entry->root.string);
-      name = bfd_malloc (len1 + len2 + 2);
+      name = bfd_alloc (info->output_bfd, len1 + len2 + 2);
       if (name == NULL)
-	return FALSE;
+	return false;
       memcpy (name, stub_entry->root.string, 9);
-      memcpy (name + 9, stub_str[stub_entry->stub_type - 1], len1);
+      memcpy (name + 9, stub_str[stub_entry->type.main - 1], len1);
       memcpy (name + len1 + 9, stub_entry->root.string + 8, len2 - 8 + 1);
-      h = elf_link_hash_lookup (&htab->elf, name, TRUE, FALSE, FALSE);
+      h = elf_link_hash_lookup (&htab->elf, name, true, false, false);
       if (h == NULL)
-	return FALSE;
+	return false;
       if (h->root.type == bfd_link_hash_new)
 	{
 	  h->root.type = bfd_link_hash_defined;
@@ -11575,14 +12255,14 @@ ppc_build_one_stub (struct bfd_hash_entr
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* As above, but don't actually build the stub.  Just bump offset so
    we know stub section sizes, and select plt_branch stubs where
    long_branch stubs won't do.  */
 
-static bfd_boolean
+static bool
 ppc_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 {
   struct ppc_stub_hash_entry *stub_entry;
@@ -11590,7 +12270,8 @@ ppc_size_one_stub (struct bfd_hash_entry
   struct ppc_link_hash_table *htab;
   asection *plt;
   bfd_vma targ, off, r2off;
-  unsigned int size, extra, lr_used, delta, odd;
+  unsigned int size, pad, extra, lr_used, delta, odd;
+  bfd_vma stub_offset;
 
   /* Massage our args to the form they really have.  */
   stub_entry = (struct ppc_stub_hash_entry *) gen_entry;
@@ -11598,10 +12279,31 @@ ppc_size_one_stub (struct bfd_hash_entry
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    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->fatal (_("%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->fatal (_("%P: Could not assign `%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    stub_entry->group->stub_sec);
 
   /* Make a note of the offset within the stubs for this entry.  */
-  stub_entry->stub_offset = stub_entry->group->stub_sec->size;
+  stub_offset = stub_entry->group->stub_sec->size;
+  if (htab->stub_iteration > STUB_SHRINK_ITER
+      && stub_entry->stub_offset > stub_offset)
+    stub_offset = stub_entry->stub_offset;
+  stub_entry->id = ++htab->stub_id;
 
   if (stub_entry->h != NULL
       && stub_entry->h->save_res
@@ -11611,37 +12313,39 @@ ppc_size_one_stub (struct bfd_hash_entry
       /* Don't make stubs to out-of-line register save/restore
 	 functions.  Instead, emit copies of the functions.  */
       stub_entry->group->needs_save_res = 1;
-      stub_entry->stub_type = ppc_stub_save_res;
-      return TRUE;
+      stub_entry->type.main = ppc_stub_save_res;
+      stub_entry->type.sub = ppc_stub_toc;
+      stub_entry->type.r2save = 0;
+      return true;
     }
 
-  switch (stub_entry->stub_type)
+  if (stub_entry->type.main == ppc_stub_plt_branch)
     {
-    case ppc_stub_plt_branch:
-    case ppc_stub_plt_branch_r2off:
       /* Reset the stub type from the plt branch variant in case we now
 	 can reach with a shorter stub.  */
-      stub_entry->stub_type += ppc_stub_long_branch - ppc_stub_plt_branch;
-      /* Fall through.  */
-    case ppc_stub_long_branch:
-    case ppc_stub_long_branch_r2off:
+      stub_entry->type.main = ppc_stub_long_branch;
+    }
+
+  if (stub_entry->type.main == ppc_stub_long_branch
+      && stub_entry->type.sub == ppc_stub_toc)
+    {
       targ = (stub_entry->target_value
 	      + stub_entry->target_section->output_offset
 	      + stub_entry->target_section->output_section->vma);
       targ += PPC64_LOCAL_ENTRY_OFFSET (stub_entry->other);
-      off = (stub_entry->stub_offset
+      off = (stub_offset
 	     + stub_entry->group->stub_sec->output_offset
 	     + stub_entry->group->stub_sec->output_section->vma);
 
       size = 4;
       r2off = 0;
-      if (stub_entry->stub_type == ppc_stub_long_branch_r2off)
+      if (stub_entry->type.r2save)
 	{
 	  r2off = get_r2off (info, stub_entry);
 	  if (r2off == (bfd_vma) -1)
 	    {
-	      htab->stub_error = TRUE;
-	      return FALSE;
+	      htab->stub_error = true;
+	      return false;
 	    }
 	  size = 8;
 	  if (PPC_HA (r2off) != 0)
@@ -11654,7 +12358,7 @@ ppc_size_one_stub (struct bfd_hash_entry
 
       /* If the branch offset is too big, use a ppc_stub_plt_branch.
 	 Do the same for -R objects without function descriptors.  */
-      if ((stub_entry->stub_type == ppc_stub_long_branch_r2off
+      if ((stub_entry->type.r2save
 	   && r2off == 0
 	   && htab->sec_info[stub_entry->target_section->id].toc_off == 0)
 	  || off + (1 << 25) >= (bfd_vma) (1 << 26))
@@ -11663,13 +12367,13 @@ ppc_size_one_stub (struct bfd_hash_entry
 
 	  br_entry = ppc_branch_hash_lookup (&htab->branch_hash_table,
 					     stub_entry->root.string + 9,
-					     TRUE, FALSE);
+					     true, false);
 	  if (br_entry == NULL)
 	    {
 	      _bfd_error_handler (_("can't build branch stub `%s'"),
 				  stub_entry->root.string);
-	      htab->stub_error = TRUE;
-	      return FALSE;
+	      htab->stub_error = true;
+	      return false;
 	    }
 
 	  if (br_entry->iter != htab->stub_iteration)
@@ -11678,7 +12382,7 @@ ppc_size_one_stub (struct bfd_hash_entry
 	      br_entry->offset = htab->brlt->size;
 	      htab->brlt->size += 8;
 
-	      if (htab->relbrlt != NULL)
+	      if (htab->relbrlt != NULL && !info->enable_dt_relr)
 		htab->relbrlt->size += sizeof (Elf64_External_Rela);
 	      else if (info->emitrelocations)
 		{
@@ -11701,8 +12405,8 @@ ppc_size_one_stub (struct bfd_hash_entry
 	      stub_entry->group->stub_sec->flags |= SEC_RELOC;
 	    }
 
-	  stub_entry->stub_type += ppc_stub_plt_branch - ppc_stub_long_branch;
-	  if (stub_entry->stub_type != ppc_stub_plt_branch_r2off)
+	  stub_entry->type.main = ppc_stub_plt_branch;
+	  if (!stub_entry->type.r2save)
 	    {
 	      size = 12;
 	      if (PPC_HA (off) != 0)
@@ -11719,25 +12423,22 @@ ppc_size_one_stub (struct bfd_hash_entry
 	      if (PPC_LO (r2off) != 0)
 		size += 4;
 	    }
+	  pad = plt_stub_pad (htab->params->plt_stub_align, stub_offset, size);
+	  stub_offset += pad;
 	}
       else if (info->emitrelocations)
 	{
 	  stub_entry->group->stub_sec->reloc_count += 1;
 	  stub_entry->group->stub_sec->flags |= SEC_RELOC;
 	}
-      break;
-
-    case ppc_stub_plt_branch_notoc:
-    case ppc_stub_plt_branch_both:
-      stub_entry->stub_type += ppc_stub_long_branch - ppc_stub_plt_branch;
-      /* Fall through.  */
-    case ppc_stub_long_branch_notoc:
-    case ppc_stub_long_branch_both:
-      off = (stub_entry->stub_offset
+    }
+  else if (stub_entry->type.main == ppc_stub_long_branch)
+    {
+      off = (stub_offset
 	     + stub_entry->group->stub_sec->output_offset
 	     + stub_entry->group->stub_sec->output_section->vma);
       size = 0;
-      if (stub_entry->stub_type == ppc_stub_long_branch_both)
+      if (stub_entry->type.r2save)
 	size = 4;
       off += size;
       targ = (stub_entry->target_value
@@ -11746,34 +12447,55 @@ ppc_size_one_stub (struct bfd_hash_entry
       odd = off & 4;
       off = targ - off;
 
+      if (stub_entry->type.sub == ppc_stub_notoc)
+	extra = size_power10_offset (off, odd);
+      else
+	extra = size_offset (off - 8);
+      /* Include branch insn plus those in the offset sequence.  */
+      size += 4 + extra;
+
+      /* If the branch can't reach, use a plt_branch.
+	 The branch insn is at the end, or "extra" bytes along.  So
+	 its offset will be "extra" bytes less that that already
+	 calculated.  */
+      if (off - extra + (1 << 25) >= (bfd_vma) (1 << 26))
+	{
+	  stub_entry->type.main = ppc_stub_plt_branch;
+	  size += 4;
+	  pad = plt_stub_pad (htab->params->plt_stub_align, stub_offset, size);
+	  if (pad != 0)
+	    {
+	      stub_offset += pad;
+	      off -= pad;
+	      odd ^= pad & 4;
+	      size -= extra;
+	      if (stub_entry->type.sub == ppc_stub_notoc)
+		extra = size_power10_offset (off, odd);
+	      else
+		extra = size_offset (off - 8);
+	      size += extra;
+	    }
+	}
+      else if (info->emitrelocations)
+	stub_entry->group->stub_sec->reloc_count +=1;
+
       if (info->emitrelocations)
 	{
 	  unsigned int num_rel;
-	  if (htab->powerxx_stubs)
-	    num_rel = num_relocs_for_powerxx_offset (off, odd);
+	  if (stub_entry->type.sub == ppc_stub_notoc)
+	    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);
-      else
-	extra = size_offset (off - 8);
-      /* Include branch insn plus those in the offset sequence.  */
-      size += 4 + extra;
-      /* The branch insn is at the end, or "extra" bytes along.  So
-	 its offset will be "extra" bytes less that that already
-	 calculated.  */
-      off -= extra;
-
-      if (!htab->powerxx_stubs)
+      if (stub_entry->type.sub != ppc_stub_notoc)
 	{
 	  /* After the bcl, lr has been modified so we need to emit
 	     .eh_frame info saying the return address is in r12.  */
-	  lr_used = stub_entry->stub_offset + 8;
-	  if (stub_entry->stub_type == ppc_stub_long_branch_both)
+	  lr_used = stub_offset + 8;
+	  if (stub_entry->type.r2save)
 	    lr_used += 4;
 	  /* The eh_frame info will consist of a DW_CFA_advance_loc or
 	     variant, DW_CFA_register, 65, 12, DW_CFA_advance_loc+2,
@@ -11782,33 +12504,29 @@ ppc_size_one_stub (struct bfd_hash_entry
 	  stub_entry->group->eh_size += eh_advance_size (delta) + 6;
 	  stub_entry->group->lr_restore = lr_used + 8;
 	}
-
-      /* If the branch can't reach, use a plt_branch.  */
-      if (off + (1 << 25) >= (bfd_vma) (1 << 26))
+    }
+  else if (stub_entry->type.sub >= ppc_stub_notoc)
+    {
+      BFD_ASSERT (stub_entry->type.main == ppc_stub_plt_call);
+      lr_used = 0;
+      if (stub_entry->h != NULL
+	  && is_tls_get_addr (&stub_entry->h->elf, htab)
+	  && htab->params->tls_get_addr_opt)
 	{
-	  stub_entry->stub_type += (ppc_stub_plt_branch_notoc
-				    - ppc_stub_long_branch_notoc);
-	  size += 4;
+	  lr_used += 7 * 4;
+	  if (!htab->params->no_tls_get_addr_regsave)
+	    lr_used += 11 * 4;
+	  else if (stub_entry->type.r2save)
+	    lr_used += 2 * 4;
 	}
-      else if (info->emitrelocations)
-	stub_entry->group->stub_sec->reloc_count +=1;
-      break;
-
-    case ppc_stub_plt_call_notoc:
-    case ppc_stub_plt_call_both:
-      off = (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_both)
-	off += 4;
+      if (stub_entry->type.r2save)
+	lr_used += 4;
       targ = stub_entry->plt_ent->plt.offset & ~1;
       if (targ >= (bfd_vma) -2)
 	abort ();
 
       plt = htab->elf.splt;
-      if (!htab->elf.dynamic_sections_created
-	  || stub_entry->h == NULL
-	  || stub_entry->h->elf.dynindx == -1)
+      if (use_local_plt (info, elf_hash_entry (stub_entry->h)))
 	{
 	  if (stub_entry->symtype == STT_GNU_IFUNC)
 	    plt = htab->elf.iplt;
@@ -11816,38 +12534,39 @@ ppc_size_one_stub (struct bfd_hash_entry
 	    plt = htab->pltlocal;
 	}
       targ += plt->output_offset + plt->output_section->vma;
+      off = (stub_offset
+	     + stub_entry->group->stub_sec->output_offset
+	     + stub_entry->group->stub_sec->output_section->vma
+	     + lr_used);
       odd = off & 4;
       off = targ - off;
 
-      if (htab->params->plt_stub_align != 0)
+      size = plt_stub_size (htab, stub_entry, off, odd);
+      pad = plt_stub_pad (htab->params->plt_stub_align, stub_offset, size);
+      if (pad != 0)
 	{
-	  unsigned pad = plt_stub_pad (htab, stub_entry, off);
-
-	  stub_entry->group->stub_sec->size += pad;
-	  stub_entry->stub_offset = stub_entry->group->stub_sec->size;
+	  stub_offset += pad;
 	  off -= pad;
+	  odd ^= pad & 4;
+	  size = plt_stub_size (htab, stub_entry, off, odd);
 	}
 
       if (info->emitrelocations)
 	{
 	  unsigned int num_rel;
-	  if (htab->powerxx_stubs)
-	    num_rel = num_relocs_for_powerxx_offset (off, odd);
+	  if (stub_entry->type.sub == ppc_stub_notoc)
+	    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;
 	}
 
-      size = plt_stub_size (htab, stub_entry, off);
-
-      if (!htab->powerxx_stubs)
+      if (stub_entry->type.sub != ppc_stub_notoc)
 	{
 	  /* After the bcl, lr has been modified so we need to emit
 	     .eh_frame info saying the return address is in r12.  */
-	  lr_used = stub_entry->stub_offset + 8;
-	  if (stub_entry->stub_type == ppc_stub_plt_call_both)
-	    lr_used += 4;
+	  lr_used += stub_offset + 8;
 	  /* The eh_frame info will consist of a DW_CFA_advance_loc or
 	     variant, DW_CFA_register, 65, 12, DW_CFA_advance_loc+2,
 	     DW_CFA_restore_extended 65.  */
@@ -11855,17 +12574,34 @@ ppc_size_one_stub (struct bfd_hash_entry
 	  stub_entry->group->eh_size += eh_advance_size (delta) + 6;
 	  stub_entry->group->lr_restore = lr_used + 8;
 	}
-      break;
-
-    case ppc_stub_plt_call:
-    case ppc_stub_plt_call_r2save:
+      if (stub_entry->h != NULL
+	  && is_tls_get_addr (&stub_entry->h->elf, htab)
+	  && htab->params->tls_get_addr_opt)
+	{
+	  if (!htab->params->no_tls_get_addr_regsave)
+	    {
+	      unsigned int cfa_updt = 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 = stub_offset + size - 4;
+	    }
+	  else if (stub_entry->type.r2save)
+	    {
+	      lr_used = stub_offset + size - 20;
+	      delta = lr_used - stub_entry->group->lr_restore;
+	      stub_entry->group->eh_size += eh_advance_size (delta) + 6;
+	      stub_entry->group->lr_restore = stub_offset + size - 4;
+	    }
+	}
+    }
+  else if (stub_entry->type.main == ppc_stub_plt_call)
+    {
       targ = stub_entry->plt_ent->plt.offset & ~(bfd_vma) 1;
       if (targ >= (bfd_vma) -2)
 	abort ();
       plt = htab->elf.splt;
-      if (!htab->elf.dynamic_sections_created
-	  || stub_entry->h == NULL
-	  || stub_entry->h->elf.dynindx == -1)
+      if (use_local_plt (info, elf_hash_entry (stub_entry->h)))
 	{
 	  if (stub_entry->symtype == STT_GNU_IFUNC)
 	    plt = htab->elf.iplt;
@@ -11878,13 +12614,9 @@ ppc_size_one_stub (struct bfd_hash_entry
 	     + htab->sec_info[stub_entry->group->link_sec->id].toc_off);
       off = targ - off;
 
-      if (htab->params->plt_stub_align != 0)
-	{
-	  unsigned pad = plt_stub_pad (htab, stub_entry, off);
-
-	  stub_entry->group->stub_sec->size += pad;
-	  stub_entry->stub_offset = stub_entry->group->stub_sec->size;
-	}
+      size = plt_stub_size (htab, stub_entry, off, 0);
+      pad = plt_stub_pad (htab->params->plt_stub_align, stub_offset, size);
+      stub_offset += pad;
 
       if (info->emitrelocations)
 	{
@@ -11897,38 +12629,42 @@ ppc_size_one_stub (struct bfd_hash_entry
 	  stub_entry->group->stub_sec->flags |= SEC_RELOC;
 	}
 
-      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)
+	  && stub_entry->type.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;
-	  stub_entry->group->lr_restore = size - 4;
+	  if (!htab->params->no_tls_get_addr_regsave)
+	    {
+	      /* Adjustments to r1 need to be described.  */
+	      unsigned int cfa_updt = 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;
+	    }
+	  else
+	    {
+	      lr_used = 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;
+	    }
+	  stub_entry->group->lr_restore = stub_offset + size - 4;
 	}
-      break;
-
-    default:
+    }
+  else
+    {
       BFD_FAIL ();
-      return FALSE;
+      return false;
     }
 
-  stub_entry->group->stub_sec->size += size;
-  return TRUE;
+  if (stub_entry->stub_offset != stub_offset)
+    htab->stub_changed = true;
+  stub_entry->stub_offset = stub_offset;
+  stub_entry->group->stub_sec->size = stub_offset + size;
+  return true;
 }
 
 /* Set up various things so that we can make a list of input sections
@@ -11939,15 +12675,19 @@ 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)
     return -1;
 
+  /* The access to _bfd_section_id here is unlocked, so for the time
+     being this function cannot be called in multi-threaded mode.  */
+  BFD_ASSERT (!_bfd_threading_enabled ());
+
   htab->sec_info_arr_size = _bfd_section_id;
   amt = sizeof (*htab->sec_info) * (htab->sec_info_arr_size);
-  htab->sec_info = bfd_zmalloc (amt);
+  htab->sec_info = bfd_zalloc (info->output_bfd, amt);
   if (htab->sec_info == NULL)
     return -1;
 
@@ -11974,19 +12714,19 @@ ppc64_elf_start_multitoc_partition (stru
    and linker generated GOT section.  Group input bfds such that the toc
    within a group is less than 64k in size.  */
 
-bfd_boolean
+bool
 ppc64_elf_next_toc_section (struct bfd_link_info *info, asection *isec)
 {
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
   bfd_vma addr, off, limit;
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (!htab->second_toc_pass)
     {
       /* Keep track of the first .toc or .got section for this input bfd.  */
-      bfd_boolean new_bfd = htab->toc_bfd != isec->owner;
+      bool new_bfd = htab->toc_bfd != isec->owner;
 
       if (new_bfd)
 	{
@@ -12020,17 +12760,17 @@ ppc64_elf_next_toc_section (struct bfd_l
       if (new_bfd
 	  && elf_gp (isec->owner) != 0
 	  && elf_gp (isec->owner) != off)
-	return FALSE;
+	return false;
 
       elf_gp (isec->owner) = off;
-      return TRUE;
+      return true;
     }
 
   /* During the second pass toc_first_sec points to the start of
      a toc group, and toc_curr is used to track the old elf_gp.
      We use toc_bfd to ensure we only look at each bfd once.  */
   if (htab->toc_bfd == isec->owner)
-    return TRUE;
+    return true;
   htab->toc_bfd = isec->owner;
 
   if (htab->toc_first_sec == NULL
@@ -12044,55 +12784,55 @@ ppc64_elf_next_toc_section (struct bfd_l
   off = addr - elf_gp (info->output_bfd) + TOC_BASE_OFF;
   elf_gp (isec->owner) = off;
 
-  return TRUE;
+  return true;
 }
 
 /* Called via elf_link_hash_traverse to merge GOT entries for global
    symbol H.  */
 
-static bfd_boolean
+static bool
 merge_global_got (struct elf_link_hash_entry *h, void *inf ATTRIBUTE_UNUSED)
 {
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   merge_got_entries (&h->got.glist);
 
-  return TRUE;
+  return true;
 }
 
 /* Called via elf_link_hash_traverse to allocate GOT entries for global
    symbol H.  */
 
-static bfd_boolean
+static bool
 reallocate_got (struct elf_link_hash_entry *h, void *inf)
 {
   struct got_entry *gent;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   for (gent = h->got.glist; gent != NULL; gent = gent->next)
     if (!gent->is_indirect)
       allocate_got (h, (struct bfd_link_info *) inf, gent);
-  return TRUE;
+  return true;
 }
 
 /* Called on the first multitoc pass after the last call to
    ppc64_elf_next_toc_section.  This function removes duplicate GOT
    entries.  */
 
-bfd_boolean
+bool
 ppc64_elf_layout_multitoc (struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
   struct bfd *ibfd, *ibfd2;
-  bfd_boolean done_something;
+  bool done_something;
 
   htab->multi_toc_needed = htab->toc_curr != elf_gp (info->output_bfd);
 
   if (!htab->do_multi_toc)
-    return FALSE;
+    return false;
 
   /* Merge global sym got entries within a toc group.  */
   elf_link_hash_traverse (&htab->elf, merge_global_got, info);
@@ -12119,7 +12859,7 @@ ppc64_elf_layout_multitoc (struct bfd_li
 		  && ent2->got.offset != (bfd_vma) -1
 		  && elf_gp (ibfd2) == elf_gp (ibfd))
 		{
-		  ent2->is_indirect = TRUE;
+		  ent2->is_indirect = true;
 		  ent2->got.ent = ent;
 		}
 	    }
@@ -12161,6 +12901,8 @@ ppc64_elf_layout_multitoc (struct bfd_li
       bfd_size_type locsymcount;
       Elf_Internal_Shdr *symtab_hdr;
       asection *s;
+      Elf_Internal_Sym *local_syms;
+      Elf_Internal_Sym *isym;
 
       if (!is_ppc64_elf (ibfd))
 	continue;
@@ -12175,8 +12917,18 @@ ppc64_elf_layout_multitoc (struct bfd_li
       local_plt = (struct plt_entry **) end_lgot_ents;
       end_local_plt = local_plt + locsymcount;
       lgot_masks = (unsigned char *) end_local_plt;
+      local_syms = (Elf_Internal_Sym *) symtab_hdr->contents;
+      if (local_syms == NULL && locsymcount != 0)
+	{
+	  local_syms = bfd_elf_get_elf_syms (ibfd, symtab_hdr, locsymcount,
+					     0, NULL, NULL, NULL);
+	  if (local_syms == NULL)
+	    return false;
+	}
       s = ppc64_elf_tdata (ibfd)->got;
-      for (; lgot_ents < end_lgot_ents; ++lgot_ents, ++lgot_masks)
+      for (isym = local_syms;
+	   lgot_ents < end_lgot_ents;
+	   ++lgot_ents, ++lgot_masks, isym++)
 	{
 	  struct got_entry *ent;
 
@@ -12198,8 +12950,10 @@ ppc64_elf_layout_multitoc (struct bfd_li
 		  htab->got_reli_size += rel_size;
 		}
 	      else if (bfd_link_pic (info)
-		       && !(ent->tls_type != 0
-			    && bfd_link_executable (info)))
+		       && (ent->tls_type == 0
+			   ? !info->enable_dt_relr
+			   : !bfd_link_executable (info))
+		       && isym->st_shndx != SHN_ABS)
 		{
 		  asection *srel = ppc64_elf_tdata (ibfd)->relgot;
 		  srel->size += rel_size;
@@ -12257,7 +13011,7 @@ ppc64_elf_layout_multitoc (struct bfd_li
      on input sections.  */
   htab->toc_bfd = NULL;
   htab->toc_first_sec = NULL;
-  htab->second_toc_pass = TRUE;
+  htab->second_toc_pass = true;
   return done_something;
 }
 
@@ -12332,6 +13086,7 @@ toc_adjusting_stub_needed (struct bfd_li
 	  r_type = ELF64_R_TYPE (rel->r_info);
 	  if (r_type != R_PPC64_REL24
 	      && r_type != R_PPC64_REL24_NOTOC
+	      && r_type != R_PPC64_REL24_P9NOTOC
 	      && r_type != R_PPC64_REL14
 	      && r_type != R_PPC64_REL14_BRTAKEN
 	      && r_type != R_PPC64_REL14_BRNTAKEN
@@ -12349,7 +13104,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
@@ -12398,7 +13153,7 @@ toc_adjusting_stub_needed (struct bfd_li
 		}
 
 	      dest = opd_entry_value (sym_sec, sym_value,
-				      &sym_sec, NULL, FALSE);
+				      &sym_sec, NULL, false);
 	      if (dest == (bfd_vma) -1)
 		continue;
 	    }
@@ -12460,9 +13215,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);
@@ -12498,13 +13252,13 @@ toc_adjusting_stub_needed (struct bfd_li
    Build lists of input sections to determine groupings between which
    we may insert linker stubs.  */
 
-bfd_boolean
+bool
 ppc64_elf_next_input_section (struct bfd_link_info *info, asection *isec)
 {
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if ((isec->output_section->flags & SEC_CODE) != 0
       && isec->output_section->id < htab->sec_info_arr_size)
@@ -12528,7 +13282,7 @@ ppc64_elf_next_input_section (struct bfd
 	    || isec->call_check_done))
 	{
 	  if (toc_adjusting_stub_needed (info, isec) < 0)
-	    return FALSE;
+	    return false;
 	}
       /* Make all sections use the TOC assigned for this object file.
 	 This will be wrong for pasted sections;  We fix that in
@@ -12538,13 +13292,13 @@ ppc64_elf_next_input_section (struct bfd
     }
 
   htab->sec_info[isec->id].toc_off = htab->toc_curr;
-  return TRUE;
+  return true;
 }
 
 /* Check that all .init and .fini sections use the same toc, if they
    have toc relocs.  */
 
-static bfd_boolean
+static bool
 check_pasted_section (struct bfd_link_info *info, const char *name)
 {
   asection *o = bfd_get_section_by_name (info->output_bfd, name);
@@ -12561,7 +13315,7 @@ check_pasted_section (struct bfd_link_in
 	    if (toc_off == 0)
 	      toc_off = htab->sec_info[i->id].toc_off;
 	    else if (toc_off != htab->sec_info[i->id].toc_off)
-	      return FALSE;
+	      return false;
 	  }
 
       if (toc_off == 0)
@@ -12577,14 +13331,16 @@ check_pasted_section (struct bfd_link_in
 	for (i = o->map_head.s; i != NULL; i = i->map_head.s)
 	  htab->sec_info[i->id].toc_off = toc_off;
     }
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 ppc64_elf_check_init_fini (struct bfd_link_info *info)
 {
-  return (check_pasted_section (info, ".init")
-	  & check_pasted_section (info, ".fini"));
+  bool ret1 = check_pasted_section (info, ".init");
+  bool ret2 = check_pasted_section (info, ".fini");
+
+  return ret1 && ret2;
 }
 
 /* See whether we can group stub sections together.  Grouping stub
@@ -12594,20 +13350,20 @@ ppc64_elf_check_init_fini (struct bfd_li
    _init and _fini functions into multiple parts.  Putting a stub in
    the middle of a function is not a good idea.  */
 
-static bfd_boolean
+static bool
 group_sections (struct bfd_link_info *info,
 		bfd_size_type stub_group_size,
-		bfd_boolean stubs_always_before_branch)
+		bool stubs_always_before_branch)
 {
   struct ppc_link_hash_table *htab;
   asection *osec;
-  bfd_boolean suppress_size_errors;
+  bool suppress_size_errors;
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
-  suppress_size_errors = FALSE;
+  suppress_size_errors = false;
   if (stub_group_size == 1)
     {
       /* Default values.  */
@@ -12615,7 +13371,7 @@ group_sections (struct bfd_link_info *in
 	stub_group_size = 0x1e00000;
       else
 	stub_group_size = 0x1c00000;
-      suppress_size_errors = TRUE;
+      suppress_size_errors = true;
     }
 
   for (osec = info->output_bfd->sections; osec != NULL; osec = osec->next)
@@ -12631,7 +13387,7 @@ group_sections (struct bfd_link_info *in
 	  asection *curr;
 	  asection *prev;
 	  bfd_size_type total;
-	  bfd_boolean big_sec;
+	  bool big_sec;
 	  bfd_vma curr_toc;
 	  struct map_stub *group;
 	  bfd_size_type group_size;
@@ -12669,7 +13425,7 @@ group_sections (struct bfd_link_info *in
 	     than 2097152 bytes, or nearly 75000 plt call stubs.  */
 	  group = bfd_alloc (curr->owner, sizeof (*group));
 	  if (group == NULL)
-	    return FALSE;
+	    return false;
 	  group->link_sec = curr;
 	  group->stub_sec = NULL;
 	  group->needs_save_res = 0;
@@ -12710,7 +13466,7 @@ group_sections (struct bfd_link_info *in
 	  tail = prev;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 static const unsigned char glink_eh_frame_cie[] =
@@ -12748,21 +13504,219 @@ maybe_strip_output (struct bfd_link_info
     }
 }
 
+/* Stash R_PPC64_RELATIVE reloc at input section SEC, r_offset OFF to
+   the array of such relocs.  */
+
+static bool
+append_relr_off (struct ppc_link_hash_table *htab, asection *sec, bfd_vma off)
+{
+  if (htab->relr_count >= htab->relr_alloc)
+    {
+      if (htab->relr_alloc == 0)
+	htab->relr_alloc = 4096;
+      else
+	htab->relr_alloc *= 2;
+      htab->relr = bfd_realloc (htab->relr,
+				htab->relr_alloc * sizeof (*htab->relr));
+      if (htab->relr == NULL)
+	return false;
+    }
+  htab->relr[htab->relr_count].sec = sec;
+  htab->relr[htab->relr_count].off = off;
+  htab->relr_count++;
+  return true;
+}
+
+/* qsort comparator for bfd_vma args.  */
+
+static int
+compare_relr_address (const void *arg1, const void *arg2)
+{
+  bfd_vma a = *(bfd_vma *) arg1;
+  bfd_vma b = *(bfd_vma *) arg2;
+  return a < b ? -1 : a > b ? 1 : 0;
+}
+
+/* Produce a malloc'd sorted array of reloc addresses from the info
+   stored by append_relr_off.  */
+
+static bfd_vma *
+sort_relr (struct ppc_link_hash_table *htab)
+{
+  bfd_vma *addr = bfd_malloc (htab->relr_count * sizeof (*addr));
+  if (addr == NULL)
+    return NULL;
+
+  for (size_t i = 0; i < htab->relr_count; i++)
+    addr[i] = (htab->relr[i].sec->output_section->vma
+	       + htab->relr[i].sec->output_offset
+	       + htab->relr[i].off);
+
+  if (htab->relr_count > 1)
+    qsort (addr, htab->relr_count, sizeof (*addr), compare_relr_address);
+
+  return addr;
+}
+
+/* Look over GOT and PLT entries saved on elf_local_got_ents for all
+   input files, stashing info about needed relative relocs.  */
+
+static bool
+got_and_plt_relr_for_local_syms (struct bfd_link_info *info)
+{
+  struct ppc_link_hash_table *htab = ppc_hash_table (info);
+  bfd *ibfd;
+
+  for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
+    {
+      struct got_entry **lgot_ents, **lgot, **end_lgot_ents;
+      struct plt_entry **local_plt, **lplt, **end_local_plt;
+      Elf_Internal_Shdr *symtab_hdr;
+      bfd_size_type locsymcount;
+      Elf_Internal_Sym *local_syms;
+      Elf_Internal_Sym *isym;
+      struct plt_entry *pent;
+      struct got_entry *gent;
+
+      if (!is_ppc64_elf (ibfd))
+	continue;
+
+      lgot_ents = elf_local_got_ents (ibfd);
+      if (!lgot_ents)
+	continue;
+
+      symtab_hdr = &elf_symtab_hdr (ibfd);
+      locsymcount = symtab_hdr->sh_info;
+      local_syms = (Elf_Internal_Sym *) symtab_hdr->contents;
+      if (local_syms == NULL && locsymcount != 0)
+	{
+	  local_syms = bfd_elf_get_elf_syms (ibfd, symtab_hdr, locsymcount,
+					     0, NULL, NULL, NULL);
+	  if (local_syms == NULL)
+	    return false;
+	}
+      end_lgot_ents = lgot_ents + locsymcount;
+      local_plt = (struct plt_entry **) end_lgot_ents;
+      end_local_plt = local_plt + locsymcount;
+      for (lgot = lgot_ents, isym = local_syms;
+	   lgot < end_lgot_ents;
+	   ++lgot, ++isym)
+	for (gent = *lgot; gent != NULL; gent = gent->next)
+	  if (!gent->is_indirect
+	      && gent->tls_type == 0
+	      && gent->got.offset != (bfd_vma) -1
+	      && isym->st_shndx != SHN_ABS)
+	    {
+	      asection *got = ppc64_elf_tdata (gent->owner)->got;
+	      if (!append_relr_off (htab, got, gent->got.offset))
+		{
+		  htab->stub_error = true;
+		  return false;
+		}
+	    }
+
+      if (!htab->opd_abi)
+	for (lplt = local_plt, isym = local_syms;
+	     lplt < end_local_plt;
+	     ++lplt, ++isym)
+	  for (pent = *lplt; pent != NULL; pent = pent->next)
+	    if (pent->plt.offset != (bfd_vma) -1
+		&& ELF_ST_TYPE (isym->st_info) != STT_GNU_IFUNC)
+	      {
+		if (!append_relr_off (htab, htab->pltlocal, pent->plt.offset))
+		  {
+		    if (symtab_hdr->contents != (unsigned char *) local_syms)
+		      free (local_syms);
+		    return false;
+		  }
+	      }
+
+      if (local_syms != NULL
+	  && symtab_hdr->contents != (unsigned char *) local_syms)
+	{
+	  if (!info->keep_memory)
+	    free (local_syms);
+	  else
+	    symtab_hdr->contents = (unsigned char *) local_syms;
+	}
+    }
+  return true;
+}
+
+/* Stash info about needed GOT and PLT entry relative relocs for
+   global symbol H.  */
+
+static bool
+got_and_plt_relr (struct elf_link_hash_entry *h, void *inf)
+{
+  struct bfd_link_info *info;
+  struct ppc_link_hash_table *htab;
+  struct plt_entry *pent;
+  struct got_entry *gent;
+
+  if (h->root.type == bfd_link_hash_indirect)
+    return true;
+
+  info = (struct bfd_link_info *) inf;
+  htab = ppc_hash_table (info);
+  if (htab == NULL)
+    return false;
+
+  if (h->type != STT_GNU_IFUNC
+      && h->def_regular
+      && (h->root.type == bfd_link_hash_defined
+	  || h->root.type == bfd_link_hash_defweak))
+    {
+      if ((!htab->elf.dynamic_sections_created
+	   || h->dynindx == -1
+	   || SYMBOL_REFERENCES_LOCAL (info, h))
+	  && !bfd_is_abs_symbol (&h->root))
+	for (gent = h->got.glist; gent != NULL; gent = gent->next)
+	  if (!gent->is_indirect
+	      && gent->tls_type == 0
+	      && gent->got.offset != (bfd_vma) -1)
+	    {
+	      asection *got = ppc64_elf_tdata (gent->owner)->got;
+	      if (!append_relr_off (htab, got, gent->got.offset))
+		{
+		  htab->stub_error = true;
+		  return false;
+		}
+	    }
+
+      if (!htab->opd_abi
+	  && use_local_plt (info, h))
+	for (pent = h->plt.plist; pent != NULL; pent = pent->next)
+	  if (pent->plt.offset != (bfd_vma) -1)
+	    {
+	      if (!append_relr_off (htab, htab->pltlocal, pent->plt.offset))
+		{
+		  htab->stub_error = true;
+		  return false;
+		}
+	    }
+    }
+  return true;
+}
+
 /* Determine and set the size of the stub section for a final link.
 
    The basic idea here is to examine all the relocations looking for
    PC-relative calls to a target that is unreachable with a "bl"
    instruction.  */
 
-bfd_boolean
+bool
 ppc64_elf_size_stubs (struct bfd_link_info *info)
 {
   bfd_size_type stub_group_size;
-  bfd_boolean stubs_always_before_branch;
+  bool stubs_always_before_branch;
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
 
   if (htab == NULL)
-    return FALSE;
+    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;
@@ -12802,7 +13756,7 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	{
 	  struct elf_link_hash_entry *h;
 	  h = elf_link_hash_lookup (&htab->elf, thread_starter[i],
-				    FALSE, FALSE, TRUE);
+				    false, false, true);
 	  htab->params->plt_thread_safe = h != NULL && h->ref_regular;
 	  if (htab->params->plt_thread_safe)
 	    break;
@@ -12815,26 +13769,56 @@ ppc64_elf_size_stubs (struct bfd_link_in
     stub_group_size = htab->params->group_size;
 
   if (!group_sections (info, stub_group_size, stubs_always_before_branch))
-    return FALSE;
+    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
-     pathological case where adding stubs on one iteration decreases
-     section gaps (perhaps due to alignment), which then requires
-     fewer or smaller stubs on the next iteration.  */
+     exit on a stub section shrinking.  */
 
   while (1)
     {
       bfd *input_bfd;
-      unsigned int bfd_indx;
       struct map_stub *group;
 
       htab->stub_iteration += 1;
+      htab->relr_count = 0;
 
-      for (input_bfd = info->input_bfds, bfd_indx = 0;
+      for (input_bfd = info->input_bfds;
 	   input_bfd != NULL;
-	   input_bfd = input_bfd->link.next, bfd_indx++)
+	   input_bfd = input_bfd->link.next)
 	{
 	  Elf_Internal_Shdr *symtab_hdr;
 	  asection *section;
@@ -12854,16 +13838,20 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	       section = section->next)
 	    {
 	      Elf_Internal_Rela *internal_relocs, *irelaend, *irela;
+	      bool is_opd;
 
 	      /* If there aren't any relocs, then there's nothing more
 		 to do.  */
 	      if ((section->flags & SEC_RELOC) == 0
 		  || (section->flags & SEC_ALLOC) == 0
 		  || (section->flags & SEC_LOAD) == 0
-		  || (section->flags & SEC_CODE) == 0
 		  || section->reloc_count == 0)
 		continue;
 
+	      if (!info->enable_dt_relr
+		  && (section->flags & SEC_CODE) == 0)
+		continue;
+
 	      /* If this section is a link-once section that will be
 		 discarded, then don't create any stubs.  */
 	      if (section->output_section == NULL
@@ -12877,6 +13865,8 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	      if (internal_relocs == NULL)
 		goto error_ret_free_local;
 
+	      is_opd = ppc64_elf_section_data (section)->sec_type == sec_opd;
+
 	      /* Now examine each relocation.  */
 	      irela = internal_relocs;
 	      irelaend = irela + section->reloc_count;
@@ -12884,13 +13874,13 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		{
 		  enum elf_ppc64_reloc_type r_type;
 		  unsigned int r_indx;
-		  enum ppc_stub_type stub_type;
+		  struct ppc_stub_type stub_type;
 		  struct ppc_stub_hash_entry *stub_entry;
 		  asection *sym_sec, *code_sec;
 		  bfd_vma sym_value, code_value;
 		  bfd_vma destination;
 		  unsigned long local_off;
-		  bfd_boolean ok_dest;
+		  bool ok_dest;
 		  struct ppc_link_hash_entry *hash;
 		  struct ppc_link_hash_entry *fdh;
 		  struct elf_link_hash_entry *h;
@@ -12910,21 +13900,74 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		    }
 
 		  /* Only look for stubs on branch instructions.  */
-		  if (r_type != R_PPC64_REL24
-		      && r_type != R_PPC64_REL24_NOTOC
-		      && r_type != R_PPC64_REL14
-		      && r_type != R_PPC64_REL14_BRTAKEN
-		      && r_type != R_PPC64_REL14_BRNTAKEN)
-		    continue;
+		  switch (r_type)
+		    {
+		    default:
+		      if (info->enable_dt_relr
+			  && maybe_relr (r_type, irela, section))
+			break;
+		      continue;
+
+		    case R_PPC64_REL24:
+		    case R_PPC64_REL24_NOTOC:
+		    case R_PPC64_REL24_P9NOTOC:
+		    case R_PPC64_REL14:
+		    case R_PPC64_REL14_BRTAKEN:
+		    case R_PPC64_REL14_BRNTAKEN:
+		      if ((section->flags & SEC_CODE) != 0)
+			break;
+		      continue;
+		    }
 
 		  /* Now determine the call target, its name, value,
 		     section.  */
 		  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;
 
-		  ok_dest = FALSE;
+		  if (r_type == R_PPC64_ADDR64 || r_type == R_PPC64_TOC)
+		    {
+		      /* Only locally defined symbols can possibly use
+			 relative relocations.  */
+		      bfd_vma r_offset;
+		      if ((sym_sec == NULL
+			   || sym_sec->output_section == NULL)
+			  /* No symbol is OK too.  */
+			  && !(sym != NULL && sym->st_shndx == 0)
+			  /* Hack for __ehdr_start, which is undefined
+			     at this point.  */
+			  && !(h != NULL && h->root.linker_def))
+			continue;
+		      if (NO_OPD_RELOCS && is_opd)
+			continue;
+		      if (!is_opd
+			  && r_type == R_PPC64_ADDR64)
+			{
+			  if (h != NULL
+			      ? h->type == STT_GNU_IFUNC
+			      : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
+			    continue;
+			  if (h != NULL
+			      ? bfd_is_abs_symbol (&h->root)
+			      : sym->st_shndx == SHN_ABS)
+			    continue;
+			  if (h != NULL
+			      && !SYMBOL_REFERENCES_LOCAL (info, h))
+			    continue;
+			}
+		      r_offset = _bfd_elf_section_offset (info->output_bfd,
+							  info,
+							  section,
+							  irela->r_offset);
+		      if (r_offset >= (bfd_vma) -2)
+			continue;
+		      if (!append_relr_off (htab, section, r_offset))
+			goto error_ret_free_internal;
+		      continue;
+		    }
+
+		  hash = ppc_elf_hash_entry (h);
+		  ok_dest = false;
 		  fdh = NULL;
 		  sym_value = 0;
 		  if (hash == NULL)
@@ -12932,14 +13975,14 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		      sym_value = sym->st_value;
 		      if (sym_sec != NULL
 			  && sym_sec->output_section != NULL)
-			ok_dest = TRUE;
+			ok_dest = true;
 		    }
 		  else if (hash->elf.root.type == bfd_link_hash_defined
 			   || hash->elf.root.type == bfd_link_hash_defweak)
 		    {
 		      sym_value = hash->elf.root.u.def.value;
 		      if (sym_sec->output_section != NULL)
-			ok_dest = TRUE;
+			ok_dest = true;
 		    }
 		  else if (hash->elf.root.type == bfd_link_hash_undefweak
 			   || hash->elf.root.type == bfd_link_hash_undefined)
@@ -12957,7 +14000,7 @@ ppc64_elf_size_stubs (struct bfd_link_in
 			      sym_sec = fdh->elf.root.u.def.section;
 			      sym_value = fdh->elf.root.u.def.value;
 			      if (sym_sec->output_section != NULL)
-				ok_dest = TRUE;
+				ok_dest = true;
 			    }
 			  else
 			    fdh = NULL;
@@ -12998,7 +14041,7 @@ ppc64_elf_size_stubs (struct bfd_link_in
 			  sym_value += adjust;
 			}
 		      dest = opd_entry_value (sym_sec, sym_value,
-					      &code_sec, &code_value, FALSE);
+					      &code_sec, &code_value, false);
 		      if (dest != (bfd_vma) -1)
 			{
 			  destination = dest;
@@ -13015,23 +14058,35 @@ ppc64_elf_size_stubs (struct bfd_link_in
 
 		  /* Determine what (if any) linker stub is needed.  */
 		  plt_ent = NULL;
-		  stub_type = ppc_type_of_stub (section, irela, &hash,
-						&plt_ent, destination,
-						local_off);
+		  stub_type.main = ppc_type_of_stub (section, irela, &hash,
+						     &plt_ent, destination,
+						     local_off);
+		  stub_type.sub = ppc_stub_toc;
+		  stub_type.r2save = 0;
 
-		  if (r_type == R_PPC64_REL24_NOTOC)
+		  if (r_type == R_PPC64_REL24_NOTOC
+		      || r_type == R_PPC64_REL24_P9NOTOC)
 		    {
-		      if (stub_type == ppc_stub_plt_call)
-			stub_type = ppc_stub_plt_call_notoc;
-		      else if (stub_type == ppc_stub_long_branch
+		      enum ppc_stub_sub_type notoc = ppc_stub_notoc;
+		      if (htab->params->power10_stubs == 0
+			  || (r_type == R_PPC64_REL24_P9NOTOC
+			      && htab->params->power10_stubs != 1))
+			notoc = ppc_stub_p9notoc;
+		      if (stub_type.main == ppc_stub_plt_call)
+			stub_type.sub = notoc;
+		      else if (stub_type.main == ppc_stub_long_branch
 			       || (code_sec != NULL
 				   && code_sec->output_section != NULL
 				   && (((hash ? hash->elf.other : sym->st_other)
 					& STO_PPC64_LOCAL_MASK)
 				       > 1 << STO_PPC64_LOCAL_BIT)))
-			stub_type = ppc_stub_long_branch_notoc;
+			{
+			  stub_type.main = ppc_stub_long_branch;
+			  stub_type.sub = notoc;
+			  stub_type.r2save = 0;
+			}
 		    }
-		  else if (stub_type != ppc_stub_plt_call)
+		  else if (stub_type.main != ppc_stub_plt_call)
 		    {
 		      /* Check whether we need a TOC adjusting stub.
 			 Since the linker pastes together pieces from
@@ -13041,25 +14096,27 @@ 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))
-			stub_type = ppc_stub_long_branch_r2off;
+			{
+			  stub_type.main = ppc_stub_long_branch;
+			  stub_type.sub = ppc_stub_toc;
+			  stub_type.r2save = 1;
+			}
 		    }
 
-		  if (stub_type == ppc_stub_none)
+		  if (stub_type.main == ppc_stub_none)
 		    continue;
 
 		  /* __tls_get_addr calls might be eliminated.  */
-		  if (stub_type != ppc_stub_plt_call
-		      && stub_type != ppc_stub_plt_call_notoc
+		  if (stub_type.main != ppc_stub_plt_call
 		      && 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,11 +14126,13 @@ 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;
 		    }
 
-		  if (stub_type == ppc_stub_plt_call)
+		  if (stub_type.main == ppc_stub_plt_call
+		      && stub_type.sub == ppc_stub_toc)
 		    {
 		      if (!htab->opd_abi
 			  && htab->params->plt_localentry0 != 0
@@ -13089,7 +14148,7 @@ ppc64_elf_size_stubs (struct bfd_link_in
 			    goto error_ret_free_internal;
 			}
 		      else
-			stub_type = ppc_stub_plt_call_r2save;
+			stub_type.r2save = 1;
 		    }
 
 		  /* Support for grouping stub sections.  */
@@ -13101,96 +14160,37 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		    goto error_ret_free_internal;
 
 		  stub_entry = ppc_stub_hash_lookup (&htab->stub_hash_table,
-						     stub_name, FALSE, FALSE);
+						     stub_name, false, false);
 		  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
-			 stubs or vice versa, but we might be
-			 upgrading from plt_call to plt_call_r2save or
-			 from long_branch to long_branch_r2off.  */
 		      free (stub_name);
-		      old_type = stub_entry->stub_type;
-		      switch (old_type)
+		      if (!ppc_merge_stub (htab, stub_entry, stub_type, r_type))
 			{
-			default:
-			  abort ();
-
-			case ppc_stub_save_res:
-			  continue;
-
-			case ppc_stub_plt_call:
-			case ppc_stub_plt_call_r2save:
-			case ppc_stub_plt_call_notoc:
-			case ppc_stub_plt_call_both:
-			  if (stub_type == ppc_stub_plt_call)
-			    continue;
-			  else if (stub_type == ppc_stub_plt_call_r2save)
-			    {
-			      if (old_type == ppc_stub_plt_call_notoc)
-				stub_type = ppc_stub_plt_call_both;
-			    }
-			  else if (stub_type == ppc_stub_plt_call_notoc)
-			    {
-			      if (old_type == ppc_stub_plt_call_r2save)
-				stub_type = ppc_stub_plt_call_both;
-			    }
-			  else
-			    abort ();
-			  break;
-
-			case ppc_stub_plt_branch:
-			case ppc_stub_plt_branch_r2off:
-			case ppc_stub_plt_branch_notoc:
-			case ppc_stub_plt_branch_both:
-			  old_type += (ppc_stub_long_branch
-				       - ppc_stub_plt_branch);
-			  /* Fall through.  */
-			case ppc_stub_long_branch:
-			case ppc_stub_long_branch_r2off:
-			case ppc_stub_long_branch_notoc:
-			case ppc_stub_long_branch_both:
-			  if (stub_type == ppc_stub_long_branch)
-			    continue;
-			  else if (stub_type == ppc_stub_long_branch_r2off)
-			    {
-			      if (old_type == ppc_stub_long_branch_notoc)
-				stub_type = ppc_stub_long_branch_both;
-			    }
-			  else if (stub_type == ppc_stub_long_branch_notoc)
-			    {
-			      if (old_type == ppc_stub_long_branch_r2off)
-				stub_type = ppc_stub_long_branch_both;
-			    }
-			  else
-			    abort ();
-			  break;
+			  /* xgettext:c-format */
+			  _bfd_error_handler
+			    (_("%pB: cannot create stub entry %s"),
+			     section->owner, stub_entry->root.string);
+			  goto error_ret_free_internal;
 			}
-		      if (old_type < stub_type)
-			stub_entry->stub_type = stub_type;
 		      continue;
 		    }
 
 		  stub_entry = ppc_add_stub (stub_name, section, info);
+		  free (stub_name);
 		  if (stub_entry == NULL)
 		    {
-		      free (stub_name);
 		    error_ret_free_internal:
 		      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;
+		      return false;
 		    }
 
-		  stub_entry->stub_type = stub_type;
-		  if (stub_type >= ppc_stub_plt_call
-		      && stub_type <= ppc_stub_plt_call_both)
+		  stub_entry->type = stub_type;
+		  if (stub_type.main == ppc_stub_plt_call)
 		    {
 		      stub_entry->target_value = sym_value;
 		      stub_entry->target_section = sym_sec;
@@ -13237,25 +14237,36 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	    {
 	      asection *stub_sec = group->stub_sec;
 
-	      if (htab->stub_iteration <= STUB_SHRINK_ITER
-		  || stub_sec->rawsize < stub_sec->size)
-		/* Past STUB_SHRINK_ITER, rawsize is the max size seen.  */
-		stub_sec->rawsize = stub_sec->size;
+	      stub_sec->rawsize = stub_sec->size;
 	      stub_sec->size = 0;
 	      stub_sec->reloc_count = 0;
 	      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)
-	htab->brlt->rawsize = htab->brlt->size;
+      htab->brlt->rawsize = htab->brlt->size;
       htab->brlt->size = 0;
       htab->brlt->reloc_count = 0;
       htab->brlt->flags &= ~SEC_RELOC;
       if (htab->relbrlt != NULL)
 	htab->relbrlt->size = 0;
 
+      if (htab->elf.srelrdyn != NULL)
+	{
+	  htab->elf.srelrdyn->rawsize = htab->elf.srelrdyn->size;
+	  htab->elf.srelrdyn->size = 0;
+	}
+
+      htab->stub_changed = false;
+      htab->stub_id = 0;
       bfd_hash_traverse (&htab->stub_hash_table, ppc_size_one_stub, info);
 
       for (group = htab->group; group != NULL; group = group->next)
@@ -13297,6 +14308,52 @@ ppc64_elf_size_stubs (struct bfd_link_in
 		= (group->stub_sec->size + (1 << align) - 1) & -(1 << align);
 	    }
 
+      if (htab->elf.srelrdyn != NULL)
+	{
+	  bfd_vma r_offset;
+
+	  for (r_offset = 0; r_offset < htab->brlt->size; r_offset += 8)
+	    if (!append_relr_off (htab, htab->brlt, r_offset))
+	      return false;
+
+	  if (!got_and_plt_relr_for_local_syms (info))
+	    return false;
+	  elf_link_hash_traverse (&htab->elf, got_and_plt_relr, info);
+	  if (htab->stub_error)
+	    return false;
+
+	  bfd_vma *relr_addr = sort_relr (htab);
+	  if (htab->relr_count != 0 && relr_addr == NULL)
+	    return false;
+
+	  size_t i = 0;
+	  while (i < htab->relr_count)
+	    {
+	      bfd_vma base = relr_addr[i];
+	      htab->elf.srelrdyn->size += 8;
+	      i++;
+	      /* Handle possible duplicate address.  This can happen
+		 as sections increase in size when adding stubs.  */
+	      while (i < htab->relr_count
+		     && relr_addr[i] == base)
+		i++;
+	      base += 8;
+	      while (1)
+		{
+		  size_t start_i = i;
+		  while (i < htab->relr_count
+			 && relr_addr[i] - base < 63 * 8
+			 && (relr_addr[i] - base) % 8 == 0)
+		    i++;
+		  if (i == start_i)
+		    break;
+		  htab->elf.srelrdyn->size += 8;
+		  base += 63 * 8;
+		}
+	    }
+	  free (relr_addr);
+	}
+
       for (group = htab->group; group != NULL; group = group->next)
 	if (group->stub_sec != NULL
 	    && group->stub_sec->rawsize != group->stub_sec->size
@@ -13305,13 +14362,36 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	  break;
 
       if (group == NULL
+	  && (!htab->stub_changed
+	      || htab->stub_iteration > STUB_SHRINK_ITER)
 	  && (htab->brlt->rawsize == htab->brlt->size
 	      || (htab->stub_iteration > STUB_SHRINK_ITER
 		  && htab->brlt->rawsize > htab->brlt->size))
+	  && (htab->elf.srelrdyn == NULL
+	      || htab->elf.srelrdyn->rawsize == htab->elf.srelrdyn->size
+	      || (htab->stub_iteration > STUB_SHRINK_ITER
+		  && htab->elf.srelrdyn->rawsize > htab->elf.srelrdyn->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;
 
+      if (htab->stub_iteration > STUB_SHRINK_ITER)
+	{
+	  for (group = htab->group; group != NULL; group = group->next)
+	    if (group->stub_sec != NULL
+		&& group->stub_sec->size < group->stub_sec->rawsize)
+	      group->stub_sec->size = group->stub_sec->rawsize;
+
+	  if (htab->brlt->size < htab->brlt->rawsize)
+	    htab->brlt->size = htab->brlt->rawsize;
+
+	  if (htab->elf.srelrdyn != NULL
+	      && htab->elf.srelrdyn->size < htab->elf.srelrdyn->rawsize)
+	    htab->elf.srelrdyn->size = htab->elf.srelrdyn->rawsize;
+	}
+
       /* Ask the linker to do its stuff.  */
       (*htab->params->layout_sections_again) ();
     }
@@ -13330,8 +14410,9 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	 indexed in .eh_frame_hdr.  */
       p = bfd_zalloc (htab->glink_eh_frame->owner, htab->glink_eh_frame->size);
       if (p == NULL)
-	return FALSE;
+	return false;
       htab->glink_eh_frame->contents = p;
+      htab->glink_eh_frame->alloced = 1;
       last_fde = p;
       align = 4;
 
@@ -13385,11 +14466,11 @@ ppc64_elf_size_stubs (struct bfd_link_in
 	  /* Augmentation.  */
 	  p += 1;
 
-	  *p++ = DW_CFA_advance_loc + 1;
+	  *p++ = DW_CFA_advance_loc + (htab->has_plt_localentry0 ? 3 : 2);
 	  *p++ = DW_CFA_register;
 	  *p++ = 65;
 	  *p++ = htab->opd_abi ? 12 : 0;
-	  *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 5 : 7);
+	  *p++ = DW_CFA_advance_loc + (htab->opd_abi ? 4 : 2);
 	  *p++ = DW_CFA_restore_extended;
 	  *p++ = 65;
 	  p += ((24 + align - 1) & -align) - 24;
@@ -13405,10 +14486,14 @@ 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);
+  if (htab->elf.srelrdyn != NULL)
+    maybe_strip_output (info, htab->elf.srelrdyn);
 
-  return TRUE;
+  return true;
 }
 
 /* Called after we have determined section placement.  If sections
@@ -13425,24 +14510,23 @@ ppc64_elf_set_toc (struct bfd_link_info
       struct elf_link_hash_entry *h;
       struct elf_link_hash_table *htab = elf_hash_table (info);
 
-      if (is_elf_hash_table (htab)
+      if (is_elf_hash_table (&htab->root)
 	  && htab->hgot != NULL)
 	h = htab->hgot;
       else
 	{
-	  h = elf_link_hash_lookup (htab, ".TOC.", FALSE, FALSE, TRUE);
-	  if (is_elf_hash_table (htab))
+	  h = (struct elf_link_hash_entry *)
+	    bfd_link_hash_lookup (&htab->root, ".TOC.", false, false, true);
+	  if (is_elf_hash_table (&htab->root))
 	    htab->hgot = h;
 	}
       if (h != NULL
 	  && h->root.type == bfd_link_hash_defined
 	  && !h->root.linker_def
-	  && (!is_elf_hash_table (htab)
+	  && (!is_elf_hash_table (&htab->root)
 	      || 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;
 	}
@@ -13516,7 +14600,7 @@ ppc64_elf_set_toc (struct bfd_link_info
 	  struct bfd_link_hash_entry *bh = NULL;
 	  _bfd_generic_link_add_one_symbol (info, obfd, ".TOC.", BSF_GLOBAL,
 					    s, TOC_BASE_OFF - adjust,
-					    NULL, FALSE, FALSE, &bh);
+					    NULL, false, false, &bh);
 	}
     }
   return TOCstart;
@@ -13525,7 +14609,7 @@ ppc64_elf_set_toc (struct bfd_link_info
 /* Called via elf_link_hash_traverse from ppc64_elf_build_stubs to
    write out any global entry stubs, and PLT relocations.  */
 
-static bfd_boolean
+static bool
 build_global_entry_stubs_and_plt (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
@@ -13534,12 +14618,12 @@ build_global_entry_stubs_and_plt (struct
   asection *s;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = inf;
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   for (ent = h->plt.plist; ent != NULL; ent = ent->next)
     if (ent->plt.offset != (bfd_vma) -1)
@@ -13550,8 +14634,7 @@ build_global_entry_stubs_and_plt (struct
 	asection *plt, *relplt;
 	bfd_byte *loc;
 
-	if (!htab->elf.dynamic_sections_created
-	    || h->dynindx == -1)
+	if (use_local_plt (info, h))
 	  {
 	    if (!(h->def_regular
 		  && (h->root.type == bfd_link_hash_defined
@@ -13561,7 +14644,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
@@ -13570,7 +14653,9 @@ build_global_entry_stubs_and_plt (struct
 	    else
 	      {
 		plt = htab->pltlocal;
-		if (bfd_link_pic (info))
+		relplt = NULL;
+		if (bfd_link_pic (info)
+		    && !(info->enable_dt_relr && !htab->opd_abi))
 		  {
 		    relplt = htab->relpltlocal;
 		    if (htab->opd_abi)
@@ -13578,13 +14663,8 @@ build_global_entry_stubs_and_plt (struct
 		    else
 		      rela.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE);
 		  }
-		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)
 	      {
@@ -13602,9 +14682,8 @@ build_global_entry_stubs_and_plt (struct
 		rela.r_offset = (plt->output_section->vma
 				 + plt->output_offset
 				 + ent->plt.offset);
-		loc = relplt->contents + (relplt->reloc_count++
-					  * sizeof (Elf64_External_Rela));
-		bfd_elf64_swap_reloca_out (info->output_bfd, &rela, loc);
+		BFD_ASSERT (count_and_swap_reloc_out (info->output_bfd, &rela,
+						      relplt));
 	      }
 	  }
 	else
@@ -13618,20 +14697,21 @@ 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;
-	    bfd_elf64_swap_reloca_out (info->output_bfd, &rela, loc);
+	      htab->elf.ifunc_resolvers = true;
+	    BFD_ASSERT (swap_reloc_out (info->output_bfd, &rela,
+					loc, htab->elf.srelplt));
 	  }
       }
 
   if (!h->pointer_equality_needed)
-    return TRUE;
+    return true;
 
   if (h->def_regular)
-    return TRUE;
+    return true;
 
   s = htab->global_entry;
   if (s == NULL || s->size == 0)
-    return TRUE;
+    return true;
 
   for (ent = h->plt.plist; ent != NULL; ent = ent->next)
     if (ent->plt.offset != (bfd_vma) -1
@@ -13643,8 +14723,7 @@ build_global_entry_stubs_and_plt (struct
 
 	p = s->contents + h->root.u.def.value;
 	plt = htab->elf.splt;
-	if (!htab->elf.dynamic_sections_created
-	    || h->dynindx == -1)
+	if (use_local_plt (info, h))
 	  {
 	    if (h->type == STT_GNU_IFUNC)
 	      plt = htab->elf.iplt;
@@ -13660,22 +14739,23 @@ build_global_entry_stubs_and_plt (struct
 	      (_("%P: linkage table error against `%pT'\n"),
 	       h->root.root.string);
 	    bfd_set_error (bfd_error_bad_value);
-	    htab->stub_error = TRUE;
+	    htab->stub_error = true;
 	  }
 
 	htab->stub_count[ppc_stub_global_entry - 1] += 1;
 	if (htab->params->emit_stub_syms)
 	  {
 	    size_t len = strlen (h->root.root.string);
-	    char *name = bfd_malloc (sizeof "12345678.global_entry." + len);
+	    char *name = bfd_alloc (info->output_bfd,
+				    sizeof "12345678.global_entry." + len);
 
 	    if (name == NULL)
-	      return FALSE;
+	      return false;
 
 	    sprintf (name, "%08x.global_entry.%s", s->id, h->root.root.string);
-	    h = elf_link_hash_lookup (&htab->elf, name, TRUE, FALSE, FALSE);
+	    h = elf_link_hash_lookup (&htab->elf, name, true, false, false);
 	    if (h == NULL)
-	      return FALSE;
+	      return false;
 	    if (h->root.type == bfd_link_hash_new)
 	      {
 		h->root.type = bfd_link_hash_defined;
@@ -13702,12 +14782,12 @@ build_global_entry_stubs_and_plt (struct
 	bfd_put_32 (s->owner, BCTR, p);
 	break;
       }
-  return TRUE;
+  return true;
 }
 
 /* Write PLT relocs for locals.  */
 
-static bfd_boolean
+static bool
 write_plt_relocs_for_local_syms (struct bfd_link_info *info)
 {
   struct ppc_link_hash_table *htab = ppc_hash_table (info);
@@ -13741,39 +14821,38 @@ write_plt_relocs_for_local_syms (struct
 	      Elf_Internal_Sym *sym;
 	      asection *sym_sec;
 	      asection *plt, *relplt;
-	      bfd_byte *loc;
 	      bfd_vma val;
 
 	      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;
+		  return false;
 		}
 
 	      val = sym->st_value + ent->addend;
-	      if (ELF_ST_TYPE (sym->st_info) != STT_GNU_IFUNC)
-		val += PPC64_LOCAL_ENTRY_OFFSET (sym->st_other);
 	      if (sym_sec != NULL && sym_sec->output_section != NULL)
 		val += sym_sec->output_offset + sym_sec->output_section->vma;
 
 	      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;
 		}
 	      else
 		{
 		  plt = htab->pltlocal;
-		  relplt = bfd_link_pic (info) ? htab->relpltlocal : NULL;
+		  relplt = NULL;
+		  if (bfd_link_pic (info)
+		      && !(info->enable_dt_relr && !htab->opd_abi))
+		    relplt = htab->relpltlocal;
 		}
 
 	      if (relplt == NULL)
 		{
-		  loc = plt->contents + ent->plt.offset;
+		  bfd_byte *loc = plt->contents + ent->plt.offset;
 		  bfd_put_64 (info->output_bfd, val, loc);
 		  if (htab->opd_abi)
 		    {
@@ -13802,9 +14881,8 @@ write_plt_relocs_for_local_syms (struct
 			rela.r_info = ELF64_R_INFO (0, R_PPC64_RELATIVE);
 		    }
 		  rela.r_addend = val;
-		  loc = relplt->contents + (relplt->reloc_count++
-					    * sizeof (Elf64_External_Rela));
-		  bfd_elf64_swap_reloca_out (info->output_bfd, &rela, loc);
+		  BFD_ASSERT (count_and_swap_reloc_out (info->output_bfd,
+							 &rela, relplt));
 		}
 	    }
 
@@ -13817,14 +14895,82 @@ write_plt_relocs_for_local_syms (struct
 	    symtab_hdr->contents = (unsigned char *) local_syms;
 	}
     }
-  return TRUE;
+  return true;
+}
+
+/* Emit the static wrapper function preserving registers around a
+   __tls_get_addr_opt call.  */
+
+static bool
+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.  */
 
-bfd_boolean
+bool
 ppc64_elf_build_stubs (struct bfd_link_info *info,
 		       char **stats)
 {
@@ -13835,7 +14981,7 @@ ppc64_elf_build_stubs (struct bfd_link_i
   int stub_sec_count = 0;
 
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Allocate memory to hold the linker stubs.  */
   for (group = htab->group; group != NULL; group = group->next)
@@ -13848,7 +14994,8 @@ ppc64_elf_build_stubs (struct bfd_link_i
 	  stub_sec->contents = bfd_zalloc (htab->params->stub_bfd,
 					   stub_sec->size);
 	  if (stub_sec->contents == NULL)
-	    return FALSE;
+	    return false;
+	  stub_sec->alloced = 1;
 	  stub_sec->size = 0;
 	}
     }
@@ -13863,9 +15010,9 @@ ppc64_elf_build_stubs (struct bfd_link_i
 	{
 	  struct elf_link_hash_entry *h;
 	  h = elf_link_hash_lookup (&htab->elf, "__glink_PLTresolve",
-				    TRUE, FALSE, FALSE);
+				    true, false, false);
 	  if (h == NULL)
-	    return FALSE;
+	    return false;
 	  if (h->root.type == bfd_link_hash_new)
 	    {
 	      h->root.type = bfd_link_hash_defined;
@@ -13886,7 +15033,7 @@ ppc64_elf_build_stubs (struct bfd_link_i
 	{
 	  Elf_Internal_Rela *r = get_relocs (htab->glink, 1);
 	  if (r == NULL)
-	    return FALSE;
+	    return false;
 	  r->r_offset = (htab->glink->output_offset
 			 + htab->glink->output_section->vma);
 	  r->r_info = ELF64_R_INFO (0, R_PPC64_REL64);
@@ -13921,23 +15068,60 @@ ppc64_elf_build_stubs (struct bfd_link_i
 	}
       else
 	{
+	  unsigned int insn;
+
+	  /* 0:
+	     .	.quad plt0-1f		# plt0 entry relative to 1:
+	     #
+	     # We get here with r12 initially @ a glink branch
+	     # Load the address of _dl_runtime_resolve from plt0 and
+	     # jump to it, with r0 set to the index of the PLT entry
+	     # to be resolved and r11 the link map.
+	     __glink_PLTresolve:
+	     .	std %r2,24(%r1)		# optional
+	     .	mflr %r0
+	     .	bcl 20,31,1f
+	     1:
+	     .	mflr %r11
+	     .	mtlr %r0
+	     .	ld %r0,(0b-1b)(%r11)
+	     .	sub %r12,%r12,%r11
+	     .	add %r11,%r0,%r11
+	     .	addi %r0,%r12,1b-2f
+	     .	ld %r12,0(%r11)
+	     .	srdi %r0,%r0,2
+	     .	mtctr %r12
+	     .	ld %r11,8(%r11)
+	     .	bctr
+	     2:
+	     .	b __glink_PLTresolve
+	     .	...
+	     .	b __glink_PLTresolve  */
+
+	  if (htab->has_plt_localentry0)
+	    {
+	      bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p);
+	      p += 4;
+	    }
 	  bfd_put_32 (htab->glink->owner, MFLR_R0, p);
 	  p += 4;
 	  bfd_put_32 (htab->glink->owner, BCL_20_31, p);
 	  p += 4;
 	  bfd_put_32 (htab->glink->owner, MFLR_R11, p);
 	  p += 4;
-	  bfd_put_32 (htab->glink->owner, STD_R2_0R1 + 24, p);
-	  p += 4;
-	  bfd_put_32 (htab->glink->owner, LD_R2_0R11 | (-16 & 0xfffc), p);
-	  p += 4;
 	  bfd_put_32 (htab->glink->owner, MTLR_R0, p);
 	  p += 4;
+	  if (htab->has_plt_localentry0)
+	    insn = LD_R0_0R11 | (-20 & 0xfffc);
+	  else
+	    insn = LD_R0_0R11 | (-16 & 0xfffc);
+	  bfd_put_32 (htab->glink->owner, insn, p);
+	  p += 4;
 	  bfd_put_32 (htab->glink->owner, SUB_R12_R12_R11, p);
 	  p += 4;
-	  bfd_put_32 (htab->glink->owner, ADD_R11_R2_R11, p);
+	  bfd_put_32 (htab->glink->owner, ADD_R11_R0_R11, p);
 	  p += 4;
-	  bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-48 & 0xffff), p);
+	  bfd_put_32 (htab->glink->owner, ADDI_R0_R12 | (-44 & 0xffff), p);
 	  p += 4;
 	  bfd_put_32 (htab->glink->owner, LD_R12_0R11, p);
 	  p += 4;
@@ -13979,28 +15163,49 @@ 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);
 
   if (!write_plt_relocs_for_local_syms (info))
-    return FALSE;
+    return false;
 
   if (htab->brlt != NULL && htab->brlt->size != 0)
     {
       htab->brlt->contents = bfd_zalloc (htab->brlt->owner,
 					 htab->brlt->size);
       if (htab->brlt->contents == NULL)
-	return FALSE;
+	return false;
+      htab->brlt->alloced = 1;
     }
   if (htab->relbrlt != NULL && htab->relbrlt->size != 0)
     {
       htab->relbrlt->contents = bfd_zalloc (htab->relbrlt->owner,
 					    htab->relbrlt->size);
       if (htab->relbrlt->contents == NULL)
-	return FALSE;
+	return false;
+      htab->relbrlt->alloced = 1;
     }
 
   /* Build the stubs as directed by the stub hash table.  */
+  htab->stub_id = 0;
   bfd_hash_traverse (&htab->stub_hash_table, ppc_build_one_stub, info);
 
   for (group = htab->group; group != NULL; group = group->next)
@@ -14030,7 +15235,7 @@ ppc64_elf_build_stubs (struct bfd_link_i
 
 	    for (i = 0; i < ARRAY_SIZE (save_res_funcs); i++)
 	      if (!sfpr_define (info, &save_res_funcs[i], stub_sec))
-		return FALSE;
+		return false;
 	  }
       }
 
@@ -14057,7 +15262,7 @@ ppc64_elf_build_stubs (struct bfd_link_i
 		_bfd_error_handler
 		  (_("%s offset too large for .eh_frame sdata4 encoding"),
 		   group->stub_sec->name);
-		return FALSE;
+		return false;
 	      }
 	    bfd_put_32 (htab->elf.dynobj, val, p + 8);
 	    p += (group->eh_size + 17 + 3) & -4;
@@ -14076,13 +15281,70 @@ ppc64_elf_build_stubs (struct bfd_link_i
 	      _bfd_error_handler
 		(_("%s offset too large for .eh_frame sdata4 encoding"),
 		 htab->glink->name);
-	      return FALSE;
+	      return false;
 	    }
 	  bfd_put_32 (htab->elf.dynobj, val, p + 8);
 	  p += (24 + align - 1) & -align;
 	}
     }
 
+  if (htab->elf.srelrdyn != NULL && htab->elf.srelrdyn->size != 0)
+    {
+      htab->elf.srelrdyn->contents
+	= bfd_alloc (htab->elf.dynobj, htab->elf.srelrdyn->size);
+      if (htab->elf.srelrdyn->contents == NULL)
+	return false;
+      htab->elf.srelrdyn->alloced = 1;
+
+      bfd_vma *relr_addr = sort_relr (htab);
+      if (htab->relr_count != 0 && relr_addr == NULL)
+	return false;
+
+      size_t i = 0;
+      bfd_byte *loc = htab->elf.srelrdyn->contents;
+      while (i < htab->relr_count)
+	{
+	  bfd_vma base = relr_addr[i];
+	  BFD_ASSERT ((base & ((1 << RELR_ALIGN) - 1)) == 0);
+	  bfd_put_64 (htab->elf.dynobj, base, loc);
+	  loc += 8;
+	  i++;
+	  while (i < htab->relr_count
+		 && relr_addr[i] == base)
+	    {
+	      htab->stub_error = true;
+	      i++;
+	    }
+	  base += 8;
+	  while (1)
+	    {
+	      bfd_vma bits = 0;
+	      while (i < htab->relr_count
+		     && relr_addr[i] - base < 63 * 8
+		     && (relr_addr[i] - base) % 8 == 0)
+		{
+		  bits |= (bfd_vma) 1 << ((relr_addr[i] - base) / 8);
+		  i++;
+		}
+	      if (bits == 0)
+		break;
+	      bfd_put_64 (htab->elf.dynobj, (bits << 1) | 1, loc);
+	      loc += 8;
+	      base += 63 * 8;
+	    }
+	}
+      free (relr_addr);
+      /* Pad any excess with 1's, a do-nothing encoding.  */
+      while ((size_t) (loc - htab->elf.srelrdyn->contents)
+	     < htab->elf.srelrdyn->size)
+	{
+	  bfd_put_64 (htab->elf.dynobj, 1, loc);
+	  loc += 8;
+	}
+    }
+  free (htab->relr);
+  htab->relr = NULL;
+
   for (group = htab->group; group != NULL; group = group->next)
     if ((stub_sec = group->stub_sec) != NULL)
       {
@@ -14094,54 +15356,40 @@ ppc64_elf_build_stubs (struct bfd_link_i
       }
 
   if (group != NULL)
+    htab->stub_error = true;
+
+  if (htab->stub_error)
     {
-      htab->stub_error = TRUE;
       _bfd_error_handler (_("stubs don't match calculated size"));
+      return false;
     }
 
-  if (htab->stub_error)
-    return FALSE;
-
   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",
+			      "linker stubs in %u groups",
+			      stub_sec_count),
+		    stub_sec_count) < 0)
+	*stats = NULL;
+      else
+	{
+	  if (asprintf (stats, _("%s, iter %u\n"
+				 "  branch         %lu\n"
+				 "  long branch    %lu\n"
+				 "  plt call       %lu\n"
+				 "  global entry   %lu"),
+			groupmsg, htab->stub_iteration,
+			htab->stub_count[ppc_stub_long_branch - 1],
+			htab->stub_count[ppc_stub_plt_branch - 1],
+			htab->stub_count[ppc_stub_plt_call - 1],
+			htab->stub_count[ppc_stub_global_entry - 1]) < 0)
+	    *stats = NULL;
+	  free (groupmsg);
+	}
     }
-  return TRUE;
+  return true;
 }
 
 /* What to do when ld finds relocations against symbols defined in
@@ -14164,7 +15412,7 @@ ppc64_elf_action_discarded (asection *se
 
 /* These are the dynamic relocations supported by glibc.  */
 
-static bfd_boolean
+static bool
 ppc64_glibc_dynamic_reloc (enum elf_ppc64_reloc_type r_type)
 {
   switch (r_type)
@@ -14215,10 +15463,10 @@ ppc64_glibc_dynamic_reloc (enum elf_ppc6
     case R_PPC64_ADDR14_BRNTAKEN:
     case R_PPC64_REL32:
     case R_PPC64_REL64:
-      return TRUE;
+      return true;
 
     default:
-      return FALSE;
+      return false;
     }
 }
 
@@ -14251,7 +15499,7 @@ ppc64_glibc_dynamic_reloc (enum elf_ppc6
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 ppc64_elf_relocate_section (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -14271,11 +15519,11 @@ ppc64_elf_relocate_section (bfd *output_
   bfd_byte *loc;
   struct got_entry **local_got_ents;
   bfd_vma TOCstart;
-  bfd_boolean ret = TRUE;
-  bfd_boolean is_opd;
+  bool ret = true;
+  bool is_opd;
   /* Assume 'at' branch hints.  */
-  bfd_boolean is_isa_v2 = TRUE;
-  bfd_boolean warned_dynamic = FALSE;
+  bool is_isa_v2 = true;
+  bool warned_dynamic = false;
   bfd_vma d_offset = (bfd_big_endian (input_bfd) ? 2 : 0);
 
   /* Initialize howto table if needed.  */
@@ -14284,16 +15532,16 @@ ppc64_elf_relocate_section (bfd *output_
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Don't relocate stub sections.  */
   if (input_section->owner == htab->params->stub_bfd)
-    return TRUE;
+    return true;
 
   if (!is_ppc64_elf (input_bfd))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   local_got_ents = elf_local_got_ents (input_bfd);
@@ -14320,8 +15568,8 @@ ppc64_elf_relocate_section (bfd *output_
       unsigned char tls_mask, tls_gd, tls_type;
       unsigned char sym_type;
       bfd_vma relocation;
-      bfd_boolean unresolved_reloc, save_unresolved_reloc;
-      bfd_boolean warned;
+      bool unresolved_reloc, save_unresolved_reloc;
+      bool warned;
       enum { DEST_NORMAL, DEST_OPD, DEST_STUB } reloc_dest;
       unsigned int insn;
       unsigned int mask;
@@ -14353,8 +15601,8 @@ ppc64_elf_relocate_section (bfd *output_
       sec = NULL;
       h_elf = NULL;
       sym_name = NULL;
-      unresolved_reloc = FALSE;
-      warned = FALSE;
+      unresolved_reloc = false;
+      warned = false;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -14389,7 +15637,7 @@ ppc64_elf_relocate_section (bfd *output_
 	}
       else
 	{
-	  bfd_boolean ignored;
+	  bool ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -14425,13 +15673,15 @@ 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))
 	{
-	  _bfd_clear_contents (ppc64_elf_howto_table[r_type],
-			       input_bfd, input_section,
-			       contents, rel->r_offset);
+	  if (r_type < ARRAY_SIZE (ppc64_elf_howto_table)
+	      && ppc64_elf_howto_table[r_type] != NULL)
+	    _bfd_clear_contents (ppc64_elf_howto_table[r_type],
+				 input_bfd, input_section,
+				 contents, rel->r_offset);
 	  wrel->r_offset = rel->r_offset;
 	  wrel->r_info = 0;
 	  wrel->r_addend = 0;
@@ -14454,7 +15704,7 @@ ppc64_elf_relocate_section (bfd *output_
 	{
 	  relocation = TOCstart + htab->sec_info[input_section->id].toc_off;
 	  sec = bfd_abs_section_ptr;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	}
 
       /* TLS optimizations.  Replace instruction sequences and relocs
@@ -14484,7 +15734,7 @@ ppc64_elf_relocate_section (bfd *output_
 
 	  if (!get_tls_mask (&toc_tls, &toc_symndx, &toc_addend,
 			     &local_syms, rel, input_bfd))
-	    return FALSE;
+	    return false;
 
 	  if (toc_tls)
 	    tls_mask = *toc_tls;
@@ -14494,6 +15744,8 @@ ppc64_elf_relocate_section (bfd *output_
 	 relocs are used with non-tls syms.  */
       if (r_symndx != STN_UNDEF
 	  && r_type != R_PPC64_NONE
+	  && r_type < ARRAY_SIZE (ppc64_elf_howto_table)
+	  && ppc64_elf_howto_table[r_type] != NULL
 	  && (h == NULL
 	      || h->elf.root.type == bfd_link_hash_defined
 	      || h->elf.root.type == bfd_link_hash_defweak)
@@ -14536,13 +15788,18 @@ ppc64_elf_relocate_section (bfd *output_
 	  break;
 
 	case R_PPC64_LO_DS_OPT:
-	  insn = bfd_get_32 (input_bfd, contents + rel->r_offset - d_offset);
-	  if ((insn & (0x3f << 26)) != 58u << 26)
-	    abort ();
-	  insn += (14u << 26) - (58u << 26);
-	  bfd_put_32 (input_bfd, insn, contents + rel->r_offset - d_offset);
-	  r_type = R_PPC64_TOC16_LO;
-	  rel->r_info = ELF64_R_INFO (r_symndx, r_type);
+	  if (offset_in_range (input_section, rel->r_offset - d_offset, 4))
+	    {
+	      insn = bfd_get_32 (input_bfd,
+				 contents + rel->r_offset - d_offset);
+	      if ((insn & (0x3fu << 26)) != 58u << 26)
+		abort ();
+	      insn += (14u << 26) - (58u << 26);
+	      bfd_put_32 (input_bfd, insn,
+			  contents + rel->r_offset - d_offset);
+	      r_type = R_PPC64_TOC16_LO;
+	      rel->r_info = ELF64_R_INFO (r_symndx, r_type);
+	    }
 	  break;
 
 	case R_PPC64_TOC16:
@@ -14557,7 +15814,7 @@ ppc64_elf_relocate_section (bfd *output_
 	    retval = get_tls_mask (&toc_tls, &toc_symndx, &toc_addend,
 				   &local_syms, rel, input_bfd);
 	    if (retval == 0)
-	      return FALSE;
+	      return false;
 
 	    if (toc_tls)
 	      {
@@ -14594,7 +15851,8 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_TPREL16_HI:
 	case R_PPC64_GOT_TPREL16_HA:
 	  if ((tls_mask & TLS_TLS) != 0
-	      && (tls_mask & TLS_TPREL) == 0)
+	      && (tls_mask & TLS_TPREL) == 0
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    {
 	      rel->r_offset -= d_offset;
 	      bfd_put_32 (input_bfd, NOP, contents + rel->r_offset);
@@ -14606,7 +15864,8 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_TPREL16_DS:
 	case R_PPC64_GOT_TPREL16_LO_DS:
 	  if ((tls_mask & TLS_TLS) != 0
-	      && (tls_mask & TLS_TPREL) == 0)
+	      && (tls_mask & TLS_TPREL) == 0
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    {
 	    toctprel:
 	      insn = bfd_get_32 (input_bfd,
@@ -14629,9 +15888,10 @@ 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)
+	      && (tls_mask & TLS_TPREL) == 0
+	      && offset_in_range (input_section, rel->r_offset, 8))
 	    {
 	      /* pld ra,sym@got@tprel@pcrel -> paddi ra,r13,sym@tprel  */
 	      pinsn = bfd_get_32 (input_bfd, contents + rel->r_offset);
@@ -14650,7 +15910,8 @@ ppc64_elf_relocate_section (bfd *output_
 
 	case R_PPC64_TLS:
 	  if ((tls_mask & TLS_TLS) != 0
-	      && (tls_mask & TLS_TPREL) == 0)
+	      && (tls_mask & TLS_TPREL) == 0
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    {
 	      insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
 	      insn = _bfd_elf_ppc_at_tls_transform (insn, 13);
@@ -14679,7 +15940,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;
@@ -14701,13 +15962,15 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_TLSGD16_HI:
 	case R_PPC64_GOT_TLSGD16_HA:
 	  tls_gd = TLS_GDIE;
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0)
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    goto tls_gdld_hi;
 	  break;
 
 	case R_PPC64_GOT_TLSLD16_HI:
 	case R_PPC64_GOT_TLSLD16_HA:
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0)
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    {
 	    tls_gdld_hi:
 	      if ((tls_mask & tls_gd) != 0)
@@ -14726,13 +15989,15 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT_TLSGD16:
 	case R_PPC64_GOT_TLSGD16_LO:
 	  tls_gd = TLS_GDIE;
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0)
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    goto tls_ldgd_opt;
 	  break;
 
 	case R_PPC64_GOT_TLSLD16:
 	case R_PPC64_GOT_TLSLD16_LO:
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0)
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    {
 	      unsigned int insn1, insn2;
 
@@ -14746,8 +16011,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 +16026,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);
@@ -14800,10 +16067,11 @@ ppc64_elf_relocate_section (bfd *output_
 		}
 	      bfd_put_32 (input_bfd, insn1,
 			  contents + rel->r_offset - d_offset);
-	      if (offset != (bfd_vma) -1)
+	      if (offset != (bfd_vma) -1
+		  && offset_in_range (input_section, offset, 4))
 		{
 		  bfd_put_32 (input_bfd, insn2, contents + offset);
-		  if (offset + 8 <= input_section->size)
+		  if (offset_in_range (input_section, offset + 4, 4))
 		    {
 		      insn2 = bfd_get_32 (input_bfd, contents + offset + 4);
 		      if (insn2 == LD_R2_0R1 + STK_TOC (htab))
@@ -14820,8 +16088,9 @@ ppc64_elf_relocate_section (bfd *output_
 	    }
 	  break;
 
-	case R_PPC64_GOT_TLSGD34:
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0)
+	case R_PPC64_GOT_TLSGD_PCREL34:
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0
+	      && offset_in_range (input_section, rel->r_offset, 8))
 	    {
 	      pinsn = bfd_get_32 (input_bfd, contents + rel->r_offset);
 	      pinsn <<= 32;
@@ -14830,7 +16099,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,8 +16115,9 @@ ppc64_elf_relocate_section (bfd *output_
 	    }
 	  break;
 
-	case R_PPC64_GOT_TLSLD34:
-	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0)
+	case R_PPC64_GOT_TLSLD_PCREL34:
+	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0
+	      && offset_in_range (input_section, rel->r_offset, 8))
 	    {
 	      pinsn = bfd_get_32 (input_bfd, contents + rel->r_offset);
 	      pinsn <<= 32;
@@ -14867,7 +16137,10 @@ ppc64_elf_relocate_section (bfd *output_
 
 	case R_PPC64_TLSGD:
 	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_GD) == 0
-	      && rel + 1 < relend)
+	      && rel + 1 < relend
+	      && offset_in_range (input_section, rel->r_offset,
+				  is_8byte_reloc (ELF64_R_TYPE (rel[1].r_info))
+				  ? 8 : 4))
 	    {
 	      unsigned int insn2;
 	      enum elf_ppc64_reloc_type r_type1 = ELF64_R_TYPE (rel[1].r_info);
@@ -14883,7 +16156,7 @@ ppc64_elf_relocate_section (bfd *output_
 		  break;
 		}
 
-	      if (ELF64_R_TYPE (rel[1].r_info) == R_PPC64_PLTCALL)
+	      if (r_type1 == R_PPC64_PLTCALL)
 		bfd_put_32 (output_bfd, NOP, contents + offset + 4);
 
 	      if ((tls_mask & TLS_GDIE) != 0)
@@ -14901,6 +16174,7 @@ ppc64_elf_relocate_section (bfd *output_
 		      rel->r_addend = toc_addend;
 		    }
 		  if (r_type1 == R_PPC64_REL24_NOTOC
+		      || r_type1 == R_PPC64_REL24_P9NOTOC
 		      || r_type1 == R_PPC64_PLTCALL_NOTOC)
 		    {
 		      r_type = R_PPC64_NONE;
@@ -14927,7 +16201,10 @@ ppc64_elf_relocate_section (bfd *output_
 
 	case R_PPC64_TLSLD:
 	  if ((tls_mask & TLS_TLS) != 0 && (tls_mask & TLS_LD) == 0
-	      && rel + 1 < relend)
+	      && rel + 1 < relend
+	      && offset_in_range (input_section, rel->r_offset,
+				  is_8byte_reloc (ELF64_R_TYPE (rel[1].r_info))
+				  ? 8 : 4))
 	    {
 	      unsigned int insn2;
 	      enum elf_ppc64_reloc_type r_type1 = ELF64_R_TYPE (rel[1].r_info);
@@ -14943,10 +16220,11 @@ ppc64_elf_relocate_section (bfd *output_
 		  break;
 		}
 
-	      if (ELF64_R_TYPE (rel[1].r_info) == R_PPC64_PLTCALL)
+	      if (r_type1 == R_PPC64_PLTCALL)
 		bfd_put_32 (output_bfd, NOP, contents + offset + 4);
 
 	      if (r_type1 == R_PPC64_REL24_NOTOC
+		  || r_type1 == R_PPC64_REL24_P9NOTOC
 		  || r_type1 == R_PPC64_PLTCALL_NOTOC)
 		{
 		  r_type = R_PPC64_NONE;
@@ -14975,7 +16253,8 @@ ppc64_elf_relocate_section (bfd *output_
 	      && rel[1].r_info == ELF64_R_INFO (r_symndx, R_PPC64_DTPREL64)
 	      && rel[1].r_offset == rel->r_offset + 8)
 	    {
-	      if ((tls_mask & TLS_GD) == 0)
+	      if ((tls_mask & TLS_GD) == 0
+		  && offset_in_range (input_section, rel->r_offset, 8))
 		{
 		  rel[1].r_info = ELF64_R_INFO (r_symndx, R_PPC64_NONE);
 		  if ((tls_mask & TLS_GDIE) != 0)
@@ -14990,7 +16269,8 @@ ppc64_elf_relocate_section (bfd *output_
 	    }
 	  else
 	    {
-	      if ((tls_mask & TLS_LD) == 0)
+	      if ((tls_mask & TLS_LD) == 0
+		  && offset_in_range (input_section, rel->r_offset, 8))
 		{
 		  bfd_put_64 (output_bfd, 1, contents + rel->r_offset);
 		  r_type = R_PPC64_NONE;
@@ -15011,7 +16291,8 @@ ppc64_elf_relocate_section (bfd *output_
 	  relocation = TOCstart + htab->sec_info[input_section->id].toc_off;
 	  if (!bfd_link_pic (info)
 	      && !info->traditional_format
-	      && relocation + 0x80008000 <= 0xffffffff)
+	      && relocation + 0x80008000 <= 0xffffffff
+	      && offset_in_range (input_section, rel->r_offset, 8))
 	    {
 	      unsigned int insn1, insn2;
 
@@ -15033,7 +16314,8 @@ ppc64_elf_relocate_section (bfd *output_
 	      relocation -= (rel->r_offset
 			     + input_section->output_offset
 			     + input_section->output_section->vma);
-	      if (relocation + 0x80008000 <= 0xffffffff)
+	      if (relocation + 0x80008000 <= 0xffffffff
+		  && offset_in_range (input_section, rel->r_offset, 8))
 		{
 		  unsigned int insn1, insn2;
 
@@ -15070,7 +16352,8 @@ ppc64_elf_relocate_section (bfd *output_
 	      && rel[1].r_info == ELF64_R_INFO (r_symndx, R_PPC64_REL16_LO)
 	      && rel[1].r_offset == rel->r_offset + 4
 	      && rel[1].r_addend == rel->r_addend + 4
-	      && relocation + 0x80008000 <= 0xffffffff)
+	      && relocation + 0x80008000 <= 0xffffffff
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 8))
 	    {
 	      unsigned int insn1, insn2;
 	      offset = rel->r_offset - d_offset;
@@ -15105,7 +16388,8 @@ ppc64_elf_relocate_section (bfd *output_
 				      + input_section->output_offset
 				      + input_section->output_section->vma)
 	      && tocsave_find (htab, NO_INSERT,
-			       &local_syms, rel, input_bfd))
+			       &local_syms, rel, input_bfd)
+	      && offset_in_range (input_section, rel->r_offset, 4))
 	    {
 	      insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
 	      if (insn == NOP
@@ -15125,6 +16409,8 @@ ppc64_elf_relocate_section (bfd *output_
 	  /* Branch not taken prediction relocations.  */
 	case R_PPC64_ADDR14_BRNTAKEN:
 	case R_PPC64_REL14_BRNTAKEN:
+	  if (!offset_in_range (input_section, rel->r_offset, 4))
+	    break;
 	  insn |= bfd_get_32 (input_bfd,
 			      contents + rel->r_offset) & ~(0x01 << 21);
 	  /* Fall through.  */
@@ -15135,6 +16421,7 @@ ppc64_elf_relocate_section (bfd *output_
 
 	case R_PPC64_REL24:
 	case R_PPC64_REL24_NOTOC:
+	case R_PPC64_REL24_P9NOTOC:
 	case R_PPC64_PLTCALL:
 	case R_PPC64_PLTCALL_NOTOC:
 	  /* Calls to functions with a different TOC, such as calls to
@@ -15153,38 +16440,35 @@ ppc64_elf_relocate_section (bfd *output_
 	  if ((r_type == R_PPC64_PLTCALL
 	       || r_type == R_PPC64_PLTCALL_NOTOC)
 	      && stub_entry != NULL
-	      && stub_entry->stub_type >= ppc_stub_plt_call
-	      && stub_entry->stub_type <= ppc_stub_plt_call_both)
+	      && stub_entry->type.main == ppc_stub_plt_call)
 	    stub_entry = NULL;
 
 	  if (stub_entry != NULL
-	      && ((stub_entry->stub_type >= ppc_stub_plt_call
-		   && stub_entry->stub_type <= ppc_stub_plt_call_both)
-		  || stub_entry->stub_type == ppc_stub_plt_branch_r2off
-		  || stub_entry->stub_type == ppc_stub_plt_branch_both
-		  || stub_entry->stub_type == ppc_stub_long_branch_r2off
-		  || stub_entry->stub_type == ppc_stub_long_branch_both))
-	    {
-	      bfd_boolean can_plt_call = FALSE;
-
-	      if (stub_entry->stub_type == ppc_stub_plt_call
-		  && !htab->opd_abi
-		  && htab->params->plt_localentry0 != 0
-		  && is_elfv2_localentry0 (&h->elf))
+	      && (stub_entry->type.main == ppc_stub_plt_call
+		  || stub_entry->type.r2save))
+	    {
+	      bool can_plt_call = false;
+
+	      if (r_type == R_PPC64_REL24_NOTOC
+		  || r_type == R_PPC64_REL24_P9NOTOC)
 		{
-		  /* The function doesn't use or change r2.  */
-		  can_plt_call = TRUE;
+		  /* NOTOC calls don't need to restore r2.  */
+		  can_plt_call = true;
 		}
-	      else if (r_type == R_PPC64_REL24_NOTOC)
+	      else if (stub_entry->type.main == ppc_stub_plt_call
+		       && !htab->opd_abi
+		       && htab->params->plt_localentry0 != 0
+		       && h != NULL
+		       && is_elfv2_localentry0 (&h->elf))
 		{
-		  /* NOTOC calls don't need to restore r2.  */
-		  can_plt_call = TRUE;
+		  /* The function doesn't use or change r2.  */
+		  can_plt_call = true;
 		}
 
 	      /* All of these stubs may modify r2, so there must be a
 		 branch and link followed by a nop.  The nop is
 		 replaced by an insn to restore r2.  */
-	      else if (rel->r_offset + 8 <= input_section->size)
+	      else if (offset_in_range (input_section, rel->r_offset, 8))
 		{
 		  unsigned long br;
 
@@ -15197,14 +16481,13 @@ ppc64_elf_relocate_section (bfd *output_
 		      nop = bfd_get_32 (input_bfd,
 					contents + rel->r_offset + 4);
 		      if (nop == LD_R2_0R1 + STK_TOC (htab))
-			can_plt_call = TRUE;
+			can_plt_call = true;
 		      else if (nop == NOP
 			       || nop == CROR_151515
 			       || 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.  */
@@ -15213,7 +16496,7 @@ ppc64_elf_relocate_section (bfd *output_
 			    bfd_put_32 (input_bfd,
 					LD_R2_0R1 + STK_TOC (htab),
 					contents + rel->r_offset + 4);
-			  can_plt_call = TRUE;
+			  can_plt_call = true;
 			}
 		    }
 		}
@@ -15225,13 +16508,13 @@ ppc64_elf_relocate_section (bfd *output_
 		  if (*name == '.')
 		    ++name;
 
-		  if (strncmp (name, "__libc_start_main", 17) == 0
+		  if (startswith (name, "__libc_start_main")
 		      && (name[17] == 0 || name[17] == '@'))
 		    {
 		      /* Allow crt1 branch to go via a toc adjusting
 			 stub.  Other calls that never return could do
 			 the same, if we could detect such.  */
-		      can_plt_call = TRUE;
+		      can_plt_call = true;
 		    }
 		}
 
@@ -15253,16 +16536,15 @@ ppc64_elf_relocate_section (bfd *output_
 				     - sec->output_section->vma
 				     - sec->output_offset);
 
-		      opd_entry_value (sec, off, &code_sec, NULL, FALSE);
+		      opd_entry_value (sec, off, &code_sec, NULL, false);
 		    }
 		  if (code_sec == input_section)
-		    can_plt_call = TRUE;
+		    can_plt_call = true;
 		}
 
 	      if (!can_plt_call)
 		{
-		  if (stub_entry->stub_type >= ppc_stub_plt_call
-		      && stub_entry->stub_type <= ppc_stub_plt_call_both)
+		  if (stub_entry->type.main == ppc_stub_plt_call)
 		    info->callbacks->einfo
 		      /* xgettext:c-format */
 		      (_("%H: call to `%pT' lacks nop, can't restore toc; "
@@ -15276,25 +16558,24 @@ ppc64_elf_relocate_section (bfd *output_
 		       input_bfd, input_section, rel->r_offset, sym_name);
 
 		  bfd_set_error (bfd_error_bad_value);
-		  ret = FALSE;
+		  ret = false;
 		}
 
 	      if (can_plt_call
-		  && stub_entry->stub_type >= ppc_stub_plt_call
-		  && stub_entry->stub_type <= ppc_stub_plt_call_both)
-		unresolved_reloc = FALSE;
+		  && stub_entry->type.main == ppc_stub_plt_call)
+		unresolved_reloc = false;
 	    }
 
 	  if ((stub_entry == NULL
-	       || stub_entry->stub_type == ppc_stub_long_branch
-	       || stub_entry->stub_type == ppc_stub_plt_branch)
+	       || stub_entry->type.main == ppc_stub_long_branch
+	       || stub_entry->type.main == ppc_stub_plt_branch)
 	      && get_opd_info (sec) != NULL)
 	    {
 	      /* The branch destination is the value of the opd entry. */
 	      bfd_vma off = (relocation + addend
 			     - sec->output_section->vma
 			     - sec->output_offset);
-	      bfd_vma dest = opd_entry_value (sec, off, NULL, NULL, FALSE);
+	      bfd_vma dest = opd_entry_value (sec, off, NULL, NULL, false);
 	      if (dest != (bfd_vma) -1)
 		{
 		  relocation = dest;
@@ -15314,36 +16595,36 @@ ppc64_elf_relocate_section (bfd *output_
 						  : sym->st_other);
 
 	  if (stub_entry != NULL
-	      && (stub_entry->stub_type == ppc_stub_long_branch
-		  || stub_entry->stub_type == ppc_stub_plt_branch)
-	      && (r_type == R_PPC64_ADDR14_BRTAKEN
-		  || r_type == R_PPC64_ADDR14_BRNTAKEN
-		  || (relocation + addend - from + max_br_offset
-		      < 2 * max_br_offset)))
-	    /* Don't use the stub if this branch is in range.  */
-	    stub_entry = NULL;
-
-	  if (stub_entry != NULL
-	      && (stub_entry->stub_type == ppc_stub_long_branch_notoc
-		  || stub_entry->stub_type == ppc_stub_long_branch_both
-		  || stub_entry->stub_type == ppc_stub_plt_branch_notoc
-		  || stub_entry->stub_type == ppc_stub_plt_branch_both)
-	      && (r_type != R_PPC64_REL24_NOTOC
-		  || ((fdh ? fdh->elf.other : sym->st_other)
-		      & STO_PPC64_LOCAL_MASK) <= 1 << STO_PPC64_LOCAL_BIT)
-	      && (relocation + addend - from + max_br_offset
-		  < 2 * max_br_offset))
-	    stub_entry = NULL;
-
-	  if (stub_entry != NULL
-	      && (stub_entry->stub_type == ppc_stub_long_branch_r2off
-		  || stub_entry->stub_type == ppc_stub_long_branch_both
-		  || stub_entry->stub_type == ppc_stub_plt_branch_r2off
-		  || stub_entry->stub_type == ppc_stub_plt_branch_both)
-	      && r_type == R_PPC64_REL24_NOTOC
-	      && (relocation + addend - from + max_br_offset
-		  < 2 * max_br_offset))
-	    stub_entry = NULL;
+	      && (stub_entry->type.main == ppc_stub_long_branch
+		  || stub_entry->type.main == ppc_stub_plt_branch))
+	    {
+	      if (stub_entry->type.sub == ppc_stub_toc
+		  && !stub_entry->type.r2save
+		  && (r_type == R_PPC64_ADDR14_BRTAKEN
+		      || r_type == R_PPC64_ADDR14_BRNTAKEN
+		      || (relocation + addend - from + max_br_offset
+			  < 2 * max_br_offset)))
+		/* Don't use the stub if this branch is in range.  */
+		stub_entry = NULL;
+
+	      if (stub_entry != NULL
+		  && stub_entry->type.sub >= ppc_stub_notoc
+		  && ((r_type != R_PPC64_REL24_NOTOC
+		       && r_type != R_PPC64_REL24_P9NOTOC)
+		      || ((fdh ? fdh->elf.other : sym->st_other)
+			  & STO_PPC64_LOCAL_MASK) <= 1 << STO_PPC64_LOCAL_BIT)
+		  && (relocation + addend - from + max_br_offset
+		      < 2 * max_br_offset))
+		stub_entry = NULL;
+
+	      if (stub_entry != NULL
+		  && stub_entry->type.r2save
+		  && (r_type == R_PPC64_REL24_NOTOC
+		      || r_type == R_PPC64_REL24_P9NOTOC)
+		  && (relocation + addend - from + max_br_offset
+		      < 2 * max_br_offset))
+		stub_entry = NULL;
+	    }
 
 	  if (stub_entry != NULL)
 	    {
@@ -15351,7 +16632,7 @@ ppc64_elf_relocate_section (bfd *output_
 		 rather than the procedure directly.  */
 	      asection *stub_sec = stub_entry->group->stub_sec;
 
-	      if (stub_entry->stub_type == ppc_stub_save_res)
+	      if (stub_entry->type.main == ppc_stub_save_res)
 		relocation += (stub_sec->output_offset
 			       + stub_sec->output_section->vma
 			       + stub_sec->size - htab->sfpr->size
@@ -15364,27 +16645,27 @@ ppc64_elf_relocate_section (bfd *output_
 	      addend = 0;
 	      reloc_dest = DEST_STUB;
 
-	      if (((stub_entry->stub_type == ppc_stub_plt_call
-		    && ALWAYS_EMIT_R2SAVE)
-		   || 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)
-		       && htab->params->tls_get_addr_opt)
-		  && rel + 1 < relend
-		  && rel[1].r_offset == rel->r_offset + 4
-		  && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE)
-		relocation += 4;
-	      else if ((stub_entry->stub_type == ppc_stub_long_branch_both
-			|| stub_entry->stub_type == ppc_stub_plt_branch_both
-			|| stub_entry->stub_type == ppc_stub_plt_call_both)
-		       && r_type == R_PPC64_REL24_NOTOC)
-		relocation += 4;
-
-	      if (r_type == R_PPC64_REL24_NOTOC
-		  && (stub_entry->stub_type == ppc_stub_plt_call_notoc
-		      || stub_entry->stub_type == ppc_stub_plt_call_both))
+	      if (((stub_entry->type.r2save
+		    && (r_type == R_PPC64_REL24_NOTOC
+			|| r_type == R_PPC64_REL24_P9NOTOC))
+		   || ((stub_entry->type.main == ppc_stub_plt_call
+			&& (ALWAYS_EMIT_R2SAVE || stub_entry->type.r2save))
+		       && rel + 1 < relend
+		       && rel[1].r_offset == rel->r_offset + 4
+		       && ELF64_R_TYPE (rel[1].r_info) == R_PPC64_TOCSAVE))
+		  && !(stub_entry->type.main == ppc_stub_plt_call
+		       && htab->params->tls_get_addr_opt
+		       && h != NULL
+		       && is_tls_get_addr (&h->elf, htab)))
+		{
+		  /* Skip over the r2 store at the start of the stub.  */
+		  relocation += 4;
+		}
+
+	      if ((r_type == R_PPC64_REL24_NOTOC
+		   || r_type == R_PPC64_REL24_P9NOTOC)
+		  && stub_entry->type.main == ppc_stub_plt_call
+		  && stub_entry->type.sub >= ppc_stub_notoc)
 		htab->notoc_plt = 1;
 	    }
 
@@ -15419,9 +16700,11 @@ ppc64_elf_relocate_section (bfd *output_
 		   && h->elf.root.type == bfd_link_hash_undefweak
 		   && h->elf.dynindx == -1
 		   && (r_type == R_PPC64_REL24
-		       || r_type == R_PPC64_REL24_NOTOC)
+		       || r_type == R_PPC64_REL24_NOTOC
+		       || r_type == R_PPC64_REL24_P9NOTOC)
 		   && relocation == 0
-		   && addend == 0)
+		   && addend == 0
+		   && offset_in_range (input_section, rel->r_offset, 4))
 	    {
 	      bfd_put_32 (input_bfd, NOP, contents + rel->r_offset);
 	      goto copy_reloc;
@@ -15429,12 +16712,21 @@ 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
+	      || (bfd_link_pic (info)
+		  && sec == bfd_abs_section_ptr)
+	      || !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))
+	      && sec != NULL
+	      && sec->output_section != NULL
+	      && !discarded_section (sec)
+	      && (h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    {
 	      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 +16738,30 @@ 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
+	      || (bfd_link_pic (info)
+		  && sec == bfd_abs_section_ptr)
+	      || !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))
+	      && sec != NULL
+	      && sec->output_section != NULL
+	      && !discarded_section (sec)
+	      && (h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    {
 	      insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
-	      if ((insn & (0x3f << 26 | 0x3)) == 58u << 26 /* ld */)
+	      if (r_type == R_PPC64_GOT16_LO_DS
+		  && (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 (r_type == R_PPC64_GOT16_HA
+		       && (insn & (0x3fu << 26)) == 15u << 26 /* addis */)
 		{
 		  r_type = R_PPC64_TOC16_HA;
 		  rel->r_info = ELF64_R_INFO (r_symndx, r_type);
@@ -15467,32 +16770,45 @@ 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
+	      || (bfd_link_pic (info)
+		  && sec == bfd_abs_section_ptr)
+	      || !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
+		&& sec != NULL
+		&& sec->output_section != NULL
+		&& !discarded_section (sec)
+		&& (h == NULL || SYMBOL_REFERENCES_LOCAL (info, &h->elf))
+		&& offset_in_range (input_section, rel->r_offset, 8)))
+	    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_in_range (input_section, rel->r_offset, 8))
 	    {
 	      offset = rel->r_offset;
 	      pinsn = bfd_get_32 (input_bfd, contents + offset);
@@ -15502,43 +16818,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 (offset_in_range (input_section, off2, 4))
 		    {
-		      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 (!offset_in_range (input_section, off2, 8))
+			    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);
 			}
 		    }
 		}
@@ -15551,12 +16861,18 @@ ppc64_elf_relocate_section (bfd *output_
       switch (r_type)
 	{
 	default:
-	  /* xgettext:c-format */
-	  _bfd_error_handler (_("%pB: %s unsupported"),
-			      input_bfd, ppc64_elf_howto_table[r_type]->name);
+	  if (r_type < ARRAY_SIZE (ppc64_elf_howto_table)
+	      && ppc64_elf_howto_table[r_type] != NULL)
+	    /* xgettext:c-format */
+	    _bfd_error_handler (_("%pB: %s unsupported"),
+				input_bfd, ppc64_elf_howto_table[r_type]->name);
+	  else
+	    /* xgettext:c-format */
+	    _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+				input_bfd, r_type);
 
 	  bfd_set_error (bfd_error_bad_value);
-	  ret = FALSE;
+	  ret = false;
 	  goto copy_reloc;
 
 	case R_PPC64_NONE:
@@ -15578,7 +16894,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 +16902,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 +16910,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 +16918,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 +16940,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
 	      {
@@ -15642,7 +16958,7 @@ ppc64_elf_relocate_section (bfd *output_
 		    else
 		      {
 			indx = h->elf.dynindx;
-			unresolved_reloc = FALSE;
+			unresolved_reloc = false;
 		      }
 		    ent = h->elf.got.glist;
 		  }
@@ -15681,7 +16997,7 @@ ppc64_elf_relocate_section (bfd *output_
 		   the case of TLSLD where we'll use one entry per
 		   module.  */
 		asection *relgot;
-		bfd_boolean ifunc;
+		bool ifunc;
 
 		*offp = off | 1;
 		relgot = NULL;
@@ -15691,10 +17007,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 +17016,13 @@ 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)))
+			     && (h != NULL
+				 ? !bfd_is_abs_symbol (&h->elf.root)
+				 : sym->st_shndx != SHN_ABS)))
+
 		  relgot = ppc64_elf_tdata (ent->owner)->relgot;
 		if (relgot != NULL)
 		  {
@@ -15716,11 +17036,9 @@ ppc64_elf_relocate_section (bfd *output_
 			outrel.r_info = ELF64_R_INFO (indx, R_PPC64_DTPMOD64);
 			if (tls_type == (TLS_TLS | TLS_GD))
 			  {
-			    loc = relgot->contents;
-			    loc += (relgot->reloc_count++
-				    * sizeof (Elf64_External_Rela));
-			    bfd_elf64_swap_reloca_out (output_bfd,
-						       &outrel, loc);
+			    BFD_ASSERT (count_and_swap_reloc_out (output_bfd,
+								  &outrel,
+								  relgot));
 			    outrel.r_offset += 8;
 			    outrel.r_addend = orig_rel.r_addend;
 			    outrel.r_info
@@ -15758,10 +17076,10 @@ ppc64_elf_relocate_section (bfd *output_
 			      outrel.r_addend -= htab->elf.tls_sec->vma;
 			  }
 		      }
-		    loc = relgot->contents;
-		    loc += (relgot->reloc_count++
-			    * sizeof (Elf64_External_Rela));
-		    bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc);
+		    if (!(info->enable_dt_relr
+			  && ELF64_R_TYPE (outrel.r_info) == R_PPC64_RELATIVE))
+		      BFD_ASSERT (count_and_swap_reloc_out (output_bfd,
+							    &outrel, relgot));
 		  }
 
 		/* Init the .got section contents here if we're not
@@ -15801,10 +17119,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;
@@ -15823,7 +17141,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_PLTCALL_NOTOC:
 	  /* Relocation is to the entry for this symbol in the
 	     procedure linkage table.  */
-	  unresolved_reloc = TRUE;
+	  unresolved_reloc = true;
 	  {
 	    struct plt_entry **plt_list = NULL;
 	    if (h != NULL)
@@ -15846,9 +17164,7 @@ ppc64_elf_relocate_section (bfd *output_
 		      bfd_vma got;
 
 		      plt = htab->elf.splt;
-		      if (!htab->elf.dynamic_sections_created
-			  || h == NULL
-			  || h->elf.dynindx == -1)
+		      if (use_local_plt (info, elf_hash_entry (h)))
 			{
 			  if (h != NULL
 			      ? h->elf.type == STT_GNU_IFUNC
@@ -15870,7 +17186,7 @@ ppc64_elf_relocate_section (bfd *output_
 			  relocation -= got;
 			}
 		      addend = 0;
-		      unresolved_reloc = FALSE;
+		      unresolved_reloc = false;
 		      break;
 		    }
 	      }
@@ -15887,7 +17203,16 @@ ppc64_elf_relocate_section (bfd *output_
 	  else if (sec != NULL && sec->id < htab->sec_info_arr_size)
 	    relocation += htab->sec_info[sec->id].toc_off;
 	  else
-	    unresolved_reloc = TRUE;
+	    unresolved_reloc = true;
+	  if (unresolved_reloc
+	      || (!is_opd
+		  && h != NULL
+		  && !SYMBOL_REFERENCES_LOCAL (info, &h->elf)))
+	    info->callbacks->einfo
+	      /* xgettext:c-format */
+	      (_("%H: %s against %pT is not supported\n"),
+	       input_bfd, input_section, rel->r_offset,
+	       ppc64_elf_howto_table[r_type]->name, sym_name);
 	  goto dodyn;
 
 	  /* TOC16 relocs.  We want the offset relative to the TOC base,
@@ -15936,6 +17261,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_REL14_BRTAKEN:
 	case R_PPC64_REL24:
 	case R_PPC64_REL24_NOTOC:
+	case R_PPC64_REL24_P9NOTOC:
 	case R_PPC64_PCREL34:
 	case R_PPC64_PCREL28:
 	  break;
@@ -15952,10 +17278,10 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_TPREL16_HIGHERA:
 	case R_PPC64_TPREL16_HIGHEST:
 	case R_PPC64_TPREL16_HIGHESTA:
-	case R_PPC64_TPREL34:
 	  if (h != NULL
 	      && h->elf.root.type == bfd_link_hash_undefweak
-	      && h->elf.dynindx == -1)
+	      && h->elf.dynindx == -1
+	      && offset_in_range (input_section, rel->r_offset - d_offset, 4))
 	    {
 	      /* Make this relocation against an undefined weak symbol
 		 resolve to zero.  This is really just a tweak, since
@@ -15969,6 +17295,9 @@ ppc64_elf_relocate_section (bfd *output_
 		bfd_put_32 (input_bfd, insn, p);
 	      break;
 	    }
+	  /* Fall through.  */
+
+	case R_PPC64_TPREL34:
 	  if (htab->elf.tls_sec != NULL)
 	    addend -= htab->elf.tls_sec->vma + TP_OFFSET;
 	  /* The TPREL16 relocs shouldn't really be used in shared
@@ -16058,14 +17387,14 @@ 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;
+	      bool skip, relocate;
 	      asection *sreloc;
 	      bfd_vma out_off;
 	      long indx = 0;
@@ -16074,15 +17403,15 @@ ppc64_elf_relocate_section (bfd *output_
 		 are copied into the output file to be resolved at run
 		 time.  */
 
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      out_off = _bfd_elf_section_offset (output_bfd, info,
 						 input_section, rel->r_offset);
 	      if (out_off == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (out_off == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      out_off += (input_section->output_section->vma
 			  + input_section->output_offset);
 	      outrel.r_offset = out_off;
@@ -16101,7 +17430,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)
 		{
@@ -16129,7 +17459,7 @@ ppc64_elf_relocate_section (bfd *output_
 			     bug in binutils handling of weak syms.)
 			     In these cases we won't use the opd
 			     entry in this lib.  */
-			  unresolved_reloc = FALSE;
+			  unresolved_reloc = false;
 			}
 		      if (!is_opd
 			  && r_type == R_PPC64_ADDR64
@@ -16145,7 +17475,7 @@ ppc64_elf_relocate_section (bfd *output_
 			     Prelink also wants simple and consistent rules
 			     for relocs.  This make all RELATIVE relocs have
 			     *r_offset equal to r_addend.  */
-			  relocate = TRUE;
+			  relocate = true;
 			}
 		    }
 		  else
@@ -16161,14 +17491,14 @@ ppc64_elf_relocate_section (bfd *output_
 			     input_bfd, input_section, rel->r_offset,
 			     ppc64_elf_howto_table[r_type]->name,
 			     sym_name);
-			  ret = FALSE;
+			  ret = false;
 			}
 		      else if (r_symndx == STN_UNDEF || bfd_is_abs_section (sec))
 			;
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -16217,26 +17547,26 @@ ppc64_elf_relocate_section (bfd *output_
 		    }
 		}
 
-	      sreloc = elf_section_data (input_section)->sreloc;
-	      if (h != NULL
-		  ? h->elf.type == STT_GNU_IFUNC
-		  : 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 (sreloc == NULL)
-		abort ();
+	      if (!(info->enable_dt_relr
+		    && ELF64_R_TYPE (outrel.r_info) == R_PPC64_RELATIVE
+		    && maybe_relr (ELF64_R_TYPE (orig_rel.r_info),
+				   rel, input_section)))
+		{
+		  sreloc = elf_section_data (input_section)->sreloc;
+		  if (h != NULL
+		      ? h->elf.type == STT_GNU_IFUNC
+		      : ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
+		    {
+		      sreloc = htab->elf.irelplt;
+		      if (indx == 0 || is_static_defined (&h->elf))
+			htab->elf.ifunc_resolvers = true;
+		    }
+		  if (sreloc == NULL)
+		    abort ();
 
-	      if (sreloc->reloc_count * sizeof (Elf64_External_Rela)
-		  >= sreloc->size)
-		abort ();
-	      loc = sreloc->contents;
-	      loc += sreloc->reloc_count++ * sizeof (Elf64_External_Rela);
-	      bfd_elf64_swap_reloca_out (output_bfd, &outrel, loc);
+		  BFD_ASSERT (count_and_swap_reloc_out (output_bfd, &outrel,
+							sreloc));
+		}
 
 	      if (!warned_dynamic
 		  && !ppc64_glibc_dynamic_reloc (ELF64_R_TYPE (outrel.r_info)))
@@ -16248,7 +17578,7 @@ ppc64_elf_relocate_section (bfd *output_
 		     input_bfd,
 		     ppc64_elf_howto_table[ELF64_R_TYPE (outrel.r_info)]->name,
 		     sym_name);
-		  warned_dynamic = TRUE;
+		  warned_dynamic = true;
 		}
 
 	      /* If this reloc is against an external symbol, it will
@@ -16257,7 +17587,7 @@ ppc64_elf_relocate_section (bfd *output_
 		 that the section contents are a known value.  */
 	      if (!relocate)
 		{
-		  unresolved_reloc = FALSE;
+		  unresolved_reloc = false;
 		  /* The value chosen here is quite arbitrary as ld.so
 		     ignores section contents except for the special
 		     case of .opd where the contents might be accessed
@@ -16303,7 +17633,7 @@ ppc64_elf_relocate_section (bfd *output_
 	     ppc64_elf_howto_table[r_type]->name, sym_name);
 
 	  bfd_set_error (bfd_error_invalid_operation);
-	  ret = FALSE;
+	  ret = false;
 	  goto copy_reloc;
 	}
 
@@ -16335,7 +17665,9 @@ ppc64_elf_relocate_section (bfd *output_
 	    htab->notoc_plt = 1;
 	  /* Fall through.  */
 	case R_PPC64_PLTCALL:
-	  if (unresolved_reloc)
+	  if (unresolved_reloc
+	      && offset_in_range (input_section, rel->r_offset,
+				  r_type == R_PPC64_PLTCALL ? 8 : 4))
 	    {
 	      /* No plt entry.  Make this into a direct call.  */
 	      bfd_byte *p = contents + rel->r_offset;
@@ -16353,7 +17685,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_PLTSEQ:
 	  if (unresolved_reloc)
 	    {
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	      goto nop_it;
 	    }
 	  break;
@@ -16363,12 +17695,13 @@ ppc64_elf_relocate_section (bfd *output_
 	    htab->notoc_plt = 1;
 	  /* Fall through.  */
 	case R_PPC64_PLT_PCREL34:
-	  if (unresolved_reloc)
+	  if (unresolved_reloc
+	      && offset_in_range (input_section, rel->r_offset, 8))
 	    {
 	      bfd_byte *p = contents + rel->r_offset;
 	      bfd_put_32 (input_bfd, PNOP >> 32, p);
 	      bfd_put_32 (input_bfd, PNOP, p + 4);
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	      goto copy_reloc;
 	    }
 	  break;
@@ -16376,7 +17709,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_PLT16_HA:
 	  if (unresolved_reloc)
 	    {
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	      goto nop_it;
 	    }
 	  /* Fall through.  */
@@ -16387,13 +17720,20 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_GOT16_HA:
 	case R_PPC64_TOC16_HA:
 	  if (htab->do_toc_opt && relocation + addend + 0x8000 < 0x10000
-	      && !ppc64_elf_tdata (input_bfd)->unexpected_toc_insn)
+	      && !ppc64_elf_tdata (input_bfd)->unexpected_toc_insn
+	      && !(bfd_link_pic (info)
+		   && (h != NULL
+		       ? bfd_is_abs_symbol (&h->elf.root)
+		       : sec == bfd_abs_section_ptr)))
 	    {
 	      bfd_byte *p;
 	    nop_it:
-	      p = contents + (rel->r_offset & ~3);
-	      bfd_put_32 (input_bfd, NOP, p);
-	      goto copy_reloc;
+	      if (offset_in_range (input_section, rel->r_offset & ~3, 4))
+		{
+		  p = contents + (rel->r_offset & ~3);
+		  bfd_put_32 (input_bfd, NOP, p);
+		  goto copy_reloc;
+		}
 	    }
 	  break;
 
@@ -16401,7 +17741,7 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_PLT16_LO_DS:
 	  if (unresolved_reloc)
 	    {
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	      goto nop_it;
 	    }
 	  /* Fall through.  */
@@ -16414,14 +17754,19 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_TOC16_LO:
 	case R_PPC64_TOC16_LO_DS:
 	  if (htab->do_toc_opt && relocation + addend + 0x8000 < 0x10000
-	      && !ppc64_elf_tdata (input_bfd)->unexpected_toc_insn)
+	      && !ppc64_elf_tdata (input_bfd)->unexpected_toc_insn
+	      && !(bfd_link_pic (info)
+		   && (h != NULL
+		       ? bfd_is_abs_symbol (&h->elf.root)
+		       : sec == bfd_abs_section_ptr))
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    {
 	      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
@@ -16434,28 +17779,21 @@ ppc64_elf_relocate_section (bfd *output_
 	  break;
 
 	case R_PPC64_TPREL16_HA:
-	  if (htab->do_tls_opt && relocation + addend + 0x8000 < 0x10000)
+	  if (htab->do_tls_opt
+	      && relocation + addend + 0x8000 < 0x10000
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    {
 	      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;
 
 	case R_PPC64_TPREL16_LO:
 	case R_PPC64_TPREL16_LO_DS:
-	  if (htab->do_tls_opt && relocation + addend + 0x8000 < 0x10000)
+	  if (htab->do_tls_opt
+	      && relocation + addend + 0x8000 < 0x10000
+	      && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	    {
 	      bfd_byte *p = contents + (rel->r_offset & ~3);
 	      insn = bfd_get_32 (input_bfd, p);
@@ -16539,6 +17877,8 @@ ppc64_elf_relocate_section (bfd *output_
 	case R_PPC64_TPREL16_LO_DS:
 	case R_PPC64_DTPREL16_DS:
 	case R_PPC64_DTPREL16_LO_DS:
+	  if (!offset_in_range (input_section, rel->r_offset & ~3, 4))
+	    break;
 	  insn = bfd_get_32 (input_bfd, contents + (rel->r_offset & ~3));
 	  mask = 3;
 	  /* If this reloc is against an lq, lxv, or stxv insn, then
@@ -16547,8 +17887,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);
@@ -16562,7 +17902,7 @@ ppc64_elf_relocate_section (bfd *output_
 		 ppc64_elf_howto_table[r_type]->name,
 		 mask + 1);
 	      bfd_set_error (bfd_error_bad_value);
-	      ret = FALSE;
+	      ret = false;
 	      goto copy_reloc;
 	    }
 	  break;
@@ -16571,7 +17911,7 @@ ppc64_elf_relocate_section (bfd *output_
       /* Dynamic relocs are not propagated for SEC_DEBUGGING sections
 	 because such sections are not SEC_ALLOC and thus ld.so will
 	 not process them.  */
-      howto = ppc64_elf_howto_table[(int) r_type];
+      howto = ppc64_elf_howto_table[r_type];
       if (unresolved_reloc
 	  && !((input_section->flags & SEC_DEBUGGING) != 0
 	       && h->elf.def_dynamic)
@@ -16584,7 +17924,7 @@ ppc64_elf_relocate_section (bfd *output_
 	     input_bfd, input_section, rel->r_offset,
 	     howto->name,
 	     h->elf.root.root.string);
-	  ret = FALSE;
+	  ret = false;
 	}
 
       /* 16-bit fields in insns mostly have signed values, but a
@@ -16592,20 +17932,21 @@ ppc64_elf_relocate_section (bfd *output_
 	 have different reloc types.  */
       if (howto->complain_on_overflow != complain_overflow_dont
 	  && howto->dst_mask == 0xffff
-	  && (input_section->flags & SEC_CODE) != 0)
+	  && (input_section->flags & SEC_CODE) != 0
+	  && offset_in_range (input_section, rel->r_offset & ~3, 4))
 	{
 	  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,15 +17967,15 @@ 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:
 	case R_PPC64_PCREL28:
-	  if (rel->r_offset + 8 > input_section->size)
+	  if (!offset_in_range (input_section, rel->r_offset, 8))
 	    r = bfd_reloc_outofrange;
 	  else
 	    {
@@ -16663,7 +18004,7 @@ ppc64_elf_relocate_section (bfd *output_
 	  break;
 
 	case R_PPC64_REL16DX_HA:
-	  if (rel->r_offset + 4 > input_section->size)
+	  if (!offset_in_range (input_section, rel->r_offset, 4))
 	    r = bfd_reloc_outofrange;
 	  else
 	    {
@@ -16715,11 +18056,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
 	    {
@@ -16728,10 +18068,9 @@ ppc64_elf_relocate_section (bfd *output_
 		(_("%H: %s against `%pT': error %d\n"),
 		 input_bfd, input_section, rel->r_offset,
 		 reloc_name, sym_name, (int) r);
-	      ret = FALSE;
+	      ret = false;
 	    }
-	  if (more_info != NULL)
-	    free (more_info);
+	  free (more_info);
 	}
     copy_reloc:
       if (wrel != rel)
@@ -16745,14 +18084,6 @@ ppc64_elf_relocate_section (bfd *output_
 
       rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section);
       rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
-      if (rel_hdr->sh_size == 0)
-	{
-	  /* It is too late to remove an empty reloc section.  Leave
-	     one NONE reloc.
-	     ??? What is wrong with an empty section???  */
-	  rel_hdr->sh_size = rel_hdr->sh_entsize;
-	  deleted -= 1;
-	}
       rel_hdr = _bfd_elf_single_rel_hdr (input_section);
       rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
       input_section->reloc_count -= deleted;
@@ -16763,15 +18094,16 @@ ppc64_elf_relocate_section (bfd *output_
      adjusted.  Worse, reloc symbol indices will be for the output
      file rather than the input.  Save a copy of the relocs for
      opd_entry_value.  */
-  if (is_opd && (info->emitrelocations || bfd_link_relocatable (info)))
+  if (is_opd
+      && (info->emitrelocations || bfd_link_relocatable (info))
+      && input_section->reloc_count != 0)
     {
       bfd_size_type amt;
       amt = input_section->reloc_count * sizeof (Elf_Internal_Rela);
       rel = bfd_alloc (input_bfd, amt);
-      BFD_ASSERT (ppc64_elf_tdata (input_bfd)->opd.relocs == NULL);
-      ppc64_elf_tdata (input_bfd)->opd.relocs = rel;
+      ppc64_elf_section_data (input_section)->u.opd.u.relocs = rel;
       if (rel == NULL)
-	return FALSE;
+	return false;
       memcpy (rel, relocs, amt);
     }
   return ret;
@@ -16812,7 +18144,7 @@ ppc64_elf_output_symbol_hook (struct bfd
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_finish_dynamic_symbol (bfd *output_bfd,
 				 struct bfd_link_info *info,
 				 struct elf_link_hash_entry *h,
@@ -16822,8 +18154,6 @@ ppc64_elf_finish_dynamic_symbol (bfd *ou
   struct plt_entry *ent;
 
   htab = ppc_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   if (!htab->opd_abi && !h->def_regular)
     for (ent = h->plt.plist; ent != NULL; ent = ent->next)
@@ -16858,26 +18188,21 @@ ppc64_elf_finish_dynamic_symbol (bfd *ou
       /* This symbol needs a copy reloc.  Set it up.  */
       Elf_Internal_Rela rela;
       asection *srel;
-      bfd_byte *loc;
 
       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)
 	srel = htab->elf.sreldynrelro;
       else
 	srel = htab->elf.srelbss;
-      loc = srel->contents;
-      loc += srel->reloc_count++ * sizeof (Elf64_External_Rela);
-      bfd_elf64_swap_reloca_out (output_bfd, &rela, loc);
+      BFD_ASSERT (count_and_swap_reloc_out (output_bfd, &rela, srel));
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Used to decide how to sort relocs in an optimal manner for the
@@ -16910,7 +18235,7 @@ ppc64_elf_reloc_type_class (const struct
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 ppc64_elf_finish_dynamic_sections (bfd *output_bfd,
 				   struct bfd_link_info *info)
 {
@@ -16920,7 +18245,7 @@ ppc64_elf_finish_dynamic_sections (bfd *
 
   htab = ppc_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->elf.dynobj;
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
@@ -16993,11 +18318,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"));
@@ -17039,7 +18360,7 @@ ppc64_elf_finish_dynamic_sections (bfd *
 				       elf_section_data (htab->brlt)->rela.hdr,
 				       elf_section_data (htab->brlt)->relocs,
 				       NULL))
-    return FALSE;
+    return false;
 
   if (htab->glink != NULL
       && htab->glink->reloc_count != 0
@@ -17048,7 +18369,7 @@ ppc64_elf_finish_dynamic_sections (bfd *
 				       elf_section_data (htab->glink)->rela.hdr,
 				       elf_section_data (htab->glink)->relocs,
 				       NULL))
-    return FALSE;
+    return false;
 
 
   if (htab->glink_eh_frame != NULL
@@ -17057,7 +18378,7 @@ ppc64_elf_finish_dynamic_sections (bfd *
       && !_bfd_elf_write_section_eh_frame (output_bfd, info,
 					   htab->glink_eh_frame,
 					   htab->glink_eh_frame->contents))
-    return FALSE;
+    return false;
 
   /* We need to handle writing out multiple GOT sections ourselves,
      since we didn't add them to DYNOBJ.  We know dynobj is the first
@@ -17076,7 +18397,7 @@ ppc64_elf_finish_dynamic_sections (bfd *
 	  && !bfd_set_section_contents (output_bfd, s->output_section,
 					s->contents, s->output_offset,
 					s->size))
-	return FALSE;
+	return false;
       s = ppc64_elf_tdata (dynobj)->relgot;
       if (s != NULL
 	  && s->size != 0
@@ -17084,10 +18405,23 @@ ppc64_elf_finish_dynamic_sections (bfd *
 	  && !bfd_set_section_contents (output_bfd, s->output_section,
 					s->contents, s->output_offset,
 					s->size))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
+}
+
+static bool
+ppc64_elf_free_cached_info (bfd *abfd)
+{
+  if (abfd->sections)
+    for (asection *opd = bfd_get_section_by_name (abfd, ".opd");
+	 opd != NULL;
+	 opd = bfd_get_next_section_by_name (NULL, opd))
+      if (opd->reloc_count == 0)
+	free (ppc64_elf_section_data (opd)->u.opd.u.contents);
+
+  return _bfd_elf_free_cached_info (abfd);
 }
 
 #include "elf64-target.h"
@@ -17095,7 +18429,9 @@ ppc64_elf_finish_dynamic_sections (bfd *
 /* FreeBSD support */
 
 #undef  TARGET_LITTLE_SYM
+#define TARGET_LITTLE_SYM powerpc_elf64_fbsd_le_vec
 #undef  TARGET_LITTLE_NAME
+#define TARGET_LITTLE_NAME "elf64-powerpcle-freebsd"
 
 #undef  TARGET_BIG_SYM
 #define TARGET_BIG_SYM	powerpc_elf64_fbsd_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.20200303/bfd/elf64-ppc.h ./bfd/elf64-ppc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-ppc.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-ppc.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC64-specific support for 64-bit ELF.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -27,6 +27,7 @@ struct ppc64_elf_params
   /* Linker call-backs.  */
   asection * (*add_stub_section) (const char *, asection *);
   void (*layout_sections_again) (void);
+  void (*edit) (void);
 
   /* Maximum size of a group of input sections that can be handled by
      one stub section.  A value of +/-1 indicates the bfd back-end
@@ -36,6 +37,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 +55,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;
@@ -65,19 +75,19 @@ struct ppc64_elf_params
   int object_in_toc;
 };
 
-bfd_boolean ppc64_elf_init_stub_bfd
+bool ppc64_elf_init_stub_bfd
   (struct bfd_link_info *, struct ppc64_elf_params *);
-bfd_boolean ppc64_elf_edit_opd
+bool ppc64_elf_edit_opd
   (struct bfd_link_info *);
-bfd_boolean ppc64_elf_inline_plt
+bool ppc64_elf_inline_plt
   (struct bfd_link_info *);
-asection *ppc64_elf_tls_setup
+bool ppc64_elf_tls_setup
   (struct bfd_link_info *);
-bfd_boolean ppc64_elf_tls_optimize
+bool ppc64_elf_tls_optimize
   (struct bfd_link_info *);
-bfd_boolean ppc64_elf_edit_toc
+bool ppc64_elf_edit_toc
   (struct bfd_link_info *);
-bfd_boolean ppc64_elf_has_small_toc_reloc
+bool ppc64_elf_has_small_toc_reloc
   (asection *);
 bfd_vma ppc64_elf_set_toc
   (struct bfd_link_info *, bfd *);
@@ -85,17 +95,17 @@ int ppc64_elf_setup_section_lists
   (struct bfd_link_info *);
 void ppc64_elf_start_multitoc_partition
   (struct bfd_link_info *);
-bfd_boolean ppc64_elf_next_toc_section
+bool ppc64_elf_next_toc_section
   (struct bfd_link_info *, asection *);
-bfd_boolean ppc64_elf_layout_multitoc
+bool ppc64_elf_layout_multitoc
   (struct bfd_link_info *);
 void ppc64_elf_finish_multitoc_partition
   (struct bfd_link_info *);
-bfd_boolean ppc64_elf_check_init_fini
+bool ppc64_elf_check_init_fini
   (struct bfd_link_info *);
-bfd_boolean ppc64_elf_next_input_section
+bool ppc64_elf_next_input_section
   (struct bfd_link_info *, asection *);
-bfd_boolean ppc64_elf_size_stubs
+bool ppc64_elf_size_stubs
 (struct bfd_link_info *);
-bfd_boolean ppc64_elf_build_stubs
+bool ppc64_elf_build_stubs
   (struct bfd_link_info *, 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.20200303/bfd/elf64-s390.c ./bfd/elf64-s390.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-s390.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-s390.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed Martin Schwidefsky (schwidefsky@de.ibm.com).
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -26,6 +26,9 @@
 #include "elf-bfd.h"
 #include "elf/s390.h"
 #include "elf-s390.h"
+#include "dwarf2.h"
+#include "sframe.h"
+#include "sframe-api.h"
 #include <stdarg.h>
 
 /* In case we're on a 32-bit machine, construct a 64-bit "-1" value
@@ -44,149 +47,149 @@ static reloc_howto_type elf_howto_table[
 {
   HOWTO (R_390_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = 2 byte, 2 = 4 byte) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_390_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
-  HOWTO(R_390_8,	 0, 0,	8, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_8",	 FALSE, 0,0x000000ff, FALSE),
-  HOWTO(R_390_12,	 0, 1, 12, FALSE, 0, complain_overflow_dont,
-	bfd_elf_generic_reloc, "R_390_12",	 FALSE, 0,0x00000fff, FALSE),
-  HOWTO(R_390_16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_16",	 FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_32",	 FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_PC32,	 0, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC32",	 FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_GOT12,	 0, 1, 12, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOT12",	 FALSE, 0,0x00000fff, FALSE),
-  HOWTO(R_390_GOT32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOT32",	 FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_PLT32,	 0, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT32",	 FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_COPY,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_COPY",	 FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_GLOB_DAT,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GLOB_DAT", FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_JMP_SLOT,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_JMP_SLOT", FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_RELATIVE,	 0, 4, 64,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_RELATIVE", FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_GOTOFF32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTOFF32", FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_GOTPC,	 0, 4, 64,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPC",	 FALSE, 0,MINUS_ONE,  TRUE),
-  HOWTO(R_390_GOT16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOT16",	 FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_PC16,	 0, 1, 16,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC16",	 FALSE, 0,0x0000ffff, TRUE),
-  HOWTO(R_390_PC16DBL,	 1, 1, 16,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC16DBL",	 FALSE, 0,0x0000ffff, TRUE),
-  HOWTO(R_390_PLT16DBL,	 1, 1, 16,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT16DBL", FALSE, 0,0x0000ffff, TRUE),
-  HOWTO(R_390_PC32DBL,	 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC32DBL",	 FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_PLT32DBL,	 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT32DBL", FALSE, 0,0xffffffff, TRUE),
-  HOWTO(R_390_GOTPCDBL,	 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPCDBL", FALSE, 0,MINUS_ONE,  TRUE),
-  HOWTO(R_390_64,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_64",	 FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_PC64,	 0, 4, 64,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC64",	 FALSE, 0,MINUS_ONE,  TRUE),
-  HOWTO(R_390_GOT64,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOT64",	 FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_PLT64,	 0, 4, 64,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT64",	 FALSE, 0,MINUS_ONE,  TRUE),
-  HOWTO(R_390_GOTENT,	 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTENT",	 FALSE, 0,MINUS_ONE,  TRUE),
-  HOWTO(R_390_GOTOFF16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTOFF16", FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_GOTOFF64,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTOFF64", FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_GOTPLT12,	 0, 1, 12, FALSE, 0, complain_overflow_dont,
-	bfd_elf_generic_reloc, "R_390_GOTPLT12", FALSE, 0,0x00000fff, FALSE),
-  HOWTO(R_390_GOTPLT16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPLT16", FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_GOTPLT32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPLT32", FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_GOTPLT64,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPLT64", FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_GOTPLTENT, 1, 2, 32,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_GOTPLTENT",FALSE, 0,MINUS_ONE,  TRUE),
-  HOWTO(R_390_PLTOFF16,	 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLTOFF16", FALSE, 0,0x0000ffff, FALSE),
-  HOWTO(R_390_PLTOFF32,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLTOFF32", FALSE, 0,0xffffffff, FALSE),
-  HOWTO(R_390_PLTOFF64,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLTOFF64", FALSE, 0,MINUS_ONE,  FALSE),
-  HOWTO(R_390_TLS_LOAD, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-	s390_tls_reloc, "R_390_TLS_LOAD", FALSE, 0, 0, FALSE),
-  HOWTO(R_390_TLS_GDCALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-	s390_tls_reloc, "R_390_TLS_GDCALL", FALSE, 0, 0, FALSE),
-  HOWTO(R_390_TLS_LDCALL, 0, 0, 0, FALSE, 0, complain_overflow_dont,
-	s390_tls_reloc, "R_390_TLS_LDCALL", FALSE, 0, 0, FALSE),
+  HOWTO(R_390_8,	 0, 1,	8, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_8",	 false, 0,0x000000ff, false),
+  HOWTO(R_390_12,	 0, 2, 12, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_390_12",	 false, 0,0x00000fff, false),
+  HOWTO(R_390_16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_16",	 false, 0,0x0000ffff, false),
+  HOWTO(R_390_32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_32",	 false, 0,0xffffffff, false),
+  HOWTO(R_390_PC32,	 0, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC32",	 false, 0,0xffffffff, true),
+  HOWTO(R_390_GOT12,	 0, 2, 12, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOT12",	 false, 0,0x00000fff, false),
+  HOWTO(R_390_GOT32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOT32",	 false, 0,0xffffffff, false),
+  HOWTO(R_390_PLT32,	 0, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT32",	 false, 0,0xffffffff, true),
+  HOWTO(R_390_COPY,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_COPY",	 false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_GLOB_DAT,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GLOB_DAT", false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_JMP_SLOT,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_JMP_SLOT", false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_RELATIVE,	 0, 8, 64,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_RELATIVE", false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_GOTOFF32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTOFF32", false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_GOTPC,	 0, 8, 64,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPC",	 false, 0,MINUS_ONE,  true),
+  HOWTO(R_390_GOT16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOT16",	 false, 0,0x0000ffff, false),
+  HOWTO(R_390_PC16,	 0, 2, 16,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC16",	 false, 0,0x0000ffff, true),
+  HOWTO(R_390_PC16DBL,	 1, 2, 16,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC16DBL",	 false, 0,0x0000ffff, true),
+  HOWTO(R_390_PLT16DBL,	 1, 2, 16,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT16DBL", false, 0,0x0000ffff, true),
+  HOWTO(R_390_PC32DBL,	 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC32DBL",	 false, 0,0xffffffff, true),
+  HOWTO(R_390_PLT32DBL,	 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT32DBL", false, 0,0xffffffff, true),
+  HOWTO(R_390_GOTPCDBL,	 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPCDBL", false, 0,MINUS_ONE,  true),
+  HOWTO(R_390_64,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_64",	 false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_PC64,	 0, 8, 64,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC64",	 false, 0,MINUS_ONE,  true),
+  HOWTO(R_390_GOT64,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOT64",	 false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_PLT64,	 0, 8, 64,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT64",	 false, 0,MINUS_ONE,  true),
+  HOWTO(R_390_GOTENT,	 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTENT",	 false, 0,MINUS_ONE,  true),
+  HOWTO(R_390_GOTOFF16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTOFF16", false, 0,0x0000ffff, false),
+  HOWTO(R_390_GOTOFF64,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTOFF64", false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_GOTPLT12,	 0, 2, 12, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_390_GOTPLT12", false, 0,0x00000fff, false),
+  HOWTO(R_390_GOTPLT16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPLT16", false, 0,0x0000ffff, false),
+  HOWTO(R_390_GOTPLT32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPLT32", false, 0,0xffffffff, false),
+  HOWTO(R_390_GOTPLT64,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPLT64", false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_GOTPLTENT, 1, 4, 32,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_GOTPLTENT",false, 0,MINUS_ONE,  true),
+  HOWTO(R_390_PLTOFF16,	 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLTOFF16", false, 0,0x0000ffff, false),
+  HOWTO(R_390_PLTOFF32,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLTOFF32", false, 0,0xffffffff, false),
+  HOWTO(R_390_PLTOFF64,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLTOFF64", false, 0,MINUS_ONE,  false),
+  HOWTO(R_390_TLS_LOAD, 0, 0, 0, false, 0, complain_overflow_dont,
+	s390_tls_reloc, "R_390_TLS_LOAD", false, 0, 0, false),
+  HOWTO(R_390_TLS_GDCALL, 0, 0, 0, false, 0, complain_overflow_dont,
+	s390_tls_reloc, "R_390_TLS_GDCALL", false, 0, 0, false),
+  HOWTO(R_390_TLS_LDCALL, 0, 0, 0, false, 0, complain_overflow_dont,
+	s390_tls_reloc, "R_390_TLS_LDCALL", false, 0, 0, false),
   EMPTY_HOWTO (R_390_TLS_GD32),	/* Empty entry for R_390_TLS_GD32.  */
-  HOWTO(R_390_TLS_GD64,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_GD64", FALSE, 0, MINUS_ONE, FALSE),
-  HOWTO(R_390_TLS_GOTIE12, 0, 1, 12, FALSE, 0, complain_overflow_dont,
-	bfd_elf_generic_reloc, "R_390_TLS_GOTIE12", FALSE, 0, 0x00000fff, FALSE),
+  HOWTO(R_390_TLS_GD64,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_GD64", false, 0, MINUS_ONE, false),
+  HOWTO(R_390_TLS_GOTIE12, 0, 2, 12, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_390_TLS_GOTIE12", false, 0, 0x00000fff, false),
   EMPTY_HOWTO (R_390_TLS_GOTIE32),	/* Empty entry for R_390_TLS_GOTIE32.  */
-  HOWTO(R_390_TLS_GOTIE64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_GOTIE64", FALSE, 0, MINUS_ONE, FALSE),
+  HOWTO(R_390_TLS_GOTIE64, 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_GOTIE64", false, 0, MINUS_ONE, false),
   EMPTY_HOWTO (R_390_TLS_LDM32),	/* Empty entry for R_390_TLS_LDM32.  */
-  HOWTO(R_390_TLS_LDM64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_LDM64", FALSE, 0, MINUS_ONE, FALSE),
+  HOWTO(R_390_TLS_LDM64, 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_LDM64", false, 0, MINUS_ONE, false),
   EMPTY_HOWTO (R_390_TLS_IE32),	/* Empty entry for R_390_TLS_IE32.  */
-  HOWTO(R_390_TLS_IE64,	 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_IE64", FALSE, 0, MINUS_ONE, FALSE),
-  HOWTO(R_390_TLS_IEENT, 1, 2, 32, TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_IEENT", FALSE, 0, MINUS_ONE, TRUE),
+  HOWTO(R_390_TLS_IE64,	 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_IE64", false, 0, MINUS_ONE, false),
+  HOWTO(R_390_TLS_IEENT, 1, 4, 32, true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_IEENT", false, 0, MINUS_ONE, true),
   EMPTY_HOWTO (R_390_TLS_LE32),	/* Empty entry for R_390_TLS_LE32.  */
-  HOWTO(R_390_TLS_LE64,	 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_LE64", FALSE, 0, MINUS_ONE, FALSE),
+  HOWTO(R_390_TLS_LE64,	 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_LE64", false, 0, MINUS_ONE, false),
   EMPTY_HOWTO (R_390_TLS_LDO32),	/* Empty entry for R_390_TLS_LDO32.  */
-  HOWTO(R_390_TLS_LDO64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_LDO64", FALSE, 0, MINUS_ONE, FALSE),
-  HOWTO(R_390_TLS_DTPMOD, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_DTPMOD", FALSE, 0, MINUS_ONE, FALSE),
-  HOWTO(R_390_TLS_DTPOFF, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_DTPOFF", FALSE, 0, MINUS_ONE, FALSE),
-  HOWTO(R_390_TLS_TPOFF, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_TLS_TPOFF", FALSE, 0, MINUS_ONE, FALSE),
-  HOWTO(R_390_20,	 0, 2, 20, FALSE, 8, complain_overflow_dont,
-	s390_elf_ldisp_reloc, "R_390_20",      FALSE, 0,0x0fffff00, FALSE),
-  HOWTO(R_390_GOT20,	 0, 2, 20, FALSE, 8, complain_overflow_dont,
-	s390_elf_ldisp_reloc, "R_390_GOT20",   FALSE, 0,0x0fffff00, FALSE),
-  HOWTO(R_390_GOTPLT20,	 0, 2, 20, FALSE, 8, complain_overflow_dont,
-	s390_elf_ldisp_reloc, "R_390_GOTPLT20", FALSE, 0,0x0fffff00, FALSE),
-  HOWTO(R_390_TLS_GOTIE20, 0, 2, 20, FALSE, 8, complain_overflow_dont,
-	s390_elf_ldisp_reloc, "R_390_TLS_GOTIE20", FALSE, 0,0x0fffff00, FALSE),
-  HOWTO(R_390_IRELATIVE, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_IRELATIVE", FALSE, 0, MINUS_ONE, FALSE),
-  HOWTO(R_390_PC12DBL,	 1, 1, 12,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC12DBL",	 FALSE, 0,0x00000fff, TRUE),
-  HOWTO(R_390_PLT12DBL,	 1, 1, 12,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT12DBL", FALSE, 0,0x00000fff, TRUE),
-  HOWTO(R_390_PC24DBL,	 1, 2, 24,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PC24DBL",	 FALSE, 0,0x00ffffff, TRUE),
-  HOWTO(R_390_PLT24DBL,	 1, 2, 24,  TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_390_PLT24DBL", FALSE, 0,0x00ffffff, TRUE),
+  HOWTO(R_390_TLS_LDO64, 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_LDO64", false, 0, MINUS_ONE, false),
+  HOWTO(R_390_TLS_DTPMOD, 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_DTPMOD", false, 0, MINUS_ONE, false),
+  HOWTO(R_390_TLS_DTPOFF, 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_DTPOFF", false, 0, MINUS_ONE, false),
+  HOWTO(R_390_TLS_TPOFF, 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_TLS_TPOFF", false, 0, MINUS_ONE, false),
+  HOWTO(R_390_20,	 0, 4, 20, false, 8, complain_overflow_dont,
+	s390_elf_ldisp_reloc, "R_390_20",      false, 0,0x0fffff00, false),
+  HOWTO(R_390_GOT20,	 0, 4, 20, false, 8, complain_overflow_dont,
+	s390_elf_ldisp_reloc, "R_390_GOT20",   false, 0,0x0fffff00, false),
+  HOWTO(R_390_GOTPLT20,	 0, 4, 20, false, 8, complain_overflow_dont,
+	s390_elf_ldisp_reloc, "R_390_GOTPLT20", false, 0,0x0fffff00, false),
+  HOWTO(R_390_TLS_GOTIE20, 0, 4, 20, false, 8, complain_overflow_dont,
+	s390_elf_ldisp_reloc, "R_390_TLS_GOTIE20", false, 0,0x0fffff00, false),
+  HOWTO(R_390_IRELATIVE, 0, 8, 64, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_IRELATIVE", false, 0, MINUS_ONE, false),
+  HOWTO(R_390_PC12DBL,	 1, 2, 12,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC12DBL",	 false, 0,0x00000fff, true),
+  HOWTO(R_390_PLT12DBL,	 1, 2, 12,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT12DBL", false, 0,0x00000fff, true),
+  HOWTO(R_390_PC24DBL,	 1, 4, 24,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PC24DBL",	 false, 0,0x00ffffff, true),
+  HOWTO(R_390_PLT24DBL,	 1, 4, 24,  true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_390_PLT24DBL", false, 0,0x00ffffff, true),
 };
 
 /* GNU extension to record C++ vtable hierarchy.  */
 static reloc_howto_type elf64_s390_vtinherit_howto =
-  HOWTO (R_390_GNU_VTINHERIT, 0,4,0,FALSE,0,complain_overflow_dont, NULL, "R_390_GNU_VTINHERIT", FALSE,0, 0, FALSE);
+  HOWTO (R_390_GNU_VTINHERIT, 0,8,0,false,0,complain_overflow_dont, NULL, "R_390_GNU_VTINHERIT", false,0, 0, false);
 static reloc_howto_type elf64_s390_vtentry_howto =
-  HOWTO (R_390_GNU_VTENTRY, 0,4,0,FALSE,0,complain_overflow_dont, _bfd_elf_rel_vtable_reloc_fn,"R_390_GNU_VTENTRY", FALSE,0,0, FALSE);
+  HOWTO (R_390_GNU_VTENTRY, 0,8,0,false,0,complain_overflow_dont, _bfd_elf_rel_vtable_reloc_fn,"R_390_GNU_VTENTRY", false,0,0, false);
 
 static reloc_howto_type *
 elf_s390_reloc_type_lookup (bfd *abfd,
@@ -354,7 +357,7 @@ elf_s390_reloc_name_lookup (bfd *abfd AT
 /* We need to use ELF64_R_TYPE so we have our own copy of this function,
    and elf64-s390.c has its own copy.  */
 
-static bfd_boolean
+static bool
 elf_s390_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 			arelent *cache_ptr,
 			Elf_Internal_Rela *dst)
@@ -378,11 +381,11 @@ elf_s390_info_to_howto (bfd *abfd ATTRIB
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      abfd, r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       cache_ptr->howto = &elf_howto_table[r_type];
     }
-  return TRUE;
+  return true;
 }
 
 /* A relocation function which doesn't do anything.  */
@@ -450,11 +453,11 @@ s390_elf_ldisp_reloc (bfd *abfd,
     return bfd_reloc_ok;
 }
 
-static bfd_boolean
+static bool
 elf_s390_is_local_label_name (bfd *abfd, const char *name)
 {
   if (name[0] == '.' && (name[1] == 'X' || name[1] == 'L'))
-    return TRUE;
+    return true;
 
   return _bfd_elf_is_local_label_name (abfd, name);
 }
@@ -564,6 +567,78 @@ static const bfd_byte elf_s390x_first_pl
     0x07, 0x00				    /* nopr    %r0		 */
   };
 
+/* .eh_frame covering the .plt section.  */
+
+#define PLT_CIE_SIZE		24
+#define PLT_FDE_SIZE		20
+#define PLT_FDE_START_OFFSET	(PLT_CIE_SIZE + 8)
+#define PLT_FDE_LEN_OFFSET	(PLT_CIE_SIZE + 12)
+
+static const bfd_byte elf_s390x_eh_frame_plt[] =
+{
+  0, 0, 0, PLT_CIE_SIZE - 4,	/* CIE length */
+  0, 0, 0, 0,			/* CIE ID */
+  1,				/* CIE version */
+  'z', 'R', 0,			/* Augmentation string */
+  1,				/* Code alignment factor */
+  0x78,				/* Data alignment factor */
+  14,				/* Return address column */
+  1,				/* Augmentation size */
+  DW_EH_PE_pcrel | DW_EH_PE_sdata4, /* FDE encoding */
+  DW_CFA_def_cfa, 15, 0xa0, 0x01, /* DW_CFA_def_cfa: r15 ofs 160 */
+  DW_CFA_nop, DW_CFA_nop, DW_CFA_nop,
+
+  0, 0, 0, PLT_FDE_SIZE - 4,	/* FDE length */
+  0, 0, 0, PLT_CIE_SIZE + 4,	/* CIE pointer */
+  0, 0, 0, 0,			/* R_S390_PC32 .plt goes here */
+  0, 0, 0, 0,			/* .plt size goes here */
+  0,				/* Augmentation size */
+  DW_CFA_nop, DW_CFA_nop, DW_CFA_nop
+};
+
+/* .sframe covering the .plt section.  */
+
+/* This must be the same as sframe_get_hdr_size (sfh).  For s390x, this value
+   is the same as sizeof (sframe_header) because there is no SFrame auxilliary
+   header.  */
+#define PLT_SFRAME_FDE_START_OFFSET	sizeof (sframe_header)
+
+#define SFRAME_PLT0_MAX_NUM_FRES 1
+#define SFRAME_PLTN_MAX_NUM_FRES 1
+
+struct elf_s390x_sframe_plt
+{
+  unsigned int plt0_entry_size;
+  unsigned int plt0_num_fres;
+  const sframe_frame_row_entry *plt0_fres[SFRAME_PLT0_MAX_NUM_FRES];
+
+  unsigned int pltn_entry_size;
+  unsigned int pltn_num_fres;
+  const sframe_frame_row_entry *pltn_fres[SFRAME_PLTN_MAX_NUM_FRES];
+};
+
+/* .sframe FRE covering the PLT0/PLTn .plt section entry.  */
+static const sframe_frame_row_entry elf_s390x_sframe_plt_fre =
+{
+  0, /* SFrame FRE start address.  */
+  { SFRAME_V2_S390X_CFA_OFFSET_ENCODE (160), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* Offset bytes.  */
+  SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info.  */
+};
+
+/* SFrame helper object for PLT.  */
+static const struct elf_s390x_sframe_plt elf_s390x_sframe_plt =
+{
+  PLT_FIRST_ENTRY_SIZE,
+  1, /* Number of FREs for PLT0.  */
+  /* Array of SFrame FREs for PLT0.  */
+  { &elf_s390x_sframe_plt_fre },
+
+  PLT_ENTRY_SIZE,
+  1, /* Number of FREs for PLTn.  */
+  /* Array of SFrame FREs for PLTn.  */
+  { &elf_s390x_sframe_plt_fre },
+};
+
 
 /* s390 ELF linker hash entry.  */
 
@@ -571,9 +646,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;
 
@@ -638,14 +710,13 @@ struct elf_s390_obj_tdata
    && elf_tdata (bfd) != NULL				\
    && elf_object_id (bfd) == S390_ELF_DATA)
 
-static bfd_boolean
+static bool
 elf_s390_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_s390_obj_tdata),
-				  S390_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_s390_obj_tdata));
 }
 
-static bfd_boolean
+static bool
 elf_s390_object_p (bfd *abfd)
 {
   /* Set the right machine number for an s390 elf32 file.  */
@@ -660,15 +731,18 @@ struct elf_s390_link_hash_table
 
   /* Short-cuts to get to dynamic linker sections.  */
   asection *irelifunc;
+  asection *plt_eh_frame;
+
+  sframe_encoder_ctx *plt_cfe_ctx;
+  asection *plt_sframe;
+  /* The .sframe helper object for .plt section.  */
+  const struct elf_s390x_sframe_plt *sframe_plt;
 
   union {
     bfd_signed_vma refcount;
     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 +750,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 +781,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,15 +796,14 @@ 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)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
-				      sizeof (struct elf_s390_link_hash_entry),
-				      S390_ELF_DATA))
+				      sizeof (struct elf_s390_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -751,37 +824,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)
     {
@@ -811,7 +853,7 @@ elf_s390_tls_transition (struct bfd_link
 			 int r_type,
 			 int is_local)
 {
-  if (bfd_link_pic (info))
+  if (bfd_link_dll (info))
     return r_type;
 
   switch (r_type)
@@ -836,7 +878,7 @@ elf_s390_tls_transition (struct bfd_link
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 elf_s390_check_relocs (bfd *abfd,
 		       struct bfd_link_info *info,
 		       asection *sec,
@@ -852,13 +894,13 @@ elf_s390_check_relocs (bfd *abfd,
   int tls_type, old_tls_type;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   BFD_ASSERT (is_s390_elf (abfd));
 
   htab = elf_s390_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_symtab_hdr (abfd);
   sym_hashes = elf_sym_hashes (abfd);
@@ -881,16 +923,16 @@ elf_s390_check_relocs (bfd *abfd,
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"),
 			      abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       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;
+	    return false;
 
 	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
@@ -900,12 +942,12 @@ elf_s390_check_relocs (bfd *abfd,
 		htab->elf.dynobj = abfd;
 
 	      if (!s390_elf_create_ifunc_sections (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 
 	      if (local_got_refcounts == NULL)
 		{
 		  if (!elf_s390_allocate_local_syminfo (abfd, symtab_hdr))
-		    return FALSE;
+		    return false;
 		  local_got_refcounts = elf_local_got_refcounts (abfd);
 		}
 	      plt = elf_s390_local_plt (abfd);
@@ -951,7 +993,7 @@ elf_s390_check_relocs (bfd *abfd,
 	      && local_got_refcounts == NULL)
 	    {
 	      if (!elf_s390_allocate_local_syminfo (abfd, symtab_hdr))
-		return FALSE;
+		return false;
 	      local_got_refcounts = elf_local_got_refcounts (abfd);
 	    }
 
@@ -966,7 +1008,7 @@ elf_s390_check_relocs (bfd *abfd,
 	      if (htab->elf.dynobj == NULL)
 		htab->elf.dynobj = abfd;
 	      if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	}
 
@@ -975,7 +1017,7 @@ elf_s390_check_relocs (bfd *abfd,
 	  if (htab->elf.dynobj == NULL)
 	    htab->elf.dynobj = abfd;
 	  if (!s390_elf_create_ifunc_sections (htab->elf.dynobj, info))
-	    return FALSE;
+	    return false;
 
 	  /* Make sure an IFUNC symbol defined in a non-shared object
 	     always gets a PLT slot.  */
@@ -1063,7 +1105,7 @@ elf_s390_check_relocs (bfd *abfd,
 	case R_390_TLS_GOTIE20:
 	case R_390_TLS_GOTIE64:
 	case R_390_TLS_IEENT:
-	  if (bfd_link_pic (info))
+	  if (bfd_link_dll (info))
 	    info->flags |= DF_STATIC_TLS;
 	  /* Fall through */
 
@@ -1119,7 +1161,7 @@ elf_s390_check_relocs (bfd *abfd,
 		    /* xgettext:c-format */
 		    (_("%pB: `%s' accessed both as normal and thread local symbol"),
 		     abfd, h->root.root.string);
-		  return FALSE;
+		  return false;
 		}
 	      if (old_tls_type > tls_type)
 		tls_type = old_tls_type;
@@ -1144,7 +1186,7 @@ elf_s390_check_relocs (bfd *abfd,
 	  if (r_type == R_390_TLS_LE64 && bfd_link_pie (info))
 	    break;
 
-	  if (!bfd_link_pic (info))
+	  if (!bfd_link_dll (info))
 	    break;
 	  info->flags |= DF_STATIC_TLS;
 	  /* Fall through */
@@ -1231,17 +1273,17 @@ elf_s390_check_relocs (bfd *abfd,
 		    htab->elf.dynobj = abfd;
 
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, 3, abfd, /*rela?*/ TRUE);
+		    (sec, htab->elf.dynobj, 3, abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* If this is a global symbol, we count the number of
 		 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,10 +1293,10 @@ 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;
+		    return false;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
@@ -1267,11 +1309,11 @@ 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)
-		    return FALSE;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -1295,14 +1337,14 @@ elf_s390_check_relocs (bfd *abfd,
 	     Reconstruct it for later use during GC.  */
 	case R_390_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_390_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -1310,7 +1352,7 @@ elf_s390_check_relocs (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -1338,7 +1380,7 @@ elf_s390_gc_mark_hook (asection *sec,
    entry but we found we will not create any.  Called when we find we will
    not have any PLT for this symbol, by for example
    elf_s390_adjust_dynamic_symbol when we're doing a proper dynamic link,
-   or elf_s390_size_dynamic_sections if no dynamic sections will be
+   or elf_s390_late_size_sections if no dynamic sections will be
    created (we're only linking static objects).  */
 
 static void
@@ -1356,30 +1398,13 @@ 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
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 elf_s390_adjust_dynamic_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h)
 {
@@ -1395,11 +1420,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;
@@ -1427,7 +1450,7 @@ elf_s390_adjust_dynamic_symbol (struct b
 	  h->plt.offset = (bfd_vma) -1;
 	  h->needs_plt = 0;
 	}
-      return TRUE;
+      return true;
     }
 
   /* If this is a function, put it in the procedure linkage table.  We
@@ -1450,7 +1473,7 @@ elf_s390_adjust_dynamic_symbol (struct b
 	  elf_s390_adjust_gotplt((struct elf_s390_link_hash_entry *) h);
 	}
 
-      return TRUE;
+      return true;
     }
   else
     /* It's possible that we incorrectly decided a .plt reloc was
@@ -1471,7 +1494,7 @@ elf_s390_adjust_dynamic_symbol (struct b
       h->root.u.def.value = def->root.u.def.value;
       if (ELIMINATE_COPY_RELOCS || info->nocopyreloc)
 	h->non_got_ref = def->non_got_ref;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -1482,26 +1505,26 @@ elf_s390_adjust_dynamic_symbol (struct b
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -1516,7 +1539,7 @@ elf_s390_adjust_dynamic_symbol (struct b
 
   htab = elf_s390_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* We must generate a R_390_COPY reloc to tell the dynamic linker to
      copy the initial value out of the dynamic object and into the
@@ -1540,25 +1563,155 @@ elf_s390_adjust_dynamic_symbol (struct b
   return _bfd_elf_adjust_dynamic_copy (info, h, s);
 }
 
+/* Create SFrame stack trace info for the PLT entries in the .plt section.  */
+
+static bool
+_bfd_s390_elf_create_sframe_plt (struct bfd_link_info *info)
+{
+  struct elf_s390_link_hash_table *htab;
+
+  unsigned int plt0_entry_size;
+  unsigned char func_info;
+  uint32_t fre_type;
+  /* The dynamic plt section for which .sframe stack trace information is being
+     created.  */
+  asection *dpltsec;
+
+  int err = 0;
+
+  sframe_encoder_ctx **ectx = NULL;
+  unsigned plt_entry_size = 0;
+  unsigned int num_pltn_fres = 0;
+  unsigned int num_pltn_entries = 0;
+  const sframe_frame_row_entry * const *pltn_fres;
+
+  htab = elf_s390_hash_table (info);
+  ectx = &htab->plt_cfe_ctx;
+  dpltsec = htab->elf.splt;
+
+  plt0_entry_size = htab->sframe_plt->plt0_entry_size;
+  plt_entry_size = htab->sframe_plt->pltn_entry_size;
+  pltn_fres = htab->sframe_plt->pltn_fres;
+  num_pltn_fres = htab->sframe_plt->pltn_num_fres;
+  num_pltn_entries = (dpltsec->size - plt0_entry_size) / plt_entry_size;
+
+  *ectx = sframe_encode (SFRAME_VERSION_2,
+			 SFRAME_F_FDE_FUNC_START_PCREL,
+			 SFRAME_ABI_S390X_ENDIAN_BIG,
+			 SFRAME_CFA_FIXED_FP_INVALID,
+			 SFRAME_CFA_FIXED_RA_INVALID,
+			 &err);
+
+  /* FRE type is dependent on the size of the function.  */
+  fre_type = sframe_calc_fre_type (dpltsec->size);
+  func_info = sframe_fde_create_func_info (fre_type, SFRAME_FDE_TYPE_PCINC);
+
+  /* Add SFrame FDE and the associated FREs for PLT0 if PLT0 has been
+     generated.  */
+  if (plt0_entry_size)
+    {
+      /* Add SFrame FDE for PLT0, the function start address is updated later
+	 at _bfd_elf_merge_section_sframe time.  */
+      sframe_encoder_add_funcdesc_v2 (*ectx,
+				      0, /* func start addr.  */
+				      plt0_entry_size,
+				      func_info,
+				      0, /* Rep block size.  */
+				      0 /* Num FREs.  */);
+      sframe_frame_row_entry plt0_fre;
+      unsigned int num_plt0_fres = htab->sframe_plt->plt0_num_fres;
+      for (unsigned int j = 0; j < num_plt0_fres; j++)
+	{
+	  plt0_fre = *(htab->sframe_plt->plt0_fres[j]);
+	  sframe_encoder_add_fre (*ectx, 0, &plt0_fre);
+	}
+    }
+
+  if (num_pltn_entries)
+    {
+      /* PLTn entries use an SFrame FDE of type
+	 SFRAME_FDE_TYPE_PCMASK to exploit the repetitive
+	 pattern of the instructions in these entries.  Using this SFrame FDE
+	 type helps in keeping the SFrame stack trace info for PLTn entries
+	 compact.  */
+      func_info	= sframe_fde_create_func_info (fre_type,
+					       SFRAME_FDE_TYPE_PCMASK);
+      /* Add the SFrame FDE for all PCs starting at the first PLTn entry (hence,
+	 function start address = plt0_entry_size.  As usual, this will be
+	 updated later at _bfd_elf_merge_section_sframe, by when the
+	 sections are relocated.  */
+      sframe_encoder_add_funcdesc_v2 (*ectx,
+				      plt0_entry_size, /* func start addr.  */
+				      dpltsec->size - plt0_entry_size,
+				      func_info,
+				      plt_entry_size,
+				      0 /* Num FREs.  */);
+
+      sframe_frame_row_entry pltn_fre;
+      /* Now add the FREs for PLTn.  Simply adding the FREs suffices due
+	 to the usage of SFRAME_FDE_TYPE_PCMASK above.  */
+      for (unsigned int j = 0; j < num_pltn_fres; j++)
+	{
+	  unsigned int func_idx = plt0_entry_size ? 1 : 0;
+	  pltn_fre = *(pltn_fres[j]);
+	  sframe_encoder_add_fre (*ectx, func_idx, &pltn_fre);
+	}
+    }
+
+  return true;
+}
+
+/* Write contents of the .sframe section.  */
+
+static bool
+_bfd_s390_elf_write_sframe_plt (struct bfd_link_info *info)
+{
+  struct elf_s390_link_hash_table *htab;
+  sframe_encoder_ctx *ectx;
+  size_t sec_size;
+  asection *sec;
+  bfd *dynobj;
+
+  int err = 0;
+
+  htab = elf_s390_hash_table (info);
+  dynobj = htab->elf.dynobj;
+
+  ectx = htab->plt_cfe_ctx;
+  sec = htab->plt_sframe;
+
+  BFD_ASSERT (ectx);
+
+  void *contents = sframe_encoder_write (ectx, &sec_size, &err);
+
+  sec->size = (bfd_size_type) sec_size;
+  sec->contents = (unsigned char *) bfd_zalloc (dynobj, sec->size);
+  sec->alloced = 1;
+  memcpy (sec->contents, contents, sec_size);
+
+  sframe_encoder_free (&ectx);
+
+  return true;
+}
+
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h,
 		    void * inf)
 {
   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)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = elf_s390_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it
      here if it is defined and referenced in a non-shared object.  */
@@ -1573,7 +1726,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (bfd_link_pic (info)
@@ -1628,7 +1781,7 @@ allocate_dynrelocs (struct elf_link_hash
      to R_390_TLS_LE64 requiring no TLS entry. For GOTIE12 and IEENT
      we can save the dynamic TLS relocation.  */
   if (h->got.refcount > 0
-      && !bfd_link_pic (info)
+      && !bfd_link_dll (info)
       && h->dynindx == -1
       && elf_s390_hash_entry(h)->tls_type >= GOT_TLS_IE)
     {
@@ -1646,7 +1799,7 @@ allocate_dynrelocs (struct elf_link_hash
   else if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = elf_s390_hash_entry(h)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -1655,7 +1808,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->elf.sgot;
@@ -1680,8 +1833,8 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -1695,7 +1848,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 +1861,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.  */
@@ -1721,7 +1874,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -1744,7 +1897,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -1753,67 +1906,40 @@ 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);
     }
 
-  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;
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				struct bfd_link_info *info)
+static bool
+elf_s390_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			     struct bfd_link_info *info)
 {
   struct elf_s390_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
   htab = elf_s390_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->elf.dynobj;
   if (dynobj == NULL)
-    abort ();
+    return true;
 
   if (htab->elf.dynamic_sections_created)
     {
@@ -1825,6 +1951,7 @@ elf_s390_size_dynamic_sections (bfd *out
 	    abort ();
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -1937,9 +2064,37 @@ elf_s390_size_dynamic_sections (bfd *out
      sym dynamic relocs.  */
   elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info);
 
+  if (_bfd_elf_eh_frame_present (info))
+    {
+      if (htab->plt_eh_frame != NULL
+	  && htab->elf.splt != NULL
+	  && htab->elf.splt->size != 0
+	  && !bfd_is_abs_section (htab->elf.splt->output_section))
+	htab->plt_eh_frame->size = sizeof (elf_s390x_eh_frame_plt);
+    }
+
+  /* No need to size the .sframe section explicitly because the write-out
+     mechanism is different.  Simply prep up the FDE/FRE for the
+     .plt section.  */
+  if (_bfd_elf_sframe_present (info))
+    {
+      if (htab->plt_sframe != NULL
+	  && htab->elf.splt != NULL
+	  && htab->elf.splt->size != 0
+	  && !bfd_is_abs_section (htab->elf.splt->output_section))
+	{
+	  _bfd_s390_elf_create_sframe_plt (info);
+	  /* FIXME - Dirty Hack.  Set the size to something non-zero for now,
+	     so that the section does not get stripped out below.  The precise
+	     size of this section is known only when the contents are
+	     serialized in _bfd_s390x_elf_write_sframe_plt.  */
+	  htab->plt_sframe->size = sizeof (sframe_header) + 1;
+	}
+    }
+
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       if ((s->flags & SEC_LINKER_CREATED) == 0)
@@ -1948,6 +2103,8 @@ elf_s390_size_dynamic_sections (bfd *out
       if (s == htab->elf.splt
 	  || s == htab->elf.sgot
 	  || s == htab->elf.sgotplt
+	  || s == htab->plt_eh_frame
+	  || s == htab->plt_sframe
 	  || s == htab->elf.sdynbss
 	  || s == htab->elf.sdynrelro
 	  || s == htab->elf.iplt
@@ -1957,10 +2114,23 @@ elf_s390_size_dynamic_sections (bfd *out
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->elf.srelplt)
-	    relocs = TRUE;
+	    {
+	      relocs = true;
+	      if (s == htab->elf.irelplt)
+		{
+		  /* In static-pie case, there are IRELATIVE-relocs in
+		     .rela.iplt (htab->irelplt), which will later be grouped
+		     to .rela.plt.  On s390, the IRELATIVE relocations are
+		     always located in .rela.iplt - even for non-static case.
+		     Ensure that DT_JMPREL, DT_PLTRELA, DT_PLTRELASZ is added
+		     to the dynamic section even if htab->srelplt->size == 0.
+		     See _bfd_elf_add_dynamic_tags in bfd/elflink.c.  */
+		  htab->elf.dt_jmprel_required = true;
+		}
+	    }
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -1991,6 +2161,11 @@ elf_s390_size_dynamic_sections (bfd *out
       if ((s->flags & SEC_HAS_CONTENTS) == 0)
 	continue;
 
+      /* Skip allocating contents for .sframe section as it is written
+	 out differently.  See below.  */
+      if (s == htab->plt_sframe)
+	continue;
+
       /* Allocate memory for the section contents.  We use bfd_zalloc
 	 here in case unused entries are not reclaimed before the
 	 section's contents are written out.  This should not happen,
@@ -1998,56 +2173,30 @@ elf_s390_size_dynamic_sections (bfd *out
 	 of garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
-  if (htab->elf.dynamic_sections_created)
+  if (htab->plt_eh_frame != NULL
+      && htab->plt_eh_frame->contents != NULL)
     {
-      /* 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);
+      memcpy (htab->plt_eh_frame->contents,
+	      elf_s390x_eh_frame_plt,
+	      htab->plt_eh_frame->size);
+      bfd_put_32 (dynobj, htab->elf.splt->size,
+		  htab->plt_eh_frame->contents + PLT_FDE_LEN_OFFSET);
+    }
 
-	  if ((info->flags & DF_TEXTREL) != 0)
-	    {
-	      if (!add_dynamic_entry (DT_TEXTREL, 0))
-		return FALSE;
-	    }
-	}
+  if (_bfd_elf_sframe_present (info))
+    {
+      if (htab->plt_sframe != NULL
+	  && htab->elf.splt != NULL
+	  && htab->elf.splt->size != 0
+	  && htab->plt_sframe->contents == NULL)
+	_bfd_s390_elf_write_sframe_plt (info);
     }
-#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
@@ -2100,7 +2249,7 @@ invalid_tls_insn (bfd *input_bfd,
 
 /* Relocate a 390 ELF section.  */
 
-static bfd_boolean
+static int
 elf_s390_relocate_section (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   bfd *input_bfd,
@@ -2120,12 +2269,12 @@ elf_s390_relocate_section (bfd *output_b
   if (!is_s390_elf (input_bfd))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   htab = elf_s390_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_symtab_hdr (input_bfd);
   sym_hashes = elf_sym_hashes (input_bfd);
@@ -2143,10 +2292,10 @@ elf_s390_relocate_section (bfd *output_b
       asection *sec;
       bfd_vma off;
       bfd_vma relocation;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       bfd_reloc_status_type r;
       int tls_type;
-      bfd_boolean resolved_to_zero;
+      bool resolved_to_zero;
 
       r_type = ELF64_R_TYPE (rel->r_info);
       if (r_type == (int) R_390_GNU_VTINHERIT
@@ -2155,7 +2304,7 @@ elf_s390_relocate_section (bfd *output_b
       if (r_type >= (int) R_390_max)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       howto = elf_howto_table + r_type;
@@ -2164,7 +2313,7 @@ elf_s390_relocate_section (bfd *output_b
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -2174,7 +2323,7 @@ elf_s390_relocate_section (bfd *output_b
 	    {
 	      struct plt_entry *local_plt = elf_s390_local_plt (input_bfd);
 	      if (local_plt == NULL)
-		return FALSE;
+		return false;
 
 	      /* Address of the PLT slot.  */
 	      relocation = (htab->elf.iplt->output_section->vma
@@ -2226,8 +2375,8 @@ elf_s390_relocate_section (bfd *output_b
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2237,7 +2386,8 @@ elf_s390_relocate_section (bfd *output_b
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_390_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -2285,7 +2435,7 @@ elf_s390_relocate_section (bfd *output_b
 		}
 	      if (r_type == R_390_GOTPLTENT)
 		relocation += s390_got_pointer (info);
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	      break;
 	    }
 	  /* Fall through.  */
@@ -2303,7 +2453,7 @@ elf_s390_relocate_section (bfd *output_b
 
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      dyn = htab->elf.dynamic_sections_created;
@@ -2339,13 +2489,9 @@ elf_s390_relocate_section (bfd *output_b
 	      else if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
 							  bfd_link_pic (info),
 							  h)
-		       || (bfd_link_pic (info)
-			   && SYMBOL_REFERENCES_LOCAL (info, h))
+		       || SYMBOL_REFERENCES_LOCAL (info, h)
 		       || resolved_to_zero)
 		{
-		  Elf_Internal_Sym *isym;
-		  asection *sym_sec;
-
 		  /* This is actually a static link, or it is a
 		     -Bsymbolic link and the symbol is defined
 		     locally, or the symbol was forced to be local
@@ -2371,9 +2517,8 @@ elf_s390_relocate_section (bfd *output_b
 		     reference using larl we have to make sure that
 		     the symbol is 1. properly aligned and 2. it is no
 		     ABS symbol or will become one.  */
-		  if ((h->def_regular
-		       && bfd_link_pic (info)
-		       && SYMBOL_REFERENCES_LOCAL (info, h))
+		  if (h->def_regular
+		      && SYMBOL_REFERENCES_LOCAL (info, h)
 		      /* lgrl rx,sym@GOTENT -> larl rx, sym */
 		      && ((r_type == R_390_GOTENT
 			   && (bfd_get_16 (input_bfd,
@@ -2386,16 +2531,13 @@ 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,
-							input_bfd, r_symndx))
-		      && isym->st_shndx != SHN_ABS
+		      && !bfd_is_abs_symbol (&h->root)
 		      && h != htab->elf.hdynamic
 		      && h != htab->elf.hgot
 		      && h != htab->elf.hplt
-		      && !(isym->st_value & 1)
-		      && (sym_sec = bfd_section_from_elf_index (input_bfd,
-								isym->st_shndx))
-		      && sym_sec->alignment_power)
+		      && !((h->root.u.def.value
+			    + sec->output_section->vma
+			    + sec->output_offset) & 1))
 		    {
 		      unsigned short new_insn =
 			(0xc000 | (bfd_get_8 (input_bfd,
@@ -2412,7 +2554,7 @@ elf_s390_relocate_section (bfd *output_b
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -2495,7 +2637,7 @@ elf_s390_relocate_section (bfd *output_b
 	case R_390_GOTPCDBL:
 	  /* Use global offset table as symbol value.  */
 	  relocation = s390_got_pointer (info);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_PLT12DBL:
@@ -2518,6 +2660,43 @@ elf_s390_relocate_section (bfd *output_b
 	      /* We didn't make a PLT entry for this symbol.  This
 		 happens when statically linking PIC code, or when
 		 using -Bsymbolic.  */
+
+	      /* Replace relative long addressing instructions of weak
+		 symbols, which will definitely resolve to zero, with
+		 either a load address of 0 or a trapping insn.
+		 This prevents the PLT32DBL relocation from overflowing in
+		 case the binary will be loaded at 4GB or more.  */
+	      if (h->root.type == bfd_link_hash_undefweak
+		  && !h->root.linker_def
+		  && (bfd_link_executable (info)
+		      || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
+		  && r_type == R_390_PLT32DBL
+		  && rel->r_offset >= 2)
+		{
+		  void *insn_start = contents + rel->r_offset - 2;
+		  uint16_t op = bfd_get_16 (input_bfd, insn_start) & 0xff0f;
+		  uint8_t reg = bfd_get_8 (input_bfd, insn_start + 1) & 0xf0;
+
+		  /* NOTE: The order of the if's is important!  */
+		  /* Replace load address relative long (larl) with load
+		     address (lay) */
+		  if (op == 0xc000)
+		    {
+		      /* larl rX,<weak sym> -> lay rX,0(0)  */
+		      bfd_put_16 (output_bfd, 0xe300 | reg, insn_start);
+		      bfd_put_32 (output_bfd, 0x71, insn_start + 2);
+		      continue;
+		    }
+		  /* Replace branch relative and save long (brasl) with a trap.  */
+		  else if (op == 0xc005)
+		    {
+		      /* brasl rX,<weak sym> -> jg .+2 (6-byte trap)  */
+		      bfd_put_16 (output_bfd, 0xc0f4, insn_start);
+		      bfd_put_32 (output_bfd, 0x1, insn_start + 2);
+		      continue;
+		    }
+		}
+
 	      break;
 	    }
 	  if (s390_is_ifunc_symbol_p (h))
@@ -2528,7 +2707,7 @@ elf_s390_relocate_section (bfd *output_b
 	    relocation = (htab->elf.splt->output_section->vma
 			  + htab->elf.splt->output_offset
 			  + h->plt.offset);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_PLTOFF16:
@@ -2557,7 +2736,7 @@ elf_s390_relocate_section (bfd *output_b
 			  + htab->elf.splt->output_offset
 			  + h->plt.offset
 			  - s390_got_pointer (info));
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_PC16:
@@ -2577,7 +2756,7 @@ elf_s390_relocate_section (bfd *output_b
 				    "(rebuild file with -fPIC ?)"),
 				  input_bfd, h->root.root.string);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  /* The target of these relocs are instruction operands
 	     residing in read-only sections.  We cannot emit a runtime
@@ -2592,6 +2771,60 @@ elf_s390_relocate_section (bfd *output_b
 			    + h->plt.offset);
 	      goto do_relocation;
 	    }
+
+	  /* Replace relative long addressing instructions of weak
+	     symbols, which will definitely resolve to zero, with
+	     either a load address of 0, a NOP, or a trapping insn.
+	     This prevents the PC32DBL relocation from overflowing in
+	     case the binary will be loaded at 4GB or more.  */
+	  if (h != NULL
+	      && h->root.type == bfd_link_hash_undefweak
+	      && !h->root.linker_def
+	      && (bfd_link_executable (info)
+		  || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
+	      && r_type == R_390_PC32DBL
+	      && rel->r_offset >= 2)
+	    {
+	      void *insn_start = contents + rel->r_offset - 2;
+	      uint16_t op = bfd_get_16 (input_bfd, insn_start) & 0xff0f;
+	      uint8_t reg = bfd_get_8 (input_bfd, insn_start + 1) & 0xf0;
+
+	      /* NOTE: The order of the if's is important!  */
+	      /* Replace load address relative long (larl) with load
+		 address (lay) */
+	      if (op == 0xc000)
+		{
+		  /* larl rX,<weak sym> -> lay rX,0(0)  */
+		  bfd_put_16 (output_bfd, 0xe300 | reg, insn_start);
+		  bfd_put_32 (output_bfd, 0x71, insn_start + 2);
+		  continue;
+		}
+	      /* Replace prefetch data relative long (pfdrl) with a NOP  */
+	      else if (op == 0xc602)
+		{
+		  /* Emit a 6-byte NOP: jgnop .  */
+		  bfd_put_16 (output_bfd, 0xc004, insn_start);
+		  bfd_put_32 (output_bfd, 0x0, insn_start + 2);
+		  continue;
+		}
+	      /* Replace the following instructions with a trap:
+		 - branch relative and save long (brasl)
+		 - load (logical) relative long (lrl, lgrl, lgfrl, llgfrl)
+		 - load (logical) halfword relative long (lhrl, lghrl, llhrl, llghrl)
+		 - store relative long (strl, stgrl)
+		 - store halfword relative long (sthrl)
+		 - execute relative long (exrl)
+		 - compare (logical) relative long (crl, clrl, cgrl, clgrl, cgfrl, clgfrl)
+		 - compare (logical) halfword relative long (chrl, cghrl, clhrl, clghrl)  */
+	      else if (op == 0xc005 || (op & 0xff00) == 0xc400
+		       || (op & 0xff00) == 0xc600)
+		{
+		  /* Emit a 6-byte trap: jg .+2  */
+		  bfd_put_16 (output_bfd, 0xc0f4, insn_start);
+		  bfd_put_32 (output_bfd, 0x1, insn_start + 2);
+		  continue;
+		}
+	    }
 	  /* Fall through.  */
 
 	case R_390_8:
@@ -2688,23 +2921,23 @@ elf_s390_relocate_section (bfd *output_b
 		      || h->root.type == bfd_link_hash_undefined)))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
 	      asection *sreloc;
 	      bfd_byte *loc;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
 		 time.  */
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
@@ -2733,7 +2966,7 @@ elf_s390_relocate_section (bfd *output_b
 		  outrel.r_addend = relocation + rel->r_addend;
 		  if (r_type == R_390_64)
 		    {
-		      relocate = TRUE;
+		      relocate = true;
 		      outrel.r_info = ELF64_R_INFO (0, R_390_RELATIVE);
 		    }
 		  else
@@ -2745,7 +2978,7 @@ elf_s390_relocate_section (bfd *output_b
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error(bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -2792,7 +3025,7 @@ elf_s390_relocate_section (bfd *output_b
 
 	  /* Relocations for tls literal pool entries.  */
 	case R_390_TLS_IE64:
-	  if (bfd_link_pic (info))
+	  if (bfd_link_dll (info))
 	    {
 	      Elf_Internal_Rela outrel;
 	      asection *sreloc;
@@ -2820,7 +3053,7 @@ elf_s390_relocate_section (bfd *output_b
 	  else if (h != NULL)
 	    {
 	      tls_type = elf_s390_hash_entry(h)->tls_type;
-	      if (!bfd_link_pic (info) && h->dynindx == -1 && tls_type >= GOT_TLS_IE)
+	      if (!bfd_link_dll (info) && h->dynindx == -1 && tls_type >= GOT_TLS_IE)
 		r_type = R_390_TLS_LE64;
 	    }
 	  if (r_type == R_390_TLS_GD64 && tls_type >= GOT_TLS_IE)
@@ -2831,7 +3064,7 @@ elf_s390_relocate_section (bfd *output_b
 	      /* This relocation gets optimized away by the local exec
 		 access optimization.  */
 	      BFD_ASSERT (! unresolved_reloc);
-	      bfd_put_64 (output_bfd, -tpoff (info, relocation),
+	      bfd_put_64 (output_bfd, -tpoff (info, relocation) + rel->r_addend,
 			  contents + rel->r_offset);
 	      continue;
 	    }
@@ -2913,7 +3146,7 @@ elf_s390_relocate_section (bfd *output_b
 	      relocation = htab->elf.sgot->output_offset + off;
 	      if (r_type == R_390_TLS_IE64 || r_type == R_390_TLS_IEENT)
 		relocation += htab->elf.sgot->output_section->vma;
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -2931,14 +3164,14 @@ elf_s390_relocate_section (bfd *output_b
 	      if (local_got_offsets == NULL)
 		abort();
 	      off = local_got_offsets[r_symndx];
-	      if (bfd_link_pic (info))
+	      if (bfd_link_dll (info))
 		goto emit_tls_relocs;
 	    }
 	  else
 	    {
 	      off = h->got.offset;
 	      tls_type = elf_s390_hash_entry(h)->tls_type;
-	      if (bfd_link_pic (info) || h->dynindx != -1 || tls_type < GOT_TLS_IE)
+	      if (bfd_link_dll (info) || h->dynindx != -1 || tls_type < GOT_TLS_IE)
 		goto emit_tls_relocs;
 	    }
 
@@ -2951,11 +3184,11 @@ elf_s390_relocate_section (bfd *output_b
 	  relocation = htab->elf.sgot->output_offset + off;
 	  if (r_type == R_390_TLS_IEENT)
 	    relocation += htab->elf.sgot->output_section->vma;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_TLS_LDM64:
-	  if (! bfd_link_pic (info))
+	  if (! bfd_link_dll (info))
 	    /* The literal pool entry this relocation refers to gets ignored
 	       by the optimized code of the local exec model. Do nothing
 	       and the value will turn out zero.  */
@@ -2989,7 +3222,7 @@ elf_s390_relocate_section (bfd *output_b
 	      htab->tls_ldm_got.offset |= 1;
 	    }
 	  relocation = htab->elf.sgot->output_offset + off;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_390_TLS_LE64:
@@ -3024,13 +3257,13 @@ elf_s390_relocate_section (bfd *output_b
 	  else
 	    {
 	      BFD_ASSERT (! unresolved_reloc);
-	      bfd_put_64 (output_bfd, -tpoff (info, relocation),
+	      bfd_put_64 (output_bfd, -tpoff (info, relocation) + rel->r_addend,
 			  contents + rel->r_offset);
 	    }
 	  continue;
 
 	case R_390_TLS_LDO64:
-	  if (bfd_link_pic (info) || (input_section->flags & SEC_DEBUGGING))
+	  if (bfd_link_dll (info) || (input_section->flags & SEC_DEBUGGING))
 	    relocation -= dtpoff_base (info);
 	  else
 	    /* When converting LDO to LE, we must negate.  */
@@ -3052,7 +3285,7 @@ elf_s390_relocate_section (bfd *output_b
 
 	  if (r_type == R_390_TLS_LOAD)
 	    {
-	      if (!bfd_link_pic (info) && (h == NULL || h->dynindx == -1))
+	      if (!bfd_link_dll (info) && (h == NULL || h->dynindx == -1))
 		{
 		  /* IE->LE transition. Four valid cases:
 		     lg %rx,(0,%ry)    -> sllg %rx,%ry,0
@@ -3066,7 +3299,7 @@ elf_s390_relocate_section (bfd *output_b
 		  if (insn1 != 0x0004)
 		    {
 		      invalid_tls_insn (input_bfd, input_section, rel);
-		      return FALSE;
+		      return false;
 		    }
 		  if ((insn0 & 0xff00f000) == 0xe3000000)
 		    /* lg %rx,0(%ry,0) -> sllg %rx,%ry,0  */
@@ -3083,7 +3316,7 @@ elf_s390_relocate_section (bfd *output_b
 		  else
 		    {
 		      invalid_tls_insn (input_bfd, input_section, rel);
-		      return FALSE;
+		      return false;
 		    }
 		  insn0 = 0xeb000000 | (insn0 & 0x00f00000) | ry;
 		  insn1 = 0x000d;
@@ -3100,9 +3333,9 @@ elf_s390_relocate_section (bfd *output_b
 	      if ((insn0 & 0xffff0000) != 0xc0e50000)
 		{
 		  invalid_tls_insn (input_bfd, input_section, rel);
-		  return FALSE;
+		  return false;
 		}
-	      if (!bfd_link_pic (info) && (h == NULL || h->dynindx == -1))
+	      if (!bfd_link_dll (info) && (h == NULL || h->dynindx == -1))
 		{
 		  /* GD->LE transition.
 		     brasl %r14,__tls_get_addr@plt -> brcl 0,. */
@@ -3121,7 +3354,7 @@ elf_s390_relocate_section (bfd *output_b
 	    }
 	  else if (r_type == R_390_TLS_LDCALL)
 	    {
-	      if (!bfd_link_pic (info))
+	      if (!bfd_link_dll (info))
 		{
 		  unsigned int insn0, insn1;
 
@@ -3130,7 +3363,7 @@ elf_s390_relocate_section (bfd *output_b
 		  if ((insn0 & 0xffff0000) != 0xc0e50000)
 		    {
 		      invalid_tls_insn (input_bfd, input_section, rel);
-		      return FALSE;
+		      return false;
 		    }
 		  /* LD->LE transition.
 		     brasl %r14,__tls_get_addr@plt -> brcl 0,. */
@@ -3173,6 +3406,25 @@ elf_s390_relocate_section (bfd *output_b
 	  || r_type == R_390_PLT24DBL)
 	rel->r_offset--;
 
+      /* Issue an error if the right shift implied by the relocation
+	 would drop bits from the symbol value.  */
+      if (howto->rightshift
+	  && (relocation & (((bfd_vma)1 << howto->rightshift) - 1)))
+	{
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB(%pA+%#" PRIx64 "): "
+	       "relocation %s against misaligned symbol `%s' (%#" PRIx64 ") in %pB"),
+	     input_bfd,
+	     input_section,
+	     (uint64_t) rel->r_offset,
+	     howto->name,
+	     h->root.root.string,
+	     (uint64_t)relocation,
+	     sec->owner);
+	  return false;
+	}
+
       if (r_type == R_390_20
 	  || r_type == R_390_GOT20
 	  || r_type == R_390_GOTPLT20
@@ -3201,7 +3453,7 @@ elf_s390_relocate_section (bfd *output_b
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      if (*name == '\0')
 		name = bfd_section_name (sec);
 	    }
@@ -3217,12 +3469,12 @@ elf_s390_relocate_section (bfd *output_b
 		(_("%pB(%pA+%#" PRIx64 "): reloc against `%s': error %d"),
 		 input_bfd, input_section,
 		 (uint64_t) rel->r_offset, name, (int) r);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Generate the PLT slots together with the dynamic relocations needed
@@ -3314,7 +3566,7 @@ elf_s390_finish_ifunc_symbol (bfd *outpu
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf_s390_finish_dynamic_symbol (bfd *output_bfd,
 				struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
@@ -3324,8 +3576,6 @@ elf_s390_finish_dynamic_symbol (bfd *out
   struct elf_s390_link_hash_entry *eh = (struct elf_s390_link_hash_entry*)h;
 
   htab = elf_s390_hash_table (info);
-  if (htab == NULL)
-    return FALSE;
 
   if (h->plt.offset != (bfd_vma) -1)
     {
@@ -3457,14 +3707,13 @@ elf_s390_finish_dynamic_symbol (bfd *out
 				       + htab->elf.iplt->output_offset
 				       + h->plt.offset),
 			  htab->elf.sgot->contents + h->got.offset);
-	      return TRUE;
+	      return true;
 	    }
 	}
-      else if (bfd_link_pic (info)
-	       && SYMBOL_REFERENCES_LOCAL (info, h))
+      else if (SYMBOL_REFERENCES_LOCAL (info, h))
 	{
 	  if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    return TRUE;
+	    return true;
 
 	  /* If this is a static link, or it is a -Bsymbolic link and
 	     the symbol is defined locally or was forced to be local
@@ -3473,7 +3722,7 @@ elf_s390_finish_dynamic_symbol (bfd *out
 	     will already have been initialized in the
 	     relocate_section function.  */
 	  if (!(h->def_regular || ELF_COMMON_DEF_P (h)))
-	    return FALSE;
+	    return false;
 	  BFD_ASSERT((h->got.offset & 1) != 0);
 	  rela.r_info = ELF64_R_INFO (0, R_390_RELATIVE);
 	  rela.r_addend = (h->root.u.def.value
@@ -3527,7 +3776,7 @@ elf_s390_finish_dynamic_symbol (bfd *out
       || h == htab->elf.hplt)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Used to decide how to sort relocs in an optimal manner for the
@@ -3570,7 +3819,7 @@ elf_s390_reloc_type_class (const struct
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_s390_finish_dynamic_sections (bfd *output_bfd,
 				  struct bfd_link_info *info)
 {
@@ -3582,7 +3831,7 @@ elf_s390_finish_dynamic_sections (bfd *o
 
   htab = elf_s390_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   dynobj = htab->elf.dynobj;
   sdyn = bfd_get_linker_section (dynobj, ".dynamic");
@@ -3677,8 +3926,9 @@ elf_s390_finish_dynamic_sections (bfd *o
 	  bfd_put_64 (output_bfd, (bfd_vma) 0,
 		      htab->elf.hgot->root.u.def.section->contents + 16);
 	}
-      elf_section_data (htab->elf.sgot->output_section)
-	->this_hdr.sh_entsize = 8;
+      if (htab->elf.sgot != NULL && htab->elf.sgot->size > 0)
+	elf_section_data (htab->elf.sgot->output_section)
+	  ->this_hdr.sh_entsize = 8;
     }
 
   /* Finish dynamic symbol for local IFUNC symbols.  */
@@ -3700,9 +3950,9 @@ 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;
+		  return false;
 
 		if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 		  elf_s390_finish_ifunc_symbol (output_bfd, info, NULL, htab,
@@ -3715,12 +3965,72 @@ elf_s390_finish_dynamic_sections (bfd *o
 	  }
     }
 
-  return TRUE;
+  /* Adjust .eh_frame for .plt section.  */
+  if (htab->plt_eh_frame != NULL
+      && htab->plt_eh_frame->contents != NULL)
+    {
+      if (htab->elf.splt != NULL
+	  && htab->elf.splt->size != 0
+	  && (htab->elf.splt->flags & SEC_EXCLUDE) == 0
+	  && htab->elf.splt->output_section != NULL
+	  && htab->plt_eh_frame->output_section != NULL)
+	{
+	  bfd_vma plt_start = htab->elf.splt->output_section->vma;
+	  bfd_vma eh_frame_start = htab->plt_eh_frame->output_section->vma
+				   + htab->plt_eh_frame->output_offset
+				   + PLT_FDE_START_OFFSET;
+	  /* Note: Linker may have discarded the FDE, so that store may
+	     be beyond current htab->plt_eh_frame->size.  Can be ignored,
+	     as htab->plt_eh_frame->contents got allocated with
+	     sizeof (elf_s390x_eh_frame_plt).  See PR 12570.  */
+	  bfd_put_signed_32 (dynobj, plt_start - eh_frame_start,
+			     htab->plt_eh_frame->contents
+			     + PLT_FDE_START_OFFSET);
+	}
+
+      if (htab->plt_eh_frame->sec_info_type == SEC_INFO_TYPE_EH_FRAME)
+	{
+	  if (! _bfd_elf_write_section_eh_frame (output_bfd, info,
+						 htab->plt_eh_frame,
+						 htab->plt_eh_frame->contents))
+	    return NULL;
+	}
+    }
+
+  /* Make any adjustment if necessary and merge .sframe section to
+     create the final .sframe section for output_bfd.  */
+  if (htab->plt_sframe != NULL
+      && htab->plt_sframe->contents != NULL)
+    {
+      if (htab->elf.splt != NULL
+	  && htab->elf.splt->size != 0
+	  && (htab->elf.splt->flags & SEC_EXCLUDE) == 0
+	  && htab->elf.splt->output_section != NULL
+	  && htab->plt_sframe->output_section != NULL)
+	{
+	  bfd_vma plt_start = htab->elf.splt->output_section->vma;
+	  bfd_vma sframe_start = htab->plt_sframe->output_section->vma
+				   + htab->plt_sframe->output_offset
+				   + PLT_SFRAME_FDE_START_OFFSET;
+	  bfd_put_signed_32 (dynobj, plt_start - sframe_start,
+			     htab->plt_sframe->contents
+			     + PLT_SFRAME_FDE_START_OFFSET);
+	}
+      if (htab->plt_sframe->sec_info_type == SEC_INFO_TYPE_SFRAME)
+	{
+	  if (! _bfd_elf_merge_section_sframe (output_bfd, info,
+					       htab->plt_sframe,
+					       htab->plt_sframe->contents))
+	    return false;
+	}
+    }
+
+  return true;
 }
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 elf_s390_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -3729,7 +4039,7 @@ elf_s390_grok_prstatus (bfd *abfd, Elf_I
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 336:			/* sizeof(struct elf_prstatus) on s390x */
       /* pr_cursig */
@@ -3749,13 +4059,13 @@ elf_s390_grok_prstatus (bfd *abfd, Elf_I
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf_s390_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 136:			/* sizeof(struct elf_prpsinfo) on s390x */
       elf_tdata (abfd)->core->pid
@@ -3778,7 +4088,7 @@ elf_s390_grok_psinfo (bfd *abfd, Elf_Int
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 static char *
@@ -3855,11 +4165,11 @@ elf_s390_plt_sym_val (bfd_vma i, const a
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf64_s390_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   if (!is_s390_elf (ibfd) || !is_s390_elf (info->output_bfd))
-    return TRUE;
+    return true;
 
   return elf_s390_merge_obj_attributes (ibfd, info);
 }
@@ -3884,18 +4194,18 @@ elf_s390_additional_program_headers (bfd
 
 /* Add the PT_S390_PGSTE program header.  */
 
-static bfd_boolean
+static bool
 elf_s390_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_s390_link_hash_table *htab;
   struct elf_segment_map *m, *pm = NULL;
 
   if (!abfd || !info)
-    return TRUE;
+    return true;
 
   htab = elf_s390_hash_table (info);
   if (!htab || !htab->params->pgste)
-    return TRUE;
+    return true;
 
   /* If there is already a PT_S390_PGSTE header, avoid adding
      another.  */
@@ -3907,22 +4217,22 @@ elf_s390_modify_segment_map (bfd *abfd,
     }
 
   if (m)
-    return TRUE;
+    return true;
 
   m = (struct elf_segment_map *)
     bfd_zalloc (abfd, sizeof (struct elf_segment_map));
   if (m == NULL)
-    return FALSE;
+    return false;
   m->p_type = PT_S390_PGSTE;
   m->count = 0;
   m->next = NULL;
   if (pm)
     pm->next = m;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 bfd_elf_s390_set_options (struct bfd_link_info *info,
 			  struct s390_elf_params *params)
 {
@@ -3935,9 +4245,68 @@ bfd_elf_s390_set_options (struct bfd_lin
 	htab->params = params;
     }
 
-  return TRUE;
+  return true;
 }
 
+/* Create .plt, .rela.plt, .got, .got.plt, .rela.got, .dynbss, and
+   .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
+   hash table.  */
+
+static bool
+elf_s390_create_dynamic_sections (bfd *dynobj,
+                                  struct bfd_link_info *info)
+{
+  struct elf_s390_link_hash_table *htab;
+
+  if (!_bfd_elf_create_dynamic_sections (dynobj, info))
+    return false;
+
+  htab = elf_s390_hash_table (info);
+  if (htab == NULL)
+    return false;
+
+  htab->sframe_plt = &elf_s390x_sframe_plt;
+
+  if (htab->elf.splt != NULL)
+    {
+      /* Create .eh_frame section for .plt section.  */
+      if (!info->no_ld_generated_unwind_info)
+        {
+          flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY
+                            | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+                            | SEC_LINKER_CREATED);
+
+          if (htab->plt_eh_frame == NULL)
+            {
+              htab->plt_eh_frame
+                = bfd_make_section_anyway_with_flags (dynobj,
+                                                      ".eh_frame",
+                                                      flags);
+              if (htab->plt_eh_frame == NULL
+                  || !bfd_set_section_alignment (htab->plt_eh_frame, 3))
+                return false;
+            }
+        }
+
+      /* Create .sframe section for .plt section.  */
+      if (!info->no_ld_generated_unwind_info)
+	{
+	  flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY
+			    | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+			    | SEC_LINKER_CREATED);
+
+	  htab->plt_sframe = bfd_make_section_anyway_with_flags (dynobj,
+								 ".sframe",
+								 flags);
+	  if (htab->plt_sframe == NULL)
+	    return false;
+
+	  elf_section_type (htab->plt_sframe) = SHT_GNU_SFRAME;
+	}
+    }
+
+  return true;
+}
 
 /* Why was the hash table entry size definition changed from
    ARCH_SIZE/8 to 4? This breaks the 64 bit dynamic linker and
@@ -4004,13 +4373,13 @@ const struct elf_size_info s390_elf64_si
 #define elf_backend_adjust_dynamic_symbol     elf_s390_adjust_dynamic_symbol
 #define elf_backend_check_relocs	      elf_s390_check_relocs
 #define elf_backend_copy_indirect_symbol      elf_s390_copy_indirect_symbol
-#define elf_backend_create_dynamic_sections   _bfd_elf_create_dynamic_sections
+#define elf_backend_create_dynamic_sections   elf_s390_create_dynamic_sections
 #define elf_backend_finish_dynamic_sections   elf_s390_finish_dynamic_sections
 #define elf_backend_finish_dynamic_symbol     elf_s390_finish_dynamic_symbol
 #define elf_backend_gc_mark_hook	      elf_s390_gc_mark_hook
 #define elf_backend_reloc_type_class	      elf_s390_reloc_type_class
 #define elf_backend_relocate_section	      elf_s390_relocate_section
-#define elf_backend_size_dynamic_sections     elf_s390_size_dynamic_sections
+#define elf_backend_late_size_sections	      elf_s390_late_size_sections
 #define elf_backend_init_index_section	      _bfd_elf_init_1_index_section
 #define elf_backend_grok_prstatus	      elf_s390_grok_prstatus
 #define elf_backend_grok_psinfo		      elf_s390_grok_psinfo
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-sparc.c ./bfd/elf64-sparc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-sparc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-sparc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* SPARC-specific support for 64-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -37,14 +37,25 @@
 static long
 elf64_sparc_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 {
-#if SIZEOF_LONG == SIZEOF_INT
-  if (sec->reloc_count >= LONG_MAX / 2 / sizeof (arelent *))
+  size_t count, raw;
+
+  count = sec->reloc_count;
+  if (count >= LONG_MAX / 2 / sizeof (arelent *)
+      || _bfd_mul_overflow (count, sizeof (Elf64_External_Rela), &raw))
     {
       bfd_set_error (bfd_error_file_too_big);
       return -1;
     }
-#endif
-  return (sec->reloc_count * 2 + 1) * sizeof (arelent *);
+  if (!bfd_write_p (abfd))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && raw > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
+    }
+  return (count * 2 + 1) * sizeof (arelent *);
 }
 
 static long
@@ -66,10 +77,10 @@ elf64_sparc_get_dynamic_reloc_upper_boun
    has secondary addend in ELF64_R_TYPE_DATA.  We handle it as two relocations
    for the same location,  R_SPARC_LO10 and R_SPARC_13.  */
 
-static bfd_boolean
+static bool
 elf64_sparc_slurp_one_reloc_table (bfd *abfd, asection *asect,
 				   Elf_Internal_Shdr *rel_hdr,
-				   asymbol **symbols, bfd_boolean dynamic)
+				   asymbol **symbols, bool dynamic)
 {
   void * allocated = NULL;
   bfd_byte *native_relocs;
@@ -79,13 +90,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;
 
@@ -114,7 +123,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *
 	relent->address = rela.r_offset - asect->vma;
 
       if (ELF64_R_SYM (rela.r_info) == STN_UNDEF)
-	relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
       else if (/* PR 17512: file: 996185f8.  */
 	       ELF64_R_SYM (rela.r_info) > (dynamic
 					    ? bfd_get_dynamic_symcount (abfd)
@@ -125,7 +134,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *
 	    (_("%pB(%pA): relocation %d has invalid symbol index %ld"),
 	     abfd, asect, i, (long) ELF64_R_SYM (rela.r_info));
 	  bfd_set_error (bfd_error_bad_value);
-	  relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	  relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	}
       else
 	{
@@ -138,7 +147,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *
 	  if ((s->flags & BSF_SECTION_SYM) == 0)
 	    relent->sym_ptr_ptr = ps;
 	  else
-	    relent->sym_ptr_ptr = s->section->symbol_ptr_ptr;
+	    relent->sym_ptr_ptr = &s->section->symbol;
 	}
 
       relent->addend = rela.r_addend;
@@ -149,7 +158,7 @@ elf64_sparc_slurp_one_reloc_table (bfd *
 	  relent->howto = _bfd_sparc_elf_info_to_howto_ptr (abfd, R_SPARC_LO10);
 	  relent[1].address = relent->address;
 	  relent++;
-	  relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	  relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	  relent->addend = ELF64_R_TYPE_DATA (rela.r_info);
 	  relent->howto = _bfd_sparc_elf_info_to_howto_ptr (abfd, R_SPARC_13);
 	}
@@ -163,22 +172,19 @@ elf64_sparc_slurp_one_reloc_table (bfd *
 
   canon_reloc_count (asect) += relent - relents;
 
-  if (allocated != NULL)
-    free (allocated);
-
-  return TRUE;
+  free (allocated);
+  return true;
 
  error_return:
-  if (allocated != NULL)
-    free (allocated);
-  return FALSE;
+  free (allocated);
+  return false;
 }
 
 /* Read in and swap the external relocs.  */
 
-static bfd_boolean
+static bool
 elf64_sparc_slurp_reloc_table (bfd *abfd, asection *asect,
-			       asymbol **symbols, bfd_boolean dynamic)
+			       asymbol **symbols, bool dynamic)
 {
   struct bfd_elf_section_data * const d = elf_section_data (asect);
   Elf_Internal_Shdr *rel_hdr;
@@ -186,13 +192,13 @@ elf64_sparc_slurp_reloc_table (bfd *abfd
   bfd_size_type amt;
 
   if (asect->relocation != NULL)
-    return TRUE;
+    return true;
 
   if (! dynamic)
     {
       if ((asect->flags & SEC_RELOC) == 0
 	  || asect->reloc_count == 0)
-	return TRUE;
+	return true;
 
       rel_hdr = d->rel.hdr;
       rel_hdr2 = d->rela.hdr;
@@ -207,7 +213,7 @@ elf64_sparc_slurp_reloc_table (bfd *abfd
 	 dynamic symbol table, and in that case bfd_section_from_shdr
 	 in elf.c does not update the RELOC_COUNT.  */
       if (asect->size == 0)
-	return TRUE;
+	return true;
 
       rel_hdr = &d->this_hdr;
       asect->reloc_count = NUM_SHDR_ENTRIES (rel_hdr);
@@ -218,7 +224,7 @@ elf64_sparc_slurp_reloc_table (bfd *abfd
   amt *= 2 * sizeof (arelent);
   asect->relocation = (arelent *) bfd_alloc (abfd, amt);
   if (asect->relocation == NULL)
-    return FALSE;
+    return false;
 
   /* The elf64_sparc_slurp_one_reloc_table routine increments
      canon_reloc_count.  */
@@ -227,14 +233,14 @@ elf64_sparc_slurp_reloc_table (bfd *abfd
   if (rel_hdr
       && !elf64_sparc_slurp_one_reloc_table (abfd, asect, rel_hdr, symbols,
 					     dynamic))
-    return FALSE;
+    return false;
 
   if (rel_hdr2
       && !elf64_sparc_slurp_one_reloc_table (abfd, asect, rel_hdr2, symbols,
 					     dynamic))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Canonicalize the relocs.  */
@@ -247,7 +253,7 @@ elf64_sparc_canonicalize_reloc (bfd *abf
   unsigned int i;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
-  if (! bed->s->slurp_reloc_table (abfd, section, symbols, FALSE))
+  if (! bed->s->slurp_reloc_table (abfd, section, symbols, false))
     return -1;
 
   tblptr = section->relocation;
@@ -291,7 +297,7 @@ elf64_sparc_canonicalize_dynamic_reloc (
 	  arelent *p;
 	  long count, i;
 
-	  if (! elf64_sparc_slurp_reloc_table (abfd, s, syms, TRUE))
+	  if (! elf64_sparc_slurp_reloc_table (abfd, s, syms, true))
 	    return -1;
 	  count = canon_reloc_count (s);
 	  p = s->relocation;
@@ -316,6 +322,10 @@ elf64_sparc_set_reloc (bfd *abfd ATTRIBU
 {
   asect->orelocation = location;
   canon_reloc_count (asect) = count;
+  if (count != 0)
+    asect->flags |= SEC_RELOC;
+  else
+    asect->flags &= ~SEC_RELOC;
 }
 
 /* Write out the relocs.  */
@@ -323,7 +333,7 @@ elf64_sparc_set_reloc (bfd *abfd ATTRIBU
 static void
 elf64_sparc_write_relocs (bfd *abfd, asection *sec, void * data)
 {
-  bfd_boolean *failedp = (bfd_boolean *) data;
+  bool *failedp = (bool *) data;
   Elf_Internal_Shdr *rela_hdr;
   bfd_vma addr_offset;
   Elf64_External_Rela *outbound_relocas, *src_rela;
@@ -375,7 +385,7 @@ elf64_sparc_write_relocs (bfd *abfd, ase
   rela_hdr->contents = bfd_alloc (abfd, rela_hdr->sh_size);
   if (rela_hdr->contents == NULL)
     {
-      *failedp = TRUE;
+      *failedp = true;
       return;
     }
 
@@ -413,7 +423,7 @@ elf64_sparc_write_relocs (bfd *abfd, ase
 	  n = _bfd_elf_symbol_from_bfd_symbol (abfd, &sym);
 	  if (n < 0)
 	    {
-	      *failedp = TRUE;
+	      *failedp = true;
 	      return;
 	    }
 	  last_sym_idx = n;
@@ -423,7 +433,7 @@ elf64_sparc_write_relocs (bfd *abfd, ase
 	  && (*ptr->sym_ptr_ptr)->the_bfd->xvec != abfd->xvec
 	  && ! _bfd_elf_validate_reloc (abfd, ptr))
 	{
-	  *failedp = TRUE;
+	  *failedp = true;
 	  return;
 	}
 
@@ -459,7 +469,7 @@ elf64_sparc_write_relocs (bfd *abfd, ase
 /* Hook called by the linker routine which adds symbols from an object
    file.  We use it for STT_REGISTER symbols.  */
 
-static bfd_boolean
+static bool
 elf64_sparc_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
 			     Elf_Internal_Sym *sym, const char **namep,
 			     flagword *flagsp ATTRIBUTE_UNUSED,
@@ -482,7 +492,7 @@ elf64_sparc_add_symbol_hook (bfd *abfd,
 	  _bfd_error_handler
 	    (_("%pB: only registers %%g[2367] can be declared using STT_REGISTER"),
 	     abfd);
-	  return FALSE;
+	  return false;
 	}
 
       if (info->output_bfd->xvec != abfd->xvec
@@ -492,7 +502,7 @@ elf64_sparc_add_symbol_hook (bfd *abfd,
 	     If STT_REGISTER comes from a dynamic object, don't put it into
 	     the output bfd.  The dynamic linker will recheck it.  */
 	  *namep = NULL;
-	  return TRUE;
+	  return true;
 	}
 
       p = _bfd_sparc_elf_hash_table(info)->app_regs + reg;
@@ -505,7 +515,7 @@ elf64_sparc_add_symbol_hook (bfd *abfd,
 	       " previously %s in %pB"),
 	     (int) sym->st_value, **namep ? *namep : "#scratch", abfd,
 	     *p->name ? p->name : "#scratch", p->abfd);
-	  return FALSE;
+	  return false;
 	}
 
       if (p->name == NULL)
@@ -515,7 +525,7 @@ elf64_sparc_add_symbol_hook (bfd *abfd,
 	      struct elf_link_hash_entry *h;
 
 	      h = (struct elf_link_hash_entry *)
-		bfd_link_hash_lookup (info->hash, *namep, FALSE, FALSE, FALSE);
+		bfd_link_hash_lookup (info->hash, *namep, false, false, false);
 
 	      if (h != NULL)
 		{
@@ -528,13 +538,13 @@ elf64_sparc_add_symbol_hook (bfd *abfd,
 		    (_("symbol `%s' has differing types: REGISTER in %pB,"
 		       " previously %s in %pB"),
 		     *namep, abfd, stt_types[type], p->abfd);
-		  return FALSE;
+		  return false;
 		}
 
 	      p->name = bfd_hash_allocate (&info->hash->table,
 					   strlen (*namep) + 1);
 	      if (!p->name)
-		return FALSE;
+		return false;
 
 	      strcpy (p->name, *namep);
 	    }
@@ -554,7 +564,7 @@ elf64_sparc_add_symbol_hook (bfd *abfd,
 	    }
 	}
       *namep = NULL;
-      return TRUE;
+      return true;
     }
   else if (*namep && **namep
 	   && info->output_bfd->xvec == abfd->xvec)
@@ -575,16 +585,16 @@ elf64_sparc_add_symbol_hook (bfd *abfd,
 	      (_("Symbol `%s' has differing types: %s in %pB,"
 		 " previously REGISTER in %pB"),
 	       *namep, stt_types[type], abfd, p->abfd);
-	    return FALSE;
+	    return false;
 	  }
     }
-  return TRUE;
+  return true;
 }
 
 /* This function takes care of emitting STT_REGISTER symbols
    which we cannot easily keep in the symbol hash table.  */
 
-static bfd_boolean
+static bool
 elf64_sparc_output_arch_syms (bfd *output_bfd ATTRIBUTE_UNUSED,
 			      struct bfd_link_info *info,
 			      void * flaginfo,
@@ -604,7 +614,7 @@ elf64_sparc_output_arch_syms (bfd *outpu
 	if (info->strip == strip_some
 	    && bfd_hash_lookup (info->keep_hash,
 				app_regs [reg].name,
-				FALSE, FALSE) == NULL)
+				false, false) == NULL)
 	  continue;
 
 	sym.st_value = reg < 2 ? reg + 2 : reg + 4;
@@ -617,10 +627,10 @@ elf64_sparc_output_arch_syms (bfd *outpu
 		     sym.st_shndx == SHN_ABS
 		     ? bfd_abs_section_ptr : bfd_und_section_ptr,
 		     NULL) != 1)
-	  return FALSE;
+	  return false;
       }
 
-  return TRUE;
+  return true;
 }
 
 static int
@@ -654,24 +664,24 @@ elf64_sparc_symbol_processing (bfd *abfd
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elf64_sparc_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
-  bfd_boolean error;
+  bool error;
   flagword new_flags, old_flags;
   int new_mm, old_mm;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
   old_flags = elf_elfheader (obfd)->e_flags;
 
   if (!elf_flags_init (obfd))   /* First call, no flags set */
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = new_flags;
     }
 
@@ -680,7 +690,7 @@ elf64_sparc_merge_private_bfd_data (bfd
 
   else					/* Incompatible flags */
     {
-      error = FALSE;
+      error = false;
 
 #define EF_SPARC_ISA_EXTENSIONS \
   (EF_SPARC_SUN_US1 | EF_SPARC_SUN_US3 | EF_SPARC_HAL_R1)
@@ -702,7 +712,7 @@ elf64_sparc_merge_private_bfd_data (bfd
 	  if ((old_flags & (EF_SPARC_SUN_US1 | EF_SPARC_SUN_US3))
 	      && (old_flags & EF_SPARC_HAL_R1))
 	    {
-	      error = TRUE;
+	      error = true;
 	      _bfd_error_handler
 		(_("%pB: linking UltraSPARC specific with HAL specific code"),
 		 ibfd);
@@ -721,7 +731,7 @@ elf64_sparc_merge_private_bfd_data (bfd
       /* Warn about any other mismatches */
       if (new_flags != old_flags)
 	{
-	  error = TRUE;
+	  error = true;
 	  _bfd_error_handler
 	    /* xgettext:c-format */
 	    (_("%pB: uses different e_flags (%#x) fields than previous modules (%#x)"),
@@ -733,7 +743,7 @@ elf64_sparc_merge_private_bfd_data (bfd
       if (error)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
     }
   return _bfd_sparc_elf_merge_private_bfd_data (ibfd, info);
@@ -741,7 +751,7 @@ elf64_sparc_merge_private_bfd_data (bfd
 
 /* MARCO: Set the correct entry size for the .stab section.  */
 
-static bfd_boolean
+static bool
 elf64_sparc_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
 			   Elf_Internal_Shdr *hdr ATTRIBUTE_UNUSED,
 			   asection *sec)
@@ -756,7 +766,7 @@ elf64_sparc_fake_sections (bfd *abfd ATT
       elf_section_data (sec)->this_hdr.sh_entsize = 12;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Print a STT_REGISTER symbol to file FILE.  */
@@ -878,6 +888,7 @@ const struct elf_size_info elf64_sparc_s
 #define TARGET_BIG_SYM	sparc_elf64_vec
 #define TARGET_BIG_NAME	"elf64-sparc"
 #define ELF_ARCH	bfd_arch_sparc
+#define ELF_TARGET_ID	SPARC_ELF_DATA
 #define ELF_MAXPAGESIZE 0x100000
 #define ELF_COMMONPAGESIZE 0x2000
 
@@ -943,8 +954,8 @@ const struct elf_size_info elf64_sparc_s
   _bfd_sparc_elf_adjust_dynamic_symbol
 #define elf_backend_omit_section_dynsym \
   _bfd_sparc_elf_omit_section_dynsym
-#define elf_backend_size_dynamic_sections \
-  _bfd_sparc_elf_size_dynamic_sections
+#define elf_backend_late_size_sections \
+  _bfd_sparc_elf_late_size_sections
 #define elf_backend_relocate_section \
   _bfd_sparc_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol \
@@ -997,16 +1008,39 @@ const struct elf_size_info elf64_sparc_s
 #undef	TARGET_BIG_NAME
 #define	TARGET_BIG_NAME				"elf64-sparc-sol2"
 
+#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.  */
 #undef	ELF_OSABI
 
-#undef elf64_bed
+#undef  elf64_bed
 #define elf64_bed				elf64_sparc_sol2_bed
 
 /* The 64-bit static TLS arena size is rounded to the nearest 16-byte
    boundary.  */
-#undef elf_backend_static_tls_alignment
+#undef  elf_backend_static_tls_alignment
 #define elf_backend_static_tls_alignment	16
 
+#undef  elf_backend_strtab_flags
+#define elf_backend_strtab_flags       SHF_STRINGS
+
+static bool
+elf64_sparc_copy_solaris_special_section_fields (const bfd *ibfd ATTRIBUTE_UNUSED,
+                                  bfd *obfd ATTRIBUTE_UNUSED,
+                                  const Elf_Internal_Shdr *isection ATTRIBUTE_UNUSED,
+                                  Elf_Internal_Shdr *osection ATTRIBUTE_UNUSED)
+{
+  /* PR 19938: FIXME: Need to add code for setting the sh_info
+     and sh_link fields of Solaris specific section types.  */
+  return false;
+}
+
+#undef  elf_backend_copy_special_section_fields
+#define elf_backend_copy_special_section_fields elf64_sparc_copy_solaris_special_section_fields
+
 #include "elf64-target.h"
+
+#undef  elf_backend_strtab_flags
+#undef  elf_backend_copy_special_section_fields
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-tilegx.c ./bfd/elf64-tilegx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-tilegx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-tilegx.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,14 +28,14 @@
 
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 tilegx_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
   size_t size;
 
   if (note->descsz != TILEGX_PRSTATUS_SIZEOF)
-    return FALSE;
+    return false;
 
   /* pr_cursig */
   elf_tdata (abfd)->core->signal =
@@ -54,11 +54,11 @@ tilegx_elf_grok_prstatus (bfd *abfd, Elf
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 tilegx_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz != TILEGX_PRPSINFO_SIZEOF)
-    return FALSE;
+    return false;
 
   elf_tdata (abfd)->core->program
     = _bfd_elfcore_strndup (abfd, note->descdata + TILEGX_PRPSINFO_OFFSET_PR_FNAME, 16);
@@ -77,7 +77,7 @@ tilegx_elf_grok_psinfo (bfd *abfd, Elf_I
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -106,7 +106,7 @@ tilegx_elf_grok_psinfo (bfd *abfd, Elf_I
 #define elf_backend_check_relocs	     tilegx_elf_check_relocs
 #define elf_backend_adjust_dynamic_symbol    tilegx_elf_adjust_dynamic_symbol
 #define elf_backend_omit_section_dynsym	     tilegx_elf_omit_section_dynsym
-#define elf_backend_size_dynamic_sections    tilegx_elf_size_dynamic_sections
+#define elf_backend_late_size_sections	     tilegx_elf_late_size_sections
 #define elf_backend_relocate_section	     tilegx_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol    tilegx_elf_finish_dynamic_symbol
 #define elf_backend_finish_dynamic_sections  tilegx_elf_finish_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.20200303/bfd/elf64-tilegx.h ./bfd/elf64-tilegx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-tilegx.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-tilegx.h	2026-03-05 02:07:20.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-2025 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.20200303/bfd/elf64-x86-64.c ./bfd/elf64-x86-64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf64-x86-64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf64-x86-64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* X86-64 specific support for ELF
-   Copyright (C) 2000-2019 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
    Contributed by Jan Hubicka <jh@suse.cz>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -20,12 +20,11 @@
    MA 02110-1301, USA.  */
 
 #include "elfxx-x86.h"
-#include "elf-nacl.h"
 #include "dwarf2.h"
 #include "libiberty.h"
+#include "sframe.h"
 
 #include "opcode/i386.h"
-#include "elf/x86-64.h"
 
 #ifdef CORE_HEADER
 #include <stdarg.h>
@@ -45,170 +44,182 @@
    special_function, name, partial_inplace, src_mask, dst_mask, pcrel_offset.  */
 static reloc_howto_type x86_64_elf_howto_table[] =
 {
-  HOWTO(R_X86_64_NONE, 0, 3, 0, FALSE, 0, complain_overflow_dont,
-	bfd_elf_generic_reloc, "R_X86_64_NONE",	FALSE, 0x00000000, 0x00000000,
-	FALSE),
-  HOWTO(R_X86_64_64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_64", FALSE, MINUS_ONE, MINUS_ONE,
-	FALSE),
-  HOWTO(R_X86_64_PC32, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_PC32", FALSE, 0xffffffff, 0xffffffff,
-	TRUE),
-  HOWTO(R_X86_64_GOT32, 0, 2, 32, FALSE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOT32", FALSE, 0xffffffff, 0xffffffff,
-	FALSE),
-  HOWTO(R_X86_64_PLT32, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_PLT32", FALSE, 0xffffffff, 0xffffffff,
-	TRUE),
-  HOWTO(R_X86_64_COPY, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_COPY", FALSE, 0xffffffff, 0xffffffff,
-	FALSE),
-  HOWTO(R_X86_64_GLOB_DAT, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_GLOB_DAT", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_JUMP_SLOT, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_JUMP_SLOT", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_RELATIVE, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_RELATIVE", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_GOTPCREL, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOTPCREL", FALSE, 0xffffffff,
-	0xffffffff, TRUE),
-  HOWTO(R_X86_64_32, 0, 2, 32, FALSE, 0, complain_overflow_unsigned,
-	bfd_elf_generic_reloc, "R_X86_64_32", FALSE, 0xffffffff, 0xffffffff,
-	FALSE),
-  HOWTO(R_X86_64_32S, 0, 2, 32, FALSE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_32S", FALSE, 0xffffffff, 0xffffffff,
-	FALSE),
-  HOWTO(R_X86_64_16, 0, 1, 16, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_16", FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO(R_X86_64_PC16,0, 1, 16, TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_PC16", FALSE, 0xffff, 0xffff, TRUE),
-  HOWTO(R_X86_64_8, 0, 0, 8, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_8", FALSE, 0xff, 0xff, FALSE),
-  HOWTO(R_X86_64_PC8, 0, 0, 8, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_PC8", FALSE, 0xff, 0xff, TRUE),
-  HOWTO(R_X86_64_DTPMOD64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_DTPMOD64", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_DTPOFF64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_DTPOFF64", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_TPOFF64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_TPOFF64", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_TLSGD, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_TLSGD", FALSE, 0xffffffff,
-	0xffffffff, TRUE),
-  HOWTO(R_X86_64_TLSLD, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_TLSLD", FALSE, 0xffffffff,
-	0xffffffff, TRUE),
-  HOWTO(R_X86_64_DTPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_DTPOFF32", FALSE, 0xffffffff,
-	0xffffffff, FALSE),
-  HOWTO(R_X86_64_GOTTPOFF, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOTTPOFF", FALSE, 0xffffffff,
-	0xffffffff, TRUE),
-  HOWTO(R_X86_64_TPOFF32, 0, 2, 32, FALSE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_TPOFF32", FALSE, 0xffffffff,
-	0xffffffff, FALSE),
-  HOWTO(R_X86_64_PC64, 0, 4, 64, TRUE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_PC64", FALSE, MINUS_ONE, MINUS_ONE,
-	TRUE),
-  HOWTO(R_X86_64_GOTOFF64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_GOTOFF64",
-	FALSE, MINUS_ONE, MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_GOTPC32, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOTPC32",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(R_X86_64_GOT64, 0, 4, 64, FALSE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOT64", FALSE, MINUS_ONE, MINUS_ONE,
-	FALSE),
-  HOWTO(R_X86_64_GOTPCREL64, 0, 4, 64, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOTPCREL64", FALSE, MINUS_ONE,
-	MINUS_ONE, TRUE),
-  HOWTO(R_X86_64_GOTPC64, 0, 4, 64, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOTPC64",
-	FALSE, MINUS_ONE, MINUS_ONE, TRUE),
-  HOWTO(R_X86_64_GOTPLT64, 0, 4, 64, FALSE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOTPLT64", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_PLTOFF64, 0, 4, 64, FALSE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_PLTOFF64", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_SIZE32, 0, 2, 32, FALSE, 0, complain_overflow_unsigned,
-	bfd_elf_generic_reloc, "R_X86_64_SIZE32", FALSE, 0xffffffff, 0xffffffff,
-	FALSE),
-  HOWTO(R_X86_64_SIZE64, 0, 4, 64, FALSE, 0, complain_overflow_unsigned,
-	bfd_elf_generic_reloc, "R_X86_64_SIZE64", FALSE, MINUS_ONE, MINUS_ONE,
-	FALSE),
-  HOWTO(R_X86_64_GOTPC32_TLSDESC, 0, 2, 32, TRUE, 0,
+  HOWTO(R_X86_64_NONE, 0, 0, 0, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_NONE",	false, 0, 0x00000000,
+	false),
+  HOWTO(R_X86_64_64, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_PC32, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_PC32", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_GOT32, 0, 4, 32, false, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOT32", false, 0, 0xffffffff,
+	false),
+  HOWTO(R_X86_64_PLT32, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_PLT32", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_COPY, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_X86_64_COPY", false, 0, 0xffffffff,
+	false),
+  HOWTO(R_X86_64_GLOB_DAT, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_GLOB_DAT", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_JUMP_SLOT, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_JUMP_SLOT", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_RELATIVE, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_RELATIVE", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_GOTPCREL, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOTPCREL", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_32, 0, 4, 32, false, 0, complain_overflow_unsigned,
+	bfd_elf_generic_reloc, "R_X86_64_32", false, 0, 0xffffffff,
+	false),
+  HOWTO(R_X86_64_32S, 0, 4, 32, false, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_32S", false, 0, 0xffffffff,
+	false),
+  HOWTO(R_X86_64_16, 0, 2, 16, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_X86_64_16", false, 0, 0xffff, false),
+  HOWTO(R_X86_64_PC16, 0, 2, 16, true, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_X86_64_PC16", false, 0, 0xffff, true),
+  HOWTO(R_X86_64_8, 0, 1, 8, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_X86_64_8", false, 0, 0xff, false),
+  HOWTO(R_X86_64_PC8, 0, 1, 8, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_PC8", false, 0, 0xff, true),
+  HOWTO(R_X86_64_DTPMOD64, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_DTPMOD64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_DTPOFF64, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_DTPOFF64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_TPOFF64, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_TPOFF64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_TLSGD, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_TLSGD", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_TLSLD, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_TLSLD", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_DTPOFF32, 0, 4, 32, false, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_DTPOFF32", false, 0, 0xffffffff,
+	false),
+  HOWTO(R_X86_64_GOTTPOFF, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOTTPOFF", false, 0, 	0xffffffff,
+	true),
+  HOWTO(R_X86_64_TPOFF32, 0, 4, 32, false, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_TPOFF32", false, 0, 0xffffffff,
+	false),
+  HOWTO(R_X86_64_PC64, 0, 8, 64, true, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_PC64", false, 0, MINUS_ONE,
+	true),
+  HOWTO(R_X86_64_GOTOFF64, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_GOTOFF64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_GOTPC32, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOTPC32", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_GOT64, 0, 8, 64, false, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOT64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_GOTPCREL64, 0, 8, 64, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOTPCREL64", false, 0, MINUS_ONE,
+	true),
+  HOWTO(R_X86_64_GOTPC64, 0, 8, 64, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOTPC64", false, 0, MINUS_ONE,
+	true),
+  HOWTO(R_X86_64_GOTPLT64, 0, 8, 64, false, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOTPLT64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_PLTOFF64, 0, 8, 64, false, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_PLTOFF64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_SIZE32, 0, 4, 32, false, 0, complain_overflow_unsigned,
+	bfd_elf_generic_reloc, "R_X86_64_SIZE32", false, 0, 0xffffffff,
+	false),
+  HOWTO(R_X86_64_SIZE64, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_SIZE64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_GOTPC32_TLSDESC, 0, 4, 32, true, 0,
 	complain_overflow_bitfield, bfd_elf_generic_reloc,
-	"R_X86_64_GOTPC32_TLSDESC",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(R_X86_64_TLSDESC_CALL, 0, 0, 0, FALSE, 0,
+	"R_X86_64_GOTPC32_TLSDESC", false, 0, 0xffffffff, true),
+  HOWTO(R_X86_64_TLSDESC_CALL, 0, 0, 0, false, 0,
 	complain_overflow_dont, bfd_elf_generic_reloc,
 	"R_X86_64_TLSDESC_CALL",
-	FALSE, 0, 0, FALSE),
-  HOWTO(R_X86_64_TLSDESC, 0, 4, 64, FALSE, 0,
+	false, 0, 0, false),
+  HOWTO(R_X86_64_TLSDESC, 0, 8, 64, false, 0,
+	complain_overflow_dont, bfd_elf_generic_reloc,
+	"R_X86_64_TLSDESC", false, 0, MINUS_ONE, false),
+  HOWTO(R_X86_64_IRELATIVE, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_IRELATIVE", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_RELATIVE64, 0, 8, 64, false, 0, complain_overflow_dont,
+	bfd_elf_generic_reloc, "R_X86_64_RELATIVE64", false, 0, MINUS_ONE,
+	false),
+  HOWTO(R_X86_64_PC32_BND, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_PC32_BND", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_PLT32_BND, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_PLT32_BND", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_GOTPCRELX, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_GOTPCRELX", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_REX_GOTPCRELX, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_REX_GOTPCRELX", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_CODE_4_GOTPCRELX, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_CODE_4_GOTPCRELX", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_CODE_4_GOTTPOFF, 0, 4, 32, true, 0, complain_overflow_signed,
+	bfd_elf_generic_reloc, "R_X86_64_CODE_4_GOTTPOFF", false, 0, 0xffffffff,
+	true),
+  HOWTO(R_X86_64_CODE_4_GOTPC32_TLSDESC, 0, 4, 32, true, 0,
+	complain_overflow_bitfield, bfd_elf_generic_reloc,
+	"R_X86_64_CODE_4_GOTPC32_TLSDESC", false, 0, 0xffffffff, true),
+  HOWTO(R_X86_64_CODE_5_GOTPCRELX, 0, 4, 32, true, 0,
+	complain_overflow_signed, bfd_elf_generic_reloc,
+	"R_X86_64_CODE_5_GOTPCRELX", false, 0, 0xffffffff, true),
+  HOWTO(R_X86_64_CODE_5_GOTTPOFF, 0, 4, 32, true, 0,
+	complain_overflow_signed, bfd_elf_generic_reloc,
+	"R_X86_64_CODE_5_GOTTPOFF", false, 0, 0xffffffff, true),
+  HOWTO(R_X86_64_CODE_5_GOTPC32_TLSDESC, 0, 4, 32, true, 0,
+	complain_overflow_bitfield, bfd_elf_generic_reloc,
+	"R_X86_64_CODE_5_GOTPC32_TLSDESC", false, 0, 0xffffffff, true),
+  HOWTO(R_X86_64_CODE_6_GOTPCRELX, 0, 4, 32, true, 0,
+	complain_overflow_signed, bfd_elf_generic_reloc,
+	"R_X86_64_CODE_6_GOTPCRELX", false, 0, 0xffffffff, true),
+  HOWTO(R_X86_64_CODE_6_GOTTPOFF, 0, 4, 32, true, 0,
+	complain_overflow_signed, bfd_elf_generic_reloc,
+	"R_X86_64_CODE_6_GOTTPOFF", false, 0, 0xffffffff, true),
+  HOWTO(R_X86_64_CODE_6_GOTPC32_TLSDESC, 0, 4, 32, true, 0,
 	complain_overflow_bitfield, bfd_elf_generic_reloc,
-	"R_X86_64_TLSDESC",
-	FALSE, MINUS_ONE, MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_IRELATIVE, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_IRELATIVE", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_RELATIVE64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_RELATIVE64", FALSE, MINUS_ONE,
-	MINUS_ONE, FALSE),
-  HOWTO(R_X86_64_PC32_BND, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_PC32_BND", FALSE, 0xffffffff, 0xffffffff,
-	TRUE),
-  HOWTO(R_X86_64_PLT32_BND, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_PLT32_BND", FALSE, 0xffffffff, 0xffffffff,
-	TRUE),
-  HOWTO(R_X86_64_GOTPCRELX, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_GOTPCRELX", FALSE, 0xffffffff,
-	0xffffffff, TRUE),
-  HOWTO(R_X86_64_REX_GOTPCRELX, 0, 2, 32, TRUE, 0, complain_overflow_signed,
-	bfd_elf_generic_reloc, "R_X86_64_REX_GOTPCRELX", FALSE, 0xffffffff,
-	0xffffffff, TRUE),
+	"R_X86_64_CODE_6_GOTPC32_TLSDESC", false, 0, 0xffffffff, true),
 
   /* We have a gap in the reloc numbers here.
      R_X86_64_standard counts the number up to this point, and
      R_X86_64_vt_offset is the value to subtract from a reloc type of
      R_X86_64_GNU_VT* to form an index into this table.  */
-#define R_X86_64_standard (R_X86_64_REX_GOTPCRELX + 1)
+#define R_X86_64_standard (R_X86_64_CODE_6_GOTPC32_TLSDESC + 1)
 #define R_X86_64_vt_offset (R_X86_64_GNU_VTINHERIT - R_X86_64_standard)
 
 /* GNU extension to record C++ vtable hierarchy.  */
-  HOWTO (R_X86_64_GNU_VTINHERIT, 0, 4, 0, FALSE, 0, complain_overflow_dont,
-	 NULL, "R_X86_64_GNU_VTINHERIT", FALSE, 0, 0, FALSE),
+  HOWTO (R_X86_64_GNU_VTINHERIT, 0, 8, 0, false, 0, complain_overflow_dont,
+	 NULL, "R_X86_64_GNU_VTINHERIT", false, 0, 0, false),
 
 /* GNU extension to record C++ vtable member usage.  */
-  HOWTO (R_X86_64_GNU_VTENTRY, 0, 4, 0, FALSE, 0, complain_overflow_dont,
-	 _bfd_elf_rel_vtable_reloc_fn, "R_X86_64_GNU_VTENTRY", FALSE, 0, 0,
-	 FALSE),
+  HOWTO (R_X86_64_GNU_VTENTRY, 0, 8, 0, false, 0, complain_overflow_dont,
+	 _bfd_elf_rel_vtable_reloc_fn, "R_X86_64_GNU_VTENTRY", false, 0, 0,
+	 false),
 
 /* Use complain_overflow_bitfield on R_X86_64_32 for x32.  */
-  HOWTO(R_X86_64_32, 0, 2, 32, FALSE, 0, complain_overflow_bitfield,
-	bfd_elf_generic_reloc, "R_X86_64_32", FALSE, 0xffffffff, 0xffffffff,
-	FALSE)
+  HOWTO(R_X86_64_32, 0, 4, 32, false, 0, complain_overflow_bitfield,
+	bfd_elf_generic_reloc, "R_X86_64_32", false, 0, 0xffffffff,
+	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)		\
-   || ((TYPE) == R_X86_64_PC32)		\
-   || ((TYPE) == R_X86_64_PC32_BND)	\
-   || ((TYPE) == R_X86_64_PC64))
-
-#define X86_SIZE_TYPE_P(TYPE)		\
-  ((TYPE) == R_X86_64_SIZE32 || (TYPE) == R_X86_64_SIZE64)
-
 /* Map BFD relocs to the x86_64 elf relocs.  */
 struct elf_reloc_map
 {
@@ -260,6 +271,15 @@ static const struct elf_reloc_map x86_64
   { BFD_RELOC_X86_64_PLT32_BND,	R_X86_64_PLT32_BND, },
   { BFD_RELOC_X86_64_GOTPCRELX, R_X86_64_GOTPCRELX, },
   { BFD_RELOC_X86_64_REX_GOTPCRELX, R_X86_64_REX_GOTPCRELX, },
+  { BFD_RELOC_X86_64_CODE_4_GOTPCRELX, R_X86_64_CODE_4_GOTPCRELX, },
+  { BFD_RELOC_X86_64_CODE_4_GOTTPOFF, R_X86_64_CODE_4_GOTTPOFF, },
+  { BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC, R_X86_64_CODE_4_GOTPC32_TLSDESC, },
+  { BFD_RELOC_X86_64_CODE_5_GOTPCRELX, R_X86_64_CODE_5_GOTPCRELX, },
+  { BFD_RELOC_X86_64_CODE_5_GOTTPOFF, R_X86_64_CODE_5_GOTTPOFF, },
+  { BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC, R_X86_64_CODE_5_GOTPC32_TLSDESC, },
+  { BFD_RELOC_X86_64_CODE_6_GOTPCRELX, R_X86_64_CODE_6_GOTPCRELX, },
+  { BFD_RELOC_X86_64_CODE_6_GOTTPOFF, R_X86_64_CODE_6_GOTTPOFF, },
+  { BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC, R_X86_64_CODE_6_GOTPC32_TLSDESC, },
   { BFD_RELOC_VTABLE_INHERIT,	R_X86_64_GNU_VTINHERIT, },
   { BFD_RELOC_VTABLE_ENTRY,	R_X86_64_GNU_VTENTRY, },
 };
@@ -337,7 +357,7 @@ elf_x86_64_reloc_name_lookup (bfd *abfd,
 
 /* Given an x86_64 ELF reloc type, fill in an arelent structure.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_info_to_howto (bfd *abfd, arelent *cache_ptr,
 			  Elf_Internal_Rela *dst)
 {
@@ -346,13 +366,13 @@ elf_x86_64_info_to_howto (bfd *abfd, are
   r_type = ELF32_R_TYPE (dst->r_info);
   cache_ptr->howto = elf_x86_64_rtype_to_howto (abfd, r_type);
   if (cache_ptr->howto == NULL)
-    return FALSE;
+    return false;
   BFD_ASSERT (r_type == cache_ptr->howto->type || cache_ptr->howto->type == R_X86_64_NONE);
-  return TRUE;
+  return true;
 }
 
 /* Support for core dump NOTE sections.  */
-static bfd_boolean
+static bool
 elf_x86_64_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -361,7 +381,7 @@ elf_x86_64_grok_prstatus (bfd *abfd, Elf
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 296:		/* sizeof(istruct elf_prstatus) on Linux/x32 */
 	/* pr_cursig */
@@ -397,15 +417,16 @@ elf_x86_64_grok_prstatus (bfd *abfd, Elf
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf_x86_64_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
-      case 124:		/* sizeof(struct elf_prpsinfo) on Linux/x32 */
+      case 124:
+	/* sizeof (struct elf_external_linux_prpsinfo32_ugid16).  */
 	elf_tdata (abfd)->core->pid
 	  = bfd_get_32 (abfd, note->descdata + 12);
 	elf_tdata (abfd)->core->program
@@ -414,7 +435,18 @@ elf_x86_64_grok_psinfo (bfd *abfd, Elf_I
 	  = _bfd_elfcore_strndup (abfd, note->descdata + 44, 80);
 	break;
 
-      case 136:		/* sizeof(struct elf_prpsinfo) on Linux/x86_64 */
+    case 128:
+	/* sizeof (struct elf_external_linux_prpsinfo32_ugid32).  */
+	elf_tdata (abfd)->core->pid
+	  = bfd_get_32 (abfd, note->descdata + 12);
+	elf_tdata (abfd)->core->program
+	  = _bfd_elfcore_strndup (abfd, note->descdata + 32, 16);
+	elf_tdata (abfd)->core->command
+	  = _bfd_elfcore_strndup (abfd, note->descdata + 48, 80);
+	break;
+
+      case 136:
+	/* sizeof (struct elf_prpsinfo) on Linux/x86_64.  */
 	elf_tdata (abfd)->core->pid
 	  = bfd_get_32 (abfd, note->descdata + 24);
 	elf_tdata (abfd)->core->program
@@ -435,7 +467,7 @@ elf_x86_64_grok_psinfo (bfd *abfd, Elf_I
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 #ifdef CORE_HEADER
@@ -597,7 +629,7 @@ static const bfd_byte elf_x86_64_lazy_bn
    entries for a IBT-enabled lazy procedure linkage table look like
    this.  */
 
-static const bfd_byte elf_x86_64_lazy_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
+static const bfd_byte elf_x86_64_lazy_bnd_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
 {
   0xf3, 0x0f, 0x1e, 0xfa,	/* endbr64		      */
   0x68, 0, 0, 0, 0,		/* pushq immediate	      */
@@ -605,11 +637,11 @@ static const bfd_byte elf_x86_64_lazy_ib
   0x90				/* nop			      */
 };
 
-/* The first entry in the x32 IBT-enabled lazy procedure linkage table
+/* The first entry in the IBT-enabled lazy procedure linkage table
    is the same as the normal lazy PLT.  Subsequent entries for an
-   x32 IBT-enabled lazy procedure linkage table look like this.  */
+   IBT-enabled lazy procedure linkage table look like this.  */
 
-static const bfd_byte elf_x32_lazy_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
+static const bfd_byte elf_x86_64_lazy_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
 {
   0xf3, 0x0f, 0x1e, 0xfa,	/* endbr64		      */
   0x68, 0, 0, 0, 0,		/* pushq immediate	      */
@@ -636,11 +668,11 @@ static const bfd_byte elf_x86_64_non_laz
   0x90		     /* nop					      */
 };
 
-/* Entries for branches with IBT-enabled in the non-lazey procedure
-   linkage table look like this.  They have the same size as the lazy
-   PLT entry.  */
+/* Entries for IBT-enabled branches with BND prefix in the non-lazey
+   procedure linkage table look like this.  They have the same size as
+   the lazy PLT entry.  */
 
-static const bfd_byte elf_x86_64_non_lazy_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
+static const bfd_byte elf_x86_64_non_lazy_bnd_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
 {
   0xf3, 0x0f, 0x1e, 0xfa,	/* endbr64		       */
   0xf2, 0xff, 0x25,		/* bnd jmpq *name@GOTPC(%rip)  */
@@ -648,11 +680,11 @@ static const bfd_byte elf_x86_64_non_laz
   0x0f, 0x1f, 0x44, 0x00, 0x00	/* nopl 0x0(%rax,%rax,1)       */
 };
 
-/* Entries for branches with IBT-enabled in the x32 non-lazey procedure
+/* Entries for branches with IBT-enabled in the non-lazey procedure
    linkage table look like this.  They have the same size as the lazy
    PLT entry.  */
 
-static const bfd_byte elf_x32_non_lazy_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
+static const bfd_byte elf_x86_64_non_lazy_ibt_plt_entry[LAZY_PLT_ENTRY_SIZE] =
 {
   0xf3, 0x0f, 0x1e, 0xfa,	     /* endbr64		       */
   0xff, 0x25,			     /* jmpq *name@GOTPC(%rip) */
@@ -738,9 +770,10 @@ static const bfd_byte elf_x86_64_eh_fram
   DW_CFA_nop, DW_CFA_nop, DW_CFA_nop, DW_CFA_nop
 };
 
-/* .eh_frame covering the lazy .plt section with IBT-enabled.  */
+/* .eh_frame covering the lazy .plt section with IBT-enabled and BND
+   prefix.  */
 
-static const bfd_byte elf_x86_64_eh_frame_lazy_ibt_plt[] =
+static const bfd_byte elf_x86_64_eh_frame_lazy_bnd_ibt_plt[] =
 {
   PLT_CIE_LENGTH, 0, 0, 0,	/* CIE length */
   0, 0, 0, 0,			/* CIE ID */
@@ -773,9 +806,9 @@ static const bfd_byte elf_x86_64_eh_fram
   DW_CFA_nop, DW_CFA_nop, DW_CFA_nop, DW_CFA_nop
 };
 
-/* .eh_frame covering the x32 lazy .plt section with IBT-enabled.  */
+/* .eh_frame covering the lazy .plt section with IBT-enabled.  */
 
-static const bfd_byte elf_x32_eh_frame_lazy_ibt_plt[] =
+static const bfd_byte elf_x86_64_eh_frame_lazy_ibt_plt[] =
 {
   PLT_CIE_LENGTH, 0, 0, 0,	/* CIE length */
   0, 0, 0, 0,			/* CIE ID */
@@ -835,6 +868,144 @@ static const bfd_byte elf_x86_64_eh_fram
   DW_CFA_nop, DW_CFA_nop, DW_CFA_nop
 };
 
+/* .sframe FRE covering the .plt section entry.  */
+static const sframe_frame_row_entry elf_x86_64_sframe_plt0_fre1 =
+{
+  0, /* SFrame FRE start address.  */
+  {16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes.  */
+  SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info.  */
+};
+
+/* .sframe FRE covering the .plt section entry.  */
+static const sframe_frame_row_entry elf_x86_64_sframe_plt0_fre2 =
+{
+  6, /* SFrame FRE start address.  */
+  {24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes.  */
+  SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info.  */
+};
+
+/* .sframe FRE covering the .plt section entry.  */
+static const sframe_frame_row_entry elf_x86_64_sframe_pltn_fre1 =
+{
+  0, /* SFrame FRE start address.  */
+  {8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes.  */
+  SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info.  */
+};
+
+/* .sframe FRE covering the .plt section entry.  */
+static const sframe_frame_row_entry elf_x86_64_sframe_pltn_fre2 =
+{
+  11, /* SFrame FRE start address.  */
+  {16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes.  */
+  SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info.  */
+};
+
+/* .sframe FRE covering the .plt section entry for IBT.  */
+static const sframe_frame_row_entry elf_x86_64_sframe_ibt_pltn_fre2 =
+{
+  9, /* SFrame FRE start address.  */
+  {16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes.  */
+  SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info.  */
+};
+
+/* .sframe FRE covering the second .plt section entry.  */
+static const sframe_frame_row_entry elf_x86_64_sframe_sec_pltn_fre1 =
+{
+  0, /* SFrame FRE start address.  */
+  {8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes.  */
+  SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info.  */
+};
+
+/* .sframe FRE covering the .plt.got section entry.  */
+static const sframe_frame_row_entry elf_x86_64_sframe_pltgot_fre1 =
+{
+  0, /* SFrame FRE start address.  */
+  {16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes.  */
+  SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info.  */
+};
+
+/* SFrame helper object for non-lazy PLT.  */
+static const struct elf_x86_sframe_plt elf_x86_64_sframe_non_lazy_plt =
+{
+  LAZY_PLT_ENTRY_SIZE,
+  2, /* Number of FREs for PLT0.  */
+  /* Array of SFrame FREs for plt0.  */
+  { &elf_x86_64_sframe_plt0_fre1, &elf_x86_64_sframe_plt0_fre2 },
+  LAZY_PLT_ENTRY_SIZE,
+  1, /* Number of FREs for PLTn.  */
+  /* Array of SFrame FREs for plt.  */
+  { &elf_x86_64_sframe_sec_pltn_fre1 },
+  0,
+  0, /* There is no second PLT necessary.  */
+  { },
+  NON_LAZY_PLT_ENTRY_SIZE,
+  1, /* Number of FREs for PLT GOT.  */
+  /* Array of SFrame FREs for PLT GOT.  */
+  { &elf_x86_64_sframe_pltgot_fre1 },
+};
+
+/* SFrame helper object for non-lazy IBT enabled PLT.  */
+static const struct elf_x86_sframe_plt elf_x86_64_sframe_non_lazy_ibt_plt =
+{
+  LAZY_PLT_ENTRY_SIZE,
+  2, /* Number of FREs for PLT0.  */
+  /* Array of SFrame FREs for plt0.  */
+  { &elf_x86_64_sframe_plt0_fre1, &elf_x86_64_sframe_plt0_fre2 },
+  LAZY_PLT_ENTRY_SIZE,
+  1, /* Number of FREs for PLTn.  */
+  /* Array of SFrame FREs for plt.  */
+  { &elf_x86_64_sframe_sec_pltn_fre1 },
+  0,
+  0, /* There is no second PLT necessary.  */
+  { },
+  LAZY_PLT_ENTRY_SIZE,
+  1, /* Number of FREs for PLT GOT.  */
+  /* Array of SFrame FREs for PLT GOT.  */
+  { &elf_x86_64_sframe_pltgot_fre1 },
+};
+
+/* SFrame helper object for lazy PLT. */
+static const struct elf_x86_sframe_plt elf_x86_64_sframe_plt =
+{
+  LAZY_PLT_ENTRY_SIZE,
+  2, /* Number of FREs for PLT0.  */
+  /* Array of SFrame FREs for plt0.  */
+  { &elf_x86_64_sframe_plt0_fre1, &elf_x86_64_sframe_plt0_fre2 },
+  LAZY_PLT_ENTRY_SIZE,
+  2, /* Number of FREs for PLTn.  */
+  /* Array of SFrame FREs for plt.  */
+  { &elf_x86_64_sframe_pltn_fre1, &elf_x86_64_sframe_pltn_fre2 },
+  NON_LAZY_PLT_ENTRY_SIZE,
+  1, /* Number of FREs for second PLT.  */
+  /* Array of SFrame FREs for second PLT.  */
+  { &elf_x86_64_sframe_sec_pltn_fre1 },
+  NON_LAZY_PLT_ENTRY_SIZE,
+  1, /* Number of FREs for PLT GOT.  */
+  /* Array of SFrame FREs for PLT GOT.  */
+  { &elf_x86_64_sframe_pltgot_fre1 },
+};
+
+/* SFrame helper object for lazy PLT with IBT. */
+static const struct elf_x86_sframe_plt elf_x86_64_sframe_ibt_plt =
+{
+  LAZY_PLT_ENTRY_SIZE,
+  2, /* Number of FREs for PLT0.  */
+  /* Array of SFrame FREs for plt0.  */
+  { &elf_x86_64_sframe_plt0_fre1, &elf_x86_64_sframe_plt0_fre2 },
+  LAZY_PLT_ENTRY_SIZE,
+  2, /* Number of FREs for PLTn.  */
+  /* Array of SFrame FREs for plt.  */
+  { &elf_x86_64_sframe_pltn_fre1, &elf_x86_64_sframe_ibt_pltn_fre2 },
+  LAZY_PLT_ENTRY_SIZE,
+  1, /* Number of FREs for second PLT.  */
+  /* Array of SFrame FREs for second plt.  */
+  { &elf_x86_64_sframe_sec_pltn_fre1 },
+  LAZY_PLT_ENTRY_SIZE,
+  1, /* Number of FREs for PLT GOT.  */
+  /* Array of SFrame FREs for PLT GOT.  */
+  { &elf_x86_64_sframe_pltgot_fre1 },
+};
+
 /* These are the standard parameters.  */
 static const struct elf_x86_lazy_plt_layout elf_x86_64_lazy_plt =
   {
@@ -912,11 +1083,11 @@ 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_lazy_plt_layout elf_x86_64_lazy_ibt_plt =
+static const struct elf_x86_lazy_plt_layout elf_x86_64_lazy_bnd_ibt_plt =
   {
     elf_x86_64_lazy_bnd_plt0_entry,	/* plt0_entry */
     LAZY_PLT_ENTRY_SIZE,		/* plt0_entry_size */
-    elf_x86_64_lazy_ibt_plt_entry,	/* plt_entry */
+    elf_x86_64_lazy_bnd_ibt_plt_entry,	/* plt_entry */
     LAZY_PLT_ENTRY_SIZE,		/* plt_entry_size */
     elf_x86_64_tlsdesc_plt_entry,	/* plt_tlsdesc_entry */
     LAZY_PLT_ENTRY_SIZE,		/* plt_tlsdesc_entry_size */
@@ -934,16 +1105,16 @@ static const struct elf_x86_lazy_plt_lay
     4+1+5+5,				/* plt_plt_insn_end */
     0,					/* plt_lazy_offset */
     elf_x86_64_lazy_bnd_plt0_entry,	/* pic_plt0_entry */
-    elf_x86_64_lazy_ibt_plt_entry,	/* pic_plt_entry */
-    elf_x86_64_eh_frame_lazy_ibt_plt,	/* eh_frame_plt */
-    sizeof (elf_x86_64_eh_frame_lazy_ibt_plt) /* eh_frame_plt_size */
+    elf_x86_64_lazy_bnd_ibt_plt_entry,	/* pic_plt_entry */
+    elf_x86_64_eh_frame_lazy_bnd_ibt_plt, /* eh_frame_plt */
+    sizeof (elf_x86_64_eh_frame_lazy_bnd_ibt_plt) /* eh_frame_plt_size */
   };
 
-static const struct elf_x86_lazy_plt_layout elf_x32_lazy_ibt_plt =
+static const struct elf_x86_lazy_plt_layout elf_x86_64_lazy_ibt_plt =
   {
     elf_x86_64_lazy_plt0_entry,		/* plt0_entry */
     LAZY_PLT_ENTRY_SIZE,		/* plt0_entry_size */
-    elf_x32_lazy_ibt_plt_entry,		/* plt_entry */
+    elf_x86_64_lazy_ibt_plt_entry,	/* plt_entry */
     LAZY_PLT_ENTRY_SIZE,		/* plt_entry_size */
     elf_x86_64_tlsdesc_plt_entry,	/* plt_tlsdesc_entry */
     LAZY_PLT_ENTRY_SIZE,		/* plt_tlsdesc_entry_size */
@@ -961,15 +1132,15 @@ static const struct elf_x86_lazy_plt_lay
     4+5+5,				/* plt_plt_insn_end */
     0,					/* plt_lazy_offset */
     elf_x86_64_lazy_plt0_entry,		/* pic_plt0_entry */
-    elf_x32_lazy_ibt_plt_entry,		/* pic_plt_entry */
-    elf_x32_eh_frame_lazy_ibt_plt,	/* eh_frame_plt */
-    sizeof (elf_x32_eh_frame_lazy_ibt_plt) /* eh_frame_plt_size */
+    elf_x86_64_lazy_ibt_plt_entry,	/* pic_plt_entry */
+    elf_x86_64_eh_frame_lazy_ibt_plt,	/* eh_frame_plt */
+    sizeof (elf_x86_64_eh_frame_lazy_ibt_plt) /* eh_frame_plt_size */
   };
 
-static const struct elf_x86_non_lazy_plt_layout elf_x86_64_non_lazy_ibt_plt =
+static const struct elf_x86_non_lazy_plt_layout elf_x86_64_non_lazy_bnd_ibt_plt =
   {
-    elf_x86_64_non_lazy_ibt_plt_entry,	/* plt_entry */
-    elf_x86_64_non_lazy_ibt_plt_entry,	/* pic_plt_entry */
+    elf_x86_64_non_lazy_bnd_ibt_plt_entry, /* plt_entry */
+    elf_x86_64_non_lazy_bnd_ibt_plt_entry, /* pic_plt_entry */
     LAZY_PLT_ENTRY_SIZE,		/* plt_entry_size */
     4+1+2,				/* plt_got_offset */
     4+1+6,				/* plt_got_insn_size */
@@ -977,10 +1148,10 @@ 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_non_lazy_plt_layout elf_x32_non_lazy_ibt_plt =
+static const struct elf_x86_non_lazy_plt_layout elf_x86_64_non_lazy_ibt_plt =
   {
-    elf_x32_non_lazy_ibt_plt_entry,	/* plt_entry */
-    elf_x32_non_lazy_ibt_plt_entry,	/* pic_plt_entry */
+    elf_x86_64_non_lazy_ibt_plt_entry,	/* plt_entry */
+    elf_x86_64_non_lazy_ibt_plt_entry,	/* pic_plt_entry */
     LAZY_PLT_ENTRY_SIZE,		/* plt_entry_size */
     4+2,				/* plt_got_offset */
     4+6,				/* plt_got_insn_size */
@@ -988,33 +1159,26 @@ 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
+static bool
 elf64_x86_64_elf_object_p (bfd *abfd)
 {
   /* Set the right machine number for an x86-64 elf64 file.  */
   bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_x86_64);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf32_x86_64_elf_object_p (bfd *abfd)
 {
   /* Set the right machine number for an x86-64 elf32 file.  */
   bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_x64_32);
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if the TLS access code sequence support transition
    from R_TYPE.  */
 
-static bfd_boolean
+static enum elf_x86_tls_error_type
 elf_x86_64_check_tls_transition (bfd *abfd,
 				 struct bfd_link_info *info,
 				 asection *sec,
@@ -1027,12 +1191,12 @@ elf_x86_64_check_tls_transition (bfd *ab
 {
   unsigned int val;
   unsigned long r_symndx;
-  bfd_boolean largepic = FALSE;
+  bool largepic = false;
   struct elf_link_hash_entry *h;
   bfd_vma offset;
   struct elf_x86_link_hash_table *htab;
   bfd_byte *call;
-  bfd_boolean indirect_call;
+  bool indirect_call;
 
   htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
   offset = rel->r_offset;
@@ -1041,7 +1205,7 @@ elf_x86_64_check_tls_transition (bfd *ab
     case R_X86_64_TLSGD:
     case R_X86_64_TLSLD:
       if ((rel + 1) >= relend)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
       if (r_type == R_X86_64_TLSGD)
 	{
@@ -1078,7 +1242,7 @@ elf_x86_64_check_tls_transition (bfd *ab
 	  static const unsigned char leaq[] = { 0x66, 0x48, 0x8d, 0x3d };
 
 	  if ((offset + 12) > sec->size)
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 
 	  call = contents + offset + 4;
 	  if (call[0] != 0x66
@@ -1102,20 +1266,20 @@ elf_x86_64_check_tls_transition (bfd *ab
 		  || call[14] != 0xd0
 		  || !((call[10] == 0x48 && call[12] == 0xd8)
 		       || (call[10] == 0x4c && call[12] == 0xf8)))
-		return FALSE;
-	      largepic = TRUE;
+		return elf_x86_tls_error_yes;
+	      largepic = true;
 	    }
 	  else if (ABI_64_P (abfd))
 	    {
 	      if (offset < 4
 		  || memcmp (contents + offset - 4, leaq, 4) != 0)
-		return FALSE;
+		return elf_x86_tls_error_yes;
 	    }
 	  else
 	    {
 	      if (offset < 3
 		  || memcmp (contents + offset - 3, leaq + 1, 3) != 0)
-		return FALSE;
+		return elf_x86_tls_error_yes;
 	    }
 	  indirect_call = call[2] == 0xff;
 	}
@@ -1144,10 +1308,10 @@ elf_x86_64_check_tls_transition (bfd *ab
 	  static const unsigned char lea[] = { 0x48, 0x8d, 0x3d };
 
 	  if (offset < 3 || (offset + 9) > sec->size)
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 
 	  if (memcmp (contents + offset - 3, lea, 3) != 0)
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 
 	  call = contents + offset + 4;
 	  if (!(call[0] == 0xe8
@@ -1162,32 +1326,95 @@ elf_x86_64_check_tls_transition (bfd *ab
 		  || call[14] != 0xd0
 		  || !((call[10] == 0x48 && call[12] == 0xd8)
 		       || (call[10] == 0x4c && call[12] == 0xf8)))
-		return FALSE;
-	      largepic = TRUE;
+		return elf_x86_tls_error_yes;
+	      largepic = true;
 	    }
 	  indirect_call = call[0] == 0xff;
 	}
 
       r_symndx = htab->r_sym (rel[1].r_info);
       if (r_symndx < symtab_hdr->sh_info)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
       h = sym_hashes[r_symndx - symtab_hdr->sh_info];
       if (h == NULL
 	  || !((struct elf_x86_link_hash_entry *) h)->tls_get_addr)
-	return FALSE;
+	return elf_x86_tls_error_yes;
       else
 	{
 	  r_type = (ELF32_R_TYPE (rel[1].r_info)
 		    & ~R_X86_64_converted_reloc_bit);
 	  if (largepic)
-	    return r_type == R_X86_64_PLTOFF64;
+	    return (r_type == R_X86_64_PLTOFF64
+		    ? elf_x86_tls_error_none
+		    : elf_x86_tls_error_yes);
 	  else if (indirect_call)
-	    return r_type == R_X86_64_GOTPCRELX;
+	    return ((r_type == R_X86_64_GOTPCRELX
+		     || r_type == R_X86_64_GOTPCREL)
+		    ? elf_x86_tls_error_none
+		    : elf_x86_tls_error_yes);
 	  else
-	    return (r_type == R_X86_64_PC32 || r_type == R_X86_64_PLT32);
+	    return ((r_type == R_X86_64_PC32
+		     || r_type == R_X86_64_PLT32)
+		    ? elf_x86_tls_error_none
+		    : elf_x86_tls_error_yes);
 	}
 
+    case R_X86_64_CODE_4_GOTTPOFF:
+      /* Check transition from IE access model:
+		mov foo@gottpoff(%rip), %reg
+		add foo@gottpoff(%rip), %reg
+		where reg is one of r16 to r31.
+         For x32 also:
+		movrs foo@gottpoff(%rip), %reg
+		where no REX prefix is present.  */
+
+      if (offset < 4
+	  || (offset + 4) > sec->size)
+	return elf_x86_tls_error_yes;
+
+      if (!ABI_64_P (abfd)
+	  && contents[offset - 4] == 0x0f
+	  && contents[offset - 3] == 0x38
+	  && contents[offset - 2] == 0x8b)
+	goto check_gottpoff_modrm;
+
+      if (contents[offset - 4] != 0xd5)
+	return elf_x86_tls_error_yes;
+
+      goto check_gottpoff;
+
+    case R_X86_64_CODE_5_GOTTPOFF:
+      /* Check transition from IE access model:
+		movrs foo@gottpoff(%rip), %reg
+		where reg isn't one of r16 to r31.  */
+      if (offset < 5
+	  || (offset + 4) > sec->size
+	  || (contents[offset - 5] | (ABI_64_P (abfd) ? 7 : 0xf)) != 0x4f
+	  || contents[offset - 4] != 0x0f
+	  || contents[offset - 3] != 0x38
+	  || contents[offset - 2] != 0x8b)
+	return elf_x86_tls_error_yes;
+
+      goto check_gottpoff_modrm;
+
+    case R_X86_64_CODE_6_GOTTPOFF:
+      /* Check transition from IE access model:
+		add %reg1, foo@gottpoff(%rip), %reg2
+		movrs foo@gottpoff(%rip), %reg
+		where reg1/reg2/reg are one of r16 to r31.  */
+
+      if (offset < 6
+	  || (offset + 4) > sec->size
+	  || contents[offset - 6] != 0x62)
+	return elf_x86_tls_error_yes;
+
+      val = bfd_get_8 (abfd, contents + offset - 2);
+      if (val != 0x01 && val != 0x03 && val != 0x8b)
+	return elf_x86_tls_error_add_movrs;
+
+      goto check_gottpoff_modrm;
+
     case R_X86_64_GOTTPOFF:
       /* Check transition from IE access model:
 		mov foo@gottpoff(%rip), %reg
@@ -1202,58 +1429,70 @@ elf_x86_64_check_tls_transition (bfd *ab
 	    {
 	      /* X32 may have 0x44 REX prefix or no REX prefix.  */
 	      if (ABI_64_P (abfd))
-		return FALSE;
+		return elf_x86_tls_error_yes;
 	    }
 	}
       else
 	{
 	  /* X32 may not have any REX prefix.  */
 	  if (ABI_64_P (abfd))
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 	  if (offset < 2 || (offset + 3) > sec->size)
-	    return FALSE;
+	    return elf_x86_tls_error_yes;
 	}
 
+ check_gottpoff:
       val = bfd_get_8 (abfd, contents + offset - 2);
       if (val != 0x8b && val != 0x03)
-	return FALSE;
+	return elf_x86_tls_error_add_mov;
 
+ check_gottpoff_modrm:
       val = bfd_get_8 (abfd, contents + offset - 1);
-      return (val & 0xc7) == 5;
+      return ((val & 0xc7) == 5
+	      ? elf_x86_tls_error_none
+	      : elf_x86_tls_error_yes);
+
+    case R_X86_64_CODE_4_GOTPC32_TLSDESC:
+      /* Check transition from GDesc access model:
+		lea x@tlsdesc(%rip), %reg
+	 where reg is one of r16 to r31.  */
+
+      if (offset < 4
+	  || (offset + 4) > sec->size
+	  || contents[offset - 4] != 0xd5)
+	return elf_x86_tls_error_yes;
+
+      goto check_tlsdesc;
 
     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
 	 going to be rax.  */
 
       if (offset < 3 || (offset + 4) > sec->size)
-	return FALSE;
+	return elf_x86_tls_error_yes;
 
       val = bfd_get_8 (abfd, contents + offset - 3);
-      if ((val & 0xfb) != 0x48)
-	return FALSE;
+      val &= 0xfb;
+      if (val != 0x48 && (ABI_64_P (abfd) || val != 0x40))
+	return elf_x86_tls_error_yes;
 
+ check_tlsdesc:
       if (bfd_get_8 (abfd, contents + offset - 2) != 0x8d)
-	return FALSE;
+	return elf_x86_tls_error_lea;
 
       val = bfd_get_8 (abfd, contents + offset - 1);
-      return (val & 0xc7) == 0x05;
+      return ((val & 0xc7) == 0x05
+	      ? elf_x86_tls_error_none
+	      : elf_x86_tls_error_yes);
 
     case R_X86_64_TLSDESC_CALL:
-      /* Check transition from GDesc access model:
-		call *x@tlsdesc(%rax)
-       */
-      if (offset + 2 <= sec->size)
-	{
-	  /* Make sure that it's a call *x@tlsdesc(%rax).  */
-	  call = contents + offset;
-	  return call[0] == 0xff && call[1] == 0x10;
-	}
-
-      return FALSE;
+      /* It has been checked in elf_x86_64_tls_transition.  */
+      return elf_x86_tls_error_none;
 
     default:
       abort ();
@@ -1263,7 +1502,7 @@ elf_x86_64_check_tls_transition (bfd *ab
 /* Return TRUE if the TLS access transition is OK or no transition
    will be performed.  Update R_TYPE if there is a transition.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_tls_transition (struct bfd_link_info *info, bfd *abfd,
 			   asection *sec, bfd_byte *contents,
 			   Elf_Internal_Shdr *symtab_hdr,
@@ -1272,25 +1511,70 @@ elf_x86_64_tls_transition (struct bfd_li
 			   const Elf_Internal_Rela *rel,
 			   const Elf_Internal_Rela *relend,
 			   struct elf_link_hash_entry *h,
-			   unsigned long r_symndx,
-			   bfd_boolean from_relocate_section)
+			   Elf_Internal_Sym *sym,
+			   bool from_relocate_section)
 {
   unsigned int from_type = *r_type;
   unsigned int to_type = from_type;
-  bfd_boolean check = TRUE;
+  bool check = true;
+  bfd_vma offset;
+  bfd_byte *call;
 
   /* Skip TLS transition for functions.  */
   if (h != NULL
       && (h->type == STT_FUNC
 	  || h->type == STT_GNU_IFUNC))
-    return TRUE;
+    return true;
 
   switch (from_type)
     {
+    case R_X86_64_TLSDESC_CALL:
+      /* Check valid GDesc call:
+		call *x@tlscall(%rax) <--- LP64 mode.
+		call *x@tlscall(%eax) <--- X32 mode.
+       */
+      offset = rel->r_offset;
+      call = NULL;
+      if (offset + 2 <= sec->size)
+	{
+	  unsigned int prefix;
+	  call = contents + offset;
+	  prefix = 0;
+	  if (!ABI_64_P (abfd))
+	    {
+	      /* Check for call *x@tlscall(%eax).  */
+	      if (call[0] == 0x67)
+		{
+		  prefix = 1;
+		  if (offset + 3 > sec->size)
+		    call = NULL;
+		}
+	    }
+
+	  /* Make sure that it's a call *x@tlscall(%rax).  */
+	  if (call != NULL
+	      && (call[prefix] != 0xff || call[1 + prefix] != 0x10))
+	    call = NULL;
+	}
+
+      if (call == NULL)
+	{
+	  _bfd_x86_elf_link_report_tls_transition_error
+	    (info, abfd, sec, symtab_hdr, h, sym, rel,
+	     "R_X86_64_TLSDESC_CALL", NULL,
+	     elf_x86_tls_error_indirect_call);
+	  return false;
+	}
+
+      /* Fall through.  */
+
     case R_X86_64_TLSGD:
     case R_X86_64_GOTPC32_TLSDESC:
-    case R_X86_64_TLSDESC_CALL:
+    case R_X86_64_CODE_4_GOTPC32_TLSDESC:
     case R_X86_64_GOTTPOFF:
+    case R_X86_64_CODE_4_GOTTPOFF:
+    case R_X86_64_CODE_5_GOTTPOFF:
+    case R_X86_64_CODE_6_GOTTPOFF:
       if (bfd_link_executable (info))
 	{
 	  if (h == NULL)
@@ -1310,6 +1594,7 @@ elf_x86_64_tls_transition (struct bfd_li
 
 	  if (to_type == R_X86_64_TLSGD
 	      || to_type == R_X86_64_GOTPC32_TLSDESC
+	      || to_type == R_X86_64_CODE_4_GOTPC32_TLSDESC
 	      || to_type == R_X86_64_TLSDESC_CALL)
 	    {
 	      if (tls_type == GOT_TLS_IE)
@@ -1317,9 +1602,16 @@ elf_x86_64_tls_transition (struct bfd_li
 	    }
 
 	  /* We checked the transition before when we were called from
-	     elf_x86_64_check_relocs.  We only want to check the new
+	     elf_x86_64_scan_relocs.  We only want to check the new
 	     transition which hasn't been checked before.  */
-	  check = new_to_type != to_type && from_type == to_type;
+	  check = (new_to_type != to_type
+		   && (from_type == to_type
+		       || (from_type == R_X86_64_CODE_4_GOTTPOFF
+			   && to_type == R_X86_64_GOTTPOFF)
+		       || (from_type == R_X86_64_CODE_5_GOTTPOFF
+			   && to_type == R_X86_64_GOTTPOFF)
+		       || (from_type == R_X86_64_CODE_6_GOTTPOFF
+			   && to_type == R_X86_64_GOTTPOFF)));
 	  to_type = new_to_type;
 	}
 
@@ -1331,65 +1623,51 @@ elf_x86_64_tls_transition (struct bfd_li
       break;
 
     default:
-      return TRUE;
+      return true;
     }
 
   /* Return TRUE if there is no transition.  */
-  if (from_type == to_type)
-    return TRUE;
+  if (from_type == to_type
+      || (from_type == R_X86_64_CODE_4_GOTTPOFF
+	  && to_type == R_X86_64_GOTTPOFF)
+      || (from_type == R_X86_64_CODE_5_GOTTPOFF
+	  && to_type == R_X86_64_GOTTPOFF)
+      || (from_type == R_X86_64_CODE_6_GOTTPOFF
+	  && to_type == R_X86_64_GOTTPOFF))
+    return true;
 
   /* Check if the transition can be performed.  */
+  enum elf_x86_tls_error_type tls_error;
   if (check
-      && ! elf_x86_64_check_tls_transition (abfd, info, sec, contents,
-					    symtab_hdr, sym_hashes,
-					    from_type, rel, relend))
+      && ((tls_error = elf_x86_64_check_tls_transition (abfd, info, sec,
+							contents,
+							symtab_hdr,
+							sym_hashes,
+							from_type, rel,
+							relend))
+	  != elf_x86_tls_error_none))
+
     {
       reloc_howto_type *from, *to;
-      const char *name;
 
-      from = elf_x86_64_rtype_to_howto (abfd, from_type);
-      to = elf_x86_64_rtype_to_howto (abfd, to_type);
+      from = &x86_64_elf_howto_table[from_type];
+      to = &x86_64_elf_howto_table[to_type];
 
       if (from == NULL || to == NULL)
-	return FALSE;
-
-      if (h)
-	name = h->root.root.string;
-      else
-	{
-	  struct elf_x86_link_hash_table *htab;
+	return false;
 
-	  htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
-	  if (htab == NULL)
-	    name = "*unknown*";
-	  else
-	    {
-	      Elf_Internal_Sym *isym;
-
-	      isym = bfd_sym_from_r_symndx (&htab->sym_cache,
-					    abfd, r_symndx);
-	      name = bfd_elf_sym_name (abfd, symtab_hdr, isym, NULL);
-	    }
-	}
+      _bfd_x86_elf_link_report_tls_transition_error
+	(info, abfd, sec, symtab_hdr, h, sym, rel, from->name,
+	 to->name, tls_error);
 
-      _bfd_error_handler
-	/* xgettext:c-format */
-	(_("%pB: TLS transition from %s to %s against `%s' at %#" PRIx64
-	   " in section `%pA' failed"),
-	 abfd, from->name, to->name, name, (uint64_t) rel->r_offset, sec);
-      bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   *r_type = to_type;
-  return TRUE;
+  return true;
 }
 
-/* Rename some of the generic section flags to better document how they
-   are used here.  */
-#define check_relocs_failed	sec_flg0
-
-static bfd_boolean
+static bool
 elf_x86_64_need_pic (struct bfd_link_info *info,
 		     bfd *input_bfd, asection *sec,
 		     struct elf_link_hash_entry *h,
@@ -1458,11 +1736,25 @@ elf_x86_64_need_pic (struct bfd_link_inf
 		      object, pic);
   bfd_set_error (bfd_error_bad_value);
   sec->check_relocs_failed = 1;
-  return FALSE;
+  return false;
+}
+
+/* Move the R bits to the B bits in EVEX payload byte 1.  */
+static unsigned int evex_move_r_to_b (unsigned int byte1, bool copy)
+{
+  byte1 = (byte1 & ~(1 << 5)) | ((byte1 & (1 << 7)) >> 2); /* R3 -> B3 */
+  byte1 = (byte1 & ~(1 << 3)) | ((~byte1 & (1 << 4)) >> 1); /* R4 -> B4 */
+
+  /* Set both R bits, as they're inverted.  */
+  if (!copy)
+    byte1 |= (1 << 4) | (1 << 7);
+
+  return byte1;
 }
 
 /* With the local symbol, foo, we convert
    mov foo@GOTPCREL(%rip), %reg
+   movrs foo@GOTPCREL(%rip), %reg
    to
    lea foo(%rip), %reg
    and convert
@@ -1474,63 +1766,153 @@ elf_x86_64_need_pic (struct bfd_link_inf
    to
    test $foo, %reg
    and convert
+   push foo@GOTPCREL(%rip)
+   to
+   push $foo
+   and convert
    binop foo@GOTPCREL(%rip), %reg
    to
    binop $foo, %reg
-   where binop is one of adc, add, and, cmp, or, sbb, sub, xor
+   where binop is one of adc, add, and, cmp, imul, or, sbb, sub, xor
    instructions.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_convert_load_reloc (bfd *abfd,
+			       asection *input_section,
 			       bfd_byte *contents,
 			       unsigned int *r_type_p,
 			       Elf_Internal_Rela *irel,
 			       struct elf_link_hash_entry *h,
-			       bfd_boolean *converted,
+			       bool *converted,
 			       struct bfd_link_info *link_info)
 {
   struct elf_x86_link_hash_table *htab;
-  bfd_boolean is_pic;
-  bfd_boolean no_overflow;
-  bfd_boolean relocx;
-  bfd_boolean to_reloc_pc32;
-  asection *tsec;
+  bool is_pic;
+  bool no_overflow;
+  bool relocx;
+  bool is_branch = false;
+  bool to_reloc_pc32;
+  bool abs_symbol;
+  bool local_ref;
+  asection *tsec = NULL;
   bfd_signed_vma raddend;
   unsigned int opcode;
   unsigned int modrm;
+  unsigned char evex[3] = { 0, 0, 0 };
   unsigned int r_type = *r_type_p;
   unsigned int r_symndx;
   bfd_vma roff = irel->r_offset;
+  bfd_vma abs_relocation;
+  reloc_howto_type *howto;
+  bfd_reloc_status_type r;
+  Elf_Internal_Sym *isym;
+  bfd_vma relocation;
+
+  switch (r_type)
+    {
+    default:
+      if (roff < 2)
+	return true;
+      relocx = (r_type == R_X86_64_GOTPCRELX);
+      break;
+
+    case R_X86_64_REX_GOTPCRELX:
+      if (roff < 3)
+	return true;
+      relocx = true;
+      break;
 
-  if (roff < (r_type == R_X86_64_REX_GOTPCRELX ? 3 : 2))
-    return TRUE;
+    case R_X86_64_CODE_4_GOTPCRELX:
+      if (roff < 4)
+	return true;
+
+      /* Skip if this isn't a REX2 instruction, nor un-prefixed MOVRS.  */
+      opcode = bfd_get_8 (abfd, contents + roff - 4);
+      if (opcode != 0xd5
+	  && (opcode != 0x0f
+	      || bfd_get_8 (abfd, contents + roff - 3) != 0x38
+	      || bfd_get_8 (abfd, contents + roff - 2) != 0x8b))
+	return true;
+
+      relocx = true;
+      break;
+
+    case R_X86_64_CODE_5_GOTPCRELX:
+      if (roff < 5)
+	return true;
+
+      /* Skip if this isn't REX-prefixed MOVRS.  */
+      if ((bfd_get_8 (abfd, contents + roff - 5) | 0xf) != 0x4f
+	  || bfd_get_8 (abfd, contents + roff - 4) != 0x0f
+	  || bfd_get_8 (abfd, contents + roff - 3) != 0x38
+	  || bfd_get_8 (abfd, contents + roff - 2) != 0x8b)
+	return true;
+
+      relocx = true;
+      break;
+
+    case R_X86_64_CODE_6_GOTPCRELX:
+      if (roff < 6)
+	return true;
+
+      /* Skip if this isn't an EVEX instruction.  */
+      if (bfd_get_8 (abfd, contents + roff - 6) != 0x62)
+	return true;
+
+      evex[0] = bfd_get_8 (abfd, contents + roff - 5);
+      evex[1] = bfd_get_8 (abfd, contents + roff - 4);
+      evex[2] = bfd_get_8 (abfd, contents + roff - 3);
+
+      /* Skip if this isn't a Map 4 NP instruction.  */
+      if ((evex[0] & 7) != 4
+	  || (evex[1] & 3) != 0
+	  || (evex[2] & 0xe0) != 0)
+	return true;
+
+      relocx = true;
+      break;
+    }
 
   raddend = irel->r_addend;
   /* Addend for 32-bit PC-relative relocation must be -4.  */
   if (raddend != -4)
-    return TRUE;
+    return true;
 
   htab = elf_x86_hash_table (link_info, X86_64_ELF_DATA);
   is_pic = bfd_link_pic (link_info);
 
-  relocx = (r_type == R_X86_64_GOTPCRELX
-	    || r_type == R_X86_64_REX_GOTPCRELX);
-
   /* TRUE if --no-relax is used.  */
   no_overflow = link_info->disable_target_specific_optimizations > 1;
 
   r_symndx = htab->r_sym (irel->r_info);
 
   opcode = bfd_get_8 (abfd, contents + roff - 2);
+  modrm = bfd_get_8 (abfd, contents + roff - 1);
+  if (opcode == 0xff)
+    {
+      switch (modrm & 0x38)
+	{
+	case 0x10: /* CALL */
+	case 0x20: /* JMP */
+	  is_branch = true;
+	  break;
+
+	case 0x30: /* PUSH */
+	  break;
+
+	default:
+	  return true;
+	}
+    }
 
   /* Convert mov to lea since it has been done for a while.  */
   if (opcode != 0x8b)
     {
-      /* Only convert R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX
-	 for call, jmp or one of adc, add, and, cmp, or, sbb, sub,
-	 test, xor instructions.  */
+      /* Only convert R_X86_64_GOTPCRELX, R_X86_64_REX_GOTPCRELX
+	 and R_X86_64_CODE_<n>_GOTPCRELX for call, jmp or one of adc,
+	 add, and, cmp, or, sbb, sub, test, xor instructions.  */
       if (!relocx)
-	return TRUE;
+	return true;
     }
 
   /* We convert only to R_X86_64_PC32:
@@ -1539,23 +1921,31 @@ elf_x86_64_convert_load_reloc (bfd *abfd
      3. no_overflow is true.
      4. PIC.
      */
-  to_reloc_pc32 = (opcode == 0xff
+  to_reloc_pc32 = (is_branch
 		   || !relocx
 		   || 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);
+      isym = 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;
+	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 +1961,14 @@ 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);
 
+      isym = NULL;
+      tsec = NULL;
+
+      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)
@@ -1581,25 +1976,25 @@ elf_x86_64_convert_load_reloc (bfd *abfd
 	      && !eh->linker_def
 	      && local_ref))
 	{
-	  if (opcode == 0xff)
+	  if (is_branch)
 	    {
 	      /* Skip for branch instructions since R_X86_64_PC32
 		 may overflow.  */
 	      if (no_overflow)
-		return TRUE;
+		return true;
 	    }
 	  else if (relocx)
 	    {
 	      /* For non-branch instructions, we can convert to
 		 R_X86_64_32/R_X86_64_32S since we know if there
 		 is a REX byte.  */
-	      to_reloc_pc32 = FALSE;
+	      to_reloc_pc32 = false;
 	    }
 
 	  /* Since we don't know the current PC when PIC is true,
 	     we can't convert to R_X86_64_PC32.  */
 	  if (to_reloc_pc32 && is_pic)
-	    return TRUE;
+	    return true;
 
 	  goto convert;
 	}
@@ -1629,35 +2024,82 @@ elf_x86_64_convert_load_reloc (bfd *abfd
 	    {
 	      /* Skip since R_X86_64_32/R_X86_64_32S may overflow.  */
 	      if (no_overflow)
-		return TRUE;
+		return true;
+	      if (h->start_stop)
+		tsec = h->root.u.def.section;
+	      else if (h == htab->elf.hehdr_start)
+		{
+		  /* Use the lowest-addressed section to estimate the
+		     __ehdr_start symbol value.  */
+		  asection *sec;
+		  tsec = NULL;
+		  for (sec = link_info->output_bfd->sections;
+		       sec != NULL;
+		       sec = sec->next)
+		    if ((sec->flags & SEC_LOAD) != 0
+			&& (tsec == NULL || tsec->vma > sec->vma))
+		      tsec = sec;
+
+		}
 	      goto convert;
 	    }
 	  tsec = h->root.u.def.section;
 	}
       else
-	return TRUE;
+	return true;
     }
 
+  if (tsec == NULL)
+    return false;
+
   /* Don't convert GOTPCREL relocation against large section.  */
   if (elf_section_data (tsec) !=  NULL
       && (elf_section_flags (tsec) & SHF_X86_64_LARGE) != 0)
-    return TRUE;
+    return true;
 
   /* Skip since R_X86_64_PC32/R_X86_64_32/R_X86_64_32S may overflow.  */
   if (no_overflow)
-    return TRUE;
+    return true;
 
-convert:
-  if (opcode == 0xff)
+ convert:
+  /* Compute relocation value so that it can be used later to check for
+     overflow against the converted relocation.  */
+  if (h == NULL)
+    {
+      /* Make a copy of IREL so that _bfd_elf_rela_local_sym won't
+	 change IREL.  */
+      Elf_Internal_Rela rel = *irel;
+      relocation = _bfd_elf_rela_local_sym (link_info->output_bfd, isym,
+					    &tsec, &rel);
+      /* Use the updated r_addend.  */
+      raddend = rel.r_addend;
+    }
+  else if (tsec != NULL)
+    relocation = (h->root.u.def.value
+		  + tsec->output_section->vma
+		  + tsec->output_offset);
+  else
+    relocation = 0;
+
+  if (is_branch)
     {
       /* We have "call/jmp *foo@GOTPCREL(%rip)".  */
       unsigned int nop;
       unsigned int disp;
       bfd_vma nop_offset;
 
+      r_type = R_X86_64_PC32;
+
+      /* Skip if the converted relocation will overflow.  */
+      howto = &x86_64_elf_howto_table[r_type];
+      r = _bfd_final_link_relocate (howto, abfd, input_section,
+				    contents, irel->r_offset,
+				    relocation, raddend);
+      if (r == bfd_reloc_overflow)
+	return true;
+
       /* Convert R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX to
 	 R_X86_64_PC32.  */
-      modrm = bfd_get_8 (abfd, contents + roff - 1);
       if (modrm == 0x25)
 	{
 	  /* Convert to "jmp foo nop".  */
@@ -1699,36 +2141,196 @@ convert:
 	}
       bfd_put_8 (abfd, nop, contents + nop_offset);
       bfd_put_8 (abfd, modrm, contents + irel->r_offset - 1);
-      r_type = R_X86_64_PC32;
+    }
+  else if (r_type == R_X86_64_CODE_6_GOTPCRELX && opcode != 0x8b)
+    {
+      bool move_v_r = false;
+
+      /* R_X86_64_PC32 isn't supported.  */
+      if (to_reloc_pc32)
+	return true;
+
+      if (opcode == 0x85)
+	{
+	  /* Convert "ctest<cc> %reg, foo@GOTPCREL(%rip)" to
+	     "ctest<cc> $foo, %reg".  */
+	  modrm = 0xc0 | (modrm & 0x38) >> 3;
+	  opcode = 0xf7;
+	}
+      else if ((opcode | 0x3a) == 0x3b)
+	{
+	  /* Don't convert (non-NDD) forms with memory destination.  */
+	  if (!(evex[2] & 0x10) && (opcode | 0x38) != 0x3b)
+	    return true;
+
+	  /* Don't convert non-commutative insns with the memory operand
+	     2nd.  */
+	  if ((evex[2] & 0x10) && (opcode | 0x38) != 0x3b
+	      && (opcode == 0x19 /* SBB */
+		  || opcode == 0x29 /* SUB */))
+	    return true;
+
+	  /* Convert "binop foo@GOTPCREL(%rip), %reg" to
+	     "binop $foo, %reg", or alike for 3-operand forms.  */
+	  modrm = 0xc0 | ((modrm & 0x38) >> 3) | (opcode & 0x38);
+	  opcode = 0x81;
+	}
+      else if (opcode == 0xaf)
+	{
+	  if (!(evex[2] & 0x10))
+	    {
+	      /* Convert "imul foo@GOTPCREL(%rip), %reg" to
+	         "imul $foo, %reg, %reg".  */
+	      modrm = 0xc0 | ((modrm & 0x38) >> 3) | (modrm & 0x38);
+	    }
+	  else
+	    {
+	      /* Convert "imul foo@GOTPCREL(%rip), %reg1, %reg2" to
+	         "imul $foo, %reg1, %reg2".  */
+	      modrm = 0xc0 | ((modrm & 0x38) >> 3) | (~evex[1] & 0x38);
+	      move_v_r = true;
+	    }
+	  opcode = 0x69;
+	}
+      else
+	return true;
+
+      /* Use R_X86_64_32 with 32-bit operand to avoid relocation
+	 overflow when sign-extending imm32 to 64 bits.  */
+      r_type = evex[1] & 0x80 ? R_X86_64_32S : R_X86_64_32;
+
+      /* Skip if the converted relocation will overflow.  */
+      howto = elf_x86_64_rtype_to_howto (abfd, r_type);
+      r = _bfd_final_link_relocate (howto, abfd, input_section,
+				    contents, irel->r_offset,
+				    relocation, 0);
+      if (r == bfd_reloc_overflow)
+	return true;
+
+      if (abs_relocation) /* Bogus; should be abs_symbol.  */
+	{
+	  /* 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, opcode, contents + roff - 2);
+      bfd_put_8 (abfd, modrm, contents + roff - 1);
+
+      evex[0] = evex_move_r_to_b (evex[0], opcode == 0x69 && !move_v_r);
+      if (move_v_r)
+	{
+	  /* Move the top two V bits to the R bits in EVEX payload byte 1.
+	     Note that evex_move_r_to_b() set both R bits.  */
+	  if (!(evex[1] & (1 << 6)))
+	    evex[0] &= ~(1 << 7); /* V3 -> R3 */
+	  if (!(evex[2] & (1 << 3)))
+	    evex[0] &= ~(1 << 4); /* V4 -> R4 */
+	  /* Set all V bits, as they're inverted.  */
+	  evex[1] |= 0xf << 3;
+	  evex[2] |= 1 << 3;
+	  /* Clear the ND (ZU) bit (it ought to be ignored anyway).  */
+	  evex[2] &= ~(1 << 4);
+	  bfd_put_8 (abfd, evex[2], contents + roff - 3);
+	  bfd_put_8 (abfd, evex[1], contents + roff - 4);
+	}
+      bfd_put_8 (abfd, evex[0], contents + roff - 5);
+
+      /* No addend for R_X86_64_32/R_X86_64_32S relocations.  */
+      irel->r_addend = 0;
     }
   else
     {
-      unsigned int rex;
+      unsigned int rex = 0;
       unsigned int rex_mask = REX_R;
+      unsigned int rex2 = 0;
+      unsigned int rex2_mask = REX_R | REX_R << 4;
+      unsigned int movrs = 0;
+      bool rex_w = false;
 
-      if (r_type == R_X86_64_REX_GOTPCRELX)
-	rex = bfd_get_8 (abfd, contents + roff - 3);
-      else
-	rex = 0;
+      if (r_type == R_X86_64_CODE_6_GOTPCRELX)
+	{
+	  /* Synthesize a REX2 prefix from EVEX, just enough for the LEA
+	     and MOV case below.  */
+	  unsigned int p;
+
+	  p = bfd_get_8 (abfd, contents + roff - 5);
+	  if (!(p & 0x80))
+	    rex2 |= REX_R;
+	  if (!(p & 0x10))
+	    rex2 |= REX_R << 4;
+	  if (bfd_get_8 (abfd, contents + roff - 4) & 0x80)
+	    {
+	      rex2 |= REX_W;
+	      rex_w = true;
+	    }
+	  movrs = 6;
+	}
+      else if (r_type == R_X86_64_CODE_5_GOTPCRELX)
+	{
+	  rex = bfd_get_8 (abfd, contents + roff - 5);
+	  rex_w = (rex & REX_W) != 0;
+	  movrs = 5;
+	}
+      else if (r_type == R_X86_64_CODE_4_GOTPCRELX)
+	{
+	  if (bfd_get_8 (abfd, contents + roff - 4) == 0xd5)
+	    {
+	      /* Make sure even an all-zero payload leaves a non-zero value
+		 in the variable.  */
+	      rex2 = bfd_get_8 (abfd, contents + roff - 3) | 0x100;
+	      rex2_mask |= 0x100;
+	      rex_w = (rex2 & REX_W) != 0;
+	    }
+	  else if (bfd_get_8 (abfd, contents + roff - 4) == 0x0f)
+	    movrs = 4;
+	}
+      else if (r_type == R_X86_64_REX_GOTPCRELX)
+	{
+	  rex = bfd_get_8 (abfd, contents + roff - 3);
+	  rex_w = (rex & REX_W) != 0;
+	}
 
       if (opcode == 0x8b)
 	{
+	  if (abs_symbol && local_ref && relocx)
+	    to_reloc_pc32 = false;
+
 	  if (to_reloc_pc32)
 	    {
 	      /* Convert "mov foo@GOTPCREL(%rip), %reg" to
 		 "lea foo(%rip), %reg".  */
 	      opcode = 0x8d;
 	      r_type = R_X86_64_PC32;
+
+	      /* Skip if the converted relocation will overflow.  */
+	      howto = &x86_64_elf_howto_table[r_type];
+	      r = _bfd_final_link_relocate (howto, abfd, input_section,
+					    contents, irel->r_offset,
+					    relocation,
+					    raddend);
+	      if (r == bfd_reloc_overflow)
+		return true;
+
+	      /* For MOVRS move a possible REX prefix as necessary.  */
+	      if (movrs == 5)
+		bfd_put_8 (abfd, rex, contents + roff - 3);
 	    }
 	  else
 	    {
 	      /* Convert "mov foo@GOTPCREL(%rip), %reg" to
 		 "mov $foo, %reg".  */
 	      opcode = 0xc7;
-	      modrm = bfd_get_8 (abfd, contents + roff - 1);
 	      modrm = 0xc0 | (modrm & 0x38) >> 3;
-	      if ((rex & REX_W) != 0
-		  && ABI_64_P (link_info->output_bfd))
+	      if (rex_w && ABI_64_P (link_info->output_bfd))
 		{
 		  /* Keep the REX_W bit in REX byte for LP64.  */
 		  r_type = R_X86_64_32S;
@@ -1740,8 +2342,9 @@ convert:
 		     use R_X86_64_32 and clear the W bit to avoid
 		     sign-extend imm32 to imm64.  */
 		  r_type = R_X86_64_32;
-		  /* Clear the W bit in REX byte.  */
+		  /* Clear the W bit in REX byte and REX2 payload.  */
 		  rex_mask |= REX_W;
+		  rex2_mask |= REX_W;
 		  goto rewrite_modrm_rex;
 		}
 	    }
@@ -1750,29 +2353,86 @@ convert:
 	{
 	  /* R_X86_64_PC32 isn't supported.  */
 	  if (to_reloc_pc32)
-	    return TRUE;
+	    return true;
 
-	  modrm = bfd_get_8 (abfd, contents + roff - 1);
-	  if (opcode == 0x85)
+	  if (opcode == 0x85 && !(rex2 & (REX2_M << 4)))
 	    {
 	      /* Convert "test %reg, foo@GOTPCREL(%rip)" to
 		 "test $foo, %reg".  */
 	      modrm = 0xc0 | (modrm & 0x38) >> 3;
 	      opcode = 0xf7;
 	    }
-	  else
+	  else if ((opcode | 0x38) == 0x3b && !(rex2 & (REX2_M << 4)))
 	    {
 	      /* Convert "binop foo@GOTPCREL(%rip), %reg" to
 		 "binop $foo, %reg".  */
-	      modrm = 0xc0 | (modrm & 0x38) >> 3 | (opcode & 0x3c);
+	      modrm = 0xc0 | ((modrm & 0x38) >> 3) | (opcode & 0x38);
 	      opcode = 0x81;
 	    }
+	  else if (opcode == 0xaf && (rex2 & (REX2_M << 4)))
+	    {
+	      /* Convert "imul foo@GOTPCREL(%rip), %reg" to
+		 "imul $foo, %reg, %reg".  */
+	      modrm = 0xc0 | ((modrm & 0x38) >> 3) | (modrm & 0x38);
+	      rex_mask = 0;
+	      rex2_mask = REX2_M << 4;
+	      opcode = 0x69;
+	    }
+	  else if (opcode == 0xff && !(rex2 & (REX2_M << 4)))
+	    {
+	      /* Convert "push foo@GOTPCREL(%rip)" to
+		 "push $foo".  */
+	      bfd_put_8 (abfd, 0x68, contents + roff - 1);
+	      if (rex)
+		{
+		  bfd_put_8 (abfd, 0x2e, contents + roff - 3);
+		  bfd_put_8 (abfd, rex, contents + roff - 2);
+		}
+	      else if (rex2)
+		{
+		  bfd_put_8 (abfd, 0x2e, contents + roff - 4);
+		  bfd_put_8 (abfd, 0xd5, contents + roff - 3);
+		  bfd_put_8 (abfd, rex2, contents + roff - 2);
+		}
+	      else
+		bfd_put_8 (abfd, 0x2e, contents + roff - 2);
+
+	      r_type = R_X86_64_32S;
+	      /* No addend for R_X86_64_32S relocations.  */
+	      irel->r_addend = 0;
+	      goto finish;
+	    }
+	  else
+	    return true;
 
 	  /* Use R_X86_64_32 with 32-bit operand to avoid relocation
 	     overflow when sign-extending imm32 to imm64.  */
-	  r_type = (rex & REX_W) != 0 ? R_X86_64_32S : R_X86_64_32;
+	  r_type = rex_w ? R_X86_64_32S : R_X86_64_32;
+
+	rewrite_modrm_rex:
+	  /* Skip if the converted relocation will overflow.  */
+	  howto = elf_x86_64_rtype_to_howto (abfd, r_type);
+	  r = _bfd_final_link_relocate (howto, abfd, input_section,
+					contents, irel->r_offset,
+					relocation, 0);
+	  if (r == bfd_reloc_overflow)
+	    return true;
+
+	  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;
+		}
+	    }
 
-rewrite_modrm_rex:
 	  bfd_put_8 (abfd, modrm, contents + roff - 1);
 
 	  if (rex)
@@ -1781,58 +2441,70 @@ rewrite_modrm_rex:
 	      rex = (rex & ~rex_mask) | (rex & REX_R) >> 2;
 	      bfd_put_8 (abfd, rex, contents + roff - 3);
 	    }
+	  else if (rex2)
+	    {
+	      /* Move the R bits to the B bits in REX2 payload byte.  */
+	      rex2 = ((rex2 & ~rex2_mask)
+		      | (rex2 & (REX_R | REX_R << 4)) >> 2);
+	      bfd_put_8 (abfd, rex2, contents + roff - 3);
+	    }
 
 	  /* No addend for R_X86_64_32/R_X86_64_32S relocations.  */
 	  irel->r_addend = 0;
 	}
 
       bfd_put_8 (abfd, opcode, contents + roff - 2);
+
+      /* For MOVRS zap the 0f38 or EVEX prefix, applying meaningless CS
+	 segment overrides instead.  When necessary also install the REX2
+	 prefix and payload (which may not have been written yet).  */
+      if (movrs)
+	{
+	  bfd_put_8 (abfd, 0x2e, contents + roff - movrs);
+	  bfd_put_8 (abfd, 0x2e, contents + roff - movrs + 1);
+	  if (movrs == 6)
+	    {
+	      bfd_put_8 (abfd, 0xd5, contents + roff - 4);
+	      bfd_put_8 (abfd, rex2, contents + roff - 3);
+	    }
+	}
     }
 
+ finish:
   *r_type_p = r_type;
   irel->r_info = htab->r_info (r_symndx,
 			       r_type | R_X86_64_converted_reloc_bit);
 
-  *converted = TRUE;
+  *converted = true;
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase, and
-   calculate needed space in the global offset table, procedure
-   linkage table, and dynamic reloc sections.  */
+   calculate needed space in the global offset table, and procedure
+   linkage table.  */
 
-static bfd_boolean
-elf_x86_64_check_relocs (bfd *abfd, struct bfd_link_info *info,
-			 asection *sec,
-			 const Elf_Internal_Rela *relocs)
+static bool
+elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info,
+			asection *sec,
+			const Elf_Internal_Rela *relocs)
 {
   struct elf_x86_link_hash_table *htab;
   Elf_Internal_Shdr *symtab_hdr;
   struct elf_link_hash_entry **sym_hashes;
   const Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *rel_end;
-  asection *sreloc;
   bfd_byte *contents;
-  bfd_boolean converted;
+  bool converted;
 
   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;
+    return true;
 
   htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
   if (htab == NULL)
     {
       sec->check_relocs_failed = 1;
-      return FALSE;
+      return false;
     }
 
   BFD_ASSERT (is_x86_elf (abfd, htab));
@@ -1840,18 +2512,16 @@ elf_x86_64_check_relocs (bfd *abfd, stru
   /* Get the section contents.  */
   if (elf_section_data (sec)->this_hdr.contents != NULL)
     contents = elf_section_data (sec)->this_hdr.contents;
-  else if (!bfd_malloc_and_get_section (abfd, sec, &contents))
+  else if (!_bfd_elf_mmap_section_contents (abfd, sec, &contents))
     {
       sec->check_relocs_failed = 1;
-      return FALSE;
+      return false;
     }
 
   symtab_hdr = &elf_symtab_hdr (abfd);
   sym_hashes = elf_sym_hashes (abfd);
 
-  converted = FALSE;
-
-  sreloc = NULL;
+  converted = false;
 
   rel_end = relocs + sec->reloc_count;
   for (rel = relocs; rel < rel_end; rel++)
@@ -1862,12 +2532,18 @@ elf_x86_64_check_relocs (bfd *abfd, stru
       struct elf_x86_link_hash_entry *eh;
       Elf_Internal_Sym *isym;
       const char *name;
-      bfd_boolean size_reloc;
-      bfd_boolean converted_reloc;
+      bool size_reloc;
+      bool converted_reloc;
+      bool no_dynreloc;
+      reloc_howto_type *howto;
 
       r_symndx = htab->r_sym (rel->r_info);
       r_type = ELF32_R_TYPE (rel->r_info);
 
+      /* Don't check R_X86_64_NONE.  */
+      if (r_type == R_X86_64_NONE)
+	continue;
+
       if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr))
 	{
 	  /* xgettext:c-format */
@@ -1876,10 +2552,27 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 	  goto error_return;
 	}
 
+      howto = elf_x86_64_rtype_to_howto (abfd, r_type);
+      if (howto == NULL)
+	{
+	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+			      abfd, r_type);
+	  goto error_return;
+	}
+      if (!bfd_reloc_offset_in_range (howto, abfd, sec, rel->r_offset))
+	{
+	  /* xgettext:c-format */
+	  _bfd_error_handler
+	    (_("%pB: bad reloc offset (%#" PRIx64 " > %#" PRIx64 ") for"
+	       " section `%pA'"), abfd, (uint64_t) rel->r_offset,
+	     (uint64_t) sec->size, sec);
+	  goto error_return;
+	}
+
       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;
@@ -1888,7 +2581,7 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
 	      h = _bfd_elf_x86_get_local_sym_hash (htab, abfd, rel,
-						   TRUE);
+						   true);
 	      if (h == NULL)
 		goto error_return;
 
@@ -1907,10 +2600,7 @@ elf_x86_64_check_relocs (bfd *abfd, stru
       else
 	{
 	  isym = NULL;
-	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-	  while (h->root.type == bfd_link_hash_indirect
-		 || h->root.type == bfd_link_hash_warning)
-	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	  h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
 	}
 
       /* Check invalid x32 relocations.  */
@@ -1946,39 +2636,47 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 	    break;
 	  }
 
+      eh = (struct elf_x86_link_hash_entry *) h;
+
       if (h != NULL)
 	{
 	  /* It is referenced by a non-shared object. */
 	  h->ref_regular = 1;
 	}
 
-      converted_reloc = FALSE;
+      converted_reloc = false;
       if ((r_type == R_X86_64_GOTPCREL
 	   || r_type == R_X86_64_GOTPCRELX
-	   || r_type == R_X86_64_REX_GOTPCRELX)
+	   || r_type == R_X86_64_REX_GOTPCRELX
+	   || r_type == R_X86_64_CODE_4_GOTPCRELX
+	   || r_type == R_X86_64_CODE_5_GOTPCRELX
+	   || r_type == R_X86_64_CODE_6_GOTPCRELX)
 	  && (h == NULL || h->type != STT_GNU_IFUNC))
 	{
 	  Elf_Internal_Rela *irel = (Elf_Internal_Rela *) rel;
-	  if (!elf_x86_64_convert_load_reloc (abfd, contents, &r_type,
-					      irel, h, &converted_reloc,
-					      info))
+	  if (!elf_x86_64_convert_load_reloc (abfd, sec, contents,
+					      &r_type, irel, h,
+					      &converted_reloc, info))
 	    goto error_return;
 
 	  if (converted_reloc)
-	    converted = TRUE;
+	    converted = true;
 	}
 
+      if (!_bfd_elf_x86_valid_reloc_p (sec, info, htab, rel, h, isym,
+				       symtab_hdr, &no_dynreloc))
+	goto error_return;
+
       if (! elf_x86_64_tls_transition (info, abfd, sec, contents,
 				       symtab_hdr, sym_hashes,
 				       &r_type, GOT_UNKNOWN,
-				       rel, rel_end, h, r_symndx, FALSE))
+				       rel, rel_end, h, isym, false))
 	goto error_return;
 
       /* Check if _GLOBAL_OFFSET_TABLE_ is referenced.  */
       if (h == htab->elf.hgot)
-	htab->got_referenced = TRUE;
+	htab->got_referenced = true;
 
-      eh = (struct elf_x86_link_hash_entry *) h;
       switch (r_type)
 	{
 	case R_X86_64_TLSLD:
@@ -1987,13 +2685,23 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 
 	case R_X86_64_TPOFF32:
 	  if (!bfd_link_executable (info) && ABI_64_P (abfd))
-	    return elf_x86_64_need_pic (info, abfd, sec, h, symtab_hdr, isym,
-					&x86_64_elf_howto_table[r_type]);
+	    {
+	      elf_x86_64_need_pic (info, abfd, sec, h, symtab_hdr, isym,
+				   &x86_64_elf_howto_table[r_type]);
+	      goto error_return;
+	    }
 	  if (eh != NULL)
 	    eh->zero_undefweak &= 0x2;
 	  break;
 
+	case R_X86_64_TLSDESC_CALL:
+	  htab->has_tls_desc_call = 1;
+	  goto need_got;
+
 	case R_X86_64_GOTTPOFF:
+	case R_X86_64_CODE_4_GOTTPOFF:
+	case R_X86_64_CODE_5_GOTTPOFF:
+	case R_X86_64_CODE_6_GOTTPOFF:
 	  if (!bfd_link_executable (info))
 	    info->flags |= DF_STATIC_TLS;
 	  /* Fall through */
@@ -2002,24 +2710,46 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 	case R_X86_64_GOTPCREL:
 	case R_X86_64_GOTPCRELX:
 	case R_X86_64_REX_GOTPCRELX:
+	case R_X86_64_CODE_4_GOTPCRELX:
+	case R_X86_64_CODE_5_GOTPCRELX:
+	case R_X86_64_CODE_6_GOTPCRELX:
 	case R_X86_64_TLSGD:
 	case R_X86_64_GOT64:
 	case R_X86_64_GOTPCREL64:
 	case R_X86_64_GOTPLT64:
 	case R_X86_64_GOTPC32_TLSDESC:
-	case R_X86_64_TLSDESC_CALL:
+	case R_X86_64_CODE_4_GOTPC32_TLSDESC:
+need_got:
 	  /* This symbol requires a global offset table entry.	*/
 	  {
 	    int tls_type, old_tls_type;
 
 	    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:
+	      case R_X86_64_CODE_4_GOTTPOFF:
+	      case R_X86_64_CODE_5_GOTTPOFF:
+	      case R_X86_64_CODE_6_GOTTPOFF:
+		tls_type = GOT_TLS_IE;
+		break;
 	      case R_X86_64_GOTPC32_TLSDESC:
+	      case R_X86_64_CODE_4_GOTPC32_TLSDESC:
 	      case R_X86_64_TLSDESC_CALL:
-		tls_type = GOT_TLS_GDESC; break;
+		tls_type = GOT_TLS_GDESC;
+		break;
 	      }
 
 	    if (h != NULL)
@@ -2031,25 +2761,12 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 	      {
 		bfd_signed_vma *local_got_refcounts;
 
+		if (!elf_x86_allocate_local_got_info (abfd,
+						      symtab_hdr->sh_info))
+		  goto error_return;
+
 		/* This is a global offset table entry for a local symbol.  */
 		local_got_refcounts = elf_local_got_refcounts (abfd);
-		if (local_got_refcounts == NULL)
-		  {
-		    bfd_size_type size;
-
-		    size = symtab_hdr->sh_info;
-		    size *= sizeof (bfd_signed_vma)
-		      + sizeof (bfd_vma) + sizeof (char);
-		    local_got_refcounts = ((bfd_signed_vma *)
-					   bfd_zalloc (abfd, size));
-		    if (local_got_refcounts == NULL)
-		      goto error_return;
-		    elf_local_got_refcounts (abfd) = local_got_refcounts;
-		    elf_x86_local_tlsdesc_gotent (abfd)
-		      = (bfd_vma *) (local_got_refcounts + symtab_hdr->sh_info);
-		    elf_x86_local_got_tls_type (abfd)
-		      = (char *) (local_got_refcounts + 2 * symtab_hdr->sh_info);
-		  }
 		local_got_refcounts[r_symndx] = 1;
 		old_tls_type
 		  = elf_x86_local_got_tls_type (abfd) [r_symndx];
@@ -2102,7 +2819,6 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 	  break;
 
 	case R_X86_64_PLT32:
-	case R_X86_64_PLT32_BND:
 	  /* This 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 which is
@@ -2132,7 +2848,7 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 
 	case R_X86_64_SIZE32:
 	case R_X86_64_SIZE64:
-	  size_reloc = TRUE;
+	  size_reloc = true;
 	  goto do_size;
 
 	case R_X86_64_32:
@@ -2154,17 +2870,19 @@ elf_x86_64_check_relocs (bfd *abfd, stru
 		      && !h->def_regular
 		      && h->def_dynamic
 		      && (sec->flags & SEC_READONLY) == 0)))
-	    return elf_x86_64_need_pic (info, abfd, sec, h, symtab_hdr, isym,
-					&x86_64_elf_howto_table[r_type]);
+	    {
+	      elf_x86_64_need_pic (info, abfd, sec, h, symtab_hdr, isym,
+				   &x86_64_elf_howto_table[r_type]);
+	      goto error_return;
+	    }
 	  /* Fall through.  */
 
 	case R_X86_64_PC8:
 	case R_X86_64_PC16:
 	case R_X86_64_PC32:
-	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
@@ -2174,7 +2892,7 @@ pointer:
 	      && (bfd_link_executable (info)
 		  || h->type == STT_GNU_IFUNC))
 	    {
-	      bfd_boolean func_pointer_ref = FALSE;
+	      bool func_pointer_ref = false;
 
 	      if (r_type == R_X86_64_PC32)
 		{
@@ -2194,19 +2912,26 @@ pointer:
 			}
 		    }
 		}
-	      else if (r_type != R_X86_64_PC32_BND
-		       && r_type != R_X86_64_PC64)
+	      else if (r_type != R_X86_64_PC64)
 		{
-		  h->pointer_equality_needed = 1;
 		  /* At run-time, R_X86_64_64 can be resolved for both
 		     x86-64 and x32. But R_X86_64_32 and R_X86_64_32S
-		     can only be resolved for x32.  */
+		     can only be resolved for x32.  Function pointer
+		     reference doesn't need PLT for pointer equality.  */
 		  if ((sec->flags & SEC_READONLY) == 0
 		      && (r_type == R_X86_64_64
 			  || (!ABI_64_P (abfd)
 			      && (r_type == R_X86_64_32
 				  || r_type == R_X86_64_32S))))
-		    func_pointer_ref = TRUE;
+		    func_pointer_ref = true;
+
+		  /* IFUNC symbol needs pointer equality in PDE so that
+		     function pointer reference will be resolved to its
+		     PLT entry directly.  */
+		  if (!func_pointer_ref
+		      || (bfd_link_pde (info)
+			  && h->type == STT_GNU_IFUNC))
+		    h->pointer_equality_needed = 1;
 		}
 
 	      if (!func_pointer_ref)
@@ -2219,40 +2944,51 @@ pointer:
 		     adjust_dynamic_symbol.  */
 		  h->non_got_ref = 1;
 
+		  if (!elf_has_indirect_extern_access (sec->owner))
+		    eh->non_got_ref_without_indirect_extern_access = 1;
+
 		  /* We may need a .plt entry if the symbol is a function
 		     defined in a shared lib or is a function referenced
 		     from the code or read-only section.  */
 		  if (!h->def_regular
 		      || (sec->flags & (SEC_CODE | SEC_READONLY)) != 0)
 		    h->plt.refcount = 1;
+
+		  if (htab->elf.target_os != is_solaris
+		      && h->pointer_equality_needed
+		      && h->type == STT_FUNC
+		      && eh->def_protected
+		      && !SYMBOL_DEFINED_NON_SHARED_P (h)
+		      && h->def_dynamic)
+		    {
+		      /* Disallow non-canonical reference to canonical
+			 protected function.  */
+		      _bfd_error_handler
+			/* xgettext:c-format */
+			(_("%pB: non-canonical reference to canonical "
+			   "protected function `%s' in %pB"),
+			 abfd, h->root.root.string,
+			 h->root.u.def.section->owner);
+		      bfd_set_error (bfd_error_bad_value);
+		      goto error_return;
+		    }
 		}
 	    }
 
-	  size_reloc = FALSE;
-do_size:
-	  if (NEED_DYNAMIC_RELOCATION_P (info, TRUE, h, sec, r_type,
-					 htab->pointer_r_type))
+	  size_reloc = false;
+	do_size:
+	  if (!no_dynreloc
+	      && NEED_DYNAMIC_RELOCATION_P (true, info, true, h, sec,
+					    r_type,
+					    htab->pointer_r_type))
 	    {
 	      struct elf_dyn_relocs *p;
 	      struct elf_dyn_relocs **head;
 
-	      /* We must copy these reloc types into the output file.
-		 Create a reloc section in dynobj and make room for
-		 this reloc.  */
-	      if (sreloc == NULL)
-		{
-		  sreloc = _bfd_elf_make_dynamic_reloc_section
-		    (sec, htab->elf.dynobj, ABI_64_P (abfd) ? 3 : 2,
-		     abfd, /*rela?*/ TRUE);
-
-		  if (sreloc == NULL)
-		    goto error_return;
-		}
-
 	      /* 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 +2997,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 +3015,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));
@@ -2294,11 +3030,28 @@ do_size:
 
 	      p->count += 1;
 	      /* Count size relocation as PC-relative relocation.  */
-	      if (X86_PCREL_TYPE_P (r_type) || size_reloc)
+	      if (X86_PCREL_TYPE_P (true, r_type) || size_reloc)
 		p->pc_count += 1;
 	    }
 	  break;
 
+	case R_X86_64_CODE_5_GOTPC32_TLSDESC:
+	case R_X86_64_CODE_6_GOTPC32_TLSDESC:
+	    {
+	      /* These relocations are added only for completeness and
+		 aren't be used.  */
+	      if (h)
+		name = h->root.root.string;
+	      else
+		name = bfd_elf_sym_name (abfd, symtab_hdr, isym,
+					 NULL);
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB: unsupported relocation %s against symbol `%s'"),
+		 abfd, x86_64_elf_howto_table[r_type].name, name);
+	    }
+	  break;
+
 	  /* This relocation describes the C++ object vtable hierarchy.
 	     Reconstruct it for later use during GC.  */
 	case R_X86_64_GNU_VTINHERIT:
@@ -2320,13 +3073,14 @@ do_size:
 
   if (elf_section_data (sec)->this_hdr.contents != contents)
     {
-      if (!converted && !info->keep_memory)
-	free (contents);
+      if (!converted)
+	_bfd_elf_munmap_section_contents (sec, contents);
       else
 	{
 	  /* Cache the section contents for elf_link_input_bfd if any
 	     load is converted or --no-keep-memory isn't used.  */
 	  elf_section_data (sec)->this_hdr.contents = contents;
+	  info->cache_size += sec->size;
 	}
     }
 
@@ -2334,13 +3088,30 @@ do_size:
   if (elf_section_data (sec)->relocs != relocs && converted)
     elf_section_data (sec)->relocs = (Elf_Internal_Rela *) relocs;
 
-  return TRUE;
+  return true;
 
-error_return:
+ error_return:
   if (elf_section_data (sec)->this_hdr.contents != contents)
-    free (contents);
+    _bfd_elf_munmap_section_contents (sec, contents);
   sec->check_relocs_failed = 1;
-  return FALSE;
+  return false;
+}
+
+static bool
+elf_x86_64_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
+{
+  bfd *abfd;
+
+  /* Scan relocations after rel_from_abs has been set on __ehdr_start.  */
+  for (abfd = info->input_bfds;
+       abfd != (bfd *) NULL;
+       abfd = abfd->link.next)
+    if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+	&& !_bfd_elf_link_iterate_on_relocs (abfd, info,
+					     elf_x86_64_scan_relocs))
+      return false;
+
+  return _bfd_x86_elf_early_size_sections (output_bfd, info);
 }
 
 /* Return the relocation value for @tpoff relocation
@@ -2364,7 +3135,7 @@ elf_x86_64_tpoff (struct bfd_link_info *
 
 /* Relocate an x86_64 ELF section.  */
 
-static bfd_boolean
+static int
 elf_x86_64_relocate_section (bfd *output_bfd,
 			     struct bfd_link_info *info,
 			     bfd *input_bfd,
@@ -2383,19 +3154,20 @@ elf_x86_64_relocate_section (bfd *output
   Elf_Internal_Rela *wrel;
   Elf_Internal_Rela *relend;
   unsigned int plt_entry_size;
+  bool status;
 
-  /* Skip if check_relocs failed.  */
+  /* Skip if check_relocs or scan_relocs failed.  */
   if (input_section->check_relocs_failed)
-    return FALSE;
+    return false;
 
   htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (!is_x86_elf (input_bfd, htab))
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   plt_entry_size = htab->plt.plt_entry_size;
@@ -2406,6 +3178,7 @@ elf_x86_64_relocate_section (bfd *output
 
   _bfd_x86_elf_set_tls_module_base (info);
 
+  status = true;
   rel = wrel = relocs;
   relend = relocs + input_section->reloc_count;
   for (; rel < relend; wrel++, rel++)
@@ -2419,16 +3192,16 @@ elf_x86_64_relocate_section (bfd *output
       asection *sec;
       bfd_vma off, offplt, plt_offset;
       bfd_vma relocation;
-      bfd_boolean unresolved_reloc;
+      bool unresolved_reloc;
       bfd_reloc_status_type r;
       int tls_type;
       asection *base_got, *resolved_plt;
       bfd_vma st_size;
-      bfd_boolean resolved_to_zero;
-      bfd_boolean relative_reloc;
-      bfd_boolean converted_reloc;
-      bfd_boolean need_copy_reloc_in_pie;
-      bfd_boolean no_copyreloc_p;
+      bool resolved_to_zero;
+      bool relative_reloc;
+      bool converted_reloc;
+      bool need_copy_reloc_in_pie;
+      bool no_copyreloc_p;
 
       r_type = ELF32_R_TYPE (rel->r_info);
       if (r_type == (int) R_X86_64_GNU_VTINHERIT
@@ -2454,7 +3227,7 @@ elf_x86_64_relocate_section (bfd *output
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -2469,7 +3242,7 @@ elf_x86_64_relocate_section (bfd *output
 	      && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
 	    {
 	      h = _bfd_elf_x86_get_local_sym_hash (htab, input_bfd,
-						   rel, FALSE);
+						   rel, false);
 	      if (h == NULL)
 		abort ();
 
@@ -2480,8 +3253,8 @@ elf_x86_64_relocate_section (bfd *output
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2499,10 +3272,14 @@ elf_x86_64_relocate_section (bfd *output
 	  wrel->r_addend = 0;
 
 	  /* For ld -r, remove relocations in debug sections against
-	     sections defined in discarded sections.  Not done for
-	     eh_frame editing code expects to be present.  */
+	     sections defined in discarded sections, including sframe
+	     sections.  Not done for eh_frame editing code expects to
+	     be present.  NB: Since sframe code keeps R_X86_64_NONE
+	     reloc as is, its r_offset is wrong, we must not generate
+	     R_X86_64_NONE reloc in sframe section.  */
 	   if (bfd_link_relocatable (info)
-	       && (input_section->flags & SEC_DEBUGGING))
+	       && ((input_section->flags & SEC_DEBUGGING) != 0
+		   || elf_section_type (input_section) == SHT_GNU_SFRAME))
 	     wrel--;
 
 	  continue;
@@ -2566,6 +3343,9 @@ elf_x86_64_relocate_section (bfd *output
 	    case R_X86_64_GOTPCREL:
 	    case R_X86_64_GOTPCRELX:
 	    case R_X86_64_REX_GOTPCRELX:
+	    case R_X86_64_CODE_4_GOTPCRELX:
+	    case R_X86_64_CODE_5_GOTPCRELX:
+	    case R_X86_64_CODE_6_GOTPCRELX:
 	    case R_X86_64_GOTPCREL64:
 	      base_got = htab->elf.sgot;
 	      off = h->got.offset;
@@ -2663,7 +3443,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
@@ -2675,7 +3455,7 @@ bad_ifunc_reloc:
 		   "symbol `%s' isn't supported"), input_bfd,
 		 howto->name, name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 
 	    case R_X86_64_32S:
 	      if (bfd_link_pic (info))
@@ -2687,7 +3467,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)
@@ -2701,7 +3481,7 @@ do_ifunc_pointer:
 		       "symbol `%s' has non-zero addend: %" PRId64),
 		     input_bfd, howto->name, name, (int64_t) rel->r_addend);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 
 	      /* Generate dynamic relcoation only when there is a
@@ -2737,6 +3517,11 @@ do_ifunc_pointer:
 		      outrel.r_addend = (h->root.u.def.value
 					 + h->root.u.def.section->output_section->vma
 					 + h->root.u.def.section->output_offset);
+
+		      if (htab->params->report_relative_reloc)
+			_bfd_x86_elf_link_report_relative_reloc
+			  (info, input_section, h, sym,
+			   "R_X86_64_IRELATIVE", &outrel);
 		    }
 		  else
 		    {
@@ -2765,15 +3550,13 @@ do_ifunc_pointer:
 		}
 	      /* FALLTHROUGH */
 	    case R_X86_64_PC32:
-	    case R_X86_64_PC32_BND:
 	    case R_X86_64_PC64:
 	    case R_X86_64_PLT32:
-	    case R_X86_64_PLT32_BND:
 	      goto do_relocation;
 	    }
 	}
 
-skip_ifunc:
+    skip_ifunc:
       resolved_to_zero = (eh != NULL
 			  && UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh));
 
@@ -2788,6 +3571,9 @@ skip_ifunc:
 	case R_X86_64_GOTPCREL:
 	case R_X86_64_GOTPCRELX:
 	case R_X86_64_REX_GOTPCRELX:
+	case R_X86_64_CODE_4_GOTPCRELX:
+	case R_X86_64_CODE_5_GOTPCRELX:
+	case R_X86_64_CODE_6_GOTPCRELX:
 	case R_X86_64_GOTPCREL64:
 	  /* Use global offset table entry as symbol value.  */
 	case R_X86_64_GOTPLT64:
@@ -2797,7 +3583,7 @@ skip_ifunc:
 	  if (htab->elf.sgot == NULL)
 	    abort ();
 
-	  relative_reloc = FALSE;
+	  relative_reloc = false;
 	  if (h != NULL)
 	    {
 	      off = h->got.offset;
@@ -2835,17 +3621,20 @@ skip_ifunc:
 			 as -1 | 1 still is -1.  */
 		      h->got.offset |= 1;
 
-		      if (GENERATE_RELATIVE_RELOC_P (info, h))
+		      /* NB: Don't generate relative relocation here if
+			 it has been generated by DT_RELR.  */
+		      if (!info->enable_dt_relr
+			  && GENERATE_RELATIVE_RELOC_P (info, h))
 			{
 			  /* If this symbol isn't dynamic in PIC,
 			     generate R_X86_64_RELATIVE here.  */
 			  eh->no_finish_dynamic_symbol = 1;
-			  relative_reloc = TRUE;
+			  relative_reloc = true;
 			}
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -2865,8 +3654,21 @@ skip_ifunc:
 			      base_got->contents + off);
 		  local_got_offsets[r_symndx] |= 1;
 
-		  if (bfd_link_pic (info))
-		    relative_reloc = TRUE;
+		  /* NB: GOTPCREL relocations against local absolute
+		     symbol store relocation value in the GOT slot
+		     without relative relocation.  Don't generate
+		     relative relocation here if it has been generated
+		     by DT_RELR.  */
+		  if (!info->enable_dt_relr
+		      && 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
+			       || r_type == R_X86_64_CODE_4_GOTPCRELX
+			       || r_type == R_X86_64_CODE_5_GOTPCRELX
+			       || r_type == R_X86_64_CODE_6_GOTPCRELX)))
+		    relative_reloc = true;
 		}
 	    }
 
@@ -2886,6 +3688,12 @@ skip_ifunc:
 				 + off);
 	      outrel.r_info = htab->r_info (0, R_X86_64_RELATIVE);
 	      outrel.r_addend = relocation;
+
+	      if (htab->params->report_relative_reloc)
+		_bfd_x86_elf_link_report_relative_reloc
+		  (info, input_section, h, sym, "R_X86_64_RELATIVE",
+		   &outrel);
+
 	      elf_append_rela (output_bfd, s, &outrel);
 	    }
 
@@ -2897,6 +3705,9 @@ skip_ifunc:
 	  if (r_type != R_X86_64_GOTPCREL
 	      && r_type != R_X86_64_GOTPCRELX
 	      && r_type != R_X86_64_REX_GOTPCRELX
+	      && r_type != R_X86_64_CODE_4_GOTPCRELX
+	      && r_type != R_X86_64_CODE_5_GOTPCRELX
+	      && r_type != R_X86_64_CODE_6_GOTPCRELX
 	      && r_type != R_X86_64_GOTPCREL64)
 	    relocation -= htab->elf.sgotplt->output_section->vma
 			  - htab->elf.sgotplt->output_offset;
@@ -2939,7 +3750,7 @@ skip_ifunc:
 		       " `%s' can not be used when making a shared object"),
 		     input_bfd, v, h->root.root.string);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	      else if (!bfd_link_executable (info)
 		       && !SYMBOL_REFERENCES_LOCAL_P (info, h)
@@ -2955,7 +3766,7 @@ skip_ifunc:
 		     h->type == STT_FUNC ? "function" : "data",
 		     h->root.root.string);
 		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
+		  return false;
 		}
 	    }
 
@@ -2973,7 +3784,7 @@ skip_ifunc:
 	  /* Use global offset table as symbol value.  */
 	  relocation = htab->elf.sgotplt->output_section->vma
 		       + htab->elf.sgotplt->output_offset;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_X86_64_PLTOFF64:
@@ -3005,7 +3816,7 @@ skip_ifunc:
 	      relocation = (resolved_plt->output_section->vma
 			    + resolved_plt->output_offset
 			    + plt_offset);
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	    }
 
 	  relocation -= htab->elf.sgotplt->output_section->vma
@@ -3013,7 +3824,6 @@ skip_ifunc:
 	  break;
 
 	case R_X86_64_PLT32:
-	case R_X86_64_PLT32_BND:
 	  /* Relocation is to the entry for this symbol in the
 	     procedure linkage table.  */
 
@@ -3032,7 +3842,7 @@ skip_ifunc:
 	      break;
 	    }
 
-use_plt:
+	use_plt:
 	  if (h->plt.offset != (bfd_vma) -1)
 	    {
 	      if (htab->plt_second != NULL)
@@ -3056,7 +3866,7 @@ use_plt:
 	  relocation = (resolved_plt->output_section->vma
 			+ resolved_plt->output_offset
 			+ plt_offset);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_X86_64_SIZE32:
@@ -3068,7 +3878,6 @@ use_plt:
 	case R_X86_64_PC8:
 	case R_X86_64_PC16:
 	case R_X86_64_PC32:
-	case R_X86_64_PC32_BND:
 	  /* Don't complain about -fPIC if the symbol is undefined when
 	     building executable unless it is unresolved weak symbol,
 	     references a dynamic definition in PIE or -z nocopyreloc
@@ -3078,8 +3887,7 @@ use_plt:
 	       || (h != NULL
 		   && !h->root.linker_def
 		   && !h->root.ldscript_def
-		   && eh->def_protected
-		   && elf_has_no_copy_on_protected (h->root.u.def.section->owner)));
+		   && eh->def_protected));
 
 	  if ((input_section->flags & SEC_ALLOC) != 0
 	      && (input_section->flags & SEC_READONLY) != 0
@@ -3095,9 +3903,11 @@ use_plt:
 		       || (no_copyreloc_p
 			   && h->def_dynamic
 			   && !(h->root.u.def.section->flags & SEC_CODE))))
+		  || (bfd_link_pie (info)
+		      && h->root.type == bfd_link_hash_undefweak)
 		  || bfd_link_dll (info)))
 	    {
-	      bfd_boolean fail = FALSE;
+	      bool fail = false;
 	      if (SYMBOL_REFERENCES_LOCAL_P (info, h))
 		{
 		  /* Symbol is referenced locally.  Make sure it is
@@ -3108,9 +3918,10 @@ use_plt:
 		{
 		  /* We can only use PC-relative relocations in PIE
 		     from non-code sections.  */
-		  if (h->type == STT_FUNC
-		      && (sec->flags & SEC_CODE) != 0)
-		    fail = TRUE;
+		  if (h->root.type == bfd_link_hash_undefweak
+		      || (h->type == STT_FUNC
+			  && (sec->flags & SEC_CODE) != 0))
+		    fail = true;
 		}
 	      else if (no_copyreloc_p || bfd_link_dll (info))
 		{
@@ -3147,7 +3958,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;
 
@@ -3157,30 +3968,33 @@ direct:
 					|| eh->needs_copy
 					|| (h->root.type
 					    == bfd_link_hash_undefined))
-				    && (X86_PCREL_TYPE_P (r_type)
-					|| X86_SIZE_TYPE_P (r_type)));
+				    && (X86_PCREL_TYPE_P (true, r_type)
+					|| X86_SIZE_TYPE_P (true,
+							    r_type)));
 
-	  if (GENERATE_DYNAMIC_RELOCATION_P (info, eh, r_type,
+	  if (GENERATE_DYNAMIC_RELOCATION_P (true, info, eh, r_type, sec,
 					     need_copy_reloc_in_pie,
-					     resolved_to_zero, FALSE))
+					     resolved_to_zero, false))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate;
+	      bool skip, relocate;
+	      bool generate_dynamic_reloc = true;
 	      asection *sreloc;
+	      const char *relative_reloc_name = NULL;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
 		 time.	*/
-	      skip = FALSE;
-	      relocate = FALSE;
+	      skip = false;
+	      relocate = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
@@ -3188,7 +4002,7 @@ direct:
 	      if (skip)
 		memset (&outrel, 0, sizeof outrel);
 
-	      else if (COPY_INPUT_RELOC_P (info, h, r_type))
+	      else if (COPY_INPUT_RELOC_P (true, info, h, r_type))
 		{
 		  outrel.r_info = htab->r_info (h->dynindx, r_type);
 		  outrel.r_addend = rel->r_addend;
@@ -3202,17 +4016,27 @@ direct:
 		      || (r_type == R_X86_64_32
 			  && htab->params->no_reloc_overflow_check))
 		    {
-		      relocate = TRUE;
-		      outrel.r_info = htab->r_info (0, R_X86_64_RELATIVE);
-		      outrel.r_addend = relocation + rel->r_addend;
+		      relocate = true;
+		      /* NB: Don't generate relative relocation here if
+			 it has been generated by DT_RELR.  */
+		      if (info->enable_dt_relr)
+			generate_dynamic_reloc = false;
+		      else
+			{
+			  outrel.r_info =
+			    htab->r_info (0, R_X86_64_RELATIVE);
+			  outrel.r_addend = relocation + rel->r_addend;
+			  relative_reloc_name = "R_X86_64_RELATIVE";
+			}
 		    }
 		  else if (r_type == R_X86_64_64
 			   && !ABI_64_P (output_bfd))
 		    {
-		      relocate = TRUE;
+		      relocate = true;
 		      outrel.r_info = htab->r_info (0,
 						    R_X86_64_RELATIVE64);
 		      outrel.r_addend = relocation + rel->r_addend;
+		      relative_reloc_name = "R_X86_64_RELATIVE64";
 		      /* Check addend overflow.  */
 		      if ((outrel.r_addend & 0x80000000)
 			  != (rel->r_addend & 0x80000000))
@@ -3233,7 +4057,7 @@ direct:
 			     howto->name, name, (uint64_t) rel->r_offset,
 			     input_section);
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		    }
 		  else
@@ -3245,7 +4069,7 @@ direct:
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -3271,15 +4095,24 @@ direct:
 		    }
 		}
 
-	      sreloc = elf_section_data (input_section)->sreloc;
-
-	      if (sreloc == NULL || sreloc->contents == NULL)
+	      if (generate_dynamic_reloc)
 		{
-		  r = bfd_reloc_notsupported;
-		  goto check_relocation_error;
-		}
+		  sreloc = elf_section_data (input_section)->sreloc;
 
-	      elf_append_rela (output_bfd, sreloc, &outrel);
+		  if (sreloc == NULL || sreloc->contents == NULL)
+		    {
+		      r = bfd_reloc_notsupported;
+		      goto check_relocation_error;
+		    }
+
+		  if (relative_reloc_name
+		      && htab->params->report_relative_reloc)
+		    _bfd_x86_elf_link_report_relative_reloc
+		      (info, input_section, h, sym,
+		       relative_reloc_name, &outrel);
+
+		  elf_append_rela (output_bfd, sreloc, &outrel);
+		}
 
 	      /* If this reloc is against an external symbol, we do
 		 not want to fiddle with the addend.  Otherwise, we
@@ -3293,8 +4126,12 @@ direct:
 
 	case R_X86_64_TLSGD:
 	case R_X86_64_GOTPC32_TLSDESC:
+	case R_X86_64_CODE_4_GOTPC32_TLSDESC:
 	case R_X86_64_TLSDESC_CALL:
 	case R_X86_64_GOTTPOFF:
+	case R_X86_64_CODE_4_GOTTPOFF:
+	case R_X86_64_CODE_5_GOTTPOFF:
+	case R_X86_64_CODE_6_GOTTPOFF:
 	  tls_type = GOT_UNKNOWN;
 	  if (h == NULL && local_got_offsets)
 	    tls_type = elf_x86_local_got_tls_type (input_bfd) [r_symndx];
@@ -3306,13 +4143,16 @@ direct:
 					   input_section, contents,
 					   symtab_hdr, sym_hashes,
 					   &r_type_tls, tls_type, rel,
-					   relend, h, r_symndx, TRUE))
-	    return FALSE;
+					   relend, h, sym, true))
+	    return false;
 
 	  if (r_type_tls == R_X86_64_TPOFF32)
 	    {
 	      bfd_vma roff = rel->r_offset;
 
+	      if (roff >= input_section->size)
+		goto corrupt_input;
+
 	      BFD_ASSERT (! unresolved_reloc);
 
 	      if (r_type == R_X86_64_TLSGD)
@@ -3353,16 +4193,18 @@ direct:
 		  int largepic = 0;
 		  if (ABI_64_P (output_bfd))
 		    {
+		      if (roff + 5 >= input_section->size)
+			goto corrupt_input;
 		      if (contents[roff + 5] == 0xb8)
 			{
 			  if (roff < 3
 			      || (roff - 3 + 22) > input_section->size)
 			    {
-corrupt_input:
-			      info->callbacks->einfo
-				(_("%F%P: corrupt input: %pB\n"),
+			    corrupt_input:
+			      info->callbacks->fatal
+				(_("%P: corrupt input: %pB\n"),
 				 input_bfd);
-			      return FALSE;
+			      return false;
 			    }
 			  memcpy (contents + roff - 3,
 				  "\x64\x48\x8b\x04\x25\0\0\0\0\x48\x8d\x80"
@@ -3388,6 +4230,10 @@ corrupt_input:
 			      "\x64\x8b\x04\x25\0\0\0\0\x48\x8d\x80\0\0\0",
 			      15);
 		    }
+
+		  if (roff + 8 + largepic >= input_section->size)
+		    goto corrupt_input;
+
 		  bfd_put_32 (output_bfd,
 			      elf_x86_64_tpoff (info, relocation),
 			      contents + roff + 8 + largepic);
@@ -3401,10 +4247,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 +4261,39 @@ 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),
+			     contents + roff - 1);
+		  bfd_put_32 (output_bfd,
+			      elf_x86_64_tpoff (info, relocation),
+			      contents + roff);
+		  continue;
+		}
+	      else if (r_type == R_X86_64_CODE_4_GOTPC32_TLSDESC)
+		{
+		  /* GDesc -> LE transition.
+		     It's originally something like:
+		     lea x@tlsdesc(%rip), %reg
+
+		     Change it to:
+		     mov $x@tpoff, %reg
+		     where reg is one of r16 to r31.  */
+
+		  unsigned int val, rex2;
+		  unsigned int rex2_mask = REX_R | REX_R << 4;
+
+		  if (roff < 4)
+		    goto corrupt_input;
+		  rex2 = bfd_get_8 (input_bfd, contents + roff - 3);
+		  val = bfd_get_8 (input_bfd, contents + roff - 1);
+		  /* Move the R bits to the B bits in REX2 payload
+		     byte.  */
+		  bfd_put_8 (output_bfd,
+			     ((rex2 & ~rex2_mask)
+			      | (rex2 & rex2_mask) >> 2),
 			     contents + roff - 3);
 		  bfd_put_8 (output_bfd, 0xc7, contents + roff - 2);
 		  bfd_put_8 (output_bfd, 0xc0 | ((val >> 3) & 7),
@@ -3426,11 +4307,36 @@ 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@tlscall(%eax).  */
+		      if (contents[roff] == 0x67)
+			prefix = 1;
+		    }
+		  if (prefix)
+		    {
+		      if (roff + 2 >= input_section->size)
+			goto corrupt_input;
+
+		      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
+		    {
+		      if (roff + 1 >= input_section->size)
+			goto corrupt_input;
+
+		      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)
@@ -3536,8 +4442,150 @@ corrupt_input:
 			      contents + roff);
 		  continue;
 		}
+	      else if (r_type == R_X86_64_CODE_4_GOTTPOFF)
+		{
+		  /* IE->LE transition:
+		     Originally it can be one of:
+		     mov foo@gottpoff(%rip), %reg
+		     add foo@gottpoff(%rip), %reg
+		     movrs foo@gottpoff(%rip), %reg
+		     We change it into:
+		     mov $foo@tpoff, %reg
+		     add $foo@tpoff, %reg
+		     where reg is one of r16 to r31, except for MOVRS, where
+		     it's not one of r8 to r31 and no REX byte is present.  */
+
+		  unsigned int rex2, type, reg;
+		  unsigned int rex2_mask = REX_R | REX_R << 4;
+
+		  if (roff < 4)
+		    goto corrupt_input;
+
+		  rex2 = bfd_get_8 (input_bfd, contents + roff - 3);
+		  type = bfd_get_8 (input_bfd, contents + roff - 2);
+		  reg = bfd_get_8 (input_bfd, contents + roff - 1);
+		  reg >>= 3;
+		  /* Move the R bits to the B bits in REX2 payload
+		     byte.  */
+		  if (type == 0x8b)
+		    {
+		      /* For MOVRS emit meaningless CS prefixes.  */
+		      if (bfd_get_8 (input_bfd, contents + roff - 4) == 0x0f)
+			{
+			  bfd_put_8 (output_bfd, 0x2e, contents + roff - 4);
+			  rex2 = 0x2e;
+			  rex2_mask = 0;
+			}
+		      type = 0xc7;
+		    }
+		  else
+		    type = 0x81;
+		  bfd_put_8 (output_bfd,
+			     ((rex2 & ~rex2_mask)
+			      | (rex2 & rex2_mask) >> 2),
+			     contents + roff - 3);
+		  bfd_put_8 (output_bfd, type,
+			     contents + roff - 2);
+		  bfd_put_8 (output_bfd, 0xc0 | reg,
+			     contents + roff - 1);
+		  bfd_put_32 (output_bfd,
+			      elf_x86_64_tpoff (info, relocation),
+			      contents + roff);
+		  continue;
+		}
+	      else if (r_type == R_X86_64_CODE_5_GOTTPOFF)
+		{
+		  /* IE->LE transition:
+		     Originally it is
+		     movrs foo@gottpoff(%rip), %reg
+		     We change it into:
+		     mov $foo@tpoff, %reg
+		     where reg isn't one of r16 to r31, but a REX
+		     byte is present.  */
+		  unsigned int rex = bfd_get_8 (input_bfd, contents + roff - 5);
+
+		  /* Move REX.R to REX.B.  */
+		  rex = (rex & ~(REX_R | REX_B))
+			| ((rex & REX_R) / (REX_R / REX_B));
+
+		  unsigned int reg = bfd_get_8 (input_bfd, contents + roff - 1);
+		  reg >>= 3;
+
+		  /* Replace 0f38 by meaningless CS prefixes, shifting the REX
+		     prefix forward.  */
+		  bfd_put_8 (output_bfd, 0x2e, contents + roff - 5);
+		  bfd_put_8 (output_bfd, 0x2e, contents + roff - 4);
+		  bfd_put_8 (output_bfd, rex, contents + roff - 3);
+		  bfd_put_8 (output_bfd, 0xc7, contents + roff - 2);
+		  bfd_put_8 (output_bfd, 0xc0 | reg, contents + roff - 1);
+
+		  bfd_put_32 (output_bfd,
+			      elf_x86_64_tpoff (info, relocation),
+			      contents + roff);
+		  continue;
+		}
+	      else if (r_type == R_X86_64_CODE_6_GOTTPOFF)
+		{
+		  /* IE->LE transition:
+		     Originally it is
+		     add %reg1, foo@gottpoff(%rip), %reg2
+		     or
+		     add foo@gottpoff(%rip), %reg1, %reg2
+		     or
+		     movrs foo@gottpoff(%rip), %reg
+		     We change it into:
+		     add $foo@tpoff, %reg1, %reg2
+		     mov $foo@tpoff, %reg
+		     where reg is one of r16 to r31.  */
+		  unsigned int type, reg, byte1;
+
+		  if (roff < 6)
+		    goto corrupt_input;
+
+		  byte1 = bfd_get_8 (input_bfd, contents + roff - 5);
+		  type = bfd_get_8 (input_bfd, contents + roff - 2);
+		  reg = bfd_get_8 (input_bfd, contents + roff - 1);
+		  reg >>= 3;
+
+		  if (type == 0x8b)
+		    {
+		      /* Convert MOVRS to REX2-encoded MOV.  */
+		      unsigned int rex2 = 0;
+
+		      /* Move the EVEX R bits to the REX2 B ones.  */
+		      if (!(byte1 & (1 << 7)))
+			rex2 |= REX_B;
+		      if (!(byte1 & (1 << 4)))
+			rex2 |= REX_B << 4;
+		      /* Propagate the EVEX W bit to the REX2 one.  */
+		      type = bfd_get_8 (input_bfd, contents + roff - 4);
+		      if (type & (1 << 7))
+			rex2 |= REX_W;
+
+
+		      bfd_put_8 (output_bfd, 0x2e, contents + roff - 6);
+		      bfd_put_8 (output_bfd, 0x2e, contents + roff - 5);
+		      bfd_put_8 (output_bfd, 0xd5, contents + roff - 4);
+		      bfd_put_8 (output_bfd, rex2, contents + roff - 3);
+		      bfd_put_8 (output_bfd, 0xc7, contents + roff - 2);
+		      bfd_put_8 (output_bfd, 0xc0 | reg, contents + roff - 1);
+		      bfd_put_32 (output_bfd,
+				  elf_x86_64_tpoff (info, relocation),
+				  contents + roff);
+		      continue;
+		    }
+
+		  byte1 = evex_move_r_to_b (byte1, false);
+		  bfd_put_8 (output_bfd, byte1, contents + roff - 5);
+		  bfd_put_8 (output_bfd, 0x81, contents + roff - 2);
+		  bfd_put_8 (output_bfd, 0xc0 | reg, contents + roff - 1);
+		  bfd_put_32 (output_bfd,
+			      elf_x86_64_tpoff (info, relocation),
+			      contents + roff);
+		  continue;
+		}
 	      else
-		BFD_ASSERT (FALSE);
+		BFD_ASSERT (false);
 	    }
 
 	  if (htab->elf.sgot == NULL)
@@ -3579,7 +4627,7 @@ corrupt_input:
 				     + htab->elf.sgotplt->output_offset
 				     + offplt
 				     + htab->sgotplt_jump_table_size);
-		  sreloc = htab->elf.srelplt;
+		  sreloc = htab->rel_tls_desc;
 		  if (indx == 0)
 		    outrel.r_addend = relocation - _bfd_x86_elf_dtpoff_base (info);
 		  else
@@ -3642,6 +4690,7 @@ corrupt_input:
 	  if (r_type_tls == r_type)
 	    {
 	      if (r_type == R_X86_64_GOTPC32_TLSDESC
+		  || r_type == R_X86_64_CODE_4_GOTPC32_TLSDESC
 		  || r_type == R_X86_64_TLSDESC_CALL)
 		relocation = htab->elf.sgotplt->output_section->vma
 		  + htab->elf.sgotplt->output_offset
@@ -3649,7 +4698,7 @@ corrupt_input:
 	      else
 		relocation = htab->elf.sgot->output_section->vma
 		  + htab->elf.sgot->output_offset + off;
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -3737,17 +4786,23 @@ corrupt_input:
 		  wrel++;
 		  continue;
 		}
-	      else if (r_type == R_X86_64_GOTPC32_TLSDESC)
+	      else if (r_type == R_X86_64_GOTPC32_TLSDESC
+		       || r_type == R_X86_64_CODE_4_GOTPC32_TLSDESC)
 		{
 		  /* 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,17 +4823,36 @@ 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@tlscall(%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
-		BFD_ASSERT (FALSE);
+		BFD_ASSERT (false);
 	    }
 	  break;
 
@@ -3787,8 +4861,8 @@ corrupt_input:
 					   input_section, contents,
 					   symtab_hdr, sym_hashes,
 					   &r_type, GOT_UNKNOWN, rel,
-					   relend, h, r_symndx, TRUE))
-	    return FALSE;
+					   relend, h, sym, true))
+	    return false;
 
 	  if (r_type != R_X86_64_TLSLD)
 	    {
@@ -3908,7 +4982,7 @@ corrupt_input:
 	    }
 	  relocation = htab->elf.sgot->output_section->vma
 		       + htab->elf.sgot->output_offset + off;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_X86_64_DTPOFF32:
@@ -3947,9 +5021,7 @@ corrupt_input:
 	    {
 	    case R_X86_64_32S:
 	      sec = h->root.u.def.section;
-	      if ((info->nocopyreloc
-		   || (eh->def_protected
-		       && elf_has_no_copy_on_protected (h->root.u.def.section->owner)))
+	      if ((info->nocopyreloc || eh->def_protected)
 		  && !(h->root.u.def.section->flags & SEC_CODE))
 		return elf_x86_64_need_pic (info, input_bfd, input_section,
 					    h, NULL, NULL, howto);
@@ -3965,16 +5037,16 @@ corrupt_input:
 		 (uint64_t) rel->r_offset,
 		 howto->name,
 		 h->root.root.string);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
-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;
@@ -3987,7 +5059,7 @@ check_relocation_error:
 						      symtab_hdr->sh_link,
 						      sym->st_name);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      if (*name == '\0')
 		name = bfd_section_name (sec);
 	    }
@@ -3997,8 +5069,13 @@ check_relocation_error:
 	      if (converted_reloc)
 		{
 		  info->callbacks->einfo
-		    (_("%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"));
-		  return FALSE;
+		    ("%X%H:", input_bfd, input_section, rel->r_offset);
+		  info->callbacks->einfo
+		    (_(" failed to convert GOTPCREL relocation against "
+		       "'%s'; relink with --no-relax\n"),
+		     name);
+		  status = false;
+		  continue;
 		}
 	      (*info->callbacks->reloc_overflow)
 		(info, (h ? &h->root : NULL), name, howto->name,
@@ -4011,7 +5088,7 @@ check_relocation_error:
 		(_("%pB(%pA+%#" PRIx64 "): reloc against `%s': error %d"),
 		 input_bfd, input_section,
 		 (uint64_t) rel->r_offset, name, (int) r);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -4026,39 +5103,29 @@ check_relocation_error:
 
       rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section);
       rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
-      if (rel_hdr->sh_size == 0)
-	{
-	  /* It is too late to remove an empty reloc section.  Leave
-	     one NONE reloc.
-	     ??? What is wrong with an empty section???  */
-	  rel_hdr->sh_size = rel_hdr->sh_entsize;
-	  deleted -= 1;
-	}
       rel_hdr = _bfd_elf_single_rel_hdr (input_section);
       rel_hdr->sh_size -= rel_hdr->sh_entsize * deleted;
       input_section->reloc_count -= deleted;
     }
 
-  return TRUE;
+  return status;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
 				  struct bfd_link_info *info,
 				  struct elf_link_hash_entry *h,
 				  Elf_Internal_Sym *sym)
 {
   struct elf_x86_link_hash_table *htab;
-  bfd_boolean use_plt_second;
+  bool use_plt_second;
   struct elf_x86_link_hash_entry *eh;
-  bfd_boolean local_undefweak;
+  bool local_undefweak;
 
   htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
-  if (htab == NULL)
-    return FALSE;
 
   /* Use the second PLT section only if there is .plt section.  */
   use_plt_second = htab->elf.splt != NULL && htab->plt_second != NULL;
@@ -4155,7 +5222,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
       /* Check PC-relative offset overflow in PLT entry.  */
       if ((plt_got_pcrel_offset + 0x80000000) > 0xffffffff)
 	/* xgettext:c-format */
-	info->callbacks->einfo (_("%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
+	info->callbacks->fatal (_("%pB: PC-relative offset overflow in PLT entry for `%s'\n"),
 				output_bfd, h->root.root.string);
 
       bfd_put_32 (output_bfd, plt_got_pcrel_offset,
@@ -4181,6 +5248,9 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
 			   + got_offset);
 	  if (PLT_LOCAL_IFUNC_P (info, h))
 	    {
+	      if (h->root.u.def.section == NULL)
+		return false;
+
 	      info->callbacks->minfo (_("Local IFUNC function `%s' in %pB\n"),
 				      h->root.root.string,
 				      h->root.u.def.section->owner);
@@ -4191,13 +5261,23 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
 	      rela.r_addend = (h->root.u.def.value
 			       + h->root.u.def.section->output_section->vma
 			       + h->root.u.def.section->output_offset);
+
+	      if (htab->params->report_relative_reloc)
+		_bfd_x86_elf_link_report_relative_reloc
+		  (info, relplt, h, sym, "R_X86_64_IRELATIVE", &rela);
+
 	      /* R_X86_64_IRELATIVE comes last.  */
 	      plt_index = htab->next_irelative_index--;
 	    }
 	  else
 	    {
 	      rela.r_info = htab->r_info (h->dynindx, R_X86_64_JUMP_SLOT);
-	      rela.r_addend = 0;
+	      if (htab->params->mark_plt)
+		rela.r_addend = (resolved_plt->output_section->vma
+				 + plt_offset
+				 + htab->plt.plt_indirect_branch_offset);
+	      else
+		rela.r_addend = 0;
 	      plt_index = htab->next_jump_slot_index++;
 	    }
 
@@ -4218,7 +5298,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
 		 will overflow first.  */
 	      if (plt0_offset > 0x80000000)
 		/* xgettext:c-format */
-		info->callbacks->einfo (_("%F%pB: branch displacement overflow in PLT entry for `%s'\n"),
+		info->callbacks->fatal (_("%pB: branch displacement overflow in PLT entry for `%s'\n"),
 					output_bfd, h->root.root.string);
 	      bfd_put_32 (output_bfd, - plt0_offset,
 			  (plt->contents + h->plt.offset
@@ -4234,7 +5314,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
     {
       bfd_vma got_offset, plt_offset;
       asection *plt, *got;
-      bfd_boolean got_after_plt;
+      bool got_after_plt;
       int32_t got_pcrel_offset;
 
       /* Set the entry in the GOT procedure linkage table.  */
@@ -4271,7 +5351,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
       if ((got_after_plt && got_pcrel_offset < 0)
 	  || (!got_after_plt && got_pcrel_offset > 0))
 	/* xgettext:c-format */
-	info->callbacks->einfo (_("%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
+	info->callbacks->fatal (_("%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"),
 				output_bfd, h->root.root.string);
 
       bfd_put_32 (output_bfd, got_pcrel_offset,
@@ -4308,6 +5388,8 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
     {
       Elf_Internal_Rela rela;
       asection *relgot = htab->elf.srelgot;
+      const char *relative_reloc_name = NULL;
+      bool generate_dynamic_reloc = true;
 
       /* This symbol has an entry in the global offset table.  Set it
 	 up.  */
@@ -4337,6 +5419,9 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
 		}
 	      if (SYMBOL_REFERENCES_LOCAL_P (info, h))
 		{
+		  if (h->root.u.def.section == NULL)
+		    return false;
+
 		  info->callbacks->minfo (_("Local IFUNC function `%s' in %pB\n"),
 					  h->root.root.string,
 					  h->root.u.def.section->owner);
@@ -4346,6 +5431,7 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
 		  rela.r_addend = (h->root.u.def.value
 				   + h->root.u.def.section->output_section->vma
 				   + h->root.u.def.section->output_offset);
+		  relative_reloc_name = "R_X86_64_IRELATIVE";
 		}
 	      else
 		goto do_glob_dat;
@@ -4380,31 +5466,54 @@ elf_x86_64_finish_dynamic_symbol (bfd *o
 				       + plt->output_offset
 				       + plt_offset),
 			  htab->elf.sgot->contents + h->got.offset);
-	      return TRUE;
+	      return true;
 	    }
 	}
       else if (bfd_link_pic (info)
 	       && SYMBOL_REFERENCES_LOCAL_P (info, h))
 	{
 	  if (!SYMBOL_DEFINED_NON_SHARED_P (h))
-	    return FALSE;
+	    return false;
 	  BFD_ASSERT((h->got.offset & 1) != 0);
-	  rela.r_info = htab->r_info (0, R_X86_64_RELATIVE);
-	  rela.r_addend = (h->root.u.def.value
-			   + h->root.u.def.section->output_section->vma
-			   + h->root.u.def.section->output_offset);
+	  if (info->enable_dt_relr)
+	    generate_dynamic_reloc = false;
+	  else
+	    {
+	      rela.r_info = htab->r_info (0, R_X86_64_RELATIVE);
+	      rela.r_addend = (h->root.u.def.value
+			       + h->root.u.def.section->output_section->vma
+			       + h->root.u.def.section->output_offset);
+	      relative_reloc_name = "R_X86_64_RELATIVE";
+	    }
 	}
       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);
 	  rela.r_addend = 0;
 	}
 
-      elf_append_rela (output_bfd, relgot, &rela);
+      if (generate_dynamic_reloc)
+	{
+	  /* If the relgot section has not been created, then
+	     generate an error instead of a reloc.  cf PR 32638.  */
+	  if (relgot == NULL || relgot->size == 0)
+	    {
+	      info->callbacks->fatal (_("%pB: Unable to generate dynamic relocs because a suitable section does not exist\n"),
+				      output_bfd);
+	      return false;
+	    }
+	  
+	  if (relative_reloc_name != NULL
+	      && htab->params->report_relative_reloc)
+	    _bfd_x86_elf_link_report_relative_reloc
+	      (info, relgot, h, sym, relative_reloc_name, &rela);
+
+	  elf_append_rela (output_bfd, relgot, &rela);
+	}
     }
 
   if (h->needs_copy)
@@ -4427,13 +5536,13 @@ do_glob_dat:
       elf_append_rela (output_bfd, s, &rela);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up local dynamic symbol handling.  We set the contents of
    various dynamic sections here.  */
 
-static bfd_boolean
+static int
 elf_x86_64_finish_local_dynamic_symbol (void **slot, void *inf)
 {
   struct elf_link_hash_entry *h
@@ -4449,7 +5558,7 @@ elf_x86_64_finish_local_dynamic_symbol (
    here since undefined weak symbol may not be dynamic and may not be
    called for elf_x86_64_finish_dynamic_symbol.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_pie_finish_undefweak_symbol (struct bfd_hash_entry *bh,
 					void *inf)
 {
@@ -4458,7 +5567,7 @@ elf_x86_64_pie_finish_undefweak_symbol (
 
   if (h->root.type != bfd_link_hash_undefweak
       || h->dynindx != -1)
-    return TRUE;
+    return true;
 
   return elf_x86_64_finish_dynamic_symbol (info->output_bfd,
 					   info, h, NULL);
@@ -4515,7 +5624,7 @@ elf_x86_64_reloc_type_class (const struc
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_finish_dynamic_sections (bfd *output_bfd,
 				    struct bfd_link_info *info)
 {
@@ -4523,13 +5632,21 @@ elf_x86_64_finish_dynamic_sections (bfd
 
   htab = _bfd_x86_elf_finish_dynamic_sections (output_bfd, info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   if (! htab->elf.dynamic_sections_created)
-    return TRUE;
+    return true;
 
   if (htab->elf.splt && htab->elf.splt->size > 0)
     {
+      if (bfd_is_abs_section (htab->elf.splt->output_section))
+	{
+	  info->callbacks->fatal
+	    (_("%P: discarded output section: `%pA'\n"),
+	     htab->elf.splt);
+	  return false;
+	}
+
       elf_section_data (htab->elf.splt->output_section)
 	->this_hdr.sh_entsize = htab->plt.plt_entry_size;
 
@@ -4565,12 +5682,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 +5700,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 +5711,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));
 	}
     }
@@ -4611,7 +5728,7 @@ elf_x86_64_finish_dynamic_sections (bfd
 		       elf_x86_64_pie_finish_undefweak_symbol,
 		       info);
 
-  return TRUE;
+  return true;
 }
 
 /* Fill PLT/GOT entries and allocate dynamic relocations for local
@@ -4619,7 +5736,7 @@ elf_x86_64_finish_dynamic_sections (bfd
    It has to be done before elf_link_sort_relocs is called so that
    dynamic relocations are properly sorted.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_output_arch_local_syms
   (bfd *output_bfd ATTRIBUTE_UNUSED,
    struct bfd_link_info *info,
@@ -4632,19 +5749,16 @@ elf_x86_64_output_arch_local_syms
   struct elf_x86_link_hash_table *htab
     = elf_x86_hash_table (info, X86_64_ELF_DATA);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Fill PLT and GOT entries for local STT_GNU_IFUNC symbols.  */
   htab_traverse (htab->loc_hash_table,
 		 elf_x86_64_finish_local_dynamic_symbol,
 		 info);
 
-  return TRUE;
+  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.   */
 
@@ -4664,6 +5778,8 @@ elf_x86_64_get_synthetic_symtab (bfd *ab
   const struct elf_x86_non_lazy_plt_layout *non_lazy_plt;
   const struct elf_x86_lazy_plt_layout *lazy_bnd_plt;
   const struct elf_x86_non_lazy_plt_layout *non_lazy_bnd_plt;
+  const struct elf_x86_lazy_plt_layout *lazy_bnd_ibt_plt;
+  const struct elf_x86_non_lazy_plt_layout *non_lazy_bnd_ibt_plt;
   const struct elf_x86_lazy_plt_layout *lazy_ibt_plt;
   const struct elf_x86_non_lazy_plt_layout *non_lazy_ibt_plt;
   asection *plt;
@@ -4689,50 +5805,37 @@ 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_ibt_plt = &elf_x86_64_lazy_ibt_plt;
+  non_lazy_ibt_plt = &elf_x86_64_non_lazy_ibt_plt;
+  if (ABI_64_P (abfd))
     {
-      lazy_plt = &elf_x86_64_lazy_plt;
-      non_lazy_plt = &elf_x86_64_non_lazy_plt;
+      lazy_bnd_ibt_plt = &elf_x86_64_lazy_bnd_ibt_plt;
+      non_lazy_bnd_ibt_plt = &elf_x86_64_non_lazy_bnd_ibt_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;
-	}
     }
   else
     {
-      lazy_plt = &elf_x86_64_nacl_plt;
-      non_lazy_plt = NULL;
+      lazy_bnd_ibt_plt = NULL;
+      non_lazy_bnd_ibt_plt = NULL;
       lazy_bnd_plt = NULL;
       non_lazy_bnd_plt = NULL;
-      lazy_ibt_plt = NULL;
-      non_lazy_ibt_plt = NULL;
     }
 
   count = 0;
   for (j = 0; plts[j].name != NULL; j++)
     {
       plt = bfd_get_section_by_name (abfd, plts[j].name);
-      if (plt == NULL || plt->size == 0)
+      if (plt == NULL
+	  || plt->size == 0
+	  || (plt->flags & SEC_HAS_CONTENTS) == 0)
 	continue;
 
       /* Get the PLT section contents.  */
-      plt_contents = (bfd_byte *) bfd_malloc (plt->size);
-      if (plt_contents == NULL)
+      if (!_bfd_elf_mmap_section_contents (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;
@@ -4746,7 +5849,19 @@ elf_x86_64_get_synthetic_symtab (bfd *ab
 		       lazy_plt->plt0_got1_offset) == 0)
 	      && (memcmp (plt_contents + 6, lazy_plt->plt0_entry + 6,
 			  2) == 0))
-	    plt_type = plt_lazy;
+	    {
+	      if (memcmp (plt_contents + lazy_ibt_plt->plt_entry_size,
+			  lazy_ibt_plt->plt_entry,
+			  lazy_ibt_plt->plt_reloc_offset) == 0)
+		{
+		  /* The fist entry in the lazy IBT PLT is the same as
+		     the lazy PLT.  */
+		  plt_type = plt_lazy | plt_second;
+		  lazy_plt = lazy_ibt_plt;
+		}
+	      else
+		plt_type = plt_lazy;
+	    }
 	  else if (lazy_bnd_plt != NULL
 		   && (memcmp (plt_contents, lazy_bnd_plt->plt0_entry,
 			       lazy_bnd_plt->plt0_got1_offset) == 0)
@@ -4754,12 +5869,13 @@ elf_x86_64_get_synthetic_symtab (bfd *ab
 			       lazy_bnd_plt->plt0_entry + 6, 3) == 0))
 	    {
 	      plt_type = plt_lazy | plt_second;
-	      /* The fist entry in the lazy IBT PLT is the same as the
-		 lazy BND PLT.  */
-	      if ((memcmp (plt_contents + lazy_ibt_plt->plt_entry_size,
-			   lazy_ibt_plt->plt_entry,
-			   lazy_ibt_plt->plt_got_offset) == 0))
-		lazy_plt = lazy_ibt_plt;
+	      /* The fist entry in the lazy BND IBT PLT is the same as
+		 the lazy BND PLT.  */
+	      if (memcmp (plt_contents
+			  + lazy_bnd_ibt_plt->plt_entry_size,
+			  lazy_bnd_ibt_plt->plt_entry,
+			  lazy_bnd_ibt_plt->plt_reloc_offset) == 0)
+		lazy_plt = lazy_bnd_ibt_plt;
 	      else
 		lazy_plt = lazy_bnd_plt;
 	    }
@@ -4777,30 +5893,41 @@ elf_x86_64_get_synthetic_symtab (bfd *ab
 
       if (plt_type == plt_unknown || plt_type == plt_second)
 	{
-	  if (non_lazy_bnd_plt != NULL
-	      && plt->size >= non_lazy_bnd_plt->plt_entry_size
-	      && (memcmp (plt_contents, non_lazy_bnd_plt->plt_entry,
-			  non_lazy_bnd_plt->plt_got_offset) == 0))
-	    {
-	      /* Match BND PLT.  */
-	      plt_type = plt_second;
-	      non_lazy_plt = non_lazy_bnd_plt;
-	    }
-	  else if (non_lazy_ibt_plt != NULL
-		   && plt->size >= non_lazy_ibt_plt->plt_entry_size
-		   && (memcmp (plt_contents,
-			       non_lazy_ibt_plt->plt_entry,
-			       non_lazy_ibt_plt->plt_got_offset) == 0))
+	  if (plt->size >= non_lazy_ibt_plt->plt_entry_size
+	      && (memcmp (plt_contents,
+			  non_lazy_ibt_plt->plt_entry,
+			  non_lazy_ibt_plt->plt_got_offset) == 0))
 	    {
 	      /* Match IBT PLT.  */
 	      plt_type = plt_second;
 	      non_lazy_plt = non_lazy_ibt_plt;
 	    }
+	  else if (non_lazy_bnd_plt != NULL)
+	    {
+	      if (plt->size >= non_lazy_bnd_plt->plt_entry_size
+		  && (memcmp (plt_contents, non_lazy_bnd_plt->plt_entry,
+			      non_lazy_bnd_plt->plt_got_offset) == 0))
+		{
+		  /* Match BND PLT.  */
+		  plt_type = plt_second;
+		  non_lazy_plt = non_lazy_bnd_plt;
+		}
+	      else if (plt->size >= non_lazy_bnd_ibt_plt->plt_entry_size
+		       && (memcmp (plt_contents,
+				   non_lazy_bnd_ibt_plt->plt_entry,
+				   non_lazy_bnd_ibt_plt->plt_got_offset)
+			   == 0))
+		{
+		  /* Match BND IBT PLT.  */
+		  plt_type = plt_second;
+		  non_lazy_plt = non_lazy_bnd_ibt_plt;
+		}
+	    }
 	}
 
       if (plt_type == plt_unknown)
 	{
-	  free (plt_contents);
+	  _bfd_elf_munmap_section_contents (plt, plt_contents);
 	  continue;
 	}
 
@@ -4844,24 +5971,24 @@ elf_x86_64_get_synthetic_symtab (bfd *ab
 /* Handle an x86-64 specific section when reading an object file.  This
    is called when elfcode.h finds a section with an unknown type.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_section_from_shdr (bfd *abfd, Elf_Internal_Shdr *hdr,
 			      const char *name, int shindex)
 {
   if (hdr->sh_type != SHT_X86_64_UNWIND)
-    return FALSE;
+    return false;
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Hook called by the linker routine which adds symbols from an object
    file.  We use it to put SHN_X86_64_LCOMMON items in .lbss, instead
    of .bss.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_add_symbol_hook (bfd *abfd,
 			    struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			    Elf_Internal_Sym *sym,
@@ -4884,31 +6011,31 @@ elf_x86_64_add_symbol_hook (bfd *abfd,
 						| SEC_IS_COMMON
 						| SEC_LINKER_CREATED));
 	  if (lcomm == NULL)
-	    return FALSE;
+	    return false;
 	  elf_section_flags (lcomm) |= SHF_X86_64_LARGE;
 	}
       *secp = lcomm;
       *valp = sym->st_size;
-      return TRUE;
+      return true;
     }
 
-  return TRUE;
+  return true;
 }
 
 
 /* Given a BFD section, try to locate the corresponding ELF section
    index.  */
 
-static bfd_boolean
+static bool
 elf_x86_64_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					 asection *sec, int *index_return)
 {
   if (sec == &_bfd_elf_large_com_section)
     {
       *index_return = SHN_X86_64_LCOMMON;
-      return TRUE;
+      return true;
     }
-  return FALSE;
+  return false;
 }
 
 /* Process a symbol.  */
@@ -4930,7 +6057,7 @@ elf_x86_64_symbol_processing (bfd *abfd
     }
 }
 
-static bfd_boolean
+static bool
 elf_x86_64_common_definition (Elf_Internal_Sym *sym)
 {
   return (sym->st_shndx == SHN_COMMON
@@ -4955,12 +6082,12 @@ elf_x86_64_common_section (asection *sec
     return &_bfd_elf_large_com_section;
 }
 
-static bfd_boolean
+static bool
 elf_x86_64_merge_symbol (struct elf_link_hash_entry *h,
 			 const Elf_Internal_Sym *sym,
 			 asection **psec,
-			 bfd_boolean newdef,
-			 bfd_boolean olddef,
+			 bool newdef,
+			 bool olddef,
 			 bfd *oldbfd,
 			 const asection *oldsec)
 {
@@ -4985,7 +6112,41 @@ elf_x86_64_merge_symbol (struct elf_link
 	*psec = bfd_com_section_ptr;
     }
 
-  return TRUE;
+  return true;
+}
+
+static bool
+elf_x86_64_section_flags (const Elf_Internal_Shdr *hdr)
+{
+  if ((hdr->sh_flags & SHF_X86_64_LARGE) != 0)
+    hdr->bfd_section->flags |= SEC_ELF_LARGE;
+
+  return true;
+}
+
+static bool
+elf_x86_64_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
+			  Elf_Internal_Shdr *hdr, asection *sec)
+{
+  if (sec->flags & SEC_ELF_LARGE)
+    hdr->sh_flags |= SHF_X86_64_LARGE;
+
+  return true;
+}
+
+static bool
+elf_x86_64_copy_private_section_data (bfd *ibfd, asection *isec,
+				      bfd *obfd, asection *osec,
+				      struct bfd_link_info *link_info)
+{
+  if (!_bfd_elf_copy_private_section_data (ibfd, isec, obfd, osec, link_info))
+    return false;
+
+  /* objcopy --set-section-flags without "large" drops SHF_X86_64_LARGE.  */
+  if (link_info == NULL && ibfd != obfd)
+    elf_section_flags (osec) &= ~SHF_X86_64_LARGE;
+
+  return true;
 }
 
 static int
@@ -5012,7 +6173,7 @@ elf_x86_64_additional_program_headers (b
 
 /* Return TRUE iff relocations for INPUT are compatible with OUTPUT. */
 
-static bfd_boolean
+static bool
 elf_x86_64_relocs_compatible (const bfd_target *input,
 			      const bfd_target *output)
 {
@@ -5028,6 +6189,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 +6203,29 @@ 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)
-    {
-      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;
-	}
+  bed = get_elf_backend_data (info->output_bfd);
+  htab = elf_x86_hash_table (info, bed->target_id);
+  if (!htab)
+    abort ();
 
-      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;
-	}
+  init_table.lazy_plt = &elf_x86_64_lazy_plt;
+  init_table.non_lazy_plt = &elf_x86_64_non_lazy_plt;
+
+  init_table.lazy_ibt_plt = &elf_x86_64_lazy_ibt_plt;
+  init_table.non_lazy_ibt_plt = &elf_x86_64_non_lazy_ibt_plt;
+
+  if (ABI_64_P (info->output_bfd))
+    {
+      init_table.sframe_lazy_plt = &elf_x86_64_sframe_plt;
+      init_table.sframe_non_lazy_plt = &elf_x86_64_sframe_non_lazy_plt;
+      init_table.sframe_lazy_ibt_plt = &elf_x86_64_sframe_ibt_plt;
+      init_table.sframe_non_lazy_ibt_plt = &elf_x86_64_sframe_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;
+      /* SFrame is not supported for non AMD64.  */
+      init_table.sframe_lazy_plt = NULL;
+      init_table.sframe_non_lazy_plt = NULL;
     }
 
   if (ABI_64_P (info->output_bfd))
@@ -5092,6 +6242,59 @@ elf_x86_64_link_setup_gnu_properties (st
   return _bfd_x86_elf_link_setup_gnu_properties (info, &init_table);
 }
 
+static void
+elf_x86_64_add_glibc_version_dependency
+  (struct elf_find_verdep_info *rinfo)
+{
+  int i = 0, mark_plt = -1;
+  const char *version[4] = { NULL, NULL, NULL, NULL };
+  bool auto_version[4] = { false, false, false, false };
+  struct elf_x86_link_hash_table *htab;
+
+  if (rinfo->info->enable_dt_relr)
+    {
+      version[i] = "GLIBC_ABI_DT_RELR";
+      i++;
+    }
+
+  htab = elf_x86_hash_table (rinfo->info, X86_64_ELF_DATA);
+  if (htab != NULL)
+    {
+      if (htab->params->gnu2_tls_version_tag && htab->has_tls_desc_call)
+	{
+	  version[i] = "GLIBC_ABI_GNU2_TLS";
+	  /* 2 == auto, enable if libc.so defines the GLIBC_ABI_GNU2_TLS
+	     version.  */
+	  if (htab->params->gnu2_tls_version_tag == 2)
+	    auto_version[i] = true;
+	  i++;
+	}
+      if (htab->params->mark_plt)
+	{
+	  mark_plt = i;
+	  auto_version[i] = true;
+	  version[i] = "GLIBC_ABI_DT_X86_64_PLT";
+	  i++;
+	}
+    }
+
+  if (i == 0
+      || !_bfd_elf_link_add_glibc_version_dependency (rinfo, version,
+						      auto_version))
+    return;
+
+  if (mark_plt < 0 || auto_version[mark_plt])
+    return;
+
+  /* Add the GLIBC_2.36 version dependency if libc.so doesn't have
+     GLIBC_ABI_DT_X86_64_PLT.  */
+  version[0] = "GLIBC_2.36";
+  auto_version[0] = false;
+  version[1] = NULL;
+  _bfd_elf_link_add_glibc_version_dependency (rinfo, version,
+					      auto_version);
+}
+
 static const struct bfd_elf_special_section
 elf_x86_64_special_sections[]=
 {
@@ -5109,13 +6312,8 @@ elf_x86_64_special_sections[]=
 #define ELF_ARCH			    bfd_arch_i386
 #define ELF_TARGET_ID			    X86_64_ELF_DATA
 #define ELF_MACHINE_CODE		    EM_X86_64
-#if DEFAULT_LD_Z_SEPARATE_CODE
-# define ELF_MAXPAGESIZE		    0x1000
-#else
-# define ELF_MAXPAGESIZE		    0x200000
-#endif
-#define ELF_MINPAGESIZE			    0x1000
-#define ELF_COMMONPAGESIZE		    0x1000
+#define ELF_MAXPAGESIZE			    0x1000
+#define ELF_COMMONPAGESIZE		    ELF_MAXPAGESIZE
 
 #define elf_backend_can_gc_sections	    1
 #define elf_backend_can_refcount	    1
@@ -5125,19 +6323,20 @@ elf_x86_64_special_sections[]=
 #define elf_backend_got_header_size	    (GOT_ENTRY_SIZE*3)
 #define elf_backend_rela_normal		    1
 #define elf_backend_plt_alignment	    4
-#define elf_backend_extern_protected_data   1
 #define elf_backend_caches_rawsize	    1
 #define elf_backend_dtrel_excludes_plt	    1
 #define elf_backend_want_dynrelro	    1
 
 #define elf_info_to_howto		    elf_x86_64_info_to_howto
 
+#define bfd_elf64_bfd_copy_private_section_data \
+  elf_x86_64_copy_private_section_data
 #define bfd_elf64_bfd_reloc_type_lookup	    elf_x86_64_reloc_type_lookup
 #define bfd_elf64_bfd_reloc_name_lookup \
   elf_x86_64_reloc_name_lookup
 
 #define elf_backend_relocs_compatible	    elf_x86_64_relocs_compatible
-#define elf_backend_check_relocs	    elf_x86_64_check_relocs
+#define elf_backend_early_size_sections	    elf_x86_64_early_size_sections
 #define elf_backend_create_dynamic_sections _bfd_elf_create_dynamic_sections
 #define elf_backend_finish_dynamic_sections elf_x86_64_finish_dynamic_sections
 #define elf_backend_finish_dynamic_symbol   elf_x86_64_finish_dynamic_symbol
@@ -5172,32 +6371,23 @@ elf_x86_64_special_sections[]=
   elf_x86_64_merge_symbol
 #define elf_backend_special_sections \
   elf_x86_64_special_sections
+#define elf_backend_section_flags	    elf_x86_64_section_flags
+#define elf_backend_fake_sections	    elf_x86_64_fake_sections
 #define elf_backend_additional_program_headers \
   elf_x86_64_additional_program_headers
 #define elf_backend_setup_gnu_properties \
   elf_x86_64_link_setup_gnu_properties
 #define elf_backend_hide_symbol \
   _bfd_x86_elf_hide_symbol
+#define elf_backend_add_glibc_version_dependency \
+  elf_x86_64_add_glibc_version_dependency
 
 #undef	elf64_bed
 #define elf64_bed elf64_x86_64_bed
 
 #include "elf64-target.h"
 
-/* CloudABI support.  */
-
-#undef	TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM		    x86_64_elf64_cloudabi_vec
-#undef	TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME		    "elf64-x86-64-cloudabi"
-
-#undef	ELF_OSABI
-#define	ELF_OSABI			    ELFOSABI_CLOUDABI
-
-#undef	elf64_bed
-#define elf64_bed elf64_x86_64_cloudabi_bed
-
-#include "elf64-target.h"
+#undef elf_backend_add_glibc_version_dependency
 
 /* FreeBSD support.  */
 
@@ -5221,13 +6411,11 @@ 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_MAXPAGESIZE
+#define ELF_MAXPAGESIZE			    0x100000
 
-#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.  */
@@ -5251,7 +6439,7 @@ static const struct elf_x86_backend_data
 #undef  elf_backend_strtab_flags
 #define elf_backend_strtab_flags	SHF_STRINGS
 
-static bfd_boolean
+static bool
 elf64_x86_64_copy_solaris_special_section_fields (const bfd *ibfd ATTRIBUTE_UNUSED,
 						  bfd *obfd ATTRIBUTE_UNUSED,
 						  const Elf_Internal_Shdr *isection ATTRIBUTE_UNUSED,
@@ -5259,7 +6447,7 @@ elf64_x86_64_copy_solaris_special_sectio
 {
   /* PR 19938: FIXME: Need to add code for setting the sh_info
      and sh_link fields of Solaris specific section types.  */
-  return FALSE;
+  return false;
 }
 
 #undef  elf_backend_copy_special_section_fields
@@ -5267,30 +6455,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,304 +6463,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
-elf64_l1om_elf_object_p (bfd *abfd)
-{
-  /* Set the right machine number for an L1OM elf64 file.  */
-  bfd_default_set_arch_mach (abfd, bfd_arch_l1om, bfd_mach_l1om);
-  return TRUE;
-}
-
-#undef  TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM		    l1om_elf64_vec
-#undef  TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME		    "elf64-l1om"
-#undef ELF_ARCH
-#define ELF_ARCH			    bfd_arch_l1om
-
-#undef	ELF_MACHINE_CODE
-#define ELF_MACHINE_CODE		    EM_L1OM
-
-#undef	ELF_OSABI
-
-#undef  elf64_bed
-#define elf64_bed elf64_l1om_bed
-
-#undef elf_backend_object_p
-#define elf_backend_object_p		    elf64_l1om_elf_object_p
-
-/* Restore defaults.  */
-#undef	ELF_MAXPAGESIZE
-#undef	ELF_MINPAGESIZE
-#undef	ELF_COMMONPAGESIZE
-#if DEFAULT_LD_Z_SEPARATE_CODE
-# define ELF_MAXPAGESIZE		0x1000
-#else
-# define ELF_MAXPAGESIZE		0x200000
-#endif
-#define ELF_MINPAGESIZE			0x1000
-#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
-
-#include "elf64-target.h"
-
-/* FreeBSD L1OM support.  */
-
-#undef  TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM		    l1om_elf64_fbsd_vec
-#undef  TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME		    "elf64-l1om-freebsd"
-
-#undef	ELF_OSABI
-#define	ELF_OSABI			    ELFOSABI_FREEBSD
-
-#undef  elf64_bed
-#define elf64_bed elf64_l1om_fbsd_bed
-
-#include "elf64-target.h"
-
-/* Intel K1OM support.  */
-
-static bfd_boolean
-elf64_k1om_elf_object_p (bfd *abfd)
-{
-  /* Set the right machine number for an K1OM elf64 file.  */
-  bfd_default_set_arch_mach (abfd, bfd_arch_k1om, bfd_mach_k1om);
-  return TRUE;
-}
-
-#undef  TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM		    k1om_elf64_vec
-#undef  TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME		    "elf64-k1om"
-#undef ELF_ARCH
-#define ELF_ARCH			    bfd_arch_k1om
-
-#undef	ELF_MACHINE_CODE
-#define ELF_MACHINE_CODE		    EM_K1OM
-
-#undef	ELF_OSABI
-
-#undef  elf64_bed
-#define elf64_bed elf64_k1om_bed
-
-#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.  */
-
-#undef  TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM		    k1om_elf64_fbsd_vec
-#undef  TARGET_LITTLE_NAME
-#define TARGET_LITTLE_NAME		    "elf64-k1om-freebsd"
-
-#undef	ELF_OSABI
-#define	ELF_OSABI			    ELFOSABI_FREEBSD
-
-#undef  elf64_bed
-#define elf64_bed elf64_k1om_fbsd_bed
-
-#include "elf64-target.h"
-
 /* 32bit x86-64 support.  */
 
 #undef  TARGET_LITTLE_SYM
@@ -5604,15 +6470,26 @@ 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
 
-#undef	ELF_MACHINE_CODE
-#define ELF_MACHINE_CODE		    EM_X86_64
+#undef	ELF_MAXPAGESIZE
+#define ELF_MAXPAGESIZE			    0x1000
 
+#undef	ELF_TARGET_OS
 #undef	ELF_OSABI
 
+#define bfd_elf32_bfd_copy_private_section_data \
+  elf_x86_64_copy_private_section_data
+#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
@@ -5621,6 +6498,10 @@ elf64_k1om_elf_object_p (bfd *abfd)
 #define elf_backend_bfd_from_remote_memory \
   _bfd_elf32_bfd_from_remote_memory
 
+#undef elf_backend_add_glibc_version_dependency
+#define elf_backend_add_glibc_version_dependency \
+  elf_x86_64_add_glibc_version_dependency
+
 #undef elf_backend_size_info
 #define elf_backend_size_info \
   _bfd_elf32_size_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.20200303/bfd/elf-attrs.c ./bfd/elf-attrs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-attrs.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-attrs.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -25,11 +25,10 @@
 #include "elf-bfd.h"
 
 /* Return the number of bytes needed by I in uleb128 format.  */
-static int
-uleb128_size (unsigned int i)
+static uint32_t
+uleb128_size (uint32_t i)
 {
-  int size;
-  size = 1;
+  uint32_t size = 1;
   while (i >= 0x80)
     {
       i >>= 7;
@@ -39,24 +38,33 @@ uleb128_size (unsigned int i)
 }
 
 /* Return TRUE if the attribute has the default value (0/"").  */
-static bfd_boolean
+static bool
 is_default_attr (obj_attribute *attr)
 {
   if (ATTR_TYPE_HAS_ERROR (attr->type))
-    return TRUE;
+    return true;
   if (ATTR_TYPE_HAS_INT_VAL (attr->type) && attr->i != 0)
-    return FALSE;
+    return false;
   if (ATTR_TYPE_HAS_STR_VAL (attr->type) && attr->s && *attr->s)
-    return FALSE;
+    return false;
   if (ATTR_TYPE_HAS_NO_DEFAULT (attr->type))
-    return FALSE;
+    return false;
+
+  return true;
+}
 
-  return TRUE;
+/* Return the vendor name for a given object attributes section.  */
+static const char *
+obj_attr_v1_vendor_name (bfd *abfd, int vendor)
+{
+  return (vendor == OBJ_ATTR_PROC
+	  ? get_elf_backend_data (abfd)->obj_attrs_vendor
+	  : "gnu");
 }
 
 /* Return the size of a single attribute.  */
 static bfd_vma
-obj_attr_size (unsigned int tag, obj_attribute *attr)
+obj_attr_v1_size (unsigned int tag, obj_attribute *attr)
 {
   bfd_vma size;
 
@@ -71,26 +79,17 @@ obj_attr_size (unsigned int tag, obj_att
   return size;
 }
 
-/* Return the vendor name for a given object attributes section.  */
-static const char *
-vendor_obj_attr_name (bfd *abfd, int vendor)
-{
-  return (vendor == OBJ_ATTR_PROC
-	  ? get_elf_backend_data (abfd)->obj_attrs_vendor
-	  : "gnu");
-}
-
 /* Return the size of the object attributes section for VENDOR
    (OBJ_ATTR_PROC or OBJ_ATTR_GNU), or 0 if there are no attributes
    for that vendor to record and the vendor is OBJ_ATTR_GNU.  */
 static bfd_vma
-vendor_obj_attr_size (bfd *abfd, int vendor)
+vendor_obj_attrs_v1_size (bfd *abfd, int vendor)
 {
   bfd_vma size;
   obj_attribute *attr;
   obj_attribute_list *list;
   int i;
-  const char *vendor_name = vendor_obj_attr_name (abfd, vendor);
+  const char *vendor_name = obj_attr_v1_vendor_name (abfd, vendor);
 
   if (!vendor_name)
     return 0;
@@ -98,12 +97,12 @@ vendor_obj_attr_size (bfd *abfd, int ven
   attr = elf_known_obj_attributes (abfd)[vendor];
   size = 0;
   for (i = LEAST_KNOWN_OBJ_ATTRIBUTE; i < NUM_KNOWN_OBJ_ATTRIBUTES; i++)
-    size += obj_attr_size (i, &attr[i]);
+    size += obj_attr_v1_size (i, &attr[i]);
 
   for (list = elf_other_obj_attributes (abfd)[vendor];
        list;
        list = list->next)
-    size += obj_attr_size (list->tag, &list->attr);
+    size += obj_attr_v1_size (list->tag, &list->attr);
 
   /* <size> <vendor_name> NUL 0x1 <size> */
   return (size
@@ -111,23 +110,28 @@ vendor_obj_attr_size (bfd *abfd, int ven
 	  : 0);
 }
 
+static bfd_vma
+bfd_elf_obj_attrs_v1_size (bfd *abfd)
+{
+  bfd_vma size = 0;
+  size = vendor_obj_attrs_v1_size (abfd, OBJ_ATTR_PROC);
+  size += vendor_obj_attrs_v1_size (abfd, OBJ_ATTR_GNU);
+  if (size > 0)
+    size += sizeof(uint8_t); /* <format-version: â€˜Aâ€™>  */
+  return size;
+}
+
 /* Return the size of the object attributes section.  */
 bfd_vma
 bfd_elf_obj_attr_size (bfd *abfd)
 {
-  bfd_vma size;
-
-  size = vendor_obj_attr_size (abfd, OBJ_ATTR_PROC);
-  size += vendor_obj_attr_size (abfd, OBJ_ATTR_GNU);
-
-  /* 'A' <sections for each vendor> */
-  return (size ? size + 1 : 0);
+  return bfd_elf_obj_attrs_v1_size (abfd);
 }
 
 /* Write VAL in uleb128 format to P, returning a pointer to the
    following byte.  */
 static bfd_byte *
-write_uleb128 (bfd_byte *p, unsigned int val)
+write_uleb128 (bfd_byte *p, uint32_t val)
 {
   bfd_byte c;
   do
@@ -145,7 +149,7 @@ write_uleb128 (bfd_byte *p, unsigned int
 /* Write attribute ATTR to butter P, and return a pointer to the following
    byte.  */
 static bfd_byte *
-write_obj_attribute (bfd_byte *p, unsigned int tag, obj_attribute *attr)
+write_obj_attr_v1 (bfd_byte *p, unsigned int tag, obj_attribute *attr)
 {
   /* Suppress default entries.  */
   if (is_default_attr (attr))
@@ -169,14 +173,14 @@ write_obj_attribute (bfd_byte *p, unsign
 /* Write the contents of the object attributes section (length SIZE)
    for VENDOR to CONTENTS.  */
 static void
-vendor_set_obj_attr_contents (bfd *abfd, bfd_byte *contents, bfd_vma size,
-			      int vendor)
+write_vendor_obj_attrs_v1 (bfd *abfd, bfd_byte *contents, bfd_vma size,
+			   int vendor)
 {
   bfd_byte *p;
   obj_attribute *attr;
   obj_attribute_list *list;
   int i;
-  const char *vendor_name = vendor_obj_attr_name (abfd, vendor);
+  const char *vendor_name = obj_attr_v1_vendor_name (abfd, vendor);
   size_t vendor_length = strlen (vendor_name) + 1;
 
   p = contents;
@@ -194,37 +198,40 @@ vendor_set_obj_attr_contents (bfd *abfd,
       unsigned int tag = i;
       if (get_elf_backend_data (abfd)->obj_attrs_order)
 	tag = get_elf_backend_data (abfd)->obj_attrs_order (i);
-      p = write_obj_attribute (p, tag, &attr[tag]);
+      p = write_obj_attr_v1 (p, tag, &attr[tag]);
     }
 
   for (list = elf_other_obj_attributes (abfd)[vendor];
        list;
        list = list->next)
-    p = write_obj_attribute (p, list->tag, &list->attr);
+    p = write_obj_attr_v1 (p, list->tag, &list->attr);
 }
 
-/* Write the contents of the object attributes section to CONTENTS.  */
-void
-bfd_elf_set_obj_attr_contents (bfd *abfd, bfd_byte *contents, bfd_vma size)
+static void
+write_obj_attr_section_v1 (bfd *abfd, bfd_byte *buffer, bfd_vma size)
 {
-  bfd_byte *p;
-  int vendor;
-  bfd_vma my_size;
+  bfd_byte *p = buffer;
 
-  p = contents;
+  /* <format-version: â€˜Aâ€™>  */
   *(p++) = 'A';
-  my_size = 1;
-  for (vendor = OBJ_ATTR_FIRST; vendor <= OBJ_ATTR_LAST; vendor++)
+
+  for (int vendor = OBJ_ATTR_FIRST; vendor <= OBJ_ATTR_LAST; ++vendor)
     {
-      bfd_vma vendor_size = vendor_obj_attr_size (abfd, vendor);
-      if (vendor_size)
-	vendor_set_obj_attr_contents (abfd, p, vendor_size, vendor);
+      bfd_vma vendor_size = vendor_obj_attrs_v1_size (abfd, vendor);
+      if (vendor_size > 0)
+	write_vendor_obj_attrs_v1 (abfd, p, vendor_size, vendor);
       p += vendor_size;
-      my_size += vendor_size;
     }
 
-  if (size != my_size)
-    abort ();
+  /* We didn't overrun the buffer.  */
+  BFD_ASSERT (p <= buffer + size);
+}
+
+/* Write the contents of the object attributes section to CONTENTS.  */
+void
+bfd_elf_set_obj_attr_contents (bfd *abfd, bfd_byte *buffer, bfd_vma size)
+{
+  write_obj_attr_section_v1 (abfd, buffer, size);
 }
 
 /* Allocate/find an object attribute.  */
@@ -247,6 +254,8 @@ elf_new_obj_attr (bfd *abfd, int vendor,
       /* Create a new tag.  */
       list = (obj_attribute_list *)
 	bfd_alloc (abfd, sizeof (obj_attribute_list));
+      if (list == NULL)
+	return NULL;
       memset (list, 0, sizeof (obj_attribute_list));
       list->tag = tag;
       /* Keep the tag list in order.  */
@@ -292,51 +301,96 @@ bfd_elf_get_obj_attr_int (bfd *abfd, int
 }
 
 /* Add an integer object attribute.  */
-void
+obj_attribute *
 bfd_elf_add_obj_attr_int (bfd *abfd, int vendor, unsigned int tag, unsigned int i)
 {
   obj_attribute *attr;
 
   attr = elf_new_obj_attr (abfd, vendor, tag);
-  attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag);
-  attr->i = i;
+  if (attr != NULL)
+    {
+      attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag);
+      attr->i = i;
+    }
+  return attr;
 }
 
 /* Duplicate an object attribute string value.  */
-char *
-_bfd_elf_attr_strdup (bfd *abfd, const char * s)
+static char *
+elf_attr_strdup (bfd *abfd, const char *s, const char *end)
 {
-  char * p;
-  int len;
+  char *p;
+  size_t len;
+
+  if (end)
+    len = strnlen (s, end - s);
+  else
+    len = strlen (s);
 
-  len = strlen (s) + 1;
-  p = (char *) bfd_alloc (abfd, len);
-  return (char *) memcpy (p, s, len);
+  p = (char *) bfd_alloc (abfd, len + 1);
+  if (p != NULL)
+    {
+      memcpy (p, s, len);
+      p[len] = 0;
+    }
+  return p;
+}
+
+char *
+_bfd_elf_attr_strdup (bfd *abfd, const char *s)
+{
+  return elf_attr_strdup (abfd, s, NULL);
 }
 
 /* Add a string object attribute.  */
-void
-bfd_elf_add_obj_attr_string (bfd *abfd, int vendor, unsigned int tag, const char *s)
+static obj_attribute *
+elf_add_obj_attr_string (bfd *abfd, int vendor, unsigned int tag,
+			 const char *s, const char *end)
 {
   obj_attribute *attr;
 
   attr = elf_new_obj_attr (abfd, vendor, tag);
-  attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag);
-  attr->s = _bfd_elf_attr_strdup (abfd, s);
+  if (attr != NULL)
+    {
+      attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag);
+      attr->s = elf_attr_strdup (abfd, s, end);
+      if (attr->s == NULL)
+	return NULL;
+    }
+  return attr;
+}
+
+obj_attribute *
+bfd_elf_add_obj_attr_string (bfd *abfd, int vendor, unsigned int tag,
+			     const char *s)
+{
+  return elf_add_obj_attr_string (abfd, vendor, tag, s, NULL);
 }
 
 /* Add a int+string object attribute.  */
-void
-bfd_elf_add_obj_attr_int_string (bfd *abfd, int vendor,
-				 unsigned int tag,
-				 unsigned int i, const char *s)
+static obj_attribute *
+elf_add_obj_attr_int_string (bfd *abfd, int vendor, unsigned int tag,
+			     unsigned int i, const char *s, const char *end)
 {
   obj_attribute *attr;
 
   attr = elf_new_obj_attr (abfd, vendor, tag);
-  attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag);
-  attr->i = i;
-  attr->s = _bfd_elf_attr_strdup (abfd, s);
+  if (attr != NULL)
+    {
+      attr->type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag);
+      attr->i = i;
+      attr->s = elf_attr_strdup (abfd, s, end);
+      if (attr->s == NULL)
+	return NULL;
+    }
+  return attr;
+}
+
+obj_attribute *
+bfd_elf_add_obj_attr_int_string (bfd *abfd, int vendor, unsigned int tag,
+				 unsigned int i, const char *s)
+{
+  return elf_add_obj_attr_int_string (abfd, vendor, tag, i, s, NULL);
 }
 
 /* Copy the object attributes from IBFD to OBFD.  */
@@ -364,7 +418,11 @@ _bfd_elf_copy_obj_attributes (bfd *ibfd,
 	  out_attr->type = in_attr->type;
 	  out_attr->i = in_attr->i;
 	  if (in_attr->s && *in_attr->s)
-	    out_attr->s = _bfd_elf_attr_strdup (obfd, in_attr->s);
+	    {
+	      out_attr->s = _bfd_elf_attr_strdup (obfd, in_attr->s);
+	      if (out_attr->s == NULL)
+		bfd_perror (_("error adding attribute"));
+	    }
 	  in_attr++;
 	  out_attr++;
 	}
@@ -373,23 +431,27 @@ _bfd_elf_copy_obj_attributes (bfd *ibfd,
 	   list;
 	   list = list->next)
 	{
+	  bool ok = false;
 	  in_attr = &list->attr;
 	  switch (in_attr->type & (ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL))
 	    {
 	    case ATTR_TYPE_FLAG_INT_VAL:
-	      bfd_elf_add_obj_attr_int (obfd, vendor, list->tag, in_attr->i);
+	      ok = bfd_elf_add_obj_attr_int (obfd, vendor,
+					     list->tag, in_attr->i);
 	      break;
 	    case ATTR_TYPE_FLAG_STR_VAL:
-	      bfd_elf_add_obj_attr_string (obfd, vendor, list->tag,
-					   in_attr->s);
+	      ok = bfd_elf_add_obj_attr_string (obfd, vendor, list->tag,
+						in_attr->s);
 	      break;
 	    case ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL:
-	      bfd_elf_add_obj_attr_int_string (obfd, vendor, list->tag,
-					       in_attr->i, in_attr->s);
+	      ok = bfd_elf_add_obj_attr_int_string (obfd, vendor, list->tag,
+						    in_attr->i, in_attr->s);
 	      break;
 	    default:
 	      abort ();
 	    }
+	  if (!ok)
+	    bfd_perror (_("error adding attribute"));
 	}
     }
 }
@@ -427,157 +489,168 @@ _bfd_elf_obj_attrs_arg_type (bfd *abfd,
     }
 }
 
+static void
+bfd_elf_parse_attr_section_v1 (bfd *abfd, bfd_byte *p, bfd_byte *p_end)
+{
+  const char *std_sec = get_elf_backend_data (abfd)->obj_attrs_vendor;
+
+  while (p_end - p >= 4)
+    {
+      size_t len = p_end - p;
+      size_t namelen;
+      size_t section_len;
+      int vendor;
+
+      section_len = bfd_get_32 (abfd, p);
+      p += 4;
+      if (section_len == 0)
+	break;
+      if (section_len > len)
+	section_len = len;
+      if (section_len <= 4)
+	{
+	  _bfd_error_handler
+	    (_("%pB: error: attribute section length too small: %ld"),
+	     abfd, (long) section_len);
+	  break;
+	}
+      section_len -= 4;
+      namelen = strnlen ((char *) p, section_len) + 1;
+      if (namelen >= section_len)
+	break;
+      if (std_sec && strcmp ((char *) p, std_sec) == 0)
+	vendor = OBJ_ATTR_PROC;
+      else if (strcmp ((char *) p, "gnu") == 0)
+	vendor = OBJ_ATTR_GNU;
+      else
+	{
+	  /* Other vendor section.  Ignore it.  */
+	  p += section_len;
+	  continue;
+	}
+
+      p += namelen;
+      section_len -= namelen;
+      while (section_len > 0)
+	{
+	  unsigned int tag;
+	  unsigned int val;
+	  size_t subsection_len;
+	  bfd_byte *end, *orig_p;
+
+	  orig_p = p;
+	  tag = _bfd_safe_read_leb128 (abfd, &p, false, p_end);
+	  if (p_end - p >= 4)
+	    {
+	      subsection_len = bfd_get_32 (abfd, p);
+	      p += 4;
+	    }
+	  else
+	    {
+	      p = p_end;
+	      break;
+	    }
+	  if (subsection_len > section_len)
+	    subsection_len = section_len;
+	  section_len -= subsection_len;
+	  end = orig_p + subsection_len;
+	  if (end < p)
+	    break;
+	  switch (tag)
+	    {
+	    case Tag_File:
+	      while (p < end)
+		{
+		  int type;
+		  bool ok = false;
+
+		  tag = _bfd_safe_read_leb128 (abfd, &p, false, end);
+		  type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag);
+		  switch (type & (ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL))
+		    {
+		    case ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL:
+		      val = _bfd_safe_read_leb128 (abfd, &p, false, end);
+		      ok = elf_add_obj_attr_int_string (abfd, vendor, tag,
+							val, (char *) p,
+							(char *) end);
+		      p += strnlen ((char *) p, end - p);
+		      if (p < end)
+			p++;
+		      break;
+		    case ATTR_TYPE_FLAG_STR_VAL:
+		      ok = elf_add_obj_attr_string (abfd, vendor, tag,
+						    (char *) p,
+						    (char *) end);
+		      p += strnlen ((char *) p, end - p);
+		      if (p < end)
+			p++;
+		      break;
+		    case ATTR_TYPE_FLAG_INT_VAL:
+		      val = _bfd_safe_read_leb128 (abfd, &p, false, end);
+		      ok = bfd_elf_add_obj_attr_int (abfd, vendor, tag, val);
+		      break;
+		    default:
+		      abort ();
+		    }
+		  if (!ok)
+		    bfd_perror (_("error adding attribute"));
+		}
+	      break;
+	    case Tag_Section:
+	    case Tag_Symbol:
+	      /* Don't have anywhere convenient to attach these.
+		 Fall through for now.  */
+	    default:
+	      /* Ignore things we don't know about.  */
+	      p = end;
+	      break;
+	    }
+	}
+    }
+}
+
 /* Parse an object attributes section.  */
 void
 _bfd_elf_parse_attributes (bfd *abfd, Elf_Internal_Shdr * hdr)
 {
-  bfd_byte *contents;
-  bfd_byte *p;
-  bfd_byte *p_end;
-  bfd_vma len;
-  const char *std_sec;
-
   /* PR 17512: file: 2844a11d.  */
   if (hdr->sh_size == 0)
     return;
-  if (hdr->sh_size > bfd_get_file_size (abfd))
+
+  ufile_ptr 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"),
 			  abfd, hdr->bfd_section, (long long) hdr->sh_size);
       bfd_set_error (bfd_error_invalid_operation);
       return;
     }
 
-  contents = (bfd_byte *) bfd_malloc (hdr->sh_size + 1);
-  if (!contents)
+  bfd_byte *data = (bfd_byte *) bfd_malloc (hdr->sh_size);
+  if (!data)
     return;
-  if (!bfd_get_section_contents (abfd, hdr->bfd_section, contents, 0,
-				 hdr->sh_size))
-    {
-      free (contents);
-      return;
-    }
-  /* Ensure that the buffer is NUL terminated.  */
-  contents[hdr->sh_size] = 0;
-  p = contents;
-  p_end = p + hdr->sh_size;
-  std_sec = get_elf_backend_data (abfd)->obj_attrs_vendor;
 
-  if (*(p++) == 'A')
-    {
-      len = hdr->sh_size - 1;
+  if (!bfd_get_section_contents (abfd, hdr->bfd_section, data, 0, hdr->sh_size))
+    goto free_data;
 
-      while (len > 0 && p < p_end - 4)
-	{
-	  unsigned namelen;
-	  bfd_vma section_len;
-	  int vendor;
+  unsigned char *cursor = data;
 
-	  section_len = bfd_get_32 (abfd, p);
-	  p += 4;
-	  if (section_len == 0)
-	    break;
-	  if (section_len > len)
-	    section_len = len;
-	  len -= section_len;
-	  if (section_len <= 4)
-	    {
-	      _bfd_error_handler
-		(_("%pB: error: attribute section length too small: %" PRId64),
-		 abfd, (int64_t) section_len);
-	      break;
-	    }
-	  section_len -= 4;
-	  namelen = strnlen ((char *) p, section_len) + 1;
-	  if (namelen == 0 || namelen >= section_len)
-	    break;
-	  section_len -= namelen;
-	  if (std_sec && strcmp ((char *) p, std_sec) == 0)
-	    vendor = OBJ_ATTR_PROC;
-	  else if (strcmp ((char *) p, "gnu") == 0)
-	    vendor = OBJ_ATTR_GNU;
-	  else
-	    {
-	      /* Other vendor section.  Ignore it.  */
-	      p += namelen + section_len;
-	      continue;
-	    }
+  /* The first character is the version of the attributes.
+     Currently only version 'A' is recognised here.  */
+  if (*cursor != 'A')
+    {
+      _bfd_error_handler (_("%pB: error: unknown attributes version '%c'(%d) "
+			    "- expecting 'A'\n"), abfd, *cursor, *cursor);
+      bfd_set_error (bfd_error_wrong_format);
+      goto free_data;
+    }
 
-	  p += namelen;
-	  while (section_len > 0 && p < p_end)
-	    {
-	      unsigned int tag;
-	      unsigned int n;
-	      unsigned int val;
-	      bfd_vma subsection_len;
-	      bfd_byte *end;
-
-	      tag = _bfd_safe_read_leb128 (abfd, p, &n, FALSE, p_end);
-	      p += n;
-	      if (p < p_end - 4)
-		subsection_len = bfd_get_32 (abfd, p);
-	      else
-		subsection_len = 0;
-	      p += 4;
-	      if (subsection_len == 0)
-		break;
-	      if (subsection_len > section_len)
-		subsection_len = section_len;
-	      section_len -= subsection_len;
-	      subsection_len -= n + 4;
-	      end = p + subsection_len;
-	      /* PR 17512: file: 0e8c0c90.  */
-	      if (end > p_end)
-		end = p_end;
-	      switch (tag)
-		{
-		case Tag_File:
-		  while (p < end)
-		    {
-		      int type;
+  ++cursor;
 
-		      tag = _bfd_safe_read_leb128 (abfd, p, &n, FALSE, end);
-		      p += n;
-		      type = _bfd_elf_obj_attrs_arg_type (abfd, vendor, tag);
-		      switch (type & (ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL))
-			{
-			case ATTR_TYPE_FLAG_INT_VAL | ATTR_TYPE_FLAG_STR_VAL:
-			  val = _bfd_safe_read_leb128 (abfd, p, &n, FALSE, end);
-			  p += n;
-			  bfd_elf_add_obj_attr_int_string (abfd, vendor, tag,
-							   val, (char *) p);
-			  p += strlen ((char *)p) + 1;
-			  break;
-			case ATTR_TYPE_FLAG_STR_VAL:
-			  bfd_elf_add_obj_attr_string (abfd, vendor, tag,
-						       (char *) p);
-			  p += strlen ((char *)p) + 1;
-			  break;
-			case ATTR_TYPE_FLAG_INT_VAL:
-			  val = _bfd_safe_read_leb128 (abfd, p, &n, FALSE, end);
-			  p += n;
-			  bfd_elf_add_obj_attr_int (abfd, vendor, tag, val);
-			  break;
-			default:
-			  abort ();
-			}
-		    }
-		  break;
-		case Tag_Section:
-		case Tag_Symbol:
-		  /* Don't have anywhere convenient to attach these.
-		     Fall through for now.  */
-		default:
-		  /* Ignore things we don't kow about.  */
-		  p += subsection_len;
-		  subsection_len = 0;
-		  break;
-		}
-	    }
-	}
-    }
-  free (contents);
+  bfd_elf_parse_attr_section_v1 (abfd, cursor, data + hdr->sh_size);
+
+ free_data:
+  free (data);
 }
 
 /* Merge common object attributes from IBFD into OBFD.  Raise an error
@@ -590,7 +663,7 @@ _bfd_elf_parse_attributes (bfd *abfd, El
    is not presently called for targets without their own
    attributes.  */
 
-bfd_boolean
+bool
 _bfd_elf_merge_object_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -612,10 +685,10 @@ _bfd_elf_merge_object_attributes (bfd *i
 	{
 	  _bfd_error_handler
 	    /* xgettext:c-format */
-		(_("error: %pB: object has vendor-specific contents that "
-		   "must be processed by the '%s' toolchain"),
-		 ibfd, in_attr->s);
-	  return FALSE;
+	    (_("error: %pB: object has vendor-specific contents that "
+	       "must be processed by the '%s' toolchain"),
+	     ibfd, in_attr->s);
+	  return false;
 	}
 
       if (in_attr->i != out_attr->i
@@ -627,24 +700,24 @@ _bfd_elf_merge_object_attributes (bfd *i
 			      ibfd,
 			      in_attr->i, in_attr->s ? in_attr->s : "",
 			      out_attr->i, out_attr->s ? out_attr->s : "");
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge an unknown processor-specific attribute TAG, within the range
    of known attributes, from IBFD into OBFD; return TRUE if the link
    is OK, FALSE if it must fail.  */
 
-bfd_boolean
+bool
 _bfd_elf_merge_unknown_attribute_low (bfd *ibfd, bfd *obfd, int tag)
 {
   obj_attribute *in_attr;
   obj_attribute *out_attr;
   bfd *err_bfd = NULL;
-  bfd_boolean result = TRUE;
+  bool result = true;
 
   in_attr = elf_known_obj_attributes_proc (ibfd);
   out_attr = elf_known_obj_attributes_proc (obfd);
@@ -675,13 +748,13 @@ _bfd_elf_merge_unknown_attribute_low (bf
    the known range, from IBFD into OBFD; return TRUE if the link is
    OK, FALSE if it must fail.  */
 
-bfd_boolean
+bool
 _bfd_elf_merge_unknown_attribute_list (bfd *ibfd, bfd *obfd)
 {
   obj_attribute_list *in_list;
   obj_attribute_list *out_list;
   obj_attribute_list **out_listp;
-  bfd_boolean result = TRUE;
+  bool result = true;
 
   in_list = elf_other_obj_attributes_proc (ibfd);
   out_listp = &elf_other_obj_attributes_proc (obfd);
@@ -744,3 +817,21 @@ _bfd_elf_merge_unknown_attribute_list (b
 
   return result;
 }
+
+bool _bfd_elf_write_section_build_attributes (bfd *abfd,
+					      struct bfd_link_info *info ATTRIBUTE_UNUSED)
+{
+  asection *sec = elf_obj_build_attributes (abfd);
+
+  if (sec == NULL)
+    return true;
+
+  bfd_byte *contents = (bfd_byte *) bfd_malloc (sec->size);
+  if (contents == NULL)
+    return false; /* Bail out and fail.  */
+
+  bfd_elf_set_obj_attr_contents (abfd, contents, sec->size);
+  bfd_set_section_contents (abfd, sec, contents, 0, sec->size);
+  free (contents);
+  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.20200303/bfd/elf-bfd.h ./bfd/elf-bfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-bfd.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-bfd.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -22,11 +22,17 @@
 #ifndef _LIBELF_H_
 #define _LIBELF_H_ 1
 
+#include <stdlib.h>
+
 #include "elf/common.h"
 #include "elf/external.h"
 #include "elf/internal.h"
 #include "bfdlink.h"
 
+#ifndef ENABLE_CHECKING
+#define ENABLE_CHECKING 0
+#endif
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -102,7 +108,7 @@ struct elf_link_virtual_table_entry
        and track a size while the symbol is still undefined.  It is indexed
        via offset/sizeof(target_void_pointer).  */
     size_t size;
-    bfd_boolean *used;
+    bool *used;
 
     /* Virtual table derivation info.  */
     struct elf_link_hash_entry *parent;
@@ -156,9 +162,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;
 
@@ -180,6 +190,8 @@ struct elf_link_hash_entry
   /* Symbol has a non-weak reference from a non-shared object (other than
      the object in which it is defined).  */
   unsigned int ref_regular_nonweak : 1;
+  /* Symbol has a non-weak reference from a LTO IR object file.  */
+  unsigned int ref_ir_nonweak : 1;
   /* Dynamic symbol has been adjustd.  */
   unsigned int dynamic_adjusted : 1;
   /* Symbol needs a copy reloc.  */
@@ -220,6 +232,8 @@ struct elf_link_hash_entry
      a strong defined symbol alias.  U.ALIAS points to a list of aliases,
      the definition having is_weakalias clear.  */
   unsigned int is_weakalias : 1;
+  /* Symbol has a relocation.  */
+  unsigned int has_reloc : 1;
 
   /* String table index in .dynstr if this is a dynamic symbol.  */
   unsigned long dynstr_index;
@@ -279,9 +293,12 @@ weakdef (struct elf_link_hash_entry *h)
   _bfd_elf_symbol_refs_local_p (H, INFO, 1)
 
 /* Whether an undefined weak symbol should resolve to its link-time
-   value, even in PIC or PIE objects.  */
+   value, even in PIC or PIE objects.  The linker_def test is to
+   handle symbols like __ehdr_start that may be undefweak in early
+   stages of linking but are guaranteed to be defined later.  */
 #define UNDEFWEAK_NO_DYNAMIC_RELOC(INFO, H)		\
   ((H)->root.type == bfd_link_hash_undefweak		\
+   && !(H)->root.linker_def				\
    && (ELF_ST_VISIBILITY ((H)->other) != STV_DEFAULT	\
        || (INFO)->dynamic_undefined_weak == 0))
 
@@ -451,7 +468,7 @@ struct dwarf_eh_frame_hdr_info
   /* TRUE if .eh_frame_hdr should contain the sorted search table.
      We build it if we successfully read all .eh_frame input sections
      and recognize them.  */
-  bfd_boolean table;
+  bool table;
   struct eh_frame_array_ent *array;
 };
 
@@ -466,7 +483,7 @@ struct eh_frame_hdr_info
 {
   asection *hdr_sec;
   unsigned int array_count;
-  bfd_boolean frame_hdr_is_compact;
+  bool frame_hdr_is_compact;
   union
     {
       struct dwarf_eh_frame_hdr_info dwarf;
@@ -475,6 +492,49 @@ struct eh_frame_hdr_info
   u;
 };
 
+/* Additional information for each function (used at link time).  */
+struct sframe_func_bfdinfo
+{
+  /* Whether the function has been discarded from the final output.  */
+  bool func_deleted_p;
+  /* Relocation offset.  */
+  unsigned int func_r_offset;
+  /* Relocation index.  */
+  unsigned int func_reloc_index;
+};
+
+/* Link state information of the SFrame section.  */
+enum sframe_sec_state
+{
+  SFRAME_SEC_DECODED = 1,
+  SFRAME_SEC_MERGED,
+};
+
+/* SFrame decoder info.
+   Contains all information for a decoded .sframe section.  */
+struct sframe_dec_info
+{
+  /* Decoder context.  */
+  struct sframe_decoder_ctx *sfd_ctx;
+  /* SFrame section state as it progresses through the link process.  */
+  enum sframe_sec_state sfd_state;
+  /* Number of function descriptor entries in this .sframe.  */
+  unsigned int sfd_fde_count;
+  /* Additional information for linking.  */
+  struct sframe_func_bfdinfo *sfd_func_bfdinfo;
+};
+
+/* SFrame encoder info.
+   Contains all information for an encoded .sframe section to be
+   written out.  */
+struct sframe_enc_info
+{
+  /* Encoder context.  */
+  struct sframe_encoder_ctx *sfe_ctx;
+  /* Output section.  */
+  asection *sframe_section;
+};
+
 /* Enum used to identify target specific extensions to the elf_obj_tdata
    and elf_link_hash_table structures.  Note the enums deliberately start
    from 1 so that we can detect an uninitialized field.  The generic value
@@ -484,10 +544,12 @@ enum elf_target_id
 {
   AARCH64_ELF_DATA = 1,
   ALPHA_ELF_DATA,
+  AMDGCN_ELF_DATA,
   ARC_ELF_DATA,
   ARM_ELF_DATA,
   AVR_ELF_DATA,
   BFIN_ELF_DATA,
+  CR16_ELF_DATA,
   CRIS_ELF_DATA,
   CSKY_ELF_DATA,
   FRV_ELF_DATA,
@@ -495,6 +557,8 @@ enum elf_target_id
   HPPA64_ELF_DATA,
   I386_ELF_DATA,
   IA64_ELF_DATA,
+  KVX_ELF_DATA,
+  LARCH_ELF_DATA,
   LM32_ELF_DATA,
   M32R_ELF_DATA,
   M68HC11_ELF_DATA,
@@ -502,23 +566,25 @@ enum elf_target_id
   METAG_ELF_DATA,
   MICROBLAZE_ELF_DATA,
   MIPS_ELF_DATA,
+  MMIX_ELF_DATA,
   MN10300_ELF_DATA,
   NDS32_ELF_DATA,
-  NIOS2_ELF_DATA,
   OR1K_ELF_DATA,
   PPC32_ELF_DATA,
   PPC64_ELF_DATA,
   PRU_ELF_DATA,
+  RISCV_ELF_DATA,
   S390_ELF_DATA,
+  SCORE_ELF_DATA,
   SH_ELF_DATA,
   SPARC_ELF_DATA,
   SPU_ELF_DATA,
   TIC6X_ELF_DATA,
-  X86_64_ELF_DATA,
-  XTENSA_ELF_DATA,
   TILEGX_ELF_DATA,
   TILEPRO_ELF_DATA,
-  RISCV_ELF_DATA,
+  X86_64_ELF_DATA,
+  XTENSA_ELF_DATA,
+  VAX_ELF_DATA,
   GENERIC_ELF_DATA
 };
 
@@ -526,7 +592,6 @@ struct elf_sym_strtab
 {
   Elf_Internal_Sym sym;
   unsigned long dest_index;
-  unsigned long destshndx_index;
 };
 
 struct bfd_link_needed_list
@@ -536,6 +601,23 @@ struct bfd_link_needed_list
   const char *name;
 };
 
+enum elf_target_os
+{
+  is_normal,
+  is_solaris,	/* Solaris.  */
+  is_vxworks	/* VxWorks.  */
+};
+
+/* 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
@@ -548,14 +630,26 @@ struct elf_link_hash_table
 
   /* Whether we have created the special dynamic sections required
      when linking against or generating a shared object.  */
-  bfd_boolean dynamic_sections_created;
+  bool dynamic_sections_created;
 
   /* Whether dynamic relocations are present.  */
-  bfd_boolean dynamic_relocs;
+  bool dynamic_relocs;
 
   /* True if this target has relocatable executables, so needs dynamic
      section symbols.  */
-  bfd_boolean is_relocatable_executable;
+  bool is_relocatable_executable;
+
+  /* TRUE if there are IFUNC resolvers.  */
+  bool ifunc_resolvers;
+
+  /* TRUE if DT_PLTGOT is a required dynamic tag.  */
+  bool dt_pltgot_required;
+
+  /* TRUE if DT_JMPREL is a required dynamic tag.  */
+  bool dt_jmprel_required;
+
+  /* TRUE when we are handling DT_NEEDED entries.  */
+  bool handling_dt_needed;
 
   /* The BFD used to hold special sections created by the linker.
      This will be the first BFD found which requires these sections to
@@ -583,10 +677,6 @@ struct elf_link_hash_table
      section.  */
   struct elf_strtab_hash *dynstr;
 
-  /* The number of symbol strings found in the link which must be put
-     into the .strtab section.  */
-  bfd_size_type strtabcount;
-
   /* The array size of the symbol string table, which becomes the
      .strtab section.  */
   bfd_size_type strtabsize;
@@ -617,6 +707,9 @@ struct elf_link_hash_table
   /* The _DYNAMIC symbol.  */
   struct elf_link_hash_entry *hdynamic;
 
+  /* The __ehdr_start symbol.  */
+  struct elf_link_hash_entry *hehdr_start;
+
   /* A pointer to information used to merge SEC_MERGE sections.  */
   void *merge_info;
 
@@ -626,6 +719,9 @@ struct elf_link_hash_table
   /* Used by eh_frame code when editing .eh_frame.  */
   struct eh_frame_hdr_info eh_info;
 
+  /* Used to link stack trace info in .sframe sections.  */
+  struct sframe_enc_info sfe_info;
+
   /* A linked list of local symbols to be added to .dynsym.  */
   struct elf_link_local_dynamic_entry *dynlocal;
 
@@ -635,10 +731,31 @@ 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.  */
 
-  /* A linked list of BFD's loaded in the link.  */
-  struct elf_link_loaded_list *loaded;
+  /* 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;
+
+  /* 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;
+
+  /* Hash table of symbols which are first defined in archives or shared
+     objects when there are any IR inputs.  */
+  struct bfd_hash_table *first_hash;
 
   /* Short-cuts to get to dynamic linker sections.  */
   asection *sgot;
@@ -655,42 +772,57 @@ struct elf_link_hash_table
   asection *irelplt;
   asection *irelifunc;
   asection *dynsym;
+  asection *srelrdyn;
+  asection *dynamic;
 };
 
+/* Returns TRUE if the hash table is a struct elf_link_hash_table.  */
+
+static inline bool
+is_elf_hash_table (const struct bfd_link_hash_table *htab)
+{
+  return htab->type == bfd_link_elf_hash_table;
+}
+
 /* Look up an entry in an ELF linker hash table.  */
 
-#define elf_link_hash_lookup(table, string, create, copy, follow)	\
-  ((struct elf_link_hash_entry *)					\
-   bfd_link_hash_lookup (&(table)->root, (string), (create),		\
-			 (copy), (follow)))
+static inline struct elf_link_hash_entry *
+elf_link_hash_lookup (struct elf_link_hash_table *table, const char *string,
+		      bool create, bool copy, bool follow)
+{
+  if (ENABLE_CHECKING && !is_elf_hash_table (&table->root))
+    abort ();
+  return (struct elf_link_hash_entry *)
+    bfd_link_hash_lookup (&table->root, string, create, copy, follow);
+}
 
 /* Traverse an ELF linker hash table.  */
 
-#define elf_link_hash_traverse(table, func, info)			\
-  (bfd_link_hash_traverse						\
-   (&(table)->root,							\
-    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func),	\
-    (info)))
+static inline void
+elf_link_hash_traverse (struct elf_link_hash_table *table,
+			bool (*f) (struct elf_link_hash_entry *, void *),
+			void *info)
+{
+  if (ENABLE_CHECKING && !is_elf_hash_table (&table->root))
+    abort ();
+  bfd_link_hash_traverse (&table->root,
+			  (bool (*) (struct bfd_link_hash_entry *, void *)) f,
+			  info);
+}
 
 /* Get the ELF linker hash table from a link_info structure.  */
 
-#define elf_hash_table(p) ((struct elf_link_hash_table *) ((p)->hash))
-
-#define elf_hash_table_id(table)	((table) -> hash_table_id)
-
-/* 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)
+static inline struct elf_link_hash_table *
+elf_hash_table (const struct bfd_link_info *info)
+{
+  return (struct elf_link_hash_table *) info->hash;
+}
 
-/* Used by bfd_sym_from_r_symndx to cache a small number of local
-   symbols.  */
-#define LOCAL_SYM_CACHE_SIZE 32
-struct sym_cache
+static inline enum elf_target_id
+elf_hash_table_id (const struct elf_link_hash_table *table)
 {
-  bfd *abfd;
-  unsigned long indx[LOCAL_SYM_CACHE_SIZE];
-  Elf_Internal_Sym sym[LOCAL_SYM_CACHE_SIZE];
-};
+  return table->hash_table_id;
+}
 
 /* Constant information held for an ELF backend.  */
 
@@ -712,20 +844,19 @@ struct elf_size_info {
   unsigned char elfclass, ev_current;
   int (*write_out_phdrs)
     (bfd *, const Elf_Internal_Phdr *, unsigned int);
-  bfd_boolean
-    (*write_shdrs_and_ehdr) (bfd *);
-  bfd_boolean (*checksum_contents)
+  bool (*write_shdrs_and_ehdr) (bfd *);
+  bool (*checksum_contents)
     (bfd * , void (*) (const void *, size_t, void *), void *);
   void (*write_relocs)
     (bfd *, asection *, void *);
-  bfd_boolean (*swap_symbol_in)
+  bool (*swap_symbol_in)
     (bfd *, const void *, const void *, Elf_Internal_Sym *);
   void (*swap_symbol_out)
     (bfd *, const Elf_Internal_Sym *, void *, void *);
-  bfd_boolean (*slurp_reloc_table)
-    (bfd *, asection *, asymbol **, bfd_boolean);
+  bool (*slurp_reloc_table)
+    (bfd *, asection *, asymbol **, bool);
   long (*slurp_symbol_table)
-    (bfd *, asymbol **, bfd_boolean);
+    (bfd *, asymbol **, bool);
   void (*swap_dyn_in)
     (bfd *, const void *, Elf_Internal_Dyn *);
   void (*swap_dyn_out)
@@ -752,8 +883,9 @@ struct elf_size_info {
     (bfd *, const Elf_Internal_Rela *, bfd_byte *);
 };
 
-#define elf_symbol_from(ABFD,S) \
-  (((S)->the_bfd != NULL					\
+#define elf_symbol_from(S) \
+  ((((S)->flags & BSF_SYNTHETIC) == 0				\
+    && (S)->the_bfd != NULL					\
     && (S)->the_bfd->xvec->flavour == bfd_target_elf_flavour	\
     && (S)->the_bfd->tdata.elf_obj_data != 0)			\
    ? (elf_symbol_type *) (S)					\
@@ -776,7 +908,7 @@ struct elf_reloc_cookie
   size_t extsymoff;
   struct elf_link_hash_entry **sym_hashes;
   int r_sym_shift;
-  bfd_boolean bad_symtab;
+  bool bad_symtab;
 };
 
 /* The level of IRIX compatibility we're striving for.  */
@@ -846,6 +978,19 @@ typedef struct elf_property_list
   struct elf_property property;
 } elf_property_list;
 
+/* This structure is used to pass information to
+   elf_backend_add_glibc_version_dependency.  */
+
+struct elf_find_verdep_info
+{
+  /* General link information.  */
+  struct bfd_link_info *info;
+  /* The number of dependencies.  */
+  unsigned int vers;
+  /* Whether we had a failure.  */
+  bool failed;
+};
+
 struct bfd_elf_section_reloc_data;
 
 struct elf_backend_data
@@ -857,6 +1002,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;
 
@@ -874,8 +1022,9 @@ struct elf_backend_data
   /* The common page size for this backend.  */
   bfd_vma commonpagesize;
 
-  /* The value of commonpagesize to use when -z relro for this backend.  */
-  bfd_vma relropagesize;
+  /* The p_align value for this backend.  If it is set, p_align of
+      PT_LOAD alignment will be to p_align by default.  */
+  bfd_vma p_align;
 
   /* The BFD flags applied to sections created for dynamic linking.  */
   flagword dynamic_sec_flags;
@@ -886,12 +1035,12 @@ struct elf_backend_data
 
   /* A function to translate an ELF RELA relocation to a BFD arelent
      structure.  Returns TRUE upon success, FALSE otherwise.  */
-  bfd_boolean (*elf_info_to_howto)
+  bool (*elf_info_to_howto)
     (bfd *, arelent *, Elf_Internal_Rela *);
 
   /* A function to translate an ELF REL relocation to a BFD arelent
      structure.  Returns TRUE upon success, FALSE otherwise.  */
-  bfd_boolean (*elf_info_to_howto_rel)
+  bool (*elf_info_to_howto_rel)
     (bfd *, arelent *, Elf_Internal_Rela *);
 
   /* A function to determine whether a symbol is global when
@@ -899,7 +1048,7 @@ struct elf_backend_data
      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_sym_is_global)
+  bool (*elf_backend_sym_is_global)
     (bfd *, asymbol *);
 
   /* The remaining functions are hooks which are called only if they
@@ -911,7 +1060,7 @@ struct elf_backend_data
      this is called elf_elfheader is set, but anything else should be
      used with caution.  If this returns FALSE, the check_format
      routine will return a bfd_error_wrong_format error.  */
-  bfd_boolean (*elf_backend_object_p)
+  bool (*elf_backend_object_p)
     (bfd *);
 
   /* A function to do additional symbol processing when reading the
@@ -922,7 +1071,7 @@ struct elf_backend_data
 
   /* A function to do additional symbol processing after reading the
      entire ELF symbol table.  */
-  bfd_boolean (*elf_backend_symbol_table_processing)
+  bool (*elf_backend_symbol_table_processing)
     (bfd *, elf_symbol_type *, unsigned int);
 
   /* A function to set the type of the info field.  Processor-specific
@@ -932,30 +1081,30 @@ struct elf_backend_data
 
   /* A function to return the linker hash table entry of a symbol that
      might be satisfied by an archive symbol.  */
-  struct elf_link_hash_entry * (*elf_backend_archive_symbol_lookup)
+  struct bfd_link_hash_entry * (*elf_backend_archive_symbol_lookup)
     (bfd *, struct bfd_link_info *, const char *);
 
   /* Return true if local section symbols should have a non-null st_name.
      NULL implies false.  */
-  bfd_boolean (*elf_backend_name_local_section_symbols)
+  bool (*elf_backend_name_local_section_symbols)
     (bfd *);
 
   /* A function to do additional processing on the ELF section header
      just before writing it out.  This is used to set the flags and
      type fields for some sections, or to actually write out data for
      unusual sections.  */
-  bfd_boolean (*elf_backend_section_processing)
+  bool (*elf_backend_section_processing)
     (bfd *, Elf_Internal_Shdr *);
 
   /* A function to handle unusual section types when creating BFD
      sections from ELF sections.  */
-  bfd_boolean (*elf_backend_section_from_shdr)
+  bool (*elf_backend_section_from_shdr)
     (bfd *, Elf_Internal_Shdr *, const char *, int);
 
   /* 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 *);
+  bool (*elf_backend_section_flags)
+    (const Elf_Internal_Shdr *);
 
   /* A function that returns a struct containing ELF section flags and
      type for the given BFD section.   */
@@ -964,20 +1113,20 @@ struct elf_backend_data
 
   /* A function to handle unusual program segment types when creating BFD
      sections from ELF program segments.  */
-  bfd_boolean (*elf_backend_section_from_phdr)
+  bool (*elf_backend_section_from_phdr)
     (bfd *, Elf_Internal_Phdr *, int, const char *);
 
   /* A function to set up the ELF section header for a BFD section in
      preparation for writing it out.  This is where the flags and type
      fields are set for unusual sections.  */
-  bfd_boolean (*elf_backend_fake_sections)
+  bool (*elf_backend_fake_sections)
     (bfd *, Elf_Internal_Shdr *, asection *);
 
   /* A function to get the ELF section index for a BFD section.  If
      this returns TRUE, the section was found.  If it is a normal ELF
      section, *RETVAL should be left unchanged.  If it is not a normal
      ELF section *RETVAL should be set to the SHN_xxxx index.  */
-  bfd_boolean (*elf_backend_section_from_bfd_section)
+  bool (*elf_backend_section_from_bfd_section)
     (bfd *, asection *, int *retval);
 
   /* If this field is not NULL, it is called by the add_symbols phase
@@ -988,7 +1137,7 @@ struct elf_backend_data
      handling all processor dependent symbol bindings and section
      indices, and must set at least *FLAGS and *SEC for each processor
      dependent case; failure to do so will cause a link error.  */
-  bfd_boolean (*elf_add_symbol_hook)
+  bool (*elf_add_symbol_hook)
     (bfd *abfd, struct bfd_link_info *info, Elf_Internal_Sym *,
      const char **name, flagword *flags, asection **sec, bfd_vma *value);
 
@@ -1008,50 +1157,58 @@ struct elf_backend_data
      created, and this function may modify the section flags if
      desired.  This function will normally create the .got and .plt
      sections, but different backends have different requirements.  */
-  bfd_boolean (*elf_backend_create_dynamic_sections)
+  bool (*elf_backend_create_dynamic_sections)
     (bfd *abfd, struct bfd_link_info *info);
 
   /* When creating a shared library, determine whether to omit the
      dynamic symbol for the section.  */
-  bfd_boolean (*elf_backend_omit_section_dynsym)
+  bool (*elf_backend_omit_section_dynsym)
     (bfd *output_bfd, struct bfd_link_info *info, asection *osec);
 
   /* Return TRUE if relocations of targets are compatible to the extent
      that CHECK_RELOCS will properly process them.  PR 4424.  */
-  bfd_boolean (*relocs_compatible) (const bfd_target *, const bfd_target *);
+  bool (*relocs_compatible) (const bfd_target *, const bfd_target *);
 
-  /* The CHECK_RELOCS function is called by the add_symbols phase of
-     the ELF backend linker.  It is called once for each section with
-     relocs of an object file, just after the symbols for the object
-     file have been added to the global linker hash table.  The
-     function must look through the relocs and do any special handling
-     required.  This generally means allocating space in the global
-     offset table, and perhaps allocating space for a reloc.  The
+  /* The CHECK_RELOCS function is called after all input files have been
+     opened.  It is called once for each section with relocs of an object
+     file.  The function must look through the relocs and do any special
+     handling required.  This generally means allocating space in the
+     global offset table, and perhaps allocating space for a reloc.  The
      relocs are always passed as Rela structures; if the section
      actually uses Rel structures, the r_addend field will always be
      zero.  */
-  bfd_boolean (*check_relocs)
+  bool (*check_relocs)
     (bfd *abfd, struct bfd_link_info *info, asection *o,
      const Elf_Internal_Rela *relocs);
 
+  /* The SIZE_RELATIVE_RELOCS function is called to size relative
+     relocations when mappig sections to segments.  */
+  bool (*size_relative_relocs)
+    (struct bfd_link_info *info, bool *need_layout);
+
+  /* The FINISH_RELATIVE_RELOCS function is called to finish relative
+     relocations in bfd_elf_final_link.  */
+  bool (*finish_relative_relocs)
+    (struct bfd_link_info *info);
+
   /* The CHECK_DIRECTIVES function is called once per input file by
      the add_symbols phase of the ELF backend linker.  The function
      must inspect the bfd and create any additional symbols according
      to any custom directives in the bfd.  */
-  bfd_boolean (*check_directives)
+  bool (*check_directives)
     (bfd *abfd, struct bfd_link_info *info);
 
   /* The NOTICE_AS_NEEDED function is called as the linker is about to
      handle an as-needed lib (ACT = notice_as_needed), and after the
      linker has decided to keep the lib (ACT = notice_needed) or when
      the lib is not needed (ACT = notice_not_needed).  */
-  bfd_boolean (*notice_as_needed)
+  bool (*notice_as_needed)
     (bfd *abfd, struct bfd_link_info *info, enum notice_asneeded_action act);
 
   /* The ADJUST_DYNAMIC_SYMBOL function is called by the ELF backend
      linker for every symbol which is defined by a dynamic object and
      referenced by a regular object.  This is called after all the
-     input files have been seen, but before the SIZE_DYNAMIC_SECTIONS
+     input files have been seen, but before the LATE_SIZE_SECTIONS
      function has been called.  The hash table entry should be
      bfd_link_hash_defined ore bfd_link_hash_defweak, and it should be
      defined in a section from a dynamic object.  Dynamic object
@@ -1060,29 +1217,34 @@ struct elf_backend_data
      the link can deal with.  This will normally involve adding an
      entry to the .plt or .got or some such section, and setting the
      symbol to point to that.  */
-  bfd_boolean (*elf_backend_adjust_dynamic_symbol)
+  bool (*elf_backend_adjust_dynamic_symbol)
     (struct bfd_link_info *info, struct elf_link_hash_entry *h);
 
-  /* The ALWAYS_SIZE_SECTIONS function is called by the backend linker
-     after all the linker input files have been seen but before the
-     section sizes have been set.  This is called after
-     ADJUST_DYNAMIC_SYMBOL, but before SIZE_DYNAMIC_SECTIONS.  */
-  bfd_boolean (*elf_backend_always_size_sections)
+  /* The EARLY_SIZE_SECTIONS and LATE_SIZE_SECTIONS functions are
+     called by the backend linker after all linker input files have
+     been seen and sections have been assigned to output sections, but
+     before the section sizes have been set.  Both of these functions
+     are called even when no dynamic object is seen by the linker.
+     Between them, they must set the sizes of the dynamic sections and
+     other backend specific sections, and may fill in their contents.
+     Most backends need only use LATE_SIZE_SECTIONS.
+     EARLY_SIZE_SECTIONS is called before --export-dynamic makes some
+     symbols dynamic and before ADJUST_DYNAMIC_SYMBOL processes
+     dynamic symbols, LATE_SIZE_SECTIONS afterwards.  The generic ELF
+     linker can handle the .dynsym, .dynstr and .hash sections.
+     Besides those, these functions must handle the .interp section
+     and any other sections created by CREATE_DYNAMIC_SECTIONS.  */
+  bool (*elf_backend_early_size_sections)
     (bfd *output_bfd, struct bfd_link_info *info);
-
-  /* The SIZE_DYNAMIC_SECTIONS function is called by the ELF backend
-     linker after all the linker input files have been seen but before
-     the sections sizes have been set.  This is called after
-     ADJUST_DYNAMIC_SYMBOL has been called on all appropriate symbols.
-     It is only called when linking against a dynamic object.  It must
-     set the sizes of the dynamic sections, and may fill in their
-     contents as well.  The generic ELF linker can handle the .dynsym,
-     .dynstr and .hash sections.  This function must handle the
-     .interp section and any sections created by the
-     CREATE_DYNAMIC_SECTIONS entry point.  */
-  bfd_boolean (*elf_backend_size_dynamic_sections)
+  bool (*elf_backend_late_size_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.  */
+  bool (*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)
@@ -1131,7 +1293,7 @@ struct elf_backend_data
      dynamic sections.  Note that FINISH_DYNAMIC_SYMBOL is called on
      all .dynsym symbols, while ADJUST_DYNAMIC_SYMBOL is only called
      on those symbols which are defined by a dynamic object.  */
-  bfd_boolean (*elf_backend_finish_dynamic_symbol)
+  bool (*elf_backend_finish_dynamic_symbol)
     (bfd *output_bfd, struct bfd_link_info *info,
      struct elf_link_hash_entry *h, Elf_Internal_Sym *sym);
 
@@ -1139,7 +1301,7 @@ struct elf_backend_data
      linker just before it writes all the dynamic sections out to the
      output file.  The FINISH_DYNAMIC_SYMBOL will have been called on
      all dynamic symbols.  */
-  bfd_boolean (*elf_backend_finish_dynamic_sections)
+  bool (*elf_backend_finish_dynamic_sections)
     (bfd *output_bfd, struct bfd_link_info *info);
 
   /* A function to do any beginning processing needed for the ELF file
@@ -1149,7 +1311,7 @@ struct elf_backend_data
 
   /* A function to do any final processing needed for the ELF file
      before writing it out.  */
-  bfd_boolean (*elf_backend_final_write_processing)
+  bool (*elf_backend_final_write_processing)
     (bfd *);
 
   /* This function is called by get_program_header_size.  It should
@@ -1160,17 +1322,17 @@ struct elf_backend_data
 
   /* This function is called to modify an existing segment map in a
      backend specific fashion.  */
-  bfd_boolean (*elf_backend_modify_segment_map)
+  bool (*elf_backend_modify_segment_map)
     (bfd *, struct bfd_link_info *);
 
   /* This function is called to modify program headers just before
      they are written.  */
-  bfd_boolean (*elf_backend_modify_headers)
+  bool (*elf_backend_modify_headers)
     (bfd *, struct bfd_link_info *);
 
   /* This function is called to see if the PHDR header should be
      checked for validity.  */
-  bfd_boolean (*elf_backend_allow_non_load_phdr)
+  bool (*elf_backend_allow_non_load_phdr)
     (bfd *,  const Elf_Internal_Phdr *, unsigned);
 
   /* This function is called before section garbage collection to
@@ -1180,7 +1342,7 @@ struct elf_backend_data
 
   /* This function is called during section garbage collection to
      mark sections that define global symbols.  */
-  bfd_boolean (*gc_mark_dynamic_ref)
+  bool (*gc_mark_dynamic_ref)
     (struct elf_link_hash_entry *, void *);
 
   /* This function is called during section gc to discover the section a
@@ -1189,12 +1351,12 @@ struct elf_backend_data
 
   /* This function, if defined, is called after the first gc marking pass
      to allow the backend to mark additional sections.  */
-  bfd_boolean (*gc_mark_extra_sections)
+  bool (*gc_mark_extra_sections)
     (struct bfd_link_info *, elf_gc_mark_hook_fn);
 
   /* This function is called to initialise ELF file header info.
      Customised versions can modify things like the OS and ABI version.  */
-  bfd_boolean (*elf_backend_init_file_header)
+  bool (*elf_backend_init_file_header)
     (bfd *, struct bfd_link_info *);
 
   /* This function, if defined, prints a symbol to file and returns the
@@ -1207,18 +1369,18 @@ struct elf_backend_data
      global symbols converted to locals are emitted into the symtab
      section.  It allows the backend to emit special local symbols
      not handled in the hash table.  */
-  bfd_boolean (*elf_backend_output_arch_local_syms)
+  bool (*elf_backend_output_arch_local_syms)
     (bfd *, struct bfd_link_info *, void *,
-     bfd_boolean (*) (void *, const char *, Elf_Internal_Sym *, asection *,
-		      struct elf_link_hash_entry *));
+     int (*) (void *, const char *, Elf_Internal_Sym *, asection *,
+	      struct elf_link_hash_entry *));
 
   /* This function, if defined, is called after all symbols are emitted
      into the symtab section.  It allows the backend to emit special
      global symbols not handled in the hash table.  */
-  bfd_boolean (*elf_backend_output_arch_syms)
+  bool (*elf_backend_output_arch_syms)
     (bfd *, struct bfd_link_info *, void *,
-     bfd_boolean (*) (void *, const char *, Elf_Internal_Sym *, asection *,
-		      struct elf_link_hash_entry *));
+     int (*) (void *, const char *, Elf_Internal_Sym *, asection *,
+	      struct elf_link_hash_entry *));
 
   /* Filter what symbols of the output file to include in the import
      library if one is created.  */
@@ -1237,17 +1399,16 @@ struct elf_backend_data
   /* Modify any information related to dynamic linking such that the
      symbol is not exported.  */
   void (*elf_backend_hide_symbol)
-    (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean);
+    (struct bfd_link_info *, struct elf_link_hash_entry *, bool);
 
   /* A function to do additional symbol fixup, called by
      _bfd_elf_fix_symbol_flags.  */
-  bfd_boolean (*elf_backend_fixup_symbol)
+  bool (*elf_backend_fixup_symbol)
     (struct bfd_link_info *, struct elf_link_hash_entry *);
 
   /* Merge the backend specific symbol attribute.  */
   void (*elf_backend_merge_symbol_attribute)
-    (struct elf_link_hash_entry *, const Elf_Internal_Sym *, bfd_boolean,
-     bfd_boolean);
+    (struct elf_link_hash_entry *, unsigned int, bool, bool);
 
   /* This function, if defined, will return a string containing the
      name of a target-specific dynamic tag.  */
@@ -1256,12 +1417,12 @@ struct elf_backend_data
 
   /* Decide whether an undefined symbol is special and can be ignored.
      This is the case for OPTIONAL symbols on IRIX.  */
-  bfd_boolean (*elf_backend_ignore_undef_symbol)
+  bool (*elf_backend_ignore_undef_symbol)
     (struct elf_link_hash_entry *);
 
   /* Emit relocations.  Overrides default routine for emitting relocs,
      except during a relocatable link, or if all relocs are being emitted.  */
-  bfd_boolean (*elf_backend_emit_relocs)
+  bool (*elf_backend_emit_relocs)
     (bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *,
      struct elf_link_hash_entry **);
 
@@ -1282,22 +1443,22 @@ struct elf_backend_data
 
   /* Say whether to sort relocs output by ld -r and ld --emit-relocs,
      by r_offset.  If NULL, default to true.  */
-  bfd_boolean (*sort_relocs_p)
+  bool (*sort_relocs_p)
     (asection *);
 
   /* This function, if defined, is called when an NT_PRSTATUS note is found
      in a core file.  */
-  bfd_boolean (*elf_backend_grok_prstatus)
+  bool (*elf_backend_grok_prstatus)
     (bfd *, Elf_Internal_Note *);
 
   /* This function, if defined, is called when an NT_PSINFO or NT_PRPSINFO
      note is found in a core file.  */
-  bfd_boolean (*elf_backend_grok_psinfo)
+  bool (*elf_backend_grok_psinfo)
     (bfd *, Elf_Internal_Note *);
 
   /* This function, if defined, is called when a "FreeBSD" NT_PRSTATUS
      note is found in a core file.  */
-  bfd_boolean (*elf_backend_grok_freebsd_prstatus)
+  bool (*elf_backend_grok_freebsd_prstatus)
     (bfd *, Elf_Internal_Note *);
 
   /* This function, if defined, is called to write a note to a corefile.  */
@@ -1315,12 +1476,12 @@ struct elf_backend_data
 
   /* This function, if defined, removes information about discarded functions
      from other sections which mention them.  */
-  bfd_boolean (*elf_backend_discard_info)
+  bool (*elf_backend_discard_info)
     (bfd *, struct elf_reloc_cookie *, struct bfd_link_info *);
 
   /* This function, if defined, signals that the function above has removed
      the discarded relocations for this section.  */
-  bfd_boolean (*elf_backend_ignore_discarded_relocs)
+  bool (*elf_backend_ignore_discarded_relocs)
     (asection *);
 
   /* What to do when ld finds relocations against symbols defined in
@@ -1337,11 +1498,14 @@ struct elf_backend_data
   /* These functions tell elf-eh-frame whether to attempt to turn
      absolute or lsda encodings into pc-relative ones.  The default
      definition enables these transformations.  */
-  bfd_boolean (*elf_backend_can_make_relative_eh_frame)
+  bool (*elf_backend_can_make_relative_eh_frame)
      (bfd *, struct bfd_link_info *, asection *);
-  bfd_boolean (*elf_backend_can_make_lsda_relative_eh_frame)
+  bool (*elf_backend_can_make_lsda_relative_eh_frame)
      (bfd *, struct bfd_link_info *, asection *);
 
+  /* Tell linker to support multiple eh_frame sections.  */
+  bool elf_backend_can_make_multiple_eh_frame;
+
   /* This function returns an encoding after computing the encoded
      value (and storing it in ENCODED) for the given OFFSET into OSEC,
      to be stored in at LOC_OFFSET into the LOC_SEC input section.
@@ -1354,16 +1518,28 @@ struct elf_backend_data
 
   /* This function, if defined, may write out the given section.
      Returns TRUE if it did so and FALSE if the caller should.  */
-  bfd_boolean (*elf_backend_write_section)
+  bool (*elf_backend_write_section)
     (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
 
+  /* This function adds glibc version dependency.  */
+  void (*elf_backend_add_glibc_version_dependency)
+    (struct elf_find_verdep_info *);
+
+  /* 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.  */
+  bool (*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)
     (bfd *);
 
   reloc_howto_type *(*elf_backend_mips_rtype_to_howto)
-    (bfd *, unsigned int, bfd_boolean);
+    (bfd *, unsigned int, bool);
 
   /* The swapping table to use when dealing with ECOFF information.
      Used for the MIPS ELF .mdebug section.  */
@@ -1376,14 +1552,14 @@ struct elf_backend_data
      int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr,
 				bfd_size_type len));
 
-  bfd_boolean (*elf_backend_core_find_build_id) (bfd *, bfd_vma);
+  bool (*elf_backend_core_find_build_id) (bfd *, bfd_vma);
 
   /* This function is used by `_bfd_elf_get_synthetic_symtab';
      see elf.c.  */
   bfd_vma (*plt_sym_val) (bfd_vma, const asection *, const arelent *);
 
   /* Is symbol defined in common section?  */
-  bfd_boolean (*common_definition) (Elf_Internal_Sym *);
+  bool (*common_definition) (Elf_Internal_Sym *);
 
   /* Return a common section index for section.  */
   unsigned int (*common_section_index) (asection *);
@@ -1392,13 +1568,13 @@ struct elf_backend_data
   asection *(*common_section) (asection *);
 
   /* Return TRUE if we can merge 2 definitions.  */
-  bfd_boolean (*merge_symbol) (struct elf_link_hash_entry *,
+  bool (*merge_symbol) (struct elf_link_hash_entry *,
 			       const Elf_Internal_Sym *, asection **,
-			       bfd_boolean, bfd_boolean,
+			       bool, bool,
 			       bfd *, const asection *);
 
   /* Return TRUE if symbol should be hashed in the `.gnu.hash' section.  */
-  bfd_boolean (*elf_hash_symbol) (struct elf_link_hash_entry *);
+  bool (*elf_hash_symbol) (struct elf_link_hash_entry *);
 
   /* If non-NULL, called to register the location of XLAT_LOC within
      .MIPS.xhash at which real final dynindx for H will be written.
@@ -1408,7 +1584,7 @@ struct elf_backend_data
     (struct elf_link_hash_entry *h, bfd_vma xlat_loc);
 
   /* Return TRUE if type is a function symbol type.  */
-  bfd_boolean (*is_function_type) (unsigned int type);
+  bool (*is_function_type) (unsigned int type);
 
   /* If the ELF symbol SYM might be a function in SEC, return the
      function size and set *CODE_OFF to the function's entry point,
@@ -1427,7 +1603,7 @@ struct elf_backend_data
      until it returns TRUE.  Most of the times it is called ISECTION will be
      set to an input section that might be associated with the output section.
      The last time that it is called, ISECTION will be set to NULL.  */
-  bfd_boolean (*elf_backend_copy_special_section_fields)
+  bool (*elf_backend_copy_special_section_fields)
     (const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *isection,
      Elf_Internal_Shdr *osection);
 
@@ -1478,7 +1654,7 @@ struct elf_backend_data
 
   /* Handle merging unknown attributes; either warn and return TRUE,
      or give an error and return FALSE.  */
-  bfd_boolean (*obj_attrs_handle_unknown) (bfd *, int);
+  bool (*obj_attrs_handle_unknown) (bfd *, int);
 
   /* Parse GNU properties.  Return the property kind.  If the property
      is corrupt, issue an error message and return property_corrupt.  */
@@ -1487,7 +1663,7 @@ struct elf_backend_data
 						  unsigned int);
 
   /* Merge GNU properties.  Return TRUE if property is updated.  */
-  bfd_boolean (*merge_gnu_properties) (struct bfd_link_info *, bfd *, bfd *,
+  bool (*merge_gnu_properties) (struct bfd_link_info *, bfd *, bfd *,
 				       elf_property *, elf_property *);
 
   /* Set up GNU properties.  */
@@ -1503,6 +1679,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.  */
+  bool (*init_secondary_reloc_section) (bfd *, Elf_Internal_Shdr *,
+					const char *, unsigned int);
+
+  /* Called when after loading the normal relocs for a section.  */
+  bool (*slurp_secondary_relocs) (bfd *, asection *, asymbol **, bool);
+
+  /* Called after writing the normal relocs for a section.  */
+  bool (*write_secondary_relocs) (bfd *, asection *);
+
   /* This is non-zero if static TLS segments require a special alignment.  */
   unsigned static_tls_alignment;
 
@@ -1603,6 +1795,12 @@ struct elf_backend_data
   /* True if the 64-bit Linux PRPSINFO structure's `pr_uid' and `pr_gid'
      members use a 16-bit data type.  */
   unsigned linux_prpsinfo64_ugid16 : 1;
+
+  /* True if the backend can use mmap to map in all input section
+     contents.  All bfd_malloc_and_get_section and free usages on
+     section contents must be replaced by _bfd_elf_mmap_section_contents
+     and _bfd_elf_munmap_section_contents.  */
+  unsigned use_mmap : 1;
 };
 
 /* Information about reloc sections associated with a bfd_elf_section_data
@@ -1684,6 +1882,20 @@ struct bfd_elf_section_data
   /* Link from a text section to its .eh_frame_entry section.  */
   asection *eh_frame_entry;
 
+  /* If the mmapped_p flag is set, this points to the actual mmapped
+     address of contents.  If it is set to NULL, contents isn't
+     mmapped.  */
+  void *contents_addr;
+
+  /* If the mmapped_p flag is set, this is the actual mmapped size of
+     contents.  */
+  size_t contents_size;
+
+  /* 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.  */
+  bool has_secondary_relocs;
+
   /* A pointer used for various section optimizations.  */
   void *sec_info;
 };
@@ -1713,7 +1925,7 @@ struct bfd_elf_section_data
 #define LEAST_KNOWN_OBJ_ATTRIBUTE 2
 
 /* The maximum number of known object attributes for any target.  */
-#define NUM_KNOWN_OBJ_ATTRIBUTES 71
+#define NUM_KNOWN_OBJ_ATTRIBUTES 77
 
 /* The value of an object attribute.  The type indicates whether the attribute
    holds and integer, a string, or both.  It can also indicate that there can
@@ -1791,42 +2003,57 @@ struct output_elf_obj_tdata
   /* STT_SECTION symbols for each section */
   asymbol **section_syms;
 
-  /* Used to determine if PT_GNU_EH_FRAME segment header should be
-     created.  */
-  asection *eh_frame_hdr;
-
   /* NT_GNU_BUILD_ID note type info.  */
   struct
   {
-    bfd_boolean (*after_write_object_contents) (bfd *);
+    bool (*after_write_object_contents) (bfd *);
     const char *style;
     asection *sec;
   } build_id;
 
+  /* FDO_PACKAGING_METADATA note type info.  */
+  struct
+  {
+    bool (*after_write_object_contents) (bfd *);
+    const char *json;
+    asection *sec;
+  } package_metadata;
+
   /* Records the result of `get_program_header_size'.  */
   bfd_size_type program_header_size;
 
   /* Used when laying out sections.  */
   file_ptr next_file_pos;
 
-  int num_section_syms;
+  /* Linker information.  */
+  struct bfd_link_info *link_info;
+
+  unsigned int num_section_syms;
   unsigned int shstrtab_section, strtab_section;
 
   /* Segment flags for the PT_GNU_STACK segment.  */
   unsigned int stack_flags;
 
+  /* Used to determine if PT_GNU_SFRAME segment header should be
+     created.  */
+  asection *sframe;
+
+  /* Holds the build attributes section if it exists.  */
+  asection *obj_build_attributes;
+
   /* Used to determine if the e_flags field has been initialized */
-  bfd_boolean flags_init;
+  bool flags_init;
 };
 
-/* Indicate if the bfd contains SHF_GNU_MBIND sections or symbols that
-   have the STT_GNU_IFUNC symbol type or STB_GNU_UNIQUE binding.  Used
-   to set the osabi field in the ELF header structure.  */
+/* Indicate if the bfd contains SHF_GNU_MBIND/SHF_GNU_RETAIN sections or
+   symbols that have the STT_GNU_IFUNC symbol type or STB_GNU_UNIQUE
+   binding.  Used to set the osabi field in the ELF header structure.  */
 enum elf_gnu_osabi
 {
   elf_gnu_osabi_mbind = 1 << 0,
   elf_gnu_osabi_ifunc = 1 << 1,
   elf_gnu_osabi_unique = 1 << 2,
+  elf_gnu_osabi_retain = 1 << 3,
 };
 
 typedef struct elf_section_list
@@ -1860,10 +2087,20 @@ struct elf_obj_tdata
   Elf_Internal_Shdr dynversym_hdr;
   Elf_Internal_Shdr dynverref_hdr;
   Elf_Internal_Shdr dynverdef_hdr;
+  Elf_Internal_Sym *dt_symtab;
+  bfd_byte *dt_versym;
+  bfd_byte *dt_verdef;
+  bfd_byte *dt_verneed;
+  size_t dt_symtab_count;
+  size_t dt_verdef_count;
+  size_t dt_verneed_count;
+  char * dt_strtab;
+  size_t dt_strsz;
   elf_section_list * symtab_shndx_list;
   bfd_vma gp;				/* The gp value */
   unsigned int gp_size;			/* The gp size */
   unsigned int num_elf_sections;	/* elf_sect_ptr size */
+  unsigned char *being_created;
 
   /* A mapping from external symbols to entries in the linker hash
      table, used when linking.  This is indexed by the symbol index
@@ -1898,7 +2135,7 @@ struct elf_obj_tdata
   void *line_info;
 
   /* A place to stash dwarf1 info for this bfd.  */
-  struct dwarf1_debug *dwarf1_find_line_info;
+  void *dwarf1_find_line_info;
 
   /* A place to stash dwarf2 info for this bfd.  */
   void *dwarf2_find_line_info;
@@ -1936,13 +2173,6 @@ struct elf_obj_tdata
      in the list.  */
   struct sdt_note *sdt_note_head;
 
-  Elf_Internal_Shdr **group_sect_ptr;
-  int num_group;
-
-  /* Index into group_sect_ptr, updated by setup_group when finding a
-     section's group.  Used to optimize subsequent group searches.  */
-  unsigned int group_search_offset;
-
   unsigned int symtab_section, dynsymtab_section;
   unsigned int dynversym_section, dynverdef_section, dynverref_section;
 
@@ -1956,12 +2186,16 @@ struct elf_obj_tdata
   ENUM_BITFIELD (dynamic_lib_link_class) dyn_lib_class : 4;
 
   /* Whether the bfd uses OS specific bits that require ELFOSABI_GNU.  */
-  ENUM_BITFIELD (elf_gnu_osabi) has_gnu_osabi : 3;
+  ENUM_BITFIELD (elf_gnu_osabi) has_gnu_osabi : 4;
 
   /* Whether if the bfd contains the GNU_PROPERTY_NO_COPY_ON_PROTECTED
      property.  */
   unsigned int has_no_copy_on_protected : 1;
 
+  /* Whether if the bfd contains the
+     GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS property.  */
+  unsigned int has_indirect_extern_access : 1;
+
   /* Irix 5 often screws up the symbol table, sorting local symbols
      after global symbols.  This flag is set if the symbol table in
      this BFD appears to be screwed up.  If it is, we ignore the
@@ -1969,6 +2203,9 @@ struct elf_obj_tdata
      symbols.  */
   unsigned int bad_symtab : 1;
 
+  /* Set if DT_FLAGS_1 has DF_1_PIE set.  */
+  unsigned int is_pie : 1;
+
   /* Information grabbed from an elf core file.  */
   struct core_elf_obj_tdata *core;
 
@@ -1984,9 +2221,12 @@ struct elf_obj_tdata
 #define elf_elfsections(bfd)	(elf_tdata(bfd) -> elf_sect_ptr)
 #define elf_numsections(bfd)	(elf_tdata(bfd) -> num_elf_sections)
 #define elf_seg_map(bfd)	(elf_tdata(bfd) -> o->seg_map)
+#define elf_link_info(bfd)	(elf_tdata(bfd) -> o->link_info)
 #define elf_next_file_pos(bfd)	(elf_tdata(bfd) -> o->next_file_pos)
-#define elf_eh_frame_hdr(bfd)	(elf_tdata(bfd) -> o->eh_frame_hdr)
 #define elf_stack_flags(bfd)	(elf_tdata(bfd) -> o->stack_flags)
+#define elf_sframe(bfd)		(elf_tdata(bfd) -> o->sframe)
+#define elf_obj_build_attributes(bfd) \
+				(elf_tdata(bfd) -> o->obj_build_attributes)
 #define elf_shstrtab(bfd)	(elf_tdata(bfd) -> o->strtab_ptr)
 #define elf_onesymtab(bfd)	(elf_tdata(bfd) -> symtab_section)
 #define elf_symtab_shndx_list(bfd)	(elf_tdata(bfd) -> symtab_shndx_list)
@@ -2014,6 +2254,7 @@ struct elf_obj_tdata
 #define elf_dyn_lib_class(bfd)	(elf_tdata(bfd) -> dyn_lib_class)
 #define elf_bad_symtab(bfd)	(elf_tdata(bfd) -> bad_symtab)
 #define elf_flags_init(bfd)	(elf_tdata(bfd) -> o->flags_init)
+#define elf_use_dt_symtab_p(bfd) (elf_tdata(bfd) -> dt_symtab_count != 0)
 #define elf_known_obj_attributes(bfd) (elf_tdata (bfd) -> known_obj_attributes)
 #define elf_other_obj_attributes(bfd) (elf_tdata (bfd) -> other_obj_attributes)
 #define elf_known_obj_attributes_proc(bfd) \
@@ -2023,6 +2264,8 @@ struct elf_obj_tdata
 #define elf_properties(bfd) (elf_tdata (bfd) -> properties)
 #define elf_has_no_copy_on_protected(bfd) \
   (elf_tdata(bfd) -> has_no_copy_on_protected)
+#define elf_has_indirect_extern_access(bfd) \
+  (elf_tdata(bfd) -> has_indirect_extern_access)
 
 extern void _bfd_elf_swap_verdef_in
   (bfd *, const Elf_External_Verdef *, Elf_Internal_Verdef *);
@@ -2056,12 +2299,12 @@ extern char * bfd_elf_get_str_section (b
 extern const char *bfd_elf_sym_name
   (bfd *, Elf_Internal_Shdr *, Elf_Internal_Sym *, asection *);
 
-extern bfd_boolean _bfd_elf_copy_private_bfd_data
+extern bool _bfd_elf_copy_private_bfd_data
   (bfd *, bfd *);
-extern bfd_boolean _bfd_elf_print_private_bfd_data
+extern bool _bfd_elf_print_private_bfd_data
   (bfd *, void *);
 const char * _bfd_elf_get_symbol_version_string
-  (bfd *, asymbol *, bfd_boolean *);
+  (bfd *, asymbol *, bool, bool *);
 extern void bfd_elf_print_symbol
   (bfd *, void *, asymbol *, bfd_print_symbol_type);
 
@@ -2070,7 +2313,7 @@ extern unsigned int _bfd_elf_eh_frame_ad
 extern bfd_byte _bfd_elf_encode_eh_address
   (bfd *abfd, struct bfd_link_info *info, asection *osec, bfd_vma offset,
    asection *loc_sec, bfd_vma loc_offset, bfd_vma *encoded);
-extern bfd_boolean _bfd_elf_can_make_relative
+extern bool _bfd_elf_can_make_relative
   (bfd *input_bfd, struct bfd_link_info *info, asection *eh_frame_section);
 
 extern enum elf_reloc_type_class _bfd_elf_reloc_type_class
@@ -2090,15 +2333,15 @@ extern unsigned long bfd_elf_gnu_hash
 
 extern bfd_reloc_status_type bfd_elf_generic_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-extern bfd_boolean bfd_elf_allocate_object
-  (bfd *, size_t, enum elf_target_id);
-extern bfd_boolean bfd_elf_make_object
+extern bool bfd_elf_allocate_object
+  (bfd *, size_t);
+extern bool bfd_elf_make_object
   (bfd *);
-extern bfd_boolean bfd_elf_mkcorefile
+extern bool bfd_elf_mkcorefile
   (bfd *);
-extern bfd_boolean _bfd_elf_make_section_from_shdr
+extern bool _bfd_elf_make_section_from_shdr
   (bfd *, Elf_Internal_Shdr *, const char *, int);
-extern bfd_boolean _bfd_elf_make_section_from_phdr
+extern bool _bfd_elf_make_section_from_phdr
   (bfd *, Elf_Internal_Phdr *, int, const char *);
 extern struct bfd_hash_entry *_bfd_elf_link_hash_newfunc
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
@@ -2110,27 +2353,27 @@ extern void _bfd_elf_link_hash_copy_indi
   (struct bfd_link_info *, struct elf_link_hash_entry *,
    struct elf_link_hash_entry *);
 extern void _bfd_elf_link_hash_hide_symbol
-  (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean);
+  (struct bfd_link_info *, struct elf_link_hash_entry *, bool);
 extern void _bfd_elf_link_hide_symbol
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
-extern bfd_boolean _bfd_elf_link_hash_fixup_symbol
+extern bool _bfd_elf_link_hash_fixup_symbol
   (struct bfd_link_info *, struct elf_link_hash_entry *);
-extern bfd_boolean _bfd_elf_link_hash_table_init
+extern bool _bfd_elf_link_hash_table_init
   (struct elf_link_hash_table *, bfd *,
    struct bfd_hash_entry *(*)
      (struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
-   unsigned int, enum elf_target_id);
-extern bfd_boolean _bfd_elf_slurp_version_tables
-  (bfd *, bfd_boolean);
-extern bfd_boolean _bfd_elf_merge_sections
+   unsigned int);
+extern bool _bfd_elf_slurp_version_tables
+  (bfd *, bool);
+extern bool _bfd_elf_merge_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_match_sections_by_type
+extern bool _bfd_elf_match_sections_by_type
   (bfd *, const asection *, bfd *, const asection *);
-extern bfd_boolean bfd_elf_is_group_section
+extern bool bfd_elf_is_group_section
   (bfd *, const struct bfd_section *);
 extern const char *bfd_elf_group_name
   (bfd *, const struct bfd_section *);
-extern bfd_boolean _bfd_elf_section_already_linked
+extern bool _bfd_elf_section_already_linked
   (bfd *, asection *, struct bfd_link_info *);
 extern void bfd_elf_set_group_contents
   (bfd *, asection *, void *);
@@ -2141,25 +2384,21 @@ extern asection *_bfd_elf_check_kept_sec
 #define _bfd_elf_link_just_syms _bfd_generic_link_just_syms
 extern void _bfd_elf_copy_link_hash_symbol_type
   (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
-extern bfd_boolean _bfd_elf_size_group_sections
+extern bool _bfd_elf_size_group_sections
   (struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_fixup_group_sections
+extern bool _bfd_elf_fixup_group_sections
 (bfd *, asection *);
-extern bfd_boolean _bfd_elf_copy_private_header_data
+extern bool _bfd_elf_copy_private_header_data
   (bfd *, bfd *);
-extern bfd_boolean _bfd_elf_copy_private_symbol_data
+extern bool _bfd_elf_copy_private_symbol_data
   (bfd *, asymbol *, bfd *, asymbol *);
-#define _bfd_generic_init_private_section_data \
-  _bfd_elf_init_private_section_data
-extern bfd_boolean _bfd_elf_init_private_section_data
+extern bool _bfd_elf_copy_private_section_data
   (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_copy_private_section_data
-  (bfd *, asection *, bfd *, asection *);
-extern bfd_boolean _bfd_elf_write_object_contents
+extern bool _bfd_elf_write_object_contents
   (bfd *);
-extern bfd_boolean _bfd_elf_write_corefile_contents
+extern bool _bfd_elf_write_corefile_contents
   (bfd *);
-extern bfd_boolean _bfd_elf_set_section_contents
+extern bool _bfd_elf_set_section_contents
   (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
 extern long _bfd_elf_get_symtab_upper_bound
   (bfd *);
@@ -2176,9 +2415,9 @@ extern long _bfd_elf_get_reloc_upper_bou
 extern long _bfd_elf_canonicalize_reloc
   (bfd *, sec_ptr, arelent **, asymbol **);
 extern asection * _bfd_elf_get_dynamic_reloc_section
-  (bfd *, asection *, bfd_boolean);
+  (bfd *, asection *, bool);
 extern asection * _bfd_elf_make_dynamic_reloc_section
-  (asection *, bfd *, unsigned int, bfd *, bfd_boolean);
+  (asection *, bfd *, unsigned int, bfd *, bool);
 extern long _bfd_elf_get_dynamic_reloc_upper_bound
   (bfd *);
 extern long _bfd_elf_canonicalize_dynamic_reloc
@@ -2187,18 +2426,21 @@ extern asymbol *_bfd_elf_make_empty_symb
   (bfd *);
 extern void _bfd_elf_get_symbol_info
   (bfd *, asymbol *, symbol_info *);
-extern bfd_boolean _bfd_elf_is_local_label_name
+extern bool _bfd_elf_is_local_label_name
   (bfd *, const char *);
 extern alent *_bfd_elf_get_lineno
   (bfd *, asymbol *);
-extern bfd_boolean _bfd_elf_set_arch_mach
+extern bool _bfd_elf_set_arch_mach
   (bfd *, enum bfd_architecture, unsigned long);
-extern bfd_boolean _bfd_elf_find_nearest_line
+extern bool _bfd_elf_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *);
-extern bfd_boolean _bfd_elf_find_line
+extern bool _bfd_elf_find_nearest_line_with_alt
+  (bfd *, const char *, asymbol **, asection *, bfd_vma,
+   const char **, const char **, unsigned int *, unsigned int *);
+extern bool _bfd_elf_find_line
   (bfd *, asymbol **, asymbol *, const char **, unsigned int *);
-extern bfd_boolean _bfd_elf_find_inliner_info
+extern bool _bfd_elf_find_inliner_info
   (bfd *, const char **, const char **, unsigned int *);
 extern asymbol *_bfd_elf_find_function
   (bfd *, asymbol **, asection *, bfd_vma, const char **, const char **);
@@ -2206,23 +2448,23 @@ extern asymbol *_bfd_elf_find_function
 #define _bfd_elf_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
 extern int _bfd_elf_sizeof_headers
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_new_section_hook
+extern bool _bfd_elf_new_section_hook
   (bfd *, asection *);
 extern const struct bfd_elf_special_section *_bfd_elf_get_special_section
   (const char *, const struct bfd_elf_special_section *, unsigned int);
 extern const struct bfd_elf_special_section *_bfd_elf_get_sec_type_attr
   (bfd *, asection *);
 
-extern bfd_boolean _bfd_elf_link_hide_sym_by_version
+extern bool _bfd_elf_link_hide_sym_by_version
   (struct bfd_link_info *, struct elf_link_hash_entry *);
 
 /* If the target doesn't have reloc handling written yet:  */
-extern bfd_boolean _bfd_elf_no_info_to_howto
+extern bool _bfd_elf_no_info_to_howto
   (bfd *, arelent *, Elf_Internal_Rela *);
 
-extern bfd_boolean bfd_section_from_shdr
+extern bool bfd_section_from_shdr
   (bfd *, unsigned int shindex);
-extern bfd_boolean bfd_section_from_phdr
+extern bool bfd_section_from_phdr
   (bfd *, Elf_Internal_Phdr *, int);
 
 extern int _bfd_elf_symbol_from_bfd_symbol
@@ -2238,7 +2480,7 @@ extern struct elf_strtab_hash * _bfd_elf
 extern void _bfd_elf_strtab_free
   (struct elf_strtab_hash *);
 extern size_t _bfd_elf_strtab_add
-  (struct elf_strtab_hash *, const char *, bfd_boolean);
+  (struct elf_strtab_hash *, const char *, bool);
 extern void _bfd_elf_strtab_addref
   (struct elf_strtab_hash *, size_t);
 extern void _bfd_elf_strtab_delref
@@ -2259,68 +2501,82 @@ extern bfd_size_type _bfd_elf_strtab_off
   (struct elf_strtab_hash *, size_t);
 extern const char * _bfd_elf_strtab_str
   (struct elf_strtab_hash *, size_t idx, bfd_size_type *offset);
-extern bfd_boolean _bfd_elf_strtab_emit
+extern bool _bfd_elf_strtab_emit
   (bfd *, struct elf_strtab_hash *);
 extern void _bfd_elf_strtab_finalize
   (struct elf_strtab_hash *);
 
-extern bfd_boolean bfd_elf_parse_eh_frame_entries
+extern bool bfd_elf_parse_eh_frame_entries
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_parse_eh_frame_entry
+extern bool _bfd_elf_parse_eh_frame_entry
   (struct bfd_link_info *, asection *, struct elf_reloc_cookie *);
 extern void _bfd_elf_parse_eh_frame
   (bfd *, struct bfd_link_info *, asection *, struct elf_reloc_cookie *);
-extern bfd_boolean _bfd_elf_end_eh_frame_parsing
+extern bool _bfd_elf_end_eh_frame_parsing
   (struct bfd_link_info *info);
 
-extern bfd_boolean _bfd_elf_discard_section_eh_frame
+extern bool _bfd_elf_discard_section_eh_frame
   (bfd *, struct bfd_link_info *, asection *,
-   bfd_boolean (*) (bfd_vma, void *), struct elf_reloc_cookie *);
-extern bfd_boolean _bfd_elf_adjust_eh_frame_global_symbol
+   bool (*) (bfd_vma, void *), struct elf_reloc_cookie *);
+extern bool _bfd_elf_adjust_eh_frame_global_symbol
   (struct elf_link_hash_entry *, void *);
-extern bfd_boolean _bfd_elf_discard_section_eh_frame_hdr
-  (bfd *, struct bfd_link_info *);
+extern bool _bfd_elf_discard_section_eh_frame_hdr
+  (struct bfd_link_info *);
 extern bfd_vma _bfd_elf_eh_frame_section_offset
   (bfd *, struct bfd_link_info *, asection *, bfd_vma);
-extern bfd_boolean _bfd_elf_write_section_eh_frame
+extern bool _bfd_elf_write_section_eh_frame
   (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
-bfd_boolean _bfd_elf_write_section_eh_frame_entry
+bool _bfd_elf_write_section_eh_frame_entry
   (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
-extern bfd_boolean _bfd_elf_fixup_eh_frame_hdr (struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_write_section_eh_frame_hdr
+extern bool _bfd_elf_fixup_eh_frame_hdr (struct bfd_link_info *);
+extern bool _bfd_elf_write_section_eh_frame_hdr
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_eh_frame_present
+extern bool _bfd_elf_eh_frame_present
   (struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_eh_frame_entry_present
+extern bool _bfd_elf_eh_frame_entry_present
   (struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_maybe_strip_eh_frame_hdr
+extern bool _bfd_elf_maybe_strip_eh_frame_hdr
   (struct bfd_link_info *);
 
-extern bfd_boolean _bfd_elf_hash_symbol (struct elf_link_hash_entry *);
+extern bool _bfd_elf_sframe_present
+  (struct bfd_link_info *);
+extern bool _bfd_elf_parse_sframe
+  (bfd *, struct bfd_link_info *, asection *, struct elf_reloc_cookie *);
+extern bool _bfd_elf_discard_section_sframe
+  (asection *, bool (*) (bfd_vma, void *), struct elf_reloc_cookie *);
+extern bool _bfd_elf_merge_section_sframe
+  (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
+extern bfd_vma _bfd_elf_sframe_section_offset
+  (bfd *, struct bfd_link_info *, asection *, bfd_vma);
+extern bool _bfd_elf_write_section_sframe
+  (bfd *, struct bfd_link_info *);
+extern bool _bfd_elf_set_section_sframe (bfd *, struct bfd_link_info *);
+
+extern bool _bfd_elf_hash_symbol (struct elf_link_hash_entry *);
 
 extern long _bfd_elf_link_lookup_local_dynindx
   (struct bfd_link_info *, bfd *, long);
-extern bfd_boolean _bfd_elf_compute_section_file_positions
+extern bool _bfd_elf_compute_section_file_positions
   (bfd *, struct bfd_link_info *);
 extern file_ptr _bfd_elf_assign_file_position_for_section
-  (Elf_Internal_Shdr *, file_ptr, bfd_boolean);
-extern bfd_boolean _bfd_elf_modify_headers
+  (Elf_Internal_Shdr *, file_ptr, bool, unsigned char);
+extern bool _bfd_elf_modify_headers
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean _bfd_elf_validate_reloc
+extern bool _bfd_elf_validate_reloc
   (bfd *, arelent *);
 
-extern bfd_boolean bfd_elf_record_link_assignment
-  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
-   bfd_boolean);
-extern bfd_boolean bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,
-					       const char *, bfd_vma);
-extern bfd_boolean bfd_elf_size_dynamic_sections
+extern bool bfd_elf_record_link_assignment
+  (bfd *, struct bfd_link_info *, const char *, bool,
+   bool);
+extern bool bfd_elf_stack_segment_size (bfd *, struct bfd_link_info *,
+					const char *, bfd_vma);
+extern bool bfd_elf_size_dynamic_sections
   (bfd *, const char *, const char *, const char *, const char *, const char *,
    const char * const *, struct bfd_link_info *, struct bfd_section **);
-extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
+extern bool bfd_elf_size_dynsym_hash_dynstr
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_elf_get_bfd_needed_list
+extern bool bfd_elf_get_bfd_needed_list
   (bfd *, struct bfd_link_needed_list **);
 extern struct bfd_link_needed_list *bfd_elf_get_needed_list
   (bfd *, struct bfd_link_info *);
@@ -2341,18 +2597,18 @@ extern unsigned int _bfd_elf_default_act
 extern struct bfd_section *_bfd_elf_tls_setup
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean _bfd_elf_link_create_dynamic_sections
+extern bool _bfd_elf_link_create_dynamic_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_omit_section_dynsym_default
+extern bool _bfd_elf_omit_section_dynsym_default
   (bfd *, struct bfd_link_info *, asection *);
-extern bfd_boolean _bfd_elf_omit_section_dynsym_all
+extern bool _bfd_elf_omit_section_dynsym_all
   (bfd *, struct bfd_link_info *, asection *);
-extern bfd_boolean _bfd_elf_create_dynamic_sections
+extern bool _bfd_elf_create_dynamic_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_create_got_section
+extern bool _bfd_elf_create_got_section
   (bfd *, struct bfd_link_info *);
 extern asection *_bfd_elf_section_for_symbol
-  (struct elf_reloc_cookie *, unsigned long, bfd_boolean);
+  (struct elf_reloc_cookie *, unsigned long, bool);
 extern struct elf_link_hash_entry *_bfd_elf_define_linkage_sym
   (bfd *, struct bfd_link_info *, asection *, const char *);
 extern void _bfd_elf_init_1_index_section
@@ -2360,56 +2616,71 @@ extern void _bfd_elf_init_1_index_sectio
 extern void _bfd_elf_init_2_index_sections
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean _bfd_elfcore_make_pseudosection
+extern bool _bfd_elfcore_make_pseudosection
   (bfd *, char *, size_t, ufile_ptr);
 extern char *_bfd_elfcore_strndup
   (bfd *, char *, size_t);
 
 extern Elf_Internal_Rela *_bfd_elf_link_read_relocs
-  (bfd *, asection *, void *, Elf_Internal_Rela *, bfd_boolean);
+  (bfd *, const asection *, void *, Elf_Internal_Rela *, bool);
+extern Elf_Internal_Rela *_bfd_elf_link_info_read_relocs
+  (bfd *, struct bfd_link_info *, const asection *, void *, Elf_Internal_Rela *,
+   bool);
 
-extern bfd_boolean _bfd_elf_link_output_relocs
+extern bool _bfd_elf_link_output_relocs
   (bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *,
    struct elf_link_hash_entry **);
 
-extern bfd_boolean _bfd_elf_adjust_dynamic_copy
+extern bool _bfd_elf_link_add_glibc_version_dependency
+  (struct elf_find_verdep_info *, const char *const [], bool *);
+
+extern void _bfd_elf_link_add_dt_relr_dependency
+  (struct elf_find_verdep_info *);
+
+extern bool _bfd_elf_adjust_dynamic_copy
   (struct bfd_link_info *, struct elf_link_hash_entry *, asection *);
 
-extern bfd_boolean _bfd_elf_dynamic_symbol_p
-  (struct elf_link_hash_entry *, struct bfd_link_info *, bfd_boolean);
+extern bool _bfd_elf_dynamic_symbol_p
+  (struct elf_link_hash_entry *, struct bfd_link_info *, bool);
 
-extern bfd_boolean _bfd_elf_symbol_refs_local_p
-  (struct elf_link_hash_entry *, struct bfd_link_info *, bfd_boolean);
+extern bool _bfd_elf_symbol_refs_local_p
+  (struct elf_link_hash_entry *, struct bfd_link_info *, bool);
 
 extern bfd_reloc_status_type bfd_elf_perform_complex_relocation
   (bfd *, asection *, bfd_byte *, Elf_Internal_Rela *, bfd_vma);
 
-extern bfd_boolean _bfd_elf_setup_sections
+extern bool _bfd_elf_setup_sections
   (bfd *);
 
+extern bool _bfd_elf_get_dynamic_symbols
+  (bfd *, Elf_Internal_Phdr *, Elf_Internal_Phdr *, size_t,
+   bfd_size_type);
+extern asection *_bfd_elf_get_section_from_dynamic_symbol
+  (bfd *, Elf_Internal_Sym *);
+
 extern struct bfd_link_hash_entry *bfd_elf_define_start_stop
   (struct bfd_link_info *, const char *, asection *);
 
-extern bfd_boolean _bfd_elf_init_file_header (bfd *, struct bfd_link_info *);
+extern bool _bfd_elf_init_file_header (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean _bfd_elf_final_write_processing (bfd *);
+extern bool _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 *);
 extern int bfd_elf32_core_file_failing_signal
   (bfd *);
-extern bfd_boolean bfd_elf32_core_file_matches_executable_p
+extern bool bfd_elf32_core_file_matches_executable_p
   (bfd *, bfd *);
 extern int bfd_elf32_core_file_pid
   (bfd *);
-extern bfd_boolean _bfd_elf32_core_find_build_id
+extern bool _bfd_elf32_core_find_build_id
   (bfd *, bfd_vma);
 
-extern bfd_boolean bfd_elf32_swap_symbol_in
+extern bool bfd_elf32_swap_symbol_in
   (bfd *, const void *, const void *, Elf_Internal_Sym *);
 extern void bfd_elf32_swap_symbol_out
   (bfd *, const Elf_Internal_Sym *, void *, void *);
@@ -2430,34 +2701,34 @@ extern void bfd_elf32_swap_dyn_in
 extern void bfd_elf32_swap_dyn_out
   (bfd *, const Elf_Internal_Dyn *, void *);
 extern long bfd_elf32_slurp_symbol_table
-  (bfd *, asymbol **, bfd_boolean);
-extern bfd_boolean bfd_elf32_write_shdrs_and_ehdr
+  (bfd *, asymbol **, bool);
+extern bool bfd_elf32_write_shdrs_and_ehdr
   (bfd *);
 extern int bfd_elf32_write_out_phdrs
   (bfd *, const Elf_Internal_Phdr *, unsigned int);
-extern bfd_boolean bfd_elf32_checksum_contents
+extern bool bfd_elf32_checksum_contents
   (bfd * , void (*) (const void *, size_t, void *), void *);
 extern void bfd_elf32_write_relocs
   (bfd *, asection *, void *);
-extern bfd_boolean bfd_elf32_slurp_reloc_table
-  (bfd *, asection *, asymbol **, bfd_boolean);
+extern bool bfd_elf32_slurp_reloc_table
+  (bfd *, asection *, asymbol **, bool);
 
-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 *);
 extern int bfd_elf64_core_file_failing_signal
   (bfd *);
-extern bfd_boolean bfd_elf64_core_file_matches_executable_p
+extern bool bfd_elf64_core_file_matches_executable_p
   (bfd *, bfd *);
 extern int bfd_elf64_core_file_pid
   (bfd *);
-extern bfd_boolean _bfd_elf64_core_find_build_id
+extern bool _bfd_elf64_core_find_build_id
   (bfd *, bfd_vma);
 
-extern bfd_boolean bfd_elf64_swap_symbol_in
+extern bool bfd_elf64_swap_symbol_in
   (bfd *, const void *, const void *, Elf_Internal_Sym *);
 extern void bfd_elf64_swap_symbol_out
   (bfd *, const Elf_Internal_Sym *, void *, void *);
@@ -2478,45 +2749,53 @@ extern void bfd_elf64_swap_dyn_in
 extern void bfd_elf64_swap_dyn_out
   (bfd *, const Elf_Internal_Dyn *, void *);
 extern long bfd_elf64_slurp_symbol_table
-  (bfd *, asymbol **, bfd_boolean);
-extern bfd_boolean bfd_elf64_write_shdrs_and_ehdr
+  (bfd *, asymbol **, bool);
+extern bool bfd_elf64_write_shdrs_and_ehdr
   (bfd *);
 extern int bfd_elf64_write_out_phdrs
   (bfd *, const Elf_Internal_Phdr *, unsigned int);
-extern bfd_boolean bfd_elf64_checksum_contents
+extern bool bfd_elf64_checksum_contents
   (bfd * , void (*) (const void *, size_t, void *), void *);
 extern void bfd_elf64_write_relocs
   (bfd *, asection *, void *);
-extern bfd_boolean bfd_elf64_slurp_reloc_table
-  (bfd *, asection *, asymbol **, bfd_boolean);
+extern bool bfd_elf64_slurp_reloc_table
+  (bfd *, asection *, asymbol **, bool);
 
-extern bfd_boolean _bfd_elf_default_relocs_compatible
+extern bool _bfd_elf_default_relocs_compatible
   (const bfd_target *, const bfd_target *);
 
-extern bfd_boolean _bfd_elf_relocs_compatible
+extern bool _bfd_elf_relocs_compatible
   (const bfd_target *, const bfd_target *);
-extern bfd_boolean _bfd_elf_notice_as_needed
+extern bool _bfd_elf_notice_as_needed
   (bfd *, struct bfd_link_info *, enum notice_asneeded_action);
 
-extern struct elf_link_hash_entry *_bfd_elf_archive_symbol_lookup
+extern struct bfd_link_hash_entry *_bfd_elf_archive_symbol_lookup
   (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_elf_link_add_symbols
+extern bool bfd_elf_link_add_symbols
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_add_dynamic_entry
+extern bool _bfd_elf_add_dynamic_entry
   (struct bfd_link_info *, bfd_vma, bfd_vma);
-extern bfd_boolean _bfd_elf_link_check_relocs
+extern bool _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 bool _bfd_elf_link_check_relocs
+  (bfd *, struct bfd_link_info *);
+extern bool _bfd_elf_link_iterate_on_relocs
+ (bfd *, struct bfd_link_info *,
+  bool (*) (bfd *, struct bfd_link_info *, asection *,
+	    const Elf_Internal_Rela *));
 
-extern bfd_boolean bfd_elf_link_record_dynamic_symbol
+extern bool bfd_elf_link_record_dynamic_symbol
   (struct bfd_link_info *, struct elf_link_hash_entry *);
 
 extern int bfd_elf_link_record_local_dynamic_symbol
   (struct bfd_link_info *, bfd *, long);
 
-extern bfd_boolean _bfd_elf_close_and_cleanup
+extern bool _bfd_elf_free_cached_info
   (bfd *);
 
-extern bfd_boolean _bfd_elf_common_definition
+extern bool _bfd_elf_common_definition
   (Elf_Internal_Sym *);
 
 extern unsigned int _bfd_elf_common_section_index
@@ -2533,22 +2812,22 @@ extern bfd_reloc_status_type _bfd_elf_re
   (bfd *, arelent *, struct bfd_symbol *, void *,
    asection *, bfd *, char **);
 
-extern bfd_boolean bfd_elf_final_link
+extern bool bfd_elf_final_link
   (bfd *, struct bfd_link_info *);
 
 extern void _bfd_elf_gc_keep
   (struct bfd_link_info *info);
 
-extern bfd_boolean bfd_elf_gc_mark_dynamic_ref_symbol
+extern bool bfd_elf_gc_mark_dynamic_ref_symbol
   (struct elf_link_hash_entry *h, void *inf);
 
-extern bfd_boolean bfd_elf_gc_sections
+extern bool bfd_elf_gc_sections
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean bfd_elf_gc_record_vtinherit
+extern bool bfd_elf_gc_record_vtinherit
   (bfd *, asection *, struct elf_link_hash_entry *, bfd_vma);
 
-extern bfd_boolean bfd_elf_gc_record_vtentry
+extern bool bfd_elf_gc_record_vtentry
   (bfd *, asection *, struct elf_link_hash_entry *, bfd_vma);
 
 extern asection *_bfd_elf_gc_mark_hook
@@ -2557,38 +2836,38 @@ extern asection *_bfd_elf_gc_mark_hook
 
 extern asection *_bfd_elf_gc_mark_rsec
   (struct bfd_link_info *, asection *, elf_gc_mark_hook_fn,
-   struct elf_reloc_cookie *, bfd_boolean *);
+   struct elf_reloc_cookie *, bool *);
 
-extern bfd_boolean _bfd_elf_gc_mark_reloc
+extern bool _bfd_elf_gc_mark_reloc
   (struct bfd_link_info *, asection *, elf_gc_mark_hook_fn,
    struct elf_reloc_cookie *);
 
-extern bfd_boolean _bfd_elf_gc_mark_fdes
+extern bool _bfd_elf_gc_mark_fdes
   (struct bfd_link_info *, asection *, asection *, elf_gc_mark_hook_fn,
    struct elf_reloc_cookie *);
 
-extern bfd_boolean _bfd_elf_gc_mark
+extern bool _bfd_elf_gc_mark
   (struct bfd_link_info *, asection *, elf_gc_mark_hook_fn);
 
-extern bfd_boolean _bfd_elf_gc_mark_extra_sections
+extern bool _bfd_elf_gc_mark_extra_sections
   (struct bfd_link_info *, elf_gc_mark_hook_fn);
 
-extern bfd_boolean bfd_elf_gc_common_finalize_got_offsets
+extern bool bfd_elf_gc_common_finalize_got_offsets
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean bfd_elf_gc_common_final_link
+extern bool bfd_elf_gc_common_final_link
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean bfd_elf_reloc_symbol_deleted_p
+extern bool bfd_elf_reloc_symbol_deleted_p
   (bfd_vma, void *);
 
 extern struct elf_segment_map * _bfd_elf_make_dynamic_segment
   (bfd *, asection *);
 
-extern bfd_boolean _bfd_elf_map_sections_to_segments
-  (bfd *, struct bfd_link_info *);
+extern bool _bfd_elf_map_sections_to_segments
+  (bfd *, struct bfd_link_info *, bool *);
 
-extern bfd_boolean _bfd_elf_is_function_type (unsigned int);
+extern bool _bfd_elf_is_function_type (unsigned int);
 
 extern bfd_size_type _bfd_elf_maybe_function_sym (const asymbol *, asection *,
 						  bfd_vma *);
@@ -2597,7 +2876,7 @@ extern asection *_bfd_elf_plt_get_reloc_
 
 extern int bfd_elf_get_default_section_type (flagword);
 
-extern bfd_boolean bfd_elf_lookup_section_flags
+extern bool bfd_elf_lookup_section_flags
   (struct bfd_link_info *, struct flag_info *, asection *);
 
 extern Elf_Internal_Phdr * _bfd_elf_find_segment_containing_section
@@ -2610,9 +2889,9 @@ extern unsigned int _bfd_elf_ppc_at_tls_
 extern unsigned int _bfd_elf_ppc_at_tprel_transform
   (unsigned int, unsigned int);
 /* PowerPC elf_object_p tweak.  */
-extern bfd_boolean _bfd_elf_ppc_set_arch (bfd *);
+extern bool _bfd_elf_ppc_set_arch (bfd *);
 /* PowerPC .gnu.attributes handling common to both 32-bit and 64-bit.  */
-extern bfd_boolean _bfd_elf_ppc_merge_fp_attributes
+extern bool _bfd_elf_ppc_merge_fp_attributes
   (bfd *, struct bfd_link_info *);
 
 /* Return an upper bound on the number of bytes required to store a
@@ -2646,6 +2925,10 @@ extern char *elfcore_write_prxfpreg
   (bfd *, char *, int *, const void *, int);
 extern char *elfcore_write_xstatereg
   (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_x86_segbases
+  (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_i386_tls
+  (bfd *, char *, int *, const void *, int);
 extern char *elfcore_write_ppc_vmx
   (bfd *, char *, int *, const void *, int);
 extern char *elfcore_write_ppc_vsx
@@ -2712,10 +2995,34 @@ 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_aarch_mte
+  (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_aarch_ssve
+  (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_aarch_za
+  (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_aarch_zt
+  (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_arc_v2
+  (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_riscv_csr
+  (bfd *, char *, int *, const void *, int);
+extern char *elfcore_write_gdb_tdesc
+  (bfd *, char *, int *, const void *, int);
 extern char *elfcore_write_lwpstatus
   (bfd *, char *, int *, long, int, const void *);
 extern char *elfcore_write_register_note
   (bfd *, char *, int *, const char *, const void *, int);
+extern char *elfcore_write_file_note
+  (bfd *, char *, int *, const void*, int);
+extern char *elfcore_write_loongarch_cpucfg
+  (bfd *, char *, int *, const void*, int);
+extern char *elfcore_write_loongarch_lbt
+  (bfd *, char *, int *, const void*, int);
+extern char *elfcore_write_loongarch_lsx
+  (bfd *, char *, int *, const void*, int);
+extern char *elfcore_write_loongarch_lasx
+  (bfd *, char *, int *, const void*, int);
 
 /* Internal structure which holds information to be included in the
    PRPSINFO section of Linux core files.
@@ -2759,38 +3066,44 @@ extern bfd *_bfd_elf64_bfd_from_remote_m
 extern bfd_vma bfd_elf_obj_attr_size (bfd *);
 extern void bfd_elf_set_obj_attr_contents (bfd *, bfd_byte *, bfd_vma);
 extern int bfd_elf_get_obj_attr_int (bfd *, int, unsigned int);
-extern void bfd_elf_add_obj_attr_int (bfd *, int, unsigned int, unsigned int);
+extern obj_attribute *bfd_elf_add_obj_attr_int
+  (bfd *, int, unsigned int, unsigned int);
 #define bfd_elf_add_proc_attr_int(BFD, TAG, VALUE) \
   bfd_elf_add_obj_attr_int ((BFD), OBJ_ATTR_PROC, (TAG), (VALUE))
-extern void bfd_elf_add_obj_attr_string (bfd *, int, unsigned int, const char *);
+extern obj_attribute *bfd_elf_add_obj_attr_string
+  (bfd *, int, unsigned int, const char *);
 #define bfd_elf_add_proc_attr_string(BFD, TAG, VALUE) \
   bfd_elf_add_obj_attr_string ((BFD), OBJ_ATTR_PROC, (TAG), (VALUE))
-extern void bfd_elf_add_obj_attr_int_string (bfd *, int, unsigned int,
-					     unsigned int, const char *);
+extern obj_attribute *bfd_elf_add_obj_attr_int_string
+  (bfd *, int, unsigned int, unsigned int, const char *);
 #define bfd_elf_add_proc_attr_int_string(BFD, TAG, INTVAL, STRVAL) \
   bfd_elf_add_obj_attr_int_string ((BFD), OBJ_ATTR_PROC, (TAG), \
 				   (INTVAL), (STRVAL))
 
+extern bool _bfd_elf_write_section_build_attributes
+  (bfd *, struct bfd_link_info *);
 extern char *_bfd_elf_attr_strdup (bfd *, const char *);
 extern void _bfd_elf_copy_obj_attributes (bfd *, bfd *);
 extern int _bfd_elf_obj_attrs_arg_type (bfd *, int, unsigned int);
 extern void _bfd_elf_parse_attributes (bfd *, Elf_Internal_Shdr *);
-extern bfd_boolean _bfd_elf_merge_object_attributes
+extern bool _bfd_elf_merge_object_attributes
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_merge_unknown_attribute_low (bfd *, bfd *, int);
-extern bfd_boolean _bfd_elf_merge_unknown_attribute_list (bfd *, bfd *);
+extern bool _bfd_elf_merge_unknown_attribute_low (bfd *, bfd *, int);
+extern bool _bfd_elf_merge_unknown_attribute_list (bfd *, bfd *);
 extern Elf_Internal_Shdr *_bfd_elf_single_rel_hdr (asection *sec);
-extern bfd_boolean elf_read_notes (bfd *, file_ptr, bfd_size_type, size_t);
+extern bool elf_read_notes (bfd *, file_ptr, bfd_size_type, size_t);
 
-extern bfd_boolean _bfd_elf_parse_gnu_properties
+extern bool _bfd_elf_parse_gnu_properties
   (bfd *, Elf_Internal_Note *);
+extern elf_property_list * _bfd_elf_find_property
+  (elf_property_list *, unsigned int, elf_property_list **);
 extern elf_property * _bfd_elf_get_property
   (bfd *, unsigned int, unsigned int);
 extern bfd *_bfd_elf_link_setup_gnu_properties
   (struct bfd_link_info *);
 extern bfd_size_type _bfd_elf_convert_gnu_property_size
   (bfd *, bfd *);
-extern bfd_boolean _bfd_elf_convert_gnu_properties
+extern bool _bfd_elf_convert_gnu_properties
   (bfd *, asection *, bfd *, bfd_byte **, bfd_size_type *);
 
 /* The linker may need to keep track of the number of relocs that it
@@ -2813,12 +3126,12 @@ struct elf_dyn_relocs
   bfd_size_type pc_count;
 };
 
-extern bfd_boolean _bfd_elf_create_ifunc_sections
+extern bool _bfd_elf_create_ifunc_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_elf_allocate_ifunc_dyn_relocs
+extern bool _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, bool);
 
 extern void elf_append_rela (bfd *, asection *, Elf_Internal_Rela *);
 extern void elf_append_rel (bfd *, asection *, Elf_Internal_Rela *);
@@ -2828,7 +3141,39 @@ extern bfd_vma elf64_r_sym (bfd_vma);
 extern bfd_vma elf32_r_info (bfd_vma, bfd_vma);
 extern bfd_vma elf32_r_sym (bfd_vma);
 
-extern bfd_boolean is_debuginfo_file (bfd *);
+extern bool is_debuginfo_file (bfd *);
+
+
+extern bool _bfd_elf_init_secondary_reloc_section
+  (bfd *, Elf_Internal_Shdr *, const char *, unsigned int);
+extern bool _bfd_elf_slurp_secondary_reloc_section
+  (bfd *, asection *, asymbol **, bool);
+extern bool _bfd_elf_copy_special_section_fields
+  (const bfd *, bfd *, const Elf_Internal_Shdr *, Elf_Internal_Shdr *);
+extern bool _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 bool _bfd_elf_maybe_set_textrel
+  (struct elf_link_hash_entry *, void *);
+
+extern bool _bfd_elf_add_dynamic_tags
+  (bfd *, struct bfd_link_info *, bool);
+
+extern bool _bfd_elf_mmap_section_contents
+  (bfd *abfd, asection *section, bfd_byte **buf);
+extern void _bfd_elf_munmap_section_contents
+  (asection *, void *);
+extern bool _bfd_elf_link_mmap_section_contents
+  (bfd *abfd, asection *section, bfd_byte **buf);
+extern void _bfd_elf_link_munmap_section_contents
+  (asection *);
+
+extern struct elf_link_hash_entry * _bfd_elf_get_link_hash_entry
+  (struct elf_link_hash_entry **, unsigned int, Elf_Internal_Shdr *);
 
 /* Large common section.  */
 extern asection _bfd_elf_large_com_section;
@@ -2836,8 +3181,8 @@ extern asection _bfd_elf_large_com_secti
 /* 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
@@ -2858,22 +3203,28 @@ extern asection _bfd_elf_large_com_secti
       /* It seems this can happen with erroneous or unsupported		\
 	 input (mixing a.out and elf in an archive, for example.)  */	\
       if (sym_hashes == NULL)						\
-	return FALSE;							\
+	return false;							\
 									\
       h = sym_hashes[r_symndx - symtab_hdr->sh_info];			\
 									\
       if (info->wrap_hash != NULL					\
 	  && (input_section->flags & SEC_DEBUGGING) != 0)		\
-	h = ((struct elf_link_hash_entry *)				\
-	     unwrap_hash_lookup (info, input_bfd, &h->root));		\
+	{								\
+	  struct bfd_link_hash_entry * new_h;				\
+	  new_h = unwrap_hash_lookup (info, input_bfd, &h->root);	\
+	  /* PR 31710: This lookup can fail if the input source has a	\
+	     symbol that starts with __wrap_.  */			\
+	  if (new_h != NULL)						\
+	    h = (struct elf_link_hash_entry *) new_h;			\
+	}								\
 									\
       while (h->root.type == bfd_link_hash_indirect			\
 	     || h->root.type == bfd_link_hash_warning)			\
 	h = (struct elf_link_hash_entry *) h->root.u.i.link;		\
 									\
-      warned = FALSE;							\
-      ignored = FALSE;							\
-      unresolved_reloc = FALSE;						\
+      warned = false;							\
+      ignored = false;							\
+      unresolved_reloc = false;						\
       relocation = 0;							\
       if (h->root.type == bfd_link_hash_defined				\
 	  || h->root.type == bfd_link_hash_defweak)			\
@@ -2885,7 +3236,7 @@ extern asection _bfd_elf_large_com_secti
 	       relocation value for this symbol.  output_section	\
 	       is typically NULL for symbols satisfied by a shared	\
 	       library.  */						\
-	    unresolved_reloc = TRUE;					\
+	    unresolved_reloc = true;					\
 	  else								\
 	    relocation = (h->root.u.def.value				\
 			  + sec->output_section->vma			\
@@ -2895,18 +3246,18 @@ extern asection _bfd_elf_large_com_secti
 	;								\
       else if (info->unresolved_syms_in_objects == RM_IGNORE		\
 	       && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)		\
-	ignored = TRUE;							\
+	ignored = true;							\
       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);	\
+	  bool 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);	\
-	  warned = TRUE;						\
+	  warned = true;						\
 	}								\
       (void) unresolved_reloc;						\
       (void) warned;							\
@@ -2923,42 +3274,39 @@ extern asection _bfd_elf_large_com_secti
    link, we remove such relocations.  Otherwise, we just want the
    section contents zeroed and avoid any special processing.  */
 #define RELOC_AGAINST_DISCARDED_SECTION(info, input_bfd, input_section,	\
-					rel, count, relend,		\
+					rel, count, relend, rnone,	\
 					howto, index, contents)		\
   {									\
-    int i_;								\
     _bfd_clear_contents (howto, input_bfd, input_section,		\
 			 contents, rel[index].r_offset);		\
 									\
+    /* For ld -r, remove relocations in debug and sframe sections	\
+       against symbols defined in discarded sections.  Not done for	\
+       others.  In particular the .eh_frame editing code expects	\
+       such relocs to be present.  */					\
     if (bfd_link_relocatable (info)					\
-	&& (input_section->flags & SEC_DEBUGGING))			\
+	&& ((input_section->flags & SEC_DEBUGGING) != 0			\
+	    || elf_section_type (input_section) == SHT_GNU_SFRAME))	\
       {									\
-	/* Only remove relocations in debug sections since other	\
-	   sections may require relocations.  */			\
-	Elf_Internal_Shdr *rel_hdr;					\
-									\
-	rel_hdr = _bfd_elf_single_rel_hdr (input_section->output_section); \
+	Elf_Internal_Shdr *rel_hdr					\
+	  = _bfd_elf_single_rel_hdr (input_section->output_section);	\
 									\
-	/* Avoid empty output section.  */				\
-	if (rel_hdr->sh_size > rel_hdr->sh_entsize)			\
-	  {								\
-	    rel_hdr->sh_size -= rel_hdr->sh_entsize;			\
-	    rel_hdr = _bfd_elf_single_rel_hdr (input_section);		\
-	    rel_hdr->sh_size -= rel_hdr->sh_entsize;			\
+	rel_hdr->sh_size -= rel_hdr->sh_entsize;			\
+	rel_hdr = _bfd_elf_single_rel_hdr (input_section);		\
+	rel_hdr->sh_size -= rel_hdr->sh_entsize;			\
 									\
-	    memmove (rel, rel + count,					\
-		     (relend - rel - count) * sizeof (*rel));		\
+	memmove (rel, rel + count,					\
+		 (relend - rel - count) * sizeof (*rel));		\
 									\
-	    input_section->reloc_count -= count;			\
-	    relend -= count;						\
-	    rel--;							\
-	    continue;							\
-	  }								\
+	input_section->reloc_count -= count;				\
+	relend -= count;						\
+	rel--;								\
+	continue;							\
       }									\
 									\
-    for (i_ = 0; i_ < count; i_++)					\
+    for (int i_ = 0; i_ < count; i_++)					\
       {									\
-	rel[i_].r_info = 0;						\
+	rel[i_].r_info = rnone;						\
 	rel[i_].r_addend = 0;						\
       }									\
     rel += count - 1;							\
@@ -2974,11 +3322,11 @@ extern asection _bfd_elf_large_com_secti
 	 || ((INFO)->dynamic && !(H)->dynamic)))
 
 /* Determine if a section contains CTF data, using its name.  */
-static inline bfd_boolean
+static inline bool
 bfd_section_is_ctf (const asection *sec)
 {
   const char *name = bfd_section_name (sec);
-  return strncmp (name, ".ctf", 4) == 0 && (name[4] == 0 || name[4] == '.');
+  return startswith (name, ".ctf") && (name[4] == 0 || name[4] == '.');
 }
 
 #ifdef __cplusplus
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf.c ./bfd/elf.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* ELF executable support for BFD.
 
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -49,11 +49,78 @@ SECTION
 #include CORE_HEADER
 #endif
 
+/* Utility macro to make testing for string equality easier to read.  */
+#ifndef streq
+#define streq(A,B) (strcmp ((A), (B)) == 0)
+#endif
+
+/* Core note names.  */
+#define NOTE_NAME_CORE     "CORE"
+#define NOTE_NAME_FREEBSD  "FreeBSD"
+#define NOTE_NAME_GDB      "GDB"
+#define NOTE_NAME_LINUX    "LINUX"
+
+/* Names of a pseudo-section which represent core notes.  */
+#define NOTE_PSEUDO_SECTION_AARCH_GCS		".reg-aarch-gcs"
+#define NOTE_PSEUDO_SECTION_AARCH_HW_BREAK	".reg-aarch-hw-break"
+#define NOTE_PSEUDO_SECTION_AARCH_HW_WATCH	".reg-aarch-hw-watch"
+#define NOTE_PSEUDO_SECTION_AARCH_MTE		".reg-aarch-mte"
+#define NOTE_PSEUDO_SECTION_AARCH_PAUTH		".reg-aarch-pauth"
+#define NOTE_PSEUDO_SECTION_AARCH_SSVE		".reg-aarch-ssve"
+#define NOTE_PSEUDO_SECTION_AARCH_SVE		".reg-aarch-sve"
+#define NOTE_PSEUDO_SECTION_AARCH_TLS		".reg-aarch-tls"
+#define NOTE_PSEUDO_SECTION_AARCH_ZA		".reg-aarch-za"
+#define NOTE_PSEUDO_SECTION_AARCH_ZT		".reg-aarch-zt"
+#define NOTE_PSEUDO_SECTION_ARC_V2		".reg-arc-v2"
+#define NOTE_PSEUDO_SECTION_ARM_VFP		".reg-arm-vfp"
+#define NOTE_PSEUDO_SECTION_I386_TLS	 	".reg-i386-tls"
+#define NOTE_PSEUDO_SECTION_LOONGARCH_CPUCFG	".reg-loongarch-cpucfg"
+#define NOTE_PSEUDO_SECTION_LOONGARCH_LASX	".reg-loongarch-lasx"
+#define NOTE_PSEUDO_SECTION_LOONGARCH_LBT	".reg-loongarch-lbt"
+#define NOTE_PSEUDO_SECTION_LOONGARCH_LSX	".reg-loongarch-lsx"
+#define NOTE_PSEUDO_SECTION_PPC_DSCR		".reg-ppc-dscr"
+#define NOTE_PSEUDO_SECTION_PPC_EBB		".reg-ppc-ebb"
+#define NOTE_PSEUDO_SECTION_PPC_PMU		".reg-ppc-pmu"
+#define NOTE_PSEUDO_SECTION_PPC_PPR		".reg-ppc-ppr"
+#define NOTE_PSEUDO_SECTION_PPC_TAR		".reg-ppc-tar"
+#define NOTE_PSEUDO_SECTION_PPC_TM_CDSCR	".reg-ppc-tm-cdscr"
+#define NOTE_PSEUDO_SECTION_PPC_TM_CFPR		".reg-ppc-tm-cfpr"
+#define NOTE_PSEUDO_SECTION_PPC_TM_CGPR		".reg-ppc-tm-cgpr"
+#define NOTE_PSEUDO_SECTION_PPC_TM_CPPR		".reg-ppc-tm-cppr"
+#define NOTE_PSEUDO_SECTION_PPC_TM_CTAR		".reg-ppc-tm-ctar"
+#define NOTE_PSEUDO_SECTION_PPC_TM_CVMX		".reg-ppc-tm-cvmx"
+#define NOTE_PSEUDO_SECTION_PPC_TM_CVSX		".reg-ppc-tm-cvsx"
+#define NOTE_PSEUDO_SECTION_PPC_TM_SPR		".reg-ppc-tm-spr"
+#define NOTE_PSEUDO_SECTION_PPC_VSX		".reg-ppc-vsx"
+#define NOTE_PSEUDO_SECTION_PPC_VMX		".reg-ppc-vmx"
+#define NOTE_PSEUDO_SECTION_REG		 	".reg"
+#define NOTE_PSEUDO_SECTION_REG2	 	".reg2"
+#define NOTE_PSEUDO_SECTION_RISCV_CSR		".reg-riscv-csr"
+#define NOTE_PSEUDO_SECTION_S390_CTRS		".reg-s390-ctrs"
+#define NOTE_PSEUDO_SECTION_S390_GS_BC		".reg-s390-gs-bc"
+#define NOTE_PSEUDO_SECTION_S390_GS_CB		".reg-s390-gs-cb"
+#define NOTE_PSEUDO_SECTION_S390_HIGH_GPRS	".reg-s390-high-gprs"
+#define NOTE_PSEUDO_SECTION_S390_LAST_BREAK	".reg-s390-last-break"
+#define NOTE_PSEUDO_SECTION_S390_PREFIX		".reg-s390-prefix"
+#define NOTE_PSEUDO_SECTION_S390_SYSTEM_CALL	".reg-s390-system-call"
+#define NOTE_PSEUDO_SECTION_S390_TDB		".reg-s390-tdb"
+#define NOTE_PSEUDO_SECTION_S390_TIMER		".reg-s390-timer"
+#define NOTE_PSEUDO_SECTION_S390_TODCMP		".reg-s390-todcmp"
+#define NOTE_PSEUDO_SECTION_S390_TODPREG	".reg-s390-todpreg"
+#define NOTE_PSEUDO_SECTION_S390_VXRS_HIGH	".reg-s390-vxrs-high"
+#define NOTE_PSEUDO_SECTION_S390_VXRS_LOW	".reg-s390-vxrs-low"
+#define NOTE_PSEUDO_SECTION_SSP		 	".reg-ssp"
+#define NOTE_PSEUDO_SECTION_TDESC		".gdb-tdesc"
+#define NOTE_PSEUDO_SECTION_X86_SEGBASES 	".reg-x86-segbases"
+#define NOTE_PSEUDO_SECTION_XFP          	".reg-xfp"
+#define NOTE_PSEUDO_SECTION_XSTATE       	".reg-xstate"
+
 static int elf_sort_sections (const void *, const void *);
-static bfd_boolean assign_file_positions_except_relocs (bfd *, struct bfd_link_info *);
-static bfd_boolean swap_out_syms (bfd *, struct elf_strtab_hash **, int) ;
-static bfd_boolean elf_parse_notes (bfd *abfd, char *buf, size_t size,
-				    file_ptr offset, size_t align);
+static bool assign_file_positions_except_relocs (bfd *, struct bfd_link_info *);
+static bool swap_out_syms (bfd *, struct elf_strtab_hash **, int,
+			   struct bfd_link_info *);
+static bool elf_parse_notes (bfd *abfd, char *buf, size_t size,
+			     file_ptr offset, size_t align);
 
 /* Swap version information in and out.  The version information is
    currently size independent.  If that ever changes, this code will
@@ -195,23 +262,15 @@ _bfd_elf_swap_versym_out (bfd *abfd,
 unsigned long
 bfd_elf_hash (const char *namearg)
 {
-  const unsigned char *name = (const unsigned char *) namearg;
-  unsigned long h = 0;
-  unsigned long g;
-  int ch;
+  uint32_t h = 0;
 
-  while ((ch = *name++) != '\0')
+  for (const unsigned char *name = (const unsigned char *) namearg;
+       *name; name++)
     {
-      h = (h << 4) + ch;
-      if ((g = (h & 0xf0000000)) != 0)
-	{
-	  h ^= g >> 24;
-	  /* The ELF ABI says `h &= ~g', but this is equivalent in
-	     this case and on some machines one insn instead of two.  */
-	  h ^= g;
-	}
+      h = (h << 4) + *name;
+      h ^= (h >> 24) & 0xf0;
     }
-  return h & 0xffffffff;
+  return h & 0x0fffffff;
 }
 
 /* DT_GNU_HASH hash function.  Do not change this function; you will
@@ -220,54 +279,50 @@ bfd_elf_hash (const char *namearg)
 unsigned long
 bfd_elf_gnu_hash (const char *namearg)
 {
-  const unsigned char *name = (const unsigned char *) namearg;
-  unsigned long h = 5381;
-  unsigned char ch;
-
-  while ((ch = *name++) != '\0')
-    h = (h << 5) + h + ch;
-  return h & 0xffffffff;
+  uint32_t h = 5381;
+
+  for (const unsigned char *name = (const unsigned char *) namearg;
+       *name; name++)
+    h = (h << 5) + h + *name;
+  return h;
 }
 
 /* Create a tdata field OBJECT_SIZE bytes in length, zeroed out and with
-   the object_id field of an elf_obj_tdata field set to OBJECT_ID.  */
-bfd_boolean
+   the object_id field of an elf_obj_tdata field set.  */
+bool
 bfd_elf_allocate_object (bfd *abfd,
-			 size_t object_size,
-			 enum elf_target_id object_id)
+			 size_t object_size)
 {
   BFD_ASSERT (object_size >= sizeof (struct elf_obj_tdata));
   abfd->tdata.any = bfd_zalloc (abfd, object_size);
   if (abfd->tdata.any == NULL)
-    return FALSE;
+    return false;
 
-  elf_object_id (abfd) = object_id;
+  elf_object_id (abfd) = get_elf_backend_data (abfd)->target_id;
   if (abfd->direction != read_direction)
     {
       struct output_elf_obj_tdata *o = bfd_zalloc (abfd, sizeof *o);
       if (o == NULL)
-	return FALSE;
+	return false;
       elf_tdata (abfd)->o = o;
       elf_program_header_size (abfd) = (bfd_size_type) -1;
     }
-  return TRUE;
+  return true;
 }
 
 
-bfd_boolean
+bool
 bfd_elf_make_object (bfd *abfd)
 {
-  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_obj_tdata),
-				  bed->target_id);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_obj_tdata));
 }
 
-bfd_boolean
+bool
 bfd_elf_mkcorefile (bfd *abfd)
 {
   /* I think this can be done just like an object file.  */
   if (!abfd->xvec->_bfd_set_format[(int) bfd_object] (abfd))
-    return FALSE;
+    return false;
   elf_tdata (abfd)->core = bfd_zalloc (abfd, sizeof (*elf_tdata (abfd)->core));
   return elf_tdata (abfd)->core != NULL;
 }
@@ -293,26 +348,23 @@ bfd_elf_get_str_section (bfd *abfd, unsi
       offset = i_shdrp[shindex]->sh_offset;
       shstrtabsize = i_shdrp[shindex]->sh_size;
 
-      /* 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)
+      if (shstrtabsize == 0
 	  || 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_mmap_persistent (abfd, 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.  */
 	  i_shdrp[shindex]->sh_size = 0;
 	}
-      else
-	shstrtab[shstrtabsize] = '\0';
+      else if (shstrtab[shstrtabsize - 1] != 0)
+	{
+	  /* It is an error if a string table isn't terminated.  */
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB: string table [%u] is corrupt"), abfd, shindex);
+	  shstrtab[shstrtabsize - 1] = 0;
+	}
       i_shdrp[shindex]->contents = shstrtab;
     }
   return (char *) shstrtab;
@@ -402,7 +454,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)
@@ -411,6 +463,17 @@ bfd_elf_get_elf_syms (bfd *ibfd,
   if (symcount == 0)
     return intsym_buf;
 
+  if (elf_use_dt_symtab_p (ibfd))
+    {
+      /* Use dynamic symbol table.  */
+      if (elf_tdata (ibfd)->dt_symtab_count != symcount + symoffset)
+	{
+	  bfd_set_error (bfd_error_invalid_operation);
+	  return NULL;
+	}
+      return elf_tdata (ibfd)->dt_symtab + symoffset;
+    }
+
   /* Normal syms might have section extension entries.  */
   shndx_hdr = NULL;
   if (elf_symtab_shndx_list (ibfd) != NULL)
@@ -434,9 +497,10 @@ bfd_elf_get_elf_syms (bfd *ibfd,
 
       if (shndx_hdr == NULL)
 	{
-	  if (symtab_hdr == & elf_symtab_hdr (ibfd))
-	    /* Not really accurate, but this was how the old code used to work.  */
-	    shndx_hdr = & elf_symtab_shndx_list (ibfd)->hdr;
+	  if (symtab_hdr == &elf_symtab_hdr (ibfd))
+	    /* Not really accurate, but this was how the old code used
+	       to work.  */
+	    shndx_hdr = &elf_symtab_shndx_list (ibfd)->hdr;
 	  /* Otherwise we do nothing.  The assumption is that
 	     the index table will not be needed.  */
 	}
@@ -448,49 +512,56 @@ 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;
-  pos = symtab_hdr->sh_offset + symoffset * extsym_size;
-  if (extsym_buf == NULL)
+  if (_bfd_mul_overflow (symcount, extsym_size, &amt))
     {
-      alloc_ext = bfd_malloc2 (symcount, extsym_size);
-      extsym_buf = alloc_ext;
+      bfd_set_error (bfd_error_file_too_big);
+      return NULL;
     }
-  if (extsym_buf == NULL
-      || bfd_seek (ibfd, pos, SEEK_SET) != 0
-      || bfd_bread (extsym_buf, amt, ibfd) != amt)
+  pos = symtab_hdr->sh_offset + symoffset * extsym_size;
+  size_t alloc_ext_size = amt;
+  if (bfd_seek (ibfd, pos, SEEK_SET) != 0
+      || !_bfd_mmap_read_temporary (&extsym_buf, &alloc_ext_size,
+				    &alloc_ext, ibfd, false))
     {
       intsym_buf = NULL;
-      goto out;
+      goto out2;
     }
 
+  size_t alloc_extshndx_size = 0;
   if (shndx_hdr == NULL || shndx_hdr->sh_size == 0)
     extshndx_buf = NULL;
   else
     {
-      amt = (bfd_size_type) symcount * sizeof (Elf_External_Sym_Shndx);
-      pos = shndx_hdr->sh_offset + symoffset * sizeof (Elf_External_Sym_Shndx);
-      if (extshndx_buf == NULL)
+      if (_bfd_mul_overflow (symcount, sizeof (Elf_External_Sym_Shndx), &amt))
 	{
-	  alloc_extshndx = (Elf_External_Sym_Shndx *)
-	      bfd_malloc2 (symcount, sizeof (Elf_External_Sym_Shndx));
-	  extshndx_buf = alloc_extshndx;
-	}
-      if (extshndx_buf == NULL
-	  || bfd_seek (ibfd, pos, SEEK_SET) != 0
-	  || bfd_bread (extshndx_buf, amt, ibfd) != amt)
+	  bfd_set_error (bfd_error_file_too_big);
+	  intsym_buf = NULL;
+	  goto out1;
+	}
+      alloc_extshndx_size = amt;
+      pos = shndx_hdr->sh_offset + symoffset * sizeof (Elf_External_Sym_Shndx);
+      if (bfd_seek (ibfd, pos, SEEK_SET) != 0
+	  || !_bfd_mmap_read_temporary ((void **) &extshndx_buf,
+					&alloc_extshndx_size,
+					(void **) &alloc_extshndx,
+					ibfd, false))
 	{
 	  intsym_buf = NULL;
-	  goto out;
+	  goto out1;
 	}
     }
 
   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 out1;
+	}
+      alloc_intsym = (Elf_Internal_Sym *) bfd_malloc (amt);
       intsym_buf = alloc_intsym;
       if (intsym_buf == NULL)
-	goto out;
+	goto out1;
     }
 
   /* Convert the symbols to internal form.  */
@@ -499,36 +570,59 @@ bfd_elf_get_elf_syms (bfd *ibfd,
 	   shndx = extshndx_buf;
        isym < isymend;
        esym += extsym_size, isym++, shndx = shndx != NULL ? shndx + 1 : NULL)
-    if (!(*bed->s->swap_symbol_in) (ibfd, esym, shndx, isym))
-      {
-	symoffset += (esym - (bfd_byte *) extsym_buf) / extsym_size;
-	/* xgettext:c-format */
-	_bfd_error_handler (_("%pB symbol number %lu references"
-			      " nonexistent SHT_SYMTAB_SHNDX section"),
-			    ibfd, (unsigned long) symoffset);
-	if (alloc_intsym != NULL)
+    {
+      if (!(*bed->s->swap_symbol_in) (ibfd, esym, shndx, isym))
+	{
+	  symoffset += (esym - (bfd_byte *) extsym_buf) / extsym_size;
+	  /* xgettext:c-format */
+	  _bfd_error_handler (_("%pB symbol number %lu references"
+				" nonexistent SHT_SYMTAB_SHNDX section"),
+			      ibfd, (unsigned long) symoffset);
 	  free (alloc_intsym);
-	intsym_buf = NULL;
-	goto out;
-      }
+	  intsym_buf = NULL;
+	  goto out1;
+	}
+
+      /* PR 33019: Do not accept unsupported binding values - they will
+	 likely cause problems later on.  */
+      int bind = ELF_ST_BIND (isym->st_info);
+      if (bind > STB_WEAK && bind < STB_LOOS)
+	{	
+	  /* xgettext:c-format */
+	  _bfd_error_handler (_("%pB symbol number %lu uses unsupported binding of %u"),
+			      ibfd, (unsigned long) (isym - intsym_buf), bind);
+	  free (alloc_intsym);
+	  intsym_buf = NULL;
+	  goto out1;
+	}
+
+      /* Paranoia: Also refuse to accept the only undefined symbol type: 7.  */
+      int t = ELF_ST_TYPE (isym->st_info);
+      if (t == 7)
+	{
+	  /* xgettext:c-format */
+	  _bfd_error_handler (_("%pB symbol number %lu uses unsupported type of %u"),
+			      ibfd, (unsigned long) (isym - intsym_buf), t);
+	  free (alloc_intsym);
+	  intsym_buf = NULL;
+	  goto out1;
+	}
+    }
 
- out:
-  if (alloc_ext != NULL)
-    free (alloc_ext);
-  if (alloc_extshndx != NULL)
-    free (alloc_extshndx);
+ out1:
+  _bfd_munmap_temporary (alloc_extshndx, alloc_extshndx_size);
+ out2:
+  _bfd_munmap_temporary (alloc_ext, alloc_ext_size);
 
   return intsym_buf;
 }
 
 /* Look up a symbol name.  */
-const char *
-bfd_elf_sym_name (bfd *abfd,
-		  Elf_Internal_Shdr *symtab_hdr,
-		  Elf_Internal_Sym *isym,
-		  asection *sym_sec)
+static const char *
+bfd_elf_sym_name_raw (bfd *abfd,
+		      Elf_Internal_Shdr *symtab_hdr,
+		      Elf_Internal_Sym *isym)
 {
-  const char *name;
   unsigned int iname = isym->st_name;
   unsigned int shindex = symtab_hdr->sh_link;
 
@@ -540,24 +634,24 @@ bfd_elf_sym_name (bfd *abfd,
       shindex = elf_elfheader (abfd)->e_shstrndx;
     }
 
-  name = bfd_elf_string_from_elf_section (abfd, shindex, iname);
+  return bfd_elf_string_from_elf_section (abfd, shindex, iname);
+}
+
+const char *
+bfd_elf_sym_name (bfd *abfd,
+		  Elf_Internal_Shdr *symtab_hdr,
+		  Elf_Internal_Sym *isym,
+		  asection *sym_sec)
+{
+  const char *name = bfd_elf_sym_name_raw (abfd, symtab_hdr, isym);
   if (name == NULL)
-    name = "(null)";
+    name = bfd_symbol_error_name;
   else if (sym_sec && *name == '\0')
     name = bfd_section_name (sym_sec);
 
   return name;
 }
 
-/* Elf_Internal_Shdr->contents is an array of these for SHT_GROUP
-   sections.  The first element is the flags, the rest are section
-   pointers.  */
-
-typedef union elf_internal_group {
-  Elf_Internal_Shdr *shdr;
-  unsigned int flags;
-} Elf_Internal_Group;
-
 /* Return the name of the group signature symbol.  Why isn't the
    signature just a string?  */
 
@@ -584,296 +678,140 @@ group_signature (bfd *abfd, Elf_Internal
 			    &isym, esym, &eshndx) == NULL)
     return NULL;
 
-  return bfd_elf_sym_name (abfd, hdr, &isym, NULL);
+  return bfd_elf_sym_name_raw (abfd, hdr, &isym);
 }
 
-/* Set next_in_group list pointer, and group name for NEWSECT.  */
-
-static bfd_boolean
-setup_group (bfd *abfd, Elf_Internal_Shdr *hdr, asection *newsect)
+static bool
+is_valid_group_section_header (Elf_Internal_Shdr *shdr, size_t minsize)
 {
-  unsigned int num_group = elf_tdata (abfd)->num_group;
+  return (shdr->sh_size >= minsize
+	  && shdr->sh_entsize == GRP_ENTRY_SIZE
+	  && shdr->sh_size % GRP_ENTRY_SIZE == 0
+	  && shdr->bfd_section != NULL);
+}
 
-  /* If num_group is zero, read in all SHT_GROUP sections.  The count
-     is set to -1 if there are no SHT_GROUP sections.  */
-  if (num_group == 0)
-    {
-      unsigned int i, shnum;
 
-      /* First count the number of groups.  If we have a SHT_GROUP
-	 section with just a flag word (ie. sh_size is 4), ignore it.  */
-      shnum = elf_numsections (abfd);
-      num_group = 0;
+/* Set next_in_group, sec_group list pointers, and group names.  */
 
-#define IS_VALID_GROUP_SECTION_HEADER(shdr, minsize)	\
-	(   (shdr)->sh_type == SHT_GROUP		\
-	 && (shdr)->sh_size >= minsize			\
-	 && (shdr)->sh_entsize == GRP_ENTRY_SIZE	\
-	 && ((shdr)->sh_size % GRP_ENTRY_SIZE) == 0)
+static bool
+process_sht_group_entries (bfd *abfd,
+			   Elf_Internal_Shdr *ghdr, unsigned int gidx)
+{
+  unsigned char *contents;
 
-      for (i = 0; i < shnum; i++)
-	{
-	  Elf_Internal_Shdr *shdr = elf_elfsections (abfd)[i];
+  /* Read the raw contents.  */
+  if (!bfd_malloc_and_get_section (abfd, ghdr->bfd_section, &contents))
+    {
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB: could not read contents of group [%u]"), abfd, gidx);
+      return false;
+    }
 
-	  if (IS_VALID_GROUP_SECTION_HEADER (shdr, 2 * GRP_ENTRY_SIZE))
-	    num_group += 1;
+  asection *last_elt = NULL;
+  const char *gname = NULL;
+  unsigned char *p = contents + ghdr->sh_size;
+  while (1)
+    {
+      unsigned int idx;
+      Elf_Internal_Shdr *shdr;
+      asection *elt;
+
+      p -= 4;
+      idx = H_GET_32 (abfd, p);
+      if (p == contents)
+	{
+	  if ((idx & GRP_COMDAT) != 0)
+	    ghdr->bfd_section->flags
+	      |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
+	  break;
 	}
 
-      if (num_group == 0)
+      if (idx == 0
+	  || idx >= elf_numsections (abfd)
+	  || (shdr = elf_elfsections (abfd)[idx])->sh_type == SHT_GROUP
+	  || ((elt = shdr->bfd_section) != NULL
+	      && elf_sec_group (elt) != NULL
+	      && elf_sec_group (elt) != ghdr->bfd_section))
 	{
-	  num_group = (unsigned) -1;
-	  elf_tdata (abfd)->num_group = num_group;
-	  elf_tdata (abfd)->group_sect_ptr = NULL;
+	  _bfd_error_handler
+	    (_("%pB: invalid entry (%#x) in group [%u]"),
+	     abfd, idx, gidx);
+	  continue;
 	}
-      else
-	{
-	  /* We keep a list of elf section headers for group sections,
-	     so we can find them quickly.  */
-	  bfd_size_type 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 *));
-	  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++)
-	    {
-	      Elf_Internal_Shdr *shdr = elf_elfsections (abfd)[i];
-
-	      if (IS_VALID_GROUP_SECTION_HEADER (shdr, 2 * GRP_ENTRY_SIZE))
-		{
-		  unsigned char *src;
-		  Elf_Internal_Group *dest;
-
-		  /* Make sure the group section has a BFD section
-		     attached to it.  */
-		  if (!bfd_section_from_shdr (abfd, i))
-		    return FALSE;
-
-		  /* Add to list of sections.  */
-		  elf_tdata (abfd)->group_sect_ptr[num_group] = shdr;
-		  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_error_handler
-			/* xgettext:c-format */
-			(_("%pB: invalid size field in group section"
-			   " header: %#" PRIx64 ""),
-			 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;
-		    }
-
-		  /* Translate raw contents, a flag word followed by an
-		     array of elf section indices all in target byte order,
-		     to the flag word followed by an array of elf section
-		     pointers.  */
-		  src = shdr->contents + shdr->sh_size;
-		  dest = (Elf_Internal_Group *) (shdr->contents + amt);
 
-		  while (1)
-		    {
-		      unsigned int idx;
+      /* PR binutils/23199: According to the ELF gABI all sections in
+	 a group must be marked with SHF_GROUP, but some tools
+	 generate broken objects.  Fix them up here.  */
+      shdr->sh_flags |= SHF_GROUP;
 
-		      src -= 4;
-		      --dest;
-		      idx = H_GET_32 (abfd, src);
-		      if (src == shdr->contents)
-			{
-			  dest->flags = idx;
-			  if (shdr->bfd_section != NULL && (idx & GRP_COMDAT))
-			    shdr->bfd_section->flags
-			      |= SEC_LINK_ONCE | SEC_LINK_DUPLICATES_DISCARD;
-			  break;
-			}
-		      if (idx < shnum)
-			{
-			  dest->shdr = elf_elfsections (abfd)[idx];
-			  /* PR binutils/23199: All sections in a
-			     section group should be marked with
-			     SHF_GROUP.  But some tools generate
-			     broken objects without SHF_GROUP.  Fix
-			     them up here.  */
-			  dest->shdr->sh_flags |= SHF_GROUP;
-			}
-		      if (idx >= shnum
-			  || dest->shdr->sh_type == SHT_GROUP)
-			{
-			  _bfd_error_handler
-			    (_("%pB: invalid entry in SHT_GROUP section [%u]"),
-			       abfd, i);
-			  dest->shdr = NULL;
-			}
-		    }
-		}
-	    }
-
-	  /* PR 17510: Corrupt binaries might contain invalid groups.  */
-	  if (num_group != (unsigned) elf_tdata (abfd)->num_group)
+      if (elt == NULL)
+	{
+	  if (shdr->sh_type != SHT_RELA && shdr->sh_type != SHT_REL)
 	    {
-	      elf_tdata (abfd)->num_group = num_group;
+	      const char *name = bfd_elf_string_from_elf_section
+		(abfd, elf_elfheader (abfd)->e_shstrndx, shdr->sh_name);
 
-	      /* If all groups are invalid then fail.  */
-	      if (num_group == 0)
-		{
-		  elf_tdata (abfd)->group_sect_ptr = NULL;
-		  elf_tdata (abfd)->num_group = num_group = -1;
-		  _bfd_error_handler
-		    (_("%pB: no valid group sections found"), abfd);
-		  bfd_set_error (bfd_error_bad_value);
-		}
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB: unexpected type (%#x) section `%s' in group [%u]"),
+		 abfd, shdr->sh_type, name, gidx);
 	    }
+	  continue;
 	}
-    }
 
-  if (num_group != (unsigned) -1)
-    {
-      unsigned int search_offset = elf_tdata (abfd)->group_search_offset;
-      unsigned int j;
+      /* Don't try to add a section to elf_next_in_group list twice.  */
+      if (elf_sec_group (elt) != NULL)
+	continue;
 
-      for (j = 0; j < num_group; j++)
+      if (last_elt == NULL)
 	{
-	  /* Begin search from previous found group.  */
-	  unsigned i = (j + search_offset) % num_group;
-
-	  Elf_Internal_Shdr *shdr = elf_tdata (abfd)->group_sect_ptr[i];
-	  Elf_Internal_Group *idx;
-	  bfd_size_type n_elt;
-
-	  if (shdr == NULL)
-	    continue;
-
-	  idx = (Elf_Internal_Group *) shdr->contents;
-	  if (idx == NULL || shdr->sh_size < 4)
+	  /* Start a circular list with one element.
+	     It will be in reverse order to match what gas does.  */
+	  elf_next_in_group (elt) = elt;
+	  /* Point the group section to it.  */
+	  elf_next_in_group (ghdr->bfd_section) = elt;
+	  gname = group_signature (abfd, ghdr);
+	  if (gname == NULL)
 	    {
-	      /* See PR 21957 for a reproducer.  */
-	      /* xgettext:c-format */
-	      _bfd_error_handler (_("%pB: group section '%pA' has no contents"),
-				  abfd, shdr->bfd_section);
-	      elf_tdata (abfd)->group_sect_ptr[i] = NULL;
-	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      free (contents);
+	      return false;
 	    }
-	  n_elt = shdr->sh_size / 4;
-
-	  /* Look through this group's sections to see if current
-	     section is a member.  */
-	  while (--n_elt != 0)
-	    if ((++idx)->shdr == hdr)
-	      {
-		asection *s = NULL;
-
-		/* We are a member of this group.  Go looking through
-		   other members to see if any others are linked via
-		   next_in_group.  */
-		idx = (Elf_Internal_Group *) shdr->contents;
-		n_elt = shdr->sh_size / 4;
-		while (--n_elt != 0)
-		  if ((++idx)->shdr != NULL
-		      && (s = idx->shdr->bfd_section) != NULL
-		      && elf_next_in_group (s) != NULL)
-		    break;
-		if (n_elt != 0)
-		  {
-		    /* Snarf the group name from other member, and
-		       insert current section in circular list.  */
-		    elf_group_name (newsect) = elf_group_name (s);
-		    elf_next_in_group (newsect) = elf_next_in_group (s);
-		    elf_next_in_group (s) = newsect;
-		  }
-		else
-		  {
-		    const char *gname;
-
-		    gname = group_signature (abfd, shdr);
-		    if (gname == NULL)
-		      return FALSE;
-		    elf_group_name (newsect) = gname;
-
-		    /* Start a circular list with one element.  */
-		    elf_next_in_group (newsect) = newsect;
-		  }
-
-		/* If the group section has been created, point to the
-		   new member.  */
-		if (shdr->bfd_section != NULL)
-		  elf_next_in_group (shdr->bfd_section) = newsect;
-
-		elf_tdata (abfd)->group_search_offset = i;
-		j = num_group - 1;
-		break;
-	      }
 	}
+      else
+	{
+	  elf_next_in_group (elt) = elf_next_in_group (last_elt);
+	  elf_next_in_group (last_elt) = elt;
+	}
+      last_elt = elt;
+      elf_group_name (elt) = gname;
+      elf_sec_group (elt) = ghdr->bfd_section;
     }
 
-  if (elf_group_name (newsect) == NULL)
-    {
-      /* xgettext:c-format */
-      _bfd_error_handler (_("%pB: no group info for section '%pA'"),
-			  abfd, newsect);
-      return FALSE;
-    }
-  return TRUE;
+  free (contents);
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_elf_setup_sections (bfd *abfd)
 {
-  unsigned int i;
-  unsigned int num_group = elf_tdata (abfd)->num_group;
-  bfd_boolean result = TRUE;
-  asection *s;
+  bool result = true;
 
   /* Process SHF_LINK_ORDER.  */
-  for (s = abfd->sections; s != NULL; s = s->next)
+  for (asection *s = abfd->sections; s != NULL; s = s->next)
     {
       Elf_Internal_Shdr *this_hdr = &elf_section_data (s)->this_hdr;
       if ((this_hdr->sh_flags & SHF_LINK_ORDER) != 0)
 	{
 	  unsigned int elfsec = this_hdr->sh_link;
-	  /* FIXME: The old Intel compiler and old strip/objcopy may
-	     not set the sh_link or sh_info fields.  Hence we could
-	     get the situation where elfsec is 0.  */
+	  /* An sh_link value of 0 is now allowed.  It indicates that linked
+	     to section has already been discarded, but that the current
+	     section has been retained for some other reason.  This linking
+	     section is still a candidate for later garbage collection
+	     however.  */
 	  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);
+	      elf_linked_to_section (s) = NULL;
 	    }
 	  else
 	    {
@@ -894,70 +832,35 @@ _bfd_elf_setup_sections (bfd *abfd)
 		    /* xgettext:c-format */
 		    (_("%pB: sh_link [%d] in section `%pA' is incorrect"),
 		     s->owner, elfsec, s);
-		  result = FALSE;
+		  result = false;
 		}
 
 	      elf_linked_to_section (s) = linksec;
 	    }
 	}
-      else if (this_hdr->sh_type == SHT_GROUP
-	       && elf_next_in_group (s) == NULL)
-	{
-	  _bfd_error_handler
-	    /* xgettext:c-format */
-	    (_("%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"),
-	     abfd, elf_section_data (s)->this_idx);
-	  result = FALSE;
-	}
     }
 
   /* Process section groups.  */
-  if (num_group == (unsigned) -1)
-    return result;
-
-  for (i = 0; i < num_group; i++)
+  for (unsigned int i = 1; i < elf_numsections (abfd); i++)
     {
-      Elf_Internal_Shdr *shdr = elf_tdata (abfd)->group_sect_ptr[i];
-      Elf_Internal_Group *idx;
-      unsigned int n_elt;
+      Elf_Internal_Shdr *shdr = elf_elfsections (abfd)[i];
 
-      /* PR binutils/18758: Beware of corrupt binaries with invalid group data.  */
-      if (shdr == NULL || shdr->bfd_section == NULL || shdr->contents == NULL)
+      if (shdr && shdr->sh_type == SHT_GROUP)
 	{
-	  _bfd_error_handler
-	    /* xgettext:c-format */
-	    (_("%pB: section group entry number %u is corrupt"),
-	     abfd, i);
-	  result = FALSE;
-	  continue;
-	}
-
-      idx = (Elf_Internal_Group *) shdr->contents;
-      n_elt = shdr->sh_size / 4;
-
-      while (--n_elt != 0)
-	{
-	  ++ idx;
-
-	  if (idx->shdr == NULL)
-	    continue;
-	  else if (idx->shdr->bfd_section)
-	    elf_sec_group (idx->shdr->bfd_section) = shdr->bfd_section;
-	  else if (idx->shdr->sh_type != SHT_RELA
-		   && idx->shdr->sh_type != SHT_REL)
+	  if (is_valid_group_section_header (shdr, GRP_ENTRY_SIZE))
 	    {
-	      /* There are some unknown sections in the group.  */
+	      if (shdr->sh_size >= 2 * GRP_ENTRY_SIZE
+		  && !process_sht_group_entries (abfd, shdr, i))
+		result = false;
+	    }
+	  else
+	    {
+	      /* PR binutils/18758: Beware of corrupt binaries with
+		 invalid group data.  */
 	      _bfd_error_handler
 		/* xgettext:c-format */
-		(_("%pB: unknown type [%#x] section `%s' in group [%pA]"),
-		 abfd,
-		 idx->shdr->sh_type,
-		 bfd_elf_string_from_elf_section (abfd,
-						  (elf_elfheader (abfd)
-						   ->e_shstrndx),
-						  idx->shdr->sh_name),
-		 shdr->bfd_section);
-	      result = FALSE;
+		(_("%pB: section group entry number %u is corrupt"), abfd, i);
+	      result = false;
 	    }
 	}
     }
@@ -965,7 +868,7 @@ _bfd_elf_setup_sections (bfd *abfd)
   return result;
 }
 
-bfd_boolean
+bool
 bfd_elf_is_group_section (bfd *abfd ATTRIBUTE_UNUSED, const asection *sec)
 {
   return elf_next_in_group (sec) != NULL;
@@ -979,47 +882,10 @@ bfd_elf_group_name (bfd *abfd ATTRIBUTE_
   return NULL;
 }
 
-static char *
-convert_debug_to_zdebug (bfd *abfd, const char *name)
-{
-  unsigned int len = strlen (name);
-  char *new_name = bfd_alloc (abfd, len + 2);
-  if (new_name == NULL)
-    return NULL;
-  new_name[0] = '.';
-  new_name[1] = 'z';
-  memcpy (new_name + 2, name + 1, len);
-  return new_name;
-}
-
-static char *
-convert_zdebug_to_debug (bfd *abfd, const char *name)
-{
-  unsigned int len = strlen (name);
-  char *new_name = bfd_alloc (abfd, len);
-  if (new_name == NULL)
-    return NULL;
-  new_name[0] = '.';
-  memcpy (new_name + 1, name + 2, len - 1);
-  return new_name;
-}
-
-/* This a copy of lto_section defined in GCC (lto-streamer.h).  */
-
-struct lto_section
-{
-  int16_t major_version;
-  int16_t minor_version;
-  unsigned char slim_object;
-
-  /* Flags is a private field that is not defined publicly.  */
-  uint16_t flags;
-};
-
 /* Make a BFD section from an ELF section.  We store a pointer to the
    BFD section in the bfd_section field of the header.  */
 
-bfd_boolean
+bool
 _bfd_elf_make_section_from_shdr (bfd *abfd,
 				 Elf_Internal_Shdr *hdr,
 				 const char *name,
@@ -1028,13 +894,14 @@ _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;
+    return true;
 
   newsect = bfd_make_section_anyway (abfd, name);
   if (newsect == NULL)
-    return FALSE;
+    return false;
 
   hdr->bfd_section = newsect;
   elf_section_data (newsect)->this_hdr = *hdr;
@@ -1046,11 +913,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;
@@ -1069,87 +931,96 @@ _bfd_elf_make_section_from_shdr (bfd *ab
   else if ((flags & SEC_LOAD) != 0)
     flags |= SEC_DATA;
   if ((hdr->sh_flags & SHF_MERGE) != 0)
-    {
-      flags |= SEC_MERGE;
-      newsect->entsize = hdr->sh_entsize;
-    }
+    flags |= SEC_MERGE;
   if ((hdr->sh_flags & SHF_STRINGS) != 0)
     flags |= SEC_STRINGS;
-  if (hdr->sh_flags & SHF_GROUP)
-    if (!setup_group (abfd, hdr, newsect))
-      return FALSE;
   if ((hdr->sh_flags & SHF_TLS) != 0)
     flags |= SEC_THREAD_LOCAL;
   if ((hdr->sh_flags & SHF_EXCLUDE) != 0)
     flags |= SEC_EXCLUDE;
 
+  newsect->entsize = hdr->sh_entsize;
+
   switch (elf_elfheader (abfd)->e_ident[EI_OSABI])
     {
       /* FIXME: We should not recognize SHF_GNU_MBIND for ELFOSABI_NONE,
 	 but binutils as of 2019-07-23 did not set the EI_OSABI header
 	 byte.  */
-    case ELFOSABI_NONE:
     case ELFOSABI_GNU:
     case ELFOSABI_FREEBSD:
+      if ((hdr->sh_flags & SHF_GNU_RETAIN) != 0)
+	elf_tdata (abfd)->has_gnu_osabi |= elf_gnu_osabi_retain;
+      /* Fall through */
+    case ELFOSABI_NONE:
       if ((hdr->sh_flags & SHF_GNU_MBIND) != 0)
 	elf_tdata (abfd)->has_gnu_osabi |= elf_gnu_osabi_mbind;
       break;
     }
 
-  if ((flags & SEC_ALLOC) == 0)
+  if ((flags & (SEC_ALLOC | SEC_GROUP)) == 0)
     {
       /* The debugging sections appear to be recognized only by name,
 	 not any sort of flag.  Their SEC_ALLOC bits are cleared.  */
       if (name [0] == '.')
 	{
-	  if (strncmp (name, ".debug", 6) == 0
-	      || strncmp (name, ".gnu.linkonce.wi.", 17) == 0
-	      || strncmp (name, ".zdebug", 7) == 0)
+	  if (startswith (name, ".debug")
+	      || startswith (name, ".gnu.debuglto_.debug_")
+	      || startswith (name, ".gnu.linkonce.wi.")
+	      || startswith (name, ".zdebug"))
 	    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;
-	  else if (strncmp (name, ".line", 5) == 0
-		   || strncmp (name, ".stab", 5) == 0
-		   || strcmp (name, ".gdb_index") == 0)
+	  else if (startswith (name, GNU_BUILD_ATTRS_SECTION_NAME)
+		   || startswith (name, ".note.gnu"))
+	    {
+	      flags |= SEC_ELF_OCTETS;
+	      opb = 1;
+	    }
+	  else if (startswith (name, ".line")
+		   || startswith (name, ".stab")
+		   || streq (name, ".gdb_index"))
 	    flags |= SEC_DEBUGGING;
 	}
     }
 
+  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
+							& -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.
      The symbols will be defined as weak, so that multiple definitions
      are permitted.  The GNU linker extension is to actually discard
      all but one of the sections.  */
-  if (CONST_STRNEQ (name, ".gnu.linkonce")
+  if (startswith (name, ".gnu.linkonce")
       && 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))
-      return FALSE;
-
-  if (!bfd_set_section_flags (newsect, flags))
-    return FALSE;
+    if (!bed->elf_backend_section_flags (hdr))
+      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.  */
-  if (hdr->sh_type == SHT_NOTE)
+  if (hdr->sh_type == SHT_NOTE && hdr->sh_size != 0)
     {
       bfd_byte *contents;
 
-      if (!bfd_malloc_and_get_section (abfd, newsect, &contents))
-	return FALSE;
+      if (!_bfd_elf_mmap_section_contents (abfd, newsect, &contents))
+	return false;
 
       elf_parse_notes (abfd, (char *) contents, hdr->sh_size,
 		       hdr->sh_offset, hdr->sh_addralign);
-      free (contents);
+      _bfd_elf_munmap_section_contents (newsect, contents);
     }
 
-  if ((flags & SEC_ALLOC) != 0)
+  if ((newsect->flags & SEC_ALLOC) != 0)
     {
       Elf_Internal_Phdr *phdr;
       unsigned int i, nload;
@@ -1165,7 +1036,7 @@ _bfd_elf_make_section_from_shdr (bfd *ab
 	else if (phdr->p_type == PT_LOAD && phdr->p_memsz != 0)
 	  ++nload;
       if (i >= elf_elfheader (abfd)->e_phnum && nload > 1)
-	return TRUE;
+	return true;
 
       phdr = elf_tdata (abfd)->phdr;
       for (i = 0; i < elf_elfheader (abfd)->e_phnum; i++, phdr++)
@@ -1175,9 +1046,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 +1058,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
@@ -1201,42 +1072,45 @@ _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)
-      && ((name[1] == 'd' && name[6] == '_')
-	  || (name[1] == 'z' && name[7] == '_')))
+  /* Compress/decompress DWARF debug sections with names: .debug_*,
+     .zdebug_*, .gnu.debuglto_.debug_, after the section flags is set.  */
+  if ((newsect->flags & SEC_DEBUGGING) != 0
+      && (newsect->flags & SEC_HAS_CONTENTS) != 0
+      && (newsect->flags & SEC_ELF_OCTETS) != 0)
     {
       enum { nothing, compress, decompress } action = nothing;
       int compression_header_size;
       bfd_size_type uncompressed_size;
       unsigned int uncompressed_align_power;
-      bfd_boolean compressed
-	= bfd_is_section_compressed_with_header (abfd, newsect,
-						 &compression_header_size,
-						 &uncompressed_size,
-						 &uncompressed_align_power);
-      if (compressed)
-	{
-	  /* Compressed section.  Check if we should decompress.  */
-	  if ((abfd->flags & BFD_DECOMPRESS))
-	    action = decompress;
-	}
-
-      /* Compress the uncompressed section or convert from/to .zdebug*
-	 section.  Check if we should compress.  */
-      if (action == nothing)
-	{
-	  if (newsect->size != 0
-	      && (abfd->flags & BFD_COMPRESS)
-	      && compression_header_size >= 0
-	      && uncompressed_size > 0
-	      && (!compressed
-		  || ((compression_header_size > 0)
-		      != ((abfd->flags & BFD_COMPRESS_GABI) != 0))))
+      enum compression_type ch_type = ch_none;
+      bool compressed
+	= bfd_is_section_compressed_info (abfd, newsect,
+					  &compression_header_size,
+					  &uncompressed_size,
+					  &uncompressed_align_power,
+					  &ch_type);
+
+      /* Should we decompress?  */
+      if ((abfd->flags & BFD_DECOMPRESS) != 0 && compressed)
+	action = decompress;
+
+      /* Should we compress?  Or convert to a different compression?  */
+      else if ((abfd->flags & BFD_COMPRESS) != 0
+	       && newsect->size != 0
+	       && compression_header_size >= 0
+	       && uncompressed_size > 0)
+	{
+	  if (!compressed)
 	    action = compress;
 	  else
-	    return TRUE;
+	    {
+	      enum compression_type new_ch_type = ch_none;
+	      if ((abfd->flags & BFD_COMPRESS_GABI) != 0)
+		new_ch_type = ((abfd->flags & BFD_COMPRESS_ZSTD) != 0
+			       ? ch_compress_zstd : ch_compress_zlib);
+	      if (new_ch_type != ch_type)
+		action = compress;
+	    }
 	}
 
       if (action == compress)
@@ -1245,57 +1119,45 @@ _bfd_elf_make_section_from_shdr (bfd *ab
 	    {
 	      _bfd_error_handler
 		/* xgettext:c-format */
-		(_("%pB: unable to initialize compress status for section %s"),
-		 abfd, name);
-	      return FALSE;
+		(_("%pB: unable to compress section %s"), abfd, name);
+	      return false;
 	    }
 	}
-      else
+      else if (action == decompress)
 	{
 	  if (!bfd_init_section_decompress_status (abfd, newsect))
 	    {
 	      _bfd_error_handler
 		/* xgettext:c-format */
-		(_("%pB: unable to initialize decompress status for section %s"),
-		 abfd, name);
-	      return FALSE;
+		(_("%pB: unable to decompress section %s"), abfd, name);
+	      return false;
 	    }
-	}
-
-      if (abfd->is_linker_input)
-	{
-	  if (name[1] == 'z'
-	      && (action == decompress
-		  || (action == compress
-		      && (abfd->flags & BFD_COMPRESS_GABI) != 0)))
+#ifndef HAVE_ZSTD
+	  if (newsect->compress_status == DECOMPRESS_SECTION_ZSTD)
 	    {
-	      /* Convert section name from .zdebug_* to .debug_* so
-		 that linker will consider this section as a debug
-		 section.  */
-	      char *new_name = convert_zdebug_to_debug (abfd, name);
+	      _bfd_error_handler
+		  /* xgettext:c-format */
+		  (_ ("%pB: section %s is compressed with zstd, but BFD "
+		      "is not built with zstd support"),
+		   abfd, name);
+	      newsect->compress_status = COMPRESS_SECTION_NONE;
+	      return false;
+	    }
+#endif
+	  if (abfd->is_linker_input
+	      && name[1] == 'z')
+	    {
+	      /* Rename section from .zdebug_* to .debug_* so that ld
+		 scripts will see this section as a debug section.  */
+	      char *new_name = bfd_zdebug_name_to_debug (abfd, name);
 	      if (new_name == NULL)
-		return FALSE;
+		return false;
 	      bfd_rename_section (newsect, new_name);
 	    }
 	}
-      else
-	/* For objdump, don't rename the section.  For objcopy, delay
-	   section rename to elf_fake_sections.  */
-	newsect->flags |= SEC_ELF_RENAME;
     }
 
-  /* GCC uses .gnu.lto_.lto.<some_hash> as a LTO bytecode information
-     section.  */
-  const char *lto_section_name = ".gnu.lto_.lto.";
-  if (strncmp (name, lto_section_name, strlen (lto_section_name)) == 0)
-    {
-      struct lto_section lsection;
-      if (bfd_get_section_contents (abfd, newsect, &lsection, 0,
-				    sizeof (struct lto_section)))
-	abfd->lto_slim_object = lsection.slim_object;
-    }
-
-  return TRUE;
+  return true;
 }
 
 const char *const bfd_elf_section_type_names[] =
@@ -1312,8 +1174,7 @@ const char *const bfd_elf_section_type_n
    change anything about the way the reloc is handled, since it will
    all be done at final link time.  Rather than put special case code
    into bfd_perform_relocation, all the reloc types use this howto
-   function.  It just short circuits the reloc if producing
-   relocatable output against an external symbol.  */
+   function, or should call this function for relocatable output.  */
 
 bfd_reloc_status_type
 bfd_elf_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED,
@@ -1333,6 +1194,20 @@ bfd_elf_generic_reloc (bfd *abfd ATTRIBU
       return bfd_reloc_ok;
     }
 
+  /* In some cases the relocation should be treated as output section
+     relative, as when linking ELF DWARF into PE COFF.  Many ELF
+     targets lack section relative relocations and instead use
+     ordinary absolute relocations for references between DWARF
+     sections.  That is arguably a bug in those targets but it happens
+     to work for the usual case of linking to non-loaded ELF debug
+     sections with VMAs forced to zero.  PE COFF on the other hand
+     doesn't allow a section VMA of zero.  */
+  if (output_bfd == NULL
+      && !reloc_entry->howto->pc_relative
+      && (symbol->section->flags & SEC_DEBUGGING) != 0
+      && (input_section->flags & SEC_DEBUGGING) != 0)
+    reloc_entry->addend -= symbol->section->output_section->vma;
+
   return bfd_reloc_continue;
 }
 
@@ -1340,7 +1215,7 @@ bfd_elf_generic_reloc (bfd *abfd ATTRIBU
    Names, addresses and links may be different, but everything else
    should be the same.  */
 
-static bfd_boolean
+static bool
 section_match (const Elf_Internal_Shdr * a,
 	       const Elf_Internal_Shdr * b)
 {
@@ -1348,10 +1223,10 @@ section_match (const Elf_Internal_Shdr *
       || ((a->sh_flags ^ b->sh_flags) & ~SHF_INFO_LINK) != 0
       || a->sh_addralign != b->sh_addralign
       || a->sh_entsize != b->sh_entsize)
-    return FALSE;
+    return false;
   if (a->sh_type == SHT_SYMTAB
       || a->sh_type == SHT_STRTAB)
-    return TRUE;
+    return true;
   return a->sh_size == b->sh_size;
 }
 
@@ -1394,7 +1269,7 @@ find_link (const bfd *obfd, const Elf_In
    Processor specific section, based upon a matching input section.
    Returns TRUE upon success, FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 copy_special_section_fields (const bfd *ibfd,
 			     bfd *obfd,
 			     const Elf_Internal_Shdr *iheader,
@@ -1402,8 +1277,9 @@ copy_special_section_fields (const bfd *
 			     const unsigned int secnum)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (obfd);
-  const Elf_Internal_Shdr **iheaders = (const Elf_Internal_Shdr **) elf_elfsections (ibfd);
-  bfd_boolean changed = FALSE;
+  const Elf_Internal_Shdr **iheaders
+    = (const Elf_Internal_Shdr **) elf_elfsections (ibfd);
+  bool changed = false;
   unsigned int sh_link;
 
   if (oheader->sh_type == SHT_NOBITS)
@@ -1428,14 +1304,13 @@ copy_special_section_fields (const bfd *
 	oheader->sh_link = iheader->sh_link;
       if (oheader->sh_info == 0)
 	oheader->sh_info = iheader->sh_info;
-      return TRUE;
+      return true;
     }
 
   /* 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))
-    return TRUE;
+  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
      sh_info and/or sh_link fields.  Attempt to follow those links and find
@@ -1450,14 +1325,14 @@ copy_special_section_fields (const bfd *
 	    /* xgettext:c-format */
 	    (_("%pB: invalid sh_link field (%d) in section number %d"),
 	     ibfd, iheader->sh_link, secnum);
-	  return FALSE;
+	  return false;
 	}
 
       sh_link = find_link (obfd, iheaders[iheader->sh_link], iheader->sh_link);
       if (sh_link != SHN_UNDEF)
 	{
 	  oheader->sh_link = sh_link;
-	  changed = TRUE;
+	  changed = true;
 	}
       else
 	/* FIXME: Should we install iheader->sh_link
@@ -1486,7 +1361,7 @@ copy_special_section_fields (const bfd *
       if (sh_link != SHN_UNDEF)
 	{
 	  oheader->sh_info = sh_link;
-	  changed = TRUE;
+	  changed = true;
 	}
       else
 	_bfd_error_handler
@@ -1500,22 +1375,23 @@ copy_special_section_fields (const bfd *
 /* Copy the program header and other data from one object module to
    another.  */
 
-bfd_boolean
+bool
 _bfd_elf_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
-  const Elf_Internal_Shdr **iheaders = (const Elf_Internal_Shdr **) elf_elfsections (ibfd);
+  const Elf_Internal_Shdr **iheaders
+    = (const Elf_Internal_Shdr **) elf_elfsections (ibfd);
   Elf_Internal_Shdr **oheaders = elf_elfsections (obfd);
   const struct elf_backend_data *bed;
   unsigned int i;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
     || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   if (!elf_flags_init (obfd))
     {
       elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
     }
 
   elf_gp (obfd) = elf_gp (ibfd);
@@ -1533,7 +1409,7 @@ _bfd_elf_copy_private_bfd_data (bfd *ibf
   _bfd_elf_copy_obj_attributes (ibfd, obfd);
 
   if (iheaders == NULL || oheaders == NULL)
-    return TRUE;
+    return true;
 
   bed = get_elf_backend_data (obfd);
 
@@ -1558,7 +1434,8 @@ _bfd_elf_copy_private_bfd_data (bfd *ibf
 	continue;
 
       /* Scan for the matching section in the input bfd.
-	 First we try for a direct mapping between the input and output sections.  */
+	 First we try for a direct mapping between the input and
+	 output sections.  */
       for (j = 1; j < elf_numsections (ibfd); j++)
 	{
 	  const Elf_Internal_Shdr * iheader = iheaders[j];
@@ -1571,11 +1448,13 @@ _bfd_elf_copy_private_bfd_data (bfd *ibf
 	      && iheader->bfd_section->output_section != NULL
 	      && iheader->bfd_section->output_section == oheader->bfd_section)
 	    {
-	      /* We have found a connection from the input section to the
-		 output section.  Attempt to copy the header fields.  If
-		 this fails then do not try any further sections - there
-		 should only be a one-to-one mapping between input and output. */
-	      if (! copy_special_section_fields (ibfd, obfd, iheader, oheader, i))
+	      /* We have found a connection from the input section to
+		 the output section.  Attempt to copy the header fields.
+		 If this fails then do not try any further sections -
+		 there should only be a one-to-one mapping between
+		 input and output.  */
+	      if (!copy_special_section_fields (ibfd, obfd,
+						iheader, oheader, i))
 		j = elf_numsections (ibfd);
 	      break;
 	    }
@@ -1618,12 +1497,12 @@ _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);
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static const char *
@@ -1643,6 +1522,7 @@ get_segment_type (unsigned int p_type)
     case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
     case PT_GNU_STACK: pt = "STACK"; break;
     case PT_GNU_RELRO: pt = "RELRO"; break;
+    case PT_GNU_SFRAME: pt = "SFRAME"; break;
     default: pt = NULL; break;
     }
   return pt;
@@ -1650,7 +1530,7 @@ get_segment_type (unsigned int p_type)
 
 /* Print out the program headers.  */
 
-bfd_boolean
+bool
 _bfd_elf_print_private_bfd_data (bfd *abfd, void *farg)
 {
   FILE *f = (FILE *) farg;
@@ -1697,7 +1577,7 @@ _bfd_elf_print_private_bfd_data (bfd *ab
     }
 
   s = bfd_get_section_by_name (abfd, ".dynamic");
-  if (s != NULL)
+  if (s != NULL && (s->flags & SEC_HAS_CONTENTS) != 0)
     {
       unsigned int elfsec;
       unsigned long shlink;
@@ -1707,7 +1587,7 @@ _bfd_elf_print_private_bfd_data (bfd *ab
 
       fprintf (f, _("\nDynamic Section:\n"));
 
-      if (!bfd_malloc_and_get_section (abfd, s, &dynbuf))
+      if (!_bfd_elf_mmap_section_contents (abfd, s, &dynbuf))
 	goto error_return;
 
       elfsec = _bfd_elf_section_from_bfd_section (abfd, s);
@@ -1718,19 +1598,14 @@ _bfd_elf_print_private_bfd_data (bfd *ab
       extdynsize = get_elf_backend_data (abfd)->s->sizeof_dyn;
       swap_dyn_in = get_elf_backend_data (abfd)->s->swap_dyn_in;
 
-      extdyn = dynbuf;
-      /* PR 17512: file: 6f427532.  */
-      if (s->size < extdynsize)
-	goto error_return;
-      extdynend = extdyn + s->size;
-      /* PR 17512: file: id:000006,sig:06,src:000000,op:flip4,pos:5664.
-	 Fix range check.  */
-      for (; extdyn <= (extdynend - extdynsize); extdyn += extdynsize)
+      for (extdyn = dynbuf, extdynend = dynbuf + s->size;
+	   (size_t) (extdynend - extdyn) >= extdynsize;
+	   extdyn += extdynsize)
 	{
 	  Elf_Internal_Dyn dyn;
 	  const char *name = "";
 	  char ab[20];
-	  bfd_boolean stringp;
+	  bool stringp;
 	  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
 	  (*swap_dyn_in) (abfd, extdyn, &dyn);
@@ -1738,21 +1613,21 @@ _bfd_elf_print_private_bfd_data (bfd *ab
 	  if (dyn.d_tag == DT_NULL)
 	    break;
 
-	  stringp = FALSE;
+	  stringp = false;
 	  switch (dyn.d_tag)
 	    {
 	    default:
 	      if (bed->elf_backend_get_target_dtag)
 		name = (*bed->elf_backend_get_target_dtag) (dyn.d_tag);
 
-	      if (!strcmp (name, ""))
+	      if (streq (name, ""))
 		{
-		  sprintf (ab, "%#" BFD_VMA_FMT "x", dyn.d_tag);
+		  sprintf (ab, "%#" PRIx64, (uint64_t) dyn.d_tag);
 		  name = ab;
 		}
 	      break;
 
-	    case DT_NEEDED: name = "NEEDED"; stringp = TRUE; break;
+	    case DT_NEEDED: name = "NEEDED"; stringp = true; break;
 	    case DT_PLTRELSZ: name = "PLTRELSZ"; break;
 	    case DT_PLTGOT: name = "PLTGOT"; break;
 	    case DT_HASH: name = "HASH"; break;
@@ -1765,12 +1640,15 @@ _bfd_elf_print_private_bfd_data (bfd *ab
 	    case DT_SYMENT: name = "SYMENT"; break;
 	    case DT_INIT: name = "INIT"; break;
 	    case DT_FINI: name = "FINI"; break;
-	    case DT_SONAME: name = "SONAME"; stringp = TRUE; break;
-	    case DT_RPATH: name = "RPATH"; stringp = TRUE; break;
+	    case DT_SONAME: name = "SONAME"; stringp = true; break;
+	    case DT_RPATH: name = "RPATH"; stringp = true; break;
 	    case DT_SYMBOLIC: name = "SYMBOLIC"; break;
 	    case DT_REL: name = "REL"; break;
 	    case DT_RELSZ: name = "RELSZ"; break;
 	    case DT_RELENT: name = "RELENT"; break;
+	    case DT_RELR: name = "RELR"; break;
+	    case DT_RELRSZ: name = "RELRSZ"; break;
+	    case DT_RELRENT: name = "RELRENT"; break;
 	    case DT_PLTREL: name = "PLTREL"; break;
 	    case DT_DEBUG: name = "DEBUG"; break;
 	    case DT_TEXTREL: name = "TEXTREL"; break;
@@ -1780,7 +1658,7 @@ _bfd_elf_print_private_bfd_data (bfd *ab
 	    case DT_FINI_ARRAY: name = "FINI_ARRAY"; break;
 	    case DT_INIT_ARRAYSZ: name = "INIT_ARRAYSZ"; break;
 	    case DT_FINI_ARRAYSZ: name = "FINI_ARRAYSZ"; break;
-	    case DT_RUNPATH: name = "RUNPATH"; stringp = TRUE; break;
+	    case DT_RUNPATH: name = "RUNPATH"; stringp = true; break;
 	    case DT_FLAGS: name = "FLAGS"; break;
 	    case DT_PREINIT_ARRAY: name = "PREINIT_ARRAY"; break;
 	    case DT_PREINIT_ARRAYSZ: name = "PREINIT_ARRAYSZ"; break;
@@ -1792,9 +1670,9 @@ _bfd_elf_print_private_bfd_data (bfd *ab
 	    case DT_POSFLAG_1: name = "POSFLAG_1"; break;
 	    case DT_SYMINSZ: name = "SYMINSZ"; break;
 	    case DT_SYMINENT: name = "SYMINENT"; break;
-	    case DT_CONFIG: name = "CONFIG"; stringp = TRUE; break;
-	    case DT_DEPAUDIT: name = "DEPAUDIT"; stringp = TRUE; break;
-	    case DT_AUDIT: name = "AUDIT"; stringp = TRUE; break;
+	    case DT_CONFIG: name = "CONFIG"; stringp = true; break;
+	    case DT_DEPAUDIT: name = "DEPAUDIT"; stringp = true; break;
+	    case DT_AUDIT: name = "AUDIT"; stringp = true; break;
 	    case DT_PLTPAD: name = "PLTPAD"; break;
 	    case DT_MOVETAB: name = "MOVETAB"; break;
 	    case DT_SYMINFO: name = "SYMINFO"; break;
@@ -1806,9 +1684,9 @@ _bfd_elf_print_private_bfd_data (bfd *ab
 	    case DT_VERDEFNUM: name = "VERDEFNUM"; break;
 	    case DT_VERNEED: name = "VERNEED"; break;
 	    case DT_VERNEEDNUM: name = "VERNEEDNUM"; break;
-	    case DT_AUXILIARY: name = "AUXILIARY"; stringp = TRUE; break;
+	    case DT_AUXILIARY: name = "AUXILIARY"; stringp = true; break;
 	    case DT_USED: name = "USED"; break;
-	    case DT_FILTER: name = "FILTER"; stringp = TRUE; break;
+	    case DT_FILTER: name = "FILTER"; stringp = true; break;
 	    case DT_GNU_HASH: name = "GNU_HASH"; break;
 	    }
 
@@ -1831,15 +1709,15 @@ _bfd_elf_print_private_bfd_data (bfd *ab
 	  fprintf (f, "\n");
 	}
 
-      free (dynbuf);
+      _bfd_elf_munmap_section_contents (s, dynbuf);
       dynbuf = NULL;
     }
 
   if ((elf_dynverdef (abfd) != 0 && elf_tdata (abfd)->verdef == NULL)
       || (elf_dynverref (abfd) != 0 && elf_tdata (abfd)->verref == NULL))
     {
-      if (! _bfd_elf_slurp_version_tables (abfd, FALSE))
-	return FALSE;
+      if (! _bfd_elf_slurp_version_tables (abfd, false))
+	return false;
     }
 
   if (elf_dynverdef (abfd) != 0)
@@ -1885,23 +1763,587 @@ _bfd_elf_print_private_bfd_data (bfd *ab
 	}
     }
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (dynbuf != NULL)
-    free (dynbuf);
-  return FALSE;
+  _bfd_elf_munmap_section_contents (s, dynbuf);
+  return false;
+}
+
+/* Find the file offset corresponding to VMA by using the program
+   headers.  */
+
+static file_ptr
+offset_from_vma (Elf_Internal_Phdr *phdrs, size_t phnum, bfd_vma vma,
+		 size_t size, size_t *max_size_p)
+{
+  Elf_Internal_Phdr *seg;
+  size_t i;
+
+  for (seg = phdrs, i = 0; i < phnum; ++seg, ++i)
+    if (seg->p_type == PT_LOAD
+	&& vma >= (seg->p_vaddr & -seg->p_align)
+	&& vma + size <= seg->p_vaddr + seg->p_filesz)
+      {
+	if (max_size_p)
+	  *max_size_p = seg->p_vaddr + seg->p_filesz - vma;
+	return vma - seg->p_vaddr + seg->p_offset;
+      }
+
+  if (max_size_p)
+    *max_size_p = 0;
+  bfd_set_error (bfd_error_invalid_operation);
+  return (file_ptr) -1;
+}
+
+/* Convert hash table to internal form.  */
+
+static bfd_vma *
+get_hash_table_data (bfd *abfd, bfd_size_type number,
+		     unsigned int ent_size, bfd_size_type filesize)
+{
+  unsigned char *e_data = NULL;
+  bfd_vma *i_data = NULL;
+  bfd_size_type size;
+  void *e_data_addr;
+  size_t e_data_size ATTRIBUTE_UNUSED;
+
+  if (ent_size != 4 && ent_size != 8)
+    return NULL;
+
+  if ((size_t) number != number)
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return NULL;
+    }
+
+  size = ent_size * number;
+  /* Be kind to memory checkers (eg valgrind, address sanitizer) by not
+     attempting to allocate memory when the read is bound to fail.  */
+  if (size > filesize
+      || number >= ~(size_t) 0 / ent_size
+      || number >= ~(size_t) 0 / sizeof (*i_data))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return NULL;
+    }
+
+  e_data = _bfd_mmap_temporary (abfd, size, &e_data_addr, &e_data_size);
+  if (e_data == NULL)
+    return NULL;
+
+  i_data = (bfd_vma *) bfd_malloc (number * sizeof (*i_data));
+  if (i_data == NULL)
+    {
+      _bfd_munmap_temporary (e_data_addr, e_data_size);
+      return NULL;
+    }
+
+  if (ent_size == 4)
+    while (number--)
+      i_data[number] = bfd_get_32 (abfd, e_data + number * ent_size);
+  else
+    while (number--)
+      i_data[number] = bfd_get_64 (abfd, e_data + number * ent_size);
+
+  _bfd_munmap_temporary (e_data_addr, e_data_size);
+  return i_data;
 }
 
-/* Get version string.  */
+/* Address of .MIPS.xhash section.  FIXME: What is the best way to
+   support DT_MIPS_XHASH?  */
+#define DT_MIPS_XHASH	       0x70000036
+
+/* Reconstruct dynamic symbol table from PT_DYNAMIC segment.  */
+
+bool
+_bfd_elf_get_dynamic_symbols (bfd *abfd, Elf_Internal_Phdr *phdr,
+			      Elf_Internal_Phdr *phdrs, size_t phnum,
+			      bfd_size_type filesize)
+{
+  bfd_byte *extdyn, *extdynend;
+  size_t extdynsize;
+  void (*swap_dyn_in) (bfd *, const void *, Elf_Internal_Dyn *);
+  bool (*swap_symbol_in) (bfd *, const void *, const void *,
+			  Elf_Internal_Sym *);
+  Elf_Internal_Dyn dyn;
+  bfd_vma dt_hash = 0;
+  bfd_vma dt_gnu_hash = 0;
+  bfd_vma dt_mips_xhash = 0;
+  bfd_vma dt_strtab = 0;
+  bfd_vma dt_symtab = 0;
+  size_t dt_strsz = 0;
+  bfd_vma dt_versym = 0;
+  bfd_vma dt_verdef = 0;
+  bfd_vma dt_verneed = 0;
+  bfd_byte *dynbuf = NULL;
+  char *strbuf = NULL;
+  bfd_vma *gnubuckets = NULL;
+  bfd_vma *gnuchains = NULL;
+  bfd_vma *mipsxlat = NULL;
+  file_ptr saved_filepos, filepos;
+  bool res = false;
+  size_t amt;
+  bfd_byte *esymbuf = NULL, *esym;
+  bfd_size_type symcount;
+  Elf_Internal_Sym *isymbuf = NULL;
+  Elf_Internal_Sym *isym, *isymend;
+  bfd_byte *versym = NULL;
+  bfd_byte *verdef = NULL;
+  bfd_byte *verneed = NULL;
+  size_t verdef_size = 0;
+  size_t verneed_size = 0;
+  size_t extsym_size;
+  const struct elf_backend_data *bed;
+  void *dynbuf_addr = NULL;
+  void *esymbuf_addr = NULL;
+  size_t dynbuf_size = 0;
+  size_t esymbuf_size = 0;
+
+  /* Return TRUE if symbol table is bad.  */
+  if (elf_bad_symtab (abfd))
+    return true;
+
+  /* Return TRUE if DT_HASH/DT_GNU_HASH have bee processed before.  */
+  if (elf_tdata (abfd)->dt_strtab != NULL)
+    return true;
+
+  bed = get_elf_backend_data (abfd);
+
+  /* Save file position for elf_object_p.  */
+  saved_filepos = bfd_tell (abfd);
+
+  if (bfd_seek (abfd, phdr->p_offset, SEEK_SET) != 0)
+    goto error_return;
+
+  dynbuf_size = phdr->p_filesz;
+  dynbuf = _bfd_mmap_temporary (abfd, dynbuf_size, &dynbuf_addr, &dynbuf_size);
+  if (dynbuf == NULL)
+    goto error_return;
+
+  extsym_size = bed->s->sizeof_sym;
+  extdynsize = bed->s->sizeof_dyn;
+  swap_dyn_in = bed->s->swap_dyn_in;
+
+  extdyn = dynbuf;
+  if (phdr->p_filesz < extdynsize)
+    goto error_return;
+  extdynend = extdyn + phdr->p_filesz;
+  for (; extdyn <= (extdynend - extdynsize); extdyn += extdynsize)
+    {
+      swap_dyn_in (abfd, extdyn, &dyn);
+
+      if (dyn.d_tag == DT_NULL)
+	break;
+
+      switch (dyn.d_tag)
+	{
+	case DT_HASH:
+	  dt_hash = dyn.d_un.d_val;
+	  break;
+	case DT_GNU_HASH:
+	  if (bed->elf_machine_code != EM_MIPS
+	      && bed->elf_machine_code != EM_MIPS_RS3_LE)
+	    dt_gnu_hash = dyn.d_un.d_val;
+	  break;
+	case DT_STRTAB:
+	  dt_strtab = dyn.d_un.d_val;
+	  break;
+	case DT_SYMTAB:
+	  dt_symtab = dyn.d_un.d_val;
+	  break;
+	case DT_STRSZ:
+	  dt_strsz = dyn.d_un.d_val;
+	  break;
+	case DT_SYMENT:
+	  if (dyn.d_un.d_val != extsym_size)
+	    goto error_return;
+	  break;
+	case DT_VERSYM:
+	  dt_versym = dyn.d_un.d_val;
+	  break;
+	case DT_VERDEF:
+	  dt_verdef = dyn.d_un.d_val;
+	  break;
+	case DT_VERNEED:
+	  dt_verneed = dyn.d_un.d_val;
+	  break;
+	default:
+	  if (dyn.d_tag == DT_MIPS_XHASH
+	      && (bed->elf_machine_code == EM_MIPS
+		  || bed->elf_machine_code == EM_MIPS_RS3_LE))
+	    {
+	      dt_gnu_hash = dyn.d_un.d_val;
+	      dt_mips_xhash = dyn.d_un.d_val;
+	    }
+	  break;
+	}
+    }
+
+  /* Check if we can reconstruct dynamic symbol table from PT_DYNAMIC
+     segment.  */
+  if ((!dt_hash && !dt_gnu_hash)
+      || !dt_strtab
+      || !dt_symtab
+      || !dt_strsz)
+    goto error_return;
+
+  /* Get dynamic string table.  */
+  filepos = offset_from_vma (phdrs, phnum, dt_strtab, dt_strsz, NULL);
+  if (filepos == (file_ptr) -1
+      || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+    goto error_return;
+
+  /* Dynamic string table must be valid until ABFD is closed.  */
+  strbuf = (char *) _bfd_mmap_persistent (abfd, dt_strsz);
+  if (strbuf == NULL)
+    goto error_return;
+  if (strbuf[dt_strsz - 1] != 0)
+    {
+      /* It is an error if a string table is't terminated.  */
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB: DT_STRTAB table is corrupt"), abfd);
+      strbuf[dt_strsz - 1] = 0;
+    }
+
+  /* Get the real symbol count from DT_HASH or DT_GNU_HASH.  Prefer
+     DT_HASH since it is simpler than DT_GNU_HASH.  */
+  if (dt_hash)
+    {
+      unsigned char nb[16];
+      unsigned int hash_ent_size;
+
+      switch (bed->elf_machine_code)
+	{
+	case EM_ALPHA:
+	case EM_S390:
+	case EM_S390_OLD:
+	  if (bed->s->elfclass == ELFCLASS64)
+	    {
+	      hash_ent_size = 8;
+	      break;
+	    }
+	  /* FALLTHROUGH */
+	default:
+	  hash_ent_size = 4;
+	  break;
+	}
+
+      filepos = offset_from_vma (phdrs, phnum, dt_hash, 2 * hash_ent_size,
+				 NULL);
+      if (filepos == (file_ptr) -1
+	  || bfd_seek (abfd, filepos, SEEK_SET) != 0
+	  || bfd_read (nb, 2 * hash_ent_size, abfd) != 2 * hash_ent_size)
+	goto error_return;
+
+      /* The number of dynamic symbol table entries equals the number
+	 of chains.  */
+      if (hash_ent_size == 8)
+	symcount = bfd_get_64 (abfd, nb + hash_ent_size);
+      else
+	symcount = bfd_get_32 (abfd, nb + hash_ent_size);
+    }
+  else
+    {
+      /* For DT_GNU_HASH, only defined symbols with non-STB_LOCAL
+	 bindings are in hash table.  Since in dynamic symbol table,
+	 all symbols with STB_LOCAL binding are placed before symbols
+	 with other bindings and all undefined symbols are placed
+	 before defined ones, the highest symbol index in DT_GNU_HASH
+	 is the highest dynamic symbol table index.  */
+      unsigned char nb[16];
+      bfd_vma ngnubuckets;
+      bfd_vma gnusymidx;
+      size_t i, ngnuchains;
+      bfd_vma maxchain = 0xffffffff, bitmaskwords;
+      bfd_vma buckets_vma;
+
+      filepos = offset_from_vma (phdrs, phnum, dt_gnu_hash,
+				 sizeof (nb), NULL);
+      if (filepos == (file_ptr) -1
+	  || bfd_seek (abfd, filepos, SEEK_SET) != 0
+	  || bfd_read (nb, sizeof (nb), abfd) != sizeof (nb))
+	goto error_return;
+
+      ngnubuckets = bfd_get_32 (abfd, nb);
+      gnusymidx = bfd_get_32 (abfd, nb + 4);
+      bitmaskwords = bfd_get_32 (abfd, nb + 8);
+      buckets_vma = dt_gnu_hash + 16;
+      if (bed->s->elfclass == ELFCLASS32)
+	buckets_vma += bitmaskwords * 4;
+      else
+	buckets_vma += bitmaskwords * 8;
+      filepos = offset_from_vma (phdrs, phnum, buckets_vma, 4, NULL);
+      if (filepos == (file_ptr) -1
+	  || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+	goto error_return;
+
+      gnubuckets = get_hash_table_data (abfd, ngnubuckets, 4, filesize);
+      if (gnubuckets == NULL)
+	goto error_return;
+
+      for (i = 0; i < ngnubuckets; i++)
+	if (gnubuckets[i] != 0)
+	  {
+	    if (gnubuckets[i] < gnusymidx)
+	      goto error_return;
+
+	    if (maxchain == 0xffffffff || gnubuckets[i] > maxchain)
+	      maxchain = gnubuckets[i];
+	  }
+
+      if (maxchain == 0xffffffff)
+	{
+	  symcount = 0;
+	  goto empty_gnu_hash;
+	}
+
+      maxchain -= gnusymidx;
+      filepos = offset_from_vma (phdrs, phnum,
+				 buckets_vma + 4 * (ngnubuckets + maxchain),
+				 4, NULL);
+      if (filepos == (file_ptr) -1
+	  || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+	goto error_return;
+
+      do
+	{
+	  if (bfd_read (nb, 4, abfd) != 4)
+	    goto error_return;
+	  ++maxchain;
+	  if (maxchain == 0)
+	    goto error_return;
+	}
+      while ((bfd_get_32 (abfd, nb) & 1) == 0);
+
+      filepos = offset_from_vma (phdrs, phnum,
+				 buckets_vma + 4 * ngnubuckets,
+				 4, NULL);
+      if (filepos == (file_ptr) -1
+	  || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+	goto error_return;
+
+      gnuchains = get_hash_table_data (abfd, maxchain, 4, filesize);
+      if (gnuchains == NULL)
+	goto error_return;
+      ngnuchains = maxchain;
+
+      if (dt_mips_xhash)
+	{
+	  filepos = offset_from_vma (phdrs, phnum,
+				     buckets_vma + 4 * (ngnubuckets + maxchain),
+				     4, NULL);
+	  if (filepos == (file_ptr) -1
+	      || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+	    goto error_return;
+
+	  mipsxlat = get_hash_table_data (abfd, maxchain, 4, filesize);
+	  if (mipsxlat == NULL)
+	    goto error_return;
+	}
+
+      symcount = 0;
+      for (i = 0; i < ngnubuckets; ++i)
+	if (gnubuckets[i] != 0)
+	  {
+	    bfd_vma si = gnubuckets[i];
+	    bfd_vma off = si - gnusymidx;
+	    do
+	      {
+		if (mipsxlat)
+		  {
+		    if (mipsxlat[off] >= symcount)
+		      symcount = mipsxlat[off] + 1;
+		  }
+		else
+		  {
+		    if (si >= symcount)
+		      symcount = si + 1;
+		  }
+		si++;
+	      }
+	    while (off < ngnuchains && (gnuchains[off++] & 1) == 0);
+	  }
+    }
+
+  /* Swap in dynamic symbol table.  */
+  if (_bfd_mul_overflow (symcount, extsym_size, &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      goto error_return;
+    }
+
+  filepos = offset_from_vma (phdrs, phnum, dt_symtab, amt, NULL);
+  if (filepos == (file_ptr) -1
+      || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+    goto error_return;
+  esymbuf_size = amt;
+  esymbuf = _bfd_mmap_temporary (abfd, esymbuf_size,
+				 &esymbuf_addr, &esymbuf_size);
+  if (esymbuf == NULL)
+    goto error_return;
+
+  if (_bfd_mul_overflow (symcount, sizeof (Elf_Internal_Sym), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      goto error_return;
+    }
+
+  /* Dynamic symbol table must be valid until ABFD is closed.  */
+  isymbuf = (Elf_Internal_Sym *) bfd_alloc (abfd, amt);
+  if (isymbuf == NULL)
+    goto error_return;
+
+  swap_symbol_in = bed->s->swap_symbol_in;
+
+  /* Convert the symbols to internal form.  */
+  isymend = isymbuf + symcount;
+  for (esym = esymbuf, isym = isymbuf;
+       isym < isymend;
+       esym += extsym_size, isym++)
+    if (!swap_symbol_in (abfd, esym, NULL, isym)
+	|| isym->st_name >= dt_strsz)
+      {
+	bfd_set_error (bfd_error_invalid_operation);
+	goto error_return;
+      }
+
+  if (dt_versym)
+    {
+      /* Swap in DT_VERSYM.  */
+      if (_bfd_mul_overflow (symcount, 2, &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  goto error_return;
+	}
+
+      filepos = offset_from_vma (phdrs, phnum, dt_versym, amt, NULL);
+      if (filepos == (file_ptr) -1
+	  || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+	goto error_return;
+
+      /* DT_VERSYM info must be valid until ABFD is closed.  */
+      versym = _bfd_mmap_persistent (abfd, amt);
+
+      if (dt_verdef)
+	{
+	  /* Read in DT_VERDEF.  */
+	  filepos = offset_from_vma (phdrs, phnum, dt_verdef,
+				     0, &verdef_size);
+	  if (filepos == (file_ptr) -1
+	      || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+	    goto error_return;
+
+	  /* DT_VERDEF info must be valid until ABFD is closed.  */
+	  verdef = _bfd_mmap_persistent (abfd, verdef_size);
+	}
+
+      if (dt_verneed)
+	{
+	  /* Read in DT_VERNEED.  */
+	  filepos = offset_from_vma (phdrs, phnum, dt_verneed,
+				     0, &verneed_size);
+	  if (filepos == (file_ptr) -1
+	      || bfd_seek (abfd, filepos, SEEK_SET) != 0)
+	    goto error_return;
+
+	  /* DT_VERNEED info must be valid until ABFD is closed.  */
+	  verneed = _bfd_mmap_persistent (abfd, verneed_size);
+	}
+    }
+
+ empty_gnu_hash:
+  elf_tdata (abfd)->dt_strtab = strbuf;
+  elf_tdata (abfd)->dt_strsz = dt_strsz;
+  elf_tdata (abfd)->dt_symtab = isymbuf;
+  elf_tdata (abfd)->dt_symtab_count = symcount;
+  elf_tdata (abfd)->dt_versym = versym;
+  elf_tdata (abfd)->dt_verdef = verdef;
+  elf_tdata (abfd)->dt_verneed = verneed;
+  elf_tdata (abfd)->dt_verdef_count
+    = verdef_size / sizeof (Elf_External_Verdef);
+  elf_tdata (abfd)->dt_verneed_count
+    = verneed_size / sizeof (Elf_External_Verneed);
+
+  res = true;
+
+ error_return:
+  /* Restore file position for elf_object_p.  */
+  if (bfd_seek (abfd, saved_filepos, SEEK_SET) != 0)
+    res = false;
+  _bfd_munmap_temporary (dynbuf_addr, dynbuf_size);
+  _bfd_munmap_temporary (esymbuf_addr, esymbuf_size);
+  free (gnubuckets);
+  free (gnuchains);
+  free (mipsxlat);
+  return res;
+}
+
+/* Reconstruct section from dynamic symbol.  */
+
+asection *
+_bfd_elf_get_section_from_dynamic_symbol (bfd *abfd,
+					  Elf_Internal_Sym *isym)
+{
+  asection *sec;
+  flagword flags;
+
+  if (!elf_use_dt_symtab_p (abfd))
+    return NULL;
+
+  flags = SEC_ALLOC | SEC_LOAD;
+  switch (ELF_ST_TYPE (isym->st_info))
+    {
+    case STT_FUNC:
+    case STT_GNU_IFUNC:
+      sec = bfd_get_section_by_name (abfd, ".text");
+      if (sec == NULL)
+	sec = bfd_make_section_with_flags (abfd,
+					   ".text",
+					   flags | SEC_CODE);
+      break;
+    case STT_COMMON:
+      sec = bfd_com_section_ptr;
+      break;
+    case STT_OBJECT:
+      sec = bfd_get_section_by_name (abfd, ".data");
+      if (sec == NULL)
+	sec = bfd_make_section_with_flags (abfd,
+					   ".data",
+					   flags | SEC_DATA);
+      break;
+    case STT_TLS:
+      sec = bfd_get_section_by_name (abfd, ".tdata");
+      if (sec == NULL)
+	sec = bfd_make_section_with_flags (abfd,
+					   ".tdata",
+					   (flags
+					    | SEC_DATA
+					    | SEC_THREAD_LOCAL));
+      break;
+    default:
+      sec = bfd_abs_section_ptr;
+      break;
+    }
+
+  return sec;
+}
+
+/* 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 *hidden)
+				    bool base_p,
+				    bool *hidden)
 {
   const char *version_string = NULL;
-  if (elf_dynversym (abfd) != 0
-      && (elf_dynverdef (abfd) != 0 || elf_dynverref (abfd) != 0))
+  if ((elf_dynversym (abfd) != 0
+       && (elf_dynverdef (abfd) != 0 || elf_dynverref (abfd) != 0))
+      || (elf_tdata (abfd)->dt_versym != NULL
+	  && (elf_tdata (abfd)->dt_verdef != NULL
+	      || elf_tdata (abfd)->dt_verneed != NULL)))
     {
       unsigned int vernum = ((elf_symbol_type *) symbol)->version;
 
@@ -1914,10 +2356,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
+	      || ! streq (symbol->name, nodename))
+	    version_string = nodename;
+	}
       else
 	{
 	  Elf_Internal_Verneed *t;
@@ -1933,6 +2383,7 @@ _bfd_elf_get_symbol_version_string (bfd
 		{
 		  if (a->vna_other == vernum)
 		    {
+		      *hidden = true;
 		      version_string = a->vna_nodename;
 		      break;
 		    }
@@ -1952,10 +2403,13 @@ bfd_elf_print_symbol (bfd *abfd,
 		      bfd_print_symbol_type how)
 {
   FILE *file = (FILE *) filep;
+  const char *symname = (symbol->name != bfd_symbol_error_name
+			 ? symbol->name : _("<corrupt>"));
+
   switch (how)
     {
     case bfd_print_symbol_name:
-      fprintf (file, "%s", symbol->name);
+      fprintf (file, "%s", symname);
       break;
     case bfd_print_symbol_more:
       fprintf (file, "elf ");
@@ -1970,7 +2424,7 @@ bfd_elf_print_symbol (bfd *abfd,
 	unsigned char st_other;
 	bfd_vma val;
 	const char *version_string;
-	bfd_boolean hidden;
+	bool hidden;
 
 	section_name = symbol->section ? symbol->section->name : "(*none*)";
 
@@ -1978,11 +2432,10 @@ bfd_elf_print_symbol (bfd *abfd,
 	if (bed->elf_backend_print_symbol_all)
 	  name = (*bed->elf_backend_print_symbol_all) (abfd, filep, symbol);
 
-	if (name == NULL)
-	  {
-	    name = symbol->name;
-	    bfd_print_symbol_vandf (abfd, file, symbol);
-	  }
+	if (name != NULL)
+	  symname = name;
+	else
+	  bfd_print_symbol_vandf (abfd, file, symbol);
 
 	fprintf (file, " %s\t", section_name);
 	/* Print the "other" value for a symbol.  For common symbols,
@@ -1998,6 +2451,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)
 	  {
@@ -2028,7 +2482,7 @@ bfd_elf_print_symbol (bfd *abfd,
 	    fprintf (file, " 0x%02x", (unsigned int) st_other);
 	  }
 
-	fprintf (file, " %s", name);
+	fprintf (file, " %s", symname);
       }
       break;
     }
@@ -2038,49 +2492,28 @@ bfd_elf_print_symbol (bfd *abfd,
 
 /* Create a new bfd section from an ELF section header.  */
 
-bfd_boolean
+bool
 bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
 {
   Elf_Internal_Shdr *hdr;
   Elf_Internal_Ehdr *ehdr;
   const struct elf_backend_data *bed;
   const char *name;
-  bfd_boolean ret = TRUE;
-  static bfd_boolean * sections_being_created = NULL;
-  static bfd * sections_being_created_abfd = NULL;
-  static unsigned int nesting = 0;
+  bool ret = true;
 
   if (shindex >= elf_numsections (abfd))
-    return FALSE;
+    return false;
 
-  if (++ nesting > 3)
+  /* PR17512: A corrupt ELF binary might contain a loop of sections via
+     sh_link or sh_info.  Detect this here, by refusing to load a
+     section that we are already in the process of loading.  */
+  if (elf_tdata (abfd)->being_created[shindex])
     {
-      /* PR17512: A corrupt ELF binary might contain a recursive group of
-	 sections, with each the string indices pointing to the next in the
-	 loop.  Detect this here, by refusing to load a section that we are
-	 already in the process of loading.  We only trigger this test if
-	 we have nested at least three sections deep as normal ELF binaries
-	 can expect to recurse at least once.
-
-	 FIXME: It would be better if this array was attached to the bfd,
-	 rather than being held in a static pointer.  */
-
-      if (sections_being_created_abfd != abfd)
-	sections_being_created = NULL;
-      if (sections_being_created == NULL)
-	{
-	  sections_being_created = (bfd_boolean *)
-	    bfd_zalloc2 (abfd, elf_numsections (abfd), sizeof (bfd_boolean));
-	  sections_being_created_abfd = abfd;
-	}
-      if (sections_being_created [shindex])
-	{
-	  _bfd_error_handler
-	    (_("%pB: warning: loop in section dependencies detected"), abfd);
-	  return FALSE;
-	}
-      sections_being_created [shindex] = TRUE;
+      _bfd_error_handler
+	(_("%pB: warning: loop in section dependencies detected"), abfd);
+      return false;
     }
+  elf_tdata (abfd)->being_created[shindex] = true;
 
   hdr = elf_elfsections (abfd)[shindex];
   ehdr = elf_elfheader (abfd);
@@ -2105,6 +2538,7 @@ bfd_section_from_shdr (bfd *abfd, unsign
     case SHT_PREINIT_ARRAY:	/* .preinit_array section.  */
     case SHT_GNU_LIBLIST:	/* .gnu.liblist section.  */
     case SHT_GNU_HASH:		/* .gnu.hash section.  */
+    case SHT_GNU_SFRAME:	/* .sframe section.  */
       ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
       goto success;
 
@@ -2114,14 +2548,14 @@ bfd_section_from_shdr (bfd *abfd, unsign
 
       if (hdr->sh_link > elf_numsections (abfd))
 	{
-	  /* PR 10478: Accept Solaris binaries with a sh_link
-	     field set to SHN_BEFORE or SHN_AFTER.  */
+	  /* PR 10478: Accept Solaris binaries with a sh_link field
+	     set to SHN_BEFORE (LORESERVE) or SHN_AFTER (LORESERVE+1).  */
 	  switch (bfd_get_arch (abfd))
 	    {
 	    case bfd_arch_i386:
 	    case bfd_arch_sparc:
-	      if (hdr->sh_link == (SHN_LORESERVE & 0xffff) /* SHN_BEFORE */
-		  || hdr->sh_link == ((SHN_LORESERVE + 1) & 0xffff) /* SHN_AFTER */)
+	      if (hdr->sh_link == (SHN_LORESERVE & 0xffff)
+		  || hdr->sh_link == ((SHN_LORESERVE + 1) & 0xffff))
 		break;
 	      /* Otherwise fall through.  */
 	    default:
@@ -2213,7 +2647,7 @@ bfd_section_from_shdr (bfd *abfd, unsign
 	elf_section_list * entry;
 	unsigned int i, num_sec;
 
-	for (entry = elf_symtab_shndx_list (abfd); entry != NULL; entry = entry->next)
+	for (entry = elf_symtab_shndx_list (abfd); entry; entry = entry->next)
 	  if (entry->hdr.sh_link == shindex)
 	    goto success;
 
@@ -2239,7 +2673,8 @@ bfd_section_from_shdr (bfd *abfd, unsign
 
 	if (i != shindex)
 	  ret = bfd_section_from_shdr (abfd, i);
-	/* else FIXME: we have failed to find the symbol table - should we issue an error ? */
+	/* else FIXME: we have failed to find the symbol table.
+	   Should we issue an error?  */
 	goto success;
       }
 
@@ -2283,11 +2718,11 @@ bfd_section_from_shdr (bfd *abfd, unsign
       ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
       goto success;
 
-    case SHT_SYMTAB_SHNDX:	/* Symbol section indices when >64k sections.  */
+    case SHT_SYMTAB_SHNDX: /* Symbol section indices when >64k sections.  */
       {
 	elf_section_list * entry;
 
-	for (entry = elf_symtab_shndx_list (abfd); entry != NULL; entry = entry->next)
+	for (entry = elf_symtab_shndx_list (abfd); entry; entry = entry->next)
 	  if (entry->ndx == shindex)
 	    goto success;
 
@@ -2364,16 +2799,22 @@ bfd_section_from_shdr (bfd *abfd, unsign
 
     case SHT_REL:
     case SHT_RELA:
+    case SHT_RELR:
       /* *These* do a lot of work -- but build no sections!  */
       {
 	asection *target_sect;
 	Elf_Internal_Shdr *hdr2, **p_hdr;
 	unsigned int num_sec = elf_numsections (abfd);
 	struct bfd_elf_section_data *esdt;
+	bfd_size_type size;
 
-	if (hdr->sh_entsize
-	    != (bfd_size_type) (hdr->sh_type == SHT_REL
-				? bed->s->sizeof_rel : bed->s->sizeof_rela))
+	if (hdr->sh_type == SHT_REL)
+	  size = bed->s->sizeof_rel;
+	else if (hdr->sh_type == SHT_RELA)
+	  size = bed->s->sizeof_rela;
+	else
+	  size = bed->s->arch_size / 8;
+	if (hdr->sh_entsize != size)
 	  goto fail;
 
 	/* Check for a bogus link to avoid crashing.  */
@@ -2383,45 +2824,10 @@ bfd_section_from_shdr (bfd *abfd, unsign
 	      /* xgettext:c-format */
 	      (_("%pB: invalid link %u for reloc section %s (index %u)"),
 	       abfd, hdr->sh_link, name, shindex);
-	    ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name,
-						   shindex);
+	    ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
 	    goto success;
 	  }
 
-	/* For some incomprehensible reason Oracle distributes
-	   libraries for Solaris in which some of the objects have
-	   bogus sh_link fields.  It would be nice if we could just
-	   reject them, but, unfortunately, some people need to use
-	   them.  We scan through the section headers; if we find only
-	   one suitable symbol table, we clobber the sh_link to point
-	   to it.  I hope this doesn't break anything.
-
-	   Don't do it on executable nor shared library.  */
-	if ((abfd->flags & (DYNAMIC | EXEC_P)) == 0
-	    && elf_elfsections (abfd)[hdr->sh_link]->sh_type != SHT_SYMTAB
-	    && elf_elfsections (abfd)[hdr->sh_link]->sh_type != SHT_DYNSYM)
-	  {
-	    unsigned int scan;
-	    int found;
-
-	    found = 0;
-	    for (scan = 1; scan < num_sec; scan++)
-	      {
-		if (elf_elfsections (abfd)[scan]->sh_type == SHT_SYMTAB
-		    || elf_elfsections (abfd)[scan]->sh_type == SHT_DYNSYM)
-		  {
-		    if (found != 0)
-		      {
-			found = 0;
-			break;
-		      }
-		    found = scan;
-		  }
-	      }
-	    if (found != 0)
-	      hdr->sh_link = found;
-	  }
-
 	/* Get the symbol table.  */
 	if ((elf_elfsections (abfd)[hdr->sh_link]->sh_type == SHT_SYMTAB
 	     || elf_elfsections (abfd)[hdr->sh_link]->sh_type == SHT_DYNSYM)
@@ -2438,6 +2844,8 @@ bfd_section_from_shdr (bfd *abfd, unsign
 	   its sh_link points to the null section.  */
 	if (((abfd->flags & (DYNAMIC | EXEC_P)) != 0
 	     && (hdr->sh_flags & SHF_ALLOC) != 0)
+	    || (hdr->sh_flags & SHF_COMPRESSED) != 0
+	    || hdr->sh_type == SHT_RELR
 	    || hdr->sh_link == SHN_UNDEF
 	    || hdr->sh_link != elf_onesymtab (abfd)
 	    || hdr->sh_info == SHN_UNDEF
@@ -2445,8 +2853,7 @@ bfd_section_from_shdr (bfd *abfd, unsign
 	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_REL
 	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELA)
 	  {
-	    ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name,
-						   shindex);
+	    ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
 	    goto success;
 	  }
 
@@ -2468,13 +2875,19 @@ 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);
+	      }
+	    else
+	      esdt->has_secondary_relocs = true;
 	    goto success;
 	  }
+
 	hdr2 = (Elf_Internal_Shdr *) bfd_alloc (abfd, sizeof (*hdr2));
 	if (hdr2 == NULL)
 	  goto fail;
@@ -2498,7 +2911,8 @@ found - ignoring all but the first"),
       }
 
     case SHT_GNU_verdef:
-      elf_dynverdef (abfd) = shindex;
+      if (hdr->sh_info != 0)
+	elf_dynverdef (abfd) = shindex;
       elf_tdata (abfd)->dynverdef_hdr = *hdr;
       ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
       goto success;
@@ -2513,7 +2927,8 @@ found - ignoring all but the first"),
       goto success;
 
     case SHT_GNU_verneed:
-      elf_dynverref (abfd) = shindex;
+      if (hdr->sh_info != 0)
+	elf_dynverref (abfd) = shindex;
       elf_tdata (abfd)->dynverref_hdr = *hdr;
       ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
       goto success;
@@ -2522,9 +2937,6 @@ found - ignoring all but the first"),
       goto success;
 
     case SHT_GROUP:
-      if (! IS_VALID_GROUP_SECTION_HEADER (hdr, GRP_ENTRY_SIZE))
-	goto fail;
-
       if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
 	goto fail;
 
@@ -2532,8 +2944,10 @@ found - ignoring all but the first"),
 
     default:
       /* Possibly an attributes section.  */
-      if (hdr->sh_type == SHT_GNU_ATTRIBUTES
-	  || hdr->sh_type == bed->obj_attrs_section_type)
+      if (get_elf_backend_data (abfd)->target_os != is_solaris
+	  /* PR 33153: Solaris defines SHT_SUNW_cap which collides with SHT_GNU_ATTRIBUTES.  */
+	  && (hdr->sh_type == SHT_GNU_ATTRIBUTES
+	      || hdr->sh_type == bed->obj_attrs_section_type))
 	{
 	  if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
 	    goto fail;
@@ -2557,8 +2971,7 @@ found - ignoring all but the first"),
 	  else
 	    {
 	      /* Allow sections reserved for applications.  */
-	      ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name,
-						     shindex);
+	      ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex);
 	      goto success;
 	    }
 	}
@@ -2598,15 +3011,9 @@ found - ignoring all but the first"),
     }
 
  fail:
-  ret = FALSE;
+  ret = false;
  success:
-  if (sections_being_created && sections_being_created_abfd == abfd)
-    sections_being_created [shindex] = FALSE;
-  if (-- nesting == 0)
-    {
-      sections_being_created = NULL;
-      sections_being_created_abfd = abfd;
-    }
+  elf_tdata (abfd)->being_created[shindex] = false;
   return ret;
 }
 
@@ -2693,8 +3100,11 @@ static const struct bfd_elf_special_sect
 static const struct bfd_elf_special_section special_sections_g[] =
 {
   { STRING_COMMA_LEN (".gnu.linkonce.b"), -2, SHT_NOBITS,      SHF_ALLOC + SHF_WRITE },
+  { STRING_COMMA_LEN (".gnu.linkonce.n"), -2, SHT_NOBITS,      SHF_ALLOC + SHF_WRITE },
+  { STRING_COMMA_LEN (".gnu.linkonce.p"), -2, SHT_PROGBITS,    SHF_ALLOC + SHF_WRITE },
   { STRING_COMMA_LEN (".gnu.lto_"),	  -1, SHT_PROGBITS,    SHF_EXCLUDE },
   { STRING_COMMA_LEN (".got"),		   0, SHT_PROGBITS,    SHF_ALLOC + SHF_WRITE },
+  { STRING_COMMA_LEN (".gnu_object_only"), 0, SHT_GNU_OBJECT_ONLY, SHF_EXCLUDE },
   { STRING_COMMA_LEN (".gnu.version"),	   0, SHT_GNU_versym,  0 },
   { STRING_COMMA_LEN (".gnu.version_d"),   0, SHT_GNU_verdef,  0 },
   { STRING_COMMA_LEN (".gnu.version_r"),   0, SHT_GNU_verneed, 0 },
@@ -2726,6 +3136,7 @@ static const struct bfd_elf_special_sect
 
 static const struct bfd_elf_special_section special_sections_n[] =
 {
+  { STRING_COMMA_LEN (".noinit"),	 -2, SHT_NOBITS,   SHF_ALLOC + SHF_WRITE },
   { STRING_COMMA_LEN (".note.GNU-stack"), 0, SHT_PROGBITS, 0 },
   { STRING_COMMA_LEN (".note"),		 -1, SHT_NOTE,	   0 },
   { NULL,		     0,		  0, 0,		   0 }
@@ -2733,6 +3144,8 @@ static const struct bfd_elf_special_sect
 
 static const struct bfd_elf_special_section special_sections_p[] =
 {
+  { STRING_COMMA_LEN (".persistent.bss"), 0, SHT_NOBITS,	SHF_ALLOC + SHF_WRITE },
+  { STRING_COMMA_LEN (".persistent"),	 -2, SHT_PROGBITS,	SHF_ALLOC + SHF_WRITE },
   { STRING_COMMA_LEN (".preinit_array"), -2, SHT_PREINIT_ARRAY, SHF_ALLOC + SHF_WRITE },
   { STRING_COMMA_LEN (".plt"),		  0, SHT_PROGBITS,	SHF_ALLOC + SHF_EXECINSTR },
   { NULL,		    0,		  0, 0,			0 }
@@ -2742,7 +3155,14 @@ static const struct bfd_elf_special_sect
 {
   { STRING_COMMA_LEN (".rodata"), -2, SHT_PROGBITS, SHF_ALLOC },
   { STRING_COMMA_LEN (".rodata1"), 0, SHT_PROGBITS, SHF_ALLOC },
+  { STRING_COMMA_LEN (".relr.dyn"), 0, SHT_RELR, SHF_ALLOC },
   { STRING_COMMA_LEN (".rela"),	  -1, SHT_RELA,	    0 },
+  /* .relro_padding is generated by lld.  It should not be confused with a
+     reloc containing section, because otherwise elf_fake_sections() will
+     set the entsize to 8, which may not be an actual multiple of the
+     section's size.
+     Note - this entry must appear before the ".rel" entry below.  */
+  { STRING_COMMA_LEN (".relro_padding"), 0, SHT_NOBITS, SHF_ALLOC | SHF_WRITE },
   { STRING_COMMA_LEN (".rel"),	  -1, SHT_REL,	    0 },
   { NULL,		    0,	   0, 0,	    0 }
 };
@@ -2889,7 +3309,7 @@ _bfd_elf_get_sec_type_attr (bfd *abfd, a
   return _bfd_elf_get_special_section (sec->name, spec, sec->use_rela_p);
 }
 
-bfd_boolean
+bool
 _bfd_elf_new_section_hook (bfd *abfd, asection *sec)
 {
   struct bfd_elf_section_data *sdata;
@@ -2902,7 +3322,7 @@ _bfd_elf_new_section_hook (bfd *abfd, as
       sdata = (struct bfd_elf_section_data *) bfd_zalloc (abfd,
 							  sizeof (*sdata));
       if (sdata == NULL)
-	return FALSE;
+	return false;
       sec->used_by_bfd = sdata;
     }
 
@@ -2910,28 +3330,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);
@@ -2955,11 +3360,9 @@ _bfd_elf_new_section_hook (bfd *abfd, as
    for the single program segment.  The first has the length specified by
    the file size of the segment, and the second has the length specified
    by the difference between the two sizes.  In effect, the segment is split
-   into its initialized and uninitialized parts.
+   into its initialized and uninitialized parts.  */
 
- */
-
-bfd_boolean
+bool
 _bfd_elf_make_section_from_phdr (bfd *abfd,
 				 Elf_Internal_Phdr *hdr,
 				 int hdr_index,
@@ -2970,6 +3373,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)
@@ -2981,13 +3385,13 @@ _bfd_elf_make_section_from_phdr (bfd *ab
       len = strlen (namebuf) + 1;
       name = (char *) bfd_alloc (abfd, len);
       if (!name)
-	return FALSE;
+	return false;
       memcpy (name, namebuf, len);
       newsect = bfd_make_section (abfd, name);
       if (newsect == NULL)
-	return FALSE;
-      newsect->vma = hdr->p_vaddr;
-      newsect->lma = hdr->p_paddr;
+	return false;
+      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;
@@ -3017,13 +3421,13 @@ _bfd_elf_make_section_from_phdr (bfd *ab
       len = strlen (namebuf) + 1;
       name = (char *) bfd_alloc (abfd, len);
       if (!name)
-	return FALSE;
+	return false;
       memcpy (name, namebuf, len);
       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;
+	return false;
+      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 +3436,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;
@@ -3048,20 +3444,20 @@ _bfd_elf_make_section_from_phdr (bfd *ab
 	newsect->flags |= SEC_READONLY;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 _bfd_elf_core_find_build_id (bfd *templ, bfd_vma offset)
 {
   /* The return value is ignored.  Build-ids are considered optional.  */
   if (templ->xvec->flavour == bfd_target_elf_flavour)
     return (*get_elf_backend_data (templ)->elf_backend_core_find_build_id)
       (templ, offset);
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int hdr_index)
 {
   const struct elf_backend_data *bed;
@@ -3073,10 +3469,10 @@ bfd_section_from_phdr (bfd *abfd, Elf_In
 
     case PT_LOAD:
       if (! _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "load"))
-	return FALSE;
+	return false;
       if (bfd_get_format (abfd) == bfd_core && abfd->build_id == NULL)
 	_bfd_elf_core_find_build_id (abfd, hdr->p_offset);
-      return TRUE;
+      return true;
 
     case PT_DYNAMIC:
       return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "dynamic");
@@ -3086,11 +3482,11 @@ bfd_section_from_phdr (bfd *abfd, Elf_In
 
     case PT_NOTE:
       if (! _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "note"))
-	return FALSE;
+	return false;
       if (! elf_read_notes (abfd, hdr->p_offset, hdr->p_filesz,
 			    hdr->p_align))
-	return FALSE;
-      return TRUE;
+	return false;
+      return true;
 
     case PT_SHLIB:
       return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "shlib");
@@ -3108,6 +3504,10 @@ bfd_section_from_phdr (bfd *abfd, Elf_In
     case PT_GNU_RELRO:
       return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index, "relro");
 
+    case PT_GNU_SFRAME:
+      return _bfd_elf_make_section_from_phdr (abfd, hdr, hdr_index,
+					      "sframe");
+
     default:
       /* Check for any processor-specific program segment types.  */
       bed = get_elf_backend_data (abfd);
@@ -3130,25 +3530,25 @@ _bfd_elf_single_rel_hdr (asection *sec)
     return elf_section_data (sec)->rela.hdr;
 }
 
-static bfd_boolean
+static bool
 _bfd_elf_set_reloc_sh_name (bfd *abfd,
 			    Elf_Internal_Shdr *rel_hdr,
 			    const char *sec_name,
-			    bfd_boolean use_rela_p)
+			    bool use_rela_p)
 {
   char *name = (char *) bfd_alloc (abfd,
 				   sizeof ".rela" + strlen (sec_name));
   if (name == NULL)
-    return FALSE;
+    return false;
 
   sprintf (name, "%s%s", use_rela_p ? ".rela" : ".rel", sec_name);
   rel_hdr->sh_name =
     (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd), name,
-					FALSE);
+					false);
   if (rel_hdr->sh_name == (unsigned int) -1)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate and initialize a section-header for a new reloc section,
@@ -3156,25 +3556,27 @@ _bfd_elf_set_reloc_sh_name (bfd *abfd,
    USE_RELA_P is TRUE, we use RELA relocations; otherwise, we use REL
    relocations.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_init_reloc_shdr (bfd *abfd,
 			  struct bfd_elf_section_reloc_data *reldata,
 			  const char *sec_name,
-			  bfd_boolean use_rela_p,
-			  bfd_boolean delay_st_name_p)
+			  bool use_rela_p,
+			  bool delay_sh_name_p)
 {
   Elf_Internal_Shdr *rel_hdr;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   BFD_ASSERT (reldata->hdr == NULL);
   rel_hdr = bfd_zalloc (abfd, sizeof (*rel_hdr));
+  if (rel_hdr == NULL)
+    return false;
   reldata->hdr = rel_hdr;
 
-  if (delay_st_name_p)
+  if (delay_sh_name_p)
     rel_hdr->sh_name = (unsigned int) -1;
   else if (!_bfd_elf_set_reloc_sh_name (abfd, rel_hdr, sec_name,
 					use_rela_p))
-    return FALSE;
+    return false;
   rel_hdr->sh_type = use_rela_p ? SHT_RELA : SHT_REL;
   rel_hdr->sh_entsize = (use_rela_p
 			 ? bed->s->sizeof_rela
@@ -3185,7 +3587,7 @@ _bfd_elf_init_reloc_shdr (bfd *abfd,
   rel_hdr->sh_size = 0;
   rel_hdr->sh_offset = 0;
 
-  return TRUE;
+  return true;
 }
 
 /* Return the default section type based on the passed in section flags.  */
@@ -3202,7 +3604,7 @@ bfd_elf_get_default_section_type (flagwo
 struct fake_section_arg
 {
   struct bfd_link_info *link_info;
-  bfd_boolean failed;
+  bool failed;
 };
 
 /* Set up an ELF internal section header for a section.  */
@@ -3216,7 +3618,8 @@ elf_fake_sections (bfd *abfd, asection *
   Elf_Internal_Shdr *this_hdr;
   unsigned int sh_type;
   const char *name = asect->name;
-  bfd_boolean delay_st_name_p = FALSE;
+  bool delay_sh_name_p = false;
+  bfd_vma mask;
 
   if (arg->failed)
     {
@@ -3227,70 +3630,31 @@ elf_fake_sections (bfd *abfd, asection *
 
   this_hdr = &esd->this_hdr;
 
-  if (arg->link_info)
-    {
-      /* ld: compress DWARF debug sections with names: .debug_*.  */
-      if ((arg->link_info->compress_debug & COMPRESS_DEBUG)
-	  && (asect->flags & SEC_DEBUGGING)
-	  && name[1] == 'd'
-	  && name[6] == '_')
-	{
-	  /* 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.  */
-	  delay_st_name_p = TRUE;
-	}
-    }
-  else if ((asect->flags & SEC_ELF_RENAME))
-    {
-      /* objcopy: rename output DWARF debug section.  */
-      if ((abfd->flags & (BFD_DECOMPRESS | BFD_COMPRESS_GABI)))
-	{
-	  /* When we decompress or compress with SHF_COMPRESSED,
-	     convert section name from .zdebug_* to .debug_* if
-	     needed.  */
-	  if (name[1] == 'z')
-	    {
-	      char *new_name = convert_zdebug_to_debug (abfd, name);
-	      if (new_name == NULL)
-		{
-		  arg->failed = TRUE;
-		  return;
-		}
-	      name = new_name;
-	    }
-	}
-      else if (asect->compress_status == COMPRESS_SECTION_DONE)
-	{
-	  /* PR binutils/18087: Compression does not always make a
-	     section smaller.  So only rename the section when
-	     compression has actually taken place.  If input section
-	     name is .zdebug_*, we should never compress it again.  */
-	  char *new_name = convert_debug_to_zdebug (abfd, name);
-	  if (new_name == NULL)
-	    {
-	      arg->failed = TRUE;
-	      return;
-	    }
-	  BFD_ASSERT (name[1] != 'z');
-	  name = new_name;
-	}
+  /* ld: compress DWARF debug sections with names: .debug_*.  */
+  if (arg->link_info
+      && (abfd->flags & BFD_COMPRESS) != 0
+      && (asect->flags & SEC_DEBUGGING) != 0
+      && (asect->flags & SEC_ALLOC) == 0
+      && (asect->flags & SEC_HAS_CONTENTS) != 0
+      && name[1] == 'd'
+      && name[6] == '_')
+    {
+      /* 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.  */
+      delay_sh_name_p = true;
     }
 
-  if (delay_st_name_p)
+  if (delay_sh_name_p)
     this_hdr->sh_name = (unsigned int) -1;
   else
     {
       this_hdr->sh_name
 	= (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd),
-					      name, FALSE);
+					      name, false);
       if (this_hdr->sh_name == (unsigned int) -1)
 	{
-	  arg->failed = TRUE;
+	  arg->failed = true;
 	  return;
 	}
     }
@@ -3299,7 +3663,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;
 
@@ -3313,10 +3677,13 @@ elf_fake_sections (bfd *abfd, asection *
 	/* xgettext:c-format */
 	(_("%pB: error: alignment power %d of section `%pA' is too big"),
 	 abfd, asect->alignment_power, asect);
-      arg->failed = TRUE;
+      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.  */
 
@@ -3325,7 +3692,9 @@ elf_fake_sections (bfd *abfd, asection *
 
   /* If the section type is unspecified, we set it based on
      asect->flags.  */
-  if ((asect->flags & SEC_GROUP) != 0)
+  if (asect->type != 0)
+    sh_type = asect->type;
+  else if ((asect->flags & SEC_GROUP) != 0)
     sh_type = SHT_GROUP;
   else
     sh_type = bfd_elf_get_default_section_type (asect->flags);
@@ -3433,7 +3802,10 @@ elf_fake_sections (bfd *abfd, asection *
       this_hdr->sh_entsize = asect->entsize;
     }
   if ((asect->flags & SEC_STRINGS) != 0)
-    this_hdr->sh_flags |= SHF_STRINGS;
+    {
+      this_hdr->sh_flags |= SHF_STRINGS;
+      this_hdr->sh_entsize = asect->entsize;
+    }
   if ((asect->flags & SEC_GROUP) == 0 && elf_group_name (asect) != NULL)
     this_hdr->sh_flags |= SHF_GROUP;
   if ((asect->flags & SEC_THREAD_LOCAL) != 0)
@@ -3456,6 +3828,9 @@ elf_fake_sections (bfd *abfd, asection *
   if ((asect->flags & (SEC_GROUP | SEC_EXCLUDE)) == SEC_EXCLUDE)
     this_hdr->sh_flags |= SHF_EXCLUDE;
 
+  if (this_hdr->sh_entsize == 0)
+    this_hdr->sh_entsize = asect->entsize;
+
   /* If the section has relocs, set up a section header for the
      SHT_REL[A] section.  If two relocation sections are required for
      this section, it is up to the processor-specific back-end to
@@ -3472,16 +3847,16 @@ elf_fake_sections (bfd *abfd, asection *
 	{
 	  if (esd->rel.count && esd->rel.hdr == NULL
 	      && !_bfd_elf_init_reloc_shdr (abfd, &esd->rel, name,
-					    FALSE, delay_st_name_p))
+					    false, delay_sh_name_p))
 	    {
-	      arg->failed = TRUE;
+	      arg->failed = true;
 	      return;
 	    }
 	  if (esd->rela.count && esd->rela.hdr == NULL
 	      && !_bfd_elf_init_reloc_shdr (abfd, &esd->rela, name,
-					    TRUE, delay_st_name_p))
+					    true, delay_sh_name_p))
 	    {
-	      arg->failed = TRUE;
+	      arg->failed = true;
 	      return;
 	    }
 	}
@@ -3490,9 +3865,9 @@ elf_fake_sections (bfd *abfd, asection *
 					   ? &esd->rela : &esd->rel),
 					  name,
 					  asect->use_rela_p,
-					  delay_st_name_p))
+					  delay_sh_name_p))
 	{
-	  arg->failed = TRUE;
+	  arg->failed = true;
 	  return;
 	}
     }
@@ -3502,7 +3877,7 @@ elf_fake_sections (bfd *abfd, asection *
   if (bed->elf_backend_fake_sections
       && !(*bed->elf_backend_fake_sections) (abfd, this_hdr, asect))
     {
-      arg->failed = TRUE;
+      arg->failed = true;
       return;
     }
 
@@ -3522,10 +3897,10 @@ elf_fake_sections (bfd *abfd, asection *
 void
 bfd_elf_set_group_contents (bfd *abfd, asection *sec, void *failedptrarg)
 {
-  bfd_boolean *failedptr = (bfd_boolean *) failedptrarg;
+  bool *failedptr = (bool *) failedptrarg;
   asection *elt, *first;
   unsigned char *loc;
-  bfd_boolean gas;
+  bool gas;
 
   /* Ignore linker created group section.  See elfNN_ia64_object_p in
      elfxx-ia64.c.  */
@@ -3546,8 +3921,14 @@ 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 (sec->index >= elf_num_section_syms (abfd)
+	      || elf_section_syms (abfd)[sec->index] == NULL)
+	    {
+	      *failedptr = true;
+	      return;
+	    }
 	  symindx = elf_section_syms (abfd)[sec->index]->udata.i;
 	}
       elf_section_data (sec)->this_hdr.sh_info = symindx;
@@ -3586,19 +3967,20 @@ bfd_elf_set_group_contents (bfd *abfd, a
     }
 
   /* The contents won't be allocated for "ld -r" or objcopy.  */
-  gas = TRUE;
+  gas = true;
   if (sec->contents == NULL)
     {
-      gas = FALSE;
+      gas = false;
       sec->contents = (unsigned char *) bfd_alloc (abfd, sec->size);
 
       /* Arrange for the section to be written out.  */
       elf_section_data (sec)->this_hdr.contents = sec->contents;
       if (sec->contents == NULL)
 	{
-	  *failedptr = TRUE;
+	  *failedptr = true;
 	  return;
 	}
+      sec->alloced = 1;
     }
 
   loc = sec->contents + sec->size;
@@ -3632,6 +4014,8 @@ bfd_elf_set_group_contents (bfd *abfd, a
 	    {
 	      elf_sec->rel.hdr->sh_flags |= SHF_GROUP;
 	      loc -= 4;
+	      if (loc == sec->contents)
+		break;
 	      H_PUT_32 (abfd, elf_sec->rel.idx, loc);
 	    }
 	  if (elf_sec->rela.hdr != NULL
@@ -3641,9 +4025,13 @@ bfd_elf_set_group_contents (bfd *abfd, a
 	    {
 	      elf_sec->rela.hdr->sh_flags |= SHF_GROUP;
 	      loc -= 4;
+	      if (loc == sec->contents)
+		break;
 	      H_PUT_32 (abfd, elf_sec->rela.idx, loc);
 	    }
 	  loc -= 4;
+	  if (loc == sec->contents)
+	    break;
 	  H_PUT_32 (abfd, elf_sec->this_idx, loc);
 	}
       elt = elf_next_in_group (elt);
@@ -3651,8 +4039,18 @@ bfd_elf_set_group_contents (bfd *abfd, a
 	break;
     }
 
+  /* We should always get here with loc == sec->contents + 4.  Return
+     an error for bogus SHT_GROUP sections.  */
   loc -= 4;
-  BFD_ASSERT (loc == sec->contents);
+  if (loc != sec->contents)
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: corrupted group section: `%pA'"),
+			  abfd, sec);
+      bfd_set_error (bfd_error_bad_value);
+      *failedptr = true;
+      return;
+    }
 
   H_PUT_32 (abfd, sec->flags & SEC_LINK_ONCE ? GRP_COMDAT : 0, loc);
 }
@@ -3667,7 +4065,7 @@ _bfd_elf_plt_get_reloc_section (bfd *abf
   /* If a target needs .got.plt section, relocations in rela.plt/rel.plt
      section likely apply to .got.plt or .got section.  */
   if (get_elf_backend_data (abfd)->want_got_plt
-      && strcmp (name, ".plt") == 0)
+      && streq (name, ".plt"))
     {
       asection *sec;
 
@@ -3697,7 +4095,7 @@ elf_get_reloc_section (asection *reloc_s
 
   /* We look up the section the relocs apply to by name.  */
   name = reloc_sec->name;
-  if (strncmp (name, ".rel", 4) != 0)
+  if (!startswith (name, ".rel"))
     return NULL;
   name += 4;
   if (type == SHT_RELA && *name++ != 'a')
@@ -3710,9 +4108,10 @@ 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 gas, objcopy, and when using the generic ELF linker.  */
 
-static bfd_boolean
+static bool
 assign_section_numbers (bfd *abfd, struct bfd_link_info *link_info)
 {
   struct elf_obj_tdata *t = elf_tdata (abfd);
@@ -3720,7 +4119,8 @@ assign_section_numbers (bfd *abfd, struc
   unsigned int section_number;
   Elf_Internal_Shdr **i_shdrp;
   struct bfd_elf_section_data *d;
-  bfd_boolean need_symtab;
+  bool need_symtab;
+  size_t amt;
 
   section_number = 1;
 
@@ -3752,9 +4152,11 @@ assign_section_numbers (bfd *abfd, struc
 	  reloc_count += sec->reloc_count;
 	}
 
-      /* Clear HAS_RELOC if there are no relocations.  */
+      /* Set/clear HAS_RELOC depending on whether there are relocations.  */
       if (reloc_count == 0)
 	abfd->flags &= ~HAS_RELOC;
+      else
+	abfd->flags |= HAS_RELOC;
     }
 
   for (sec = abfd->sections; sec; sec = sec->next)
@@ -3785,9 +4187,9 @@ assign_section_numbers (bfd *abfd, struc
     }
 
   need_symtab = (bfd_get_symcount (abfd) > 0
-		|| (link_info == NULL
-		    && ((abfd->flags & (EXEC_P | DYNAMIC | HAS_RELOC))
-			== HAS_RELOC)));
+		 || (link_info == NULL
+		     && ((abfd->flags & (EXEC_P | DYNAMIC | HAS_RELOC))
+			 == HAS_RELOC)));
   if (need_symtab)
     {
       elf_onesymtab (abfd) = section_number++;
@@ -3803,9 +4205,9 @@ assign_section_numbers (bfd *abfd, struc
 	  elf_symtab_shndx_list (abfd) = entry;
 	  entry->hdr.sh_name
 	    = (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd),
-						  ".symtab_shndx", FALSE);
+						  ".symtab_shndx", false);
 	  if (entry->hdr.sh_name == (unsigned int) -1)
-	    return FALSE;
+	    return false;
 	}
       elf_strtab_sec (abfd) = section_number++;
       _bfd_elf_strtab_addref (elf_shstrtab (abfd), t->strtab_hdr.sh_name);
@@ -3820,7 +4222,7 @@ assign_section_numbers (bfd *abfd, struc
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: too many sections: %u"),
 			  abfd, section_number);
-      return FALSE;
+      return false;
     }
 
   elf_numsections (abfd) = section_number;
@@ -3828,17 +4230,17 @@ 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;
+    return false;
 
   i_shdrp[0] = (Elf_Internal_Shdr *) bfd_zalloc (abfd,
 						 sizeof (Elf_Internal_Shdr));
   if (i_shdrp[0] == NULL)
     {
       bfd_release (abfd, i_shdrp);
-      return FALSE;
+      return false;
     }
 
   elf_elfsections (abfd) = i_shdrp;
@@ -3892,82 +4294,68 @@ assign_section_numbers (bfd *abfd, struc
       if ((d->this_hdr.sh_flags & SHF_LINK_ORDER) != 0)
 	{
 	  s = elf_linked_to_section (sec);
+	  /* We can now have a NULL linked section pointer.
+	     This happens when the sh_link field is 0, which is done
+	     when a linked to section is discarded but the linking
+	     section has been retained for some reason.  */
 	  if (s)
 	    {
-	      /* elf_linked_to_section points to the input section.  */
-	      if (link_info != NULL)
+	      /* Check discarded linkonce section.  */
+	      if (discarded_section (s))
 		{
-		  /* 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)
 		    {
-		      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;
+		      bfd_set_error (bfd_error_bad_value);
+		      return false;
 		    }
-
-		  s = s->output_section;
-		  BFD_ASSERT (s != NULL);
+		  s = kept;
 		}
-	      else
+	      /* Handle objcopy. */
+	      else if (s->output_section == NULL)
 		{
-		  /* Handle objcopy. */
-		  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;
+		  _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
-	    {
-	      /* PR 290:
-		 The Intel C compiler generates SHT_IA_64_UNWIND with
-		 SHF_LINK_ORDER.  But it doesn't set the sh_link or
-		 sh_info fields.  Hence we could get the situation
-		 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);
-	    }
 	}
 
       switch (d->this_hdr.sh_type)
 	{
 	case SHT_REL:
 	case SHT_RELA:
-	  /* A reloc section which we are treating as a normal BFD
-	     section.  sh_link is the section index of the symbol
-	     table.  sh_info is the section index of the section to
-	     which the relocation entries apply.  We assume that an
-	     allocated reloc section uses the dynamic symbol table.
-	     FIXME: How can we be sure?  */
-	  s = bfd_get_section_by_name (abfd, ".dynsym");
-	  if (s != NULL)
-	    d->this_hdr.sh_link = elf_section_data (s)->this_idx;
+	  /* sh_link is the section index of the symbol table.
+	     sh_info is the section index of the section to which the
+	     relocation entries apply.  */
+	  if (d->this_hdr.sh_link == 0)
+	    {
+	      /* FIXME maybe: If this is a reloc section which we are
+		 treating as a normal section then we likely should
+		 not be assuming its sh_link is .dynsym or .symtab.  */
+	      if ((sec->flags & SEC_ALLOC) != 0)
+		{
+		  s = bfd_get_section_by_name (abfd, ".dynsym");
+		  if (s != NULL)
+		    d->this_hdr.sh_link = elf_section_data (s)->this_idx;
+		}
+	      else
+		d->this_hdr.sh_link = elf_onesymtab (abfd);
+	    }
 
 	  s = elf_get_reloc_section (sec);
 	  if (s != NULL)
@@ -3982,8 +4370,8 @@ assign_section_numbers (bfd *abfd, struc
 	     string section.  We look for a section with the same name
 	     but without the trailing ``str'', and set its sh_link
 	     field to point to this section.  */
-	  if (CONST_STRNEQ (sec->name, ".stab")
-	      && strcmp (sec->name + strlen (sec->name) - 3, "str") == 0)
+	  if (startswith (sec->name, ".stab")
+	      && streq (sec->name + strlen (sec->name) - 3, "str"))
 	    {
 	      size_t len;
 	      char *alc;
@@ -3991,7 +4379,7 @@ assign_section_numbers (bfd *abfd, struc
 	      len = strlen (sec->name);
 	      alc = (char *) bfd_malloc (len - 2);
 	      if (alc == NULL)
-		return FALSE;
+		return false;
 	      memcpy (alc, sec->name, len - 3);
 	      alc[len - 3] = '\0';
 	      s = bfd_get_section_by_name (abfd, alc);
@@ -4001,9 +4389,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;
@@ -4024,8 +4410,8 @@ assign_section_numbers (bfd *abfd, struc
 	  /* sh_link is the section header index of the prelink library
 	     list used for the dynamic entries, or the symbol table, or
 	     the version strings.  */
-	  s = bfd_get_section_by_name (abfd, (sec->flags & SEC_ALLOC)
-					     ? ".dynstr" : ".gnu.libstr");
+	  s = bfd_get_section_by_name (abfd, ((sec->flags & SEC_ALLOC)
+					      ? ".dynstr" : ".gnu.libstr"));
 	  if (s != NULL)
 	    d->this_hdr.sh_link = elf_section_data (s)->this_idx;
 	  break;
@@ -4049,10 +4435,10 @@ assign_section_numbers (bfd *abfd, struc
      _bfd_elf_assign_file_positions_for_non_load can convert DWARF
      debug section name from .debug_* to .zdebug_* if needed.  */
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 sym_is_global (bfd *abfd, asymbol *sym)
 {
   /* If the backend has a special mapping, use it.  */
@@ -4087,7 +4473,7 @@ _bfd_elf_filter_global_symbols (bfd *abf
       if (!sym_is_global (abfd, sym))
 	continue;
 
-      h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, FALSE);
+      h = bfd_link_hash_lookup (info->hash, name, false, false, false);
       if (h == NULL)
 	continue;
       if (h->type != bfd_link_hash_defined && h->type != bfd_link_hash_defweak)
@@ -4103,38 +4489,38 @@ _bfd_elf_filter_global_symbols (bfd *abf
   return dst_count;
 }
 
-/* Don't output section symbols for sections that are not going to be
-   output, that are duplicates or there is no BFD section.  */
+/* Don't output symbols for sections that are not going to be output,
+   that are duplicates or there is no BFD section.  */
 
-static bfd_boolean
-ignore_section_sym (bfd *abfd, asymbol *sym)
+static bool
+ignore_sym (asymbol *sym)
 {
-  elf_symbol_type *type_ptr;
-
   if (sym == NULL)
-    return FALSE;
-
-  if ((sym->flags & BSF_SECTION_SYM) == 0)
-    return FALSE;
+    return false;
 
   if (sym->section == NULL)
-    return TRUE;
+    return true;
 
-  type_ptr = elf_symbol_from (abfd, sym);
-  return ((type_ptr != NULL
-	   && type_ptr->internal_elf_sym.st_shndx != 0
-	   && bfd_is_abs_section (sym->section))
-	  || !(sym->section->owner == abfd
-	       || (sym->section->output_section != NULL
-		   && sym->section->output_section->owner == abfd
-		   && sym->section->output_offset == 0)
-	       || bfd_is_abs_section (sym->section)));
+  if ((sym->flags & BSF_SECTION_SYM) != 0)
+    {
+      if ((sym->flags & BSF_SECTION_SYM_USED) == 0)
+	return true;
+      /* With ld -r on generic elf targets it is possible to have
+	 multiple section symbols in the output for a given section.
+	 We'd like to get rid of all but the first one.  This drops
+	 them if the first input section is non-zero size, but fails
+	 to do so if the first input section is zero sized.  */
+      if (sym->section->output_offset != 0)
+	return true;
+    }
+
+  return discarded_section (sym->section);
 }
 
 /* Map symbol from it's internal number to the external number, moving
    all local symbols to be at the head of the list.  */
 
-static bfd_boolean
+static bool
 elf_map_symbols (bfd *abfd, unsigned int *pnum_locals)
 {
   unsigned int symcount = bfd_get_symcount (abfd);
@@ -4142,12 +4528,11 @@ elf_map_symbols (bfd *abfd, unsigned int
   asymbol **sect_syms;
   unsigned int num_locals = 0;
   unsigned int num_globals = 0;
-  unsigned int num_locals2 = 0;
-  unsigned int num_globals2 = 0;
   unsigned int max_index = 0;
   unsigned int idx;
   asection *asect;
   asymbol **new_syms;
+  size_t amt;
 
 #ifdef DEBUG
   fprintf (stderr, "elf_map_symbols\n");
@@ -4161,9 +4546,10 @@ 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;
+    return false;
   elf_section_syms (abfd) = sect_syms;
   elf_num_section_syms (abfd) = max_index;
 
@@ -4175,13 +4561,17 @@ elf_map_symbols (bfd *abfd, unsigned int
 
       if ((sym->flags & BSF_SECTION_SYM) != 0
 	  && sym->value == 0
-	  && !ignore_section_sym (abfd, sym)
+	  && !ignore_sym (sym)
 	  && !bfd_is_abs_section (sym->section))
 	{
 	  asection *sec = sym->section;
 
 	  if (sec->owner != abfd)
-	    sec = sec->output_section;
+	    {
+	      sec = sec->output_section;
+	      if (sec == NULL)
+		return false;
+	    }
 
 	  sect_syms[sec->index] = syms[idx];
 	}
@@ -4190,9 +4580,11 @@ elf_map_symbols (bfd *abfd, unsigned int
   /* Classify all of the symbols.  */
   for (idx = 0; idx < symcount; idx++)
     {
+      if (ignore_sym (syms[idx]))
+	continue;
       if (sym_is_global (abfd, syms[idx]))
 	num_globals++;
-      else if (!ignore_section_sym (abfd, syms[idx]))
+      else
 	num_locals++;
     }
 
@@ -4202,48 +4594,54 @@ elf_map_symbols (bfd *abfd, unsigned int
      at least in that case.  */
   for (asect = abfd->sections; asect; asect = asect->next)
     {
-      if (sect_syms[asect->index] == NULL)
+      asymbol *sym = asect->symbol;
+      /* Don't include ignored section symbols.  */
+      if (!ignore_sym (sym)
+	  && sect_syms[asect->index] == NULL)
 	{
-	  if (!sym_is_global (abfd, asect->symbol))
-	    num_locals++;
-	  else
+	  if (sym_is_global (abfd, asect->symbol))
 	    num_globals++;
+	  else
+	    num_locals++;
 	}
     }
 
   /* 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;
+    return false;
 
+  unsigned int num_globals2 = 0;
+  unsigned int num_locals2 = 0;
   for (idx = 0; idx < symcount; idx++)
     {
       asymbol *sym = syms[idx];
       unsigned int i;
 
+      if (ignore_sym (sym))
+	continue;
+
       if (sym_is_global (abfd, sym))
 	i = num_locals + num_globals2++;
-      else if (!ignore_section_sym (abfd, sym))
-	i = num_locals2++;
       else
-	continue;
+	i = num_locals2++;
       new_syms[i] = sym;
       sym->udata.i = i + 1;
     }
   for (asect = abfd->sections; asect; asect = asect->next)
     {
-      if (sect_syms[asect->index] == NULL)
+      asymbol *sym = asect->symbol;
+      if (!ignore_sym (sym)
+	  && sect_syms[asect->index] == NULL)
 	{
-	  asymbol *sym = asect->symbol;
 	  unsigned int i;
 
 	  sect_syms[asect->index] = sym;
-	  if (!sym_is_global (abfd, sym))
-	    i = num_locals2++;
-	  else
+	  if (sym_is_global (abfd, sym))
 	    i = num_locals + num_globals2++;
+	  else
+	    i = num_locals2++;
 	  new_syms[i] = sym;
 	  sym->udata.i = i + 1;
 	}
@@ -4252,16 +4650,7 @@ elf_map_symbols (bfd *abfd, unsigned int
   bfd_set_symtab (abfd, new_syms, num_locals + num_globals);
 
   *pnum_locals = num_locals;
-  return TRUE;
-}
-
-/* Align to the maximum file alignment that could be required for any
-   ELF data structure.  */
-
-static inline file_ptr
-align_file_position (file_ptr off, int align)
-{
-  return (off + align - 1) & ~(align - 1);
+  return true;
 }
 
 /* Assign a file position to a section, optionally aligning to the
@@ -4270,10 +4659,23 @@ align_file_position (file_ptr off, int a
 file_ptr
 _bfd_elf_assign_file_position_for_section (Elf_Internal_Shdr *i_shdrp,
 					   file_ptr offset,
-					   bfd_boolean align)
+					   bool align,
+					   unsigned char log_file_align)
 {
-  if (align && i_shdrp->sh_addralign > 1)
-    offset = BFD_ALIGN (offset, i_shdrp->sh_addralign);
+  if (i_shdrp->sh_addralign > 1)
+    {
+      file_ptr salign = i_shdrp->sh_addralign & -i_shdrp->sh_addralign;
+
+      if (align)
+	offset = BFD_ALIGN (offset, salign);
+      else if (log_file_align)
+	{
+	  /* Heuristic: Cap alignment at log_file_align.  */
+	  file_ptr falign = 1u << log_file_align;
+
+	  offset = BFD_ALIGN (offset, salign < falign ? salign : falign);
+	}
+    }
   i_shdrp->sh_offset = offset;
   if (i_shdrp->bfd_section != NULL)
     i_shdrp->bfd_section->filepos = offset;
@@ -4286,35 +4688,35 @@ _bfd_elf_assign_file_position_for_sectio
    otherwise prepare to begin writing out the ELF file.  If LINK_INFO
    is not NULL, this is being called by the ELF backend linker.  */
 
-bfd_boolean
+bool
 _bfd_elf_compute_section_file_positions (bfd *abfd,
 					 struct bfd_link_info *link_info)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
   struct fake_section_arg fsargs;
-  bfd_boolean failed;
+  bool failed;
   struct elf_strtab_hash *strtab = NULL;
   Elf_Internal_Shdr *shstrtab_hdr;
-  bfd_boolean need_symtab;
+  bool need_symtab;
 
   if (abfd->output_has_begun)
-    return TRUE;
+    return true;
 
   /* Do any elf backend specific processing first.  */
   if (bed->elf_backend_begin_write_processing)
     (*bed->elf_backend_begin_write_processing) (abfd, link_info);
 
   if (!(*bed->elf_backend_init_file_header) (abfd, link_info))
-    return FALSE;
+    return false;
 
-  fsargs.failed = FALSE;
+  fsargs.failed = false;
   fsargs.link_info = link_info;
   bfd_map_over_sections (abfd, elf_fake_sections, &fsargs);
   if (fsargs.failed)
-    return FALSE;
+    return false;
 
   if (!assign_section_numbers (abfd, link_info))
-    return FALSE;
+    return false;
 
   /* The backend linker builds symbol table information itself.  */
   need_symtab = (link_info == NULL
@@ -4326,16 +4728,16 @@ _bfd_elf_compute_section_file_positions
       /* Non-zero if doing a relocatable link.  */
       int relocatable_p = ! (abfd->flags & (EXEC_P | DYNAMIC));
 
-      if (! swap_out_syms (abfd, &strtab, relocatable_p))
-	return FALSE;
+      if (! swap_out_syms (abfd, &strtab, relocatable_p, link_info))
+	return false;
     }
 
-  failed = FALSE;
+  failed = false;
   if (link_info == NULL)
     {
       bfd_map_over_sections (abfd, bfd_elf_set_group_contents, &failed);
       if (failed)
-	return FALSE;
+	goto err_free_strtab;
     }
 
   shstrtab_hdr = &elf_tdata (abfd)->shstrtab_hdr;
@@ -4351,9 +4753,9 @@ _bfd_elf_compute_section_file_positions
   shstrtab_hdr->sh_addralign = 1;
 
   if (!assign_file_positions_except_relocs (abfd, link_info))
-    return FALSE;
+    goto err_free_strtab;
 
-  if (need_symtab)
+  if (strtab != NULL)
     {
       file_ptr off;
       Elf_Internal_Shdr *hdr;
@@ -4361,18 +4763,18 @@ _bfd_elf_compute_section_file_positions
       off = elf_next_file_pos (abfd);
 
       hdr = & elf_symtab_hdr (abfd);
-      off = _bfd_elf_assign_file_position_for_section (hdr, off, TRUE);
+      off = _bfd_elf_assign_file_position_for_section (hdr, off, true, 0);
 
       if (elf_symtab_shndx_list (abfd) != NULL)
 	{
 	  hdr = & elf_symtab_shndx_list (abfd)->hdr;
 	  if (hdr->sh_size != 0)
-	    off = _bfd_elf_assign_file_position_for_section (hdr, off, TRUE);
+	    off = _bfd_elf_assign_file_position_for_section (hdr, off, true, 0);
 	  /* FIXME: What about other symtab_shndx sections in the list ?  */
 	}
 
       hdr = &elf_tdata (abfd)->strtab_hdr;
-      off = _bfd_elf_assign_file_position_for_section (hdr, off, TRUE);
+      off = _bfd_elf_assign_file_position_for_section (hdr, off, true, 0);
 
       elf_next_file_pos (abfd) = off;
 
@@ -4380,13 +4782,31 @@ _bfd_elf_compute_section_file_positions
 	 out.  */
       if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0
 	  || ! _bfd_elf_strtab_emit (abfd, strtab))
-	return FALSE;
+	goto err_free_strtab;
       _bfd_elf_strtab_free (strtab);
     }
 
-  abfd->output_has_begun = TRUE;
+  abfd->output_has_begun = true;
+  return true;
 
-  return TRUE;
+ err_free_strtab:
+  if (strtab != NULL)
+    _bfd_elf_strtab_free (strtab);
+  return false;
+}
+
+/* Retrieve .eh_frame_hdr.  Prior to size_dynamic_sections the
+   function effectively returns whether --eh-frame-hdr is given on the
+   command line.  After size_dynamic_sections the result reflects
+   whether .eh_frame_hdr will actually be output (sizing isn't done
+   until ldemul_after_allocation).  */
+
+static asection *
+elf_eh_frame_hdr (const struct bfd_link_info *info)
+{
+  if (info != NULL && is_elf_hash_table (info->hash))
+    return elf_hash_table (info)->eh_info.hdr_sec;
+  return NULL;
 }
 
 /* Make an initial estimate of the size of the program header.  If we
@@ -4425,7 +4845,7 @@ get_program_header_size (bfd *abfd, stru
       ++segs;
     }
 
-  if (elf_eh_frame_hdr (abfd))
+  if (elf_eh_frame_hdr (info))
     {
       /* We need a PT_GNU_EH_FRAME segment.  */
       ++segs;
@@ -4437,6 +4857,12 @@ get_program_header_size (bfd *abfd, stru
       ++segs;
     }
 
+  if (elf_sframe (abfd))
+    {
+      /* We need a PT_GNU_SFRAME segment.  */
+      ++segs;
+    }
+
   s = bfd_get_section_by_name (abfd,
 			       NOTE_GNU_PROPERTY_SECTION_NAME);
   if (s != NULL && s->size != 0)
@@ -4483,7 +4909,14 @@ get_program_header_size (bfd *abfd, stru
       && (elf_tdata (abfd)->has_gnu_osabi & elf_gnu_osabi_mbind) != 0)
     {
       /* Add a PT_GNU_MBIND segment for each mbind section.  */
-      unsigned int page_align_power = bfd_log2 (bed->commonpagesize);
+      bfd_vma commonpagesize;
+      unsigned int page_align_power;
+
+      if (info != NULL)
+	commonpagesize = info->commonpagesize;
+      else
+	commonpagesize = bed->commonpagesize;
+      page_align_power = bfd_log2 (commonpagesize);
       for (s = abfd->sections; s != NULL; s = s->next)
 	if (elf_section_flags (s) & SHF_GNU_MBIND)
 	  {
@@ -4546,12 +4979,12 @@ make_mapping (bfd *abfd,
 	      asection **sections,
 	      unsigned int from,
 	      unsigned int to,
-	      bfd_boolean phdr)
+	      bool phdr)
 {
   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 *);
@@ -4596,10 +5029,10 @@ _bfd_elf_make_dynamic_segment (bfd *abfd
 
 /* Possibly add or remove segments from the segment map.  */
 
-static bfd_boolean
+static bool
 elf_modify_segment_map (bfd *abfd,
 			struct bfd_link_info *info,
-			bfd_boolean remove_empty_load)
+			bool remove_empty_load)
 {
   struct elf_segment_map **m;
   const struct elf_backend_data *bed;
@@ -4639,30 +5072,43 @@ elf_modify_segment_map (bfd *abfd,
   if (bed->elf_backend_modify_segment_map != NULL)
     {
       if (!(*bed->elf_backend_modify_segment_map) (abfd, info))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 #define IS_TBSS(s) \
   ((s->flags & (SEC_THREAD_LOCAL | SEC_LOAD)) == SEC_THREAD_LOCAL)
 
-/* Set up a mapping from BFD sections to program segments.  */
+/* Set up a mapping from BFD sections to program segments.  Update
+   NEED_LAYOUT if the section layout is changed.  */
 
-bfd_boolean
-_bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
+bool
+_bfd_elf_map_sections_to_segments (bfd *abfd,
+				   struct bfd_link_info *info,
+				   bool *need_layout)
 {
   unsigned int count;
   struct elf_segment_map *m;
   asection **sections = NULL;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-  bfd_boolean no_user_phdrs;
+  bool no_user_phdrs;
 
   no_user_phdrs = elf_seg_map (abfd) == NULL;
 
   if (info != NULL)
-    info->user_phdrs = !no_user_phdrs;
+    {
+      info->user_phdrs = !no_user_phdrs;
+
+      /* Size the relative relocations if DT_RELR is enabled.  */
+      if (info->enable_dt_relr
+	  && need_layout != NULL
+	  && bed->size_relative_relocs
+	  && !bed->size_relative_relocs (info, need_layout))
+	info->callbacks->fatal
+	  (_("%P: failed to size relative relocations\n"));
+    }
 
   if (no_user_phdrs && bfd_count_sections (abfd) != 0)
     {
@@ -4675,21 +5121,23 @@ _bfd_elf_map_sections_to_segments (bfd *
       unsigned int hdr_index;
       bfd_vma maxpagesize;
       asection **hdrpp;
-      bfd_boolean phdr_in_segment;
-      bfd_boolean writable;
-      bfd_boolean executable;
-      int tls_count = 0;
+      bool phdr_in_segment;
+      bool writable;
+      bool executable;
+      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;
+      asection *sframe;
+      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 +5159,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,7 +5172,12 @@ _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;
-      maxpagesize = bed->maxpagesize;
+      /* phdr_size is compared to LMA values which are in bytes.  */
+      phdr_size /= opb;
+      if (info != NULL)
+	maxpagesize = info->maxpagesize;
+      else
+	maxpagesize = bed->maxpagesize;
       if (maxpagesize == 0)
 	maxpagesize = 1;
       phdr_in_segment = info != NULL && info->load_phdrs;
@@ -4734,7 +5187,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 	/* For compatibility with old scripts that may not be using
 	   SIZEOF_HEADERS, add headers when it looks like space has
 	   been left for them.  */
-	phdr_in_segment = TRUE;
+	phdr_in_segment = true;
 
       /* Build the mapping.  */
       mfirst = NULL;
@@ -4755,7 +5208,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 	  m->p_flags = PF_R;
 	  m->p_flags_valid = 1;
 	  m->includes_phdrs = 1;
-	  phdr_in_segment = TRUE;
+	  phdr_in_segment = true;
 	  *pm = m;
 	  pm = &m->next;
 
@@ -4778,15 +5231,15 @@ _bfd_elf_map_sections_to_segments (bfd *
       last_hdr = NULL;
       last_size = 0;
       hdr_index = 0;
-      writable = FALSE;
-      executable = FALSE;
+      writable = false;
+      executable = false;
       dynsec = bfd_get_section_by_name (abfd, ".dynamic");
       if (dynsec != NULL
 	  && (dynsec->flags & SEC_LOAD) == 0)
 	dynsec = NULL;
 
       if ((abfd->flags & D_PAGED) == 0)
-	phdr_in_segment = FALSE;
+	phdr_in_segment = false;
 
       /* Deal with -Ttext or something similar such that the first section
 	 is not adjacent to the program headers.  This is an
@@ -4794,8 +5247,8 @@ _bfd_elf_map_sections_to_segments (bfd *
 	 program headers we will need.  */
       if (phdr_in_segment && count > 0)
 	{
-	  bfd_vma phdr_lma;
-	  bfd_boolean separate_phdr = FALSE;
+	  bfd_vma phdr_lma;  /* Bytes.  */
+	  bool separate_phdr = false;
 
 	  phdr_lma = (sections[0]->lma - phdr_size) & addr_mask & -maxpagesize;
 	  if (info != NULL
@@ -4806,7 +5259,9 @@ _bfd_elf_map_sections_to_segments (bfd *
 		 thus not executable, and the first section is
 		 executable then put the file and program headers in
 		 their own PT_LOAD.  */
-	      separate_phdr = TRUE;
+	      if (!info->one_rosegment)
+		separate_phdr = true;
+
 	      if ((((phdr_lma + phdr_size - 1) & addr_mask & -maxpagesize)
 		   == (sections[0]->lma & addr_mask & -maxpagesize)))
 		{
@@ -4816,38 +5271,38 @@ _bfd_elf_map_sections_to_segments (bfd *
 		  if (phdr_lma >= maxpagesize)
 		    phdr_lma -= maxpagesize;
 		  else
-		    separate_phdr = FALSE;
+		    separate_phdr = false;
 		}
 	    }
 	  if ((sections[0]->lma & addr_mask) < phdr_lma
 	      || (sections[0]->lma & addr_mask) < phdr_size)
 	    /* If file and program headers would be placed at the end
 	       of memory then it's probably better to omit them.  */
-	    phdr_in_segment = FALSE;
+	    phdr_in_segment = false;
 	  else if (phdr_lma < wrap_to)
 	    /* If a section wraps around to where we'll be placing
 	       file and program headers, then the headers will be
 	       overwritten.  */
-	    phdr_in_segment = FALSE;
+	    phdr_in_segment = false;
 	  else if (separate_phdr)
 	    {
 	      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;
 	      *pm = m;
 	      pm = &m->next;
-	      phdr_in_segment = FALSE;
+	      phdr_in_segment = false;
 	    }
 	}
 
       for (i = 0, hdrpp = sections; i < count; i++, hdrpp++)
 	{
 	  asection *hdr;
-	  bfd_boolean new_segment;
+	  bool new_segment;
 
 	  hdr = *hdrpp;
 
@@ -4858,21 +5313,21 @@ _bfd_elf_map_sections_to_segments (bfd *
 	    {
 	      /* If we don't have a segment yet, then we don't need a new
 		 one (we build the last one after this loop).  */
-	      new_segment = FALSE;
+	      new_segment = false;
 	    }
 	  else if (last_hdr->lma - last_hdr->vma != hdr->lma - hdr->vma)
 	    {
 	      /* If this section has a different relation between the
 		 virtual address and the load address, then we need a new
 		 segment.  */
-	      new_segment = TRUE;
+	      new_segment = true;
 	    }
 	  else if (hdr->lma < last_hdr->lma + last_size
 		   || last_hdr->lma + last_size < last_hdr->lma)
 	    {
 	      /* If this section has a load address that makes it overlap
 		 the previous section, then we need a new segment.  */
-	      new_segment = TRUE;
+	      new_segment = true;
 	    }
 	  else if ((abfd->flags & D_PAGED) != 0
 		   && (((last_hdr->lma + last_size - 1) & -maxpagesize)
@@ -4880,7 +5335,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 	    {
 	      /* If we are demand paged then we can't map two disk
 		 pages onto the same memory page.  */
-	      new_segment = FALSE;
+	      new_segment = false;
 	    }
 	  /* In the next test we have to be careful when last_hdr->lma is close
 	     to the end of the address space.  If the aligned address wraps
@@ -4894,7 +5349,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 	    {
 	      /* If putting this section in this segment would force us to
 		 skip a page in the segment, then we need a new segment.  */
-	      new_segment = TRUE;
+	      new_segment = true;
 	    }
 	  else if ((last_hdr->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) == 0
 		   && (hdr->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) != 0)
@@ -4903,32 +5358,32 @@ _bfd_elf_map_sections_to_segments (bfd *
 		 nonloaded (ie. bss style) section in the same segment
 		 as that will force the non-loaded section to be loaded.
 		 Consider .tbss sections as loaded for this purpose.  */
-	      new_segment = TRUE;
+	      new_segment = true;
 	    }
 	  else if ((abfd->flags & D_PAGED) == 0)
 	    {
 	      /* If the file is not demand paged, which means that we
 		 don't require the sections to be correctly aligned in the
 		 file, then there is no other reason for a new segment.  */
-	      new_segment = FALSE;
+	      new_segment = false;
 	    }
 	  else if (info != NULL
 		   && info->separate_code
 		   && executable != ((hdr->flags & SEC_CODE) != 0))
 	    {
-	      new_segment = TRUE;
+	      new_segment = true;
 	    }
 	  else if (! writable
 		   && (hdr->flags & SEC_READONLY) == 0)
 	    {
 	      /* We don't want to put a writable section in a read only
 		 segment.  */
-	      new_segment = TRUE;
+	      new_segment = true;
 	    }
 	  else
 	    {
 	      /* Otherwise, we can use the same segment.  */
-	      new_segment = FALSE;
+	      new_segment = false;
 	    }
 
 	  /* Allow interested parties a chance to override our decision.  */
@@ -4943,12 +5398,12 @@ _bfd_elf_map_sections_to_segments (bfd *
 	  if (! new_segment)
 	    {
 	      if ((hdr->flags & SEC_READONLY) == 0)
-		writable = TRUE;
+		writable = true;
 	      if ((hdr->flags & SEC_CODE) != 0)
-		executable = TRUE;
+		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;
 	    }
 
@@ -4963,20 +5418,20 @@ _bfd_elf_map_sections_to_segments (bfd *
 	  pm = &m->next;
 
 	  if ((hdr->flags & SEC_READONLY) == 0)
-	    writable = TRUE;
+	    writable = true;
 	  else
-	    writable = FALSE;
+	    writable = false;
 
 	  if ((hdr->flags & SEC_CODE) == 0)
-	    executable = FALSE;
+	    executable = false;
 	  else
-	    executable = TRUE;
+	    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;
 	  hdr_index = i;
-	  phdr_in_segment = FALSE;
+	  phdr_in_segment = false;
 	}
 
       /* Create a final PT_LOAD program segment, but not if it's just
@@ -5022,7 +5477,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 +5529,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 +5537,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)
 			{
@@ -5154,7 +5609,7 @@ _bfd_elf_map_sections_to_segments (bfd *
 
       /* If there is a .eh_frame_hdr section, throw in a PT_GNU_EH_FRAME
 	 segment.  */
-      eh_frame_hdr = elf_eh_frame_hdr (abfd);
+      eh_frame_hdr = elf_eh_frame_hdr (info);
       if (eh_frame_hdr != NULL
 	  && (eh_frame_hdr->output_section->flags & SEC_LOAD) != 0)
 	{
@@ -5171,6 +5626,26 @@ _bfd_elf_map_sections_to_segments (bfd *
 	  pm = &m->next;
 	}
 
+      /* If there is a .sframe section, throw in a PT_GNU_SFRAME
+	 segment.  */
+      sframe = elf_sframe (abfd);
+      if (sframe != NULL
+	  && (sframe->output_section->flags & SEC_LOAD) != 0
+	  && sframe->size != 0)
+	{
+	  amt = sizeof (struct elf_segment_map);
+	  m = (struct elf_segment_map *) bfd_zalloc (abfd, amt);
+	  if (m == NULL)
+	    goto error_return;
+	  m->next = NULL;
+	  m->p_type = PT_GNU_SFRAME;
+	  m->count = 1;
+	  m->sections[0] = sframe->output_section;
+
+	  *pm = m;
+	  pm = &m->next;
+	}
+
       if (elf_stack_flags (abfd))
 	{
 	  amt = sizeof (struct elf_segment_map);
@@ -5204,9 +5679,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) != 0
+			  && (m->sections[i]->flags & SEC_HAS_CONTENTS) != 0)
+			break;
+		    }
 
 		  if (i != (unsigned) -1)
 		    break;
@@ -5231,19 +5709,18 @@ _bfd_elf_map_sections_to_segments (bfd *
       elf_seg_map (abfd) = mfirst;
     }
 
-  if (!elf_modify_segment_map (abfd, info, no_user_phdrs))
-    return FALSE;
+  if (!elf_modify_segment_map (abfd, info, no_user_phdrs || info == NULL))
+    return false;
 
   for (count = 0, m = elf_seg_map (abfd); m != NULL; m = m->next)
     ++count;
   elf_program_header_size (abfd) = count * bed->s->sizeof_phdr;
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (sections != NULL)
-    free (sections);
-  return FALSE;
+  free (sections);
+  return false;
 }
 
 /* Sort sections by address.  */
@@ -5271,7 +5748,8 @@ elf_sort_sections (const void *arg1, con
 
   /* Put !SEC_LOAD sections after SEC_LOAD ones.  */
 
-#define TOEND(x) (((x)->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) == 0)
+#define TOEND(x) (((x)->flags & (SEC_LOAD | SEC_THREAD_LOCAL)) == 0 \
+		  && (x)->size != 0)
 
   if (TOEND (sec1))
     {
@@ -5320,17 +5798,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;
     }
@@ -5399,27 +5885,11 @@ print_segment_map (const struct elf_segm
   fflush (stderr);
 }
 
-static bfd_boolean
-write_zeros (bfd *abfd, file_ptr pos, bfd_size_type len)
-{
-  void *buf;
-  bfd_boolean ret;
-
-  if (bfd_seek (abfd, pos, SEEK_SET) != 0)
-    return FALSE;
-  buf = bfd_zmalloc (len);
-  if (buf == NULL)
-    return FALSE;
-  ret = bfd_bwrite (buf, len, abfd) == len;
-  free (buf);
-  return ret;
-}
-
 /* Assign file positions to the sections based on the mapping from
    sections to segments.  This function also sets up some fields in
    the file header.  */
 
-static bfd_boolean
+static bool
 assign_file_positions_for_load_sections (bfd *abfd,
 					 struct bfd_link_info *link_info)
 {
@@ -5428,15 +5898,16 @@ 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))
-    return FALSE;
+      && !_bfd_elf_map_sections_to_segments (abfd, link_info, NULL))
+    return false;
 
   alloc = 0;
   for (m = elf_seg_map (abfd); m != NULL; m = m->next)
@@ -5472,7 +5943,7 @@ assign_file_positions_for_load_sections
   if (alloc == 0)
     {
       elf_next_file_pos (abfd) = bed->s->sizeof_ehdr;
-      return TRUE;
+      return true;
     }
 
   /* We're writing the size in elf_program_header_size (abfd),
@@ -5489,7 +5960,7 @@ assign_file_positions_for_load_sections
   sorted_seg_map = (struct elf_segment_map **) (phdrs + actual);
   elf_tdata (abfd)->phdr = phdrs;
   if (phdrs == NULL)
-    return FALSE;
+    return false;
 
   for (m = elf_seg_map (abfd), j = 0; m != NULL; m = m->next, j++)
     {
@@ -5515,7 +5986,12 @@ assign_file_positions_for_load_sections
 
   maxpagesize = 1;
   if ((abfd->flags & D_PAGED) != 0)
-    maxpagesize = bed->maxpagesize;
+    {
+      if (link_info != NULL)
+	maxpagesize = link_info->maxpagesize;
+      else
+	maxpagesize = bed->maxpagesize;
+    }
 
   /* Sections must map to file offsets past the ELF file header.  */
   off = bed->s->sizeof_ehdr;
@@ -5540,8 +6016,9 @@ assign_file_positions_for_load_sections
   for (j = 0; j < alloc; j++)
     {
       asection **secpp;
-      bfd_vma off_adjust;
-      bfd_boolean no_contents;
+      bfd_vma off_adjust;  /* Octets.  */
+      bool no_contents;
+      bfd_size_type align_pagesize;
 
       /* An ELF segment (described by Elf_Internal_Phdr) may contain a
 	 number of sections with contents contributing to both p_filesz
@@ -5554,17 +6031,18 @@ 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;
 
+      align_pagesize = 0;
       if (p->p_type == PT_LOAD
 	  && (abfd->flags & D_PAGED) != 0)
 	{
@@ -5578,6 +6056,17 @@ assign_file_positions_for_load_sections
 	     segment.  */
 	  if (m->p_align_valid)
 	    maxpagesize = m->p_align;
+	  else if (bed->p_align != 0
+		   && (link_info == NULL
+		       || !link_info->maxpagesize_is_set))
+	    /* We will lay out this binary using maxpagesize but set
+	       p->p_align later to the possibly smaller bed->p_align.
+	       The run-time loader will then be able to load this
+	       binary when the system page size is maxpagesize, but if
+	       the system page size is smaller can use p->p_align.
+	       In either case p->p_align will be increased if
+	       necessary to match section alignment.  */
+	    align_pagesize = bed->p_align;
 
 	  p->p_align = maxpagesize;
 	}
@@ -5587,18 +6076,14 @@ assign_file_positions_for_load_sections
 	p->p_align = 1 << bed->s->log_file_align;
 
       if (m == phdr_load_seg)
-	{
-	  if (!m->includes_filehdr)
-	    p->p_offset = off;
-	  off += actual * bed->s->sizeof_phdr;
-	}
+	off += actual * bed->s->sizeof_phdr;
 
-      no_contents = FALSE;
+      no_contents = false;
       off_adjust = 0;
       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)
@@ -5614,8 +6099,21 @@ assign_file_positions_for_load_sections
 		    align_power = secalign;
 		}
 	      align = (bfd_size_type) 1 << align_power;
+	      /* If a section requires alignment higher than the
+		 minimum p_align value, don't reduce a maxpagesize
+		 p->p_align set earlier in this function.  */
+	      if (align > bed->p_align)
+		align_pagesize = 0;
 	      if (align < maxpagesize)
 		align = maxpagesize;
+	      else
+		{
+		  /* If a section requires alignment higher than the
+		     maximum page size, set p_align to the section
+		     alignment.  */
+		  if ((abfd->flags & D_PAGED) != 0)
+		    p->p_align = align;
+		}
 	    }
 
 	  for (i = 0; i < m->count; i++)
@@ -5627,15 +6125,15 @@ assign_file_positions_for_load_sections
 
 	  /* Find out whether this segment contains any loadable
 	     sections.  */
-	  no_contents = TRUE;
+	  no_contents = true;
 	  for (i = 0; i < m->count; i++)
 	    if (elf_section_type (m->sections[i]) != SHT_NOBITS)
 	      {
-		no_contents = FALSE;
+		no_contents = false;
 		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 +6142,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)
@@ -5665,14 +6164,14 @@ assign_file_positions_for_load_sections
 	 PT_DYNAMIC segment.  */
       else if (p->p_type == PT_DYNAMIC
 	       && m->count > 1
-	       && strcmp (m->sections[0]->name, ".dynamic") != 0)
+	       && ! streq (m->sections[0]->name, ".dynamic"))
 	{
 	  _bfd_error_handler
 	    (_("%pB: The first section in the PT_DYNAMIC segment"
 	       " is not the .dynamic section"),
 	     abfd);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       /* Set the note section type to SHT_NOTE.  */
       else if (p->p_type == PT_NOTE)
@@ -5698,7 +6197,7 @@ assign_file_positions_for_load_sections
 			   " try linking with -N"),
 			 abfd);
 		      bfd_set_error (bfd_error_bad_value);
-		      return FALSE;
+		      return false;
 		    }
 		  p->p_vaddr -= off;
 		  if (!m->p_paddr_valid)
@@ -5724,6 +6223,7 @@ assign_file_positions_for_load_sections
 	    {
 	      if (p->p_type == PT_LOAD)
 		{
+		  p->p_offset = off - actual * bed->s->sizeof_phdr;
 		  elf_elfheader (abfd)->e_phoff = p->p_offset;
 		  if (m->count > 0)
 		    {
@@ -5734,8 +6234,11 @@ assign_file_positions_for_load_sections
 		}
 	      else if (phdr_load_seg != NULL)
 		{
+		  /* Also set PT_PHDR to match phdr_load_seg.  We've
+		     sorted segments so that phdr_load_seg will
+		     already be set by the code immediately above.  */
 		  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 +6255,27 @@ 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;
+		  /* Avoid p_offset of zero, which might be wrongly
+		     interpreted as the segment being the first one,
+		     containing the file header.  PR32763.  */
+		  p->p_offset = (off + align - 1) % align + 1;
+		}
+	    }
 	  else
 	    {
-	      file_ptr adjust;
+	      file_ptr adjust;  /* Octets.  */
 
 	      adjust = off - (p->p_offset + p->p_filesz);
 	      if (!no_contents)
@@ -5764,6 +6284,9 @@ assign_file_positions_for_load_sections
 	    }
 	}
 
+      if (align_pagesize)
+	p->p_align = align_pagesize;
+
       /* Set up p_filesz, p_memsz, p_align and p_flags from the section
 	 maps.  Set filepos for sections in PT_LOAD segments, and in
 	 core files, for sections in PT_NOTE segments.
@@ -5786,10 +6309,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
@@ -5797,30 +6320,50 @@ 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);
+		    (_("%pB: section %pA lma %#" PRIx64
+		       " adjusted to %#" PRIx64),
+		     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.
-			     Allocate file space for the NOBITS section(s) and
-			     zero it.  */
+			     Allocate file space for the NOBITS section(s).
+			     We don't need to write out the zeros, posix
+			     fseek past the end of data already written
+			     followed by a write at that location is
+			     guaranteed to result in zeros being read
+			     from the gap.  */
 			  adjust = p->p_memsz - p->p_filesz;
-			  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)
@@ -5846,27 +6389,28 @@ assign_file_positions_for_load_sections
 	    }
 	  else
 	    {
-	      if (p->p_type == PT_LOAD)
+	      if (this_hdr->sh_type == SHT_NOBITS
+		  && (this_hdr->sh_flags & SHF_TLS) != 0
+		  && this_hdr->sh_offset == 0)
+		{
+		  /* Set sh_offset for .tbss sections to their nominal
+		     offset after aligning.  They are not loaded from
+		     disk so the value doesn't really matter, except
+		     when the .tbss section is the first one in a
+		     PT_TLS segment.  In that case it sets the
+		     p_offset for the PT_TLS segment, which according
+		     to the ELF gABI ought to satisfy
+		     p_offset % p_align == p_vaddr % p_align.  */
+		  bfd_vma adjust = vma_page_aligned_bias (this_hdr->sh_addr,
+							  off, align);
+		  this_hdr->sh_offset = sec->filepos = off + adjust;
+		}
+	      else if (p->p_type == PT_LOAD)
 		{
 		  this_hdr->sh_offset = sec->filepos = off;
 		  if (this_hdr->sh_type != SHT_NOBITS)
 		    off += this_hdr->sh_size;
 		}
-	      else if (this_hdr->sh_type == SHT_NOBITS
-		       && (this_hdr->sh_flags & SHF_TLS) != 0
-		       && this_hdr->sh_offset == 0)
-		{
-		  /* This is a .tbss section that didn't get a PT_LOAD.
-		     (See _bfd_elf_map_sections_to_segments "Create a
-		     final PT_LOAD".)  Set sh_offset to the value it
-		     would have if we had created a zero p_filesz and
-		     p_memsz PT_LOAD header for the section.  This
-		     also makes the PT_TLS header have the same
-		     p_offset value.  */
-		  bfd_vma adjust = vma_page_aligned_bias (this_hdr->sh_addr,
-							  off, align);
-		  this_hdr->sh_offset = sec->filepos = off + adjust;
-		}
 
 	      if (this_hdr->sh_type != SHT_NOBITS)
 		{
@@ -5920,14 +6464,18 @@ 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.
 	 Don't check funky gdb generated core files.  */
       if (p->p_type == PT_LOAD && bfd_get_format (abfd) != bfd_core)
 	{
-	  bfd_boolean check_vma = TRUE;
+	  bool check_vma = true;
 
 	  for (i = 1; i < m->count; i++)
 	    if (m->sections[i]->vma == m->sections[i - 1]->vma
@@ -5937,7 +6485,7 @@ assign_file_positions_for_load_sections
 				       ->this_hdr), p) != 0)
 	      {
 		/* Looks like we have overlays packed into the segment.  */
-		check_vma = FALSE;
+		check_vma = false;
 		break;
 	      }
 
@@ -5953,8 +6501,8 @@ assign_file_positions_for_load_sections
 		{
 		  _bfd_error_handler
 		    /* xgettext:c-format */
-		    (_("%pB: section `%pA' can't be allocated in segment %d"),
-		     abfd, sec, j);
+		    (_("%pB: section `%pA' can't be allocated in segment %u"),
+		     abfd, sec, m->idx);
 		  print_segment_map (m);
 		}
 	    }
@@ -5971,9 +6519,9 @@ assign_file_positions_for_load_sections
 	 program headers, so provide a symbol __ehdr_start pointing there.
 	 A program can use this to examine itself robustly.  */
 
-      struct elf_link_hash_entry *hash
-	= elf_link_hash_lookup (elf_hash_table (link_info), "__ehdr_start",
-				FALSE, FALSE, TRUE);
+      struct elf_link_hash_table *htab = elf_hash_table (link_info);
+      struct elf_link_hash_entry *hash = htab->hehdr_start;
+
       /* If the symbol was referenced and not defined, define it.  */
       if (hash != NULL
 	  && (hash->root.type == bfd_link_hash_new
@@ -5982,7 +6530,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.  */
@@ -6013,18 +6561,18 @@ assign_file_positions_for_load_sections
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Determine if a bfd is a debuginfo file.  Unfortunately there
    is no defined method for detecting such files, so we have to
    use heuristics instead.  */
 
-bfd_boolean
+bool
 is_debuginfo_file (bfd *abfd)
 {
   if (abfd == NULL || bfd_get_flavour (abfd) != bfd_target_elf_flavour)
-    return FALSE;
+    return false;
 
   Elf_Internal_Shdr **start_headers = elf_elfsections (abfd);
   Elf_Internal_Shdr **end_headers = start_headers + elf_numsections (abfd);
@@ -6039,16 +6587,16 @@ is_debuginfo_file (bfd *abfd)
       if ((header->sh_flags & SHF_ALLOC) == SHF_ALLOC
 	  && header->sh_type != SHT_NOBITS
 	  && header->sh_type != SHT_NOTE)
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-/* Assign file positions for the other sections, except for compressed debugging
-   and other sections assigned in _bfd_elf_assign_file_positions_for_non_load().  */
+/* Assign file positions for other sections, except for compressed debug
+   and sections assigned in _bfd_elf_assign_file_positions_for_non_load.  */
 
-static bfd_boolean
+static bool
 assign_file_positions_for_non_load_sections (bfd *abfd,
 					     struct bfd_link_info *link_info)
 {
@@ -6059,13 +6607,20 @@ 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);
+  bfd_vma maxpagesize;
 
+  if (link_info != NULL)
+    maxpagesize = link_info->maxpagesize;
+  else
+    maxpagesize = bed->maxpagesize;
   i_shdrpp = elf_elfsections (abfd);
   end_hdrpp = i_shdrpp + elf_numsections (abfd);
   off = elf_next_file_pos (abfd);
   for (hdrpp = i_shdrpp + 1; hdrpp < end_hdrpp; hdrpp++)
     {
       Elf_Internal_Shdr *hdr;
+      bfd_vma align;
 
       hdr = *hdrpp;
       if (hdr->bfd_section != NULL
@@ -6091,22 +6646,21 @@ assign_file_positions_for_non_load_secti
 		: hdr->bfd_section->name));
 	  /* We don't need to page align empty sections.  */
 	  if ((abfd->flags & D_PAGED) != 0 && hdr->sh_size != 0)
-	    off += vma_page_aligned_bias (hdr->sh_addr, off,
-					  bed->maxpagesize);
+	    align = maxpagesize;
 	  else
-	    off += vma_page_aligned_bias (hdr->sh_addr, off,
-					  hdr->sh_addralign);
-	  off = _bfd_elf_assign_file_position_for_section (hdr, off,
-							   FALSE);
+	    align = hdr->sh_addralign & -hdr->sh_addralign;
+	  off += vma_page_aligned_bias (hdr->sh_addr, off, align);
+	  off = _bfd_elf_assign_file_position_for_section (hdr, off, false,
+							   bed->s->log_file_align);
 	}
       else if (((hdr->sh_type == SHT_REL || hdr->sh_type == SHT_RELA)
 		&& hdr->bfd_section == NULL)
-	       /* We don't know the offset of these sections yet: their size has
-		  not been decided.  */
-	       || (hdr->bfd_section != NULL
-		   && (hdr->bfd_section->flags & SEC_ELF_COMPRESS
-		       || (bfd_section_is_ctf (hdr->bfd_section)
-			   && abfd->is_linker_output)))
+	       /* We don't know the offset of these sections yet:
+		  their size has not been decided.  */
+	       || (abfd->is_linker_output
+		   && hdr->bfd_section != NULL
+		   && (hdr->sh_name == -1u
+		       || bfd_section_is_ctf (hdr->bfd_section)))
 	       || hdr == i_shdrpp[elf_onesymtab (abfd)]
 	       || (elf_symtab_shndx_list (abfd) != NULL
 		   && hdr == i_shdrpp[elf_symtab_shndx_list (abfd)->ndx])
@@ -6114,7 +6668,7 @@ assign_file_positions_for_non_load_secti
 	       || hdr == i_shdrpp[elf_shstrtab_sec (abfd)])
 	hdr->sh_offset = -1;
       else
-	off = _bfd_elf_assign_file_position_for_section (hdr, off, TRUE);
+	off = _bfd_elf_assign_file_position_for_section (hdr, off, true, 0);
     }
   elf_next_file_pos (abfd) = off;
 
@@ -6125,8 +6679,8 @@ assign_file_positions_for_non_load_secti
     {
       if (p->p_type == PT_GNU_RELRO)
 	{
-	  bfd_vma start, end;
-	  bfd_boolean ok;
+	  bfd_vma start, end;  /* Bytes.  */
+	  bool ok;
 
 	  if (link_info != NULL)
 	    {
@@ -6141,7 +6695,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
 	    {
@@ -6149,7 +6703,7 @@ assign_file_positions_for_non_load_secti
 	      end = 0;
 	    }
 
-	  ok = FALSE;
+	  ok = false;
 	  if (start < end)
 	    {
 	      struct elf_segment_map *lm;
@@ -6166,7 +6720,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 +6740,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
@@ -6211,14 +6765,20 @@ assign_file_positions_for_non_load_secti
 			p->p_align = 1;
 		      if (!m->p_flags_valid)
 			p->p_flags = PF_R;
-		      ok = TRUE;
+		      ok = true;
 		    }
 		}
 	    }
-	  if (link_info != NULL)
-	    BFD_ASSERT (ok);
+
 	  if (!ok)
-	    memset (p, 0, sizeof *p);
+	    {
+	      if (link_info != NULL)
+		_bfd_error_handler
+		  (_("%pB: warning: unable to allocate any sections"
+		     " to PT_GNU_RELRO segment"),
+		   abfd);
+	      memset (p, 0, sizeof *p);
+	    }
 	}
       else if (p->p_type == PT_GNU_STACK)
 	{
@@ -6248,7 +6808,7 @@ assign_file_positions_for_non_load_secti
 		    (_("%pB: error: non-load segment %d includes file header "
 		       "and/or program header"),
 		     abfd, (int) (p - phdrs));
-		  return FALSE;
+		  return false;
 		}
 
 	      p->p_filesz = 0;
@@ -6259,8 +6819,12 @@ assign_file_positions_for_non_load_secti
 		  Elf_Internal_Shdr *hdr = &elf_section_data (sect)->this_hdr;
 		  if (hdr->sh_type != SHT_NOBITS)
 		    {
-		      p->p_filesz = (sect->filepos - m->sections[0]->filepos
-				     + hdr->sh_size);
+		      p->p_filesz = sect->filepos - p->p_offset + hdr->sh_size;
+		      /* NB: p_memsz of the loadable PT_NOTE segment
+			 should be the same as p_filesz.  */
+		      if (p->p_type == PT_NOTE
+			  && (hdr->sh_flags & SHF_ALLOC) != 0)
+			p->p_memsz = p->p_filesz;
 		      break;
 		    }
 		}
@@ -6268,7 +6832,7 @@ assign_file_positions_for_non_load_secti
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static elf_section_list *
@@ -6285,17 +6849,17 @@ find_section_in_list (unsigned int i, el
    VMAs must be known before this is called.
 
    Reloc sections come in two flavours: Those processed specially as
-   "side-channel" data attached to a section to which they apply, and those that
-   bfd doesn't process as relocations.  The latter sort are stored in a normal
-   bfd section by bfd_section_from_shdr.  We don't consider the former sort
-   here, unless they form part of the loadable image.  Reloc sections not
-   assigned here (and compressed debugging sections and CTF sections which
-   nothing else in the file can rely upon) will be handled later by
-   assign_file_positions_for_relocs.
+   "side-channel" data attached to a section to which they apply, and
+   those that bfd doesn't process as relocations.  The latter sort are
+   stored in a normal bfd section by bfd_section_from_shdr.  We don't
+   consider the former sort here, unless they form part of the loadable
+   image.  Reloc sections not assigned here (and compressed debugging
+   sections and CTF sections which nothing else in the file can rely
+   upon) will be handled later by assign_file_positions_for_relocs.
 
    We also don't set the positions of the .symtab and .strtab here.  */
 
-static bfd_boolean
+static bool
 assign_file_positions_except_relocs (bfd *abfd,
 				     struct bfd_link_info *link_info)
 {
@@ -6328,10 +6892,10 @@ assign_file_positions_except_relocs (bfd
 	       && hdr->bfd_section == NULL)
 	      /* Do not assign offsets for these sections yet: we don't know
 		 their sizes.  */
-	      || (hdr->bfd_section != NULL
-		  && (hdr->bfd_section->flags & SEC_ELF_COMPRESS
-		      || (bfd_section_is_ctf (hdr->bfd_section)
-			  && abfd->is_linker_output)))
+	      || (abfd->is_linker_output
+		  && hdr->bfd_section != NULL
+		  && (hdr->sh_name == -1u
+		      || bfd_section_is_ctf (hdr->bfd_section)))
 	      || i == elf_onesymtab (abfd)
 	      || (elf_symtab_shndx_list (abfd) != NULL
 		  && hdr == i_shdrpp[elf_symtab_shndx_list (abfd)->ndx])
@@ -6341,7 +6905,12 @@ assign_file_positions_except_relocs (bfd
 	      hdr->sh_offset = -1;
 	    }
 	  else
-	    off = _bfd_elf_assign_file_position_for_section (hdr, off, TRUE);
+	    /* There shouldn't be a need to effect "capped" file alignment here,
+	       yet at least the Linux kernel's modpost utility was found to be
+	       unhappy without.  While the issue was addressed there, let's be
+	       kind for at least the foreseeable future ...  */
+	    off = _bfd_elf_assign_file_position_for_section (hdr, off, false,
+							     bed->s->log_file_align);
 	}
 
       elf_next_file_pos (abfd) = off;
@@ -6352,29 +6921,90 @@ assign_file_positions_except_relocs (bfd
       /* Assign file positions for the loaded sections based on the
 	 assignment of sections to segments.  */
       if (!assign_file_positions_for_load_sections (abfd, link_info))
-	return FALSE;
+	return false;
 
       /* And for non-load sections.  */
       if (!assign_file_positions_for_non_load_sections (abfd, link_info))
-	return FALSE;
+	return false;
     }
 
   if (!(*bed->elf_backend_modify_headers) (abfd, link_info))
-    return FALSE;
+    return false;
 
   /* Write out the program headers.  */
   alloc = i_ehdrp->e_phnum;
   if (alloc != 0)
     {
+      if (link_info != NULL && ! link_info->no_warn_rwx_segments)
+	{
+	  bool warned_tls = false;
+	  bool warned_rwx = false;
+
+	  /* Memory resident segments with non-zero size and RWX
+	     permissions are a security risk, so we generate a warning
+	     here if we are creating any.  */
+	  unsigned int i;
+
+	  for (i = 0; i < alloc; i++)
+	    {
+	      const Elf_Internal_Phdr * phdr = tdata->phdr + i;
+
+	      if (phdr->p_memsz == 0)
+		continue;
+
+	      if (! warned_tls
+		  && phdr->p_type == PT_TLS
+		  && (phdr->p_flags & PF_X))
+		{
+		  if (link_info->warn_is_error_for_rwx_segments)
+		    {
+		      _bfd_error_handler (_("\
+error: %pB has a TLS segment with execute permission"),
+					  abfd);
+		      return false;
+		    }
+
+		  _bfd_error_handler (_("\
+warning: %pB has a TLS segment with execute permission"),
+				      abfd);
+		  if (warned_rwx)
+		    break;
+
+		  warned_tls = true;
+		}
+	      else if (! warned_rwx
+		       && phdr->p_type == PT_LOAD
+		       && ((phdr->p_flags & (PF_R | PF_W | PF_X))
+			   == (PF_R | PF_W | PF_X)))
+		{
+		  if (link_info->warn_is_error_for_rwx_segments)
+		    {
+		      _bfd_error_handler (_("\
+error: %pB has a LOAD segment with RWX permissions"),
+					  abfd);
+		      return false;
+		    }
+
+		  _bfd_error_handler (_("\
+warning: %pB has a LOAD segment with RWX permissions"),
+				      abfd);
+		  if (warned_tls)
+		    break;
+
+		  warned_rwx = true;
+		}
+	    }
+	}
+
       if (bfd_seek (abfd, i_ehdrp->e_phoff, SEEK_SET) != 0
 	  || bed->s->write_out_phdrs (abfd, tdata->phdr, alloc) != 0)
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_elf_init_file_header (bfd *abfd,
 			   struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
@@ -6386,7 +7016,7 @@ _bfd_elf_init_file_header (bfd *abfd,
 
   shstrtab = _bfd_elf_strtab_init ();
   if (shstrtab == NULL)
-    return FALSE;
+    return false;
 
   elf_shstrtab (abfd) = shstrtab;
 
@@ -6440,17 +7070,17 @@ _bfd_elf_init_file_header (bfd *abfd,
   i_ehdrp->e_shentsize = bed->s->sizeof_shdr;
 
   elf_tdata (abfd)->symtab_hdr.sh_name =
-    (unsigned int) _bfd_elf_strtab_add (shstrtab, ".symtab", FALSE);
+    (unsigned int) _bfd_elf_strtab_add (shstrtab, ".symtab", false);
   elf_tdata (abfd)->strtab_hdr.sh_name =
-    (unsigned int) _bfd_elf_strtab_add (shstrtab, ".strtab", FALSE);
+    (unsigned int) _bfd_elf_strtab_add (shstrtab, ".strtab", false);
   elf_tdata (abfd)->shstrtab_hdr.sh_name =
-    (unsigned int) _bfd_elf_strtab_add (shstrtab, ".shstrtab", FALSE);
+    (unsigned int) _bfd_elf_strtab_add (shstrtab, ".shstrtab", false);
   if (elf_tdata (abfd)->symtab_hdr.sh_name == (unsigned int) -1
       || elf_tdata (abfd)->strtab_hdr.sh_name == (unsigned int) -1
       || elf_tdata (abfd)->shstrtab_hdr.sh_name == (unsigned int) -1)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Set e_type in ELF header to ET_EXEC for -pie -Ttext-segment=.
@@ -6460,7 +7090,7 @@ _bfd_elf_init_file_header (bfd *abfd,
    including the Linux kernel.  But really either the spec should be
    changed or the programs updated.  */
 
-bfd_boolean
+bool
 _bfd_elf_modify_headers (bfd *obfd, struct bfd_link_info *link_info)
 {
   if (link_info != NULL && bfd_link_pie (link_info))
@@ -6482,20 +7112,24 @@ _bfd_elf_modify_headers (bfd *obfd, stru
       if (p_vaddr)
 	i_ehdrp->e_type = ET_EXEC;
     }
-  return TRUE;
+  return true;
 }
 
 /* Assign file positions for all the reloc sections which are not part
    of the loadable file image, and the file position of section headers.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_assign_file_positions_for_non_load (bfd *abfd)
 {
   file_ptr off;
   Elf_Internal_Shdr **shdrpp, **end_shdrpp;
   Elf_Internal_Shdr *shdrp;
   Elf_Internal_Ehdr *i_ehdrp;
-  const struct elf_backend_data *bed;
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+
+  /* Skip non-load sections without section header.  */
+  if ((abfd->flags & BFD_NO_SECTION_HEADER) != 0)
+    return true;
 
   off = elf_next_file_pos (abfd);
 
@@ -6507,70 +7141,62 @@ _bfd_elf_assign_file_positions_for_non_l
       if (shdrp->sh_offset == -1)
 	{
 	  asection *sec = shdrp->bfd_section;
-	  bfd_boolean is_rel = (shdrp->sh_type == SHT_REL
-				|| shdrp->sh_type == SHT_RELA);
-	  bfd_boolean is_ctf = sec && bfd_section_is_ctf (sec);
-	  if (is_rel
-	      || is_ctf
-	      || (sec != NULL && (sec->flags & SEC_ELF_COMPRESS)))
-	    {
-	      if (!is_rel && !is_ctf)
-		{
-		  const char *name = sec->name;
-		  struct bfd_elf_section_data *d;
-
-		  /* Compress DWARF debug sections.  */
-		  if (!bfd_compress_section (abfd, sec,
-					     shdrp->contents))
-		    return FALSE;
-
-		  if (sec->compress_status == COMPRESS_SECTION_DONE
-		      && (abfd->flags & BFD_COMPRESS_GABI) == 0)
-		    {
-		      /* If section is compressed with zlib-gnu, convert
-			 section name from .debug_* to .zdebug_*.  */
-		      char *new_name
-			= convert_debug_to_zdebug (abfd, name);
-		      if (new_name == NULL)
-			return FALSE;
-		      name = new_name;
-		    }
-		  /* Add section name to section name section.  */
-		  if (shdrp->sh_name != (unsigned int) -1)
-		    abort ();
-		  shdrp->sh_name
-		    = (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd),
-							  name, FALSE);
-		  d = elf_section_data (sec);
-
-		  /* Add reloc section name to section name section.  */
-		  if (d->rel.hdr
-		      && !_bfd_elf_set_reloc_sh_name (abfd,
-						      d->rel.hdr,
-						      name, FALSE))
-		    return FALSE;
-		  if (d->rela.hdr
-		      && !_bfd_elf_set_reloc_sh_name (abfd,
-						      d->rela.hdr,
-						      name, TRUE))
-		    return FALSE;
-
-		  /* Update section size and contents.  */
-		  shdrp->sh_size = sec->size;
-		  shdrp->contents = sec->contents;
-		  shdrp->bfd_section->contents = NULL;
-		}
-	      else if (is_ctf)
-		{
-		  /* Update section size and contents.	*/
-		  shdrp->sh_size = sec->size;
-		  shdrp->contents = sec->contents;
-		}
-
-	      off = _bfd_elf_assign_file_position_for_section (shdrp,
-							       off,
-							       TRUE);
-	    }
+	  if (sec == NULL
+	      || shdrp->sh_type == SHT_REL
+	      || shdrp->sh_type == SHT_RELA)
+	    ;
+	  else if (bfd_section_is_ctf (sec))
+	    {
+	      /* Update section size and contents.	*/
+	      shdrp->sh_size = sec->size;
+	      shdrp->contents = sec->contents;
+	    }
+	  else if (shdrp->sh_name == -1u)
+	    {
+	      const char *name = sec->name;
+	      struct bfd_elf_section_data *d;
+
+	      /* Compress DWARF debug sections.  */
+	      if (!bfd_compress_section (abfd, sec, shdrp->contents))
+		return false;
+
+	      if (sec->compress_status == COMPRESS_SECTION_DONE
+		  && (abfd->flags & BFD_COMPRESS_GABI) == 0
+		  && name[1] == 'd')
+		{
+		  /* If section is compressed with zlib-gnu, convert
+		     section name from .debug_* to .zdebug_*.  */
+		  char *new_name = bfd_debug_name_to_zdebug (abfd, name);
+		  if (new_name == NULL)
+		    return false;
+		  name = new_name;
+		}
+	      /* Add section name to section name section.  */
+	      shdrp->sh_name
+		= (unsigned int) _bfd_elf_strtab_add (elf_shstrtab (abfd),
+						      name, false);
+	      d = elf_section_data (sec);
+
+	      /* Add reloc section name to section name section.  */
+	      if (d->rel.hdr
+		  && !_bfd_elf_set_reloc_sh_name (abfd, d->rel.hdr,
+						  name, false))
+		return false;
+	      if (d->rela.hdr
+		  && !_bfd_elf_set_reloc_sh_name (abfd, d->rela.hdr,
+						  name, true))
+		return false;
+
+	      /* Update section size and contents.  */
+	      shdrp->sh_size = sec->size;
+	      shdrp->contents = sec->contents;
+	      sec->contents = NULL;
+	    }
+
+	  off = _bfd_elf_assign_file_position_for_section (shdrp, off,
+		  (abfd->flags & (EXEC_P | DYNAMIC))
+		  || bfd_get_format (abfd) == bfd_core,
+		  bed->s->log_file_align);
 	}
     }
 
@@ -6579,95 +7205,101 @@ _bfd_elf_assign_file_positions_for_non_l
   _bfd_elf_strtab_finalize (elf_shstrtab (abfd));
   shdrp = &elf_tdata (abfd)->shstrtab_hdr;
   shdrp->sh_size = _bfd_elf_strtab_size (elf_shstrtab (abfd));
-  off = _bfd_elf_assign_file_position_for_section (shdrp, off, TRUE);
+  off = _bfd_elf_assign_file_position_for_section (shdrp, off, true, 0);
 
   /* Place the section headers.  */
   i_ehdrp = elf_elfheader (abfd);
-  bed = get_elf_backend_data (abfd);
-  off = align_file_position (off, 1 << bed->s->log_file_align);
+  off = BFD_ALIGN (off, 1u << bed->s->log_file_align);
   i_ehdrp->e_shoff = off;
   off += i_ehdrp->e_shnum * i_ehdrp->e_shentsize;
   elf_next_file_pos (abfd) = off;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_elf_write_object_contents (bfd *abfd)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
   Elf_Internal_Shdr **i_shdrp;
-  bfd_boolean failed;
+  bool failed;
   unsigned int count, num_sec;
   struct elf_obj_tdata *t;
 
   if (! abfd->output_has_begun
       && ! _bfd_elf_compute_section_file_positions (abfd, NULL))
-    return FALSE;
+    return false;
   /* Do not rewrite ELF data when the BFD has been opened for update.
-     abfd->output_has_begun was set to TRUE on opening, so creation of new
-     sections, and modification of existing section sizes was restricted.
-     This means the ELF header, program headers and section headers can't have
-     changed.
-     If the contents of any sections has been modified, then those changes have
-     already been written to the BFD.  */
+     abfd->output_has_begun was set to TRUE on opening, so creation of
+     new sections, and modification of existing section sizes was
+     restricted.  This means the ELF header, program headers and
+     section headers can't have changed.  If the contents of any
+     sections has been modified, then those changes have already been
+     written to the BFD.  */
   else if (abfd->direction == both_direction)
     {
       BFD_ASSERT (abfd->output_has_begun);
-      return TRUE;
+      return true;
     }
 
   i_shdrp = elf_elfsections (abfd);
 
-  failed = FALSE;
+  failed = false;
   bfd_map_over_sections (abfd, bed->s->write_relocs, &failed);
   if (failed)
-    return FALSE;
+    return false;
 
   if (!_bfd_elf_assign_file_positions_for_non_load (abfd))
-    return FALSE;
+    return false;
 
   /* After writing the headers, we need to write the sections too...  */
   num_sec = elf_numsections (abfd);
   for (count = 1; count < num_sec; count++)
     {
-      i_shdrp[count]->sh_name
-	= _bfd_elf_strtab_offset (elf_shstrtab (abfd),
-				  i_shdrp[count]->sh_name);
+      /* Don't set the sh_name field without section header.  */
+      if ((abfd->flags & BFD_NO_SECTION_HEADER) == 0)
+	i_shdrp[count]->sh_name
+	  = _bfd_elf_strtab_offset (elf_shstrtab (abfd),
+				    i_shdrp[count]->sh_name);
       if (bed->elf_backend_section_processing)
 	if (!(*bed->elf_backend_section_processing) (abfd, i_shdrp[count]))
-	  return FALSE;
+	  return false;
       if (i_shdrp[count]->contents)
 	{
 	  bfd_size_type amt = i_shdrp[count]->sh_size;
 
 	  if (bfd_seek (abfd, i_shdrp[count]->sh_offset, SEEK_SET) != 0
-	      || bfd_bwrite (i_shdrp[count]->contents, amt, abfd) != amt)
-	    return FALSE;
+	      || bfd_write (i_shdrp[count]->contents, amt, abfd) != amt)
+	    return false;
 	}
     }
 
   /* Write out the section header names.  */
   t = elf_tdata (abfd);
   if (elf_shstrtab (abfd) != NULL
+      && t->shstrtab_hdr.sh_offset != -1
       && (bfd_seek (abfd, t->shstrtab_hdr.sh_offset, SEEK_SET) != 0
 	  || !_bfd_elf_strtab_emit (abfd, elf_shstrtab (abfd))))
-    return FALSE;
+    return false;
 
   if (!(*bed->elf_backend_final_write_processing) (abfd))
-    return FALSE;
+    return false;
 
   if (!bed->s->write_shdrs_and_ehdr (abfd))
-    return FALSE;
+    return false;
 
   /* This is last since write_shdrs_and_ehdr can touch i_shdrp[0].  */
-  if (t->o->build_id.after_write_object_contents != NULL)
-    return (*t->o->build_id.after_write_object_contents) (abfd);
+  if (t->o->build_id.after_write_object_contents != NULL
+      && !(*t->o->build_id.after_write_object_contents) (abfd))
+    return false;
+  if (t->o->package_metadata.after_write_object_contents != NULL
+      && !(*t->o->package_metadata.after_write_object_contents) (abfd))
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_elf_write_corefile_contents (bfd *abfd)
 {
   /* Hopefully this can be done just like an object file.  */
@@ -6730,15 +7362,14 @@ _bfd_elf_symbol_from_bfd_symbol (bfd *ab
       && asym_ptr->section)
     {
       asection *sec;
-      int indx;
 
       sec = asym_ptr->section;
       if (sec->owner != abfd && sec->output_section != NULL)
 	sec = sec->output_section;
       if (sec->owner == abfd
-	  && (indx = sec->index) < elf_num_section_syms (abfd)
-	  && elf_section_syms (abfd)[indx] != NULL)
-	asym_ptr->udata.i = elf_section_syms (abfd)[indx]->udata.i;
+	  && sec->index < elf_num_section_syms (abfd)
+	  && elf_section_syms (abfd)[sec->index] != NULL)
+	asym_ptr->udata.i = elf_section_syms (abfd)[sec->index]->udata.i;
     }
 
   idx = asym_ptr->udata.i;
@@ -6758,7 +7389,8 @@ _bfd_elf_symbol_from_bfd_symbol (bfd *ab
 #if DEBUG & 4
   {
     fprintf (stderr,
-	     "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d, flags = 0x%.8x\n",
+	     "elf_symbol_from_bfd_symbol 0x%.8lx, name = %s, sym num = %d,"
+	     " flags = 0x%.8x\n",
 	     (long) asym_ptr, asym_ptr->name, idx, flags);
     fflush (stderr);
   }
@@ -6767,10 +7399,69 @@ _bfd_elf_symbol_from_bfd_symbol (bfd *ab
   return idx;
 }
 
+static inline bfd_vma
+segment_size (Elf_Internal_Phdr *segment)
+{
+  return (segment->p_memsz > segment->p_filesz
+	  ? segment->p_memsz : segment->p_filesz);
+}
+
+
+/* Returns the end address of the segment + 1.  */
+static inline bfd_vma
+segment_end (Elf_Internal_Phdr *segment, bfd_vma start)
+{
+  return start + segment_size (segment);
+}
+
+static inline bfd_size_type
+section_size (asection *section, Elf_Internal_Phdr *segment)
+{
+  if ((section->flags & SEC_HAS_CONTENTS) != 0
+      || (section->flags & SEC_THREAD_LOCAL) == 0
+      || segment->p_type == PT_TLS)
+    return section->size;
+  return 0;
+}
+
+/* Returns TRUE if the given section is contained within the given
+   segment.  LMA addresses are compared against PADDR when
+   USE_VADDR is false, VMA against VADDR when true.  */
+static bool
+is_contained_by (asection *section, Elf_Internal_Phdr *segment,
+		 bfd_vma paddr, bfd_vma vaddr, unsigned int opb,
+		 bool use_vaddr)
+{
+  bfd_vma seg_addr = !use_vaddr ? paddr : vaddr;
+  bfd_vma addr = !use_vaddr ? section->lma : section->vma;
+  bfd_vma octet;
+  if (_bfd_mul_overflow (addr, opb, &octet))
+    return false;
+  /* The third and fourth lines below are testing that the section end
+     address is within the segment.  It's written this way to avoid
+     overflow.  Add seg_addr + section_size to both sides of the
+     inequality to make it obvious.  */
+  return (octet >= seg_addr
+	  && segment_size (segment) >= section_size (section, segment)
+	  && (octet - seg_addr
+	      <= segment_size (segment) - section_size (section, segment)));
+}
+
+/* Handle PT_NOTE segment.  */
+static bool
+is_note (asection *s, Elf_Internal_Phdr *p)
+{
+  return (p->p_type == PT_NOTE
+	  && elf_section_type (s) == SHT_NOTE
+	  && (ufile_ptr) s->filepos >= p->p_offset
+	  && p->p_filesz >= s->size
+	  && (ufile_ptr) s->filepos - p->p_offset <= p->p_filesz - s->size);
+}
+
 /* Rewrite program header information.  */
 
-static bfd_boolean
-rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
+static bool
+rewrite_elf_program_header (bfd *ibfd, bfd *obfd, bfd_vma maxpagesize)
 {
   Elf_Internal_Ehdr *iehdr;
   struct elf_segment_map *map;
@@ -6780,12 +7471,12 @@ rewrite_elf_program_header (bfd *ibfd, b
   asection *section;
   unsigned int i;
   unsigned int num_segments;
-  bfd_boolean phdr_included = FALSE;
-  bfd_boolean p_paddr_valid;
-  bfd_vma maxpagesize;
+  bool phdr_included = false;
+  bool p_paddr_valid;
   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);
@@ -6794,48 +7485,6 @@ rewrite_elf_program_header (bfd *ibfd, b
   pointer_to_map = &map_first;
 
   num_segments = elf_elfheader (ibfd)->e_phnum;
-  maxpagesize = get_elf_backend_data (obfd)->maxpagesize;
-
-  /* Returns the end address of the segment + 1.  */
-#define SEGMENT_END(segment, start)					\
-  (start + (segment->p_memsz > segment->p_filesz			\
-	    ? segment->p_memsz : segment->p_filesz))
-
-#define SECTION_SIZE(section, segment)					\
-  (((section->flags & (SEC_HAS_CONTENTS | SEC_THREAD_LOCAL))		\
-    != SEC_THREAD_LOCAL || segment->p_type == PT_TLS)			\
-   ? section->size : 0)
-
-  /* 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)			\
-       <= (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)			\
-       <= SEGMENT_END (segment, base)))
-
-  /* Handle PT_NOTE segment.  */
-#define IS_NOTE(p, s)							\
-  (p->p_type == PT_NOTE							\
-   && elf_section_type (s) == SHT_NOTE					\
-   && (bfd_vma) s->filepos >= p->p_offset				\
-   && ((bfd_vma) s->filepos + s->size					\
-       <= p->p_offset + p->p_filesz))
-
-  /* Special case: corefile "NOTE" section containing regs, prpsinfo
-     etc.  */
-#define IS_COREFILE_NOTE(p, s)						\
-  (IS_NOTE (p, s)							\
-   && bfd_get_format (ibfd) == bfd_core					\
-   && s->vma == 0							\
-   && s->lma == 0)
 
   /* The complicated case when p_vaddr is 0 is to handle the Solaris
      linker, which generates a PT_INTERP section with p_vaddr and
@@ -6864,12 +7513,11 @@ 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)		\
-  ((((segment->p_paddr							\
-      ? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr)	\
-      : IS_CONTAINED_BY_VMA (section, segment))				\
+#define IS_SECTION_IN_INPUT_SEGMENT(section, segment, opb, paddr_valid)	\
+  (((is_contained_by (section, segment, segment->p_paddr,		\
+		      segment->p_vaddr, opb, !paddr_valid)		\
      && (section->flags & SEC_ALLOC) != 0)				\
-    || IS_NOTE (segment, section))					\
+    || is_note (section, segment))					\
    && segment->p_type != PT_GNU_STACK					\
    && (segment->p_type != PT_TLS					\
        || (section->flags & SEC_THREAD_LOCAL))				\
@@ -6877,22 +7525,22 @@ rewrite_elf_program_header (bfd *ibfd, b
        || segment->p_type == PT_TLS					\
        || (section->flags & SEC_THREAD_LOCAL) == 0)			\
    && (segment->p_type != PT_DYNAMIC					\
-       || SECTION_SIZE (section, segment) > 0				\
+       || section_size (section, segment) > 0				\
        || (segment->p_paddr						\
-	   ? segment->p_paddr != section->lma				\
-	   : segment->p_vaddr != section->vma)				\
-       || (strcmp (bfd_section_name (section), ".dynamic") == 0))	\
+	   ? segment->p_paddr != section->lma * (opb)			\
+	   : segment->p_vaddr != section->vma * (opb))			\
+       || (streq (bfd_section_name (section), ".dynamic")))		\
    && (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, opb, paddr_valid)	\
+  (IS_SECTION_IN_INPUT_SEGMENT (section, segment, opb, paddr_valid)	\
    && section->output_section != NULL)
 
   /* Returns TRUE iff seg1 starts after the end of seg2.  */
 #define SEGMENT_AFTER_SEGMENT(seg1, seg2, field)			\
-  (seg1->field >= SEGMENT_END (seg2, seg2->field))
+  (seg1->field >= segment_end (seg2, seg2->field))
 
   /* Returns TRUE iff seg1 and seg2 overlap. Segments overlap iff both
      their VMA address ranges and their LMA address ranges overlap.
@@ -6906,21 +7554,26 @@ rewrite_elf_program_header (bfd *ibfd, b
    && !(SEGMENT_AFTER_SEGMENT (seg1, seg2, p_paddr)			\
 	|| SEGMENT_AFTER_SEGMENT (seg2, seg1, p_paddr)))
 
-  /* Initialise the segment mark field.  */
+  /* Initialise the segment mark field, and discard stupid alignment.  */
   for (section = ibfd->sections; section != NULL; section = section->next)
-    section->segment_mark = FALSE;
+    {
+      asection *o = section->output_section;
+      if (o != NULL && o->alignment_power >= (sizeof (bfd_vma) * 8) - 1)
+	o->alignment_power = 0;
+      section->segment_mark = false;
+    }
 
   /* The Solaris linker creates program headers in which all the
      p_paddr fields are zero.  When we try to objcopy or strip such a
      file, we get confused.  Check for this case, and if we find it
      don't set the p_paddr_valid fields.  */
-  p_paddr_valid = FALSE;
+  p_paddr_valid = false;
   for (i = 0, segment = elf_tdata (ibfd)->phdr;
        i < num_segments;
        i++, segment++)
     if (segment->p_paddr != 0)
       {
-	p_paddr_valid = TRUE;
+	p_paddr_valid = true;
 	break;
       }
 
@@ -6941,7 +7594,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;
 	    }
 
@@ -6967,8 +7620,8 @@ rewrite_elf_program_header (bfd *ibfd, b
 	    {
 	      /* Extend SEGMENT2 to include SEGMENT and then delete
 		 SEGMENT.  */
-	      extra_length = (SEGMENT_END (segment, segment->p_vaddr)
-			      - SEGMENT_END (segment2, segment2->p_vaddr));
+	      extra_length = (segment_end (segment, segment->p_vaddr)
+			      - segment_end (segment2, segment2->p_vaddr));
 
 	      if (extra_length > 0)
 		{
@@ -6987,8 +7640,8 @@ rewrite_elf_program_header (bfd *ibfd, b
 	    {
 	      /* Extend SEGMENT to include SEGMENT2 and then delete
 		 SEGMENT2.  */
-	      extra_length = (SEGMENT_END (segment2, segment2->p_vaddr)
-			      - SEGMENT_END (segment, segment->p_vaddr));
+	      extra_length = (segment_end (segment2, segment2->p_vaddr)
+			      - segment_end (segment, segment->p_vaddr));
 
 	      if (extra_length > 0)
 		{
@@ -7013,7 +7666,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 +7680,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, opb, p_paddr_valid))
 	    {
 	      if (first_section == NULL)
 		first_section = section;
@@ -7039,10 +7692,10 @@ 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;
+	return false;
 
       /* Initialise the fields of the segment map.  Default to
 	 using the physical address of the segment in the input BFD.  */
@@ -7051,6 +7704,17 @@ rewrite_elf_program_header (bfd *ibfd, b
       map->p_flags = segment->p_flags;
       map->p_flags_valid = 1;
 
+      if (map->p_type == PT_LOAD
+	  && (ibfd->flags & D_PAGED) != 0
+	  && maxpagesize > 1
+	  && segment->p_align > 1)
+	{
+	  map->p_align = segment->p_align;
+	  if (segment->p_align > maxpagesize)
+	    map->p_align = maxpagesize;
+	  map->p_align_valid = 1;
+	}
+
       /* If the first section in the input segment is removed, there is
 	 no need to preserve segment physical address in the corresponding
 	 output segment.  */
@@ -7075,7 +7739,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 		     + iehdr->e_phnum * iehdr->e_phentsize)));
 
 	  if (segment->p_type == PT_LOAD && map->includes_phdrs)
-	    phdr_included = TRUE;
+	    phdr_included = true;
 	}
 
       if (section_count == 0)
@@ -7084,10 +7748,12 @@ rewrite_elf_program_header (bfd *ibfd, b
 	     no sections, but ordinary, loadable segments should contain
 	     something.  They are allowed by the ELF spec however, so only
 	     a warning is produced.
+	     Don't warn if an empty PT_LOAD contains the program headers.
 	     There is however the valid use case of embedded systems which
 	     have segments with p_filesz of 0 and a p_memsz > 0 to initialize
 	     flash memory with zeros.  No warning is shown for that case.  */
 	  if (segment->p_type == PT_LOAD
+	      && !map->includes_phdrs
 	      && (segment->p_filesz > 0 || segment->p_memsz == 0))
 	    /* xgettext:c-format */
 	    _bfd_error_handler
@@ -7095,7 +7761,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,9 +7797,10 @@ 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;
+	return false;
 
       /* Step One: Scan for segment vs section LMA conflicts.
 	 Also add the sections to the section array allocated above.
@@ -7149,7 +7816,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, opb, p_paddr_valid))
 	    {
 	      output_section = section->output_section;
 
@@ -7170,16 +7837,15 @@ 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)
-		  || IS_COREFILE_NOTE (segment, section)
-		  || (bed->want_p_paddr_set_to_zero
-		      && IS_CONTAINED_BY_VMA (output_section, segment)))
+	      if (is_contained_by (output_section, segment, map->p_paddr,
+				   0, opb, false)
+		  || is_note (section, segment))
 		{
 		  if (matching_lma == NULL
 		      || output_section->lma < matching_lma->lma)
@@ -7223,7 +7889,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 +7904,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 +7932,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,8 +7961,9 @@ rewrite_elf_program_header (bfd *ibfd, b
 
 	      BFD_ASSERT (output_section != NULL);
 
-	      if (IS_CONTAINED_BY_LMA (output_section, segment, map->p_paddr)
-		  || IS_COREFILE_NOTE (segment, section))
+	      if (is_contained_by (output_section, segment, map->p_paddr,
+				   0, opb, false)
+		  || is_note (section, segment))
 		{
 		  if (map->count == 0)
 		    {
@@ -7308,8 +7976,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
@@ -7338,7 +8006,7 @@ rewrite_elf_program_header (bfd *ibfd, b
 		  ++isec;
 		  sections[j] = NULL;
 		  if (segment->p_type == PT_LOAD)
-		    section->segment_mark = TRUE;
+		    section->segment_mark = true;
 		}
 	      else if (suggested_lma == NULL)
 		suggested_lma = output_section;
@@ -7346,14 +8014,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,12 +8028,12 @@ 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)
 		{
 		  free (sections);
-		  return FALSE;
+		  return false;
 		}
 
 	      /* Initialise the fields of the segment map.  Set the physical
@@ -7380,11 +8043,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);
 
@@ -7417,23 +8086,51 @@ rewrite_elf_program_header (bfd *ibfd, b
 	  }
     }
 
-#undef SEGMENT_END
-#undef SECTION_SIZE
-#undef IS_CONTAINED_BY_VMA
-#undef IS_CONTAINED_BY_LMA
-#undef IS_NOTE
-#undef IS_COREFILE_NOTE
 #undef IS_SOLARIS_PT_INTERP
 #undef IS_SECTION_IN_INPUT_SEGMENT
 #undef INCLUDE_SECTION_IN_SEGMENT
 #undef SEGMENT_AFTER_SEGMENT
 #undef SEGMENT_OVERLAPS
-  return TRUE;
+  return true;
+}
+
+/* Return true if p_align in the ELF program header in ABFD is valid.  */
+
+static bool
+elf_is_p_align_valid (bfd *abfd)
+{
+  unsigned int i;
+  Elf_Internal_Phdr *segment;
+  unsigned int num_segments;
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  bfd_size_type maxpagesize = bed->maxpagesize;
+  bfd_size_type p_align = bed->p_align;
+
+  /* Return true if the default p_align value isn't set or the maximum
+     page size is the same as the minimum page size.  */
+  if (p_align == 0 || maxpagesize == bed->minpagesize)
+    return true;
+
+  /* When the default p_align value is set, p_align may be set to the
+     default p_align value while segments are aligned to the maximum
+     page size.  In this case, the input p_align will be ignored and
+     the maximum page size will be used to align the output segments.  */
+  segment = elf_tdata (abfd)->phdr;
+  num_segments = elf_elfheader (abfd)->e_phnum;
+  for (i = 0; i < num_segments; i++, segment++)
+    if (segment->p_type == PT_LOAD
+	&& (segment->p_align != p_align
+	    || vma_page_aligned_bias (segment->p_vaddr,
+				      segment->p_offset,
+				      maxpagesize) != 0))
+      return true;
+
+  return false;
 }
 
 /* Copy ELF program header information.  */
 
-static bfd_boolean
+static bool
 copy_elf_program_header (bfd *ibfd, bfd *obfd)
 {
   Elf_Internal_Ehdr *iehdr;
@@ -7443,8 +8140,10 @@ copy_elf_program_header (bfd *ibfd, bfd
   Elf_Internal_Phdr *segment;
   unsigned int i;
   unsigned int num_segments;
-  bfd_boolean phdr_included = FALSE;
-  bfd_boolean p_paddr_valid;
+  bool phdr_included = false;
+  bool p_paddr_valid;
+  bool p_palign_valid;
+  unsigned int opb = bfd_octets_per_byte (ibfd, NULL);
 
   iehdr = elf_elfheader (ibfd);
 
@@ -7453,24 +8152,26 @@ copy_elf_program_header (bfd *ibfd, bfd
 
   /* If all the segment p_paddr fields are zero, don't set
      map->p_paddr_valid.  */
-  p_paddr_valid = FALSE;
+  p_paddr_valid = false;
   num_segments = elf_elfheader (ibfd)->e_phnum;
   for (i = 0, segment = elf_tdata (ibfd)->phdr;
        i < num_segments;
        i++, segment++)
     if (segment->p_paddr != 0)
       {
-	p_paddr_valid = TRUE;
+	p_paddr_valid = true;
 	break;
       }
 
+  p_palign_valid = elf_is_p_align_valid (ibfd);
+
   for (i = 0, segment = elf_tdata (ibfd)->phdr;
        i < num_segments;
        i++, segment++)
     {
       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,10 +8193,10 @@ 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;
+	return false;
 
       /* Initialize the fields of the output segment map with the
 	 input segment.  */
@@ -7506,7 +8207,9 @@ copy_elf_program_header (bfd *ibfd, bfd
       map->p_paddr = segment->p_paddr;
       map->p_paddr_valid = p_paddr_valid;
       map->p_align = segment->p_align;
-      map->p_align_valid = 1;
+      /* Keep p_align of PT_GNU_STACK for stack alignment.  */
+      map->p_align_valid = (map->p_type == PT_GNU_STACK
+			    || p_palign_valid);
       map->p_vaddr_offset = 0;
 
       if (map->p_type == PT_GNU_RELRO
@@ -7537,7 +8240,7 @@ copy_elf_program_header (bfd *ibfd, bfd
 		     + iehdr->e_phnum * iehdr->e_phentsize)));
 
 	  if (segment->p_type == PT_LOAD && map->includes_phdrs)
-	    phdr_included = TRUE;
+	    phdr_included = true;
 	}
 
       lowest_section = NULL;
@@ -7570,8 +8273,8 @@ 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)
-			map->p_paddr_valid = FALSE;
+		      if (section->lma * opb - segment->p_paddr != seg_off)
+			map->p_paddr_valid = false;
 		    }
 		  if (isec == section_count)
 		    break;
@@ -7580,7 +8283,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 +8293,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));
 	}
 
@@ -7600,28 +8303,32 @@ copy_elf_program_header (bfd *ibfd, bfd
     }
 
   elf_seg_map (obfd) = map_first;
-  return TRUE;
+  return true;
 }
 
 /* Copy private BFD data.  This copies or rewrites ELF program header
    information.  */
 
-static bfd_boolean
+static bool
 copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
+  bfd_vma maxpagesize;
+
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   if (elf_tdata (ibfd)->phdr == NULL)
-    return TRUE;
+    return true;
 
   if (ibfd->xvec == obfd->xvec)
     {
       /* Check to see if any sections in the input BFD
 	 covered by ELF program header have changed.  */
       Elf_Internal_Phdr *segment;
-      asection *section, *osec;
+      asection * section;
+      asection * osec;
+      asection * prev;
       unsigned int i, num_segments;
       Elf_Internal_Shdr *this_hdr;
       const struct elf_backend_data *bed;
@@ -7635,7 +8342,7 @@ copy_private_bfd_data (bfd *ibfd, bfd *o
       /* Initialize the segment mark field.  */
       for (section = obfd->sections; section != NULL;
 	   section = section->next)
-	section->segment_mark = FALSE;
+	section->segment_mark = false;
 
       num_segments = elf_elfheader (ibfd)->e_phnum;
       for (i = 0, segment = elf_tdata (ibfd)->phdr;
@@ -7648,17 +8355,18 @@ copy_private_bfd_data (bfd *ibfd, bfd *o
 	     map in this case.  */
 	  if (segment->p_paddr == 0
 	      && segment->p_memsz == 0
-	      && (segment->p_type == PT_INTERP || segment->p_type == PT_DYNAMIC))
+	      && (segment->p_type == PT_INTERP
+		  || segment->p_type == PT_DYNAMIC))
 	    goto rewrite;
 
-	  for (section = ibfd->sections;
+	  for (section = ibfd->sections, prev = NULL;
 	       section != NULL; section = section->next)
 	    {
 	      /* We mark the output section so that we know it comes
 		 from the input BFD.  */
 	      osec = section->output_section;
 	      if (osec)
-		osec->segment_mark = TRUE;
+		osec->segment_mark = true;
 
 	      /* Check if this section is covered by the segment.  */
 	      this_hdr = &(elf_section_data(section)->this_hdr);
@@ -7674,6 +8382,17 @@ copy_private_bfd_data (bfd *ibfd, bfd *o
 		      || section->rawsize != osec->rawsize
 		      || section->alignment_power != osec->alignment_power)
 		    goto rewrite;
+
+		  /* PR 31450: If this is an allocated section then make sure
+		     that this section's vma to lma relationship is the same
+		     as previous (allocated) section's.  */
+		  if (prev != NULL
+		      && section->flags & SEC_ALLOC
+		      && section->lma - section->vma != prev->lma - prev->vma)
+		    goto rewrite;
+
+		  if (section->flags & SEC_ALLOC)
+		    prev = section;
 		}
 	    }
 	}
@@ -7686,13 +8405,14 @@ copy_private_bfd_data (bfd *ibfd, bfd *o
 	  if (!section->segment_mark)
 	    goto rewrite;
 	  else
-	    section->segment_mark = FALSE;
+	    section->segment_mark = false;
 	}
 
       return copy_elf_program_header (ibfd, obfd);
     }
 
-rewrite:
+ rewrite:
+  maxpagesize = 0;
   if (ibfd->xvec == obfd->xvec)
     {
       /* When rewriting program header, set the output maxpagesize to
@@ -7700,7 +8420,6 @@ rewrite:
       Elf_Internal_Phdr *segment;
       unsigned int i;
       unsigned int num_segments = elf_elfheader (ibfd)->e_phnum;
-      bfd_vma maxpagesize = 0;
 
       for (i = 0, segment = elf_tdata (ibfd)->phdr;
 	   i < num_segments;
@@ -7717,38 +8436,58 @@ rewrite:
 	    else
 	      maxpagesize = segment->p_align;
 	  }
-
-      if (maxpagesize != get_elf_backend_data (obfd)->maxpagesize)
-	bfd_emul_set_maxpagesize (bfd_get_target (obfd), maxpagesize);
     }
+  if (maxpagesize == 0)
+    maxpagesize = get_elf_backend_data (obfd)->maxpagesize;
 
-  return rewrite_elf_program_header (ibfd, obfd);
+  return rewrite_elf_program_header (ibfd, obfd, maxpagesize);
 }
 
-/* Initialize private output section information from input section.  */
+/* Copy private section information from input to output.  This function
+   is called both by objcopy where LINK_INFO is NULL, and ld where
+   LINK_INFO is non-NULL in the usual case but NULL for a special case
+   when dealing with LTO IR or cloning output sections.  */
 
-bfd_boolean
-_bfd_elf_init_private_section_data (bfd *ibfd,
+bool
+_bfd_elf_copy_private_section_data (bfd *ibfd,
 				    asection *isec,
 				    bfd *obfd,
 				    asection *osec,
 				    struct bfd_link_info *link_info)
-
 {
-  Elf_Internal_Shdr *ihdr, *ohdr;
-  bfd_boolean final_link = (link_info != NULL
-			    && !bfd_link_relocatable (link_info));
-
   if (ibfd->xvec->flavour != bfd_target_elf_flavour
       || obfd->xvec->flavour != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
-  BFD_ASSERT (elf_section_data (osec) != NULL);
+  Elf_Internal_Shdr *ihdr = &elf_section_data (isec)->this_hdr;
+  Elf_Internal_Shdr *ohdr = &elf_section_data (osec)->this_hdr;
+  if (link_info == NULL)
+    {
+      ohdr->sh_entsize = ihdr->sh_entsize;
 
-  /* 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 (ihdr->sh_type == SHT_SYMTAB
+	  || ihdr->sh_type == SHT_DYNSYM
+	  || ihdr->sh_type == SHT_GNU_verneed
+	  || ihdr->sh_type == SHT_GNU_verdef)
+	ohdr->sh_info = ihdr->sh_info;
+    }
+
+  /* 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.  */
+  bool final_link = (link_info != NULL
+		     && !bfd_link_relocatable (link_info));
   if (elf_section_type (osec) == SHT_NULL
       && (osec->flags == isec->flags
 	  || (final_link
@@ -7756,9 +8495,28 @@ _bfd_elf_init_private_section_data (bfd
 		  & ~(SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_RELOC)) == 0)))
     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);
+  /* Like for type, retain flags for objcopy (yet unlike for type, don't do so
+     for relocatable link).  Same heuristic as there: If the BFD section flags
+     are different, assume --set-section-flags is in use for the section.
+
+     FIXME: Is this correct for all OS/PROC specific flags?  */
+  if (link_info != NULL || osec->flags != isec->flags)
+    elf_section_flags (osec) &= (SHF_MASKOS | SHF_MASKPROC);
+  else
+    {
+      /* Clear only flags which are set below or elsewhere.  */
+      elf_section_flags (osec) &= ~(SHF_WRITE | SHF_ALLOC | SHF_EXECINSTR
+				    | SHF_MERGE | SHF_STRINGS | SHF_LINK_ORDER
+				    | SHF_INFO_LINK | SHF_GROUP | SHF_TLS
+				    | SHF_COMPRESSED);
+      if (elf_section_flags (osec) & ~(SHF_MASKOS | SHF_MASKPROC))
+	_bfd_error_handler
+	  (_("%pB:%pA: warning: retaining unknown section flag(s) %#" PRIx64),
+	   ibfd, isec,
+	   (uint64_t) (elf_section_flags (osec)
+		       & ~(SHF_MASKOS | SHF_MASKPROC)));
+    }
 
   /* Copy sh_info from input for mbind section.  */
   if ((elf_tdata (ibfd)->has_gnu_osabi & elf_gnu_osabi_mbind) != 0
@@ -7786,51 +8544,18 @@ _bfd_elf_init_private_section_data (bfd
     elf_section_flags (osec) |= (elf_section_flags (isec)
 				 & SHF_COMPRESSED);
 
-  ihdr = &elf_section_data (isec)->this_hdr;
-
   /* We need to handle elf_linked_to_section for SHF_LINK_ORDER. We
      don't use the output section of the linked-to section since it
      may be NULL at this point.  */
   if ((ihdr->sh_flags & SHF_LINK_ORDER) != 0)
     {
-      ohdr = &elf_section_data (osec)->this_hdr;
       ohdr->sh_flags |= SHF_LINK_ORDER;
       elf_linked_to_section (osec) = elf_linked_to_section (isec);
     }
 
   osec->use_rela_p = isec->use_rela_p;
 
-  return TRUE;
-}
-
-/* Copy private section information.  This copies over the entsize
-   field, and sometimes the info field.  */
-
-bfd_boolean
-_bfd_elf_copy_private_section_data (bfd *ibfd,
-				    asection *isec,
-				    bfd *obfd,
-				    asection *osec)
-{
-  Elf_Internal_Shdr *ihdr, *ohdr;
-
-  if (ibfd->xvec->flavour != bfd_target_elf_flavour
-      || obfd->xvec->flavour != bfd_target_elf_flavour)
-    return TRUE;
-
-  ihdr = &elf_section_data (isec)->this_hdr;
-  ohdr = &elf_section_data (osec)->this_hdr;
-
-  ohdr->sh_entsize = ihdr->sh_entsize;
-
-  if (ihdr->sh_type == SHT_SYMTAB
-      || ihdr->sh_type == SHT_DYNSYM
-      || ihdr->sh_type == SHT_GNU_verneed
-      || ihdr->sh_type == SHT_GNU_verdef)
-    ohdr->sh_info = ihdr->sh_info;
-
-  return _bfd_elf_init_private_section_data (ibfd, isec, obfd, osec,
-					     NULL);
+  return true;
 }
 
 /* Look at all the SHT_GROUP sections in IBFD, making any adjustments
@@ -7840,7 +8565,7 @@ _bfd_elf_copy_private_section_data (bfd
    function is called from objcopy, bfd_abs_section_ptr when called
    from the linker.  */
 
-bfd_boolean
+bool
 _bfd_elf_fixup_group_sections (bfd *ibfd, asection *discarded)
 {
   asection *isec;
@@ -7863,19 +8588,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)
@@ -7896,7 +8636,7 @@ _bfd_elf_fixup_group_sections (bfd *ibfd
 		    isec->flags |= SEC_EXCLUDE;
 		  }
 	      }
-	    else
+	    else if (isec->output_section != NULL)
 	      {
 		/* Adjust the output section size when called from
 		   objcopy. */
@@ -7910,17 +8650,17 @@ _bfd_elf_fixup_group_sections (bfd *ibfd
 	  }
       }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy private header information.  */
 
-bfd_boolean
+bool
 _bfd_elf_copy_private_header_data (bfd *ibfd, bfd *obfd)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   /* Copy over private BFD data if it has not already been copied.
      This must be done here, rather than in the copy_private_bfd_data
@@ -7930,7 +8670,7 @@ _bfd_elf_copy_private_header_data (bfd *
   if (elf_seg_map (obfd) == NULL && elf_tdata (ibfd)->phdr != NULL)
     {
       if (! copy_private_bfd_data (ibfd, obfd))
-	return FALSE;
+	return false;
     }
 
   return _bfd_elf_fixup_group_sections (ibfd, NULL);
@@ -7948,7 +8688,7 @@ _bfd_elf_copy_private_header_data (bfd *
 #define MAP_SHSTRTAB  (SHN_HIOS + 4)
 #define MAP_SYM_SHNDX (SHN_HIOS + 5)
 
-bfd_boolean
+bool
 _bfd_elf_copy_private_symbol_data (bfd *ibfd,
 				   asymbol *isymarg,
 				   bfd *obfd,
@@ -7958,10 +8698,10 @@ _bfd_elf_copy_private_symbol_data (bfd *
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
-  isym = elf_symbol_from (ibfd, isymarg);
-  osym = elf_symbol_from (obfd, osymarg);
+  isym = elf_symbol_from (isymarg);
+  osym = elf_symbol_from (osymarg);
 
   if (isym != NULL
       && isym->internal_elf_sym.st_shndx != 0
@@ -7975,27 +8715,28 @@ _bfd_elf_copy_private_symbol_data (bfd *
 	shndx = MAP_ONESYMTAB;
       else if (shndx == elf_dynsymtab (ibfd))
 	shndx = MAP_DYNSYMTAB;
-      else if (shndx == elf_strtab_sec (ibfd))
+      else if (shndx == elf_elfsections (ibfd)[elf_onesymtab (ibfd)]->sh_link)
 	shndx = MAP_STRTAB;
-      else if (shndx == elf_shstrtab_sec (ibfd))
+      else if (shndx == elf_elfheader (ibfd)->e_shstrndx)
 	shndx = MAP_SHSTRTAB;
       else if (find_section_in_list (shndx, elf_symtab_shndx_list (ibfd)))
 	shndx = MAP_SYM_SHNDX;
       osym->internal_elf_sym.st_shndx = shndx;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Swap out the symbols.  */
 
-static bfd_boolean
+static bool
 swap_out_syms (bfd *abfd,
 	       struct elf_strtab_hash **sttp,
-	       int relocatable_p)
+	       int relocatable_p,
+	       struct bfd_link_info *info)
 {
   const struct elf_backend_data *bed;
-  int symcount;
+  unsigned int symcount;
   asymbol **syms;
   struct elf_strtab_hash *stt;
   Elf_Internal_Shdr *symtab_hdr;
@@ -8005,19 +8746,18 @@ swap_out_syms (bfd *abfd,
   bfd_byte *outbound_syms;
   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;
-  bfd_boolean name_local_sections;
+  size_t amt;
+  bool name_local_sections;
 
   if (!elf_map_symbols (abfd, &num_locals))
-    return FALSE;
+    return false;
 
   /* Dump out the symtabs.  */
   stt = _bfd_elf_strtab_init ();
   if (stt == NULL)
-    return FALSE;
+    return false;
 
   bed = get_elf_backend_data (abfd);
   symcount = bfd_get_symcount (abfd);
@@ -8032,37 +8772,38 @@ 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;
+      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_malloc (amt)) == NULL)
     {
-error_return:
-      _bfd_elf_strtab_free (stt);
+    error_no_mem:
+      bfd_set_error (bfd_error_no_memory);
+    error_return:
       free (symstrtab);
-      return FALSE;
+      _bfd_elf_strtab_free (stt);
+      return false;
     }
   symtab_hdr->contents = outbound_syms;
   outbound_syms_index = 0;
 
   outbound_shndx = NULL;
-  outbound_shndx_index = 0;
 
   if (elf_symtab_shndx_list (abfd))
     {
       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;
 
@@ -8086,12 +8827,9 @@ error_return:
     sym.st_other = 0;
     sym.st_shndx = SHN_UNDEF;
     sym.st_target_internal = 0;
-    symstrtab[0].sym = sym;
-    symstrtab[0].dest_index = outbound_syms_index;
-    symstrtab[0].destshndx_index = outbound_shndx_index;
+    symstrtab[outbound_syms_index].sym = sym;
+    symstrtab[outbound_syms_index].dest_index = outbound_syms_index;
     outbound_syms_index++;
-    if (outbound_shndx != NULL)
-      outbound_shndx_index++;
   }
 
   name_local_sections
@@ -8099,35 +8837,32 @@ error_return:
        && bed->elf_backend_name_local_section_symbols (abfd));
 
   syms = bfd_get_outsymbols (abfd);
-  for (idx = 0; idx < symcount;)
+  for (idx = 0; idx < symcount; idx++)
     {
       Elf_Internal_Sym sym;
-      bfd_vma value = syms[idx]->value;
-      elf_symbol_type *type_ptr;
-      flagword flags = syms[idx]->flags;
-      int type;
 
+      flagword flags = syms[idx]->flags;
       if (!name_local_sections
 	  && (flags & (BSF_SECTION_SYM | BSF_GLOBAL)) == BSF_SECTION_SYM)
 	{
 	  /* Local section symbols have no name.  */
-	  sym.st_name = (unsigned long) -1;
+	  sym.st_name = 0;
 	}
       else
 	{
 	  /* Call _bfd_elf_strtab_offset after _bfd_elf_strtab_finalize
 	     to get the final offset for st_name.  */
-	  sym.st_name
-	    = (unsigned long) _bfd_elf_strtab_add (stt, syms[idx]->name,
-						   FALSE);
-	  if (sym.st_name == (unsigned long) -1)
+	  size_t stridx = _bfd_elf_strtab_add (stt, syms[idx]->name, false);
+	  if (stridx == (size_t) -1)
 	    goto error_return;
+	  sym.st_name = stridx;
 	}
 
-      type_ptr = elf_symbol_from (abfd, syms[idx]);
+      bfd_vma value = syms[idx]->value;
+      elf_symbol_type *type_ptr = elf_symbol_from (syms[idx]);
+      asection *sec = syms[idx]->section;
 
-      if ((flags & BSF_SECTION_SYM) == 0
-	  && bfd_is_com_section (syms[idx]->section))
+      if ((flags & BSF_SECTION_SYM) == 0 && bfd_is_com_section (sec))
 	{
 	  /* ELF common symbols put the alignment into the `value' field,
 	     and the size into the `size' field.  This is backwards from
@@ -8138,12 +8873,10 @@ error_return:
 	    sym.st_value = value >= 16 ? 16 : (1 << bfd_log2 (value));
 	  else
 	    sym.st_value = type_ptr->internal_elf_sym.st_value;
-	  sym.st_shndx = _bfd_elf_section_from_bfd_section
-	    (abfd, syms[idx]->section);
+	  sym.st_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
 	}
       else
 	{
-	  asection *sec = syms[idx]->section;
 	  unsigned int shndx;
 
 	  if (sec->output_section)
@@ -8184,9 +8917,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
@@ -8224,6 +8974,7 @@ error_return:
 	  sym.st_shndx = shndx;
 	}
 
+      int type;
       if ((flags & BSF_THREAD_LOCAL) != 0)
 	type = STT_TLS;
       else if ((flags & BSF_GNU_INDIRECT_FUNCTION) != 0)
@@ -8303,35 +9054,34 @@ error_return:
 	  sym.st_target_internal = 0;
 	}
 
-      idx++;
-      symstrtab[idx].sym = sym;
-      symstrtab[idx].dest_index = outbound_syms_index;
-      symstrtab[idx].destshndx_index = outbound_shndx_index;
-
+      symstrtab[outbound_syms_index].sym = sym;
+      symstrtab[outbound_syms_index].dest_index = outbound_syms_index;
       outbound_syms_index++;
-      if (outbound_shndx != NULL)
-	outbound_shndx_index++;
     }
 
   /* Finalize the .strtab section.  */
   _bfd_elf_strtab_finalize (stt);
 
   /* Swap out the .strtab section.  */
-  for (idx = 0; idx <= symcount; idx++)
+  for (idx = 0; idx < outbound_syms_index; idx++)
     {
       struct elf_sym_strtab *elfsym = &symstrtab[idx];
-      if (elfsym->sym.st_name == (unsigned long) -1)
-	elfsym->sym.st_name = 0;
-      else
+      if (elfsym->sym.st_name != 0)
 	elfsym->sym.st_name = _bfd_elf_strtab_offset (stt,
 						      elfsym->sym.st_name);
+      if (info && info->callbacks->ctf_new_symbol)
+	info->callbacks->ctf_new_symbol (elfsym->dest_index,
+					 &elfsym->sym);
+
+      /* Inform the linker of the addition of this symbol.  */
+
       bed->s->swap_symbol_out (abfd, &elfsym->sym,
 			       (outbound_syms
 				+ (elfsym->dest_index
 				   * bed->s->sizeof_sym)),
-			       (outbound_shndx
-				+ (elfsym->destshndx_index
-				   * sizeof (Elf_External_Sym_Shndx))));
+			       NPTR_ADD (outbound_shndx,
+					 (elfsym->dest_index
+					  * sizeof (Elf_External_Sym_Shndx))));
     }
   free (symstrtab);
 
@@ -8345,7 +9095,7 @@ error_return:
   symstrtab_hdr->sh_info = 0;
   symstrtab_hdr->sh_addralign = 1;
 
-  return TRUE;
+  return true;
 }
 
 /* Return the number of bytes required to hold the symtab vector.
@@ -8362,14 +9112,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;
 }
@@ -8383,27 +9143,63 @@ _bfd_elf_get_dynamic_symtab_upper_bound
 
   if (elf_dynsymtab (abfd) == 0)
     {
+      /* Check if there is dynamic symbol table.  */
+      symcount = elf_tdata (abfd)->dt_symtab_count;
+      if (symcount)
+	goto compute_symtab_size;
+
       bfd_set_error (bfd_error_invalid_operation);
       return -1;
     }
 
   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 *);
+
+ compute_symtab_size:
+  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.  */
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+
+      if (filesize != 0)
+	{
+	  struct bfd_elf_section_data *d = elf_section_data (asect);
+	  bfd_size_type rel_size = d->rel.hdr ? d->rel.hdr->sh_size : 0;
+	  bfd_size_type rela_size = d->rela.hdr ? d->rela.hdr->sh_size : 0;
+
+	  if (rel_size + rela_size > filesize
+	      || rel_size + rela_size < rel_size)
+	    {
+	      bfd_set_error (bfd_error_file_truncated);
+	      return -1;
+	    }
+	}
+    }
+
 #if SIZEOF_LONG == SIZEOF_INT
   if (asect->reloc_count >= LONG_MAX / sizeof (arelent *))
     {
@@ -8411,7 +9207,7 @@ _bfd_elf_get_reloc_upper_bound (bfd *abf
       return -1;
     }
 #endif
-  return (asect->reloc_count + 1) * sizeof (arelent *);
+  return (asect->reloc_count + 1L) * sizeof (arelent *);
 }
 
 /* Canonicalize the relocs.  */
@@ -8426,7 +9222,7 @@ _bfd_elf_canonicalize_reloc (bfd *abfd,
   unsigned int i;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
-  if (! bed->s->slurp_reloc_table (abfd, section, symbols, FALSE))
+  if (! bed->s->slurp_reloc_table (abfd, section, symbols, false))
     return -1;
 
   tblptr = section->relocation;
@@ -8442,7 +9238,7 @@ long
 _bfd_elf_canonicalize_symtab (bfd *abfd, asymbol **allocation)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-  long symcount = bed->s->slurp_symbol_table (abfd, allocation, FALSE);
+  long symcount = bed->s->slurp_symbol_table (abfd, allocation, false);
 
   if (symcount >= 0)
     abfd->symcount = symcount;
@@ -8454,7 +9250,7 @@ _bfd_elf_canonicalize_dynamic_symtab (bf
 				      asymbol **allocation)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-  long symcount = bed->s->slurp_symbol_table (abfd, allocation, TRUE);
+  long symcount = bed->s->slurp_symbol_table (abfd, allocation, true);
 
   if (symcount >= 0)
     abfd->dynsymcount = symcount;
@@ -8469,7 +9265,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,18 +9275,36 @@ _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))
+	    || elf_section_data (s)->this_hdr.sh_type == SHT_RELA)
+	&& (elf_section_data (s)->this_hdr.sh_flags & SHF_COMPRESSED) == 0)
       {
-	count += s->size / elf_section_data (s)->this_hdr.sh_entsize;
+	ext_rel_size += elf_section_data (s)->this_hdr.sh_size;
+	if (ext_rel_size < elf_section_data (s)->this_hdr.sh_size)
+	  {
+	    bfd_set_error (bfd_error_file_truncated);
+	    return -1;
+	  }
+	count += NUM_SHDR_ENTRIES (&elf_section_data (s)->this_hdr);
 	if (count > LONG_MAX / sizeof (arelent *))
 	  {
 	    bfd_set_error (bfd_error_file_too_big);
 	    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 *);
 }
 
@@ -8507,7 +9321,7 @@ _bfd_elf_canonicalize_dynamic_reloc (bfd
 				     arelent **storage,
 				     asymbol **syms)
 {
-  bfd_boolean (*slurp_relocs) (bfd *, asection *, asymbol **, bfd_boolean);
+  bool (*slurp_relocs) (bfd *, asection *, asymbol **, bool);
   asection *s;
   long ret;
 
@@ -8523,14 +9337,15 @@ _bfd_elf_canonicalize_dynamic_reloc (bfd
     {
       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))
+	      || elf_section_data (s)->this_hdr.sh_type == SHT_RELA)
+	  && (elf_section_data (s)->this_hdr.sh_flags & SHF_COMPRESSED) == 0)
 	{
 	  arelent *p;
 	  long count, i;
 
-	  if (! (*slurp_relocs) (abfd, s, syms, TRUE))
+	  if (! (*slurp_relocs) (abfd, s, syms, true))
 	    return -1;
-	  count = s->size / elf_section_data (s)->this_hdr.sh_entsize;
+	  count = NUM_SHDR_ENTRIES (&elf_section_data (s)->this_hdr);
 	  p = s->relocation;
 	  for (i = 0; i < count; i++)
 	    *storage++ = p++;
@@ -8545,67 +9360,79 @@ _bfd_elf_canonicalize_dynamic_reloc (bfd
 
 /* Read in the version information.  */
 
-bfd_boolean
-_bfd_elf_slurp_version_tables (bfd *abfd, bfd_boolean default_imported_symver)
+bool
+_bfd_elf_slurp_version_tables (bfd *abfd, bool default_imported_symver)
 {
   bfd_byte *contents = NULL;
   unsigned int freeidx = 0;
+  size_t amt;
+  void *contents_addr = NULL;
+  size_t contents_size = 0;
 
-  if (elf_dynverref (abfd) != 0)
+  if (elf_dynverref (abfd) != 0 || elf_tdata (abfd)->dt_verneed != NULL)
     {
       Elf_Internal_Shdr *hdr;
       Elf_External_Verneed *everneed;
       Elf_Internal_Verneed *iverneed;
       unsigned int i;
       bfd_byte *contents_end;
+      size_t verneed_count;
+      size_t verneed_size;
 
-      hdr = &elf_tdata (abfd)->dynverref_hdr;
-
-      if (hdr->sh_info == 0
-	  || hdr->sh_info > hdr->sh_size / sizeof (Elf_External_Verneed))
+      if (elf_tdata (abfd)->dt_verneed != NULL)
 	{
-error_return_bad_verref:
-	  _bfd_error_handler
-	    (_("%pB: .gnu.version_r invalid entry"), abfd);
-	  bfd_set_error (bfd_error_bad_value);
-error_return_verref:
-	  elf_tdata (abfd)->verref = NULL;
-	  elf_tdata (abfd)->cverrefs = 0;
-	  goto error_return;
+	  hdr = NULL;
+	  contents = elf_tdata (abfd)->dt_verneed;
+	  verneed_count = elf_tdata (abfd)->dt_verneed_count;
+	  verneed_size = verneed_count * sizeof (Elf_External_Verneed);
 	}
+      else
+	{
+	  hdr = &elf_tdata (abfd)->dynverref_hdr;
 
-      ufile_ptr filesize = bfd_get_file_size (abfd);
-      if (filesize > 0 && filesize < hdr->sh_size)
+	  if (hdr->sh_info > hdr->sh_size / sizeof (Elf_External_Verneed))
+	    {
+	    error_return_bad_verref:
+	      _bfd_error_handler
+		(_("%pB: .gnu.version_r invalid entry"), abfd);
+	      bfd_set_error (bfd_error_bad_value);
+	    error_return_verref:
+	      elf_tdata (abfd)->verref = NULL;
+	      elf_tdata (abfd)->cverrefs = 0;
+	      goto error_return;
+	    }
+
+	  if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0)
+	    goto error_return_verref;
+	  contents_size = hdr->sh_size;
+	  contents = _bfd_mmap_temporary (abfd, contents_size,
+					  &contents_addr, &contents_size);
+	  if (contents == NULL)
+	    goto error_return_verref;
+
+	  verneed_size = hdr->sh_size;
+	  verneed_count = hdr->sh_info;
+	}
+
+      if (_bfd_mul_overflow (verneed_count,
+			     sizeof (Elf_Internal_Verneed), &amt))
 	{
-	  /* 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);
+	  bfd_set_error (bfd_error_file_too_big);
 	  goto error_return_verref;
 	}
-      contents = (bfd_byte *) bfd_malloc (hdr->sh_size);
-      if (contents == NULL)
+      if (amt == 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)
-	goto error_return_verref;
-
-      elf_tdata (abfd)->verref = (Elf_Internal_Verneed *)
-	bfd_alloc2 (abfd, hdr->sh_info, sizeof (Elf_Internal_Verneed));
-
+      elf_tdata (abfd)->verref = (Elf_Internal_Verneed *) bfd_zalloc (abfd, amt);
       if (elf_tdata (abfd)->verref == NULL)
 	goto error_return_verref;
 
       BFD_ASSERT (sizeof (Elf_External_Verneed)
 		  == sizeof (Elf_External_Vernaux));
-      contents_end = contents + hdr->sh_size - sizeof (Elf_External_Verneed);
+      contents_end = (contents + verneed_size
+		      - sizeof (Elf_External_Verneed));
       everneed = (Elf_External_Verneed *) contents;
       iverneed = elf_tdata (abfd)->verref;
-      for (i = 0; i < hdr->sh_info; i++, iverneed++)
+      for (i = 0; i < verneed_count; i++, iverneed++)
 	{
 	  Elf_External_Vernaux *evernaux;
 	  Elf_Internal_Vernaux *ivernaux;
@@ -8615,9 +9442,20 @@ error_return_verref:
 
 	  iverneed->vn_bfd = abfd;
 
-	  iverneed->vn_filename =
-	    bfd_elf_string_from_elf_section (abfd, hdr->sh_link,
-					     iverneed->vn_file);
+	  if (elf_use_dt_symtab_p (abfd))
+	    {
+	      if (iverneed->vn_file < elf_tdata (abfd)->dt_strsz)
+		iverneed->vn_filename
+		  = elf_tdata (abfd)->dt_strtab + iverneed->vn_file;
+	      else
+		iverneed->vn_filename = NULL;
+	    }
+	  else if (hdr == NULL)
+	    goto error_return_bad_verref;
+	  else
+	    iverneed->vn_filename
+	      = bfd_elf_string_from_elf_section (abfd, hdr->sh_link,
+						 iverneed->vn_file);
 	  if (iverneed->vn_filename == NULL)
 	    goto error_return_bad_verref;
 
@@ -8625,9 +9463,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;
 	    }
@@ -8643,9 +9486,20 @@ error_return_verref:
 	    {
 	      _bfd_elf_swap_vernaux_in (abfd, evernaux, ivernaux);
 
-	      ivernaux->vna_nodename =
-		bfd_elf_string_from_elf_section (abfd, hdr->sh_link,
-						 ivernaux->vna_name);
+	      if (elf_use_dt_symtab_p (abfd))
+		{
+		  if (ivernaux->vna_name < elf_tdata (abfd)->dt_strsz)
+		    ivernaux->vna_nodename
+		      = elf_tdata (abfd)->dt_strtab + ivernaux->vna_name;
+		  else
+		    ivernaux->vna_nodename = NULL;
+		}
+	      else if (hdr == NULL)
+		goto error_return_bad_verref;
+	      else
+		ivernaux->vna_nodename
+		  = bfd_elf_string_from_elf_section (abfd, hdr->sh_link,
+						     ivernaux->vna_name);
 	      if (ivernaux->vna_nodename == NULL)
 		goto error_return_bad_verref;
 
@@ -8672,7 +9526,7 @@ error_return_verref:
 	  iverneed->vn_nextref = NULL;
 	  if (iverneed->vn_next == 0)
 	    break;
-	  if (i + 1 < hdr->sh_info)
+	  if (hdr != NULL && (i + 1 < hdr->sh_info))
 	    iverneed->vn_nextref = iverneed + 1;
 
 	  if (iverneed->vn_next
@@ -8684,11 +9538,13 @@ error_return_verref:
 	}
       elf_tdata (abfd)->cverrefs = i;
 
-      free (contents);
+      if (contents != elf_tdata (abfd)->dt_verneed)
+	_bfd_munmap_temporary (contents_addr, contents_size);
       contents = NULL;
+      contents_addr = NULL;
     }
 
-  if (elf_dynverdef (abfd) != 0)
+  if (elf_dynverdef (abfd) != 0 || elf_tdata (abfd)->dt_verdef != NULL)
     {
       Elf_Internal_Shdr *hdr;
       Elf_External_Verdef *everdef;
@@ -8698,41 +9554,58 @@ error_return_verref:
       unsigned int i;
       unsigned int maxidx;
       bfd_byte *contents_end_def, *contents_end_aux;
+      size_t verdef_count;
+      size_t verdef_size;
 
-      hdr = &elf_tdata (abfd)->dynverdef_hdr;
-
-      if (hdr->sh_info == 0 || hdr->sh_size < sizeof (Elf_External_Verdef))
+      if (elf_tdata (abfd)->dt_verdef != NULL)
 	{
-	error_return_bad_verdef:
-	  _bfd_error_handler
-	    (_("%pB: .gnu.version_d invalid entry"), abfd);
-	  bfd_set_error (bfd_error_bad_value);
-	error_return_verdef:
-	  elf_tdata (abfd)->verdef = NULL;
-	  elf_tdata (abfd)->cverdefs = 0;
-	  goto error_return;
+	  hdr = NULL;
+	  contents = elf_tdata (abfd)->dt_verdef;
+	  verdef_count = elf_tdata (abfd)->dt_verdef_count;
+	  verdef_size = verdef_count * sizeof (Elf_External_Verdef);
 	}
+      else
+	{
+	  hdr = &elf_tdata (abfd)->dynverdef_hdr;
 
-      contents = (bfd_byte *) bfd_malloc (hdr->sh_size);
-      if (contents == NULL)
-	goto error_return_verdef;
-      if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0
-	  || bfd_bread (contents, hdr->sh_size, abfd) != hdr->sh_size)
-	goto error_return_verdef;
-
-      BFD_ASSERT (sizeof (Elf_External_Verdef)
-		  >= sizeof (Elf_External_Verdaux));
-      contents_end_def = contents + hdr->sh_size
-			 - sizeof (Elf_External_Verdef);
-      contents_end_aux = contents + hdr->sh_size
-			 - sizeof (Elf_External_Verdaux);
+	  if (hdr->sh_size < sizeof (Elf_External_Verdef))
+	    {
+	    error_return_bad_verdef:
+	      _bfd_error_handler
+		(_("%pB: .gnu.version_d invalid entry"), abfd);
+	      bfd_set_error (bfd_error_bad_value);
+	    error_return_verdef:
+	      elf_tdata (abfd)->verdef = NULL;
+	      elf_tdata (abfd)->cverdefs = 0;
+	      goto error_return;
+	    }
+
+	  if (bfd_seek (abfd, hdr->sh_offset, SEEK_SET) != 0)
+	    goto error_return_verdef;
+	  contents_size = hdr->sh_size;
+	  contents = _bfd_mmap_temporary (abfd, contents_size,
+					  &contents_addr, &contents_size);
+	  if (contents == NULL)
+	    goto error_return_verdef;
+
+	  BFD_ASSERT (sizeof (Elf_External_Verdef)
+		      >= sizeof (Elf_External_Verdaux));
+
+	  verdef_count = hdr->sh_info;
+	  verdef_size = hdr->sh_size;
+	}
+
+      contents_end_def = (contents + verdef_size
+			  - sizeof (Elf_External_Verdef));
+      contents_end_aux = (contents + verdef_size
+			  - sizeof (Elf_External_Verdaux));
 
       /* We know the number of entries in the section but not the maximum
 	 index.  Therefore we have to run through all entries and find
 	 the maximum.  */
       everdef = (Elf_External_Verdef *) contents;
       maxidx = 0;
-      for (i = 0; i < hdr->sh_info; ++i)
+      for (i = 0; i < verdef_count; ++i)
 	{
 	  _bfd_elf_swap_verdef_in (abfd, everdef, &iverdefmem);
 
@@ -8759,9 +9632,15 @@ error_return_verref:
 	  else
 	    freeidx = ++maxidx;
 	}
+      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_zalloc2 (abfd, maxidx, sizeof (Elf_Internal_Verdef));
+      if (amt == 0)
+	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;
 
@@ -8769,7 +9648,7 @@ error_return_verref:
 
       everdef = (Elf_External_Verdef *) contents;
       iverdefarr = elf_tdata (abfd)->verdef;
-      for (i = 0; i < hdr->sh_info; i++)
+      for (i = 0; i < verdef_count; ++i)
 	{
 	  Elf_External_Verdaux *everdaux;
 	  Elf_Internal_Verdaux *iverdaux;
@@ -8789,9 +9668,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;
 	    }
@@ -8807,9 +9691,18 @@ error_return_verref:
 	    {
 	      _bfd_elf_swap_verdaux_in (abfd, everdaux, iverdaux);
 
-	      iverdaux->vda_nodename =
-		bfd_elf_string_from_elf_section (abfd, hdr->sh_link,
-						 iverdaux->vda_name);
+	      if (elf_use_dt_symtab_p (abfd))
+		{
+		  if (iverdaux->vda_name < elf_tdata (abfd)->dt_strsz)
+		    iverdaux->vda_nodename
+		      = elf_tdata (abfd)->dt_strtab + iverdaux->vda_name;
+		  else
+		    iverdaux->vda_nodename = NULL;
+		}
+	      else
+		iverdaux->vda_nodename
+		  = bfd_elf_string_from_elf_section (abfd, hdr->sh_link,
+						     iverdaux->vda_name);
 	      if (iverdaux->vda_nodename == NULL)
 		goto error_return_bad_verdef;
 
@@ -8844,8 +9737,10 @@ error_return_verref:
 		     ((bfd_byte *) everdef + iverdef->vd_next));
 	}
 
-      free (contents);
+      if (contents != elf_tdata (abfd)->dt_verdef)
+	_bfd_munmap_temporary (contents_addr, contents_size);
       contents = NULL;
+      contents_addr = NULL;
     }
   else if (default_imported_symver)
     {
@@ -8854,8 +9749,14 @@ 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;
+	}
+      if (amt == 0)
+	goto error_return;
+      elf_tdata (abfd)->verdef = (Elf_Internal_Verdef *) bfd_zalloc (abfd, amt);
       if (elf_tdata (abfd)->verdef == NULL)
 	goto error_return;
 
@@ -8890,12 +9791,13 @@ error_return_verref:
       iverdaux->vda_nodename = iverdef->vd_nodename;
     }
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (contents != NULL)
-    free (contents);
-  return FALSE;
+  if (contents != elf_tdata (abfd)->dt_verneed
+      && contents != elf_tdata (abfd)->dt_verdef)
+    _bfd_munmap_temporary (contents_addr, contents_size);
+  return false;
 }
 
 asymbol *
@@ -8922,18 +9824,18 @@ _bfd_elf_get_symbol_info (bfd *abfd ATTR
    use this function for the is_local_label_name entry point, but some
    override it.  */
 
-bfd_boolean
+bool
 _bfd_elf_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 			      const char *name)
 {
   /* Normal local symbols start with ``.L''.  */
   if (name[0] == '.' && name[1] == 'L')
-    return TRUE;
+    return true;
 
   /* At least some SVR4 compilers (e.g., UnixWare 2.1 cc) generate
      DWARF debugging symbols starting with ``..''.  */
   if (name[0] == '.' && name[1] == '.')
-    return TRUE;
+    return true;
 
   /* gcc will sometimes generate symbols beginning with ``_.L_'' when
      emitting DWARF debugging output.  I suspect this is actually a
@@ -8942,7 +9844,7 @@ _bfd_elf_is_local_label_name (bfd *abfd
      underscore to be emitted on some ELF targets).  For ease of use,
      we treat such symbols as local.  */
   if (name[0] == '_' && name[1] == '.' && name[2] == 'L' && name[3] == '_')
-    return TRUE;
+    return true;
 
   /* Treat assembler generated fake symbols, dollar local labels and
      forward-backward labels (aka local labels) as locals.
@@ -8956,7 +9858,7 @@ _bfd_elf_is_local_label_name (bfd *abfd
      so we only need to match the rest.  */
   if (name[0] == 'L' && ISDIGIT (name[1]))
     {
-      bfd_boolean ret = FALSE;
+      bool ret = false;
       const char * p;
       char c;
 
@@ -8966,26 +9868,26 @@ _bfd_elf_is_local_label_name (bfd *abfd
 	    {
 	      if (c == 1 && p == name + 2)
 		/* A fake symbol.  */
-		return TRUE;
+		return true;
 
 	      /* FIXME: We are being paranoid here and treating symbols like
 		 L0^Bfoo as if there were non-local, on the grounds that the
 		 assembler will never generate them.  But can any symbol
 		 containing an ASCII value in the range 1-31 ever be anything
 		 other than some kind of local ?  */
-	      ret = TRUE;
+	      ret = true;
 	    }
 
 	  if (! ISDIGIT (c))
 	    {
-	      ret = FALSE;
+	      ret = false;
 	      break;
 	    }
 	}
       return ret;
     }
 
-  return FALSE;
+  return false;
 }
 
 alent *
@@ -8996,7 +9898,7 @@ _bfd_elf_get_lineno (bfd *abfd ATTRIBUTE
   return NULL;
 }
 
-bfd_boolean
+bool
 _bfd_elf_set_arch_mach (bfd *abfd,
 			enum bfd_architecture arch,
 			unsigned long machine)
@@ -9006,7 +9908,7 @@ _bfd_elf_set_arch_mach (bfd *abfd,
   if (arch != get_elf_backend_data (abfd)->arch
       && arch != bfd_arch_unknown
       && get_elf_backend_data (abfd)->arch != bfd_arch_unknown)
-    return FALSE;
+    return false;
 
   return bfd_default_set_arch_mach (abfd, arch, machine);
 }
@@ -9014,7 +9916,7 @@ _bfd_elf_set_arch_mach (bfd *abfd,
 /* Find the nearest line to a particular section and offset,
    for error reporting.  */
 
-bfd_boolean
+bool
 _bfd_elf_find_nearest_line (bfd *abfd,
 			    asymbol **symbols,
 			    asection *section,
@@ -9024,14 +9926,36 @@ _bfd_elf_find_nearest_line (bfd *abfd,
 			    unsigned int *line_ptr,
 			    unsigned int *discriminator_ptr)
 {
-  bfd_boolean found;
+  return _bfd_elf_find_nearest_line_with_alt (abfd, NULL, symbols, section,
+					      offset, filename_ptr,
+					      functionname_ptr, line_ptr,
+					      discriminator_ptr);
+}
 
-  if (_bfd_dwarf2_find_nearest_line (abfd, symbols, NULL, section, offset,
-				     filename_ptr, functionname_ptr,
-				     line_ptr, discriminator_ptr,
-				     dwarf_debug_sections,
-				     &elf_tdata (abfd)->dwarf2_find_line_info))
-    return TRUE;
+/* Find the nearest line to a particular section and offset,
+   for error reporting.  ALT_BFD representing a .gnu_debugaltlink file
+   can be optionally specified.  */
+
+bool
+_bfd_elf_find_nearest_line_with_alt (bfd *abfd,
+				     const char *alt_filename,
+				     asymbol **symbols,
+				     asection *section,
+				     bfd_vma offset,
+				     const char **filename_ptr,
+				     const char **functionname_ptr,
+				     unsigned int *line_ptr,
+				     unsigned int *discriminator_ptr)
+{
+  bool found;
+
+  if (_bfd_dwarf2_find_nearest_line_with_alt (abfd, alt_filename, symbols, NULL,
+					      section, offset, filename_ptr,
+					      functionname_ptr, line_ptr,
+					      discriminator_ptr,
+					      dwarf_debug_sections,
+					      &elf_tdata (abfd)->dwarf2_find_line_info))
+    return true;
 
   if (_bfd_dwarf1_find_nearest_line (abfd, symbols, section, offset,
 				     filename_ptr, functionname_ptr, line_ptr))
@@ -9040,38 +9964,39 @@ _bfd_elf_find_nearest_line (bfd *abfd,
 	_bfd_elf_find_function (abfd, symbols, section, offset,
 				*filename_ptr ? NULL : filename_ptr,
 				functionname_ptr);
-      return TRUE;
+      return true;
     }
 
   if (! _bfd_stab_section_find_nearest_line (abfd, symbols, section, offset,
 					     &found, filename_ptr,
 					     functionname_ptr, line_ptr,
 					     &elf_tdata (abfd)->line_info))
-    return FALSE;
+    return false;
   if (found && (*functionname_ptr || *line_ptr))
-    return TRUE;
+    return true;
 
   if (symbols == NULL)
-    return FALSE;
+    return false;
 
   if (! _bfd_elf_find_function (abfd, symbols, section, offset,
 				filename_ptr, functionname_ptr))
-    return FALSE;
+    return false;
 
   *line_ptr = 0;
-  return TRUE;
+  return true;
 }
 
 /* Find the line for a symbol.  */
 
-bfd_boolean
+bool
 _bfd_elf_find_line (bfd *abfd, asymbol **symbols, asymbol *symbol,
 		    const char **filename_ptr, unsigned int *line_ptr)
 {
+  struct elf_obj_tdata *tdata = elf_tdata (abfd);
   return _bfd_dwarf2_find_nearest_line (abfd, symbols, symbol, NULL, 0,
 					filename_ptr, NULL, line_ptr, NULL,
 					dwarf_debug_sections,
-					&elf_tdata (abfd)->dwarf2_find_line_info);
+					&tdata->dwarf2_find_line_info);
 }
 
 /* After a call to bfd_find_nearest_line, successive calls to
@@ -9080,17 +10005,16 @@ _bfd_elf_find_line (bfd *abfd, asymbol *
    passed to bfd_find_nearest_line.  Currently this is only supported
    for DWARF2 with appropriate DWARF3 extensions. */
 
-bfd_boolean
+bool
 _bfd_elf_find_inliner_info (bfd *abfd,
 			    const char **filename_ptr,
 			    const char **functionname_ptr,
 			    unsigned int *line_ptr)
 {
-  bfd_boolean found;
-  found = _bfd_dwarf2_find_inliner_info (abfd, filename_ptr,
-					 functionname_ptr, line_ptr,
-					 & elf_tdata (abfd)->dwarf2_find_line_info);
-  return found;
+  struct elf_obj_tdata *tdata = elf_tdata (abfd);
+  return _bfd_dwarf2_find_inliner_info (abfd, filename_ptr,
+					functionname_ptr, line_ptr,
+					&tdata->dwarf2_find_line_info);
 }
 
 int
@@ -9122,7 +10046,7 @@ _bfd_elf_sizeof_headers (bfd *abfd, stru
   return ret;
 }
 
-bfd_boolean
+bool
 _bfd_elf_set_section_contents (bfd *abfd,
 			       sec_ptr section,
 			       const void *location,
@@ -9130,52 +10054,67 @@ _bfd_elf_set_section_contents (bfd *abfd
 			       bfd_size_type count)
 {
   Elf_Internal_Shdr *hdr;
-  file_ptr pos;
 
   if (! abfd->output_has_begun
       && ! _bfd_elf_compute_section_file_positions (abfd, NULL))
-    return FALSE;
+    return false;
 
   if (!count)
-    return TRUE;
+    return true;
 
   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;
+	return true;
+
+      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;
+	}
 
-      /* 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 ();
       memcpy (contents + offset, location, count);
-      return TRUE;
+      return true;
     }
-  pos = hdr->sh_offset + offset;
-  if (bfd_seek (abfd, pos, SEEK_SET) != 0
-      || bfd_bwrite (location, count, abfd) != count)
-    return FALSE;
 
-  return TRUE;
+  return _bfd_generic_set_section_contents (abfd, section,
+					    location, offset, count);
 }
 
-bfd_boolean
+bool
 _bfd_elf_no_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 			   arelent *cache_ptr ATTRIBUTE_UNUSED,
 			   Elf_Internal_Rela *dst ATTRIBUTE_UNUSED)
 {
   abort ();
-  return FALSE;
+  return false;
 }
 
 /* Try to convert a non-ELF reloc into an ELF one.  */
 
-bfd_boolean
+bool
 _bfd_elf_validate_reloc (bfd *abfd, arelent *areloc)
 {
   /* Check whether we really have an ELF howto.  */
@@ -9259,28 +10198,52 @@ _bfd_elf_validate_reloc (bfd *abfd, arel
 	goto fail;
     }
 
-  return TRUE;
+  return true;
 
  fail:
   /* xgettext:c-format */
   _bfd_error_handler (_("%pB: %s unsupported"),
 		      abfd, areloc->howto->name);
   bfd_set_error (bfd_error_sorry);
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
-_bfd_elf_close_and_cleanup (bfd *abfd)
+bool
+_bfd_elf_free_cached_info (bfd *abfd)
 {
-  struct elf_obj_tdata *tdata = elf_tdata (abfd);
-  if (bfd_get_format (abfd) == bfd_object && tdata != NULL)
+  struct elf_obj_tdata *tdata;
+
+  if ((bfd_get_format (abfd) == bfd_object
+       || bfd_get_format (abfd) == bfd_core)
+      && (tdata = elf_tdata (abfd)) != NULL)
     {
-      if (elf_tdata (abfd)->o != NULL && elf_shstrtab (abfd) != NULL)
+      if (tdata->o != NULL && elf_shstrtab (abfd) != NULL)
 	_bfd_elf_strtab_free (elf_shstrtab (abfd));
       _bfd_dwarf2_cleanup_debug_info (abfd, &tdata->dwarf2_find_line_info);
+      _bfd_dwarf1_cleanup_debug_info (abfd, &tdata->dwarf1_find_line_info);
+      _bfd_stab_cleanup (abfd, &tdata->line_info);
+      for (asection *sec = abfd->sections; sec != NULL; sec = sec->next)
+	{
+	  _bfd_elf_munmap_section_contents (sec, sec->contents);
+	  if (!sec->alloced)
+	    {
+	      free (elf_section_data (sec)->this_hdr.contents);
+	      elf_section_data (sec)->this_hdr.contents = NULL;
+	    }
+	  free (elf_section_data (sec)->relocs);
+	  elf_section_data (sec)->relocs = NULL;
+	  if (sec->sec_info_type == SEC_INFO_TYPE_EH_FRAME)
+	    {
+	      struct eh_frame_sec_info *sec_info
+		= elf_section_data (sec)->sec_info;
+	      free (sec_info->cies);
+	    }
+	}
+      free (tdata->symtab_hdr.contents);
+      tdata->symtab_hdr.contents = NULL;
     }
 
-  return _bfd_generic_close_and_cleanup (abfd);
+  return _bfd_generic_bfd_free_cached_info (abfd);
 }
 
 /* For Rel targets, we encode meaningful data for BFD_RELOC_VTABLE_ENTRY
@@ -9304,8 +10267,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
 
@@ -9324,27 +10285,26 @@ elfcore_make_pid (bfd *abfd)
   return pid;
 }
 
-/* If there isn't a section called NAME, make one, using
-   data from SECT.  Note, this function will generate a
-   reference to NAME, so you shouldn't deallocate or
-   overwrite it.  */
+/* If there isn't a section called NAME, make one, using data from
+   SECT.  Note, this function will generate a reference to NAME, so
+   you shouldn't deallocate or overwrite it.  */
 
-static bfd_boolean
+static bool
 elfcore_maybe_make_sect (bfd *abfd, char *name, asection *sect)
 {
   asection *sect2;
 
   if (bfd_get_section_by_name (abfd, name) != NULL)
-    return TRUE;
+    return true;
 
   sect2 = bfd_make_section_with_flags (abfd, name, sect->flags);
   if (sect2 == NULL)
-    return FALSE;
+    return false;
 
   sect2->size = sect->size;
   sect2->filepos = sect->filepos;
   sect2->alignment_power = sect->alignment_power;
-  return TRUE;
+  return true;
 }
 
 /* Create a pseudosection containing SIZE bytes at FILEPOS.  This
@@ -9354,7 +10314,7 @@ elfcore_maybe_make_sect (bfd *abfd, char
    - For the multi-threaded case, a section named "NAME/PID", where
      PID is elfcore_make_pid (abfd).
    Both pseudosections have identical contents.  */
-bfd_boolean
+bool
 _bfd_elfcore_make_pseudosection (bfd *abfd,
 				 char *name,
 				 size_t size,
@@ -9371,13 +10331,13 @@ _bfd_elfcore_make_pseudosection (bfd *ab
   len = strlen (buf) + 1;
   threaded_name = (char *) bfd_alloc (abfd, len);
   if (threaded_name == NULL)
-    return FALSE;
+    return false;
   memcpy (threaded_name, buf, len);
 
   sect = bfd_make_section_anyway_with_flags (abfd, threaded_name,
 					     SEC_HAS_CONTENTS);
   if (sect == NULL)
-    return FALSE;
+    return false;
   sect->size = size;
   sect->filepos = filepos;
   sect->alignment_power = 2;
@@ -9385,7 +10345,7 @@ _bfd_elfcore_make_pseudosection (bfd *ab
   return elfcore_maybe_make_sect (abfd, name, sect);
 }
 
-static bfd_boolean
+static bool
 elfcore_make_auxv_note_section (bfd *abfd, Elf_Internal_Note *note,
 				size_t offs)
 {
@@ -9393,13 +10353,13 @@ elfcore_make_auxv_note_section (bfd *abf
 						       SEC_HAS_CONTENTS);
 
   if (sect == NULL)
-    return FALSE;
+    return false;
 
   sect->size = note->descsz - offs;
   sect->filepos = note->descpos + offs;
   sect->alignment_power = 1 + bfd_get_arch_size (abfd) / 32;
 
-  return TRUE;
+  return true;
 }
 
 /* prstatus_t exists on:
@@ -9410,7 +10370,7 @@ elfcore_make_auxv_note_section (bfd *abf
 
 #if defined (HAVE_PRSTATUS_T)
 
-static bfd_boolean
+static bool
 elfcore_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   size_t size;
@@ -9477,17 +10437,17 @@ elfcore_grok_prstatus (bfd *abfd, Elf_In
     {
       /* Fail - we don't know how to handle any other
 	 note size (ie. data object type).  */
-      return TRUE;
+      return true;
     }
 
   /* Make a ".reg/999" section and a ".reg" section.  */
-  return _bfd_elfcore_make_pseudosection (abfd, ".reg",
+  return _bfd_elfcore_make_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG,
 					  size, note->descpos + offset);
 }
 #endif /* defined (HAVE_PRSTATUS_T) */
 
 /* Create a pseudosection containing the exact contents of NOTE.  */
-static bfd_boolean
+static bool
 elfcore_make_note_pseudosection (bfd *abfd,
 				 char *name,
 				 Elf_Internal_Note *note)
@@ -9500,234 +10460,331 @@ elfcore_make_note_pseudosection (bfd *ab
    but it doesn't matter, because we don't have to pick this
    data structure apart.  */
 
-static bfd_boolean
+static bool
 elfcore_grok_prfpreg (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg2", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG2, note);
 }
 
 /* Linux dumps the Intel SSE regs in a note named "LINUX" with a note
    type of NT_PRXFPREG.  Just include the whole note's contents
    literally.  */
 
-static bfd_boolean
+static bool
 elfcore_grok_prxfpreg (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-xfp", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_XFP, note);
 }
 
 /* Linux dumps the Intel XSAVE extended state in a note named "LINUX"
    with a note type of NT_X86_XSTATE.  Just include the whole note's
    contents literally.  */
 
-static bfd_boolean
+static bool
 elfcore_grok_xstatereg (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-xstate", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_XSTATE, note);
+}
+
+static bool
+elfcore_grok_sspreg (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_SSP, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_vmx (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-vmx", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_VMX, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_vsx (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-vsx", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_VSX, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tar (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tar", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TAR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_ppr (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-ppr", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_PPR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_dscr (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-dscr", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_DSCR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_ebb (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-ebb", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_EBB, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_pmu (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-pmu", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_PMU, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tm_cgpr (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cgpr", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TM_CGPR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tm_cfpr (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cfpr", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TM_CFPR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tm_cvmx (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cvmx", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TM_CVMX, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tm_cvsx (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cvsx", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TM_CVSX, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tm_spr (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-spr", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TM_SPR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tm_ctar (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-ctar", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TM_CTAR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tm_cppr (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cppr", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TM_CPPR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_ppc_tm_cdscr (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-ppc-tm-cdscr", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_PPC_TM_CDSCR, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_high_gprs (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-high-gprs", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_HIGH_GPRS, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_timer (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-timer", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_TIMER, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_todcmp (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-todcmp", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_TODCMP, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_todpreg (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-todpreg", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_TODPREG, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_ctrs (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-ctrs", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_CTRS, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_prefix (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-prefix", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_PREFIX, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_last_break (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-last-break", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_LAST_BREAK, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_system_call (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-system-call", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_SYSTEM_CALL, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_tdb (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-tdb", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_TDB, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_vxrs_low (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-vxrs-low", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_VXRS_LOW, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_vxrs_high (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-vxrs-high", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_VXRS_HIGH, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_gs_cb (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-gs-cb", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_GS_CB, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_s390_gs_bc (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-s390-gs-bc", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_S390_GS_BC, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_arm_vfp (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-arm-vfp", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_ARM_VFP, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_aarch_tls (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-aarch-tls", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_TLS, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_aarch_hw_break (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-aarch-hw-break", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_HW_BREAK, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_aarch_hw_watch (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-aarch-hw-watch", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_HW_WATCH, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_aarch_sve (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-aarch-sve", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_SVE, note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_aarch_pauth (bfd *abfd, Elf_Internal_Note *note)
 {
-  return elfcore_make_note_pseudosection (abfd, ".reg-aarch-pauth", note);
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_PAUTH, note);
+}
+
+static bool
+elfcore_grok_aarch_mte (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_MTE, note);
+}
+
+static bool
+elfcore_grok_aarch_ssve (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_SSVE, note);
+}
+
+static bool
+elfcore_grok_aarch_za (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_ZA, note);
+}
+
+/* Convert NOTE into a bfd_section called ".reg-aarch-zt".  Return TRUE if
+   successful, otherwise return FALSE.  */
+
+static bool
+elfcore_grok_aarch_zt (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_ZT, note);
+}
+
+/* Convert NOTE into a bfd_section called ".reg-aarch-gcs".  Return TRUE if
+   successful, otherwise return FALSE.  */
+
+static bool
+elfcore_grok_aarch_gcs (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_AARCH_GCS, note);
+}
+
+static bool
+elfcore_grok_arc_v2 (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_ARC_V2, note);
+}
+
+/* Convert NOTE into a bfd_section called ".reg-riscv-csr".  Return TRUE if
+   successful otherwise, return FALSE.  */
+
+static bool
+elfcore_grok_riscv_csr (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_RISCV_CSR, note);
+}
+
+/* Convert NOTE into a bfd_section called ".gdb-tdesc".  Return TRUE if
+   successful otherwise, return FALSE.  */
+
+static bool
+elfcore_grok_gdb_tdesc (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, ".gdb-tdesc", note);
+}
+
+static bool
+elfcore_grok_i386_tls (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_I386_TLS,
+					  note);
+}
+
+static bool
+elfcore_grok_loongarch_cpucfg (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_LOONGARCH_CPUCFG, note);
+}
+
+static bool
+elfcore_grok_loongarch_lbt (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_LOONGARCH_LBT, note);
+}
+
+static bool
+elfcore_grok_loongarch_lsx (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_LOONGARCH_LSX, note);
+}
+
+static bool
+elfcore_grok_loongarch_lasx (bfd *abfd, Elf_Internal_Note *note)
+{
+  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_LOONGARCH_LASX, note);
 }
 
 #if defined (HAVE_PRPSINFO_T)
@@ -9771,7 +10828,7 @@ _bfd_elfcore_strndup (bfd *abfd, char *s
 }
 
 #if defined (HAVE_PRPSINFO_T) || defined (HAVE_PSINFO_T)
-static bfd_boolean
+static bool
 elfcore_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz == sizeof (elfcore_psinfo_t))
@@ -9816,7 +10873,7 @@ elfcore_grok_psinfo (bfd *abfd, Elf_Inte
     {
       /* Fail - we don't know how to handle any other
 	 note size (ie. data object type).  */
-      return TRUE;
+      return true;
     }
 
   /* Note that for some reason, a spurious space is tacked
@@ -9831,12 +10888,12 @@ elfcore_grok_psinfo (bfd *abfd, Elf_Inte
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 #endif /* defined (HAVE_PRPSINFO_T) || defined (HAVE_PSINFO_T) */
 
 #if defined (HAVE_PSTATUS_T)
-static bfd_boolean
+static bool
 elfcore_grok_pstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz == sizeof (pstatus_t)
@@ -9866,12 +10923,12 @@ elfcore_grok_pstatus (bfd *abfd, Elf_Int
      lwpstatus_t in pstat.pr_lwp, but we'll catch it all in an
      NT_LWPSTATUS note, presumably.  */
 
-  return TRUE;
+  return true;
 }
 #endif /* defined (HAVE_PSTATUS_T) */
 
 #if defined (HAVE_LWPSTATUS_T)
-static bfd_boolean
+static bool
 elfcore_grok_lwpstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   lwpstatus_t lwpstat;
@@ -9885,7 +10942,7 @@ elfcore_grok_lwpstatus (bfd *abfd, Elf_I
       && note->descsz != sizeof (lwpxstatus_t)
 #endif
       )
-    return TRUE;
+    return true;
 
   memcpy (&lwpstat, note->descdata, sizeof (lwpstat));
 
@@ -9897,16 +10954,16 @@ elfcore_grok_lwpstatus (bfd *abfd, Elf_I
 
   /* Make a ".reg/999" section.  */
 
-  sprintf (buf, ".reg/%d", elfcore_make_pid (abfd));
+  sprintf (buf, NOTE_PSEUDO_SECTION_REG "/%d", elfcore_make_pid (abfd));
   len = strlen (buf) + 1;
   name = bfd_alloc (abfd, len);
   if (name == NULL)
-    return FALSE;
+    return false;
   memcpy (name, buf, len);
 
   sect = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
   if (sect == NULL)
-    return FALSE;
+    return false;
 
 #if defined (HAVE_LWPSTATUS_T_PR_CONTEXT)
   sect->size = sizeof (lwpstat.pr_context.uc_mcontext.gregs);
@@ -9921,21 +10978,21 @@ elfcore_grok_lwpstatus (bfd *abfd, Elf_I
 
   sect->alignment_power = 2;
 
-  if (!elfcore_maybe_make_sect (abfd, ".reg", sect))
-    return FALSE;
+  if (!elfcore_maybe_make_sect (abfd, NOTE_PSEUDO_SECTION_REG, sect))
+    return false;
 
   /* Make a ".reg2/999" section */
 
-  sprintf (buf, ".reg2/%d", elfcore_make_pid (abfd));
+  sprintf (buf, NOTE_PSEUDO_SECTION_REG2 "/%d", elfcore_make_pid (abfd));
   len = strlen (buf) + 1;
   name = bfd_alloc (abfd, len);
   if (name == NULL)
-    return FALSE;
+    return false;
   memcpy (name, buf, len);
 
   sect = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
   if (sect == NULL)
-    return FALSE;
+    return false;
 
 #if defined (HAVE_LWPSTATUS_T_PR_CONTEXT)
   sect->size = sizeof (lwpstat.pr_context.uc_mcontext.fpregs);
@@ -9950,57 +11007,87 @@ elfcore_grok_lwpstatus (bfd *abfd, Elf_I
 
   sect->alignment_power = 2;
 
-  return elfcore_maybe_make_sect (abfd, ".reg2", sect);
+  return elfcore_maybe_make_sect (abfd, NOTE_PSEUDO_SECTION_REG2, sect);
 }
 #endif /* defined (HAVE_LWPSTATUS_T) */
 
-static bfd_boolean
+/* 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 bool
 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)
-    return TRUE;
+  if (note->descsz < 4)
+    return true;
 
-  if (! CONST_STRNEQ (note->namedata, "win32"))
-    return TRUE;
+  if (! startswith (note->namedata, "win32"))
+    return true;
 
   type = bfd_get_32 (abfd, note->descdata);
 
+  static const 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 == 0 || 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, NOTE_PSEUDO_SECTION_REG "/%ld", (long) bfd_get_32 (abfd, note->descdata + 4));
 
       len = strlen (buf) + 1;
       name = (char *) bfd_alloc (abfd, len);
       if (name == NULL)
-	return FALSE;
+	return false;
 
       memcpy (name, buf, len);
 
       sect = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
       if (sect == NULL)
-	return FALSE;
+	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;
@@ -10009,27 +11096,49 @@ elfcore_grok_win32pstatus (bfd *abfd, El
       is_active_thread = bfd_get_32 (abfd, note->descdata + 8);
 
       if (is_active_thread)
-	if (! elfcore_maybe_make_sect (abfd, ".reg", sect))
-	  return FALSE;
+	if (! elfcore_maybe_make_sect (abfd, NOTE_PSEUDO_SECTION_REG, sect))
+	  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);
       if (name == NULL)
-	return FALSE;
+	return false;
 
       memcpy (name, buf, len);
 
       sect = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
 
       if (sect == NULL)
-	return FALSE;
+	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;
@@ -10037,30 +11146,88 @@ elfcore_grok_win32pstatus (bfd *abfd, El
       break;
 
     default:
-      return TRUE;
+      return true;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
+  /* Short cut for LINUX notes.  */
+  if (note->namesz == 6 /* strlen (NOTE_NAME_LINUX) + 1 */
+      && streq (note->namedata, NOTE_NAME_LINUX))
+    {
+      switch (note->type)
+	{
+	case NT_386_TLS:	return elfcore_grok_i386_tls (abfd, note);
+	case NT_ARC_V2:		return elfcore_grok_arc_v2 (abfd, note);
+	case NT_ARM_GCS:	return elfcore_grok_aarch_gcs (abfd, note);
+	case NT_ARM_HW_BREAK:	return elfcore_grok_aarch_hw_break (abfd, note);
+	case NT_ARM_HW_WATCH:	return elfcore_grok_aarch_hw_watch (abfd, note);
+	case NT_ARM_PAC_MASK:	return elfcore_grok_aarch_pauth (abfd, note);
+	case NT_ARM_SSVE:	return elfcore_grok_aarch_ssve (abfd, note);
+	case NT_ARM_SVE:	return elfcore_grok_aarch_sve (abfd, note);
+	case NT_ARM_TAGGED_ADDR_CTRL: return elfcore_grok_aarch_mte (abfd, note);
+	case NT_ARM_TLS:	return elfcore_grok_aarch_tls (abfd, note);
+	case NT_ARM_VFP:	return elfcore_grok_arm_vfp (abfd, note);
+	case NT_ARM_ZA:		return elfcore_grok_aarch_za (abfd, note);
+	case NT_ARM_ZT:		return elfcore_grok_aarch_zt (abfd, note);
+	case NT_LARCH_CPUCFG:	return elfcore_grok_loongarch_cpucfg (abfd, note);
+	case NT_LARCH_LASX:	return elfcore_grok_loongarch_lasx (abfd, note);
+	case NT_LARCH_LBT:	return elfcore_grok_loongarch_lbt (abfd, note);
+	case NT_LARCH_LSX:	return elfcore_grok_loongarch_lsx (abfd, note);
+	case NT_PPC_DSCR:	return elfcore_grok_ppc_dscr (abfd, note);
+	case NT_PPC_EBB:	return elfcore_grok_ppc_ebb (abfd, note);
+	case NT_PPC_PMU:	return elfcore_grok_ppc_pmu (abfd, note);
+	case NT_PPC_PPR:	return elfcore_grok_ppc_ppr (abfd, note);
+	case NT_PPC_TAR:	return elfcore_grok_ppc_tar (abfd, note);
+	case NT_PPC_TM_CDSCR:	return elfcore_grok_ppc_tm_cdscr (abfd, note);
+	case NT_PPC_TM_CFPR:	return elfcore_grok_ppc_tm_cfpr (abfd, note);
+	case NT_PPC_TM_CGPR:	return elfcore_grok_ppc_tm_cgpr (abfd, note);
+	case NT_PPC_TM_CPPR:	return elfcore_grok_ppc_tm_cppr (abfd, note);
+	case NT_PPC_TM_CTAR:	return elfcore_grok_ppc_tm_ctar (abfd, note);
+	case NT_PPC_TM_CVMX:	return elfcore_grok_ppc_tm_cvmx (abfd, note);
+	case NT_PPC_TM_CVSX:	return elfcore_grok_ppc_tm_cvsx (abfd, note);
+	case NT_PPC_TM_SPR:	return elfcore_grok_ppc_tm_spr (abfd, note);
+	case NT_PPC_VMX:	return elfcore_grok_ppc_vmx (abfd, note);
+	case NT_PPC_VSX:	return elfcore_grok_ppc_vsx (abfd, note);
+	case NT_PRXFPREG:	return elfcore_grok_prxfpreg (abfd, note);
+	case NT_S390_CTRS:	return elfcore_grok_s390_ctrs (abfd, note);
+	case NT_S390_GS_BC:	return elfcore_grok_s390_gs_bc (abfd, note);
+	case NT_S390_GS_CB:	return elfcore_grok_s390_gs_cb (abfd, note);
+	case NT_S390_HIGH_GPRS:	return elfcore_grok_s390_high_gprs (abfd, note);
+	case NT_S390_LAST_BREAK:  return elfcore_grok_s390_last_break (abfd, note);
+	case NT_S390_PREFIX:	return elfcore_grok_s390_prefix (abfd, note);
+	case NT_S390_SYSTEM_CALL: return elfcore_grok_s390_system_call (abfd, note);
+	case NT_S390_TDB:	return elfcore_grok_s390_tdb (abfd, note);
+	case NT_S390_TIMER:	return elfcore_grok_s390_timer (abfd, note);
+	case NT_S390_TODCMP:	return elfcore_grok_s390_todcmp (abfd, note);
+	case NT_S390_TODPREG:	return elfcore_grok_s390_todpreg (abfd, note);
+	case NT_S390_VXRS_HIGH:	return elfcore_grok_s390_vxrs_high (abfd, note);
+	case NT_S390_VXRS_LOW:	return elfcore_grok_s390_vxrs_low (abfd, note);
+	case NT_X86_SHSTK:	return elfcore_grok_sspreg (abfd, note);
+	case NT_X86_XSTATE:	return elfcore_grok_xstatereg (abfd, note);
+	default: break;
+	}
+    }
+  
   switch (note->type)
     {
     default:
-      return TRUE;
+      return true;
 
     case NT_PRSTATUS:
       if (bed->elf_backend_grok_prstatus)
 	if ((*bed->elf_backend_grok_prstatus) (abfd, note))
-	  return TRUE;
+	  return true;
 #if defined (HAVE_PRSTATUS_T)
       return elfcore_grok_prstatus (abfd, note);
 #else
-      return TRUE;
+      return true;
 #endif
 
 #if defined (HAVE_PSTATUS_T)
@@ -10073,273 +11240,33 @@ elfcore_grok_note (bfd *abfd, Elf_Intern
       return elfcore_grok_lwpstatus (abfd, note);
 #endif
 
-    case NT_FPREGSET:		/* FIXME: rename to NT_PRFPREG */
+    case NT_FPREGSET:		/* FIXME: rename to NT_PRFPREG.  */
       return elfcore_grok_prfpreg (abfd, note);
 
     case NT_WIN32PSTATUS:
       return elfcore_grok_win32pstatus (abfd, note);
 
-    case NT_PRXFPREG:		/* Linux SSE extension */
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_prxfpreg (abfd, note);
-      else
-	return TRUE;
-
-    case NT_X86_XSTATE:		/* Linux XSAVE extension */
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_xstatereg (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_VMX:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_vmx (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_VSX:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_vsx (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_TAR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tar (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_PPR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_ppr (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_DSCR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_dscr (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_EBB:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_ebb (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_PMU:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_pmu (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_TM_CGPR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tm_cgpr (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_TM_CFPR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tm_cfpr (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_TM_CVMX:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tm_cvmx (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_TM_CVSX:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tm_cvsx (abfd, note);
+    case NT_GDB_TDESC:
+      if (note->namesz == 4 && streq (note->namedata, NOTE_NAME_GDB))
+	return elfcore_grok_gdb_tdesc (abfd, note);
       else
-	return TRUE;
+	return true;
 
-    case NT_PPC_TM_SPR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tm_spr (abfd, note);
+    case NT_RISCV_CSR:
+      if (note->namesz == 4 && streq (note->namedata, NOTE_NAME_GDB))
+	return elfcore_grok_riscv_csr (abfd, note);
       else
-	return TRUE;
-
-    case NT_PPC_TM_CTAR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tm_ctar (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_TM_CPPR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tm_cppr (abfd, note);
-      else
-	return TRUE;
-
-    case NT_PPC_TM_CDSCR:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_ppc_tm_cdscr (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_HIGH_GPRS:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_high_gprs (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_TIMER:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_timer (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_TODCMP:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_todcmp (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_TODPREG:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_todpreg (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_CTRS:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_ctrs (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_PREFIX:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_prefix (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_LAST_BREAK:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_last_break (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_SYSTEM_CALL:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_system_call (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_TDB:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_tdb (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_VXRS_LOW:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_vxrs_low (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_VXRS_HIGH:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_vxrs_high (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_GS_CB:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_gs_cb (abfd, note);
-      else
-	return TRUE;
-
-    case NT_S390_GS_BC:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_s390_gs_bc (abfd, note);
-      else
-	return TRUE;
-
-    case NT_ARM_VFP:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_arm_vfp (abfd, note);
-      else
-	return TRUE;
-
-    case NT_ARM_TLS:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_aarch_tls (abfd, note);
-      else
-	return TRUE;
-
-    case NT_ARM_HW_BREAK:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_aarch_hw_break (abfd, note);
-      else
-	return TRUE;
-
-    case NT_ARM_HW_WATCH:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_aarch_hw_watch (abfd, note);
-      else
-	return TRUE;
-
-    case NT_ARM_SVE:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_aarch_sve (abfd, note);
-      else
-	return TRUE;
-
-    case NT_ARM_PAC_MASK:
-      if (note->namesz == 6
-	  && strcmp (note->namedata, "LINUX") == 0)
-	return elfcore_grok_aarch_pauth (abfd, note);
-      else
-	return TRUE;
+	return true;
 
     case NT_PRPSINFO:
     case NT_PSINFO:
       if (bed->elf_backend_grok_psinfo)
 	if ((*bed->elf_backend_grok_psinfo) (abfd, note))
-	  return TRUE;
+	  return true;
 #if defined (HAVE_PRPSINFO_T) || defined (HAVE_PSINFO_T)
       return elfcore_grok_psinfo (abfd, note);
 #else
-      return TRUE;
+      return true;
 #endif
 
     case NT_AUXV:
@@ -10352,36 +11279,35 @@ elfcore_grok_note (bfd *abfd, Elf_Intern
     case NT_SIGINFO:
       return elfcore_make_note_pseudosection (abfd, ".note.linuxcore.siginfo",
 					      note);
-
     }
 }
 
-static bfd_boolean
+static bool
 elfobj_grok_gnu_build_id (bfd *abfd, Elf_Internal_Note *note)
 {
   struct bfd_build_id* build_id;
 
   if (note->descsz == 0)
-    return FALSE;
+    return false;
 
   build_id = bfd_alloc (abfd, sizeof (struct bfd_build_id) - 1 + note->descsz);
   if (build_id == NULL)
-    return FALSE;
+    return false;
 
   build_id->size = note->descsz;
   memcpy (build_id->data, note->descdata, note->descsz);
   abfd->build_id = build_id;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfobj_grok_gnu_note (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->type)
     {
     default:
-      return TRUE;
+      return true;
 
     case NT_GNU_PROPERTY_TYPE_0:
       return _bfd_elf_parse_gnu_properties (abfd, note);
@@ -10391,7 +11317,7 @@ elfobj_grok_gnu_note (bfd *abfd, Elf_Int
     }
 }
 
-static bfd_boolean
+static bool
 elfobj_grok_stapsdt_note_1 (bfd *abfd, Elf_Internal_Note *note)
 {
   struct sdt_note *cur =
@@ -10404,10 +11330,10 @@ elfobj_grok_stapsdt_note_1 (bfd *abfd, E
 
   elf_tdata (abfd)->sdt_note_head = cur;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfobj_grok_stapsdt_note (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->type)
@@ -10416,11 +11342,11 @@ elfobj_grok_stapsdt_note (bfd *abfd, Elf
       return elfobj_grok_stapsdt_note_1 (abfd, note);
 
     default:
-      return TRUE;
+      return true;
     }
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_freebsd_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   size_t offset;
@@ -10429,21 +11355,21 @@ elfcore_grok_freebsd_psinfo (bfd *abfd,
     {
     case ELFCLASS32:
       if (note->descsz < 108)
-	return FALSE;
+	return false;
       break;
 
     case ELFCLASS64:
       if (note->descsz < 120)
-	return FALSE;
+	return false;
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   /* Check for version 1 in pr_version.  */
   if (bfd_h_get_32 (abfd, (bfd_byte *) note->descdata) != 1)
-    return FALSE;
+    return false;
 
   offset = 4;
 
@@ -10471,15 +11397,15 @@ elfcore_grok_freebsd_psinfo (bfd *abfd,
 
   /* The pr_pid field was added in version "1a".  */
   if (note->descsz < offset + 4)
-    return TRUE;
+    return true;
 
   elf_tdata (abfd)->core->pid
     = bfd_h_get_32 (abfd, (bfd_byte *) note->descdata + offset);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_freebsd_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   size_t offset;
@@ -10501,15 +11427,15 @@ elfcore_grok_freebsd_prstatus (bfd *abfd
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   if (note->descsz < min_size)
-    return FALSE;
+    return false;
 
   /* Check for version 1 in pr_version.  */
   if (bfd_h_get_32 (abfd, (bfd_byte *) note->descdata) != 1)
-    return FALSE;
+    return false;
 
   /* Extract size of pr_reg from pr_gregsetsz.  */
   /* Skip over pr_gregsetsz and pr_fpregsetsz.  */
@@ -10544,14 +11470,14 @@ elfcore_grok_freebsd_prstatus (bfd *abfd
 
   /* Make sure that there is enough data remaining in the note.  */
   if ((note->descsz - offset) < size)
-    return FALSE;
+    return false;
 
   /* Make a ".reg/999" section and a ".reg" section.  */
-  return _bfd_elfcore_make_pseudosection (abfd, ".reg",
+  return _bfd_elfcore_make_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG,
 					  size, note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_freebsd_note (bfd *abfd, Elf_Internal_Note *note)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
@@ -10561,7 +11487,7 @@ elfcore_grok_freebsd_note (bfd *abfd, El
     case NT_PRSTATUS:
       if (bed->elf_backend_grok_freebsd_prstatus)
 	if ((*bed->elf_backend_grok_freebsd_prstatus) (abfd, note))
-	  return TRUE;
+	  return true;
       return elfcore_grok_freebsd_prstatus (abfd, note);
 
     case NT_FPREGSET:
@@ -10571,10 +11497,7 @@ elfcore_grok_freebsd_note (bfd *abfd, El
       return elfcore_grok_freebsd_psinfo (abfd, note);
 
     case NT_FREEBSD_THRMISC:
-      if (note->namesz == 8)
-	return elfcore_make_note_pseudosection (abfd, ".thrmisc", note);
-      else
-	return TRUE;
+      return elfcore_make_note_pseudosection (abfd, ".thrmisc", note);
 
     case NT_FREEBSD_PROCSTAT_PROC:
       return elfcore_make_note_pseudosection (abfd, ".note.freebsdcore.proc",
@@ -10591,25 +11514,28 @@ elfcore_grok_freebsd_note (bfd *abfd, El
     case NT_FREEBSD_PROCSTAT_AUXV:
       return elfcore_make_auxv_note_section (abfd, note, 4);
 
+    case NT_FREEBSD_X86_SEGBASES:
+      return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_X86_SEGBASES, note);
+
     case NT_X86_XSTATE:
-      if (note->namesz == 8)
-	return elfcore_grok_xstatereg (abfd, note);
-      else
-	return TRUE;
+      return elfcore_grok_xstatereg (abfd, note);
 
     case NT_FREEBSD_PTLWPINFO:
       return elfcore_make_note_pseudosection (abfd, ".note.freebsdcore.lwpinfo",
 					      note);
 
+    case NT_ARM_TLS:
+      return elfcore_grok_aarch_tls (abfd, note);
+
     case NT_ARM_VFP:
       return elfcore_grok_arm_vfp (abfd, note);
 
     default:
-      return TRUE;
+      return true;
     }
 }
 
-static bfd_boolean
+static bool
 elfcore_netbsd_get_lwpid (Elf_Internal_Note *note, int *lwpidp)
 {
   char *cp;
@@ -10618,16 +11544,16 @@ elfcore_netbsd_get_lwpid (Elf_Internal_N
   if (cp != NULL)
     {
       *lwpidp = atoi(cp + 1);
-      return TRUE;
+      return true;
     }
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_netbsd_procinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz <= 0x7c + 31)
-    return FALSE;
+    return false;
 
   /* Signal number at offset 0x08. */
   elf_tdata (abfd)->core->signal
@@ -10645,7 +11571,7 @@ elfcore_grok_netbsd_procinfo (bfd *abfd,
 					  note);
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_netbsd_note (bfd *abfd, Elf_Internal_Note *note)
 {
   int lwp;
@@ -10661,22 +11587,24 @@ elfcore_grok_netbsd_note (bfd *abfd, Elf
 	 since the kernel writes this note out first when it
 	 creates a core file.  */
       return elfcore_grok_netbsd_procinfo (abfd, note);
-#ifdef NT_NETBSDCORE_AUXV
     case NT_NETBSDCORE_AUXV:
       /* NetBSD-specific Elf Auxiliary Vector data. */
       return elfcore_make_auxv_note_section (abfd, note, 4);
-#endif
+    case NT_NETBSDCORE_LWPSTATUS:
+      return elfcore_make_note_pseudosection (abfd,
+					      ".note.netbsdcore.lwpstatus",
+					      note);
     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.  */
 
   if (note->type < NT_NETBSDCORE_FIRSTMACH)
-    return TRUE;
+    return true;
 
 
   switch (bfd_get_arch (abfd))
@@ -10684,18 +11612,19 @@ 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)
 	{
 	case NT_NETBSDCORE_FIRSTMACH+0:
-	  return elfcore_make_note_pseudosection (abfd, ".reg", note);
+	  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG, note);
 
 	case NT_NETBSDCORE_FIRSTMACH+2:
-	  return elfcore_make_note_pseudosection (abfd, ".reg2", note);
+	  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG2, note);
 
 	default:
-	  return TRUE;
+	  return true;
 	}
 
       /* On SuperH, PT_GETREGS == mach+3 and PT_GETFPREGS == mach+5.
@@ -10706,13 +11635,13 @@ elfcore_grok_netbsd_note (bfd *abfd, Elf
       switch (note->type)
 	{
 	case NT_NETBSDCORE_FIRSTMACH+3:
-	  return elfcore_make_note_pseudosection (abfd, ".reg", note);
+	  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG, note);
 
 	case NT_NETBSDCORE_FIRSTMACH+5:
-	  return elfcore_make_note_pseudosection (abfd, ".reg2", note);
+	  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG2, note);
 
 	default:
-	  return TRUE;
+	  return true;
 	}
 
       /* On all other arch's, PT_GETREGS == mach+1 and
@@ -10722,23 +11651,23 @@ elfcore_grok_netbsd_note (bfd *abfd, Elf
       switch (note->type)
 	{
 	case NT_NETBSDCORE_FIRSTMACH+1:
-	  return elfcore_make_note_pseudosection (abfd, ".reg", note);
+	  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG, note);
 
 	case NT_NETBSDCORE_FIRSTMACH+3:
-	  return elfcore_make_note_pseudosection (abfd, ".reg2", note);
+	  return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG2, note);
 
 	default:
-	  return TRUE;
+	  return true;
 	}
     }
     /* NOTREACHED */
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_openbsd_procinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->descsz <= 0x48 + 31)
-    return FALSE;
+    return false;
 
   /* Signal number at offset 0x08. */
   elf_tdata (abfd)->core->signal
@@ -10752,23 +11681,212 @@ elfcore_grok_openbsd_procinfo (bfd *abfd
   elf_tdata (abfd)->core->command
     = _bfd_elfcore_strndup (abfd, note->descdata + 0x48, 31);
 
-  return TRUE;
+  return true;
+}
+
+/* Processes Solaris's process status note.
+   sig_off ~ offsetof(prstatus_t, pr_cursig)
+   pid_off ~ offsetof(prstatus_t, pr_pid)
+   lwpid_off ~ offsetof(prstatus_t, pr_who)
+   gregset_size ~ sizeof(gregset_t)
+   gregset_offset ~ offsetof(prstatus_t, pr_reg)  */
+
+static bool
+elfcore_grok_solaris_prstatus (bfd *abfd, Elf_Internal_Note* note, int sig_off,
+			       int pid_off, int lwpid_off, size_t gregset_size,
+			       size_t gregset_offset)
+{
+  asection *sect = NULL;
+  elf_tdata (abfd)->core->signal
+    = bfd_get_16 (abfd, note->descdata + sig_off);
+  elf_tdata (abfd)->core->pid
+    = bfd_get_32 (abfd, note->descdata + pid_off);
+  elf_tdata (abfd)->core->lwpid
+    = bfd_get_32 (abfd, note->descdata + lwpid_off);
+
+  sect = bfd_get_section_by_name (abfd, NOTE_PSEUDO_SECTION_REG);
+  if (sect != NULL)
+    sect->size = gregset_size;
+
+  return _bfd_elfcore_make_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG, gregset_size,
+					  note->descpos + gregset_offset);
+}
+
+/* Gets program and arguments from a core.
+   prog_off ~ offsetof(prpsinfo | psinfo_t, pr_fname)
+   comm_off ~ offsetof(prpsinfo | psinfo_t, pr_psargs)  */
+
+static bool
+elfcore_grok_solaris_info(bfd *abfd, Elf_Internal_Note* note,
+			  int prog_off, int comm_off)
+{
+  elf_tdata (abfd)->core->program
+    = _bfd_elfcore_strndup (abfd, note->descdata + prog_off, 16);
+  elf_tdata (abfd)->core->command
+    = _bfd_elfcore_strndup (abfd, note->descdata + comm_off, 80);
+
+  return true;
+}
+
+/* Processes Solaris's LWP status note.
+   gregset_size ~ sizeof(gregset_t)
+   gregset_off ~ offsetof(lwpstatus_t, pr_reg)
+   fpregset_size ~ sizeof(fpregset_t)
+   fpregset_off ~ offsetof(lwpstatus_t, pr_fpreg)  */
+
+static bool
+elfcore_grok_solaris_lwpstatus (bfd *abfd, Elf_Internal_Note* note,
+				size_t gregset_size, int gregset_off,
+				size_t fpregset_size, int fpregset_off)
+{
+  asection *sect = NULL;
+  char reg2_section_name[16] = { 0 };
+
+  (void) snprintf (reg2_section_name, 16, "%s/%i", NOTE_PSEUDO_SECTION_REG2,
+		   elf_tdata (abfd)->core->lwpid);
+
+  /* offsetof(lwpstatus_t, pr_lwpid) */
+  elf_tdata (abfd)->core->lwpid
+    = bfd_get_32 (abfd, note->descdata + 4);
+  /* offsetof(lwpstatus_t, pr_cursig) */
+  elf_tdata (abfd)->core->signal
+    = bfd_get_16 (abfd, note->descdata + 12);
+
+  sect = bfd_get_section_by_name (abfd, NOTE_PSEUDO_SECTION_REG);
+  if (sect != NULL)
+    sect->size = gregset_size;
+  else if (!_bfd_elfcore_make_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG, gregset_size,
+					     note->descpos + gregset_off))
+    return false;
+
+  sect = bfd_get_section_by_name (abfd, reg2_section_name);
+  if (sect != NULL)
+    {
+      sect->size = fpregset_size;
+      sect->filepos = note->descpos + fpregset_off;
+      sect->alignment_power = 2;
+    }
+  else if (!_bfd_elfcore_make_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG2, fpregset_size,
+					     note->descpos + fpregset_off))
+    return false;
+
+  return true;
+}
+
+static bool
+elfcore_grok_solaris_note_impl (bfd *abfd, Elf_Internal_Note *note)
+{
+  if (note == NULL)
+    return false;
+
+  /* core files are identified as 32- or 64-bit, SPARC or x86,
+     by the size of the descsz which matches the sizeof()
+     the type appropriate for that note type (e.g., prstatus_t for
+     SOLARIS_NT_PRSTATUS) for the corresponding architecture
+     on Solaris. The core file bitness may differ from the bitness of
+     gdb itself, so fixed values are used instead of sizeof().
+     Appropriate fixed offsets are also used to obtain data from
+     the note.  */
+
+  switch ((int) note->type)
+    {
+    case SOLARIS_NT_PRSTATUS:
+      switch (note->descsz)
+	{
+	case 508: /* sizeof(prstatus_t) SPARC 32-bit */
+	  return elfcore_grok_solaris_prstatus(abfd, note,
+					       136, 216, 308, 152, 356);
+	case 904: /* sizeof(prstatus_t) SPARC 64-bit */
+	  return elfcore_grok_solaris_prstatus(abfd, note,
+					       264, 360, 520, 304, 600);
+	case 432: /* sizeof(prstatus_t) Intel 32-bit */
+	  return elfcore_grok_solaris_prstatus(abfd, note,
+					       136, 216, 308, 76, 356);
+	case 824: /* sizeof(prstatus_t) Intel 64-bit */
+	  return elfcore_grok_solaris_prstatus(abfd, note,
+					       264, 360, 520, 224, 600);
+	default:
+	  return true;
+	}
+
+    case SOLARIS_NT_PSINFO:
+    case SOLARIS_NT_PRPSINFO:
+      switch (note->descsz)
+	{
+	case 260: /* sizeof(prpsinfo_t) SPARC and Intel 32-bit */
+	  return elfcore_grok_solaris_info(abfd, note, 84, 100);
+	case 328: /* sizeof(prpsinfo_t) SPARC and Intel 64-bit */
+	  return elfcore_grok_solaris_info(abfd, note, 120, 136);
+	case 360: /* sizeof(psinfo_t) SPARC and Intel 32-bit */
+	  return elfcore_grok_solaris_info(abfd, note, 88, 104);
+	case 440: /* sizeof(psinfo_t) SPARC and Intel 64-bit */
+	  return elfcore_grok_solaris_info(abfd, note, 136, 152);
+	default:
+	  return true;
+	}
+
+    case SOLARIS_NT_LWPSTATUS:
+      switch (note->descsz)
+	{
+	case 896: /* sizeof(lwpstatus_t) SPARC 32-bit */
+	  return elfcore_grok_solaris_lwpstatus(abfd, note,
+						152, 344, 400, 496);
+	case 1392: /* sizeof(lwpstatus_t) SPARC 64-bit */
+	  return elfcore_grok_solaris_lwpstatus(abfd, note,
+						304, 544, 544, 848);
+	case 800: /* sizeof(lwpstatus_t) Intel 32-bit */
+	  return elfcore_grok_solaris_lwpstatus(abfd, note,
+						76, 344, 380, 420);
+	case 1296: /* sizeof(lwpstatus_t) Intel 64-bit */
+	  return elfcore_grok_solaris_lwpstatus(abfd, note,
+						224, 544, 528, 768);
+	default:
+	  return true;
+	}
+
+    case SOLARIS_NT_LWPSINFO:
+      /* sizeof(lwpsinfo_t) on 32- and 64-bit, respectively */
+      if (note->descsz == 128 || note->descsz == 152)
+	elf_tdata (abfd)->core->lwpid =
+	  bfd_get_32 (abfd, note->descdata + 4);
+      break;
+
+    default:
+      break;
+    }
+
+  return true;
 }
 
-static bfd_boolean
+/* For name starting with "CORE" this may be either a Solaris
+   core file or a gdb-generated core file.  Do Solaris-specific
+   processing on selected note types first with
+   elfcore_grok_solaris_note(), then process the note
+   in elfcore_grok_note().  */
+
+static bool
+elfcore_grok_solaris_note (bfd *abfd, Elf_Internal_Note *note)
+{
+  if (!elfcore_grok_solaris_note_impl (abfd, note))
+    return false;
+
+  return elfcore_grok_note (abfd, note);
+}
+
+static bool
 elfcore_grok_openbsd_note (bfd *abfd, Elf_Internal_Note *note)
 {
   if (note->type == NT_OPENBSD_PROCINFO)
     return elfcore_grok_openbsd_procinfo (abfd, note);
 
   if (note->type == NT_OPENBSD_REGS)
-    return elfcore_make_note_pseudosection (abfd, ".reg", note);
+    return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG, note);
 
   if (note->type == NT_OPENBSD_FPREGS)
-    return elfcore_make_note_pseudosection (abfd, ".reg2", note);
+    return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_REG2, note);
 
   if (note->type == NT_OPENBSD_XFPREGS)
-    return elfcore_make_note_pseudosection (abfd, ".reg-xfp", note);
+    return elfcore_make_note_pseudosection (abfd, NOTE_PSEUDO_SECTION_XFP, note);
 
   if (note->type == NT_OPENBSD_AUXV)
     return elfcore_make_auxv_note_section (abfd, note, 0);
@@ -10779,18 +11897,18 @@ elfcore_grok_openbsd_note (bfd *abfd, El
 							   SEC_HAS_CONTENTS);
 
       if (sect == NULL)
-	return FALSE;
+	return false;
       sect->size = note->descsz;
       sect->filepos = note->descpos;
       sect->alignment_power = 1 + bfd_get_arch_size (abfd) / 32;
 
-      return TRUE;
+      return true;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_nto_status (bfd *abfd, Elf_Internal_Note *note, long *tid)
 {
   void *ddata = note->descdata;
@@ -10801,7 +11919,7 @@ elfcore_grok_nto_status (bfd *abfd, Elf_
   unsigned flags;
 
   if (note->descsz < 16)
-    return FALSE;
+    return false;
 
   /* nto_procfs_status 'pid' field is at offset 0.  */
   elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, (bfd_byte *) ddata);
@@ -10830,12 +11948,12 @@ elfcore_grok_nto_status (bfd *abfd, Elf_
 
   name = (char *) bfd_alloc (abfd, strlen (buf) + 1);
   if (name == NULL)
-    return FALSE;
+    return false;
   strcpy (name, buf);
 
   sect = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
   if (sect == NULL)
-    return FALSE;
+    return false;
 
   sect->size		= note->descsz;
   sect->filepos		= note->descpos;
@@ -10844,7 +11962,7 @@ elfcore_grok_nto_status (bfd *abfd, Elf_
   return (elfcore_maybe_make_sect (abfd, ".qnx_core_status", sect));
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_nto_regs (bfd *abfd,
 		       Elf_Internal_Note *note,
 		       long tid,
@@ -10859,12 +11977,12 @@ elfcore_grok_nto_regs (bfd *abfd,
 
   name = (char *) bfd_alloc (abfd, strlen (buf) + 1);
   if (name == NULL)
-    return FALSE;
+    return false;
   strcpy (name, buf);
 
   sect = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
   if (sect == NULL)
-    return FALSE;
+    return false;
 
   sect->size		= note->descsz;
   sect->filepos		= note->descpos;
@@ -10874,15 +11992,10 @@ elfcore_grok_nto_regs (bfd *abfd,
   if (elf_tdata (abfd)->core->lwpid == tid)
     return elfcore_maybe_make_sect (abfd, base, sect);
 
-  return TRUE;
+  return true;
 }
 
-#define BFD_QNT_CORE_INFO	7
-#define BFD_QNT_CORE_STATUS	8
-#define BFD_QNT_CORE_GREG	9
-#define BFD_QNT_CORE_FPREG	10
-
-static bfd_boolean
+static bool
 elfcore_grok_nto_note (bfd *abfd, Elf_Internal_Note *note)
 {
   /* Every GREG section has a STATUS section before it.  Store the
@@ -10892,20 +12005,20 @@ elfcore_grok_nto_note (bfd *abfd, Elf_In
 
   switch (note->type)
     {
-    case BFD_QNT_CORE_INFO:
+    case QNT_CORE_INFO:
       return elfcore_make_note_pseudosection (abfd, ".qnx_core_info", note);
-    case BFD_QNT_CORE_STATUS:
+    case QNT_CORE_STATUS:
       return elfcore_grok_nto_status (abfd, note, &tid);
-    case BFD_QNT_CORE_GREG:
-      return elfcore_grok_nto_regs (abfd, note, tid, ".reg");
-    case BFD_QNT_CORE_FPREG:
-      return elfcore_grok_nto_regs (abfd, note, tid, ".reg2");
+    case QNT_CORE_GREG:
+      return elfcore_grok_nto_regs (abfd, note, tid, NOTE_PSEUDO_SECTION_REG);
+    case QNT_CORE_FPREG:
+      return elfcore_grok_nto_regs (abfd, note, tid, NOTE_PSEUDO_SECTION_REG2);
     default:
-      return TRUE;
+      return true;
     }
 }
 
-static bfd_boolean
+static bool
 elfcore_grok_spu_note (bfd *abfd, Elf_Internal_Note *note)
 {
   char *name;
@@ -10916,19 +12029,19 @@ elfcore_grok_spu_note (bfd *abfd, Elf_In
   len = note->namesz;
   name = (char *) bfd_alloc (abfd, len);
   if (name == NULL)
-    return FALSE;
+    return false;
   memcpy (name, note->namedata, len);
   name[len - 1] = '\0';
 
   sect = bfd_make_section_anyway_with_flags (abfd, name, SEC_HAS_CONTENTS);
   if (sect == NULL)
-    return FALSE;
+    return false;
 
   sect->size		= note->descsz;
   sect->filepos		= note->descpos;
   sect->alignment_power = 1;
 
-  return TRUE;
+  return true;
 }
 
 /* Function: elfcore_write_note
@@ -11049,7 +12162,7 @@ elfcore_write_prpsinfo (bfd  *abfd,
       strncpy (data.pr_fname, fname, sizeof (data.pr_fname));
       strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs));
       return elfcore_write_note (abfd, buf, bufsiz,
-				 "CORE", note_type, &data, sizeof (data));
+				 NOTE_NAME_CORE, note_type, &data, sizeof (data));
     }
   else
 # endif
@@ -11066,7 +12179,7 @@ elfcore_write_prpsinfo (bfd  *abfd,
       strncpy (data.pr_fname, fname, sizeof (data.pr_fname));
       strncpy (data.pr_psargs, psargs, sizeof (data.pr_psargs));
       return elfcore_write_note (abfd, buf, bufsiz,
-				 "CORE", note_type, &data, sizeof (data));
+				 NOTE_NAME_CORE, note_type, &data, sizeof (data));
     }
 #endif	/* PSINFO_T or PRPSINFO_T */
 
@@ -11087,7 +12200,7 @@ elfcore_write_linux_prpsinfo32
       struct elf_external_linux_prpsinfo32_ugid16 data;
 
       swap_linux_prpsinfo32_ugid16_out (abfd, prpsinfo, &data);
-      return elfcore_write_note (abfd, buf, bufsiz, "CORE", NT_PRPSINFO,
+      return elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_CORE, NT_PRPSINFO,
 				 &data, sizeof (data));
     }
   else
@@ -11095,7 +12208,7 @@ elfcore_write_linux_prpsinfo32
       struct elf_external_linux_prpsinfo32_ugid32 data;
 
       swap_linux_prpsinfo32_ugid32_out (abfd, prpsinfo, &data);
-      return elfcore_write_note (abfd, buf, bufsiz, "CORE", NT_PRPSINFO,
+      return elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_CORE, NT_PRPSINFO,
 				 &data, sizeof (data));
     }
 }
@@ -11111,7 +12224,7 @@ elfcore_write_linux_prpsinfo64
 
       swap_linux_prpsinfo64_ugid16_out (abfd, prpsinfo, &data);
       return elfcore_write_note (abfd, buf, bufsiz,
-				 "CORE", NT_PRPSINFO, &data, sizeof (data));
+				 NOTE_NAME_CORE, NT_PRPSINFO, &data, sizeof (data));
     }
   else
     {
@@ -11119,7 +12232,7 @@ elfcore_write_linux_prpsinfo64
 
       swap_linux_prpsinfo64_ugid32_out (abfd, prpsinfo, &data);
       return elfcore_write_note (abfd, buf, bufsiz,
-				 "CORE", NT_PRPSINFO, &data, sizeof (data));
+				 NOTE_NAME_CORE, NT_PRPSINFO, &data, sizeof (data));
     }
 }
 
@@ -11153,7 +12266,7 @@ elfcore_write_prstatus (bfd *abfd,
       prstat.pr_pid = pid;
       prstat.pr_cursig = cursig;
       memcpy (&prstat.pr_reg, gregs, sizeof (prstat.pr_reg));
-      return elfcore_write_note (abfd, buf, bufsiz, "CORE",
+      return elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_CORE,
 				 NT_PRSTATUS, &prstat, sizeof (prstat));
     }
   else
@@ -11165,7 +12278,7 @@ elfcore_write_prstatus (bfd *abfd,
       prstat.pr_pid = pid;
       prstat.pr_cursig = cursig;
       memcpy (&prstat.pr_reg, gregs, sizeof (prstat.pr_reg));
-      return elfcore_write_note (abfd, buf, bufsiz, "CORE",
+      return elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_CORE,
 				 NT_PRSTATUS, &prstat, sizeof (prstat));
     }
 #endif /* HAVE_PRSTATUS_T */
@@ -11184,7 +12297,6 @@ elfcore_write_lwpstatus (bfd *abfd,
 			 const void *gregs)
 {
   lwpstatus_t lwpstat;
-  const char *note_name = "CORE";
 
   memset (&lwpstat, 0, sizeof (lwpstat));
   lwpstat.pr_lwpid  = pid >> 16;
@@ -11200,7 +12312,7 @@ elfcore_write_lwpstatus (bfd *abfd,
 	  gregs, sizeof (lwpstat.pr_context.uc_mcontext.__gregs));
 #endif
 #endif
-  return elfcore_write_note (abfd, buf, bufsiz, note_name,
+  return elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_CORE,
 			     NT_LWPSTATUS, &lwpstat, sizeof (lwpstat));
 }
 #endif /* HAVE_LWPSTATUS_T */
@@ -11214,7 +12326,6 @@ elfcore_write_pstatus (bfd *abfd,
 		       int cursig ATTRIBUTE_UNUSED,
 		       const void *gregs ATTRIBUTE_UNUSED)
 {
-  const char *note_name = "CORE";
 #if defined (HAVE_PSTATUS32_T)
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
@@ -11224,7 +12335,7 @@ elfcore_write_pstatus (bfd *abfd,
 
       memset (&pstat, 0, sizeof (pstat));
       pstat.pr_pid = pid & 0xffff;
-      buf = elfcore_write_note (abfd, buf, bufsiz, note_name,
+      buf = elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_CORE,
 				NT_PSTATUS, &pstat, sizeof (pstat));
       return buf;
     }
@@ -11235,7 +12346,7 @@ elfcore_write_pstatus (bfd *abfd,
 
       memset (&pstat, 0, sizeof (pstat));
       pstat.pr_pid = pid & 0xffff;
-      buf = elfcore_write_note (abfd, buf, bufsiz, note_name,
+      buf = elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_CORE,
 				NT_PSTATUS, &pstat, sizeof (pstat));
       return buf;
     }
@@ -11249,9 +12360,8 @@ elfcore_write_prfpreg (bfd *abfd,
 		       const void *fpregs,
 		       int size)
 {
-  const char *note_name = "CORE";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_FPREGSET, fpregs, size);
+			     NOTE_NAME_CORE, NT_FPREGSET, fpregs, size);
 }
 
 char *
@@ -11261,9 +12371,8 @@ elfcore_write_prxfpreg (bfd *abfd,
 			const void *xfpregs,
 			int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PRXFPREG, xfpregs, size);
+			     NOTE_NAME_LINUX, NT_PRXFPREG, xfpregs, size);
 }
 
 char *
@@ -11271,14 +12380,41 @@ elfcore_write_xstatereg (bfd *abfd, char
 			 const void *xfpregs, int size)
 {
   char *note_name;
+
   if (get_elf_backend_data (abfd)->elf_osabi == ELFOSABI_FREEBSD)
-    note_name = "FreeBSD";
+    note_name = NOTE_NAME_FREEBSD;
   else
-    note_name = "LINUX";
+    note_name = NOTE_NAME_LINUX;
+
   return elfcore_write_note (abfd, buf, bufsiz,
 			     note_name, NT_X86_XSTATE, xfpregs, size);
 }
 
+static char *
+elfcore_write_sspreg (bfd *abfd, char *buf, int *bufsiz,
+		      const void *ssp, int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_X86_SHSTK, ssp, size);
+}
+
+char *
+elfcore_write_x86_segbases (bfd *abfd, char *buf, int *bufsiz,
+			    const void *regs, int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_FREEBSD, NT_FREEBSD_X86_SEGBASES,
+			     regs, size);
+}
+
+char *
+elfcore_write_i386_tls (bfd *abfd, char *buf, int *bufsiz,
+			    const void *regs, int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_LINUX, NT_386_TLS,
+			     regs, size);
+}
+
 char *
 elfcore_write_ppc_vmx (bfd *abfd,
 		       char *buf,
@@ -11286,9 +12422,8 @@ elfcore_write_ppc_vmx (bfd *abfd,
 		       const void *ppc_vmx,
 		       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_VMX, ppc_vmx, size);
+			     NOTE_NAME_LINUX, NT_PPC_VMX, ppc_vmx, size);
 }
 
 char *
@@ -11298,9 +12433,8 @@ elfcore_write_ppc_vsx (bfd *abfd,
 		       const void *ppc_vsx,
 		       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_VSX, ppc_vsx, size);
+			     NOTE_NAME_LINUX, NT_PPC_VSX, ppc_vsx, size);
 }
 
 char *
@@ -11310,9 +12444,8 @@ elfcore_write_ppc_tar (bfd *abfd,
 		       const void *ppc_tar,
 		       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TAR, ppc_tar, size);
+			     NOTE_NAME_LINUX, NT_PPC_TAR, ppc_tar, size);
 }
 
 char *
@@ -11322,9 +12455,8 @@ elfcore_write_ppc_ppr (bfd *abfd,
 		       const void *ppc_ppr,
 		       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_PPR, ppc_ppr, size);
+			     NOTE_NAME_LINUX, NT_PPC_PPR, ppc_ppr, size);
 }
 
 char *
@@ -11334,9 +12466,8 @@ elfcore_write_ppc_dscr (bfd *abfd,
 			const void *ppc_dscr,
 			int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_DSCR, ppc_dscr, size);
+			     NOTE_NAME_LINUX, NT_PPC_DSCR, ppc_dscr, size);
 }
 
 char *
@@ -11346,9 +12477,8 @@ elfcore_write_ppc_ebb (bfd *abfd,
 		       const void *ppc_ebb,
 		       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_EBB, ppc_ebb, size);
+			     NOTE_NAME_LINUX, NT_PPC_EBB, ppc_ebb, size);
 }
 
 char *
@@ -11358,9 +12488,8 @@ elfcore_write_ppc_pmu (bfd *abfd,
 		       const void *ppc_pmu,
 		       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_PMU, ppc_pmu, size);
+			     NOTE_NAME_LINUX, NT_PPC_PMU, ppc_pmu, size);
 }
 
 char *
@@ -11370,9 +12499,9 @@ elfcore_write_ppc_tm_cgpr (bfd *abfd,
 			   const void *ppc_tm_cgpr,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TM_CGPR, ppc_tm_cgpr, size);
+			     NOTE_NAME_LINUX, NT_PPC_TM_CGPR,
+			     ppc_tm_cgpr, size);
 }
 
 char *
@@ -11382,9 +12511,9 @@ elfcore_write_ppc_tm_cfpr (bfd *abfd,
 			   const void *ppc_tm_cfpr,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TM_CFPR, ppc_tm_cfpr, size);
+			     NOTE_NAME_LINUX, NT_PPC_TM_CFPR,
+			     ppc_tm_cfpr, size);
 }
 
 char *
@@ -11394,9 +12523,9 @@ elfcore_write_ppc_tm_cvmx (bfd *abfd,
 			   const void *ppc_tm_cvmx,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TM_CVMX, ppc_tm_cvmx, size);
+			     NOTE_NAME_LINUX, NT_PPC_TM_CVMX,
+			     ppc_tm_cvmx, size);
 }
 
 char *
@@ -11406,9 +12535,9 @@ elfcore_write_ppc_tm_cvsx (bfd *abfd,
 			   const void *ppc_tm_cvsx,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TM_CVSX, ppc_tm_cvsx, size);
+			     NOTE_NAME_LINUX, NT_PPC_TM_CVSX,
+			     ppc_tm_cvsx, size);
 }
 
 char *
@@ -11418,9 +12547,9 @@ elfcore_write_ppc_tm_spr (bfd *abfd,
 			  const void *ppc_tm_spr,
 			  int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TM_SPR, ppc_tm_spr, size);
+			     NOTE_NAME_LINUX, NT_PPC_TM_SPR,
+			     ppc_tm_spr, size);
 }
 
 char *
@@ -11430,9 +12559,9 @@ elfcore_write_ppc_tm_ctar (bfd *abfd,
 			   const void *ppc_tm_ctar,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TM_CTAR, ppc_tm_ctar, size);
+			     NOTE_NAME_LINUX, NT_PPC_TM_CTAR,
+			     ppc_tm_ctar, size);
 }
 
 char *
@@ -11442,9 +12571,9 @@ elfcore_write_ppc_tm_cppr (bfd *abfd,
 			   const void *ppc_tm_cppr,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TM_CPPR, ppc_tm_cppr, size);
+			     NOTE_NAME_LINUX, NT_PPC_TM_CPPR,
+			     ppc_tm_cppr, size);
 }
 
 char *
@@ -11454,9 +12583,9 @@ elfcore_write_ppc_tm_cdscr (bfd *abfd,
 			    const void *ppc_tm_cdscr,
 			    int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_PPC_TM_CDSCR, ppc_tm_cdscr, size);
+			     NOTE_NAME_LINUX, NT_PPC_TM_CDSCR,
+			     ppc_tm_cdscr, size);
 }
 
 static char *
@@ -11466,9 +12595,8 @@ elfcore_write_s390_high_gprs (bfd *abfd,
 			      const void *s390_high_gprs,
 			      int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_HIGH_GPRS,
+			     NOTE_NAME_LINUX, NT_S390_HIGH_GPRS,
 			     s390_high_gprs, size);
 }
 
@@ -11479,9 +12607,9 @@ elfcore_write_s390_timer (bfd *abfd,
 			  const void *s390_timer,
 			  int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_TIMER, s390_timer, size);
+			     NOTE_NAME_LINUX, NT_S390_TIMER,
+			     s390_timer, size);
 }
 
 char *
@@ -11491,9 +12619,9 @@ elfcore_write_s390_todcmp (bfd *abfd,
 			   const void *s390_todcmp,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_TODCMP, s390_todcmp, size);
+			     NOTE_NAME_LINUX, NT_S390_TODCMP,
+			     s390_todcmp, size);
 }
 
 char *
@@ -11503,9 +12631,9 @@ elfcore_write_s390_todpreg (bfd *abfd,
 			    const void *s390_todpreg,
 			    int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_TODPREG, s390_todpreg, size);
+			     NOTE_NAME_LINUX, NT_S390_TODPREG,
+			     s390_todpreg, size);
 }
 
 char *
@@ -11515,9 +12643,8 @@ elfcore_write_s390_ctrs (bfd *abfd,
 			 const void *s390_ctrs,
 			 int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_CTRS, s390_ctrs, size);
+			     NOTE_NAME_LINUX, NT_S390_CTRS, s390_ctrs, size);
 }
 
 char *
@@ -11527,9 +12654,9 @@ elfcore_write_s390_prefix (bfd *abfd,
 			   const void *s390_prefix,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_PREFIX, s390_prefix, size);
+			     NOTE_NAME_LINUX, NT_S390_PREFIX,
+			     s390_prefix, size);
 }
 
 char *
@@ -11539,9 +12666,8 @@ elfcore_write_s390_last_break (bfd *abfd
 			       const void *s390_last_break,
 			       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_LAST_BREAK,
+			     NOTE_NAME_LINUX, NT_S390_LAST_BREAK,
 			     s390_last_break, size);
 }
 
@@ -11552,9 +12678,8 @@ elfcore_write_s390_system_call (bfd *abf
 				const void *s390_system_call,
 				int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_SYSTEM_CALL,
+			     NOTE_NAME_LINUX, NT_S390_SYSTEM_CALL,
 			     s390_system_call, size);
 }
 
@@ -11565,9 +12690,8 @@ elfcore_write_s390_tdb (bfd *abfd,
 			const void *s390_tdb,
 			int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_TDB, s390_tdb, size);
+			     NOTE_NAME_LINUX, NT_S390_TDB, s390_tdb, size);
 }
 
 char *
@@ -11577,9 +12701,9 @@ elfcore_write_s390_vxrs_low (bfd *abfd,
 			     const void *s390_vxrs_low,
 			     int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_VXRS_LOW, s390_vxrs_low, size);
+			     NOTE_NAME_LINUX, NT_S390_VXRS_LOW,
+			     s390_vxrs_low, size);
 }
 
 char *
@@ -11589,9 +12713,8 @@ elfcore_write_s390_vxrs_high (bfd *abfd,
 			     const void *s390_vxrs_high,
 			     int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_VXRS_HIGH,
+			     NOTE_NAME_LINUX, NT_S390_VXRS_HIGH,
 			     s390_vxrs_high, size);
 }
 
@@ -11602,9 +12725,8 @@ elfcore_write_s390_gs_cb (bfd *abfd,
 			  const void *s390_gs_cb,
 			  int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_GS_CB,
+			     NOTE_NAME_LINUX, NT_S390_GS_CB,
 			     s390_gs_cb, size);
 }
 
@@ -11615,9 +12737,8 @@ elfcore_write_s390_gs_bc (bfd *abfd,
 			  const void *s390_gs_bc,
 			  int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_S390_GS_BC,
+			     NOTE_NAME_LINUX, NT_S390_GS_BC,
 			     s390_gs_bc, size);
 }
 
@@ -11628,9 +12749,9 @@ elfcore_write_arm_vfp (bfd *abfd,
 		       const void *arm_vfp,
 		       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_ARM_VFP, arm_vfp, size);
+			     NOTE_NAME_LINUX, NT_ARM_VFP,
+			     arm_vfp, size);
 }
 
 char *
@@ -11640,9 +12761,8 @@ elfcore_write_aarch_tls (bfd *abfd,
 		       const void *aarch_tls,
 		       int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_ARM_TLS, aarch_tls, size);
+			     NOTE_NAME_LINUX, NT_ARM_TLS, aarch_tls, size);
 }
 
 char *
@@ -11652,9 +12772,9 @@ elfcore_write_aarch_hw_break (bfd *abfd,
 			    const void *aarch_hw_break,
 			    int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_ARM_HW_BREAK, aarch_hw_break, size);
+			     NOTE_NAME_LINUX, NT_ARM_HW_BREAK,
+			     aarch_hw_break, size);
 }
 
 char *
@@ -11664,9 +12784,9 @@ elfcore_write_aarch_hw_watch (bfd *abfd,
 			    const void *aarch_hw_watch,
 			    int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_ARM_HW_WATCH, aarch_hw_watch, size);
+			     NOTE_NAME_LINUX, NT_ARM_HW_WATCH,
+			     aarch_hw_watch, size);
 }
 
 char *
@@ -11676,9 +12796,8 @@ elfcore_write_aarch_sve (bfd *abfd,
 			 const void *aarch_sve,
 			 int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_ARM_SVE, aarch_sve, size);
+			     NOTE_NAME_LINUX, NT_ARM_SVE, aarch_sve, size);
 }
 
 char *
@@ -11688,9 +12807,166 @@ elfcore_write_aarch_pauth (bfd *abfd,
 			   const void *aarch_pauth,
 			   int size)
 {
-  char *note_name = "LINUX";
   return elfcore_write_note (abfd, buf, bufsiz,
-			     note_name, NT_ARM_PAC_MASK, aarch_pauth, size);
+			     NOTE_NAME_LINUX, NT_ARM_PAC_MASK,
+			     aarch_pauth, size);
+}
+
+char *
+elfcore_write_aarch_mte (bfd *abfd,
+			 char *buf,
+			 int *bufsiz,
+			 const void *aarch_mte,
+			 int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_ARM_TAGGED_ADDR_CTRL,
+			     aarch_mte, size);
+}
+
+char *
+elfcore_write_aarch_ssve (bfd *abfd,
+			  char *buf,
+			  int *bufsiz,
+			  const void *aarch_ssve,
+			  int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_ARM_SSVE,
+			     aarch_ssve, size);
+}
+
+char *
+elfcore_write_aarch_za (bfd *abfd,
+			char *buf,
+			int *bufsiz,
+			const void *aarch_za,
+			int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_ARM_ZA,
+			     aarch_za, size);
+}
+
+/* Write the buffer of zt register values in aarch_zt (length SIZE) into
+   the note buffer BUF and update *BUFSIZ.  ABFD is the bfd the note is being
+   written into.  Return a pointer to the new start of the note buffer, to
+   replace BUF which may no longer be valid.  */
+
+char *
+elfcore_write_aarch_zt (bfd *abfd,
+			char *buf,
+			int *bufsiz,
+			const void *aarch_zt,
+			int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_ARM_ZT,
+			     aarch_zt, size);
+}
+
+/* Write the buffer of GCS register values in AARCH_GCS (length SIZE) into
+   the note buffer BUF and update *BUFSIZ.  ABFD is the bfd the note is being
+   written into.  Return a pointer to the new start of the note buffer, to
+   replace BUF which may no longer be valid.  */
+
+static char *
+elfcore_write_aarch_gcs (bfd *abfd, char *buf, int *bufsiz,
+			 const void *aarch_gcs, int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz, NOTE_NAME_LINUX, NT_ARM_GCS,
+			     aarch_gcs, size);
+}
+
+char *
+elfcore_write_arc_v2 (bfd *abfd,
+		      char *buf,
+		      int *bufsiz,
+		      const void *arc_v2,
+		      int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_ARC_V2, arc_v2, size);
+}
+
+char *
+elfcore_write_loongarch_cpucfg (bfd *abfd,
+				char *buf,
+				int *bufsiz,
+				const void *loongarch_cpucfg,
+				int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_LARCH_CPUCFG,
+			     loongarch_cpucfg, size);
+}
+
+char *
+elfcore_write_loongarch_lbt (bfd *abfd,
+			     char *buf,
+			     int *bufsiz,
+			     const void *loongarch_lbt,
+			     int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_LARCH_LBT,
+			     loongarch_lbt, size);
+}
+
+char *
+elfcore_write_loongarch_lsx (bfd *abfd,
+			     char *buf,
+			     int *bufsiz,
+			     const void *loongarch_lsx,
+			     int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_LARCH_LSX,
+			     loongarch_lsx, size);
+}
+
+char *
+elfcore_write_loongarch_lasx (bfd *abfd,
+			      char *buf,
+			      int *bufsiz,
+			      const void *loongarch_lasx,
+			      int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_LINUX, NT_LARCH_LASX,
+			     loongarch_lasx, size);
+}
+
+/* Write the buffer of csr values in CSRS (length SIZE) into the note
+   buffer BUF and update *BUFSIZ.  ABFD is the bfd the note is being
+   written into.  Return a pointer to the new start of the note buffer, to
+   replace BUF which may no longer be valid.  */
+
+char *
+elfcore_write_riscv_csr (bfd *abfd,
+			 char *buf,
+			 int *bufsiz,
+			 const void *csrs,
+			 int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_GDB, NT_RISCV_CSR, csrs, size);
+}
+
+/* Write the target description (a string) pointed to by TDESC, length
+   SIZE, into the note buffer BUF, and update *BUFSIZ.  ABFD is the bfd the
+   note is being written into.  Return a pointer to the new start of the
+   note buffer, to replace BUF which may no longer be valid.  */
+
+char *
+elfcore_write_gdb_tdesc (bfd *abfd,
+			 char *buf,
+			 int *bufsiz,
+			 const void *tdesc,
+			 int size)
+{
+  return elfcore_write_note (abfd, buf, bufsiz,
+			     NOTE_NAME_GDB, NT_GDB_TDESC, tdesc, size);
 }
 
 char *
@@ -11701,84 +12977,85 @@ elfcore_write_register_note (bfd *abfd,
 			     const void *data,
 			     int size)
 {
-  if (strcmp (section, ".reg2") == 0)
-    return elfcore_write_prfpreg (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-xfp") == 0)
-    return elfcore_write_prxfpreg (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-xstate") == 0)
-    return elfcore_write_xstatereg (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-vmx") == 0)
-    return elfcore_write_ppc_vmx (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-vsx") == 0)
-    return elfcore_write_ppc_vsx (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tar") == 0)
-    return elfcore_write_ppc_tar (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-ppr") == 0)
-    return elfcore_write_ppc_ppr (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-dscr") == 0)
-    return elfcore_write_ppc_dscr (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-ebb") == 0)
-    return elfcore_write_ppc_ebb (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-pmu") == 0)
-    return elfcore_write_ppc_pmu (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tm-cgpr") == 0)
-    return elfcore_write_ppc_tm_cgpr (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tm-cfpr") == 0)
-    return elfcore_write_ppc_tm_cfpr (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tm-cvmx") == 0)
-    return elfcore_write_ppc_tm_cvmx (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tm-cvsx") == 0)
-    return elfcore_write_ppc_tm_cvsx (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tm-spr") == 0)
-    return elfcore_write_ppc_tm_spr (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tm-ctar") == 0)
-    return elfcore_write_ppc_tm_ctar (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tm-cppr") == 0)
-    return elfcore_write_ppc_tm_cppr (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-ppc-tm-cdscr") == 0)
-    return elfcore_write_ppc_tm_cdscr (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-high-gprs") == 0)
-    return elfcore_write_s390_high_gprs (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-timer") == 0)
-    return elfcore_write_s390_timer (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-todcmp") == 0)
-    return elfcore_write_s390_todcmp (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-todpreg") == 0)
-    return elfcore_write_s390_todpreg (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-ctrs") == 0)
-    return elfcore_write_s390_ctrs (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-prefix") == 0)
-    return elfcore_write_s390_prefix (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-last-break") == 0)
-    return elfcore_write_s390_last_break (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-system-call") == 0)
-    return elfcore_write_s390_system_call (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-tdb") == 0)
-    return elfcore_write_s390_tdb (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-vxrs-low") == 0)
-    return elfcore_write_s390_vxrs_low (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-vxrs-high") == 0)
-    return elfcore_write_s390_vxrs_high (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-gs-cb") == 0)
-    return elfcore_write_s390_gs_cb (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-s390-gs-bc") == 0)
-    return elfcore_write_s390_gs_bc (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-arm-vfp") == 0)
-    return elfcore_write_arm_vfp (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-aarch-tls") == 0)
-    return elfcore_write_aarch_tls (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-aarch-hw-break") == 0)
-    return elfcore_write_aarch_hw_break (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-aarch-hw-watch") == 0)
-    return elfcore_write_aarch_hw_watch (abfd, buf, bufsiz, data, size);
-  if (strcmp (section, ".reg-aarch-sve") == 0)
-    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);
+  static const struct
+    {
+      const char * section_name;
+      char *       (*writer) (bfd *, char *, int *, const void *, int);
+    }
+  note_writers [] =
+    {
+      { NOTE_PSEUDO_SECTION_AARCH_GCS,        elfcore_write_aarch_gcs},
+      { NOTE_PSEUDO_SECTION_AARCH_HW_BREAK,   elfcore_write_aarch_hw_break},
+      { NOTE_PSEUDO_SECTION_AARCH_HW_WATCH,   elfcore_write_aarch_hw_watch},
+      { NOTE_PSEUDO_SECTION_AARCH_MTE,        elfcore_write_aarch_mte},
+      { NOTE_PSEUDO_SECTION_AARCH_PAUTH,      elfcore_write_aarch_pauth},
+      { NOTE_PSEUDO_SECTION_AARCH_SSVE,       elfcore_write_aarch_ssve},
+      { NOTE_PSEUDO_SECTION_AARCH_SVE,        elfcore_write_aarch_sve},
+      { NOTE_PSEUDO_SECTION_AARCH_TLS,        elfcore_write_aarch_tls},
+      { NOTE_PSEUDO_SECTION_AARCH_ZA,         elfcore_write_aarch_za},
+      { NOTE_PSEUDO_SECTION_AARCH_ZT,         elfcore_write_aarch_zt},
+      { NOTE_PSEUDO_SECTION_ARC_V2,           elfcore_write_arc_v2},
+      { NOTE_PSEUDO_SECTION_ARM_VFP,          elfcore_write_arm_vfp},
+      { NOTE_PSEUDO_SECTION_I386_TLS,         elfcore_write_i386_tls},
+      { NOTE_PSEUDO_SECTION_LOONGARCH_CPUCFG, elfcore_write_loongarch_cpucfg},
+      { NOTE_PSEUDO_SECTION_LOONGARCH_LASX,   elfcore_write_loongarch_lasx},
+      { NOTE_PSEUDO_SECTION_LOONGARCH_LBT,    elfcore_write_loongarch_lbt},
+      { NOTE_PSEUDO_SECTION_LOONGARCH_LSX,    elfcore_write_loongarch_lsx},
+      { NOTE_PSEUDO_SECTION_PPC_DSCR,         elfcore_write_ppc_dscr},
+      { NOTE_PSEUDO_SECTION_PPC_EBB,          elfcore_write_ppc_ebb},
+      { NOTE_PSEUDO_SECTION_PPC_PMU,          elfcore_write_ppc_pmu},
+      { NOTE_PSEUDO_SECTION_PPC_PPR,          elfcore_write_ppc_ppr},
+      { NOTE_PSEUDO_SECTION_PPC_TAR,          elfcore_write_ppc_tar},
+      { NOTE_PSEUDO_SECTION_PPC_TM_CDSCR,     elfcore_write_ppc_tm_cdscr},
+      { NOTE_PSEUDO_SECTION_PPC_TM_CFPR,      elfcore_write_ppc_tm_cfpr},
+      { NOTE_PSEUDO_SECTION_PPC_TM_CGPR,      elfcore_write_ppc_tm_cgpr},
+      { NOTE_PSEUDO_SECTION_PPC_TM_CPPR,      elfcore_write_ppc_tm_cppr},
+      { NOTE_PSEUDO_SECTION_PPC_TM_CTAR,      elfcore_write_ppc_tm_ctar},
+      { NOTE_PSEUDO_SECTION_PPC_TM_CVMX,      elfcore_write_ppc_tm_cvmx},
+      { NOTE_PSEUDO_SECTION_PPC_TM_CVSX,      elfcore_write_ppc_tm_cvsx},
+      { NOTE_PSEUDO_SECTION_PPC_TM_SPR,       elfcore_write_ppc_tm_spr},
+      { NOTE_PSEUDO_SECTION_PPC_VMX,          elfcore_write_ppc_vmx},
+      { NOTE_PSEUDO_SECTION_PPC_VSX,          elfcore_write_ppc_vsx},
+      { NOTE_PSEUDO_SECTION_REG2,             elfcore_write_prfpreg},
+      { NOTE_PSEUDO_SECTION_RISCV_CSR,        elfcore_write_riscv_csr},
+      { NOTE_PSEUDO_SECTION_S390_CTRS,        elfcore_write_s390_ctrs},
+      { NOTE_PSEUDO_SECTION_S390_GS_BC,       elfcore_write_s390_gs_bc},
+      { NOTE_PSEUDO_SECTION_S390_GS_CB,       elfcore_write_s390_gs_cb},
+      { NOTE_PSEUDO_SECTION_S390_HIGH_GPRS,   elfcore_write_s390_high_gprs},
+      { NOTE_PSEUDO_SECTION_S390_LAST_BREAK,  elfcore_write_s390_last_break},
+      { NOTE_PSEUDO_SECTION_S390_PREFIX,      elfcore_write_s390_prefix},
+      { NOTE_PSEUDO_SECTION_S390_SYSTEM_CALL, elfcore_write_s390_system_call},
+      { NOTE_PSEUDO_SECTION_S390_TDB,         elfcore_write_s390_tdb},
+      { NOTE_PSEUDO_SECTION_S390_TIMER,       elfcore_write_s390_timer},
+      { NOTE_PSEUDO_SECTION_S390_TODCMP,      elfcore_write_s390_todcmp},
+      { NOTE_PSEUDO_SECTION_S390_TODPREG,     elfcore_write_s390_todpreg},
+      { NOTE_PSEUDO_SECTION_S390_VXRS_HIGH,   elfcore_write_s390_vxrs_high},
+      { NOTE_PSEUDO_SECTION_S390_VXRS_LOW,    elfcore_write_s390_vxrs_low},
+      { NOTE_PSEUDO_SECTION_SSP,              elfcore_write_sspreg},
+      { NOTE_PSEUDO_SECTION_TDESC,            elfcore_write_gdb_tdesc},
+      { NOTE_PSEUDO_SECTION_X86_SEGBASES,     elfcore_write_x86_segbases},
+      { NOTE_PSEUDO_SECTION_XFP,              elfcore_write_prxfpreg},
+      { NOTE_PSEUDO_SECTION_XSTATE,           elfcore_write_xstatereg} /* NB/ No comma.  */
+    };
+
+  int i;
+
+  for (i = ARRAY_SIZE (note_writers); i--;)
+    if (streq (section, note_writers[i].section_name))
+      return  note_writers[i].writer (abfd, buf, bufsiz, data, size);
+
   return NULL;
 }
 
-static bfd_boolean
+char *
+elfcore_write_file_note (bfd *obfd, char *note_data, int *note_size,
+			 const void *buf, int bufsiz)
+{
+  return elfcore_write_note (obfd, note_data, note_size,
+			     NOTE_NAME_CORE, NT_FILE, buf, bufsiz);
+}
+
+static bool
 elf_parse_notes (bfd *abfd, char *buf, size_t size, file_ptr offset,
 		 size_t align)
 {
@@ -11791,7 +13068,7 @@ elf_parse_notes (bfd *abfd, char *buf, s
   if (align < 4)
     align = 4;
   if (align != 4 && align != 8)
-    return FALSE;
+    return false;
 
   p = buf;
   while (p < buf + size)
@@ -11800,14 +13077,14 @@ elf_parse_notes (bfd *abfd, char *buf, s
       Elf_Internal_Note in;
 
       if (offsetof (Elf_External_Note, name) > buf - p + size)
-	return FALSE;
+	return false;
 
       in.type = H_GET_32 (abfd, xnp->type);
 
       in.namesz = H_GET_32 (abfd, xnp->namesz);
       in.namedata = xnp->name;
       if (in.namesz > buf - in.namedata + size)
-	return FALSE;
+	return false;
 
       in.descsz = H_GET_32 (abfd, xnp->descsz);
       in.descdata = p + ELF_NOTE_DESC_OFFSET (in.namesz, align);
@@ -11815,31 +13092,32 @@ elf_parse_notes (bfd *abfd, char *buf, s
       if (in.descsz != 0
 	  && (in.descdata >= buf + size
 	      || in.descsz > buf - in.descdata + size))
-	return FALSE;
+	return false;
 
       switch (bfd_get_format (abfd))
 	{
 	default:
-	  return TRUE;
+	  return true;
 
 	case bfd_core:
 	  {
 #define GROKER_ELEMENT(S,F) {S, sizeof (S) - 1, F}
-	    struct
+	    static const struct
 	    {
 	      const char * string;
 	      size_t len;
-	      bfd_boolean (* func)(bfd *, Elf_Internal_Note *);
+	      bool (*func) (bfd *, Elf_Internal_Note *);
 	    }
 	    grokers[] =
 	    {
 	      GROKER_ELEMENT ("", elfcore_grok_note),
-	      GROKER_ELEMENT ("FreeBSD", elfcore_grok_freebsd_note),
+	      GROKER_ELEMENT (NOTE_NAME_FREEBSD, elfcore_grok_freebsd_note),
 	      GROKER_ELEMENT ("NetBSD-CORE", elfcore_grok_netbsd_note),
-	      GROKER_ELEMENT ( "OpenBSD", elfcore_grok_openbsd_note),
+	      GROKER_ELEMENT ("OpenBSD", elfcore_grok_openbsd_note),
 	      GROKER_ELEMENT ("QNX", elfcore_grok_nto_note),
 	      GROKER_ELEMENT ("SPU/", elfcore_grok_spu_note),
-	      GROKER_ELEMENT ("GNU", elfobj_grok_gnu_note)
+	      GROKER_ELEMENT ("GNU", elfobj_grok_gnu_note),
+	      GROKER_ELEMENT (NOTE_NAME_CORE, elfcore_grok_solaris_note)
 	    };
 #undef GROKER_ELEMENT
 	    int i;
@@ -11851,7 +13129,7 @@ elf_parse_notes (bfd *abfd, char *buf, s
 				grokers[i].len) == 0)
 		  {
 		    if (! grokers[i].func (abfd, & in))
-		      return FALSE;
+		      return false;
 		    break;
 		  }
 	      }
@@ -11862,13 +13140,13 @@ elf_parse_notes (bfd *abfd, char *buf, s
 	  if (in.namesz == sizeof "GNU" && strcmp (in.namedata, "GNU") == 0)
 	    {
 	      if (! elfobj_grok_gnu_note (abfd, &in))
-		return FALSE;
+		return false;
 	    }
 	  else if (in.namesz == sizeof "stapsdt"
 		   && strcmp (in.namedata, "stapsdt") == 0)
 	    {
 	      if (! elfobj_grok_stapsdt_note (abfd, &in))
-		return FALSE;
+		return false;
 	    }
 	  break;
 	}
@@ -11876,38 +13154,37 @@ elf_parse_notes (bfd *abfd, char *buf, s
       p += ELF_NOTE_NEXT_OFFSET (in.namesz, in.descsz, align);
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 elf_read_notes (bfd *abfd, file_ptr offset, bfd_size_type size,
 		size_t align)
 {
   char *buf;
 
   if (size == 0 || (size + 1) == 0)
-    return TRUE;
+    return true;
 
   if (bfd_seek (abfd, offset, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
-  buf = (char *) bfd_malloc (size + 1);
+  buf = (char *) _bfd_malloc_and_read (abfd, size + 1, size);
   if (buf == NULL)
-    return FALSE;
+    return false;
 
   /* PR 17512: file: ec08f814
      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;
+      return false;
     }
 
   free (buf);
-  return TRUE;
+  return true;
 }
 
 /* Providing external access to the ELF program header table.  */
@@ -12039,6 +13316,9 @@ _bfd_elf_section_offset (bfd *abfd,
     case SEC_INFO_TYPE_EH_FRAME:
       return _bfd_elf_eh_frame_section_offset (abfd, info, sec, offset);
 
+    case SEC_INFO_TYPE_SFRAME:
+      return _bfd_elf_sframe_section_offset (abfd, info, sec, offset);
+
     default:
       if ((sec->flags & SEC_ELF_REVERSE_COPY) != 0)
 	{
@@ -12055,31 +13335,6 @@ _bfd_elf_section_offset (bfd *abfd,
     }
 }
 
-/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
-   reconstruct an ELF file by reading the segments out of remote memory
-   based on the ELF file header at EHDR_VMA and the ELF program headers it
-   points to.  If not null, *LOADBASEP is filled in with the difference
-   between the VMAs from which the segments were read, and the VMAs the
-   file headers (and hence BFD's idea of each section's VMA) put them at.
-
-   The function TARGET_READ_MEMORY is called to copy LEN bytes from the
-   remote memory at target address VMA into the local buffer at MYADDR; it
-   should return zero on success or an `errno' code on failure.  TEMPL must
-   be a BFD for an ELF target with the word size and byte order found in
-   the remote memory.  */
-
-bfd *
-bfd_elf_bfd_from_remote_memory
-  (bfd *templ,
-   bfd_vma ehdr_vma,
-   bfd_size_type size,
-   bfd_vma *loadbasep,
-   int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type))
-{
-  return (*get_elf_backend_data (templ)->elf_backend_bfd_from_remote_memory)
-    (templ, ehdr_vma, size, loadbasep, target_read_memory);
-}
-
 long
 _bfd_elf_get_synthetic_symtab (bfd *abfd,
 			       long symcount ATTRIBUTE_UNUSED,
@@ -12092,7 +13347,7 @@ _bfd_elf_get_synthetic_symtab (bfd *abfd
   asection *relplt;
   asymbol *s;
   const char *relplt_name;
-  bfd_boolean (*slurp_relocs) (bfd *, asection *, asymbol **, bfd_boolean);
+  bool (*slurp_relocs) (bfd *, asection *, asymbol **, bool);
   arelent *p;
   long count, i, n;
   size_t size;
@@ -12128,10 +13383,10 @@ _bfd_elf_get_synthetic_symtab (bfd *abfd
     return 0;
 
   slurp_relocs = get_elf_backend_data (abfd)->s->slurp_reloc_table;
-  if (! (*slurp_relocs) (abfd, relplt, dynsyms, TRUE))
+  if (! (*slurp_relocs) (abfd, relplt, dynsyms, true))
     return -1;
 
-  count = relplt->size / hdr->sh_entsize;
+  count = NUM_SHDR_ENTRIES (hdr);
   size = count * sizeof (asymbol);
   p = relplt->relocation;
   for (i = 0; i < count; i++, p += bed->s->int_rels_per_ext_rel)
@@ -12206,7 +13461,7 @@ asection _bfd_elf_large_com_section
   = BFD_FAKE_SECTION (_bfd_elf_large_com_section, &lcomm_sym,
 		      "LARGE_COMMON", 0, SEC_IS_COMMON);
 
-bfd_boolean
+bool
 _bfd_elf_final_write_processing (bfd *abfd)
 {
   Elf_Internal_Ehdr *i_ehdrp;	/* ELF file header, internal form.  */
@@ -12217,8 +13472,8 @@ _bfd_elf_final_write_processing (bfd *ab
     i_ehdrp->e_ident[EI_OSABI] = get_elf_backend_data (abfd)->elf_osabi;
 
   /* Set the osabi field to ELFOSABI_GNU if the binary contains
-     SHF_GNU_MBIND sections or symbols of STT_GNU_IFUNC type or
-     STB_GNU_UNIQUE binding.  */
+     SHF_GNU_MBIND or SHF_GNU_RETAIN sections or symbols of STT_GNU_IFUNC type
+     or STB_GNU_UNIQUE binding.  */
   if (elf_tdata (abfd)->has_gnu_osabi != 0)
     {
       if (i_ehdrp->e_ident[EI_OSABI] == ELFOSABI_NONE)
@@ -12227,16 +13482,22 @@ _bfd_elf_final_write_processing (bfd *ab
 	       && i_ehdrp->e_ident[EI_OSABI] != ELFOSABI_FREEBSD)
 	{
 	  if (elf_tdata (abfd)->has_gnu_osabi & elf_gnu_osabi_mbind)
-	    _bfd_error_handler (_("GNU_MBIND section is unsupported"));
+	    _bfd_error_handler (_("GNU_MBIND section is supported only by GNU "
+				  "and FreeBSD targets"));
 	  if (elf_tdata (abfd)->has_gnu_osabi & elf_gnu_osabi_ifunc)
-	    _bfd_error_handler (_("symbol type STT_GNU_IFUNC is unsupported"));
+	    _bfd_error_handler (_("symbol type STT_GNU_IFUNC is supported "
+				  "only by GNU and FreeBSD targets"));
 	  if (elf_tdata (abfd)->has_gnu_osabi & elf_gnu_osabi_unique)
-	    _bfd_error_handler (_("symbol binding STB_GNU_UNIQUE is unsupported"));
+	    _bfd_error_handler (_("symbol binding STB_GNU_UNIQUE is supported "
+				  "only by GNU and FreeBSD targets"));
+	  if (elf_tdata (abfd)->has_gnu_osabi & elf_gnu_osabi_retain)
+	    _bfd_error_handler (_("GNU_RETAIN section is supported "
+				  "only by GNU and FreeBSD targets"));
 	  bfd_set_error (bfd_error_sorry);
-	  return FALSE;
+	  return false;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 
@@ -12244,7 +13505,7 @@ _bfd_elf_final_write_processing (bfd *ab
    This is the default version of this function, which is sufficient for
    most targets.  It returns true if TYPE is STT_FUNC or STT_GNU_IFUNC.  */
 
-bfd_boolean
+bool
 _bfd_elf_is_function_type (unsigned int type)
 {
   return (type == STT_FUNC
@@ -12260,17 +13521,658 @@ _bfd_elf_maybe_function_sym (const asymb
 			     bfd_vma *code_off)
 {
   bfd_size_type size;
+  elf_symbol_type * elf_sym = (elf_symbol_type *) sym;
 
   if ((sym->flags & (BSF_SECTION_SYM | BSF_FILE | BSF_OBJECT
 		     | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC)) != 0
       || sym->section != sec)
     return 0;
 
+  size = (sym->flags & BSF_SYNTHETIC) ? 0 : elf_sym->internal_elf_sym.st_size;
+
+  /* In theory we should check that the symbol's type satisfies
+     _bfd_elf_is_function_type(), but there are some function-like
+     symbols which would fail this test.  (eg _start).  Instead
+     we check for hidden, local, notype symbols with zero size.
+     This type of symbol is generated by the annobin plugin for gcc
+     and clang, and should not be considered to be a function symbol.  */
+  if (size == 0
+      && ((sym->flags & (BSF_SYNTHETIC | BSF_LOCAL)) == BSF_LOCAL)
+      && ELF_ST_TYPE (elf_sym->internal_elf_sym.st_info) == STT_NOTYPE
+      && ELF_ST_VISIBILITY (elf_sym->internal_elf_sym.st_other) == STV_HIDDEN)
+    return 0;
+
   *code_off = sym->value;
-  size = 0;
-  if (!(sym->flags & BSF_SYNTHETIC))
-    size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
-  if (size == 0)
-    size = 1;
-  return size;
+  /* Do not return 0 for the function's size.  */
+  return size ? size : 1;
+}
+
+/* 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.  */
+
+bool
+_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.  */
+
+bool
+_bfd_elf_slurp_secondary_reloc_section (bfd *       abfd,
+					asection *  sec,
+					asymbol **  symbols,
+					bool dynamic)
+{
+  const struct elf_backend_data * const ebd = get_elf_backend_data (abfd);
+  asection * relsec;
+  bool result = true;
+  bfd_vma (*r_sym) (bfd_vma);
+  ufile_ptr filesize;
+
+#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;
+
+  if (!elf_section_data (sec)->has_secondary_relocs)
+    return true;
+
+  /* Discover if there are any secondary reloc sections
+     associated with SEC.  */
+  filesize = bfd_get_file_size (abfd);
+  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;
+	  size_t i;
+	  unsigned int entsize;
+	  unsigned int symcount;
+	  bfd_size_type 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;
+
+	  if (filesize != 0
+	      && ((ufile_ptr) hdr->sh_offset > filesize
+		  || hdr->sh_size > filesize - hdr->sh_offset))
+	    {
+	      bfd_set_error (bfd_error_file_truncated);
+	      result = false;
+	      continue;
+	    }
+
+	  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_read (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;
+	    }
+
+	  if (dynamic)
+	    symcount = bfd_get_dynamic_symcount (abfd);
+	  else
+	    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)
+	    {
+	      bool res;
+	      Elf_Internal_Rela rela;
+
+	      if (entsize == ebd->s->sizeof_rel)
+		ebd->s->swap_reloc_in (abfd, native_reloc, & rela);
+	      else /* entsize == ebd->s->sizeof_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;
+		}
+	      else if (r_sym (rela.r_info) > symcount)
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB(%pA): relocation %zu has invalid symbol index %lu"),
+		     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;
+		  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.  */
+
+bool
+_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.  */
+
+bool
+_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);
+  bool 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;
+	  size_t       reloc_count;
+	  size_t       idx;
+	  bfd_size_type entsize;
+	  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;
+	    }
+
+	  entsize = hdr->sh_entsize;
+	  if (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;
+	    }
+	  else if (entsize != ebd->s->sizeof_rel
+		   && entsize != ebd->s->sizeof_rela)
+	    {
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB(%pA): error: secondary reloc section"
+		   " has non-standard sized entries"),
+		 abfd, relsec);
+	      bfd_set_error (bfd_error_bad_value);
+	      result = false;
+	      continue;
+	    }
+
+	  reloc_count = hdr->sh_size / entsize;
+	  hdr->sh_size = entsize * reloc_count;
+	  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;
+	  relsec->alloced = 1;
+
+#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 += 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 %zu 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 %zu"
+			       " 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 %zu"
+			   " 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 %zu"
+		       " 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;
+
+	      if (entsize == ebd->s->sizeof_rel)
+		ebd->s->swap_reloc_out (abfd, &src_rela, dst_rela);
+	      else /* entsize == ebd->s->sizeof_rela */
+		ebd->s->swap_reloca_out (abfd, &src_rela, dst_rela);
+	    }
+	}
+    }
+
+  return result;
+}
+
+/* Mmap in section contents.  */
+
+static bool
+elf_mmap_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **buf)
+{
+#ifdef USE_MMAP
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  if (bed->use_mmap
+      && sec->compress_status == COMPRESS_SECTION_NONE
+      && (sec->flags & SEC_LINKER_CREATED) == 0)
+    {
+      /* Use mmap only if section size >= the minimum mmap section
+	 size.  */
+      size_t readsz = bfd_get_section_limit_octets (abfd, sec);
+      size_t allocsz = bfd_get_section_alloc_size (abfd, sec);
+      if (readsz == allocsz && readsz >= _bfd_minimum_mmap_size)
+	{
+	  if (sec->contents != NULL)
+	    {
+	      if (!sec->mmapped_p)
+		abort ();
+	      *buf = sec->contents;
+	      return true;
+	    }
+	  if (sec->mmapped_p)
+	    abort ();
+	  sec->mmapped_p = 1;
+
+	  /* We can't use the final link preallocated buffer for mmap.  */
+	  *buf = NULL;
+	}
+    }
+#endif
+  /* FIXME: We should not get here if sec->alloced is set.  */
+  bool ret = bfd_get_full_section_contents (abfd, sec, buf);
+  if (ret && sec->mmapped_p)
+    *buf = sec->contents;
+  return ret;
+}
+
+/* Mmap in section contents.  */
+
+bool
+_bfd_elf_mmap_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **buf)
+{
+  *buf = NULL;
+  return elf_mmap_section_contents (abfd, sec, buf);
+}
+
+/* Mmap in the full section contents for the final link.  */
+
+bool
+_bfd_elf_link_mmap_section_contents (bfd *abfd, sec_ptr sec,
+				     bfd_byte **buf)
+{
+  return elf_mmap_section_contents (abfd, sec, buf);
+}
+
+/* Munmap section contents.  */
+
+void
+_bfd_elf_munmap_section_contents (asection *sec, void *contents)
+{
+  /* NB: Since _bfd_elf_munmap_section_contents is called like free,
+     CONTENTS may be NULL.  */
+  if (contents == NULL)
+    return;
+
+  if (sec->alloced
+      /* What a tangled web we weave with section contents.
+	 FIXME: We shouldn't need to test anything but sec->alloced
+	 here, but there are cases where a buffer is allocated for a
+	 section but then another buffer is malloc'd anyway.  eg.
+	 trace through ld-elf/eh4 testcase on x86_64.  */
+      && (sec->contents == contents
+	  || elf_section_data (sec)->this_hdr.contents == contents))
+    return;
+
+  /* Don't leave pointers to data we are about to munmap or free.  */
+  if (sec->contents == contents)
+    sec->contents = NULL;
+  if (elf_section_data (sec)->this_hdr.contents == contents)
+    elf_section_data (sec)->this_hdr.contents = NULL;
+
+#ifdef USE_MMAP
+  if (sec->mmapped_p)
+    {
+      /* When _bfd_elf_mmap_section_contents returns CONTENTS as
+	 malloced, CONTENTS_ADDR is set to NULL.  */
+      if (elf_section_data (sec)->contents_addr != NULL)
+	{
+	  /* NB: CONTENTS_ADDR and CONTENTS_SIZE must be valid.  */
+	  if (munmap (elf_section_data (sec)->contents_addr,
+		      elf_section_data (sec)->contents_size) != 0)
+	    abort ();
+	  sec->mmapped_p = 0;
+	  elf_section_data (sec)->contents_addr = NULL;
+	  elf_section_data (sec)->contents_size = 0;
+	  return;
+	}
+    }
+#endif
+
+  free (contents);
+}
+
+/* Munmap the full section contents for the final link.  */
+
+void
+_bfd_elf_link_munmap_section_contents (asection *sec ATTRIBUTE_UNUSED)
+{
+#ifdef USE_MMAP
+  if (sec->mmapped_p && elf_section_data (sec)->contents_addr != NULL)
+    {
+      /* When _bfd_elf_link_mmap_section_contents returns CONTENTS as
+	 malloced, CONTENTS_ADDR is set to NULL.  */
+      /* NB: CONTENTS_ADDR and CONTENTS_SIZE must be valid.  */
+      if (munmap (elf_section_data (sec)->contents_addr,
+		  elf_section_data (sec)->contents_size) != 0)
+	abort ();
+      sec->mmapped_p = 0;
+      sec->contents = NULL;
+      elf_section_data (sec)->this_hdr.contents = NULL;
+      elf_section_data (sec)->contents_addr = NULL;
+      elf_section_data (sec)->contents_size = 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.20200303/bfd/elfcode.h ./bfd/elfcode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfcode.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfcode.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF executable support for BFD.
-   Copyright (C) 1991-2019 Free Software Foundation, Inc.
+   Copyright (C) 1991-2025 Free Software Foundation, Inc.
 
    Written by Fred Fish @ Cygnus Support, from information published
    in "UNIX System V Release 4, Programmers Guide: ANSI C and
@@ -170,7 +170,7 @@ static void elf_debug_file (Elf_Internal
 /* Translate an ELF symbol in external format into an ELF symbol in internal
    format.  */
 
-bfd_boolean
+bool
 elf_swap_symbol_in (bfd *abfd,
 		    const void *psrc,
 		    const void *pshn,
@@ -192,13 +192,13 @@ elf_swap_symbol_in (bfd *abfd,
   if (dst->st_shndx == (SHN_XINDEX & 0xffff))
     {
       if (shndx == NULL)
-	return FALSE;
+	return false;
       dst->st_shndx = H_GET_32 (abfd, shndx->est_shndx);
     }
   else if (dst->st_shndx >= (SHN_LORESERVE & 0xffff))
     dst->st_shndx += SHN_LORESERVE - (SHN_LORESERVE & 0xffff);
   dst->st_target_internal = 0;
-  return TRUE;
+  return true;
 }
 
 /* Translate an ELF symbol in internal format into an ELF symbol in external
@@ -266,6 +266,7 @@ elf_swap_ehdr_out (bfd *abfd,
 {
   unsigned int tmp;
   int signed_vma = get_elf_backend_data (abfd)->sign_extend_vma;
+  bool no_section_header = (abfd->flags & BFD_NO_SECTION_HEADER) != 0;
   memcpy (dst->e_ident, src->e_ident, EI_NIDENT);
   /* note that all elements of dst are *arrays of unsigned char* already...  */
   H_PUT_16 (abfd, src->e_type, dst->e_type);
@@ -276,7 +277,10 @@ elf_swap_ehdr_out (bfd *abfd,
   else
     H_PUT_WORD (abfd, src->e_entry, dst->e_entry);
   H_PUT_WORD (abfd, src->e_phoff, dst->e_phoff);
-  H_PUT_WORD (abfd, src->e_shoff, dst->e_shoff);
+  if (no_section_header)
+    H_PUT_WORD (abfd, 0, dst->e_shoff);
+  else
+    H_PUT_WORD (abfd, src->e_shoff, dst->e_shoff);
   H_PUT_32 (abfd, src->e_flags, dst->e_flags);
   H_PUT_16 (abfd, src->e_ehsize, dst->e_ehsize);
   H_PUT_16 (abfd, src->e_phentsize, dst->e_phentsize);
@@ -284,15 +288,24 @@ elf_swap_ehdr_out (bfd *abfd,
   if (tmp > PN_XNUM)
     tmp = PN_XNUM;
   H_PUT_16 (abfd, tmp, dst->e_phnum);
-  H_PUT_16 (abfd, src->e_shentsize, dst->e_shentsize);
-  tmp = src->e_shnum;
-  if (tmp >= (SHN_LORESERVE & 0xffff))
-    tmp = SHN_UNDEF;
-  H_PUT_16 (abfd, tmp, dst->e_shnum);
-  tmp = src->e_shstrndx;
-  if (tmp >= (SHN_LORESERVE & 0xffff))
-    tmp = SHN_XINDEX & 0xffff;
-  H_PUT_16 (abfd, tmp, dst->e_shstrndx);
+  if (no_section_header)
+    {
+      H_PUT_16 (abfd, 0, dst->e_shentsize);
+      H_PUT_16 (abfd, 0, dst->e_shnum);
+      H_PUT_16 (abfd, 0, dst->e_shstrndx);
+    }
+  else
+    {
+      H_PUT_16 (abfd, src->e_shentsize, dst->e_shentsize);
+      tmp = src->e_shnum;
+      if (tmp >= (SHN_LORESERVE & 0xffff))
+	tmp = SHN_UNDEF;
+      H_PUT_16 (abfd, tmp, dst->e_shnum);
+      tmp = src->e_shstrndx;
+      if (tmp >= (SHN_LORESERVE & 0xffff))
+	tmp = SHN_XINDEX & 0xffff;
+      H_PUT_16 (abfd, tmp, dst->e_shstrndx);
+    }
 }
 
 /* Translate an ELF section header table entry in external format into an
@@ -317,11 +330,20 @@ 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)
+	{
+	  _bfd_error_handler (_("warning: %pB has a section "
+				"extending past end of file"), abfd);
+	  abfd->read_only = 1;
+	}
+    }
   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);
@@ -475,7 +497,7 @@ elf_swap_dyn_out (bfd *abfd,
    First we validate the file by reading in the ELF header and checking
    the magic number.  */
 
-static inline bfd_boolean
+static inline bool
 elf_file_p (Elf_External_Ehdr *x_ehdrp)
 {
   return ((x_ehdrp->e_ident[EI_MAG0] == ELFMAG0)
@@ -492,7 +514,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 */
@@ -507,7 +529,7 @@ elf_object_p (bfd *abfd)
 
   /* Read in the ELF header in external format.  */
 
-  if (bfd_bread (&x_ehdr, sizeof (x_ehdr), abfd) != sizeof (x_ehdr))
+  if (bfd_read (&x_ehdr, sizeof (x_ehdr), abfd) != sizeof (x_ehdr))
     {
       if (bfd_get_error () != bfd_error_system_call)
 	goto got_wrong_format_error;
@@ -563,7 +585,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 +595,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 +632,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;
 
@@ -620,7 +642,7 @@ elf_object_p (bfd *abfd)
 
       /* Read the first section header at index 0, and convert to internal
 	 form.  */
-      if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
+      if (bfd_read (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
 	goto got_no_match;
       elf_swap_shdr_in (abfd, &x_shdr, &i_shdr);
 
@@ -666,7 +688,7 @@ elf_object_p (bfd *abfd)
 
 	  if (bfd_seek (abfd, where, SEEK_SET) != 0)
 	    goto got_no_match;
-	  if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
+	  if (bfd_read (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
 	    goto got_no_match;
 
 	  /* Back to where we were.  */
@@ -682,21 +704,23 @@ 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;
+      elf_tdata (abfd)->being_created = bfd_zalloc (abfd, num_sec);
+      if (!elf_tdata (abfd)->being_created)
+	goto got_no_match;
 
       memcpy (i_shdrp, &i_shdr, sizeof (*i_shdrp));
       for (shdrp = i_shdrp, shindex = 0; shindex < num_sec; shindex++)
@@ -706,7 +730,7 @@ elf_object_p (bfd *abfd)
 	 to internal form.  */
       for (shindex = 1; shindex < i_ehdrp->e_shnum; shindex++)
 	{
-	  if (bfd_bread (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
+	  if (bfd_read (&x_shdr, sizeof x_shdr, abfd) != sizeof (x_shdr))
 	    goto got_no_match;
 	  elf_swap_shdr_in (abfd, &x_shdr, i_shdrp + shindex);
 
@@ -760,9 +784,12 @@ 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;
-	  _bfd_error_handler
-	    (_("warning: %pB has a corrupt string table index - ignoring"),
-	     abfd);
+	  if (!abfd->read_only)
+	    {
+	      _bfd_error_handler
+		(_("warning: %pB has a corrupt string table index"), abfd);
+	      abfd->read_only = 1;
+	    }
 	}
     }
   else if (i_ehdrp->e_shstrndx != SHN_UNDEF)
@@ -775,35 +802,73 @@ 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)
+      if (bfd_seek (abfd, i_ehdrp->e_phoff, SEEK_SET) != 0)
 	goto got_no_match;
+      bool eu_strip_broken_phdrs = false;
       i_phdr = elf_tdata (abfd)->phdr;
       for (i = 0; i < i_ehdrp->e_phnum; i++, i_phdr++)
 	{
 	  Elf_External_Phdr x_phdr;
 
-	  if (bfd_bread (&x_phdr, sizeof x_phdr, abfd) != sizeof x_phdr)
+	  if (bfd_read (&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))
+	    {
+	      i_phdr->p_align &= -i_phdr->p_align;
+	      if (!abfd->read_only)
+		{
+		  _bfd_error_handler (_("warning: %pB has a program header "
+					"with invalid alignment"), abfd);
+		  abfd->read_only = 1;
+		}
+	    }
+	  /* Detect eu-strip -f debug files, which have program
+	     headers that describe the original file.  */
+	  if (i_phdr->p_filesz != 0
+	      && (i_phdr->p_filesz > filesize
+		  || i_phdr->p_offset > filesize - i_phdr->p_filesz))
+	    eu_strip_broken_phdrs = true;
+	}
+      if (!eu_strip_broken_phdrs
+	  && i_ehdrp->e_shoff == 0
+	  && i_ehdrp->e_shstrndx == 0)
+	{
+	  /* Try to reconstruct dynamic symbol table from PT_DYNAMIC
+	     segment if there is no section header.  */
+	  i_phdr = elf_tdata (abfd)->phdr;
+	  for (i = 0; i < i_ehdrp->e_phnum; i++, i_phdr++)
+	    if (i_phdr->p_type == PT_DYNAMIC)
+	      {
+		if (i_phdr->p_filesz != 0
+		    && !_bfd_elf_get_dynamic_symbols (abfd, i_phdr,
+						      elf_tdata (abfd)->phdr,
+						      i_ehdrp->e_phnum,
+						      filesize))
+		  goto got_no_match;
+		break;
+	      }
 	}
     }
 
-  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 +914,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,7 +930,8 @@ elf_object_p (bfd *abfd)
 void
 elf_write_relocs (bfd *abfd, asection *sec, void *data)
 {
-  bfd_boolean *failedp = (bfd_boolean *) data;
+  const struct elf_backend_data * const bed = get_elf_backend_data (abfd);
+  bool *failedp = (bool *) data;
   Elf_Internal_Shdr *rela_hdr;
   bfd_vma addr_offset;
   void (*swap_out) (bfd *, const Elf_Internal_Rela *, bfd_byte *);
@@ -874,6 +940,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,11 +967,11 @@ 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)
     {
-      *failedp = TRUE;
+      bfd_set_error (bfd_error_no_memory);
+      *failedp = true;
       return;
     }
 
@@ -947,7 +1014,13 @@ elf_write_relocs (bfd *abfd, asection *s
       sym = *ptr->sym_ptr_ptr;
       if (sym == last_sym)
 	n = last_sym_idx;
-      else if (bfd_is_abs_section (sym->section) && sym->value == 0)
+      /* If the relocation is against an absolute symbol whoes value is
+	 zero, then the symbol can be dropped, simplifying the reloc.
+	 PR 31106: Except for complex relocations where the symbols
+	 itself might be significant.  */
+      else if (bfd_is_abs_section (sym->section)
+	       && sym->value == 0
+	       && (sym->flags & BSF_RELC) == 0)
 	n = STN_UNDEF;
       else
 	{
@@ -955,7 +1028,7 @@ elf_write_relocs (bfd *abfd, asection *s
 	  n = _bfd_elf_symbol_from_bfd_symbol (abfd, &sym);
 	  if (n < 0)
 	    {
-	      *failedp = TRUE;
+	      *failedp = true;
 	      return;
 	    }
 	  last_sym_idx = n;
@@ -965,21 +1038,42 @@ elf_write_relocs (bfd *abfd, asection *s
 	  && (*ptr->sym_ptr_ptr)->the_bfd->xvec != abfd->xvec
 	  && ! _bfd_elf_validate_reloc (abfd, ptr))
 	{
-	  *failedp = TRUE;
+	  *failedp = true;
 	  return;
 	}
 
       if (ptr->howto == NULL)
 	{
-	  *failedp = TRUE;
+	  *failedp = true;
 	  return;
 	}
 
+#if defined(BFD64) && ARCH_SIZE == 32
+      if (rela_hdr->sh_type == SHT_RELA
+	  && ptr->howto->bitsize > 32
+	  && ptr->addend - INT32_MIN > UINT32_MAX)
+	{
+	  _bfd_error_handler (_("%pB: %pA+%" PRIx64 ": "
+				"relocation addend %" PRIx64 " too large"),
+			      abfd, sec, (uint64_t) ptr->address,
+			      (uint64_t) ptr->addend);
+	  *failedp = true;
+	  bfd_set_error (bfd_error_bad_value);
+	}
+#endif
+
       src_rela.r_offset = ptr->address + addr_offset;
       src_rela.r_info = ELF_R_INFO (n, ptr->howto->type);
       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.  */
@@ -994,7 +1088,7 @@ elf_write_out_phdrs (bfd *abfd,
       Elf_External_Phdr extphdr;
 
       elf_swap_phdr_out (abfd, phdr, &extphdr);
-      if (bfd_bwrite (&extphdr, sizeof (Elf_External_Phdr), abfd)
+      if (bfd_write (&extphdr, sizeof (Elf_External_Phdr), abfd)
 	  != sizeof (Elf_External_Phdr))
 	return -1;
       phdr++;
@@ -1004,7 +1098,7 @@ elf_write_out_phdrs (bfd *abfd,
 
 /* Write out the section headers and the ELF file header.  */
 
-bfd_boolean
+bool
 elf_write_shdrs_and_ehdr (bfd *abfd)
 {
   Elf_External_Ehdr x_ehdr;	/* Elf file header, external form */
@@ -1012,7 +1106,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);
@@ -1024,9 +1118,12 @@ elf_write_shdrs_and_ehdr (bfd *abfd)
 #endif
   elf_swap_ehdr_out (abfd, i_ehdrp, &x_ehdr);
   amt = sizeof (x_ehdr);
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bwrite (&x_ehdr, amt, abfd) != amt)
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_write (&x_ehdr, amt, abfd) != amt)
+    return false;
+
+  if ((abfd->flags & BFD_NO_SECTION_HEADER) != 0)
+    return true;
 
   /* Some fields in the first section header handle overflow of ehdr
      fields.  */
@@ -1038,10 +1135,14 @@ 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;
+    return false;
 
   for (count = 0; count < i_ehdrp->e_shnum; i_shdrp++, count++)
     {
@@ -1051,16 +1152,16 @@ elf_write_shdrs_and_ehdr (bfd *abfd)
       elf_swap_shdr_out (abfd, *i_shdrp, x_shdrp + count);
     }
   amt = (bfd_size_type) i_ehdrp->e_shnum * sizeof (*x_shdrp);
-  if (bfd_seek (abfd, (file_ptr) i_ehdrp->e_shoff, SEEK_SET) != 0
-      || bfd_bwrite (x_shdrp, amt, abfd) != amt)
-    return FALSE;
+  if (bfd_seek (abfd, i_ehdrp->e_shoff, SEEK_SET) != 0
+      || bfd_write (x_shdrp, amt, abfd) != amt)
+    return false;
 
   /* need to dump the string table too...  */
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 elf_checksum_contents (bfd *abfd,
 		       void (*process) (const void *, size_t, void *),
 		       void *arg)
@@ -1094,6 +1195,7 @@ elf_checksum_contents (bfd *abfd,
       Elf_Internal_Shdr i_shdr;
       Elf_External_Shdr x_shdr;
       bfd_byte *contents, *free_contents;
+      asection *sec = NULL;
 
       i_shdr = *i_shdrp[count];
       i_shdr.sh_offset = 0;
@@ -1109,8 +1211,6 @@ elf_checksum_contents (bfd *abfd,
       contents = i_shdr.contents;
       if (contents == NULL)
 	{
-	  asection *sec;
-
 	  sec = bfd_section_from_elf_index (abfd, count);
 	  if (sec != NULL)
 	    {
@@ -1119,7 +1219,7 @@ elf_checksum_contents (bfd *abfd,
 		{
 		  /* Force rereading from file.  */
 		  sec->flags &= ~SEC_IN_MEMORY;
-		  if (!bfd_malloc_and_get_section (abfd, sec, &free_contents))
+		  if (!_bfd_elf_mmap_section_contents (abfd, sec, &free_contents))
 		    continue;
 		  contents = free_contents;
 		}
@@ -1128,16 +1228,15 @@ elf_checksum_contents (bfd *abfd,
       if (contents != NULL)
 	{
 	  (*process) (contents, i_shdr.sh_size, arg);
-	  if (free_contents != NULL)
-	    free (free_contents);
+	  _bfd_elf_munmap_section_contents (sec, free_contents);
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 long
-elf_slurp_symbol_table (bfd *abfd, asymbol **symptrs, bfd_boolean dynamic)
+elf_slurp_symbol_table (bfd *abfd, asymbol **symptrs, bool dynamic)
 {
   Elf_Internal_Shdr *hdr;
   Elf_Internal_Shdr *verhdr;
@@ -1150,6 +1249,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
@@ -1160,11 +1260,13 @@ elf_slurp_symbol_table (bfd *abfd, asymb
      symbols.  We actually use all the ELF symbols, so there will be no
      space left over at the end.  When we have all the symbols, we
      build the caller's pointer vector.  */
+  ebd = get_elf_backend_data (abfd);
 
   if (! dynamic)
     {
       hdr = &elf_tdata (abfd)->symtab_hdr;
       verhdr = NULL;
+      symcount = hdr->sh_size / ebd->s->sizeof_sym;
     }
   else
     {
@@ -1176,26 +1278,37 @@ elf_slurp_symbol_table (bfd *abfd, asymb
       if ((elf_dynverdef (abfd) != 0
 	   && elf_tdata (abfd)->verdef == NULL)
 	  || (elf_dynverref (abfd) != 0
-	      && elf_tdata (abfd)->verref == NULL))
+	      && elf_tdata (abfd)->verref == NULL)
+	  || elf_tdata (abfd)->dt_verdef != NULL
+	  || elf_tdata (abfd)->dt_verneed != NULL)
 	{
-	  if (!_bfd_elf_slurp_version_tables (abfd, FALSE))
+	  if (!_bfd_elf_slurp_version_tables (abfd, false))
 	    return -1;
 	}
+
+      symcount = elf_tdata (abfd)->dt_symtab_count;
     }
 
-  ebd = get_elf_backend_data (abfd);
-  symcount = hdr->sh_size / sizeof (Elf_External_Sym);
+  if (symcount == 0)
+    symcount = hdr->sh_size / sizeof (Elf_External_Sym);
+
   if (symcount == 0)
     sym = symbase = NULL;
   else
     {
+      size_t i;
+
       isymbuf = bfd_elf_get_elf_syms (abfd, hdr, symcount, 0,
 				      NULL, NULL, NULL);
       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 +1333,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.  */
@@ -1234,12 +1344,18 @@ elf_slurp_symbol_table (bfd *abfd, asymb
       if (xver != NULL)
 	++xver;
       isymend = isymbuf + symcount;
-      for (isym = isymbuf + 1, sym = symbase; isym < isymend; isym++, sym++)
+      for (isym = isymbuf + 1, sym = symbase, i = 1;
+	   isym < isymend;
+	   isym++, sym++, i++)
 	{
 	  memcpy (&sym->internal_elf_sym, isym, sizeof (Elf_Internal_Sym));
 
 	  sym->symbol.the_bfd = abfd;
-	  sym->symbol.name = bfd_elf_sym_name (abfd, hdr, isym, NULL);
+	  if (elf_use_dt_symtab_p (abfd))
+	    sym->symbol.name = (elf_tdata (abfd)->dt_strtab
+				+ isym->st_name);
+	  else
+	    sym->symbol.name = bfd_elf_sym_name (abfd, hdr, isym, NULL);
 	  sym->symbol.value = isym->st_value;
 
 	  if (isym->st_shndx == SHN_UNDEF)
@@ -1273,6 +1389,15 @@ elf_slurp_symbol_table (bfd *abfd, asymb
 		 moment) about the alignment.  */
 	      sym->symbol.value = isym->st_size;
 	    }
+	  else if (elf_use_dt_symtab_p (abfd))
+	    {
+	      asection *sec;
+	      sec = _bfd_elf_get_section_from_dynamic_symbol (abfd,
+							      isym);
+	      if (sec == NULL)
+		goto error_return;
+	      sym->symbol.section = sec;
+	    }
 	  else
 	    {
 	      sym->symbol.section
@@ -1281,7 +1406,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;
 		}
 	    }
@@ -1311,7 +1439,13 @@ elf_slurp_symbol_table (bfd *abfd, asymb
 	  switch (ELF_ST_TYPE (isym->st_info))
 	    {
 	    case STT_SECTION:
-	      sym->symbol.flags |= BSF_SECTION_SYM | BSF_DEBUGGING;
+	      /* Mark the input section symbol as used since it may be
+	         used for relocation and section group.
+		 NB: BSF_SECTION_SYM_USED is ignored by linker and may
+		 be cleared by objcopy for non-relocatable inputs.  */
+	      sym->symbol.flags |= (BSF_SECTION_SYM
+				    | BSF_DEBUGGING
+				    | BSF_SECTION_SYM_USED);
 	      break;
 	    case STT_FILE:
 	      sym->symbol.flags |= BSF_FILE | BSF_DEBUGGING;
@@ -1344,7 +1478,10 @@ elf_slurp_symbol_table (bfd *abfd, asymb
 	  if (dynamic)
 	    sym->symbol.flags |= BSF_DYNAMIC;
 
-	  if (xver != NULL)
+	  if (elf_tdata (abfd)->dt_versym)
+	    sym->version = bfd_get_16 (abfd,
+				       elf_tdata (abfd)->dt_versym + 2 * i);
+	  else if (xver != NULL)
 	    {
 	      Elf_Internal_Versym iversym;
 
@@ -1381,16 +1518,16 @@ 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
+      && !elf_use_dt_symtab_p (abfd))
     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
+      && !elf_use_dt_symtab_p (abfd))
     free (isymbuf);
   return -1;
 }
@@ -1398,14 +1535,14 @@ error_return:
 /* Read relocations for ASECT from REL_HDR.  There are RELOC_COUNT of
    them.  */
 
-static bfd_boolean
+static bool
 elf_slurp_reloc_table_from_section (bfd *abfd,
 				    asection *asect,
 				    Elf_Internal_Shdr *rel_hdr,
 				    bfd_size_type reloc_count,
 				    arelent *relents,
 				    asymbol **symbols,
-				    bfd_boolean dynamic)
+				    bool dynamic)
 {
   const struct elf_backend_data * const ebd = get_elf_backend_data (abfd);
   void *allocated = NULL;
@@ -1415,14 +1552,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;
 
@@ -1439,7 +1573,7 @@ elf_slurp_reloc_table_from_section (bfd
        i < reloc_count;
        i++, relent++, native_relocs += entsize)
     {
-      bfd_boolean res;
+      bool res;
       Elf_Internal_Rela rela;
 
       if (entsize == sizeof (Elf_External_Rela))
@@ -1459,7 +1593,7 @@ elf_slurp_reloc_table_from_section (bfd
       if (ELF_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.  */
-	relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
       else if (ELF_R_SYM (rela.r_info) > symcount)
 	{
 	  _bfd_error_handler
@@ -1467,7 +1601,7 @@ elf_slurp_reloc_table_from_section (bfd
 	    (_("%pB(%pA): relocation %d has invalid symbol index %ld"),
 	     abfd, asect, i, (long) ELF_R_SYM (rela.r_info));
 	  bfd_set_error (bfd_error_bad_value);
-	  relent->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	  relent->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	}
       else
 	{
@@ -1480,50 +1614,51 @@ elf_slurp_reloc_table_from_section (bfd
 
       relent->addend = rela.r_addend;
 
+      res = false;
       if ((entsize == sizeof (Elf_External_Rela)
-	   && ebd->elf_info_to_howto != NULL)
-	  || ebd->elf_info_to_howto_rel == NULL)
+	   || ebd->elf_info_to_howto_rel == NULL)
+	  && ebd->elf_info_to_howto != NULL)
 	res = ebd->elf_info_to_howto (abfd, relent, &rela);
-      else
+      else if (ebd->elf_info_to_howto_rel != NULL)
 	res = ebd->elf_info_to_howto_rel (abfd, relent, &rela);
 
       if (! res || relent->howto == NULL)
 	goto error_return;
     }
 
-  if (allocated != NULL)
-    free (allocated);
-  return TRUE;
+  free (allocated);
+  return true;
 
  error_return:
-  if (allocated != NULL)
-    free (allocated);
-  return FALSE;
+  free (allocated);
+  return false;
 }
 
 /* Read in and swap the external relocs.  */
 
-bfd_boolean
+bool
 elf_slurp_reloc_table (bfd *abfd,
 		       asection *asect,
 		       asymbol **symbols,
-		       bfd_boolean dynamic)
+		       bool 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;
+    return true;
 
   if (! dynamic)
     {
       if ((asect->flags & SEC_RELOC) == 0
 	  || asect->reloc_count == 0)
-	return TRUE;
+	return true;
 
       rel_hdr = d->rel.hdr;
       reloc_count = rel_hdr ? NUM_SHDR_ENTRIES (rel_hdr) : 0;
@@ -1532,7 +1667,7 @@ elf_slurp_reloc_table (bfd *abfd,
 
       /* PR 17512: file: 0b4f81b7.  */
       if (asect->reloc_count != reloc_count + reloc_count2)
-	return FALSE;
+	return false;
       BFD_ASSERT ((rel_hdr && asect->rel_filepos == rel_hdr->sh_offset)
 		  || (rel_hdr2 && asect->rel_filepos == rel_hdr2->sh_offset));
 
@@ -1544,7 +1679,7 @@ elf_slurp_reloc_table (bfd *abfd,
 	 dynamic symbol table, and in that case bfd_section_from_shdr
 	 in elf.c does not update the RELOC_COUNT.  */
       if (asect->size == 0)
-	return TRUE;
+	return true;
 
       rel_hdr = &d->this_hdr;
       reloc_count = NUM_SHDR_ENTRIES (rel_hdr);
@@ -1552,27 +1687,34 @@ 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;
+    return false;
 
   if (rel_hdr
       && !elf_slurp_reloc_table_from_section (abfd, asect,
 					      rel_hdr, reloc_count,
 					      relents,
 					      symbols, dynamic))
-    return FALSE;
+    return false;
 
   if (rel_hdr2
       && !elf_slurp_reloc_table_from_section (abfd, asect,
 					      rel_hdr2, reloc_count2,
 					      relents + reloc_count,
 					      symbols, dynamic))
-    return FALSE;
+    return false;
+
+  if (!bed->slurp_secondary_relocs (abfd, asect, symbols, dynamic))
+    return false;
 
   asect->relocation = relents;
-  return TRUE;
+  return true;
 }
 
 #if DEBUG & 2
@@ -1635,10 +1777,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 +1794,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 +1853,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 +1894,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 +1960,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 +1975,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 +2008,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;
@@ -1885,7 +2025,7 @@ NAME(_bfd_elf,bfd_from_remote_memory)
   nbfd->origin = 0;
   nbfd->direction = read_direction;
   nbfd->mtime = time (NULL);
-  nbfd->mtime_set = TRUE;
+  nbfd->mtime_set = true;
 
   if (loadbasep)
     *loadbasep = loadbase;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfcore.h ./bfd/elfcore.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfcore.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfcore.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF core file support for BFD.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -36,7 +36,7 @@ elf_core_file_pid (bfd *abfd)
   return elf_tdata (abfd)->core->pid;
 }
 
-bfd_boolean
+bool
 elf_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
 {
   char* corename;
@@ -46,7 +46,7 @@ elf_core_file_matches_executable_p (bfd
   if (core_bfd->xvec != exec_bfd->xvec)
     {
       bfd_set_error (bfd_error_system_call);
-      return FALSE;
+      return false;
     }
 
   /* If both BFDs have identical build-ids, then they match.  */
@@ -55,21 +55,21 @@ elf_core_file_matches_executable_p (bfd
       && core_bfd->build_id->size == exec_bfd->build_id->size
       && memcmp (core_bfd->build_id->data, exec_bfd->build_id->data,
 		 core_bfd->build_id->size) == 0)
-    return TRUE;
+    return true;
 
   /* See if the name in the corefile matches the executable name.  */
   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;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /*  Core files are simply standard ELF formatted files that partition
@@ -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.  */
@@ -92,9 +92,10 @@ elf_core_file_p (bfd *abfd)
   unsigned int phindex;
   const struct elf_backend_data *ebd;
   bfd_size_type amt;
+  ufile_ptr filesize;
 
   /* Read in the ELF header in external format.  */
-  if (bfd_bread (&x_ehdr, sizeof (x_ehdr), abfd) != sizeof (x_ehdr))
+  if (bfd_read (&x_ehdr, sizeof (x_ehdr), abfd) != sizeof (x_ehdr))
     {
       if (bfd_get_error () != bfd_error_system_call)
 	goto wrong;
@@ -148,37 +149,14 @@ elf_core_file_p (bfd *abfd)
       && (ebd->elf_machine_alt1 == 0
 	  || i_ehdrp->e_machine != ebd->elf_machine_alt1)
       && (ebd->elf_machine_alt2 == 0
-	  || i_ehdrp->e_machine != ebd->elf_machine_alt2))
-    {
-      const bfd_target * const *target_ptr;
-
-      if (ebd->elf_machine_code != EM_NONE)
-	goto wrong;
-
-      /* This is the generic ELF target.  Let it match any ELF target
-	 for which we do not have a specific backend.  */
-
-      for (target_ptr = bfd_target_vector; *target_ptr != NULL; target_ptr++)
-	{
-	  const struct elf_backend_data *back;
+	  || i_ehdrp->e_machine != ebd->elf_machine_alt2)
+      && ebd->elf_machine_code != EM_NONE)
+    goto wrong;
 
-	  if ((*target_ptr)->flavour != bfd_target_elf_flavour)
-	    continue;
-	  back = xvec_get_elf_backend_data (*target_ptr);
-	  if (back->s->arch_size != ARCH_SIZE)
-	    continue;
-	  if (back->elf_machine_code == i_ehdrp->e_machine
-	      || (back->elf_machine_alt1 != 0
-		  && i_ehdrp->e_machine == back->elf_machine_alt1)
-	      || (back->elf_machine_alt2 != 0
-		  && i_ehdrp->e_machine == back->elf_machine_alt2))
-	    {
-	      /* target_ptr is an ELF backend which matches this
-		 object file, so reject the generic ELF target.  */
-	      goto wrong;
-	    }
-	}
-    }
+  if (ebd->elf_machine_code != EM_NONE
+      && i_ehdrp->e_ident[EI_OSABI] != ebd->elf_osabi
+      && ebd->elf_osabi != ELFOSABI_NONE)
+    goto wrong;
 
   /* If there is no program header, or the type is not a core file, then
      we are hosed.  */
@@ -198,13 +176,16 @@ elf_core_file_p (bfd *abfd)
       Elf_Internal_Shdr i_shdr;
       file_ptr where = (file_ptr) i_ehdrp->e_shoff;
 
+      if (i_ehdrp->e_shoff < sizeof (x_ehdr))
+	goto wrong;
+
       /* Seek to the section header table in the file.  */
       if (bfd_seek (abfd, where, SEEK_SET) != 0)
 	goto fail;
 
       /* Read the first section header at index 0, and convert to internal
 	 form.  */
-      if (bfd_bread (&x_shdr, sizeof (x_shdr), abfd) != sizeof (x_shdr))
+      if (bfd_read (&x_shdr, sizeof (x_shdr), abfd) != sizeof (x_shdr))
 	goto fail;
       elf_swap_shdr_in (abfd, &x_shdr, &i_shdr);
 
@@ -236,12 +217,12 @@ elf_core_file_p (bfd *abfd)
 
       if (bfd_seek (abfd, where, SEEK_SET) != 0)
 	goto fail;
-      if (bfd_bread (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr))
+      if (bfd_read (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr))
 	goto fail;
     }
 
   /* Move to the start of the program headers.  */
-  if (bfd_seek (abfd, (file_ptr) i_ehdrp->e_phoff, SEEK_SET) != 0)
+  if (bfd_seek (abfd, i_ehdrp->e_phoff, SEEK_SET) != 0)
     goto wrong;
 
   /* Allocate space for the program headers.  */
@@ -257,7 +238,7 @@ elf_core_file_p (bfd *abfd)
     {
       Elf_External_Phdr x_phdr;
 
-      if (bfd_bread (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr))
+      if (bfd_read (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr))
 	goto fail;
 
       elf_swap_phdr_in (abfd, &x_phdr, i_phdrp + phindex);
@@ -286,39 +267,31 @@ elf_core_file_p (bfd *abfd)
       goto fail;
 
   /* Check for core truncation.  */
-  {
-    bfd_size_type high = 0;
-    struct stat statbuf;
-    for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex)
-      {
-	Elf_Internal_Phdr *p = i_phdrp + phindex;
-	if (p->p_filesz)
-	  {
-	    bfd_size_type current = p->p_offset + p->p_filesz;
-	    if (high < current)
-	      high = current;
-	  }
-      }
-    if (bfd_stat (abfd, &statbuf) == 0)
-      {
-	if ((bfd_size_type) statbuf.st_size < high)
-	  {
-	    _bfd_error_handler
-	      /* xgettext:c-format */
-	      (_("warning: %pB is truncated: expected core file "
-		 "size >= %" PRIu64 ", found: %" PRIu64),
-	       abfd, (uint64_t) high, (uint64_t) statbuf.st_size);
-	  }
+  filesize = bfd_get_file_size (abfd);
+  if (filesize != 0)
+    {
+      for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex)
+	{
+	  Elf_Internal_Phdr *p = i_phdrp + phindex;
+	  if (p->p_filesz
+	      && (p->p_offset >= filesize
+		  || p->p_filesz > filesize - p->p_offset))
+	    {
+	      _bfd_error_handler (_("warning: %pB has a segment "
+				    "extending past end of file"), abfd);
+	      abfd->read_only = 1;
+	      break;
+	    }
       }
   }
 
   /* 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;
 }
 
@@ -326,7 +299,7 @@ fail:
    OFFSET is the file offset to a PT_LOAD segment that may contain
    the build-id note.  Returns TRUE upon success, FALSE otherwise.  */
 
-bfd_boolean
+bool
 NAME(_bfd_elf, core_find_build_id)
   (bfd *abfd,
    bfd_vma offset)
@@ -335,13 +308,14 @@ 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)
     goto fail;
 
   /* Read in the ELF header in external format.  */
-  if (bfd_bread (&x_ehdr, sizeof (x_ehdr), abfd) != sizeof (x_ehdr))
+  if (bfd_read (&x_ehdr, sizeof (x_ehdr), abfd) != sizeof (x_ehdr))
     {
       if (bfd_get_error () != bfd_error_system_call)
 	goto wrong;
@@ -384,12 +358,16 @@ 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;
 
-  if (bfd_seek (abfd, (file_ptr) (offset + i_ehdr.e_phoff), SEEK_SET) != 0)
+  if (bfd_seek (abfd, offset + i_ehdr.e_phoff, SEEK_SET) != 0)
     goto fail;
 
   /* Read in program headers and parse notes.  */
@@ -397,7 +375,7 @@ NAME(_bfd_elf, core_find_build_id)
     {
       Elf_External_Phdr x_phdr;
 
-      if (bfd_bread (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr))
+      if (bfd_read (&x_phdr, sizeof (x_phdr), abfd) != sizeof (x_phdr))
 	goto fail;
       elf_swap_phdr_in (abfd, &x_phdr, i_phdr);
 
@@ -405,8 +383,15 @@ NAME(_bfd_elf, core_find_build_id)
 	{
 	  elf_read_notes (abfd, offset + i_phdr->p_offset,
 			  i_phdr->p_filesz, i_phdr->p_align);
+
+	  /* Make sure ABFD returns to processing the program headers.  */
+	  if (bfd_seek (abfd,
+			offset + i_ehdr.e_phoff + (i + 1) * sizeof (x_phdr),
+			SEEK_SET) != 0)
+	    goto fail;
+
 	  if (abfd->build_id != NULL)
-	    return TRUE;
+	    return true;
 	}
     }
 
@@ -414,8 +399,8 @@ NAME(_bfd_elf, core_find_build_id)
      build-id was found.  */
   goto fail;
 
-wrong:
+ wrong:
   bfd_set_error (bfd_error_wrong_format);
-fail:
-  return FALSE;
+ 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.20200303/bfd/elf-eh-frame.c ./bfd/elf-eh-frame.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-eh-frame.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-eh-frame.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* .eh_frame section optimization.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
    Written by Jakub Jelinek <jakub@redhat.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -60,81 +60,81 @@ struct cie
 /* If *ITER hasn't reached END yet, read the next byte into *RESULT and
    move onto the next byte.  Return true on success.  */
 
-static inline bfd_boolean
+static inline bool
 read_byte (bfd_byte **iter, bfd_byte *end, unsigned char *result)
 {
   if (*iter >= end)
-    return FALSE;
+    return false;
   *result = *((*iter)++);
-  return TRUE;
+  return true;
 }
 
 /* Move *ITER over LENGTH bytes, or up to END, whichever is closer.
    Return true it was possible to move LENGTH bytes.  */
 
-static inline bfd_boolean
+static inline bool
 skip_bytes (bfd_byte **iter, bfd_byte *end, bfd_size_type length)
 {
   if ((bfd_size_type) (end - *iter) < length)
     {
       *iter = end;
-      return FALSE;
+      return false;
     }
   *iter += length;
-  return TRUE;
+  return true;
 }
 
 /* Move *ITER over an leb128, stopping at END.  Return true if the end
    of the leb128 was found.  */
 
-static bfd_boolean
+static bool
 skip_leb128 (bfd_byte **iter, bfd_byte *end)
 {
   unsigned char byte;
   do
     if (!read_byte (iter, end, &byte))
-      return FALSE;
+      return false;
   while (byte & 0x80);
-  return TRUE;
+  return true;
 }
 
 /* Like skip_leb128, but treat the leb128 as an unsigned value and
    store it in *VALUE.  */
 
-static bfd_boolean
+static bool
 read_uleb128 (bfd_byte **iter, bfd_byte *end, bfd_vma *value)
 {
   bfd_byte *start, *p;
 
   start = *iter;
   if (!skip_leb128 (iter, end))
-    return FALSE;
+    return false;
 
   p = *iter;
   *value = *--p;
   while (p > start)
     *value = (*value << 7) | (*--p & 0x7f);
 
-  return TRUE;
+  return true;
 }
 
 /* Like read_uleb128, but for signed values.  */
 
-static bfd_boolean
+static bool
 read_sleb128 (bfd_byte **iter, bfd_byte *end, bfd_signed_vma *value)
 {
   bfd_byte *start, *p;
 
   start = *iter;
   if (!skip_leb128 (iter, end))
-    return FALSE;
+    return false;
 
   p = *iter;
   *value = ((*--p & 0x7f) ^ 0x40) - 0x40;
   while (p > start)
     *value = (*value << 7) | (*--p & 0x7f);
 
-  return TRUE;
+  return true;
 }
 
 /* Return 0 if either encoding is variable width, or not yet known to bfd.  */
@@ -282,7 +282,7 @@ cie_compute_hash (struct cie *c)
 /* Return the number of extra bytes that we'll be inserting into
    ENTRY's augmentation string.  */
 
-static INLINE unsigned int
+static inline unsigned int
 extra_augmentation_string_bytes (struct eh_cie_fde *entry)
 {
   unsigned int size = 0;
@@ -298,7 +298,7 @@ extra_augmentation_string_bytes (struct
 
 /* Likewise ENTRY's augmentation data.  */
 
-static INLINE unsigned int
+static inline unsigned int
 extra_augmentation_data_bytes (struct eh_cie_fde *entry)
 {
   unsigned int size = 0;
@@ -342,14 +342,14 @@ next_cie_fde_offset (const struct eh_cie
    Try to move *ITER past the first instruction and return true on
    success.  ENCODED_PTR_WIDTH gives the width of pointer entries.  */
 
-static bfd_boolean
+static bool
 skip_cfa_op (bfd_byte **iter, bfd_byte *end, unsigned int encoded_ptr_width)
 {
-  bfd_byte op;
+  bfd_byte op = 0;
   bfd_vma length;
 
   if (!read_byte (iter, end, &op))
-    return FALSE;
+    return false;
 
   switch (op & 0xc0 ? op & 0xc0 : op)
     {
@@ -359,8 +359,9 @@ skip_cfa_op (bfd_byte **iter, bfd_byte *
     case DW_CFA_remember_state:
     case DW_CFA_restore_state:
     case DW_CFA_GNU_window_save:
+    case DW_CFA_AARCH64_negate_ra_state_with_pc:
       /* No arguments.  */
-      return TRUE;
+      return true;
 
     case DW_CFA_offset:
     case DW_CFA_restore_extended:
@@ -413,7 +414,7 @@ skip_cfa_op (bfd_byte **iter, bfd_byte *
       return skip_bytes (iter, end, 8);
 
     default:
-      return FALSE;
+      return false;
     }
 }
 
@@ -497,7 +498,7 @@ bfd_elf_record_eh_frame_entry (struct eh
     {
       if (hdr_info->u.compact.allocated_entries == 0)
 	{
-	  hdr_info->frame_hdr_is_compact = TRUE;
+	  hdr_info->frame_hdr_is_compact = true;
 	  hdr_info->u.compact.allocated_entries = 2;
 	  hdr_info->u.compact.entries =
 	    bfd_malloc (hdr_info->u.compact.allocated_entries
@@ -521,7 +522,7 @@ bfd_elf_record_eh_frame_entry (struct eh
 /* Parse a .eh_frame_entry section.  Figure out which text section it
    references.  */
 
-bfd_boolean
+bool
 _bfd_elf_parse_eh_frame_entry (struct bfd_link_info *info,
 			       asection *sec, struct elf_reloc_cookie *cookie)
 {
@@ -536,28 +537,28 @@ _bfd_elf_parse_eh_frame_entry (struct bf
   if (sec->size == 0
       || sec->sec_info_type != SEC_INFO_TYPE_NONE)
     {
-      return TRUE;
+      return true;
     }
 
   if (sec->output_section && bfd_is_abs_section (sec->output_section))
     {
       /* At least one of the sections is being discarded from the
 	 link, so we should just ignore them.  */
-      return TRUE;
+      return true;
     }
 
   if (cookie->rel == cookie->relend)
-    return FALSE;
+    return false;
 
   /* The first relocation is the function start.  */
   r_symndx = cookie->rel->r_info >> cookie->r_sym_shift;
   if (r_symndx == STN_UNDEF)
-    return FALSE;
+    return false;
 
-  text_sec = _bfd_elf_section_for_symbol (cookie, r_symndx, FALSE);
+  text_sec = _bfd_elf_section_for_symbol (cookie, r_symndx, false);
 
   if (text_sec == NULL)
-    return FALSE;
+    return false;
 
   elf_section_eh_frame_entry (text_sec) = sec;
   if (text_sec->output_section
@@ -567,7 +568,7 @@ _bfd_elf_parse_eh_frame_entry (struct bf
   sec->sec_info_type = SEC_INFO_TYPE_EH_FRAME_ENTRY;
   elf_section_data (sec)->sec_info = text_sec;
   bfd_elf_record_eh_frame_entry (hdr_info, sec);
-  return TRUE;
+  return true;
 }
 
 /* Try to parse .eh_frame section SEC, which belongs to ABFD.  Store the
@@ -602,9 +603,12 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
   hdr_info = &htab->eh_info;
 
   if (sec->size == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || sec->sec_info_type != SEC_INFO_TYPE_NONE)
     {
-      /* This file does not contain .eh_frame information.  */
+      /* This file does not contain .eh_frame information or
+	 .eh_frame has already been parsed, as can happen with
+	 --gc-sections.  */
       return;
     }
 
@@ -617,7 +621,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
 
   /* Read the frame unwind information from abfd.  */
 
-  REQUIRE (bfd_malloc_and_get_section (abfd, sec, &ehbuf));
+  REQUIRE (_bfd_elf_mmap_section_contents (abfd, sec, &ehbuf));
 
   /* If .eh_frame section size doesn't fit into int, we cannot handle
      it (it would need to use 64-bit .eh_frame format anyway).  */
@@ -654,9 +658,9 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
       REQUIRE (skip_bytes (&buf, end, hdr_length - 4));
     }
 
-  sec_info = (struct eh_frame_sec_info *)
-      bfd_zmalloc (sizeof (struct eh_frame_sec_info)
-		   + (num_entries - 1) * sizeof (struct eh_cie_fde));
+  sec_info = bfd_zalloc (abfd,
+			 (sizeof (struct eh_frame_sec_info)
+			  + (num_entries - 1) * sizeof (struct eh_cie_fde)));
   REQUIRE (sec_info);
 
   /* We need to have a "struct cie" for each CIE in this section.  */
@@ -798,6 +802,9 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
 		switch (*aug++)
 		  {
 		  case 'B':
+		  case 'G':
+		    if (abfd->arch_info->arch != bfd_arch_aarch64)
+		      goto unrecognized;
 		    break;
 		  case 'L':
 		    REQUIRE (read_byte (&buf, end, &cie->lsda_encoding));
@@ -839,6 +846,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
 		      REQUIRE (skip_bytes (&buf, end, per_width));
 		    }
 		    break;
+		  unrecognized:
 		  default:
 		    /* Unrecognized augmentation. Better bail out.  */
 		    goto free_no_table;
@@ -937,7 +945,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
 
 	  SKIP_RELOCS (buf - length);
 	  if (!GET_RELOC (buf - length)
-	      && read_value (abfd, buf - length, length, FALSE) == 0)
+	      && read_value (abfd, buf - length, length, false) == 0)
 	    {
 	      (*info->callbacks->minfo)
 		/* xgettext:c-format */
@@ -1011,8 +1019,8 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
 	  unsigned int cnt;
 	  bfd_byte *p;
 
-	  this_inf->set_loc = (unsigned int *)
-	      bfd_malloc ((set_loc_count + 1) * sizeof (unsigned int));
+	  this_inf->set_loc
+	    = bfd_alloc (abfd, (set_loc_count + 1) * sizeof (unsigned int));
 	  REQUIRE (this_inf->set_loc);
 	  this_inf->set_loc[0] = set_loc_count;
 	  p = insns;
@@ -1048,14 +1056,10 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
     /* xgettext:c-format */
     (_("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);
+  hdr_info->u.dwarf.table = false;
  success:
-  if (ehbuf)
-    free (ehbuf);
-  if (local_cies)
-    free (local_cies);
+  _bfd_elf_munmap_section_contents (sec, ehbuf);
+  free (local_cies);
 #undef REQUIRE
 }
 
@@ -1114,7 +1118,7 @@ add_eh_frame_hdr_terminator (asection *s
 
 /* Finish a pass over all .eh_frame_entry sections.  */
 
-bfd_boolean
+bool
 _bfd_elf_end_eh_frame_parsing (struct bfd_link_info *info)
 {
   struct eh_frame_hdr_info *hdr_info;
@@ -1124,7 +1128,7 @@ _bfd_elf_end_eh_frame_parsing (struct bf
 
   if (info->eh_frame_hdr_type != COMPACT_EH_HDR
       || hdr_info->array_count == 0)
-    return FALSE;
+    return false;
 
   bfd_elf_discard_eh_frame_entry (hdr_info);
 
@@ -1139,14 +1143,14 @@ _bfd_elf_end_eh_frame_parsing (struct bf
 
   /* Add a CANTUNWIND terminator after the last entry.  */
   add_eh_frame_hdr_terminator (hdr_info->u.compact.entries[i], NULL);
-  return TRUE;
+  return true;
 }
 
 /* Mark all relocations against CIE or FDE ENT, which occurs in
    .eh_frame section SEC.  COOKIE describes the relocations in SEC;
    its "rel" field can be changed freely.  */
 
-static bfd_boolean
+static bool
 mark_entry (struct bfd_link_info *info, asection *sec,
 	    struct eh_cie_fde *ent, elf_gc_mark_hook_fn gc_mark_hook,
 	    struct elf_reloc_cookie *cookie)
@@ -1157,16 +1161,16 @@ mark_entry (struct bfd_link_info *info,
 	 && cookie->rel->r_offset < ent->offset + ent->size;
        cookie->rel++)
     if (!_bfd_elf_gc_mark_reloc (info, sec, gc_mark_hook, cookie))
-      return FALSE;
+      return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Mark all the relocations against FDEs that relate to code in input
    section SEC.  The FDEs belong to .eh_frame section EH_FRAME, whose
    relocations are described by COOKIE.  */
 
-bfd_boolean
+bool
 _bfd_elf_gc_mark_fdes (struct bfd_link_info *info, asection *sec,
 		       asection *eh_frame, elf_gc_mark_hook_fn gc_mark_hook,
 		       struct elf_reloc_cookie *cookie)
@@ -1176,7 +1180,7 @@ _bfd_elf_gc_mark_fdes (struct bfd_link_i
   for (fde = elf_fde_list (sec); fde; fde = fde->u.fde.next_for_section)
     {
       if (!mark_entry (info, eh_frame, fde, gc_mark_hook, cookie))
-	return FALSE;
+	return false;
 
       /* At this stage, all cie_inf fields point to local CIEs, so we
 	 can use the same cookie to refer to them.  */
@@ -1185,10 +1189,10 @@ _bfd_elf_gc_mark_fdes (struct bfd_link_i
 	{
 	  cie->u.cie.gc_mark = 1;
 	  if (!mark_entry (info, eh_frame, cie, gc_mark_hook, cookie))
-	    return FALSE;
+	    return false;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Input section SEC of ABFD is an .eh_frame section that contains the
@@ -1229,7 +1233,7 @@ find_merged_cie (bfd *abfd, struct bfd_l
 
   if (cie->per_encoding != DW_EH_PE_omit)
     {
-      bfd_boolean per_binds_local;
+      bool per_binds_local;
 
       /* Work out the address of personality routine, or at least
 	 enough info that we could calculate the address had we made a
@@ -1278,7 +1282,7 @@ find_merged_cie (bfd *abfd, struct bfd_l
 	  cie->local_personality = 1;
 	  cie->personality.sym.bfd_id = abfd->id;
 	  cie->personality.sym.index = r_symndx;
-	  per_binds_local = TRUE;
+	  per_binds_local = true;
 	}
 
       if (per_binds_local
@@ -1309,7 +1313,7 @@ find_merged_cie (bfd *abfd, struct bfd_l
   if (new_cie == NULL)
     {
       /* Keep CIE_INF and record it in the hash table.  */
-      new_cie = (struct cie *) malloc (sizeof (struct cie));
+      new_cie = bfd_malloc (sizeof (*new_cie));
       if (new_cie == NULL)
 	return cie_inf;
 
@@ -1414,7 +1418,7 @@ offset_adjust (bfd_vma offset, const ase
    when a CIE is merged with a previous CIE, since the symbol is
    moved to the merged CIE.  */
 
-bfd_boolean
+bool
 _bfd_elf_adjust_eh_frame_global_symbol (struct elf_link_hash_entry *h,
 					void *arg ATTRIBUTE_UNUSED)
 {
@@ -1423,17 +1427,17 @@ _bfd_elf_adjust_eh_frame_global_symbol (
 
   if (h->root.type != bfd_link_hash_defined
       && h->root.type != bfd_link_hash_defweak)
-    return TRUE;
+    return true;
 
   sym_sec = h->root.u.def.section;
   if (sym_sec->sec_info_type != SEC_INFO_TYPE_EH_FRAME
       || elf_section_data (sym_sec)->sec_info == NULL)
-    return TRUE;
+    return true;
 
   delta = offset_adjust (h->root.u.def.value, sym_sec);
   h->root.u.def.value += delta;
 
-  return TRUE;
+  return true;
 }
 
 /* The same for all local symbols defined in .eh_frame.  Returns true
@@ -1443,25 +1447,27 @@ static int
 adjust_eh_frame_local_symbols (const asection *sec,
 			       struct elf_reloc_cookie *cookie)
 {
-  unsigned int shndx;
-  Elf_Internal_Sym *sym;
-  Elf_Internal_Sym *end_sym;
   int adjusted = 0;
 
-  shndx = elf_section_data (sec)->this_idx;
-  end_sym = cookie->locsyms + cookie->locsymcount;
-  for (sym = cookie->locsyms + 1; sym < end_sym; ++sym)
-    if (sym->st_info <= ELF_ST_INFO (STB_LOCAL, STT_OBJECT)
-	&& sym->st_shndx == shndx)
-      {
-	bfd_signed_vma delta = offset_adjust (sym->st_value, sec);
-
-	if (delta != 0)
+  if (cookie->locsymcount > 1)
+    {
+      unsigned int shndx = elf_section_data (sec)->this_idx;
+      Elf_Internal_Sym *end_sym = cookie->locsyms + cookie->locsymcount;
+      Elf_Internal_Sym *sym;
+
+      for (sym = cookie->locsyms + 1; sym < end_sym; ++sym)
+	if (sym->st_info <= ELF_ST_INFO (STB_LOCAL, STT_OBJECT)
+	    && sym->st_shndx == shndx)
 	  {
-	    adjusted = 1;
-	    sym->st_value += delta;
+	    bfd_signed_vma delta = offset_adjust (sym->st_value, sec);
+
+	    if (delta != 0)
+	      {
+		adjusted = 1;
+		sym->st_value += delta;
+	      }
 	  }
-      }
+    }
   return adjusted;
 }
 
@@ -1470,10 +1476,10 @@ adjust_eh_frame_local_symbols (const ase
    functions.  The function returns TRUE iff any entries have been
    deleted.  */
 
-bfd_boolean
+bool
 _bfd_elf_discard_section_eh_frame
    (bfd *abfd, struct bfd_link_info *info, asection *sec,
-    bfd_boolean (*reloc_symbol_deleted_p) (bfd_vma, void *),
+    bool (*reloc_symbol_deleted_p) (bfd_vma, void *),
     struct elf_reloc_cookie *cookie)
 {
   struct eh_cie_fde *ent;
@@ -1483,11 +1489,11 @@ _bfd_elf_discard_section_eh_frame
   int changed;
 
   if (sec->sec_info_type != SEC_INFO_TYPE_EH_FRAME)
-    return FALSE;
+    return false;
 
   sec_info = (struct eh_frame_sec_info *) elf_section_data (sec)->sec_info;
   if (sec_info == NULL)
-    return FALSE;
+    return false;
 
   ptr_size = (get_elf_backend_data (sec->owner)
 	      ->elf_backend_eh_frame_address_size (sec->owner, sec));
@@ -1500,7 +1506,7 @@ _bfd_elf_discard_section_eh_frame
       ent->removed = sec->map_head.s != NULL;
     else if (!ent->cie && ent->u.fde.cie_inf != NULL)
       {
-	bfd_boolean keep;
+	bool keep;
 	if ((sec->flags & SEC_LINKER_CREATED) != 0 && cookie->rels == NULL)
 	  {
 	    unsigned int width
@@ -1531,7 +1537,7 @@ _bfd_elf_discard_section_eh_frame
 		   which we cannot turn into PC relative,
 		   don't create the binary search table,
 		   since it is affected by runtime relocations.  */
-		hdr_info->u.dwarf.table = FALSE;
+		hdr_info->u.dwarf.table = false;
 		/* Only warn if --eh-frame-hdr was specified.  */
 		if (info->eh_frame_hdr_type != 0)
 		  {
@@ -1558,11 +1564,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
@@ -1615,8 +1618,8 @@ _bfd_elf_discard_section_eh_frame
    _bfd_elf_discard_section_eh_frame has been called on all .eh_frame
    input sections.  It finalizes the size of .eh_frame_hdr section.  */
 
-bfd_boolean
-_bfd_elf_discard_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info)
+bool
+_bfd_elf_discard_section_eh_frame_hdr (struct bfd_link_info *info)
 {
   struct elf_link_hash_table *htab;
   struct eh_frame_hdr_info *hdr_info;
@@ -1631,9 +1634,13 @@ _bfd_elf_discard_section_eh_frame_hdr (b
       hdr_info->u.dwarf.cies = NULL;
     }
 
+  if (info->eh_frame_hdr_type == 0
+      || bfd_link_relocatable (info))
+    return false;
+
   sec = hdr_info->hdr_sec;
   if (sec == NULL)
-    return FALSE;
+    return false;
 
   if (info->eh_frame_hdr_type == COMPACT_EH_HDR)
     {
@@ -1648,35 +1655,34 @@ _bfd_elf_discard_section_eh_frame_hdr (b
 	sec->size += 4 + hdr_info->u.dwarf.fde_count * 8;
     }
 
-  elf_eh_frame_hdr (abfd) = sec;
-  return TRUE;
+  return true;
 }
 
 /* Return true if there is at least one non-empty .eh_frame section in
    input files.  Can only be called after ld has mapped input to
    output sections, and before sections are stripped.  */
 
-bfd_boolean
+bool
 _bfd_elf_eh_frame_present (struct bfd_link_info *info)
 {
   asection *eh = bfd_get_section_by_name (info->output_bfd, ".eh_frame");
 
   if (eh == NULL)
-    return FALSE;
+    return false;
 
   /* Count only sections which have at least a single CIE or FDE.
      There cannot be any CIE or FDE <= 8 bytes.  */
   for (eh = eh->map_head.s; eh != NULL; eh = eh->map_head.s)
     if (eh->size > 8)
-      return TRUE;
+      return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Return true if there is at least one .eh_frame_entry section in
    input files.  */
 
-bfd_boolean
+bool
 _bfd_elf_eh_frame_entry_present (struct bfd_link_info *info)
 {
   asection *o;
@@ -1690,10 +1696,10 @@ _bfd_elf_eh_frame_entry_present (struct
 
 	  if (strcmp (name, ".eh_frame_entry")
 	      && !bfd_is_abs_section (o->output_section))
-	    return TRUE;
+	    return true;
 	}
     }
-  return FALSE;
+  return false;
 }
 
 /* This function is called from size_dynamic_sections.
@@ -1701,7 +1707,7 @@ _bfd_elf_eh_frame_entry_present (struct
    because when the dynamic symbol table has been sized it is too late
    to strip sections.  */
 
-bfd_boolean
+bool
 _bfd_elf_maybe_strip_eh_frame_hdr (struct bfd_link_info *info)
 {
   struct elf_link_hash_table *htab;
@@ -1712,7 +1718,7 @@ _bfd_elf_maybe_strip_eh_frame_hdr (struc
   htab = elf_hash_table (info);
   hdr_info = &htab->eh_info;
   if (hdr_info->hdr_sec == NULL)
-    return TRUE;
+    return true;
 
   if (bfd_is_abs_section (hdr_info->hdr_sec->output_section)
       || info->eh_frame_hdr_type == 0
@@ -1723,25 +1729,25 @@ _bfd_elf_maybe_strip_eh_frame_hdr (struc
     {
       hdr_info->hdr_sec->flags |= SEC_EXCLUDE;
       hdr_info->hdr_sec = NULL;
-      return TRUE;
+      return true;
     }
 
   /* Add a hidden symbol so that systems without access to PHDRs can
      find the table.  */
   if (! (_bfd_generic_link_add_one_symbol
 	 (info, info->output_bfd, "__GNU_EH_FRAME_HDR", BSF_LOCAL,
-	  hdr_info->hdr_sec, 0, NULL, FALSE, FALSE, &bh)))
-    return FALSE;
+	  hdr_info->hdr_sec, 0, NULL, false, false, &bh)))
+    return false;
 
   h = (struct elf_link_hash_entry *) bh;
   h->def_regular = 1;
   h->other = STV_HIDDEN;
   get_elf_backend_data
-    (info->output_bfd)->elf_backend_hide_symbol (info, h, TRUE);
+    (info->output_bfd)->elf_backend_hide_symbol (info, h, true);
 
   if (!hdr_info->frame_hdr_is_compact)
-    hdr_info->u.dwarf.table = TRUE;
-  return TRUE;
+    hdr_info->u.dwarf.table = true;
+  return true;
 }
 
 /* Adjust an address in the .eh_frame section.  Given OFFSET within
@@ -1834,7 +1840,7 @@ _bfd_elf_eh_frame_section_offset (bfd *o
 /* Write out .eh_frame_entry section.  Add CANTUNWIND terminator if needed.
    Also check that the contents look sane.  */
 
-bfd_boolean
+bool
 _bfd_elf_write_section_eh_frame_entry (bfd *abfd, struct bfd_link_info *info,
 				       asection *sec, bfd_byte *contents)
 {
@@ -1855,11 +1861,11 @@ _bfd_elf_write_section_eh_frame_entry (b
      excluded outside of the normal process.  */
   if (sec->flags & SEC_EXCLUDE
       || text_sec->flags & SEC_EXCLUDE)
-    return TRUE;
+    return true;
 
   if (!bfd_set_section_contents (abfd, sec->output_section, contents,
 				 sec->output_offset, sec->rawsize))
-      return FALSE;
+      return false;
 
   last_addr = bfd_get_signed_32 (abfd, contents);
   /* Check that all the entries are in order.  */
@@ -1870,7 +1876,7 @@ _bfd_elf_write_section_eh_frame_entry (b
 	{
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: %pA not in order"), sec->owner, sec);
-	  return FALSE;
+	  return false;
 	}
 
       last_addr = addr;
@@ -1886,7 +1892,7 @@ _bfd_elf_write_section_eh_frame_entry (b
       _bfd_error_handler (_("%pB: %pA invalid input section size"),
 			  sec->owner, sec);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   if (last_addr >= addr + sec->rawsize)
     {
@@ -1894,11 +1900,11 @@ _bfd_elf_write_section_eh_frame_entry (b
       _bfd_error_handler (_("%pB: %pA points past end of text section"),
 			  sec->owner, sec);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   if (sec->size == sec->rawsize)
-    return TRUE;
+    return true;
 
   bed = get_elf_backend_data (abfd);
   BFD_ASSERT (sec->size == sec->rawsize + 8);
@@ -1914,7 +1920,7 @@ _bfd_elf_write_section_eh_frame_entry (b
 /* Write out .eh_frame section.  This is called with the relocated
    contents.  */
 
-bfd_boolean
+bool
 _bfd_elf_write_section_eh_frame (bfd *abfd,
 				 struct bfd_link_info *info,
 				 asection *sec,
@@ -1941,7 +1947,7 @@ _bfd_elf_write_section_eh_frame (bfd *ab
 
   if (hdr_info->u.dwarf.table && hdr_info->u.dwarf.array == NULL)
     {
-      hdr_info->frame_hdr_is_compact = FALSE;
+      hdr_info->frame_hdr_is_compact = false;
       hdr_info->u.dwarf.array = (struct eh_frame_array_ent *)
 	bfd_malloc (hdr_info->u.dwarf.fde_count
 		    * sizeof (*hdr_info->u.dwarf.array));
@@ -2189,7 +2195,7 @@ _bfd_elf_write_section_eh_frame (bfd *ab
 	      hdr_info->u.dwarf.array[hdr_info->array_count].initial_loc
 		= address;
 	      hdr_info->u.dwarf.array[hdr_info->array_count].range
-		= read_value (abfd, buf + width, width, FALSE);
+		= read_value (abfd, buf + width, width, false);
 	      hdr_info->u.dwarf.array[hdr_info->array_count++].fde
 		= (sec->output_section->vma
 		   + sec->output_offset
@@ -2288,7 +2294,7 @@ vma_compare (const void *a, const void *
    invalid for a linker script to try to force a particular order of
    .eh_frame_entry sections.  */
 
-bfd_boolean
+bool
 _bfd_elf_fixup_eh_frame_hdr (struct bfd_link_info *info)
 {
   asection *sec = NULL;
@@ -2303,7 +2309,7 @@ _bfd_elf_fixup_eh_frame_hdr (struct bfd_
   if (hdr_info->hdr_sec == NULL
       || info->eh_frame_hdr_type != COMPACT_EH_HDR
       || hdr_info->array_count == 0)
-    return TRUE;
+    return true;
 
   /* Change section output offsets to be in text section order.  */
   offset = 8;
@@ -2316,7 +2322,7 @@ _bfd_elf_fixup_eh_frame_hdr (struct bfd_
 	  _bfd_error_handler
 	    (_("invalid output section for .eh_frame_entry: %pA"),
 	     sec->output_section);
-	  return FALSE;
+	  return false;
 	}
       sec->output_offset = offset;
       offset += sec->size;
@@ -2338,10 +2344,10 @@ _bfd_elf_fixup_eh_frame_hdr (struct bfd_
     {
       _bfd_error_handler
 	(_("invalid contents in %pA section"), osec);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* The .eh_frame_hdr format for Compact EH frames:
@@ -2350,7 +2356,7 @@ _bfd_elf_fixup_eh_frame_hdr (struct bfd_
    uint32_t count		(Number of entries in table)
    [array from .eh_frame_entry sections]  */
 
-static bfd_boolean
+static bool
 write_compact_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *htab;
@@ -2403,13 +2409,13 @@ write_compact_eh_frame_hdr (bfd *abfd, s
 				 FDE initial_location field and FDE address,
 				 sorted by increasing initial_loc).  */
 
-static bfd_boolean
+static bool
 write_dwarf_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *htab;
   struct eh_frame_hdr_info *hdr_info;
   asection *sec;
-  bfd_boolean retval = TRUE;
+  bool retval = false;
 
   htab = elf_hash_table (info);
   hdr_info = &htab->eh_info;
@@ -2425,14 +2431,11 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str
     size += 4 + hdr_info->u.dwarf.fde_count * 8;
   contents = (bfd_byte *) bfd_malloc (size);
   if (contents == NULL)
-    return FALSE;
+    goto out;
 
   eh_frame_sec = bfd_get_section_by_name (abfd, ".eh_frame");
   if (eh_frame_sec == NULL)
-    {
-      free (contents);
-      return FALSE;
-    }
+    goto out;
 
   memset (contents, 0, EH_FRAME_HDR_SIZE);
   /* Version.  */
@@ -2456,17 +2459,18 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str
     }
   bfd_put_32 (abfd, encoded_eh_frame, contents + 4);
 
+  retval = true;
   if (contents[2] != DW_EH_PE_omit)
     {
       unsigned int i;
-      bfd_boolean overlap, overflow;
+      bool overlap, overflow;
 
       bfd_put_32 (abfd, hdr_info->u.dwarf.fde_count,
 		  contents + EH_FRAME_HDR_SIZE);
       qsort (hdr_info->u.dwarf.array, hdr_info->u.dwarf.fde_count,
 	     sizeof (*hdr_info->u.dwarf.array), vma_compare);
-      overlap = FALSE;
-      overflow = FALSE;
+      overlap = false;
+      overflow = false;
       for (i = 0; i < hdr_info->u.dwarf.fde_count; i++)
 	{
 	  bfd_vma val;
@@ -2477,20 +2481,20 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str
 	  if (elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64
 	      && (hdr_info->u.dwarf.array[i].initial_loc
 		  != sec->output_section->vma + val))
-	    overflow = TRUE;
+	    overflow = true;
 	  bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 4);
 	  val = hdr_info->u.dwarf.array[i].fde - sec->output_section->vma;
 	  val = ((val & 0xffffffff) ^ 0x80000000) - 0x80000000;
 	  if (elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64
 	      && (hdr_info->u.dwarf.array[i].fde
 		  != sec->output_section->vma + val))
-	    overflow = TRUE;
+	    overflow = true;
 	  bfd_put_32 (abfd, val, contents + EH_FRAME_HDR_SIZE + i * 8 + 8);
 	  if (i != 0
 	      && (hdr_info->u.dwarf.array[i].initial_loc
 		  < (hdr_info->u.dwarf.array[i - 1].initial_loc
 		     + hdr_info->u.dwarf.array[i - 1].range)))
-	    overlap = TRUE;
+	    overlap = true;
 	}
       if (overflow)
 	_bfd_error_handler (_(".eh_frame_hdr entry overflow"));
@@ -2499,19 +2503,19 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str
       if (overflow || overlap)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  retval = FALSE;
+	  retval = false;
 	}
     }
 
   /* FIXME: octets_per_byte.  */
   if (!bfd_set_section_contents (abfd, sec->output_section, contents,
 				 (file_ptr) sec->output_offset,
-				 sec->size))
-    retval = FALSE;
+				 size))
+    retval = false;
+ out:
   free (contents);
-
-  if (hdr_info->u.dwarf.array != NULL)
-    free (hdr_info->u.dwarf.array);
+  free (hdr_info->u.dwarf.array);
+  hdr_info->u.dwarf.array = NULL;
   return retval;
 }
 
@@ -2519,7 +2523,7 @@ write_dwarf_eh_frame_hdr (bfd *abfd, str
    _bfd_elf_write_section_eh_frame has been called on all input
    .eh_frame sections.  */
 
-bfd_boolean
+bool
 _bfd_elf_write_section_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *htab;
@@ -2531,7 +2535,7 @@ _bfd_elf_write_section_eh_frame_hdr (bfd
   sec = hdr_info->hdr_sec;
 
   if (info->eh_frame_hdr_type == 0 || sec == NULL)
-    return TRUE;
+    return true;
 
   if (info->eh_frame_hdr_type == COMPACT_EH_HDR)
     return write_compact_eh_frame_hdr (abfd, info);
@@ -2550,12 +2554,12 @@ _bfd_elf_eh_frame_address_size (bfd *abf
 /* Decide whether we can use a PC-relative encoding within the given
    EH frame section.  This is the default implementation.  */
 
-bfd_boolean
+bool
 _bfd_elf_can_make_relative (bfd *input_bfd ATTRIBUTE_UNUSED,
 			    struct bfd_link_info *info ATTRIBUTE_UNUSED,
 			    asection *eh_frame_section ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* Select an encoding for the given address.  Preference is given 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.20200303/bfd/elf-hppa.h ./bfd/elf-hppa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-hppa.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-hppa.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Common code for PA ELF implementations.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -49,286 +49,286 @@ static reloc_howto_type elf_hppa_howto_t
 {
 #define HOW(type, size, bitsize, pc_rel, complain, mask) \
   HOWTO (type, 0, size, bitsize, pc_rel, 0, complain_overflow_ ## complain, \
-	 bfd_elf_generic_reloc, #type, FALSE, 0, mask, FALSE)
+	 bfd_elf_generic_reloc, #type, false, 0, mask, false)
 
   /* The values in DIR32 are to placate the check in
      _bfd_stab_section_find_nearest_line.  */
-  HOW (R_PARISC_NONE,		3,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_DIR32,		2, 32, FALSE, bitfield, 0xffffffff),
-  HOW (R_PARISC_DIR21L,		2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR17R,		2, 17, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR17F,		2, 17, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR14R,		2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR14F,		2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_NONE,		0,  0, false,     dont, 0),
+  HOW (R_PARISC_DIR32,		4, 32, false, bitfield, 0xffffffff),
+  HOW (R_PARISC_DIR21L,		4, 21, false, bitfield, 0),
+  HOW (R_PARISC_DIR17R,		4, 17, false, bitfield, 0),
+  HOW (R_PARISC_DIR17F,		4, 17, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DIR14R,		4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DIR14F,		4, 14, false, bitfield, 0),
   /* 8 */
-  HOW (R_PARISC_PCREL12F,	2, 12,  TRUE, bitfield, 0),
-  HOW (R_PARISC_PCREL32,	2, 32,  TRUE, bitfield, 0),
-  HOW (R_PARISC_PCREL21L,	2, 21,  TRUE, bitfield, 0),
-  HOW (R_PARISC_PCREL17R,	2, 17,  TRUE, bitfield, 0),
-  HOW (R_PARISC_PCREL17F,	2, 17,  TRUE, bitfield, 0),
-  HOW (R_PARISC_PCREL17C,	2, 17,  TRUE, bitfield, 0),
-  HOW (R_PARISC_PCREL14R,	2, 14,  TRUE, bitfield, 0),
-  HOW (R_PARISC_PCREL14F,	2, 14,  TRUE, bitfield, 0),
+  HOW (R_PARISC_PCREL12F,	4, 12,  true, bitfield, 0),
+  HOW (R_PARISC_PCREL32,	4, 32,  true, bitfield, 0),
+  HOW (R_PARISC_PCREL21L,	4, 21,  true, bitfield, 0),
+  HOW (R_PARISC_PCREL17R,	4, 17,  true, bitfield, 0),
+  HOW (R_PARISC_PCREL17F,	4, 17,  true, bitfield, 0),
+  HOW (R_PARISC_PCREL17C,	4, 17,  true, bitfield, 0),
+  HOW (R_PARISC_PCREL14R,	4, 14,  true, bitfield, 0),
+  HOW (R_PARISC_PCREL14F,	4, 14,  true, bitfield, 0),
   /* 16 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DPREL21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_DPREL14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DPREL14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DPREL14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DPREL14F,	2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DPREL21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_DPREL14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DPREL14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DPREL14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DPREL14F,	4, 14, false, bitfield, 0),
   /* 24 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTREL21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTREL14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTREL14F,	2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DLTREL21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DLTREL14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DLTREL14F,	4, 14, false, bitfield, 0),
   /* 32 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTIND21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTIND14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTIND14F,	2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DLTIND21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DLTIND14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DLTIND14F,	4, 14, false, bitfield, 0),
   /* 40 */
-  HOW (R_PARISC_SETBASE,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_SECREL32,	2, 32, FALSE, bitfield, 0xffffffff),
-  HOW (R_PARISC_BASEREL21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_BASEREL17R,	2, 17, FALSE, bitfield, 0),
-  HOW (R_PARISC_BASEREL17F,	2, 17, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_BASEREL14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_BASEREL14F,	2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_SETBASE,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_SECREL32,	4, 32, false, bitfield, 0xffffffff),
+  HOW (R_PARISC_BASEREL21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_BASEREL17R,	4, 17, false, bitfield, 0),
+  HOW (R_PARISC_BASEREL17F,	4, 17, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_BASEREL14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_BASEREL14F,	4, 14, false, bitfield, 0),
   /* 48 */
-  HOW (R_PARISC_SEGBASE,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_SEGREL32,	2, 32, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLTOFF21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLTOFF14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLTOFF14F,	2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_SEGBASE,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_SEGREL32,	4, 32, false, bitfield, 0),
+  HOW (R_PARISC_PLTOFF21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_PLTOFF14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_PLTOFF14F,	4, 14, false, bitfield, 0),
   /* 56 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_FPTR32,	2, 32, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_FPTR21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_FPTR14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR32,	4, 32, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 64 */
-  HOW (R_PARISC_FPTR64,		4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLABEL32,	2, 32, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLABEL21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLABEL14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_FPTR64,		8, 64, false, bitfield, 0),
+  HOW (R_PARISC_PLABEL32,	4, 32, false, bitfield, 0),
+  HOW (R_PARISC_PLABEL21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_PLABEL14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 72 */
-  HOW (R_PARISC_PCREL64,	4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_PCREL22C,	2, 22, FALSE, bitfield, 0),
-  HOW (R_PARISC_PCREL22F,	2, 22, FALSE, bitfield, 0),
-  HOW (R_PARISC_PCREL14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_PCREL14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_PCREL16F,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_PCREL16WF,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_PCREL16DF,	2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_PCREL64,	8, 64, false, bitfield, 0),
+  HOW (R_PARISC_PCREL22C,	4, 22, false, bitfield, 0),
+  HOW (R_PARISC_PCREL22F,	4, 22, false, bitfield, 0),
+  HOW (R_PARISC_PCREL14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_PCREL14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_PCREL16F,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_PCREL16WF,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_PCREL16DF,	4, 16, false, bitfield, 0),
   /* 80 */
-  HOW (R_PARISC_DIR64,		4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR16F,		2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR16WF,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_DIR16DF,	2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_DIR64,		8, 64, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DIR14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DIR14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DIR16F,		4, 16, false, bitfield, 0),
+  HOW (R_PARISC_DIR16WF,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_DIR16DF,	4, 16, false, bitfield, 0),
   /* 88 */
-  HOW (R_PARISC_GPREL64,	4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTREL14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTREL14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_GPREL16F,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_GPREL16WF,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_GPREL16DF,	2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_GPREL64,	8, 64, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DLTREL14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DLTREL14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_GPREL16F,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_GPREL16WF,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_GPREL16DF,	4, 16, false, bitfield, 0),
   /* 96 */
-  HOW (R_PARISC_LTOFF64,	4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTIND14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_DLTIND14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF16F,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF16WF,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF16DF,	2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF64,	8, 64, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_DLTIND14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_DLTIND14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF16F,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF16WF,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF16DF,	4, 16, false, bitfield, 0),
   /* 104 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_BASEREL14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_BASEREL14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_BASEREL14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_BASEREL14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 112 */
-  HOW (R_PARISC_SEGREL64,	4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLTOFF14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLTOFF14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLTOFF16F,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLTOFF16WF,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_PLTOFF16DF,	2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_SEGREL64,	8, 64, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_PLTOFF14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_PLTOFF14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_PLTOFF16F,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_PLTOFF16WF,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_PLTOFF16DF,	4, 16, false, bitfield, 0),
   /* 120 */
-  HOW (R_PARISC_LTOFF_FPTR64,	4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_FPTR14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_FPTR14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_FPTR16F,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_FPTR16WF,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_FPTR16DF,	2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR64,	8, 64, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR16F,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR16WF,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_FPTR16DF,	4, 16, false, bitfield, 0),
   /* 128 */
-  HOW (R_PARISC_COPY,		0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_IPLT,		0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_EPLT,		0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_COPY,		0,  0, false, bitfield, 0),
+  HOW (R_PARISC_IPLT,		0,  0, false, bitfield, 0),
+  HOW (R_PARISC_EPLT,		0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 136 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 144 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
   /* 152 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_TPREL32,	2, 32, FALSE,     dont, 0),
-  HOW (R_PARISC_TPREL21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_TPREL14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_TPREL32,	4, 32, false,     dont, 0),
+  HOW (R_PARISC_TPREL21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_TPREL14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
   /* 160 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_LTOFF_TP21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_TP14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_TP14F,	2, 14, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_LTOFF_TP21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP14F,	4, 14, false, bitfield, 0),
   /* 168 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 176 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 184 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
   /* 192 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 200 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 208 */
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
   /* 216 */
-  HOW (R_PARISC_TPREL64,	4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_TPREL14WR,	2, 14, FALSE,     dont, 0),
-  HOW (R_PARISC_TPREL14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_TPREL16F,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_TPREL16WF,	2, 16, FALSE,     dont, 0),
-  HOW (R_PARISC_TPREL16DF,	2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_TPREL64,	8, 64, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_TPREL14WR,	4, 14, false,     dont, 0),
+  HOW (R_PARISC_TPREL14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_TPREL16F,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_TPREL16WF,	4, 16, false,     dont, 0),
+  HOW (R_PARISC_TPREL16DF,	4, 16, false, bitfield, 0),
   /* 224 */
-  HOW (R_PARISC_LTOFF_TP64,	4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_TP14WR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_TP14DR,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_TP16F,	2, 16, FALSE,     dont, 0),
-  HOW (R_PARISC_LTOFF_TP16WF,	2, 16, FALSE, bitfield, 0),
-  HOW (R_PARISC_LTOFF_TP16DF,	2, 16, FALSE, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP64,	8, 64, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_UNIMPLEMENTED,	0,  0, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP14WR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP14DR,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP16F,	4, 16, false,     dont, 0),
+  HOW (R_PARISC_LTOFF_TP16WF,	4, 16, false, bitfield, 0),
+  HOW (R_PARISC_LTOFF_TP16DF,	4, 16, false, bitfield, 0),
   /* 232 */
-  HOW (R_PARISC_GNU_VTENTRY,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_GNU_VTINHERIT,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_TLS_GD21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_GD14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_GDCALL,	0,  0, FALSE,     dont, 0),
-  HOW (R_PARISC_TLS_LDM21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_LDM14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_LDMCALL,	0,  0, FALSE,     dont, 0),
+  HOW (R_PARISC_GNU_VTENTRY,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_GNU_VTINHERIT,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_TLS_GD21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_TLS_GD14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_TLS_GDCALL,	0,  0, false,     dont, 0),
+  HOW (R_PARISC_TLS_LDM21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_TLS_LDM14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_TLS_LDMCALL,	0,  0, false,     dont, 0),
   /* 240 */
-  HOW (R_PARISC_TLS_LDO21L,	2, 21, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_LDO14R,	2, 14, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_DTPMOD32,	2, 32, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_DTPMOD64,	4, 64, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_DTPOFF32,	2, 32, FALSE, bitfield, 0),
-  HOW (R_PARISC_TLS_DTPOFF64,	4, 64, FALSE, bitfield, 0)
+  HOW (R_PARISC_TLS_LDO21L,	4, 21, false, bitfield, 0),
+  HOW (R_PARISC_TLS_LDO14R,	4, 14, false, bitfield, 0),
+  HOW (R_PARISC_TLS_DTPMOD32,	4, 32, false, bitfield, 0),
+  HOW (R_PARISC_TLS_DTPMOD64,	8, 64, false, bitfield, 0),
+  HOW (R_PARISC_TLS_DTPOFF32,	4, 32, false, bitfield, 0),
+  HOW (R_PARISC_TLS_DTPOFF64,	8, 64, false, bitfield, 0)
 #undef HOW
 };
 
@@ -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);
@@ -778,7 +778,7 @@ _bfd_elf_hppa_gen_reloc_type (bfd *abfd,
 
 /* Translate from an elf into field into a howto relocation pointer.  */
 
-static bfd_boolean
+static bool
 elf_hppa_info_to_howto (bfd *abfd,
 			arelent *bfd_reloc,
 			Elf_Internal_Rela *elf_reloc)
@@ -798,15 +798,15 @@ elf_hppa_info_to_howto (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   bfd_reloc->howto = howto;
-  return TRUE;
+  return true;
 }
 
 /* Translate from an elf into field into a howto relocation pointer.  */
 
-static bfd_boolean
+static bool
 elf_hppa_info_to_howto_rel (bfd *abfd,
 			    arelent *bfd_reloc,
 			    Elf_Internal_Rela *elf_reloc)
@@ -826,10 +826,10 @@ elf_hppa_info_to_howto_rel (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   bfd_reloc->howto = howto;
-  return TRUE;
+  return true;
 }
 
 /* Return the address of the howto table entry to perform the CODE
@@ -865,18 +865,18 @@ elf_hppa_reloc_name_lookup (bfd *abfd AT
 
 /* Return TRUE if SYM represents a local label symbol.  */
 
-static bfd_boolean
+static bool
 elf_hppa_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED, const char *name)
 {
   if (name[0] == 'L' && name[1] == '$')
-    return TRUE;
+    return true;
   return _bfd_elf_is_local_label_name (abfd, name);
 }
 
 /* Set the correct type for an ELF section.  We do this by the
    section name, which is a hack, but ought to work.  */
 
-static bfd_boolean
+static bool
 elf_hppa_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
 {
   const char *name;
@@ -920,10 +920,10 @@ elf_hppa_fake_sections (bfd *abfd, Elf_I
 	 so it is allowed to change the rules).  Leave as it is for now.  */
       hdr->sh_entsize = 4;
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_hppa_final_write_processing (bfd *abfd)
 {
   int mach = bfd_get_mach (abfd);
@@ -974,7 +974,7 @@ hppa_unwind_entry_compare (const void *a
   return av < bv ? -1 : av > bv ? 1 : 0;
 }
 
-static bfd_boolean
+static bool
 elf_hppa_sort_unwind (bfd *abfd)
 {
   asection *s;
@@ -984,22 +984,23 @@ elf_hppa_sort_unwind (bfd *abfd)
      Consider what happens if someone inept creates a linker script
      that puts unwind information in .text.  */
   s = bfd_get_section_by_name (abfd, ".PARISC.unwind");
-  if (s != NULL)
+  if (s != NULL && (s->flags & SEC_HAS_CONTENTS) != 0)
+
     {
       bfd_size_type size;
       bfd_byte *contents;
 
       if (!bfd_malloc_and_get_section (abfd, s, &contents))
-	return FALSE;
+	return false;
 
       size = s->size;
       qsort (contents, (size_t) (size / 16), 16, hppa_unwind_entry_compare);
 
       if (! bfd_set_section_contents (abfd, s, contents, (file_ptr) 0, size))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* What to do when ld finds relocations against symbols defined 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.20200303/bfd/elf-ifunc.c ./bfd/elf-ifunc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-ifunc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-ifunc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF STT_GNU_IFUNC support.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -30,7 +30,7 @@
 
 /* Create sections needed by STT_GNU_IFUNC symbol.  */
 
-bfd_boolean
+bool
 _bfd_elf_create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags, pltflags;
@@ -39,7 +39,7 @@ _bfd_elf_create_ifunc_sections (bfd *abf
   struct elf_link_hash_table *htab = elf_hash_table (info);
 
   if (htab->irelifunc != NULL || htab->iplt != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
   pltflags = flags;
@@ -63,7 +63,7 @@ _bfd_elf_create_ifunc_sections (bfd *abf
 				       flags | SEC_READONLY);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->irelifunc = s;
     }
   else
@@ -73,7 +73,7 @@ _bfd_elf_create_ifunc_sections (bfd *abf
       s = bfd_make_section_with_flags (abfd, ".iplt", pltflags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->plt_alignment))
-	return FALSE;
+	return false;
       htab->iplt = s;
 
       s = bfd_make_section_with_flags (abfd,
@@ -82,7 +82,7 @@ _bfd_elf_create_ifunc_sections (bfd *abf
 				       flags | SEC_READONLY);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->irelplt = s;
 
       /* We don't need the .igot section if we have the .igot.plt
@@ -93,35 +93,33 @@ _bfd_elf_create_ifunc_sections (bfd *abf
 	s = bfd_make_section_with_flags (abfd, ".igot", flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->igotplt = s;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs against a STT_GNU_IFUNC symbol definition.  */
 
-bfd_boolean
+bool
 _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,
-				    bfd_boolean avoid_plt)
+				    bool avoid_plt)
 {
   asection *plt, *gotplt, *relplt;
   struct elf_dyn_relocs *p;
   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);
+  bool use_plt = !avoid_plt || h->plt.refcount > 0;
+  bool need_dynreloc = !use_plt || bfd_link_pic (info);
 
   /* When a PIC object references a STT_GNU_IFUNC symbol defined
      in executable or it isn't referenced via PLT, the address of
@@ -141,15 +139,15 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
 	  || info->export_dynamic)
       && h->pointer_equality_needed)
     {
-      info->callbacks->einfo
+      info->callbacks->fatal
 	/* xgettext:c-format */
-	(_("%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer "
+	(_("%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"),
 	 h->root.root.string,
 	 h->root.u.def.section->owner);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   htab = elf_hash_table (info);
@@ -160,17 +158,17 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
      reference.  */
   if (need_dynreloc && h->ref_regular)
     {
-      bfd_boolean keep = FALSE;
+      bool keep = false;
       for (p = *head; p != NULL; p = p->next)
 	if (p->count)
 	  {
 	    h->non_got_ref = 1;
 	    /* Need dynamic relocations for non-GOT reference.  */
-	    keep = TRUE;
+	    keep = true;
 	    if (p->pc_count)
 	      {
 		/* Must use PLT for PC-relative reference.  */
-		use_plt = TRUE;
+		use_plt = true;
 		need_dynreloc = bfd_link_pic (info);
 		break;
 	      }
@@ -185,7 +183,7 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
       h->got = htab->init_got_offset;
       h->plt = htab->init_plt_offset;
       *head = NULL;
-      return TRUE;
+      return true;
     }
 
   /* Return and discard space for dynamic relocations against it if
@@ -198,10 +196,10 @@ _bfd_elf_allocate_ifunc_dyn_relocs (stru
       h->got = htab->init_got_offset;
       h->plt = htab->init_plt_offset;
       *head = NULL;
-      return TRUE;
+      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
@@ -357,5 +346,5 @@ keep:
 	}
     }
 
-  return TRUE;
+  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.20200303/bfd/elflink.c ./bfd/elflink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elflink.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elflink.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF linking support for BFD.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -27,9 +27,11 @@
 #include "safe-ctype.h"
 #include "libiberty.h"
 #include "objalloc.h"
-#if BFD_SUPPORTS_PLUGINS
-#include "plugin-api.h"
 #include "plugin.h"
+
+#include <limits.h>
+#ifndef CHAR_BIT
+#define CHAR_BIT 8
 #endif
 
 /* This struct is used to pass information to routines called via
@@ -38,41 +40,117 @@
 struct elf_info_failed
 {
   struct bfd_link_info *info;
-  bfd_boolean failed;
+  bool failed;
 };
 
-/* This structure is used to pass information to
-   _bfd_elf_link_find_version_dependencies.  */
+static bool _bfd_elf_fix_symbol_flags
+  (struct elf_link_hash_entry *, struct elf_info_failed *);
+
+/* Return false if linker should avoid caching relocation information
+   and symbol tables of input files in memory.  */
 
-struct elf_find_verdep_info
+static bool
+_bfd_elf_link_keep_memory (struct bfd_link_info *info)
 {
-  /* General link information.  */
-  struct bfd_link_info *info;
-  /* The number of dependencies.  */
-  unsigned int vers;
-  /* Whether we had a failure.  */
-  bfd_boolean failed;
-};
+#ifdef USE_MMAP
+  /* Don't cache symbol nor relocation tables if they are mapped in.
+     NB: Since the --no-keep-memory linker option causes:
 
-static bfd_boolean _bfd_elf_fix_symbol_flags
-  (struct elf_link_hash_entry *, struct elf_info_failed *);
+     https://sourceware.org/bugzilla/show_bug.cgi?id=31458
 
-asection *
-_bfd_elf_section_for_symbol (struct elf_reloc_cookie *cookie,
-			     unsigned long r_symndx,
-			     bfd_boolean discard)
+     this is opt-in by each backend.  */
+  const struct elf_backend_data *bed
+    = get_elf_backend_data (info->output_bfd);
+  if (bed != NULL && bed->use_mmap)
+    return false;
+#endif
+  bfd *abfd;
+  bfd_size_type size;
+
+  if (!info->keep_memory)
+    return false;
+
+  if (info->max_cache_size == (bfd_size_type) -1)
+    return true;
+
+  abfd = info->input_bfds;
+  size = info->cache_size;
+  do
+    {
+      if (size >= info->max_cache_size)
+	{
+	  /* Over the limit.  Reduce the memory usage.  */
+	  info->keep_memory = false;
+	  return false;
+	}
+      if (!abfd)
+	break;
+      size += abfd->alloc_size;
+      abfd = abfd->link.next;
+    }
+  while (1);
+
+  return true;
+}
+
+static struct elf_link_hash_entry *
+get_link_hash_entry (struct elf_link_hash_entry **  sym_hashes,
+		     unsigned int                   symndx,
+		     unsigned int                   ext_sym_start)
+{
+  if (sym_hashes == NULL
+      /* Guard against corrupt input.  See PR 32636 for an example.  */
+      || symndx < ext_sym_start)
+    return NULL;
+
+  struct elf_link_hash_entry *h = sym_hashes[symndx - ext_sym_start];
+
+  /* The hash might be empty.  See PR 32641 for an example of this.  */
+  if (h == NULL)
+    return NULL;
+
+  while (h->root.type == bfd_link_hash_indirect
+	 || h->root.type == bfd_link_hash_warning)
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+  return h;
+}
+
+struct elf_link_hash_entry *
+_bfd_elf_get_link_hash_entry (struct elf_link_hash_entry **  sym_hashes,
+			      unsigned int                   symndx,
+			      Elf_Internal_Shdr *            symtab_hdr)
+{
+  if (symtab_hdr == NULL)
+    return NULL;
+
+  return get_link_hash_entry (sym_hashes, symndx, symtab_hdr->sh_info);
+}
+
+static struct elf_link_hash_entry *
+get_ext_sym_hash_from_cookie (struct elf_reloc_cookie *cookie, unsigned long r_symndx)
 {
+  if (cookie == NULL || cookie->sym_hashes == NULL)
+    return NULL;
+  
   if (r_symndx >= cookie->locsymcount
       || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
-    {
-      struct elf_link_hash_entry *h;
+    return get_link_hash_entry (cookie->sym_hashes, r_symndx, cookie->extsymoff);
 
-      h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
+  return NULL;
+}
 
-      while (h->root.type == bfd_link_hash_indirect
-	     || h->root.type == bfd_link_hash_warning)
-	h = (struct elf_link_hash_entry *) h->root.u.i.link;
+asection *
+_bfd_elf_section_for_symbol (struct elf_reloc_cookie *cookie,
+			     unsigned long r_symndx,
+			     bool discard)
+{
+  struct elf_link_hash_entry *h;
 
+  h = get_ext_sym_hash_from_cookie (cookie, r_symndx);
+  
+  if (h != NULL)
+    {
       if ((h->root.type == bfd_link_hash_defined
 	   || h->root.type == bfd_link_hash_defweak)
 	   && discarded_section (h->root.u.def.section))
@@ -80,21 +158,20 @@ _bfd_elf_section_for_symbol (struct elf_
       else
 	return NULL;
     }
-  else
-    {
-      /* It's not a relocation against a global symbol,
-	 but it could be a relocation against a local
-	 symbol for a discarded section.  */
-      asection *isec;
-      Elf_Internal_Sym *isym;
 
-      /* Need to: get the symbol; get the section.  */
-      isym = &cookie->locsyms[r_symndx];
-      isec = bfd_section_from_elf_index (cookie->abfd, isym->st_shndx);
-      if (isec != NULL
-	  && discard ? discarded_section (isec) : 1)
-	return isec;
-     }
+  /* It's not a relocation against a global symbol,
+     but it could be a relocation against a local
+     symbol for a discarded section.  */
+  asection *isec;
+  Elf_Internal_Sym *isym;
+
+  /* Need to: get the symbol; get the section.  */
+  isym = &cookie->locsyms[r_symndx];
+  isec = bfd_section_from_elf_index (cookie->abfd, isym->st_shndx);
+  if (isec != NULL
+      && discard ? discarded_section (isec) : 1)
+    return isec;
+
   return NULL;
 }
 
@@ -110,7 +187,7 @@ _bfd_elf_define_linkage_sym (bfd *abfd,
   struct bfd_link_hash_entry *bh;
   const struct elf_backend_data *bed;
 
-  h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, FALSE);
+  h = elf_link_hash_lookup (elf_hash_table (info), name, false, false, false);
   if (h != NULL)
     {
       /* Zap symbol defined in an as-needed lib that wasn't linked.
@@ -125,7 +202,7 @@ _bfd_elf_define_linkage_sym (bfd *abfd,
 
   bed = get_elf_backend_data (abfd);
   if (!_bfd_generic_link_add_one_symbol (info, abfd, name, BSF_GLOBAL,
-					 sec, 0, NULL, FALSE, bed->collect,
+					 sec, 0, NULL, false, bed->collect,
 					 &bh))
     return NULL;
   h = (struct elf_link_hash_entry *) bh;
@@ -137,11 +214,11 @@ _bfd_elf_define_linkage_sym (bfd *abfd,
   if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL)
     h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
 
-  (*bed->elf_backend_hide_symbol) (info, h, TRUE);
+  (*bed->elf_backend_hide_symbol) (info, h, true);
   return h;
 }
 
-bfd_boolean
+bool
 _bfd_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags;
@@ -152,24 +229,23 @@ _bfd_elf_create_got_section (bfd *abfd,
 
   /* This function may be called more than once.  */
   if (htab->sgot != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
 
   s = bfd_make_section_anyway_with_flags (abfd,
 					  (bed->rela_plts_and_copies_p
 					   ? ".rela.got" : ".rel.got"),
-					  (bed->dynamic_sec_flags
-					   | SEC_READONLY));
+					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->srelgot = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->sgot = s;
 
   if (bed->want_got_plt)
@@ -177,7 +253,7 @@ _bfd_elf_create_got_section (bfd *abfd,
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->sgotplt = s;
     }
 
@@ -194,14 +270,14 @@ _bfd_elf_create_got_section (bfd *abfd,
 				       "_GLOBAL_OFFSET_TABLE_");
       elf_hash_table (info)->hgot = h;
       if (h == NULL)
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create a strtab to hold the dynamic symbol names.  */
-static bfd_boolean
+static bool
 _bfd_elf_link_create_dynstrtab (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *hash_table;
@@ -236,9 +312,9 @@ _bfd_elf_link_create_dynstrtab (bfd *abf
     {
       hash_table->dynstr = _bfd_elf_strtab_init ();
       if (hash_table->dynstr == NULL)
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Create some sections which will be filled in with dynamic linking
@@ -248,7 +324,7 @@ _bfd_elf_link_create_dynstrtab (bfd *abf
    addresses are assigned to the output sections.  We work out the
    actual contents and size of these sections later.  */
 
-bfd_boolean
+bool
 _bfd_elf_link_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags;
@@ -257,13 +333,13 @@ _bfd_elf_link_create_dynamic_sections (b
   struct elf_link_hash_entry *h;
 
   if (! is_elf_hash_table (info->hash))
-    return FALSE;
+    return false;
 
   if (elf_hash_table (info)->dynamic_sections_created)
-    return TRUE;
+    return true;
 
   if (!_bfd_elf_link_create_dynstrtab (abfd, info))
-    return FALSE;
+    return false;
 
   abfd = elf_hash_table (info)->dynobj;
   bed = get_elf_backend_data (abfd);
@@ -277,7 +353,7 @@ _bfd_elf_link_create_dynamic_sections (b
       s = bfd_make_section_anyway_with_flags (abfd, ".interp",
 					      flags | SEC_READONLY);
       if (s == NULL)
-	return FALSE;
+	return false;
     }
 
   /* Create sections to hold version informations.  These are removed
@@ -286,36 +362,37 @@ _bfd_elf_link_create_dynamic_sections (b
 					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".gnu.version",
 					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, 1))
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".gnu.version_r",
 					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".dynsym",
 					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   elf_hash_table (info)->dynsym = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".dynstr",
 					  flags | SEC_READONLY);
   if (s == NULL)
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".dynamic", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
+  elf_hash_table (info)->dynamic = s;
 
   /* The special symbol _DYNAMIC is always set to the start of the
      .dynamic section.  We could set _DYNAMIC in a linker script, but we
@@ -326,7 +403,7 @@ _bfd_elf_link_create_dynamic_sections (b
   h = _bfd_elf_define_linkage_sym (abfd, info, s, "_DYNAMIC");
   elf_hash_table (info)->hdynamic = h;
   if (h == NULL)
-    return FALSE;
+    return false;
 
   if (info->emit_hash)
     {
@@ -334,7 +411,7 @@ _bfd_elf_link_create_dynamic_sections (b
 					      flags | SEC_READONLY);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       elf_section_data (s)->this_hdr.sh_entsize = bed->s->sizeof_hash_entry;
     }
 
@@ -344,7 +421,7 @@ _bfd_elf_link_create_dynamic_sections (b
 					      flags | SEC_READONLY);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       /* For 64-bit ELF, .gnu.hash is a non-uniform entity size section:
 	 4 32-bit words followed by variable count of 64-bit words, then
 	 variable count of 32-bit words.  */
@@ -354,21 +431,31 @@ _bfd_elf_link_create_dynamic_sections (b
 	elf_section_data (s)->this_hdr.sh_entsize = 4;
     }
 
+  if (info->enable_dt_relr)
+    {
+      s = bfd_make_section_anyway_with_flags (abfd, ".relr.dyn",
+					      flags | SEC_READONLY);
+      if (s == NULL
+	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
+	return false;
+      elf_hash_table (info)->srelrdyn = s;
+    }
+
   /* Let the backend create the rest of the sections.  This lets the
      backend set the right flags.  The backend will normally create
      the .got and .plt sections.  */
   if (bed->elf_backend_create_dynamic_sections == NULL
       || ! (*bed->elf_backend_create_dynamic_sections) (abfd, info))
-    return FALSE;
+    return false;
 
-  elf_hash_table (info)->dynamic_sections_created = TRUE;
+  elf_hash_table (info)->dynamic_sections_created = true;
 
-  return TRUE;
+  return true;
 }
 
 /* Create dynamic sections when linking against a dynamic object.  */
 
-bfd_boolean
+bool
 _bfd_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags, pltflags;
@@ -395,7 +482,7 @@ _bfd_elf_create_dynamic_sections (bfd *a
   s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
   htab->splt = s;
 
   /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
@@ -406,7 +493,7 @@ _bfd_elf_create_dynamic_sections (bfd *a
 				       "_PROCEDURE_LINKAGE_TABLE_");
       elf_hash_table (info)->hplt = h;
       if (h == NULL)
-	return FALSE;
+	return false;
     }
 
   s = bfd_make_section_anyway_with_flags (abfd,
@@ -415,11 +502,11 @@ _bfd_elf_create_dynamic_sections (bfd *a
 					  flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->srelplt = s;
 
   if (! _bfd_elf_create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   if (bed->want_dynbss)
     {
@@ -432,7 +519,7 @@ _bfd_elf_create_dynamic_sections (bfd *a
       s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
 					      SEC_ALLOC | SEC_LINKER_CREATED);
       if (s == NULL)
-	return FALSE;
+	return false;
       htab->sdynbss = s;
 
       if (bed->want_dynrelro)
@@ -443,7 +530,7 @@ _bfd_elf_create_dynamic_sections (bfd *a
 	  s = bfd_make_section_anyway_with_flags (abfd, ".data.rel.ro",
 						  flags);
 	  if (s == NULL)
-	    return FALSE;
+	    return false;
 	  htab->sdynrelro = s;
 	}
 
@@ -466,7 +553,7 @@ _bfd_elf_create_dynamic_sections (bfd *a
 						  flags | SEC_READONLY);
 	  if (s == NULL
 	      || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	    return FALSE;
+	    return false;
 	  htab->srelbss = s;
 
 	  if (bed->want_dynrelro)
@@ -477,13 +564,13 @@ _bfd_elf_create_dynamic_sections (bfd *a
 		    flags | SEC_READONLY));
 	      if (s == NULL
 		  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-		return FALSE;
+		return false;
 	      htab->sreldynrelro = s;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Record a new dynamic symbol.  We record the dynamic symbols as we
@@ -494,7 +581,7 @@ _bfd_elf_create_dynamic_sections (bfd *a
    symbol should be in the dynamic symbol table, but only if there is
    one.  */
 
-bfd_boolean
+bool
 bfd_elf_link_record_dynamic_symbol (struct bfd_link_info *info,
 				    struct elf_link_hash_entry *h)
 {
@@ -505,6 +592,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,
@@ -517,8 +614,7 @@ bfd_elf_link_record_dynamic_symbol (stru
 	      && h->root.type != bfd_link_hash_undefweak)
 	    {
 	      h->forced_local = 1;
-	      if (!elf_hash_table (info)->is_relocatable_executable)
-		return TRUE;
+	      return true;
 	    }
 
 	default:
@@ -534,32 +630,34 @@ bfd_elf_link_record_dynamic_symbol (stru
 	  /* Create a strtab to hold the dynamic symbol names.  */
 	  elf_hash_table (info)->dynstr = dynstr = _bfd_elf_strtab_init ();
 	  if (dynstr == NULL)
-	    return FALSE;
+	    return false;
 	}
 
+      char *unversioned_name = NULL;
+
       /* We don't put any version information in the dynamic string
 	 table.  */
       name = h->root.root.string;
       p = strchr (name, ELF_VER_CHR);
       if (p != NULL)
-	/* We know that the p points into writable memory.  In fact,
-	   there are only a few symbols that have read-only names, being
-	   those like _GLOBAL_OFFSET_TABLE_ that are created specially
-	   by the backends.  Most symbols will have names pointing into
-	   an ELF string table read from a file, or to objalloc memory.  */
-	*p = 0;
+	{
+	  unversioned_name = bfd_malloc (p - name + 1);
+	  memcpy (unversioned_name, name, p - name);
+	  unversioned_name[p - name] = 0;
+	  name = unversioned_name;
+	}
 
       indx = _bfd_elf_strtab_add (dynstr, name, p != NULL);
 
       if (p != NULL)
-	*p = ELF_VER_CHR;
+	free (unversioned_name);
 
       if (indx == (size_t) -1)
-	return FALSE;
+	return false;
       h->dynstr_index = indx;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Mark a symbol dynamic.  */
@@ -595,22 +693,22 @@ bfd_elf_link_mark_dynamic_symbol (struct
 /* Record an assignment to a symbol made by a linker script.  We need
    this in case some dynamic object refers to this symbol.  */
 
-bfd_boolean
+bool
 bfd_elf_record_link_assignment (bfd *output_bfd,
 				struct bfd_link_info *info,
 				const char *name,
-				bfd_boolean provide,
-				bfd_boolean hidden)
+				bool provide,
+				bool hidden)
 {
   struct elf_link_hash_entry *h, *hv;
   struct elf_link_hash_table *htab;
   const struct elf_backend_data *bed;
 
   if (!is_elf_hash_table (info->hash))
-    return TRUE;
+    return true;
 
   htab = elf_hash_table (info);
-  h = elf_link_hash_lookup (htab, name, !provide, TRUE, FALSE);
+  h = elf_link_hash_lookup (htab, name, !provide, true, false);
   if (h == NULL)
     return provide;
 
@@ -672,7 +770,7 @@ bfd_elf_record_link_assignment (bfd *out
       break;
     default:
       BFD_FAIL ();
-      return FALSE;
+      return false;
     }
 
   /* If this symbol is being provided by the linker script, and it is
@@ -701,7 +799,7 @@ bfd_elf_record_link_assignment (bfd *out
       bed = get_elf_backend_data (output_bfd);
       if (ELF_ST_VISIBILITY (h->other) != STV_INTERNAL)
 	h->other = (h->other & ~ELF_ST_VISIBILITY (-1)) | STV_HIDDEN;
-      (*bed->elf_backend_hide_symbol) (info, h, TRUE);
+      (*bed->elf_backend_hide_symbol) (info, h, true);
     }
 
   /* STV_HIDDEN and STV_INTERNAL symbols must be STB_LOCAL in shared objects
@@ -714,13 +812,12 @@ bfd_elf_record_link_assignment (bfd *out
 
   if ((h->def_dynamic
        || h->ref_dynamic
-       || bfd_link_dll (info)
-       || elf_hash_table (info)->is_relocatable_executable)
+       || bfd_link_dll (info))
       && !h->forced_local
       && h->dynindx == -1)
     {
       if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
 
       /* If this is a weak defined symbol, and we know a corresponding
 	 real symbol from the same dynamic object, make sure the real
@@ -731,11 +828,11 @@ bfd_elf_record_link_assignment (bfd *out
 
 	  if (def->dynindx == -1
 	      && !bfd_elf_link_record_dynamic_symbol (info, def))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Record a new local dynamic symbol.  Returns 0 on failure, 1 on
@@ -747,7 +844,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;
@@ -805,7 +902,7 @@ bfd_elf_link_record_local_dynamic_symbol
 	return 0;
     }
 
-  dynstr_index = _bfd_elf_strtab_add (dynstr, name, FALSE);
+  dynstr_index = _bfd_elf_strtab_add (dynstr, name, false);
   if (dynstr_index == (size_t) -1)
     return 0;
   entry->isym.st_name = dynstr_index;
@@ -846,43 +943,43 @@ _bfd_elf_link_lookup_local_dynindx (stru
    them are removed because they are marked as local.  This is called
    via elf_link_hash_traverse.  */
 
-static bfd_boolean
+static bool
 elf_link_renumber_hash_table_dynsyms (struct elf_link_hash_entry *h,
 				      void *data)
 {
   size_t *count = (size_t *) data;
 
   if (h->forced_local)
-    return TRUE;
+    return true;
 
   if (h->dynindx != -1)
     h->dynindx = ++(*count);
 
-  return TRUE;
+  return true;
 }
 
 
 /* Like elf_link_renumber_hash_table_dynsyms, but just number symbols with
    STB_LOCAL binding.  */
 
-static bfd_boolean
+static bool
 elf_link_renumber_local_hash_table_dynsyms (struct elf_link_hash_entry *h,
 					    void *data)
 {
   size_t *count = (size_t *) data;
 
   if (!h->forced_local)
-    return TRUE;
+    return true;
 
   if (h->dynindx != -1)
     h->dynindx = ++(*count);
 
-  return TRUE;
+  return true;
 }
 
 /* Return true if the dynamic symbol for a given section should be
    omitted when creating a shared library.  */
-bfd_boolean
+bool
 _bfd_elf_omit_section_dynsym_default (bfd *output_bfd ATTRIBUTE_UNUSED,
 				      struct bfd_link_info *info,
 				      asection *p)
@@ -908,17 +1005,17 @@ _bfd_elf_omit_section_dynsym_default (bf
       /* There shouldn't be section relative relocations
 	 against any other section.  */
     default:
-      return TRUE;
+      return true;
     }
 }
 
-bfd_boolean
+bool
 _bfd_elf_omit_section_dynsym_all
     (bfd *output_bfd ATTRIBUTE_UNUSED,
      struct bfd_link_info *info ATTRIBUTE_UNUSED,
      asection *p ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* Assign dynsym indices.  In a shared library we generate a section
@@ -936,7 +1033,7 @@ _bfd_elf_link_renumber_dynsyms (bfd *out
 				unsigned long *section_sym_count)
 {
   unsigned long dynsymcount = 0;
-  bfd_boolean do_sec = section_sym_count != NULL;
+  bool do_sec = section_sym_count != NULL;
 
   if (bfd_link_pic (info)
       || elf_hash_table (info)->is_relocatable_executable)
@@ -989,20 +1086,20 @@ _bfd_elf_link_renumber_dynsyms (bfd *out
 
 static void
 elf_merge_st_other (bfd *abfd, struct elf_link_hash_entry *h,
-		    const Elf_Internal_Sym *isym, asection *sec,
-		    bfd_boolean definition, bfd_boolean dynamic)
+		    unsigned int st_other, asection *sec,
+		    bool definition, bool dynamic)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
 
   /* If st_other has a processor-specific meaning, specific
      code might be needed here.  */
   if (bed->elf_backend_merge_symbol_attribute)
-    (*bed->elf_backend_merge_symbol_attribute) (h, isym, definition,
+    (*bed->elf_backend_merge_symbol_attribute) (h, st_other, definition,
 						dynamic);
 
   if (!dynamic)
     {
-      unsigned symvis = ELF_ST_VISIBILITY (isym->st_other);
+      unsigned symvis = ELF_ST_VISIBILITY (st_other);
       unsigned hvis = ELF_ST_VISIBILITY (h->other);
 
       /* Keep the most constraining visibility.  Leave the remainder
@@ -1011,7 +1108,7 @@ elf_merge_st_other (bfd *abfd, struct el
 	h->other = symvis | (h->other & ~ELF_ST_VISIBILITY (-1));
     }
   else if (definition
-	   && ELF_ST_VISIBILITY (isym->st_other) != STV_DEFAULT
+	   && ELF_ST_VISIBILITY (st_other) != STV_DEFAULT
 	   && (sec->flags & SEC_READONLY) == 0)
     h->protected_def = 1;
 }
@@ -1029,7 +1126,7 @@ elf_merge_st_other (bfd *abfd, struct el
    to change.  By OK to change, we mean that we shouldn't warn if the
    type or size does change.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_merge_symbol (bfd *abfd,
 		       struct bfd_link_info *info,
 		       const char *name,
@@ -1038,13 +1135,13 @@ _bfd_elf_merge_symbol (bfd *abfd,
 		       bfd_vma *pvalue,
 		       struct elf_link_hash_entry **sym_hash,
 		       bfd **poldbfd,
-		       bfd_boolean *pold_weak,
+		       bool *pold_weak,
 		       unsigned int *pold_alignment,
-		       bfd_boolean *skip,
-		       bfd_boolean *override,
-		       bfd_boolean *type_change_ok,
-		       bfd_boolean *size_change_ok,
-		       bfd_boolean *matched)
+		       bool *skip,
+		       bfd **override,
+		       bool *type_change_ok,
+		       bool *size_change_ok,
+		       bool *matched)
 {
   asection *sec, *oldsec;
   struct elf_link_hash_entry *h;
@@ -1052,25 +1149,26 @@ _bfd_elf_merge_symbol (bfd *abfd,
   struct elf_link_hash_entry *flip;
   int bind;
   bfd *oldbfd;
-  bfd_boolean newdyn, olddyn, olddef, newdef, newdyncommon, olddyncommon;
-  bfd_boolean newweak, oldweak, newfunc, oldfunc;
+  bool newdyn, olddyn, olddef, newdef, newdyncommon, olddyncommon;
+  bool newweak, oldweak, newfunc, oldfunc;
   const struct elf_backend_data *bed;
   char *new_version;
-  bfd_boolean default_sym = *matched;
+  bool default_sym = *matched;
+  struct elf_link_hash_table *htab;
 
-  *skip = FALSE;
-  *override = FALSE;
+  *skip = false;
+  *override = NULL;
 
   sec = *psec;
   bind = ELF_ST_BIND (sym->st_info);
 
   if (! bfd_is_und_section (sec))
-    h = elf_link_hash_lookup (elf_hash_table (info), name, TRUE, FALSE, FALSE);
+    h = elf_link_hash_lookup (elf_hash_table (info), name, true, false, false);
   else
     h = ((struct elf_link_hash_entry *)
-	 bfd_wrapped_link_hash_lookup (abfd, info, name, TRUE, FALSE, FALSE));
+	 bfd_wrapped_link_hash_lookup (abfd, info, name, true, false, false));
   if (h == NULL)
-    return FALSE;
+    return false;
   *sym_hash = h;
 
   bed = get_elf_backend_data (abfd);
@@ -1109,19 +1207,19 @@ _bfd_elf_merge_symbol (bfd *abfd,
   if (!*matched)
     {
       if (hi == h || h->root.type == bfd_link_hash_new)
-	*matched = TRUE;
+	*matched = true;
       else
 	{
 	  /* OLD_HIDDEN is true if the existing symbol is only visible
 	     to the symbol with the same symbol version.  NEW_HIDDEN is
 	     true if the new symbol is only visible to the symbol with
 	     the same symbol version.  */
-	  bfd_boolean old_hidden = h->versioned == versioned_hidden;
-	  bfd_boolean new_hidden = hi->versioned == versioned_hidden;
+	  bool old_hidden = h->versioned == versioned_hidden;
+	  bool new_hidden = hi->versioned == versioned_hidden;
 	  if (!old_hidden && !new_hidden)
 	    /* The new symbol matches the existing symbol if both
 	       aren't hidden.  */
-	    *matched = TRUE;
+	    *matched = true;
 	  else
 	    {
 	      /* OLD_VERSION is the symbol version of the existing
@@ -1187,6 +1285,8 @@ _bfd_elf_merge_symbol (bfd *abfd,
      symbols.  */
   bfd_elf_link_mark_dynamic_symbol (info, h, sym);
 
+  htab = elf_hash_table (info);
+
   /* NEWDYN and OLDDYN indicate whether the new or old symbol,
      respectively, is from a dynamic object.  */
 
@@ -1225,7 +1325,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
   if (h->root.type == bfd_link_hash_new)
     {
       h->non_elf = 0;
-      return TRUE;
+      return true;
     }
 
   /* In cases involving weak versioned symbols, we may wind up trying
@@ -1238,9 +1338,9 @@ _bfd_elf_merge_symbol (bfd *abfd,
       && (newweak || oldweak)
       && ((abfd->flags & DYNAMIC) == 0
 	  || !h->def_regular))
-    return TRUE;
+    return true;
 
-  olddyn = FALSE;
+  olddyn = false;
   if (oldbfd != NULL)
     olddyn = (oldbfd->flags & DYNAMIC) != 0;
   else if (oldsec != NULL)
@@ -1250,14 +1350,26 @@ _bfd_elf_merge_symbol (bfd *abfd,
       olddyn = (oldsec->symbol->flags & BSF_DYNAMIC) != 0;
     }
 
-  /* Handle a case where plugin_notice won't be called and thus won't
-     set the non_ir_ref flags on the first pass over symbols.  */
-  if (oldbfd != NULL
-      && (oldbfd->flags & BFD_PLUGIN) != (abfd->flags & BFD_PLUGIN)
-      && newdyn != olddyn)
+  /* Set non_ir_ref_dynamic only when not handling DT_NEEDED entries.  */
+  if (!htab->handling_dt_needed
+      && oldbfd != NULL
+      && (oldbfd->flags & BFD_PLUGIN) != (abfd->flags & BFD_PLUGIN))
     {
-      h->root.non_ir_ref_dynamic = TRUE;
-      hi->root.non_ir_ref_dynamic = TRUE;
+      if (newdyn != olddyn)
+	{
+	  /* Handle a case where plugin_notice won't be called and thus
+	     won't set the non_ir_ref flags on the first pass over
+	     symbols.  */
+	  h->root.non_ir_ref_dynamic = true;
+	  hi->root.non_ir_ref_dynamic = true;
+	}
+      else if ((oldbfd->flags & BFD_PLUGIN) != 0
+	       && hi->root.type == bfd_link_hash_indirect)
+	{
+	  /* Change indirect symbol from IR to undefined.  */
+	  hi->root.type = bfd_link_hash_undefined;
+	  hi->root.u.undef.abfd = oldbfd;
+	}
     }
 
   /* NEWDEF and OLDDEF indicate whether the new or old symbol,
@@ -1293,8 +1405,8 @@ _bfd_elf_merge_symbol (bfd *abfd,
       if (newdyn
 	  && !olddyn)
 	{
-	  *skip = TRUE;
-	  return TRUE;
+	  *skip = true;
+	  return true;
 	}
 
       /* When adding a symbol from a regular object file after we have
@@ -1305,7 +1417,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	  && olddyn)
 	{
 	  h = hi;
-	  (*bed->elf_backend_hide_symbol) (info, h, TRUE);
+	  (*bed->elf_backend_hide_symbol) (info, h, true);
 	  h->forced_local = 0;
 	  h->ref_dynamic = 0;
 	  h->def_dynamic = 0;
@@ -1320,7 +1432,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	      h->root.type = bfd_link_hash_new;
 	      h->root.u.undef.abfd = NULL;
 	    }
-	  return TRUE;
+	  return true;
 	}
     }
 
@@ -1334,7 +1446,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
       && (ELF_ST_TYPE (sym->st_info) == STT_TLS || h->type == STT_TLS))
     {
       bfd *ntbfd, *tbfd;
-      bfd_boolean ntdef, tdef;
+      bool ntdef, tdef;
       asection *ntsec, *tsec;
 
       if (h->type == STT_TLS)
@@ -1382,7 +1494,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	   h->root.root.string, tbfd, ntbfd, ntsec);
 
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* If the old symbol has non-default visibility, we ignore the new
@@ -1391,7 +1503,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
       && ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
       && !bfd_is_und_section (sec))
     {
-      *skip = TRUE;
+      *skip = true;
       /* Make sure this symbol is dynamic.  */
       h->ref_dynamic = 1;
       hi->ref_dynamic = 1;
@@ -1402,7 +1514,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
       if (ELF_ST_VISIBILITY (h->other) == STV_PROTECTED)
 	return bfd_elf_link_record_dynamic_symbol (info, h);
       else
-	return TRUE;
+	return true;
     }
   else if (!newdyn
 	   && ELF_ST_VISIBILITY (sym->st_other) != STV_DEFAULT
@@ -1428,7 +1540,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 		{
 		  /* If the new symbol is hidden or internal, completely undo
 		     any dynamic link state.  */
-		  (*bed->elf_backend_hide_symbol) (info, h, TRUE);
+		  (*bed->elf_backend_hide_symbol) (info, h, true);
 		  h->forced_local = 0;
 		  h->ref_dynamic = 0;
 		}
@@ -1468,7 +1580,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	{
 	  /* If the new symbol is hidden or internal, completely undo
 	     any dynamic link state.  */
-	  (*bed->elf_backend_hide_symbol) (info, h, TRUE);
+	  (*bed->elf_backend_hide_symbol) (info, h, true);
 	  h->forced_local = 0;
 	  h->ref_dynamic = 0;
 	}
@@ -1478,7 +1590,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
       /* FIXME: Should we check type and size for protected symbol?  */
       h->size = 0;
       h->type = 0;
-      return TRUE;
+      return true;
     }
 
   /* If a new weak symbol definition comes from a regular file and the
@@ -1498,13 +1610,13 @@ _bfd_elf_merge_symbol (bfd *abfd,
      we warn properly when dynamic library symbols are overridden.  */
 
   if (newdef && !newdyn && (olddyn || h->root.ldscript_def))
-    newweak = FALSE;
+    newweak = false;
   if (olddef && newdyn)
-    oldweak = FALSE;
+    oldweak = false;
 
   /* Allow changes between different types of function symbol.  */
   if (newfunc && oldfunc)
-    *type_change_ok = TRUE;
+    *type_change_ok = true;
 
   /* It's OK to change the type if either the existing symbol or the
      new symbol is weak.  A type change is also OK if the old symbol
@@ -1514,14 +1626,14 @@ _bfd_elf_merge_symbol (bfd *abfd,
       || newweak
       || (newdef
 	  && h->root.type == bfd_link_hash_undefined))
-    *type_change_ok = TRUE;
+    *type_change_ok = true;
 
   /* It's OK to change the size if either the existing symbol or the
      new symbol is weak, or if the old symbol is undefined.  */
 
   if (*type_change_ok
       || h->root.type == bfd_link_hash_undefined)
-    *size_change_ok = TRUE;
+    *size_change_ok = true;
 
   /* NEWDYNCOMMON and OLDDYNCOMMON indicate whether the new or old
      symbol, respectively, appears to be a common symbol in a dynamic
@@ -1553,9 +1665,9 @@ _bfd_elf_merge_symbol (bfd *abfd,
       && (sec->flags & SEC_LOAD) == 0
       && sym->st_size > 0
       && !newfunc)
-    newdyncommon = TRUE;
+    newdyncommon = true;
   else
-    newdyncommon = FALSE;
+    newdyncommon = false;
 
   if (olddyn
       && olddef
@@ -1565,16 +1677,16 @@ _bfd_elf_merge_symbol (bfd *abfd,
       && (h->root.u.def.section->flags & SEC_LOAD) == 0
       && h->size > 0
       && !oldfunc)
-    olddyncommon = TRUE;
+    olddyncommon = true;
   else
-    olddyncommon = FALSE;
+    olddyncommon = false;
 
   /* We now know everything about the old and new symbols.  We ask the
      backend to check if we can merge them.  */
   if (bed->merge_symbol != NULL)
     {
       if (!bed->merge_symbol (h, sym, psec, newdef, olddef, oldbfd, oldsec))
-	return FALSE;
+	return false;
       sec = *psec;
     }
 
@@ -1589,8 +1701,8 @@ _bfd_elf_merge_symbol (bfd *abfd,
       /* Handle a multiple definition.  */
       (*info->callbacks->multiple_definition) (info, &h->root,
 					       abfd, sec, *pvalue);
-      *skip = TRUE;
-      return TRUE;
+      *skip = true;
+      return true;
     }
 
   /* If both the old and the new symbols look like common symbols in a
@@ -1612,7 +1724,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
       if (sym->st_size > h->size)
 	h->size = sym->st_size;
 
-      *size_change_ok = TRUE;
+      *size_change_ok = true;
     }
 
   /* If we are looking at a dynamic object, and we have found a
@@ -1635,12 +1747,12 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	  || (h->root.type == bfd_link_hash_common
 	      && (newweak || newfunc))))
     {
-      *override = TRUE;
-      newdef = FALSE;
-      newdyncommon = FALSE;
+      *override = abfd;
+      newdef = false;
+      newdyncommon = false;
 
       *psec = sec = bfd_und_section_ptr;
-      *size_change_ok = TRUE;
+      *size_change_ok = true;
 
       /* If we get here when the old symbol is a common symbol, then
 	 we are explicitly letting it override a weak symbol or
@@ -1649,7 +1761,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	 change warning may still be appropriate.  */
 
       if (h->root.type == bfd_link_hash_common)
-	*type_change_ok = TRUE;
+	*type_change_ok = true;
     }
 
   /* Handle the special case of an old common symbol merging with a
@@ -1661,12 +1773,12 @@ _bfd_elf_merge_symbol (bfd *abfd,
   if (newdyncommon
       && h->root.type == bfd_link_hash_common)
     {
-      *override = TRUE;
-      newdef = FALSE;
-      newdyncommon = FALSE;
+      *override = oldbfd;
+      newdef = false;
+      newdyncommon = false;
       *pvalue = sym->st_size;
       *psec = sec = bed->common_section (oldsec);
-      *size_change_ok = TRUE;
+      *size_change_ok = true;
     }
 
   /* Skip weak definitions of symbols that are already defined.  */
@@ -1677,20 +1789,20 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	    && (oldbfd->flags & BFD_PLUGIN) != 0
 	    && (abfd->flags & BFD_PLUGIN) == 0))
 	{
-	  newdef = FALSE;
-	  *skip = TRUE;
+	  newdef = false;
+	  *skip = true;
 	}
 
       /* Merge st_other.  If the symbol already has a dynamic index,
 	 but visibility says it should not be visible, turn it into a
 	 local symbol.  */
-      elf_merge_st_other (abfd, h, sym, sec, newdef, newdyn);
+      elf_merge_st_other (abfd, h, sym->st_other, sec, newdef, newdyn);
       if (h->dynindx != -1)
 	switch (ELF_ST_VISIBILITY (h->other))
 	  {
 	  case STV_INTERNAL:
 	  case STV_HIDDEN:
-	    (*bed->elf_backend_hide_symbol) (info, h, TRUE);
+	    (*bed->elf_backend_hide_symbol) (info, h, true);
 	    break;
 	  }
     }
@@ -1720,10 +1832,10 @@ _bfd_elf_merge_symbol (bfd *abfd,
 
       h->root.type = bfd_link_hash_undefined;
       h->root.u.undef.abfd = h->root.u.def.section->owner;
-      *size_change_ok = TRUE;
+      *size_change_ok = true;
 
-      olddef = FALSE;
-      olddyncommon = FALSE;
+      olddef = false;
+      olddyncommon = false;
 
       /* We again permit a type change when a common symbol may be
 	 overriding a function.  */
@@ -1738,7 +1850,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	      h->def_dynamic = 0;
 	      h->type = STT_NOTYPE;
 	    }
-	  *type_change_ok = TRUE;
+	  *type_change_ok = true;
 	}
 
       if (hi->root.type == bfd_link_hash_indirect)
@@ -1777,14 +1889,14 @@ _bfd_elf_merge_symbol (bfd *abfd,
       BFD_ASSERT (pold_alignment);
       *pold_alignment = h->root.u.def.section->alignment_power;
 
-      olddef = FALSE;
-      olddyncommon = FALSE;
+      olddef = false;
+      olddyncommon = false;
 
       h->root.type = bfd_link_hash_undefined;
       h->root.u.undef.abfd = h->root.u.def.section->owner;
 
-      *size_change_ok = TRUE;
-      *type_change_ok = TRUE;
+      *size_change_ok = true;
+      *type_change_ok = true;
 
       if (hi->root.type == bfd_link_hash_indirect)
 	flip = hi;
@@ -1809,7 +1921,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function is called to create an indirect symbol from the
@@ -1817,7 +1929,7 @@ _bfd_elf_merge_symbol (bfd *abfd,
    symbol is described by H, NAME, SYM, SEC, and VALUE.  We
    set DYNSYM if the new indirect symbol is dynamic.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_add_default_symbol (bfd *abfd,
 			     struct bfd_link_info *info,
 			     struct elf_link_hash_entry *h,
@@ -1826,25 +1938,25 @@ _bfd_elf_add_default_symbol (bfd *abfd,
 			     asection *sec,
 			     bfd_vma value,
 			     bfd **poldbfd,
-			     bfd_boolean *dynsym)
+			     bool *dynsym)
 {
-  bfd_boolean type_change_ok;
-  bfd_boolean size_change_ok;
-  bfd_boolean skip;
+  bool type_change_ok;
+  bool size_change_ok;
+  bool skip;
   char *shortname;
   struct elf_link_hash_entry *hi;
   struct bfd_link_hash_entry *bh;
   const struct elf_backend_data *bed;
-  bfd_boolean collect;
-  bfd_boolean dynamic;
-  bfd_boolean override;
+  bool collect;
+  bool dynamic;
+  bfd *override;
   char *p;
   size_t len, shortlen;
   asection *tmp_sec;
-  bfd_boolean matched;
+  bool matched;
 
   if (h->versioned == unversioned || h->versioned == versioned_hidden)
-    return TRUE;
+    return true;
 
   /* If this symbol has a version, and it is the default version, we
      create an indirect symbol from the default name to the fully
@@ -1856,14 +1968,14 @@ _bfd_elf_add_default_symbol (bfd *abfd,
       if (p == NULL)
 	{
 	  h->versioned = unversioned;
-	  return TRUE;
+	  return true;
 	}
       else
 	{
 	  if (p[1] != ELF_VER_CHR)
 	    {
 	      h->versioned = versioned_hidden;
-	      return TRUE;
+	      return true;
 	    }
 	  else
 	    h->versioned = versioned;
@@ -1874,7 +1986,7 @@ _bfd_elf_add_default_symbol (bfd *abfd,
       /* PR ld/19073: We may see an unversioned definition after the
 	 default version.  */
       if (p == NULL)
-	return TRUE;
+	return true;
     }
 
   bed = get_elf_backend_data (abfd);
@@ -1884,7 +1996,7 @@ _bfd_elf_add_default_symbol (bfd *abfd,
   shortlen = p - name;
   shortname = (char *) bfd_hash_allocate (&info->hash->table, shortlen + 1);
   if (shortname == NULL)
-    return FALSE;
+    return false;
   memcpy (shortname, name, shortlen);
   shortname[shortlen] = '\0';
 
@@ -1892,14 +2004,14 @@ _bfd_elf_add_default_symbol (bfd *abfd,
      symbol with this name.  For the purposes of the merge, act as
      though we were defining the symbol we just defined, although we
      actually going to define an indirect symbol.  */
-  type_change_ok = FALSE;
-  size_change_ok = FALSE;
-  matched = TRUE;
+  type_change_ok = false;
+  size_change_ok = false;
+  matched = true;
   tmp_sec = sec;
   if (!_bfd_elf_merge_symbol (abfd, info, shortname, sym, &tmp_sec, &value,
 			      &hi, poldbfd, NULL, NULL, &skip, &override,
 			      &type_change_ok, &size_change_ok, &matched))
-    return FALSE;
+    return false;
 
   if (skip)
     goto nondefault;
@@ -1913,14 +2025,14 @@ _bfd_elf_add_default_symbol (bfd *abfd,
 	 command line rather than via --version-script.  */
       if (hi->verinfo.vertree == NULL && info->version_info != NULL)
 	{
-	  bfd_boolean hide;
+	  bool hide;
 
 	  hi->verinfo.vertree
 	    = bfd_find_version_for_sym (info->version_info,
 					hi->root.root.string, &hide);
 	  if (hi->verinfo.vertree != NULL && hide)
 	    {
-	      (*bed->elf_backend_hide_symbol) (info, hi, TRUE);
+	      (*bed->elf_backend_hide_symbol) (info, hi, true);
 	      goto nondefault;
 	    }
 	}
@@ -1948,8 +2060,8 @@ _bfd_elf_add_default_symbol (bfd *abfd,
 	  if (! (_bfd_generic_link_add_one_symbol
 		 (info, abfd, shortname, BSF_INDIRECT,
 		  bfd_ind_section_ptr,
-		  0, name, FALSE, collect, &bh)))
-	    return FALSE;
+		  0, name, false, collect, &bh)))
+	    return false;
 	  hi = (struct elf_link_hash_entry *) bh;
 	}
     }
@@ -1987,7 +2099,7 @@ _bfd_elf_add_default_symbol (bfd *abfd,
 	      || hi->def_regular)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, hi))
-		return FALSE;
+		return false;
 	    }
 	}
 
@@ -2011,6 +2123,10 @@ _bfd_elf_add_default_symbol (bfd *abfd,
       ht = (struct elf_link_hash_entry *) hi->root.u.i.link;
       (*bed->elf_backend_copy_indirect_symbol) (info, ht, hi);
 
+      /* If we first saw a reference to SHORTNAME with non-default
+	 visibility, merge that visibility to the @@VER symbol.  */
+      elf_merge_st_other (abfd, ht, hi->other, sec, true, dynamic);
+
       /* A reference to the SHORTNAME symbol from a dynamic library
 	 will be satisfied by the versioned symbol at runtime.  In
 	 effect, we have a reference to the versioned symbol.  */
@@ -2026,12 +2142,12 @@ _bfd_elf_add_default_symbol (bfd *abfd,
 	      if (! bfd_link_executable (info)
 		  || hi->def_dynamic
 		  || hi->ref_dynamic)
-		*dynsym = TRUE;
+		*dynsym = true;
 	    }
 	  else
 	    {
 	      if (hi->ref_regular)
-		*dynsym = TRUE;
+		*dynsym = true;
 	    }
 	}
     }
@@ -2039,27 +2155,44 @@ _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)
-    return FALSE;
+    return false;
   memcpy (shortname, name, shortlen);
   memcpy (shortname + shortlen, p + 1, len - shortlen);
 
   /* Once again, merge with any existing symbol.  */
-  type_change_ok = FALSE;
-  size_change_ok = FALSE;
+  type_change_ok = false;
+  size_change_ok = false;
   tmp_sec = sec;
   if (!_bfd_elf_merge_symbol (abfd, info, shortname, sym, &tmp_sec, &value,
 			      &hi, poldbfd, NULL, NULL, &skip, &override,
 			      &type_change_ok, &size_change_ok, &matched))
-    return FALSE;
+    return false;
 
   if (skip)
-    return TRUE;
-
-  if (override)
+    {
+      if (!dynamic
+	  && h->root.type == bfd_link_hash_defweak
+	  && hi->root.type == bfd_link_hash_defined)
+	{
+	  /* We are handling a weak sym@@ver and attempting to define
+	     a weak sym@ver, but _bfd_elf_merge_symbol said to skip the
+	     new weak sym@ver because there is already a strong sym@ver.
+	     However, sym@ver and sym@@ver are really the same symbol.
+	     The existing strong sym@ver ought to override sym@@ver.  */
+	  h->root.type = bfd_link_hash_defined;
+	  h->root.u.def.section = hi->root.u.def.section;
+	  h->root.u.def.value = hi->root.u.def.value;
+	  hi->root.type = bfd_link_hash_indirect;
+	  hi->root.u.i.link = &h->root;
+	}
+      else
+	return true;
+    }
+  else if (override)
     {
       /* Here SHORTNAME is a versioned name, so we don't expect to see
 	 the type of override we do in the case above unless it is
@@ -2070,63 +2203,68 @@ nondefault:
 	  /* xgettext:c-format */
 	  (_("%pB: unexpected redefinition of indirect versioned symbol `%s'"),
 	   abfd, shortname);
+      return true;
     }
   else
     {
       bh = &hi->root;
       if (! (_bfd_generic_link_add_one_symbol
 	     (info, abfd, shortname, BSF_INDIRECT,
-	      bfd_ind_section_ptr, 0, name, FALSE, collect, &bh)))
-	return FALSE;
+	      bfd_ind_section_ptr, 0, name, false, collect, &bh)))
+	return false;
       hi = (struct elf_link_hash_entry *) bh;
+    }
 
-      /* If there is a duplicate definition somewhere, then HI may not
-	 point to an indirect symbol.  We will have reported an error
-	 to the user in that case.  */
+  /* If there is a duplicate definition somewhere, then HI may not
+     point to an indirect symbol.  We will have reported an error
+     to the user in that case.  */
+  if (hi->root.type == bfd_link_hash_indirect)
+    {
+      (*bed->elf_backend_copy_indirect_symbol) (info, h, hi);
+      h->ref_dynamic_nonweak |= hi->ref_dynamic_nonweak;
+      hi->dynamic_def |= h->dynamic_def;
+
+      /* If we first saw a reference to @VER symbol with
+	 non-default visibility, merge that visibility to the
+	 @@VER symbol.  */
+      elf_merge_st_other (abfd, h, hi->other, sec, true, dynamic);
 
-      if (hi->root.type == bfd_link_hash_indirect)
+      /* See if the new flags lead us to realize that the symbol
+	 must be dynamic.  */
+      if (! *dynsym)
 	{
-	  (*bed->elf_backend_copy_indirect_symbol) (info, h, hi);
-	  h->ref_dynamic_nonweak |= hi->ref_dynamic_nonweak;
-	  hi->dynamic_def |= h->dynamic_def;
-
-	  /* See if the new flags lead us to realize that the symbol
-	     must be dynamic.  */
-	  if (! *dynsym)
-	    {
-	      if (! dynamic)
-		{
-		  if (! bfd_link_executable (info)
-		      || hi->ref_dynamic)
-		    *dynsym = TRUE;
-		}
-	      else
-		{
-		  if (hi->ref_regular)
-		    *dynsym = TRUE;
-		}
+	  if (! dynamic)
+	    {
+	      if (! bfd_link_executable (info)
+		  || hi->ref_dynamic)
+		*dynsym = true;
+	    }
+	  else
+	    {
+	      if (hi->ref_regular)
+		*dynsym = true;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This routine is used to export all defined symbols into the dynamic
    symbol table.  It is called via elf_link_hash_traverse.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_export_symbol (struct elf_link_hash_entry *h, void *data)
 {
   struct elf_info_failed *eif = (struct elf_info_failed *) data;
 
   /* Ignore indirect symbols.  These are added by the versioning code.  */
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   /* Ignore this if we won't export it.  */
   if (!eif->info->export_dynamic && !h->dynamic)
-    return TRUE;
+    return true;
 
   if (h->dynindx == -1
       && (h->def_regular || h->ref_regular)
@@ -2135,27 +2273,184 @@ _bfd_elf_export_symbol (struct elf_link_
     {
       if (! bfd_elf_link_record_dynamic_symbol (eif->info, h))
 	{
-	  eif->failed = TRUE;
-	  return FALSE;
+	  eif->failed = true;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
+/* Return true if linked against glibc.  Otherwise return false.  If
+   linked against glibc, add VERSION_DEP to the list of glibc version
+   dependencies and set *AUTO_VERSION to true.  If *AUTO_VERSION is
+   true, add VERSION_DEP to the version dependency list only if libc.so
+   defines VERSION_DEP.  GLIBC_MINOR_BASE is the pointer to the glibc
+   minor base version.  */
+
+static bool
+elf_link_add_glibc_verneed (struct elf_find_verdep_info *rinfo,
+			    const char *version_dep,
+			    int *glibc_minor_base,
+			    bool *auto_version)
+{
+  Elf_Internal_Verneed *t;
+  Elf_Internal_Vernaux *a;
+  size_t amt;
+  int minor_version = -1;
+  bool added = false;
+  bool glibc = false;
+
+  for (t = elf_tdata (rinfo->info->output_bfd)->verref;
+       t != NULL;
+       t = t->vn_nextref)
+    {
+      const char *soname = bfd_elf_get_dt_soname (t->vn_bfd);
+      if (soname != NULL && startswith (soname, "libc.so."))
+	break;
+    }
+
+  /* Skip the shared library if it isn't libc.so.  */
+  if (t == NULL)
+    goto update_auto_version_and_return;
+
+  for (a = t->vn_auxptr; a != NULL; a = a->vna_nextptr)
+    {
+      /* Return if VERSION_DEP dependency has been added.  */
+      if (a->vna_nodename == version_dep
+	  || strcmp (a->vna_nodename, version_dep) == 0)
+	{
+	  glibc = true;
+	  goto update_auto_version_and_return;
+	}
+
+      /* Check if libc.so provides GLIBC_2.XX version.  */
+      if (startswith (a->vna_nodename, "GLIBC_2."))
+	{
+	  minor_version = strtol (a->vna_nodename + 8, NULL, 10);
+	  if (minor_version < *glibc_minor_base)
+	    *glibc_minor_base = minor_version;
+	}
+    }
+
+  /* Skip if it isn't linked against glibc.  */
+  if (minor_version < 0)
+    goto update_auto_version_and_return;
+
+  glibc = true;
+
+  if (auto_version && *auto_version)
+    {
+      /* Add VERSION_DEP to the version dependency list only if
+	 libc.so defines VERSION_DEP.  */
+
+      bool defined = false;
+      Elf_Internal_Verdef *d;
+
+      for (d = elf_tdata (t->vn_bfd)->verdef;
+	   d != NULL;
+	   d = d->vd_nextdef)
+	if (strcmp (d->vd_nodename, version_dep) == 0)
+	  {
+	    defined = true;
+	    break;
+	  }
+
+      /* Set *AUTO_VERSION to false and return true to indicate that
+	 libc.so doesn't define VERSION_DEP.  */
+      if (!defined)
+	goto update_auto_version_and_return;
+    }
+
+  /* Skip if 2.GLIBC_MINOR_BASE includes VERSION_DEP.  */
+  if (startswith (version_dep, "GLIBC_2."))
+    {
+      minor_version = strtol (version_dep + 8, NULL, 10);
+      if (minor_version <= *glibc_minor_base)
+	goto update_auto_version_and_return;
+    }
+
+  amt = sizeof *a;
+  a = (Elf_Internal_Vernaux *) bfd_zalloc (rinfo->info->output_bfd, amt);
+  if (a == NULL)
+    {
+      rinfo->failed = true;
+      glibc = false;
+      goto update_auto_version_and_return;
+    }
+
+  a->vna_nodename = version_dep;
+  a->vna_flags = 0;
+  a->vna_nextptr = t->vn_auxptr;
+  a->vna_other = rinfo->vers + 1;
+  ++rinfo->vers;
+
+  t->vn_auxptr = a;
+
+  added = true;
+
+ update_auto_version_and_return:
+  if (auto_version)
+    *auto_version = added;
+
+  return glibc;
+}
+
+/* Add VERSION_DEP to the list of version dependencies when linked
+   against glibc.  */
+
+bool
+_bfd_elf_link_add_glibc_version_dependency
+  (struct elf_find_verdep_info *rinfo,
+   const char *const version_dep[],
+   bool *auto_version)
+{
+  int glibc_minor_base = INT_MAX;
+
+  do
+    {
+      /* Return if not linked against glibc.  */
+      if (!elf_link_add_glibc_verneed (rinfo, *version_dep,
+				       &glibc_minor_base, auto_version))
+	return false;
+      version_dep++;
+      auto_version++;
+    }
+  while (*version_dep != NULL);
+
+  return true;
+}
+
+/* Add GLIBC_ABI_DT_RELR to the list of version dependencies when
+   linked against glibc.  */
+
+void
+_bfd_elf_link_add_dt_relr_dependency (struct elf_find_verdep_info *rinfo)
+{
+  if (rinfo->info->enable_dt_relr)
+    {
+      static const char *const version[] =
+	{
+	  "GLIBC_ABI_DT_RELR",
+	  NULL
+	};
+      _bfd_elf_link_add_glibc_version_dependency (rinfo, version, NULL);
+    }
+}
+
 /* Look through the symbols which are defined in other shared
    libraries and referenced here.  Update the list of version
    dependencies.  This will be put into the .gnu.version_r section.
    This function is called via elf_link_hash_traverse.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_link_find_version_dependencies (struct elf_link_hash_entry *h,
 					 void *data)
 {
   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.  */
@@ -2165,7 +2460,7 @@ _bfd_elf_link_find_version_dependencies
       || h->verinfo.verdef == NULL
       || (elf_dyn_lib_class (h->verinfo.verdef->vd_bfd)
 	  & (DYN_AS_NEEDED | DYN_DT_NEEDED | DYN_NO_NEEDED)))
-    return TRUE;
+    return true;
 
   /* See if we already know about this version.  */
   for (t = elf_tdata (rinfo->info->output_bfd)->verref;
@@ -2177,7 +2472,7 @@ _bfd_elf_link_find_version_dependencies
 
       for (a = t->vn_auxptr; a != NULL; a = a->vna_nextptr)
 	if (a->vna_nodename == h->verinfo.verdef->vd_nodename)
-	  return TRUE;
+	  return true;
 
       break;
     }
@@ -2190,8 +2485,8 @@ _bfd_elf_link_find_version_dependencies
       t = (Elf_Internal_Verneed *) bfd_zalloc (rinfo->info->output_bfd, amt);
       if (t == NULL)
 	{
-	  rinfo->failed = TRUE;
-	  return FALSE;
+	  rinfo->failed = true;
+	  return false;
 	}
 
       t->vn_bfd = h->verinfo.verdef->vd_bfd;
@@ -2203,8 +2498,8 @@ _bfd_elf_link_find_version_dependencies
   a = (Elf_Internal_Vernaux *) bfd_zalloc (rinfo->info->output_bfd, amt);
   if (a == NULL)
     {
-      rinfo->failed = TRUE;
-      return FALSE;
+      rinfo->failed = true;
+      return false;
     }
 
   /* Note that we are copying a string pointer here, and testing it
@@ -2223,18 +2518,18 @@ _bfd_elf_link_find_version_dependencies
 
   t->vn_auxptr = a;
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE and set *HIDE to TRUE if the versioned symbol is
    hidden.  Set *T_P to NULL if there is no match.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_link_hide_versioned_symbol (struct bfd_link_info *info,
 				     struct elf_link_hash_entry *h,
 				     const char *version_p,
 				     struct bfd_elf_version_tree **t_p,
-				     bfd_boolean *hide)
+				     bool *hide)
 {
   struct bfd_elf_version_tree *t;
 
@@ -2250,14 +2545,14 @@ _bfd_elf_link_hide_versioned_symbol (str
 	  len = version_p - h->root.root.string;
 	  alc = (char *) bfd_malloc (len);
 	  if (alc == NULL)
-	    return FALSE;
+	    return false;
 	  memcpy (alc, h->root.root.string, len - 1);
 	  alc[len - 1] = '\0';
 	  if (alc[len - 2] == ELF_VER_CHR)
 	    alc[len - 2] = '\0';
 
 	  h->verinfo.vertree = t;
-	  t->used = TRUE;
+	  t->used = true;
 	  d = NULL;
 
 	  if (t->globals.list != NULL)
@@ -2271,7 +2566,7 @@ _bfd_elf_link_hide_versioned_symbol (str
 	      if (d != NULL
 		  && h->dynindx != -1
 		  && ! info->export_dynamic)
-		*hide = TRUE;
+		*hide = true;
 	    }
 
 	  free (alc);
@@ -2281,23 +2576,23 @@ _bfd_elf_link_hide_versioned_symbol (str
 
   *t_p = t;
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if the symbol H is hidden by version script.  */
 
-bfd_boolean
+bool
 _bfd_elf_link_hide_sym_by_version (struct bfd_link_info *info,
 				   struct elf_link_hash_entry *h)
 {
   const char *p;
-  bfd_boolean hide = FALSE;
+  bool hide = false;
   const struct elf_backend_data *bed
     = get_elf_backend_data (info->output_bfd);
 
   /* Version script only hides symbols defined in regular objects.  */
   if (!h->def_regular && !ELF_COMMON_DEF_P (h))
-    return TRUE;
+    return true;
 
   p = strchr (h->root.root.string, ELF_VER_CHR);
   if (p != NULL && h->verinfo.vertree == NULL)
@@ -2313,8 +2608,8 @@ _bfd_elf_link_hide_sym_by_version (struc
 	  && hide)
 	{
 	  if (hide)
-	    (*bed->elf_backend_hide_symbol) (info, h, TRUE);
-	  return TRUE;
+	    (*bed->elf_backend_hide_symbol) (info, h, true);
+	  return true;
 	}
     }
 
@@ -2327,12 +2622,12 @@ _bfd_elf_link_hide_sym_by_version (struc
 				    h->root.root.string, &hide);
       if (h->verinfo.vertree != NULL && hide)
 	{
-	  (*bed->elf_backend_hide_symbol) (info, h, TRUE);
-	  return TRUE;
+	  (*bed->elf_backend_hide_symbol) (info, h, true);
+	  return true;
 	}
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Figure out appropriate versions for all the symbols.  We may not
@@ -2340,7 +2635,7 @@ _bfd_elf_link_hide_sym_by_version (struc
    files, so until that point we don't know which symbols should be
    local.  This function is called via elf_link_hash_traverse.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_link_assign_sym_version (struct elf_link_hash_entry *h, void *data)
 {
   struct elf_info_failed *sinfo;
@@ -2348,19 +2643,19 @@ _bfd_elf_link_assign_sym_version (struct
   const struct elf_backend_data *bed;
   struct elf_info_failed eif;
   char *p;
-  bfd_boolean hide;
+  bool hide;
 
   sinfo = (struct elf_info_failed *) data;
   info = sinfo->info;
 
   /* Fix the symbol flags.  */
-  eif.failed = FALSE;
+  eif.failed = false;
   eif.info = info;
   if (! _bfd_elf_fix_symbol_flags (h, &eif))
     {
       if (eif.failed)
-	sinfo->failed = TRUE;
-      return FALSE;
+	sinfo->failed = true;
+      return false;
     }
 
   bed = get_elf_backend_data (info->output_bfd);
@@ -2373,11 +2668,11 @@ _bfd_elf_link_assign_sym_version (struct
       if ((h->root.type == bfd_link_hash_defined
 	   || h->root.type == bfd_link_hash_defweak)
 	  && discarded_section (h->root.u.def.section))
-	(*bed->elf_backend_hide_symbol) (info, h, TRUE);
-      return TRUE;
+	(*bed->elf_backend_hide_symbol) (info, h, true);
+      return true;
     }
 
-  hide = FALSE;
+  hide = false;
   p = strchr (h->root.root.string, ELF_VER_CHR);
   if (p != NULL && h->verinfo.vertree == NULL)
     {
@@ -2389,16 +2684,16 @@ _bfd_elf_link_assign_sym_version (struct
 
       /* If there is no version string, we can just return out.  */
       if (*p == '\0')
-	return TRUE;
+	return true;
 
       if (!_bfd_elf_link_hide_versioned_symbol (info, h, p, &t, &hide))
 	{
-	  sinfo->failed = TRUE;
-	  return FALSE;
+	  sinfo->failed = true;
+	  return false;
 	}
 
       if (hide)
-	(*bed->elf_backend_hide_symbol) (info, h, TRUE);
+	(*bed->elf_backend_hide_symbol) (info, h, true);
 
       /* If we are building an application, we need to create a
 	 version node for this version.  */
@@ -2410,19 +2705,19 @@ _bfd_elf_link_assign_sym_version (struct
 	  /* If we aren't going to export this symbol, we don't need
 	     to worry about it.  */
 	  if (h->dynindx == -1)
-	    return TRUE;
+	    return true;
 
 	  t = (struct bfd_elf_version_tree *) bfd_zalloc (info->output_bfd,
 							  sizeof *t);
 	  if (t == NULL)
 	    {
-	      sinfo->failed = TRUE;
-	      return FALSE;
+	      sinfo->failed = true;
+	      return false;
 	    }
 
 	  t->name = p;
 	  t->name_indx = (unsigned int) -1;
-	  t->used = TRUE;
+	  t->used = true;
 
 	  version_index = 1;
 	  /* Don't count anonymous version tag.  */
@@ -2448,8 +2743,8 @@ _bfd_elf_link_assign_sym_version (struct
 	    (_("%pB: version node not found for symbol %s"),
 	     info->output_bfd, h->root.root.string);
 	  bfd_set_error (bfd_error_bad_value);
-	  sinfo->failed = TRUE;
-	  return FALSE;
+	  sinfo->failed = true;
+	  return false;
 	}
     }
 
@@ -2463,26 +2758,30 @@ _bfd_elf_link_assign_sym_version (struct
 	= bfd_find_version_for_sym (sinfo->info->version_info,
 				    h->root.root.string, &hide);
       if (h->verinfo.vertree != NULL && hide)
-	(*bed->elf_backend_hide_symbol) (info, h, TRUE);
+	(*bed->elf_backend_hide_symbol) (info, h, true);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read and swap the relocs from the section indicated by SHDR.  This
    may be either a REL or a RELA section.  The relocations are
    translated into RELA relocations and stored in INTERNAL_RELOCS,
    which should have already been allocated to contain enough space.
-   The EXTERNAL_RELOCS are a buffer where the external form of the
-   relocations should be stored.
+   The *EXTERNAL_RELOCS_P are a buffer where the external form of the
+   relocations should be stored.  If *EXTERNAL_RELOCS_ADDR is NULL,
+   *EXTERNAL_RELOCS_ADDR and *EXTERNAL_RELOCS_SIZE returns the mmap
+   memory address and size.  Otherwise, *EXTERNAL_RELOCS_ADDR is
+   unchanged and *EXTERNAL_RELOCS_SIZE returns 0.
 
    Returns FALSE if something goes wrong.  */
 
-static bfd_boolean
+static bool
 elf_link_read_relocs_from_section (bfd *abfd,
-				   asection *sec,
+				   const asection *sec,
 				   Elf_Internal_Shdr *shdr,
-				   void *external_relocs,
+				   void **external_relocs_addr,
+				   size_t *external_relocs_size,
 				   Elf_Internal_Rela *internal_relocs)
 {
   const struct elf_backend_data *bed;
@@ -2492,14 +2791,18 @@ elf_link_read_relocs_from_section (bfd *
   Elf_Internal_Rela *irela;
   Elf_Internal_Shdr *symtab_hdr;
   size_t nsyms;
+  void *external_relocs = *external_relocs_addr;
 
   /* Position ourselves at the start of the section.  */
   if (bfd_seek (abfd, shdr->sh_offset, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   /* Read the relocations.  */
-  if (bfd_bread (external_relocs, shdr->sh_size, abfd) != shdr->sh_size)
-    return FALSE;
+  *external_relocs_size = shdr->sh_size;
+  if (!_bfd_mmap_read_temporary (&external_relocs,
+				 external_relocs_size,
+				 external_relocs_addr, abfd, true))
+    return false;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   nsyms = NUM_SHDR_ENTRIES (symtab_hdr);
@@ -2514,7 +2817,7 @@ elf_link_read_relocs_from_section (bfd *
   else
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   erela = (const bfd_byte *) external_relocs;
@@ -2541,7 +2844,7 @@ elf_link_read_relocs_from_section (bfd *
 		 abfd, (uint64_t) r_symndx, (unsigned long) nsyms,
 		 (uint64_t) irela->r_offset, sec);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
       else if (r_symndx != STN_UNDEF)
@@ -2554,13 +2857,13 @@ elf_link_read_relocs_from_section (bfd *
 	     abfd, (uint64_t) r_symndx,
 	     (uint64_t) irela->r_offset, sec);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       irela += bed->s->int_rels_per_ext_rel;
       erela += shdr->sh_entsize;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read and swap the relocs for a section O.  They may have been
@@ -2571,16 +2874,19 @@ elf_link_read_relocs_from_section (bfd *
    according to the KEEP_MEMORY argument.  If O has two relocation
    sections (both REL and RELA relocations), then the REL_HDR
    relocations will appear first in INTERNAL_RELOCS, followed by the
-   RELA_HDR relocations.  */
+   RELA_HDR relocations.  If INFO isn't NULL and KEEP_MEMORY is true,
+   update cache_size.  */
 
 Elf_Internal_Rela *
-_bfd_elf_link_read_relocs (bfd *abfd,
-			   asection *o,
-			   void *external_relocs,
-			   Elf_Internal_Rela *internal_relocs,
-			   bfd_boolean keep_memory)
+_bfd_elf_link_info_read_relocs (bfd *abfd,
+				struct bfd_link_info *info,
+				const asection *o,
+				void *external_relocs,
+				Elf_Internal_Rela *internal_relocs,
+				bool keep_memory)
 {
   void *alloc1 = NULL;
+  size_t alloc1_size;
   Elf_Internal_Rela *alloc2 = NULL;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
   struct bfd_elf_section_data *esdo = elf_section_data (o);
@@ -2597,34 +2903,19 @@ _bfd_elf_link_read_relocs (bfd *abfd,
       bfd_size_type size;
 
       size = (bfd_size_type) o->reloc_count * sizeof (Elf_Internal_Rela);
-      if (keep_memory)
-	internal_relocs = alloc2 = (Elf_Internal_Rela *) bfd_alloc (abfd, size);
-      else
-	internal_relocs = alloc2 = (Elf_Internal_Rela *) bfd_malloc (size);
+      if (keep_memory && info)
+	info->cache_size += size;
+      internal_relocs = alloc2 = (Elf_Internal_Rela *) bfd_malloc (size);
       if (internal_relocs == NULL)
-	goto error_return;
-    }
-
-  if (external_relocs == NULL)
-    {
-      bfd_size_type size = 0;
-
-      if (esdo->rel.hdr)
-	size += esdo->rel.hdr->sh_size;
-      if (esdo->rela.hdr)
-	size += esdo->rela.hdr->sh_size;
-
-      alloc1 = bfd_malloc (size);
-      if (alloc1 == NULL)
-	goto error_return;
-      external_relocs = alloc1;
+	return NULL;
     }
 
+  alloc1 = external_relocs;
   internal_rela_relocs = internal_relocs;
   if (esdo->rel.hdr)
     {
       if (!elf_link_read_relocs_from_section (abfd, o, esdo->rel.hdr,
-					      external_relocs,
+					      &alloc1, &alloc1_size,
 					      internal_relocs))
 	goto error_return;
       external_relocs = (((bfd_byte *) external_relocs)
@@ -2635,7 +2926,7 @@ _bfd_elf_link_read_relocs (bfd *abfd,
 
   if (esdo->rela.hdr
       && (!elf_link_read_relocs_from_section (abfd, o, esdo->rela.hdr,
-					      external_relocs,
+					      &alloc1, &alloc1_size,
 					      internal_rela_relocs)))
     goto error_return;
 
@@ -2643,8 +2934,7 @@ _bfd_elf_link_read_relocs (bfd *abfd,
   if (keep_memory)
     esdo->relocs = internal_relocs;
 
-  if (alloc1 != NULL)
-    free (alloc1);
+  _bfd_munmap_temporary (alloc1, alloc1_size);
 
   /* Don't free alloc2, since if it was allocated we are passing it
      back (under the name of internal_relocs).  */
@@ -2652,22 +2942,31 @@ _bfd_elf_link_read_relocs (bfd *abfd,
   return internal_relocs;
 
  error_return:
-  if (alloc1 != NULL)
-    free (alloc1);
-  if (alloc2 != NULL)
-    {
-      if (keep_memory)
-	bfd_release (abfd, alloc2);
-      else
-	free (alloc2);
-    }
+  _bfd_munmap_temporary (alloc1, alloc1_size);
+  free (alloc2);
   return NULL;
 }
 
+/* This is similar to _bfd_elf_link_info_read_relocs, except for that
+   NULL is passed to _bfd_elf_link_info_read_relocs for pointer to
+   struct bfd_link_info.  */
+
+Elf_Internal_Rela *
+_bfd_elf_link_read_relocs (bfd *abfd,
+			   const asection *o,
+			   void *external_relocs,
+			   Elf_Internal_Rela *internal_relocs,
+			   bool keep_memory)
+{
+  return _bfd_elf_link_info_read_relocs (abfd, NULL, o, external_relocs,
+					 internal_relocs, keep_memory);
+
+}
+
 /* Compute the size of, and allocate space for, REL_HDR which is the
    section header for a section containing relocations for O.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_link_size_reloc_section (bfd *abfd,
 				  struct bfd_elf_section_reloc_data *reldata)
 {
@@ -2682,7 +2981,7 @@ _bfd_elf_link_size_reloc_section (bfd *a
      we zero the allocated space.  */
   rel_hdr->contents = (unsigned char *) bfd_zalloc (abfd, rel_hdr->sh_size);
   if (rel_hdr->contents == NULL && rel_hdr->sh_size != 0)
-    return FALSE;
+    return false;
 
   if (reldata->hashes == NULL && reldata->count)
     {
@@ -2691,25 +2990,24 @@ _bfd_elf_link_size_reloc_section (bfd *a
       p = ((struct elf_link_hash_entry **)
 	   bfd_zmalloc (reldata->count * sizeof (*p)));
       if (p == NULL)
-	return FALSE;
+	return false;
 
       reldata->hashes = p;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy the relocations indicated by the INTERNAL_RELOCS (which
    originated from the section given by INPUT_REL_HDR) to the
    OUTPUT_BFD.  */
 
-bfd_boolean
+bool
 _bfd_elf_link_output_relocs (bfd *output_bfd,
 			     asection *input_section,
 			     Elf_Internal_Shdr *input_rel_hdr,
 			     Elf_Internal_Rela *internal_relocs,
-			     struct elf_link_hash_entry **rel_hash
-			       ATTRIBUTE_UNUSED)
+			     struct elf_link_hash_entry **rel_hash)
 {
   Elf_Internal_Rela *irela;
   Elf_Internal_Rela *irelaend;
@@ -2742,7 +3040,7 @@ _bfd_elf_link_output_relocs (bfd *output
 	(_("%pB: relocation size mismatch in %pB section %pA"),
 	 output_bfd, input_section->owner, input_section);
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   erel = output_reldata->hdr->contents;
@@ -2752,21 +3050,25 @@ _bfd_elf_link_output_relocs (bfd *output
 		      * bed->s->int_rels_per_ext_rel);
   while (irela < irelaend)
     {
+      if (rel_hash && *rel_hash)
+	(*rel_hash)->has_reloc = 1;
       (*swap_out) (output_bfd, irela, erel);
       irela += bed->s->int_rels_per_ext_rel;
       erel += input_rel_hdr->sh_entsize;
+      if (rel_hash)
+	rel_hash++;
     }
 
   /* Bump the counter, so that we know where to add the next set of
      relocations.  */
   output_reldata->count += NUM_SHDR_ENTRIES (input_rel_hdr);
 
-  return TRUE;
+  return true;
 }
 
 /* Make weak undefined symbols in PIE dynamic.  */
 
-bfd_boolean
+bool
 _bfd_elf_link_hash_fixup_symbol (struct bfd_link_info *info,
 				 struct elf_link_hash_entry *h)
 {
@@ -2775,7 +3077,7 @@ _bfd_elf_link_hash_fixup_symbol (struct
       && h->root.type == bfd_link_hash_undefweak)
     return bfd_elf_link_record_dynamic_symbol (info, h);
 
-  return TRUE;
+  return true;
 }
 
 /* Fix up the flags for a symbol.  This handles various cases which
@@ -2784,7 +3086,7 @@ _bfd_elf_link_hash_fixup_symbol (struct
    assign_sym_version, which is unnecessary but perhaps more robust in
    the face of future changes.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_fix_symbol_flags (struct elf_link_hash_entry *h,
 			   struct elf_info_failed *eif)
 {
@@ -2824,8 +3126,8 @@ _bfd_elf_fix_symbol_flags (struct elf_li
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (eif->info, h))
 	    {
-	      eif->failed = TRUE;
-	      return FALSE;
+	      eif->failed = true;
+	      return false;
 	    }
 	}
     }
@@ -2852,7 +3154,7 @@ _bfd_elf_fix_symbol_flags (struct elf_li
   bed = get_elf_backend_data (elf_hash_table (eif->info)->dynobj);
   if (bed->elf_backend_fixup_symbol
       && !(*bed->elf_backend_fixup_symbol) (eif->info, h))
-    return FALSE;
+    return false;
 
   /* If this is a final link, and the symbol was defined as a common
      symbol in a regular object file, and there was no definition in
@@ -2868,13 +3170,13 @@ _bfd_elf_fix_symbol_flags (struct elf_li
 
   /* Symbols defined in discarded sections shouldn't be dynamic.  */
   if (h->root.type == bfd_link_hash_undefined && h->indx == -3)
-    (*bed->elf_backend_hide_symbol) (eif->info, h, TRUE);
+    (*bed->elf_backend_hide_symbol) (eif->info, h, true);
 
   /* If a weak undefined symbol has non-default visibility, we also
      hide it from the dynamic linker.  */
   else if (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	   && h->root.type == bfd_link_hash_undefweak)
-    (*bed->elf_backend_hide_symbol) (eif->info, h, TRUE);
+    (*bed->elf_backend_hide_symbol) (eif->info, h, true);
 
   /* A hidden versioned symbol in executable should be forced local if
      it is is locally defined, not referenced by shared library and not
@@ -2885,7 +3187,7 @@ _bfd_elf_fix_symbol_flags (struct elf_li
 	   && !h->dynamic
 	   && !h->ref_dynamic
 	   && h->def_regular)
-    (*bed->elf_backend_hide_symbol) (eif->info, h, TRUE);
+    (*bed->elf_backend_hide_symbol) (eif->info, h, true);
 
   /* If -Bsymbolic was used (which means to bind references to global
      symbols to the definition within the shared object), and this
@@ -2900,7 +3202,7 @@ _bfd_elf_fix_symbol_flags (struct elf_li
 	       || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
 	   && h->def_regular)
     {
-      bfd_boolean force_local;
+      bool force_local;
 
       force_local = (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
 		     || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN);
@@ -2942,14 +3244,14 @@ _bfd_elf_fix_symbol_flags (struct elf_li
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Make the backend pick a good value for a dynamic symbol.  This is
    called via elf_link_hash_traverse, and also calls itself
    recursively.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_adjust_dynamic_symbol (struct elf_link_hash_entry *h, void *data)
 {
   struct elf_info_failed *eif = (struct elf_info_failed *) data;
@@ -2957,15 +3259,15 @@ _bfd_elf_adjust_dynamic_symbol (struct e
   const struct elf_backend_data *bed;
 
   if (! is_elf_hash_table (eif->info->hash))
-    return FALSE;
+    return false;
 
   /* Ignore indirect symbols.  These are added by the versioning code.  */
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   /* Fix the symbol flags.  */
   if (! _bfd_elf_fix_symbol_flags (h, eif))
-    return FALSE;
+    return false;
 
   htab = elf_hash_table (eif->info);
   bed = get_elf_backend_data (htab->dynobj);
@@ -2973,7 +3275,7 @@ _bfd_elf_adjust_dynamic_symbol (struct e
   if (h->root.type == bfd_link_hash_undefweak)
     {
       if (eif->info->dynamic_undefined_weak == 0)
-	(*bed->elf_backend_hide_symbol) (eif->info, h, TRUE);
+	(*bed->elf_backend_hide_symbol) (eif->info, h, true);
       else if (eif->info->dynamic_undefined_weak > 0
 	       && h->ref_regular
 	       && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
@@ -2982,8 +3284,8 @@ _bfd_elf_adjust_dynamic_symbol (struct e
 	{
 	  if (!bfd_elf_link_record_dynamic_symbol (eif->info, h))
 	    {
-	      eif->failed = TRUE;
-	      return FALSE;
+	      eif->failed = true;
+	      return false;
 	    }
 	}
     }
@@ -3003,13 +3305,13 @@ _bfd_elf_adjust_dynamic_symbol (struct e
 	      && (!h->is_weakalias || weakdef (h)->dynindx == -1))))
     {
       h->plt = elf_hash_table (eif->info)->init_plt_offset;
-      return TRUE;
+      return true;
     }
 
   /* If we've already adjusted this symbol, don't do it again.  This
      can happen via a recursive call.  */
   if (h->dynamic_adjusted)
-    return TRUE;
+    return true;
 
   /* Don't look at this symbol again.  Note that we must set this
      after checking the above conditions, because we may look at a
@@ -3056,7 +3358,7 @@ _bfd_elf_adjust_dynamic_symbol (struct e
       /* Ensure that the backend adjust_dynamic_symbol function sees
 	 the strong alias before H by recursively calling ourselves.  */
       if (!_bfd_elf_adjust_dynamic_symbol (def, eif))
-	return FALSE;
+	return false;
     }
 
   /* If a symbol has no type and no size and does not require a PLT
@@ -3073,17 +3375,17 @@ _bfd_elf_adjust_dynamic_symbol (struct e
 
   if (! (*bed->elf_backend_adjust_dynamic_symbol) (eif->info, h))
     {
-      eif->failed = TRUE;
-      return FALSE;
+      eif->failed = true;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust the dynamic symbol, H, for copy in the dynamic bss section,
    DYNBSS.  */
 
-bfd_boolean
+bool
 _bfd_elf_adjust_dynamic_copy (struct bfd_link_info *info,
 			      struct elf_link_hash_entry *h,
 			      asection *dynbss)
@@ -3105,12 +3407,9 @@ _bfd_elf_adjust_dynamic_copy (struct bfd
        --power_of_two;
     }
 
-  if (power_of_two > bfd_section_alignment (dynbss))
-    {
-      /* Adjust the section alignment if needed.  */
-      if (!bfd_set_section_alignment (dynbss, power_of_two))
-	return FALSE;
-    }
+  /* Adjust the section alignment if needed.  */
+  if (!bfd_link_align_section (dynbss, power_of_two))
+    return false;
 
   /* We make sure that the symbol will be aligned properly.  */
   dynbss->size = BFD_ALIGN (dynbss->size, mask + 1);
@@ -3131,13 +3430,13 @@ _bfd_elf_adjust_dynamic_copy (struct bfd
       (_("%P: copy reloc against protected `%pT' is dangerous\n"),
        h->root.root.string);
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust all external symbols pointing into SEC_MERGE sections
    to reflect the object merging within the sections.  */
 
-static bfd_boolean
+static bool
 _bfd_elf_link_sec_merge_syms (struct elf_link_hash_entry *h, void *data)
 {
   asection *sec;
@@ -3156,24 +3455,24 @@ _bfd_elf_link_sec_merge_syms (struct elf
 				    h->root.u.def.value);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Returns false if the symbol referred to by H should be considered
    to resolve local to the current module, and true if it should be
    considered to bind dynamically.  */
 
-bfd_boolean
+bool
 _bfd_elf_dynamic_symbol_p (struct elf_link_hash_entry *h,
 			   struct bfd_link_info *info,
-			   bfd_boolean not_local_protected)
+			   bool not_local_protected)
 {
-  bfd_boolean binding_stays_local_p;
+  bool binding_stays_local_p;
   const struct elf_backend_data *bed;
   struct elf_link_hash_table *hash_table;
 
   if (h == NULL)
-    return FALSE;
+    return false;
 
   while (h->root.type == bfd_link_hash_indirect
 	 || h->root.type == bfd_link_hash_warning)
@@ -3181,9 +3480,9 @@ _bfd_elf_dynamic_symbol_p (struct elf_li
 
   /* If it was forced local, then clearly it's not dynamic.  */
   if (h->dynindx == -1)
-    return FALSE;
+    return false;
   if (h->forced_local)
-    return FALSE;
+    return false;
 
   /* Identify the cases where name binding rules say that a
      visible symbol resolves locally.  */
@@ -3194,12 +3493,12 @@ _bfd_elf_dynamic_symbol_p (struct elf_li
     {
     case STV_INTERNAL:
     case STV_HIDDEN:
-      return FALSE;
+      return false;
 
     case STV_PROTECTED:
       hash_table = elf_hash_table (info);
-      if (!is_elf_hash_table (hash_table))
-	return FALSE;
+      if (!is_elf_hash_table (&hash_table->root))
+	return false;
 
       bed = get_elf_backend_data (hash_table->dynobj);
 
@@ -3207,7 +3506,7 @@ _bfd_elf_dynamic_symbol_p (struct elf_li
 	 that these symbols perhaps be resolved dynamically, even though
 	 we should be resolving them to the current module.  */
       if (!not_local_protected || !bed->is_function_type (h->type))
-	binding_stays_local_p = TRUE;
+	binding_stays_local_p = true;
       break;
 
     default:
@@ -3216,7 +3515,7 @@ _bfd_elf_dynamic_symbol_p (struct elf_li
 
   /* If it isn't defined locally, then clearly it's dynamic.  */
   if (!h->def_regular && !ELF_COMMON_DEF_P (h))
-    return TRUE;
+    return true;
 
   /* Otherwise, the symbol is dynamic if binding rules don't tell
      us that it remains local.  */
@@ -3236,26 +3535,26 @@ _bfd_elf_dynamic_symbol_p (struct elf_li
    treatment of undefined weak symbols.  For those that do not make
    undefined weak symbols dynamic, both functions may return false.  */
 
-bfd_boolean
+bool
 _bfd_elf_symbol_refs_local_p (struct elf_link_hash_entry *h,
 			      struct bfd_link_info *info,
-			      bfd_boolean local_protected)
+			      bool local_protected)
 {
   const struct elf_backend_data *bed;
   struct elf_link_hash_table *hash_table;
 
   /* If it's a local sym, of course we resolve locally.  */
   if (h == NULL)
-    return TRUE;
+    return true;
 
   /* STV_HIDDEN or STV_INTERNAL ones must be local.  */
   if (ELF_ST_VISIBILITY (h->other) == STV_HIDDEN
       || ELF_ST_VISIBILITY (h->other) == STV_INTERNAL)
-    return TRUE;
+    return true;
 
   /* Forced local symbols resolve locally.  */
   if (h->forced_local)
-    return TRUE;
+    return true;
 
   /* Common symbols that become definitions don't get the DEF_REGULAR
      flag set, so test it first, and don't bail out.  */
@@ -3264,26 +3563,30 @@ _bfd_elf_symbol_refs_local_p (struct elf
   /* If we don't have a definition in a regular file, then we can't
      resolve locally.  The sym is either undefined or dynamic.  */
   else if (!h->def_regular)
-    return FALSE;
+    return false;
 
   /* Non-dynamic symbols resolve locally.  */
   if (h->dynindx == -1)
-    return TRUE;
+    return true;
 
   /* At this point, we know the symbol is defined and dynamic.  In an
      executable it must resolve locally, likewise when building symbolic
      shared libraries.  */
   if (bfd_link_executable (info) || SYMBOLIC_BIND (info, h))
-    return TRUE;
+    return true;
 
   /* Now deal with defined dynamic symbols in shared libraries.  Ones
      with default visibility might not resolve locally.  */
   if (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
-    return FALSE;
+    return false;
 
   hash_table = elf_hash_table (info);
-  if (!is_elf_hash_table (hash_table))
-    return TRUE;
+  if (!is_elf_hash_table (&hash_table->root))
+    return true;
+
+  /* STV_PROTECTED symbols with indirect external access are local. */
+  if (info->indirect_extern_access > 0)
+    return true;
 
   bed = get_elf_backend_data (hash_table->dynobj);
 
@@ -3293,7 +3596,7 @@ _bfd_elf_symbol_refs_local_p (struct elf
        || (info->extern_protected_data < 0
 	   && !bed->extern_protected_data))
       && !bed->is_function_type (h->type))
-    return TRUE;
+    return true;
 
   /* Function pointer equality tests may require that STV_PROTECTED
      symbols be treated as dynamic symbols.  If the address of a
@@ -3323,16 +3626,16 @@ _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;
+    (void) bfd_link_align_section (tls, align);
 
   return tls;
 }
 
 /* Return TRUE iff this is a non-common, definition of a non-function symbol.  */
-static bfd_boolean
+static bool
 is_global_data_symbol_definition (bfd *abfd ATTRIBUTE_UNUSED,
 				  Elf_Internal_Sym *sym)
 {
@@ -3341,21 +3644,21 @@ is_global_data_symbol_definition (bfd *a
   /* Local symbols do not count, but target specific ones might.  */
   if (ELF_ST_BIND (sym->st_info) != STB_GLOBAL
       && ELF_ST_BIND (sym->st_info) < STB_LOOS)
-    return FALSE;
+    return false;
 
   bed = get_elf_backend_data (abfd);
   /* Function symbols do not count.  */
   if (bed->is_function_type (ELF_ST_TYPE (sym->st_info)))
-    return FALSE;
+    return false;
 
   /* If the section is undefined, then so is the symbol.  */
   if (sym->st_shndx == SHN_UNDEF)
-    return FALSE;
+    return false;
 
   /* If the symbol is defined in the common section, then
      it is a common definition and so does not count.  */
   if (bed->common_definition (sym))
-    return FALSE;
+    return false;
 
   /* If the symbol is in a target specific section then we
      must rely upon the backend to tell us what it is.  */
@@ -3367,15 +3670,15 @@ is_global_data_symbol_definition (bfd *a
        Instead for now assume that the definition is not global,
        Even if this is wrong, at least the linker will behave
        in the same way that it used to do.  */
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Search the symbol table of the archive element of the archive ABFD
    whose archive map contains a mention of SYMDEF, and determine if
    the symbol is defined in this element.  */
-static bfd_boolean
+static bool
 elf_link_is_defined_archive_symbol (bfd * abfd, carsym * symdef)
 {
   Elf_Internal_Shdr * hdr;
@@ -3385,34 +3688,41 @@ elf_link_is_defined_archive_symbol (bfd
   Elf_Internal_Sym *isymbuf;
   Elf_Internal_Sym *isym;
   Elf_Internal_Sym *isymend;
-  bfd_boolean result;
+  bool result;
 
-  abfd = _bfd_get_elt_at_filepos (abfd, symdef->file_offset);
+  abfd = _bfd_get_elt_at_filepos (abfd, symdef->file_offset, NULL);
   if (abfd == NULL)
-    return FALSE;
+    return false;
 
   if (! bfd_check_format (abfd, bfd_object))
-    return FALSE;
+    return false;
 
   /* Select the appropriate symbol table.  If we don't know if the
      object file is an IR object, give linker LTO plugin a chance to
      get the correct symbol table.  */
   if (abfd->plugin_format == bfd_plugin_yes
-#if BFD_SUPPORTS_PLUGINS
+      || abfd->plugin_format == bfd_plugin_yes_unused
       || (abfd->plugin_format == bfd_plugin_unknown
-	  && bfd_link_plugin_object_p (abfd))
-#endif
-      )
+	  && bfd_link_plugin_object_p (abfd)))
     {
       /* Use the IR symbol table if the object has been claimed by
 	 plugin.  */
       abfd = abfd->plugin_dummy_bfd;
       hdr = &elf_tdata (abfd)->symtab_hdr;
     }
-  else if ((abfd->flags & DYNAMIC) == 0 || elf_dynsymtab (abfd) == 0)
-    hdr = &elf_tdata (abfd)->symtab_hdr;
   else
-    hdr = &elf_tdata (abfd)->dynsymtab_hdr;
+    {
+      if (elf_use_dt_symtab_p (abfd))
+	{
+	  bfd_set_error (bfd_error_wrong_format);
+	  return false;
+	}
+
+      if ((abfd->flags & DYNAMIC) == 0 || elf_dynsymtab (abfd) == 0)
+	hdr = &elf_tdata (abfd)->symtab_hdr;
+      else
+	hdr = &elf_tdata (abfd)->dynsymtab_hdr;
+    }
 
   symcount = hdr->sh_size / get_elf_backend_data (abfd)->s->sizeof_sym;
 
@@ -3430,16 +3740,16 @@ elf_link_is_defined_archive_symbol (bfd
     }
 
   if (extsymcount == 0)
-    return FALSE;
+    return false;
 
   /* Read in the symbol table.  */
   isymbuf = bfd_elf_get_elf_syms (abfd, hdr, extsymcount, extsymoff,
 				  NULL, NULL, NULL);
   if (isymbuf == NULL)
-    return FALSE;
+    return false;
 
   /* Scan the symbol table looking for SYMDEF.  */
-  result = FALSE;
+  result = false;
   for (isym = isymbuf, isymend = isymbuf + extsymcount; isym < isymend; isym++)
     {
       const char *name;
@@ -3463,7 +3773,7 @@ elf_link_is_defined_archive_symbol (bfd
 
 /* Add an entry to the .dynamic table.  */
 
-bfd_boolean
+bool
 _bfd_elf_add_dynamic_entry (struct bfd_link_info *info,
 			    bfd_vma tag,
 			    bfd_vma val)
@@ -3476,20 +3786,20 @@ _bfd_elf_add_dynamic_entry (struct bfd_l
   Elf_Internal_Dyn dyn;
 
   hash_table = elf_hash_table (info);
-  if (! is_elf_hash_table (hash_table))
-    return FALSE;
+  if (! is_elf_hash_table (&hash_table->root))
+    return false;
 
   if (tag == DT_RELA || tag == DT_REL)
-    hash_table->dynamic_relocs = TRUE;
+    hash_table->dynamic_relocs = true;
 
   bed = get_elf_backend_data (hash_table->dynobj);
-  s = bfd_get_linker_section (hash_table->dynobj, ".dynamic");
+  s = hash_table->dynamic;
   BFD_ASSERT (s != NULL);
 
   newsize = s->size + bed->s->sizeof_dyn;
   newcontents = (bfd_byte *) bfd_realloc (s->contents, newsize);
   if (newcontents == NULL)
-    return FALSE;
+    return false;
 
   dyn.d_tag = tag;
   dyn.d_un.d_val = val;
@@ -3498,27 +3808,124 @@ _bfd_elf_add_dynamic_entry (struct bfd_l
   s->size = newsize;
   s->contents = newcontents;
 
-  return TRUE;
+  return true;
+}
+
+/* Strip zero-sized dynamic sections.  */
+
+bool
+_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 *);
+  bool strip_zero_sized;
+  bool strip_zero_sized_plt;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  hash_table = elf_hash_table (info);
+  if (!is_elf_hash_table (&hash_table->root))
+    return false;
+
+  if (!hash_table->dynobj)
+    return true;
+
+  sdynamic= hash_table->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 && sdynamic->size != 0)
+    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,
+						NULL);
+    }
+
+  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,
+/* 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);
-  strindex = _bfd_elf_strtab_add (hash_table->dynstr, soname, FALSE);
+  soname = elf_dt_name (abfd);
+  strindex = _bfd_elf_strtab_add (hash_table->dynstr, soname, false);
   if (strindex == (size_t) -1)
     return -1;
 
@@ -3529,8 +3936,8 @@ elf_add_dt_needed_tag (bfd *abfd,
       bfd_byte *extdyn;
 
       bed = get_elf_backend_data (hash_table->dynobj);
-      sdyn = bfd_get_linker_section (hash_table->dynobj, ".dynamic");
-      if (sdyn != NULL)
+      sdyn = hash_table->dynamic;
+      if (sdyn != NULL && sdyn->size != 0)
 	for (extdyn = sdyn->contents;
 	     extdyn < sdyn->contents + sdyn->size;
 	     extdyn += bed->s->sizeof_dyn)
@@ -3547,17 +3954,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;
 }
@@ -3566,7 +3967,7 @@ elf_add_dt_needed_tag (bfd *abfd,
    (or the end of list if STOP is NULL), and needed by a library that
    will be loaded.  */
 
-static bfd_boolean
+static bool
 on_needed_list (const char *soname,
 		struct bfd_link_needed_list *needed,
 		struct bfd_link_needed_list *stop)
@@ -3582,9 +3983,9 @@ on_needed_list (const char *soname,
 	       the library.  Therefore search prior to the current
 	       LOOK, preventing possible infinite recursion.  */
 	    || on_needed_list (elf_dt_name (look->by), needed, look)))
-      return TRUE;
+      return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Sort symbol by value, section, size, and type.  */
@@ -3646,20 +4047,20 @@ elf_sort_symbol (const void *arg1, const
 /* This function is used to adjust offsets into .dynstr for
    dynamic symbols.  This is called via elf_link_hash_traverse.  */
 
-static bfd_boolean
+static bool
 elf_adjust_dynstr_offsets (struct elf_link_hash_entry *h, void *data)
 {
   struct elf_strtab_hash *dynstr = (struct elf_strtab_hash *) data;
 
   if (h->dynindx != -1)
     h->dynstr_index = _bfd_elf_strtab_offset (dynstr, h->dynstr_index);
-  return TRUE;
+  return true;
 }
 
 /* Assign string offsets in .dynstr, update all structures referencing
    them.  */
 
-static bfd_boolean
+static bool
 elf_finalize_dynstr (bfd *output_bfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_table *hash_table = elf_hash_table (info);
@@ -3674,13 +4075,18 @@ elf_finalize_dynstr (bfd *output_bfd, st
   _bfd_elf_strtab_finalize (dynstr);
   size = _bfd_elf_strtab_size (dynstr);
 
+  /* Allow the linker to examine the dynsymtab now it's fully populated.  */
+
+  if (info->callbacks->examine_strtab)
+    info->callbacks->examine_strtab (dynstr);
+
   bed = get_elf_backend_data (dynobj);
-  sdyn = bfd_get_linker_section (dynobj, ".dynamic");
+  sdyn = hash_table->dynamic;
   BFD_ASSERT (sdyn != NULL);
 
   /* Update all .dynamic entries referencing .dynstr strings.  */
   for (extdyn = sdyn->contents;
-       extdyn < sdyn->contents + sdyn->size;
+       extdyn < PTR_ADD (sdyn->contents, sdyn->size);
        extdyn += bed->s->sizeof_dyn)
     {
       Elf_Internal_Dyn dyn;
@@ -3781,14 +4187,14 @@ elf_finalize_dynstr (bfd *output_bfd, st
       while (need.vn_next);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE iff relocations for INPUT are compatible with OUTPUT.
    The default is to only match when the INPUT and OUTPUT are exactly
    the same target.  */
 
-bfd_boolean
+bool
 _bfd_elf_default_relocs_compatible (const bfd_target *input,
 				    const bfd_target *output)
 {
@@ -3799,20 +4205,20 @@ _bfd_elf_default_relocs_compatible (cons
    This version is used when different targets for the same architecture
    are virtually identical.  */
 
-bfd_boolean
+bool
 _bfd_elf_relocs_compatible (const bfd_target *input,
 			    const bfd_target *output)
 {
   const struct elf_backend_data *obed, *ibed;
 
   if (input == output)
-    return TRUE;
+    return true;
 
   ibed = xvec_get_elf_backend_data (input);
   obed = xvec_get_elf_backend_data (output);
 
   if (ibed->arch != obed->arch)
-    return FALSE;
+    return false;
 
   /* If both backends are using this function, deem them compatible.  */
   return ibed->relocs_compatible == obed->relocs_compatible;
@@ -3822,7 +4228,7 @@ _bfd_elf_relocs_compatible (const bfd_ta
    we are about to handle an as-needed lib, or have finished
    processing the lib.  */
 
-bfd_boolean
+bool
 _bfd_elf_notice_as_needed (bfd *ibfd,
 			   struct bfd_link_info *info,
 			   enum notice_asneeded_action act)
@@ -3830,10 +4236,13 @@ _bfd_elf_notice_as_needed (bfd *ibfd,
   return (*info->callbacks->notice) (info, NULL, NULL, ibfd, NULL, act, 0);
 }
 
-/* Check relocations an ELF object file.  */
+/* Call ACTION on each relocation in an ELF object file.  */
 
-bfd_boolean
-_bfd_elf_link_check_relocs (bfd *abfd, struct bfd_link_info *info)
+bool
+_bfd_elf_link_iterate_on_relocs
+  (bfd *abfd, struct bfd_link_info *info,
+   bool (*action) (bfd *, struct bfd_link_info *, asection *,
+		   const Elf_Internal_Rela *))
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
   struct elf_link_hash_table *htab = elf_hash_table (info);
@@ -3856,8 +4265,7 @@ _bfd_elf_link_check_relocs (bfd *abfd, s
      I have no idea how to handle linking PIC code into a file of a
      different format.  It probably can't be done.  */
   if ((abfd->flags & DYNAMIC) == 0
-      && is_elf_hash_table (htab)
-      && bed->check_relocs != NULL
+      && is_elf_hash_table (&htab->root)
       && elf_object_id (abfd) == elf_hash_table_id (htab)
       && (*bed->relocs_compatible) (abfd->xvec, info->output_bfd->xvec))
     {
@@ -3866,10 +4274,18 @@ _bfd_elf_link_check_relocs (bfd *abfd, s
       for (o = abfd->sections; o != NULL; o = o->next)
 	{
 	  Elf_Internal_Rela *internal_relocs;
-	  bfd_boolean ok;
+	  bool 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)
@@ -3877,27 +4293,103 @@ _bfd_elf_link_check_relocs (bfd *abfd, s
 	      || bfd_is_abs_section (o->output_section))
 	    continue;
 
-	  internal_relocs = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL,
-						       info->keep_memory);
+	  internal_relocs = _bfd_elf_link_info_read_relocs
+	    (abfd, info, o, NULL, NULL,
+	     _bfd_elf_link_keep_memory (info));
 	  if (internal_relocs == NULL)
-	    return FALSE;
+	    return false;
 
-	  ok = (*bed->check_relocs) (abfd, info, o, internal_relocs);
+	  ok = action (abfd, info, o, internal_relocs);
 
 	  if (elf_section_data (o)->relocs != internal_relocs)
 	    free (internal_relocs);
 
 	  if (! ok)
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
+}
+
+/* Check relocations in an ELF object file.  This is called after
+   all input files have been opened.  */
+
+bool
+_bfd_elf_link_check_relocs (bfd *abfd, struct bfd_link_info *info)
+{
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  if (bed->check_relocs != NULL)
+    return _bfd_elf_link_iterate_on_relocs (abfd, info,
+					    bed->check_relocs);
+  return true;
+}
+
+/* An entry in the first definition hash table.  */
+
+struct elf_link_first_hash_entry
+{
+  struct bfd_hash_entry root;
+  /* The object of the first definition.  */
+  bfd *abfd;
+};
+
+/* The function to create a new entry in the first definition hash
+   table.  */
+
+static struct bfd_hash_entry *
+elf_link_first_hash_newfunc (struct bfd_hash_entry *entry,
+			     struct bfd_hash_table *table,
+			     const char *string)
+{
+  struct elf_link_first_hash_entry *ret =
+    (struct elf_link_first_hash_entry *) entry;
+
+  /* Allocate the structure if it has not already been allocated by a
+     subclass.  */
+  if (ret == NULL)
+    ret = (struct elf_link_first_hash_entry *)
+	bfd_hash_allocate (table,
+			   sizeof (struct elf_link_first_hash_entry));
+  if (ret == NULL)
+    return NULL;
+
+  /* Call the allocation method of the superclass.  */
+  ret = ((struct elf_link_first_hash_entry *)
+	 bfd_hash_newfunc ((struct bfd_hash_entry *) ret, table,
+			   string));
+  if (ret != NULL)
+    ret->abfd = NULL;
+
+  return (struct bfd_hash_entry *) ret;
+}
+
+/* Add the symbol NAME from ABFD to first hash.  */
+
+static void
+elf_link_add_to_first_hash (bfd *abfd, struct bfd_link_info *info,
+			    const char *name, bool copy)
+{
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+  /* Skip if there is no first hash.  */
+  if (htab->first_hash == NULL)
+    return;
+
+  struct elf_link_first_hash_entry *e
+    = ((struct elf_link_first_hash_entry *)
+       bfd_hash_lookup (htab->first_hash, name, true, copy));
+  if (e == NULL)
+    info->callbacks->fatal
+      (_("%P: %pB: failed to add %s to first hash\n"), abfd, name);
+
+  if (e->abfd == NULL)
+    /* Store ABFD in abfd.  */
+    e->abfd = abfd;
 }
 
 /* Add symbols from an ELF object file to the linker hash table.  */
 
-static bfd_boolean
+static bool
 elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   Elf_Internal_Ehdr *ehdr;
@@ -3906,7 +4398,7 @@ elf_link_add_object_symbols (bfd *abfd,
   size_t extsymcount;
   size_t extsymoff;
   struct elf_link_hash_entry **sym_hash;
-  bfd_boolean dynamic;
+  bool dynamic;
   Elf_External_Versym *extversym = NULL;
   Elf_External_Versym *extversym_end = NULL;
   Elf_External_Versym *ever;
@@ -3917,9 +4409,8 @@ elf_link_add_object_symbols (bfd *abfd,
   Elf_Internal_Sym *isym;
   Elf_Internal_Sym *isymend;
   const struct elf_backend_data *bed;
-  bfd_boolean add_needed;
+  bool 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;
@@ -3931,22 +4422,44 @@ elf_link_add_object_symbols (bfd *abfd,
   void *old_strtab = NULL;
   size_t tabsize = 0;
   asection *s;
-  bfd_boolean just_syms;
+  bool just_syms;
 
   htab = elf_hash_table (info);
   bed = get_elf_backend_data (abfd);
 
+  if (elf_use_dt_symtab_p (abfd))
+    {
+      bfd_set_error (bfd_error_wrong_format);
+      return false;
+    }
+
   if ((abfd->flags & DYNAMIC) == 0)
-    dynamic = FALSE;
+    {
+      dynamic = false;
+      if ((abfd->flags & BFD_PLUGIN) != 0
+	  && is_elf_hash_table (&htab->root)
+	  && htab->first_hash == NULL)
+	{
+	  /* Initialize first_hash for an IR input.  */
+	  htab->first_hash = (struct bfd_hash_table *)
+	    bfd_malloc (sizeof (struct bfd_hash_table));
+	  if (htab->first_hash == NULL
+	      || !bfd_hash_table_init
+		   (htab->first_hash, elf_link_first_hash_newfunc,
+		    sizeof (struct elf_link_first_hash_entry)))
+	    info->callbacks->fatal
+	      (_("%P: first_hash failed to create: %E\n"));
+	}
+    }
   else
     {
-      dynamic = TRUE;
+      dynamic = true;
 
       /* You can't use -r against a dynamic object.  Also, there's no
 	 hope of using a dynamic object which does not exactly match
 	 the format of the output file.  */
       if (bfd_link_relocatable (info)
-	  || !is_elf_hash_table (htab)
+	  || !is_elf_hash_table (&htab->root)
 	  || info->output_bfd->xvec != abfd->xvec)
 	{
 	  if (bfd_link_relocatable (info))
@@ -3979,7 +4492,7 @@ elf_link_add_object_symbols (bfd *abfd,
       const char *name;
 
       name = bfd_section_name (s);
-      if (CONST_STRNEQ (name, ".gnu.warning."))
+      if (startswith (name, ".gnu.warning."))
 	{
 	  char *msg;
 	  bfd_size_type sz;
@@ -3999,7 +4512,7 @@ elf_link_add_object_symbols (bfd *abfd,
 	    {
 	      struct elf_link_hash_entry *h;
 
-	      h = elf_link_hash_lookup (htab, name, FALSE, FALSE, TRUE);
+	      h = elf_link_hash_lookup (htab, name, false, false, true);
 
 	      /* FIXME: What about bfd_link_hash_common?  */
 	      if (h != NULL
@@ -4020,7 +4533,7 @@ elf_link_add_object_symbols (bfd *abfd,
 
 	  if (! (_bfd_generic_link_add_one_symbol
 		 (info, abfd, name, BSF_WARNING, s, 0, msg,
-		  FALSE, bed->collect, NULL)))
+		  false, bed->collect, NULL)))
 	    goto error_return;
 
 	  if (bfd_link_executable (info))
@@ -4039,7 +4552,7 @@ elf_link_add_object_symbols (bfd *abfd,
   just_syms = ((s = abfd->sections) != NULL
 	       && s->sec_info_type == SEC_INFO_TYPE_JUST_SYMS);
 
-  add_needed = TRUE;
+  add_needed = true;
   if (! dynamic)
     {
       /* If we are creating a shared library, create all the dynamic
@@ -4054,7 +4567,7 @@ elf_link_add_object_symbols (bfd *abfd,
 	      || (!bfd_link_relocatable (info)
 		  && info->nointerp
 		  && (info->export_dynamic || info->dynamic)))
-	  && is_elf_hash_table (htab)
+	  && is_elf_hash_table (&htab->root)
 	  && info->output_bfd->xvec == abfd->xvec
 	  && !htab->dynamic_sections_created)
 	{
@@ -4062,7 +4575,7 @@ elf_link_add_object_symbols (bfd *abfd,
 	    goto error_return;
 	}
     }
-  else if (!is_elf_hash_table (htab))
+  else if (!is_elf_hash_table (&htab->root))
     goto error_return;
   else
     {
@@ -4070,7 +4583,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.  */
@@ -4089,17 +4602,17 @@ elf_link_add_object_symbols (bfd *abfd,
 		       | DYN_NO_NEEDED)) == 0;
 
       s = bfd_get_section_by_name (abfd, ".dynamic");
-      if (s != NULL)
+      if (s != NULL && s->size != 0 && (s->flags & SEC_HAS_CONTENTS) != 0)
 	{
 	  bfd_byte *dynbuf;
 	  bfd_byte *extdyn;
 	  unsigned int elfsec;
 	  unsigned long shlink;
 
-	  if (!bfd_malloc_and_get_section (abfd, s, &dynbuf))
+	  if (!_bfd_elf_mmap_section_contents (abfd, s, &dynbuf))
 	    {
-error_free_dyn:
-	      free (dynbuf);
+	    error_free_dyn:
+	      _bfd_elf_munmap_section_contents (s, dynbuf);
 	      goto error_return;
 	    }
 
@@ -4109,7 +4622,7 @@ error_free_dyn:
 	  shlink = elf_elfsections (abfd)[elfsec]->sh_link;
 
 	  for (extdyn = dynbuf;
-	       extdyn <= dynbuf + s->size - bed->s->sizeof_dyn;
+	       (size_t) (dynbuf + s->size - extdyn) >= bed->s->sizeof_dyn;
 	       extdyn += bed->s->sizeof_dyn)
 	    {
 	      Elf_Internal_Dyn dyn;
@@ -4127,8 +4640,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 +4663,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 +4689,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)
@@ -4201,9 +4714,11 @@ error_free_dyn:
 		  unsigned int tagv = dyn.d_un.d_val;
 		  audit = bfd_elf_string_from_elf_section (abfd, shlink, tagv);
 		}
+	      if (dyn.d_tag == DT_FLAGS_1)
+		elf_tdata (abfd)->is_pie = (dyn.d_un.d_val & DF_1_PIE) != 0;
 	    }
 
-	  free (dynbuf);
+	  _bfd_elf_munmap_section_contents (s, dynbuf);
 	}
 
       /* DT_RUNPATH overrides DT_RPATH.  Do _NOT_ bfd_release, as that
@@ -4227,10 +4742,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 +4778,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 +4837,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 +4856,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 +4887,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 +4921,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 +4936,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);
+		}
 	    }
 	}
     }
@@ -4431,13 +4970,13 @@ error_free_dyn:
     }
 
   if (!bfd_link_relocatable (info)
-      && abfd->lto_slim_object)
+      && bfd_get_lto_type (abfd) == lto_slim_ir_object)
     {
       _bfd_error_handler
 	(_("%pB: plugin needed to handle lto object"), abfd);
     }
 
-  for (isym = isymbuf, isymend = isymbuf + extsymcount;
+  for (isym = isymbuf, isymend = PTR_ADD (isymbuf, extsymcount);
        isym < isymend;
        isym++, sym_hash++, ever = (ever != NULL ? ever + 1 : NULL))
     {
@@ -4446,22 +4985,24 @@ error_free_dyn:
       asection *sec, *new_sec;
       flagword flags;
       const char *name;
+      const char *defvername;
+      bool must_copy_name = false;
       struct elf_link_hash_entry *h;
       struct elf_link_hash_entry *hi;
-      bfd_boolean definition;
-      bfd_boolean size_change_ok;
-      bfd_boolean type_change_ok;
-      bfd_boolean new_weak;
-      bfd_boolean old_weak;
-      bfd_boolean override;
-      bfd_boolean common;
-      bfd_boolean discarded;
+      bool definition;
+      bool size_change_ok;
+      bool type_change_ok;
+      bool new_weak;
+      bool old_weak;
+      bfd *override;
+      bool common;
+      bool discarded;
       unsigned int old_alignment;
       unsigned int shindex;
       bfd *old_bfd;
-      bfd_boolean matched;
+      bool matched;
 
-      override = FALSE;
+      override = NULL;
 
       flags = BSF_NO_FLAGS;
       sec = NULL;
@@ -4471,9 +5012,9 @@ error_free_dyn:
 	{
 	  /* Treat common symbol as undefined for --no-define-common.  */
 	  isym->st_shndx = SHN_UNDEF;
-	  common = FALSE;
+	  common = false;
 	}
-      discarded = FALSE;
+      discarded = false;
 
       bind = ELF_ST_BIND (isym->st_info);
       switch (bind)
@@ -4542,7 +5083,7 @@ error_free_dyn:
 	      /* Symbols from discarded section are undefined.  We keep
 		 its visibility.  */
 	      sec = bfd_und_section_ptr;
-	      discarded = TRUE;
+	      discarded = true;
 	      isym->st_shndx = SHN_UNDEF;
 	    }
 	  else if ((abfd->flags & (EXEC_P | DYNAMIC)) != 0)
@@ -4610,23 +5151,24 @@ error_free_dyn:
 
       if (bfd_is_und_section (sec)
 	  || bfd_is_com_section (sec))
-	definition = FALSE;
+	definition = false;
       else
-	definition = TRUE;
+	definition = true;
 
-      size_change_ok = FALSE;
+      size_change_ok = false;
       type_change_ok = bed->type_change_ok;
-      old_weak = FALSE;
-      matched = FALSE;
+      old_weak = false;
+      matched = false;
       old_alignment = 0;
       old_bfd = NULL;
       new_sec = sec;
+      defvername = NULL;
 
-      if (is_elf_hash_table (htab))
+      if (is_elf_hash_table (&htab->root))
 	{
 	  Elf_Internal_Versym iver;
 	  unsigned int vernum = 0;
-	  bfd_boolean skip;
+	  bool skip;
 
 	  if (ever == NULL)
 	    {
@@ -4739,10 +5281,15 @@ error_free_dyn:
 		 default version of the symbol.  */
 	      if ((iver.vs_vers & VERSYM_HIDDEN) == 0
 		  && isym->st_shndx != SHN_UNDEF)
-		*p++ = ELF_VER_CHR;
+		*p++ = ELF_VER_CHR, defvername = name;
 	      memcpy (p, verstr, verlen + 1);
 
 	      name = newname;
+	      /* Since bfd_hash_alloc is used for "name", the string
+		 must be copied if added to first_hash.  The string
+		 memory can be freed when an --as-needed library is
+		 not needed.  */
+	      must_copy_name = true;
 	    }
 
 	  /* If this symbol has default visibility and the user has
@@ -4764,24 +5311,42 @@ error_free_dyn:
 	  if (skip)
 	    continue;
 
-	  /* Override a definition only if the new symbol matches the
-	     existing one.  */
-	  if (override && matched)
-	    definition = FALSE;
-
 	  h = *sym_hash;
 	  while (h->root.type == bfd_link_hash_indirect
 		 || h->root.type == bfd_link_hash_warning)
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  if (elf_tdata (abfd)->verdef != NULL
+	  /* Override a definition only if the new symbol matches the
+	     existing one.  */
+	  if (override && matched)
+	    {
+	      definition = false;
+	      if (htab->first_hash != NULL
+		  && (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0
+		  && h->root.non_ir_ref_regular)
+		{
+		  /* When reloading --as-needed shared objects for new
+		     symbols added from IR inputs, if this shared object
+		     has the first definition, use it.  */
+		  struct elf_link_first_hash_entry *e
+		    = ((struct elf_link_first_hash_entry *)
+		       bfd_hash_lookup (htab->first_hash, name, false,
+					false));
+		  if (e != NULL && e->abfd == abfd)
+		    definition = true;
+		}
+	    }
+
+	  if (h->versioned != unversioned
+	      && elf_tdata (abfd)->verdef != NULL
 	      && vernum > 1
 	      && definition)
 	    h->verinfo.verdef = &elf_tdata (abfd)->verdef[vernum - 1];
 	}
 
       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;
 
@@ -4793,19 +5358,19 @@ error_free_dyn:
 	     || h->root.type == bfd_link_hash_warning)
 	h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
+      *sym_hash = h;
+
       /* Setting the index to -3 tells elf_link_output_extsym that
 	 this symbol is defined in a discarded section.  */
-      if (discarded)
+      if (discarded && is_elf_hash_table (&htab->root))
 	h->indx = -3;
 
-      *sym_hash = h;
-
       new_weak = (flags & BSF_WEAK) != 0;
       if (dynamic
 	  && definition
 	  && new_weak
 	  && !bed->is_function_type (ELF_ST_TYPE (isym->st_info))
-	  && is_elf_hash_table (htab)
+	  && is_elf_hash_table (&htab->root)
 	  && h->u.alias == NULL)
 	{
 	  /* Keep a list of all weak defined non function symbols from
@@ -4844,19 +5409,23 @@ error_free_dyn:
 	    h->root.u.c.p->alignment_power = old_alignment;
 	}
 
-      if (is_elf_hash_table (htab))
+      if (is_elf_hash_table (&htab->root))
 	{
 	  /* Set a flag in the hash table entry indicating the type of
 	     reference or definition we just found.  A dynamic symbol
 	     is one which is referenced or defined by both a regular
 	     object and a shared object.  */
-	  bfd_boolean dynsym = FALSE;
+	  bool dynsym = false;
 
-	  /* Plugin symbols aren't normal.  Don't set def_regular or
-	     ref_regular for them, or make them dynamic.  */
+	  /* Plugin symbols aren't normal.  Don't set def/ref flags.  */
 	  if ((abfd->flags & BFD_PLUGIN) != 0)
-	    ;
-	  else if (! dynamic)
+	    {
+	      /* Except for this flag to track nonweak references.  */
+	      if (!definition
+		  && bind != STB_WEAK)
+		h->ref_ir_nonweak = 1;
+	    }
+	  else if (!dynamic)
 	    {
 	      if (! definition)
 		{
@@ -4873,14 +5442,6 @@ error_free_dyn:
 		      h->ref_dynamic = 1;
 		    }
 		}
-
-	      /* If the indirect symbol has been forced local, don't
-		 make the real symbol dynamic.  */
-	      if ((h == hi || !hi->forced_local)
-		  && (bfd_link_dll (info)
-		      || h->def_dynamic
-		      || h->ref_dynamic))
-		dynsym = TRUE;
 	    }
 	  else
 	    {
@@ -4894,21 +5455,34 @@ error_free_dyn:
 		  h->def_dynamic = 1;
 		  hi->def_dynamic = 1;
 		}
+	    }
 
-	      /* If the indirect symbol has been forced local, don't
-		 make the real symbol dynamic.  */
-	      if ((h == hi || !hi->forced_local)
-		  && (h->def_regular
-		      || h->ref_regular
-		      || (h->is_weakalias
-			  && weakdef (h)->dynindx != -1)))
-		dynsym = TRUE;
+	  /* If an indirect symbol has been forced local, don't
+	     make the real symbol dynamic.  */
+	  if (h != hi && hi->forced_local)
+	    ;
+	  else if (!dynamic)
+	    {
+	      if (bfd_link_dll (info)
+		  || h->def_dynamic
+		  || h->ref_dynamic)
+		dynsym = true;
+	    }
+	  else
+	    {
+	      if (h->def_regular
+		  || h->ref_regular
+		  || (h->is_weakalias
+		      && weakdef (h)->dynindx != -1))
+		dynsym = true;
 	    }
 
 	  /* Check to see if we need to add an indirect symbol for
 	     the default name.  */
-	  if (definition
-	      || (!override && h->root.type == bfd_link_hash_common))
+	  if ((definition
+	       || (!override && h->root.type == bfd_link_hash_common))
+	      && !(hi != h
+		   && hi->versioned == versioned_hidden))
 	    if (!_bfd_elf_add_default_symbol (abfd, info, h, name, isym,
 					      sec, value, &old_bfd, &dynsym))
 	      goto error_free_vers;
@@ -4968,10 +5542,14 @@ error_free_dyn:
 		  else
 		    _bfd_error_handler
 		      /* xgettext:c-format */
-		      (_("warning: alignment %u of symbol `%s' in %pB"
-			 " is smaller than %u in %pB"),
+		      (_("warning: alignment %u of normal symbol `%s' in %pB"
+			 " is smaller than %u used by the common definition in %pB"),
 		       1 << normal_align, name, normal_bfd,
 		       1 << common_align, common_bfd);
+
+		  /* PR 30499: make sure that users understand that this warning is serious.  */
+		  _bfd_error_handler
+		    (_("warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."));
 		}
 	    }
 
@@ -4983,12 +5561,18 @@ error_free_dyn:
 	      if (h->size != 0
 		  && h->size != isym->st_size
 		  && ! size_change_ok)
-		_bfd_error_handler
-		  /* xgettext:c-format */
-		  (_("warning: size of symbol `%s' changed"
-		     " from %" PRIu64 " in %pB to %" PRIu64 " in %pB"),
-		   name, (uint64_t) h->size, old_bfd,
-		   (uint64_t) isym->st_size, abfd);
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("warning: size of symbol `%s' changed"
+		       " from %" PRIu64 " in %pB to %" PRIu64 " in %pB"),
+		     name, (uint64_t) h->size, old_bfd,
+		     (uint64_t) isym->st_size, abfd);
+
+		  /* PR 30499: make sure that users understand that this warning is serious.  */
+		  _bfd_error_handler
+		    (_("warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."));
+		}
 
 	      h->size = isym->st_size;
 	    }
@@ -5029,17 +5613,18 @@ error_free_dyn:
 	    }
 
 	  /* Merge st_other field.  */
-	  elf_merge_st_other (abfd, h, isym, sec, definition, dynamic);
+	  elf_merge_st_other (abfd, h, isym->st_other, sec,
+			      definition, dynamic);
 
 	  /* We don't want to make debug symbol dynamic.  */
 	  if (definition
 	      && (sec->flags & SEC_DEBUGGING)
 	      && !bfd_link_relocatable (info))
-	    dynsym = FALSE;
+	    dynsym = false;
 
 	  /* Nor should we make plugin symbols dynamic.  */
 	  if ((abfd->flags & BFD_PLUGIN) != 0)
-	    dynsym = FALSE;
+	    dynsym = false;
 
 	  if (definition)
 	    {
@@ -5047,7 +5632,14 @@ error_free_dyn:
 	      h->unique_global = (flags & BSF_GNU_UNIQUE) != 0;
 	    }
 
-	  if (definition && !dynamic)
+	  /* Don't add indirect symbols for .symver x, x@FOO aliases
+	     in IR.  Since all data or text symbols in IR have the
+	     same type, value and section, we can't tell if a symbol
+	     is an alias of another symbol by their types, values and
+	     sections.  */
+	  if (definition
+	      && !dynamic
+	      && (abfd->flags & BFD_PLUGIN) == 0)
 	    {
 	      char *p = strchr (name, ELF_VER_CHR);
 	      if (p != NULL && p[1] != ELF_VER_CHR)
@@ -5056,8 +5648,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)
@@ -5086,56 +5678,68 @@ error_free_dyn:
 	      {
 	      case STV_INTERNAL:
 	      case STV_HIDDEN:
-		(*bed->elf_backend_hide_symbol) (info, h, TRUE);
-		dynsym = FALSE;
+		(*bed->elf_backend_hide_symbol) (info, h, true);
+		dynsym = false;
 		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->root.type != bfd_link_hash_indirect)
+	    {
+	      if ((dynsym
+		   && h->ref_regular_nonweak)
+		  || (old_bfd != NULL
+		      && (old_bfd->flags & BFD_PLUGIN) != 0
+		      && h->ref_ir_nonweak
+		      && !info->lto_all_symbols_read)
 		  || (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);
+					  htab->needed, NULL)))
+		{
+		  const char *soname = elf_dt_name (abfd);
 
-	      info->callbacks->minfo ("%!", soname, old_bfd,
-				      h->root.root.string);
+		  info->callbacks->minfo ("%!", soname, old_bfd,
+					  h->root.root.string);
 
-	      /* A symbol from a library loaded via DT_NEEDED of some
-		 other library is referenced by a regular object.
-		 Add a DT_NEEDED entry for it.  Issue an error if
-		 --no-add-needed is used and the reference was not
-		 a weak one.  */
-	      if (old_bfd != NULL
-		  && (elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0)
-		{
-		  _bfd_error_handler
-		    /* xgettext:c-format */
-		    (_("%pB: undefined reference to symbol '%s'"),
-		     old_bfd, name);
-		  bfd_set_error (bfd_error_missing_dso);
-		  goto error_free_vers;
-		}
+		  /* A symbol from a library loaded via DT_NEEDED of some
+		     other library is referenced by a regular object.
+		     Add a DT_NEEDED entry for it.  Issue an error if
+		     --no-add-needed is used and the reference was not
+		     a weak one.  */
+		  if (old_bfd != NULL
+		      && (elf_dyn_lib_class (abfd) & DYN_NO_NEEDED) != 0)
+		    {
+		      _bfd_error_handler
+			/* xgettext:c-format */
+			(_("%pB: undefined reference to symbol '%s'"),
+			 old_bfd, name);
+		      bfd_set_error (bfd_error_missing_dso);
+		      goto error_free_vers;
+		    }
 
-	      elf_dyn_lib_class (abfd) = (enum dynamic_lib_link_class)
-		(elf_dyn_lib_class (abfd) & ~DYN_AS_NEEDED);
-
-	      add_needed = TRUE;
-	      ret = elf_add_dt_needed_tag (abfd, info, soname, add_needed);
-	      if (ret < 0)
-		goto error_free_vers;
+		  elf_dyn_lib_class (abfd) = (enum dynamic_lib_link_class)
+		    (elf_dyn_lib_class (abfd) & ~DYN_AS_NEEDED);
 
-	      BFD_ASSERT (ret == 0);
+		  /* Create dynamic sections for backends that require
+		     that be done before setup_gnu_properties.  */
+		  if (!_bfd_elf_link_create_dynamic_sections (abfd, info))
+		    goto error_free_vers;
+		  add_needed = true;
+		}
+	      else if (dynamic
+		       && h->root.u.def.section->owner == abfd)
+		{
+		  /* Add this symbol to first hash if this shared
+		     object has the first definition.  */
+		  elf_link_add_to_first_hash (abfd, info, name, must_copy_name);
+		  /* And if it was the default symbol version definition,
+		     also add the short name.  */
+		  if (defvername)
+		    elf_link_add_to_first_hash (abfd, info, defvername, false);
+		}
 	    }
 	}
     }
@@ -5144,7 +5748,8 @@ error_free_dyn:
       && !bfd_link_relocatable (info)
       && (abfd->flags & BFD_PLUGIN) == 0
       && !just_syms
-      && extsymcount)
+      && extsymcount != 0
+      && is_elf_hash_table (&htab->root))
     {
       int r_sym_shift;
 
@@ -5167,14 +5772,12 @@ error_free_dyn:
 	  if ((s->flags & SEC_RELOC) == 0
 	      || s->reloc_count == 0
 	      || (s->flags & SEC_EXCLUDE) != 0
-	      || ((info->strip == strip_all
-		   || info->strip == strip_debugger)
-		  && (s->flags & SEC_DEBUGGING) != 0))
+	      || (s->flags & SEC_DEBUGGING) != 0)
 	    continue;
 
-	  internal_relocs = _bfd_elf_link_read_relocs (abfd, s, NULL,
-						       NULL,
-						       info->keep_memory);
+	  internal_relocs = _bfd_elf_link_info_read_relocs
+	    (abfd, info, s, NULL, NULL,
+	     _bfd_elf_link_keep_memory (info));
 	  if (internal_relocs == NULL)
 	    goto error_free_vers;
 
@@ -5199,17 +5802,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 +5821,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,11 +5867,12 @@ error_free_dyn:
       free (old_tab);
       objalloc_free_block ((struct objalloc *) htab->root.table.memory,
 			   alloc_mark);
-      if (nondeflt_vers != NULL)
-	free (nondeflt_vers);
-      return TRUE;
+      free (nondeflt_vers);
+      return true;
     }
 
+  free (old_strtab);
+  old_strtab = NULL;
   if (old_tab != NULL)
     {
       if (!(*bed->notice_as_needed) (abfd, info, notice_needed))
@@ -5312,6 +5892,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
@@ -5328,13 +5909,13 @@ error_free_dyn:
 
 	  hi = (struct elf_link_hash_entry *)
 	       bfd_link_hash_lookup (&htab->root, shortname,
-				     FALSE, FALSE, FALSE);
+				     false, false, false);
 	  if (hi != NULL
 	      && hi->root.type == h->root.type
 	      && hi->root.u.def.value == h->root.u.def.value
 	      && hi->root.u.def.section == h->root.u.def.section)
 	    {
-	      (*bed->elf_backend_hide_symbol) (info, hi, TRUE);
+	      (*bed->elf_backend_hide_symbol) (info, hi, true);
 	      hi->root.type = bfd_link_hash_indirect;
 	      hi->root.u.i.link = (struct bfd_link_hash_entry *) h;
 	      (*bed->elf_backend_copy_indirect_symbol) (info, h, hi);
@@ -5349,9 +5930,9 @@ error_free_dyn:
 	    }
 	  free (shortname);
 	}
-      free (nondeflt_vers);
-      nondeflt_vers = NULL;
     }
+  free (nondeflt_vers);
+  nondeflt_vers = NULL;
 
   /* Now set the alias field correctly for all the weak defined
      symbols we found.  The only way to do this is to search all the
@@ -5372,13 +5953,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;
@@ -5516,13 +6096,13 @@ error_free_dyn:
 
   if (bed->check_directives
       && !(*bed->check_directives) (abfd, info))
-    return FALSE;
+    goto error_return;
 
   /* If this is a non-traditional link, try to optimize the handling
      of the .stab/.stabstr sections.  */
   if (! dynamic
       && ! info->traditional_format
-      && is_elf_hash_table (htab)
+      && is_elf_hash_table (&htab->root)
       && (info->strip != strip_all && info->strip != strip_debugger))
     {
       asection *stabstr;
@@ -5534,7 +6114,7 @@ error_free_dyn:
 	  asection *stab;
 
 	  for (stab = abfd->sections; stab; stab = stab->next)
-	    if (CONST_STRNEQ (stab->name, ".stab")
+	    if (startswith (stab->name, ".stab")
 		&& (!stab->name[5] ||
 		    (stab->name[5] == '.' && ISDIGIT (stab->name[6])))
 		&& (stab->flags & SEC_MERGE) == 0
@@ -5553,7 +6133,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,41 +6142,39 @@ 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;
+  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;
+  return false;
 }
 
 /* Return the linker hash table entry of a symbol that might be
    satisfied by an archive symbol.  Return -1 on error.  */
 
-struct elf_link_hash_entry *
+struct bfd_link_hash_entry *
 _bfd_elf_archive_symbol_lookup (bfd *abfd,
 				struct bfd_link_info *info,
 				const char *name)
 {
-  struct elf_link_hash_entry *h;
+  struct bfd_link_hash_entry *h;
   char *p, *copy;
   size_t len, first;
 
-  h = elf_link_hash_lookup (elf_hash_table (info), name, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, name, false, false, true);
   if (h != NULL)
     return h;
 
@@ -5607,26 +6185,31 @@ _bfd_elf_archive_symbol_lookup (bfd *abf
 
   p = strchr (name, ELF_VER_CHR);
   if (p == NULL || p[1] != ELF_VER_CHR)
-    return h;
+    {
+      /* Add this symbol to first hash if this archive has the first
+	 definition.  */
+      if (is_elf_hash_table (info->hash))
+	elf_link_add_to_first_hash (abfd, info, name, false);
+      return h;
+    }
 
   /* First check with only one `@'.  */
   len = strlen (name);
   copy = (char *) bfd_alloc (abfd, len);
   if (copy == NULL)
-    return (struct elf_link_hash_entry *) -1;
+    return (struct bfd_link_hash_entry *) -1;
 
   first = p - name + 1;
   memcpy (copy, name, first);
   memcpy (copy + first, name + first + 1, len - first);
 
-  h = elf_link_hash_lookup (elf_hash_table (info), copy, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, copy, false, false, true);
   if (h == NULL)
     {
       /* We also need to check references to the symbol without the
 	 version.  */
       copy[first - 1] = '\0';
-      h = elf_link_hash_lookup (elf_hash_table (info), copy,
-				FALSE, FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->hash, copy, false, false, true);
     }
 
   bfd_release (abfd, copy);
@@ -5646,25 +6229,25 @@ _bfd_elf_archive_symbol_lookup (bfd *abf
    Unfortunately, we do have to make multiple passes over the symbol
    table until nothing further is resolved.  */
 
-static bfd_boolean
+static bool
 elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   symindex c;
   unsigned char *included = NULL;
   carsym *symdefs;
-  bfd_boolean loop;
-  bfd_size_type amt;
+  bool loop;
+  size_t amt;
   const struct elf_backend_data *bed;
-  struct elf_link_hash_entry * (*archive_symbol_lookup)
+  struct bfd_link_hash_entry * (*archive_symbol_lookup)
     (bfd *, struct bfd_link_info *, const char *);
 
   if (! bfd_has_map (abfd))
     {
       /* An empty archive is a special case.  */
       if (bfd_openr_next_archived_file (abfd, NULL) == NULL)
-	return TRUE;
+	return true;
       bfd_set_error (bfd_error_no_armap);
-      return FALSE;
+      return false;
     }
 
   /* Keep track of all symbols we know to be already defined, and all
@@ -5672,12 +6255,11 @@ elf_link_add_archive_symbols (bfd *abfd,
      second and subsequent passes.  */
   c = bfd_ardata (abfd)->symdef_count;
   if (c == 0)
-    return TRUE;
-  amt = c;
-  amt *= sizeof (*included);
+    return true;
+  amt = c * sizeof (*included);
   included = (unsigned char *) bfd_zmalloc (amt);
   if (included == NULL)
-    return FALSE;
+    return false;
 
   symdefs = bfd_ardata (abfd)->symdefs;
   bed = get_elf_backend_data (abfd);
@@ -5690,14 +6272,14 @@ elf_link_add_archive_symbols (bfd *abfd,
       carsym *symdef;
       carsym *symdefend;
 
-      loop = FALSE;
+      loop = false;
       last = -1;
 
       symdef = symdefs;
       symdefend = symdef + c;
       for (i = 0; symdef < symdefend; symdef++, i++)
 	{
-	  struct elf_link_hash_entry *h;
+	  struct bfd_link_hash_entry *h;
 	  bfd *element;
 	  struct bfd_link_hash_entry *undefs_tail;
 	  symindex mark;
@@ -5706,18 +6288,45 @@ elf_link_add_archive_symbols (bfd *abfd,
 	    continue;
 	  if (symdef->file_offset == last)
 	    {
-	      included[i] = TRUE;
+	      included[i] = true;
 	      continue;
 	    }
 
 	  h = archive_symbol_lookup (abfd, info, symdef->name);
-	  if (h == (struct elf_link_hash_entry *) -1)
+	  if (h == (struct bfd_link_hash_entry *) -1)
 	    goto error_return;
 
 	  if (h == NULL)
 	    continue;
 
-	  if (h->root.type == bfd_link_hash_common)
+	  if (h->type == bfd_link_hash_undefined)
+	    {
+	      if (is_elf_hash_table (info->hash))
+		{
+		  /* 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 elf_link_hash_entry *) h)->indx == -3)
+		    continue;
+
+		  /* In the pre-LTO-plugin pass we must not mistakenly
+		     include this archive member if an earlier shared
+		     library defined this symbol.  */
+		  struct elf_link_hash_table *htab = elf_hash_table (info);
+		  if (htab->first_hash)
+		    {
+		      struct elf_link_first_hash_entry *e
+			  = ((struct elf_link_first_hash_entry *)
+			     bfd_hash_lookup (htab->first_hash, symdef->name,
+					      false, false));
+		      if (e
+			  && (e->abfd->flags & DYNAMIC) != 0
+			  && e->abfd != abfd)
+			continue;
+		    }
+		}
+	    }
+	  else if (h->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,16 +6343,36 @@ 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)
+	      if (h->type != bfd_link_hash_undefweak)
 		/* Symbol must be defined.  Don't check it again.  */
-		included[i] = TRUE;
-	      continue;
+		included[i] = true;
+
+	      if (!is_elf_hash_table (info->hash))
+		continue;
+	      struct elf_link_hash_entry *eh
+		= (struct elf_link_hash_entry *) h;
+	      /* Ignore the archive if the symbol isn't referenced by a
+		 regular object or isn't defined in a shared object.  */
+	      if (!eh->ref_regular || !eh->def_dynamic)
+		continue;
+	      /* Ignore the dynamic definition if symbol is first
+		 defined in this archive.  */
+	      struct elf_link_hash_table *htab = elf_hash_table (info);
+	      if (htab->first_hash == NULL)
+		continue;
+	      struct elf_link_first_hash_entry *e
+		= ((struct elf_link_first_hash_entry *)
+		   bfd_hash_lookup (htab->first_hash, symdef->name,
+				    false, false));
+	      if (e == NULL || e->abfd != abfd)
+		continue;
 	    }
 
 	  /* We need to include this archive member.  */
-	  element = _bfd_get_elt_at_filepos (abfd, symdef->file_offset);
+	  element = _bfd_get_elt_at_filepos (abfd, symdef->file_offset,
+					     info);
 	  if (element == NULL)
 	    goto error_return;
 
@@ -5766,14 +6395,14 @@ elf_link_add_archive_symbols (bfd *abfd,
 	     does not require another pass.  This isn't a bug, but it
 	     does make the code less efficient than it could be.  */
 	  if (undefs_tail != info->hash->undefs_tail)
-	    loop = TRUE;
+	    loop = true;
 
 	  /* Look backward to mark all symbols from this object file
 	     which we have already seen in this pass.  */
 	  mark = i;
 	  do
 	    {
-	      included[mark] = TRUE;
+	      included[mark] = true;
 	      if (mark == 0)
 		break;
 	      --mark;
@@ -5788,19 +6417,17 @@ elf_link_add_archive_symbols (bfd *abfd,
   while (loop);
 
   free (included);
-
-  return TRUE;
+  return true;
 
  error_return:
-  if (included != NULL)
-    free (included);
-  return FALSE;
+  free (included);
+  return false;
 }
 
 /* Given an ELF BFD, add symbols to the global hash table as
    appropriate.  */
 
-bfd_boolean
+bool
 bfd_elf_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   switch (bfd_get_format (abfd))
@@ -5811,20 +6438,20 @@ bfd_elf_link_add_symbols (bfd *abfd, str
       return elf_link_add_archive_symbols (abfd, info);
     default:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 }
 
 struct hash_codes_info
 {
   unsigned long *hashcodes;
-  bfd_boolean error;
+  bool error;
 };
 
 /* This function will be called though elf_link_hash_traverse to store
    all hash value of the exported symbols in an array.  */
 
-static bfd_boolean
+static bool
 elf_collect_hash_codes (struct elf_link_hash_entry *h, void *data)
 {
   struct hash_codes_info *inf = (struct hash_codes_info *) data;
@@ -5834,7 +6461,7 @@ elf_collect_hash_codes (struct elf_link_
 
   /* Ignore indirect symbols.  These are added by the versioning code.  */
   if (h->dynindx == -1)
-    return TRUE;
+    return true;
 
   name = h->root.root.string;
   if (h->versioned >= versioned)
@@ -5845,8 +6472,8 @@ elf_collect_hash_codes (struct elf_link_
 	  alc = (char *) bfd_malloc (p - name + 1);
 	  if (alc == NULL)
 	    {
-	      inf->error = TRUE;
-	      return FALSE;
+	      inf->error = true;
+	      return false;
 	    }
 	  memcpy (alc, name, p - name);
 	  alc[p - name] = '\0';
@@ -5864,10 +6491,8 @@ elf_collect_hash_codes (struct elf_link_
      later.  */
   h->u.elf_hash_value = ha;
 
-  if (alc != NULL)
-    free (alc);
-
-  return TRUE;
+  free (alc);
+  return true;
 }
 
 struct collect_gnu_hash_codes
@@ -5889,13 +6514,13 @@ struct collect_gnu_hash_codes
   long int local_indx;
   long int shift1, shift2;
   unsigned long int mask;
-  bfd_boolean error;
+  bool error;
 };
 
 /* This function will be called though elf_link_hash_traverse to store
    all hash value of the exported symbols in an array.  */
 
-static bfd_boolean
+static bool
 elf_collect_gnu_hash_codes (struct elf_link_hash_entry *h, void *data)
 {
   struct collect_gnu_hash_codes *s = (struct collect_gnu_hash_codes *) data;
@@ -5905,11 +6530,11 @@ elf_collect_gnu_hash_codes (struct elf_l
 
   /* Ignore indirect symbols.  These are added by the versioning code.  */
   if (h->dynindx == -1)
-    return TRUE;
+    return true;
 
   /* Ignore also local symbols and undefined symbols.  */
   if (! (*s->bed->elf_hash_symbol) (h))
-    return TRUE;
+    return true;
 
   name = h->root.root.string;
   if (h->versioned >= versioned)
@@ -5920,8 +6545,8 @@ elf_collect_gnu_hash_codes (struct elf_l
 	  alc = (char *) bfd_malloc (p - name + 1);
 	  if (alc == NULL)
 	    {
-	      s->error = TRUE;
-	      return FALSE;
+	      s->error = true;
+	      return false;
 	    }
 	  memcpy (alc, name, p - name);
 	  alc[p - name] = '\0';
@@ -5940,10 +6565,8 @@ 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);
-
-  return TRUE;
+  free (alc);
+  return true;
 }
 
 /* This function will be called though elf_link_hash_traverse to do
@@ -5951,7 +6574,7 @@ elf_collect_gnu_hash_codes (struct elf_l
    If using .MIPS.xhash, invoke record_xhash_symbol to add symbol index
    to the translation table.  */
 
-static bfd_boolean
+static bool
 elf_gnu_hash_process_symidx (struct elf_link_hash_entry *h, void *data)
 {
   struct collect_gnu_hash_codes *s = (struct collect_gnu_hash_codes *) data;
@@ -5960,7 +6583,7 @@ elf_gnu_hash_process_symidx (struct elf_
 
   /* Ignore indirect symbols.  */
   if (h->dynindx == -1)
-    return TRUE;
+    return true;
 
   /* Ignore also local symbols and undefined symbols.  */
   if (! (*s->bed->elf_hash_symbol) (h))
@@ -5975,7 +6598,7 @@ elf_gnu_hash_process_symidx (struct elf_
 	  else
 	    h->dynindx = s->local_indx++;
 	}
-      return TRUE;
+      return true;
     }
 
   bucket = s->hashval[h->dynindx] % s->bucketcount;
@@ -5999,12 +6622,12 @@ elf_gnu_hash_process_symidx (struct elf_
     }
   else
     h->dynindx = s->indx[bucket]++;
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if symbol should be hashed in the `.gnu.hash' section.  */
 
-bfd_boolean
+bool
 _bfd_elf_hash_symbol (struct elf_link_hash_entry *h)
 {
   return !(h->forced_local
@@ -6044,15 +6667,11 @@ compute_bucket_count (struct bfd_link_in
   size_t best_size = 0;
   unsigned long int i;
 
-  /* We have a problem here.  The following code to optimize the table
-     size requires an integer type with more the 32 bits.  If
-     BFD_HOST_U_64_BIT is set we know about such a type.  */
-#ifdef BFD_HOST_U_64_BIT
   if (info->optimize)
     {
       size_t minsize;
       size_t maxsize;
-      BFD_HOST_U_64_BIT best_chlen = ~((BFD_HOST_U_64_BIT) 0);
+      uint64_t best_chlen = ~((uint64_t) 0);
       bfd *dynobj = elf_hash_table (info)->dynobj;
       size_t dynsymcount = elf_hash_table (info)->dynsymcount;
       const struct elf_backend_data *bed = get_elf_backend_data (dynobj);
@@ -6089,7 +6708,7 @@ compute_bucket_count (struct bfd_link_in
       for (i = minsize; i < maxsize; ++i)
 	{
 	  /* Walk through the array of hashcodes and count the collisions.  */
-	  BFD_HOST_U_64_BIT max;
+	  uint64_t max;
 	  unsigned long int j;
 	  unsigned long int fact;
 
@@ -6154,11 +6773,7 @@ compute_bucket_count (struct bfd_link_in
       free (counts);
     }
   else
-#endif /* defined (BFD_HOST_U_64_BIT) */
     {
-      /* This is the fallback solution if no 64bit type is available or if we
-	 are not supposed to spend much time on optimizations.  We select the
-	 bucket count using a fixed set of numbers.  */
       for (i = 0; elf_buckets[i] != 0; i++)
 	{
 	  best_size = elf_buckets[i];
@@ -6174,7 +6789,7 @@ compute_bucket_count (struct bfd_link_in
 
 /* Size any SHT_GROUP section for ld -r.  */
 
-bfd_boolean
+bool
 _bfd_elf_size_group_sections (struct bfd_link_info *info)
 {
   bfd *ibfd;
@@ -6185,15 +6800,15 @@ _bfd_elf_size_group_sections (struct bfd
 	&& (s = ibfd->sections) != NULL
 	&& s->sec_info_type != SEC_INFO_TYPE_JUST_SYMS
 	&& !_bfd_elf_fixup_group_sections (ibfd, bfd_abs_section_ptr))
-      return FALSE;
-  return TRUE;
+      return false;
+  return true;
 }
 
 /* Set a default stack segment size.  The value in INFO wins.  If it
    is unset, LEGACY_SYMBOL's value is used, and if that symbol is
    undefined it is initialized.  */
 
-bfd_boolean
+bool
 bfd_elf_stack_segment_size (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    const char *legacy_symbol,
@@ -6204,7 +6819,7 @@ bfd_elf_stack_segment_size (bfd *output_
   /* Look for legacy symbol.  */
   if (legacy_symbol)
     h = elf_link_hash_lookup (elf_hash_table (info), legacy_symbol,
-			      FALSE, FALSE, FALSE);
+			      false, false, false);
   if (h && (h->root.type == bfd_link_hash_defined
 	    || h->root.type == bfd_link_hash_defweak)
       && h->def_regular
@@ -6239,15 +6854,15 @@ bfd_elf_stack_segment_size (bfd *output_
 	    (info, output_bfd, legacy_symbol,
 	     BSF_GLOBAL, bfd_abs_section_ptr,
 	     info->stacksize >= 0 ? info->stacksize : 0,
-	     NULL, FALSE, get_elf_backend_data (output_bfd)->collect, &bh)))
-	return FALSE;
+	     NULL, false, get_elf_backend_data (output_bfd)->collect, &bh)))
+	return false;
 
       h = (struct elf_link_hash_entry *) bh;
       h->def_regular = 1;
       h->type = STT_OBJECT;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Sweep symbols in swept sections.  Called via elf_link_hash_traverse.  */
@@ -6256,10 +6871,10 @@ struct elf_gc_sweep_symbol_info
 {
   struct bfd_link_info *info;
   void (*hide_symbol) (struct bfd_link_info *, struct elf_link_hash_entry *,
-		       bfd_boolean);
+		       bool);
 };
 
-static bfd_boolean
+static bool
 elf_gc_sweep_symbol (struct elf_link_hash_entry *h, void *data)
 {
   if (!h->mark
@@ -6273,13 +6888,13 @@ elf_gc_sweep_symbol (struct elf_link_has
       struct elf_gc_sweep_symbol_info *inf;
 
       inf = (struct elf_gc_sweep_symbol_info *) data;
-      (*inf->hide_symbol) (inf->info, h, TRUE);
+      (*inf->hide_symbol) (inf->info, h, true);
       h->def_regular = 0;
       h->ref_regular = 0;
       h->ref_regular_nonweak = 0;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set up the sizes and contents of the ELF dynamic sections.  This is
@@ -6287,7 +6902,7 @@ elf_gc_sweep_symbol (struct elf_link_has
    must set the sizes of the sections before the linker sets the
    addresses of the various sections.  */
 
-bfd_boolean
+bool
 bfd_elf_size_dynamic_sections (bfd *output_bfd,
 			       const char *soname,
 			       const char *rpath,
@@ -6304,7 +6919,22 @@ bfd_elf_size_dynamic_sections (bfd *outp
   *sinterpptr = NULL;
 
   if (!is_elf_hash_table (info->hash))
-    return TRUE;
+    return true;
+
+  /* Any syms created from now on start with -1 in
+     got.refcount/offset and plt.refcount/offset.  */
+  elf_hash_table (info)->init_got_refcount
+    = elf_hash_table (info)->init_got_offset;
+  elf_hash_table (info)->init_plt_refcount
+    = elf_hash_table (info)->init_plt_offset;
+
+  bed = get_elf_backend_data (output_bfd);
+
+  /* The backend may have to create some sections regardless of whether
+     we're dynamic or not.  */
+  if (bed->elf_backend_early_size_sections
+      && !bed->elf_backend_early_size_sections (output_bfd, info))
+    return false;
 
   dynobj = elf_hash_table (info)->dynobj;
 
@@ -6325,21 +6955,21 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  struct elf_info_failed eif;
 
 	  eif.info = info;
-	  eif.failed = FALSE;
+	  eif.failed = false;
 	  elf_link_hash_traverse (elf_hash_table (info),
 				  _bfd_elf_export_symbol,
 				  &eif);
 	  if (eif.failed)
-	    return FALSE;
+	    return false;
 	}
 
       if (soname != NULL)
 	{
 	  soname_indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
-					     soname, TRUE);
+					     soname, true);
 	  if (soname_indx == (size_t) -1
 	      || !_bfd_elf_add_dynamic_entry (info, DT_SONAME, soname_indx))
-	    return FALSE;
+	    return false;
 	}
       else
 	soname_indx = (size_t) -1;
@@ -6363,7 +6993,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
 
 	      newname = (char *) bfd_malloc (newlen);
 	      if (newname == NULL)
-		return FALSE;
+		return false;
 	      newname[0] = leading_char;
 	      memcpy (newname + (leading_char != '\0'), name, namelen);
 
@@ -6372,8 +7002,8 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	      *p++ = ELF_VER_CHR;
 	      memcpy (p, verstr, verlen + 1);
 	      newh = elf_link_hash_lookup (elf_hash_table (info),
-					   newname, FALSE, FALSE,
-					   FALSE);
+					   newname, false, false,
+					   false);
 	      if (newh == NULL
 		  || (newh->root.type != bfd_link_hash_defined
 		      && newh->root.type != bfd_link_hash_defweak))
@@ -6382,8 +7012,8 @@ bfd_elf_size_dynamic_sections (bfd *outp
 		  *p++ = ELF_VER_CHR;
 		  memcpy (p, verstr, verlen + 1);
 		  newh = elf_link_hash_lookup (elf_hash_table (info),
-					       newname, FALSE, FALSE,
-					       FALSE);
+					       newname, false, false,
+					       false);
 		}
 	      free (newname);
 
@@ -6398,18 +7028,18 @@ bfd_elf_size_dynamic_sections (bfd *outp
 
       /* Attach all the symbols to their version information.  */
       asvinfo.info = info;
-      asvinfo.failed = FALSE;
+      asvinfo.failed = false;
 
       elf_link_hash_traverse (elf_hash_table (info),
 			      _bfd_elf_link_assign_sym_version,
 			      &asvinfo);
       if (asvinfo.failed)
-	return FALSE;
+	return false;
 
       if (!info->allow_undefined_version)
 	{
 	  /* Check if all global versions have a definition.  */
-	  bfd_boolean all_defined = TRUE;
+	  bool all_defined = true;
 	  for (t = info->version_info; t != NULL; t = t->next)
 	    for (d = t->globals.list; d != NULL; d = d->next)
 	      if (d->literal && !d->symver && !d->script)
@@ -6417,13 +7047,13 @@ bfd_elf_size_dynamic_sections (bfd *outp
 		  _bfd_error_handler
 		    (_("%s: undefined version: %s"),
 		     d->pattern, t->name);
-		  all_defined = FALSE;
+		  all_defined = false;
 		}
 
 	  if (!all_defined)
 	    {
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -6486,7 +7116,8 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  s->size = size;
 	  s->contents = (unsigned char *) bfd_alloc (output_bfd, s->size);
 	  if (s->contents == NULL && s->size != 0)
-	    return FALSE;
+	    return false;
+	  s->alloced = 1;
 
 	  /* Fill in the version definition section.  */
 
@@ -6520,12 +7151,12 @@ 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);
+					  name, false);
 	      if (indx == (size_t) -1)
-		return FALSE;
+		return false;
 	      defaux.vda_name = indx;
 	    }
 	  defaux.vda_next = 0;
@@ -6539,9 +7170,9 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	      bh = NULL;
 	      if (! (_bfd_generic_link_add_one_symbol
 		     (info, dynobj, name, BSF_GLOBAL, bfd_abs_section_ptr,
-		      0, NULL, FALSE,
+		      0, NULL, false,
 		      get_elf_backend_data (dynobj)->collect, &bh)))
-		return FALSE;
+		return false;
 	      h = (struct elf_link_hash_entry *) bh;
 	      h->non_elf = 0;
 	      h->def_regular = 1;
@@ -6549,7 +7180,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	      h->verinfo.vertree = NULL;
 
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 
 	      /* Create a duplicate of the base version with the same
 		 aux block, but different flags.  */
@@ -6586,9 +7217,9 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	      bh = NULL;
 	      if (! (_bfd_generic_link_add_one_symbol
 		     (info, dynobj, t->name, BSF_GLOBAL, bfd_abs_section_ptr,
-		      0, NULL, FALSE,
+		      0, NULL, false,
 		      get_elf_backend_data (dynobj)->collect, &bh)))
-		return FALSE;
+		return false;
 	      h = (struct elf_link_hash_entry *) bh;
 	      h->non_elf = 0;
 	      h->def_regular = 1;
@@ -6596,7 +7227,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	      h->verinfo.vertree = t;
 
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 
 	      def.vd_version = VER_DEF_CURRENT;
 	      def.vd_flags = 0;
@@ -6664,8 +7295,6 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	}
     }
 
-  bed = get_elf_backend_data (output_bfd);
-
   if (info->gc_sections && bed->can_gc_sections)
     {
       struct elf_gc_sweep_symbol_info sweep_info;
@@ -6692,13 +7321,17 @@ bfd_elf_size_dynamic_sections (bfd *outp
       sinfo.vers = elf_tdata (output_bfd)->cverdefs;
       if (sinfo.vers == 0)
 	sinfo.vers = 1;
-      sinfo.failed = FALSE;
+      sinfo.failed = false;
 
       elf_link_hash_traverse (elf_hash_table (info),
 			      _bfd_elf_link_find_version_dependencies,
 			      &sinfo);
       if (sinfo.failed)
-	return FALSE;
+	return false;
+
+      bed->elf_backend_add_glibc_version_dependency (&sinfo);
+      if (sinfo.failed)
+	return false;
 
       if (elf_tdata (output_bfd)->verref == NULL)
 	s->flags |= SEC_EXCLUDE;
@@ -6727,7 +7360,8 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  s->size = size;
 	  s->contents = (unsigned char *) bfd_alloc (output_bfd, s->size);
 	  if (s->contents == NULL)
-	    return FALSE;
+	    return false;
+	  s->alloced = 1;
 
 	  p = s->contents;
 	  for (vn = elf_tdata (output_bfd)->verref;
@@ -6747,10 +7381,11 @@ 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),
-					  FALSE);
+					  : lbasename (bfd_get_filename
+						       (vn->vn_bfd)),
+					  false);
 	      if (indx == (size_t) -1)
-		return FALSE;
+		return false;
 	      vn->vn_file = indx;
 	      vn->vn_aux = sizeof (Elf_External_Verneed);
 	      if (vn->vn_nextref == NULL)
@@ -6767,9 +7402,9 @@ bfd_elf_size_dynamic_sections (bfd *outp
 		{
 		  a->vna_hash = bfd_elf_hash (a->vna_nodename);
 		  indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
-					      a->vna_nodename, FALSE);
+					      a->vna_nodename, false);
 		  if (indx == (size_t) -1)
-		    return FALSE;
+		    return false;
 		  a->vna_name = indx;
 		  if (a->vna_nextptr == NULL)
 		    a->vna_next = 0;
@@ -6786,33 +7421,41 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	}
     }
 
-  /* Any syms created from now on start with -1 in
-     got.refcount/offset and plt.refcount/offset.  */
-  elf_hash_table (info)->init_got_refcount
-    = elf_hash_table (info)->init_got_offset;
-  elf_hash_table (info)->init_plt_refcount
-    = elf_hash_table (info)->init_plt_offset;
-
   if (bfd_link_relocatable (info)
       && !_bfd_elf_size_group_sections (info))
-    return FALSE;
-
-  /* The backend may have to create some sections regardless of whether
-     we're dynamic or not.  */
-  if (bed->elf_backend_always_size_sections
-      && ! (*bed->elf_backend_always_size_sections) (output_bfd, info))
-    return FALSE;
+    return false;
 
   /* Determine any GNU_STACK segment requirements, after the backend
      has had a chance to set a default segment size.  */
   if (info->execstack)
-    elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X;
+    {
+      /* If the user has explicitly requested warnings, then generate one even
+	 though the choice is the result of another command line option.  */
+      if (info->warn_execstack == 1)
+	{
+	  if (info->error_execstack)
+	    {
+	      _bfd_error_handler
+		(_("\
+error: creating an executable stack because of -z execstack command line option"));
+	      return false;
+	    }
+
+	  _bfd_error_handler
+	    (_("\
+warning: enabling an executable stack because of -z execstack command line option"));
+	}
+
+      elf_stack_flags (output_bfd) = PF_R | PF_W | PF_X;
+    }
   else if (info->noexecstack)
     elf_stack_flags (output_bfd) = PF_R | PF_W;
   else
     {
       bfd *inputobj;
       asection *notesec = NULL;
+      bfd *noteobj = NULL;
+      bfd *emptyobj = NULL;
       int exec = 0;
 
       for (inputobj = info->input_bfds;
@@ -6831,15 +7474,67 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  s = bfd_get_section_by_name (inputobj, ".note.GNU-stack");
 	  if (s)
 	    {
-	      if (s->flags & SEC_CODE)
-		exec = PF_X;
 	      notesec = s;
+	      if (s->flags & SEC_CODE)
+		{
+		  noteobj = inputobj;
+		  exec = PF_X;
+		  /* There is no point in scanning the remaining bfds.  */
+		  break;
+		}
+	    }
+	  else if (bed->default_execstack && info->default_execstack)
+	    {
+	      exec = PF_X;
+	      emptyobj = inputobj;
 	    }
-	  else if (bed->default_execstack)
-	    exec = PF_X;
 	}
+
       if (notesec || info->stacksize > 0)
-	elf_stack_flags (output_bfd) = PF_R | PF_W | exec;
+	{
+	  if (exec)
+	    {
+	      if (info->warn_execstack != 0)
+		{
+		  /* PR 29072: Because an executable stack is a serious
+		     security risk, make sure that the user knows that it is
+		     being enabled despite the fact that it was not requested
+		     on the command line.  */
+		  if (noteobj)
+		    {
+		      if (info->error_execstack)
+			{
+			  _bfd_error_handler (_("\
+error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"),
+					      bfd_get_filename (noteobj));
+			  return false;
+			}
+
+		      _bfd_error_handler (_("\
+warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"),
+		       bfd_get_filename (noteobj));
+		    }
+		  else if (emptyobj)
+		    {
+		      if (info->error_execstack)
+			{
+			  _bfd_error_handler (_("\
+error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"),
+					      bfd_get_filename (emptyobj));
+			  return false;
+			}
+
+		      _bfd_error_handler (_("\
+warning: %s: missing .note.GNU-stack section implies executable stack"),
+					  bfd_get_filename (emptyobj));
+		      _bfd_error_handler (_("\
+NOTE: This behaviour is deprecated and will be removed in a future version of the linker"));
+		    }
+		}
+	    }
+	  elf_stack_flags (output_bfd) = PF_R | PF_W | exec;
+	}
+
       if (notesec && exec && bfd_link_relocatable (info)
 	  && notesec->output_section != bfd_abs_section_ptr)
 	notesec->output_section->flags |= SEC_CODE;
@@ -6858,7 +7553,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
       if (info->symbolic)
 	{
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_SYMBOLIC, 0))
-	    return FALSE;
+	    return false;
 	  info->flags |= DF_SYMBOLIC;
 	}
 
@@ -6868,13 +7563,13 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  bfd_vma tag;
 
 	  indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, rpath,
-				      TRUE);
+				      true);
 	  if (indx == (size_t) -1)
-	    return FALSE;
+	    return false;
 
 	  tag = info->new_dtags ? DT_RUNPATH : DT_RPATH;
 	  if (!_bfd_elf_add_dynamic_entry (info, tag, indx))
-	    return FALSE;
+	    return false;
 	}
 
       if (filter_shlib != NULL)
@@ -6882,10 +7577,10 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  size_t indx;
 
 	  indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
-				      filter_shlib, TRUE);
+				      filter_shlib, true);
 	  if (indx == (size_t) -1
 	      || !_bfd_elf_add_dynamic_entry (info, DT_FILTER, indx))
-	    return FALSE;
+	    return false;
 	}
 
       if (auxiliary_filters != NULL)
@@ -6897,10 +7592,10 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	      size_t indx;
 
 	      indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr,
-					  *p, TRUE);
+					  *p, true);
 	      if (indx == (size_t) -1
 		  || !_bfd_elf_add_dynamic_entry (info, DT_AUXILIARY, indx))
-		return FALSE;
+		return false;
 	    }
 	}
 
@@ -6909,10 +7604,10 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  size_t indx;
 
 	  indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, audit,
-				      TRUE);
+				      true);
 	  if (indx == (size_t) -1
 	      || !_bfd_elf_add_dynamic_entry (info, DT_AUDIT, indx))
-	    return FALSE;
+	    return false;
 	}
 
       if (depaudit != NULL)
@@ -6920,14 +7615,14 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  size_t indx;
 
 	  indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, depaudit,
-				      TRUE);
+				      true);
 	  if (indx == (size_t) -1
 	      || !_bfd_elf_add_dynamic_entry (info, DT_DEPAUDIT, indx))
-	    return FALSE;
+	    return false;
 	}
 
       eif.info = info;
-      eif.failed = FALSE;
+      eif.failed = false;
 
       /* Find all symbols which were defined in a dynamic object and make
 	 the backend pick a reasonable value for them.  */
@@ -6935,7 +7630,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
 			      _bfd_elf_adjust_dynamic_symbol,
 			      &eif);
       if (eif.failed)
-	return FALSE;
+	return false;
 
       /* Add some entries to the .dynamic section.  We fill in some of the
 	 values later, in bfd_elf_final_link, but we must add the entries
@@ -6945,27 +7640,27 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	 call then add the corresponding DT_INIT/DT_FINI entries.  */
       h = (info->init_function
 	   ? elf_link_hash_lookup (elf_hash_table (info),
-				   info->init_function, FALSE,
-				   FALSE, FALSE)
+				   info->init_function, false,
+				   false, false)
 	   : NULL);
       if (h != NULL
 	  && (h->ref_regular
 	      || h->def_regular))
 	{
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_INIT, 0))
-	    return FALSE;
+	    return false;
 	}
       h = (info->fini_function
 	   ? elf_link_hash_lookup (elf_hash_table (info),
-				   info->fini_function, FALSE,
-				   FALSE, FALSE)
+				   info->fini_function, false,
+				   false, false)
 	   : NULL);
       if (h != NULL
 	  && (h->ref_regular
 	      || h->def_regular))
 	{
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_FINI, 0))
-	    return FALSE;
+	    return false;
 	}
 
       s = bfd_get_section_by_name (output_bfd, ".preinit_array");
@@ -6992,26 +7687,26 @@ bfd_elf_size_dynamic_sections (bfd *outp
 		      }
 
 	      bfd_set_error (bfd_error_nonrepresentable_section);
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_PREINIT_ARRAY, 0)
 	      || !_bfd_elf_add_dynamic_entry (info, DT_PREINIT_ARRAYSZ, 0))
-	    return FALSE;
+	    return false;
 	}
       s = bfd_get_section_by_name (output_bfd, ".init_array");
       if (s != NULL && s->linker_has_input)
 	{
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_INIT_ARRAY, 0)
 	      || !_bfd_elf_add_dynamic_entry (info, DT_INIT_ARRAYSZ, 0))
-	    return FALSE;
+	    return false;
 	}
       s = bfd_get_section_by_name (output_bfd, ".fini_array");
       if (s != NULL && s->linker_has_input)
 	{
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_FINI_ARRAY, 0)
 	      || !_bfd_elf_add_dynamic_entry (info, DT_FINI_ARRAYSZ, 0))
-	    return FALSE;
+	    return false;
 	}
 
       dynstr = bfd_get_linker_section (dynobj, ".dynstr");
@@ -7033,20 +7728,22 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	      || !_bfd_elf_add_dynamic_entry (info, DT_SYMTAB, 0)
 	      || !_bfd_elf_add_dynamic_entry (info, DT_STRSZ, strsize)
 	      || !_bfd_elf_add_dynamic_entry (info, DT_SYMENT,
-					      bed->s->sizeof_sym))
-	    return FALSE;
+					      bed->s->sizeof_sym)
+	      || (info->gnu_flags_1
+		  && !_bfd_elf_add_dynamic_entry (info, DT_GNU_FLAGS_1,
+						  info->gnu_flags_1)))
+	    return false;
 	}
     }
 
   if (! _bfd_elf_maybe_strip_eh_frame_hdr (info))
-    return FALSE;
+    return false;
 
   /* The backend must work out the sizes of all the other dynamic
      sections.  */
-  if (dynobj != NULL
-      && bed->elf_backend_size_dynamic_sections != NULL
-      && ! (*bed->elf_backend_size_dynamic_sections) (output_bfd, info))
-    return FALSE;
+  if (bed->elf_backend_late_size_sections != NULL
+      && !bed->elf_backend_late_size_sections (output_bfd, info))
+    return false;
 
   if (dynobj != NULL && elf_hash_table (info)->dynamic_sections_created)
     {
@@ -7056,18 +7753,18 @@ bfd_elf_size_dynamic_sections (bfd *outp
 
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_VERDEF, 0)
 	      || !_bfd_elf_add_dynamic_entry (info, DT_VERDEFNUM, crefs))
-	    return FALSE;
+	    return false;
 	}
 
       if ((info->new_dtags && info->flags) || (info->flags & DF_STATIC_TLS))
 	{
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_FLAGS, info->flags))
-	    return FALSE;
+	    return false;
 	}
       else if (info->flags & DF_BIND_NOW)
 	{
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_BIND_NOW, 0))
-	    return FALSE;
+	    return false;
 	}
 
       if (info->flags_1)
@@ -7077,7 +7774,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
 				| DF_1_NODELETE
 				| DF_1_NOOPEN);
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_FLAGS_1, info->flags_1))
-	    return FALSE;
+	    return false;
 	}
 
       if (elf_tdata (output_bfd)->cverrefs)
@@ -7086,7 +7783,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
 
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_VERNEED, 0)
 	      || !_bfd_elf_add_dynamic_entry (info, DT_VERNEEDNUM, crefs))
-	    return FALSE;
+	    return false;
 	}
 
       if ((elf_tdata (output_bfd)->cverrefs == 0
@@ -7099,7 +7796,7 @@ bfd_elf_size_dynamic_sections (bfd *outp
 	  s->flags |= SEC_EXCLUDE;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Find the first non-excluded output section.  We'll use its
@@ -7156,7 +7853,7 @@ _bfd_elf_init_2_index_sections (bfd *out
 #define GNU_HASH_SECTION_NAME(bed)			    \
   (bed)->record_xhash_symbol != NULL ? ".MIPS.xhash" : ".gnu.hash"
 
-bfd_boolean
+bool
 bfd_elf_size_dynsym_hash_dynstr (bfd *output_bfd, struct bfd_link_info *info)
 {
   const struct elf_backend_data *bed;
@@ -7164,7 +7861,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
   bfd_size_type dynsymcount = 0;
 
   if (!is_elf_hash_table (info->hash))
-    return TRUE;
+    return true;
 
   bed = get_elf_backend_data (output_bfd);
   (*bed->elf_backend_init_index_section) (output_bfd, info);
@@ -7201,10 +7898,11 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	  s->size = dynsymcount * sizeof (Elf_External_Versym);
 	  s->contents = (unsigned char *) bfd_zalloc (output_bfd, s->size);
 	  if (s->contents == NULL)
-	    return FALSE;
+	    return false;
+	  s->alloced = 1;
 
 	  if (!_bfd_elf_add_dynamic_entry (info, DT_VERSYM, 0))
-	    return FALSE;
+	    return false;
 	}
 
       /* Set the size of the .dynsym and .hash sections.  We counted
@@ -7219,7 +7917,8 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 
       s->contents = (unsigned char *) bfd_alloc (output_bfd, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
 
       /* The first entry in .dynsym is a dummy symbol.  Clear all the
 	 section syms, in case we don't output them all.  */
@@ -7245,9 +7944,9 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	  amt = dynsymcount * sizeof (unsigned long int);
 	  hashcodes = (unsigned long int *) bfd_malloc (amt);
 	  if (hashcodes == NULL)
-	    return FALSE;
+	    return false;
 	  hashinf.hashcodes = hashcodes;
-	  hashinf.error = FALSE;
+	  hashinf.error = false;
 
 	  /* Put all hash values in HASHCODES.  */
 	  elf_link_hash_traverse (elf_hash_table (info),
@@ -7255,7 +7954,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	  if (hashinf.error)
 	    {
 	      free (hashcodes);
-	      return FALSE;
+	      return false;
 	    }
 
 	  nsyms = hashinf.hashcodes - hashcodes;
@@ -7264,7 +7963,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	  free (hashcodes);
 
 	  if (bucketcount == 0 && nsyms > 0)
-	    return FALSE;
+	    return false;
 
 	  elf_hash_table (info)->bucketcount = bucketcount;
 
@@ -7274,7 +7973,8 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	  s->size = ((2 + bucketcount + dynsymcount) * hash_entry_size);
 	  s->contents = (unsigned char *) bfd_zalloc (output_bfd, s->size);
 	  if (s->contents == NULL)
-	    return FALSE;
+	    return false;
+	  s->alloced = 1;
 
 	  bfd_put (8 * hash_entry_size, output_bfd, bucketcount, s->contents);
 	  bfd_put (8 * hash_entry_size, output_bfd, dynsymcount,
@@ -7297,7 +7997,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	  amt = dynsymcount * 2 * sizeof (unsigned long int);
 	  cinfo.hashcodes = (long unsigned int *) bfd_malloc (amt);
 	  if (cinfo.hashcodes == NULL)
-	    return FALSE;
+	    return false;
 
 	  cinfo.hashval = cinfo.hashcodes + dynsymcount;
 	  cinfo.min_dynindx = -1;
@@ -7310,7 +8010,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	  if (cinfo.error)
 	    {
 	      free (cinfo.hashcodes);
-	      return FALSE;
+	      return false;
 	    }
 
 	  bucketcount
@@ -7319,7 +8019,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	  if (bucketcount == 0)
 	    {
 	      free (cinfo.hashcodes);
-	      return FALSE;
+	      return false;
 	    }
 
 	  s = bfd_get_linker_section (dynobj, GNU_HASH_SECTION_NAME (bed));
@@ -7333,8 +8033,9 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	      s->size = 5 * 4 + bed->s->arch_size / 8;
 	      contents = (unsigned char *) bfd_zalloc (output_bfd, s->size);
 	      if (contents == NULL)
-		return FALSE;
+		return false;
 	      s->contents = contents;
+	      s->alloced = 1;
 	      /* 1 empty bucket.  */
 	      bfd_put_32 (output_bfd, 1, contents);
 	      /* SYMIDX above the special symbol 0.  */
@@ -7382,7 +8083,7 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 	      if (cinfo.bitmask == NULL)
 		{
 		  free (cinfo.hashcodes);
-		  return FALSE;
+		  return false;
 		}
 
 	      cinfo.counts = (long unsigned int *) (cinfo.bitmask + maskwords);
@@ -7414,10 +8115,11 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 		{
 		  free (cinfo.bitmask);
 		  free (cinfo.hashcodes);
-		  return FALSE;
+		  return false;
 		}
 
 	      s->contents = contents;
+	      s->alloced = 1;
 	      bfd_put_32 (output_bfd, bucketcount, contents);
 	      bfd_put_32 (output_bfd, cinfo.symindx, contents + 4);
 	      bfd_put_32 (output_bfd, maskwords, contents + 8);
@@ -7463,10 +8165,10 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *ou
 
       for (dtagcount = 0; dtagcount <= info->spare_dynamic_tags; ++dtagcount)
 	if (!_bfd_elf_add_dynamic_entry (info, DT_NULL, 0))
-	  return FALSE;
+	  return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Make sure sec_info_type is cleared if sec_info is cleared too.  */
@@ -7481,14 +8183,14 @@ merge_sections_remove_hook (bfd *abfd AT
 
 /* Finish SHF_MERGE section merging.  */
 
-bfd_boolean
+bool
 _bfd_elf_merge_sections (bfd *obfd, struct bfd_link_info *info)
 {
   bfd *ibfd;
   asection *sec;
 
-  if (!is_elf_hash_table (info->hash))
-    return FALSE;
+  if (ENABLE_CHECKING && !is_elf_hash_table (info->hash))
+    abort ();
 
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
     if ((ibfd->flags & DYNAMIC) == 0
@@ -7505,15 +8207,15 @@ _bfd_elf_merge_sections (bfd *obfd, stru
 	    if (! _bfd_add_merge_section (obfd,
 					  &elf_hash_table (info)->merge_info,
 					  sec, &secdata->sec_info))
-	      return FALSE;
+	      return false;
 	    else if (secdata->sec_info)
 	      sec->sec_info_type = SEC_INFO_TYPE_MERGE;
 	  }
 
   if (elf_hash_table (info)->merge_info != NULL)
-    _bfd_merge_sections (obfd, info, elf_hash_table (info)->merge_info,
-			 merge_sections_remove_hook);
-  return TRUE;
+    return _bfd_merge_sections (obfd, info, elf_hash_table (info)->merge_info,
+				merge_sections_remove_hook);
+  return true;
 }
 
 /* Create an entry in an ELF linker hash table.  */
@@ -7567,6 +8269,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.  */
 
@@ -7614,7 +8347,7 @@ _bfd_elf_link_hash_copy_indirect (struct
 void
 _bfd_elf_link_hash_hide_symbol (struct bfd_link_info *info,
 				struct elf_link_hash_entry *h,
-				bfd_boolean force_local)
+				bool force_local)
 {
   /* STT_GNU_IFUNC symbol must go through PLT.  */
   if (h->type != STT_GNU_IFUNC)
@@ -7648,7 +8381,7 @@ _bfd_elf_link_hide_symbol (bfd *output_b
 	= get_elf_backend_data (output_bfd);
       struct elf_link_hash_entry *eh
 	= (struct elf_link_hash_entry *) h;
-      bed->elf_backend_hide_symbol (info, eh, TRUE);
+      bed->elf_backend_hide_symbol (info, eh, true);
       eh->def_dynamic = 0;
       eh->ref_dynamic = 0;
       eh->dynamic_def = 0;
@@ -7658,18 +8391,18 @@ _bfd_elf_link_hide_symbol (bfd *output_b
 /* Initialize an ELF linker hash table.  *TABLE has been zeroed by our
    caller.  */
 
-bfd_boolean
+bool
 _bfd_elf_link_hash_table_init
   (struct elf_link_hash_table *table,
    bfd *abfd,
    struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
 				      struct bfd_hash_table *,
 				      const char *),
-   unsigned int entsize,
-   enum elf_target_id target_id)
+   unsigned int entsize)
 {
-  bfd_boolean ret;
-  int can_refcount = get_elf_backend_data (abfd)->can_refcount;
+  bool ret;
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  int can_refcount = bed->can_refcount;
 
   table->init_got_refcount.refcount = can_refcount - 1;
   table->init_plt_refcount.refcount = can_refcount - 1;
@@ -7681,7 +8414,9 @@ _bfd_elf_link_hash_table_init
   ret = _bfd_link_hash_table_init (&table->root, abfd, newfunc, entsize);
 
   table->root.type = bfd_link_elf_hash_table;
-  table->hash_table_id = target_id;
+  table->hash_table_id = bed->target_id;
+  table->target_os = bed->target_os;
+  table->root.hash_table_free = _bfd_elf_link_hash_table_free;
 
   return ret;
 }
@@ -7692,20 +8427,18 @@ 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)
     return NULL;
 
   if (! _bfd_elf_link_hash_table_init (ret, abfd, _bfd_elf_link_hash_newfunc,
-				       sizeof (struct elf_link_hash_entry),
-				       GENERIC_ELF_DATA))
+				       sizeof (struct elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
     }
-  ret->root.hash_table_free = _bfd_elf_link_hash_table_free;
 
   return &ret->root;
 }
@@ -7721,6 +8454,21 @@ _bfd_elf_link_hash_table_free (bfd *obfd
   if (htab->dynstr != NULL)
     _bfd_elf_strtab_free (htab->dynstr);
   _bfd_merge_sections_free (htab->merge_info);
+  /* NB: htab->dynamic->contents is always allocated by bfd_realloc.  */
+  if (htab->dynamic != NULL)
+    {
+      free (htab->dynamic->contents);
+      htab->dynamic->contents = NULL;
+    }
+  if (htab->first_hash != NULL)
+    {
+      bfd_hash_table_free (htab->first_hash);
+      free (htab->first_hash);
+    }
+  if (htab->eh_info.frame_hdr_is_compact)
+    free (htab->eh_info.u.compact.entries);
+  else
+    free (htab->eh_info.u.dwarf.array);
   _bfd_generic_link_hash_table_free (obfd);
 }
 
@@ -7796,7 +8544,7 @@ bfd_elf_get_dt_soname (bfd *abfd)
 /* Get the list of DT_NEEDED entries from a BFD.  This is a hook for
    the ELF linker emulation code.  */
 
-bfd_boolean
+bool
 bfd_elf_get_bfd_needed_list (bfd *abfd,
 			     struct bfd_link_needed_list **pneeded)
 {
@@ -7812,13 +8560,13 @@ bfd_elf_get_bfd_needed_list (bfd *abfd,
 
   if (bfd_get_flavour (abfd) != bfd_target_elf_flavour
       || bfd_get_format (abfd) != bfd_object)
-    return TRUE;
+    return true;
 
   s = bfd_get_section_by_name (abfd, ".dynamic");
-  if (s == NULL || s->size == 0)
-    return TRUE;
+  if (s == NULL || s->size == 0 || (s->flags & SEC_HAS_CONTENTS) == 0)
+    return true;
 
-  if (!bfd_malloc_and_get_section (abfd, s, &dynbuf))
+  if (!_bfd_elf_mmap_section_contents (abfd, s, &dynbuf))
     goto error_return;
 
   elfsec = _bfd_elf_section_from_bfd_section (abfd, s);
@@ -7830,9 +8578,9 @@ bfd_elf_get_bfd_needed_list (bfd *abfd,
   extdynsize = get_elf_backend_data (abfd)->s->sizeof_dyn;
   swap_dyn_in = get_elf_backend_data (abfd)->s->swap_dyn_in;
 
-  extdyn = dynbuf;
-  extdynend = extdyn + s->size;
-  for (; extdyn < extdynend; extdyn += extdynsize)
+  for (extdyn = dynbuf, extdynend = dynbuf + s->size;
+       (size_t) (extdynend - extdyn) >= extdynsize;
+       extdyn += extdynsize)
     {
       Elf_Internal_Dyn dyn;
 
@@ -7846,7 +8594,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)
@@ -7864,14 +8612,13 @@ bfd_elf_get_bfd_needed_list (bfd *abfd,
 	}
     }
 
-  free (dynbuf);
+  _bfd_elf_munmap_section_contents (s, dynbuf);
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (dynbuf != NULL)
-    free (dynbuf);
-  return FALSE;
+  _bfd_elf_munmap_section_contents (s, dynbuf);
+  return false;
 }
 
 struct elf_symbuf_symbol
@@ -7935,9 +8682,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;
 
@@ -7983,8 +8731,7 @@ elf_create_symbuf (size_t symcount, Elf_
       ssymhead->count++;
     }
   BFD_ASSERT ((size_t) (ssymhead - ssymbuf) == shndx_count
-	      && (((bfd_hostptr_t) ssym - (bfd_hostptr_t) ssymbuf)
-		  == total_size));
+	      && (uintptr_t) ssym - (uintptr_t) ssymbuf == total_size);
 
   free (indbuf);
   return ssymbuf;
@@ -7993,7 +8740,7 @@ elf_create_symbuf (size_t symcount, Elf_
 /* Check if 2 sections define the same set of local and global
    symbols.  */
 
-static bfd_boolean
+static bool
 bfd_elf_match_symbols_in_sections (asection *sec1, asection *sec2,
 				   struct bfd_link_info *info)
 {
@@ -8005,9 +8752,10 @@ bfd_elf_match_symbols_in_sections (asect
   struct elf_symbuf_head *ssymbuf1, *ssymbuf2;
   Elf_Internal_Sym *isym, *isymend;
   struct elf_symbol *symtable1 = NULL, *symtable2 = NULL;
-  size_t count1, count2, i;
+  size_t count1, count2, sec_count1, sec_count2, i;
   unsigned int shndx1, shndx2;
-  bfd_boolean result;
+  bool result;
+  bool ignore_section_symbol_p;
 
   bfd1 = sec1->owner;
   bfd2 = sec2->owner;
@@ -8015,15 +8763,15 @@ bfd_elf_match_symbols_in_sections (asect
   /* Both sections have to be in ELF.  */
   if (bfd_get_flavour (bfd1) != bfd_target_elf_flavour
       || bfd_get_flavour (bfd2) != bfd_target_elf_flavour)
-    return FALSE;
+    return false;
 
   if (elf_section_type (sec1) != elf_section_type (sec2))
-    return FALSE;
+    return false;
 
   shndx1 = _bfd_elf_section_from_bfd_section (bfd1, sec1);
   shndx2 = _bfd_elf_section_from_bfd_section (bfd2, sec2);
   if (shndx1 == SHN_BAD || shndx2 == SHN_BAD)
-    return FALSE;
+    return false;
 
   bed1 = get_elf_backend_data (bfd1);
   bed2 = get_elf_backend_data (bfd2);
@@ -8033,14 +8781,21 @@ bfd_elf_match_symbols_in_sections (asect
   symcount2 = hdr2->sh_size / bed2->s->sizeof_sym;
 
   if (symcount1 == 0 || symcount2 == 0)
-    return FALSE;
+    return false;
 
-  result = FALSE;
+  result = false;
   isymbuf1 = NULL;
   isymbuf2 = NULL;
   ssymbuf1 = (struct elf_symbuf_head *) elf_tdata (bfd1)->symbuf;
   ssymbuf2 = (struct elf_symbuf_head *) elf_tdata (bfd2)->symbuf;
 
+  /* Ignore section symbols only when matching non-debugging sections
+     or linkonce section with comdat section.  */
+  ignore_section_symbol_p
+    = ((sec1->flags & SEC_DEBUGGING) == 0
+       || ((elf_section_flags (sec1) & SHF_GROUP)
+	   != (elf_section_flags (sec2) & SHF_GROUP)));
+
   if (ssymbuf1 == NULL)
     {
       isymbuf1 = bfd_elf_get_elf_syms (bfd1, hdr1, symcount1, 0,
@@ -8048,7 +8803,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 +8817,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;
@@ -8080,6 +8835,7 @@ bfd_elf_match_symbols_in_sections (asect
       hi = ssymbuf1->count;
       ssymbuf1++;
       count1 = 0;
+      sec_count1 = 0;
       while (lo < hi)
 	{
 	  mid = (lo + hi) / 2;
@@ -8094,11 +8850,19 @@ bfd_elf_match_symbols_in_sections (asect
 	      break;
 	    }
 	}
+      if (ignore_section_symbol_p)
+	{
+	  for (i = 0; i < count1; i++)
+	    if (ELF_ST_TYPE (ssymbuf1->ssym[i].st_info) == STT_SECTION)
+	      sec_count1++;
+	  count1 -= sec_count1;
+	}
 
       lo = 0;
       hi = ssymbuf2->count;
       ssymbuf2++;
       count2 = 0;
+      sec_count2 = 0;
       while (lo < hi)
 	{
 	  mid = (lo + hi) / 2;
@@ -8113,6 +8877,13 @@ bfd_elf_match_symbols_in_sections (asect
 	      break;
 	    }
 	}
+      if (ignore_section_symbol_p)
+	{
+	  for (i = 0; i < count2; i++)
+	    if (ELF_ST_TYPE (ssymbuf2->ssym[i].st_info) == STT_SECTION)
+	      sec_count2++;
+	  count2 -= sec_count2;
+	}
 
       if (count1 == 0 || count2 == 0 || count1 != count2)
 	goto done;
@@ -8125,24 +8896,34 @@ bfd_elf_match_symbols_in_sections (asect
 	goto done;
 
       symp = symtable1;
-      for (ssym = ssymbuf1->ssym, ssymend = ssym + count1;
-	   ssym < ssymend; ssym++, symp++)
-	{
-	  symp->u.ssym = ssym;
-	  symp->name = bfd_elf_string_from_elf_section (bfd1,
-							hdr1->sh_link,
-							ssym->st_name);
-	}
+      for (ssym = ssymbuf1->ssym, ssymend = ssym + count1 + sec_count1;
+	   ssym < ssymend; ssym++)
+	if (sec_count1 == 0
+	    || ELF_ST_TYPE (ssym->st_info) != STT_SECTION)
+	  {
+	    symp->u.ssym = ssym;
+	    symp->name = bfd_elf_string_from_elf_section (bfd1,
+							  hdr1->sh_link,
+							  ssym->st_name);
+	    if (symp->name == NULL)
+	      goto done;
+	    symp++;
+	  }
 
       symp = symtable2;
-      for (ssym = ssymbuf2->ssym, ssymend = ssym + count2;
-	   ssym < ssymend; ssym++, symp++)
-	{
-	  symp->u.ssym = ssym;
-	  symp->name = bfd_elf_string_from_elf_section (bfd2,
-							hdr2->sh_link,
-							ssym->st_name);
-	}
+      for (ssym = ssymbuf2->ssym, ssymend = ssym + count2 + sec_count2;
+	   ssym < ssymend; ssym++)
+	if (sec_count2 == 0
+	    || ELF_ST_TYPE (ssym->st_info) != STT_SECTION)
+	  {
+	    symp->u.ssym = ssym;
+	    symp->name = bfd_elf_string_from_elf_section (bfd2,
+							  hdr2->sh_link,
+							  ssym->st_name);
+	    if (symp->name == NULL)
+	      goto done;
+	    symp++;
+	  }
 
       /* Sort symbol by name.  */
       qsort (symtable1, count1, sizeof (struct elf_symbol),
@@ -8157,7 +8938,7 @@ bfd_elf_match_symbols_in_sections (asect
 	    || strcmp (symtable1 [i].name, symtable2 [i].name) != 0)
 	  goto done;
 
-      result = TRUE;
+      result = true;
       goto done;
     }
 
@@ -8171,26 +8952,38 @@ bfd_elf_match_symbols_in_sections (asect
   /* Count definitions in the section.  */
   count1 = 0;
   for (isym = isymbuf1, isymend = isym + symcount1; isym < isymend; isym++)
-    if (isym->st_shndx == shndx1)
+    if (isym->st_shndx == shndx1
+	&& (!ignore_section_symbol_p
+	    || ELF_ST_TYPE (isym->st_info) != STT_SECTION))
       symtable1[count1++].u.isym = isym;
 
   count2 = 0;
   for (isym = isymbuf2, isymend = isym + symcount2; isym < isymend; isym++)
-    if (isym->st_shndx == shndx2)
+    if (isym->st_shndx == shndx2
+	&& (!ignore_section_symbol_p
+	    || ELF_ST_TYPE (isym->st_info) != STT_SECTION))
       symtable2[count2++].u.isym = isym;
 
   if (count1 == 0 || count2 == 0 || count1 != count2)
     goto done;
 
   for (i = 0; i < count1; i++)
-    symtable1[i].name
-      = bfd_elf_string_from_elf_section (bfd1, hdr1->sh_link,
-					 symtable1[i].u.isym->st_name);
+    {
+      symtable1[i].name
+	= bfd_elf_string_from_elf_section (bfd1, hdr1->sh_link,
+					   symtable1[i].u.isym->st_name);
+      if (symtable1[i].name == NULL)
+	goto done;
+    }
 
   for (i = 0; i < count2; i++)
-    symtable2[i].name
-      = bfd_elf_string_from_elf_section (bfd2, hdr2->sh_link,
-					 symtable2[i].u.isym->st_name);
+    {
+      symtable2[i].name
+	= bfd_elf_string_from_elf_section (bfd2, hdr2->sh_link,
+					   symtable2[i].u.isym->st_name);
+      if (symtable2[i].name == NULL)
+	goto done;
+    }
 
   /* Sort symbol by name.  */
   qsort (symtable1, count1, sizeof (struct elf_symbol),
@@ -8205,24 +8998,20 @@ bfd_elf_match_symbols_in_sections (asect
 	|| strcmp (symtable1 [i].name, symtable2 [i].name) != 0)
       goto done;
 
-  result = TRUE;
+  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;
 }
 
 /* Return TRUE if 2 section types are compatible.  */
 
-bfd_boolean
+bool
 _bfd_elf_match_sections_by_type (bfd *abfd, const asection *asec,
 				 bfd *bbfd, const asection *bsec)
 {
@@ -8230,7 +9019,7 @@ _bfd_elf_match_sections_by_type (bfd *ab
       || bsec == NULL
       || abfd->xvec->flavour != bfd_target_elf_flavour
       || bbfd->xvec->flavour != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   return elf_section_type (asec) == elf_section_type (bsec);
 }
@@ -8275,15 +9064,56 @@ 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
 {
-  bfd_boolean failed;
-  bfd_boolean localsyms;
-  bfd_boolean file_sym_done;
+  bool failed;
+  bool localsyms;
+  bool file_sym_done;
   struct elf_final_link_info *flinfo;
 };
 
@@ -8294,12 +9124,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:
@@ -8324,7 +9154,6 @@ set_symbol_value (bfd *bfd_with_globals,
 		  size_t symidx,
 		  bfd_vma val)
 {
-  struct elf_link_hash_entry **sym_hashes;
   struct elf_link_hash_entry *h;
   size_t extsymoff = locsymcount;
 
@@ -8347,18 +9176,18 @@ set_symbol_value (bfd *bfd_with_globals,
 
   /* It is a global symbol: set its link type
      to "defined" and give it a value.  */
-
-  sym_hashes = elf_sym_hashes (bfd_with_globals);
-  h = sym_hashes [symidx - extsymoff];
-  while (h->root.type == bfd_link_hash_indirect
-	 || h->root.type == bfd_link_hash_warning)
-    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+  h = get_link_hash_entry (elf_sym_hashes (bfd_with_globals), symidx, extsymoff);
+  if (h == NULL)
+    {
+      /* FIXMEL What should we do ?  */
+      return;
+    }
   h->root.type = bfd_link_hash_defined;
   h->root.u.def.value = val;
   h->root.u.def.section = bfd_abs_section_ptr;
 }
 
-static bfd_boolean
+static bool
 resolve_symbol (const char *name,
 		bfd *input_bfd,
 		struct elf_final_link_info *flinfo,
@@ -8398,15 +9227,15 @@ resolve_symbol (const char *name,
 	  printf ("Found symbol with value %8.8lx\n",
 		  (unsigned long) *result);
 #endif
-	  return TRUE;
+	  return true;
 	}
     }
 
   /* Hmm, haven't found it yet. perhaps it is a global.  */
   global_entry = bfd_link_hash_lookup (flinfo->info->hash, name,
-				       FALSE, FALSE, TRUE);
+				       false, false, true);
   if (!global_entry)
-    return FALSE;
+    return false;
 
   if (global_entry->type == bfd_link_hash_defined
       || global_entry->type == bfd_link_hash_defweak)
@@ -8418,17 +9247,17 @@ resolve_symbol (const char *name,
       printf ("Found GLOBAL symbol '%s' with value %8.8lx\n",
 	      global_entry->root.string, (unsigned long) *result);
 #endif
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Looks up NAME in SECTIONS.  If found sets RESULT to NAME's address (in
    bytes) and returns TRUE, otherwise returns FALSE.  Accepts pseudo-section
    names like "foo.end" which is the end address of section "foo".  */
 
-static bfd_boolean
+static bool
 resolve_section (const char *name,
 		 asection *sections,
 		 bfd_vma *result,
@@ -8441,7 +9270,7 @@ resolve_section (const char *name,
     if (strcmp (curr->name, name) == 0)
       {
 	*result = curr->vma;
-	return TRUE;
+	return true;
       }
 
   /* Hmm. still haven't found it. try pseudo-section names.  */
@@ -8454,18 +9283,18 @@ resolve_section (const char *name,
 
       if (strncmp (curr->name, name, len) == 0)
 	{
-	  if (strncmp (".end", name + len, 4) == 0)
+	  if (startswith (name + len, ".end"))
 	    {
 	      *result = (curr->vma
 			 + curr->size / bfd_octets_per_byte (abfd, curr));
-	      return TRUE;
+	      return true;
 	    }
 
 	  /* Insert more pseudo-section names here, if you like.  */
 	}
     }
 
-  return FALSE;
+  return false;
 }
 
 static void
@@ -8474,9 +9303,10 @@ 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
+static bool
 eval_symbol (bfd_vma *result,
 	     const char **symp,
 	     bfd *input_bfd,
@@ -8493,7 +9323,7 @@ eval_symbol (bfd_vma *result,
   char symbuf[4096];
   const char *sym = *symp;
   const char *symend;
-  bfd_boolean symbol_is_section = FALSE;
+  bool symbol_is_section = false;
 
   len = strlen (sym);
   symend = sym + len;
@@ -8501,7 +9331,7 @@ eval_symbol (bfd_vma *result,
   if (len < 1 || len > sizeof (symbuf))
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   switch (* sym)
@@ -8509,15 +9339,15 @@ eval_symbol (bfd_vma *result,
     case '.':
       *result = dot;
       *symp = sym + 1;
-      return TRUE;
+      return true;
 
     case '#':
       ++sym;
       *result = strtoul (sym, (char **) symp, 16);
-      return TRUE;
+      return true;
 
     case 'S':
-      symbol_is_section = TRUE;
+      symbol_is_section = true;
       /* Fall through.  */
     case 's':
       ++sym;
@@ -8527,7 +9357,7 @@ eval_symbol (bfd_vma *result,
       if (symend < sym || symlen + 1 > sizeof (symbuf))
 	{
 	  bfd_set_error (bfd_error_invalid_operation);
-	  return FALSE;
+	  return false;
 	}
 
       memcpy (symbuf, sym, symlen);
@@ -8546,7 +9376,7 @@ eval_symbol (bfd_vma *result,
 				  isymbuf, locsymcount))
 	    {
 	      undefined_reference ("section", symbuf);
-	      return FALSE;
+	      return false;
 	    }
 	}
       else
@@ -8557,16 +9387,16 @@ eval_symbol (bfd_vma *result,
 				   result, input_bfd))
 	    {
 	      undefined_reference ("symbol", symbuf);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
-      return TRUE;
+      return true;
 
       /* All that remains are operators.  */
 
 #define UNARY_OP(op)						\
-  if (strncmp (sym, #op, strlen (#op)) == 0)			\
+  if (startswith (sym, #op))					\
     {								\
       sym += strlen (#op);					\
       if (*sym == ':')						\
@@ -8574,16 +9404,16 @@ eval_symbol (bfd_vma *result,
       *symp = sym;						\
       if (!eval_symbol (&a, symp, input_bfd, flinfo, dot,	\
 			isymbuf, locsymcount, signed_p))	\
-	return FALSE;						\
+	return false;						\
       if (signed_p)						\
 	*result = op ((bfd_signed_vma) a);			\
       else							\
 	*result = op a;						\
-      return TRUE;						\
+      return true;						\
     }
 
-#define BINARY_OP(op)						\
-  if (strncmp (sym, #op, strlen (#op)) == 0)			\
+#define BINARY_OP_HEAD(op)					\
+  if (startswith (sym, #op))					\
     {								\
       sym += strlen (#op);					\
       if (*sym == ':')						\
@@ -8591,22 +9421,37 @@ eval_symbol (bfd_vma *result,
       *symp = sym;						\
       if (!eval_symbol (&a, symp, input_bfd, flinfo, dot,	\
 			isymbuf, locsymcount, signed_p))	\
-	return FALSE;						\
+	return false;						\
       ++*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;						\
+      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 +9461,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 (&);
@@ -8629,7 +9488,7 @@ eval_symbol (bfd_vma *result,
 #undef BINARY_OP
       _bfd_error_handler (_("unknown operator '%c' in complex symbol"), * sym);
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 }
 
@@ -8856,7 +9715,6 @@ ext32b_r_offset (const void *p)
   return aval;
 }
 
-#ifdef BFD_HOST_64_BIT
 static bfd_vma
 ext64l_r_offset (const void *p)
 {
@@ -8900,18 +9758,17 @@ ext64b_r_offset (const void *p)
 		   | (uint64_t) a->c[7]);
   return aval;
 }
-#endif
 
 /* When performing a relocatable link, the input relocations are
    preserved.  But, if they reference global symbols, the indices
    referenced must be updated.  Update all the relocations found in
    RELDATA.  */
 
-static bfd_boolean
+static bool
 elf_link_adjust_relocs (bfd *abfd,
 			asection *sec,
 			struct bfd_elf_section_reloc_data *reldata,
-			bfd_boolean sort,
+			bool sort,
 			struct bfd_link_info *info)
 {
   unsigned int i;
@@ -8971,7 +9828,7 @@ elf_link_adjust_relocs (bfd *abfd,
 	  _bfd_error_handler (_("%pB:%pA: error: try relinking with --gc-keep-exported enabled"),
 			      abfd, sec);
 	  bfd_set_error (bfd_error_invalid_operation);
-	  return FALSE;
+	  return false;
 	}
       BFD_ASSERT ((*rel_hash)->indx >= 0);
 
@@ -9004,13 +9861,11 @@ elf_link_adjust_relocs (bfd *abfd,
 	}
       else
 	{
-#ifdef BFD_HOST_64_BIT
 	  if (abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
 	    ext_r_off = ext64l_r_offset;
 	  else if (abfd->xvec->header_byteorder == BFD_ENDIAN_BIG)
 	    ext_r_off = ext64b_r_offset;
 	  else
-#endif
 	    abort ();
 	}
 
@@ -9063,17 +9918,25 @@ elf_link_adjust_relocs (bfd *abfd,
 	      size_t sortlen = p - loc;
 	      bfd_vma r_off2 = (*ext_r_off) (loc);
 	      size_t runlen = elt_size;
+	      bfd_vma r_off_runend = r_off;
+	      bfd_vma r_off_runend_next;
 	      size_t buf_size = 96 * 1024;
 	      while (p + runlen < end
 		     && (sortlen <= buf_size
 			 || runlen + elt_size <= buf_size)
-		     && r_off2 > (*ext_r_off) (p + runlen))
-		runlen += elt_size;
+		     /* run must not break the ordering of base..loc+1 */
+		     && r_off2 > (r_off_runend_next = (*ext_r_off) (p + runlen))
+		     /* run must be already sorted */
+		     && r_off_runend_next >= r_off_runend)
+		{
+		  runlen += elt_size;
+		  r_off_runend = r_off_runend_next;
+		}
 	      if (buf == NULL)
 		{
 		  buf = bfd_malloc (buf_size);
 		  if (buf == NULL)
-		    return FALSE;
+		    return false;
 		}
 	      if (runlen < sortlen)
 		{
@@ -9095,7 +9958,7 @@ elf_link_adjust_relocs (bfd *abfd,
       reldata->hashes = NULL;
       free (buf);
     }
-  return TRUE;
+  return true;
 }
 
 struct elf_link_sort_rela
@@ -9181,7 +10044,7 @@ elf_link_sort_relocs (bfd *abfd, struct
   void (*swap_out) (bfd *, const Elf_Internal_Rela *, bfd_byte *);
   struct bfd_link_order *lo;
   bfd_vma r_sym_mask;
-  bfd_boolean use_rela;
+  bool use_rela;
 
   /* Find a dynamic reloc section.  */
   rela_dyn = bfd_get_section_by_name (abfd, ".rela.dyn");
@@ -9189,11 +10052,11 @@ elf_link_sort_relocs (bfd *abfd, struct
   if (rela_dyn != NULL && rela_dyn->size > 0
       && rel_dyn != NULL && rel_dyn->size > 0)
     {
-      bfd_boolean use_rela_initialised = FALSE;
+      bool use_rela_initialised = false;
 
       /* This is just here to stop gcc from complaining.
 	 Its initialization checking code is not perfect.  */
-      use_rela = TRUE;
+      use_rela = true;
 
       /* Both sections are present.  Examine the sizes
 	 of the indirect sections to help us choose.  */
@@ -9221,8 +10084,8 @@ elf_link_sort_relocs (bfd *abfd, struct
 		      }
 		    else
 		      {
-			use_rela = TRUE;
-			use_rela_initialised = TRUE;
+			use_rela = true;
+			use_rela_initialised = true;
 		      }
 		  }
 	      }
@@ -9239,8 +10102,8 @@ elf_link_sort_relocs (bfd *abfd, struct
 		  }
 		else
 		  {
-		    use_rela = FALSE;
-		    use_rela_initialised = TRUE;
+		    use_rela = false;
+		    use_rela_initialised = true;
 		  }
 	      }
 	    else
@@ -9278,8 +10141,8 @@ elf_link_sort_relocs (bfd *abfd, struct
 		      }
 		    else
 		      {
-			use_rela = TRUE;
-			use_rela_initialised = TRUE;
+			use_rela = true;
+			use_rela_initialised = true;
 		      }
 		  }
 	      }
@@ -9296,8 +10159,8 @@ elf_link_sort_relocs (bfd *abfd, struct
 		  }
 		else
 		  {
-		    use_rela = FALSE;
-		    use_rela_initialised = TRUE;
+		    use_rela = false;
+		    use_rela_initialised = true;
 		  }
 	      }
 	    else
@@ -9313,12 +10176,12 @@ elf_link_sort_relocs (bfd *abfd, struct
 
       if (! use_rela_initialised)
 	/* Make a guess.  */
-	use_rela = TRUE;
+	use_rela = true;
     }
   else if (rela_dyn != NULL && rela_dyn->size > 0)
-    use_rela = TRUE;
+    use_rela = true;
   else if (rel_dyn != NULL && rel_dyn->size > 0)
-    use_rela = FALSE;
+    use_rela = false;
   else
     return 0;
 
@@ -9472,12 +10335,13 @@ elf_link_sort_relocs (bfd *abfd, struct
 /* Add a symbol to the output symbol string table.  */
 
 static int
-elf_link_output_symstrtab (struct elf_final_link_info *flinfo,
+elf_link_output_symstrtab (void *finf,
 			   const char *name,
 			   Elf_Internal_Sym *elfsym,
 			   asection *input_sec,
 			   struct elf_link_hash_entry *h)
 {
+  struct elf_final_link_info *flinfo = finf;
   int (*output_symbol_hook)
     (struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *,
      struct elf_link_hash_entry *);
@@ -9501,24 +10365,84 @@ elf_link_output_symstrtab (struct elf_fi
   if (ELF_ST_BIND (elfsym->st_info) == STB_GNU_UNIQUE)
     elf_tdata (flinfo->output_bfd)->has_gnu_osabi |= elf_gnu_osabi_unique;
 
-  if (name == NULL
-      || *name == '\0'
-      || (input_sec->flags & SEC_EXCLUDE))
+  if (name == NULL || *name == '\0')
     elfsym->st_name = (unsigned long) -1;
   else
     {
       /* 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;
+	  size_t count_len;
+	  size_t base_len;
+	  char buf[30];
+	  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;
+	      /* Always append ".COUNT" to local symbols to avoid
+		 potential conflicts with local symbol "XXX.COUNT".  */
+	      sprintf (buf, "%lx", lh->count);
+	      base_len = lh->size;
+	      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;
     }
 
   hash_table = elf_hash_table (flinfo->info);
   strtabsize = hash_table->strtabsize;
-  if (strtabsize <= hash_table->strtabcount)
+  if (strtabsize <= flinfo->output_bfd->symcount)
     {
       strtabsize += strtabsize;
       hash_table->strtabsize = strtabsize;
@@ -9529,14 +10453,10 @@ elf_link_output_symstrtab (struct elf_fi
       if (hash_table->strtab == NULL)
 	return 0;
     }
-  hash_table->strtab[hash_table->strtabcount].sym = *elfsym;
-  hash_table->strtab[hash_table->strtabcount].dest_index
-    = hash_table->strtabcount;
-  hash_table->strtab[hash_table->strtabcount].destshndx_index
-    = flinfo->symshndxbuf ? bfd_get_symcount (flinfo->output_bfd) : 0;
-
+  hash_table->strtab[flinfo->output_bfd->symcount].sym = *elfsym;
+  hash_table->strtab[flinfo->output_bfd->symcount].dest_index
+    = flinfo->output_bfd->symcount;
   flinfo->output_bfd->symcount += 1;
-  hash_table->strtabcount += 1;
 
   return 1;
 }
@@ -9544,29 +10464,29 @@ elf_link_output_symstrtab (struct elf_fi
 /* Swap symbols out to the symbol table and flush the output symbols to
    the file.  */
 
-static bfd_boolean
+static bool
 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;
   Elf_Internal_Shdr *hdr;
   file_ptr pos;
-  bfd_boolean ret;
+  bool ret;
 
-  if (!hash_table->strtabcount)
-    return TRUE;
+  if (flinfo->output_bfd->symcount == 0)
+    return true;
 
   BFD_ASSERT (elf_onesymtab (flinfo->output_bfd));
 
   bed = get_elf_backend_data (flinfo->output_bfd);
 
-  amt = bed->s->sizeof_sym * hash_table->strtabcount;
+  amt = bed->s->sizeof_sym * flinfo->output_bfd->symcount;
   symbuf = (bfd_byte *) bfd_malloc (amt);
   if (symbuf == NULL)
-    return FALSE;
+    return false;
 
   if (flinfo->symshndxbuf)
     {
@@ -9576,11 +10496,12 @@ elf_link_swap_symbols_out (struct elf_fi
       if (flinfo->symshndxbuf == NULL)
 	{
 	  free (symbuf);
-	  return FALSE;
+	  return false;
 	}
     }
 
-  for (i = 0; i < hash_table->strtabcount; i++)
+  /* Now swap out the symbols.  */
+  for (i = 0; i < flinfo->output_bfd->symcount; i++)
     {
       struct elf_sym_strtab *elfsym = &hash_table->strtab[i];
       if (elfsym->sym.st_name == (unsigned long) -1)
@@ -9589,45 +10510,40 @@ elf_link_swap_symbols_out (struct elf_fi
 	elfsym->sym.st_name
 	  = (unsigned long) _bfd_elf_strtab_offset (flinfo->symstrtab,
 						    elfsym->sym.st_name);
+
+      /* Inform the linker of the addition of this symbol.  */
+
+      if (flinfo->info->callbacks->ctf_new_symbol)
+	flinfo->info->callbacks->ctf_new_symbol (elfsym->dest_index,
+						 &elfsym->sym);
+
       bed->s->swap_symbol_out (flinfo->output_bfd, &elfsym->sym,
 			       ((bfd_byte *) symbuf
 				+ (elfsym->dest_index
 				   * bed->s->sizeof_sym)),
-			       (flinfo->symshndxbuf
-				+ elfsym->destshndx_index));
+			       NPTR_ADD (flinfo->symshndxbuf,
+					 elfsym->dest_index));
     }
 
-  /* Allow the linker to examine the strtab and symtab now they are
-     populated.  */
-
-  if (flinfo->info->callbacks->examine_strtab)
-    flinfo->info->callbacks->examine_strtab (hash_table->strtab,
-					     hash_table->strtabcount,
-					     flinfo->symstrtab);
-
   hdr = &elf_tdata (flinfo->output_bfd)->symtab_hdr;
   pos = hdr->sh_offset + hdr->sh_size;
-  amt = hash_table->strtabcount * bed->s->sizeof_sym;
+  amt = bed->s->sizeof_sym * flinfo->output_bfd->symcount;
   if (bfd_seek (flinfo->output_bfd, pos, SEEK_SET) == 0
-      && bfd_bwrite (symbuf, amt, flinfo->output_bfd) == amt)
+      && bfd_write (symbuf, amt, flinfo->output_bfd) == amt)
     {
       hdr->sh_size += amt;
-      ret = TRUE;
+      ret = true;
     }
   else
-    ret = FALSE;
+    ret = false;
 
   free (symbuf);
-
-  free (hash_table->strtab);
-  hash_table->strtab = NULL;
-
   return ret;
 }
 
 /* Return TRUE if the dynamic symbol SYM in ABFD is supported.  */
 
-static bfd_boolean
+static bool
 check_dynsym (bfd *abfd, Elf_Internal_Sym *sym)
 {
   if (sym->st_shndx >= (SHN_LORESERVE & 0xffff)
@@ -9640,9 +10556,9 @@ check_dynsym (bfd *abfd, Elf_Internal_Sy
 	(_("%pB: too many sections: %d (>= %d)"),
 	 abfd, bfd_count_sections (abfd), SHN_LORESERVE & 0xffff);
       bfd_set_error (bfd_error_nonrepresentable_section);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* For DSOs loaded in via a DT_NEEDED entry, emulate ld.so in
@@ -9651,7 +10567,7 @@ check_dynsym (bfd *abfd, Elf_Internal_Sy
    We also handle the case that a DSO references a hidden symbol
    which may be satisfied by a versioned symbol in another DSO.  */
 
-static bfd_boolean
+static bool
 elf_link_check_versioned_symbol (struct bfd_link_info *info,
 				 const struct elf_backend_data *bed,
 				 struct elf_link_hash_entry *h)
@@ -9660,7 +10576,7 @@ elf_link_check_versioned_symbol (struct
   struct elf_link_loaded_list *loaded;
 
   if (!is_elf_hash_table (info->hash))
-    return FALSE;
+    return false;
 
   /* Check indirect symbol.  */
   while (h->root.type == bfd_link_hash_indirect)
@@ -9678,7 +10594,7 @@ elf_link_check_versioned_symbol (struct
       if (abfd == NULL
 	  || (abfd->flags & DYNAMIC) == 0
 	  || (elf_dyn_lib_class (abfd) & DYN_DT_NEEDED) == 0)
-	return FALSE;
+	return false;
       break;
 
     case bfd_link_hash_defined:
@@ -9692,7 +10608,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 +10628,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;
 
@@ -9736,22 +10651,17 @@ elf_link_check_versioned_symbol (struct
       isymbuf = bfd_elf_get_elf_syms (input, hdr, extsymcount, extsymoff,
 				      NULL, NULL, NULL);
       if (isymbuf == NULL)
-	return FALSE;
+	return false;
 
       /* 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;
+	  return false;
 	}
 
       ever = extversym + extsymoff;
@@ -9791,7 +10701,7 @@ elf_link_check_versioned_symbol (struct
 	      /* This is the base or first version.  We can use it.  */
 	      free (extversym);
 	      free (isymbuf);
-	      return TRUE;
+	      return true;
 	    }
 	}
 
@@ -9799,7 +10709,7 @@ elf_link_check_versioned_symbol (struct
       free (isymbuf);
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Convert ELF common symbol TYPE.  */
@@ -9831,13 +10741,13 @@ elf_link_convert_common_type (struct bfd
    script.  The second time we output the symbols that are still
    global symbols.  */
 
-static bfd_boolean
+static bool
 elf_link_output_extsym (struct bfd_hash_entry *bh, void *data)
 {
   struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) bh;
   struct elf_outext_info *eoinfo = (struct elf_outext_info *) data;
   struct elf_final_link_info *flinfo = eoinfo->flinfo;
-  bfd_boolean strip;
+  bool strip;
   Elf_Internal_Sym sym;
   asection *input_sec;
   const struct elf_backend_data *bed;
@@ -9849,19 +10759,19 @@ elf_link_output_extsym (struct bfd_hash_
     {
       h = (struct elf_link_hash_entry *) h->root.u.i.link;
       if (h->root.type == bfd_link_hash_new)
-	return TRUE;
+	return true;
     }
 
   /* Decide whether to output this symbol in this pass.  */
   if (eoinfo->localsyms)
     {
       if (!h->forced_local)
-	return TRUE;
+	return true;
     }
   else
     {
       if (h->forced_local)
-	return TRUE;
+	return true;
     }
 
   bed = get_elf_backend_data (flinfo->output_bfd);
@@ -9873,7 +10783,7 @@ elf_link_output_extsym (struct bfd_hash_
 	 references in regular files have already been handled unless
 	 they are in unreferenced sections which are removed by garbage
 	 collection).  */
-      bfd_boolean ignore_undef = FALSE;
+      bool ignore_undef = false;
 
       /* Some symbols may be special in that the fact that they're
 	 undefined can be safely ignored - let backend determine that.  */
@@ -9886,15 +10796,17 @@ 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)
-	return TRUE;
+	return true;
     }
 
   /* We should also warn if a forced local symbol is referenced from
@@ -9930,15 +10842,15 @@ elf_link_output_extsym (struct bfd_hash_
       _bfd_error_handler (msg, flinfo->output_bfd,
 			  h->root.root.string, def_bfd);
       bfd_set_error (bfd_error_bad_value);
-      eoinfo->failed = TRUE;
-      return FALSE;
+      eoinfo->failed = true;
+      return false;
     }
 
   /* We don't want to output symbols that have never been mentioned by
      a regular file, or that we have been told to strip.  However, if
      h->indx is set to -2, the symbol is used by a reloc and we must
      output it.  */
-  strip = FALSE;
+  strip = false;
   if (h->indx == -2)
     ;
   else if ((h->def_dynamic
@@ -9946,13 +10858,13 @@ elf_link_output_extsym (struct bfd_hash_
 	    || h->root.type == bfd_link_hash_new)
 	   && !h->def_regular
 	   && !h->ref_regular)
-    strip = TRUE;
+    strip = true;
   else if (flinfo->info->strip == strip_all)
-    strip = TRUE;
+    strip = true;
   else if (flinfo->info->strip == strip_some
 	   && bfd_hash_lookup (flinfo->info->keep_hash,
-			       h->root.root.string, FALSE, FALSE) == NULL)
-    strip = TRUE;
+			       h->root.root.string, false, false) == NULL)
+    strip = true;
   else if ((h->root.type == bfd_link_hash_defined
 	    || h->root.type == bfd_link_hash_defweak)
 	   && ((flinfo->info->strip_discarded
@@ -9960,12 +10872,19 @@ elf_link_output_extsym (struct bfd_hash_
 	       || ((h->root.u.def.section->flags & SEC_LINKER_CREATED) == 0
 		   && h->root.u.def.section->owner != NULL
 		   && (h->root.u.def.section->owner->flags & BFD_PLUGIN) != 0)))
-    strip = TRUE;
+    strip = true;
   else if ((h->root.type == bfd_link_hash_undefined
 	    || h->root.type == bfd_link_hash_undefweak)
 	   && h->root.u.undef.abfd != NULL
 	   && (h->root.u.undef.abfd->flags & BFD_PLUGIN) != 0)
-    strip = TRUE;
+    strip = true;
+
+  /* Remember if this symbol should be stripped.  */
+  bool should_strip = strip;
+
+  /* Strip undefined weak symbols link if they don't have relocation.  */
+  if (!strip)
+    strip = !h->has_reloc && h->root.type == bfd_link_hash_undefweak;
 
   type = h->type;
 
@@ -9977,7 +10896,7 @@ elf_link_output_extsym (struct bfd_hash_
       && h->dynindx == -1
       && type != STT_GNU_IFUNC
       && !h->forced_local)
-    return TRUE;
+    return true;
 
   sym.st_value = 0;
   sym.st_size = h->size;
@@ -9988,7 +10907,7 @@ elf_link_output_extsym (struct bfd_hash_
     case bfd_link_hash_new:
     case bfd_link_hash_warning:
       abort ();
-      return FALSE;
+      return false;
 
     case bfd_link_hash_undefined:
     case bfd_link_hash_undefweak:
@@ -10012,8 +10931,8 @@ elf_link_output_extsym (struct bfd_hash_
 		  (_("%pB: could not find output section %pA for input section %pA"),
 		   flinfo->output_bfd, input_sec->output_section, input_sec);
 		bfd_set_error (bfd_error_nonrepresentable_section);
-		eoinfo->failed = TRUE;
-		return FALSE;
+		eoinfo->failed = true;
+		return false;
 	      }
 
 	    /* ELF symbols in relocatable files are section relative,
@@ -10054,7 +10973,7 @@ elf_link_output_extsym (struct bfd_hash_
 	 foo is used with no version, then we add an indirect symbol
 	 foo which points to foo@@GNU_1.2.  We ignore these symbols,
 	 since the indirected symbol is already in the hash table.  */
-      return TRUE;
+      return true;
     }
 
   if (type == STT_COMMON || type == STT_OBJECT)
@@ -10112,9 +11031,13 @@ elf_link_output_extsym (struct bfd_hash_
       if (! ((*bed->elf_backend_finish_dynamic_symbol)
 	     (flinfo->output_bfd, flinfo->info, h, &sym)))
 	{
-	  eoinfo->failed = TRUE;
-	  return FALSE;
+	  eoinfo->failed = true;
+	  return false;
 	}
+      /* If a symbol is in the dynamic symbol table and isn't a
+	 should-strip symbol, also keep it in the symbol table.  */
+      if (!should_strip)
+	strip = false;
     }
 
   /* If we are marking the symbol as undefined, and there are no
@@ -10172,8 +11095,8 @@ elf_link_output_extsym (struct bfd_hash_
 	msg = _("%pB: hidden symbol `%s' isn't defined");
       _bfd_error_handler (msg, flinfo->output_bfd, h->root.root.string);
       bfd_set_error (bfd_error_bad_value);
-      eoinfo->failed = TRUE;
-      return FALSE;
+      eoinfo->failed = true;
+      return false;
     }
 
   /* If this symbol should be put in the .dynsym section, then put it
@@ -10203,8 +11126,8 @@ elf_link_output_extsym (struct bfd_hash_
 		/* xgettext:c-format */
 		(_("%pB: no symbol version section for versioned symbol `%s'"),
 		 flinfo->output_bfd, h->root.root.string);
-	      eoinfo->failed = TRUE;
-	      return FALSE;
+	      eoinfo->failed = true;
+	      return false;
 	    }
 	}
 
@@ -10213,9 +11136,15 @@ elf_link_output_extsym (struct bfd_hash_
 	      + h->dynindx * bed->s->sizeof_sym);
       if (!check_dynsym (flinfo->output_bfd, &sym))
 	{
-	  eoinfo->failed = TRUE;
-	  return FALSE;
+	  eoinfo->failed = true;
+	  return false;
 	}
+
+      /* Inform the linker of the addition of this symbol.  */
+
+      if (flinfo->info->callbacks->ctf_new_dynsym)
+	flinfo->info->callbacks->ctf_new_dynsym (h->dynindx, &sym);
+
       bed->s->swap_symbol_out (flinfo->output_bfd, &sym, esym, 0);
 
       if (flinfo->hash_sec != NULL)
@@ -10251,7 +11180,7 @@ elf_link_output_extsym (struct bfd_hash_
 	      if (h->verinfo.verdef == NULL
 		  || (elf_dyn_lib_class (h->verinfo.verdef->vd_bfd)
 		      & (DYN_AS_NEEDED | DYN_DT_NEEDED | DYN_NO_NEEDED)))
-		iversym.vs_vers = 0;
+		iversym.vs_vers = 1;
 	      else
 		iversym.vs_vers = h->verinfo.verdef->vd_exp_refno + 1;
 	    }
@@ -10284,14 +11213,14 @@ elf_link_output_extsym (struct bfd_hash_
 	   /* PR 22319 Do not strip global undefined symbols marked as being needed.  */
 	   && (h->mark != 1 || ELF_ST_BIND (sym.st_info) != STB_GLOBAL)
 	   && !bfd_link_relocatable (flinfo->info))
-    return TRUE;
+    return true;
 
   /* Also strip others that we couldn't earlier due to dynamic symbol
      processing.  */
   if (strip)
-    return TRUE;
+    return true;
   if ((input_sec->flags & SEC_EXCLUDE) != 0)
-    return TRUE;
+    return true;
 
   /* Output a FILE symbol so that following locals are not associated
      with the wrong input file.  We need one for forced local symbols
@@ -10311,9 +11240,9 @@ elf_link_output_extsym (struct bfd_hash_
       fsym.st_shndx = SHN_ABS;
       if (!elf_link_output_symstrtab (eoinfo->flinfo, NULL, &fsym,
 				      bfd_und_section_ptr, NULL))
-	return FALSE;
+	return false;
 
-      eoinfo->file_sym_done = TRUE;
+      eoinfo->file_sym_done = true;
     }
 
   indx = bfd_get_symcount (flinfo->output_bfd);
@@ -10321,21 +11250,21 @@ elf_link_output_extsym (struct bfd_hash_
 				   input_sec, h);
   if (ret == 0)
     {
-      eoinfo->failed = TRUE;
-      return FALSE;
+      eoinfo->failed = true;
+      return false;
     }
   else if (ret == 1)
     h->indx = indx;
   else if (h->indx == -2)
     abort();
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if special handling is done for relocs in SEC against
    symbols defined in discarded sections.  */
 
-static bfd_boolean
+static bool
 elf_section_ignore_discarded_relocs (asection *sec)
 {
   const struct elf_backend_data *bed;
@@ -10345,7 +11274,8 @@ elf_section_ignore_discarded_relocs (ase
     case SEC_INFO_TYPE_STABS:
     case SEC_INFO_TYPE_EH_FRAME:
     case SEC_INFO_TYPE_EH_FRAME_ENTRY:
-      return TRUE;
+    case SEC_INFO_TYPE_SFRAME:
+      return true;
     default:
       break;
     }
@@ -10353,9 +11283,9 @@ elf_section_ignore_discarded_relocs (ase
   bed = get_elf_backend_data (sec->owner);
   if (bed->elf_backend_ignore_discarded_relocs != NULL
       && (*bed->elf_backend_ignore_discarded_relocs) (sec))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Return a mask saying how ld should treat relocations in SEC against
@@ -10370,12 +11300,22 @@ elf_section_ignore_discarded_relocs (ase
 unsigned int
 _bfd_elf_default_action_discarded (asection *sec)
 {
+  const struct elf_backend_data *bed;
+  bed = get_elf_backend_data (sec->owner);
+
   if (sec->flags & SEC_DEBUGGING)
     return PRETEND;
 
   if (strcmp (".eh_frame", sec->name) == 0)
     return 0;
 
+  if (bed->elf_backend_can_make_multiple_eh_frame
+      && strncmp (sec->name, ".eh_frame.", 10) == 0)
+    return 0;
+
+  if (elf_section_type (sec) == SHT_GNU_SFRAME)
+    return 0;
+
   if (strcmp (".gcc_except_table", sec->name) == 0)
     return 0;
 
@@ -10418,10 +11358,21 @@ _bfd_elf_check_kept_section (asection *s
     {
       if ((kept->flags & SEC_GROUP) != 0)
 	kept = match_group_member (sec, kept, info);
-      if (kept != NULL
-	  && ((sec->rawsize != 0 ? sec->rawsize : sec->size)
-	      != (kept->rawsize != 0 ? kept->rawsize : kept->size)))
-	kept = NULL;
+      if (kept != NULL)
+	{
+	  if ((sec->rawsize != 0 ? sec->rawsize : sec->size)
+	      != (kept->rawsize != 0 ? kept->rawsize : kept->size))
+	    kept = NULL;
+	  else
+	    {
+	      /* Get the real kept section.  */
+	      asection *next;
+	      for (next = kept->kept_section;
+		   next != NULL;
+		   next = next->kept_section)
+		kept = next;
+	    }
+	}
       sec->kept_section = kept;
     }
   return kept;
@@ -10432,7 +11383,7 @@ _bfd_elf_check_kept_section (asection *s
    This is so that we only have to read the local symbols once, and
    don't have to keep them in memory.  */
 
-static bfd_boolean
+static bool
 elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd)
 {
   int (*relocate_section)
@@ -10453,7 +11404,7 @@ elf_link_input_bfd (struct elf_final_lin
   bfd_size_type address_size;
   bfd_vma r_type_mask;
   int r_sym_shift;
-  bfd_boolean have_file_sym = FALSE;
+  bool have_file_sym = false;
 
   output_bfd = flinfo->output_bfd;
   bed = get_elf_backend_data (output_bfd);
@@ -10463,7 +11414,7 @@ elf_link_input_bfd (struct elf_final_lin
      we don't want the local symbols, and we don't want the section
      contents.  */
   if ((input_bfd->flags & DYNAMIC) != 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
   if (elf_bad_symtab (input_bfd))
@@ -10477,6 +11428,16 @@ elf_link_input_bfd (struct elf_final_lin
       extsymoff = symtab_hdr->sh_info;
     }
 
+  /* Enable GNU OSABI features in the output BFD that are used in the input
+     BFD.  */
+  if (bed->elf_osabi == ELFOSABI_NONE
+      || bed->elf_osabi == ELFOSABI_GNU
+      || bed->elf_osabi == ELFOSABI_FREEBSD)
+    elf_tdata (output_bfd)->has_gnu_osabi
+      |= (elf_tdata (input_bfd)->has_gnu_osabi
+	  & (bfd_link_relocatable (flinfo->info)
+	     ? -1 : ~elf_gnu_osabi_retain));
+
   /* Read the local symbols.  */
   isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
   if (isymbuf == NULL && locsymcount != 0)
@@ -10486,13 +11447,13 @@ elf_link_input_bfd (struct elf_final_lin
 				      flinfo->external_syms,
 				      flinfo->locsym_shndx);
       if (isymbuf == NULL)
-	return FALSE;
+	return false;
     }
 
   /* Find local symbol sections and adjust values of symbols in
      SEC_MERGE sections.  Write out those local symbols we know are
      going into the output file.  */
-  isymend = isymbuf + locsymcount;
+  isymend = PTR_ADD (isymbuf, locsymcount);
   for (isym = isymbuf, pindex = flinfo->indices, ppsection = flinfo->sections;
        isym < isymend;
        isym++, pindex++, ppsection++)
@@ -10567,21 +11528,21 @@ elf_link_input_bfd (struct elf_final_lin
 
       /* If this symbol is defined in a section which we are
 	 discarding, we don't need to keep it.  */
-      if (isym->st_shndx != SHN_UNDEF
-	  && isym->st_shndx < SHN_LORESERVE
-	  && bfd_section_removed_from_list (output_bfd,
-					    isec->output_section))
+      if (isym->st_shndx < SHN_LORESERVE
+	  && (isec->output_section == NULL
+	      || bfd_section_removed_from_list (output_bfd,
+						isec->output_section)))
 	continue;
 
       /* Get the name of the symbol.  */
       name = bfd_elf_string_from_elf_section (input_bfd, symtab_hdr->sh_link,
 					      isym->st_name);
       if (name == NULL)
-	return FALSE;
+	return false;
 
       /* See if we are discarding symbols with this name.  */
       if ((flinfo->info->strip == strip_some
-	   && (bfd_hash_lookup (flinfo->info->keep_hash, name, FALSE, FALSE)
+	   && (bfd_hash_lookup (flinfo->info->keep_hash, name, false, false)
 	       == NULL))
 	  || (((flinfo->info->discard == discard_sec_merge
 		&& (isec->flags & SEC_MERGE)
@@ -10596,7 +11557,7 @@ elf_link_input_bfd (struct elf_final_lin
 	    /* -flto puts a temp file name here.  This means builds
 	       are not reproducible.  Discard the symbol.  */
 	    continue;
-	  have_file_sym = TRUE;
+	  have_file_sym = true;
 	  flinfo->filesym_count += 1;
 	}
       if (!have_file_sym)
@@ -10607,17 +11568,19 @@ elf_link_input_bfd (struct elf_final_lin
 	     files lack such, so that their symbols won't be
 	     associated with a previous input file.  It's not the
 	     source file, but the best we can do.  */
-	  have_file_sym = TRUE;
+	  const char *filename;
+	  have_file_sym = true;
 	  flinfo->filesym_count += 1;
 	  memset (&osym, 0, sizeof (osym));
 	  osym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FILE);
 	  osym.st_shndx = SHN_ABS;
-	  if (!elf_link_output_symstrtab (flinfo,
-					  (input_bfd->lto_output ? NULL
-					   : input_bfd->filename),
-					  &osym, bfd_abs_section_ptr,
-					  NULL))
-	    return FALSE;
+	  if (input_bfd->lto_output)
+	    filename = NULL;
+	  else
+	    filename = lbasename (bfd_get_filename (input_bfd));
+	  if (!elf_link_output_symstrtab (flinfo, filename, &osym,
+					  bfd_abs_section_ptr, NULL))
+	    return false;
 	}
 
       osym = *isym;
@@ -10626,7 +11589,7 @@ elf_link_input_bfd (struct elf_final_lin
       osym.st_shndx = _bfd_elf_section_from_bfd_section (output_bfd,
 							 isec->output_section);
       if (osym.st_shndx == SHN_BAD)
-	return FALSE;
+	return false;
 
       /* ELF symbols in relocatable files are section relative, but
 	 in executable files they are virtual addresses.  Note that
@@ -10653,7 +11616,7 @@ elf_link_input_bfd (struct elf_final_lin
       indx = bfd_get_symcount (output_bfd);
       ret = elf_link_output_symstrtab (flinfo, name, &osym, isec, NULL);
       if (ret == 0)
-	return FALSE;
+	return false;
       else if (ret == 1)
 	*pindex = indx;
     }
@@ -10696,10 +11659,19 @@ elf_link_input_bfd (struct elf_final_lin
 	      || (elf_bad_symtab (input_bfd)
 		  && flinfo->sections[symndx] == NULL))
 	    {
-	      struct elf_link_hash_entry *h = sym_hashes[symndx - extsymoff];
-	      while (h->root.type == bfd_link_hash_indirect
-		     || h->root.type == bfd_link_hash_warning)
-		h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	      struct elf_link_hash_entry *h;
+
+	      h = get_link_hash_entry (sym_hashes, symndx, extsymoff);
+	      if (h == NULL)
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("error: %pB: unable to create group section symbol"),
+		     input_bfd);
+		  bfd_set_error (bfd_error_bad_value);
+		  return false;
+		}	      
+
 	      /* Arrange for symbol to be output.  */
 	      h->indx = -2;
 	      elf_section_data (osec)->this_hdr.sh_info = -2;
@@ -10725,12 +11697,12 @@ elf_link_input_bfd (struct elf_final_lin
 							  symtab_hdr->sh_link,
 							  sym.st_name);
 		  if (name == NULL)
-		    return FALSE;
+		    return false;
 
 		  sym.st_shndx = _bfd_elf_section_from_bfd_section (output_bfd,
 								    sec);
 		  if (sym.st_shndx == SHN_BAD)
-		    return FALSE;
+		    return false;
 
 		  sym.st_value += o->output_offset;
 
@@ -10738,7 +11710,7 @@ elf_link_input_bfd (struct elf_final_lin
 		  ret = elf_link_output_symstrtab (flinfo, name, &sym, o,
 						   NULL);
 		  if (ret == 0)
-		    return FALSE;
+		    return false;
 		  else if (ret == 1)
 		    flinfo->indices[symndx] = indx;
 		  else
@@ -10775,11 +11747,19 @@ elf_link_input_bfd (struct elf_final_lin
 	      contents = flinfo->contents;
 	    }
 	}
+      else if (!(o->flags & SEC_RELOC)
+	       && !bed->elf_backend_write_section
+	       && o->sec_info_type == SEC_INFO_TYPE_MERGE)
+	/* A MERGE section that has no relocations doesn't need the
+	   contents anymore, they have been recorded earlier.  Except
+	   if the backend has special provisions for writing sections.  */
+	contents = NULL;
       else
 	{
 	  contents = flinfo->contents;
-	  if (! bfd_get_full_section_contents (input_bfd, o, &contents))
-	    return FALSE;
+	  if (! _bfd_elf_link_mmap_section_contents (input_bfd, o,
+						     &contents))
+	    return false;
 	}
 
       if ((o->flags & SEC_RELOC) != 0)
@@ -10791,36 +11771,13 @@ elf_link_input_bfd (struct elf_final_lin
 
 	  /* Get the swapped relocs.  */
 	  internal_relocs
-	    = _bfd_elf_link_read_relocs (input_bfd, o, flinfo->external_relocs,
-					 flinfo->internal_relocs, FALSE);
+	    = _bfd_elf_link_info_read_relocs (input_bfd, flinfo->info, o,
+					      flinfo->external_relocs,
+					      flinfo->internal_relocs,
+					      false);
 	  if (internal_relocs == NULL
 	      && o->reloc_count > 0)
-	    return FALSE;
-
-	  /* We need to reverse-copy input .ctors/.dtors sections if
-	     they are placed in .init_array/.finit_array for output.  */
-	  if (o->size > address_size
-	      && ((strncmp (o->name, ".ctors", 6) == 0
-		   && strcmp (o->output_section->name,
-			      ".init_array") == 0)
-		  || (strncmp (o->name, ".dtors", 6) == 0
-		      && strcmp (o->output_section->name,
-				 ".fini_array") == 0))
-	      && (o->name[6] == 0 || o->name[6] == '.'))
-	    {
-	      if (o->size * bed->s->int_rels_per_ext_rel
-		  != o->reloc_count * address_size)
-		{
-		  _bfd_error_handler
-		    /* xgettext:c-format */
-		    (_("error: %pB: size of section %pA is not "
-		       "multiple of address size"),
-		     input_bfd, o);
-		  bfd_set_error (bfd_error_bad_value);
-		  return FALSE;
-		}
-	      o->flags |= SEC_ELF_REVERSE_COPY;
-	    }
+	    return false;
 
 	  action_discarded = -1;
 	  if (!elf_section_ignore_discarded_relocs (o))
@@ -10849,7 +11806,7 @@ elf_link_input_bfd (struct elf_final_lin
 		  || (elf_bad_symtab (input_bfd)
 		      && flinfo->sections[r_symndx] == NULL))
 		{
-		  h = sym_hashes[r_symndx - extsymoff];
+		  h = get_link_hash_entry (sym_hashes, r_symndx, extsymoff);
 
 		  /* Badly formatted input files can contain relocs that
 		     reference non-existant symbols.  Check here so that
@@ -10858,17 +11815,13 @@ elf_link_input_bfd (struct elf_final_lin
 		    {
 		      _bfd_error_handler
 			/* xgettext:c-format */
-			(_("error: %pB contains a reloc (%#" PRIx64 ") for section %pA "
+			(_("error: %pB contains a reloc (%#" PRIx64 ") for section '%pA' "
 			   "that references a non-existent global symbol"),
 			 input_bfd, (uint64_t) rel->r_info, o);
 		      bfd_set_error (bfd_error_bad_value);
-		      return FALSE;
+		      return false;
 		    }
 
-		  while (h->root.type == bfd_link_hash_indirect
-			 || h->root.type == bfd_link_hash_warning)
-		    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-
 		  s_type = h->type;
 
 		  /* If a plugin symbol is referenced from a non-IR file,
@@ -10916,7 +11869,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);
@@ -10926,7 +11879,7 @@ elf_link_input_bfd (struct elf_final_lin
 #endif
 		  if (!eval_symbol (&val, &sym_name, input_bfd, flinfo, dot,
 				    isymbuf, locsymcount, s_type == STT_SRELC))
-		    return FALSE;
+		    return false;
 
 		  /* Symbol evaluated OK.  Update to absolute value.  */
 		  set_symbol_value (input_bfd, isymbuf, locsymcount,
@@ -10996,7 +11949,7 @@ elf_link_input_bfd (struct elf_final_lin
 				     isymbuf,
 				     flinfo->sections);
 	  if (!ret)
-	    return FALSE;
+	    return false;
 
 	  if (ret == 2
 	      || bfd_link_relocatable (flinfo->info)
@@ -11009,18 +11962,18 @@ elf_link_input_bfd (struct elf_final_lin
 	      struct elf_link_hash_entry **rel_hash_list, **rela_hash_list;
 	      Elf_Internal_Shdr *input_rel_hdr, *input_rela_hdr;
 	      unsigned int next_erel;
-	      bfd_boolean rela_normal;
+	      bool rela_normal;
 	      struct bfd_elf_section_data *esdi, *esdo;
 
 	      esdi = elf_section_data (o);
 	      esdo = elf_section_data (o->output_section);
-	      rela_normal = FALSE;
+	      rela_normal = false;
 
 	      /* Adjust the reloc addresses and symbol indices.  */
 
 	      irela = internal_relocs;
 	      irelaend = irela + o->reloc_count;
-	      rel_hash = esdo->rel.hashes + esdo->rel.count;
+	      rel_hash = PTR_ADD (esdo->rel.hashes, esdo->rel.count);
 	      /* We start processing the REL relocs, if any.  When we reach
 		 IRELAMID in the loop, we switch to the RELA relocs.  */
 	      irelamid = irela;
@@ -11046,7 +11999,7 @@ elf_link_input_bfd (struct elf_final_lin
 
 		  if (irela == irelamid)
 		    {
-		      rel_hash = esdo->rela.hashes + esdo->rela.count;
+		      rel_hash = PTR_ADD (esdo->rela.hashes, esdo->rela.count);
 		      rela_hash_list = rel_hash;
 		      rela_normal = bed->rela_normal;
 		    }
@@ -11084,7 +12037,6 @@ elf_link_input_bfd (struct elf_final_lin
 			  && flinfo->sections[r_symndx] == NULL))
 		    {
 		      struct elf_link_hash_entry *rh;
-		      unsigned long indx;
 
 		      /* This is a reloc against a global symbol.  We
 			 have not yet output all the local symbols, so
@@ -11093,15 +12045,16 @@ elf_link_input_bfd (struct elf_final_lin
 			 reloc to point to the global hash table entry
 			 for this symbol.  The symbol index is then
 			 set at the end of bfd_elf_final_link.  */
-		      indx = r_symndx - extsymoff;
-		      rh = elf_sym_hashes (input_bfd)[indx];
-		      while (rh->root.type == bfd_link_hash_indirect
-			     || rh->root.type == bfd_link_hash_warning)
-			rh = (struct elf_link_hash_entry *) rh->root.u.i.link;
-
-		      /* Setting the index to -2 tells
-			 elf_link_output_extsym that this symbol is
-			 used by a reloc.  */
+		      rh = get_link_hash_entry (elf_sym_hashes (input_bfd),
+						r_symndx, extsymoff);
+		      if (rh == NULL)
+			{
+			  /* FIXME: Generate an error ?  */
+			  continue;
+			}
+
+		      /* Setting the index to -2 tells elf_link_output_extsym
+			 that this symbol is used by a reloc.  */
 		      BFD_ASSERT (rh->indx < 0);
 		      rh->indx = -2;
 		      *rel_hash = rh;
@@ -11125,7 +12078,7 @@ elf_link_input_bfd (struct elf_final_lin
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -11177,7 +12130,7 @@ elf_link_input_bfd (struct elf_final_lin
 			    {
 			      /* You can't do ld -r -s.  */
 			      bfd_set_error (bfd_error_invalid_operation);
-			      return FALSE;
+			      return false;
 			    }
 
 			  /* This symbol was skipped earlier, but
@@ -11187,14 +12140,14 @@ elf_link_input_bfd (struct elf_final_lin
 			  name = (bfd_elf_string_from_elf_section
 				  (input_bfd, shlink, sym.st_name));
 			  if (name == NULL)
-			    return FALSE;
+			    return false;
 
 			  osec = sec->output_section;
 			  sym.st_shndx =
 			    _bfd_elf_section_from_bfd_section (output_bfd,
 							       osec);
 			  if (sym.st_shndx == SHN_BAD)
-			    return FALSE;
+			    return false;
 
 			  sym.st_value += sec->output_offset;
 			  if (!bfd_link_relocatable (flinfo->info))
@@ -11221,7 +12174,7 @@ elf_link_input_bfd (struct elf_final_lin
 							   &sym, sec,
 							   NULL);
 			  if (ret == 0)
-			    return FALSE;
+			    return false;
 			  else if (ret == 1)
 			    flinfo->indices[r_symndx] = indx;
 			  else
@@ -11243,7 +12196,7 @@ elf_link_input_bfd (struct elf_final_lin
 						     input_rel_hdr,
 						     internal_relocs,
 						     rel_hash_list))
-		    return FALSE;
+		    return false;
 		  internal_relocs += (NUM_SHDR_ENTRIES (input_rel_hdr)
 				      * bed->s->int_rels_per_ext_rel);
 		  rel_hash_list += NUM_SHDR_ENTRIES (input_rel_hdr);
@@ -11256,7 +12209,7 @@ elf_link_input_bfd (struct elf_final_lin
 						     input_rela_hdr,
 						     internal_relocs,
 						     rela_hash_list))
-		    return FALSE;
+		    return false;
 		}
 	    }
 	}
@@ -11275,18 +12228,18 @@ elf_link_input_bfd (struct elf_final_lin
 		 (output_bfd,
 		  &elf_hash_table (flinfo->info)->stab_info,
 		  o, &elf_section_data (o)->sec_info, contents)))
-	    return FALSE;
+	    return false;
 	  break;
 	case SEC_INFO_TYPE_MERGE:
 	  if (! _bfd_write_merged_section (output_bfd, o,
 					   elf_section_data (o)->sec_info))
-	    return FALSE;
+	    return false;
 	  break;
 	case SEC_INFO_TYPE_EH_FRAME:
 	  {
 	    if (! _bfd_elf_write_section_eh_frame (output_bfd, flinfo->info,
 						   o, contents))
-	      return FALSE;
+	      return false;
 	  }
 	  break;
 	case SEC_INFO_TYPE_EH_FRAME_ENTRY:
@@ -11294,9 +12247,19 @@ elf_link_input_bfd (struct elf_final_lin
 	    if (! _bfd_elf_write_section_eh_frame_entry (output_bfd,
 							 flinfo->info,
 							 o, contents))
-	      return FALSE;
+	      return false;
 	  }
 	  break;
+	case SEC_INFO_TYPE_SFRAME:
+	    {
+	      /* Merge SFrame section into the SFrame encoder context of the
+		 output_bfd's section.  The final .sframe output section will
+		 be written out later.  */
+	      if (!_bfd_elf_merge_section_sframe (output_bfd, flinfo->info,
+						  o, contents))
+		return false;
+	    }
+	    break;
 	default:
 	  {
 	    if (! (o->flags & SEC_EXCLUDE))
@@ -11306,9 +12269,25 @@ elf_link_input_bfd (struct elf_final_lin
 
 		offset *= bfd_octets_per_byte (output_bfd, o);
 
-		if ((o->flags & SEC_ELF_REVERSE_COPY))
+		if ((o->flags & SEC_ELF_REVERSE_COPY)
+		    && o->size > address_size)
 		  {
 		    /* Reverse-copy input section to output.  */
+
+		    if ((o->size & (address_size - 1)) != 0
+			|| (o->reloc_count != 0
+			    && (o->size * bed->s->int_rels_per_ext_rel
+				!= o->reloc_count * address_size)))
+		      {
+			_bfd_error_handler
+			  /* xgettext:c-format */
+			  (_("error: %pB: size of section %pA is not "
+			     "multiple of address size"),
+			   input_bfd, o);
+			bfd_set_error (bfd_error_bad_value);
+			return false;
+		      }
+
 		    do
 		      {
 			todo -= address_size;
@@ -11317,7 +12296,7 @@ elf_link_input_bfd (struct elf_final_lin
 							contents + todo,
 							offset,
 							address_size))
-			  return FALSE;
+			  return false;
 			if (todo == 0)
 			  break;
 			offset += address_size;
@@ -11328,14 +12307,17 @@ elf_link_input_bfd (struct elf_final_lin
 						     o->output_section,
 						     contents,
 						     offset, todo))
-		  return FALSE;
+		  return false;
 	      }
 	  }
 	  break;
 	}
+
+      /* Munmap the section contents for each input section.  */
+      _bfd_elf_link_munmap_section_contents (o);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Generate a reloc when linking an ELF file.  This is a reloc
@@ -11343,7 +12325,7 @@ elf_link_input_bfd (struct elf_final_lin
    is used to build constructor and destructor tables when linking
    with -Ur.  */
 
-static bfd_boolean
+static bool
 elf_reloc_link_order (bfd *output_bfd,
 		      struct bfd_link_info *info,
 		      asection *output_section,
@@ -11366,7 +12348,7 @@ elf_reloc_link_order (bfd *output_bfd,
   if (howto == NULL)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   addend = link_order->u.reloc.p->addend;
@@ -11398,7 +12380,7 @@ elf_reloc_link_order (bfd *output_bfd,
       h = ((struct elf_link_hash_entry *)
 	   bfd_wrapped_link_hash_lookup (output_bfd, info,
 					 link_order->u.reloc.p->u.name,
-					 FALSE, FALSE, TRUE));
+					 false, false, true));
       if (h != NULL
 	  && (h->root.type == bfd_link_hash_defined
 	      || h->root.type == bfd_link_hash_defweak))
@@ -11436,14 +12418,14 @@ elf_reloc_link_order (bfd *output_bfd,
       bfd_size_type size;
       bfd_reloc_status_type rstat;
       bfd_byte *buf;
-      bfd_boolean ok;
+      bool ok;
       const char *sym_name;
       bfd_size_type octets;
 
       size = (bfd_size_type) bfd_get_reloc_size (howto);
       buf = (bfd_byte *) bfd_zmalloc (size);
       if (buf == NULL && size != 0)
-	return FALSE;
+	return false;
       rstat = _bfd_relocate_contents (howto, output_bfd, addend, buf);
       switch (rstat)
 	{
@@ -11471,7 +12453,7 @@ elf_reloc_link_order (bfd *output_bfd,
 				     octets, size);
       free (buf);
       if (! ok)
-	return FALSE;
+	return false;
     }
 
   /* The address of a reloc is relative to the section in a
@@ -11508,149 +12490,16 @@ elf_reloc_link_order (bfd *output_bfd,
 
   ++reldata->count;
 
-  return TRUE;
-}
-
-
-/* Compare two sections based on the locations of the sections they are
-   linked to.  Used by elf_fixup_link_order.  */
-
-static int
-compare_link_order (const void *a, const void *b)
-{
-  const struct bfd_link_order *alo = *(const struct bfd_link_order **) a;
-  const struct bfd_link_order *blo = *(const struct bfd_link_order **) b;
-  asection *asec = elf_linked_to_section (alo->u.indirect.section);
-  asection *bsec = elf_linked_to_section (blo->u.indirect.section);
-  bfd_vma apos = asec->output_section->lma + asec->output_offset;
-  bfd_vma bpos = bsec->output_section->lma + bsec->output_offset;
-
-  if (apos < bpos)
-    return -1;
-  if (apos > bpos)
-    return 1;
-
-  /* The only way we should get matching LMAs is when the first of two
-     sections has zero size.  */
-  if (asec->size < bsec->size)
-    return -1;
-  if (asec->size > bsec->size)
-    return 1;
-
-  /* If they are both zero size then they almost certainly have the same
-     VMA and thus are not ordered with respect to each other.  Test VMA
-     anyway, and fall back to id to make the result reproducible across
-     qsort implementations.  */
-  apos = asec->output_section->vma + asec->output_offset;
-  bpos = bsec->output_section->vma + bsec->output_offset;
-  if (apos < bpos)
-    return -1;
-  if (apos > bpos)
-    return 1;
-
-  return asec->id - bsec->id;
-}
-
-
-/* Looks for sections with SHF_LINK_ORDER set.  Rearranges them into the same
-   order as their linked sections.  Returns false if this could not be done
-   because an output section includes both ordered and unordered
-   sections.  Ideally we'd do this in the linker proper.  */
-
-static bfd_boolean
-elf_fixup_link_order (bfd *abfd, asection *o)
-{
-  size_t seen_linkorder;
-  size_t seen_other;
-  size_t n;
-  struct bfd_link_order *p;
-  bfd *sub;
-  struct bfd_link_order **sections;
-  asection *s, *other_sec, *linkorder_sec;
-  bfd_vma offset;
-
-  other_sec = NULL;
-  linkorder_sec = NULL;
-  seen_other = 0;
-  seen_linkorder = 0;
-  for (p = o->map_head.link_order; p != NULL; p = p->next)
-    {
-      if (p->type == bfd_indirect_link_order)
-	{
-	  s = p->u.indirect.section;
-	  sub = s->owner;
-	  if ((s->flags & SEC_LINKER_CREATED) == 0
-	      && bfd_get_flavour (sub) == bfd_target_elf_flavour
-	      && elf_section_data (s) != NULL
-	      && elf_linked_to_section (s) != NULL)
-	    {
-	      seen_linkorder++;
-	      linkorder_sec = s;
-	    }
-	  else
-	    {
-	      seen_other++;
-	      other_sec = s;
-	    }
-	}
-      else
-	seen_other++;
-
-      if (seen_other && seen_linkorder)
-	{
-	  if (other_sec && linkorder_sec)
-	    _bfd_error_handler
-	      /* xgettext:c-format */
-	      (_("%pA has both ordered [`%pA' in %pB] "
-		 "and unordered [`%pA' in %pB] sections"),
-	       o, linkorder_sec, linkorder_sec->owner,
-	       other_sec, other_sec->owner);
-	  else
-	    _bfd_error_handler
-	      (_("%pA has both ordered and unordered sections"), o);
-	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
-	}
-    }
-
-  if (!seen_linkorder)
-    return TRUE;
-
-  sections = bfd_malloc (seen_linkorder * sizeof (*sections));
-  if (sections == NULL)
-    return FALSE;
-
-  seen_linkorder = 0;
-  for (p = o->map_head.link_order; p != NULL; p = p->next)
-    sections[seen_linkorder++] = p;
-
-  /* Sort the input sections in the order of their linked section.  */
-  qsort (sections, seen_linkorder, sizeof (*sections), compare_link_order);
-
-  /* Change the offsets of the sections.  */
-  offset = 0;
-  for (n = 0; n < seen_linkorder; n++)
-    {
-      bfd_vma mask;
-      s = sections[n]->u.indirect.section;
-      mask = ~(bfd_vma) 0 << s->alignment_power;
-      offset = (offset + ~mask) & mask;
-      s->output_offset = offset / bfd_octets_per_byte (abfd, s);
-      sections[n]->offset = offset;
-      offset += sections[n]->size;
-    }
-
-  free (sections);
-  return TRUE;
+  return true;
 }
 
 /* Generate an import library in INFO->implib_bfd from symbols in ABFD.
    Returns TRUE upon success, FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 elf_output_implib (bfd *abfd, struct bfd_link_info *info)
 {
-  bfd_boolean ret = FALSE;
+  bool ret = false;
   bfd *implib_bfd;
   const struct elf_backend_data *bed;
   flagword flags;
@@ -11661,19 +12510,20 @@ 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);
 
   if (!bfd_set_format (implib_bfd, bfd_object))
-    return FALSE;
+    return false;
 
   /* Use flag from executable but make it a relocatable object.  */
   flags = bfd_get_file_flags (abfd);
   flags &= ~HAS_RELOC;
   if (!bfd_set_start_address (implib_bfd, 0)
       || !bfd_set_file_flags (implib_bfd, flags & ~EXEC_P))
-    return FALSE;
+    return false;
 
   /* Copy architecture of output file to import library file.  */
   arch = bfd_get_arch (abfd);
@@ -11681,17 +12531,17 @@ elf_output_implib (bfd *abfd, struct bfd
   if (!bfd_set_arch_mach (implib_bfd, arch, mach)
       && (abfd->target_defaulted
 	  || bfd_get_arch (abfd) != bfd_get_arch (implib_bfd)))
-    return FALSE;
+    return false;
 
   /* Get symbol table size.  */
   symsize = bfd_get_symtab_upper_bound (abfd);
   if (symsize < 0)
-    return FALSE;
+    return false;
 
   /* Read in the symbol table.  */
   sympp = (asymbol **) bfd_malloc (symsize);
   if (sympp == NULL)
-    return FALSE;
+    return false;
 
   symcount = bfd_canonicalize_symtab (abfd, sympp);
   if (symcount < 0)
@@ -11718,8 +12568,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;
 
@@ -11746,9 +12596,9 @@ elf_output_implib (bfd *abfd, struct bfd
   if (!bfd_close (implib_bfd))
     goto free_sym_buf;
 
-  ret = TRUE;
+  ret = true;
 
-free_sym_buf:
+ free_sym_buf:
   free (sympp);
   return ret;
 }
@@ -11760,42 +12610,31 @@ 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);
     }
 }
 
 /* Do the final step of an ELF link.  */
 
-bfd_boolean
+bool
 bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 {
-  bfd_boolean dynamic;
-  bfd_boolean emit_relocs;
+  bool dynamic;
+  bool emit_relocs;
   bfd *dynobj;
   struct elf_final_link_info flinfo;
   asection *o;
@@ -11812,17 +12651,16 @@ bfd_elf_final_link (bfd *abfd, struct bf
   Elf_Internal_Shdr *symtab_shndx_hdr;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
   struct elf_outext_info eoinfo;
-  bfd_boolean merged;
-  size_t relativecount = 0;
+  bool merged;
+  size_t relativecount;
+  size_t relr_entsize;
   asection *reldyn = 0;
   bfd_size_type amt;
-  asection *attr_section = NULL;
-  bfd_vma attr_size = 0;
-  const char *std_attrs_section;
   struct elf_link_hash_table *htab = elf_hash_table (info);
+  bool sections_removed;
 
-  if (!is_elf_hash_table (htab))
-    return FALSE;
+  if (!is_elf_hash_table (&htab->root))
+    return false;
 
   if (bfd_link_pic (info))
     abfd->flags |= DYNAMIC;
@@ -11833,11 +12671,12 @@ 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 ();
   if (flinfo.symstrtab == NULL)
-    return FALSE;
+    return false;
 
   if (! dynamic)
     {
@@ -11852,26 +12691,22 @@ 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.  */
-  std_attrs_section = get_elf_backend_data (abfd)->obj_attrs_section;
+  sections_removed = false;
+  const char *obj_attrs_section = get_elf_backend_data (abfd)->obj_attrs_section;
   for (o = abfd->sections; o != NULL; o = o->next)
     {
-      bfd_boolean remove_section = FALSE;
+      bool remove_section = false;
 
-      if ((std_attrs_section && strcmp (o->name, std_attrs_section) == 0)
+      if ((obj_attrs_section && strcmp (o->name, obj_attrs_section) == 0)
 	  || strcmp (o->name, ".gnu.attributes") == 0)
 	{
 	  for (p = o->map_head.link_order; p != NULL; p = p->next)
@@ -11886,37 +12721,60 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	      input_section->flags &= ~SEC_HAS_CONTENTS;
 	    }
 
-	  attr_size = bfd_elf_obj_attr_size (abfd);
-	  bfd_set_section_size (o, attr_size);
 	  /* Skip this section later on.  */
 	  o->map_head.link_order = NULL;
-	  if (attr_size)
-	    attr_section = o;
+
+	  bfd_vma attr_size = bfd_elf_obj_attr_size (abfd);
+	  /* Once ELF headers have been written, the size of a section is
+	     frozen. We need to set the size of the attribute section before
+	     _bfd_elf_compute_section_file_positions.  */
+	  bfd_set_section_size (o, attr_size);
+	  if (attr_size > 0)
+	    elf_obj_build_attributes (abfd) = o;
 	  else
-	    remove_section = TRUE;
+	    remove_section = true;
 	}
       else if ((o->flags & SEC_GROUP) != 0 && o->size == 0)
 	{
 	  /* Remove empty group section from linker output.  */
-	  remove_section = TRUE;
+	  remove_section = true;
 	}
       if (remove_section)
 	{
 	  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
      also figure out some maximum sizes.  */
-  max_contents_size = 0;
-  max_external_reloc_size = 0;
+#ifdef USE_MMAP
+  if (bed->use_mmap)
+    {
+      /* Mmap is used only if section size >= the minimum mmap section
+	 size.  The initial max_contents_size value covers all sections
+	 smaller than the minimum mmap section size.  It may be increased
+	 for compressed or linker created sections or sections whose
+	 rawsize != size.  max_external_reloc_size covers all relocation
+	 sections smaller than the minimum mmap section size.  */
+      max_contents_size = _bfd_minimum_mmap_size;
+      max_external_reloc_size = _bfd_minimum_mmap_size;
+    }
+  else
+#endif
+    {
+      max_contents_size = 0;
+      max_external_reloc_size = 0;
+    }
   max_internal_reloc_count = 0;
   max_sym_count = 0;
   max_sym_shndx_count = 0;
-  merged = FALSE;
+  merged = false;
   for (o = abfd->sections; o != NULL; o = o->next)
     {
       struct bfd_elf_section_data *esdo = elf_section_data (o);
@@ -11941,15 +12799,25 @@ bfd_elf_final_link (bfd *abfd, struct bf
 		 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;
+	      sec->linker_mark = true;
 
 	      if (sec->flags & SEC_MERGE)
-		merged = TRUE;
+		merged = true;
 
-	      if (sec->rawsize > max_contents_size)
-		max_contents_size = sec->rawsize;
-	      if (sec->size > max_contents_size)
-		max_contents_size = sec->size;
+#ifdef USE_MMAP
+	      /* Mmap is used only on non-compressed, non-linker created
+		 sections whose rawsize == size.  */
+	      if (!bed->use_mmap
+		  || sec->compress_status != COMPRESS_SECTION_NONE
+		  || (sec->flags & SEC_LINKER_CREATED) != 0
+		  || sec->rawsize != sec->size)
+#endif
+		{
+		  if (sec->rawsize > max_contents_size)
+		    max_contents_size = sec->rawsize;
+		  if (sec->size > max_contents_size)
+		    max_contents_size = sec->size;
+		}
 
 	      if (bfd_get_flavour (sec->owner) == bfd_target_elf_flavour
 		  && (sec->owner->flags & DYNAMIC) == 0)
@@ -11971,8 +12839,10 @@ bfd_elf_final_link (bfd *abfd, struct bf
 		      && elf_symtab_shndx_list (sec->owner) != NULL)
 		    max_sym_shndx_count = sym_count;
 
-		  if (esdo->this_hdr.sh_type == SHT_REL
-		      || esdo->this_hdr.sh_type == SHT_RELA)
+		  esdi = elf_section_data (sec);
+
+		  if (esdi->this_hdr.sh_type == SHT_REL
+		      || esdi->this_hdr.sh_type == SHT_RELA)
 		    /* Some backends use reloc_count in relocation sections
 		       to count particular types of relocs.  Of course,
 		       reloc sections themselves can't have relocations.  */
@@ -11990,19 +12860,22 @@ bfd_elf_final_link (bfd *abfd, struct bf
 		  else if (bed->elf_backend_count_relocs)
 		    reloc_count = (*bed->elf_backend_count_relocs) (info, sec);
 
-		  esdi = elf_section_data (sec);
-
 		  if ((sec->flags & SEC_RELOC) != 0)
 		    {
-		      size_t ext_size = 0;
+#ifdef USE_MMAP
+		      if (!bed->use_mmap)
+#endif
+			{
+			  size_t ext_size = 0;
 
-		      if (esdi->rel.hdr != NULL)
-			ext_size = esdi->rel.hdr->sh_size;
-		      if (esdi->rela.hdr != NULL)
-			ext_size += esdi->rela.hdr->sh_size;
+			  if (esdi->rel.hdr != NULL)
+			    ext_size = esdi->rel.hdr->sh_size;
+			  if (esdi->rela.hdr != NULL)
+			    ext_size += esdi->rela.hdr->sh_size;
 
-		      if (ext_size > max_external_reloc_size)
-			max_external_reloc_size = ext_size;
+			  if (ext_size > max_external_reloc_size)
+			    max_external_reloc_size = ext_size;
+			}
 		      if (sec->reloc_count > max_internal_reloc_count)
 			max_internal_reloc_count = sec->reloc_count;
 		    }
@@ -12098,7 +12971,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	     later.  Use bfd_malloc since it will be freed by
 	     bfd_compress_section_contents.  */
 	  unsigned char *contents = esdo->this_hdr.contents;
-	  if ((o->flags & SEC_ELF_COMPRESS) == 0 || contents != NULL)
+	  if (contents != NULL)
 	    abort ();
 	  contents
 	    = (unsigned char *) bfd_malloc (esdo->this_hdr.sh_size);
@@ -12139,7 +13012,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
     {
       file_ptr off = elf_next_file_pos (abfd);
 
-      _bfd_elf_assign_file_position_for_section (symtab_hdr, off, TRUE);
+      _bfd_elf_assign_file_position_for_section (symtab_hdr, off, true, 0);
 
       /* Note that at this point elf_next_file_pos (abfd) is
 	 incorrect.  We do not yet know the size of the .symtab section.
@@ -12157,33 +13030,49 @@ bfd_elf_final_link (bfd *abfd, struct bf
 				     bfd_und_section_ptr, NULL) != 1)
 	goto error_return;
 
-      /* 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
-	 outputting relocs.  */
-
-      elfsym.st_size = 0;
-      elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
-      elfsym.st_other = 0;
-      elfsym.st_value = 0;
-      elfsym.st_target_internal = 0;
-      for (i = 1; i < elf_numsections (abfd); i++)
-	{
-	  o = bfd_section_from_elf_index (abfd, i);
-	  if (o != NULL)
-	    {
-	      o->target_index = bfd_get_symcount (abfd);
-	      elfsym.st_shndx = i;
-	      if (!bfd_link_relocatable (info))
-		elfsym.st_value = o->vma;
-	      if (elf_link_output_symstrtab (&flinfo, NULL, &elfsym, o,
-					     NULL) != 1)
-		goto error_return;
+      /* Output a symbol for each section if asked or they are used for
+	 relocs.  These 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.  */
+
+      if (bfd_keep_unused_section_symbols (abfd) || emit_relocs)
+	{
+	  bool name_local_sections
+	    = (bed->elf_backend_name_local_section_symbols
+	       && bed->elf_backend_name_local_section_symbols (abfd));
+	  const char *name = NULL;
+
+	  elfsym.st_size = 0;
+	  elfsym.st_info = ELF_ST_INFO (STB_LOCAL, STT_SECTION);
+	  elfsym.st_other = 0;
+	  elfsym.st_value = 0;
+	  elfsym.st_target_internal = 0;
+	  for (i = 1; i < elf_numsections (abfd); i++)
+	    {
+	      o = bfd_section_from_elf_index (abfd, i);
+	      if (o != NULL)
+		{
+		  o->target_index = bfd_get_symcount (abfd);
+		  elfsym.st_shndx = i;
+		  if (!bfd_link_relocatable (info))
+		    elfsym.st_value = o->vma;
+		  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 +13130,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 +13138,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 +13146,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
@@ -12268,15 +13158,16 @@ bfd_elf_final_link (bfd *abfd, struct bf
       htab->tls_size = end - base;
     }
 
-  /* Reorder SHF_LINK_ORDER sections.  */
-  for (o = abfd->sections; o != NULL; o = o->next)
-    {
-      if (!elf_fixup_link_order (abfd, o))
-	return FALSE;
-    }
-
   if (!_bfd_elf_fixup_eh_frame_hdr (info))
-    return FALSE;
+    return false;
+
+  /* Finish relative relocations here after regular symbol processing
+     is finished if DT_RELR is enabled.  */
+  if (info->enable_dt_relr
+      && bed->finish_relative_relocs
+      && !bed->finish_relative_relocs (info))
+    info->callbacks->fatal
+      (_("%P: %pB: failed to finish relative relocations\n"), abfd);
 
   /* Since ELF permits relocations to be against local symbols, we
      must have the local symbols available when we do the relocations.
@@ -12299,7 +13190,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
      know how bad the memory loss will be.  */
 
   for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
-    sub->output_has_begun = FALSE;
+    sub->output_has_begun = false;
   for (o = abfd->sections; o != NULL; o = o->next)
     {
       for (p = o->map_head.link_order; p != NULL; p = p->next)
@@ -12313,7 +13204,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
 		{
 		  if (! elf_link_input_bfd (&flinfo, sub))
 		    goto error_return;
-		  sub->output_has_begun = TRUE;
+		  sub->output_has_begun = true;
 		}
 	    }
 	  else if (p->type == bfd_section_reloc_link_order
@@ -12367,8 +13258,7 @@ 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;
@@ -12381,27 +13271,21 @@ bfd_elf_final_link (bfd *abfd, struct bf
      prior to any global symbols.  FIXME: We should only do this if
      some global symbols were, in fact, converted to become local.
      FIXME: Will this work correctly with the Irix 5 linker?  */
-  eoinfo.failed = FALSE;
+  eoinfo.failed = false;
   eoinfo.flinfo = &flinfo;
-  eoinfo.localsyms = TRUE;
-  eoinfo.file_sym_done = FALSE;
+  eoinfo.localsyms = true;
+  eoinfo.file_sym_done = false;
   bfd_hash_traverse (&info->hash->table, elf_link_output_extsym, &eoinfo);
   if (eoinfo.failed)
-    return FALSE;
+    goto error_return;
 
   /* If backend needs to output some local symbols not present in the hash
      table, do it now.  */
-  if (bed->elf_backend_output_arch_local_syms
-      && (info->strip != strip_all || emit_relocs))
+  if (bed->elf_backend_output_arch_local_syms)
     {
-      typedef int (*out_sym_func)
-	(void *, const char *, Elf_Internal_Sym *, asection *,
-	 struct elf_link_hash_entry *);
-
       if (! ((*bed->elf_backend_output_arch_local_syms)
-	     (abfd, info, &flinfo,
-	      (out_sym_func) elf_link_output_symstrtab)))
-	return FALSE;
+	     (abfd, info, &flinfo, elf_link_output_symstrtab)))
+	goto error_return;
     }
 
   /* That wrote out all the local symbols.  Finish up the symbol table
@@ -12410,7 +13294,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,9 +13332,15 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	      BFD_ASSERT (indx > 0);
 	      sym.st_shndx = indx;
 	      if (! check_dynsym (abfd, &sym))
-		return FALSE;
+		goto error_return;
 	      sym.st_value = s->vma;
 	      dest = dynsym + dynindx * bed->s->sizeof_sym;
+
+	      /* Inform the linker of the addition of this symbol.  */
+
+	      if (info->callbacks->ctf_new_dynsym)
+		info->callbacks->ctf_new_dynsym (dynindx, &sym);
+
 	      bed->s->swap_symbol_out (abfd, &sym, dest, 0);
 	    }
 	}
@@ -12468,20 +13359,28 @@ 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;
+		    goto error_return;
 		  sym.st_value = (s->output_section->vma
 				  + s->output_offset
 				  + e->isym.st_value);
 		}
 
+	      /* Inform the linker of the addition of this symbol.  */
+
+	      if (info->callbacks->ctf_new_dynsym)
+		info->callbacks->ctf_new_dynsym (e->dynindx, &sym);
+
 	      dest = dynsym + e->dynindx * bed->s->sizeof_sym;
 	      bed->s->swap_symbol_out (abfd, &sym, dest, 0);
 	    }
@@ -12489,26 +13388,21 @@ bfd_elf_final_link (bfd *abfd, struct bf
     }
 
   /* We get the global symbols from the hash table.  */
-  eoinfo.failed = FALSE;
-  eoinfo.localsyms = FALSE;
+  eoinfo.failed = false;
+  eoinfo.localsyms = false;
   eoinfo.flinfo = &flinfo;
   bfd_hash_traverse (&info->hash->table, elf_link_output_extsym, &eoinfo);
   if (eoinfo.failed)
-    return FALSE;
+    goto error_return;
 
   /* If backend needs to output some symbols not present in the hash
      table, do it now.  */
   if (bed->elf_backend_output_arch_syms
       && (info->strip != strip_all || emit_relocs))
     {
-      typedef int (*out_sym_func)
-	(void *, const char *, Elf_Internal_Sym *, asection *,
-	 struct elf_link_hash_entry *);
-
       if (! ((*bed->elf_backend_output_arch_syms)
-	     (abfd, info, &flinfo,
-	      (out_sym_func) elf_link_output_symstrtab)))
-	return FALSE;
+	     (abfd, info, &flinfo, elf_link_output_symstrtab)))
+	goto error_return;
     }
 
   /* Finalize the .strtab section.  */
@@ -12516,7 +13410,9 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
   /* Swap out the .strtab section. */
   if (!elf_link_swap_symbols_out (&flinfo))
-    return FALSE;
+    goto error_return;
+  free (htab->strtab);
+  htab->strtab = NULL;
 
   /* Now we know the size of the symtab section.  */
   if (bfd_get_symcount (abfd) > 0)
@@ -12539,11 +13435,11 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	      symtab_shndx_hdr->sh_size = amt;
 
 	      off = _bfd_elf_assign_file_position_for_section (symtab_shndx_hdr,
-							       off, TRUE);
+							       off, true, 0);
 
 	      if (bfd_seek (abfd, symtab_shndx_hdr->sh_offset, SEEK_SET) != 0
-		  || (bfd_bwrite (flinfo.symshndxbuf, amt, abfd) != amt))
-		return FALSE;
+		  || (bfd_write (flinfo.symshndxbuf, amt, abfd) != amt))
+		goto error_return;
 	    }
 	}
 
@@ -12560,26 +13456,26 @@ bfd_elf_final_link (bfd *abfd, struct bf
       symstrtab_hdr->sh_addralign = 1;
 
       off = _bfd_elf_assign_file_position_for_section (symstrtab_hdr,
-						       off, TRUE);
+						       off, true, 0);
       elf_next_file_pos (abfd) = off;
 
       if (bfd_seek (abfd, symstrtab_hdr->sh_offset, SEEK_SET) != 0
 	  || ! _bfd_elf_strtab_emit (abfd, flinfo.symstrtab))
-	return FALSE;
+	goto error_return;
     }
 
   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;
+      goto error_return;
     }
 
   /* Adjust the relocs to have the correct symbol indices.  */
   for (o = abfd->sections; o != NULL; o = o->next)
     {
       struct bfd_elf_section_data *esdo = elf_section_data (o);
-      bfd_boolean sort;
+      bool sort;
 
       if ((o->flags & SEC_RELOC) == 0)
 	continue;
@@ -12587,19 +13483,34 @@ 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;
+	goto error_return;
       if (esdo->rela.hdr != NULL
 	  && !elf_link_adjust_relocs (abfd, o, &esdo->rela, sort, info))
-	return FALSE;
+	goto error_return;
 
       /* Set the reloc_count field to 0 to prevent write_relocs from
 	 trying to swap the relocs out itself.  */
       o->reloc_count = 0;
     }
 
+  relativecount = 0;
   if (dynamic && info->combreloc && dynobj != NULL)
     relativecount = elf_link_sort_relocs (abfd, info, &reldyn);
 
+  relr_entsize = 0;
+  if (htab->srelrdyn != NULL
+      && htab->srelrdyn->output_section != NULL
+      && htab->srelrdyn->size != 0)
+    {
+      asection *s = htab->srelrdyn->output_section;
+      relr_entsize = elf_section_data (s)->this_hdr.sh_entsize;
+      if (relr_entsize == 0)
+	{
+	  relr_entsize = bed->s->arch_size / 8;
+	  elf_section_data (s)->this_hdr.sh_entsize = relr_entsize;
+	}
+    }
+
   /* If we are linking against a dynamic object, or generating a
      shared library, finish up the dynamic linking information.  */
   if (dynamic)
@@ -12607,11 +13518,11 @@ bfd_elf_final_link (bfd *abfd, struct bf
       bfd_byte *dyncon, *dynconend;
 
       /* Fix up .dynamic entries.  */
-      o = bfd_get_linker_section (dynobj, ".dynamic");
+      o = htab->dynamic;
       BFD_ASSERT (o != NULL);
 
       dyncon = o->contents;
-      dynconend = o->contents + o->size;
+      dynconend = PTR_ADD (o->contents, o->size);
       for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
 	{
 	  Elf_Internal_Dyn dyn;
@@ -12627,17 +13538,44 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	    default:
 	      continue;
 	    case DT_NULL:
-	      if (relativecount > 0 && dyncon + bed->s->sizeof_dyn < dynconend)
+	      if (relativecount != 0)
 		{
 		  switch (elf_section_data (reldyn)->this_hdr.sh_type)
 		    {
 		    case SHT_REL: dyn.d_tag = DT_RELCOUNT; break;
 		    case SHT_RELA: dyn.d_tag = DT_RELACOUNT; break;
-		    default: continue;
 		    }
-		  dyn.d_un.d_val = relativecount;
+		  if (dyn.d_tag != DT_NULL
+		      && dynconend - dyncon >= bed->s->sizeof_dyn)
+		    {
+		      dyn.d_un.d_val = relativecount;
+		      relativecount = 0;
+		      break;
+		    }
 		  relativecount = 0;
-		  break;
+		}
+	      if (relr_entsize != 0)
+		{
+		  if (dynconend - dyncon >= 3 * bed->s->sizeof_dyn)
+		    {
+		      asection *s = htab->srelrdyn;
+		      dyn.d_tag = DT_RELR;
+		      dyn.d_un.d_ptr
+			= s->output_section->vma + s->output_offset;
+		      bed->s->swap_dyn_out (dynobj, &dyn, dyncon);
+		      dyncon += bed->s->sizeof_dyn;
+
+		      dyn.d_tag = DT_RELRSZ;
+		      dyn.d_un.d_val = s->size;
+		      bed->s->swap_dyn_out (dynobj, &dyn, dyncon);
+		      dyncon += bed->s->sizeof_dyn;
+
+		      dyn.d_tag = DT_RELRENT;
+		      dyn.d_un.d_val = relr_entsize;
+		      relr_entsize = 0;
+		      break;
+		    }
+		  relr_entsize = 0;
 		}
 	      continue;
 
@@ -12650,7 +13588,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
 	      {
 		struct elf_link_hash_entry *h;
 
-		h = elf_link_hash_lookup (htab, name, FALSE, FALSE, TRUE);
+		h = elf_link_hash_lookup (htab, name, false, false, true);
 		if (h != NULL
 		    && (h->root.type == bfd_link_hash_defined
 			|| h->root.type == bfd_link_hash_defweak))
@@ -12771,6 +13709,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 +13730,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,9 +13751,9 @@ 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)
-	  && (o = bfd_get_linker_section (dynobj, ".dynamic")) != NULL)
+      if (bfd_link_textrel_check (info)
+	  && (o = htab->dynamic) != NULL
+	  && o->size != 0)
 	{
 	  bfd_byte *dyncon, *dynconend;
 
@@ -12827,12 +13767,18 @@ 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 if (bfd_link_pde (info))
+		    info->callbacks->einfo
+		      (_("%P: warning: creating DT_TEXTREL in a PDE\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;
 		}
 	    }
@@ -12878,7 +13824,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
 
   if (!info->resolve_section_groups)
     {
-      bfd_boolean failed = FALSE;
+      bool failed = false;
 
       BFD_ASSERT (bfd_link_relocatable (info));
       bfd_map_over_sections (abfd, bfd_elf_set_group_contents, &failed);
@@ -12896,33 +13842,37 @@ bfd_elf_final_link (bfd *abfd, struct bf
   if (! _bfd_elf_write_section_eh_frame_hdr (abfd, info))
     goto error_return;
 
+  if (! _bfd_elf_write_section_sframe (abfd, info))
+    goto error_return;
+
+  if (! _bfd_elf_write_section_build_attributes (abfd, info))
+    goto error_ret2;
+
   if (info->callbacks->emit_ctf)
       info->callbacks->emit_ctf ();
 
   elf_final_link_free (abfd, &flinfo);
 
-  if (attr_section)
-    {
-      bfd_byte *contents = (bfd_byte *) bfd_malloc (attr_size);
-      if (contents == NULL)
-	return FALSE;	/* Bail out and fail.  */
-      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;
+  if (info->unique_symbol)
+    bfd_hash_table_free (&flinfo.local_hash_table);
+  return true;
 
  error_return:
+  free (htab->strtab);
+  htab->strtab = NULL;
   elf_final_link_free (abfd, &flinfo);
-  return FALSE;
+ error_ret2:
+  if (info->unique_symbol)
+    bfd_hash_table_free (&flinfo.local_hash_table);
+  return false;
 }
 
 /* Initialize COOKIE for input bfd ABFD.  */
 
-static bfd_boolean
+static bool
 init_reloc_cookie (struct elf_reloc_cookie *cookie,
-		   struct bfd_link_info *info, bfd *abfd)
+		   struct bfd_link_info *info, bfd *abfd,
+		   bool keep_memory)
 {
   Elf_Internal_Shdr *symtab_hdr;
   const struct elf_backend_data *bed;
@@ -12958,12 +13908,16 @@ init_reloc_cookie (struct elf_reloc_cook
       if (cookie->locsyms == NULL)
 	{
 	  info->callbacks->einfo (_("%P%X: can not read symbols: %E\n"));
-	  return FALSE;
+	  return false;
+	}
+      if (keep_memory || _bfd_elf_link_keep_memory (info))
+	{
+	  symtab_hdr->contents = (bfd_byte *) cookie->locsyms;
+	  info->cache_size += (cookie->locsymcount
+			       * sizeof (Elf_Internal_Sym));
 	}
-      if (info->keep_memory)
-	symtab_hdr->contents = (bfd_byte *) cookie->locsyms;
     }
-  return TRUE;
+  return true;
 }
 
 /* Free the memory allocated by init_reloc_cookie, if appropriate.  */
@@ -12974,18 +13928,17 @@ 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);
 }
 
 /* Initialize the relocation information in COOKIE for input section SEC
    of input bfd ABFD.  */
 
-static bfd_boolean
+static bool
 init_reloc_cookie_rels (struct elf_reloc_cookie *cookie,
 			struct bfd_link_info *info, bfd *abfd,
-			asection *sec)
+			asection *sec, bool keep_memory)
 {
   if (sec->reloc_count == 0)
     {
@@ -12994,15 +13947,16 @@ init_reloc_cookie_rels (struct elf_reloc
     }
   else
     {
-      cookie->rels = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL,
-						info->keep_memory);
+      cookie->rels = _bfd_elf_link_info_read_relocs
+	(abfd, info, sec, NULL, NULL,
+	 keep_memory || _bfd_elf_link_keep_memory (info));
       if (cookie->rels == NULL)
-	return FALSE;
+	return false;
       cookie->rel = cookie->rels;
       cookie->relend = cookie->rels + sec->reloc_count;
     }
   cookie->rel = cookie->rels;
-  return TRUE;
+  return true;
 }
 
 /* Free the memory allocated by init_reloc_cookie_rels,
@@ -13012,27 +13966,28 @@ 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);
 }
 
 /* Initialize the whole of COOKIE for input section SEC.  */
 
-static bfd_boolean
+static bool
 init_reloc_cookie_for_section (struct elf_reloc_cookie *cookie,
 			       struct bfd_link_info *info,
-			       asection *sec)
+			       asection *sec, bool keep_memory)
 {
-  if (!init_reloc_cookie (cookie, info, sec->owner))
+  if (!init_reloc_cookie (cookie, info, sec->owner, keep_memory))
     goto error1;
-  if (!init_reloc_cookie_rels (cookie, info, sec->owner, sec))
+  if (!init_reloc_cookie_rels (cookie, info, sec->owner, sec,
+			       keep_memory))
     goto error2;
-  return TRUE;
+  return true;
 
  error2:
   fini_reloc_cookie (cookie, sec->owner);
  error1:
-  return FALSE;
+  return false;
 }
 
 /* Free the memory allocated by init_reloc_cookie_for_section,
@@ -13057,25 +14012,21 @@ _bfd_elf_gc_mark_hook (asection *sec,
 		       struct elf_link_hash_entry *h,
 		       Elf_Internal_Sym *sym)
 {
-  if (h != NULL)
+  if (h == NULL)
+    return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
+
+  switch (h->root.type)
     {
-      switch (h->root.type)
-	{
-	case bfd_link_hash_defined:
-	case bfd_link_hash_defweak:
-	  return h->root.u.def.section;
+    case bfd_link_hash_defined:
+    case bfd_link_hash_defweak:
+      return h->root.u.def.section;
 
-	case bfd_link_hash_common:
-	  return h->root.u.c.p->section;
+    case bfd_link_hash_common:
+      return h->root.u.c.p->section;
 
-	default:
-	  break;
-	}
+    default:
+      return NULL;
     }
-  else
-    return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
-
-  return NULL;
 }
 
 /* Return the debug definition section.  */
@@ -13100,7 +14051,7 @@ elf_gc_mark_debug_section (asection *sec
       /* Return the local debug definition section.  */
       asection *isec = bfd_section_from_elf_index (sec->owner,
 						   sym->st_shndx);
-      if ((isec->flags & SEC_DEBUGGING) != 0)
+      if (isec != NULL && (isec->flags & SEC_DEBUGGING) != 0)
 	return isec;
     }
 
@@ -13115,68 +14066,72 @@ asection *
 _bfd_elf_gc_mark_rsec (struct bfd_link_info *info, asection *sec,
 		       elf_gc_mark_hook_fn gc_mark_hook,
 		       struct elf_reloc_cookie *cookie,
-		       bfd_boolean *start_stop)
+		       bool *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)
     return NULL;
 
-  if (r_symndx >= cookie->locsymcount
-      || ELF_ST_BIND (cookie->locsyms[r_symndx].st_info) != STB_LOCAL)
+  h = get_ext_sym_hash_from_cookie (cookie, r_symndx);
+  if (h == NULL)
     {
-      h = cookie->sym_hashes[r_symndx - cookie->extsymoff];
-      if (h == NULL)
-	{
-	  info->callbacks->einfo (_("%F%P: corrupt input: %pB\n"),
-				  sec->owner);
-	  return NULL;
-	}
-      while (h->root.type == bfd_link_hash_indirect
-	     || 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;
+      /* A corrupt input file can lead to a situation where the index
+	 does not reference either a local or an external symbol.  */
+      if (r_symndx >= cookie->locsymcount)
+	return NULL;
+
+      return (*gc_mark_hook) (sec, info, cookie->rel, NULL,
+			      &cookie->locsyms[r_symndx]);
+    }
+
+  bool was_marked = h->mark;
+
+  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)
+  if (!was_marked && h->start_stop && !h->root.ldscript_def)
+    {
+      if (info->start_stop_gc)
+	return NULL;
+
+      /* To work around a glibc bug, mark XXX input sections
+	 when there is a reference to __start_XXX or __stop_XXX
+	 symbols.  */
+      else if (start_stop != NULL)
 	{
-	  /* To work around a glibc bug, mark XXX input sections
-	     when there is a reference to __start_XXX or __stop_XXX
-	     symbols.  */
-	  if (h->start_stop)
-	    {
-	      asection *s = h->u2.start_stop_section;
-	      *start_stop = !s->gc_mark;
-	      return s;
-	    }
+	  asection *s = h->u2.start_stop_section;
+	  *start_stop = true;
+	  return s;
 	}
-
-      return (*gc_mark_hook) (sec, info, cookie->rel, h, NULL);
     }
 
-  return (*gc_mark_hook) (sec, info, cookie->rel, NULL,
-			  &cookie->locsyms[r_symndx]);
+  return (*gc_mark_hook) (sec, info, cookie->rel, h, NULL);
 }
 
 /* COOKIE->rel describes a relocation against section SEC, which is
    a section we've decided to keep.  Mark the section that contains
    the relocation symbol.  */
 
-bfd_boolean
+bool
 _bfd_elf_gc_mark_reloc (struct bfd_link_info *info,
 			asection *sec,
 			elf_gc_mark_hook_fn gc_mark_hook,
 			struct elf_reloc_cookie *cookie)
 {
   asection *rsec;
-  bfd_boolean start_stop = FALSE;
+  bool start_stop = false;
 
   rsec = _bfd_elf_gc_mark_rsec (info, sec, gc_mark_hook, cookie, &start_stop);
   while (rsec != NULL)
@@ -13187,25 +14142,25 @@ _bfd_elf_gc_mark_reloc (struct bfd_link_
 	      || (rsec->owner->flags & DYNAMIC) != 0)
 	    rsec->gc_mark = 1;
 	  else if (!_bfd_elf_gc_mark (info, rsec, gc_mark_hook))
-	    return FALSE;
+	    return false;
 	}
       if (!start_stop)
 	break;
       rsec = bfd_get_next_section_by_name (rsec->owner, rsec);
     }
-  return TRUE;
+  return true;
 }
 
 /* The mark phase of garbage collection.  For a given section, mark
    it and any sections in this section's group, and all the sections
    which define symbols to which it refers.  */
 
-bfd_boolean
+bool
 _bfd_elf_gc_mark (struct bfd_link_info *info,
 		  asection *sec,
 		  elf_gc_mark_hook_fn gc_mark_hook)
 {
-  bfd_boolean ret;
+  bool ret;
   asection *group_sec, *eh_frame;
 
   sec->gc_mark = 1;
@@ -13214,10 +14169,10 @@ _bfd_elf_gc_mark (struct bfd_link_info *
   group_sec = elf_section_data (sec)->next_in_group;
   if (group_sec && !group_sec->gc_mark)
     if (!_bfd_elf_gc_mark (info, group_sec, gc_mark_hook))
-      return FALSE;
+      return false;
 
   /* Look through the section relocs.  */
-  ret = TRUE;
+  ret = true;
   eh_frame = elf_eh_frame_section (sec->owner);
   if ((sec->flags & SEC_RELOC) != 0
       && sec->reloc_count > 0
@@ -13225,14 +14180,14 @@ _bfd_elf_gc_mark (struct bfd_link_info *
     {
       struct elf_reloc_cookie cookie;
 
-      if (!init_reloc_cookie_for_section (&cookie, info, sec))
-	ret = FALSE;
+      if (!init_reloc_cookie_for_section (&cookie, info, sec, false))
+	ret = false;
       else
 	{
 	  for (; cookie.rel < cookie.relend; cookie.rel++)
 	    if (!_bfd_elf_gc_mark_reloc (info, sec, gc_mark_hook, &cookie))
 	      {
-		ret = FALSE;
+		ret = false;
 		break;
 	      }
 	  fini_reloc_cookie_for_section (&cookie, sec);
@@ -13243,13 +14198,20 @@ _bfd_elf_gc_mark (struct bfd_link_info *
     {
       struct elf_reloc_cookie cookie;
 
-      if (!init_reloc_cookie_for_section (&cookie, info, eh_frame))
-	ret = FALSE;
+      /* NB: When --no-keep-memory is used, the symbol table and
+	 relocation info for eh_frame are freed after they are retrieved
+	 for each text section in the input object.  If an input object
+	 has many text sections, the same data is retrieved and freed
+	 many times which can take a very long time.  Always keep the
+	 symbol table and relocation info for eh_frame to avoid it.  */
+      if (!init_reloc_cookie_for_section (&cookie, info, eh_frame,
+					  true))
+	ret = false;
       else
 	{
 	  if (!_bfd_elf_gc_mark_fdes (info, sec, eh_frame,
 				      gc_mark_hook, &cookie))
-	    ret = FALSE;
+	    ret = false;
 	  fini_reloc_cookie_for_section (&cookie, eh_frame);
 	}
     }
@@ -13257,7 +14219,7 @@ _bfd_elf_gc_mark (struct bfd_link_info *
   eh_frame = elf_section_eh_frame_entry (sec);
   if (ret && eh_frame && !eh_frame->gc_mark)
     if (!_bfd_elf_gc_mark (info, eh_frame, gc_mark_hook))
-      ret = FALSE;
+      ret = false;
 
   return ret;
 }
@@ -13272,8 +14234,8 @@ _bfd_elf_gc_mark_debug_special_section_g
   /* Used to iterate the section group.  */
   asection *msec;
 
-  bfd_boolean is_special_grp = TRUE;
-  bfd_boolean is_debug_grp = TRUE;
+  bool is_special_grp = true;
+  bool is_debug_grp = true;
 
   /* First scan to see if group contains any section other than debug
      and special section.  */
@@ -13281,10 +14243,10 @@ _bfd_elf_gc_mark_debug_special_section_g
   do
     {
       if ((msec->flags & SEC_DEBUGGING) == 0)
-	is_debug_grp = FALSE;
+	is_debug_grp = false;
 
       if ((msec->flags & (SEC_ALLOC | SEC_LOAD | SEC_RELOC)) != 0)
-	is_special_grp = FALSE;
+	is_special_grp = false;
 
       msec = elf_next_in_group (msec);
     }
@@ -13305,18 +14267,18 @@ _bfd_elf_gc_mark_debug_special_section_g
 
 /* Keep debug and special sections.  */
 
-bfd_boolean
+bool
 _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;
 
   for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
     {
       asection *isec;
-      bfd_boolean some_kept;
-      bfd_boolean debug_frag_seen;
-      bfd_boolean has_kept_debug_info;
+      bool some_kept;
+      bool debug_frag_seen;
+      bool has_kept_debug_info;
 
       if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour)
 	continue;
@@ -13327,7 +14289,7 @@ _bfd_elf_gc_mark_extra_sections (struct
       /* Ensure all linker created sections are kept,
 	 see if any other section is already marked,
 	 and note if we have any fragmented debug sections.  */
-      debug_frag_seen = some_kept = has_kept_debug_info = FALSE;
+      debug_frag_seen = some_kept = has_kept_debug_info = false;
       for (isec = ibfd->sections; isec != NULL; isec = isec->next)
 	{
 	  if ((isec->flags & SEC_LINKER_CREATED) != 0)
@@ -13335,12 +14297,42 @@ _bfd_elf_gc_mark_extra_sections (struct
 	  else if (isec->gc_mark
 		   && (isec->flags & SEC_ALLOC) != 0
 		   && elf_section_type (isec) != SHT_NOTE)
-	    some_kept = TRUE;
+	    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;
+	      for (linked_to_sec = elf_linked_to_section (isec);
+		   linked_to_sec != NULL && !linked_to_sec->linker_mark;
+		   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;
+		    }
+		  linked_to_sec->linker_mark = 1;
+		}
+	      for (linked_to_sec = elf_linked_to_section (isec);
+		   linked_to_sec != NULL && linked_to_sec->linker_mark;
+		   linked_to_sec = elf_linked_to_section (linked_to_sec))
+		linked_to_sec->linker_mark = 0;
+	    }
 
 	  if (!debug_frag_seen
 	      && (isec->flags & SEC_DEBUGGING)
-	      && CONST_STRNEQ (isec->name, ".debug_line."))
-	    debug_frag_seen = TRUE;
+	      && startswith (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->fatal (_("%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,17 +14342,19 @@ _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;
+	    has_kept_debug_info = true;
 	}
 
       /* Look for CODE sections which are going to be discarded,
@@ -13404,12 +14398,12 @@ _bfd_elf_gc_mark_extra_sections (struct
 	      && (isec->flags & SEC_DEBUGGING) != 0)
 	    if (!_bfd_elf_gc_mark (info, isec,
 				   elf_gc_mark_debug_section))
-	      return FALSE;
+	      return false;
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_gc_sweep (bfd *abfd, struct bfd_link_info *info)
 {
   bfd *sub;
@@ -13436,7 +14430,8 @@ elf_gc_sweep (bfd *abfd, struct bfd_link
 	  if (o->flags & SEC_GROUP)
 	    {
 	      asection *first = elf_next_in_group (o);
-	      o->gc_mark = first->gc_mark;
+	      if (first != NULL)
+		o->gc_mark = first->gc_mark;
 	    }
 
 	  if (o->gc_mark)
@@ -13457,28 +14452,28 @@ elf_gc_sweep (bfd *abfd, struct bfd_link
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Propagate collected vtable information.  This is called through
    elf_link_hash_traverse.  */
 
-static bfd_boolean
+static bool
 elf_gc_propagate_vtable_entries_used (struct elf_link_hash_entry *h, void *okp)
 {
   /* Those that are not vtables.  */
   if (h->start_stop
       || h->u2.vtable == NULL
       || h->u2.vtable->parent == NULL)
-    return TRUE;
+    return true;
 
   /* Those vtables that do not have parents, we cannot merge.  */
   if (h->u2.vtable->parent == (struct elf_link_hash_entry *) -1)
-    return TRUE;
+    return true;
 
   /* If we've already been done, exit.  */
   if (h->u2.vtable->used && h->u2.vtable->used[-1])
-    return TRUE;
+    return true;
 
   /* Make sure the parent's table is up to date.  */
   elf_gc_propagate_vtable_entries_used (h->u2.vtable->parent, okp);
@@ -13493,11 +14488,11 @@ elf_gc_propagate_vtable_entries_used (st
   else
     {
       size_t n;
-      bfd_boolean *cu, *pu;
+      bool *cu, *pu;
 
       /* Or the parent's entries into ours.  */
       cu = h->u2.vtable->used;
-      cu[-1] = TRUE;
+      cu[-1] = true;
       pu = h->u2.vtable->parent->u2.vtable->used;
       if (pu != NULL)
 	{
@@ -13510,31 +14505,39 @@ elf_gc_propagate_vtable_entries_used (st
 	  while (n--)
 	    {
 	      if (*pu)
-		*cu = TRUE;
+		*cu = true;
 	      pu++;
 	      cu++;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-elf_gc_smash_unused_vtentry_relocs (struct elf_link_hash_entry *h, void *okp)
+struct link_info_ok
+{
+  struct bfd_link_info *info;
+  bool ok;
+};
+
+static bool
+elf_gc_smash_unused_vtentry_relocs (struct elf_link_hash_entry *h,
+				    void *ptr)
 {
   asection *sec;
   bfd_vma hstart, hend;
   Elf_Internal_Rela *relstart, *relend, *rel;
   const struct elf_backend_data *bed;
   unsigned int log_file_align;
+  struct link_info_ok *info = (struct link_info_ok *) ptr;
 
   /* Take care of both those symbols that do not describe vtables as
      well as those that are not loaded.  */
   if (h->start_stop
       || h->u2.vtable == NULL
       || h->u2.vtable->parent == NULL)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (h->root.type == bfd_link_hash_defined
 	      || h->root.type == bfd_link_hash_defweak);
@@ -13543,9 +14546,10 @@ elf_gc_smash_unused_vtentry_relocs (stru
   hstart = h->root.u.def.value;
   hend = hstart + h->size;
 
-  relstart = _bfd_elf_link_read_relocs (sec->owner, sec, NULL, NULL, TRUE);
+  relstart = _bfd_elf_link_info_read_relocs (sec->owner, info->info,
+					     sec, NULL, NULL, true);
   if (!relstart)
-    return *(bfd_boolean *) okp = FALSE;
+    return info->ok = false;
   bed = get_elf_backend_data (sec->owner);
   log_file_align = bed->s->log_file_align;
 
@@ -13566,14 +14570,14 @@ elf_gc_smash_unused_vtentry_relocs (stru
 	rel->r_offset = rel->r_info = rel->r_addend = 0;
       }
 
-  return TRUE;
+  return true;
 }
 
 /* Mark sections containing dynamically referenced symbols.  When
    building shared libraries, we must assume that any visible symbol is
    referenced.  */
 
-bfd_boolean
+bool
 bfd_elf_gc_mark_dynamic_ref_symbol (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info = (struct bfd_link_info *) inf;
@@ -13581,6 +14585,9 @@ bfd_elf_gc_mark_dynamic_ref_symbol (stru
 
   if ((h->root.type == bfd_link_hash_defined
        || h->root.type == bfd_link_hash_defweak)
+      && (!h->start_stop
+	  || h->root.ldscript_def
+	  || !info->start_stop_gc)
       && ((h->ref_dynamic && !h->forced_local)
 	  || ((h->def_regular || ELF_COMMON_DEF_P (h))
 	      && ELF_ST_VISIBILITY (h->other) != STV_INTERNAL
@@ -13596,7 +14603,7 @@ bfd_elf_gc_mark_dynamic_ref_symbol (stru
 					       h->root.root.string)))))
     h->root.u.def.section->flags |= SEC_KEEP;
 
-  return TRUE;
+  return true;
 }
 
 /* Keep all sections containing symbols undefined on the command-line,
@@ -13612,18 +14619,17 @@ _bfd_elf_gc_keep (struct bfd_link_info *
       struct elf_link_hash_entry *h;
 
       h = elf_link_hash_lookup (elf_hash_table (info), sym->name,
-				FALSE, FALSE, FALSE);
+				false, false, false);
 
       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;
     }
 }
 
-bfd_boolean
+bool
 bfd_elf_parse_eh_frame_entries (bfd *abfd ATTRIBUTE_UNUSED,
 				struct bfd_link_info *info)
 {
@@ -13640,38 +14646,40 @@ bfd_elf_parse_eh_frame_entries (bfd *abf
       if (sec == NULL || sec->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
 	continue;
 
-      if (!init_reloc_cookie (&cookie, info, ibfd))
-	return FALSE;
+      if (!init_reloc_cookie (&cookie, info, ibfd, false))
+	return false;
 
       for (sec = ibfd->sections; sec; sec = sec->next)
 	{
-	  if (CONST_STRNEQ (bfd_section_name (sec), ".eh_frame_entry")
-	      && init_reloc_cookie_rels (&cookie, info, ibfd, sec))
+	  if (startswith (bfd_section_name (sec), ".eh_frame_entry")
+	      && init_reloc_cookie_rels (&cookie, info, ibfd, sec,
+					 false))
 	    {
 	      _bfd_elf_parse_eh_frame_entry (info, sec, &cookie);
 	      fini_reloc_cookie_rels (&cookie, sec);
 	    }
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Do mark and sweep of unused sections.  */
 
-bfd_boolean
+bool
 bfd_elf_gc_sections (bfd *abfd, struct bfd_link_info *info)
 {
-  bfd_boolean ok = TRUE;
+  bool ok = true;
   bfd *sub;
   elf_gc_mark_hook_fn gc_mark_hook;
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
   struct elf_link_hash_table *htab;
+  struct link_info_ok info_ok;
 
   if (!bed->can_gc_sections
       || !is_elf_hash_table (info->hash))
     {
       _bfd_error_handler(_("warning: gc-sections option ignored"));
-      return TRUE;
+      return true;
     }
 
   bed->gc_keep (info);
@@ -13690,7 +14698,8 @@ bfd_elf_gc_sections (bfd *abfd, struct b
       if (sec == NULL || sec->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
 	continue;
       sec = bfd_get_section_by_name (sub, ".eh_frame");
-      while (sec && init_reloc_cookie_for_section (&cookie, info, sec))
+      while (sec && init_reloc_cookie_for_section (&cookie, info, sec,
+						   false))
 	{
 	  _bfd_elf_parse_eh_frame (sub, info, sec, &cookie);
 	  if (elf_section_data (sec)->sec_info
@@ -13704,12 +14713,14 @@ bfd_elf_gc_sections (bfd *abfd, struct b
   /* Apply transitive closure to the vtable entry usage info.  */
   elf_link_hash_traverse (htab, elf_gc_propagate_vtable_entries_used, &ok);
   if (!ok)
-    return FALSE;
+    return false;
 
   /* Kill the vtable relocations that were not used.  */
-  elf_link_hash_traverse (htab, elf_gc_smash_unused_vtentry_relocs, &ok);
-  if (!ok)
-    return FALSE;
+  info_ok.info = info;
+  info_ok.ok = true;
+  elf_link_hash_traverse (htab, elf_gc_smash_unused_vtentry_relocs, &info_ok);
+  if (!info_ok.ok)
+    return false;
 
   /* Mark dynamically referenced symbols.  */
   if (htab->dynamic_sections_created || info->gc_keep_exported)
@@ -13746,10 +14757,13 @@ bfd_elf_gc_sections (bfd *abfd, struct b
 			|| (elf_section_data (o)->this_hdr.sh_type
 			    == SHT_FINI_ARRAY)))
 		|| (elf_section_data (o)->this_hdr.sh_type == SHT_NOTE
-		    && elf_next_in_group (o) == NULL )))
+		    && elf_next_in_group (o) == NULL
+		    && elf_linked_to_section (o) == NULL)
+		|| ((elf_tdata (sub)->has_gnu_osabi & elf_gnu_osabi_retain)
+		    && (elf_section_flags (o) & SHF_GNU_RETAIN))))
 	  {
 	    if (!_bfd_elf_gc_mark (info, o, gc_mark_hook))
-	      return FALSE;
+	      return false;
 	  }
     }
 
@@ -13762,7 +14776,7 @@ bfd_elf_gc_sections (bfd *abfd, struct b
 
 /* Called from check_relocs to record the existence of a VTINHERIT reloc.  */
 
-bfd_boolean
+bool
 bfd_elf_gc_record_vtinherit (bfd *abfd,
 			     asection *sec,
 			     struct elf_link_hash_entry *h,
@@ -13781,7 +14795,7 @@ bfd_elf_gc_record_vtinherit (bfd *abfd,
     extsymcount -= elf_tdata (abfd)->symtab_hdr.sh_info;
 
   sym_hashes = elf_sym_hashes (abfd);
-  sym_hashes_end = sym_hashes + extsymcount;
+  sym_hashes_end = PTR_ADD (sym_hashes, extsymcount);
 
   /* Hunt down the child symbol, which is in this section at the same
      offset as the relocation.  */
@@ -13799,7 +14813,7 @@ bfd_elf_gc_record_vtinherit (bfd *abfd,
   _bfd_error_handler (_("%pB: %pA+%#" PRIx64 ": no symbol found for INHERIT"),
 		      abfd, sec, (uint64_t) offset);
   bfd_set_error (bfd_error_invalid_operation);
-  return FALSE;
+  return false;
 
  win:
   if (!child->u2.vtable)
@@ -13807,7 +14821,7 @@ bfd_elf_gc_record_vtinherit (bfd *abfd,
       child->u2.vtable = ((struct elf_link_virtual_table_entry *)
 			  bfd_zalloc (abfd, sizeof (*child->u2.vtable)));
       if (!child->u2.vtable)
-	return FALSE;
+	return false;
     }
   if (!h)
     {
@@ -13821,12 +14835,12 @@ bfd_elf_gc_record_vtinherit (bfd *abfd,
   else
     child->u2.vtable->parent = h;
 
-  return TRUE;
+  return true;
 }
 
 /* Called from check_relocs to record the existence of a VTENTRY reloc.  */
 
-bfd_boolean
+bool
 bfd_elf_gc_record_vtentry (bfd *abfd, asection *sec,
 			   struct elf_link_hash_entry *h,
 			   bfd_vma addend)
@@ -13840,7 +14854,7 @@ bfd_elf_gc_record_vtentry (bfd *abfd, as
       _bfd_error_handler (_("%pB: section '%pA': corrupt VTENTRY entry"),
 			  abfd, sec);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   if (!h->u2.vtable)
@@ -13848,13 +14862,13 @@ bfd_elf_gc_record_vtentry (bfd *abfd, as
       h->u2.vtable = ((struct elf_link_virtual_table_entry *)
 		      bfd_zalloc (abfd, sizeof (*h->u2.vtable)));
       if (!h->u2.vtable)
-	return FALSE;
+	return false;
     }
 
   if (addend >= h->u2.vtable->size)
     {
       size_t size, bytes, file_align;
-      bfd_boolean *ptr = h->u2.vtable->used;
+      bool *ptr = h->u2.vtable->used;
 
       /* While the symbol is undefined, we have to be prepared to handle
 	 a zero size.  */
@@ -13875,35 +14889,35 @@ bfd_elf_gc_record_vtentry (bfd *abfd, as
 
       /* Allocate one extra entry for use as a "done" flag for the
 	 consolidation pass.  */
-      bytes = ((size >> log_file_align) + 1) * sizeof (bfd_boolean);
+      bytes = ((size >> log_file_align) + 1) * sizeof (bool);
 
       if (ptr)
 	{
-	  ptr = (bfd_boolean *) bfd_realloc (ptr - 1, bytes);
+	  ptr = (bool *) bfd_realloc (ptr - 1, bytes);
 
 	  if (ptr != NULL)
 	    {
 	      size_t oldbytes;
 
 	      oldbytes = (((h->u2.vtable->size >> log_file_align) + 1)
-			  * sizeof (bfd_boolean));
+			  * sizeof (bool));
 	      memset (((char *) ptr) + oldbytes, 0, bytes - oldbytes);
 	    }
 	}
       else
-	ptr = (bfd_boolean *) bfd_zmalloc (bytes);
+	ptr = (bool *) bfd_zmalloc (bytes);
 
       if (ptr == NULL)
-	return FALSE;
+	return false;
 
       /* And arrange for that done flag to be at index -1.  */
       h->u2.vtable->used = ptr + 1;
       h->u2.vtable->size = size;
     }
 
-  h->u2.vtable->used[addend >> log_file_align] = TRUE;
+  h->u2.vtable->used[addend >> log_file_align] = true;
 
-  return TRUE;
+  return true;
 }
 
 /* Map an ELF section header flag to its corresponding string.  */
@@ -13913,7 +14927,7 @@ typedef struct
   flagword flag_value;
 } elf_flags_to_name_table;
 
-static elf_flags_to_name_table elf_flags_to_names [] =
+static const elf_flags_to_name_table elf_flags_to_names [] =
 {
   { "SHF_WRITE", SHF_WRITE },
   { "SHF_ALLOC", SHF_ALLOC },
@@ -13930,7 +14944,7 @@ static elf_flags_to_name_table elf_flags
 };
 
 /* Returns TRUE if the section is to be included, otherwise FALSE.  */
-bfd_boolean
+bool
 bfd_elf_lookup_section_flags (struct bfd_link_info *info,
 			      struct flag_info *flaginfo,
 			      asection *section)
@@ -13961,7 +14975,7 @@ bfd_elf_lookup_section_flags (struct bfd
 		    with_hex |= hexval;
 		  else if (tf->with == without_flags)
 		    without_hex |= hexval;
-		  tf->valid = TRUE;
+		  tf->valid = true;
 		  continue;
 		}
 	    }
@@ -13973,7 +14987,7 @@ bfd_elf_lookup_section_flags (struct bfd
 		    with_hex |= elf_flags_to_names[i].flag_value;
 		  else if (tf->with == without_flags)
 		    without_hex |= elf_flags_to_names[i].flag_value;
-		  tf->valid = TRUE;
+		  tf->valid = true;
 		  break;
 		}
 	    }
@@ -13981,21 +14995,21 @@ bfd_elf_lookup_section_flags (struct bfd
 	    {
 	      info->callbacks->einfo
 		(_("unrecognized INPUT_SECTION_FLAG %s\n"), tf->name);
-	      return FALSE;
+	      return false;
 	    }
 	}
-      flaginfo->flags_initialized = TRUE;
+      flaginfo->flags_initialized = true;
       flaginfo->only_with_flags |= with_hex;
       flaginfo->not_with_flags |= without_hex;
     }
 
   if ((flaginfo->only_with_flags & sh_flags) != flaginfo->only_with_flags)
-    return FALSE;
+    return false;
 
   if ((flaginfo->not_with_flags & sh_flags) != 0)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 struct alloc_got_off_arg {
@@ -14006,7 +15020,7 @@ struct alloc_got_off_arg {
 /* We need a special top-level link routine to convert got reference counts
    to real got offsets.  */
 
-static bfd_boolean
+static bool
 elf_gc_allocate_got_offsets (struct elf_link_hash_entry *h, void *arg)
 {
   struct alloc_got_off_arg *gofarg = (struct alloc_got_off_arg *) arg;
@@ -14021,13 +15035,13 @@ elf_gc_allocate_got_offsets (struct elf_
   else
     h->got.offset = (bfd_vma) -1;
 
-  return TRUE;
+  return true;
 }
 
 /* And an accompanying bit to work out final got entry offsets once
    we're done.  Should be called from final_link.  */
 
-bfd_boolean
+bool
 bfd_elf_gc_common_finalize_got_offsets (bfd *abfd,
 					struct bfd_link_info *info)
 {
@@ -14039,7 +15053,7 @@ bfd_elf_gc_common_finalize_got_offsets (
   BFD_ASSERT (abfd == info->output_bfd);
 
   if (! is_elf_hash_table (info->hash))
-    return FALSE;
+    return false;
 
   /* The GOT offset is relative to the .got section, but the GOT header is
      put into the .got.plt section, if the backend uses it.  */
@@ -14087,23 +15101,23 @@ bfd_elf_gc_common_finalize_got_offsets (
   elf_link_hash_traverse (elf_hash_table (info),
 			  elf_gc_allocate_got_offsets,
 			  &gofarg);
-  return TRUE;
+  return true;
 }
 
 /* Many folk need no more in the way of final link than this, once
    got entry reference counting is enabled.  */
 
-bfd_boolean
+bool
 bfd_elf_gc_common_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   if (!bfd_elf_gc_common_finalize_got_offsets (abfd, info))
-    return FALSE;
+    return false;
 
   /* Invoke the regular ELF backend linker to do all the work.  */
   return bfd_elf_final_link (abfd, info);
 }
 
-bfd_boolean
+bool
 bfd_elf_reloc_symbol_deleted_p (bfd_vma offset, void *cookie)
 {
   struct elf_reloc_cookie *rcookie = (struct elf_reloc_cookie *) cookie;
@@ -14117,34 +15131,33 @@ bfd_elf_reloc_symbol_deleted_p (bfd_vma
 
       if (! rcookie->bad_symtab)
 	if (rcookie->rel->r_offset > offset)
-	  return FALSE;
+	  return false;
       if (rcookie->rel->r_offset != offset)
 	continue;
 
       r_symndx = rcookie->rel->r_info >> rcookie->r_sym_shift;
       if (r_symndx == STN_UNDEF)
-	return TRUE;
-
-      if (r_symndx >= rcookie->locsymcount
-	  || ELF_ST_BIND (rcookie->locsyms[r_symndx].st_info) != STB_LOCAL)
-	{
-	  struct elf_link_hash_entry *h;
+	return true;
 
-	  h = rcookie->sym_hashes[r_symndx - rcookie->extsymoff];
-
-	  while (h->root.type == bfd_link_hash_indirect
-		 || h->root.type == bfd_link_hash_warning)
-	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+      struct elf_link_hash_entry *h;
 
+      h = get_ext_sym_hash_from_cookie (rcookie, r_symndx);
+      
+      if (h != NULL)
+	{
 	  if ((h->root.type == bfd_link_hash_defined
 	       || h->root.type == bfd_link_hash_defweak)
 	      && (h->root.u.def.section->owner != rcookie->abfd
 		  || h->root.u.def.section->kept_section != NULL
 		  || discarded_section (h->root.u.def.section)))
-	    return TRUE;
+	    return true;
 	}
       else
 	{
+	  if (r_symndx >= rcookie->locsymcount)
+	    /* This can happen with corrupt input.  */
+	    return false;
+
 	  /* It's not a relocation against a global symbol,
 	     but it could be a relocation against a local
 	     symbol for a discarded section.  */
@@ -14157,11 +15170,12 @@ bfd_elf_reloc_symbol_deleted_p (bfd_vma
 	  if (isec != NULL
 	      && (isec->kept_section != NULL
 		  || discarded_section (isec)))
-	    return TRUE;
+	    return true;
 	}
-      return FALSE;
+
+      return false;
     }
-  return FALSE;
+  return false;
 }
 
 /* Discard unneeded references to discarded sections.
@@ -14197,7 +15211,7 @@ bfd_elf_discard_info (bfd *output_bfd, s
 	  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
 	    continue;
 
-	  if (!init_reloc_cookie_for_section (&cookie, info, i))
+	  if (!init_reloc_cookie_for_section (&cookie, info, i, false))
 	    return -1;
 
 	  if (_bfd_discard_section_stabs (abfd, i,
@@ -14217,7 +15231,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)
 	{
@@ -14228,7 +15242,7 @@ bfd_elf_discard_info (bfd *output_bfd, s
 	  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
 	    continue;
 
-	  if (!init_reloc_cookie_for_section (&cookie, info, i))
+	  if (!init_reloc_cookie_for_section (&cookie, info, i, false))
 	    return -1;
 
 	  _bfd_elf_parse_eh_frame (abfd, info, i, &cookie);
@@ -14244,7 +15258,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)
@@ -14278,6 +15293,41 @@ bfd_elf_discard_info (bfd *output_bfd, s
 				_bfd_elf_adjust_eh_frame_global_symbol, NULL);
     }
 
+  o = bfd_get_section_by_name (output_bfd, ".sframe");
+  if (o != NULL)
+    {
+      asection *i;
+
+      for (i = o->map_head.s; i != NULL; i = i->map_head.s)
+	{
+	  if (i->size == 0)
+	    continue;
+
+	  abfd = i->owner;
+	  if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+	    continue;
+
+	  if (!init_reloc_cookie_for_section (&cookie, info, i, false))
+	    return -1;
+
+	  if (_bfd_elf_parse_sframe (abfd, info, i, &cookie))
+	    {
+	      if (_bfd_elf_discard_section_sframe (i,
+						   bfd_elf_reloc_symbol_deleted_p,
+						   &cookie))
+		{
+		  if (i->size != i->rawsize)
+		    changed = 1;
+		}
+	    }
+	  fini_reloc_cookie_for_section (&cookie, i);
+	}
+      /* Update the reference to the output .sframe section.  Used to
+	 determine later if PT_GNU_SFRAME segment is to be generated.  */
+      if (!_bfd_elf_set_section_sframe (output_bfd, info))
+	return -1;
+    }
+
   for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next)
     {
       const struct elf_backend_data *bed;
@@ -14293,7 +15343,7 @@ bfd_elf_discard_info (bfd *output_bfd, s
 
       if (bed->elf_backend_discard_info != NULL)
 	{
-	  if (!init_reloc_cookie (&cookie, info, abfd))
+	  if (!init_reloc_cookie (&cookie, info, abfd, false))
 	    return -1;
 
 	  if ((*bed->elf_backend_discard_info) (abfd, &cookie, info))
@@ -14306,15 +15356,13 @@ bfd_elf_discard_info (bfd *output_bfd, s
   if (info->eh_frame_hdr_type == COMPACT_EH_HDR)
     _bfd_elf_end_eh_frame_parsing (info);
 
-  if (info->eh_frame_hdr_type
-      && !bfd_link_relocatable (info)
-      && _bfd_elf_discard_section_eh_frame_hdr (output_bfd, info))
+  if (_bfd_elf_discard_section_eh_frame_hdr (info))
     changed = 1;
 
   return changed;
 }
 
-bfd_boolean
+bool
 _bfd_elf_section_already_linked (bfd *abfd,
 				 asection *sec,
 				 struct bfd_link_info *info)
@@ -14325,19 +15373,19 @@ _bfd_elf_section_already_linked (bfd *ab
   struct bfd_section_already_linked_hash_entry *already_linked_list;
 
   if (sec->output_section == bfd_abs_section_ptr)
-    return FALSE;
+    return false;
 
   flags = sec->flags;
 
   /* Return if it isn't a linkonce section.  A comdat group section
      also has SEC_LINK_ONCE set.  */
   if ((flags & SEC_LINK_ONCE) == 0)
-    return FALSE;
+    return false;
 
   /* Don't put group member sections on our list of already linked
      sections.  They are handled as a group via their group section.  */
   if (elf_sec_group (sec) != NULL)
-    return FALSE;
+    return false;
 
   /* For a SHT_GROUP section, use the group signature as the key.  */
   name = sec->name;
@@ -14348,7 +15396,7 @@ _bfd_elf_section_already_linked (bfd *ab
   else
     {
       /* Otherwise we should have a .gnu.linkonce.<type>.<key> section.  */
-      if (CONST_STRNEQ (name, ".gnu.linkonce.")
+      if (startswith (name, ".gnu.linkonce.")
 	  && (key = strchr (name + sizeof (".gnu.linkonce.") - 1, '.')) != NULL)
 	key++;
       else
@@ -14371,12 +15419,13 @@ _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.  */
 	  if (!_bfd_handle_already_linked (sec, l, info))
-	    return FALSE;
+	    return false;
 
 	  if (flags & SEC_GROUP)
 	    {
@@ -14395,7 +15444,7 @@ _bfd_elf_section_already_linked (bfd *ab
 		}
 	    }
 
-	  return TRUE;
+	  return true;
 	}
     }
 
@@ -14446,10 +15495,10 @@ _bfd_elf_section_already_linked (bfd *ab
      `.gnu.linkonce.r.F' section.  The order of sections in a bfd does not
      matter as here were are looking only for cross-bfd sections.  */
 
-  if ((flags & SEC_GROUP) == 0 && CONST_STRNEQ (name, ".gnu.linkonce.r."))
+  if ((flags & SEC_GROUP) == 0 && startswith (name, ".gnu.linkonce.r."))
     for (l = already_linked_list->entry; l != NULL; l = l->next)
       if ((l->sec->flags & SEC_GROUP) == 0
-	  && CONST_STRNEQ (l->sec->name, ".gnu.linkonce.t."))
+	  && startswith (l->sec->name, ".gnu.linkonce.t."))
 	{
 	  if (abfd != l->sec->owner)
 	    sec->output_section = bfd_abs_section_ptr;
@@ -14458,11 +15507,11 @@ _bfd_elf_section_already_linked (bfd *ab
 
   /* This is the first section with this name.  Record it.  */
   if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
-    info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
+    info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
   return sec->output_section == bfd_abs_section_ptr;
 }
 
-bfd_boolean
+bool
 _bfd_elf_common_definition (Elf_Internal_Sym *sym)
 {
   return sym->st_shndx == SHN_COMMON;
@@ -14498,7 +15547,7 @@ _bfd_elf_default_got_elt_size (bfd *abfd
 static const char *
 get_dynamic_reloc_section_name (bfd *       abfd,
 				asection *  sec,
-				bfd_boolean is_rela)
+				bool is_rela)
 {
   char *name;
   const char *old_name = bfd_section_name (sec);
@@ -14519,15 +15568,15 @@ get_dynamic_reloc_section_name (bfd *
    of IS_RELA.  */
 
 asection *
-_bfd_elf_get_dynamic_reloc_section (bfd *       abfd,
-				    asection *  sec,
-				    bfd_boolean is_rela)
+_bfd_elf_get_dynamic_reloc_section (bfd *abfd,
+				    asection *sec,
+				    bool is_rela)
 {
-  asection * reloc_sec = elf_section_data (sec)->sreloc;
+  asection *reloc_sec = elf_section_data (sec)->sreloc;
 
   if (reloc_sec == NULL)
     {
-      const char * name = get_dynamic_reloc_section_name (abfd, sec, is_rela);
+      const char *name = get_dynamic_reloc_section_name (abfd, sec, is_rela);
 
       if (name != NULL)
 	{
@@ -14556,7 +15605,7 @@ _bfd_elf_make_dynamic_reloc_section (ase
 				     bfd *dynobj,
 				     unsigned int alignment,
 				     bfd *abfd,
-				     bfd_boolean is_rela)
+				     bool is_rela)
 {
   asection * reloc_sec = elf_section_data (sec)->sreloc;
 
@@ -14612,7 +15661,7 @@ _bfd_elf_copy_link_hash_symbol_type (bfd
   ehdest->target_internal = ehsrc->target_internal;
 
   isym.st_other = ehsrc->other;
-  elf_merge_st_other (abfd, ehdest, &isym, NULL, TRUE, FALSE);
+  elf_merge_st_other (abfd, ehdest, isym.st_other, NULL, true, false);
 }
 
 /* Append a RELA relocation REL to section S in BFD.  */
@@ -14646,13 +15695,18 @@ bfd_elf_define_start_stop (struct bfd_li
   struct elf_link_hash_entry *h;
 
   h = elf_link_hash_lookup (elf_hash_table (info), symbol,
-			    FALSE, FALSE, TRUE);
+			    false, false, true);
+  /* NB: Common symbols will be turned into definition later.  */
   if (h != NULL
+      && !h->root.ldscript_def
       && (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;
+      bool 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;
@@ -14665,12 +15719,13 @@ bfd_elf_define_start_stop (struct bfd_li
 	  /* .startof. and .sizeof. symbols are local.  */
 	  const struct elf_backend_data *bed;
 	  bed = get_elf_backend_data (info->output_bfd);
-	  (*bed->elf_backend_hide_symbol) (info, h, TRUE);
+	  (*bed->elf_backend_hide_symbol) (info, h, true);
 	}
       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 +15733,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.  */
+
+bool
+_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.  */
+
+bool
+_bfd_elf_add_dynamic_tags (bfd *output_bfd, struct bfd_link_info *info,
+			   bool 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.20200303/bfd/elf-linker-x86.h ./bfd/elf-linker-x86.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-linker-x86.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-linker-x86.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,22 +18,27 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-/* Missing IBT and SHSTK property report control.  */
-enum elf_x86_cet_report
+/* Missing IBT, SHSTK and LAM property report control.  */
+enum elf_x86_prop_report
 {
-  cet_report_none	= 0,	    /* Do nothing.  */
-  cet_report_warning	= 1 << 0,   /* Issue a warning.  */
-  cet_report_error	= 1 << 1,   /* Issue an error.  */
-  cet_report_ibt	= 1 << 2,   /* Report missing IBT property.  */
-  cet_report_shstk	= 1 << 3    /* Report missing SHSTK property.  */
+  prop_report_none	= 0,	    /* Do nothing.  */
+  prop_report_warning	= 1 << 0,   /* Issue a warning.  */
+  prop_report_error	= 1 << 1,   /* Issue an error.  */
+  prop_report_ibt	= 1 << 2,   /* Report missing IBT property.  */
+  prop_report_shstk	= 1 << 3    /* Report missing SHSTK property.  */
+};
+
+/* ISA level report control.  */
+enum elf_x86_isa_level_report
+{
+  isa_level_report_none	  = 0,		/* Do nothing.  */
+  isa_level_report_needed = 1 << 0,	/* Needed x86-64 ISA level.  */
+  isa_level_report_used	  = 1 << 1 	/* Used x86-64 ISA level.  */
 };
 
 /* Used to pass x86-specific linker options from ld to bfd.  */
 struct elf_linker_x86_params
 {
-  /* TRUE if BND prefix in PLT entries is always generated.  */
-  unsigned int bndplt: 1;
-
   /* TRUE if IBT-enabled PLT entries should be generated.  */
   unsigned int ibtplt: 1;
 
@@ -43,14 +48,61 @@ struct elf_linker_x86_params
   /* TRUE if GNU_PROPERTY_X86_FEATURE_1_SHSTK should be generated.  */
   unsigned int shstk: 1;
 
+  /* TRUE if GNU_PROPERTY_X86_FEATURE_1_LAM_U48 should be generated.  */
+  unsigned int lam_u48: 1;
+
+  /* TRUE if GNU_PROPERTY_X86_FEATURE_1_LAM_U57 should be generated.  */
+  unsigned int lam_u57: 1;
+
   /* TRUE if we shouldn't check relocation overflow.  */
   unsigned int no_reloc_overflow_check: 1;
 
   /* 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 relative relocations.  */
+  unsigned int report_relative_reloc : 1;
+
+  /* Mark PLT with dynamic tags.  */
+  unsigned int mark_plt : 1;
+
+  /* Add the GLIBC_ABI_GNU2_TLS version dependency if input object files
+     have R_386_TLS_DESC_CALL or R_X86_64_TLSDESC_CALL relocation:
+     0: Disable.
+     1: Enable.
+     2: Auto.  Enable if libc.so has the GLIBC_ABI_GNU2_TLS version.
+   */
+  unsigned int gnu2_tls_version_tag : 2;
+
+  /* Add the GLIBC_ABI_GNU_TLS version dependency if input object files
+     call ___tls_get_addr:
+     0: Disable.
+     1: Enable.
+     2: Auto.  Enable if libc.so has the GLIBC_ABI_GNU_TLS version.
+     This is only used by i386.
+   */
+  unsigned int gnu_tls_version_tag : 2;
+
+  /* X86-64 ISA level needed.  */
+  unsigned int isa_level;
+
+  /* Report needed and used x86-64 ISA levels.  */
+  enum elf_x86_isa_level_report isa_level_report;
+
   /* Report missing IBT and SHSTK properties.  */
-  enum elf_x86_cet_report cet_report;
+  enum elf_x86_prop_report cet_report;
+
+  /* Report missing LAM_U48 property.  */
+  enum elf_x86_prop_report lam_u48_report;
+
+  /* Report missing LAM_U57 property.  */
+  enum elf_x86_prop_report lam_u57_report;
 
   /* The 1-byte NOP for x86 call instruction.  */
   char call_nop_byte;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-linux-core.h ./bfd/elf-linux-core.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-linux-core.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-linux-core.h	2026-03-05 02:07:20.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-2025 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.20200303/bfd/elf-m10200.c ./bfd/elf-m10200.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-m10200.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-m10200.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -23,9 +23,9 @@
 #include "libbfd.h"
 #include "elf-bfd.h"
 
-static bfd_boolean
+static bool
 mn10200_elf_relax_delete_bytes (bfd *, asection *, bfd_vma, int);
-static bfd_boolean
+static bool
 mn10200_elf_symbol_address_p (bfd *, asection *, Elf_Internal_Sym *, bfd_vma);
 
 enum reloc_type
@@ -46,116 +46,116 @@ static reloc_howto_type elf_mn10200_howt
   /* Dummy relocation.  Does nothing.  */
   HOWTO (R_MN10200_NONE,
 	 0,
-	 3,
 	 0,
-	 FALSE,
+	 0,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 bfd_elf_generic_reloc,
 	 "R_MN10200_NONE",
-	 FALSE,
+	 false,
 	 0,
 	 0,
-	 FALSE),
+	 false),
   /* Standard 32 bit reloc.  */
   HOWTO (R_MN10200_32,
 	 0,
-	 2,
+	 4,
 	 32,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10200_32",
-	 FALSE,
+	 false,
 	 0xffffffff,
 	 0xffffffff,
-	 FALSE),
+	 false),
   /* Standard 16 bit reloc.  */
   HOWTO (R_MN10200_16,
 	 0,
-	 1,
+	 2,
 	 16,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10200_16",
-	 FALSE,
+	 false,
 	 0xffff,
 	 0xffff,
-	 FALSE),
+	 false),
   /* Standard 8 bit reloc.  */
   HOWTO (R_MN10200_8,
 	 0,
-	 0,
+	 1,
 	 8,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10200_8",
-	 FALSE,
+	 false,
 	 0xff,
 	 0xff,
-	 FALSE),
+	 false),
   /* Standard 24 bit reloc.  */
   HOWTO (R_MN10200_24,
 	 0,
-	 2,
+	 4,
 	 24,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10200_24",
-	 FALSE,
+	 false,
 	 0xffffff,
 	 0xffffff,
-	 FALSE),
+	 false),
   /* Simple 8 pc-relative reloc.  */
   HOWTO (R_MN10200_PCREL8,
 	 0,
-	 0,
+	 1,
 	 8,
-	 TRUE,
+	 true,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10200_PCREL8",
-	 FALSE,
+	 false,
 	 0xff,
 	 0xff,
-	 TRUE),
+	 true),
   /* Simple 16 pc-relative reloc.  */
   HOWTO (R_MN10200_PCREL16,
 	 0,
-	 1,
+	 2,
 	 16,
-	 TRUE,
+	 true,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10200_PCREL16",
-	 FALSE,
+	 false,
 	 0xffff,
 	 0xffff,
-	 TRUE),
+	 true),
   /* Simple 32bit pc-relative reloc with a 1 byte adjustment
      to get the pc-relative offset correct.  */
   HOWTO (R_MN10200_PCREL24,
 	 0,
-	 2,
+	 4,
 	 24,
-	 TRUE,
+	 true,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10200_PCREL24",
-	 FALSE,
+	 false,
 	 0xffffff,
 	 0xffffff,
-	 TRUE),
+	 true),
 };
 
 struct mn10200_reloc_map
@@ -212,7 +212,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an MN10200 ELF reloc.  */
 
-static bfd_boolean
+static bool
 mn10200_info_to_howto (bfd *abfd,
 		       arelent *cache_ptr,
 		       Elf_Internal_Rela *dst)
@@ -226,7 +226,7 @@ mn10200_info_to_howto (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   cache_ptr->howto = &elf_mn10200_howto_table[r_type];
@@ -335,7 +335,7 @@ mn10200_elf_final_link_relocate (reloc_h
 }
 
 /* Relocate an MN10200 ELF section.  */
-static bfd_boolean
+static int
 mn10200_elf_relocate_section (bfd *output_bfd,
 			      struct bfd_link_info *info,
 			      bfd *input_bfd,
@@ -380,7 +380,7 @@ mn10200_elf_relocate_section (bfd *outpu
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc, warned, ignored;
+	  bool unresolved_reloc, warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -390,7 +390,8 @@ mn10200_elf_relocate_section (bfd *outpu
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_MN10200_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -427,7 +428,7 @@ mn10200_elf_relocate_section (bfd *outpu
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol) (info, name, input_bfd,
 						    input_section,
-						    rel->r_offset, TRUE);
+						    rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -454,12 +455,12 @@ mn10200_elf_relocate_section (bfd *outpu
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 mn10200_elf_relax_delete_bytes (bfd *abfd, asection *sec,
 				bfd_vma addr, int count)
 {
@@ -526,7 +527,7 @@ mn10200_elf_relax_delete_bytes (bfd *abf
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This function handles relaxing for the mn10200.
@@ -558,11 +559,11 @@ mn10200_elf_relax_delete_bytes (bfd *abf
 	We don't handle imm16->imm8 or d16->d8 as they're very rare
 	and somewhat more difficult to support.  */
 
-static bfd_boolean
+static bool
 mn10200_elf_relax_section (bfd *abfd,
 			   asection *sec,
 			   struct bfd_link_info *link_info,
-			   bfd_boolean *again)
+			   bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
@@ -571,16 +572,17 @@ mn10200_elf_relax_section (bfd *abfd,
   Elf_Internal_Sym *isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -730,7 +732,7 @@ mn10200_elf_relax_section (bfd *abfd,
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -777,7 +779,7 @@ mn10200_elf_relax_section (bfd *abfd,
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -795,14 +797,8 @@ mn10200_elf_relax_section (bfd *abfd,
       if (ELF32_R_TYPE (irel->r_info) == (int) R_MN10200_PCREL8)
 	{
 	  Elf_Internal_Rela *nrel;
-	  bfd_vma value = symval;
 	  unsigned char code;
 
-	  /* Deal with pc-relative gunk.  */
-	  value -= (sec->output_section->vma + sec->output_offset);
-	  value -= (irel->r_offset + 1);
-	  value += irel->r_addend;
-
 	  /* Do nothing if this reloc is the last byte in the section.  */
 	  if (irel->r_offset == sec->size)
 	    continue;
@@ -930,7 +926,7 @@ mn10200_elf_relax_section (bfd *abfd,
 
 	  /* That will change things, so, we should relax again.
 	     Note that this is not required, and it may be slow.  */
-	  *again = TRUE;
+	  *again = true;
 	}
 
       /* Try to turn a 24bit immediate, displacement or absolute address
@@ -993,7 +989,7 @@ mn10200_elf_relax_section (bfd *abfd,
 
 		  /* That will change things, so, we should relax again.
 		     Note that this is not required, and it may be slow.  */
-		  *again = TRUE;
+		  *again = true;
 		  break;
 
 		/* mov imm24,an -> mov imm16,an
@@ -1044,7 +1040,7 @@ mn10200_elf_relax_section (bfd *abfd,
 
 		  /* That will change things, so, we should relax again.
 		     Note that this is not required, and it may be slow.  */
-		  *again = TRUE;
+		  *again = true;
 		  break;
 
 		/* cmp imm24,dn -> cmp imm16,dn
@@ -1145,7 +1141,7 @@ mn10200_elf_relax_section (bfd *abfd,
 
 		  /* That will change things, so, we should relax again.
 		     Note that this is not required, and it may be slow.  */
-		  *again = TRUE;
+		  *again = true;
 		  break;
 
 		/* movb (abs24),dn ->movbu (abs16),dn extxb bn */
@@ -1176,7 +1172,7 @@ mn10200_elf_relax_section (bfd *abfd,
 
 		  /* That will change things, so, we should relax again.
 		     Note that this is not required, and it may be slow.  */
-		  *again = TRUE;
+		  *again = true;
 		  break;
 		}
 	    }
@@ -1207,29 +1203,25 @@ 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;
+  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;
+  return false;
 }
 
 /* Return TRUE if a symbol exists at the given address, else return
    FALSE.  */
-static bfd_boolean
+static bool
 mn10200_elf_symbol_address_p (bfd *abfd,
 			      asection *sec,
 			      Elf_Internal_Sym *isym,
@@ -1250,7 +1242,7 @@ mn10200_elf_symbol_address_p (bfd *abfd,
     {
       if (isym->st_shndx == sec_shndx
 	  && isym->st_value == addr)
-	return TRUE;
+	return true;
     }
 
   symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
@@ -1264,10 +1256,10 @@ mn10200_elf_symbol_address_p (bfd *abfd,
 	   || sym_hash->root.type == bfd_link_hash_defweak)
 	  && sym_hash->root.u.def.section == sec
 	  && sym_hash->root.u.def.value == addr)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* This is a version of bfd_generic_get_relocated_section_contents
@@ -1278,7 +1270,7 @@ mn10200_elf_get_relocated_section_conten
 					    struct bfd_link_info *link_info,
 					    struct bfd_link_order *link_order,
 					    bfd_byte *data,
-					    bfd_boolean relocatable,
+					    bool relocatable,
 					    asymbol **symbols)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -1299,6 +1291,13 @@ mn10200_elf_get_relocated_section_conten
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 
+  bfd_byte *orig_data = data;
+  if (data == NULL)
+    {
+      data = bfd_malloc (input_section->size);
+      if (data == NULL)
+	return NULL;
+    }
   memcpy (data, elf_section_data (input_section)->this_hdr.contents,
 	  (size_t) input_section->size);
 
@@ -1312,7 +1311,7 @@ mn10200_elf_get_relocated_section_conten
 
       internal_relocs = (_bfd_elf_link_read_relocs
 			 (input_bfd, input_section, NULL,
-			  (Elf_Internal_Rela *) NULL, FALSE));
+			  (Elf_Internal_Rela *) NULL, false));
       if (internal_relocs == NULL)
 	goto error_return;
 
@@ -1355,10 +1354,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,14 +1364,13 @@ 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);
+  if (orig_data == NULL)
+    free (data);
   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.20200303/bfd/elf-m10300.c ./bfd/elf-m10300.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-m10300.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-m10300.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -128,13 +128,14 @@ 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						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (info)))
 
 static reloc_howto_type elf_mn10300_howto_table[] =
@@ -142,495 +143,495 @@ static reloc_howto_type elf_mn10300_howt
   /* Dummy relocation.  Does nothing.  */
   HOWTO (R_MN10300_NONE,
 	 0,
-	 3,
 	 0,
-	 FALSE,
+	 0,
+	 false,
 	 0,
 	 complain_overflow_dont,
 	 bfd_elf_generic_reloc,
 	 "R_MN10300_NONE",
-	 FALSE,
+	 false,
 	 0,
 	 0,
-	 FALSE),
+	 false),
   /* Standard 32 bit reloc.  */
   HOWTO (R_MN10300_32,
 	 0,
-	 2,
+	 4,
 	 32,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10300_32",
-	 FALSE,
+	 false,
 	 0xffffffff,
 	 0xffffffff,
-	 FALSE),
+	 false),
   /* Standard 16 bit reloc.  */
   HOWTO (R_MN10300_16,
 	 0,
-	 1,
+	 2,
 	 16,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10300_16",
-	 FALSE,
+	 false,
 	 0xffff,
 	 0xffff,
-	 FALSE),
+	 false),
   /* Standard 8 bit reloc.  */
   HOWTO (R_MN10300_8,
 	 0,
-	 0,
+	 1,
 	 8,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10300_8",
-	 FALSE,
+	 false,
 	 0xff,
 	 0xff,
-	 FALSE),
+	 false),
   /* Standard 32bit pc-relative reloc.  */
   HOWTO (R_MN10300_PCREL32,
 	 0,
-	 2,
+	 4,
 	 32,
-	 TRUE,
+	 true,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10300_PCREL32",
-	 FALSE,
+	 false,
 	 0xffffffff,
 	 0xffffffff,
-	 TRUE),
+	 true),
   /* Standard 16bit pc-relative reloc.  */
   HOWTO (R_MN10300_PCREL16,
 	 0,
-	 1,
+	 2,
 	 16,
-	 TRUE,
+	 true,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10300_PCREL16",
-	 FALSE,
+	 false,
 	 0xffff,
 	 0xffff,
-	 TRUE),
+	 true),
   /* Standard 8 pc-relative reloc.  */
   HOWTO (R_MN10300_PCREL8,
 	 0,
-	 0,
+	 1,
 	 8,
-	 TRUE,
+	 true,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10300_PCREL8",
-	 FALSE,
+	 false,
 	 0xff,
 	 0xff,
-	 TRUE),
+	 true),
 
   /* GNU extension to record C++ vtable hierarchy.  */
   HOWTO (R_MN10300_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MN10300_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_MN10300_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MN10300_GNU_VTENTRY", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Standard 24 bit reloc.  */
   HOWTO (R_MN10300_24,
 	 0,
-	 2,
+	 4,
 	 24,
-	 FALSE,
+	 false,
 	 0,
 	 complain_overflow_bitfield,
 	 bfd_elf_generic_reloc,
 	 "R_MN10300_24",
-	 FALSE,
+	 false,
 	 0xffffff,
 	 0xffffff,
-	 FALSE),
+	 false),
   HOWTO (R_MN10300_GOTPC32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GOTPC32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MN10300_GOTPC16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GOTPC16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MN10300_GOTOFF32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GOTOFF32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_GOTOFF24,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GOTOFF24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffff,		/* src_mask */
 	 0xffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_GOTOFF16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GOTOFF16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_PLT32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_PLT32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MN10300_PLT16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_PLT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MN10300_GOT32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GOT32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_GOT24,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 24,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GOT24",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_GOT16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GOT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_COPY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_JMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_JMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_GD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_GD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_LD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_LD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_LDO,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_LDO",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_GOTIE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_GOTIE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_IE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_IE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_LE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_LE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_DTPMOD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_DTPMOD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_DTPOFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_DTPOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_TLS_TPOFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* */
 	 "R_MN10300_TLS_TPOFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_SYM_DIFF,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 NULL,			/* special handler.  */
 	 "R_MN10300_SYM_DIFF",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MN10300_ALIGN,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 NULL,			/* special handler.  */
 	 "R_MN10300_ALIGN",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE)			/* pcrel_offset */
+	 false)			/* pcrel_offset */
 };
 
 struct mn10300_reloc_map
@@ -680,7 +681,7 @@ static const struct mn10300_reloc_map mn
 
 /* Create the GOT section.  */
 
-static bfd_boolean
+static bool
 _bfd_mn10300_elf_create_got_section (bfd * abfd,
 				     struct bfd_link_info * info)
 {
@@ -695,7 +696,7 @@ _bfd_mn10300_elf_create_got_section (bfd
   /* This function may be called more than once.  */
   htab = elf_hash_table (info);
   if (htab->sgot != NULL)
-    return TRUE;
+    return true;
 
   switch (bed->s->arch_size)
     {
@@ -709,7 +710,7 @@ _bfd_mn10300_elf_create_got_section (bfd
 
     default:
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
@@ -726,7 +727,7 @@ _bfd_mn10300_elf_create_got_section (bfd
   htab->splt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
 
   /* Define the symbol _PROCEDURE_LINKAGE_TABLE_ at the start of the
      .plt section.  */
@@ -736,14 +737,14 @@ _bfd_mn10300_elf_create_got_section (bfd
 				       "_PROCEDURE_LINKAGE_TABLE_");
       htab->hplt = h;
       if (h == NULL)
-	return FALSE;
+	return false;
     }
 
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   htab->sgot = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (bed->want_got_plt)
     {
@@ -751,7 +752,7 @@ _bfd_mn10300_elf_create_got_section (bfd
       htab->sgotplt = s;
       if (s == NULL
 	  || !bfd_set_section_alignment (s, ptralign))
-	return FALSE;
+	return false;
     }
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got
@@ -761,12 +762,12 @@ _bfd_mn10300_elf_create_got_section (bfd
   h = _bfd_elf_define_linkage_sym (abfd, info, s, "_GLOBAL_OFFSET_TABLE_");
   htab->hgot = h;
   if (h == NULL)
-    return FALSE;
+    return false;
 
   /* The first bit of the global offset table is the header.  */
   s->size += bed->got_header_size;
 
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type *
@@ -798,7 +799,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 
 /* Set the howto pointer for an MN10300 ELF reloc.  */
 
-static bfd_boolean
+static bool
 mn10300_info_to_howto (bfd *abfd,
 		       arelent *cache_ptr,
 		       Elf_Internal_Rela *dst)
@@ -812,10 +813,10 @@ mn10300_info_to_howto (bfd *abfd,
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
   cache_ptr->howto = elf_mn10300_howto_table + r_type;
-  return TRUE;
+  return true;
 }
 
 static int
@@ -823,9 +824,9 @@ elf_mn10300_tls_transition (struct bfd_l
 			    int				  r_type,
 			    struct elf_link_hash_entry *  h,
 			    asection *			  sec,
-			    bfd_boolean			  counting)
+			    bool			  counting)
 {
-  bfd_boolean is_local;
+  bool is_local;
 
   if (r_type == R_MN10300_TLS_GD
       && h != NULL
@@ -839,7 +840,7 @@ elf_mn10300_tls_transition (struct bfd_l
     return r_type;
 
   if (! counting && h != NULL && ! elf_hash_table (info)->dynamic_sections_created)
-    is_local = TRUE;
+    is_local = true;
   else
     is_local = SYMBOL_CALLS_LOCAL (info, h);
 
@@ -1040,14 +1041,14 @@ mn10300_do_tls_transition (bfd *	 input_
    Since we don't do .gots or .plts, we just need to consider the
    virtual table relocs for gc.  */
 
-static bfd_boolean
+static bool
 mn10300_elf_check_relocs (bfd *abfd,
 			  struct bfd_link_info *info,
 			  asection *sec,
 			  const Elf_Internal_Rela *relocs)
 {
   struct elf32_mn10300_link_hash_table * htab = elf32_mn10300_hash_table (info);
-  bfd_boolean sym_diff_reloc_seen;
+  bool sym_diff_reloc_seen;
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Sym * isymbuf = NULL;
   struct elf_link_hash_entry **sym_hashes;
@@ -1058,14 +1059,14 @@ mn10300_elf_check_relocs (bfd *abfd,
   asection * sgot;
   asection * srelgot;
   asection * sreloc;
-  bfd_boolean result = FALSE;
+  bool result = false;
 
   sgot    = NULL;
   srelgot = NULL;
   sreloc  = NULL;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
@@ -1074,7 +1075,7 @@ mn10300_elf_check_relocs (bfd *abfd,
   dynobj = elf_hash_table (info)->dynobj;
   local_got_offsets = elf_local_got_offsets (abfd);
   rel_end = relocs + sec->reloc_count;
-  sym_diff_reloc_seen = FALSE;
+  sym_diff_reloc_seen = false;
 
   for (rel = relocs; rel < rel_end; rel++)
     {
@@ -1095,7 +1096,7 @@ mn10300_elf_check_relocs (bfd *abfd,
 	}
 
       r_type = ELF32_R_TYPE (rel->r_info);
-      r_type = elf_mn10300_tls_transition (info, r_type, h, sec, TRUE);
+      r_type = elf_mn10300_tls_transition (info, r_type, h, sec, true);
 
       /* Some relocs require a global offset table.  */
       if (dynobj == NULL)
@@ -1300,7 +1301,7 @@ mn10300_elf_check_relocs (bfd *abfd,
 	  break;
 
 	case R_MN10300_SYM_DIFF:
-	  sym_diff_reloc_seen = TRUE;
+	  sym_diff_reloc_seen = true;
 	  break;
 
 	case R_MN10300_32:
@@ -1354,7 +1355,7 @@ mn10300_elf_check_relocs (bfd *abfd,
 		  if (sreloc == NULL)
 		    {
 		      sreloc = _bfd_elf_make_dynamic_reloc_section
-			(sec, dynobj, 2, abfd, /*rela?*/ TRUE);
+			(sec, dynobj, 2, abfd, /*rela?*/ true);
 		      if (sreloc == NULL)
 			goto fail;
 		    }
@@ -1367,12 +1368,12 @@ mn10300_elf_check_relocs (bfd *abfd,
 	}
 
       if (ELF32_R_TYPE (rel->r_info) != R_MN10300_SYM_DIFF)
-	sym_diff_reloc_seen = FALSE;
+	sym_diff_reloc_seen = false;
     }
 
-  result = TRUE;
+  result = true;
  fail:
-  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
+  if (symtab_hdr->contents != (unsigned char *) isymbuf)
     free (isymbuf);
 
   return result;
@@ -1419,7 +1420,7 @@ mn10300_elf_final_link_relocate (reloc_h
   struct elf32_mn10300_link_hash_table * htab = elf32_mn10300_hash_table (info);
   static asection *  sym_diff_section;
   static bfd_vma     sym_diff_value;
-  bfd_boolean is_sym_diff_reloc;
+  bool is_sym_diff_reloc;
   unsigned long r_type = howto->type;
   bfd_byte * hit_data = contents + offset;
   bfd *      dynobj;
@@ -1462,7 +1463,7 @@ mn10300_elf_final_link_relocate (reloc_h
 	return bfd_reloc_dangerous;
     }
 
-  is_sym_diff_reloc = FALSE;
+  is_sym_diff_reloc = false;
   if (sym_diff_section != NULL)
     {
       BFD_ASSERT (sym_diff_section == input_section);
@@ -1486,7 +1487,7 @@ mn10300_elf_final_link_relocate (reloc_h
 	      && strcmp (input_section->name, ".debug_loc") == 0)
 	    value = 1;
 	  sym_diff_section = NULL;
-	  is_sym_diff_reloc = TRUE;
+	  is_sym_diff_reloc = true;
 	  break;
 
 	default:
@@ -1525,7 +1526,7 @@ mn10300_elf_final_link_relocate (reloc_h
 	  && (input_section->flags & SEC_ALLOC) != 0)
 	{
 	  Elf_Internal_Rela outrel;
-	  bfd_boolean skip, relocate;
+	  bool skip, relocate;
 
 	  /* When generating a shared object, these relocations are
 	     copied into the output file to be resolved at run
@@ -1533,17 +1534,17 @@ mn10300_elf_final_link_relocate (reloc_h
 	  if (sreloc == NULL)
 	    {
 	      sreloc = _bfd_elf_get_dynamic_reloc_section
-		(input_bfd, input_section, /*rela?*/ TRUE);
+		(input_bfd, input_section, /*rela?*/ true);
 	      if (sreloc == NULL)
-		return FALSE;
+		return false;
 	    }
 
-	  skip = FALSE;
+	  skip = false;
 
 	  outrel.r_offset = _bfd_elf_section_offset (input_bfd, info,
 						     input_section, offset);
 	  if (outrel.r_offset == (bfd_vma) -1)
-	    skip = TRUE;
+	    skip = true;
 
 	  outrel.r_offset += (input_section->output_section->vma
 			      + input_section->output_offset);
@@ -1551,7 +1552,7 @@ mn10300_elf_final_link_relocate (reloc_h
 	  if (skip)
 	    {
 	      memset (&outrel, 0, sizeof outrel);
-	      relocate = FALSE;
+	      relocate = false;
 	    }
 	  else
 	    {
@@ -1560,14 +1561,14 @@ mn10300_elf_final_link_relocate (reloc_h
 	      if (h == NULL
 		  || SYMBOL_REFERENCES_LOCAL (info, h))
 		{
-		  relocate = TRUE;
+		  relocate = true;
 		  outrel.r_info = ELF32_R_INFO (0, R_MN10300_RELATIVE);
 		  outrel.r_addend = value + addend;
 		}
 	      else
 		{
 		  BFD_ASSERT (h->dynindx != -1);
-		  relocate = FALSE;
+		  relocate = false;
 		  outrel.r_info = ELF32_R_INFO (h->dynindx, R_MN10300_32);
 		  outrel.r_addend = value + addend;
 		}
@@ -1962,7 +1963,7 @@ mn10300_elf_final_link_relocate (reloc_h
 
 /* Relocate an MN10300 ELF section.  */
 
-static bfd_boolean
+static int
 mn10300_elf_relocate_section (bfd *output_bfd,
 			      struct bfd_link_info *info,
 			      bfd *input_bfd,
@@ -1993,8 +1994,8 @@ mn10300_elf_relocate_section (bfd *outpu
       bfd_vma relocation;
       bfd_reloc_status_type r;
       int tls_r_type;
-      bfd_boolean unresolved_reloc = FALSE;
-      bfd_boolean warned, ignored;
+      bool unresolved_reloc = false;
+      bool warned, ignored;
       struct elf_link_hash_entry * hh;
 
       relocation = 0;
@@ -2024,7 +2025,7 @@ mn10300_elf_relocate_section (bfd *outpu
       tls_r_type = elf_mn10300_tls_transition (info, r_type, hh, input_section, 0);
       if (tls_r_type != r_type)
 	{
-	  bfd_boolean had_plt;
+	  bool had_plt;
 
 	  had_plt = mn10300_do_tls_transition (input_bfd, r_type, tls_r_type,
 					       contents, rel->r_offset);
@@ -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
@@ -2100,7 +2101,8 @@ mn10300_elf_relocate_section (bfd *outpu
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_MN10300_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -2138,7 +2140,7 @@ mn10300_elf_relocate_section (bfd *outpu
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -2169,17 +2171,17 @@ mn10300_elf_relocate_section (bfd *outpu
 	    common_error:
 	      _bfd_error_handler (msg, input_bfd, name);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish initializing one hash table entry.  */
 
-static bfd_boolean
+static bool
 elf32_mn10300_finish_hash_table_entry (struct bfd_hash_entry *gen_entry,
 				       void * in_args)
 {
@@ -2192,7 +2194,7 @@ elf32_mn10300_finish_hash_table_entry (s
   /* If we already know we want to convert "call" to "calls" for calls
      to this symbol, then return now.  */
   if (entry->flags == MN10300_CONVERT_CALL_TO_CALLS)
-    return TRUE;
+    return true;
 
   /* If there are no named calls to this symbol, or there's nothing we
      can move from the function itself into the "call" instruction,
@@ -2209,7 +2211,7 @@ elf32_mn10300_finish_hash_table_entry (s
       /* Make a note that we should convert "call" instructions to "calls"
 	 instructions for calls to this symbol.  */
       entry->flags |= MN10300_CONVERT_CALL_TO_CALLS;
-      return TRUE;
+      return true;
     }
 
   /* We may be able to move some instructions from the function itself into
@@ -2235,24 +2237,24 @@ elf32_mn10300_finish_hash_table_entry (s
     entry->flags |= MN10300_CONVERT_CALL_TO_CALLS;
 
   /* This routine never fails.  */
-  return TRUE;
+  return true;
 }
 
 /* Used to count hash table entries.  */
 
-static bfd_boolean
+static bool
 elf32_mn10300_count_hash_table_entries (struct bfd_hash_entry *gen_entry ATTRIBUTE_UNUSED,
 					void * in_args)
 {
   int *count = (int *) in_args;
 
   (*count) ++;
-  return TRUE;
+  return true;
 }
 
 /* Used to enumerate hash table entries into a linear array.  */
 
-static bfd_boolean
+static bool
 elf32_mn10300_list_hash_table_entries (struct bfd_hash_entry *gen_entry,
 				       void * in_args)
 {
@@ -2260,7 +2262,7 @@ elf32_mn10300_list_hash_table_entries (s
 
   **ptr = gen_entry;
   (*ptr) ++;
-  return TRUE;
+  return true;
 }
 
 /* Used to sort the array created by the above.  */
@@ -2377,7 +2379,7 @@ compute_function_info (bfd *abfd,
 
 /* Delete some bytes from a section while relaxing.  */
 
-static bfd_boolean
+static bool
 mn10300_elf_relax_delete_bytes (bfd *abfd,
 				asection *sec,
 				bfd_vma addr,
@@ -2417,17 +2419,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;
+		}
 	    }
 	}
     }
@@ -2542,13 +2546,13 @@ mn10300_elf_relax_delete_bytes (bfd *abf
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if a symbol exists at the given address, else return
    FALSE.  */
 
-static bfd_boolean
+static bool
 mn10300_elf_symbol_address_p (bfd *abfd,
 			      asection *sec,
 			      Elf_Internal_Sym *isym,
@@ -2568,7 +2572,7 @@ mn10300_elf_symbol_address_p (bfd *abfd,
   for (isymend = isym + symtab_hdr->sh_info; isym < isymend; isym++)
     if (isym->st_shndx == sec_shndx
 	&& isym->st_value == addr)
-      return TRUE;
+      return true;
 
   symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
 	      - symtab_hdr->sh_info);
@@ -2582,10 +2586,10 @@ mn10300_elf_symbol_address_p (bfd *abfd,
 	   || sym_hash->root.type == bfd_link_hash_defweak)
 	  && sym_hash->root.u.def.section == sec
 	  && sym_hash->root.u.def.value == addr)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* This function handles relaxing for the mn10300.
@@ -2627,11 +2631,11 @@ mn10300_elf_symbol_address_p (bfd *abfd,
 	We don't handle imm16->imm8 or d16->d8 as they're very rare
 	and somewhat more difficult to support.  */
 
-static bfd_boolean
+static bool
 mn10300_elf_relax_section (bfd *abfd,
 			   asection *sec,
 			   struct bfd_link_info *link_info,
-			   bfd_boolean *again)
+			   bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs = NULL;
@@ -2643,16 +2647,16 @@ mn10300_elf_relax_section (bfd *abfd,
   bfd_vma align_gap_adjustment;
 
   if (bfd_link_relocatable (link_info))
-    (*link_info->callbacks->einfo)
-      (_("%P%F: --relax and -r may not be used together\n"));
+    link_info->callbacks->fatal
+      (_("%P: --relax and -r may not be used together\n"));
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We need a pointer to the mn10300 specific hash table.  */
   hash_table = elf32_mn10300_hash_table (link_info);
   if (hash_table == NULL)
-    return FALSE;
+    return false;
 
   /* Initialize fields in each hash table entry the first time through.  */
   if ((hash_table->flags & MN10300_HASH_ENTRIES_INITIALIZED) == 0)
@@ -2691,7 +2695,8 @@ mn10300_elf_relax_section (bfd *abfd,
 	      if (! ((section->flags & SEC_RELOC) != 0
 		     && section->reloc_count != 0))
 		continue;
-	      if ((section->flags & SEC_ALLOC) == 0)
+	      if ((section->flags & SEC_ALLOC) == 0
+		  || (section->flags & SEC_HAS_CONTENTS) == 0)
 		continue;
 
 	      /* Get cached copy of section contents if it exists.  */
@@ -2743,7 +2748,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)
@@ -2781,7 +2786,7 @@ mn10300_elf_relax_section (bfd *abfd,
 			  elftab = &hash_table->static_hash_table->root;
 			  hash = ((struct elf32_mn10300_link_hash_entry *)
 				  elf_link_hash_lookup (elftab, sym_name,
-							TRUE, TRUE, FALSE));
+							true, true, false));
 			  free (new_name);
 			}
 		      else
@@ -2844,7 +2849,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
@@ -2890,7 +2895,7 @@ mn10300_elf_relax_section (bfd *abfd,
 			  elftab = &hash_table->static_hash_table->root;
 			  hash = ((struct elf32_mn10300_link_hash_entry *)
 				  elf_link_hash_lookup (elftab, sym_name,
-							TRUE, TRUE, FALSE));
+							true, true, false));
 			  free (new_name);
 			  compute_function_info (input_bfd, hash,
 						 isym->st_value, contents);
@@ -2912,8 +2917,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;
 
@@ -3032,7 +3036,9 @@ mn10300_elf_relax_section (bfd *abfd,
 	      unsigned int symcount;
 
 	      /* Skip non-code sections and empty sections.  */
-	      if ((section->flags & SEC_CODE) == 0 || section->size == 0)
+	      if ((section->flags & SEC_CODE) == 0
+		  || (section->flags & SEC_HAS_CONTENTS) == 0
+		  || section->size == 0)
 		continue;
 
 	      if (section->reloc_count != 0)
@@ -3069,7 +3075,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;
@@ -3101,7 +3107,7 @@ mn10300_elf_relax_section (bfd *abfd,
 		  elftab = & hash_table->static_hash_table->root;
 		  sym_hash = (struct elf32_mn10300_link_hash_entry *)
 		    elf_link_hash_lookup (elftab, sym_name,
-					  FALSE, FALSE, FALSE);
+					  false, false, false);
 
 		  free (new_name);
 		  if (sym_hash == NULL)
@@ -3142,7 +3148,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		      /* Something changed.  Not strictly necessary, but
 			 may lead to more relaxing opportunities.  */
-		      *again = TRUE;
+		      *again = true;
 		    }
 		}
 
@@ -3217,13 +3223,12 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		      /* Something changed.  Not strictly necessary, but
 			 may lead to more relaxing opportunities.  */
-		      *again = TRUE;
+		      *again = true;
 		    }
 		}
 
 	      /* 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;
 
@@ -3268,7 +3273,7 @@ mn10300_elf_relax_section (bfd *abfd,
       || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -3412,7 +3417,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 	  h = (struct elf32_mn10300_link_hash_entry *)
 		elf_link_hash_lookup (&hash_table->static_hash_table->root,
-				      sym_name, FALSE, FALSE, FALSE);
+				      sym_name, false, false, false);
 	  free (new_name);
 	}
       else
@@ -3508,7 +3513,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		  /* That will change things, so, we should relax again.
 		     Note that this is not required, and it may be slow.  */
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 	  else if (h)
@@ -3583,7 +3588,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -3626,7 +3631,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		  /* That will change things, so, we should relax again.
 		     Note that this is not required, and it may be slow.  */
-		  *again = TRUE;
+		  *again = true;
 		}
 	    }
 	  else if (h)
@@ -3683,7 +3688,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 	      /* That will change things, so, we should relax again.
 		 Note that this is not required, and it may be slow.  */
-	      *again = TRUE;
+	      *again = true;
 	    }
 	}
 
@@ -3701,14 +3706,8 @@ mn10300_elf_relax_section (bfd *abfd,
       if (ELF32_R_TYPE (irel->r_info) == (int) R_MN10300_PCREL8)
 	{
 	  Elf_Internal_Rela *nrel;
-	  bfd_vma value = symval;
 	  unsigned char code;
 
-	  /* Deal with pc-relative gunk.  */
-	  value -= (sec->output_section->vma + sec->output_offset);
-	  value -= irel->r_offset;
-	  value += irel->r_addend;
-
 	  /* Do nothing if this reloc is the last byte in the section.  */
 	  if (irel->r_offset == sec->size)
 	    continue;
@@ -3823,7 +3822,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 	  /* That will change things, so, we should relax again.
 	     Note that this is not required, and it may be slow.  */
-	  *again = TRUE;
+	  *again = true;
 	}
 
       /* Try to turn a 24 immediate, displacement or absolute address
@@ -3886,7 +3885,7 @@ mn10300_elf_relax_section (bfd *abfd,
 			  /* That will change things, so, we should relax
 			     again.  Note that this is not required, and it
 			     may be slow.  */
-			  *again = TRUE;
+			  *again = true;
 			  break;
 			}
 		    }
@@ -3933,7 +3932,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;
 
@@ -3994,7 +3993,7 @@ mn10300_elf_relax_section (bfd *abfd,
 			  /* That will change things, so, we should relax
 			     again.  Note that this is not required, and it
 			     may be slow.  */
-			  *again = TRUE;
+			  *again = true;
 			  break;
 			}
 		    }
@@ -4004,7 +4003,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;
 
@@ -4080,7 +4079,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		    /* That will change things, so, we should relax again.
 		       Note that this is not required, and it may be slow.  */
-		    *again = TRUE;
+		    *again = true;
 		    break;
 		  }
 	      else if ((code & 0xf0) == 0x80
@@ -4134,7 +4133,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		    /* That will change things, so, we should relax again.
 		       Note that this is not required, and it may be slow.  */
-		    *again = TRUE;
+		    *again = true;
 		    break;
 
 		  /* mov am,(abs32)    -> mov am,(abs16)
@@ -4181,7 +4180,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		    /* That will change things, so, we should relax again.
 		       Note that this is not required, and it may be slow.  */
-		    *again = TRUE;
+		    *again = true;
 		    break;
 		  }
 	      else if ((code & 0xf0) < 0xf0)
@@ -4254,7 +4253,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		    /* That will change things, so, we should relax again.
 		       Note that this is not required, and it may be slow.  */
-		    *again = TRUE;
+		    *again = true;
 		    break;
 
 		  /* mov (abs32),an    -> mov (abs16),an
@@ -4324,7 +4323,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		    /* That will change things, so, we should relax again.
 		       Note that this is not required, and it may be slow.  */
-		    *again = TRUE;
+		    *again = true;
 		    break;
 		  }
 	      else if (code == 0xfe)
@@ -4360,7 +4359,7 @@ mn10300_elf_relax_section (bfd *abfd,
 
 		  /* That will change things, so, we should relax again.
 		     Note that this is not required, and it may be slow.  */
-		  *again = TRUE;
+		  *again = true;
 		  break;
 		}
 	    }
@@ -4391,24 +4390,20 @@ 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;
+  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;
+  return false;
 }
 
 /* This is a version of bfd_generic_get_relocated_section_contents
@@ -4419,7 +4414,7 @@ mn10300_elf_get_relocated_section_conten
 					    struct bfd_link_info *link_info,
 					    struct bfd_link_order *link_order,
 					    bfd_byte *data,
-					    bfd_boolean relocatable,
+					    bool relocatable,
 					    asymbol **symbols)
 {
   Elf_Internal_Shdr *symtab_hdr;
@@ -4440,6 +4435,13 @@ mn10300_elf_get_relocated_section_conten
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
 
+  bfd_byte *orig_data = data;
+  if (data == NULL)
+    {
+      data = bfd_malloc (input_section->size);
+      if (data == NULL)
+	return NULL;
+    }
   memcpy (data, elf_section_data (input_section)->this_hdr.contents,
 	  (size_t) input_section->size);
 
@@ -4451,7 +4453,7 @@ mn10300_elf_get_relocated_section_conten
       bfd_size_type amt;
 
       internal_relocs = _bfd_elf_link_read_relocs (input_bfd, input_section,
-						   NULL, NULL, FALSE);
+						   NULL, NULL, false);
       if (internal_relocs == NULL)
 	goto error_return;
 
@@ -4494,9 +4496,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,13 +4506,13 @@ 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);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
@@ -4591,7 +4592,7 @@ elf32_mn10300_link_hash_table_free (bfd
 
   obfd->link.hash = &ret->static_hash_table->root.root;
   _bfd_elf_link_hash_table_free (obfd);
-  obfd->is_linker_output = TRUE;
+  obfd->is_linker_output = true;
   obfd->link.hash = &ret->root.root;
   _bfd_elf_link_hash_table_free (obfd);
 }
@@ -4602,7 +4603,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)
@@ -4618,22 +4619,20 @@ elf32_mn10300_link_hash_table_create (bf
 
   if (!_bfd_elf_link_hash_table_init (&ret->static_hash_table->root, abfd,
 				      elf32_mn10300_link_hash_newfunc,
-				      sizeof (struct elf32_mn10300_link_hash_entry),
-				      MN10300_ELF_DATA))
+				      sizeof (struct elf32_mn10300_link_hash_entry)))
     {
       free (ret->static_hash_table);
       free (ret);
       return NULL;
     }
 
-  abfd->is_linker_output = FALSE;
+  abfd->is_linker_output = false;
   abfd->link.hash = NULL;
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      elf32_mn10300_link_hash_newfunc,
-				      sizeof (struct elf32_mn10300_link_hash_entry),
-				      MN10300_ELF_DATA))
+				      sizeof (struct elf32_mn10300_link_hash_entry)))
     {
-      abfd->is_linker_output = TRUE;
+      abfd->is_linker_output = true;
       abfd->link.hash = &ret->static_hash_table->root.root;
       _bfd_elf_link_hash_table_free (abfd);
       free (ret);
@@ -4667,7 +4666,7 @@ elf_mn10300_mach (flagword flags)
    file.  This gets the MN10300 architecture right based on the machine
    number.  */
 
-static bfd_boolean
+static bool
 _bfd_mn10300_elf_final_write_processing (bfd *abfd)
 {
   unsigned long val;
@@ -4693,35 +4692,35 @@ _bfd_mn10300_elf_final_write_processing
   return _bfd_elf_final_write_processing (abfd);
 }
 
-static bfd_boolean
+static bool
 _bfd_mn10300_elf_object_p (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_mn10300,
 			     elf_mn10300_mach (elf_elfheader (abfd)->e_flags));
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 _bfd_mn10300_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
 
   if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
       || bfd_get_flavour (obfd) != bfd_target_elf_flavour)
-    return TRUE;
+    return true;
 
   if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
       && bfd_get_mach (obfd) < bfd_get_mach (ibfd))
     {
       if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
 			       bfd_get_mach (ibfd)))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 #define PLT0_ENTRY_SIZE     15
@@ -4786,7 +4785,7 @@ static const bfd_byte elf_mn10300_pic_pl
 
 /* Create dynamic sections when linking against a dynamic object.  */
 
-static bfd_boolean
+static bool
 _bfd_mn10300_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   flagword   flags;
@@ -4807,7 +4806,7 @@ _bfd_mn10300_elf_create_dynamic_sections
 
     default:
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* We need to create .plt, .rel[a].plt, .got, .got.plt, .dynbss, and
@@ -4822,10 +4821,10 @@ _bfd_mn10300_elf_create_dynamic_sections
   htab->root.srelplt = s;
   if (s == NULL
       || !bfd_set_section_alignment (s, ptralign))
-    return FALSE;
+    return false;
 
   if (! _bfd_mn10300_elf_create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
   if (bed->want_dynbss)
     {
@@ -4838,7 +4837,7 @@ _bfd_mn10300_elf_create_dynamic_sections
       s = bfd_make_section_anyway_with_flags (abfd, ".dynbss",
 					      SEC_ALLOC | SEC_LINKER_CREATED);
       if (s == NULL)
-	return FALSE;
+	return false;
 
       /* The .rel[a].bss section holds copy relocs.  This section is not
 	 normally needed.  We need to create it here, though, so that the
@@ -4859,11 +4858,11 @@ _bfd_mn10300_elf_create_dynamic_sections
 						  flags | SEC_READONLY);
 	  if (s == NULL
 	      || !bfd_set_section_alignment (s, ptralign))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -4872,7 +4871,7 @@ _bfd_mn10300_elf_create_dynamic_sections
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 _bfd_mn10300_elf_adjust_dynamic_symbol (struct bfd_link_info * info,
 					struct elf_link_hash_entry * h)
 {
@@ -4906,14 +4905,14 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (
 	     a procedure linkage table, and we can just do a REL32
 	     reloc instead.  */
 	  BFD_ASSERT (h->needs_plt);
-	  return TRUE;
+	  return true;
 	}
 
       /* Make sure this symbol is output as a dynamic symbol.  */
       if (h->dynindx == -1)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->root.splt;
@@ -4952,7 +4951,7 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (
       BFD_ASSERT (s != NULL);
       s->size += sizeof (Elf32_External_Rela);
 
-      return TRUE;
+      return true;
     }
 
   /* If this is a weak symbol, and there is a real definition, the
@@ -4964,7 +4963,7 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -4975,12 +4974,12 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    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
@@ -5014,19 +5013,18 @@ _bfd_mn10300_elf_adjust_dynamic_symbol (
 
 /* Set the sizes of the dynamic sections.  */
 
-static bfd_boolean
-_bfd_mn10300_elf_size_dynamic_sections (bfd * output_bfd,
-					struct bfd_link_info * info)
+static bool
+_bfd_mn10300_elf_late_size_sections (bfd * output_bfd,
+				     struct bfd_link_info * info)
 {
   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;
+  bool relocs;
 
   dynobj = htab->root.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -5037,6 +5035,7 @@ _bfd_mn10300_elf_size_dynamic_sections (
 	  BFD_ASSERT (s != NULL);
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
   else
@@ -5061,9 +5060,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;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char * name;
@@ -5078,41 +5075,23 @@ _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"))
+      else if (startswith (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.  */
 	      s->reloc_count = 0;
 	    }
 	}
-      else if (! CONST_STRNEQ (name, ".got")
+      else if (! startswith (name, ".got")
 	       && ! streq (name, ".dynbss"))
 	/* It's not one of our sections, so don't allocate space.  */
 	continue;
@@ -5142,54 +5121,17 @@ _bfd_mn10300_elf_size_dynamic_sections (
 	 instead of garbage.  */
       s->contents = bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	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 false;
+      s->alloced = 1;
     }
 
-  return TRUE;
+  return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs);
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 _bfd_mn10300_elf_finish_dynamic_symbol (bfd * output_bfd,
 					struct bfd_link_info * info,
 					struct elf_link_hash_entry * h,
@@ -5390,12 +5332,12 @@ _bfd_mn10300_elf_finish_dynamic_symbol (
       || h == elf_hash_table (info)->hgot)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 _bfd_mn10300_elf_finish_dynamic_sections (bfd * output_bfd,
 					  struct bfd_link_info * info)
 {
@@ -5500,7 +5442,7 @@ _bfd_mn10300_elf_finish_dynamic_sections
 
   elf_section_data (sgot->output_section)->this_hdr.sh_entsize = 4;
 
-  return TRUE;
+  return true;
 }
 
 /* Classify relocation types, such that combreloc can sort them
@@ -5522,11 +5464,10 @@ _bfd_mn10300_elf_reloc_type_class (const
 
 /* Allocate space for an MN10300 extension to the bfd elf data structure.  */
 
-static bfd_boolean
+static bool
 mn10300_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_mn10300_obj_tdata),
-				  MN10300_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_mn10300_obj_tdata));
 }
 
 #define bfd_elf32_mkobject	mn10300_elf_mkobject
@@ -5571,8 +5512,8 @@ mn10300_elf_mkobject (bfd *abfd)
   _bfd_mn10300_elf_create_dynamic_sections
 #define elf_backend_adjust_dynamic_symbol \
   _bfd_mn10300_elf_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections \
-  _bfd_mn10300_elf_size_dynamic_sections
+#define elf_backend_late_size_sections \
+  _bfd_mn10300_elf_late_size_sections
 #define elf_backend_omit_section_dynsym _bfd_elf_omit_section_dynsym_all
 #define elf_backend_finish_dynamic_symbol \
   _bfd_mn10300_elf_finish_dynamic_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.20200303/bfd/elfn32-mips.c ./bfd/elfn32-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfn32-mips.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfn32-mips.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS-specific support for 32-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    Most of the information added by Ian Lance Taylor, Cygnus Support,
    <ian@cygnus.com>.
@@ -48,10 +48,10 @@
 #define ECOFF_SIGNED_32
 #include "ecoffswap.h"
 
-static bfd_boolean mips_elf_assign_gp
+static bool mips_elf_assign_gp
   (bfd *, bfd_vma *);
 static bfd_reloc_status_type mips_elf_final_gp
-  (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *);
+  (bfd *, asymbol *, bool, char **, bfd_vma *);
 static bfd_reloc_status_type mips_elf_gprel16_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips_elf_literal_reloc
@@ -59,30 +59,32 @@ static bfd_reloc_status_type mips_elf_li
 static bfd_reloc_status_type mips_elf_gprel32_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type gprel32_with_gp
-  (bfd *, asymbol *, arelent *, asection *, bfd_boolean, void *, bfd_vma);
+  (bfd *, asymbol *, arelent *, asection *, bool, void *, bfd_vma);
 static bfd_reloc_status_type mips_elf_shift6_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static bfd_reloc_status_type mips16_gprel_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 static reloc_howto_type *bfd_elf32_bfd_reloc_type_lookup
   (bfd *, bfd_reloc_code_real_type);
-static bfd_boolean mips_info_to_howto_rel
+static bool mips_info_to_howto_rel
   (bfd *, arelent *, Elf_Internal_Rela *);
-static bfd_boolean mips_info_to_howto_rela
+static bool mips_info_to_howto_rela
   (bfd *, arelent *, Elf_Internal_Rela *);
-static bfd_boolean mips_elf_sym_is_global
+static bool mips_elf_sym_is_global
   (bfd *, asymbol *);
-static bfd_boolean mips_elf_n32_object_p
+static bool mips_elf_n32_elfsym_local_is_section
   (bfd *);
-static bfd_boolean elf32_mips_grok_prstatus
+static bool mips_elf_n32_object_p
+  (bfd *);
+static bool elf32_mips_grok_prstatus
   (bfd *, Elf_Internal_Note *);
-static bfd_boolean elf32_mips_grok_psinfo
+static bool elf32_mips_grok_psinfo
   (bfd *, Elf_Internal_Note *);
-static bfd_boolean elf_n32_mips_grok_freebsd_prstatus
+static bool elf_n32_mips_grok_freebsd_prstatus
   (bfd *, Elf_Internal_Note *);
 static irix_compat_t elf_n32_mips_irix_compat
   (bfd *);
-static bfd_boolean mips_elf_n32_mkobject
+static bool mips_elf_n32_mkobject
   (bfd *);
 
 extern const bfd_target mips_elf32_n_be_vec;
@@ -110,69 +112,69 @@ static reloc_howto_type elf_mips_howto_t
   /* No relocation.  */
   HOWTO (R_MIPS_NONE,		/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit relocation.  */
   HOWTO (R_MIPS_16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation.  */
   HOWTO (R_MIPS_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit symbol relative relocation.  */
   HOWTO (R_MIPS_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_REL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 26 bit jump address.  */
   HOWTO (R_MIPS_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -180,10 +182,10 @@ static reloc_howto_type elf_mips_howto_t
 				   bits must match the PC + 4.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03ffffff,		/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* R_MIPS_HI16 and R_MIPS_LO16 are unsupported for NewABI REL.
      However, the native IRIX6 tools use them, so we try our best. */
@@ -191,124 +193,124 @@ static reloc_howto_type elf_mips_howto_t
   /* High 16 bits of symbol value.  */
   HOWTO (R_MIPS_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_HI16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MIPS_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_LO16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_elf_gprel16_reloc, /* special_function */
 	 "R_MIPS_GPREL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_elf_literal_reloc, /* special_function */
 	 "R_MIPS_LITERAL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MIPS_GOT16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MIPS_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit PC relative reference.  Note that the ABI document has a typo
      and claims R_MIPS_PC16 to be not rightshifted, rendering it useless.
      We do the right thing here.  */
   HOWTO (R_MIPS_PC16,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC16",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MIPS_CALL16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit GP relative reference.  */
   HOWTO (R_MIPS_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 mips_elf_gprel32_reloc, /* special_function */
 	 "R_MIPS_GPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The remaining relocs are defined on Irix 5, although they are
      not defined by the ABI.  */
@@ -319,186 +321,186 @@ static reloc_howto_type elf_mips_howto_t
   /* A 5 bit shift field.  */
   HOWTO (R_MIPS_SHIFT5,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 5,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SHIFT5",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000007c0,		/* src_mask */
 	 0x000007c0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 6 bit shift field.  */
   HOWTO (R_MIPS_SHIFT6,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mips_elf_shift6_reloc,	/* special_function */
 	 "R_MIPS_SHIFT6",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000007c4,		/* src_mask */
 	 0x000007c4,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 64 bit relocation.  */
   HOWTO (R_MIPS_64,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_64",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement in the global offset table.  */
   HOWTO (R_MIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_DISP",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_PAGE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_OFST",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  */
   HOWTO (R_MIPS_SUB,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SUB",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Insert the addend as an instruction.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_INSERT_A,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_INSERT_A",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Insert the addend as an instruction, and change all relocations
      to refer to the old instruction at the address.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_INSERT_B,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_INSERT_B",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Delete a 32 bit instruction.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_DELETE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_DELETE",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The MIPS ELF64 ABI Draft wants us to support these for REL relocations.
      We don't, because
@@ -511,62 +513,62 @@ static reloc_howto_type elf_mips_howto_t
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement.  */
   HOWTO (R_MIPS_SCN_DISP,       /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SCN_DISP",     /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MIPS_REL16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_REL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffff,		/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* These two are obsolete.  */
   EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE),
@@ -576,62 +578,62 @@ static reloc_howto_type elf_mips_howto_t
      It must be used for multigot GOT's (and only there).  */
   HOWTO (R_MIPS_RELGOT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_RELGOT",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MIPS_JALR,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_JALR",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x00000000,		/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS GD/LD dynamic relocations.  */
   HOWTO (R_MIPS_TLS_DTPMOD32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPMOD32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MIPS_TLS_DTPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (R_MIPS_TLS_DTPMOD64),
   EMPTY_HOWTO (R_MIPS_TLS_DTPREL64),
@@ -639,139 +641,139 @@ static reloc_howto_type elf_mips_howto_t
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS IE dynamic relocations.  */
   HOWTO (R_MIPS_TLS_TPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL32",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (R_MIPS_TLS_TPREL64),
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation with no addend.  */
   HOWTO (R_MIPS_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (52),
   EMPTY_HOWTO (53),
@@ -784,87 +786,87 @@ static reloc_howto_type elf_mips_howto_t
 
   HOWTO (R_MIPS_PC21_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC21_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x001fffff,		/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC26_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC26_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x03ffffff,		/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC18_S3,	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 18,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC18_S3",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0003ffff,		/* src_mask */
 	 0x0003ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC19_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC19_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0007ffff,		/* src_mask */
 	 0x0007ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCHI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc,   /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS_PCHI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCLO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc,   /* special_function */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS_PCLO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 };
 
@@ -875,69 +877,69 @@ static reloc_howto_type elf_mips_howto_t
   /* No relocation.  */
   HOWTO (R_MIPS_NONE,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_NONE",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit relocation.  */
   HOWTO (R_MIPS_16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
-	 0x0000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 0x0000ffff,		/* dst_mask */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation.  */
   HOWTO (R_MIPS_32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_32",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit symbol relative relocation.  */
   HOWTO (R_MIPS_REL32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_REL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 26 bit jump address.  */
   HOWTO (R_MIPS_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -945,132 +947,132 @@ static reloc_howto_type elf_mips_howto_t
 				   bits must match the PC + 4.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_26",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MIPS_HI16,		/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_HI16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MIPS_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_LO16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_elf_gprel16_reloc, /* special_function */
 	 "R_MIPS_GPREL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips_elf_literal_reloc, /* special_function */
 	 "R_MIPS_LITERAL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MIPS_GOT16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit PC relative reference.  Note that the ABI document has a typo
      and claims R_MIPS_PC16 to be not rightshifted, rendering it useless.
      We do the right thing here.  */
   HOWTO (R_MIPS_PC16,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC16",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MIPS_CALL16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit GP relative reference.  */
   HOWTO (R_MIPS_GPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 mips_elf_gprel32_reloc, /* special_function */
 	 "R_MIPS_GPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (13),
   EMPTY_HOWTO (14),
@@ -1079,276 +1081,276 @@ static reloc_howto_type elf_mips_howto_t
   /* A 5 bit shift field.  */
   HOWTO (R_MIPS_SHIFT5,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 5,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SHIFT5",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000007c0,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 6 bit shift field.  */
   HOWTO (R_MIPS_SHIFT6,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 6,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 6,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 mips_elf_shift6_reloc,	/* special_function */
 	 "R_MIPS_SHIFT6",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000007c4,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit relocation.  */
   HOWTO (R_MIPS_64,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_64",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement in the global offset table.  */
   HOWTO (R_MIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_DISP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_PAGE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_OFST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GOT_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  */
   HOWTO (R_MIPS_SUB,		/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SUB",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Insert the addend as an instruction.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_INSERT_A,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_INSERT_A",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Insert the addend as an instruction, and change all relocations
      to refer to the old instruction at the address.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_INSERT_B,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_INSERT_B",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Delete a 32 bit instruction.  */
   /* FIXME: Not handled correctly.  */
   HOWTO (R_MIPS_DELETE,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_DELETE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the higher value of a 64 bit addend.  */
   HOWTO (R_MIPS_HIGHER,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_HIGHER",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the highest value of a 64 bit addend.  */
   HOWTO (R_MIPS_HIGHEST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_HIGHEST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_HI16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_CALL_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement, used by an associated event location section.  */
   HOWTO (R_MIPS_SCN_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_SCN_DISP",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 16 bit relocation.  */
   HOWTO (R_MIPS_REL16,		/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_REL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* These two are obsolete.  */
   EMPTY_HOWTO (R_MIPS_ADD_IMMEDIATE),
@@ -1358,62 +1360,62 @@ static reloc_howto_type elf_mips_howto_t
      It must be used for multigot GOT's (and only there).  */
   HOWTO (R_MIPS_RELGOT,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_RELGOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MIPS_JALR,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_JALR",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS GD/LD dynamic relocations.  */
   HOWTO (R_MIPS_TLS_DTPMOD32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPMOD32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MIPS_TLS_DTPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (R_MIPS_TLS_DTPMOD64),
   EMPTY_HOWTO (R_MIPS_TLS_DTPREL64),
@@ -1421,139 +1423,139 @@ static reloc_howto_type elf_mips_howto_t
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_LDM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_DTPREL_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_GOTTPREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS IE dynamic relocations.  */
   HOWTO (R_MIPS_TLS_TPREL32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (R_MIPS_TLS_TPREL64),
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_TLS_TPREL_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 32 bit relocation with no addend.  */
   HOWTO (R_MIPS_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (52),
   EMPTY_HOWTO (53),
@@ -1566,87 +1568,87 @@ static reloc_howto_type elf_mips_howto_t
 
   HOWTO (R_MIPS_PC21_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC21_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x001fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC26_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC26_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x03ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC18_S3,	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 18,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC18_S3",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0003ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PC19_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PC19_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0007ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCHI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PCHI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MIPS_PCLO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc,   /* special_function */
 	 "R_MIPS_PCLO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 };
 
@@ -1655,9 +1657,9 @@ static reloc_howto_type elf_mips16_howto
   /* The reloc used for the mips16 jump instruction.  */
   HOWTO (R_MIPS16_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -1665,205 +1667,205 @@ static reloc_howto_type elf_mips16_howto
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_26",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x3ffffff,		/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The reloc used for the mips16 gprel instruction.  */
   HOWTO (R_MIPS16_GPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips16_gprel_reloc,	/* special_function */
 	 "R_MIPS16_GPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 reference to the global offset table.  */
   HOWTO (R_MIPS16_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MIPS16_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 call through the global offset table.  */
   HOWTO (R_MIPS16_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 high 16 bits of symbol value.  */
   HOWTO (R_MIPS16_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 low 16 bits of symbol value.  */
   HOWTO (R_MIPS16_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS general dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_GD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 16-bit PC-relative branch offset.  */
   HOWTO (R_MIPS16_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_PC16_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 static reloc_howto_type elf_mips16_howto_table_rela[] =
@@ -1871,9 +1873,9 @@ static reloc_howto_type elf_mips16_howto
   /* The reloc used for the mips16 jump instruction.  */
   HOWTO (R_MIPS16_26,		/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -1881,205 +1883,205 @@ static reloc_howto_type elf_mips16_howto
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_26",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* The reloc used for the mips16 gprel instruction.  */
   HOWTO (R_MIPS16_GPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 mips16_gprel_reloc,	/* special_function */
 	 "R_MIPS16_GPREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 reference to the global offset table.  */
   HOWTO (R_MIPS16_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_got16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_GOT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A MIPS16 call through the global offset table.  */
   HOWTO (R_MIPS16_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_CALL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 high 16 bits of symbol value.  */
   HOWTO (R_MIPS16_HI16,		/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_hi16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 low 16 bits of symbol value.  */
   HOWTO (R_MIPS16_LO16,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_lo16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS general dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_GD,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic variable reference.  */
   HOWTO (R_MIPS16_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_LDM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS local dynamic offset.  */
   HOWTO (R_MIPS16_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_DTPREL_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_GOTTPREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 TLS thread pointer offset.  */
   HOWTO (R_MIPS16_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_TLS_TPREL_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MIPS16 16-bit PC-relative branch offset.  */
   HOWTO (R_MIPS16_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS16_PC16_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 static reloc_howto_type elf_micromips_howto_table_rel[] =
@@ -2091,9 +2093,9 @@ static reloc_howto_type elf_micromips_ho
   /* 26 bit jump address.  */
   HOWTO (R_MICROMIPS_26_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -2101,143 +2103,143 @@ static reloc_howto_type elf_micromips_ho
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_26_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x3ffffff,		/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MICROMIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MICROMIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_LITERAL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MICROMIPS_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_got16_reloc, /* special_function */
 	 "R_MICROMIPS_GOT16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This is for microMIPS branches.  */
   HOWTO (R_MICROMIPS_PC7_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC7_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000007f,		/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC10_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC10_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x000003ff,		/* src_mask */
 	 0x000003ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC16_S1",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MICROMIPS_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (143),
   EMPTY_HOWTO (144),
@@ -2245,92 +2247,92 @@ static reloc_howto_type elf_micromips_ho
   /* Displacement in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_DISP",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_PAGE",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_OFST",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_HI16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  Used in the N32 ABI.  */
   HOWTO (R_MICROMIPS_SUB,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SUB",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 MINUS_ONE,		/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* We don't support these for REL relocations, because it means building
      the addend from a R_MICROMIPS_HIGHEST/R_MICROMIPS_HIGHER/
@@ -2341,80 +2343,80 @@ static reloc_howto_type elf_micromips_ho
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_HI16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement.  */
   HOWTO (R_MICROMIPS_SCN_DISP,  /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SCN_DISP", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MICROMIPS_JALR,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_JALR",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  Note that the high 16 bits of symbol values
      must be zero.  This is used for relaxation.  */
   HOWTO (R_MICROMIPS_HI0_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HI0_LO16",/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (158),
   EMPTY_HOWTO (159),
@@ -2424,141 +2426,141 @@ static reloc_howto_type elf_micromips_ho
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GD",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_LDM",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_HI16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_LO16",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GOTTPREL",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (167),
   EMPTY_HOWTO (168),
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 _bfd_mips_elf_hi16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_HI16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_generic_reloc, /* special_function */
+	 complain_overflow_dont, /* complain_on_overflow */
+	 _bfd_mips_elf_lo16_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_LO16", /* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (171),
 
   /* GP- and PC-relative relocations.  */
   HOWTO (R_MICROMIPS_GPREL7_S2,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL7_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000007f,		/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC23_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 23,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC23_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x007fffff,		/* src_mask */
 	 0x007fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 static reloc_howto_type elf_micromips_howto_table_rela[] =
@@ -2570,9 +2572,9 @@ static reloc_howto_type elf_micromips_ho
   /* 26 bit jump address.  */
   HOWTO (R_MICROMIPS_26_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 				/* This needs complex overflow
@@ -2580,143 +2582,143 @@ static reloc_howto_type elf_micromips_ho
 				   bits must match the PC.  */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_26_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_HI16,	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_hi16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  */
   HOWTO (R_MICROMIPS_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
-	 _bfd_mips_elf_lo16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GP relative reference.  */
   HOWTO (R_MICROMIPS_GPREL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to literal section.  */
   HOWTO (R_MICROMIPS_LITERAL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_LITERAL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Reference to global offset table.  */
   HOWTO (R_MICROMIPS_GOT16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
-	 _bfd_mips_elf_got16_reloc, /* special_function */
+	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* This is for microMIPS branches.  */
   HOWTO (R_MICROMIPS_PC7_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC7_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC10_S1,	/* type */
 	 1,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 10,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC10_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x000003ff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC16_S1,	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC16_S1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* 16 bit call through global offset table.  */
   HOWTO (R_MICROMIPS_CALL16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (143),
   EMPTY_HOWTO (144),
@@ -2724,199 +2726,199 @@ static reloc_howto_type elf_micromips_ho
   /* Displacement in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_DISP,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_DISP",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Displacement to page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_PAGE,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_PAGE",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Offset from page pointer in the global offset table.  */
   HOWTO (R_MICROMIPS_GOT_OFST,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_OFST",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_HI16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_GOT_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_GOT_LO16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* 64 bit subtraction.  Used in the N32 ABI.  */
   HOWTO (R_MICROMIPS_SUB,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SUB",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 MINUS_ONE,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the higher value of a 64 bit addend.  */
   HOWTO (R_MICROMIPS_HIGHER,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 32,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HIGHER",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get the highest value of a 64 bit addend.  */
   HOWTO (R_MICROMIPS_HIGHEST,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 48,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HIGHEST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* High 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_HI16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of displacement in global offset table.  */
   HOWTO (R_MICROMIPS_CALL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_CALL_LO16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Section displacement.  */
   HOWTO (R_MICROMIPS_SCN_DISP,  /* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_SCN_DISP", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Protected jump conversion.  This is an optimization hint.  No
      relocation is required for correctness.  */
   HOWTO (R_MICROMIPS_JALR,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_JALR",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x00000000,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Low 16 bits of symbol value.  Note that the high 16 bits of symbol values
      must be zero.  This is used for relaxation.  */
   HOWTO (R_MICROMIPS_HI0_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_HI0_LO16",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (158),
   EMPTY_HOWTO (159),
@@ -2926,222 +2928,222 @@ static reloc_howto_type elf_micromips_ho
   /* TLS general dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_GD,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GD",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic variable reference.  */
   HOWTO (R_MICROMIPS_TLS_LDM,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_LDM",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_HI16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS local dynamic offset.  */
   HOWTO (R_MICROMIPS_TLS_DTPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_DTPREL_LO16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_GOTTPREL,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_GOTTPREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (167),
   EMPTY_HOWTO (168),
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_HI16,	/* type */
-	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 16,			/* rightshift */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_HI16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* TLS thread pointer offset.  */
   HOWTO (R_MICROMIPS_TLS_TPREL_LO16,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
-	 complain_overflow_signed, /* complain_on_overflow */
+	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_TLS_TPREL_LO16", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (171),
 
   /* GP- and PC-relative relocations.  */
   HOWTO (R_MICROMIPS_GPREL7_S2,	/* type */
 	 2,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 7,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf32_gprel16_reloc, /* special_function */
 	 "R_MICROMIPS_GPREL7_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000007f,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_MICROMIPS_PC23_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 23,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MICROMIPS_PC23_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x007fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 };
 
 /* GNU extension to record C++ vtable hierarchy */
 static reloc_howto_type elf_mips_gnu_vtinherit_howto =
   HOWTO (R_MIPS_GNU_VTINHERIT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_MIPS_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* GNU extension to record C++ vtable member usage */
 static reloc_howto_type elf_mips_gnu_vtentry_howto =
   HOWTO (R_MIPS_GNU_VTENTRY,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn, /* special_function */
 	 "R_MIPS_GNU_VTENTRY",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* 16 bit offset for pc-relative branches.  */
 static reloc_howto_type elf_mips_gnu_rel16_s2 =
   HOWTO (R_MIPS_GNU_REL16_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GNU_REL16_S2",	/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0x0000ffff,		/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE);			/* pcrel_offset */
+	 true);			/* pcrel_offset */
 
 /* 16 bit offset for pc-relative branches.  */
 static reloc_howto_type elf_mips_gnu_rela16_s2 =
   HOWTO (R_MIPS_GNU_REL16_S2,	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_GNU_REL16_S2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0x0000ffff,		/* dst_mask */
-	 TRUE);			/* pcrel_offset */
+	 true);			/* pcrel_offset */
 
 /* 32 bit pc-relative.  Used for compact EH tables.  */
 static reloc_howto_type elf_mips_gnu_pcrel32 =
   HOWTO (R_MIPS_PC32,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_PC32",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE);			/* pcrel_offset */
+	 true);			/* pcrel_offset */
 
 
 /* Originally a VxWorks extension, but now used for other systems too.  */
@@ -3150,53 +3152,53 @@ static reloc_howto_type elf_mips_copy_ho
 	 0,			/* rightshift */
 	 0,			/* this one is variable size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Originally a VxWorks extension, but now used for other systems too.  */
 static reloc_howto_type elf_mips_jump_slot_howto =
   HOWTO (R_MIPS_JUMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_JUMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Used in EH tables.  */
 static reloc_howto_type elf_mips_eh_howto =
   HOWTO (R_MIPS_EH,		/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 _bfd_mips_elf_generic_reloc, /* special_function */
 	 "R_MIPS_EH",		/* name */
-	 TRUE,			/* partial_inplace */
+	 true,			/* partial_inplace */
 	 0xffffffff,		/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 
 /* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
    dangerous relocation.  */
 
-static bfd_boolean
+static bool
 mips_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp)
 {
   unsigned int count;
@@ -3206,7 +3208,7 @@ mips_elf_assign_gp (bfd *output_bfd, bfd
   /* If we've already figured out what GP will be, just return it.  */
   *pgp = _bfd_get_gp_value (output_bfd);
   if (*pgp)
-    return TRUE;
+    return true;
 
   count = bfd_get_symcount (output_bfd);
   sym = bfd_get_outsymbols (output_bfd);
@@ -3236,10 +3238,10 @@ mips_elf_assign_gp (bfd *output_bfd, bfd
       /* Only get the error once.  */
       *pgp = 4;
       _bfd_set_gp_value (output_bfd, *pgp);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We have to figure out the gp value, so that we can adjust the
@@ -3249,11 +3251,10 @@ mips_elf_assign_gp (bfd *output_bfd, bfd
    external symbol if we are producing relocatable output.  */
 
 static bfd_reloc_status_type
-mips_elf_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable,
+mips_elf_final_gp (bfd *output_bfd, asymbol *symbol, bool relocatable,
 		   char **error_message, bfd_vma *pgp)
 {
-  if (bfd_is_und_section (symbol->section)
-      && ! relocatable)
+  if (output_bfd == NULL)
     {
       *pgp = 0;
       return bfd_reloc_undefined;
@@ -3290,16 +3291,17 @@ mips_elf_gprel16_reloc (bfd *abfd ATTRIB
 			asection *input_section, bfd *output_bfd,
 			char **error_message ATTRIBUTE_UNUSED)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      if (symbol->section->output_section != NULL)
+	output_bfd = symbol->section->output_section->owner;
     }
 
   ret = mips_elf_final_gp (output_bfd, symbol, relocatable, error_message,
@@ -3319,7 +3321,7 @@ mips_elf_literal_reloc (bfd *abfd, arele
 			void *data, asection *input_section, bfd *output_bfd,
 			char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -3335,11 +3337,12 @@ mips_elf_literal_reloc (bfd *abfd, arele
 
   /* FIXME: The entries in the .lit8 and .lit4 sections should be merged.  */
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      if (symbol->section->output_section != NULL)
+	output_bfd = symbol->section->output_section->owner;
     }
 
   ret = mips_elf_final_gp (output_bfd, symbol, relocatable, error_message,
@@ -3360,7 +3363,7 @@ mips_elf_gprel32_reloc (bfd *abfd, arele
 			void *data, asection *input_section, bfd *output_bfd,
 			char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_vma gp;
 
@@ -3376,13 +3379,14 @@ mips_elf_gprel32_reloc (bfd *abfd, arele
 
   if (output_bfd != NULL)
     {
-      relocatable = TRUE;
+      relocatable = true;
       gp = _bfd_get_gp_value (output_bfd);
     }
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+      if (symbol->section->output_section != NULL)
+	output_bfd = symbol->section->output_section->owner;
 
       ret = mips_elf_final_gp (output_bfd, symbol, relocatable,
 			       error_message, &gp);
@@ -3396,7 +3400,7 @@ mips_elf_gprel32_reloc (bfd *abfd, arele
 
 static bfd_reloc_status_type
 gprel32_with_gp (bfd *abfd, asymbol *symbol, arelent *reloc_entry,
-		 asection *input_section, bfd_boolean relocatable,
+		 asection *input_section, bool relocatable,
 		 void *data, bfd_vma gp)
 {
   bfd_vma relocation;
@@ -3407,10 +3411,14 @@ gprel32_with_gp (bfd *abfd, asymbol *sym
   else
     relocation = symbol->value;
 
-  relocation += symbol->section->output_section->vma;
-  relocation += symbol->section->output_offset;
+  if (symbol->section->output_section != NULL)
+    {
+      relocation += symbol->section->output_section->vma;
+      relocation += symbol->section->output_offset;
+    }
 
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd, input_section,
+				  reloc_entry->address))
     return bfd_reloc_outofrange;
 
   if (reloc_entry->howto->src_mask == 0)
@@ -3462,7 +3470,7 @@ mips16_gprel_reloc (bfd *abfd, arelent *
 		    void *data, asection *input_section, bfd *output_bfd,
 		    char **error_message)
 {
-  bfd_boolean relocatable;
+  bool relocatable;
   bfd_reloc_status_type ret;
   bfd_byte *location;
   bfd_vma gp;
@@ -3478,11 +3486,12 @@ mips16_gprel_reloc (bfd *abfd, arelent *
     }
 
   if (output_bfd != NULL)
-    relocatable = TRUE;
+    relocatable = true;
   else
     {
-      relocatable = FALSE;
-      output_bfd = symbol->section->output_section->owner;
+      relocatable = false;
+       if (symbol->section->output_section != NULL)
+	 output_bfd = symbol->section->output_section->owner;
     }
 
   ret = mips_elf_final_gp (output_bfd, symbol, relocatable, error_message,
@@ -3490,8 +3499,12 @@ mips16_gprel_reloc (bfd *abfd, arelent *
   if (ret != bfd_reloc_ok)
     return ret;
 
+  if (!_bfd_mips_reloc_offset_in_range (abfd, input_section, reloc_entry,
+					check_shuffle))
+    return bfd_reloc_outofrange;
+
   location = (bfd_byte *) data + reloc_entry->address;
-  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, FALSE,
+  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, false,
 				 location);
   ret = _bfd_mips_elf_gprel16_with_gp (abfd, symbol, reloc_entry,
 				       input_section, relocatable,
@@ -3512,7 +3525,8 @@ struct elf_reloc_map {
 static const struct elf_reloc_map mips_reloc_map[] =
 {
   { BFD_RELOC_NONE, R_MIPS_NONE },
-  { BFD_RELOC_16, R_MIPS_16 },
+  { BFD_RELOC_MIPS_16, R_MIPS_16 },
+  { BFD_RELOC_16, R_MIPS_REL16 },
   { BFD_RELOC_32, R_MIPS_32 },
   /* There is no BFD reloc for R_MIPS_REL32.  */
   { BFD_RELOC_CTOR, R_MIPS_32 },
@@ -3542,7 +3556,6 @@ static const struct elf_reloc_map mips_r
   { BFD_RELOC_MIPS_CALL_HI16, R_MIPS_CALL_HI16 },
   { BFD_RELOC_MIPS_CALL_LO16, R_MIPS_CALL_LO16 },
   { BFD_RELOC_MIPS_SCN_DISP, R_MIPS_SCN_DISP },
-  { BFD_RELOC_MIPS_REL16, R_MIPS_REL16 },
   /* Use of R_MIPS_ADD_IMMEDIATE and R_MIPS_PJUMP is deprecated.  */
   { BFD_RELOC_MIPS_RELGOT, R_MIPS_RELGOT },
   { BFD_RELOC_MIPS_JALR, R_MIPS_JALR },
@@ -3735,7 +3748,7 @@ bfd_elf32_bfd_reloc_name_lookup (bfd *ab
 /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure.  */
 
 static reloc_howto_type *
-mips_elf_n32_rtype_to_howto (bfd *abfd, unsigned int r_type, bfd_boolean rela_p)
+mips_elf_n32_rtype_to_howto (bfd *abfd, unsigned int r_type, bool rela_p)
 {
   reloc_howto_type *howto = NULL;
 
@@ -3792,16 +3805,16 @@ mips_elf_n32_rtype_to_howto (bfd *abfd,
 
 /* Given a MIPS Elf_Internal_Rel, fill in an arelent structure.  */
 
-static bfd_boolean
+static bool
 mips_info_to_howto_rel (bfd *abfd, arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  cache_ptr->howto = mips_elf_n32_rtype_to_howto (abfd, r_type, FALSE);
+  cache_ptr->howto = mips_elf_n32_rtype_to_howto (abfd, r_type, false);
 
   if (cache_ptr->howto == NULL)
-    return FALSE;
+    return false;
 
   /* The addend for a GPREL16 or LITERAL relocation comes from the GP
      value for the object file.  We get the addend now, rather than
@@ -3811,19 +3824,19 @@ mips_info_to_howto_rel (bfd *abfd, arele
       && (gprel16_reloc_p (r_type) || r_type == (unsigned int) R_MIPS_LITERAL))
     cache_ptr->addend = elf_gp (abfd);
 
-  return TRUE;
+  return true;
 }
 
 /* Given a MIPS Elf_Internal_Rela, fill in an arelent structure.  */
 
-static bfd_boolean
+static bool
 mips_info_to_howto_rela (bfd *abfd,
 			 arelent *cache_ptr, Elf_Internal_Rela *dst)
 {
   unsigned int r_type;
 
   r_type = ELF32_R_TYPE (dst->r_info);
-  cache_ptr->howto = mips_elf_n32_rtype_to_howto (abfd, r_type, TRUE);
+  cache_ptr->howto = mips_elf_n32_rtype_to_howto (abfd, r_type, true);
   cache_ptr->addend = dst->r_addend;
   return cache_ptr->howto != NULL;
 }
@@ -3834,7 +3847,7 @@ mips_info_to_howto_rela (bfd *abfd,
    symbols.  On most ELF targets the split is between static symbols
    and externally visible symbols.  */
 
-static bfd_boolean
+static bool
 mips_elf_sym_is_global (bfd *abfd ATTRIBUTE_UNUSED, asymbol *sym)
 {
   if (SGI_COMPAT (abfd))
@@ -3844,30 +3857,38 @@ 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 bool
+mips_elf_n32_elfsym_local_is_section (bfd *abfd)
+{
+  return SGI_COMPAT (abfd);
+}
 
 /* Set the right machine number for a MIPS ELF file.  */
 
-static bfd_boolean
+static bool
 mips_elf_n32_object_p (bfd *abfd)
 {
   unsigned long mach;
 
   if (!ABI_N32_P (abfd))
-    return FALSE;
+    return false;
 
   /* Irix 5 and 6 are broken.  Object file symbol tables are not always
      sorted correctly such that local symbols precede global symbols,
      and the sh_info field in the symbol table is not always right.  */
   if (SGI_COMPAT (abfd))
-    elf_bad_symtab (abfd) = TRUE;
+    elf_bad_symtab (abfd) = true;
 
   mach = _bfd_elf_mips_mach (elf_elfheader (abfd)->e_flags);
   bfd_default_set_arch_mach (abfd, bfd_arch_mips, mach);
-  return TRUE;
+  return true;
 }
 
 /* Support for core dump NOTE sections.  */
-static bfd_boolean
+static bool
 elf32_mips_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -3876,7 +3897,7 @@ elf32_mips_grok_prstatus (bfd *abfd, Elf
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 440:		/* Linux/MIPS N32 */
 	/* pr_cursig */
@@ -3897,13 +3918,13 @@ elf32_mips_grok_prstatus (bfd *abfd, Elf
 					  note->descpos + offset);
 }
 
-static bfd_boolean
+static bool
 elf32_mips_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 128:		/* Linux/MIPS elf_prpsinfo */
 	elf_tdata (abfd)->core->pid
@@ -3926,10 +3947,10 @@ elf32_mips_grok_psinfo (bfd *abfd, Elf_I
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_n32_mips_grok_freebsd_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   size_t offset;
@@ -3942,11 +3963,11 @@ elf_n32_mips_grok_freebsd_prstatus (bfd
   min_size = offset + 4 * 2 + 4 + 4 + 4;
 
   if (note->descsz < min_size)
-    return FALSE;
+    return false;
 
   /* Check for version 1 in pr_version.  */
   if (bfd_h_get_32 (abfd, (bfd_byte *) note->descdata) != 1)
-    return FALSE;
+    return false;
 
   /* Extract size of pr_reg from pr_gregsetsz.  */
   /* Skip over pr_gregsetsz and pr_fpregsetsz.  */
@@ -3972,7 +3993,7 @@ elf_n32_mips_grok_freebsd_prstatus (bfd
 
   /* Make sure that there is enough data remaining in the note.  */
   if (note->descsz - offset < size)
-    return FALSE;
+    return false;
 
   /* Make a ".reg/999" section and a ".reg" section.  */
   return _bfd_elfcore_make_pseudosection (abfd, ".reg",
@@ -4033,10 +4054,10 @@ elf_n32_mips_irix_compat (bfd *abfd)
 /* Make an n32 MIPS object.  We need to set the n32 ABI flag in
    `e_flags' to tell the object apart from an o32 object.  */
 
-static bfd_boolean
+static bool
 mips_elf_n32_mkobject (bfd *abfd)
 {
-  bfd_boolean ret;
+  bool ret;
 
   ret = _bfd_mips_elf_mkobject (abfd);
   if (ret)
@@ -4091,9 +4112,9 @@ static const struct ecoff_debug_swap mip
 #define ELF_TARGET_ID			MIPS_ELF_DATA
 #define ELF_MACHINE_CODE		EM_MIPS
 
-#define elf_backend_collect		TRUE
-#define elf_backend_type_change_ok	TRUE
-#define elf_backend_can_gc_sections	TRUE
+#define elf_backend_collect		true
+#define elf_backend_type_change_ok	true
+#define elf_backend_can_gc_sections	true
 #define elf_backend_gc_mark_extra_sections \
 					_bfd_mips_elf_gc_mark_extra_sections
 #define elf_info_to_howto		mips_info_to_howto_rela
@@ -4117,10 +4138,7 @@ static const struct ecoff_debug_swap mip
 #define elf_backend_get_target_dtag	_bfd_mips_elf_get_target_dtag
 #define elf_backend_adjust_dynamic_symbol \
 					_bfd_mips_elf_adjust_dynamic_symbol
-#define elf_backend_always_size_sections \
-					_bfd_mips_elf_always_size_sections
-#define elf_backend_size_dynamic_sections \
-					_bfd_mips_elf_size_dynamic_sections
+#define elf_backend_late_size_sections	_bfd_mips_elf_late_size_sections
 #define elf_backend_init_index_section	_bfd_elf_init_1_index_section
 #define elf_backend_relocate_section	_bfd_mips_elf_relocate_section
 #define elf_backend_finish_dynamic_symbol \
@@ -4152,7 +4170,7 @@ static const struct ecoff_debug_swap mip
 #define elf_backend_may_use_rela_p	1
 #define elf_backend_default_use_rela_p	1
 #define elf_backend_rela_plts_and_copies_p 0
-#define elf_backend_sign_extend_vma	TRUE
+#define elf_backend_sign_extend_vma	true
 #define elf_backend_plt_readonly	1
 #define elf_backend_plt_sym_val		_bfd_mips_elf_plt_sym_val
 
@@ -4160,11 +4178,15 @@ 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 \
 					_bfd_mips_elf_is_target_special_symbol
 #define bfd_elf32_find_nearest_line	_bfd_mips_elf_find_nearest_line
+#define bfd_elf32_find_nearest_line_with_alt \
+				_bfd_mips_elf_find_nearest_line_with_alt
 #define bfd_elf32_find_inliner_info	_bfd_mips_elf_find_inliner_info
 #define bfd_elf32_new_section_hook	_bfd_mips_elf_new_section_hook
 #define bfd_elf32_set_section_contents	_bfd_mips_elf_set_section_contents
@@ -4179,6 +4201,7 @@ static const struct ecoff_debug_swap mip
 #define bfd_elf32_bfd_print_private_bfd_data \
 					_bfd_mips_elf_print_private_bfd_data
 #define bfd_elf32_mkobject		mips_elf_n32_mkobject
+#define bfd_elf32_bfd_free_cached_info	_bfd_mips_elf_free_cached_info
 
 /* Support for SGI-ish mips targets using n32 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.20200303/bfd/elf-nacl.c ./bfd/elf-nacl.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-nacl.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-nacl.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,362 +0,0 @@
-/* Native Client support for ELF
-   Copyright (C) 2012-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, see <http://www.gnu.org/licenses/>.  */
-
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
-#include "elf-bfd.h"
-#include "elf-nacl.h"
-#include "elf/common.h"
-#include "elf/internal.h"
-
-static bfd_boolean
-segment_executable (struct elf_segment_map *seg)
-{
-  if (seg->p_flags_valid)
-    return (seg->p_flags & PF_X) != 0;
-  else
-    {
-      /* The p_flags value has not been computed yet,
-	 so we have to look through the sections.  */
-      unsigned int i;
-      for (i = 0; i < seg->count; ++i)
-	if (seg->sections[i]->flags & SEC_CODE)
-	  return TRUE;
-    }
-  return FALSE;
-}
-
-/* Determine if this segment is eligible to receive the file and program
-   headers.  It must be read-only and non-executable.
-   Its first section must start far enough past the page boundary to
-   allow space for the headers.  */
-static bfd_boolean
-segment_eligible_for_headers (struct elf_segment_map *seg,
-			      bfd_vma minpagesize, bfd_vma sizeof_headers)
-{
-  unsigned int i;
-  if (seg->count == 0 || seg->sections[0]->lma % minpagesize < sizeof_headers)
-    return FALSE;
-  for (i = 0; i < seg->count; ++i)
-    {
-      if ((seg->sections[i]->flags & (SEC_CODE|SEC_READONLY)) != SEC_READONLY)
-	return FALSE;
-    }
-  return TRUE;
-}
-
-
-/* We permute the segment_map to get BFD to do the file layout we want:
-   The first non-executable PT_LOAD segment appears first in the file
-   and contains the ELF file header and phdrs.  */
-bfd_boolean
-nacl_modify_segment_map (bfd *abfd, struct bfd_link_info *info)
-{
-  const struct elf_backend_data *const bed = get_elf_backend_data (abfd);
-  struct elf_segment_map **m = &elf_seg_map (abfd);
-  struct elf_segment_map **first_load = NULL;
-  struct elf_segment_map **headers = NULL;
-  int sizeof_headers;
-
-  if (info != NULL && info->user_phdrs)
-    /* The linker script used PHDRS explicitly, so don't change what the
-       user asked for.  */
-    return TRUE;
-
-  if (info != NULL)
-    /* We're doing linking, so evalute SIZEOF_HEADERS as in a linker script.  */
-    sizeof_headers = bfd_sizeof_headers (abfd, info);
-  else
-    {
-      /* We're not doing linking, so this is objcopy or suchlike.
-	 We just need to collect the size of the existing headers.  */
-      struct elf_segment_map *seg;
-      sizeof_headers = bed->s->sizeof_ehdr;
-      for (seg = *m; seg != NULL; seg = seg->next)
-	sizeof_headers += bed->s->sizeof_phdr;
-    }
-
-  while (*m != NULL)
-    {
-      struct elf_segment_map *seg = *m;
-
-      if (seg->p_type == PT_LOAD)
-	{
-	  bfd_boolean executable = segment_executable (seg);
-
-	  if (executable
-	      && seg->count > 0
-	      && seg->sections[0]->vma % bed->minpagesize == 0)
-	    {
-	      asection *lastsec = seg->sections[seg->count - 1];
-	      bfd_vma end = lastsec->vma + lastsec->size;
-	      if (end % bed->minpagesize != 0)
-		{
-		  /* This is an executable segment that starts on a page
-		     boundary but does not end on a page boundary.  Fill
-		     it out to a whole page with code fill (the tail of
-		     the segment will not be within any section).  Thus
-		     the entire code segment can be mapped from the file
-		     as whole pages and that mapping will contain only
-		     valid instructions.
-
-		     To accomplish this, we must fake out the code in
-		     assign_file_positions_for_load_sections (elf.c) so
-		     that it advances past the rest of the final page,
-		     rather than trying to put the next (unaligned, or
-		     unallocated) section.  We do this by appending a
-		     dummy section record to this element in the segment
-		     map.  No such output section ever actually exists,
-		     but this gets the layout logic to advance the file
-		     positions past this partial page.  Since we are
-		     lying to BFD like this, nothing will ever know to
-		     write the section contents.  So we do that by hand
-		     after the fact, in nacl_final_write_processing, below.  */
-
-		  struct elf_segment_map *newseg;
-		  asection *sec;
-		  struct bfd_elf_section_data *secdata;
-
-		  BFD_ASSERT (!seg->p_size_valid);
-
-		  secdata = bfd_zalloc (abfd, sizeof *secdata);
-		  if (secdata == NULL)
-		    return FALSE;
-
-		  sec = bfd_zalloc (abfd, sizeof *sec);
-		  if (sec == NULL)
-		    return FALSE;
-
-		  /* Fill in only the fields that actually affect the logic
-		     in assign_file_positions_for_load_sections.  */
-		  sec->vma = end;
-		  sec->lma = lastsec->lma + lastsec->size;
-		  sec->size = bed->minpagesize - (end % bed->minpagesize);
-		  sec->flags = (SEC_ALLOC | SEC_LOAD
-				| SEC_READONLY | SEC_CODE | SEC_LINKER_CREATED);
-		  sec->used_by_bfd = secdata;
-
-		  secdata->this_hdr.sh_type = SHT_PROGBITS;
-		  secdata->this_hdr.sh_flags = SHF_ALLOC | SHF_EXECINSTR;
-		  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 *)));
-		  if (newseg == NULL)
-		    return FALSE;
-		  memcpy (newseg, seg,
-			  sizeof *newseg + (seg->count * sizeof (asection *)));
-		  newseg->sections[newseg->count++] = sec;
-		  *m = seg = newseg;
-		}
-	    }
-
-	  /* First, we're just finding the earliest PT_LOAD.
-	     By the normal rules, this will be the lowest-addressed one.  */
-	  if (first_load == NULL)
-	    first_load = m;
-
-	  /* Now that we've noted the first PT_LOAD, we're looking for
-	     the first non-executable PT_LOAD with a nonempty p_filesz.  */
-	  else if (headers == NULL
-		   && segment_eligible_for_headers (seg, bed->minpagesize,
-						    sizeof_headers))
-	    headers = m;
-	}
-      m = &seg->next;
-    }
-
-  if (headers != NULL)
-    {
-      struct elf_segment_map **last_load = NULL;
-      struct elf_segment_map *seg;
-
-      m = first_load;
-      while ((seg = *m) != NULL)
-	{
-	  if (seg->p_type == PT_LOAD)
-	    {
-	      /* Clear the flags on any previous segment that
-		 included the file header and phdrs.  */
-	      seg->includes_filehdr = 0;
-	      seg->includes_phdrs = 0;
-	      seg->no_sort_lma = 1;
-	      /* Also strip out empty segments.  */
-	      if (seg->count == 0)
-		{
-		  if (headers == &seg->next)
-		    headers = m;
-		  *m = seg->next;
-		  continue;
-		}
-	      last_load = m;
-	    }
-	  m = &seg->next;
-	}
-
-      /* This segment will include those headers instead.  */
-      seg = *headers;
-      seg->includes_filehdr = 1;
-      seg->includes_phdrs = 1;
-
-      if (last_load != NULL && first_load != last_load && first_load != headers)
-	{
-	  /* Put the first PT_LOAD header last.  */
-	  struct elf_segment_map *first = *first_load;
-	  struct elf_segment_map *last = *last_load;
-	  *first_load = first->next;
-	  first->next = last->next;
-	  last->next = first;
-	}
-    }
-
-  return TRUE;
-}
-
-/* After nacl_modify_segment_map has done its work, the file layout has
-   been done as we wanted.  But the PT_LOAD phdrs are no longer in the
-   proper order for the ELF rule that they must appear in ascending address
-   order.  So find the two segments we swapped before, and swap them back.  */
-bfd_boolean
-nacl_modify_headers (bfd *abfd, struct bfd_link_info *info)
-{
-  if (info != NULL && info->user_phdrs)
-    /* The linker script used PHDRS explicitly, so don't change what the
-       user asked for.  */
-    ;
-  else
-    {
-      struct elf_segment_map **m = &elf_seg_map (abfd);
-      Elf_Internal_Phdr *phdr = elf_tdata (abfd)->phdr;
-      Elf_Internal_Phdr *p = phdr;
-
-      /* Find the PT_LOAD that contains the headers (should be the first).  */
-      while (*m != NULL)
-	{
-	  if ((*m)->p_type == PT_LOAD && (*m)->includes_filehdr)
-	    break;
-
-	  m = &(*m)->next;
-	  ++p;
-	}
-
-      if (*m != NULL)
-	{
-	  struct elf_segment_map **first_load_seg = m;
-	  Elf_Internal_Phdr *first_load_phdr = p;
-	  struct elf_segment_map **next_load_seg = NULL;
-	  Elf_Internal_Phdr *next_load_phdr = NULL;
-
-	  /* Now move past that first one and find the PT_LOAD that should be
-	     before it by address order.  */
-
-	  m = &(*m)->next;
-	  ++p;
-
-	  while (*m != NULL)
-	    {
-	      if (p->p_type == PT_LOAD && p->p_vaddr < first_load_phdr->p_vaddr)
-		{
-		  next_load_seg = m;
-		  next_load_phdr = p;
-		  break;
-		}
-
-	      m = &(*m)->next;
-	      ++p;
-	    }
-
-	  /* Swap their positions in the segment_map back to how they
-	     used to be.  The phdrs have already been set up by now,
-	     so we have to slide up the earlier ones to insert the one
-	     that should be first.  */
-	  if (next_load_seg != NULL)
-	    {
-	      Elf_Internal_Phdr move_phdr;
-	      struct elf_segment_map *first_seg = *first_load_seg;
-	      struct elf_segment_map *next_seg = *next_load_seg;
-	      struct elf_segment_map *first_next = first_seg->next;
-	      struct elf_segment_map *next_next = next_seg->next;
-
-	      if (next_load_seg == &first_seg->next)
-		{
-		  *first_load_seg = next_seg;
-		  next_seg->next = first_seg;
-		  first_seg->next = next_next;
-		}
-	      else
-		{
-		  *first_load_seg = first_next;
-		  *next_load_seg = next_next;
-
-		  first_seg->next = *next_load_seg;
-		  *next_load_seg = first_seg;
-
-		  next_seg->next = *first_load_seg;
-		  *first_load_seg = next_seg;
-		}
-
-	      move_phdr = *next_load_phdr;
-	      memmove (first_load_phdr + 1, first_load_phdr,
-		       (next_load_phdr - first_load_phdr) * sizeof move_phdr);
-	      *first_load_phdr = move_phdr;
-	    }
-	}
-    }
-
-  return _bfd_elf_modify_headers (abfd, info);
-}
-
-bfd_boolean
-nacl_final_write_processing (bfd *abfd)
-{
-  struct elf_segment_map *seg;
-  for (seg = elf_seg_map (abfd); seg != NULL; seg = seg->next)
-    if (seg->p_type == PT_LOAD
-	&& seg->count > 1
-	&& seg->sections[seg->count - 1]->owner == NULL)
-      {
-	/* This is a fake section added in nacl_modify_segment_map, above.
-	   It's not a real BFD section, so nothing wrote its contents.
-	   Now write out its contents.  */
-
-	asection *sec = seg->sections[seg->count - 1];
-	char *fill;
-
-	BFD_ASSERT (sec->flags & SEC_LINKER_CREATED);
-	BFD_ASSERT (sec->flags & SEC_CODE);
-	BFD_ASSERT (sec->size > 0);
-
-	fill = abfd->arch_info->fill (sec->size, bfd_big_endian (abfd), TRUE);
-
-	if (fill == NULL
-	    || bfd_seek (abfd, sec->filepos, SEEK_SET) != 0
-	    || bfd_bwrite (fill, sec->size, abfd) != sec->size)
-	  {
-	    /* We don't have a proper way to report an error here.  So
-	       instead fudge things so that elf_write_shdrs_and_ehdr will
-	       fail.  */
-	    elf_elfheader (abfd)->e_shoff = (file_ptr) -1;
-	  }
-
-	free (fill);
-      }
-  return _bfd_elf_final_write_processing (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.20200303/bfd/elf-nacl.h ./bfd/elf-nacl.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-nacl.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-nacl.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,21 +0,0 @@
-/* Native Client support for ELF
-   Copyright (C) 2012-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, see <http://www.gnu.org/licenses/>.  */
-
-bfd_boolean nacl_modify_segment_map (bfd *, struct bfd_link_info *);
-bfd_boolean nacl_modify_headers (bfd *, struct bfd_link_info *);
-bfd_boolean nacl_final_write_processing (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.20200303/bfd/elfnn-aarch64.c ./bfd/elfnn-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfnn-aarch64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfnn-aarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* AArch64-specific support for NN-bit ELF.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -112,7 +112,7 @@
   allocate space for one relocation on the slot. Record the GOT offset
   for this symbol.
 
-  elfNN_aarch64_size_dynamic_sections ()
+  elfNN_aarch64_late_size_sections ()
 
   Iterate all input BFDS, look for in the local symbol data structure
   constructed earlier for local TLS symbols and allocate them double
@@ -442,120 +442,120 @@ static reloc_howto_type elfNN_aarch64_ho
   /* Deprecated, but retained for backwards compatibility.  */
   HOWTO64 (R_AARCH64_NULL,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AARCH64_NULL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
   HOWTO (R_AARCH64_NONE,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AARCH64_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* .xword: (S+A) */
   HOWTO64 (AARCH64_R (ABS64),	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (4 = long long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (ABS64),	/* name */
-	 FALSE,			/* partial_inplace */
-	 ALL_ONES,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 ALL_ONES,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* .word: (S+A) */
   HOWTO (AARCH64_R (ABS32),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (ABS32),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* .half:  (S+A) */
   HOWTO (AARCH64_R (ABS16),	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (ABS16),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* .xword: (S+A-P) */
   HOWTO64 (AARCH64_R (PREL64),	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (4 = long long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (PREL64),	/* name */
-	 FALSE,			/* partial_inplace */
-	 ALL_ONES,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 ALL_ONES,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* .word: (S+A-P) */
   HOWTO (AARCH64_R (PREL32),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (PREL32),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* .half: (S+A-P) */
   HOWTO (AARCH64_R (PREL16),	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (PREL16),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Group relocations to create a 16, 32, 48 or 64 bit
      unsigned data or abs address inline.  */
@@ -563,107 +563,107 @@ static reloc_howto_type elfNN_aarch64_ho
   /* MOVZ:   ((S+A) >>  0) & 0xffff */
   HOWTO (AARCH64_R (MOVW_UABS_G0),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_UABS_G0),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVK:   ((S+A) >>  0) & 0xffff [no overflow check] */
   HOWTO (AARCH64_R (MOVW_UABS_G0_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_UABS_G0_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVZ:   ((S+A) >> 16) & 0xffff */
   HOWTO (AARCH64_R (MOVW_UABS_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_UABS_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVK:   ((S+A) >> 16) & 0xffff [no overflow check] */
   HOWTO64 (AARCH64_R (MOVW_UABS_G1_NC),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_UABS_G1_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVZ:   ((S+A) >> 32) & 0xffff */
   HOWTO64 (AARCH64_R (MOVW_UABS_G2),	/* type */
 	 32,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_UABS_G2),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVK:   ((S+A) >> 32) & 0xffff [no overflow check] */
   HOWTO64 (AARCH64_R (MOVW_UABS_G2_NC),	/* type */
 	 32,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_UABS_G2_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVZ:   ((S+A) >> 48) & 0xffff */
   HOWTO64 (AARCH64_R (MOVW_UABS_G3),	/* type */
 	 48,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_UABS_G3),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Group relocations to create high part of a 16, 32, 48 or 64 bit
      signed data or abs address inline. Will change instruction
@@ -672,47 +672,47 @@ static reloc_howto_type elfNN_aarch64_ho
   /* MOV[ZN]:   ((S+A) >>  0) & 0xffff */
   HOWTO (AARCH64_R (MOVW_SABS_G0),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_SABS_G0),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOV[ZN]:   ((S+A) >> 16) & 0xffff */
   HOWTO64 (AARCH64_R (MOVW_SABS_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_SABS_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOV[ZN]:   ((S+A) >> 32) & 0xffff */
   HOWTO64 (AARCH64_R (MOVW_SABS_G2),	/* type */
 	 32,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_SABS_G2),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Group relocations to create a 16, 32, 48 or 64 bit
      PC relative address inline.  */
@@ -720,107 +720,107 @@ static reloc_howto_type elfNN_aarch64_ho
   /* MOV[NZ]:   ((S+A-P) >>  0) & 0xffff */
   HOWTO (AARCH64_R (MOVW_PREL_G0),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_PREL_G0),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
+	 true),		/* pcrel_offset */
 
   /* MOVK:   ((S+A-P) >>  0) & 0xffff [no overflow check] */
   HOWTO (AARCH64_R (MOVW_PREL_G0_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_PREL_G0_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
+	 true),		/* pcrel_offset */
 
   /* MOV[NZ]:   ((S+A-P) >> 16) & 0xffff */
   HOWTO (AARCH64_R (MOVW_PREL_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_PREL_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
+	 true),		/* pcrel_offset */
 
   /* MOVK:   ((S+A-P) >> 16) & 0xffff [no overflow check] */
   HOWTO64 (AARCH64_R (MOVW_PREL_G1_NC),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_PREL_G1_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
+	 true),		/* pcrel_offset */
 
   /* MOV[NZ]:   ((S+A-P) >> 32) & 0xffff */
   HOWTO64 (AARCH64_R (MOVW_PREL_G2),	/* type */
 	 32,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_PREL_G2),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
+	 true),		/* pcrel_offset */
 
   /* MOVK:   ((S+A-P) >> 32) & 0xffff [no overflow check] */
   HOWTO64 (AARCH64_R (MOVW_PREL_G2_NC),	/* type */
 	 32,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_PREL_G2_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
+	 true),		/* pcrel_offset */
 
   /* MOV[NZ]:   ((S+A-P) >> 48) & 0xffff */
   HOWTO64 (AARCH64_R (MOVW_PREL_G3),	/* type */
 	 48,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_PREL_G3),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),		/* pcrel_offset */
+	 true),		/* pcrel_offset */
 
 /* Relocations to generate 19, 21 and 33 bit PC-relative load/store
    addresses: PG(x) is (x & ~0xfff).  */
@@ -828,1250 +828,1250 @@ static reloc_howto_type elfNN_aarch64_ho
   /* LD-lit: ((S+A-P) >> 2) & 0x7ffff */
   HOWTO (AARCH64_R (LD_PREL_LO19),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LD_PREL_LO19),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x7ffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x7ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* ADR:    (S+A-P) & 0x1fffff */
   HOWTO (AARCH64_R (ADR_PREL_LO21),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (ADR_PREL_LO21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* ADRP:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff */
   HOWTO (AARCH64_R (ADR_PREL_PG_HI21),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (ADR_PREL_PG_HI21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* ADRP:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff [no overflow check] */
   HOWTO64 (AARCH64_R (ADR_PREL_PG_HI21_NC),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (ADR_PREL_PG_HI21_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* ADD:    (S+A) & 0xfff [no overflow check] */
   HOWTO (AARCH64_R (ADD_ABS_LO12_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (ADD_ABS_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST8:  (S+A) & 0xfff */
   HOWTO (AARCH64_R (LDST8_ABS_LO12_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LDST8_ABS_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,				/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Relocations for control-flow instructions.  */
 
   /* TBZ/NZ: ((S+A-P) >> 2) & 0x3fff */
   HOWTO (AARCH64_R (TSTBR14),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 14,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TSTBR14),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3fff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3fff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* B.cond: ((S+A-P) >> 2) & 0x7ffff */
   HOWTO (AARCH64_R (CONDBR19),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (CONDBR19),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x7ffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x7ffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* B:      ((S+A-P) >> 2) & 0x3ffffff */
   HOWTO (AARCH64_R (JUMP26),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (JUMP26),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* BL:     ((S+A-P) >> 2) & 0x3ffffff */
   HOWTO (AARCH64_R (CALL26),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 26,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (CALL26),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* LD/ST16:  (S+A) & 0xffe */
   HOWTO (AARCH64_R (LDST16_ABS_LO12_NC),	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LDST16_ABS_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffe,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffe,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST32:  (S+A) & 0xffc */
   HOWTO (AARCH64_R (LDST32_ABS_LO12_NC),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LDST32_ABS_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffc,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffc,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST64:  (S+A) & 0xff8 */
   HOWTO (AARCH64_R (LDST64_ABS_LO12_NC),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LDST64_ABS_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xff8,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xff8,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST128:  (S+A) & 0xff0 */
   HOWTO (AARCH64_R (LDST128_ABS_LO12_NC),	/* type */
 	 4,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LDST128_ABS_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xff0,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xff0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Set a load-literal immediate field to bits
      0x1FFFFC of G(S)-P */
   HOWTO (AARCH64_R (GOT_LD_PREL19),	/* type */
 	 2,				/* rightshift */
-	 2,				/* size (0 = byte,1 = short,2 = long) */
+	 4,				/* size */
 	 19,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 AARCH64_R_STR (GOT_LD_PREL19),	/* name */
-	 FALSE,				/* partial_inplace */
-	 0xffffe0,			/* src_mask */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
 	 0xffffe0,			/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 true),				/* pcrel_offset */
 
   /* Get to the page for the GOT entry for the symbol
      (G(S) - P) using an ADRP instruction.  */
   HOWTO (AARCH64_R (ADR_GOT_PAGE),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (ADR_GOT_PAGE),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* LD64: GOT offset G(S) & 0xff8  */
   HOWTO64 (AARCH64_R (LD64_GOT_LO12_NC),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LD64_GOT_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xff8,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xff8,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD32: GOT offset G(S) & 0xffc  */
   HOWTO32 (AARCH64_R (LD32_GOT_LO12_NC),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LD32_GOT_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffc,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffc,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Lower 16 bits of GOT offset for the symbol.  */
   HOWTO64 (AARCH64_R (MOVW_GOTOFF_G0_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_GOTOFF_G0_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Higher 16 bits of GOT offset for the symbol.  */
   HOWTO64 (AARCH64_R (MOVW_GOTOFF_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (MOVW_GOTOFF_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD64: GOT offset for the symbol.  */
   HOWTO64 (AARCH64_R (LD64_GOTOFF_LO15),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LD64_GOTOFF_LO15),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x7ff8,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,				/* src_mask */
 	 0x7ff8,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD32: GOT offset to the page address of GOT table.
      (G(S) - PAGE (_GLOBAL_OFFSET_TABLE_)) & 0x5ffc.  */
   HOWTO32 (AARCH64_R (LD32_GOTPAGE_LO14),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LD32_GOTPAGE_LO14),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x5ffc,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x5ffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD64: GOT offset to the page address of GOT table.
      (G(S) - PAGE (_GLOBAL_OFFSET_TABLE_)) & 0x7ff8.  */
   HOWTO64 (AARCH64_R (LD64_GOTPAGE_LO15),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (LD64_GOTPAGE_LO15),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x7ff8,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x7ff8,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get to the page for the GOT entry for the symbol
      (G(S) - P) using an ADRP instruction.  */
   HOWTO (AARCH64_R (TLSGD_ADR_PAGE21),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSGD_ADR_PAGE21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSGD_ADR_PREL21),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSGD_ADR_PREL21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* ADD: GOT offset G(S) & 0xff8 [no overflow check] */
   HOWTO (AARCH64_R (TLSGD_ADD_LO12_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSGD_ADD_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Lower 16 bits of GOT offset to tls_index.  */
   HOWTO64 (AARCH64_R (TLSGD_MOVW_G0_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSGD_MOVW_G0_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Higher 16 bits of GOT offset to tls_index.  */
   HOWTO64 (AARCH64_R (TLSGD_MOVW_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSGD_MOVW_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSIE_ADR_GOTTPREL_PAGE21),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSIE_ADR_GOTTPREL_PAGE21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSIE_LD64_GOTTPREL_LO12_NC),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSIE_LD64_GOTTPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xff8,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xff8,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO32 (AARCH64_R (TLSIE_LD32_GOTTPREL_LO12_NC),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSIE_LD32_GOTTPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffc,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffc,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSIE_LD_GOTTPREL_PREL19),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSIE_LD_GOTTPREL_PREL19),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1ffffc,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1ffffc,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSIE_MOVW_GOTTPREL_G0_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSIE_MOVW_GOTTPREL_G0_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSIE_MOVW_GOTTPREL_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSIE_MOVW_GOTTPREL_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* ADD: bit[23:12] of byte offset to module TLS base address.  */
   HOWTO (AARCH64_R (TLSLD_ADD_DTPREL_HI12),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_ADD_DTPREL_HI12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Unsigned 12 bit byte offset to module TLS base address.  */
   HOWTO (AARCH64_R (TLSLD_ADD_DTPREL_LO12),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_ADD_DTPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.  */
   HOWTO (AARCH64_R (TLSLD_ADD_DTPREL_LO12_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_ADD_DTPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* ADD: GOT offset G(S) & 0xff8 [no overflow check] */
   HOWTO (AARCH64_R (TLSLD_ADD_LO12_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_ADD_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Get to the page for the GOT entry for the symbol
      (G(S) - P) using an ADRP instruction.  */
   HOWTO (AARCH64_R (TLSLD_ADR_PAGE21),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_ADR_PAGE21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSLD_ADR_PREL21),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_ADR_PREL21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* LD/ST16: bit[11:1] of byte offset to module TLS base address.  */
   HOWTO64 (AARCH64_R (TLSLD_LDST16_DTPREL_LO12),	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 11,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_LDST16_DTPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Same as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.  */
   HOWTO64 (AARCH64_R (TLSLD_LDST16_DTPREL_LO12_NC),	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 11,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_LDST16_DTPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST32: bit[11:2] of byte offset to module TLS base address.  */
   HOWTO64 (AARCH64_R (TLSLD_LDST32_DTPREL_LO12),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 10,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_LDST32_DTPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Same as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.  */
   HOWTO64 (AARCH64_R (TLSLD_LDST32_DTPREL_LO12_NC),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 10,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_LDST32_DTPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST64: bit[11:3] of byte offset to module TLS base address.  */
   HOWTO64 (AARCH64_R (TLSLD_LDST64_DTPREL_LO12),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 9,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_LDST64_DTPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Same as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.  */
   HOWTO64 (AARCH64_R (TLSLD_LDST64_DTPREL_LO12_NC),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 9,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_LDST64_DTPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x7fc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x7fc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST8: bit[11:0] of byte offset to module TLS base address.  */
   HOWTO64 (AARCH64_R (TLSLD_LDST8_DTPREL_LO12),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_LDST8_DTPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Same as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.  */
   HOWTO64 (AARCH64_R (TLSLD_LDST8_DTPREL_LO12_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_LDST8_DTPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVZ: bit[15:0] of byte offset to module TLS base address.  */
   HOWTO (AARCH64_R (TLSLD_MOVW_DTPREL_G0),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G0),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0.  */
   HOWTO (AARCH64_R (TLSLD_MOVW_DTPREL_G0_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G0_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVZ: bit[31:16] of byte offset to module TLS base address.  */
   HOWTO (AARCH64_R (TLSLD_MOVW_DTPREL_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1.  */
   HOWTO64 (AARCH64_R (TLSLD_MOVW_DTPREL_G1_NC),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G1_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* MOVZ: bit[47:32] of byte offset to module TLS base address.  */
   HOWTO64 (AARCH64_R (TLSLD_MOVW_DTPREL_G2),	/* type */
 	 32,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G2),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSLE_MOVW_TPREL_G2),	/* type */
 	 32,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G2),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSLE_MOVW_TPREL_G1_NC),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G1_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G0),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G0),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSLE_MOVW_TPREL_G0_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G0_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSLE_ADD_TPREL_HI12),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_ADD_TPREL_HI12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSLE_ADD_TPREL_LO12),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_ADD_TPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSLE_ADD_TPREL_LO12_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_ADD_TPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST16: bit[11:1] of byte offset to module TLS base address.  */
   HOWTO (AARCH64_R (TLSLE_LDST16_TPREL_LO12),	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 11,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_LDST16_TPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Same as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.  */
   HOWTO (AARCH64_R (TLSLE_LDST16_TPREL_LO12_NC),	/* type */
 	 1,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 11,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_LDST16_TPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST32: bit[11:2] of byte offset to module TLS base address.  */
   HOWTO (AARCH64_R (TLSLE_LDST32_TPREL_LO12),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 10,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_LDST32_TPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Same as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.  */
   HOWTO (AARCH64_R (TLSLE_LDST32_TPREL_LO12_NC),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 10,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_LDST32_TPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST64: bit[11:3] of byte offset to module TLS base address.  */
   HOWTO (AARCH64_R (TLSLE_LDST64_TPREL_LO12),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 9,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_LDST64_TPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x7fc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x7fc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Same as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.  */
   HOWTO (AARCH64_R (TLSLE_LDST64_TPREL_LO12_NC),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 9,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_LDST64_TPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x7fc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x7fc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD/ST8: bit[11:0] of byte offset to module TLS base address.  */
   HOWTO (AARCH64_R (TLSLE_LDST8_TPREL_LO12),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_LDST8_TPREL_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* Same as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.  */
   HOWTO (AARCH64_R (TLSLE_LDST8_TPREL_LO12_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 10,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSLE_LDST8_TPREL_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x3ffc00,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x3ffc00,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSDESC_LD_PREL19),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 19,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_LD_PREL19),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x0ffffe0,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x0ffffe0,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSDESC_ADR_PREL21),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_ADR_PREL21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* Get to the page for the GOT entry for the symbol
      (G(S) - P) using an ADRP instruction.  */
   HOWTO (AARCH64_R (TLSDESC_ADR_PAGE21),	/* type */
 	 12,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 21,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_ADR_PAGE21),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0x1fffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0x1fffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* LD64: GOT offset G(S) & 0xff8.  */
   HOWTO64 (AARCH64_R (TLSDESC_LD64_LO12),	/* type */
 	 3,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_LD64_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xff8,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xff8,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* LD32: GOT offset G(S) & 0xffc.  */
   HOWTO32 (AARCH64_R (TLSDESC_LD32_LO12_NC),	/* type */
 	 2,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_LD32_LO12_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffc,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffc,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* ADD: GOT offset G(S) & 0xfff.  */
   HOWTO (AARCH64_R (TLSDESC_ADD_LO12),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_ADD_LO12),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xfff,			/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xfff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSDESC_OFF_G1),	/* type */
 	 16,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_OFF_G1),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSDESC_OFF_G0_NC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_OFF_G0_NC),	/* name */
-	 FALSE,			/* partial_inplace */
-	 0xffff,		/* src_mask */
+	 false,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSDESC_LDR),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_LDR),	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO64 (AARCH64_R (TLSDESC_ADD),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 12,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_ADD),	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSDESC_CALL),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC_CALL),	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0x0,			/* src_mask */
 	 0x0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (COPY),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (COPY),	/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (GLOB_DAT),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (GLOB_DAT),	/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (JUMP_SLOT),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (JUMP_SLOT),	/* name */
-	 TRUE,			/* partial_inplace */
-	 0xffffffff,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (RELATIVE),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (RELATIVE),	/* name */
-	 TRUE,			/* partial_inplace */
-	 ALL_ONES,		/* src_mask */
+	 true,			/* partial_inplace */
+	 0,			/* src_mask */
 	 ALL_ONES,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLS_DTPMOD),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
@@ -2080,16 +2080,16 @@ static reloc_howto_type elfNN_aarch64_ho
 #else
 	 AARCH64_R_STR (TLS_DTPMOD),	/* name */
 #endif
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 ALL_ONES,		/* dst_mask */
-	 FALSE),		/* pc_reloffset */
+	 false),		/* pc_reloffset */
 
   HOWTO (AARCH64_R (TLS_DTPREL),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
@@ -2098,16 +2098,16 @@ static reloc_howto_type elfNN_aarch64_ho
 #else
 	 AARCH64_R_STR (TLS_DTPREL),	/* name */
 #endif
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 ALL_ONES,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLS_TPREL),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
@@ -2116,38 +2116,38 @@ static reloc_howto_type elfNN_aarch64_ho
 #else
 	 AARCH64_R_STR (TLS_TPREL),	/* name */
 #endif
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 ALL_ONES,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (TLSDESC),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (TLSDESC),	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 ALL_ONES,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (AARCH64_R (IRELATIVE),	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 AARCH64_R_STR (IRELATIVE),	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 ALL_ONES,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   EMPTY_HOWTO (0),
 };
@@ -2155,17 +2155,17 @@ static reloc_howto_type elfNN_aarch64_ho
 static reloc_howto_type elfNN_aarch64_howto_none =
   HOWTO (R_AARCH64_NONE,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_AARCH64_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE);		/* pcrel_offset */
+	 false);		/* pcrel_offset */
 
 /* Given HOWTO, return the bfd internal relocation enumerator.  */
 
@@ -2191,7 +2191,7 @@ elfNN_aarch64_bfd_reloc_from_howto (relo
 static bfd_reloc_code_real_type
 elfNN_aarch64_bfd_reloc_from_type (bfd *abfd, unsigned int r_type)
 {
-  static bfd_boolean initialized_p = FALSE;
+  static bool initialized_p = false;
   /* Indexed by R_TYPE, values are offsets in the howto_table.  */
   static unsigned int offsets[R_AARCH64_end];
 
@@ -2203,7 +2203,7 @@ elfNN_aarch64_bfd_reloc_from_type (bfd *
 	if (elfNN_aarch64_howto_table[i].type != 0)
 	  offsets[elfNN_aarch64_howto_table[i].type] = i;
 
-      initialized_p = TRUE;
+      initialized_p = true;
     }
 
   if (r_type == R_AARCH64_NONE || r_type == R_AARCH64_NULL)
@@ -2268,6 +2268,9 @@ elfNN_aarch64_howto_from_bfd_reloc (bfd_
   if (code == BFD_RELOC_AARCH64_NONE)
     return &elfNN_aarch64_howto_none;
 
+  if (code == BFD_RELOC_AARCH64_BRANCH9)
+    return &elfNN_aarch64_howto_none;
+
   return NULL;
 }
 
@@ -2298,7 +2301,7 @@ elfNN_aarch64_howto_from_type (bfd *abfd
   return NULL;
 }
 
-static bfd_boolean
+static bool
 elfNN_aarch64_info_to_howto (bfd *abfd, arelent *bfd_reloc,
 			     Elf_Internal_Rela *elf_reloc)
 {
@@ -2311,9 +2314,9 @@ elfNN_aarch64_info_to_howto (bfd *abfd,
     {
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"), abfd, r_type);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type *
@@ -2354,6 +2357,9 @@ elfNN_aarch64_reloc_name_lookup (bfd *ab
    name can be changed. The only requirement is the %s be present.  */
 #define STUB_ENTRY_NAME   "__%s_veneer"
 
+/* Stub name for a BTI landing stub.  */
+#define BTI_STUB_ENTRY_NAME   "__%s_bti_veneer"
+
 /* The name of the dynamic interpreter.  This is put in the .interp
    section.  */
 #define ELF_DYNAMIC_INTERPRETER     "/lib/ld.so.1"
@@ -2406,6 +2412,12 @@ static const uint32_t aarch64_long_branc
   0x00000000,
 };
 
+static const uint32_t aarch64_bti_direct_branch_stub[] =
+{
+  0xd503245f,			/*	bti	c */
+  0x14000000,			/*	b	<label> */
+};
+
 static const uint32_t aarch64_erratum_835769_stub[] =
 {
   0x00000000,    /* Placeholder for multiply accumulate.  */
@@ -2427,6 +2439,7 @@ enum elf_aarch64_stub_type
   aarch64_stub_none,
   aarch64_stub_adrp_branch,
   aarch64_stub_long_branch,
+  aarch64_stub_bti_direct_branch,
   aarch64_stub_erratum_835769_veneer,
   aarch64_stub_erratum_843419_veneer,
 };
@@ -2455,6 +2468,9 @@ struct elf_aarch64_stub_hash_entry
   /* Destination symbol type */
   unsigned char st_type;
 
+  /* The target is also a stub.  */
+  bool double_stub;
+
   /* Where this stub is being called from, or, in the case of combined
      stub sections, the first input section in the group.  */
   asection *id_sec;
@@ -2513,33 +2529,6 @@ struct elf_aarch64_local_symbol
   bfd_vma tlsdesc_got_jump_table_offset;
 };
 
-struct elf_aarch64_obj_tdata
-{
-  struct elf_obj_tdata root;
-
-  /* local symbol descriptors */
-  struct elf_aarch64_local_symbol *locals;
-
-  /* Zero to warn when linking objects with incompatible enum sizes.  */
-  int no_enum_size_warning;
-
-  /* Zero to warn when linking objects with incompatible wchar_t sizes.  */
-  int no_wchar_size_warning;
-
-  /* All GNU_PROPERTY_AARCH64_FEATURE_1_AND properties.  */
-  uint32_t gnu_and_prop;
-
-  /* Zero to warn when linking objects with incompatible
-     GNU_PROPERTY_AARCH64_FEATURE_1_BTI.  */
-  int no_bti_warn;
-
-  /* PLT type based on security.  */
-  aarch64_plt_type plt_type;
-};
-
-#define elf_aarch64_tdata(bfd)				\
-  ((struct elf_aarch64_obj_tdata *) (bfd)->tdata.any)
-
 #define elf_aarch64_locals(bfd) (elf_aarch64_tdata (bfd)->locals)
 
 #define is_aarch64_elf(bfd)				\
@@ -2547,11 +2536,10 @@ struct elf_aarch64_obj_tdata
    && elf_tdata (bfd) != NULL				\
    && elf_object_id (bfd) == AARCH64_ELF_DATA)
 
-static bfd_boolean
+static bool
 elfNN_aarch64_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct elf_aarch64_obj_tdata),
-				  AARCH64_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_aarch64_obj_tdata));
 }
 
 #define elf_aarch64_hash_entry(ent) \
@@ -2570,9 +2558,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.  */
@@ -2582,6 +2567,9 @@ struct elf_aarch64_link_hash_entry
      this symbol.  */
   unsigned int got_type;
 
+  /* TRUE if symbol is defined as a protected symbol.  */
+  unsigned int def_protected : 1;
+
   /* A pointer to the most recently used stub hash entry against this
      symbol.  */
   struct elf_aarch64_stub_hash_entry *stub_cache;
@@ -2634,6 +2622,9 @@ struct elf_aarch64_link_hash_table
   /* Don't apply link-time values for dynamic relocations.  */
   int no_apply_dynamic_relocs;
 
+  /* Memtag Extension mode of operation.  */
+  aarch64_memtag_opts memtag_opts;
+
   /* The number of bytes in the initial entry in the PLT.  */
   bfd_size_type plt_header_size;
 
@@ -2646,8 +2637,10 @@ 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;
+  /* PLT entries have a common shape, but may have some pre-amble
+     instructions (such as BTI).  This delta is used to factor this
+     out of the common code.  */
+  int plt_entry_delta;
 
   /* For convenience in allocate_dynrelocs.  */
   bfd *obfd;
@@ -2682,26 +2675,33 @@ struct elf_aarch64_link_hash_table
   unsigned int top_index;
   asection **input_list;
 
+  /* True when two stubs are added where one targets the other, happens
+     when BTI stubs are inserted and then the stub layout must not change
+     during elfNN_aarch64_build_stubs.  */
+  bool has_double_stub;
+
   /* 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;
+
+  /* Array of relative relocs to be emitted in DT_RELR format.  */
+  bfd_size_type relr_alloc;
+  bfd_size_type relr_count;
+  struct relr_entry
+  {
+    asection *sec;
+    bfd_vma off;
+  } *relr;
+  /* Sorted output addresses of above relative relocs.  */
+  bfd_vma *relr_sorted;
+  /* Layout recomputation count.  */
+  bfd_size_type relr_layout_iter;
 };
 
 /* Create an entry in an AArch64 ELF linker hash table.  */
@@ -2728,8 +2728,8 @@ elfNN_aarch64_link_hash_newfunc (struct
 				     table, string));
   if (ret != NULL)
     {
-      ret->dyn_relocs = NULL;
       ret->got_type = GOT_UNKNOWN;
+      ret->def_protected = 0;
       ret->plt_got_offset = (bfd_vma) - 1;
       ret->stub_cache = NULL;
       ret->tlsdesc_got_jump_table_offset = (bfd_vma) - 1;
@@ -2763,14 +2763,9 @@ stub_hash_newfunc (struct bfd_hash_entry
 
       /* Initialize the local fields.  */
       eh = (struct elf_aarch64_stub_hash_entry *) entry;
-      eh->adrp_offset = 0;
-      eh->stub_sec = NULL;
-      eh->stub_offset = 0;
-      eh->target_value = 0;
-      eh->target_section = NULL;
-      eh->stub_type = aarch64_stub_none;
-      eh->h = NULL;
-      eh->id_sec = NULL;
+      memset (&eh->stub_sec, 0,
+	      (sizeof (struct elf_aarch64_stub_hash_entry)
+	       - offsetof (struct elf_aarch64_stub_hash_entry, stub_sec)));
     }
 
   return entry;
@@ -2807,7 +2802,7 @@ elfNN_aarch64_local_htab_eq (const void
 static struct elf_link_hash_entry *
 elfNN_aarch64_get_local_sym_hash (struct elf_aarch64_link_hash_table *htab,
 				  bfd *abfd, const Elf_Internal_Rela *rel,
-				  bfd_boolean create)
+				  bool create)
 {
   struct elf_aarch64_link_hash_entry e, *ret;
   asection *sec = abfd->sections;
@@ -2855,37 +2850,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.  */
@@ -2903,11 +2867,18 @@ elfNN_aarch64_copy_indirect_symbol (stru
 
 static void
 elfNN_aarch64_merge_symbol_attribute (struct elf_link_hash_entry *h,
-				      const Elf_Internal_Sym *isym,
-				      bfd_boolean definition ATTRIBUTE_UNUSED,
-				      bfd_boolean dynamic ATTRIBUTE_UNUSED)
+				      unsigned int st_other,
+				      bool definition,
+				      bool dynamic ATTRIBUTE_UNUSED)
 {
-  unsigned int isym_sto = isym->st_other & ~ELF_ST_VISIBILITY (-1);
+  if (definition)
+    {
+      struct elf_aarch64_link_hash_entry *eh
+	  = (struct elf_aarch64_link_hash_entry *)h;
+      eh->def_protected = ELF_ST_VISIBILITY (st_other) == STV_PROTECTED;
+    }
+
+  unsigned int isym_sto = st_other & ~ELF_ST_VISIBILITY (-1);
   unsigned int h_sto = h->other & ~ELF_ST_VISIBILITY (-1);
 
   if (isym_sto == h_sto)
@@ -2947,7 +2918,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)
@@ -2955,7 +2926,7 @@ elfNN_aarch64_link_hash_table_create (bf
 
   if (!_bfd_elf_link_hash_table_init
       (&ret->root, abfd, elfNN_aarch64_link_hash_newfunc,
-       sizeof (struct elf_aarch64_link_hash_entry), AARCH64_ELF_DATA))
+       sizeof (struct elf_aarch64_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -2964,10 +2935,11 @@ elfNN_aarch64_link_hash_table_create (bf
   ret->plt_header_size = PLT_ENTRY_SIZE;
   ret->plt0_entry = elfNN_aarch64_small_plt0_entry;
   ret->plt_entry_size = PLT_SMALL_ENTRY_SIZE;
+  ret->plt_entry_delta = 0;
   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)))
@@ -2993,7 +2965,7 @@ elfNN_aarch64_link_hash_table_create (bf
 
 /* Perform relocation R_TYPE.  Returns TRUE upon success, FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 aarch64_relocate (unsigned int r_type, bfd *input_bfd, asection *input_section,
 		  bfd_vma offset, bfd_vma value)
 {
@@ -3006,20 +2978,12 @@ aarch64_relocate (unsigned int r_type, b
 
   r_type = elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type);
   value = _bfd_aarch64_elf_resolve_relocation (input_bfd, r_type, place,
-					       value, 0, FALSE);
+					       value, 0, false);
   return _bfd_aarch64_elf_put_addend (input_bfd,
 				      input_section->contents + offset, r_type,
 				      howto, value) == bfd_reloc_ok;
 }
 
-static enum elf_aarch64_stub_type
-aarch64_select_branch_stub (bfd_vma value, bfd_vma place)
-{
-  if (aarch64_valid_for_adrp_p (value, place))
-    return aarch64_stub_adrp_branch;
-  return aarch64_stub_long_branch;
-}
-
 /* Determine the type of stub needed, if any, for a call.  */
 
 static enum elf_aarch64_stub_type
@@ -3075,21 +3039,21 @@ elfNN_aarch64_stub_name (const asection
       len = 8 + 1 + strlen (hash->root.root.root.string) + 1 + 16 + 1;
       stub_name = bfd_malloc (len);
       if (stub_name != NULL)
-	snprintf (stub_name, len, "%08x_%s+%" BFD_VMA_FMT "x",
+	snprintf (stub_name, len, "%08x_%s+%" PRIx64,
 		  (unsigned int) input_section->id,
 		  hash->root.root.root.string,
-		  rel->r_addend);
+		  (uint64_t) rel->r_addend);
     }
   else
     {
       len = 8 + 1 + 8 + 1 + 8 + 1 + 16 + 1;
       stub_name = bfd_malloc (len);
       if (stub_name != NULL)
-	snprintf (stub_name, len, "%08x_%x:%x+%" BFD_VMA_FMT "x",
+	snprintf (stub_name, len, "%08x_%x:%x+%" PRIx64,
 		  (unsigned int) input_section->id,
 		  (unsigned int) sym_sec->id,
 		  (unsigned int) ELFNN_R_SYM (rel->r_info),
-		  rel->r_addend);
+		  (uint64_t) rel->r_addend);
     }
 
   return stub_name;
@@ -3099,13 +3063,13 @@ elfNN_aarch64_stub_name (const asection
    executable PLT slots where the executable never takes the address of those
    functions, the function symbols are not added to the hash table.  */
 
-static bfd_boolean
+static bool
 elf_aarch64_hash_symbol (struct elf_link_hash_entry *h)
 {
   if (h->plt.offset != (bfd_vma) -1
       && !h->def_regular
       && !h->pointer_equality_needed)
-    return FALSE;
+    return false;
 
   return _bfd_elf_hash_symbol (h);
 }
@@ -3150,7 +3114,7 @@ elfNN_aarch64_get_stub_entry (const asec
 	return NULL;
 
       stub_entry = aarch64_stub_hash_lookup (&htab->stub_hash_table,
-					     stub_name, FALSE, FALSE);
+					     stub_name, false, false);
       if (h != NULL)
 	h->stub_cache = stub_entry;
 
@@ -3229,7 +3193,7 @@ _bfd_aarch64_add_stub_entry_in_group (co
 
   /* Enter this entry into the linker stub hash table.  */
   stub_entry = aarch64_stub_hash_lookup (&htab->stub_hash_table, stub_name,
-					 TRUE, FALSE);
+					 true, false);
   if (stub_entry == NULL)
     {
       /* xgettext:c-format */
@@ -3261,7 +3225,7 @@ _bfd_aarch64_add_stub_entry_after (const
   if (htab->fix_erratum_843419 & ERRAT_ADRP)
     stub_sec = _bfd_aarch64_get_stub_for_link_section (link_section, htab);
   stub_entry = aarch64_stub_hash_lookup (&htab->stub_hash_table, stub_name,
-					 TRUE, FALSE);
+					 true, false);
   if (stub_entry == NULL)
     {
       _bfd_error_handler (_("cannot create stub entry %s"), stub_name);
@@ -3276,9 +3240,9 @@ _bfd_aarch64_add_stub_entry_after (const
 }
 
 
-static bfd_boolean
+static bool
 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;
@@ -3289,14 +3253,33 @@ aarch64_build_one_stub (struct bfd_hash_
   bfd_vma veneer_entry_loc;
   bfd_signed_vma branch_offset = 0;
   unsigned int template_size;
+  unsigned int pad_size = 0;
   const uint32_t *template;
   unsigned int i;
+  struct bfd_link_info *info;
+  struct elf_aarch64_link_hash_table *htab;
 
   /* 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;
+  htab = elf_aarch64_hash_table (info);
+
+  /* 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->fatal (_("%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;
 
+  /* The layout must not change when a stub may be the target of another.  */
+  if (htab->has_double_stub)
+    BFD_ASSERT (stub_entry->stub_offset == stub_sec->size);
+
   /* Make a note of the offset within the stubs for this entry.  */
   stub_entry->stub_offset = stub_sec->size;
   loc = stub_sec->contents + stub_entry->stub_offset;
@@ -3315,7 +3298,14 @@ aarch64_build_one_stub (struct bfd_hash_
 
       /* See if we can relax the stub.  */
       if (aarch64_valid_for_adrp_p (sym_value, place))
-	stub_entry->stub_type = aarch64_select_branch_stub (sym_value, place);
+	{
+	  stub_entry->stub_type = aarch64_stub_adrp_branch;
+
+	  /* Avoid the relaxation changing the layout.  */
+	  if (htab->has_double_stub)
+	    pad_size = sizeof (aarch64_long_branch_stub)
+		       - sizeof (aarch64_adrp_branch_stub);
+	}
     }
 
   switch (stub_entry->stub_type)
@@ -3328,6 +3318,10 @@ aarch64_build_one_stub (struct bfd_hash_
       template = aarch64_long_branch_stub;
       template_size = sizeof (aarch64_long_branch_stub);
       break;
+    case aarch64_stub_bti_direct_branch:
+      template = aarch64_bti_direct_branch_stub;
+      template_size = sizeof (aarch64_bti_direct_branch_stub);
+      break;
     case aarch64_stub_erratum_835769_veneer:
       template = aarch64_erratum_835769_stub;
       template_size = sizeof (aarch64_erratum_835769_stub);
@@ -3346,6 +3340,7 @@ aarch64_build_one_stub (struct bfd_hash_
       loc += 4;
     }
 
+  template_size += pad_size;
   template_size = (template_size + 7) & ~7;
   stub_sec->size += template_size;
 
@@ -3371,6 +3366,12 @@ aarch64_build_one_stub (struct bfd_hash_
 	BFD_FAIL ();
       break;
 
+    case aarch64_stub_bti_direct_branch:
+      if (!aarch64_relocate (AARCH64_R (JUMP26), stub_bfd, stub_sec,
+			     stub_entry->stub_offset + 4, sym_value))
+	BFD_FAIL ();
+      break;
+
     case aarch64_stub_erratum_835769_veneer:
       veneered_insn_loc = stub_entry->target_section->output_section->vma
 			  + stub_entry->target_section->output_offset
@@ -3397,13 +3398,14 @@ aarch64_build_one_stub (struct bfd_hash_
       abort ();
     }
 
-  return TRUE;
+  return true;
 }
 
 /* As above, but don't actually build the stub.  Just bump offset so
-   we know stub section sizes.  */
+   we know stub section sizes and record the offset for each stub so
+   a stub can target another stub (needed for BTI direct branch stub).  */
 
-static bfd_boolean
+static bool
 aarch64_size_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 {
   struct elf_aarch64_stub_hash_entry *stub_entry;
@@ -3422,13 +3424,16 @@ aarch64_size_one_stub (struct bfd_hash_e
     case aarch64_stub_long_branch:
       size = sizeof (aarch64_long_branch_stub);
       break;
+    case aarch64_stub_bti_direct_branch:
+      size = sizeof (aarch64_bti_direct_branch_stub);
+      break;
     case aarch64_stub_erratum_835769_veneer:
       size = sizeof (aarch64_erratum_835769_stub);
       break;
     case aarch64_stub_erratum_843419_veneer:
       {
 	if (htab->fix_erratum_843419 == ERRAT_ADR)
-	  return TRUE;
+	  return true;
 	size = sizeof (aarch64_erratum_843419_stub);
       }
       break;
@@ -3437,8 +3442,18 @@ aarch64_size_one_stub (struct bfd_hash_e
     }
 
   size = (size + 7) & ~7;
+  stub_entry->stub_offset = stub_entry->stub_sec->size;
   stub_entry->stub_sec->size += size;
-  return TRUE;
+  return true;
+}
+
+/* Output is BTI compatible.  */
+
+static bool
+elf_aarch64_bti_p (bfd *output_bfd)
+{
+  return elf_aarch64_tdata (output_bfd)->gnu_property_aarch64_feature_1_and
+       & GNU_PROPERTY_AARCH64_FEATURE_1_BTI;
 }
 
 /* External entry points for sizing and building linker stubs.  */
@@ -3456,11 +3471,11 @@ 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);
 
-  if (!is_elf_hash_table (htab))
+  if (!is_elf_hash_table (&htab->root.root))
     return 0;
 
   /* Count the number of input BFDs and find the top input section id.  */
@@ -3534,7 +3549,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 +3570,145 @@ 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)
+		bool 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_HINT(insn) (((insn) & 0xfffff01f) == 0xd503201f)
+#define AARCH64_PACIASP 0xd503233f
+#define AARCH64_PACIBSP 0xd503237f
+#define AARCH64_BTI_C   0xd503245f
+#define AARCH64_BTI_J   0xd503249f
+#define AARCH64_BTI_JC  0xd50324df
+
+/* True if the inserted stub does not break BTI compatibility.  */
+
+static bool
+aarch64_bti_stub_p (struct bfd_link_info *info,
+		    struct elf_aarch64_stub_hash_entry *stub_entry)
+{
+  /* Stubs without indirect branch are BTI compatible.  */
+  if (stub_entry->stub_type != aarch64_stub_adrp_branch
+      && stub_entry->stub_type != aarch64_stub_long_branch)
+    return true;
+
+  /* Return true if the target instruction is compatible with BR x16.  */
+
+  struct elf_aarch64_link_hash_table *globals = elf_aarch64_hash_table (info);
+  asection *section = stub_entry->target_section;
+  bfd_byte loc[4];
+  file_ptr off = stub_entry->target_value;
+  bfd_size_type count = sizeof (loc);
+
+  /* PLT code is not generated yet, so treat it specially.
+     Note: Checking elf_aarch64_obj_tdata.plt_type & PLT_BTI is not
+     enough because it only implies BTI in the PLT0 and tlsdesc PLT
+     entries. Normal PLT entries don't have BTI in a shared library
+     (because such PLT is normally not called indirectly and adding
+     the BTI when a stub targets a PLT would change the PLT layout
+     and it's too late for that here).  */
+  if (section == globals->root.splt)
+    memcpy (loc, globals->plt_entry, count);
+  else if (!bfd_get_section_contents (section->owner, section, loc, off, count))
+    return false;
+
+  uint32_t insn = bfd_getl32 (loc);
+  if (!AARCH64_HINT (insn))
+    return false;
+  return insn == AARCH64_BTI_C
+	 || insn == AARCH64_PACIASP
+	 || insn == AARCH64_BTI_JC
+	 || insn == AARCH64_BTI_J
+	 || insn == AARCH64_PACIBSP;
+}
 
 #define AARCH64_BITS(x, pos, n) (((x) >> (pos)) & ((1 << (n)) - 1))
 
@@ -3663,9 +3755,9 @@ group_sections (struct elf_aarch64_link_
 
    For LD/ST pair instructions PAIR is TRUE, RT and RT2 are returned.  */
 
-static bfd_boolean
+static bool
 aarch64_mem_op_p (uint32_t insn, unsigned int *rt, unsigned int *rt2,
-		  bfd_boolean *pair, bfd_boolean *load)
+		  bool *pair, bool *load)
 {
   uint32_t opcode;
   unsigned int r;
@@ -3676,32 +3768,32 @@ aarch64_mem_op_p (uint32_t insn, unsigne
   /* Bail out quickly if INSN doesn't fall into the load-store
      encoding space.  */
   if (!AARCH64_LDST (insn))
-    return FALSE;
+    return false;
 
-  *pair = FALSE;
-  *load = FALSE;
+  *pair = false;
+  *load = false;
   if (AARCH64_LDST_EX (insn))
     {
       *rt = AARCH64_RT (insn);
       *rt2 = *rt;
       if (AARCH64_BIT (insn, 21) == 1)
 	{
-	  *pair = TRUE;
+	  *pair = true;
 	  *rt2 = AARCH64_RT2 (insn);
 	}
       *load = AARCH64_LD (insn);
-      return TRUE;
+      return true;
     }
   else if (AARCH64_LDST_NAP (insn)
 	   || AARCH64_LDSTP_PI (insn)
 	   || AARCH64_LDSTP_O (insn)
 	   || AARCH64_LDSTP_PRE (insn))
     {
-      *pair = TRUE;
+      *pair = true;
       *rt = AARCH64_RT (insn);
       *rt2 = AARCH64_RT2 (insn);
       *load = AARCH64_LD (insn);
-      return TRUE;
+      return true;
     }
   else if (AARCH64_LDST_PCREL (insn)
 	   || AARCH64_LDST_UI (insn)
@@ -3714,13 +3806,13 @@ aarch64_mem_op_p (uint32_t insn, unsigne
       *rt = AARCH64_RT (insn);
       *rt2 = *rt;
       if (AARCH64_LDST_PCREL (insn))
-	*load = TRUE;
+	*load = true;
       opc = AARCH64_BITS (insn, 22, 2);
       v = AARCH64_BIT (insn, 26);
       opc_v = opc | (v << 2);
       *load =  (opc_v == 1 || opc_v == 2 || opc_v == 3
 		|| opc_v == 5 || opc_v == 7);
-      return TRUE;
+      return true;
    }
   else if (AARCH64_LDST_SIMD_M (insn)
 	   || AARCH64_LDST_SIMD_M_PI (insn))
@@ -3750,9 +3842,9 @@ aarch64_mem_op_p (uint32_t insn, unsigne
 	  break;
 
 	default:
-	  return FALSE;
+	  return false;
 	}
-      return TRUE;
+      return true;
     }
   else if (AARCH64_LDST_SIMD_S (insn)
 	   || AARCH64_LDST_SIMD_S_PI (insn))
@@ -3784,17 +3876,17 @@ aarch64_mem_op_p (uint32_t insn, unsigne
 	  break;
 
 	default:
-	  return FALSE;
+	  return false;
 	}
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Return TRUE if INSN is multiply-accumulate.  */
 
-static bfd_boolean
+static bool
 aarch64_mlxl_p (uint32_t insn)
 {
   uint32_t op31 = AARCH64_OP31 (insn);
@@ -3804,9 +3896,9 @@ aarch64_mlxl_p (uint32_t insn)
       /* Exclude MUL instructions which are encoded as a multiple accumulate
 	 with RA = XZR.  */
       && AARCH64_RA (insn) != AARCH64_ZR)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Some early revisions of the Cortex-A53 have an erratum (835769) whereby
@@ -3822,7 +3914,7 @@ aarch64_mlxl_p (uint32_t insn)
    operation (INSN_2).  Return TRUE if an erratum sequence is found, FALSE
    if INSN_1 and INSN_2 are safe.  */
 
-static bfd_boolean
+static bool
 aarch64_erratum_sequence (uint32_t insn_1, uint32_t insn_2)
 {
   uint32_t rt;
@@ -3830,8 +3922,8 @@ aarch64_erratum_sequence (uint32_t insn_
   uint32_t rn;
   uint32_t rm;
   uint32_t ra;
-  bfd_boolean pair;
-  bfd_boolean load;
+  bool pair;
+  bool load;
 
   if (aarch64_mlxl_p (insn_2)
       && aarch64_mem_op_p (insn_1, &rt, &rt2, &pair, &load))
@@ -3839,7 +3931,7 @@ aarch64_erratum_sequence (uint32_t insn_
       /* Any SIMD memory op is independent of the subsequent MLA
 	 by definition of the erratum.  */
       if (AARCH64_BIT (insn_1, 26))
-	return TRUE;
+	return true;
 
       /* If not SIMD, check for integer memory ops and MLA relationship.  */
       rn = AARCH64_RN (insn_2);
@@ -3851,14 +3943,14 @@ aarch64_erratum_sequence (uint32_t insn_
       if (load &&
 	  (rt == rn || rt == rm || rt == ra
 	   || (pair && (rt2 == rn || rt2 == rm || rt2 == ra))))
-	return FALSE;
+	return false;
 
       /* We conservatively put out stubs for all other cases (including
 	 writebacks).  */
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Used to order a list of mapping symbols by address.  */
@@ -3899,7 +3991,7 @@ _bfd_aarch64_erratum_835769_stub_name (u
 
    Return TRUE else FALSE on abnormal termination.  */
 
-static bfd_boolean
+static bool
 _bfd_aarch64_erratum_835769_scan (bfd *input_bfd,
 				  struct bfd_link_info *info,
 				  unsigned int *num_fixes_p)
@@ -3909,7 +4001,7 @@ _bfd_aarch64_erratum_835769_scan (bfd *i
   unsigned int num_fixes = *num_fixes_p;
 
   if (htab == NULL)
-    return TRUE;
+    return true;
 
   for (section = input_bfd->sections;
        section != NULL;
@@ -3929,12 +4021,13 @@ _bfd_aarch64_erratum_835769_scan (bfd *i
       if (elf_section_data (section)->this_hdr.contents != NULL)
 	contents = elf_section_data (section)->this_hdr.contents;
       else if (! bfd_malloc_and_get_section (input_bfd, section, &contents))
-	return FALSE;
+	return false;
 
       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++)
 	{
@@ -3958,13 +4051,13 @@ _bfd_aarch64_erratum_835769_scan (bfd *i
 		  struct elf_aarch64_stub_hash_entry *stub_entry;
 		  char *stub_name = _bfd_aarch64_erratum_835769_stub_name (num_fixes);
 		  if (! stub_name)
-		    return FALSE;
+		    return false;
 
 		  stub_entry = _bfd_aarch64_add_stub_entry_in_group (stub_name,
 								     section,
 								     htab);
 		  if (! stub_entry)
-		    return FALSE;
+		    return false;
 
 		  stub_entry->stub_type = aarch64_stub_erratum_835769_veneer;
 		  stub_entry->target_section = section;
@@ -3981,13 +4074,13 @@ _bfd_aarch64_erratum_835769_scan (bfd *i
 
   *num_fixes_p = num_fixes;
 
-  return TRUE;
+  return true;
 }
 
 
 /* Test if instruction INSN is ADRP.  */
 
-static bfd_boolean
+static bool
 _bfd_aarch64_adrp_p (uint32_t insn)
 {
   return ((insn & AARCH64_ADRP_OP_MASK) == AARCH64_ADRP_OP);
@@ -3996,14 +4089,14 @@ _bfd_aarch64_adrp_p (uint32_t insn)
 
 /* Helper predicate to look for cortex-a53 erratum 843419 sequence 1.  */
 
-static bfd_boolean
+static bool
 _bfd_aarch64_erratum_843419_sequence_p (uint32_t insn_1, uint32_t insn_2,
 					uint32_t insn_3)
 {
   uint32_t rt;
   uint32_t rt2;
-  bfd_boolean pair;
-  bfd_boolean load;
+  bool pair;
+  bool load;
 
   return (aarch64_mem_op_p (insn_2, &rt, &rt2, &pair, &load)
 	  && (!pair
@@ -4021,7 +4114,7 @@ _bfd_aarch64_erratum_843419_sequence_p (
    instruction in the sequence.
  */
 
-static bfd_boolean
+static bool
 _bfd_aarch64_erratum_843419_p (bfd_byte *contents, bfd_vma vma,
 			       bfd_vma i, bfd_vma span_end,
 			       bfd_vma *p_veneer_i)
@@ -4029,35 +4122,35 @@ _bfd_aarch64_erratum_843419_p (bfd_byte
   uint32_t insn_1 = bfd_getl32 (contents + i);
 
   if (!_bfd_aarch64_adrp_p (insn_1))
-    return FALSE;
+    return false;
 
   if (span_end < i + 12)
-    return FALSE;
+    return false;
 
   uint32_t insn_2 = bfd_getl32 (contents + i + 4);
   uint32_t insn_3 = bfd_getl32 (contents + i + 8);
 
   if ((vma & 0xfff) != 0xff8 && (vma & 0xfff) != 0xffc)
-    return FALSE;
+    return false;
 
   if (_bfd_aarch64_erratum_843419_sequence_p (insn_1, insn_2, insn_3))
     {
       *p_veneer_i = i + 8;
-      return TRUE;
+      return true;
     }
 
   if (span_end < i + 16)
-    return FALSE;
+    return false;
 
   uint32_t insn_4 = bfd_getl32 (contents + i + 12);
 
   if (_bfd_aarch64_erratum_843419_sequence_p (insn_1, insn_2, insn_4))
     {
       *p_veneer_i = i + 12;
-      return TRUE;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 
@@ -4076,7 +4169,10 @@ _bfd_aarch64_resize_stubs (struct elf_aa
       /* Ignore non-stub sections.  */
       if (!strstr (section->name, STUB_SUFFIX))
 	continue;
-      section->size = 0;
+
+      /* Add space for a branch.  Add 8 bytes to keep section 8 byte aligned,
+	 as long branch stubs contain a 64-bit address.  */
+      section->size = 8;
     }
 
   bfd_hash_traverse (&htab->stub_hash_table, aarch64_size_one_stub, htab);
@@ -4087,10 +4183,9 @@ _bfd_aarch64_resize_stubs (struct elf_aa
       if (!strstr (section->name, STUB_SUFFIX))
 	continue;
 
-      /* Add space for a branch.  Add 8 bytes to keep section 8 byte aligned,
-	 as long branch stubs contain a 64-bit address.  */
-      if (section->size)
-	section->size += 8;
+      /* Empty stub section.  */
+      if (section->size == 8)
+	section->size = 0;
 
       /* Ensure all stub sections have a size which is a multiple of
 	 4096.  This is important in order to ensure that the insertion
@@ -4114,10 +4209,10 @@ _bfd_aarch64_erratum_843419_stub_name (a
   char *stub_name = bfd_malloc (len);
 
   if (stub_name != NULL)
-    snprintf (stub_name, len, "e843419@%04x_%08x_%" BFD_VMA_FMT "x",
+    snprintf (stub_name, len, "e843419@%04x_%08x_%" PRIx64,
 	      input_section->owner->id,
 	      input_section->id,
-	      offset);
+	      (uint64_t) offset);
   return stub_name;
 }
 
@@ -4128,7 +4223,7 @@ _bfd_aarch64_erratum_843419_stub_name (a
 
     Returns TRUE on success.  */
 
-static bfd_boolean
+static bool
 _bfd_aarch64_erratum_843419_fixup (uint32_t insn,
 				   bfd_vma adrp_offset,
 				   bfd_vma ldst_offset,
@@ -4141,13 +4236,13 @@ _bfd_aarch64_erratum_843419_fixup (uint3
 
   stub_name = _bfd_aarch64_erratum_843419_stub_name (section, ldst_offset);
   if (stub_name == NULL)
-    return FALSE;
+    return false;
   stub_entry = aarch64_stub_hash_lookup (&htab->stub_hash_table, stub_name,
-					 FALSE, FALSE);
+					 false, false);
   if (stub_entry)
     {
       free (stub_name);
-      return TRUE;
+      return true;
     }
 
   /* We always place an 843419 workaround veneer in the stub section
@@ -4165,7 +4260,7 @@ _bfd_aarch64_erratum_843419_fixup (uint3
   if (stub_entry == NULL)
     {
       free (stub_name);
-      return FALSE;
+      return false;
     }
 
   stub_entry->adrp_offset = adrp_offset;
@@ -4175,7 +4270,7 @@ _bfd_aarch64_erratum_843419_fixup (uint3
   stub_entry->veneered_insn = insn;
   stub_entry->output_name = stub_name;
 
-  return TRUE;
+  return true;
 }
 
 
@@ -4188,21 +4283,21 @@ _bfd_aarch64_erratum_843419_fixup (uint3
    Return TRUE on successful scan, FALSE on failure to scan.
  */
 
-static bfd_boolean
+static bool
 _bfd_aarch64_erratum_843419_scan (bfd *input_bfd, asection *section,
 				  struct bfd_link_info *info)
 {
   struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
 
   if (htab == NULL)
-    return TRUE;
+    return true;
 
   if (elf_section_type (section) != SHT_PROGBITS
       || (elf_section_flags (section) & SHF_EXECINSTR) == 0
       || (section->flags & SEC_EXCLUDE) != 0
       || (section->sec_info_type == SEC_INFO_TYPE_JUST_SYMS)
       || (section->output_section == bfd_abs_section_ptr))
-    return TRUE;
+    return true;
 
   do
     {
@@ -4213,12 +4308,13 @@ _bfd_aarch64_erratum_843419_scan (bfd *i
       if (elf_section_data (section)->this_hdr.contents != NULL)
 	contents = elf_section_data (section)->this_hdr.contents;
       else if (! bfd_malloc_and_get_section (input_bfd, section, &contents))
-	return FALSE;
+	return false;
 
       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++)
 	{
@@ -4246,7 +4342,7 @@ _bfd_aarch64_erratum_843419_scan (bfd *i
 
 		  if (!_bfd_aarch64_erratum_843419_fixup (insn, i, veneer_i,
 							  section, info))
-		    return FALSE;
+		    return false;
 		}
 	    }
 	}
@@ -4256,17 +4352,388 @@ _bfd_aarch64_erratum_843419_scan (bfd *i
     }
   while (0);
 
-  return TRUE;
+  return true;
 }
 
 
-/* Determine and set the size of the stub section for a final link.
+/* Add stub entries for calls.
 
    The basic idea here is to examine all the relocations looking for
    PC-relative calls to a target that is unreachable with a "bl"
    instruction.  */
 
-bfd_boolean
+static bool
+_bfd_aarch64_add_call_stub_entries (bool *stub_changed, bfd *output_bfd,
+				    struct bfd_link_info *info)
+{
+  struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
+  bool need_bti = elf_aarch64_bti_p (output_bfd);
+  bfd *input_bfd;
+
+  for (input_bfd = info->input_bfds; input_bfd != NULL;
+       input_bfd = input_bfd->link.next)
+    {
+      Elf_Internal_Shdr *symtab_hdr;
+      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)
+	continue;
+
+      /* Walk over each section attached to the input bfd.  */
+      for (section = input_bfd->sections;
+	   section != NULL; section = section->next)
+	{
+	  Elf_Internal_Rela *internal_relocs, *irelaend, *irela;
+
+	  /* If there aren't any relocs, then there's nothing more to do.  */
+	  if ((section->flags & SEC_RELOC) == 0
+	      || section->reloc_count == 0
+	      || (section->flags & SEC_CODE) == 0)
+	    continue;
+
+	  /* If this section is a link-once section that will be
+	     discarded, then don't create any stubs.  */
+	  if (section->output_section == NULL
+	      || section->output_section->owner != output_bfd)
+	    continue;
+
+	  /* Get the relocs.  */
+	  internal_relocs
+	    = _bfd_elf_link_read_relocs (input_bfd, section, NULL,
+					 NULL, info->keep_memory);
+	  if (internal_relocs == NULL)
+	    goto error_ret_free_local;
+
+	  /* Now examine each relocation.  */
+	  irela = internal_relocs;
+	  irelaend = irela + section->reloc_count;
+	  for (; irela < irelaend; irela++)
+	    {
+	      unsigned int r_type, r_indx;
+	      enum elf_aarch64_stub_type stub_type;
+	      struct elf_aarch64_stub_hash_entry *stub_entry;
+	      struct elf_aarch64_stub_hash_entry *stub_entry_bti;
+	      asection *sym_sec;
+	      bfd_vma sym_value;
+	      bfd_vma destination;
+	      struct elf_aarch64_link_hash_entry *hash;
+	      const char *sym_name;
+	      char *stub_name;
+	      char *stub_name_bti;
+	      const asection *id_sec;
+	      const asection *id_sec_bti;
+	      unsigned char st_type;
+	      bfd_size_type len;
+
+	      r_type = ELFNN_R_TYPE (irela->r_info);
+	      r_indx = ELFNN_R_SYM (irela->r_info);
+
+	      if (r_type >= (unsigned int) R_AARCH64_end)
+		{
+		  bfd_set_error (bfd_error_bad_value);
+		error_ret_free_internal:
+		  if (elf_section_data (section)->relocs == NULL)
+		    free (internal_relocs);
+		  goto error_ret_free_local;
+		}
+
+	      /* Only look for stubs on unconditional branch and
+		 branch and link instructions.  */
+	      if (r_type != (unsigned int) AARCH64_R (CALL26)
+		  && r_type != (unsigned int) AARCH64_R (JUMP26))
+		continue;
+
+	      /* Now determine the call target, its name, value,
+		 section.  */
+	      sym_sec = NULL;
+	      sym_value = 0;
+	      destination = 0;
+	      hash = NULL;
+	      sym_name = NULL;
+	      if (r_indx < symtab_hdr->sh_info)
+		{
+		  /* It's a local symbol.  */
+		  Elf_Internal_Sym *sym;
+		  Elf_Internal_Shdr *hdr;
+
+		  if (local_syms == NULL)
+		    {
+		      local_syms
+			= (Elf_Internal_Sym *) symtab_hdr->contents;
+		      if (local_syms == NULL)
+			local_syms
+			  = bfd_elf_get_elf_syms (input_bfd, symtab_hdr,
+						  symtab_hdr->sh_info, 0,
+						  NULL, NULL, NULL);
+		      if (local_syms == NULL)
+			goto error_ret_free_internal;
+		    }
+
+		  sym = local_syms + r_indx;
+		  hdr = elf_elfsections (input_bfd)[sym->st_shndx];
+		  sym_sec = hdr->bfd_section;
+		  if (!sym_sec)
+		    /* This is an undefined symbol.  It can never
+		       be resolved.  */
+		    continue;
+
+		  if (ELF_ST_TYPE (sym->st_info) != STT_SECTION)
+		    sym_value = sym->st_value;
+		  destination = (sym_value + irela->r_addend
+				 + sym_sec->output_offset
+				 + sym_sec->output_section->vma);
+		  st_type = ELF_ST_TYPE (sym->st_info);
+		  sym_name
+		    = bfd_elf_string_from_elf_section (input_bfd,
+						       symtab_hdr->sh_link,
+						       sym->st_name);
+		}
+	      else
+		{
+		  int e_indx;
+
+		  e_indx = r_indx - symtab_hdr->sh_info;
+		  hash = ((struct elf_aarch64_link_hash_entry *)
+			  elf_sym_hashes (input_bfd)[e_indx]);
+
+		  while (hash->root.root.type == bfd_link_hash_indirect
+			 || hash->root.root.type == bfd_link_hash_warning)
+		    hash = ((struct elf_aarch64_link_hash_entry *)
+			    hash->root.root.u.i.link);
+
+		  if (hash->root.root.type == bfd_link_hash_defined
+		      || hash->root.root.type == bfd_link_hash_defweak)
+		    {
+		      struct elf_aarch64_link_hash_table *globals =
+			elf_aarch64_hash_table (info);
+		      sym_sec = hash->root.root.u.def.section;
+		      sym_value = hash->root.root.u.def.value;
+		      /* For a destination in a shared library,
+			 use the PLT stub as target address to
+			 decide whether a branch stub is
+			 needed.  */
+		      if (globals->root.splt != NULL && hash != NULL
+			  && hash->root.plt.offset != (bfd_vma) - 1)
+			{
+			  sym_sec = globals->root.splt;
+			  sym_value = hash->root.plt.offset;
+			  if (sym_sec->output_section != NULL)
+			    destination = (sym_value
+					   + sym_sec->output_offset
+					   + sym_sec->output_section->vma);
+			}
+		      else if (sym_sec->output_section != NULL)
+			destination = (sym_value + irela->r_addend
+				       + sym_sec->output_offset
+				       + sym_sec->output_section->vma);
+		    }
+		  else if (hash->root.root.type == bfd_link_hash_undefined
+			   || (hash->root.root.type
+			       == bfd_link_hash_undefweak))
+		    {
+		      /* For a shared library, use the PLT stub as
+			 target address to decide whether a long
+			 branch stub is needed.
+			 For absolute code, they cannot be handled.  */
+		      struct elf_aarch64_link_hash_table *globals =
+			elf_aarch64_hash_table (info);
+
+		      if (globals->root.splt != NULL && hash != NULL
+			  && hash->root.plt.offset != (bfd_vma) - 1)
+			{
+			  sym_sec = globals->root.splt;
+			  sym_value = hash->root.plt.offset;
+			  if (sym_sec->output_section != NULL)
+			    destination = (sym_value
+					   + sym_sec->output_offset
+					   + sym_sec->output_section->vma);
+			}
+		      else
+			continue;
+		    }
+		  else
+		    {
+		      bfd_set_error (bfd_error_bad_value);
+		      goto error_ret_free_internal;
+		    }
+		  st_type = ELF_ST_TYPE (hash->root.type);
+		  sym_name = hash->root.root.root.string;
+		}
+
+	      /* Determine what (if any) linker stub is needed.  */
+	      stub_type = aarch64_type_of_stub (section, irela, sym_sec,
+						st_type, destination);
+	      if (stub_type == aarch64_stub_none)
+		continue;
+
+	      /* Support for grouping stub sections.  */
+	      id_sec = htab->stub_group[section->id].link_sec;
+
+	      /* Get the name of this stub.  */
+	      stub_name = elfNN_aarch64_stub_name (id_sec, sym_sec, hash,
+						   irela);
+	      if (!stub_name)
+		goto error_ret_free_internal;
+
+	      stub_entry =
+		aarch64_stub_hash_lookup (&htab->stub_hash_table,
+					  stub_name, false, false);
+	      if (stub_entry != NULL)
+		{
+		  /* The proper stub has already been created.  */
+		  free (stub_name);
+
+		  /* Always update this stub's target since it may have
+		     changed after layout.  */
+		  stub_entry->target_value = sym_value + irela->r_addend;
+
+		  if (stub_entry->double_stub)
+		    {
+		      /* Update the target of both stubs.  */
+
+		      id_sec_bti = htab->stub_group[sym_sec->id].link_sec;
+		      stub_name_bti =
+			elfNN_aarch64_stub_name (id_sec_bti, sym_sec, hash,
+						 irela);
+		      if (!stub_name_bti)
+			goto error_ret_free_internal;
+		      stub_entry_bti =
+			aarch64_stub_hash_lookup (&htab->stub_hash_table,
+						  stub_name_bti, false, false);
+		      BFD_ASSERT (stub_entry_bti != NULL);
+		      free (stub_name_bti);
+		      stub_entry_bti->target_value = stub_entry->target_value;
+		      stub_entry->target_value = stub_entry_bti->stub_offset;
+		    }
+		  continue;
+		}
+
+	      stub_entry = _bfd_aarch64_add_stub_entry_in_group
+		(stub_name, section, htab);
+	      if (stub_entry == NULL)
+		{
+		  free (stub_name);
+		  goto error_ret_free_internal;
+		}
+
+	      stub_entry->target_value = sym_value + irela->r_addend;
+	      stub_entry->target_section = sym_sec;
+	      stub_entry->stub_type = stub_type;
+	      stub_entry->h = hash;
+	      stub_entry->st_type = st_type;
+
+	      if (sym_name == NULL)
+		sym_name = "unnamed";
+	      len = sizeof (STUB_ENTRY_NAME) + strlen (sym_name);
+	      stub_entry->output_name = bfd_alloc (htab->stub_bfd, len);
+	      if (stub_entry->output_name == NULL)
+		{
+		  free (stub_name);
+		  goto error_ret_free_internal;
+		}
+
+	      snprintf (stub_entry->output_name, len, STUB_ENTRY_NAME,
+			sym_name);
+
+	      /* A stub with indirect jump may break BTI compatibility, so
+		 insert another stub with direct jump near the target then.  */
+	      if (need_bti && !aarch64_bti_stub_p (info, stub_entry))
+		{
+		  id_sec_bti = htab->stub_group[sym_sec->id].link_sec;
+
+		  /* If the stub with indirect jump and the BTI stub are in
+		     the same stub group: change the indirect jump stub into
+		     a BTI stub since a direct branch can reach the target.
+		     The BTI landing pad is still needed in case another
+		     stub indirectly jumps to it.  */
+		  if (id_sec_bti == id_sec)
+		    {
+		      stub_entry->stub_type = aarch64_stub_bti_direct_branch;
+		      goto skip_double_stub;
+		    }
+
+		  stub_entry->double_stub = true;
+		  htab->has_double_stub = true;
+
+		  stub_name_bti =
+		    elfNN_aarch64_stub_name (id_sec_bti, sym_sec, hash, irela);
+		  if (!stub_name_bti)
+		    {
+		      free (stub_name);
+		      goto error_ret_free_internal;
+		    }
+
+		  stub_entry_bti =
+		    aarch64_stub_hash_lookup (&htab->stub_hash_table,
+					      stub_name_bti, false, false);
+		  if (stub_entry_bti != NULL)
+		    BFD_ASSERT (stub_entry_bti->stub_type
+				== aarch64_stub_bti_direct_branch);
+		  else
+		    {
+		      stub_entry_bti =
+			_bfd_aarch64_add_stub_entry_in_group (stub_name_bti,
+							      sym_sec, htab);
+		      if (stub_entry_bti == NULL)
+			{
+			  free (stub_name);
+			  free (stub_name_bti);
+			  goto error_ret_free_internal;
+			}
+
+		      stub_entry_bti->target_value =
+			sym_value + irela->r_addend;
+		      stub_entry_bti->target_section = sym_sec;
+		      stub_entry_bti->stub_type =
+			aarch64_stub_bti_direct_branch;
+		      stub_entry_bti->h = hash;
+		      stub_entry_bti->st_type = st_type;
+
+		      len = sizeof (BTI_STUB_ENTRY_NAME) + strlen (sym_name);
+		      stub_entry_bti->output_name = bfd_alloc (htab->stub_bfd,
+							       len);
+		      if (stub_entry_bti->output_name == NULL)
+			{
+			  free (stub_name);
+			  free (stub_name_bti);
+			  goto error_ret_free_internal;
+			}
+		      snprintf (stub_entry_bti->output_name, len,
+				BTI_STUB_ENTRY_NAME, sym_name);
+		    }
+
+		  /* Update the indirect call stub to target the BTI stub.  */
+		  stub_entry->target_value = 0;
+		  stub_entry->target_section = stub_entry_bti->stub_sec;
+		  stub_entry->stub_type = stub_type;
+		  stub_entry->h = NULL;
+		  stub_entry->st_type = STT_FUNC;
+		}
+skip_double_stub:
+	      *stub_changed = true;
+	    }
+
+	  /* We're done with the internal relocs, free them.  */
+	  if (elf_section_data (section)->relocs == NULL)
+	    free (internal_relocs);
+	}
+    }
+  return true;
+ error_ret_free_local:
+  return false;
+}
+
+
+/* Determine and set the size of the stub section for a final link.  */
+
+bool
 elfNN_aarch64_size_stubs (bfd *output_bfd,
 			  bfd *stub_bfd,
 			  struct bfd_link_info *info,
@@ -4276,8 +4743,7 @@ elfNN_aarch64_size_stubs (bfd *output_bf
 			  void (*layout_sections_again) (void))
 {
   bfd_size_type stub_group_size;
-  bfd_boolean stubs_always_before_branch;
-  bfd_boolean stub_changed = FALSE;
+  bool stubs_always_before_branch;
   struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
   unsigned int num_erratum_835769_fixes = 0;
 
@@ -4313,9 +4779,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,292 +4803,34 @@ 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)
 	    if (!_bfd_aarch64_erratum_843419_scan (input_bfd, section, info))
-	      return FALSE;
+	      return false;
 	}
 
       _bfd_aarch64_resize_stubs (htab);
       (*htab->layout_sections_again) ();
     }
 
-  while (1)
+  for (;;)
     {
-      bfd *input_bfd;
-
-      for (input_bfd = info->input_bfds;
-	   input_bfd != NULL; input_bfd = input_bfd->link.next)
-	{
-	  Elf_Internal_Shdr *symtab_hdr;
-	  asection *section;
-	  Elf_Internal_Sym *local_syms = NULL;
-
-	  /* We'll need the symbol table in a second.  */
-	  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
-	  if (symtab_hdr->sh_info == 0)
-	    continue;
-
-	  /* Walk over each section attached to the input bfd.  */
-	  for (section = input_bfd->sections;
-	       section != NULL; section = section->next)
-	    {
-	      Elf_Internal_Rela *internal_relocs, *irelaend, *irela;
-
-	      /* If there aren't any relocs, then there's nothing more
-		 to do.  */
-	      if ((section->flags & SEC_RELOC) == 0
-		  || section->reloc_count == 0
-		  || (section->flags & SEC_CODE) == 0)
-		continue;
-
-	      /* If this section is a link-once section that will be
-		 discarded, then don't create any stubs.  */
-	      if (section->output_section == NULL
-		  || section->output_section->owner != output_bfd)
-		continue;
+      bool stub_changed = false;
 
-	      /* Get the relocs.  */
-	      internal_relocs
-		= _bfd_elf_link_read_relocs (input_bfd, section, NULL,
-					     NULL, info->keep_memory);
-	      if (internal_relocs == NULL)
-		goto error_ret_free_local;
-
-	      /* Now examine each relocation.  */
-	      irela = internal_relocs;
-	      irelaend = irela + section->reloc_count;
-	      for (; irela < irelaend; irela++)
-		{
-		  unsigned int r_type, r_indx;
-		  enum elf_aarch64_stub_type stub_type;
-		  struct elf_aarch64_stub_hash_entry *stub_entry;
-		  asection *sym_sec;
-		  bfd_vma sym_value;
-		  bfd_vma destination;
-		  struct elf_aarch64_link_hash_entry *hash;
-		  const char *sym_name;
-		  char *stub_name;
-		  const asection *id_sec;
-		  unsigned char st_type;
-		  bfd_size_type len;
-
-		  r_type = ELFNN_R_TYPE (irela->r_info);
-		  r_indx = ELFNN_R_SYM (irela->r_info);
-
-		  if (r_type >= (unsigned int) R_AARCH64_end)
-		    {
-		      bfd_set_error (bfd_error_bad_value);
-		    error_ret_free_internal:
-		      if (elf_section_data (section)->relocs == NULL)
-			free (internal_relocs);
-		      goto error_ret_free_local;
-		    }
-
-		  /* Only look for stubs on unconditional branch and
-		     branch and link instructions.  */
-		  if (r_type != (unsigned int) AARCH64_R (CALL26)
-		      && r_type != (unsigned int) AARCH64_R (JUMP26))
-		    continue;
-
-		  /* Now determine the call target, its name, value,
-		     section.  */
-		  sym_sec = NULL;
-		  sym_value = 0;
-		  destination = 0;
-		  hash = NULL;
-		  sym_name = NULL;
-		  if (r_indx < symtab_hdr->sh_info)
-		    {
-		      /* It's a local symbol.  */
-		      Elf_Internal_Sym *sym;
-		      Elf_Internal_Shdr *hdr;
-
-		      if (local_syms == NULL)
-			{
-			  local_syms
-			    = (Elf_Internal_Sym *) symtab_hdr->contents;
-			  if (local_syms == NULL)
-			    local_syms
-			      = bfd_elf_get_elf_syms (input_bfd, symtab_hdr,
-						      symtab_hdr->sh_info, 0,
-						      NULL, NULL, NULL);
-			  if (local_syms == NULL)
-			    goto error_ret_free_internal;
-			}
-
-		      sym = local_syms + r_indx;
-		      hdr = elf_elfsections (input_bfd)[sym->st_shndx];
-		      sym_sec = hdr->bfd_section;
-		      if (!sym_sec)
-			/* This is an undefined symbol.  It can never
-			   be resolved.  */
-			continue;
-
-		      if (ELF_ST_TYPE (sym->st_info) != STT_SECTION)
-			sym_value = sym->st_value;
-		      destination = (sym_value + irela->r_addend
-				     + sym_sec->output_offset
-				     + sym_sec->output_section->vma);
-		      st_type = ELF_ST_TYPE (sym->st_info);
-		      sym_name
-			= bfd_elf_string_from_elf_section (input_bfd,
-							   symtab_hdr->sh_link,
-							   sym->st_name);
-		    }
-		  else
-		    {
-		      int e_indx;
-
-		      e_indx = r_indx - symtab_hdr->sh_info;
-		      hash = ((struct elf_aarch64_link_hash_entry *)
-			      elf_sym_hashes (input_bfd)[e_indx]);
-
-		      while (hash->root.root.type == bfd_link_hash_indirect
-			     || hash->root.root.type == bfd_link_hash_warning)
-			hash = ((struct elf_aarch64_link_hash_entry *)
-				hash->root.root.u.i.link);
-
-		      if (hash->root.root.type == bfd_link_hash_defined
-			  || hash->root.root.type == bfd_link_hash_defweak)
-			{
-			  struct elf_aarch64_link_hash_table *globals =
-			    elf_aarch64_hash_table (info);
-			  sym_sec = hash->root.root.u.def.section;
-			  sym_value = hash->root.root.u.def.value;
-			  /* For a destination in a shared library,
-			     use the PLT stub as target address to
-			     decide whether a branch stub is
-			     needed.  */
-			  if (globals->root.splt != NULL && hash != NULL
-			      && hash->root.plt.offset != (bfd_vma) - 1)
-			    {
-			      sym_sec = globals->root.splt;
-			      sym_value = hash->root.plt.offset;
-			      if (sym_sec->output_section != NULL)
-				destination = (sym_value
-					       + sym_sec->output_offset
-					       +
-					       sym_sec->output_section->vma);
-			    }
-			  else if (sym_sec->output_section != NULL)
-			    destination = (sym_value + irela->r_addend
-					   + sym_sec->output_offset
-					   + sym_sec->output_section->vma);
-			}
-		      else if (hash->root.root.type == bfd_link_hash_undefined
-			       || (hash->root.root.type
-				   == bfd_link_hash_undefweak))
-			{
-			  /* For a shared library, use the PLT stub as
-			     target address to decide whether a long
-			     branch stub is needed.
-			     For absolute code, they cannot be handled.  */
-			  struct elf_aarch64_link_hash_table *globals =
-			    elf_aarch64_hash_table (info);
-
-			  if (globals->root.splt != NULL && hash != NULL
-			      && hash->root.plt.offset != (bfd_vma) - 1)
-			    {
-			      sym_sec = globals->root.splt;
-			      sym_value = hash->root.plt.offset;
-			      if (sym_sec->output_section != NULL)
-				destination = (sym_value
-					       + sym_sec->output_offset
-					       +
-					       sym_sec->output_section->vma);
-			    }
-			  else
-			    continue;
-			}
-		      else
-			{
-			  bfd_set_error (bfd_error_bad_value);
-			  goto error_ret_free_internal;
-			}
-		      st_type = ELF_ST_TYPE (hash->root.type);
-		      sym_name = hash->root.root.root.string;
-		    }
-
-		  /* Determine what (if any) linker stub is needed.  */
-		  stub_type = aarch64_type_of_stub (section, irela, sym_sec,
-						    st_type, destination);
-		  if (stub_type == aarch64_stub_none)
-		    continue;
-
-		  /* Support for grouping stub sections.  */
-		  id_sec = htab->stub_group[section->id].link_sec;
-
-		  /* Get the name of this stub.  */
-		  stub_name = elfNN_aarch64_stub_name (id_sec, sym_sec, hash,
-						       irela);
-		  if (!stub_name)
-		    goto error_ret_free_internal;
-
-		  stub_entry =
-		    aarch64_stub_hash_lookup (&htab->stub_hash_table,
-					      stub_name, FALSE, FALSE);
-		  if (stub_entry != NULL)
-		    {
-		      /* The proper stub has already been created.  */
-		      free (stub_name);
-		      /* Always update this stub's target since it may have
-			 changed after layout.  */
-		      stub_entry->target_value = sym_value + irela->r_addend;
-		      continue;
-		    }
-
-		  stub_entry = _bfd_aarch64_add_stub_entry_in_group
-		    (stub_name, section, htab);
-		  if (stub_entry == NULL)
-		    {
-		      free (stub_name);
-		      goto error_ret_free_internal;
-		    }
-
-		  stub_entry->target_value = sym_value + irela->r_addend;
-		  stub_entry->target_section = sym_sec;
-		  stub_entry->stub_type = stub_type;
-		  stub_entry->h = hash;
-		  stub_entry->st_type = st_type;
-
-		  if (sym_name == NULL)
-		    sym_name = "unnamed";
-		  len = sizeof (STUB_ENTRY_NAME) + strlen (sym_name);
-		  stub_entry->output_name = bfd_alloc (htab->stub_bfd, len);
-		  if (stub_entry->output_name == NULL)
-		    {
-		      free (stub_name);
-		      goto error_ret_free_internal;
-		    }
-
-		  snprintf (stub_entry->output_name, len, STUB_ENTRY_NAME,
-			    sym_name);
-
-		  stub_changed = TRUE;
-		}
-
-	      /* We're done with the internal relocs, free them.  */
-	      if (elf_section_data (section)->relocs == NULL)
-		free (internal_relocs);
-	    }
-	}
+      if (!_bfd_aarch64_add_call_stub_entries (&stub_changed, output_bfd, info))
+	return false;
 
       if (!stub_changed)
-	break;
+	return true;
 
       _bfd_aarch64_resize_stubs (htab);
-
-      /* Ask the linker to do its stuff.  */
       (*htab->layout_sections_again) ();
-      stub_changed = FALSE;
     }
-
-  return TRUE;
-
-error_ret_free_local:
-  return FALSE;
 }
 
 /* Build all the stubs associated with the current output file.  The
@@ -4625,7 +4839,7 @@ error_ret_free_local:
    functions here.  This function is called via aarch64_elf_finish in the
    linker.  */
 
-bfd_boolean
+bool
 elfNN_aarch64_build_stubs (struct bfd_link_info *info)
 {
   asection *stub_sec;
@@ -4647,7 +4861,8 @@ elfNN_aarch64_build_stubs (struct bfd_li
       size = stub_sec->size;
       stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
       if (stub_sec->contents == NULL && size != 0)
-	return FALSE;
+	return false;
+      stub_sec->alloced = 1;
       stub_sec->size = 0;
 
       /* Add a branch around the stub section, and a nop, to keep it 8 byte
@@ -4661,7 +4876,7 @@ elfNN_aarch64_build_stubs (struct bfd_li
   table = &htab->stub_hash_table;
   bfd_hash_traverse (table, aarch64_build_one_stub, info);
 
-  return TRUE;
+  return true;
 }
 
 
@@ -4756,15 +4971,17 @@ setup_plt_values (struct bfd_link_info *
       globals->plt0_entry = elfNN_aarch64_small_plt0_bti_entry;
 
       /* Only in ET_EXEC we need PLTn with BTI.  */
-      if (bfd_link_pde (link_info))
+      if (bfd_link_executable (link_info))
 	{
 	  globals->plt_entry_size = PLT_BTI_PAC_SMALL_ENTRY_SIZE;
 	  globals->plt_entry = elfNN_aarch64_small_plt_bti_pac_entry;
+	  globals->plt_entry_delta = 4;
 	}
       else
 	{
 	  globals->plt_entry_size = PLT_PAC_SMALL_ENTRY_SIZE;
 	  globals->plt_entry = elfNN_aarch64_small_plt_pac_entry;
+	  globals->plt_entry_delta = 0;
 	}
     }
   else if (plt_type == PLT_BTI)
@@ -4772,10 +4989,11 @@ setup_plt_values (struct bfd_link_info *
       globals->plt0_entry = elfNN_aarch64_small_plt0_bti_entry;
 
       /* Only in ET_EXEC we need PLTn with BTI.  */
-      if (bfd_link_pde (link_info))
+      if (bfd_link_executable (link_info))
 	{
 	  globals->plt_entry_size = PLT_BTI_SMALL_ENTRY_SIZE;
 	  globals->plt_entry = elfNN_aarch64_small_plt_bti_entry;
+	  globals->plt_entry_delta = 4;
 	}
     }
   else if (plt_type == PLT_PAC)
@@ -4794,13 +5012,15 @@ bfd_elfNN_aarch64_set_options (struct bf
 			       int fix_erratum_835769,
 			       erratum_84319_opts fix_erratum_843419,
 			       int no_apply_dynamic_relocs,
-			       aarch64_bti_pac_info bp_info)
+			       const aarch64_protection_opts *sw_protections,
+			       const aarch64_memtag_opts *memtag_opts)
 {
   struct elf_aarch64_link_hash_table *globals;
 
   globals = elf_aarch64_hash_table (link_info);
   globals->pic_veneer = pic_veneer;
   globals->fix_erratum_835769 = fix_erratum_835769;
+  globals->memtag_opts = *memtag_opts;
   /* If the default options are used, then ERRAT_ADR will be set by default
      which will enable the ADRP->ADR workaround for the erratum 843419
      workaround.  */
@@ -4811,19 +5031,46 @@ bfd_elfNN_aarch64_set_options (struct bf
   elf_aarch64_tdata (output_bfd)->no_enum_size_warning = no_enum_warn;
   elf_aarch64_tdata (output_bfd)->no_wchar_size_warning = no_wchar_warn;
 
-  switch (bp_info.bti_type)
-    {
-    case BTI_WARN:
-      elf_aarch64_tdata (output_bfd)->no_bti_warn = 0;
-      elf_aarch64_tdata (output_bfd)->gnu_and_prop
-	|= GNU_PROPERTY_AARCH64_FEATURE_1_BTI;
+  /* Note: gnu_property_aarch64_feature_1_and was initialized to 0 by
+     bfd_zalloc().  */
+  if (sw_protections->plt_type & PLT_BTI)
+    elf_aarch64_tdata (output_bfd)->gnu_property_aarch64_feature_1_and
+      |= GNU_PROPERTY_AARCH64_FEATURE_1_BTI;
+
+  switch (sw_protections->gcs_type)
+    {
+    case GCS_ALWAYS:
+      elf_aarch64_tdata (output_bfd)->gnu_property_aarch64_feature_1_and
+	|= GNU_PROPERTY_AARCH64_FEATURE_1_GCS;
       break;
-
-    default:
+    case GCS_NEVER:
+      elf_aarch64_tdata (output_bfd)->gnu_property_aarch64_feature_1_and
+	&= ~GNU_PROPERTY_AARCH64_FEATURE_1_GCS;
+      break;
+    case GCS_IMPLICIT:
+      /* GCS feature on the output bfd will be deduced from input objects.  */
       break;
     }
-  elf_aarch64_tdata (output_bfd)->plt_type = bp_info.plt_type;
-  setup_plt_values (link_info, bp_info.plt_type);
+
+  elf_aarch64_tdata (output_bfd)->sw_protections = *sw_protections;
+  /* Inherit the value from '-z gcs-report' if the option '-z gcs-report-dynamic'
+     was not set on the command line.  However, the inheritance mechanism is
+     capped to avoid inheriting the error level from -g gcs-report as the user
+     might want to continue to build a module without rebuilding all the shared
+     libraries.  If a user also wants to error GCS issues in the shared
+     libraries, '-z gcs-report-dynamic=error' will have to be specified
+     explicitly.  */
+  if (sw_protections->gcs_report_dynamic == MARKING_UNSET)
+    elf_aarch64_tdata (output_bfd)->sw_protections.gcs_report_dynamic
+      = (sw_protections->gcs_report == MARKING_ERROR)
+      ? MARKING_WARN
+      : sw_protections->gcs_report;
+
+  elf_aarch64_tdata (output_bfd)->n_bti_issues = 0;
+  elf_aarch64_tdata (output_bfd)->n_gcs_issues = 0;
+  elf_aarch64_tdata (output_bfd)->n_gcs_dynamic_issues = 0;
+
+  setup_plt_values (link_info, sw_protections->plt_type);
 }
 
 static bfd_vma
@@ -4831,11 +5078,11 @@ aarch64_calculate_got_entry_vma (struct
 				 struct elf_aarch64_link_hash_table
 				 *globals, struct bfd_link_info *info,
 				 bfd_vma value, bfd *output_bfd,
-				 bfd_boolean *unresolved_reloc_p)
+				 bool *unresolved_reloc_p)
 {
   bfd_vma off = (bfd_vma) - 1;
   asection *basegot = globals->root.sgot;
-  bfd_boolean dyn = globals->root.dynamic_sections_created;
+  bool dyn = globals->root.dynamic_sections_created;
 
   if (h != NULL)
     {
@@ -4866,7 +5113,7 @@ aarch64_calculate_got_entry_vma (struct
 	    }
 	}
       else
-	*unresolved_reloc_p = FALSE;
+	*unresolved_reloc_p = false;
 
       off = off + basegot->output_section->vma + basegot->output_offset;
     }
@@ -4879,60 +5126,62 @@ aarch64_calculate_got_entry_vma (struct
 
 static bfd_reloc_code_real_type
 aarch64_tls_transition_without_check (bfd_reloc_code_real_type r_type,
-				      struct elf_link_hash_entry *h)
+				      struct elf_link_hash_entry *h,
+				      struct bfd_link_info *info)
 {
-  bfd_boolean is_local = h == NULL;
+  bool local_exec = bfd_link_executable (info)
+    && SYMBOL_REFERENCES_LOCAL (info, h);
 
   switch (r_type)
     {
     case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:
     case BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:
-      return (is_local
+      return (local_exec
 	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
 	      : BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21);
 
     case BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21:
-      return (is_local
+      return (local_exec
 	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
 	      : r_type);
 
     case BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:
-      return (is_local
+      return (local_exec
 	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1
 	      : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19);
 
     case BFD_RELOC_AARCH64_TLSDESC_LDR:
-      return (is_local
+      return (local_exec
 	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
 	      : BFD_RELOC_AARCH64_NONE);
 
     case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
-      return (is_local
+      return (local_exec
 	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
 	      : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC);
 
     case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
-      return (is_local
+      return (local_exec
 	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
 	      : BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1);
 
     case BFD_RELOC_AARCH64_TLSDESC_LDNN_LO12_NC:
     case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
-      return (is_local
+      return (local_exec
 	      ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC
 	      : BFD_RELOC_AARCH64_TLSIE_LDNN_GOTTPREL_LO12_NC);
 
     case BFD_RELOC_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21:
-      return is_local ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1 : r_type;
+      return local_exec ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1 : r_type;
 
     case BFD_RELOC_AARCH64_TLSIE_LDNN_GOTTPREL_LO12_NC:
-      return is_local ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC : r_type;
+      return local_exec ? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G0_NC : r_type;
 
     case BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19:
       return r_type;
 
     case BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:
-      return (is_local
+      return (local_exec
 	      ? BFD_RELOC_AARCH64_TLSLE_ADD_TPREL_HI12
 	      : BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_PREL19);
 
@@ -4945,16 +5194,16 @@ aarch64_tls_transition_without_check (bf
     case BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC:
     case BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21:
     case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:
-      return is_local ? BFD_RELOC_AARCH64_NONE : r_type;
+      return local_exec ? BFD_RELOC_AARCH64_NONE : r_type;
 
 #if ARCH_SIZE == 64
     case BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:
-      return is_local
+      return local_exec
 	? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1_NC
 	: BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC;
 
     case BFD_RELOC_AARCH64_TLSGD_MOVW_G1:
-      return is_local
+      return local_exec
 	? BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G2
 	: BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1;
 #endif
@@ -5019,7 +5268,7 @@ aarch64_reloc_got_type (bfd_reloc_code_r
   return GOT_UNKNOWN;
 }
 
-static bfd_boolean
+static bool
 aarch64_can_relax_tls (bfd *input_bfd,
 		       struct bfd_link_info *info,
 		       bfd_reloc_code_real_type r_type,
@@ -5030,21 +5279,21 @@ aarch64_can_relax_tls (bfd *input_bfd,
   unsigned int reloc_got_type;
 
   if (! IS_AARCH64_TLS_RELAX_RELOC (r_type))
-    return FALSE;
+    return false;
 
   symbol_got_type = elfNN_aarch64_symbol_got_type (h, input_bfd, r_symndx);
   reloc_got_type = aarch64_reloc_got_type (r_type);
 
   if (symbol_got_type == GOT_TLS_IE && GOT_TLS_GD_ANY_P (reloc_got_type))
-    return TRUE;
+    return true;
 
   if (!bfd_link_executable (info))
-    return FALSE;
+    return false;
 
   if  (h && h->root.type == bfd_link_hash_undefweak)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Given the relocation code R_TYPE, return the relaxed bfd reloc
@@ -5063,7 +5312,7 @@ aarch64_tls_transition (bfd *input_bfd,
   if (! aarch64_can_relax_tls (input_bfd, info, bfd_r_type, h, r_symndx))
     return bfd_r_type;
 
-  return aarch64_tls_transition_without_check (bfd_r_type, h);
+  return aarch64_tls_transition_without_check (bfd_r_type, h, info);
 }
 
 /* Return the base VMA address which should be subtracted from real addresses
@@ -5202,7 +5451,7 @@ struct erratum_835769_branch_to_stub_dat
 /* Helper to insert branches to erratum 835769 stubs in the right
    places for a particular section.  */
 
-static bfd_boolean
+static bool
 make_branch_to_erratum_835769_stub (struct bfd_hash_entry *gen_entry,
 				    void *in_arg)
 {
@@ -5220,7 +5469,7 @@ make_branch_to_erratum_835769_stub (stru
 
   if (stub_entry->target_section != data->output_section
       || stub_entry->stub_type != aarch64_stub_erratum_835769_veneer)
-    return TRUE;
+    return true;
 
   contents = data->contents;
   veneered_insn_loc = stub_entry->target_section->output_section->vma
@@ -5244,11 +5493,11 @@ make_branch_to_erratum_835769_stub (stru
   branch_insn |= branch_offset;
   bfd_putl32 (branch_insn, &contents[target]);
 
-  return TRUE;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 _bfd_aarch64_erratum_843419_branch_to_stub (struct bfd_hash_entry *gen_entry,
 					    void *in_arg)
 {
@@ -5272,7 +5521,7 @@ _bfd_aarch64_erratum_843419_branch_to_st
 
   if (stub_entry->target_section != section
       || stub_entry->stub_type != aarch64_stub_erratum_843419_veneer)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (((htab->fix_erratum_843419 & ERRAT_ADRP) && stub_entry->stub_sec)
 	      || (htab->fix_erratum_843419 & ERRAT_ADR));
@@ -5339,10 +5588,11 @@ _bfd_aarch64_erratum_843419_branch_to_st
     {
       abfd = stub_entry->target_section->owner;
       _bfd_error_handler
-	(_("%pB: error: erratum 843419 immediate 0x%" BFD_VMA_FMT "x "
-	   "out of range for ADR (input file too large) and "
+	(_("%pB: error: erratum 843419 immediate 0x%" PRIx64
+	   " out of range for ADR (input file too large) and "
 	   "--fix-cortex-a53-843419=adr used.  Run the linker with "
-	   "--fix-cortex-a53-843419=full instead"), abfd, imm);
+	   "--fix-cortex-a53-843419=full instead"),
+	 abfd, (uint64_t) (bfd_vma) imm);
       bfd_set_error (bfd_error_bad_value);
       /* This function is called inside a hashtable traversal and the error
 	 handlers called above turn into non-fatal errors.  Which means this
@@ -5350,11 +5600,11 @@ _bfd_aarch64_erratum_843419_branch_to_st
 	 To prevent this, issue a hard abort.  */
       BFD_FAIL ();
     }
-  return TRUE;
+  return true;
 }
 
 
-static bfd_boolean
+static bool
 elfNN_aarch64_write_section (bfd *output_bfd  ATTRIBUTE_UNUSED,
 			     struct bfd_link_info *link_info,
 			     asection *sec,
@@ -5365,7 +5615,7 @@ elfNN_aarch64_write_section (bfd *output
     elf_aarch64_hash_table (link_info);
 
   if (globals == NULL)
-    return FALSE;
+    return false;
 
   /* Fix code to point to erratum 835769 stubs.  */
   if (globals->fix_erratum_835769)
@@ -5390,12 +5640,12 @@ elfNN_aarch64_write_section (bfd *output
 			 _bfd_aarch64_erratum_843419_branch_to_stub, &data);
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Return TRUE if RELOC is a relocation against the base of GOT table.  */
 
-static bfd_boolean
+static bool
 aarch64_relocation_aginst_gp_p (bfd_reloc_code_real_type reloc)
 {
   return (reloc == BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
@@ -5419,8 +5669,8 @@ elfNN_aarch64_final_link_relocate (reloc
 				   struct bfd_link_info *info,
 				   asection *sym_sec,
 				   struct elf_link_hash_entry *h,
-				   bfd_boolean *unresolved_reloc_p,
-				   bfd_boolean save_addend,
+				   bool *unresolved_reloc_p,
+				   bool save_addend,
 				   bfd_vma *saved_addend,
 				   Elf_Internal_Sym *sym)
 {
@@ -5433,12 +5683,12 @@ elfNN_aarch64_final_link_relocate (reloc
   bfd_vma place, off, got_entry_addr = 0;
   bfd_signed_vma signed_addend;
   struct elf_aarch64_link_hash_table *globals;
-  bfd_boolean weak_undef_p;
-  bfd_boolean relative_reloc;
+  bool weak_undef_p;
+  bool relative_reloc;
   asection *base_got;
   bfd_vma orig_value = value;
-  bfd_boolean resolved_to_zero;
-  bfd_boolean abs_symbol_p;
+  bool resolved_to_zero;
+  bool abs_symbol_p;
 
   globals = elf_aarch64_hash_table (info);
 
@@ -5507,7 +5757,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
@@ -5517,7 +5767,7 @@ bad_ifunc_reloc:
 	    /* xgettext:c-format */
 	    (_("%pB: relocation %s against STT_GNU_IFUNC "
 	       "symbol `%s' isn't handled by %s"), input_bfd,
-	     howto->name, name, __FUNCTION__);
+	     howto->name, name, __func__);
 	  bfd_set_error (bfd_error_bad_value);
 	  return bfd_reloc_notsupported;
 
@@ -5685,16 +5935,14 @@ bad_ifunc_reloc:
     case BFD_RELOC_AARCH64_TLSDESC_ADD:
     case BFD_RELOC_AARCH64_TLSDESC_CALL:
     case BFD_RELOC_AARCH64_TLSDESC_LDR:
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       return bfd_reloc_ok;
 
     case BFD_RELOC_AARCH64_NN:
 
-      /* When generating a shared object or relocatable executable, these
-	 relocations are copied into the output file to be resolved at
-	 run time.  */
-      if (((bfd_link_pic (info)
-	    || globals->root.is_relocatable_executable)
+      /* When generating a shared library or PIE, these relocations
+	 are copied into the output file to be resolved at run time.  */
+      if ((bfd_link_pic (info)
 	   && (input_section->flags & SEC_ALLOC)
 	   && (h == NULL
 	       || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
@@ -5716,24 +5964,24 @@ bad_ifunc_reloc:
 	{
 	  Elf_Internal_Rela outrel;
 	  bfd_byte *loc;
-	  bfd_boolean skip, relocate;
+	  bool skip, relocate;
 	  asection *sreloc;
 
-	  *unresolved_reloc_p = FALSE;
+	  *unresolved_reloc_p = false;
 
-	  skip = FALSE;
-	  relocate = FALSE;
+	  skip = false;
+	  relocate = false;
 
 	  outrel.r_addend = signed_addend;
 	  outrel.r_offset =
 	    _bfd_elf_section_offset (output_bfd, info, input_section,
 				     rel->r_offset);
 	  if (outrel.r_offset == (bfd_vma) - 1)
-	    skip = TRUE;
+	    skip = true;
 	  else if (outrel.r_offset == (bfd_vma) - 2)
 	    {
-	      skip = TRUE;
-	      relocate = TRUE;
+	      skip = true;
+	      relocate = true;
 	    }
 	  else if (abs_symbol_p)
 	    {
@@ -5753,6 +6001,16 @@ bad_ifunc_reloc:
 		       || !(bfd_link_pie (info) || SYMBOLIC_BIND (info, h))
 		       || !h->def_regular))
 	    outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+	  else if (info->enable_dt_relr
+		   && input_section->alignment_power != 0
+		   && rel->r_offset % 2 == 0)
+	    {
+	      /* Don't emit a relative relocation that is packed, only
+		 apply the addend.  */
+	      return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					       contents, rel->r_offset, value,
+					       signed_addend);
+	    }
 	  else
 	    {
 	      int symbol;
@@ -5761,7 +6019,7 @@ bad_ifunc_reloc:
 		 relocate the text and data segments independently,
 		 so the symbol does not matter.  */
 	      symbol = 0;
-	      relocate = globals->no_apply_dynamic_relocs ? FALSE : TRUE;
+	      relocate = !globals->no_apply_dynamic_relocs;
 	      outrel.r_info = ELFNN_R_INFO (symbol, AARCH64_R (RELATIVE));
 	      outrel.r_addend += value;
 	    }
@@ -5799,7 +6057,7 @@ bad_ifunc_reloc:
     case BFD_RELOC_AARCH64_JUMP26:
       {
 	asection *splt = globals->root.splt;
-	bfd_boolean via_plt_p =
+	bool via_plt_p =
 	  splt != NULL && h != NULL && h->plt.offset != (bfd_vma) - 1;
 
 	/* A call to an undefined weak symbol is converted to a jump to
@@ -5847,7 +6105,7 @@ bad_ifunc_reloc:
       value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
 						   place, value,
 						   signed_addend, weak_undef_p);
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       break;
 
     case BFD_RELOC_AARCH64_16_PCREL:
@@ -5867,7 +6125,7 @@ bad_ifunc_reloc:
       if (bfd_link_pic (info)
 	  && (input_section->flags & SEC_ALLOC) != 0
 	  && (input_section->flags & SEC_READONLY) != 0
-	  && !SYMBOL_REFERENCES_LOCAL (info, h))
+	  && !_bfd_elf_symbol_refs_local_p (h, info, 1))
 	{
 	  int howto_index = bfd_r_type - BFD_RELOC_AARCH64_RELOC_START;
 
@@ -5881,6 +6139,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 +6163,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 +6178,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);
@@ -5922,7 +6195,7 @@ bad_ifunc_reloc:
       if (globals->root.sgot == NULL)
 	BFD_ASSERT (h != NULL);
 
-      relative_reloc = FALSE;
+      relative_reloc = false;
       if (h != NULL)
 	{
 	  bfd_vma addend = 0;
@@ -5938,7 +6211,7 @@ bad_ifunc_reloc:
 	      && h->root.type != bfd_link_hash_undefweak
 	      && bfd_link_pic (info)
 	      && !symbol_got_offset_mark_p (input_bfd, h, r_symndx))
-	    relative_reloc = TRUE;
+	    relative_reloc = true;
 
 	  value = aarch64_calculate_got_entry_vma (h, globals, info, value,
 						   output_bfd,
@@ -5987,7 +6260,7 @@ bad_ifunc_reloc:
 	       base address.  So, we need to generate a R_AARCH64_RELATIVE reloc
 	       for dynamic linker.  */
 	    if (bfd_link_pic (info))
-	      relative_reloc = TRUE;
+	      relative_reloc = true;
 
 	    symbol_got_offset_mark (input_bfd, h, r_symndx);
 	  }
@@ -6004,7 +6277,8 @@ bad_ifunc_reloc:
 						     addend, weak_undef_p);
       }
 
-      if (relative_reloc)
+      /* Emit relative relocations, but not if they are packed (DT_RELR).  */
+      if (relative_reloc && !info->enable_dt_relr)
 	{
 	  asection *s;
 	  Elf_Internal_Rela outrel;
@@ -6040,7 +6314,7 @@ bad_ifunc_reloc:
       value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
 						   place, value,
 						   0, weak_undef_p);
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       break;
 
     case BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC:
@@ -6054,7 +6328,7 @@ bad_ifunc_reloc:
       value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
 						   place, value,
 						   0, weak_undef_p);
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       break;
 
     case BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_HI12:
@@ -6128,7 +6402,7 @@ bad_ifunc_reloc:
 	value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
 						     place, value,
 						     def_value, weak_undef_p);
-        *unresolved_reloc_p = FALSE;
+        *unresolved_reloc_p = false;
 	break;
       }
 
@@ -6148,7 +6422,7 @@ bad_ifunc_reloc:
       value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
 						   place, value,
 						   0, weak_undef_p);
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       break;
 
     case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
@@ -6167,7 +6441,7 @@ bad_ifunc_reloc:
       value = _bfd_aarch64_elf_resolve_relocation (input_bfd, bfd_r_type,
 						   place, value,
 						   0, weak_undef_p);
-      *unresolved_reloc_p = FALSE;
+      *unresolved_reloc_p = false;
       break;
 
     default:
@@ -6227,7 +6501,7 @@ struct erratum_843419_branch_to_stub_cle
    section inside IN_ARG matches.  The clearing is done by setting the
    stub_type to none.  */
 
-static bfd_boolean
+static bool
 _bfd_aarch64_erratum_843419_clear_stub (struct bfd_hash_entry *gen_entry,
 					void *in_arg)
 {
@@ -6239,7 +6513,7 @@ _bfd_aarch64_erratum_843419_clear_stub (
   if (stub_entry->target_section != data->output_section
       || stub_entry->stub_type != aarch64_stub_erratum_843419_veneer
       || stub_entry->adrp_offset != data->adrp_offset)
-    return TRUE;
+    return true;
 
   /* Change the stub type instead of removing the entry, removing from the hash
      table would be slower and we have already reserved the memory for the entry
@@ -6249,7 +6523,7 @@ _bfd_aarch64_erratum_843419_clear_stub (
 
   /* We're done and there could have been only one matching stub at that
      particular offset, so abort further traversal.  */
-  return FALSE;
+  return false;
 }
 
 /* TLS Relaxations may relax an adrp sequence that matches the erratum 843419
@@ -6284,9 +6558,11 @@ static bfd_reloc_status_type
 elfNN_aarch64_tls_relax (struct elf_aarch64_link_hash_table *globals,
 			 bfd *input_bfd, asection *input_section,
 			 bfd_byte *contents, Elf_Internal_Rela *rel,
-			 struct elf_link_hash_entry *h)
+			 struct elf_link_hash_entry *h,
+			 struct bfd_link_info *info)
 {
-  bfd_boolean is_local = h == NULL;
+  bool local_exec = bfd_link_executable (info)
+    && SYMBOL_REFERENCES_LOCAL (info, h);
   unsigned int r_type = ELFNN_R_TYPE (rel->r_info);
   unsigned long insn;
 
@@ -6296,7 +6572,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
     {
     case BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21:
     case BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21:
-      if (is_local)
+      if (local_exec)
 	{
 	  /* GD->LE relaxation:
 	     adrp x0, :tlsgd:var     =>   movz R0, :tprel_g1:var
@@ -6325,7 +6601,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
       break;
 
     case BFD_RELOC_AARCH64_TLSDESC_LD_PREL19:
-      if (is_local)
+      if (local_exec)
 	{
 	  /* Tiny TLSDESC->LE relaxation:
 	     ldr   x1, :tlsdesc:var	 =>  movz  R0, #:tprel_g1:var
@@ -6367,7 +6643,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
 	}
 
     case BFD_RELOC_AARCH64_TLSGD_ADR_PREL21:
-      if (is_local)
+      if (local_exec)
 	{
 	  /* Tiny GD->LE relaxation:
 	     adr x0, :tlsgd:var	     =>	  mrs  x1, tpidr_el0
@@ -6419,7 +6695,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
       BFD_ASSERT (rel->r_offset + 12 == rel[2].r_offset);
       BFD_ASSERT (ELFNN_R_TYPE (rel[2].r_info) == AARCH64_R (CALL26));
 
-      if (is_local)
+      if (local_exec)
 	{
 	  /* Large GD->LE relaxation:
 	     movz x0, #:tlsgd_g1:var	=> movz x0, #:tprel_g2:var, lsl #32
@@ -6463,7 +6739,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
       return bfd_reloc_continue;
 
     case BFD_RELOC_AARCH64_TLSDESC_LDNN_LO12_NC:
-      if (is_local)
+      if (local_exec)
 	{
 	  /* GD->LE relaxation:
 	     ldr xd, [x0, #:tlsdesc_lo12:var]   =>   movk x0, :tprel_g0_nc:var
@@ -6484,7 +6760,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
 	}
 
     case BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC:
-      if (is_local)
+      if (local_exec)
 	{
 	  /* GD->LE relaxation
 	     add  x0, #:tlsgd_lo12:var	=> movk R0, :tprel_g0_nc:var
@@ -6537,7 +6813,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
       return bfd_reloc_ok;
 
     case BFD_RELOC_AARCH64_TLSDESC_LDR:
-      if (is_local)
+      if (local_exec)
 	{
 	  /* GD->LE relaxation:
 	     ldr xd, [gp, xn]   =>   movk R0, #:tprel_g0_nc:var
@@ -6564,12 +6840,12 @@ elfNN_aarch64_tls_relax (struct elf_aarc
 	 movk xd, #:tlsdesc_off_g0_nc:var => movk Rd, #:gottprel_g0_nc:var
 
 	 Where R is x for lp64 mode, and w for ILP32 mode.  */
-      if (is_local)
+      if (local_exec)
 	bfd_putl32 (ldr_hw_R0, contents + rel->r_offset);
       return bfd_reloc_continue;
 
     case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
-      if (is_local)
+      if (local_exec)
 	{
 	  /* GD->LE relaxation:
 	     movz xd, #:tlsdesc_off_g1:var => movz R0, #:tprel_g2:var, lsl #32
@@ -6594,7 +6870,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
 	 adrp xd, :gottprel:var   =>   movz Rd, :tprel_g1:var
 
 	 Where R is x for lp64 mode, and w for ILP32 mode.  */
-      if (is_local)
+      if (local_exec)
 	{
 	  insn = bfd_getl32 (contents + rel->r_offset);
 	  bfd_putl32 (movz_R0 | (insn & 0x1f), contents + rel->r_offset);
@@ -6609,7 +6885,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
 	 ldr  xd, [xm, #:gottprel_lo12:var]   =>   movk Rd, :tprel_g0_nc:var
 
 	 Where R is x for lp64 mode, and w for ILP32 mode.  */
-      if (is_local)
+      if (local_exec)
 	{
 	  insn = bfd_getl32 (contents + rel->r_offset);
 	  bfd_putl32 (movk_R0 | (insn & 0x1f), contents + rel->r_offset);
@@ -6622,7 +6898,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
 	 bl   __tls_get_addr => add R0, R0, TCB_SIZE
 
 	 Where R is x for lp64 mode, and w for ilp32 mode.  */
-      if (is_local)
+      if (local_exec)
 	{
 	  BFD_ASSERT (rel->r_offset + 4 == rel[1].r_offset);
 	  BFD_ASSERT (ELFNN_R_TYPE (rel[1].r_info) == AARCH64_R (CALL26));
@@ -6639,7 +6915,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
       /* LD->LE relaxation (small):
 	 adrp  x0, :tlsldm:x       => mrs x0, tpidr_el0
        */
-      if (is_local)
+      if (local_exec)
 	{
 	  bfd_putl32 (0xd53bd040, contents + rel->r_offset);
 	  return bfd_reloc_ok;
@@ -6652,7 +6928,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
 	 bl   __tls_get_addr       => nop
 
 	 Where R is x for lp64 mode, and w for ilp32 mode.  */
-      if (is_local)
+      if (local_exec)
 	{
 	  BFD_ASSERT (rel->r_offset + 4 == rel[1].r_offset);
 	  BFD_ASSERT (ELFNN_R_TYPE (rel[1].r_info) == AARCH64_R (CALL26));
@@ -6674,7 +6950,7 @@ elfNN_aarch64_tls_relax (struct elf_aarc
 
 /* Relocate an AArch64 ELF section.  */
 
-static bfd_boolean
+static int
 elfNN_aarch64_relocate_section (bfd *output_bfd,
 				struct bfd_link_info *info,
 				bfd *input_bfd,
@@ -6690,7 +6966,7 @@ elfNN_aarch64_relocate_section (bfd *out
   Elf_Internal_Rela *relend;
   const char *name;
   struct elf_aarch64_link_hash_table *globals;
-  bfd_boolean save_addend = FALSE;
+  bool save_addend = false;
   bfd_vma addend = 0;
 
   globals = elf_aarch64_hash_table (info);
@@ -6714,7 +6990,7 @@ elfNN_aarch64_relocate_section (bfd *out
       bfd_reloc_status_type r;
       arelent bfd_reloc;
       char sym_type;
-      bfd_boolean unresolved_reloc = FALSE;
+      bool unresolved_reloc = false;
       char *error_message = NULL;
 
       r_symndx = ELFNN_R_SYM (rel->r_info);
@@ -6740,14 +7016,18 @@ elfNN_aarch64_relocate_section (bfd *out
 
 	  /* An object file might have a reference to a local
 	     undefined symbol.  This is a daft object file, but we
-	     should at least do something about it.  */
+	     should at least do something about it.  NONE and NULL
+	     relocations do not use the symbol and are explicitly
+	     allowed to use an undefined one, so allow those.
+	     Likewise for relocations against STN_UNDEF.  */
 	  if (r_type != R_AARCH64_NONE && r_type != R_AARCH64_NULL
+	      && r_symndx != STN_UNDEF
 	      && bfd_is_und_section (sec)
 	      && ELF_ST_BIND (sym->st_info) != STB_WEAK)
 	    (*info->callbacks->undefined_symbol)
 	      (info, bfd_elf_string_from_elf_section
 	       (input_bfd, symtab_hdr->sh_link, sym->st_name),
-	       input_bfd, input_section, rel->r_offset, TRUE);
+	       input_bfd, input_section, rel->r_offset, true);
 
 	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
 
@@ -6756,7 +7036,7 @@ elfNN_aarch64_relocate_section (bfd *out
 	      && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
 	    {
 	      h = elfNN_aarch64_get_local_sym_hash (globals, input_bfd,
-						    rel, FALSE);
+						    rel, false);
 	      if (h == NULL)
 		abort ();
 
@@ -6767,7 +7047,7 @@ elfNN_aarch64_relocate_section (bfd *out
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -6779,7 +7059,8 @@ elfNN_aarch64_relocate_section (bfd *out
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_AARCH64_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -6826,7 +7107,7 @@ elfNN_aarch64_relocate_section (bfd *out
 	  BFD_ASSERT (howto != NULL);
 	  r_type = howto->type;
 	  r = elfNN_aarch64_tls_relax (globals, input_bfd, input_section,
-				       contents, rel, h);
+				       contents, rel, h, info);
 	  unresolved_reloc = 0;
 	}
       else
@@ -6839,9 +7120,9 @@ elfNN_aarch64_relocate_section (bfd *out
 	  && rel->r_offset == rel[1].r_offset
 	  && ELFNN_R_TYPE (rel[1].r_info) != R_AARCH64_NONE
 	  && ELFNN_R_TYPE (rel[1].r_info) != R_AARCH64_NULL)
-	save_addend = TRUE;
+	save_addend = true;
       else
-	save_addend = FALSE;
+	save_addend = false;
 
       if (r == bfd_reloc_continue)
 	r = elfNN_aarch64_final_link_relocate (howto, input_bfd, output_bfd,
@@ -6862,7 +7143,7 @@ elfNN_aarch64_relocate_section (bfd *out
 	case BFD_RELOC_AARCH64_TLSLD_ADR_PREL21:
 	  if (! symbol_got_offset_mark_p (input_bfd, h, r_symndx))
 	    {
-	      bfd_boolean need_relocs = FALSE;
+	      bool need_relocs = false;
 	      bfd_byte *loc;
 	      int indx;
 	      bfd_vma off;
@@ -6956,7 +7237,7 @@ elfNN_aarch64_relocate_section (bfd *out
 	case BFD_RELOC_AARCH64_TLSIE_MOVW_GOTTPREL_G1:
 	  if (! symbol_got_offset_mark_p (input_bfd, h, r_symndx))
 	    {
-	      bfd_boolean need_relocs = FALSE;
+	      bool need_relocs = false;
 	      bfd_byte *loc;
 	      int indx;
 	      bfd_vma off;
@@ -7012,7 +7293,7 @@ elfNN_aarch64_relocate_section (bfd *out
 	case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
 	  if (! symbol_tlsdesc_got_offset_mark_p (input_bfd, h, r_symndx))
 	    {
-	      bfd_boolean need_relocs = FALSE;
+	      bool need_relocs = false;
 	      int indx = h && h->dynindx != -1 ? h->dynindx : 0;
 	      bfd_vma off = symbol_tlsdesc_got_offset (input_bfd, h, r_symndx);
 
@@ -7082,7 +7363,7 @@ elfNN_aarch64_relocate_section (bfd *out
 	       "unresolvable %s relocation against symbol `%s'"),
 	     input_bfd, input_section, (uint64_t) rel->r_offset, howto->name,
 	     h->root.root.string);
-	  return FALSE;
+	  return false;
 	}
 
       if (r != bfd_reloc_ok && r != bfd_reloc_continue)
@@ -7104,7 +7385,7 @@ elfNN_aarch64_relocate_section (bfd *out
 		     _("too many GOT entries for -fpic, "
 		       "please recompile with -fPIC"),
 		     name, input_bfd, input_section, rel->r_offset);
-		  return FALSE;
+		  return false;
 		}
 	      /* Overflow can occur when a variable is referenced with a type
 		 that has a larger alignment than the type with which it was
@@ -7119,7 +7400,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
@@ -7138,7 +7419,7 @@ alignment than was declared where it was
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -7169,12 +7450,12 @@ alignment than was declared where it was
 	addend = 0;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the right machine number.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_object_p (bfd *abfd)
 {
 #if ARCH_SIZE == 32
@@ -7182,12 +7463,12 @@ elfNN_aarch64_object_p (bfd *abfd)
 #else
   bfd_default_set_arch_mach (abfd, bfd_arch_aarch64, bfd_mach_aarch64);
 #endif
-  return TRUE;
+  return true;
 }
 
 /* Function to keep AArch64 specific flags in the ELF header.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_set_private_flags (bfd *abfd, flagword flags)
 {
   if (elf_flags_init (abfd) && elf_elfheader (abfd)->e_flags != flags)
@@ -7196,30 +7477,30 @@ elfNN_aarch64_set_private_flags (bfd *ab
   else
     {
       elf_elfheader (abfd)->e_flags = flags;
-      elf_flags_init (abfd) = TRUE;
+      elf_flags_init (abfd) = true;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword out_flags;
   flagword in_flags;
-  bfd_boolean flags_compatible = TRUE;
+  bool flags_compatible = true;
   asection *sec;
 
   /* Check if we have the same endianess.  */
   if (!_bfd_generic_verify_endian_match (ibfd, info))
-    return FALSE;
+    return false;
 
   if (!is_aarch64_elf (ibfd) || !is_aarch64_elf (obfd))
-    return TRUE;
+    return true;
 
   /* The input BFD must have had its flags initialised.  */
   /* The following seems bogus to me -- The flags are initialized in
@@ -7240,9 +7521,9 @@ elfNN_aarch64_merge_private_bfd_data (bf
 	 to the default values.  */
       if (bfd_get_arch_info (ibfd)->the_default
 	  && elf_elfheader (ibfd)->e_flags == 0)
-	return TRUE;
+	return true;
 
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -7250,12 +7531,12 @@ elfNN_aarch64_merge_private_bfd_data (bf
 	return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
 				  bfd_get_mach (ibfd));
 
-      return TRUE;
+      return true;
     }
 
   /* Identical flags must be compatible.  */
   if (in_flags == out_flags)
-    return TRUE;
+    return true;
 
   /* Check to see if the input BFD actually contains any sections.  If
      not, its flags may not have been initialised either, but it
@@ -7269,22 +7550,22 @@ elfNN_aarch64_merge_private_bfd_data (bf
      in data sections ?  */
   if (!(ibfd->flags & DYNAMIC))
     {
-      bfd_boolean null_input_bfd = TRUE;
-      bfd_boolean only_data_sections = TRUE;
+      bool null_input_bfd = true;
+      bool only_data_sections = true;
 
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
 	{
 	  if ((bfd_section_flags (sec)
 	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
-	    only_data_sections = FALSE;
+	    only_data_sections = false;
 
-	  null_input_bfd = FALSE;
+	  null_input_bfd = false;
 	  break;
 	}
 
       if (null_input_bfd || only_data_sections)
-	return TRUE;
+	return true;
     }
 
   return flags_compatible;
@@ -7292,7 +7573,7 @@ elfNN_aarch64_merge_private_bfd_data (bf
 
 /* Display the flags field.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -7308,56 +7589,39 @@ elfNN_aarch64_print_private_bfd_data (bf
      containing valid data.  */
 
   /* xgettext:c-format */
-  fprintf (file, _("private flags = %lx:"), elf_elfheader (abfd)->e_flags);
+  fprintf (file, _("private flags = 0x%lx:"), elf_elfheader (abfd)->e_flags);
 
   if (flags)
-    fprintf (file, _("<Unrecognised flag bits set>"));
+    fprintf (file, _(" <Unrecognised flag bits set>"));
 
   fputc ('\n', file);
 
-  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;
 }
 
 /* Return true if we need copy relocation against EH.  */
 
-static bfd_boolean
+static bool
 need_copy_relocation_p (struct elf_aarch64_link_hash_entry *eh)
 {
   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
 	 does not support.  */
       if (p->pc_count)
-	return TRUE;
+	return true;
 
       s = p->sec->output_section;
       /* Need copy relocation if it's against read-only section.  */
       if (s != NULL && (s->flags & SEC_READONLY) != 0)
-	return TRUE;
+	return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -7366,7 +7630,7 @@ need_copy_relocation_p (struct elf_aarch
    change the definition to something the rest of the link can
    understand.	*/
 
-static bfd_boolean
+static bool
 elfNN_aarch64_adjust_dynamic_symbol (struct bfd_link_info *info,
 				     struct elf_link_hash_entry *h)
 {
@@ -7393,7 +7657,7 @@ elfNN_aarch64_adjust_dynamic_symbol (str
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     /* Otherwise, reset to -1.  */
@@ -7411,7 +7675,7 @@ elfNN_aarch64_adjust_dynamic_symbol (str
       h->root.u.def.value = def->root.u.def.value;
       if (ELIMINATE_COPY_RELOCS || info->nocopyreloc)
 	h->non_got_ref = def->non_got_ref;
-      return TRUE;
+      return true;
     }
 
   /* If we are creating a shared library, we must presume that the
@@ -7419,18 +7683,18 @@ elfNN_aarch64_adjust_dynamic_symbol (str
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   if (ELIMINATE_COPY_RELOCS)
@@ -7442,7 +7706,7 @@ elfNN_aarch64_adjust_dynamic_symbol (str
       if (!need_copy_relocation_p (eh))
 	{
 	  h->non_got_ref = 0;
-	  return TRUE;
+	  return true;
 	}
     }
 
@@ -7481,7 +7745,7 @@ elfNN_aarch64_adjust_dynamic_symbol (str
 
 }
 
-static bfd_boolean
+static bool
 elfNN_aarch64_allocate_local_symbols (bfd *abfd, unsigned number)
 {
   struct elf_aarch64_local_symbol *locals;
@@ -7491,15 +7755,15 @@ elfNN_aarch64_allocate_local_symbols (bf
       locals = (struct elf_aarch64_local_symbol *)
 	bfd_zalloc (abfd, number * sizeof (struct elf_aarch64_local_symbol));
       if (locals == NULL)
-	return FALSE;
+	return false;
       elf_aarch64_locals (abfd) = locals;
     }
-  return TRUE;
+  return true;
 }
 
 /* Create the .got section to hold the global offset table.  */
 
-static bfd_boolean
+static bool
 aarch64_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
@@ -7510,7 +7774,7 @@ aarch64_elf_create_got_section (bfd *abf
 
   /* This function may be called more than once.  */
   if (htab->sgot != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
 
@@ -7521,13 +7785,13 @@ aarch64_elf_create_got_section (bfd *abf
 					   | SEC_READONLY));
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->srelgot = s;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->sgot = s;
   htab->sgot->size += GOT_ENTRY_SIZE;
 
@@ -7541,7 +7805,7 @@ aarch64_elf_create_got_section (bfd *abf
 				       "_GLOBAL_OFFSET_TABLE_");
       elf_hash_table (info)->hgot = h;
       if (h == NULL)
-	return FALSE;
+	return false;
     }
 
   if (bed->want_got_plt)
@@ -7549,19 +7813,19 @@ aarch64_elf_create_got_section (bfd *abf
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->sgotplt = s;
     }
 
   /* The first bit of the global offset table is the header.  */
   s->size += bed->got_header_size;
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			    asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -7574,7 +7838,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
   struct elf_aarch64_link_hash_table *htab;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   BFD_ASSERT (is_aarch64_elf (abfd));
 
@@ -7600,24 +7864,24 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 	{
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"), abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       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;
+	    return false;
 
 	  /* Check relocation against local STT_GNU_IFUNC symbol.  */
 	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
 	      h = elfNN_aarch64_get_local_sym_hash (htab, abfd, rel,
-						    TRUE);
+						    true);
 	      if (h == NULL)
-		return FALSE;
+		return false;
 
 	      /* Fake a STT_GNU_IFUNC symbol.  */
 	      h->type = STT_GNU_IFUNC;
@@ -7653,7 +7917,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 		htab->root.dynobj = abfd;
 
 	      if (! aarch64_elf_create_got_section (htab->root.dynobj, info))
-		return FALSE;
+		return false;
 
 	      BFD_ASSERT (h == htab->root.hgot);
 	    }
@@ -7684,7 +7948,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 	      if (htab->root.dynobj == NULL)
 		htab->root.dynobj = abfd;
 	      if (!_bfd_elf_create_ifunc_sections (htab->root.dynobj, info))
-		return FALSE;
+		return false;
 	      break;
 	    }
 
@@ -7718,7 +7982,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 		 abfd, elfNN_aarch64_howto_table[howto_index].name,
 		 (h) ? h->root.root.string : "a local symbol");
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  else
 	    break;
@@ -7737,7 +8001,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 		 abfd, elfNN_aarch64_howto_table[howto_index].name,
 		 (h) ? h->root.root.string : "a local symbol");
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  /* Fall through.  */
 
@@ -7812,19 +8076,17 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 		  htab->root.dynobj = abfd;
 
 		sreloc = _bfd_elf_make_dynamic_reloc_section
-		  (sec, htab->root.dynobj, LOG_FILE_ALIGN, abfd, /*rela? */ TRUE);
+		  (sec, htab->root.dynobj, LOG_FILE_ALIGN, abfd, /*rela? */ true);
 
 		if (sreloc == NULL)
-		  return FALSE;
+		  return false;
 	      }
 
 	    /* If this is a global symbol, we count the number of
 	       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,10 +8097,10 @@ 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;
+		  return false;
 
 		s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		if (s == NULL)
@@ -7853,11 +8115,11 @@ 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)
-		  return FALSE;
+		  return false;
 		p->next = *head;
 		*head = p;
 		p->sec = sec;
@@ -7920,7 +8182,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 
 		if (!elfNN_aarch64_allocate_local_symbols
 		    (abfd, symtab_hdr->sh_info))
-		  return FALSE;
+		  return false;
 
 		locals = elf_aarch64_locals (abfd);
 		BFD_ASSERT (r_symndx < symtab_hdr->sh_info);
@@ -7963,7 +8225,7 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 	    if (htab->root.dynobj == NULL)
 	      htab->root.dynobj = abfd;
 	    if (! aarch64_elf_create_got_section (htab->root.dynobj, info))
-	      return FALSE;
+	      return false;
 	    break;
 	  }
 
@@ -7986,12 +8248,12 @@ elfNN_aarch64_check_relocs (bfd *abfd, s
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Treat mapping symbols as special target symbols.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_is_target_special_symbol (bfd *abfd ATTRIBUTE_UNUSED,
 					asymbol *sym)
 {
@@ -8008,17 +8270,28 @@ elfNN_aarch64_maybe_function_sym (const
 				  bfd_vma *code_off)
 {
   bfd_size_type size;
+  elf_symbol_type * elf_sym = (elf_symbol_type *) sym;
 
   if ((sym->flags & (BSF_SECTION_SYM | BSF_FILE | BSF_OBJECT
 		     | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC)) != 0
       || sym->section != sec)
     return 0;
 
+  size = (sym->flags & BSF_SYNTHETIC) ? 0 : elf_sym->internal_elf_sym.st_size;
+
   if (!(sym->flags & BSF_SYNTHETIC))
-    switch (ELF_ST_TYPE (((elf_symbol_type *) sym)->internal_elf_sym.st_info))
+    switch (ELF_ST_TYPE (elf_sym->internal_elf_sym.st_info))
       {
-	case STT_FUNC:
 	case STT_NOTYPE:
+	  /* Ignore symbols created by the annobin plugin for gcc and clang.
+	     These symbols are hidden, local, notype and have a size of 0.  */
+	  if (size == 0
+	      && sym->flags & BSF_LOCAL
+	      && ELF_ST_VISIBILITY (elf_sym->internal_elf_sym.st_other) == STV_HIDDEN)
+	    return 0;
+	  /* Fall through.  */
+	case STT_FUNC:
+	  /* FIXME: Allow STT_GNU_IFUNC as well ?  */
 	  break;
 	default:
 	  return 0;
@@ -8030,21 +8303,18 @@ elfNN_aarch64_maybe_function_sym (const
     return 0;
 
   *code_off = sym->value;
-  size = 0;
-  if (!(sym->flags & BSF_SYNTHETIC))
-    size = ((elf_symbol_type *) sym)->internal_elf_sym.st_size;
-  if (size == 0)
-    size = 1;
-  return size;
+
+  /* Do not return 0 for the function's size.  */
+  return size ? size : 1;
 }
 
-static bfd_boolean
+static bool
 elfNN_aarch64_find_inliner_info (bfd *abfd,
 				 const char **filename_ptr,
 				 const char **functionname_ptr,
 				 unsigned int *line_ptr)
 {
-  bfd_boolean found;
+  bool found;
   found = _bfd_dwarf2_find_inliner_info
     (abfd, filename_ptr,
      functionname_ptr, line_ptr, &elf_tdata (abfd)->dwarf2_find_line_info);
@@ -8052,17 +8322,17 @@ elfNN_aarch64_find_inliner_info (bfd *ab
 }
 
 
-static bfd_boolean
+static bool
 elfNN_aarch64_init_file_header (bfd *abfd, struct bfd_link_info *link_info)
 {
   Elf_Internal_Ehdr *i_ehdrp;	/* ELF file header, internal form.  */
 
   if (!_bfd_elf_init_file_header (abfd, link_info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
   i_ehdrp->e_ident[EI_ABIVERSION] = AARCH64_ELF_ABI_VERSION;
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -8118,7 +8388,7 @@ elfNN_aarch64_reloc_type_class (const st
    called when bfd_section_from_shdr finds a section with an unknown
    type.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_section_from_shdr (bfd *abfd,
 				 Elf_Internal_Shdr *hdr,
 				 const char *name, int shindex)
@@ -8134,101 +8404,95 @@ elfNN_aarch64_section_from_shdr (bfd *ab
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-/* A structure used to record a list of sections, independently
-   of the next and prev fields in the asection structure.  */
-typedef struct section_list
+/* Process any AArch64-specific program segment types.  */
+
+static bool
+elfNN_aarch64_section_from_phdr (bfd *abfd ATTRIBUTE_UNUSED,
+				 Elf_Internal_Phdr *hdr,
+				 int hdr_index ATTRIBUTE_UNUSED,
+				 const char *name ATTRIBUTE_UNUSED)
 {
-  asection *sec;
-  struct section_list *next;
-  struct section_list *prev;
-}
-section_list;
+  /* Right now we only handle the PT_AARCH64_MEMTAG_MTE segment type.  */
+  if (hdr == NULL || hdr->p_type != PT_AARCH64_MEMTAG_MTE)
+    return false;
 
-/* Unfortunately we need to keep a list of sections for which
-   an _aarch64_elf_section_data structure has been allocated.  This
-   is because it is possible for functions like elfNN_aarch64_write_section
-   to be called on a section which has had an elf_data_structure
-   allocated for it (and so the used_by_bfd field is valid) but
-   for which the AArch64 extended version of this structure - the
-   _aarch64_elf_section_data structure - has not been allocated.  */
-static section_list *sections_with_aarch64_elf_section_data = NULL;
+  if (hdr->p_filesz > 0)
+    {
+      /* Sections created from memory tag p_type's are always named
+	 "memtag".  This makes it easier for tools (for example, GDB)
+	 to find them.  */
+      asection *newsect = bfd_make_section_anyway (abfd, "memtag");
 
-static void
-record_section_with_aarch64_elf_section_data (asection *sec)
-{
-  struct section_list *entry;
+      if (newsect == NULL)
+	return false;
 
-  entry = bfd_malloc (sizeof (*entry));
-  if (entry == NULL)
-    return;
-  entry->sec = sec;
-  entry->next = sections_with_aarch64_elf_section_data;
-  entry->prev = NULL;
-  if (entry->next != NULL)
-    entry->next->prev = entry;
-  sections_with_aarch64_elf_section_data = entry;
-}
-
-static struct section_list *
-find_aarch64_elf_section_entry (asection *sec)
-{
-  struct section_list *entry;
-  static struct section_list *last_entry = NULL;
-
-  /* This is a short cut for the typical case where the sections are added
-     to the sections_with_aarch64_elf_section_data list in forward order and
-     then looked up here in backwards order.  This makes a real difference
-     to the ld-srec/sec64k.exp linker test.  */
-  entry = sections_with_aarch64_elf_section_data;
-  if (last_entry != NULL)
-    {
-      if (last_entry->sec == sec)
-	entry = last_entry;
-      else if (last_entry->next != NULL && last_entry->next->sec == sec)
-	entry = last_entry->next;
-    }
+      unsigned int opb = bfd_octets_per_byte (abfd, NULL);
 
-  for (; entry; entry = entry->next)
-    if (entry->sec == sec)
-      break;
+      /* p_vaddr holds the original start address of the tagged memory
+	 range.  */
+      newsect->vma = hdr->p_vaddr / opb;
 
-  if (entry)
-    /* Record the entry prior to this one - it is the entry we are
-       most likely to want to locate next time.  Also this way if we
-       have been called from
-       unrecord_section_with_aarch64_elf_section_data () we will not
-       be caching a pointer that is about to be freed.  */
-    last_entry = entry->prev;
+      /* p_filesz holds the storage size of the packed tags.  */
+      newsect->size = hdr->p_filesz;
+      newsect->filepos = hdr->p_offset;
 
-  return entry;
+      /* p_memsz holds the size of the memory range that contains tags.  The
+	 section's rawsize field is reused for this purpose.  */
+      newsect->rawsize = hdr->p_memsz;
+
+      /* Make sure the section's flags has SEC_HAS_CONTENTS set, otherwise
+	 BFD will return all zeroes when attempting to get contents from this
+	 section.  */
+      newsect->flags |= SEC_HAS_CONTENTS;
+    }
+
+  return true;
 }
 
-static void
-unrecord_section_with_aarch64_elf_section_data (asection *sec)
-{
-  struct section_list *entry;
+/* Implements the bfd_elf_modify_headers hook for aarch64.  */
 
-  entry = find_aarch64_elf_section_entry (sec);
+static bool
+elfNN_aarch64_modify_headers (bfd *abfd,
+			      struct bfd_link_info *info)
+{
+  struct elf_segment_map *m;
+  Elf_Internal_Phdr *p;
 
-  if (entry)
+  for (m = elf_seg_map (abfd); m != NULL; m = m->next)
     {
-      if (entry->prev != NULL)
-	entry->prev->next = entry->next;
-      if (entry->next != NULL)
-	entry->next->prev = entry->prev;
-      if (entry == sections_with_aarch64_elf_section_data)
-	sections_with_aarch64_elf_section_data = entry->next;
-      free (entry);
+      /* We are only interested in the memory tag segment that will be dumped
+	 to a core file.  If we have no memory tags or this isn't a core file we
+	 are dealing with, just skip this segment.  */
+      if (m->p_type != PT_AARCH64_MEMTAG_MTE
+	  || bfd_get_format (abfd) != bfd_core)
+	continue;
+
+      /* For memory tag segments in core files, the size of the file contents
+	 is smaller than the size of the memory range.  Adjust the memory size
+	 accordingly.  The real memory size is held in the section's rawsize
+	 field.  */
+      if (m->count > 0)
+	{
+	  p = elf_tdata (abfd)->phdr;
+	  p += m->idx;
+	  p->p_memsz = m->sections[0]->rawsize;
+	  p->p_flags = 0;
+	  p->p_paddr = 0;
+	  p->p_align = 0;
+	}
     }
+
+  /* Give the generic code a chance to handle the headers.  */
+  return _bfd_elf_modify_headers (abfd, info);
 }
 
 
@@ -8251,7 +8515,7 @@ enum map_symbol_type
 
 /* Output a single mapping symbol.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_output_map_sym (output_arch_syminfo *osi,
 			      enum map_symbol_type type, bfd_vma offset)
 {
@@ -8269,7 +8533,7 @@ elfNN_aarch64_output_map_sym (output_arc
 
 /* Output a single local symbol for a generated stub.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_output_stub_sym (output_arch_syminfo *osi, const char *name,
 			       bfd_vma offset, bfd_vma size)
 {
@@ -8284,7 +8548,7 @@ elfNN_aarch64_output_stub_sym (output_ar
   return osi->func (osi->finfo, name, &sym, osi->sec, NULL) == 1;
 }
 
-static bfd_boolean
+static bool
 aarch64_map_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
 {
   struct elf_aarch64_stub_hash_entry *stub_entry;
@@ -8302,7 +8566,7 @@ aarch64_map_one_stub (struct bfd_hash_en
   /* Ensure this stub is attached to the current section being
      processed.  */
   if (stub_sec != osi->sec)
-    return TRUE;
+    return true;
 
   addr = (bfd_vma) stub_entry->stub_offset;
 
@@ -8313,32 +8577,39 @@ aarch64_map_one_stub (struct bfd_hash_en
     case aarch64_stub_adrp_branch:
       if (!elfNN_aarch64_output_stub_sym (osi, stub_name, addr,
 					  sizeof (aarch64_adrp_branch_stub)))
-	return FALSE;
+	return false;
       if (!elfNN_aarch64_output_map_sym (osi, AARCH64_MAP_INSN, addr))
-	return FALSE;
+	return false;
       break;
     case aarch64_stub_long_branch:
       if (!elfNN_aarch64_output_stub_sym
 	  (osi, stub_name, addr, sizeof (aarch64_long_branch_stub)))
-	return FALSE;
+	return false;
       if (!elfNN_aarch64_output_map_sym (osi, AARCH64_MAP_INSN, addr))
-	return FALSE;
+	return false;
       if (!elfNN_aarch64_output_map_sym (osi, AARCH64_MAP_DATA, addr + 16))
-	return FALSE;
+	return false;
+      break;
+    case aarch64_stub_bti_direct_branch:
+      if (!elfNN_aarch64_output_stub_sym (osi, stub_name, addr,
+	  sizeof (aarch64_bti_direct_branch_stub)))
+	return false;
+      if (!elfNN_aarch64_output_map_sym (osi, AARCH64_MAP_INSN, addr))
+	return false;
       break;
     case aarch64_stub_erratum_835769_veneer:
       if (!elfNN_aarch64_output_stub_sym (osi, stub_name, addr,
 					  sizeof (aarch64_erratum_835769_stub)))
-	return FALSE;
+	return false;
       if (!elfNN_aarch64_output_map_sym (osi, AARCH64_MAP_INSN, addr))
-	return FALSE;
+	return false;
       break;
     case aarch64_stub_erratum_843419_veneer:
       if (!elfNN_aarch64_output_stub_sym (osi, stub_name, addr,
 					  sizeof (aarch64_erratum_843419_stub)))
-	return FALSE;
+	return false;
       if (!elfNN_aarch64_output_map_sym (osi, AARCH64_MAP_INSN, addr))
-	return FALSE;
+	return false;
       break;
     case aarch64_stub_none:
       break;
@@ -8347,12 +8618,12 @@ aarch64_map_one_stub (struct bfd_hash_en
       abort ();
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Output mapping symbols for linker generated sections.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_output_arch_local_syms (bfd *output_bfd,
 				      struct bfd_link_info *info,
 				      void *finfo,
@@ -8365,6 +8636,11 @@ elfNN_aarch64_output_arch_local_syms (bf
   output_arch_syminfo osi;
   struct elf_aarch64_link_hash_table *htab;
 
+  if (info->strip == strip_all
+      && !info->emitrelocations
+      && !bfd_link_relocatable (info))
+    return true;
+
   htab = elf_aarch64_hash_table (info);
 
   osi.finfo = finfo;
@@ -8390,7 +8666,7 @@ elfNN_aarch64_output_arch_local_syms (bf
 
 	  /* The first instruction in a stub is always a branch.  */
 	  if (!elfNN_aarch64_output_map_sym (&osi, AARCH64_MAP_INSN, 0))
-	    return FALSE;
+	    return false;
 
 	  bfd_hash_traverse (&htab->stub_hash_table, aarch64_map_one_stub,
 			     &osi);
@@ -8399,7 +8675,7 @@ elfNN_aarch64_output_arch_local_syms (bf
 
   /* Finally, output mapping symbols for the PLT.  */
   if (!htab->root.splt || htab->root.splt->size == 0)
-    return TRUE;
+    return true;
 
   osi.sec_shndx = _bfd_elf_section_from_bfd_section
     (output_bfd, htab->root.splt->output_section);
@@ -8407,71 +8683,37 @@ elfNN_aarch64_output_arch_local_syms (bf
 
   elfNN_aarch64_output_map_sym (&osi, AARCH64_MAP_INSN, 0);
 
-  return TRUE;
+  return true;
 
 }
 
 /* Allocate target specific section data.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_new_section_hook (bfd *abfd, asection *sec)
 {
-  if (!sec->used_by_bfd)
-    {
-      _aarch64_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
-
-      sdata = bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  _aarch64_elf_section_data *sdata;
 
-  record_section_with_aarch64_elf_section_data (sec);
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
 
 
-static void
-unrecord_section_via_map_over_sections (bfd *abfd ATTRIBUTE_UNUSED,
-					asection *sec,
-					void *ignore ATTRIBUTE_UNUSED)
-{
-  unrecord_section_with_aarch64_elf_section_data (sec);
-}
-
-static bfd_boolean
-elfNN_aarch64_close_and_cleanup (bfd *abfd)
-{
-  if (abfd->sections)
-    bfd_map_over_sections (abfd,
-			   unrecord_section_via_map_over_sections, NULL);
-
-  return _bfd_elf_close_and_cleanup (abfd);
-}
-
-static bfd_boolean
-elfNN_aarch64_bfd_free_cached_info (bfd *abfd)
-{
-  if (abfd->sections)
-    bfd_map_over_sections (abfd,
-			   unrecord_section_via_map_over_sections, NULL);
-
-  return _bfd_free_cached_info (abfd);
-}
-
 /* Create dynamic sections. This is different from the ARM backend in that
    the got, plt, gotplt and their relocation sections are all created in the
    standard part of the bfd elf backend.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_create_dynamic_sections (bfd *dynobj,
 				       struct bfd_link_info *info)
 {
   /* We need to create .got section.  */
   if (!aarch64_elf_create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   return _bfd_elf_create_dynamic_sections (dynobj, info);
 }
@@ -8480,7 +8722,7 @@ elfNN_aarch64_create_dynamic_sections (b
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
@@ -8498,7 +8740,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
      called to copy all relevant data from the generic to the concrete
      symbol instance.  */
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -8510,7 +8752,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
      here if it is defined and referenced in a non-shared object.  */
   if (h->type == STT_GNU_IFUNC
       && h->def_regular)
-    return TRUE;
+    return true;
   else if (htab->root.dynamic_sections_created && h->plt.refcount > 0)
     {
       /* Make sure this symbol is output as a dynamic symbol.
@@ -8519,7 +8761,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (bfd_link_pic (info) || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
@@ -8594,7 +8836,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
 
   if (h->got.refcount > 0)
     {
-      bfd_boolean dyn;
+      bool dyn;
       unsigned got_type = elf_aarch64_hash_entry (h)->got_type;
 
       h->got.offset = (bfd_vma) - 1;
@@ -8607,7 +8849,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (got_type == GOT_UNKNOWN)
@@ -8667,7 +8909,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,8 +8925,24 @@ elfNN_aarch64_allocate_dynrelocs (struct
       h->got.offset = (bfd_vma) - 1;
     }
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
+
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
+    if (eh->def_protected)
+      {
+	/* Disallow copy relocations against protected symbol.  */
+	asection *s = p->sec->output_section;
+	if (s != NULL && (s->flags & SEC_READONLY) != 0)
+	  {
+	    info->callbacks->fatal
+		/* xgettext:c-format */
+		(_ ("%P: %pB: copy relocation against non-copyable "
+		    "protected symbol `%s'\n"),
+		 p->sec->owner, h->root.root.string);
+	    return false;
+	  }
+      }
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -8704,7 +8962,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 +8975,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.  */
@@ -8729,7 +8987,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
 		   && !h->forced_local
 		   && h->root.type == bfd_link_hash_undefweak
 		   && !bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
     }
@@ -8752,7 +9010,7 @@ elfNN_aarch64_allocate_dynrelocs (struct
 	      && !h->forced_local
 	      && h->root.type == bfd_link_hash_undefweak
 	      && !bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 
 	  /* If that succeeded, we know we'll be keeping all the
 	     relocs.  */
@@ -8760,13 +9018,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;
 
@@ -8777,19 +9035,18 @@ elfNN_aarch64_allocate_dynrelocs (struct
       sreloc->size += p->count * RELOC_SIZE (htab);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    ifunc dynamic relocs.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_allocate_ifunc_dynrelocs (struct elf_link_hash_entry *h,
 					void *inf)
 {
   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)
@@ -8801,7 +9058,7 @@ elfNN_aarch64_allocate_ifunc_dynrelocs (
      called to copy all relevant data from the generic to the concrete
      symbol instance.  */
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   if (h->root.type == bfd_link_hash_warning)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
@@ -8809,26 +9066,23 @@ 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,
-					       FALSE);
-  return TRUE;
+					       false);
+  return true;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    local ifunc dynamic relocs.  */
 
-static bfd_boolean
+static int
 elfNN_aarch64_allocate_local_ifunc_dynrelocs (void **slot, void *inf)
 {
   struct elf_link_hash_entry *h
@@ -8844,50 +9098,389 @@ 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.  */
+/* Record a relative relocation that will be emitted packed (DT_RELR).
+   Called after relocation sections are sized, so undo the size accounting
+   for this relocation.  */
+
+static bool
+record_relr (struct elf_aarch64_link_hash_table *htab, asection *sec,
+	     bfd_vma off, asection *sreloc)
+{
+  /* Undo the relocation section size accounting.  */
+  BFD_ASSERT (sreloc->size >= RELOC_SIZE (htab));
+  sreloc->size -= RELOC_SIZE (htab);
+  /* The packing format uses the last bit of the address so that
+     must be aligned.  We don't pack relocations that may not be
+     aligned even though the final output address could end up
+     aligned, to avoid complex sizing logic for a rare case.  */
+  BFD_ASSERT (off % 2 == 0 && sec->alignment_power > 0);
+  if (htab->relr_count >= htab->relr_alloc)
+    {
+      if (htab->relr_alloc == 0)
+	htab->relr_alloc = 4096;
+      else
+	htab->relr_alloc *= 2;
+      htab->relr = bfd_realloc (htab->relr,
+				htab->relr_alloc * sizeof (*htab->relr));
+      if (htab->relr == NULL)
+	return false;
+    }
+  htab->relr[htab->relr_count].sec = sec;
+  htab->relr[htab->relr_count].off = off;
+  htab->relr_count++;
+  return true;
+}
+
+/* Follow elfNN_aarch64_allocate_dynrelocs, but only record relative
+   relocations against the GOT and undo their previous size accounting.  */
 
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
+static bool
+record_relr_dyn_got_relocs (struct elf_link_hash_entry *h, void *inf)
 {
-  asection *sec;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
+  if (h->root.type == bfd_link_hash_warning)
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+  if (h->type == STT_GNU_IFUNC && h->def_regular)
+    return true;
+  if (h->got.refcount <= 0)
+    return true;
+  if (elf_aarch64_hash_entry (h)->got_type != GOT_NORMAL)
+    return true;
 
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
+  struct bfd_link_info *info = (struct bfd_link_info *) inf;
+  struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
+
+  if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+       || h->root.type != bfd_link_hash_undefweak)
+      && bfd_link_pic (info)
+      /* Undefined weak symbol in static PIE resolves to 0 without
+	 any dynamic relocations.  */
+      && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
+    {
+      bool relative_reloc = SYMBOL_REFERENCES_LOCAL (info, h)
+			    && !bfd_is_abs_symbol (&h->root);
+      if (relative_reloc)
+	if (!record_relr (htab, htab->root.sgot, h->got.offset,
+			  htab->root.srelgot))
+	  return false;
+    }
+  return true;
+}
+
+/* Record packed relative relocs against the GOT for local symbols.
+   Undo the size accounting of elfNN_aarch64_late_size_sections.  */
+
+static bool
+record_relr_local_got_relocs (bfd *input_bfd, struct bfd_link_info *info)
+{
+  struct elf_aarch64_local_symbol *locals;
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_aarch64_link_hash_table *htab;
+
+  if (!bfd_link_pic (info))
+    return true;
+
+  locals = elf_aarch64_locals (input_bfd);
+  if (locals == NULL)
+    return true;
+
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+  htab = elf_aarch64_hash_table (info);
+  for (unsigned int i = 0; i < symtab_hdr->sh_info; i++)
+    {
+      bfd_vma off = locals[i].got_offset;
+      if (locals[i].got_refcount <= 0)
+	continue;
+      if ((locals[i].got_type & GOT_NORMAL) == 0)
+	continue;
+
+      /* FIXME: If the local symbol is in SHN_ABS then emitting
+	 a relative relocation is not correct, but it seems to
+	 be wrong in elfNN_aarch64_final_link_relocate too.  */
+      if (!record_relr (htab, htab->root.sgot, off, htab->root.srelgot))
+	return false;
+    }
+  return true;
+}
+
+/* Follows the logic of elfNN_aarch64_relocate_section to decide which
+   relocations will become relative and possible to pack.  Ignore
+   relocations against the GOT, those are handled separately per-symbol.
+   Undo the size accounting of the packed relocations and record them
+   so the relr section can be sized later.  */
+
+static bool
+record_relr_non_got_relocs (bfd *input_bfd, struct bfd_link_info *info,
+			    asection *sec)
+{
+  const Elf_Internal_Rela *relocs;
+  const Elf_Internal_Rela *rel;
+  const Elf_Internal_Rela *rel_end;
+  asection *sreloc;
+  struct elf_aarch64_link_hash_table *htab;
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+
+  if (sec->reloc_count == 0)
+    return true;
+  if ((sec->flags & (SEC_RELOC | SEC_ALLOC | SEC_DEBUGGING))
+      != (SEC_RELOC | SEC_ALLOC))
+    return true;
+  if (sec->alignment_power == 0)
+    return true;
+  if (discarded_section (sec))
+    return true;
+  sreloc = elf_section_data (sec)->sreloc;
+  if (sreloc == NULL)
+    return true;
+  htab = elf_aarch64_hash_table (info);
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+  sym_hashes = elf_sym_hashes (input_bfd);
+  relocs = _bfd_elf_link_info_read_relocs (input_bfd, info, sec, NULL, NULL,
+					   info->keep_memory);
+  BFD_ASSERT (relocs != NULL);
+  rel_end = relocs + sec->reloc_count;
+  for (rel = relocs; rel < rel_end; rel++)
+    {
+      unsigned int r_symndx = ELFNN_R_SYM (rel->r_info);
+      unsigned int r_type = ELFNN_R_TYPE (rel->r_info);
+
+      bfd_reloc_code_real_type bfd_r_type
+	= elfNN_aarch64_bfd_reloc_from_type (input_bfd, r_type);
+      /* Handle relocs that can become R_AARCH64_RELATIVE,
+	 but not ones against the GOT as those are handled
+	 separately per-symbol.  */
+      if (bfd_r_type != BFD_RELOC_AARCH64_NN)
+	continue;
+      /* Can only pack relocation against an aligned address.  */
+      if (rel->r_offset % 2 != 0)
+	continue;
+
+      struct elf_link_hash_entry *h = NULL;
+      asection *def_sec = NULL;
+      bool resolved_to_zero = false;
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  /* A local symbol.  */
+	  Elf_Internal_Sym *isym;
+	  isym = bfd_sym_from_r_symndx (&htab->root.sym_cache,
+					input_bfd, r_symndx);
+	  BFD_ASSERT (isym != NULL);
+	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
+	    continue;
+	  def_sec = bfd_section_from_elf_index (input_bfd, isym->st_shndx);
+	}
+      else
+	{
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+	  /* Filter out symbols that cannot have a relative reloc.  */
+	  if (h->dyn_relocs == NULL)
+	    continue;
+	  if (bfd_is_abs_symbol (&h->root))
+	    continue;
+	  if (h->type == STT_GNU_IFUNC)
+	    continue;
+
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    def_sec = h->root.u.def.section;
+	  resolved_to_zero = UNDEFWEAK_NO_DYNAMIC_RELOC (info, h);
+	}
+      if (def_sec != NULL && discarded_section (def_sec))
+	continue;
+      /* Same logic as in elfNN_aarch64_final_link_relocate.
+	 Except conditionals trimmed that cannot result a reltive reloc.  */
+      if (bfd_link_pic (info)
+	  && (h == NULL
+	      || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		  && !resolved_to_zero)
+	      || h->root.type != bfd_link_hash_undefweak))
+	{
+	  if (h != NULL
+	      && h->dynindx != -1
+	      && (!(bfd_link_pie (info) || SYMBOLIC_BIND (info, h))
+		  || !h->def_regular))
+	    continue;
+	  if (!record_relr (htab, sec, rel->r_offset, sreloc))
+	    return false;
+	}
+    }
+  return true;
+}
+
+static int
+cmp_relr_addr (const void *p, const void *q)
+{
+  const bfd_vma *a = p;
+  const bfd_vma *b = q;
+  return *a < *b ? -1 : *a > *b ? 1 : 0;
+}
+
+/* Produce a malloc'd sorted array of reloc addresses in htab->relr_sorted.
+   Returns false on allocation failure.  */
+
+static bool
+sort_relr (struct bfd_link_info *info,
+	   struct elf_aarch64_link_hash_table *htab)
+{
+  if (htab->relr_count == 0)
+    return true;
+
+  bfd_vma *addr = htab->relr_sorted;
+  if (addr == NULL)
+    {
+      addr = bfd_malloc (htab->relr_count * sizeof (*addr));
+      if (addr == NULL)
+	return false;
+      htab->relr_sorted = addr;
+    }
+
+  for (bfd_size_type i = 0; i < htab->relr_count; i++)
     {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
+      bfd_vma off = _bfd_elf_section_offset (info->output_bfd, info,
+					     htab->relr[i].sec,
+					     htab->relr[i].off);
+      addr[i] = htab->relr[i].sec->output_section->vma
+		+ htab->relr[i].sec->output_offset
+		+ off;
+    }
+  qsort (addr, htab->relr_count, sizeof (*addr), cmp_relr_addr);
+  return true;
+}
 
-      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);
+/* Size of a relr entry and a relocated location.  */
+#define RELR_SZ (ARCH_SIZE / 8)
+/* Number of consecutive locations a relr bitmap entry references.  */
+#define RELR_N (ARCH_SIZE - 1)
 
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
+/* Size .relr.dyn whenever the layout changes, the number of packed
+   relocs are unchanged but the packed representation can.  */
+
+bool
+elfNN_aarch64_size_relative_relocs (struct bfd_link_info *info,
+				   bool *need_layout)
+{
+  struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
+  asection *srelrdyn = htab->root.srelrdyn;
+  *need_layout = false;
+
+  if (!sort_relr (info, htab))
+    return false;
+  bfd_vma *addr = htab->relr_sorted;
+
+  BFD_ASSERT (srelrdyn != NULL);
+  bfd_size_type oldsize = srelrdyn->size;
+  srelrdyn->size = 0;
+  for (bfd_size_type i = 0; i < htab->relr_count; )
+    {
+      bfd_vma base = addr[i];
+      i++;
+      srelrdyn->size += RELR_SZ;
+      base += RELR_SZ;
+      for (;;)
+	{
+	  bfd_size_type start_i = i;
+	  while (i < htab->relr_count
+		 && addr[i] - base < RELR_N * RELR_SZ
+		 && (addr[i] - base) % RELR_SZ == 0)
+	    i++;
+	  if (i == start_i)
+	    break;
+	  srelrdyn->size += RELR_SZ;
+	  base += RELR_N * RELR_SZ;
+	}
     }
-  return TRUE;
+  if (srelrdyn->size != oldsize)
+    {
+      *need_layout = true;
+      /* Stop after a few iterations in case the layout does not converge,
+	 we can do this when the size would shrink.  */
+      if (htab->relr_layout_iter++ > 5 && srelrdyn->size < oldsize)
+	{
+	  srelrdyn->size = oldsize;
+	  *need_layout = false;
+	}
+    }
+  return true;
+}
+
+/* Emit the .relr.dyn section after it is sized and the layout is fixed.  */
+
+bool
+elfNN_aarch64_finish_relative_relocs (struct bfd_link_info *info)
+{
+  struct elf_aarch64_link_hash_table *htab = elf_aarch64_hash_table (info);
+  asection *srelrdyn = htab->root.srelrdyn;
+  bfd *dynobj = htab->root.dynobj;
+
+  if (srelrdyn == NULL || srelrdyn->size == 0)
+    return true;
+  srelrdyn->contents = bfd_alloc (dynobj, srelrdyn->size);
+  if (srelrdyn->contents == NULL)
+    return false;
+  srelrdyn->alloced = 1;
+  bfd_vma *addr = htab->relr_sorted;
+  bfd_byte *loc = srelrdyn->contents;
+  for (bfd_size_type i = 0; i < htab->relr_count; )
+    {
+      bfd_vma base = addr[i];
+      i++;
+      bfd_put_NN (dynobj, base, loc);
+      loc += RELR_SZ;
+      base += RELR_SZ;
+      for (;;)
+	{
+	  bfd_vma bits = 0;
+	  while (i < htab->relr_count)
+	    {
+	      bfd_vma delta = addr[i] - base;
+	      if (delta >= RELR_N * RELR_SZ || delta % RELR_SZ != 0)
+		break;
+	      bits |= (bfd_vma) 1 << (delta / RELR_SZ);
+	      i++;
+	    }
+	  if (bits == 0)
+	    break;
+	  bfd_put_NN (dynobj, (bits << 1) | 1, loc);
+	  loc += RELR_SZ;
+	  base += RELR_N * RELR_SZ;
+	}
+    }
+  free (addr);
+  htab->relr_sorted = NULL;
+  /* Pad any excess with 1's, a do-nothing encoding.  */
+  while (loc < srelrdyn->contents + srelrdyn->size)
+    {
+      bfd_put_NN (dynobj, 1, loc);
+      loc += RELR_SZ;
+    }
+  return true;
 }
 
 /* This is the most important function of all . Innocuosly named
    though !  */
 
-static bfd_boolean
-elfNN_aarch64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				     struct bfd_link_info *info)
+static bool
+elfNN_aarch64_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+				  struct bfd_link_info *info)
 {
   struct elf_aarch64_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
 
   htab = elf_aarch64_hash_table ((info));
   dynobj = htab->root.dynobj;
 
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (htab->root.dynamic_sections_created)
     {
@@ -8898,6 +9491,7 @@ elfNN_aarch64_size_dynamic_sections (bfd
 	    abort ();
 	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
 	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -8920,8 +9514,7 @@ elfNN_aarch64_size_dynamic_sections (bfd
 	  for (p = (struct elf_dyn_relocs *)
 	       (elf_section_data (s)->local_dynrel); p != NULL; p = p->next)
 	    {
-	      if (!bfd_is_abs_section (p->sec)
-		  && bfd_is_abs_section (p->sec->output_section))
+	      if (discarded_section (p->sec))
 		{
 		  /* Input section has been discarded, either because
 		     it is a copy of a linkonce section or due to
@@ -8983,7 +9576,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,23 +9619,46 @@ 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;
 	}
     }
 
+  /* Record the relative relocations that will be packed and undo the
+     size allocation for them in .rela.*. The size of .relr.dyn will be
+     computed later iteratively since it depends on the final layout.  */
+  if (info->enable_dt_relr && !bfd_link_relocatable (info))
+    {
+      elf_link_hash_traverse (&htab->root, record_relr_dyn_got_relocs, info);
+
+      for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
+	{
+	  if (!is_aarch64_elf (ibfd))
+	    continue;
+
+	  for (s = ibfd->sections; s != NULL; s = s->next)
+	    if (!record_relr_non_got_relocs (ibfd, info, s))
+	      return false;
+
+	  if (!record_relr_local_got_relocs (ibfd, info))
+	    return false;
+	}
+    }
+
   /* Init mapping symbols information to use later to distingush between
      code and data while scanning for errata.  */
   if (htab->fix_erratum_835769 || htab->fix_erratum_843419)
@@ -9055,7 +9671,7 @@ elfNN_aarch64_size_dynamic_sections (bfd
 
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       if ((s->flags & SEC_LINKER_CREATED) == 0)
@@ -9072,16 +9688,29 @@ elfNN_aarch64_size_dynamic_sections (bfd
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (bfd_section_name (s), ".rela"))
+      else if (startswith (bfd_section_name (s), ".rela"))
 	{
 	  if (s->size != 0 && s != htab->root.srelplt)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
 	  if (s != htab->root.srelplt)
 	    s->reloc_count = 0;
 	}
+      else if (s == htab->root.srelrdyn)
+	{
+	  /* Remove .relr.dyn based on relr_count, not size, since
+	     it is not sized yet.  */
+	  if (htab->relr_count == 0)
+	    s->flags |= SEC_EXCLUDE;
+	  else
+	    /* Force dynamic tags for relocs even if there are no
+	       .rela* relocs, required for setting DT_TEXTREL.  */
+	    relocs = true;
+	  /* Allocate contents later.  */
+	  continue;
+	}
       else
 	{
 	  /* It's not one of our sections, so don't allocate space.  */
@@ -9113,7 +9742,8 @@ elfNN_aarch64_size_dynamic_sections (bfd
 	 of garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
   if (htab->root.dynamic_sections_created)
@@ -9126,66 +9756,47 @@ 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;
+	    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)
+	  aarch64_plt_type plt_type
+	    = elf_aarch64_tdata (output_bfd)->sw_protections.plt_type;
+	  if ((plt_type == PLT_BTI_PAC)
 	      && (!add_dynamic_entry (DT_AARCH64_BTI_PLT, 0)
 		  || !add_dynamic_entry (DT_AARCH64_PAC_PLT, 0)))
-	    return FALSE;
+	    return false;
 
-	  else if ((elf_aarch64_tdata (output_bfd)->plt_type == PLT_BTI)
+	  else if ((plt_type == PLT_BTI)
 		   && !add_dynamic_entry (DT_AARCH64_BTI_PLT, 0))
-	    return FALSE;
+	    return false;
 
-	  else if ((elf_aarch64_tdata (output_bfd)->plt_type == PLT_PAC)
+	  else if ((plt_type == PLT_PAC)
 		   && !add_dynamic_entry (DT_AARCH64_PAC_PLT, 0))
-	    return FALSE;
+	    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;
-	    }
-	}
+      if (is_aarch64_elf (output_bfd)
+	  && htab->memtag_opts.memtag_mode != AARCH64_MEMTAG_MODE_NONE
+	  && !add_dynamic_entry (DT_AARCH64_MEMTAG_MODE,
+				 htab->memtag_opts.memtag_mode == AARCH64_MEMTAG_MODE_ASYNC))
+	return false;
+
+      if (is_aarch64_elf (output_bfd)
+	  && htab->memtag_opts.memtag_stack == 1
+	  && !add_dynamic_entry (DT_AARCH64_MEMTAG_STACK,
+				 htab->memtag_opts.memtag_stack == 1))
+	return false;
     }
+
 #undef add_dynamic_entry
 
-  return TRUE;
+  return true;
 }
 
 static inline void
@@ -9260,11 +9871,9 @@ elfNN_aarch64_create_small_pltn_entry (s
   /* Copy in the boiler-plate for the PLTn entry.  */
   memcpy (plt_entry, htab->plt_entry, htab->plt_entry_size);
 
-  /* First instruction in BTI enabled PLT stub is a BTI
-     instruction so skip it.  */
-  if (elf_aarch64_tdata (output_bfd)->plt_type & PLT_BTI
-      && elf_elfheader (output_bfd)->e_type == ET_EXEC)
-    plt_entry = plt_entry + 4;
+  /* Allow for any delta (such as a BTI instruction) before the common
+     sequence.  */
+  plt_entry += htab->plt_entry_delta;
 
   /* Fill in the top 21 bits for this: ADRP x16, PLT_GOT + n * 8.
      ADRP:   ((PG(S+A)-PG(P)) >> 12) & 0x1fffff */
@@ -9320,14 +9929,14 @@ elfNN_aarch64_create_small_pltn_entry (s
 /* Size sections even though they're not dynamic.  We use it to setup
    _TLS_MODULE_BASE_, if needed.  */
 
-static bfd_boolean
-elfNN_aarch64_always_size_sections (bfd *output_bfd,
-				    struct bfd_link_info *info)
+static bool
+elfNN_aarch64_early_size_sections (bfd *output_bfd,
+				   struct bfd_link_info *info)
 {
   asection *tls_sec;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   tls_sec = elf_hash_table (info)->tls_sec;
 
@@ -9336,7 +9945,7 @@ elfNN_aarch64_always_size_sections (bfd
       struct elf_link_hash_entry *tlsbase;
 
       tlsbase = elf_link_hash_lookup (elf_hash_table (info),
-				      "_TLS_MODULE_BASE_", TRUE, TRUE, FALSE);
+				      "_TLS_MODULE_BASE_", true, true, false);
 
       if (tlsbase)
 	{
@@ -9346,24 +9955,24 @@ elfNN_aarch64_always_size_sections (bfd
 
 	  if (!(_bfd_generic_link_add_one_symbol
 		(info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL,
-		 tls_sec, 0, NULL, FALSE, bed->collect, &h)))
-	    return FALSE;
+		 tls_sec, 0, NULL, false, bed->collect, &h)))
+	    return false;
 
 	  tlsbase->type = STT_TLS;
 	  tlsbase = (struct elf_link_hash_entry *) h;
 	  tlsbase->def_regular = 1;
 	  tlsbase->other = STV_HIDDEN;
-	  (*bed->elf_backend_hide_symbol) (info, tlsbase, TRUE);
+	  (*bed->elf_backend_hide_symbol) (info, tlsbase, true);
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 elfNN_aarch64_finish_dynamic_symbol (bfd *output_bfd,
 				     struct bfd_link_info *info,
 				     struct elf_link_hash_entry *h,
@@ -9403,7 +10012,7 @@ elfNN_aarch64_finish_dynamic_symbol (bfd
 	  || plt == NULL
 	  || gotplt == NULL
 	  || relplt == NULL)
-	return FALSE;
+	abort ();
 
       elfNN_aarch64_create_small_pltn_entry (h, htab, output_bfd, info);
       if (!h->def_regular)
@@ -9466,15 +10075,17 @@ elfNN_aarch64_finish_dynamic_symbol (bfd
 				       + h->plt.offset),
 			  htab->root.sgot->contents
 			  + (h->got.offset & ~(bfd_vma) 1));
-	      return TRUE;
+	      return true;
 	    }
 	}
       else if (bfd_link_pic (info) && SYMBOL_REFERENCES_LOCAL (info, h))
 	{
 	  if (!(h->def_regular || ELF_COMMON_DEF_P (h)))
-	    return FALSE;
-
+	    return false;
 	  BFD_ASSERT ((h->got.offset & 1) != 0);
+	  /* Don't emit relative relocs if they are packed.  */
+	  if (info->enable_dt_relr)
+	    goto skip_got_reloc;
 	  rela.r_info = ELFNN_R_INFO (0, AARCH64_R (RELATIVE));
 	  rela.r_addend = (h->root.u.def.value
 			   + h->root.u.def.section->output_section->vma
@@ -9482,7 +10093,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);
@@ -9494,6 +10105,7 @@ do_glob_dat:
       loc += htab->root.srelgot->reloc_count++ * RELOC_SIZE (htab);
       bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
     }
+skip_got_reloc:
 
   if (h->needs_copy)
     {
@@ -9528,13 +10140,13 @@ do_glob_dat:
 	  || h == elf_hash_table (info)->hgot))
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up local dynamic symbol handling.  We set the contents of
    various dynamic sections here.  */
 
-static bfd_boolean
+static int
 elfNN_aarch64_finish_local_dynamic_symbol (void **slot, void *inf)
 {
   struct elf_link_hash_entry *h
@@ -9571,8 +10183,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
@@ -9584,7 +10199,7 @@ elfNN_aarch64_init_small_plt0_entry (bfd
   /* First instruction in BTI enabled PLT stub is a BTI
      instruction so skip it.  */
   bfd_byte *plt0_entry = htab->root.splt->contents;
-  if (elf_aarch64_tdata (output_bfd)->plt_type & PLT_BTI)
+  if (elf_aarch64_tdata (output_bfd)->sw_protections.plt_type & PLT_BTI)
     plt0_entry = plt0_entry + 4;
 
   /* Fill in the top 21 bits for this: ADRP x16, PLT_GOT + n * 8.
@@ -9602,7 +10217,7 @@ elfNN_aarch64_init_small_plt0_entry (bfd
 				PG_OFFSET (plt_got_2nd_ent));
 }
 
-static bfd_boolean
+static bool
 elfNN_aarch64_finish_dynamic_sections (bfd *output_bfd,
 				       struct bfd_link_info *info)
 {
@@ -9653,14 +10268,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,32 +10289,30 @@ 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;
 
-	  aarch64_plt_type type = elf_aarch64_tdata (output_bfd)->plt_type;
+	  aarch64_plt_type type
+	    = elf_aarch64_tdata (output_bfd)->sw_protections.plt_type;
 	  if (type == PLT_BTI || type == PLT_BTI_PAC)
 	    {
 	      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 +10324,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.  */
@@ -9760,7 +10373,7 @@ elfNN_aarch64_finish_dynamic_sections (b
 	{
 	  _bfd_error_handler
 	    (_("discarded output section: `%pA'"), htab->root.sgotplt);
-	  return FALSE;
+	  return false;
 	}
 
       /* Fill in the first three entries in the global offset table.  */
@@ -9800,7 +10413,7 @@ elfNN_aarch64_finish_dynamic_sections (b
 		 elfNN_aarch64_finish_local_dynamic_symbol,
 		 info);
 
-  return TRUE;
+  return true;
 }
 
 /* Check if BTI enabled PLTs are needed.  Returns the type needed.  */
@@ -9810,11 +10423,14 @@ get_plt_type (bfd *abfd)
   aarch64_plt_type ret = PLT_NORMAL;
   bfd_byte *contents, *extdyn, *extdynend;
   asection *sec = bfd_get_section_by_name (abfd, ".dynamic");
-  if (!sec || !bfd_malloc_and_get_section (abfd, sec, &contents))
+  if (!sec
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
+      || sec->size < sizeof (ElfNN_External_Dyn)
+      || !bfd_malloc_and_get_section (abfd, sec, &contents))
     return ret;
   extdyn = contents;
-  extdynend = contents + sec->size;
-  for (; extdyn < extdynend; extdyn += sizeof (ElfNN_External_Dyn))
+  extdynend = contents + sec->size - sizeof (ElfNN_External_Dyn);
+  for (; extdyn <= extdynend; extdyn += sizeof (ElfNN_External_Dyn))
     {
       Elf_Internal_Dyn dyn;
       bfd_elfNN_swap_dyn_in (abfd, extdyn, &dyn);
@@ -9849,7 +10465,7 @@ elfNN_aarch64_get_synthetic_symtab (bfd
 				    asymbol **dynsyms,
 				    asymbol **ret)
 {
-  elf_aarch64_tdata (abfd)->plt_type = get_plt_type (abfd);
+  elf_aarch64_tdata (abfd)->sw_protections.plt_type = get_plt_type (abfd);
   return _bfd_elf_get_synthetic_symtab (abfd, symcount, syms,
 					dynsymcount, dynsyms, ret);
 }
@@ -9864,19 +10480,21 @@ elfNN_aarch64_plt_sym_val (bfd_vma i, co
   size_t plt0_size = PLT_ENTRY_SIZE;
   size_t pltn_size = PLT_SMALL_ENTRY_SIZE;
 
-  if (elf_aarch64_tdata (plt->owner)->plt_type == PLT_BTI_PAC)
+  aarch64_plt_type plt_type
+    = elf_aarch64_tdata (plt->owner)->sw_protections.plt_type;
+  if (plt_type == PLT_BTI_PAC)
     {
       if (elf_elfheader (plt->owner)->e_type == ET_EXEC)
 	pltn_size = PLT_BTI_PAC_SMALL_ENTRY_SIZE;
       else
 	pltn_size = PLT_PAC_SMALL_ENTRY_SIZE;
     }
-  else if (elf_aarch64_tdata (plt->owner)->plt_type == PLT_BTI)
+  else if (plt_type == PLT_BTI)
     {
       if (elf_elfheader (plt->owner)->e_type == ET_EXEC)
 	pltn_size = PLT_BTI_SMALL_ENTRY_SIZE;
     }
-  else if (elf_aarch64_tdata (plt->owner)->plt_type == PLT_PAC)
+  else if (plt_type == PLT_PAC)
     {
       pltn_size = PLT_PAC_SMALL_ENTRY_SIZE;
     }
@@ -9889,7 +10507,7 @@ elfNN_aarch64_plt_sym_val (bfd_vma i, co
    It also allows a period initiated suffix to be added to the symbol, ie:
    "$[adtx]\.[:sym_char]+".  */
 
-static bfd_boolean
+static bool
 is_aarch64_mapping_symbol (const char * name)
 {
   return name != NULL /* Paranoia.  */
@@ -9924,54 +10542,71 @@ elfNN_aarch64_backend_symbol_processing
 static bfd *
 elfNN_aarch64_link_setup_gnu_properties (struct bfd_link_info *info)
 {
-  uint32_t prop = elf_aarch64_tdata (info->output_bfd)->gnu_and_prop;
-  bfd *pbfd = _bfd_aarch64_elf_link_setup_gnu_properties (info, &prop);
-  elf_aarch64_tdata (info->output_bfd)->gnu_and_prop = prop;
-  elf_aarch64_tdata (info->output_bfd)->plt_type
-    |= (prop & GNU_PROPERTY_AARCH64_FEATURE_1_BTI) ? PLT_BTI : 0;
-  setup_plt_values (info, elf_aarch64_tdata (info->output_bfd)->plt_type);
+  bfd *pbfd = _bfd_aarch64_elf_link_setup_gnu_properties (info);
+
+  /* When BTI is forced on the command line, information flows from plt_type to
+     outprop, so plt_type has already been set and outprop don't have any effect
+     on plt_type.
+     Whereas if BTI is inferred from the input bfds, information flows from
+     outprop to plt_type.  If the property GNU_PROPERTY_AARCH64_FEATURE_1_BTI
+     has been set on all the input bfds, then BTI is set on the output bfd and
+     plt_type is updated accordingly.  */
+  struct elf_aarch64_obj_tdata * tdata = elf_aarch64_tdata (info->output_bfd);
+  uint32_t outprop = tdata->gnu_property_aarch64_feature_1_and;
+  if (outprop & GNU_PROPERTY_AARCH64_FEATURE_1_BTI)
+    tdata->sw_protections.plt_type |= PLT_BTI;
+  setup_plt_values (info, tdata->sw_protections.plt_type);
   return pbfd;
 }
 
 /* Implement elf_backend_merge_gnu_properties for AArch64.  It serves as a
    wrapper function for _bfd_aarch64_elf_merge_gnu_properties to account
    for the effect of GNU properties of the output_bfd.  */
-static bfd_boolean
+static bool
 elfNN_aarch64_merge_gnu_properties (struct bfd_link_info *info,
 				       bfd *abfd, bfd *bbfd,
 				       elf_property *aprop,
 				       elf_property *bprop)
 {
-  uint32_t prop
-    = elf_aarch64_tdata (info->output_bfd)->gnu_and_prop;
+  uint32_t outprop
+    = elf_aarch64_tdata (info->output_bfd)->gnu_property_aarch64_feature_1_and;
 
-  /* If output has been marked with BTI using command line argument, give out
-     warning if necessary.  */
   /* Properties are merged per type, hence only check for warnings when merging
      GNU_PROPERTY_AARCH64_FEATURE_1_AND.  */
-  if (((aprop && aprop->pr_type == GNU_PROPERTY_AARCH64_FEATURE_1_AND)
-	|| (bprop && bprop->pr_type == GNU_PROPERTY_AARCH64_FEATURE_1_AND))
-      && (prop & GNU_PROPERTY_AARCH64_FEATURE_1_BTI)
-      && (!elf_aarch64_tdata (info->output_bfd)->no_bti_warn))
-    {
-      if ((aprop && !(aprop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
-	   || !aprop)
-	{
-	  _bfd_error_handler (_("%pB: warning: BTI turned on by -z force-bti when "
-				"all inputs do not have BTI in NOTE section."),
-			      abfd);
-	}
-      if ((bprop && !(bprop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
-	   || !bprop)
-	{
-	  _bfd_error_handler (_("%pB: warning: BTI turned on by -z force-bti when "
-				"all inputs do not have BTI in NOTE section."),
-			      bbfd);
+  if ((aprop && aprop->pr_type == GNU_PROPERTY_AARCH64_FEATURE_1_AND)
+   || (bprop && bprop->pr_type == GNU_PROPERTY_AARCH64_FEATURE_1_AND))
+    {
+      const aarch64_protection_opts *sw_protections
+	= &elf_aarch64_tdata (info->output_bfd)->sw_protections;
+      aarch64_feature_marking_report bti_report = sw_protections->bti_report;
+      aarch64_feature_marking_report gcs_report = sw_protections->gcs_report;
+
+      /* If output has been marked with BTI using command line argument, give
+	 out warning if necessary.  */
+      if ((outprop & GNU_PROPERTY_AARCH64_FEATURE_1_BTI)
+	  && (bti_report != MARKING_NONE))
+	{
+	  if (!aprop || !(aprop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
+	    _bfd_aarch64_elf_check_bti_report (info, abfd);
+	  if (!bprop || !(bprop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
+	    _bfd_aarch64_elf_check_bti_report (info, bbfd);
+	}
+
+      /* If the output has been marked with GCS using '-z gcs' and the input is
+	 missing GCS feature tag, throw a warning/error in accordance with
+	 -z gcs-report=warning/error.  */
+      if ((outprop & GNU_PROPERTY_AARCH64_FEATURE_1_GCS)
+	  && gcs_report != MARKING_NONE)
+	{
+	  if (!aprop || !(aprop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_GCS))
+	    _bfd_aarch64_elf_check_gcs_report (info, abfd);
+	  if (!bprop || !(bprop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_GCS))
+	    _bfd_aarch64_elf_check_gcs_report (info, bbfd);
 	}
     }
 
   return  _bfd_aarch64_elf_merge_gnu_properties (info, abfd, aprop,
-						 bprop, prop);
+						 bprop, outprop);
 }
 
 /* We use this so we can override certain functions
@@ -10009,17 +10644,11 @@ const struct elf_size_info elfNN_aarch64
 };
 
 #define ELF_ARCH			bfd_arch_aarch64
+#define ELF_TARGET_ID			AARCH64_ELF_DATA
 #define ELF_MACHINE_CODE		EM_AARCH64
 #define ELF_MAXPAGESIZE			0x10000
-#define ELF_MINPAGESIZE			0x1000
 #define ELF_COMMONPAGESIZE		0x1000
 
-#define bfd_elfNN_close_and_cleanup		\
-  elfNN_aarch64_close_and_cleanup
-
-#define bfd_elfNN_bfd_free_cached_info		\
-  elfNN_aarch64_bfd_free_cached_info
-
 #define bfd_elfNN_bfd_is_target_special_symbol	\
   elfNN_aarch64_is_target_special_symbol
 
@@ -10056,8 +10685,8 @@ const struct elf_size_info elfNN_aarch64
 #define elf_backend_adjust_dynamic_symbol	\
   elfNN_aarch64_adjust_dynamic_symbol
 
-#define elf_backend_always_size_sections	\
-  elfNN_aarch64_always_size_sections
+#define elf_backend_early_size_sections		\
+  elfNN_aarch64_early_size_sections
 
 #define elf_backend_check_relocs		\
   elfNN_aarch64_check_relocs
@@ -10106,8 +10735,14 @@ const struct elf_size_info elfNN_aarch64
 #define elf_backend_section_from_shdr		\
   elfNN_aarch64_section_from_shdr
 
-#define elf_backend_size_dynamic_sections	\
-  elfNN_aarch64_size_dynamic_sections
+#define elf_backend_section_from_phdr		\
+  elfNN_aarch64_section_from_phdr
+
+#define elf_backend_modify_headers		\
+  elfNN_aarch64_modify_headers
+
+#define elf_backend_late_size_sections		\
+  elfNN_aarch64_late_size_sections
 
 #define elf_backend_size_info			\
   elfNN_aarch64_size_info
@@ -10124,6 +10759,12 @@ const struct elf_size_info elfNN_aarch64
 #define elf_backend_merge_gnu_properties	\
   elfNN_aarch64_merge_gnu_properties
 
+#define elf_backend_size_relative_relocs	\
+  elfNN_aarch64_size_relative_relocs
+
+#define elf_backend_finish_relative_relocs	\
+  elfNN_aarch64_finish_relative_relocs
+
 #define elf_backend_can_refcount       1
 #define elf_backend_can_gc_sections    1
 #define elf_backend_plt_readonly       1
@@ -10137,29 +10778,10 @@ const struct elf_size_info elfNN_aarch64
 #define elf_backend_dtrel_excludes_plt 1
 #define elf_backend_got_header_size (GOT_ENTRY_SIZE * 3)
 #define elf_backend_default_execstack  0
-#define elf_backend_extern_protected_data 1
+#define elf_backend_extern_protected_data 0
 #define elf_backend_hash_symbol elf_aarch64_hash_symbol
 
 #undef	elf_backend_obj_attrs_section
-#define elf_backend_obj_attrs_section		".ARM.attributes"
-
-#include "elfNN-target.h"
-
-/* CloudABI support.  */
-
-#undef	TARGET_LITTLE_SYM
-#define	TARGET_LITTLE_SYM	aarch64_elfNN_le_cloudabi_vec
-#undef	TARGET_LITTLE_NAME
-#define	TARGET_LITTLE_NAME	"elfNN-littleaarch64-cloudabi"
-#undef	TARGET_BIG_SYM
-#define	TARGET_BIG_SYM		aarch64_elfNN_be_cloudabi_vec
-#undef	TARGET_BIG_NAME
-#define	TARGET_BIG_NAME		"elfNN-bigaarch64-cloudabi"
-
-#undef	ELF_OSABI
-#define	ELF_OSABI		ELFOSABI_CLOUDABI
-
-#undef	elfNN_bed
-#define	elfNN_bed		elfNN_aarch64_cloudabi_bed
+#define elf_backend_obj_attrs_section		SEC_AARCH64_ATTRIBUTES
 
 #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.20200303/bfd/elfnn-ia64.c ./bfd/elfnn-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfnn-ia64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfnn-ia64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* IA-64 support for 64-bit ELF
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 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 *);
 
@@ -73,7 +77,7 @@ struct elfNN_ia64_dyn_sym_info
     int count;
 
     /* Is this reloc against readonly section? */
-    bfd_boolean reltext;
+    bool reltext;
   } *reloc_entries;
 
   /* TRUE when the section contents have been updated.  */
@@ -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
@@ -159,34 +162,35 @@ struct elfNN_ia64_allocate_data
 {
   struct bfd_link_info *info;
   bfd_size_type ofs;
-  bfd_boolean only_got;
+  bool only_got;
 };
 
 #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,
    struct elf_link_hash_entry *h,
-   bfd *abfd, const Elf_Internal_Rela *rel, bfd_boolean create);
-static bfd_boolean elfNN_ia64_dynamic_symbol_p
+   bfd *abfd, const Elf_Internal_Rela *rel, bool create);
+static bool elfNN_ia64_dynamic_symbol_p
   (struct elf_link_hash_entry *h, struct bfd_link_info *info, int);
-static bfd_boolean elfNN_ia64_choose_gp
-  (bfd *abfd, struct bfd_link_info *info, bfd_boolean final);
+static bool elfNN_ia64_choose_gp
+  (bfd *abfd, struct bfd_link_info *info, bool final);
 static void elfNN_ia64_dyn_sym_traverse
   (struct elfNN_ia64_link_hash_table *ia64_info,
-   bfd_boolean (*func) (struct elfNN_ia64_dyn_sym_info *, void *),
+   bool (*func) (struct elfNN_ia64_dyn_sym_info *, void *),
    void * info);
-static bfd_boolean allocate_global_data_got
+static bool allocate_global_data_got
   (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data);
-static bfd_boolean allocate_global_fptr_got
+static bool allocate_global_fptr_got
   (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data);
-static bfd_boolean allocate_local_got
+static bool allocate_local_got
   (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data);
-static bfd_boolean elfNN_ia64_hpux_vec
+static bool elfNN_ia64_hpux_vec
   (const bfd_target *vec);
-static bfd_boolean allocate_dynrel_entries
+static bool allocate_dynrel_entries
   (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data);
 static asection *get_pltoff
   (bfd *abfd, struct bfd_link_info *info,
@@ -196,7 +200,7 @@ static asection *get_pltoff
 
 /* Given a ELF reloc, return the matching HOWTO structure.  */
 
-static bfd_boolean
+static bool
 elfNN_ia64_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED,
 			  arelent *bfd_reloc,
 			  Elf_Internal_Rela *elf_reloc)
@@ -210,10 +214,10 @@ elfNN_ia64_info_to_howto (bfd *abfd ATTR
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 #define PLT_HEADER_SIZE		(3 * 16)
@@ -325,10 +329,10 @@ elfNN_ia64_update_short_info (asection *
     }
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_relax_section (bfd *abfd, asection *sec,
 			  struct bfd_link_info *link_info,
-			  bfd_boolean *again)
+			  bool *again)
 {
   struct one_fixup
     {
@@ -345,36 +349,37 @@ elfNN_ia64_relax_section (bfd *abfd, ase
   Elf_Internal_Sym *isymbuf = NULL;
   struct elfNN_ia64_link_hash_table *ia64_info;
   struct one_fixup *fixups = NULL;
-  bfd_boolean changed_contents = FALSE;
-  bfd_boolean changed_relocs = FALSE;
-  bfd_boolean changed_got = FALSE;
-  bfd_boolean skip_relax_pass_0 = TRUE;
-  bfd_boolean skip_relax_pass_1 = TRUE;
+  bool changed_contents = false;
+  bool changed_relocs = false;
+  bool changed_got = false;
+  bool skip_relax_pass_0 = true;
+  bool skip_relax_pass_1 = true;
   bfd_vma gp = 0;
 
   /* Assume we're not going to change any sizes, and we'll only need
      one pass.  */
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (link_info))
-    (*link_info->callbacks->einfo)
-      (_("%P%F: --relax and -r may not be used together\n"));
+    link_info->callbacks->fatal
+      (_("%P: --relax and -r may not be used together\n"));
 
   /* Don't even try to relax for non-ELF outputs.  */
   if (!is_elf_hash_table (link_info->hash))
-    return FALSE;
+    return false;
 
   /* Nothing to do if there are no relocations or there is no need for
      the current pass.  */
-  if ((sec->flags & SEC_RELOC) == 0
-      || sec->reloc_count == 0
+  if (sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (link_info->relax_pass == 0 && sec->skip_relax_pass_0)
       || (link_info->relax_pass == 1 && sec->skip_relax_pass_1))
-    return TRUE;
+    return true;
 
   ia64_info = elfNN_ia64_hash_table (link_info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -383,7 +388,7 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 		     (abfd, sec, NULL, (Elf_Internal_Rela *) NULL,
 		      link_info->keep_memory));
   if (internal_relocs == NULL)
-    return FALSE;
+    return false;
 
   irelend = internal_relocs + sec->reloc_count;
 
@@ -403,7 +408,7 @@ elfNN_ia64_relax_section (bfd *abfd, ase
       asection *tsec;
       struct one_fixup *f;
       bfd_size_type amt;
-      bfd_boolean is_branch;
+      bool is_branch;
       struct elfNN_ia64_dyn_sym_info *dyn_i;
       char symtype;
 
@@ -416,8 +421,8 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	  /* In pass 1, all br relaxations are done. We can skip it. */
 	  if (link_info->relax_pass == 1)
 	    continue;
-	  skip_relax_pass_0 = FALSE;
-	  is_branch = TRUE;
+	  skip_relax_pass_0 = false;
+	  is_branch = true;
 	  break;
 
 	case R_IA64_PCREL60B:
@@ -425,10 +430,10 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	     will increase the code size. Defer it to pass 1.  */
 	  if (link_info->relax_pass == 0)
 	    {
-	      skip_relax_pass_1 = FALSE;
+	      skip_relax_pass_1 = false;
 	      continue;
 	    }
-	  is_branch = TRUE;
+	  is_branch = true;
 	  break;
 
 	case R_IA64_GPREL22:
@@ -440,10 +445,10 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	     increase the code size. Defer it to pass 1.  */
 	  if (link_info->relax_pass == 0)
 	    {
-	      skip_relax_pass_1 = FALSE;
+	      skip_relax_pass_1 = false;
 	      continue;
 	    }
-	  is_branch = FALSE;
+	  is_branch = false;
 	  break;
 
 	default:
@@ -481,7 +486,7 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	    tsec = bfd_section_from_elf_index (abfd, isym->st_shndx);
 
 	  toff = isym->st_value;
-	  dyn_i = get_dyn_sym_info (ia64_info, NULL, abfd, irel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, NULL, abfd, irel, false);
 	  symtype = ELF_ST_TYPE (isym->st_info);
 	}
       else
@@ -497,7 +502,7 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 		 || h->root.type == bfd_link_hash_warning)
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-	  dyn_i = get_dyn_sym_info (ia64_info, h, abfd, irel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, abfd, irel, false);
 
 	  /* For branches to dynamic symbols, we're interested instead
 	     in a branch to the PLT entry.  */
@@ -604,8 +609,8 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 		  if ((irel->r_offset & 3) == 1)
 		    irel->r_offset += 1;
 
-		  changed_contents = TRUE;
-		  changed_relocs = TRUE;
+		  changed_contents = true;
+		  changed_relocs = true;
 		}
 
 	      continue;
@@ -621,8 +626,8 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	      /* Make the relocation offset point to slot 1.  */
 	      irel->r_offset = (irel->r_offset & ~((bfd_vma) 0x3)) + 1;
 
-	      changed_contents = TRUE;
-	      changed_relocs = TRUE;
+	      changed_contents = true;
+	      changed_relocs = true;
 	      continue;
 	    }
 
@@ -735,8 +740,8 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	      != bfd_reloc_ok)
 	    goto error_return;
 
-	  changed_contents = TRUE;
-	  changed_relocs = TRUE;
+	  changed_contents = true;
+	  changed_relocs = true;
 	}
       else
 	{
@@ -747,7 +752,7 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	      gp = _bfd_get_gp_value (obfd);
 	      if (gp == 0)
 		{
-		  if (!elfNN_ia64_choose_gp (obfd, link_info, FALSE))
+		  if (!elfNN_ia64_choose_gp (obfd, link_info, false))
 		    goto error_return;
 		  gp = _bfd_get_gp_value (obfd);
 		}
@@ -766,7 +771,7 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	    {
 	      irel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (irel->r_info),
 					   R_IA64_GPREL22);
-	      changed_relocs = TRUE;
+	      changed_relocs = true;
 	      if (dyn_i->want_gotx)
 		{
 		  dyn_i->want_gotx = 0;
@@ -781,8 +786,8 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	    {
 	      ia64_elf_relax_ldxmov (contents, roff);
 	      irel->r_info = ELFNN_R_INFO (0, R_IA64_NONE);
-	      changed_contents = TRUE;
-	      changed_relocs = TRUE;
+	      changed_contents = true;
+	      changed_relocs = true;
 	    }
 	}
     }
@@ -852,7 +857,7 @@ elfNN_ia64_relax_section (bfd *abfd, ase
 	  if (bfd_link_pic (link_info)
 	      && ia64_info->self_dtpmod_offset != (bfd_vma) -1)
 	    ia64_info->root.srelgot->size += sizeof (ElfNN_External_Rela);
-	  data.only_got = TRUE;
+	  data.only_got = true;
 	  elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_dynrel_entries,
 				       &data);
 	}
@@ -866,41 +871,39 @@ elfNN_ia64_relax_section (bfd *abfd, ase
     }
 
   *again = changed_contents || changed_relocs;
-  return TRUE;
+  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;
+  return false;
 }
 #undef skip_relax_pass_0
 #undef skip_relax_pass_1
 
 /* Return TRUE if NAME is an unwind table section name.  */
 
-static inline bfd_boolean
+static inline bool
 is_unwind_section_name (bfd *abfd, const char *name)
 {
   if (elfNN_ia64_hpux_vec (abfd->xvec)
       && !strcmp (name, ELF_STRING_ia64_unwind_hdr))
-    return FALSE;
+    return false;
 
-  return ((CONST_STRNEQ (name, ELF_STRING_ia64_unwind)
-	   && ! CONST_STRNEQ (name, ELF_STRING_ia64_unwind_info))
-	  || CONST_STRNEQ (name, ELF_STRING_ia64_unwind_once));
+  return ((startswith (name, ELF_STRING_ia64_unwind)
+	   && ! startswith (name, ELF_STRING_ia64_unwind_info))
+	  || startswith (name, ELF_STRING_ia64_unwind_once));
 }
 
 /* Handle an IA-64 specific section when reading an object file.  This
    is called when bfd_section_from_shdr finds a section with an unknown
    type.  */
 
-static bfd_boolean
+static bool
 elfNN_ia64_section_from_shdr (bfd *abfd,
 			      Elf_Internal_Shdr *hdr,
 			      const char *name,
@@ -919,17 +922,17 @@ elfNN_ia64_section_from_shdr (bfd *abfd,
 
     case SHT_IA_64_EXT:
       if (strcmp (name, ELF_STRING_ia64_archext) != 0)
-	return FALSE;
+	return false;
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Convert IA-64 specific section flags to bfd internal section flags.  */
@@ -937,20 +940,19 @@ elfNN_ia64_section_from_shdr (bfd *abfd,
 /* ??? There is no bfd internal flag equivalent to the SHF_IA_64_NORECOV
    flag.  */
 
-static bfd_boolean
-elfNN_ia64_section_flags (flagword *flags,
-			  const Elf_Internal_Shdr *hdr)
+static bool
+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;
+  return true;
 }
 
 /* Set the correct type for an IA-64 ELF section.  We do this by the
    section name, which is a hack, but ought to work.  */
 
-static bfd_boolean
+static bool
 elfNN_ia64_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr,
 			  asection *sec)
 {
@@ -996,13 +998,13 @@ elfNN_ia64_fake_sections (bfd *abfd, Elf
   if (elfNN_ia64_hpux_vec (abfd->xvec) && (sec->flags & SHF_TLS))
     hdr->sh_flags |= SHF_IA_64_HP_TLS;
 
-  return TRUE;
+  return true;
 }
 
 /* The final processing done just before writing out an IA-64 ELF
    object file.  */
 
-static bfd_boolean
+static bool
 elfNN_ia64_final_write_processing (bfd *abfd)
 {
   Elf_Internal_Shdr *hdr;
@@ -1033,7 +1035,7 @@ elfNN_ia64_final_write_processing (bfd *
 	flags |= EF_IA_64_ABI64;
 
       elf_elfheader(abfd)->e_flags = flags;
-      elf_flags_init (abfd) = TRUE;
+      elf_flags_init (abfd) = true;
     }
   return _bfd_elf_final_write_processing (abfd);
 }
@@ -1041,7 +1043,7 @@ elfNN_ia64_final_write_processing (bfd *
 /* Hook called by the linker routine which adds symbols from an object
    file.  We use it to put .comm items in .sbss, and not .bss.  */
 
-static bfd_boolean
+static bool
 elfNN_ia64_add_symbol_hook (bfd *abfd,
 			    struct bfd_link_info *info,
 			    Elf_Internal_Sym *sym,
@@ -1064,16 +1066,17 @@ 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;
+	    return false;
 	}
 
       *secp = scomm;
       *valp = sym->st_size;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the number of additional phdrs we will need.  */
@@ -1098,7 +1101,7 @@ elfNN_ia64_additional_program_headers (b
   return ret;
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_modify_segment_map (bfd *abfd,
 			       struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
@@ -1119,7 +1122,7 @@ elfNN_ia64_modify_segment_map (bfd *abfd
 	  m = ((struct elf_segment_map *)
 	       bfd_zalloc (abfd, (bfd_size_type) sizeof *m));
 	  if (m == NULL)
-	    return FALSE;
+	    return false;
 
 	  m->p_type = PT_IA_64_ARCHEXT;
 	  m->count = 1;
@@ -1167,7 +1170,7 @@ elfNN_ia64_modify_segment_map (bfd *abfd
 	      m = ((struct elf_segment_map *)
 		   bfd_zalloc (abfd, (bfd_size_type) sizeof *m));
 	      if (m == NULL)
-		return FALSE;
+		return false;
 
 	      m->p_type = PT_IA_64_UNWIND;
 	      m->count = 1;
@@ -1183,14 +1186,14 @@ elfNN_ia64_modify_segment_map (bfd *abfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Turn on PF_IA_64_NORECOV if needed.  This involves traversing all of
    the input sections for each output section in the segment and testing
    for SHF_IA_64_NORECOV on each.  */
 
-static bfd_boolean
+static bool
 elfNN_ia64_modify_headers (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_obj_tdata *tdata = elf_tdata (abfd);
@@ -1229,7 +1232,7 @@ elfNN_ia64_modify_headers (bfd *abfd, st
 /* According to the Tahoe assembler spec, all labels starting with a
    '.' are local.  */
 
-static bfd_boolean
+static bool
 elfNN_ia64_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 				const char *name)
 {
@@ -1238,11 +1241,11 @@ elfNN_ia64_is_local_label_name (bfd *abf
 
 /* Should we do dynamic things to this symbol?  */
 
-static bfd_boolean
+static bool
 elfNN_ia64_dynamic_symbol_p (struct elf_link_hash_entry *h,
 			     struct bfd_link_info *info, int r_type)
 {
-  bfd_boolean ignore_protected
+  bool ignore_protected
     = ((r_type & 0xf8) == 0x40		/* FPTR relocs */
        || (r_type & 0xf8) == 0x50);	/* LTOFF_FPTR relocs */
 
@@ -1307,8 +1310,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;
@@ -1344,7 +1346,7 @@ elfNN_ia64_hash_copy_indirect (struct bf
 static void
 elfNN_ia64_hash_hide_symbol (struct bfd_link_info *info,
 			     struct elf_link_hash_entry *xh,
-			     bfd_boolean force_local)
+			     bool force_local)
 {
   struct elfNN_ia64_link_hash_entry *h;
   struct elfNN_ia64_dyn_sym_info *dyn_i;
@@ -1389,44 +1391,38 @@ elfNN_ia64_local_htab_eq (const void *pt
 
 /* Free the global elfNN_ia64_dyn_sym_info array.  */
 
-static bfd_boolean
-elfNN_ia64_global_dyn_info_free (void **xentry,
-				 void * unused ATTRIBUTE_UNUSED)
+static bool
+elfNN_ia64_global_dyn_info_free (struct elf_link_hash_entry *xentry,
+				 void *unused ATTRIBUTE_UNUSED)
 {
   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;
+  return true;
 }
 
 /* Free the local elfNN_ia64_dyn_sym_info array.  */
 
-static bfd_boolean
+static int
 elfNN_ia64_local_dyn_info_free (void **slot,
 				void * unused ATTRIBUTE_UNUSED)
 {
   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;
+  return true;
 }
 
 /* Destroy IA-64 linker hash table.  */
@@ -1464,8 +1460,7 @@ elfNN_ia64_hash_table_create (bfd *abfd)
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      elfNN_ia64_new_elf_hash_entry,
-				      sizeof (struct elfNN_ia64_link_hash_entry),
-				      IA64_ELF_DATA))
+				      sizeof (struct elfNN_ia64_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -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;
 }
@@ -1488,12 +1484,12 @@ elfNN_ia64_hash_table_create (bfd *abfd)
 
 struct elfNN_ia64_dyn_sym_traverse_data
 {
-  bfd_boolean (*func) (struct elfNN_ia64_dyn_sym_info *, void *);
+  bool (*func) (struct elfNN_ia64_dyn_sym_info *, void *);
   void * data;
 };
 
-static bfd_boolean
-elfNN_ia64_global_dyn_sym_thunk (struct bfd_hash_entry *xentry,
+static bool
+elfNN_ia64_global_dyn_sym_thunk (struct elf_link_hash_entry *xentry,
 				 void * xdata)
 {
   struct elfNN_ia64_link_hash_entry *entry
@@ -1507,11 +1503,11 @@ elfNN_ia64_global_dyn_sym_thunk (struct
        count != 0;
        count--, dyn_i++)
     if (! (*data->func) (dyn_i, data->data))
-      return FALSE;
-  return TRUE;
+      return false;
+  return true;
 }
 
-static bfd_boolean
+static int
 elfNN_ia64_local_dyn_sym_thunk (void **slot, void * xdata)
 {
   struct elfNN_ia64_local_hash_entry *entry
@@ -1525,13 +1521,14 @@ elfNN_ia64_local_dyn_sym_thunk (void **s
        count != 0;
        count--, dyn_i++)
     if (! (*data->func) (dyn_i, data->data))
-      return FALSE;
-  return TRUE;
+      return false;
+  return true;
 }
 
 static void
 elfNN_ia64_dyn_sym_traverse (struct elfNN_ia64_link_hash_table *ia64_info,
-			     bfd_boolean (*func) (struct elfNN_ia64_dyn_sym_info *, void *),
+			     bool (*func) (struct elfNN_ia64_dyn_sym_info *,
+					   void *),
 			     void * data)
 {
   struct elfNN_ia64_dyn_sym_traverse_data xdata;
@@ -1545,7 +1542,7 @@ elfNN_ia64_dyn_sym_traverse (struct elfN
 		 elfNN_ia64_local_dyn_sym_thunk, &xdata);
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_create_dynamic_sections (bfd *abfd,
 				    struct bfd_link_info *info)
 {
@@ -1553,22 +1550,22 @@ elfNN_ia64_create_dynamic_sections (bfd
   asection *s;
 
   if (! _bfd_elf_create_dynamic_sections (abfd, info))
-    return FALSE;
+    return false;
 
   ia64_info = elfNN_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   {
     flagword flags = bfd_section_flags (ia64_info->root.sgot);
     bfd_set_section_flags (ia64_info->root.sgot, SEC_SMALL_DATA | flags);
     /* The .got section is always aligned at 8 bytes.  */
     if (!bfd_set_section_alignment (ia64_info->root.sgot, 3))
-      return FALSE;
+      return false;
   }
 
   if (!get_pltoff (abfd, info, ia64_info))
-    return FALSE;
+    return false;
 
   s = bfd_make_section_anyway_with_flags (abfd, ".rela.IA_64.pltoff",
 					  (SEC_ALLOC | SEC_LOAD
@@ -1578,17 +1575,17 @@ elfNN_ia64_create_dynamic_sections (bfd
 					   | SEC_READONLY));
   if (s == NULL
       || !bfd_set_section_alignment (s, LOG_SECTION_ALIGN))
-    return FALSE;
+    return false;
   ia64_info->rel_pltoff_sec = s;
 
-  return TRUE;
+  return true;
 }
 
 /* Find and/or create a hash entry for local symbol.  */
 static struct elfNN_ia64_local_hash_entry *
 get_local_sym_hash (struct elfNN_ia64_link_hash_table *ia64_info,
 		    bfd *abfd, const Elf_Internal_Rela *rel,
-		    bfd_boolean create)
+		    bool create)
 {
   struct elfNN_ia64_local_hash_entry e, *ret;
   asection *sec = abfd->sections;
@@ -1818,7 +1815,7 @@ sort_dyn_sym_info (struct elfNN_ia64_dyn
 static struct elfNN_ia64_dyn_sym_info *
 get_dyn_sym_info (struct elfNN_ia64_link_hash_table *ia64_info,
 		  struct elf_link_hash_entry *h, bfd *abfd,
-		  const Elf_Internal_Rela *rel, bfd_boolean create)
+		  const Elf_Internal_Rela *rel, bool create)
 {
   struct elfNN_ia64_dyn_sym_info **info_p, *info, *dyn_i, key;
   unsigned int *count_p, *sorted_count_p, *size_p;
@@ -1871,18 +1868,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 +1905,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 +1931,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;
@@ -2083,7 +2082,7 @@ get_pltoff (bfd *abfd, struct bfd_link_i
 static asection *
 get_reloc_section (bfd *abfd,
 		   struct elfNN_ia64_link_hash_table *ia64_info,
-		   asection *sec, bfd_boolean create)
+		   asection *sec, bool create)
 {
   const char *srel_name;
   asection *srel;
@@ -2116,9 +2115,9 @@ get_reloc_section (bfd *abfd,
   return srel;
 }
 
-static bfd_boolean
+static bool
 count_dyn_reloc (bfd *abfd, struct elfNN_ia64_dyn_sym_info *dyn_i,
-		 asection *srel, int type, bfd_boolean reltext)
+		 asection *srel, int type, bool reltext)
 {
   struct elfNN_ia64_dyn_reloc_entry *rent;
 
@@ -2131,7 +2130,7 @@ count_dyn_reloc (bfd *abfd, struct elfNN
       rent = ((struct elfNN_ia64_dyn_reloc_entry *)
 	      bfd_alloc (abfd, (bfd_size_type) sizeof (*rent)));
       if (!rent)
-	return FALSE;
+	return false;
 
       rent->next = dyn_i->reloc_entries;
       rent->srel = srel;
@@ -2142,10 +2141,10 @@ count_dyn_reloc (bfd *abfd, struct elfNN
   rent->reltext = reltext;
   rent->count++;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			 asection *sec,
 			 const Elf_Internal_Rela *relocs)
@@ -2171,15 +2170,15 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
   int need_entry;
   struct elf_link_hash_entry *h;
   unsigned long r_symndx;
-  bfd_boolean maybe_dynamic;
+  bool maybe_dynamic;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
   ia64_info = elfNN_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   got = fptr = srel = pltoff = NULL;
 
@@ -2202,9 +2201,6 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
       else
 	h = NULL;
 
-      if (h && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	continue;
-
       /* We can only get preliminary data on whether a symbol is
 	 locally or externally defined, as not all of the input files
 	 have yet been processed.  Do something with what we know, as
@@ -2350,8 +2346,8 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
 	     abfd, 0, (bfd_vma) 0);
 	}
 
-      if (get_dyn_sym_info (ia64_info, h, abfd, rel, TRUE) == NULL)
-	return FALSE;
+      if (get_dyn_sym_info (ia64_info, h, abfd, rel, true) == NULL)
+	return false;
     }
 
   /* Now, we only do lookup without insertion, which is very fast
@@ -2379,9 +2375,6 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
       else
 	h = NULL;
 
-      if (h && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	continue;
-
       /* We can only get preliminary data on whether a symbol is
 	 locally or externally defined, as not all of the input files
 	 have yet been processed.  Do something with what we know, as
@@ -2522,7 +2515,7 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
       if (!need_entry)
 	continue;
 
-      dyn_i = get_dyn_sym_info (ia64_info, h, abfd, rel, FALSE);
+      dyn_i = get_dyn_sym_info (ia64_info, h, abfd, rel, false);
 
       /* Record whether or not this is a local symbol.  */
       dyn_i->h = h;
@@ -2535,7 +2528,7 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
 	    {
 	      got = get_got (abfd, info, ia64_info);
 	      if (!got)
-		return FALSE;
+		return false;
 	    }
 	  if (need_entry & NEED_GOT)
 	    dyn_i->want_got = 1;
@@ -2554,7 +2547,7 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
 	    {
 	      fptr = get_fptr (abfd, info, ia64_info);
 	      if (!fptr)
-		return FALSE;
+		return false;
 	    }
 
 	  /* FPTRs for shared libraries are allocated by the dynamic
@@ -2564,7 +2557,7 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
 	    {
 	      if (! (bfd_elf_link_record_local_dynamic_symbol
 		     (info, abfd, (long) r_symndx)))
-		return FALSE;
+		return false;
 	    }
 
 	  dyn_i->want_fptr = 1;
@@ -2588,7 +2581,7 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
 	    {
 	      pltoff = get_pltoff (abfd, info, ia64_info);
 	      if (!pltoff)
-		return FALSE;
+		return false;
 	    }
 
 	  dyn_i->want_pltoff = 1;
@@ -2597,23 +2590,23 @@ elfNN_ia64_check_relocs (bfd *abfd, stru
 	{
 	  if (!srel)
 	    {
-	      srel = get_reloc_section (abfd, ia64_info, sec, TRUE);
+	      srel = get_reloc_section (abfd, ia64_info, sec, true);
 	      if (!srel)
-		return FALSE;
+		return false;
 	    }
 	  if (!count_dyn_reloc (abfd, dyn_i, srel, dynrel_type,
 				(sec->flags & SEC_READONLY) != 0))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* For cleanliness, and potentially faster dynamic loading, allocate
    external GOT entries first.  */
 
-static bfd_boolean
+static bool
 allocate_global_data_got (struct elfNN_ia64_dyn_sym_info *dyn_i,
 			  void * data)
 {
@@ -2644,7 +2637,7 @@ allocate_global_data_got (struct elfNN_i
 
 	  ia64_info = elfNN_ia64_hash_table (x->info);
 	  if (ia64_info == NULL)
-	    return FALSE;
+	    return false;
 
 	  if (ia64_info->self_dtpmod_offset == (bfd_vma) -1)
 	    {
@@ -2659,12 +2652,12 @@ allocate_global_data_got (struct elfNN_i
       dyn_i->dtprel_offset = x->ofs;
       x->ofs += 8;
     }
-  return TRUE;
+  return true;
 }
 
 /* Next, allocate all the GOT entries used by LTOFF_FPTR relocs.  */
 
-static bfd_boolean
+static bool
 allocate_global_fptr_got (struct elfNN_ia64_dyn_sym_info *dyn_i,
 			  void * data)
 {
@@ -2677,12 +2670,12 @@ allocate_global_fptr_got (struct elfNN_i
       dyn_i->got_offset = x->ofs;
       x->ofs += 8;
     }
-  return TRUE;
+  return true;
 }
 
 /* Lastly, allocate all the GOT entries for local data.  */
 
-static bfd_boolean
+static bool
 allocate_local_got (struct elfNN_ia64_dyn_sym_info *dyn_i,
 		    void * data)
 {
@@ -2694,7 +2687,7 @@ allocate_local_got (struct elfNN_ia64_dy
       dyn_i->got_offset = x->ofs;
       x->ofs += 8;
     }
-  return TRUE;
+  return true;
 }
 
 /* Search for the index of a global symbol in it's defining object file.  */
@@ -2718,7 +2711,7 @@ global_sym_index (struct elf_link_hash_e
 /* Allocate function descriptors.  We can do these for every function
    in a main executable that is not exported.  */
 
-static bfd_boolean
+static bool
 allocate_fptr (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data)
 {
   struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data;
@@ -2734,8 +2727,7 @@ allocate_fptr (struct elfNN_ia64_dyn_sym
 
       if (!bfd_link_executable (x->info)
 	  && (!h
-	      || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-		  && !UNDEFWEAK_NO_DYNAMIC_RELOC (x->info, h))
+	      || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
 	      || (h->root.type != bfd_link_hash_undefweak
 		  && h->root.type != bfd_link_hash_undefined)))
 	{
@@ -2747,7 +2739,7 @@ allocate_fptr (struct elfNN_ia64_dyn_sym
 	      if (!bfd_elf_link_record_local_dynamic_symbol
 		    (x->info, h->root.u.def.section->owner,
 		     global_sym_index (h)))
-		return FALSE;
+		return false;
 	    }
 
 	  dyn_i->want_fptr = 0;
@@ -2760,12 +2752,12 @@ allocate_fptr (struct elfNN_ia64_dyn_sym
       else
 	dyn_i->want_fptr = 0;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate all the minimal PLT entries.  */
 
-static bfd_boolean
+static bool
 allocate_plt_entries (struct elfNN_ia64_dyn_sym_info *dyn_i,
 		      void * data)
 {
@@ -2797,12 +2789,12 @@ allocate_plt_entries (struct elfNN_ia64_
 	  dyn_i->want_plt2 = 0;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate all the full PLT entries.  */
 
-static bfd_boolean
+static bool
 allocate_plt2_entries (struct elfNN_ia64_dyn_sym_info *dyn_i,
 		       void * data)
 {
@@ -2821,7 +2813,7 @@ allocate_plt2_entries (struct elfNN_ia64
 	h = (struct elf_link_hash_entry *) h->root.u.i.link;
       dyn_i->h->plt.offset = ofs;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate all the PLTOFF entries requested by relocations and
@@ -2829,7 +2821,7 @@ allocate_plt2_entries (struct elfNN_ia64
    because the latter are not necessarily addressable by the GP.
    ??? Relaxation might be able to determine that they are.  */
 
-static bfd_boolean
+static bool
 allocate_pltoff_entries (struct elfNN_ia64_dyn_sym_info *dyn_i,
 			 void * data)
 {
@@ -2840,32 +2832,32 @@ allocate_pltoff_entries (struct elfNN_ia
       dyn_i->pltoff_offset = x->ofs;
       x->ofs += 16;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate dynamic relocations for those symbols that turned out
    to be dynamic.  */
 
-static bfd_boolean
+static bool
 allocate_dynrel_entries (struct elfNN_ia64_dyn_sym_info *dyn_i,
 			 void * data)
 {
   struct elfNN_ia64_allocate_data *x = (struct elfNN_ia64_allocate_data *)data;
   struct elfNN_ia64_link_hash_table *ia64_info;
   struct elfNN_ia64_dyn_reloc_entry *rent;
-  bfd_boolean dynamic_symbol, shared, resolved_zero;
+  bool dynamic_symbol, shared, resolved_zero;
 
   ia64_info = elfNN_ia64_hash_table (x->info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   /* Note that this can't be used in relation to FPTR relocs below.  */
   dynamic_symbol = elfNN_ia64_dynamic_symbol_p (dyn_i->h, x->info, 0);
 
   shared = bfd_link_pic (x->info);
   resolved_zero = (dyn_i->h
-		   && UNDEFWEAK_NO_DYNAMIC_RELOC (x->info,
-						       dyn_i->h));
+		   && ELF_ST_VISIBILITY (dyn_i->h->other)
+		   && dyn_i->h->root.type == bfd_link_hash_undefweak);
 
   /* Take care of the GOT and PLT relocations.  */
 
@@ -2890,7 +2882,7 @@ allocate_dynrel_entries (struct elfNN_ia
     ia64_info->root.srelgot->size += sizeof (ElfNN_External_Rela);
 
   if (x->only_got)
-    return TRUE;
+    return true;
 
   if (ia64_info->rel_fptr_sec && dyn_i->want_fptr)
     {
@@ -2957,14 +2949,14 @@ 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;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_adjust_dynamic_symbol (struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  struct elf_link_hash_entry *h)
 {
@@ -2980,7 +2972,7 @@ elfNN_ia64_adjust_dynamic_symbol (struct
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* If this is a reference to a symbol defined by a dynamic object which
@@ -2990,25 +2982,25 @@ elfNN_ia64_adjust_dynamic_symbol (struct
      But IA-64 code is canonically PIC, so as a rule we can avoid this sort
      of hackery.  */
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-elfNN_ia64_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				  struct bfd_link_info *info)
+static bool
+elfNN_ia64_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			       struct bfd_link_info *info)
 {
   struct elfNN_ia64_allocate_data data;
   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)
-    return FALSE;
+    return false;
   dynobj = ia64_info->root.dynobj;
+  if (dynobj == NULL)
+    return true;
   ia64_info->self_dtpmod_offset = (bfd_vma) -1;
-  BFD_ASSERT(dynobj != NULL);
   data.info = info;
 
   /* Set the contents of the .interp section to the interpreter.  */
@@ -3018,6 +3010,7 @@ elfNN_ia64_size_dynamic_sections (bfd *o
       sec = bfd_get_linker_section (dynobj, ".interp");
       BFD_ASSERT (sec != NULL);
       sec->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER;
+      sec->alloced = 1;
       sec->size = strlen (ELF_DYNAMIC_INTERPRETER) + 1;
     }
 
@@ -3091,7 +3084,7 @@ elfNN_ia64_size_dynamic_sections (bfd *o
 
       if (bfd_link_pic (info) && ia64_info->self_dtpmod_offset != (bfd_vma) -1)
 	ia64_info->root.srelgot->size += sizeof (ElfNN_External_Rela);
-      data.only_got = FALSE;
+      data.only_got = false;
       elfNN_ia64_dyn_sym_traverse (ia64_info, allocate_dynrel_entries, &data);
     }
 
@@ -3099,7 +3092,7 @@ elfNN_ia64_size_dynamic_sections (bfd *o
      Allocate memory for them.  */
   for (sec = dynobj->sections; sec != NULL; sec = sec->next)
     {
-      bfd_boolean strip;
+      bool strip;
 
       if (!(sec->flags & SEC_LINKER_CREATED))
 	continue;
@@ -3115,7 +3108,7 @@ elfNN_ia64_size_dynamic_sections (bfd *o
       strip = (sec->size == 0);
 
       if (sec == ia64_info->root.sgot)
-	strip = FALSE;
+	strip = false;
       else if (sec == ia64_info->root.srelgot)
 	{
 	  if (strip)
@@ -3155,7 +3148,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;
@@ -3170,8 +3163,8 @@ elfNN_ia64_size_dynamic_sections (bfd *o
 	  name = bfd_section_name (sec);
 
 	  if (strcmp (name, ".got.plt") == 0)
-	    strip = FALSE;
-	  else if (CONST_STRNEQ (name, ".rel"))
+	    strip = false;
+	  else if (startswith (name, ".rel"))
 	    {
 	      if (!strip)
 		{
@@ -3191,7 +3184,8 @@ elfNN_ia64_size_dynamic_sections (bfd *o
 	  /* Allocate memory for the section contents.  */
 	  sec->contents = (bfd_byte *) bfd_zalloc (dynobj, sec->size);
 	  if (sec->contents == NULL && sec->size != 0)
-	    return FALSE;
+	    return false;
+	  sec->alloced = 1;
 	}
     }
 
@@ -3201,46 +3195,19 @@ 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 (!_bfd_elf_add_dynamic_tags (output_bfd, info, true))
+	return false;
 
       if (!add_dynamic_entry (DT_IA_64_PLT_RESERVE, 0))
-	return FALSE;
-      if (!add_dynamic_entry (DT_PLTGOT, 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 (!add_dynamic_entry (DT_RELA, 0)
-	  || !add_dynamic_entry (DT_RELASZ, 0)
-	  || !add_dynamic_entry (DT_RELAENT, sizeof (ElfNN_External_Rela)))
-	return FALSE;
-
-      if (ia64_info->reltext)
-	{
-	  if (!add_dynamic_entry (DT_TEXTREL, 0))
-	    return FALSE;
-	  info->flags |= DF_TEXTREL;
-	}
+	return false;
     }
 
   /* ??? Perhaps force __gp local.  */
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -3284,7 +3251,7 @@ set_got_entry (bfd *abfd, struct bfd_lin
 {
   struct elfNN_ia64_link_hash_table *ia64_info;
   asection *got_sec;
-  bfd_boolean done;
+  bool done;
   bfd_vma got_offset;
 
   ia64_info = elfNN_ia64_hash_table (info);
@@ -3297,19 +3264,19 @@ set_got_entry (bfd *abfd, struct bfd_lin
     {
     case R_IA64_TPREL64LSB:
       done = dyn_i->tprel_done;
-      dyn_i->tprel_done = TRUE;
+      dyn_i->tprel_done = true;
       got_offset = dyn_i->tprel_offset;
       break;
     case R_IA64_DTPMOD64LSB:
       if (dyn_i->dtpmod_offset != ia64_info->self_dtpmod_offset)
 	{
 	  done = dyn_i->dtpmod_done;
-	  dyn_i->dtpmod_done = TRUE;
+	  dyn_i->dtpmod_done = true;
 	}
       else
 	{
 	  done = ia64_info->self_dtpmod_done;
-	  ia64_info->self_dtpmod_done = TRUE;
+	  ia64_info->self_dtpmod_done = true;
 	  dynindx = 0;
 	}
       got_offset = dyn_i->dtpmod_offset;
@@ -3317,12 +3284,12 @@ set_got_entry (bfd *abfd, struct bfd_lin
     case R_IA64_DTPREL32LSB:
     case R_IA64_DTPREL64LSB:
       done = dyn_i->dtprel_done;
-      dyn_i->dtprel_done = TRUE;
+      dyn_i->dtprel_done = true;
       got_offset = dyn_i->dtprel_offset;
       break;
     default:
       done = dyn_i->got_done;
-      dyn_i->got_done = TRUE;
+      dyn_i->got_done = true;
       got_offset = dyn_i->got_offset;
       break;
     }
@@ -3337,8 +3304,7 @@ set_got_entry (bfd *abfd, struct bfd_lin
       /* Install a dynamic relocation if needed.  */
       if (((bfd_link_pic (info)
 	    && (!dyn_i->h
-		|| (ELF_ST_VISIBILITY (dyn_i->h->other) == STV_DEFAULT
-		    && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, dyn_i->h))
+		|| ELF_ST_VISIBILITY (dyn_i->h->other) == STV_DEFAULT
 		|| dyn_i->h->root.type != bfd_link_hash_undefweak)
 	    && dyn_r_type != R_IA64_DTPREL32LSB
 	    && dyn_r_type != R_IA64_DTPREL64LSB)
@@ -3397,7 +3363,7 @@ set_got_entry (bfd *abfd, struct bfd_lin
 		  dyn_r_type = R_IA64_DTPREL64MSB;
 		  break;
 		default:
-		  BFD_ASSERT (FALSE);
+		  BFD_ASSERT (false);
 		  break;
 		}
 	    }
@@ -3476,7 +3442,7 @@ set_fptr_entry (bfd *abfd, struct bfd_li
 static bfd_vma
 set_pltoff_entry (bfd *abfd, struct bfd_link_info *info,
 		  struct elfNN_ia64_dyn_sym_info *dyn_i,
-		  bfd_vma value, bfd_boolean is_plt)
+		  bfd_vma value, bool is_plt)
 {
   struct elfNN_ia64_link_hash_table *ia64_info;
   asection *pltoff_sec;
@@ -3502,8 +3468,7 @@ set_pltoff_entry (bfd *abfd, struct bfd_
       if (!is_plt
 	  && bfd_link_pic (info)
 	  && (!dyn_i->h
-	      || (ELF_ST_VISIBILITY (dyn_i->h->other) == STV_DEFAULT
-		  && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, dyn_i->h))
+	      || ELF_ST_VISIBILITY (dyn_i->h->other) == STV_DEFAULT
 	      || dyn_i->h->root.type != bfd_link_hash_undefweak))
 	{
 	  unsigned int dyn_r_type;
@@ -3575,8 +3540,8 @@ elfNN_ia64_unwind_entry_compare (const v
 }
 
 /* Make sure we've got ourselves a nice fat __gp value.  */
-static bfd_boolean
-elfNN_ia64_choose_gp (bfd *abfd, struct bfd_link_info *info, bfd_boolean final)
+static bool
+elfNN_ia64_choose_gp (bfd *abfd, struct bfd_link_info *info, bool final)
 {
   bfd_vma min_vma = (bfd_vma) -1, max_vma = 0;
   bfd_vma min_short_vma = min_vma, max_short_vma = 0;
@@ -3587,7 +3552,7 @@ elfNN_ia64_choose_gp (bfd *abfd, struct
 
   ia64_info = elfNN_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   /* Find the min and max vma of all sections marked short.  Also collect
      min and max vma of any type, for use in selecting a nice gp.  */
@@ -3636,8 +3601,8 @@ elfNN_ia64_choose_gp (bfd *abfd, struct
     }
 
   /* See if the user wants to force a value.  */
-  gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", FALSE,
-			     FALSE, FALSE);
+  gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", false,
+			     false, false);
 
   if (gp
       && (gp->root.type == bfd_link_hash_defined
@@ -3702,12 +3667,12 @@ 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)"),
 	     abfd, (uint64_t) (max_short_vma - min_short_vma));
-	  return FALSE;
+	  return false;
 	}
       else if ((gp_val > min_short_vma
 		&& gp_val - min_short_vma > 0x200000)
@@ -3716,16 +3681,16 @@ overflow:
 	{
 	  _bfd_error_handler
 	    (_("%pB: __gp does not cover short data segment"), abfd);
-	  return FALSE;
+	  return false;
 	}
     }
 
   _bfd_set_gp_value (abfd, gp_val);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   struct elfNN_ia64_link_hash_table *ia64_info;
@@ -3733,7 +3698,7 @@ elfNN_ia64_final_link (bfd *abfd, struct
 
   ia64_info = elfNN_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   /* Make sure we've got ourselves a nice fat __gp value.  */
   if (!bfd_link_relocatable (info))
@@ -3744,12 +3709,12 @@ elfNN_ia64_final_link (bfd *abfd, struct
       /* We assume after gp is set, section size will only decrease. We
 	 need to adjust gp for it.  */
       _bfd_set_gp_value (abfd, 0);
-      if (! elfNN_ia64_choose_gp (abfd, info, TRUE))
-	return FALSE;
+      if (! elfNN_ia64_choose_gp (abfd, info, true))
+	return false;
       gp_val = _bfd_get_gp_value (abfd);
 
-      gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", FALSE,
-				 FALSE, FALSE);
+      gp = elf_link_hash_lookup (elf_hash_table (info), "__gp", false,
+				 false, false);
       if (gp)
 	{
 	  gp->root.type = bfd_link_hash_defined;
@@ -3771,13 +3736,13 @@ elfNN_ia64_final_link (bfd *abfd, struct
 	  unwind_output_sec->contents
 	    = bfd_malloc (unwind_output_sec->size);
 	  if (unwind_output_sec->contents == NULL)
-	    return FALSE;
+	    return false;
 	}
     }
 
   /* Invoke the regular ELF backend linker to do all the work.  */
   if (!bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
   if (unwind_output_sec)
     {
@@ -3790,13 +3755,13 @@ elfNN_ia64_final_link (bfd *abfd, struct
       if (! bfd_set_section_contents (abfd, unwind_output_sec,
 				      unwind_output_sec->contents, (bfd_vma) 0,
 				      unwind_output_sec->size))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static int
 elfNN_ia64_relocate_section (bfd *output_bfd,
 			     struct bfd_link_info *info,
 			     bfd *input_bfd,
@@ -3811,13 +3776,13 @@ elfNN_ia64_relocate_section (bfd *output
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
   asection *srel;
-  bfd_boolean ret_val = TRUE;	/* for non-fatal errors */
+  bool ret_val = true;	/* for non-fatal errors */
   bfd_vma gp_val;
 
   symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
   ia64_info = elfNN_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   /* Infect various flags from the input section to the output section.  */
   if (bfd_link_relocatable (info))
@@ -3832,7 +3797,7 @@ elfNN_ia64_relocate_section (bfd *output
     }
 
   gp_val = _bfd_get_gp_value (output_bfd);
-  srel = get_reloc_section (input_bfd, ia64_info, input_section, FALSE);
+  srel = get_reloc_section (input_bfd, ia64_info, input_section, false);
 
   rel = relocs;
   relend = relocs + input_section->reloc_count;
@@ -3848,8 +3813,8 @@ elfNN_ia64_relocate_section (bfd *output
       bfd_vma value;
       asection *sym_sec;
       bfd_byte *hit_addr;
-      bfd_boolean dynamic_symbol_p;
-      bfd_boolean undef_weak_ref;
+      bool dynamic_symbol_p;
+      bool undef_weak_ref;
 
       r_type = ELFNN_R_TYPE (rel->r_info);
       if (r_type > R_IA64_MAX_RELOC_CODE)
@@ -3858,14 +3823,14 @@ elfNN_ia64_relocate_section (bfd *output
 	  _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			      input_bfd, (int) r_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  ret_val = FALSE;
+	  ret_val = false;
 	  continue;
 	}
 
       howto = ia64_elf_lookup_howto (r_type);
       if (howto == NULL)
 	{
-	  ret_val = FALSE;
+	  ret_val = false;
 	  continue;
 	}
 
@@ -3873,7 +3838,7 @@ elfNN_ia64_relocate_section (bfd *output
       h = NULL;
       sym = NULL;
       sym_sec = NULL;
-      undef_weak_ref = FALSE;
+      undef_weak_ref = false;
 
       if (r_symndx < symtab_hdr->sh_info)
 	{
@@ -3890,7 +3855,7 @@ elfNN_ia64_relocate_section (bfd *output
 	    {
 	      struct elfNN_ia64_local_hash_entry *loc_h;
 
-	      loc_h = get_local_sym_hash (ia64_info, input_bfd, rel, FALSE);
+	      loc_h = get_local_sym_hash (ia64_info, input_bfd, rel, false);
 	      if (loc_h && ! loc_h->sec_merge_done)
 		{
 		  struct elfNN_ia64_dyn_sym_info *dynent;
@@ -3929,8 +3894,8 @@ elfNN_ia64_relocate_section (bfd *output
 	}
       else
 	{
-	  bfd_boolean unresolved_reloc;
-	  bfd_boolean warned, ignored;
+	  bool unresolved_reloc;
+	  bool warned, ignored;
 	  struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
@@ -3939,14 +3904,15 @@ elfNN_ia64_relocate_section (bfd *output
 				   unresolved_reloc, warned, ignored);
 
 	  if (h->root.type == bfd_link_hash_undefweak)
-	    undef_weak_ref = TRUE;
+	    undef_weak_ref = true;
 	  else if (warned || (ignored && bfd_link_executable (info)))
 	    continue;
 	}
 
       if (sym_sec != NULL && discarded_section (sym_sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_IA64_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -3970,7 +3936,6 @@ elfNN_ia64_relocate_section (bfd *output
 	case R_IA64_DIR64LSB:
 	  /* Install a dynamic relocation for this reloc.  */
 	  if ((dynamic_symbol_p || bfd_link_pic (info))
-	      && !(h && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
 	      && r_symndx != STN_UNDEF
 	      && (input_section->flags & SEC_ALLOC) != 0)
 	    {
@@ -3994,7 +3959,7 @@ elfNN_ia64_relocate_section (bfd *output
 		     h ? h->root.root.string
 		       : bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
 					   sym_sec));
-		  ret_val = FALSE;
+		  ret_val = false;
 		  continue;
 
 		default:
@@ -4062,7 +4027,7 @@ elfNN_ia64_relocate_section (bfd *output
 		 h ? h->root.root.string
 		   : bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
 				       sym_sec));
-	      ret_val = FALSE;
+	      ret_val = false;
 	      continue;
 	    }
 	  value -= gp_val;
@@ -4072,7 +4037,7 @@ elfNN_ia64_relocate_section (bfd *output
 	case R_IA64_LTOFF22:
 	case R_IA64_LTOFF22X:
 	case R_IA64_LTOFF64I:
-	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
 	  value = set_got_entry (input_bfd, info, dyn_i, (h ? h->dynindx : -1),
 				 rel->r_addend, value, R_IA64_DIRNNLSB);
 	  value -= gp_val;
@@ -4083,8 +4048,8 @@ elfNN_ia64_relocate_section (bfd *output
 	case R_IA64_PLTOFF64I:
 	case R_IA64_PLTOFF64MSB:
 	case R_IA64_PLTOFF64LSB:
-	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
-	  value = set_pltoff_entry (output_bfd, info, dyn_i, value, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
+	  value = set_pltoff_entry (output_bfd, info, dyn_i, value, false);
 	  value -= gp_val;
 	  r = ia64_elf_install_value (hit_addr, value, r_type);
 	  break;
@@ -4094,7 +4059,7 @@ elfNN_ia64_relocate_section (bfd *output
 	case R_IA64_FPTR32LSB:
 	case R_IA64_FPTR64MSB:
 	case R_IA64_FPTR64LSB:
-	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
+	  dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
 	  if (dyn_i->want_fptr)
 	    {
 	      if (!undef_weak_ref)
@@ -4122,7 +4087,7 @@ elfNN_ia64_relocate_section (bfd *output
 		      _bfd_error_handler
 			(_("%pB: linking non-pic code in a position independent executable"),
 			 input_bfd);
-		      ret_val = FALSE;
+		      ret_val = false;
 		      continue;
 		    }
 		  dynindx = 0;
@@ -4163,7 +4128,7 @@ elfNN_ia64_relocate_section (bfd *output
 	  {
 	    long dynindx;
 
-	    dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
+	    dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
 	    if (dyn_i->want_fptr)
 	      {
 		BFD_ASSERT (h == NULL || h->dynindx == -1);
@@ -4217,7 +4182,7 @@ elfNN_ia64_relocate_section (bfd *output
 	  /* We should have created a PLT entry for any dynamic symbol.  */
 	  dyn_i = NULL;
 	  if (h)
-	    dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, FALSE);
+	    dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
 
 	  if (dyn_i && dyn_i->want_plt2)
 	    {
@@ -4271,7 +4236,7 @@ elfNN_ia64_relocate_section (bfd *output
 						      symtab_hdr,
 						      sym,
 						      sym_sec));
-	      ret_val = FALSE;
+	      ret_val = false;
 	      continue;
 	    }
 	  goto finish_pcrel;
@@ -4426,7 +4391,7 @@ elfNN_ia64_relocate_section (bfd *output
 		got_r_type = R_IA64_DTPRELNNLSB;
 		break;
 	      }
-	    dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, FALSE);
+	    dyn_i = get_dyn_sym_info (ia64_info, h, input_bfd, rel, false);
 	    value = set_got_entry (input_bfd, info, dyn_i, dynindx, r_addend,
 				   value, got_r_type);
 	    value -= gp_val;
@@ -4450,7 +4415,7 @@ elfNN_ia64_relocate_section (bfd *output
 	     don't try to continue.  */
 	  (*info->callbacks->undefined_symbol)
 	    (info, "__gp", input_bfd, input_section, rel->r_offset, 1);
-	  return FALSE;
+	  return false;
 
 	case bfd_reloc_notsupported:
 	  {
@@ -4464,7 +4429,7 @@ elfNN_ia64_relocate_section (bfd *output
 	    (*info->callbacks->warning) (info, _("unsupported reloc"),
 					 name, input_bfd,
 					 input_section, rel->r_offset);
-	    ret_val = FALSE;
+	    ret_val = false;
 	  }
 	  break;
 
@@ -4472,7 +4437,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;
 
@@ -4536,7 +4501,7 @@ missing_tls_sec:
 		break;
 	      }
 
-	    ret_val = FALSE;
+	    ret_val = false;
 	  }
 	  break;
 	}
@@ -4545,7 +4510,7 @@ missing_tls_sec:
   return ret_val;
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_finish_dynamic_symbol (bfd *output_bfd,
 				  struct bfd_link_info *info,
 				  struct elf_link_hash_entry *h,
@@ -4555,10 +4520,8 @@ elfNN_ia64_finish_dynamic_symbol (bfd *o
   struct elfNN_ia64_dyn_sym_info *dyn_i;
 
   ia64_info = elfNN_ia64_hash_table (info);
-  if (ia64_info == NULL)
-    return FALSE;
 
-  dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, FALSE);
+  dyn_i = get_dyn_sym_info (ia64_info, h, NULL, NULL, false);
 
   /* Fill in the PLT data, if required.  */
   if (dyn_i && dyn_i->want_plt)
@@ -4583,7 +4546,7 @@ elfNN_ia64_finish_dynamic_symbol (bfd *o
       plt_addr = (plt_sec->output_section->vma
 		  + plt_sec->output_offset
 		  + dyn_i->plt_offset);
-      pltoff_addr = set_pltoff_entry (output_bfd, info, dyn_i, plt_addr, TRUE);
+      pltoff_addr = set_pltoff_entry (output_bfd, info, dyn_i, plt_addr, true);
 
       /* Initialize the FULL PLT entry, if needed.  */
       if (dyn_i->want_plt2)
@@ -4633,10 +4596,10 @@ elfNN_ia64_finish_dynamic_symbol (bfd *o
       || h == ia64_info->root.hplt)
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_finish_dynamic_sections (bfd *abfd,
 				    struct bfd_link_info *info)
 {
@@ -4645,7 +4608,7 @@ elfNN_ia64_finish_dynamic_sections (bfd
 
   ia64_info = elfNN_ia64_hash_table (info);
   if (ia64_info == NULL)
-    return FALSE;
+    return false;
 
   dynobj = ia64_info->root.dynobj;
 
@@ -4713,44 +4676,47 @@ elfNN_ia64_finish_dynamic_sections (bfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* ELF file flag handling:  */
 
 /* Function to keep IA-64 specific file flags.  */
-static bfd_boolean
+static bool
 elfNN_ia64_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
-static bfd_boolean
+
+static bool
 elfNN_ia64_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword out_flags;
   flagword in_flags;
-  bfd_boolean ok = TRUE;
+  bool 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)
-    return FALSE;
+  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;
 
   if (! elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = in_flags;
 
       if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
@@ -4760,12 +4726,12 @@ elfNN_ia64_merge_private_bfd_data (bfd *
 				    bfd_get_mach (ibfd));
 	}
 
-      return TRUE;
+      return true;
     }
 
   /* Check flag compatibility.  */
   if (in_flags == out_flags)
-    return TRUE;
+    return true;
 
   /* Output has EF_IA_64_REDUCEDFP set only if all inputs have it set.  */
   if (!(in_flags & EF_IA_64_REDUCEDFP) && (out_flags & EF_IA_64_REDUCEDFP))
@@ -4778,7 +4744,7 @@ elfNN_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
   if ((in_flags & EF_IA_64_BE) != (out_flags & EF_IA_64_BE))
     {
@@ -4787,7 +4753,7 @@ elfNN_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
   if ((in_flags & EF_IA_64_ABI64) != (out_flags & EF_IA_64_ABI64))
     {
@@ -4796,7 +4762,7 @@ elfNN_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
   if ((in_flags & EF_IA_64_CONS_GP) != (out_flags & EF_IA_64_CONS_GP))
     {
@@ -4805,7 +4771,7 @@ elfNN_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
   if ((in_flags & EF_IA_64_NOFUNCDESC_CONS_GP)
       != (out_flags & EF_IA_64_NOFUNCDESC_CONS_GP))
@@ -4815,13 +4781,13 @@ elfNN_ia64_merge_private_bfd_data (bfd *
 	 ibfd);
 
       bfd_set_error (bfd_error_bad_value);
-      ok = FALSE;
+      ok = false;
     }
 
   return ok;
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_print_private_bfd_data (bfd *abfd, void * ptr)
 {
   FILE *file = (FILE *) ptr;
@@ -4840,7 +4806,7 @@ elfNN_ia64_print_private_bfd_data (bfd *
 	   (flags & EF_IA_64_ABI64) ? "ABI64" : "ABI32");
 
   _bfd_elf_print_private_bfd_data (abfd, ptr);
-  return TRUE;
+  return true;
 }
 
 static enum elf_reloc_type_class
@@ -4872,7 +4838,7 @@ static const struct bfd_elf_special_sect
   { NULL,		     0,	  0, 0,		   0 }
 };
 
-static bfd_boolean
+static bool
 elfNN_ia64_object_p (bfd *abfd)
 {
   asection *sec;
@@ -4880,10 +4846,10 @@ 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;
+    return true;
 
   /* Flags for fake group section.  */
   flags = (SEC_LINKER_CREATED | SEC_GROUP | SEC_LINK_ONCE
@@ -4896,14 +4862,14 @@ elfNN_ia64_object_p (bfd *abfd)
       if (elf_sec_group (sec) == NULL
 	  && ((sec->flags & (SEC_LINK_ONCE | SEC_CODE | SEC_GROUP))
 	      == (SEC_LINK_ONCE | SEC_CODE))
-	  && CONST_STRNEQ (sec->name, ".gnu.linkonce.t."))
+	  && startswith (sec->name, ".gnu.linkonce.t."))
 	{
 	  name = sec->name + 16;
 
 	  amt = strlen (name) + sizeof (".gnu.linkonce.ia64unwi.");
 	  unwi_name = bfd_alloc (abfd, amt);
 	  if (!unwi_name)
-	    return FALSE;
+	    return false;
 
 	  strcpy (stpcpy (unwi_name, ".gnu.linkonce.ia64unwi."), name);
 	  unwi = bfd_get_section_by_name (abfd, unwi_name);
@@ -4911,7 +4877,7 @@ elfNN_ia64_object_p (bfd *abfd)
 	  amt = strlen (name) + sizeof (".gnu.linkonce.ia64unw.");
 	  unw_name = bfd_alloc (abfd, amt);
 	  if (!unw_name)
-	    return FALSE;
+	    return false;
 
 	  strcpy (stpcpy (unw_name, ".gnu.linkonce.ia64unw."), name);
 	  unw = bfd_get_section_by_name (abfd, unw_name);
@@ -4921,7 +4887,7 @@ elfNN_ia64_object_p (bfd *abfd)
 	  group = bfd_make_section_anyway_with_flags (abfd, name,
 						      flags);
 	  if (group == NULL)
-	    return FALSE;
+	    return false;
 
 	  /* Move the fake group section to the beginning.  */
 	  bfd_section_list_remove (abfd, group);
@@ -4962,40 +4928,40 @@ elfNN_ia64_object_p (bfd *abfd)
 	  elf_section_data (group)->this_hdr.sh_type = SHT_GROUP;
 	}
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfNN_ia64_hpux_vec (const bfd_target *vec)
 {
   extern const bfd_target ia64_elfNN_hpux_be_vec;
   return (vec == &ia64_elfNN_hpux_be_vec);
 }
 
-static bfd_boolean
+static bool
 elfNN_hpux_init_file_header (bfd *abfd, struct bfd_link_info *info)
 {
   Elf_Internal_Ehdr *i_ehdrp;
 
   if (!_bfd_elf_init_file_header (abfd, info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
   i_ehdrp->e_ident[EI_OSABI] = get_elf_backend_data (abfd)->elf_osabi;
   i_ehdrp->e_ident[EI_ABIVERSION] = 1;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elfNN_hpux_backend_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					     asection *sec, int *retval)
 {
   if (bfd_is_com_section (sec))
     {
       *retval = SHN_IA_64_ANSI_COMMON;
-      return TRUE;
+      return true;
     }
-  return FALSE;
+  return false;
 }
 
 static void
@@ -5013,6 +4979,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"
@@ -5066,8 +5037,8 @@ elfNN_hpux_backend_symbol_processing (bf
 	elfNN_ia64_check_relocs
 #define elf_backend_adjust_dynamic_symbol \
 	elfNN_ia64_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections \
-	elfNN_ia64_size_dynamic_sections
+#define elf_backend_late_size_sections \
+	elfNN_ia64_late_size_sections
 #define elf_backend_omit_section_dynsym \
 	_bfd_elf_omit_section_dynsym_all
 #define elf_backend_relocate_section \
@@ -5110,7 +5081,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.20200303/bfd/elfnn-kvx.c ./bfd/elfnn-kvx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfnn-kvx.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elfnn-kvx.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,4776 @@
+/* KVX-specific support for NN-bit ELF.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   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; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libiberty.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "bfdlink.h"
+#include "objalloc.h"
+#include "elf/kvx.h"
+#include "elfxx-kvx.h"
+
+#define ARCH_SIZE	NN
+
+#if ARCH_SIZE == 64
+#define LOG_FILE_ALIGN	3
+#endif
+
+#if ARCH_SIZE == 32
+#define LOG_FILE_ALIGN	2
+#endif
+
+#define IS_KVX_TLS_RELOC(R_TYPE)			\
+  ((R_TYPE) == BFD_RELOC_KVX_S37_TLS_LE_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_LE_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LE_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LE_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LE_EX6	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_IE_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_IE_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_IE_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_IE_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_IE_EX6	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_GD_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_GD_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_GD_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_GD_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_GD_EX6	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_LD_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S37_TLS_LD_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LD_LO10	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LD_UP27	\
+   || (R_TYPE) == BFD_RELOC_KVX_S43_TLS_LD_EX6	\
+   )
+
+#define IS_KVX_TLS_RELAX_RELOC(R_TYPE) 0
+
+#define ELIMINATE_COPY_RELOCS 0
+
+/* Return size of a relocation entry.  HTAB is the bfd's
+   elf_kvx_link_hash_entry.  */
+#define RELOC_SIZE(HTAB) (sizeof (ElfNN_External_Rela))
+
+/* GOT Entry size - 8 bytes in ELF64 and 4 bytes in ELF32.  */
+#define GOT_ENTRY_SIZE                  (ARCH_SIZE / 8)
+#define PLT_ENTRY_SIZE                  (32)
+
+#define PLT_SMALL_ENTRY_SIZE            (4*4)
+
+/* Encoding of the nop instruction */
+#define INSN_NOP 0x00f0037f
+
+#define kvx_compute_jump_table_size(htab)		\
+  (((htab)->root.srelplt == NULL) ? 0			\
+   : (htab)->root.srelplt->reloc_count * GOT_ENTRY_SIZE)
+
+static const bfd_byte elfNN_kvx_small_plt0_entry[PLT_ENTRY_SIZE] =
+{
+ /* FIXME KVX: no first entry, not used yet */
+  0
+};
+
+/* Per function entry in a procedure linkage table looks like this
+   if the distance between the PLTGOT and the PLT is < 4GB use
+   these PLT entries.  */
+static const bfd_byte elfNN_kvx_small_plt_entry[PLT_SMALL_ENTRY_SIZE] =
+{
+  0x10, 0x00, 0xc4, 0x0f,       /* get $r16 = $pc     ;; */
+#if ARCH_SIZE == 32
+  0x10, 0x00, 0x40, 0xb0,       /* lwz $r16 = 0[$r16]   ;; */
+#else
+  0x10, 0x00, 0x40, 0xb8,       /* ld $r16 = 0[$r16] ;; */
+#endif
+  0x00, 0x00, 0x00, 0x18,       /* upper 27 bits for LSU */
+  0x10, 0x00, 0xd8, 0x0f,	/* igoto $r16          ;; */
+};
+
+/* Long stub use 43bits format of make. */
+static const uint32_t elfNN_kvx_long_branch_stub[] =
+{
+  0xe0400000,      /* make $r16 = LO10<emm43> EX6<imm43> */
+  0x00000000,      /* UP27<imm43> ;; */
+  0x0fd80010,      /* igoto "r16  ;; */
+};
+
+#define elf_info_to_howto               elfNN_kvx_info_to_howto
+#define elf_info_to_howto_rel           elfNN_kvx_info_to_howto
+
+#define KVX_ELF_ABI_VERSION		0
+
+/* In case we're on a 32-bit machine, construct a 64-bit "-1" value.  */
+#define ALL_ONES (~ (bfd_vma) 0)
+
+/* Indexed by the bfd interal reloc enumerators.
+   Therefore, the table needs to be synced with BFD_RELOC_KVX_*
+   in reloc.c.   */
+
+#define KVX_KV3_V1_KV3_V2_KV4_V1
+#include "elfxx-kvx-relocs.h"
+#undef KVX_KV3_V1_KV3_V2_KV4_V1
+
+/* Given HOWTO, return the bfd internal relocation enumerator.  */
+
+static bfd_reloc_code_real_type
+elfNN_kvx_bfd_reloc_from_howto (reloc_howto_type *howto)
+{
+  const int size = (int) ARRAY_SIZE (elf_kvx_howto_table);
+  const ptrdiff_t offset = howto - elf_kvx_howto_table;
+
+  if (offset >= 0 && offset < size)
+    return BFD_RELOC_KVX_RELOC_START + offset + 1;
+
+  return BFD_RELOC_KVX_RELOC_START + 1;
+}
+
+/* Given R_TYPE, return the bfd internal relocation enumerator.  */
+
+static bfd_reloc_code_real_type
+elfNN_kvx_bfd_reloc_from_type (bfd *abfd ATTRIBUTE_UNUSED, unsigned int r_type)
+{
+  static bool initialized_p = false;
+  /* Indexed by R_TYPE, values are offsets in the howto_table.  */
+  static unsigned int offsets[R_KVX_end];
+
+  if (!initialized_p)
+    {
+      unsigned int i;
+
+      for (i = 0; i < ARRAY_SIZE (elf_kvx_howto_table); ++i)
+	offsets[elf_kvx_howto_table[i].type] = i;
+
+      initialized_p = true;
+    }
+
+  /* PR 17512: file: b371e70a.  */
+  if (r_type >= R_KVX_end)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return BFD_RELOC_KVX_RELOC_END;
+    }
+
+  return (BFD_RELOC_KVX_RELOC_START + 1) + offsets[r_type];
+}
+
+struct elf_kvx_reloc_map
+{
+  bfd_reloc_code_real_type from;
+  bfd_reloc_code_real_type to;
+};
+
+/* Map bfd generic reloc to KVX-specific reloc.  */
+static const struct elf_kvx_reloc_map elf_kvx_reloc_map[] =
+{
+  {BFD_RELOC_NONE, BFD_RELOC_KVX_NONE},
+
+  /* Basic data relocations.  */
+  {BFD_RELOC_CTOR, BFD_RELOC_KVX_NN},
+  {BFD_RELOC_64, BFD_RELOC_KVX_64},
+  {BFD_RELOC_32, BFD_RELOC_KVX_32},
+  {BFD_RELOC_16, BFD_RELOC_KVX_16},
+  {BFD_RELOC_8,  BFD_RELOC_KVX_8},
+
+  {BFD_RELOC_64_PCREL, BFD_RELOC_KVX_64_PCREL},
+  {BFD_RELOC_32_PCREL, BFD_RELOC_KVX_32_PCREL},
+};
+
+/* Given the bfd internal relocation enumerator in CODE, return the
+   corresponding howto entry.  */
+
+static reloc_howto_type *
+elfNN_kvx_howto_from_bfd_reloc (bfd_reloc_code_real_type code)
+{
+  unsigned int i;
+
+  /* Convert bfd generic reloc to KVX-specific reloc.  */
+  if (code < BFD_RELOC_KVX_RELOC_START || code > BFD_RELOC_KVX_RELOC_END)
+    for (i = 0; i < ARRAY_SIZE (elf_kvx_reloc_map) ; i++)
+      if (elf_kvx_reloc_map[i].from == code)
+	{
+	  code = elf_kvx_reloc_map[i].to;
+	  break;
+	}
+
+  if (code > BFD_RELOC_KVX_RELOC_START && code < BFD_RELOC_KVX_RELOC_END)
+      return &elf_kvx_howto_table[code - (BFD_RELOC_KVX_RELOC_START + 1)];
+
+  return NULL;
+}
+
+static reloc_howto_type *
+elfNN_kvx_howto_from_type (bfd *abfd, unsigned int r_type)
+{
+  bfd_reloc_code_real_type val;
+  reloc_howto_type *howto;
+
+#if ARCH_SIZE == 32
+  if (r_type > 256)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return NULL;
+    }
+#endif
+
+  val = elfNN_kvx_bfd_reloc_from_type (abfd, r_type);
+  howto = elfNN_kvx_howto_from_bfd_reloc (val);
+
+  if (howto != NULL)
+    return howto;
+
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+static bool
+elfNN_kvx_info_to_howto (bfd *abfd ATTRIBUTE_UNUSED, arelent *bfd_reloc,
+			 Elf_Internal_Rela *elf_reloc)
+{
+  unsigned int r_type;
+
+  r_type = ELFNN_R_TYPE (elf_reloc->r_info);
+  bfd_reloc->howto = elfNN_kvx_howto_from_type (abfd, r_type);
+
+  if (bfd_reloc->howto == NULL)
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
+			  abfd, r_type);
+      return false;
+    }
+  return true;
+}
+
+static reloc_howto_type *
+elfNN_kvx_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+			     bfd_reloc_code_real_type code)
+{
+  reloc_howto_type *howto = elfNN_kvx_howto_from_bfd_reloc (code);
+
+  if (howto != NULL)
+    return howto;
+
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+static reloc_howto_type *
+elfNN_kvx_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+			     const char *r_name)
+{
+  unsigned int i;
+
+  for (i = 0; i < ARRAY_SIZE (elf_kvx_howto_table); ++i)
+    if (elf_kvx_howto_table[i].name != NULL
+	&& strcasecmp (elf_kvx_howto_table[i].name, r_name) == 0)
+      return &elf_kvx_howto_table[i];
+
+  return NULL;
+}
+
+#define TARGET_LITTLE_SYM               kvx_elfNN_vec
+#define TARGET_LITTLE_NAME              "elfNN-kvx"
+
+/* The linker script knows the section names for placement.
+   The entry_names are used to do simple name mangling on the stubs.
+   Given a function name, and its type, the stub can be found. The
+   name can be changed. The only requirement is the %s be present.  */
+#define STUB_ENTRY_NAME   "__%s_veneer"
+
+/* The name of the dynamic interpreter.  This is put in the .interp
+   section.  */
+#define ELF_DYNAMIC_INTERPRETER     "/lib/ld.so.1"
+
+
+/* PCREL 27 is signed-extended and scaled by 4 */
+#define KVX_MAX_FWD_CALL_OFFSET \
+  (((1 << 26) - 1) << 2)
+#define KVX_MAX_BWD_CALL_OFFSET \
+  (-((1 << 26) << 2))
+
+/* Check that the destination of the call is within the PCREL27
+   range. */
+static int
+kvx_valid_call_p (bfd_vma value, bfd_vma place)
+{
+  bfd_signed_vma offset = (bfd_signed_vma) (value - place);
+  return (offset <= KVX_MAX_FWD_CALL_OFFSET
+	  && offset >= KVX_MAX_BWD_CALL_OFFSET);
+}
+
+/* Section name for stubs is the associated section name plus this
+   string.  */
+#define STUB_SUFFIX ".stub"
+
+enum elf_kvx_stub_type
+{
+  kvx_stub_none,
+  kvx_stub_long_branch,
+};
+
+struct elf_kvx_stub_hash_entry
+{
+  /* Base hash table entry structure.  */
+  struct bfd_hash_entry root;
+
+  /* The stub section.  */
+  asection *stub_sec;
+
+  /* Offset within stub_sec of the beginning of this stub.  */
+  bfd_vma stub_offset;
+
+  /* Given the symbol's value and its section we can determine its final
+     value when building the stubs (so the stub knows where to jump).  */
+  bfd_vma target_value;
+  asection *target_section;
+
+  enum elf_kvx_stub_type stub_type;
+
+  /* The symbol table entry, if any, that this was derived from.  */
+  struct elf_kvx_link_hash_entry *h;
+
+  /* Destination symbol type */
+  unsigned char st_type;
+
+  /* Where this stub is being called from, or, in the case of combined
+     stub sections, the first input section in the group.  */
+  asection *id_sec;
+
+  /* The name for the local symbol at the start of this stub.  The
+     stub name in the hash table has to be unique; this does not, so
+     it can be friendlier.  */
+  char *output_name;
+};
+
+/* Used to build a map of a section.  This is required for mixed-endian
+   code/data.  */
+
+typedef struct elf_elf_section_map
+{
+  bfd_vma vma;
+  char type;
+}
+elf_kvx_section_map;
+
+
+typedef struct _kvx_elf_section_data
+{
+  struct bfd_elf_section_data elf;
+  unsigned int mapcount;
+  unsigned int mapsize;
+  elf_kvx_section_map *map;
+}
+_kvx_elf_section_data;
+
+#define elf_kvx_section_data(sec) \
+  ((_kvx_elf_section_data *) elf_section_data (sec))
+
+struct elf_kvx_local_symbol
+{
+  unsigned int got_type;
+  bfd_signed_vma got_refcount;
+  bfd_vma got_offset;
+};
+
+struct elf_kvx_obj_tdata
+{
+  struct elf_obj_tdata root;
+
+  /* local symbol descriptors */
+  struct elf_kvx_local_symbol *locals;
+
+  /* Zero to warn when linking objects with incompatible enum sizes.  */
+  int no_enum_size_warning;
+
+  /* Zero to warn when linking objects with incompatible wchar_t sizes.  */
+  int no_wchar_size_warning;
+};
+
+#define elf_kvx_tdata(bfd)				\
+  ((struct elf_kvx_obj_tdata *) (bfd)->tdata.any)
+
+#define elf_kvx_locals(bfd) (elf_kvx_tdata (bfd)->locals)
+
+#define is_kvx_elf(bfd)				\
+  (bfd_get_flavour (bfd) == bfd_target_elf_flavour	\
+   && elf_tdata (bfd) != NULL				\
+   && elf_object_id (bfd) == KVX_ELF_DATA)
+
+static bool
+elfNN_kvx_mkobject (bfd *abfd)
+{
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_kvx_obj_tdata));
+}
+
+#define elf_kvx_hash_entry(ent) \
+  ((struct elf_kvx_link_hash_entry *)(ent))
+
+#define GOT_UNKNOWN    0
+#define GOT_NORMAL     1
+
+#define GOT_TLS_GD     2
+#define GOT_TLS_IE     4
+#define GOT_TLS_LD     8
+
+/* KVX ELF linker hash entry.  */
+struct elf_kvx_link_hash_entry
+{
+  struct elf_link_hash_entry root;
+
+  /* Since PLT entries have variable size, we need to record the
+     index into .got.plt instead of recomputing it from the PLT
+     offset.  */
+  bfd_signed_vma plt_got_offset;
+
+  /* Bit mask representing the type of GOT entry(s) if any required by
+     this symbol.  */
+  unsigned int got_type;
+
+  /* A pointer to the most recently used stub hash entry against this
+     symbol.  */
+  struct elf_kvx_stub_hash_entry *stub_cache;
+};
+
+/* Get the KVX elf linker hash table from a link_info structure.  */
+#define elf_kvx_hash_table(info)					\
+  ((struct elf_kvx_link_hash_table *) ((info)->hash))
+
+#define kvx_stub_hash_lookup(table, string, create, copy)		\
+  ((struct elf_kvx_stub_hash_entry *)				\
+   bfd_hash_lookup ((table), (string), (create), (copy)))
+
+/* KVX ELF linker hash table.  */
+struct elf_kvx_link_hash_table
+{
+  /* The main hash table.  */
+  struct elf_link_hash_table root;
+
+  /* Nonzero to force PIC branch veneers.  */
+  int pic_veneer;
+
+  /* The number of bytes in the initial entry in the PLT.  */
+  bfd_size_type plt_header_size;
+
+  /* The number of bytes in the subsequent PLT etries.  */
+  bfd_size_type plt_entry_size;
+
+  /* The bytes of the subsequent PLT entry.  */
+  const bfd_byte *plt_entry;
+
+  /* Short-cuts to get to dynamic linker sections.  */
+  asection *sdynbss;
+  asection *srelbss;
+
+  /* Small local sym cache.  */
+  struct sym_cache sym_cache;
+
+  /* For convenience in allocate_dynrelocs.  */
+  bfd *obfd;
+
+  /* The amount of space used by the reserved portion of the sgotplt
+     section, plus whatever space is used by the jump slots.  */
+  bfd_vma sgotplt_jump_table_size;
+
+  /* The stub hash table.  */
+  struct bfd_hash_table stub_hash_table;
+
+  /* Linker stub bfd.  */
+  bfd *stub_bfd;
+
+  /* Linker call-backs.  */
+  asection *(*add_stub_section) (const char *, asection *);
+  void (*layout_sections_again) (void);
+
+  /* Array to keep track of which stub sections have been created, and
+     information on stub grouping.  */
+  struct map_stub
+  {
+    /* This is the section to which stubs in the group will be
+       attached.  */
+    asection *link_sec;
+    /* The stub section.  */
+    asection *stub_sec;
+  } *stub_group;
+
+  /* Assorted information used by elfNN_kvx_size_stubs.  */
+  unsigned int bfd_count;
+  unsigned int top_index;
+  asection **input_list;
+};
+
+/* Create an entry in an KVX ELF linker hash table.  */
+
+static struct bfd_hash_entry *
+elfNN_kvx_link_hash_newfunc (struct bfd_hash_entry *entry,
+			     struct bfd_hash_table *table,
+			     const char *string)
+{
+  struct elf_kvx_link_hash_entry *ret =
+    (struct elf_kvx_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_kvx_link_hash_entry));
+  if (ret == NULL)
+    return (struct bfd_hash_entry *) ret;
+
+  /* Call the allocation method of the superclass.  */
+  ret = ((struct elf_kvx_link_hash_entry *)
+	 _bfd_elf_link_hash_newfunc ((struct bfd_hash_entry *) ret,
+				     table, string));
+  if (ret != NULL)
+    {
+      ret->got_type = GOT_UNKNOWN;
+      ret->plt_got_offset = (bfd_vma) - 1;
+      ret->stub_cache = NULL;
+    }
+
+  return (struct bfd_hash_entry *) ret;
+}
+
+/* Initialize an entry in the stub hash table.  */
+
+static struct bfd_hash_entry *
+stub_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
+					 elf_kvx_stub_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 elf_kvx_stub_hash_entry *eh;
+
+      /* Initialize the local fields.  */
+      eh = (struct elf_kvx_stub_hash_entry *) entry;
+      eh->stub_sec = NULL;
+      eh->stub_offset = 0;
+      eh->target_value = 0;
+      eh->target_section = NULL;
+      eh->stub_type = kvx_stub_none;
+      eh->h = NULL;
+      eh->id_sec = NULL;
+    }
+
+  return entry;
+}
+
+/* Copy the extra info we tack onto an elf_link_hash_entry.  */
+
+static void
+elfNN_kvx_copy_indirect_symbol (struct bfd_link_info *info,
+				struct elf_link_hash_entry *dir,
+				struct elf_link_hash_entry *ind)
+{
+  struct elf_kvx_link_hash_entry *edir, *eind;
+
+  edir = (struct elf_kvx_link_hash_entry *) dir;
+  eind = (struct elf_kvx_link_hash_entry *) ind;
+
+  if (ind->root.type == bfd_link_hash_indirect)
+    {
+      /* Copy over PLT info.  */
+      if (dir->got.refcount <= 0)
+	{
+	  edir->got_type = eind->got_type;
+	  eind->got_type = GOT_UNKNOWN;
+	}
+    }
+
+  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
+}
+
+/* Destroy a KVX elf linker hash table.  */
+
+static void
+elfNN_kvx_link_hash_table_free (bfd *obfd)
+{
+  struct elf_kvx_link_hash_table *ret
+    = (struct elf_kvx_link_hash_table *) obfd->link.hash;
+
+  bfd_hash_table_free (&ret->stub_hash_table);
+  _bfd_elf_link_hash_table_free (obfd);
+}
+
+/* Create a KVX elf linker hash table.  */
+
+static struct bfd_link_hash_table *
+elfNN_kvx_link_hash_table_create (bfd *abfd)
+{
+  struct elf_kvx_link_hash_table *ret;
+  bfd_size_type amt = sizeof (struct elf_kvx_link_hash_table);
+
+  ret = bfd_zmalloc (amt);
+  if (ret == NULL)
+    return NULL;
+
+  if (!_bfd_elf_link_hash_table_init
+      (&ret->root, abfd, elfNN_kvx_link_hash_newfunc,
+       sizeof (struct elf_kvx_link_hash_entry)))
+    {
+      free (ret);
+      return NULL;
+    }
+
+  ret->plt_header_size = PLT_ENTRY_SIZE;
+  ret->plt_entry_size = PLT_SMALL_ENTRY_SIZE;
+  ret->plt_entry = elfNN_kvx_small_plt_entry;
+
+  ret->obfd = abfd;
+
+  if (!bfd_hash_table_init (&ret->stub_hash_table, stub_hash_newfunc,
+			    sizeof (struct elf_kvx_stub_hash_entry)))
+    {
+      _bfd_elf_link_hash_table_free (abfd);
+      return NULL;
+    }
+
+  ret->root.root.hash_table_free = elfNN_kvx_link_hash_table_free;
+
+  return &ret->root.root;
+}
+
+static bfd_reloc_status_type
+kvx_relocate (unsigned int r_type, bfd *input_bfd, asection *input_section,
+	      bfd_vma offset, bfd_vma value)
+{
+  reloc_howto_type *howto;
+
+  howto = elfNN_kvx_howto_from_type (input_bfd, r_type);
+  r_type = elfNN_kvx_bfd_reloc_from_type (input_bfd, r_type);
+  return _bfd_kvx_elf_put_addend (input_bfd,
+				  input_section->contents + offset, r_type,
+				  howto, value);
+}
+
+/* Determine the type of stub needed, if any, for a call.  */
+
+static enum elf_kvx_stub_type
+kvx_type_of_stub (asection *input_sec,
+		  const Elf_Internal_Rela *rel,
+		  asection *sym_sec,
+		  unsigned char st_type,
+		  bfd_vma destination)
+{
+  bfd_vma location;
+  bfd_signed_vma branch_offset;
+  unsigned int r_type;
+  enum elf_kvx_stub_type stub_type = kvx_stub_none;
+
+  if (st_type != STT_FUNC
+      && (sym_sec == input_sec))
+    return stub_type;
+
+  /* Determine where the call point is.  */
+  location = (input_sec->output_offset
+	      + input_sec->output_section->vma + rel->r_offset);
+
+  branch_offset = (bfd_signed_vma) (destination - location);
+
+  r_type = ELFNN_R_TYPE (rel->r_info);
+
+  /* We don't want to redirect any old unconditional jump in this way,
+     only one which is being used for a sibcall, where it is
+     acceptable for the R16 and R17 registers to be clobbered.  */
+  if (r_type == R_KVX_PCREL27
+      && (branch_offset > KVX_MAX_FWD_CALL_OFFSET
+	  || branch_offset < KVX_MAX_BWD_CALL_OFFSET))
+    {
+      stub_type = kvx_stub_long_branch;
+    }
+
+  return stub_type;
+}
+
+/* Build a name for an entry in the stub hash table.  */
+
+static char *
+elfNN_kvx_stub_name (const asection *input_section,
+		     const asection *sym_sec,
+		     const struct elf_kvx_link_hash_entry *hash,
+		     const Elf_Internal_Rela *rel)
+{
+  char *stub_name;
+  bfd_size_type len;
+
+  if (hash)
+    {
+      len = 8 + 1 + strlen (hash->root.root.root.string) + 1 + 16 + 1;
+      stub_name = bfd_malloc (len);
+      if (stub_name != NULL)
+	snprintf (stub_name, len, "%08x_%s+%" PRIx64 "x",
+		  (unsigned int) input_section->id,
+		  hash->root.root.root.string,
+		  (uint64_t) rel->r_addend);
+    }
+  else
+    {
+      len = 8 + 1 + 8 + 1 + 8 + 1 + 16 + 1;
+      stub_name = bfd_malloc (len);
+      if (stub_name != NULL)
+	snprintf (stub_name, len, "%08x_%x:%x+%" PRIx64 "x",
+		  (unsigned int) input_section->id,
+		  (unsigned int) sym_sec->id,
+		  (unsigned int) ELFNN_R_SYM (rel->r_info),
+		  (uint64_t) rel->r_addend);
+    }
+
+  return stub_name;
+}
+
+/* Return true if symbol H should be hashed in the `.gnu.hash' section.  For
+   executable PLT slots where the executable never takes the address of those
+   functions, the function symbols are not added to the hash table.  */
+
+static bool
+elf_kvx_hash_symbol (struct elf_link_hash_entry *h)
+{
+  if (h->plt.offset != (bfd_vma) -1
+      && !h->def_regular
+      && !h->pointer_equality_needed)
+    return false;
+
+  return _bfd_elf_hash_symbol (h);
+}
+
+
+/* Look up an entry in the stub hash.  Stub entries are cached because
+   creating the stub name takes a bit of time.  */
+
+static struct elf_kvx_stub_hash_entry *
+elfNN_kvx_get_stub_entry (const asection *input_section,
+			  const asection *sym_sec,
+			  struct elf_link_hash_entry *hash,
+			  const Elf_Internal_Rela *rel,
+			  struct elf_kvx_link_hash_table *htab)
+{
+  struct elf_kvx_stub_hash_entry *stub_entry;
+  struct elf_kvx_link_hash_entry *h =
+    (struct elf_kvx_link_hash_entry *) hash;
+  const asection *id_sec;
+
+  if ((input_section->flags & SEC_CODE) == 0)
+    return NULL;
+
+  /* If this input section is part of a group of sections sharing one
+     stub section, then use the id of the first section in the group.
+     Stub names need to include a section id, as there may well be
+     more than one stub used to reach say, printf, and we need to
+     distinguish between them.  */
+  id_sec = htab->stub_group[input_section->id].link_sec;
+
+  if (h != NULL && h->stub_cache != NULL
+      && h->stub_cache->h == h && h->stub_cache->id_sec == id_sec)
+    {
+      stub_entry = h->stub_cache;
+    }
+  else
+    {
+      char *stub_name;
+
+      stub_name = elfNN_kvx_stub_name (id_sec, sym_sec, h, rel);
+      if (stub_name == NULL)
+	return NULL;
+
+      stub_entry = kvx_stub_hash_lookup (&htab->stub_hash_table,
+					 stub_name, false, false);
+      if (h != NULL)
+	h->stub_cache = stub_entry;
+
+      free (stub_name);
+    }
+
+  return stub_entry;
+}
+
+
+/* Create a stub section.  */
+
+static asection *
+_bfd_kvx_create_stub_section (asection *section,
+			      struct elf_kvx_link_hash_table *htab)
+
+{
+  size_t namelen;
+  bfd_size_type len;
+  char *s_name;
+
+  namelen = strlen (section->name);
+  len = namelen + sizeof (STUB_SUFFIX);
+  s_name = bfd_alloc (htab->stub_bfd, len);
+  if (s_name == NULL)
+    return NULL;
+
+  memcpy (s_name, section->name, namelen);
+  memcpy (s_name + namelen, STUB_SUFFIX, sizeof (STUB_SUFFIX));
+  return (*htab->add_stub_section) (s_name, section);
+}
+
+
+/* Find or create a stub section for a link section.
+
+   Fix or create the stub section used to collect stubs attached to
+   the specified link section.  */
+
+static asection *
+_bfd_kvx_get_stub_for_link_section (asection *link_section,
+				    struct elf_kvx_link_hash_table *htab)
+{
+  if (htab->stub_group[link_section->id].stub_sec == NULL)
+    htab->stub_group[link_section->id].stub_sec
+      = _bfd_kvx_create_stub_section (link_section, htab);
+  return htab->stub_group[link_section->id].stub_sec;
+}
+
+
+/* Find or create a stub section in the stub group for an input
+   section.  */
+
+static asection *
+_bfd_kvx_create_or_find_stub_sec (asection *section,
+				  struct elf_kvx_link_hash_table *htab)
+{
+  asection *link_sec = htab->stub_group[section->id].link_sec;
+  return _bfd_kvx_get_stub_for_link_section (link_sec, htab);
+}
+
+
+/* Add a new stub entry in the stub group associated with an input
+   section to the stub hash.  Not all fields of the new stub entry are
+   initialised.  */
+
+static struct elf_kvx_stub_hash_entry *
+_bfd_kvx_add_stub_entry_in_group (const char *stub_name,
+				  asection *section,
+				  struct elf_kvx_link_hash_table *htab)
+{
+  asection *link_sec;
+  asection *stub_sec;
+  struct elf_kvx_stub_hash_entry *stub_entry;
+
+  link_sec = htab->stub_group[section->id].link_sec;
+  stub_sec = _bfd_kvx_create_or_find_stub_sec (section, htab);
+
+  /* Enter this entry into the linker stub hash table.  */
+  stub_entry = kvx_stub_hash_lookup (&htab->stub_hash_table, stub_name,
+				     true, false);
+  if (stub_entry == NULL)
+    {
+      /* xgettext:c-format */
+      _bfd_error_handler (_("%pB: cannot create stub entry %s"),
+			  section->owner, stub_name);
+      return NULL;
+    }
+
+  stub_entry->stub_sec = stub_sec;
+  stub_entry->stub_offset = 0;
+  stub_entry->id_sec = link_sec;
+
+  return stub_entry;
+}
+
+static bool
+kvx_build_one_stub (struct bfd_hash_entry *gen_entry,
+		    void *in_arg)
+{
+  struct elf_kvx_stub_hash_entry *stub_entry;
+  asection *stub_sec;
+  bfd *stub_bfd;
+  bfd_byte *loc;
+  bfd_vma sym_value;
+  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_kvx_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->fatal (_("%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.  */
+  stub_entry->stub_offset = stub_sec->size;
+  loc = stub_sec->contents + stub_entry->stub_offset;
+
+  stub_bfd = stub_sec->owner;
+
+  /* This is the address of the stub destination.  */
+  sym_value = (stub_entry->target_value
+	       + stub_entry->target_section->output_offset
+	       + stub_entry->target_section->output_section->vma);
+
+  switch (stub_entry->stub_type)
+    {
+    case kvx_stub_long_branch:
+      template = elfNN_kvx_long_branch_stub;
+      template_size = sizeof (elfNN_kvx_long_branch_stub);
+      break;
+    default:
+      abort ();
+    }
+
+  for (i = 0; i < (template_size / sizeof template[0]); i++)
+    {
+      bfd_putl32 (template[i], loc);
+      loc += 4;
+    }
+
+  stub_sec->size += template_size;
+
+  switch (stub_entry->stub_type)
+    {
+    case kvx_stub_long_branch:
+      /* The stub uses a make insn with 43bits immediate.
+	 We need to apply 3 relocations:
+	 BFD_RELOC_KVX_S43_LO10,
+	 BFD_RELOC_KVX_S43_UP27,
+	 BFD_RELOC_KVX_S43_EX6.  */
+      if (kvx_relocate (R_KVX_S43_LO10, stub_bfd, stub_sec,
+			stub_entry->stub_offset, sym_value) != bfd_reloc_ok)
+	BFD_FAIL ();
+      if (kvx_relocate (R_KVX_S43_EX6, stub_bfd, stub_sec,
+			stub_entry->stub_offset, sym_value) != bfd_reloc_ok)
+	BFD_FAIL ();
+      if (kvx_relocate (R_KVX_S43_UP27, stub_bfd, stub_sec,
+			stub_entry->stub_offset + 4, sym_value) != bfd_reloc_ok)
+	BFD_FAIL ();
+      break;
+    default:
+      abort ();
+    }
+
+  return true;
+}
+
+/* As above, but don't actually build the stub.  Just bump offset so
+   we know stub section sizes.  */
+
+static bool
+kvx_size_one_stub (struct bfd_hash_entry *gen_entry,
+		   void *in_arg ATTRIBUTE_UNUSED)
+{
+  struct elf_kvx_stub_hash_entry *stub_entry;
+  int size;
+
+  /* Massage our args to the form they really have.  */
+  stub_entry = (struct elf_kvx_stub_hash_entry *) gen_entry;
+
+  switch (stub_entry->stub_type)
+    {
+    case kvx_stub_long_branch:
+      size = sizeof (elfNN_kvx_long_branch_stub);
+      break;
+    default:
+      abort ();
+    }
+
+  stub_entry->stub_sec->size += size;
+  return true;
+}
+
+/* External entry points for sizing and building linker stubs.  */
+
+/* Set up various things so that we can make a list of input sections
+   for each output section included in the link.  Returns -1 on error,
+   0 when no stubs will be needed, and 1 on success.  */
+
+int
+elfNN_kvx_setup_section_lists (bfd *output_bfd,
+			       struct bfd_link_info *info)
+{
+  bfd *input_bfd;
+  unsigned int bfd_count;
+  unsigned int top_id, top_index;
+  asection *section;
+  asection **input_list, **list;
+  bfd_size_type amt;
+  struct elf_kvx_link_hash_table *htab =
+    elf_kvx_hash_table (info);
+
+  if (!is_elf_hash_table ((const struct bfd_link_hash_table *)htab))
+    return 0;
+
+  /* Count the number of input BFDs and find the top input section id.  */
+  for (input_bfd = info->input_bfds, bfd_count = 0, top_id = 0;
+       input_bfd != NULL; input_bfd = input_bfd->link.next)
+    {
+      bfd_count += 1;
+      for (section = input_bfd->sections;
+	   section != NULL; section = section->next)
+	{
+	  if (top_id < section->id)
+	    top_id = section->id;
+	}
+    }
+  htab->bfd_count = bfd_count;
+
+  amt = sizeof (struct map_stub) * (top_id + 1);
+  htab->stub_group = bfd_zmalloc (amt);
+  if (htab->stub_group == NULL)
+    return -1;
+
+  /* We can't use output_bfd->section_count here to find the top output
+     section index as some sections may have been removed, and
+     _bfd_strip_section_from_output doesn't renumber the indices.  */
+  for (section = output_bfd->sections, top_index = 0;
+       section != NULL; section = section->next)
+    {
+      if (top_index < section->index)
+	top_index = section->index;
+    }
+
+  htab->top_index = top_index;
+  amt = sizeof (asection *) * (top_index + 1);
+  input_list = bfd_malloc (amt);
+  htab->input_list = input_list;
+  if (input_list == NULL)
+    return -1;
+
+  /* For sections we aren't interested in, mark their entries with a
+     value we can check later.  */
+  list = input_list + top_index;
+  do
+    *list = bfd_abs_section_ptr;
+  while (list-- != input_list);
+
+  for (section = output_bfd->sections;
+       section != NULL; section = section->next)
+    {
+      if ((section->flags & SEC_CODE) != 0)
+	input_list[section->index] = NULL;
+    }
+
+  return 1;
+}
+
+/* Used by elfNN_kvx_next_input_section and group_sections.  */
+#define PREV_SEC(sec) (htab->stub_group[(sec)->id].link_sec)
+
+/* The linker repeatedly calls this function for each input section,
+   in the order that input sections are linked into output sections.
+   Build lists of input sections to determine groupings between which
+   we may insert linker stubs.  */
+
+void
+elfNN_kvx_next_input_section (struct bfd_link_info *info, asection *isec)
+{
+  struct elf_kvx_link_hash_table *htab =
+    elf_kvx_hash_table (info);
+
+  if (isec->output_section->index <= htab->top_index)
+    {
+      asection **list = htab->input_list + isec->output_section->index;
+
+      if (*list != bfd_abs_section_ptr)
+	{
+	  /* Steal the link_sec pointer for our list.  */
+	  /* This happens to make the list in reverse order,
+	     which is what we want.  */
+	  PREV_SEC (isec) = *list;
+	  *list = isec;
+	}
+    }
+}
+
+/* See whether we can group stub sections together.  Grouping stub
+   sections may result in fewer stubs.  More importantly, we need to
+   put all .init* and .fini* stubs at the beginning of the .init or
+   .fini output sections respectively, because glibc splits the
+   _init and _fini functions into multiple parts.  Putting a stub in
+   the middle of a function is not a good idea.  */
+
+static void
+group_sections (struct elf_kvx_link_hash_table *htab,
+		bfd_size_type stub_group_size,
+		bool stubs_always_after_branch)
+{
+  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)
+	{
+	  /* Pop from tail.  */
+	  asection *item = tail;
+	  tail = PREV_SEC (item);
+
+	  /* Push on head.  */
+	  NEXT_SEC (item) = head;
+	  head = item;
+	}
+
+      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 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
+	    {
+	      next = NEXT_SEC (head);
+	      /* Set up this stub group.  */
+	      htab->stub_group[head->id].link_sec = curr;
+	    }
+	  while (head != curr && (head = next) != NULL);
+
+	  /* But wait, there's more!  Input sections up to stub_group_size
+	     bytes after the stub section can be handled by it too.  */
+	  if (!stubs_always_after_branch)
+	    {
+	      stub_group_start = curr->output_offset + curr->size;
+
+	      while (next != NULL)
+		{
+		  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;
+		}
+	    }
+	  head = next;
+	}
+    }
+  while (list++ != htab->input_list + htab->top_index);
+
+  free (htab->input_list);
+}
+
+static void
+_bfd_kvx_resize_stubs (struct elf_kvx_link_hash_table *htab)
+{
+  asection *section;
+
+  /* OK, we've added some stubs.  Find out the new size of the
+     stub sections.  */
+  for (section = htab->stub_bfd->sections;
+       section != NULL; section = section->next)
+    {
+      /* Ignore non-stub sections.  */
+      if (!strstr (section->name, STUB_SUFFIX))
+	continue;
+      section->size = 0;
+    }
+
+  bfd_hash_traverse (&htab->stub_hash_table, kvx_size_one_stub, htab);
+}
+
+/* Satisfy the ELF linker by filling in some fields in our fake bfd.  */
+
+bool
+kvx_elfNN_init_stub_bfd (struct bfd_link_info *info,
+			bfd *stub_bfd)
+{
+  struct elf_kvx_link_hash_table *htab;
+
+  elf_elfheader (stub_bfd)->e_ident[EI_CLASS] = ELFCLASSNN;
+
+/* Always hook our dynamic sections into the first bfd, which is the
+   linker created stub bfd.  This ensures that the GOT header is at
+   the start of the output TOC section.  */
+  htab = elf_kvx_hash_table (info);
+  if (htab == NULL)
+    return false;
+
+  return true;
+}
+
+/* Determine and set the size of the stub section for a final link.
+
+   The basic idea here is to examine all the relocations looking for
+   PC-relative calls to a target that is unreachable with a 27bits
+   immediate (found in call and goto).  */
+
+bool
+elfNN_kvx_size_stubs (bfd *output_bfd,
+		     bfd *stub_bfd,
+		     struct bfd_link_info *info,
+		     bfd_signed_vma group_size,
+		     asection * (*add_stub_section) (const char *,
+						     asection *),
+		     void (*layout_sections_again) (void))
+{
+  bfd_size_type stub_group_size;
+  bool stubs_always_before_branch;
+  bool stub_changed = false;
+  struct elf_kvx_link_hash_table *htab = elf_kvx_hash_table (info);
+
+  /* Propagate mach to stub bfd, because it may not have been
+     finalized when we created stub_bfd.  */
+  bfd_set_arch_mach (stub_bfd, bfd_get_arch (output_bfd),
+		     bfd_get_mach (output_bfd));
+
+  /* Stash our params away.  */
+  htab->stub_bfd = stub_bfd;
+  htab->add_stub_section = add_stub_section;
+  htab->layout_sections_again = layout_sections_again;
+  stubs_always_before_branch = group_size < 0;
+  if (group_size < 0)
+    stub_group_size = -group_size;
+  else
+    stub_group_size = group_size;
+
+  if (stub_group_size == 1)
+    {
+      /* Default values.  */
+      /* KVX branch range is +-256MB. The value used is 1MB less.  */
+      stub_group_size = 255 * 1024 * 1024;
+    }
+
+  group_sections (htab, stub_group_size, stubs_always_before_branch);
+
+  (*htab->layout_sections_again) ();
+
+  while (1)
+    {
+      bfd *input_bfd;
+
+      for (input_bfd = info->input_bfds;
+	   input_bfd != NULL; input_bfd = input_bfd->link.next)
+	{
+	  Elf_Internal_Shdr *symtab_hdr;
+	  asection *section;
+	  Elf_Internal_Sym *local_syms = NULL;
+
+	  if (!is_kvx_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)
+	    continue;
+
+	  /* Walk over each section attached to the input bfd.  */
+	  for (section = input_bfd->sections;
+	       section != NULL; section = section->next)
+	    {
+	      Elf_Internal_Rela *internal_relocs, *irelaend, *irela;
+
+	      /* If there aren't any relocs, then there's nothing more
+		 to do.  */
+	      if ((section->flags & SEC_RELOC) == 0
+		  || section->reloc_count == 0
+		  || (section->flags & SEC_CODE) == 0)
+		continue;
+
+	      /* If this section is a link-once section that will be
+		 discarded, then don't create any stubs.  */
+	      if (section->output_section == NULL
+		  || section->output_section->owner != output_bfd)
+		continue;
+
+	      /* Get the relocs.  */
+	      internal_relocs
+		= _bfd_elf_link_read_relocs (input_bfd, section, NULL,
+					     NULL, info->keep_memory);
+	      if (internal_relocs == NULL)
+		goto error_ret_free_local;
+
+	      /* Now examine each relocation.  */
+	      irela = internal_relocs;
+	      irelaend = irela + section->reloc_count;
+	      for (; irela < irelaend; irela++)
+		{
+		  unsigned int r_type, r_indx;
+		  enum elf_kvx_stub_type stub_type;
+		  struct elf_kvx_stub_hash_entry *stub_entry;
+		  asection *sym_sec;
+		  bfd_vma sym_value;
+		  bfd_vma destination;
+		  struct elf_kvx_link_hash_entry *hash;
+		  const char *sym_name;
+		  char *stub_name;
+		  const asection *id_sec;
+		  unsigned char st_type;
+		  bfd_size_type len;
+
+		  r_type = ELFNN_R_TYPE (irela->r_info);
+		  r_indx = ELFNN_R_SYM (irela->r_info);
+
+		  if (r_type >= (unsigned int) R_KVX_end)
+		    {
+		      bfd_set_error (bfd_error_bad_value);
+		    error_ret_free_internal:
+		      if (elf_section_data (section)->relocs == NULL)
+			free (internal_relocs);
+		      goto error_ret_free_local;
+		    }
+
+		  /* Only look for stubs on unconditional branch and
+		     branch and link instructions.  */
+		  /* This catches CALL and GOTO insn */
+		  if (r_type != (unsigned int) R_KVX_PCREL27)
+		    continue;
+
+		  /* Now determine the call target, its name, value,
+		     section.  */
+		  sym_sec = NULL;
+		  sym_value = 0;
+		  destination = 0;
+		  hash = NULL;
+		  sym_name = NULL;
+		  if (r_indx < symtab_hdr->sh_info)
+		    {
+		      /* It's a local symbol.  */
+		      Elf_Internal_Sym *sym;
+		      Elf_Internal_Shdr *hdr;
+
+		      if (local_syms == NULL)
+			{
+			  local_syms
+			    = (Elf_Internal_Sym *) symtab_hdr->contents;
+			  if (local_syms == NULL)
+			    local_syms
+			      = bfd_elf_get_elf_syms (input_bfd, symtab_hdr,
+						      symtab_hdr->sh_info, 0,
+						      NULL, NULL, NULL);
+			  if (local_syms == NULL)
+			    goto error_ret_free_internal;
+			}
+
+		      sym = local_syms + r_indx;
+		      hdr = elf_elfsections (input_bfd)[sym->st_shndx];
+		      sym_sec = hdr->bfd_section;
+		      if (!sym_sec)
+			/* This is an undefined symbol.  It can never
+			   be resolved.  */
+			continue;
+
+		      if (ELF_ST_TYPE (sym->st_info) != STT_SECTION)
+			sym_value = sym->st_value;
+		      destination = (sym_value + irela->r_addend
+				     + sym_sec->output_offset
+				     + sym_sec->output_section->vma);
+		      st_type = ELF_ST_TYPE (sym->st_info);
+		      sym_name
+			= bfd_elf_string_from_elf_section (input_bfd,
+							   symtab_hdr->sh_link,
+							   sym->st_name);
+		    }
+		  else
+		    {
+		      int e_indx;
+
+		      e_indx = r_indx - symtab_hdr->sh_info;
+		      hash = ((struct elf_kvx_link_hash_entry *)
+			      elf_sym_hashes (input_bfd)[e_indx]);
+
+		      while (hash->root.root.type == bfd_link_hash_indirect
+			     || hash->root.root.type == bfd_link_hash_warning)
+			hash = ((struct elf_kvx_link_hash_entry *)
+				hash->root.root.u.i.link);
+
+		      if (hash->root.root.type == bfd_link_hash_defined
+			  || hash->root.root.type == bfd_link_hash_defweak)
+			{
+			  struct elf_kvx_link_hash_table *globals =
+			    elf_kvx_hash_table (info);
+			  sym_sec = hash->root.root.u.def.section;
+			  sym_value = hash->root.root.u.def.value;
+			  /* For a destination in a shared library,
+			     use the PLT stub as target address to
+			     decide whether a branch stub is
+			     needed.  */
+			  if (globals->root.splt != NULL && hash != NULL
+			      && hash->root.plt.offset != (bfd_vma) - 1)
+			    {
+			      sym_sec = globals->root.splt;
+			      sym_value = hash->root.plt.offset;
+			      if (sym_sec->output_section != NULL)
+				destination = (sym_value
+					       + sym_sec->output_offset
+					       + sym_sec->output_section->vma);
+			    }
+			  else if (sym_sec->output_section != NULL)
+			    destination = (sym_value + irela->r_addend
+					   + sym_sec->output_offset
+					   + sym_sec->output_section->vma);
+			}
+		      else if (hash->root.root.type == bfd_link_hash_undefined
+			       || (hash->root.root.type
+				   == bfd_link_hash_undefweak))
+			{
+			  /* For a shared library, use the PLT stub as
+			     target address to decide whether a long
+			     branch stub is needed.
+			     For absolute code, they cannot be handled.  */
+			  struct elf_kvx_link_hash_table *globals =
+			    elf_kvx_hash_table (info);
+
+			  if (globals->root.splt != NULL && hash != NULL
+			      && hash->root.plt.offset != (bfd_vma) - 1)
+			    {
+			      sym_sec = globals->root.splt;
+			      sym_value = hash->root.plt.offset;
+			      if (sym_sec->output_section != NULL)
+				destination = (sym_value
+					       + sym_sec->output_offset
+					       + sym_sec->output_section->vma);
+			    }
+			  else
+			    continue;
+			}
+		      else
+			{
+			  bfd_set_error (bfd_error_bad_value);
+			  goto error_ret_free_internal;
+			}
+		      st_type = ELF_ST_TYPE (hash->root.type);
+		      sym_name = hash->root.root.root.string;
+		    }
+
+		  /* Determine what (if any) linker stub is needed.  */
+		  stub_type = kvx_type_of_stub (section, irela, sym_sec,
+						st_type, destination);
+		  if (stub_type == kvx_stub_none)
+		    continue;
+
+		  /* Support for grouping stub sections.  */
+		  id_sec = htab->stub_group[section->id].link_sec;
+
+		  /* Get the name of this stub.  */
+		  stub_name = elfNN_kvx_stub_name (id_sec, sym_sec, hash,
+						  irela);
+		  if (!stub_name)
+		    goto error_ret_free_internal;
+
+		  stub_entry =
+		    kvx_stub_hash_lookup (&htab->stub_hash_table,
+					 stub_name, false, false);
+		  if (stub_entry != NULL)
+		    {
+		      /* The proper stub has already been created.  */
+		      free (stub_name);
+		      /* Always update this stub's target since it may have
+			 changed after layout.  */
+		      stub_entry->target_value = sym_value + irela->r_addend;
+		      continue;
+		    }
+
+		  stub_entry = _bfd_kvx_add_stub_entry_in_group
+		    (stub_name, section, htab);
+		  if (stub_entry == NULL)
+		    {
+		      free (stub_name);
+		      goto error_ret_free_internal;
+		    }
+
+		  stub_entry->target_value = sym_value + irela->r_addend;
+		  stub_entry->target_section = sym_sec;
+		  stub_entry->stub_type = stub_type;
+		  stub_entry->h = hash;
+		  stub_entry->st_type = st_type;
+
+		  if (sym_name == NULL)
+		    sym_name = "unnamed";
+		  len = sizeof (STUB_ENTRY_NAME) + strlen (sym_name);
+		  stub_entry->output_name = bfd_alloc (htab->stub_bfd, len);
+		  if (stub_entry->output_name == NULL)
+		    {
+		      free (stub_name);
+		      goto error_ret_free_internal;
+		    }
+
+		  snprintf (stub_entry->output_name, len, STUB_ENTRY_NAME,
+			    sym_name);
+
+		  stub_changed = true;
+		}
+
+	      /* We're done with the internal relocs, free them.  */
+	      if (elf_section_data (section)->relocs == NULL)
+		free (internal_relocs);
+	    }
+	}
+
+      if (!stub_changed)
+	break;
+
+      _bfd_kvx_resize_stubs (htab);
+
+      /* Ask the linker to do its stuff.  */
+      (*htab->layout_sections_again) ();
+      stub_changed = false;
+    }
+
+  return true;
+
+error_ret_free_local:
+  return false;
+
+}
+
+/* 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.  We also set up the .plt entries for statically linked PIC
+   functions here.  This function is called via kvx_elf_finish in the
+   linker.  */
+
+bool
+elfNN_kvx_build_stubs (struct bfd_link_info *info)
+{
+  asection *stub_sec;
+  struct bfd_hash_table *table;
+  struct elf_kvx_link_hash_table *htab;
+
+  htab = elf_kvx_hash_table (info);
+
+  for (stub_sec = htab->stub_bfd->sections;
+       stub_sec != NULL; stub_sec = stub_sec->next)
+    {
+      bfd_size_type size;
+
+      /* Ignore non-stub sections.  */
+      if (!strstr (stub_sec->name, STUB_SUFFIX))
+	continue;
+
+      /* Allocate memory to hold the linker stubs.  */
+      size = stub_sec->size;
+      stub_sec->contents = bfd_zalloc (htab->stub_bfd, size);
+      if (stub_sec->contents == NULL && size != 0)
+	return false;
+      stub_sec->alloced = 1;
+      stub_sec->size = 0;
+    }
+
+  /* Build the stubs as directed by the stub hash table.  */
+  table = &htab->stub_hash_table;
+  bfd_hash_traverse (table, kvx_build_one_stub, info);
+
+  return true;
+}
+
+static bfd_vma
+kvx_calculate_got_entry_vma (struct elf_link_hash_entry *h,
+				 struct elf_kvx_link_hash_table
+				 *globals, struct bfd_link_info *info,
+				 bfd_vma value, bfd *output_bfd,
+				 bool *unresolved_reloc_p)
+{
+  bfd_vma off = (bfd_vma) - 1;
+  asection *basegot = globals->root.sgot;
+  bool dyn = globals->root.dynamic_sections_created;
+
+  if (h != NULL)
+    {
+      BFD_ASSERT (basegot != NULL);
+      off = h->got.offset;
+      BFD_ASSERT (off != (bfd_vma) - 1);
+      if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)
+	  || (bfd_link_pic (info)
+	      && SYMBOL_REFERENCES_LOCAL (info, h))
+	  || (ELF_ST_VISIBILITY (h->other)
+	      && h->root.type == bfd_link_hash_undefweak))
+	{
+	  /* This is actually a static link, or it is a -Bsymbolic link
+	     and the symbol is defined locally.  We must initialize this
+	     entry in the global offset table.  Since the offset must
+	     always be a multiple of 8 (4 in the case of ILP32), we use
+	     the least significant bit to record whether we have
+	     initialized it already.
+	     When doing a dynamic link, we create a .rel(a).got relocation
+	     entry to initialize the value.  This is done in the
+	     finish_dynamic_symbol routine.  */
+	  if ((off & 1) != 0)
+	    off &= ~1;
+	  else
+	    {
+	      bfd_put_NN (output_bfd, value, basegot->contents + off);
+	      h->got.offset |= 1;
+	    }
+	}
+      else
+	*unresolved_reloc_p = false;
+    }
+
+  return off;
+}
+
+static unsigned int
+kvx_reloc_got_type (bfd_reloc_code_real_type r_type)
+{
+  switch (r_type)
+    {
+      /* Extracted with:
+	 awk 'match ($0, /HOWTO.*R_(KVX.*_GOT(OFF)?(64)?_.*),/,ary) \
+	 {print "case BFD_RELOC_" ary[1] ":";}' elfxx-kvxc.def  */
+    case BFD_RELOC_KVX_S37_GOTOFF_LO10:
+    case BFD_RELOC_KVX_S37_GOTOFF_UP27:
+
+    case BFD_RELOC_KVX_S37_GOT_LO10:
+    case BFD_RELOC_KVX_S37_GOT_UP27:
+
+    case BFD_RELOC_KVX_S43_GOTOFF_LO10:
+    case BFD_RELOC_KVX_S43_GOTOFF_UP27:
+    case BFD_RELOC_KVX_S43_GOTOFF_EX6:
+
+    case BFD_RELOC_KVX_S43_GOT_LO10:
+    case BFD_RELOC_KVX_S43_GOT_UP27:
+    case BFD_RELOC_KVX_S43_GOT_EX6:
+      return GOT_NORMAL;
+
+    case BFD_RELOC_KVX_S37_TLS_GD_LO10:
+    case BFD_RELOC_KVX_S37_TLS_GD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_GD_LO10:
+    case BFD_RELOC_KVX_S43_TLS_GD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_GD_EX6:
+      return GOT_TLS_GD;
+
+    case BFD_RELOC_KVX_S37_TLS_LD_LO10:
+    case BFD_RELOC_KVX_S37_TLS_LD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_LD_LO10:
+    case BFD_RELOC_KVX_S43_TLS_LD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_LD_EX6:
+      return GOT_TLS_LD;
+
+    case BFD_RELOC_KVX_S37_TLS_IE_LO10:
+    case BFD_RELOC_KVX_S37_TLS_IE_UP27:
+    case BFD_RELOC_KVX_S43_TLS_IE_LO10:
+    case BFD_RELOC_KVX_S43_TLS_IE_UP27:
+    case BFD_RELOC_KVX_S43_TLS_IE_EX6:
+      return GOT_TLS_IE;
+
+    default:
+      break;
+    }
+  return GOT_UNKNOWN;
+}
+
+static bool
+kvx_can_relax_tls (bfd *input_bfd ATTRIBUTE_UNUSED,
+		       struct bfd_link_info *info ATTRIBUTE_UNUSED,
+		       bfd_reloc_code_real_type r_type ATTRIBUTE_UNUSED,
+		       struct elf_link_hash_entry *h ATTRIBUTE_UNUSED,
+		       unsigned long r_symndx ATTRIBUTE_UNUSED)
+{
+  if (! IS_KVX_TLS_RELAX_RELOC (r_type))
+    return false;
+
+  /* Relaxing hook. Disabled on KVX. */
+  /* See elfnn-aarch64.c */
+  return true;
+}
+
+/* Given the relocation code R_TYPE, return the relaxed bfd reloc
+   enumerator.  */
+
+static bfd_reloc_code_real_type
+kvx_tls_transition (bfd *input_bfd,
+			struct bfd_link_info *info,
+			unsigned int r_type,
+			struct elf_link_hash_entry *h,
+			unsigned long r_symndx)
+{
+  bfd_reloc_code_real_type bfd_r_type
+    = elfNN_kvx_bfd_reloc_from_type (input_bfd, r_type);
+
+  if (! kvx_can_relax_tls (input_bfd, info, bfd_r_type, h, r_symndx))
+    return bfd_r_type;
+
+  return bfd_r_type;
+}
+
+/* Return the base VMA address which should be subtracted from real addresses
+   when resolving R_KVX_*_TLS_GD_* and R_KVX_*_TLS_LD_* relocation.  */
+
+static bfd_vma
+dtpoff_base (struct bfd_link_info *info)
+{
+  /* If tls_sec is NULL, we should have signalled an error already.  */
+  BFD_ASSERT (elf_hash_table (info)->tls_sec != NULL);
+  return elf_hash_table (info)->tls_sec->vma;
+}
+
+/* Return the base VMA address which should be subtracted from real addresses
+   when resolving R_KVX_*_TLS_IE_* and R_KVX_*_TLS_LE_* relocations.  */
+
+static bfd_vma
+tpoff_base (struct bfd_link_info *info)
+{
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+
+  /* If tls_sec is NULL, we should have signalled an error already.  */
+  BFD_ASSERT (htab->tls_sec != NULL);
+
+  bfd_vma base = align_power ((bfd_vma) 0,
+			      htab->tls_sec->alignment_power);
+  return htab->tls_sec->vma - base;
+}
+
+static bfd_vma *
+symbol_got_offset_ref (bfd *input_bfd, struct elf_link_hash_entry *h,
+		       unsigned long r_symndx)
+{
+  /* Calculate the address of the GOT entry for symbol
+     referred to in h.  */
+  if (h != NULL)
+    return &h->got.offset;
+  else
+    {
+      /* local symbol */
+      struct elf_kvx_local_symbol *l;
+
+      l = elf_kvx_locals (input_bfd);
+      return &l[r_symndx].got_offset;
+    }
+}
+
+static void
+symbol_got_offset_mark (bfd *input_bfd, struct elf_link_hash_entry *h,
+			unsigned long r_symndx)
+{
+  bfd_vma *p;
+  p = symbol_got_offset_ref (input_bfd, h, r_symndx);
+  *p |= 1;
+}
+
+static int
+symbol_got_offset_mark_p (bfd *input_bfd, struct elf_link_hash_entry *h,
+			  unsigned long r_symndx)
+{
+  bfd_vma value;
+  value = * symbol_got_offset_ref (input_bfd, h, r_symndx);
+  return value & 1;
+}
+
+static bfd_vma
+symbol_got_offset (bfd *input_bfd, struct elf_link_hash_entry *h,
+		   unsigned long r_symndx)
+{
+  bfd_vma value;
+  value = * symbol_got_offset_ref (input_bfd, h, r_symndx);
+  value &= ~1;
+  return value;
+}
+
+/* N_ONES produces N one bits, without overflowing machine arithmetic.  */
+#define N_ONES(n) (((((bfd_vma) 1 << ((n) -1)) - 1) << 1) | 1)
+
+/* This is a copy/paste + modification from
+   reloc.c:_bfd_relocate_contents. Relocations are applied to 32bits
+   words, so all overflow checks will overflow for values above
+   32bits.  */
+static bfd_reloc_status_type
+check_signed_overflow (enum complain_overflow complain_on_overflow,
+		       bfd_reloc_code_real_type bfd_r_type, bfd *input_bfd,
+		       bfd_vma relocation)
+{
+  bfd_reloc_status_type flag = bfd_reloc_ok;
+  bfd_vma addrmask, fieldmask, signmask, ss;
+  bfd_vma a, b, sum;
+  bfd_vma x = 0;
+
+  /* These usually come from howto struct. As we don't check for
+     values fitting in bitfields or in subpart of words, we set all
+     these to values to check as if the field is starting from first
+     bit.  */
+  unsigned int rightshift = 0;
+  unsigned int bitpos = 0;
+  unsigned int bitsize = 0;
+  bfd_vma src_mask = -1;
+
+  /* Only regular symbol relocations are checked here. Others
+     relocations (GOT, TLS) could be checked if the need is
+     confirmed. At the moment, we keep previous behavior
+     (ie. unchecked) for those. */
+  switch (bfd_r_type)
+    {
+    case BFD_RELOC_KVX_S37_LO10:
+    case BFD_RELOC_KVX_S37_UP27:
+      bitsize = 37;
+      break;
+
+    case BFD_RELOC_KVX_S32_LO5:
+    case BFD_RELOC_KVX_S32_UP27:
+      bitsize = 32;
+      break;
+
+    case BFD_RELOC_KVX_S43_LO10:
+    case BFD_RELOC_KVX_S43_UP27:
+    case BFD_RELOC_KVX_S43_EX6:
+      bitsize = 43;
+      break;
+
+    case BFD_RELOC_KVX_S64_LO10:
+    case BFD_RELOC_KVX_S64_UP27:
+    case BFD_RELOC_KVX_S64_EX27:
+      bitsize = 64;
+      break;
+
+    default:
+      return bfd_reloc_ok;
+    }
+
+  /* direct copy/paste from reloc.c below */
+
+  /* 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.
+     See also bfd_check_overflow.  */
+  fieldmask = N_ONES (bitsize);
+  signmask = ~fieldmask;
+  addrmask = (N_ONES (bfd_arch_bits_per_address (input_bfd))
+	      | (fieldmask << rightshift));
+  a = (relocation & addrmask) >> rightshift;
+  b = (x & src_mask & addrmask) >> bitpos;
+  addrmask >>= rightshift;
+
+  switch (complain_on_overflow)
+    {
+    case complain_overflow_signed:
+      /* If any sign bits are set, all sign bits must be set.
+	 That is, A must be a valid negative address after
+	 shifting.  */
+      signmask = ~(fieldmask >> 1);
+      /* Fall thru */
+
+    case complain_overflow_bitfield:
+      /* Much like the signed check, but for a field one bit
+	 wider.  We allow a bitfield to represent numbers in the
+	 range -2**n to 2**n-1, where n is the number of bits in the
+	 field.  Note that when bfd_vma is 32 bits, a 32-bit reloc
+	 can't overflow, which is exactly what we want.  */
+      ss = a & signmask;
+      if (ss != 0 && ss != (addrmask & signmask))
+	flag = bfd_reloc_overflow;
+
+      /* We only need this next bit of code if the sign bit of B
+	 is below the sign bit of A.  This would only happen if
+	 SRC_MASK had fewer bits than BITSIZE.  Note that if
+	 SRC_MASK has more bits than BITSIZE, we can get into
+	 trouble; we would need to verify that B is in range, as
+	 we do for A above.  */
+      ss = ((~src_mask) >> 1) & src_mask;
+      ss >>= bitpos;
+
+      /* Set all the bits above the sign bit.  */
+      b = (b ^ ss) - ss;
+
+      /* Now we can do the addition.  */
+      sum = a + b;
+
+      /* See if the result has the correct sign.  Bits above the
+	 sign bit are junk now; ignore them.  If the sum is
+	 positive, make sure we did not have all negative inputs;
+	 if the sum is negative, make sure we did not have all
+	 positive inputs.  The test below looks only at the sign
+	 bits, and it really just
+	 SIGN (A) == SIGN (B) && SIGN (A) != SIGN (SUM)
+
+	 We mask with addrmask here to explicitly allow an address
+	 wrap-around.  The Linux kernel relies on it, and it is
+	 the only way to write assembler code which can run when
+	 loaded at a location 0x80000000 away from the location at
+	 which it is linked.  */
+      if (((~(a ^ b)) & (a ^ sum)) & signmask & addrmask)
+	flag = bfd_reloc_overflow;
+      break;
+
+    case complain_overflow_unsigned:
+      /* Checking for an unsigned overflow is relatively easy:
+	 trim the addresses and add, and trim the result as well.
+	 Overflow is normally indicated when the result does not
+	 fit in the field.  However, we also need to consider the
+	 case when, e.g., fieldmask is 0x7fffffff or smaller, an
+	 input is 0x80000000, and bfd_vma is only 32 bits; then we
+	 will get sum == 0, but there is an overflow, since the
+	 inputs did not fit in the field.  Instead of doing a
+	 separate test, we can check for this by or-ing in the
+	 operands when testing for the sum overflowing its final
+	 field.  */
+      sum = (a + b) & addrmask;
+      if ((a | b | sum) & signmask)
+	flag = bfd_reloc_overflow;
+      break;
+
+    default:
+      abort ();
+    }
+  return flag;
+}
+
+/* Perform a relocation as part of a final link.  */
+static bfd_reloc_status_type
+elfNN_kvx_final_link_relocate (reloc_howto_type *howto,
+			       bfd *input_bfd,
+			       bfd *output_bfd,
+			       asection *input_section,
+			       bfd_byte *contents,
+			       Elf_Internal_Rela *rel,
+			       bfd_vma value,
+			       struct bfd_link_info *info,
+			       asection *sym_sec,
+			       struct elf_link_hash_entry *h,
+			       bool *unresolved_reloc_p,
+			       bool save_addend,
+			       bfd_vma *saved_addend,
+			       Elf_Internal_Sym *sym)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  unsigned int r_type = howto->type;
+  bfd_reloc_code_real_type bfd_r_type
+    = elfNN_kvx_bfd_reloc_from_howto (howto);
+  bfd_reloc_code_real_type new_bfd_r_type;
+  unsigned long r_symndx;
+  bfd_byte *hit_data = contents + rel->r_offset;
+  bfd_vma place, off;
+  bfd_vma addend;
+  struct elf_kvx_link_hash_table *globals;
+  bool weak_undef_p;
+  asection *base_got;
+  bfd_reloc_status_type rret = bfd_reloc_ok;
+  bool resolved_to_zero;
+  globals = elf_kvx_hash_table (info);
+
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+
+  BFD_ASSERT (is_kvx_elf (input_bfd));
+
+  r_symndx = ELFNN_R_SYM (rel->r_info);
+
+  /* It is possible to have linker relaxations on some TLS access
+     models.  Update our information here.  */
+  new_bfd_r_type = kvx_tls_transition (input_bfd, info, r_type, h, r_symndx);
+  if (new_bfd_r_type != bfd_r_type)
+    {
+      bfd_r_type = new_bfd_r_type;
+      howto = elfNN_kvx_howto_from_bfd_reloc (bfd_r_type);
+      BFD_ASSERT (howto != NULL);
+      r_type = howto->type;
+    }
+
+  place = input_section->output_section->vma
+    + input_section->output_offset + rel->r_offset;
+
+  /* Get addend, accumulating the addend for consecutive relocs
+     which refer to the same offset.  */
+  addend = saved_addend ? *saved_addend : 0;
+  addend += rel->r_addend;
+
+  weak_undef_p = (h ? h->root.type == bfd_link_hash_undefweak
+		  : bfd_is_und_section (sym_sec));
+  resolved_to_zero = (h != NULL
+		      && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
+
+  switch (bfd_r_type)
+    {
+    case BFD_RELOC_KVX_NN:
+#if ARCH_SIZE == 64
+    case BFD_RELOC_KVX_32:
+#endif
+    case BFD_RELOC_KVX_S37_LO10:
+    case BFD_RELOC_KVX_S37_UP27:
+
+    case BFD_RELOC_KVX_S32_LO5:
+    case BFD_RELOC_KVX_S32_UP27:
+
+    case BFD_RELOC_KVX_S43_LO10:
+    case BFD_RELOC_KVX_S43_UP27:
+    case BFD_RELOC_KVX_S43_EX6:
+
+    case BFD_RELOC_KVX_S64_LO10:
+    case BFD_RELOC_KVX_S64_UP27:
+    case BFD_RELOC_KVX_S64_EX27:
+      /* When generating a shared library or PIE, these relocations
+	 are copied into the output file to be resolved at run time.  */
+      if (bfd_link_pic (info)
+	  && (input_section->flags & SEC_ALLOC)
+	  && (h == NULL
+	      || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		  && !resolved_to_zero)
+	      || h->root.type != bfd_link_hash_undefweak))
+	{
+	  Elf_Internal_Rela outrel;
+	  bfd_byte *loc;
+	  bool skip, relocate;
+	  asection *sreloc;
+
+	  *unresolved_reloc_p = false;
+
+	  skip = false;
+	  relocate = false;
+
+	  outrel.r_addend = addend;
+	  outrel.r_offset =
+	    _bfd_elf_section_offset (output_bfd, info, input_section,
+				     rel->r_offset);
+	  if (outrel.r_offset == (bfd_vma) - 1)
+	    skip = true;
+	  else if (outrel.r_offset == (bfd_vma) - 2)
+	    {
+	      skip = true;
+	      relocate = true;
+	    }
+
+	  outrel.r_offset += (input_section->output_section->vma
+			      + input_section->output_offset);
+
+	  if (skip)
+	    memset (&outrel, 0, sizeof outrel);
+	  else if (h != NULL
+		   && h->dynindx != -1
+		   && (!bfd_link_pic (info) || !info->symbolic
+		       || !h->def_regular))
+	    outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+	  else if (bfd_r_type == BFD_RELOC_KVX_32
+		   || bfd_r_type == BFD_RELOC_KVX_64)
+	    {
+	      int symbol;
+
+	      /* On SVR4-ish systems, the dynamic loader cannot
+		 relocate the text and data segments independently,
+		 so the symbol does not matter.  */
+	      symbol = 0;
+	      outrel.r_info = ELFNN_R_INFO (symbol, R_KVX_RELATIVE);
+	      outrel.r_addend += value;
+	    }
+	  else if (bfd_link_pic (info) && info->symbolic)
+	    {
+	      goto skip_because_pic;
+	    }
+	  else
+	    {
+	      /* We may endup here from bad input code trying to
+		 insert relocation on symbols within code.  We do not
+		 want that currently, and such code should use GOT +
+		 KVX_32/64 reloc that translate in KVX_RELATIVE.  */
+	      const char *name;
+	      if (h && h->root.root.string)
+		name = h->root.root.string;
+	      else
+		name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym,
+					 NULL);
+
+	      (*_bfd_error_handler)
+		/* xgettext:c-format */
+		(_("%pB(%pA+%#" PRIx64 "): "
+		   "unresolvable %s relocation in section `%s'"),
+		 input_bfd, input_section, (uint64_t) rel->r_offset, howto->name,
+		 name);
+	      return bfd_reloc_notsupported;
+	    }
+
+	  sreloc = elf_section_data (input_section)->sreloc;
+	  if (sreloc == NULL || sreloc->contents == NULL)
+	    return bfd_reloc_notsupported;
+
+	  loc = sreloc->contents + sreloc->reloc_count++ * RELOC_SIZE (globals);
+	  bfd_elfNN_swap_reloca_out (output_bfd, &outrel, loc);
+
+	  if (sreloc->reloc_count * RELOC_SIZE (globals) > sreloc->size)
+	    {
+	      /* Sanity to check that we have previously allocated
+		 sufficient space in the relocation section for the
+		 number of relocations we actually want to emit.  */
+	      abort ();
+	    }
+
+	  /* If this reloc is against an external symbol, we do not want to
+	     fiddle with the addend.  Otherwise, we need to include the symbol
+	     value so that it becomes an addend for the dynamic reloc.  */
+	  if (!relocate)
+	    return bfd_reloc_ok;
+
+	  rret = check_signed_overflow (complain_overflow_signed, bfd_r_type,
+					input_bfd, value + addend);
+	  if (rret != bfd_reloc_ok)
+	    return rret;
+
+	  return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					   contents, rel->r_offset, value,
+					   addend);
+	}
+
+    skip_because_pic:
+      rret = check_signed_overflow (complain_overflow_signed, bfd_r_type,
+				    input_bfd, value + addend);
+      if (rret != bfd_reloc_ok)
+	return rret;
+
+      return _bfd_final_link_relocate (howto, input_bfd, input_section,
+				       contents, rel->r_offset, value,
+				       addend);
+      break;
+
+    case BFD_RELOC_KVX_PCREL17:
+    case BFD_RELOC_KVX_PCREL27:
+      {
+	/* BCU insn are always first in a bundle, so there is no need
+	   to correct the address using offset within bundle.  */
+
+	asection *splt = globals->root.splt;
+	bool via_plt_p =
+	  splt != NULL && h != NULL && h->plt.offset != (bfd_vma) - 1;
+
+	/* A call to an undefined weak symbol is converted to a jump to
+	   the next instruction unless a PLT entry will be created.
+	   The jump to the next instruction is optimized as a NOP.
+	   Do the same for local undefined symbols.  */
+	if (weak_undef_p && ! via_plt_p)
+	  {
+	    bfd_putl32 (INSN_NOP, hit_data);
+	    return bfd_reloc_ok;
+	  }
+
+	/* If the call goes through a PLT entry, make sure to
+	   check distance to the right destination address.  */
+	if (via_plt_p)
+	  value = (splt->output_section->vma
+		   + splt->output_offset + h->plt.offset);
+
+	/* Check if a stub has to be inserted because the destination
+	   is too far away.  */
+	struct elf_kvx_stub_hash_entry *stub_entry = NULL;
+
+	/* If the target symbol is global and marked as a function the
+	   relocation applies a function call or a tail call.  In this
+	   situation we can veneer out of range branches.  The veneers
+	   use R16 and R17 hence cannot be used arbitrary out of range
+	   branches that occur within the body of a function.  */
+
+	/* Check if a stub has to be inserted because the destination
+	   is too far away.  */
+	if (! kvx_valid_call_p (value, place))
+	  {
+	    /* The target is out of reach, so redirect the branch to
+	       the local stub for this function.  */
+	    stub_entry = elfNN_kvx_get_stub_entry (input_section,
+						   sym_sec, h,
+						   rel, globals);
+	    if (stub_entry != NULL)
+	      value = (stub_entry->stub_offset
+		       + stub_entry->stub_sec->output_offset
+		       + stub_entry->stub_sec->output_section->vma);
+	    /* We have redirected the destination to stub entry address,
+	       so ignore any addend record in the original rela entry.  */
+	    addend = 0;
+	  }
+      }
+      *unresolved_reloc_p = false;
+
+      /* FALLTHROUGH */
+
+      /* PCREL 32 are used in dwarf2 table for exception handling */
+    case BFD_RELOC_KVX_32_PCREL:
+    case BFD_RELOC_KVX_S64_PCREL_LO10:
+    case BFD_RELOC_KVX_S64_PCREL_UP27:
+    case BFD_RELOC_KVX_S64_PCREL_EX27:
+    case BFD_RELOC_KVX_S37_PCREL_LO10:
+    case BFD_RELOC_KVX_S37_PCREL_UP27:
+    case BFD_RELOC_KVX_S43_PCREL_LO10:
+    case BFD_RELOC_KVX_S43_PCREL_UP27:
+    case BFD_RELOC_KVX_S43_PCREL_EX6:
+      return _bfd_final_link_relocate (howto, input_bfd, input_section,
+				       contents, rel->r_offset, value,
+				       addend);
+      break;
+
+    case BFD_RELOC_KVX_S37_TLS_LE_LO10:
+    case BFD_RELOC_KVX_S37_TLS_LE_UP27:
+
+    case BFD_RELOC_KVX_S43_TLS_LE_LO10:
+    case BFD_RELOC_KVX_S43_TLS_LE_UP27:
+    case BFD_RELOC_KVX_S43_TLS_LE_EX6:
+      return _bfd_final_link_relocate (howto, input_bfd, input_section,
+				       contents, rel->r_offset,
+				       value - tpoff_base (info), addend);
+      break;
+
+    case BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10:
+    case BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27:
+
+    case BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10:
+    case BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27:
+    case BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6:
+      return _bfd_final_link_relocate (howto, input_bfd, input_section,
+				       contents, rel->r_offset,
+				       value - dtpoff_base (info), addend);
+
+    case BFD_RELOC_KVX_S37_TLS_GD_UP27:
+    case BFD_RELOC_KVX_S37_TLS_GD_LO10:
+
+    case BFD_RELOC_KVX_S43_TLS_GD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_GD_EX6:
+    case BFD_RELOC_KVX_S43_TLS_GD_LO10:
+
+    case BFD_RELOC_KVX_S37_TLS_IE_UP27:
+    case BFD_RELOC_KVX_S37_TLS_IE_LO10:
+
+    case BFD_RELOC_KVX_S43_TLS_IE_UP27:
+    case BFD_RELOC_KVX_S43_TLS_IE_EX6:
+    case BFD_RELOC_KVX_S43_TLS_IE_LO10:
+
+    case BFD_RELOC_KVX_S37_TLS_LD_UP27:
+    case BFD_RELOC_KVX_S37_TLS_LD_LO10:
+
+    case BFD_RELOC_KVX_S43_TLS_LD_UP27:
+    case BFD_RELOC_KVX_S43_TLS_LD_EX6:
+    case BFD_RELOC_KVX_S43_TLS_LD_LO10:
+
+      if (globals->root.sgot == NULL)
+	return bfd_reloc_notsupported;
+      value = symbol_got_offset (input_bfd, h, r_symndx);
+
+      _bfd_final_link_relocate (howto, input_bfd, input_section,
+				contents, rel->r_offset, value, addend);
+      *unresolved_reloc_p = false;
+      break;
+
+    case BFD_RELOC_KVX_S37_GOTADDR_UP27:
+    case BFD_RELOC_KVX_S37_GOTADDR_LO10:
+
+    case BFD_RELOC_KVX_S43_GOTADDR_UP27:
+    case BFD_RELOC_KVX_S43_GOTADDR_EX6:
+    case BFD_RELOC_KVX_S43_GOTADDR_LO10:
+
+    case BFD_RELOC_KVX_S64_GOTADDR_UP27:
+    case BFD_RELOC_KVX_S64_GOTADDR_EX27:
+    case BFD_RELOC_KVX_S64_GOTADDR_LO10:
+      {
+	if (globals->root.sgot == NULL)
+	  BFD_ASSERT (h != NULL);
+
+	value = globals->root.sgot->output_section->vma
+	  + globals->root.sgot->output_offset;
+
+	return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					 contents, rel->r_offset, value,
+					 addend);
+      }
+      break;
+
+    case BFD_RELOC_KVX_S37_GOTOFF_LO10:
+    case BFD_RELOC_KVX_S37_GOTOFF_UP27:
+
+    case BFD_RELOC_KVX_32_GOTOFF:
+    case BFD_RELOC_KVX_64_GOTOFF:
+
+    case BFD_RELOC_KVX_S43_GOTOFF_LO10:
+    case BFD_RELOC_KVX_S43_GOTOFF_UP27:
+    case BFD_RELOC_KVX_S43_GOTOFF_EX6:
+
+      {
+	asection *basegot = globals->root.sgot;
+	/* BFD_ASSERT(h == NULL); */
+	BFD_ASSERT(globals->root.sgot != NULL);
+	value -= basegot->output_section->vma + basegot->output_offset;
+	return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					 contents, rel->r_offset, value,
+					 addend);
+      }
+      break;
+
+    case BFD_RELOC_KVX_S37_GOT_LO10:
+    case BFD_RELOC_KVX_S37_GOT_UP27:
+
+    case BFD_RELOC_KVX_32_GOT:
+    case BFD_RELOC_KVX_64_GOT:
+
+    case BFD_RELOC_KVX_S43_GOT_LO10:
+    case BFD_RELOC_KVX_S43_GOT_UP27:
+    case BFD_RELOC_KVX_S43_GOT_EX6:
+
+      if (globals->root.sgot == NULL)
+	BFD_ASSERT (h != NULL);
+
+      if (h != NULL)
+	{
+	  value = kvx_calculate_got_entry_vma (h, globals, info, value,
+					       output_bfd,
+					       unresolved_reloc_p);
+#ifdef UGLY_DEBUG
+	  printf("GOT_LO/HI for %s, value %x\n", h->root.root.string, value);
+#endif
+
+	  return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					   contents, rel->r_offset, value,
+					   addend);
+	}
+      else
+	{
+#ifdef UGLY_DEBUG
+	  printf("GOT_LO/HI with h NULL, initial value %x\n", value);
+#endif
+	  struct elf_kvx_local_symbol *locals = elf_kvx_locals (input_bfd);
+
+	  if (locals == NULL)
+	    {
+	      int howto_index = bfd_r_type - BFD_RELOC_KVX_RELOC_START;
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB: local symbol descriptor table be NULL when applying "
+		   "relocation %s against local symbol"),
+		 input_bfd, elf_kvx_howto_table[howto_index].name);
+	      abort ();
+	    }
+
+	  off = symbol_got_offset (input_bfd, h, r_symndx);
+	  base_got = globals->root.sgot;
+	  bfd_vma got_entry_addr = (base_got->output_section->vma
+				    + base_got->output_offset + off);
+
+	  if (!symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	    {
+	      bfd_put_64 (output_bfd, value, base_got->contents + off);
+
+	      if (bfd_link_pic (info))
+		{
+		  asection *s;
+		  Elf_Internal_Rela outrel;
+
+		  /* For PIC executables and shared libraries we need
+		     to relocate the GOT entry at run time.  */
+		  s = globals->root.srelgot;
+		  if (s == NULL)
+		    abort ();
+
+		  outrel.r_offset = got_entry_addr;
+		  outrel.r_info = ELFNN_R_INFO (0, R_KVX_RELATIVE);
+		  outrel.r_addend = value;
+		  elf_append_rela (output_bfd, s, &outrel);
+		}
+
+	      symbol_got_offset_mark (input_bfd, h, r_symndx);
+	    }
+
+	  /* Update the relocation value to GOT entry addr as we have
+	     transformed the direct data access into an indirect data
+	     access through GOT.  */
+	  value = got_entry_addr;
+
+	  return _bfd_final_link_relocate (howto, input_bfd, input_section,
+					   contents, rel->r_offset, off, 0);
+	}
+      break;
+
+    default:
+      return bfd_reloc_notsupported;
+    }
+
+  if (saved_addend)
+    *saved_addend = value;
+
+  /* Only apply the final relocation in a sequence.  */
+  if (save_addend)
+    return bfd_reloc_continue;
+
+  return _bfd_kvx_elf_put_addend (input_bfd, hit_data, bfd_r_type,
+				  howto, value);
+}
+
+
+
+/* Relocate a KVX ELF section.  */
+
+static int
+elfNN_kvx_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;
+  Elf_Internal_Rela *relend;
+  const char *name;
+  struct elf_kvx_link_hash_table *globals;
+  bool save_addend = false;
+  bfd_vma addend = 0;
+
+  globals = elf_kvx_hash_table (info);
+
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+  sym_hashes = elf_sym_hashes (input_bfd);
+
+  rel = relocs;
+  relend = relocs + input_section->reloc_count;
+  for (; rel < relend; rel++)
+    {
+      unsigned int r_type;
+      bfd_reloc_code_real_type bfd_r_type;
+      reloc_howto_type *howto;
+      unsigned long r_symndx;
+      Elf_Internal_Sym *sym;
+      asection *sec;
+      struct elf_link_hash_entry *h;
+      bfd_vma relocation;
+      bfd_reloc_status_type r;
+      arelent bfd_reloc;
+      char sym_type;
+      bool unresolved_reloc = false;
+      char *error_message = NULL;
+
+      r_symndx = ELFNN_R_SYM (rel->r_info);
+      r_type = ELFNN_R_TYPE (rel->r_info);
+
+      bfd_reloc.howto = elfNN_kvx_howto_from_type (input_bfd, r_type);
+      howto = bfd_reloc.howto;
+
+      if (howto == NULL)
+	return _bfd_unrecognized_reloc (input_bfd, input_section, r_type);
+
+      bfd_r_type = elfNN_kvx_bfd_reloc_from_howto (howto);
+
+      h = NULL;
+      sym = NULL;
+      sec = NULL;
+
+      if (r_symndx < symtab_hdr->sh_info) /* A local symbol. */
+	{
+	  sym = local_syms + r_symndx;
+	  sym_type = ELFNN_ST_TYPE (sym->st_info);
+	  sec = local_sections[r_symndx];
+
+	  /* An object file might have a reference to a local
+	     undefined symbol.  This is a draft object file, but we
+	     should at least do something about it.  */
+	  if (r_type != R_KVX_NONE
+	      && r_type != R_KVX_S37_GOTADDR_LO10
+	      && r_type != R_KVX_S37_GOTADDR_UP27
+	      && r_type != R_KVX_S64_GOTADDR_LO10
+	      && r_type != R_KVX_S64_GOTADDR_UP27
+	      && r_type != R_KVX_S64_GOTADDR_EX27
+	      && r_type != R_KVX_S43_GOTADDR_LO10
+	      && r_type != R_KVX_S43_GOTADDR_UP27
+	      && r_type != R_KVX_S43_GOTADDR_EX6
+	      && bfd_is_und_section (sec)
+	      && ELF_ST_BIND (sym->st_info) != STB_WEAK)
+	    (*info->callbacks->undefined_symbol)
+	      (info, bfd_elf_string_from_elf_section
+	       (input_bfd, symtab_hdr->sh_link, sym->st_name),
+	       input_bfd, input_section, rel->r_offset, true);
+
+	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
+	}
+      else
+	{
+	  bool 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);
+
+	  sym_type = h->type;
+	}
+
+      if (sec != NULL && discarded_section (sec))
+	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+					 rel, 1, relend, R_KVX_NONE,
+					 howto, 0, contents);
+
+      if (bfd_link_relocatable (info))
+	continue;
+
+      if (h != NULL)
+	name = h->root.root.string;
+      else
+	{
+	  name = (bfd_elf_string_from_elf_section
+		  (input_bfd, symtab_hdr->sh_link, sym->st_name));
+	  if (name == NULL || *name == '\0')
+	    name = bfd_section_name (sec);
+	}
+
+      if (r_symndx != 0
+	  && r_type != R_KVX_NONE
+	  && (h == NULL
+	      || h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	  && IS_KVX_TLS_RELOC (bfd_r_type) != (sym_type == STT_TLS))
+	{
+	  (*_bfd_error_handler)
+	    ((sym_type == STT_TLS
+	      /* xgettext:c-format */
+	      ? _("%pB(%pA+%#" PRIx64 "): %s used with TLS symbol %s")
+	      /* xgettext:c-format */
+	      : _("%pB(%pA+%#" PRIx64 "): %s used with non-TLS symbol %s")),
+	     input_bfd,
+	     input_section, (uint64_t) rel->r_offset, howto->name, name);
+	}
+
+      /* Original aarch64 has relaxation handling for TLS here. */
+      r = bfd_reloc_continue;
+
+      /* There may be multiple consecutive relocations for the
+	 same offset.  In that case we are supposed to treat the
+	 output of each relocation as the addend for the next.  */
+      if (rel + 1 < relend
+	  && rel->r_offset == rel[1].r_offset
+	  && ELFNN_R_TYPE (rel[1].r_info) != R_KVX_NONE)
+
+	save_addend = true;
+      else
+	save_addend = false;
+
+      if (r == bfd_reloc_continue)
+	r = elfNN_kvx_final_link_relocate (howto, input_bfd, output_bfd,
+					   input_section, contents, rel,
+					   relocation, info, sec,
+					   h, &unresolved_reloc,
+					   save_addend, &addend, sym);
+
+      switch (elfNN_kvx_bfd_reloc_from_type (input_bfd, r_type))
+	{
+	case BFD_RELOC_KVX_S37_TLS_GD_LO10:
+	case BFD_RELOC_KVX_S37_TLS_GD_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_GD_LO10:
+	case BFD_RELOC_KVX_S43_TLS_GD_UP27:
+	case BFD_RELOC_KVX_S43_TLS_GD_EX6:
+
+	case BFD_RELOC_KVX_S37_TLS_LD_LO10:
+	case BFD_RELOC_KVX_S37_TLS_LD_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_LD_LO10:
+	case BFD_RELOC_KVX_S43_TLS_LD_UP27:
+	case BFD_RELOC_KVX_S43_TLS_LD_EX6:
+
+	  if (! symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	    {
+	      bool need_relocs = false;
+	      bfd_byte *loc;
+	      int indx;
+	      bfd_vma off;
+
+	      off = symbol_got_offset (input_bfd, h, r_symndx);
+	      indx = h && h->dynindx != -1 ? h->dynindx : 0;
+
+	      need_relocs =
+		(bfd_link_pic (info) || indx != 0) &&
+		(h == NULL
+		 || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		 || h->root.type != bfd_link_hash_undefweak);
+
+	      BFD_ASSERT (globals->root.srelgot != NULL);
+
+	      if (need_relocs)
+		{
+		  Elf_Internal_Rela rela;
+		  rela.r_info = ELFNN_R_INFO (indx, R_KVX_64_DTPMOD);
+		  rela.r_addend = 0;
+		  rela.r_offset = globals->root.sgot->output_section->vma +
+		    globals->root.sgot->output_offset + off;
+
+		  loc = globals->root.srelgot->contents;
+		  loc += globals->root.srelgot->reloc_count++
+		    * RELOC_SIZE (htab);
+		  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+
+		  bfd_reloc_code_real_type real_type =
+		    elfNN_kvx_bfd_reloc_from_type (input_bfd, r_type);
+
+		  if (real_type == BFD_RELOC_KVX_S37_TLS_LD_LO10
+		      || real_type == BFD_RELOC_KVX_S37_TLS_LD_UP27
+		      || real_type == BFD_RELOC_KVX_S43_TLS_LD_LO10
+		      || real_type == BFD_RELOC_KVX_S43_TLS_LD_UP27
+		      || real_type == BFD_RELOC_KVX_S43_TLS_LD_EX6)
+		    {
+		      /* For local dynamic, don't generate DTPOFF in any case.
+			 Initialize the DTPOFF slot into zero, so we get module
+			 base address when invoke runtime TLS resolver.  */
+		      bfd_put_NN (output_bfd, 0,
+				  globals->root.sgot->contents + off
+				  + GOT_ENTRY_SIZE);
+		    }
+		  else if (indx == 0)
+		    {
+		      bfd_put_NN (output_bfd,
+				  relocation - dtpoff_base (info),
+				  globals->root.sgot->contents + off
+				  + GOT_ENTRY_SIZE);
+		    }
+		  else
+		    {
+		      /* This TLS symbol is global. We emit a
+			 relocation to fixup the tls offset at load
+			 time.  */
+		      rela.r_info =
+			ELFNN_R_INFO (indx, R_KVX_64_DTPOFF);
+		      rela.r_addend = 0;
+		      rela.r_offset =
+			(globals->root.sgot->output_section->vma
+			 + globals->root.sgot->output_offset + off
+			 + GOT_ENTRY_SIZE);
+
+		      loc = globals->root.srelgot->contents;
+		      loc += globals->root.srelgot->reloc_count++
+			* RELOC_SIZE (globals);
+		      bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+		      bfd_put_NN (output_bfd, (bfd_vma) 0,
+				  globals->root.sgot->contents + off
+				  + GOT_ENTRY_SIZE);
+		    }
+		}
+	      else
+		{
+		  bfd_put_NN (output_bfd, (bfd_vma) 1,
+			      globals->root.sgot->contents + off);
+		  bfd_put_NN (output_bfd,
+			      relocation - dtpoff_base (info),
+			      globals->root.sgot->contents + off
+			      + GOT_ENTRY_SIZE);
+		}
+
+	      symbol_got_offset_mark (input_bfd, h, r_symndx);
+	    }
+	  break;
+
+	case BFD_RELOC_KVX_S37_TLS_IE_LO10:
+	case BFD_RELOC_KVX_S37_TLS_IE_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_IE_LO10:
+	case BFD_RELOC_KVX_S43_TLS_IE_UP27:
+	case BFD_RELOC_KVX_S43_TLS_IE_EX6:
+	  if (! symbol_got_offset_mark_p (input_bfd, h, r_symndx))
+	    {
+	      bool need_relocs = false;
+	      bfd_byte *loc;
+	      int indx;
+	      bfd_vma off;
+
+	      off = symbol_got_offset (input_bfd, h, r_symndx);
+
+	      indx = h && h->dynindx != -1 ? h->dynindx : 0;
+
+	      need_relocs =
+		(bfd_link_pic (info) || indx != 0) &&
+		(h == NULL
+		 || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		 || h->root.type != bfd_link_hash_undefweak);
+
+	      BFD_ASSERT (globals->root.srelgot != NULL);
+
+	      if (need_relocs)
+		{
+		  Elf_Internal_Rela rela;
+
+		  if (indx == 0)
+		    rela.r_addend = relocation - dtpoff_base (info);
+		  else
+		    rela.r_addend = 0;
+
+		  rela.r_info = ELFNN_R_INFO (indx, R_KVX_64_TPOFF);
+		  rela.r_offset = globals->root.sgot->output_section->vma +
+		    globals->root.sgot->output_offset + off;
+
+		  loc = globals->root.srelgot->contents;
+		  loc += globals->root.srelgot->reloc_count++
+		    * RELOC_SIZE (htab);
+
+		  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+
+		  bfd_put_NN (output_bfd, rela.r_addend,
+			      globals->root.sgot->contents + off);
+		}
+	      else
+		bfd_put_NN (output_bfd, relocation - tpoff_base (info),
+			    globals->root.sgot->contents + off);
+
+	      symbol_got_offset_mark (input_bfd, h, r_symndx);
+	    }
+	  break;
+
+	default:
+	  break;
+	}
+
+      /* Dynamic relocs are not propagated for SEC_DEBUGGING sections
+	 because such sections are not SEC_ALLOC and thus ld.so will
+	 not process them.  */
+      if (unresolved_reloc
+	  && !((input_section->flags & SEC_DEBUGGING) != 0
+	       && h->def_dynamic)
+	  && _bfd_elf_section_offset (output_bfd, info, input_section,
+				      +rel->r_offset) != (bfd_vma) - 1)
+	{
+	  (*_bfd_error_handler)
+	    /* xgettext:c-format */
+	    (_("%pB(%pA+%#" PRIx64 "): "
+	       "unresolvable %s relocation against symbol `%s'"),
+	     input_bfd, input_section, (uint64_t) rel->r_offset, howto->name,
+	     h->root.root.string);
+	  return false;
+	}
+
+      if (r != bfd_reloc_ok && r != bfd_reloc_continue)
+	{
+	  switch (r)
+	    {
+	    case bfd_reloc_overflow:
+	      (*info->callbacks->reloc_overflow)
+		(info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
+		 input_bfd, input_section, rel->r_offset);
+
+	      /* Original aarch64 code had a check for alignement correctness */
+	      break;
+
+	    case bfd_reloc_undefined:
+	      (*info->callbacks->undefined_symbol)
+		(info, name, input_bfd, input_section, rel->r_offset, true);
+	      break;
+
+	    case bfd_reloc_outofrange:
+	      error_message = _("out of range");
+	      goto common_error;
+
+	    case bfd_reloc_notsupported:
+	      error_message = _("unsupported relocation");
+	      goto common_error;
+
+	    case bfd_reloc_dangerous:
+	      /* error_message should already be set.  */
+	      goto common_error;
+
+	    default:
+	      error_message = _("unknown error");
+	      /* Fall through.  */
+
+	    common_error:
+	      BFD_ASSERT (error_message != NULL);
+	      (*info->callbacks->reloc_dangerous)
+		(info, error_message, input_bfd, input_section, rel->r_offset);
+	      break;
+	    }
+	}
+
+      if (!save_addend)
+	addend = 0;
+    }
+
+  return true;
+}
+
+/* Set the right machine number.  */
+
+static bool
+elfNN_kvx_object_p (bfd *abfd)
+{
+  /* must be coherent with default arch in cpu-kvx.c */
+  int e_set = bfd_mach_kv3_1;
+
+  if (elf_elfheader (abfd)->e_machine == EM_KVX)
+    {
+      int e_core = elf_elfheader (abfd)->e_flags & ELF_KVX_CORE_MASK;
+      switch(e_core)
+	{
+#if ARCH_SIZE == 64
+	case ELF_KVX_CORE_KV3_1 : e_set = bfd_mach_kv3_1_64; break;
+	case ELF_KVX_CORE_KV3_2 : e_set = bfd_mach_kv3_2_64; break;
+	case ELF_KVX_CORE_KV4_1 : e_set = bfd_mach_kv4_1_64; break;
+#else
+	case ELF_KVX_CORE_KV3_1 : e_set = bfd_mach_kv3_1; break;
+	case ELF_KVX_CORE_KV3_2 : e_set = bfd_mach_kv3_2; break;
+	case ELF_KVX_CORE_KV4_1 : e_set = bfd_mach_kv4_1; break;
+#endif
+	default:
+	  (*_bfd_error_handler)(_("%s: Bad ELF id: `%d'"),
+				abfd->filename, e_core);
+	}
+    }
+  return bfd_default_set_arch_mach (abfd, bfd_arch_kvx, e_set);
+}
+
+/* Function to keep KVX specific flags in the ELF header.  */
+
+static bool
+elfNN_kvx_set_private_flags (bfd *abfd, flagword flags)
+{
+  if (elf_flags_init (abfd) && elf_elfheader (abfd)->e_flags != flags)
+    {
+    }
+  else
+    {
+      elf_elfheader (abfd)->e_flags = flags;
+      elf_flags_init (abfd) = true;
+    }
+
+  return true;
+}
+
+/* Merge backend specific data from an object file to the output
+   object file when linking.  */
+
+static bool
+elfNN_kvx_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
+{
+  bfd *obfd = info->output_bfd;
+  flagword out_flags;
+  flagword in_flags;
+  bool flags_compatible = true;
+  asection *sec;
+
+  /* Check if we have the same endianess.  */
+  if (!_bfd_generic_verify_endian_match (ibfd, info))
+    return false;
+
+  if (!is_kvx_elf (ibfd) || !is_kvx_elf (obfd))
+    return true;
+
+  /* The input BFD must have had its flags initialised.  */
+  /* The following seems bogus to me -- The flags are initialized in
+     the assembler but I don't think an elf_flags_init field is
+     written into the object.  */
+  /* BFD_ASSERT (elf_flags_init (ibfd)); */
+
+  if (bfd_get_arch_size (ibfd) != bfd_get_arch_size (obfd))
+    {
+      const char *msg;
+
+      if (bfd_get_arch_size (ibfd) == 32
+	  && bfd_get_arch_size (obfd) == 64)
+	msg = _("%s: compiled as 32-bit object and %s is 64-bit");
+      else if (bfd_get_arch_size (ibfd) == 64
+	       && bfd_get_arch_size (obfd) == 32)
+	msg = _("%s: compiled as 64-bit object and %s is 32-bit");
+      else
+	msg = _("%s: object size does not match that of target %s");
+
+      (*_bfd_error_handler) (msg, bfd_get_filename (ibfd),
+			     bfd_get_filename (obfd));
+      bfd_set_error (bfd_error_wrong_format);
+      return false;
+    }
+
+  in_flags = elf_elfheader (ibfd)->e_flags;
+  out_flags = elf_elfheader (obfd)->e_flags;
+
+  if (!elf_flags_init (obfd))
+    {
+      /* If the input is the default architecture and had the default
+	 flags then do not bother setting the flags for the output
+	 architecture, instead allow future merges to do this.  If no
+	 future merges ever set these flags then they will retain their
+	 uninitialised values, which surprise surprise, correspond
+	 to the default values.  */
+      if (bfd_get_arch_info (ibfd)->the_default
+	  && elf_elfheader (ibfd)->e_flags == 0)
+	return true;
+
+      elf_flags_init (obfd) = true;
+      elf_elfheader (obfd)->e_flags = in_flags;
+
+      if (bfd_get_arch (obfd) == bfd_get_arch (ibfd)
+	  && bfd_get_arch_info (obfd)->the_default)
+	return bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
+				  bfd_get_mach (ibfd));
+
+      return true;
+    }
+
+  /* Identical flags must be compatible.  */
+  if (in_flags == out_flags)
+    return true;
+
+  /* Check to see if the input BFD actually contains any sections.  If
+     not, its flags may not have been initialised either, but it
+     cannot actually cause any incompatiblity.  Do not short-circuit
+     dynamic objects; their section list may be emptied by
+     elf_link_add_object_symbols.
+
+     Also check to see if there are no code sections in the input.
+     In this case there is no need to check for code specific flags.
+     XXX - do we need to worry about floating-point format compatability
+     in data sections ?  */
+  if (!(ibfd->flags & DYNAMIC))
+    {
+      bool null_input_bfd = true;
+      bool only_data_sections = true;
+
+      for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+	{
+	  if ((bfd_section_flags (sec)
+	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+	    only_data_sections = false;
+
+	  null_input_bfd = false;
+	  break;
+	}
+
+      if (null_input_bfd || only_data_sections)
+	return true;
+    }
+  return flags_compatible;
+}
+
+/* Display the flags field.  */
+
+static bool
+elfNN_kvx_print_private_bfd_data (bfd *abfd, void *ptr)
+{
+  FILE *file = (FILE *) ptr;
+  unsigned long flags;
+
+  BFD_ASSERT (abfd != NULL && ptr != NULL);
+
+  /* Print normal ELF private data.  */
+  _bfd_elf_print_private_bfd_data (abfd, ptr);
+
+  flags = elf_elfheader (abfd)->e_flags;
+  /* Ignore init flag - it may not be set, despite the flags field
+     containing valid data.  */
+
+  /* xgettext:c-format */
+  fprintf (file, _("Private flags = 0x%lx : "), elf_elfheader (abfd)->e_flags);
+  if((flags & ELF_KVX_ABI_64B_ADDR_BIT) == ELF_KVX_ABI_64B_ADDR_BIT)
+    {
+      if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV3_1))
+	fprintf (file, _("Coolidge (kv3) V1 64 bits"));
+      else if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV3_2))
+	fprintf (file, _("Coolidge (kv3) V2 64 bits"));
+      else if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV4_1))
+	fprintf (file, _("Coolidge (kv4) V1 64 bits"));
+    }
+  else
+    {
+      if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV3_1))
+	fprintf (file, _("Coolidge (kv3) V1 32 bits"));
+      else if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV3_2))
+	fprintf (file, _("Coolidge (kv3) V2 32 bits"));
+      else if (ELF_KVX_CHECK_CORE(flags,ELF_KVX_CORE_KV4_1))
+	fprintf (file, _("Coolidge (kv4) V1 32 bits"));
+    }
+
+  fputc ('\n', file);
+
+  return true;
+}
+
+/* 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
+   change the definition to something the rest of the link can
+   understand.	*/
+
+static bool
+elfNN_kvx_adjust_dynamic_symbol (struct bfd_link_info *info,
+				 struct elf_link_hash_entry *h)
+{
+  struct elf_kvx_link_hash_table *htab;
+  asection *s;
+
+  /* If this is a function, put it in the procedure linkage table.  We
+     will fill in the contents of the procedure linkage table later,
+     when we know the address of the .got section.  */
+  if (h->type == STT_FUNC || h->needs_plt)
+    {
+      if (h->plt.refcount <= 0
+	  || ((SYMBOL_CALLS_LOCAL (info, h)
+	       || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
+		   && h->root.type == bfd_link_hash_undefweak))))
+	{
+	  /* This case can occur if we saw a CALL26 reloc in
+	     an input file, but the symbol wasn't referred to
+	     by a dynamic object or all references were
+	     garbage collected. In which case we can end up
+	     resolving.  */
+	  h->plt.offset = (bfd_vma) - 1;
+	  h->needs_plt = 0;
+	}
+
+      return true;
+    }
+  else
+    /* Otherwise, reset to -1.  */
+    h->plt.offset = (bfd_vma) - 1;
+
+
+  /* If this is a weak symbol, and there is a real definition, the
+     processor independent code will have arranged for us to see the
+     real definition first, and we can just use the same value.  */
+  if (h->is_weakalias)
+    {
+      struct elf_link_hash_entry *def = weakdef (h);
+      BFD_ASSERT (def->root.type == bfd_link_hash_defined);
+      h->root.u.def.section = def->root.u.def.section;
+      h->root.u.def.value = def->root.u.def.value;
+      if (ELIMINATE_COPY_RELOCS || info->nocopyreloc)
+	h->non_got_ref = def->non_got_ref;
+      return true;
+    }
+
+  /* If we are creating a shared library, we must presume that the
+     only references to the symbol are via the global offset table.
+     For such cases we need not do anything here; the relocations will
+     be handled correctly by relocate_section.  */
+  if (bfd_link_pic (info))
+    return true;
+
+  /* If there are no references to this symbol that do not use the
+     GOT, we don't need to generate a copy reloc.  */
+  if (!h->non_got_ref)
+    return true;
+
+  /* If -z nocopyreloc was given, we won't generate them either.  */
+  if (info->nocopyreloc)
+    {
+      h->non_got_ref = 0;
+      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
+     object will contain position independent code, so all references
+     from the dynamic object to this symbol will go through the global
+     offset table.  The dynamic linker will use the .dynsym entry to
+     determine the address it must put in the global offset table, so
+     both the dynamic object and the regular object will refer to the
+     same memory location for the variable.  */
+
+  htab = elf_kvx_hash_table (info);
+
+  /* We must generate a R_KVX_COPY reloc to tell the dynamic linker
+     to copy the initial value out of the dynamic object and into the
+     runtime process image.  */
+  if ((h->root.u.def.section->flags & SEC_ALLOC) != 0 && h->size != 0)
+    {
+      htab->srelbss->size += RELOC_SIZE (htab);
+      h->needs_copy = 1;
+    }
+
+  s = htab->sdynbss;
+
+  return _bfd_elf_adjust_dynamic_copy (info, h, s);
+}
+
+static bool
+elfNN_kvx_allocate_local_symbols (bfd *abfd, unsigned number)
+{
+  struct elf_kvx_local_symbol *locals;
+  locals = elf_kvx_locals (abfd);
+  if (locals == NULL)
+    {
+      locals = (struct elf_kvx_local_symbol *)
+	bfd_zalloc (abfd, number * sizeof (struct elf_kvx_local_symbol));
+      if (locals == NULL)
+	return false;
+      elf_kvx_locals (abfd) = locals;
+    }
+  return true;
+}
+
+/* Create the .got section to hold the global offset table.  */
+
+static bool
+kvx_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
+{
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  flagword flags;
+  asection *s;
+  struct elf_link_hash_entry *h;
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+
+  /* This function may be called more than once.  */
+  s = bfd_get_linker_section (abfd, ".got");
+  if (s != NULL)
+    return true;
+
+  flags = bed->dynamic_sec_flags;
+
+  s = bfd_make_section_anyway_with_flags (abfd,
+					  (bed->rela_plts_and_copies_p
+					   ? ".rela.got" : ".rel.got"),
+					  (bed->dynamic_sec_flags
+					   | SEC_READONLY));
+  if (s == NULL
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
+
+    return false;
+  htab->srelgot = s;
+
+  s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
+  if (s == NULL
+      || !bfd_set_section_alignment (s, bed->s->log_file_align))
+    return false;
+  htab->sgot = s;
+  htab->sgot->size += GOT_ENTRY_SIZE;
+
+  if (bed->want_got_sym)
+    {
+      /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got
+	 (or .got.plt) section.  We don't do this in the linker script
+	 because we don't want to define the symbol if we are not creating
+	 a global offset table.  */
+      h = _bfd_elf_define_linkage_sym (abfd, info, s,
+				       "_GLOBAL_OFFSET_TABLE_");
+      elf_hash_table (info)->hgot = h;
+      if (h == NULL)
+	return false;
+    }
+
+  if (bed->want_got_plt)
+    {
+      s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
+      if (s == NULL
+	  || !bfd_set_section_alignment (s,
+					 bed->s->log_file_align))
+	return false;
+      htab->sgotplt = s;
+    }
+
+  /* The first bit of the global offset table is the header.  */
+  s->size += bed->got_header_size;
+
+  /* we still need to handle got content when doing static link with PIC */
+  if (bfd_link_executable (info) && !bfd_link_pic (info)) {
+    htab->dynobj = abfd;
+  }
+
+  return true;
+}
+
+/* Look through the relocs for a section during the first phase.  */
+
+static bool
+elfNN_kvx_check_relocs (bfd *abfd, struct bfd_link_info *info,
+			    asection *sec, const Elf_Internal_Rela *relocs)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  const Elf_Internal_Rela *rel;
+  const Elf_Internal_Rela *rel_end;
+  asection *sreloc;
+
+  struct elf_kvx_link_hash_table *htab;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  BFD_ASSERT (is_kvx_elf (abfd));
+
+  htab = elf_kvx_hash_table (info);
+  sreloc = NULL;
+
+  symtab_hdr = &elf_symtab_hdr (abfd);
+  sym_hashes = elf_sym_hashes (abfd);
+
+  rel_end = relocs + sec->reloc_count;
+  for (rel = relocs; rel < rel_end; rel++)
+    {
+      struct elf_link_hash_entry *h;
+      unsigned int r_symndx;
+      unsigned int r_type;
+      bfd_reloc_code_real_type bfd_r_type;
+      Elf_Internal_Sym *isym;
+
+      r_symndx = ELFNN_R_SYM (rel->r_info);
+      r_type = ELFNN_R_TYPE (rel->r_info);
+
+      if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr))
+	{
+	  /* xgettext:c-format */
+	  _bfd_error_handler (_("%pB: bad symbol index: %d"), abfd, r_symndx);
+	  return false;
+	}
+
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  /* A local symbol.  */
+	  isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+					abfd, r_symndx);
+	  if (isym == NULL)
+	    return false;
+
+	  h = NULL;
+	}
+      else
+	{
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	}
+
+      /* Could be done earlier, if h were already available.  */
+      bfd_r_type = kvx_tls_transition (abfd, info, r_type, h, r_symndx);
+
+      if (h != NULL)
+	{
+	  /* Create the ifunc sections for static executables.  If we
+	     never see an indirect function symbol nor we are building
+	     a static executable, those sections will be empty and
+	     won't appear in output.  */
+	  switch (bfd_r_type)
+	    {
+	    default:
+	      break;
+	    }
+
+	  /* It is referenced by a non-shared object. */
+	  h->ref_regular = 1;
+	}
+
+      switch (bfd_r_type)
+	{
+
+	case BFD_RELOC_KVX_S43_LO10:
+	case BFD_RELOC_KVX_S43_UP27:
+	case BFD_RELOC_KVX_S43_EX6:
+
+	case BFD_RELOC_KVX_S37_LO10:
+	case BFD_RELOC_KVX_S37_UP27:
+
+	case BFD_RELOC_KVX_S64_LO10:
+	case BFD_RELOC_KVX_S64_UP27:
+	case BFD_RELOC_KVX_S64_EX27:
+
+	case BFD_RELOC_KVX_32:
+	case BFD_RELOC_KVX_64:
+
+	  /* We don't need to handle relocs into sections not going into
+	     the "real" output.  */
+	  if ((sec->flags & SEC_ALLOC) == 0)
+	    break;
+
+	  if (h != NULL)
+	    {
+	      if (!bfd_link_pic (info))
+		h->non_got_ref = 1;
+
+	      h->plt.refcount += 1;
+	      h->pointer_equality_needed = 1;
+	    }
+
+	  /* No need to do anything if we're not creating a shared
+	     object.  */
+	  if (! bfd_link_pic (info))
+	    break;
+
+	  {
+	    struct elf_dyn_relocs *p;
+	    struct elf_dyn_relocs **head;
+
+	    /* We must copy these reloc types into the output file.
+	       Create a reloc section in dynobj and make room for
+	       this reloc.  */
+	    if (sreloc == NULL)
+	      {
+		if (htab->root.dynobj == NULL)
+		  htab->root.dynobj = abfd;
+
+		sreloc = _bfd_elf_make_dynamic_reloc_section
+		  (sec, htab->root.dynobj, LOG_FILE_ALIGN, abfd, /*rela? */ true);
+
+		if (sreloc == NULL)
+		  return false;
+	      }
+
+	    /* If this is a global symbol, we count the number of
+	       relocations we need for this symbol.  */
+	    if (h != NULL)
+	      {
+		head = &h->dyn_relocs;
+	      }
+	    else
+	      {
+		/* Track dynamic relocs needed for local syms too.
+		   We really need local syms available to do this
+		   easily.  Oh well.  */
+
+		asection *s;
+		void **vpp;
+
+		isym = bfd_sym_from_r_symndx (&htab->sym_cache,
+					      abfd, r_symndx);
+		if (isym == NULL)
+		  return false;
+
+		s = bfd_section_from_elf_index (abfd, isym->st_shndx);
+		if (s == NULL)
+		  s = sec;
+
+		/* Beware of type punned pointers vs strict aliasing
+		   rules.  */
+		vpp = &(elf_section_data (s)->local_dynrel);
+		head = (struct elf_dyn_relocs **) vpp;
+	      }
+
+	    p = *head;
+	    if (p == NULL || p->sec != sec)
+	      {
+		bfd_size_type amt = sizeof *p;
+		p = ((struct elf_dyn_relocs *)
+		     bfd_zalloc (htab->root.dynobj, amt));
+		if (p == NULL)
+		  return false;
+		p->next = *head;
+		*head = p;
+		p->sec = sec;
+	      }
+
+	    p->count += 1;
+
+	  }
+	  break;
+
+	case BFD_RELOC_KVX_S37_GOT_LO10:
+	case BFD_RELOC_KVX_S37_GOT_UP27:
+
+	case BFD_RELOC_KVX_S37_GOTOFF_LO10:
+	case BFD_RELOC_KVX_S37_GOTOFF_UP27:
+
+	case BFD_RELOC_KVX_S43_GOT_LO10:
+	case BFD_RELOC_KVX_S43_GOT_UP27:
+	case BFD_RELOC_KVX_S43_GOT_EX6:
+
+	case BFD_RELOC_KVX_S43_GOTOFF_LO10:
+	case BFD_RELOC_KVX_S43_GOTOFF_UP27:
+	case BFD_RELOC_KVX_S43_GOTOFF_EX6:
+
+	case BFD_RELOC_KVX_S37_TLS_GD_LO10:
+	case BFD_RELOC_KVX_S37_TLS_GD_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_GD_LO10:
+	case BFD_RELOC_KVX_S43_TLS_GD_UP27:
+	case BFD_RELOC_KVX_S43_TLS_GD_EX6:
+
+	case BFD_RELOC_KVX_S37_TLS_IE_LO10:
+	case BFD_RELOC_KVX_S37_TLS_IE_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_IE_LO10:
+	case BFD_RELOC_KVX_S43_TLS_IE_UP27:
+	case BFD_RELOC_KVX_S43_TLS_IE_EX6:
+
+	case BFD_RELOC_KVX_S37_TLS_LD_LO10:
+	case BFD_RELOC_KVX_S37_TLS_LD_UP27:
+
+	case BFD_RELOC_KVX_S43_TLS_LD_LO10:
+	case BFD_RELOC_KVX_S43_TLS_LD_UP27:
+	case BFD_RELOC_KVX_S43_TLS_LD_EX6:
+	  {
+	    unsigned got_type;
+	    unsigned old_got_type;
+
+	    got_type = kvx_reloc_got_type (bfd_r_type);
+
+	    if (h)
+	      {
+		h->got.refcount += 1;
+		old_got_type = elf_kvx_hash_entry (h)->got_type;
+	      }
+	    else
+	      {
+		struct elf_kvx_local_symbol *locals;
+
+		if (!elfNN_kvx_allocate_local_symbols
+		    (abfd, symtab_hdr->sh_info))
+		  return false;
+
+		locals = elf_kvx_locals (abfd);
+		BFD_ASSERT (r_symndx < symtab_hdr->sh_info);
+		locals[r_symndx].got_refcount += 1;
+		old_got_type = locals[r_symndx].got_type;
+	      }
+
+	    /* We will already have issued an error message if there
+	       is a TLS/non-TLS mismatch, based on the symbol type.
+	       So just combine any TLS types needed.  */
+	    if (old_got_type != GOT_UNKNOWN && old_got_type != GOT_NORMAL
+		&& got_type != GOT_NORMAL)
+	      got_type |= old_got_type;
+
+	    /* If the symbol is accessed by both IE and GD methods, we
+	       are able to relax.  Turn off the GD flag, without
+	       messing up with any other kind of TLS types that may be
+	       involved.  */
+	    /* Disabled untested and unused TLS */
+	    /* if ((got_type & GOT_TLS_IE) && GOT_TLS_GD_ANY_P (got_type)) */
+	    /*   got_type &= ~ (GOT_TLSDESC_GD | GOT_TLS_GD); */
+
+	    if (old_got_type != got_type)
+	      {
+		if (h != NULL)
+		  elf_kvx_hash_entry (h)->got_type = got_type;
+		else
+		  {
+		    struct elf_kvx_local_symbol *locals;
+		    locals = elf_kvx_locals (abfd);
+		    BFD_ASSERT (r_symndx < symtab_hdr->sh_info);
+		    locals[r_symndx].got_type = got_type;
+		  }
+	      }
+
+	    if (htab->root.dynobj == NULL)
+	      htab->root.dynobj = abfd;
+	    if (! kvx_elf_create_got_section (htab->root.dynobj, info))
+	      return false;
+	    break;
+	  }
+
+	case BFD_RELOC_KVX_S64_GOTADDR_LO10:
+	case BFD_RELOC_KVX_S64_GOTADDR_UP27:
+	case BFD_RELOC_KVX_S64_GOTADDR_EX27:
+
+	case BFD_RELOC_KVX_S43_GOTADDR_LO10:
+	case BFD_RELOC_KVX_S43_GOTADDR_UP27:
+	case BFD_RELOC_KVX_S43_GOTADDR_EX6:
+
+	case BFD_RELOC_KVX_S37_GOTADDR_LO10:
+	case BFD_RELOC_KVX_S37_GOTADDR_UP27:
+
+	  if (htab->root.dynobj == NULL)
+	    htab->root.dynobj = abfd;
+	  if (! kvx_elf_create_got_section (htab->root.dynobj, info))
+	    return false;
+	  break;
+
+	case BFD_RELOC_KVX_PCREL27:
+	case BFD_RELOC_KVX_PCREL17:
+	  /* If this is a local symbol then we resolve it
+	     directly without creating a PLT entry.  */
+	  if (h == NULL)
+	    continue;
+
+	  h->needs_plt = 1;
+	  if (h->plt.refcount <= 0)
+	    h->plt.refcount = 1;
+	  else
+	    h->plt.refcount += 1;
+	  break;
+
+	default:
+	  break;
+	}
+    }
+
+  return true;
+}
+
+static bool
+elfNN_kvx_init_file_header (bfd *abfd, struct bfd_link_info *link_info)
+{
+  Elf_Internal_Ehdr *i_ehdrp;	/* ELF file header, internal form.  */
+
+  if (!_bfd_elf_init_file_header (abfd, link_info))
+    return false;
+
+  i_ehdrp = elf_elfheader (abfd);
+  i_ehdrp->e_ident[EI_ABIVERSION] = KVX_ELF_ABI_VERSION;
+  return true;
+}
+
+static enum elf_reloc_type_class
+elfNN_kvx_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
+				const asection *rel_sec ATTRIBUTE_UNUSED,
+				const Elf_Internal_Rela *rela)
+{
+  switch ((int) ELFNN_R_TYPE (rela->r_info))
+    {
+    case R_KVX_RELATIVE:
+      return reloc_class_relative;
+    case R_KVX_JMP_SLOT:
+      return reloc_class_plt;
+    case R_KVX_COPY:
+      return reloc_class_copy;
+    default:
+      return reloc_class_normal;
+    }
+}
+
+/* A structure used to record a list of sections, independently
+   of the next and prev fields in the asection structure.  */
+typedef struct section_list
+{
+  asection *sec;
+  struct section_list *next;
+  struct section_list *prev;
+}
+section_list;
+
+typedef struct
+{
+  void *finfo;
+  struct bfd_link_info *info;
+  asection *sec;
+  int sec_shndx;
+  int (*func) (void *, const char *, Elf_Internal_Sym *,
+	       asection *, struct elf_link_hash_entry *);
+} output_arch_syminfo;
+
+/* Output a single local symbol for a generated stub.  */
+
+static bool
+elfNN_kvx_output_stub_sym (output_arch_syminfo *osi, const char *name,
+			       bfd_vma offset, bfd_vma size)
+{
+  Elf_Internal_Sym sym;
+
+  sym.st_value = (osi->sec->output_section->vma
+		  + osi->sec->output_offset + offset);
+  sym.st_size = size;
+  sym.st_other = 0;
+  sym.st_info = ELF_ST_INFO (STB_LOCAL, STT_FUNC);
+  sym.st_shndx = osi->sec_shndx;
+  return osi->func (osi->finfo, name, &sym, osi->sec, NULL) == 1;
+}
+
+static bool
+kvx_map_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+{
+  struct elf_kvx_stub_hash_entry *stub_entry;
+  asection *stub_sec;
+  bfd_vma addr;
+  char *stub_name;
+  output_arch_syminfo *osi;
+
+  /* Massage our args to the form they really have.  */
+  stub_entry = (struct elf_kvx_stub_hash_entry *) gen_entry;
+  osi = (output_arch_syminfo *) in_arg;
+
+  stub_sec = stub_entry->stub_sec;
+
+  /* Ensure this stub is attached to the current section being
+     processed.  */
+  if (stub_sec != osi->sec)
+    return true;
+
+  addr = (bfd_vma) stub_entry->stub_offset;
+
+  stub_name = stub_entry->output_name;
+
+  switch (stub_entry->stub_type)
+    {
+    case kvx_stub_long_branch:
+      if (!elfNN_kvx_output_stub_sym
+	  (osi, stub_name, addr, sizeof (elfNN_kvx_long_branch_stub)))
+	return false;
+      break;
+
+    default:
+      abort ();
+    }
+
+  return true;
+}
+
+/* Output mapping symbols for linker generated sections.  */
+
+static bool
+elfNN_kvx_output_arch_local_syms (bfd *output_bfd,
+				  struct bfd_link_info *info,
+				  void *finfo,
+				  int (*func) (void *, const char *,
+					       Elf_Internal_Sym *,
+					       asection *,
+					       struct elf_link_hash_entry *))
+{
+  output_arch_syminfo osi;
+  struct elf_kvx_link_hash_table *htab;
+
+  htab = elf_kvx_hash_table (info);
+
+  osi.finfo = finfo;
+  osi.info = info;
+  osi.func = func;
+
+  /* Long calls stubs.  */
+  if (htab->stub_bfd && htab->stub_bfd->sections)
+    {
+      asection *stub_sec;
+
+      for (stub_sec = htab->stub_bfd->sections;
+	   stub_sec != NULL; stub_sec = stub_sec->next)
+	{
+	  /* Ignore non-stub sections.  */
+	  if (!strstr (stub_sec->name, STUB_SUFFIX))
+	    continue;
+
+	  osi.sec = stub_sec;
+
+	  osi.sec_shndx = _bfd_elf_section_from_bfd_section
+	    (output_bfd, osi.sec->output_section);
+
+	  bfd_hash_traverse (&htab->stub_hash_table, kvx_map_one_stub,
+			     &osi);
+	}
+    }
+
+  /* Finally, output mapping symbols for the PLT.  */
+  if (!htab->root.splt || htab->root.splt->size == 0)
+    return true;
+
+  osi.sec_shndx = _bfd_elf_section_from_bfd_section
+    (output_bfd, htab->root.splt->output_section);
+  osi.sec = htab->root.splt;
+
+  return true;
+
+}
+
+/* Allocate target specific section data.  */
+
+static bool
+elfNN_kvx_new_section_hook (bfd *abfd, asection *sec)
+{
+  _kvx_elf_section_data *sdata;
+
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
+
+  return _bfd_elf_new_section_hook (abfd, sec);
+}
+
+/* Create dynamic sections. This is different from the ARM backend in that
+   the got, plt, gotplt and their relocation sections are all created in the
+   standard part of the bfd elf backend.  */
+
+static bool
+elfNN_kvx_create_dynamic_sections (bfd *dynobj,
+				   struct bfd_link_info *info)
+{
+  struct elf_kvx_link_hash_table *htab;
+
+  /* We need to create .got section.  */
+  if (!kvx_elf_create_got_section (dynobj, info))
+    return false;
+
+  if (!_bfd_elf_create_dynamic_sections (dynobj, info))
+    return false;
+
+  htab = elf_kvx_hash_table (info);
+  htab->sdynbss = bfd_get_linker_section (dynobj, ".dynbss");
+  if (!bfd_link_pic (info))
+    htab->srelbss = bfd_get_linker_section (dynobj, ".rela.bss");
+
+  if (!htab->sdynbss || (!bfd_link_pic (info) && !htab->srelbss))
+    abort ();
+
+  return true;
+}
+
+
+/* Allocate space in .plt, .got and associated reloc sections for
+   dynamic relocs.  */
+
+static bool
+elfNN_kvx_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
+{
+  struct bfd_link_info *info;
+  struct elf_kvx_link_hash_table *htab;
+  struct elf_dyn_relocs *p;
+
+  /* An example of a bfd_link_hash_indirect symbol is versioned
+     symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
+     -> __gxx_personality_v0(bfd_link_hash_defined)
+
+     There is no need to process bfd_link_hash_indirect symbols here
+     because we will also be presented with the concrete instance of
+     the symbol and elfNN_kvx_copy_indirect_symbol () will have been
+     called to copy all relevant data from the generic to the concrete
+     symbol instance.  */
+  if (h->root.type == bfd_link_hash_indirect)
+    return true;
+
+  if (h->root.type == bfd_link_hash_warning)
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+  info = (struct bfd_link_info *) inf;
+  htab = elf_kvx_hash_table (info);
+
+  if (htab->root.dynamic_sections_created && h->plt.refcount > 0)
+    {
+      /* Make sure this symbol is output as a dynamic symbol.
+	 Undefined weak syms won't yet be marked as dynamic.  */
+      if (h->dynindx == -1 && !h->forced_local)
+	{
+	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+	}
+
+      if (bfd_link_pic (info) || WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, 0, h))
+	{
+	  asection *s = htab->root.splt;
+
+	  /* If this is the first .plt entry, make room for the special
+	     first entry.  */
+	  if (s->size == 0)
+	    s->size += htab->plt_header_size;
+
+	  h->plt.offset = s->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
+	     location in the .plt.  This is required to make function
+	     pointers compare as equal between the normal executable and
+	     the shared library.  */
+	  if (!bfd_link_pic (info) && !h->def_regular)
+	    {
+	      h->root.u.def.section = s;
+	      h->root.u.def.value = h->plt.offset;
+	    }
+
+	  /* Make room for this entry. For now we only create the
+	     small model PLT entries. We later need to find a way
+	     of relaxing into these from the large model PLT entries.  */
+	  s->size += PLT_SMALL_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.  */
+	  htab->root.sgotplt->size += GOT_ENTRY_SIZE;
+
+	  /* We also need to make an entry in the .rela.plt section.  */
+	  htab->root.srelplt->size += RELOC_SIZE (htab);
+
+	  /* We need to ensure that all GOT entries that serve the PLT
+	     are consecutive with the special GOT slots [0] [1] and
+	     [2]. Any addtional relocations must be placed after the
+	     PLT related entries.  We abuse the reloc_count such that
+	     during sizing we adjust reloc_count to indicate the
+	     number of PLT related reserved entries.  In subsequent
+	     phases when filling in the contents of the reloc entries,
+	     PLT related entries are placed by computing their PLT
+	     index (0 .. reloc_count). While other none PLT relocs are
+	     placed at the slot indicated by reloc_count and
+	     reloc_count is updated.  */
+
+	  htab->root.srelplt->reloc_count++;
+	}
+      else
+	{
+	  h->plt.offset = (bfd_vma) - 1;
+	  h->needs_plt = 0;
+	}
+    }
+  else
+    {
+      h->plt.offset = (bfd_vma) - 1;
+      h->needs_plt = 0;
+    }
+
+  if (h->got.refcount > 0)
+    {
+      bool dyn;
+      unsigned got_type = elf_kvx_hash_entry (h)->got_type;
+
+      h->got.offset = (bfd_vma) - 1;
+
+      dyn = htab->root.dynamic_sections_created;
+
+      /* Make sure this symbol is output as a dynamic symbol.
+	 Undefined weak syms won't yet be marked as dynamic.  */
+      if (dyn && h->dynindx == -1 && !h->forced_local)
+	{
+	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+	}
+
+      if (got_type == GOT_UNKNOWN)
+	{
+	  (*_bfd_error_handler)
+	    (_("relocation against `%s' has faulty GOT type "),
+	     (h) ? h->root.root.string : "a local symbol");
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
+      else if (got_type == GOT_NORMAL)
+	{
+	  h->got.offset = htab->root.sgot->size;
+	  htab->root.sgot->size += GOT_ENTRY_SIZE;
+	  if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+	       || h->root.type != bfd_link_hash_undefweak)
+	      && (bfd_link_pic (info)
+		  || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
+	    {
+	      htab->root.srelgot->size += RELOC_SIZE (htab);
+	    }
+	}
+      else
+	{
+	  int indx;
+
+	  /* Any of these will require 2 GOT slots because
+	   * they use __tls_get_addr() */
+	  if (got_type & (GOT_TLS_GD | GOT_TLS_LD))
+	    {
+	      h->got.offset = htab->root.sgot->size;
+	      htab->root.sgot->size += GOT_ENTRY_SIZE * 2;
+	    }
+
+	  if (got_type & GOT_TLS_IE)
+	    {
+	      h->got.offset = htab->root.sgot->size;
+	      htab->root.sgot->size += GOT_ENTRY_SIZE;
+	    }
+
+	  indx = h && h->dynindx != -1 ? h->dynindx : 0;
+	  if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+	       || h->root.type != bfd_link_hash_undefweak)
+	      && (bfd_link_pic (info)
+		  || indx != 0
+		  || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h)))
+	    {
+	      /* Only the GD case requires 2 relocations. */
+	      if (got_type & GOT_TLS_GD)
+		htab->root.srelgot->size += RELOC_SIZE (htab) * 2;
+
+	      /* LD needs a DTPMOD reloc, IE needs a DTPOFF. */
+	      if (got_type & (GOT_TLS_LD | GOT_TLS_IE))
+		htab->root.srelgot->size += RELOC_SIZE (htab);
+	    }
+	}
+    }
+  else
+    {
+      h->got.offset = (bfd_vma) - 1;
+    }
+
+  if (h->dyn_relocs == NULL)
+    return true;
+
+  /* In the shared -Bsymbolic case, discard space allocated for
+     dynamic pc-relative relocs against symbols which turn out to be
+     defined in regular objects.  For the normal shared case, discard
+     space for pc-relative relocs that have become local due to symbol
+     visibility changes.  */
+
+  if (bfd_link_pic (info))
+    {
+      /* Relocs that use pc_count are those that appear on a call
+	 insn, or certain REL relocs that can generated via assembly.
+	 We want calls to protected symbols to resolve directly to the
+	 function rather than going via the plt.  If people want
+	 function pointer comparisons to work as expected then they
+	 should avoid writing weird assembly.  */
+      if (SYMBOL_CALLS_LOCAL (info, h))
+	{
+	  struct elf_dyn_relocs **pp;
+
+	  for (pp = &h->dyn_relocs; (p = *pp) != NULL;)
+	    {
+	      p->count -= p->pc_count;
+	      p->pc_count = 0;
+	      if (p->count == 0)
+		*pp = p->next;
+	      else
+		pp = &p->next;
+	    }
+	}
+
+      /* Also discard relocs on undefined weak syms with non-default
+	 visibility.  */
+      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))
+	    h->dyn_relocs = NULL;
+
+	  /* Make sure undefined weak symbols are output as a dynamic
+	     symbol in PIEs.  */
+	  else if (h->dynindx == -1
+		   && !h->forced_local
+		   && !bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+	}
+
+    }
+  else if (ELIMINATE_COPY_RELOCS)
+    {
+      /* For the non-shared case, discard space for relocs against
+	 symbols which turn out to need copy relocs or are not
+	 dynamic.  */
+
+      if (!h->non_got_ref
+	  && ((h->def_dynamic
+	       && !h->def_regular)
+	      || (htab->root.dynamic_sections_created
+		  && (h->root.type == bfd_link_hash_undefweak
+		      || h->root.type == bfd_link_hash_undefined))))
+	{
+	  /* Make sure this symbol is output as a dynamic symbol.
+	     Undefined weak syms won't yet be marked as dynamic.  */
+	  if (h->dynindx == -1
+	      && !h->forced_local
+	      && !bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+
+	  /* If that succeeded, we know we'll be keeping all the
+	     relocs.  */
+	  if (h->dynindx != -1)
+	    goto keep;
+	}
+
+      h->dyn_relocs = NULL;
+
+    keep:;
+    }
+
+  /* Finally, allocate space.  */
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
+    {
+      asection *sreloc;
+
+      sreloc = elf_section_data (p->sec)->sreloc;
+
+      BFD_ASSERT (sreloc != NULL);
+
+      sreloc->size += p->count * RELOC_SIZE (htab);
+    }
+
+  return true;
+}
+
+/* Find any dynamic relocs that apply to read-only sections.  */
+
+static bool
+kvx_readonly_dynrelocs (struct elf_link_hash_entry * h, void * inf)
+{
+  struct elf_dyn_relocs * p;
+
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
+    {
+      asection *s = p->sec;
+
+      if (s != NULL && (s->flags & SEC_READONLY) != 0)
+	{
+	  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"),
+				  s->owner, h->root.root.string, s);
+
+	  /* Not an error, just cut short the traversal.  */
+	  return false;
+	}
+    }
+  return true;
+}
+
+/* This is the most important function of all . Innocuosly named
+   though !  */
+static bool
+elfNN_kvx_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			      struct bfd_link_info *info)
+{
+  struct elf_kvx_link_hash_table *htab;
+  bfd *dynobj;
+  asection *s;
+  bool relocs;
+  bfd *ibfd;
+
+  htab = elf_kvx_hash_table ((info));
+  dynobj = htab->root.dynobj;
+  if (dynobj == NULL)
+    return true;
+
+  if (htab->root.dynamic_sections_created)
+    {
+      if (bfd_link_executable (info) && !info->nointerp)
+	{
+	  s = bfd_get_linker_section (dynobj, ".interp");
+	  if (s == NULL)
+	    abort ();
+	  s->size = sizeof ELF_DYNAMIC_INTERPRETER;
+	  s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
+	}
+    }
+
+  /* Set up .got offsets for local syms, and space for local dynamic
+     relocs.  */
+  for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
+    {
+      struct elf_kvx_local_symbol *locals = NULL;
+      Elf_Internal_Shdr *symtab_hdr;
+      asection *srel;
+      unsigned int i;
+
+      if (!is_kvx_elf (ibfd))
+	continue;
+
+      for (s = ibfd->sections; s != NULL; s = s->next)
+	{
+	  struct elf_dyn_relocs *p;
+
+	  for (p = (struct elf_dyn_relocs *)
+		 (elf_section_data (s)->local_dynrel); p != NULL; p = p->next)
+	    {
+	      if (!bfd_is_abs_section (p->sec)
+		  && bfd_is_abs_section (p->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)
+		{
+		  srel = elf_section_data (p->sec)->sreloc;
+		  srel->size += p->count * RELOC_SIZE (htab);
+		  if ((p->sec->output_section->flags & SEC_READONLY) != 0)
+		    info->flags |= DF_TEXTREL;
+		}
+	    }
+	}
+
+      locals = elf_kvx_locals (ibfd);
+      if (!locals)
+	continue;
+
+      symtab_hdr = &elf_symtab_hdr (ibfd);
+      srel = htab->root.srelgot;
+      for (i = 0; i < symtab_hdr->sh_info; i++)
+	{
+	  locals[i].got_offset = (bfd_vma) - 1;
+	  if (locals[i].got_refcount > 0)
+	    {
+	      unsigned got_type = locals[i].got_type;
+	      if (got_type & (GOT_TLS_GD | GOT_TLS_LD))
+		{
+		  locals[i].got_offset = htab->root.sgot->size;
+		  htab->root.sgot->size += GOT_ENTRY_SIZE * 2;
+		}
+
+	      if (got_type & (GOT_NORMAL | GOT_TLS_IE ))
+		{
+		  locals[i].got_offset = htab->root.sgot->size;
+		  htab->root.sgot->size += GOT_ENTRY_SIZE;
+		}
+
+	      if (got_type == GOT_UNKNOWN)
+		{
+		}
+
+	      if (bfd_link_pic (info))
+		{
+		  if (got_type & GOT_TLS_GD)
+		    htab->root.srelgot->size += RELOC_SIZE (htab) * 2;
+
+		  if (got_type & GOT_TLS_IE
+		      || got_type & GOT_TLS_LD
+		      || got_type & GOT_NORMAL)
+		    htab->root.srelgot->size += RELOC_SIZE (htab);
+		}
+	    }
+	  else
+	    {
+	      locals[i].got_refcount = (bfd_vma) - 1;
+	    }
+	}
+    }
+
+
+  /* Allocate global sym .plt and .got entries, and space for global
+     sym dynamic relocs.  */
+  elf_link_hash_traverse (&htab->root, elfNN_kvx_allocate_dynrelocs,
+			  info);
+
+  /* For every jump slot reserved in the sgotplt, reloc_count is
+     incremented.  However, when we reserve space for TLS descriptors,
+     it's not incremented, so in order to compute the space reserved
+     for them, it suffices to multiply the reloc count by the jump
+     slot size.  */
+
+  if (htab->root.srelplt)
+    htab->sgotplt_jump_table_size = kvx_compute_jump_table_size (htab);
+
+  /* We now have determined the sizes of the various dynamic sections.
+     Allocate memory for them.  */
+  relocs = false;
+  for (s = dynobj->sections; s != NULL; s = s->next)
+    {
+      if ((s->flags & SEC_LINKER_CREATED) == 0)
+	continue;
+
+      if (s == htab->root.splt
+	  || s == htab->root.sgot
+	  || s == htab->root.sgotplt
+	  || s == htab->root.iplt
+	  || s == htab->root.igotplt || s == htab->sdynbss)
+	{
+	  /* Strip this section if we don't need it; see the
+	     comment below.  */
+	}
+      else if (startswith (bfd_section_name (s), ".rela"))
+	{
+	  if (s->size != 0 && s != htab->root.srelplt)
+	    relocs = true;
+
+	  /* We use the reloc_count field as a counter if we need
+	     to copy relocs into the output file.  */
+	  if (s != htab->root.srelplt)
+	    s->reloc_count = 0;
+	}
+      else
+	{
+	  /* It's not one of our sections, so don't allocate space.  */
+	  continue;
+	}
+
+      if (s->size == 0)
+	{
+	  /* If we don't need this section, strip it from the
+	     output file.  This is mostly to handle .rela.bss and
+	     .rela.plt.  We must create both sections in
+	     create_dynamic_sections, because they must be created
+	     before the linker maps input sections to output
+	     sections.  The linker does that before
+	     adjust_dynamic_symbol is called, and it is that
+	     function which decides whether anything needs to go
+	     into these sections.  */
+
+	  s->flags |= SEC_EXCLUDE;
+	  continue;
+	}
+
+      if ((s->flags & SEC_HAS_CONTENTS) == 0)
+	continue;
+
+      /* Allocate memory for the section contents.  We use bfd_zalloc
+	 here in case unused entries are not reclaimed before the
+	 section's contents are written out.  This should not happen,
+	 but this way if it does, we get a R_KVX_NONE reloc instead
+	 of garbage.  */
+      s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
+      if (s->contents == NULL)
+	return false;
+      s->alloced = 1;
+    }
+
+  if (htab->root.dynamic_sections_created)
+    {
+      /* Add some entries to the .dynamic section.  We fill in the
+	 values later, in elfNN_kvx_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, 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, kvx_readonly_dynrelocs,
+				    info);
+
+	  if ((info->flags & DF_TEXTREL) != 0)
+	    {
+	      if (!add_dynamic_entry (DT_TEXTREL, 0))
+		return false;
+	    }
+	}
+    }
+#undef add_dynamic_entry
+
+  return true;
+}
+
+static inline void
+elf_kvx_update_plt_entry (bfd *output_bfd,
+			  bfd_reloc_code_real_type r_type,
+			  bfd_byte *plt_entry, bfd_vma value)
+{
+  reloc_howto_type *howto = elfNN_kvx_howto_from_bfd_reloc (r_type);
+  BFD_ASSERT(howto != NULL);
+  _bfd_kvx_elf_put_addend (output_bfd, plt_entry, r_type, howto, value);
+}
+
+static void
+elfNN_kvx_create_small_pltn_entry (struct elf_link_hash_entry *h,
+				   struct elf_kvx_link_hash_table *htab,
+				   bfd *output_bfd)
+{
+  bfd_byte *plt_entry;
+  bfd_vma plt_index;
+  bfd_vma got_offset;
+  bfd_vma gotplt_entry_address;
+  bfd_vma plt_entry_address;
+  Elf_Internal_Rela rela;
+  bfd_byte *loc;
+  asection *plt, *gotplt, *relplt;
+
+  plt = htab->root.splt;
+  gotplt = htab->root.sgotplt;
+  relplt = htab->root.srelplt;
+
+  /* Get the index in the procedure linkage table which
+     corresponds to this symbol.  This is the index of this symbol
+     in all the symbols for which we are making plt entries.  The
+     first entry in the procedure linkage table is reserved.
+
+     Get the offset into the .got table of the entry that
+     corresponds to this function.	Each .got entry is GOT_ENTRY_SIZE
+     bytes. The first three are reserved for the dynamic linker.
+
+     For static executables, we don't reserve anything.  */
+
+  if (plt == htab->root.splt)
+    {
+      plt_index = (h->plt.offset - htab->plt_header_size) / htab->plt_entry_size;
+      got_offset = (plt_index + 3) * GOT_ENTRY_SIZE;
+    }
+  else
+    {
+      plt_index = h->plt.offset / htab->plt_entry_size;
+      got_offset = plt_index * GOT_ENTRY_SIZE;
+    }
+
+  plt_entry = plt->contents + h->plt.offset;
+  plt_entry_address = plt->output_section->vma
+    + plt->output_offset + h->plt.offset;
+  gotplt_entry_address = gotplt->output_section->vma +
+    gotplt->output_offset + got_offset;
+
+  /* Copy in the boiler-plate for the PLTn entry.  */
+  memcpy (plt_entry, elfNN_kvx_small_plt_entry, PLT_SMALL_ENTRY_SIZE);
+
+  /* Patch the loading of the GOT entry, relative to the PLT entry
+     address. */
+
+  /* Use 37bits offset for both 32 and 64bits mode.
+     Fill the LO10 of of lw $r9 = 0[$r14].  */
+  elf_kvx_update_plt_entry(output_bfd, BFD_RELOC_KVX_S37_LO10,
+			   plt_entry+4,
+			   gotplt_entry_address - plt_entry_address);
+
+  /* Fill the UP27 of of lw $r9 = 0[$r14].  */
+  elf_kvx_update_plt_entry(output_bfd, BFD_RELOC_KVX_S37_UP27,
+			   plt_entry+8,
+			   gotplt_entry_address - plt_entry_address);
+
+  rela.r_offset = gotplt_entry_address;
+
+  /* Fill in the entry in the .rela.plt section.  */
+  rela.r_info = ELFNN_R_INFO (h->dynindx, R_KVX_JMP_SLOT);
+  rela.r_addend = 0;
+
+  /* Compute the relocation entry to used based on PLT index and do
+     not adjust reloc_count. The reloc_count has already been adjusted
+     to account for this entry.  */
+  loc = relplt->contents + plt_index * RELOC_SIZE (htab);
+  bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+}
+
+/* Size sections even though they're not dynamic.  We use it to setup
+   _TLS_MODULE_BASE_, if needed.  */
+
+static bool
+elfNN_kvx_early_size_sections (bfd *output_bfd, struct bfd_link_info *info)
+{
+  asection *tls_sec;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  tls_sec = elf_hash_table (info)->tls_sec;
+
+  if (tls_sec)
+    {
+      struct elf_link_hash_entry *tlsbase;
+
+      tlsbase = elf_link_hash_lookup (elf_hash_table (info),
+				      "_TLS_MODULE_BASE_", true, true, false);
+
+      if (tlsbase)
+	{
+	  struct bfd_link_hash_entry *h = NULL;
+	  const struct elf_backend_data *bed =
+	    get_elf_backend_data (output_bfd);
+
+	  if (!(_bfd_generic_link_add_one_symbol
+		(info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL,
+		 tls_sec, 0, NULL, false, bed->collect, &h)))
+	    return false;
+
+	  tlsbase->type = STT_TLS;
+	  tlsbase = (struct elf_link_hash_entry *) h;
+	  tlsbase->def_regular = 1;
+	  tlsbase->other = STV_HIDDEN;
+	  (*bed->elf_backend_hide_symbol) (info, tlsbase, true);
+	}
+    }
+
+  return true;
+}
+
+/* Finish up dynamic symbol handling.  We set the contents of various
+   dynamic sections here.  */
+static bool
+elfNN_kvx_finish_dynamic_symbol (bfd *output_bfd,
+				 struct bfd_link_info *info,
+				 struct elf_link_hash_entry *h,
+				 Elf_Internal_Sym *sym)
+{
+  struct elf_kvx_link_hash_table *htab;
+  htab = elf_kvx_hash_table (info);
+
+  if (h->plt.offset != (bfd_vma) - 1)
+    {
+      asection *plt = NULL, *gotplt = NULL, *relplt = NULL;
+
+      /* This symbol has an entry in the procedure linkage table.  Set
+	 it up.  */
+
+      if (htab->root.splt != NULL)
+	{
+	  plt = htab->root.splt;
+	  gotplt = htab->root.sgotplt;
+	  relplt = htab->root.srelplt;
+	}
+
+      /* This symbol has an entry in the procedure linkage table.  Set
+	 it up.	 */
+      if ((h->dynindx == -1
+	   && !((h->forced_local || bfd_link_executable (info))
+		&& h->def_regular
+		&& h->type == STT_GNU_IFUNC))
+	  || plt == NULL
+	  || gotplt == NULL
+	  || relplt == NULL)
+	abort ();
+
+      elfNN_kvx_create_small_pltn_entry (h, htab, output_bfd);
+      if (!h->def_regular)
+	{
+	  /* Mark the symbol as undefined, rather than as defined in
+	     the .plt section.  */
+	  sym->st_shndx = SHN_UNDEF;
+	  /* If the symbol is weak we need to clear the value.
+	     Otherwise, the PLT entry would provide a definition for
+	     the symbol even if the symbol wasn't defined anywhere,
+	     and so the symbol would never be NULL.  Leave the value if
+	     there were any relocations where pointer equality matters
+	     (this is a clue for the dynamic linker, to make function
+	     pointer comparisons work between an application and shared
+	     library).  */
+	  if (!h->ref_regular_nonweak || !h->pointer_equality_needed)
+	    sym->st_value = 0;
+	}
+    }
+
+  if (h->got.offset != (bfd_vma) - 1
+      && elf_kvx_hash_entry (h)->got_type == GOT_NORMAL)
+    {
+      Elf_Internal_Rela rela;
+      bfd_byte *loc;
+
+      /* This symbol has an entry in the global offset table.  Set it
+	 up.  */
+      if (htab->root.sgot == NULL || htab->root.srelgot == NULL)
+	abort ();
+
+      rela.r_offset = (htab->root.sgot->output_section->vma
+		       + htab->root.sgot->output_offset
+		       + (h->got.offset & ~(bfd_vma) 1));
+
+#ifdef UGLY_DEBUG
+      printf("setting rela at offset 0x%x(0x%x + 0x%x + 0x%x) for %s\n",
+	     rela.r_offset,
+	     htab->root.sgot->output_section->vma,
+	     htab->root.sgot->output_offset,
+	     h->got.offset,
+	     h->root.root.string);
+#endif
+
+      if (bfd_link_pic (info) && SYMBOL_REFERENCES_LOCAL (info, h))
+	{
+	  if (!h->def_regular)
+	    return false;
+
+	  /* in case of PLT related GOT entry, it is not clear who is
+	     supposed to set the LSB of GOT entry...
+	     kvx_calculate_got_entry_vma() would be a good candidate,
+	     but it is not called currently
+	     So we are commenting it ATM.  */
+	  // BFD_ASSERT ((h->got.offset & 1) != 0);
+	  rela.r_info = ELFNN_R_INFO (0, R_KVX_RELATIVE);
+	  rela.r_addend = (h->root.u.def.value
+			   + h->root.u.def.section->output_section->vma
+			   + h->root.u.def.section->output_offset);
+	}
+      else
+	{
+	  BFD_ASSERT ((h->got.offset & 1) == 0);
+	  bfd_put_NN (output_bfd, (bfd_vma) 0,
+		      htab->root.sgot->contents + h->got.offset);
+	  rela.r_info = ELFNN_R_INFO (h->dynindx, R_KVX_GLOB_DAT);
+	  rela.r_addend = 0;
+	}
+
+      loc = htab->root.srelgot->contents;
+      loc += htab->root.srelgot->reloc_count++ * RELOC_SIZE (htab);
+      bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+    }
+
+  if (h->needs_copy)
+    {
+      Elf_Internal_Rela rela;
+      bfd_byte *loc;
+
+      /* This symbol needs a copy reloc.  Set it up.  */
+
+      if (h->dynindx == -1
+	  || (h->root.type != bfd_link_hash_defined
+	      && h->root.type != bfd_link_hash_defweak)
+	  || htab->srelbss == NULL)
+	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_info = ELFNN_R_INFO (h->dynindx, R_KVX_COPY);
+      rela.r_addend = 0;
+      loc = htab->srelbss->contents;
+      loc += htab->srelbss->reloc_count++ * RELOC_SIZE (htab);
+      bfd_elfNN_swap_reloca_out (output_bfd, &rela, loc);
+    }
+
+  /* Mark _DYNAMIC and _GLOBAL_OFFSET_TABLE_ as absolute.  SYM may
+     be NULL for local symbols.  */
+  if (sym != NULL
+      && (h == elf_hash_table (info)->hdynamic
+	  || h == elf_hash_table (info)->hgot))
+    sym->st_shndx = SHN_ABS;
+
+  return true;
+}
+
+static void
+elfNN_kvx_init_small_plt0_entry (bfd *output_bfd ATTRIBUTE_UNUSED,
+				 struct elf_kvx_link_hash_table *htab)
+{
+  memcpy (htab->root.splt->contents, elfNN_kvx_small_plt0_entry,
+	  PLT_ENTRY_SIZE);
+  elf_section_data (htab->root.splt->output_section)->this_hdr.sh_entsize =
+    PLT_ENTRY_SIZE;
+}
+
+static bool
+elfNN_kvx_finish_dynamic_sections (bfd *output_bfd,
+				   struct bfd_link_info *info)
+{
+  struct elf_kvx_link_hash_table *htab;
+  bfd *dynobj;
+  asection *sdyn;
+
+  htab = elf_kvx_hash_table (info);
+  dynobj = htab->root.dynobj;
+  sdyn = bfd_get_linker_section (dynobj, ".dynamic");
+
+  if (htab->root.dynamic_sections_created)
+    {
+      ElfNN_External_Dyn *dyncon, *dynconend;
+
+      if (sdyn == NULL || htab->root.sgot == NULL)
+	abort ();
+
+      dyncon = (ElfNN_External_Dyn *) sdyn->contents;
+      dynconend = (ElfNN_External_Dyn *) (sdyn->contents + sdyn->size);
+      for (; dyncon < dynconend; dyncon++)
+	{
+	  Elf_Internal_Dyn dyn;
+	  asection *s;
+
+	  bfd_elfNN_swap_dyn_in (dynobj, dyncon, &dyn);
+
+	  switch (dyn.d_tag)
+	    {
+	    default:
+	      continue;
+
+	    case DT_PLTGOT:
+	      s = htab->root.sgotplt;
+	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+	      break;
+
+	    case DT_JMPREL:
+	      s = htab->root.srelplt;
+	      dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+	      break;
+
+	    case DT_PLTRELSZ:
+	      s = htab->root.srelplt;
+	      dyn.d_un.d_val = s->size;
+	      break;
+
+	    case DT_RELASZ:
+	      /* The procedure linkage table relocs (DT_JMPREL) should
+		 not be included in the overall relocs (DT_RELA).
+		 Therefore, we override the DT_RELASZ entry here to
+		 make it not include the JMPREL relocs.  Since the
+		 linker script arranges for .rela.plt to follow all
+		 other relocation sections, we don't have to worry
+		 about changing the DT_RELA entry.  */
+	      if (htab->root.srelplt != NULL)
+		{
+		  s = htab->root.srelplt;
+		  dyn.d_un.d_val -= s->size;
+		}
+	      break;
+	    }
+
+	  bfd_elfNN_swap_dyn_out (output_bfd, &dyn, dyncon);
+	}
+
+    }
+
+  /* Fill in the special first entry in the procedure linkage table.  */
+  if (htab->root.splt && htab->root.splt->size > 0)
+    {
+      elfNN_kvx_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->root.sgotplt)
+    {
+      if (bfd_is_abs_section (htab->root.sgotplt->output_section))
+	{
+	  (*_bfd_error_handler)
+	    (_("discarded output section: `%pA'"), htab->root.sgotplt);
+	  return false;
+	}
+
+      /* Fill in the first three entries in the global offset table.  */
+      if (htab->root.sgotplt->size > 0)
+	{
+	  bfd_put_NN (output_bfd, (bfd_vma) 0, htab->root.sgotplt->contents);
+
+	  /* Write GOT[1] and GOT[2], needed for the dynamic linker.  */
+	  bfd_put_NN (output_bfd,
+		      (bfd_vma) 0,
+		      htab->root.sgotplt->contents + GOT_ENTRY_SIZE);
+	  bfd_put_NN (output_bfd,
+		      (bfd_vma) 0,
+		      htab->root.sgotplt->contents + GOT_ENTRY_SIZE * 2);
+	}
+
+      if (htab->root.sgot)
+	{
+	  if (htab->root.sgot->size > 0)
+	    {
+	      bfd_vma addr =
+		sdyn ? sdyn->output_section->vma + sdyn->output_offset : 0;
+	      bfd_put_NN (output_bfd, addr, htab->root.sgot->contents);
+	    }
+	}
+
+      elf_section_data (htab->root.sgotplt->output_section)->
+	this_hdr.sh_entsize = GOT_ENTRY_SIZE;
+    }
+
+  if (htab->root.sgot && htab->root.sgot->size > 0)
+    elf_section_data (htab->root.sgot->output_section)->this_hdr.sh_entsize
+      = GOT_ENTRY_SIZE;
+
+  return true;
+}
+
+/* Return address for Ith PLT stub in section PLT, for relocation REL
+   or (bfd_vma) -1 if it should not be included.  */
+
+static bfd_vma
+elfNN_kvx_plt_sym_val (bfd_vma i, const asection *plt,
+		       const arelent *rel ATTRIBUTE_UNUSED)
+{
+  return plt->vma + PLT_ENTRY_SIZE + i * PLT_SMALL_ENTRY_SIZE;
+}
+
+#define ELF_ARCH			bfd_arch_kvx
+#define ELF_TARGET_ID			KVX_ELF_DATA
+#define ELF_MACHINE_CODE		EM_KVX
+#define ELF_MAXPAGESIZE			0x10000
+#define ELF_MINPAGESIZE			0x1000
+#define ELF_COMMONPAGESIZE		0x1000
+
+#define bfd_elfNN_bfd_link_hash_table_create    \
+  elfNN_kvx_link_hash_table_create
+
+#define bfd_elfNN_bfd_merge_private_bfd_data	\
+  elfNN_kvx_merge_private_bfd_data
+
+#define bfd_elfNN_bfd_print_private_bfd_data	\
+  elfNN_kvx_print_private_bfd_data
+
+#define bfd_elfNN_bfd_reloc_type_lookup		\
+  elfNN_kvx_reloc_type_lookup
+
+#define bfd_elfNN_bfd_reloc_name_lookup		\
+  elfNN_kvx_reloc_name_lookup
+
+#define bfd_elfNN_bfd_set_private_flags		\
+  elfNN_kvx_set_private_flags
+
+#define bfd_elfNN_mkobject			\
+  elfNN_kvx_mkobject
+
+#define bfd_elfNN_new_section_hook		\
+  elfNN_kvx_new_section_hook
+
+#define elf_backend_adjust_dynamic_symbol	\
+  elfNN_kvx_adjust_dynamic_symbol
+
+#define elf_backend_early_size_sections		\
+  elfNN_kvx_early_size_sections
+
+#define elf_backend_check_relocs		\
+  elfNN_kvx_check_relocs
+
+#define elf_backend_copy_indirect_symbol	\
+  elfNN_kvx_copy_indirect_symbol
+
+/* Create .dynbss, and .rela.bss sections in DYNOBJ, and set up shortcuts
+   to them in our hash.  */
+#define elf_backend_create_dynamic_sections	\
+  elfNN_kvx_create_dynamic_sections
+
+#define elf_backend_init_index_section		\
+  _bfd_elf_init_2_index_sections
+
+#define elf_backend_finish_dynamic_sections	\
+  elfNN_kvx_finish_dynamic_sections
+
+#define elf_backend_finish_dynamic_symbol	\
+  elfNN_kvx_finish_dynamic_symbol
+
+#define elf_backend_object_p			\
+  elfNN_kvx_object_p
+
+#define elf_backend_output_arch_local_syms      \
+  elfNN_kvx_output_arch_local_syms
+
+#define elf_backend_plt_sym_val			\
+  elfNN_kvx_plt_sym_val
+
+#define elf_backend_init_file_header		\
+  elfNN_kvx_init_file_header
+
+#define elf_backend_init_process_headers	\
+  elfNN_kvx_init_process_headers
+
+#define elf_backend_relocate_section		\
+  elfNN_kvx_relocate_section
+
+#define elf_backend_reloc_type_class		\
+  elfNN_kvx_reloc_type_class
+
+#define elf_backend_late_size_sections	\
+  elfNN_kvx_late_size_sections
+
+#define elf_backend_can_refcount       1
+#define elf_backend_can_gc_sections    1
+#define elf_backend_plt_readonly       1
+#define elf_backend_want_got_plt       1
+#define elf_backend_want_plt_sym       0
+#define elf_backend_may_use_rel_p      0
+#define elf_backend_may_use_rela_p     1
+#define elf_backend_default_use_rela_p 1
+#define elf_backend_rela_normal        1
+#define elf_backend_got_header_size (GOT_ENTRY_SIZE * 3)
+#define elf_backend_default_execstack  0
+#define elf_backend_extern_protected_data 1
+#define elf_backend_hash_symbol elf_kvx_hash_symbol
+
+#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.20200303/bfd/elfnn-loongarch.c ./bfd/elfnn-loongarch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfnn-loongarch.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elfnn-loongarch.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,6715 @@
+/* LoongArch-specific support for NN-bit ELF.
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+   Contributed by Loongson Ltd.
+
+   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; see the file COPYING3.  If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "ansidecl.h"
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#define ARCH_SIZE NN
+#include "elf-bfd.h"
+#include "objalloc.h"
+#include "splay-tree.h"
+#include "elf/loongarch.h"
+#include "elfxx-loongarch.h"
+#include "opcode/loongarch.h"
+
+static bool
+loongarch_info_to_howto_rela (bfd *abfd, arelent *cache_ptr,
+			      Elf_Internal_Rela *dst)
+{
+  cache_ptr->howto = loongarch_elf_rtype_to_howto (abfd,
+						   ELFNN_R_TYPE (dst->r_info));
+  return cache_ptr->howto != NULL;
+}
+
+/* LoongArch ELF linker hash entry.  */
+struct loongarch_elf_link_hash_entry
+{
+  struct elf_link_hash_entry elf;
+
+#define GOT_UNKNOWN 0
+#define GOT_NORMAL  1
+#define GOT_TLS_GD  2
+#define GOT_TLS_IE  4
+#define GOT_TLS_LE  8
+#define GOT_TLS_GDESC 16
+
+#define GOT_TLS_GD_BOTH_P(tls_type) \
+  ((tls_type & GOT_TLS_GD) && (tls_type & GOT_TLS_GDESC))
+#define GOT_TLS_GD_ANY_P(tls_type) \
+  ((tls_type & GOT_TLS_GD) || (tls_type & GOT_TLS_GDESC))
+  char tls_type;
+};
+
+#define loongarch_elf_hash_entry(ent)	\
+  ((struct loongarch_elf_link_hash_entry *) (ent))
+
+struct _bfd_loongarch_elf_obj_tdata
+{
+  struct elf_obj_tdata root;
+
+  /* The tls_type for each local got entry.  */
+  char *local_got_tls_type;
+};
+
+#define _bfd_loongarch_elf_tdata(abfd)	\
+  ((struct _bfd_loongarch_elf_obj_tdata *) (abfd)->tdata.any)
+
+#define _bfd_loongarch_elf_local_got_tls_type(abfd)	\
+  (_bfd_loongarch_elf_tdata (abfd)->local_got_tls_type)
+
+#define _bfd_loongarch_elf_tls_type(abfd, h, symndx)			\
+  (*((h) != NULL							\
+     ? &loongarch_elf_hash_entry (h)->tls_type				\
+     : &_bfd_loongarch_elf_local_got_tls_type (abfd)[symndx]))
+
+#define is_loongarch_elf(bfd)						\
+  (bfd_get_flavour (bfd) == bfd_target_elf_flavour			\
+   && elf_tdata (bfd) != NULL						\
+   && elf_object_id (bfd) == LARCH_ELF_DATA)
+
+static bool
+elfNN_loongarch_object (bfd *abfd)
+{
+  return bfd_elf_allocate_object (abfd,
+				  sizeof (struct _bfd_loongarch_elf_obj_tdata));
+}
+
+struct relr_entry
+{
+  asection *sec;
+  bfd_vma off;
+};
+
+struct loongarch_elf_link_hash_table
+{
+  struct elf_link_hash_table elf;
+
+  /* Short-cuts to get to dynamic linker sections.  */
+  asection *sdyntdata;
+
+  /* Small local sym to section mapping cache.  */
+  struct sym_cache sym_cache;
+
+  /* Used by local STT_GNU_IFUNC symbols.  */
+  htab_t loc_hash_table;
+  void *loc_hash_memory;
+
+  /* The max alignment of output sections.  */
+  bfd_vma max_alignment;
+
+  /* The data segment phase, don't relax the section
+     when it is exp_seg_relro_adjust.  */
+  int *data_segment_phase;
+
+  /* Array of relative relocs to be emitted in DT_RELR format.  */
+  bfd_size_type relr_alloc;
+  bfd_size_type relr_count;
+  struct relr_entry *relr;
+
+  /* Sorted output addresses of above relative relocs.  */
+  bfd_vma *relr_sorted;
+
+  /* Layout recomputation count.  */
+  bfd_size_type relr_layout_iter;
+
+  /* In BFD DT_RELR is implemented as a "relaxation."  If in a relax trip
+     size_relative_relocs is updating the layout, relax_section may see
+     a partially updated state (some sections have vma updated but the
+     others do not), and it's unsafe to do the normal relaxation.  */
+  bool layout_mutating_for_relr;
+
+  /* Pending relaxation (byte deletion) operations meant for roughly
+     sequential access.  */
+  splay_tree pending_delete_ops;
+};
+
+struct loongarch_elf_section_data
+{
+  struct bfd_elf_section_data elf;
+
+  /* &htab->relr[i] where i is the smallest number s.t.
+     elf_section_data (htab->relr[i].sec) == &elf.
+     NULL if there exists no such i.  */
+  struct relr_entry *relr;
+};
+
+/* We need an additional field in elf_section_data to handle complex
+   interactions between DT_RELR and relaxation.  */
+static bool
+loongarch_elf_new_section_hook (bfd *abfd, asection *sec)
+{
+  struct loongarch_elf_section_data *sdata;
+
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (!sdata)
+    return false;
+  sec->used_by_bfd = sdata;
+
+  return _bfd_elf_new_section_hook (abfd, sec);
+}
+
+#define loongarch_elf_section_data(x) \
+  ((struct loongarch_elf_section_data *) elf_section_data (x))
+
+/* Get the LoongArch ELF linker hash table from a link_info structure.  */
+#define loongarch_elf_hash_table(p)					\
+    ((struct loongarch_elf_link_hash_table *) ((p)->hash))		\
+
+/* During linker relaxation, indicates whether the section has already
+   undergone alignment processing and no more byte deletion is permitted.  */
+#define loongarch_sec_closed_for_deletion(sec) ((sec)->sec_flg0)
+
+#define MINUS_ONE ((bfd_vma) 0 - 1)
+
+#define sec_addr(sec) ((sec)->output_section->vma + (sec)->output_offset)
+
+#define LARCH_ELF_LOG_WORD_BYTES (ARCH_SIZE == 32 ? 2 : 3)
+#define LARCH_ELF_WORD_BYTES (1 << LARCH_ELF_LOG_WORD_BYTES)
+
+#define PLT_HEADER_INSNS 8
+#define PLT_HEADER_SIZE (PLT_HEADER_INSNS * 4)
+
+#define PLT_ENTRY_INSNS 4
+#define PLT_ENTRY_SIZE (PLT_ENTRY_INSNS * 4)
+
+#define GOT_ENTRY_SIZE (LARCH_ELF_WORD_BYTES)
+
+/* Reserve two entries of GOTPLT for ld.so, one is used for PLT
+   resolver _dl_runtime_resolve, the other is used for link map.  */
+#define GOTPLT_HEADER_SIZE (GOT_ENTRY_SIZE * 2)
+
+#define elf_backend_want_got_plt 1
+
+#define elf_backend_plt_readonly 1
+
+#define elf_backend_want_plt_sym 1
+#define elf_backend_plt_alignment 4
+#define elf_backend_can_gc_sections 1
+#define elf_backend_can_refcount 1
+#define elf_backend_want_got_sym 1
+
+#define elf_backend_got_header_size (GOT_ENTRY_SIZE * 1)
+
+#define elf_backend_want_dynrelro 1
+#define elf_backend_rela_normal 1
+#define elf_backend_default_execstack 0
+
+#define IS_LOONGARCH_TLS_TRANS_RELOC(R_TYPE)  \
+  ((R_TYPE) == R_LARCH_TLS_DESC_PC_HI20	      \
+   || (R_TYPE) == R_LARCH_TLS_DESC_PC_LO12    \
+   || (R_TYPE) == R_LARCH_TLS_DESC_LD	      \
+   || (R_TYPE) == R_LARCH_TLS_DESC_CALL	      \
+   || (R_TYPE) == R_LARCH_TLS_IE_PC_HI20      \
+   || (R_TYPE) == R_LARCH_TLS_IE_PC_LO12)
+
+#define IS_OUTDATED_TLS_LE_RELOC(R_TYPE)  \
+  ((R_TYPE) == R_LARCH_TLS_LE_HI20	  \
+   || (R_TYPE) == R_LARCH_TLS_LE_LO12	  \
+   || (R_TYPE) == R_LARCH_TLS_LE64_LO20	  \
+   || (R_TYPE) == R_LARCH_TLS_LE64_HI12)
+
+#define IS_CALL_RELOC(R_TYPE)	  \
+  ((R_TYPE) == R_LARCH_B26	  \
+   ||(R_TYPE) == R_LARCH_CALL36)
+
+/* If TLS GD/IE need dynamic relocations, INDX will be the dynamic indx,
+   and set NEED_RELOC to true used in allocate_dynrelocs and
+   loongarch_elf_relocate_section for TLS GD/IE.  */
+#define LARCH_TLS_GD_IE_NEED_DYN_RELOC(INFO, DYN, H, INDX, NEED_RELOC) \
+  do \
+    { \
+      if ((H) != NULL \
+	  && (H)->dynindx != -1 \
+	  && WILL_CALL_FINISH_DYNAMIC_SYMBOL ((DYN), \
+				    bfd_link_pic (INFO), (H))) \
+      (INDX) = (H)->dynindx; \
+      if (((H) == NULL \
+	    || ELF_ST_VISIBILITY ((H)->other) == STV_DEFAULT \
+	    || (H)->root.type != bfd_link_hash_undefweak) \
+	    && (!bfd_link_executable (INFO) \
+	      || (INDX) != 0)) \
+      (NEED_RELOC) = true; \
+    } \
+    while (0)
+
+/* TL;DR always use it in this file instead when you want to type
+   SYMBOL_REFERENCES_LOCAL.
+
+   It's like SYMBOL_REFERENCES_LOCAL, but it returns true for local
+   protected functions.  It happens to be same as SYMBOL_CALLS_LOCAL but
+   let's not reuse SYMBOL_CALLS_LOCAL or "CALLS" may puzzle people.
+
+   We do generate a PLT entry when someone attempts to la.pcrel an external
+   function.  But we never really implemented "R_LARCH_COPY", thus we've
+   never supported la.pcrel an external symbol unless the loaded address is
+   only used for locating a function to be called.  Thus the PLT entry is
+   a normal PLT entry, not intended to be a so-called "canonical PLT entry"
+   on the ports supporting copy relocation.  So attempting to la.pcrel an
+   external function will just break pointer equality, even it's a
+   STV_DEFAULT function:
+
+   $ cat t.c
+   #include <assert.h>
+   void check(void *p) {assert(p == check);}
+   $ cat main.c
+   extern void check(void *);
+   int main(void) { check(check); }
+   $ cc t.c -fPIC -shared -o t.so
+   $ cc main.c -mdirect-extern-access t.so -Wl,-rpath=. -fpie -pie
+   $ ./a.out
+   a.out: t.c:2: check: Assertion `p == check' failed.
+   Aborted
+
+   Thus handling STV_PROTECTED function specially just fixes nothing:
+   adding -fvisibility=protected compiling t.c will not magically fix
+   the inequality.  The only possible and correct fix is not to use
+   -mdirect-extern-access.
+
+   So we should remove this special handling, because it's only an
+   unsuccessful workaround for invalid code and it's penalizing valid
+   code.  */
+#define LARCH_REF_LOCAL(info, h) \
+  (_bfd_elf_symbol_refs_local_p ((h), (info), true))
+
+/* Generate a PLT header.  */
+
+static bool
+loongarch_make_plt_header (bfd_vma got_plt_addr, bfd_vma plt_header_addr,
+			   uint32_t *entry)
+{
+  bfd_vma pcrel = got_plt_addr - plt_header_addr;
+  bfd_vma hi, lo;
+
+  if (pcrel + 0x80000800 > 0xffffffff)
+    {
+      _bfd_error_handler (_("%#" PRIx64 " invaild imm"), (uint64_t) pcrel);
+      bfd_set_error (bfd_error_bad_value);
+      return false;
+    }
+  hi = ((pcrel + 0x800) >> 12) & 0xfffff;
+  lo = pcrel & 0xfff;
+
+  /* pcaddu12i  $t2, %hi(%pcrel(.got.plt))
+     sub.[wd]   $t1, $t1, $t3
+     ld.[wd]    $t3, $t2, %lo(%pcrel(.got.plt)) # _dl_runtime_resolve
+     addi.[wd]  $t1, $t1, -(PLT_HEADER_SIZE + 12)
+     addi.[wd]  $t0, $t2, %lo(%pcrel(.got.plt))
+     srli.[wd]  $t1, $t1, log2(16 / GOT_ENTRY_SIZE)
+     ld.[wd]    $t0, $t0, GOT_ENTRY_SIZE
+     jirl   $r0, $t3, 0 */
+
+  if (GOT_ENTRY_SIZE == 8)
+    {
+      entry[0] = 0x1c00000e | (hi & 0xfffff) << 5;
+      entry[1] = 0x0011bdad;
+      entry[2] = 0x28c001cf | (lo & 0xfff) << 10;
+      entry[3] = 0x02c001ad | ((-(PLT_HEADER_SIZE + 12)) & 0xfff) << 10;
+      entry[4] = 0x02c001cc | (lo & 0xfff) << 10;
+      entry[5] = 0x004501ad | (4 - LARCH_ELF_LOG_WORD_BYTES) << 10;
+      entry[6] = 0x28c0018c | GOT_ENTRY_SIZE << 10;
+      entry[7] = 0x4c0001e0;
+    }
+  else
+    {
+      entry[0] = 0x1c00000e | (hi & 0xfffff) << 5;
+      entry[1] = 0x00113dad;
+      entry[2] = 0x288001cf | (lo & 0xfff) << 10;
+      entry[3] = 0x028001ad | ((-(PLT_HEADER_SIZE + 12)) & 0xfff) << 10;
+      entry[4] = 0x028001cc | (lo & 0xfff) << 10;
+      entry[5] = 0x004481ad | (4 - LARCH_ELF_LOG_WORD_BYTES) << 10;
+      entry[6] = 0x2880018c | GOT_ENTRY_SIZE << 10;
+      entry[7] = 0x4c0001e0;
+    }
+  return true;
+}
+
+/* Generate a PLT entry.  */
+
+static bool
+loongarch_make_plt_entry (bfd_vma got_plt_entry_addr, bfd_vma plt_entry_addr,
+			  uint32_t *entry)
+{
+  bfd_vma pcrel = got_plt_entry_addr - plt_entry_addr;
+  bfd_vma hi, lo;
+
+  if (pcrel + 0x80000800 > 0xffffffff)
+    {
+      _bfd_error_handler (_("%#" PRIx64 " invaild imm"), (uint64_t) pcrel);
+      bfd_set_error (bfd_error_bad_value);
+      return false;
+    }
+  hi = ((pcrel + 0x800) >> 12) & 0xfffff;
+  lo = pcrel & 0xfff;
+
+  entry[0] = 0x1c00000f | (hi & 0xfffff) << 5;
+  entry[1] = ((GOT_ENTRY_SIZE == 8 ? 0x28c001ef : 0x288001ef)
+	      | (lo & 0xfff) << 10);
+  entry[2] = 0x4c0001ed;	/* jirl $r13, $15, 0 */
+  entry[3] = 0x03400000;	/* nop */
+
+  return true;
+}
+
+/* Create an entry in an LoongArch ELF linker hash table.  */
+
+static struct bfd_hash_entry *
+link_hash_newfunc (struct bfd_hash_entry *entry, struct bfd_hash_table *table,
+		   const char *string)
+{
+  struct loongarch_elf_link_hash_entry *eh;
+
+  /* Allocate the structure if it has not already been allocated by a
+     subclass.  */
+  if (entry == NULL)
+    {
+      entry = bfd_hash_allocate (table, sizeof (*eh));
+      if (entry == NULL)
+	return entry;
+    }
+
+  /* Call the allocation method of the superclass.  */
+  entry = _bfd_elf_link_hash_newfunc (entry, table, string);
+  if (entry != NULL)
+    {
+      eh = (struct loongarch_elf_link_hash_entry *) entry;
+      eh->tls_type = GOT_UNKNOWN;
+    }
+
+  return entry;
+}
+
+/* Compute a hash of a local hash entry.  We use elf_link_hash_entry
+  for local symbol so that we can handle local STT_GNU_IFUNC symbols
+  as global symbol.  We reuse indx and dynstr_index for local symbol
+  hash since they aren't used by global symbols in this backend.  */
+
+static hashval_t
+elfNN_loongarch_local_htab_hash (const void *ptr)
+{
+  struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) ptr;
+  return ELF_LOCAL_SYMBOL_HASH (h->indx, h->dynstr_index);
+}
+
+/* Compare local hash entries.  */
+
+static int
+elfNN_loongarch_local_htab_eq (const void *ptr1, const void *ptr2)
+{
+  struct elf_link_hash_entry *h1 = (struct elf_link_hash_entry *) ptr1;
+  struct elf_link_hash_entry *h2 = (struct elf_link_hash_entry *) ptr2;
+
+  return h1->indx == h2->indx && h1->dynstr_index == h2->dynstr_index;
+}
+
+/* Find and/or create a hash entry for local symbol.  */
+static struct elf_link_hash_entry *
+elfNN_loongarch_get_local_sym_hash (struct loongarch_elf_link_hash_table *htab,
+				    bfd *abfd, const Elf_Internal_Rela *rel,
+				    bool create)
+{
+  struct loongarch_elf_link_hash_entry e, *ret;
+  asection *sec = abfd->sections;
+  hashval_t h = ELF_LOCAL_SYMBOL_HASH (sec->id, ELFNN_R_SYM (rel->r_info));
+  void **slot;
+
+  e.elf.indx = sec->id;
+  e.elf.dynstr_index = ELFNN_R_SYM (rel->r_info);
+  slot = htab_find_slot_with_hash (htab->loc_hash_table, &e, h,
+				   create ? INSERT : NO_INSERT);
+
+  if (!slot)
+    return NULL;
+
+  if (*slot)
+    {
+      ret = (struct loongarch_elf_link_hash_entry *) *slot;
+      return &ret->elf;
+    }
+
+  ret = ((struct loongarch_elf_link_hash_entry *)
+	 objalloc_alloc ((struct objalloc *) htab->loc_hash_memory,
+			 sizeof (struct loongarch_elf_link_hash_entry)));
+  if (ret)
+    {
+      memset (ret, 0, sizeof (*ret));
+      ret->elf.indx = sec->id;
+      ret->elf.pointer_equality_needed = 0;
+      ret->elf.dynstr_index = ELFNN_R_SYM (rel->r_info);
+      ret->elf.dynindx = -1;
+      ret->elf.needs_plt = 0;
+      ret->elf.plt.refcount = -1;
+      ret->elf.got.refcount = -1;
+      ret->elf.def_dynamic = 0;
+      ret->elf.def_regular = 1;
+      ret->elf.ref_dynamic = 0; /* This should be always 0 for local.  */
+      ret->elf.ref_regular = 0;
+      ret->elf.forced_local = 1;
+      ret->elf.root.type = bfd_link_hash_defined;
+      *slot = ret;
+    }
+  return &ret->elf;
+}
+
+/* Destroy an LoongArch elf linker hash table.  */
+
+static void
+elfNN_loongarch_link_hash_table_free (bfd *obfd)
+{
+  struct loongarch_elf_link_hash_table *ret;
+  ret = (struct loongarch_elf_link_hash_table *) obfd->link.hash;
+
+  if (ret->loc_hash_table)
+    htab_delete (ret->loc_hash_table);
+  if (ret->loc_hash_memory)
+    objalloc_free ((struct objalloc *) ret->loc_hash_memory);
+
+  _bfd_elf_link_hash_table_free (obfd);
+}
+
+/* Create a LoongArch ELF linker hash table.  */
+
+static struct bfd_link_hash_table *
+loongarch_elf_link_hash_table_create (bfd *abfd)
+{
+  struct loongarch_elf_link_hash_table *ret;
+  bfd_size_type amt = sizeof (struct loongarch_elf_link_hash_table);
+
+  ret = (struct loongarch_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,
+       sizeof (struct loongarch_elf_link_hash_entry)))
+    {
+      free (ret);
+      return NULL;
+    }
+
+  ret->max_alignment = MINUS_ONE;
+
+  ret->loc_hash_table = htab_try_create (1024, elfNN_loongarch_local_htab_hash,
+					 elfNN_loongarch_local_htab_eq, NULL);
+  ret->loc_hash_memory = objalloc_create ();
+  if (!ret->loc_hash_table || !ret->loc_hash_memory)
+    {
+      elfNN_loongarch_link_hash_table_free (abfd);
+      return NULL;
+    }
+  ret->elf.root.hash_table_free = elfNN_loongarch_link_hash_table_free;
+
+  return &ret->elf.root;
+}
+
+/* Merge backend specific data from an object file to the output
+   object file when linking.  */
+
+static bool
+elfNN_loongarch_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
+{
+  bfd *obfd = info->output_bfd;
+  flagword in_flags = elf_elfheader (ibfd)->e_flags;
+  flagword out_flags = elf_elfheader (obfd)->e_flags;
+
+  if (!is_loongarch_elf (ibfd) || !is_loongarch_elf (obfd))
+    return true;
+
+  if (strcmp (bfd_get_target (ibfd), bfd_get_target (obfd)) != 0)
+    {
+      _bfd_error_handler (_("%pB: ABI is incompatible with that of "
+			    "the selected emulation:\n"
+			    "  target emulation `%s' does not match `%s'"),
+			  ibfd, bfd_get_target (ibfd), bfd_get_target (obfd));
+      return false;
+    }
+
+  if (!_bfd_elf_merge_object_attributes (ibfd, info))
+    return false;
+
+  /* If the input BFD is not a dynamic object and it does not contain any
+     non-data sections, do not account its ABI.  For example, various
+     packages produces such data-only relocatable objects with
+     `ld -r -b binary` or `objcopy`, and these objects have zero e_flags.
+     But they are compatible with all ABIs.  */
+  if (!(ibfd->flags & DYNAMIC))
+    {
+      asection *sec;
+      bool have_code_sections = false;
+      for (sec = ibfd->sections; sec != NULL; sec = sec->next)
+	if ((bfd_section_flags (sec)
+	     & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+	    == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
+	  {
+	    have_code_sections = true;
+	    break;
+	  }
+      if (!have_code_sections)
+	return true;
+    }
+
+  if (!elf_flags_init (obfd))
+    {
+      elf_flags_init (obfd) = true;
+      elf_elfheader (obfd)->e_flags = in_flags;
+      return true;
+    }
+  else if (out_flags != in_flags)
+    {
+      if ((EF_LOONGARCH_IS_OBJ_V0 (out_flags)
+	   && EF_LOONGARCH_IS_OBJ_V1 (in_flags))
+	  || (EF_LOONGARCH_IS_OBJ_V0 (in_flags)
+	      && EF_LOONGARCH_IS_OBJ_V1 (out_flags)))
+	{
+	  elf_elfheader (obfd)->e_flags |= EF_LOONGARCH_OBJABI_V1;
+	  out_flags = elf_elfheader (obfd)->e_flags;
+	  in_flags = out_flags;
+	}
+    }
+
+  /* Disallow linking different ABIs.  */
+  /* Only check relocation version.
+     The obj_v0 is compatible with obj_v1.  */
+  if (EF_LOONGARCH_ABI(out_flags ^ in_flags) & EF_LOONGARCH_ABI_MASK)
+    {
+      _bfd_error_handler (_("%pB: can't link different ABI object."), ibfd);
+      goto fail;
+    }
+
+  return true;
+
+ fail:
+  bfd_set_error (bfd_error_bad_value);
+  return false;
+}
+
+/* Create the .got section.  */
+
+static bool
+loongarch_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
+{
+  flagword flags;
+  char *name;
+  asection *s, *s_got;
+  struct elf_link_hash_entry *h;
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_link_hash_table *htab = elf_hash_table (info);
+
+  /* This function may be called more than once.  */
+  if (htab->sgot != NULL)
+    return true;
+
+  flags = bed->dynamic_sec_flags;
+  name = bed->rela_plts_and_copies_p ? ".rela.got" : ".rel.got";
+  s = bfd_make_section_anyway_with_flags (abfd, name, flags | SEC_READONLY);
+
+  if (s == NULL || !bfd_set_section_alignment (s, bed->s->log_file_align))
+    return false;
+  htab->srelgot = s;
+
+  s = s_got = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
+  if (s == NULL || !bfd_set_section_alignment (s, bed->s->log_file_align))
+    return false;
+  htab->sgot = s;
+
+  /* The first bit of the global offset table is the header.  */
+  s->size += bed->got_header_size;
+
+  if (bed->want_got_plt)
+    {
+      s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
+      if (s == NULL || !bfd_set_section_alignment (s, bed->s->log_file_align))
+	return false;
+      htab->sgotplt = s;
+
+      /* Reserve room for the header.  */
+      s->size = GOTPLT_HEADER_SIZE;
+    }
+
+  if (bed->want_got_sym)
+    {
+      /* Define the symbol _GLOBAL_OFFSET_TABLE_ at the start of the .got
+	 section.  We don't do this in the linker script because we don't want
+	 to define the symbol if we are not creating a global offset table.  */
+      h = _bfd_elf_define_linkage_sym (abfd, info, s_got,
+				       "_GLOBAL_OFFSET_TABLE_");
+      elf_hash_table (info)->hgot = h;
+      if (h == NULL)
+	return false;
+    }
+  return true;
+}
+
+/* Create .plt, .rela.plt, .got, .got.plt, .rela.got, .dynbss, and
+   .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
+   hash table.  */
+
+static bool
+loongarch_elf_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info)
+{
+  struct loongarch_elf_link_hash_table *htab;
+
+  htab = loongarch_elf_hash_table (info);
+  BFD_ASSERT (htab != NULL);
+
+  if (!loongarch_elf_create_got_section (dynobj, info))
+    return false;
+
+  if (!_bfd_elf_create_dynamic_sections (dynobj, info))
+    return false;
+
+  if (!bfd_link_pic (info))
+    htab->sdyntdata
+      = bfd_make_section_anyway_with_flags (dynobj, ".tdata.dyn",
+					    SEC_ALLOC | SEC_THREAD_LOCAL);
+
+  if (!htab->elf.splt || !htab->elf.srelplt || !htab->elf.sdynbss
+      || (!bfd_link_pic (info) && (!htab->elf.srelbss || !htab->sdyntdata)))
+    abort ();
+
+  return true;
+}
+
+static bool
+loongarch_elf_record_tls_and_got_reference (bfd *abfd,
+					    struct bfd_link_info *info,
+					    struct elf_link_hash_entry *h,
+					    unsigned long symndx,
+					    char tls_type,
+					    bool with_relax_reloc)
+{
+  struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (info);
+  Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+
+  /* This is a global offset table entry for a local symbol.  */
+  if (elf_local_got_refcounts (abfd) == NULL)
+    {
+      bfd_size_type size =
+	symtab_hdr->sh_info * (sizeof (bfd_vma) + sizeof (tls_type));
+      if (!(elf_local_got_refcounts (abfd) = bfd_zalloc (abfd, size)))
+	return false;
+      _bfd_loongarch_elf_local_got_tls_type (abfd) =
+	(char *) (elf_local_got_refcounts (abfd) + symtab_hdr->sh_info);
+    }
+
+  switch (tls_type)
+    {
+    case GOT_NORMAL:
+    case GOT_TLS_GD:
+    case GOT_TLS_IE:
+    case GOT_TLS_GDESC:
+      /* Need GOT.  */
+      if (htab->elf.sgot == NULL
+	  && !loongarch_elf_create_got_section (htab->elf.dynobj, info))
+	return false;
+      if (h)
+	{
+	  if (h->got.refcount < 0)
+	    h->got.refcount = 0;
+	  h->got.refcount++;
+	}
+      else
+	elf_local_got_refcounts (abfd)[symndx]++;
+      break;
+    case GOT_TLS_LE:
+      /* No need for GOT.  */
+      break;
+    default:
+      _bfd_error_handler (_("Internal error: unreachable."));
+      return false;
+    }
+
+  char *new_tls_type = &_bfd_loongarch_elf_tls_type (abfd, h, symndx);
+  *new_tls_type |= tls_type;
+
+  /* If DESC relocs can do transitions and accessed by both IE and DESC,
+     transition DESC to IE.  */
+  if (with_relax_reloc
+      && (*new_tls_type & GOT_TLS_IE) && (*new_tls_type & GOT_TLS_GDESC))
+    *new_tls_type &= ~ (GOT_TLS_GDESC);
+
+  if ((*new_tls_type & GOT_NORMAL) && (*new_tls_type & ~GOT_NORMAL))
+    {
+      _bfd_error_handler (_("%pB: `%s' accessed both as normal and "
+			    "thread local symbol"),
+			  abfd,
+			  h ? h->root.root.string : "<local>");
+      return false;
+    }
+
+  return true;
+}
+
+static unsigned int
+loongarch_reloc_got_type (unsigned int r_type)
+{
+  switch (r_type)
+    {
+      case R_LARCH_TLS_DESC_PC_HI20:
+      case R_LARCH_TLS_DESC_PC_LO12:
+      case R_LARCH_TLS_DESC_LD:
+      case R_LARCH_TLS_DESC_CALL:
+	return GOT_TLS_GDESC;
+
+      case R_LARCH_TLS_IE_PC_HI20:
+      case R_LARCH_TLS_IE_PC_LO12:
+	return GOT_TLS_IE;
+
+      default:
+	break;
+    }
+  return GOT_UNKNOWN;
+}
+
+/* Return true if tls type transition can be performed.  */
+static bool
+loongarch_can_trans_tls (bfd *input_bfd,
+			 struct bfd_link_info *info,
+			 struct elf_link_hash_entry *h,
+			 unsigned int r_symndx,
+			 unsigned int r_type)
+{
+  char symbol_tls_type;
+  unsigned int reloc_got_type;
+
+  /* Only TLS DESC/IE in normal code mode will perform type
+     transition.  */
+  if (! IS_LOONGARCH_TLS_TRANS_RELOC (r_type))
+    return false;
+
+  /* Obtaining tls got type here may occur before
+     loongarch_elf_record_tls_and_got_reference, so it is necessary
+     to ensure that tls got type has been initialized, otherwise it
+     is set to GOT_UNKNOWN.  */
+  symbol_tls_type = GOT_UNKNOWN;
+  if (_bfd_loongarch_elf_local_got_tls_type (input_bfd) || h)
+    symbol_tls_type = _bfd_loongarch_elf_tls_type (input_bfd, h, r_symndx);
+
+  reloc_got_type = loongarch_reloc_got_type (r_type);
+
+  if (symbol_tls_type == GOT_TLS_IE && GOT_TLS_GD_ANY_P (reloc_got_type))
+    return true;
+
+  if (! bfd_link_executable (info))
+      return false;
+
+  if (h && h->root.type == bfd_link_hash_undefweak)
+    return false;
+
+  return true;
+}
+
+/* The type of relocation that can be transitioned.  */
+static unsigned int
+loongarch_tls_transition_without_check (struct bfd_link_info *info,
+					unsigned int r_type,
+					struct elf_link_hash_entry *h)
+{
+  bool local_exec = bfd_link_executable (info)
+		    && LARCH_REF_LOCAL (info, h);
+
+  switch (r_type)
+    {
+      case R_LARCH_TLS_DESC_PC_HI20:
+	return (local_exec
+		? R_LARCH_TLS_LE_HI20
+		: R_LARCH_TLS_IE_PC_HI20);
+
+      case R_LARCH_TLS_DESC_PC_LO12:
+	return (local_exec
+		? R_LARCH_TLS_LE_LO12
+		: R_LARCH_TLS_IE_PC_LO12);
+
+      case R_LARCH_TLS_DESC_LD:
+      case R_LARCH_TLS_DESC_CALL:
+	return R_LARCH_NONE;
+
+      case R_LARCH_TLS_IE_PC_HI20:
+	return local_exec ? R_LARCH_TLS_LE_HI20 : r_type;
+
+      case R_LARCH_TLS_IE_PC_LO12:
+	return local_exec ? R_LARCH_TLS_LE_LO12 : r_type;
+
+      default:
+	break;
+    }
+
+  return r_type;
+}
+
+static unsigned int
+loongarch_tls_transition (bfd *input_bfd,
+			  struct bfd_link_info *info,
+			  struct elf_link_hash_entry *h,
+			  unsigned int r_symndx,
+			  unsigned int r_type)
+{
+  if (! loongarch_can_trans_tls (input_bfd, info, h, r_symndx, r_type))
+    return r_type;
+
+  return loongarch_tls_transition_without_check (info, r_type, h);
+}
+
+static bool
+bad_static_reloc (struct bfd_link_info *info,
+		  bfd *abfd, const Elf_Internal_Rela *rel,
+		  asection *sec, unsigned r_type,
+		  struct elf_link_hash_entry *h,
+		  Elf_Internal_Sym *isym)
+{
+  reloc_howto_type * r = loongarch_elf_rtype_to_howto (abfd, r_type);
+  const char *object;
+  const char *pic_opt;
+  const char *name = NULL;
+
+  /* If this, the problem is we are referring an external symbol in
+     a way only working for local symbols, not PC-relative vs.
+	 absolute.  */
+  bool bad_extern_access =
+    (bfd_link_pde (info)
+     || r_type == R_LARCH_PCREL20_S2
+     || r_type == R_LARCH_PCALA_HI20);
+
+  if (h)
+    name = h->root.root.string;
+  else if (isym)
+    name = bfd_elf_string_from_elf_section (abfd,
+					    elf_symtab_hdr (abfd).sh_link,
+					    isym->st_name);
+  if (name == NULL || *name == '\0')
+    name = "<nameless>";
+
+  if (bfd_link_dll (info))
+    {
+      object = _("a shared object");
+      pic_opt = "-fPIC";
+    }
+  else
+    {
+      if (bfd_link_pie (info))
+	object = _("a PIE object");
+      else
+	object = _("a PDE object");
+
+      pic_opt = bad_extern_access ? "-mno-direct-extern-access" : "-fPIE";
+    }
+
+  (*_bfd_error_handler)
+   (_("%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making "
+      "%s; recompile with %s%s"),
+    abfd, sec, (long) rel->r_offset, r ? r->name : _("<unknown>"), name,
+    object, pic_opt,
+    bad_extern_access ? _(" and check the symbol visibility") : "");
+  bfd_set_error (bfd_error_bad_value);
+  return false;
+}
+
+/* Look through the relocs for a section during the first phase, and
+   allocate space in the global offset table or procedure linkage
+   table.  */
+
+static bool
+loongarch_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
+			    asection *sec, const Elf_Internal_Rela *relocs)
+{
+  struct loongarch_elf_link_hash_table *htab;
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  const Elf_Internal_Rela *rel;
+  asection *sreloc = NULL;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  htab = loongarch_elf_hash_table (info);
+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+  sym_hashes = elf_sym_hashes (abfd);
+
+  if (htab->elf.dynobj == NULL)
+    htab->elf.dynobj = abfd;
+
+  for (rel = relocs; rel < relocs + sec->reloc_count; rel++)
+    {
+      unsigned int r_type;
+      unsigned int r_symndx;
+      struct elf_link_hash_entry *h;
+      bool is_abs_symbol = false;
+      Elf_Internal_Sym *isym = NULL;
+
+      r_symndx = ELFNN_R_SYM (rel->r_info);
+      r_type = ELFNN_R_TYPE (rel->r_info);
+
+      if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr))
+	{
+	  _bfd_error_handler (_("%pB: bad symbol index: %d"), abfd, r_symndx);
+	  return false;
+	}
+
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  /* A local symbol.  */
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, abfd, r_symndx);
+	  if (isym == NULL)
+	    return false;
+
+	  is_abs_symbol = isym->st_shndx == SHN_ABS;
+	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
+	    {
+	      h = elfNN_loongarch_get_local_sym_hash (htab, abfd, rel, true);
+	      if (h == NULL)
+		return false;
+
+	      h->type = STT_GNU_IFUNC;
+	      h->ref_regular = 1;
+	    }
+	  else
+	    h = NULL;
+	}
+      else
+	{
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	  is_abs_symbol = bfd_is_abs_symbol (&h->root);
+	}
+
+      /* It is referenced by a non-shared object.  */
+      if (h != NULL)
+	h->ref_regular = 1;
+
+      if (h && h->type == STT_GNU_IFUNC)
+	{
+	  if (htab->elf.dynobj == NULL)
+	    htab->elf.dynobj = abfd;
+
+	  /* Create 'irelifunc' in PIC object.  */
+	  if (bfd_link_pic (info)
+	      && !_bfd_elf_create_ifunc_sections (htab->elf.dynobj, info))
+	    return false;
+	  /* If '.plt' not represent, create '.iplt' to deal with ifunc.  */
+	  else if (!htab->elf.splt
+		   && !_bfd_elf_create_ifunc_sections (htab->elf.dynobj, info))
+	    return false;
+	  /* Create the ifunc sections, iplt and ipltgot, for static
+	     executables.  */
+	  if ((r_type == R_LARCH_64 || r_type == R_LARCH_32)
+	      && !_bfd_elf_create_ifunc_sections (htab->elf.dynobj, info))
+	    return false;
+
+	  if (h->plt.refcount < 0)
+	    h->plt.refcount = 0;
+	  h->plt.refcount++;
+	  h->needs_plt = 1;
+
+	  elf_tdata (info->output_bfd)->has_gnu_osabi |= elf_gnu_osabi_ifunc;
+	}
+
+      int need_dynreloc = 0;
+      int only_need_pcrel = 0;
+
+      /* Type transitions are only possible with relocations accompanied
+	 by R_LARCH_RELAX.  */
+      bool with_relax_reloc = false;
+      if (rel + 1 != relocs + sec->reloc_count
+	  && ELFNN_R_TYPE (rel[1].r_info) == R_LARCH_RELAX)
+	{
+	  r_type = loongarch_tls_transition (abfd, info, h, r_symndx, r_type);
+	  with_relax_reloc = true;
+	}
+
+      /* I don't want to spend time supporting DT_RELR with old object
+	 files doing stack-based relocs.  */
+      if (info->enable_dt_relr
+	  && r_type >= R_LARCH_SOP_PUSH_PCREL
+	  && r_type <= R_LARCH_SOP_POP_32_U)
+	{
+	  /* xgettext:c-format */
+	  _bfd_error_handler (_("%pB: stack based reloc type (%u) is not "
+				"supported with -z pack-relative-relocs"),
+			      abfd, r_type);
+	  return false;
+	}
+
+      switch (r_type)
+	{
+	case R_LARCH_GOT_PC_HI20:
+	case R_LARCH_GOT_HI20:
+	case R_LARCH_SOP_PUSH_GPREL:
+	  /* For la.global.  */
+	  if (h)
+	    h->pointer_equality_needed = 1;
+	  if (!loongarch_elf_record_tls_and_got_reference (abfd, info, h,
+							   r_symndx,
+							   GOT_NORMAL,
+							   with_relax_reloc))
+	    return false;
+	  break;
+
+	case R_LARCH_TLS_LD_PC_HI20:
+	case R_LARCH_TLS_LD_HI20:
+	case R_LARCH_TLS_GD_PC_HI20:
+	case R_LARCH_TLS_GD_HI20:
+	case R_LARCH_SOP_PUSH_TLS_GD:
+	  if (!loongarch_elf_record_tls_and_got_reference (abfd, info, h,
+							   r_symndx,
+							   GOT_TLS_GD,
+							   with_relax_reloc))
+	    return false;
+	  break;
+
+	case R_LARCH_TLS_IE_PC_HI20:
+	case R_LARCH_TLS_IE_HI20:
+	case R_LARCH_SOP_PUSH_TLS_GOT:
+	  if (bfd_link_pic (info))
+	    /* May fail for lazy-bind.  */
+	    info->flags |= DF_STATIC_TLS;
+
+	  if (!loongarch_elf_record_tls_and_got_reference (abfd, info, h,
+							   r_symndx,
+							   GOT_TLS_IE,
+							   with_relax_reloc))
+	    return false;
+	  break;
+
+	case R_LARCH_TLS_LE_HI20:
+	case R_LARCH_TLS_LE_HI20_R:
+	case R_LARCH_SOP_PUSH_TLS_TPREL:
+	  if (!bfd_link_executable (info))
+	    return bad_static_reloc (info, abfd, rel, sec, r_type, h, isym);
+
+	  if (!loongarch_elf_record_tls_and_got_reference (abfd, info, h,
+							   r_symndx,
+							   GOT_TLS_LE,
+							   with_relax_reloc))
+	    return false;
+	  break;
+
+	case R_LARCH_TLS_DESC_PC_HI20:
+	case R_LARCH_TLS_DESC_HI20:
+	  if (!loongarch_elf_record_tls_and_got_reference (abfd, info, h,
+							   r_symndx,
+							   GOT_TLS_GDESC,
+							   with_relax_reloc))
+	    return false;
+	  break;
+
+	case R_LARCH_ABS_HI20:
+	  if (bfd_link_pic (info))
+	    return bad_static_reloc (info, abfd, rel, sec, r_type, h, isym);
+
+	  /* Fall through.  */
+	case R_LARCH_SOP_PUSH_ABSOLUTE:
+	  if (h != NULL)
+	    /* If this reloc is in a read-only section, we might
+	       need a copy reloc.  We can't check reliably at this
+	       stage whether the section is read-only, as input
+	       sections have not yet been mapped to output sections.
+	       Tentatively set the flag for now, and correct in
+	       adjust_dynamic_symbol.  */
+	    h->non_got_ref = 1;
+	  break;
+
+	/* Since shared library global symbols interpose, any
+	   PC-relative relocations against external symbols
+	   should not be used to build shared libraries.
+	   In static PIE undefined weak symbols may be allowed
+	   by rewriting pcaddi to addi.w if addend is in [-2048, 2048).  */
+	case R_LARCH_PCREL20_S2:
+	  if (bfd_link_pic (info)
+	      && (sec->flags & SEC_ALLOC) != 0
+	      && (sec->flags & SEC_READONLY) != 0
+	      && ! LARCH_REF_LOCAL (info, h)
+	      && (!info->nointerp
+		  || h->root.type != bfd_link_hash_undefweak))
+	    return bad_static_reloc (info, abfd, rel, sec, r_type, h, NULL);
+
+	  break;
+
+	/* For normal cmodel, pcalau12i + addi.d/w used to data.
+	   For first version medium cmodel, pcalau12i + jirl are used to
+	   function call, it need to creat PLT entry for STT_FUNC and
+	   STT_GNU_IFUNC type symbol.  */
+	case R_LARCH_PCALA_HI20:
+	  if (h != NULL && (STT_FUNC == h->type || STT_GNU_IFUNC == h->type))
+	    {
+	      /* For pcalau12i + jirl.  */
+	      h->needs_plt = 1;
+	      if (h->plt.refcount < 0)
+		h->plt.refcount = 0;
+	      h->plt.refcount++;
+
+	      h->non_got_ref = 1;
+	      h->pointer_equality_needed = 1;
+	    }
+
+	  /* PC-relative relocations are allowed For first version
+	     medium cmodel function call.  Those against undefined
+	     weak symbol are allowed for static PIE by rewritting
+	     pcalau12i to lu12i.w.  */
+	  if (h != NULL && !h->needs_plt
+	      && bfd_link_pic (info)
+	      && (sec->flags & SEC_ALLOC) != 0
+	      && (sec->flags & SEC_READONLY) != 0
+	      && ! LARCH_REF_LOCAL (info, h)
+	      && (!info->nointerp
+		  || h->root.type != bfd_link_hash_undefweak))
+	    return bad_static_reloc (info, abfd, rel, sec, r_type, h, NULL);
+
+	  break;
+
+	case R_LARCH_B16:
+	case R_LARCH_B21:
+	case R_LARCH_B26:
+	case R_LARCH_CALL36:
+	  if (h != NULL)
+	    {
+	      h->needs_plt = 1;
+	      if (!bfd_link_pic (info))
+		h->non_got_ref = 1;
+
+	      /* We try to create PLT stub for all non-local function.  */
+	      if (h->plt.refcount < 0)
+		h->plt.refcount = 0;
+	      h->plt.refcount++;
+	    }
+
+	  break;
+
+	case R_LARCH_SOP_PUSH_PCREL:
+	  if (h != NULL)
+	    {
+	      if (!bfd_link_pic (info))
+		h->non_got_ref = 1;
+
+	      /* We try to create PLT stub for all non-local function.  */
+	      if (h->plt.refcount < 0)
+		h->plt.refcount = 0;
+	      h->plt.refcount++;
+	      h->pointer_equality_needed = 1;
+	    }
+
+	  break;
+
+	case R_LARCH_SOP_PUSH_PLT_PCREL:
+	  /* This 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
+	     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;
+	      if (h->plt.refcount < 0)
+		h->plt.refcount = 0;
+	      h->plt.refcount++;
+	    }
+	  break;
+
+	case R_LARCH_TLS_DTPREL32:
+	case R_LARCH_TLS_DTPREL64:
+	  need_dynreloc = 1;
+	  only_need_pcrel = 1;
+	  break;
+
+	case R_LARCH_32:
+	  if (ARCH_SIZE > 32
+	      && bfd_link_pic (info)
+	      && (sec->flags & SEC_ALLOC) != 0)
+	    {
+	      if (!is_abs_symbol)
+		{
+		  _bfd_error_handler
+		    (_("%pB: relocation R_LARCH_32 against non-absolute "
+		       "symbol `%s' cannot be used in ELFCLASS64 when "
+		       "making a shared object or PIE"),
+		     abfd, h ? h->root.root.string : "a local symbol");
+		  bfd_set_error (bfd_error_bad_value);
+		  return false;
+		}
+	    }
+
+	  /* Fall through.  */
+	case R_LARCH_JUMP_SLOT:
+	case R_LARCH_64:
+
+	  /* Resolved to const.  */
+	  if (is_abs_symbol)
+	    break;
+
+	  need_dynreloc = 1;
+
+	  /* If resolved symbol is defined in this object,
+	     1. Under pie, the symbol is known.  We convert it
+	     into R_LARCH_RELATIVE and need load-addr still.
+	     2. Under pde, the symbol is known and we can discard R_LARCH_NN.
+	     3. Under dll, R_LARCH_NN can't be changed normally, since
+	     its defination could be covered by the one in executable.
+	     For symbolic, we convert it into R_LARCH_RELATIVE.
+	     Thus, only under pde, it needs pcrel only.  We discard it.  */
+	  only_need_pcrel = bfd_link_pde (info);
+
+	  if (h != NULL
+	      && (!bfd_link_pic (info)
+		  || h->type == STT_GNU_IFUNC))
+	    {
+	      /* This reloc might not bind locally.  */
+	      h->non_got_ref = 1;
+	      h->pointer_equality_needed = 1;
+
+	      if (!h->def_regular
+		  || (sec->flags & (SEC_CODE | SEC_READONLY)) != 0)
+		{
+		  /* We may need a .plt entry if the symbol is a function
+		     defined in a shared lib or is a function referenced
+		     from the code or read-only section.  */
+		  h->plt.refcount += 1;
+		}
+	    }
+	  break;
+
+	case R_LARCH_GNU_VTINHERIT:
+	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
+	    return false;
+	  break;
+
+	case R_LARCH_GNU_VTENTRY:
+	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
+	    return false;
+	  break;
+
+	case R_LARCH_ALIGN:
+	  /* Check against irrational R_LARCH_ALIGN relocs which may cause
+	     removing an odd number of bytes and disrupt DT_RELR.  */
+	  if (rel->r_offset % 4 != 0)
+	    {
+	      /* xgettext:c-format */
+	      _bfd_error_handler (
+		_("%pB: R_LARCH_ALIGN with offset %" PRId64 " not aligned "
+		  "to instruction boundary"),
+		abfd, (uint64_t) rel->r_offset);
+	      return false;
+	    }
+	  break;
+
+	default:
+	  break;
+	}
+
+      /* Record some info for sizing and allocating dynamic entry.  */
+      if (need_dynreloc && (sec->flags & SEC_ALLOC))
+	{
+	  /* When creating a shared object, we must copy these
+	     relocs into the output file.  We create a reloc
+	     section in dynobj and make room for the reloc.  */
+	  struct elf_dyn_relocs *p;
+	  struct elf_dyn_relocs **head;
+
+	  if (sreloc == NULL)
+	    {
+	      sreloc
+		= _bfd_elf_make_dynamic_reloc_section (sec, htab->elf.dynobj,
+						       LARCH_ELF_LOG_WORD_BYTES,
+						       abfd, /*rela?*/ true);
+	      if (sreloc == NULL)
+		return false;
+	    }
+
+	  /* If this is a global symbol, we count the number of
+	     relocations we need for this symbol.  */
+	  if (h != NULL)
+	    head = &h->dyn_relocs;
+	  else
+	    {
+	      /* Track dynamic relocs needed for local syms too.
+		 We really need local syms available to do this
+		 easily.  Oh well.  */
+
+	      asection *s;
+	      void *vpp;
+
+	      s = bfd_section_from_elf_index (abfd, isym->st_shndx);
+	      if (s == NULL)
+		s = sec;
+
+	      vpp = &elf_section_data (s)->local_dynrel;
+	      head = (struct elf_dyn_relocs **) vpp;
+	    }
+
+	  p = *head;
+	  if (p == NULL || p->sec != sec)
+	    {
+	      bfd_size_type amt = sizeof *p;
+	      p = (struct elf_dyn_relocs *) bfd_alloc (htab->elf.dynobj, amt);
+	      if (p == NULL)
+		return false;
+	      p->next = *head;
+	      *head = p;
+	      p->sec = sec;
+	      p->count = 0;
+	      p->pc_count = 0;
+	    }
+
+	  p->count++;
+	  p->pc_count += only_need_pcrel;
+	}
+    }
+
+  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 = 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
+   change the definition to something the rest of the link can
+   understand.  */
+static bool
+loongarch_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
+				     struct elf_link_hash_entry *h)
+{
+  struct loongarch_elf_link_hash_table *htab;
+  bfd *dynobj;
+
+  htab = loongarch_elf_hash_table (info);
+  BFD_ASSERT (htab != NULL);
+
+  dynobj = htab->elf.dynobj;
+
+  /* Make sure we know what is going on here.  */
+  BFD_ASSERT (dynobj != NULL
+	      && (h->needs_plt
+		  || h->type == STT_GNU_IFUNC
+		  || h->is_weakalias
+		  || (h->def_dynamic
+		      && h->ref_regular
+		      && !h->def_regular)));
+
+  /* If this is a function, put it in the procedure linkage table.  We
+     will fill in the contents of the procedure linkage table later
+     (although we could actually do it here).  */
+  if (h->type == STT_FUNC || h->type == STT_GNU_IFUNC || h->needs_plt)
+    {
+      if (h->plt.refcount <= 0
+	  || (h->type != STT_GNU_IFUNC
+	      && (LARCH_REF_LOCAL (info, h)
+		  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
+		      && h->root.type == bfd_link_hash_undefweak))))
+	{
+	  /* This case can occur if we saw a R_LARCH_SOP_PUSH_PLT_PCREL reloc
+	     in an input file, but the symbol was never referred to by a
+	     dynamic object, or if all references were garbage collected.
+	     In such a case, we don't actually need to build a PLT entry.  */
+	  h->plt.offset = MINUS_ONE;
+	  h->needs_plt = 0;
+	}
+
+      return true;
+    }
+  else
+    h->plt.offset = MINUS_ONE;
+
+  /* If this is a weak symbol, and there is a real definition, the
+     processor independent code will have arranged for us to see the
+     real definition first, and we can just use the same value.  */
+  if (h->is_weakalias)
+    {
+      struct elf_link_hash_entry *def = weakdef (h);
+      BFD_ASSERT (def->root.type == bfd_link_hash_defined);
+      h->root.u.def.section = def->root.u.def.section;
+      h->root.u.def.value = def->root.u.def.value;
+      return true;
+    }
+
+  /* R_LARCH_COPY is not adept glibc, not to generate.  */
+  /* Can not print anything, because make check ld.  */
+  return true;
+}
+
+/* Allocate space in .plt, .got and associated reloc sections for
+   dynamic relocs.  */
+
+static bool
+allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
+{
+  struct bfd_link_info *info;
+  struct loongarch_elf_link_hash_table *htab;
+  struct elf_dyn_relocs *p;
+
+  if (h->root.type == bfd_link_hash_indirect)
+    return true;
+
+  if (h->type == STT_GNU_IFUNC
+      && h->def_regular)
+    return true;
+
+  info = (struct bfd_link_info *) inf;
+  htab = loongarch_elf_hash_table (info);
+  bool dyn = htab->elf.dynamic_sections_created;
+  BFD_ASSERT (htab != NULL);
+
+  do
+    {
+      asection *plt, *gotplt, *relplt;
+
+      if (!h->needs_plt)
+	break;
+
+      h->needs_plt = 0;
+
+      if (htab->elf.splt)
+	{
+	  if (h->dynindx == -1 && !h->forced_local && dyn
+	      && h->root.type == bfd_link_hash_undefweak)
+	    {
+	      if (!bfd_elf_link_record_dynamic_symbol (info, h))
+		return false;
+	    }
+
+	  if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h)
+	      && h->type != STT_GNU_IFUNC)
+	    break;
+
+	  plt = htab->elf.splt;
+	  gotplt = htab->elf.sgotplt;
+	  relplt = htab->elf.srelplt;
+	}
+      else if (htab->elf.iplt)
+	{
+	  /* .iplt only for IFUNC.  */
+	  if (h->type != STT_GNU_IFUNC)
+	    break;
+
+	  plt = htab->elf.iplt;
+	  gotplt = htab->elf.igotplt;
+	  relplt = htab->elf.irelplt;
+	}
+      else
+	break;
+
+      if (plt->size == 0)
+	plt->size = PLT_HEADER_SIZE;
+
+      h->plt.offset = plt->size;
+      plt->size += PLT_ENTRY_SIZE;
+      gotplt->size += GOT_ENTRY_SIZE;
+      relplt->size += sizeof (ElfNN_External_Rela);
+
+      /* If this symbol is not defined in a regular file, and we are
+	 not generating a shared library, then set the symbol to this
+	 location in the .plt.  This is required to make function
+	 pointers compare as equal between the normal executable and
+	 the shared library.  */
+      if (!bfd_link_pic (info)
+	  && !h->def_regular)
+	{
+	  h->root.u.def.section = plt;
+	  h->root.u.def.value = h->plt.offset;
+	}
+
+      h->needs_plt = 1;
+    }
+  while (0);
+
+  if (!h->needs_plt)
+    h->plt.offset = MINUS_ONE;
+
+  if (0 < h->got.refcount)
+    {
+      asection *s;
+      int tls_type = loongarch_elf_hash_entry (h)->tls_type;
+
+      /* Make sure this symbol is output as a dynamic symbol.
+	 Undefined weak syms won't yet be marked as dynamic.  */
+      if (h->dynindx == -1 && !h->forced_local && dyn
+	  && h->root.type == bfd_link_hash_undefweak)
+	{
+	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+	}
+
+      s = htab->elf.sgot;
+      h->got.offset = s->size;
+      if (tls_type & (GOT_TLS_GD | GOT_TLS_IE | GOT_TLS_GDESC))
+	{
+	  int indx = 0;
+	  bool need_reloc = false;
+	  LARCH_TLS_GD_IE_NEED_DYN_RELOC (info, dyn, h, indx,
+					need_reloc);
+	  /* TLS_GD needs two dynamic relocs and two GOT slots.  */
+	  if (tls_type & GOT_TLS_GD)
+	    {
+	      s->size += 2 * GOT_ENTRY_SIZE;
+	      if (need_reloc)
+		htab->elf.srelgot->size += 2 * sizeof (ElfNN_External_Rela);
+	    }
+
+	  /* TLS_IE needs one dynamic reloc and one GOT slot.  */
+	  if (tls_type & GOT_TLS_IE)
+	    {
+	      s->size += GOT_ENTRY_SIZE;
+	      if (need_reloc)
+		htab->elf.srelgot->size += sizeof (ElfNN_External_Rela);
+	    }
+
+	  /* TLS_DESC needs one dynamic reloc and two GOT slot.  */
+	  if (tls_type & GOT_TLS_GDESC)
+	    {
+	      s->size += GOT_ENTRY_SIZE * 2;
+	      htab->elf.srelgot->size += sizeof (ElfNN_External_Rela);
+	    }
+	}
+
+      else
+	{
+	  s->size += GOT_ENTRY_SIZE;
+	  if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+	       || h->root.type != bfd_link_hash_undefweak)
+	      && (bfd_link_pic (info)
+		  || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info),
+						      h))
+	      && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
+	      /* Undefined weak symbol in static PIE resolves to 0 without
+		 any dynamic relocations.  */
+	    htab->elf.srelgot->size += sizeof (ElfNN_External_Rela);
+	}
+    }
+  else
+    h->got.offset = MINUS_ONE;
+
+  if (h->dyn_relocs == NULL)
+    return true;
+
+  /* Extra dynamic relocate,
+   * R_LARCH_64
+   * R_LARCH_TLS_DTPRELNN
+   * R_LARCH_JUMP_SLOT
+   * R_LARCH_NN.  */
+
+  if (SYMBOL_CALLS_LOCAL (info, h))
+    {
+      struct elf_dyn_relocs **pp;
+
+      for (pp = &h->dyn_relocs; (p = *pp) != NULL;)
+	{
+	  p->count -= p->pc_count;
+	  p->pc_count = 0;
+	  if (p->count == 0)
+	    *pp = p->next;
+	  else
+	    pp = &p->next;
+	}
+    }
+
+  if (h->root.type == bfd_link_hash_undefweak)
+    {
+      if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h)
+	  || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
+	  || (!bfd_link_pic (info) && h->non_got_ref))
+	h->dyn_relocs = NULL;
+      else if (h->dynindx == -1 && !h->forced_local)
+	{
+	  /* Make sure this symbol is output as a dynamic symbol.
+	     Undefined weak syms won't yet be marked as dynamic.  */
+	  if (!bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
+
+	  if (h->dynindx == -1)
+	    h->dyn_relocs = NULL;
+	}
+    }
+
+  for (p = h->dyn_relocs; p != NULL; p = p->next)
+    {
+      if (discarded_section (p->sec))
+	continue;
+      asection *sreloc = elf_section_data (p->sec)->sreloc;
+      sreloc->size += p->count * sizeof (ElfNN_External_Rela);
+    }
+
+  return true;
+}
+
+/* A modified version of _bfd_elf_allocate_ifunc_dyn_relocs.
+   For local def and ref ifunc,
+   dynamic relocations are stored in
+   1.  rela.srelgot section in dynamic object (dll or exec).
+   2.  rela.irelplt section in static executable.
+   Unlike _bfd_elf_allocate_ifunc_dyn_relocs, rela.srelgot is used
+   instead of rela.srelplt.  Glibc ELF loader will not support
+   R_LARCH_IRELATIVE relocation in rela.plt.  */
+
+static bool
+local_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
+				    struct elf_link_hash_entry *h,
+				    struct elf_dyn_relocs **head,
+				    unsigned int plt_entry_size,
+				    unsigned int plt_header_size,
+				    unsigned int got_entry_size,
+				    bool avoid_plt)
+{
+  asection *plt, *gotplt, *relplt;
+  struct elf_dyn_relocs *p;
+  unsigned int sizeof_reloc;
+  const struct elf_backend_data *bed;
+  struct elf_link_hash_table *htab;
+  /* If AVOID_PLT is TRUE, don't use PLT if possible.  */
+  bool use_plt = !avoid_plt || h->plt.refcount > 0;
+  bool need_dynreloc = !use_plt || bfd_link_pic (info);
+
+  /* When a PIC object references a STT_GNU_IFUNC symbol defined
+     in executable or it isn't referenced via PLT, the address of
+     the resolved function may be used.  But in non-PIC executable,
+     the address of its plt slot may be used.  Pointer equality may
+     not work correctly.  PIE or non-PLT reference should be used if
+     pointer equality is required here.
+
+     If STT_GNU_IFUNC symbol is defined in position-dependent executable,
+     backend should change it to the normal function and set its address
+     to its PLT entry which should be resolved by R_*_IRELATIVE at
+     run-time.  All external references should be resolved to its PLT in
+     executable.  */
+  if (!need_dynreloc
+      && !(bfd_link_pde (info) && h->def_regular)
+      && (h->dynindx != -1
+	  || info->export_dynamic)
+      && h->pointer_equality_needed)
+    {
+      info->callbacks->fatal
+	/* xgettext:c-format.  */
+	(_("%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"),
+	 h->root.root.string,
+	 h->root.u.def.section->owner);
+      bfd_set_error (bfd_error_bad_value);
+      return false;
+    }
+
+  htab = elf_hash_table (info);
+
+  /* When the symbol is marked with regular reference, if PLT isn't used
+     or we are building a PIC object, we must keep dynamic relocation
+     if there is non-GOT reference and use PLT if there is PC-relative
+     reference.  */
+  if (need_dynreloc && h->ref_regular)
+    {
+      bool keep = false;
+      for (p = *head; p != NULL; p = p->next)
+	if (p->count)
+	  {
+	    h->non_got_ref = 1;
+	    /* Need dynamic relocations for non-GOT reference.  */
+	    keep = true;
+	    if (p->pc_count)
+	      {
+		/* Must use PLT for PC-relative reference.  */
+		use_plt = true;
+		need_dynreloc = bfd_link_pic (info);
+		break;
+	      }
+	  }
+      if (keep)
+	goto keep;
+    }
+
+  /* Support garbage collection against STT_GNU_IFUNC symbols.  */
+  if (h->plt.refcount <= 0 && h->got.refcount <= 0)
+    {
+      h->got = htab->init_got_offset;
+      h->plt = htab->init_plt_offset;
+      *head = NULL;
+      return true;
+    }
+
+  /* Return and discard space for dynamic relocations against it if
+     it is never referenced.  */
+  if (!h->ref_regular)
+    {
+      if (h->plt.refcount > 0
+	  || h->got.refcount > 0)
+	abort ();
+      h->got = htab->init_got_offset;
+      h->plt = htab->init_plt_offset;
+      *head = NULL;
+      return true;
+    }
+
+ keep:
+  bed = get_elf_backend_data (info->output_bfd);
+  if (bed->rela_plts_and_copies_p)
+    sizeof_reloc = bed->s->sizeof_rela;
+  else
+    sizeof_reloc = bed->s->sizeof_rel;
+
+  /* When building a static executable, use iplt, igot.plt and
+     rela.iplt sections for STT_GNU_IFUNC symbols.  */
+  if (htab->splt != NULL)
+    {
+      plt = htab->splt;
+      gotplt = htab->sgotplt;
+      /* Change dynamic info of ifunc gotplt from srelplt to srelgot.  */
+      relplt = htab->srelgot;
+
+      /* If this is the first plt entry and PLT is used, make room for
+	 the special first entry.  */
+      if (plt->size == 0 && use_plt)
+	plt->size += plt_header_size;
+    }
+  else
+    {
+      plt = htab->iplt;
+      gotplt = htab->igotplt;
+      relplt = htab->irelplt;
+    }
+
+  if (use_plt)
+    {
+      /* Don't update value of STT_GNU_IFUNC symbol to PLT.  We need
+	 the original value for R_*_IRELATIVE.  */
+      h->plt.offset = plt->size;
+
+      /* Make room for this entry in the plt/iplt section.  */
+      plt->size += plt_entry_size;
+
+      /* We also need to make an entry in the got.plt/got.iplt section,
+	 which will be placed in the got section by the linker script.  */
+      gotplt->size += got_entry_size;
+    }
+
+  /* We also need to make an entry in the rela.plt/.rela.iplt
+     section for GOTPLT relocation if PLT is used.  */
+  if (use_plt)
+    {
+      relplt->size += sizeof_reloc;
+      relplt->reloc_count++;
+    }
+
+  /* We need dynamic relocation for STT_GNU_IFUNC symbol only when
+     there is a non-GOT reference in a PIC object or PLT isn't used.  */
+  if (!need_dynreloc || !h->non_got_ref)
+    *head = NULL;
+
+  /* Finally, allocate space.  */
+  p = *head;
+  if (p != NULL)
+    {
+      bfd_size_type count = 0;
+      do
+	{
+	  count += p->count;
+	  p = p->next;
+	}
+      while (p != NULL);
+
+      htab->ifunc_resolvers = count != 0;
+
+      /* Dynamic relocations are stored in
+	 1.  rela.srelgot section in PIC object.
+	 2.  rela.srelgot section in dynamic executable.
+	 3.  rela.irelplt section in static executable.  */
+      if (htab->splt != NULL)
+	htab->srelgot->size += count * sizeof_reloc;
+      else
+	{
+	  relplt->size += count * sizeof_reloc;
+	  relplt->reloc_count += count;
+	}
+    }
+
+  /* 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
+     branch, it uses got.plt.  For symbol value, if PLT is used,
+     1.  Use got.plt in a PIC object if it is forced local or not
+     dynamic.
+     2.  Use got.plt in a non-PIC object if pointer equality isn't
+     needed.
+     3.  Use got.plt in PIE.
+     4.  Use got.plt if got isn't used.
+     5.  Otherwise use got so that it can be shared among different
+     objects at run-time.
+     If PLT isn't used, always use got for symbol value.
+     We only need to relocate got entry in PIC object or in dynamic
+     executable without PLT.  */
+  if (use_plt
+      && (h->got.refcount <= 0
+	  || (bfd_link_pic (info)
+	      && (h->dynindx == -1
+		  || h->forced_local))
+	  || (
+	      !h->pointer_equality_needed)
+	  || htab->sgot == NULL))
+    {
+      /* Use got.plt.  */
+      h->got.offset = (bfd_vma) -1;
+    }
+  else
+    {
+      if (!use_plt)
+	{
+	  /* PLT isn't used.  */
+	  h->plt.offset = (bfd_vma) -1;
+	}
+      if (h->got.refcount <= 0)
+	{
+	  /* GOT isn't need when there are only relocations for static
+	     pointers.  */
+	  h->got.offset = (bfd_vma) -1;
+	}
+      else
+	{
+	  h->got.offset = htab->sgot->size;
+	  htab->sgot->size += got_entry_size;
+	  /* Need to relocate the GOT entry in a PIC object or PLT isn't
+	     used.  Otherwise, the GOT entry will be filled with the PLT
+	     entry and dynamic GOT relocation isn't needed.  */
+	  if (need_dynreloc)
+	    {
+	      /* For non-static executable, dynamic GOT relocation is in
+		 rela.got section, but for static executable, it is
+		 in rela.iplt section.  */
+	      if (htab->splt != NULL)
+		htab->srelgot->size += sizeof_reloc;
+	      else
+		{
+		  relplt->size += sizeof_reloc;
+		  relplt->reloc_count++;
+		}
+	    }
+	}
+    }
+
+  return true;
+}
+
+/* Allocate space in .plt, .got and associated reloc sections for
+   ifunc dynamic relocs.  */
+
+static bool
+elfNN_allocate_ifunc_dynrelocs (struct elf_link_hash_entry *h,
+				struct bfd_link_info *info,
+				bool ref_local)
+{
+  /* An example of a bfd_link_hash_indirect symbol is versioned
+     symbol. For example: __gxx_personality_v0(bfd_link_hash_indirect)
+     -> __gxx_personality_v0(bfd_link_hash_defined)
+
+     There is no need to process bfd_link_hash_indirect symbols here
+     because we will also be presented with the concrete instance of
+     the symbol and loongarch_elf_copy_indirect_symbol () will have been
+     called to copy all relevant data from the generic to the concrete
+     symbol instance.  */
+  if (h->root.type == bfd_link_hash_indirect)
+    return true;
+
+  if (h->root.type == bfd_link_hash_warning)
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+  /* 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)
+    {
+      if (ref_local && LARCH_REF_LOCAL (info, h))
+	return local_allocate_ifunc_dyn_relocs (info, h,
+						&h->dyn_relocs,
+						PLT_ENTRY_SIZE,
+						PLT_HEADER_SIZE,
+						GOT_ENTRY_SIZE,
+						false);
+      else if (!ref_local && !LARCH_REF_LOCAL (info, h))
+	return _bfd_elf_allocate_ifunc_dyn_relocs (info, h,
+						   &h->dyn_relocs,
+						   PLT_ENTRY_SIZE,
+						   PLT_HEADER_SIZE,
+						   GOT_ENTRY_SIZE,
+						   false);
+    }
+
+  return true;
+}
+
+static bool
+elfNN_allocate_ifunc_dynrelocs_ref_local (struct elf_link_hash_entry *h,
+					  void *info)
+{
+  return elfNN_allocate_ifunc_dynrelocs (h, (struct bfd_link_info *) info,
+					 true);
+}
+
+static bool
+elfNN_allocate_ifunc_dynrelocs_ref_global (struct elf_link_hash_entry *h,
+					   void *info)
+{
+  return elfNN_allocate_ifunc_dynrelocs (h, (struct bfd_link_info *) info,
+					 false);
+}
+
+/* Allocate space in .plt, .got and associated reloc sections for
+   ifunc dynamic relocs.  */
+
+static int
+elfNN_allocate_local_ifunc_dynrelocs (void **slot, void *inf)
+{
+  struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) *slot;
+
+  if (h->type != STT_GNU_IFUNC
+      || !h->def_regular
+      || !h->ref_regular
+      || !h->forced_local
+      || h->root.type != bfd_link_hash_defined)
+    abort ();
+
+  return elfNN_allocate_ifunc_dynrelocs_ref_local (h, inf);
+}
+
+/* Set DF_TEXTREL if we find any dynamic relocs that apply to
+   read-only sections.  */
+
+static bool
+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 bool
+record_relr (struct loongarch_elf_link_hash_table *htab, asection *sec,
+	     bfd_vma off, asection *sreloc)
+{
+  struct relr_entry **sec_relr = &loongarch_elf_section_data (sec)->relr;
+
+  /* Undo the relocation section size accounting.  */
+  BFD_ASSERT (sreloc->size >= sizeof (ElfNN_External_Rela));
+  sreloc->size -= sizeof (ElfNN_External_Rela);
+
+  BFD_ASSERT (off % 2 == 0 && sec->alignment_power > 0);
+  if (htab->relr_count >= htab->relr_alloc)
+    {
+      if (htab->relr_alloc == 0)
+	htab->relr_alloc = 4096;
+      else
+	htab->relr_alloc *= 2;
+
+      htab->relr = bfd_realloc (htab->relr,
+				htab->relr_alloc * sizeof (*htab->relr));
+      if (!htab->relr)
+	return false;
+    }
+  htab->relr[htab->relr_count].sec = sec;
+  htab->relr[htab->relr_count].off = off;
+  if (*sec_relr == NULL)
+    *sec_relr = &htab->relr[htab->relr_count];
+  htab->relr_count++;
+  return true;
+}
+
+static bool
+record_relr_local_got_relocs (bfd *input_bfd, struct bfd_link_info *info)
+{
+  bfd_vma *local_got_offsets = elf_local_got_offsets (input_bfd);
+  char *local_tls_type = _bfd_loongarch_elf_local_got_tls_type (input_bfd);
+  Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (input_bfd);
+  struct loongarch_elf_link_hash_table *htab =
+    loongarch_elf_hash_table (info);
+
+  if (!local_got_offsets || !local_tls_type || !bfd_link_pic (info))
+    return true;
+
+  for (unsigned i = 0; i < symtab_hdr->sh_info; i++)
+    {
+      bfd_vma off = local_got_offsets[i];
+
+      /* FIXME: If the local symbol is in SHN_ABS then emitting
+	 a relative relocation is not correct, but it seems to be wrong
+	 in loongarch_elf_relocate_section too.  */
+      if (local_tls_type[i] == GOT_NORMAL
+	  && !record_relr (htab, htab->elf.sgot, off, htab->elf.srelgot))
+	return false;
+    }
+
+  return true;
+}
+
+static bool
+record_relr_dyn_got_relocs (struct elf_link_hash_entry *h, void *inf)
+{
+  struct bfd_link_info *info = (struct bfd_link_info *) inf;
+  struct loongarch_elf_link_hash_table *htab =
+    loongarch_elf_hash_table (info);
+
+  if (h->root.type == bfd_link_hash_indirect)
+    return true;
+  if (h->type == STT_GNU_IFUNC && h->def_regular)
+    return true;
+  if (h->got.refcount <= 0)
+    return true;
+  if (loongarch_elf_hash_entry (h)->tls_type
+      & (GOT_TLS_GD | GOT_TLS_IE | GOT_TLS_GDESC))
+    return true;
+  if (!bfd_link_pic (info))
+    return true;
+
+  /* On LoongArch a GOT entry for undefined weak symbol is never relocated
+     with R_LARCH_RELATIVE: we don't have -z dynamic-undefined-weak, thus
+     the GOT entry is either const 0 (if the symbol is LARCH_REF_LOCAL) or
+     relocated with R_LARCH_NN (otherwise).  */
+  if (h->root.type == bfd_link_hash_undefweak)
+    return true;
+
+  if (!LARCH_REF_LOCAL (info, h))
+    return true;
+  if (bfd_is_abs_symbol (&h->root))
+    return true;
+
+  if (!record_relr (htab, htab->elf.sgot, h->got.offset,
+		    htab->elf.srelgot))
+    return false;
+
+  return true;
+}
+
+static bool
+record_relr_non_got_relocs (bfd *input_bfd, struct bfd_link_info *info,
+			    asection *sec)
+{
+  asection *sreloc;
+  struct loongarch_elf_link_hash_table *htab;
+  Elf_Internal_Rela *relocs, *rel, *rel_end;
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+
+  if (!bfd_link_pic (info))
+    return true;
+  if (sec->reloc_count == 0)
+    return true;
+  if ((sec->flags & (SEC_RELOC | SEC_ALLOC | SEC_DEBUGGING))
+       != (SEC_RELOC | SEC_ALLOC))
+    return true;
+  if (sec->alignment_power == 0)
+    return true;
+  if (discarded_section (sec))
+    return true;
+
+  sreloc = elf_section_data (sec)->sreloc;
+  if (sreloc == NULL)
+    return true;
+
+  htab = loongarch_elf_hash_table (info);
+  symtab_hdr = &elf_symtab_hdr (input_bfd);
+  sym_hashes = elf_sym_hashes (input_bfd);
+  relocs = _bfd_elf_link_info_read_relocs (input_bfd, info, sec, NULL,
+					   NULL, info->keep_memory);
+  BFD_ASSERT (relocs != NULL);
+  rel_end = relocs + sec->reloc_count;
+  for (rel = relocs; rel < rel_end; rel++)
+    {
+      unsigned r_symndx = ELFNN_R_SYM (rel->r_info);
+      unsigned int r_type = ELFNN_R_TYPE (rel->r_info);
+      struct elf_link_hash_entry *h = NULL;
+      asection *def_sec = NULL;
+
+      if ((r_type != R_LARCH_64 && r_type != R_LARCH_32)
+	  || rel->r_offset % 2 != 0)
+	continue;
+
+      /* The logical below must match loongarch_elf_relocate_section.  */
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  /* A local symbol.  */
+	  Elf_Internal_Sym *isym;
+	  isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, input_bfd,
+					r_symndx);
+	  BFD_ASSERT(isym != NULL);
+
+	  /* Local STT_GNU_IFUNC symbol uses R_LARCH_IRELATIVE for
+	     R_LARCH_NN, not R_LARCH_RELATIVE.  */
+	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
+	    continue;
+	  def_sec = bfd_section_from_elf_index (input_bfd, isym->st_shndx);
+	}
+      else
+	{
+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+		 || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+	  /* Filter out symbols that cannot have a relative reloc.  */
+	  if (h->dyn_relocs == NULL)
+	    continue;
+	  if (bfd_is_abs_symbol (&h->root))
+	    continue;
+	  if (h->type == STT_GNU_IFUNC)
+	    continue;
+
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    def_sec = h->root.u.def.section;
+
+	  /* On LoongArch an R_LARCH_NN against undefined weak symbol
+	     is never converted to R_LARCH_RELATIVE: we don't have
+	     -z dynamic-undefined-weak, thus the reloc is either removed
+	     (if the symbol is LARCH_REF_LOCAL) or kept (otherwise).  */
+	  if (h->root.type == bfd_link_hash_undefweak)
+	    continue;
+
+	  if (!LARCH_REF_LOCAL (info, h))
+	    continue;
+	}
+
+      if (!def_sec || discarded_section (def_sec))
+	continue;
+
+      if (!record_relr (htab, sec, rel->r_offset, sreloc))
+	return false;
+    }
+
+  return true;
+}
+
+static int
+cmp_relr_addr (const void *p, const void *q)
+{
+  const bfd_vma *a = p, *b = q;
+  return (*a > *b) - (*a < *b);
+}
+
+static bool
+sort_relr (struct bfd_link_info *info,
+	   struct loongarch_elf_link_hash_table *htab)
+{
+  if (htab->relr_count == 0)
+    return true;
+
+  bfd_vma *addr = htab->relr_sorted;
+  if (!addr)
+    {
+      addr = bfd_malloc (htab->relr_count * sizeof (*addr));
+      if (!addr)
+	return false;
+      htab->relr_sorted = addr;
+    }
+
+  for (bfd_size_type i = 0; i < htab->relr_count; i++)
+    {
+      bfd_vma off = _bfd_elf_section_offset (info->output_bfd, info,
+					     htab->relr[i].sec,
+					     htab->relr[i].off);
+      addr[i] = htab->relr[i].sec->output_section->vma
+		+ htab->relr[i].sec->output_offset + off;
+    }
+  qsort(addr, htab->relr_count, sizeof (*addr), cmp_relr_addr);
+  return true;
+}
+
+static bool
+loongarch_elf_size_relative_relocs (struct bfd_link_info *info,
+				    bool *need_layout)
+{
+  struct loongarch_elf_link_hash_table *htab =
+    loongarch_elf_hash_table (info);
+  asection *srelrdyn = htab->elf.srelrdyn;
+
+  *need_layout = false;
+
+  if (!sort_relr (info, htab))
+    return false;
+  bfd_vma *addr = htab->relr_sorted;
+
+  BFD_ASSERT (srelrdyn != NULL);
+  bfd_size_type oldsize = srelrdyn->size;
+  srelrdyn->size = 0;
+  for (bfd_size_type i = 0; i < htab->relr_count; )
+    {
+      bfd_vma base = addr[i];
+      i++;
+      srelrdyn->size += NN / 8;
+      base += NN / 8;
+      while (1)
+	{
+	  bfd_size_type start_i = i;
+	  while (i < htab->relr_count
+		 && addr[i] - base < (NN - 1) * (NN / 8)
+		 && (addr[i] - base) % (NN / 8) == 0)
+	    i++;
+	  if (i == start_i)
+	    break;
+	  srelrdyn->size += NN / 8;
+	  base += (NN - 1) * (NN / 8);
+	}
+    }
+  if (srelrdyn->size != oldsize)
+    {
+      *need_layout = true;
+      /* Stop after a few iterations in case the layout does not converge,
+	 but we can only stop when the size would shrink (and pad the
+	 spare space with 1.  */
+      if (htab->relr_layout_iter++ > 5 && srelrdyn->size < oldsize)
+	{
+	  srelrdyn->size = oldsize;
+	  *need_layout = false;
+	}
+    }
+
+  htab->layout_mutating_for_relr = *need_layout;
+  return true;
+}
+
+static bool
+loongarch_elf_finish_relative_relocs (struct bfd_link_info *info)
+{
+  struct loongarch_elf_link_hash_table *htab =
+    loongarch_elf_hash_table (info);
+  asection *srelrdyn = htab->elf.srelrdyn;
+  bfd *dynobj = htab->elf.dynobj;
+
+  if (!srelrdyn || srelrdyn->size == 0)
+    return true;
+
+  srelrdyn->contents = bfd_alloc (dynobj, srelrdyn->size);
+  if (!srelrdyn->contents)
+    return false;
+  srelrdyn->alloced = 1;
+
+  bfd_vma *addr = htab->relr_sorted;
+  bfd_byte *loc = srelrdyn->contents;
+  for (bfd_size_type i = 0; i < htab->relr_count; )
+    {
+      bfd_vma base = addr[i];
+      i++;
+      bfd_put_NN (dynobj, base, loc);
+      loc += NN / 8;
+      base += NN / 8;
+      while (1)
+	{
+	  uintNN_t bits = 0;
+	  while (i < htab->relr_count)
+	    {
+	      bfd_vma delta = addr[i] - base;
+	      if (delta >= (NN - 1) * (NN / 8) || delta % (NN / 8) != 0)
+		break;
+	      bits |= (uintNN_t) 1 << (delta / (NN / 8));
+	      i++;
+	    }
+	  if (bits == 0)
+	    break;
+	  bfd_put_NN (dynobj, (bits << 1) | 1, loc);
+	  loc += NN / 8;
+	  base += (NN - 1) * (NN / 8);
+	}
+    }
+
+  free (addr);
+  htab->relr_sorted = NULL;
+
+  /* Pad any excess with 1's, a do-nothing encoding.  */
+  while (loc < srelrdyn->contents + srelrdyn->size)
+    {
+      bfd_put_NN (dynobj, 1, loc);
+      loc += NN / 8;
+    }
+
+  return true;
+}
+
+static bool
+loongarch_elf_late_size_sections (bfd *output_bfd,
+				  struct bfd_link_info *info)
+{
+  struct loongarch_elf_link_hash_table *htab;
+  bfd *dynobj;
+  asection *s;
+  bfd *ibfd;
+
+  htab = loongarch_elf_hash_table (info);
+  BFD_ASSERT (htab != NULL);
+  dynobj = htab->elf.dynobj;
+  if (dynobj == NULL)
+    return true;
+
+  if (htab->elf.dynamic_sections_created)
+    {
+      /* Set the contents of the .interp section to the interpreter.  */
+      if (bfd_link_executable (info) && !info->nointerp)
+	{
+	  const char *interpreter;
+	  s = bfd_get_linker_section (dynobj, ".interp");
+	  BFD_ASSERT (s != NULL);
+
+	  if (elf_elfheader (output_bfd)->e_ident[EI_CLASS] == ELFCLASS32)
+	    interpreter = "/lib32/ld.so.1";
+	  else if (elf_elfheader (output_bfd)->e_ident[EI_CLASS] == ELFCLASS64)
+	    interpreter = "/lib64/ld.so.1";
+	  else
+	    interpreter = "/lib/ld.so.1";
+
+	  s->contents = (unsigned char *) interpreter;
+	  s->alloced = 1;
+	  s->size = strlen (interpreter) + 1;
+	}
+    }
+
+  /* Set up .got offsets for local syms, and space for local dynamic
+     relocs.  */
+  for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
+    {
+      bfd_signed_vma *local_got;
+      bfd_signed_vma *end_local_got;
+      char *local_tls_type;
+      bfd_size_type locsymcount;
+      Elf_Internal_Shdr *symtab_hdr;
+      asection *srel;
+
+      if (!is_loongarch_elf (ibfd))
+	continue;
+
+      for (s = ibfd->sections; s != NULL; s = s->next)
+	{
+	  struct elf_dyn_relocs *p;
+
+	  for (p = elf_section_data (s)->local_dynrel; p != NULL; p = p->next)
+	    {
+	      p->count -= p->pc_count;
+	      if (!bfd_is_abs_section (p->sec)
+		  && bfd_is_abs_section (p->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 (0 < p->count)
+		{
+		  srel = elf_section_data (p->sec)->sreloc;
+		  srel->size += p->count * sizeof (ElfNN_External_Rela);
+		  if ((p->sec->output_section->flags & SEC_READONLY) != 0)
+		    info->flags |= DF_TEXTREL;
+		}
+	    }
+	}
+
+      local_got = elf_local_got_refcounts (ibfd);
+      if (!local_got)
+	continue;
+
+      symtab_hdr = &elf_symtab_hdr (ibfd);
+      locsymcount = symtab_hdr->sh_info;
+      end_local_got = local_got + locsymcount;
+      local_tls_type = _bfd_loongarch_elf_local_got_tls_type (ibfd);
+      s = htab->elf.sgot;
+      srel = htab->elf.srelgot;
+      for (; local_got < end_local_got; ++local_got, ++local_tls_type)
+	{
+	  if (0 < *local_got)
+	    {
+	      *local_got = s->size;
+	      if (*local_tls_type & (GOT_TLS_GD | GOT_TLS_IE | GOT_TLS_GDESC))
+		{
+		  /* TLS gd use two got.  */
+		  if (*local_tls_type & GOT_TLS_GD)
+		    {
+		      s->size += 2 * GOT_ENTRY_SIZE;
+		      if (!bfd_link_executable (info))
+			srel->size += sizeof (ElfNN_External_Rela);
+		    }
+
+		  /* TLS_DESC use two got.  */
+		  if (*local_tls_type & GOT_TLS_GDESC)
+		    {
+		      s->size += 2 * GOT_ENTRY_SIZE;
+		      srel->size += sizeof (ElfNN_External_Rela);
+		    }
+
+		  /* TLS ie and use one got.  */
+		  if (*local_tls_type & GOT_TLS_IE)
+		    {
+		      s->size += GOT_ENTRY_SIZE;
+		      if (!bfd_link_executable (info))
+			srel->size += sizeof (ElfNN_External_Rela);
+		    }
+		}
+	      else
+		{
+		  s->size += GOT_ENTRY_SIZE;
+		  srel->size += sizeof (ElfNN_External_Rela);
+		}
+	    }
+	  else
+	    *local_got = MINUS_ONE;
+	}
+    }
+
+  /* Allocate global sym .plt and .got entries, and space for global
+     sym dynamic relocs.  */
+  elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info);
+
+  /* Allocate global ifunc sym .plt and .got entries, and space for
+     *preemptible* ifunc sym dynamic relocs.  Note that we must do it
+     for *all* preemptible ifunc (including local ifuncs and STV_HIDDEN
+     ifuncs) before doing it for any non-preemptible ifunc symbol:
+     assuming we are not so careful, when we link a shared library the
+     correlation of .plt and .rela.plt might look like:
+
+				idx in .plt	idx in .rela.plt
+	ext_func1@plt		0		0
+	ext_func2@plt		1		1
+	ext_func3@plt		2		2
+	hidden_ifunc1@plt	3		None: it's in .rela.got
+	hidden_ifunc2@plt	4		None: it's in .rela.got
+	normal_ifunc1@plt	5	!=	3
+	normal_ifunc2@plt	6	!=	4
+	local_ifunc@plt		7		None: it's in .rela.got
+
+     Now oops the indices for normal_ifunc{1,2} in .rela.plt were different
+     from the indices in .plt :(.  This would break finish_dynamic_symbol
+     which assumes the index in .rela.plt matches the index in .plt.
+
+     So let's be careful and make it correct:
+
+				idx in .plt	idx in .rela.plt
+	ext_func1@plt		0		0
+	ext_func2@plt		1		1
+	ext_func3@plt		2		2
+	normal_ifunc1@plt	3		3
+	normal_ifunc2@plt	4		4
+	hidden_ifunc1@plt	5		None: it's in .rela.got
+	hidden_ifunc2@plt	6		None: it's in .rela.got
+	local_ifunc@plt		7		None: it's in .rela.got
+
+     Now normal_ifuncs first.  */
+  elf_link_hash_traverse (&htab->elf,
+			  elfNN_allocate_ifunc_dynrelocs_ref_global, info);
+
+  /* Next hidden_ifuncs follows.  */
+  elf_link_hash_traverse (&htab->elf,
+			  elfNN_allocate_ifunc_dynrelocs_ref_local, info);
+
+  /* Finally local_ifuncs.  */
+  htab_traverse (htab->loc_hash_table,
+		 elfNN_allocate_local_ifunc_dynrelocs, info);
+
+  /* Don't allocate .got.plt section if there are no PLT.  */
+  if (htab->elf.sgotplt && htab->elf.sgotplt->size == GOTPLT_HEADER_SIZE
+      && (htab->elf.splt == NULL || htab->elf.splt->size == 0))
+    htab->elf.sgotplt->size = 0;
+
+  if (info->enable_dt_relr && !bfd_link_relocatable (info))
+    {
+      elf_link_hash_traverse (&htab->elf, record_relr_dyn_got_relocs, info);
+
+      for (ibfd = info->input_bfds; ibfd != NULL; ibfd = ibfd->link.next)
+	{
+	  if (!is_loongarch_elf (ibfd))
+	    continue;
+
+	  for (s = ibfd->sections; s != NULL; s = s->next)
+	    if (!record_relr_non_got_relocs (ibfd, info, s))
+	      return false;
+
+	  if (!record_relr_local_got_relocs (ibfd, info))
+	    return false;
+	}
+    }
+
+  /* The check_relocs and adjust_dynamic_symbol entry points have
+     determined the sizes of the various dynamic sections.  Allocate
+     memory for them.  */
+  for (s = dynobj->sections; s != NULL; s = s->next)
+    {
+      if ((s->flags & SEC_LINKER_CREATED) == 0)
+	continue;
+
+      if (s == htab->elf.splt || s == htab->elf.iplt || s == htab->elf.sgot
+	  || s == htab->elf.sgotplt || s == htab->elf.igotplt
+	  || s == htab->elf.sdynbss || s == htab->elf.sdynrelro)
+	{
+	  /* Strip this section if we don't need it; see the
+	     comment below.  */
+	}
+      else if (strncmp (s->name, ".rela", 5) == 0)
+	{
+	  if (s->size != 0)
+	    {
+	      /* We use the reloc_count field as a counter if we need
+		 to copy relocs into the output file.  */
+	      s->reloc_count = 0;
+	    }
+	}
+      else if (s == htab->elf.srelrdyn && htab->relr_count == 0)
+	{
+	  /* Remove .relr.dyn based on relr_count, not size, since
+	     it is not sized yet.  */
+	  s->flags |= SEC_EXCLUDE;
+	  /* Allocate contents later.  */
+	  continue;
+	}
+      else
+	{
+	  /* It's not one of our sections.  */
+	  continue;
+	}
+
+      if (s->size == 0)
+	{
+	  /* If we don't need this section, strip it from the
+	     output file.  This is mostly to handle .rela.bss and
+	     .rela.plt.  We must create both sections in
+	     create_dynamic_sections, because they must be created
+	     before the linker maps input sections to output
+	     sections.  The linker does that before
+	     adjust_dynamic_symbol is called, and it is that
+	     function which decides whether anything needs to go
+	     into these sections.  */
+	  s->flags |= SEC_EXCLUDE;
+	  continue;
+	}
+
+      if ((s->flags & SEC_HAS_CONTENTS) == 0)
+	continue;
+
+      /* Allocate memory for the section contents.  Zero the memory
+	 for the benefit of .rela.plt, which has 4 unused entries
+	 at the beginning, and we don't want garbage.  */
+      s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
+      if (s->contents == NULL)
+	return false;
+      s->alloced = 1;
+    }
+
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      /* Add some entries to the .dynamic section.  We fill in the
+	 values later, in loongarch_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;
+	  /* Clear the DF_TEXTREL flag.  It will be set again if we
+	     write out an actual text relocation; we may not, because
+	     at this point we do not know whether e.g.  any .eh_frame
+	     absolute relocations have been converted to PC-relative.  */
+	  info->flags &= ~DF_TEXTREL;
+	}
+    }
+#undef add_dynamic_entry
+
+  return true;
+}
+
+#define LARCH_LD_STACK_DEPTH 16
+static int64_t larch_opc_stack[LARCH_LD_STACK_DEPTH];
+static size_t larch_stack_top = 0;
+
+static bfd_reloc_status_type
+loongarch_push (int64_t val)
+{
+  if (LARCH_LD_STACK_DEPTH <= larch_stack_top)
+    return bfd_reloc_outofrange;
+  larch_opc_stack[larch_stack_top++] = val;
+  return bfd_reloc_ok;
+}
+
+static bfd_reloc_status_type
+loongarch_pop (int64_t *val)
+{
+  if (larch_stack_top == 0)
+    return bfd_reloc_outofrange;
+  BFD_ASSERT (val);
+  *val = larch_opc_stack[--larch_stack_top];
+  return bfd_reloc_ok;
+}
+
+static bfd_reloc_status_type
+loongarch_top (int64_t *val)
+{
+  if (larch_stack_top == 0)
+    return bfd_reloc_outofrange;
+  BFD_ASSERT (val);
+  *val = larch_opc_stack[larch_stack_top - 1];
+  return bfd_reloc_ok;
+}
+
+static void
+loongarch_elf_append_rela (bfd *abfd, asection *s, Elf_Internal_Rela *rel)
+{
+  BFD_ASSERT (s && s->contents);
+  const struct elf_backend_data *bed;
+  bfd_byte *loc;
+
+  bed = get_elf_backend_data (abfd);
+  if (!(s->size > s->reloc_count * bed->s->sizeof_rela))
+    BFD_ASSERT (s->size > s->reloc_count * bed->s->sizeof_rela);
+  loc = s->contents + (s->reloc_count++ * bed->s->sizeof_rela);
+  bed->s->swap_reloca_out (abfd, rel, loc);
+}
+
+/* Check rel->r_offset in range of contents.  */
+static bfd_reloc_status_type
+loongarch_check_offset (const Elf_Internal_Rela *rel,
+			const asection *input_section)
+{
+  if (0 == strcmp(input_section->name, ".text")
+      && rel->r_offset > input_section->size)
+    return bfd_reloc_overflow;
+
+  return bfd_reloc_ok;
+}
+
+#define LARCH_RELOC_PERFORM_3OP(op1, op2, op3)	      \
+  ({						      \
+    bfd_reloc_status_type ret = loongarch_pop (&op2); \
+    if (ret == bfd_reloc_ok)			      \
+      {						      \
+	ret = loongarch_pop (&op1);		      \
+	if (ret == bfd_reloc_ok)		      \
+	  ret = loongarch_push (op3);		      \
+      }						      \
+    ret;					      \
+   })
+
+/* Write immediate to instructions.  */
+
+static bfd_reloc_status_type
+loongarch_reloc_rewrite_imm_insn (const Elf_Internal_Rela *rel,
+				  const asection *input_section ATTRIBUTE_UNUSED,
+				  reloc_howto_type *howto, bfd *input_bfd,
+				  bfd_byte *contents, bfd_vma reloc_val)
+{
+  /* Adjust the immediate based on alignment and
+     its position in the instruction.  */
+  if (!loongarch_adjust_reloc_bitsfield (input_bfd, howto, &reloc_val))
+    return bfd_reloc_overflow;
+
+  int bits = bfd_get_reloc_size (howto) * 8;
+  uint64_t insn = bfd_get (bits, input_bfd, contents + rel->r_offset);
+
+  /* Write immediate to instruction.  */
+  insn = (insn & ~howto->dst_mask) | (reloc_val & howto->dst_mask);
+
+  bfd_put (bits, input_bfd, insn, contents + rel->r_offset);
+
+  return bfd_reloc_ok;
+}
+
+static bfd_reloc_status_type
+perform_relocation (const Elf_Internal_Rela *rel, asection *input_section,
+		    reloc_howto_type *howto, bfd_vma value,
+		    bfd *input_bfd, bfd_byte *contents)
+{
+  int64_t opr1, opr2, opr3;
+  bfd_reloc_status_type r = bfd_reloc_ok;
+  int bits = bfd_get_reloc_size (howto) * 8;
+
+  switch (ELFNN_R_TYPE (rel->r_info))
+    {
+    case R_LARCH_SOP_PUSH_PCREL:
+    case R_LARCH_SOP_PUSH_ABSOLUTE:
+    case R_LARCH_SOP_PUSH_GPREL:
+    case R_LARCH_SOP_PUSH_TLS_TPREL:
+    case R_LARCH_SOP_PUSH_TLS_GOT:
+    case R_LARCH_SOP_PUSH_TLS_GD:
+    case R_LARCH_SOP_PUSH_PLT_PCREL:
+      r = loongarch_push (value);
+      break;
+
+    case R_LARCH_SOP_PUSH_DUP:
+      r = loongarch_pop (&opr1);
+      if (r == bfd_reloc_ok)
+	{
+	  r = loongarch_push (opr1);
+	  if (r == bfd_reloc_ok)
+	    r = loongarch_push (opr1);
+	}
+      break;
+
+    case R_LARCH_SOP_ASSERT:
+      r = loongarch_pop (&opr1);
+      if (r != bfd_reloc_ok || !opr1)
+	r = bfd_reloc_notsupported;
+      break;
+
+    case R_LARCH_SOP_NOT:
+      r = loongarch_pop (&opr1);
+      if (r == bfd_reloc_ok)
+	r = loongarch_push (!opr1);
+      break;
+
+    case R_LARCH_SOP_SUB:
+      r = LARCH_RELOC_PERFORM_3OP (opr1, opr2, opr1 - opr2);
+      break;
+
+    case R_LARCH_SOP_SL:
+      r = LARCH_RELOC_PERFORM_3OP (opr1, opr2, opr1 << opr2);
+      break;
+
+    case R_LARCH_SOP_SR:
+      r = LARCH_RELOC_PERFORM_3OP (opr1, opr2, opr1 >> opr2);
+      break;
+
+    case R_LARCH_SOP_AND:
+      r = LARCH_RELOC_PERFORM_3OP (opr1, opr2, opr1 & opr2);
+      break;
+
+    case R_LARCH_SOP_ADD:
+      r = LARCH_RELOC_PERFORM_3OP (opr1, opr2, opr1 + opr2);
+      break;
+
+    case R_LARCH_SOP_IF_ELSE:
+      r = loongarch_pop (&opr3);
+      if (r == bfd_reloc_ok)
+	{
+	  r = loongarch_pop (&opr2);
+	  if (r == bfd_reloc_ok)
+	    {
+	      r = loongarch_pop (&opr1);
+	      if (r == bfd_reloc_ok)
+		r = loongarch_push (opr1 ? opr2 : opr3);
+	    }
+	}
+      break;
+
+    case R_LARCH_SOP_POP_32_S_10_5:
+    case R_LARCH_SOP_POP_32_S_10_12:
+    case R_LARCH_SOP_POP_32_S_10_16:
+    case R_LARCH_SOP_POP_32_S_10_16_S2:
+    case R_LARCH_SOP_POP_32_S_0_5_10_16_S2:
+    case R_LARCH_SOP_POP_32_S_0_10_10_16_S2:
+    case R_LARCH_SOP_POP_32_S_5_20:
+    case R_LARCH_SOP_POP_32_U_10_12:
+    case R_LARCH_SOP_POP_32_U:
+      r = loongarch_pop (&opr1);
+      if (r != bfd_reloc_ok)
+	break;
+      r = loongarch_check_offset (rel, input_section);
+      if (r != bfd_reloc_ok)
+	break;
+
+      r = loongarch_reloc_rewrite_imm_insn (rel, input_section,
+					    howto, input_bfd,
+					    contents, (bfd_vma)opr1);
+      break;
+
+    case R_LARCH_TLS_DTPREL32:
+    case R_LARCH_32:
+    case R_LARCH_TLS_DTPREL64:
+    case R_LARCH_64:
+      r = loongarch_check_offset (rel, input_section);
+      if (r != bfd_reloc_ok)
+	break;
+
+      bfd_put (bits, input_bfd, value, contents + rel->r_offset);
+      break;
+
+    /* LoongArch only has add/sub reloc pair, not has set/sub reloc pair.
+       Because set/sub reloc pair not support multi-thread. While add/sub
+       reloc pair process order not affect the final result.
+
+       For add/sub reloc, the original value will be involved in the
+       calculation. In order not to add/sub extra value, we write 0 to symbol
+       address at assembly time.
+
+       add/sub reloc bits determined by the value after symbol subtraction,
+       not symbol value.
+
+       add/sub reloc save part of the symbol value, so we only need to
+       save howto->dst_mask bits.  */
+    case R_LARCH_ADD6:
+    case R_LARCH_SUB6:
+      {
+	bfd_vma word = bfd_get (howto->bitsize, input_bfd,
+				contents + rel->r_offset);
+	word = (word & ~howto->dst_mask) | (value & howto->dst_mask);
+	bfd_put (howto->bitsize, input_bfd, word, contents + rel->r_offset);
+	r = bfd_reloc_ok;
+	break;
+      }
+
+    /* Not need to read the original value, just write the new value.  */
+    case R_LARCH_ADD8:
+    case R_LARCH_ADD16:
+    case R_LARCH_ADD24:
+    case R_LARCH_ADD32:
+    case R_LARCH_ADD64:
+    case R_LARCH_SUB8:
+    case R_LARCH_SUB16:
+    case R_LARCH_SUB24:
+    case R_LARCH_SUB32:
+    case R_LARCH_SUB64:
+      {
+	/* Because add/sub reloc is processed separately,
+	   so the high bits is invalid.  */
+	bfd_vma word = value & howto->dst_mask;
+	bfd_put (howto->bitsize, input_bfd, word, contents + rel->r_offset);
+	r = bfd_reloc_ok;
+	break;
+      }
+
+    case R_LARCH_ADD_ULEB128:
+    case R_LARCH_SUB_ULEB128:
+      {
+	unsigned int len = 0;
+	/* Before write uleb128, first read it to get it's length.  */
+	_bfd_read_unsigned_leb128 (input_bfd, contents + rel->r_offset, &len);
+	loongarch_write_unsigned_leb128 (contents + rel->r_offset, len, value);
+	r = bfd_reloc_ok;
+	break;
+      }
+
+    /* For eh_frame and debug info.  */
+    case R_LARCH_32_PCREL:
+    case R_LARCH_64_PCREL:
+      {
+	value -= sec_addr (input_section) + rel->r_offset;
+	value += rel->r_addend;
+	/* Check overflow.  */
+	if (ELFNN_R_TYPE (rel->r_info) == R_LARCH_32_PCREL)
+	  {
+	    r = loongarch_reloc_rewrite_imm_insn (rel, input_section,
+						  howto, input_bfd,
+						  contents, value);
+	  }
+	else
+	  {
+	    bfd_vma word = bfd_get (howto->bitsize, input_bfd,
+				    contents + rel->r_offset);
+	    word = (word & ~howto->dst_mask) | (value & howto->dst_mask);
+	    bfd_put (howto->bitsize, input_bfd, word, contents + rel->r_offset);
+	    r = bfd_reloc_ok;
+	  }
+	break;
+      }
+
+    /* New reloc type.
+       R_LARCH_B16 ~ R_LARCH_TLS_GD_HI20.  */
+    case R_LARCH_B16:
+    case R_LARCH_B21:
+    case R_LARCH_B26:
+    case R_LARCH_ABS_HI20:
+    case R_LARCH_ABS_LO12:
+    case R_LARCH_ABS64_LO20:
+    case R_LARCH_ABS64_HI12:
+    case R_LARCH_PCALA_HI20:
+    case R_LARCH_PCALA_LO12:
+    case R_LARCH_PCALA64_LO20:
+    case R_LARCH_PCALA64_HI12:
+    case R_LARCH_GOT_PC_HI20:
+    case R_LARCH_GOT_PC_LO12:
+    case R_LARCH_GOT64_PC_LO20:
+    case R_LARCH_GOT64_PC_HI12:
+    case R_LARCH_GOT_HI20:
+    case R_LARCH_GOT_LO12:
+    case R_LARCH_GOT64_LO20:
+    case R_LARCH_GOT64_HI12:
+    case R_LARCH_TLS_LE_HI20:
+    case R_LARCH_TLS_LE_LO12:
+    case R_LARCH_TLS_LE_HI20_R:
+    case R_LARCH_TLS_LE_LO12_R:
+    case R_LARCH_TLS_LE64_LO20:
+    case R_LARCH_TLS_LE64_HI12:
+    case R_LARCH_TLS_IE_PC_HI20:
+    case R_LARCH_TLS_IE_PC_LO12:
+    case R_LARCH_TLS_IE64_PC_LO20:
+    case R_LARCH_TLS_IE64_PC_HI12:
+    case R_LARCH_TLS_IE_HI20:
+    case R_LARCH_TLS_IE_LO12:
+    case R_LARCH_TLS_IE64_LO20:
+    case R_LARCH_TLS_IE64_HI12:
+    case R_LARCH_TLS_LD_PC_HI20:
+    case R_LARCH_TLS_LD_HI20:
+    case R_LARCH_TLS_GD_PC_HI20:
+    case R_LARCH_TLS_GD_HI20:
+    case R_LARCH_PCREL20_S2:
+    case R_LARCH_CALL36:
+    case R_LARCH_TLS_DESC_PC_HI20:
+    case R_LARCH_TLS_DESC_PC_LO12:
+    case R_LARCH_TLS_DESC64_PC_LO20:
+    case R_LARCH_TLS_DESC64_PC_HI12:
+    case R_LARCH_TLS_DESC_HI20:
+    case R_LARCH_TLS_DESC_LO12:
+    case R_LARCH_TLS_DESC64_LO20:
+    case R_LARCH_TLS_DESC64_HI12:
+    case R_LARCH_TLS_LD_PCREL20_S2:
+    case R_LARCH_TLS_GD_PCREL20_S2:
+    case R_LARCH_TLS_DESC_PCREL20_S2:
+      r = loongarch_check_offset (rel, input_section);
+      if (r != bfd_reloc_ok)
+	break;
+
+      r = loongarch_reloc_rewrite_imm_insn (rel, input_section,
+					    howto, input_bfd,
+					    contents, value);
+      break;
+
+    case R_LARCH_TLS_DESC_LD:
+    case R_LARCH_TLS_DESC_CALL:
+      r = bfd_reloc_ok;
+      break;
+
+    case R_LARCH_RELAX:
+    case R_LARCH_TLS_LE_ADD_R:
+      break;
+
+    default:
+      r = bfd_reloc_notsupported;
+    }
+  return r;
+}
+
+#define LARCH_RECENT_RELOC_QUEUE_LENGTH 72
+static struct
+{
+  bfd *bfd;
+  asection *section;
+  bfd_vma r_offset;
+  int r_type;
+  bfd_vma relocation;
+  Elf_Internal_Sym *sym;
+  struct elf_link_hash_entry *h;
+  bfd_vma addend;
+  int64_t top_then;
+} larch_reloc_queue[LARCH_RECENT_RELOC_QUEUE_LENGTH];
+static size_t larch_reloc_queue_head = 0;
+static size_t larch_reloc_queue_tail = 0;
+
+static const char *
+loongarch_sym_name (bfd *input_bfd, struct elf_link_hash_entry *h,
+		    Elf_Internal_Sym *sym)
+{
+  const char *ret = NULL;
+  if (sym)
+    ret = bfd_elf_string_from_elf_section (input_bfd,
+					   elf_symtab_hdr (input_bfd).sh_link,
+					   sym->st_name);
+  else if (h)
+    ret = h->root.root.string;
+
+  if (ret == NULL || *ret == '\0')
+    ret = "<nameless>";
+  return ret;
+}
+
+static void
+loongarch_record_one_reloc (bfd *abfd, asection *section, int r_type,
+			    bfd_vma r_offset, Elf_Internal_Sym *sym,
+			    struct elf_link_hash_entry *h, bfd_vma addend)
+{
+  if ((larch_reloc_queue_head == 0
+       && larch_reloc_queue_tail == LARCH_RECENT_RELOC_QUEUE_LENGTH - 1)
+      || larch_reloc_queue_head == larch_reloc_queue_tail + 1)
+    larch_reloc_queue_head =
+      (larch_reloc_queue_head + 1) % LARCH_RECENT_RELOC_QUEUE_LENGTH;
+  larch_reloc_queue[larch_reloc_queue_tail].bfd = abfd;
+  larch_reloc_queue[larch_reloc_queue_tail].section = section;
+  larch_reloc_queue[larch_reloc_queue_tail].r_offset = r_offset;
+  larch_reloc_queue[larch_reloc_queue_tail].r_type = r_type;
+  larch_reloc_queue[larch_reloc_queue_tail].sym = sym;
+  larch_reloc_queue[larch_reloc_queue_tail].h = h;
+  larch_reloc_queue[larch_reloc_queue_tail].addend = addend;
+  loongarch_top (&larch_reloc_queue[larch_reloc_queue_tail].top_then);
+  larch_reloc_queue_tail =
+    (larch_reloc_queue_tail + 1) % LARCH_RECENT_RELOC_QUEUE_LENGTH;
+}
+
+static void
+loongarch_dump_reloc_record (void (*p) (const char *fmt, ...))
+{
+  size_t i = larch_reloc_queue_head;
+  bfd *a_bfd = NULL;
+  asection *section = NULL;
+  bfd_vma r_offset = 0;
+  int inited = 0;
+  p ("Dump relocate record:\n");
+  p ("stack top\t\trelocation name\t\tsymbol");
+  while (i != larch_reloc_queue_tail)
+    {
+      if (a_bfd != larch_reloc_queue[i].bfd
+	  || section != larch_reloc_queue[i].section
+	  || r_offset != larch_reloc_queue[i].r_offset)
+	{
+	  a_bfd = larch_reloc_queue[i].bfd;
+	  section = larch_reloc_queue[i].section;
+	  r_offset = larch_reloc_queue[i].r_offset;
+	  p ("\nat %pB(%pA+0x%v):\n", larch_reloc_queue[i].bfd,
+	     larch_reloc_queue[i].section, larch_reloc_queue[i].r_offset);
+	}
+
+      if (!inited)
+	inited = 1, p ("...\n");
+
+      reloc_howto_type *howto =
+	loongarch_elf_rtype_to_howto (larch_reloc_queue[i].bfd,
+				      larch_reloc_queue[i].r_type);
+      p ("0x%V %s\t`%s'", (bfd_vma) larch_reloc_queue[i].top_then,
+	 howto ? howto->name : "<unknown reloc>",
+	 loongarch_sym_name (larch_reloc_queue[i].bfd, larch_reloc_queue[i].h,
+			     larch_reloc_queue[i].sym));
+
+      long addend = larch_reloc_queue[i].addend;
+      if (addend < 0)
+	p (" - %ld", -addend);
+      else if (0 < addend)
+	p (" + %ld(0x%v)", addend, larch_reloc_queue[i].addend);
+
+      p ("\n");
+      i = (i + 1) % LARCH_RECENT_RELOC_QUEUE_LENGTH;
+    }
+  p ("\n"
+     "-- Record dump end --\n\n");
+}
+
+static bool
+loongarch_reloc_is_fatal (struct bfd_link_info *info,
+			  bfd *input_bfd,
+			  asection *input_section,
+			  Elf_Internal_Rela *rel,
+			  reloc_howto_type *howto,
+			  bfd_reloc_status_type rtype,
+			  bool is_undefweak,
+			  const char *name,
+			  const char *msg)
+{
+  bool fatal = true;
+  switch (rtype)
+    {
+      /* 'dangerous' means we do it but can't promise it's ok
+	 'unsupport' means out of ability of relocation type
+	 'undefined' means we can't deal with the undefined symbol.  */
+    case bfd_reloc_undefined:
+      info->callbacks->undefined_symbol (info, name, input_bfd, input_section,
+					 rel->r_offset, true);
+      info->callbacks->info ("%X%pB(%pA+0x%v): error: %s against %s`%s':\n%s\n",
+			     input_bfd, input_section, rel->r_offset,
+			     howto->name,
+			     is_undefweak ? "[undefweak] " : "", name, msg);
+      break;
+    case bfd_reloc_dangerous:
+      info->callbacks->info ("%pB(%pA+0x%v): warning: %s against %s`%s':\n%s\n",
+			     input_bfd, input_section, rel->r_offset,
+			     howto->name,
+			     is_undefweak ? "[undefweak] " : "", name, msg);
+      fatal = false;
+      break;
+    case bfd_reloc_notsupported:
+      info->callbacks->info ("%X%pB(%pA+0x%v): error: %s against %s`%s':\n%s\n",
+			     input_bfd, input_section, rel->r_offset,
+			     howto->name,
+			     is_undefweak ? "[undefweak] " : "", name, msg);
+      break;
+    default:
+      break;
+    }
+  return fatal;
+}
+
+/* If lo12 immediate > 0x7ff, because sign-extend caused by addi.d/ld.d,
+   hi20 immediate need to add 0x1.
+   For example: pc 0x120000000, symbol 0x120000812
+   lo12 immediate is 0x812, 0x120000812 & 0xfff = 0x812
+   hi20 immediate is 1, because lo12 imm > 0x7ff, symbol need to add 0x1000
+   (((0x120000812 + 0x1000) & ~0xfff) - (0x120000000 & ~0xfff)) >> 12 = 0x1
+
+   At run:
+   pcalau12i $t0, hi20 (0x1)
+      $t0 = 0x120000000 + (0x1 << 12) = 0x120001000
+   addi.d $t0, $t0, lo12 (0x812)
+      $t0 = 0x120001000 + 0xfffffffffffff812 (-(0x1000 - 0x812) = -0x7ee)
+	  = 0x120001000 - 0x7ee (0x1000 - 0x7ee = 0x812)
+	  = 0x120000812
+    Without hi20 add 0x1000, the result 0x120000000 - 0x7ee = 0x11ffff812 is
+    error.
+    0x1000 + sign-extend-to64(0x8xx) = 0x8xx.  */
+#define RELOCATE_CALC_PC32_HI20(relocation, pc) 	\
+  ({							\
+    bfd_vma __lo = (relocation) & ((bfd_vma)0xfff);	\
+    relocation = (relocation & ~(bfd_vma)0xfff)		\
+		  - (pc & ~(bfd_vma)0xfff);		\
+    if (__lo > 0x7ff)					\
+	relocation += 0x1000;				\
+  })
+
+/* Handle problems caused by symbol extensions in TLS LE, The processing
+   is similar to the macro RELOCATE_CALC_PC32_HI20 method.  */
+#define RELOCATE_TLS_TP32_HI20(relocation)		\
+  ({							\
+    bfd_vma __lo = (relocation) & ((bfd_vma)0xfff);	\
+    if (__lo > 0x7ff)					\
+	relocation += 0x800;				\
+    relocation = relocation & ~(bfd_vma)0xfff;		\
+  })
+
+/* For example: pc is 0x11000010000100, symbol is 0x1812348ffff812
+   offset = (0x1812348ffff812 & ~0xfff) - (0x11000010000100 & ~0xfff)
+	  = 0x712347ffff000
+   lo12: 0x1812348ffff812 & 0xfff = 0x812
+   hi20: 0x7ffff + 0x1(lo12 > 0x7ff) = 0x80000
+   lo20: 0x71234 - 0x1(lo12 > 0x7ff) + 0x1(hi20 > 0x7ffff)
+   hi12: 0x0
+
+   pcalau12i $t1, hi20 (0x80000)
+      $t1 = 0x11000010000100 + sign-extend(0x80000 << 12)
+	  = 0x11000010000100 + 0xffffffff80000000
+	  = 0x10ffff90000000
+   addi.d $t0, $zero, lo12 (0x812)
+      $t0 = 0xfffffffffffff812 (if lo12 > 0x7ff, because sign-extend,
+      lo20 need to sub 0x1)
+   lu32i.d $t0, lo20 (0x71234)
+      $t0 = {0x71234, 0xfffff812}
+	  = 0x71234fffff812
+   lu52i.d $t0, hi12 (0x0)
+      $t0 = {0x0, 0x71234fffff812}
+	  = 0x71234fffff812
+   add.d $t1, $t1, $t0
+      $t1 = 0x10ffff90000000 + 0x71234fffff812
+	  = 0x1812348ffff812.  */
+#define RELOCATE_CALC_PC64_HI32(relocation, pc)  	\
+  ({							\
+    bfd_vma __lo = (relocation & (bfd_vma)0xfff);	\
+    relocation = (relocation & ~(bfd_vma)0xfff)		\
+		  - ((pc) & ~(bfd_vma)0xfff);		\
+    if (__lo > 0x7ff)					\
+	relocation += (0x1000 - 0x100000000);		\
+    if (relocation & 0x80000000)			\
+      relocation += 0x100000000;			\
+  })
+
+
+/* Compute the tp/dtp offset of a tls symbol.
+   It is dtp offset in dynamic tls model (gd/ld) and tp
+   offset in static tls model (ie/le). Both offsets are
+   calculated the same way on LoongArch, so the same
+   function is used.  */
+static bfd_vma
+tlsoff (struct bfd_link_info *info, bfd_vma addr)
+{
+  /* If tls_sec is NULL, we should have signalled an error already.  */
+  if (elf_hash_table (info)->tls_sec == NULL)
+    return 0;
+  return addr - elf_hash_table (info)->tls_sec->vma;
+}
+
+static int
+loongarch_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_Rela *rel;
+  Elf_Internal_Rela *relend;
+  bool fatal = false;
+  asection *sreloc = elf_section_data (input_section)->sreloc;
+  struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (info);
+  Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (input_bfd);
+  struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
+  bfd_vma *local_got_offsets = elf_local_got_offsets (input_bfd);
+  bool is_pic = bfd_link_pic (info);
+  bool is_dyn = elf_hash_table (info)->dynamic_sections_created;
+  asection *plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt;
+  asection *got = htab->elf.sgot;
+
+  relend = relocs + input_section->reloc_count;
+  for (rel = relocs; rel < relend; rel++)
+    {
+      unsigned int r_type = ELFNN_R_TYPE (rel->r_info);
+      unsigned long r_symndx = ELFNN_R_SYM (rel->r_info);
+      bfd_vma pc = sec_addr (input_section) + rel->r_offset;
+      reloc_howto_type *howto = NULL;
+      asection *sec = NULL;
+      Elf_Internal_Sym *sym = NULL;
+      struct elf_link_hash_entry *h = NULL;
+      const char *name;
+      bfd_reloc_status_type r = bfd_reloc_ok;
+      bool is_ie, is_desc, is_undefweak, unresolved_reloc, defined_local;
+      bool resolved_local, resolved_dynly, resolved_to_const;
+      char tls_type;
+      bfd_vma relocation, off, ie_off, desc_off;
+      int i, j;
+      bool resolve_pcrel_undef_weak = false;
+
+      /* When an unrecognized relocation is encountered, which usually
+	 occurs when using a newer assembler but an older linker, an error
+	 should be reported instead of continuing to the next relocation.  */
+      howto = loongarch_elf_rtype_to_howto (input_bfd, r_type);
+      if (howto == NULL)
+	return _bfd_unrecognized_reloc (input_bfd, input_section, r_type);
+
+      if (r_type == R_LARCH_GNU_VTINHERIT || r_type == R_LARCH_GNU_VTENTRY)
+	continue;
+
+      /* This is a final link.  */
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  is_undefweak = false;
+	  unresolved_reloc = false;
+	  sym = local_syms + r_symndx;
+	  sec = local_sections[r_symndx];
+	  relocation = _bfd_elf_rela_local_sym (output_bfd, sym, &sec, rel);
+
+	  /* Relocate against local STT_GNU_IFUNC symbol.  */
+	  if (!bfd_link_relocatable (info)
+	      && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
+	    {
+	      h = elfNN_loongarch_get_local_sym_hash (htab, input_bfd, rel,
+						      false);
+	      if (h == NULL)
+		abort ();
+
+	      /* Set STT_GNU_IFUNC symbol value.  */
+	      h->root.u.def.value = sym->st_value;
+	      h->root.u.def.section = sec;
+	    }
+	  defined_local = true;
+	  resolved_local = true;
+	  resolved_dynly = false;
+	  resolved_to_const = false;
+
+	  /* Calc in funtion elf_link_input_bfd,
+	   * if #define elf_backend_rela_normal to 1.  */
+	  if (bfd_link_relocatable (info)
+	      && ELF_ST_TYPE (sym->st_info) == STT_SECTION)
+	    continue;
+	}
+      else
+	{
+	  bool 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);
+	  /* Here means symbol isn't local symbol only and 'h != NULL'.  */
+
+	  /* The 'unresolved_syms_in_objects' specify how to deal with undefined
+	     symbol.  And 'dynamic_undefined_weak' specify what to do when
+	     meeting undefweak.  */
+
+	  if ((is_undefweak = h->root.type == bfd_link_hash_undefweak))
+	    {
+	      defined_local = false;
+	      resolved_local = false;
+	      resolved_to_const = (!is_dyn || h->dynindx == -1
+				   || UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
+	      resolved_dynly = !resolved_local && !resolved_to_const;
+	    }
+	  else if (warned)
+	    {
+	      /* Symbol undefined offen means failed already.  I don't know why
+		 'warned' here but I guess it want to continue relocating as if
+		 no error occures to find other errors as more as possible.  */
+
+	      /* To avoid generating warning messages about truncated
+		 relocations, set the relocation's address to be the same as
+		 the start of this section.  */
+	      relocation = (input_section->output_section
+			    ? input_section->output_section->vma
+			    : 0);
+
+	      defined_local = relocation != 0;
+	      resolved_local = defined_local;
+	      resolved_to_const = !resolved_local;
+	      resolved_dynly = false;
+	    }
+	  else
+	    {
+	      defined_local = !unresolved_reloc && !ignored;
+	      resolved_local =
+		defined_local && LARCH_REF_LOCAL (info, h);
+	      resolved_dynly = !resolved_local;
+	      resolved_to_const = !resolved_local && !resolved_dynly;
+	    }
+	}
+
+      name = loongarch_sym_name (input_bfd, h, sym);
+
+      if (sec != NULL && discarded_section (sec))
+	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
+					 rel, 1, relend, R_LARCH_NONE,
+					 howto, 0, contents);
+
+      if (bfd_link_relocatable (info))
+	continue;
+
+      /* The r_symndx will be STN_UNDEF (zero) only for relocs against symbols
+	 from removed linkonce sections, or sections discarded by a linker
+	 script.  Also for R_*_SOP_PUSH_ABSOLUTE and PCREL to specify const.  */
+      if (r_symndx == STN_UNDEF)
+	{
+	  defined_local = false;
+	  resolved_local = false;
+	  resolved_dynly = false;
+	  resolved_to_const = true;
+	}
+
+      /* The ifunc reference generate plt.  */
+      if (h && h->type == STT_GNU_IFUNC && h->plt.offset != MINUS_ONE)
+	{
+	  defined_local = true;
+	  resolved_local = true;
+	  resolved_dynly = false;
+	  resolved_to_const = false;
+	  relocation = sec_addr (plt) + h->plt.offset;
+	}
+
+      unresolved_reloc = resolved_dynly;
+
+      BFD_ASSERT (resolved_local + resolved_dynly + resolved_to_const == 1);
+
+      /* BFD_ASSERT (!resolved_dynly || (h && h->dynindx != -1));.  */
+
+      BFD_ASSERT (!resolved_local || defined_local);
+
+      is_desc = false;
+      is_ie = false;
+      switch (r_type)
+	{
+	case R_LARCH_MARK_PCREL:
+	case R_LARCH_MARK_LA:
+	case R_LARCH_NONE:
+	  r = bfd_reloc_continue;
+	  unresolved_reloc = false;
+	  break;
+
+	case R_LARCH_32:
+	case R_LARCH_64:
+	  if (resolved_dynly || (is_pic && resolved_local))
+	    {
+	      Elf_Internal_Rela outrel;
+
+	      /* When generating a shared object, these relocations are copied
+		 into the output file to be resolved at run time.  */
+
+	      outrel.r_offset = _bfd_elf_section_offset (output_bfd, info,
+							 input_section,
+							 rel->r_offset);
+
+	      unresolved_reloc = (!((bfd_vma) -2 <= outrel.r_offset)
+				  && (input_section->flags & SEC_ALLOC));
+
+	      outrel.r_offset += sec_addr (input_section);
+
+	      /* A pointer point to a ifunc symbol.  */
+	      if (h && h->type == STT_GNU_IFUNC)
+		{
+		  if (h->dynindx == -1)
+		    {
+		      outrel.r_info = ELFNN_R_INFO (0, R_LARCH_IRELATIVE);
+		      outrel.r_addend = (h->root.u.def.value
+				  + h->root.u.def.section->output_section->vma
+				  + h->root.u.def.section->output_offset);
+		    }
+		  else
+		    {
+		      outrel.r_info = ELFNN_R_INFO (h->dynindx, R_LARCH_NN);
+		      outrel.r_addend = 0;
+		    }
+
+		  if (LARCH_REF_LOCAL (info, h))
+		    {
+
+		      if (htab->elf.splt != NULL)
+			sreloc = htab->elf.srelgot;
+		      else
+			sreloc = htab->elf.irelplt;
+		    }
+		  else
+		    {
+
+		      if (bfd_link_pic (info))
+			sreloc = htab->elf.irelifunc;
+		      else if (htab->elf.splt != NULL)
+			sreloc = htab->elf.srelgot;
+		      else
+			sreloc = htab->elf.irelplt;
+		    }
+		}
+	      else if (resolved_dynly)
+		{
+		  if (h->dynindx == -1)
+		    outrel.r_info = ELFNN_R_INFO (0, r_type);
+		  else
+		    outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+
+		  outrel.r_addend = rel->r_addend;
+		}
+	      else
+		{
+		  outrel.r_info = ELFNN_R_INFO (0, R_LARCH_RELATIVE);
+		  outrel.r_addend = relocation + rel->r_addend;
+		}
+
+	      /* No alloc space of func allocate_dynrelocs.
+		 No alloc space of invalid R_LARCH_32 in ELFCLASS64.  */
+	      if (unresolved_reloc
+		  && (ARCH_SIZE == 32 || r_type != R_LARCH_32)
+		  && !(h && (h->is_weakalias || !h->dyn_relocs)))
+		{
+		  if (info->enable_dt_relr
+		      && (ELFNN_R_TYPE (outrel.r_info) == R_LARCH_RELATIVE)
+		      && input_section->alignment_power != 0
+		      && rel->r_offset % 2 == 0)
+		    /* Don't emit a relative relocation that is packed,
+		       only apply the addend (as if we are applying the
+		       original R_LARCH_NN reloc in a PDE).  */
+		    r = perform_relocation (rel, input_section, howto,
+					    relocation, input_bfd,
+					    contents);
+		  else
+		    loongarch_elf_append_rela (output_bfd, sreloc,
+					       &outrel);
+		}
+	    }
+
+	  relocation += rel->r_addend;
+	  break;
+
+	case R_LARCH_ADD6:
+	case R_LARCH_ADD8:
+	case R_LARCH_ADD16:
+	case R_LARCH_ADD24:
+	case R_LARCH_ADD32:
+	case R_LARCH_ADD64:
+	  {
+	    bfd_vma old_value = bfd_get (howto->bitsize, input_bfd,
+					 contents + rel->r_offset);
+	    relocation = old_value + relocation + rel->r_addend;
+	    break;
+	  }
+
+	case R_LARCH_SUB6:
+	case R_LARCH_SUB8:
+	case R_LARCH_SUB16:
+	case R_LARCH_SUB24:
+	case R_LARCH_SUB32:
+	case R_LARCH_SUB64:
+	  {
+	    bfd_vma old_value = bfd_get (howto->bitsize, input_bfd,
+					  contents + rel->r_offset);
+	    relocation = old_value - relocation - rel->r_addend;
+	    break;
+	  }
+
+	case R_LARCH_ADD_ULEB128:
+	case R_LARCH_SUB_ULEB128:
+	  {
+	    /* Get the value and length of the uleb128 data.  */
+	    unsigned int len = 0;
+	    bfd_vma old_value = _bfd_read_unsigned_leb128 (input_bfd,
+				    contents + rel->r_offset, &len);
+
+	    if (R_LARCH_ADD_ULEB128 == ELFNN_R_TYPE (rel->r_info))
+	      relocation = old_value + relocation + rel->r_addend;
+	    else if (R_LARCH_SUB_ULEB128 == ELFNN_R_TYPE (rel->r_info))
+	      relocation = old_value - relocation - rel->r_addend;
+
+	    bfd_vma mask = (1 << (7 * len)) - 1;
+	    relocation &= mask;
+	    break;
+	  }
+
+	case R_LARCH_TLS_DTPREL32:
+	case R_LARCH_TLS_DTPREL64:
+	  if (resolved_dynly)
+	    {
+	      Elf_Internal_Rela outrel;
+
+	      outrel.r_offset = _bfd_elf_section_offset (output_bfd, info,
+							 input_section,
+							 rel->r_offset);
+	      unresolved_reloc = (!((bfd_vma) -2 <= outrel.r_offset)
+				  && (input_section->flags & SEC_ALLOC));
+	      outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+	      outrel.r_offset += sec_addr (input_section);
+	      outrel.r_addend = rel->r_addend;
+	      if (unresolved_reloc)
+		loongarch_elf_append_rela (output_bfd, sreloc, &outrel);
+	      break;
+	    }
+
+	  if (resolved_to_const)
+	    fatal = loongarch_reloc_is_fatal (info, input_bfd, input_section,
+					      rel, howto,
+					      bfd_reloc_notsupported,
+					      is_undefweak, name,
+					      "Internal:");
+	  if (resolved_local)
+	    {
+	      if (!elf_hash_table (info)->tls_sec)
+		{
+		fatal = loongarch_reloc_is_fatal (info, input_bfd,
+			  input_section, rel, howto, bfd_reloc_notsupported,
+			  is_undefweak, name, "TLS section not be created");
+		}
+	      else
+		relocation = tlsoff (info, relocation);
+	    }
+	  else
+	    {
+	    fatal = loongarch_reloc_is_fatal (info, input_bfd,
+		      input_section, rel, howto, bfd_reloc_undefined,
+		      is_undefweak, name,
+		      "TLS LE just can be resolved local only.");
+	    }
+
+	  break;
+
+	case R_LARCH_SOP_PUSH_TLS_TPREL:
+	  if (resolved_local)
+	    {
+	      if (!elf_hash_table (info)->tls_sec)
+		fatal = (loongarch_reloc_is_fatal
+			 (info, input_bfd, input_section, rel, howto,
+			  bfd_reloc_notsupported, is_undefweak, name,
+			  "TLS section not be created"));
+	      else
+		relocation = tlsoff (info, relocation);
+	    }
+	  else
+	    fatal = (loongarch_reloc_is_fatal
+		     (info, input_bfd, input_section, rel, howto,
+		      bfd_reloc_undefined, is_undefweak, name,
+		      "TLS LE just can be resolved local only."));
+	  break;
+
+	case R_LARCH_SOP_PUSH_ABSOLUTE:
+	  if (is_undefweak)
+	    {
+	      if (resolved_dynly)
+		fatal = (loongarch_reloc_is_fatal
+			 (info, input_bfd, input_section, rel, howto,
+			  bfd_reloc_dangerous, is_undefweak, name,
+			  "Someone require us to resolve undefweak "
+			  "symbol dynamically.  \n"
+			  "But this reloc can't be done.  "
+			  "I think I can't throw error "
+			  "for this\n"
+			  "so I resolved it to 0.  "
+			  "I suggest to re-compile with '-fpic'."));
+
+	      relocation = 0;
+	      unresolved_reloc = false;
+	      break;
+	    }
+
+	  if (resolved_to_const)
+	    {
+	      relocation += rel->r_addend;
+	      break;
+	    }
+
+	  if (is_pic)
+	    {
+	      fatal = (loongarch_reloc_is_fatal
+		       (info, input_bfd, input_section, rel, howto,
+			bfd_reloc_notsupported, is_undefweak, name,
+			"Under PIC we don't know load address.  Re-compile "
+			"with '-fpic'?"));
+	      break;
+	    }
+
+	  if (resolved_dynly)
+	    {
+	      if (!(plt && h && h->plt.offset != MINUS_ONE))
+		{
+		  fatal = (loongarch_reloc_is_fatal
+			   (info, input_bfd, input_section, rel, howto,
+			    bfd_reloc_undefined, is_undefweak, name,
+			    "Can't be resolved dynamically.  Try to re-compile "
+			    "with '-fpic'?"));
+		  break;
+		}
+
+	      if (rel->r_addend != 0)
+		{
+		  fatal = (loongarch_reloc_is_fatal
+			   (info, input_bfd, input_section, rel, howto,
+			    bfd_reloc_notsupported, is_undefweak, name,
+			    "Shouldn't be with r_addend."));
+		  break;
+		}
+
+	      relocation = sec_addr (plt) + h->plt.offset;
+	      unresolved_reloc = false;
+	      break;
+	    }
+
+	  if (resolved_local)
+	    {
+	      relocation += rel->r_addend;
+	      break;
+	    }
+
+	  break;
+
+	case R_LARCH_SOP_PUSH_PCREL:
+	case R_LARCH_SOP_PUSH_PLT_PCREL:
+	  unresolved_reloc = false;
+
+	  if (is_undefweak)
+	    {
+	      i = 0, j = 0;
+	      relocation = 0;
+	      if (resolved_dynly)
+		{
+		  if (h && h->plt.offset != MINUS_ONE)
+		    i = 1, j = 2;
+		  else
+		    fatal = (loongarch_reloc_is_fatal
+			     (info, input_bfd, input_section, rel, howto,
+			      bfd_reloc_dangerous, is_undefweak, name,
+			      "Undefweak need to be resolved dynamically, "
+			      "but PLT stub doesn't represent."));
+		}
+	    }
+	  else
+	    {
+	      if (!(defined_local || (h && h->plt.offset != MINUS_ONE)))
+		{
+		  fatal = (loongarch_reloc_is_fatal
+			   (info, input_bfd, input_section, rel, howto,
+			    bfd_reloc_undefined, is_undefweak, name,
+			    "PLT stub does not represent and "
+			    "symbol not defined."));
+		  break;
+		}
+
+	      if (resolved_local)
+		i = 0, j = 2;
+	      else /* if (resolved_dynly) */
+		{
+		  if (!(h && h->plt.offset != MINUS_ONE))
+		    fatal = (loongarch_reloc_is_fatal
+			     (info, input_bfd, input_section, rel, howto,
+			      bfd_reloc_dangerous, is_undefweak, name,
+			      "Internal: PLT stub doesn't represent.  "
+			      "Resolve it with pcrel"));
+		  i = 1, j = 3;
+		}
+	    }
+
+	  for (; i < j; i++)
+	    {
+	      if ((i & 1) == 0 && defined_local)
+		{
+		  relocation -= pc;
+		  relocation += rel->r_addend;
+		  break;
+		}
+
+	      if ((i & 1) && h && h->plt.offset != MINUS_ONE)
+		{
+		  if (rel->r_addend != 0)
+		    {
+		      fatal = (loongarch_reloc_is_fatal
+			       (info, input_bfd, input_section, rel, howto,
+				bfd_reloc_notsupported, is_undefweak, name,
+				"PLT shouldn't be with r_addend."));
+		      break;
+		    }
+		  relocation = sec_addr (plt) + h->plt.offset - pc;
+		  break;
+		}
+	    }
+	  break;
+
+	case R_LARCH_SOP_PUSH_GPREL:
+	  unresolved_reloc = false;
+
+	  if (rel->r_addend != 0)
+	    {
+	      fatal = (loongarch_reloc_is_fatal
+		       (info, input_bfd, input_section, rel, howto,
+			bfd_reloc_notsupported, is_undefweak, name,
+			"Shouldn't be with r_addend."));
+	      break;
+	    }
+
+	  if (h != NULL)
+	    {
+	      off = h->got.offset & (~1);
+
+	      if (h->got.offset == MINUS_ONE && h->type != STT_GNU_IFUNC)
+		{
+		  fatal = (loongarch_reloc_is_fatal
+			   (info, input_bfd, input_section, rel, howto,
+			    bfd_reloc_notsupported, is_undefweak, name,
+			    "Internal: GOT entry doesn't represent."));
+		  break;
+		}
+
+	      /* Hidden symbol not has .got entry, only .got.plt entry
+		 so gprel is (plt - got).  */
+	      if (h->got.offset == MINUS_ONE && h->type == STT_GNU_IFUNC)
+		{
+		  if (h->plt.offset == (bfd_vma) -1)
+		    {
+		      abort();
+		    }
+
+		  bfd_vma plt_index = h->plt.offset / PLT_ENTRY_SIZE;
+		  off = plt_index * GOT_ENTRY_SIZE;
+
+		  if (htab->elf.splt != NULL)
+		    {
+		      /* Section .plt header is 2 times of plt entry.  */
+		      off = sec_addr (htab->elf.sgotplt) + off
+			- sec_addr (htab->elf.sgot);
+		    }
+		  else
+		    {
+		      /* Section iplt not has plt header.  */
+		      off = sec_addr (htab->elf.igotplt) + off
+			- sec_addr (htab->elf.sgot);
+		    }
+		}
+
+	      if ((h->got.offset & 1) == 0)
+		{
+		  if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (is_dyn,
+							bfd_link_pic (info), h)
+		      && ((bfd_link_pic (info)
+			   && LARCH_REF_LOCAL (info, h))))
+		    {
+		      /* This is actually a static link, or it is a
+			 -Bsymbolic link and the symbol is defined
+			 locally, or the symbol was forced to be local
+			 because of a version file.  We must initialize
+			 this entry in the global offset table.  Since the
+			 offset must always be a multiple of the word size,
+			 we use the least significant bit to record whether
+			 we have initialized it already.
+
+			 When doing a dynamic link, we create a rela.got
+			 relocation entry to initialize the value.  This
+			 is done in the finish_dynamic_symbol routine.  */
+
+		      if (resolved_dynly)
+			{
+			  fatal = (loongarch_reloc_is_fatal
+				   (info, input_bfd, input_section, rel, howto,
+				    bfd_reloc_dangerous, is_undefweak, name,
+				    "Internal: here shouldn't dynamic."));
+			}
+
+		      if (!(defined_local || resolved_to_const))
+			{
+			  fatal = (loongarch_reloc_is_fatal
+				   (info, input_bfd, input_section, rel, howto,
+				    bfd_reloc_undefined, is_undefweak, name,
+				    "Internal: "));
+			  break;
+			}
+
+		      asection *s;
+		      Elf_Internal_Rela outrel;
+		      /* We need to generate a R_LARCH_RELATIVE reloc
+			 for the dynamic linker.  */
+		      s = htab->elf.srelgot;
+		      if (!s)
+			{
+			  fatal = loongarch_reloc_is_fatal
+			    (info, input_bfd,
+			     input_section, rel, howto,
+			     bfd_reloc_notsupported, is_undefweak, name,
+			     "Internal: '.rel.got' not represent");
+			  break;
+			}
+
+		      outrel.r_offset = sec_addr (got) + off;
+		      outrel.r_info = ELFNN_R_INFO (0, R_LARCH_RELATIVE);
+		      outrel.r_addend = relocation; /* Link-time addr.  */
+		      loongarch_elf_append_rela (output_bfd, s, &outrel);
+		    }
+		  bfd_put_NN (output_bfd, relocation, got->contents + off);
+		  h->got.offset |= 1;
+		}
+	    }
+	  else
+	    {
+	      if (!local_got_offsets)
+		{
+		  fatal = (loongarch_reloc_is_fatal
+			   (info, input_bfd, input_section, rel, howto,
+			    bfd_reloc_notsupported, is_undefweak, name,
+			    "Internal: local got offsets not reporesent."));
+		  break;
+		}
+
+	      off = local_got_offsets[r_symndx] & (~1);
+
+	      if (local_got_offsets[r_symndx] == MINUS_ONE)
+		{
+		  fatal = (loongarch_reloc_is_fatal
+			   (info, input_bfd, input_section, rel, howto,
+			    bfd_reloc_notsupported, is_undefweak, name,
+			    "Internal: GOT entry doesn't represent."));
+		  break;
+		}
+
+	      /* The offset must always be a multiple of the word size.
+		 So, we can use the least significant bit to record
+		 whether we have already processed this entry.  */
+	      if ((local_got_offsets[r_symndx] & 1) == 0)
+		{
+		  if (is_pic)
+		    {
+		      asection *s;
+		      Elf_Internal_Rela outrel;
+		      /* We need to generate a R_LARCH_RELATIVE reloc
+			 for the dynamic linker.  */
+		      s = htab->elf.srelgot;
+		      if (!s)
+			{
+			  fatal = (loongarch_reloc_is_fatal
+				   (info, input_bfd, input_section, rel, howto,
+				    bfd_reloc_notsupported, is_undefweak, name,
+				    "Internal: '.rel.got' not represent"));
+			  break;
+			}
+
+		      outrel.r_offset = sec_addr (got) + off;
+		      outrel.r_info = ELFNN_R_INFO (0, R_LARCH_RELATIVE);
+		      outrel.r_addend = relocation; /* Link-time addr.  */
+		      loongarch_elf_append_rela (output_bfd, s, &outrel);
+		    }
+
+		  bfd_put_NN (output_bfd, relocation, got->contents + off);
+		  local_got_offsets[r_symndx] |= 1;
+		}
+	    }
+	  relocation = off;
+
+	  break;
+
+	case R_LARCH_SOP_PUSH_TLS_GOT:
+	case R_LARCH_SOP_PUSH_TLS_GD:
+	  {
+	    unresolved_reloc = false;
+	    if (r_type == R_LARCH_SOP_PUSH_TLS_GOT)
+	      is_ie = true;
+
+	    bfd_vma got_off = 0;
+	    if (h != NULL)
+	      {
+		got_off = h->got.offset;
+		h->got.offset |= 1;
+	      }
+	    else
+	      {
+		got_off = local_got_offsets[r_symndx];
+		local_got_offsets[r_symndx] |= 1;
+	      }
+
+	    BFD_ASSERT (got_off != MINUS_ONE);
+
+	    ie_off = 0;
+	    tls_type = _bfd_loongarch_elf_tls_type (input_bfd, h, r_symndx);
+	    if ((tls_type & GOT_TLS_GD) && (tls_type & GOT_TLS_IE))
+	      ie_off = 2 * GOT_ENTRY_SIZE;
+
+	    if ((got_off & 1) == 0)
+	      {
+		Elf_Internal_Rela rela;
+		asection *srel = htab->elf.srelgot;
+
+		int indx = 0;
+		bool need_reloc = false;
+		LARCH_TLS_GD_IE_NEED_DYN_RELOC (info, is_dyn, h, indx,
+						need_reloc);
+
+		if (tls_type & GOT_TLS_GD)
+		  {
+		    if (need_reloc)
+		      {
+			/* Dynamic resolved Module ID.  */
+			rela.r_offset = sec_addr (got) + got_off;
+			rela.r_addend = 0;
+			rela.r_info = ELFNN_R_INFO (indx, R_LARCH_TLS_DTPMODNN);
+			bfd_put_NN (output_bfd, 0, got->contents + got_off);
+			loongarch_elf_append_rela (output_bfd, srel, &rela);
+
+			if (indx == 0)
+			  {
+			    /* Local symbol, tp offset has been known.  */
+			    BFD_ASSERT (! unresolved_reloc);
+			    bfd_put_NN (output_bfd,
+				tlsoff (info, relocation),
+				(got->contents + got_off + GOT_ENTRY_SIZE));
+			  }
+			else
+			  {
+			    /* Dynamic resolved block offset.  */
+			    bfd_put_NN (output_bfd, 0,
+				got->contents + got_off + GOT_ENTRY_SIZE);
+			    rela.r_info = ELFNN_R_INFO (indx,
+						R_LARCH_TLS_DTPRELNN);
+			    rela.r_offset += GOT_ENTRY_SIZE;
+			    loongarch_elf_append_rela (output_bfd, srel, &rela);
+			  }
+		      }
+		    else
+		      {
+			/* In a static link or an executable link with the symbol
+			   binding locally.  Mark it as belonging to module 1.  */
+			bfd_put_NN (output_bfd, 1, got->contents + got_off);
+			bfd_put_NN (output_bfd, tlsoff (info, relocation),
+			    got->contents + got_off + GOT_ENTRY_SIZE);
+		      }
+		  }
+		if (tls_type & GOT_TLS_IE)
+		  {
+		    if (need_reloc)
+		      {
+			bfd_put_NN (output_bfd, 0,
+			    got->contents + got_off + ie_off);
+			rela.r_offset = sec_addr (got) + got_off + ie_off;
+			rela.r_addend = 0;
+
+			if (indx == 0)
+			  rela.r_addend = tlsoff (info, relocation);
+			rela.r_info = ELFNN_R_INFO (indx, R_LARCH_TLS_TPRELNN);
+			loongarch_elf_append_rela (output_bfd, srel, &rela);
+		      }
+		    else
+		      {
+			/* In a static link or an executable link with the symbol
+			   binding locally, compute offset directly.  */
+			bfd_put_NN (output_bfd, tlsoff (info, relocation),
+			    got->contents + got_off + ie_off);
+		      }
+		  }
+	      }
+
+	    relocation = (got_off & (~(bfd_vma)1)) + (is_ie ? ie_off : 0);
+	  }
+	  break;
+
+	/* New reloc types.  */
+	case R_LARCH_B16:
+	case R_LARCH_B21:
+	case R_LARCH_B26:
+	case R_LARCH_CALL36:
+	  unresolved_reloc = false;
+	  bool via_plt =
+	    plt != NULL && h != NULL && h->plt.offset != (bfd_vma) - 1;
+
+	  if (is_undefweak)
+	    {
+	      relocation = 0;
+
+	      /* A call to an undefined weak symbol is converted to 0.  */
+	      if (!via_plt && IS_CALL_RELOC (r_type))
+		{
+		  /* call36 fn1 => pcaddu18i $ra,0+jirl $ra,$zero,0
+		     tail36 $t0,fn1 => pcaddi18i $t0,0+jirl $zero,$zero,0  */
+		  if (R_LARCH_CALL36 == r_type)
+		    {
+		      uint32_t jirl = bfd_get (32, input_bfd,
+					  contents + rel->r_offset + 4);
+		      uint32_t rd = LARCH_GET_RD (jirl);
+		      jirl = LARCH_OP_JIRL | rd;
+
+		      bfd_put (32, input_bfd, jirl,
+			       contents + rel->r_offset + 4);
+		    }
+		  else
+		    {
+		      uint32_t b_bl = bfd_get (32, input_bfd,
+					       contents + rel->r_offset);
+		      /* b %plt(fn1) => jirl $zero,zero,0.  */
+		      if (LARCH_INSN_B (b_bl))
+			bfd_put (32, input_bfd, LARCH_OP_JIRL,
+				 contents + rel->r_offset);
+		      else
+		      /* bl %plt(fn1) => jirl $ra,zero,0.  */
+		      bfd_put (32, input_bfd, LARCH_OP_JIRL | 0x1,
+			       contents + rel->r_offset);
+		    }
+		  r = bfd_reloc_continue;
+		  break;
+		}
+	    }
+
+	  if (resolved_local)
+	    {
+	      relocation -= pc;
+	      relocation += rel->r_addend;
+	    }
+	  else if (resolved_dynly)
+	    {
+	      BFD_ASSERT (h
+			  && (h->plt.offset != MINUS_ONE
+			      || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
+			  && rel->r_addend == 0);
+	      if (h && h->plt.offset == MINUS_ONE
+		  && ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
+		{
+		  relocation -= pc;
+		  relocation += rel->r_addend;
+		}
+	      else
+		relocation = sec_addr (plt) + h->plt.offset - pc;
+	    }
+
+	  break;
+
+	case R_LARCH_ABS_HI20:
+	case R_LARCH_ABS_LO12:
+	case R_LARCH_ABS64_LO20:
+	case R_LARCH_ABS64_HI12:
+
+	  if (is_undefweak)
+	    {
+	      BFD_ASSERT (resolved_dynly);
+	      relocation = 0;
+	      break;
+	    }
+	  else if (resolved_to_const || resolved_local)
+	    {
+	      relocation += rel->r_addend;
+	    }
+	  else if (resolved_dynly)
+	    {
+	      unresolved_reloc = false;
+	      BFD_ASSERT ((plt && h && h->plt.offset != MINUS_ONE)
+			  && rel->r_addend == 0);
+	      relocation = sec_addr (plt) + h->plt.offset;
+	    }
+
+	  break;
+
+	case R_LARCH_PCALA64_HI12:
+	  pc -= 4;
+	  /* Fall through.  */
+	case R_LARCH_PCALA64_LO20:
+	  pc -= 8;
+	  /* Fall through.  */
+	case R_LARCH_PCREL20_S2:
+	case R_LARCH_PCALA_HI20:
+	  unresolved_reloc = false;
+
+	  /* If sym is undef weak and it's hidden or we are doing a static
+	     link, (sym + addend) should be resolved to runtime address
+	     (0 + addend).  */
+	  resolve_pcrel_undef_weak =
+	    ((info->nointerp
+	      || (h && ELF_ST_VISIBILITY (h->other) != STV_DEFAULT))
+	     && is_undefweak);
+
+	  if (resolve_pcrel_undef_weak)
+	    pc = 0;
+
+	  if (h && h->plt.offset != MINUS_ONE)
+	    relocation = sec_addr (plt) + h->plt.offset;
+	  else
+	    relocation += rel->r_addend;
+
+	  switch (r_type)
+	    {
+	    case R_LARCH_PCREL20_S2:
+	      relocation -= pc;
+	      if (resolve_pcrel_undef_weak)
+		{
+		  bfd_signed_vma addr = (bfd_signed_vma) relocation;
+		  if (addr >= 2048 || addr < -2048)
+		    {
+		      const char *msg =
+			_("cannot resolve R_LARCH_PCREL20_S2 against "
+			  "undefined weak symbol with addend out of "
+			  "[-2048, 2048)");
+		      fatal =
+			loongarch_reloc_is_fatal (info, input_bfd,
+						  input_section, rel,
+						  howto,
+						  bfd_reloc_notsupported,
+						  is_undefweak, name, msg);
+		      break;
+		    }
+
+		  uint32_t insn = bfd_get (32, input_bfd,
+					   contents + rel->r_offset);
+		  insn = LARCH_GET_RD (insn) | LARCH_OP_ADDI_W;
+		  insn |= (relocation & 0xfff) << 10;
+		  bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
+		  r = bfd_reloc_continue;
+		}
+	      break;
+	    case R_LARCH_PCALA_HI20:
+	      RELOCATE_CALC_PC32_HI20 (relocation, pc);
+	      if (resolve_pcrel_undef_weak)
+		{
+		  uint32_t insn = bfd_get (32, input_bfd,
+					   contents + rel->r_offset);
+		  insn = LARCH_GET_RD (insn) | LARCH_OP_LU12I_W;
+		  bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
+		}
+	      break;
+	    default:
+	      RELOCATE_CALC_PC64_HI32 (relocation, pc);
+	    }
+	  break;
+
+	case R_LARCH_TLS_LE_HI20_R:
+	  relocation += rel->r_addend;
+	  relocation = tlsoff (info, relocation);
+	  RELOCATE_TLS_TP32_HI20 (relocation);
+	  break;
+
+	case R_LARCH_PCALA_LO12:
+	  /* Not support if sym_addr in 2k page edge.
+	     pcalau12i pc_hi20 (sym_addr)
+	     ld.w/d pc_lo12 (sym_addr)
+	     ld.w/d pc_lo12 (sym_addr + x)
+	     ...
+	     can not calc correct address
+	     if sym_addr < 0x800 && sym_addr + x >= 0x800.  */
+
+	  if (h && h->plt.offset != MINUS_ONE)
+	    relocation = sec_addr (plt) + h->plt.offset;
+	  else
+	    relocation += rel->r_addend;
+
+	  /* For 2G jump, generate pcalau12i, jirl.  */
+	  /* If use jirl, turns to R_LARCH_B16.  */
+	  uint32_t insn = bfd_get (32, input_bfd, contents + rel->r_offset);
+	  if (LARCH_INSN_JIRL (insn))
+	    {
+	      relocation &= 0xfff;
+	      /* Signed extend.  */
+	      relocation = (relocation ^ 0x800) - 0x800;
+
+	      rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_B16);
+	      howto = loongarch_elf_rtype_to_howto (input_bfd, R_LARCH_B16);
+	    }
+	  break;
+
+	case R_LARCH_GOT_PC_HI20:
+	case R_LARCH_GOT_HI20:
+	  /* Calc got offset.  */
+	    {
+	      unresolved_reloc = false;
+	      BFD_ASSERT (rel->r_addend == 0);
+
+	      bfd_vma got_off = 0;
+	      if (h != NULL)
+		{
+		  /* GOT ref or ifunc.  */
+		  BFD_ASSERT (h->got.offset != MINUS_ONE
+			      || h->type == STT_GNU_IFUNC);
+
+		  got_off = h->got.offset  & (~(bfd_vma)1);
+		  /* Hidden symbol not has got entry,
+		   * only got.plt entry so it is (plt - got).  */
+		  if (h->got.offset == MINUS_ONE && h->type == STT_GNU_IFUNC)
+		    {
+		      bfd_vma idx;
+		      if (htab->elf.splt != NULL)
+			{
+			  idx = (h->plt.offset - PLT_HEADER_SIZE)
+			    / PLT_ENTRY_SIZE;
+			  got_off = sec_addr (htab->elf.sgotplt)
+			    + GOTPLT_HEADER_SIZE
+			    + (idx * GOT_ENTRY_SIZE)
+			    - sec_addr (htab->elf.sgot);
+			}
+		      else
+			{
+			  idx = h->plt.offset / PLT_ENTRY_SIZE;
+			  got_off = sec_addr (htab->elf.sgotplt)
+			    + (idx * GOT_ENTRY_SIZE)
+			    - sec_addr (htab->elf.sgot);
+			}
+		    }
+
+		  if ((h->got.offset & 1) == 0)
+		    {
+		      /* We need to generate a R_LARCH_RELATIVE reloc once
+		       * in loongarch_elf_finish_dynamic_symbol or now,
+		       * call finish_dyn && nopic
+		       * or !call finish_dyn && pic.  */
+		      if (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (is_dyn,
+							    bfd_link_pic (info),
+							    h)
+			  && !bfd_is_abs_section(h->root.u.def.section)
+			  && bfd_link_pic (info)
+			  && LARCH_REF_LOCAL (info, h)
+			  && !info->enable_dt_relr)
+			{
+			  Elf_Internal_Rela rela;
+			  rela.r_offset = sec_addr (got) + got_off;
+			  rela.r_info = ELFNN_R_INFO (0, R_LARCH_RELATIVE);
+			  rela.r_addend = relocation;
+			  loongarch_elf_append_rela (output_bfd,
+						     htab->elf.srelgot, &rela);
+			}
+		      h->got.offset |= 1;
+		      bfd_put_NN (output_bfd, relocation,
+				  got->contents + got_off);
+		    }
+		}
+	      else
+		{
+		  BFD_ASSERT (local_got_offsets
+			      && local_got_offsets[r_symndx] != MINUS_ONE);
+
+		  got_off = local_got_offsets[r_symndx] & (~(bfd_vma)1);
+		  if (sym->st_shndx != SHN_ABS
+		      && (local_got_offsets[r_symndx] & 1) == 0)
+		    {
+		      if (bfd_link_pic (info) && !info->enable_dt_relr)
+			{
+			  Elf_Internal_Rela rela;
+			  rela.r_offset = sec_addr (got) + got_off;
+			  rela.r_info = ELFNN_R_INFO (0, R_LARCH_RELATIVE);
+			  rela.r_addend = relocation;
+			  loongarch_elf_append_rela (output_bfd,
+						     htab->elf.srelgot, &rela);
+			}
+		      local_got_offsets[r_symndx] |= 1;
+		    }
+		  bfd_put_NN (output_bfd, relocation, got->contents + got_off);
+		}
+
+	      relocation = got_off + sec_addr (got);
+	    }
+
+	  if (r_type == R_LARCH_GOT_PC_HI20)
+	    RELOCATE_CALC_PC32_HI20 (relocation, pc);
+
+	  break;
+
+	case R_LARCH_GOT_PC_LO12:
+	case R_LARCH_GOT64_PC_LO20:
+	case R_LARCH_GOT64_PC_HI12:
+	case R_LARCH_GOT_LO12:
+	case R_LARCH_GOT64_LO20:
+	case R_LARCH_GOT64_HI12:
+	    {
+	      unresolved_reloc = false;
+	      bfd_vma got_off;
+	      if (h)
+		got_off = h->got.offset & (~(bfd_vma)1);
+	      else
+		got_off = local_got_offsets[r_symndx] & (~(bfd_vma)1);
+
+	      if (h && h->got.offset == MINUS_ONE && h->type == STT_GNU_IFUNC)
+		{
+		  bfd_vma idx;
+		  if (htab->elf.splt != NULL)
+		    idx = (h->plt.offset - PLT_HEADER_SIZE) / PLT_ENTRY_SIZE;
+		  else
+		    idx = h->plt.offset / PLT_ENTRY_SIZE;
+
+		  got_off = sec_addr (htab->elf.sgotplt)
+		    + GOTPLT_HEADER_SIZE
+		    + (idx * GOT_ENTRY_SIZE)
+		    - sec_addr (htab->elf.sgot);
+		}
+
+	      relocation = got_off + sec_addr (got);
+	    }
+
+	  if (r_type == R_LARCH_GOT64_PC_HI12)
+	    RELOCATE_CALC_PC64_HI32 (relocation, pc - 12);
+	  else if (r_type == R_LARCH_GOT64_PC_LO20)
+	    RELOCATE_CALC_PC64_HI32 (relocation, pc - 8);
+
+	  break;
+
+	case R_LARCH_TLS_LE_HI20:
+	case R_LARCH_TLS_LE_LO12:
+	case R_LARCH_TLS_LE_LO12_R:
+	case R_LARCH_TLS_LE64_LO20:
+	case R_LARCH_TLS_LE64_HI12:
+	  BFD_ASSERT (resolved_local && elf_hash_table (info)->tls_sec);
+
+	  relocation += rel->r_addend;
+	  relocation = tlsoff (info, relocation);
+	  break;
+
+	/* TLS IE LD/GD process separately is troublesome.
+	   When a symbol is both ie and LD/GD, h->got.off |= 1
+	   make only one type be relocated.  We must use
+	   h->got.offset |= 1 and h->got.offset |= 2
+	   diff IE and LD/GD.  And all (got_off & (~(bfd_vma)1))
+	   (IE LD/GD and reusable GOT reloc) must change to
+	   (got_off & (~(bfd_vma)3)), beause we use lowest 2 bits
+	   as a tag.
+	   Now, LD and GD is both GOT_TLS_GD type, LD seems to
+	   can be omitted.  */
+	case R_LARCH_TLS_IE_PC_HI20:
+	case R_LARCH_TLS_IE_HI20:
+	case R_LARCH_TLS_LD_PC_HI20:
+	case R_LARCH_TLS_LD_HI20:
+	case R_LARCH_TLS_GD_PC_HI20:
+	case R_LARCH_TLS_GD_HI20:
+	case R_LARCH_TLS_DESC_PC_HI20:
+	case R_LARCH_TLS_DESC_HI20:
+	case R_LARCH_TLS_LD_PCREL20_S2:
+	case R_LARCH_TLS_GD_PCREL20_S2:
+	case R_LARCH_TLS_DESC_PCREL20_S2:
+	  BFD_ASSERT (rel->r_addend == 0);
+	  unresolved_reloc = false;
+
+	  if (r_type == R_LARCH_TLS_IE_PC_HI20
+	      || r_type == R_LARCH_TLS_IE_HI20)
+	    is_ie = true;
+
+	  if (r_type == R_LARCH_TLS_DESC_PC_HI20
+	      || r_type == R_LARCH_TLS_DESC_HI20
+	      || r_type == R_LARCH_TLS_DESC_PCREL20_S2)
+	    is_desc = true;
+
+	  bfd_vma got_off = 0;
+	  if (h != NULL)
+	    {
+	      got_off = h->got.offset;
+	      h->got.offset |= 1;
+	    }
+	  else
+	    {
+	      got_off = local_got_offsets[r_symndx];
+	      local_got_offsets[r_symndx] |= 1;
+	    }
+
+	  BFD_ASSERT (got_off != MINUS_ONE);
+
+	  tls_type = _bfd_loongarch_elf_tls_type (input_bfd, h, r_symndx);
+
+	  /* If a tls variable is accessed in multiple ways, GD uses
+	     the first two slots of GOT, desc follows with two slots,
+	     and IE uses one slot at the end.  */
+	  off = 0;
+	  if (tls_type & GOT_TLS_GD)
+	    off += 2 * GOT_ENTRY_SIZE;
+	  desc_off = off;
+	  if (tls_type & GOT_TLS_GDESC)
+	    off += 2 * GOT_ENTRY_SIZE;
+	  ie_off = off;
+
+	  if ((got_off & 1) == 0)
+	    {
+	      Elf_Internal_Rela rela;
+	      asection *relgot = htab->elf.srelgot;
+
+	      int indx = 0;
+	      bool need_reloc = false;
+	      LARCH_TLS_GD_IE_NEED_DYN_RELOC (info, is_dyn, h, indx,
+					      need_reloc);
+
+	      if (tls_type & GOT_TLS_GD)
+		{
+		  if (need_reloc)
+		    {
+		  /* Dynamic resolved Module ID.  */
+		      rela.r_offset = sec_addr (got) + got_off;
+		      rela.r_addend = 0;
+		      rela.r_info = ELFNN_R_INFO (indx,R_LARCH_TLS_DTPMODNN);
+		      bfd_put_NN (output_bfd, 0, got->contents + got_off);
+		      loongarch_elf_append_rela (output_bfd, relgot, &rela);
+
+		      if (indx == 0)
+			{
+			  /* Local symbol, tp offset has been known.  */
+			  BFD_ASSERT (! unresolved_reloc);
+			  bfd_put_NN (output_bfd,
+			      tlsoff (info, relocation),
+			      (got->contents + got_off + GOT_ENTRY_SIZE));
+			}
+		      else
+			{
+			  /* Dynamic resolved block offset.  */
+			  bfd_put_NN (output_bfd, 0,
+			      got->contents + got_off + GOT_ENTRY_SIZE);
+			  rela.r_info = ELFNN_R_INFO (indx,
+						R_LARCH_TLS_DTPRELNN);
+			  rela.r_offset += GOT_ENTRY_SIZE;
+			  loongarch_elf_append_rela (output_bfd, relgot, &rela);
+			}
+		    }
+		  else
+		    {
+		      /* In a static link or an executable link with the symbol
+			 binding locally.  Mark it as belonging to module 1.  */
+		      bfd_put_NN (output_bfd, 1, got->contents + got_off);
+		      bfd_put_NN (output_bfd, tlsoff (info, relocation),
+			  got->contents + got_off + GOT_ENTRY_SIZE);
+		    }
+		}
+	      if (tls_type & GOT_TLS_GDESC)
+		{
+		  /* Unless it is a static link, DESC always emits a
+		     dynamic relocation.  */
+		  indx = h && h->dynindx != -1 ? h->dynindx : 0;
+		  rela.r_offset = sec_addr (got) + got_off + desc_off;
+		  rela.r_addend = 0;
+		  if (indx == 0)
+		    rela.r_addend = tlsoff (info, relocation);
+
+		  rela.r_info = ELFNN_R_INFO (indx, R_LARCH_TLS_DESCNN);
+		  loongarch_elf_append_rela (output_bfd, relgot, &rela);
+		  bfd_put_NN (output_bfd, 0,
+			      got->contents + got_off + desc_off);
+		}
+	      if (tls_type & GOT_TLS_IE)
+		{
+		  if (need_reloc)
+		    {
+		      bfd_put_NN (output_bfd, 0,
+			  got->contents + got_off + ie_off);
+		      rela.r_offset = sec_addr (got) + got_off + ie_off;
+		      rela.r_addend = 0;
+
+		      if (indx == 0)
+			rela.r_addend = tlsoff (info, relocation);
+		      rela.r_info = ELFNN_R_INFO (indx, R_LARCH_TLS_TPRELNN);
+		      loongarch_elf_append_rela (output_bfd, relgot, &rela);
+		    }
+		  else
+		    {
+		      /* In a static link or an executable link with the symbol
+			 bindinglocally, compute offset directly.  */
+		      bfd_put_NN (output_bfd, tlsoff (info, relocation),
+			  got->contents + got_off + ie_off);
+		    }
+		}
+	    }
+	  relocation = (got_off & (~(bfd_vma)1)) + sec_addr (got);
+	  if (is_desc)
+	    relocation += desc_off;
+	  else if (is_ie)
+	    relocation += ie_off;
+
+	  if (r_type == R_LARCH_TLS_LD_PC_HI20
+	      || r_type == R_LARCH_TLS_GD_PC_HI20
+	      || r_type == R_LARCH_TLS_IE_PC_HI20
+	      || r_type == R_LARCH_TLS_DESC_PC_HI20)
+	    RELOCATE_CALC_PC32_HI20 (relocation, pc);
+	  else if (r_type == R_LARCH_TLS_LD_PCREL20_S2
+	      || r_type == R_LARCH_TLS_GD_PCREL20_S2
+	      || r_type == R_LARCH_TLS_DESC_PCREL20_S2)
+	    relocation -= pc;
+	  /* else {} ABS relocations.  */
+	  break;
+
+	case R_LARCH_TLS_DESC_PC_LO12:
+	case R_LARCH_TLS_DESC64_PC_LO20:
+	case R_LARCH_TLS_DESC64_PC_HI12:
+	case R_LARCH_TLS_DESC_LO12:
+	case R_LARCH_TLS_DESC64_LO20:
+	case R_LARCH_TLS_DESC64_HI12:
+	  {
+	    unresolved_reloc = false;
+
+	    if (h)
+	      relocation = sec_addr (got) + (h->got.offset & (~(bfd_vma)1));
+	    else
+	      relocation = sec_addr (got)
+			   + (local_got_offsets[r_symndx] & (~(bfd_vma)1));
+
+	    tls_type = _bfd_loongarch_elf_tls_type (input_bfd, h, r_symndx);
+	    /* Use both TLS_GD and TLS_DESC.  */
+	    if (GOT_TLS_GD_BOTH_P (tls_type))
+	      relocation += 2 * GOT_ENTRY_SIZE;
+
+	    if (r_type == R_LARCH_TLS_DESC64_PC_LO20)
+	      RELOCATE_CALC_PC64_HI32 (relocation, pc - 8);
+	    else if (r_type == R_LARCH_TLS_DESC64_PC_HI12)
+	      RELOCATE_CALC_PC64_HI32 (relocation, pc - 12);
+
+	    break;
+	  }
+
+	case R_LARCH_TLS_DESC_LD:
+	case R_LARCH_TLS_DESC_CALL:
+	  unresolved_reloc = false;
+	  break;
+
+	case R_LARCH_TLS_IE_PC_LO12:
+	case R_LARCH_TLS_IE64_PC_LO20:
+	case R_LARCH_TLS_IE64_PC_HI12:
+	case R_LARCH_TLS_IE_LO12:
+	case R_LARCH_TLS_IE64_LO20:
+	case R_LARCH_TLS_IE64_HI12:
+	  unresolved_reloc = false;
+
+	  if (h)
+	    relocation = sec_addr (got) + (h->got.offset & (~(bfd_vma)1));
+	  else
+	    relocation = sec_addr (got)
+	      + (local_got_offsets[r_symndx] & (~(bfd_vma)1));
+
+	  tls_type = _bfd_loongarch_elf_tls_type (input_bfd, h, r_symndx);
+	  /* Use TLS_GD TLS_DESC and TLS_IE.  */
+	  if (GOT_TLS_GD_BOTH_P (tls_type) && (tls_type & GOT_TLS_IE))
+	    relocation += 4 * GOT_ENTRY_SIZE;
+	  /* Use GOT_TLS_GD_ANY_P (tls_type) and TLS_IE.  */
+	  else if (GOT_TLS_GD_ANY_P (tls_type) && (tls_type & GOT_TLS_IE))
+	    relocation += 2 * GOT_ENTRY_SIZE;
+
+	  if (r_type == R_LARCH_TLS_IE64_PC_LO20)
+	    RELOCATE_CALC_PC64_HI32 (relocation, pc - 8);
+	  else if (r_type == R_LARCH_TLS_IE64_PC_HI12)
+	    RELOCATE_CALC_PC64_HI32 (relocation, pc - 12);
+
+	  break;
+
+	case R_LARCH_RELAX:
+	case R_LARCH_ALIGN:
+	  r = bfd_reloc_continue;
+	  unresolved_reloc = false;
+	  break;
+
+	default:
+	  break;
+	}
+
+      if (fatal)
+	break;
+
+      do
+	{
+	  /* 'unresolved_reloc' means we haven't done it yet.
+	     We need help of dynamic linker to fix this memory location up.  */
+	  if (!unresolved_reloc)
+	    break;
+
+	  if (_bfd_elf_section_offset (output_bfd, info, input_section,
+				       rel->r_offset) == MINUS_ONE)
+	    /* WHY? May because it's invalid so skip checking.
+	       But why dynamic reloc a invalid section?  */
+	    break;
+
+	  if (input_section->output_section->flags & SEC_DEBUGGING)
+	    {
+	      fatal = (loongarch_reloc_is_fatal
+		       (info, input_bfd, input_section, rel, howto,
+			bfd_reloc_dangerous, is_undefweak, name,
+			"Seems dynamic linker not process "
+			"sections 'SEC_DEBUGGING'."));
+	    }
+	  if (!is_dyn)
+	    break;
+
+	  if ((info->flags & DF_TEXTREL) == 0)
+	    if (input_section->output_section->flags & SEC_READONLY)
+	      info->flags |= DF_TEXTREL;
+	}
+      while (0);
+
+      if (fatal)
+	break;
+
+      loongarch_record_one_reloc (input_bfd, input_section, r_type,
+				  rel->r_offset, sym, h, rel->r_addend);
+
+      if (r != bfd_reloc_continue)
+	r = perform_relocation (rel, input_section, howto, relocation,
+				input_bfd, contents);
+
+      switch (r)
+	{
+	case bfd_reloc_dangerous:
+	case bfd_reloc_continue:
+	case bfd_reloc_ok:
+	  continue;
+
+	case bfd_reloc_overflow:
+	  /* Overflow value can't be filled in.  */
+	  loongarch_dump_reloc_record (info->callbacks->info);
+	  info->callbacks->reloc_overflow
+	    (info, h ? &h->root : NULL, name, howto->name, rel->r_addend,
+	     input_bfd, input_section, rel->r_offset);
+	  if (r_type == R_LARCH_PCREL20_S2
+	      || r_type == R_LARCH_TLS_LD_PCREL20_S2
+	      || r_type == R_LARCH_TLS_GD_PCREL20_S2
+	      || r_type == R_LARCH_TLS_DESC_PCREL20_S2)
+	    _bfd_error_handler (_("recompile with 'gcc -mno-relax' or"
+				  " 'as -mno-relax' or 'ld --no-relax'"));
+	  break;
+
+	case bfd_reloc_outofrange:
+	  /* Stack state incorrect.  */
+	  loongarch_dump_reloc_record (info->callbacks->info);
+	  info->callbacks->info
+	    ("%X%H: Internal stack state is incorrect.\n"
+	     "Want to push to full stack or pop from empty stack?\n",
+	     input_bfd, input_section, rel->r_offset);
+	  break;
+
+	case bfd_reloc_notsupported:
+	  info->callbacks->info ("%X%H: Unknown relocation type.\n", input_bfd,
+				 input_section, rel->r_offset);
+	  break;
+
+	default:
+	  info->callbacks->info ("%X%H: Internal: unknown error.\n", input_bfd,
+				 input_section, rel->r_offset);
+	  break;
+	}
+
+      fatal = true;
+    }
+
+  return !fatal;
+}
+
+/* A pending delete op during a linker relaxation trip, to be stored in a
+   splay tree.
+   The key is the starting offset of this op's deletion range, interpreted
+   as if no delete op were executed for this trip.  */
+struct pending_delete_op
+{
+  /* Number of bytes to delete at the address.  */
+  bfd_size_type size;
+
+  /* The total offset adjustment at the address as if all preceding delete
+     ops had been executed.  Used for calculating expected addresses after
+     relaxation without actually adjusting anything.  */
+  bfd_size_type cumulative_offset;
+};
+
+static int
+pending_delete_op_compare (splay_tree_key a, splay_tree_key b)
+{
+  bfd_vma off_a = (bfd_vma)a;
+  bfd_vma off_b = (bfd_vma)b;
+
+  if (off_a < off_b)
+    return -1;
+  else if (off_a > off_b)
+    return 1;
+  else
+    return 0;
+}
+
+static void *
+_allocate_on_bfd (int wanted, void *data)
+{
+  bfd *abfd = (bfd *)data;
+  return bfd_alloc (abfd, wanted);
+}
+
+static void
+_deallocate_on_bfd (void *p ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED)
+{
+  /* Nothing to do; the data will get released along with the associated BFD
+     or an early bfd_release call.  */
+}
+
+static splay_tree
+pending_delete_ops_new (bfd *abfd)
+{
+  /* The node values are allocated with bfd_zalloc, so they are automatically
+     taken care of at BFD release time.  */
+  return splay_tree_new_with_allocator (pending_delete_op_compare, NULL, NULL,
+      _allocate_on_bfd, _deallocate_on_bfd, abfd);
+}
+
+static bfd_vma
+loongarch_calc_relaxed_addr (struct bfd_link_info *info, bfd_vma offset)
+{
+  struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (info);
+  splay_tree pdops = htab->pending_delete_ops;
+  struct pending_delete_op *op;
+  splay_tree_node node;
+
+  if (!pdops)
+    /* Currently this means we are past the stages where byte deletion could
+       possibly happen.  */
+    return offset;
+
+  /* Find the op that starts just before the given address.  */
+  node = splay_tree_predecessor (pdops, (splay_tree_key)offset);
+  if (node == NULL)
+    /* Nothing has been deleted yet.  */
+    return offset;
+  BFD_ASSERT (((bfd_vma)node->key) < offset);
+  op = (struct pending_delete_op *)node->value;
+
+  /* If offset is inside this op's range, it is actually one of the deleted
+     bytes, so the adjusted node->key should be returned in this case.  */
+  bfd_vma op_end_off = (bfd_vma)node->key + op->size;
+  if (offset < op_end_off)
+    {
+      offset = (bfd_vma)node->key;
+      node = splay_tree_predecessor (pdops, node->key);
+      op = node ? (struct pending_delete_op *)node->value : NULL;
+    }
+
+  return offset - (op ? op->cumulative_offset : 0);
+}
+
+static void
+loongarch_relax_delete_bytes (bfd *abfd,
+			      bfd_vma addr,
+			      size_t count,
+			      struct bfd_link_info *link_info)
+{
+  struct loongarch_elf_link_hash_table *htab
+      = loongarch_elf_hash_table (link_info);
+  splay_tree pdops = htab->pending_delete_ops;
+  splay_tree_node node;
+  struct pending_delete_op *op = NULL, *new_op = NULL;
+  bool need_new_node = true;
+
+  if (count == 0)
+    return;
+
+  BFD_ASSERT (pdops != NULL);
+
+  node = splay_tree_predecessor (pdops, addr);
+  if (node)
+    {
+      op = (struct pending_delete_op *)node->value;
+      if ((bfd_vma)node->key + op->size >= addr)
+	{
+	  /* The previous op already covers this offset, coalesce the new op
+	     into it.  */
+	  op->size += count;
+	  op->cumulative_offset += count;
+	  need_new_node = false;
+	}
+    }
+
+  if (need_new_node)
+    {
+      new_op = bfd_zalloc (abfd, sizeof (struct pending_delete_op));
+      new_op->size = count;
+      new_op->cumulative_offset = (op ? op->cumulative_offset : 0) + count;
+      node = splay_tree_insert (pdops, (splay_tree_key)addr,
+				(splay_tree_value)new_op);
+    }
+
+  /* Adjust all cumulative offsets after this op.  At this point either:
+     - a new node is created, in which case `node` has been updated with the
+       new value, or
+     - an existing node is to be reused, in which case `node` is untouched by
+       the new node logic above and appropriate to use,
+     so we can just re-use `node` here.  */
+  for (node = splay_tree_successor (pdops, node->key); node != NULL;
+       node = splay_tree_successor (pdops, node->key))
+    {
+      op = (struct pending_delete_op *)node->value;
+      op->cumulative_offset += count;
+    }
+}
+
+static void
+loongarch_relax_delete_or_nop (bfd *abfd,
+			       asection *sec,
+			       bfd_vma addr,
+			       size_t count,
+			       struct bfd_link_info *link_info)
+{
+  struct bfd_elf_section_data *data = elf_section_data (sec);
+  bfd_byte *contents = data->this_hdr.contents;
+
+  BFD_ASSERT (count % 4 == 0);
+
+  if (!loongarch_sec_closed_for_deletion (sec))
+    {
+      /* Deletions are still possible within the section.  */
+      loongarch_relax_delete_bytes (abfd, addr, count, link_info);
+      return;
+    }
+
+  /* We can no longer delete bytes in the section after enforcing alignment.
+     But as the resulting shrinkage may open up a few more relaxation chances,
+     allowing unnecessary instructions to be replaced with NOPs instead of
+     being removed altogether may still benefit performance to a lesser
+     extent.  */
+  for (; count; addr += 4, count -= 4)
+    bfd_put (32, abfd, LARCH_NOP, contents + addr);
+}
+
+/* If some bytes in a symbol is deleted, we need to adjust its size.  */
+static void
+loongarch_relax_resize_symbol (bfd_size_type *size, bfd_vma orig_value,
+			       splay_tree pdops)
+{
+  splay_tree_key key = (splay_tree_key)orig_value;
+  bfd_vma orig_end = orig_value + *size;
+  splay_tree_node node = splay_tree_predecessor (pdops, key);
+
+  if (node)
+    {
+      bfd_vma addr = (bfd_vma)node->key;
+      struct pending_delete_op *op = (struct pending_delete_op *)node->value;
+
+      /* This shouldn't happen unless people write something really insane like
+	     .reloc ., R_LARCH_ALIGN, 60
+	     .rept 15
+	     1: nop
+	     .endr
+	     .set x, 1b
+	     .size x, . - 1b
+	 But let's just try to make it "work" anyway.  */
+      if (orig_value < addr + op->size)
+	{
+	  bfd_size_type n_deleted = op->size - (orig_value - addr);
+	  if (n_deleted >= *size)
+	    {
+	      *size = 0;
+	      return;
+	    }
+
+	  *size -= n_deleted;
+	}
+    }
+
+  node = splay_tree_lookup (pdops, key);
+  if (!node)
+    node = splay_tree_successor (pdops, key);
+
+  for (; node; node = splay_tree_successor (pdops, node->key))
+    {
+      bfd_vma addr = (bfd_vma)node->key;
+      struct pending_delete_op *op = (struct pending_delete_op *)node->value;
+
+      if (addr >= orig_end)
+	return;
+
+      if (orig_end < addr + op->size)
+	*size -= orig_end - addr;
+      else
+	*size -= op->size;
+    }
+}
+
+static void
+loongarch_relax_perform_deletes (bfd *abfd, asection *sec,
+				 struct bfd_link_info *link_info)
+{
+  unsigned int i, symcount;
+  bfd_vma toaddr = sec->size;
+  struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (abfd);
+  Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+  unsigned int sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
+  struct bfd_elf_section_data *data = elf_section_data (sec);
+  bfd_byte *contents = data->this_hdr.contents, *contents_end = NULL;
+  struct relr_entry *relr = loongarch_elf_section_data (sec)->relr;
+  struct loongarch_elf_link_hash_table *htab =
+    loongarch_elf_hash_table (link_info);
+  struct relr_entry *relr_end = NULL;
+  splay_tree pdops = htab->pending_delete_ops;
+  splay_tree_node node1 = NULL, node2 = NULL;
+
+  if (htab->relr_count)
+    relr_end = htab->relr + htab->relr_count;
+
+  BFD_ASSERT (pdops != NULL);
+  node1 = splay_tree_min (pdops);
+
+  if (node1 == NULL)
+    /* No pending delete ops, nothing to do.  */
+    return;
+
+  /* Actually delete the bytes.  For each delete op the pointer arithmetics
+     look like this:
+
+	     node1->key -\			/- node2->key
+			 |<- op1->size ->|      |
+			 v		 v      v
+	...-DDDDDD-------xxxxxxxxxxxxxxxxxSSSSSSxxxxxxxxxx----...
+	    ^     ^			  ^
+	    contents_end		  node1->key + op1->size
+		  |
+		  contents_end after this memmove
+
+     where the "S" and "D" bytes are the memmove's source and destination
+     respectively.  In case node1 is the first op, contents_end is initialized
+     to the op's start; in case node2 == NULL, the chunk's end is the section's
+     end.  The contents_end pointer will be bumped to the new end of content
+     after each memmove.  As no byte is added during the process, it is
+     guaranteed to trail behind the delete ops, and all bytes overwritten are
+     either already copied by an earlier memmove or meant to be discarded.
+
+     For memmove, we need to translate offsets to pointers by adding them to
+     `contents`.  */
+  for (; node1; node1 = node2)
+    {
+      struct pending_delete_op *op1 = (struct pending_delete_op *)node1->value;
+      bfd_vma op1_start_off = (bfd_vma)node1->key;
+      bfd_vma op1_end_off = op1_start_off + op1->size;
+      node2 = splay_tree_successor (pdops, node1->key);
+      bfd_vma op2_start_off = node2 ? (bfd_vma)node2->key : toaddr;
+      bfd_size_type count = op2_start_off - op1_end_off;
+
+      if (count)
+	{
+	  if (contents_end == NULL)
+	    /* Start from the end of the first unmodified content chunk.  */
+	    contents_end = contents + op1_start_off;
+
+	  memmove (contents_end, contents + op1_end_off, count);
+	  contents_end += count;
+	}
+
+      /* Adjust the section size once, when we have reached the end.  */
+      if (node2 == NULL)
+	sec->size -= op1->cumulative_offset;
+    }
+
+  /* Adjust the location of all of the relocs.  Note that we need not
+     adjust the addends, since all PC-relative references must be against
+     symbols, which we will adjust below.  */
+  for (i = 0; i < sec->reloc_count; i++)
+    if (data->relocs[i].r_offset < toaddr)
+      data->relocs[i].r_offset = loongarch_calc_relaxed_addr (
+	  link_info, data->relocs[i].r_offset);
+
+  /* Likewise for relative relocs to be packed into .relr.  */
+  for (; relr && relr < relr_end && relr->sec == sec; relr++)
+    if (relr->off < toaddr)
+      relr->off = loongarch_calc_relaxed_addr (link_info, relr->off);
+
+  /* Adjust the local symbols defined in this section.  */
+  for (i = 0; i < symtab_hdr->sh_info; i++)
+    {
+      Elf_Internal_Sym *sym = (Elf_Internal_Sym *) symtab_hdr->contents + i;
+      if (sym->st_shndx == sec_shndx)
+	{
+	  bfd_vma orig_value = sym->st_value;
+	  if (orig_value <= toaddr)
+	    sym->st_value
+		= loongarch_calc_relaxed_addr (link_info, orig_value);
+
+	  if (orig_value + sym->st_size <= toaddr)
+	    loongarch_relax_resize_symbol (&sym->st_size, orig_value, pdops);
+	}
+    }
+
+  /* Now adjust the global symbols defined in this section.  */
+  symcount = ((symtab_hdr->sh_size / sizeof (ElfNN_External_Sym))
+	      - symtab_hdr->sh_info);
+
+  for (i = 0; i < symcount; i++)
+    {
+      struct elf_link_hash_entry *sym_hash = sym_hashes[i];
+
+      /* The '--wrap SYMBOL' option is causing a pain when the object file,
+	 containing the definition of __wrap_SYMBOL, includes a direct
+	 call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference
+	 the same symbol (which is __wrap_SYMBOL), but still exist as two
+	 different symbols in 'sym_hashes', we don't want to adjust
+	 the global symbol __wrap_SYMBOL twice.
+
+	 The same problem occurs with symbols that are versioned_hidden, as
+	 foo becomes an alias for foo@BAR, and hence they need the same
+	 treatment.  */
+      if (link_info->wrap_hash != NULL
+	  || sym_hash->versioned != unversioned)
+	{
+	  struct elf_link_hash_entry **cur_sym_hashes;
+
+	  /* Loop only over the symbols which have already been checked.  */
+	  for (cur_sym_hashes = sym_hashes; cur_sym_hashes < &sym_hashes[i];
+	       cur_sym_hashes++)
+	    {
+	      /* If the current symbol is identical to 'sym_hash', that means
+		 the symbol was already adjusted (or at least checked).  */
+	      if (*cur_sym_hashes == sym_hash)
+		break;
+	    }
+	  /* Don't adjust the symbol again.  */
+	  if (cur_sym_hashes < &sym_hashes[i])
+	    continue;
+	}
+
+      if ((sym_hash->root.type == bfd_link_hash_defined
+	   || sym_hash->root.type == bfd_link_hash_defweak)
+	  && sym_hash->root.u.def.section == sec)
+	{
+	  bfd_vma orig_value = sym_hash->root.u.def.value;
+
+	  /* As above, adjust the value and size.  */
+	  if (orig_value <= toaddr)
+	    sym_hash->root.u.def.value
+		= loongarch_calc_relaxed_addr (link_info, orig_value);
+
+	  if (orig_value + sym_hash->size <= toaddr)
+	    loongarch_relax_resize_symbol (&sym_hash->size, orig_value, pdops);
+	}
+    }
+}
+
+/* Start perform TLS type transition.
+   Currently there are three cases of relocation handled here:
+   DESC -> IE, DEC -> LE and IE -> LE.  */
+static bool
+loongarch_tls_perform_trans (bfd *abfd, asection *sec,
+			   Elf_Internal_Rela *rel,
+			   struct elf_link_hash_entry *h,
+			   struct bfd_link_info *info)
+{
+  unsigned long insn;
+  bool local_exec = bfd_link_executable (info)
+		      && LARCH_REF_LOCAL (info, h);
+  bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
+  unsigned long r_type = ELFNN_R_TYPE (rel->r_info);
+  unsigned long r_symndx = ELFNN_R_SYM (rel->r_info);
+
+  switch (r_type)
+    {
+      case R_LARCH_TLS_DESC_PC_HI20:
+	if (local_exec)
+	  {
+	    /* DESC -> LE relaxation:
+	       pcalalau12i $a0,%desc_pc_hi20(var) =>
+	       lu12i.w $a0,%le_hi20(var)
+	    */
+	    bfd_put (32, abfd, LARCH_OP_LU12I_W | LARCH_RD_A0,
+		contents + rel->r_offset);
+	    rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_TLS_LE_HI20);
+	  }
+	else
+	  {
+	    /* DESC -> IE relaxation:
+	       pcalalau12i $a0,%desc_pc_hi20(var) =>
+	       pcalalau12i $a0,%ie_pc_hi20(var)
+	    */
+	    rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_TLS_IE_PC_HI20);
+	  }
+	return true;
+
+      case R_LARCH_TLS_DESC_PC_LO12:
+	if (local_exec)
+	  {
+	    /* DESC -> LE relaxation:
+	       addi.d $a0,$a0,%desc_pc_lo12(var) =>
+	       ori  $a0,$a0,le_lo12(var)
+	    */
+	    insn = LARCH_OP_ORI | LARCH_RD_RJ_A0;
+	    bfd_put (32, abfd, LARCH_OP_ORI | LARCH_RD_RJ_A0,
+		contents + rel->r_offset);
+	    rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_TLS_LE_LO12);
+	  }
+	else
+	  {
+	    /* DESC -> IE relaxation:
+	       addi.d $a0,$a0,%desc_pc_lo12(var) =>
+	       ld.d $a0,$a0,%ie_pc_lo12(var)
+	    */
+	    bfd_put (32, abfd, LARCH_OP_LD_D | LARCH_RD_RJ_A0,
+		contents + rel->r_offset);
+	    rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_TLS_IE_PC_LO12);
+	  }
+	return true;
+
+      case R_LARCH_TLS_DESC_LD:
+      case R_LARCH_TLS_DESC_CALL:
+	/* DESC -> LE/IE relaxation:
+	   ld.d $ra,$a0,%desc_ld(var) => NOP
+	   jirl $ra,$ra,%desc_call(var) => NOP
+	*/
+	rel->r_info = ELFNN_R_INFO (0, R_LARCH_NONE);
+	bfd_put (32, abfd, LARCH_NOP, contents + rel->r_offset);
+	/* link with -relax option will delete NOP.  */
+	if (!info->disable_target_specific_optimizations)
+	  loongarch_relax_delete_or_nop (abfd, sec, rel->r_offset, 4, info);
+	return true;
+
+      case R_LARCH_TLS_IE_PC_HI20:
+	if (local_exec)
+	  {
+	    /* IE -> LE relaxation:
+	       pcalalau12i $rd,%ie_pc_hi20(var) =>
+	       lu12i.w $rd,%le_hi20(var)
+	    */
+	    insn = bfd_getl32 (contents + rel->r_offset);
+	    bfd_put (32, abfd, LARCH_OP_LU12I_W | LARCH_GET_RD(insn),
+		contents + rel->r_offset);
+	    rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_TLS_LE_HI20);
+	  }
+	return true;
+
+      case R_LARCH_TLS_IE_PC_LO12:
+	if (local_exec)
+	  {
+	    /* IE -> LE relaxation:
+	       ld.d $rd,$rj,%%ie_pc_lo12(var) =>
+	       ori  $rd,$rj,le_lo12(var)
+	    */
+	    insn = bfd_getl32 (contents + rel->r_offset);
+	    bfd_put (32, abfd, LARCH_OP_ORI | (insn & 0x3ff),
+		contents + rel->r_offset);
+	    rel->r_info = ELFNN_R_INFO (r_symndx, R_LARCH_TLS_LE_LO12);
+	  }
+	return true;
+    }
+
+  return false;
+}
+
+
+/*  Relax tls le, mainly relax the process of getting TLS le symbolic addresses.
+  there are three situations in which an assembly instruction sequence needs to
+  be relaxed:
+  symbol address = tp + offset (symbol),offset (symbol) = le_hi20_r + le_lo12_r
+
+  Case 1:
+  in this case, the rd register in the st.{w/d} instruction does not store the
+  full tls symbolic address, but tp + le_hi20_r, which is a part of the tls
+  symbolic address, and then obtains the rd + le_lo12_r address through the
+  st.w instruction feature.
+  this is the full tls symbolic address (tp + le_hi20_r + le_lo12_r).
+
+  before relax:				after relax:
+
+  lu12i.w   $rd,%le_hi20_r (sym)	==> (instruction deleted)
+  add.{w/d} $rd,$rd,$tp,%le_add_r (sym) ==> (instruction deleted)
+  st.{w/d}  $rs,$rd,%le_lo12_r (sym)    ==> st.{w/d}   $rs,$tp,%le_lo12_r (sym)
+
+  Case 2:
+  in this case, ld.{w/d} is similar to st.{w/d} in case1.
+
+  before relax:				after relax:
+
+  lu12i.w   $rd,%le_hi20_r (sym)	==> (instruction deleted)
+  add.{w/d} $rd,$rd,$tp,%le_add_r (sym) ==> (instruction deleted)
+  ld.{w/d}  $rs,$rd,%le_lo12_r (sym)    ==> ld.{w/d}   $rs,$tp,%le_lo12_r (sym)
+
+  Case 3:
+  in this case,the rs register in addi.{w/d} stores the full address of the tls
+  symbol (tp + le_hi20_r + le_lo12_r).
+
+  before relax:				after relax:
+
+  lu12i.w    $rd,%le_hi20_r (sym)	 ==> (instruction deleted)
+  add.{w/d}  $rd,$rd,$tp,%le_add_r (sym) ==> (instruction deleted)
+  addi.{w/d} $rs,$rd,%le_lo12_r (sym)    ==> addi.{w/d} $rs,$tp,%le_lo12_r (sym)
+
+
+  For relocation of all old LE instruction sequences, whether it is
+  a normal code model or an extreme code model, relaxation will be
+  performed when the relaxation conditions are met.
+
+  nomal code model:
+  lu12i.w   $rd,%le_hi20(sym)	    => (deleted)
+  ori	    $rd,$rd,le_lo12(sym)    => ori  $rd,$zero,le_lo12(sym)
+
+  extreme code model:
+  lu12i.w   $rd,%le_hi20(sym)	    => (deleted)
+  ori	    $rd,$rd,%le_lo12(sym)   => ori  $rd,$zero,le_lo12(sym)
+  lu32i.d   $rd,%le64_lo20(sym)	    => (deleted)
+  lu52i.d   $rd,$rd,%le64_hi12(sym) => (deleted)
+*/
+static bool
+loongarch_relax_tls_le (bfd *abfd, asection *sec, asection *sym_sec,
+			Elf_Internal_Rela *rel, bfd_vma symval,
+			struct bfd_link_info *link_info,
+			bool *agin ATTRIBUTE_UNUSED,
+			bfd_vma max_alignment ATTRIBUTE_UNUSED)
+{
+  bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
+  uint32_t insn = bfd_get (32, abfd, contents + rel->r_offset);
+  static uint32_t insn_rj,insn_rd;
+  symval = symval - elf_hash_table (link_info)->tls_sec->vma;
+  if (sym_sec == sec)
+    symval = loongarch_calc_relaxed_addr (link_info, symval);
+  /* The old LE instruction sequence can be relaxed when the symbol offset
+     is smaller than the 12-bit range.  */
+  if (symval <= 0xfff)
+    {
+      switch (ELFNN_R_TYPE (rel->r_info))
+	{
+	  /*if offset < 0x800, then perform the new le instruction
+	    sequence relax.  */
+	  case R_LARCH_TLS_LE_HI20_R:
+	  case R_LARCH_TLS_LE_ADD_R:
+	    /* delete insn.  */
+	    if (symval < 0x800)
+	      {
+		rel->r_info = ELFNN_R_INFO (0, R_LARCH_NONE);
+		loongarch_relax_delete_or_nop (abfd, sec, rel->r_offset,
+		    4, link_info);
+	      }
+	    break;
+
+	  case R_LARCH_TLS_LE_LO12_R:
+	    if (symval < 0x800)
+	      {
+		/* Change rj to $tp.  */
+		insn_rj = 0x2 << 5;
+		/* Get rd register.  */
+		insn_rd = LARCH_GET_RD (insn);
+		/* Write symbol offset.  */
+		symval <<= 10;
+		/* Writes the modified instruction.  */
+		insn = insn & LARCH_MK_ADDI_D;
+		insn = insn | symval | insn_rj | insn_rd;
+		bfd_put (32, abfd, insn, contents + rel->r_offset);
+	      }
+	    break;
+
+	  case R_LARCH_TLS_LE_HI20:
+	  case R_LARCH_TLS_LE64_LO20:
+	  case R_LARCH_TLS_LE64_HI12:
+	    rel->r_info = ELFNN_R_INFO (0, R_LARCH_NONE);
+	    loongarch_relax_delete_or_nop (abfd, sec, rel->r_offset,
+					   4, link_info);
+	    break;
+
+	  case R_LARCH_TLS_LE_LO12:
+	    bfd_put (32, abfd, LARCH_OP_ORI | LARCH_GET_RD (insn),
+		    contents + rel->r_offset);
+	    break;
+
+	  default:
+	    break;
+	}
+    }
+  return true;
+}
+
+/* Whether two sections in the same segment.  */
+static bool
+loongarch_two_sections_in_same_segment (bfd *abfd, asection *a, asection *b)
+{
+  struct elf_segment_map *m;
+  for (m = elf_seg_map (abfd); m != NULL; m = m->next)
+    {
+      int i;
+      int j = 0;
+      for (i = m->count - 1; i >= 0; i--)
+	{
+	  if (m->sections[i] == a)
+	    j++;
+	  if (m->sections[i] == b)
+	    j++;
+	}
+      if (1 == j)
+	return false;
+      if (2 == j)
+	return true;
+    }
+  return false;
+}
+
+/* Relax pcalau12i,addi.d => pcaddi.  */
+static bool
+loongarch_relax_pcala_addi (bfd *abfd, asection *sec, asection *sym_sec,
+			    Elf_Internal_Rela *rel_hi, bfd_vma symval,
+			    struct bfd_link_info *info, bool *again,
+			    bfd_vma max_alignment)
+{
+  bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
+  Elf_Internal_Rela *rel_lo = rel_hi + 2;
+  uint32_t pca = bfd_get (32, abfd, contents + rel_hi->r_offset);
+  uint32_t add = bfd_get (32, abfd, contents + rel_lo->r_offset);
+  uint32_t rd = LARCH_GET_RD (pca);
+
+  /* This section's output_offset need to subtract the bytes of instructions
+     relaxed by the previous sections, so it needs to be updated beforehand.
+     size_input_section already took care of updating it after relaxation,
+     so we additionally update once here.  */
+  sec->output_offset = sec->output_section->size;
+  bfd_vma pc = sec_addr (sec)
+	       + loongarch_calc_relaxed_addr (info, rel_hi->r_offset);
+  if (sym_sec == sec)
+    symval = sec_addr (sec)
+	     + loongarch_calc_relaxed_addr (info, symval - sec_addr (sec));
+
+  /* If pc and symbol not in the same segment, add/sub segment alignment.  */
+  if (!loongarch_two_sections_in_same_segment (info->output_bfd,
+					       sec->output_section,
+					       sym_sec->output_section))
+    max_alignment = info->maxpagesize > max_alignment ? info->maxpagesize
+						      : max_alignment;
+
+  if (symval > pc)
+    pc -= (max_alignment > 4 ? max_alignment : 0);
+  else if (symval < pc)
+    pc += (max_alignment > 4 ? max_alignment : 0);
+
+  const uint32_t pcaddi = LARCH_OP_PCADDI;
+
+  /* Is pcalau12i + addi.d insns?  */
+  if ((ELFNN_R_TYPE (rel_lo->r_info) != R_LARCH_PCALA_LO12)
+      || !LARCH_INSN_ADDI_D (add)
+      /* Is pcalau12i $rd + addi.d $rd,$rd?  */
+      || (LARCH_GET_RD (add) != rd)
+      || (LARCH_GET_RJ (add) != rd)
+      /* Can be relaxed to pcaddi?  */
+      || (symval & 0x3) /* 4 bytes align.  */
+      || ((bfd_signed_vma)(symval - pc) < (bfd_signed_vma)(int32_t)0xffe00000)
+      || ((bfd_signed_vma)(symval - pc) > (bfd_signed_vma)(int32_t)0x1ffffc))
+    return false;
+
+  /* Continue next relax trip.  */
+  *again = true;
+
+  pca = pcaddi | rd;
+  bfd_put (32, abfd, pca, contents + rel_hi->r_offset);
+
+  /* Adjust relocations.  */
+  rel_hi->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel_hi->r_info),
+				 R_LARCH_PCREL20_S2);
+  rel_lo->r_info = ELFNN_R_INFO (0, R_LARCH_NONE);
+
+  loongarch_relax_delete_or_nop (abfd, sec, rel_lo->r_offset, 4, info);
+
+  return true;
+}
+
+/* call36 f -> bl f
+   tail36 $t0, f -> b f.  */
+static bool
+loongarch_relax_call36 (bfd *abfd, asection *sec, asection *sym_sec,
+			    Elf_Internal_Rela *rel, bfd_vma symval,
+			    struct bfd_link_info *info, bool *again,
+			    bfd_vma max_alignment)
+{
+  bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
+  uint32_t jirl = bfd_get (32, abfd, contents + rel->r_offset + 4);
+  uint32_t rd = LARCH_GET_RD (jirl);
+
+  /* This section's output_offset need to subtract the bytes of instructions
+     relaxed by the previous sections, so it needs to be updated beforehand.
+     size_input_section already took care of updating it after relaxation,
+     so we additionally update once here.  */
+  sec->output_offset = sec->output_section->size;
+  bfd_vma pc = sec_addr (sec)
+	       + loongarch_calc_relaxed_addr (info, rel->r_offset);
+  if (sym_sec == sec)
+    symval = sec_addr (sec)
+	     + loongarch_calc_relaxed_addr (info, symval - sec_addr (sec));
+
+  /* If pc and symbol not in the same segment, add/sub segment alignment.  */
+  if (!loongarch_two_sections_in_same_segment (info->output_bfd,
+					       sec->output_section,
+					       sym_sec->output_section))
+    max_alignment = info->maxpagesize > max_alignment ? info->maxpagesize
+						      : max_alignment;
+
+  if (symval > pc)
+    pc -= (max_alignment > 4 ? max_alignment : 0);
+  else if (symval < pc)
+    pc += (max_alignment > 4 ? max_alignment : 0);
+
+  /* Is pcalau12i + addi.d insns?  */
+  if (!LARCH_INSN_JIRL (jirl)
+      || ((bfd_signed_vma)(symval - pc) < (bfd_signed_vma)(int32_t)0xf8000000)
+      || ((bfd_signed_vma)(symval - pc) > (bfd_signed_vma)(int32_t)0x7fffffc))
+    return false;
+
+  /* Continue next relax trip.  */
+  *again = true;
+
+  const uint32_t bl = LARCH_OP_BL;
+  const uint32_t b = LARCH_OP_B;
+
+  if (rd)
+    bfd_put (32, abfd, bl, contents + rel->r_offset);
+  else
+    bfd_put (32, abfd, b, contents + rel->r_offset);
+
+  /* Adjust relocations.  */
+  rel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info), R_LARCH_B26);
+  /* Delete jirl instruction.  */
+  loongarch_relax_delete_or_nop (abfd, sec, rel->r_offset + 4, 4, info);
+  return true;
+}
+
+/* Relax pcalau12i,ld.d => pcalau12i,addi.d.  */
+static bool
+loongarch_relax_pcala_ld (bfd *abfd, asection *sec,
+			  asection *sym_sec,
+			  Elf_Internal_Rela *rel_hi,
+			  bfd_vma symval,
+			  struct bfd_link_info *info,
+			  bool *again ATTRIBUTE_UNUSED,
+			  bfd_vma max_alignment)
+{
+  bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
+  Elf_Internal_Rela *rel_lo = rel_hi + 2;
+  uint32_t pca = bfd_get (32, abfd, contents + rel_hi->r_offset);
+  uint32_t ld = bfd_get (32, abfd, contents + rel_lo->r_offset);
+  uint32_t rd = LARCH_GET_RD (pca);
+  uint32_t addi_d = LARCH_OP_ADDI_D;
+
+  /* This section's output_offset need to subtract the bytes of instructions
+     relaxed by the previous sections, so it needs to be updated beforehand.
+     size_input_section already took care of updating it after relaxation,
+     so we additionally update once here.  */
+  sec->output_offset = sec->output_section->size;
+  bfd_vma pc = sec_addr (sec)
+	       + loongarch_calc_relaxed_addr (info, rel_hi->r_offset);
+  if (sym_sec == sec)
+    symval = sec_addr (sec)
+	     + loongarch_calc_relaxed_addr (info, symval - sec_addr (sec));
+
+  /* If pc and symbol not in the same segment, add/sub segment alignment.  */
+  if (!loongarch_two_sections_in_same_segment (info->output_bfd,
+					       sec->output_section,
+					       sym_sec->output_section))
+    max_alignment = info->maxpagesize > max_alignment ? info->maxpagesize
+						      : max_alignment;
+
+  if (symval > pc)
+    pc -= (max_alignment > 4 ? max_alignment : 0);
+  else if (symval < pc)
+    pc += (max_alignment > 4 ? max_alignment : 0);
+
+  if ((ELFNN_R_TYPE (rel_lo->r_info) != R_LARCH_GOT_PC_LO12)
+      || (LARCH_GET_RD (ld) != rd)
+      || (LARCH_GET_RJ (ld) != rd)
+      || !LARCH_INSN_LD_D (ld)
+      /* Within +-2G addressing range.  */
+      || (bfd_signed_vma)(symval - pc) < (bfd_signed_vma)(int32_t)0x80000000
+      || (bfd_signed_vma)(symval - pc) > (bfd_signed_vma)(int32_t)0x7fffffff)
+    return false;
+
+  addi_d = addi_d | (rd << 5) | rd;
+  bfd_put (32, abfd, addi_d, contents + rel_lo->r_offset);
+
+  rel_hi->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel_hi->r_info),
+				 R_LARCH_PCALA_HI20);
+  rel_lo->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel_lo->r_info),
+				 R_LARCH_PCALA_LO12);
+  return true;
+}
+
+/* Called by after_allocation to set the information of data segment
+   before relaxing.  */
+
+void
+bfd_elfNN_loongarch_set_data_segment_info (struct bfd_link_info *info,
+				     int *data_segment_phase)
+{
+  if (is_elf_hash_table (info->hash)
+      && elf_hash_table_id (elf_hash_table (info)) == LARCH_ELF_DATA)
+    loongarch_elf_hash_table (info)->data_segment_phase = data_segment_phase;
+}
+
+/* Honor R_LARCH_ALIGN requests by deleting excess alignment NOPs.
+   Once we've handled an R_LARCH_ALIGN, we can't relax anything else by deleting
+   bytes, or alignment will be disrupted.  */
+static bool
+loongarch_relax_align (bfd *abfd, asection *sec, asection *sym_sec,
+			Elf_Internal_Rela *rel,
+			bfd_vma symval,
+			struct bfd_link_info *link_info,
+			bool *again ATTRIBUTE_UNUSED,
+			bfd_vma max_alignment ATTRIBUTE_UNUSED)
+{
+  bfd_vma  addend, max = 0, alignment = 1;
+
+  int sym_index = ELFNN_R_SYM (rel->r_info);
+  if (sym_index > 0)
+    {
+      alignment = 1 << (rel->r_addend & 0xff);
+      max = rel->r_addend >> 8;
+    }
+  else
+    alignment = rel->r_addend + 4;
+
+  if (sym_sec == sec)
+    symval = sec_addr (sec)
+	     + loongarch_calc_relaxed_addr (link_info, symval - sec_addr (sec));
+
+  addend = alignment - 4; /* The bytes of NOPs added by R_LARCH_ALIGN.  */
+  symval -= addend; /* The address of first NOP added by R_LARCH_ALIGN.  */
+  bfd_vma aligned_addr = ((symval - 1) & ~(alignment - 1)) + alignment;
+  bfd_vma need_nop_bytes = aligned_addr - symval; /* */
+
+  /* Make sure there are enough NOPs to actually achieve the alignment.  */
+  if (addend < need_nop_bytes)
+    {
+      _bfd_error_handler
+	(_("%pB(%pA+%#" PRIx64 "): %" PRId64 " bytes required for alignment "
+	   "to %" PRId64 "-byte boundary, but only %" PRId64 " present"),
+	 abfd, sym_sec, (uint64_t) rel->r_offset,
+	 (int64_t) need_nop_bytes, (int64_t) alignment, (int64_t) addend);
+      bfd_set_error (bfd_error_bad_value);
+      return false;
+    }
+
+  /* Once we've handled an R_LARCH_ALIGN in a section, we can't relax anything
+     else by deleting bytes, or alignment will be disrupted.  */
+  loongarch_sec_closed_for_deletion (sec) = true;
+  rel->r_info = ELFNN_R_INFO (0, R_LARCH_NONE);
+
+  /* If skipping more bytes than the specified maximum,
+     then the alignment is not done at all and delete all NOPs.  */
+  if (max > 0 && need_nop_bytes > max)
+    {
+      loongarch_relax_delete_bytes (abfd, rel->r_offset, addend, link_info);
+      return true;
+    }
+
+  /* If the number of NOPs is already correct, there's nothing to do.  */
+  if (need_nop_bytes == addend)
+    return true;
+
+  /* Delete the excess NOPs.  */
+  loongarch_relax_delete_bytes (abfd, rel->r_offset + need_nop_bytes,
+				addend - need_nop_bytes, link_info);
+  return true;
+}
+
+/* Relax pcalau12i + addi.d of TLS LD/GD/DESC to pcaddi.  */
+static bool
+loongarch_relax_tls_ld_gd_desc (bfd *abfd, asection *sec, asection *sym_sec,
+				Elf_Internal_Rela *rel_hi, bfd_vma symval,
+				struct bfd_link_info *info, bool *again,
+				bfd_vma max_alignment)
+{
+  bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
+  Elf_Internal_Rela *rel_lo = rel_hi + 2;
+  uint32_t pca = bfd_get (32, abfd, contents + rel_hi->r_offset);
+  uint32_t add = bfd_get (32, abfd, contents + rel_lo->r_offset);
+  uint32_t rd = LARCH_GET_RD (pca);
+
+  /* This section's output_offset need to subtract the bytes of instructions
+     relaxed by the previous sections, so it needs to be updated beforehand.
+     size_input_section already took care of updating it after relaxation,
+     so we additionally update once here.  */
+  sec->output_offset = sec->output_section->size;
+  bfd_vma pc = sec_addr (sec)
+	       + loongarch_calc_relaxed_addr (info, rel_hi->r_offset);
+  if (sym_sec == sec)
+    symval = sec_addr (sec)
+	     + loongarch_calc_relaxed_addr (info, symval - sec_addr (sec));
+
+  /* If pc and symbol not in the same segment, add/sub segment alignment.  */
+  if (!loongarch_two_sections_in_same_segment (info->output_bfd,
+					       sec->output_section,
+					       sym_sec->output_section))
+    max_alignment = info->maxpagesize > max_alignment ? info->maxpagesize
+						      : max_alignment;
+
+  if (symval > pc)
+    pc -= (max_alignment > 4 ? max_alignment : 0);
+  else if (symval < pc)
+    pc += (max_alignment > 4 ? max_alignment : 0);
+
+  const uint32_t pcaddi = LARCH_OP_PCADDI;
+
+  /* Is pcalau12i + addi.d insns?  */
+  if ((ELFNN_R_TYPE (rel_lo->r_info) != R_LARCH_GOT_PC_LO12
+	&& ELFNN_R_TYPE (rel_lo->r_info) != R_LARCH_TLS_DESC_PC_LO12)
+      || !LARCH_INSN_ADDI_D (add)
+      /* Is pcalau12i $rd + addi.d $rd,$rd?  */
+      || (LARCH_GET_RD (add) != rd)
+      || (LARCH_GET_RJ (add) != rd)
+      /* Can be relaxed to pcaddi?  */
+      || (symval & 0x3) /* 4 bytes align.  */
+      || ((bfd_signed_vma)(symval - pc) < (bfd_signed_vma)(int32_t)0xffe00000)
+      || ((bfd_signed_vma)(symval - pc) > (bfd_signed_vma)(int32_t)0x1ffffc))
+    return false;
+
+  /* Continue next relax trip.  */
+  *again = true;
+
+  pca = pcaddi | rd;
+  bfd_put (32, abfd, pca, contents + rel_hi->r_offset);
+
+  /* Adjust relocations.  */
+  switch (ELFNN_R_TYPE (rel_hi->r_info))
+    {
+    case R_LARCH_TLS_LD_PC_HI20:
+      rel_hi->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel_hi->r_info),
+				      R_LARCH_TLS_LD_PCREL20_S2);
+      break;
+    case R_LARCH_TLS_GD_PC_HI20:
+      rel_hi->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel_hi->r_info),
+				      R_LARCH_TLS_GD_PCREL20_S2);
+      break;
+    case R_LARCH_TLS_DESC_PC_HI20:
+      rel_hi->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel_hi->r_info),
+				      R_LARCH_TLS_DESC_PCREL20_S2);
+      break;
+    default:
+      break;
+    }
+  rel_lo->r_info = ELFNN_R_INFO (0, R_LARCH_NONE);
+
+  loongarch_relax_delete_or_nop (abfd, sec, rel_lo->r_offset, 4, info);
+
+  return true;
+}
+
+/* Traverse all output sections and return the max alignment.  */
+
+static bfd_vma
+loongarch_get_max_alignment (asection *sec)
+{
+  asection *o;
+  unsigned int max_alignment_power = 0;
+
+  for (o = sec->output_section->owner->sections; o != NULL; o = o->next)
+      if (o->alignment_power > max_alignment_power)
+	max_alignment_power = o->alignment_power;
+
+  return (bfd_vma) 1 << max_alignment_power;
+}
+
+typedef bool (*relax_func_t) (bfd *, asection *, asection *,
+			      Elf_Internal_Rela *, bfd_vma,
+			      struct bfd_link_info *, bool *,
+			       bfd_vma);
+
+static bool
+loongarch_elf_relax_section (bfd *abfd, asection *sec,
+			     struct bfd_link_info *info,
+			     bool *again)
+{
+  *again = false;
+
+  if (!is_elf_hash_table (info->hash)
+      || elf_hash_table_id (elf_hash_table (info)) != LARCH_ELF_DATA)
+    return true;
+
+  struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (info);
+
+  /* It may happen that some sections have updated vma but the others do
+     not.  Go to the next relax trip (size_relative_relocs should have
+     been demending another relax trip anyway).  */
+  if (htab->layout_mutating_for_relr)
+    return true;
+
+  /* Definition of LoongArch linker relaxation passes:
+
+     - Pass 0: relaxes everything except R_LARCH_ALIGN, byte deletions are
+	       performed; skipped if disable_target_specific_optimizations.
+     - Pass 1: handles alignment, byte deletions are performed.  Sections with
+	       R_LARCH_ALIGN relocations are marked closed for further byte
+	       deletion in order to not disturb alignment.  This pass is NOT
+	       skipped even if disable_target_specific_optimizations is true.
+     - Pass 2: identical to Pass 0, but replacing relaxed insns with NOP in case
+	       the containing section is closed for deletion; skip condition
+	       also same as Pass 0.  */
+  bool is_alignment_pass = info->relax_pass == 1;
+  if (bfd_link_relocatable (info)
+      || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
+      /* The exp_seg_relro_adjust is enum phase_enum (0x4).  */
+      || *(htab->data_segment_phase) == 4
+      || (info->disable_target_specific_optimizations && !is_alignment_pass))
+    return true;
+
+  struct bfd_elf_section_data *data = elf_section_data (sec);
+  Elf_Internal_Rela *relocs;
+  if (data->relocs)
+    relocs = data->relocs;
+  else if (!(relocs = _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL,
+						 info->keep_memory)))
+    return true;
+  data->relocs = relocs;
+
+  /* Read this BFD's contents if we haven't done so already.  */
+  if (!data->this_hdr.contents
+      && !bfd_malloc_and_get_section (abfd, sec, &data->this_hdr.contents))
+    return true;
+
+  /* Read this BFD's symbols if we haven't done so already.  */
+  Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (abfd);
+  if (symtab_hdr->sh_info != 0
+      && !symtab_hdr->contents
+      && !(symtab_hdr->contents =
+	   (unsigned char *) bfd_elf_get_elf_syms (abfd, symtab_hdr,
+						   symtab_hdr->sh_info,
+						   0, NULL, NULL, NULL)))
+    return true;
+
+  /* Estimate the maximum alignment for all output sections once time
+     should be enough.  */
+  bfd_vma max_alignment = htab->max_alignment;
+  if (max_alignment == (bfd_vma) -1)
+    {
+      max_alignment = loongarch_get_max_alignment (sec);
+      htab->max_alignment = max_alignment;
+    }
+
+  splay_tree pdops = NULL;
+  if (!loongarch_sec_closed_for_deletion (sec))
+    pdops = pending_delete_ops_new (abfd);
+
+  htab->pending_delete_ops = pdops;
+
+  for (unsigned int i = 0; i < sec->reloc_count; i++)
+    {
+      char symtype;
+      bfd_vma symval;
+      asection *sym_sec;
+      bool local_got = false;
+      Elf_Internal_Rela *rel = relocs + i;
+      struct elf_link_hash_entry *h = NULL;
+      unsigned long r_type = ELFNN_R_TYPE (rel->r_info);
+      unsigned long r_symndx = ELFNN_R_SYM (rel->r_info);
+
+      if (r_symndx >= symtab_hdr->sh_info)
+	{
+	  h = elf_sym_hashes (abfd)[r_symndx - symtab_hdr->sh_info];
+	  while (h->root.type == bfd_link_hash_indirect
+	       || h->root.type == bfd_link_hash_warning)
+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+	}
+
+      /* If the conditions for tls type transition are met, type
+	 transition is performed instead of relax.
+	 During the transition from DESC->IE/LE, there are 2 situations
+	 depending on the different configurations of the relax/norelax
+	 option.
+	 If the -relax option is used, the extra nops will be removed,
+	 and this transition is performed in pass 0.
+	 If the --no-relax option is used, nop will be retained, and
+	 this transition is performed in pass 1.  */
+      if (IS_LOONGARCH_TLS_TRANS_RELOC (r_type)
+	  && (i + 1 != sec->reloc_count)
+	  && ELFNN_R_TYPE (rel[1].r_info) == R_LARCH_RELAX
+	  && rel->r_offset == rel[1].r_offset
+	  && loongarch_can_trans_tls (abfd, info, h, r_symndx, r_type))
+	{
+	  loongarch_tls_perform_trans (abfd, sec, rel, h, info);
+	  r_type = ELFNN_R_TYPE (rel->r_info);
+	}
+
+      relax_func_t relax_func = NULL;
+      if (is_alignment_pass)
+	{
+	  if (r_type != R_LARCH_ALIGN)
+	    continue;
+	  relax_func = loongarch_relax_align;
+	}
+      else
+	{
+	  switch (r_type)
+	    {
+	    case R_LARCH_PCALA_HI20:
+	      relax_func = loongarch_relax_pcala_addi;
+	      break;
+	    case R_LARCH_GOT_PC_HI20:
+	      relax_func = loongarch_relax_pcala_ld;
+	      break;
+	    case R_LARCH_CALL36:
+	      relax_func = loongarch_relax_call36;
+	      break;
+	    case R_LARCH_TLS_LE_HI20_R:
+	    case R_LARCH_TLS_LE_LO12_R:
+	    case R_LARCH_TLS_LE_ADD_R:
+	    case R_LARCH_TLS_LE_HI20:
+	    case R_LARCH_TLS_LE_LO12:
+	    case R_LARCH_TLS_LE64_LO20:
+	    case R_LARCH_TLS_LE64_HI12:
+	      relax_func = loongarch_relax_tls_le;
+	      break;
+	    case R_LARCH_TLS_LD_PC_HI20:
+	    case R_LARCH_TLS_GD_PC_HI20:
+	    case R_LARCH_TLS_DESC_PC_HI20:
+	      relax_func = loongarch_relax_tls_ld_gd_desc;
+	      break;
+	    default:
+		continue;
+	    }
+
+	  /* Only relax this reloc if it is paired with R_RISCV_RELAX.  */
+	  if (r_type == R_LARCH_TLS_LD_PC_HI20
+	      || r_type == R_LARCH_TLS_GD_PC_HI20
+	      || r_type == R_LARCH_TLS_DESC_PC_HI20
+	      || r_type == R_LARCH_PCALA_HI20
+	      || r_type == R_LARCH_GOT_PC_HI20)
+	    {
+	      if ((i + 2) == sec->reloc_count - 1
+		  || ELFNN_R_TYPE ((rel + 1)->r_info) != R_LARCH_RELAX
+		  || ELFNN_R_TYPE ((rel + 3)->r_info) != R_LARCH_RELAX
+		  || rel->r_offset != (rel + 1)->r_offset
+		  || (rel + 2)->r_offset != (rel + 3)->r_offset
+		  || rel->r_offset + 4 != (rel + 2)->r_offset)
+		continue;
+	    }
+	  else
+	    {
+	      if (i == sec->reloc_count - 1
+		  || ELFNN_R_TYPE ((rel + 1)->r_info) != R_LARCH_RELAX
+		  || rel->r_offset != (rel + 1)->r_offset)
+		continue;
+	    }
+	}
+
+      /* Four kind of relocations:
+	 Normal: symval is the symbol address.
+	 R_LARCH_ALIGN: symval is the address of the last NOP instruction
+	 added by this relocation, and then adds 4 more.
+	 R_LARCH_CALL36: symval is the symbol address for local symbols,
+	 or the PLT entry address of the symbol. (Todo)
+	 R_LARCHL_TLS_LD/GD/DESC_PC_HI20: symval is the GOT entry address
+	 of the symbol if transition is not possible.  */
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  Elf_Internal_Sym *sym = (Elf_Internal_Sym *)symtab_hdr->contents
+				    + r_symndx;
+
+	  if ((ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC
+	       && r_type != R_LARCH_CALL36)
+	      || sym->st_shndx == SHN_ABS)
+	    continue;
+
+	  /* Only TLS instruction sequences that are accompanied by
+	     R_LARCH_RELAX and cannot perform type transition can be
+	     relaxed.  */
+	  if (r_type == R_LARCH_TLS_LD_PC_HI20
+	      || r_type == R_LARCH_TLS_GD_PC_HI20
+	      || r_type == R_LARCH_TLS_DESC_PC_HI20)
+	    {
+	      sym_sec = htab->elf.sgot;
+	      symval = elf_local_got_offsets (abfd)[r_symndx];
+	      char tls_type = _bfd_loongarch_elf_tls_type (abfd, h,
+							    r_symndx);
+	      if (r_type == R_LARCH_TLS_DESC_PC_HI20
+		    && GOT_TLS_GD_BOTH_P (tls_type))
+		symval += 2 * GOT_ENTRY_SIZE;
+	    }
+	  else if (sym->st_shndx == SHN_UNDEF || r_type == R_LARCH_ALIGN)
+	    {
+	      sym_sec = sec;
+	      symval = rel->r_offset;
+	    }
+	  else
+	    {
+	      sym_sec = elf_elfsections (abfd)[sym->st_shndx]->bfd_section;
+	      symval = sym->st_value;
+	    }
+	  symtype = ELF_ST_TYPE (sym->st_info);
+	}
+      else
+	{
+	  /* Do not relax __[start|stop]_SECNAME, since the symbol value
+	     is not set yet.  */
+	  if (h != NULL
+	      && ((h->type == STT_GNU_IFUNC
+		   && r_type != R_LARCH_CALL36)
+		  || bfd_is_abs_section (h->root.u.def.section)
+		  || h->start_stop))
+	    continue;
+
+	  /* The GOT entry of tls symbols must in current execute file or
+	     shared object.  */
+	  if (r_type == R_LARCH_TLS_LD_PC_HI20
+	      || r_type == R_LARCH_TLS_GD_PC_HI20
+	      || r_type == R_LARCH_TLS_DESC_PC_HI20)
+	    {
+	      sym_sec = htab->elf.sgot;
+	      symval = h->got.offset;
+	      char tls_type = _bfd_loongarch_elf_tls_type (abfd, h,
+							    r_symndx);
+	      if (r_type == R_LARCH_TLS_DESC_PC_HI20
+		    && GOT_TLS_GD_BOTH_P (tls_type))
+		symval += 2 * GOT_ENTRY_SIZE;
+	    }
+	  else if (h->plt.offset != MINUS_ONE)
+	    {
+	      sym_sec = htab->elf.splt ? htab->elf.splt : htab->elf.iplt;
+	      symval = h->plt.offset;
+	    }
+	  /* Like loongarch_elf_relocate_section, set relocation(offset) to 0.
+	     Undefweak for other relocations handing in the future.  */
+	  else if (h->root.type == bfd_link_hash_undefweak
+		    && !h->root.linker_def
+		    && r_type == R_LARCH_CALL36)
+	    {
+	      sym_sec = sec;
+	      symval = rel->r_offset;
+	    }
+	  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)
+	    {
+	      sym_sec = h->root.u.def.section;
+	      symval = h->root.u.def.value;
+	    }
+	  else
+	    continue;
+
+	  if (h && LARCH_REF_LOCAL (info, h))
+	    local_got = true;
+	  symtype = h->type;
+	}
+
+      if (sym_sec->sec_info_type == SEC_INFO_TYPE_MERGE
+	   && (sym_sec->flags & SEC_MERGE))
+	{
+	   if (symtype == STT_SECTION)
+	     symval += rel->r_addend;
+
+	   symval = _bfd_merged_section_offset (abfd, &sym_sec,
+				elf_section_data (sym_sec)->sec_info,
+				symval);
+
+	   if (symtype != STT_SECTION)
+	     symval += rel->r_addend;
+	}
+      /* For R_LARCH_ALIGN, symval is sec_addr (sec) + rel->r_offset
+	 + (alingmeng - 4).
+	 If r_symndx is 0, alignmeng-4 is r_addend.
+	 If r_symndx > 0, alignment-4 is 2^(r_addend & 0xff)-4.  */
+      else if (r_type == R_LARCH_ALIGN)
+	if (r_symndx > 0)
+	  symval += ((1 << (rel->r_addend & 0xff)) - 4);
+	else
+	  symval += rel->r_addend;
+      else
+	symval += rel->r_addend;
+
+      symval += sec_addr (sym_sec);
+
+      if (r_type == R_LARCH_GOT_PC_HI20 && !local_got)
+	continue;
+
+      if (relax_func (abfd, sec, sym_sec, rel, symval,
+		      info, again, max_alignment)
+	  && relax_func == loongarch_relax_pcala_ld)
+	loongarch_relax_pcala_addi (abfd, sec, sym_sec, rel, symval,
+				    info, again, max_alignment);
+    }
+
+  if (pdops)
+    {
+      loongarch_relax_perform_deletes (abfd, sec, info);
+      htab->pending_delete_ops = NULL;
+      splay_tree_delete (pdops);
+    }
+
+  return true;
+}
+
+/* Finish up dynamic symbol handling.  We set the contents of various
+   dynamic sections here.  */
+
+static bool
+loongarch_elf_finish_dynamic_symbol (bfd *output_bfd,
+				     struct bfd_link_info *info,
+				     struct elf_link_hash_entry *h,
+				     Elf_Internal_Sym *sym)
+{
+  struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (info);
+  const struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
+
+  if (h->plt.offset != MINUS_ONE)
+    {
+      size_t i, plt_idx;
+      asection *plt, *gotplt, *relplt;
+      bfd_vma got_address;
+      uint32_t plt_entry[PLT_ENTRY_INSNS];
+      bfd_byte *loc;
+      Elf_Internal_Rela rela;
+
+      if (htab->elf.splt)
+	{
+	  BFD_ASSERT ((h->type == STT_GNU_IFUNC
+		       && LARCH_REF_LOCAL (info, h))
+		      || h->dynindx != -1);
+
+	  plt = htab->elf.splt;
+	  gotplt = htab->elf.sgotplt;
+	  if (h->type == STT_GNU_IFUNC && LARCH_REF_LOCAL (info, h))
+	    relplt = htab->elf.srelgot;
+	  else
+	    relplt = htab->elf.srelplt;
+	  plt_idx = (h->plt.offset - PLT_HEADER_SIZE) / PLT_ENTRY_SIZE;
+	  got_address =
+	    sec_addr (gotplt) + GOTPLT_HEADER_SIZE + plt_idx * GOT_ENTRY_SIZE;
+	}
+      else /* if (htab->elf.iplt) */
+	{
+	  BFD_ASSERT (h->type == STT_GNU_IFUNC
+		      && LARCH_REF_LOCAL (info, h));
+
+	  plt = htab->elf.iplt;
+	  gotplt = htab->elf.igotplt;
+	  relplt = htab->elf.irelplt;
+	  plt_idx = h->plt.offset / PLT_ENTRY_SIZE;
+	  got_address = sec_addr (gotplt) + plt_idx * GOT_ENTRY_SIZE;
+	}
+
+      /* Find out where the .plt entry should go.  */
+      loc = plt->contents + h->plt.offset;
+
+      /* Fill in the PLT entry itself.  */
+      if (!loongarch_make_plt_entry (got_address,
+				     sec_addr (plt) + h->plt.offset,
+				     plt_entry))
+	return false;
+
+      for (i = 0; i < PLT_ENTRY_INSNS; i++)
+	bfd_put_32 (output_bfd, plt_entry[i], loc + 4 * i);
+
+      /* Fill in the initial value of the got.plt entry.  */
+      loc = gotplt->contents + (got_address - sec_addr (gotplt));
+      bfd_put_NN (output_bfd, sec_addr (plt), loc);
+
+      rela.r_offset = got_address;
+
+      /* TRUE if this is a PLT reference to a local IFUNC.  */
+      if (PLT_LOCAL_IFUNC_P (info, h)
+	  && (relplt == htab->elf.srelgot
+	      || relplt == htab->elf.irelplt))
+	{
+	  rela.r_info = ELFNN_R_INFO (0, R_LARCH_IRELATIVE);
+	  rela.r_addend = (h->root.u.def.value
+			       + h->root.u.def.section->output_section->vma
+			       + h->root.u.def.section->output_offset);
+
+	  loongarch_elf_append_rela (output_bfd, relplt, &rela);
+	}
+      else
+	{
+	  /* Fill in the entry in the rela.plt section.  */
+	  rela.r_info = ELFNN_R_INFO (h->dynindx, R_LARCH_JUMP_SLOT);
+	  rela.r_addend = 0;
+	  loc = relplt->contents + plt_idx * sizeof (ElfNN_External_Rela);
+	  bed->s->swap_reloca_out (output_bfd, &rela, loc);
+	}
+
+      if (!h->def_regular)
+	{
+	  /* Mark the symbol as undefined, rather than as defined in
+	     the .plt section.  Leave the value alone.  */
+	  sym->st_shndx = SHN_UNDEF;
+	  /* If the symbol is weak, we do need to clear the value.
+	     Otherwise, the PLT entry would provide a definition for
+	     the symbol even if the symbol wasn't defined anywhere,
+	     and so the symbol would never be NULL.  */
+	  if (!h->ref_regular_nonweak)
+	    sym->st_value = 0;
+	}
+    }
+
+  if (h->got.offset != MINUS_ONE
+      /* TLS got entry have been handled in elf_relocate_section.  */
+      && !(loongarch_elf_hash_entry (h)->tls_type
+	   & (GOT_TLS_GD | GOT_TLS_IE | GOT_TLS_GDESC))
+      /* Have allocated got entry but not allocated rela before.  */
+      && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
+    {
+      asection *sgot, *srela;
+      Elf_Internal_Rela rela;
+      bfd_vma off = h->got.offset & ~(bfd_vma)1;
+
+      /* This symbol has an entry in the GOT.  Set it up.  */
+      sgot = htab->elf.sgot;
+      srela = htab->elf.srelgot;
+      BFD_ASSERT (sgot && srela);
+
+      rela.r_offset = sec_addr (sgot) + off;
+
+      if (h->def_regular
+	  && h->type == STT_GNU_IFUNC)
+	{
+	  if(h->plt.offset == MINUS_ONE)
+	    {
+	      if (htab->elf.splt == NULL)
+		srela = htab->elf.irelplt;
+
+	      if (LARCH_REF_LOCAL (info, h))
+		{
+		  asection *sec = h->root.u.def.section;
+		  rela.r_info = ELFNN_R_INFO (0, R_LARCH_IRELATIVE);
+		  rela.r_addend = h->root.u.def.value + sec->output_section->vma
+		    + sec->output_offset;
+		  bfd_put_NN (output_bfd, 0, sgot->contents + off);
+		}
+	      else
+		{
+		  BFD_ASSERT (h->dynindx != -1);
+		  rela.r_info = ELFNN_R_INFO (h->dynindx, R_LARCH_NN);
+		  rela.r_addend = 0;
+		  bfd_put_NN (output_bfd, (bfd_vma) 0, sgot->contents + off);
+		}
+	    }
+	  else if(bfd_link_pic (info))
+	    {
+	      rela.r_info = ELFNN_R_INFO (h->dynindx, R_LARCH_NN);
+	      rela.r_addend = 0;
+	      bfd_put_NN (output_bfd, rela.r_addend, sgot->contents + off);
+	    }
+	  else
+	    {
+	      asection *plt;
+	      /* For non-shared object, we can't use .got.plt, which
+		 contains the real function address if we need pointer
+		 equality.  We load the GOT entry with the PLT entry.  */
+	      plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt;
+	      bfd_put_NN (output_bfd,
+			  (plt->output_section->vma
+			   + plt->output_offset
+			   + h->plt.offset),
+			  sgot->contents + off);
+	      return true;
+	    }
+	}
+      else if (bfd_link_pic (info) && LARCH_REF_LOCAL (info, h))
+	{
+	  asection *sec = h->root.u.def.section;
+	  bfd_vma linkaddr = h->root.u.def.value + sec->output_section->vma
+			     + sec->output_offset;
+
+	  /* Don't emit relative relocs if they are packed, but we need
+	     to write the addend (link-time addr) into the GOT then.  */
+	  if (info->enable_dt_relr)
+	    {
+	      bfd_put_NN (output_bfd, linkaddr, sgot->contents + off);
+	      goto skip_got_reloc;
+	    }
+	  rela.r_info = ELFNN_R_INFO (0, R_LARCH_RELATIVE);
+	  rela.r_addend = linkaddr;
+	}
+      else
+	{
+	  BFD_ASSERT (h->dynindx != -1);
+	  rela.r_info = ELFNN_R_INFO (h->dynindx, R_LARCH_NN);
+	  rela.r_addend = 0;
+	}
+
+      loongarch_elf_append_rela (output_bfd, srela, &rela);
+    }
+skip_got_reloc:
+
+  /* Mark some specially defined symbols as absolute.  */
+  if (h == htab->elf.hdynamic || h == htab->elf.hgot || h == htab->elf.hplt)
+    sym->st_shndx = SHN_ABS;
+
+  return true;
+}
+
+/* Finish up the dynamic sections.  */
+
+static bool
+loongarch_finish_dyn (bfd *output_bfd, struct bfd_link_info *info, bfd *dynobj,
+		      asection *sdyn)
+{
+  struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (info);
+  const struct elf_backend_data *bed = get_elf_backend_data (output_bfd);
+  size_t dynsize = bed->s->sizeof_dyn, skipped_size = 0;
+  bfd_byte *dyncon, *dynconend;
+
+  dynconend = sdyn->contents + sdyn->size;
+  for (dyncon = sdyn->contents; dyncon < dynconend; dyncon += dynsize)
+    {
+      Elf_Internal_Dyn dyn;
+      asection *s;
+      int skipped = 0;
+
+      bed->s->swap_dyn_in (dynobj, dyncon, &dyn);
+
+      switch (dyn.d_tag)
+	{
+	case DT_PLTGOT:
+	  s = htab->elf.sgotplt;
+	  dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+	  break;
+	case DT_JMPREL:
+	  s = htab->elf.srelplt;
+	  dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+	  break;
+	case DT_PLTRELSZ:
+	  s = htab->elf.srelplt;
+	  dyn.d_un.d_val = s->size;
+	  break;
+	case DT_TEXTREL:
+	  if ((info->flags & DF_TEXTREL) == 0)
+	    skipped = 1;
+	  break;
+	case DT_FLAGS:
+	  if ((info->flags & DF_TEXTREL) == 0)
+	    dyn.d_un.d_val &= ~DF_TEXTREL;
+	  break;
+	}
+      if (skipped)
+	skipped_size += dynsize;
+      else
+	bed->s->swap_dyn_out (output_bfd, &dyn, dyncon - skipped_size);
+    }
+  /* Wipe out any trailing entries if we shifted down a dynamic tag.  */
+  memset (dyncon - skipped_size, 0, skipped_size);
+  return true;
+}
+
+/* Finish up local dynamic symbol handling.  We set the contents of
+   various dynamic sections here.  */
+
+static int
+elfNN_loongarch_finish_local_dynamic_symbol (void **slot, void *inf)
+{
+  struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) *slot;
+  struct bfd_link_info *info = (struct bfd_link_info *) inf;
+
+  return loongarch_elf_finish_dynamic_symbol (info->output_bfd, info, h, NULL);
+}
+
+/* Value of struct elf_backend_data->elf_backend_output_arch_local_syms,
+   this function is called before elf_link_sort_relocs.
+   So relocation R_LARCH_IRELATIVE for local ifunc can be append to
+   .rela.dyn (.rela.got) by loongarch_elf_append_rela.  */
+
+static bool
+elf_loongarch_output_arch_local_syms
+  (bfd *output_bfd ATTRIBUTE_UNUSED,
+   struct bfd_link_info *info,
+   void *flaginfo ATTRIBUTE_UNUSED,
+   int (*func) (void *, const char *,
+		Elf_Internal_Sym *,
+		asection *,
+		struct elf_link_hash_entry *) ATTRIBUTE_UNUSED)
+{
+  struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (info);
+  if (htab == NULL)
+    return false;
+
+  /* Fill PLT and GOT entries for local STT_GNU_IFUNC symbols.  */
+  htab_traverse (htab->loc_hash_table,
+		 elfNN_loongarch_finish_local_dynamic_symbol,
+		 info);
+
+  return true;
+}
+
+static bool
+loongarch_elf_finish_dynamic_sections (bfd *output_bfd,
+				       struct bfd_link_info *info)
+{
+  bfd *dynobj;
+  asection *sdyn, *plt, *gotplt = NULL;
+  struct loongarch_elf_link_hash_table *htab;
+
+  htab = loongarch_elf_hash_table (info);
+  BFD_ASSERT (htab);
+  dynobj = htab->elf.dynobj;
+  sdyn = bfd_get_linker_section (dynobj, ".dynamic");
+
+  if (elf_hash_table (info)->dynamic_sections_created)
+    {
+      BFD_ASSERT (htab->elf.splt && sdyn);
+
+      if (!loongarch_finish_dyn (output_bfd, info, dynobj, sdyn))
+	return false;
+    }
+
+  plt = htab->elf.splt;
+  gotplt = htab->elf.sgotplt;
+
+  if (plt && 0 < plt->size)
+    {
+      size_t i;
+      uint32_t plt_header[PLT_HEADER_INSNS];
+      if (!loongarch_make_plt_header (sec_addr (gotplt), sec_addr (plt),
+				      plt_header))
+	return false;
+
+      for (i = 0; i < PLT_HEADER_INSNS; i++)
+	bfd_put_32 (output_bfd, plt_header[i], plt->contents + 4 * i);
+
+      elf_section_data (plt->output_section)->this_hdr.sh_entsize =
+	PLT_ENTRY_SIZE;
+    }
+
+  if (htab->elf.sgotplt)
+    {
+      asection *output_section = htab->elf.sgotplt->output_section;
+
+      if (bfd_is_abs_section (output_section))
+	{
+	  _bfd_error_handler (_("discarded output section: `%pA'"),
+			      htab->elf.sgotplt);
+	  return false;
+	}
+
+      if (0 < htab->elf.sgotplt->size)
+	{
+	  /* Write the first two entries in .got.plt, needed for the dynamic
+	     linker.  */
+	  bfd_put_NN (output_bfd, MINUS_ONE, htab->elf.sgotplt->contents);
+
+	  bfd_put_NN (output_bfd, (bfd_vma) 0,
+		      htab->elf.sgotplt->contents + GOT_ENTRY_SIZE);
+	}
+
+      elf_section_data (output_section)->this_hdr.sh_entsize = GOT_ENTRY_SIZE;
+    }
+
+  if (htab->elf.sgot)
+    {
+      asection *output_section = htab->elf.sgot->output_section;
+
+      if (0 < htab->elf.sgot->size)
+	{
+	  /* Set the first entry in the global offset table to the address of
+	     the dynamic section.  */
+	  bfd_vma val = sdyn ? sec_addr (sdyn) : 0;
+	  bfd_put_NN (output_bfd, val, htab->elf.sgot->contents);
+	}
+
+      elf_section_data (output_section)->this_hdr.sh_entsize = GOT_ENTRY_SIZE;
+    }
+
+  return true;
+}
+
+/* Return address for Ith PLT stub in section PLT, for relocation REL
+   or (bfd_vma) -1 if it should not be included.  */
+
+static bfd_vma
+loongarch_elf_plt_sym_val (bfd_vma i, const asection *plt,
+			   const arelent *rel ATTRIBUTE_UNUSED)
+{
+  return plt->vma + PLT_HEADER_SIZE + i * PLT_ENTRY_SIZE;
+}
+
+static enum elf_reloc_type_class
+loongarch_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
+			    const asection *rel_sec ATTRIBUTE_UNUSED,
+			    const Elf_Internal_Rela *rela)
+{
+  struct loongarch_elf_link_hash_table *htab;
+  htab = loongarch_elf_hash_table (info);
+
+  if (htab->elf.dynsym != NULL && htab->elf.dynsym->contents != NULL)
+    {
+      /* Check relocation against STT_GNU_IFUNC symbol if there are
+	 dynamic symbols.  */
+      bfd *abfd = info->output_bfd;
+      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+      unsigned long r_symndx = ELFNN_R_SYM (rela->r_info);
+      if (r_symndx != STN_UNDEF)
+	{
+	  Elf_Internal_Sym sym;
+	  if (!bed->s->swap_symbol_in (abfd,
+				       htab->elf.dynsym->contents
+				       + r_symndx * bed->s->sizeof_sym,
+				       0, &sym))
+	    {
+	      /* xgettext:c-format  */
+	      _bfd_error_handler (_("%pB symbol number %lu references"
+				    " nonexistent SHT_SYMTAB_SHNDX section"),
+				  abfd, r_symndx);
+	      /* Ideally an error class should be returned here.  */
+	    }
+	  else if (ELF_ST_TYPE (sym.st_info) == STT_GNU_IFUNC)
+	    return reloc_class_ifunc;
+	}
+    }
+
+  switch (ELFNN_R_TYPE (rela->r_info))
+    {
+    case R_LARCH_IRELATIVE:
+      return reloc_class_ifunc;
+    case R_LARCH_RELATIVE:
+      return reloc_class_relative;
+    case R_LARCH_JUMP_SLOT:
+      return reloc_class_plt;
+    case R_LARCH_COPY:
+      return reloc_class_copy;
+    default:
+      return reloc_class_normal;
+    }
+}
+
+/* Copy the extra info we tack onto an elf_link_hash_entry.  */
+
+static void
+loongarch_elf_copy_indirect_symbol (struct bfd_link_info *info,
+				    struct elf_link_hash_entry *dir,
+				    struct elf_link_hash_entry *ind)
+{
+  struct elf_link_hash_entry *edir, *eind;
+
+  edir = dir;
+  eind = 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)
+    {
+      loongarch_elf_hash_entry(edir)->tls_type
+	= loongarch_elf_hash_entry(eind)->tls_type;
+      loongarch_elf_hash_entry(eind)->tls_type = GOT_UNKNOWN;
+    }
+  _bfd_elf_link_hash_copy_indirect (info, dir, ind);
+}
+
+#define PRSTATUS_SIZE		    0x1d8
+#define PRSTATUS_OFFSET_PR_CURSIG   0xc
+#define PRSTATUS_OFFSET_PR_PID	    0x20
+#define ELF_GREGSET_T_SIZE	    0x168
+#define PRSTATUS_OFFSET_PR_REG	    0x70
+
+/* Support for core dump NOTE sections.  */
+
+static bool
+loongarch_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
+{
+  switch (note->descsz)
+    {
+    default:
+      return false;
+
+    /* The sizeof (struct elf_prstatus) on Linux/LoongArch.  */
+    case PRSTATUS_SIZE:
+      /* pr_cursig  */
+      elf_tdata (abfd)->core->signal =
+	bfd_get_16 (abfd, note->descdata + PRSTATUS_OFFSET_PR_CURSIG);
+
+      /* pr_pid  */
+      elf_tdata (abfd)->core->lwpid =
+	bfd_get_32 (abfd, note->descdata + PRSTATUS_OFFSET_PR_PID);
+      break;
+    }
+
+  /* Make a ".reg/999" section.  */
+  return _bfd_elfcore_make_pseudosection (abfd, ".reg", ELF_GREGSET_T_SIZE,
+					  note->descpos
+					  + PRSTATUS_OFFSET_PR_REG);
+}
+
+#define PRPSINFO_SIZE		    0x88
+#define PRPSINFO_OFFSET_PR_PID	    0x18
+#define PRPSINFO_OFFSET_PR_FNAME    0x28
+#define PRPSINFO_SIZEOF_PR_FNAME    0x10
+#define PRPSINFO_OFFSET_PR_PS_ARGS  0x38
+#define PRPSINFO_SIZEOF_PR_PS_ARGS  0x50
+
+static bool
+loongarch_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
+{
+  switch (note->descsz)
+    {
+    default:
+      return false;
+
+    /* The sizeof (prpsinfo_t) on Linux/LoongArch.  */
+    case PRPSINFO_SIZE:
+      /* pr_pid  */
+      elf_tdata (abfd)->core->pid =
+	bfd_get_32 (abfd, note->descdata + PRPSINFO_OFFSET_PR_PID);
+
+      /* pr_fname  */
+      elf_tdata (abfd)->core->program =
+	_bfd_elfcore_strndup (abfd, note->descdata + PRPSINFO_OFFSET_PR_FNAME,
+			      PRPSINFO_SIZEOF_PR_FNAME);
+
+      /* pr_psargs  */
+      elf_tdata (abfd)->core->command =
+	_bfd_elfcore_strndup (abfd, note->descdata + PRPSINFO_OFFSET_PR_PS_ARGS,
+			      PRPSINFO_SIZEOF_PR_PS_ARGS);
+      break;
+    }
+
+  /* Note that for some reason, a spurious space is tacked
+     onto the end of the args in some (at least one anyway)
+     implementations, so strip it off if it exists.  */
+
+  {
+    char *command = elf_tdata (abfd)->core->command;
+    int n = strlen (command);
+
+    if (0 < n && command[n - 1] == ' ')
+      command[n - 1] = '\0';
+  }
+
+  return true;
+}
+
+/* Set the right mach type.  */
+static bool
+loongarch_elf_object_p (bfd *abfd)
+{
+  /* There are only two mach types in LoongArch currently.  */
+  if (strcmp (abfd->xvec->name, "elf64-loongarch") == 0)
+    bfd_default_set_arch_mach (abfd, bfd_arch_loongarch, bfd_mach_loongarch64);
+  else
+    bfd_default_set_arch_mach (abfd, bfd_arch_loongarch, bfd_mach_loongarch32);
+  return true;
+}
+
+static asection *
+loongarch_elf_gc_mark_hook (asection *sec, struct bfd_link_info *info,
+			    Elf_Internal_Rela *rel,
+			    struct elf_link_hash_entry *h,
+			    Elf_Internal_Sym *sym)
+{
+  if (h != NULL)
+    switch (ELFNN_R_TYPE (rel->r_info))
+      {
+      case R_LARCH_GNU_VTINHERIT:
+      case R_LARCH_GNU_VTENTRY:
+	return NULL;
+      }
+
+  return _bfd_elf_gc_mark_hook (sec, info, rel, h, sym);
+}
+
+/* Return TRUE if symbol H should be hashed in the `.gnu.hash' section.  For
+   executable PLT slots where the executable never takes the address of those
+   functions, the function symbols are not added to the hash table.  */
+
+static bool
+elf_loongarch64_hash_symbol (struct elf_link_hash_entry *h)
+{
+  if (h->plt.offset != (bfd_vma) -1
+      && !h->def_regular
+      && !h->pointer_equality_needed)
+    return false;
+
+  return _bfd_elf_hash_symbol (h);
+}
+
+#define TARGET_LITTLE_SYM loongarch_elfNN_vec
+#define TARGET_LITTLE_NAME "elfNN-loongarch"
+#define ELF_ARCH bfd_arch_loongarch
+#define ELF_TARGET_ID LARCH_ELF_DATA
+#define ELF_MACHINE_CODE EM_LOONGARCH
+#define ELF_MINPAGESIZE 0x1000
+#define ELF_MAXPAGESIZE 0x10000
+#define ELF_COMMONPAGESIZE 0x4000
+#define bfd_elfNN_bfd_reloc_type_lookup loongarch_reloc_type_lookup
+#define bfd_elfNN_bfd_link_hash_table_create				  \
+  loongarch_elf_link_hash_table_create
+#define bfd_elfNN_bfd_reloc_name_lookup loongarch_reloc_name_lookup
+#define elf_info_to_howto_rel NULL /* Fall through to elf_info_to_howto.  */
+#define elf_info_to_howto loongarch_info_to_howto_rela
+#define bfd_elfNN_mkobject						  \
+  elfNN_loongarch_object
+#define bfd_elfNN_bfd_merge_private_bfd_data				  \
+  elfNN_loongarch_merge_private_bfd_data
+
+#define elf_backend_reloc_type_class loongarch_reloc_type_class
+#define elf_backend_copy_indirect_symbol loongarch_elf_copy_indirect_symbol
+#define elf_backend_create_dynamic_sections				   \
+  loongarch_elf_create_dynamic_sections
+#define elf_backend_check_relocs loongarch_elf_check_relocs
+#define elf_backend_adjust_dynamic_symbol loongarch_elf_adjust_dynamic_symbol
+#define elf_backend_late_size_sections loongarch_elf_late_size_sections
+#define elf_backend_relocate_section loongarch_elf_relocate_section
+#define elf_backend_finish_dynamic_symbol loongarch_elf_finish_dynamic_symbol
+#define elf_backend_output_arch_local_syms \
+  elf_loongarch_output_arch_local_syms
+#define elf_backend_finish_dynamic_sections				   \
+  loongarch_elf_finish_dynamic_sections
+#define elf_backend_object_p loongarch_elf_object_p
+#define elf_backend_gc_mark_hook loongarch_elf_gc_mark_hook
+#define elf_backend_plt_sym_val loongarch_elf_plt_sym_val
+#define elf_backend_grok_prstatus loongarch_elf_grok_prstatus
+#define elf_backend_grok_psinfo loongarch_elf_grok_psinfo
+#define elf_backend_hash_symbol elf_loongarch64_hash_symbol
+#define bfd_elfNN_bfd_relax_section loongarch_elf_relax_section
+#define elf_backend_size_relative_relocs loongarch_elf_size_relative_relocs
+#define elf_backend_finish_relative_relocs \
+  loongarch_elf_finish_relative_relocs
+#define bfd_elfNN_new_section_hook loongarch_elf_new_section_hook
+
+#define elf_backend_dtrel_excludes_plt 1
+
+#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.20200303/bfd/elfnn-riscv.c ./bfd/elfnn-riscv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfnn-riscv.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfnn-riscv.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    Contributed by Andrew Waterman (andrew@sifive.com).
    Based on TILE-Gx and MIPS targets.
@@ -31,9 +31,104 @@
 #include "elfxx-riscv.h"
 #include "elf/riscv.h"
 #include "opcode/riscv.h"
+#include "objalloc.h"
 
-/* Internal relocations used exclusively by the relaxation pass.  */
-#define R_RISCV_DELETE (R_RISCV_max + 1)
+#include <limits.h>
+#ifndef CHAR_BIT
+#define CHAR_BIT 8
+#endif
+
+/* True if dynamic relocation is needed.  If we are creating a shared library,
+   and this is a reloc against a global symbol, or a non PC relative reloc
+   against a local symbol, then we need to copy the reloc into the shared
+   library.  However, if we are linking with -Bsymbolic, we do not need to
+   copy a reloc against a global symbol which is defined in an object we are
+   including in the link (i.e., DEF_REGULAR is set).
+
+   At this point we have not seen all the input files, so it is possible that
+   DEF_REGULAR is not set now but will be set later (it is never cleared).
+   In case of a weak definition, DEF_REGULAR may be cleared later by a strong
+   definition in a shared library.  We account for that possibility below by
+   storing information in the relocs_copied field of the hash table entry.
+   A similar situation occurs when creating shared libraries and symbol
+   visibility changes render the symbol local.
+
+   If on the other hand, we are creating an executable, we may need to keep
+   relocations for symbols satisfied by a dynamic library if we manage to
+   avoid copy relocs for the symbol.
+
+   Generate dynamic pointer relocation against STT_GNU_IFUNC symbol in the
+   non-code section (R_RISCV_32/R_RISCV_64).  */
+#define RISCV_NEED_DYNAMIC_RELOC(PCREL, INFO, H, SEC) \
+  ((bfd_link_pic (INFO) \
+    && ((SEC)->flags & SEC_ALLOC) != 0 \
+    && (!(PCREL) \
+	|| ((H) != NULL \
+	    && (!(INFO)->symbolic \
+		|| (H)->root.type == bfd_link_hash_defweak \
+		|| !(H)->def_regular)))) \
+   || (!bfd_link_pic (INFO) \
+       && ((SEC)->flags & SEC_ALLOC) != 0 \
+       && (H) != NULL \
+       && ((H)->root.type == bfd_link_hash_defweak \
+	   || !(H)->def_regular)) \
+   || (!bfd_link_pic (INFO) \
+       && (H) != NULL \
+       && (H)->type == STT_GNU_IFUNC \
+       && ((SEC)->flags & SEC_CODE) == 0))
+
+/* True if dynamic relocation should be generated.  */
+#define RISCV_GENERATE_DYNAMIC_RELOC(PCREL, INFO, H, RESOLVED_TO_ZERO) \
+  ((bfd_link_pic (INFO) \
+    && ((H) == NULL \
+	|| (ELF_ST_VISIBILITY ((H)->other) == STV_DEFAULT && !(RESOLVED_TO_ZERO)) \
+	|| (H)->root.type != bfd_link_hash_undefweak) \
+    && (!(PCREL) \
+	|| !SYMBOL_CALLS_LOCAL ((INFO), (H)))) \
+   || (!bfd_link_pic (INFO) \
+       && (H) != NULL \
+       && (H)->dynindx != -1 \
+       && !(H)->non_got_ref \
+       && (((H)->def_dynamic && !(H)->def_regular) \
+	   || (H)->root.type == bfd_link_hash_undefweak \
+	   || (H)->root.type == bfd_link_hash_undefined)))
+
+/* True if this input relocation should be copied to output.  H->dynindx
+   may be -1 if this symbol was marked to become local.  */
+#define RISCV_COPY_INPUT_RELOC(INFO, H) \
+  ((H) != NULL \
+   && (H)->dynindx != -1 \
+   && (!bfd_link_pic (INFO) \
+       || !(bfd_link_pie ((INFO)) || SYMBOLIC_BIND ((INFO), (H))) \
+       || !(H)->def_regular))
+
+/* True if this is actually a static link, or it is a -Bsymbolic link
+   and the symbol is defined locally, or the symbol was forced to be
+   local because of a version file.  */
+#define RISCV_RESOLVED_LOCALLY(INFO, H) \
+  (!WILL_CALL_FINISH_DYNAMIC_SYMBOL (elf_hash_table (INFO)->dynamic_sections_created, \
+				     bfd_link_pic (INFO), (H)) \
+   || (bfd_link_pic (INFO) \
+       && SYMBOL_REFERENCES_LOCAL ((INFO), (H))))
+
+/* Set NEED_RELOC to true if TLS GD/IE needs dynamic relocations, and INDX will
+   be the dynamic index.  PR22263, use the same check in allocate_dynrelocs and
+   riscv_elf_relocate_section for TLS GD/IE.  */
+#define RISCV_TLS_GD_IE_NEED_DYN_RELOC(INFO, DYN, H, INDX, NEED_RELOC) \
+  do \
+    { \
+      if ((H) != NULL \
+	  && (H)->dynindx != -1 \
+	  && WILL_CALL_FINISH_DYNAMIC_SYMBOL ((DYN), bfd_link_pic (INFO), (H)) \
+	  && (bfd_link_dll (INFO) || !SYMBOL_REFERENCES_LOCAL ((INFO), (H)))) \
+	(INDX) = (H)->dynindx; \
+      if ((bfd_link_dll (INFO) || (INDX) != 0) \
+	  && ((H) == NULL \
+	      || ELF_ST_VISIBILITY ((H)->other) == STV_DEFAULT \
+	      || (H)->root.type != bfd_link_hash_undefweak)) \
+	(NEED_RELOC) = true; \
+    } \
+  while (0)
 
 #define ARCH_SIZE NN
 
@@ -55,25 +150,25 @@
 #define ELF_MAXPAGESIZE			0x1000
 #define ELF_COMMONPAGESIZE		0x1000
 
+#define RISCV_ATTRIBUTES_SECTION_NAME ".riscv.attributes"
+
 /* RISC-V ELF linker hash entry.  */
 
 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
-#define GOT_TLS_IE      4
-#define GOT_TLS_LE      8
+#define GOT_UNKNOWN	0
+#define GOT_NORMAL	1
+#define GOT_TLS_GD	2
+#define GOT_TLS_IE	4
+#define GOT_TLS_LE	8
+#define GOT_TLSDESC	16
   char tls_type;
 };
 
 #define riscv_elf_hash_entry(ent) \
-  ((struct riscv_elf_link_hash_entry *)(ent))
+  ((struct riscv_elf_link_hash_entry *) (ent))
 
 struct _bfd_riscv_elf_obj_tdata
 {
@@ -81,6 +176,11 @@ struct _bfd_riscv_elf_obj_tdata
 
   /* tls_type for each local got entry.  */
   char *local_got_tls_type;
+
+  /* All GNU_PROPERTY_RISCV_FEATURE_1_AND properties. */
+  uint32_t gnu_and_prop;
+  /* PLT type.  */
+  riscv_plt_type plt_type;
 };
 
 #define _bfd_riscv_elf_tdata(abfd) \
@@ -98,6 +198,13 @@ struct _bfd_riscv_elf_obj_tdata
    && elf_tdata (bfd) != NULL				\
    && elf_object_id (bfd) == RISCV_ELF_DATA)
 
+static bool
+elfNN_riscv_mkobject (bfd *abfd)
+{
+  return bfd_elf_allocate_object (abfd,
+				  sizeof (struct _bfd_riscv_elf_obj_tdata));
+}
+
 #include "elf/common.h"
 #include "elf/internal.h"
 
@@ -105,23 +212,74 @@ struct riscv_elf_link_hash_table
 {
   struct elf_link_hash_table elf;
 
+  /* Various options and other info passed from the linker.  */
+  struct riscv_elf_params *params;
+
   /* 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;
+
+  /* The max alignment of output sections in [gp-2K, gp+2K) range.  */
+  bfd_vma max_alignment_for_gp;
+
+  /* Used by local STT_GNU_IFUNC symbols.  */
+  htab_t loc_hash_table;
+  void * loc_hash_memory;
+
+  /* The index of the last unused .rel.iplt slot.  */
+  bfd_vma last_iplt_index;
+
+  /* The data segment phase, don't relax the section
+     when it is exp_seg_relro_adjust.  */
+  int *data_segment_phase;
+
+  /* Relocations for variant CC symbols may be present.  */
+  int variant_cc;
+
+  /* The number of bytes in the PLT header and enties.  */
+  bfd_size_type plt_header_size;
+  bfd_size_type plt_entry_size;
+
+  /* Functions to make PLT header and entries.  */
+  bool (*make_plt_header) (bfd *output_bfd, struct riscv_elf_link_hash_table *htab);
+  bool (*make_plt_entry) (bfd *output_bfd, asection *got, bfd_vma got_offset,
+			  asection *plt, bfd_vma plt_offset);
 };
 
+/* Instruction access functions. */
+#define riscv_get_insn(bits, ptr)		\
+  ((bits) == 16 ? bfd_getl16 (ptr)		\
+   : (bits) == 32 ? bfd_getl32 (ptr)		\
+   : (bits) == 64 ? bfd_getl64 (ptr)		\
+   : (abort (), (bfd_vma) - 1))
+#define riscv_put_insn(bits, val, ptr)		\
+  ((bits) == 16 ? bfd_putl16 (val, ptr)		\
+   : (bits) == 32 ? bfd_putl32 (val, ptr)	\
+   : (bits) == 64 ? bfd_putl64 (val, ptr)	\
+   : (abort (), (void) 0))
 
 /* 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)
+
+/* Forward declaration PLT related functions.  */
+static bool
+riscv_make_plt_header (bfd *, struct riscv_elf_link_hash_table *);
+static bool
+riscv_make_plt_entry (bfd *, asection *, bfd_vma, asection *, bfd_vma);
+
+void
+riscv_elfNN_set_options (struct bfd_link_info *link_info,
+			 struct riscv_elf_params *params)
+{
+  riscv_elf_hash_table (link_info)->params = params;
+}
 
-static bfd_boolean
+static bool
 riscv_info_to_howto_rela (bfd *abfd,
 			  arelent *cache_ptr,
 			  Elf_Internal_Rela *dst)
@@ -141,38 +299,83 @@ riscv_elf_append_rela (bfd *abfd, asecti
   bed->s->swap_reloca_out (abfd, rel, loc);
 }
 
-/* PLT/GOT stuff.  */
+/* Return true if a relocation is modifying an instruction. */
+
+static bool
+riscv_is_insn_reloc (const reloc_howto_type *howto)
+{
+  /* Heuristic: A multibyte destination with a nontrivial mask
+     is an instruction */
+  return (howto->bitsize > 8
+	  && howto->dst_mask != 0
+	  && ~(howto->dst_mask | (howto->bitsize < sizeof(bfd_vma) * CHAR_BIT
+	       ? (MINUS_ONE << howto->bitsize) : (bfd_vma)0)) != 0);
+}
 
+/* PLT/GOT stuff.  */
 #define PLT_HEADER_INSNS 8
 #define PLT_ENTRY_INSNS 4
 #define PLT_HEADER_SIZE (PLT_HEADER_INSNS * 4)
 #define PLT_ENTRY_SIZE (PLT_ENTRY_INSNS * 4)
 
-#define GOT_ENTRY_SIZE RISCV_ELF_WORD_BYTES
+#define PLT_ZICFILP_UNLABELED_HEADER_INSNS 12
+#define PLT_ZICFILP_UNLABELED_ENTRY_INSNS 4
+#define PLT_ZICFILP_UNLABELED_HEADER_SIZE (PLT_ZICFILP_UNLABELED_HEADER_INSNS * 4)
+#define PLT_ZICFILP_UNLABELED_ENTRY_SIZE (PLT_ZICFILP_UNLABELED_ENTRY_INSNS * 4)
 
+#define GOT_ENTRY_SIZE RISCV_ELF_WORD_BYTES
+#define TLS_GD_GOT_ENTRY_SIZE (RISCV_ELF_WORD_BYTES * 2)
+#define TLS_IE_GOT_ENTRY_SIZE RISCV_ELF_WORD_BYTES
+#define TLSDESC_GOT_ENTRY_SIZE (RISCV_ELF_WORD_BYTES * 2)
+/* Reserve two entries of GOTPLT for ld.so, one is used for PLT resolver,
+   the other is used for link map.  Other targets also reserve one more
+   entry used for runtime profile?  */
 #define GOTPLT_HEADER_SIZE (2 * GOT_ENTRY_SIZE)
 
 #define sec_addr(sec) ((sec)->output_section->vma + (sec)->output_offset)
 
-static bfd_vma
-riscv_elf_got_plt_val (bfd_vma plt_index, struct bfd_link_info *info)
-{
-  return sec_addr (riscv_elf_hash_table (info)->elf.sgotplt)
-	 + GOTPLT_HEADER_SIZE + (plt_index * GOT_ENTRY_SIZE);
-}
-
 #if ARCH_SIZE == 32
 # define MATCH_LREG MATCH_LW
 #else
 # define MATCH_LREG MATCH_LD
 #endif
 
+
+/* Check whether the compact PLT is used in this object.  Tools need this
+   to dump the correct PLT header contents.  */
+
+static long
+elfNN_riscv_get_synthetic_symtab (bfd *abfd,
+				  long symcount,
+				  asymbol **syms,
+				  long dynsymcount,
+				  asymbol **dynsyms,
+				  asymbol **ret)
+{
+  /* Check Zicfilp PLT.  */
+  elf_property *prop;
+  prop = _bfd_elf_get_property (abfd, GNU_PROPERTY_RISCV_FEATURE_1_AND, 4);
+  if (prop)
+    {
+      if (prop->u.number & GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED)
+	 _bfd_riscv_elf_tdata (abfd)->plt_type |= PLT_ZICFILP_UNLABELED;
+    }
+
+  return _bfd_elf_get_synthetic_symtab (abfd, symcount, syms,
+					dynsymcount, dynsyms, ret);
+}
+
 /* Generate a PLT header.  */
 
-static bfd_boolean
-riscv_make_plt_header (bfd *output_bfd, bfd_vma gotplt_addr, bfd_vma addr,
-		       uint32_t *entry)
+static bool
+riscv_make_plt_header (bfd *output_bfd, struct riscv_elf_link_hash_table *htab)
 {
+  asection *splt = htab->elf.splt;
+  bfd_vma addr = sec_addr (splt);
+
+  asection *sgotplt = htab->elf.sgotplt;
+  bfd_vma gotplt_addr = sec_addr (sgotplt);
+
   bfd_vma gotplt_offset_high = RISCV_PCREL_HIGH_PART (gotplt_addr, addr);
   bfd_vma gotplt_offset_low = RISCV_PCREL_LOW_PART (gotplt_addr, addr);
 
@@ -181,7 +384,7 @@ riscv_make_plt_header (bfd *output_bfd,
     {
       _bfd_error_handler (_("%pB: warning: RVE PLT generation not supported"),
 			  output_bfd);
-      return FALSE;
+      return false;
     }
 
   /* auipc  t2, %hi(.got.plt)
@@ -191,45 +394,148 @@ riscv_make_plt_header (bfd *output_bfd,
      addi   t0, t2, %lo(.got.plt)    # &.got.plt
      srli   t1, t1, log2(16/PTRSIZE) # .got.plt offset
      l[w|d] t0, PTRSIZE(t0)	     # link map
-     jr	    t3 */
+     jr	    t3  */
 
+  uint32_t entry[PLT_HEADER_INSNS];
   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);
   entry[7] = RISCV_ITYPE (JALR, 0, X_T3, 0);
 
-  return TRUE;
+  for (int i = 0; i < PLT_HEADER_INSNS; i++)
+    bfd_putl32 (entry[i], splt->contents + 4 * i);
+
+  return true;
+}
+
+static bool
+riscv_make_plt_zicfilp_unlabeled_header (bfd *output_bfd,
+					 struct riscv_elf_link_hash_table *htab)
+{
+  /*
+      lpad   0  # disable label checking
+      auipc  t2, %hi(.got.plt)          # Rewrite this to using
+      sub    t1, t1, t3                 # shifted .got.plt offset + hdr size + 16
+      l[w|d] t3, %lo(1b)(t2)            # _dl_runtime_resolve
+      addi   t1, t1, -(hdr size + 12)   # shifted .got.plt offset
+      addi   t0, t2, %pcrel_lo(1b)      # &.got.plt
+      srli   t1, t1, log2(16/PTRSIZE)   # .got.plt offset
+      l[w|d] t0, PTRSIZE(t0)            # link map
+      jr     t3
+      nop
+      nop
+      nop  */
+
+  /* RVE has no t3 register, so this won't work, and is not supported.  */
+  if (elf_elfheader (output_bfd)->e_flags & EF_RISCV_RVE)
+    {
+      _bfd_error_handler (_("%pB: warning: RVE PLT generation not supported"),
+			  output_bfd);
+      return false;
+    }
+
+  asection *gotplt = htab->elf.sgotplt;
+  bfd_vma gotplt_addr = sec_addr (gotplt);
+
+  asection *splt = htab->elf.splt;
+  bfd_vma plt_header_addr = sec_addr (splt);
+
+  bfd_vma auipc_addr = plt_header_addr + 4;
+  /* Add INSN_BYTES to skip the lpad instruction.  */
+  bfd_vma gotplt_offset_high = RISCV_PCREL_HIGH_PART (gotplt_addr, auipc_addr);
+  bfd_vma gotplt_offset_low = RISCV_PCREL_LOW_PART (gotplt_addr, auipc_addr);
+
+  uint32_t header[PLT_ZICFILP_UNLABELED_HEADER_INSNS];
+  header[0] = RISCV_UTYPE (LPAD, X_ZERO, 0);
+  header[1] = RISCV_UTYPE (AUIPC, X_T2, gotplt_offset_high);
+  header[2] = RISCV_RTYPE (SUB, X_T1, X_T1, X_T3);
+  header[3] = RISCV_ITYPE (LREG, X_T3, X_T2, gotplt_offset_low);
+  header[4] = RISCV_ITYPE (ADDI, X_T1, X_T1,
+			   (uint32_t) -(PLT_ZICFILP_UNLABELED_HEADER_SIZE + 16));
+  header[5] = RISCV_ITYPE (ADDI, X_T0, X_T2, gotplt_offset_low);
+  header[6] = RISCV_ITYPE (SRLI, X_T1, X_T1, 4 - RISCV_ELF_LOG_WORD_BYTES);
+  header[7] = RISCV_ITYPE (LREG, X_T0, X_T0, RISCV_ELF_WORD_BYTES);
+  header[8] = RISCV_ITYPE (JALR, 0, X_T3, 0);
+  header[9] = RISCV_NOP;
+  header[10] = RISCV_NOP;
+  header[11] = RISCV_NOP;
+
+  for (int i = 0; i < PLT_ZICFILP_UNLABELED_HEADER_INSNS; i++)
+    bfd_putl32 (header[i], splt->contents + 4 * i);
+
+  return true;
 }
 
 /* Generate a PLT entry.  */
 
-static bfd_boolean
-riscv_make_plt_entry (bfd *output_bfd, bfd_vma got, bfd_vma addr,
-		      uint32_t *entry)
+static bool
+riscv_make_plt_entry (bfd *output_bfd, asection *gotsec, bfd_vma got_offset,
+		      asection *pltsec, bfd_vma plt_offset)
 {
+  bfd_vma got = sec_addr (gotsec) + got_offset;
+  bfd_vma addr = sec_addr (pltsec) + plt_offset;
   /* RVE has no t3 register, so this won't work, and is not supported.  */
   if (elf_elfheader (output_bfd)->e_flags & EF_RISCV_RVE)
     {
       _bfd_error_handler (_("%pB: warning: RVE PLT generation not supported"),
 			  output_bfd);
-      return FALSE;
+      return false;
     }
 
   /* auipc  t3, %hi(.got.plt entry)
      l[w|d] t3, %lo(.got.plt entry)(t3)
      jalr   t1, t3
-     nop */
+     nop  */
 
+  uint32_t entry[PLT_ENTRY_INSNS];
   entry[0] = RISCV_UTYPE (AUIPC, X_T3, RISCV_PCREL_HIGH_PART (got, addr));
   entry[1] = RISCV_ITYPE (LREG,  X_T3, X_T3, RISCV_PCREL_LOW_PART (got, addr));
   entry[2] = RISCV_ITYPE (JALR, X_T1, X_T3, 0);
   entry[3] = RISCV_NOP;
 
-  return TRUE;
+  bfd_byte *loc = pltsec->contents + plt_offset;
+  for (int i = 0; i < PLT_ENTRY_INSNS; i++)
+    bfd_putl32 (entry[i], loc + 4 * i);
+
+  return true;
+}
+
+static bool
+riscv_make_plt_zicfilp_unlabeled_entry (bfd *output_bfd, asection *got,
+					bfd_vma got_offset, asection *plt,
+					bfd_vma plt_offset)
+{
+  /*    lpad    0
+    1:  auipc   t3, %pcrel_hi(function@.got.plt)
+	l[w|d]  t3, %pcrel_lo(1b)(t3)
+	jalr    t1, t3 */
+
+  /* RVE has no t3 register, so this won't work, and is not supported.  */
+  if (elf_elfheader (output_bfd)->e_flags & EF_RISCV_RVE)
+    {
+      _bfd_error_handler (_("%pB: warning: RVE PLT generation not supported"),
+			  output_bfd);
+      return false;
+    }
+
+  bfd_vma got_entry_addr = sec_addr(got) + got_offset;
+  bfd_vma plt_entry_addr = sec_addr(plt) + plt_offset;
+  bfd_vma auipc_addr = plt_entry_addr + 4;
+  uint32_t entry[PLT_ZICFILP_UNLABELED_ENTRY_INSNS];
+  entry[0] = RISCV_UTYPE (LPAD, X_ZERO, 0);
+  entry[1] = RISCV_UTYPE (AUIPC, X_T3, RISCV_PCREL_HIGH_PART (got_entry_addr, auipc_addr));
+  entry[2] = RISCV_ITYPE (LREG,  X_T3, X_T3, RISCV_PCREL_LOW_PART (got_entry_addr, auipc_addr));
+  entry[3] = RISCV_ITYPE (JALR, X_T1, X_T3, 0);
+
+  bfd_byte *loc = plt->contents + plt_offset;
+  for (int i = 0; i < PLT_ZICFILP_UNLABELED_ENTRY_INSNS; i++)
+    bfd_putl32 (entry[i], loc + 4 * i);
+
+  return true;
 }
 
 /* Create an entry in an RISC-V ELF linker hash table.  */
@@ -256,40 +562,167 @@ 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;
     }
 
   return entry;
 }
 
+/* Compute a hash of a local hash entry.  We use elf_link_hash_entry
+   for local symbol so that we can handle local STT_GNU_IFUNC symbols
+   as global symbol.  We reuse indx and dynstr_index for local symbol
+   hash since they aren't used by global symbols in this backend.  */
+
+static hashval_t
+riscv_elf_local_htab_hash (const void *ptr)
+{
+  struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) ptr;
+  return ELF_LOCAL_SYMBOL_HASH (h->indx, h->dynstr_index);
+}
+
+/* Compare local hash entries.  */
+
+static int
+riscv_elf_local_htab_eq (const void *ptr1, const void *ptr2)
+{
+  struct elf_link_hash_entry *h1 = (struct elf_link_hash_entry *) ptr1;
+  struct elf_link_hash_entry *h2 = (struct elf_link_hash_entry *) ptr2;
+
+  return h1->indx == h2->indx && h1->dynstr_index == h2->dynstr_index;
+}
+
+/* Find and/or create a hash entry for local symbol.  */
+
+static struct elf_link_hash_entry *
+riscv_elf_get_local_sym_hash (struct riscv_elf_link_hash_table *htab,
+			      bfd *abfd, const Elf_Internal_Rela *rel,
+			      bool create)
+{
+  struct riscv_elf_link_hash_entry eh, *ret;
+  asection *sec = abfd->sections;
+  hashval_t h = ELF_LOCAL_SYMBOL_HASH (sec->id,
+				       ELFNN_R_SYM (rel->r_info));
+  void **slot;
+
+  eh.elf.indx = sec->id;
+  eh.elf.dynstr_index = ELFNN_R_SYM (rel->r_info);
+  slot = htab_find_slot_with_hash (htab->loc_hash_table, &eh, h,
+				   create ? INSERT : NO_INSERT);
+
+  if (!slot)
+    return NULL;
+
+  if (*slot)
+    {
+      ret = (struct riscv_elf_link_hash_entry *) *slot;
+      return &ret->elf;
+    }
+
+  ret = (struct riscv_elf_link_hash_entry *)
+	objalloc_alloc ((struct objalloc *) htab->loc_hash_memory,
+			sizeof (struct riscv_elf_link_hash_entry));
+  if (ret)
+    {
+      memset (ret, 0, sizeof (*ret));
+      ret->elf.indx = sec->id;
+      ret->elf.dynstr_index = ELFNN_R_SYM (rel->r_info);
+      ret->elf.dynindx = -1;
+      *slot = ret;
+    }
+  return &ret->elf;
+}
+
+/* Destroy a RISC-V elf linker hash table.  */
+
+static void
+riscv_elf_link_hash_table_free (bfd *obfd)
+{
+  struct riscv_elf_link_hash_table *ret
+    = (struct riscv_elf_link_hash_table *) obfd->link.hash;
+
+  if (ret->loc_hash_table)
+    htab_delete (ret->loc_hash_table);
+  if (ret->loc_hash_memory)
+    objalloc_free ((struct objalloc *) ret->loc_hash_memory);
+
+  _bfd_elf_link_hash_table_free (obfd);
+}
+
+/* Set up the PLT generation stubs in the hash table.  */
+
+static void
+setup_plt_values (struct bfd *output_bfd,
+		  struct riscv_elf_link_hash_table *htab,
+		  unsigned plt_type)
+{
+  switch (plt_type)
+    {
+    case PLT_NORMAL:
+      htab->plt_header_size = PLT_HEADER_SIZE;
+      htab->plt_entry_size = PLT_ENTRY_SIZE;
+      htab->make_plt_header = riscv_make_plt_header;
+      htab->make_plt_entry = riscv_make_plt_entry;
+      break;
+
+    case PLT_ZICFILP_UNLABELED:
+      htab->plt_header_size = PLT_ZICFILP_UNLABELED_HEADER_SIZE;
+      htab->plt_entry_size = PLT_ZICFILP_UNLABELED_ENTRY_SIZE;
+      htab->make_plt_header = riscv_make_plt_zicfilp_unlabeled_header;
+      htab->make_plt_entry = riscv_make_plt_zicfilp_unlabeled_entry;
+      break;
+
+    default:
+      _bfd_error_handler (_("%pB: error: unsupported PLT type: %u"),
+			  output_bfd,
+			  plt_type);
+      bfd_set_error (bfd_error_bad_value);
+      break;
+    }
+}
+
 /* Create a RISC-V ELF linker hash table.  */
 
 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)
     return NULL;
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
-				      sizeof (struct riscv_elf_link_hash_entry),
-				      RISCV_ELF_DATA))
+				      sizeof (struct riscv_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
     }
 
   ret->max_alignment = (bfd_vma) -1;
+  ret->max_alignment_for_gp = (bfd_vma) -1;
+
+  setup_plt_values (abfd, ret, PLT_NORMAL);
+
+  /* Create hash table for local ifunc.  */
+  ret->loc_hash_table = htab_try_create (1024,
+					 riscv_elf_local_htab_hash,
+					 riscv_elf_local_htab_eq,
+					 NULL);
+  ret->loc_hash_memory = objalloc_create ();
+  if (!ret->loc_hash_table || !ret->loc_hash_memory)
+    {
+      riscv_elf_link_hash_table_free (abfd);
+      return NULL;
+    }
+  ret->elf.root.hash_table_free = riscv_elf_link_hash_table_free;
+
   return &ret->elf.root;
 }
 
 /* Create the .got section.  */
 
-static bfd_boolean
+static bool
 riscv_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags;
@@ -300,7 +733,7 @@ riscv_elf_create_got_section (bfd *abfd,
 
   /* This function may be called more than once.  */
   if (htab->sgot != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
 
@@ -311,13 +744,13 @@ riscv_elf_create_got_section (bfd *abfd,
 					   | SEC_READONLY));
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->srelgot = s;
 
   s = s_got = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->sgot = s;
 
   /* The first bit of the global offset table is the header.  */
@@ -328,7 +761,7 @@ riscv_elf_create_got_section (bfd *abfd,
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->sgotplt = s;
 
       /* Reserve room for the header.  */
@@ -345,17 +778,17 @@ riscv_elf_create_got_section (bfd *abfd,
 				       "_GLOBAL_OFFSET_TABLE_");
       elf_hash_table (info)->hgot = h;
       if (h == NULL)
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create .plt, .rela.plt, .got, .got.plt, .rela.got, .dynbss, and
    .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
    hash table.  */
 
-static bfd_boolean
+static bool
 riscv_elf_create_dynamic_sections (bfd *dynobj,
 				   struct bfd_link_info *info)
 {
@@ -365,10 +798,10 @@ riscv_elf_create_dynamic_sections (bfd *
   BFD_ASSERT (htab != NULL);
 
   if (!riscv_elf_create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   if (!_bfd_elf_create_dynamic_sections (dynobj, info))
-    return FALSE;
+    return false;
 
   if (!bfd_link_pic (info))
     {
@@ -396,7 +829,7 @@ riscv_elf_create_dynamic_sections (bfd *
       || (!bfd_link_pic (info) && (!htab->elf.srelbss || !htab->sdyntdata)))
     abort ();
 
-  return TRUE;
+  return true;
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -411,37 +844,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)
     {
@@ -451,7 +853,7 @@ riscv_elf_copy_indirect_symbol (struct b
   _bfd_elf_link_hash_copy_indirect (info, dir, ind);
 }
 
-static bfd_boolean
+static bool
 riscv_elf_record_tls_type (bfd *abfd, struct elf_link_hash_entry *h,
 			   unsigned long symndx, char tls_type)
 {
@@ -463,12 +865,12 @@ riscv_elf_record_tls_type (bfd *abfd, st
       (*_bfd_error_handler)
 	(_("%pB: `%s' accessed both as normal and thread local symbol"),
 	 abfd, h ? h->root.root.string : "<local>");
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 riscv_elf_record_got_reference (bfd *abfd, struct bfd_link_info *info,
 				struct elf_link_hash_entry *h, long symndx)
 {
@@ -478,13 +880,13 @@ riscv_elf_record_got_reference (bfd *abf
   if (htab->elf.sgot == NULL)
     {
       if (!riscv_elf_create_got_section (htab->elf.dynobj, info))
-	return FALSE;
+	return false;
     }
 
   if (h != NULL)
     {
       h->got.refcount += 1;
-      return TRUE;
+      return true;
     }
 
   /* This is a global offset table entry for a local symbol.  */
@@ -492,33 +894,37 @@ riscv_elf_record_got_reference (bfd *abf
     {
       bfd_size_type size = symtab_hdr->sh_info * (sizeof (bfd_vma) + 1);
       if (!(elf_local_got_refcounts (abfd) = bfd_zalloc (abfd, size)))
-	return FALSE;
+	return false;
       _bfd_riscv_elf_local_got_tls_type (abfd)
 	= (char *) (elf_local_got_refcounts (abfd) + symtab_hdr->sh_info);
     }
   elf_local_got_refcounts (abfd) [symndx] += 1;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bad_static_reloc (bfd *abfd, unsigned r_type, struct elf_link_hash_entry *h)
 {
   reloc_howto_type * r = riscv_elf_rtype_to_howto (abfd, r_type);
 
+  /* We propably can improve the information to tell users that they
+     should be recompile the code with -fPIC or -fPIE, just like what
+     x86 does.  */
   (*_bfd_error_handler)
     (_("%pB: relocation %s against `%s' can not be used when making a shared "
        "object; recompile with -fPIC"),
      abfd, r ? r->name : _("<unknown>"),
      h != NULL ? h->root.root.string : "a local symbol");
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
+
 /* Look through the relocs for a section during the first phase, and
    allocate space in the global offset table or procedure linkage
    table.  */
 
-static bfd_boolean
+static bool
 riscv_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -529,7 +935,7 @@ riscv_elf_check_relocs (bfd *abfd, struc
   asection *sreloc = NULL;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = riscv_elf_hash_table (info);
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -543,6 +949,7 @@ riscv_elf_check_relocs (bfd *abfd, struc
       unsigned int r_type;
       unsigned int r_symndx;
       struct elf_link_hash_entry *h;
+      bool is_abs_symbol = false;
 
       r_symndx = ELFNN_R_SYM (rel->r_info);
       r_type = ELFNN_R_TYPE (rel->r_info);
@@ -551,17 +958,72 @@ riscv_elf_check_relocs (bfd *abfd, struc
 	{
 	  (*_bfd_error_handler) (_("%pB: bad symbol index: %d"),
 				 abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       if (r_symndx < symtab_hdr->sh_info)
-	h = NULL;
+	{
+	  /* A local symbol.  */
+	  Elf_Internal_Sym *isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache,
+							  abfd, r_symndx);
+	  if (isym == NULL)
+	    return false;
+
+	  is_abs_symbol = isym->st_shndx == SHN_ABS ? true : false;
+
+	  /* Check relocation against local STT_GNU_IFUNC symbol.  */
+	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
+	    {
+	      h = riscv_elf_get_local_sym_hash (htab, abfd, rel, true);
+	      if (h == NULL)
+		return false;
+
+	      /* Fake STT_GNU_IFUNC global symbol.  */
+	      h->root.root.string = bfd_elf_sym_name (abfd, symtab_hdr,
+						      isym, NULL);
+	      h->type = STT_GNU_IFUNC;
+	      h->def_regular = 1;
+	      h->ref_regular = 1;
+	      h->forced_local = 1;
+	      h->root.type = bfd_link_hash_defined;
+	    }
+	  else
+	    h = NULL;
+	}
       else
 	{
 	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
 	  while (h->root.type == bfd_link_hash_indirect
 		 || h->root.type == bfd_link_hash_warning)
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
+
+	  is_abs_symbol = bfd_is_abs_symbol (&h->root) ? true : false;
+	}
+
+      if (h != NULL)
+	{
+	  switch (r_type)
+	    {
+	    case R_RISCV_32:
+	    case R_RISCV_64:
+	    case R_RISCV_CALL:
+	    case R_RISCV_CALL_PLT:
+	    case R_RISCV_HI20:
+	    case R_RISCV_GOT_HI20:
+	    case R_RISCV_PCREL_HI20:
+	      /* Create the ifunc sections, iplt and ipltgot, for static
+		 executables.  */
+	      if (h->type == STT_GNU_IFUNC
+		  && !_bfd_elf_create_ifunc_sections (htab->elf.dynobj, info))
+		return false;
+	      break;
+
+	    default:
+	      break;
+	    }
+
+	  /* It is referenced by a non-shared object.  */
+	  h->ref_regular = 1;
 	}
 
       switch (r_type)
@@ -569,114 +1031,171 @@ riscv_elf_check_relocs (bfd *abfd, struc
 	case R_RISCV_TLS_GD_HI20:
 	  if (!riscv_elf_record_got_reference (abfd, info, h, r_symndx)
 	      || !riscv_elf_record_tls_type (abfd, h, r_symndx, GOT_TLS_GD))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_RISCV_TLS_GOT_HI20:
-	  if (bfd_link_pic (info))
+	  if (bfd_link_dll (info))
 	    info->flags |= DF_STATIC_TLS;
 	  if (!riscv_elf_record_got_reference (abfd, info, h, r_symndx)
 	      || !riscv_elf_record_tls_type (abfd, h, r_symndx, GOT_TLS_IE))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_RISCV_GOT_HI20:
 	  if (!riscv_elf_record_got_reference (abfd, info, h, r_symndx)
 	      || !riscv_elf_record_tls_type (abfd, h, r_symndx, GOT_NORMAL))
-	    return FALSE;
+	    return false;
+	  break;
+
+	case R_RISCV_TLSDESC_HI20:
+	  if (!riscv_elf_record_got_reference (abfd, info, h, r_symndx)
+	      || !riscv_elf_record_tls_type (abfd, h, r_symndx, GOT_TLSDESC))
+	    return false;
 	  break;
 
+	case R_RISCV_CALL:
 	case R_RISCV_CALL_PLT:
-	  /* This 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
+	  /* These symbol requires a procedure linkage table entry.
+	     We actually build the entry in adjust_dynamic_symbol,
+	     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)
+	  /* 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_PCREL_HI20:
+	  if (h != NULL
+	      && h->type == STT_GNU_IFUNC)
 	    {
-	      h->needs_plt = 1;
+	      h->non_got_ref = 1;
+	      h->pointer_equality_needed = 1;
+
+	      /* We don't use the PCREL_HI20 in the data section,
+		 so we always need the plt when it refers to
+		 ifunc symbol.  */
 	      h->plt.refcount += 1;
 	    }
-	  break;
 
-	case R_RISCV_CALL:
+	  /* The non-preemptible absolute symbol shouldn't be referneced with
+	     pc-relative relocation when generating shared object.  However,
+	     PCREL_HI20/LO12 relocs are always bind locally when generating
+	     shared object, so all absolute symbol referenced need to be
+	     disallowed, except they are defined in linker script.
+
+	     Maybe we should add this check for all pc-relative relocations,
+	     please see pr28789 and pr25749 for details.  */
+	  if (bfd_link_pic (info)
+	      /* (h == NULL || SYMBOL_REFERENCES_LOCAL (info, h))  */
+	      && is_abs_symbol)
+	    {
+	      if (h != NULL && (h)->root.ldscript_def)
+		/* Disallow the absolute symbol defined in linker script here
+		   will cause the glibc-linux toolchain build failed, so regard
+		   them as pc-relative symbols, just like what x86 did.  */
+		;
+	      else
+		{
+		  const char *name;
+		  if (h->root.root.string)
+		    name = h->root.root.string;
+		  else
+		    {
+		      Elf_Internal_Sym *sym;
+		      sym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, abfd,
+						   r_symndx);
+		      name = bfd_elf_sym_name (abfd, symtab_hdr, sym, NULL);
+		    }
+
+		  reloc_howto_type *r_t =
+			riscv_elf_rtype_to_howto (abfd, r_type);
+		  _bfd_error_handler
+		    (_("%pB: relocation %s against absolute symbol `%s' can "
+		       "not be used when making a shared object"),
+		     abfd, r_t ? r_t->name : _("<unknown>"), name);
+		  bfd_set_error (bfd_error_bad_value);
+		  return false;
+		}
+	    }
+	  /* Fall through.  */
+
 	case R_RISCV_JAL:
 	case R_RISCV_BRANCH:
 	case R_RISCV_RVC_BRANCH:
 	case R_RISCV_RVC_JUMP:
-	case R_RISCV_PCREL_HI20:
-	  /* In shared libraries, these relocs are known to bind locally.  */
+	  /* In shared libraries and pie, these relocs are known
+	     to bind locally.  */
 	  if (bfd_link_pic (info))
 	    break;
 	  goto static_reloc;
 
 	case R_RISCV_TPREL_HI20:
+	  /* This is not allowed in the pic, but okay in pie.  */
 	  if (!bfd_link_executable (info))
 	    return bad_static_reloc (abfd, r_type, h);
 	  if (h != NULL)
 	    riscv_elf_record_tls_type (abfd, h, r_symndx, GOT_TLS_LE);
-	  goto static_reloc;
+	  break;
 
 	case R_RISCV_HI20:
 	  if (bfd_link_pic (info))
 	    return bad_static_reloc (abfd, r_type, h);
-	  /* Fall through.  */
+	  goto static_reloc;
+
+	case R_RISCV_32:
+	  if (ARCH_SIZE > 32
+	      && bfd_link_pic (info)
+	      && (sec->flags & SEC_ALLOC) != 0)
+	    {
+	      if (is_abs_symbol)
+		break;
+
+	      reloc_howto_type *r_t = riscv_elf_rtype_to_howto (abfd, r_type);
+	      _bfd_error_handler
+		(_("%pB: relocation %s against non-absolute symbol `%s' can "
+		   "not be used in RVNN when making a shared object"),
+		 abfd, r_t ? r_t->name : _("<unknown>"),
+		 h != NULL ? h->root.root.string : "a local symbol");
+	      bfd_set_error (bfd_error_bad_value);
+	      return false;
+	    }
+	  goto static_reloc;
 
 	case R_RISCV_COPY:
 	case R_RISCV_JUMP_SLOT:
 	case R_RISCV_RELATIVE:
 	case R_RISCV_64:
-	case R_RISCV_32:
 	  /* Fall through.  */
 
 	static_reloc:
-	  /* This reloc might not bind locally.  */
-	  if (h != NULL)
-	    h->non_got_ref = 1;
 
-	  if (h != NULL && !bfd_link_pic (info))
+	  if (h != NULL
+	      && (!bfd_link_pic (info)
+		  || h->type == STT_GNU_IFUNC))
 	    {
-	      /* We may need a .plt entry if the function this reloc
-		 refers to is in a shared lib.  */
-	      h->plt.refcount += 1;
+	      /* This reloc might not bind locally.  */
+	      h->non_got_ref = 1;
+	      h->pointer_equality_needed = 1;
+
+	      if (!h->def_regular
+		  || (sec->flags & (SEC_CODE | SEC_READONLY)) != 0)
+		{
+		  /* We may need a .plt entry if the symbol is a function
+		     defined in a shared lib or is a function referenced
+		     from the code or read-only section.  */
+		  h->plt.refcount += 1;
+		}
 	    }
 
-	  /* If we are creating a shared library, and this is a reloc
-	     against a global symbol, or a non PC relative reloc
-	     against a local symbol, then we need to copy the reloc
-	     into the shared library.  However, if we are linking with
-	     -Bsymbolic, we do not need to copy a reloc against a
-	     global symbol which is defined in an object we are
-	     including in the link (i.e., DEF_REGULAR is set).  At
-	     this point we have not seen all the input files, so it is
-	     possible that DEF_REGULAR is not set now but will be set
-	     later (it is never cleared).  In case of a weak definition,
-	     DEF_REGULAR may be cleared later by a strong definition in
-	     a shared library.  We account for that possibility below by
-	     storing information in the relocs_copied field of the hash
-	     table entry.  A similar situation occurs when creating
-	     shared libraries and symbol visibility changes render the
-	     symbol local.
-
-	     If on the other hand, we are creating an executable, we
-	     may need to keep relocations for symbols satisfied by a
-	     dynamic library if we manage to avoid copy relocs for the
-	     symbol.  */
-	  reloc_howto_type * r = riscv_elf_rtype_to_howto (abfd, r_type);
-
-	  if ((bfd_link_pic (info)
-	       && (sec->flags & SEC_ALLOC) != 0
-	       && ((r != NULL && ! r->pc_relative)
-		   || (h != NULL
-		       && (! info->symbolic
-			   || h->root.type == bfd_link_hash_defweak
-			   || !h->def_regular))))
-	      || (!bfd_link_pic (info)
-		  && (sec->flags & SEC_ALLOC) != 0
-		  && h != NULL
-		  && (h->root.type == bfd_link_hash_defweak
-		      || !h->def_regular)))
+	  reloc_howto_type *r = riscv_elf_rtype_to_howto (abfd, r_type);
+	  if (RISCV_NEED_DYNAMIC_RELOC (r->pc_relative, info, h, sec))
 	    {
 	      struct elf_dyn_relocs *p;
 	      struct elf_dyn_relocs **head;
@@ -688,16 +1207,16 @@ riscv_elf_check_relocs (bfd *abfd, struc
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
 		    (sec, htab->elf.dynobj, RISCV_ELF_LOG_WORD_BYTES,
-		    abfd, /*rela?*/ TRUE);
+		    abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* 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,10 +1227,10 @@ 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;
+		    return false;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
@@ -724,11 +1243,11 @@ 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)
-		    return FALSE;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -742,57 +1261,12 @@ riscv_elf_check_relocs (bfd *abfd, struc
 
 	  break;
 
-	case R_RISCV_GNU_VTINHERIT:
-	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
-	  break;
-
-	case R_RISCV_GNU_VTENTRY:
-	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
-	  break;
-
 	default:
 	  break;
 	}
     }
 
-  return TRUE;
-}
-
-static asection *
-riscv_elf_gc_mark_hook (asection *sec,
-			struct bfd_link_info *info,
-			Elf_Internal_Rela *rel,
-			struct elf_link_hash_entry *h,
-			Elf_Internal_Sym *sym)
-{
-  if (h != NULL)
-    switch (ELFNN_R_TYPE (rel->r_info))
-      {
-      case R_RISCV_GNU_VTINHERIT:
-      case R_RISCV_GNU_VTENTRY:
-	return NULL;
-      }
-
-  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;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -801,7 +1275,7 @@ readonly_dynrelocs (struct elf_link_hash
    change the definition to something the rest of the link can
    understand.  */
 
-static bfd_boolean
+static bool
 riscv_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				 struct elf_link_hash_entry *h)
 {
@@ -830,9 +1304,10 @@ riscv_elf_adjust_dynamic_symbol (struct
   if (h->type == STT_FUNC || h->type == STT_GNU_IFUNC || h->needs_plt)
     {
       if (h->plt.refcount <= 0
-	  || SYMBOL_CALLS_LOCAL (info, h)
-	  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
-	      && h->root.type == bfd_link_hash_undefweak))
+	  || (h->type != STT_GNU_IFUNC
+	      && (SYMBOL_CALLS_LOCAL (info, h)
+		  || (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
+		      && h->root.type == bfd_link_hash_undefweak))))
 	{
 	  /* This case can occur if we saw a R_RISCV_CALL_PLT reloc in an
 	     input file, but the symbol was never referred to by a dynamic
@@ -842,7 +1317,7 @@ riscv_elf_adjust_dynamic_symbol (struct
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -856,7 +1331,7 @@ riscv_elf_adjust_dynamic_symbol (struct
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -867,26 +1342,26 @@ riscv_elf_adjust_dynamic_symbol (struct
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -931,44 +1406,57 @@ riscv_elf_adjust_dynamic_symbol (struct
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   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)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = riscv_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
 
-  if (htab->elf.dynamic_sections_created
-      && h->plt.refcount > 0)
+  /* When we are generating pde, make sure gp symbol is output as a
+     dynamic symbol.  Then ld.so can set the gp register earlier, before
+     resolving the ifunc.  */
+  if (!bfd_link_pic (info)
+      && htab->elf.dynamic_sections_created
+      && strcmp (h->root.root.string, RISCV_GP_SYMBOL) == 0
+      && !bfd_elf_link_record_dynamic_symbol (info, h))
+    return false;
+
+  /* Since STT_GNU_IFUNC symbols must go through PLT, we handle them
+     in the allocate_ifunc_dynrelocs and allocate_local_ifunc_dynrelocs,
+     if they are defined and referenced in a non-shared object.  */
+  if (h->type == STT_GNU_IFUNC
+      && h->def_regular)
+    return true;
+  else if (htab->elf.dynamic_sections_created
+	   && h->plt.refcount > 0)
     {
       /* Make sure this symbol is output as a dynamic symbol.
 	 Undefined weak syms won't yet be marked as dynamic.  */
       if (h->dynindx == -1
-	  && !h->forced_local)
-	{
-	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
-	}
+	  && !h->forced_local
+	  && h->root.type == bfd_link_hash_undefweak
+	  && !bfd_elf_link_record_dynamic_symbol (info, h))
+	return false;
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
 	{
 	  asection *s = htab->elf.splt;
 
 	  if (s->size == 0)
-	    s->size = PLT_HEADER_SIZE;
+	    s->size = htab->plt_header_size;
 
 	  h->plt.offset = s->size;
 
 	  /* Make room for this entry.  */
-	  s->size += PLT_ENTRY_SIZE;
+	  s->size += htab->plt_entry_size;
 
 	  /* We also need to make an entry in the .got.plt section.  */
 	  htab->elf.sgotplt->size += GOT_ENTRY_SIZE;
@@ -987,6 +1475,11 @@ allocate_dynrelocs (struct elf_link_hash
 	      h->root.u.def.section = s;
 	      h->root.u.def.value = h->plt.offset;
 	    }
+
+	  /* If the symbol has STO_RISCV_VARIANT_CC flag, then raise the
+	     variant_cc flag of riscv_elf_link_hash_table.  */
+	  if (h->other & STO_RISCV_VARIANT_CC)
+	    htab->variant_cc = 1;
 	}
       else
 	{
@@ -1003,41 +1496,57 @@ allocate_dynrelocs (struct elf_link_hash
   if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn = htab->elf.dynamic_sections_created;
       int tls_type = riscv_elf_hash_entry (h)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
 	 Undefined weak syms won't yet be marked as dynamic.  */
-      if (h->dynindx == -1
-	  && !h->forced_local)
-	{
-	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
-	}
+      if (dyn
+	  && h->dynindx == -1
+	  && !h->forced_local
+	  && h->root.type == bfd_link_hash_undefweak
+	  && !bfd_elf_link_record_dynamic_symbol (info, h))
+	return false;
 
       s = htab->elf.sgot;
       h->got.offset = s->size;
-      dyn = htab->elf.dynamic_sections_created;
-      if (tls_type & (GOT_TLS_GD | GOT_TLS_IE))
+      if (tls_type & (GOT_TLS_GD | GOT_TLS_IE | GOT_TLSDESC))
 	{
+	  int indx = 0;
+	  bool need_reloc = false;
+	  RISCV_TLS_GD_IE_NEED_DYN_RELOC(info, dyn, h, indx, need_reloc);
+
 	  /* TLS_GD needs two dynamic relocs and two GOT slots.  */
 	  if (tls_type & GOT_TLS_GD)
 	    {
-	      s->size += 2 * RISCV_ELF_WORD_BYTES;
-	      htab->elf.srelgot->size += 2 * sizeof (ElfNN_External_Rela);
+	      s->size += TLS_GD_GOT_ENTRY_SIZE;
+	      if (need_reloc)
+		htab->elf.srelgot->size += 2 * sizeof (ElfNN_External_Rela);
 	    }
 
 	  /* TLS_IE needs one dynamic reloc and one GOT slot.  */
 	  if (tls_type & GOT_TLS_IE)
 	    {
-	      s->size += RISCV_ELF_WORD_BYTES;
+	      s->size += TLS_IE_GOT_ENTRY_SIZE;
+	      if (need_reloc)
+		htab->elf.srelgot->size += sizeof (ElfNN_External_Rela);
+	    }
+
+	  /* TLSDESC needs one dynamic reloc and two GOT slots.  */
+	  if (tls_type & GOT_TLSDESC)
+	    {
+	      s->size += TLSDESC_GOT_ENTRY_SIZE;
+	      /* TLSDESC always use dynamic relocs.  */
 	      htab->elf.srelgot->size += sizeof (ElfNN_External_Rela);
 	    }
 	}
       else
 	{
-	  s->size += RISCV_ELF_WORD_BYTES;
-	  if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, bfd_link_pic (info), h)
+	  s->size += GOT_ENTRY_SIZE;
+	  if ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+	       || h->root.type != bfd_link_hash_undefweak)
+	      && (bfd_link_pic (info)
+		  || WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, 0, h))
 	      && ! UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
 	    htab->elf.srelgot->size += sizeof (ElfNN_External_Rela);
 	}
@@ -1045,9 +1554,8 @@ 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)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -1061,7 +1569,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,21 +1582,19 @@ 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.  */
 	  else if (h->dynindx == -1
-		   && !h->forced_local)
-	    {
-	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
-	    }
+		   && !h->forced_local
+		   && !bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
 	}
     }
   else
@@ -1107,11 +1613,10 @@ allocate_dynrelocs (struct elf_link_hash
 	  /* Make sure this symbol is output as a dynamic symbol.
 	     Undefined weak syms won't yet be marked as dynamic.  */
 	  if (h->dynindx == -1
-	      && !h->forced_local)
-	    {
-	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
-	    }
+	      && !h->forced_local
+	      && h->root.type == bfd_link_hash_undefweak
+	      && !bfd_elf_link_record_dynamic_symbol (info, h))
+	    return false;
 
 	  /* If that succeeded, we know we'll be keeping all the
 	     relocs.  */
@@ -1119,50 +1624,76 @@ 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)
     {
+      if (discarded_section (p->sec))
+	continue;
       asection *sreloc = elf_section_data (p->sec)->sreloc;
       sreloc->size += p->count * sizeof (ElfNN_External_Rela);
     }
 
-  return TRUE;
+  return true;
 }
 
-/* Set DF_TEXTREL if we find any dynamic relocs that apply to
-   read-only sections.  */
+/* Allocate space in .plt, .got and associated reloc sections for
+   ifunc dynamic relocs.  */
 
-static bfd_boolean
-maybe_set_textrel (struct elf_link_hash_entry *h, void *info_p)
+static bool
+allocate_ifunc_dynrelocs (struct elf_link_hash_entry *h,
+			  void *inf)
 {
-  asection *sec;
+  struct bfd_link_info *info;
+  struct riscv_elf_link_hash_table *htab;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
-  sec = readonly_dynrelocs (h);
-  if (sec != NULL)
-    {
-      struct bfd_link_info *info = (struct bfd_link_info *) info_p;
+  if (h->root.type == bfd_link_hash_warning)
+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
-      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);
+  info = (struct bfd_link_info *) inf;
+  htab = riscv_elf_hash_table (info);
 
-      /* Not an error, just cut short the traversal.  */
-      return FALSE;
-    }
-  return TRUE;
+  /* 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,
+					       &h->dyn_relocs,
+					       htab->plt_entry_size,
+					       htab->plt_header_size,
+					       GOT_ENTRY_SIZE,
+					       true);
+  return true;
 }
 
-static bfd_boolean
-riscv_elf_size_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
+/* Allocate space in .plt, .got and associated reloc sections for
+   local ifunc dynamic relocs.  */
+
+static int
+allocate_local_ifunc_dynrelocs (void **slot, void *inf)
+{
+  struct elf_link_hash_entry *h
+    = (struct elf_link_hash_entry *) *slot;
+
+  if (h->type != STT_GNU_IFUNC
+      || !h->def_regular
+      || !h->ref_regular
+      || !h->forced_local
+      || h->root.type != bfd_link_hash_defined)
+    abort ();
+
+  return allocate_ifunc_dynrelocs (h, inf);
+}
+
+static bool
+riscv_elf_late_size_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   struct riscv_elf_link_hash_table *htab;
   bfd *dynobj;
@@ -1172,7 +1703,8 @@ riscv_elf_size_dynamic_sections (bfd *ou
   htab = riscv_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
   dynobj = htab->elf.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -1183,6 +1715,7 @@ riscv_elf_size_dynamic_sections (bfd *ou
 	  BFD_ASSERT (s != NULL);
 	  s->size = strlen (ELFNN_DYNAMIC_INTERPRETER) + 1;
 	  s->contents = (unsigned char *) ELFNN_DYNAMIC_INTERPRETER;
+	  s->alloced = 1;
 	}
     }
 
@@ -1239,28 +1772,61 @@ riscv_elf_size_dynamic_sections (bfd *ou
 	  if (*local_got > 0)
 	    {
 	      *local_got = s->size;
-	      s->size += RISCV_ELF_WORD_BYTES;
-	      if (*local_tls_type & GOT_TLS_GD)
-		s->size += RISCV_ELF_WORD_BYTES;
-	      if (bfd_link_pic (info)
-		  || (*local_tls_type & (GOT_TLS_GD | GOT_TLS_IE)))
-		srel->size += sizeof (ElfNN_External_Rela);
+	      if (*local_tls_type & (GOT_TLS_GD | GOT_TLS_IE | GOT_TLSDESC))
+		{
+		  if (*local_tls_type & GOT_TLS_GD)
+		    {
+		      s->size += TLS_GD_GOT_ENTRY_SIZE;
+		      if (bfd_link_dll (info))
+			srel->size += sizeof (ElfNN_External_Rela);
+		    }
+		  if (*local_tls_type & GOT_TLS_IE)
+		    {
+		      s->size += TLS_IE_GOT_ENTRY_SIZE;
+		      if (bfd_link_dll (info))
+			srel->size += sizeof (ElfNN_External_Rela);
+		    }
+		  if (*local_tls_type & GOT_TLSDESC)
+		    {
+		      s->size += TLSDESC_GOT_ENTRY_SIZE;
+		      srel->size += sizeof (ElfNN_External_Rela);
+		    }
+		}
+	      else
+		{
+		  s->size += GOT_ENTRY_SIZE;
+		  if (bfd_link_pic (info))
+		    srel->size += sizeof (ElfNN_External_Rela);
+		}
 	    }
 	  else
 	    *local_got = (bfd_vma) -1;
 	}
     }
 
-  /* Allocate global sym .plt and .got entries, and space for global
-     sym dynamic relocs.  */
+  /* Allocate .plt and .got entries and space dynamic relocs for
+     global symbols.  */
   elf_link_hash_traverse (&htab->elf, allocate_dynrelocs, info);
 
+  /* Allocate .plt and .got entries and space dynamic relocs for
+     global ifunc symbols.  */
+  elf_link_hash_traverse (&htab->elf, allocate_ifunc_dynrelocs, info);
+
+  /* Allocate .plt and .got entries and space dynamic relocs for
+     local ifunc symbols.  */
+  htab_traverse (htab->loc_hash_table, allocate_local_ifunc_dynrelocs, info);
+
+  /* Used to resolve the dynamic relocs overwite problems when
+     generating static executable.  */
+  if (htab->elf.irelplt)
+    htab->last_iplt_index = htab->elf.irelplt->reloc_count - 1;
+
   if (htab->elf.sgotplt)
     {
       struct elf_link_hash_entry *got;
       got = elf_link_hash_lookup (elf_hash_table (info),
 				  "_GLOBAL_OFFSET_TABLE_",
-				  FALSE, FALSE, FALSE);
+				  false, false, false);
 
       /* Don't allocate .got.plt section if there are no GOT nor PLT
 	 entries and there is no refeence to _GLOBAL_OFFSET_TABLE_.  */
@@ -1286,6 +1852,8 @@ riscv_elf_size_dynamic_sections (bfd *ou
       if (s == htab->elf.splt
 	  || s == htab->elf.sgot
 	  || s == htab->elf.sgotplt
+	  || s == htab->elf.iplt
+	  || s == htab->elf.igotplt
 	  || s == htab->elf.sdynbss
 	  || s == htab->elf.sdynrelro
 	  || s == htab->sdyntdata)
@@ -1293,7 +1861,7 @@ riscv_elf_size_dynamic_sections (bfd *ou
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (strncmp (s->name, ".rela", 5) == 0)
+      else if (startswith (s->name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
@@ -1331,53 +1899,22 @@ riscv_elf_size_dynamic_sections (bfd *ou
 	 at the beginning, and we don't want garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
+  /* Add dynamic entries.  */
   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 (!_bfd_elf_add_dynamic_tags (output_bfd, info, true))
+	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;
-	}
+      if (htab->variant_cc
+	  && !_bfd_elf_add_dynamic_entry (info, DT_RISCV_VARIANT_CC, 0))
+       return false;
     }
-#undef add_dynamic_entry
 
-  return TRUE;
+  return true;
 }
 
 #define TP_OFFSET 0
@@ -1405,6 +1942,17 @@ tpoff (struct bfd_link_info *info, bfd_v
   return address - elf_hash_table (info)->tls_sec->vma - TP_OFFSET;
 }
 
+/* Return the relocation value for a static TLSDESC relocation.  */
+
+static bfd_vma
+tlsdescoff (struct bfd_link_info *info, bfd_vma address)
+{
+  /* If tls_sec is NULL, we should have signalled an error already.  */
+  if (elf_hash_table (info)->tls_sec == NULL)
+    return 0;
+  return address - elf_hash_table (info)->tls_sec->vma;
+}
+
 /* Return the global pointer's value, or 0 if it is not in use.  */
 
 static bfd_vma
@@ -1412,7 +1960,7 @@ riscv_global_pointer_value (struct bfd_l
 {
   struct bfd_link_hash_entry *h;
 
-  h = bfd_link_hash_lookup (info->hash, RISCV_GP_SYMBOL, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, RISCV_GP_SYMBOL, false, false, true);
   if (h == NULL || h->type != bfd_link_hash_defined)
     return 0;
 
@@ -1431,7 +1979,10 @@ perform_relocation (const reloc_howto_ty
 {
   if (howto->pc_relative)
     value -= sec_addr (input_section) + rel->r_offset;
-  value += rel->r_addend;
+
+  /* PR31179, ignore the non-zero addend of R_RISCV_SUB_ULEB128.  */
+  if (ELFNN_R_TYPE (rel->r_info) != R_RISCV_SUB_ULEB128)
+    value += rel->r_addend;
 
   switch (ELFNN_R_TYPE (rel->r_info))
     {
@@ -1441,6 +1992,7 @@ perform_relocation (const reloc_howto_ty
     case R_RISCV_GOT_HI20:
     case R_RISCV_TLS_GOT_HI20:
     case R_RISCV_TLS_GD_HI20:
+    case R_RISCV_TLSDESC_HI20:
       if (ARCH_SIZE > 32 && !VALID_UTYPE_IMM (RISCV_CONST_HIGH_PART (value)))
 	return bfd_reloc_overflow;
       value = ENCODE_UTYPE_IMM (RISCV_CONST_HIGH_PART (value));
@@ -1451,6 +2003,8 @@ perform_relocation (const reloc_howto_ty
     case R_RISCV_TPREL_LO12_I:
     case R_RISCV_TPREL_I:
     case R_RISCV_PCREL_LO12_I:
+    case R_RISCV_TLSDESC_LOAD_LO12:
+    case R_RISCV_TLSDESC_ADD_LO12:
       value = ENCODE_ITYPE_IMM (value);
       break;
 
@@ -1471,27 +2025,27 @@ perform_relocation (const reloc_howto_ty
       break;
 
     case R_RISCV_JAL:
-      if (!VALID_UJTYPE_IMM (value))
+      if (!VALID_JTYPE_IMM (value))
 	return bfd_reloc_overflow;
-      value = ENCODE_UJTYPE_IMM (value);
+      value = ENCODE_JTYPE_IMM (value);
       break;
 
     case R_RISCV_BRANCH:
-      if (!VALID_SBTYPE_IMM (value))
+      if (!VALID_BTYPE_IMM (value))
 	return bfd_reloc_overflow;
-      value = ENCODE_SBTYPE_IMM (value);
+      value = ENCODE_BTYPE_IMM (value);
       break;
 
     case R_RISCV_RVC_BRANCH:
-      if (!VALID_RVC_B_IMM (value))
+      if (!VALID_CBTYPE_IMM (value))
 	return bfd_reloc_overflow;
-      value = ENCODE_RVC_B_IMM (value);
+      value = ENCODE_CBTYPE_IMM (value);
       break;
 
     case R_RISCV_RVC_JUMP:
-      if (!VALID_RVC_J_IMM (value))
+      if (!VALID_CJTYPE_IMM (value))
 	return bfd_reloc_overflow;
-      value = ENCODE_RVC_J_IMM (value);
+      value = ENCODE_CJTYPE_IMM (value);
       break;
 
     case R_RISCV_RVC_LUI:
@@ -1500,18 +2054,64 @@ perform_relocation (const reloc_howto_ty
 	  /* Linker relaxation can convert an address equal to or greater than
 	     0x800 to slightly below 0x800.  C.LUI does not accept zero as a
 	     valid immediate.  We can fix this by converting it to a C.LI.  */
-	  bfd_vma insn = bfd_get (howto->bitsize, input_bfd,
-				  contents + rel->r_offset);
+	  bfd_vma insn = riscv_get_insn (howto->bitsize,
+					 contents + rel->r_offset);
 	  insn = (insn & ~MATCH_C_LUI) | MATCH_C_LI;
-	  bfd_put (howto->bitsize, input_bfd, insn, contents + rel->r_offset);
-	  value = ENCODE_RVC_IMM (0);
+	  riscv_put_insn (howto->bitsize, insn, contents + rel->r_offset);
+	  value = ENCODE_CITYPE_IMM (0);
 	}
-      else if (!VALID_RVC_LUI_IMM (RISCV_CONST_HIGH_PART (value)))
+      else if (!VALID_CITYPE_LUI_IMM (RISCV_CONST_HIGH_PART (value)))
 	return bfd_reloc_overflow;
       else
-	value = ENCODE_RVC_LUI_IMM (RISCV_CONST_HIGH_PART (value));
+	value = ENCODE_CITYPE_LUI_IMM (RISCV_CONST_HIGH_PART (value));
       break;
 
+    /* R_RISCV_SET_ULEB128 won't go into here.  */
+    case R_RISCV_SUB_ULEB128:
+      {
+	unsigned int len = 0;
+	_bfd_read_unsigned_leb128 (input_bfd, contents + rel->r_offset, &len);
+
+	/* Clean the contents value to zero (0x80), but keep the original
+	   length.  */
+	bfd_byte *p = contents + rel->r_offset;
+	bfd_byte *endp = p + len - 1;
+	memset (p, 0x80, len - 1);
+	*(endp) = 0;
+
+	/* Make sure the length of the new uleb128 value within the
+	   original (available) length.  */
+	unsigned int new_len = 0;
+	unsigned int val_t = value;
+	do
+	  {
+	    new_len++;
+	    val_t >>= 7;
+	  }
+	while (val_t);
+	if (new_len > len)
+	  {
+	    _bfd_error_handler
+	      (_("final size of uleb128 value at offset 0x%lx in %pA from "
+		 "%pB exceeds available space"),
+	       (long) rel->r_offset, input_section, input_bfd);
+	    return bfd_reloc_dangerous;
+	  }
+	else
+	  {
+	    p = _bfd_write_unsigned_leb128 (p, endp, value);
+	    BFD_ASSERT (p);
+
+	    /* If the length of the value is reduced and shorter than the
+	       original uleb128 length, then _bfd_write_unsigned_leb128 may
+	       clear the 0x80 to 0x0 for the last byte that was written.
+	       So reset it to keep the the original uleb128 length.  */
+	    if (--p < endp)
+	      *p |= 0x80;
+	  }
+	return bfd_reloc_ok;
+      }
+
     case R_RISCV_32:
     case R_RISCV_64:
     case R_RISCV_ADD8:
@@ -1539,9 +2139,16 @@ perform_relocation (const reloc_howto_ty
       return bfd_reloc_notsupported;
     }
 
-  bfd_vma word = bfd_get (howto->bitsize, input_bfd, contents + rel->r_offset);
+  bfd_vma word;
+  if (riscv_is_insn_reloc (howto))
+    word = riscv_get_insn (howto->bitsize, contents + rel->r_offset);
+  else
+    word = bfd_get (howto->bitsize, input_bfd, contents + rel->r_offset);
   word = (word & ~howto->dst_mask) | (value & howto->dst_mask);
-  bfd_put (howto->bitsize, input_bfd, word, contents + rel->r_offset);
+  if (riscv_is_insn_reloc (howto))
+    riscv_put_insn (howto->bitsize, word, contents + rel->r_offset);
+  else
+    bfd_put (howto->bitsize, input_bfd, word, contents + rel->r_offset);
 
   return bfd_reloc_ok;
 }
@@ -1551,25 +2158,43 @@ perform_relocation (const reloc_howto_ty
 
 typedef struct
 {
+  /* PC value.  */
   bfd_vma address;
+  /* Relocation value with addend.  */
   bfd_vma value;
+  /* Original reloc type.  */
+  int type;
+  /* True if changed to R_RISCV_HI20.  */
+  bool absolute;
 } riscv_pcrel_hi_reloc;
 
 typedef struct riscv_pcrel_lo_reloc
 {
-  asection *			 input_section;
-  struct bfd_link_info *	 info;
-  reloc_howto_type *		 howto;
-  const Elf_Internal_Rela *	 reloc;
-  bfd_vma			 addr;
-  const char *			 name;
-  bfd_byte *			 contents;
-  struct riscv_pcrel_lo_reloc *	 next;
+  /* PC value of auipc.  */
+  bfd_vma address;
+  /* Internal relocation.  */
+  Elf_Internal_Rela *reloc;
+  /* Record the following information helps to resolve the %pcrel
+     which cross different input section.  For now we build a hash
+     for pcrel at the start of riscv_elf_relocate_section, and then
+     free the hash at the end.  But riscv_elf_relocate_section only
+     handles an input section at a time, so that means we can only
+     resolve the %pcrel_hi and %pcrel_lo which are in the same input
+     section.  Otherwise, we will report dangerous relocation errors
+     for those %pcrel which are not in the same input section.  */
+  asection *input_section;
+  struct bfd_link_info *info;
+  reloc_howto_type *howto;
+  bfd_byte *contents;
+  /* The next riscv_pcrel_lo_reloc.  */
+  struct riscv_pcrel_lo_reloc *next;
 } riscv_pcrel_lo_reloc;
 
 typedef struct
 {
+  /* Hash table for riscv_pcrel_hi_reloc.  */
   htab_t hi_relocs;
+  /* Linked list for riscv_pcrel_lo_reloc.  */
   riscv_pcrel_lo_reloc *lo_relocs;
 } riscv_pcrel_relocs;
 
@@ -1580,17 +2205,16 @@ riscv_pcrel_reloc_hash (const void *entr
   return (hashval_t)(e->address >> 2);
 }
 
-static bfd_boolean
+static int
 riscv_pcrel_reloc_eq (const void *entry1, const void *entry2)
 {
   const riscv_pcrel_hi_reloc *e1 = entry1, *e2 = entry2;
   return e1->address == e2->address;
 }
 
-static bfd_boolean
+static bool
 riscv_init_pcrel_relocs (riscv_pcrel_relocs *p)
 {
-
   p->lo_relocs = NULL;
   p->hi_relocs = htab_create (1024, riscv_pcrel_reloc_hash,
 			      riscv_pcrel_reloc_eq, free);
@@ -1612,83 +2236,89 @@ riscv_free_pcrel_relocs (riscv_pcrel_rel
   htab_delete (p->hi_relocs);
 }
 
-static bfd_boolean
+static bool
 riscv_zero_pcrel_hi_reloc (Elf_Internal_Rela *rel,
 			   struct bfd_link_info *info,
 			   bfd_vma pc,
-			   bfd_vma addr,
+			   bfd_vma *addr,
 			   bfd_byte *contents,
-			   const reloc_howto_type *howto,
-			   bfd *input_bfd)
+			   const reloc_howto_type *howto)
 {
   /* We may need to reference low addreses in PC-relative modes even when the
-   * PC is far away from these addresses.  For example, undefweak references
-   * need to produce the address 0 when linked.  As 0 is far from the arbitrary
-   * addresses that we can link PC-relative programs at, the linker can't
-   * actually relocate references to those symbols.  In order to allow these
-   * programs to work we simply convert the PC-relative auipc sequences to
-   * 0-relative lui sequences.  */
+     PC is far away from these addresses.  For example, undefweak references
+     need to produce the address 0 when linked.  As 0 is far from the arbitrary
+     addresses that we can link PC-relative programs at, the linker can't
+     actually relocate references to those symbols.  In order to allow these
+     programs to work we simply convert the PC-relative auipc sequences to
+     0-relative lui sequences.  */
   if (bfd_link_pic (info))
-    return FALSE;
+    return false;
 
   /* If it's possible to reference the symbol using auipc we do so, as that's
-   * more in the spirit of the PC-relative relocations we're processing.  */
-  bfd_vma offset = addr - pc;
+     more in the spirit of the PC-relative relocations we're processing.  */
+  bfd_vma offset = *addr - pc;
   if (ARCH_SIZE == 32 || VALID_UTYPE_IMM (RISCV_CONST_HIGH_PART (offset)))
-    return FALSE;
+    return false;
 
   /* If it's impossible to reference this with a LUI-based offset then don't
-   * bother to convert it at all so users still see the PC-relative relocation
-   * in the truncation message.  */
-  if (ARCH_SIZE > 32 && !VALID_UTYPE_IMM (RISCV_CONST_HIGH_PART (addr)))
-    return FALSE;
-
-  rel->r_info = ELFNN_R_INFO(addr, R_RISCV_HI20);
+     bother to convert it at all so users still see the PC-relative relocation
+     in the truncation message.  */
+  if (ARCH_SIZE > 32 && !VALID_UTYPE_IMM (RISCV_CONST_HIGH_PART (*addr)))
+    return false;
+
+  /* PR27180, encode target absolute address into r_addend rather than
+     r_sym.  Clear the ADDR to avoid duplicate relocate in the
+     perform_relocation.  */
+  rel->r_info = ELFNN_R_INFO (0, R_RISCV_HI20);
+  rel->r_addend += *addr;
+  *addr = 0;
 
-  bfd_vma insn = bfd_get(howto->bitsize, input_bfd, contents + rel->r_offset);
+  bfd_vma insn = riscv_get_insn (howto->bitsize, contents + rel->r_offset);
   insn = (insn & ~MASK_AUIPC) | MATCH_LUI;
-  bfd_put(howto->bitsize, input_bfd, insn, contents + rel->r_offset);
-  return TRUE;
+  riscv_put_insn (howto->bitsize, insn, contents + rel->r_offset);
+  return true;
 }
 
-static bfd_boolean
-riscv_record_pcrel_hi_reloc (riscv_pcrel_relocs *p, bfd_vma addr,
-			     bfd_vma value, bfd_boolean absolute)
+static bool
+riscv_record_pcrel_hi_reloc (riscv_pcrel_relocs *p,
+			     bfd_vma addr,
+			     bfd_vma value,
+			     int type,
+			     bool absolute)
 {
   bfd_vma offset = absolute ? value : value - addr;
-  riscv_pcrel_hi_reloc entry = {addr, offset};
+  riscv_pcrel_hi_reloc entry = {addr, offset, type, absolute};
   riscv_pcrel_hi_reloc **slot =
     (riscv_pcrel_hi_reloc **) htab_find_slot (p->hi_relocs, &entry, INSERT);
 
   BFD_ASSERT (*slot == NULL);
   *slot = (riscv_pcrel_hi_reloc *) bfd_malloc (sizeof (riscv_pcrel_hi_reloc));
   if (*slot == NULL)
-    return FALSE;
+    return false;
   **slot = entry;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 riscv_record_pcrel_lo_reloc (riscv_pcrel_relocs *p,
+			     bfd_vma addr,
+			     Elf_Internal_Rela *reloc,
 			     asection *input_section,
 			     struct bfd_link_info *info,
 			     reloc_howto_type *howto,
-			     const Elf_Internal_Rela *reloc,
-			     bfd_vma addr,
-			     const char *name,
 			     bfd_byte *contents)
 {
   riscv_pcrel_lo_reloc *entry;
   entry = (riscv_pcrel_lo_reloc *) bfd_malloc (sizeof (riscv_pcrel_lo_reloc));
   if (entry == NULL)
-    return FALSE;
-  *entry = (riscv_pcrel_lo_reloc) {input_section, info, howto, reloc, addr,
-				   name, contents, p->lo_relocs};
+    return false;
+  *entry = (riscv_pcrel_lo_reloc) {addr, reloc, input_section, info,
+				   howto, contents, p->lo_relocs};
   p->lo_relocs = entry;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 riscv_resolve_pcrel_lo_relocs (riscv_pcrel_relocs *p)
 {
   riscv_pcrel_lo_reloc *r;
@@ -1697,26 +2327,65 @@ riscv_resolve_pcrel_lo_relocs (riscv_pcr
     {
       bfd *input_bfd = r->input_section->owner;
 
-      riscv_pcrel_hi_reloc search = {r->addr, 0};
+      riscv_pcrel_hi_reloc search = {r->address, 0, 0, 0};
       riscv_pcrel_hi_reloc *entry = htab_find (p->hi_relocs, &search);
-      if (entry == NULL
-	  /* Check for overflow into bit 11 when adding reloc addend.  */
-	  || (! (entry->value & 0x800)
-	      && ((entry->value + r->reloc->r_addend) & 0x800)))
-	{
-	  char *string = (entry == NULL
-			  ? "%pcrel_lo missing matching %pcrel_hi"
-			  : "%pcrel_lo overflow with an addend");
+      /* There may be a risk if the %pcrel_lo with addend refers to
+	 an IFUNC symbol.  The %pcrel_hi has been relocated to plt,
+	 so the corresponding %pcrel_lo with addend looks wrong.  */
+      char *string = NULL;
+      if (entry == NULL)
+	string = _("%pcrel_lo missing matching %pcrel_hi");
+      else if (entry->type == R_RISCV_GOT_HI20
+	       && r->reloc->r_addend != 0)
+	string = _("%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20");
+      else if (RISCV_CONST_HIGH_PART (entry->value)
+	       != RISCV_CONST_HIGH_PART (entry->value + r->reloc->r_addend))
+	{
+	  /* Check the overflow when adding reloc addend.  */
+	  string = bfd_asprintf (_("%%pcrel_lo overflow with an addend,"
+				   " the value of %%pcrel_hi is 0x%" PRIx64
+				   " without any addend, but may be 0x%" PRIx64
+				   " after adding the %%pcrel_lo addend"),
+				 (int64_t) RISCV_CONST_HIGH_PART (entry->value),
+				 (int64_t) RISCV_CONST_HIGH_PART
+				 (entry->value + r->reloc->r_addend));
+	  if (string == NULL)
+	    string = _("%pcrel_lo overflow with an addend");
+	}
+
+      if (string != NULL)
+	{
 	  (*r->info->callbacks->reloc_dangerous)
 	    (r->info, string, input_bfd, r->input_section, r->reloc->r_offset);
-	  return TRUE;
+	  return true;
 	}
 
       perform_relocation (r->howto, r->reloc, entry->value, r->input_section,
 			  input_bfd, r->contents);
+
+      /* The corresponding R_RISCV_GOT_PCREL_HI20 and R_RISCV_PCREL_HI20 are
+	 converted to R_RISCV_HI20, so try to convert R_RISCV_PCREL_LO12_I/S
+	 to R_RISCV_LO12_I/S.  */
+      if (entry->absolute)
+	{
+	  switch (ELFNN_R_TYPE (r->reloc->r_info))
+	    {
+	    case R_RISCV_PCREL_LO12_I:
+	      r->reloc->r_info = ELFNN_R_INFO (0, R_RISCV_LO12_I);
+	      r->reloc->r_addend += entry->value;
+	      break;
+	    case R_RISCV_PCREL_LO12_S:
+	      r->reloc->r_info = ELFNN_R_INFO (0, R_RISCV_LO12_S);
+	      r->reloc->r_addend += entry->value;
+	      break;
+	    default:
+	      /* This shouldn't happen, so just skip it.  */
+	      break;
+	    }
+	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Relocate a RISC-V ELF section.
@@ -1747,7 +2416,7 @@ riscv_resolve_pcrel_lo_relocs (riscv_pcr
    section, which means that the addend must be adjusted
    accordingly.  */
 
-static bfd_boolean
+static int
 riscv_elf_relocate_section (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    bfd *input_bfd,
@@ -1760,16 +2429,17 @@ riscv_elf_relocate_section (bfd *output_
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
   riscv_pcrel_relocs pcrel_relocs;
-  bfd_boolean ret = FALSE;
-  asection *sreloc = elf_section_data (input_section)->sreloc;
+  bool ret = false;
   struct riscv_elf_link_hash_table *htab = riscv_elf_hash_table (info);
   Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (input_bfd);
   struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (input_bfd);
   bfd_vma *local_got_offsets = elf_local_got_offsets (input_bfd);
-  bfd_boolean absolute;
+  bfd_vma uleb128_set_vma = 0;
+  Elf_Internal_Rela *uleb128_set_rel = NULL;
+  bool absolute;
 
   if (!riscv_init_pcrel_relocs (&pcrel_relocs))
-    return FALSE;
+    return false;
 
   relend = relocs + input_section->reloc_count;
   for (rel = relocs; rel < relend; rel++)
@@ -1780,18 +2450,18 @@ riscv_elf_relocate_section (bfd *output_
       asection *sec;
       bfd_vma relocation;
       bfd_reloc_status_type r = bfd_reloc_ok;
-      const char *name;
-      bfd_vma off, ie_off;
-      bfd_boolean unresolved_reloc, is_ie = FALSE;
+      const char *name = NULL;
+      bfd_vma off, ie_off, desc_off;
+      bool unresolved_reloc, is_ie = false, is_desc = false;
       bfd_vma pc = sec_addr (input_section) + rel->r_offset;
       int r_type = ELFNN_R_TYPE (rel->r_info), tls_type;
       reloc_howto_type *howto = riscv_elf_rtype_to_howto (input_bfd, r_type);
       const char *msg = NULL;
-      char *msg_buf = NULL;
-      bfd_boolean resolved_to_zero;
+      bool resolved_to_zero;
+      bool via_plt = false;
+      bool relative_got = false;
 
-      if (howto == NULL
-	  || r_type == R_RISCV_GNU_VTINHERIT || r_type == R_RISCV_GNU_VTENTRY)
+      if (howto == NULL)
 	continue;
 
       /* This is a final link.  */
@@ -1799,16 +2469,29 @@ riscv_elf_relocate_section (bfd *output_
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       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);
+
+	  /* Relocate against local STT_GNU_IFUNC symbol.  */
+	  if (!bfd_link_relocatable (info)
+	      && ELF_ST_TYPE (sym->st_info) == STT_GNU_IFUNC)
+	    {
+	      h = riscv_elf_get_local_sym_hash (htab, input_bfd, rel, false);
+	      if (h == NULL)
+		abort ();
+
+	      /* Set STT_GNU_IFUNC symbol value.  */
+	      h->root.u.def.value = sym->st_value;
+	      h->root.u.def.section = sec;
+	    }
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -1828,11 +2511,245 @@ riscv_elf_relocate_section (bfd *output_
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_RISCV_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
 
+      /* Since STT_GNU_IFUNC symbol must go through PLT, we handle
+	 it here if it is defined in a non-shared object.  */
+      if (h != NULL
+	  && h->type == STT_GNU_IFUNC
+	  && h->def_regular)
+	{
+	  asection *plt, *base_got;
+
+	  if ((input_section->flags & SEC_ALLOC) == 0)
+	    {
+	      /* If this is a SHT_NOTE section without SHF_ALLOC, treat
+		 STT_GNU_IFUNC symbol as STT_FUNC.  */
+	      if (elf_section_type (input_section) == SHT_NOTE)
+		goto skip_ifunc;
+
+	      /* Dynamic relocs are not propagated for SEC_DEBUGGING
+		 sections because such sections are not SEC_ALLOC and
+		 thus ld.so will not process them.  */
+	      if ((input_section->flags & SEC_DEBUGGING) != 0)
+		continue;
+
+	      abort ();
+	    }
+	  else if (h->plt.offset == (bfd_vma) -1
+		   /* The following relocation may not need the .plt entries
+		      when all references to a STT_GNU_IFUNC symbols are done
+		      via GOT or static function pointers.  */
+		   && r_type != R_RISCV_32
+		   && r_type != R_RISCV_64
+		   && r_type != R_RISCV_HI20
+		   && r_type != R_RISCV_GOT_HI20
+		   && r_type != R_RISCV_LO12_I
+		   && r_type != R_RISCV_LO12_S)
+	    goto bad_ifunc_reloc;
+
+	  /* STT_GNU_IFUNC symbol must go through PLT.  */
+	  plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt;
+	  relocation = plt->output_section->vma
+		       + plt->output_offset
+		       + h->plt.offset;
+
+	  switch (r_type)
+	    {
+	    case R_RISCV_32:
+	    case R_RISCV_64:
+	      if (rel->r_addend != 0)
+		{
+		  if (h->root.root.string)
+		    name = h->root.root.string;
+		  else
+		    name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym, NULL);
+
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB: relocation %s against STT_GNU_IFUNC "
+		       "symbol `%s' has non-zero addend: %" PRId64),
+		     input_bfd, howto->name, name, (int64_t) rel->r_addend);
+		  bfd_set_error (bfd_error_bad_value);
+		  return false;
+		}
+
+		/* Generate dynamic relocation only when there is a non-GOT
+		   reference in a shared object or there is no PLT.  */
+		if ((bfd_link_pic (info) && h->non_got_ref)
+		    || h->plt.offset == (bfd_vma) -1)
+		  {
+		    Elf_Internal_Rela outrel;
+
+		    /* Need a dynamic relocation to get the real function
+		       address.  */
+		    outrel.r_offset = _bfd_elf_section_offset (output_bfd,
+							       info,
+							       input_section,
+							       rel->r_offset);
+		    if (outrel.r_offset == (bfd_vma) -1
+			|| outrel.r_offset == (bfd_vma) -2)
+		      abort ();
+
+		    outrel.r_offset += input_section->output_section->vma
+				       + input_section->output_offset;
+
+		    if (h->dynindx == -1
+			|| h->forced_local
+			|| bfd_link_executable (info))
+		      {
+			info->callbacks->minfo
+			  (_("Local IFUNC function `%s' in %pB\n"),
+			   h->root.root.string,
+			   h->root.u.def.section->owner);
+
+			/* This symbol is resolved locally.  */
+			outrel.r_info = ELFNN_R_INFO (0, R_RISCV_IRELATIVE);
+			outrel.r_addend = h->root.u.def.value
+			  + h->root.u.def.section->output_section->vma
+			  + h->root.u.def.section->output_offset;
+		      }
+		    else
+		      {
+			outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
+			outrel.r_addend = 0;
+		      }
+
+		    /* Dynamic relocations are stored in
+		       1. .rela.ifunc section in PIC object.
+		       2. .rela.got section in dynamic executable.
+		       3. .rela.iplt section in static executable.  */
+		    if (bfd_link_pic (info))
+		      riscv_elf_append_rela (output_bfd, htab->elf.irelifunc,
+					     &outrel);
+		    else if (htab->elf.splt != NULL)
+		      riscv_elf_append_rela (output_bfd, htab->elf.srelgot,
+					     &outrel);
+		    else
+		      {
+			/* Do not use riscv_elf_append_rela to add dynamic
+			   relocs into .rela.iplt, since it may cause the
+			   overwrite problems.  This is same as what we did
+			   in the riscv_elf_finish_dynamic_symbol.  */
+			const struct elf_backend_data *bed =
+				get_elf_backend_data (output_bfd);
+			bfd_vma iplt_idx = htab->last_iplt_index--;
+			bfd_byte *loc = htab->elf.irelplt->contents
+					+ iplt_idx * sizeof (ElfNN_External_Rela);
+			bed->s->swap_reloca_out (output_bfd, &outrel, loc);
+		      }
+
+		    /* If this reloc is against an external symbol, we
+		       do not want to fiddle with the addend.  Otherwise,
+		       we need to include the symbol value so that it
+		       becomes an addend for the dynamic reloc.  For an
+		       internal symbol, we have updated addend.  */
+		    continue;
+		  }
+		goto do_relocation;
+
+	      case R_RISCV_GOT_HI20:
+		base_got = htab->elf.sgot;
+		off = h->got.offset;
+
+		if (base_got == NULL)
+		  abort ();
+
+		if (off == (bfd_vma) -1)
+		  {
+		    bfd_vma plt_idx;
+
+		    /* We can't use h->got.offset here to save state, or
+		       even just remember the offset, as finish_dynamic_symbol
+		       would use that as offset into .got.  */
+
+		    if (htab->elf.splt != NULL)
+		      {
+			plt_idx = (h->plt.offset - htab->plt_header_size)
+				  / htab->plt_entry_size;
+			off = GOTPLT_HEADER_SIZE + (plt_idx * GOT_ENTRY_SIZE);
+			base_got = htab->elf.sgotplt;
+		      }
+		    else
+		      {
+			plt_idx = h->plt.offset / htab->plt_entry_size;
+			off = plt_idx * GOT_ENTRY_SIZE;
+			base_got = htab->elf.igotplt;
+		      }
+
+		    if (h->dynindx == -1
+			|| h->forced_local
+			|| info->symbolic)
+		      {
+			/* This references the local definition.  We must
+			   initialize this entry in the global offset table.
+			   Since the offset must always be a multiple of 8,
+			   we use the least significant bit to record
+			   whether we have initialized it already.
+
+			   When doing a dynamic link, we create a .rela.got
+			   relocation entry to initialize the value.  This
+			   is done in the finish_dynamic_symbol routine.   */
+			if ((off & 1) != 0)
+			  off &= ~1;
+			else
+			  {
+			    bfd_put_NN (output_bfd, relocation,
+					base_got->contents + off);
+			    /* Note that this is harmless for the case,
+			       as -1 | 1 still is -1.  */
+			    h->got.offset |= 1;
+			  }
+		      }
+		  }
+
+		relocation = base_got->output_section->vma
+			     + base_got->output_offset + off;
+
+		if (!riscv_record_pcrel_hi_reloc (&pcrel_relocs, pc,
+						  relocation, r_type,
+						  false))
+		  r = bfd_reloc_overflow;
+		goto do_relocation;
+
+	      case R_RISCV_CALL:
+	      case R_RISCV_CALL_PLT:
+	      case R_RISCV_HI20:
+	      case R_RISCV_LO12_I:
+	      case R_RISCV_LO12_S:
+		goto do_relocation;
+
+	      case R_RISCV_PCREL_HI20:
+		if (!riscv_record_pcrel_hi_reloc (&pcrel_relocs, pc,
+						  relocation, r_type,
+						  false))
+		  r = bfd_reloc_overflow;
+		goto do_relocation;
+
+	    default:
+	    bad_ifunc_reloc:
+	      if (h->root.root.string)
+		name = h->root.root.string;
+	      else
+		/* The entry of local ifunc is fake in global hash table,
+		   we should find the name by the original local symbol.  */
+		name = bfd_elf_sym_name (input_bfd, symtab_hdr, sym, NULL);
+
+	      _bfd_error_handler
+	      /* xgettext:c-format */
+	      (_("%pB: relocation %s against STT_GNU_IFUNC "
+		 "symbol `%s' isn't supported"), input_bfd,
+	       howto->name, name);
+	      bfd_set_error (bfd_error_bad_value);
+	      return false;
+	    }
+	}
+
+    skip_ifunc:
       if (h != NULL)
 	name = h->root.root.string;
       else
@@ -1846,11 +2763,18 @@ riscv_elf_relocate_section (bfd *output_
       resolved_to_zero = (h != NULL
 			  && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h));
 
+      /* Refer to the PLT entry.  This check has to match the check in
+	 _bfd_riscv_relax_section.  */
+      via_plt = (htab->elf.splt != NULL
+		 && h != NULL
+		 && h->plt.offset != MINUS_ONE);
+
       switch (r_type)
 	{
 	case R_RISCV_NONE:
 	case R_RISCV_RELAX:
 	case R_RISCV_TPREL_ADD:
+	case R_RISCV_TLSDESC_CALL:
 	case R_RISCV_COPY:
 	case R_RISCV_JUMP_SLOT:
 	case R_RISCV_RELATIVE:
@@ -1872,26 +2796,75 @@ riscv_elf_relocate_section (bfd *output_
 	  /* These require no special handling beyond perform_relocation.  */
 	  break;
 
+	case R_RISCV_SET_ULEB128:
+	  if (uleb128_set_rel == NULL)
+	    {
+	      /* Saved for later usage.  */
+	      uleb128_set_vma = relocation;
+	      uleb128_set_rel = rel;
+	      continue;
+	    }
+	  else
+	    {
+	      msg = ("Mismatched R_RISCV_SET_ULEB128, it must be paired with"
+		     " and applied before R_RISCV_SUB_ULEB128");
+	      r = bfd_reloc_dangerous;
+	    }
+	  break;
+
+	case R_RISCV_SUB_ULEB128:
+	  if (uleb128_set_rel != NULL
+	      && uleb128_set_rel->r_offset == rel->r_offset)
+	    {
+	      relocation = uleb128_set_vma - relocation
+			   + uleb128_set_rel->r_addend;
+	      uleb128_set_vma = 0;
+	      uleb128_set_rel = NULL;
+
+	      /* PR31179, the addend of SUB_ULEB128 should be zero if using
+		 .uleb128, but we make it non-zero by accident in assembler,
+		 so just ignore it in perform_relocation, and make assembler
+		 continue doing the right thing.  Don't reset the addend of
+		 SUB_ULEB128 to zero here since it will break the --emit-reloc,
+		 even though the non-zero addend is unexpected.
+
+		 We encourage people to rebuild their stuff to get the
+		 non-zero addend of SUB_ULEB128, but that might need some
+		 times, so report warnings to inform people need to rebuild
+		 if --check-uleb128 is enabled.  However, since the failed
+		 .reloc cases for ADD/SET/SUB/ULEB128 are rarely to use, it
+		 may acceptable that stop supproting them until people rebuld
+		 their stuff, maybe half-year or one year later.  I believe
+		 this might be the least harmful option that we should go.
+
+		 Or maybe we should teach people that don't write the
+		 .reloc R_RISCV_SUB* with non-zero constant, and report
+		 warnings/errors in assembler.  */
+	      if (htab->params->check_uleb128
+		  && rel->r_addend != 0)
+		_bfd_error_handler (_("%pB: warning: R_RISCV_SUB_ULEB128 with"
+				      " non-zero addend, please rebuild by"
+				      " binutils 2.42 or up"), input_bfd);
+	    }
+	  else
+	    {
+	      msg = ("Mismatched R_RISCV_SUB_ULEB128, it must be paired with"
+		     " and applied after R_RISCV_SET_ULEB128");
+	      r = bfd_reloc_dangerous;
+	    }
+	  break;
+
 	case R_RISCV_GOT_HI20:
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn, pic;
-
 	      off = h->got.offset;
 	      BFD_ASSERT (off != (bfd_vma) -1);
-	      dyn = elf_hash_table (info)->dynamic_sections_created;
-	      pic = bfd_link_pic (info);
 
-	      if (! WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, pic, h)
-		  || (pic && SYMBOL_REFERENCES_LOCAL (info, h)))
+	      if (RISCV_RESOLVED_LOCALLY (info, h))
 		{
-		  /* This is actually a static link, or it is a
-		     -Bsymbolic link and the symbol is defined
-		     locally, or the symbol was forced to be local
-		     because of a version file.  We must initialize
-		     this entry in the global offset table.  Since the
-		     offset must always be a multiple of the word size,
-		     we use the least significant bit to record whether
+		  /* We must initialize this entry in the global offset table.
+		     Since the offset must always be a multiple of the word
+		     size, we use the least significant bit to record whether
 		     we have initialized it already.
 
 		     When doing a dynamic link, we create a .rela.got
@@ -1901,13 +2874,23 @@ riscv_elf_relocate_section (bfd *output_
 		    off &= ~1;
 		  else
 		    {
+		      /* If a symbol is not dynamic and is not undefined weak,
+			 bind it locally and generate a RELATIVE relocation
+			 under PIC mode.  */
+		      if (h->dynindx == -1
+			  && !h->forced_local
+			  && h->root.type != bfd_link_hash_undefweak
+			  && bfd_link_pic (info)
+			  && !bfd_is_abs_section(h->root.u.def.section))
+			relative_got = true;
+
 		      bfd_put_NN (output_bfd, relocation,
 				  htab->elf.sgot->contents + off);
 		      h->got.offset |= 1;
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -1924,43 +2907,51 @@ riscv_elf_relocate_section (bfd *output_
 	      else
 		{
 		  if (bfd_link_pic (info))
-		    {
-		      asection *s;
-		      Elf_Internal_Rela outrel;
-
-		      /* We need to generate a R_RISCV_RELATIVE reloc
-			 for the dynamic linker.  */
-		      s = htab->elf.srelgot;
-		      BFD_ASSERT (s != NULL);
-
-		      outrel.r_offset = sec_addr (htab->elf.sgot) + off;
-		      outrel.r_info =
-			ELFNN_R_INFO (0, R_RISCV_RELATIVE);
-		      outrel.r_addend = relocation;
-		      relocation = 0;
-		      riscv_elf_append_rela (output_bfd, s, &outrel);
-		    }
+		    relative_got = true;
 
 		  bfd_put_NN (output_bfd, relocation,
 			      htab->elf.sgot->contents + off);
 		  local_got_offsets[r_symndx] |= 1;
 		}
 	    }
-	  relocation = sec_addr (htab->elf.sgot) + off;
-	  absolute = riscv_zero_pcrel_hi_reloc (rel,
-						info,
-						pc,
-						relocation,
-						contents,
-						howto,
-						input_bfd);
-	  r_type = ELFNN_R_TYPE (rel->r_info);
-	  howto = riscv_elf_rtype_to_howto (input_bfd, r_type);
-	  if (howto == NULL)
-	    r = bfd_reloc_notsupported;
-	  else if (!riscv_record_pcrel_hi_reloc (&pcrel_relocs, pc,
-						 relocation, absolute))
-	    r = bfd_reloc_overflow;
+
+	  /* We need to generate a R_RISCV_RELATIVE relocation later in the
+	     riscv_elf_finish_dynamic_symbol if h->dynindx != -1;  Otherwise,
+	     generate a R_RISCV_RELATIVE relocation here now.  */
+	  if (relative_got)
+	    {
+	      asection *s = htab->elf.srelgot;
+	      BFD_ASSERT (s != NULL);
+
+	      Elf_Internal_Rela outrel;
+	      outrel.r_offset = sec_addr (htab->elf.sgot) + off;
+	      outrel.r_info = ELFNN_R_INFO (0, R_RISCV_RELATIVE);
+	      outrel.r_addend = relocation;
+	      riscv_elf_append_rela (output_bfd, s, &outrel);
+	    }
+
+	  if (rel->r_addend != 0)
+	    {
+	      msg = _("The addend isn't allowed for R_RISCV_GOT_HI20");
+	      r = bfd_reloc_dangerous;
+	    }
+	  else
+	    {
+	      /* Address of got entry.  */
+	      relocation = sec_addr (htab->elf.sgot) + off;
+	      absolute = riscv_zero_pcrel_hi_reloc (rel, info, pc,
+						    &relocation, contents,
+						    howto);
+	      /* Update howto if relocation is changed.  */
+	      howto = riscv_elf_rtype_to_howto (input_bfd,
+						ELFNN_R_TYPE (rel->r_info));
+	      if (howto == NULL)
+		r = bfd_reloc_notsupported;
+	      else if (!riscv_record_pcrel_hi_reloc (&pcrel_relocs, pc,
+						     relocation + rel->r_addend,
+						     r_type, absolute))
+		r = bfd_reloc_overflow;
+	    }
 	  break;
 
 	case R_RISCV_ADD8:
@@ -1975,6 +2966,15 @@ riscv_elf_relocate_section (bfd *output_
 	  break;
 
 	case R_RISCV_SUB6:
+	  {
+	    bfd_vma old_value = bfd_get (howto->bitsize, input_bfd,
+					 contents + rel->r_offset);
+	    relocation = (old_value & ~howto->dst_mask)
+			 | (((old_value & howto->dst_mask) - relocation)
+			    & howto->dst_mask);
+	  }
+	  break;
+
 	case R_RISCV_SUB8:
 	case R_RISCV_SUB16:
 	case R_RISCV_SUB32:
@@ -1987,30 +2987,57 @@ 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)
+	  if (h != NULL && h->root.type == bfd_link_hash_undefweak && !via_plt)
 	    {
 	      /* We can use x0 as the base register.  */
-	      bfd_vma insn = bfd_get_32 (input_bfd,
-					 contents + rel->r_offset + 4);
+	      bfd_vma insn = bfd_getl32 (contents + rel->r_offset + 4);
 	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
-	      bfd_put_32 (input_bfd, insn, contents + rel->r_offset + 4);
+	      bfd_putl32 (insn, contents + rel->r_offset + 4);
 	      /* Set the relocation value so that we get 0 after the pc
 		 relative adjustment.  */
 	      relocation = sec_addr (input_section) + rel->r_offset;
 	    }
 	  /* Fall through.  */
 
-	case R_RISCV_CALL_PLT:
 	case R_RISCV_JAL:
 	case R_RISCV_RVC_JUMP:
-	  if (bfd_link_pic (info) && h != NULL && h->plt.offset != MINUS_ONE)
+	  if (via_plt)
 	    {
-	      /* Refer to the PLT entry.  */
 	      relocation = sec_addr (htab->elf.splt) + h->plt.offset;
-	      unresolved_reloc = FALSE;
+	      unresolved_reloc = false;
+	    }
+	  else if (bfd_link_pic (info)
+		   && h != NULL
+		   && h->plt.offset == MINUS_ONE
+		   && !SYMBOL_REFERENCES_LOCAL (info, h)
+		   && (input_section->flags & SEC_ALLOC) != 0
+		   && (input_section->flags & SEC_READONLY) != 0
+		   && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT)
+	    {
+	      /* PR 28509, when generating the shared object, these
+		 referenced symbols may bind externally, which means
+		 they will be exported to the dynamic symbol table,
+		 and are preemptible by default.  These symbols cannot
+		 be referenced by the non-pic relocations, like
+		 R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+
+		 However, consider that linker may relax the R_RISCV_CALL
+		 relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+		 these relocations are relocated to the plt entries,
+		 then we won't report error for them.
+
+		 Perhaps we also need the similar checks for the
+		 R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.  */
+	      msg = bfd_asprintf (_("%%X%%P: relocation %s against `%s'"
+				    " which may bind externally"
+				    " can not be used"
+				    " when making a shared object;"
+				    " recompile with -fPIC\n"),
+				  howto->name, h->root.root.string);
+	      r = bfd_reloc_notsupported;
 	    }
 	  break;
 
@@ -2029,10 +3056,10 @@ riscv_elf_relocate_section (bfd *output_
 	  if (VALID_ITYPE_IMM (relocation + rel->r_addend))
 	    {
 	      /* We can use tp as the base register.  */
-	      bfd_vma insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
+	      bfd_vma insn = bfd_getl32 (contents + rel->r_offset);
 	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
 	      insn |= X_TP << OP_SH_RS1;
-	      bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
+	      bfd_putl32 (insn, contents + rel->r_offset);
 	    }
 	  else
 	    r = bfd_reloc_overflow;
@@ -2042,18 +3069,18 @@ riscv_elf_relocate_section (bfd *output_
 	case R_RISCV_GPREL_S:
 	  {
 	    bfd_vma gp = riscv_global_pointer_value (info);
-	    bfd_boolean x0_base = VALID_ITYPE_IMM (relocation + rel->r_addend);
+	    bool x0_base = VALID_ITYPE_IMM (relocation + rel->r_addend);
 	    if (x0_base || VALID_ITYPE_IMM (relocation + rel->r_addend - gp))
 	      {
 		/* We can use x0 or gp as the base register.  */
-		bfd_vma insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
+		bfd_vma insn = bfd_getl32 (contents + rel->r_offset);
 		insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
 		if (!x0_base)
 		  {
 		    rel->r_addend -= gp;
 		    insn |= X_GP << OP_SH_RS1;
 		  }
-		bfd_put_32 (input_bfd, insn, contents + rel->r_offset);
+		bfd_putl32 (insn, contents + rel->r_offset);
 	      }
 	    else
 	      r = bfd_reloc_overflow;
@@ -2061,20 +3088,16 @@ riscv_elf_relocate_section (bfd *output_
 	  }
 
 	case R_RISCV_PCREL_HI20:
-	  absolute = riscv_zero_pcrel_hi_reloc (rel,
-						info,
-						pc,
-						relocation,
-						contents,
-						howto,
-						input_bfd);
-	  r_type = ELFNN_R_TYPE (rel->r_info);
-	  howto = riscv_elf_rtype_to_howto (input_bfd, r_type);
+	  absolute = riscv_zero_pcrel_hi_reloc (rel, info, pc, &relocation,
+						contents, howto);
+	  /* Update howto if relocation is changed.  */
+	  howto = riscv_elf_rtype_to_howto (input_bfd,
+					    ELFNN_R_TYPE (rel->r_info));
 	  if (howto == NULL)
 	    r = bfd_reloc_notsupported;
 	  else if (!riscv_record_pcrel_hi_reloc (&pcrel_relocs, pc,
 						 relocation + rel->r_addend,
-						 absolute))
+						 r_type, absolute))
 	    r = bfd_reloc_overflow;
 	  break;
 
@@ -2094,8 +3117,8 @@ riscv_elf_relocate_section (bfd *output_
 	      break;
 	    }
 
-	  if (riscv_record_pcrel_lo_reloc (&pcrel_relocs, input_section, info,
-					   howto, rel, relocation, name,
+	  if (riscv_record_pcrel_lo_reloc (&pcrel_relocs, relocation, rel,
+					   input_section, info, howto,
 					   contents))
 	    continue;
 	  r = bfd_reloc_overflow;
@@ -2106,29 +3129,37 @@ riscv_elf_relocate_section (bfd *output_
 	  relocation = dtpoff (info, relocation);
 	  break;
 
+	case R_RISCV_TLSDESC_LOAD_LO12:
+	case R_RISCV_TLSDESC_ADD_LO12:
+	  if (rel->r_addend)
+	    {
+	      msg = _("%tlsdesc_lo with addend");
+	      r = bfd_reloc_dangerous;
+	      break;
+	    }
+
+	  if (riscv_record_pcrel_lo_reloc (&pcrel_relocs, relocation, rel,
+					   input_section, info, howto,
+					   contents))
+	      continue;
+	  r = bfd_reloc_overflow;
+	  break;
+
 	case R_RISCV_32:
+	  /* Non ABS symbol should be blocked in check_relocs.  */
+	  if (ARCH_SIZE > 32)
+	    break;
+	  /* Fall through.  */
+
 	case R_RISCV_64:
 	  if ((input_section->flags & SEC_ALLOC) == 0)
 	    break;
 
-	  if ((bfd_link_pic (info)
-	       && (h == NULL
-		   || (ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-		       && !resolved_to_zero)
-		   || h->root.type != bfd_link_hash_undefweak)
-	       && (! howto->pc_relative
-		   || !SYMBOL_CALLS_LOCAL (info, h)))
-	      || (!bfd_link_pic (info)
-		  && h != NULL
-		  && h->dynindx != -1
-		  && !h->non_got_ref
-		  && ((h->def_dynamic
-		       && !h->def_regular)
-		      || h->root.type == bfd_link_hash_undefweak
-		      || h->root.type == bfd_link_hash_undefined)))
+	  if (RISCV_GENERATE_DYNAMIC_RELOC (howto->pc_relative, info, h,
+					    resolved_to_zero))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip_static_relocation, skip_dynamic_relocation;
+	      asection *sreloc;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
@@ -2137,37 +3168,58 @@ riscv_elf_relocate_section (bfd *output_
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
-	      skip_static_relocation = outrel.r_offset != (bfd_vma) -2;
-	      skip_dynamic_relocation = outrel.r_offset >= (bfd_vma) -2;
+	      bool skip = false;
+	      bool relocate = false;
+	      if (outrel.r_offset == (bfd_vma) -1)
+		skip = true;
+	      else if (outrel.r_offset == (bfd_vma) -2)
+		{
+		  skip = true;
+		  relocate = true;
+		}
+	      else if (h != NULL && bfd_is_abs_symbol (&h->root))
+		{
+		  /* Don't need dynamic reloc when the ABS symbol is
+		     non-dynamic or forced to local.  Maybe just use
+		     SYMBOL_REFERENCES_LOCAL to check?  */
+		  skip = (h->forced_local || (h->dynindx == -1));
+		  relocate = skip;
+		}
+
 	      outrel.r_offset += sec_addr (input_section);
 
-	      if (skip_dynamic_relocation)
-		memset (&outrel, 0, sizeof outrel);
-	      else if (h != NULL && h->dynindx != -1
-		       && !(bfd_link_pic (info)
-			    && SYMBOLIC_BIND (info, h)
-			    && h->def_regular))
+	      if (skip)
+		memset (&outrel, 0, sizeof outrel);	/* R_RISCV_NONE.  */
+	      else if (RISCV_COPY_INPUT_RELOC (info, h))
 		{
+		  /* Maybe just use !SYMBOL_REFERENCES_LOCAL to check?  */
 		  outrel.r_info = ELFNN_R_INFO (h->dynindx, r_type);
 		  outrel.r_addend = rel->r_addend;
 		}
 	      else
 		{
+		  /* This symbol is local, or marked to become local.  */
 		  outrel.r_info = ELFNN_R_INFO (0, R_RISCV_RELATIVE);
 		  outrel.r_addend = relocation + rel->r_addend;
 		}
 
+	      sreloc = elf_section_data (input_section)->sreloc;
 	      riscv_elf_append_rela (output_bfd, sreloc, &outrel);
-	      if (skip_static_relocation)
+	      if (!relocate)
 		continue;
 	    }
 	  break;
 
+	case R_RISCV_TLSDESC_HI20:
+	  is_desc = true;
+	  goto tls;
+
 	case R_RISCV_TLS_GOT_HI20:
-	  is_ie = TRUE;
-	  /* Fall through.  */
+	  is_ie = true;
+	  goto tls;
 
 	case R_RISCV_TLS_GD_HI20:
+	tls:
 	  if (h != NULL)
 	    {
 	      off = h->got.offset;
@@ -2180,12 +3232,16 @@ riscv_elf_relocate_section (bfd *output_
 	    }
 
 	  tls_type = _bfd_riscv_elf_tls_type (input_bfd, h, r_symndx);
-	  BFD_ASSERT (tls_type & (GOT_TLS_IE | GOT_TLS_GD));
-	  /* If this symbol is referenced by both GD and IE TLS, the IE
-	     reference's GOT slot follows the GD reference's slots.  */
+	  BFD_ASSERT (tls_type & (GOT_TLS_IE | GOT_TLS_GD | GOT_TLSDESC));
+	  /* When more than one TLS type is used, the GD slot comes first,
+	     then IE, then finally TLSDESC.  */
 	  ie_off = 0;
-	  if ((tls_type & GOT_TLS_GD) && (tls_type & GOT_TLS_IE))
-	    ie_off = 2 * GOT_ENTRY_SIZE;
+	  if (tls_type & GOT_TLS_GD)
+	    ie_off += TLS_GD_GOT_ENTRY_SIZE;
+
+	  desc_off = ie_off;
+	  if (tls_type & GOT_TLS_IE)
+	    desc_off += TLS_IE_GOT_ENTRY_SIZE;
 
 	  if ((off & 1) != 0)
 	    off &= ~1;
@@ -2193,30 +3249,16 @@ riscv_elf_relocate_section (bfd *output_
 	    {
 	      Elf_Internal_Rela outrel;
 	      int indx = 0;
-	      bfd_boolean need_relocs = FALSE;
+	      bool need_relocs = false;
 
 	      if (htab->elf.srelgot == NULL)
 		abort ();
 
-	      if (h != NULL)
-		{
-		  bfd_boolean dyn, pic;
-		  dyn = htab->elf.dynamic_sections_created;
-		  pic = bfd_link_pic (info);
-
-		  if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn, pic, h)
-		      && (!pic || !SYMBOL_REFERENCES_LOCAL (info, h)))
-		    indx = h->dynindx;
-		}
+	      bool dyn = elf_hash_table (info)->dynamic_sections_created;
+	      RISCV_TLS_GD_IE_NEED_DYN_RELOC (info, dyn, h, indx, need_relocs);
 
 	      /* The GOT entries have not been initialized yet.  Do it
 		 now, and emit any relocations.  */
-	      if ((bfd_link_pic (info) || indx != 0)
-		  && (h == NULL
-		      || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
-		      || h->root.type != bfd_link_hash_undefweak))
-		    need_relocs = TRUE;
-
 	      if (tls_type & GOT_TLS_GD)
 		{
 		  if (need_relocs)
@@ -2232,14 +3274,14 @@ riscv_elf_relocate_section (bfd *output_
 			  BFD_ASSERT (! unresolved_reloc);
 			  bfd_put_NN (output_bfd,
 				      dtpoff (info, relocation),
-				      (htab->elf.sgot->contents + off +
-				       RISCV_ELF_WORD_BYTES));
+				      (htab->elf.sgot->contents
+				       + off + RISCV_ELF_WORD_BYTES));
 			}
 		      else
 			{
 			  bfd_put_NN (output_bfd, 0,
-				      (htab->elf.sgot->contents + off +
-				       RISCV_ELF_WORD_BYTES));
+				      (htab->elf.sgot->contents
+				       + off + RISCV_ELF_WORD_BYTES));
 			  outrel.r_info = ELFNN_R_INFO (indx, R_RISCV_TLS_DTPRELNN);
 			  outrel.r_offset += RISCV_ELF_WORD_BYTES;
 			  riscv_elf_append_rela (output_bfd, htab->elf.srelgot, &outrel);
@@ -2256,8 +3298,8 @@ riscv_elf_relocate_section (bfd *output_
 				  htab->elf.sgot->contents + off);
 		      bfd_put_NN (output_bfd,
 				  dtpoff (info, relocation),
-				  (htab->elf.sgot->contents + off +
-				   RISCV_ELF_WORD_BYTES));
+				  (htab->elf.sgot->contents
+				   + off + RISCV_ELF_WORD_BYTES));
 		   }
 		}
 
@@ -2268,7 +3310,7 @@ riscv_elf_relocate_section (bfd *output_
 		      bfd_put_NN (output_bfd, 0,
 				  htab->elf.sgot->contents + off + ie_off);
 		      outrel.r_offset = sec_addr (htab->elf.sgot)
-				       + off + ie_off;
+					+ off + ie_off;
 		      outrel.r_addend = 0;
 		      if (indx == 0)
 			outrel.r_addend = tpoff (info, relocation);
@@ -2281,14 +3323,34 @@ riscv_elf_relocate_section (bfd *output_
 				  htab->elf.sgot->contents + off + ie_off);
 		    }
 		}
+
+	      if (tls_type & GOT_TLSDESC)
+		{
+		  /* TLSDESC is always handled by the dynamic linker and always need
+		   * a relocation.  */
+		  bfd_put_NN (output_bfd, 0,
+			      htab->elf.sgot->contents + off + desc_off);
+		  outrel.r_offset = sec_addr (htab->elf.sgot)
+				    + off + desc_off;
+		  outrel.r_addend = 0;
+		  if (indx == 0)
+		    outrel.r_addend = tlsdescoff (info, relocation);
+		  outrel.r_info = ELFNN_R_INFO (indx, R_RISCV_TLSDESC);
+		  riscv_elf_append_rela (output_bfd, htab->elf.srelgot, &outrel);
+		}
 	    }
 
 	  BFD_ASSERT (off < (bfd_vma) -2);
-	  relocation = sec_addr (htab->elf.sgot) + off + (is_ie ? ie_off : 0);
+	  relocation = sec_addr (htab->elf.sgot) + off;
+	  if (is_ie)
+	    relocation += ie_off;
+	  else if (is_desc)
+	    relocation += desc_off;
 	  if (!riscv_record_pcrel_hi_reloc (&pcrel_relocs, pc,
-					    relocation, FALSE))
+					    relocation, r_type,
+					    false))
 	    r = bfd_reloc_overflow;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	default:
@@ -2304,34 +3366,14 @@ riscv_elf_relocate_section (bfd *output_
 	  && _bfd_elf_section_offset (output_bfd, info, input_section,
 				      rel->r_offset) != (bfd_vma) -1)
 	{
-	  switch (r_type)
-	    {
-	    case R_RISCV_CALL:
-	    case R_RISCV_JAL:
-	    case R_RISCV_RVC_JUMP:
-	      if (asprintf (&msg_buf,
-			    _("%%X%%P: relocation %s against `%s' can "
-			      "not be used when making a shared object; "
-			      "recompile with -fPIC\n"),
-			    howto->name,
-			    h->root.root.string) == -1)
-		msg_buf = NULL;
-	      break;
-
-	    default:
-	      if (asprintf (&msg_buf,
-			    _("%%X%%P: unresolvable %s relocation against "
-			      "symbol `%s'\n"),
-			    howto->name,
-			    h->root.root.string) == -1)
-		msg_buf = NULL;
-	      break;
-	    }
-
-	  msg = msg_buf;
+	  msg = bfd_asprintf (_("%%X%%P: unresolvable %s relocation against "
+				"symbol `%s'\n"),
+			      howto->name,
+			      h->root.root.string);
 	  r = bfd_reloc_notsupported;
 	}
 
+ do_relocation:
       if (r == bfd_reloc_ok)
 	r = perform_relocation (howto, rel, relocation, input_section,
 				input_bfd, contents);
@@ -2354,7 +3396,7 @@ riscv_elf_relocate_section (bfd *output_
 	case bfd_reloc_undefined:
 	  info->callbacks->undefined_symbol
 	    (info, name, input_bfd, input_section, rel->r_offset,
-	     TRUE);
+	     true);
 	  break;
 
 	case bfd_reloc_outofrange:
@@ -2384,18 +3426,14 @@ 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);
-
       /* We already reported the error via a callback, so don't try to report
 	 it again by returning false.  That leads to spurious errors.  */
-      ret = TRUE;
+      ret = true;
       goto out;
     }
 
   ret = riscv_resolve_pcrel_lo_relocs (&pcrel_relocs);
-out:
+ out:
   riscv_free_pcrel_relocs (&pcrel_relocs);
   return ret;
 }
@@ -2403,7 +3441,7 @@ out:
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-static bfd_boolean
+static bool
 riscv_elf_finish_dynamic_symbol (bfd *output_bfd,
 				 struct bfd_link_info *info,
 				 struct elf_link_hash_entry *h,
@@ -2416,44 +3454,92 @@ riscv_elf_finish_dynamic_symbol (bfd *ou
     {
       /* We've decided to create a PLT entry for this symbol.  */
       bfd_byte *loc;
-      bfd_vma i, header_address, plt_idx, got_address;
-      uint32_t plt_entry[PLT_ENTRY_INSNS];
+      bfd_vma plt_idx, got_offset, got_address;
       Elf_Internal_Rela rela;
+      asection *plt, *gotplt, *relplt;
 
-      BFD_ASSERT (h->dynindx != -1);
-
-      /* Calculate the address of the PLT header.  */
-      header_address = sec_addr (htab->elf.splt);
-
-      /* Calculate the index of the entry.  */
-      plt_idx = (h->plt.offset - PLT_HEADER_SIZE) / PLT_ENTRY_SIZE;
+      /* When building a static executable, use .iplt, .igot.plt and
+	 .rela.iplt sections for STT_GNU_IFUNC symbols.  */
+      if (htab->elf.splt != NULL)
+        {
+          plt = htab->elf.splt;
+          gotplt = htab->elf.sgotplt;
+          relplt = htab->elf.srelplt;
+        }
+      else
+        {
+          plt = htab->elf.iplt;
+          gotplt = htab->elf.igotplt;
+          relplt = htab->elf.irelplt;
+        }
+
+      /* This symbol has an entry in the procedure linkage table.  Set
+         it up.  */
+      if ((h->dynindx == -1
+	   && !((h->forced_local || bfd_link_executable (info))
+		&& h->def_regular
+		&& h->type == STT_GNU_IFUNC))
+	  || plt == NULL
+	  || gotplt == NULL
+	  || relplt == NULL)
+	abort ();
+
+      /* Calculate the index of the entry and the offset of .got.plt entry.
+	 For static executables, we don't reserve anything.  */
+      if (plt == htab->elf.splt)
+	{
+	  plt_idx = (h->plt.offset - htab->plt_header_size)
+		     / htab->plt_entry_size;
+	  got_offset = GOTPLT_HEADER_SIZE + (plt_idx * GOT_ENTRY_SIZE);
+	}
+      else
+	{
+	  plt_idx = h->plt.offset / htab->plt_entry_size;
+	  got_offset = plt_idx * GOT_ENTRY_SIZE;
+	}
 
       /* Calculate the address of the .got.plt entry.  */
-      got_address = riscv_elf_got_plt_val (plt_idx, info);
+      got_address = sec_addr (gotplt) + got_offset;
 
-      /* Find out where the .plt entry should go.  */
-      loc = htab->elf.splt->contents + h->plt.offset;
 
       /* Fill in the PLT entry itself.  */
-      if (! riscv_make_plt_entry (output_bfd, got_address,
-				  header_address + h->plt.offset,
-				  plt_entry))
-	return FALSE;
+      if (! htab->make_plt_entry (output_bfd, gotplt, got_offset,
+				  plt, h->plt.offset))
+	return false;
 
-      for (i = 0; i < PLT_ENTRY_INSNS; i++)
-	bfd_put_32 (output_bfd, plt_entry[i], loc + 4*i);
 
       /* Fill in the initial value of the .got.plt entry.  */
-      loc = htab->elf.sgotplt->contents
-	    + (got_address - sec_addr (htab->elf.sgotplt));
-      bfd_put_NN (output_bfd, sec_addr (htab->elf.splt), loc);
+      loc = gotplt->contents + (got_address - sec_addr (gotplt));
+      bfd_put_NN (output_bfd, sec_addr (plt), loc);
 
-      /* Fill in the entry in the .rela.plt section.  */
       rela.r_offset = got_address;
-      rela.r_addend = 0;
-      rela.r_info = ELFNN_R_INFO (h->dynindx, R_RISCV_JUMP_SLOT);
 
-      loc = htab->elf.srelplt->contents + plt_idx * sizeof (ElfNN_External_Rela);
+      if (h->dynindx == -1
+	  || ((bfd_link_executable (info)
+	       || ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)
+	      && h->def_regular
+	      && h->type == STT_GNU_IFUNC))
+	{
+	  info->callbacks->minfo (_("Local IFUNC function `%s' in %pB\n"),
+				  h->root.root.string,
+				  h->root.u.def.section->owner);
+
+	  /* If an STT_GNU_IFUNC symbol is locally defined, generate
+	     R_RISCV_IRELATIVE instead of R_RISCV_JUMP_SLOT.  */
+	  asection *sec = h->root.u.def.section;
+	  rela.r_info = ELFNN_R_INFO (0, R_RISCV_IRELATIVE);
+	  rela.r_addend = h->root.u.def.value
+			  + sec->output_section->vma
+			  + sec->output_offset;
+	}
+      else
+	{
+	  /* Fill in the entry in the .rela.plt section.  */
+	  rela.r_info = ELFNN_R_INFO (h->dynindx, R_RISCV_JUMP_SLOT);
+	  rela.r_addend = 0;
+	}
+
+      loc = relplt->contents + plt_idx * sizeof (ElfNN_External_Rela);
       bed->s->swap_reloca_out (output_bfd, &rela, loc);
 
       if (!h->def_regular)
@@ -2471,12 +3557,13 @@ riscv_elf_finish_dynamic_symbol (bfd *ou
     }
 
   if (h->got.offset != (bfd_vma) -1
-      && !(riscv_elf_hash_entry (h)->tls_type & (GOT_TLS_GD | GOT_TLS_IE))
+      && !(riscv_elf_hash_entry (h)->tls_type & (GOT_TLS_GD | GOT_TLS_IE | GOT_TLSDESC))
       && !UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
     {
       asection *sgot;
       asection *srela;
       Elf_Internal_Rela rela;
+      bool use_elf_append_rela = true;
 
       /* This symbol has an entry in the GOT.  Set it up.  */
 
@@ -2486,15 +3573,75 @@ riscv_elf_finish_dynamic_symbol (bfd *ou
 
       rela.r_offset = sec_addr (sgot) + (h->got.offset &~ (bfd_vma) 1);
 
-      /* If this is a local symbol reference, we just want to emit a RELATIVE
-	 reloc.  This can happen if it is a -Bsymbolic link, or a pie link, or
-	 the symbol was forced to be local because of a version file.
-	 The entry in the global offset table will already have been
-	 initialized in the relocate_section function.  */
-      if (bfd_link_pic (info)
-	  && SYMBOL_REFERENCES_LOCAL (info, h))
+      /* Handle the ifunc symbol in GOT entry.  */
+      if (h->def_regular
+	  && h->type == STT_GNU_IFUNC)
 	{
-	  BFD_ASSERT((h->got.offset & 1) != 0);
+	  if (h->plt.offset == (bfd_vma) -1)
+	    {
+	      /* STT_GNU_IFUNC is referenced without PLT.  */
+
+	      if (htab->elf.splt == NULL)
+		{
+		  /* Use .rela.iplt section to store .got relocations
+		     in static executable.  */
+		  srela = htab->elf.irelplt;
+
+		  /* Do not use riscv_elf_append_rela to add dynamic
+		     relocs.  */
+		  use_elf_append_rela = false;
+		}
+
+	      if (SYMBOL_REFERENCES_LOCAL (info, h))
+		{
+		  info->callbacks->minfo (_("Local IFUNC function `%s' in %pB\n"),
+					  h->root.root.string,
+					  h->root.u.def.section->owner);
+
+		  rela.r_info = ELFNN_R_INFO (0, R_RISCV_IRELATIVE);
+		  rela.r_addend = (h->root.u.def.value
+				   + h->root.u.def.section->output_section->vma
+				   + h->root.u.def.section->output_offset);
+		}
+	      else
+		{
+		  /* Generate R_RISCV_NN.  */
+		  goto do_reloc_nn;
+		}
+	    }
+	  else if (bfd_link_pic (info))
+	    {
+	      /* Generate R_RISCV_NN.  */
+	      goto do_reloc_nn;
+	    }
+	  else
+	    {
+	      asection *plt;
+
+	      if (!h->pointer_equality_needed)
+		abort ();
+
+	      /* For non-shared object, we can't use .got.plt, which
+		 contains the real function address if we need pointer
+		 equality.  We load the GOT entry with the PLT entry.  */
+	      plt = htab->elf.splt ? htab->elf.splt : htab->elf.iplt;
+	      bfd_put_NN (output_bfd, (plt->output_section->vma
+				       + plt->output_offset
+				       + h->plt.offset),
+			  htab->elf.sgot->contents
+			  + (h->got.offset & ~(bfd_vma) 1));
+	      return true;
+	    }
+	}
+      else if (bfd_link_pic (info)
+	       && SYMBOL_REFERENCES_LOCAL (info, h))
+	{
+	  /* If this is a local symbol reference, we just want to emit
+	     a RELATIVE reloc.  This can happen if it is a -Bsymbolic link,
+	     or a pie link, or the symbol was forced to be local because
+	     of a version file.  The entry in the global offset table will
+	     already have been initialized in the relocate_section function.  */
+	  BFD_ASSERT ((h->got.offset & 1) != 0);
 	  asection *sec = h->root.u.def.section;
 	  rela.r_info = ELFNN_R_INFO (0, R_RISCV_RELATIVE);
 	  rela.r_addend = (h->root.u.def.value
@@ -2503,15 +3650,32 @@ riscv_elf_finish_dynamic_symbol (bfd *ou
 	}
       else
 	{
-	  BFD_ASSERT((h->got.offset & 1) == 0);
+  do_reloc_nn:
+	  BFD_ASSERT ((h->got.offset & 1) == 0);
 	  BFD_ASSERT (h->dynindx != -1);
 	  rela.r_info = ELFNN_R_INFO (h->dynindx, R_RISCV_NN);
 	  rela.r_addend = 0;
+	  bfd_put_NN (output_bfd, 0,
+		      sgot->contents + (h->got.offset & ~(bfd_vma) 1));
 	}
 
-      bfd_put_NN (output_bfd, 0,
-		  sgot->contents + (h->got.offset & ~(bfd_vma) 1));
-      riscv_elf_append_rela (output_bfd, srela, &rela);
+      if (use_elf_append_rela)
+	riscv_elf_append_rela (output_bfd, srela, &rela);
+      else
+	{
+	  /* Use riscv_elf_append_rela to add the dynamic relocs into
+	     .rela.iplt may cause the overwrite problems.  Since we insert
+	     the relocs for PLT didn't handle the reloc_index of .rela.iplt,
+	     but the riscv_elf_append_rela adds the relocs to the place
+	     that are calculated from the reloc_index (in seqential).
+
+	     One solution is that add these dynamic relocs (GOT IFUNC)
+	     from the last of .rela.iplt section.  */
+	  bfd_vma iplt_idx = htab->last_iplt_index--;
+	  bfd_byte *loc = srela->contents
+			  + iplt_idx * sizeof (ElfNN_External_Rela);
+	  bed->s->swap_reloca_out (output_bfd, &rela, loc);
+	}
     }
 
   if (h->needs_copy)
@@ -2537,12 +3701,24 @@ riscv_elf_finish_dynamic_symbol (bfd *ou
       || (h == htab->elf.hgot || h == htab->elf.hplt))
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
+}
+
+/* Finish up local dynamic symbol handling.  We set the contents of
+   various dynamic sections here.  */
+
+static int
+riscv_elf_finish_local_dynamic_symbol (void **slot, void *inf)
+{
+  struct elf_link_hash_entry *h = (struct elf_link_hash_entry *) *slot;
+  struct bfd_link_info *info = (struct bfd_link_info *) inf;
+
+  return riscv_elf_finish_dynamic_symbol (info->output_bfd, info, h, NULL);
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 riscv_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
 		  bfd *dynobj, asection *sdyn)
 {
@@ -2579,10 +3755,10 @@ riscv_finish_dyn (bfd *output_bfd, struc
 
       bed->s->swap_dyn_out (output_bfd, &dyn, dyncon);
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 riscv_elf_finish_dynamic_sections (bfd *output_bfd,
 				   struct bfd_link_info *info)
 {
@@ -2599,7 +3775,7 @@ riscv_elf_finish_dynamic_sections (bfd *
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       asection *splt;
-      bfd_boolean ret;
+      bool ret;
 
       splt = htab->elf.splt;
       BFD_ASSERT (splt != NULL && sdyn != NULL);
@@ -2612,23 +3788,16 @@ riscv_elf_finish_dynamic_sections (bfd *
       /* Fill in the head and tail entries in the procedure linkage table.  */
       if (splt->size > 0)
 	{
-	  int i;
-	  uint32_t plt_header[PLT_HEADER_INSNS];
-	  ret = riscv_make_plt_header (output_bfd,
-				       sec_addr (htab->elf.sgotplt),
-				       sec_addr (splt), plt_header);
+	  ret = htab->make_plt_header (output_bfd, htab);
 	  if (!ret)
 	    return ret;
 
-	  for (i = 0; i < PLT_HEADER_INSNS; i++)
-	    bfd_put_32 (output_bfd, plt_header[i], splt->contents + 4*i);
-
 	  elf_section_data (splt->output_section)->this_hdr.sh_entsize
-	    = PLT_ENTRY_SIZE;
+	    = htab->plt_entry_size;
 	}
     }
 
-  if (htab->elf.sgotplt)
+  if (htab->elf.sgotplt && htab->elf.sgotplt->size > 0)
     {
       asection *output_section = htab->elf.sgotplt->output_section;
 
@@ -2636,37 +3805,39 @@ riscv_elf_finish_dynamic_sections (bfd *
 	{
 	  (*_bfd_error_handler)
 	    (_("discarded output section: `%pA'"), htab->elf.sgotplt);
-	  return FALSE;
+	  return false;
 	}
 
-      if (htab->elf.sgotplt->size > 0)
-	{
-	  /* Write the first two entries in .got.plt, needed for the dynamic
-	     linker.  */
-	  bfd_put_NN (output_bfd, (bfd_vma) -1, htab->elf.sgotplt->contents);
-	  bfd_put_NN (output_bfd, (bfd_vma) 0,
-		      htab->elf.sgotplt->contents + GOT_ENTRY_SIZE);
-	}
+      /* Write the first two entries in .got.plt, needed for the dynamic
+	 linker.  */
+      bfd_put_NN (output_bfd, (bfd_vma) -1, htab->elf.sgotplt->contents);
+      bfd_put_NN (output_bfd, (bfd_vma) 0,
+		  htab->elf.sgotplt->contents + GOT_ENTRY_SIZE);
 
       elf_section_data (output_section)->this_hdr.sh_entsize = GOT_ENTRY_SIZE;
     }
 
-  if (htab->elf.sgot)
+  if (htab->elf.sgot && htab->elf.sgot->size > 0)
     {
       asection *output_section = htab->elf.sgot->output_section;
 
-      if (htab->elf.sgot->size > 0)
+      if (!bfd_is_abs_section (output_section))
 	{
 	  /* Set the first entry in the global offset table to the address of
 	     the dynamic section.  */
 	  bfd_vma val = sdyn ? sec_addr (sdyn) : 0;
 	  bfd_put_NN (output_bfd, val, htab->elf.sgot->contents);
-	}
 
-      elf_section_data (output_section)->this_hdr.sh_entsize = GOT_ENTRY_SIZE;
+	  elf_section_data (output_section)->this_hdr.sh_entsize = GOT_ENTRY_SIZE;
+	}
     }
 
-  return TRUE;
+  /* Fill PLT and GOT entries for local STT_GNU_IFUNC symbols.  */
+  htab_traverse (htab->loc_hash_table,
+		 riscv_elf_finish_local_dynamic_symbol,
+		 info);
+
+  return true;
 }
 
 /* Return address for Ith PLT stub in section PLT, for relocation REL
@@ -2676,16 +3847,61 @@ static bfd_vma
 riscv_elf_plt_sym_val (bfd_vma i, const asection *plt,
 		       const arelent *rel ATTRIBUTE_UNUSED)
 {
-  return plt->vma + PLT_HEADER_SIZE + i * PLT_ENTRY_SIZE;
+  unsigned plt_type = _bfd_riscv_elf_tdata (plt->owner)->plt_type;
+  switch (plt_type)
+    {
+    case PLT_NORMAL:
+      return plt->vma + (PLT_HEADER_SIZE) + (i * PLT_ENTRY_SIZE);
+
+    case PLT_ZICFILP_UNLABELED:
+      return plt->vma + PLT_ZICFILP_UNLABELED_HEADER_SIZE + (i * PLT_ZICFILP_UNLABELED_ENTRY_SIZE);
+
+    default:
+      abort ();
+    }
 }
 
+/* Used to decide how to sort relocs in an optimal manner for the
+   dynamic linker, before writing them out.  */
+
 static enum elf_reloc_type_class
-riscv_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
+riscv_reloc_type_class (const struct bfd_link_info *info,
 			const asection *rel_sec ATTRIBUTE_UNUSED,
 			const Elf_Internal_Rela *rela)
 {
+  struct riscv_elf_link_hash_table *htab = riscv_elf_hash_table (info);
+
+  if (htab->elf.dynsym != NULL
+      && htab->elf.dynsym->contents != NULL)
+    {
+      /* Check relocation against STT_GNU_IFUNC symbol if there are
+	 dynamic symbols.  */
+      bfd *abfd = info->output_bfd;
+      const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+      unsigned long r_symndx = ELFNN_R_SYM (rela->r_info);
+      if (r_symndx != STN_UNDEF)
+	{
+	  Elf_Internal_Sym sym;
+	  if (!bed->s->swap_symbol_in (abfd,
+				       (htab->elf.dynsym->contents
+					+ r_symndx * bed->s->sizeof_sym),
+				       0, &sym))
+	    {
+	      /* xgettext:c-format */
+	      _bfd_error_handler (_("%pB symbol number %lu references"
+				    " nonexistent SHT_SYMTAB_SHNDX section"),
+				  abfd, r_symndx);
+	      /* Ideally an error class should be returned here.  */
+	    }
+	  else if (ELF_ST_TYPE (sym.st_info) == STT_GNU_IFUNC)
+	    return reloc_class_ifunc;
+	}
+    }
+
   switch (ELFNN_R_TYPE (rela->r_info))
     {
+    case R_RISCV_IRELATIVE:
+      return reloc_class_ifunc;
     case R_RISCV_RELATIVE:
       return reloc_class_relative;
     case R_RISCV_JUMP_SLOT:
@@ -2722,61 +3938,45 @@ riscv_float_abi_string (flagword flags)
     }
 }
 
-/* The information of architecture attribute.  */
+/* The information of architecture elf attributes.  */
 static riscv_subset_list_t in_subsets;
 static riscv_subset_list_t out_subsets;
 static riscv_subset_list_t merged_subsets;
 
 /* Predicator for standard extension.  */
 
-static bfd_boolean
+static bool
 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.  */
-
-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.  */
+/* Update the output subset's version to match the input when the input
+   subset's version is newer.  */
 
 static void
-riscv_version_mismatch (bfd *ibfd,
-			struct riscv_subset_t *in,
-			struct riscv_subset_t *out)
+riscv_update_subset_version (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;
+
+  /* Update the output ISA versions to the newest ones, but otherwise don't
+     provide any errors or warnings about mis-matched ISA versions as it's
+     generally too tricky to check for these at link time. */
+  if ((in->major_version > out->major_version)
+      || (in->major_version == out->major_version
+	  && in->minor_version > out->minor_version)
+      || (out->major_version == RISCV_UNKNOWN_VERSION))
+    {
+      out->major_version = in->major_version;
+      out->minor_version = in->minor_version;
+    }
 }
 
 /* Return true if subset is 'i' or 'e'.  */
 
-static bfd_boolean
+static bool
 riscv_i_or_e_p (bfd *ibfd,
 		const char *arch,
 		struct riscv_subset_t *subset)
@@ -2785,12 +3985,12 @@ 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;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Merge standard extensions.
@@ -2800,49 +4000,42 @@ riscv_i_or_e_p (bfd *ibfd,
 
    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.  */
+     `in_arch`: Raw ISA string for input object.
+     `out_arch`: Raw ISA string for output object.
+     `pin`: Subset list for input object.
+     `pout`: Subset list for output object.  */
 
-static bfd_boolean
+static bool
 riscv_merge_std_ext (bfd *ibfd,
 		     const char *in_arch,
 		     const char *out_arch,
 		     struct riscv_subset_t **pin,
 		     struct riscv_subset_t **pout)
 {
-  const char *standard_exts = riscv_supported_std_ext ();
+  const char *standard_exts = "mafdqlcbjtpvnh";
   const char *p;
   struct riscv_subset_t *in = *pin;
   struct riscv_subset_t *out = *pout;
 
   /* First letter should be 'i' or 'e'.  */
   if (!riscv_i_or_e_p (ibfd, in_arch, in))
-    return FALSE;
+    return false;
 
   if (!riscv_i_or_e_p (ibfd, out_arch, out))
-    return FALSE;
+    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;
+      return false;
     }
-  else
-    riscv_add_subset (&merged_subsets,
-		      in->name, in->major_version, in->minor_version);
+
+  riscv_update_subset_version(in, out);
+  riscv_add_subset (&merged_subsets,
+		    out->name, out->major_version, out->minor_version);
 
   in = in->next;
   out = out->next;
@@ -2850,28 +4043,22 @@ riscv_merge_std_ext (bfd *ibfd,
   /* Handle standard extension first.  */
   for (p = standard_exts; *p; ++p)
     {
+      struct riscv_subset_t *ext_in, *ext_out, *ext_merged;
       char find_ext[2] = {*p, '\0'};
-      struct riscv_subset_t *find_in =
-	riscv_lookup_subset (&in_subsets, find_ext);
-      struct riscv_subset_t *find_out =
-	riscv_lookup_subset (&out_subsets, find_ext);
+      bool find_in, find_out;
 
-      if (find_in == NULL && find_out == NULL)
+      find_in = riscv_lookup_subset (&in_subsets, find_ext, &ext_in);
+      find_out = riscv_lookup_subset (&out_subsets, find_ext, &ext_out);
+
+      if (!find_in && !find_out)
 	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 (find_in && find_out)
+	riscv_update_subset_version(ext_in, ext_out);
 
-      struct riscv_subset_t *merged = find_in ? find_in : find_out;
-      riscv_add_subset (&merged_subsets, merged->name,
-			merged->major_version, merged->minor_version);
+      ext_merged = find_out ? ext_out : ext_in;
+      riscv_add_subset (&merged_subsets, ext_merged->name,
+			ext_merged->major_version, ext_merged->minor_version);
     }
 
   /* Skip all standard extensions.  */
@@ -2881,57 +4068,67 @@ riscv_merge_std_ext (bfd *ibfd,
   *pin = in;
   *pout = out;
 
-  return TRUE;
+  return true;
 }
 
-/* Merge non-standard and supervisor extensions.
-   Return Value:
-     Return FALSE if failed to merge.
+/* 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.  */
 
-   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 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 *))
+static bool
+riscv_merge_multi_letter_ext (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_compare_subsets (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.  */
+	  riscv_update_subset_version (in, out);
+
+	  riscv_add_subset (&merged_subsets, out->name, out->major_version,
+			    out->minor_version);
+	  out = out->next;
+	  in = in->next;
+	}
     }
 
-  *pin = in;
-  *pout = out;
-  return TRUE;
+  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;
 }
 
 /* Merge Tag_RISCV_arch attribute.  */
@@ -2940,37 +4137,28 @@ static char *
 riscv_merge_arch_attr_info (bfd *ibfd, char *in_arch, char *out_arch)
 {
   riscv_subset_t *in, *out;
-  char *merged_arch_str;
+  static char *merged_arch_str = NULL;
 
   unsigned xlen_in, xlen_out;
   merged_subsets.head = NULL;
   merged_subsets.tail = NULL;
 
-  riscv_parse_subset_t rpe_in;
-  riscv_parse_subset_t rpe_out;
-
-  rpe_in.subset_list = &in_subsets;
-  rpe_in.error_handler = _bfd_error_handler;
-  rpe_in.xlen = &xlen_in;
-
-  rpe_out.subset_list = &out_subsets;
-  rpe_out.error_handler = _bfd_error_handler;
-  rpe_out.xlen = &xlen_out;
+  riscv_parse_subset_t riscv_rps_ld_in =
+    {&in_subsets, _bfd_error_handler, &xlen_in, NULL, false};
+  riscv_parse_subset_t riscv_rps_ld_out =
+    {&out_subsets, _bfd_error_handler, &xlen_out, NULL, false};
 
   if (in_arch == NULL && out_arch == NULL)
     return NULL;
-
   if (in_arch == NULL && out_arch != NULL)
     return out_arch;
-
   if (in_arch != NULL && out_arch == NULL)
     return in_arch;
 
-  /* Parse subset from arch string.  */
-  if (!riscv_parse_subset (&rpe_in, in_arch))
+  /* Parse subset from ISA string.  */
+  if (!riscv_parse_subset (&riscv_rps_ld_in, in_arch))
     return NULL;
-
-  if (!riscv_parse_subset (&rpe_out, out_arch))
+  if (!riscv_parse_subset (&riscv_rps_ld_out, out_arch))
     return NULL;
 
   /* Checking XLEN.  */
@@ -2978,7 +4166,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,33 +4177,32 @@ 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 (&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;
     }
 
-  merged_arch_str = riscv_arch_str (ARCH_SIZE, &merged_subsets);
+  /* Free the previous merged_arch_str which called xmalloc.  */
+  free (merged_arch_str);
+
+  merged_arch_str = riscv_arch_str (ARCH_SIZE, &merged_subsets,
+				    false/* update */);
 
   /* Release the subset lists.  */
   riscv_release_subset_list (&in_subsets);
@@ -3028,25 +4215,26 @@ riscv_merge_arch_attr_info (bfd *ibfd, c
 /* Merge object attributes from IBFD into output_bfd of INFO.
    Raise an error if there are conflicting attributes.  */
 
-static bfd_boolean
+static bool
 riscv_merge_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   obj_attribute *in_attr;
   obj_attribute *out_attr;
-  bfd_boolean result = TRUE;
+  bool result = true;
+  bool priv_attrs_merged = false;
   const char *sec_name = get_elf_backend_data (ibfd)->obj_attrs_section;
   unsigned int i;
 
   /* Skip linker created files.  */
   if (ibfd->flags & BFD_LINKER_CREATED)
-    return TRUE;
+    return true;
 
   /* Skip any input that doesn't have an 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;
+    return true;
 
   if (!elf_known_obj_attributes_proc (obfd)[0].i)
     {
@@ -3059,7 +4247,7 @@ riscv_merge_attributes (bfd *ibfd, struc
 	 initialized.  */
       out_attr[0].i = 1;
 
-      return TRUE;
+      return true;
     }
 
   in_attr = elf_known_obj_attributes_proc (ibfd);
@@ -3075,34 +4263,80 @@ riscv_merge_attributes (bfd *ibfd, struc
 	else if (in_attr[Tag_RISCV_arch].s
 		 && out_attr[Tag_RISCV_arch].s)
 	  {
-	    /* Check arch compatible.  */
+	    /* Check compatible.  */
 	    char *merged_arch =
 		riscv_merge_arch_attr_info (ibfd,
 					    in_attr[Tag_RISCV_arch].s,
 					    out_attr[Tag_RISCV_arch].s);
 	    if (merged_arch == NULL)
 	      {
-		result = FALSE;
+		result = false;
 		out_attr[Tag_RISCV_arch].s = "";
 	      }
 	    else
 	      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 privileged elf 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_spec_class in_priv_spec = PRIV_SPEC_CLASS_NONE;
+	    enum riscv_spec_class out_priv_spec = PRIV_SPEC_CLASS_NONE;
+
+	    /* Get the privileged spec class from elf attributes.  */
+	    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 privileged 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)
+	      {
+		/* The abandoned privileged spec v1.9.1 can not be linked with
+		   others since the conflicts.  Keep the check since compatible
+		   issue.  */
+		if (in_priv_spec == PRIV_SPEC_CLASS_1P9P1
+		    || out_priv_spec == PRIV_SPEC_CLASS_1P9P1)
+		  {
+		    _bfd_error_handler
+		      (_("warning: privileged spec version 1.9.1 can not be "
+			 "linked with other spec versions"));
+		  }
+
+		/* Update the output privileged 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 +4346,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;
+	    result = false;
 	  }
 	break;
+
       default:
 	result &= _bfd_elf_merge_unknown_attribute_low (ibfd, obfd, i);
       }
@@ -3128,7 +4363,7 @@ riscv_merge_attributes (bfd *ibfd, struc
 
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
   if (!_bfd_elf_merge_object_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   /* Check for any attributes not known on RISC-V.  */
   result &= _bfd_elf_merge_unknown_attribute_list (ibfd, obfd);
@@ -3139,14 +4374,14 @@ riscv_merge_attributes (bfd *ibfd, struc
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-static bfd_boolean
+static bool
 _bfd_riscv_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   flagword new_flags, old_flags;
 
   if (!is_riscv_elf (ibfd) || !is_riscv_elf (obfd))
-    return TRUE;
+    return true;
 
   if (strcmp (bfd_get_target (ibfd), bfd_get_target (obfd)) != 0)
     {
@@ -3154,24 +4389,14 @@ _bfd_riscv_elf_merge_private_bfd_data (b
 	(_("%pB: ABI is incompatible with that of the selected emulation:\n"
 	   "  target emulation `%s' does not match `%s'"),
 	 ibfd, bfd_get_target (ibfd), bfd_get_target (obfd));
-      return FALSE;
+      return false;
     }
 
   if (!_bfd_elf_merge_object_attributes (ibfd, info))
-    return FALSE;
+    return false;
 
   if (!riscv_merge_attributes (ibfd, info))
-    return FALSE;
-
-  new_flags = elf_elfheader (ibfd)->e_flags;
-  old_flags = elf_elfheader (obfd)->e_flags;
-
-  if (! elf_flags_init (obfd))
-    {
-      elf_flags_init (obfd) = TRUE;
-      elf_elfheader (obfd)->e_flags = new_flags;
-      return TRUE;
-    }
+    return false;
 
   /* Check to see if the input BFD actually contains any sections.  If not,
      its flags may not have been initialized either, but it cannot actually
@@ -3182,23 +4407,35 @@ _bfd_riscv_elf_merge_private_bfd_data (b
      case, there is no need to check for code specific flags.  */
   if (!(ibfd->flags & DYNAMIC))
     {
-      bfd_boolean null_input_bfd = TRUE;
-      bfd_boolean only_data_sections = TRUE;
+      bool null_input_bfd = true;
+      bool only_data_sections = true;
       asection *sec;
 
       for (sec = ibfd->sections; sec != NULL; sec = sec->next)
 	{
+	  null_input_bfd = false;
+
 	  if ((bfd_section_flags (sec)
 	       & (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
 	      == (SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS))
-	    only_data_sections = FALSE;
-
-	  null_input_bfd = FALSE;
-	  break;
+	    {
+	      only_data_sections = false;
+	      break;
+	    }
 	}
 
       if (null_input_bfd || only_data_sections)
-	return TRUE;
+	return true;
+    }
+
+  new_flags = elf_elfheader (ibfd)->e_flags;
+  old_flags = elf_elfheader (obfd)->e_flags;
+
+  if (!elf_flags_init (obfd))
+    {
+      elf_flags_init (obfd) = true;
+      elf_elfheader (obfd)->e_flags = new_flags;
+      return true;
     }
 
   /* Disallow linking different float ABIs.  */
@@ -3222,119 +4459,26 @@ _bfd_riscv_elf_merge_private_bfd_data (b
   /* Allow linking RVC and non-RVC, and keep the RVC flag.  */
   elf_elfheader (obfd)->e_flags |= new_flags & EF_RISCV_RVC;
 
-  return TRUE;
+  /* Allow linking TSO and non-TSO, and keep the TSO flag.  */
+  elf_elfheader (obfd)->e_flags |= new_flags & EF_RISCV_TSO;
 
-fail:
+  return true;
+
+ fail:
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
 
-/* Delete some bytes from a section while relaxing.  */
+/* Ignore and report warning for the unknwon elf attribute.  */
 
-static bfd_boolean
-riscv_relax_delete_bytes (bfd *abfd, asection *sec, bfd_vma addr, size_t count,
-			  struct bfd_link_info *link_info)
+static bool
+riscv_elf_obj_attrs_handle_unknown (bfd *abfd, int tag)
 {
-  unsigned int i, symcount;
-  bfd_vma toaddr = sec->size;
-  struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (abfd);
-  Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-  unsigned int sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
-  struct bfd_elf_section_data *data = elf_section_data (sec);
-  bfd_byte *contents = data->this_hdr.contents;
-
-  /* Actually delete the bytes.  */
-  sec->size -= count;
-  memmove (contents + addr, contents + addr + count, toaddr - addr - count);
-
-  /* Adjust the location of all of the relocs.  Note that we need not
-     adjust the addends, since all PC-relative references must be against
-     symbols, which we will adjust below.  */
-  for (i = 0; i < sec->reloc_count; i++)
-    if (data->relocs[i].r_offset > addr && data->relocs[i].r_offset < toaddr)
-      data->relocs[i].r_offset -= count;
-
-  /* Adjust the local symbols defined in this section.  */
-  for (i = 0; i < symtab_hdr->sh_info; i++)
-    {
-      Elf_Internal_Sym *sym = (Elf_Internal_Sym *) symtab_hdr->contents + i;
-      if (sym->st_shndx == sec_shndx)
-	{
-	  /* If the symbol is in the range of memory we just moved, we
-	     have to adjust its value.  */
-	  if (sym->st_value > addr && sym->st_value <= toaddr)
-	    sym->st_value -= count;
-
-	  /* If the symbol *spans* the bytes we just deleted (i.e. its
-	     *end* is in the moved bytes but its *start* isn't), then we
-	     must adjust its size.
-
-	     This test needs to use the original value of st_value, otherwise
-	     we might accidentally decrease size when deleting bytes right
-	     before the symbol.  But since deleted relocs can't span across
-	     symbols, we can't have both a st_value and a st_size decrease,
-	     so it is simpler to just use an else.  */
-	  else if (sym->st_value <= addr
-		   && sym->st_value + sym->st_size > addr
-		   && sym->st_value + sym->st_size <= toaddr)
-	    sym->st_size -= count;
-	}
-    }
-
-  /* Now adjust the global symbols defined in this section.  */
-  symcount = ((symtab_hdr->sh_size / sizeof (ElfNN_External_Sym))
-	      - symtab_hdr->sh_info);
-
-  for (i = 0; i < symcount; i++)
-    {
-      struct elf_link_hash_entry *sym_hash = sym_hashes[i];
-
-      /* The '--wrap SYMBOL' option is causing a pain when the object file,
-	 containing the definition of __wrap_SYMBOL, includes a direct
-	 call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference
-	 the same symbol (which is __wrap_SYMBOL), but still exist as two
-	 different symbols in 'sym_hashes', we don't want to adjust
-	 the global symbol __wrap_SYMBOL twice.  */
-      /* The same problem occurs with symbols that are versioned_hidden, as
-	 foo becomes an alias for foo@BAR, and hence they need the same
-	 treatment.  */
-      if (link_info->wrap_hash != NULL
-	  || sym_hash->versioned == versioned_hidden)
-	{
-	  struct elf_link_hash_entry **cur_sym_hashes;
-
-	  /* Loop only over the symbols which have already been checked.  */
-	  for (cur_sym_hashes = sym_hashes; cur_sym_hashes < &sym_hashes[i];
-	       cur_sym_hashes++)
-	    {
-	      /* If the current symbol is identical to 'sym_hash', that means
-		 the symbol was already adjusted (or at least checked).  */
-	      if (*cur_sym_hashes == sym_hash)
-		break;
-	    }
-	  /* Don't adjust the symbol again.  */
-	  if (cur_sym_hashes < &sym_hashes[i])
-	    continue;
-	}
-
-      if ((sym_hash->root.type == bfd_link_hash_defined
-	   || sym_hash->root.type == bfd_link_hash_defweak)
-	  && sym_hash->root.u.def.section == sec)
-	{
-	  /* As above, adjust the value if needed.  */
-	  if (sym_hash->root.u.def.value > addr
-	      && sym_hash->root.u.def.value <= toaddr)
-	    sym_hash->root.u.def.value -= count;
-
-	  /* As above, adjust the size if needed.  */
-	  else if (sym_hash->root.u.def.value <= addr
-		   && sym_hash->root.u.def.value + sym_hash->size > addr
-		   && sym_hash->root.u.def.value + sym_hash->size <= toaddr)
-	    sym_hash->size -= count;
-	}
-    }
-
-  return TRUE;
+  _bfd_error_handler
+    /* xgettext:c-format */
+    (_("warning: %pB: unknown RISCV ABI object attribute %d"),
+     abfd, tag);
+  return true;
 }
 
 /* A second format for recording PC-relative hi relocations.  This stores the
@@ -3348,7 +4492,7 @@ struct riscv_pcgp_hi_reloc
   bfd_vma hi_addr;
   unsigned hi_sym;
   asection *sym_sec;
-  bfd_boolean undefined_weak;
+  bool undefined_weak;
   riscv_pcgp_hi_reloc *next;
 };
 
@@ -3367,12 +4511,12 @@ typedef struct
 
 /* Initialize the pcgp reloc info in P.  */
 
-static bfd_boolean
+static bool
 riscv_init_pcgp_relocs (riscv_pcgp_relocs *p)
 {
   p->hi = NULL;
   p->lo = NULL;
-  return TRUE;
+  return true;
 }
 
 /* Free the pcgp reloc info in P.  */
@@ -3385,14 +4529,14 @@ riscv_free_pcgp_relocs (riscv_pcgp_reloc
   riscv_pcgp_hi_reloc *c;
   riscv_pcgp_lo_reloc *l;
 
-  for (c = p->hi; c != NULL;)
+  for (c = p->hi; c != NULL; )
     {
       riscv_pcgp_hi_reloc *next = c->next;
       free (c);
       c = next;
     }
 
-  for (l = p->lo; l != NULL;)
+  for (l = p->lo; l != NULL; )
     {
       riscv_pcgp_lo_reloc *next = l->next;
       free (l);
@@ -3404,15 +4548,15 @@ riscv_free_pcgp_relocs (riscv_pcgp_reloc
    The HI_ADDEND, HI_ADDR, HI_SYM, and SYM_SEC args contain info required to
    relax the corresponding lo part reloc.  */
 
-static bfd_boolean
+static bool
 riscv_record_pcgp_hi_reloc (riscv_pcgp_relocs *p, bfd_vma hi_sec_off,
 			    bfd_vma hi_addend, bfd_vma hi_addr,
 			    unsigned hi_sym, asection *sym_sec,
-			    bfd_boolean undefined_weak)
+			    bool undefined_weak)
 {
-  riscv_pcgp_hi_reloc *new = bfd_malloc (sizeof(*new));
+  riscv_pcgp_hi_reloc *new = bfd_malloc (sizeof (*new));
   if (!new)
-    return FALSE;
+    return false;
   new->hi_sec_off = hi_sec_off;
   new->hi_addend = hi_addend;
   new->hi_addr = hi_addr;
@@ -3421,14 +4565,14 @@ riscv_record_pcgp_hi_reloc (riscv_pcgp_r
   new->undefined_weak = undefined_weak;
   new->next = p->hi;
   p->hi = new;
-  return TRUE;
+  return true;
 }
 
 /* Look up hi part pcgp reloc info in P, using HI_SEC_OFF as the lookup index.
    This is used by a lo part reloc to find the corresponding hi part reloc.  */
 
 static riscv_pcgp_hi_reloc *
-riscv_find_pcgp_hi_reloc(riscv_pcgp_relocs *p, bfd_vma hi_sec_off)
+riscv_find_pcgp_hi_reloc (riscv_pcgp_relocs *p, bfd_vma hi_sec_off)
 {
   riscv_pcgp_hi_reloc *c;
 
@@ -3441,55 +4585,306 @@ riscv_find_pcgp_hi_reloc(riscv_pcgp_relo
 /* Record pcgp lo part reloc info in P, using HI_SEC_OFF as the lookup info.
    This is used to record relocs that can't be relaxed.  */
 
-static bfd_boolean
+static bool
 riscv_record_pcgp_lo_reloc (riscv_pcgp_relocs *p, bfd_vma hi_sec_off)
 {
-  riscv_pcgp_lo_reloc *new = bfd_malloc (sizeof(*new));
+  riscv_pcgp_lo_reloc *new = bfd_malloc (sizeof (*new));
   if (!new)
-    return FALSE;
+    return false;
   new->hi_sec_off = hi_sec_off;
   new->next = p->lo;
   p->lo = new;
-  return TRUE;
+  return true;
 }
 
 /* Look up lo part pcgp reloc info in P, using HI_SEC_OFF as the lookup index.
    This is used by a hi part reloc to find the corresponding lo part reloc.  */
 
-static bfd_boolean
+static bool
 riscv_find_pcgp_lo_reloc (riscv_pcgp_relocs *p, bfd_vma hi_sec_off)
 {
   riscv_pcgp_lo_reloc *c;
 
   for (c = p->lo; c != NULL; c = c->next)
     if (c->hi_sec_off == hi_sec_off)
-      return TRUE;
-  return FALSE;
+      return true;
+  return false;
+}
+
+static void
+riscv_update_pcgp_relocs (riscv_pcgp_relocs *p, asection *deleted_sec,
+			  bfd_vma deleted_addr, size_t deleted_count)
+{
+  /* Bytes have already been deleted and toaddr should match the old section
+     size for our checks, so adjust it here.  */
+  bfd_vma toaddr = deleted_sec->size + deleted_count;
+  riscv_pcgp_lo_reloc *l;
+  riscv_pcgp_hi_reloc *h;
+
+  /* Update section offsets of corresponding pcrel_hi relocs for the pcrel_lo
+     entries where they occur after the deleted bytes.  */
+  for (l = p->lo; l != NULL; l = l->next)
+    if (l->hi_sec_off > deleted_addr
+	&& l->hi_sec_off < toaddr)
+      l->hi_sec_off -= deleted_count;
+
+  /* Update both section offsets, and symbol values of pcrel_hi relocs where
+     these values occur after the deleted bytes.  */
+  for (h = p->hi; h != NULL; h = h->next)
+    {
+      if (h->hi_sec_off > deleted_addr
+	  && h->hi_sec_off < toaddr)
+	h->hi_sec_off -= deleted_count;
+      if (h->sym_sec == deleted_sec
+	  && h->hi_addr > deleted_addr
+	  && h->hi_addr < toaddr)
+      h->hi_addr -= deleted_count;
+    }
+}
+
+/* Delete some bytes, adjust relcocations and symbol table from a section.  */
+
+static bool
+_riscv_relax_delete_bytes (bfd *abfd,
+			   asection *sec,
+			   bfd_vma addr,
+			   size_t count,
+			   struct bfd_link_info *link_info,
+			   riscv_pcgp_relocs *p,
+			   bfd_vma delete_total,
+			   bfd_vma toaddr)
+{
+  unsigned int i, symcount;
+  struct elf_link_hash_entry **sym_hashes = elf_sym_hashes (abfd);
+  Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+  unsigned int sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
+  struct bfd_elf_section_data *data = elf_section_data (sec);
+  bfd_byte *contents = data->this_hdr.contents;
+  size_t bytes_to_move = toaddr - addr - count;
+
+  /* Actually delete the bytes.  */
+  sec->size -= count;
+  memmove (contents + addr, contents + addr + count + delete_total, bytes_to_move);
+
+  /* Still adjust relocations and symbols in non-linear times.  */
+  toaddr = sec->size + count;
+
+  /* Adjust the location of all of the relocs.  Note that we need not
+     adjust the addends, since all PC-relative references must be against
+     symbols, which we will adjust below.  */
+  for (i = 0; i < sec->reloc_count; i++)
+    if (data->relocs[i].r_offset > addr && data->relocs[i].r_offset < toaddr)
+      data->relocs[i].r_offset -= count;
+
+  /* Adjust the hi_sec_off, and the hi_addr of any entries in the pcgp relocs
+     table for which these values occur after the deleted bytes.  */
+  if (p)
+    riscv_update_pcgp_relocs (p, sec, addr, count);
+
+  /* Adjust the local symbols defined in this section.  */
+  for (i = 0; i < symtab_hdr->sh_info; i++)
+    {
+      Elf_Internal_Sym *sym = (Elf_Internal_Sym *) symtab_hdr->contents + i;
+      if (sym->st_shndx == sec_shndx)
+	{
+	  /* If the symbol is in the range of memory we just moved, we
+	     have to adjust its value.  */
+	  if (sym->st_value > addr && sym->st_value <= toaddr)
+	    sym->st_value -= count;
+
+	  /* If the symbol *spans* the bytes we just deleted (i.e. its
+	     *end* is in the moved bytes but its *start* isn't), then we
+	     must adjust its size.
+
+	     This test needs to use the original value of st_value, otherwise
+	     we might accidentally decrease size when deleting bytes right
+	     before the symbol.  But since deleted relocs can't span across
+	     symbols, we can't have both a st_value and a st_size decrease,
+	     so it is simpler to just use an else.  */
+	  else if (sym->st_value <= addr
+		   && sym->st_value + sym->st_size > addr
+		   && sym->st_value + sym->st_size <= toaddr)
+	    sym->st_size -= count;
+	}
+    }
+
+  /* Now adjust the global symbols defined in this section.  */
+  symcount = ((symtab_hdr->sh_size / sizeof (ElfNN_External_Sym))
+	      - symtab_hdr->sh_info);
+
+  for (i = 0; i < symcount; i++)
+    {
+      struct elf_link_hash_entry *sym_hash = sym_hashes[i];
+
+      /* The '--wrap SYMBOL' option is causing a pain when the object file,
+	 containing the definition of __wrap_SYMBOL, includes a direct
+	 call to SYMBOL as well. Since both __wrap_SYMBOL and SYMBOL reference
+	 the same symbol (which is __wrap_SYMBOL), but still exist as two
+	 different symbols in 'sym_hashes', we don't want to adjust
+	 the global symbol __wrap_SYMBOL twice.
+
+	 The same problem occurs with symbols that are versioned_hidden, as
+	 foo becomes an alias for foo@BAR, and hence they need the same
+	 treatment.  */
+      if (link_info->wrap_hash != NULL
+	  || sym_hash->versioned != unversioned)
+	{
+	  struct elf_link_hash_entry **cur_sym_hashes;
+
+	  /* Loop only over the symbols which have already been checked.  */
+	  for (cur_sym_hashes = sym_hashes; cur_sym_hashes < &sym_hashes[i];
+	       cur_sym_hashes++)
+	    {
+	      /* If the current symbol is identical to 'sym_hash', that means
+		 the symbol was already adjusted (or at least checked).  */
+	      if (*cur_sym_hashes == sym_hash)
+		break;
+	    }
+	  /* Don't adjust the symbol again.  */
+	  if (cur_sym_hashes < &sym_hashes[i])
+	    continue;
+	}
+
+      if ((sym_hash->root.type == bfd_link_hash_defined
+	   || sym_hash->root.type == bfd_link_hash_defweak)
+	  && sym_hash->root.u.def.section == sec)
+	{
+	  /* As above, adjust the value if needed.  */
+	  if (sym_hash->root.u.def.value > addr
+	      && sym_hash->root.u.def.value <= toaddr)
+	    sym_hash->root.u.def.value -= count;
+
+	  /* As above, adjust the size if needed.  */
+	  else if (sym_hash->root.u.def.value <= addr
+		   && sym_hash->root.u.def.value + sym_hash->size > addr
+		   && sym_hash->root.u.def.value + sym_hash->size <= toaddr)
+	    sym_hash->size -= count;
+	}
+    }
+
+  return true;
+}
+
+typedef bool (*relax_delete_t) (bfd *, asection *,
+				bfd_vma, size_t,
+				struct bfd_link_info *,
+				riscv_pcgp_relocs *,
+				Elf_Internal_Rela *);
+
+static relax_delete_t riscv_relax_delete_bytes;
+
+/* Do not delete some bytes from a section while relaxing.
+   Just mark the deleted bytes as R_RISCV_DELETE.  */
+
+static bool
+_riscv_relax_delete_piecewise (bfd *abfd ATTRIBUTE_UNUSED,
+			       asection *sec ATTRIBUTE_UNUSED,
+			       bfd_vma addr,
+			       size_t count,
+			       struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
+			       riscv_pcgp_relocs *p ATTRIBUTE_UNUSED,
+			       Elf_Internal_Rela *rel)
+{
+  if (rel == NULL)
+    return false;
+  rel->r_info = ELFNN_R_INFO (0, R_RISCV_DELETE);
+  rel->r_offset = addr;
+  rel->r_addend = count;
+  return true;
 }
 
-typedef bfd_boolean (*relax_func_t) (bfd *, asection *, asection *,
-				     struct bfd_link_info *,
-				     Elf_Internal_Rela *,
-				     bfd_vma, bfd_vma, bfd_vma, bfd_boolean *,
-				     riscv_pcgp_relocs *,
-				     bfd_boolean undefined_weak);
+/* Delete some bytes from a section while relaxing.  */
+
+static bool
+_riscv_relax_delete_immediate (bfd *abfd,
+			       asection *sec,
+			       bfd_vma addr,
+			       size_t count,
+			       struct bfd_link_info *link_info,
+			       riscv_pcgp_relocs *p,
+			       Elf_Internal_Rela *rel)
+{
+  if (rel != NULL)
+    rel->r_info = ELFNN_R_INFO (0, R_RISCV_NONE);
+  return _riscv_relax_delete_bytes (abfd, sec, addr, count,
+				    link_info, p, 0, sec->size);
+}
+
+/* Delete the bytes for R_RISCV_DELETE relocs.  */
+
+static bool
+riscv_relax_resolve_delete_relocs (bfd *abfd,
+				   asection *sec,
+				   struct bfd_link_info *link_info,
+				   Elf_Internal_Rela *relocs)
+{
+  bfd_vma delete_total = 0;
+  unsigned int i;
+
+  for (i = 0; i < sec->reloc_count; i++)
+    {
+      Elf_Internal_Rela *rel = relocs + i;
+      if (ELFNN_R_TYPE (rel->r_info) != R_RISCV_DELETE)
+	continue;
+
+      /* Find the next R_RISCV_DELETE reloc if possible.  */
+      Elf_Internal_Rela *rel_next = NULL;
+      unsigned int start = rel - relocs;
+      for (i = start; i < sec->reloc_count; i++)
+	{
+	  /* Since we only replace existing relocs and don't add new relocs, the
+	     relocs are in sequential order. We can skip the relocs prior to this
+	     one, making this search linear time.  */
+	  rel_next = relocs + i;
+	  if (ELFNN_R_TYPE ((rel_next)->r_info) == R_RISCV_DELETE
+	      && (rel_next)->r_offset > rel->r_offset)
+	    {
+	      BFD_ASSERT (rel_next - rel > 0);
+	      break;
+	    }
+	  else
+	    rel_next = NULL;
+	}
+
+      bfd_vma toaddr = rel_next == NULL ? sec->size : rel_next->r_offset;
+      if (!_riscv_relax_delete_bytes (abfd, sec, rel->r_offset, rel->r_addend,
+				      link_info, NULL, delete_total, toaddr))
+	return false;
+
+      delete_total += rel->r_addend;
+      rel->r_info = ELFNN_R_INFO (0, R_RISCV_NONE);
+
+      /* Skip ahead to the next delete reloc.  */
+      i = rel_next != NULL ? (unsigned int) (rel_next - relocs - 1)
+			   : sec->reloc_count;
+    }
+
+  return true;
+}
+
+typedef bool (*relax_func_t) (bfd *, asection *, asection *,
+			      struct bfd_link_info *,
+			      Elf_Internal_Rela *,
+			      bfd_vma, bfd_vma, bfd_vma, bool *,
+			      riscv_pcgp_relocs *,
+			      bool undefined_weak);
 
 /* Relax AUIPC + JALR into JAL.  */
 
-static bfd_boolean
+static bool
 _bfd_riscv_relax_call (bfd *abfd, asection *sec, asection *sym_sec,
 		       struct bfd_link_info *link_info,
 		       Elf_Internal_Rela *rel,
 		       bfd_vma symval,
 		       bfd_vma max_alignment,
 		       bfd_vma reserve_size ATTRIBUTE_UNUSED,
-		       bfd_boolean *again,
-		       riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED,
-		       bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
+		       bool *again,
+		       riscv_pcgp_relocs *pcgp_relocs,
+		       bool 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_boolean near_zero = (symval + RISCV_IMM_REACH/2) < RISCV_IMM_REACH;
+  bfd_vma foff = symval - (sec_addr (sec) + rel->r_offset);
+  bool 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;
 
@@ -3497,25 +4892,25 @@ _bfd_riscv_relax_call (bfd *abfd, asecti
      cause the PC-relative offset to later increase, so we need to add in the
      max alignment of any section inclusive from the call to the target.
      Otherwise, we only need to use the alignment of the current section.  */
-  if (VALID_UJTYPE_IMM (foff))
+  if (VALID_JTYPE_IMM (foff))
     {
       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.  */
-  if (!VALID_UJTYPE_IMM (foff) && !(!bfd_link_pic (link_info) && near_zero))
-    return TRUE;
+  if (!VALID_JTYPE_IMM (foff) && !(!bfd_link_pic (link_info) && near_zero))
+    return true;
 
   /* Shorten the function call.  */
   BFD_ASSERT (rel->r_offset + 8 <= sec->size);
 
-  auipc = bfd_get_32 (abfd, contents + rel->r_offset);
-  jalr = bfd_get_32 (abfd, contents + rel->r_offset + 4);
+  auipc = bfd_getl32 (contents + rel->r_offset);
+  jalr = bfd_getl32 (contents + rel->r_offset + 4);
   rd = (jalr >> OP_SH_RD) & OP_MASK_RD;
-  rvc = rvc && VALID_RVC_J_IMM (foff);
+  rvc = rvc && VALID_CJTYPE_IMM (foff);
 
   /* C.J exists on RV32 and RV64, but C.JAL is RV32-only.  */
   rvc = rvc && (rd == 0 || (rd == X_RA && ARCH_SIZE == 32));
@@ -3527,15 +4922,15 @@ _bfd_riscv_relax_call (bfd *abfd, asecti
       auipc = rd == 0 ? MATCH_C_J : MATCH_C_JAL;
       len = 2;
     }
-  else if (VALID_UJTYPE_IMM (foff))
+  else if (VALID_JTYPE_IMM (foff))
     {
       /* Relax to JAL rd, addr.  */
       r_type = R_RISCV_JAL;
       auipc = MATCH_JAL | (rd << OP_SH_RD);
     }
-  else /* near_zero */
+  else
     {
-      /* Relax to JALR rd, x0, addr.  */
+      /* Near zero, relax to JALR rd, x0, addr.  */
       r_type = R_RISCV_LO12_I;
       auipc = MATCH_JALR | (rd << OP_SH_RD);
     }
@@ -3543,34 +4938,44 @@ _bfd_riscv_relax_call (bfd *abfd, asecti
   /* Replace the R_RISCV_CALL reloc.  */
   rel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info), r_type);
   /* Replace the AUIPC.  */
-  bfd_put (8 * len, abfd, auipc, contents + rel->r_offset);
+  riscv_put_insn (8 * len, auipc, contents + rel->r_offset);
 
-  /* Delete unnecessary JALR.  */
-  *again = TRUE;
+  /* Delete unnecessary JALR and reuse the R_RISCV_RELAX reloc.  */
+  *again = true;
   return riscv_relax_delete_bytes (abfd, sec, rel->r_offset + len, 8 - len,
-				   link_info);
+				   link_info, pcgp_relocs, rel + 1);
 }
 
-/* Traverse all output sections and return the max alignment.  */
+/* Traverse all output sections and return the max alignment.
+
+   If gp is zero, then all the output section alignments are
+   possible candidates;  Otherwise, only the output sections
+   which are in the [gp-2K, gp+2K) range need to be considered.  */
 
 static bfd_vma
-_bfd_riscv_get_max_alignment (asection *sec)
+_bfd_riscv_get_max_alignment (asection *sec, bfd_vma gp)
 {
   unsigned int max_alignment_power = 0;
   asection *o;
 
   for (o = sec->output_section->owner->sections; o != NULL; o = o->next)
     {
-      if (o->alignment_power > max_alignment_power)
+      bool valid = true;
+      if (gp
+	  && !(VALID_ITYPE_IMM (sec_addr (o) - gp)
+	       || VALID_ITYPE_IMM (sec_addr (o) + o->size - gp)))
+	valid = false;
+
+      if (valid && o->alignment_power > max_alignment_power)
 	max_alignment_power = o->alignment_power;
     }
 
   return (bfd_vma) 1 << max_alignment_power;
 }
 
-/* Relax non-PIC global variable references.  */
+/* Relax non-PIC global variable references to GP-relative references.  */
 
-static bfd_boolean
+static bool
 _bfd_riscv_relax_lui (bfd *abfd,
 		      asection *sec,
 		      asection *sym_sec,
@@ -3579,70 +4984,82 @@ _bfd_riscv_relax_lui (bfd *abfd,
 		      bfd_vma symval,
 		      bfd_vma max_alignment,
 		      bfd_vma reserve_size,
-		      bfd_boolean *again,
-		      riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED,
-		      bfd_boolean undefined_weak)
+		      bool *again,
+		      riscv_pcgp_relocs *pcgp_relocs,
+		      bool undefined_weak)
 {
+  struct riscv_elf_link_hash_table *htab = riscv_elf_hash_table (link_info);
   bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
-  bfd_vma gp = riscv_global_pointer_value (link_info);
+  /* Can relax to x0 even when gp relaxation is disabled.  */
+  bfd_vma gp = htab->params->relax_gp
+	       ? riscv_global_pointer_value (link_info)
+	       : 0;
+  bfd_vma data_segment_alignment = link_info->relro
+				   ? ELF_MAXPAGESIZE + ELF_COMMONPAGESIZE
+				   : ELF_MAXPAGESIZE;
   int use_rvc = elf_elfheader (abfd)->e_flags & EF_RISCV_RVC;
 
   BFD_ASSERT (rel->r_offset + 4 <= sec->size);
 
-  if (gp)
+  if (!undefined_weak && gp)
     {
       /* If gp and the symbol are in the same output section, which is not the
 	 abs section, then consider only that output section's alignment.  */
       struct bfd_link_hash_entry *h =
-	bfd_link_hash_lookup (link_info->hash, RISCV_GP_SYMBOL, FALSE, FALSE,
-			      TRUE);
+	bfd_link_hash_lookup (link_info->hash, RISCV_GP_SYMBOL, false, false,
+			      true);
       if (h->u.def.section->output_section == sym_sec->output_section
 	  && sym_sec->output_section != bfd_abs_section_ptr)
 	max_alignment = (bfd_vma) 1 << sym_sec->output_section->alignment_power;
+      else
+	{
+	  /* Consider output section alignments which are in [gp-2K, gp+2K). */
+	  max_alignment = htab->max_alignment_for_gp;
+	  if (max_alignment == (bfd_vma) -1)
+	    {
+	      max_alignment = _bfd_riscv_get_max_alignment (sec, gp);
+	      htab->max_alignment_for_gp = max_alignment;
+	    }
+	}
+
+      /* PR27566, for default linker script, if a symbol's value outsides the
+	 bounds of the defined section, then it may cross the data segment
+	 alignment, so we should reserve more size about MAXPAGESIZE and
+	 COMMONPAGESIZE, since the data segment alignment might move the
+	 section forward.  */
+      if (symval < sec_addr (sym_sec)
+	  || symval > (sec_addr (sym_sec) + sym_sec->size))
+	max_alignment = data_segment_alignment > max_alignment
+			? data_segment_alignment : max_alignment;
     }
 
   /* Is the reference in range of x0 or gp?
-     Valid gp range conservatively because of alignment issue.  */
+     Valid gp range conservatively because of alignment issue.
+
+     Should we also consider the alignment issue for x0 base?  */
   if (undefined_weak
-      || (VALID_ITYPE_IMM (symval)
-	  || (symval >= gp
-	      && VALID_ITYPE_IMM (symval - gp + max_alignment + reserve_size))
-	  || (symval < gp
-	      && VALID_ITYPE_IMM (symval - gp - max_alignment - reserve_size))))
+      || VALID_ITYPE_IMM (symval)
+      || (symval >= gp
+	  && VALID_ITYPE_IMM (symval - gp + max_alignment + reserve_size))
+      || (symval < gp
+	  && VALID_ITYPE_IMM (symval - gp - max_alignment - reserve_size)))
     {
       unsigned sym = ELFNN_R_SYM (rel->r_info);
       switch (ELFNN_R_TYPE (rel->r_info))
 	{
 	case R_RISCV_LO12_I:
-	  if (undefined_weak)
-	    {
-	      /* Change the RS1 to zero.  */
-	      bfd_vma insn = bfd_get_32 (abfd, contents + rel->r_offset);
-	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
-	      bfd_put_32 (abfd, insn, contents + rel->r_offset);
-	    }
-	  else
-	    rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_I);
-	  return TRUE;
+	  rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_I);
+	  return true;
 
 	case R_RISCV_LO12_S:
-	  if (undefined_weak)
-	    {
-	      /* Change the RS1 to zero.  */
-	      bfd_vma insn = bfd_get_32 (abfd, contents + rel->r_offset);
-	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
-	      bfd_put_32 (abfd, insn, contents + rel->r_offset);
-	    }
-	  else
-	    rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_S);
-	  return TRUE;
+	  rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_S);
+	  return true;
 
 	case R_RISCV_HI20:
-	  /* We can delete the unnecessary LUI and reloc.  */
-	  rel->r_info = ELFNN_R_INFO (0, R_RISCV_NONE);
-	  *again = TRUE;
+	  /* Delete unnecessary LUI and reuse the reloc.  */
+	  *again = true;
 	  return riscv_relax_delete_bytes (abfd, sec, rel->r_offset, 4,
-					   link_info);
+					   link_info, pcgp_relocs, rel);
 
 	default:
 	  abort ();
@@ -3656,34 +5073,34 @@ _bfd_riscv_relax_lui (bfd *abfd,
 
   if (use_rvc
       && ELFNN_R_TYPE (rel->r_info) == R_RISCV_HI20
-      && VALID_RVC_LUI_IMM (RISCV_CONST_HIGH_PART (symval))
-      && VALID_RVC_LUI_IMM (RISCV_CONST_HIGH_PART (symval)
-			    + (link_info->relro ? 2 * ELF_MAXPAGESIZE
-			       : ELF_MAXPAGESIZE)))
+      && VALID_CITYPE_LUI_IMM (RISCV_CONST_HIGH_PART (symval))
+      && VALID_CITYPE_LUI_IMM (RISCV_CONST_HIGH_PART (symval)
+			       + data_segment_alignment))
     {
       /* Replace LUI with C.LUI if legal (i.e., rd != x0 and rd != x2/sp).  */
-      bfd_vma lui = bfd_get_32 (abfd, contents + rel->r_offset);
+      bfd_vma lui = bfd_getl32 (contents + rel->r_offset);
       unsigned rd = ((unsigned)lui >> OP_SH_RD) & OP_MASK_RD;
       if (rd == 0 || rd == X_SP)
-	return TRUE;
+	return true;
 
       lui = (lui & (OP_MASK_RD << OP_SH_RD)) | MATCH_C_LUI;
-      bfd_put_32 (abfd, lui, contents + rel->r_offset);
+      bfd_putl32 (lui, contents + rel->r_offset);
 
       /* Replace the R_RISCV_HI20 reloc.  */
       rel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info), R_RISCV_RVC_LUI);
 
-      *again = TRUE;
+      /* Delete extra bytes and reuse the R_RISCV_RELAX reloc.  */
+      *again = true;
       return riscv_relax_delete_bytes (abfd, sec, rel->r_offset + 2, 2,
-				       link_info);
+				       link_info, pcgp_relocs, rel + 1);
     }
 
-  return TRUE;
+  return true;
 }
 
-/* Relax non-PIC TLS references.  */
+/* Relax non-PIC TLS references to TP-relative references.  */
 
-static bfd_boolean
+static bool
 _bfd_riscv_relax_tls_le (bfd *abfd,
 			 asection *sec,
 			 asection *sym_sec ATTRIBUTE_UNUSED,
@@ -3692,40 +5109,41 @@ _bfd_riscv_relax_tls_le (bfd *abfd,
 			 bfd_vma symval,
 			 bfd_vma max_alignment ATTRIBUTE_UNUSED,
 			 bfd_vma reserve_size ATTRIBUTE_UNUSED,
-			 bfd_boolean *again,
-			 riscv_pcgp_relocs *prcel_relocs ATTRIBUTE_UNUSED,
-			 bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
+			 bool *again,
+			 riscv_pcgp_relocs *pcgp_relocs,
+			 bool undefined_weak ATTRIBUTE_UNUSED)
 {
   /* See if this symbol is in range of tp.  */
   if (RISCV_CONST_HIGH_PART (tpoff (link_info, symval)) != 0)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (rel->r_offset + 4 <= sec->size);
   switch (ELFNN_R_TYPE (rel->r_info))
     {
     case R_RISCV_TPREL_LO12_I:
       rel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info), R_RISCV_TPREL_I);
-      return TRUE;
+      return true;
 
     case R_RISCV_TPREL_LO12_S:
       rel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info), R_RISCV_TPREL_S);
-      return TRUE;
+      return true;
 
     case R_RISCV_TPREL_HI20:
     case R_RISCV_TPREL_ADD:
-      /* We can delete the unnecessary instruction and reloc.  */
-      rel->r_info = ELFNN_R_INFO (0, R_RISCV_NONE);
-      *again = TRUE;
-      return riscv_relax_delete_bytes (abfd, sec, rel->r_offset, 4, link_info);
+      /* Delete unnecessary instruction and reuse the reloc.  */
+      *again = true;
+      return riscv_relax_delete_bytes (abfd, sec, rel->r_offset, 4, link_info,
+				       pcgp_relocs, rel);
 
     default:
       abort ();
     }
 }
 
-/* Implement R_RISCV_ALIGN by deleting excess alignment NOPs.  */
+/* Implement R_RISCV_ALIGN by deleting excess alignment NOPs.
+   Once we've handled an R_RISCV_ALIGN, we can't relax anything else.  */
 
-static bfd_boolean
+static bool
 _bfd_riscv_relax_align (bfd *abfd, asection *sec,
 			asection *sym_sec,
 			struct bfd_link_info *link_info,
@@ -3733,9 +5151,9 @@ _bfd_riscv_relax_align (bfd *abfd, asect
 			bfd_vma symval,
 			bfd_vma max_alignment ATTRIBUTE_UNUSED,
 			bfd_vma reserve_size ATTRIBUTE_UNUSED,
-			bfd_boolean *again ATTRIBUTE_UNUSED,
-			riscv_pcgp_relocs *pcrel_relocs ATTRIBUTE_UNUSED,
-			bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
+			bool *again ATTRIBUTE_UNUSED,
+			riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED,
+			bool undefined_weak ATTRIBUTE_UNUSED)
 {
   bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
   bfd_vma alignment = 1, pos;
@@ -3747,7 +5165,7 @@ _bfd_riscv_relax_align (bfd *abfd, asect
   bfd_vma nop_bytes = aligned_addr - symval;
 
   /* Once we've handled an R_RISCV_ALIGN, we can't relax anything else.  */
-  sec->sec_flg0 = TRUE;
+  sec->sec_flg0 = true;
 
   /* Make sure there are enough NOPs to actually achieve the alignment.  */
   if (rel->r_addend < nop_bytes)
@@ -3758,7 +5176,7 @@ _bfd_riscv_relax_align (bfd *abfd, asect
 	 abfd, sym_sec, (uint64_t) rel->r_offset,
 	 (int64_t) nop_bytes, (int64_t) alignment, (int64_t) rel->r_addend);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* Delete the reloc.  */
@@ -3766,43 +5184,50 @@ _bfd_riscv_relax_align (bfd *abfd, asect
 
   /* If the number of NOPs is already correct, there's nothing to do.  */
   if (nop_bytes == rel->r_addend)
-    return TRUE;
+    return true;
 
   /* Write as many RISC-V NOPs as we need.  */
   for (pos = 0; pos < (nop_bytes & -4); pos += 4)
-    bfd_put_32 (abfd, RISCV_NOP, contents + rel->r_offset + pos);
+    bfd_putl32 (RISCV_NOP, contents + rel->r_offset + pos);
 
   /* Write a final RVC NOP if need be.  */
   if (nop_bytes % 4 != 0)
-    bfd_put_16 (abfd, RVC_NOP, contents + rel->r_offset + pos);
+    bfd_putl16 (RVC_NOP, contents + rel->r_offset + pos);
 
-  /* Delete the excess bytes.  */
+  /* Delete excess bytes.  */
   return riscv_relax_delete_bytes (abfd, sec, rel->r_offset + nop_bytes,
-				   rel->r_addend - nop_bytes, link_info);
+				   rel->r_addend - nop_bytes, link_info,
+				   NULL, NULL);
 }
 
 /* Relax PC-relative references to GP-relative references.  */
 
-static bfd_boolean
-_bfd_riscv_relax_pc  (bfd *abfd ATTRIBUTE_UNUSED,
-		      asection *sec,
-		      asection *sym_sec,
-		      struct bfd_link_info *link_info,
-		      Elf_Internal_Rela *rel,
-		      bfd_vma symval,
-		      bfd_vma max_alignment,
-		      bfd_vma reserve_size,
-		      bfd_boolean *again ATTRIBUTE_UNUSED,
-		      riscv_pcgp_relocs *pcgp_relocs,
-		      bfd_boolean undefined_weak)
-{
-  bfd_byte *contents = elf_section_data (sec)->this_hdr.contents;
-  bfd_vma gp = riscv_global_pointer_value (link_info);
+static bool
+_bfd_riscv_relax_pc (bfd *abfd ATTRIBUTE_UNUSED,
+		     asection *sec,
+		     asection *sym_sec,
+		     struct bfd_link_info *link_info,
+		     Elf_Internal_Rela *rel,
+		     bfd_vma symval,
+		     bfd_vma max_alignment,
+		     bfd_vma reserve_size,
+		     bool *again,
+		     riscv_pcgp_relocs *pcgp_relocs,
+		     bool undefined_weak)
+{
+  struct riscv_elf_link_hash_table *htab = riscv_elf_hash_table (link_info);
+  /* Can relax to x0 even when gp relaxation is disabled.  */
+  bfd_vma gp = htab->params->relax_gp
+	       ? riscv_global_pointer_value (link_info)
+	       : 0;
+  bfd_vma data_segment_alignment = link_info->relro
+				   ? ELF_MAXPAGESIZE + ELF_COMMONPAGESIZE
+				   : ELF_MAXPAGESIZE;
 
   BFD_ASSERT (rel->r_offset + 4 <= sec->size);
 
   /* Chain the _LO relocs to their cooresponding _HI reloc to compute the
-   * actual target address.  */
+     actual target address.  */
   riscv_pcgp_hi_reloc hi_reloc;
   memset (&hi_reloc, 0, sizeof (hi_reloc));
   switch (ELFNN_R_TYPE (rel->r_info))
@@ -3820,7 +5245,7 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUT
 	if (hi == NULL)
 	  {
 	    riscv_record_pcgp_lo_reloc (pcgp_relocs, hi_sec_off);
-	    return TRUE;
+	    return true;
 	  }
 
 	hi_reloc = *hi;
@@ -3839,12 +5264,12 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUT
       /* Mergeable symbols and code might later move out of range.  */
       if (! undefined_weak
 	  && sym_sec->flags & (SEC_MERGE | SEC_CODE))
-	return TRUE;
+	return true;
 
       /* If the cooresponding lo relocation has already been seen then it's not
-       * safe to relax this relocation.  */
+         safe to relax this relocation.  */
       if (riscv_find_pcgp_lo_reloc (pcgp_relocs, rel->r_offset))
-	return TRUE;
+	return true;
 
       break;
 
@@ -3852,65 +5277,61 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUT
       abort ();
     }
 
-  if (gp)
+  if (!undefined_weak && gp)
     {
       /* If gp and the symbol are in the same output section, which is not the
 	 abs section, then consider only that output section's alignment.  */
       struct bfd_link_hash_entry *h =
-	bfd_link_hash_lookup (link_info->hash, RISCV_GP_SYMBOL, FALSE, FALSE,
-			      TRUE);
+	bfd_link_hash_lookup (link_info->hash, RISCV_GP_SYMBOL, false, false,
+			      true);
       if (h->u.def.section->output_section == sym_sec->output_section
 	  && sym_sec->output_section != bfd_abs_section_ptr)
 	max_alignment = (bfd_vma) 1 << sym_sec->output_section->alignment_power;
+      else
+	{
+	  /* Consider output section alignments which are in [gp-2K, gp+2K). */
+	  max_alignment = htab->max_alignment_for_gp;
+	  if (max_alignment == (bfd_vma) -1)
+	    {
+	      max_alignment = _bfd_riscv_get_max_alignment (sec, gp);
+	      htab->max_alignment_for_gp = max_alignment;
+	    }
+	}
+
+      /* PR27566, for default linker script, if a symbol's value outsides the
+	 bounds of the defined section, then it may cross the data segment
+	 alignment, so we should reserve more size about MAXPAGESIZE and
+	 COMMONPAGESIZE, since the data segment alignment might move the
+	 section forward.  */
+      if (symval < sec_addr (sym_sec)
+	  || symval > (sec_addr (sym_sec) + sym_sec->size))
+	max_alignment = data_segment_alignment > max_alignment
+			? data_segment_alignment : max_alignment;
     }
 
   /* Is the reference in range of x0 or gp?
-     Valid gp range conservatively because of alignment issue.  */
+     Valid gp range conservatively because of alignment issue.
+
+     Should we also consider the alignment issue for x0 base?  */
   if (undefined_weak
-      || (VALID_ITYPE_IMM (symval)
-	  || (symval >= gp
-	      && VALID_ITYPE_IMM (symval - gp + max_alignment + reserve_size))
-	  || (symval < gp
-	      && VALID_ITYPE_IMM (symval - gp - max_alignment - reserve_size))))
+      || VALID_ITYPE_IMM (symval)
+      || (symval >= gp
+	  && VALID_ITYPE_IMM (symval - gp + max_alignment + reserve_size))
+      || (symval < gp
+	  && VALID_ITYPE_IMM (symval - gp - max_alignment - reserve_size)))
     {
       unsigned sym = hi_reloc.hi_sym;
       switch (ELFNN_R_TYPE (rel->r_info))
 	{
 	case R_RISCV_PCREL_LO12_I:
-	  if (undefined_weak)
-	    {
-	      /* Change the RS1 to zero, and then modify the relocation
-		 type to R_RISCV_LO12_I.  */
-	      bfd_vma insn = bfd_get_32 (abfd, contents + rel->r_offset);
-	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
-	      bfd_put_32 (abfd, insn, contents + rel->r_offset);
-	      rel->r_info = ELFNN_R_INFO (sym, R_RISCV_LO12_I);
-	      rel->r_addend = hi_reloc.hi_addend;
-	    }
-	  else
-	    {
-	      rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_I);
-	      rel->r_addend += hi_reloc.hi_addend;
-	    }
-	  return TRUE;
+	  rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_I);
+	  rel->r_addend += hi_reloc.hi_addend;
+	  return true;
 
 	case R_RISCV_PCREL_LO12_S:
-	  if (undefined_weak)
-	    {
-	      /* Change the RS1 to zero, and then modify the relocation
-		 type to R_RISCV_LO12_S.  */
-	      bfd_vma insn = bfd_get_32 (abfd, contents + rel->r_offset);
-	      insn &= ~(OP_MASK_RS1 << OP_SH_RS1);
-	      bfd_put_32 (abfd, insn, contents + rel->r_offset);
-	      rel->r_info = ELFNN_R_INFO (sym, R_RISCV_LO12_S);
-	      rel->r_addend = hi_reloc.hi_addend;
-	    }
-	  else
-	    {
-	      rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_S);
-	      rel->r_addend += hi_reloc.hi_addend;
-	    }
-	  return TRUE;
+	  rel->r_info = ELFNN_R_INFO (sym, R_RISCV_GPREL_S);
+	  rel->r_addend += hi_reloc.hi_addend;
+	  return true;
 
 	case R_RISCV_PCREL_HI20:
 	  riscv_record_pcgp_hi_reloc (pcgp_relocs,
@@ -3920,68 +5341,72 @@ _bfd_riscv_relax_pc  (bfd *abfd ATTRIBUT
 				      ELFNN_R_SYM(rel->r_info),
 				      sym_sec,
 				      undefined_weak);
-	  /* We can delete the unnecessary AUIPC and reloc.  */
-	  rel->r_info = ELFNN_R_INFO (0, R_RISCV_DELETE);
-	  rel->r_addend = 4;
-	  return TRUE;
+	  /* Delete unnecessary AUIPC and reuse the reloc.  */
+	  *again = true;
+	  riscv_relax_delete_bytes (abfd, sec, rel->r_offset, 4, link_info,
+				    pcgp_relocs, rel);
+	  return true;
 
 	default:
 	  abort ();
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-/* Relax PC-relative references to GP-relative references.  */
+/* Called by after_allocation to set the information of data segment
+   before relaxing.  */
 
-static bfd_boolean
-_bfd_riscv_relax_delete (bfd *abfd,
-			 asection *sec,
-			 asection *sym_sec ATTRIBUTE_UNUSED,
-			 struct bfd_link_info *link_info,
-			 Elf_Internal_Rela *rel,
-			 bfd_vma symval ATTRIBUTE_UNUSED,
-			 bfd_vma max_alignment ATTRIBUTE_UNUSED,
-			 bfd_vma reserve_size ATTRIBUTE_UNUSED,
-			 bfd_boolean *again ATTRIBUTE_UNUSED,
-			 riscv_pcgp_relocs *pcgp_relocs ATTRIBUTE_UNUSED,
-			 bfd_boolean undefined_weak ATTRIBUTE_UNUSED)
-{
-  if (!riscv_relax_delete_bytes(abfd, sec, rel->r_offset, rel->r_addend,
-				link_info))
-    return FALSE;
-  rel->r_info = ELFNN_R_INFO(0, R_RISCV_NONE);
-  return TRUE;
-}
-
-/* Relax a section.  Pass 0 shortens code sequences unless disabled.  Pass 1
-   deletes the bytes that pass 0 made obselete.  Pass 2, which cannot be
-   disabled, handles code alignment directives.  */
+void
+bfd_elfNN_riscv_set_data_segment_info (struct bfd_link_info *info,
+                                       int *data_segment_phase)
+{
+  struct riscv_elf_link_hash_table *htab = riscv_elf_hash_table (info);
+  htab->data_segment_phase = data_segment_phase;
+}
 
-static bfd_boolean
+/* Relax a section.
+
+   Pass 0: Shortens code sequences for LUI/CALL/TPREL/PCREL relocs and
+	   deletes the obsolete bytes.
+   Pass 1: Which cannot be disabled, handles code alignment directives.  */
+
+static bool
 _bfd_riscv_relax_section (bfd *abfd, asection *sec,
 			  struct bfd_link_info *info,
-			  bfd_boolean *again)
+			  bool *again)
 {
   Elf_Internal_Shdr *symtab_hdr = &elf_symtab_hdr (abfd);
   struct riscv_elf_link_hash_table *htab = riscv_elf_hash_table (info);
   struct bfd_elf_section_data *data = elf_section_data (sec);
   Elf_Internal_Rela *relocs;
-  bfd_boolean ret = FALSE;
+  bool ret = false;
   unsigned int i;
   bfd_vma max_alignment, reserve_size = 0;
   riscv_pcgp_relocs pcgp_relocs;
+  static asection *first_section = NULL;
 
-  *again = FALSE;
+  *again = false;
 
   if (bfd_link_relocatable (info)
       || sec->sec_flg0
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (info->disable_target_specific_optimizations
-	  && info->relax_pass == 0))
-    return TRUE;
+	  && info->relax_pass == 0)
+      /* The exp_seg_relro_adjust is enum phase_enum (0x4),
+	 and defined in ld/ldexp.h.  */
+      || *(htab->data_segment_phase) == 4)
+    return true;
+
+  /* Record the first relax section, so that we can reset the
+     max_alignment_for_gp for the repeated relax passes.  */
+  if (first_section == NULL)
+    first_section = sec;
+  else if (first_section == sec)
+    htab->max_alignment_for_gp = -1;
 
   riscv_init_pcgp_relocs (&pcgp_relocs);
 
@@ -3992,17 +5417,14 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 						 info->keep_memory)))
     goto fail;
 
-  if (htab)
+  /* Estimate the maximum alignment for all output sections once time
+     should be enough.  */
+  max_alignment = htab->max_alignment;
+  if (max_alignment == (bfd_vma) -1)
     {
-      max_alignment = htab->max_alignment;
-      if (max_alignment == (bfd_vma) -1)
-	{
-	  max_alignment = _bfd_riscv_get_max_alignment (sec);
-	  htab->max_alignment = max_alignment;
-	}
+      max_alignment = _bfd_riscv_get_max_alignment (sec, 0/* gp */);
+      htab->max_alignment = max_alignment;
     }
-  else
-    max_alignment = _bfd_riscv_get_max_alignment (sec);
 
   /* Examine and consider relaxing each reloc.  */
   for (i = 0; i < sec->reloc_count; i++)
@@ -4013,29 +5435,32 @@ _bfd_riscv_relax_section (bfd *abfd, ase
       int type = ELFNN_R_TYPE (rel->r_info);
       bfd_vma symval;
       char symtype;
-      bfd_boolean undefined_weak = FALSE;
+      bool undefined_weak = false;
 
       relax_func = NULL;
+      riscv_relax_delete_bytes = NULL;
       if (info->relax_pass == 0)
 	{
-	  if (type == R_RISCV_CALL || type == R_RISCV_CALL_PLT)
+	  if (type == R_RISCV_CALL
+	      || type == R_RISCV_CALL_PLT)
 	    relax_func = _bfd_riscv_relax_call;
 	  else if (type == R_RISCV_HI20
 		   || type == R_RISCV_LO12_I
 		   || type == R_RISCV_LO12_S)
 	    relax_func = _bfd_riscv_relax_lui;
-	  else if (!bfd_link_pic(info)
-		   && (type == R_RISCV_PCREL_HI20
-		   || type == R_RISCV_PCREL_LO12_I
-		   || type == R_RISCV_PCREL_LO12_S))
-	    relax_func = _bfd_riscv_relax_pc;
 	  else if (type == R_RISCV_TPREL_HI20
 		   || type == R_RISCV_TPREL_ADD
 		   || type == R_RISCV_TPREL_LO12_I
 		   || type == R_RISCV_TPREL_LO12_S)
 	    relax_func = _bfd_riscv_relax_tls_le;
+	  else if (!bfd_link_pic (info)
+		   && (type == R_RISCV_PCREL_HI20
+		       || type == R_RISCV_PCREL_LO12_I
+		       || type == R_RISCV_PCREL_LO12_S))
+	    relax_func = _bfd_riscv_relax_pc;
 	  else
 	    continue;
+	  riscv_relax_delete_bytes = _riscv_relax_delete_piecewise;
 
 	  /* Only relax this reloc if it is paired with R_RISCV_RELAX.  */
 	  if (i == sec->reloc_count - 1
@@ -4046,10 +5471,11 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 	  /* Skip over the R_RISCV_RELAX.  */
 	  i++;
 	}
-      else if (info->relax_pass == 1 && type == R_RISCV_DELETE)
-	relax_func = _bfd_riscv_relax_delete;
-      else if (info->relax_pass == 2 && type == R_RISCV_ALIGN)
-	relax_func = _bfd_riscv_relax_align;
+      else if (info->relax_pass == 1 && type == R_RISCV_ALIGN)
+	{
+	  relax_func = _bfd_riscv_relax_align;
+	  riscv_relax_delete_bytes = _riscv_relax_delete_immediate;
+	}
       else
 	continue;
 
@@ -4078,6 +5504,12 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 	  reserve_size = (isym->st_size - rel->r_addend) > isym->st_size
 	    ? 0 : isym->st_size - rel->r_addend;
 
+	  /* Relocate against local STT_GNU_IFUNC symbol.  we have created
+	     a fake global symbol entry for this, so deal with the local ifunc
+	     as a global.  */
+	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
+	    continue;
+
 	  if (isym->st_shndx == SHN_UNDEF)
 	    sym_sec = sec, symval = rel->r_offset;
 	  else
@@ -4108,7 +5540,17 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 		 || h->root.type == bfd_link_hash_warning)
 	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
 
+	  /* Disable the relaxation for ifunc.  */
+	  if (h != NULL && h->type == STT_GNU_IFUNC)
+	    continue;
+
+	  /* Maybe we should check UNDEFWEAK_NO_DYNAMIC_RELOC here?  But that
+	     will break the undefweak relaxation testcases, so just make sure
+	     we won't do relaxations for linker_def symbols in short-term.  */
 	  if (h->root.type == bfd_link_hash_undefweak
+	      /* The linker_def symbol like __ehdr_start that may be undefweak
+		 for now, but will be guaranteed to be defined later.  */
+	      && !h->root.linker_def
 	      && (relax_func == _bfd_riscv_relax_lui
 		  || relax_func == _bfd_riscv_relax_pc))
 	    {
@@ -4125,9 +5567,11 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 		 libraries can not happen currently.  Once we support the
 		 auipc relaxations when creating shared libraries, then we will
 		 need the more rigorous checking for this optimization.  */
-	      undefined_weak = TRUE;
+	      undefined_weak = true;
 	    }
 
+	  /* This line has to match the via_pltcheck in
+	     riscv_elf_relocate_section in the R_RISCV_CALL[_PLT] case.  */
 	  if (h->plt.offset != MINUS_ONE)
 	    {
 	      sym_sec = htab->elf.splt;
@@ -4138,15 +5582,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 =
@@ -4194,12 +5639,16 @@ _bfd_riscv_relax_section (bfd *abfd, ase
 	goto fail;
     }
 
-  ret = TRUE;
+  /* Resolve R_RISCV_DELETE relocations.  */
+  if (!riscv_relax_resolve_delete_relocs (abfd, sec, info, relocs))
+    goto fail;
+
+  ret = true;
 
-fail:
+ fail:
   if (relocs != data->relocs)
     free (relocs);
-  riscv_free_pcgp_relocs(&pcgp_relocs, abfd, sec);
+  riscv_free_pcgp_relocs (&pcgp_relocs, abfd, sec);
 
   return ret;
 }
@@ -4214,6 +5663,8 @@ fail:
 # define PRPSINFO_OFFSET_PR_PID		16
 # define PRPSINFO_OFFSET_PR_FNAME	32
 # define PRPSINFO_OFFSET_PR_PSARGS	48
+# define PRPSINFO_PR_FNAME_LENGTH	16
+# define PRPSINFO_PR_PSARGS_LENGTH	80
 #else
 # define PRSTATUS_SIZE			376
 # define PRSTATUS_OFFSET_PR_CURSIG	12
@@ -4224,19 +5675,94 @@ fail:
 # define PRPSINFO_OFFSET_PR_PID		24
 # define PRPSINFO_OFFSET_PR_FNAME	40
 # define PRPSINFO_OFFSET_PR_PSARGS	56
+# define PRPSINFO_PR_FNAME_LENGTH	16
+# define PRPSINFO_PR_PSARGS_LENGTH	80
 #endif
 
+/* Write PRSTATUS and PRPSINFO note into core file.  This will be called
+   before the generic code in elf.c.  By checking the compiler defines we
+   only perform any action here if the generic code would otherwise not be
+   able to help us.  The intention is that bare metal core dumps (where the
+   prstatus_t and/or prpsinfo_t might not be available) will use this code,
+   while non bare metal tools will use the generic elf code.  */
+
+static char *
+riscv_write_core_note (bfd *abfd ATTRIBUTE_UNUSED,
+                       char *buf ATTRIBUTE_UNUSED,
+                       int *bufsiz ATTRIBUTE_UNUSED,
+                       int note_type ATTRIBUTE_UNUSED, ...)
+{
+  switch (note_type)
+    {
+    default:
+      return NULL;
+
+#if !defined (HAVE_PRPSINFO_T)
+    case NT_PRPSINFO:
+      {
+	char data[PRPSINFO_SIZE] ATTRIBUTE_NONSTRING;
+	va_list ap;
+
+	va_start (ap, note_type);
+	memset (data, 0, sizeof (data));
+	strncpy (data + PRPSINFO_OFFSET_PR_FNAME, va_arg (ap, const char *),
+                 PRPSINFO_PR_FNAME_LENGTH);
+#if GCC_VERSION == 8000 || GCC_VERSION == 8001
+	DIAGNOSTIC_PUSH;
+	/* GCC 8.0 and 8.1 warn about 80 equals destination size with
+	   -Wstringop-truncation:
+	   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85643
+	 */
+	DIAGNOSTIC_IGNORE_STRINGOP_TRUNCATION;
+#endif
+	strncpy (data + PRPSINFO_OFFSET_PR_PSARGS, va_arg (ap, const char *),
+                 PRPSINFO_PR_PSARGS_LENGTH);
+#if GCC_VERSION == 8000 || GCC_VERSION == 8001
+	DIAGNOSTIC_POP;
+#endif
+	va_end (ap);
+	return elfcore_write_note (abfd, buf, bufsiz,
+				   "CORE", note_type, data, sizeof (data));
+      }
+#endif /* !HAVE_PRPSINFO_T */
+
+#if !defined (HAVE_PRSTATUS_T)
+    case NT_PRSTATUS:
+      {
+        char data[PRSTATUS_SIZE];
+        va_list ap;
+        long pid;
+        int cursig;
+        const void *greg;
+
+        va_start (ap, note_type);
+        memset (data, 0, sizeof(data));
+        pid = va_arg (ap, long);
+        bfd_put_32 (abfd, pid, data + PRSTATUS_OFFSET_PR_PID);
+        cursig = va_arg (ap, int);
+        bfd_put_16 (abfd, cursig, data + PRSTATUS_OFFSET_PR_CURSIG);
+        greg = va_arg (ap, const void *);
+        memcpy (data + PRSTATUS_OFFSET_PR_REG, greg,
+                PRSTATUS_SIZE - PRSTATUS_OFFSET_PR_REG - ARCH_SIZE / 8);
+        va_end (ap);
+        return elfcore_write_note (abfd, buf, bufsiz,
+                                   "CORE", note_type, data, sizeof (data));
+      }
+#endif /* !HAVE_PRSTATUS_T */
+    }
+}
+
 /* Support for core dump NOTE sections.  */
 
-static bfd_boolean
+static bool
 riscv_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
-      case PRSTATUS_SIZE:  /* sizeof(struct elf_prstatus) on Linux/RISC-V.  */
+      case PRSTATUS_SIZE: /* sizeof(struct elf_prstatus) on Linux/RISC-V.  */
 	/* pr_cursig */
 	elf_tdata (abfd)->core->signal
 	  = bfd_get_16 (abfd, note->descdata + PRSTATUS_OFFSET_PR_CURSIG);
@@ -4252,13 +5778,13 @@ riscv_elf_grok_prstatus (bfd *abfd, Elf_
 					  note->descpos + PRSTATUS_OFFSET_PR_REG);
 }
 
-static bfd_boolean
+static bool
 riscv_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case PRPSINFO_SIZE: /* sizeof(struct elf_prpsinfo) on Linux/RISC-V.  */
 	/* pr_pid */
@@ -4267,11 +5793,13 @@ riscv_elf_grok_psinfo (bfd *abfd, Elf_In
 
 	/* pr_fname */
 	elf_tdata (abfd)->core->program = _bfd_elfcore_strndup
-	  (abfd, note->descdata + PRPSINFO_OFFSET_PR_FNAME, 16);
+	  (abfd, note->descdata + PRPSINFO_OFFSET_PR_FNAME,
+           PRPSINFO_PR_FNAME_LENGTH);
 
 	/* pr_psargs */
 	elf_tdata (abfd)->core->command = _bfd_elfcore_strndup
-	  (abfd, note->descdata + PRPSINFO_OFFSET_PR_PSARGS, 80);
+	  (abfd, note->descdata + PRPSINFO_OFFSET_PR_PSARGS,
+           PRPSINFO_PR_PSARGS_LENGTH);
 	break;
     }
 
@@ -4287,20 +5815,22 @@ riscv_elf_grok_psinfo (bfd *abfd, Elf_In
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the right mach type.  */
-static bfd_boolean
+
+static bool
 riscv_elf_object_p (bfd *abfd)
 {
   /* There are only two mach types in RISCV currently.  */
-  if (strcmp (abfd->xvec->name, "elf32-littleriscv") == 0)
+  if (strcmp (abfd->xvec->name, "elf32-littleriscv") == 0
+      || strcmp (abfd->xvec->name, "elf32-bigriscv") == 0)
     bfd_default_set_arch_mach (abfd, bfd_arch_riscv, bfd_mach_riscv32);
   else
     bfd_default_set_arch_mach (abfd, bfd_arch_riscv, bfd_mach_riscv64);
 
-  return TRUE;
+  return true;
 }
 
 /* Determine whether an object attribute tag takes an integer, a
@@ -4312,54 +5842,220 @@ riscv_elf_obj_attrs_arg_type (int tag)
   return (tag & 1) != 0 ? ATTR_TYPE_FLAG_STR_VAL : ATTR_TYPE_FLAG_INT_VAL;
 }
 
-#define TARGET_LITTLE_SYM		riscv_elfNN_vec
-#define TARGET_LITTLE_NAME		"elfNN-littleriscv"
+/* Do not choose mapping symbols as a function name.  */
 
-#define elf_backend_reloc_type_class	     riscv_reloc_type_class
+static bfd_size_type
+riscv_maybe_function_sym (const asymbol *sym,
+			  asection *sec,
+			  bfd_vma *code_off)
+{
+  if (sym->flags & BSF_LOCAL
+      && (riscv_elf_is_mapping_symbols (sym->name)
+	  || _bfd_elf_is_local_label_name (sec->owner, sym->name)))
+    return 0;
 
-#define bfd_elfNN_bfd_reloc_name_lookup	     riscv_reloc_name_lookup
-#define bfd_elfNN_bfd_link_hash_table_create riscv_elf_link_hash_table_create
-#define bfd_elfNN_bfd_reloc_type_lookup	     riscv_reloc_type_lookup
-#define bfd_elfNN_bfd_merge_private_bfd_data \
-  _bfd_riscv_elf_merge_private_bfd_data
+  return _bfd_elf_maybe_function_sym (sym, sec, code_off);
+}
+
+/* Treat the following cases as target special symbols, they are
+   usually omitted.  */
+
+static bool
+riscv_elf_is_target_special_symbol (bfd *abfd, asymbol *sym)
+{
+  /* PR27584, local and empty symbols.  Since they are usually
+     generated for pcrel relocations.  */
+  return (!sym->name[0]
+	  || _bfd_elf_is_local_label_name (abfd, sym->name)
+	  /* PR27916, mapping symbols.  */
+	  || riscv_elf_is_mapping_symbols (sym->name));
+}
+
+static int
+riscv_elf_additional_program_headers (bfd *abfd,
+				      struct bfd_link_info *info ATTRIBUTE_UNUSED)
+{
+  int ret = 0;
+
+  /* See if we need a PT_RISCV_ATTRIBUTES segment.  */
+  if (bfd_get_section_by_name (abfd, RISCV_ATTRIBUTES_SECTION_NAME))
+    ++ret;
+
+  return ret;
+}
+
+static bool
+riscv_elf_modify_segment_map (bfd *abfd,
+			      struct bfd_link_info *info ATTRIBUTE_UNUSED)
+{
+  asection *s;
+  struct elf_segment_map *m, **pm;
+  size_t amt;
+
+  /* If there is a .riscv.attributes section, we need a PT_RISCV_ATTRIBUTES
+     segment.  */
+  s = bfd_get_section_by_name (abfd, RISCV_ATTRIBUTES_SECTION_NAME);
+  if (s != NULL)
+    {
+      for (m = elf_seg_map (abfd); m != NULL; m = m->next)
+	if (m->p_type == PT_RISCV_ATTRIBUTES)
+	  break;
+      /* If there is already a PT_RISCV_ATTRIBUTES header, avoid adding
+	 another.  */
+      if (m == NULL)
+	{
+	  amt = sizeof (*m);
+	  m = bfd_zalloc (abfd, amt);
+	  if (m == NULL)
+	    return false;
+
+	  m->p_type = PT_RISCV_ATTRIBUTES;
+	  m->count = 1;
+	  m->sections[0] = s;
+
+	  /* We want to put it after the PHDR and INTERP segments.  */
+	  pm = &elf_seg_map (abfd);
+	  while (*pm != NULL
+		 && ((*pm)->p_type == PT_PHDR
+		     || (*pm)->p_type == PT_INTERP))
+	    pm = &(*pm)->next;
 
-#define elf_backend_copy_indirect_symbol     riscv_elf_copy_indirect_symbol
-#define elf_backend_create_dynamic_sections  riscv_elf_create_dynamic_sections
-#define elf_backend_check_relocs	     riscv_elf_check_relocs
-#define elf_backend_adjust_dynamic_symbol    riscv_elf_adjust_dynamic_symbol
-#define elf_backend_size_dynamic_sections    riscv_elf_size_dynamic_sections
-#define elf_backend_relocate_section	     riscv_elf_relocate_section
-#define elf_backend_finish_dynamic_symbol    riscv_elf_finish_dynamic_symbol
-#define elf_backend_finish_dynamic_sections  riscv_elf_finish_dynamic_sections
-#define elf_backend_gc_mark_hook	     riscv_elf_gc_mark_hook
-#define elf_backend_plt_sym_val		     riscv_elf_plt_sym_val
-#define elf_backend_grok_prstatus	     riscv_elf_grok_prstatus
-#define elf_backend_grok_psinfo		     riscv_elf_grok_psinfo
-#define elf_backend_object_p		     riscv_elf_object_p
-#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 elf_backend_init_index_section	     _bfd_elf_init_1_index_section
-
-#define elf_backend_can_gc_sections	1
-#define elf_backend_can_refcount	1
-#define elf_backend_want_got_plt	1
-#define elf_backend_plt_readonly	1
-#define elf_backend_plt_alignment	4
-#define elf_backend_want_plt_sym	1
-#define elf_backend_got_header_size	(ARCH_SIZE / 8)
-#define elf_backend_want_dynrelro	1
-#define elf_backend_rela_normal		1
-#define elf_backend_default_execstack	0
+	  m->next = *pm;
+	  *pm = m;
+	}
+    }
+
+  return true;
+}
+
+/* Merge non-visibility st_other attributes.  */
+
+static void
+riscv_elf_merge_symbol_attribute (struct elf_link_hash_entry *h,
+				  unsigned int st_other,
+				  bool definition ATTRIBUTE_UNUSED,
+				  bool dynamic ATTRIBUTE_UNUSED)
+{
+  unsigned int isym_sto = st_other & ~ELF_ST_VISIBILITY (-1);
+  unsigned int h_sto = h->other & ~ELF_ST_VISIBILITY (-1);
+
+  if (isym_sto == h_sto)
+    return;
+
+  if (isym_sto & ~STO_RISCV_VARIANT_CC)
+    _bfd_error_handler (_("unknown attribute for symbol `%s': 0x%02x"),
+			h->root.root.string, isym_sto);
+
+  if (isym_sto & STO_RISCV_VARIANT_CC)
+    h->other |= STO_RISCV_VARIANT_CC;
+}
+
+/* Implement elf_backend_setup_gnu_properties for RISC-V.  It serves as a
+   wrapper function for _bfd_riscv_elf_link_setup_gnu_properties to account
+   for the effect of GNU properties of the output_bfd.  */
+
+static bfd *
+elfNN_riscv_link_setup_gnu_properties (struct bfd_link_info *info)
+{
+  uint32_t and_prop = _bfd_riscv_elf_tdata (info->output_bfd)->gnu_and_prop;
+
+  bfd *pbfd = _bfd_riscv_elf_link_setup_gnu_properties (info, &and_prop);
+
+  _bfd_riscv_elf_tdata (info->output_bfd)->gnu_and_prop = and_prop;
+
+  if (and_prop & GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED)
+    _bfd_riscv_elf_tdata (info->output_bfd)->plt_type = PLT_ZICFILP_UNLABELED;
+
+  setup_plt_values (info->output_bfd, riscv_elf_hash_table (info),
+		    _bfd_riscv_elf_tdata (info->output_bfd)->plt_type);
+
+  return pbfd;
+}
+
+/* Implement elf_backend_merge_gnu_properties for RISC-V.  It serves as a
+   wrapper function for _bfd_riscv_elf_merge_gnu_properties to account
+   for the effect of GNU properties of the output_bfd.  */
+
+static bool
+elfNN_riscv_merge_gnu_properties (struct bfd_link_info *info, bfd *abfd,
+				  bfd *bbfd ATTRIBUTE_UNUSED,
+				  elf_property *aprop, elf_property *bprop)
+{
+  uint32_t and_prop = _bfd_riscv_elf_tdata (info->output_bfd)->gnu_and_prop;
+
+  return _bfd_riscv_elf_merge_gnu_properties (info, abfd, aprop, bprop,
+					      and_prop);
+}
+
+#define TARGET_LITTLE_SYM			riscv_elfNN_vec
+#define TARGET_LITTLE_NAME			"elfNN-littleriscv"
+#define TARGET_BIG_SYM				riscv_elfNN_be_vec
+#define TARGET_BIG_NAME				"elfNN-bigriscv"
+
+#define elf_info_to_howto_rel			NULL
+#define elf_info_to_howto			riscv_info_to_howto_rela
+
+#define bfd_elfNN_bfd_reloc_name_lookup		riscv_reloc_name_lookup
+#define bfd_elfNN_bfd_link_hash_table_create	\
+  riscv_elf_link_hash_table_create
+#define bfd_elfNN_bfd_reloc_type_lookup		riscv_reloc_type_lookup
+#define bfd_elfNN_bfd_merge_private_bfd_data	\
+  _bfd_riscv_elf_merge_private_bfd_data
+#define bfd_elfNN_bfd_is_target_special_symbol	\
+  riscv_elf_is_target_special_symbol
+#define bfd_elfNN_bfd_relax_section		_bfd_riscv_relax_section
+#define bfd_elfNN_mkobject			elfNN_riscv_mkobject
+#define bfd_elfNN_get_synthetic_symtab		\
+  elfNN_riscv_get_synthetic_symtab
+
+#define elf_backend_reloc_type_class		riscv_reloc_type_class
+#define elf_backend_copy_indirect_symbol	riscv_elf_copy_indirect_symbol
+#define elf_backend_create_dynamic_sections	\
+  riscv_elf_create_dynamic_sections
+#define elf_backend_check_relocs		riscv_elf_check_relocs
+#define elf_backend_adjust_dynamic_symbol	riscv_elf_adjust_dynamic_symbol
+#define elf_backend_late_size_sections		riscv_elf_late_size_sections
+#define elf_backend_relocate_section		riscv_elf_relocate_section
+#define elf_backend_finish_dynamic_symbol	riscv_elf_finish_dynamic_symbol
+#define elf_backend_finish_dynamic_sections	\
+  riscv_elf_finish_dynamic_sections
+#define elf_backend_plt_sym_val			riscv_elf_plt_sym_val
+#define elf_backend_grok_prstatus		riscv_elf_grok_prstatus
+#define elf_backend_grok_psinfo			riscv_elf_grok_psinfo
+#define elf_backend_object_p			riscv_elf_object_p
+#define elf_backend_write_core_note		riscv_write_core_note
+#define elf_backend_maybe_function_sym		riscv_maybe_function_sym
+#define elf_backend_additional_program_headers \
+  riscv_elf_additional_program_headers
+#define elf_backend_modify_segment_map		riscv_elf_modify_segment_map
+#define elf_backend_merge_symbol_attribute	\
+  riscv_elf_merge_symbol_attribute
+#define elf_backend_init_index_section		_bfd_elf_init_1_index_section
+#define elf_backend_setup_gnu_properties	\
+  elfNN_riscv_link_setup_gnu_properties
+#define elf_backend_merge_gnu_properties	\
+  elfNN_riscv_merge_gnu_properties
+
+#define elf_backend_can_gc_sections		1
+#define elf_backend_can_refcount		1
+#define elf_backend_want_got_plt		1
+#define elf_backend_plt_readonly		1
+#define elf_backend_plt_alignment		4
+#define elf_backend_want_plt_sym		1
+#define elf_backend_got_header_size		(ARCH_SIZE / 8)
+#define elf_backend_want_dynrelro		1
+#define elf_backend_rela_normal			1
+#define elf_backend_default_execstack		0
 
 #undef  elf_backend_obj_attrs_vendor
-#define elf_backend_obj_attrs_vendor            "riscv"
+#define elf_backend_obj_attrs_vendor		"riscv"
 #undef  elf_backend_obj_attrs_arg_type
-#define elf_backend_obj_attrs_arg_type          riscv_elf_obj_attrs_arg_type
+#define elf_backend_obj_attrs_arg_type		riscv_elf_obj_attrs_arg_type
 #undef  elf_backend_obj_attrs_section_type
-#define elf_backend_obj_attrs_section_type      SHT_RISCV_ATTRIBUTES
+#define elf_backend_obj_attrs_section_type	SHT_RISCV_ATTRIBUTES
 #undef  elf_backend_obj_attrs_section
-#define elf_backend_obj_attrs_section           ".riscv.attributes"
+#define elf_backend_obj_attrs_section		RISCV_ATTRIBUTES_SECTION_NAME
+#define elf_backend_obj_attrs_handle_unknown	\
+  riscv_elf_obj_attrs_handle_unknown
 
 #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.20200303/bfd/elf-properties.c ./bfd/elf-properties.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-properties.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-properties.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ELF program property support.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,37 +28,93 @@
 #include "libbfd.h"
 #include "elf-bfd.h"
 
+/* Find a property.  */
+elf_property_list *
+_bfd_elf_find_property (elf_property_list *l,
+			unsigned int type,
+			elf_property_list **prev)
+{
+  if (prev != NULL)
+    *prev = NULL;
+
+  /* The properties are supposed to be sorted in the list.  */
+  for (elf_property_list *n = l; n != NULL; n = n->next)
+    {
+      if (type == n->property.pr_type)
+	return n;
+      else if (type < n->property.pr_type)
+	break;
+      else if (prev != NULL)
+	*prev = n;
+    }
+  return NULL;
+}
+
+/* Insert a property into the list after prev.  */
+static elf_property_list *
+_bfd_elf_insert_property (elf_property_list *l,
+			  elf_property_list *what,
+			  elf_property_list *prev)
+{
+  if (l == NULL) // First node.
+    return what;
+
+  if (prev == NULL) // Prepend.
+    {
+      what->next = l;
+      return what;
+    }
+
+  what->next = prev->next;
+  prev->next = what;
+  return l;
+}
+
+/* Remove a property from the list after prev.  */
+static elf_property_list *
+_bfd_elf_remove_property (elf_property_list *l,
+			  elf_property_list *what,
+			  elf_property_list *prev)
+{
+  if (l == NULL)
+    return l;
+
+  if (prev == NULL) // Pop front
+    {
+      BFD_ASSERT (what == l);
+      l = what->next;
+    }
+  else
+    prev->next = what->next;
+
+  what->next = NULL;
+  return l;
+}
+
 /* Get a property, allocate a new one if needed.  */
 
 elf_property *
 _bfd_elf_get_property (bfd *abfd, unsigned int type, unsigned int datasz)
 {
-  elf_property_list *p, **lastp;
-
   if (bfd_get_flavour (abfd) != bfd_target_elf_flavour)
     {
       /* Never should happen.  */
       abort ();
     }
 
-  /* Keep the property list in order of type.  */
-  lastp = &elf_properties (abfd);
-  for (p = *lastp; p; p = p->next)
+  elf_property_list *prev;
+  elf_property_list *p =
+    _bfd_elf_find_property (elf_properties (abfd), type, &prev);
+  if (p != NULL)  /* Reuse the existing entry.  */
     {
-      /* Reuse the existing entry.  */
-      if (type == p->property.pr_type)
+      if (datasz > p->property.pr_datasz)
 	{
-	  if (datasz > p->property.pr_datasz)
-	    {
-	      /* This can happen when mixing 32-bit and 64-bit objects.  */
-	      p->property.pr_datasz = datasz;
-	    }
-	  return &p->property;
+	  /* This can happen when mixing 32-bit and 64-bit objects.  */
+	  p->property.pr_datasz = datasz;
 	}
-      else if (type < p->property.pr_type)
-	break;
-      lastp = &p->next;
+      return &p->property;
     }
+
   p = (elf_property_list *) bfd_alloc (abfd, sizeof (*p));
   if (p == NULL)
     {
@@ -66,17 +122,20 @@ _bfd_elf_get_property (bfd *abfd, unsign
 			  abfd);
       _exit (EXIT_FAILURE);
     }
+
   memset (p, 0, sizeof (*p));
   p->property.pr_type = type;
   p->property.pr_datasz = datasz;
-  p->next = *lastp;
-  *lastp = p;
+
+  elf_properties (abfd) =
+    _bfd_elf_insert_property (elf_properties (abfd), p, prev);
+
   return &p->property;
 }
 
 /* Parse GNU properties.  */
 
-bfd_boolean
+bool
 _bfd_elf_parse_gnu_properties (bfd *abfd, Elf_Internal_Note *note)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
@@ -86,11 +145,11 @@ _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);
-      return FALSE;
+      return false;
     }
 
   while (ptr != ptr_end)
@@ -113,7 +172,7 @@ bad_size:
 	     abfd, note->type, type, datasz);
 	  /* Clear all properties.  */
 	  elf_properties (abfd) = NULL;
-	  return FALSE;
+	  return false;
 	}
 
       if (type >= GNU_PROPERTY_LOPROC)
@@ -134,7 +193,7 @@ bad_size:
 		{
 		  /* Clear all properties.  */
 		  elf_properties (abfd) = NULL;
-		  return FALSE;
+		  return false;
 		}
 	      else if (kind != property_ignored)
 		goto next;
@@ -152,7 +211,7 @@ bad_size:
 		     abfd, datasz);
 		  /* Clear all properties.  */
 		  elf_properties (abfd) = NULL;
-		  return FALSE;
+		  return false;
 		}
 	      prop = _bfd_elf_get_property (abfd, type, datasz);
 	      if (datasz == 8)
@@ -170,14 +229,56 @@ bad_size:
 		     abfd, datasz);
 		  /* Clear all properties.  */
 		  elf_properties (abfd) = NULL;
-		  return FALSE;
+		  return false;
+		}
+	      prop = _bfd_elf_get_property (abfd, type, datasz);
+	      elf_has_no_copy_on_protected (abfd) = true;
+	      prop->pr_kind = property_number;
+	      goto next;
+
+	    case GNU_PROPERTY_MEMORY_SEAL:
+	      if (datasz != 0)
+		{
+		  _bfd_error_handler
+		    (_("warning: %pB: corrupt memory sealing size: 0x%x"),
+		     abfd, datasz);
+		  /* Clear all properties.  */
+		  elf_properties (abfd) = NULL;
+		  return false;
 		}
 	      prop = _bfd_elf_get_property (abfd, type, datasz);
-	      elf_has_no_copy_on_protected (abfd) = TRUE;
 	      prop->pr_kind = property_number;
 	      goto next;
 
 	    default:
+	      if ((type >= GNU_PROPERTY_UINT32_AND_LO
+		   && type <= GNU_PROPERTY_UINT32_AND_HI)
+		  || (type >= GNU_PROPERTY_UINT32_OR_LO
+		      && type <= GNU_PROPERTY_UINT32_OR_HI))
+		{
+		  if (datasz != 4)
+		    {
+		      _bfd_error_handler
+			(_("error: %pB: <corrupt property (0x%x) size: 0x%x>"),
+			 abfd, type, datasz);
+		      /* Clear all properties.  */
+		      elf_properties (abfd) = NULL;
+		      return false;
+		    }
+		  prop = _bfd_elf_get_property (abfd, type, datasz);
+		  prop->u.number |= bfd_h_get_32 (abfd, ptr);
+		  prop->pr_kind = property_number;
+		  if (type == GNU_PROPERTY_1_NEEDED
+		      && ((prop->u.number
+			   & GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS)
+			  != 0))
+		    {
+		      elf_has_indirect_extern_access (abfd) = true;
+		      /* GNU_PROPERTY_NO_COPY_ON_PROTECTED is implied.  */
+		      elf_has_no_copy_on_protected (abfd) = true;
+		    }
+		  goto next;
+		}
 	      break;
 	    }
 	}
@@ -186,23 +287,25 @@ 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);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge GNU property BPROP with APROP.  If APROP isn't NULL, return TRUE
    if APROP is updated.  Otherwise, return TRUE if BPROP should be merged
    with ABFD.  */
 
-static bfd_boolean
+static bool
 elf_merge_gnu_properties (struct bfd_link_info *info, bfd *abfd, bfd *bbfd,
 			  elf_property *aprop, elf_property *bprop)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
   unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type;
+  unsigned int number;
+  bool updated;
 
   if (bed->merge_gnu_properties != NULL
       && pr_type >= GNU_PROPERTY_LOPROC
@@ -217,23 +320,93 @@ elf_merge_gnu_properties (struct bfd_lin
 	  if (bprop->u.number > aprop->u.number)
 	    {
 	      aprop->u.number = bprop->u.number;
-	      return TRUE;
+	      return true;
 	    }
 	  break;
 	}
       /* FALLTHROUGH */
 
     case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
+    case GNU_PROPERTY_MEMORY_SEAL:
       /* Return TRUE if APROP is NULL to indicate that BPROP should
 	 be added to ABFD.  */
       return aprop == NULL;
 
     default:
+      updated = false;
+      if (pr_type >= GNU_PROPERTY_UINT32_OR_LO
+	  && pr_type <= GNU_PROPERTY_UINT32_OR_HI)
+	{
+	  if (aprop != NULL && bprop != NULL)
+	    {
+	      number = aprop->u.number;
+	      aprop->u.number = number | bprop->u.number;
+	      /* Remove the property if all bits are empty.  */
+	      if (aprop->u.number == 0)
+		{
+		  aprop->pr_kind = property_remove;
+		  updated = true;
+		}
+	      else
+		updated = number != (unsigned int) aprop->u.number;
+	    }
+	  else
+	    {
+	      /* Only one of APROP and BPROP can be NULL.  */
+	      if (aprop != NULL)
+		{
+		  if (aprop->u.number == 0)
+		    {
+		      /* Remove APROP if all bits are empty.  */
+		      aprop->pr_kind = property_remove;
+		      updated = true;
+		    }
+		}
+	      else
+		{
+		  /* Return TRUE if APROP is NULL and all bits of BPROP
+		     aren't empty to indicate that BPROP should be added
+		     to ABFD.  */
+		  updated = bprop->u.number != 0;
+		}
+	    }
+	  return updated;
+	}
+      else if (pr_type >= GNU_PROPERTY_UINT32_AND_LO
+	       && pr_type <= GNU_PROPERTY_UINT32_AND_HI)
+	{
+	  /* Only one of APROP and BPROP can be NULL:
+	     1. APROP & BPROP when both APROP and BPROP aren't NULL.
+	     2. If APROP is NULL, remove x86 feature.
+	     3. Otherwise, do nothing.
+	     */
+	  if (aprop != NULL && bprop != NULL)
+	    {
+	      number = aprop->u.number;
+	      aprop->u.number = number & bprop->u.number;
+	      updated = number != (unsigned int) aprop->u.number;
+	      /* Remove the property if all feature bits are cleared.  */
+	      if (aprop->u.number == 0)
+		aprop->pr_kind = property_remove;
+	    }
+	  else
+	    {
+	      /* There should be no AND properties since some input
+	         doesn't have them.   */
+	      if (aprop != NULL)
+		{
+		  aprop->pr_kind = property_remove;
+		  updated = true;
+		}
+	    }
+	  return updated;
+	}
+
       /* Never should happen.  */
       abort ();
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Return the property of TYPE on *LISTP and remove it from *LISTP if RM is
@@ -241,25 +414,18 @@ elf_merge_gnu_properties (struct bfd_lin
 
 static elf_property *
 elf_find_and_remove_property (elf_property_list **listp,
-			      unsigned int type, bfd_boolean rm)
+			      unsigned int type, bool rm)
 {
-  elf_property_list *list;
+  elf_property_list *prev;
+  elf_property_list *p = _bfd_elf_find_property (*listp, type, &prev);
+  if (p == NULL)
+    return NULL;
 
-  for (list = *listp; list; list = list->next)
-    {
-      if (type == list->property.pr_type)
-	{
-	  /* Remove this property.  */
-	  if (rm)
-	    *listp = list->next;
-	  return &list->property;
-	}
-      else if (type < list->property.pr_type)
-	break;
-      listp = &list->next;
-    }
+  if (rm)
+    *listp = _bfd_elf_remove_property (*listp, p, prev);
 
-  return NULL;
+  /* FIXME: we leak memory with this approach.  */
+  return &p->property;
 }
 
 /* Merge GNU property list *LISTP in ABFD with FIRST_PBFD.  */
@@ -270,7 +436,7 @@ elf_merge_gnu_property_list (struct bfd_
 {
   elf_property_list *p, **lastp;
   elf_property *pr;
-  bfd_boolean number_p;
+  bool number_p;
   bfd_vma number = 0;
 
   /* Merge each GNU property in FIRST_PBFD with the one on *LISTP.  */
@@ -280,13 +446,13 @@ elf_merge_gnu_property_list (struct bfd_
       {
 	if (p->property.pr_kind == property_number)
 	  {
-	    number_p = TRUE;
+	    number_p = true;
 	    number = p->property.u.number;
 	  }
 	else
-	  number_p = FALSE;
+	  number_p = false;
 	pr = elf_find_and_remove_property (listp, p->property.pr_type,
-					   TRUE);
+					   true);
 	/* Pass NULL to elf_merge_gnu_properties for the property which
 	   isn't on *LISTP.  */
 	elf_merge_gnu_properties (info, first_pbfd, abfd, &p->property, pr);
@@ -357,16 +523,16 @@ elf_merge_gnu_property_list (struct bfd_
     {
       if (p->property.pr_kind == property_number)
 	{
-	  number_p = TRUE;
+	  number_p = true;
 	  number = p->property.u.number;
 	}
       else
-	number_p = FALSE;
+	number_p = false;
 
       if (elf_merge_gnu_properties (info, first_pbfd, abfd, NULL, &p->property))
 	{
 	  if (p->property.pr_type == GNU_PROPERTY_NO_COPY_ON_PROTECTED)
-	    elf_has_no_copy_on_protected (first_pbfd) = TRUE;
+	    elf_has_no_copy_on_protected (first_pbfd) = true;
 
 	  pr = _bfd_elf_get_property (first_pbfd, p->property.pr_type,
 				      p->property.pr_datasz);
@@ -380,7 +546,7 @@ elf_merge_gnu_property_list (struct bfd_
 	{
 	  pr = elf_find_and_remove_property (&elf_properties (first_pbfd),
 					     p->property.pr_type,
-					     FALSE);
+					     false);
 	  if (pr == NULL)
 	    {
 	      if (number_p)
@@ -435,7 +601,8 @@ elf_get_gnu_property_section_size (elf_p
 /* Write GNU properties.  */
 
 static void
-elf_write_gnu_properties (bfd *abfd, bfd_byte *contents,
+elf_write_gnu_properties (struct bfd_link_info *info,
+			  bfd *abfd, bfd_byte *contents,
 			  elf_property_list *list, unsigned int size,
 			  unsigned int align_size)
 {
@@ -480,6 +647,11 @@ elf_write_gnu_properties (bfd *abfd, bfd
 	      break;
 
 	    case 4:
+	      /* Save the pointer to GNU_PROPERTY_1_NEEDED so that it
+		 can be updated later if needed.  */
+	      if (info != NULL
+		  && list->property.pr_type == GNU_PROPERTY_1_NEEDED)
+		info->needed_1_p = contents + size;
 	      bfd_h_put_32 (abfd, list->property.u.number,
 			    contents + size);
 	      break;
@@ -502,46 +674,139 @@ elf_write_gnu_properties (bfd *abfd, bfd
     }
 }
 
+static asection *
+_bfd_elf_link_create_gnu_property_sec (struct bfd_link_info *info, bfd *elf_bfd,
+				       unsigned int elfclass)
+{
+  asection *sec;
+
+  sec = bfd_make_section_with_flags (elf_bfd,
+				     NOTE_GNU_PROPERTY_SECTION_NAME,
+				     (SEC_ALLOC
+				      | SEC_LOAD
+				      | SEC_IN_MEMORY
+				      | SEC_READONLY
+				      | SEC_HAS_CONTENTS
+				      | SEC_DATA));
+  if (sec == NULL
+      || !bfd_set_section_alignment (sec, elfclass == ELFCLASS64 ? 3 : 2))
+    info->callbacks->fatal (_("%P: failed to create %s\n"),
+			    NOTE_GNU_PROPERTY_SECTION_NAME);
+
+  elf_section_type (sec) = SHT_NOTE;
+  return sec;
+}
+
+/* Prune empty generic properties.  */
+
+static void
+elf_prune_empty_properties (elf_property_list **pp)
+{
+  elf_property_list *p;
+
+  while ((p = *pp) != NULL)
+    if ((p->property.pr_type < GNU_PROPERTY_LOPROC
+	 || p->property.pr_type >= GNU_PROPERTY_LOUSER)
+	&& p->property.pr_datasz != 0
+	&& p->property.pr_kind == property_number
+	&& p->property.u.number == 0)
+      *pp = p->next;
+    else
+      pp = &p->next;
+}
+
 /* Set up GNU properties.  Return the first relocatable ELF input with
    GNU properties if found.  Otherwise, return NULL.  */
 
 bfd *
 _bfd_elf_link_setup_gnu_properties (struct bfd_link_info *info)
 {
-  bfd *abfd, *first_pbfd = NULL;
+  bfd *abfd, *first_pbfd = NULL, *elf_bfd = NULL;
   elf_property_list *list;
   asection *sec;
-  bfd_boolean has_properties = FALSE;
+  bool has_properties = false;
   const struct elf_backend_data *bed
     = get_elf_backend_data (info->output_bfd);
   unsigned int elfclass = bed->s->elfclass;
   int elf_machine_code = bed->elf_machine_code;
+  elf_property *p;
 
   /* Find the first relocatable ELF input with GNU properties.  */
   for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next)
     if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
 	&& (abfd->flags & DYNAMIC) == 0
-	&& elf_properties (abfd) != NULL)
+	&& (elf_machine_code
+	    == get_elf_backend_data (abfd)->elf_machine_code)
+	&& (elfclass == get_elf_backend_data (abfd)->s->elfclass))
       {
-	has_properties = TRUE;
-
 	/* Ignore GNU properties from ELF objects with different machine
 	   code or class.  Also skip objects without a GNU_PROPERTY note
 	   section.  */
-	if ((elf_machine_code
-	     == get_elf_backend_data (abfd)->elf_machine_code)
-	    && (elfclass
-		== get_elf_backend_data (abfd)->s->elfclass)
-	    && bfd_get_section_by_name (abfd,
-					NOTE_GNU_PROPERTY_SECTION_NAME) != NULL
-	    )
+	elf_bfd = abfd;
+
+	if (elf_properties (abfd) != NULL)
 	  {
-	    /* Keep .note.gnu.property section in FIRST_PBFD.  */
-	    first_pbfd = abfd;
-	    break;
+	    has_properties = true;
+
+	    if (bfd_get_section_by_name (abfd,
+					 NOTE_GNU_PROPERTY_SECTION_NAME)
+		!= NULL)
+	      {
+		/* Keep .note.gnu.property section in FIRST_PBFD.  */
+		first_pbfd = abfd;
+		break;
+	      }
 	  }
       }
 
+  if (info->indirect_extern_access > 0 && elf_bfd != NULL)
+    {
+      /* Support -z indirect-extern-access.  */
+      if (first_pbfd == NULL)
+	{
+	  sec = _bfd_elf_link_create_gnu_property_sec (info, elf_bfd, elfclass);
+	  first_pbfd = elf_bfd;
+	  has_properties = true;
+	}
+
+      p = _bfd_elf_get_property (first_pbfd, GNU_PROPERTY_1_NEEDED, 4);
+      if (p->pr_kind == property_unknown)
+	{
+	  /* Create GNU_PROPERTY_1_NEEDED.  */
+	  p->u.number
+	    = GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS;
+	  p->pr_kind = property_number;
+	}
+      else
+	p->u.number
+	  |= GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS;
+    }
+
+  if (elf_bfd != NULL)
+    {
+      if (info->memory_seal)
+	{
+	  /* Support -z no-memory-seal.  */
+	  if (first_pbfd == NULL)
+	    {
+	      sec = _bfd_elf_link_create_gnu_property_sec (info, elf_bfd, elfclass);
+	      first_pbfd = elf_bfd;
+	      has_properties = true;
+	    }
+
+	  p = _bfd_elf_get_property (first_pbfd, GNU_PROPERTY_MEMORY_SEAL, 0);
+	  if (p->pr_kind == property_unknown)
+	    {
+	      /* Create GNU_PROPERTY_NO_MEMORY_SEAL.  */
+	      p->u.number = GNU_PROPERTY_MEMORY_SEAL;
+	      p->pr_kind = property_number;
+	    }
+	}
+      else
+	elf_find_and_remove_property (&elf_properties (elf_bfd),
+				      GNU_PROPERTY_MEMORY_SEAL, true);
+    }
+
   /* Do nothing if there is no .note.gnu.property section.  */
   if (!has_properties)
     return NULL;
@@ -605,7 +870,6 @@ _bfd_elf_link_setup_gnu_properties (stru
 	 if N > 0.  */
       if (info->stacksize > 0)
 	{
-	  elf_property *p;
 	  bfd_vma stacksize = info->stacksize;
 
 	  p = _bfd_elf_get_property (first_pbfd, GNU_PROPERTY_STACK_SIZE,
@@ -631,6 +895,31 @@ _bfd_elf_link_setup_gnu_properties (stru
       if (bed->fixup_gnu_properties)
 	bed->fixup_gnu_properties (info, &elf_properties (first_pbfd));
 
+      if (info->indirect_extern_access <= 0)
+	{
+	  /* Get GNU_PROPERTY_1_NEEDED properties.  */
+	  p = elf_find_and_remove_property (&elf_properties (first_pbfd),
+					    GNU_PROPERTY_1_NEEDED, false);
+	  if (p != NULL)
+	    {
+	      if (info->indirect_extern_access < 0)
+		{
+		  /* Set indirect_extern_access to 1 to indicate that
+		     it is turned on by input properties.  */
+		  if ((p->u.number
+		       & GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS)
+		      != 0)
+		    info->indirect_extern_access = 1;
+		}
+	      else
+		/* Turn off indirect external access.  */
+		p->u.number
+		  &= ~GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS;
+	    }
+	}
+
+      elf_prune_empty_properties (&elf_properties (first_pbfd));
+
       if (elf_properties (first_pbfd) == NULL)
 	{
 	  /* Discard .note.gnu.property section if all properties have
@@ -647,16 +936,26 @@ _bfd_elf_link_setup_gnu_properties (stru
       sec->size = size;
       contents = (bfd_byte *) bfd_zalloc (first_pbfd, size);
 
-      elf_write_gnu_properties (first_pbfd, contents, list, size,
+      elf_write_gnu_properties (info, first_pbfd, contents, list, size,
 				align_size);
 
       /* Cache the section contents for elf_link_input_bfd.  */
+      sec->alloced = 1;
       elf_section_data (sec)->this_hdr.contents = contents;
 
       /* If GNU_PROPERTY_NO_COPY_ON_PROTECTED is set, protected data
 	 symbol is defined in the shared object.  */
       if (elf_has_no_copy_on_protected (first_pbfd))
-	info->extern_protected_data = FALSE;
+	info->extern_protected_data = false;
+
+      if (info->indirect_extern_access > 0)
+	{
+	  /* For indirect external access, don't generate copy
+	     relocations.  NB: Set to nocopyreloc to 2 to indicate
+	     that it is implied by indirect_extern_access.  */
+	  info->nocopyreloc = 2;
+	  info->extern_protected_data = false;
+	}
     }
 
   return first_pbfd;
@@ -680,7 +979,7 @@ _bfd_elf_convert_gnu_property_size (bfd
 
 /* Convert GNU properties.  */
 
-bfd_boolean
+bool
 _bfd_elf_convert_gnu_properties (bfd *ibfd, asection *isec,
 				 bfd *obfd, bfd_byte **ptr,
 				 bfd_size_type *ptr_size)
@@ -703,6 +1002,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;
     }
@@ -712,7 +1013,8 @@ _bfd_elf_convert_gnu_properties (bfd *ib
   *ptr_size = size;
 
   /* Generate the output .note.gnu.property section.  */
-  elf_write_gnu_properties (ibfd, contents, list, size, 1 << align_shift);
+  elf_write_gnu_properties (NULL, ibfd, contents, list, size,
+			    1 << align_shift);
 
-  return TRUE;
+  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.20200303/bfd/elf-s390-common.c ./bfd/elf-s390-common.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-s390-common.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-s390-common.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by Andreas Krebbel.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -23,7 +23,7 @@
 /* Return TRUE if H is an IFUNC symbol.  Simply checking for the
    symbol type might not be enough since it might get changed to
    STT_FUNC for pointer equality reasons.  */
-static inline bfd_boolean
+static inline bool
 s390_is_ifunc_symbol_p (struct elf_link_hash_entry *h)
 {
   struct elf_s390_link_hash_entry *eh = (struct elf_s390_link_hash_entry*)h;
@@ -32,26 +32,26 @@ s390_is_ifunc_symbol_p (struct elf_link_
 
 /* Return true if .got.plt is supposed to be emitted after .got.  */
 
-static inline bfd_boolean
+static inline bool
 s390_gotplt_after_got_p (struct bfd_link_info *info)
 {
   struct elf_s390_link_hash_table *htab = elf_s390_hash_table (info);
 
   if (!htab->elf.sgot || !htab->elf.sgotplt)
-    return TRUE;
+    return true;
 
   if (htab->elf.sgot->output_section == htab->elf.sgotplt->output_section)
     {
       if (htab->elf.sgot->output_offset < htab->elf.sgotplt->output_offset)
-	return TRUE;
+	return true;
     }
   else
     {
       if (htab->elf.sgot->output_section->vma
 	  <= htab->elf.sgotplt->output_section->vma)
-	return TRUE;
+	return true;
     }
-  return FALSE;
+  return false;
 }
 
 /* Return the value of the _GLOBAL_OFFSET_TABLE_ symbol.  */
@@ -113,7 +113,7 @@ s390_gotplt_offset (struct bfd_link_info
 
 /* Create sections needed by STT_GNU_IFUNC symbol.  */
 
-static bfd_boolean
+static bool
 s390_elf_create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags;
@@ -122,7 +122,7 @@ s390_elf_create_ifunc_sections (bfd *abf
   struct elf_link_hash_table *htab = elf_hash_table (info);
 
   if (htab->iplt != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
 
@@ -132,7 +132,7 @@ s390_elf_create_ifunc_sections (bfd *abf
 				       flags | SEC_READONLY);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->irelifunc = s;
     }
 
@@ -141,36 +141,36 @@ s390_elf_create_ifunc_sections (bfd *abf
 				   flags | SEC_CODE | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
   htab->iplt = s;
 
   s = bfd_make_section_with_flags (abfd, ".rela.iplt", flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->irelplt = s;
 
   s = bfd_make_section_with_flags (abfd, ".igot.plt", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->igotplt = s;
 
-  return TRUE;
+  return true;
 }
 
 
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs against a STT_GNU_IFUNC symbol definition.  */
 
-static bfd_boolean
+static bool
 s390_elf_allocate_ifunc_dyn_relocs (struct bfd_link_info *info,
 				    struct elf_link_hash_entry *h)
 {
   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;
@@ -196,7 +196,7 @@ s390_elf_allocate_ifunc_dyn_relocs (stru
       h->got = htab->init_got_offset;
       h->plt = htab->init_plt_offset;
       *head = NULL;
-      return TRUE;
+      return true;
     }
 
   /* Return and discard space for dynamic relocations against it if
@@ -209,10 +209,10 @@ s390_elf_allocate_ifunc_dyn_relocs (stru
       h->got = htab->init_got_offset;
       h->plt = htab->init_plt_offset;
       *head = NULL;
-      return TRUE;
+      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.  */
@@ -276,10 +276,10 @@ keep:
 	htab->srelgot->size += RELA_ENTRY_SIZE;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 elf_s390_allocate_local_syminfo (bfd *abfd, Elf_Internal_Shdr *symtab_hdr)
 {
   bfd_size_type size;
@@ -291,14 +291,14 @@ elf_s390_allocate_local_syminfo (bfd *ab
   elf_local_got_refcounts (abfd) = ((bfd_signed_vma *)
 				    bfd_zalloc (abfd, size));
   if (elf_local_got_refcounts (abfd) == NULL)
-    return FALSE;
+    return false;
   elf_s390_local_plt (abfd)
     = (struct plt_entry*)(elf_local_got_refcounts (abfd)
 			  + symtab_hdr->sh_info);
   elf_s390_local_got_tls_type (abfd)
     = (char *) (elf_s390_local_plt (abfd) + symtab_hdr->sh_info);
 
-  return TRUE;
+  return true;
 }
 
 /* Whether to sort relocs output by ld -r or ld --emit-relocs, by
@@ -307,7 +307,7 @@ elf_s390_allocate_local_syminfo (bfd *ab
    hand, elf-eh-frame.c processing requires .eh_frame relocs to be
    sorted.  */
 
-static bfd_boolean
+static bool
 elf_s390_elf_sort_relocs_p (asection *sec)
 {
   return (sec->flags & SEC_CODE) == 0;
@@ -315,7 +315,7 @@ elf_s390_elf_sort_relocs_p (asection *se
 
 /* Merge object attributes from IBFD into OBFD.  Raise an error if
    there are conflicting attributes.  */
-static bfd_boolean
+static bool
 elf_s390_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -331,7 +331,7 @@ elf_s390_merge_obj_attributes (bfd *ibfd
 	 initialized.  */
       elf_known_obj_attributes_proc (obfd)[0].i = 1;
 
-      return TRUE;
+      return true;
     }
 
   in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
@@ -372,5 +372,5 @@ elf_s390_merge_obj_attributes (bfd *ibfd
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
   _bfd_elf_merge_object_attributes (ibfd, info);
 
-  return TRUE;
+  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.20200303/bfd/elf-s390.h ./bfd/elf-s390.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-s390.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-s390.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* S/390-specific support for ELF.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -25,5 +25,5 @@ struct s390_elf_params
   int pgste;
 };
 
-bfd_boolean bfd_elf_s390_set_options (struct bfd_link_info *info,
-				      struct s390_elf_params *params);
+bool bfd_elf_s390_set_options (struct bfd_link_info *info,
+			       struct s390_elf_params *params);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-sframe.c ./bfd/elf-sframe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-sframe.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elf-sframe.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,700 @@
+/* .sframe section processing.
+   Copyright (C) 2022-2025 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"
+#include "elf-bfd.h"
+#include "sframe-api.h"
+#include "sframe-internal.h"
+
+/* Return TRUE if the function has been marked for deletion during the linking
+   process.  */
+
+static bool
+sframe_decoder_func_deleted_p (struct sframe_dec_info *sfd_info,
+			       unsigned int func_idx)
+{
+  if (func_idx < sfd_info->sfd_fde_count)
+    return sfd_info->sfd_func_bfdinfo[func_idx].func_deleted_p;
+
+  return false;
+}
+
+/* Mark the function in the decoder info for deletion.  */
+
+static void
+sframe_decoder_mark_func_deleted (struct sframe_dec_info *sfd_info,
+				  unsigned int func_idx)
+{
+  if (func_idx < sfd_info->sfd_fde_count)
+    sfd_info->sfd_func_bfdinfo[func_idx].func_deleted_p = true;
+}
+
+/* Get the relocation offset from the decoder info for the given function.  */
+
+static unsigned int
+sframe_decoder_get_func_r_offset (struct sframe_dec_info *sfd_info,
+				  unsigned int func_idx)
+{
+  BFD_ASSERT (func_idx < sfd_info->sfd_fde_count);
+  unsigned int func_r_offset
+    = sfd_info->sfd_func_bfdinfo[func_idx].func_r_offset;
+  /* There must have been a reloc.  */
+  BFD_ASSERT (func_r_offset);
+  return func_r_offset;
+}
+
+/* Bookkeep the function relocation offset in the decoder info.  */
+
+static void
+sframe_decoder_set_func_r_offset (struct sframe_dec_info *sfd_info,
+				  unsigned int func_idx,
+				  unsigned int r_offset)
+{
+  if (func_idx < sfd_info->sfd_fde_count)
+    sfd_info->sfd_func_bfdinfo[func_idx].func_r_offset = r_offset;
+}
+
+/* Get the relocation index in the elf_reloc_cookie for the function.  */
+
+static unsigned int
+sframe_decoder_get_func_reloc_index (struct sframe_dec_info *sfd_info,
+				     unsigned int func_idx)
+{
+  BFD_ASSERT (func_idx < sfd_info->sfd_fde_count);
+  return sfd_info->sfd_func_bfdinfo[func_idx].func_reloc_index;
+}
+
+/* Bookkeep the relocation index in the elf_reloc_cookie for the function.  */
+
+static void
+sframe_decoder_set_func_reloc_index (struct sframe_dec_info *sfd_info,
+				     unsigned int func_idx,
+				     unsigned int reloc_index)
+{
+  if (func_idx < sfd_info->sfd_fde_count)
+    sfd_info->sfd_func_bfdinfo[func_idx].func_reloc_index = reloc_index;
+}
+
+/* Initialize the set of additional information in CFD_INFO,
+   needed for linking SEC.  Returns TRUE if setup is done successfully.  */
+
+static bool
+sframe_decoder_init_func_bfdinfo (bfd *abfd,
+				  const asection *sec,
+				  struct sframe_dec_info *sfd_info,
+				  const struct elf_reloc_cookie *cookie)
+{
+  unsigned int fde_count;
+  unsigned int func_bfdinfo_size, i;
+  const Elf_Internal_Rela *rel;
+
+  fde_count = sframe_decoder_get_num_fidx (sfd_info->sfd_ctx);
+  sfd_info->sfd_fde_count = fde_count;
+
+  /* Allocate and clear the memory.  */
+  func_bfdinfo_size = (sizeof (struct sframe_func_bfdinfo)) * fde_count;
+  sfd_info->sfd_func_bfdinfo = bfd_zalloc (abfd, func_bfdinfo_size);
+  if (sfd_info->sfd_func_bfdinfo == NULL)
+    return false;
+
+  /* For linker generated .sframe sections, we have no relocs.  Skip.  */
+  if ((sec->flags & SEC_LINKER_CREATED) && cookie->rels == NULL)
+    return true;
+
+  rel = cookie->rels;
+  for (i = 0; i < fde_count; i++)
+    {
+      /* Bookkeep the relocation offset and relocation index of each function
+	 for later use.  */
+      sframe_decoder_set_func_r_offset (sfd_info, i, rel->r_offset);
+      sframe_decoder_set_func_reloc_index (sfd_info, i, i);
+
+      rel++;
+    }
+
+  /* If there are more relocation entries, they must be R_*_NONE which
+     may be generated from relocations against discarded sections by
+     ld -r.  */
+  for (; rel < cookie->relend; rel++)
+   if (rel->r_info != 0)
+     break;
+  BFD_ASSERT (rel == cookie->relend);
+
+  return true;
+}
+
+/* Read the value from CONTENTS at the specified OFFSET for the given ABFD.  */
+
+static bfd_vma
+sframe_read_value (bfd *abfd, bfd_byte *contents, unsigned int offset,
+		   unsigned int width)
+{
+  BFD_ASSERT (contents && offset);
+  /* Supporting the usecase of reading only the 4-byte relocated
+     value (signed offset for func start addr) for now.  */
+  BFD_ASSERT (width == 4);
+  /* FIXME endianness ?? */
+  unsigned char *buf = contents + offset;
+  bfd_vma value = bfd_get_signed_32 (abfd, buf);
+  return value;
+}
+
+/* Return true if there is at least one non-empty .sframe section in
+   input files.  Can only be called after ld has mapped input to
+   output sections, and before sections are stripped.  */
+
+bool
+_bfd_elf_sframe_present (struct bfd_link_info *info)
+{
+  asection *sframe = bfd_get_section_by_name (info->output_bfd, ".sframe");
+
+  if (sframe == NULL)
+    return false;
+
+  /* Count only sections which have at least a single FDE.  */
+  for (sframe = sframe->map_head.s; sframe != NULL; sframe = sframe->map_head.s)
+    /* Note that this may become an approximate check in the future when
+       some ABI/arch begin to use the sfh_auxhdr_len.  When sfh_auxhdr_len has
+       non-zero value, it will need to be accounted for in the calculation of
+       the SFrame header size.  */
+    if (sframe->size > sizeof (sframe_header))
+      return true;
+  return false;
+}
+
+/* Try to parse .sframe section SEC, which belongs to ABFD.  Store the
+   information in the section's sec_info field on success.  COOKIE
+   describes the relocations in SEC.
+
+   Returns TRUE if success, FALSE if any error or failure.  */
+
+bool
+_bfd_elf_parse_sframe (bfd *abfd,
+		       struct bfd_link_info *info ATTRIBUTE_UNUSED,
+		       asection *sec, struct elf_reloc_cookie *cookie)
+{
+  bfd_byte *sfbuf = NULL;
+  struct sframe_dec_info *sfd_info;
+  sframe_decoder_ctx *sfd_ctx;
+  bfd_size_type sf_size;
+  int decerr = 0;
+
+  /* Prior versions of assembler and ld were generating SFrame sections with
+     section type SHT_PROGBITS.  Issue an error for lack of support for such
+     objects now.  Even if section size is zero, a valid section type is
+     expected.  */
+  if (elf_section_type (sec) != SHT_GNU_SFRAME)
+    {
+      _bfd_error_handler
+	(_("error in %pB(%pA); unexpected SFrame section type"),
+	 abfd, sec);
+      return false;
+    }
+
+  if (sec->size == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
+      || sec->sec_info_type != SEC_INFO_TYPE_NONE)
+    {
+      /* This file does not contain .sframe information.  */
+      return false;
+    }
+
+  if (bfd_is_abs_section (sec->output_section))
+    {
+      /* At least one of the sections is being discarded from the
+	 link, so we should just ignore them.  */
+      return false;
+    }
+
+  /* Read the SFrame stack trace information from abfd.  */
+  if (!_bfd_elf_mmap_section_contents (abfd, sec, &sfbuf))
+    goto fail_no_free;
+
+  /* Decode the buffer and keep decoded contents for later use.
+     Relocations are performed later, but are such that the section's
+     size is unaffected.  */
+  sfd_info = bfd_zalloc (abfd, sizeof (*sfd_info));
+  sf_size = sec->size;
+
+  sfd_info->sfd_ctx = sframe_decode ((const char*)sfbuf, sf_size, &decerr);
+  sfd_info->sfd_state = SFRAME_SEC_DECODED;
+  sfd_ctx = sfd_info->sfd_ctx;
+  if (!sfd_ctx)
+    /* Free'ing up any memory held by decoder context is done by
+       sframe_decode in case of error.  */
+    goto fail_no_free;
+
+  if (!sframe_decoder_init_func_bfdinfo (abfd, sec, sfd_info, cookie))
+    {
+      sframe_decoder_free (&sfd_ctx);
+      goto fail_no_free;
+    }
+
+  elf_section_data (sec)->sec_info = sfd_info;
+  sec->sec_info_type = SEC_INFO_TYPE_SFRAME;
+
+  goto success;
+
+fail_no_free:
+  _bfd_error_handler
+   (_("error in %pB(%pA); no .sframe will be created"),
+    abfd, sec);
+  return false;
+success:
+  _bfd_elf_munmap_section_contents (sec, sfbuf);
+  return true;
+}
+
+/* This function is called for each input file before the .sframe section
+   is relocated.  It marks the SFrame FDE for the discarded functions for
+   deletion.
+
+   The function returns TRUE iff any entries have been deleted.  */
+
+bool
+_bfd_elf_discard_section_sframe
+   (asection *sec,
+    bool (*reloc_symbol_deleted_p) (bfd_vma, void *),
+    struct elf_reloc_cookie *cookie)
+{
+  bool changed;
+  bool keep;
+  unsigned int i;
+  unsigned int func_desc_offset;
+  unsigned int num_fidx;
+  struct sframe_dec_info *sfd_info;
+
+  changed = false;
+  /* FIXME - if relocatable link and changed = true, how does the final
+     .rela.sframe get updated ?.  */
+  keep = false;
+
+  sfd_info = (struct sframe_dec_info *) elf_section_data (sec)->sec_info;
+
+  /* Skip checking for the linker created .sframe sections
+     (for PLT sections).  */
+  if ((sec->flags & SEC_LINKER_CREATED) == 0 || cookie->rels != NULL)
+    {
+      num_fidx = sframe_decoder_get_num_fidx (sfd_info->sfd_ctx);
+      for (i = 0; i < num_fidx; i++)
+	{
+	  func_desc_offset = sframe_decoder_get_func_r_offset (sfd_info, i);
+
+	  cookie->rel = cookie->rels
+	    + sframe_decoder_get_func_reloc_index (sfd_info, i);
+	  keep = !(*reloc_symbol_deleted_p) (func_desc_offset, cookie);
+
+	  if (!keep)
+	    {
+	      sframe_decoder_mark_func_deleted (sfd_info, i);
+	      changed = true;
+	    }
+	}
+    }
+  return changed;
+}
+
+/* Update the reference to the output .sframe section in the output ELF
+   BFD ABFD.  Returns true if no error.  */
+
+bool
+_bfd_elf_set_section_sframe (bfd *abfd, struct bfd_link_info *info)
+{
+  asection *cfsec;
+
+  cfsec = bfd_get_section_by_name (info->output_bfd, ".sframe");
+  if (!cfsec)
+    return false;
+
+  elf_section_type (cfsec) = SHT_GNU_SFRAME;
+  elf_sframe (abfd) = cfsec;
+
+  return true;
+}
+
+/* Merge .sframe section SEC.  This is called with the relocated
+   CONTENTS.  */
+
+bool
+_bfd_elf_merge_section_sframe (bfd *abfd,
+			       struct bfd_link_info *info,
+			       asection *sec,
+			       bfd_byte *contents)
+{
+  struct sframe_dec_info *sfd_info;
+  struct sframe_enc_info *sfe_info;
+  sframe_decoder_ctx *sfd_ctx;
+  sframe_encoder_ctx *sfe_ctx;
+  uint8_t sfd_ctx_abi_arch;
+  int8_t sfd_ctx_fixed_fp_offset;
+  int8_t sfd_ctx_fixed_ra_offset;
+  uint8_t dctx_version;
+  uint8_t ectx_version;
+  uint8_t dctx_flags;
+  uint8_t ectx_flags;
+  int encerr = 0;
+
+  struct elf_link_hash_table *htab;
+  asection *cfsec;
+
+  /* Sanity check - handle SFrame sections only.  */
+  if (sec->sec_info_type != SEC_INFO_TYPE_SFRAME)
+    return false;
+
+  sfd_info = (struct sframe_dec_info *) elf_section_data (sec)->sec_info;
+  sfd_ctx = sfd_info->sfd_ctx;
+
+  htab = elf_hash_table (info);
+  sfe_info = &(htab->sfe_info);
+  sfe_ctx = sfe_info->sfe_ctx;
+
+  /* All input bfds are expected to have a valid SFrame section.  Even if
+     the SFrame section is empty with only a header, there must be a valid
+     SFrame decoder context by now.  The SFrame encoder context, however,
+     will get set later here, if this is the first call to the function.  */
+  if (sfd_ctx == NULL || sfe_info == NULL)
+    return false;
+
+  dctx_flags = sframe_decoder_get_flags (sfd_ctx);
+
+  if (htab->sfe_info.sfe_ctx == NULL)
+    {
+      sfd_ctx_abi_arch = sframe_decoder_get_abi_arch (sfd_ctx);
+      sfd_ctx_fixed_fp_offset = sframe_decoder_get_fixed_fp_offset (sfd_ctx);
+      sfd_ctx_fixed_ra_offset = sframe_decoder_get_fixed_ra_offset (sfd_ctx);
+
+      /* Valid values are non-zero.  */
+      if (!sfd_ctx_abi_arch)
+	return false;
+
+      /* In-memory FDEs in the encoder object are unsorted during linking and
+	 will be sorted before emission.  Reset SFRAME_F_FDE_SORTED to aptly
+	 reflect that (doing so has no other functional value at this time
+	 though).  */
+      uint8_t tflags = dctx_flags & ~SFRAME_F_FDE_SORTED;
+      /* ld always generates an output section with
+	 SFRAME_F_FDE_FUNC_START_PCREL flag set.  Later using
+	 SFRAME_V2_GNU_AS_LD_ENCODING_FLAGS, it is enforced that the provided
+	 input sections also have this flag set.  */
+      tflags |= SFRAME_F_FDE_FUNC_START_PCREL;
+      htab->sfe_info.sfe_ctx = sframe_encode (SFRAME_VERSION_2,
+					      tflags, /* SFrame flags.  */
+					      sfd_ctx_abi_arch,
+					      sfd_ctx_fixed_fp_offset,
+					      sfd_ctx_fixed_ra_offset,
+					      &encerr);
+      /* Handle errors from sframe_encode.  */
+      if (htab->sfe_info.sfe_ctx == NULL)
+	return false;
+    }
+  sfe_ctx = sfe_info->sfe_ctx;
+
+  if (sfe_info->sframe_section == NULL)
+    {
+      /* Make sure things are set for an eventual write.
+	 Size of the output section is not known until
+	 _bfd_elf_write_section_sframe is ready with the buffer
+	 to write out.  */
+      cfsec = bfd_get_section_by_name (info->output_bfd, ".sframe");
+      if (cfsec)
+	{
+	  sfe_info->sframe_section = cfsec;
+	  // elf_sframe (abfd) = cfsec;
+	}
+      else
+	return false;
+    }
+
+  /* Check that all .sframe sections being linked have the same
+     ABI/arch.  */
+  if (sframe_decoder_get_abi_arch (sfd_ctx)
+      != sframe_encoder_get_abi_arch (sfe_ctx))
+    {
+      _bfd_error_handler
+	(_("input SFrame sections with different abi prevent .sframe"
+	  " generation"));
+      return false;
+    }
+
+  /* Check that all .sframe sections being linked have the same version.  */
+  dctx_version = sframe_decoder_get_version (sfd_ctx);
+  ectx_version = sframe_encoder_get_version (sfe_ctx);
+  if (dctx_version != SFRAME_VERSION_2 || dctx_version != ectx_version)
+    {
+      _bfd_error_handler
+	(_("input SFrame sections with different format versions prevent"
+	  " .sframe generation"));
+      return false;
+    }
+
+  /* Check that all SFrame sections being linked have the 'data encoding'
+     related flags set.  The implementation does not support updating these
+     data encodings on the fly; confirm by checking the ectx_flags.  */
+  ectx_flags = sframe_encoder_get_flags (sfe_ctx);
+  if ((dctx_flags & ectx_flags & SFRAME_V2_GNU_AS_LD_ENCODING_FLAGS)
+      != SFRAME_V2_GNU_AS_LD_ENCODING_FLAGS)
+    {
+      _bfd_error_handler
+	(_("SFrame sections with unexpected data encoding prevent"
+	  " .sframe generation"));
+      return false;
+    }
+
+  /* Iterate over the function descriptor entries and the FREs of the
+     function from the decoder context.  Add each of them to the encoder
+     context, if suitable.  */
+  uint32_t i = 0, j = 0, cur_fidx = 0;
+
+  uint32_t num_fidx = sframe_decoder_get_num_fidx (sfd_ctx);
+  uint32_t num_enc_fidx = sframe_encoder_get_num_fidx (sfe_ctx);
+
+  for (i = 0; i < num_fidx; i++)
+    {
+      unsigned int num_fres = 0;
+      int32_t func_start_addr;
+      bfd_vma address;
+      uint32_t func_size = 0;
+      unsigned char func_info = 0;
+      unsigned int r_offset = 0;
+      bool pltn_reloc_by_hand = false;
+      unsigned int pltn_r_offset = 0;
+      uint8_t rep_block_size = 0;
+
+      if (!sframe_decoder_get_funcdesc_v2 (sfd_ctx, i, &num_fres, &func_size,
+					   &func_start_addr, &func_info,
+					   &rep_block_size))
+	{
+	  /* If function belongs to a deleted section, skip editing the
+	     function descriptor entry.  */
+	  if (sframe_decoder_func_deleted_p(sfd_info, i))
+	    continue;
+
+	  /* Don't edit function descriptor entries for relocatable link.  */
+	  if (!bfd_link_relocatable (info))
+	    {
+	      if (!(sec->flags & SEC_LINKER_CREATED))
+		{
+		  /* Get relocated contents by reading the value of the
+		     relocated function start address at the beginning of the
+		     function descriptor entry.  */
+		  r_offset = sframe_decoder_get_func_r_offset (sfd_info, i);
+		}
+	      else
+		{
+		  /* Expected to land here when SFrame stack trace info is
+		     created dynamically for the .plt* sections.  These
+		     sections are expected to have upto two SFrame FDE entries.
+		     Although the code should work for > 2,  leaving this
+		     assert here for safety.  */
+		  BFD_ASSERT (num_fidx <= 2);
+		  /* For the first entry, we know the offset of the SFrame FDE's
+		     sfde_func_start_address.  Side note: see how the value
+		     of PLT_SFRAME_FDE_START_OFFSET is also set to the
+		     same.  */
+		  r_offset = sframe_decoder_get_hdr_size (sfd_ctx);
+		  /* For any further SFrame FDEs, the generator has already put
+		     in an offset in place of sfde_func_start_address of the
+		     corresponding FDE.  We will use it by hand to relocate.  */
+		  if (i > 0)
+		    {
+		      pltn_r_offset
+			= r_offset + (i * sizeof (sframe_func_desc_entry));
+		      pltn_reloc_by_hand = true;
+		    }
+		}
+
+	      /* Get the SFrame FDE function start address after relocation.  */
+	      address = sframe_read_value (abfd, contents, r_offset, 4);
+	      if (pltn_reloc_by_hand)
+		address += sframe_read_value (abfd, contents,
+					      pltn_r_offset, 4);
+	      address += (sec->output_offset + r_offset);
+	      /* SFrame FDE function start address is an offset from the
+		 sfde_func_start_address field to the start PC.  The
+		 calculation below is the distance of sfde_func_start_address
+		 field from the start of the output SFrame section.  */
+	      uint32_t offsetof_fde_in_sec
+		= sframe_encoder_get_offsetof_fde_start_addr (sfe_ctx,
+							      cur_fidx + num_enc_fidx,
+							      NULL);
+	      address -= offsetof_fde_in_sec;
+
+	      /* FIXME For testing only. Cleanup later.  */
+	      // address += (sec->output_section->vma);
+
+	      func_start_addr = address;
+	    }
+
+	  /* Update the encoder context with updated content.  */
+	  int err = sframe_encoder_add_funcdesc_v2 (sfe_ctx, func_start_addr,
+						    func_size, func_info,
+						    rep_block_size, num_fres);
+	  cur_fidx++;
+	  BFD_ASSERT (!err);
+	}
+
+      for (j = 0; j < num_fres; j++)
+	{
+	  sframe_frame_row_entry fre;
+	  if (!sframe_decoder_get_fre (sfd_ctx, i, j, &fre))
+	    {
+	      int err = sframe_encoder_add_fre (sfe_ctx,
+						cur_fidx-1+num_enc_fidx,
+						&fre);
+	      BFD_ASSERT (!err);
+	    }
+	}
+    }
+  sfd_info->sfd_state = SFRAME_SEC_MERGED;
+  /* Free the SFrame decoder context.  */
+  sframe_decoder_free (&sfd_ctx);
+
+  return true;
+}
+
+/* Adjust an address in the .sframe section.  Given OFFSET within
+   SEC, this returns the new offset in the merged .sframe section,
+   or -1 if the address refers to an FDE which has been removed.
+
+   PS: This function assumes that _bfd_elf_merge_section_sframe has
+   not been called on the input section SEC yet.  Note how it uses
+   sframe_encoder_get_num_fidx () to figure out the offset of FDE
+   in the output section.  */
+
+bfd_vma
+_bfd_elf_sframe_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED,
+				struct bfd_link_info *info,
+				asection *sec,
+				bfd_vma offset)
+{
+  struct sframe_dec_info *sfd_info;
+  struct sframe_enc_info *sfe_info;
+  sframe_decoder_ctx *sfd_ctx;
+  sframe_encoder_ctx *sfe_ctx;
+  struct elf_link_hash_table *htab;
+
+  unsigned int sec_fde_idx, out_num_fdes;
+  unsigned int sfd_num_fdes, sfe_num_fdes;
+  uint32_t sfd_fde_offset;
+  bfd_vma new_offset;
+
+  if (sec->sec_info_type != SEC_INFO_TYPE_SFRAME)
+    return offset;
+
+  sfd_info = elf_section_data (sec)->sec_info;
+  sfd_ctx = sfd_info->sfd_ctx;
+  sfd_num_fdes = sframe_decoder_get_num_fidx (sfd_ctx);
+
+  BFD_ASSERT (sfd_info->sfd_state == SFRAME_SEC_DECODED);
+
+  htab = elf_hash_table (info);
+  sfe_info = &(htab->sfe_info);
+  sfe_ctx = sfe_info->sfe_ctx;
+  sfe_num_fdes = sframe_encoder_get_num_fidx (sfe_ctx);
+
+  /* The index of this FDE in the output section depends on number of deleted
+     functions (between index 0 and sec_fde_idx), if any.  */
+  out_num_fdes = 0;
+  sec_fde_idx = 0;
+  for (unsigned int i = 0; i < sfd_num_fdes; i++)
+    {
+      sfd_fde_offset = sframe_decoder_get_offsetof_fde_start_addr (sfd_ctx,
+								   i, NULL);
+      if (!sframe_decoder_func_deleted_p (sfd_info, i))
+	out_num_fdes++;
+
+      if (sfd_fde_offset == offset)
+	{
+	  /* Found the index of the FDE (at OFFSET) in the input section.  */
+	  sec_fde_idx = i;
+	  break;
+	}
+    }
+
+  if (sframe_decoder_func_deleted_p (sfd_info, sec_fde_idx))
+    return (bfd_vma) -1;
+
+  /* The number of FDEs in the output SFrame section.  Note that the output
+     index of the FDE of interest will be (out_num_fdes - 1).  */
+  out_num_fdes += sfe_num_fdes;
+
+  new_offset = sframe_decoder_get_offsetof_fde_start_addr (sfd_ctx,
+							   out_num_fdes - 1,
+							   NULL);
+  /* Recall that SFrame section merging has distinct requirements: All SFrame
+     FDEs from input sections are clubbed together in the beginning of the
+     output section.  So, at this point in the current function, the new_offset
+     is the correct offset in the merged output SFrame section.  Note, however,
+     that the default mechanism in the _elf_link_input_bfd will do the
+     following adjustment:
+       irela->r_offset += o->output_offset;
+     for all section types.  However, such an adjustment in the RELA offset is
+     _not_ needed for SFrame sections.  Perform the reverse adjustment here so
+     that the default mechanism does not need additional SFrame specific
+     checks.  */
+  new_offset -= sec->output_offset;
+
+  return new_offset;
+}
+
+/* Write out the .sframe section.  This must be called after
+   _bfd_elf_merge_section_sframe has been called on all input
+   .sframe sections.  */
+
+bool
+_bfd_elf_write_section_sframe (bfd *abfd, struct bfd_link_info *info)
+{
+  bool retval = true;
+
+  struct elf_link_hash_table *htab;
+  struct sframe_enc_info *sfe_info;
+  sframe_encoder_ctx *sfe_ctx;
+  asection *sec;
+  void *contents;
+  size_t sec_size;
+  int err = 0;
+
+  htab = elf_hash_table (info);
+  sfe_info = &htab->sfe_info;
+  sec = sfe_info->sframe_section;
+  sfe_ctx = sfe_info->sfe_ctx;
+
+  if (sec == NULL)
+    return true;
+
+  contents = sframe_encoder_write (sfe_ctx, &sec_size, &err);
+  sec->size = (bfd_size_type) sec_size;
+
+  if (!bfd_set_section_contents (abfd, sec->output_section, contents,
+				 (file_ptr) sec->output_offset,
+				 sec->size))
+    retval = false;
+  else
+    {
+      Elf_Internal_Shdr *hdr = &elf_section_data (sec)->this_hdr;
+      hdr->sh_size = sec->size;
+    }
+
+  sframe_encoder_free (&sfe_ctx);
+
+  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.20200303/bfd/elf-strtab.c ./bfd/elf-strtab.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-strtab.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-strtab.c	2026-03-05 02:07:20.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-2025 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)
@@ -116,6 +116,7 @@ _bfd_elf_strtab_init (void)
 		  bfd_malloc (table->alloced * amt));
   if (table->array == NULL)
     {
+      bfd_hash_table_free (&table->table);
       free (table);
       return NULL;
     }
@@ -141,7 +142,7 @@ _bfd_elf_strtab_free (struct elf_strtab_
 size_t
 _bfd_elf_strtab_add (struct elf_strtab_hash *tab,
 		     const char *str,
-		     bfd_boolean copy)
+		     bool copy)
 {
   register struct elf_strtab_hash_entry *entry;
 
@@ -152,7 +153,7 @@ _bfd_elf_strtab_add (struct elf_strtab_h
 
   BFD_ASSERT (tab->sec_size == 0);
   entry = (struct elf_strtab_hash_entry *)
-	  bfd_hash_lookup (&tab->table, str, TRUE, copy);
+	  bfd_hash_lookup (&tab->table, str, true, copy);
 
   if (entry == NULL)
     return (size_t) -1;
@@ -245,13 +246,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)
@@ -296,22 +300,24 @@ _bfd_elf_strtab_str (struct elf_strtab_h
 		     bfd_size_type *offset)
 {
   if (idx == 0)
-    return 0;
+    return NULL;
   BFD_ASSERT (idx < tab->size);
   BFD_ASSERT (tab->sec_size);
+  if (tab->array[idx]->refcount == 0)
+    return NULL;
   if (offset)
     *offset = tab->array[idx]->u.index;
   return tab->array[idx]->root.string;
 }
 
-bfd_boolean
+bool
 _bfd_elf_strtab_emit (register bfd *abfd, struct elf_strtab_hash *tab)
 {
   bfd_size_type off = 1;
   size_t i;
 
-  if (bfd_bwrite ("", 1, abfd) != 1)
-    return FALSE;
+  if (bfd_write ("", 1, abfd) != 1)
+    return false;
 
   for (i = 1; i < tab->size; ++i)
     {
@@ -320,18 +326,18 @@ _bfd_elf_strtab_emit (register bfd *abfd
 
       BFD_ASSERT (tab->array[i]->refcount == 0);
       len = tab->array[i]->len;
-      if ((int) len < 0)
+      if ((int) len <= 0)
 	continue;
 
       str = tab->array[i]->root.string;
-      if (bfd_bwrite (str, len, abfd) != len)
-	return FALSE;
+      if (bfd_write (str, len, abfd) != len)
+	return false;
 
       off += len;
     }
 
   BFD_ASSERT (off == tab->sec_size);
-  return TRUE;
+  return true;
 }
 
 /* Compare two elf_strtab_hash_entry structures.  Called via qsort.
@@ -439,9 +445,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.20200303/bfd/elf-vxworks.c ./bfd/elf-vxworks.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-vxworks.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-vxworks.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* VxWorks support for ELF
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,7 +28,7 @@
 /* Return true if symbol NAME, as defined by ABFD, is one of the special
    __GOTT_BASE__ or __GOTT_INDEX__ symbols.  */
 
-static bfd_boolean
+static bool
 elf_vxworks_gott_symbol_p (bfd *abfd, const char *name)
 {
   char leading;
@@ -37,7 +37,7 @@ elf_vxworks_gott_symbol_p (bfd *abfd, co
   if (leading)
     {
       if (*name != leading)
-	return FALSE;
+	return false;
       name++;
     }
   return (strcmp (name, "__GOTT_BASE__") == 0
@@ -45,7 +45,7 @@ elf_vxworks_gott_symbol_p (bfd *abfd, co
 }
 
 /* Tweak magic VxWorks symbols as they are loaded.  */
-bfd_boolean
+bool
 elf_vxworks_add_symbol_hook (bfd *abfd,
 			     struct bfd_link_info *info,
 			     Elf_Internal_Sym *sym,
@@ -69,14 +69,14 @@ elf_vxworks_add_symbol_hook (bfd *abfd,
       *flagsp |= BSF_WEAK;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Perform VxWorks-specific handling of the create_dynamic_sections hook.
    When creating an executable, set *SRELPLT2_OUT to the .rel(a).plt.unloaded
    section.  */
 
-bfd_boolean
+bool
 elf_vxworks_create_dynamic_sections (bfd *dynobj, struct bfd_link_info *info,
 				     asection **srelplt2_out)
 {
@@ -98,7 +98,7 @@ elf_vxworks_create_dynamic_sections (bfd
 					      | SEC_LINKER_CREATED);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
 
       *srelplt2_out = s;
     }
@@ -114,7 +114,7 @@ elf_vxworks_create_dynamic_sections (bfd
       htab->hgot->other &= ~ELF_ST_VISIBILITY (-1);
       htab->hgot->forced_local = 0;
       if (!bfd_elf_link_record_dynamic_symbol (info, htab->hgot))
-	return FALSE;
+	return false;
     }
   if (htab->hplt)
     {
@@ -122,7 +122,7 @@ elf_vxworks_create_dynamic_sections (bfd
       htab->hplt->type = STT_FUNC;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Tweak magic VxWorks symbols as they are written to the output file.  */
@@ -146,7 +146,7 @@ elf_vxworks_link_output_symbol_hook (str
 /* Copy relocations into the output file.  Fixes up relocations against PLT
    entries, then calls the generic routine.  */
 
-bfd_boolean
+bool
 elf_vxworks_emit_relocs (bfd *output_bfd,
 			 asection *input_section,
 			 Elf_Internal_Shdr *input_rel_hdr,
@@ -172,35 +172,39 @@ elf_vxworks_emit_relocs (bfd *output_bfd
 	   irela += bed->s->int_rels_per_ext_rel,
 	     hash_ptr++)
 	{
-	  if (*hash_ptr
-	      && (*hash_ptr)->def_dynamic
-	      && !(*hash_ptr)->def_regular
-	      && ((*hash_ptr)->root.type == bfd_link_hash_defined
-		  || (*hash_ptr)->root.type == bfd_link_hash_defweak)
-	      && (*hash_ptr)->root.u.def.section->output_section != NULL)
+	  if (*hash_ptr)
 	    {
-	      /* This is a relocation from an executable or shared
-		 library against a symbol in a different shared
-		 library.  We are creating a definition in the output
-		 file but it does not come from any of our normal (.o)
-		 files. ie. a PLT stub.  Normally this would be a
-		 relocation against against SHN_UNDEF with the VMA of
-		 the PLT stub.  This upsets the VxWorks loader.
-		 Convert it to a section-relative relocation.  This
-		 gets some other symbols (for instance .dynbss), but
-		 is conservatively correct.  */
-	      for (j = 0; j < bed->s->int_rels_per_ext_rel; j++)
+	      (*hash_ptr)->has_reloc = 1;
+	      if ((*hash_ptr)->def_dynamic
+		  && !(*hash_ptr)->def_regular
+		  && ((*hash_ptr)->root.type == bfd_link_hash_defined
+		      || (*hash_ptr)->root.type == bfd_link_hash_defweak)
+		  && (*hash_ptr)->root.u.def.section->output_section != NULL)
 		{
-		  asection *sec = (*hash_ptr)->root.u.def.section;
-		  int this_idx = sec->output_section->target_index;
-
-		  irela[j].r_info
-		    = ELF32_R_INFO (this_idx, ELF32_R_TYPE (irela[j].r_info));
-		  irela[j].r_addend += (*hash_ptr)->root.u.def.value;
-		  irela[j].r_addend += sec->output_offset;
+		  /* This is a relocation from an executable or shared
+		     library against a symbol in a different shared
+		     library.  We are creating a definition in the output
+		     file but it does not come from any of our normal (.o)
+		     files. ie. a PLT stub.  Normally this would be a
+		     relocation against SHN_UNDEF with the VMA of
+		     the PLT stub.  This upsets the VxWorks loader.
+		     Convert it to a section-relative relocation.  This
+		     gets some other symbols (for instance .dynbss), but
+		     is conservatively correct.  */
+		  for (j = 0; j < bed->s->int_rels_per_ext_rel; j++)
+		    {
+		      asection *sec = (*hash_ptr)->root.u.def.section;
+		      int this_idx = sec->output_section->target_index;
+
+		      irela[j].r_info
+			= ELF32_R_INFO (this_idx,
+					ELF32_R_TYPE (irela[j].r_info));
+		      irela[j].r_addend += (*hash_ptr)->root.u.def.value;
+		      irela[j].r_addend += sec->output_offset;
+		    }
+		  /* Stop the generic routine adjusting this entry.  */
+		  *hash_ptr = NULL;
 		}
-	      /* Stop the generic routine adjusting this entry.  */
-	      *hash_ptr = NULL;
 	    }
 	}
     }
@@ -212,7 +216,7 @@ elf_vxworks_emit_relocs (bfd *output_bfd
 
 /* Set the sh_link and sh_info fields on the static plt relocation secton.  */
 
-bfd_boolean
+bool
 elf_vxworks_final_write_processing (bfd *abfd)
 {
   asection * sec;
@@ -235,7 +239,7 @@ elf_vxworks_final_write_processing (bfd
 /* Add the dynamic entries required by VxWorks.  These point to the
    tls sections.  */
 
-bfd_boolean
+bool
 elf_vxworks_add_dynamic_entries (bfd *output_bfd, struct bfd_link_info *info)
 {
   if (bfd_get_section_by_name (output_bfd, ".tls_data"))
@@ -243,21 +247,21 @@ elf_vxworks_add_dynamic_entries (bfd *ou
       if (!_bfd_elf_add_dynamic_entry (info, DT_VX_WRS_TLS_DATA_START, 0)
 	  || !_bfd_elf_add_dynamic_entry (info, DT_VX_WRS_TLS_DATA_SIZE, 0)
 	  || !_bfd_elf_add_dynamic_entry (info, DT_VX_WRS_TLS_DATA_ALIGN, 0))
-	return FALSE;
+	return false;
     }
   if (bfd_get_section_by_name (output_bfd, ".tls_vars"))
     {
       if (!_bfd_elf_add_dynamic_entry (info, DT_VX_WRS_TLS_VARS_START, 0)
 	  || !_bfd_elf_add_dynamic_entry (info, DT_VX_WRS_TLS_VARS_SIZE, 0))
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* If *DYN is one of the VxWorks-specific dynamic entries, then fill
    in the value now  and return TRUE.  Otherwise return FALSE.  */
 
-bfd_boolean
+bool
 elf_vxworks_finish_dynamic_entry (bfd *output_bfd, Elf_Internal_Dyn *dyn)
 {
   asection *sec;
@@ -265,7 +269,7 @@ elf_vxworks_finish_dynamic_entry (bfd *o
   switch (dyn->d_tag)
     {
     default:
-      return FALSE;
+      return false;
 
     case DT_VX_WRS_TLS_DATA_START:
       sec = bfd_get_section_by_name (output_bfd, ".tls_data");
@@ -292,7 +296,20 @@ elf_vxworks_finish_dynamic_entry (bfd *o
       dyn->d_un.d_val = sec->size;
       break;
     }
-  return TRUE;
+  return true;
 }
 
+/* Add dynamic tags.  */
 
+bool
+_bfd_elf_maybe_vxworks_add_dynamic_tags (bfd *output_bfd,
+					 struct bfd_link_info *info,
+					 bool 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.20200303/bfd/elf-vxworks.h ./bfd/elf-vxworks.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elf-vxworks.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elf-vxworks.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* VxWorks support for ELF
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -19,18 +19,19 @@
 #include "elf/common.h"
 #include "elf/internal.h"
 
-bfd_boolean elf_vxworks_add_symbol_hook
+bool elf_vxworks_add_symbol_hook
   (bfd *, struct bfd_link_info *, Elf_Internal_Sym *, const char **,
    flagword *, asection **, bfd_vma *);
-bfd_boolean elf_vxworks_link_output_symbol_hook
+int elf_vxworks_link_output_symbol_hook
   (struct bfd_link_info *, const char *name, Elf_Internal_Sym *,
    asection *, struct elf_link_hash_entry *);
-bfd_boolean elf_vxworks_emit_relocs
+bool elf_vxworks_emit_relocs
   (bfd *, asection *, Elf_Internal_Shdr *, Elf_Internal_Rela *,
    struct elf_link_hash_entry **);
-bfd_boolean elf_vxworks_final_write_processing (bfd *);
-bfd_boolean elf_vxworks_create_dynamic_sections
+bool elf_vxworks_final_write_processing (bfd *);
+bool elf_vxworks_create_dynamic_sections
   (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 *);
-
+bool elf_vxworks_add_dynamic_entries (bfd *, struct bfd_link_info *);
+bool elf_vxworks_finish_dynamic_entry (bfd *, Elf_Internal_Dyn *);
+bool _bfd_elf_maybe_vxworks_add_dynamic_tags
+  (bfd *, struct bfd_link_info *, bool);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-aarch64.c ./bfd/elfxx-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-aarch64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-aarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* AArch64-specific support for ELF.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -22,6 +22,7 @@
 #include "bfd.h"
 #include "elf-bfd.h"
 #include "elfxx-aarch64.h"
+#include "libbfd.h"
 #include <stdarg.h>
 #include <string.h>
 
@@ -398,9 +399,9 @@ bfd_vma
 _bfd_aarch64_elf_resolve_relocation (bfd *input_bfd,
 				     bfd_reloc_code_real_type r_type,
 				     bfd_vma place, bfd_vma value,
-				     bfd_vma addend, bfd_boolean weak_undef_p)
+				     bfd_vma addend, bool weak_undef_p)
 {
-  bfd_boolean tls_reloc = TRUE;
+  bool tls_reloc = true;
   switch (r_type)
     {
     case BFD_RELOC_AARCH64_NONE:
@@ -448,7 +449,7 @@ _bfd_aarch64_elf_resolve_relocation (bfd
     case BFD_RELOC_AARCH64_MOVW_G2_NC:
     case BFD_RELOC_AARCH64_MOVW_G2_S:
     case BFD_RELOC_AARCH64_MOVW_G3:
-      tls_reloc = FALSE;
+      tls_reloc = false;
       /* fall-through.  */
     case BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC:
     case BFD_RELOC_AARCH64_TLSDESC_OFF_G1:
@@ -575,7 +576,7 @@ _bfd_aarch64_elf_resolve_relocation (bfd
 
 /* Support for core dump NOTE sections.  */
 
-bfd_boolean
+bool
 _bfd_aarch64_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
 {
   int offset;
@@ -584,7 +585,7 @@ _bfd_aarch64_elf_grok_prstatus (bfd *abf
   switch (note->descsz)
     {
       default:
-	return FALSE;
+	return false;
 
       case 392:		/* sizeof(struct elf_prstatus) on Linux/arm64.  */
 	/* pr_cursig */
@@ -607,13 +608,13 @@ _bfd_aarch64_elf_grok_prstatus (bfd *abf
 					  size, note->descpos + offset);
 }
 
-bfd_boolean
+bool
 _bfd_aarch64_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
 {
   switch (note->descsz)
     {
     default:
-      return FALSE;
+      return false;
 
     case 136:	     /* This is sizeof(struct elf_prpsinfo) on Linux/aarch64.  */
       elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, note->descdata + 24);
@@ -635,7 +636,7 @@ _bfd_aarch64_elf_grok_psinfo (bfd *abfd,
       command[n - 1] = '\0';
   }
 
-  return TRUE;
+  return true;
 }
 
 char *
@@ -697,102 +698,260 @@ _bfd_aarch64_elf_write_core_note (bfd *a
     }
 }
 
-/* Find the first input bfd with GNU property and merge it with GPROP.  If no
-   such input is found, add it to a new section at the last input.  Update
-   GPROP accordingly.  */
-bfd *
-_bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info,
-					    uint32_t *gprop)
+typedef struct
 {
-  asection *sec;
   bfd *pbfd;
-  bfd *ebfd = NULL;
-  elf_property *prop;
-  unsigned align;
+  asection* sec;
+} bfd_search_result_t;
+
+static inline bool
+bfd_is_non_dynamic_elf_object (bfd *abfd, const struct elf_backend_data *out_be)
+{
+  const struct elf_backend_data *in_be = get_elf_backend_data (abfd);
+
+  return bfd_get_flavour (abfd) == bfd_target_elf_flavour
+    && bfd_count_sections (abfd) != 0
+    && (abfd->flags & (DYNAMIC | BFD_PLUGIN | BFD_LINKER_CREATED)) == 0
+    && out_be->elf_machine_code == in_be->elf_machine_code
+    && out_be->s->elfclass == in_be->s->elfclass;
+}
+
+/* Find the first input bfd with GNU properties.
+   If such an input is found, set found to true and return the relevant input.
+   Otherwise, return the last input of bfd inputs.  */
+static bfd_search_result_t
+bfd_linear_search_one_with_gnu_property (struct bfd_link_info *info)
+{
+  const struct elf_backend_data *be = get_elf_backend_data (info->output_bfd);
 
-  uint32_t gnu_prop = *gprop;
+  bfd_search_result_t res = {
+    .pbfd = NULL,
+    .sec = NULL,
+  };
 
-  /* Find a normal input file with GNU property note.  */
-  for (pbfd = info->input_bfds;
-       pbfd != NULL;
-       pbfd = pbfd->link.next)
-    if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour
-	&& bfd_count_sections (pbfd) != 0)
+  for (bfd *pbfd = info->input_bfds; pbfd != NULL; pbfd = pbfd->link.next)
+    if (bfd_is_non_dynamic_elf_object (pbfd, be))
       {
-	ebfd = pbfd;
+	res.pbfd = pbfd;
 
+	/* Does the input have a list of GNU properties ? */
 	if (elf_properties (pbfd) != NULL)
 	  break;
       }
 
-  /* If ebfd != NULL it is either an input with property note or the last
-     input.  Either way if we have gnu_prop, we should add it (by creating
-     a section if needed).  */
-  if (ebfd != NULL && gnu_prop)
-    {
-      prop = _bfd_elf_get_property (ebfd,
-				    GNU_PROPERTY_AARCH64_FEATURE_1_AND,
-				    4);
-      if (gnu_prop & GNU_PROPERTY_AARCH64_FEATURE_1_BTI
-	  && !(prop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
-	    _bfd_error_handler (_("%pB: warning: BTI turned on by -z force-bti "
-				  "when all inputs do not have BTI in NOTE "
-				  "section."), ebfd);
-      prop->u.number |= gnu_prop;
-      prop->pr_kind = property_number;
+  if (res.pbfd != NULL)
+    res.sec = bfd_get_section_by_name (res.pbfd, NOTE_GNU_PROPERTY_SECTION_NAME);
 
-      /* pbfd being NULL implies ebfd is the last input.  Create the GNU
-	 property note section.  */
-      if (pbfd == NULL)
-	{
-	  sec = bfd_make_section_with_flags (ebfd,
-					     NOTE_GNU_PROPERTY_SECTION_NAME,
-					     (SEC_ALLOC
-					      | SEC_LOAD
-					      | SEC_IN_MEMORY
-					      | SEC_READONLY
-					      | SEC_HAS_CONTENTS
-					      | SEC_DATA));
-	  if (sec == NULL)
-	    info->callbacks->einfo (
-	      _("%F%P: failed to create GNU property section\n"));
-
-          align = (bfd_get_mach (ebfd) & bfd_mach_aarch64_ilp32) ? 2 : 3;
-	  if (!bfd_set_section_alignment (sec, align))
-	    info->callbacks->einfo (_("%F%pA: failed to align section\n"),
-				    sec);
+  return res;
+}
 
-	  elf_section_type (sec) = SHT_NOTE;
-	}
+/* Create a GNU property section for the given bfd input.  */
+static void
+_bfd_aarch64_elf_create_gnu_property_section (struct bfd_link_info *info,
+					      bfd *ebfd)
+{
+  asection *sec;
+  sec = bfd_make_section_with_flags (ebfd,
+				     NOTE_GNU_PROPERTY_SECTION_NAME,
+				     (SEC_ALLOC
+				      | SEC_LOAD
+				      | SEC_IN_MEMORY
+				      | SEC_READONLY
+				      | SEC_HAS_CONTENTS
+				      | SEC_DATA));
+  unsigned align = (bfd_get_mach (ebfd) & bfd_mach_aarch64_ilp32) ? 2 : 3;
+  if (sec == NULL
+      || !bfd_set_section_alignment (sec, align))
+    info->callbacks->fatal (_("%P: failed to create %s\n"),
+			    NOTE_GNU_PROPERTY_SECTION_NAME);
+
+  elf_section_type (sec) = SHT_NOTE;
+}
+
+static const int GNU_PROPERTY_ISSUES_MAX = 20;
+
+/* Report a summary of the issues met during the merge of the GNU properties, if
+   the number of issues goes above GNU_PROPERTY_ISSUES_MAX.  */
+static void
+_bfd_aarch64_report_summary_merge_issues (struct bfd_link_info *info)
+{
+  const struct elf_aarch64_obj_tdata * tdata
+    = elf_aarch64_tdata (info->output_bfd);
+
+  if (tdata->n_bti_issues > GNU_PROPERTY_ISSUES_MAX
+      && tdata->sw_protections.bti_report != MARKING_NONE)
+    {
+      const char *msg
+	= (tdata->sw_protections.bti_report == MARKING_ERROR)
+	? _("%Xerror: found a total of %d inputs incompatible with "
+	    "BTI requirements.\n")
+	: _("warning: found a total of %d inputs incompatible with "
+	    "BTI requirements.\n");
+      info->callbacks->einfo (msg, tdata->n_bti_issues);
+    }
+
+  if (tdata->n_gcs_issues > GNU_PROPERTY_ISSUES_MAX
+      && tdata->sw_protections.gcs_report != MARKING_NONE)
+    {
+      const char *msg
+	= (tdata->sw_protections.gcs_report == MARKING_ERROR)
+	? _("%Xerror: found a total of %d inputs incompatible with "
+	    "GCS requirements.\n")
+	: _("warning: found a total of %d inputs incompatible with "
+	    "GCS requirements.\n");
+      info->callbacks->einfo (msg, tdata->n_gcs_issues);
+    }
+
+  if (tdata->n_gcs_dynamic_issues > GNU_PROPERTY_ISSUES_MAX
+      && tdata->sw_protections.gcs_report_dynamic != MARKING_NONE)
+    {
+      const char *msg
+	= (tdata->sw_protections.gcs_report_dynamic == MARKING_ERROR)
+	? _("%Xerror: found a total of %d dynamically-linked objects "
+	    "incompatible with GCS requirements.\n")
+	: _("warning: found a total of %d dynamically-linked objects "
+	    "incompatible with GCS requirements.\n");
+      info->callbacks->einfo (msg, tdata->n_gcs_dynamic_issues);
     }
+}
 
-  pbfd = _bfd_elf_link_setup_gnu_properties (info);
+/* Perform a look-up of a property in an unsorted list of properties.  This is
+   useful when the list of properties of an object has not been sorted yet.  */
+static uint32_t
+_bfd_aarch64_prop_linear_lookup (elf_property_list *properties,
+				 unsigned int pr_type)
+{
+  for (elf_property_list *p = properties; p != NULL; p = p->next)
+    if (p->property.pr_type == pr_type)
+      return p->property.u.number;
+  return 0;
+}
+
+/* Compare the GNU properties of the current dynamic object, with the ones of
+   the output BFD.  Today, we only care about GCS feature stored in
+   GNU_PROPERTY_AARCH64_FEATURE_1.  */
+static void
+_bfd_aarch64_compare_dynamic_obj_prop_against_outprop(
+  struct bfd_link_info *info,
+  const uint32_t outprop,
+  bfd *pbfd)
+{
+  if (!(outprop & GNU_PROPERTY_AARCH64_FEATURE_1_GCS))
+    return;
+
+  const uint32_t dyn_obj_aarch64_feature_prop =
+    _bfd_aarch64_prop_linear_lookup (elf_properties (pbfd),
+				     GNU_PROPERTY_AARCH64_FEATURE_1_AND);
+  if (!(dyn_obj_aarch64_feature_prop & GNU_PROPERTY_AARCH64_FEATURE_1_GCS))
+    _bfd_aarch64_elf_check_gcs_report (info, pbfd);
+}
+
+/* Check compatibility between the GNU properties of the ouput BFD and the
+   linked dynamic objects.  */
+static void
+_bfd_aarch64_elf_check_gnu_properties_linked_dynamic_objects (
+  struct bfd_link_info * info,
+  const uint32_t outprop)
+{
+  const struct elf_backend_data *bed = get_elf_backend_data (info->output_bfd);
+  const int elf_machine_code = bed->elf_machine_code;
+  const unsigned int elfclass = bed->s->elfclass;
+
+  for (bfd *pbfd = info->input_bfds; pbfd != NULL; pbfd = pbfd->link.next)
+    /* Ignore GNU properties from non-ELF objects or ELF objects with different
+       machine code.  */
+    if ((pbfd->flags & DYNAMIC) != 0
+	&& (bfd_get_flavour (pbfd) == bfd_target_elf_flavour)
+	&& (get_elf_backend_data (pbfd)->elf_machine_code == elf_machine_code)
+	&& (get_elf_backend_data (pbfd)->s->elfclass == elfclass))
+      _bfd_aarch64_compare_dynamic_obj_prop_against_outprop(info, outprop,
+	pbfd);
+}
 
-  if (bfd_link_relocatable (info))
-    return pbfd;
+/* Find the first input bfd with GNU property and merge it with GPROP.  If no
+   such input is found, add it to a new section at the last input.  Update
+   GPROP accordingly.  */
+bfd *
+_bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info)
+{
+  struct elf_aarch64_obj_tdata *tdata = elf_aarch64_tdata (info->output_bfd);
+  uint32_t outprop = tdata->gnu_property_aarch64_feature_1_and;
+
+  bfd_search_result_t res = bfd_linear_search_one_with_gnu_property (info);
+
+  /* If ebfd != NULL it is either an input with property note or the last input.
+     Either way if we have an output GNU property that was provided, we should
+     add it (by creating a section if needed).  */
+  if (res.pbfd != NULL)
+    {
+      /* If no GNU property note section was found, create one.
+
+	 Note: If there is no .gnu.note.property section, we might think that
+	 elf_properties (res.pbfd) is always NULL.  However, this is not always
+	 true.  In PR23900: old linkers were treating .note.gnu.property as a
+	 generic note section, so old objects might contain properties inside
+	 .note instead of .note.gnu.property. In this case, the section won't be
+	 detected but the properties are still parsed. Consequently,
+	 elf_properties (res.pbfd) is populated and different from NULL (see
+	 https://sourceware.org/bugzilla/show_bug.cgi?id=23900 for more
+	 details).  */
+      if (res.sec == NULL && elf_properties (res.pbfd) == NULL)
+	_bfd_aarch64_elf_create_gnu_property_section (info, res.pbfd);
+
+      /* Merge the found input property with output properties. Note: if no
+	 property was found, _bfd_elf_get_property will create one.  */
+      elf_property *prop =
+	_bfd_elf_get_property (res.pbfd,
+			       GNU_PROPERTY_AARCH64_FEATURE_1_AND,
+			       4);
+
+      /* Check for a feature mismatch and report issue (if any) before this
+	 information get lost as the value of ebfd will be overriden with
+	 outprop.  */
+      if ((outprop & GNU_PROPERTY_AARCH64_FEATURE_1_BTI)
+	   && !(prop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_BTI))
+	_bfd_aarch64_elf_check_bti_report (info, res.pbfd);
+
+      if (tdata->sw_protections.gcs_type == GCS_NEVER)
+	prop->u.number &= ~GNU_PROPERTY_AARCH64_FEATURE_1_GCS;
+      else if ((outprop & GNU_PROPERTY_AARCH64_FEATURE_1_GCS)
+	       && !(prop->u.number & GNU_PROPERTY_AARCH64_FEATURE_1_GCS))
+	_bfd_aarch64_elf_check_gcs_report (info, res.pbfd);
+
+      prop->u.number |= outprop;
+      if (prop->u.number == 0)
+	prop->pr_kind = property_remove;
+      else
+	prop->pr_kind = property_number;
+    }
+
+  /* Set up generic GNU properties, and merge them with the backend-specific
+     ones (if any). pbfd points to the first relocatable ELF input with
+     GNU properties (if found).  */
+  bfd *pbfd = _bfd_elf_link_setup_gnu_properties (info);
 
-  /* If pbfd has any GNU_PROPERTY_AARCH64_FEATURE_1_AND properties, update
-     gnu_prop accordingly.  */
   if (pbfd != NULL)
     {
       elf_property_list *p;
+      elf_property_list *plist = elf_properties (pbfd);
 
-      /* The property list is sorted in order of type.  */
-      for (p = elf_properties (pbfd); p; p = p->next)
-	{
-	  /* Check for all GNU_PROPERTY_AARCH64_FEATURE_1_AND.  */
-	  if (GNU_PROPERTY_AARCH64_FEATURE_1_AND == p->property.pr_type)
-	    {
-	      gnu_prop = (p->property.u.number
-			  & (GNU_PROPERTY_AARCH64_FEATURE_1_PAC
-			      | GNU_PROPERTY_AARCH64_FEATURE_1_BTI));
-	      break;
-	    }
-	  else if (GNU_PROPERTY_AARCH64_FEATURE_1_AND < p->property.pr_type)
-	    break;
-	}
+      /* If pbfd has any GNU_PROPERTY_AARCH64_FEATURE_1_AND properties, update
+	 outprop accordingly.  */
+      if ((p = _bfd_elf_find_property (plist,
+				       GNU_PROPERTY_AARCH64_FEATURE_1_AND, NULL))
+				       != NULL)
+        outprop = p->property.u.number
+		  & (GNU_PROPERTY_AARCH64_FEATURE_1_BTI
+		     | GNU_PROPERTY_AARCH64_FEATURE_1_PAC
+		     | GNU_PROPERTY_AARCH64_FEATURE_1_GCS);
     }
-  *gprop = gnu_prop;
+
+  tdata->gnu_property_aarch64_feature_1_and = outprop;
+
+  _bfd_aarch64_elf_check_gnu_properties_linked_dynamic_objects (info, outprop);
+
+  _bfd_aarch64_report_summary_merge_issues (info);
+
   return pbfd;
 }
 
@@ -814,7 +973,8 @@ _bfd_aarch64_elf_parse_gnu_properties (b
 	  return property_corrupt;
 	}
       prop = _bfd_elf_get_property (abfd, type, datasz);
-      /* Combine properties of the same type.  */
+      /* Merge AArch64 feature properties together if they are declared in
+	 different AARCH64_FEATURE_1_AND properties.  */
       prop->u.number |= bfd_h_get_32 (abfd, ptr);
       prop->pr_kind = property_number;
       break;
@@ -826,30 +986,43 @@ _bfd_aarch64_elf_parse_gnu_properties (b
   return property_number;
 }
 
-/* Merge AArch64 GNU property BPROP with APROP also accounting for PROP.
-   If APROP isn't NULL, merge it with BPROP and/or PROP.  Vice-versa if BROP
+/* Merge AArch64 GNU property BPROP with APROP also accounting for OUTPROP.
+   If APROP isn't NULL, merge it with BPROP and/or OUTPROP.  Vice-versa if BROP
    isn't NULL.  Return TRUE if there is any update to APROP or if BPROP should
    be merge with ABFD.  */
-bfd_boolean
+bool
 _bfd_aarch64_elf_merge_gnu_properties (struct bfd_link_info *info
 				       ATTRIBUTE_UNUSED,
 				       bfd *abfd ATTRIBUTE_UNUSED,
 				       elf_property *aprop,
 				       elf_property *bprop,
-				       uint32_t prop)
+				       uint32_t outprop)
 {
   unsigned int orig_number;
-  bfd_boolean updated = FALSE;
+  bool updated = false;
   unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type;
 
   switch (pr_type)
     {
     case GNU_PROPERTY_AARCH64_FEATURE_1_AND:
       {
+	aarch64_gcs_type gcs_type
+	  = elf_aarch64_tdata (info->output_bfd)->sw_protections.gcs_type;
+	/* OUTPROP does not contain GCS for GCS_NEVER. We only need to make sure
+	 that APROP does not contain GCS as well.
+	 Notes:
+	  - if BPROP contains GCS and APROP is not null, it is zeroed by the
+	    AND with APROP.
+	  - if BPROP contains GCS and APROP is null, it is overwritten with
+	    OUTPROP as the AND with APROP would have been equivalent to zeroing
+	    BPROP.  */
+	if (gcs_type == GCS_NEVER && aprop != NULL)
+	  aprop->u.number &= ~GNU_PROPERTY_AARCH64_FEATURE_1_GCS;
+
 	if (aprop != NULL && bprop != NULL)
 	  {
 	    orig_number = aprop->u.number;
-	    aprop->u.number = (orig_number & bprop->u.number) | prop;
+	    aprop->u.number = (orig_number & bprop->u.number) | outprop;
 	    updated = orig_number != aprop->u.number;
 	    /* Remove the property if all feature bits are cleared.  */
 	    if (aprop->u.number == 0)
@@ -857,26 +1030,26 @@ _bfd_aarch64_elf_merge_gnu_properties (s
 	    break;
 	  }
 	/* If either is NULL, the AND would be 0 so, if there is
-	   any PROP, asign it to the input that is not NULL.  */
-	if (prop)
+	   any OUTPROP, assign it to the input that is not NULL.  */
+	if (outprop)
 	  {
 	    if (aprop != NULL)
 	      {
 		orig_number = aprop->u.number;
-		aprop->u.number = prop;
+		aprop->u.number = outprop;
 		updated = orig_number != aprop->u.number;
 	      }
 	    else
 	      {
-		bprop->u.number = prop;
-		updated = TRUE;
+		bprop->u.number = outprop;
+		updated = true;
 	      }
 	  }
-	/* No PROP and BPROP is NULL, so remove APROP.  */
+	/* No OUTPROP and BPROP is NULL, so remove APROP.  */
 	else if (aprop != NULL)
 	  {
 	    aprop->pr_kind = property_remove;
-	    updated = TRUE;
+	    updated = true;
 	  }
       }
       break;
@@ -922,3 +1095,71 @@ _bfd_aarch64_elf_link_fixup_gnu_properti
 	}
     }
 }
+
+/* Check AArch64 BTI report.  */
+void
+_bfd_aarch64_elf_check_bti_report (struct bfd_link_info *info, bfd *ebfd)
+{
+  struct elf_aarch64_obj_tdata *tdata = elf_aarch64_tdata (info->output_bfd);
+
+  if (tdata->sw_protections.bti_report == MARKING_NONE)
+    return;
+
+  ++tdata->n_bti_issues;
+
+  if (tdata->n_bti_issues > GNU_PROPERTY_ISSUES_MAX)
+    return;
+
+  const char *msg
+    = (tdata->sw_protections.bti_report == MARKING_WARN)
+    ? _("%pB: warning: BTI is required by -z force-bti, but this input object "
+	"file lacks the necessary property note.\n")
+    : _("%X%pB: error: BTI is required by -z force-bti, but this input object "
+	"file lacks the necessary property note.\n");
+
+  info->callbacks->einfo (msg, ebfd);
+}
+
+void
+_bfd_aarch64_elf_check_gcs_report (struct bfd_link_info *info, bfd *ebfd)
+{
+  struct elf_aarch64_obj_tdata *tdata = elf_aarch64_tdata (info->output_bfd);
+  bool dynamic_obj = (ebfd->flags & DYNAMIC) != 0;
+
+  if (dynamic_obj)
+    {
+      if (tdata->sw_protections.gcs_report_dynamic == MARKING_NONE)
+	return;
+      ++tdata->n_gcs_dynamic_issues;
+      if (tdata->n_gcs_dynamic_issues > GNU_PROPERTY_ISSUES_MAX)
+	return;
+    }
+  else
+    {
+      if (tdata->sw_protections.gcs_report == MARKING_NONE)
+	return;
+      ++tdata->n_gcs_issues;
+      if (tdata->n_gcs_issues > GNU_PROPERTY_ISSUES_MAX)
+	return;
+    }
+
+  const char *msg;
+  if (dynamic_obj)
+    msg = (tdata->sw_protections.gcs_report_dynamic == MARKING_WARN)
+      ? _("%pB: warning: GCS is required by -z gcs, but this shared library "
+	  "lacks the necessary property note. The dynamic loader might not "
+	  "enable GCS or refuse to load the program unless all the shared "
+	  "library dependencies have the GCS marking.\n")
+      : _("%X%pB: error: GCS is required by -z gcs, but this shared library "
+	  "lacks the necessary property note. The dynamic loader might not "
+	  "enable GCS or refuse to load the program unless all the shared "
+	  "library dependencies have the GCS marking.\n");
+  else
+    msg = (tdata->sw_protections.gcs_report == MARKING_WARN)
+      ? _("%pB: warning: GCS is required by -z gcs, but this input object file "
+	  "lacks the necessary property note.\n")
+      : _("%X%pB: error: GCS is required by -z gcs, but this input object file "
+	  "lacks the necessary property note.\n");
+
+  info->callbacks->einfo (msg, ebfd);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-aarch64.h ./bfd/elfxx-aarch64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-aarch64.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-aarch64.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* AArch64-specific backend routines.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -34,27 +34,91 @@ extern void bfd_elf32_aarch64_init_maps
 typedef enum
 {
   PLT_NORMAL	= 0x0,  /* Normal plts.  */
-  PLT_BTI	= 0x1,  /* plts with bti.  */
+  PLT_BTI	= 0x1,  /* plts with BTI.  */
   PLT_PAC	= 0x2,  /* plts with pointer authentication.  */
   PLT_BTI_PAC	= PLT_BTI | PLT_PAC
 } aarch64_plt_type;
 
-/* To indicate if BTI is enabled with/without warning.  */
+/* Indicates whether the linker should generate warnings, errors, or nothing
+   when input objects are missing GNU feature property markings and the output
+   has the markings.  */
 typedef enum
 {
-  BTI_NONE	= 0,  /* BTI is not enabled.  */
-  BTI_WARN	= 1,  /* BTI is enabled with -z force-bti.  */
-} aarch64_enable_bti_type;
-
-/* A structure to encompass all information coming from BTI or PAC
-   related command line options.  This involves the "PLT_TYPE" to determine
-   which version of PLTs to pick and "BTI_TYPE" to determine if
-   BTI should be turned on with any warnings.   */
-typedef struct
+  MARKING_NONE	= 0,  /* Does not emit any warning/error messages.  */
+  MARKING_WARN	= 1,  /* Emit warning when the input objects are missing GNU
+			 feature property markings, and the output has the
+			 markings.  */
+  MARKING_ERROR	= 2,  /* Emit error when the input objects are missing GNU
+			 feature property markings, and the output has the
+			 markings.  */
+  MARKING_UNSET = 3,  /* The only purpose of this value is to simulate an
+			 optional to detect when the value was not initialized
+			 from the command line.  */
+} aarch64_feature_marking_report;
+
+/* To indicate whether GNU_PROPERTY_AARCH64_FEATURE_1_GCS bit is
+   enabled/disabled on the output when -z gcs linker
+   command line option is passed.  */
+typedef enum
+{
+  GCS_NEVER	= 0,  /* gcs is disabled on output.  */
+  GCS_IMPLICIT  = 1,  /* gcs is deduced from input object.  */
+  GCS_ALWAYS	= 2,  /* gsc is enabled on output.  */
+} aarch64_gcs_type;
+
+/* A structure to encompass all information about software protections coming
+   from BTI, PAC and GCS related command line options.  */
+struct aarch64_protection_opts
 {
+  /* PLT type to use depending on the selected software proctections.  */
   aarch64_plt_type plt_type;
-  aarch64_enable_bti_type bti_type;
-} aarch64_bti_pac_info;
+
+  /* Report level for BTI issues.  */
+  aarch64_feature_marking_report bti_report;
+
+  /* Look-up mode for GCS property.  */
+  aarch64_gcs_type gcs_type;
+
+  /* Report level for GCS issues.  */
+  aarch64_feature_marking_report gcs_report;
+
+  /* Report level for GCS issues with dynamic inputs.  */
+  aarch64_feature_marking_report gcs_report_dynamic;
+};
+typedef struct aarch64_protection_opts aarch64_protection_opts;
+
+struct elf_aarch64_local_symbol;
+struct elf_aarch64_obj_tdata
+{
+  struct elf_obj_tdata root;
+
+  /* local symbol descriptors */
+  struct elf_aarch64_local_symbol *locals;
+
+  /* Zero to warn when linking objects with incompatible enum sizes.  */
+  int no_enum_size_warning;
+
+  /* Zero to warn when linking objects with incompatible wchar_t sizes.  */
+  int no_wchar_size_warning;
+
+  /* All GNU_PROPERTY_AARCH64_FEATURE_1_AND properties.  */
+  uint32_t gnu_property_aarch64_feature_1_and;
+
+  /* Software protections options.  */
+  struct aarch64_protection_opts sw_protections;
+
+  /* Number of reported BTI issues.  */
+  int n_bti_issues;
+
+  /* Number of reported GCS issues for non-dynamic objects.  */
+  int n_gcs_issues;
+
+  /* Number of reported GCS issues for dynamic objects.  */
+  int n_gcs_dynamic_issues;
+};
+
+#define elf_aarch64_tdata(bfd)				\
+  ((struct elf_aarch64_obj_tdata *) (bfd)->tdata.any)
 
 /* An enum to define what kind of erratum fixes we should apply.  This gives the
    user a bit more control over the sequences we generate.  */
@@ -65,35 +129,71 @@ typedef enum
   ERRAT_ADRP  = (1 << 2),  /* Erratum workarounds using ADRP are allowed.  */
 } erratum_84319_opts;
 
+/* An enum to define the various modes of MTE operation.
+   At this time, except AARCH64_MEMTAG_MODE_NONE, the enumerator constants are
+   the same as specified in the Memtag ABI Extension to ELF for the Arm 64-bit
+   Architecture (AArch64) document (the intent being that this keeps the
+   emission of the associated dynamic tag simple).*/
+typedef enum
+{
+  AARCH64_MEMTAG_MODE_SYNC    = 0,
+  AARCH64_MEMTAG_MODE_ASYNC   = 1,
+  AARCH64_MEMTAG_MODE_NONE    = 2,
+} aarch64_memtag_mode_type;
+
+/* A structure to encompass all information about memtag feature related
+   command line options.  */
+struct aarch64_memtag_opts
+{
+  /* Mode of MTE operation.  */
+  aarch64_memtag_mode_type memtag_mode;
+
+  /* Whether stack accesses use MTE insns.  */
+  unsigned int memtag_stack;
+};
+
+typedef struct aarch64_memtag_opts aarch64_memtag_opts;
+
 extern void bfd_elf64_aarch64_set_options
   (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int,
-   aarch64_bti_pac_info);
+   const aarch64_protection_opts *, const aarch64_memtag_opts *);
 
 extern void bfd_elf32_aarch64_set_options
   (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int,
-   aarch64_bti_pac_info);
+   const aarch64_protection_opts *, const aarch64_memtag_opts *);
 
 /* AArch64 stub generation support for ELF64.  Called from the linker.  */
 extern int elf64_aarch64_setup_section_lists
   (bfd *, struct bfd_link_info *);
 extern void elf64_aarch64_next_input_section
   (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf64_aarch64_size_stubs
+extern bool elf64_aarch64_size_stubs
   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
    struct bfd_section * (*) (const char *, struct bfd_section *),
    void (*) (void));
-extern bfd_boolean elf64_aarch64_build_stubs
+extern bool elf64_aarch64_build_stubs
   (struct bfd_link_info *);
 /* AArch64 stub generation support for ELF32.  Called from the linker.  */
 extern int elf32_aarch64_setup_section_lists
   (bfd *, struct bfd_link_info *);
 extern void elf32_aarch64_next_input_section
   (struct bfd_link_info *, struct bfd_section *);
-extern bfd_boolean elf32_aarch64_size_stubs
+extern bool elf32_aarch64_size_stubs
   (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
    struct bfd_section * (*) (const char *, struct bfd_section *),
    void (*) (void));
-extern bfd_boolean elf32_aarch64_build_stubs
+extern bool elf32_aarch64_build_stubs
+  (struct bfd_link_info *);
+
+/* AArch64 relative relocation packing support for ELF64.  */
+extern bool elf64_aarch64_size_relative_relocs
+  (struct bfd_link_info *, bool *);
+extern bool elf64_aarch64_finish_relative_relocs
+  (struct bfd_link_info *);
+/* AArch64 relative relocation packing support for ELF32.  */
+extern bool elf32_aarch64_size_relative_relocs
+  (struct bfd_link_info *, bool *);
+extern bool elf32_aarch64_finish_relative_relocs
   (struct bfd_link_info *);
 
 /* Take the PAGE component of an address or offset.  */
@@ -119,12 +219,12 @@ _bfd_aarch64_elf_put_addend (bfd *, bfd_
 
 extern bfd_vma
 _bfd_aarch64_elf_resolve_relocation (bfd *, bfd_reloc_code_real_type, bfd_vma,
-				     bfd_vma, bfd_vma, bfd_boolean);
+				     bfd_vma, bfd_vma, bool);
 
-extern bfd_boolean
+extern bool
 _bfd_aarch64_elf_grok_prstatus (bfd *, Elf_Internal_Note *);
 
-extern bfd_boolean
+extern bool
 _bfd_aarch64_elf_grok_psinfo (bfd *, Elf_Internal_Note *);
 
 extern char *
@@ -135,19 +235,24 @@ _bfd_aarch64_elf_write_core_note (bfd *,
 #define elf_backend_write_core_note	_bfd_aarch64_elf_write_core_note
 
 extern bfd *
-_bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *,
-					    uint32_t *);
+_bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *);
 
 extern enum elf_property_kind
 _bfd_aarch64_elf_parse_gnu_properties (bfd *, unsigned int,
 				       bfd_byte *, unsigned int);
 
-extern bfd_boolean
+extern bool
 _bfd_aarch64_elf_merge_gnu_properties (struct bfd_link_info *, bfd *,
 				       elf_property *, elf_property *,
 				       uint32_t);
 
 extern void
+_bfd_aarch64_elf_check_bti_report (struct bfd_link_info *, bfd *);
+
+extern void
+_bfd_aarch64_elf_check_gcs_report (struct bfd_link_info *, bfd *);
+
+extern void
 _bfd_aarch64_elf_link_fixup_gnu_properties (struct bfd_link_info *,
 					    elf_property_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.20200303/bfd/elfxx-ia64.c ./bfd/elfxx-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-ia64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-ia64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* IA-64 support for 64-bit ELF
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -66,7 +66,7 @@
 static bfd_reloc_status_type
 ia64_elf_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc,
 		asymbol *sym ATTRIBUTE_UNUSED,
-		PTR data ATTRIBUTE_UNUSED, asection *input_section,
+		void *data ATTRIBUTE_UNUSED, asection *input_section,
 		bfd *output_bfd, char **error_message)
 {
   if (output_bfd)
@@ -84,108 +84,108 @@ ia64_elf_reloc (bfd *abfd ATTRIBUTE_UNUS
 
 #define IA64_HOWTO(TYPE, NAME, SIZE, PCREL, IN)			\
   HOWTO (TYPE, 0, SIZE, 0, PCREL, 0, complain_overflow_signed,	\
-	 ia64_elf_reloc, NAME, FALSE, 0, -1, IN)
+	 ia64_elf_reloc, NAME, false, 0, -1, IN)
 
 /* This table has to be sorted according to increasing number of the
    TYPE field.  */
 static reloc_howto_type ia64_howto_table[] =
   {
-    IA64_HOWTO (R_IA64_NONE,	    "NONE",	   3, FALSE, TRUE),
+    IA64_HOWTO (R_IA64_NONE,	    "NONE",	   0, false, true),
 
-    IA64_HOWTO (R_IA64_IMM14,	    "IMM14",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_IMM22,	    "IMM22",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_IMM64,	    "IMM64",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_DIR32MSB,    "DIR32MSB",	   2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_DIR32LSB,    "DIR32LSB",	   2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_DIR64MSB,    "DIR64MSB",	   4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_DIR64LSB,    "DIR64LSB",	   4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_GPREL22,	    "GPREL22",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_GPREL64I,    "GPREL64I",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_GPREL32MSB,  "GPREL32MSB",  2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_GPREL32LSB,  "GPREL32LSB",  2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_GPREL64MSB,  "GPREL64MSB",  4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_GPREL64LSB,  "GPREL64LSB",  4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_LTOFF22,	    "LTOFF22",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTOFF64I,    "LTOFF64I",	   0, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_PLTOFF22,    "PLTOFF22",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_PLTOFF64I,   "PLTOFF64I",   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_PLTOFF64MSB, "PLTOFF64MSB", 4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_PLTOFF64LSB, "PLTOFF64LSB", 4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_FPTR64I,	    "FPTR64I",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_FPTR32MSB,   "FPTR32MSB",   2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_FPTR32LSB,   "FPTR32LSB",   2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_FPTR64MSB,   "FPTR64MSB",   4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_FPTR64LSB,   "FPTR64LSB",   4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_PCREL60B,    "PCREL60B",	   0, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL21B,    "PCREL21B",	   0, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL21M,    "PCREL21M",	   0, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL21F,    "PCREL21F",	   0, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL32MSB,  "PCREL32MSB",  2, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL32LSB,  "PCREL32LSB",  2, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL64MSB,  "PCREL64MSB",  4, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL64LSB,  "PCREL64LSB",  4, TRUE, TRUE),
-
-    IA64_HOWTO (R_IA64_LTOFF_FPTR22, "LTOFF_FPTR22", 0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTOFF_FPTR64I, "LTOFF_FPTR64I", 0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTOFF_FPTR32MSB, "LTOFF_FPTR32MSB", 2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTOFF_FPTR32LSB, "LTOFF_FPTR32LSB", 2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTOFF_FPTR64MSB, "LTOFF_FPTR64MSB", 4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTOFF_FPTR64LSB, "LTOFF_FPTR64LSB", 4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_SEGREL32MSB, "SEGREL32MSB", 2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_SEGREL32LSB, "SEGREL32LSB", 2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_SEGREL64MSB, "SEGREL64MSB", 4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_SEGREL64LSB, "SEGREL64LSB", 4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_SECREL32MSB, "SECREL32MSB", 2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_SECREL32LSB, "SECREL32LSB", 2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_SECREL64MSB, "SECREL64MSB", 4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_SECREL64LSB, "SECREL64LSB", 4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_REL32MSB,    "REL32MSB",	   2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_REL32LSB,    "REL32LSB",	   2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_REL64MSB,    "REL64MSB",	   4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_REL64LSB,    "REL64LSB",	   4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_LTV32MSB,    "LTV32MSB",	   2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTV32LSB,    "LTV32LSB",	   2, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTV64MSB,    "LTV64MSB",	   4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTV64LSB,    "LTV64LSB",	   4, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_PCREL21BI,   "PCREL21BI",   0, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL22,     "PCREL22",     0, TRUE, TRUE),
-    IA64_HOWTO (R_IA64_PCREL64I,    "PCREL64I",    0, TRUE, TRUE),
-
-    IA64_HOWTO (R_IA64_IPLTMSB,	    "IPLTMSB",	   4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_IPLTLSB,	    "IPLTLSB",	   4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_COPY,	    "COPY",	   4, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LTOFF22X,    "LTOFF22X",	   0, FALSE, TRUE),
-    IA64_HOWTO (R_IA64_LDXMOV,	    "LDXMOV",	   0, FALSE, TRUE),
-
-    IA64_HOWTO (R_IA64_TPREL14,	    "TPREL14",	   0, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_TPREL22,	    "TPREL22",	   0, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_TPREL64I,    "TPREL64I",	   0, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_TPREL64MSB,  "TPREL64MSB",  4, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_TPREL64LSB,  "TPREL64LSB",  4, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_LTOFF_TPREL22, "LTOFF_TPREL22",  0, FALSE, FALSE),
-
-    IA64_HOWTO (R_IA64_DTPMOD64MSB, "DTPMOD64MSB",  4, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_DTPMOD64LSB, "DTPMOD64LSB",  4, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_LTOFF_DTPMOD22, "LTOFF_DTPMOD22", 0, FALSE, FALSE),
-
-    IA64_HOWTO (R_IA64_DTPREL14,    "DTPREL14",	   0, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_DTPREL22,    "DTPREL22",	   0, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_DTPREL64I,   "DTPREL64I",   0, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_DTPREL32MSB, "DTPREL32MSB", 2, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_DTPREL32LSB, "DTPREL32LSB", 2, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_DTPREL64MSB, "DTPREL64MSB", 4, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_DTPREL64LSB, "DTPREL64LSB", 4, FALSE, FALSE),
-    IA64_HOWTO (R_IA64_LTOFF_DTPREL22, "LTOFF_DTPREL22", 0, FALSE, FALSE),
+    IA64_HOWTO (R_IA64_IMM14,	    "IMM14",	   1, false, true),
+    IA64_HOWTO (R_IA64_IMM22,	    "IMM22",	   1, false, true),
+    IA64_HOWTO (R_IA64_IMM64,	    "IMM64",	   1, false, true),
+    IA64_HOWTO (R_IA64_DIR32MSB,    "DIR32MSB",	   4, false, true),
+    IA64_HOWTO (R_IA64_DIR32LSB,    "DIR32LSB",	   4, false, true),
+    IA64_HOWTO (R_IA64_DIR64MSB,    "DIR64MSB",	   8, false, true),
+    IA64_HOWTO (R_IA64_DIR64LSB,    "DIR64LSB",	   8, false, true),
+
+    IA64_HOWTO (R_IA64_GPREL22,	    "GPREL22",	   1, false, true),
+    IA64_HOWTO (R_IA64_GPREL64I,    "GPREL64I",	   1, false, true),
+    IA64_HOWTO (R_IA64_GPREL32MSB,  "GPREL32MSB",  4, false, true),
+    IA64_HOWTO (R_IA64_GPREL32LSB,  "GPREL32LSB",  4, false, true),
+    IA64_HOWTO (R_IA64_GPREL64MSB,  "GPREL64MSB",  8, false, true),
+    IA64_HOWTO (R_IA64_GPREL64LSB,  "GPREL64LSB",  8, false, true),
+
+    IA64_HOWTO (R_IA64_LTOFF22,	    "LTOFF22",	   1, false, true),
+    IA64_HOWTO (R_IA64_LTOFF64I,    "LTOFF64I",	   1, false, true),
+
+    IA64_HOWTO (R_IA64_PLTOFF22,    "PLTOFF22",	   1, false, true),
+    IA64_HOWTO (R_IA64_PLTOFF64I,   "PLTOFF64I",   1, false, true),
+    IA64_HOWTO (R_IA64_PLTOFF64MSB, "PLTOFF64MSB", 8, false, true),
+    IA64_HOWTO (R_IA64_PLTOFF64LSB, "PLTOFF64LSB", 8, false, true),
+
+    IA64_HOWTO (R_IA64_FPTR64I,	    "FPTR64I",	   1, false, true),
+    IA64_HOWTO (R_IA64_FPTR32MSB,   "FPTR32MSB",   4, false, true),
+    IA64_HOWTO (R_IA64_FPTR32LSB,   "FPTR32LSB",   4, false, true),
+    IA64_HOWTO (R_IA64_FPTR64MSB,   "FPTR64MSB",   8, false, true),
+    IA64_HOWTO (R_IA64_FPTR64LSB,   "FPTR64LSB",   8, false, true),
+
+    IA64_HOWTO (R_IA64_PCREL60B,    "PCREL60B",	   1, true, true),
+    IA64_HOWTO (R_IA64_PCREL21B,    "PCREL21B",	   1, true, true),
+    IA64_HOWTO (R_IA64_PCREL21M,    "PCREL21M",	   1, true, true),
+    IA64_HOWTO (R_IA64_PCREL21F,    "PCREL21F",	   1, true, true),
+    IA64_HOWTO (R_IA64_PCREL32MSB,  "PCREL32MSB",  4, true, true),
+    IA64_HOWTO (R_IA64_PCREL32LSB,  "PCREL32LSB",  4, true, true),
+    IA64_HOWTO (R_IA64_PCREL64MSB,  "PCREL64MSB",  8, true, true),
+    IA64_HOWTO (R_IA64_PCREL64LSB,  "PCREL64LSB",  8, true, true),
+
+    IA64_HOWTO (R_IA64_LTOFF_FPTR22, "LTOFF_FPTR22", 1, false, true),
+    IA64_HOWTO (R_IA64_LTOFF_FPTR64I, "LTOFF_FPTR64I", 1, false, true),
+    IA64_HOWTO (R_IA64_LTOFF_FPTR32MSB, "LTOFF_FPTR32MSB", 4, false, true),
+    IA64_HOWTO (R_IA64_LTOFF_FPTR32LSB, "LTOFF_FPTR32LSB", 4, false, true),
+    IA64_HOWTO (R_IA64_LTOFF_FPTR64MSB, "LTOFF_FPTR64MSB", 8, false, true),
+    IA64_HOWTO (R_IA64_LTOFF_FPTR64LSB, "LTOFF_FPTR64LSB", 8, false, true),
+
+    IA64_HOWTO (R_IA64_SEGREL32MSB, "SEGREL32MSB", 4, false, true),
+    IA64_HOWTO (R_IA64_SEGREL32LSB, "SEGREL32LSB", 4, false, true),
+    IA64_HOWTO (R_IA64_SEGREL64MSB, "SEGREL64MSB", 8, false, true),
+    IA64_HOWTO (R_IA64_SEGREL64LSB, "SEGREL64LSB", 8, false, true),
+
+    IA64_HOWTO (R_IA64_SECREL32MSB, "SECREL32MSB", 4, false, true),
+    IA64_HOWTO (R_IA64_SECREL32LSB, "SECREL32LSB", 4, false, true),
+    IA64_HOWTO (R_IA64_SECREL64MSB, "SECREL64MSB", 8, false, true),
+    IA64_HOWTO (R_IA64_SECREL64LSB, "SECREL64LSB", 8, false, true),
+
+    IA64_HOWTO (R_IA64_REL32MSB,    "REL32MSB",	   4, false, true),
+    IA64_HOWTO (R_IA64_REL32LSB,    "REL32LSB",	   4, false, true),
+    IA64_HOWTO (R_IA64_REL64MSB,    "REL64MSB",	   8, false, true),
+    IA64_HOWTO (R_IA64_REL64LSB,    "REL64LSB",	   8, false, true),
+
+    IA64_HOWTO (R_IA64_LTV32MSB,    "LTV32MSB",	   4, false, true),
+    IA64_HOWTO (R_IA64_LTV32LSB,    "LTV32LSB",	   4, false, true),
+    IA64_HOWTO (R_IA64_LTV64MSB,    "LTV64MSB",	   8, false, true),
+    IA64_HOWTO (R_IA64_LTV64LSB,    "LTV64LSB",	   8, false, true),
+
+    IA64_HOWTO (R_IA64_PCREL21BI,   "PCREL21BI",   1, true, true),
+    IA64_HOWTO (R_IA64_PCREL22,     "PCREL22",     1, true, true),
+    IA64_HOWTO (R_IA64_PCREL64I,    "PCREL64I",    1, true, true),
+
+    IA64_HOWTO (R_IA64_IPLTMSB,	    "IPLTMSB",	   8, false, true),
+    IA64_HOWTO (R_IA64_IPLTLSB,	    "IPLTLSB",	   8, false, true),
+    IA64_HOWTO (R_IA64_COPY,	    "COPY",	   8, false, true),
+    IA64_HOWTO (R_IA64_LTOFF22X,    "LTOFF22X",	   1, false, true),
+    IA64_HOWTO (R_IA64_LDXMOV,	    "LDXMOV",	   1, false, true),
+
+    IA64_HOWTO (R_IA64_TPREL14,	    "TPREL14",	   1, false, false),
+    IA64_HOWTO (R_IA64_TPREL22,	    "TPREL22",	   1, false, false),
+    IA64_HOWTO (R_IA64_TPREL64I,    "TPREL64I",	   1, false, false),
+    IA64_HOWTO (R_IA64_TPREL64MSB,  "TPREL64MSB",  8, false, false),
+    IA64_HOWTO (R_IA64_TPREL64LSB,  "TPREL64LSB",  8, false, false),
+    IA64_HOWTO (R_IA64_LTOFF_TPREL22, "LTOFF_TPREL22",  1, false, false),
+
+    IA64_HOWTO (R_IA64_DTPMOD64MSB, "DTPMOD64MSB",  8, false, false),
+    IA64_HOWTO (R_IA64_DTPMOD64LSB, "DTPMOD64LSB",  8, false, false),
+    IA64_HOWTO (R_IA64_LTOFF_DTPMOD22, "LTOFF_DTPMOD22", 1, false, false),
+
+    IA64_HOWTO (R_IA64_DTPREL14,    "DTPREL14",	   1, false, false),
+    IA64_HOWTO (R_IA64_DTPREL22,    "DTPREL22",	   1, false, false),
+    IA64_HOWTO (R_IA64_DTPREL64I,   "DTPREL64I",   1, false, false),
+    IA64_HOWTO (R_IA64_DTPREL32MSB, "DTPREL32MSB", 4, false, false),
+    IA64_HOWTO (R_IA64_DTPREL32LSB, "DTPREL32LSB", 4, false, false),
+    IA64_HOWTO (R_IA64_DTPREL64MSB, "DTPREL64MSB", 8, false, false),
+    IA64_HOWTO (R_IA64_DTPREL64LSB, "DTPREL64LSB", 8, false, false),
+    IA64_HOWTO (R_IA64_LTOFF_DTPREL22, "LTOFF_DTPREL22", 1, false, false),
   };
 
 static unsigned char elf_code_to_howto_index[R_IA64_MAX_RELOC_CODE + 1];
@@ -195,12 +195,12 @@ static unsigned char elf_code_to_howto_i
 reloc_howto_type *
 ia64_elf_lookup_howto (unsigned int rtype)
 {
-  static bfd_boolean inited = FALSE;
+  static bool inited = false;
   int i;
 
   if (!inited)
     {
-      inited = TRUE;
+      inited = true;
 
       memset (elf_code_to_howto_index, 0xff, sizeof (elf_code_to_howto_index));
       for (i = 0; i < NELEMS (ia64_howto_table); ++i)
@@ -380,7 +380,7 @@ ia64_elf_reloc_name_lookup (bfd *abfd AT
 #define IS_BR_CALL(i) \
   (((i) & OPCODE_BITS) == (0x5LL << OPCODE_SHIFT))
 
-bfd_boolean
+bool
 ia64_elf_relax_br (bfd_byte *contents, bfd_vma off)
 {
   unsigned int template_val, mlx;
@@ -407,7 +407,7 @@ ia64_elf_relax_br (bfd_byte *contents, b
       /* Check if slot 1 and slot 2 are NOPs. Possible template is
 	 BBB.  We only need to check nop.b.  */
       if (!(IS_NOP_B (s1) && IS_NOP_B (s2)))
-	return FALSE;
+	return false;
       br_code = s0;
       break;
     case 1:
@@ -418,7 +418,7 @@ ia64_elf_relax_br (bfd_byte *contents, b
 	    || (template_val == 0x16			/* BBB */
 		&& IS_NOP_B (s0)
 		&& IS_NOP_B (s2))))
-	return FALSE;
+	return false;
       br_code = s1;
       break;
     case 2:
@@ -435,7 +435,7 @@ ia64_elf_relax_br (bfd_byte *contents, b
 		&& IS_NOP_M (s1))
 	    || (template_val == 0x1c			/* MFB */
 		&& IS_NOP_F (s1))))
-	return FALSE;
+	return false;
       br_code = s2;
       break;
     default:
@@ -445,7 +445,7 @@ ia64_elf_relax_br (bfd_byte *contents, b
 
   /* We can turn br.cond/br.call into brl.cond/brl.call.  */
   if (!(IS_BR_COND (br_code) || IS_BR_CALL (br_code)))
-    return FALSE;
+    return false;
 
   /* Turn br into brl by setting bit 40.  */
   br_code |= 0x1LL << 40;
@@ -480,7 +480,7 @@ ia64_elf_relax_br (bfd_byte *contents, b
 
   bfd_putl64 (t0, hit_addr);
   bfd_putl64 (t1, hit_addr + 8);
-  return TRUE;
+  return true;
 }
 
 void
@@ -555,11 +555,7 @@ ia64_elf_install_value (bfd_byte *hit_ad
   enum ia64_opnd opnd;
   const char *err;
   size_t size = 8;
-#ifdef BFD_HOST_U_64_BIT
-  BFD_HOST_U_64_BIT val = (BFD_HOST_U_64_BIT) v;
-#else
-  bfd_vma val = v;
-#endif
+  uint64_t val = v;
 
   opnd = IA64_OPND_NIL;
   switch (r_type)
@@ -685,7 +681,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 +710,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 +740,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.20200303/bfd/elfxx-ia64.h ./bfd/elfxx-ia64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-ia64.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-ia64.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* IA-64 support for 64-bit ELF
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
+   Copyright (C) 1998-2025 Free Software Foundation, Inc.
    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -25,7 +25,7 @@ reloc_howto_type *ia64_elf_reloc_name_lo
 
 reloc_howto_type *ia64_elf_lookup_howto (unsigned int rtype);
 
-bfd_boolean ia64_elf_relax_br (bfd_byte *contents, bfd_vma off);
+bool ia64_elf_relax_br (bfd_byte *contents, bfd_vma off);
 void ia64_elf_relax_brl (bfd_byte *contents, bfd_vma off);
 void ia64_elf_relax_ldxmov (bfd_byte *contents, bfd_vma off);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-kvx.c ./bfd/elfxx-kvx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-kvx.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elfxx-kvx.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,211 @@
+/* KVX-specific support for ELF.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   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; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "elfxx-kvx.h"
+#include <stdarg.h>
+#include <string.h>
+
+/* Return non-zero if the indicated VALUE has overflowed the maximum
+   range expressible by a unsigned number with the indicated number of
+   BITS.  */
+
+static bfd_reloc_status_type
+kvx_unsigned_overflow (bfd_vma value, unsigned int bits)
+{
+  bfd_vma lim;
+  if (bits >= sizeof (bfd_vma) * 8)
+    return bfd_reloc_ok;
+  lim = (bfd_vma) 1 << bits;
+  if (value >= lim)
+    return bfd_reloc_overflow;
+  return bfd_reloc_ok;
+}
+
+/* Return non-zero if the indicated VALUE has overflowed the maximum
+   range expressible by an signed number with the indicated number of
+   BITS.  */
+
+static bfd_reloc_status_type
+kvx_signed_overflow (bfd_vma value, unsigned int bits)
+{
+  bfd_vma lim;
+
+  if (bits >= sizeof (bfd_vma) * 8)
+    return bfd_reloc_ok;
+  lim = (bfd_vma) 1 << (bits - 1);
+  if (value + lim >= lim * 2)
+    return bfd_reloc_overflow;
+  return bfd_reloc_ok;
+}
+
+/* Insert the addend/value into the instruction or data object being
+   relocated.  */
+bfd_reloc_status_type
+_bfd_kvx_elf_put_addend (bfd *abfd,
+			 bfd_byte *address,
+			 bfd_reloc_code_real_type r_type ATTRIBUTE_UNUSED,
+			 reloc_howto_type *howto,
+			 bfd_signed_vma addend)
+{
+  bfd_reloc_status_type status = bfd_reloc_ok;
+  bfd_vma contents;
+  int size;
+
+  size = bfd_get_reloc_size (howto);
+  switch (size)
+    {
+    case 2:
+      contents = bfd_get_16 (abfd, address);
+      break;
+    case 4:
+      if (howto->src_mask != 0xffffffff)
+	/* Must be 32-bit instruction, always little-endian.  */
+	contents = bfd_getl32 (address);
+      else
+	/* Must be 32-bit data (endianness dependent).  */
+	contents = bfd_get_32 (abfd, address);
+      break;
+    case 8:
+      contents = bfd_get_64 (abfd, address);
+      break;
+    default:
+      abort ();
+    }
+
+  switch (howto->complain_on_overflow)
+    {
+    case complain_overflow_dont:
+      break;
+    case complain_overflow_signed:
+      status = kvx_signed_overflow (addend,
+				    howto->bitsize + howto->rightshift);
+      break;
+    case complain_overflow_unsigned:
+      status = kvx_unsigned_overflow (addend,
+				      howto->bitsize + howto->rightshift);
+      break;
+    case complain_overflow_bitfield:
+    default:
+      abort ();
+    }
+
+  addend >>= howto->rightshift;
+
+  /* FIXME KVX : AARCH64 is "redoing" what the link_relocate bfd
+   * function does ie. extract bitfields and apply then to the
+   * existing content (insn) (howto's job) Not sure exactly
+   * why. Maybe because we need this even when not applying reloc
+   * against a input_bfd (eg. when doing PLT).  On KVX, we have not
+   * reached a point where we would need to write similar
+   * functions for each insn. So we'll simply enrich the default
+   * case for handling a bit more than "right aligned bitfields"
+   * 
+   * Beware that this won't be able to apply generic howto !
+   */
+
+  /* if (howto->dst_mask & (howto->dst_mask + 1)) */
+  /* 	return bfd_reloc_notsupported; */
+  addend <<= howto->bitpos;
+  contents = ((contents & ~howto->dst_mask) | (addend & howto->dst_mask));
+
+  switch (size)
+    {
+    case 2:
+      bfd_put_16 (abfd, contents, address);
+      break;
+    case 4:
+      if (howto->dst_mask != 0xffffffff)
+	/* must be 32-bit instruction, always little-endian */
+	bfd_putl32 (contents, address);
+      else
+	/* must be 32-bit data (endianness dependent) */
+	bfd_put_32 (abfd, contents, address);
+      break;
+    case 8:
+      bfd_put_64 (abfd, contents, address);
+      break;
+    default:
+      abort ();
+    }
+
+  return status;
+}
+
+bool
+_bfd_kvx_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note)
+{
+  int offset;
+  size_t size;
+
+  switch (note->descsz)
+    {
+    case 680: /* sizeof(struct elf_prstatus) on Linux/kvx.  */
+      /* pr_cursig */
+      elf_tdata (abfd)->core->signal = bfd_get_16 (abfd, note->descdata + 12);
+
+      /* pr_pid */
+      elf_tdata (abfd)->core->lwpid = bfd_get_32 (abfd, note->descdata + 32);
+
+      /* pr_reg */
+      offset = 112;
+      size = 560;
+      break;
+
+    default:
+      return false;
+    }
+
+  /* Make a ".reg/999" section.  */
+  return _bfd_elfcore_make_pseudosection (abfd, ".reg", size,
+					  note->descpos + offset);
+}
+
+bool
+_bfd_kvx_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note)
+{
+  switch (note->descsz)
+    {
+    case 136: /* This is sizeof(struct elf_prpsinfo) on Linux/kvx.  */
+      elf_tdata (abfd)->core->pid = bfd_get_32 (abfd, note->descdata + 24);
+      elf_tdata (abfd)->core->program
+	= _bfd_elfcore_strndup (abfd, note->descdata + 40, 16);
+      elf_tdata (abfd)->core->command
+	= _bfd_elfcore_strndup (abfd, note->descdata + 56, 80);
+      break;
+
+    default:
+      return false;
+    }
+
+  /* Note that for some reason, a spurious space is tacked
+     onto the end of the args in some (at least one anyway)
+     implementations, so strip it off if it exists.  */
+
+  {
+    char *command = elf_tdata (abfd)->core->command;
+    int n = strlen (command);
+
+    if (n > 0 && command[n - 1] == ' ')
+      command[n - 1] = 0;
+  }
+
+  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.20200303/bfd/elfxx-kvx.h ./bfd/elfxx-kvx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-kvx.h	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elfxx-kvx.h	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,66 @@
+/* KVX-specific backend routines.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   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; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "bfd.h"
+#include "elf-bfd.h"
+#include "stdint.h"
+
+
+/* KVX stub generation support for ELF64.  Called from the linker.  */
+extern int elf64_kvx_setup_section_lists
+  (bfd *, struct bfd_link_info *);
+extern void elf64_kvx_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern bool elf64_kvx_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section * (*) (const char *, struct bfd_section *),
+   void (*) (void));
+extern bool elf64_kvx_build_stubs
+  (struct bfd_link_info *);
+/* Kvx stub generation support for ELF32.  Called from the linker.  */
+extern int elf32_kvx_setup_section_lists
+  (bfd *, struct bfd_link_info *);
+extern void elf32_kvx_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern bool elf32_kvx_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section * (*) (const char *, struct bfd_section *),
+   void (*) (void));
+extern bool elf32_kvx_build_stubs
+  (struct bfd_link_info *);
+
+
+extern bfd_reloc_status_type
+_bfd_kvx_elf_put_addend (bfd *, bfd_byte *, bfd_reloc_code_real_type,
+			     reloc_howto_type *, bfd_signed_vma);
+
+bool
+kvx_elf32_init_stub_bfd (struct bfd_link_info *info,
+			bfd *stub_bfd);
+bool
+kvx_elf64_init_stub_bfd (struct bfd_link_info *info,
+			bfd *stub_bfd);
+
+bool _bfd_kvx_elf_grok_prstatus (bfd *abfd, Elf_Internal_Note *note);
+
+bool _bfd_kvx_elf_grok_psinfo (bfd *abfd, Elf_Internal_Note *note);
+
+#define elf_backend_grok_prstatus _bfd_kvx_elf_grok_prstatus
+#define elf_backend_grok_psinfo _bfd_kvx_elf_grok_psinfo
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-kvx-relocs.h ./bfd/elfxx-kvx-relocs.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-kvx-relocs.h	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elfxx-kvx-relocs.h	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,1105 @@
+/* KVX-specific relocations table.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
+   Contributed by Kalray SA.
+
+   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; see the file COPYING3. If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#ifdef KVX_KV3_V1_KV3_V2_KV4_V1
+static reloc_howto_type elf_kvx_howto_table[] =
+{
+  HOWTO (R_KVX_NONE,			/* type */
+	 0,				/* rightshift */
+	 0,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_bitfield,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_NONE",			/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0,				/* dst_mask */
+	 false),			/* pcrel_offset */
+  HOWTO (R_KVX_16,			/* type */
+	 0,				/* rightshift */
+	 2,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 16,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_16",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_32,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_32",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S16_PCREL,			/* type */
+	 0,				/* rightshift */
+	 2,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 16,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S16_PCREL",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_PCREL17,			/* type */
+	 2,				/* rightshift */
+	 3,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 17,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_PCREL17",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7fffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_PCREL27,			/* type */
+	 2,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_PCREL27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_32_PCREL,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_32_PCREL",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S37_PCREL_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_PCREL_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S37_PCREL_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_PCREL_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_PCREL_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_PCREL_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_PCREL_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_PCREL_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_PCREL_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_PCREL_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_PCREL_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_PCREL_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_PCREL_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_PCREL_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_PCREL_EX27,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_PCREL_EX27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_64_PCREL,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_PCREL",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S16,			/* type */
+	 0,				/* rightshift */
+	 2,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 16,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S16",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S32_LO5,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 5,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S32_LO5",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7c0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S32_UP27,			/* type */
+	 5,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S32_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOTOFF_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOTOFF_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOTOFF_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOTOFF_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTOFF_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTOFF_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTOFF_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTOFF_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTOFF_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTOFF_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_32_GOTOFF,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_32_GOTOFF",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64_GOTOFF,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_GOTOFF",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_32_GOT,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_32_GOT",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOT_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOT_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOT_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOT_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOT_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOT_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOT_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOT_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOT_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOT_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64_GOT,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_GOT",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_GLOB_DAT,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_GLOB_DAT",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_COPY,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_COPY",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_JMP_SLOT,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_JMP_SLOT",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_RELATIVE,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_RELATIVE",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S64_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S64_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S64_EX27,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_EX27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOTADDR_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOTADDR_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S37_GOTADDR_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_GOTADDR_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTADDR_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTADDR_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTADDR_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTADDR_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S43_GOTADDR_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_GOTADDR_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_GOTADDR_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 true,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_GOTADDR_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_GOTADDR_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_GOTADDR_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_S64_GOTADDR_EX27,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 true,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S64_GOTADDR_EX27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 true),			/* pc_offset */
+  HOWTO (R_KVX_64_DTPMOD,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_DTPMOD",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64_DTPOFF,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_DTPOFF",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_DTPOFF_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_DTPOFF_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_DTPOFF_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_DTPOFF_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_DTPOFF_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_DTPOFF_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_DTPOFF_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_DTPOFF_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_DTPOFF_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_DTPOFF_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_GD_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_GD_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_GD_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_GD_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_GD_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_GD_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_GD_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_GD_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_GD_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_GD_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_LD_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_LD_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_LD_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_LD_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LD_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LD_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LD_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LD_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LD_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LD_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_64_TPOFF,			/* type */
+	 0,				/* rightshift */
+	 8,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 64,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_64_TPOFF",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_IE_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_IE_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_IE_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_IE_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_IE_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_IE_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_IE_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_IE_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_IE_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_IE_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_LE_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_LE_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S37_TLS_LE_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S37_TLS_LE_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LE_LO10,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 10,				/* bitsize */
+	 false,				/* pc_relative */
+	 6,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LE_LO10",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xffc0,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LE_UP27,			/* type */
+	 10,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 27,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LE_UP27",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x7ffffff,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_S43_TLS_LE_EX6,			/* type */
+	 37,				/* rightshift */
+	 4,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 6,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_S43_TLS_LE_EX6",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0x3f,			/* dst_mask */
+	 false),			/* pc_offset */
+  HOWTO (R_KVX_8,			/* type */
+	 0,				/* rightshift */
+	 1,				/* size (0 = byte, 1 = short, 2 = long, 3 = invalid, 4 = 64bits, 8 = 128bits) */
+	 8,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos (bit field offset) */
+	 complain_overflow_unsigned,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_KVX_8",			/* name */
+	 false,				/* partial_inplace */
+	 0x0,				/* src_mask */
+	 0xff,			/* dst_mask */
+	 false),			/* pc_offset */
+};
+
+#endif /* KVX_KV3_V1_KV3_V2_KV4_V1 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-loongarch.c ./bfd/elfxx-loongarch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-loongarch.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elfxx-loongarch.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,2232 @@
+/* LoongArch-specific support for ELF.
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+   Contributed by Loongson Ltd.
+
+   Based on RISC-V target.
+
+   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; see the file COPYING3.  If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "elf-bfd.h"
+#include "elf/loongarch.h"
+#include "elfxx-loongarch.h"
+
+#define ALL_ONES (~ (bfd_vma) 0)
+
+typedef struct loongarch_reloc_howto_type_struct
+{
+  /* The first must be reloc_howto_type!  */
+  reloc_howto_type howto;
+  bfd_reloc_code_real_type bfd_type;
+  bool (*adjust_reloc_bits)(bfd *, reloc_howto_type *, bfd_vma *);
+  const char *larch_reloc_type_name;
+} loongarch_reloc_howto_type;
+
+#define LOONGARCH_DEFAULT_HOWTO(r_name)					    \
+  { HOWTO (R_LARCH_##r_name, 0, 4, 32, false, 0, complain_overflow_signed,  \
+	bfd_elf_generic_reloc, "R_LARCH_" #r_name, false, 0, ALL_ONES,	    \
+	false), BFD_RELOC_LARCH_##r_name, NULL, NULL }
+
+#define LOONGARCH_HOWTO(type, right, size, bits, pcrel, left, ovf, func,  \
+	    name, inplace, src_mask, dst_mask, pcrel_off, btype, afunc,lname) \
+  { HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,	  \
+	  inplace, src_mask, dst_mask, pcrel_off), btype, afunc, lname }
+
+#define LOONGARCH_EMPTY_HOWTO(C) \
+  { EMPTY_HOWTO (C), BFD_RELOC_NONE, NULL, NULL }
+
+static bool
+reloc_bits (bfd *abfd, reloc_howto_type *howto, bfd_vma *val);
+static bool
+reloc_sign_bits (bfd *abfd, reloc_howto_type *howto, bfd_vma *fix_val);
+static bool
+reloc_unsign_bits (bfd *abfd, reloc_howto_type *howto, bfd_vma *fix_val);
+
+static bfd_reloc_status_type
+loongarch_elf_add_sub_reloc (bfd *, arelent *, asymbol *, void *,
+			      asection *, bfd *, char **);
+
+static bfd_reloc_status_type
+loongarch_elf_add_sub_reloc_uleb128 (bfd *, arelent *, asymbol *, void *,
+				      asection *, bfd *, char **);
+
+/* This does not include any relocation information, but should be
+   good enough for GDB or objdump to read the file.  */
+static loongarch_reloc_howto_type loongarch_howto_table[] =
+{
+  /* No relocation.  */
+    LOONGARCH_HOWTO (R_LARCH_NONE,	  /* type (0).  */
+	 0,				  /* rightshift */
+	 0,				  /* size */
+	 0,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_NONE",		  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 0,				  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_NONE,		  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  /* 32 bit relocation.  */
+  LOONGARCH_HOWTO (R_LARCH_32,		  /* type (1).  */
+	 0,				  /* rightshift */
+	 4,				  /* size */
+	 32,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_32",			  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_32,			  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  /* 64 bit relocation.  */
+  LOONGARCH_HOWTO (R_LARCH_64,		  /* type (2).  */
+	 0,				  /* rightshift */
+	 8,				  /* size */
+	 64,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_64",			  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_64,			  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_RELATIVE,	  /* type (3).  */
+	 0,				  /* rightshift */
+	 4,				  /* size */
+	 32,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_RELATIVE",		  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_NONE,		  /* undefined?  */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_COPY,	  /* type (4).  */
+	 0,				  /* rightshift */
+	 0,				  /* this one is variable size */
+	 0,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_bitfield,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_COPY",		  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 0,				  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_NONE,		  /* undefined?  */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_JUMP_SLOT,	  /* type (5).  */
+	 0,				  /* rightshift */
+	 8,				  /* size */
+	 64,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_bitfield,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_JUMP_SLOT",		  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 0,				  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_NONE,		  /* undefined?  */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  /* Dynamic TLS relocations.  */
+  LOONGARCH_HOWTO (R_LARCH_TLS_DTPMOD32,  /* type (6).  */
+	 0,				  /* rightshift */
+	 4,				  /* size */
+	 32,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_TLS_DTPMOD32",	  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_DTPMOD32,	  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DTPMOD64,  /* type (7).  */
+	 0,				  /* rightshift */
+	 8,				  /* size */
+	 64,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_TLS_DTPMOD64",	  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_DTPMOD64,	  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DTPREL32,  /* type (8). */
+	 0,				  /* rightshift */
+	 4,				  /* size */
+	 32,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_TLS_DTPREL32",	  /* name */
+	 true,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_DTPREL32,	  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DTPREL64,  /* type (9).  */
+	 0,				  /* rightshift */
+	 8,				  /* size */
+	 64,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_TLS_DTPREL64",	  /* name */
+	 true,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_DTPREL64,	  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_TPREL32,	  /* type (10).  */
+	 0,				  /* rightshift */
+	 4,				  /* size */
+	 32,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_TLS_TPREL32",		  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_TPREL32,	  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_TPREL64,	  /* type (11).  */
+	 0,				  /* rightshift */
+	 8,				  /* size */
+	 64,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_TLS_TPREL64",		  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_TPREL64,	  /* bfd_reloc_code_real_type */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_IRELATIVE,	  /* type (12).  */
+	 0,				  /* rightshift */
+	 8,				  /* size */
+	 64,				  /* bitsize */
+	 false,				  /* pc_relative */
+	 0,				  /* bitpos */
+	 complain_overflow_dont,	  /* complain_on_overflow */
+	 bfd_elf_generic_reloc,		  /* special_function */
+	 "R_LARCH_IRELATIVE",		  /* name */
+	 false,				  /* partial_inplace */
+	 0,				  /* src_mask */
+	 ALL_ONES,			  /* dst_mask */
+	 false,				  /* pcrel_offset */
+	 BFD_RELOC_NONE,		  /* undefined?  */
+	 NULL,				  /* adjust_reloc_bits */
+	 NULL),				  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC32,	  /* type (13).  */
+	 0,				  /* rightshift.  */
+	 4,				  /* size.  */
+	 32,				  /* bitsize.  */
+	 false,				  /* pc_relative.  */
+	 0,				  /* bitpos.  */
+	 complain_overflow_dont,	  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,		  /* special_function.  */
+	 "R_LARCH_TLS_DESC32",		  /* name.  */
+	 false,				  /* partial_inplace.  */
+	 0,				  /* src_mask.  */
+	 ALL_ONES,		  	  /* dst_mask.  */
+	 false,				  /* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC32,	  /* bfd_reloc_code_real_type.  */
+	 NULL,				  /* adjust_reloc_bits.  */
+	 NULL),				  /* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC64,	  /* type (14).  */
+	 0,				  /* rightshift.  */
+	 8,				  /* size.  */
+	 64,				  /* bitsize.  */
+	 false,				  /* pc_relative.  */
+	 0,				  /* bitpos.  */
+	 complain_overflow_dont,	  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,		  /* special_function.  */
+	 "R_LARCH_TLS_DESC64",		  /* name.  */
+	 false,				  /* partial_inplace.  */
+	 0,				  /* src_mask.  */
+	 ALL_ONES,			  /* dst_mask.  */
+	 false,				  /* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC64,	  /* bfd_reloc_code_real_type.  */
+	 NULL,				  /* adjust_reloc_bits.  */
+	 NULL),				  /* larch_reloc_type_name.  */
+
+  LOONGARCH_EMPTY_HOWTO (15),
+  LOONGARCH_EMPTY_HOWTO (16),
+  LOONGARCH_EMPTY_HOWTO (17),
+  LOONGARCH_EMPTY_HOWTO (18),
+  LOONGARCH_EMPTY_HOWTO (19),
+
+  LOONGARCH_HOWTO (R_LARCH_MARK_LA,		/* type (20).  */
+	 0,					/* rightshift.  */
+	 0,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_MARK_LA",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_MARK_LA,		/* bfd_reloc_code_real_type */
+	 NULL,					/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_MARK_PCREL,		/* type (21).  */
+	 0,					/* rightshift.  */
+	 0,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_MARK_PCREL",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_MARK_PCREL,		/* bfd_reloc_code_real_type */
+	 NULL,					/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_PUSH_PCREL,	/* type (22).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 32,					/* bitsize.  */
+	 true /* FIXME: somewhat use this.  */,	/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_SOP_PUSH_PCREL",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0x03ffffff,				/* src_mask.  */
+	 0x03ffffff,				/* dst_mask.  */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_PUSH_PCREL,	/* bfd_reloc_code_real_type */
+	 NULL,					/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  /* type 23-37.  */
+  LOONGARCH_DEFAULT_HOWTO (SOP_PUSH_ABSOLUTE),
+  LOONGARCH_DEFAULT_HOWTO (SOP_PUSH_DUP),
+  LOONGARCH_DEFAULT_HOWTO (SOP_PUSH_GPREL),
+  LOONGARCH_DEFAULT_HOWTO (SOP_PUSH_TLS_TPREL),
+  LOONGARCH_DEFAULT_HOWTO (SOP_PUSH_TLS_GOT),
+  LOONGARCH_DEFAULT_HOWTO (SOP_PUSH_TLS_GD),
+  LOONGARCH_DEFAULT_HOWTO (SOP_PUSH_PLT_PCREL),
+  LOONGARCH_DEFAULT_HOWTO (SOP_ASSERT),
+  LOONGARCH_DEFAULT_HOWTO (SOP_NOT),
+  LOONGARCH_DEFAULT_HOWTO (SOP_SUB),
+  LOONGARCH_DEFAULT_HOWTO (SOP_SL),
+  LOONGARCH_DEFAULT_HOWTO (SOP_SR),
+  LOONGARCH_DEFAULT_HOWTO (SOP_ADD),
+  LOONGARCH_DEFAULT_HOWTO (SOP_AND),
+  LOONGARCH_DEFAULT_HOWTO (SOP_IF_ELSE),
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_S_10_5,	  /* type (38).  */
+	 0,					  /* rightshift.  */
+	 4,					  /* size.  */
+	 5,					  /* bitsize.  */
+	 false,					  /* pc_relative.  */
+	 10,					  /* bitpos.  */
+	 complain_overflow_signed,		  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			  /* special_function.  */
+	 "R_LARCH_SOP_POP_32_S_10_5",		  /* name.  */
+	 false,					  /* partial_inplace.  */
+	 0,					  /* src_mask */
+	 0x7c00,				  /* dst_mask */
+	 false,					  /* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_S_10_5,	  /* bfd_reloc_code_real_type */
+	 reloc_sign_bits,			  /* adjust_reloc_bits */
+	 NULL),					  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_U_10_12,	  /* type (39).  */
+	 0,					  /* rightshift.  */
+	 4,					  /* size.  */
+	 12,					  /* bitsize.  */
+	 false,					  /* pc_relative.  */
+	 10,					  /* bitpos.  */
+	 complain_overflow_unsigned,		  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			  /* special_function.  */
+	 "R_LARCH_SOP_POP_32_U_10_12",		  /* name.  */
+	 false,					  /* partial_inplace.  */
+	 0,					  /* src_mask */
+	 0x3ffc00,				  /* dst_mask */
+	 false,					  /* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_U_10_12,	  /* bfd_reloc_code_real_type */
+	 reloc_unsign_bits,			  /* adjust_reloc_bits */
+	 NULL),					  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_S_10_12,	  /* type (40).  */
+	 0,					  /* rightshift.  */
+	 4,					  /* size.  */
+	 12,					  /* bitsize.  */
+	 false,					  /* pc_relative.  */
+	 10,					  /* bitpos.  */
+	 complain_overflow_signed,		  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			  /* special_function.  */
+	 "R_LARCH_SOP_POP_32_S_10_12",		  /* name.  */
+	 false,					  /* partial_inplace.  */
+	 0,					  /* src_mask */
+	 0x3ffc00,				  /* dst_mask */
+	 false,					  /* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_S_10_12,	  /* bfd_reloc_code_real_type */
+	 reloc_sign_bits,			  /* adjust_reloc_bits */
+	 NULL),					  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_S_10_16,	  /* type (41).  */
+	 0,					  /* rightshift.  */
+	 4,					  /* size.  */
+	 16,					  /* bitsize.  */
+	 false,					  /* pc_relative.  */
+	 10,					  /* bitpos.  */
+	 complain_overflow_signed,		  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			  /* special_function.  */
+	 "R_LARCH_SOP_POP_32_S_10_16",		  /* name.  */
+	 false,					  /* partial_inplace.  */
+	 0,					  /* src_mask */
+	 0x3fffc00,				  /* dst_mask */
+	 false,					  /* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_S_10_16,	  /* bfd_reloc_code_real_type */
+	 reloc_sign_bits,			  /* adjust_reloc_bits */
+	 NULL),					  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_S_10_16_S2, /* type (42).  */
+	 2,					  /* rightshift.  */
+	 4,					  /* size.  */
+	 16,					  /* bitsize.  */
+	 false,					  /* pc_relative.  */
+	 10,					  /* bitpos.  */
+	 complain_overflow_signed,		  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			  /* special_function.  */
+	 "R_LARCH_SOP_POP_32_S_10_16_S2",	  /* name.  */
+	 false,					  /* partial_inplace.  */
+	 0,					  /* src_mask */
+	 0x3fffc00,				  /* dst_mask */
+	 false,					  /* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_S_10_16_S2,	  /* bfd_reloc_code_real_type */
+	 reloc_sign_bits,			  /* adjust_reloc_bits */
+	 NULL),					  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_S_5_20,	  /* type (43).  */
+	 0,					  /* rightshift.  */
+	 4,					  /* size.  */
+	 20,					  /* bitsize.  */
+	 false,					  /* pc_relative.  */
+	 5,					  /* bitpos.  */
+	 complain_overflow_signed,		  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			  /* special_function.  */
+	 "R_LARCH_SOP_POP_32_S_5_20",		  /* name.  */
+	 false,					  /* partial_inplace.  */
+	 0,					  /* src_mask */
+	 0x1ffffe0,				  /* dst_mask */
+	 false,					  /* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_S_5_20,	  /* bfd_reloc_code_real_type */
+	 reloc_sign_bits,			  /* adjust_reloc_bits */
+	 NULL),					  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_S_0_5_10_16_S2,
+						  /* type (44).  */
+	 2,					  /* rightshift.  */
+	 4,					  /* size.  */
+	 21,					  /* bitsize.  */
+	 false,					  /* pc_relative.  */
+	 0,					  /* bitpos.  */
+	 complain_overflow_signed,		  /* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			  /* special_function.  */
+	 "R_LARCH_SOP_POP_32_S_0_5_10_16_S2",	  /* name.  */
+	 false,					  /* partial_inplace.  */
+	 0x0,					  /* src_mask */
+	 0x03fffc1f,				  /* dst_mask */
+	 false,					  /* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_S_0_5_10_16_S2,
+						  /* bfd_reloc_code_real_type */
+	 reloc_sign_bits,			  /* adjust_reloc_bits */
+	 NULL),					  /* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_S_0_10_10_16_S2,	/* type (45).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 26,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_SOP_POP_32_S_0_10_10_16_S2",	/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x03ffffff,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_S_0_10_10_16_S2,
+						/* bfd_reloc_code_real_type */
+	 reloc_sign_bits,			/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_SOP_POP_32_U,	/* type (46).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 32,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_unsigned,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_SOP_POP_32_U",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0xffffffff00000000,			/* src_mask */
+	 0x00000000ffffffff,			/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_SOP_POP_32_U,		/* bfd_reloc_code_real_type */
+	 reloc_unsign_bits,			/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  /* 8-bit in-place addition, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_ADD8,		/* type (47).  */
+	 0,					/* rightshift.  */
+	 1,					/* size.  */
+	 8,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_ADD8",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0xff,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_ADD8,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 16-bit in-place addition, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_ADD16,		/* type (48).  */
+	 0,					/* rightshift.  */
+	 2,					/* size.  */
+	 16,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_ADD16",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0xffff,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_ADD16,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 24-bit in-place addition, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_ADD24,		/* type (49).  */
+	 0,					/* rightshift.  */
+	 3,					/* size.  */
+	 24,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_ADD24",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0xffffff,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_ADD24,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 32-bit in-place addition, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_ADD32,		/* type (50).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 32,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_ADD32",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0xffffffff,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_ADD32,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 64-bit in-place addition, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_ADD64,		/* type (51).  */
+	 0,					/* rightshift.  */
+	 8,					/* size.  */
+	 64,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_ADD64",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 ALL_ONES,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_ADD64,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 8-bit in-place subtraction, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_SUB8,		/* type (52).  */
+	 0,					/* rightshift.  */
+	 1,					/* size.  */
+	 8,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_SUB8",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0xff,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_SUB8,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 16-bit in-place subtraction, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_SUB16,		/* type (53).  */
+	 0,					/* rightshift.  */
+	 2,					/* size.  */
+	 16,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_SUB16",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0xffff,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_SUB16,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 24-bit in-place subtraction, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_SUB24,		/* type (54).  */
+	 0,					/* rightshift.  */
+	 3,					/* size.  */
+	 24,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_SUB24",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0xffffff,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_SUB24,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 32-bit in-place subtraction, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_SUB32,		/* type (55).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 32,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_SUB32",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0xffffffff,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_SUB32,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 64-bit in-place subtraction, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_SUB64,		/* type (56).  */
+	 0,					/* rightshift.  */
+	 8,					/* size.  */
+	 64,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_SUB64",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 ALL_ONES,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_SUB64,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_GNU_VTINHERIT,	/* type (57).  */
+	 0,					/* rightshift.  */
+	 0,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GNU_VTINHERIT",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0,					/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_NONE,			/* bfd_reloc_code_real_type */
+	 NULL,					/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GNU_VTENTRY,		/* type (58).  */
+	 0,					/* rightshift.  */
+	 0,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 NULL,					/* special_function.  */
+	 "R_LARCH_GNU_VTENTRY",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0,					/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_NONE,			/* bfd_reloc_code_real_type */
+	 NULL,					/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  LOONGARCH_EMPTY_HOWTO (59),
+  LOONGARCH_EMPTY_HOWTO (60),
+  LOONGARCH_EMPTY_HOWTO (61),
+  LOONGARCH_EMPTY_HOWTO (62),
+  LOONGARCH_EMPTY_HOWTO (63),
+
+  /* New reloc types.  */
+  LOONGARCH_HOWTO (R_LARCH_B16,			/* type (64).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 16,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_B16",				/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x3fffc00,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_B16,			/* bfd_reloc_code_real_type.  */
+	 reloc_sign_bits,			/* adjust_reloc_bits.  */
+	 "b16"),				/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_B21,			/* type (65).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 21,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_B21",				/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x3fffc1f,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_B21,			/* bfd_reloc_code_real_type.  */
+	 reloc_sign_bits,			/* adjust_reloc_bits.  */
+	 "b21"),				/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_B26,			/* type (66).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 26,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_B26",				/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x03ffffff,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_B26,			/* bfd_reloc_code_real_type.  */
+	 reloc_sign_bits,			/* adjust_reloc_bits.  */
+	 "b26"),				/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_ABS_HI20,		/* type (67).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_ABS_HI20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_ABS_HI20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "abs_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_ABS_LO12,		/* type (68).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_unsigned,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_ABS_LO12",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_ABS_LO12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "abs_lo12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_ABS64_LO20,		/* type (69).  */
+	 32,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_ABS64_LO20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_ABS64_LO20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "abs64_lo20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_ABS64_HI12,		/* type (70).  */
+	 52,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_ABS64_HI12",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_ABS64_HI12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "abs64_hi12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_PCALA_HI20,		/* type (71).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_PCALA_HI20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_PCALA_HI20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "pc_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_PCALA_LO12,		/* type (72).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_PCALA_LO12",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_PCALA_LO12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "pc_lo12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_PCALA64_LO20,	/* type (73).  */
+	 32,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_PCALA64_LO20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_PCALA64_LO20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "pc64_lo20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_PCALA64_HI12,	/* type (74).  */
+	 52,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_PCALA64_HI12",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_PCALA64_HI12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "pc64_hi12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GOT_PC_HI20,		/* type (75).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GOT_PC_HI20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_GOT_PC_HI20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "got_pc_hi20"),			/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GOT_PC_LO12,		/* type (76).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GOT_PC_LO12",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_GOT_PC_LO12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "got_pc_lo12"),			/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GOT64_PC_LO20,	/* type (77).  */
+	 32,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GOT64_PC_LO20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_GOT64_PC_LO20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "got64_pc_lo20"),			/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GOT64_PC_HI12,	/* type (78).  */
+	 52,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GOT64_PC_HI12",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_GOT64_PC_HI12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "got64_pc_hi12"),			/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GOT_HI20,		/* type (79).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GOT_HI20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_GOT_HI20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "got_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GOT_LO12,		/* type (80).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GOT_LO12",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_GOT_LO12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "got_lo12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GOT64_LO20,		/* type (81).  */
+	 32,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GOT64_LO20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_GOT64_LO20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "got64_lo20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_GOT64_HI12,		/* type (82).  */
+	 52,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_GOT64_HI12",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_GOT64_HI12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "got64_hi12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LE_HI20,		/* type (83).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LE_HI20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_LE_HI20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "le_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LE_LO12,		/* type (84).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_unsigned,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LE_LO12",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_LE_LO12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "le_lo12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LE64_LO20,	/* type (85).  */
+	 32,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LE64_LO20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_LE64_LO20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "le64_lo20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LE64_HI12,	/* type (86).  */
+	 52,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LE64_HI12",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_LE64_HI12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "le64_hi12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_IE_PC_HI20,	/* type (87).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_IE_PC_HI20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_IE_PC_HI20,	/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ie_pc_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_IE_PC_LO12,	/* type (88).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_IE_PC_LO12",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_IE_PC_LO12,	/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ie_pc_lo12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_IE64_PC_LO20,	/* type (89).  */
+	 32,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_IE64_PC_LO20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_IE64_PC_LO20,	/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ie64_pc_lo20"),			/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_IE64_PC_HI12,	/* type (90).  */
+	 52,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_IE64_PC_HI12",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_IE64_PC_HI12,	/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ie64_pc_hi12"),			/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_IE_HI20,		/* type (91).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_IE_HI20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_IE_HI20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ie_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_IE_LO12,		/* type (92).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_IE_LO12",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_IE_LO12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ie_lo12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_IE64_LO20,	/* type (93).  */
+	 32,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_IE64_LO20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_IE64_LO20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ie64_lo20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_IE64_HI12,	/* type (94).  */
+	 52,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_IE64_HI12",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x3ffc00,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_IE64_HI12,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ie64_hi12"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LD_PC_HI20,	/* type (95).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LD_PC_HI20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_LD_PC_HI20,	/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ld_pc_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LD_HI20,		/* type (96).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LD_HI20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_LD_HI20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "ld_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_GD_PC_HI20,	/* type (97).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_GD_PC_HI20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_GD_PC_HI20,	/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "gd_pc_hi20"),				/* larch_reloc_type_name */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_GD_HI20,		/* type (98).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_GD_HI20",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0x1ffffe0,				/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_TLS_GD_HI20,		/* bfd_reloc_code_real_type */
+	 reloc_bits,				/* adjust_reloc_bits */
+	 "gd_hi20"),				/* larch_reloc_type_name */
+
+  /* 32-bit PC relative.  */
+  LOONGARCH_HOWTO (R_LARCH_32_PCREL,		/* type (99).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 32,					/* bitsize.  */
+	 true,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_32_PCREL",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0xffffffff,				/* dst_mask */
+	 true,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_32_PCREL,		/* bfd_reloc_code_real_type */
+	 reloc_sign_bits,			/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  /* The paired relocation may be relaxed.  */
+  LOONGARCH_HOWTO (R_LARCH_RELAX,		/* type (100).  */
+	 0,					/* rightshift */
+	 1,					/* size */
+	 0,					/* bitsize */
+	 false,					/* pc_relative */
+	 0,					/* bitpos */
+	 complain_overflow_dont,		/* complain_on_overflow */
+	 bfd_elf_generic_reloc,			/* special_function */
+	 "R_LARCH_RELAX",			/* name */
+	 false,					/* partial_inplace */
+	 0,					/* src_mask */
+	 0,					/* dst_mask */
+	 false,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_RELAX,			/* bfd_reloc_code_real_type */
+	 NULL,					/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  /* Delete relaxed instruction.  */
+  LOONGARCH_HOWTO (R_LARCH_DELETE,		/* type (101).  */
+	 0,					/* rightshift.  */
+	 0,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_DELETE",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_DELETE,		/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* Indicates an alignment statement. f the symbol index is 0,
+     the addend indicates the number of bytes occupied by nop instructions
+     at the relocation offset. The alignment boundary is specified by the
+     addend rounded up to the next power of two.
+     If the symbol index is not 0, the addend indicates the first and third
+     expressions of .align. The lowest 8 bits are used to represent the first
+     expression, other bits are used to represent the third expression.  */
+  LOONGARCH_HOWTO (R_LARCH_ALIGN,		/* type (102).  */
+	 0,					/* rightshift.  */
+	 0,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_ALIGN",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_ALIGN,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* For pcaddi and pcala_hi20 + pcala_lo12 can relax to pcrel_20.  */
+  LOONGARCH_HOWTO (R_LARCH_PCREL20_S2,		/* type (103).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_PCREL20_S2",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x1ffffe0,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_PCREL20_S2,		/* bfd_reloc_code_real_type.  */
+	 reloc_sign_bits,			/* adjust_reloc_bits.  */
+	 "pcrel_20"),				/* larch_reloc_type_name.  */
+
+  /* Canonical Frame Address.  */
+  LOONGARCH_HOWTO (R_LARCH_CFA,			/* type (104).  */
+	 0,					/* rightshift.  */
+	 0,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_CFA",				/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_CFA,			/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 6-bit in-place addition, for local label subtraction
+     to calculate DW_CFA_advance_loc.  */
+  LOONGARCH_HOWTO (R_LARCH_ADD6,		/* type (105).  */
+	 0,					/* rightshift.  */
+	 1,					/* size.  */
+	 8,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_ADD6",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x3f,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_ADD6,			/* bfd_reloc_code_real_type.  */
+	 reloc_bits,				/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 6-bit in-place subtraction, for local label subtraction
+     to calculate DW_CFA_advance_loc.  */
+  LOONGARCH_HOWTO (R_LARCH_SUB6,		/* type (106).  */
+	 0,					/* rightshift.  */
+	 1,					/* size.  */
+	 8,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc,		/* special_function.  */
+	 "R_LARCH_SUB6",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x3f,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_SUB6,			/* bfd_reloc_code_real_type.  */
+	 reloc_bits,				/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* The length of unsigned-leb128 is variable, just assume the
+     size is one byte here.
+     uleb128 in-place addition, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_ADD_ULEB128,		/* type (107).  */
+	 0,					/* rightshift.  */
+	 1,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc_uleb128,	/* special_function.  */
+	 "R_LARCH_ADD_ULEB128",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_ADD_ULEB128,		/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* The length of unsigned-leb128 is variable, just assume the
+     size is one byte here.
+     uleb128 in-place subtraction, for local label subtraction.  */
+  LOONGARCH_HOWTO (R_LARCH_SUB_ULEB128,		/* type (108).  */
+	 0,					/* rightshift.  */
+	 1,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 loongarch_elf_add_sub_reloc_uleb128,	/* special_function.  */
+	 "R_LARCH_SUB_ULEB128",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_SUB_ULEB128,		/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 NULL),					/* larch_reloc_type_name.  */
+
+  /* 64-bit PC relative.  */
+  LOONGARCH_HOWTO (R_LARCH_64_PCREL,		/* type (109).  */
+	 0,					/* rightshift.  */
+	 8,					/* size.  */
+	 64,					/* bitsize.  */
+	 true,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_64_PCREL",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask */
+	 0xffffffffffffffff,			/* dst_mask */
+	 true,					/* pcrel_offset */
+	 BFD_RELOC_LARCH_64_PCREL,		/* bfd_reloc_code_real_type */
+	 NULL,					/* adjust_reloc_bits */
+	 NULL),					/* larch_reloc_type_name */
+
+  /* Used for medium code model function call pcaddu18i+jirl,
+     these two instructions must adjacent.  */
+  LOONGARCH_HOWTO (R_LARCH_CALL36,		/* type (110).  */
+	 2,					/* rightshift.  */
+	 8,					/* size.  */
+	 36,					/* bitsize.  */
+	 true,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_CALL36",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x03fffc0001ffffe0,			/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_CALL36,		/* bfd_reloc_code_real_type.  */
+	 reloc_sign_bits,			/* adjust_reloc_bits.  */
+	 "call36"),				/* larch_reloc_type_name.  */
+
+  /* TLS_DESC PCREL.  */
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC_PC_HI20,	/* type (111).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 true,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_DESC_PC_HI20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x1ffffe0,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC_PC_HI20,	/* bfd_reloc_code_real_type.  */
+	 reloc_bits,				/* adjust_reloc_bits.  */
+	 "desc_pc_hi20"),			/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC_PC_LO12,	/* type (112).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 true,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_DESC_PC_LO12",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x3ffc00,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC_PC_LO12,	/* bfd_reloc_code_real_type.  */
+	 reloc_bits,				/* adjust_reloc_bits.  */
+	 "desc_pc_lo12"),			/* larch_reloc_type_name.  */
+
+  /* TLS_DESC64 LARGE PCREL.  */
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC64_PC_LO20, /* type (113).  */
+	32,				       /* rightshift.  */
+	8,				       /* size.  */
+	20,				       /* bitsize.  */
+	true,				       /* pc_relative.  */
+	5,				       /* bitpos.  */
+	complain_overflow_signed,	       /* complain_on_overflow.  */
+	bfd_elf_generic_reloc,		       /* special_function.  */
+	"R_LARCH_TLS_DESC64_PC_LO20",	       /* name.  */
+	false,				       /* partial_inplace.  */
+	0,				       /* src_mask.  */
+	0x1ffffe0,			       /* dst_mask.  */
+	false,				       /* pcrel_offset.  */
+	BFD_RELOC_LARCH_TLS_DESC64_PC_LO20,    /* bfd_reloc_code_real_type.  */
+	reloc_bits,			       /* adjust_reloc_bits.  */
+	"desc64_pc_lo20"),		       /* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC64_PC_HI12, /* type (114).  */
+	52,				       /* rightshift.  */
+	8,				       /* size.  */
+	12,				       /* bitsize.  */
+	true,				       /* pc_relative.  */
+	10,				       /* bitpos.  */
+	complain_overflow_signed,	       /* complain_on_overflow.  */
+	bfd_elf_generic_reloc,		       /* special_function.  */
+	"R_LARCH_TLS_DESC64_PC_HI12",	       /* name.  */
+	false,				       /* partial_inplace.  */
+	0,				       /* src_mask.  */
+	0x3ffc00,			       /* dst_mask.  */
+	false,				       /* pcrel_offset.  */
+	BFD_RELOC_LARCH_TLS_DESC64_PC_HI12,    /* bfd_reloc_code_real_type.  */
+	reloc_bits,			       /* adjust_reloc_bits.  */
+	"desc64_pc_hi12"),		       /* larch_reloc_type_name.  */
+
+  /* TLS_DESC ABS.  */
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC_HI20,	/* type (115).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_DESC_HI20",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x1ffffe0,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC_HI20,		/* bfd_reloc_code_real_type.  */
+	 reloc_bits,				/* adjust_reloc_bits.  */
+	 "desc_hi20"),				/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC_LO12,	/* type (116).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_DESC_LO12",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x3ffc00,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC_LO12,		/* bfd_reloc_code_real_type.  */
+	 reloc_bits,				/* adjust_reloc_bits.  */
+	 "desc_lo12"),				/* larch_reloc_type_name.  */
+
+  /* TLS_DESC64 LARGE ABS.  */
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC64_LO20,    /* type (117).  */
+	32,				       /* rightshift.  */
+	8,				       /* size.  */
+	20,				       /* bitsize.  */
+	false,				       /* pc_relative.  */
+	5,				       /* bitpos.  */
+	complain_overflow_signed,	       /* complain_on_overflow.  */
+	bfd_elf_generic_reloc,		       /* special_function.  */
+	"R_LARCH_TLS_DESC64_LO20",	       /* name.  */
+	false,				       /* partial_inplace.  */
+	0,				       /* src_mask.  */
+	0x1ffffe0,			       /* dst_mask.  */
+	false,				       /* pcrel_offset.  */
+	BFD_RELOC_LARCH_TLS_DESC64_LO20,       /* bfd_reloc_code_real_type.  */
+	reloc_bits,			       /* adjust_reloc_bits.  */
+	"desc64_lo20"),			       /* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC64_HI12,    /* type (118).  */
+	52,				       /* rightshift.  */
+	8,				       /* size.  */
+	12,				       /* bitsize.  */
+	false,				       /* pc_relative.  */
+	10,				       /* bitpos.  */
+	complain_overflow_signed,	       /* complain_on_overflow.  */
+	bfd_elf_generic_reloc,		       /* special_function.  */
+	"R_LARCH_TLS_DESC64_HI12",	       /* name.  */
+	false,				       /* partial_inplace.  */
+	0,				       /* src_mask.  */
+	0x3ffc00,			       /* dst_mask.  */
+	false,				       /* pcrel_offset.  */
+	BFD_RELOC_LARCH_TLS_DESC64_HI12,       /* bfd_reloc_code_real_type.  */
+	reloc_bits,			       /* adjust_reloc_bits.  */
+	"desc64_hi12"),			       /* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC_LD,		/* type (119).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 0,					/* bitsize.  */
+	 true,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_DESC_LD",			/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC_LD,		/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 "desc_ld"),				/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC_CALL,	/* type (120).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_DESC_CALL",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC_CALL,		/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 "desc_call"),				/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LE_HI20_R,	/* type (121).  */
+	 12,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LE_HI20_R",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x1ffffe0,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_LE_HI20_R,		/* bfd_reloc_code_real_type.  */
+	 reloc_bits,				/* adjust_reloc_bits.  */
+	 "le_hi20_r"),				/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LE_ADD_R,	/* type (122).  */
+	 0,					/* rightshift.  */
+	 0,					/* size.  */
+	 0,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 0,					/* bitpos.  */
+	 complain_overflow_dont,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LE_ADD_R",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0,					/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_LE_ADD_R,		/* bfd_reloc_code_real_type.  */
+	 NULL,					/* adjust_reloc_bits.  */
+	 "le_add_r"),				/* larch_reloc_type_name.  */
+
+  LOONGARCH_HOWTO (R_LARCH_TLS_LE_LO12_R,	/* type (123).  */
+	 0,					/* rightshift.  */
+	 4,					/* size.  */
+	 12,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 10,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LE_LO12_R",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x3ffc00,				/* dst_mask.  */
+	 false,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_LE_LO12_R,		/* bfd_reloc_code_real_type.  */
+	 reloc_bits,				/* adjust_reloc_bits.  */
+	 "le_lo12_r"),				/* larch_reloc_type_name.  */
+
+  /* For pcaddi, ld_pc_hi20 + ld_pc_lo12 can relax to ld_pcrel20_s2.  */
+  LOONGARCH_HOWTO (R_LARCH_TLS_LD_PCREL20_S2,	/* type (124).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_LD_PCREL20_S2",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x1ffffe0,				/* dst_mask.  */
+	 true,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_LD_PCREL20_S2,	/* bfd_reloc_code_real_type.  */
+	 reloc_sign_bits,			/* adjust_reloc_bits.  */
+	 "ld_pcrel_20"),			/* larch_reloc_type_name.  */
+
+  /* For pcaddi, gd_pc_hi20 + gd_pc_lo12 can relax to gd_pcrel20_s2.  */
+  LOONGARCH_HOWTO (R_LARCH_TLS_GD_PCREL20_S2,	/* type (125).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_GD_PCREL20_S2",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x1ffffe0,				/* dst_mask.  */
+	 true,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_GD_PCREL20_S2,	/* bfd_reloc_code_real_type.  */
+	 reloc_sign_bits,			/* adjust_reloc_bits.  */
+	 "gd_pcrel_20"),			/* larch_reloc_type_name.  */
+
+  /* For pcaddi, desc_pc_hi20 + desc_pc_lo12 can relax to desc_pcrel20_s2.  */
+  LOONGARCH_HOWTO (R_LARCH_TLS_DESC_PCREL20_S2,	/* type (126).  */
+	 2,					/* rightshift.  */
+	 4,					/* size.  */
+	 20,					/* bitsize.  */
+	 false,					/* pc_relative.  */
+	 5,					/* bitpos.  */
+	 complain_overflow_signed,		/* complain_on_overflow.  */
+	 bfd_elf_generic_reloc,			/* special_function.  */
+	 "R_LARCH_TLS_DESC_PCREL20_S2",		/* name.  */
+	 false,					/* partial_inplace.  */
+	 0,					/* src_mask.  */
+	 0x1ffffe0,				/* dst_mask.  */
+	 true,					/* pcrel_offset.  */
+	 BFD_RELOC_LARCH_TLS_DESC_PCREL20_S2,	/* bfd_reloc_code_real_type.  */
+	 reloc_sign_bits,			/* adjust_reloc_bits.  */
+	 "desc_pcrel_20"),			/* larch_reloc_type_name.  */
+};
+
+reloc_howto_type *
+loongarch_elf_rtype_to_howto (bfd *abfd, unsigned int r_type)
+{
+  if (r_type < R_LARCH_count)
+    {
+      BFD_ASSERT (ARRAY_SIZE (loongarch_howto_table) == R_LARCH_count);
+      BFD_ASSERT (loongarch_howto_table[r_type].howto.type == r_type);
+      return &loongarch_howto_table[r_type].howto;
+    }
+
+  (*_bfd_error_handler) (_("%pB: unsupported relocation type %#x"),
+			 abfd, r_type);
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+reloc_howto_type *
+loongarch_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name)
+{
+  for (size_t i = 0; i < ARRAY_SIZE (loongarch_howto_table); i++)
+    if (loongarch_howto_table[i].howto.name
+	&& strcasecmp (loongarch_howto_table[i].howto.name, r_name) == 0)
+      return &loongarch_howto_table[i].howto;
+
+  (*_bfd_error_handler) (_("%pB: unsupported relocation type %s"),
+			 abfd, r_name);
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+/* Cost so much.  */
+reloc_howto_type *
+loongarch_reloc_type_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+			     bfd_reloc_code_real_type code)
+{
+  BFD_ASSERT (ARRAY_SIZE (loongarch_howto_table) == R_LARCH_count);
+
+  /* Fast search for new reloc types.  */
+  if (BFD_RELOC_LARCH_B16 <= code && code < BFD_RELOC_LARCH_RELAX)
+    {
+      BFD_ASSERT (BFD_RELOC_LARCH_RELAX - BFD_RELOC_LARCH_B16
+		  == R_LARCH_RELAX - R_LARCH_B16);
+      loongarch_reloc_howto_type *ht;
+      ht = &loongarch_howto_table[code - BFD_RELOC_LARCH_B16 + R_LARCH_B16];
+      BFD_ASSERT (ht->bfd_type == code);
+      return &ht->howto;
+    }
+
+  for (size_t i = 0; i < ARRAY_SIZE (loongarch_howto_table); i++)
+    if (loongarch_howto_table[i].bfd_type == code)
+      return &loongarch_howto_table[i].howto;
+
+  (*_bfd_error_handler) (_("%pB: unsupported bfd relocation type %#x"),
+			 abfd, code);
+  bfd_set_error (bfd_error_bad_value);
+  return NULL;
+}
+
+bfd_reloc_code_real_type
+loongarch_larch_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+				   const char *l_r_name)
+{
+  for (size_t i = 0; i < ARRAY_SIZE (loongarch_howto_table); i++)
+    {
+      loongarch_reloc_howto_type *lht = &loongarch_howto_table[i];
+      if ((NULL != lht->larch_reloc_type_name)
+	  && (0 == strcmp (lht->larch_reloc_type_name, l_r_name)))
+	return lht->bfd_type;
+    }
+
+  return BFD_RELOC_NONE;
+}
+
+
+/* Functions for reloc bits field.
+   1.  Signed extend *fix_val.
+   2.  Return false if overflow.  */
+
+#define LARCH_RELOC_BFD_VMA_BIT_MASK(bitsize) \
+  (~((((bfd_vma)0x1) << (bitsize)) - 1))
+
+/* Adjust val to perform insn
+   BFD_RELOC_LARCH_SOP_POP_32_S_10_5
+   BFD_RELOC_LARCH_SOP_POP_32_S_10_12
+   BFD_RELOC_LARCH_SOP_POP_32_U_10_12
+   BFD_RELOC_LARCH_SOP_POP_32_S_10_16
+   BFD_RELOC_LARCH_SOP_POP_32_S_5_20
+   BFD_RELOC_LARCH_SOP_POP_32_U.  */
+
+static bool
+reloc_bits (bfd *abfd ATTRIBUTE_UNUSED,
+	    reloc_howto_type *howto,
+	    bfd_vma *fix_val)
+{
+  bfd_signed_vma val = (bfd_signed_vma)(*fix_val);
+  bfd_signed_vma mask = ((bfd_signed_vma)0x1 << howto->bitsize) - 1;
+
+  val = val >> howto->rightshift;
+
+  /* Perform insn bits field.  */
+  val = val & mask;
+  val <<= howto->bitpos;
+
+  *fix_val = (bfd_vma)val;
+
+  return true;
+}
+
+static bool
+reloc_bits_sanity (bfd *abfd, reloc_howto_type *howto, bfd_vma *fix_val,
+		   unsigned int sign)
+{
+  if ((sign && howto->complain_on_overflow != complain_overflow_signed)
+      || (!sign && howto->complain_on_overflow != complain_overflow_unsigned))
+    return false;
+
+  bfd_signed_vma val = (bfd_signed_vma)(*fix_val);
+
+  /* Check alignment. FIXME: if rightshift is not alingment.  */
+  if (howto->rightshift
+      && (val & ((((bfd_signed_vma) 1) << howto->rightshift) - 1)))
+    {
+      /* The as passes NULL casued internal error, so it can not use _bfd_error_handler
+	 output details, ld is not affected.  */
+      if (abfd != NULL)
+	{
+	  (*_bfd_error_handler) (_("%pB: relocation %s right shift %d error 0x%lx"),
+				 abfd, howto->name, howto->rightshift, (long) val);
+	  bfd_set_error (bfd_error_bad_value);
+	}
+      return false;
+    }
+
+  bfd_signed_vma mask = ((bfd_signed_vma)0x1 << (howto->bitsize
+			  + howto->rightshift - sign)) - 1;
+
+  /* Positive number: high part is all 0;
+     Negative number: if high part is not all 0, high part must be all 1.
+     high part: from sign bit to highest bit.  */
+  if ((val & ~mask) && ((val & ~mask) != ~mask))
+    {
+      /* The as passes NULL casued internal error, so it can not use _bfd_error_handler
+	 output details, ld is not affected.  */
+      if (abfd != NULL)
+	{
+	  (*_bfd_error_handler) (_("%pB: relocation %s overflow 0x%lx"),
+				 abfd, howto->name, (long) val);
+	  bfd_set_error (bfd_error_bad_value);
+	}
+      return false;
+    }
+
+  val = val >> howto->rightshift;
+  /* can delete? */
+  mask = ((bfd_signed_vma)0x1 << howto->bitsize) - 1;
+  val = val & mask;
+
+  switch (howto->type)
+    {
+    case R_LARCH_SOP_POP_32_S_0_10_10_16_S2:
+    case R_LARCH_B26:
+      /* Perform insn bits field. 15:0<<10, 25:16>>16.  */
+      val = ((val & 0xffff) << 10) | ((val >> 16) & 0x3ff);
+      break;
+    case R_LARCH_SOP_POP_32_S_0_5_10_16_S2:
+    case R_LARCH_B21:
+      /* Perform insn bits field. 15:0<<10, 20:16>>16.  */
+      val = ((val & 0xffff) << 10) | ((val >> 16) & 0x1f);
+      break;
+    case R_LARCH_CALL36:
+      /* 0x8000: If low 16-bit immediate greater than 0x7fff,
+	 it become to a negative number due to sign-extended,
+	 so the high part need to add 0x8000.  */
+      val = (((val + 0x8000) >> 16) << 5) | (((val & 0xffff) << 10) << 32);
+      break;
+    default:
+      val <<= howto->bitpos;
+      break;
+    }
+
+  *fix_val = val;
+  return true;
+}
+
+static bool
+reloc_sign_bits (bfd *abfd, reloc_howto_type *howto, bfd_vma *fix_val)
+{
+  return reloc_bits_sanity (abfd, howto, fix_val, 1);
+}
+
+static bool
+reloc_unsign_bits (bfd *abfd, reloc_howto_type *howto, bfd_vma *fix_val)
+{
+  return reloc_bits_sanity (abfd, howto, fix_val, 0);
+}
+
+bool
+loongarch_adjust_reloc_bitsfield (bfd *abfd, reloc_howto_type *howto,
+				  bfd_vma *fix_val)
+{
+  BFD_ASSERT (((loongarch_reloc_howto_type *)howto)->adjust_reloc_bits);
+  return ((loongarch_reloc_howto_type *)
+	  howto)->adjust_reloc_bits (abfd, howto, fix_val);
+}
+
+static bfd_reloc_status_type
+loongarch_elf_add_sub_reloc (bfd *abfd,
+	       arelent *reloc_entry,
+	       asymbol *symbol,
+	       void *data,
+	       asection *input_section,
+	       bfd *output_bfd,
+	       char **error_message ATTRIBUTE_UNUSED)
+{
+  reloc_howto_type *howto = reloc_entry->howto;
+  bfd_vma relocation;
+
+  if (output_bfd != NULL
+      && (symbol->flags & BSF_SECTION_SYM) == 0
+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
+    {
+      reloc_entry->address += input_section->output_offset;
+      return bfd_reloc_ok;
+    }
+
+  if (output_bfd != NULL)
+    return bfd_reloc_continue;
+
+  relocation = symbol->value + symbol->section->output_section->vma
+    + symbol->section->output_offset + reloc_entry->addend;
+
+  bfd_size_type octets = reloc_entry->address
+    * bfd_octets_per_byte (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, octets))
+    return bfd_reloc_outofrange;
+
+  bfd_vma old_value = bfd_get (howto->bitsize, abfd,
+			       data + reloc_entry->address);
+
+  switch (howto->type)
+    {
+    case R_LARCH_ADD6:
+    case R_LARCH_ADD8:
+    case R_LARCH_ADD16:
+    case R_LARCH_ADD32:
+    case R_LARCH_ADD64:
+      relocation = old_value + relocation;
+      break;
+
+    case R_LARCH_SUB6:
+    case R_LARCH_SUB8:
+    case R_LARCH_SUB16:
+    case R_LARCH_SUB32:
+    case R_LARCH_SUB64:
+      relocation = old_value - relocation;
+      break;
+    }
+
+  bfd_put (howto->bitsize, abfd, relocation, data + reloc_entry->address);
+
+  return bfd_reloc_ok;
+}
+
+static bfd_reloc_status_type
+loongarch_elf_add_sub_reloc_uleb128 (bfd *abfd,
+	       arelent *reloc_entry,
+	       asymbol *symbol,
+	       void *data,
+	       asection *input_section,
+	       bfd *output_bfd,
+	       char **error_message ATTRIBUTE_UNUSED)
+{
+  reloc_howto_type *howto = reloc_entry->howto;
+  bfd_vma relocation;
+
+ if (output_bfd != NULL
+     && (symbol->flags & BSF_SECTION_SYM) == 0
+     && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
+   {
+     reloc_entry->address += input_section->output_offset;
+     return bfd_reloc_ok;
+   }
+
+  if (output_bfd != NULL)
+    return bfd_reloc_continue;
+
+  relocation = (symbol->value + symbol->section->output_section->vma
+		+ symbol->section->output_offset + reloc_entry->addend);
+
+  bfd_size_type octets = (reloc_entry->address
+			  * bfd_octets_per_byte (abfd, input_section));
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, octets))
+    return bfd_reloc_outofrange;
+
+  unsigned int len = 0;
+  bfd_byte *p = data + reloc_entry->address;
+  bfd_vma old_value = _bfd_read_unsigned_leb128 (abfd, p, &len);
+
+  switch (howto->type)
+    {
+    case R_LARCH_ADD_ULEB128:
+      relocation = old_value + relocation;
+      break;
+
+    case R_LARCH_SUB_ULEB128:
+      relocation = old_value - relocation;
+      break;
+    }
+
+  if (7 * len < sizeof (bfd_vma))
+    {
+      bfd_vma mask = ((bfd_vma) 1 << (7 * len)) - 1;
+      relocation = relocation & mask;
+    }
+  loongarch_write_unsigned_leb128 (p, len, relocation);
+  return bfd_reloc_ok;
+}
+
+/* Write VALUE in uleb128 format to P.
+   LEN is the uleb128 value length.
+   Return a pointer to the byte following the last byte that was written.  */
+bfd_byte *
+loongarch_write_unsigned_leb128 (bfd_byte *p, unsigned int len, bfd_vma value)
+{
+  bfd_byte c;
+  do
+    {
+      c = value & 0x7f;
+      if (len > 1)
+	c |= 0x80;
+      *(p++) = c;
+      value >>= 7;
+      len--;
+    }
+  while (len);
+  return p;
+}
+
+int loongarch_get_uleb128_length (bfd_byte *buf)
+{
+  unsigned int len = 0;
+  _bfd_read_unsigned_leb128 (NULL, buf, &len);
+  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.20200303/bfd/elfxx-loongarch.h ./bfd/elfxx-loongarch.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-loongarch.h	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/elfxx-loongarch.h	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,55 @@
+/* LoongArch-specific backend routines.
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+   Contributed by Loongson Ltd.
+
+   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; see the file COPYING3.  If not,
+   see <http://www.gnu.org/licenses/>.  */
+
+#include "elf/common.h"
+#include "elf/internal.h"
+
+extern reloc_howto_type *
+loongarch_elf_rtype_to_howto (bfd *abfd, unsigned int r_type);
+
+extern reloc_howto_type *
+loongarch_reloc_type_lookup (bfd *abfd, bfd_reloc_code_real_type code);
+
+extern reloc_howto_type *
+loongarch_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, const char *r_name);
+
+extern bfd_reloc_code_real_type
+loongarch_larch_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED,
+				   const char *l_r_name);
+
+bool
+loongarch_adjust_reloc_bitsfield (bfd *, reloc_howto_type *, bfd_vma *);
+void
+bfd_elf32_loongarch_set_data_segment_info (struct bfd_link_info *, int *);
+void
+bfd_elf64_loongarch_set_data_segment_info (struct bfd_link_info *, int *);
+
+bfd_byte *
+loongarch_write_unsigned_leb128 (bfd_byte *p, unsigned int len, bfd_vma value);
+
+int loongarch_get_uleb128_length (bfd_byte *buf);
+
+/* TRUE if this is a PLT reference to a local IFUNC.  */
+#define PLT_LOCAL_IFUNC_P(INFO, H) \
+  ((H)->dynindx == -1 \
+   || ((bfd_link_executable (INFO) \
+	|| ELF_ST_VISIBILITY ((H)->other) != STV_DEFAULT) \
+	&& (H)->def_regular \
+	&& (H)->type == STT_GNU_IFUNC))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-mips.c ./bfd/elfxx-mips.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-mips.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-mips.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS-specific support for ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    Most of the information added by Ian Lance Taylor, Cygnus Support,
    <ian@cygnus.com>.
@@ -442,37 +442,34 @@ struct mips_elf_link_hash_table
 
   /* This flag indicates that the value of DT_MIPS_RLD_MAP dynamic entry
      is set to the address of __rld_obj_head as in IRIX5 and IRIX6.  */
-  bfd_boolean use_rld_obj_head;
+  bool use_rld_obj_head;
 
   /* The  __rld_map or __rld_obj_head symbol. */
   struct elf_link_hash_entry *rld_symbol;
 
   /* This is set if we see any mips16 stub sections.  */
-  bfd_boolean mips16_stubs_seen;
+  bool mips16_stubs_seen;
 
   /* True if we can generate copy relocs and PLTs.  */
-  bfd_boolean use_plts_and_copy_relocs;
+  bool use_plts_and_copy_relocs;
 
   /* True if we can only use 32-bit microMIPS instructions.  */
-  bfd_boolean insn32;
+  bool insn32;
 
   /* True if we suppress checks for invalid branches between ISA modes.  */
-  bfd_boolean ignore_branch_isa;
+  bool ignore_branch_isa;
 
   /* True if we are targetting R6 compact branches.  */
-  bfd_boolean compact_branches;
-
-  /* True if we're generating code for VxWorks.  */
-  bfd_boolean is_vxworks;
+  bool compact_branches;
 
   /* True if we already reported the small-data section overflow.  */
-  bfd_boolean small_data_overflow_reported;
+  bool small_data_overflow_reported;
 
   /* True if we use the special `__gnu_absolute_zero' symbol.  */
-  bfd_boolean use_absolute_zero;
+  bool use_absolute_zero;
 
   /* True if we have been configured for a GNU target.  */
-  bfd_boolean gnu_target;
+  bool gnu_target;
 
   /* Shortcuts to some dynamic sections, or NULL if they are not
      being used.  */
@@ -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
@@ -551,7 +546,20 @@ struct mips_htab_traverse_info
   bfd *output_bfd;
 
   /* Starts off FALSE and is set to TRUE if the link should be aborted.  */
-  bfd_boolean error;
+  bool error;
+};
+
+/* Used to store a REL high-part relocation such as R_MIPS_HI16 or
+   R_MIPS_GOT16.  REL is the relocation, INPUT_SECTION is the section
+   that contains the relocation field and DATA points to the start of
+   INPUT_SECTION.  */
+
+struct mips_hi16
+{
+  struct mips_hi16 *next;
+  bfd_byte *data;
+  asection *input_section;
+  arelent rel;
 };
 
 /* MIPS ELF private object data.  */
@@ -569,7 +577,7 @@ struct mips_elf_obj_tdata
 
   /* The abiflags for this object.  */
   Elf_Internal_ABIFlags_v0 abiflags;
-  bfd_boolean abiflags_valid;
+  bool abiflags_valid;
 
   /* The GOT requirements of input bfds.  */
   struct mips_got_info *got;
@@ -585,10 +593,10 @@ struct mips_elf_obj_tdata
 
   /* The Irix 5 support uses two virtual sections, which represent
      text/data symbols defined in dynamic objects.  */
-  asymbol *elf_data_symbol;
-  asymbol *elf_text_symbol;
   asection *elf_data_section;
   asection *elf_text_section;
+
+  struct mips_hi16 *mips_hi16_list;
 };
 
 /* Get MIPS ELF private object data from BFD's tdata.  */
@@ -633,7 +641,7 @@ struct extsym_info
   struct bfd_link_info *info;
   struct ecoff_debug_info *debug;
   const struct ecoff_debug_swap *swap;
-  bfd_boolean failed;
+  bool failed;
 };
 
 /* The names of the runtime procedure table symbols used on IRIX5.  */
@@ -703,13 +711,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)
@@ -760,11 +768,11 @@ typedef struct runtime_pdr {
 static struct mips_got_entry *mips_elf_create_local_got_entry
   (bfd *, struct bfd_link_info *, bfd *, bfd_vma, unsigned long,
    struct mips_elf_link_hash_entry *, int);
-static bfd_boolean mips_elf_sort_hash_table_f
+static bool mips_elf_sort_hash_table_f
   (struct mips_elf_link_hash_entry *, void *);
 static bfd_vma mips_elf_high
   (bfd_vma);
-static bfd_boolean mips_elf_create_dynamic_relocation
+static bool mips_elf_create_dynamic_relocation
   (bfd *, struct bfd_link_info *, const Elf_Internal_Rela *,
    struct mips_elf_link_hash_entry *, asection *, bfd_vma,
    bfd_vma *, asection *);
@@ -777,14 +785,14 @@ static bfd *reldyn_sorting_bfd;
 /* True if ABFD is for CPUs with load interlocking that include
    non-MIPS1 CPUs and R3900.  */
 #define LOAD_INTERLOCKS_P(abfd) \
-  (   ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) != E_MIPS_ARCH_1) \
-   || ((elf_elfheader (abfd)->e_flags & EF_MIPS_MACH) == E_MIPS_MACH_3900))
+  (   ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) != EF_MIPS_ARCH_1) \
+   || ((elf_elfheader (abfd)->e_flags & EF_MIPS_MACH) == EF_MIPS_MACH_3900))
 
 /* True if ABFD is for CPUs that are faster if JAL is converted to BAL.
    This should be safe for all architectures.  We enable this predicate
    for RM9000 for now.  */
 #define JAL_TO_BAL_P(abfd) \
-  ((elf_elfheader (abfd)->e_flags & EF_MIPS_MACH) == E_MIPS_MACH_9000)
+  ((elf_elfheader (abfd)->e_flags & EF_MIPS_MACH) == EF_MIPS_MACH_9000)
 
 /* True if ABFD is for CPUs that are faster if JALR is converted to BAL.
    This should be safe for all architectures.  We enable this predicate for
@@ -802,7 +810,7 @@ static bfd *reldyn_sorting_bfd;
 
 /* Nonzero if ABFD is using the O32 ABI.  */
 #define ABI_O32_P(abfd) \
-  ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == E_MIPS_ABI_O32)
+  ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == EF_MIPS_ABI_O32)
 
 /* Nonzero if ABFD is using the N32 ABI.  */
 #define ABI_N32_P(abfd) \
@@ -821,8 +829,8 @@ static bfd *reldyn_sorting_bfd;
 
 /* Nonzero if ABFD is MIPS R6.  */
 #define MIPSR6_P(abfd) \
-  ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32R6 \
-    || (elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_64R6)
+  ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_32R6 \
+    || (elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_64R6)
 
 /* The IRIX compatibility level we are striving for.  */
 #define IRIX_COMPAT(abfd) \
@@ -904,7 +912,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 +928,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.  */
@@ -1033,9 +1043,9 @@ static bfd *reldyn_sorting_bfd;
 #define CALL_STUB ".mips16.call."
 #define CALL_FP_STUB ".mips16.call.fp."
 
-#define FN_STUB_P(name) CONST_STRNEQ (name, FN_STUB)
-#define CALL_STUB_P(name) CONST_STRNEQ (name, CALL_STUB)
-#define CALL_FP_STUB_P(name) CONST_STRNEQ (name, CALL_FP_STUB)
+#define FN_STUB_P(name) startswith (name, FN_STUB)
+#define CALL_STUB_P(name) startswith (name, CALL_STUB)
+#define CALL_FP_STUB_P(name) startswith (name, CALL_FP_STUB)
 
 /* The format of the first PLT entry in an O32 executable.  */
 static const bfd_vma mips_o32_exec_plt0_entry[] =
@@ -1285,7 +1295,7 @@ bfd_get_micromips_32 (const bfd *abfd, c
 #define mips_elf_link_hash_traverse(table, func, info)			\
   (elf_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct elf_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct elf_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* Find the base offsets for thread-local storage in this object,
@@ -1346,14 +1356,14 @@ mips_elf_link_hash_newfunc (struct bfd_h
       ret->call_fp_stub = NULL;
       ret->mipsxhash_loc = 0;
       ret->global_got_area = GGA_NONE;
-      ret->got_only_for_calls = TRUE;
-      ret->readonly_reloc = FALSE;
-      ret->has_static_relocs = FALSE;
-      ret->no_fn_stub = FALSE;
-      ret->need_fn_stub = FALSE;
-      ret->has_nonpic_branches = FALSE;
-      ret->needs_lazy_stub = FALSE;
-      ret->use_plt_entry = FALSE;
+      ret->got_only_for_calls = true;
+      ret->readonly_reloc = false;
+      ret->has_static_relocs = false;
+      ret->no_fn_stub = false;
+      ret->need_fn_stub = false;
+      ret->has_nonpic_branches = false;
+      ret->needs_lazy_stub = false;
+      ret->use_plt_entry = false;
     }
 
   return (struct bfd_hash_entry *) ret;
@@ -1361,26 +1371,52 @@ mips_elf_link_hash_newfunc (struct bfd_h
 
 /* Allocate MIPS ELF private object data.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct mips_elf_obj_tdata),
-				  MIPS_ELF_DATA);
+  return bfd_elf_allocate_object (abfd, sizeof (struct mips_elf_obj_tdata));
 }
 
-bfd_boolean
-_bfd_mips_elf_new_section_hook (bfd *abfd, asection *sec)
+/* MIPS ELF uses a special find_nearest_line routine in order the
+   handle the ECOFF debugging information.  */
+
+struct mips_elf_find_line
 {
-  if (!sec->used_by_bfd)
-    {
-      struct _mips_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+  struct ecoff_debug_info d;
+  struct ecoff_find_line i;
+};
 
-      sdata = bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
+bool
+_bfd_mips_elf_free_cached_info (bfd *abfd)
+{
+  struct mips_elf_obj_tdata *tdata;
+
+  if ((bfd_get_format (abfd) == bfd_object
+       || bfd_get_format (abfd) == bfd_core)
+      && (tdata = mips_elf_tdata (abfd)) != NULL)
+    {
+      BFD_ASSERT (tdata->root.object_id == MIPS_ELF_DATA);
+      while (tdata->mips_hi16_list != NULL)
+	{
+	  struct mips_hi16 *hi = tdata->mips_hi16_list;
+	  tdata->mips_hi16_list = hi->next;
+	  free (hi);
+	}
+      if (tdata->find_line_info != NULL)
+	_bfd_ecoff_free_ecoff_debug_info (&tdata->find_line_info->d);
     }
+  return _bfd_elf_free_cached_info (abfd);
+}
+
+bool
+_bfd_mips_elf_new_section_hook (bfd *abfd, asection *sec)
+{
+  struct _mips_elf_section_data *sdata;
+
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
@@ -1388,7 +1424,7 @@ _bfd_mips_elf_new_section_hook (bfd *abf
 /* Read ECOFF debugging information from a .mdebug section into a
    ecoff_debug_info structure.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_read_ecoff_info (bfd *abfd, asection *section,
 			       struct ecoff_debug_info *debug)
 {
@@ -1409,67 +1445,50 @@ _bfd_mips_elf_read_ecoff_info (bfd *abfd
 
   symhdr = &debug->symbolic_header;
   (*swap->swap_hdr_in) (abfd, ext_hdr, symhdr);
+  free (ext_hdr);
+  ext_hdr = NULL;
 
   /* 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									\
+#define READ(ptr, offset, count, size)					\
+  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 = _bfd_malloc_and_read (abfd, amt + 1, amt);		\
+      if (debug->ptr == NULL)						\
 	goto error_return;						\
-    }
+      ((char *) debug->ptr)[amt] = 0;					\
+    } while (0)
 
-  READ (line, cbLineOffset, cbLine, sizeof (unsigned char), unsigned char *);
-  READ (external_dnr, cbDnOffset, idnMax, swap->external_dnr_size, void *);
-  READ (external_pdr, cbPdOffset, ipdMax, swap->external_pdr_size, void *);
-  READ (external_sym, cbSymOffset, isymMax, swap->external_sym_size, void *);
-  READ (external_opt, cbOptOffset, ioptMax, swap->external_opt_size, void *);
-  READ (external_aux, cbAuxOffset, iauxMax, sizeof (union aux_ext),
-	union aux_ext *);
-  READ (ss, cbSsOffset, issMax, sizeof (char), char *);
-  READ (ssext, cbSsExtOffset, issExtMax, sizeof (char), char *);
-  READ (external_fdr, cbFdOffset, ifdMax, swap->external_fdr_size, void *);
-  READ (external_rfd, cbRfdOffset, crfd, swap->external_rfd_size, void *);
-  READ (external_ext, cbExtOffset, iextMax, swap->external_ext_size, void *);
+  READ (line, cbLineOffset, cbLine, sizeof (unsigned char));
+  READ (external_dnr, cbDnOffset, idnMax, swap->external_dnr_size);
+  READ (external_pdr, cbPdOffset, ipdMax, swap->external_pdr_size);
+  READ (external_sym, cbSymOffset, isymMax, swap->external_sym_size);
+  READ (external_opt, cbOptOffset, ioptMax, swap->external_opt_size);
+  READ (external_aux, cbAuxOffset, iauxMax, sizeof (union aux_ext));
+  READ (ss, cbSsOffset, issMax, sizeof (char));
+  READ (ssext, cbSsExtOffset, issExtMax, sizeof (char));
+  READ (external_fdr, cbFdOffset, ifdMax, swap->external_fdr_size);
+  READ (external_rfd, cbRfdOffset, crfd, swap->external_rfd_size);
+  READ (external_ext, cbExtOffset, iextMax, swap->external_ext_size);
 #undef READ
 
-  debug->fdr = NULL;
-
-  return TRUE;
+  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);
-  return FALSE;
+  free (ext_hdr);
+  _bfd_ecoff_free_ecoff_debug_info (debug);
+  return false;
 }
 
 /* Swap RPDR (runtime procedure table entry) for output.  */
@@ -1492,7 +1511,7 @@ ecoff_swap_rpdr_out (bfd *abfd, const RP
 
 /* Create a runtime procedure table from the .mdebug section.  */
 
-static bfd_boolean
+static bool
 mips_elf_create_procedure_table (void *handle, bfd *abfd,
 				 struct bfd_link_info *info, asection *s,
 				 struct ecoff_debug_info *debug)
@@ -1613,47 +1632,36 @@ 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);
-
-  return TRUE;
+  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);
-  return FALSE;
+  free (epdr);
+  free (rpdr);
+  free (esym);
+  free (ss);
+  free (sv);
+  return false;
 }
 
 /* We're going to create a stub for H.  Create a symbol for the stub's
    value and size, to help make the disassembly easier to read.  */
 
-static bfd_boolean
+static bool
 mips_elf_create_stub_symbol (struct bfd_link_info *info,
 			     struct mips_elf_link_hash_entry *h,
 			     const char *prefix, asection *s, bfd_vma value,
 			     bfd_vma size)
 {
-  bfd_boolean micromips_p = ELF_ST_IS_MICROMIPS (h->root.other);
+  bool micromips_p = ELF_ST_IS_MICROMIPS (h->root.other);
   struct bfd_link_hash_entry *bh;
   struct elf_link_hash_entry *elfh;
   char *name;
-  bfd_boolean res;
+  bool res;
 
   if (micromips_p)
     value |= 1;
@@ -1663,10 +1671,10 @@ mips_elf_create_stub_symbol (struct bfd_
   bh = NULL;
   res = _bfd_generic_link_add_one_symbol (info, s->owner, name,
 					  BSF_LOCAL, s, value, NULL,
-					  TRUE, FALSE, &bh);
+					  true, false, &bh);
   free (name);
   if (! res)
-    return FALSE;
+    return false;
 
   /* Make it a local function.  */
   elfh = (struct elf_link_hash_entry *) bh;
@@ -1675,14 +1683,14 @@ mips_elf_create_stub_symbol (struct bfd_
   elfh->forced_local = 1;
   if (micromips_p)
     elfh->other = ELF_ST_SET_MICROMIPS (elfh->other);
-  return TRUE;
+  return true;
 }
 
 /* We're about to redefine H.  Create a symbol to represent H's
    current value and size, to help make the disassembly easier
    to read.  */
 
-static bfd_boolean
+static bool
 mips_elf_create_shadow_symbol (struct bfd_link_info *info,
 			       struct mips_elf_link_hash_entry *h,
 			       const char *prefix)
@@ -1692,7 +1700,7 @@ mips_elf_create_shadow_symbol (struct bf
   char *name;
   asection *s;
   bfd_vma value;
-  bfd_boolean res;
+  bool res;
 
   /* Read the symbol's value.  */
   BFD_ASSERT (h->root.root.type == bfd_link_hash_defined
@@ -1705,10 +1713,10 @@ mips_elf_create_shadow_symbol (struct bf
   bh = NULL;
   res = _bfd_generic_link_add_one_symbol (info, s->owner, name,
 					  BSF_LOCAL, s, value, NULL,
-					  TRUE, FALSE, &bh);
+					  true, false, &bh);
   free (name);
   if (! res)
-    return FALSE;
+    return false;
 
   /* Make it local and copy the other attributes from H.  */
   elfh = (struct elf_link_hash_entry *) bh;
@@ -1716,13 +1724,13 @@ mips_elf_create_shadow_symbol (struct bf
   elfh->other = h->root.other;
   elfh->size = h->root.size;
   elfh->forced_local = 1;
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if relocations in SECTION can refer directly to a MIPS16
    function rather than to a hard-float stub.  */
 
-static bfd_boolean
+static bool
 section_allows_mips16_refs_p (asection *section)
 {
   const char *name;
@@ -1774,7 +1782,7 @@ mips_elf_check_mips16_stubs (struct bfd_
       && h->root.dynindx != -1)
     {
       mips_elf_create_shadow_symbol (info, h, ".mips16.");
-      h->need_fn_stub = TRUE;
+      h->need_fn_stub = true;
     }
 
   if (h->fn_stub != NULL
@@ -1846,7 +1854,7 @@ mips_elf_la25_stub_eq (const void *entry
    the linker's implementation of add_stub_function.  Return true on
    success.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_init_stubs (struct bfd_link_info *info,
 			  asection *(*fn) (const char *, asection *,
 					   asection *))
@@ -1855,15 +1863,15 @@ _bfd_mips_elf_init_stubs (struct bfd_lin
 
   htab = mips_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   htab->add_stub_section = fn;
   htab->la25_stubs = htab_try_create (1, mips_elf_la25_stub_hash,
 				      mips_elf_la25_stub_eq, NULL);
   if (htab->la25_stubs == NULL)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Return true if H is a locally-defined PIC function, in the sense
@@ -1872,7 +1880,7 @@ _bfd_mips_elf_init_stubs (struct bfd_lin
    so they themselves never need $25 to be valid.  Only non-MIPS16
    entry points are of interest here.  */
 
-static bfd_boolean
+static bool
 mips_elf_local_pic_function_p (struct mips_elf_link_hash_entry *h)
 {
   return ((h->root.root.type == bfd_link_hash_defined
@@ -1910,7 +1918,7 @@ mips_elf_get_la25_target (struct mips_el
    by inserting an LUI/ADDIU pair before the target function.
    Create the section and redirect the function symbol to it.  */
 
-static bfd_boolean
+static bool
 mips_elf_add_la25_intro (struct mips_elf_la25_stub *stub,
 			 struct bfd_link_info *info)
 {
@@ -1921,12 +1929,12 @@ mips_elf_add_la25_intro (struct mips_elf
 
   htab = mips_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Create a unique name for the new section.  */
   name = bfd_malloc (11 + sizeof (".text.stub."));
   if (name == NULL)
-    return FALSE;
+    return false;
   sprintf (name, ".text.stub.%d", (int) htab_elements (htab->la25_stubs));
 
   /* Create the section.  */
@@ -1934,12 +1942,12 @@ mips_elf_add_la25_intro (struct mips_elf
   s = htab->add_stub_section (name, input_section,
 			      input_section->output_section);
   if (s == NULL)
-    return FALSE;
+    return false;
 
   /* Make sure that any padding goes before the stub.  */
   align = input_section->alignment_power;
-  if (!bfd_set_section_alignment (s, align))
-    return FALSE;
+  if (!bfd_link_align_section (s, align))
+    return false;
   if (align > 3)
     s->size = (1 << align) - 8;
 
@@ -1950,14 +1958,14 @@ mips_elf_add_la25_intro (struct mips_elf
 
   /* Allocate room for it.  */
   s->size += 8;
-  return TRUE;
+  return true;
 }
 
 /* STUB describes an la25 stub that we have decided to implement
    with a separate trampoline.  Allocate room for it and redirect
    the function symbol to it.  */
 
-static bfd_boolean
+static bool
 mips_elf_add_la25_trampoline (struct mips_elf_la25_stub *stub,
 			      struct bfd_link_info *info)
 {
@@ -1966,7 +1974,7 @@ mips_elf_add_la25_trampoline (struct mip
 
   htab = mips_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* Create a trampoline section, if we haven't already.  */
   s = htab->strampoline;
@@ -1975,8 +1983,8 @@ mips_elf_add_la25_trampoline (struct mip
       asection *input_section = stub->h->root.root.u.def.section;
       s = htab->add_stub_section (".text", NULL,
 				  input_section->output_section);
-      if (s == NULL || !bfd_set_section_alignment (s, 4))
-	return FALSE;
+      if (s == NULL || !bfd_link_align_section (s, 4))
+	return false;
       htab->strampoline = s;
     }
 
@@ -1987,19 +1995,19 @@ mips_elf_add_la25_trampoline (struct mip
 
   /* Allocate room for it.  */
   s->size += 16;
-  return TRUE;
+  return true;
 }
 
 /* H describes a symbol that needs an la25 stub.  Make sure that an
    appropriate stub exists and point H at it.  */
 
-static bfd_boolean
+static bool
 mips_elf_add_la25_stub (struct bfd_link_info *info,
 			struct mips_elf_link_hash_entry *h)
 {
   struct mips_elf_link_hash_table *htab;
   struct mips_elf_la25_stub search, *stub;
-  bfd_boolean use_trampoline_p;
+  bool use_trampoline_p;
   asection *s;
   bfd_vma value;
   void **slot;
@@ -2012,24 +2020,24 @@ mips_elf_add_la25_stub (struct bfd_link_
   /* See if we've already created an equivalent stub.  */
   htab = mips_elf_hash_table (info);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   slot = htab_find_slot (htab->la25_stubs, &search, INSERT);
   if (slot == NULL)
-    return FALSE;
+    return false;
 
   stub = (struct mips_elf_la25_stub *) *slot;
   if (stub != NULL)
     {
       /* We can reuse the existing stub.  */
       h->la25_stub = stub;
-      return TRUE;
+      return true;
     }
 
   /* Create a permanent copy of ENTRY and add it to the hash table.  */
   stub = bfd_malloc (sizeof (search));
   if (stub == NULL)
-    return FALSE;
+    return false;
   *stub = search;
   *slot = stub;
 
@@ -2049,7 +2057,7 @@ mips_elf_add_la25_stub (struct bfd_link_
 /* A mips_elf_link_hash_traverse callback that is called before sizing
    sections.  DATA points to a mips_htab_traverse_info structure.  */
 
-static bfd_boolean
+static bool
 mips_elf_check_symbols (struct mips_elf_link_hash_entry *h, void *data)
 {
   struct mips_htab_traverse_info *hti;
@@ -2063,7 +2071,7 @@ mips_elf_check_symbols (struct mips_elf_
       /* PR 12845: If H is in a section that has been garbage
 	 collected it will have its output section set to *ABS*.  */
       if (bfd_is_abs_section (h->root.root.u.def.section->output_section))
-	return TRUE;
+	return true;
 
       /* H is a function that might need $25 to be valid on entry.
 	 If we're creating a non-PIC relocatable object, mark H as
@@ -2077,11 +2085,11 @@ mips_elf_check_symbols (struct mips_elf_
 	}
       else if (h->has_nonpic_branches && !mips_elf_add_la25_stub (hti->info, h))
 	{
-	  hti->error = TRUE;
-	  return FALSE;
+	  hti->error = true;
+	  return false;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* R_MIPS16_26 is used for the mips16 jal and jalx instructions.
@@ -2173,7 +2181,7 @@ mips_elf_check_symbols (struct mips_elf_
    relocatable field is shifted by 1 rather than 2 and the same bit
    shuffling is done as with the relocations above.  */
 
-static inline bfd_boolean
+static inline bool
 mips16_reloc_p (int r_type)
 {
   switch (r_type)
@@ -2192,34 +2200,36 @@ mips16_reloc_p (int r_type)
     case R_MIPS16_TLS_TPREL_HI16:
     case R_MIPS16_TLS_TPREL_LO16:
     case R_MIPS16_PC16_S1:
-      return TRUE;
+      return true;
 
     default:
-      return FALSE;
+      return false;
     }
 }
 
 /* Check if a microMIPS reloc.  */
 
-static inline bfd_boolean
+static inline bool
 micromips_reloc_p (unsigned int r_type)
 {
   return r_type >= R_MICROMIPS_min && r_type < R_MICROMIPS_max;
 }
 
 /* Similar to MIPS16, the two 16-bit halves in microMIPS must be swapped
-   on a little-endian system.  This does not apply to R_MICROMIPS_PC7_S1
-   and R_MICROMIPS_PC10_S1 relocs that apply to 16-bit instructions.  */
+   on a little-endian system.  This does not apply to R_MICROMIPS_PC7_S1,
+   R_MICROMIPS_PC10_S1 and R_MICROMIPS_GPREL7_S2 relocs that apply to
+   16-bit instructions.  */
 
-static inline bfd_boolean
+static inline bool
 micromips_reloc_shuffle_p (unsigned int r_type)
 {
   return (micromips_reloc_p (r_type)
 	  && r_type != R_MICROMIPS_PC7_S1
-	  && r_type != R_MICROMIPS_PC10_S1);
+	  && r_type != R_MICROMIPS_PC10_S1
+	  && r_type != R_MICROMIPS_GPREL7_S2);
 }
 
-static inline bfd_boolean
+static inline bool
 got16_reloc_p (int r_type)
 {
   return (r_type == R_MIPS_GOT16
@@ -2227,7 +2237,7 @@ got16_reloc_p (int r_type)
 	  || r_type == R_MICROMIPS_GOT16);
 }
 
-static inline bfd_boolean
+static inline bool
 call16_reloc_p (int r_type)
 {
   return (r_type == R_MIPS_CALL16
@@ -2235,37 +2245,37 @@ call16_reloc_p (int r_type)
 	  || r_type == R_MICROMIPS_CALL16);
 }
 
-static inline bfd_boolean
+static inline bool
 got_disp_reloc_p (unsigned int r_type)
 {
   return r_type == R_MIPS_GOT_DISP || r_type == R_MICROMIPS_GOT_DISP;
 }
 
-static inline bfd_boolean
+static inline bool
 got_page_reloc_p (unsigned int r_type)
 {
   return r_type == R_MIPS_GOT_PAGE || r_type == R_MICROMIPS_GOT_PAGE;
 }
 
-static inline bfd_boolean
+static inline bool
 got_lo16_reloc_p (unsigned int r_type)
 {
   return r_type == R_MIPS_GOT_LO16 || r_type == R_MICROMIPS_GOT_LO16;
 }
 
-static inline bfd_boolean
+static inline bool
 call_hi16_reloc_p (unsigned int r_type)
 {
   return r_type == R_MIPS_CALL_HI16 || r_type == R_MICROMIPS_CALL_HI16;
 }
 
-static inline bfd_boolean
+static inline bool
 call_lo16_reloc_p (unsigned int r_type)
 {
   return r_type == R_MIPS_CALL_LO16 || r_type == R_MICROMIPS_CALL_LO16;
 }
 
-static inline bfd_boolean
+static inline bool
 hi16_reloc_p (int r_type)
 {
   return (r_type == R_MIPS_HI16
@@ -2274,7 +2284,7 @@ hi16_reloc_p (int r_type)
 	  || r_type == R_MIPS_PCHI16);
 }
 
-static inline bfd_boolean
+static inline bool
 lo16_reloc_p (int r_type)
 {
   return (r_type == R_MIPS_LO16
@@ -2283,13 +2293,24 @@ lo16_reloc_p (int r_type)
 	  || r_type == R_MIPS_PCLO16);
 }
 
-static inline bfd_boolean
+static inline bool
+tls_hi16_reloc_p (int r_type)
+{
+  return (r_type == R_MIPS_TLS_DTPREL_HI16
+	  || r_type == R_MIPS_TLS_TPREL_HI16
+	  || r_type == R_MIPS16_TLS_DTPREL_HI16
+	  || r_type == R_MIPS16_TLS_TPREL_HI16
+	  || r_type == R_MICROMIPS_TLS_DTPREL_HI16
+	  || r_type == R_MICROMIPS_TLS_TPREL_HI16);
+}
+
+static inline bool
 mips16_call_reloc_p (int r_type)
 {
   return r_type == R_MIPS16_26 || r_type == R_MIPS16_CALL16;
 }
 
-static inline bfd_boolean
+static inline bool
 jal_reloc_p (int r_type)
 {
   return (r_type == R_MIPS_26
@@ -2297,7 +2318,7 @@ jal_reloc_p (int r_type)
 	  || r_type == R_MICROMIPS_26_S1);
 }
 
-static inline bfd_boolean
+static inline bool
 b_reloc_p (int r_type)
 {
   return (r_type == R_MIPS_PC26_S2
@@ -2310,14 +2331,14 @@ b_reloc_p (int r_type)
 	  || r_type == R_MICROMIPS_PC7_S1);
 }
 
-static inline bfd_boolean
+static inline bool
 aligned_pcrel_reloc_p (int r_type)
 {
   return (r_type == R_MIPS_PC18_S3
 	  || r_type == R_MIPS_PC19_S2);
 }
 
-static inline bfd_boolean
+static inline bool
 branch_reloc_p (int r_type)
 {
   return (r_type == R_MIPS_26
@@ -2327,14 +2348,14 @@ branch_reloc_p (int r_type)
 	  || r_type == R_MIPS_GNU_REL16_S2);
 }
 
-static inline bfd_boolean
+static inline bool
 mips16_branch_reloc_p (int r_type)
 {
   return (r_type == R_MIPS16_26
 	  || r_type == R_MIPS16_PC16_S1);
 }
 
-static inline bfd_boolean
+static inline bool
 micromips_branch_reloc_p (int r_type)
 {
   return (r_type == R_MICROMIPS_26_S1
@@ -2343,7 +2364,7 @@ micromips_branch_reloc_p (int r_type)
 	  || r_type == R_MICROMIPS_PC7_S1);
 }
 
-static inline bfd_boolean
+static inline bool
 tls_gd_reloc_p (unsigned int r_type)
 {
   return (r_type == R_MIPS_TLS_GD
@@ -2351,7 +2372,7 @@ tls_gd_reloc_p (unsigned int r_type)
 	  || r_type == R_MICROMIPS_TLS_GD);
 }
 
-static inline bfd_boolean
+static inline bool
 tls_ldm_reloc_p (unsigned int r_type)
 {
   return (r_type == R_MIPS_TLS_LDM
@@ -2359,7 +2380,7 @@ tls_ldm_reloc_p (unsigned int r_type)
 	  || r_type == R_MICROMIPS_TLS_LDM);
 }
 
-static inline bfd_boolean
+static inline bool
 tls_gottprel_reloc_p (unsigned int r_type)
 {
   return (r_type == R_MIPS_TLS_GOTTPREL
@@ -2367,13 +2388,19 @@ tls_gottprel_reloc_p (unsigned int r_typ
 	  || r_type == R_MICROMIPS_TLS_GOTTPREL);
 }
 
+static inline bool
+needs_shuffle (int r_type)
+{
+  return mips16_reloc_p (r_type) || micromips_reloc_shuffle_p (r_type);
+}
+
 void
 _bfd_mips_elf_reloc_unshuffle (bfd *abfd, int r_type,
-			       bfd_boolean jal_shuffle, bfd_byte *data)
+			       bool jal_shuffle, bfd_byte *data)
 {
   bfd_vma first, second, val;
 
-  if (!mips16_reloc_p (r_type) && !micromips_reloc_shuffle_p (r_type))
+  if (!needs_shuffle (r_type))
     return;
 
   /* Pick up the first and second halfwords of the instruction.  */
@@ -2392,11 +2419,11 @@ _bfd_mips_elf_reloc_unshuffle (bfd *abfd
 
 void
 _bfd_mips_elf_reloc_shuffle (bfd *abfd, int r_type,
-			     bfd_boolean jal_shuffle, bfd_byte *data)
+			     bool jal_shuffle, bfd_byte *data)
 {
   bfd_vma first, second, val;
 
-  if (!mips16_reloc_p (r_type) && !micromips_reloc_shuffle_p (r_type))
+  if (!needs_shuffle (r_type))
     return;
 
   val = bfd_get_32 (abfd, data);
@@ -2420,10 +2447,36 @@ _bfd_mips_elf_reloc_shuffle (bfd *abfd,
   bfd_put_16 (abfd, first, data);
 }
 
+/* Perform reloc offset checking.
+   We can only use bfd_reloc_offset_in_range, which takes into account
+   the size of the field being relocated, when section contents will
+   be accessed because mips object files may use relocations that seem
+   to access beyond section limits.
+   gas/testsuite/gas/mips/dla-reloc.s is an example that puts
+   R_MIPS_SUB, a 64-bit relocation, on the last instruction in the
+   section.  The R_MIPS_SUB applies to the addend for the next reloc
+   rather than the section contents.
+
+   CHECK is CHECK_STD for the standard bfd_reloc_offset_in_range check,
+   CHECK_INPLACE to only check partial_inplace relocs, and
+   CHECK_SHUFFLE to only check relocs that shuffle/unshuffle.  */
+
+bool
+_bfd_mips_reloc_offset_in_range (bfd *abfd, asection *input_section,
+				 arelent *reloc_entry, enum reloc_check check)
+{
+  if (check == check_inplace && !reloc_entry->howto->partial_inplace)
+    return true;
+  if (check == check_shuffle && !needs_shuffle (reloc_entry->howto->type))
+    return true;
+  return bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				    input_section, reloc_entry->address);
+}
+
 bfd_reloc_status_type
 _bfd_mips_elf_gprel16_with_gp (bfd *abfd, asymbol *symbol,
 			       arelent *reloc_entry, asection *input_section,
-			       bfd_boolean relocatable, void *data, bfd_vma gp)
+			       bool relocatable, void *data, bfd_vma gp)
 {
   bfd_vma relocation;
   bfd_signed_vma val;
@@ -2434,11 +2487,11 @@ _bfd_mips_elf_gprel16_with_gp (bfd *abfd
   else
     relocation = symbol->value;
 
-  relocation += symbol->section->output_section->vma;
-  relocation += symbol->section->output_offset;
-
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
-    return bfd_reloc_outofrange;
+  if (symbol->section->output_section != NULL)
+    {
+      relocation += symbol->section->output_section->vma;
+      relocation += symbol->section->output_offset;
+    }
 
   /* Set val to the offset into the section or symbol.  */
   val = reloc_entry->addend;
@@ -2454,6 +2507,10 @@ _bfd_mips_elf_gprel16_with_gp (bfd *abfd
 
   if (reloc_entry->howto->partial_inplace)
     {
+      if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd, input_section,
+				      reloc_entry->address))
+	return bfd_reloc_outofrange;
+
       status = _bfd_relocate_contents (reloc_entry->howto, abfd, val,
 				       (bfd_byte *) data
 				       + reloc_entry->address);
@@ -2469,23 +2526,6 @@ _bfd_mips_elf_gprel16_with_gp (bfd *abfd
   return bfd_reloc_ok;
 }
 
-/* Used to store a REL high-part relocation such as R_MIPS_HI16 or
-   R_MIPS_GOT16.  REL is the relocation, INPUT_SECTION is the section
-   that contains the relocation field and DATA points to the start of
-   INPUT_SECTION.  */
-
-struct mips_hi16
-{
-  struct mips_hi16 *next;
-  bfd_byte *data;
-  asection *input_section;
-  arelent rel;
-};
-
-/* FIXME: This should not be a static variable.  */
-
-static struct mips_hi16 *mips_hi16_list;
-
 /* A howto special_function for REL *HI16 relocations.  We can only
    calculate the correct value once we've seen the partnering
    *LO16 relocation, so just save the information for later.
@@ -2496,12 +2536,13 @@ static struct mips_hi16 *mips_hi16_list;
    simplies the relocation handling in gcc.  */
 
 bfd_reloc_status_type
-_bfd_mips_elf_hi16_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
+_bfd_mips_elf_hi16_reloc (bfd *abfd, arelent *reloc_entry,
 			  asymbol *symbol ATTRIBUTE_UNUSED, void *data,
 			  asection *input_section, bfd *output_bfd,
 			  char **error_message ATTRIBUTE_UNUSED)
 {
   struct mips_hi16 *n;
+  struct mips_elf_obj_tdata *tdata;
 
   if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
     return bfd_reloc_outofrange;
@@ -2510,11 +2551,12 @@ _bfd_mips_elf_hi16_reloc (bfd *abfd ATTR
   if (n == NULL)
     return bfd_reloc_outofrange;
 
-  n->next = mips_hi16_list;
+  tdata = mips_elf_tdata (abfd);
+  n->next = tdata->mips_hi16_list;
   n->data = data;
   n->input_section = input_section;
   n->rel = *reloc_entry;
-  mips_hi16_list = n;
+  tdata->mips_hi16_list = n;
 
   if (output_bfd != NULL)
     reloc_entry->address += input_section->output_offset;
@@ -2554,22 +2596,39 @@ _bfd_mips_elf_lo16_reloc (bfd *abfd, are
 {
   bfd_vma vallo;
   bfd_byte *location = (bfd_byte *) data + reloc_entry->address;
+  struct mips_elf_obj_tdata *tdata;
 
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd, input_section,
+				  reloc_entry->address))
     return bfd_reloc_outofrange;
 
-  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, FALSE,
+  _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, false,
 				 location);
-  vallo = bfd_get_32 (abfd, location);
-  _bfd_mips_elf_reloc_shuffle (abfd, reloc_entry->howto->type, FALSE,
+  /* The high 16 bits of the addend are stored in the high insn, the
+     low 16 bits in the low insn, but there is a catch:  You can't
+     just concatenate the high and low parts.  The high part of the
+     addend is adjusted for the fact that the low part is sign
+     extended.  For example, an addend of 0x38000 would have 0x0004 in
+     the high part and 0x8000 (=0xff..f8000) in the low part.
+     To extract the actual addend, calculate
+     ((hi & 0xffff) << 16) + ((lo & 0xffff) ^ 0x8000) - 0x8000.  */
+  vallo = _bfd_mips_elf_sign_extend (bfd_get_32 (abfd, location) & 0xffff, 16);
+  _bfd_mips_elf_reloc_shuffle (abfd, reloc_entry->howto->type, false,
 			       location);
+  /* Add in the separate addend, if any.  Since we are REL here this
+     will have been set and the in-place addend cleared if we have
+     been called from GAS via `bfd_install_relocation'.  */
+  vallo += reloc_entry->addend;
 
-  while (mips_hi16_list != NULL)
+  tdata = mips_elf_tdata (abfd);
+  while (tdata->mips_hi16_list != NULL)
     {
       bfd_reloc_status_type ret;
       struct mips_hi16 *hi;
+      bfd_vma addhi;
+      bfd_vma addlo;
 
-      hi = mips_hi16_list;
+      hi = tdata->mips_hi16_list;
 
       /* R_MIPS*_GOT16 relocations are something of a special case.  We
 	 want to install the addend in the same way as for a R_MIPS*_HI16
@@ -2577,15 +2636,25 @@ _bfd_mips_elf_lo16_reloc (bfd *abfd, are
 	 relocations can also be used with global symbols, their howto
 	 has a rightshift of 0.  */
       if (hi->rel.howto->type == R_MIPS_GOT16)
-	hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MIPS_HI16, FALSE);
+	hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MIPS_HI16, false);
       else if (hi->rel.howto->type == R_MIPS16_GOT16)
-	hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MIPS16_HI16, FALSE);
+	hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MIPS16_HI16, false);
       else if (hi->rel.howto->type == R_MICROMIPS_GOT16)
-	hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MICROMIPS_HI16, FALSE);
+	hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MICROMIPS_HI16, false);
 
-      /* VALLO is a signed 16-bit number.  Bias it by 0x8000 so that any
-	 carry or borrow will induce a change of +1 or -1 in the high part.  */
-      hi->rel.addend += (vallo + 0x8000) & 0xffff;
+      /* We will be applying (symbol + addend) & 0xffff to the low insn,
+	 and we want to apply (symbol + addend + 0x8000) >> 16 to the
+	 high insn (the +0x8000 adjusting for when the applied low part is
+	 negative).  */
+      addhi = (hi->rel.addend + 0x8000) & ~(bfd_vma) 0xffff;
+      addlo = vallo;
+
+      /* For a PC-relative relocation the PCLO16 part of the addend
+	 is relative to its PC and not ours, so we need to adjust it.  */
+      if (hi->rel.howto->type == R_MIPS_PCHI16)
+	addlo -= reloc_entry->address - hi->rel.address;
+
+      hi->rel.addend = addhi + _bfd_mips_elf_sign_extend (addlo & 0xffff, 16);
 
       ret = _bfd_mips_elf_generic_reloc (abfd, &hi->rel, symbol, hi->data,
 					 hi->input_section, output_bfd,
@@ -2593,7 +2662,7 @@ _bfd_mips_elf_lo16_reloc (bfd *abfd, are
       if (ret != bfd_reloc_ok)
 	return ret;
 
-      mips_hi16_list = hi->next;
+      tdata->mips_hi16_list = hi->next;
       free (hi);
     }
 
@@ -2614,16 +2683,19 @@ _bfd_mips_elf_generic_reloc (bfd *abfd A
 {
   bfd_signed_vma val;
   bfd_reloc_status_type status;
-  bfd_boolean relocatable;
+  bool relocatable;
 
   relocatable = (output_bfd != NULL);
 
-  if (reloc_entry->address > bfd_get_section_limit (abfd, input_section))
+  if (!_bfd_mips_reloc_offset_in_range (abfd, input_section, reloc_entry,
+					(relocatable
+					 ? check_inplace : check_std)))
     return bfd_reloc_outofrange;
 
   /* Build up the field adjustment in VAL.  */
   val = 0;
-  if (!relocatable || (symbol->flags & BSF_SECTION_SYM) != 0)
+  if ((!relocatable || (symbol->flags & BSF_SECTION_SYM) != 0)
+      && symbol->section->output_section != NULL)
     {
       /* Either we're calculating the final field value or we have a
 	 relocation against a section symbol.  Add in the section's
@@ -2658,12 +2730,35 @@ _bfd_mips_elf_generic_reloc (bfd *abfd A
       /* Add in the separate addend, if any.  */
       val += reloc_entry->addend;
 
+      /* The high 16 bits of the addend are stored in the high insn, the
+	 low 16 bits in the low insn, but there is a catch:  You can't
+	 just concatenate the high and low parts.  The high part of the
+	 addend is adjusted for the fact that the low part is sign
+	 extended.  For example, an addend of 0x38000 would have 0x0004 in
+	 the high part and 0x8000 (=0xff..f8000) in the low part.
+	 We will be applying (symbol + addend) & 0xffff to the low insn,
+	 and we want to apply (symbol + addend + 0x8000) >> 16 to the
+	 high insn (the +0x8000 adjusting for when the applied low part is
+	 negative).  Analogously for the higher parts of a 64-bit addend.  */
+      if (reloc_entry->howto->bitsize == 16
+	  && reloc_entry->howto->rightshift % 16 == 0)
+#ifdef BFD64
+	val += 0x800080008000ULL >> (48 - reloc_entry->howto->rightshift);
+#else
+	{
+	  if (reloc_entry->howto->rightshift <= 16)
+	    val += 0x8000 >> (16 - reloc_entry->howto->rightshift);
+	  else
+	    abort ();
+	}
+#endif
+
       /* Add VAL to the relocation field.  */
-      _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, FALSE,
+      _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, false,
 				     location);
       status = _bfd_relocate_contents (reloc_entry->howto, abfd, val,
 				       location);
-      _bfd_mips_elf_reloc_shuffle (abfd, reloc_entry->howto->type, FALSE,
+      _bfd_mips_elf_reloc_shuffle (abfd, reloc_entry->howto->type, false,
 				   location);
 
       if (status != bfd_reloc_ok)
@@ -2915,32 +3010,32 @@ sort_dynamic_relocs_64 (const void *arg1
    stripped but required by a reloc.  In particular, it can not happen
    when generating a final executable.  */
 
-static bfd_boolean
+static bool
 mips_elf_output_extsym (struct mips_elf_link_hash_entry *h, void *data)
 {
   struct extsym_info *einfo = data;
-  bfd_boolean strip;
+  bool strip;
   asection *sec, *output_section;
 
   if (h->root.indx == -2)
-    strip = FALSE;
+    strip = false;
   else if ((h->root.def_dynamic
 	    || h->root.ref_dynamic
 	    || h->root.type == bfd_link_hash_new)
 	   && !h->root.def_regular
 	   && !h->root.ref_regular)
-    strip = TRUE;
+    strip = true;
   else if (einfo->info->strip == strip_all
 	   || (einfo->info->strip == strip_some
 	       && bfd_hash_lookup (einfo->info->keep_hash,
 				   h->root.root.root.string,
-				   FALSE, FALSE) == NULL))
-    strip = TRUE;
+				   false, false) == NULL))
+    strip = true;
   else
-    strip = FALSE;
+    strip = false;
 
   if (strip)
-    return TRUE;
+    return true;
 
   if (h->esym.ifd == -2)
     {
@@ -3073,11 +3168,11 @@ mips_elf_output_extsym (struct mips_elf_
 				      h->root.root.root.string,
 				      &h->esym))
     {
-      einfo->failed = TRUE;
-      return FALSE;
+      einfo->failed = true;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* A comparison routine used to sort .gptab entries.  */
@@ -3096,7 +3191,7 @@ gptab_compare (const void *p1, const voi
 /* Use all 64 bits of a bfd_vma for the computation of a 32-bit
    hash number.  */
 
-static INLINE hashval_t
+static inline hashval_t
 mips_elf_hash_bfd_vma (bfd_vma addr)
 {
 #ifdef BFD64
@@ -3128,7 +3223,7 @@ mips_elf_got_entry_eq (const void *entry
 
   return (e1->symndx == e2->symndx
 	  && e1->tls_type == e2->tls_type
-	  && (e1->tls_type == GOT_TLS_LDM ? TRUE
+	  && (e1->tls_type == GOT_TLS_LDM ? true
 	      : !e1->abfd ? !e2->abfd && e1->d.address == e2->d.address
 	      : e1->symndx >= 0 ? (e1->abfd == e2->abfd
 				   && e1->d.addend == e2->d.addend)
@@ -3208,7 +3303,7 @@ mips_elf_create_got_info (bfd *abfd)
    CREATE_P and if ABFD doesn't already have a GOT.  */
 
 static struct mips_got_info *
-mips_elf_bfd_got (bfd *abfd, bfd_boolean create_p)
+mips_elf_bfd_got (bfd *abfd, bool create_p)
 {
   struct mips_elf_obj_tdata *tdata;
 
@@ -3247,7 +3342,7 @@ mips_elf_replace_bfd_got (bfd *abfd, str
    if creation fails.  */
 
 static asection *
-mips_elf_rel_dyn_section (struct bfd_link_info *info, bfd_boolean create_p)
+mips_elf_rel_dyn_section (struct bfd_link_info *info, bool create_p)
 {
   const char *dname;
   asection *sreloc;
@@ -3319,8 +3414,8 @@ mips_tls_got_relocs (struct bfd_link_inf
 		     struct elf_link_hash_entry *h)
 {
   int indx = 0;
-  bfd_boolean need_relocs = FALSE;
-  bfd_boolean dyn = elf_hash_table (info)->dynamic_sections_created;
+  bool need_relocs = false;
+  bool dyn = elf_hash_table (info)->dynamic_sections_created;
 
   if (h != NULL
       && h->dynindx != -1
@@ -3332,7 +3427,7 @@ mips_tls_got_relocs (struct bfd_link_inf
       && (h == NULL
 	  || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
 	  || h->root.type != bfd_link_hash_undefweak))
-    need_relocs = TRUE;
+    need_relocs = true;
 
   if (!need_relocs)
     return 0;
@@ -3413,12 +3508,12 @@ mips_elf_initialize_tls_slots (bfd *abfd
 			       struct mips_elf_link_hash_entry *h,
 			       bfd_vma value)
 {
-  bfd_boolean dyn = elf_hash_table (info)->dynamic_sections_created;
+  bool dyn = elf_hash_table (info)->dynamic_sections_created;
   struct mips_elf_link_hash_table *htab;
   int indx;
   asection *sreloc, *sgot;
   bfd_vma got_offset, got_offset2;
-  bfd_boolean need_relocs = FALSE;
+  bool need_relocs = false;
 
   htab = mips_elf_hash_table (info);
   if (htab == NULL)
@@ -3440,7 +3535,7 @@ mips_elf_initialize_tls_slots (bfd *abfd
       && (h == NULL
 	  || ELF_ST_VISIBILITY (h->root.other) == STV_DEFAULT
 	  || h->root.type != bfd_link_hash_undefweak))
-    need_relocs = TRUE;
+    need_relocs = true;
 
   /* MINUS_ONE means the symbol is not defined in this object.  It may not
      be defined at all; assume that the value doesn't matter in that
@@ -3449,7 +3544,7 @@ mips_elf_initialize_tls_slots (bfd *abfd
 	      || h->root.root.type == bfd_link_hash_undefweak);
 
   /* Emit necessary relocations.  */
-  sreloc = mips_elf_rel_dyn_section (info, FALSE);
+  sreloc = mips_elf_rel_dyn_section (info, false);
   got_offset = entry->gotidx;
 
   switch (entry->tls_type)
@@ -3525,7 +3620,7 @@ mips_elf_initialize_tls_slots (bfd *abfd
       abort ();
     }
 
-  entry->tls_initialized = TRUE;
+  entry->tls_initialized = true;
 }
 
 /* Return the offset from _GLOBAL_OFFSET_TABLE_ of the .got.plt entry
@@ -3608,7 +3703,7 @@ mips_elf_primary_global_got_index (bfd *
      indices into the primary GOT.  That makes it easy to calculate the
      GOT offset.  */
   BFD_ASSERT (h->dynindx >= global_got_dynindx);
-  g = mips_elf_bfd_got (obfd, FALSE);
+  g = mips_elf_bfd_got (obfd, false);
   got_index = ((h->dynindx - global_got_dynindx + g->local_gotno)
 	       * MIPS_ELF_GOT_SIZE (obfd));
   BFD_ASSERT (got_index < htab->root.sgot->size);
@@ -3631,11 +3726,11 @@ mips_elf_global_got_index (bfd *obfd, st
   htab = mips_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
 
-  g = mips_elf_bfd_got (ibfd, FALSE);
+  g = mips_elf_bfd_got (ibfd, false);
   BFD_ASSERT (g);
 
   lookup.tls_type = mips_elf_reloc_tls_type (r_type);
-  if (!lookup.tls_type && g == mips_elf_bfd_got (obfd, FALSE))
+  if (!lookup.tls_type && g == mips_elf_bfd_got (obfd, false))
     return mips_elf_primary_global_got_index (obfd, info, h);
 
   lookup.abfd = ibfd;
@@ -3697,7 +3792,7 @@ mips_elf_got_page (bfd *abfd, bfd *ibfd,
 
 static bfd_vma
 mips_elf_got16_entry (bfd *abfd, bfd *ibfd, struct bfd_link_info *info,
-		      bfd_vma value, bfd_boolean external)
+		      bfd_vma value, bool external)
 {
   struct mips_got_entry *entry;
 
@@ -3761,10 +3856,10 @@ mips_elf_create_local_got_entry (bfd *ab
   htab = mips_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
 
-  g = mips_elf_bfd_got (ibfd, FALSE);
+  g = mips_elf_bfd_got (ibfd, false);
   if (g == NULL)
     {
-      g = mips_elf_bfd_got (abfd, FALSE);
+      g = mips_elf_bfd_got (abfd, false);
       BFD_ASSERT (g != NULL);
     }
 
@@ -3839,14 +3934,14 @@ 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;
       bfd_byte *rloc;
       bfd_vma got_address;
 
-      s = mips_elf_rel_dyn_section (info, FALSE);
+      s = mips_elf_rel_dyn_section (info, false);
       got_address = (htab->root.sgot->output_section->vma
 		     + htab->root.sgot->output_offset
 		     + entry->gotidx);
@@ -3872,8 +3967,7 @@ count_section_dynsyms (bfd *output_bfd,
   bfd_size_type count;
 
   count = 0;
-  if (bfd_link_pic (info)
-      || elf_hash_table (info)->is_relocatable_executable)
+  if (bfd_link_pic (info))
     {
       asection *p;
       const struct elf_backend_data *bed;
@@ -3892,7 +3986,7 @@ count_section_dynsyms (bfd *output_bfd,
 /* Sort the dynamic symbol table so that symbols that need GOT entries
    appear towards the end.  */
 
-static bfd_boolean
+static bool
 mips_elf_sort_hash_table (bfd *abfd, struct bfd_link_info *info)
 {
   struct mips_elf_link_hash_table *htab;
@@ -3903,11 +3997,11 @@ mips_elf_sort_hash_table (bfd *abfd, str
   BFD_ASSERT (htab != NULL);
 
   if (htab->root.dynsymcount == 0)
-    return TRUE;
+    return true;
 
   g = htab->got_info;
   if (g == NULL)
-    return TRUE;
+    return true;
 
   hsd.low = NULL;
   hsd.max_unref_got_dynindx
@@ -3942,14 +4036,14 @@ mips_elf_sort_hash_table (bfd *abfd, str
      table index in the GOT.  */
   htab->global_gotsym = hsd.low;
 
-  return TRUE;
+  return true;
 }
 
 /* If H needs a GOT entry, assign it the highest available dynamic
    index.  Otherwise, assign it the lowest available dynamic
    index.  */
 
-static bfd_boolean
+static bool
 mips_elf_sort_hash_table_f (struct mips_elf_link_hash_entry *h, void *data)
 {
   struct mips_elf_hash_sort_data *hsd = data;
@@ -3957,7 +4051,7 @@ mips_elf_sort_hash_table_f (struct mips_
   /* Symbols without dynamic symbol table entries aren't interesting
      at all.  */
   if (h->root.dynindx == -1)
-    return TRUE;
+    return true;
 
   switch (h->global_got_area)
     {
@@ -3986,14 +4080,14 @@ mips_elf_sort_hash_table_f (struct mips_
     bfd_put_32 (hsd->output_bfd, h->root.dynindx,
 		hsd->mipsxhash + h->mipsxhash_loc);
 
-  return TRUE;
+  return true;
 }
 
 /* Record that input bfd ABFD requires a GOT entry like *LOOKUP
    (which is owned by the caller and shouldn't be added to the
    hash table directly).  */
 
-static bfd_boolean
+static bool
 mips_elf_record_got_entry (struct bfd_link_info *info, bfd *abfd,
 			   struct mips_got_entry *lookup)
 {
@@ -4007,7 +4101,7 @@ mips_elf_record_got_entry (struct bfd_li
   g = htab->got_info;
   loc = htab_find_slot (g->got_entries, lookup, INSERT);
   if (!loc)
-    return FALSE;
+    return false;
 
   /* Populate the entry if it isn't already.  */
   entry = (struct mips_got_entry *) *loc;
@@ -4015,36 +4109,36 @@ mips_elf_record_got_entry (struct bfd_li
     {
       entry = (struct mips_got_entry *) bfd_alloc (abfd, sizeof (*entry));
       if (!entry)
-	return FALSE;
+	return false;
 
-      lookup->tls_initialized = FALSE;
+      lookup->tls_initialized = false;
       lookup->gotidx = -1;
       *entry = *lookup;
       *loc = entry;
     }
 
   /* Reuse the same GOT entry for the BFD's GOT.  */
-  g = mips_elf_bfd_got (abfd, TRUE);
+  g = mips_elf_bfd_got (abfd, true);
   if (!g)
-    return FALSE;
+    return false;
 
   bfd_loc = htab_find_slot (g->got_entries, lookup, INSERT);
   if (!bfd_loc)
-    return FALSE;
+    return false;
 
   if (!*bfd_loc)
     *bfd_loc = entry;
-  return TRUE;
+  return true;
 }
 
 /* ABFD has a GOT relocation of type R_TYPE against H.  Reserve a GOT
    entry for it.  FOR_CALL is true if the caller is only interested in
    using the GOT entry for calls.  */
 
-static bfd_boolean
+static bool
 mips_elf_record_global_got_symbol (struct elf_link_hash_entry *h,
 				   bfd *abfd, struct bfd_link_info *info,
-				   bfd_boolean for_call, int r_type)
+				   bool for_call, int r_type)
 {
   struct mips_elf_link_hash_table *htab;
   struct mips_elf_link_hash_entry *hmips;
@@ -4056,7 +4150,7 @@ mips_elf_record_global_got_symbol (struc
 
   hmips = (struct mips_elf_link_hash_entry *) h;
   if (!for_call)
-    hmips->got_only_for_calls = FALSE;
+    hmips->got_only_for_calls = false;
 
   /* A global symbol in the GOT must also be in the dynamic symbol
      table.  */
@@ -4066,11 +4160,11 @@ mips_elf_record_global_got_symbol (struc
 	{
 	case STV_INTERNAL:
 	case STV_HIDDEN:
-	  _bfd_mips_elf_hide_symbol (info, h, TRUE);
+	  _bfd_mips_elf_hide_symbol (info, h, true);
 	  break;
 	}
       if (!bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
     }
 
   tls_type = mips_elf_reloc_tls_type (r_type);
@@ -4087,7 +4181,7 @@ mips_elf_record_global_got_symbol (struc
 /* ABFD has a GOT relocation of type R_TYPE against symbol SYMNDX + ADDEND,
    where SYMNDX is a local symbol.  Reserve a GOT entry for it.  */
 
-static bfd_boolean
+static bool
 mips_elf_record_local_got_symbol (bfd *abfd, long symndx, bfd_vma addend,
 				  struct bfd_link_info *info, int r_type)
 {
@@ -4112,7 +4206,7 @@ mips_elf_record_local_got_symbol (bfd *a
    H is the symbol's hash table entry, or null if SYMNDX is local
    to ABFD.  */
 
-static bfd_boolean
+static bool
 mips_elf_record_got_page_ref (struct bfd_link_info *info, bfd *abfd,
 			      long symndx, struct elf_link_hash_entry *h,
 			      bfd_signed_vma addend)
@@ -4141,32 +4235,32 @@ mips_elf_record_got_page_ref (struct bfd
   lookup.addend = addend;
   loc = htab_find_slot (g1->got_page_refs, &lookup, INSERT);
   if (loc == NULL)
-    return FALSE;
+    return false;
 
   entry = (struct mips_got_page_ref *) *loc;
   if (!entry)
     {
       entry = bfd_alloc (abfd, sizeof (*entry));
       if (!entry)
-	return FALSE;
+	return false;
 
       *entry = lookup;
       *loc = entry;
     }
 
   /* Add the same entry to the BFD's GOT.  */
-  g2 = mips_elf_bfd_got (abfd, TRUE);
+  g2 = mips_elf_bfd_got (abfd, true);
   if (!g2)
-    return FALSE;
+    return false;
 
   bfd_loc = htab_find_slot (g2->got_page_refs, &lookup, INSERT);
   if (!bfd_loc)
-    return FALSE;
+    return false;
 
   if (!*bfd_loc)
     *bfd_loc = entry;
 
-  return TRUE;
+  return true;
 }
 
 /* Add room for N relocations to the .rel(a).dyn section in ABFD.  */
@@ -4181,10 +4275,10 @@ mips_elf_allocate_dynamic_relocations (b
   htab = mips_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
 
-  s = mips_elf_rel_dyn_section (info, FALSE);
+  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
     {
@@ -4219,7 +4313,7 @@ mips_elf_check_recreate_got (void **entr
       if (h->root.root.type == bfd_link_hash_indirect
 	  || h->root.root.type == bfd_link_hash_warning)
 	{
-	  arg->value = TRUE;
+	  arg->value = true;
 	  return 0;
 	}
     }
@@ -4294,7 +4388,7 @@ mips_elf_pages_for_range (const struct m
 
 /* Record that G requires a page entry that can reach SEC + ADDEND.  */
 
-static bfd_boolean
+static bool
 mips_elf_record_got_page_entry (struct mips_elf_traverse_got_arg *arg,
 				asection *sec, bfd_signed_vma addend)
 {
@@ -4308,7 +4402,7 @@ mips_elf_record_got_page_entry (struct m
   lookup.sec = sec;
   loc = htab_find_slot (g->got_page_entries, &lookup, INSERT);
   if (loc == NULL)
-    return FALSE;
+    return false;
 
   /* Create a mips_got_page_entry if this is the first time we've
      seen the section.  */
@@ -4317,7 +4411,7 @@ mips_elf_record_got_page_entry (struct m
     {
       entry = bfd_zalloc (arg->info->output_bfd, sizeof (*entry));
       if (!entry)
-	return FALSE;
+	return false;
 
       entry->sec = sec;
       *loc = entry;
@@ -4337,7 +4431,7 @@ mips_elf_record_got_page_entry (struct m
     {
       range = bfd_zalloc (arg->info->output_bfd, sizeof (*range));
       if (!range)
-	return FALSE;
+	return false;
 
       range->next = *range_ptr;
       range->min_addend = addend;
@@ -4346,7 +4440,7 @@ mips_elf_record_got_page_entry (struct m
       *range_ptr = range;
       entry->num_pages++;
       g->page_gotno++;
-      return TRUE;
+      return true;
     }
 
   /* Remember how many pages the old range contributed.  */
@@ -4375,7 +4469,7 @@ mips_elf_record_got_page_entry (struct m
       g->page_gotno += new_pages - old_pages;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* A htab_traverse callback for which *REFP points to a mips_got_page_ref
@@ -4383,7 +4477,7 @@ mips_elf_record_got_page_entry (struct m
    whether the page reference described by *REFP needs a GOT page entry,
    and record that entry in DATA->g if so.  Set DATA->g to null on failure.  */
 
-static bfd_boolean
+static int
 mips_elf_resolve_got_page_ref (void **refp, void *data)
 {
   struct mips_got_page_ref *ref;
@@ -4420,7 +4514,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)
 	{
@@ -4468,7 +4562,7 @@ mips_elf_resolve_got_page_ref (void **re
    into got_page_entry structures and estimate the number of page entries
    that they require.  */
 
-static bfd_boolean
+static bool
 mips_elf_resolve_final_got_entries (struct bfd_link_info *info,
 				    struct mips_got_info *g)
 {
@@ -4479,7 +4573,7 @@ mips_elf_resolve_final_got_entries (stru
 
   tga.info = info;
   tga.g = g;
-  tga.value = FALSE;
+  tga.value = false;
   htab_traverse (g->got_entries, mips_elf_check_recreate_got, &tga);
   if (tga.value)
     {
@@ -4488,11 +4582,11 @@ mips_elf_resolve_final_got_entries (stru
 				    mips_elf_got_entry_hash,
 				    mips_elf_got_entry_eq, NULL);
       if (!g->got_entries)
-	return FALSE;
+	return false;
 
       htab_traverse (oldg.got_entries, mips_elf_recreate_got, &tga);
       if (!tga.g)
-	return FALSE;
+	return false;
 
       htab_delete (oldg.got_entries);
     }
@@ -4500,19 +4594,19 @@ mips_elf_resolve_final_got_entries (stru
   g->got_page_entries = htab_try_create (1, mips_got_page_entry_hash,
 					 mips_got_page_entry_eq, NULL);
   if (g->got_page_entries == NULL)
-    return FALSE;
+    return false;
 
   tga.info = info;
   tga.g = g;
   htab_traverse (g->got_page_refs, mips_elf_resolve_got_page_ref, &tga);
 
-  return TRUE;
+  return true;
 }
 
 /* Return true if a GOT entry for H should live in the local rather than
    global GOT area.  */
 
-static bfd_boolean
+static bool
 mips_use_local_got_p (struct bfd_link_info *info,
 		      struct mips_elf_link_hash_entry *h)
 {
@@ -4521,28 +4615,28 @@ mips_use_local_got_p (struct bfd_link_in
      and which therefore don't bind locally.  We'll report undefined
      symbols later if appropriate.  */
   if (h->root.dynindx == -1)
-    return TRUE;
+    return true;
 
   /* Absolute symbols, if ever they need a GOT entry, cannot ever go
      to the local GOT, as they would be implicitly relocated by the
      base address by the dynamic loader.  */
   if (bfd_is_abs_symbol (&h->root.root))
-    return FALSE;
+    return false;
 
   /* Symbols that bind locally can (and in the case of forced-local
      symbols, must) live in the local GOT.  */
   if (h->got_only_for_calls
       ? SYMBOL_CALLS_LOCAL (info, &h->root)
       : SYMBOL_REFERENCES_LOCAL (info, &h->root))
-    return TRUE;
+    return true;
 
   /* If this is an executable that must provide a definition of the symbol,
      either though PLTs or copy relocations, then that address should go in
      the local rather than global GOT.  */
   if (bfd_link_executable (info) && h->has_static_relocs)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* A mips_elf_link_hash_traverse callback for which DATA points to the
@@ -4551,7 +4645,7 @@ mips_use_local_got_p (struct bfd_link_in
    Count the number of global symbols that are in the primary GOT only
    because they have relocations against them (reloc_only_gotno).  */
 
-static int
+static bool
 mips_elf_count_got_symbols (struct mips_elf_link_hash_entry *h, void *data)
 {
   struct bfd_link_info *info;
@@ -4570,7 +4664,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;
@@ -4696,7 +4790,7 @@ mips_elf_merge_got_with (bfd *abfd, stru
    attempt to merge with the current got, or finish the current got
    and then make make the new got current.  */
 
-static bfd_boolean
+static bool
 mips_elf_merge_got (bfd *abfd, struct mips_got_info *g,
 		    struct mips_elf_got_per_bfd_arg *arg)
 {
@@ -4704,7 +4798,7 @@ mips_elf_merge_got (bfd *abfd, struct mi
   int result;
 
   if (!mips_elf_resolve_final_got_entries (arg->info, g))
-    return FALSE;
+    return false;
 
   /* Work out the number of page, local and TLS entries.  */
   estimate = arg->max_pages;
@@ -4725,7 +4819,7 @@ mips_elf_merge_got (bfd *abfd, struct mi
       if (!arg->primary)
 	{
 	  arg->primary = g;
-	  return TRUE;
+	  return true;
 	}
 
       /* Try merging with the primary GOT.  */
@@ -4748,14 +4842,14 @@ mips_elf_merge_got (bfd *abfd, struct mi
   g->next = arg->current;
   arg->current = g;
 
-  return TRUE;
+  return true;
 }
 
 /* ENTRYP is a hash table entry for a mips_got_entry.  Set its gotidx
    to GOTIDX, duplicating the entry if it has already been assigned
    an index in a different GOT.  */
 
-static bfd_boolean
+static bool
 mips_elf_set_gotidx (void **entryp, long gotidx)
 {
   struct mips_got_entry *entry;
@@ -4767,14 +4861,14 @@ mips_elf_set_gotidx (void **entryp, long
 
       new_entry = bfd_alloc (entry->abfd, sizeof (*entry));
       if (!new_entry)
-	return FALSE;
+	return false;
 
       *new_entry = *entry;
       *entryp = new_entry;
       entry = new_entry;
     }
   entry->gotidx = gotidx;
-  return TRUE;
+  return true;
 }
 
 /* Set the TLS GOT index for the GOT entry in ENTRYP.  DATA points to a
@@ -4877,7 +4971,7 @@ mips_elf_forbid_lazy_stubs (void **entry
       && entry->symndx == -1
       && entry->d.h->needs_lazy_stub)
     {
-      entry->d.h->needs_lazy_stub = FALSE;
+      entry->d.h->needs_lazy_stub = false;
       htab->lazy_stub_count--;
     }
 
@@ -4892,7 +4986,7 @@ mips_elf_adjust_gp (bfd *abfd, struct mi
   if (!g->next)
     return 0;
 
-  g = mips_elf_bfd_got (ibfd, FALSE);
+  g = mips_elf_bfd_got (ibfd, false);
   if (! g)
     return 0;
 
@@ -4907,7 +5001,7 @@ mips_elf_adjust_gp (bfd *abfd, struct mi
 /* Turn a single GOT that is too big for 16-bit addressing into
    a sequence of GOTs, each one 16-bit addressable.  */
 
-static bfd_boolean
+static bool
 mips_elf_multi_got (bfd *abfd, struct bfd_link_info *info,
 		    asection *got, bfd_size_type pages)
 {
@@ -4942,9 +5036,9 @@ mips_elf_multi_got (bfd *abfd, struct bf
      to be the primary GOT.  */
   for (ibfd = info->input_bfds; ibfd; ibfd = ibfd->link.next)
     {
-      gg = mips_elf_bfd_got (ibfd, FALSE);
+      gg = mips_elf_bfd_got (ibfd, false);
       if (gg && !mips_elf_merge_got (ibfd, gg, &got_per_bfd_arg))
-	return FALSE;
+	return false;
     }
 
   /* If we do not find any suitable primary GOT, create an empty one.  */
@@ -5021,7 +5115,7 @@ mips_elf_multi_got (bfd *abfd, struct bf
       tga.value = MIPS_ELF_GOT_SIZE (abfd);
       htab_traverse (g->got_entries, mips_elf_initialize_tls_index, &tga);
       if (!tga.g)
-	return FALSE;
+	return false;
       BFD_ASSERT (g->tls_assigned_gotno == assign);
 
       /* Move onto the next GOT.  It will be a secondary GOT if nonull.  */
@@ -5050,7 +5144,7 @@ mips_elf_multi_got (bfd *abfd, struct bf
       tga.g = g;
       htab_traverse (g->got_entries, mips_elf_set_global_gotidx, &tga);
       if (!tga.g)
-	return FALSE;
+	return false;
       BFD_ASSERT (g->assigned_low_gotno == g->local_gotno + g->global_gotno);
       g->assigned_low_gotno = save_assign;
 
@@ -5070,7 +5164,7 @@ mips_elf_multi_got (bfd *abfd, struct bf
     mips_elf_allocate_dynamic_relocations (dynobj, info,
 					   needed_relocs);
 
-  return TRUE;
+  return true;
 }
 
 
@@ -5099,7 +5193,7 @@ mips_elf_next_relocation (bfd *abfd ATTR
 
 /* Return whether an input relocation is against a local symbol.  */
 
-static bfd_boolean
+static bool
 mips_elf_local_relocation_p (bfd *input_bfd,
 			     const Elf_Internal_Rela *relocation,
 			     asection **local_sections)
@@ -5113,11 +5207,11 @@ mips_elf_local_relocation_p (bfd *input_
   extsymoff = (elf_bad_symtab (input_bfd)) ? 0 : symtab_hdr->sh_info;
 
   if (r_symndx < extsymoff)
-    return TRUE;
+    return true;
   if (elf_bad_symtab (input_bfd) && local_sections[r_symndx] != NULL)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Sign-extend VALUE, which has the indicated number of BITS.  */
@@ -5136,20 +5230,20 @@ _bfd_mips_elf_sign_extend (bfd_vma value
    range expressible by a signed number with the indicated number of
    BITS.  */
 
-static bfd_boolean
+static bool
 mips_elf_overflow_p (bfd_vma value, int bits)
 {
   bfd_signed_vma svalue = (bfd_signed_vma) value;
 
   if (svalue > (1 << (bits - 1)) - 1)
     /* The value is too big.  */
-    return TRUE;
+    return true;
   else if (svalue < -(1 << (bits - 1)))
     /* The value is too small.  */
-    return TRUE;
+    return true;
 
   /* All is well.  */
-  return FALSE;
+  return false;
 }
 
 /* Calculate the %high function.  */
@@ -5188,7 +5282,7 @@ mips_elf_highest (bfd_vma value ATTRIBUT
 
 /* Create the .compact_rel section.  */
 
-static bfd_boolean
+static bool
 mips_elf_create_compact_rel_section
   (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
@@ -5203,17 +5297,17 @@ mips_elf_create_compact_rel_section
       s = bfd_make_section_anyway_with_flags (abfd, ".compact_rel", flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd)))
-	return FALSE;
+	return false;
 
       s->size = sizeof (Elf32_External_compact_rel);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create the .got section to hold the global offset table.  */
 
-static bfd_boolean
+static bool
 mips_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags;
@@ -5227,7 +5321,7 @@ mips_elf_create_got_section (bfd *abfd,
 
   /* This function may be called more than once.  */
   if (htab->root.sgot)
-    return TRUE;
+    return true;
 
   flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY
 	   | SEC_LINKER_CREATED);
@@ -5237,7 +5331,7 @@ mips_elf_create_got_section (bfd *abfd,
   s = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, 4))
-    return FALSE;
+    return false;
   htab->root.sgot = s;
 
   /* Define the symbol _GLOBAL_OFFSET_TABLE_.  We don't do this in the
@@ -5246,8 +5340,8 @@ mips_elf_create_got_section (bfd *abfd,
   bh = NULL;
   if (! (_bfd_generic_link_add_one_symbol
 	 (info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s,
-	  0, NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh)))
-    return FALSE;
+	  0, NULL, false, get_elf_backend_data (abfd)->collect, &bh)))
+    return false;
 
   h = (struct elf_link_hash_entry *) bh;
   h->non_elf = 0;
@@ -5258,7 +5352,7 @@ mips_elf_create_got_section (bfd *abfd,
 
   if (bfd_link_pic (info)
       && ! bfd_elf_link_record_dynamic_symbol (info, h))
-    return FALSE;
+    return false;
 
   htab->got_info = mips_elf_create_got_info (abfd);
   mips_elf_section_data (s)->elf.this_hdr.sh_flags
@@ -5271,20 +5365,20 @@ mips_elf_create_got_section (bfd *abfd,
 					  | SEC_IN_MEMORY
 					  | SEC_LINKER_CREATED);
   if (s == NULL)
-    return FALSE;
+    return false;
   htab->root.sgotplt = s;
 
-  return TRUE;
+  return true;
 }
 
 /* Return true if H refers to the special VxWorks __GOTT_BASE__ or
    __GOTT_INDEX__ symbols.  These symbols are only special for
    shared objects; they are not used in executables.  */
 
-static bfd_boolean
+static bool
 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));
@@ -5295,9 +5389,9 @@ is_gott_symbol (struct bfd_link_info *in
    which determines whether the destination function ever requires a
    stub.  */
 
-static bfd_boolean
+static bool
 mips_elf_relocation_needs_la25_stub (bfd *input_bfd, int r_type,
-				     bfd_boolean target_is_16_bit_code_p)
+				     bool target_is_16_bit_code_p)
 {
   /* We specifically ignore branches and jumps from EF_PIC objects,
      where the onus is on the compiler or programmer to perform any
@@ -5305,7 +5399,7 @@ mips_elf_relocation_needs_la25_stub (bfd
      is unnecessary; for example, -mno-shared functions do not use
      the incoming value of $25, and may therefore be called directly.  */
   if (PIC_OBJECT_P (input_bfd))
-    return FALSE;
+    return false;
 
   switch (r_type)
     {
@@ -5318,13 +5412,13 @@ mips_elf_relocation_needs_la25_stub (bfd
     case R_MICROMIPS_PC10_S1:
     case R_MICROMIPS_PC16_S1:
     case R_MICROMIPS_PC23_S2:
-      return TRUE;
+      return true;
 
     case R_MIPS16_26:
       return !target_is_16_bit_code_p;
 
     default:
-      return FALSE;
+      return false;
     }
 }
 
@@ -5368,17 +5462,17 @@ mips_elf_store_contents (reloc_howto_typ
    return status without actually changing CONTENTS.
 */
 
-static bfd_boolean
+static bool
 mips_elf_nullify_got_load (bfd *input_bfd, bfd_byte *contents,
 			   const Elf_Internal_Rela *relocation,
-			   reloc_howto_type *howto, bfd_boolean doit)
+			   reloc_howto_type *howto, bool doit)
 {
   int r_type = ELF_R_TYPE (input_bfd, relocation->r_info);
   bfd_byte *location = contents + relocation->r_offset;
-  bfd_boolean nullified = TRUE;
+  bool nullified = true;
   bfd_vma x;
 
-  _bfd_mips_elf_reloc_unshuffle (input_bfd, r_type, FALSE, location);
+  _bfd_mips_elf_reloc_unshuffle (input_bfd, r_type, false, location);
 
   /* Obtain the current value.  */
   x = mips_elf_obtain_contents (howto, relocation, input_bfd, contents);
@@ -5388,7 +5482,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 */
@@ -5396,13 +5490,13 @@ mips_elf_nullify_got_load (bfd *input_bf
 	   || ((x >> 26) & 0x3f) == 0x37)			/* LD */
     x = (0x9 << 26) | (x & (0x1f << 16));			/* ADDIU */
   else
-    nullified = FALSE;
+    nullified = false;
 
   /* Put the value into the output.  */
   if (doit && nullified)
     mips_elf_store_contents (howto, relocation, input_bfd, contents, x);
 
-  _bfd_mips_elf_reloc_shuffle (input_bfd, r_type, FALSE, location);
+  _bfd_mips_elf_reloc_shuffle (input_bfd, r_type, false, location);
 
   return nullified;
 }
@@ -5429,8 +5523,8 @@ mips_elf_calculate_relocation (bfd *abfd
 			       Elf_Internal_Sym *local_syms,
 			       asection **local_sections, bfd_vma *valuep,
 			       const char **namep,
-			       bfd_boolean *cross_mode_jump_p,
-			       bfd_boolean save_addend)
+			       bool *cross_mode_jump_p,
+			       bool save_addend)
 {
   /* The eventual value we will return.  */
   bfd_vma value;
@@ -5455,28 +5549,28 @@ mips_elf_calculate_relocation (bfd *abfd
   struct mips_elf_link_hash_entry *h = NULL;
   /* TRUE if the symbol referred to by this relocation is a local
      symbol.  */
-  bfd_boolean local_p, was_local_p;
+  bool local_p, was_local_p;
   /* TRUE if the symbol referred to by this relocation is a section
      symbol.  */
-  bfd_boolean section_p = FALSE;
+  bool section_p = false;
   /* TRUE if the symbol referred to by this relocation is "_gp_disp".  */
-  bfd_boolean gp_disp_p = FALSE;
+  bool gp_disp_p = false;
   /* TRUE if the symbol referred to by this relocation is
      "__gnu_local_gp".  */
-  bfd_boolean gnu_local_gp_p = FALSE;
+  bool gnu_local_gp_p = false;
   Elf_Internal_Shdr *symtab_hdr;
   size_t extsymoff;
   unsigned long r_symndx;
   int r_type;
   /* TRUE if overflow occurred during the calculation of the
      relocation value.  */
-  bfd_boolean overflowed_p;
+  bool overflowed_p;
   /* TRUE if this relocation refers to a MIPS16 function.  */
-  bfd_boolean target_is_16_bit_code_p = FALSE;
-  bfd_boolean target_is_micromips_code_p = FALSE;
+  bool target_is_16_bit_code_p = false;
+  bool target_is_micromips_code_p = false;
   struct mips_elf_link_hash_table *htab;
   bfd *dynobj;
-  bfd_boolean resolved_to_zero;
+  bool resolved_to_zero;
 
   dynobj = elf_hash_table (info)->dynobj;
   htab = mips_elf_hash_table (info);
@@ -5490,7 +5584,7 @@ mips_elf_calculate_relocation (bfd *abfd
        + relocation->r_offset);
 
   /* Assume that there will be no overflow.  */
-  overflowed_p = FALSE;
+  overflowed_p = false;
 
   /* Figure out whether or not the symbol is local, and get the offset
      used in the array of hash table entries.  */
@@ -5510,7 +5604,7 @@ mips_elf_calculate_relocation (bfd *abfd
   /* Figure out the value of the symbol.  */
   if (local_p)
     {
-      bfd_boolean micromips_p = MICROMIPS_P (abfd);
+      bool micromips_p = MICROMIPS_P (abfd);
       Elf_Internal_Sym *sym;
 
       sym = local_syms + r_symndx;
@@ -5585,12 +5679,12 @@ mips_elf_calculate_relocation (bfd *abfd
 	  if (!hi16_reloc_p (r_type) && !lo16_reloc_p (r_type))
 	    return bfd_reloc_notsupported;
 
-	  gp_disp_p = TRUE;
+	  gp_disp_p = true;
 	}
       /* See if this is the special _gp symbol.  Note that such a
 	 symbol must always be a global symbol.  */
       else if (strcmp (*namep, "__gnu_local_gp") == 0)
-	gnu_local_gp_p = TRUE;
+	gnu_local_gp_p = true;
 
 
       /* If this symbol is defined, calculate its address.  Note that
@@ -5644,11 +5738,12 @@ mips_elf_calculate_relocation (bfd *abfd
 	}
       else
 	{
-	  bfd_boolean reject_undefined
-	    = (info->unresolved_syms_in_objects == RM_GENERATE_ERROR
+          bool 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);
 
@@ -5708,7 +5803,7 @@ mips_elf_calculate_relocation (bfd *abfd
 
       symbol = sec->output_section->vma + sec->output_offset + value;
       /* The target is 16-bit, but the stub isn't.  */
-      target_is_16_bit_code_p = FALSE;
+      target_is_16_bit_code_p = false;
     }
   /* If this is a MIPS16 call with a stub, that is made through the PLT or
      to a standard MIPS function, we need to redirect the call to the stub.
@@ -5778,7 +5873,7 @@ mips_elf_calculate_relocation (bfd *abfd
 	   && h->root.plt.plist->comp_offset != MINUS_ONE
 	   && h->root.plt.plist->mips_offset != MINUS_ONE)
     {
-      bfd_boolean micromips_p = MICROMIPS_P (abfd);
+      bool micromips_p = MICROMIPS_P (abfd);
 
       sec = htab->root.splt;
       symbol = (sec->output_section->vma
@@ -5839,8 +5934,10 @@ mips_elf_calculate_relocation (bfd *abfd
     case R_MICROMIPS_CALL_LO16:
       if (resolved_to_zero
 	  && !bfd_link_relocatable (info)
+	  && bfd_reloc_offset_in_range (howto, input_bfd, input_section,
+					relocation->r_offset)
 	  && mips_elf_nullify_got_load (input_bfd, contents,
-					relocation, howto, TRUE))
+					relocation, howto, true))
 	return bfd_reloc_continue;
 
       /* Fall through.  */
@@ -5854,7 +5951,7 @@ mips_elf_calculate_relocation (bfd *abfd
 	{
 	  /* Redirect to the special `__gnu_absolute_zero' symbol.  */
 	  h = mips_elf_link_hash_lookup (htab, "__gnu_absolute_zero",
-					 FALSE, FALSE, FALSE);
+					 false, false, false);
 	  BFD_ASSERT (h != NULL);
 	}
       break;
@@ -5921,7 +6018,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 +6038,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;
@@ -5966,7 +6063,7 @@ mips_elf_calculate_relocation (bfd *abfd
       bfd_byte *loc;
       asection *s;
 
-      s = mips_elf_rel_dyn_section (info, FALSE);
+      s = mips_elf_rel_dyn_section (info, false);
       loc = s->contents + s->reloc_count++ * sizeof (Elf32_External_Rela);
 
       outrel.r_offset = (input_section->output_section->vma
@@ -6198,21 +6295,24 @@ mips_elf_calculate_relocation (bfd *abfd
     case R_MIPS_GPREL16:
     case R_MICROMIPS_GPREL7_S2:
     case R_MICROMIPS_GPREL16:
-      /* Only sign-extend the addend if it was extracted from the
-	 instruction.  If the addend was separate, leave it alone,
-	 otherwise we may lose significant bits.  */
-      if (howto->partial_inplace)
-	addend = _bfd_mips_elf_sign_extend (addend, 16);
-      value = symbol + addend - gp;
-      /* If the symbol was local, any earlier relocatable links will
-	 have adjusted its addend with the gp offset, so compensate
-	 for that now.  Don't do it for symbols forced local in this
-	 link, though, since they won't have had the gp offset applied
-	 to them before.  */
-      if (was_local_p)
-	value += gp0;
-      if (was_local_p || h->root.root.type != bfd_link_hash_undefweak)
-	overflowed_p = mips_elf_overflow_p (value, 16);
+      {
+	int bits = howto->bitsize + howto->rightshift;
+	/* Only sign-extend the addend if it was extracted from the
+	   instruction.  If the addend was separate, leave it alone,
+	   otherwise we may lose significant bits.  */
+	if (howto->partial_inplace)
+	  addend = _bfd_mips_elf_sign_extend (addend, bits);
+	value = symbol + addend - gp;
+	/* If the symbol was local, any earlier relocatable links will
+	   have adjusted its addend with the gp offset, so compensate
+	   for that now.  Don't do it for symbols forced local in this
+	   link, though, since they won't have had the gp offset applied
+	   to them before.  */
+	if (was_local_p)
+	  value += gp0;
+	if (was_local_p || h->root.root.type != bfd_link_hash_undefweak)
+	  overflowed_p = mips_elf_overflow_p (value, bits);
+      }
       break;
 
     case R_MIPS16_GOT16:
@@ -6223,7 +6323,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);
@@ -6526,13 +6626,13 @@ mips_elf_calculate_relocation (bfd *abfd
 
    Returns FALSE if anything goes wrong.  */
 
-static bfd_boolean
+static bool
 mips_elf_perform_relocation (struct bfd_link_info *info,
 			     reloc_howto_type *howto,
 			     const Elf_Internal_Rela *relocation,
 			     bfd_vma value, bfd *input_bfd,
 			     asection *input_section, bfd_byte *contents,
-			     bfd_boolean cross_mode_jump_p)
+			     bool cross_mode_jump_p)
 {
   bfd_vma x;
   bfd_byte *location;
@@ -6541,7 +6641,7 @@ mips_elf_perform_relocation (struct bfd_
   /* Figure out where the relocation is occurring.  */
   location = contents + relocation->r_offset;
 
-  _bfd_mips_elf_reloc_unshuffle (input_bfd, r_type, FALSE, location);
+  _bfd_mips_elf_reloc_unshuffle (input_bfd, r_type, false, location);
 
   /* Obtain the current value.  */
   x = mips_elf_obtain_contents (howto, relocation, input_bfd, contents);
@@ -6564,12 +6664,12 @@ mips_elf_perform_relocation (struct bfd_
 	  info->callbacks->einfo
 	    (_("%X%H: unsupported JALX to the same ISA mode\n"),
 	     input_bfd, input_section, relocation->r_offset);
-	  return TRUE;
+	  return true;
 	}
     }
   if (cross_mode_jump_p && jal_reloc_p (r_type))
     {
-      bfd_boolean ok;
+      bool ok;
       bfd_vma opcode = x >> 26;
       bfd_vma jalx_opcode;
 
@@ -6598,15 +6698,15 @@ mips_elf_perform_relocation (struct bfd_
 	    (_("%X%H: unsupported jump between ISA modes; "
 	       "consider recompiling with interlinking enabled\n"),
 	     input_bfd, input_section, relocation->r_offset);
-	  return TRUE;
+	  return true;
 	}
 
       /* 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))
     {
-      bfd_boolean ok = FALSE;
+      bool ok = false;
       bfd_vma opcode = x >> 16;
       bfd_vma jalx_opcode = 0;
       bfd_vma sign_bit = 0;
@@ -6643,7 +6743,7 @@ mips_elf_perform_relocation (struct bfd_
 		(_("%X%H: cannot convert branch between ISA modes "
 		   "to JALX: relocation out of range\n"),
 		 input_bfd, input_section, relocation->r_offset);
-	      return TRUE;
+	      return true;
 	    }
 
 	  /* Make this the JALX opcode.  */
@@ -6654,7 +6754,7 @@ mips_elf_perform_relocation (struct bfd_
 	  info->callbacks->einfo
 	    (_("%X%H: unsupported branch between ISA modes\n"),
 	     input_bfd, input_section, relocation->r_offset);
-	  return TRUE;
+	  return true;
 	}
     }
 
@@ -6700,7 +6800,7 @@ mips_elf_perform_relocation (struct bfd_
   _bfd_mips_elf_reloc_shuffle (input_bfd, r_type, !bfd_link_relocatable (info),
 			       location);
 
-  return TRUE;
+  return true;
 }
 
 /* Create a rel.dyn relocation for the dynamic linker to resolve.  REL
@@ -6708,7 +6808,7 @@ mips_elf_perform_relocation (struct bfd_
    dynamic relocation.  The ADDENDP is adjusted if necessary; the
    caller should store the result in place of the original addend.  */
 
-static bfd_boolean
+static bool
 mips_elf_create_dynamic_relocation (bfd *output_bfd,
 				    struct bfd_link_info *info,
 				    const Elf_Internal_Rela *rel,
@@ -6721,7 +6821,7 @@ mips_elf_create_dynamic_relocation (bfd
   bfd *dynobj;
   int r_type;
   long indx;
-  bfd_boolean defined_p;
+  bool defined_p;
   struct mips_elf_link_hash_table *htab;
 
   htab = mips_elf_hash_table (info);
@@ -6729,7 +6829,7 @@ mips_elf_create_dynamic_relocation (bfd
 
   r_type = ELF_R_TYPE (output_bfd, rel->r_info);
   dynobj = elf_hash_table (info)->dynobj;
-  sreloc = mips_elf_rel_dyn_section (info, FALSE);
+  sreloc = mips_elf_rel_dyn_section (info, false);
   BFD_ASSERT (sreloc != NULL);
   BFD_ASSERT (sreloc->contents != NULL);
   BFD_ASSERT (sreloc->reloc_count * MIPS_ELF_REL_SIZE (output_bfd)
@@ -6747,7 +6847,7 @@ mips_elf_create_dynamic_relocation (bfd
 
   if (outrel[0].r_offset == MINUS_ONE)
     /* The relocation field has been deleted.  */
-    return TRUE;
+    return true;
 
   if (outrel[0].r_offset == MINUS_TWO)
     {
@@ -6755,14 +6855,15 @@ mips_elf_create_dynamic_relocation (bfd
 	 some sort.  Functions like _bfd_elf_write_section_eh_frame expect
 	 the field to be fully relocated, so add in the symbol's value.  */
       *addendp += symbol;
-      return TRUE;
+      return true;
     }
 
   /* We must now calculate the dynamic symbol table index to use
      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;
@@ -6771,7 +6872,7 @@ mips_elf_create_dynamic_relocation (bfd
 	   relocation field.  It therefore treats relocs against
 	   defined symbols in the same way as relocs against
 	   undefined symbols.  */
-	defined_p = FALSE;
+	defined_p = false;
     }
   else
     {
@@ -6779,8 +6880,9 @@ mips_elf_create_dynamic_relocation (bfd
 	indx = 0;
       else if (sec == NULL || sec->owner == NULL)
 	{
+	  BFD_ASSERT (0);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       else
 	{
@@ -6811,7 +6913,7 @@ mips_elf_create_dynamic_relocation (bfd
 	 against STN_UNDEF have no effect.  */
       if (!SGI_COMPAT (output_bfd))
 	indx = 0;
-      defined_p = TRUE;
+      defined_p = true;
     }
 
   /* If the relocation was previously an absolute relocation and
@@ -6821,7 +6923,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 +6969,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;
@@ -6926,7 +7028,7 @@ mips_elf_create_dynamic_relocation (bfd
   if (MIPS_ELF_READONLY_SECTION (input_section))
     info->flags |= DF_TEXTREL;
 
-  return TRUE;
+  return true;
 }
 
 /* Return the MACH for a MIPS e_flags value.  */
@@ -6936,104 +7038,107 @@ _bfd_elf_mips_mach (flagword flags)
 {
   switch (flags & EF_MIPS_MACH)
     {
-    case E_MIPS_MACH_3900:
+    case EF_MIPS_MACH_3900:
       return bfd_mach_mips3900;
 
-    case E_MIPS_MACH_4010:
+    case EF_MIPS_MACH_4010:
       return bfd_mach_mips4010;
 
-    case E_MIPS_MACH_4100:
+    case EF_MIPS_MACH_ALLEGREX:
+      return bfd_mach_mips_allegrex;
+
+    case EF_MIPS_MACH_4100:
       return bfd_mach_mips4100;
 
-    case E_MIPS_MACH_4111:
+    case EF_MIPS_MACH_4111:
       return bfd_mach_mips4111;
 
-    case E_MIPS_MACH_4120:
+    case EF_MIPS_MACH_4120:
       return bfd_mach_mips4120;
 
-    case E_MIPS_MACH_4650:
+    case EF_MIPS_MACH_4650:
       return bfd_mach_mips4650;
 
-    case E_MIPS_MACH_5400:
+    case EF_MIPS_MACH_5400:
       return bfd_mach_mips5400;
 
-    case E_MIPS_MACH_5500:
+    case EF_MIPS_MACH_5500:
       return bfd_mach_mips5500;
 
-    case E_MIPS_MACH_5900:
+    case EF_MIPS_MACH_5900:
       return bfd_mach_mips5900;
 
-    case E_MIPS_MACH_9000:
+    case EF_MIPS_MACH_9000:
       return bfd_mach_mips9000;
 
-    case E_MIPS_MACH_SB1:
+    case EF_MIPS_MACH_SB1:
       return bfd_mach_mips_sb1;
 
-    case E_MIPS_MACH_LS2E:
+    case EF_MIPS_MACH_LS2E:
       return bfd_mach_mips_loongson_2e;
 
-    case E_MIPS_MACH_LS2F:
+    case EF_MIPS_MACH_LS2F:
       return bfd_mach_mips_loongson_2f;
 
-    case E_MIPS_MACH_GS464:
+    case EF_MIPS_MACH_GS464:
       return bfd_mach_mips_gs464;
 
-    case E_MIPS_MACH_GS464E:
+    case EF_MIPS_MACH_GS464E:
       return bfd_mach_mips_gs464e;
 
-    case E_MIPS_MACH_GS264E:
+    case EF_MIPS_MACH_GS264E:
       return bfd_mach_mips_gs264e;
 
-    case E_MIPS_MACH_OCTEON3:
+    case EF_MIPS_MACH_OCTEON3:
       return bfd_mach_mips_octeon3;
 
-    case E_MIPS_MACH_OCTEON2:
+    case EF_MIPS_MACH_OCTEON2:
       return bfd_mach_mips_octeon2;
 
-    case E_MIPS_MACH_OCTEON:
+    case EF_MIPS_MACH_OCTEON:
       return bfd_mach_mips_octeon;
 
-    case E_MIPS_MACH_XLR:
+    case EF_MIPS_MACH_XLR:
       return bfd_mach_mips_xlr;
 
-    case E_MIPS_MACH_IAMR2:
+    case EF_MIPS_MACH_IAMR2:
       return bfd_mach_mips_interaptiv_mr2;
 
     default:
       switch (flags & EF_MIPS_ARCH)
 	{
 	default:
-	case E_MIPS_ARCH_1:
+	case EF_MIPS_ARCH_1:
 	  return bfd_mach_mips3000;
 
-	case E_MIPS_ARCH_2:
+	case EF_MIPS_ARCH_2:
 	  return bfd_mach_mips6000;
 
-	case E_MIPS_ARCH_3:
+	case EF_MIPS_ARCH_3:
 	  return bfd_mach_mips4000;
 
-	case E_MIPS_ARCH_4:
+	case EF_MIPS_ARCH_4:
 	  return bfd_mach_mips8000;
 
-	case E_MIPS_ARCH_5:
+	case EF_MIPS_ARCH_5:
 	  return bfd_mach_mips5;
 
-	case E_MIPS_ARCH_32:
+	case EF_MIPS_ARCH_32:
 	  return bfd_mach_mipsisa32;
 
-	case E_MIPS_ARCH_64:
+	case EF_MIPS_ARCH_64:
 	  return bfd_mach_mipsisa64;
 
-	case E_MIPS_ARCH_32R2:
+	case EF_MIPS_ARCH_32R2:
 	  return bfd_mach_mipsisa32r2;
 
-	case E_MIPS_ARCH_64R2:
+	case EF_MIPS_ARCH_64R2:
 	  return bfd_mach_mipsisa64r2;
 
-	case E_MIPS_ARCH_32R6:
+	case EF_MIPS_ARCH_32R6:
 	  return bfd_mach_mipsisa32r6;
 
-	case E_MIPS_ARCH_64R6:
+	case EF_MIPS_ARCH_64R6:
 	  return bfd_mach_mipsisa64r6;
 	}
     }
@@ -7043,7 +7148,7 @@ _bfd_elf_mips_mach (flagword flags)
 
 /* Return printable name for ABI.  */
 
-static INLINE char *
+static inline char *
 elf_mips_abi_name (bfd *abfd)
 {
   flagword flags;
@@ -7058,13 +7163,13 @@ elf_mips_abi_name (bfd *abfd)
 	return "64";
       else
 	return "none";
-    case E_MIPS_ABI_O32:
+    case EF_MIPS_ABI_O32:
       return "O32";
-    case E_MIPS_ABI_O64:
+    case EF_MIPS_ABI_O64:
       return "O64";
-    case E_MIPS_ABI_EABI32:
+    case EF_MIPS_ABI_EABI32:
       return "EABI32";
-    case E_MIPS_ABI_EABI64:
+    case EF_MIPS_ABI_EABI64:
       return "EABI64";
     default:
       return "unknown abi";
@@ -7077,15 +7182,21 @@ elf_mips_abi_name (bfd *abfd)
    faster assembler code.  This is what we use for the small common
    section.  This approach is copied from ecoff.c.  */
 static asection mips_elf_scom_section;
-static asymbol mips_elf_scom_symbol;
-static asymbol *mips_elf_scom_symbol_ptr;
+static const asymbol mips_elf_scom_symbol =
+  GLOBAL_SYM_INIT (".scommon", &mips_elf_scom_section);
+static asection mips_elf_scom_section =
+  BFD_FAKE_SECTION (mips_elf_scom_section, &mips_elf_scom_symbol,
+		    ".scommon", 0, SEC_IS_COMMON | SEC_SMALL_DATA);
 
 /* MIPS ELF also uses an acommon section, which represents an
    allocated common symbol which may be overridden by a
    definition in a shared library.  */
 static asection mips_elf_acom_section;
-static asymbol mips_elf_acom_symbol;
-static asymbol *mips_elf_acom_symbol_ptr;
+static const asymbol mips_elf_acom_symbol =
+  GLOBAL_SYM_INIT (".acommon", &mips_elf_acom_section);
+static asection mips_elf_acom_section =
+  BFD_FAKE_SECTION (mips_elf_acom_section, &mips_elf_acom_symbol,
+		    ".acommon", 0, SEC_ALLOC);
 
 /* This is used for both the 32-bit and the 64-bit ABI.  */
 
@@ -7104,44 +7215,19 @@ _bfd_mips_elf_symbol_processing (bfd *ab
 	 either resolve these symbols to something in a shared
 	 library, or it can just leave them here.  For our purposes,
 	 we can consider these symbols to be in a new section.  */
-      if (mips_elf_acom_section.name == NULL)
-	{
-	  /* Initialize the acommon section.  */
-	  mips_elf_acom_section.name = ".acommon";
-	  mips_elf_acom_section.flags = SEC_ALLOC;
-	  mips_elf_acom_section.output_section = &mips_elf_acom_section;
-	  mips_elf_acom_section.symbol = &mips_elf_acom_symbol;
-	  mips_elf_acom_section.symbol_ptr_ptr = &mips_elf_acom_symbol_ptr;
-	  mips_elf_acom_symbol.name = ".acommon";
-	  mips_elf_acom_symbol.flags = BSF_SECTION_SYM;
-	  mips_elf_acom_symbol.section = &mips_elf_acom_section;
-	  mips_elf_acom_symbol_ptr = &mips_elf_acom_symbol;
-	}
       asym->section = &mips_elf_acom_section;
       break;
 
     case SHN_COMMON:
       /* Common symbols less than the GP size are automatically
-	 treated as SHN_MIPS_SCOMMON symbols on IRIX5.  */
+	 treated as SHN_MIPS_SCOMMON symbols, with some exceptions.  */
       if (asym->value > elf_gp_size (abfd)
 	  || ELF_ST_TYPE (elfsym->internal_elf_sym.st_info) == STT_TLS
-	  || IRIX_COMPAT (abfd) == ict_irix6)
+	  || IRIX_COMPAT (abfd) == ict_irix6
+	  || strcmp (asym->name, "__gnu_lto_slim") == 0)
 	break;
       /* Fall through.  */
     case SHN_MIPS_SCOMMON:
-      if (mips_elf_scom_section.name == NULL)
-	{
-	  /* Initialize the small common section.  */
-	  mips_elf_scom_section.name = ".scommon";
-	  mips_elf_scom_section.flags = SEC_IS_COMMON;
-	  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;
-	  mips_elf_scom_symbol.name = ".scommon";
-	  mips_elf_scom_symbol.flags = BSF_SECTION_SYM;
-	  mips_elf_scom_symbol.section = &mips_elf_scom_section;
-	  mips_elf_scom_symbol_ptr = &mips_elf_scom_symbol;
-	}
       asym->section = &mips_elf_scom_section;
       asym->value = elfsym->internal_elf_sym.st_size;
       break;
@@ -7238,9 +7324,9 @@ _bfd_mips_elf_eh_frame_address_size (bfd
 {
   if (elf_elfheader (abfd)->e_ident[EI_CLASS] == ELFCLASS64)
     return 8;
-  if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == E_MIPS_ABI_EABI64)
+  if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == EF_MIPS_ABI_EABI64)
     {
-      bfd_boolean long32_p, long64_p;
+      bool long32_p, long64_p;
 
       long32_p = bfd_get_section_by_name (abfd, ".gcc_compiled_long32") != 0;
       long64_p = bfd_get_section_by_name (abfd, ".gcc_compiled_long64") != 0;
@@ -7251,11 +7337,23 @@ _bfd_mips_elf_eh_frame_address_size (bfd
       if (long64_p)
 	return 8;
 
-      if (sec->reloc_count > 0
-	  && elf_section_data (sec)->relocs != NULL
-	  && (ELF32_R_TYPE (elf_section_data (sec)->relocs[0].r_info)
-	      == R_MIPS_64))
-	return 8;
+      if (sec->reloc_count > 0)
+	{
+	  /* Load the relocations for this section.  */
+	  Elf_Internal_Rela *internal_relocs =
+	    _bfd_elf_link_read_relocs (abfd, sec, NULL, NULL, true);
+	  if (internal_relocs == NULL)
+	    return 0;
+
+	  unsigned int size = 0;
+	  if (ELF32_R_TYPE (internal_relocs[0].r_info) == R_MIPS_64)
+	    size = 8;
+
+	  if (elf_section_data (sec)->relocs != internal_relocs)
+	    free (internal_relocs);
+
+	  return size;
+	}
 
       return 0;
     }
@@ -7276,10 +7374,10 @@ _bfd_mips_elf_eh_frame_address_size (bfd
    We can work around this problem by giving names to local section symbols.
    This is also what the MIPSpro tools do.  */
 
-bfd_boolean
+bool
 _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
@@ -7287,7 +7385,7 @@ _bfd_mips_elf_name_local_section_symbols
    sections that need the SHF_MIPS_GPREL flag by name; there has to be
    a better way.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_section_processing (bfd *abfd, Elf_Internal_Shdr *hdr)
 {
   if (hdr->sh_type == SHT_MIPS_REGINFO
@@ -7305,16 +7403,16 @@ _bfd_mips_elf_section_processing (bfd *a
 	     abfd, (uint64_t) sizeof (Elf32_External_RegInfo),
 	     (uint64_t) hdr->sh_size);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       if (bfd_seek (abfd,
 		    hdr->sh_offset + sizeof (Elf32_External_RegInfo) - 4,
 		    SEEK_SET) != 0)
-	return FALSE;
+	return false;
       H_PUT_32 (abfd, elf_gp (abfd), buf);
-      if (bfd_bwrite (buf, 4, abfd) != 4)
-	return FALSE;
+      if (bfd_write (buf, 4, abfd) != 4)
+	return false;
     }
 
   if (hdr->sh_type == SHT_MIPS_OPTIONS
@@ -7359,10 +7457,10 @@ _bfd_mips_elf_section_processing (bfd *a
 			     + sizeof (Elf_External_Options)
 			     + (sizeof (Elf64_External_RegInfo) - 8)),
 			     SEEK_SET) != 0)
-		return FALSE;
+		return false;
 	      H_PUT_64 (abfd, elf_gp (abfd), buf);
-	      if (bfd_bwrite (buf, 8, abfd) != 8)
-		return FALSE;
+	      if (bfd_write (buf, 8, abfd) != 8)
+		return false;
 	    }
 	  else if (intopt.kind == ODK_REGINFO)
 	    {
@@ -7374,10 +7472,10 @@ _bfd_mips_elf_section_processing (bfd *a
 			     + sizeof (Elf_External_Options)
 			     + (sizeof (Elf32_External_RegInfo) - 4)),
 			    SEEK_SET) != 0)
-		return FALSE;
+		return false;
 	      H_PUT_32 (abfd, elf_gp (abfd), buf);
-	      if (bfd_bwrite (buf, 4, abfd) != 4)
-		return FALSE;
+	      if (bfd_write (buf, 4, abfd) != 4)
+		return false;
 	    }
 	  l += intopt.size;
 	}
@@ -7415,17 +7513,14 @@ _bfd_mips_elf_section_processing (bfd *a
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* 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
+bool
 _bfd_mips_elf_section_from_shdr (bfd *abfd,
 				 Elf_Internal_Shdr *hdr,
 				 const char *name,
@@ -7442,82 +7537,87 @@ _bfd_mips_elf_section_from_shdr (bfd *ab
     {
     case SHT_MIPS_LIBLIST:
       if (strcmp (name, ".liblist") != 0)
-	return FALSE;
+	return false;
       break;
     case SHT_MIPS_MSYM:
       if (strcmp (name, ".msym") != 0)
-	return FALSE;
+	return false;
       break;
     case SHT_MIPS_CONFLICT:
       if (strcmp (name, ".conflict") != 0)
-	return FALSE;
+	return false;
       break;
     case SHT_MIPS_GPTAB:
-      if (! CONST_STRNEQ (name, ".gptab."))
-	return FALSE;
+      if (! startswith (name, ".gptab."))
+	return false;
       break;
     case SHT_MIPS_UCODE:
       if (strcmp (name, ".ucode") != 0)
-	return FALSE;
+	return false;
       break;
     case SHT_MIPS_DEBUG:
       if (strcmp (name, ".mdebug") != 0)
-	return FALSE;
+	return false;
       flags = SEC_DEBUGGING;
       break;
     case SHT_MIPS_REGINFO:
       if (strcmp (name, ".reginfo") != 0
 	  || hdr->sh_size != sizeof (Elf32_External_RegInfo))
-	return FALSE;
+	return false;
       flags = (SEC_LINK_ONCE | SEC_LINK_DUPLICATES_SAME_SIZE);
       break;
     case SHT_MIPS_IFACE:
       if (strcmp (name, ".MIPS.interfaces") != 0)
-	return FALSE;
+	return false;
       break;
     case SHT_MIPS_CONTENT:
-      if (! CONST_STRNEQ (name, ".MIPS.content"))
-	return FALSE;
+      if (! startswith (name, ".MIPS.content"))
+	return false;
       break;
     case SHT_MIPS_OPTIONS:
       if (!MIPS_ELF_OPTIONS_SECTION_NAME_P (name))
-	return FALSE;
+	return false;
       break;
     case SHT_MIPS_ABIFLAGS:
       if (!MIPS_ELF_ABIFLAGS_SECTION_NAME_P (name))
-	return FALSE;
+	return false;
       flags = (SEC_LINK_ONCE | SEC_LINK_DUPLICATES_SAME_SIZE);
       break;
     case SHT_MIPS_DWARF:
-      if (! CONST_STRNEQ (name, ".debug_")
-	  && ! CONST_STRNEQ (name, ".zdebug_"))
-	return FALSE;
+      if (! startswith (name, ".debug_")
+         && ! startswith (name, ".gnu.debuglto_.debug_")
+         && ! startswith (name, ".zdebug_")
+         && ! startswith (name, ".gnu.debuglto_.zdebug_"))
+	return false;
       break;
     case SHT_MIPS_SYMBOL_LIB:
       if (strcmp (name, ".MIPS.symlib") != 0)
-	return FALSE;
+	return false;
       break;
     case SHT_MIPS_EVENTS:
-      if (! CONST_STRNEQ (name, ".MIPS.events")
-	  && ! CONST_STRNEQ (name, ".MIPS.post_rel"))
-	return FALSE;
+      if (! startswith (name, ".MIPS.events")
+	  && ! startswith (name, ".MIPS.post_rel"))
+	return false;
       break;
     case SHT_MIPS_XHASH:
       if (strcmp (name, ".MIPS.xhash") != 0)
-	return FALSE;
+	return false;
     default:
       break;
     }
 
   if (! _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex))
-    return FALSE;
+    return false;
+
+  if (hdr->sh_flags & SHF_MIPS_GPREL)
+    flags |= SEC_SMALL_DATA;
 
   if (flags)
     {
       if (!bfd_set_section_flags (hdr->bfd_section,
 				  (bfd_section_flags (hdr->bfd_section)
 				   | flags)))
-	return FALSE;
+	return false;
     }
 
   if (hdr->sh_type == SHT_MIPS_ABIFLAGS)
@@ -7526,12 +7626,12 @@ _bfd_mips_elf_section_from_shdr (bfd *ab
 
       if (! bfd_get_section_contents (abfd, hdr->bfd_section,
 				      &ext, 0, sizeof ext))
-	return FALSE;
+	return false;
       bfd_mips_elf_swap_abiflags_v0_in (abfd, &ext,
 					&mips_elf_tdata (abfd)->abiflags);
       if (mips_elf_tdata (abfd)->abiflags.version != 0)
-	return FALSE;
-      mips_elf_tdata (abfd)->abiflags_valid = TRUE;
+	return false;
+      mips_elf_tdata (abfd)->abiflags_valid = true;
     }
 
   /* FIXME: We should record sh_info for a .gptab section.  */
@@ -7547,7 +7647,7 @@ _bfd_mips_elf_section_from_shdr (bfd *ab
 
       if (! bfd_get_section_contents (abfd, hdr->bfd_section,
 				      &ext, 0, sizeof ext))
-	return FALSE;
+	return false;
       bfd_mips_elf32_swap_reginfo_in (abfd, &ext, &s);
       elf_gp (abfd) = s.ri_gp_value;
     }
@@ -7560,14 +7660,10 @@ _bfd_mips_elf_section_from_shdr (bfd *ab
     {
       bfd_byte *contents, *l, *lend;
 
-      contents = bfd_malloc (hdr->sh_size);
-      if (contents == NULL)
-	return FALSE;
-      if (! bfd_get_section_contents (abfd, hdr->bfd_section, contents,
-				      0, hdr->sh_size))
+      if (!bfd_malloc_and_get_section (abfd, hdr->bfd_section, &contents))
 	{
 	  free (contents);
-	  return FALSE;
+	  return false;
 	}
       l = contents;
       lend = contents + hdr->sh_size;
@@ -7579,48 +7675,57 @@ _bfd_mips_elf_section_from_shdr (bfd *ab
 					&intopt);
 	  if (intopt.size < sizeof (Elf_External_Options))
 	    {
+	    bad_opt:
 	      _bfd_error_handler
 		/* xgettext:c-format */
-		(_("%pB: warning: bad `%s' option size %u smaller than"
-		   " its header"),
-		abfd, MIPS_ELF_OPTIONS_SECTION_NAME (abfd), intopt.size);
+		(_("%pB: warning: truncated `%s' option"),
+		 abfd, MIPS_ELF_OPTIONS_SECTION_NAME (abfd));
 	      break;
 	    }
-	  if (ABI_64_P (abfd) && intopt.kind == ODK_REGINFO)
+	  if (intopt.kind == ODK_REGINFO)
 	    {
-	      Elf64_Internal_RegInfo intreg;
-
-	      bfd_mips_elf64_swap_reginfo_in
-		(abfd,
-		 ((Elf64_External_RegInfo *)
-		  (l + sizeof (Elf_External_Options))),
-		 &intreg);
-	      elf_gp (abfd) = intreg.ri_gp_value;
-	    }
-	  else if (intopt.kind == ODK_REGINFO)
-	    {
-	      Elf32_RegInfo intreg;
-
-	      bfd_mips_elf32_swap_reginfo_in
-		(abfd,
-		 ((Elf32_External_RegInfo *)
-		  (l + sizeof (Elf_External_Options))),
-		 &intreg);
-	      elf_gp (abfd) = intreg.ri_gp_value;
+	      if (ABI_64_P (abfd))
+		{
+		  Elf64_Internal_RegInfo intreg;
+		  size_t needed = (sizeof (Elf_External_Options)
+				   + sizeof (Elf64_External_RegInfo));
+		  if (intopt.size < needed || (size_t) (lend - l) < needed)
+		    goto bad_opt;
+		  bfd_mips_elf64_swap_reginfo_in
+		    (abfd,
+		     ((Elf64_External_RegInfo *)
+		      (l + sizeof (Elf_External_Options))),
+		     &intreg);
+		  elf_gp (abfd) = intreg.ri_gp_value;
+		}
+	      else
+		{
+		  Elf32_RegInfo intreg;
+		  size_t needed = (sizeof (Elf_External_Options)
+				   + sizeof (Elf32_External_RegInfo));
+		  if (intopt.size < needed || (size_t) (lend - l) < needed)
+		    goto bad_opt;
+		  bfd_mips_elf32_swap_reginfo_in
+		    (abfd,
+		     ((Elf32_External_RegInfo *)
+		      (l + sizeof (Elf_External_Options))),
+		     &intreg);
+		  elf_gp (abfd) = intreg.ri_gp_value;
+		}
 	    }
 	  l += intopt.size;
 	}
       free (contents);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the correct type for a MIPS ELF section.  We do this by the
    section name, which is a hack, but ought to work.  This routine is
    used by both the 32-bit and the 64-bit ABI.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_fake_sections (bfd *abfd, Elf_Internal_Shdr *hdr, asection *sec)
 {
   const char *name = bfd_section_name (sec);
@@ -7633,7 +7738,7 @@ _bfd_mips_elf_fake_sections (bfd *abfd,
     }
   else if (strcmp (name, ".conflict") == 0)
     hdr->sh_type = SHT_MIPS_CONFLICT;
-  else if (CONST_STRNEQ (name, ".gptab."))
+  else if (startswith (name, ".gptab."))
     {
       hdr->sh_type = SHT_MIPS_GPTAB;
       hdr->sh_entsize = sizeof (Elf32_External_gptab);
@@ -7690,7 +7795,7 @@ _bfd_mips_elf_fake_sections (bfd *abfd,
       hdr->sh_type = SHT_MIPS_IFACE;
       hdr->sh_flags |= SHF_MIPS_NOSTRIP;
     }
-  else if (CONST_STRNEQ (name, ".MIPS.content"))
+  else if (startswith (name, ".MIPS.content"))
     {
       hdr->sh_type = SHT_MIPS_CONTENT;
       hdr->sh_flags |= SHF_MIPS_NOSTRIP;
@@ -7702,20 +7807,22 @@ _bfd_mips_elf_fake_sections (bfd *abfd,
       hdr->sh_entsize = 1;
       hdr->sh_flags |= SHF_MIPS_NOSTRIP;
     }
-  else if (CONST_STRNEQ (name, ".MIPS.abiflags"))
+  else if (startswith (name, ".MIPS.abiflags"))
     {
       hdr->sh_type = SHT_MIPS_ABIFLAGS;
       hdr->sh_entsize = sizeof (Elf_External_ABIFlags_v0);
     }
-  else if (CONST_STRNEQ (name, ".debug_")
-	   || CONST_STRNEQ (name, ".zdebug_"))
+  else if (startswith (name, ".debug_")
+	   || startswith (name, ".gnu.debuglto_.debug_")
+	   || startswith (name, ".zdebug_")
+	   || startswith (name, ".gnu.debuglto_.zdebug_"))
     {
       hdr->sh_type = SHT_MIPS_DWARF;
 
       /* Irix facilities such as libexc expect a single .debug_frame
 	 per executable, the system ones have NOSTRIP set and the linker
 	 doesn't merge sections with different flags so ...  */
-      if (SGI_COMPAT (abfd) && CONST_STRNEQ (name, ".debug_frame"))
+      if (SGI_COMPAT (abfd) && startswith (name, ".debug_frame"))
 	hdr->sh_flags |= SHF_MIPS_NOSTRIP;
     }
   else if (strcmp (name, ".MIPS.symlib") == 0)
@@ -7724,8 +7831,8 @@ _bfd_mips_elf_fake_sections (bfd *abfd,
       /* The sh_link and sh_info fields are set in
 	 final_write_processing.  */
     }
-  else if (CONST_STRNEQ (name, ".MIPS.events")
-	   || CONST_STRNEQ (name, ".MIPS.post_rel"))
+  else if (startswith (name, ".MIPS.events")
+	   || startswith (name, ".MIPS.post_rel"))
     {
       hdr->sh_type = SHT_MIPS_EVENTS;
       hdr->sh_flags |= SHF_MIPS_NOSTRIP;
@@ -7750,7 +7857,7 @@ _bfd_mips_elf_fake_sections (bfd *abfd,
    these, and the IRIX ld doesn't like resulting empty RELA sections.
    Thus we create those header only on demand now.  */
 
-  return TRUE;
+  return true;
 }
 
 /* Given a BFD section, try to locate the corresponding ELF section
@@ -7759,27 +7866,27 @@ _bfd_mips_elf_fake_sections (bfd *abfd,
    but for non-PIC objects we will certainly want support for at least
    the .scommon section.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_section_from_bfd_section (bfd *abfd ATTRIBUTE_UNUSED,
 					asection *sec, int *retval)
 {
   if (strcmp (bfd_section_name (sec), ".scommon") == 0)
     {
       *retval = SHN_MIPS_SCOMMON;
-      return TRUE;
+      return true;
     }
   if (strcmp (bfd_section_name (sec), ".acommon") == 0)
     {
       *retval = SHN_MIPS_ACOMMON;
-      return TRUE;
+      return true;
     }
-  return FALSE;
+  return false;
 }
 
 /* Hook called by the linker routine which adds symbols from an object
    file.  We must handle the special MIPS section numbers here.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_add_symbol_hook (bfd *abfd, struct bfd_link_info *info,
 			       Elf_Internal_Sym *sym, const char **namep,
 			       flagword *flagsp ATTRIBUTE_UNUSED,
@@ -7791,7 +7898,7 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd
     {
       /* Skip IRIX5 rld entry name.  */
       *namep = NULL;
-      return TRUE;
+      return true;
     }
 
   /* Shared objects may have a dynamic symbol '_gp_disp' defined as
@@ -7805,22 +7912,23 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd
       && (strcmp (*namep, "_gp_disp") == 0))
     {
       *namep = NULL;
-      return TRUE;
+      return true;
     }
 
   switch (sym->st_shndx)
     {
     case SHN_COMMON:
       /* Common symbols less than the GP size are automatically
-	 treated as SHN_MIPS_SCOMMON symbols.  */
+	 treated as SHN_MIPS_SCOMMON symbols, with some exceptions.  */
       if (sym->st_size > elf_gp_size (abfd)
 	  || ELF_ST_TYPE (sym->st_info) == STT_TLS
-	  || IRIX_COMPAT (abfd) == ict_irix6)
+	  || IRIX_COMPAT (abfd) == ict_irix6
+	  || strcmp (*namep, "__gnu_lto_slim") == 0)
 	break;
       /* 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,25 +7938,22 @@ _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)
-	    return FALSE;
+	    return false;
 
 	  amt = sizeof (asymbol);
 	  elf_text_symbol = bfd_zalloc (abfd, amt);
 	  if (elf_text_symbol == NULL)
-	    return FALSE;
+	    return false;
 
 	  /* Initialize the section.  */
 
 	  mips_elf_tdata (abfd)->elf_text_section = elf_text_section;
-	  mips_elf_tdata (abfd)->elf_text_symbol = elf_text_symbol;
 
 	  elf_text_section->symbol = elf_text_symbol;
-	  elf_text_section->symbol_ptr_ptr = &mips_elf_tdata (abfd)->elf_text_symbol;
-
 	  elf_text_section->name = ".text";
 	  elf_text_section->flags = SEC_NO_FLAGS;
 	  elf_text_section->output_section = NULL;
@@ -7871,25 +7976,22 @@ _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)
-	    return FALSE;
+	    return false;
 
 	  amt = sizeof (asymbol);
 	  elf_data_symbol = bfd_zalloc (abfd, amt);
 	  if (elf_data_symbol == NULL)
-	    return FALSE;
+	    return false;
 
 	  /* Initialize the section.  */
 
 	  mips_elf_tdata (abfd)->elf_data_section = elf_data_section;
-	  mips_elf_tdata (abfd)->elf_data_symbol = elf_data_symbol;
 
 	  elf_data_section->symbol = elf_data_symbol;
-	  elf_data_section->symbol_ptr_ptr = &mips_elf_tdata (abfd)->elf_data_symbol;
-
 	  elf_data_section->name = ".data";
 	  elf_data_section->flags = SEC_NO_FLAGS;
 	  elf_data_section->output_section = NULL;
@@ -7920,9 +8022,9 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd
       /* Mark __rld_obj_head as dynamic.  */
       bh = NULL;
       if (! (_bfd_generic_link_add_one_symbol
-	     (info, abfd, *namep, BSF_GLOBAL, *secp, *valp, NULL, FALSE,
+	     (info, abfd, *namep, BSF_GLOBAL, *secp, *valp, NULL, false,
 	      get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	return false;
 
       h = (struct elf_link_hash_entry *) bh;
       h->non_elf = 0;
@@ -7930,9 +8032,9 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd
       h->type = STT_OBJECT;
 
       if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
 
-      mips_elf_hash_table (info)->use_rld_obj_head = TRUE;
+      mips_elf_hash_table (info)->use_rld_obj_head = true;
       mips_elf_hash_table (info)->rld_symbol = h;
     }
 
@@ -7942,7 +8044,7 @@ _bfd_mips_elf_add_symbol_hook (bfd *abfd
   if (ELF_ST_IS_COMPRESSED (sym->st_other))
     ++*valp;
 
-  return TRUE;
+  return true;
 }
 
 /* This hook function is called before the linker writes out a global
@@ -7972,7 +8074,7 @@ _bfd_mips_elf_link_output_symbol_hook
 
 /* Create dynamic sections when linking against a dynamic object.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info)
 {
   struct elf_link_hash_entry *h;
@@ -7990,22 +8092,22 @@ _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)
 	{
 	  if (!bfd_set_section_flags (s, flags))
-	    return FALSE;
+	    return false;
 	}
     }
 
   /* We need to create .got section.  */
   if (!mips_elf_create_got_section (abfd, info))
-    return FALSE;
+    return false;
 
-  if (! mips_elf_rel_dyn_section (info, TRUE))
-    return FALSE;
+  if (! mips_elf_rel_dyn_section (info, true))
+    return false;
 
   /* Create .stub section.  */
   s = bfd_make_section_anyway_with_flags (abfd,
@@ -8013,7 +8115,7 @@ _bfd_mips_elf_create_dynamic_sections (b
 					  flags | SEC_CODE);
   if (s == NULL
       || !bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd)))
-    return FALSE;
+    return false;
   htab->sstubs = s;
 
   if (!mips_elf_hash_table (info)->use_rld_obj_head
@@ -8024,7 +8126,7 @@ _bfd_mips_elf_create_dynamic_sections (b
 					      flags &~ (flagword) SEC_READONLY);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, MIPS_ELF_LOG_FILE_ALIGN (abfd)))
-	return FALSE;
+	return false;
     }
 
   /* Create .MIPS.xhash section.  */
@@ -8043,8 +8145,8 @@ _bfd_mips_elf_create_dynamic_sections (b
 	  bh = NULL;
 	  if (! (_bfd_generic_link_add_one_symbol
 		 (info, abfd, *namep, BSF_GLOBAL, bfd_und_section_ptr, 0,
-		  NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh)))
-	    return FALSE;
+		  NULL, false, get_elf_backend_data (abfd)->collect, &bh)))
+	    return false;
 
 	  h = (struct elf_link_hash_entry *) bh;
 	  h->mark = 1;
@@ -8053,14 +8155,14 @@ _bfd_mips_elf_create_dynamic_sections (b
 	  h->type = STT_SECTION;
 
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       /* We need to create a .compact_rel section.  */
       if (SGI_COMPAT (abfd))
 	{
 	  if (!mips_elf_create_compact_rel_section (abfd, info))
-	    return FALSE;
+	    return false;
 	}
 
       /* Change alignments of some sections.  */
@@ -8094,8 +8196,8 @@ _bfd_mips_elf_create_dynamic_sections (b
       bh = NULL;
       if (!(_bfd_generic_link_add_one_symbol
 	    (info, abfd, name, BSF_GLOBAL, bfd_abs_section_ptr, 0,
-	     NULL, FALSE, get_elf_backend_data (abfd)->collect, &bh)))
-	return FALSE;
+	     NULL, false, get_elf_backend_data (abfd)->collect, &bh)))
+	return false;
 
       h = (struct elf_link_hash_entry *) bh;
       h->non_elf = 0;
@@ -8103,7 +8205,7 @@ _bfd_mips_elf_create_dynamic_sections (b
       h->type = STT_SECTION;
 
       if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	return FALSE;
+	return false;
 
       if (! mips_elf_hash_table (info)->use_rld_obj_head)
 	{
@@ -8117,9 +8219,9 @@ _bfd_mips_elf_create_dynamic_sections (b
 	  name = SGI_COMPAT (abfd) ? "__rld_map" : "__RLD_MAP";
 	  bh = NULL;
 	  if (!(_bfd_generic_link_add_one_symbol
-		(info, abfd, name, BSF_GLOBAL, s, 0, NULL, FALSE,
+		(info, abfd, name, BSF_GLOBAL, s, 0, NULL, false,
 		 get_elf_backend_data (abfd)->collect, &bh)))
-	    return FALSE;
+	    return false;
 
 	  h = (struct elf_link_hash_entry *) bh;
 	  h->non_elf = 0;
@@ -8127,7 +8229,7 @@ _bfd_mips_elf_create_dynamic_sections (b
 	  h->type = STT_OBJECT;
 
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	  mips_elf_hash_table (info)->rld_symbol = h;
 	}
     }
@@ -8135,21 +8237,21 @@ _bfd_mips_elf_create_dynamic_sections (b
   /* Create the .plt, .rel(a).plt, .dynbss and .rel(a).bss sections.
      Also, on VxWorks, create the _PROCEDURE_LINKAGE_TABLE_ symbol.  */
   if (!_bfd_elf_create_dynamic_sections (abfd, info))
-    return FALSE;
+    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;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Return true if relocation REL against section SEC is a REL rather than
    RELA relocation.  RELOCS is the first relocation in the section and
    ABFD is the bfd that contains SEC.  */
 
-static bfd_boolean
+static bool
 mips_elf_rel_relocation_p (bfd *abfd, asection *sec,
 			   const Elf_Internal_Rela *relocs,
 			   const Elf_Internal_Rela *rel)
@@ -8161,7 +8263,7 @@ mips_elf_rel_relocation_p (bfd *abfd, as
      fact that the INPUT_SECTION's REL_HDR is read before RELA_HDR.  */
   rel_hdr = elf_section_data (sec)->rel.hdr;
   if (rel_hdr == NULL)
-    return FALSE;
+    return false;
   bed = get_elf_backend_data (abfd);
   return ((size_t) (rel - relocs)
 	  < NUM_SHDR_ENTRIES (rel_hdr) * bed->s->int_rels_per_ext_rel);
@@ -8172,7 +8274,8 @@ mips_elf_rel_relocation_p (bfd *abfd, as
    of the section that REL is against.  */
 
 static bfd_vma
-mips_elf_read_rel_addend (bfd *abfd, const Elf_Internal_Rela *rel,
+mips_elf_read_rel_addend (bfd *abfd, asection *sec,
+			  const Elf_Internal_Rela *rel,
 			  reloc_howto_type *howto, bfd_byte *contents)
 {
   bfd_byte *location;
@@ -8180,13 +8283,16 @@ mips_elf_read_rel_addend (bfd *abfd, con
   bfd_vma addend;
   bfd_vma bytes;
 
+  if (!bfd_reloc_offset_in_range (howto, abfd, sec, rel->r_offset))
+    return 0;
+
   r_type = ELF_R_TYPE (abfd, rel->r_info);
   location = contents + rel->r_offset;
 
   /* Get the addend, which is stored in the input file.  */
-  _bfd_mips_elf_reloc_unshuffle (abfd, r_type, FALSE, location);
+  _bfd_mips_elf_reloc_unshuffle (abfd, r_type, false, location);
   bytes = mips_elf_obtain_contents (howto, rel, abfd, contents);
-  _bfd_mips_elf_reloc_shuffle (abfd, r_type, FALSE, location);
+  _bfd_mips_elf_reloc_shuffle (abfd, r_type, false, location);
 
   addend = bytes & howto->src_mask;
 
@@ -8204,8 +8310,9 @@ mips_elf_read_rel_addend (bfd *abfd, con
    or false if the LO16 could not be found.  RELEND is the exclusive
    upper bound on the relocations for REL's section.  */
 
-static bfd_boolean
+static bool
 mips_elf_add_lo16_rel_addend (bfd *abfd,
+			      asection *sec,
 			      const Elf_Internal_Rela *rel,
 			      const Elf_Internal_Rela *relend,
 			      bfd_byte *contents, bfd_vma *addend)
@@ -8216,14 +8323,44 @@ mips_elf_add_lo16_rel_addend (bfd *abfd,
   bfd_vma l;
 
   r_type = ELF_R_TYPE (abfd, rel->r_info);
-  if (mips16_reloc_p (r_type))
-    lo16_type = R_MIPS16_LO16;
-  else if (micromips_reloc_p (r_type))
-    lo16_type = R_MICROMIPS_LO16;
-  else if (r_type == R_MIPS_PCHI16)
-    lo16_type = R_MIPS_PCLO16;
-  else
-    lo16_type = R_MIPS_LO16;
+  switch (r_type)
+    {
+    case R_MIPS_HI16:
+    case R_MIPS_GOT16:
+      lo16_type = R_MIPS_LO16;
+      break;
+    case R_MIPS_PCHI16:
+      lo16_type = R_MIPS_PCLO16;
+      break;
+    case R_MIPS_TLS_DTPREL_HI16:
+      lo16_type = R_MIPS_TLS_DTPREL_LO16;
+      break;
+    case R_MIPS_TLS_TPREL_HI16:
+      lo16_type = R_MIPS_TLS_TPREL_LO16;
+      break;
+    case R_MIPS16_HI16:
+    case R_MIPS16_GOT16:
+      lo16_type = R_MIPS16_LO16;
+      break;
+    case R_MIPS16_TLS_DTPREL_HI16:
+      lo16_type = R_MIPS16_TLS_DTPREL_LO16;
+      break;
+    case R_MIPS16_TLS_TPREL_HI16:
+      lo16_type = R_MIPS16_TLS_TPREL_LO16;
+      break;
+    case R_MICROMIPS_HI16:
+    case R_MICROMIPS_GOT16:
+      lo16_type = R_MICROMIPS_LO16;
+      break;
+    case R_MICROMIPS_TLS_DTPREL_HI16:
+      lo16_type = R_MICROMIPS_TLS_DTPREL_LO16;
+      break;
+    case R_MICROMIPS_TLS_TPREL_HI16:
+      lo16_type = R_MICROMIPS_TLS_TPREL_LO16;
+      break;
+    default:
+      abort ();
+    }
 
   /* The combined value is the sum of the HI16 addend, left-shifted by
      sixteen bits, and the LO16 addend, sign extended.  (Usually, the
@@ -8244,35 +8381,40 @@ mips_elf_add_lo16_rel_addend (bfd *abfd,
      the ABI but not immediately harmful.  */
   lo16_relocation = mips_elf_next_relocation (abfd, lo16_type, rel, relend);
   if (lo16_relocation == NULL)
-    return FALSE;
+    return false;
 
   /* Obtain the addend kept there.  */
-  lo16_howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, lo16_type, FALSE);
-  l = mips_elf_read_rel_addend (abfd, lo16_relocation, lo16_howto, contents);
+  lo16_howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, lo16_type, false);
+  l = mips_elf_read_rel_addend (abfd, sec, lo16_relocation, lo16_howto,
+				contents);
 
   l <<= lo16_howto->rightshift;
+  /* For a PC-relative relocation the PCLO16 part of the addend
+     is relative to its PC and not ours, so we need to adjust it.  */
+  if (r_type == R_MIPS_PCHI16)
+    l = (l - (lo16_relocation->r_offset - rel->r_offset)) & 0xffff;
   l = _bfd_mips_elf_sign_extend (l, 16);
 
   *addend <<= 16;
   *addend += l;
-  return TRUE;
+  return true;
 }
 
 /* Try to read the contents of section SEC in bfd ABFD.  Return true and
    store the contents in *CONTENTS on success.  Assume that *CONTENTS
    already holds the contents if it is nonull on entry.  */
 
-static bfd_boolean
+static bool
 mips_elf_get_section_contents (bfd *abfd, asection *sec, bfd_byte **contents)
 {
   if (*contents)
-    return TRUE;
+    return true;
 
   /* Get cached copy if it exists.  */
   if (elf_section_data (sec)->this_hdr.contents != NULL)
     {
       *contents = elf_section_data (sec)->this_hdr.contents;
-      return TRUE;
+      return true;
     }
 
   return bfd_malloc_and_get_section (abfd, sec, contents);
@@ -8301,7 +8443,7 @@ mips_elf_make_plt_record (bfd *abfd)
    and local GOT entries whose value is zero at static link time will
    retain their value at load time.  */
 
-static bfd_boolean
+static bool
 mips_elf_define_absolute_zero (bfd *abfd, struct bfd_link_info *info,
 			       struct mips_elf_link_hash_table *htab,
 			       unsigned int r_type)
@@ -8319,8 +8461,8 @@ mips_elf_define_absolute_zero (bfd *abfd
   hzero.bh = NULL;
   if (!_bfd_generic_link_add_one_symbol (info, abfd, "__gnu_absolute_zero",
 					 BSF_GLOBAL, bfd_abs_section_ptr, 0,
-					 NULL, FALSE, FALSE, &hzero.bh))
-    return FALSE;
+					 NULL, false, false, &hzero.bh))
+    return false;
 
   BFD_ASSERT (hzero.bh != NULL);
   hzero.eh->size = 0;
@@ -8329,19 +8471,19 @@ mips_elf_define_absolute_zero (bfd *abfd
   hzero.eh->def_regular = 1;
   hzero.eh->non_elf = 0;
 
-  if (!mips_elf_record_global_got_symbol (hzero.eh, abfd, info, TRUE, r_type))
-    return FALSE;
+  if (!mips_elf_record_global_got_symbol (hzero.eh, abfd, info, true, r_type))
+    return false;
 
-  htab->use_absolute_zero = TRUE;
+  htab->use_absolute_zero = true;
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the relocs for a section during the first phase, and
    allocate space in the global offset table and record the need for
    standard MIPS and compressed procedure linkage table entries.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			    asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -8360,7 +8502,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
   reloc_howto_type *howto;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = mips_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -8392,7 +8534,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	       " stub section `%s'"),
 	     abfd, name);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       if (r_symndx < extsymoff
@@ -8418,7 +8560,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		= _bfd_elf_link_read_relocs (abfd, o, NULL, NULL,
 					     info->keep_memory);
 	      if (sec_relocs == NULL)
-		return FALSE;
+		return false;
 
 	      rend = sec_relocs + o->reloc_count;
 	      for (r = sec_relocs; r < rend; r++)
@@ -8441,7 +8583,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		 can easily discard it by setting the SEC_EXCLUDE
 		 flag.  */
 	      sec->flags |= SEC_EXCLUDE;
-	      return TRUE;
+	      return true;
 	    }
 
 	  /* Record this stub in an array of local symbol stubs for
@@ -8459,7 +8601,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	      amt = symcount * sizeof (asection *);
 	      n = bfd_zalloc (abfd, amt);
 	      if (n == NULL)
-		return FALSE;
+		return false;
 	      mips_elf_tdata (abfd)->local_stubs = n;
 	    }
 
@@ -8492,12 +8634,12 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	  if (h->fn_stub != NULL)
 	    {
 	      sec->flags |= SEC_EXCLUDE;
-	      return TRUE;
+	      return true;
 	    }
 
 	  sec->flags |= SEC_KEEP;
 	  h->fn_stub = sec;
-	  mips_elf_hash_table (info)->mips16_stubs_seen = TRUE;
+	  mips_elf_hash_table (info)->mips16_stubs_seen = true;
 	}
     }
   else if (CALL_STUB_P (name) || CALL_FP_STUB_P (name))
@@ -8518,7 +8660,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	       " stub section `%s'"),
 	     abfd, name);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       if (r_symndx < extsymoff
@@ -8544,7 +8686,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		= _bfd_elf_link_read_relocs (abfd, o, NULL, NULL,
 					     info->keep_memory);
 	      if (sec_relocs == NULL)
-		return FALSE;
+		return false;
 
 	      rend = sec_relocs + o->reloc_count;
 	      for (r = sec_relocs; r < rend; r++)
@@ -8567,7 +8709,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		 can easily discard it by setting the SEC_EXCLUDE
 		 flag.  */
 	      sec->flags |= SEC_EXCLUDE;
-	      return TRUE;
+	      return true;
 	    }
 
 	  /* Record this stub in an array of local symbol call_stubs for
@@ -8585,7 +8727,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	      amt = symcount * sizeof (asection *);
 	      n = bfd_zalloc (abfd, amt);
 	      if (n == NULL)
-		return FALSE;
+		return false;
 	      mips_elf_tdata (abfd)->local_call_stubs = n;
 	    }
 
@@ -8617,12 +8759,12 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	  if (*loc != NULL)
 	    {
 	      sec->flags |= SEC_EXCLUDE;
-	      return TRUE;
+	      return true;
 	    }
 
 	  sec->flags |= SEC_KEEP;
 	  *loc = sec;
-	  mips_elf_hash_table (info)->mips16_stubs_seen = TRUE;
+	  mips_elf_hash_table (info)->mips16_stubs_seen = true;
 	}
     }
 
@@ -8633,9 +8775,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
       unsigned long r_symndx;
       unsigned int r_type;
       struct elf_link_hash_entry *h;
-      bfd_boolean can_make_dynamic_p;
-      bfd_boolean call_reloc_p;
-      bfd_boolean constrain_symbol_p;
+      bool can_make_dynamic_p;
+      bool call_reloc_p;
+      bool constrain_symbol_p;
 
       r_symndx = ELF_R_SYM (abfd, rel->r_info);
       r_type = ELF_R_TYPE (abfd, rel->r_info);
@@ -8649,7 +8791,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	    (_("%pB: malformed reloc detected for section %s"),
 	     abfd, name);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       else
 	{
@@ -8664,17 +8806,15 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 
       /* Set CAN_MAKE_DYNAMIC_P to true if we can convert this
 	 relocation into a dynamic one.  */
-      can_make_dynamic_p = FALSE;
+      can_make_dynamic_p = false;
 
       /* Set CALL_RELOC_P to true if the relocation is for a call,
 	 and if pointer equality therefore doesn't matter.  */
-      call_reloc_p = FALSE;
+      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)
 	{
@@ -8685,7 +8825,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	case R_MICROMIPS_CALL16:
 	case R_MICROMIPS_CALL_HI16:
 	case R_MICROMIPS_CALL_LO16:
-	  call_reloc_p = TRUE;
+	  call_reloc_p = true;
 	  /* Fall through.  */
 
 	case R_MIPS_GOT16:
@@ -8710,18 +8850,19 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	      && !htab->use_absolute_zero
 	      && UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
 	    {
-	      bfd_boolean rel_reloc;
+	      bool rel_reloc;
 
 	      if (!mips_elf_get_section_contents (abfd, sec, &contents))
-		return FALSE;
+		return false;
 
 	      rel_reloc = mips_elf_rel_relocation_p (abfd, sec, relocs, rel);
 	      howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, r_type, !rel_reloc);
-
-	      if (!mips_elf_nullify_got_load (abfd, contents, rel, howto,
-					      FALSE))
-		if (!mips_elf_define_absolute_zero (abfd, info, htab, r_type))
-		  return FALSE;
+	      if (bfd_reloc_offset_in_range (howto, abfd, sec, rel->r_offset))
+		if (!mips_elf_nullify_got_load (abfd, contents, rel, howto,
+						false))
+		  if (!mips_elf_define_absolute_zero (abfd, info, htab,
+						      r_type))
+		    return false;
 	    }
 
 	  /* Fall through.  */
@@ -8741,17 +8882,18 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	  if (dynobj == NULL)
 	    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))
+	    return false;
+	  if (htab->root.target_os == is_vxworks
+	      && !bfd_link_pic (info))
 	    {
 	      _bfd_error_handler
 		/* xgettext:c-format */
 		(_("%pB: GOT reloc at %#" PRIx64 " not expected in executables"),
 		 abfd, (uint64_t) rel->r_offset);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
-	  can_make_dynamic_p = TRUE;
+	  can_make_dynamic_p = true;
 	  break;
 
 	case R_MIPS_NONE:
@@ -8759,7 +8901,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	case R_MICROMIPS_JALR:
 	  /* These relocations have empty fields and are purely there to
 	     provide link information.  The symbol value doesn't matter.  */
-	  constrain_symbol_p = FALSE;
+	  constrain_symbol_p = false;
 	  break;
 
 	case R_MIPS_GPREL16:
@@ -8771,7 +8913,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	     important for the GP setup sequence in NewABI code, which
 	     always resolves to a local function even if other relocations
 	     against the symbol wouldn't.  */
-	  constrain_symbol_p = FALSE;
+	  constrain_symbol_p = false;
 	  break;
 
 	case R_MIPS_32:
@@ -8788,14 +8930,14 @@ _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)
 			&& MIPS_ELF_READONLY_SECTION (sec))))
 	      && (sec->flags & SEC_ALLOC) != 0)
 	    {
-	      can_make_dynamic_p = TRUE;
+	      can_make_dynamic_p = true;
 	      if (dynobj == NULL)
 		elf_hash_table (info)->dynobj = dynobj = abfd;
 	    }
@@ -8812,7 +8954,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	case R_MICROMIPS_PC10_S1:
 	case R_MICROMIPS_PC16_S1:
 	case R_MICROMIPS_PC23_S2:
-	  call_reloc_p = TRUE;
+	  call_reloc_p = true;
 	  break;
 	}
 
@@ -8830,8 +8972,9 @@ _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))
-		((struct mips_elf_link_hash_entry *) h)->no_fn_stub = TRUE;
+	      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;
 	    }
 
 	  /* Relocations against the special VxWorks __GOTT_BASE__ and
@@ -8841,9 +8984,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	    {
 	      if (sreloc == NULL)
 		{
-		  sreloc = mips_elf_rel_dyn_section (info, TRUE);
+		  sreloc = mips_elf_rel_dyn_section (info, true);
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 	      mips_elf_allocate_dynamic_relocations (dynobj, info, 1);
 	      if (MIPS_ELF_READONLY_SECTION (sec))
@@ -8855,7 +8998,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
@@ -8867,13 +9011,13 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	     R_MIPS_GOT_LO16 or R_MIPS_CALL_LO16.  */
 	  if (!mips_elf_record_local_got_symbol (abfd, r_symndx,
 						 rel->r_addend, info, r_type))
-	    return FALSE;
+	    return false;
 	}
 
       if (h != NULL
 	  && mips_elf_relocation_needs_la25_stub (abfd, r_type,
 						  ELF_ST_IS_MIPS16 (h->other)))
-	((struct mips_elf_link_hash_entry *) h)->has_nonpic_branches = TRUE;
+	((struct mips_elf_link_hash_entry *) h)->has_nonpic_branches = true;
 
       switch (r_type)
 	{
@@ -8887,7 +9031,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		(_("%pB: CALL16 reloc at %#" PRIx64 " not against global symbol"),
 		 abfd, (uint64_t) rel->r_offset);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	  /* Fall through.  */
 
@@ -8900,9 +9044,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	      /* Make sure there is room in the regular GOT to hold the
 		 function's address.  We may eliminate it in favour of
 		 a .got.plt entry later; see mips_elf_count_got_symbols.  */
-	      if (!mips_elf_record_global_got_symbol (h, abfd, info, TRUE,
+	      if (!mips_elf_record_global_got_symbol (h, abfd, info, true,
 						      r_type))
-		return FALSE;
+		return false;
 
 	      /* We need a stub, not a plt entry for the undefined
 		 function.  But we record it as if it needs plt.  See
@@ -8930,12 +9074,12 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	      if (mips_elf_rel_relocation_p (abfd, sec, relocs, rel))
 		{
 		  if (!mips_elf_get_section_contents (abfd, sec, &contents))
-		    return FALSE;
-		  howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, r_type, FALSE);
-		  addend = mips_elf_read_rel_addend (abfd, rel,
+		    return false;
+		  howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, r_type, false);
+		  addend = mips_elf_read_rel_addend (abfd, sec, rel,
 						     howto, contents);
 		  if (got16_reloc_p (r_type))
-		    mips_elf_add_lo16_rel_addend (abfd, rel, rel_end,
+		    mips_elf_add_lo16_rel_addend (abfd, sec, rel, rel_end,
 						  contents, &addend);
 		  else
 		    addend <<= howto->rightshift;
@@ -8944,7 +9088,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		addend = rel->r_addend;
 	      if (!mips_elf_record_got_page_ref (info, abfd, r_symndx,
 						 h, addend))
-		return FALSE;
+		return false;
 
 	      if (h)
 		{
@@ -8965,8 +9109,8 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	case R_MIPS_GOT_DISP:
 	case R_MICROMIPS_GOT_DISP:
 	  if (h && !mips_elf_record_global_got_symbol (h, abfd, info,
-						       FALSE, r_type))
-	    return FALSE;
+						       false, r_type))
+	    return false;
 	  break;
 
 	case R_MIPS_TLS_GOTTPREL:
@@ -8994,15 +9138,15 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	  if (h != NULL)
 	    {
 	      if (!mips_elf_record_global_got_symbol (h, abfd, info,
-						      FALSE, r_type))
-		return FALSE;
+						      false, r_type))
+		return false;
 	    }
 	  else
 	    {
 	      if (!mips_elf_record_local_got_symbol (abfd, r_symndx,
 						     rel->r_addend,
 						     info, r_type))
-		return FALSE;
+		return false;
 	    }
 	  break;
 
@@ -9016,9 +9160,9 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	    {
 	      if (sreloc == NULL)
 		{
-		  sreloc = mips_elf_rel_dyn_section (info, TRUE);
+		  sreloc = mips_elf_rel_dyn_section (info, true);
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 	      if (bfd_link_pic (info) && h == NULL)
 		{
@@ -9051,7 +9195,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 		  if (MIPS_ELF_READONLY_SECTION (sec))
 		    /* We need it to tell the dynamic linker if there
 		       are relocations against the text segment.  */
-		    hmips->readonly_reloc = TRUE;
+		    hmips->readonly_reloc = true;
 		}
 	    }
 
@@ -9077,14 +9221,14 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	     Reconstruct it for later use during GC.  */
 	case R_MIPS_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	  /* This relocation describes which C++ vtable entries are actually
 	     used.  Record for later use during GC.  */
 	case R_MIPS_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -9107,12 +9251,12 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	  if (h->plt.plist == NULL)
 	    h->plt.plist = mips_elf_make_plt_record (abfd);
 	  if (h->plt.plist == NULL)
-	    return FALSE;
+	    return false;
 
 	  if (branch_reloc_p (r_type))
-	    h->plt.plist->need_mips = TRUE;
+	    h->plt.plist->need_mips = true;
 	  else
-	    h->plt.plist->need_comp = TRUE;
+	    h->plt.plist->need_comp = true;
 	}
 
       /* See if this reloc would need to refer to a MIPS16 hard-float stub,
@@ -9126,7 +9270,7 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	  struct mips_elf_link_hash_entry *mh;
 
 	  mh = (struct mips_elf_link_hash_entry *) h;
-	  mh->need_fn_stub = TRUE;
+	  mh->need_fn_stub = true;
 	}
 
       /* Refuse some position-dependent relocations when creating a
@@ -9198,12 +9342,12 @@ _bfd_mips_elf_check_relocs (bfd *abfd, s
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space for global sym dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info = inf;
@@ -9219,13 +9363,13 @@ 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))
-    return TRUE;
+  if (htab->root.target_os == is_vxworks && !bfd_link_pic (info))
+    return true;
 
   /* Ignore indirect symbols.  All relocations against such symbols
      will be redirected to the target symbol.  */
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   /* If this symbol is defined in a dynamic object, or we are creating
      a shared library, we will need to copy any R_MIPS_32 or
@@ -9236,21 +9380,21 @@ allocate_dynrelocs (struct elf_link_hash
 	  || (!h->def_regular && !ELF_COMMON_DEF_P (h))
 	  || bfd_link_pic (info)))
     {
-      bfd_boolean do_copy = TRUE;
+      bool do_copy = true;
 
       if (h->root.type == bfd_link_hash_undefweak)
 	{
 	  /* Do not copy relocations for undefined weak symbols that
 	     we are not going to export.  */
 	  if (UNDEFWEAK_NO_DYNAMIC_RELOC (info, h))
-	    do_copy = FALSE;
+	    do_copy = false;
 
 	  /* Make sure undefined weak symbols are output as a dynamic
 	     symbol in PIEs.  */
 	  else if (h->dynindx == -1 && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
 
@@ -9264,11 +9408,11 @@ 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;
-	      hmips->got_only_for_calls = FALSE;
+	      hmips->got_only_for_calls = false;
 	    }
 
 	  mips_elf_allocate_dynamic_relocations
@@ -9280,7 +9424,7 @@ allocate_dynrelocs (struct elf_link_hash
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -9289,7 +9433,7 @@ allocate_dynrelocs (struct elf_link_hash
    change the definition to something the rest of the link can
    understand.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				     struct elf_link_hash_entry *h)
 {
@@ -9305,12 +9449,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,10 +9475,12 @@ _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;
+	return true;
 
       /* If this symbol is not defined in a regular file, then set
 	 the symbol to the stub location.  This is required to make
@@ -9334,9 +9489,9 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
       if (!h->def_regular
 	  && !bfd_is_abs_section (htab->sstubs->output_section))
 	{
-	  hmips->needs_lazy_stub = TRUE;
+	  hmips->needs_lazy_stub = true;
 	  htab->lazy_stub_count++;
-	  return TRUE;
+	  return true;
 	}
     }
   /* As above, VxWorks requires PLT entries for externally-defined
@@ -9356,8 +9511,8 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
 	   && !(ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 		&& h->root.type == bfd_link_hash_undefweak))
     {
-      bfd_boolean micromips_p = MICROMIPS_P (info->output_bfd);
-      bfd_boolean newabi_p = NEWABI_P (info->output_bfd);
+      bool micromips_p = MICROMIPS_P (info->output_bfd);
+      bool newabi_p = NEWABI_P (info->output_bfd);
 
       /* If this is the first symbol to need a PLT entry, then make some
 	 basic setup.  Also work out PLT entry sizes.  We'll need them
@@ -9371,33 +9526,35 @@ _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
-	      && !bfd_set_section_alignment (htab->root.splt, 5))
-	    return FALSE;
+	  if (htab->root.target_os != is_vxworks
+	      && !bfd_link_align_section (htab->root.splt, 5))
+	    return false;
 
 	  /* Make sure that .got.plt is word-aligned.  We do this lazily
 	     for the same reason as above.  */
-	  if (!bfd_set_section_alignment (htab->root.sgotplt,
-					  MIPS_ELF_LOG_FILE_ALIGN (dynobj)))
-	    return FALSE;
+	  if (!bfd_link_align_section (htab->root.sgotplt,
+				       MIPS_ELF_LOG_FILE_ALIGN (dynobj)))
+	    return false;
 
 	  /* 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)
@@ -9429,7 +9586,7 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
       if (h->plt.plist == NULL)
 	h->plt.plist = mips_elf_make_plt_record (dynobj);
       if (h->plt.plist == NULL)
-	return FALSE;
+	return false;
 
       /* There are no defined MIPS16 or microMIPS PLT entries for VxWorks,
 	 n32 or n64, so always use a standard entry there.
@@ -9440,12 +9597,12 @@ _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)
 	{
-	  h->plt.plist->need_mips = TRUE;
-	  h->plt.plist->need_comp = FALSE;
+	  h->plt.plist->need_mips = true;
+	  h->plt.plist->need_comp = false;
 	}
 
       /* Otherwise, if there are no direct calls to the function, we
@@ -9457,9 +9614,9 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
       if (!h->plt.plist->need_mips && !h->plt.plist->need_comp)
 	{
 	  if (micromips_p)
-	    h->plt.plist->need_comp = TRUE;
+	    h->plt.plist->need_comp = true;
 	  else
-	    h->plt.plist->need_mips = TRUE;
+	    h->plt.plist->need_mips = true;
 	}
 
       if (h->plt.plist->need_mips)
@@ -9479,22 +9636,22 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
       /* If the output file has no definition of the symbol, set the
 	 symbol's value to the address of the stub.  */
       if (!bfd_link_pic (info) && !h->def_regular)
-	hmips->use_plt_entry = TRUE;
+	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
 	 dynamic will now refer to the PLT entry instead.  */
       hmips->possibly_dynamic_relocs = 0;
 
-      return TRUE;
+      return true;
     }
 
   /* If this is a weak symbol, and there is a real definition, the
@@ -9506,18 +9663,18 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* Otherwise, there is nothing further to do for symbols defined
      in regular objects.  */
   if (h->def_regular)
-    return TRUE;
+    return true;
 
   /* There's also nothing more to do if we'll convert all relocations
      against this symbol into dynamic relocations.  */
   if (!hmips->has_static_relocs)
-    return TRUE;
+    return true;
 
   /* We're now relying on copy relocations.  Complain if we have
      some that we can't convert.  */
@@ -9527,7 +9684,7 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
 			    "dynamic symbol %s"),
 			  h->root.root.string);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -9552,7 +9709,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);
@@ -9566,51 +9723,9 @@ _bfd_mips_elf_adjust_dynamic_symbol (str
   return _bfd_elf_adjust_dynamic_copy (info, h, s);
 }
 
-/* This function is called after all the input files have been read,
-   and the input sections have been assigned to output sections.  We
-   check for any mips16 stub sections that we can discard.  */
-
-bfd_boolean
-_bfd_mips_elf_always_size_sections (bfd *output_bfd,
-				    struct bfd_link_info *info)
-{
-  asection *sect;
-  struct mips_elf_link_hash_table *htab;
-  struct mips_htab_traverse_info hti;
-
-  htab = mips_elf_hash_table (info);
-  BFD_ASSERT (htab != NULL);
-
-  /* The .reginfo section has a fixed size.  */
-  sect = bfd_get_section_by_name (output_bfd, ".reginfo");
-  if (sect != NULL)
-    {
-      bfd_set_section_size (sect, sizeof (Elf32_External_RegInfo));
-      sect->flags |= SEC_FIXED_SIZE | SEC_HAS_CONTENTS;
-    }
-
-  /* The .MIPS.abiflags section has a fixed size.  */
-  sect = bfd_get_section_by_name (output_bfd, ".MIPS.abiflags");
-  if (sect != NULL)
-    {
-      bfd_set_section_size (sect, sizeof (Elf_External_ABIFlags_v0));
-      sect->flags |= SEC_FIXED_SIZE | SEC_HAS_CONTENTS;
-    }
-
-  hti.info = info;
-  hti.output_bfd = output_bfd;
-  hti.error = FALSE;
-  mips_elf_link_hash_traverse (mips_elf_hash_table (info),
-			       mips_elf_check_symbols, &hti);
-  if (hti.error)
-    return FALSE;
-
-  return TRUE;
-}
-
 /* If the link uses a GOT, lay it out and work out its size.  */
 
-static bfd_boolean
+static bool
 mips_elf_lay_out_got (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd *dynobj;
@@ -9627,7 +9742,7 @@ mips_elf_lay_out_got (bfd *output_bfd, s
 
   s = htab->root.sgot;
   if (s == NULL)
-    return TRUE;
+    return true;
 
   dynobj = elf_hash_table (info)->dynobj;
   g = htab->got_info;
@@ -9635,7 +9750,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;
@@ -9647,7 +9762,7 @@ mips_elf_lay_out_got (bfd *output_bfd, s
   mips_elf_link_hash_traverse (htab, mips_elf_count_got_symbols, info);
 
   if (!mips_elf_resolve_final_got_entries (info, g))
-    return FALSE;
+    return false;
 
   /* Calculate the total loadable size of the output.  That
      will give us the maximum number of GOT_PAGE entries
@@ -9667,7 +9782,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,17 +9807,18 @@ 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;
+	return false;
     }
   else
     {
       /* Record that all bfds use G.  This also has the effect of freeing
 	 the per-bfd GOTs, which we no longer need.  */
       for (ibfd = info->input_bfds; ibfd; ibfd = ibfd->link.next)
-	if (mips_elf_bfd_got (ibfd, FALSE))
+	if (mips_elf_bfd_got (ibfd, false))
 	  mips_elf_replace_bfd_got (ibfd, g);
       mips_elf_replace_bfd_got (output_bfd, g);
 
@@ -9713,12 +9829,12 @@ mips_elf_lay_out_got (bfd *output_bfd, s
       tga.value = MIPS_ELF_GOT_SIZE (output_bfd);
       htab_traverse (g->got_entries, mips_elf_initialize_tls_index, &tga);
       if (!tga.g)
-	return FALSE;
+	return false;
       BFD_ASSERT (g->tls_assigned_gotno
 		  == 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.  */
@@ -9726,7 +9842,7 @@ mips_elf_lay_out_got (bfd *output_bfd, s
 	mips_elf_allocate_dynamic_relocations (dynobj, info, g->relocs);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Estimate the size of the .MIPS.stubs section.  */
@@ -9779,7 +9895,7 @@ mips_elf_estimate_stub_size (bfd *output
    mips_htab_traverse_info.  If H needs a traditional MIPS lazy-binding
    stub, allocate an entry in the stubs section.  */
 
-static bfd_boolean
+static bool
 mips_elf_allocate_lazy_stub (struct mips_elf_link_hash_entry *h, void *data)
 {
   struct mips_htab_traverse_info *hti = data;
@@ -9794,7 +9910,7 @@ mips_elf_allocate_lazy_stub (struct mips
 
   if (h->needs_lazy_stub)
     {
-      bfd_boolean micromips_p = MICROMIPS_P (output_bfd);
+      bool micromips_p = MICROMIPS_P (output_bfd);
       unsigned int other = micromips_p ? STO_MICROMIPS : 0;
       bfd_vma isa_bit = micromips_p;
 
@@ -9803,8 +9919,8 @@ mips_elf_allocate_lazy_stub (struct mips
 	h->root.plt.plist = mips_elf_make_plt_record (htab->sstubs->owner);
       if (h->root.plt.plist == NULL)
 	{
-	  hti->error = TRUE;
-	  return FALSE;
+	  hti->error = true;
+	  return false;
 	}
       h->root.root.u.def.section = htab->sstubs;
       h->root.root.u.def.value = htab->sstubs->size + isa_bit;
@@ -9812,17 +9928,17 @@ mips_elf_allocate_lazy_stub (struct mips
       h->root.other = other;
       htab->sstubs->size += htab->function_stub_size;
     }
-  return TRUE;
+  return true;
 }
 
 /* Allocate offsets in the stubs section to each symbol that needs one.
    Set the final size of the .MIPS.stub section.  */
 
-static bfd_boolean
+static bool
 mips_elf_lay_out_lazy_stubs (struct bfd_link_info *info)
 {
   bfd *output_bfd = info->output_bfd;
-  bfd_boolean micromips_p = MICROMIPS_P (output_bfd);
+  bool micromips_p = MICROMIPS_P (output_bfd);
   unsigned int other = micromips_p ? STO_MICROMIPS : 0;
   bfd_vma isa_bit = micromips_p;
   struct mips_elf_link_hash_table *htab;
@@ -9834,15 +9950,15 @@ mips_elf_lay_out_lazy_stubs (struct bfd_
   BFD_ASSERT (htab != NULL);
 
   if (htab->lazy_stub_count == 0)
-    return TRUE;
+    return true;
 
   htab->sstubs->size = 0;
   hti.info = info;
   hti.output_bfd = output_bfd;
-  hti.error = FALSE;
+  hti.error = false;
   mips_elf_link_hash_traverse (htab, mips_elf_allocate_lazy_stub, &hti);
   if (hti.error)
-    return FALSE;
+    return false;
   htab->sstubs->size += htab->function_stub_size;
   BFD_ASSERT (htab->sstubs->size
 	      == htab->lazy_stub_count * htab->function_stub_size);
@@ -9851,12 +9967,12 @@ mips_elf_lay_out_lazy_stubs (struct bfd_
   BFD_ASSERT (dynobj != NULL);
   h = _bfd_elf_define_linkage_sym (dynobj, info, htab->sstubs, "_MIPS_STUBS_");
   if (h == NULL)
-    return FALSE;
+    return false;
   h->root.u.def.value = isa_bit;
   h->other = other;
   h->type = STT_FUNC;
 
-  return TRUE;
+  return true;
 }
 
 /* A mips_elf_link_hash_traverse callback for which DATA points to a
@@ -9864,11 +9980,11 @@ mips_elf_lay_out_lazy_stubs (struct bfd_
    of the symbol, then set the entry in the symbol table now.  Prefer
    a standard MIPS PLT entry.  */
 
-static bfd_boolean
+static bool
 mips_elf_set_plt_sym_value (struct mips_elf_link_hash_entry *h, void *data)
 {
   struct bfd_link_info *info = data;
-  bfd_boolean micromips_p = MICROMIPS_P (info->output_bfd);
+  bool micromips_p = MICROMIPS_P (info->output_bfd);
   struct mips_elf_link_hash_table *htab;
   unsigned int other;
   bfd_vma isa_bit;
@@ -9900,7 +10016,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;
@@ -9908,26 +10024,53 @@ mips_elf_set_plt_sym_value (struct mips_
       h->root.other = other;
     }
 
-  return TRUE;
+  return true;
 }
 
-/* Set the sizes of the dynamic sections.  */
+/* Set the sizes of the dynamic sections, some mips non-dynamic sections,
+   and check for any mips16 stub sections that we can discard.  */
 
-bfd_boolean
-_bfd_mips_elf_size_dynamic_sections (bfd *output_bfd,
-				     struct bfd_link_info *info)
+bool
+_bfd_mips_elf_late_size_sections (bfd *output_bfd,
+				  struct bfd_link_info *info)
 {
   bfd *dynobj;
   asection *s, *sreldyn;
-  bfd_boolean reltext;
+  bool reltext;
   struct mips_elf_link_hash_table *htab;
+  struct mips_htab_traverse_info hti;
 
   htab = mips_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
-  dynobj = elf_hash_table (info)->dynobj;
-  BFD_ASSERT (dynobj != NULL);
 
-  if (elf_hash_table (info)->dynamic_sections_created)
+  /* The .reginfo section has a fixed size.  */
+  s = bfd_get_section_by_name (output_bfd, ".reginfo");
+  if (s != NULL)
+    {
+      bfd_set_section_size (s, sizeof (Elf32_External_RegInfo));
+      s->flags |= SEC_FIXED_SIZE | SEC_HAS_CONTENTS;
+    }
+
+  /* The .MIPS.abiflags section has a fixed size.  */
+  s = bfd_get_section_by_name (output_bfd, ".MIPS.abiflags");
+  if (s != NULL)
+    {
+      bfd_set_section_size (s, sizeof (Elf_External_ABIFlags_v0));
+      s->flags |= SEC_FIXED_SIZE | SEC_HAS_CONTENTS;
+    }
+
+  hti.info = info;
+  hti.output_bfd = output_bfd;
+  hti.error = false;
+  mips_elf_link_hash_traverse (htab, mips_elf_check_symbols, &hti);
+  if (hti.error)
+    return false;
+
+  dynobj = htab->root.dynobj;
+  if (dynobj == NULL)
+    return true;
+
+  if (htab->root.dynamic_sections_created)
     {
       /* Set the contents of the .interp section to the interpreter.  */
       if (bfd_link_executable (info) && !info->nointerp)
@@ -9938,6 +10081,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	    = strlen (ELF_DYNAMIC_INTERPRETER (output_bfd)) + 1;
 	  s->contents
 	    = (bfd_byte *) ELF_DYNAMIC_INTERPRETER (output_bfd);
+	  s->alloced = 1;
 	}
 
       /* Figure out the size of the PLT header if we know that we
@@ -9954,7 +10098,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	 haven't already in _bfd_elf_create_dynamic_sections.  */
       if (htab->root.splt && htab->plt_mips_offset + htab->plt_comp_offset != 0)
 	{
-	  bfd_boolean micromips_p = (MICROMIPS_P (output_bfd)
+	  bool micromips_p = (MICROMIPS_P (output_bfd)
 				     && !htab->plt_mips_offset);
 	  unsigned int other = micromips_p ? STO_MICROMIPS : 0;
 	  bfd_vma isa_bit = micromips_p;
@@ -9965,9 +10109,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);
@@ -9996,7 +10140,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 					       "_PROCEDURE_LINKAGE_TABLE_");
 	      htab->root.hplt = h;
 	      if (h == NULL)
-		return FALSE;
+		return false;
 	    }
 
 	  h = htab->root.hplt;
@@ -10012,14 +10156,14 @@ _bfd_mips_elf_size_dynamic_sections (bfd
   mips_elf_estimate_stub_size (output_bfd, info);
 
   if (!mips_elf_lay_out_got (output_bfd, info))
-    return FALSE;
+    return false;
 
   mips_elf_lay_out_lazy_stubs (info);
 
   /* The check_relocs and adjust_dynamic_symbol entry points have
      determined the sizes of the various dynamic sections.  Allocate
      memory for them.  */
-  reltext = FALSE;
+  reltext = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
       const char *name;
@@ -10031,7 +10175,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
 
-      if (CONST_STRNEQ (name, ".rel"))
+      if (startswith (name, ".rel"))
 	{
 	  if (s->size != 0)
 	    {
@@ -10050,7 +10194,7 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 		   && (target->flags & SEC_READONLY) != 0
 		   && (target->flags & SEC_ALLOC) != 0)
 		  || strcmp (outname, MIPS_ELF_REL_DYN_NAME (info)) == 0)
-		reltext = TRUE;
+		reltext = true;
 
 	      /* We use the reloc_count field as a counter if we need
 		 to copy relocs into the output file.  */
@@ -10067,26 +10211,27 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	    }
 	}
       else if (bfd_link_executable (info)
-	       && ! mips_elf_hash_table (info)->use_rld_obj_head
-	       && CONST_STRNEQ (name, ".rld_map"))
+	       && !htab->use_rld_obj_head
+	       && startswith (name, ".rld_map"))
 	{
 	  /* We add a room for __rld_map.  It will be filled in by the
 	     rtld to contain a pointer to the _r_debug structure.  */
 	  s->size += MIPS_ELF_RLD_MAP_SIZE (output_bfd);
 	}
       else if (SGI_COMPAT (output_bfd)
-	       && CONST_STRNEQ (name, ".compact_rel"))
-	s->size += mips_elf_hash_table (info)->compact_rel_size;
+	       && startswith (name, ".compact_rel"))
+	s->size += htab->compact_rel_size;
       else if (s == htab->root.splt)
 	{
 	  /* If the last PLT entry has a branch delay slot, allocate
 	     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")
+      else if (! startswith (name, ".init")
 	       && s != htab->root.sgot
 	       && s != htab->root.sgotplt
 	       && s != htab->sstubs
@@ -10111,11 +10256,12 @@ _bfd_mips_elf_size_dynamic_sections (bfd
       if (s->contents == NULL)
 	{
 	  bfd_set_error (bfd_error_no_memory);
-	  return FALSE;
+	  return false;
 	}
+      s->alloced = 1;
     }
 
-  if (elf_hash_table (info)->dynamic_sections_created)
+  if (htab->root.dynamic_sections_created)
     {
       /* Add some entries to the .dynamic section.  We fill in the
 	 values later, in _bfd_mips_elf_finish_dynamic_sections, but we
@@ -10128,26 +10274,28 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	 may only look at the first one they see.  */
       if (!bfd_link_pic (info)
 	  && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_RLD_MAP, 0))
-	return FALSE;
+	return false;
 
       if (bfd_link_executable (info)
 	  && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_RLD_MAP_REL, 0))
-	return FALSE;
+	return false;
 
       /* The DT_DEBUG entry may be filled in by the dynamic linker and
 	 used by the debugger.  */
       if (bfd_link_executable (info)
 	  && !SGI_COMPAT (output_bfd)
 	  && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_DEBUG, 0))
-	return FALSE;
+	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)
 	{
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_TEXTREL, 0))
-	    return FALSE;
+	    return false;
 
 	  /* Clear the DF_TEXTREL flag.  It will be set again if we
 	     write out an actual text relocation; we may not, because
@@ -10157,23 +10305,23 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	}
 
       if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTGOT, 0))
-	return FALSE;
+	return false;
 
-      sreldyn = mips_elf_rel_dyn_section (info, FALSE);
-      if (htab->is_vxworks)
+      sreldyn = mips_elf_rel_dyn_section (info, false);
+      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.  */
 	  if (sreldyn && sreldyn->size > 0)
 	    {
 	      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELA, 0))
-		return FALSE;
+		return false;
 
 	      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELASZ, 0))
-		return FALSE;
+		return false;
 
 	      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELAENT, 0))
-		return FALSE;
+		return false;
 	    }
 	}
       else
@@ -10182,70 +10330,70 @@ _bfd_mips_elf_size_dynamic_sections (bfd
 	      && !bfd_is_abs_section (sreldyn->output_section))
 	    {
 	      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_REL, 0))
-		return FALSE;
+		return false;
 
 	      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELSZ, 0))
-		return FALSE;
+		return false;
 
 	      if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_RELENT, 0))
-		return FALSE;
+		return false;
 	    }
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_RLD_VERSION, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_FLAGS, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_BASE_ADDRESS, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_LOCAL_GOTNO, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_SYMTABNO, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_UNREFEXTNO, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_GOTSYM, 0))
-	    return FALSE;
+	    return false;
 
 	  if (info->emit_gnu_hash
 	      && ! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_XHASH, 0))
-	    return FALSE;
+	    return false;
 
 	  if (IRIX_COMPAT (dynobj) == ict_irix5
 	      && ! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_HIPAGENO, 0))
-	    return FALSE;
+	    return false;
 
 	  if (IRIX_COMPAT (dynobj) == ict_irix6
 	      && (bfd_get_section_by_name
 		  (output_bfd, MIPS_ELF_OPTIONS_SECTION_NAME (dynobj)))
 	      && !MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_OPTIONS, 0))
-	    return FALSE;
+	    return false;
 	}
       if (htab->root.splt->size > 0)
 	{
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTREL, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_JMPREL, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_PLTRELSZ, 0))
-	    return FALSE;
+	    return false;
 
 	  if (! MIPS_ELF_ADD_DYNAMIC_ENTRY (info, DT_MIPS_PLTGOT, 0))
-	    return FALSE;
+	    return false;
 	}
-      if (htab->is_vxworks
+      if (htab->root.target_os == is_vxworks
 	  && !elf_vxworks_add_dynamic_entries (output_bfd, info))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* REL is a relocation in INPUT_BFD that is being copied to OUTPUT_BFD.
@@ -10311,7 +10459,7 @@ mips_reloc_against_discarded_section (bf
 				      bfd *input_bfd, asection *input_section,
 				      Elf_Internal_Rela **rel,
 				      const Elf_Internal_Rela **relend,
-				      bfd_boolean rel_reloc,
+				      bool rel_reloc,
 				      reloc_howto_type *howto,
 				      bfd_byte *contents)
 {
@@ -10332,7 +10480,7 @@ mips_reloc_against_discarded_section (bf
   do
     {
        RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					(*rel), count, (*relend),
+					(*rel), count, (*relend), R_MIPS_NONE,
 					howto, i, contents);
     }
   while (0);
@@ -10340,7 +10488,7 @@ mips_reloc_against_discarded_section (bf
 
 /* Relocate a MIPS ELF section.  */
 
-bfd_boolean
+int
 _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 				bfd *input_bfd, asection *input_section,
 				bfd_byte *contents, Elf_Internal_Rela *relocs,
@@ -10350,7 +10498,7 @@ _bfd_mips_elf_relocate_section (bfd *out
   Elf_Internal_Rela *rel;
   const Elf_Internal_Rela *relend;
   bfd_vma addend = 0;
-  bfd_boolean use_saved_addend_p = FALSE;
+  bool use_saved_addend_p = false;
 
   relend = relocs + input_section->reloc_count;
   for (rel = relocs; rel < relend; ++rel)
@@ -10358,17 +10506,17 @@ _bfd_mips_elf_relocate_section (bfd *out
       const char *name;
       bfd_vma value = 0;
       reloc_howto_type *howto;
-      bfd_boolean cross_mode_jump_p = FALSE;
+      bool cross_mode_jump_p = false;
       /* TRUE if the relocation is a RELA relocation, rather than a
 	 REL relocation.  */
-      bfd_boolean rela_relocation_p = TRUE;
+      bool rela_relocation_p = true;
       unsigned int r_type = ELF_R_TYPE (output_bfd, rel->r_info);
       const char *msg;
       unsigned long r_symndx;
       asection *sec;
       Elf_Internal_Shdr *symtab_hdr;
       struct elf_link_hash_entry *h;
-      bfd_boolean rel_reloc;
+      bool rel_reloc;
 
       rel_reloc = (NEWABI_P (input_bfd)
 		   && mips_elf_rel_relocation_p (input_bfd, input_section,
@@ -10417,7 +10565,7 @@ _bfd_mips_elf_relocate_section (bfd *out
 	     space.  Thus, when they use an R_MIPS_64 they mean what is
 	     usually meant by R_MIPS_32, with the exception that the
 	     stored value is sign-extended to 64 bits.  */
-	  howto = MIPS_ELF_RTYPE_TO_HOWTO (input_bfd, R_MIPS_32, FALSE);
+	  howto = MIPS_ELF_RTYPE_TO_HOWTO (input_bfd, R_MIPS_32, false);
 
 	  /* On big-endian systems, we need to lie about the position
 	     of the reloc.  */
@@ -10434,15 +10582,17 @@ _bfd_mips_elf_relocate_section (bfd *out
 	  if (mips_elf_rel_relocation_p (input_bfd, input_section,
 					 relocs, rel))
 	    {
-	      rela_relocation_p = FALSE;
-	      addend = mips_elf_read_rel_addend (input_bfd, rel,
-						 howto, contents);
+	      rela_relocation_p = false;
+	      addend = mips_elf_read_rel_addend (input_bfd, input_section,
+						 rel, howto, contents);
 	      if (hi16_reloc_p (r_type)
 		  || (got16_reloc_p (r_type)
 		      && mips_elf_local_relocation_p (input_bfd, rel,
-						      local_sections)))
+						      local_sections))
+		  || tls_hi16_reloc_p (r_type))
 		{
-		  if (!mips_elf_add_lo16_rel_addend (input_bfd, rel, relend,
+		  if (!mips_elf_add_lo16_rel_addend (input_bfd, input_section,
+						     rel, relend,
 						     contents, &addend))
 		    {
 		      if (h)
@@ -10477,7 +10627,9 @@ _bfd_mips_elf_relocate_section (bfd *out
 	  if (!rela_relocation_p && rel->r_addend)
 	    {
 	      addend += rel->r_addend;
-	      if (hi16_reloc_p (r_type) || got16_reloc_p (r_type))
+	      if (hi16_reloc_p (r_type)
+		  || got16_reloc_p (r_type)
+		  || tls_hi16_reloc_p (r_type))
 		addend = mips_elf_high (addend);
 	      else if (r_type == R_MIPS_HIGHER)
 		addend = mips_elf_higher (addend);
@@ -10533,8 +10685,8 @@ _bfd_mips_elf_relocate_section (bfd *out
 
 	      if (! mips_elf_perform_relocation (info, howto, rel, addend,
 						 input_bfd, input_section,
-						 contents, FALSE))
-		return FALSE;
+						 contents, false))
+		return false;
 	    }
 
 	  /* Go on to the next relocation.  */
@@ -10548,9 +10700,9 @@ _bfd_mips_elf_relocate_section (bfd *out
       if (rel + 1 < relend
 	  && rel->r_offset == rel[1].r_offset
 	  && ELF_R_TYPE (input_bfd, rel[1].r_info) != R_MIPS_NONE)
-	use_saved_addend_p = TRUE;
+	use_saved_addend_p = true;
       else
-	use_saved_addend_p = FALSE;
+	use_saved_addend_p = false;
 
       /* Figure out what value we are supposed to relocate.  */
       switch (mips_elf_calculate_relocation (output_bfd, input_bfd,
@@ -10575,7 +10727,7 @@ _bfd_mips_elf_relocate_section (bfd *out
 	  msg = _("internal error: unsupported relocation error");
 	  info->callbacks->warning
 	    (info, msg, name, input_bfd, input_section, rel->r_offset);
-	  return FALSE;
+	  return false;
 
 	case bfd_reloc_overflow:
 	  if (use_saved_addend_p)
@@ -10593,10 +10745,10 @@ _bfd_mips_elf_relocate_section (bfd *out
 		  && (gprel16_reloc_p (howto->type)
 		      || literal_reloc_p (howto->type)))
 		{
-		  msg = _("small-data section exceeds 64KB;"
+		  msg = _("small-data section too large;"
 			  " lower small-data size limit (see option -G)");
 
-		  htab->small_data_overflow_reported = TRUE;
+		  htab->small_data_overflow_reported = true;
 		  (*info->callbacks->einfo) ("%P: %s\n", msg);
 		}
 	      (*info->callbacks->reloc_overflow)
@@ -10694,10 +10846,10 @@ _bfd_mips_elf_relocate_section (bfd *out
       if (! mips_elf_perform_relocation (info, howto, rel, value,
 					 input_bfd, input_section,
 					 contents, cross_mode_jump_p))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* A function that iterates over each entry in la25_stubs and fills
@@ -10728,8 +10880,8 @@ mips_elf_create_la25_stub (void **slot,
       loc = bfd_malloc (s->size);
       if (loc == NULL)
 	{
-	  hti->error = TRUE;
-	  return FALSE;
+	  hti->error = true;
+	  return false;
 	}
       s->contents = loc;
     }
@@ -10807,7 +10959,7 @@ mips_elf_create_la25_stub (void **slot,
 	  bfd_put_32 (hti->output_bfd, 0, loc + 12);
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* If NAME is one of the special IRIX6 symbols defined by the linker,
@@ -10863,7 +11015,7 @@ mips_elf_irix6_finish_dynamic_symbol (bf
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_finish_dynamic_symbol (bfd *output_bfd,
 				     struct bfd_link_info *info,
 				     struct elf_link_hash_entry *h,
@@ -10882,7 +11034,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
@@ -10929,7 +11081,7 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd
 	     htab->root.sgotplt->output_section,
 	     (int64_t) got_address);
 	  bfd_set_error (bfd_error_no_error);
-	  return FALSE;
+	  return false;
 	}
 
       /* Initially point the .got.plt entry at the PLT header.  */
@@ -11045,7 +11197,7 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd
 		     (int64_t) gotpc_offset,
 		     htab->root.splt->output_section);
 		  bfd_set_error (bfd_error_no_error);
-		  return FALSE;
+		  return false;
 		}
 	      bfd_put_16 (output_bfd,
 			  plt_entry[0] | ((gotpc_offset >> 18) & 0x7f), loc);
@@ -11079,7 +11231,7 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd
   if (h->plt.plist != NULL && h->plt.plist->stub_offset != MINUS_ONE)
     {
       /* We've decided to create a lazy-binding stub.  */
-      bfd_boolean micromips_p = MICROMIPS_P (output_bfd);
+      bool micromips_p = MICROMIPS_P (output_bfd);
       unsigned int other = micromips_p ? STO_MICROMIPS : 0;
       bfd_vma stub_size = htab->function_stub_size;
       bfd_byte stub[MIPS_FUNCTION_STUB_BIG_SIZE];
@@ -11103,7 +11255,13 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd
 	 sign extension at runtime in the stub, resulting in a negative
 	 index value.  */
       if (h->dynindx & ~0x7fffffff)
-	return FALSE;
+	{
+	  _bfd_error_handler
+	    (_("%pB: cannot handle more than %d dynamic symbols"),
+	     output_bfd, 0x7fffffff);
+	  bfd_set_error (bfd_error_bad_value);
+	  return false;
+	}
 
       /* Fill the stub.  */
       if (micromips_p)
@@ -11291,7 +11449,7 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd
 		  if (! (mips_elf_create_dynamic_relocation
 			 (output_bfd, info, rel,
 			  e.d.h, NULL, sym->st_value, &entry, sgot)))
-		    return FALSE;
+		    return false;
 		}
 	      else
 		entry = sym->st_value;
@@ -11347,7 +11505,7 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd
       BFD_ASSERT (h->dynindx != -1);
       BFD_ASSERT (htab->use_plts_and_copy_relocs);
 
-      s = mips_elf_rel_dyn_section (info, FALSE);
+      s = mips_elf_rel_dyn_section (info, false);
       symval = (h->root.u.def.section->output_section->vma
 		+ h->root.u.def.section->output_offset
 		+ h->root.u.def.value);
@@ -11372,12 +11530,12 @@ _bfd_mips_elf_finish_dynamic_symbol (bfd
       sym->st_other -= STO_MICROMIPS;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Likewise, for VxWorks.  */
 
-bfd_boolean
+bool
 _bfd_mips_vxworks_finish_dynamic_symbol (bfd *output_bfd,
 					 struct bfd_link_info *info,
 					 struct elf_link_hash_entry *h,
@@ -11514,7 +11672,7 @@ _bfd_mips_vxworks_finish_dynamic_symbol
       MIPS_ELF_PUT_WORD (output_bfd, sym->st_value, sgot->contents + offset);
 
       /* Add a dynamic relocation for it.  */
-      s = mips_elf_rel_dyn_section (info, FALSE);
+      s = mips_elf_rel_dyn_section (info, false);
       loc = s->contents + (s->reloc_count++ * sizeof (Elf32_External_Rela));
       outrel.r_offset = (sgot->output_section->vma
 			 + sgot->output_offset
@@ -11551,12 +11709,12 @@ _bfd_mips_vxworks_finish_dynamic_symbol
   if (ELF_ST_IS_COMPRESSED (sym->st_other))
     sym->st_value &= ~1;
 
-  return TRUE;
+  return true;
 }
 
 /* Write out a plt0 entry to the beginning of .plt.  */
 
-static bfd_boolean
+static bool
 mips_finish_exec_plt (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd_byte *loc;
@@ -11603,7 +11761,7 @@ mips_finish_exec_plt (bfd *output_bfd, s
 	 htab->root.sgotplt->output_section,
 	 (int64_t) gotplt_value);
       bfd_set_error (bfd_error_no_error);
-      return FALSE;
+      return false;
     }
 
   /* Install the PLT header.  */
@@ -11632,7 +11790,7 @@ mips_finish_exec_plt (bfd *output_bfd, s
 	     (int64_t) gotpc_offset,
 	     htab->root.splt->output_section);
 	  bfd_set_error (bfd_error_no_error);
-	  return FALSE;
+	  return false;
 	}
       bfd_put_16 (output_bfd,
 		  plt_entry[0] | ((gotpc_offset >> 18) & 0x7f), loc);
@@ -11665,7 +11823,7 @@ mips_finish_exec_plt (bfd *output_bfd, s
       bfd_put_32 (output_bfd, plt_entry[7], loc + 28);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Install the PLT header for a VxWorks executable and finalize the
@@ -11764,7 +11922,7 @@ mips_vxworks_finish_shared_plt (bfd *out
 
 /* Finish up the dynamic sections.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_finish_dynamic_sections (bfd *output_bfd,
 				       struct bfd_link_info *info)
 {
@@ -11792,7 +11950,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
       BFD_ASSERT (sdyn != NULL);
       BFD_ASSERT (gg != NULL);
 
-      g = mips_elf_bfd_got (output_bfd, FALSE);
+      g = mips_elf_bfd_got (output_bfd, false);
       BFD_ASSERT (g != NULL);
 
       for (b = sdyn->contents;
@@ -11803,13 +11961,13 @@ _bfd_mips_elf_finish_dynamic_sections (b
 	  const char *name;
 	  size_t elemsize;
 	  asection *s;
-	  bfd_boolean swap_out_p;
+	  bool swap_out_p;
 
 	  /* Read in the current dynamic entry.  */
 	  (*get_elf_backend_data (dynobj)->s->swap_dyn_in) (dynobj, b, &dyn);
 
 	  /* Assume that we're going to modify it and write it out.  */
-	  swap_out_p = TRUE;
+	  swap_out_p = true;
 
 	  switch (dyn.d_tag)
 	    {
@@ -11818,7 +11976,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;
 
@@ -11856,12 +12014,12 @@ _bfd_mips_elf_finish_dynamic_sections (b
 
 	    case DT_MIPS_ICHECKSUM:
 	      /* XXX FIXME: */
-	      swap_out_p = FALSE;
+	      swap_out_p = false;
 	      break;
 
 	    case DT_MIPS_IVERSION:
 	      /* XXX FIXME: */
-	      swap_out_p = FALSE;
+	      swap_out_p = false;
 	      break;
 
 	    case DT_MIPS_BASE_ADDRESS:
@@ -11914,7 +12072,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 		if (!h)
 		  {
 		    dyn_to_skip = MIPS_ELF_DYN_SIZE (dynobj);
-		    swap_out_p = FALSE;
+		    swap_out_p = false;
 		    break;
 		  }
 		s = h->root.u.def.section;
@@ -11934,7 +12092,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 		if (!h)
 		  {
 		    dyn_to_skip = MIPS_ELF_DYN_SIZE (dynobj);
-		    swap_out_p = FALSE;
+		    swap_out_p = false;
 		    break;
 		  }
 		s = h->root.u.def.section;
@@ -11957,7 +12115,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;
@@ -11980,7 +12138,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 	      if (!(info->flags & DF_TEXTREL))
 		{
 		  dyn_to_skip = MIPS_ELF_DYN_SIZE (dynobj);
-		  swap_out_p = FALSE;
+		  swap_out_p = false;
 		}
 	      break;
 
@@ -11990,7 +12148,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 	      if (!(info->flags & DF_TEXTREL))
 		dyn.d_un.d_val &= ~DF_TEXTREL;
 	      else
-		swap_out_p = FALSE;
+		swap_out_p = false;
 	      break;
 
 	    case DT_MIPS_XHASH:
@@ -12000,10 +12158,10 @@ _bfd_mips_elf_finish_dynamic_sections (b
 	      break;
 
 	    default:
-	      swap_out_p = FALSE;
-	      if (htab->is_vxworks
+	      swap_out_p = false;
+	      if (htab->root.target_os == is_vxworks
 		  && elf_vxworks_finish_dynamic_entry (output_bfd, &dyn))
-		swap_out_p = TRUE;
+		swap_out_p = true;
 	      break;
 	    }
 
@@ -12026,7 +12184,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
@@ -12091,7 +12249,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 		    (output_bfd, info, rel, NULL,
 		     bfd_abs_section_ptr,
 		     0, &addend, sgot)))
-		return FALSE;
+		return false;
 	      BFD_ASSERT (addend == 0);
 	    }
 	}
@@ -12104,7 +12262,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       bfd_byte *b;
-      bfd_boolean swap_out_p;
+      bool swap_out_p;
 
       BFD_ASSERT (sdyn != NULL);
 
@@ -12119,7 +12277,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 	  (*get_elf_backend_data (dynobj)->s->swap_dyn_in) (dynobj, b, &dyn);
 
 	  /* Assume that we're going to modify it and write it out.  */
-	  swap_out_p = TRUE;
+	  swap_out_p = true;
 
 	  switch (dyn.d_tag)
 	    {
@@ -12128,7 +12286,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 		 decided not to make.  This is for the n64 irix rld,
 		 which doesn't seem to apply any relocations if there
 		 are trailing null entries.  */
-	      s = mips_elf_rel_dyn_section (info, FALSE);
+	      s = mips_elf_rel_dyn_section (info, false);
 	      dyn.d_un.d_val = (s->reloc_count
 				* (ABI_64_P (output_bfd)
 				   ? sizeof (Elf64_Mips_External_Rel)
@@ -12141,7 +12299,7 @@ _bfd_mips_elf_finish_dynamic_sections (b
 	      break;
 
 	    default:
-	      swap_out_p = FALSE;
+	      swap_out_p = false;
 	      break;
 	    }
 
@@ -12173,7 +12331,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,9 +12348,9 @@ _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);
+	s = mips_elf_rel_dyn_section (info, false);
 	if (s != NULL
 	    && s->size > (bfd_vma)2 * MIPS_ELF_REL_SIZE (output_bfd))
 	  {
@@ -12211,7 +12370,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);
@@ -12222,10 +12381,10 @@ _bfd_mips_elf_finish_dynamic_sections (b
 	{
 	  BFD_ASSERT (!bfd_link_pic (info));
 	  if (!mips_finish_exec_plt (output_bfd, info))
-	    return FALSE;
+	    return false;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 
@@ -12240,64 +12399,68 @@ mips_set_isa_flags (bfd *abfd)
     {
     default:
       if (ABI_N32_P (abfd) || ABI_64_P (abfd))
-        val = E_MIPS_ARCH_3;
+        val = MIPS_DEFAULT_R6 ? EF_MIPS_ARCH_64R6 : EF_MIPS_ARCH_3;
       else
-        val = E_MIPS_ARCH_1;
+        val = MIPS_DEFAULT_R6 ? EF_MIPS_ARCH_32R6 : EF_MIPS_ARCH_1;
       break;
 
     case bfd_mach_mips3000:
-      val = E_MIPS_ARCH_1;
+      val = EF_MIPS_ARCH_1;
       break;
 
     case bfd_mach_mips3900:
-      val = E_MIPS_ARCH_1 | E_MIPS_MACH_3900;
+      val = EF_MIPS_ARCH_1 | EF_MIPS_MACH_3900;
       break;
 
     case bfd_mach_mips6000:
-      val = E_MIPS_ARCH_2;
+      val = EF_MIPS_ARCH_2;
       break;
 
     case bfd_mach_mips4010:
-      val = E_MIPS_ARCH_2 | E_MIPS_MACH_4010;
+      val = EF_MIPS_ARCH_2 | EF_MIPS_MACH_4010;
+      break;
+
+    case bfd_mach_mips_allegrex:
+      val = EF_MIPS_ARCH_2 | EF_MIPS_MACH_ALLEGREX;
       break;
 
     case bfd_mach_mips4000:
     case bfd_mach_mips4300:
     case bfd_mach_mips4400:
     case bfd_mach_mips4600:
-      val = E_MIPS_ARCH_3;
+      val = EF_MIPS_ARCH_3;
       break;
 
     case bfd_mach_mips4100:
-      val = E_MIPS_ARCH_3 | E_MIPS_MACH_4100;
+      val = EF_MIPS_ARCH_3 | EF_MIPS_MACH_4100;
       break;
 
     case bfd_mach_mips4111:
-      val = E_MIPS_ARCH_3 | E_MIPS_MACH_4111;
+      val = EF_MIPS_ARCH_3 | EF_MIPS_MACH_4111;
       break;
 
     case bfd_mach_mips4120:
-      val = E_MIPS_ARCH_3 | E_MIPS_MACH_4120;
+      val = EF_MIPS_ARCH_3 | EF_MIPS_MACH_4120;
       break;
 
     case bfd_mach_mips4650:
-      val = E_MIPS_ARCH_3 | E_MIPS_MACH_4650;
+      val = EF_MIPS_ARCH_3 | EF_MIPS_MACH_4650;
       break;
 
     case bfd_mach_mips5400:
-      val = E_MIPS_ARCH_4 | E_MIPS_MACH_5400;
+      val = EF_MIPS_ARCH_4 | EF_MIPS_MACH_5400;
       break;
 
     case bfd_mach_mips5500:
-      val = E_MIPS_ARCH_4 | E_MIPS_MACH_5500;
+      val = EF_MIPS_ARCH_4 | EF_MIPS_MACH_5500;
       break;
 
     case bfd_mach_mips5900:
-      val = E_MIPS_ARCH_3 | E_MIPS_MACH_5900;
+      val = EF_MIPS_ARCH_3 | EF_MIPS_MACH_5900;
       break;
 
     case bfd_mach_mips9000:
-      val = E_MIPS_ARCH_4 | E_MIPS_MACH_9000;
+      val = EF_MIPS_ARCH_4 | EF_MIPS_MACH_9000;
       break;
 
     case bfd_mach_mips5000:
@@ -12307,84 +12470,84 @@ mips_set_isa_flags (bfd *abfd)
     case bfd_mach_mips12000:
     case bfd_mach_mips14000:
     case bfd_mach_mips16000:
-      val = E_MIPS_ARCH_4;
+      val = EF_MIPS_ARCH_4;
       break;
 
     case bfd_mach_mips5:
-      val = E_MIPS_ARCH_5;
+      val = EF_MIPS_ARCH_5;
       break;
 
     case bfd_mach_mips_loongson_2e:
-      val = E_MIPS_ARCH_3 | E_MIPS_MACH_LS2E;
+      val = EF_MIPS_ARCH_3 | EF_MIPS_MACH_LS2E;
       break;
 
     case bfd_mach_mips_loongson_2f:
-      val = E_MIPS_ARCH_3 | E_MIPS_MACH_LS2F;
+      val = EF_MIPS_ARCH_3 | EF_MIPS_MACH_LS2F;
       break;
 
     case bfd_mach_mips_sb1:
-      val = E_MIPS_ARCH_64 | E_MIPS_MACH_SB1;
+      val = EF_MIPS_ARCH_64 | EF_MIPS_MACH_SB1;
       break;
 
     case bfd_mach_mips_gs464:
-      val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_GS464;
+      val = EF_MIPS_ARCH_64R2 | EF_MIPS_MACH_GS464;
       break;
 
     case bfd_mach_mips_gs464e:
-      val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_GS464E;
+      val = EF_MIPS_ARCH_64R2 | EF_MIPS_MACH_GS464E;
       break;
 
     case bfd_mach_mips_gs264e:
-      val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_GS264E;
+      val = EF_MIPS_ARCH_64R2 | EF_MIPS_MACH_GS264E;
       break;
 
     case bfd_mach_mips_octeon:
     case bfd_mach_mips_octeonp:
-      val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON;
+      val = EF_MIPS_ARCH_64R2 | EF_MIPS_MACH_OCTEON;
       break;
 
     case bfd_mach_mips_octeon3:
-      val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON3;
+      val = EF_MIPS_ARCH_64R2 | EF_MIPS_MACH_OCTEON3;
       break;
 
     case bfd_mach_mips_xlr:
-      val = E_MIPS_ARCH_64 | E_MIPS_MACH_XLR;
+      val = EF_MIPS_ARCH_64 | EF_MIPS_MACH_XLR;
       break;
 
     case bfd_mach_mips_octeon2:
-      val = E_MIPS_ARCH_64R2 | E_MIPS_MACH_OCTEON2;
+      val = EF_MIPS_ARCH_64R2 | EF_MIPS_MACH_OCTEON2;
       break;
 
     case bfd_mach_mipsisa32:
-      val = E_MIPS_ARCH_32;
+      val = EF_MIPS_ARCH_32;
       break;
 
     case bfd_mach_mipsisa64:
-      val = E_MIPS_ARCH_64;
+      val = EF_MIPS_ARCH_64;
       break;
 
     case bfd_mach_mipsisa32r2:
     case bfd_mach_mipsisa32r3:
     case bfd_mach_mipsisa32r5:
-      val = E_MIPS_ARCH_32R2;
+      val = EF_MIPS_ARCH_32R2;
       break;
 
     case bfd_mach_mips_interaptiv_mr2:
-      val = E_MIPS_ARCH_32R2 | E_MIPS_MACH_IAMR2;
+      val = EF_MIPS_ARCH_32R2 | EF_MIPS_MACH_IAMR2;
       break;
 
     case bfd_mach_mipsisa64r2:
     case bfd_mach_mipsisa64r3:
     case bfd_mach_mipsisa64r5:
-      val = E_MIPS_ARCH_64R2;
+      val = EF_MIPS_ARCH_64R2;
       break;
 
     case bfd_mach_mipsisa32r6:
-      val = E_MIPS_ARCH_32R6;
+      val = EF_MIPS_ARCH_32R6;
       break;
 
     case bfd_mach_mipsisa64r6:
-      val = E_MIPS_ARCH_64R6;
+      val = EF_MIPS_ARCH_64R6;
       break;
     }
   elf_elfheader (abfd)->e_flags &= ~(EF_MIPS_ARCH | EF_MIPS_MACH);
@@ -12398,7 +12561,7 @@ mips_set_isa_flags (bfd *abfd)
    as is.  On the other hand, elf-eh-frame.c processing requires .eh_frame
    relocs to be sorted.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_sort_relocs_p (asection *sec)
 {
   return (sec->flags & SEC_CODE) == 0;
@@ -12441,22 +12604,24 @@ _bfd_mips_final_write_processing (bfd *a
 	case SHT_MIPS_GPTAB:
 	  BFD_ASSERT ((*hdrpp)->bfd_section != NULL);
 	  name = bfd_section_name ((*hdrpp)->bfd_section);
-	  BFD_ASSERT (name != NULL
-		      && CONST_STRNEQ (name, ".gptab."));
-	  sec = bfd_get_section_by_name (abfd, name + sizeof ".gptab" - 1);
-	  BFD_ASSERT (sec != NULL);
-	  (*hdrpp)->sh_info = elf_section_data (sec)->this_idx;
+	  if (startswith (name, ".gptab."))
+	    {
+	      sec = bfd_get_section_by_name (abfd, name + sizeof ".gptab" - 1);
+	      if (sec != NULL)
+		(*hdrpp)->sh_info = elf_section_data (sec)->this_idx;
+	    }
 	  break;
 
 	case SHT_MIPS_CONTENT:
 	  BFD_ASSERT ((*hdrpp)->bfd_section != NULL);
 	  name = bfd_section_name ((*hdrpp)->bfd_section);
-	  BFD_ASSERT (name != NULL
-		      && CONST_STRNEQ (name, ".MIPS.content"));
-	  sec = bfd_get_section_by_name (abfd,
-					 name + sizeof ".MIPS.content" - 1);
-	  BFD_ASSERT (sec != NULL);
-	  (*hdrpp)->sh_link = elf_section_data (sec)->this_idx;
+	  if (startswith (name, ".MIPS.content"))
+	    {
+	      sec = bfd_get_section_by_name (abfd,
+					     name + sizeof ".MIPS.content" - 1);
+	      if (sec != NULL)
+		(*hdrpp)->sh_link = elf_section_data (sec)->this_idx;
+	    }
 	  break;
 
 	case SHT_MIPS_SYMBOL_LIB:
@@ -12471,19 +12636,16 @@ _bfd_mips_final_write_processing (bfd *a
 	case SHT_MIPS_EVENTS:
 	  BFD_ASSERT ((*hdrpp)->bfd_section != NULL);
 	  name = bfd_section_name ((*hdrpp)->bfd_section);
-	  BFD_ASSERT (name != NULL);
-	  if (CONST_STRNEQ (name, ".MIPS.events"))
+	  if (startswith (name, ".MIPS.events"))
 	    sec = bfd_get_section_by_name (abfd,
 					   name + sizeof ".MIPS.events" - 1);
+	  else if (startswith (name, ".MIPS.post_rel"))
+	    sec = bfd_get_section_by_name (abfd,
+					   name + sizeof ".MIPS.post_rel" - 1);
 	  else
-	    {
-	      BFD_ASSERT (CONST_STRNEQ (name, ".MIPS.post_rel"));
-	      sec = bfd_get_section_by_name (abfd,
-					     (name
-					      + sizeof ".MIPS.post_rel" - 1));
-	    }
-	  BFD_ASSERT (sec != NULL);
-	  (*hdrpp)->sh_link = elf_section_data (sec)->this_idx;
+	    sec = NULL;
+	  if (sec != NULL)
+	    (*hdrpp)->sh_link = elf_section_data (sec)->this_idx;
 	  break;
 
 	case SHT_MIPS_XHASH:
@@ -12494,7 +12656,7 @@ _bfd_mips_final_write_processing (bfd *a
     }
 }
 
-bfd_boolean
+bool
 _bfd_mips_elf_final_write_processing (bfd *abfd)
 {
   _bfd_mips_final_write_processing (abfd);
@@ -12543,13 +12705,13 @@ _bfd_mips_elf_additional_program_headers
 
 /* Modify the segment map for an IRIX5 executable.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_modify_segment_map (bfd *abfd,
 				  struct bfd_link_info *info)
 {
   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.  */
@@ -12564,7 +12726,7 @@ _bfd_mips_elf_modify_segment_map (bfd *a
 	  amt = sizeof *m;
 	  m = bfd_zalloc (abfd, amt);
 	  if (m == NULL)
-	    return FALSE;
+	    return false;
 
 	  m->p_type = PT_MIPS_REGINFO;
 	  m->count = 1;
@@ -12595,7 +12757,7 @@ _bfd_mips_elf_modify_segment_map (bfd *a
 	  amt = sizeof *m;
 	  m = bfd_zalloc (abfd, amt);
 	  if (m == NULL)
-	    return FALSE;
+	    return false;
 
 	  m->p_type = PT_MIPS_ABIFLAGS;
 	  m->count = 1;
@@ -12645,7 +12807,7 @@ _bfd_mips_elf_modify_segment_map (bfd *a
 	      options_segment->next = *pm;
 	      options_segment->p_type = PT_MIPS_OPTIONS;
 	      options_segment->p_flags = PF_R;
-	      options_segment->p_flags_valid = TRUE;
+	      options_segment->p_flags_valid = true;
 	      options_segment->count = 1;
 	      options_segment->sections[0] = s;
 	      *pm = options_segment;
@@ -12670,7 +12832,7 @@ _bfd_mips_elf_modify_segment_map (bfd *a
 		  amt = sizeof *m;
 		  m = bfd_zalloc (abfd, amt);
 		  if (m == NULL)
-		    return FALSE;
+		    return false;
 
 		  m->p_type = PT_MIPS_RTPROC;
 
@@ -12752,10 +12914,10 @@ _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;
+	    return false;
 	  *n = *m;
 	  n->count = c;
 
@@ -12804,14 +12966,14 @@ _bfd_mips_elf_modify_segment_map (bfd *a
 	{
 	  m = bfd_zalloc (abfd, sizeof (*m));
 	  if (m == NULL)
-	    return FALSE;
+	    return false;
 
 	  m->p_type = PT_NULL;
 	  *pm = m;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -12839,7 +13001,7 @@ _bfd_mips_elf_gc_mark_hook (asection *se
 
 /* Prevent .MIPS.abiflags from being discarded with --gc-sections.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_gc_mark_extra_sections (struct bfd_link_info *info,
 				      elf_gc_mark_hook_fn gc_mark_hook)
 {
@@ -12859,11 +13021,11 @@ _bfd_mips_elf_gc_mark_extra_sections (st
 	    && MIPS_ELF_ABIFLAGS_SECTION_NAME_P (bfd_section_name (o)))
 	  {
 	    if (!_bfd_elf_gc_mark (info, o, gc_mark_hook))
-	      return FALSE;
+	      return false;
 	  }
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy data from a MIPS ELF indirect symbol to its direct symbol,
@@ -12885,16 +13047,16 @@ _bfd_mips_elf_copy_indirect_symbol (stru
   /* Any absolute non-dynamic relocations against an indirect or weak
      definition will be against the target symbol.  */
   if (indmips->has_static_relocs)
-    dirmips->has_static_relocs = TRUE;
+    dirmips->has_static_relocs = true;
 
   if (ind->root.type != bfd_link_hash_indirect)
     return;
 
   dirmips->possibly_dynamic_relocs += indmips->possibly_dynamic_relocs;
   if (indmips->readonly_reloc)
-    dirmips->readonly_reloc = TRUE;
+    dirmips->readonly_reloc = true;
   if (indmips->no_fn_stub)
-    dirmips->no_fn_stub = TRUE;
+    dirmips->no_fn_stub = true;
   if (indmips->fn_stub)
     {
       dirmips->fn_stub = indmips->fn_stub;
@@ -12902,8 +13064,8 @@ _bfd_mips_elf_copy_indirect_symbol (stru
     }
   if (indmips->need_fn_stub)
     {
-      dirmips->need_fn_stub = TRUE;
-      indmips->need_fn_stub = FALSE;
+      dirmips->need_fn_stub = true;
+      indmips->need_fn_stub = false;
     }
   if (indmips->call_stub)
     {
@@ -12920,7 +13082,7 @@ _bfd_mips_elf_copy_indirect_symbol (stru
   if (indmips->global_got_area < GGA_NONE)
     indmips->global_got_area = GGA_NONE;
   if (indmips->has_nonpic_branches)
-    dirmips->has_nonpic_branches = TRUE;
+    dirmips->has_nonpic_branches = true;
 }
 
 /* Take care of the special `__gnu_absolute_zero' symbol and ignore attempts
@@ -12931,7 +13093,7 @@ _bfd_mips_elf_copy_indirect_symbol (stru
 void
 _bfd_mips_elf_hide_symbol (struct bfd_link_info *info,
 			   struct elf_link_hash_entry *entry,
-			   bfd_boolean force_local)
+			   bool force_local)
 {
   struct mips_elf_link_hash_table *htab;
 
@@ -12946,36 +13108,36 @@ _bfd_mips_elf_hide_symbol (struct bfd_li
 
 #define PDR_SIZE 32
 
-bfd_boolean
+bool
 _bfd_mips_elf_discard_info (bfd *abfd, struct elf_reloc_cookie *cookie,
 			    struct bfd_link_info *info)
 {
   asection *o;
-  bfd_boolean ret = FALSE;
+  bool ret = false;
   unsigned char *tdata;
   size_t i, skip;
 
   o = bfd_get_section_by_name (abfd, ".pdr");
   if (! o)
-    return FALSE;
+    return false;
   if (o->size == 0)
-    return FALSE;
+    return false;
   if (o->size % PDR_SIZE != 0)
-    return FALSE;
+    return false;
   if (o->output_section != NULL
       && bfd_is_abs_section (o->output_section))
-    return FALSE;
+    return false;
 
   tdata = bfd_zmalloc (o->size / PDR_SIZE);
   if (! tdata)
-    return FALSE;
+    return false;
 
   cookie->rels = _bfd_elf_link_read_relocs (abfd, o, NULL, NULL,
 					    info->keep_memory);
   if (!cookie->rels)
     {
       free (tdata);
-      return FALSE;
+      return false;
     }
 
   cookie->rel = cookie->rels;
@@ -12996,7 +13158,7 @@ _bfd_mips_elf_discard_info (bfd *abfd, s
       if (o->rawsize == 0)
 	o->rawsize = o->size;
       o->size -= skip * PDR_SIZE;
-      ret = TRUE;
+      ret = true;
     }
   else
     free (tdata);
@@ -13007,15 +13169,15 @@ _bfd_mips_elf_discard_info (bfd *abfd, s
   return ret;
 }
 
-bfd_boolean
+bool
 _bfd_mips_elf_ignore_discarded_relocs (asection *sec)
 {
   if (strcmp (sec->name, ".pdr") == 0)
-    return TRUE;
-  return FALSE;
+    return true;
+  return false;
 }
 
-bfd_boolean
+bool
 _bfd_mips_elf_write_section (bfd *output_bfd,
 			     struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
 			     asection *sec, bfd_byte *contents)
@@ -13024,10 +13186,10 @@ _bfd_mips_elf_write_section (bfd *output
   int i;
 
   if (strcmp (sec->name, ".pdr") != 0)
-    return FALSE;
+    return false;
 
   if (mips_elf_section_data (sec)->u.tdata == NULL)
-    return FALSE;
+    return false;
 
   to = contents;
   end = contents + sec->size;
@@ -13043,28 +13205,19 @@ _bfd_mips_elf_write_section (bfd *output
     }
   bfd_set_section_contents (output_bfd, sec->output_section, contents,
 			    sec->output_offset, sec->size);
-  return TRUE;
+  return true;
 }
 
 /* microMIPS code retains local labels for linker relaxation.  Omit them
    from output by default for clarity.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_is_target_special_symbol (bfd *abfd, asymbol *sym)
 {
   return _bfd_elf_is_local_label_name (abfd, sym->name);
 }
 
-/* MIPS ELF uses a special find_nearest_line routine in order the
-   handle the ECOFF debugging information.  */
-
-struct mips_elf_find_line
-{
-  struct ecoff_debug_info d;
-  struct ecoff_find_line i;
-};
-
-bfd_boolean
+bool
 _bfd_mips_elf_find_nearest_line (bfd *abfd, asymbol **symbols,
 				 asection *section, bfd_vma offset,
 				 const char **filename_ptr,
@@ -13080,7 +13233,7 @@ _bfd_mips_elf_find_nearest_line (bfd *ab
 				     dwarf_debug_sections,
 				     &elf_tdata (abfd)->dwarf2_find_line_info)
       == 1)
-    return TRUE;
+    return true;
 
   if (_bfd_dwarf1_find_nearest_line (abfd, symbols, section, offset,
 				     filename_ptr, functionname_ptr,
@@ -13090,7 +13243,7 @@ _bfd_mips_elf_find_nearest_line (bfd *ab
 	_bfd_elf_find_function (abfd, symbols, section, offset,
 				*filename_ptr ? NULL : filename_ptr,
 				functionname_ptr);
-      return TRUE;
+      return true;
     }
 
   msec = bfd_get_section_by_name (abfd, ".mdebug");
@@ -13121,13 +13274,13 @@ _bfd_mips_elf_find_nearest_line (bfd *ab
 	  if (fi == NULL)
 	    {
 	      msec->flags = origflags;
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (! _bfd_mips_elf_read_ecoff_info (abfd, msec, &fi->d))
 	    {
 	      msec->flags = origflags;
-	      return FALSE;
+	      return false;
 	    }
 
 	  /* Swap in the FDR information.  */
@@ -13135,8 +13288,9 @@ _bfd_mips_elf_find_nearest_line (bfd *ab
 	  fi->d.fdr = bfd_alloc (abfd, amt);
 	  if (fi->d.fdr == NULL)
 	    {
+	      _bfd_ecoff_free_ecoff_debug_info (&fi->d);
 	      msec->flags = origflags;
-	      return FALSE;
+	      return false;
 	    }
 	  external_fdr_size = swap->external_fdr_size;
 	  fdr_ptr = fi->d.fdr;
@@ -13147,13 +13301,6 @@ _bfd_mips_elf_find_nearest_line (bfd *ab
 	    (*swap->swap_fdr_in) (abfd, fraw_src, fdr_ptr);
 
 	  mips_elf_tdata (abfd)->find_line_info = fi;
-
-	  /* Note that we don't bother to ever free this information.
-	     find_nearest_line is either called all the time, as in
-	     objdump -l, so the information should be saved, or it is
-	     rarely called, as in ld error messages, so the memory
-	     wasted is unimportant.  Still, it would probably be a
-	     good idea for free_cached_info to throw it away.  */
 	}
 
       if (_bfd_ecoff_locate_line (abfd, section, offset, &fi->d, swap,
@@ -13161,7 +13308,7 @@ _bfd_mips_elf_find_nearest_line (bfd *ab
 				  line_ptr))
 	{
 	  msec->flags = origflags;
-	  return TRUE;
+	  return true;
 	}
 
       msec->flags = origflags;
@@ -13174,13 +13321,13 @@ _bfd_mips_elf_find_nearest_line (bfd *ab
 				     line_ptr, discriminator_ptr);
 }
 
-bfd_boolean
+bool
 _bfd_mips_elf_find_inliner_info (bfd *abfd,
 				 const char **filename_ptr,
 				 const char **functionname_ptr,
 				 unsigned int *line_ptr)
 {
-  bfd_boolean found;
+  bool found;
   found = _bfd_dwarf2_find_inliner_info (abfd, filename_ptr,
 					 functionname_ptr, line_ptr,
 					 & elf_tdata (abfd)->dwarf2_find_line_info);
@@ -13192,7 +13339,7 @@ _bfd_mips_elf_find_inliner_info (bfd *ab
    remember the bytes we are writing out, so that we can install the
    GP value in the section_processing routine.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_set_section_contents (bfd *abfd, sec_ptr section,
 				    const void *location,
 				    file_ptr offset, bfd_size_type count)
@@ -13203,17 +13350,17 @@ _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;
+	    return false;
 	}
       c = mips_elf_section_data (section)->u.tdata;
       if (c == NULL)
 	{
 	  c = bfd_zalloc (abfd, section->size);
 	  if (c == NULL)
-	    return FALSE;
+	    return false;
 	  mips_elf_section_data (section)->u.tdata = c;
 	}
 
@@ -13233,29 +13380,56 @@ _bfd_elf_mips_get_relocated_section_cont
    struct bfd_link_info *link_info,
    struct bfd_link_order *link_order,
    bfd_byte *data,
-   bfd_boolean relocatable,
+   bool relocatable,
    asymbol **symbols)
 {
-  /* Get enough memory to hold the stuff */
   bfd *input_bfd = link_order->u.indirect.section->owner;
   asection *input_section = link_order->u.indirect.section;
-  bfd_size_type sz;
-
-  long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
-  arelent **reloc_vector = NULL;
+  long reloc_size;
+  arelent **reloc_vector;
   long reloc_count;
 
+  reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
   if (reloc_size < 0)
-    goto error_return;
+    return NULL;
 
-  reloc_vector = bfd_malloc (reloc_size);
-  if (reloc_vector == NULL && reloc_size != 0)
-    goto error_return;
+  /* Read in the section.  */
+  bfd_byte *orig_data = data;
+  if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
+    return NULL;
 
-  /* read in the section */
-  sz = input_section->rawsize ? input_section->rawsize : input_section->size;
-  if (!bfd_get_section_contents (input_bfd, input_section, data, 0, sz))
-    goto error_return;
+  if (data == NULL)
+    return NULL;
+
+  if (reloc_size == 0)
+    return data;
+
+  reloc_vector = (arelent **) bfd_malloc (reloc_size);
+  if (reloc_vector == NULL)
+    {
+      struct mips_elf_obj_tdata *tdata;
+      struct mips_hi16 **hip, *hi;
+    error_return:
+      /* If we are going to return an error, remove entries on
+	 mips_hi16_list that point into this section's data.  Data
+	 will typically be freed on return from this function.  */
+      tdata = mips_elf_tdata (abfd);
+      hip = &tdata->mips_hi16_list;
+      while ((hi = *hip) != NULL)
+	{
+	  if (hi->input_section == input_section)
+	    {
+	      *hip = hi->next;
+	      free (hi);
+	    }
+	  else
+	    hip = &hi->next;
+	}
+      if (orig_data == NULL)
+	free (data);
+      data = NULL;
+      goto out;
+    }
 
   reloc_count = bfd_canonicalize_reloc (input_bfd,
 					input_section,
@@ -13280,7 +13454,7 @@ _bfd_elf_mips_get_relocated_section_cont
 	  lh = 0;
 	else
 	  {
-	    h = bfd_hash_lookup (&link_info->hash->table, "_gp", FALSE, FALSE);
+	    h = bfd_hash_lookup (&link_info->hash->table, "_gp", false, false);
 	    lh = (struct bfd_link_hash_entry *) h;
 	  }
       lookup:
@@ -13312,26 +13486,69 @@ _bfd_elf_mips_get_relocated_section_cont
 	  gp_found = 0;
       }
       /* end mips */
+
       for (parent = reloc_vector; *parent != NULL; parent++)
 	{
 	  char *error_message = NULL;
+	  asymbol *symbol;
 	  bfd_reloc_status_type r;
 
+	  symbol = *(*parent)->sym_ptr_ptr;
+	  /* PR ld/19628: A specially crafted input file
+	     can result in a NULL symbol pointer here.  */
+	  if (symbol == NULL)
+	    {
+	      link_info->callbacks->einfo
+		/* xgettext:c-format */
+		(_("%X%P: %pB(%pA): error: relocation for offset %V has no value\n"),
+		 abfd, input_section, (* parent)->address);
+	      goto error_return;
+	    }
+
+	  /* Zap reloc field when the symbol is from a discarded
+	     section, ignoring any addend.  Do the same when called
+	     from bfd_simple_get_relocated_section_contents for
+	     undefined symbols in debug sections.  This is to keep
+	     debug info reasonably sane, in particular so that
+	     DW_FORM_ref_addr to another file's .debug_info isn't
+	     confused with an offset into the current file's
+	     .debug_info.  */
+	  if ((symbol->section != NULL && discarded_section (symbol->section))
+	      || (symbol->section == bfd_und_section_ptr
+		  && (input_section->flags & SEC_DEBUGGING) != 0
+		  && link_info->input_bfds == link_info->output_bfd))
+	    {
+	      bfd_vma off;
+	      static reloc_howto_type none_howto
+		= HOWTO (0, 0, 0, 0, false, 0, complain_overflow_dont, NULL,
+			 "unused", false, 0, 0, false);
+
+	      off = ((*parent)->address
+		     * bfd_octets_per_byte (input_bfd, input_section));
+	      _bfd_clear_contents ((*parent)->howto, input_bfd,
+				   input_section, data, off);
+	      (*parent)->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
+	      (*parent)->addend = 0;
+	      (*parent)->howto = &none_howto;
+	      r = bfd_reloc_ok;
+	    }
+
 	  /* Specific to MIPS: Deal with relocation types that require
 	     knowing the gp of the output bfd.  */
-	  asymbol *sym = *(*parent)->sym_ptr_ptr;
 
 	  /* If we've managed to find the gp and have a special
 	     function for the relocation then go ahead, else default
 	     to the generic handling.  */
-	  if (gp_found
-	      && (*parent)->howto->special_function
-	      == _bfd_mips_elf32_gprel16_reloc)
-	    r = _bfd_mips_elf_gprel16_with_gp (input_bfd, sym, *parent,
+	  else if (gp_found
+		   && ((*parent)->howto->special_function
+		       == _bfd_mips_elf32_gprel16_reloc))
+	    r = _bfd_mips_elf_gprel16_with_gp (input_bfd, symbol, *parent,
 					       input_section, relocatable,
 					       data, gp);
 	  else
-	    r = bfd_perform_relocation (input_bfd, *parent, data,
+	    r = bfd_perform_relocation (input_bfd,
+					*parent,
+					data,
 					input_section,
 					relocatable ? abfd : NULL,
 					&error_message);
@@ -13340,7 +13557,7 @@ _bfd_elf_mips_get_relocated_section_cont
 	    {
 	      asection *os = input_section->output_section;
 
-	      /* A partial link, so keep the relocs */
+	      /* A partial link, so keep the relocs.  */
 	      os->orelocation[os->reloc_count] = *parent;
 	      os->reloc_count++;
 	    }
@@ -13352,7 +13569,7 @@ _bfd_elf_mips_get_relocated_section_cont
 		case bfd_reloc_undefined:
 		  (*link_info->callbacks->undefined_symbol)
 		    (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
-		     input_bfd, input_section, (*parent)->address, TRUE);
+		     input_bfd, input_section, (*parent)->address, true);
 		  break;
 		case bfd_reloc_dangerous:
 		  BFD_ASSERT (error_message != NULL);
@@ -13368,25 +13585,46 @@ _bfd_elf_mips_get_relocated_section_cont
 		     input_bfd, input_section, (*parent)->address);
 		  break;
 		case bfd_reloc_outofrange:
+		  /* PR ld/13730:
+		     This error can result when processing some partially
+		     complete binaries.  Do not abort, but issue an error
+		     message instead.  */
+		  link_info->callbacks->einfo
+		    /* xgettext:c-format */
+		    (_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
+		     abfd, input_section, * parent);
+		  goto error_return;
+
+		case bfd_reloc_notsupported:
+		  /* PR ld/17512
+		     This error can result when processing a corrupt binary.
+		     Do not abort.  Issue an error message instead.  */
+		  link_info->callbacks->einfo
+		    /* xgettext:c-format */
+		    (_("%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"),
+		     abfd, input_section, * parent);
+		  goto error_return;
+
 		default:
-		  abort ();
+		  /* PR 17512; file: 90c2a92e.
+		     Report unexpected results, without aborting.  */
+		  link_info->callbacks->einfo
+		    /* xgettext:c-format */
+		    (_("%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"),
+		     abfd, input_section, * parent, r);
 		  break;
 		}
 
 	    }
 	}
     }
-  if (reloc_vector != NULL)
-    free (reloc_vector);
-  return data;
 
-error_return:
-  if (reloc_vector != NULL)
-    free (reloc_vector);
-  return NULL;
+ out:
+  free (reloc_vector);
+  return data;
 }
 
-static bfd_boolean
+static bool
 mips_elf_relax_delete_bytes (bfd *abfd,
 			     asection *sec, bfd_vma addr, int count)
 {
@@ -13453,7 +13691,7 @@ mips_elf_relax_delete_bytes (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -13732,7 +13970,7 @@ check_br32_dslot (bfd *abfd, bfd_byte *p
 /* If PTR points to a 16-bit branch or jump with a 32-bit delay slot
    that doesn't fiddle with REG, then return TRUE, otherwise FALSE.  */
 
-static bfd_boolean
+static bool
 check_br16 (bfd *abfd, bfd_byte *ptr, unsigned long reg)
 {
   unsigned long opcode;
@@ -13747,15 +13985,15 @@ check_br16 (bfd *abfd, bfd_byte *ptr, un
       || (MATCH (opcode, jalr_insn_16_bd32)
 						/* JALR16  */
 	  && reg != JR16_REG (opcode) && reg != RA))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* If PTR points to a 32-bit branch or jump that doesn't fiddle with REG,
    then return TRUE, otherwise FALSE.  */
 
-static bfd_boolean
+static bool
 check_br32 (bfd *abfd, bfd_byte *ptr, unsigned long reg)
 {
   unsigned long opcode;
@@ -13775,16 +14013,16 @@ check_br32 (bfd *abfd, bfd_byte *ptr, un
       || ((MATCH (opcode, jalr_insn_32) || MATCH (opcode, beq_insn_32))
 						/* JALR, JALR.HB, BEQ, BNE  */
 	  && reg != OP32_SREG (opcode) && reg != OP32_TREG (opcode)))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* If the instruction encoding at PTR and relocations [INTERNAL_RELOCS,
    IRELEND) at OFFSET indicate that there must be a compact branch there,
    then return TRUE, otherwise FALSE.  */
 
-static bfd_boolean
+static bool
 check_relocated_bzc (bfd *abfd, const bfd_byte *ptr, bfd_vma offset,
 		     const Elf_Internal_Rela *internal_relocs,
 		     const Elf_Internal_Rela *irelend)
@@ -13794,14 +14032,14 @@ check_relocated_bzc (bfd *abfd, const bf
 
   opcode = bfd_get_micromips_32 (abfd, ptr);
   if (find_match (opcode, bzc_insns_32) < 0)
-    return FALSE;
+    return false;
 
   for (irel = internal_relocs; irel < irelend; irel++)
     if (irel->r_offset == offset
 	&& ELF32_R_TYPE (irel->r_info) == R_MICROMIPS_PC16_S1)
-      return TRUE;
+      return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Bitsize checking.  */
@@ -13810,12 +14048,12 @@ check_relocated_bzc (bfd *abfd, const bf
     - (1ULL << ((N) - 1))) == (val))
 
 
-bfd_boolean
+bool
 _bfd_mips_elf_relax_section (bfd *abfd, asection *sec,
 			     struct bfd_link_info *link_info,
-			     bfd_boolean *again)
+			     bool *again)
 {
-  bfd_boolean insn32 = mips_elf_hash_table (link_info)->insn32;
+  bool insn32 = mips_elf_hash_table (link_info)->insn32;
   Elf_Internal_Shdr *symtab_hdr;
   Elf_Internal_Rela *internal_relocs;
   Elf_Internal_Rela *irel, *irelend;
@@ -13823,17 +14061,18 @@ _bfd_mips_elf_relax_section (bfd *abfd,
   Elf_Internal_Sym *isymbuf = NULL;
 
   /* Assume nothing changes.  */
-  *again = FALSE;
+  *again = false;
 
   /* We don't have to do anything for a relocatable link, if
      this section does not have relocs, or if this is not a
      code section.  */
 
   if (bfd_link_relocatable (link_info)
-      || (sec->flags & SEC_RELOC) == 0
       || sec->reloc_count == 0
+      || (sec->flags & SEC_RELOC) == 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || (sec->flags & SEC_CODE) == 0)
-    return TRUE;
+    return true;
 
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
 
@@ -13850,7 +14089,7 @@ _bfd_mips_elf_relax_section (bfd *abfd,
     {
       unsigned long r_symndx = ELF32_R_SYM (irel->r_info);
       unsigned int r_type = ELF32_R_TYPE (irel->r_info);
-      bfd_boolean target_is_micromips_code_p;
+      bool target_is_micromips_code_p;
       unsigned long opcode;
       bfd_vma symval;
       bfd_vma pcrval;
@@ -13970,7 +14209,7 @@ _bfd_mips_elf_relax_section (bfd *abfd,
 	 out the offset).  */
       if (r_type == R_MICROMIPS_HI16 && MATCH (opcode, lui_insn))
 	{
-	  bfd_boolean bzc = FALSE;
+	  bool bzc = false;
 	  unsigned long nextopc;
 	  unsigned long reg;
 	  bfd_vma offset;
@@ -14180,7 +14419,7 @@ _bfd_mips_elf_relax_section (bfd *abfd,
 	       && MATCH (opcode, jal_insn_32_bd32))
 	{
 	  unsigned long n32opc;
-	  bfd_boolean relaxed = FALSE;
+	  bool relaxed = false;
 
 	  n32opc = bfd_get_micromips_32 (abfd, ptr + 4);
 
@@ -14189,7 +14428,7 @@ _bfd_mips_elf_relax_section (bfd *abfd,
 	      /* Replace delay slot 32-bit NOP with a 16-bit NOP.  */
 	      bfd_put_16 (abfd, nop_insn_16.match, ptr + 4);
 
-	      relaxed = TRUE;
+	      relaxed = true;
 	    }
 	  else if (find_match (n32opc, move_insns_32) >= 0)
 	    {
@@ -14200,7 +14439,7 @@ _bfd_mips_elf_relax_section (bfd *abfd,
 			   | MOVE16_RS_FIELD (MOVE32_RS (n32opc))),
 			  ptr + 4);
 
-	      relaxed = TRUE;
+	      relaxed = true;
 	    }
 	  /* Other 32-bit instructions relaxable to 16-bit
 	     instructions will be handled here later.  */
@@ -14231,7 +14470,7 @@ _bfd_mips_elf_relax_section (bfd *abfd,
 
 	  /* That will change things, so we should relax again.
 	     Note that this is not required, and it may be slow.  */
-	  *again = TRUE;
+	  *again = true;
 	}
     }
 
@@ -14259,24 +14498,20 @@ _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;
+  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;
+  return false;
 }
 
 /* Create a MIPS ELF linker hash table.  */
@@ -14285,7 +14520,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)
@@ -14293,8 +14528,7 @@ _bfd_mips_elf_link_hash_table_create (bf
 
   if (!_bfd_elf_link_hash_table_init (&ret->root, abfd,
 				      mips_elf_link_hash_newfunc,
-				      sizeof (struct mips_elf_link_hash_entry),
-				      MIPS_ELF_DATA))
+				      sizeof (struct mips_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -14318,8 +14552,7 @@ _bfd_mips_vxworks_link_hash_table_create
       struct mips_elf_link_hash_table *htab;
 
       htab = (struct mips_elf_link_hash_table *) ret;
-      htab->use_plts_and_copy_relocs = TRUE;
-      htab->is_vxworks = TRUE;
+      htab->use_plts_and_copy_relocs = true;
     }
   return ret;
 }
@@ -14330,7 +14563,7 @@ _bfd_mips_vxworks_link_hash_table_create
 void
 _bfd_mips_elf_use_plts_and_copy_relocs (struct bfd_link_info *info)
 {
-  mips_elf_hash_table (info)->use_plts_and_copy_relocs = TRUE;
+  mips_elf_hash_table (info)->use_plts_and_copy_relocs = true;
 }
 
 /* A function that the linker calls to select between all or only
@@ -14339,9 +14572,9 @@ _bfd_mips_elf_use_plts_and_copy_relocs (
    Also record whether we have been configured for a GNU target.  */
 
 void
-_bfd_mips_elf_linker_flags (struct bfd_link_info *info, bfd_boolean insn32,
-			    bfd_boolean ignore_branch_isa,
-			    bfd_boolean gnu_target)
+_bfd_mips_elf_linker_flags (struct bfd_link_info *info, bool insn32,
+			    bool ignore_branch_isa,
+			    bool gnu_target)
 {
   mips_elf_hash_table (info)->insn32 = insn32;
   mips_elf_hash_table (info)->ignore_branch_isa = ignore_branch_isa;
@@ -14352,7 +14585,7 @@ _bfd_mips_elf_linker_flags (struct bfd_l
    linker generated code for MIPSR6.  */
 
 void
-_bfd_mips_elf_compact_branches (struct bfd_link_info *info, bfd_boolean on)
+_bfd_mips_elf_compact_branches (struct bfd_link_info *info, bool on)
 {
   mips_elf_hash_table (info)->compact_branches = on;
 }
@@ -14365,6 +14598,16 @@ struct mips_mach_extension
   unsigned long extension, base;
 };
 
+/* An array that maps 64-bit architectures to the corresponding 32-bit
+   architectures.  */
+static const struct mips_mach_extension mips_mach_32_64[] =
+{
+  { bfd_mach_mipsisa64r6, bfd_mach_mipsisa32r6 },
+  { bfd_mach_mipsisa64r5, bfd_mach_mipsisa32r5 },
+  { bfd_mach_mipsisa64r3, bfd_mach_mipsisa32r3 },
+  { bfd_mach_mipsisa64r2, bfd_mach_mipsisa32r2 },
+  { bfd_mach_mipsisa64,   bfd_mach_mipsisa32 }
+};
 
 /* An array describing how BFD machines relate to one another.  The entries
    are ordered topologically with MIPS I extensions listed last.  */
@@ -14436,39 +14679,48 @@ static const struct mips_mach_extension
   { bfd_mach_mips4000, bfd_mach_mips6000 },
   { bfd_mach_mipsisa32, bfd_mach_mips6000 },
   { bfd_mach_mips4010, bfd_mach_mips6000 },
+  { bfd_mach_mips_allegrex, bfd_mach_mips6000 },
 
   /* MIPS I extensions.  */
   { bfd_mach_mips6000, bfd_mach_mips3000 },
   { bfd_mach_mips3900, bfd_mach_mips3000 }
 };
 
-/* Return true if bfd machine EXTENSION is an extension of machine BASE.  */
+/* Return true if bfd machine EXTENSION is the same as BASE, or if
+   EXTENSION is the 64-bit equivalent of a 32-bit BASE.  */
 
-static bfd_boolean
-mips_mach_extends_p (unsigned long base, unsigned long extension)
+static bool
+mips_mach_extends_32_64 (unsigned long base, unsigned long extension)
 {
   size_t i;
 
   if (extension == base)
-    return TRUE;
+    return true;
 
-  if (base == bfd_mach_mipsisa32
-      && mips_mach_extends_p (bfd_mach_mipsisa64, extension))
-    return TRUE;
-
-  if (base == bfd_mach_mipsisa32r2
-      && mips_mach_extends_p (bfd_mach_mipsisa64r2, extension))
-    return TRUE;
+  for (i = 0; i < ARRAY_SIZE (mips_mach_32_64); i++)
+    if (extension == mips_mach_32_64[i].extension)
+      return base == mips_mach_32_64[i].base;
+
+  return false;
+}
+
+static bool
+mips_mach_extends_p (unsigned long base, unsigned long extension)
+{
+  size_t i;
+
+  if (mips_mach_extends_32_64 (base, extension))
+    return true;
 
   for (i = 0; i < ARRAY_SIZE (mips_mach_extensions); i++)
     if (extension == mips_mach_extensions[i].extension)
       {
 	extension = mips_mach_extensions[i].base;
-	if (extension == base)
-	  return TRUE;
+	if (mips_mach_extends_32_64 (base, extension))
+	  return true;
       }
 
-  return FALSE;
+  return false;
 }
 
 /* Return the BFD mach for each .MIPS.abiflags ISA Extension.  */
@@ -14545,17 +14797,17 @@ update_mips_abiflags_isa (bfd *abfd, Elf
   int new_isa = 0;
   switch (elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH)
     {
-    case E_MIPS_ARCH_1:    new_isa = LEVEL_REV (1, 0); break;
-    case E_MIPS_ARCH_2:    new_isa = LEVEL_REV (2, 0); break;
-    case E_MIPS_ARCH_3:    new_isa = LEVEL_REV (3, 0); break;
-    case E_MIPS_ARCH_4:    new_isa = LEVEL_REV (4, 0); break;
-    case E_MIPS_ARCH_5:    new_isa = LEVEL_REV (5, 0); break;
-    case E_MIPS_ARCH_32:   new_isa = LEVEL_REV (32, 1); break;
-    case E_MIPS_ARCH_32R2: new_isa = LEVEL_REV (32, 2); break;
-    case E_MIPS_ARCH_32R6: new_isa = LEVEL_REV (32, 6); break;
-    case E_MIPS_ARCH_64:   new_isa = LEVEL_REV (64, 1); break;
-    case E_MIPS_ARCH_64R2: new_isa = LEVEL_REV (64, 2); break;
-    case E_MIPS_ARCH_64R6: new_isa = LEVEL_REV (64, 6); break;
+    case EF_MIPS_ARCH_1:    new_isa = LEVEL_REV (1, 0); break;
+    case EF_MIPS_ARCH_2:    new_isa = LEVEL_REV (2, 0); break;
+    case EF_MIPS_ARCH_3:    new_isa = LEVEL_REV (3, 0); break;
+    case EF_MIPS_ARCH_4:    new_isa = LEVEL_REV (4, 0); break;
+    case EF_MIPS_ARCH_5:    new_isa = LEVEL_REV (5, 0); break;
+    case EF_MIPS_ARCH_32:   new_isa = LEVEL_REV (32, 1); break;
+    case EF_MIPS_ARCH_32R2: new_isa = LEVEL_REV (32, 2); break;
+    case EF_MIPS_ARCH_32R6: new_isa = LEVEL_REV (32, 6); break;
+    case EF_MIPS_ARCH_64:   new_isa = LEVEL_REV (64, 1); break;
+    case EF_MIPS_ARCH_64R2: new_isa = LEVEL_REV (64, 2); break;
+    case EF_MIPS_ARCH_64R6: new_isa = LEVEL_REV (64, 6); break;
     default:
       _bfd_error_handler
 	/* xgettext:c-format */
@@ -14577,17 +14829,17 @@ update_mips_abiflags_isa (bfd *abfd, Elf
 
 /* Return true if the given ELF header flags describe a 32-bit binary.  */
 
-static bfd_boolean
+static bool
 mips_32bit_flags_p (flagword flags)
 {
   return ((flags & EF_MIPS_32BITMODE) != 0
-	  || (flags & EF_MIPS_ABI) == E_MIPS_ABI_O32
-	  || (flags & EF_MIPS_ABI) == E_MIPS_ABI_EABI32
-	  || (flags & EF_MIPS_ARCH) == E_MIPS_ARCH_1
-	  || (flags & EF_MIPS_ARCH) == E_MIPS_ARCH_2
-	  || (flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32
-	  || (flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32R2
-	  || (flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32R6);
+	  || (flags & EF_MIPS_ABI) == EF_MIPS_ABI_O32
+	  || (flags & EF_MIPS_ABI) == EF_MIPS_ABI_EABI32
+	  || (flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_1
+	  || (flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_2
+	  || (flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_32
+	  || (flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_32R2
+	  || (flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_32R6);
 }
 
 /* Infer the content of the ABI flags based on the elf header.  */
@@ -14641,7 +14893,7 @@ infer_mips_abiflags (bfd *abfd, Elf_Inte
    the .mdebug sections.  We need to merge all instances of these
    sections together, not write them all out sequentially.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   asection *o;
@@ -14678,30 +14930,30 @@ _bfd_mips_elf_final_link (bfd *abfd, str
   /* Sort the dynamic symbols so that those with GOT entries come after
      those without.  */
   if (!mips_elf_sort_hash_table (abfd, info))
-    return FALSE;
+    return false;
 
   /* Create any scheduled LA25 stubs.  */
   hti.info = info;
   hti.output_bfd = abfd;
-  hti.error = FALSE;
+  hti.error = false;
   htab_traverse (htab->la25_stubs, mips_elf_create_la25_stub, &hti);
   if (hti.error)
-    return FALSE;
+    return false;
 
   /* Get a value for the GP register.  */
   if (elf_gp (abfd) == 0)
     {
       struct bfd_link_hash_entry *h;
 
-      h = bfd_link_hash_lookup (info->hash, "_gp", FALSE, FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->hash, "_gp", false, false, true);
       if (h != NULL && h->type == bfd_link_hash_defined)
 	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))
+					     false, false, true))
 	       && h->type == bfd_link_hash_defined)
 	elf_gp (abfd) = (h->u.def.section->output_section->vma
 			 + h->u.def.section->output_offset
@@ -14759,7 +15011,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	      input_section->flags &= ~SEC_HAS_CONTENTS;
 	    }
 
-	  /* Size has been set in _bfd_mips_elf_always_size_sections.  */
+	  /* Size has been set in _bfd_mips_elf_late_size_sections.  */
 	  BFD_ASSERT(o->size == sizeof (Elf_External_ABIFlags_v0));
 
 	  /* Skip this section later on (I don't think this currently
@@ -14799,7 +15051,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	      memset (&ext, 0, sizeof (ext));
 	      if (! bfd_get_section_contents (input_bfd, input_section,
 					      &ext, 0, sz))
-		return FALSE;
+		return false;
 
 	      bfd_mips_elf32_swap_reginfo_in (input_bfd, &ext, &sub);
 
@@ -14818,7 +15070,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	      input_section->flags &= ~SEC_HAS_CONTENTS;
 	    }
 
-	  /* Size has been set in _bfd_mips_elf_always_size_sections.  */
+	  /* Size has been set in _bfd_mips_elf_late_size_sections.  */
 	  BFD_ASSERT(o->size == sizeof (Elf32_External_RegInfo));
 
 	  /* Skip this section later on (I don't think this currently
@@ -14854,6 +15106,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 
 	  /* We accumulate the debugging information itself in the
 	     debug_info structure.  */
+	  debug.alloc_syments = false;
 	  debug.line = NULL;
 	  debug.external_dnr = NULL;
 	  debug.external_pdr = NULL;
@@ -14868,7 +15121,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 
 	  mdebug_handle = bfd_ecoff_debug_init (abfd, &debug, swap, info);
 	  if (mdebug_handle == NULL)
-	    return FALSE;
+	    return false;
 
 	  esym.jmptbl = 0;
 	  esym.cobol_main = 0;
@@ -14893,7 +15146,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 		esym.asym.value = last;
 	      if (!bfd_ecoff_debug_one_external (abfd, &debug, swap,
 						 secname[i], &esym))
-		return FALSE;
+		return false;
 	    }
 
 	  for (p = o->map_head.link_order; p != NULL; p = p->next)
@@ -14933,12 +15186,15 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 		 ecoff_debug_info structure, so we do that now.  */
 	      if (! _bfd_mips_elf_read_ecoff_info (input_bfd, input_section,
 						   &input_debug))
-		return FALSE;
+		return false;
 
 	      if (! (bfd_ecoff_debug_accumulate
 		     (mdebug_handle, abfd, &debug, swap, input_bfd,
 		      &input_debug, input_swap, info)))
-		return FALSE;
+		{
+		  _bfd_ecoff_free_ecoff_debug_info (&input_debug);
+		  return false;
+		}
 
 	      /* Loop through the external symbols.  For each one with
 		 interesting information, try to find the symbol in
@@ -14964,7 +15220,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 
 		  name = input_debug.ssext + ext.asym.iss;
 		  h = mips_elf_link_hash_lookup (mips_elf_hash_table (info),
-						 name, FALSE, FALSE, TRUE);
+						 name, false, false, true);
 		  if (h == NULL || h->esym.ifd != -2)
 		    continue;
 
@@ -14979,17 +15235,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 		}
 
 	      /* Free up the information we just read.  */
-	      free (input_debug.line);
-	      free (input_debug.external_dnr);
-	      free (input_debug.external_pdr);
-	      free (input_debug.external_sym);
-	      free (input_debug.external_opt);
-	      free (input_debug.external_aux);
-	      free (input_debug.ss);
-	      free (input_debug.ssext);
-	      free (input_debug.external_fdr);
-	      free (input_debug.external_rfd);
-	      free (input_debug.external_ext);
+	      _bfd_ecoff_free_ecoff_debug_info (&input_debug);
 
 	      /* Hack: reset the SEC_HAS_CONTENTS flag so that
 		 elf_link_input_bfd ignores this section.  */
@@ -15010,13 +15256,13 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 								   flags);
 		  if (rtproc_sec == NULL
 		      || !bfd_set_section_alignment (rtproc_sec, 4))
-		    return FALSE;
+		    return false;
 		}
 
 	      if (! mips_elf_create_procedure_table (mdebug_handle, abfd,
 						     info, rtproc_sec,
 						     &debug))
-		return FALSE;
+		return false;
 	    }
 
 	  /* Build the external symbol information.  */
@@ -15024,11 +15270,11 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	  einfo.info = info;
 	  einfo.debug = &debug;
 	  einfo.swap = swap;
-	  einfo.failed = FALSE;
+	  einfo.failed = false;
 	  mips_elf_link_hash_traverse (mips_elf_hash_table (info),
 				       mips_elf_output_extsym, &einfo);
 	  if (einfo.failed)
-	    return FALSE;
+	    return false;
 
 	  /* Set the size of the .mdebug section.  */
 	  o->size = bfd_ecoff_debug_size (abfd, &debug, swap);
@@ -15040,7 +15286,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	  mdebug_sec = o;
 	}
 
-      if (CONST_STRNEQ (o->name, ".gptab."))
+      if (startswith (o->name, ".gptab."))
 	{
 	  const char *subname;
 	  unsigned int c;
@@ -15095,7 +15341,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 		/* xgettext:c-format */
 		(_("%pB: illegal section name `%pA'"), abfd, o);
 	      bfd_set_error (bfd_error_nonrepresentable_section);
-	      return FALSE;
+	      return false;
 	    }
 
 	  /* The linker script always combines .gptab.data and
@@ -15119,7 +15365,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	  amt = c * sizeof (Elf32_gptab);
 	  tab = bfd_malloc (amt);
 	  if (tab == NULL)
-	    return FALSE;
+	    return false;
 	  tab[0].gt_header.gt_current_g_value = elf_gp_size (abfd);
 	  tab[0].gt_header.gt_unused = 0;
 
@@ -15155,7 +15401,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 		  Elf32_gptab int_gptab;
 		  unsigned long val;
 		  unsigned long add;
-		  bfd_boolean exact;
+		  bool exact;
 		  unsigned int look;
 
 		  if (! (bfd_get_section_contents
@@ -15163,7 +15409,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 			  sizeof (Elf32_External_gptab))))
 		    {
 		      free (tab);
-		      return FALSE;
+		      return false;
 		    }
 
 		  bfd_mips_elf32_swap_gptab_in (input_bfd, &ext_gptab,
@@ -15171,14 +15417,14 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 		  val = int_gptab.gt_entry.gt_g_value;
 		  add = int_gptab.gt_entry.gt_bytes - last;
 
-		  exact = FALSE;
+		  exact = false;
 		  for (look = 1; look < c; look++)
 		    {
 		      if (tab[look].gt_entry.gt_g_value >= val)
 			tab[look].gt_entry.gt_bytes += add;
 
 		      if (tab[look].gt_entry.gt_g_value == val)
-			exact = TRUE;
+			exact = true;
 		    }
 
 		  if (! exact)
@@ -15192,7 +15438,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 		      if (new_tab == NULL)
 			{
 			  free (tab);
-			  return FALSE;
+			  return false;
 			}
 		      tab = new_tab;
 		      tab[c].gt_entry.gt_g_value = val;
@@ -15235,7 +15481,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	  if (ext_tab == NULL)
 	    {
 	      free (tab);
-	      return FALSE;
+	      return false;
 	    }
 
 	  for (j = 0; j < c; j++)
@@ -15244,6 +15490,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 
 	  o->size = c * sizeof (Elf32_External_gptab);
 	  o->contents = (bfd_byte *) ext_tab;
+	  o->alloced = 1;
 
 	  /* Skip this section later on (I don't think this currently
 	     matters, but someday it might).  */
@@ -15253,7 +15500,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 
   /* Invoke the regular ELF backend linker to do all the work.  */
   if (!bfd_elf_final_link (abfd, info))
-    return FALSE;
+    return false;
 
   /* Now write out the computed sections.  */
 
@@ -15268,11 +15515,11 @@ _bfd_mips_elf_final_link (bfd *abfd, str
       if (!mips_elf_tdata (abfd)->abiflags_valid)
 	{
 	  infer_mips_abiflags (abfd, abiflags);
-	  mips_elf_tdata (abfd)->abiflags_valid = TRUE;
+	  mips_elf_tdata (abfd)->abiflags_valid = true;
 	}
       bfd_mips_elf_swap_abiflags_v0_out (abfd, abiflags, &ext);
       if (! bfd_set_section_contents (abfd, abiflags_sec, &ext, 0, sizeof ext))
-	return FALSE;
+	return false;
     }
 
   if (reginfo_sec != NULL)
@@ -15281,7 +15528,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 
       bfd_mips_elf32_swap_reginfo_out (abfd, &reginfo, &ext);
       if (! bfd_set_section_contents (abfd, reginfo_sec, &ext, 0, sizeof ext))
-	return FALSE;
+	return false;
     }
 
   if (mdebug_sec != NULL)
@@ -15290,7 +15537,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
       if (! bfd_ecoff_write_accumulated_debug (mdebug_handle, abfd, &debug,
 					       swap, info,
 					       mdebug_sec->filepos))
-	return FALSE;
+	return false;
 
       bfd_ecoff_debug_free (mdebug_handle, abfd, &debug, swap, info);
     }
@@ -15300,7 +15547,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
       if (! bfd_set_section_contents (abfd, gptab_data_sec,
 				      gptab_data_sec->contents,
 				      0, gptab_data_sec->size))
-	return FALSE;
+	return false;
     }
 
   if (gptab_bss_sec != NULL)
@@ -15308,7 +15555,7 @@ _bfd_mips_elf_final_link (bfd *abfd, str
       if (! bfd_set_section_contents (abfd, gptab_bss_sec,
 				      gptab_bss_sec->contents,
 				      0, gptab_bss_sec->size))
-	return FALSE;
+	return false;
     }
 
   if (SGI_COMPAT (abfd))
@@ -15319,24 +15566,24 @@ _bfd_mips_elf_final_link (bfd *abfd, str
 	  if (! bfd_set_section_contents (abfd, rtproc_sec,
 					  rtproc_sec->contents,
 					  0, rtproc_sec->size))
-	    return FALSE;
+	    return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Merge object file header flags from IBFD into OBFD.  Raise an error
    if there are conflicting settings.  */
 
-static bfd_boolean
+static bool
 mips_elf_merge_obj_e_flags (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   struct mips_elf_obj_tdata *out_tdata = mips_elf_tdata (obfd);
   flagword old_flags;
   flagword new_flags;
-  bfd_boolean ok;
+  bool ok;
 
   new_flags = elf_elfheader (ibfd)->e_flags;
   elf_elfheader (obfd)->e_flags |= new_flags & EF_MIPS_NOREORDER;
@@ -15362,9 +15609,9 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
     new_flags |= EF_MIPS_PIC | EF_MIPS_CPIC;
 
   if (new_flags == old_flags)
-    return TRUE;
+    return true;
 
-  ok = TRUE;
+  ok = true;
 
   if (((new_flags & (EF_MIPS_PIC | EF_MIPS_CPIC)) != 0)
       != ((old_flags & (EF_MIPS_PIC | EF_MIPS_CPIC)) != 0))
@@ -15372,7 +15619,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
       _bfd_error_handler
 	(_("%pB: warning: linking abicalls files with non-abicalls files"),
 	 ibfd);
-      ok = TRUE;
+      ok = true;
     }
 
   if (new_flags & (EF_MIPS_PIC | EF_MIPS_CPIC))
@@ -15389,7 +15636,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
       _bfd_error_handler
 	(_("%pB: linking 32-bit code with 64-bit code"),
 	 ibfd);
-      ok = FALSE;
+      ok = false;
     }
   else if (!mips_mach_extends_p (bfd_get_mach (ibfd), bfd_get_mach (obfd)))
     {
@@ -15423,7 +15670,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
 	     ibfd,
 	     bfd_printable_name (ibfd),
 	     bfd_printable_name (obfd));
-	  ok = FALSE;
+	  ok = false;
 	}
     }
 
@@ -15447,7 +15694,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
 	     ibfd,
 	     elf_mips_abi_name (ibfd),
 	     elf_mips_abi_name (obfd));
-	  ok = FALSE;
+	  ok = false;
 	}
       new_flags &= ~EF_MIPS_ABI;
       old_flags &= ~EF_MIPS_ABI;
@@ -15472,7 +15719,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
 	     ibfd,
 	     m16_mis ? "MIPS16" : "microMIPS",
 	     m16_mis ? "microMIPS" : "MIPS16");
-	  ok = FALSE;
+	  ok = false;
 	}
 
       elf_elfheader (obfd)->e_flags |= new_flags & EF_MIPS_ARCH_ASE;
@@ -15491,7 +15738,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
 			   ? "-mnan=2008" : "-mnan=legacy"),
 			  (old_flags & EF_MIPS_NAN2008
 			   ? "-mnan=2008" : "-mnan=legacy"));
-      ok = FALSE;
+      ok = false;
       new_flags &= ~EF_MIPS_NAN2008;
       old_flags &= ~EF_MIPS_NAN2008;
     }
@@ -15506,7 +15753,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
 			   ? "-mfp64" : "-mfp32"),
 			  (old_flags & EF_MIPS_FP64
 			   ? "-mfp64" : "-mfp32"));
-      ok = FALSE;
+      ok = false;
       new_flags &= ~EF_MIPS_FP64;
       old_flags &= ~EF_MIPS_FP64;
     }
@@ -15519,7 +15766,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
 	(_("%pB: uses different e_flags (%#x) fields than previous modules "
 	   "(%#x)"),
 	 ibfd, new_flags, old_flags);
-      ok = FALSE;
+      ok = false;
     }
 
   return ok;
@@ -15527,7 +15774,7 @@ mips_elf_merge_obj_e_flags (bfd *ibfd, s
 
 /* Merge object attributes from IBFD into OBFD.  Raise an error if
    there are conflicting attributes.  */
-static bfd_boolean
+static bool
 mips_elf_merge_obj_attributes (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -15555,7 +15802,7 @@ mips_elf_merge_obj_attributes (bfd *ibfd
 	 initialized.  */
       elf_known_obj_attributes_proc (obfd)[0].i = 1;
 
-      return TRUE;
+      return true;
     }
 
   /* Check for conflicting Tag_GNU_MIPS_ABI_FP attributes and merge
@@ -15684,7 +15931,7 @@ mips_elf_merge_obj_attributes (bfd *ibfd
 /* Merge object ABI flags from IBFD into OBFD.  Raise an error if
    there are conflicting settings.  */
 
-static bfd_boolean
+static bool
 mips_elf_merge_obj_abiflags (bfd *ibfd, bfd *obfd)
 {
   obj_attribute *out_attr = elf_known_obj_attributes (obfd)[OBJ_ATTR_GNU];
@@ -15710,21 +15957,21 @@ mips_elf_merge_obj_abiflags (bfd *ibfd,
   out_tdata->abiflags.ases |= in_tdata->abiflags.ases;
   out_tdata->abiflags.flags1 |= in_tdata->abiflags.flags1;
 
-  return TRUE;
+  return true;
 }
 
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
   struct mips_elf_obj_tdata *out_tdata;
   struct mips_elf_obj_tdata *in_tdata;
-  bfd_boolean null_input_bfd = TRUE;
+  bool null_input_bfd = true;
   asection *sec;
-  bfd_boolean ok;
+  bool ok;
 
   /* Check if we have the same endianness.  */
   if (! _bfd_generic_verify_endian_match (ibfd, info))
@@ -15732,11 +15979,11 @@ _bfd_mips_elf_merge_private_bfd_data (bf
       _bfd_error_handler
 	(_("%pB: endianness incompatible with that of the selected emulation"),
 	 ibfd);
-      return FALSE;
+      return false;
     }
 
   if (!is_mips_elf (ibfd) || !is_mips_elf (obfd))
-    return TRUE;
+    return true;
 
   in_tdata = mips_elf_tdata (ibfd);
   out_tdata = mips_elf_tdata (obfd);
@@ -15746,12 +15993,13 @@ _bfd_mips_elf_merge_private_bfd_data (bf
       _bfd_error_handler
 	(_("%pB: ABI is incompatible with that of the selected emulation"),
 	 ibfd);
-      return FALSE;
+      return false;
     }
 
   /* 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
@@ -15766,12 +16014,12 @@ _bfd_mips_elf_merge_private_bfd_data (bf
 		  && strcmp (sec->name, ".data")
 		  && strcmp (sec->name, ".bss"))))
 	{
-	  null_input_bfd = FALSE;
+	  null_input_bfd = false;
 	  break;
 	}
     }
   if (null_input_bfd)
-    return TRUE;
+    return true;
 
   /* Populate abiflags using existing information.  */
   if (in_tdata->abiflags_valid)
@@ -15823,19 +16071,19 @@ _bfd_mips_elf_merge_private_bfd_data (bf
   else
     {
       infer_mips_abiflags (ibfd, &in_tdata->abiflags);
-      in_tdata->abiflags_valid = TRUE;
+      in_tdata->abiflags_valid = true;
     }
 
   if (!out_tdata->abiflags_valid)
     {
       /* Copy input abiflags if output abiflags are not already valid.  */
       out_tdata->abiflags = in_tdata->abiflags;
-      out_tdata->abiflags_valid = TRUE;
+      out_tdata->abiflags_valid = true;
     }
 
   if (! elf_flags_init (obfd))
     {
-      elf_flags_init (obfd) = TRUE;
+      elf_flags_init (obfd) = true;
       elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
       elf_elfheader (obfd)->e_ident[EI_CLASS]
 	= elf_elfheader (ibfd)->e_ident[EI_CLASS];
@@ -15847,13 +16095,13 @@ _bfd_mips_elf_merge_private_bfd_data (bf
 	{
 	  if (! bfd_set_arch_mach (obfd, bfd_get_arch (ibfd),
 				   bfd_get_mach (ibfd)))
-	    return FALSE;
+	    return false;
 
 	  /* Update the ABI flags isa_level, isa_rev and isa_ext fields.  */
 	  update_mips_abiflags_isa (obfd, &out_tdata->abiflags);
 	}
 
-      ok = TRUE;
+      ok = true;
     }
   else
     ok = mips_elf_merge_obj_e_flags (ibfd, info);
@@ -15865,23 +16113,23 @@ _bfd_mips_elf_merge_private_bfd_data (bf
   if (!ok)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Function to keep MIPS specific file flags like as EF_MIPS_PIC.  */
 
-bfd_boolean
+bool
 _bfd_mips_elf_set_private_flags (bfd *abfd, flagword flags)
 {
   BFD_ASSERT (!elf_flags_init (abfd)
 	      || elf_elfheader (abfd)->e_flags == flags);
 
   elf_elfheader (abfd)->e_flags = flags;
-  elf_flags_init (abfd) = TRUE;
-  return TRUE;
+  elf_flags_init (abfd) = true;
+  return true;
 }
 
 char *
@@ -16190,7 +16438,7 @@ get_mips_reg_size (int reg_size)
 	 : -1;
 }
 
-bfd_boolean
+bool
 _bfd_mips_elf_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE *file = ptr;
@@ -16203,13 +16451,13 @@ _bfd_mips_elf_print_private_bfd_data (bf
   /* xgettext:c-format */
   fprintf (file, _("private flags = %lx:"), elf_elfheader (abfd)->e_flags);
 
-  if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == E_MIPS_ABI_O32)
+  if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == EF_MIPS_ABI_O32)
     fprintf (file, _(" [abi=O32]"));
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == E_MIPS_ABI_O64)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == EF_MIPS_ABI_O64)
     fprintf (file, _(" [abi=O64]"));
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == E_MIPS_ABI_EABI32)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == EF_MIPS_ABI_EABI32)
     fprintf (file, _(" [abi=EABI32]"));
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == E_MIPS_ABI_EABI64)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI) == EF_MIPS_ABI_EABI64)
     fprintf (file, _(" [abi=EABI64]"));
   else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ABI))
     fprintf (file, _(" [abi unknown]"));
@@ -16220,27 +16468,27 @@ _bfd_mips_elf_print_private_bfd_data (bf
   else
     fprintf (file, _(" [no abi set]"));
 
-  if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_1)
+  if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_1)
     fprintf (file, " [mips1]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_2)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_2)
     fprintf (file, " [mips2]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_3)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_3)
     fprintf (file, " [mips3]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_4)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_4)
     fprintf (file, " [mips4]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_5)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_5)
     fprintf (file, " [mips5]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_32)
     fprintf (file, " [mips32]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_64)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_64)
     fprintf (file, " [mips64]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32R2)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_32R2)
     fprintf (file, " [mips32r2]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_64R2)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_64R2)
     fprintf (file, " [mips64r2]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_32R6)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_32R6)
     fprintf (file, " [mips32r6]");
-  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == E_MIPS_ARCH_64R6)
+  else if ((elf_elfheader (abfd)->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_64R6)
     fprintf (file, " [mips64r6]");
   else
     fprintf (file, _(" [unknown ISA]"));
@@ -16306,7 +16554,7 @@ _bfd_mips_elf_print_private_bfd_data (bf
       fputc ('\n', file);
     }
 
-  return TRUE;
+  return true;
 }
 
 const struct bfd_elf_special_section _bfd_mips_elf_special_sections[] =
@@ -16326,33 +16574,33 @@ const struct bfd_elf_special_section _bf
    definiton of the symbol.  */
 void
 _bfd_mips_elf_merge_symbol_attribute (struct elf_link_hash_entry *h,
-				      const Elf_Internal_Sym *isym,
-				      bfd_boolean definition,
-				      bfd_boolean dynamic ATTRIBUTE_UNUSED)
+				      unsigned int st_other,
+				      bool definition,
+				      bool dynamic ATTRIBUTE_UNUSED)
 {
-  if ((isym->st_other & ~ELF_ST_VISIBILITY (-1)) != 0)
+  if ((st_other & ~ELF_ST_VISIBILITY (-1)) != 0)
     {
       unsigned char other;
 
-      other = (definition ? isym->st_other : h->other);
+      other = (definition ? st_other : h->other);
       other &= ~ELF_ST_VISIBILITY (-1);
       h->other = other | ELF_ST_VISIBILITY (h->other);
     }
 
   if (!definition
-      && ELF_MIPS_IS_OPTIONAL (isym->st_other))
+      && ELF_MIPS_IS_OPTIONAL (st_other))
     h->other |= STO_OPTIONAL;
 }
 
 /* Decide whether an undefined symbol is special and can be ignored.
    This is the case for OPTIONAL symbols on IRIX.  */
-bfd_boolean
+bool
 _bfd_mips_elf_ignore_undef_symbol (struct elf_link_hash_entry *h)
 {
-  return ELF_MIPS_IS_OPTIONAL (h->other) ? TRUE : FALSE;
+  return ELF_MIPS_IS_OPTIONAL (h->other) != 0;
 }
 
-bfd_boolean
+bool
 _bfd_mips_elf_common_definition (Elf_Internal_Sym *sym)
 {
   return (sym->st_shndx == SHN_COMMON
@@ -16393,9 +16641,9 @@ _bfd_mips_elf_get_synthetic_symtab (bfd
   static const char m16suffix[] = "@mips16plt";
   static const char mipssuffix[] = "@plt";
 
-  bfd_boolean (*slurp_relocs) (bfd *, asection *, asymbol **, bfd_boolean);
+  bool (*slurp_relocs) (bfd *, asection *, asymbol **, bool);
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
-  bfd_boolean micromips_p = MICROMIPS_P (abfd);
+  bool micromips_p = MICROMIPS_P (abfd);
   Elf_Internal_Shdr *hdr;
   bfd_byte *plt_data;
   bfd_vma plt_offset;
@@ -16431,18 +16679,18 @@ _bfd_mips_elf_get_synthetic_symtab (bfd
     return 0;
 
   plt = bfd_get_section_by_name (abfd, ".plt");
-  if (plt == NULL)
+  if (plt == NULL || (plt->flags & SEC_HAS_CONTENTS) == 0)
     return 0;
 
   slurp_relocs = get_elf_backend_data (abfd)->s->slurp_reloc_table;
-  if (!(*slurp_relocs) (abfd, relplt, dynsyms, TRUE))
+  if (!(*slurp_relocs) (abfd, relplt, dynsyms, true))
     return -1;
   p = relplt->relocation;
 
   /* Calculating the exact amount of space required for symbols would
      require two passes over the PLT, so just pessimise assuming two
      PLT slots per relocation.  */
-  count = relplt->size / hdr->sh_entsize;
+  count = NUM_SHDR_ENTRIES (hdr);
   counti = count * bed->s->int_rels_per_ext_rel;
   size = 2 * count * sizeof (asymbol);
   size += count * (sizeof (mipssuffix) +
@@ -16636,14 +16884,14 @@ enum
   MIPS_LIBC_ABI_MAX
 };
 
-bfd_boolean
+bool
 _bfd_mips_init_file_header (bfd *abfd, struct bfd_link_info *link_info)
 {
   struct mips_elf_link_hash_table *htab = NULL;
   Elf_Internal_Ehdr *i_ehdrp;
 
   if (!_bfd_elf_init_file_header (abfd, link_info))
-    return FALSE;
+    return false;
 
   i_ehdrp = elf_elfheader (abfd);
   if (link_info)
@@ -16652,7 +16900,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
@@ -16667,7 +16917,7 @@ _bfd_mips_init_file_header (bfd *abfd, s
      if it is the only hash section that will be created.  */
   if (link_info && link_info->emit_gnu_hash && !link_info->emit_hash)
     i_ehdrp->e_ident[EI_ABIVERSION] = MIPS_LIBC_ABI_XHASH;
-  return TRUE;
+  return true;
 }
 
 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.20200303/bfd/elfxx-mips.h ./bfd/elfxx-mips.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-mips.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-mips.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* MIPS ELF specific backend routines.
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -22,60 +22,73 @@
 #include "elf/internal.h"
 #include "elf/mips.h"
 
-extern bfd_boolean _bfd_mips_elf_mkobject
+enum reloc_check
+{
+  check_std,
+  check_inplace,
+  check_shuffle
+};
+
+#ifndef MIPS_DEFAULT_R6
+#define MIPS_DEFAULT_R6 0
+#endif
+
+struct ecoff_debug_info;
+
+extern bool _bfd_mips_elf_mkobject
+  (bfd *);
+extern bool _bfd_mips_elf_free_cached_info
   (bfd *);
-extern bfd_boolean _bfd_mips_elf_new_section_hook
+extern bool _bfd_mips_elf_new_section_hook
   (bfd *, asection *);
 extern void _bfd_mips_elf_symbol_processing
   (bfd *, asymbol *);
 extern unsigned int _bfd_mips_elf_eh_frame_address_size
   (bfd *, const asection *);
-extern bfd_boolean _bfd_mips_elf_name_local_section_symbols
+extern bool _bfd_mips_elf_name_local_section_symbols
   (bfd *);
-extern bfd_boolean _bfd_mips_elf_section_processing
+extern bool _bfd_mips_elf_section_processing
   (bfd *, Elf_Internal_Shdr *);
-extern bfd_boolean _bfd_mips_elf_section_from_shdr
+extern bool _bfd_mips_elf_section_from_shdr
   (bfd *, Elf_Internal_Shdr *, const char *, int);
-extern bfd_boolean _bfd_mips_elf_fake_sections
+extern bool _bfd_mips_elf_fake_sections
   (bfd *, Elf_Internal_Shdr *, asection *);
-extern bfd_boolean _bfd_mips_elf_section_from_bfd_section
+extern bool _bfd_mips_elf_section_from_bfd_section
   (bfd *, asection *, int *);
-extern bfd_boolean _bfd_mips_elf_add_symbol_hook
+extern bool _bfd_mips_elf_add_symbol_hook
   (bfd *, struct bfd_link_info *, Elf_Internal_Sym *,
    const char **, flagword *, asection **, bfd_vma *);
 extern int _bfd_mips_elf_link_output_symbol_hook
   (struct bfd_link_info *, const char *, Elf_Internal_Sym *,
    asection *, struct elf_link_hash_entry *);
-extern bfd_boolean _bfd_mips_elf_create_dynamic_sections
+extern bool _bfd_mips_elf_create_dynamic_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_mips_elf_check_relocs
+extern bool _bfd_mips_elf_check_relocs
   (bfd *, struct bfd_link_info *, asection *, const Elf_Internal_Rela *);
-extern bfd_boolean _bfd_mips_elf_adjust_dynamic_symbol
+extern bool _bfd_mips_elf_adjust_dynamic_symbol
   (struct bfd_link_info *, struct elf_link_hash_entry *);
-extern bfd_boolean _bfd_mips_elf_always_size_sections
-  (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_mips_elf_size_dynamic_sections
+extern bool _bfd_mips_elf_late_size_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_mips_elf_relocate_section
+extern int _bfd_mips_elf_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    Elf_Internal_Rela *, Elf_Internal_Sym *, asection **);
-extern bfd_boolean _bfd_mips_elf_finish_dynamic_symbol
+extern bool _bfd_mips_elf_finish_dynamic_symbol
   (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
    Elf_Internal_Sym *);
-extern bfd_boolean _bfd_mips_vxworks_finish_dynamic_symbol
+extern bool _bfd_mips_vxworks_finish_dynamic_symbol
   (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
    Elf_Internal_Sym *);
-extern bfd_boolean _bfd_mips_elf_finish_dynamic_sections
+extern bool _bfd_mips_elf_finish_dynamic_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_mips_elf_sort_relocs_p
+extern bool _bfd_mips_elf_sort_relocs_p
   (asection *);
 extern void _bfd_mips_final_write_processing
   (bfd *);
-extern bfd_boolean _bfd_mips_elf_final_write_processing
+extern bool _bfd_mips_elf_final_write_processing
   (bfd *);
 extern int _bfd_mips_elf_additional_program_headers
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_mips_elf_modify_segment_map
+extern bool _bfd_mips_elf_modify_segment_map
   (bfd *, struct bfd_link_info *);
 extern asection * _bfd_mips_elf_gc_mark_hook
   (asection *, struct bfd_link_info *, Elf_Internal_Rela *,
@@ -84,51 +97,55 @@ extern void _bfd_mips_elf_copy_indirect_
   (struct bfd_link_info *, struct elf_link_hash_entry *,
    struct elf_link_hash_entry *);
 extern void _bfd_mips_elf_hide_symbol
-  (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean);
-extern bfd_boolean _bfd_mips_elf_ignore_discarded_relocs
+  (struct bfd_link_info *, struct elf_link_hash_entry *, bool);
+extern bool _bfd_mips_elf_ignore_discarded_relocs
   (asection *);
-extern bfd_boolean _bfd_mips_elf_is_target_special_symbol
+extern bool _bfd_mips_elf_is_target_special_symbol
   (bfd *abfd, asymbol *sym);
-extern bfd_boolean _bfd_mips_elf_find_nearest_line
+extern bool _bfd_mips_elf_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *);
-extern bfd_boolean _bfd_mips_elf_find_inliner_info
+#define _bfd_mips_elf_find_nearest_line_with_alt \
+  _bfd_nosymbols_find_nearest_line_with_alt
+extern bool _bfd_mips_elf_find_inliner_info
   (bfd *, const char **, const char **, unsigned int *);
-extern bfd_boolean _bfd_mips_elf_set_section_contents
+extern bool _bfd_mips_elf_set_section_contents
   (bfd *, asection *, const void *, file_ptr, bfd_size_type);
 extern bfd_byte *_bfd_elf_mips_get_relocated_section_contents
   (bfd *, struct bfd_link_info *, struct bfd_link_order *,
-   bfd_byte *, bfd_boolean, asymbol **);
-extern bfd_boolean _bfd_mips_elf_relax_section
+   bfd_byte *, bool, asymbol **);
+extern bool _bfd_mips_elf_relax_section
   (bfd *abfd, asection *sec, struct bfd_link_info *link_info,
-   bfd_boolean *again);
+   bool *again);
 extern struct bfd_link_hash_table *_bfd_mips_elf_link_hash_table_create
   (bfd *);
 extern struct bfd_link_hash_table *_bfd_mips_vxworks_link_hash_table_create
   (bfd *);
-extern bfd_boolean _bfd_mips_elf_final_link
+extern bool _bfd_mips_elf_final_link
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_mips_elf_merge_private_bfd_data
+extern bool _bfd_mips_elf_merge_private_bfd_data
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_mips_elf_set_private_flags
+extern bool _bfd_mips_elf_set_private_flags
   (bfd *, flagword);
 extern const char * _bfd_mips_fp_abi_string
   (int);
-extern bfd_boolean _bfd_mips_elf_print_private_bfd_data
+extern bool _bfd_mips_elf_print_private_bfd_data
   (bfd *, void *);
-extern bfd_boolean _bfd_mips_elf_discard_info
+extern bool _bfd_mips_elf_discard_info
   (bfd *, struct elf_reloc_cookie *, struct bfd_link_info *);
-extern bfd_boolean _bfd_mips_elf_write_section
+extern bool _bfd_mips_elf_write_section
   (bfd *, struct bfd_link_info *, asection *, bfd_byte *);
 
-extern bfd_boolean _bfd_mips_elf_read_ecoff_info
+extern bool _bfd_mips_elf_read_ecoff_info
   (bfd *, asection *, struct ecoff_debug_info *);
 extern void _bfd_mips_elf_reloc_unshuffle
-  (bfd *, int, bfd_boolean, bfd_byte *);
+  (bfd *, int, bool, bfd_byte *);
 extern void _bfd_mips_elf_reloc_shuffle
-  (bfd *, int, bfd_boolean, bfd_byte *);
+  (bfd *, int, bool, bfd_byte *);
+extern bool _bfd_mips_reloc_offset_in_range
+  (bfd *, asection *, arelent *, enum reloc_check);
 extern bfd_reloc_status_type _bfd_mips_elf_gprel16_with_gp
-  (bfd *, asymbol *, arelent *, asection *, bfd_boolean, void *, bfd_vma);
+  (bfd *, asymbol *, arelent *, asection *, bool, void *, bfd_vma);
 extern bfd_reloc_status_type _bfd_mips_elf32_gprel16_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 extern bfd_reloc_status_type _bfd_mips_elf_hi16_reloc
@@ -144,31 +161,31 @@ extern unsigned long _bfd_elf_mips_mach
 extern bfd_vma _bfd_mips_elf_sign_extend
   (bfd_vma, int);
 extern void _bfd_mips_elf_merge_symbol_attribute
-  (struct elf_link_hash_entry *, const Elf_Internal_Sym *, bfd_boolean, bfd_boolean);
+  (struct elf_link_hash_entry *, unsigned int, bool, bool);
 extern char *_bfd_mips_elf_get_target_dtag (bfd_vma);
-extern bfd_boolean _bfd_mips_elf_ignore_undef_symbol
+extern bool _bfd_mips_elf_ignore_undef_symbol
   (struct elf_link_hash_entry *);
 extern void _bfd_mips_elf_use_plts_and_copy_relocs
   (struct bfd_link_info *);
 extern void _bfd_mips_elf_linker_flags
-  (struct bfd_link_info *, bfd_boolean, bfd_boolean, bfd_boolean);
+  (struct bfd_link_info *, bool, bool, bool);
 extern void _bfd_mips_elf_compact_branches
-  (struct bfd_link_info *, bfd_boolean);
-extern bfd_boolean _bfd_mips_elf_init_stubs
+  (struct bfd_link_info *, bool);
+extern bool _bfd_mips_elf_init_stubs
   (struct bfd_link_info *,
    asection *(*) (const char *, asection *, asection *));
 extern bfd_vma _bfd_mips_elf_plt_sym_val
   (bfd_vma, const asection *, const arelent *rel);
 extern long _bfd_mips_elf_get_synthetic_symtab
   (bfd *, long, asymbol **, long, asymbol **, asymbol **);
-extern bfd_boolean _bfd_mips_elf_gc_mark_extra_sections
+extern bool _bfd_mips_elf_gc_mark_extra_sections
   (struct bfd_link_info *, elf_gc_mark_hook_fn);
-extern bfd_boolean _bfd_mips_init_file_header
+extern bool _bfd_mips_init_file_header
   (bfd *abfd, struct bfd_link_info *link_info);
 
 extern const struct bfd_elf_special_section _bfd_mips_elf_special_sections [];
 
-extern bfd_boolean _bfd_mips_elf_common_definition (Elf_Internal_Sym *);
+extern bool _bfd_mips_elf_common_definition (Elf_Internal_Sym *);
 
 extern int _bfd_mips_elf_compact_eh_encoding (struct bfd_link_info *);
 extern int _bfd_mips_elf_cant_unwind_opcode (struct bfd_link_info *);
@@ -179,7 +196,7 @@ extern void _bfd_mips_elf_record_xhash_s
 /* MIPS ABI flags data access.  For the disassembler.  */
 extern struct elf_internal_abiflags_v0 *bfd_mips_elf_get_abiflags (bfd *);
 
-static inline bfd_boolean
+static inline bool
 gprel16_reloc_p (unsigned int r_type)
 {
   return (r_type == R_MIPS_GPREL16
@@ -188,7 +205,7 @@ gprel16_reloc_p (unsigned int r_type)
 	  || r_type == R_MICROMIPS_GPREL7_S2);
 }
 
-static inline bfd_boolean
+static inline bool
 literal_reloc_p (int r_type)
 {
   return r_type == R_MIPS_LITERAL || r_type == R_MICROMIPS_LITERAL;
@@ -205,4 +222,4 @@ literal_reloc_p (int r_type)
 #define elf_backend_compact_eh_encoding _bfd_mips_elf_compact_eh_encoding
 #define elf_backend_cant_unwind_opcode _bfd_mips_elf_cant_unwind_opcode
 #define elf_backend_record_xhash_symbol _bfd_mips_elf_record_xhash_symbol
-#define elf_backend_always_renumber_dynsyms TRUE
+#define elf_backend_always_renumber_dynsyms 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.20200303/bfd/elfxx-riscv.c ./bfd/elfxx-riscv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-riscv.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-riscv.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* RISC-V-specific support for ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    Contributed by Andrew Waterman (andrew@sifive.com).
    Based on TILE-Gx and MIPS targets.
@@ -38,186 +38,200 @@
    relocations for the debug info.  */
 static bfd_reloc_status_type riscv_elf_add_sub_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
+static bfd_reloc_status_type riscv_elf_ignore_reloc
+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
 
 /* The relocation table used for SHT_RELA sections.  */
 
-static reloc_howto_type howto_table[] =
+static const reloc_howto_type howto_table[] =
 {
   /* No relocation.  */
   HOWTO (R_RISCV_NONE,			/* type */
 	 0,				/* rightshift */
-	 3,				/* size */
+	 0,				/* size */
 	 0,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_NONE",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 0,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* 32 bit relocation.  */
   HOWTO (R_RISCV_32,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_32",			/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   /* 64 bit relocation.  */
   HOWTO (R_RISCV_64,			/* type */
 	 0,				/* rightshift */
-	 4,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_64",			/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* Relocation against a local symbol in a shared object.  */
   HOWTO (R_RISCV_RELATIVE,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_RELATIVE",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   HOWTO (R_RISCV_COPY,			/* type */
 	 0,				/* rightshift */
 	 0,				/* this one is variable size */
 	 0,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_COPY",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 0,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   HOWTO (R_RISCV_JUMP_SLOT,		/* type */
 	 0,				/* rightshift */
-	 4,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_bitfield,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_JUMP_SLOT",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 0,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* Dynamic TLS relocations.  */
   HOWTO (R_RISCV_TLS_DTPMOD32,		/* type */
 	 0,				/* rightshift */
 	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TLS_DTPMOD32",	/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   HOWTO (R_RISCV_TLS_DTPMOD64,		/* type */
 	 0,				/* rightshift */
-	 4,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TLS_DTPMOD64",	/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   HOWTO (R_RISCV_TLS_DTPREL32,		/* type */
 	 0,				/* rightshift */
 	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TLS_DTPREL32",	/* name */
-	 TRUE,				/* partial_inplace */
+	 true,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   HOWTO (R_RISCV_TLS_DTPREL64,		/* type */
 	 0,				/* rightshift */
-	 4,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TLS_DTPREL64",	/* name */
-	 TRUE,				/* partial_inplace */
+	 true,				/* partial_inplace */
 	 0,				/* src_mask */
 	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   HOWTO (R_RISCV_TLS_TPREL32,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TLS_TPREL32",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   HOWTO (R_RISCV_TLS_TPREL64,		/* type */
 	 0,				/* rightshift */
-	 4,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TLS_TPREL64",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 MINUS_ONE,			/* dst_mask */
+	 false),			/* pcrel_offset */
+
+  HOWTO (R_RISCV_TLSDESC,		/* type */
+	 0,				/* rightshift */
+	 0,				/* size is handled by dynamic linker */
+	 0,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_RISCV_TLSDESC",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
-  /* Reserved for future relocs that the dynamic linker must understand.  */
-  EMPTY_HOWTO (12),
   EMPTY_HOWTO (13),
   EMPTY_HOWTO (14),
   EMPTY_HOWTO (15),
@@ -225,640 +239,728 @@ static reloc_howto_type howto_table[] =
   /* 12-bit PC-relative branch offset.  */
   HOWTO (R_RISCV_BRANCH,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_BRANCH",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_SBTYPE_IMM (-1U),	/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 ENCODE_BTYPE_IMM (-1U),	/* dst_mask */
+	 true),				/* pcrel_offset */
 
   /* 20-bit PC-relative jump offset.  */
   HOWTO (R_RISCV_JAL,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_JAL",			/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_UJTYPE_IMM (-1U),	/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 ENCODE_JTYPE_IMM (-1U),	/* dst_mask */
+	 true),				/* pcrel_offset */
 
   /* 32-bit PC-relative function call (AUIPC/JALR).  */
   HOWTO (R_RISCV_CALL,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_CALL",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_UTYPE_IMM (-1U) | ((bfd_vma) ENCODE_ITYPE_IMM (-1U) << 32),
 					/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 true),				/* pcrel_offset */
 
   /* Like R_RISCV_CALL, but not locally binding.  */
   HOWTO (R_RISCV_CALL_PLT,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_CALL_PLT",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_UTYPE_IMM (-1U) | ((bfd_vma) ENCODE_ITYPE_IMM (-1U) << 32),
 					/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 true),				/* pcrel_offset */
 
   /* High 20 bits of 32-bit PC-relative GOT access.  */
   HOWTO (R_RISCV_GOT_HI20,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_GOT_HI20",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_UTYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* High 20 bits of 32-bit PC-relative TLS IE GOT access.  */
   HOWTO (R_RISCV_TLS_GOT_HI20,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TLS_GOT_HI20",	/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_UTYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* High 20 bits of 32-bit PC-relative TLS GD GOT reference.  */
   HOWTO (R_RISCV_TLS_GD_HI20,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TLS_GD_HI20",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_UTYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* High 20 bits of 32-bit PC-relative reference.  */
   HOWTO (R_RISCV_PCREL_HI20,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_PCREL_HI20",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_UTYPE_IMM (-1U),	/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 true),				/* pcrel_offset */
 
   /* Low 12 bits of a 32-bit PC-relative load or add.  */
   HOWTO (R_RISCV_PCREL_LO12_I,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_PCREL_LO12_I",	/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* Low 12 bits of a 32-bit PC-relative store.  */
   HOWTO (R_RISCV_PCREL_LO12_S,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_PCREL_LO12_S",	/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_STYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* High 20 bits of 32-bit absolute address.  */
   HOWTO (R_RISCV_HI20,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_HI20",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_UTYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* High 12 bits of 32-bit load or add.  */
   HOWTO (R_RISCV_LO12_I,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_LO12_I",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* High 12 bits of 32-bit store.  */
   HOWTO (R_RISCV_LO12_S,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_LO12_S",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_STYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* High 20 bits of TLS LE thread pointer offset.  */
   HOWTO (R_RISCV_TPREL_HI20,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TPREL_HI20",		/* name */
-	 TRUE,				/* partial_inplace */
+	 true,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_UTYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* Low 12 bits of TLS LE thread pointer offset for loads and adds.  */
   HOWTO (R_RISCV_TPREL_LO12_I,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TPREL_LO12_I",	/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* Low 12 bits of TLS LE thread pointer offset for stores.  */
   HOWTO (R_RISCV_TPREL_LO12_S,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TPREL_LO12_S",	/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 ENCODE_STYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* TLS LE thread pointer usage.  May be relaxed.  */
   HOWTO (R_RISCV_TPREL_ADD,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
-	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 0,				/* size */
+	 0,				/* bitsize */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_TPREL_ADD",		/* name */
-	 TRUE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 0,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* 8-bit in-place addition, for local label subtraction.  */
   HOWTO (R_RISCV_ADD8,			/* type */
 	 0,				/* rightshift */
-	 0,				/* size */
+	 1,				/* size */
 	 8,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 riscv_elf_add_sub_reloc,	/* special_function */
 	 "R_RISCV_ADD8",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xff,				/* dst_mask */
+	 false),			/* pcrel_offset */
 
   /* 16-bit in-place addition, for local label subtraction.  */
   HOWTO (R_RISCV_ADD16,			/* type */
 	 0,				/* rightshift */
-	 1,				/* size */
+	 2,				/* size */
 	 16,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 riscv_elf_add_sub_reloc,	/* special_function */
 	 "R_RISCV_ADD16",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   /* 32-bit in-place addition, for local label subtraction.  */
   HOWTO (R_RISCV_ADD32,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 riscv_elf_add_sub_reloc,	/* special_function */
 	 "R_RISCV_ADD32",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   /* 64-bit in-place addition, for local label subtraction.  */
   HOWTO (R_RISCV_ADD64,			/* type */
 	 0,				/* rightshift */
-	 4,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 riscv_elf_add_sub_reloc,	/* special_function */
 	 "R_RISCV_ADD64",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* 8-bit in-place addition, for local label subtraction.  */
   HOWTO (R_RISCV_SUB8,			/* type */
 	 0,				/* rightshift */
-	 0,				/* size */
+	 1,				/* size */
 	 8,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 riscv_elf_add_sub_reloc,	/* special_function */
 	 "R_RISCV_SUB8",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xff,				/* dst_mask */
+	 false),			/* pcrel_offset */
 
   /* 16-bit in-place addition, for local label subtraction.  */
   HOWTO (R_RISCV_SUB16,			/* type */
 	 0,				/* rightshift */
-	 1,				/* size */
+	 2,				/* size */
 	 16,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 riscv_elf_add_sub_reloc,	/* special_function */
 	 "R_RISCV_SUB16",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   /* 32-bit in-place addition, for local label subtraction.  */
   HOWTO (R_RISCV_SUB32,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 riscv_elf_add_sub_reloc,	/* special_function */
 	 "R_RISCV_SUB32",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
   /* 64-bit in-place addition, for local label subtraction.  */
   HOWTO (R_RISCV_SUB64,			/* type */
 	 0,				/* rightshift */
-	 4,				/* size */
+	 8,				/* size */
 	 64,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 riscv_elf_add_sub_reloc,	/* special_function */
 	 "R_RISCV_SUB64",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
-  /* GNU extension to record C++ vtable hierarchy */
-  HOWTO (R_RISCV_GNU_VTINHERIT,		/* type */
-	 0,				/* rightshift */
-	 4,				/* size */
-	 0,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 NULL,				/* special_function */
-	 "R_RISCV_GNU_VTINHERIT",	/* name */
-	 FALSE,				/* partial_inplace */
-	 0,				/* src_mask */
-	 0,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
-
-  /* GNU extension to record C++ vtable member usage */
-  HOWTO (R_RISCV_GNU_VTENTRY,		/* type */
-	 0,				/* rightshift */
-	 4,				/* size */
-	 0,				/* bitsize */
-	 FALSE,				/* pc_relative */
-	 0,				/* bitpos */
-	 complain_overflow_dont,	/* complain_on_overflow */
-	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
-	 "R_RISCV_GNU_VTENTRY",		/* name */
-	 FALSE,				/* partial_inplace */
-	 0,				/* src_mask */
-	 0,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+  EMPTY_HOWTO (41),
+  EMPTY_HOWTO (42),
 
   /* Indicates an alignment statement.  The addend field encodes how many
      bytes of NOPs follow the statement.  The desired alignment is the
      addend rounded up to the next power of two.  */
   HOWTO (R_RISCV_ALIGN,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 0,				/* size */
 	 0,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_ALIGN",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 0,				/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
   /* 8-bit PC-relative branch offset.  */
   HOWTO (R_RISCV_RVC_BRANCH,		/* type */
 	 0,				/* rightshift */
 	 2,				/* size */
-	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 16,				/* bitsize */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_signed,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_RVC_BRANCH",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_RVC_B_IMM (-1U),	/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 ENCODE_CBTYPE_IMM (-1U),	/* dst_mask */
+	 true),				/* pcrel_offset */
 
   /* 11-bit PC-relative jump offset.  */
   HOWTO (R_RISCV_RVC_JUMP,		/* type */
 	 0,				/* rightshift */
 	 2,				/* size */
-	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 16,				/* bitsize */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
 	 "R_RISCV_RVC_JUMP",		/* name */
-	 FALSE,				/* partial_inplace */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_RVC_J_IMM (-1U),	/* dst_mask */
-	 TRUE),				/* pcrel_offset */
+	 ENCODE_CJTYPE_IMM (-1U),	/* dst_mask */
+	 true),				/* pcrel_offset */
 
-  /* High 6 bits of 18-bit absolute address.  */
-  HOWTO (R_RISCV_RVC_LUI,		/* type */
+  EMPTY_HOWTO (46),
+  EMPTY_HOWTO (47),
+  EMPTY_HOWTO (48),
+  EMPTY_HOWTO (49),
+  EMPTY_HOWTO (50),
+
+  /* The paired relocation may be relaxed.  */
+  HOWTO (R_RISCV_RELAX,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
-	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 0,				/* size */
+	 0,				/* bitsize */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_RVC_LUI",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_RELAX",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_RVC_IMM (-1U),		/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0,				/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* GP-relative load.  */
-  HOWTO (R_RISCV_GPREL_I,		/* type */
+  /* 6-bit in-place addition, for local label subtraction.  */
+  HOWTO (R_RISCV_SUB6,			/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
-	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 1,				/* size */
+	 8,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 riscv_elf_add_sub_reloc,	/* special_function */
+	 "R_RISCV_SUB6",		/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0x3f,				/* dst_mask */
+	 false),			/* pcrel_offset */
+
+  /* 6-bit in-place setting, for local label subtraction.  */
+  HOWTO (R_RISCV_SET6,			/* type */
+	 0,				/* rightshift */
+	 1,				/* size */
+	 8,				/* bitsize */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_GPREL_I",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_SET6",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0x3f,				/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* GP-relative store.  */
-  HOWTO (R_RISCV_GPREL_S,		/* type */
+  /* 8-bit in-place setting, for local label subtraction.  */
+  HOWTO (R_RISCV_SET8,			/* type */
+	 0,				/* rightshift */
+	 1,				/* size */
+	 8,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_RISCV_SET8",		/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0xff,				/* dst_mask */
+	 false),			/* pcrel_offset */
+
+  /* 16-bit in-place setting, for local label subtraction.  */
+  HOWTO (R_RISCV_SET16,			/* type */
 	 0,				/* rightshift */
 	 2,				/* size */
+	 16,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_RISCV_SET16",		/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 0xffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
+
+  /* 32-bit in-place setting, for local label subtraction.  */
+  HOWTO (R_RISCV_SET32,			/* type */
+	 0,				/* rightshift */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_GPREL_S",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_SET32",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_STYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* TP-relative TLS LE load.  */
-  HOWTO (R_RISCV_TPREL_I,		/* type */
+  /* 32-bit PC relative.  */
+  HOWTO (R_RISCV_32_PCREL,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
-	 complain_overflow_signed,	/* complain_on_overflow */
+	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_TPREL_I",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_32_PCREL",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* TP-relative TLS LE store.  */
-  HOWTO (R_RISCV_TPREL_S,		/* type */
+  /* Relocation against a local ifunc symbol in a shared object.  */
+  HOWTO (R_RISCV_IRELATIVE,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
-	 complain_overflow_signed,	/* complain_on_overflow */
+	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_TPREL_S",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_IRELATIVE",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 ENCODE_STYPE_IMM (-1U),	/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0xffffffff,			/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* The paired relocation may be relaxed.  */
-  HOWTO (R_RISCV_RELAX,			/* type */
+  /* Reserved for R_RISCV_PLT32.  */
+  EMPTY_HOWTO (59),
+
+  /* N-bit in-place setting, for unsigned-leb128 local label subtraction.  */
+  HOWTO (R_RISCV_SET_ULEB128,		/* type */
 	 0,				/* rightshift */
-	 3,				/* size */
+	 0,				/* size */
 	 0,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
-	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_RELAX",		/* name */
-	 FALSE,				/* partial_inplace */
+	 riscv_elf_ignore_reloc,	/* special_function */
+	 "R_RISCV_SET_ULEB128",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
 	 0,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 false),			/* pcrel_offset */
 
-  /* 6-bit in-place addition, for local label subtraction.  */
-  HOWTO (R_RISCV_SUB6,			/* type */
+  /* N-bit in-place addition, for unsigned-leb128 local label subtraction.  */
+  HOWTO (R_RISCV_SUB_ULEB128,		/* type */
 	 0,				/* rightshift */
 	 0,				/* size */
-	 8,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 0,				/* bitsize */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
-	 riscv_elf_add_sub_reloc,	/* special_function */
-	 "R_RISCV_SUB6",		/* name */
-	 FALSE,				/* partial_inplace */
+	 riscv_elf_ignore_reloc,	/* special_function */
+	 "R_RISCV_SUB_ULEB128",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 0x3f,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 0,				/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* 6-bit in-place setting, for local label subtraction.  */
-  HOWTO (R_RISCV_SET6,			/* type */
+  HOWTO (R_RISCV_TLSDESC_HI20,		/* type */
 	 0,				/* rightshift */
-	 0,				/* size */
-	 8,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 4,				/* size */
+	 32,				/* bitsize */
+	 true,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_SET6",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_TLSDESC_HI20",	/* name */
+	 true,				/* partial_inplace */
 	 0,				/* src_mask */
-	 0x3f,				/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 ENCODE_UTYPE_IMM (-1U),	/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* 8-bit in-place setting, for local label subtraction.  */
-  HOWTO (R_RISCV_SET8,			/* type */
+  HOWTO (R_RISCV_TLSDESC_LOAD_LO12,	/* type */
+	 0,				/* rightshift */
+	 4,				/* size */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_RISCV_TLSDESC_LOAD_LO12",	/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
+	 false),			/* pcrel_offset */
+
+  HOWTO (R_RISCV_TLSDESC_ADD_LO12,	/* type */
+	 0,				/* rightshift */
+	 4,				/* size */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_dont,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_RISCV_TLSDESC_ADD_LO12",	/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
+	 false), 			/* pcrel_offset */
+
+  HOWTO (R_RISCV_TLSDESC_CALL,		/* type */
 	 0,				/* rightshift */
 	 0,				/* size */
-	 8,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 0,				/* bitsize */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_SET8",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_TLSDESC_CALL",	/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
+	 false) 			/* pcrel_offset */
+};
 
-  /* 16-bit in-place setting, for local label subtraction.  */
-  HOWTO (R_RISCV_SET16,			/* type */
+static const reloc_howto_type howto_table_internal[] =
+{
+  /* R_RISCV_DELETE.  */
+  EMPTY_HOWTO (0),
+
+  /* High 6 bits of 18-bit absolute address.  */
+  HOWTO (R_RISCV_RVC_LUI,		/* type */
 	 0,				/* rightshift */
-	 1,				/* size */
+	 2,				/* size */
 	 16,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_SET16",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_RVC_LUI",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 ENCODE_CITYPE_IMM (-1U),	/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* 32-bit in-place setting, for local label subtraction.  */
-  HOWTO (R_RISCV_SET32,			/* type */
+  /* GP-relative load.  */
+  HOWTO (R_RISCV_GPREL_I,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 FALSE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_SET32",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_GPREL_I",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
+	 false),			/* pcrel_offset */
 
-  /* 32-bit PC relative.  */
-  HOWTO (R_RISCV_32_PCREL,		/* type */
+  /* GP-relative store.  */
+  HOWTO (R_RISCV_GPREL_S,		/* type */
 	 0,				/* rightshift */
-	 2,				/* size */
+	 4,				/* size */
 	 32,				/* bitsize */
-	 TRUE,				/* pc_relative */
+	 false,				/* pc_relative */
 	 0,				/* bitpos */
 	 complain_overflow_dont,	/* complain_on_overflow */
 	 bfd_elf_generic_reloc,		/* special_function */
-	 "R_RISCV_32_PCREL",		/* name */
-	 FALSE,				/* partial_inplace */
+	 "R_RISCV_GPREL_S",		/* name */
+	 false,				/* partial_inplace */
 	 0,				/* src_mask */
-	 MINUS_ONE,			/* dst_mask */
-	 FALSE),			/* pcrel_offset */
+	 ENCODE_STYPE_IMM (-1U),	/* dst_mask */
+	 false),			/* pcrel_offset */
+
+  /* TP-relative TLS LE load.  */
+  HOWTO (R_RISCV_TPREL_I,		/* type */
+	 0,				/* rightshift */
+	 4,				/* size */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_RISCV_TPREL_I",		/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 ENCODE_ITYPE_IMM (-1U),	/* dst_mask */
+	 false),			/* pcrel_offset */
+
+  /* TP-relative TLS LE store.  */
+  HOWTO (R_RISCV_TPREL_S,		/* type */
+	 0,				/* rightshift */
+	 4,				/* size */
+	 32,				/* bitsize */
+	 false,				/* pc_relative */
+	 0,				/* bitpos */
+	 complain_overflow_signed,	/* complain_on_overflow */
+	 bfd_elf_generic_reloc,		/* special_function */
+	 "R_RISCV_TPREL_S",		/* name */
+	 false,				/* partial_inplace */
+	 0,				/* src_mask */
+	 ENCODE_STYPE_IMM (-1U),	/* dst_mask */
+	 false),			/* pcrel_offset */
 };
 
 /* A mapping from BFD reloc types to RISC-V ELF reloc types.  */
-
 struct elf_reloc_map
 {
   bfd_reloc_code_real_type bfd_val;
@@ -902,14 +1004,13 @@ static const struct elf_reloc_map riscv_
   { BFD_RELOC_RISCV_TPREL_LO12_I, R_RISCV_TPREL_LO12_I },
   { BFD_RELOC_RISCV_TLS_GOT_HI20, R_RISCV_TLS_GOT_HI20 },
   { BFD_RELOC_RISCV_TLS_GD_HI20, R_RISCV_TLS_GD_HI20 },
+  { BFD_RELOC_RISCV_TLSDESC_HI20, R_RISCV_TLSDESC_HI20 },
+  { BFD_RELOC_RISCV_TLSDESC_LOAD_LO12, R_RISCV_TLSDESC_LOAD_LO12 },
+  { BFD_RELOC_RISCV_TLSDESC_ADD_LO12, R_RISCV_TLSDESC_ADD_LO12 },
+  { BFD_RELOC_RISCV_TLSDESC_CALL, R_RISCV_TLSDESC_CALL },
   { BFD_RELOC_RISCV_ALIGN, R_RISCV_ALIGN },
   { BFD_RELOC_RISCV_RVC_BRANCH, R_RISCV_RVC_BRANCH },
   { BFD_RELOC_RISCV_RVC_JUMP, R_RISCV_RVC_JUMP },
-  { BFD_RELOC_RISCV_RVC_LUI, R_RISCV_RVC_LUI },
-  { BFD_RELOC_RISCV_GPREL_I, R_RISCV_GPREL_I },
-  { BFD_RELOC_RISCV_GPREL_S, R_RISCV_GPREL_S },
-  { BFD_RELOC_RISCV_TPREL_I, R_RISCV_TPREL_I },
-  { BFD_RELOC_RISCV_TPREL_S, R_RISCV_TPREL_S },
   { BFD_RELOC_RISCV_RELAX, R_RISCV_RELAX },
   { BFD_RELOC_RISCV_SUB6, R_RISCV_SUB6 },
   { BFD_RELOC_RISCV_SET6, R_RISCV_SET6 },
@@ -917,6 +1018,14 @@ static const struct elf_reloc_map riscv_
   { BFD_RELOC_RISCV_SET16, R_RISCV_SET16 },
   { BFD_RELOC_RISCV_SET32, R_RISCV_SET32 },
   { BFD_RELOC_RISCV_32_PCREL, R_RISCV_32_PCREL },
+  { BFD_RELOC_RISCV_SET_ULEB128, R_RISCV_SET_ULEB128 },
+  { BFD_RELOC_RISCV_SUB_ULEB128, R_RISCV_SUB_ULEB128 },
+};
+
+struct riscv_profiles
+{
+  const char *profile_name;
+  const char *profile_string;
 };
 
 /* Given a BFD reloc type, return a howto structure.  */
@@ -950,14 +1059,17 @@ riscv_reloc_name_lookup (bfd *abfd ATTRI
 reloc_howto_type *
 riscv_elf_rtype_to_howto (bfd *abfd, unsigned int r_type)
 {
-  if (r_type >= ARRAY_SIZE (howto_table))
+  if (r_type < ARRAY_SIZE (howto_table))
+    return &howto_table[r_type];
+  else if (r_type < R_RISCV_max + ARRAY_SIZE (howto_table_internal))
+    return &howto_table_internal[r_type - R_RISCV_max];
+  else
     {
       (*_bfd_error_handler) (_("%pB: unsupported relocation type %#x"),
 			     abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
       return NULL;
     }
-  return &howto_table[r_type];
 }
 
 /* Special_function of RISCV_ADD and RISCV_SUB relocations.  */
@@ -987,6 +1099,13 @@ riscv_elf_add_sub_reloc (bfd *abfd,
 
   relocation = symbol->value + symbol->section->output_section->vma
     + symbol->section->output_offset + reloc_entry->addend;
+
+  bfd_size_type octets = reloc_entry->address
+    * bfd_octets_per_byte (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd,
+				  input_section, octets))
+    return bfd_reloc_outofrange;
+
   bfd_vma old_value = bfd_get (howto->bitsize, abfd,
 			       data + reloc_entry->address);
 
@@ -999,6 +1118,10 @@ riscv_elf_add_sub_reloc (bfd *abfd,
       relocation = old_value + relocation;
       break;
     case R_RISCV_SUB6:
+      relocation = (old_value & ~howto->dst_mask)
+		   | (((old_value & howto->dst_mask) - relocation)
+		      & howto->dst_mask);
+      break;
     case R_RISCV_SUB8:
     case R_RISCV_SUB16:
     case R_RISCV_SUB32:
@@ -1011,256 +1134,938 @@ riscv_elf_add_sub_reloc (bfd *abfd,
   return bfd_reloc_ok;
 }
 
-/* Parsing subset version.
+/* Special handler for relocations which don't have to be relocated.
+   This function just simply return bfd_reloc_ok.  */
 
-   Return Value:
-     Points to the end of version
+static bfd_reloc_status_type
+riscv_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;
+}
 
-   Arguments:
-     `rps`: Hooks and status for parsing subset.
-     `march`: Full arch string.
-     `p`: Curent parsing position.
-     `major_version`: Parsing result of major version, using
-      default_major_version if version is not present in arch string.
-     `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.  */
+/* Always add implicit extensions for the SUBSET.  */
 
-static const char *
-riscv_parsing_subset_version (riscv_parse_subset_t *rps,
-			      const char *march,
-			      const char *p,
-			      unsigned *major_version,
-			      unsigned *minor_version,
-			      unsigned default_major_version,
-			      unsigned default_minor_version,
-			      bfd_boolean std_ext_p)
-{
-  bfd_boolean major_p = TRUE;
-  unsigned version = 0;
-  unsigned major = 0;
-  unsigned minor = 0;
-  char np;
+static bool
+check_implicit_always (riscv_parse_subset_t *rps ATTRIBUTE_UNUSED,
+		       const riscv_subset_t *subset ATTRIBUTE_UNUSED)
+{
+  return true;
+}
+
+/* Add implicit extensions only when the version of SUBSET less than 2.1.  */
+
+static bool
+check_implicit_for_i (riscv_parse_subset_t *rps ATTRIBUTE_UNUSED,
+		      const riscv_subset_t *subset ATTRIBUTE_UNUSED)
+{
+  return (subset->major_version < 2
+	  || (subset->major_version == 2
+	      && subset->minor_version < 1));
+}
+
+/* Add the IMPLICIT only when the 'f' extension is also available
+   and XLEN is 32.  */
+
+static bool
+check_implicit_for_zcf (riscv_parse_subset_t *rps,
+			const riscv_subset_t *subset ATTRIBUTE_UNUSED)
+{
+  return (rps != NULL
+	  && rps->xlen != NULL
+	  && *rps->xlen == 32
+	  && riscv_subset_supports (rps, "f"));
+}
+
+/* Add the implicit only when 'd' extension is also available.  */
+
+static bool
+check_implicit_for_zcd (riscv_parse_subset_t *rps,
+			const riscv_subset_t *subset ATTRIBUTE_UNUSED)
+{
+  return (rps != NULL
+	  && riscv_subset_supports (rps, "d"));
+}
+
+/* Record all implicit information for the subsets.  */
+struct riscv_implicit_subset
+{
+  const char *ext;
+  const char *implicit_exts;
+  /* A function to determine if we need to add the implicit subsets.  */
+  bool (*check_func) (riscv_parse_subset_t *,
+		      const riscv_subset_t *);
+};
+/* Please added in order since this table is only run once time.  */
+static const struct riscv_implicit_subset riscv_implicit_subsets[] =
+{
+  {"g", "+i,+m,+a,+f,+d,+zicsr,+zifencei", check_implicit_always},
+  {"e", "+i", check_implicit_always},
+  {"i", "+zicsr,+zifencei", check_implicit_for_i},
+  {"zicntr", "+zicsr", check_implicit_always},
+  {"zihpm", "+zicsr", check_implicit_always},
+
+  {"m", "+zmmul", check_implicit_always},
+
+  {"zabha", "+zaamo", check_implicit_always},
+  {"zacas", "+zaamo", check_implicit_always},
+  {"a", "+zaamo,+zalrsc", check_implicit_always},
+
+  {"xsfvcp", "+zve32x", check_implicit_always},
+  {"xsfvqmaccqoq", "+zve32x,+zvl256b", check_implicit_always},
+  {"xsfvqmaccdod", "+zve32x,+zvl128b", check_implicit_always},
+  {"xsfvfnrclipxfqf", "+zve32f", check_implicit_always},
+
+  {"xtheadvector", "+zicsr", check_implicit_always},
+  {"xtheadzvamo", "+zaamo", check_implicit_always},
+
+  {"v", "+zve64d,+zvl128b", check_implicit_always},
+  {"zvfh", "+zvfhmin,+zfhmin", check_implicit_always},
+  {"zvfhmin", "+zve32f", check_implicit_always},
+  {"zvfbfwma", "+zve32f,+zfbfmin", check_implicit_always},
+  {"zvfbfmin", "+zve32f", check_implicit_always},
+  {"zve64d", "+d,+zve64f", check_implicit_always},
+  {"zve64f", "+zve32f,+zve64x,+zvl64b", check_implicit_always},
+  {"zve32f", "+f,+zve32x,+zvl32b", check_implicit_always},
+  {"zve64x", "+zve32x,+zvl64b", check_implicit_always},
+  {"zve32x", "+zvl32b,+zicsr", check_implicit_always},
+  {"zvl65536b", "+zvl32768b", check_implicit_always},
+  {"zvl32768b", "+zvl16384b", check_implicit_always},
+  {"zvl16384b", "+zvl8192b", check_implicit_always},
+  {"zvl8192b", "+zvl4096b", check_implicit_always},
+  {"zvl4096b", "+zvl2048b", check_implicit_always},
+  {"zvl2048b", "+zvl1024b", check_implicit_always},
+  {"zvl1024b", "+zvl512b", check_implicit_always},
+  {"zvl512b", "+zvl256b", check_implicit_always},
+  {"zvl256b", "+zvl128b", check_implicit_always},
+  {"zvl128b", "+zvl64b", check_implicit_always},
+  {"zvl64b", "+zvl32b", check_implicit_always},
+
+  {"zicfilp", "+zicsr", check_implicit_always},
+  {"zicfiss", "+zimop,+zicsr", check_implicit_always},
+  {"zclsd", "+zca,+zilsd", check_implicit_always},
+
+  {"sha", "+h,+ssstateen,+shcounterenw,+shvstvala,+shtvala,+shvstvecd,+shvsatpa,+shgatpa", check_implicit_always},
+
+  {"shcounterenw", "+h", check_implicit_always},
+  {"shgatpa", "+h", check_implicit_always},
+  {"shtvala", "+h", check_implicit_always},
+  {"shvsatpa", "+h", check_implicit_always},
+  {"shvstvala", "+h", check_implicit_always},
+  {"shvstvecd", "+h", check_implicit_always},
+  {"h", "+zicsr", check_implicit_always},
+  {"zhinx", "+zhinxmin", check_implicit_always},
+  {"zhinxmin", "+zfinx", check_implicit_always},
+
+  {"zcd", "+d,+zca", check_implicit_always},
+  {"zcf", "+f,+zca", check_implicit_always},
+
+  {"q", "+d", check_implicit_always},
+  {"zqinx", "+zdinx", check_implicit_always},
+
+  {"d", "+f", check_implicit_always},
+  {"zdinx", "+zfinx", check_implicit_always},
+
+  {"zfa", "+f", check_implicit_always},
+  {"zfbfmin", "+zfhmin", check_implicit_always},
+  {"zfh", "+zfhmin", check_implicit_always},
+  {"zfhmin", "+f", check_implicit_always},
+  {"zfinx", "+zicsr", check_implicit_always},
+  {"f", "+zicsr", check_implicit_always},
+
+  {"zce", "+zcb,+zcmp,+zcmt", check_implicit_always},
+  {"zce", "+zcf", check_implicit_for_zcf},
+  {"zcb", "+zca", check_implicit_always},
+  {"zcmp", "+zca", check_implicit_always},
+  {"zcmop", "+zca", check_implicit_always},
+  {"zcmt", "+zca,+zicsr", check_implicit_always},
+  {"c", "+zcf", check_implicit_for_zcf},
+  {"c", "+zcd", check_implicit_for_zcd},
+  {"c", "+zca", check_implicit_always},
+
+  {"b", "+zba,+zbb,+zbs", check_implicit_always},
+
+  {"zk", "+zkn,+zkr,+zkt", check_implicit_always},
+  {"zkn", "+zbkb,+zbkc,+zbkx,+zkne,+zknd,+zknh", check_implicit_always},
+  {"zks", "+zbkb,+zbkc,+zbkx,+zksed,+zksh", check_implicit_always},
+  {"zvbb", "+zvkb", check_implicit_always},
+  {"zvkng", "+zvkn,+zvkg", check_implicit_always},
+  {"zvknc", "+zvkn,+zvbc", check_implicit_always},
+  {"zvkn", "+zvkned,+zvknhb,+zvkb,+zvkt", check_implicit_always},
+  {"zvksg", "+zvks,+zvkg", check_implicit_always},
+  {"zvksc", "+zvks,+zvbc", check_implicit_always},
+  {"zvks", "+zvksed,+zvksh,+zvkb,+zvkt", check_implicit_always},
+
+  {"smaia", "+ssaia", check_implicit_always},
+  {"smcdeleg", "+ssccfg", check_implicit_always},
+  {"smcsrind", "+sscsrind", check_implicit_always},
+  {"smcntrpmf", "+zicsr", check_implicit_always},
+  {"smctr", "+zicsr", check_implicit_always},
+  {"smrnmi", "+zicsr", check_implicit_always},
+  {"smstateen", "+ssstateen", check_implicit_always},
+  {"smepmp", "+zicsr", check_implicit_always},
+  {"smdbltrp", "+zicsr", check_implicit_always},
+  {"smnpm", "+zicsr", check_implicit_always},
+  {"smmpm", "+zicsr", check_implicit_always},
+
+  {"ssaia", "+zicsr", check_implicit_always},
+  {"ssccfg", "+sscsrind", check_implicit_always},
+  {"sscsrind", "+zicsr", check_implicit_always},
+  {"sscofpmf", "+zicsr", check_implicit_always},
+  {"sscounterenw", "+zicsr", check_implicit_always},
+  {"ssctr", "+zicsr", check_implicit_always},
+  {"ssstateen", "+zicsr", check_implicit_always},
+  {"sstc", "+zicsr", check_implicit_always},
+  {"sstvala", "+zicsr", check_implicit_always},
+  {"sstvecd", "+zicsr", check_implicit_always},
+  {"ssu64xl", "+zicsr", check_implicit_always},
+  {"ssdbltrp", "+zicsr", check_implicit_always},
+  {"ssnpm", "+zicsr", check_implicit_always},
+
+  {"svade", "+zicsr", check_implicit_always},
+  {"svadu", "+zicsr", check_implicit_always},
+  {"svbare", "+zicsr", check_implicit_always},
+  {NULL, NULL, NULL}
+};
+
+/* This table records the mapping form RISC-V Profiles into march string.  */
+static const struct riscv_profiles riscv_profiles_table[] =
+{
+  /* RVI20U only contains the base extension 'i' as mandatory extension.  */
+  {"rvi20u64", "rv64i"},
+  {"rvi20u32", "rv32i"},
+
+  /* RVA20U contains the 'i,m,a,f,d,c,zicsr,zicntr,ziccif,ziccrse,ziccamoa,
+     zicclsm,za128rs' as mandatory extensions.  */
+  {"rva20u64", "rv64imafdc_zicsr_zicntr_ziccif_ziccrse_ziccamoa"
+   "_zicclsm_za128rs"},
+
+  /* RVA22U contains the 'i,m,a,f,d,c,zicsr,zihintpause,zba,zbb,zbs,zicntr,
+     zihpm,ziccif,ziccrse,ziccamoa, zicclsm,zic64b,za64rs,zicbom,zicbop,zicboz,
+     zfhmin,zkt' as mandatory extensions.  */
+  {"rva22u64", "rv64imafdc_zicsr_zicntr_ziccif_ziccrse_ziccamoa"
+   "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop"
+   "_zicboz_zfhmin_zkt"},
+
+  /* RVA23 contains all mandatory base ISA for RVA22U64 and the new extension
+     'v,zihintntl,zvfhmin,zvbb,zvkt,zicond,zimop,zcmop,zfa,zawrs' as mandatory
+     extensions.  */
+  {"rva23u64", "rv64imafdcbv_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa"
+   "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop"
+   "_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl_zicond_zimop_zcmop_zcb"
+   "_zfa_zawrs_supm"},
+
+  /* RVA23S contains all mandatory base ISA for RVA23U64 and the privileged
+     extensions as mandatory extensions.  */
+  {"rva23s64", "rv64imafdcbv_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa"
+   "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop"
+   "_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl_zicond_zimop_zcmop_zcb"
+   "_zfa_zawrs_supm_svbare_svade_ssccptr_sstvecd_sstvala_sscounterenw_svpbmt"
+   "_svinval_svnapot_sstc_sscofpmf_ssnpm_ssu64xl_sha"},
+
+  /* RVB23 contains all mandatory base ISA for RVA22U64 and the new extension
+     'zihintntl,zicond,zimop,zcmop,zfa,zawrs' as mandatory
+     extensions.  */
+  {"rvb23u64", "rv64imafdcb_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa"
+   "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop"
+   "_zicboz_zfhmin_zkt_zihintntl_zicond_zimop_zcmop_zcb"
+   "_zfa_zawrs_supm"},
+
+  /* RVB23S contains all mandatory base ISA for RVB23U64 and the privileged
+     extensions as mandatory extensions.  */
+  {"rvb23s64", "rv64imafdcb_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa"
+   "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop"
+   "_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl_zicond_zimop_zcmop_zcb"
+   "_zfa_zawrs_supm_svbare_svade_ssccptr_sstvecd_sstvala_sscounterenw_svpbmt"
+   "_svinval_svnapot_sstc_sscofpmf_ssu64xl"},
+
+  /* Terminate the list.  */
+  {NULL, NULL}
+};
+
+/* For default_enable field, decide if the extension should
+   be enbaled by default.  */
+
+#define EXT_DEFAULT   0x1
+
+/* List all extensions that binutils should know about.  */
+
+struct riscv_supported_ext
+{
+  const char *name;
+  enum riscv_spec_class isa_spec_class;
+  int major_version;
+  int minor_version;
+  unsigned long default_enable;
+};
+
+/* The standard extensions must be added in canonical order.  */
+
+static const struct riscv_supported_ext riscv_supported_std_ext[] =
+{
+  {"e",		ISA_SPEC_CLASS_20191213,	1, 9, 0 },
+  {"e",		ISA_SPEC_CLASS_20190608,	1, 9, 0 },
+  {"e",		ISA_SPEC_CLASS_2P2,		1, 9, 0 },
+  {"i",		ISA_SPEC_CLASS_20191213,	2, 1, 0 },
+  {"i",		ISA_SPEC_CLASS_20190608,	2, 1, 0 },
+  {"i",		ISA_SPEC_CLASS_2P2,		2, 0, 0 },
+  /* The g is a special case which we don't want to output it,
+     but still need it when adding implicit extensions.  */
+  {"g",		ISA_SPEC_CLASS_NONE, RISCV_UNKNOWN_VERSION, RISCV_UNKNOWN_VERSION, EXT_DEFAULT },
+  {"m",		ISA_SPEC_CLASS_20191213,	2, 0, 0 },
+  {"m",		ISA_SPEC_CLASS_20190608,	2, 0, 0 },
+  {"m",		ISA_SPEC_CLASS_2P2,		2, 0, 0 },
+  {"a",		ISA_SPEC_CLASS_20191213,	2, 1, 0 },
+  {"a",		ISA_SPEC_CLASS_20190608,	2, 0, 0 },
+  {"a",		ISA_SPEC_CLASS_2P2,		2, 0, 0 },
+  {"f",		ISA_SPEC_CLASS_20191213,	2, 2, 0 },
+  {"f",		ISA_SPEC_CLASS_20190608,	2, 2, 0 },
+  {"f",		ISA_SPEC_CLASS_2P2,		2, 0, 0 },
+  {"d",		ISA_SPEC_CLASS_20191213,	2, 2, 0 },
+  {"d",		ISA_SPEC_CLASS_20190608,	2, 2, 0 },
+  {"d",		ISA_SPEC_CLASS_2P2,		2, 0, 0 },
+  {"q",		ISA_SPEC_CLASS_20191213,	2, 2, 0 },
+  {"q",		ISA_SPEC_CLASS_20190608,	2, 2, 0 },
+  {"q",		ISA_SPEC_CLASS_2P2,		2, 0, 0 },
+  {"c",		ISA_SPEC_CLASS_20191213,	2, 0, 0 },
+  {"c",		ISA_SPEC_CLASS_20190608,	2, 0, 0 },
+  {"c",		ISA_SPEC_CLASS_2P2,		2, 0, 0 },
+  {"b",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"v",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"h",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {NULL, 0, 0, 0, 0}
+};
+
+static const struct riscv_supported_ext riscv_supported_std_z_ext[] =
+{
+  {"zic64b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"ziccamoa",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"ziccif",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zicclsm",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"ziccrse",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zicbom",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zicbop",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zicboz",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zicond",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zicntr",		ISA_SPEC_CLASS_DRAFT,		2, 0,  0 },
+  {"zicsr",		ISA_SPEC_CLASS_20191213,	2, 0,  0 },
+  {"zicsr",		ISA_SPEC_CLASS_20190608,	2, 0,  0 },
+  {"zifencei",		ISA_SPEC_CLASS_20191213,	2, 0,  0 },
+  {"zifencei",		ISA_SPEC_CLASS_20190608,	2, 0,  0 },
+  {"zihintntl",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zihintpause",	ISA_SPEC_CLASS_DRAFT,		2, 0,  0 },
+  {"zihpm",		ISA_SPEC_CLASS_DRAFT,		2, 0,  0 },
+  {"zimop",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zicfiss",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zicfilp",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zilsd",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zmmul",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"za64rs",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"za128rs",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zaamo",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zabha",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zacas",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zalrsc",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zawrs",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zfbfmin",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zfa",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zfh",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zfhmin",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zfinx",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zdinx",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zqinx",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zhinx",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zhinxmin",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zbb",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zba",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zbc",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zbs",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zbkb",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zbkc",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zbkx",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zk",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zkn",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zknd",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zkne",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zknh",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zkr",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zks",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zksed",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zksh",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zkt",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zve32x",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zve32f",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zve64x",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zve64f",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zve64d",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvbb",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvbc",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvfbfmin",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvfbfwma",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvfh",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvfhmin",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvkb",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvkg",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvkn",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvkng",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvknc",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvkned",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvknha",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvknhb",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvksed",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvksh",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvks",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvksg",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvksc",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvkt",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl32b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl64b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl128b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl256b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl512b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl1024b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl2048b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl4096b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl8192b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl16384b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl32768b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zvl65536b",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"ztso",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zca",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcb",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zce",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcf",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcd",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcmop",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcmp",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zcmt",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {"zclsd",		ISA_SPEC_CLASS_DRAFT,		1, 0,  0 },
+  {NULL, 0, 0, 0, 0}
+};
+
+static const struct riscv_supported_ext riscv_supported_std_s_ext[] =
+{
+  {"sha",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"shcounterenw",	ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"shgatpa",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"shtvala",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"shvsatpa",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"shvstvala",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"shvstvecd",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smcdeleg",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smcsrind",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smcntrpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smctr",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smepmp",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smrnmi",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smdbltrp",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssaia",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssccfg",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssccptr",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sscsrind",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sscofpmf",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sscounterenw",	ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssctr",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssstateen",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sstc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sstvala",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sstvecd",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssu64xl",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssdbltrp",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"svade",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"svadu",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"svbare",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"svinval",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"svnapot",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"svpbmt",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"svvptc",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssqosid",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"ssnpm",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smnpm",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"smmpm",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"sspm",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {"supm",		ISA_SPEC_CLASS_DRAFT,		1, 0, 0 },
+  {NULL, 0, 0, 0, 0}
+};
+
+static const struct riscv_supported_ext riscv_supported_std_zxm_ext[] =
+{
+  {NULL, 0, 0, 0, 0}
+};
+
+static const struct riscv_supported_ext riscv_supported_vendor_x_ext[] =
+{
+  {"xcvalu",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xcvbi",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xcvbitmanip",	ISA_SPEC_CLASS_DRAFT,   1, 0, 0 },
+  {"xcvelw",		ISA_SPEC_CLASS_DRAFT,   1, 0, 0 },
+  {"xcvmac",		ISA_SPEC_CLASS_DRAFT,   1, 0, 0 },
+  {"xcvmem",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xcvsimd",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadba",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadbb",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadbs",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadcmo",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadcondmov",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadfmemidx",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadfmv",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadint",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadmac",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadmemidx",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadmempair",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadsync",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadvector",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadvdot",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xtheadzvamo",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xventanacondops",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xsfvcp",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xsfcease",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xsfvqmaccqoq",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0},
+  {"xsfvqmaccdod",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0},
+  {"xsfvfnrclipxfqf",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0},
+  {"xmipscbop",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xmipscmov",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xmipsexectl",	ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {"xmipslsp",		ISA_SPEC_CLASS_DRAFT,	1, 0, 0 },
+  {NULL, 0, 0, 0, 0}
+};
+
+static const struct riscv_supported_ext *riscv_all_supported_ext[] =
+{
+  riscv_supported_std_ext,
+  riscv_supported_std_z_ext,
+  riscv_supported_std_s_ext,
+  riscv_supported_std_zxm_ext,
+  riscv_supported_vendor_x_ext,
+  NULL
+};
+
+/* ISA extension prefixed name class.  Must define them in parsing order.  */
+enum riscv_prefix_ext_class
+{
+  RV_ISA_CLASS_Z = 1,
+  RV_ISA_CLASS_S,
+  RV_ISA_CLASS_ZXM,
+  RV_ISA_CLASS_X,
+  RV_ISA_CLASS_SINGLE
+};
 
-  for (;*p; ++p)
+/* Record the strings of the prefixed extensions, and their corresponding
+   classes.  The more letters of the prefix string, the more forward it must
+   be defined.  Otherwise, the riscv_get_prefix_class will map it to the
+   wrong classes.  */
+struct riscv_parse_prefix_config
+{
+  /* Class of the extension. */
+  enum riscv_prefix_ext_class class;
+
+  /* Prefix string for error printing and internal parser usage.  */
+  const char *prefix;
+};
+static const struct riscv_parse_prefix_config parse_config[] =
+{
+  {RV_ISA_CLASS_ZXM, "zxm"},
+  {RV_ISA_CLASS_Z, "z"},
+  {RV_ISA_CLASS_S, "s"},
+  {RV_ISA_CLASS_X, "x"},
+  {RV_ISA_CLASS_SINGLE, NULL}
+};
+
+/* Get the prefixed name class for the extensions, the class also
+   means the order of the prefixed extensions.  */
+
+static enum riscv_prefix_ext_class
+riscv_get_prefix_class (const char *arch)
+{
+  int i = 0;
+  while (parse_config[i].class != RV_ISA_CLASS_SINGLE)
     {
-      if (*p == 'p')
-	{
-	  np = *(p + 1);
+      if (strncmp (arch, parse_config[i].prefix,
+		   strlen (parse_config[i].prefix)) == 0)
+	return parse_config[i].class;
+      i++;
+    }
+  return RV_ISA_CLASS_SINGLE;
+}
 
-	  if (!ISDIGIT (np))
-	    {
-	      /* Might be beginning of `p` extension.  */
-	      if (std_ext_p)
-		{
-		  *major_version = version;
-		  *minor_version = 0;
-		  return p;
-		}
-	      else
-		{
-		  rps->error_handler ("-march=%s: Expect number after `%dp'.",
-				      march, version);
-		  return NULL;
-		}
-	    }
+/* Check KNOWN_EXTS to see if the EXT is supported.  */
 
-	  major = version;
-	  major_p = FALSE;
-	  version = 0;
+static bool
+riscv_known_prefixed_ext (const char *ext,
+			  const struct riscv_supported_ext *known_exts)
+{
+  size_t i;
+  for (i = 0; known_exts[i].name != NULL; ++i)
+    if (strcmp (ext, known_exts[i].name) == 0)
+      return true;
+  return false;
+}
+
+/* Check whether the prefixed extension is recognized or not.  Return
+   true if recognized, otehrwise return false.  */
+
+static bool
+riscv_recognized_prefixed_ext (const char *ext)
+{
+  enum riscv_prefix_ext_class class = riscv_get_prefix_class (ext);
+  switch (class)
+  {
+  case RV_ISA_CLASS_Z:
+    return riscv_known_prefixed_ext (ext, riscv_supported_std_z_ext);
+  case RV_ISA_CLASS_ZXM:
+    return riscv_known_prefixed_ext (ext, riscv_supported_std_zxm_ext);
+  case RV_ISA_CLASS_S:
+    return riscv_known_prefixed_ext (ext, riscv_supported_std_s_ext);
+  case RV_ISA_CLASS_X:
+    /* Only the single x is unrecognized.  */
+    if (strcmp (ext, "x") != 0)
+      return true;
+  default:
+    break;
+  }
+  return false;
+}
+
+/* Canonical order for single letter extensions.  */
+static const char riscv_ext_canonical_order[] = "eigmafdqlcbkjtpvnh";
+
+/* Array is used to compare the orders of standard extensions quickly.  */
+static int riscv_ext_order[26] = {0};
+
+/* Init the riscv_ext_order array.  */
+
+static void
+riscv_init_ext_order (void)
+{
+  static bool inited = false;
+  if (inited)
+    return;
+
+  /* The orders of all standard extensions are positive.  */
+  int order = 1;
+
+  for (const char *ext = &riscv_ext_canonical_order[0]; *ext; ++ext)
+    riscv_ext_order[(*ext - 'a')] = order++;
+
+  /* Some of the prefixed keyword are not single letter, so we set
+     their prefixed orders in the riscv_compare_subsets directly,
+     not through the riscv_ext_order.  */
+
+  inited = true;
+}
+
+/* Similar to the strcmp.  It returns an integer less than, equal to,
+   or greater than zero if `subset2` is found, respectively, to be less
+   than, to match, or be greater than `subset1`.
+
+   The order values,
+   Zero: Preserved keywords.
+   Positive number: Standard extensions.
+   Negative number: Prefixed keywords.  */
+
+int
+riscv_compare_subsets (const char *subset1, const char *subset2)
+{
+  int order1 = riscv_ext_order[(*subset1 - 'a')];
+  int order2 = riscv_ext_order[(*subset2 - 'a')];
+
+  /* Compare the standard extension first.  */
+  if (order1 > 0 && order2 > 0)
+    return order1 - order2;
+
+  /* Set the prefixed orders to negative numbers.  */
+  enum riscv_prefix_ext_class class1 = riscv_get_prefix_class (subset1);
+  enum riscv_prefix_ext_class class2 = riscv_get_prefix_class (subset2);
+
+  if (class1 != RV_ISA_CLASS_SINGLE)
+    order1 = - (int) class1;
+  if (class2 != RV_ISA_CLASS_SINGLE)
+    order2 = - (int) class2;
+
+  if (order1 == order2)
+    {
+      /* Compare the standard addition z extensions.  */
+      if (class1 == RV_ISA_CLASS_Z)
+	{
+	  order1 = riscv_ext_order[(*++subset1 - 'a')];
+	  order2 = riscv_ext_order[(*++subset2 - 'a')];
+	  if (order1 != order2)
+	    return order1 - order2;
 	}
-      else if (ISDIGIT (*p))
-	version = (version * 10) + (*p - '0');
-      else
-	break;
+      return strcasecmp (++subset1, ++subset2);
     }
 
-  if (major_p)
-    major = version;
-  else
-    minor = version;
+  return order2 - order1;
+}
+
+/* Find subset in the list.  Return TRUE and set `current` to the subset
+   if it is found.  Otherwise, return FALSE and set `current` to the place
+   where we should insert the subset.  However, return FALSE with the NULL
+   `current` means we should insert the subset at the head of subset list,
+   if needed.  */
+
+bool
+riscv_lookup_subset (const riscv_subset_list_t *subset_list,
+		     const char *subset,
+		     riscv_subset_t **current)
+{
+  riscv_subset_t *s, *pre_s = NULL;
 
-  if (major == 0 && minor == 0)
+  /* If the subset is added in order, then just add it at the tail.  */
+  if (subset_list->tail != NULL
+      && riscv_compare_subsets (subset_list->tail->name, subset) < 0)
     {
-      /* We don't found any version string, use default version.  */
-      *major_version = default_major_version;
-      *minor_version = default_minor_version;
+      *current = subset_list->tail;
+      return false;
     }
-  else
+
+  for (s = subset_list->head;
+       s != NULL;
+       pre_s = s, s = s->next)
     {
-      *major_version = major;
-      *minor_version = minor;
+      int cmp = riscv_compare_subsets (s->name, subset);
+      if (cmp == 0)
+	{
+	  *current = s;
+	  return true;
+	}
+      else if (cmp > 0)
+	break;
     }
-  return p;
+  *current = pre_s;
+
+  return false;
 }
 
-/* Return string which contain all supported standard extensions in
-   canonical order.  */
+/* Add the extension to the subset list.  Search the
+   list first, and then find the right place to add.  */
 
-const char *
-riscv_supported_std_ext (void)
+void
+riscv_add_subset (riscv_subset_list_t *subset_list,
+		  const char *subset,
+		  int major,
+		  int minor)
 {
-  return "mafdqlcbjtpvn";
-}
+  riscv_subset_t *current, *new;
 
-/* Parsing function for standard extensions.
+  if (riscv_lookup_subset (subset_list, subset, &current))
+    return;
 
-   Return Value:
-     Points to the end of extensions.
+  new = xmalloc (sizeof *new);
+  new->name = xstrdup (subset);
+  new->major_version = major;
+  new->minor_version = minor;
+  new->next = NULL;
 
-   Arguments:
-     `rps`: Hooks and status for parsing subset.
-     `march`: Full arch string.
-     `p`: Curent parsing position.  */
+  if (current != NULL)
+    {
+      new->next = current->next;
+      current->next = new;
+    }
+  else
+    {
+      new->next = subset_list->head;
+      subset_list->head = new;
+    }
 
-static const char *
-riscv_parse_std_ext (riscv_parse_subset_t *rps,
-		     const char *march, const char *p)
-{
-  const char *all_std_exts = riscv_supported_std_ext ();
-  const char *std_exts = all_std_exts;
+  if (new->next == NULL)
+    subset_list->tail = new;
+}
 
-  unsigned major_version = 0;
-  unsigned minor_version = 0;
-  char std_ext = '\0';
-
-  /* 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);
-	break;
+/* Get the default versions from the riscv_supported_*ext tables.  */
 
-      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);
+static void
+riscv_get_default_ext_version (enum riscv_spec_class *default_isa_spec,
+			       const char *name,
+			       int *major_version,
+			       int *minor_version)
+{
+  if (name == NULL
+      || default_isa_spec == NULL
+      || *default_isa_spec == ISA_SPEC_CLASS_NONE)
+    return;
 
-	riscv_add_subset (rps->subset_list, "e", major_version, minor_version);
-	riscv_add_subset (rps->subset_list, "i", 2, 0);
+  const struct riscv_supported_ext *table = NULL;
+  enum riscv_prefix_ext_class class = riscv_get_prefix_class (name);
+  switch (class)
+    {
+    case RV_ISA_CLASS_ZXM: table = riscv_supported_std_zxm_ext; break;
+    case RV_ISA_CLASS_Z: table = riscv_supported_std_z_ext; break;
+    case RV_ISA_CLASS_S: table = riscv_supported_std_s_ext; break;
+    case RV_ISA_CLASS_X: table = riscv_supported_vendor_x_ext; break;
+    default:
+      table = riscv_supported_std_ext;
+    }
 
-	if (*rps->xlen > 32)
-	  {
-	    rps->error_handler ("-march=%s: rv%de is not a valid base ISA",
-				march, *rps->xlen);
-	    return NULL;
-	  }
+  int i = 0;
+  while (table != NULL && table[i].name != NULL)
+    {
+      if (strcmp (table[i].name, name) == 0
+	  && (table[i].isa_spec_class == ISA_SPEC_CLASS_DRAFT
+	      || table[i].isa_spec_class == *default_isa_spec))
+	{
+	  *major_version = table[i].major_version;
+	  *minor_version = table[i].minor_version;
+	  return;
+	}
+      i++;
+    }
+}
 
-	break;
+/* Find the default versions for the extension before adding them to
+   the subset list, if their versions are RISCV_UNKNOWN_VERSION.
+   Afterwards, report errors if we can not find their default versions.  */
 
-      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);
+static void
+riscv_parse_add_subset (riscv_parse_subset_t *rps,
+			const char *subset,
+			int major,
+			int minor,
+			bool implicit)
+{
+  int major_version = major;
+  int minor_version = minor;
+
+  if (major_version == RISCV_UNKNOWN_VERSION
+       || minor_version == RISCV_UNKNOWN_VERSION)
+    riscv_get_default_ext_version (rps->isa_spec, subset,
+				   &major_version, &minor_version);
+
+  /* We don't care the versions of the implicit extensions.  */
+  if (!implicit
+      && (major_version == RISCV_UNKNOWN_VERSION
+	  || minor_version == RISCV_UNKNOWN_VERSION))
+    {
+      if (subset[0] == 'x')
+	rps->error_handler
+	  (_("x ISA extension `%s' must be set with the versions"),
+	   subset);
+      /* Allow old ISA spec can recognize zicsr and zifencei.  */
+      else if (strcmp (subset, "zicsr") != 0
+	       && strcmp (subset, "zifencei") != 0)
+	rps->error_handler
+	  (_("cannot find default versions of the ISA extension `%s'"),
+	   subset);
+      return;
+    }
 
-	for ( ; *std_exts != 'q'; std_exts++)
-	  {
-	    const char subset[] = {*std_exts, '\0'};
-	    riscv_add_subset (
-	      rps->subset_list, subset, major_version, minor_version);
-	  }
-	break;
+  riscv_add_subset (rps->subset_list, subset,
+		    major_version, minor_version);
+}
 
-      default:
-	rps->error_handler (
-	  "-march=%s: first ISA subset must be `e', `i' or `g'", march);
-	return NULL;
+/* Release subset list.  */
+
+void
+riscv_release_subset_list (riscv_subset_list_t *subset_list)
+{
+   while (subset_list->head != NULL)
+    {
+      riscv_subset_t *next = subset_list->head->next;
+      free ((void *)subset_list->head->name);
+      free (subset_list->head);
+      subset_list->head = next;
     }
 
-  while (*p)
+  subset_list->tail = NULL;
+
+  if (subset_list->arch_str != NULL)
     {
-      char subset[2] = {0, 0};
+      free ((void*) subset_list->arch_str);
+      subset_list->arch_str = NULL;
+    }
+}
 
-      if (*p == 'x' || *p == 's')
-	break;
+/* Parsing extension version.
 
-      if (*p == '_')
-	{
-	  p++;
-	  continue;
-	}
+   Return Value:
+     Points to the end of version
 
-      std_ext = *p;
+   Arguments:
+     `p`: Curent parsing position.
+     `major_version`: Parsed major version.
+     `minor_version`: Parsed minor version.  */
 
-      /* Checking canonical order.  */
-      while (*std_exts && std_ext != *std_exts) std_exts++;
+static const char *
+riscv_parsing_subset_version (const char *p,
+			      int *major_version,
+			      int *minor_version)
+{
+  bool major_p = true;
+  int version = 0;
+  char np;
 
-      if (std_ext != *std_exts)
+  *major_version = 0;
+  *minor_version = 0;
+  for (; *p; ++p)
+    {
+      if (*p == 'p')
 	{
-	  if (strchr (all_std_exts, std_ext) == NULL)
-	    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);
-	  return NULL;
-	}
+	  np = *(p + 1);
 
-      std_exts++;
+	  /* Might be beginning of `p` extension.  */
+	  if (!ISDIGIT (np))
+	    break;
 
-      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);
+	  *major_version = version;
+	  major_p = false;
+	  version = 0;
+	}
+      else if (ISDIGIT (*p))
+	version = (version * 10) + (*p - '0');
+      else
+	break;
+    }
 
-      subset[0] = std_ext;
+  if (major_p)
+    *major_version = version;
+  else
+    *minor_version = version;
 
-      riscv_add_subset (rps->subset_list, subset, major_version, minor_version);
+  /* We can not find any version in string.  */
+  if (*major_version == 0 && *minor_version == 0)
+    {
+      *major_version = RISCV_UNKNOWN_VERSION;
+      *minor_version = RISCV_UNKNOWN_VERSION;
     }
+
   return p;
 }
 
-/* Parsing function for non-standard and supervisor extensions.
+/* Parsing function for both standard and prefixed extensions.
 
    Return Value:
      Points to the end of extensions.
 
    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.  */
+     `rps`: Hooks and status for parsing extensions.
+     `arch`: Full ISA string.
+     `p`: Curent parsing position.  */
 
 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)
-{
-  unsigned major_version = 0;
-  unsigned minor_version = 0;
-  size_t ext_type_len = strlen (ext_type);
+riscv_parse_extensions (riscv_parse_subset_t *rps,
+			const char *arch,
+			const char *p,
+			bool profile)
+{
+  /* First letter must start with i, e, g or a profile.  */
+  if (*p != 'e' && *p != 'i' && *p != 'g' && !profile)
+    {
+      rps->error_handler
+	(_("%s: first ISA extension must be `e', `i' or `g'"),
+	 arch);
+      return NULL;
+    }
 
-  while (*p)
+  while (*p != '\0')
     {
       if (*p == '_')
 	{
@@ -1268,40 +2073,103 @@ 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'))
-	break;
-
       char *subset = xstrdup (p);
-      char *q = subset;
+      char *q = subset;	/* Start of version.  */
       const char *end_of_version;
+      bool implicit = false;
 
-      while (*++q != '\0' && *q != '_' && !ISDIGIT (*q))
-	;
+      enum riscv_prefix_ext_class class = riscv_get_prefix_class (p);
+      if (class == RV_ISA_CLASS_SINGLE)
+	{
+	  if (riscv_ext_order[(*subset - 'a')] == 0)
+	    {
+	      rps->error_handler
+		(_("%s: unknown standard ISA extension or prefix class `%c'"),
+		 arch, *subset);
+	      free (subset);
+	      return NULL;
+	    }
+	  q++;
+	}
+      else
+	{
+	  /* Extract the whole prefixed extension by '_'.  */
+	  while (*++q != '\0' && *q != '_')
+	    ;
+	  /* Look forward to the first letter which is not <major>p<minor>.  */
+	  bool find_any_version = false;
+	  bool find_minor_version = false;
+	  while (1)
+	    {
+	      q--;
+	      if (ISDIGIT (*q))
+		find_any_version = true;
+	      else if (find_any_version
+		       && !find_minor_version
+		       && *q == 'p'
+		       && ISDIGIT (*(q - 1)))
+	      find_minor_version = true;
+	      else
+		break;
+	    }
+	  q++;
 
-      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);
+	  /* Check if the end of extension is 'p' or not.  If yes, then
+	     the second letter from the end cannot be number.  */
+	  if (*(q - 1) == 'p' && ISDIGIT (*(q - 2)))
+	    {
+	      *q = '\0';
+	      rps->error_handler
+		(_("%s: invalid prefixed ISA extension `%s' ends with <number>p"),
+		 arch, subset);
+	      free (subset);
+	      return NULL;
+	    }
+	}
 
+      int major_version = RISCV_UNKNOWN_VERSION;
+      int minor_version = RISCV_UNKNOWN_VERSION;
+      end_of_version =
+	riscv_parsing_subset_version (q, &major_version, &minor_version);
       *q = '\0';
+      if (end_of_version == NULL)
+	{
+	  free (subset);
+	  return NULL;
+	}
 
-      riscv_add_subset (rps->subset_list, subset, major_version, minor_version);
-      free (subset);
+      /* Check if the prefixed extension name is well-formed.  */
+      if (class != RV_ISA_CLASS_SINGLE
+	  && rps->check_unknown_prefixed_ext
+	  && !riscv_recognized_prefixed_ext (subset))
+	{
+	  rps->error_handler
+	    (_("%s: unknown prefixed ISA extension `%s'"),
+	     arch, subset);
+	  free (subset);
+	  return NULL;
+	}
+
+      /* Added g as an implicit extension.  */
+      if (class == RV_ISA_CLASS_SINGLE
+	  && strcmp (subset, "g") == 0)
+	{
+	  implicit = true;
+	  major_version = RISCV_UNKNOWN_VERSION;
+	  minor_version = RISCV_UNKNOWN_VERSION;
+	}
+      riscv_parse_add_subset (rps, subset,
+			      major_version,
+			      minor_version, implicit);
       p += end_of_version - subset;
+      free (subset);
 
-      if (*p != '\0' && *p != '_')
+      if (class != RV_ISA_CLASS_SINGLE
+	  && *p != '\0' && *p != '_')
 	{
-	  rps->error_handler ("-march=%s: %s must seperate with _",
-			      march, ext_type_str);
+	  rps->error_handler
+	    (_("%s: prefixed ISA extension must separate with _"),
+	     arch);
 	  return NULL;
 	}
     }
@@ -1309,185 +2177,285 @@ riscv_parse_sv_or_non_std_ext (riscv_par
   return p;
 }
 
-/* Function for parsing arch string.
+static bool
+riscv_update_subset1 (riscv_parse_subset_t *, riscv_subset_t *, const char *);
 
-   Return Value:
-     Return TRUE on success.
+/* Add the implicit extensions.  */
 
-   Arguments:
-     `rps`: Hooks and status for parsing subset.
-     `arch`: Arch string.  */
+static void
+riscv_parse_add_implicit_subsets (riscv_parse_subset_t *rps)
+{
+  const struct riscv_implicit_subset *t = riscv_implicit_subsets;
+  for (; t->ext; t++)
+    {
+      riscv_subset_t *subset = NULL;
+      if (riscv_lookup_subset (rps->subset_list, t->ext, &subset)
+	&& t->check_func (rps, subset))
+      riscv_update_subset1 (rps, subset, t->implicit_exts);
+    }
+}
 
-bfd_boolean
-riscv_parse_subset (riscv_parse_subset_t *rps,
-		    const char *arch)
+/* Check extensions conflicts.  */
+
+static bool
+riscv_parse_check_conflicts (riscv_parse_subset_t *rps)
 {
-  const char *p = arch;
+  riscv_subset_t *subset = NULL;
+  int xlen = *rps->xlen;
+  bool no_conflict = true;
 
-  if (strncmp (p, "rv32", 4) == 0)
+  if (riscv_subset_supports (rps, "e")
+      && riscv_subset_supports (rps, "h"))
     {
-      *rps->xlen = 32;
-      p += 4;
+      rps->error_handler
+	(_("rv%de does not support the `h' extension"), xlen);
+      no_conflict = false;
     }
-  else if (strncmp (p, "rv64", 4) == 0)
+  if (riscv_lookup_subset (rps->subset_list, "q", &subset)
+      && (subset->major_version < 2 || (subset->major_version == 2
+					&& subset->minor_version < 2))
+      && xlen < 64)
     {
-      *rps->xlen = 64;
-      p += 4;
+      rps->error_handler (_("rv%d does not support the `q' extension"), xlen);
+      no_conflict = false;
     }
-  else
+  if (riscv_subset_supports (rps, "zcmp")
+      && riscv_subset_supports (rps, "zcd"))
     {
-      rps->error_handler ("-march=%s: ISA string must begin with rv32 or rv64",
-			  arch);
-      return FALSE;
+      rps->error_handler
+	(_("zcmp' is incompatible with `d' and `c', or `zcd' extension"));
+      no_conflict = false;
     }
-
-  /* Parsing standard extension.  */
-  p = riscv_parse_std_ext (rps, arch, p);
-
-  if (p == NULL)
-    return FALSE;
-
-  /* Parsing non-standard extension.  */
-  p = riscv_parse_sv_or_non_std_ext (
-	rps, arch, p, "x", "non-standard extension");
-
-  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 != '\0')
+  if (riscv_lookup_subset (rps->subset_list, "zcf", &subset)
+      && xlen > 32)
     {
-      rps->error_handler ("-march=%s: unexpected ISA string at end: %s",
-			  arch, p);
-      return FALSE;
+      rps->error_handler
+	(_("rv%d does not support the `zcf' extension"), xlen);
+      no_conflict = false;
     }
-
-  if (riscv_lookup_subset (rps->subset_list, "e")
-      && riscv_lookup_subset (rps->subset_list, "f"))
+  if (riscv_lookup_subset (rps->subset_list, "zfinx", &subset)
+      && riscv_lookup_subset (rps->subset_list, "f", &subset))
     {
-      rps->error_handler ("-march=%s: rv32e does not support the `f' extension",
-			  arch);
-      return FALSE;
+      rps->error_handler
+	(_("`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"));
+      no_conflict = false;
     }
-
-  if (riscv_lookup_subset (rps->subset_list, "d")
-      && !riscv_lookup_subset (rps->subset_list, "f"))
+  if (riscv_lookup_subset (rps->subset_list, "xtheadvector", &subset)
+      && riscv_lookup_subset (rps->subset_list, "zve32x", &subset))
     {
-      rps->error_handler ("-march=%s: `d' extension requires `f' extension",
-			  arch);
-      return FALSE;
+      rps->error_handler
+	(_("`xtheadvector' is conflict with the `v/zve32x' extension"));
+      no_conflict = false;
     }
-
-  if (riscv_lookup_subset (rps->subset_list, "q")
-      && !riscv_lookup_subset (rps->subset_list, "d"))
+  if (riscv_lookup_subset (rps->subset_list, "zclsd", &subset)
+      && ((riscv_lookup_subset (rps->subset_list, "c", &subset)
+	   && riscv_lookup_subset (rps->subset_list, "f", &subset))
+	  || riscv_lookup_subset (rps->subset_list, "zcf", &subset)))
+    {
+      rps->error_handler
+	(_("`zclsd' is conflict with the `c+f'/ `zcf' extension"));
+      no_conflict = false;
+    }
+  if (riscv_lookup_subset (rps->subset_list, "ssnpm", &subset) && xlen != 64)
     {
-      rps->error_handler ("-march=%s: `q' extension requires `d' extension",
-			  arch);
-      return FALSE;
+      rps->error_handler (_ ("rv%d does not support the `ssnpm' extension"),
+			  xlen);
+      no_conflict = false;
+    }
+  if (riscv_lookup_subset (rps->subset_list, "smnpm", &subset) && xlen != 64)
+    {
+      rps->error_handler (_ ("rv%d does not support the `smnpm' extension"),
+			  xlen);
+      no_conflict = false;
+    }
+  if (riscv_lookup_subset (rps->subset_list, "smmpm", &subset) && xlen != 64)
+    {
+      rps->error_handler (_ ("rv%d does not support the `smmpm' extension"),
+			  xlen);
+      no_conflict = false;
+    }
+  if (riscv_lookup_subset (rps->subset_list, "sspm", &subset) && xlen != 64)
+    {
+      rps->error_handler (_ ("rv%d does not support the `sspm' extension"),
+			  xlen);
+      no_conflict = false;
+    }
+  if (riscv_lookup_subset (rps->subset_list, "supm", &subset) && xlen != 64)
+    {
+      rps->error_handler (_ ("rv%d does not support the `supm' extension"),
+			  xlen);
+      no_conflict = false;
     }
 
-  if (riscv_lookup_subset (rps->subset_list, "q") && *rps->xlen < 64)
+  bool support_zve = false;
+  bool support_zvl = false;
+  riscv_subset_t *s = rps->subset_list->head;
+  for (; s != NULL; s = s->next)
+    {
+      if (!support_zve
+	  && strncmp (s->name, "zve", 3) == 0)
+	support_zve = true;
+      if (!support_zvl
+	  && strncmp (s->name, "zvl", 3) == 0)
+	support_zvl = true;
+      if (support_zve && support_zvl)
+	break;
+    }
+  if (support_zvl && !support_zve)
     {
-      rps->error_handler ("-march=%s: rv32 does not support the `q' extension",
-			  arch);
-      return FALSE;
+      rps->error_handler
+	(_("zvl*b extensions need to enable either `v' or `zve' extension"));
+      no_conflict = false;
     }
-  return TRUE;
+
+  return no_conflict;
 }
 
-/* Add new subset to list.  */
+/* Set the default subset list according to the default_enable field
+   of riscv_supported_*ext tables.  */
 
-void
-riscv_add_subset (riscv_subset_list_t *subset_list,
-		  const char *subset,
-		  int major, int minor)
+static void
+riscv_set_default_arch (riscv_parse_subset_t *rps)
 {
-  riscv_subset_t *s = xmalloc (sizeof *s);
-
-  if (subset_list->head == NULL)
-    subset_list->head = s;
+  unsigned long enable = EXT_DEFAULT;
+  int i, j;
+  for (i = 0; riscv_all_supported_ext[i] != NULL; i++)
+    {
+      const struct riscv_supported_ext *table = riscv_all_supported_ext[i];
+      for (j = 0; table[j].name != NULL; j++)
+	{
+	  bool implicit = false;
+	  if (strcmp (table[j].name, "g") == 0)
+	    implicit = true;
+	  if (table[j].default_enable & enable)
+	    riscv_parse_add_subset (rps, table[j].name,
+				    RISCV_UNKNOWN_VERSION,
+				    RISCV_UNKNOWN_VERSION, implicit);
+	}
+    }
+}
 
-  s->name = xstrdup (subset);
-  s->major_version = major;
-  s->minor_version = minor;
-  s->next = NULL;
+static bool
+riscv_find_profiles (riscv_parse_subset_t *rps, const char **pp)
+{
+  const char *p = *pp;
 
-  if (subset_list->tail != NULL)
-    subset_list->tail->next = s;
+  /* Checking if input string contains a Profiles.
+     There are two cases use Profiles in -march option:
 
-  subset_list->tail = s;
-}
+      1. Only use Profiles in '-march' as input
+      2. Mixed Profiles with other extensions
 
-/* Find subset in list without version checking, return NULL if not found.  */
+      Use '_' to split Profiles and other extensions.  */
 
-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);
+  for (int i = 0; riscv_profiles_table[i].profile_name != NULL; ++i)
+    {
+      /* Find profile at the begin.  */
+      if (startswith (p, riscv_profiles_table[i].profile_name))
+	{
+	  /* Handle the profile string.  */
+	  riscv_parse_subset (rps, riscv_profiles_table[i].profile_string);
+	  p += strlen (riscv_profiles_table[i].profile_name);
+	  /* Handle string after profiles if exists.  If missing underline
+	     bewteen profile and other extensions, warn the user but not deal
+	     as an error.  */
+	  if (*p != '\0' && *p != '_')
+	    _bfd_error_handler
+	      (_("Warning: should use \"_\" to contact Profiles with other "
+		 "extensions"));
+	  *pp = p;
+	  return true;
+	}
+    }
+  /* Not found profile, return directly.  */
+  return false;
 }
 
-/* Find subset in list with version checking, return NULL if not found.  */
+/* Function for parsing ISA string.
 
-riscv_subset_t *
-riscv_lookup_subset_version (const riscv_subset_list_t *subset_list,
-			     const char *subset,
-			     int major, int minor)
-{
-  riscv_subset_t *s;
+   Return Value:
+     Return TRUE on success.
 
-  for (s = subset_list->head; s != NULL; s = s->next)
-    if (strcasecmp (s->name, subset) == 0)
-      {
-	if ((major != RISCV_DONT_CARE_VERSION)
-	    && (s->major_version != major))
-	  return NULL;
+   Arguments:
+     `rps`: Hooks and status for parsing extensions.
+     `arch`: Full ISA string.  */
 
-	if ((minor != RISCV_DONT_CARE_VERSION)
-	    && (s->minor_version != minor))
-	  return NULL;
+bool
+riscv_parse_subset (riscv_parse_subset_t *rps,
+		    const char *arch)
+{
+  const char *p;
 
-	return s;
-      }
+  /* Init the riscv_ext_order array to compare the order of extensions
+     quickly.  */
+  riscv_init_ext_order ();
 
-  return NULL;
-}
+  if (arch == NULL)
+    {
+      riscv_set_default_arch (rps);
+      riscv_parse_add_implicit_subsets (rps);
+      return riscv_parse_check_conflicts (rps);
+    }
 
-/* Release subset list.  */
+  for (p = arch; *p != '\0'; p++)
+    {
+      if (ISUPPER (*p))
+	{
+	  rps->error_handler
+	    (_("%s: ISA string cannot contain uppercase letters"),
+	     arch);
+	  return false;
+	}
+    }
 
-void
-riscv_release_subset_list (riscv_subset_list_t *subset_list)
-{
-   while (subset_list->head != NULL)
+  bool profile = false;
+  p = arch;
+  if (riscv_find_profiles (rps, &p))
     {
-      riscv_subset_t *next = subset_list->head->next;
-      free ((void *)subset_list->head->name);
-      free (subset_list->head);
-      subset_list->head = next;
+      /* Check if using Profiles.  */
+      profile = true;
+    }
+  else if (startswith (p, "rv32"))
+    {
+      *rps->xlen = 32;
+      p += 4;
+    }
+  else if (startswith (p, "rv64"))
+    {
+      *rps->xlen = 64;
+      p += 4;
+    }
+  else
+    {
+      /* ISA string shouldn't be NULL or empty here.  For linker,
+	 it might be empty when we failed to merge the ISA string
+	 in the riscv_merge_attributes.  For assembler, we might
+	 give an empty string by .attribute arch, "" or -march=.
+	 However, We have already issued the correct error message
+	 in another side, so do not issue this error when the ISA
+	 string is empty.  */
+      if (strlen (arch))
+	rps->error_handler (
+	  _("%s: ISA string must begin with rv32, rv64 or Profiles"),
+	  arch);
+      return false;
     }
 
-  subset_list->tail = NULL;
+  /* Parse single standard and prefixed extensions.  */
+  if (riscv_parse_extensions (rps, arch, p, profile) == NULL)
+    return false;
+
+  /* Finally add implicit extensions according to the current
+     extensions.  */
+  riscv_parse_add_implicit_subsets (rps);
+
+  /* Check the conflicts.  */
+  return riscv_parse_check_conflicts (rps);
 }
 
 /* Return the number of digits for the input.  */
 
-static size_t
+size_t
 riscv_estimate_digit (unsigned num)
 {
   size_t digit = 0;
@@ -1511,7 +2479,7 @@ riscv_estimate_arch_strlen1 (const riscv
   return riscv_estimate_arch_strlen1 (subset->next)
 	 + strlen (subset->name)
 	 + riscv_estimate_digit (subset->major_version)
-	 + 1 /* For version seperator: 'p'.  */
+	 + 1 /* For version seperator 'p'.  */
 	 + riscv_estimate_digit (subset->minor_version)
 	 + 1 /* For underscore.  */;
 }
@@ -1531,36 +2499,40 @@ riscv_arch_str1 (riscv_subset_t *subset,
 		 char *attr_str, char *buf, size_t bufsz)
 {
   const char *underline = "_";
+  riscv_subset_t *subset_t = subset;
 
-  if (subset == NULL)
+  if (subset_t == NULL)
     return;
 
-  /* No underline between rvXX and i/e.   */
-  if ((strcasecmp (subset->name, "i") == 0)
-      || (strcasecmp (subset->name, "e") == 0))
+  /* No underline between rvXX and i/e.  */
+  if ((strcasecmp (subset_t->name, "i") == 0)
+      || (strcasecmp (subset_t->name, "e") == 0))
     underline = "";
 
   snprintf (buf, bufsz, "%s%s%dp%d",
 	    underline,
-	    subset->name,
-	    subset->major_version,
-	    subset->minor_version);
+	    subset_t->name,
+	    subset_t->major_version,
+	    subset_t->minor_version);
 
   strncat (attr_str, buf, bufsz);
 
-  /* Skip 'i' extension after 'e'.  */
-  if ((strcasecmp (subset->name, "e") == 0)
-      && subset->next
-      && (strcasecmp (subset->next->name, "i") == 0))
-    riscv_arch_str1 (subset->next->next, attr_str, buf, bufsz);
-  else
-    riscv_arch_str1 (subset->next, attr_str, buf, bufsz);
+  /* Skip 'i' extension after 'e', or skip extensions which
+     versions are unknown.  */
+  while (subset_t->next
+	 && ((strcmp (subset_t->name, "e") == 0
+	      && strcmp (subset_t->next->name, "i") == 0)
+	     || subset_t->next->major_version == RISCV_UNKNOWN_VERSION
+	     || subset_t->next->minor_version == RISCV_UNKNOWN_VERSION))
+    subset_t = subset_t->next;
+
+  riscv_arch_str1 (subset_t->next, attr_str, buf, bufsz);
 }
 
-/* Convert subset info to string with explicit version info.  */
+/* Convert subset information into string with explicit versions.  */
 
 char *
-riscv_arch_str (unsigned xlen, const riscv_subset_list_t *subset)
+riscv_arch_str (unsigned xlen, riscv_subset_list_t *subset, bool update)
 {
   size_t arch_str_len = riscv_estimate_arch_strlen (subset);
   char *attr_str = xmalloc (arch_str_len);
@@ -1571,5 +2543,1021 @@ riscv_arch_str (unsigned xlen, const ris
   riscv_arch_str1 (subset->head, attr_str, buf, arch_str_len);
   free (buf);
 
+  if (update)
+    {
+      if (subset->arch_str != NULL)
+	free ((void *) subset->arch_str);
+      subset->arch_str = attr_str;
+    }
+
   return attr_str;
 }
+
+/* Copy the subset in the subset list.  */
+
+static struct riscv_subset_t *
+riscv_copy_subset (riscv_subset_list_t *subset_list,
+		   riscv_subset_t *subset)
+{
+  if (subset == NULL)
+    return NULL;
+
+  riscv_subset_t *new = xmalloc (sizeof *new);
+  new->name = xstrdup (subset->name);
+  new->major_version = subset->major_version;
+  new->minor_version = subset->minor_version;
+  new->next = riscv_copy_subset (subset_list, subset->next);
+
+  if (subset->next == NULL)
+    subset_list->tail = new;
+
+  return new;
+}
+
+/* Copy the subset list.  */
+
+riscv_subset_list_t *
+riscv_copy_subset_list (riscv_subset_list_t *subset_list)
+{
+  riscv_subset_list_t *new = xmalloc (sizeof *new);
+  new->head = riscv_copy_subset (new, subset_list->head);
+  new->arch_str = strdup (subset_list->arch_str);
+  return new;
+}
+
+/* Remove the SUBSET from the subset list.  */
+
+static void
+riscv_remove_subset (riscv_subset_list_t *subset_list,
+		     const char *subset)
+{
+  riscv_subset_t *current = subset_list->head;
+  riscv_subset_t *pre = NULL;
+  for (; current != NULL; pre = current, current = current->next)
+    {
+      if (strcmp (current->name, subset) == 0)
+	{
+	  if (pre == NULL)
+	    subset_list->head = current->next;
+	  else
+	    pre->next = current->next;
+	  if (current->next == NULL)
+	    subset_list->tail = pre;
+	  free ((void *) current->name);
+	  free (current);
+	  break;
+	}
+    }
+}
+
+/* Auxiliary to add/remove extensions to/from the subset list.
+   This is called from riscv_update_subset or riscv_parse_add_implicit_subsets.
+
+   The EXPLICIT_SUBSET, the corresponding explicit extension.  It is NULL means
+   called from riscv_update_subset./
+
+   The IMPLICIT_EXTS, +extension[version] [,...,+extension_n[version_n]]
+		      (Deprecated) -extension [,...,-extension_n],
+		      full ISA.  */
+
+static bool
+riscv_update_subset1 (riscv_parse_subset_t *rps,
+		      riscv_subset_t *explicit_subset,
+		      const char *implicit_exts)
+{
+  const char *p = implicit_exts;
+  const char *errmsg_internal = explicit_subset == NULL ? "" : _("internal: ");
+  const char *errmsg_caller = explicit_subset == NULL
+			      ? ".option arch" : "riscv_implicit_subsets";
+
+  do
+    {
+      int major_version = RISCV_UNKNOWN_VERSION;
+      int minor_version = RISCV_UNKNOWN_VERSION;
+
+      bool removed = false;
+      switch (*p)
+	{
+	case '+': removed = false; break;
+	case '-': removed = true; break;
+	default:
+	  riscv_release_subset_list (rps->subset_list);
+	  return riscv_parse_subset (rps, p);
+	}
+      ++p;
+
+      char *subset = xstrdup (p);
+      char *q = subset;
+      const char *end_of_version;
+      /* Extract the whole prefixed extension by ','.  */
+      while (*q != '\0' && *q != ',')
+        q++;
+
+      /* Look forward to the first letter which is not <major>p<minor>.  */
+      bool find_any_version = false;
+      bool find_minor_version = false;
+      size_t len = q - subset;
+      size_t i;
+      for (i = len; i > 0; i--)
+        {
+	  q--;
+	  if (ISDIGIT (*q))
+	    find_any_version = true;
+	  else if (find_any_version
+		   && !find_minor_version
+		   && *q == 'p'
+		   && ISDIGIT (*(q - 1)))
+	    find_minor_version = true;
+	  else
+	    break;
+	}
+      if (len > 0)
+	q++;
+
+      /* Check if the end of extension is 'p' or not.  If yes, then
+	 the second letter from the end cannot be number.  */
+      if (len > 1 && *(q - 1) == 'p' && ISDIGIT (*(q - 2)))
+	{
+	  *q = '\0';
+	  rps->error_handler
+	    (_("%sinvalid ISA extension ends with <number>p in %s `%s'"),
+	       errmsg_internal, errmsg_caller, implicit_exts);
+	  free (subset);
+	  return false;
+	}
+
+      end_of_version =
+	riscv_parsing_subset_version (q, &major_version, &minor_version);
+      *q = '\0';
+      if (end_of_version == NULL)
+	{
+	  free (subset);
+	  return false;
+	}
+
+      if (strlen (subset) == 0
+	  || (strlen (subset) == 1
+	      && riscv_ext_order[(*subset - 'a')] == 0)
+	  || (strlen (subset) > 1
+	      && rps->check_unknown_prefixed_ext
+	      && !riscv_recognized_prefixed_ext (subset)))
+	{
+	  rps->error_handler
+	    (_("%sunknown ISA extension `%s' in %s `%s'"),
+	     errmsg_internal, subset, errmsg_caller, implicit_exts);
+	  free (subset);
+	  return false;
+	}
+
+      if (explicit_subset == NULL)
+	{
+	  if (removed)
+	    {
+	      rps->error_handler
+		(_("%sdeprecated - extension `%s' in %s `%s'"),
+		   errmsg_internal, subset, errmsg_caller, implicit_exts);
+	      free (subset);
+	      return false;
+	    }
+	  else if (strcmp (subset, "i") == 0
+		   || strcmp (subset, "e") == 0
+		   || strcmp (subset, "g") == 0)
+	    {
+	      rps->error_handler
+		(_("%scannot + base extension `%s' in %s `%s'"),
+		   errmsg_internal, subset, errmsg_caller, implicit_exts);
+	      free (subset);
+	      return false;
+	    }
+	}
+
+      if (removed)
+	riscv_remove_subset (rps->subset_list, subset);
+      else
+	{
+	  riscv_subset_t *isubset = NULL;
+	  if (!riscv_lookup_subset (rps->subset_list, subset, &isubset))
+	    riscv_parse_add_subset (rps, subset, major_version, minor_version,
+				    true/* implicit */);
+	}
+      p += end_of_version - subset;
+      free (subset);
+    }
+  while (*p++ == ',');
+
+  bool no_conflict = true;
+  if (explicit_subset == NULL)
+    {
+      riscv_parse_add_implicit_subsets (rps);
+      no_conflict = riscv_parse_check_conflicts (rps);
+    }
+  return no_conflict;
+}
+
+/* Add an extension to/from the subset list.  This is used for the .option rvc
+   and .option arch directives.  */
+
+bool
+riscv_update_subset (riscv_parse_subset_t *rps,
+		     const char *str)
+{
+  return riscv_update_subset1 (rps, NULL, str);
+}
+
+/* Called from .option norvc directives.  */
+
+bool
+riscv_update_subset_norvc (riscv_parse_subset_t *rps)
+{
+  return riscv_update_subset1 (rps, rps->subset_list->head,
+			       "-c,-zca,-zcd,-zcf,-zcb,-zce,-zcmp,-zcmt,"
+			       "-zcmop,-zclsd");
+}
+
+/* Check if the FEATURE subset is supported or not in the subset list.
+   Return true if it is supported; Otherwise, return false.  */
+
+bool
+riscv_subset_supports (riscv_parse_subset_t *rps,
+		       const char *feature)
+{
+  struct riscv_subset_t *subset;
+  return riscv_lookup_subset (rps->subset_list, feature, &subset);
+}
+
+/* Each instuction is belonged to an instruction class INSN_CLASS_*.
+   Call riscv_subset_supports to make sure if the instuction is valid.  */
+
+bool
+riscv_multi_subset_supports (riscv_parse_subset_t *rps,
+			     enum riscv_insn_class insn_class)
+{
+  switch (insn_class)
+    {
+    case INSN_CLASS_I:
+      return riscv_subset_supports (rps, "i");
+    case INSN_CLASS_ZICBOM:
+      return riscv_subset_supports (rps, "zicbom");
+    case INSN_CLASS_ZICBOP:
+      return riscv_subset_supports (rps, "zicbop");
+    case INSN_CLASS_ZICBOZ:
+      return riscv_subset_supports (rps, "zicboz");
+    case INSN_CLASS_ZICOND:
+      return riscv_subset_supports (rps, "zicond");
+    case INSN_CLASS_ZICSR:
+      return riscv_subset_supports (rps, "zicsr");
+    case INSN_CLASS_ZIFENCEI:
+      return riscv_subset_supports (rps, "zifencei");
+    case INSN_CLASS_ZIHINTNTL:
+      return riscv_subset_supports (rps, "zihintntl");
+    case INSN_CLASS_ZIHINTNTL_AND_ZCA:
+      return riscv_subset_supports (rps, "zihintntl")
+	     && riscv_subset_supports (rps, "zca");
+    case INSN_CLASS_ZIHINTPAUSE:
+      return riscv_subset_supports (rps, "zihintpause");
+    case INSN_CLASS_ZIMOP:
+      return riscv_subset_supports (rps, "zimop");
+    case INSN_CLASS_ZICFISS:
+      return riscv_subset_supports (rps, "zicfiss");
+    case INSN_CLASS_ZICFISS_AND_ZCMOP:
+      return riscv_subset_supports (rps, "zicfiss")
+	     && riscv_subset_supports (rps, "zcmop");
+    case INSN_CLASS_ZICFILP:
+      return riscv_subset_supports (rps, "zicfilp");
+    case INSN_CLASS_M:
+      return riscv_subset_supports (rps, "m");
+    case INSN_CLASS_ZMMUL:
+      return riscv_subset_supports (rps, "zmmul");
+    case INSN_CLASS_ZAAMO:
+      return riscv_subset_supports (rps, "zaamo");
+    case INSN_CLASS_ZABHA:
+      return riscv_subset_supports (rps, "zabha");
+    case INSN_CLASS_ZACAS:
+      return riscv_subset_supports (rps, "zacas");
+    case INSN_CLASS_ZABHA_AND_ZACAS:
+      return (riscv_subset_supports (rps, "zabha")
+	      && riscv_subset_supports (rps, "zacas"));
+    case INSN_CLASS_ZALRSC:
+      return riscv_subset_supports (rps, "zalrsc");
+    case INSN_CLASS_ZAWRS:
+      return riscv_subset_supports (rps, "zawrs");
+    case INSN_CLASS_F:
+      return riscv_subset_supports (rps, "f");
+    case INSN_CLASS_D:
+      return riscv_subset_supports (rps, "d");
+    case INSN_CLASS_Q:
+      return riscv_subset_supports (rps, "q");
+    case INSN_CLASS_ZCA:
+      return riscv_subset_supports (rps, "zca");
+    case INSN_CLASS_ZCF:
+      return riscv_subset_supports (rps, "zcf");
+    case INSN_CLASS_ZCD:
+      return riscv_subset_supports (rps, "zcd");
+    case INSN_CLASS_F_INX:
+      return (riscv_subset_supports (rps, "f")
+	      || riscv_subset_supports (rps, "zfinx"));
+    case INSN_CLASS_D_INX:
+      return (riscv_subset_supports (rps, "d")
+	      || riscv_subset_supports (rps, "zdinx"));
+    case INSN_CLASS_Q_INX:
+      return (riscv_subset_supports (rps, "q")
+	      || riscv_subset_supports (rps, "zqinx"));
+    case INSN_CLASS_ZFH_INX:
+      return (riscv_subset_supports (rps, "zfh")
+	      || riscv_subset_supports (rps, "zhinx"));
+    case INSN_CLASS_ZFHMIN:
+      return riscv_subset_supports (rps, "zfhmin");
+    case INSN_CLASS_ZFHMIN_INX:
+      return (riscv_subset_supports (rps, "zfhmin")
+	      || riscv_subset_supports (rps, "zhinxmin"));
+    case INSN_CLASS_ZFHMIN_AND_D_INX:
+      return ((riscv_subset_supports (rps, "zfhmin")
+	       && riscv_subset_supports (rps, "d"))
+	      || (riscv_subset_supports (rps, "zhinxmin")
+		  && riscv_subset_supports (rps, "zdinx")));
+    case INSN_CLASS_ZFHMIN_AND_Q_INX:
+      return ((riscv_subset_supports (rps, "zfhmin")
+	       && riscv_subset_supports (rps, "q"))
+	      || (riscv_subset_supports (rps, "zhinxmin")
+		  && riscv_subset_supports (rps, "zqinx")));
+    case INSN_CLASS_ZFBFMIN:
+      return riscv_subset_supports (rps, "zfbfmin");
+    case INSN_CLASS_ZFA:
+      return riscv_subset_supports (rps, "zfa");
+    case INSN_CLASS_D_AND_ZFA:
+      return riscv_subset_supports (rps, "d")
+	     && riscv_subset_supports (rps, "zfa");
+    case INSN_CLASS_Q_AND_ZFA:
+      return riscv_subset_supports (rps, "q")
+	     && riscv_subset_supports (rps, "zfa");
+    case INSN_CLASS_ZFH_AND_ZFA:
+      return riscv_subset_supports (rps, "zfh")
+	     && riscv_subset_supports (rps, "zfa");
+    case INSN_CLASS_ZFH_OR_ZVFH_AND_ZFA:
+      return (riscv_subset_supports (rps, "zfh")
+	      || riscv_subset_supports (rps, "zvfh"))
+	     && riscv_subset_supports (rps, "zfa");
+    case INSN_CLASS_ZBA:
+      return riscv_subset_supports (rps, "zba");
+    case INSN_CLASS_ZBB:
+      return riscv_subset_supports (rps, "zbb");
+    case INSN_CLASS_ZBC:
+      return riscv_subset_supports (rps, "zbc");
+    case INSN_CLASS_ZBS:
+      return riscv_subset_supports (rps, "zbs");
+    case INSN_CLASS_ZBKB:
+      return riscv_subset_supports (rps, "zbkb");
+    case INSN_CLASS_ZBKC:
+      return riscv_subset_supports (rps, "zbkc");
+    case INSN_CLASS_ZBKX:
+      return riscv_subset_supports (rps, "zbkx");
+    case INSN_CLASS_ZBB_OR_ZBKB:
+      return (riscv_subset_supports (rps, "zbb")
+	      || riscv_subset_supports (rps, "zbkb"));
+    case INSN_CLASS_ZBC_OR_ZBKC:
+      return (riscv_subset_supports (rps, "zbc")
+	      || riscv_subset_supports (rps, "zbkc"));
+    case INSN_CLASS_ZKND:
+      return riscv_subset_supports (rps, "zknd");
+    case INSN_CLASS_ZKNE:
+      return riscv_subset_supports (rps, "zkne");
+    case INSN_CLASS_ZKNH:
+      return riscv_subset_supports (rps, "zknh");
+    case INSN_CLASS_ZKND_OR_ZKNE:
+      return (riscv_subset_supports (rps, "zknd")
+	      || riscv_subset_supports (rps, "zkne"));
+    case INSN_CLASS_ZKSED:
+      return riscv_subset_supports (rps, "zksed");
+    case INSN_CLASS_ZKSH:
+      return riscv_subset_supports (rps, "zksh");
+    case INSN_CLASS_V:
+      return (riscv_subset_supports (rps, "v")
+	      || riscv_subset_supports (rps, "zve64x")
+	      || riscv_subset_supports (rps, "zve32x"));
+    case INSN_CLASS_ZVEF:
+      return (riscv_subset_supports (rps, "v")
+	      || riscv_subset_supports (rps, "zve64d")
+	      || riscv_subset_supports (rps, "zve64f")
+	      || riscv_subset_supports (rps, "zve32f"));
+    case INSN_CLASS_ZVBB:
+      return riscv_subset_supports (rps, "zvbb");
+    case INSN_CLASS_ZVBC:
+      return riscv_subset_supports (rps, "zvbc");
+    case INSN_CLASS_ZVFBFMIN:
+      return riscv_subset_supports (rps, "zvfbfmin");
+    case INSN_CLASS_ZVFBFWMA:
+      return riscv_subset_supports (rps, "zvfbfwma");
+    case INSN_CLASS_ZVKB:
+      return riscv_subset_supports (rps, "zvkb");
+    case INSN_CLASS_ZVKG:
+      return riscv_subset_supports (rps, "zvkg");
+    case INSN_CLASS_ZVKNED:
+      return riscv_subset_supports (rps, "zvkned");
+    case INSN_CLASS_ZVKNHA_OR_ZVKNHB:
+      return (riscv_subset_supports (rps, "zvknha")
+	      || riscv_subset_supports (rps, "zvknhb"));
+    case INSN_CLASS_ZVKSED:
+      return riscv_subset_supports (rps, "zvksed");
+    case INSN_CLASS_ZVKSH:
+      return riscv_subset_supports (rps, "zvksh");
+    case INSN_CLASS_ZCB:
+      return riscv_subset_supports (rps, "zcb");
+    case INSN_CLASS_ZCB_AND_ZBB:
+      return (riscv_subset_supports (rps, "zcb")
+	      && riscv_subset_supports (rps, "zbb"));
+    case INSN_CLASS_ZCB_AND_ZBA:
+      return (riscv_subset_supports (rps, "zcb")
+	      && riscv_subset_supports (rps, "zba"));
+    case INSN_CLASS_ZCB_AND_ZMMUL:
+      return (riscv_subset_supports (rps, "zcb")
+	      && riscv_subset_supports (rps, "zmmul"));
+    case INSN_CLASS_ZCMOP:
+      return riscv_subset_supports (rps, "zcmop");
+    case INSN_CLASS_ZCMP:
+      return riscv_subset_supports (rps, "zcmp");
+    case INSN_CLASS_ZCMT:
+      return riscv_subset_supports (rps, "zcmt");
+    case INSN_CLASS_SMCTR_OR_SSCTR:
+      return (riscv_subset_supports (rps, "smctr")
+	      || riscv_subset_supports (rps, "ssctr"));
+    case INSN_CLASS_ZILSD:
+      return riscv_subset_supports (rps, "zilsd");
+    case INSN_CLASS_ZCLSD:
+      return riscv_subset_supports (rps, "zclsd");
+    case INSN_CLASS_SMRNMI:
+      return riscv_subset_supports (rps, "smrnmi");
+    case INSN_CLASS_SVINVAL:
+      return riscv_subset_supports (rps, "svinval");
+    case INSN_CLASS_H:
+      return riscv_subset_supports (rps, "h");
+    case INSN_CLASS_XCVALU:
+      return riscv_subset_supports (rps, "xcvalu");
+    case INSN_CLASS_XCVBI:
+      return riscv_subset_supports (rps, "xcvbi");
+    case INSN_CLASS_XCVBITMANIP:
+      return riscv_subset_supports (rps, "xcvbitmanip");
+    case INSN_CLASS_XCVELW:
+      return riscv_subset_supports (rps, "xcvelw");
+    case INSN_CLASS_XCVMAC:
+      return riscv_subset_supports (rps, "xcvmac");
+    case INSN_CLASS_XCVMEM:
+      return riscv_subset_supports (rps, "xcvmem");
+    case INSN_CLASS_XCVSIMD:
+      return riscv_subset_supports (rps, "xcvsimd");
+    case INSN_CLASS_XTHEADBA:
+      return riscv_subset_supports (rps, "xtheadba");
+    case INSN_CLASS_XTHEADBB:
+      return riscv_subset_supports (rps, "xtheadbb");
+    case INSN_CLASS_XTHEADBS:
+      return riscv_subset_supports (rps, "xtheadbs");
+    case INSN_CLASS_XTHEADCMO:
+      return riscv_subset_supports (rps, "xtheadcmo");
+    case INSN_CLASS_XTHEADCONDMOV:
+      return riscv_subset_supports (rps, "xtheadcondmov");
+    case INSN_CLASS_XTHEADFMEMIDX:
+      return riscv_subset_supports (rps, "xtheadfmemidx");
+    case INSN_CLASS_XTHEADFMV:
+      return riscv_subset_supports (rps, "xtheadfmv");
+    case INSN_CLASS_XTHEADINT:
+      return riscv_subset_supports (rps, "xtheadint");
+    case INSN_CLASS_XTHEADMAC:
+      return riscv_subset_supports (rps, "xtheadmac");
+    case INSN_CLASS_XTHEADMEMIDX:
+      return riscv_subset_supports (rps, "xtheadmemidx");
+    case INSN_CLASS_XTHEADMEMPAIR:
+      return riscv_subset_supports (rps, "xtheadmempair");
+    case INSN_CLASS_XTHEADSYNC:
+      return riscv_subset_supports (rps, "xtheadsync");
+    case INSN_CLASS_XTHEADVECTOR:
+      return riscv_subset_supports (rps, "xtheadvector");
+    case INSN_CLASS_XTHEADVDOT:
+      return riscv_subset_supports (rps, "xtheadvdot");
+    case INSN_CLASS_XTHEADZVAMO:
+      return riscv_subset_supports (rps, "xtheadzvamo");
+    case INSN_CLASS_XVENTANACONDOPS:
+      return riscv_subset_supports (rps, "xventanacondops");
+    case INSN_CLASS_XSFVCP:
+      return riscv_subset_supports (rps, "xsfvcp");
+    case INSN_CLASS_XSFCEASE:
+      return riscv_subset_supports (rps, "xsfcease");
+    case INSN_CLASS_XSFVQMACCQOQ:
+      return riscv_subset_supports (rps, "xsfvqmaccqoq");
+    case INSN_CLASS_XSFVQMACCDOD:
+      return riscv_subset_supports (rps, "xsfvqmaccdod");
+    case INSN_CLASS_XSFVFNRCLIPXFQF:
+      return riscv_subset_supports (rps, "xsfvfnrclipxfqf");
+    case INSN_CLASS_XMIPSCBOP:
+      return riscv_subset_supports (rps, "xmipscbop");
+    case INSN_CLASS_XMIPSCMOV:
+      return riscv_subset_supports (rps, "xmipscmov");
+    case INSN_CLASS_XMIPSEXECTL:
+      return riscv_subset_supports (rps, "xmipsexectl");
+    case INSN_CLASS_XMIPSLSP:
+      return riscv_subset_supports (rps, "xmipslsp");
+    default:
+      rps->error_handler
+        (_("internal: unreachable INSN_CLASS_*"));
+      return false;
+    }
+}
+
+/* Each instuction is belonged to an instruction class INSN_CLASS_*.
+   Call riscv_subset_supports_ext to determine the missing extension.  */
+
+const char *
+riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps,
+				 enum riscv_insn_class insn_class)
+{
+  switch (insn_class)
+    {
+    case INSN_CLASS_I:
+      return "i";
+    case INSN_CLASS_ZICBOM:
+      return "zicbom";
+    case INSN_CLASS_ZICBOP:
+      return "zicbop";
+    case INSN_CLASS_ZICBOZ:
+      return "zicboz";
+    case INSN_CLASS_ZICOND:
+      return "zicond";
+    case INSN_CLASS_ZICSR:
+      return "zicsr";
+    case INSN_CLASS_ZIFENCEI:
+      return "zifencei";
+    case INSN_CLASS_ZICFISS:
+      return "zicfiss";
+    case INSN_CLASS_ZICFISS_AND_ZCMOP:
+      if (!riscv_subset_supports (rps, "zicfiss"))
+	{
+	  if (!riscv_subset_supports (rps, "zcmop"))
+	    return _("zicfiss' and `zcmop");
+	  else
+	    return "zicfiss";
+	}
+      return "zcmop";
+    case INSN_CLASS_ZICFILP:
+      return "zicfilp";
+    case INSN_CLASS_ZIHINTNTL:
+      return "zihintntl";
+    case INSN_CLASS_ZIHINTNTL_AND_ZCA:
+      if (!riscv_subset_supports (rps, "zihintntl"))
+	{
+	  if (!riscv_subset_supports (rps, "zca"))
+	    return _("zihintntl' and `c', or `zihintntl' and `zca");
+	  else
+	    return "zihintntl";
+	}
+      else
+	return _("c' or `zca");
+    case INSN_CLASS_ZIHINTPAUSE:
+      return "zihintpause";
+    case INSN_CLASS_ZIMOP:
+      return "zimop";
+    case INSN_CLASS_M:
+      return "m";
+    case INSN_CLASS_ZMMUL:
+      return _ ("m' or `zmmul");
+    case INSN_CLASS_ZAAMO:
+      return "zaamo";
+    case INSN_CLASS_ZABHA:
+      return "zabha";
+    case INSN_CLASS_ZACAS:
+      return "zacas";
+    case INSN_CLASS_ZALRSC:
+      return "zalrsc";
+    case INSN_CLASS_ZAWRS:
+      return "zawrs";
+    case INSN_CLASS_F:
+      return "f";
+    case INSN_CLASS_D:
+      return "d";
+    case INSN_CLASS_Q:
+      return "q";
+    case INSN_CLASS_ZCA:
+      return _("c' or `zca");
+    case INSN_CLASS_ZCF:
+      return _("f' and `c', or `zcf");
+    case INSN_CLASS_ZCD:
+      return _("d' and `c', or `zcd");
+    case INSN_CLASS_F_INX:
+      return _("f' or `zfinx");
+    case INSN_CLASS_D_INX:
+      return _("d' or `zdinx");
+    case INSN_CLASS_Q_INX:
+      return _("q' or `zqinx");
+    case INSN_CLASS_ZFH_INX:
+      return _("zfh' or `zhinx");
+    case INSN_CLASS_ZFHMIN:
+      return "zfhmin";
+    case INSN_CLASS_ZFHMIN_INX:
+      return _("zfhmin' or `zhinxmin");
+    case INSN_CLASS_ZFHMIN_AND_D_INX:
+      if (riscv_subset_supports (rps, "zfhmin"))
+	return "d";
+      else if (riscv_subset_supports (rps, "d"))
+	return "zfhmin";
+      else if (riscv_subset_supports (rps, "zhinxmin"))
+	return "zdinx";
+      else if (riscv_subset_supports (rps, "zdinx"))
+	return "zhinxmin";
+      else
+	return _("zfhmin' and `d', or `zhinxmin' and `zdinx");
+    case INSN_CLASS_ZFHMIN_AND_Q_INX:
+      if (riscv_subset_supports (rps, "zfhmin"))
+	return "q";
+      else if (riscv_subset_supports (rps, "q"))
+	return "zfhmin";
+      else if (riscv_subset_supports (rps, "zhinxmin"))
+	return "zqinx";
+      else if (riscv_subset_supports (rps, "zqinx"))
+	return "zhinxmin";
+      else
+	return _("zfhmin' and `q', or `zhinxmin' and `zqinx");
+    case INSN_CLASS_ZFBFMIN:
+      return "zfbfmin";
+    case INSN_CLASS_ZFA:
+      return "zfa";
+    case INSN_CLASS_D_AND_ZFA:
+      if (!riscv_subset_supports (rps, "d")
+	  && !riscv_subset_supports (rps, "zfa"))
+	return _("d' and `zfa");
+      else if (!riscv_subset_supports (rps, "d"))
+	return "d";
+      else
+	return "zfa";
+    case INSN_CLASS_Q_AND_ZFA:
+      if (!riscv_subset_supports (rps, "q")
+	  && !riscv_subset_supports (rps, "zfa"))
+	return _("q' and `zfa");
+      else if (!riscv_subset_supports (rps, "q"))
+	return "q";
+      else
+	return "zfa";
+    case INSN_CLASS_ZFH_AND_ZFA:
+      if (!riscv_subset_supports (rps, "zfh")
+	  && !riscv_subset_supports (rps, "zfa"))
+	return _("zfh' and `zfa");
+      else if (!riscv_subset_supports (rps, "zfh"))
+	return "zfh";
+      else
+	return "zfa";
+    case INSN_CLASS_ZFH_OR_ZVFH_AND_ZFA:
+      if (!riscv_subset_supports (rps, "zfa"))
+	{
+	  if (!riscv_subset_supports (rps, "zfh")
+	      && !riscv_subset_supports (rps, "zvfh"))
+	    return _("zfh' and `zfa', or `zvfh' and `zfa");
+	  else
+	    return "zfa";
+	}
+      else
+	return _("zfh' or `zvfh");
+    case INSN_CLASS_ZBA:
+      return "zba";
+    case INSN_CLASS_ZBB:
+      return "zbb";
+    case INSN_CLASS_ZBC:
+      return "zbc";
+    case INSN_CLASS_ZBS:
+      return "zbs";
+    case INSN_CLASS_ZBKB:
+      return "zbkb";
+    case INSN_CLASS_ZBKC:
+      return "zbkc";
+    case INSN_CLASS_ZBKX:
+      return "zbkx";
+    case INSN_CLASS_ZBB_OR_ZBKB:
+      return _("zbb' or `zbkb");
+    case INSN_CLASS_ZBC_OR_ZBKC:
+      return _("zbc' or `zbkc");
+    case INSN_CLASS_ZKND:
+      return "zknd";
+    case INSN_CLASS_ZKNE:
+      return "zkne";
+    case INSN_CLASS_ZKNH:
+      return "zknh";
+    case INSN_CLASS_ZKND_OR_ZKNE:
+      return _("zknd' or `zkne");
+    case INSN_CLASS_ZKSED:
+      return "zksed";
+    case INSN_CLASS_ZKSH:
+      return "zksh";
+    case INSN_CLASS_V:
+      return _("v' or `zve64x' or `zve32x");
+    case INSN_CLASS_ZVEF:
+      return _("v' or `zve64d' or `zve64f' or `zve32f");
+    case INSN_CLASS_ZVBB:
+      return _("zvbb");
+    case INSN_CLASS_ZVBC:
+      return _("zvbc");
+    case INSN_CLASS_ZVFBFMIN:
+      return "zvfbfmin";
+    case INSN_CLASS_ZVFBFWMA:
+      return "zvfbfwma";
+    case INSN_CLASS_ZVKB:
+      return _("zvkb");
+    case INSN_CLASS_ZVKG:
+      return _("zvkg");
+    case INSN_CLASS_ZVKNED:
+      return _("zvkned");
+    case INSN_CLASS_ZVKNHA_OR_ZVKNHB:
+      return _("zvknha' or `zvknhb");
+    case INSN_CLASS_ZVKSED:
+      return _("zvksed");
+    case INSN_CLASS_ZVKSH:
+      return _("zvksh");
+    case INSN_CLASS_ZCB:
+      return "zcb";
+    case INSN_CLASS_ZCB_AND_ZBA:
+      return _("zcb' and `zba");
+    case INSN_CLASS_ZCB_AND_ZBB:
+      return _("zcb' and `zbb");
+    case INSN_CLASS_ZCB_AND_ZMMUL:
+      return _("zcb' and `zmmul', or `zcb' and `m");
+    case INSN_CLASS_ZCMOP:
+      return "zcmop";
+    case INSN_CLASS_ZCMP:
+      return "zcmp";
+    case INSN_CLASS_ZCMT:
+      return "zcmt";
+    case INSN_CLASS_SMCTR_OR_SSCTR:
+      return _("smctr' or `ssctr");
+    case INSN_CLASS_ZILSD:
+     return "zilsd";
+    case INSN_CLASS_ZCLSD:
+      return "zclsd";
+    case INSN_CLASS_SMRNMI:
+      return "smrnmi";
+    case INSN_CLASS_SVINVAL:
+      return "svinval";
+    case INSN_CLASS_H:
+      return _("h");
+    case INSN_CLASS_XCVALU:
+      return "xcvalu";
+    case INSN_CLASS_XCVBI:
+      return "xcvbi";
+    case INSN_CLASS_XCVBITMANIP:
+      return "xcvbitmanip";
+    case INSN_CLASS_XCVELW:
+      return "xcvelw";
+    case INSN_CLASS_XCVMAC:
+      return "xcvmac";
+    case INSN_CLASS_XCVMEM:
+      return "xcvmem";
+    case INSN_CLASS_XCVSIMD:
+      return "xcvsimd";
+    case INSN_CLASS_XTHEADBA:
+      return "xtheadba";
+    case INSN_CLASS_XTHEADBB:
+      return "xtheadbb";
+    case INSN_CLASS_XTHEADBS:
+      return "xtheadbs";
+    case INSN_CLASS_XTHEADCMO:
+      return "xtheadcmo";
+    case INSN_CLASS_XTHEADCONDMOV:
+      return "xtheadcondmov";
+    case INSN_CLASS_XTHEADFMEMIDX:
+      return "xtheadfmemidx";
+    case INSN_CLASS_XTHEADFMV:
+      return "xtheadfmv";
+    case INSN_CLASS_XTHEADINT:
+      return "xtheadint";
+    case INSN_CLASS_XTHEADMAC:
+      return "xtheadmac";
+    case INSN_CLASS_XTHEADMEMIDX:
+      return "xtheadmemidx";
+    case INSN_CLASS_XTHEADMEMPAIR:
+      return "xtheadmempair";
+    case INSN_CLASS_XTHEADSYNC:
+      return "xtheadsync";
+    case INSN_CLASS_XTHEADVECTOR:
+      return "xtheadvector";
+    case INSN_CLASS_XTHEADVDOT:
+      return "xtheadvdot";
+    case INSN_CLASS_XTHEADZVAMO:
+      return "xtheadzvamo";
+    case INSN_CLASS_XSFCEASE:
+      return "xsfcease";
+    default:
+      rps->error_handler
+        (_("internal: unreachable INSN_CLASS_*"));
+      return NULL;
+    }
+}
+
+/* Print supported extensions with versions if -march=help.  */
+
+void
+riscv_print_extensions (void)
+{
+  /* Record the previous printed extension.
+     Print the current one if they are not the same.  */
+  const struct riscv_supported_ext *cur = NULL, *prev = NULL;
+  int i, j;
+
+  printf ("All available -march extensions for RISC-V:");
+
+  for (i = 0; riscv_all_supported_ext[i] != NULL; i++)
+    {
+      const struct riscv_supported_ext *exts = riscv_all_supported_ext[i];
+      prev = NULL;
+      for (j = 0; exts[j].name != NULL; j++)
+	{
+	  cur = &exts[j];
+	  /* Unclear version information, skip.  */
+	  if (cur->isa_spec_class == ISA_SPEC_CLASS_NONE
+	      || cur->major_version == RISCV_UNKNOWN_VERSION
+	      || cur->minor_version == RISCV_UNKNOWN_VERSION)
+	    continue;
+
+	  /* Same extension.  */
+	  if (prev && strcmp (prev->name, cur->name) == 0)
+	    {
+	      /* Same version, skip.  */
+	      if (prev->major_version == cur->major_version
+		  && prev->minor_version == cur->minor_version)
+		continue;
+	      /* Different version, print version with comma.  */
+	      else
+		printf (", %d.%d", cur->major_version, cur->minor_version);
+	    }
+	  /* Different extension, print extension and version with newline.  */
+	  else
+	    printf ("\n\t%-40s%d.%d", cur->name, cur->major_version,
+		    cur->minor_version);
+	  prev = &exts[j];
+	}
+    }
+  printf ("\n");
+}
+
+/* Find the first input bfd with GNU property and merge it with GPROP.  If no
+   such input is found, add it to a new section at the last input.  Update
+   GPROP accordingly.  */
+
+bfd *
+_bfd_riscv_elf_link_setup_gnu_properties (struct bfd_link_info *info,
+					  uint32_t *and_prop_p)
+{
+  asection *sec;
+  bfd *pbfd;
+  bfd *ebfd = NULL;
+  elf_property *prop;
+
+  uint32_t and_prop = *and_prop_p;
+
+  /* Find a normal input file with GNU property note.  */
+  for (pbfd = info->input_bfds; pbfd != NULL; pbfd = pbfd->link.next)
+    if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour
+	&& bfd_count_sections (pbfd) != 0)
+      {
+	ebfd = pbfd;
+
+	if (elf_properties (pbfd) != NULL)
+	  break;
+      }
+
+  /* If ebfd != NULL it is either an input with property note or the last
+     input.  Either way if we have and_prop, we should add it (by
+     creating a section if needed).  */
+  if (ebfd != NULL && (and_prop))
+    {
+      prop = _bfd_elf_get_property (ebfd, GNU_PROPERTY_RISCV_FEATURE_1_AND, 4);
+
+      prop->u.number |= and_prop;
+      prop->pr_kind = property_number;
+
+      /* pbfd being NULL implies ebfd is the last input.  Create the GNU
+	 property note section.  */
+      if (pbfd == NULL)
+	{
+	  sec
+	    = bfd_make_section_with_flags (ebfd, NOTE_GNU_PROPERTY_SECTION_NAME,
+					   (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY
+					    | SEC_READONLY | SEC_HAS_CONTENTS
+					    | SEC_DATA));
+	  if (sec == NULL)
+	    info->callbacks->fatal (
+	      _("%P: failed to create GNU property section\n"));
+
+	  elf_section_type (sec) = SHT_NOTE;
+	}
+    }
+
+  pbfd = _bfd_elf_link_setup_gnu_properties (info);
+
+  if (bfd_link_relocatable (info))
+    return pbfd;
+
+  /* If pbfd has any GNU_PROPERTY_RISCV_FEATURE_1_AND properties, update
+  and_prop accordingly.  */
+  if (pbfd != NULL)
+    {
+      elf_property_list *p;
+      elf_property_list *plist = elf_properties (pbfd);
+
+      if ((p = _bfd_elf_find_property (plist, GNU_PROPERTY_RISCV_FEATURE_1_AND,
+				       NULL))
+	  != NULL)
+	and_prop = p->property.u.number
+		   & (GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED
+		      | GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS);
+    }
+
+  *and_prop_p = and_prop;
+  return pbfd;
+}
+
+/* Define elf_backend_parse_gnu_properties for RISC-V.  */
+
+enum elf_property_kind
+_bfd_riscv_elf_parse_gnu_properties (bfd *abfd, unsigned int type,
+				     bfd_byte *ptr, unsigned int datasz)
+{
+  elf_property *prop;
+
+  switch (type)
+    {
+    case GNU_PROPERTY_RISCV_FEATURE_1_AND:
+      if (datasz != 4)
+	{
+	  _bfd_error_handler (_ (
+				"error: %pB: <corrupt RISC-V used size: 0x%x>"),
+			      abfd, datasz);
+	  return property_corrupt;
+	}
+      prop = _bfd_elf_get_property (abfd, type, datasz);
+      /* Combine properties of the same type.  */
+      prop->u.number |= bfd_h_get_32 (abfd, ptr);
+      prop->pr_kind = property_number;
+      break;
+
+    default:
+      return property_ignored;
+    }
+
+  return property_number;
+}
+
+/* Merge RISC-V GNU property BPROP with APROP also accounting for PROP.
+   If APROP isn't NULL, merge it with BPROP and/or PROP.  Vice-versa if BROP
+   isn't NULL.  Return TRUE if there is any update to APROP or if BPROP should
+   be merge with ABFD.  */
+
+bool
+_bfd_riscv_elf_merge_gnu_properties
+  (struct bfd_link_info *info ATTRIBUTE_UNUSED, bfd *abfd ATTRIBUTE_UNUSED,
+   elf_property *aprop, elf_property *bprop, uint32_t and_prop)
+{
+  unsigned int orig_number;
+  bool updated = false;
+  unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type;
+
+  switch (pr_type)
+    {
+      case GNU_PROPERTY_RISCV_FEATURE_1_AND: {
+	if (aprop != NULL && bprop != NULL)
+	  {
+	    orig_number = aprop->u.number;
+	    aprop->u.number = (orig_number & bprop->u.number) | and_prop;
+	    updated = orig_number != aprop->u.number;
+	    /* Remove the property if all feature bits are cleared.  */
+	    if (aprop->u.number == 0)
+	      aprop->pr_kind = property_remove;
+	    break;
+	  }
+	/* If either is NULL, the AND would be 0 so, if there is
+	   any PROP, asign it to the input that is not NULL.  */
+	if (and_prop)
+	  {
+	    if (aprop != NULL)
+	      {
+		orig_number = aprop->u.number;
+		aprop->u.number = and_prop;
+		updated = orig_number != aprop->u.number;
+	      }
+	    else if (bprop != NULL)
+	      {
+		bprop->u.number = and_prop;
+		updated = true;
+	      }
+	    /* Shouldn't happen because we checked one of APROP or BPROP !=
+	     * NULL. */
+	    else
+	      abort ();
+	  }
+	/* No PROP and BPROP is NULL, so remove APROP.  */
+	else if (!and_prop && bprop == NULL && aprop != NULL)
+	  {
+	    aprop->pr_kind = property_remove;
+	    updated = true;
+	  }
+      }
+      break;
+
+    default:
+      abort ();
+    }
+
+  return updated;
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-riscv.h ./bfd/elfxx-riscv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-riscv.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-riscv.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* RISC-V ELF specific backend routines.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    Contributed by Andrew Waterman (andrew@sifive.com).
    Based on MIPS target.
@@ -22,6 +22,29 @@
 
 #include "elf/common.h"
 #include "elf/internal.h"
+#include "opcode/riscv.h"
+#include "cpu-riscv.h"
+
+#define RISCV_UNKNOWN_VERSION -1
+
+typedef enum
+{
+    PLT_NORMAL            = 0x0,  /* Normal plts.  */
+    PLT_ZICFILP_UNLABELED = 0x1   /* Landing pad unlabeled plts.  */
+} riscv_plt_type;
+
+struct riscv_elf_params
+{
+  /* Whether to relax code sequences to GP-relative addressing.  */
+  bool relax_gp;
+  /* Whether to check if SUB_ULEB128 relocation has non-zero addend.  */
+  bool check_uleb128;
+};
+
+extern void riscv_elf32_set_options (struct bfd_link_info *,
+				     struct riscv_elf_params *);
+extern void riscv_elf64_set_options (struct bfd_link_info *,
+				     struct riscv_elf_params *);
 
 extern reloc_howto_type *
 riscv_reloc_name_lookup (bfd *, const char *);
@@ -32,8 +55,6 @@ riscv_reloc_type_lookup (bfd *, bfd_relo
 extern reloc_howto_type *
 riscv_elf_rtype_to_howto (bfd *, unsigned int r_type);
 
-#define RISCV_DONT_CARE_VERSION -1
-
 /* The information of architecture attribute.  */
 struct riscv_subset_t
 {
@@ -45,9 +66,11 @@ struct riscv_subset_t
 
 typedef struct riscv_subset_t riscv_subset_t;
 
-typedef struct {
+typedef struct
+{
   riscv_subset_t *head;
   riscv_subset_t *tail;
+  const char *arch_str;
 } riscv_subset_list_t;
 
 extern void
@@ -58,31 +81,72 @@ riscv_add_subset (riscv_subset_list_t *,
 		  const char *,
 		  int, int);
 
-extern riscv_subset_t *
+extern bool
 riscv_lookup_subset (const riscv_subset_list_t *,
-		     const char *);
-
-extern riscv_subset_t *
-riscv_lookup_subset_version (const riscv_subset_list_t *,
-			     const char *,
-			     int, int);
+		     const char *,
+		     riscv_subset_t **);
 
-typedef struct {
+typedef struct
+{
   riscv_subset_list_t *subset_list;
   void (*error_handler) (const char *,
 			 ...) ATTRIBUTE_PRINTF_1;
   unsigned *xlen;
+  enum riscv_spec_class *isa_spec;
+  bool check_unknown_prefixed_ext;
 } riscv_parse_subset_t;
 
-extern bfd_boolean
+extern bool
 riscv_parse_subset (riscv_parse_subset_t *,
 		    const char *);
 
-extern const char *
-riscv_supported_std_ext (void);
-
 extern void
 riscv_release_subset_list (riscv_subset_list_t *);
 
 extern char *
-riscv_arch_str (unsigned, const riscv_subset_list_t *);
+riscv_arch_str (unsigned, riscv_subset_list_t *, bool);
+
+extern size_t
+riscv_estimate_digit (unsigned);
+
+extern int
+riscv_compare_subsets (const char *, const char *);
+
+extern riscv_subset_list_t *
+riscv_copy_subset_list (riscv_subset_list_t *);
+
+extern bool
+riscv_update_subset (riscv_parse_subset_t *, const char *);
+
+extern bool
+riscv_update_subset_norvc (riscv_parse_subset_t *);
+
+extern bool
+riscv_subset_supports (riscv_parse_subset_t *, const char *);
+
+extern bool
+riscv_multi_subset_supports (riscv_parse_subset_t *, enum riscv_insn_class);
+
+extern const char *
+riscv_multi_subset_supports_ext (riscv_parse_subset_t *, enum riscv_insn_class);
+
+extern void
+riscv_print_extensions (void);
+
+extern void
+bfd_elf32_riscv_set_data_segment_info (struct bfd_link_info *, int *);
+extern void
+bfd_elf64_riscv_set_data_segment_info (struct bfd_link_info *, int *);
+
+extern bfd *
+_bfd_riscv_elf_link_setup_gnu_properties (struct bfd_link_info *, uint32_t *);
+
+extern enum elf_property_kind
+_bfd_riscv_elf_parse_gnu_properties (bfd *, unsigned int, bfd_byte *,
+				     unsigned int);
+
+extern bool
+_bfd_riscv_elf_merge_gnu_properties (struct bfd_link_info *, bfd *,
+				     elf_property *, elf_property *, uint32_t);
+
+#define elf_backend_parse_gnu_properties _bfd_riscv_elf_parse_gnu_properties
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-sparc.c ./bfd/elfxx-sparc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-sparc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-sparc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* SPARC-specific support for ELF
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -209,106 +209,106 @@ sparc_elf_lox10_reloc (bfd *abfd, arelen
 
 static reloc_howto_type _bfd_sparc_elf_howto_table[] =
 {
-  HOWTO(R_SPARC_NONE,	   0,3, 0,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_NONE",	FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_8,	   0,0, 8,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_8",	FALSE,0,0x000000ff,TRUE),
-  HOWTO(R_SPARC_16,	   0,1,16,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_16",	FALSE,0,0x0000ffff,TRUE),
-  HOWTO(R_SPARC_32,	   0,2,32,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_32",	FALSE,0,0xffffffff,TRUE),
-  HOWTO(R_SPARC_DISP8,	   0,0, 8,TRUE, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_DISP8",	FALSE,0,0x000000ff,TRUE),
-  HOWTO(R_SPARC_DISP16,	   0,1,16,TRUE, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_DISP16",	FALSE,0,0x0000ffff,TRUE),
-  HOWTO(R_SPARC_DISP32,	   0,2,32,TRUE, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_DISP32",	FALSE,0,0xffffffff,TRUE),
-  HOWTO(R_SPARC_WDISP30,   2,2,30,TRUE, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_WDISP30", FALSE,0,0x3fffffff,TRUE),
-  HOWTO(R_SPARC_WDISP22,   2,2,22,TRUE, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_WDISP22", FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_HI22,	  10,2,22,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_HI22",	FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_22,	   0,2,22,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_22",	FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_13,	   0,2,13,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_13",	FALSE,0,0x00001fff,TRUE),
-  HOWTO(R_SPARC_LO10,	   0,2,10,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_LO10",	FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_GOT10,	   0,2,10,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_GOT10",	FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_GOT13,	   0,2,13,FALSE,0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_GOT13",	FALSE,0,0x00001fff,TRUE),
-  HOWTO(R_SPARC_GOT22,	  10,2,22,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_GOT22",	FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_PC10,	   0,2,10,TRUE, 0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_PC10",	FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_PC22,	  10,2,22,TRUE, 0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_PC22",	FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_WPLT30,	   2,2,30,TRUE, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_WPLT30",	FALSE,0,0x3fffffff,TRUE),
-  HOWTO(R_SPARC_COPY,	   0,0,00,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_COPY",	FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_GLOB_DAT,  0,0,00,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_GLOB_DAT",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_JMP_SLOT,  0,0,00,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_JMP_SLOT",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_RELATIVE,  0,0,00,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_RELATIVE",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_UA32,	   0,2,32,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_UA32",	FALSE,0,0xffffffff,TRUE),
-  HOWTO(R_SPARC_PLT32,	   0,2,32,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_PLT32",	FALSE,0,0xffffffff,TRUE),
-  HOWTO(R_SPARC_HIPLT22,   0,0,00,FALSE,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_HIPLT22",	 FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_LOPLT10,   0,0,00,FALSE,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_LOPLT10",	 FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_PCPLT32,   0,0,00,FALSE,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_PCPLT32",	 FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_PCPLT22,   0,0,00,FALSE,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_PCPLT22",	 FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_PCPLT10,   0,0,00,FALSE,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_PCPLT10",	 FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_10,	   0,2,10,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_10",	FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_11,	   0,2,11,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_11",	FALSE,0,0x000007ff,TRUE),
-  HOWTO(R_SPARC_64,	   0,4,64,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_64",	FALSE,0,MINUS_ONE, TRUE),
-  HOWTO(R_SPARC_OLO10,	   0,2,13,FALSE,0,complain_overflow_signed,  sparc_elf_notsup_reloc, "R_SPARC_OLO10",	FALSE,0,0x00001fff,TRUE),
-  HOWTO(R_SPARC_HH22,	  42,2,22,FALSE,0,complain_overflow_unsigned,bfd_elf_generic_reloc,  "R_SPARC_HH22",	FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_HM10,	  32,2,10,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_HM10",	FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_LM22,	  10,2,22,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_LM22",	FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_PC_HH22,  42,2,22,TRUE, 0,complain_overflow_unsigned,bfd_elf_generic_reloc,  "R_SPARC_PC_HH22",	   FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_PC_HM10,  32,2,10,TRUE, 0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_PC_HM10",	   FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_PC_LM22,  10,2,22,TRUE, 0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_PC_LM22",	   FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_WDISP16,   2,2,16,TRUE, 0,complain_overflow_signed,  sparc_elf_wdisp16_reloc,"R_SPARC_WDISP16", FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_WDISP19,   2,2,19,TRUE, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_WDISP19", FALSE,0,0x0007ffff,TRUE),
-  HOWTO(R_SPARC_UNUSED_42, 0,0, 0,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_UNUSED_42",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_7,	   0,2, 7,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_7",	FALSE,0,0x0000007f,TRUE),
-  HOWTO(R_SPARC_5,	   0,2, 5,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_5",	FALSE,0,0x0000001f,TRUE),
-  HOWTO(R_SPARC_6,	   0,2, 6,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_6",	FALSE,0,0x0000003f,TRUE),
-  HOWTO(R_SPARC_DISP64,	   0,4,64,TRUE, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_DISP64",	FALSE,0,MINUS_ONE, TRUE),
-  HOWTO(R_SPARC_PLT64,	   0,4,64,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_PLT64",	FALSE,0,MINUS_ONE, TRUE),
-  HOWTO(R_SPARC_HIX22,	   0,4, 0,FALSE,0,complain_overflow_bitfield,sparc_elf_hix22_reloc,  "R_SPARC_HIX22",	FALSE,0,MINUS_ONE, FALSE),
-  HOWTO(R_SPARC_LOX10,	   0,4, 0,FALSE,0,complain_overflow_dont,    sparc_elf_lox10_reloc,  "R_SPARC_LOX10",	FALSE,0,MINUS_ONE, FALSE),
-  HOWTO(R_SPARC_H44,	  22,2,22,FALSE,0,complain_overflow_unsigned,bfd_elf_generic_reloc,  "R_SPARC_H44",	FALSE,0,0x003fffff,FALSE),
-  HOWTO(R_SPARC_M44,	  12,2,10,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_M44",	FALSE,0,0x000003ff,FALSE),
-  HOWTO(R_SPARC_L44,	   0,2,13,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_L44",	FALSE,0,0x00000fff,FALSE),
-  HOWTO(R_SPARC_REGISTER,  0,4, 0,FALSE,0,complain_overflow_bitfield,sparc_elf_notsup_reloc, "R_SPARC_REGISTER",FALSE,0,MINUS_ONE, FALSE),
-  HOWTO(R_SPARC_UA64,	     0,4,64,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_UA64",	    FALSE,0,MINUS_ONE, TRUE),
-  HOWTO(R_SPARC_UA16,	     0,1,16,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_UA16",	    FALSE,0,0x0000ffff,TRUE),
-  HOWTO(R_SPARC_TLS_GD_HI22,10,2,22,FALSE,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_GD_HI22",FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_TLS_GD_LO10,0,2,10,FALSE,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_GD_LO10",FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_TLS_GD_ADD,0,0, 0,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_TLS_GD_ADD",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_GD_CALL,2,2,30,TRUE,0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_TLS_GD_CALL",FALSE,0,0x3fffffff,TRUE),
-  HOWTO(R_SPARC_TLS_LDM_HI22,10,2,22,FALSE,0,complain_overflow_dont, bfd_elf_generic_reloc,  "R_SPARC_TLS_LDM_HI22",FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_TLS_LDM_LO10,0,2,10,FALSE,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_LDM_LO10",FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_TLS_LDM_ADD,0,0, 0,FALSE,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_LDM_ADD",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_LDM_CALL,2,2,30,TRUE,0,complain_overflow_signed, bfd_elf_generic_reloc,  "R_SPARC_TLS_LDM_CALL",FALSE,0,0x3fffffff,TRUE),
-  HOWTO(R_SPARC_TLS_LDO_HIX22,0,2,0,FALSE,0,complain_overflow_bitfield,sparc_elf_hix22_reloc,"R_SPARC_TLS_LDO_HIX22",FALSE,0,0x003fffff, FALSE),
-  HOWTO(R_SPARC_TLS_LDO_LOX10,0,2,0,FALSE,0,complain_overflow_dont,  sparc_elf_lox10_reloc,  "R_SPARC_TLS_LDO_LOX10",FALSE,0,0x000003ff, FALSE),
-  HOWTO(R_SPARC_TLS_LDO_ADD,0,0, 0,FALSE,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_LDO_ADD",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_IE_HI22,10,2,22,FALSE,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_HI22",FALSE,0,0x003fffff,TRUE),
-  HOWTO(R_SPARC_TLS_IE_LO10,0,2,10,FALSE,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_LO10",FALSE,0,0x000003ff,TRUE),
-  HOWTO(R_SPARC_TLS_IE_LD,0,0, 0,FALSE,0,complain_overflow_dont,     bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_LD",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_IE_LDX,0,0, 0,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_LDX",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_IE_ADD,0,0, 0,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_ADD",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_LE_HIX22,0,2,0,FALSE,0,complain_overflow_bitfield,sparc_elf_hix22_reloc, "R_SPARC_TLS_LE_HIX22",FALSE,0,0x003fffff, FALSE),
-  HOWTO(R_SPARC_TLS_LE_LOX10,0,2,0,FALSE,0,complain_overflow_dont,   sparc_elf_lox10_reloc,  "R_SPARC_TLS_LE_LOX10",FALSE,0,0x000003ff, FALSE),
-  HOWTO(R_SPARC_TLS_DTPMOD32,0,0, 0,FALSE,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_DTPMOD32",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_DTPMOD64,0,0, 0,FALSE,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_DTPMOD64",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_DTPOFF32,0,2,32,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,"R_SPARC_TLS_DTPOFF32",FALSE,0,0xffffffff,TRUE),
-  HOWTO(R_SPARC_TLS_DTPOFF64,0,4,64,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,"R_SPARC_TLS_DTPOFF64",FALSE,0,MINUS_ONE,TRUE),
-  HOWTO(R_SPARC_TLS_TPOFF32,0,0, 0,FALSE,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_TPOFF32",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_TLS_TPOFF64,0,0, 0,FALSE,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_TPOFF64",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_GOTDATA_HIX22,0,2,0,FALSE,0,complain_overflow_bitfield,sparc_elf_hix22_reloc,"R_SPARC_GOTDATA_HIX22",FALSE,0,0x003fffff, FALSE),
-  HOWTO(R_SPARC_GOTDATA_LOX10,0,2,0,FALSE,0,complain_overflow_dont,  sparc_elf_lox10_reloc,  "R_SPARC_GOTDATA_LOX10",FALSE,0,0x000003ff, FALSE),
-  HOWTO(R_SPARC_GOTDATA_OP_HIX22,0,2,0,FALSE,0,complain_overflow_bitfield,sparc_elf_hix22_reloc,"R_SPARC_GOTDATA_OP_HIX22",FALSE,0,0x003fffff, FALSE),
-  HOWTO(R_SPARC_GOTDATA_OP_LOX10,0,2,0,FALSE,0,complain_overflow_dont,	sparc_elf_lox10_reloc,	"R_SPARC_GOTDATA_OP_LOX10",FALSE,0,0x000003ff, FALSE),
-  HOWTO(R_SPARC_GOTDATA_OP,0,0, 0,FALSE,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_GOTDATA_OP",FALSE,0,0x00000000,TRUE),
-  HOWTO(R_SPARC_H34,12,2,22,FALSE,0,complain_overflow_unsigned,bfd_elf_generic_reloc,"R_SPARC_H34",FALSE,0,0x003fffff,FALSE),
-  HOWTO(R_SPARC_SIZE32,0,2,32,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,"R_SPARC_SIZE32",FALSE,0,0xffffffff,TRUE),
-  HOWTO(R_SPARC_SIZE64,0,4,64,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc,"R_SPARC_SIZE64",FALSE,0,MINUS_ONE, TRUE),
-  HOWTO(R_SPARC_WDISP10,2,2,10,TRUE, 0,complain_overflow_signed,sparc_elf_wdisp10_reloc,"R_SPARC_WDISP10",FALSE,0,0x00000000,TRUE),
+  HOWTO(R_SPARC_NONE,	   0,0, 0,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_NONE",	false,0,0x00000000,true),
+  HOWTO(R_SPARC_8,	   0,1, 8,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_8",	false,0,0x000000ff,true),
+  HOWTO(R_SPARC_16,	   0,2,16,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_16",	false,0,0x0000ffff,true),
+  HOWTO(R_SPARC_32,	   0,4,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_32",	false,0,0xffffffff,true),
+  HOWTO(R_SPARC_DISP8,	   0,1, 8,true, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_DISP8",	false,0,0x000000ff,true),
+  HOWTO(R_SPARC_DISP16,	   0,2,16,true, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_DISP16",	false,0,0x0000ffff,true),
+  HOWTO(R_SPARC_DISP32,	   0,4,32,true, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_DISP32",	false,0,0xffffffff,true),
+  HOWTO(R_SPARC_WDISP30,   2,4,30,true, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_WDISP30", false,0,0x3fffffff,true),
+  HOWTO(R_SPARC_WDISP22,   2,4,22,true, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_WDISP22", false,0,0x003fffff,true),
+  HOWTO(R_SPARC_HI22,	  10,4,22,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_HI22",	false,0,0x003fffff,true),
+  HOWTO(R_SPARC_22,	   0,4,22,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_22",	false,0,0x003fffff,true),
+  HOWTO(R_SPARC_13,	   0,4,13,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_13",	false,0,0x00001fff,true),
+  HOWTO(R_SPARC_LO10,	   0,4,10,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_LO10",	false,0,0x000003ff,true),
+  HOWTO(R_SPARC_GOT10,	   0,4,10,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_GOT10",	false,0,0x000003ff,true),
+  HOWTO(R_SPARC_GOT13,	   0,4,13,false,0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_GOT13",	false,0,0x00001fff,true),
+  HOWTO(R_SPARC_GOT22,	  10,4,22,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_GOT22",	false,0,0x003fffff,true),
+  HOWTO(R_SPARC_PC10,	   0,4,10,true, 0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_PC10",	false,0,0x000003ff,true),
+  HOWTO(R_SPARC_PC22,	  10,4,22,true, 0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_PC22",	false,0,0x003fffff,true),
+  HOWTO(R_SPARC_WPLT30,	   2,4,30,true, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_WPLT30",	false,0,0x3fffffff,true),
+  HOWTO(R_SPARC_COPY,	   0,0,00,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_COPY",	false,0,0x00000000,true),
+  HOWTO(R_SPARC_GLOB_DAT,  0,0,00,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_GLOB_DAT",false,0,0x00000000,true),
+  HOWTO(R_SPARC_JMP_SLOT,  0,0,00,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_JMP_SLOT",false,0,0x00000000,true),
+  HOWTO(R_SPARC_RELATIVE,  0,0,00,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_RELATIVE",false,0,0x00000000,true),
+  HOWTO(R_SPARC_UA32,	   0,4,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_UA32",	false,0,0xffffffff,true),
+  HOWTO(R_SPARC_PLT32,	   0,4,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_PLT32",	false,0,0xffffffff,true),
+  HOWTO(R_SPARC_HIPLT22,   0,0,00,false,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_HIPLT22",	 false,0,0x00000000,true),
+  HOWTO(R_SPARC_LOPLT10,   0,0,00,false,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_LOPLT10",	 false,0,0x00000000,true),
+  HOWTO(R_SPARC_PCPLT32,   0,0,00,false,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_PCPLT32",	 false,0,0x00000000,true),
+  HOWTO(R_SPARC_PCPLT22,   0,0,00,false,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_PCPLT22",	 false,0,0x00000000,true),
+  HOWTO(R_SPARC_PCPLT10,   0,0,00,false,0,complain_overflow_dont,    sparc_elf_notsup_reloc, "R_SPARC_PCPLT10",	 false,0,0x00000000,true),
+  HOWTO(R_SPARC_10,	   0,4,10,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_10",	false,0,0x000003ff,true),
+  HOWTO(R_SPARC_11,	   0,4,11,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_11",	false,0,0x000007ff,true),
+  HOWTO(R_SPARC_64,	   0,8,64,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_64",	false,0,MINUS_ONE, true),
+  HOWTO(R_SPARC_OLO10,	   0,4,13,false,0,complain_overflow_signed,  sparc_elf_notsup_reloc, "R_SPARC_OLO10",	false,0,0x00001fff,true),
+  HOWTO(R_SPARC_HH22,	  42,4,22,false,0,complain_overflow_unsigned,bfd_elf_generic_reloc,  "R_SPARC_HH22",	false,0,0x003fffff,true),
+  HOWTO(R_SPARC_HM10,	  32,4,10,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_HM10",	false,0,0x000003ff,true),
+  HOWTO(R_SPARC_LM22,	  10,4,22,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_LM22",	false,0,0x003fffff,true),
+  HOWTO(R_SPARC_PC_HH22,  42,4,22,true, 0,complain_overflow_unsigned,bfd_elf_generic_reloc,  "R_SPARC_PC_HH22",	   false,0,0x003fffff,true),
+  HOWTO(R_SPARC_PC_HM10,  32,4,10,true, 0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_PC_HM10",	   false,0,0x000003ff,true),
+  HOWTO(R_SPARC_PC_LM22,  10,4,22,true, 0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_PC_LM22",	   false,0,0x003fffff,true),
+  HOWTO(R_SPARC_WDISP16,   2,4,16,true, 0,complain_overflow_signed,  sparc_elf_wdisp16_reloc,"R_SPARC_WDISP16", false,0,0x00000000,true),
+  HOWTO(R_SPARC_WDISP19,   2,4,19,true, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_WDISP19", false,0,0x0007ffff,true),
+  HOWTO(R_SPARC_UNUSED_42, 0,0, 0,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_UNUSED_42",false,0,0x00000000,true),
+  HOWTO(R_SPARC_7,	   0,4, 7,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_7",	false,0,0x0000007f,true),
+  HOWTO(R_SPARC_5,	   0,4, 5,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_5",	false,0,0x0000001f,true),
+  HOWTO(R_SPARC_6,	   0,4, 6,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_6",	false,0,0x0000003f,true),
+  HOWTO(R_SPARC_DISP64,	   0,8,64,true, 0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_DISP64",	false,0,MINUS_ONE, true),
+  HOWTO(R_SPARC_PLT64,	   0,8,64,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_PLT64",	false,0,MINUS_ONE, true),
+  HOWTO(R_SPARC_HIX22,	   0,8, 0,false,0,complain_overflow_bitfield,sparc_elf_hix22_reloc,  "R_SPARC_HIX22",	false,0,MINUS_ONE, false),
+  HOWTO(R_SPARC_LOX10,	   0,8, 0,false,0,complain_overflow_dont,    sparc_elf_lox10_reloc,  "R_SPARC_LOX10",	false,0,MINUS_ONE, false),
+  HOWTO(R_SPARC_H44,	  22,4,22,false,0,complain_overflow_unsigned,bfd_elf_generic_reloc,  "R_SPARC_H44",	false,0,0x003fffff,false),
+  HOWTO(R_SPARC_M44,	  12,4,10,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_M44",	false,0,0x000003ff,false),
+  HOWTO(R_SPARC_L44,	   0,4,13,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_L44",	false,0,0x00000fff,false),
+  HOWTO(R_SPARC_REGISTER,  0,8, 0,false,0,complain_overflow_bitfield,sparc_elf_notsup_reloc, "R_SPARC_REGISTER",false,0,MINUS_ONE, false),
+  HOWTO(R_SPARC_UA64,	   0,8,64,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_UA64",	    false,0,MINUS_ONE, true),
+  HOWTO(R_SPARC_UA16,	   0,2,16,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,  "R_SPARC_UA16",	    false,0,0x0000ffff,true),
+  HOWTO(R_SPARC_TLS_GD_HI22,10,4,22,false,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_GD_HI22",false,0,0x003fffff,true),
+  HOWTO(R_SPARC_TLS_GD_LO10,0,4,10,false,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_GD_LO10",false,0,0x000003ff,true),
+  HOWTO(R_SPARC_TLS_GD_ADD,0,0, 0,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_TLS_GD_ADD",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_GD_CALL,2,4,30,true,0,complain_overflow_signed,  bfd_elf_generic_reloc,  "R_SPARC_TLS_GD_CALL",false,0,0x3fffffff,true),
+  HOWTO(R_SPARC_TLS_LDM_HI22,10,4,22,false,0,complain_overflow_dont, bfd_elf_generic_reloc,  "R_SPARC_TLS_LDM_HI22",false,0,0x003fffff,true),
+  HOWTO(R_SPARC_TLS_LDM_LO10,0,4,10,false,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_LDM_LO10",false,0,0x000003ff,true),
+  HOWTO(R_SPARC_TLS_LDM_ADD,0,0, 0,false,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_LDM_ADD",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_LDM_CALL,2,4,30,true,0,complain_overflow_signed, bfd_elf_generic_reloc,  "R_SPARC_TLS_LDM_CALL",false,0,0x3fffffff,true),
+  HOWTO(R_SPARC_TLS_LDO_HIX22,0,4,0,false,0,complain_overflow_bitfield,sparc_elf_hix22_reloc,"R_SPARC_TLS_LDO_HIX22",false,0,0x003fffff, false),
+  HOWTO(R_SPARC_TLS_LDO_LOX10,0,4,0,false,0,complain_overflow_dont,  sparc_elf_lox10_reloc,  "R_SPARC_TLS_LDO_LOX10",false,0,0x000003ff, false),
+  HOWTO(R_SPARC_TLS_LDO_ADD,0,0, 0,false,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_LDO_ADD",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_IE_HI22,10,4,22,false,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_HI22",false,0,0x003fffff,true),
+  HOWTO(R_SPARC_TLS_IE_LO10,0,4,10,false,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_LO10",false,0,0x000003ff,true),
+  HOWTO(R_SPARC_TLS_IE_LD,0,0, 0,false,0,complain_overflow_dont,     bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_LD",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_IE_LDX,0,0, 0,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_LDX",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_IE_ADD,0,0, 0,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_TLS_IE_ADD",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_LE_HIX22,0,4,0,false,0,complain_overflow_bitfield,sparc_elf_hix22_reloc, "R_SPARC_TLS_LE_HIX22",false,0,0x003fffff, false),
+  HOWTO(R_SPARC_TLS_LE_LOX10,0,4,0,false,0,complain_overflow_dont,   sparc_elf_lox10_reloc,  "R_SPARC_TLS_LE_LOX10",false,0,0x000003ff, false),
+  HOWTO(R_SPARC_TLS_DTPMOD32,0,0, 0,false,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_DTPMOD32",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_DTPMOD64,0,0, 0,false,0,complain_overflow_dont,  bfd_elf_generic_reloc,  "R_SPARC_TLS_DTPMOD64",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_DTPOFF32,0,4,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,"R_SPARC_TLS_DTPOFF32",false,0,0xffffffff,true),
+  HOWTO(R_SPARC_TLS_DTPOFF64,0,8,64,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,"R_SPARC_TLS_DTPOFF64",false,0,MINUS_ONE,true),
+  HOWTO(R_SPARC_TLS_TPOFF32,0,0, 0,false,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_TPOFF32",false,0,0x00000000,true),
+  HOWTO(R_SPARC_TLS_TPOFF64,0,0, 0,false,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_TLS_TPOFF64",false,0,0x00000000,true),
+  HOWTO(R_SPARC_GOTDATA_HIX22,0,4,0,false,0,complain_overflow_bitfield,sparc_elf_hix22_reloc,"R_SPARC_GOTDATA_HIX22",false,0,0x003fffff, false),
+  HOWTO(R_SPARC_GOTDATA_LOX10,0,4,0,false,0,complain_overflow_dont,  sparc_elf_lox10_reloc,  "R_SPARC_GOTDATA_LOX10",false,0,0x000003ff, false),
+  HOWTO(R_SPARC_GOTDATA_OP_HIX22,0,4,0,false,0,complain_overflow_bitfield,sparc_elf_hix22_reloc,"R_SPARC_GOTDATA_OP_HIX22",false,0,0x003fffff, false),
+  HOWTO(R_SPARC_GOTDATA_OP_LOX10,0,4,0,false,0,complain_overflow_dont,	sparc_elf_lox10_reloc,	"R_SPARC_GOTDATA_OP_LOX10",false,0,0x000003ff, false),
+  HOWTO(R_SPARC_GOTDATA_OP,0,0, 0,false,0,complain_overflow_dont,   bfd_elf_generic_reloc,  "R_SPARC_GOTDATA_OP",false,0,0x00000000,true),
+  HOWTO(R_SPARC_H34,12,4,22,false,0,complain_overflow_unsigned,bfd_elf_generic_reloc,"R_SPARC_H34",false,0,0x003fffff,false),
+  HOWTO(R_SPARC_SIZE32,0,4,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,"R_SPARC_SIZE32",false,0,0xffffffff,true),
+  HOWTO(R_SPARC_SIZE64,0,8,64,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc,"R_SPARC_SIZE64",false,0,MINUS_ONE, true),
+  HOWTO(R_SPARC_WDISP10,2,4,10,true, 0,complain_overflow_signed,sparc_elf_wdisp10_reloc,"R_SPARC_WDISP10",false,0,0x00000000,true),
 };
 static reloc_howto_type sparc_jmp_irel_howto =
-  HOWTO(R_SPARC_JMP_IREL,  0,0,00,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_JMP_IREL",FALSE,0,0x00000000,TRUE);
+  HOWTO(R_SPARC_JMP_IREL,  0,0,00,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_JMP_IREL",false,0,0x00000000,true);
 static reloc_howto_type sparc_irelative_howto =
-  HOWTO(R_SPARC_IRELATIVE,  0,0,00,FALSE,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_IRELATIVE",FALSE,0,0x00000000,TRUE);
+  HOWTO(R_SPARC_IRELATIVE,  0,0,00,false,0,complain_overflow_dont,    bfd_elf_generic_reloc,  "R_SPARC_IRELATIVE",false,0,0x00000000,true);
 static reloc_howto_type sparc_vtinherit_howto =
-  HOWTO (R_SPARC_GNU_VTINHERIT, 0,2,0,FALSE,0,complain_overflow_dont, NULL, "R_SPARC_GNU_VTINHERIT", FALSE,0, 0, FALSE);
+  HOWTO (R_SPARC_GNU_VTINHERIT, 0,4,0,false,0,complain_overflow_dont, NULL, "R_SPARC_GNU_VTINHERIT", false,0, 0, false);
 static reloc_howto_type sparc_vtentry_howto =
-  HOWTO (R_SPARC_GNU_VTENTRY, 0,2,0,FALSE,0,complain_overflow_dont, _bfd_elf_rel_vtable_reloc_fn,"R_SPARC_GNU_VTENTRY", FALSE,0,0, FALSE);
+  HOWTO (R_SPARC_GNU_VTENTRY, 0,4,0,false,0,complain_overflow_dont, _bfd_elf_rel_vtable_reloc_fn,"R_SPARC_GNU_VTENTRY", false,0,0, false);
 static reloc_howto_type sparc_rev32_howto =
-  HOWTO(R_SPARC_REV32, 0,2,32,FALSE,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_REV32", FALSE,0,0xffffffff,TRUE);
+  HOWTO(R_SPARC_REV32, 0,4,32,false,0,complain_overflow_bitfield,bfd_elf_generic_reloc, "R_SPARC_REV32", false,0,0xffffffff,true);
 
 reloc_howto_type *
 _bfd_sparc_elf_reloc_type_lookup (bfd *abfd,
@@ -650,7 +650,7 @@ _bfd_sparc_elf_info_to_howto_ptr (bfd *a
 #define SPARC_ELF_R_TYPE(r_info)	\
 	((r_info) & 0xff)
 
-bfd_boolean
+bool
 _bfd_sparc_elf_info_to_howto (bfd *abfd, arelent *cache_ptr,
 			      Elf_Internal_Rela *dst)
 {
@@ -659,9 +659,9 @@ _bfd_sparc_elf_info_to_howto (bfd *abfd,
   if ((cache_ptr->howto = _bfd_sparc_elf_info_to_howto_ptr (abfd, r_type)) == NULL)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 
@@ -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
@@ -720,7 +717,7 @@ struct _bfd_sparc_elf_obj_tdata
   char *local_got_tls_type;
 
   /* TRUE if TLS GD relocs has been seen for this object.  */
-  bfd_boolean has_tlsgd;
+  bool has_tlsgd;
 };
 
 #define _bfd_sparc_elf_tdata(abfd) \
@@ -734,11 +731,11 @@ struct _bfd_sparc_elf_obj_tdata
    && elf_tdata (bfd) != NULL				\
    && elf_object_id (bfd) == SPARC_ELF_DATA)
 
-bfd_boolean
+bool
 _bfd_sparc_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd, sizeof (struct _bfd_sparc_elf_obj_tdata),
-				  SPARC_ELF_DATA);
+  return bfd_elf_allocate_object (abfd,
+				  sizeof (struct _bfd_sparc_elf_obj_tdata));
 }
 
 static void
@@ -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;
@@ -1074,7 +1070,7 @@ elf_sparc_local_htab_eq (const void *ptr
 static struct elf_link_hash_entry *
 elf_sparc_get_local_sym_hash (struct _bfd_sparc_elf_link_hash_table *htab,
 			      bfd *abfd, const Elf_Internal_Rela *rel,
-			      bfd_boolean create)
+			      bool create)
 {
   struct _bfd_sparc_elf_link_hash_entry e, *ret;
   asection *sec = abfd->sections;
@@ -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)
@@ -1182,8 +1178,7 @@ _bfd_sparc_elf_link_hash_table_create (b
     }
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
-				      sizeof (struct _bfd_sparc_elf_link_hash_entry),
-				      SPARC_ELF_DATA))
+				      sizeof (struct _bfd_sparc_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1208,7 +1203,7 @@ _bfd_sparc_elf_link_hash_table_create (b
    .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
    hash table.  */
 
-bfd_boolean
+bool
 _bfd_sparc_elf_create_dynamic_sections (bfd *dynobj,
 					struct bfd_link_info *info)
 {
@@ -1218,12 +1213,12 @@ _bfd_sparc_elf_create_dynamic_sections (
   BFD_ASSERT (htab != NULL);
 
   if (!_bfd_elf_create_dynamic_sections (dynobj, info))
-    return FALSE;
+    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;
+	return false;
       if (bfd_link_pic (info))
 	{
 	  htab->plt_header_size
@@ -1244,10 +1239,10 @@ _bfd_sparc_elf_create_dynamic_sections (
       || (!bfd_link_pic (info) && !htab->elf.srelbss))
     abort ();
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 create_ifunc_sections (bfd *abfd, struct bfd_link_info *info)
 {
   const struct elf_backend_data *bed = get_elf_backend_data (abfd);
@@ -1256,7 +1251,7 @@ create_ifunc_sections (bfd *abfd, struct
   asection *s;
 
   if (htab->irelifunc != NULL || htab->iplt != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
   pltflags = flags | SEC_ALLOC | SEC_CODE | SEC_LOAD;
@@ -1264,17 +1259,17 @@ create_ifunc_sections (bfd *abfd, struct
   s = bfd_make_section_with_flags (abfd, ".iplt", pltflags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->plt_alignment))
-    return FALSE;
+    return false;
   htab->iplt = s;
 
   s = bfd_make_section_with_flags (abfd, ".rela.iplt",
 				   flags | SEC_READONLY);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->irelplt = s;
 
-  return TRUE;
+  return true;
 }
 
 /* Copy the extra info we tack onto an elf_link_hash_entry.  */
@@ -1289,37 +1284,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;
@@ -1368,7 +1332,7 @@ sparc_elf_tls_transition (struct bfd_lin
    allocate space in the global offset table or procedure linkage
    table.  */
 
-bfd_boolean
+bool
 _bfd_sparc_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			     asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -1379,10 +1343,10 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
   const Elf_Internal_Rela *rel_end;
   asection *sreloc;
   int num_relocs;
-  bfd_boolean checked_tlsgd = FALSE;
+  bool checked_tlsgd = false;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = _bfd_sparc_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -1401,7 +1365,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
   if (htab->elf.dynobj == NULL)
     htab->elf.dynobj = abfd;
   if (!create_ifunc_sections (htab->elf.dynobj, info))
-    return FALSE;
+    return false;
 
   rel_end = relocs + num_relocs;
   for (rel = relocs; rel < rel_end; rel++)
@@ -1419,23 +1383,24 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 	{
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"), abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       isym = NULL;
       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;
+	    return false;
 
 	  /* Check relocation against local STT_GNU_IFUNC symbol.  */
 	  if (ELF_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
 	    {
-	      h = elf_sparc_get_local_sym_hash (htab, abfd, rel, TRUE);
+	      h = elf_sparc_get_local_sym_hash (htab, abfd, rel, true);
 	      if (h == NULL)
-		return FALSE;
+		return false;
 
 	      /* Fake a STT_GNU_IFUNC symbol.  */
 	      h->type = STT_GNU_IFUNC;
@@ -1461,6 +1426,16 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 	  h->plt.refcount += 1;
 	}
 
+      /* If a relocation refers to _GLOBAL_OFFSET_TABLE_, create the .got.  */
+      if (h != NULL
+	  && htab->elf.sgot == NULL
+	  && strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+	{
+	  if (!_bfd_elf_create_got_section (htab->elf.dynobj, info))
+	    return false;
+	  BFD_ASSERT (h == htab->elf.hgot);
+	}
+
       /* Compatibility with old R_SPARC_REV32 reloc conflicting
 	 with R_SPARC_TLS_GD_HI22.  */
       if (! ABI_64_P (abfd) && ! checked_tlsgd)
@@ -1475,15 +1450,15 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 		    || ELF32_R_TYPE (relt->r_info) == R_SPARC_TLS_GD_ADD
 		    || ELF32_R_TYPE (relt->r_info) == R_SPARC_TLS_GD_CALL)
 		  break;
-	      checked_tlsgd = TRUE;
+	      checked_tlsgd = true;
 	      _bfd_sparc_elf_tdata (abfd)->has_tlsgd = relt < rel_end;
 	    }
 	    break;
 	  case R_SPARC_TLS_GD_LO10:
 	  case R_SPARC_TLS_GD_ADD:
 	  case R_SPARC_TLS_GD_CALL:
-	    checked_tlsgd = TRUE;
-	    _bfd_sparc_elf_tdata (abfd)->has_tlsgd = TRUE;
+	    checked_tlsgd = true;
+	    _bfd_sparc_elf_tdata (abfd)->has_tlsgd = true;
 	    break;
 	  }
 
@@ -1559,7 +1534,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 		    local_got_refcounts = ((bfd_signed_vma *)
 					   bfd_zalloc (abfd, size));
 		    if (local_got_refcounts == NULL)
-		      return FALSE;
+		      return false;
 		    elf_local_got_refcounts (abfd) = local_got_refcounts;
 		    _bfd_sparc_elf_local_got_tls_type (abfd)
 		      = (char *) (local_got_refcounts + symtab_hdr->sh_info);
@@ -1589,7 +1564,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 		      /* xgettext:c-format */
 		      (_("%pB: `%s' accessed both as normal and thread local symbol"),
 		       abfd, h ? h->root.root.string : "<local>");
-		    return FALSE;
+		    return false;
 		  }
 
 		if (h != NULL)
@@ -1601,7 +1576,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 
 	  if (!htab->elf.sgot
 	      && !_bfd_elf_create_got_section (htab->elf.dynobj, info))
-	    return FALSE;
+	    return false;
 
 	  if (eh != NULL)
 	    {
@@ -1620,8 +1595,8 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 
 	  /* Essentially R_SPARC_WPLT30 relocs against __tls_get_addr.  */
 	  h = (struct elf_link_hash_entry *)
-	       bfd_link_hash_lookup (info->hash, "__tls_get_addr", FALSE,
-				     FALSE, TRUE);
+	       bfd_link_hash_lookup (info->hash, "__tls_get_addr", false,
+				     false, true);
 	  BFD_ASSERT (h != NULL);
 	  /* Fall through */
 
@@ -1658,7 +1633,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 	      /* It does not make sense to have a procedure linkage
 		 table entry for a local symbol.  */
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  h->needs_plt = 1;
@@ -1680,8 +1655,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 	  if (h != NULL)
 	    h->non_got_ref = 1;
 
-	  if (h != NULL
-	      && strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+	  if (h != NULL && h == htab->elf.hgot)
 	    break;
 	  /* Fall through.  */
 
@@ -1781,16 +1755,16 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
 		    (sec, htab->elf.dynobj, htab->word_align_power,
-		     abfd, /*rela?*/ TRUE);
+		     abfd, /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* 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,11 +1785,11 @@ _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)
-		    return FALSE;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -1832,12 +1806,12 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 
 	case R_SPARC_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_SPARC_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_SPARC_REGISTER:
@@ -1849,7 +1823,7 @@ _bfd_sparc_elf_check_relocs (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 asection *
@@ -1879,7 +1853,7 @@ _bfd_sparc_elf_gc_mark_hook (asection *s
 	     gc marked when processing the other reloc.  That lets
 	     us handle __tls_get_addr here.  */
 	  h = elf_link_hash_lookup (elf_hash_table (info), "__tls_get_addr",
-				    FALSE, FALSE, TRUE);
+				    false, false, true);
 	  BFD_ASSERT (h != NULL);
 	  h->mark = 1;
 	  if (h->is_weakalias)
@@ -1908,7 +1882,7 @@ sparc_elf_find_reloc_at_ofs (Elf_Interna
 /* Remove undefined weak symbol from the dynamic symbol table if it
    is resolved to 0.   */
 
-bfd_boolean
+bool
 _bfd_sparc_elf_fixup_symbol (struct bfd_link_info *info,
 			     struct elf_link_hash_entry *h)
 {
@@ -1920,24 +1894,7 @@ _bfd_sparc_elf_fixup_symbol (struct bfd_
       _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
 			      h->dynstr_index);
     }
-  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;
+  return true;
 }
 
 /* Adjust a symbol defined by a dynamic object and referenced by a
@@ -1946,7 +1903,7 @@ readonly_dynrelocs (struct elf_link_hash
    change the definition to something the rest of the link can
    understand.  */
 
-bfd_boolean
+bool
 _bfd_sparc_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				     struct elf_link_hash_entry *h)
 {
@@ -1995,7 +1952,7 @@ _bfd_sparc_elf_adjust_dynamic_symbol (st
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -2009,7 +1966,7 @@ _bfd_sparc_elf_adjust_dynamic_symbol (st
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2020,26 +1977,26 @@ _bfd_sparc_elf_adjust_dynamic_symbol (st
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -2078,17 +2035,17 @@ _bfd_sparc_elf_adjust_dynamic_symbol (st
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void * inf)
 {
   struct bfd_link_info *info;
   struct _bfd_sparc_elf_link_hash_table *htab;
   struct _bfd_sparc_elf_link_hash_entry *eh;
   struct elf_dyn_relocs *p;
-  bfd_boolean resolved_to_zero;
+  bool resolved_to_zero;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = _bfd_sparc_elf_hash_table (info);
@@ -2110,7 +2067,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h)
@@ -2128,7 +2085,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;
 	    }
 
@@ -2138,7 +2096,7 @@ allocate_dynrelocs (struct elf_link_hash
 			  (((bfd_vma)1 << 31) << 1) : 0x400000))
 	    {
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 
 	  if (SPARC_ELF_WORD_BYTES(htab) == 8
@@ -2180,7 +2138,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;
@@ -2212,7 +2170,7 @@ allocate_dynrelocs (struct elf_link_hash
   else if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = _bfd_sparc_elf_hash_entry(h)->tls_type;
 
       /* Undefined weak syms won't yet be marked as dynamic.  */
@@ -2222,7 +2180,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->elf.sgot;
@@ -2257,8 +2215,8 @@ allocate_dynrelocs (struct elf_link_hash
   else
     h->got.offset = (bfd_vma) -1;
 
-  if (eh->dyn_relocs == NULL)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -2272,7 +2230,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 +2241,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 +2256,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 +2271,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,17 +2281,17 @@ 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
 			 non-PLT reloations.  */
 		      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-			return FALSE;
+			return false;
 		    }
 		}
 	      else
-		eh->dyn_relocs = NULL;
+		h->dyn_relocs = NULL;
 	    }
 
 	  /* Make sure undefined weak symbols are output as a dynamic
@@ -2342,7 +2300,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -2368,7 +2326,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -2377,25 +2335,25 @@ 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);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    local dynamic relocs.  */
 
-static bfd_boolean
+static int
 allocate_local_dynrelocs (void **slot, void *inf)
 {
   struct elf_link_hash_entry *h
@@ -2411,37 +2369,10 @@ 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.  */
 
-bfd_boolean
+bool
 _bfd_sparc_elf_omit_section_dynsym (bfd *output_bfd,
 				    struct bfd_link_info *info,
 				    asection *p)
@@ -2450,16 +2381,16 @@ _bfd_sparc_elf_omit_section_dynsym (bfd
      against the _GLOBAL_OFFSET_TABLE_ symbol emitted in PIC mode
      can be turned into relocations against the .got symbol.  */
   if (strcmp (p->name, ".got") == 0)
-    return FALSE;
+    return false;
 
   return _bfd_elf_omit_section_dynsym_default (output_bfd, info, p);
 }
 
 /* Set the sizes of the dynamic sections.  */
 
-bfd_boolean
-_bfd_sparc_elf_size_dynamic_sections (bfd *output_bfd,
-				      struct bfd_link_info *info)
+bool
+_bfd_sparc_elf_late_size_sections (bfd *output_bfd,
+				   struct bfd_link_info *info)
 {
   struct _bfd_sparc_elf_link_hash_table *htab;
   bfd *dynobj;
@@ -2469,7 +2400,8 @@ _bfd_sparc_elf_size_dynamic_sections (bf
   htab = _bfd_sparc_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
   dynobj = htab->elf.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -2480,6 +2412,7 @@ _bfd_sparc_elf_size_dynamic_sections (bf
 	  BFD_ASSERT (s != NULL);
 	  s->size = htab->dynamic_interpreter_size;
 	  s->contents = (unsigned char *) htab->dynamic_interpreter;
+	  s->alloced = 1;
 	  htab->interp = s;
 	}
     }
@@ -2512,7 +2445,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 +2515,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.  */
@@ -2617,7 +2550,7 @@ _bfd_sparc_elf_size_dynamic_sections (bf
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (CONST_STRNEQ (s->name, ".rela"))
+      else if (startswith (s->name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
@@ -2655,7 +2588,8 @@ _bfd_sparc_elf_size_dynamic_sections (bf
 	 at the beginning, and we don't want garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
   if (elf_hash_table (info)->dynamic_sections_created)
@@ -2668,37 +2602,9 @@ _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)))
-	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 (!_bfd_elf_maybe_vxworks_add_dynamic_tags (output_bfd, info,
+						    true))
+	return false;
 
       if (ABI_64_P (output_bfd))
 	{
@@ -2718,12 +2624,12 @@ _bfd_sparc_elf_size_dynamic_sections (bf
 		struct elf_link_local_dynamic_entry *entry, *e;
 
 		if (!add_dynamic_entry (DT_SPARC_REGISTER, 0))
-		  return FALSE;
+		  return false;
 
 		entry = (struct elf_link_local_dynamic_entry *)
 		  bfd_hash_allocate (&info->hash->table, sizeof (*entry));
 		if (entry == NULL)
-		  return FALSE;
+		  return false;
 
 		/* We cheat here a little bit: the symbol will not be local, so we
 		   put it at the end of the dynlocal linked list.  We will fix it
@@ -2732,7 +2638,7 @@ _bfd_sparc_elf_size_dynamic_sections (bf
 		entry->isym.st_size = 0;
 		if (*app_regs [reg].name != '\0')
 		  entry->isym.st_name
-		    = _bfd_elf_strtab_add (dynstr, app_regs[reg].name, FALSE);
+		    = _bfd_elf_strtab_add (dynstr, app_regs[reg].name, false);
 		else
 		  entry->isym.st_name = 0;
 		entry->isym.st_other = 0;
@@ -2755,45 +2661,38 @@ _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
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_sparc_elf_new_section_hook (bfd *abfd, asection *sec)
 {
-  if (!sec->used_by_bfd)
-    {
-      struct _bfd_sparc_elf_section_data *sdata;
-      bfd_size_type amt = sizeof (*sdata);
+  struct _bfd_sparc_elf_section_data *sdata;
 
-      sdata = bfd_zalloc (abfd, amt);
-      if (sdata == NULL)
-	return FALSE;
-      sec->used_by_bfd = sdata;
-    }
+  sdata = bfd_zalloc (abfd, sizeof (*sdata));
+  if (sdata == NULL)
+    return false;
+  sec->used_by_bfd = sdata;
 
   return _bfd_elf_new_section_hook (abfd, sec);
 }
 
-bfd_boolean
+bool
 _bfd_sparc_elf_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
 			      struct bfd_section *section,
 			      struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
-			      bfd_boolean *again)
+			      bool *again)
 {
   if (bfd_link_relocatable (link_info))
-    (*link_info->callbacks->einfo)
-      (_("%P%F: --relax and -r may not be used together\n"));
+    link_info->callbacks->fatal
+      (_("%P: --relax and -r may not be used together\n"));
 
-  *again = FALSE;
+  *again = false;
   sec_do_relax (section) = 1;
-  return TRUE;
+  return true;
 }
 
 /* Return the base VMA address which should be subtracted from real addresses
@@ -2847,13 +2746,13 @@ gdopoff (struct bfd_link_info *info, bfd
    _GLOBAL_OFFSET_TABLE_ and thus the offset may be calculated by a
    sethi, xor sequence.  */
 
-static bfd_boolean
+static bool
 gdop_relative_offset_ok (struct bfd_link_info *info,
 			 struct elf_link_hash_entry *h,
 			 bfd_vma address ATTRIBUTE_UNUSED)
 {
   if (!SYMBOL_REFERENCES_LOCAL (info, h))
-    return FALSE;
+    return false;
   /* If H is undefined, ADDRESS will be zero.  We can't allow a
      relative offset to "zero" when producing PIEs or shared libs.
      Note that to get here with an undefined symbol it must also be
@@ -2862,17 +2761,17 @@ gdop_relative_offset_ok (struct bfd_link
       && h != NULL
       && (h->root.type == bfd_link_hash_undefweak
 	  || h->root.type == bfd_link_hash_undefined))
-    return FALSE;
+    return false;
 #ifdef BFD64
   return gdopoff (info, address) + ((bfd_vma) 1 << 32) < (bfd_vma) 2 << 32;
 #else
-  return TRUE;
+  return true;
 #endif
 }
 
 /* Relocate a SPARC ELF section.  */
 
-bfd_boolean
+int
 _bfd_sparc_elf_relocate_section (bfd *output_bfd,
 				 struct bfd_link_info *info,
 				 bfd *input_bfd,
@@ -2891,7 +2790,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
   Elf_Internal_Rela *rel;
   Elf_Internal_Rela *relend;
   int num_relocs;
-  bfd_boolean is_vxworks_tls;
+  bool is_vxworks_tls;
 
   htab = _bfd_sparc_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -2907,7 +2806,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"));
 
@@ -2928,10 +2828,10 @@ _bfd_sparc_elf_relocate_section (bfd *ou
       asection *sec;
       bfd_vma relocation, off;
       bfd_reloc_status_type r;
-      bfd_boolean is_plt = FALSE;
-      bfd_boolean unresolved_reloc;
-      bfd_boolean resolved_to_zero;
-      bfd_boolean relative_reloc;
+      bool is_plt = false;
+      bool unresolved_reloc;
+      bool resolved_to_zero;
+      bool relative_reloc;
 
       r_type = SPARC_ELF_R_TYPE (rel->r_info);
       if (r_type == R_SPARC_GNU_VTINHERIT
@@ -2941,7 +2841,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
       if (r_type < 0 || r_type >= (int) R_SPARC_max_std)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       howto = _bfd_sparc_elf_howto_table + r_type;
@@ -2949,7 +2849,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -2961,7 +2861,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 	    {
 	      /* Relocate against local STT_GNU_IFUNC symbol.  */
 	      h = elf_sparc_get_local_sym_hash (htab, input_bfd,
-						rel, FALSE);
+						rel, false);
 	      if (h == NULL)
 		abort ();
 
@@ -2972,7 +2872,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 	}
       else
 	{
-	  bfd_boolean warned, ignored;
+	  bool warned, ignored;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -2992,7 +2892,8 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_SPARC_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -3011,7 +2912,25 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 	         STT_GNU_IFUNC symbol as STT_FUNC.  */
 	      if (elf_section_type (input_section) == SHT_NOTE)
 		goto skip_ifunc;
-	      abort ();
+
+	      /* Dynamic relocs are not propagated for SEC_DEBUGGING
+		 sections because such sections are not SEC_ALLOC and
+		 thus ld.so will not process them.  */
+	      if ((input_section->flags & SEC_ALLOC) == 0
+		  && (input_section->flags & SEC_DEBUGGING) != 0)
+		continue;
+
+	      _bfd_error_handler
+		/* xgettext:c-format */
+		(_("%pB(%pA+%#" PRIx64 "): "
+		   "unresolvable %s relocation against symbol `%s'"),
+		 input_bfd,
+		 input_section,
+		 (uint64_t) rel->r_offset,
+		 howto->name,
+		 h->root.root.string);
+	      bfd_set_error (bfd_error_bad_value);
+	      return false;
 	    }
 
 	  plt_sec = htab->elf.splt;
@@ -3110,9 +3029,9 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 		(_("%pB: relocation %s against STT_GNU_IFUNC "
 		   "symbol `%s' isn't handled by %s"), input_bfd,
 		 _bfd_sparc_elf_howto_table[r_type].name,
-		 name, __FUNCTION__);
+		 name, __func__);
 	      bfd_set_error (bfd_error_bad_value);
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -3184,10 +3103,10 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 	  if (htab->elf.sgot == NULL)
 	    abort ();
 
-	  relative_reloc = FALSE;
+	  relative_reloc = false;
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      BFD_ASSERT (off != (bfd_vma) -1);
@@ -3221,7 +3140,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 			  && !h->forced_local
 			  && h->root.type != bfd_link_hash_undefweak
 			  && bfd_link_pic (info))
-			relative_reloc = TRUE;
+			relative_reloc = true;
 		      else
 			SPARC_ELF_PUT_WORD (htab, output_bfd, relocation,
 					    htab->elf.sgot->contents + off);
@@ -3229,7 +3148,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -3248,7 +3167,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 		  /* For a local symbol in PIC mode, we need to generate a
 		     R_SPARC_RELATIVE reloc for the dynamic linker.  */
 		  if (bfd_link_pic (info))
-		    relative_reloc = TRUE;
+		    relative_reloc = true;
 		  else
 		    SPARC_ELF_PUT_WORD (htab, output_bfd, relocation,
 					htab->elf.sgot->contents + off);
@@ -3329,11 +3248,11 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 	  relocation = (htab->elf.splt->output_section->vma
 			+ htab->elf.splt->output_offset
 			+ h->plt.offset);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  if (r_type == R_SPARC_PLT32 || r_type == R_SPARC_PLT64)
 	    {
 	      r_type = r_type == R_SPARC_PLT32 ? R_SPARC_32 : R_SPARC_64;
-	      is_plt = TRUE;
+	      is_plt = true;
 	      goto r_sparc_plt32;
 	    }
 	  break;
@@ -3343,8 +3262,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 	case R_SPARC_PC_HH22:
 	case R_SPARC_PC_HM10:
 	case R_SPARC_PC_LM22:
-	  if (h != NULL
-	      && strcmp (h->root.root.string, "_GLOBAL_OFFSET_TABLE_") == 0)
+	  if (h != NULL && h == htab->elf.hgot)
 	    break;
 	  /* Fall through.  */
 	case R_SPARC_DISP8:
@@ -3407,7 +3325,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 		      || h->root.type == bfd_link_hash_undefined)))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate = FALSE;
+	      bool skip, relocate = false;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
@@ -3415,15 +3333,15 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 
 	      BFD_ASSERT (sreloc != NULL);
 
-	      skip = FALSE;
+	      skip = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -3465,7 +3383,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 		     FIXME: Add code tracking needed dynamic relocs as
 		     e.g. i386 has.  */
 		  if (h->dynindx == -1)
-		    skip = TRUE, relocate = TRUE;
+		    skip = true, relocate = true;
 		  break;
 		}
 
@@ -3506,7 +3424,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -3535,7 +3453,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 				(_("%pB: probably compiled without -fPIC?"),
 				 input_bfd);
 			      bfd_set_error (bfd_error_bad_value);
-			      return FALSE;
+			      return false;
 			    }
 			}
 
@@ -3671,7 +3589,7 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 	    abort ();
 
 	  relocation = htab->elf.sgot->output_offset + off - got_base;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  howto = _bfd_sparc_elf_howto_table + r_type;
 	  break;
 
@@ -3812,8 +3730,8 @@ _bfd_sparc_elf_relocate_section (bfd *ou
 	    }
 
 	  h = (struct elf_link_hash_entry *)
-	      bfd_link_hash_lookup (info->hash, "__tls_get_addr", FALSE,
-				    FALSE, TRUE);
+	      bfd_link_hash_lookup (info->hash, "__tls_get_addr", false,
+				    false, true);
 	  BFD_ASSERT (h != NULL);
 	  r_type = R_SPARC_WPLT30;
 	  howto = _bfd_sparc_elf_howto_table + r_type;
@@ -4139,7 +4057,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);
@@ -4190,7 +4108,7 @@ do_relocation:
 							    symtab_hdr->sh_link,
 							    sym->st_name);
 		    if (name == NULL)
-		      return FALSE;
+		      return false;
 		    if (*name == '\0')
 		      name = bfd_section_name (sec);
 		  }
@@ -4203,7 +4121,7 @@ do_relocation:
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Build a VxWorks PLT entry.  PLT_INDEX is the index of the PLT entry
@@ -4302,7 +4220,7 @@ sparc_vxworks_build_plt_entry (bfd *outp
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-bfd_boolean
+bool
 _bfd_sparc_elf_finish_dynamic_symbol (bfd *output_bfd,
 				      struct bfd_link_info *info,
 				      struct elf_link_hash_entry *h,
@@ -4311,7 +4229,7 @@ _bfd_sparc_elf_finish_dynamic_symbol (bf
   struct _bfd_sparc_elf_link_hash_table *htab;
   const struct elf_backend_data *bed;
   struct _bfd_sparc_elf_link_hash_entry  *eh;
-  bfd_boolean resolved_to_zero;
+  bool resolved_to_zero;
 
   htab = _bfd_sparc_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -4350,7 +4268,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)
@@ -4375,7 +4293,7 @@ _bfd_sparc_elf_finish_dynamic_symbol (bf
 	}
       else
 	{
-	  bfd_boolean ifunc = FALSE;
+	  bool ifunc = false;
 
 	  /* Fill in the entry in the procedure linkage table.  */
 	  rela_index = SPARC_ELF_BUILD_PLT_ENTRY (htab, output_bfd, splt,
@@ -4389,7 +4307,7 @@ _bfd_sparc_elf_finish_dynamic_symbol (bf
 		  && h->def_regular
 		  && h->type == STT_GNU_IFUNC))
 	    {
-	      ifunc = TRUE;
+	      ifunc = true;
 	      BFD_ASSERT (h == NULL
 			  || (h->type == STT_GNU_IFUNC
 			      && h->def_regular
@@ -4502,10 +4420,13 @@ _bfd_sparc_elf_finish_dynamic_symbol (bf
 			       + plt->output_offset + h->plt.offset),
 			      htab->elf.sgot->contents
 			      + (h->got.offset & ~(bfd_vma) 1));
-	  return TRUE;
+	  return true;
 	}
 
-      if (bfd_link_pic (info) && SYMBOL_REFERENCES_LOCAL (info, h))
+      if (bfd_link_pic (info)
+	  && (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	  && SYMBOL_REFERENCES_LOCAL (info, h))
 	{
 	  asection *sec = h->root.u.def.section;
 	  if (h->type == STT_GNU_IFUNC)
@@ -4552,16 +4473,16 @@ _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;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 sparc_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
 		  bfd *dynobj, asection *sdyn,
 		  asection *splt ATTRIBUTE_UNUSED)
@@ -4571,7 +4492,7 @@ sparc_finish_dyn (bfd *output_bfd, struc
   bfd_byte *dyncon, *dynconend;
   size_t dynsize;
   int stt_regidx = -1;
-  bfd_boolean abi_64_p;
+  bool abi_64_p;
 
   htab = _bfd_sparc_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
@@ -4582,11 +4503,11 @@ sparc_finish_dyn (bfd *output_bfd, struc
   for (dyncon = sdyn->contents; dyncon < dynconend; dyncon += dynsize)
     {
       Elf_Internal_Dyn dyn;
-      bfd_boolean size;
+      bool size;
 
       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 +4518,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)
@@ -4607,7 +4528,7 @@ sparc_finish_dyn (bfd *output_bfd, struc
 	      stt_regidx =
 		_bfd_elf_link_lookup_local_dynindx (info, output_bfd, -1);
 	      if (stt_regidx == -1)
-		return FALSE;
+		return false;
 	    }
 	  dyn.d_un.d_val = stt_regidx++;
 	  bed->s->swap_dyn_out (output_bfd, &dyn, dyncon);
@@ -4620,15 +4541,15 @@ sparc_finish_dyn (bfd *output_bfd, struc
 	    {
 	    case DT_PLTGOT:
 	      s = htab->elf.splt;
-	      size = FALSE;
+	      size = false;
 	      break;
 	    case DT_PLTRELSZ:
 	      s = htab->elf.srelplt;
-	      size = TRUE;
+	      size = true;
 	      break;
 	    case DT_JMPREL:
 	      s = htab->elf.srelplt;
-	      size = FALSE;
+	      size = false;
 	      break;
 	    default:
 	      continue;
@@ -4646,7 +4567,7 @@ sparc_finish_dyn (bfd *output_bfd, struc
 	  bed->s->swap_dyn_out (output_bfd, &dyn, dyncon);
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Install the first PLT entry in a VxWorks executable and make sure that
@@ -4747,7 +4668,7 @@ sparc_vxworks_finish_shared_plt (bfd *ou
 /* Finish up local dynamic symbol handling.  We set the contents of
    various dynamic sections here.  */
 
-static bfd_boolean
+static int
 finish_local_dynamic_symbol (void **slot, void *inf)
 {
   struct elf_link_hash_entry *h
@@ -4763,7 +4684,7 @@ finish_local_dynamic_symbol (void **slot
    here since undefined weak symbol may not be dynamic and may not be
    called for _bfd_sparc_elf_finish_dynamic_symbol.  */
 
-static bfd_boolean
+static bool
 pie_finish_undefweak_symbol (struct bfd_hash_entry *bh,
 			     void *inf)
 {
@@ -4772,13 +4693,13 @@ pie_finish_undefweak_symbol (struct bfd_
 
   if (h->root.type != bfd_link_hash_undefweak
       || h->dynindx != -1)
-    return TRUE;
+    return true;
 
   return _bfd_sparc_elf_finish_dynamic_symbol (info->output_bfd, info,
 					       h, NULL);
 }
 
-bfd_boolean
+bool
 _bfd_sparc_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
 {
   bfd *dynobj;
@@ -4817,12 +4738,12 @@ _bfd_sparc_elf_finish_dynamic_sections (
       BFD_ASSERT (splt != NULL && sdyn != NULL);
 
       if (!sparc_finish_dyn (output_bfd, info, dynobj, sdyn, splt))
-	return FALSE;
+	return false;
 
       /* 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 +4761,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);
     }
 
@@ -4867,13 +4789,13 @@ _bfd_sparc_elf_finish_dynamic_sections (
     bfd_hash_traverse (&info->hash->table,
 		       pie_finish_undefweak_symbol,
 		       info);
-  return TRUE;
+  return true;
 }
 
 
 /* Set the right machine number for a SPARC ELF file.  */
 
-bfd_boolean
+bool
 _bfd_sparc_elf_object_p (bfd *abfd)
 {
   obj_attribute *attrs = elf_known_obj_attributes (abfd)[OBJ_ATTR_GNU];
@@ -4966,7 +4888,7 @@ _bfd_sparc_elf_object_p (bfd *abfd)
 	    return bfd_default_set_arch_mach (abfd, bfd_arch_sparc,
 					      bfd_mach_sparc_v8plus);
 	  else
-	    return FALSE;
+	    return false;
 	}
       else if (elf_elfheader (abfd)->e_flags & EF_SPARC_LEDATA)
 	return bfd_default_set_arch_mach (abfd, bfd_arch_sparc,
@@ -5001,7 +4923,7 @@ _bfd_sparc_elf_plt_sym_val (bfd_vma i, c
 /* Merge backend specific data from an object file to the output
    object file when linking.  */
 
-bfd_boolean
+bool
 _bfd_sparc_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -5017,7 +4939,7 @@ _bfd_sparc_elf_merge_private_bfd_data (b
 	 initialized.  */
       elf_known_obj_attributes_proc (obfd)[0].i = 1;
 
-      return TRUE;
+      return true;
     }
 
   in_attrs = elf_known_obj_attributes (ibfd)[OBJ_ATTR_GNU];
@@ -5038,5 +4960,5 @@ _bfd_sparc_elf_merge_private_bfd_data (b
   /* Merge Tag_compatibility attributes and any common GNU ones.  */
   _bfd_elf_merge_object_attributes (ibfd, info);
 
-  return TRUE;
+  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.20200303/bfd/elfxx-sparc.h ./bfd/elfxx-sparc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-sparc.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-sparc.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* SPARC ELF specific backend routines.
-   Copyright (C) 2005-2019 Free Software Foundation, Inc.
+   Copyright (C) 2005-2025 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,57 +84,58 @@ 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);
 extern reloc_howto_type *_bfd_sparc_elf_reloc_name_lookup
   (bfd *, const char *);
-extern bfd_boolean _bfd_sparc_elf_info_to_howto
+extern bool _bfd_sparc_elf_info_to_howto
   (bfd *, arelent *, Elf_Internal_Rela *);
 extern reloc_howto_type *_bfd_sparc_elf_info_to_howto_ptr
   (bfd*, unsigned int);
-extern bfd_boolean _bfd_sparc_elf_mkobject
+extern bool _bfd_sparc_elf_mkobject
   (bfd *);
 extern struct bfd_link_hash_table *_bfd_sparc_elf_link_hash_table_create
   (bfd *);
-extern bfd_boolean _bfd_sparc_elf_create_dynamic_sections
+extern bool _bfd_sparc_elf_create_dynamic_sections
   (bfd *, struct bfd_link_info *);
 extern void _bfd_sparc_elf_copy_indirect_symbol
   (struct bfd_link_info *,
    struct elf_link_hash_entry *,
    struct elf_link_hash_entry *);
-extern bfd_boolean _bfd_sparc_elf_check_relocs
+extern bool _bfd_sparc_elf_check_relocs
   (bfd *, struct bfd_link_info *,
    asection *, const Elf_Internal_Rela *);
 extern asection *_bfd_sparc_elf_gc_mark_hook
   (asection *, struct bfd_link_info *,
    Elf_Internal_Rela *, struct elf_link_hash_entry *,
    Elf_Internal_Sym *);
-extern bfd_boolean _bfd_sparc_elf_adjust_dynamic_symbol
+extern bool _bfd_sparc_elf_adjust_dynamic_symbol
   (struct bfd_link_info *, struct elf_link_hash_entry *);
-extern bfd_boolean _bfd_sparc_elf_omit_section_dynsym
+extern bool _bfd_sparc_elf_omit_section_dynsym
   (bfd *, struct bfd_link_info *, asection *);
-extern bfd_boolean _bfd_sparc_elf_size_dynamic_sections
+extern bool _bfd_sparc_elf_late_size_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_sparc_elf_new_section_hook
+extern bool _bfd_sparc_elf_new_section_hook
   (bfd *, asection *);
-extern bfd_boolean _bfd_sparc_elf_relax_section
-  (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
-extern bfd_boolean _bfd_sparc_elf_relocate_section
+extern bool _bfd_sparc_elf_relax_section
+  (bfd *, struct bfd_section *, struct bfd_link_info *, bool *);
+extern int _bfd_sparc_elf_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    Elf_Internal_Rela *, Elf_Internal_Sym *, asection **);
-extern bfd_boolean _bfd_sparc_elf_finish_dynamic_symbol
+extern bool _bfd_sparc_elf_finish_dynamic_symbol
   (bfd *, struct bfd_link_info *, struct elf_link_hash_entry *,
    Elf_Internal_Sym *sym);
-extern bfd_boolean _bfd_sparc_elf_finish_dynamic_sections
+extern bool _bfd_sparc_elf_finish_dynamic_sections
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_sparc_elf_fixup_symbol
+extern bool _bfd_sparc_elf_fixup_symbol
   (struct bfd_link_info *, struct elf_link_hash_entry *);
-extern bfd_boolean _bfd_sparc_elf_object_p
+extern bool _bfd_sparc_elf_object_p
   (bfd *);
 extern bfd_vma _bfd_sparc_elf_plt_sym_val
   (bfd_vma, const asection *, const arelent *);
-extern bfd_boolean _bfd_sparc_elf_merge_private_bfd_data
+extern bool _bfd_sparc_elf_merge_private_bfd_data
   (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.20200303/bfd/elfxx-target.h ./bfd/elfxx-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-target.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-target.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Target definitions for NN-bit ELF
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,10 +28,10 @@
    one for little-endian machines.   */
 
 #ifndef bfd_elfNN_close_and_cleanup
-#define	bfd_elfNN_close_and_cleanup _bfd_elf_close_and_cleanup
+#define	bfd_elfNN_close_and_cleanup _bfd_generic_close_and_cleanup
 #endif
 #ifndef bfd_elfNN_bfd_free_cached_info
-#define bfd_elfNN_bfd_free_cached_info _bfd_free_cached_info
+#define bfd_elfNN_bfd_free_cached_info _bfd_elf_free_cached_info
 #endif
 #ifndef bfd_elfNN_get_section_contents
 #define bfd_elfNN_get_section_contents _bfd_generic_get_section_contents
@@ -52,6 +52,10 @@
 #ifndef bfd_elfNN_find_nearest_line
 #define bfd_elfNN_find_nearest_line	_bfd_elf_find_nearest_line
 #endif
+#ifndef bfd_elfNN_find_nearest_line_with_alt
+#define bfd_elfNN_find_nearest_line_with_alt \
+  _bfd_elf_find_nearest_line_with_alt
+#endif
 #ifndef bfd_elfNN_find_line
 #define bfd_elfNN_find_line		_bfd_elf_find_line
 #endif
@@ -87,9 +91,6 @@
 #define bfd_elfNN_write_object_contents _bfd_elf_write_object_contents
 #define bfd_elfNN_write_corefile_contents _bfd_elf_write_corefile_contents
 
-#define bfd_elfNN_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
-
 #ifndef elf_backend_can_refcount
 #define elf_backend_can_refcount 0
 #endif
@@ -130,13 +131,13 @@
 #define elf_backend_extern_protected_data 0
 #endif
 #ifndef elf_backend_always_renumber_dynsyms
-#define elf_backend_always_renumber_dynsyms FALSE
+#define elf_backend_always_renumber_dynsyms false
 #endif
 #ifndef elf_backend_linux_prpsinfo32_ugid16
-#define elf_backend_linux_prpsinfo32_ugid16 FALSE
+#define elf_backend_linux_prpsinfo32_ugid16 false
 #endif
 #ifndef elf_backend_linux_prpsinfo64_ugid16
-#define elf_backend_linux_prpsinfo64_ugid16 FALSE
+#define elf_backend_linux_prpsinfo64_ugid16 false
 #endif
 #ifndef elf_backend_stack_align
 #define elf_backend_stack_align 16
@@ -144,6 +145,9 @@
 #ifndef elf_backend_strtab_flags
 #define elf_backend_strtab_flags 0
 #endif
+#ifndef elf_backend_use_mmap
+#define elf_backend_use_mmap false
+#endif
 
 #define bfd_elfNN_bfd_debug_info_start		_bfd_void_bfd
 #define bfd_elfNN_bfd_debug_info_end		_bfd_void_bfd
@@ -183,11 +187,6 @@
 #define bfd_elfNN_bfd_gc_sections bfd_elf_gc_sections
 #endif
 
-#ifndef bfd_elfNN_bfd_merge_sections
-#define bfd_elfNN_bfd_merge_sections \
-  _bfd_elf_merge_sections
-#endif
-
 #ifndef bfd_elfNN_bfd_is_group_section
 #define bfd_elfNN_bfd_is_group_section bfd_elf_is_group_section
 #endif
@@ -281,6 +280,9 @@
 #ifndef bfd_elfNN_bfd_final_link
 #define bfd_elfNN_bfd_final_link	bfd_elf_final_link
 #endif
+#ifndef bfd_elfNN_bfd_merge_sections
+#define bfd_elfNN_bfd_merge_sections	_bfd_elf_merge_sections
+#endif
 #else /* ! defined (elf_backend_relocate_section) */
 /* If no backend relocate_section routine, use the generic linker.
    Note - this will prevent the port from being able to use some of
@@ -304,6 +306,9 @@
 #ifndef bfd_elfNN_bfd_final_link
 #define bfd_elfNN_bfd_final_link	_bfd_generic_final_link
 #endif
+#ifndef bfd_elfNN_bfd_merge_sections
+#define bfd_elfNN_bfd_merge_sections	bfd_generic_merge_sections
+#endif
 #endif /* ! defined (elf_backend_relocate_section) */
 
 #ifndef bfd_elfNN_bfd_link_just_syms
@@ -362,6 +367,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
@@ -375,10 +384,6 @@
 #define ELF_COMMONPAGESIZE ELF_MAXPAGESIZE
 #endif
 
-#ifndef ELF_RELROPAGESIZE
-#define ELF_RELROPAGESIZE ELF_COMMONPAGESIZE
-#endif
-
 #ifndef ELF_MINPAGESIZE
 #define ELF_MINPAGESIZE ELF_COMMONPAGESIZE
 #endif
@@ -386,14 +391,12 @@
 #if ELF_COMMONPAGESIZE > ELF_MAXPAGESIZE
 # error ELF_COMMONPAGESIZE > ELF_MAXPAGESIZE
 #endif
-#if ELF_RELROPAGESIZE > ELF_MAXPAGESIZE
-# error ELF_RELROPAGESIZE > ELF_MAXPAGESIZE
-#endif
 #if ELF_MINPAGESIZE > ELF_COMMONPAGESIZE
 # error ELF_MINPAGESIZE > ELF_COMMONPAGESIZE
 #endif
-#if ELF_MINPAGESIZE > ELF_RELROPAGESIZE
-# error ELF_MINPAGESIZE > ELF_RELROPAGESIZE
+
+#ifndef ELF_P_ALIGN
+#define ELF_P_ALIGN 0
 #endif
 
 #ifndef ELF_DYNAMIC_SEC_FLAGS
@@ -404,10 +407,10 @@
 #endif
 
 #ifndef elf_backend_collect
-#define elf_backend_collect FALSE
+#define elf_backend_collect false
 #endif
 #ifndef elf_backend_type_change_ok
-#define elf_backend_type_change_ok FALSE
+#define elf_backend_type_change_ok false
 #endif
 
 #ifndef elf_backend_sym_is_global
@@ -470,6 +473,12 @@
 #ifndef elf_backend_check_relocs
 #define elf_backend_check_relocs	0
 #endif
+#ifndef elf_backend_size_relative_relocs
+#define elf_backend_size_relative_relocs 0
+#endif
+#ifndef elf_backend_finish_relative_relocs
+#define elf_backend_finish_relative_relocs 0
+#endif
 #ifndef elf_backend_check_directives
 #define elf_backend_check_directives	0
 #endif
@@ -479,11 +488,14 @@
 #ifndef elf_backend_adjust_dynamic_symbol
 #define elf_backend_adjust_dynamic_symbol 0
 #endif
-#ifndef elf_backend_always_size_sections
-#define elf_backend_always_size_sections 0
+#ifndef elf_backend_early_size_sections
+#define elf_backend_early_size_sections 0
 #endif
-#ifndef elf_backend_size_dynamic_sections
-#define elf_backend_size_dynamic_sections 0
+#ifndef elf_backend_late_size_sections
+#define elf_backend_late_size_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
@@ -647,12 +659,22 @@
 #ifndef elf_backend_can_make_lsda_relative_eh_frame
 #define elf_backend_can_make_lsda_relative_eh_frame	_bfd_elf_can_make_relative
 #endif
+#ifndef elf_backend_can_make_multiple_eh_frame
+#define elf_backend_can_make_multiple_eh_frame 0
+#endif
 #ifndef elf_backend_encode_eh_address
 #define elf_backend_encode_eh_address		_bfd_elf_encode_eh_address
 #endif
 #ifndef elf_backend_write_section
 #define elf_backend_write_section		NULL
 #endif
+#ifndef elf_backend_add_glibc_version_dependency
+#define elf_backend_add_glibc_version_dependency \
+  _bfd_elf_link_add_dt_relr_dependency
+#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 +780,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 +788,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)
@@ -776,16 +814,17 @@
 
 extern const struct elf_size_info _bfd_elfNN_size_info;
 
-static struct elf_backend_data elfNN_bed =
+static const 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 */
   ELF_MINPAGESIZE,		/* minpagesize */
   ELF_COMMONPAGESIZE,		/* commonpagesize */
-  ELF_RELROPAGESIZE,		/* commonpagesize to use with -z relro */
+  ELF_P_ALIGN,			/* p_align */
   ELF_DYNAMIC_SEC_FLAGS,	/* dynamic_sec_flags */
   elf_backend_arch_data,
   elf_info_to_howto,
@@ -810,11 +849,14 @@ static struct elf_backend_data elfNN_bed
   elf_backend_omit_section_dynsym,
   elf_backend_relocs_compatible,
   elf_backend_check_relocs,
+  elf_backend_size_relative_relocs,
+  elf_backend_finish_relative_relocs,
   elf_backend_check_directives,
   elf_backend_notice_as_needed,
   elf_backend_adjust_dynamic_symbol,
-  elf_backend_always_size_sections,
-  elf_backend_size_dynamic_sections,
+  elf_backend_early_size_sections,
+  elf_backend_late_size_sections,
+  elf_backend_strip_zero_sized_dynamic_sections,
   elf_backend_init_index_section,
   elf_backend_relocate_section,
   elf_backend_finish_dynamic_symbol,
@@ -857,8 +899,11 @@ static struct elf_backend_data elfNN_bed
   elf_backend_eh_frame_address_size,
   elf_backend_can_make_relative_eh_frame,
   elf_backend_can_make_lsda_relative_eh_frame,
+  elf_backend_can_make_multiple_eh_frame,
   elf_backend_encode_eh_address,
   elf_backend_write_section,
+  elf_backend_add_glibc_version_dependency,
+  elf_backend_elfsym_local_is_section,
   elf_backend_mips_irix_compat,
   elf_backend_mips_rtype_to_howto,
   elf_backend_ecoff_debug_swap,
@@ -895,6 +940,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,
@@ -924,7 +973,8 @@ static struct elf_backend_data elfNN_bed
   elf_backend_extern_protected_data,
   elf_backend_always_renumber_dynsyms,
   elf_backend_linux_prpsinfo32_ugid16,
-  elf_backend_linux_prpsinfo64_ugid16
+  elf_backend_linux_prpsinfo64_ugid16,
+  elf_backend_use_mmap
 };
 
 /* Forward declaration for use when initialising alternative_target field.  */
@@ -950,7 +1000,8 @@ const bfd_target TARGET_BIG_SYM =
   /* object_flags: mask of all file flags */
   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS
    | DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS
-   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON),
+   | BFD_COMPRESS_GABI | BFD_COMPRESS_ZSTD | BFD_CONVERT_ELF_COMMON
+   | BFD_USE_ELF_STT_COMMON | BFD_NO_SECTION_HEADER),
 
   /* section_flags: mask of all section flags */
   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY
@@ -974,6 +1025,9 @@ const bfd_target TARGET_BIG_SYM =
 
   elf_match_priority,
 
+  /* TRUE if unused section symbols should be kept.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS,
+
   /* Routines to byte-swap various sized integers from the data sections */
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
     bfd_getb32, bfd_getb_signed_32, bfd_putb32,
@@ -1051,7 +1105,8 @@ const bfd_target TARGET_LITTLE_SYM =
   /* object_flags: mask of all file flags */
   (HAS_RELOC | EXEC_P | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS
    | DYNAMIC | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS
-   | BFD_COMPRESS_GABI | BFD_CONVERT_ELF_COMMON | BFD_USE_ELF_STT_COMMON),
+   | BFD_COMPRESS_GABI | BFD_COMPRESS_ZSTD | BFD_CONVERT_ELF_COMMON
+   | BFD_USE_ELF_STT_COMMON | BFD_NO_SECTION_HEADER),
 
   /* section_flags: mask of all section flags */
   (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_READONLY
@@ -1075,6 +1130,9 @@ const bfd_target TARGET_LITTLE_SYM =
 
   elf_match_priority,
 
+  /* TRUE if unused section symbols should be kept.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS,
+
   /* Routines to byte-swap various sized integers from the data sections */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
     bfd_getl32, bfd_getl_signed_32, bfd_putl32,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-tilegx.c ./bfd/elfxx-tilegx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-tilegx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-tilegx.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILE-Gx-specific support for ELF.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -72,372 +72,372 @@ static reloc_howto_type tilegx_elf_howto
   /* This reloc does nothing.  */
   HOWTO (R_TILEGX_NONE,	/* type */
 	 0,			/* rightshift */
-	 3,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_NONE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #ifdef BFD64
   /* A 64 bit absolute relocation.  */
   HOWTO (R_TILEGX_64,	/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_64",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffffffffffffULL,	/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #endif
   /* A 32 bit absolute relocation.  */
   HOWTO (R_TILEGX_32,	/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_32",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit absolute relocation.  */
   HOWTO (R_TILEGX_16,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_bitfield, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_16",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* An 8 bit absolute relocation.  */
   HOWTO (R_TILEGX_8,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_unsigned, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_8",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 #ifdef BFD64
   /* A 64 bit pc-relative relocation.  */
   HOWTO (R_TILEGX_64_PCREL,/* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 64,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_32_PCREL", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffffffffffffULL,	/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 #endif
   /* A 32 bit pc-relative relocation.  */
   HOWTO (R_TILEGX_32_PCREL,/* type */
 	 0,			/* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 32,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_32_PCREL", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffffffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit pc-relative relocation.  */
   HOWTO (R_TILEGX_16_PCREL,/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_16_PCREL",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* An 8 bit pc-relative relocation.  */
   HOWTO (R_TILEGX_8_PCREL,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 1,			/* size */
 	 8,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_8_PCREL",/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xff,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   /* A 16 bit relocation without overflow.  */
   HOWTO (R_TILEGX_HW0,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_HW0",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit relocation without overflow.  */
   HOWTO (R_TILEGX_HW1,	/* type */
 	 16,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_HW1",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit relocation without overflow.  */
   HOWTO (R_TILEGX_HW2,	/* type */
 	 32,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_HW2",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit relocation without overflow.  */
   HOWTO (R_TILEGX_HW3,	/* type */
 	 48,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_HW3",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit relocation with overflow.  */
   HOWTO (R_TILEGX_HW0_LAST,	/* type */
 	 0,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_HW0_LAST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit relocation with overflow.  */
   HOWTO (R_TILEGX_HW1_LAST,	/* type */
 	 16,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_HW1_LAST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* A 16 bit relocation with overflow.  */
   HOWTO (R_TILEGX_HW2_LAST,	/* type */
 	 32,			/* rightshift */
-	 1,			/* size (0 = byte, 1 = short, 2 = long) */
+	 2,			/* size */
 	 16,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_HW2_LAST",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0xffff,		/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   HOWTO (R_TILEGX_COPY,		/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_COPY",		/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEGX_GLOB_DAT,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_GLOB_DAT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEGX_JMP_SLOT,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_JMP_SLOT",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEGX_RELATIVE,	/* type */
 	 0,			/* rightshift */
-	 0,			/* size (0 = byte, 1 = short, 2 = long) */
+	 0,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 bfd_elf_generic_reloc,	/* special_function */
 	 "R_TILEGX_RELATIVE",	/* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEGX_BROFF_X1, /* type */
 	 TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 17,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed, /* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEGX_BROFF_X1", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEGX_JUMPOFF_X1, /* type */
 	 TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 27,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEGX_JUMPOFF_X1", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
   HOWTO (R_TILEGX_JUMPOFF_X1_PLT, /* type */
 	 TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 27,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEGX_JUMPOFF_X1_PLT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
 #define TILEGX_IMM_HOWTO(name, size, bitsize) \
-  HOWTO (name, 0, size, bitsize, FALSE, 0, \
+  HOWTO (name, 0, size, bitsize, false, 0, \
 	 complain_overflow_signed, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, -1, FALSE)
+	 #name, false, 0, -1, false)
 
 #define TILEGX_UIMM_HOWTO(name, size, bitsize) \
-  HOWTO (name, 0, size, bitsize, FALSE, 0, \
+  HOWTO (name, 0, size, bitsize, false, 0, \
 	 complain_overflow_unsigned, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, -1, FALSE)
+	 #name, false, 0, -1, false)
 
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0, 0, 8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0, 0, 8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1, 0, 8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1, 0, 8),
-  TILEGX_IMM_HOWTO(R_TILEGX_DEST_IMM8_X1, 0, 8),
-
-  TILEGX_UIMM_HOWTO(R_TILEGX_MT_IMM14_X1, 1, 14),
-  TILEGX_UIMM_HOWTO(R_TILEGX_MF_IMM14_X1, 1, 14),
-
-  TILEGX_UIMM_HOWTO(R_TILEGX_MMSTART_X0, 0, 6),
-  TILEGX_UIMM_HOWTO(R_TILEGX_MMEND_X0,   0, 6),
-
-  TILEGX_UIMM_HOWTO(R_TILEGX_SHAMT_X0, 0, 6),
-  TILEGX_UIMM_HOWTO(R_TILEGX_SHAMT_X1, 0, 6),
-  TILEGX_UIMM_HOWTO(R_TILEGX_SHAMT_Y0, 0, 6),
-  TILEGX_UIMM_HOWTO(R_TILEGX_SHAMT_Y1, 0, 6),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0, 1, 8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0, 1, 8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1, 1, 8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1, 1, 8),
+  TILEGX_IMM_HOWTO(R_TILEGX_DEST_IMM8_X1, 1, 8),
+
+  TILEGX_UIMM_HOWTO(R_TILEGX_MT_IMM14_X1, 2, 14),
+  TILEGX_UIMM_HOWTO(R_TILEGX_MF_IMM14_X1, 2, 14),
+
+  TILEGX_UIMM_HOWTO(R_TILEGX_MMSTART_X0, 1, 6),
+  TILEGX_UIMM_HOWTO(R_TILEGX_MMEND_X0,   1, 6),
+
+  TILEGX_UIMM_HOWTO(R_TILEGX_SHAMT_X0, 1, 6),
+  TILEGX_UIMM_HOWTO(R_TILEGX_SHAMT_X1, 1, 6),
+  TILEGX_UIMM_HOWTO(R_TILEGX_SHAMT_Y0, 1, 6),
+  TILEGX_UIMM_HOWTO(R_TILEGX_SHAMT_Y1, 1, 6),
 
 #define TILEGX_IMM16_HOWTO(name, rshift) \
-  HOWTO (name, rshift, 1, 16, FALSE, 0, \
+  HOWTO (name, rshift, 2, 16, false, 0, \
 	 complain_overflow_dont, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, 0xffff, FALSE)
+	 #name, false, 0, 0xffff, false)
 
   TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X0_HW0, 0),
   TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW0, 0),
@@ -449,9 +449,9 @@ static reloc_howto_type tilegx_elf_howto
   TILEGX_IMM16_HOWTO (R_TILEGX_IMM16_X1_HW3, 48),
 
 #define TILEGX_IMM16_HOWTO_LAST(name, rshift) \
-  HOWTO (name, rshift, 1, 16, FALSE, 0, \
+  HOWTO (name, rshift, 2, 16, false, 0, \
 	 complain_overflow_signed, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, 0xffff, FALSE)
+	 #name, false, 0, 0xffff, false)
 
   TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X0_HW0_LAST, 0),
   TILEGX_IMM16_HOWTO_LAST (R_TILEGX_IMM16_X1_HW0_LAST, 0),
@@ -463,9 +463,9 @@ static reloc_howto_type tilegx_elf_howto
   /* PC-relative offsets. */
 
 #define TILEGX_IMM16_HOWTO_PCREL(name, rshift) \
-  HOWTO (name, rshift, 1, 16, TRUE, 0, \
+  HOWTO (name, rshift, 2, 16, true, 0, \
 	 complain_overflow_dont, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, 0xffff, TRUE)
+	 #name, false, 0, 0xffff, true)
 
   TILEGX_IMM16_HOWTO_PCREL (R_TILEGX_IMM16_X0_HW0_PCREL, 0),
   TILEGX_IMM16_HOWTO_PCREL (R_TILEGX_IMM16_X1_HW0_PCREL, 0),
@@ -477,9 +477,9 @@ static reloc_howto_type tilegx_elf_howto
   TILEGX_IMM16_HOWTO_PCREL (R_TILEGX_IMM16_X1_HW3_PCREL, 48),
 
 #define TILEGX_IMM16_HOWTO_LAST_PCREL(name, rshift) \
-  HOWTO (name, rshift, 1, 16, TRUE, 0, \
+  HOWTO (name, rshift, 2, 16, true, 0, \
 	 complain_overflow_signed, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, 0xffff, TRUE)
+	 #name, false, 0, 0xffff, true)
 
   TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X0_HW0_LAST_PCREL,  0),
   TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X1_HW0_LAST_PCREL,  0),
@@ -524,9 +524,9 @@ static reloc_howto_type tilegx_elf_howto
   EMPTY_HOWTO (91),
 
 #define TILEGX_IMM16_HOWTO_TLS_IE(name, rshift) \
-  HOWTO (name, rshift, 1, 16, FALSE, 0, \
+  HOWTO (name, rshift, 2, 16, false, 0, \
 	 complain_overflow_dont, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, 0xffff, TRUE)
+	 #name, false, 0, 0xffff, true)
 
   TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X0_HW0_TLS_IE, 0),
   TILEGX_IMM16_HOWTO_TLS_IE (R_TILEGX_IMM16_X1_HW0_TLS_IE, 0),
@@ -539,9 +539,9 @@ static reloc_howto_type tilegx_elf_howto
   TILEGX_IMM16_HOWTO_LAST_PCREL (R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL, 32),
 
 #define TILEGX_IMM16_HOWTO_LAST_TLS_IE(name, rshift) \
-  HOWTO (name, rshift, 1, 16, FALSE, 0, \
+  HOWTO (name, rshift, 2, 16, false, 0, \
 	 complain_overflow_signed, bfd_elf_generic_reloc, \
-	 #name, FALSE, 0, 0xffff, TRUE)
+	 #name, false, 0, 0xffff, true)
 
   TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE, 0),
   TILEGX_IMM16_HOWTO_LAST_TLS_IE (R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE, 0),
@@ -550,49 +550,49 @@ static reloc_howto_type tilegx_elf_howto
   EMPTY_HOWTO (104),
   EMPTY_HOWTO (105),
 
-  HOWTO(R_TILEGX_TLS_DTPMOD64, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+  HOWTO(R_TILEGX_TLS_DTPMOD64, 0, 0, 0, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPMOD64",
-	FALSE, 0, 0, TRUE),
-  HOWTO(R_TILEGX_TLS_DTPOFF64, 0, 4, 64, FALSE, 0, complain_overflow_bitfield,
+	false, 0, 0, true),
+  HOWTO(R_TILEGX_TLS_DTPOFF64, 0, 8, 64, false, 0, complain_overflow_bitfield,
 	bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPOFF64",
-	FALSE, 0, -1, TRUE),
-  HOWTO(R_TILEGX_TLS_TPOFF64, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+	false, 0, -1, true),
+  HOWTO(R_TILEGX_TLS_TPOFF64, 0, 0, 0, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_TILEGX_TLS_TPOFF64",
-	FALSE, 0, 0, TRUE),
+	false, 0, 0, true),
 
-  HOWTO(R_TILEGX_TLS_DTPMOD32, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+  HOWTO(R_TILEGX_TLS_DTPMOD32, 0, 0, 0, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPMOD32",
-	FALSE, 0, 0, TRUE),
-  HOWTO(R_TILEGX_TLS_DTPOFF32, 0, 4, 32, FALSE, 0, complain_overflow_bitfield,
+	false, 0, 0, true),
+  HOWTO(R_TILEGX_TLS_DTPOFF32, 0, 8, 32, false, 0, complain_overflow_bitfield,
 	bfd_elf_generic_reloc, "R_TILEGX_TLS_DTPOFF32",
-	FALSE, 0, -1, TRUE),
-  HOWTO(R_TILEGX_TLS_TPOFF32, 0, 0, 0, FALSE, 0, complain_overflow_dont,
+	false, 0, -1, true),
+  HOWTO(R_TILEGX_TLS_TPOFF32, 0, 0, 0, false, 0, complain_overflow_dont,
 	bfd_elf_generic_reloc, "R_TILEGX_TLS_TPOFF32",
-	FALSE, 0, 0, TRUE),
+	false, 0, 0, true),
 
   HOWTO (R_TILEGX_TLS_GD_CALL, /* type */
 	 TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, /* rightshift */
-	 2,			/* size (0 = byte, 1 = short, 2 = long) */
+	 4,			/* size */
 	 27,			/* bitsize */
-	 TRUE,			/* pc_relative */
+	 true,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_signed,/* complain_on_overflow */
 	 bfd_elf_generic_reloc, /* special_function */
 	 "R_TILEGX_TLS_GD_CALL", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 -1,			/* dst_mask */
-	 TRUE),			/* pcrel_offset */
+	 true),			/* pcrel_offset */
 
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0_TLS_GD_ADD,  0,  8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1_TLS_GD_ADD,  0,  8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0_TLS_GD_ADD,  0,  8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1_TLS_GD_ADD,  0,  8),
-  TILEGX_IMM_HOWTO(R_TILEGX_TLS_IE_LOAD, 0,  8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0_TLS_ADD,  0,  8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1_TLS_ADD,  0,  8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0_TLS_ADD,  0,  8),
-  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1_TLS_ADD,  0,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0_TLS_GD_ADD,  1,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1_TLS_GD_ADD,  1,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0_TLS_GD_ADD,  1,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1_TLS_GD_ADD,  1,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_TLS_IE_LOAD, 1,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X0_TLS_ADD,  1,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_X1_TLS_ADD,  1,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y0_TLS_ADD,  1,  8),
+  TILEGX_IMM_HOWTO(R_TILEGX_IMM8_Y1_TLS_ADD,  1,  8),
 };
 
 static reloc_howto_type tilegx_elf_howto_table2 [] =
@@ -600,32 +600,32 @@ static reloc_howto_type tilegx_elf_howto
   /* GNU extension to record C++ vtable hierarchy */
   HOWTO (R_TILEGX_GNU_VTINHERIT, /* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 NULL,			/* special_function */
 	 "R_TILEGX_GNU_VTINHERIT", /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
   /* GNU extension to record C++ vtable member usage */
   HOWTO (R_TILEGX_GNU_VTENTRY,	   /* type */
 	 0,			/* rightshift */
-	 4,			/* size (0 = byte, 1 = short, 2 = long) */
+	 8,			/* size */
 	 0,			/* bitsize */
-	 FALSE,			/* pc_relative */
+	 false,			/* pc_relative */
 	 0,			/* bitpos */
 	 complain_overflow_dont, /* complain_on_overflow */
 	 _bfd_elf_rel_vtable_reloc_fn,	/* special_function */
 	 "R_TILEGX_GNU_VTENTRY",   /* name */
-	 FALSE,			/* partial_inplace */
+	 false,			/* partial_inplace */
 	 0,			/* src_mask */
 	 0,			/* dst_mask */
-	 FALSE),		/* pcrel_offset */
+	 false),		/* pcrel_offset */
 
 };
 
@@ -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
@@ -837,17 +834,15 @@ 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;
+  bool disable_le_transition;
 };
 
 
 /* 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
@@ -932,7 +927,7 @@ tilegx_reloc_name_lookup (bfd *abfd ATTR
   return NULL;
 }
 
-bfd_boolean
+bool
 tilegx_info_to_howto_rela (bfd *abfd ATTRIBUTE_UNUSED,
 			   arelent *cache_ptr,
 			   Elf_Internal_Rela *dst)
@@ -952,9 +947,9 @@ tilegx_info_to_howto_rela (bfd *abfd ATT
       _bfd_error_handler (_("%pB: unsupported relocation type %#x"),
 			  abfd, r_type);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 typedef tilegx_bundle_bits (*tilegx_create_func)(int);
@@ -1280,7 +1275,7 @@ tilegx_plt_entry_build (bfd *output_bfd,
   bfd_signed_vma dist_got0 = dist_got_entry - got_offset;
 
   /* Check whether we can use the short plt entry with 16-bit offset.  */
-  bfd_boolean short_plt_entry =
+  bool short_plt_entry =
     (dist_got_entry <= 0x7fff && dist_got0 >= -0x8000);
 
   const tilegx_bundle_bits *plt_entry = (tilegx_bundle_bits *)
@@ -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)
@@ -1405,8 +1399,7 @@ tilegx_elf_link_hash_table_create (bfd *
     }
 
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd, link_hash_newfunc,
-				      sizeof (struct tilegx_elf_link_hash_entry),
-				      TILEGX_ELF_DATA))
+				      sizeof (struct tilegx_elf_link_hash_entry)))
     {
       free (ret);
       return NULL;
@@ -1417,7 +1410,7 @@ tilegx_elf_link_hash_table_create (bfd *
 
 /* Create the .got section.  */
 
-static bfd_boolean
+static bool
 tilegx_elf_create_got_section (bfd *abfd, struct bfd_link_info *info)
 {
   flagword flags;
@@ -1428,7 +1421,7 @@ tilegx_elf_create_got_section (bfd *abfd
 
   /* This function may be called more than once.  */
   if (htab->sgot != NULL)
-    return TRUE;
+    return true;
 
   flags = bed->dynamic_sec_flags;
 
@@ -1439,13 +1432,13 @@ tilegx_elf_create_got_section (bfd *abfd
 					   | SEC_READONLY));
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->srelgot = s;
 
   s = s_got = bfd_make_section_anyway_with_flags (abfd, ".got", flags);
   if (s == NULL
       || !bfd_set_section_alignment (s, bed->s->log_file_align))
-    return FALSE;
+    return false;
   htab->sgot = s;
 
   /* The first bit of the global offset table is the header.  */
@@ -1456,7 +1449,7 @@ tilegx_elf_create_got_section (bfd *abfd
       s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags);
       if (s == NULL
 	  || !bfd_set_section_alignment (s, bed->s->log_file_align))
-	return FALSE;
+	return false;
       htab->sgotplt = s;
 
       /* Reserve room for the header.  */
@@ -1473,22 +1466,22 @@ tilegx_elf_create_got_section (bfd *abfd
 				       "_GLOBAL_OFFSET_TABLE_");
       elf_hash_table (info)->hgot = h;
       if (h == NULL)
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create .plt, .rela.plt, .got, .got.plt, .rela.got, .dynbss, and
    .rela.bss sections in DYNOBJ, and set up shortcuts to them in our
    hash table.  */
 
-bfd_boolean
+bool
 tilegx_elf_create_dynamic_sections (bfd *dynobj,
 				    struct bfd_link_info *info)
 {
   if (!tilegx_elf_create_got_section (dynobj, info))
-    return FALSE;
+    return false;
 
   return _bfd_elf_create_dynamic_sections (dynobj, info);
 }
@@ -1505,37 +1498,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)
     {
@@ -1611,7 +1573,7 @@ tilegx_tls_translate_to_ie (int r_type)
 
 static int
 tilegx_elf_tls_transition (struct bfd_link_info *info, int r_type,
-			   int is_local, bfd_boolean disable_le_transition)
+			   int is_local, bool disable_le_transition)
 {
   if (!bfd_link_executable (info))
     return r_type;
@@ -1626,7 +1588,7 @@ tilegx_elf_tls_transition (struct bfd_li
    allocate space in the global offset table or procedure linkage
    table.  */
 
-bfd_boolean
+bool
 tilegx_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
 			 asection *sec, const Elf_Internal_Rela *relocs)
 {
@@ -1637,10 +1599,10 @@ tilegx_elf_check_relocs (bfd *abfd, stru
   const Elf_Internal_Rela *rel_end;
   asection *sreloc;
   int num_relocs;
-  bfd_boolean has_tls_gd_or_ie = FALSE, has_tls_add = FALSE;
+  bool has_tls_gd_or_ie = false, has_tls_add = false;
 
   if (bfd_link_relocatable (info))
-    return TRUE;
+    return true;
 
   htab = tilegx_elf_hash_table (info);
   symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
@@ -1669,13 +1631,13 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 	{
 	case R_TILEGX_TLS_GD_CALL:
 	case R_TILEGX_TLS_IE_LOAD:
-	  has_tls_gd_or_ie = TRUE;
+	  has_tls_gd_or_ie = true;
 	  break;
 	case R_TILEGX_IMM8_X0_TLS_ADD:
 	case R_TILEGX_IMM8_Y0_TLS_ADD:
 	case R_TILEGX_IMM8_X1_TLS_ADD:
 	case R_TILEGX_IMM8_Y1_TLS_ADD:
-	  has_tls_add = TRUE;
+	  has_tls_add = true;
 	  break;
 	}
     }
@@ -1698,7 +1660,7 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 	  /* xgettext:c-format */
 	  _bfd_error_handler (_("%pB: bad symbol index: %d"),
 			      abfd, r_symndx);
-	  return FALSE;
+	  return false;
 	}
 
       if (r_symndx < symtab_hdr->sh_info)
@@ -1780,7 +1742,7 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 		    local_got_refcounts = ((bfd_signed_vma *)
 					   bfd_zalloc (abfd, size));
 		    if (local_got_refcounts == NULL)
-		      return FALSE;
+		      return false;
 		    elf_local_got_refcounts (abfd) = local_got_refcounts;
 		    _bfd_tilegx_elf_local_got_tls_type (abfd)
 		      = (char *) (local_got_refcounts + symtab_hdr->sh_info);
@@ -1803,7 +1765,7 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 		      /* xgettext:c-format */
 		      (_("%pB: `%s' accessed both as normal and thread local symbol"),
 		       abfd, h ? h->root.root.string : "<local>");
-		    return FALSE;
+		    return false;
 		  }
 	      }
 
@@ -1819,7 +1781,7 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 	  if (htab->elf.sgot == NULL)
 	    {
 	      if (!tilegx_elf_create_got_section (htab->elf.dynobj, info))
-		return FALSE;
+		return false;
 	    }
 	  break;
 
@@ -1832,9 +1794,9 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 	      if (! _bfd_generic_link_add_one_symbol (info, abfd,
 						      "__tls_get_addr", 0,
 						      bfd_und_section_ptr, 0,
-						      NULL, FALSE, FALSE,
+						      NULL, false, false,
 						      &bh))
-		return FALSE;
+		return false;
 	      h = (struct elf_link_hash_entry *) bh;
 	    }
 	  else
@@ -1994,17 +1956,16 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 		{
 		  sreloc = _bfd_elf_make_dynamic_reloc_section
 		    (sec, htab->elf.dynobj, htab->word_align_power, abfd,
-		     /*rela?*/ TRUE);
+		     /*rela?*/ true);
 
 		  if (sreloc == NULL)
-		    return FALSE;
+		    return false;
 		}
 
 	      /* 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,10 +1976,10 @@ 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;
+		    return false;
 
 		  s = bfd_section_from_elf_index (abfd, isym->st_shndx);
 		  if (s == NULL)
@@ -2031,11 +1992,11 @@ 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)
-		    return FALSE;
+		    return false;
 		  p->next = *head;
 		  *head = p;
 		  p->sec = sec;
@@ -2052,12 +2013,12 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 
 	case R_TILEGX_GNU_VTINHERIT:
 	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-	    return FALSE;
+	    return false;
 	  break;
 
 	case R_TILEGX_GNU_VTENTRY:
 	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-	    return FALSE;
+	    return false;
 	  break;
 
 	default:
@@ -2065,7 +2026,7 @@ tilegx_elf_check_relocs (bfd *abfd, stru
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -2104,8 +2065,8 @@ tilegx_elf_gc_mark_hook (asection *sec,
 	  if (! _bfd_generic_link_add_one_symbol (info, sec->owner,
 						  "__tls_get_addr", 0,
 						  bfd_und_section_ptr,
-						  0, NULL, FALSE,
-						  FALSE, &bh))
+						  0, NULL, false,
+						  false, &bh))
 	    return NULL;
 	  h = (struct elf_link_hash_entry *) bh;
 	  BFD_ASSERT (h != NULL);
@@ -2119,30 +2080,13 @@ 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
    change the definition to something the rest of the link can
    understand.  */
 
-bfd_boolean
+bool
 tilegx_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				  struct elf_link_hash_entry *h)
 {
@@ -2183,7 +2127,7 @@ tilegx_elf_adjust_dynamic_symbol (struct
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     h->plt.offset = (bfd_vma) -1;
@@ -2197,7 +2141,7 @@ tilegx_elf_adjust_dynamic_symbol (struct
       BFD_ASSERT (def->root.type == bfd_link_hash_defined);
       h->root.u.def.section = def->root.u.def.section;
       h->root.u.def.value = def->root.u.def.value;
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -2208,26 +2152,26 @@ tilegx_elf_adjust_dynamic_symbol (struct
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (bfd_link_pic (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT, we don't need to generate a copy reloc.  */
   if (!h->non_got_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc)
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   /* 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;
+      return true;
     }
 
   /* We must allocate the symbol in our .dynbss section, which will
@@ -2266,16 +2210,15 @@ tilegx_elf_adjust_dynamic_symbol (struct
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   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)
-    return TRUE;
+    return true;
 
   info = (struct bfd_link_info *) inf;
   htab = tilegx_elf_hash_table (info);
@@ -2290,7 +2233,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (1, bfd_link_pic (info), h))
@@ -2349,7 +2292,7 @@ allocate_dynrelocs (struct elf_link_hash
   else if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = tilegx_elf_hash_entry(h)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -2358,7 +2301,7 @@ allocate_dynrelocs (struct elf_link_hash
 	  && !h->forced_local)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->elf.sgot;
@@ -2380,9 +2323,8 @@ 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)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -2396,7 +2338,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 +2351,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.  */
@@ -2422,7 +2364,7 @@ allocate_dynrelocs (struct elf_link_hash
 		   && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -2445,7 +2387,7 @@ allocate_dynrelocs (struct elf_link_hash
 	      && !h->forced_local)
 	    {
 	      if (! bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 
 	  /* If that succeeded, we know we'll be keeping all the
@@ -2454,52 +2396,25 @@ 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);
     }
 
-  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;
 }
 
 /* Return true if the dynamic symbol for a given section should be
    omitted when creating a shared library.  */
 
-bfd_boolean
+bool
 tilegx_elf_omit_section_dynsym (bfd *output_bfd,
 				struct bfd_link_info *info,
 				asection *p)
@@ -2508,14 +2423,14 @@ tilegx_elf_omit_section_dynsym (bfd *out
      against the _GLOBAL_OFFSET_TABLE_ symbol emitted in PIC mode
      can be turned into relocations against the .got symbol.  */
   if (strcmp (p->name, ".got") == 0)
-    return FALSE;
+    return false;
 
   return _bfd_elf_omit_section_dynsym_default (output_bfd, info, p);
 }
 
-bfd_boolean
-tilegx_elf_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
-				  struct bfd_link_info *info)
+bool
+tilegx_elf_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
+			       struct bfd_link_info *info)
 {
   struct tilegx_elf_link_hash_table *htab;
   bfd *dynobj;
@@ -2525,7 +2440,8 @@ tilegx_elf_size_dynamic_sections (bfd *o
   htab = tilegx_elf_hash_table (info);
   BFD_ASSERT (htab != NULL);
   dynobj = htab->elf.dynobj;
-  BFD_ASSERT (dynobj != NULL);
+  if (dynobj == NULL)
+    return true;
 
   if (elf_hash_table (info)->dynamic_sections_created)
     {
@@ -2536,6 +2452,7 @@ tilegx_elf_size_dynamic_sections (bfd *o
 	  BFD_ASSERT (s != NULL);
 	  s->size = strlen (htab->dynamic_interpreter) + 1;
 	  s->contents = (unsigned char *) htab->dynamic_interpreter;
+	  s->alloced = 1;
 	}
     }
 
@@ -2629,7 +2546,7 @@ tilegx_elf_size_dynamic_sections (bfd *o
       struct elf_link_hash_entry *got;
       got = elf_link_hash_lookup (elf_hash_table (info),
 				  "_GLOBAL_OFFSET_TABLE_",
-				  FALSE, FALSE, FALSE);
+				  false, false, false);
 
       /* Don't allocate .got.plt section if there are no GOT nor PLT
 	 entries and there is no refeence to _GLOBAL_OFFSET_TABLE_.  */
@@ -2662,7 +2579,7 @@ tilegx_elf_size_dynamic_sections (bfd *o
 	  /* Strip this section if we don't need it; see the
 	     comment below.  */
 	}
-      else if (strncmp (s->name, ".rela", 5) == 0)
+      else if (startswith (s->name, ".rela"))
 	{
 	  if (s->size != 0)
 	    {
@@ -2700,53 +2617,11 @@ tilegx_elf_size_dynamic_sections (bfd *o
 	 at the beginning, and we don't want garbage.  */
       s->contents = (bfd_byte *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
-  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
@@ -2923,7 +2798,7 @@ static const bfd_byte *insn_addx_Y0Y1 =
    section, which means that the addend must be adjusted
    accordingly.  */
 
-bfd_boolean
+int
 tilegx_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 			     bfd *input_bfd, asection *input_section,
 			     bfd_byte *contents, Elf_Internal_Rela *relocs,
@@ -2959,7 +2834,7 @@ tilegx_elf_relocate_section (bfd *output
   for (; rel < relend; rel++)
     {
       int r_type, tls_type;
-      bfd_boolean is_tls_iele, is_tls_le;
+      bool is_tls_iele, is_tls_le;
       reloc_howto_type *howto;
       unsigned long r_symndx;
       struct elf_link_hash_entry *h;
@@ -2970,9 +2845,9 @@ tilegx_elf_relocate_section (bfd *output
       bfd_reloc_status_type r;
       const char *name;
       bfd_vma off;
-      bfd_boolean is_plt = FALSE;
-      bfd_boolean resolved_to_zero;
-      bfd_boolean unresolved_reloc;
+      bool is_plt = false;
+      bool resolved_to_zero;
+      bool unresolved_reloc;
 
       r_type = TILEGX_ELF_R_TYPE (rel->r_info);
       if (r_type == R_TILEGX_GNU_VTINHERIT
@@ -2989,7 +2864,7 @@ tilegx_elf_relocate_section (bfd *output
       h = NULL;
       sym = NULL;
       sec = NULL;
-      unresolved_reloc = FALSE;
+      unresolved_reloc = false;
       if (r_symndx < symtab_hdr->sh_info)
 	{
 	  sym = local_syms + r_symndx;
@@ -2998,8 +2873,8 @@ tilegx_elf_relocate_section (bfd *output
 	}
       else
 	{
-	  bfd_boolean warned ATTRIBUTE_UNUSED;
-	  bfd_boolean ignored ATTRIBUTE_UNUSED;
+	  bool warned ATTRIBUTE_UNUSED;
+	  bool ignored ATTRIBUTE_UNUSED;
 
 	  RELOC_FOR_GLOBAL_SYMBOL (info, input_bfd, input_section, rel,
 				   r_symndx, symtab_hdr, sym_hashes,
@@ -3019,7 +2894,8 @@ tilegx_elf_relocate_section (bfd *output
 
       if (sec != NULL && discarded_section (sec))
 	RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section,
-					 rel, 1, relend, howto, 0, contents);
+					 rel, 1, relend, R_TILEGX_NONE,
+					 howto, 0, contents);
 
       if (bfd_link_relocatable (info))
 	continue;
@@ -3080,8 +2956,8 @@ tilegx_elf_relocate_section (bfd *output
 
 	      /* GD -> GD */
 	      h = (struct elf_link_hash_entry *)
-		bfd_link_hash_lookup (info->hash, "__tls_get_addr", FALSE,
-				      FALSE, TRUE);
+		bfd_link_hash_lookup (info->hash, "__tls_get_addr", false,
+				      false, true);
 	      BFD_ASSERT (h != NULL);
 	      r_type = R_TILEGX_JUMPOFF_X1_PLT;
 	      howto = tilegx_elf_howto_table + r_type;
@@ -3091,10 +2967,10 @@ tilegx_elf_relocate_section (bfd *output
 		   || r_type ==  R_TILEGX_IMM8_Y0_TLS_ADD
 		   || r_type ==  R_TILEGX_IMM8_Y1_TLS_ADD)
 	    {
-	      bfd_boolean is_pipe0 =
+	      bool is_pipe0 =
 		(r_type == R_TILEGX_IMM8_X0_TLS_ADD
 		 || r_type ==  R_TILEGX_IMM8_Y0_TLS_ADD);
-	      bfd_boolean is_X0X1 =
+	      bool is_X0X1 =
 		(r_type == R_TILEGX_IMM8_X0_TLS_ADD
 		 || r_type ==  R_TILEGX_IMM8_X1_TLS_ADD);
 	      int dest_begin = is_pipe0 ? 0 : 31;
@@ -3162,7 +3038,7 @@ tilegx_elf_relocate_section (bfd *output
 	    {
 	      const bfd_byte *mask = NULL;
 	      const bfd_byte *add_insn = NULL;
-	      bfd_boolean is_64bit = ABI_64_P (output_bfd);
+	      bool is_64bit = ABI_64_P (output_bfd);
 
 	      switch (r_type)
 		{
@@ -3243,7 +3119,7 @@ tilegx_elf_relocate_section (bfd *output
 
 	  if (h != NULL)
 	    {
-	      bfd_boolean dyn;
+	      bool dyn;
 
 	      off = h->got.offset;
 	      BFD_ASSERT (off != (bfd_vma) -1);
@@ -3277,7 +3153,7 @@ tilegx_elf_relocate_section (bfd *output
 		    }
 		}
 	      else
-		unresolved_reloc = FALSE;
+		unresolved_reloc = false;
 	    }
 	  else
 	    {
@@ -3351,7 +3227,7 @@ tilegx_elf_relocate_section (bfd *output
 	  relocation = (htab->elf.splt->output_section->vma
 			+ htab->elf.splt->output_offset
 			+ h->plt.offset);
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  break;
 
 	case R_TILEGX_64_PCREL:
@@ -3440,7 +3316,7 @@ tilegx_elf_relocate_section (bfd *output
 		      || h->root.type == bfd_link_hash_undefined)))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip, relocate = FALSE;
+	      bool skip, relocate = false;
 
 	      /* When generating a shared object, these relocations
 		 are copied into the output file to be resolved at run
@@ -3448,15 +3324,15 @@ tilegx_elf_relocate_section (bfd *output
 
 	      BFD_ASSERT (sreloc != NULL);
 
-	      skip = FALSE;
+	      skip = false;
 
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE, relocate = TRUE;
+		skip = true, relocate = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 
@@ -3472,7 +3348,7 @@ tilegx_elf_relocate_section (bfd *output
 		     FIXME: Add code tracking needed dynamic relocs as
 		     e.g. i386 has.  */
 		  if (h->dynindx == -1)
-		    skip = TRUE, relocate = TRUE;
+		    skip = true, relocate = true;
 		  break;
 		}
 
@@ -3513,7 +3389,7 @@ tilegx_elf_relocate_section (bfd *output
 		      else if (sec == NULL || sec->owner == NULL)
 			{
 			  bfd_set_error (bfd_error_bad_value);
-			  return FALSE;
+			  return false;
 			}
 		      else
 			{
@@ -3542,7 +3418,7 @@ tilegx_elf_relocate_section (bfd *output
 				(_("%pB: probably compiled without -fPIC?"),
 				 input_bfd);
 			      bfd_set_error (bfd_error_bad_value);
-			      return FALSE;
+			      return false;
 			    }
 			}
 
@@ -3569,17 +3445,17 @@ tilegx_elf_relocate_section (bfd *output
 	  if (!bfd_link_executable (info))
 	    {
 	      Elf_Internal_Rela outrel;
-	      bfd_boolean skip;
+	      bool skip;
 
 	      BFD_ASSERT (sreloc != NULL);
-	      skip = FALSE;
+	      skip = false;
 	      outrel.r_offset =
 		_bfd_elf_section_offset (output_bfd, info, input_section,
 					 rel->r_offset);
 	      if (outrel.r_offset == (bfd_vma) -1)
-		skip = TRUE;
+		skip = true;
 	      else if (outrel.r_offset == (bfd_vma) -2)
-		skip = TRUE;
+		skip = true;
 	      outrel.r_offset += (input_section->output_section->vma
 				  + input_section->output_offset);
 	      if (skip)
@@ -3661,14 +3537,14 @@ tilegx_elf_relocate_section (bfd *output
 	    {
 	      Elf_Internal_Rela outrel;
 	      int indx = 0;
-	      bfd_boolean need_relocs = FALSE;
+	      bool need_relocs = false;
 
 	      if (htab->elf.srelgot == NULL)
 		abort ();
 
 	      if (h != NULL)
 	      {
-		bfd_boolean dyn;
+		bool dyn;
 		dyn = htab->elf.dynamic_sections_created;
 
 		if (WILL_CALL_FINISH_DYNAMIC_SYMBOL (dyn,
@@ -3687,7 +3563,7 @@ tilegx_elf_relocate_section (bfd *output
 		  && (h == NULL
 		      || ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
 		      || h->root.type != bfd_link_hash_undefweak))
-		    need_relocs = TRUE;
+		    need_relocs = true;
 
 	      switch (r_type)
 		{
@@ -3771,7 +3647,7 @@ tilegx_elf_relocate_section (bfd *output
 	    abort ();
 
 	  relocation = off - got_base;
-	  unresolved_reloc = FALSE;
+	  unresolved_reloc = false;
 	  howto = tilegx_elf_howto_table + r_type;
 	  break;
 
@@ -3862,7 +3738,7 @@ tilegx_elf_relocate_section (bfd *output
 
 	    case bfd_reloc_undefined:
 	      (*info->callbacks->undefined_symbol)
-		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
+		(info, name, input_bfd, input_section, rel->r_offset, true);
 	      break;
 
 	    case bfd_reloc_outofrange:
@@ -3888,13 +3764,13 @@ tilegx_elf_relocate_section (bfd *output
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up dynamic symbol handling.  We set the contents of various
    dynamic sections here.  */
 
-bfd_boolean
+bool
 tilegx_elf_finish_dynamic_symbol (bfd *output_bfd,
 				  struct bfd_link_info *info,
 				  struct elf_link_hash_entry *h,
@@ -4034,12 +3910,12 @@ tilegx_elf_finish_dynamic_symbol (bfd *o
       || (h == htab->elf.hgot || h == htab->elf.hplt))
     sym->st_shndx = SHN_ABS;
 
-  return TRUE;
+  return true;
 }
 
 /* Finish up the dynamic sections.  */
 
-static bfd_boolean
+static bool
 tilegx_finish_dyn (bfd *output_bfd, struct bfd_link_info *info,
 		   bfd *dynobj, asection *sdyn,
 		   asection *splt ATTRIBUTE_UNUSED)
@@ -4082,10 +3958,10 @@ tilegx_finish_dyn (bfd *output_bfd, stru
 
       bed->s->swap_dyn_out (output_bfd, &dyn, dyncon);
     }
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 tilegx_elf_finish_dynamic_sections (bfd *output_bfd,
 				    struct bfd_link_info *info)
 {
@@ -4103,7 +3979,7 @@ tilegx_elf_finish_dynamic_sections (bfd
   if (elf_hash_table (info)->dynamic_sections_created)
     {
       asection *splt;
-      bfd_boolean ret;
+      bool ret;
 
       splt = htab->elf.splt;
       BFD_ASSERT (splt != NULL && sdyn != NULL);
@@ -4142,7 +4018,7 @@ tilegx_elf_finish_dynamic_sections (bfd
 	{
 	  _bfd_error_handler
 	    (_("discarded output section: `%pA'"), htab->elf.sgotplt);
-	  return FALSE;
+	  return false;
 	}
 
       if (htab->elf.sgotplt->size > 0)
@@ -4177,7 +4053,7 @@ tilegx_elf_finish_dynamic_sections (bfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -4239,7 +4115,7 @@ tilegx_additional_program_headers (bfd *
 }
 
 
-bfd_boolean
+bool
 _bfd_tilegx_elf_merge_private_bfd_data (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -4253,8 +4129,8 @@ _bfd_tilegx_elf_merge_private_bfd_data (
 	(_("%pB: cannot link together %s and %s objects"),
 	 ibfd, targ1, targ2);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  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.20200303/bfd/elfxx-tilegx.h ./bfd/elfxx-tilegx.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-tilegx.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-tilegx.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* TILE-Gx ELF specific backend routines.
-   Copyright (C) 2011-2019 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -40,26 +40,26 @@ tilegx_elf_copy_indirect_symbol (struct
 				 struct elf_link_hash_entry *,
 				 struct elf_link_hash_entry *);
 
-extern bfd_boolean
+extern bool
 tilegx_elf_create_dynamic_sections (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
+extern bool
 tilegx_elf_check_relocs (bfd *, struct bfd_link_info *,
 			 asection *, const Elf_Internal_Rela *);
 
-extern bfd_boolean
+extern bool
 tilegx_elf_adjust_dynamic_symbol (struct bfd_link_info *,
 				  struct elf_link_hash_entry *);
 
-extern bfd_boolean
+extern bool
 tilegx_elf_omit_section_dynsym (bfd *,
 				struct bfd_link_info *,
 				asection *);
 
-extern bfd_boolean
-tilegx_elf_size_dynamic_sections (bfd *, struct bfd_link_info *);
+extern bool
+tilegx_elf_late_size_sections (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
+extern int
 tilegx_elf_relocate_section (bfd *, struct bfd_link_info *,
 			     bfd *, asection *,
 			     bfd_byte *, Elf_Internal_Rela *,
@@ -76,20 +76,20 @@ tilegx_elf_gc_mark_hook (asection *,
 extern bfd_vma
 tilegx_elf_plt_sym_val (bfd_vma, const asection *, const arelent *);
 
-extern bfd_boolean
+extern bool
 tilegx_info_to_howto_rela (bfd *, arelent *, Elf_Internal_Rela *);
 
 extern int
 tilegx_additional_program_headers (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
+extern bool
 tilegx_elf_finish_dynamic_symbol (bfd *,
 				  struct bfd_link_info *,
 				  struct elf_link_hash_entry *,
 				  Elf_Internal_Sym *);
 
-extern bfd_boolean
+extern bool
 tilegx_elf_finish_dynamic_sections (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean
+extern bool
 _bfd_tilegx_elf_merge_private_bfd_data (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.20200303/bfd/elfxx-x86.c ./bfd/elfxx-x86.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-x86.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-x86.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* x86 specific support for ELF
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -21,8 +21,6 @@
 #include "elfxx-x86.h"
 #include "elf-vxworks.h"
 #include "objalloc.h"
-#include "elf/i386.h"
-#include "elf/x86-64.h"
 
 /* The name of the dynamic interpreter.  This is put in the .interp
    section.  */
@@ -31,12 +29,10 @@
 #define ELF64_DYNAMIC_INTERPRETER "/lib/ld64.so.1"
 #define ELFX32_DYNAMIC_INTERPRETER "/lib/ldx32.so.1"
 
-bfd_boolean
+bool
 _bfd_x86_elf_mkobject (bfd *abfd)
 {
-  return bfd_elf_allocate_object (abfd,
-				  sizeof (struct elf_x86_obj_tdata),
-				  get_elf_backend_data (abfd)->target_id);
+  return bfd_elf_allocate_object (abfd, sizeof (struct elf_x86_obj_tdata));
 }
 
 /* _TLS_MODULE_BASE_ needs to be treated especially when linking
@@ -82,7 +78,7 @@ _bfd_x86_elf_dtpoff_base (struct bfd_lin
 /* Allocate space in .plt, .got and associated reloc sections for
    dynamic relocs.  */
 
-static bfd_boolean
+static bool
 elf_x86_allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf)
 {
   struct bfd_link_info *info;
@@ -90,11 +86,11 @@ elf_x86_allocate_dynrelocs (struct elf_l
   struct elf_x86_link_hash_entry *eh;
   struct elf_dyn_relocs *p;
   unsigned int plt_entry_size;
-  bfd_boolean resolved_to_zero;
+  bool resolved_to_zero;
   const struct elf_backend_data *bed;
 
   if (h->root.type == bfd_link_hash_indirect)
-    return TRUE;
+    return true;
 
   eh = (struct elf_x86_link_hash_entry *) h;
 
@@ -102,7 +98,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
   bed = get_elf_backend_data (info->output_bfd);
   htab = elf_x86_hash_table (info, bed->target_id);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   plt_entry_size = htab->plt.plt_entry_size;
 
@@ -131,13 +127,16 @@ 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,
+      /* GOTOFF relocation needs PLT.  */
+      if (eh->gotoff_ref)
+	h->plt.refcount = 1;
+
+      if (_bfd_elf_allocate_ifunc_dyn_relocs (info, h, &h->dyn_relocs,
 					      plt_entry_size,
 					      (htab->plt.has_plt0
 					       * plt_entry_size),
 					       htab->got_entry_size,
-					       TRUE))
+					       true))
 	{
 	  asection *s = htab->plt_second;
 	  if (h->plt.offset != (bfd_vma) -1 && s != NULL)
@@ -149,10 +148,10 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	      s->size += htab->non_lazy_plt->plt_entry_size;
 	    }
 
-	  return TRUE;
+	  return true;
 	}
       else
-	return FALSE;
+	return false;
     }
   /* Don't create the PLT entry if there are only function pointer
      relocations which can be resolved at run-time.  */
@@ -160,7 +159,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	   && (h->plt.refcount > 0
 	       || eh->plt_got.refcount > 0))
     {
-      bfd_boolean use_plt_got = eh->plt_got.refcount > 0;
+      bool use_plt_got = eh->plt_got.refcount > 0;
 
       /* Make sure this symbol is output as a dynamic symbol.
 	 Undefined weak syms won't yet be marked as dynamic.  */
@@ -170,7 +169,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       if (bfd_link_pic (info)
@@ -179,7 +178,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	  asection *s = htab->elf.splt;
 	  asection *second_s = htab->plt_second;
 	  asection *got_s = htab->plt_got;
-	  bfd_boolean use_plt;
+	  bool use_plt;
 
 	  /* If this is the first .plt entry, make room for the special
 	     first entry.  The .plt section is used by prelink to undo
@@ -204,7 +203,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	     NB: If PLT is PC-relative, we can use the .plt in PIE for
 	     function address. */
 	  if (h->def_regular)
-	    use_plt = FALSE;
+	    use_plt = false;
 	  else if (htab->pcrel_plt)
 	    use_plt = ! bfd_link_dll (info);
 	  else
@@ -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,
@@ -309,7 +308,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
   else if (h->got.refcount > 0)
     {
       asection *s;
-      bfd_boolean dyn;
+      bool dyn;
       int tls_type = elf_x86_hash_entry (h)->tls_type;
 
       /* Make sure this symbol is output as a dynamic symbol.
@@ -320,7 +319,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	  && h->root.type == bfd_link_hash_undefweak)
 	{
 	  if (! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 	}
 
       s = htab->elf.sgot;
@@ -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,21 +359,23 @@ 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;
+	  htab->rel_tls_desc->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)
-    return TRUE;
+  if (h->dyn_relocs == NULL)
+    return true;
 
   /* In the shared -Bsymbolic case, discard space allocated for
      dynamic pc-relative relocs against symbols which turn out to be
@@ -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,17 +449,17 @@ 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;
+			return false;
 		    }
 		  else
-		    eh->dyn_relocs = NULL;
+		    h->dyn_relocs = NULL;
 		}
 	      else if (h->dynindx == -1
 		       && !h->forced_local
 		       && !bfd_elf_link_record_dynamic_symbol (info, h))
-		return FALSE;
+		return false;
 	    }
 	  else if (bfd_link_executable (info)
 		   && (h->needs_copy || eh->needs_copy)
@@ -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;
@@ -502,7 +504,7 @@ elf_x86_allocate_dynrelocs (struct elf_l
 	      && !resolved_to_zero
 	      && h->root.type == bfd_link_hash_undefweak
 	      && ! bfd_elf_link_record_dynamic_symbol (info, h))
-	    return FALSE;
+	    return false;
 
 	  /* If that succeeded, we know we'll be keeping all the
 	     relocs.  */
@@ -510,85 +512,46 @@ 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;
 
+      if (eh->def_protected && bfd_link_executable (info))
+	{
+	  /* Disallow copy relocation against non-copyable protected
+	     symbol.  */
+	  asection *s = p->sec->output_section;
+	  if (s != NULL && (s->flags & SEC_READONLY) != 0)
+	    {
+	      info->callbacks->fatal
+		/* xgettext:c-format */
+		(_("%P: %pB: copy relocation against non-copyable "
+		   "protected symbol `%s' in %pB\n"),
+		 p->sec->owner, h->root.root.string,
+		 h->root.u.def.section->owner);
+	      return false;
+	    }
+	}
+
       sreloc = elf_section_data (p->sec)->sreloc;
 
       BFD_ASSERT (sreloc != NULL);
       sreloc->size += p->count * htab->sizeof_reloc;
     }
 
-  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;
+  return true;
 }
 
 /* Allocate space in .plt, .got and associated reloc sections for
    local dynamic relocs.  */
 
-static bfd_boolean
+static int
 elf_x86_allocate_local_dynreloc (void **slot, void *inf)
 {
   struct elf_link_hash_entry *h
@@ -609,7 +572,7 @@ elf_x86_allocate_local_dynreloc (void **
 struct elf_link_hash_entry *
 _bfd_elf_x86_get_local_sym_hash (struct elf_x86_link_hash_table *htab,
 				 bfd *abfd, const Elf_Internal_Rela *rel,
-				 bfd_boolean create)
+				 bool create)
 {
   struct elf_x86_link_hash_entry e, *ret;
   asection *sec = abfd->sections;
@@ -646,8 +609,7 @@ _bfd_elf_x86_get_local_sym_hash (struct
   return &ret->elf;
 }
 
-/* Create an entry in a x86 ELF linker hash table.  NB: THIS MUST BE IN
-   SYNC WITH _bfd_elf_link_hash_newfunc.  */
+/* Create an entry in an x86 ELF linker hash table.  */
 
 struct bfd_hash_entry *
 _bfd_x86_elf_link_hash_newfunc (struct bfd_hash_entry *entry,
@@ -666,27 +628,14 @@ _bfd_x86_elf_link_hash_newfunc (struct b
     }
 
   /* Call the allocation method of the superclass.  */
-  entry = _bfd_link_hash_newfunc (entry, table, string);
+  entry = _bfd_elf_link_hash_newfunc (entry, table, string);
   if (entry != NULL)
     {
       struct elf_x86_link_hash_entry *eh
        = (struct elf_x86_link_hash_entry *) entry;
-      struct elf_link_hash_table *htab
-	= (struct elf_link_hash_table *) table;
 
-      memset (&eh->elf.size, 0,
-	      (sizeof (struct elf_x86_link_hash_entry)
-	       - offsetof (struct elf_link_hash_entry, size)));
+      memset (&eh->elf + 1, 0, sizeof (*eh) - sizeof (eh->elf));
       /* Set local fields.  */
-      eh->elf.indx = -1;
-      eh->elf.dynindx = -1;
-      eh->elf.got = htab->init_got_refcount;
-      eh->elf.plt = htab->init_plt_refcount;
-      /* Assume that we have been called by a non-ELF symbol reader.
-	 This flag is then reset by the code which reads an ELF input
-	 file.  This ensures that a symbol created by a non-ELF symbol
-	 reader will have the flag set correctly.  */
-      eh->elf.non_elf = 1;
       eh->plt_second.offset = (bfd_vma) -1;
       eh->plt_got.offset = (bfd_vma) -1;
       eh->tlsdesc_got = (bfd_vma) -1;
@@ -730,6 +679,9 @@ elf_x86_link_hash_table_free (bfd *obfd)
   struct elf_x86_link_hash_table *htab
     = (struct elf_x86_link_hash_table *) obfd->link.hash;
 
+  free (htab->dt_relr_bitmap.u.elf64);
+  free (htab->unaligned_relative_reloc.data);
+  free (htab->relative_reloc.data);
   if (htab->loc_hash_table)
     htab_delete (htab->loc_hash_table);
   if (htab->loc_hash_memory)
@@ -737,16 +689,16 @@ elf_x86_link_hash_table_free (bfd *obfd)
   _bfd_elf_link_hash_table_free (obfd);
 }
 
-static bfd_boolean
+static bool
 elf_i386_is_reloc_section (const char *secname)
 {
-  return CONST_STRNEQ (secname, ".rel");
+  return startswith (secname, ".rel");
 }
 
-static bfd_boolean
+static bool
 elf_x86_64_is_reloc_section (const char *secname)
 {
-  return CONST_STRNEQ (secname, ".rela");
+  return startswith (secname, ".rela");
 }
 
 /* Create an x86 ELF linker hash table.  */
@@ -755,32 +707,32 @@ struct bfd_link_hash_table *
 _bfd_x86_elf_link_hash_table_create (bfd *abfd)
 {
   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)
     return NULL;
 
-  bed = get_elf_backend_data (abfd);
   if (!_bfd_elf_link_hash_table_init (&ret->elf, abfd,
 				      _bfd_x86_elf_link_hash_newfunc,
-				      sizeof (struct elf_x86_link_hash_entry),
-				      bed->target_id))
+				      sizeof (struct elf_x86_link_hash_entry)))
     {
       free (ret);
       return NULL;
     }
 
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
   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->pcrel_plt = true;
       ret->tls_get_addr = "__tls_get_addr";
+      ret->relative_r_type = R_X86_64_RELATIVE;
+      ret->relative_r_name = "R_X86_64_RELATIVE";
+      ret->ax_register = "RAX";
+      ret->elf_append_reloc = elf_append_rela;
+      ret->elf_write_addend_in_got = _bfd_elf64_write_addend;
     }
   if (ABI_64_P (abfd))
     {
@@ -788,6 +740,7 @@ _bfd_x86_elf_link_hash_table_create (bfd
       ret->pointer_r_type = R_X86_64_64;
       ret->dynamic_interpreter = ELF64_DYNAMIC_INTERPRETER;
       ret->dynamic_interpreter_size = sizeof ELF64_DYNAMIC_INTERPRETER;
+      ret->elf_write_addend = _bfd_elf64_write_addend;
     }
   else
     {
@@ -798,25 +751,27 @@ _bfd_x86_elf_link_hash_table_create (bfd
 	  ret->dynamic_interpreter = ELFX32_DYNAMIC_INTERPRETER;
 	  ret->dynamic_interpreter_size
 	    = sizeof ELFX32_DYNAMIC_INTERPRETER;
+	  ret->elf_write_addend = _bfd_elf32_write_addend;
 	}
       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;
+	  ret->pcrel_plt = false;
 	  ret->pointer_r_type = R_386_32;
+	  ret->relative_r_type = R_386_RELATIVE;
+	  ret->relative_r_name = "R_386_RELATIVE";
+	  ret->ax_register = "EAX";
+	  ret->elf_append_reloc = elf_append_rel;
+	  ret->elf_write_addend = _bfd_elf32_write_addend;
+	  ret->elf_write_addend_in_got = _bfd_elf32_write_addend;
 	  ret->dynamic_interpreter = ELF32_DYNAMIC_INTERPRETER;
 	  ret->dynamic_interpreter_size
 	    = sizeof ELF32_DYNAMIC_INTERPRETER;
 	  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,
@@ -857,8 +812,12 @@ elf_x86_linker_defined (struct bfd_link_
 {
   struct elf_link_hash_entry *h;
 
-  h = elf_link_hash_lookup (elf_hash_table (info), name,
-			    FALSE, FALSE, FALSE);
+  /* NULL indicates __ehdr_start.  */
+  if (name == NULL)
+    h = elf_hash_table (info)->hehdr_start;
+  else
+    h = elf_link_hash_lookup (elf_hash_table (info), name,
+			      false, false, false);
   if (h == NULL)
     return;
 
@@ -885,7 +844,7 @@ elf_x86_hide_linker_defined (struct bfd_
   struct elf_link_hash_entry *h;
 
   h = elf_link_hash_lookup (elf_hash_table (info), name,
-			    FALSE, FALSE, FALSE);
+			    false, false, false);
   if (h == NULL)
     return;
 
@@ -894,10 +853,10 @@ elf_x86_hide_linker_defined (struct bfd_
 
   if (ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
       || ELF_ST_VISIBILITY (h->other) == STV_HIDDEN)
-    _bfd_elf_link_hash_hide_symbol (info, h, TRUE);
+    _bfd_elf_link_hash_hide_symbol (info, h, true);
 }
 
-bfd_boolean
+bool
 _bfd_x86_elf_link_check_relocs (bfd *abfd, struct bfd_link_info *info)
 {
   if (!bfd_link_relocatable (info))
@@ -912,7 +871,7 @@ _bfd_x86_elf_link_check_relocs (bfd *abf
 
 	  h = elf_link_hash_lookup (elf_hash_table (info),
 				    htab->tls_get_addr,
-				    FALSE, FALSE, FALSE);
+				    false, false, false);
 	  if (h != NULL)
 	    {
 	      elf_x86_hash_entry (h)->tls_get_addr = 1;
@@ -923,11 +882,14 @@ _bfd_x86_elf_link_check_relocs (bfd *abf
 		  h = (struct elf_link_hash_entry *) h->root.u.i.link;
 		  elf_x86_hash_entry (h)->tls_get_addr = 1;
 		}
+
+	      htab->has_tls_get_addr_call = 1;
 	    }
 
-	  /* "__ehdr_start" will be defined by linker as a hidden symbol
-	     later if it is referenced and not defined.  */
-	  elf_x86_linker_defined (info, "__ehdr_start");
+	  /* Pass NULL for __ehdr_start which will be defined by
+	     linker as a hidden symbol later if it is referenced and
+	     not defined.  */
+	  elf_x86_linker_defined (info, NULL);
 
 	  if (bfd_link_executable (info))
 	    {
@@ -952,26 +914,1375 @@ _bfd_x86_elf_link_check_relocs (bfd *abf
   return _bfd_elf_link_check_relocs (abfd, info);
 }
 
+/* Look through the relocs for a section before allocation to make the
+   dynamic reloc section.  */
+
+bool
+_bfd_x86_elf_check_relocs (bfd *abfd,
+			   struct bfd_link_info *info,
+			   asection *sec,
+			   const Elf_Internal_Rela *relocs)
+{
+  struct elf_x86_link_hash_table *htab;
+  Elf_Internal_Shdr *symtab_hdr;
+  struct elf_link_hash_entry **sym_hashes;
+  const Elf_Internal_Rela *rel;
+  const Elf_Internal_Rela *rel_end;
+  asection *sreloc;
+  const struct elf_backend_data *bed;
+  bool is_x86_64;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  bed = get_elf_backend_data (abfd);
+  htab = elf_x86_hash_table (info, bed->target_id);
+  if (htab == NULL)
+    {
+      sec->check_relocs_failed = 1;
+      return false;
+    }
+
+  is_x86_64 = bed->target_id == X86_64_ELF_DATA;
+
+  symtab_hdr = &elf_symtab_hdr (abfd);
+  sym_hashes = elf_sym_hashes (abfd);
+
+  rel_end = relocs + sec->reloc_count;
+  for (rel = relocs; rel < rel_end; rel++)
+    {
+      unsigned int r_type;
+      unsigned int r_symndx;
+      struct elf_link_hash_entry *h;
+
+      r_symndx = htab->r_sym (rel->r_info);
+      r_type = ELF32_R_TYPE (rel->r_info);
+
+      if (r_symndx >= NUM_SHDR_ENTRIES (symtab_hdr))
+	{
+	  /* xgettext:c-format */
+	  _bfd_error_handler (_("%pB: bad symbol index: %d"),
+			      abfd, r_symndx);
+	  goto error_return;
+	}
+
+      h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
+
+      if (X86_NEED_DYNAMIC_RELOC_TYPE_P (is_x86_64, r_type)
+	  && NEED_DYNAMIC_RELOCATION_P (is_x86_64, info, true, h, sec,
+					r_type, htab->pointer_r_type))
+	{
+	  /* We may copy these reloc types into the output file.
+	     Create a reloc section in dynobj and make room for
+	     this reloc.  */
+	  sreloc = _bfd_elf_make_dynamic_reloc_section
+	    (sec, htab->elf.dynobj, ABI_64_P (abfd) ? 3 : 2,
+	     abfd, sec->use_rela_p);
+
+	  if (sreloc != NULL)
+	    return true;
+
+  error_return:
+	  sec->check_relocs_failed = 1;
+	  return false;
+	}
+    }
+
+  return true;
+}
+
+/* Add an entry to the relative reloc record.  */
+
+static bool
+elf_x86_relative_reloc_record_add
+  (struct bfd_link_info *info,
+   struct elf_x86_relative_reloc_data *relative_reloc,
+   Elf_Internal_Rela *rel, asection *sec,
+   asection *sym_sec, struct elf_link_hash_entry *h,
+   Elf_Internal_Sym *sym, bfd_vma offset, bool *keep_symbuf_p)
+{
+  bfd_size_type newidx;
+
+  if (relative_reloc->data == NULL)
+    {
+      relative_reloc->data = bfd_malloc
+	(sizeof (struct elf_x86_relative_reloc_record));
+      relative_reloc->count = 0;
+      relative_reloc->size = 1;
+    }
+
+  newidx = relative_reloc->count++;
+
+  if (relative_reloc->count > relative_reloc->size)
+    {
+      relative_reloc->size <<= 1;
+      relative_reloc->data = bfd_realloc
+	(relative_reloc->data,
+	 (relative_reloc->size
+	  * sizeof (struct elf_x86_relative_reloc_record)));
+    }
+
+  if (relative_reloc->data == NULL)
+    {
+      info->callbacks->fatal
+	/* xgettext:c-format */
+	(_("%P: %pB: failed to allocate relative reloc record\n"),
+	 info->output_bfd);
+      return false;
+    }
+
+  relative_reloc->data[newidx].rel = *rel;
+  relative_reloc->data[newidx].sec = sec;
+  if (h != NULL)
+    {
+      /* Set SYM to NULL to indicate a global symbol.  */
+      relative_reloc->data[newidx].sym = NULL;
+      relative_reloc->data[newidx].u.h = h;
+    }
+  else
+    {
+      relative_reloc->data[newidx].sym = sym;
+      relative_reloc->data[newidx].u.sym_sec = sym_sec;
+      /* We must keep the symbol buffer since SYM will be used later.  */
+      *keep_symbuf_p = true;
+    }
+  relative_reloc->data[newidx].offset = offset;
+  relative_reloc->data[newidx].address = 0;
+  return true;
+}
+
+/* After input sections have been mapped to output sections and
+   addresses of output sections are set initiallly, scan input
+   relocations with the same logic in relocate_section to determine
+   if a relative relocation should be generated.  Save the relative
+   relocation candidate information for sizing the DT_RELR section
+   later after all symbols addresses can be determined.  */
+
+bool
+_bfd_x86_elf_link_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
+				 asection *input_section,
+				 struct bfd_link_info *info,
+				 bool *again)
+{
+  Elf_Internal_Shdr *symtab_hdr;
+  Elf_Internal_Rela *internal_relocs;
+  Elf_Internal_Rela *irel, *irelend;
+  Elf_Internal_Sym *isymbuf = NULL;
+  struct elf_link_hash_entry **sym_hashes;
+  const struct elf_backend_data *bed;
+  struct elf_x86_link_hash_table *htab;
+  bfd_vma *local_got_offsets;
+  bool is_x86_64;
+  bool unaligned_section;
+  bool return_status = false;
+  bool keep_symbuf = false;
+
+  /* Assume we're not going to change any sizes, and we'll only need
+     one pass.  */
+  *again = false;
+
+  if (bfd_link_relocatable (info))
+    return true;
+
+  if (!info->enable_dt_relr)
+    return true;
+
+  bed = get_elf_backend_data (abfd);
+  htab = elf_x86_hash_table (info, bed->target_id);
+  if (htab == NULL)
+    return true;
+
+  /* Nothing to do if there are no relocations or relative relocations
+     have been packed.  */
+  if (input_section == htab->elf.srelrdyn
+      || input_section->relative_reloc_packed
+      || ((input_section->flags & (SEC_RELOC | SEC_ALLOC))
+	  != (SEC_RELOC | SEC_ALLOC))
+      || (input_section->flags & SEC_DEBUGGING) != 0
+      || input_section->reloc_count == 0)
+    return true;
+
+  /* Skip if the section isn't aligned.  */
+  unaligned_section = input_section->alignment_power == 0;
+
+  is_x86_64 = bed->target_id == X86_64_ELF_DATA;
+
+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
+  sym_hashes = elf_sym_hashes (abfd);
+  local_got_offsets = elf_local_got_offsets (abfd);
+
+  /* Load the relocations for this section.  */
+  internal_relocs =
+    _bfd_elf_link_info_read_relocs (abfd, info, input_section, NULL,
+				    (Elf_Internal_Rela *) NULL,
+				    info->keep_memory);
+  if (internal_relocs == NULL)
+    return false;
+
+  irelend = internal_relocs + input_section->reloc_count;
+  for (irel = internal_relocs; irel < irelend; irel++)
+    {
+      unsigned int r_type;
+      unsigned int r_symndx;
+      Elf_Internal_Sym *isym;
+      struct elf_link_hash_entry *h;
+      struct elf_x86_link_hash_entry *eh;
+      bfd_vma offset;
+      bool resolved_to_zero;
+      bool need_copy_reloc_in_pie;
+      bool pc32_reloc;
+      asection *sec;
+      /* Offset must be a multiple of 2.  */
+      bool unaligned_offset = (irel->r_offset & 1) != 0;
+      /* True if there is a relative relocation against a dynamic
+	 symbol.  */
+      bool dynamic_relative_reloc_p;
+
+      /* Get the value of the symbol referred to by the reloc.  */
+      r_symndx = htab->r_sym (irel->r_info);
+
+      r_type = ELF32_R_TYPE (irel->r_info);
+      /* Clear the R_X86_64_converted_reloc_bit bit.  */
+      r_type &= ~R_X86_64_converted_reloc_bit;
+
+      sec = NULL;
+      h = NULL;
+      dynamic_relative_reloc_p = false;
+
+      if (r_symndx < symtab_hdr->sh_info)
+	{
+	  /* Read this BFD's local symbols.  */
+	  if (isymbuf == NULL)
+	    {
+	      isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
+	      if (isymbuf == NULL)
+		{
+		  isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr,
+						  symtab_hdr->sh_info,
+						  0, NULL, NULL, NULL);
+		  if (isymbuf == NULL)
+		    goto error_return;
+		}
+	    }
+
+	  isym = isymbuf + r_symndx;
+	  switch (isym->st_shndx)
+	    {
+	    case SHN_ABS:
+	      sec = bfd_abs_section_ptr;
+	      break;
+	    case SHN_COMMON:
+	      sec = bfd_com_section_ptr;
+	      break;
+	    case SHN_X86_64_LCOMMON:
+	      if (!is_x86_64)
+		abort ();
+	      sec = &_bfd_elf_large_com_section;
+	      break;
+	    default:
+	      sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
+	      break;
+	    }
+
+	  /* Skip relocation against local STT_GNU_IFUNC symbol.  */
+	  if (ELF32_ST_TYPE (isym->st_info) == STT_GNU_IFUNC)
+	    continue;
+
+	  eh = (struct elf_x86_link_hash_entry *) h;
+	  resolved_to_zero = false;
+	}
+      else
+	{
+	  /* Get H and SEC for GENERATE_DYNAMIC_RELOCATION_P below.  */
+	  h = _bfd_elf_get_link_hash_entry (sym_hashes, r_symndx, symtab_hdr);
+	  if (h == NULL)
+	    {
+	      /* FIXMEL: Issue an error message ?  */
+	      continue;
+	    }
+
+	  if (h->root.type == bfd_link_hash_defined
+	      || h->root.type == bfd_link_hash_defweak)
+	    sec = h->root.u.def.section;
+
+	  /* Skip relocation against STT_GNU_IFUNC symbol.  */
+	  if (h->type == STT_GNU_IFUNC)
+	    continue;
+
+	  eh = (struct elf_x86_link_hash_entry *) h;
+	  resolved_to_zero = UNDEFINED_WEAK_RESOLVED_TO_ZERO (info, eh);
+
+	  /* NB: See how elf_backend_finish_dynamic_symbol is called
+	     from elf_link_output_extsym.  */
+	  if ((h->dynindx != -1 || h->forced_local)
+	      && ((ELF_ST_VISIBILITY (h->other) == STV_DEFAULT
+		   || h->root.type != bfd_link_hash_undefweak)
+		  || !h->forced_local)
+	      && h->got.offset != (bfd_vma) -1
+	      && ! GOT_TLS_GD_ANY_P (elf_x86_hash_entry (h)->tls_type)
+	      && elf_x86_hash_entry (h)->tls_type != GOT_TLS_IE
+	      && !resolved_to_zero
+	      && SYMBOL_REFERENCES_LOCAL_P (info, h)
+	      && SYMBOL_DEFINED_NON_SHARED_P (h))
+	    dynamic_relative_reloc_p = true;
+
+	  isym = NULL;
+	}
+
+      if (X86_GOT_TYPE_P (is_x86_64, r_type))
+	{
+	  /* Pack GOT relative relocations.  There should be only a
+	     single R_*_RELATIVE relocation in GOT.  */
+	  if (eh != NULL)
+	    {
+	      if (eh->got_relative_reloc_done)
+		continue;
+
+	      if (!(dynamic_relative_reloc_p
+		    || (RESOLVED_LOCALLY_P (info, h, htab)
+			&& GENERATE_RELATIVE_RELOC_P (info, h))))
+		continue;
+
+	      if (!dynamic_relative_reloc_p)
+		eh->no_finish_dynamic_symbol = 1;
+	      eh->got_relative_reloc_done = 1;
+	      offset = h->got.offset;
+	    }
+	  else
+	    {
+	      if (elf_x86_relative_reloc_done (abfd)[r_symndx])
+		continue;
+
+	      if (!X86_LOCAL_GOT_RELATIVE_RELOC_P (is_x86_64, info,
+						   isym))
+		continue;
+
+	      elf_x86_relative_reloc_done (abfd)[r_symndx] = 1;
+	      offset = local_got_offsets[r_symndx];
+	    }
+
+	  if (!elf_x86_relative_reloc_record_add (info,
+						  &htab->relative_reloc,
+						  irel, htab->elf.sgot,
+						  sec, h, isym, offset,
+						  &keep_symbuf))
+	    goto error_return;
+
+	  continue;
+	}
+
+      if (is_x86_64
+	  && irel->r_addend == 0
+	  && !ABI_64_P (info->output_bfd))
+	{
+	  /* For x32, if addend is zero, treat R_X86_64_64 like
+	     R_X86_64_32 and R_X86_64_SIZE64 like R_X86_64_SIZE32.  */
+	  if (r_type == R_X86_64_64)
+	    r_type = R_X86_64_32;
+	  else if (r_type == R_X86_64_SIZE64)
+	    r_type = R_X86_64_SIZE32;
+	}
+
+      if (!X86_RELATIVE_RELOC_TYPE_P (is_x86_64, r_type))
+	continue;
+
+      /* Pack non-GOT relative relocations.  */
+      if (is_x86_64)
+	{
+	  need_copy_reloc_in_pie =
+	    (bfd_link_pie (info)
+	     && h != NULL
+	     && (h->needs_copy
+		 || eh->needs_copy
+		 || (h->root.type == bfd_link_hash_undefined))
+	     && (X86_PCREL_TYPE_P (true, r_type)
+		 || X86_SIZE_TYPE_P (true, r_type)));
+	  pc32_reloc = false;
+	}
+      else
+	{
+	  need_copy_reloc_in_pie = false;
+	  pc32_reloc = r_type == R_386_PC32;
+	}
+
+      if (GENERATE_DYNAMIC_RELOCATION_P (is_x86_64, info, eh, r_type,
+					 sec, need_copy_reloc_in_pie,
+					 resolved_to_zero, pc32_reloc))
+	{
+	  /* When generating a shared object, these relocations
+	     are copied into the output file to be resolved at run
+	     time.	*/
+	  offset = _bfd_elf_section_offset (info->output_bfd, info,
+					    input_section,
+					    irel->r_offset);
+	  if (offset == (bfd_vma) -1
+	      || offset == (bfd_vma) -2
+	      || COPY_INPUT_RELOC_P (is_x86_64, info, h, r_type))
+	    continue;
+
+	  /* This symbol is local, or marked to become local.  When
+	     relocation overflow check is disabled, we convert
+	     R_X86_64_32 to dynamic R_X86_64_RELATIVE.  */
+	  if (is_x86_64
+	      && !(r_type == htab->pointer_r_type
+		   || (r_type == R_X86_64_32
+		       && htab->params->no_reloc_overflow_check)))
+	    continue;
+
+	  if (!elf_x86_relative_reloc_record_add
+	        (info,
+		 ((unaligned_section || unaligned_offset)
+		  ? &htab->unaligned_relative_reloc
+		  : &htab->relative_reloc),
+		 irel, input_section, sec, h, isym, offset,
+		 &keep_symbuf))
+	    goto error_return;
+	}
+    }
+
+  input_section->relative_reloc_packed = 1;
+
+  return_status = true;
+
+error_return:
+  if ((unsigned char *) isymbuf != symtab_hdr->contents)
+    {
+      /* Cache the symbol buffer if it must be kept.  */
+      if (keep_symbuf)
+	symtab_hdr->contents = (unsigned char *) isymbuf;
+      else
+	free (isymbuf);
+    }
+  if (elf_section_data (input_section)->relocs != internal_relocs)
+    free (internal_relocs);
+  return return_status;
+}
+
+/* Add an entry to the 64-bit DT_RELR bitmap.  */
+
+static void
+elf64_dt_relr_bitmap_add
+  (struct bfd_link_info *info, struct elf_dt_relr_bitmap *bitmap,
+   uint64_t entry)
+{
+  bfd_size_type newidx;
+
+  if (bitmap->u.elf64 == NULL)
+    {
+      bitmap->u.elf64 = bfd_malloc (sizeof (uint64_t));
+      bitmap->count = 0;
+      bitmap->size = 1;
+    }
+
+  newidx = bitmap->count++;
+
+  if (bitmap->count > bitmap->size)
+    {
+      bitmap->size <<= 1;
+      bitmap->u.elf64 = bfd_realloc (bitmap->u.elf64,
+				     (bitmap->size * sizeof (uint64_t)));
+    }
+
+  if (bitmap->u.elf64 == NULL)
+    {
+      info->callbacks->fatal
+	/* xgettext:c-format */
+	(_("%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"),
+	 info->output_bfd);
+    }
+
+  bitmap->u.elf64[newidx] = entry;
+}
+
+/* Add an entry to the 32-bit DT_RELR bitmap.  */
+
+static void
+elf32_dt_relr_bitmap_add
+  (struct bfd_link_info *info, struct elf_dt_relr_bitmap *bitmap,
+   uint32_t entry)
+{
+  bfd_size_type newidx;
+
+  if (bitmap->u.elf32 == NULL)
+    {
+      bitmap->u.elf32 = bfd_malloc (sizeof (uint32_t));
+      bitmap->count = 0;
+      bitmap->size = 1;
+    }
+
+  newidx = bitmap->count++;
+
+  if (bitmap->count > bitmap->size)
+    {
+      bitmap->size <<= 1;
+      bitmap->u.elf32 = bfd_realloc (bitmap->u.elf32,
+				     (bitmap->size * sizeof (uint32_t)));
+    }
+
+  if (bitmap->u.elf32 == NULL)
+    {
+      info->callbacks->fatal
+	/* xgettext:c-format */
+	(_("%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"),
+	 info->output_bfd);
+    }
+
+  bitmap->u.elf32[newidx] = entry;
+}
+
+void
+_bfd_elf32_write_addend (bfd *abfd, uint64_t value, void *addr)
+{
+  bfd_put_32 (abfd, value, addr);
+}
+
+void
+_bfd_elf64_write_addend (bfd *abfd, uint64_t value, void *addr)
+{
+  bfd_put_64 (abfd, value, addr);
+}
+
+/* Size or finish relative relocations to determine the run-time
+   addresses for DT_RELR bitmap computation later.  OUTREL is set
+   to NULL in the sizing phase and non-NULL in the finising phase
+   where the regular relative relocations will be written out.  */
+
+static void
+elf_x86_size_or_finish_relative_reloc
+  (bool is_x86_64, struct bfd_link_info *info,
+   struct elf_x86_link_hash_table *htab, bool unaligned,
+   Elf_Internal_Rela *outrel)
+{
+  unsigned int align_mask;
+  bfd_size_type i, count;
+  asection *sec, *srel;
+  struct elf_link_hash_entry *h;
+  bfd_vma offset;
+  Elf_Internal_Sym *sym;
+  asection *sym_sec;
+  asection *sgot = htab->elf.sgot;
+  asection *srelgot = htab->elf.srelgot;
+  struct elf_x86_relative_reloc_data *relative_reloc;
+
+  if (unaligned)
+    {
+      align_mask = 0;
+      relative_reloc = &htab->unaligned_relative_reloc;
+    }
+  else
+    {
+      align_mask = 1;
+      relative_reloc = &htab->relative_reloc;
+    }
+
+  count = relative_reloc->count;
+  for (i = 0; i < count; i++)
+    {
+      sec = relative_reloc->data[i].sec;
+      sym = relative_reloc->data[i].sym;
+
+      /* If SYM is NULL, it must be a global symbol.  */
+      if (sym == NULL)
+	h = relative_reloc->data[i].u.h;
+      else
+	h = NULL;
+
+      if (is_x86_64)
+	{
+	  bfd_vma relocation;
+	  /* This function may be called more than once and REL may be
+	     updated by _bfd_elf_rela_local_sym below.  */
+	  Elf_Internal_Rela rel = relative_reloc->data[i].rel;
+
+	  if (h != NULL)
+	    {
+	      if (h->root.type == bfd_link_hash_defined
+		  || h->root.type == bfd_link_hash_defweak)
+		{
+		  sym_sec = h->root.u.def.section;
+		  relocation = (h->root.u.def.value
+				+ sym_sec->output_section->vma
+				+ sym_sec->output_offset);
+		}
+	      else
+		{
+		  /* Allow undefined symbol only at the sizing phase.
+		     Otherwise skip undefined symbol here.  Undefined
+		     symbol will be reported by relocate_section.  */
+		  if (outrel == NULL)
+		    relocation = 0;
+		  else
+		    continue;
+		}
+	    }
+	  else
+	    {
+	      sym_sec = relative_reloc->data[i].u.sym_sec;
+	      relocation = _bfd_elf_rela_local_sym
+		(info->output_bfd, sym, &sym_sec, &rel);
+	    }
+
+	  if (outrel != NULL)
+	    {
+	      outrel->r_addend = relocation;
+	      if (sec == sgot)
+		{
+		  if (h != NULL && h->needs_plt)
+		    abort ();
+		}
+	      else
+		outrel->r_addend += rel.r_addend;
+
+	      /* Write the implicit addend if ALIGN_MASK isn't 0.  */
+	      if (align_mask)
+		{
+		  if (sec == sgot)
+		    {
+		      if (relative_reloc->data[i].offset >= sec->size)
+			abort ();
+		      htab->elf_write_addend_in_got
+			(info->output_bfd, outrel->r_addend,
+			 sec->contents + relative_reloc->data[i].offset);
+		    }
+		  else
+		    {
+		      bfd_byte *contents;
+
+		      if (rel.r_offset >= sec->size)
+			abort ();
+
+		      if (elf_section_data (sec)->this_hdr.contents
+			  != NULL)
+			contents
+			  = elf_section_data (sec)->this_hdr.contents;
+		      else
+			{
+			  if (!_bfd_elf_mmap_section_contents (sec->owner,
+							       sec,
+							       &contents))
+			    info->callbacks->fatal
+			      /* xgettext:c-format */
+			      (_("%P: %pB: failed to allocate memory for section `%pA'\n"),
+			       info->output_bfd, sec);
+
+			  /* Cache the section contents for
+			     elf_link_input_bfd.  */
+			  elf_section_data (sec)->this_hdr.contents
+			    = contents;
+			}
+		      htab->elf_write_addend
+			(info->output_bfd, outrel->r_addend,
+			 contents + rel.r_offset);
+		    }
+		}
+	    }
+	}
+
+      if (sec == sgot)
+	srel = srelgot;
+      else
+	srel = elf_section_data (sec)->sreloc;
+      offset = (sec->output_section->vma + sec->output_offset
+		+ relative_reloc->data[i].offset);
+      relative_reloc->data[i].address = offset;
+      if (outrel != NULL)
+	{
+	  outrel->r_offset = offset;
+
+	  if ((outrel->r_offset & align_mask) != 0)
+	    abort ();
+
+	  if (htab->params->report_relative_reloc)
+	    _bfd_x86_elf_link_report_relative_reloc
+	      (info, sec, h, sym, htab->relative_r_name, outrel);
+
+	  /* Generate regular relative relocation if ALIGN_MASK is 0.  */
+	  if (align_mask == 0)
+	    htab->elf_append_reloc (info->output_bfd, srel, outrel);
+	}
+    }
+}
+
+/* Compute the DT_RELR section size.  Set NEED_PLAYOUT to true if
+   the DT_RELR section size has been increased.  */
+
+static void
+elf_x86_compute_dl_relr_bitmap
+  (struct bfd_link_info *info, struct elf_x86_link_hash_table *htab,
+   bool *need_layout)
+{
+  bfd_vma base;
+  bfd_size_type i, count, new_count;
+  struct elf_x86_relative_reloc_data *relative_reloc =
+    &htab->relative_reloc;
+  /* Save the old DT_RELR bitmap count.  Don't shrink the DT_RELR bitmap
+     if the new DT_RELR bitmap count is smaller than the old one.  Pad
+     with trailing 1s which won't be decoded to more relocations.  */
+  bfd_size_type dt_relr_bitmap_count = htab->dt_relr_bitmap.count;
+
+  /* Clear the DT_RELR bitmap count.  */
+  htab->dt_relr_bitmap.count = 0;
+
+  count = relative_reloc->count;
+
+  if (ABI_64_P (info->output_bfd))
+    {
+      /* Compute the 64-bit DT_RELR bitmap.  */
+      i = 0;
+      while (i < count)
+	{
+	  if ((relative_reloc->data[i].address % 1) != 0)
+	    abort ();
+
+	  elf64_dt_relr_bitmap_add (info, &htab->dt_relr_bitmap,
+				    relative_reloc->data[i].address);
+
+	  base = relative_reloc->data[i].address + 8;
+	  i++;
+
+	  while (i < count)
+	    {
+	      uint64_t bitmap = 0;
+	      for (; i < count; i++)
+		{
+		  bfd_vma delta = (relative_reloc->data[i].address
+				   - base);
+		  /* Stop if it is too far from base.  */
+		  if (delta >= 63 * 8)
+		    break;
+		  /* Stop if it isn't a multiple of 8.  */
+		  if ((delta % 8) != 0)
+		    break;
+		  bitmap |= 1ULL << (delta / 8);
+		}
+
+	      if (bitmap == 0)
+		break;
+
+	      elf64_dt_relr_bitmap_add (info, &htab->dt_relr_bitmap,
+					(bitmap << 1) | 1);
+
+	      base += 63 * 8;
+	    }
+	}
+
+      new_count = htab->dt_relr_bitmap.count;
+      if (dt_relr_bitmap_count > new_count)
+	{
+	  /* Don't shrink the DT_RELR section size to avoid section
+	     layout oscillation.  Instead, pad the DT_RELR bitmap with
+	     1s which do not decode to more relocations.  */
+
+	  htab->dt_relr_bitmap.count = dt_relr_bitmap_count;
+	  count = dt_relr_bitmap_count - new_count;
+	  for (i = 0; i < count; i++)
+	    htab->dt_relr_bitmap.u.elf64[new_count + i] = 1;
+	}
+    }
+  else
+    {
+      /* Compute the 32-bit DT_RELR bitmap.  */
+      i = 0;
+      while (i < count)
+	{
+	  if ((relative_reloc->data[i].address % 1) != 0)
+	    abort ();
+
+	  elf32_dt_relr_bitmap_add (info, &htab->dt_relr_bitmap,
+				    relative_reloc->data[i].address);
+
+	  base = relative_reloc->data[i].address + 4;
+	  i++;
+
+	  while (i < count)
+	    {
+	      uint32_t bitmap = 0;
+	      for (; i < count; i++)
+		{
+		  bfd_vma delta = (relative_reloc->data[i].address
+				   - base);
+		  /* Stop if it is too far from base.  */
+		  if (delta >= 31 * 4)
+		    break;
+		  /* Stop if it isn't a multiple of 4.  */
+		  if ((delta % 4) != 0)
+		    break;
+		  bitmap |= 1ULL << (delta / 4);
+		}
+
+	      if (bitmap == 0)
+		break;
+
+	      elf32_dt_relr_bitmap_add (info, &htab->dt_relr_bitmap,
+					(bitmap << 1) | 1);
+
+	      base += 31 * 4;
+	    }
+	}
+
+      new_count = htab->dt_relr_bitmap.count;
+      if (dt_relr_bitmap_count > new_count)
+	{
+	  /* Don't shrink the DT_RELR section size to avoid section
+	     layout oscillation.  Instead, pad the DT_RELR bitmap with
+	     1s which do not decode to more relocations.  */
+
+	  htab->dt_relr_bitmap.count = dt_relr_bitmap_count;
+	  count = dt_relr_bitmap_count - new_count;
+	  for (i = 0; i < count; i++)
+	    htab->dt_relr_bitmap.u.elf32[new_count + i] = 1;
+	}
+    }
+
+  if (htab->dt_relr_bitmap.count != dt_relr_bitmap_count)
+    {
+      if (need_layout)
+	{
+	  /* The .relr.dyn section size is changed.  Update the section
+	     size and tell linker to layout sections again.  */
+	  htab->elf.srelrdyn->size =
+	    (htab->dt_relr_bitmap.count
+	     * (ABI_64_P (info->output_bfd) ? 8 : 4));
+
+	  *need_layout = true;
+	}
+      else
+	info->callbacks->fatal
+	  /* xgettext:c-format */
+	  (_("%P: %pB: size of compact relative reloc section is "
+	     "changed: new (%lu) != old (%lu)\n"),
+	   info->output_bfd, htab->dt_relr_bitmap.count,
+	   dt_relr_bitmap_count);
+    }
+}
+
+/* Write out the DT_RELR section.  */
+
+static void
+elf_x86_write_dl_relr_bitmap (struct bfd_link_info *info,
+			      struct elf_x86_link_hash_table *htab)
+{
+  asection *sec = htab->elf.srelrdyn;
+  bfd_size_type size = sec->size;
+  bfd_size_type i;
+  unsigned char *contents;
+
+  contents = (unsigned char *) bfd_alloc (sec->owner, size);
+  if (contents == NULL)
+    info->callbacks->fatal
+      /* xgettext:c-format */
+      (_("%P: %pB: failed to allocate compact relative reloc section\n"),
+       info->output_bfd);
+
+  /* Cache the section contents for elf_link_input_bfd.  */
+  sec->contents = contents;
+  sec->alloced = 1;
+
+  if (ABI_64_P (info->output_bfd))
+    for (i = 0; i < htab->dt_relr_bitmap.count; i++, contents += 8)
+      bfd_put_64 (info->output_bfd, htab->dt_relr_bitmap.u.elf64[i],
+		  contents);
+  else
+    for (i = 0; i < htab->dt_relr_bitmap.count; i++, contents += 4)
+      bfd_put_32 (info->output_bfd, htab->dt_relr_bitmap.u.elf32[i],
+		  contents);
+}
+
+/* Sort relative relocations by address.  */
+
+static int
+elf_x86_relative_reloc_compare (const void *pa, const void *pb)
+{
+  struct elf_x86_relative_reloc_record *a =
+    (struct elf_x86_relative_reloc_record *) pa;
+  struct elf_x86_relative_reloc_record *b =
+    (struct elf_x86_relative_reloc_record *) pb;
+  if (a->address < b->address)
+    return -1;
+  if (a->address > b->address)
+    return 1;
+  return 0;
+}
+
+enum dynobj_sframe_plt_type
+{
+  SFRAME_PLT = 1,
+  SFRAME_PLT_SEC = 2,
+  SFRAME_PLT_GOT = 3,
+};
+
+/* Create SFrame stack trace info for the plt entries in the .plt section
+   of type PLT_SEC_TYPE.  */
+
+static bool
+_bfd_x86_elf_create_sframe_plt (bfd *output_bfd,
+				struct bfd_link_info *info,
+				unsigned int plt_sec_type)
+{
+  struct elf_x86_link_hash_table *htab;
+  const struct elf_backend_data *bed;
+
+  unsigned int plt0_entry_size;
+  unsigned char func_info;
+  uint32_t fre_type;
+  /* The dynamic plt section for which .sframe stack trace information is being
+     created.  */
+  asection *dpltsec;
+
+  int err = 0;
+
+  sframe_encoder_ctx **ectx = NULL;
+  unsigned plt_entry_size = 0;
+  unsigned int num_pltn_fres = 0;
+  unsigned int num_pltn_entries = 0;
+  const sframe_frame_row_entry * const *pltn_fres;
+
+  bed = get_elf_backend_data (output_bfd);
+  htab = elf_x86_hash_table (info, bed->target_id);
+  /* Whether SFrame stack trace info for plt0 is to be generated.  */
+  switch (plt_sec_type)
+    {
+    case SFRAME_PLT:
+	{
+	  ectx = &htab->plt_cfe_ctx;
+	  dpltsec = htab->elf.splt;
+
+	  plt0_entry_size
+	    = htab->plt.has_plt0 ? htab->sframe_plt->plt0_entry_size : 0;
+	  plt_entry_size = htab->sframe_plt->pltn_entry_size;
+	  pltn_fres = htab->sframe_plt->pltn_fres;
+	  num_pltn_fres = htab->sframe_plt->pltn_num_fres;
+	  num_pltn_entries
+	    = (dpltsec->size - plt0_entry_size) / plt_entry_size;
+
+	  break;
+	}
+    case SFRAME_PLT_SEC:
+	{
+	  ectx = &htab->plt_second_cfe_ctx;
+	  dpltsec = htab->plt_second;
+
+	  plt0_entry_size = 0;
+
+	  plt_entry_size = htab->sframe_plt->sec_pltn_entry_size;
+	  pltn_fres = htab->sframe_plt->sec_pltn_fres;
+	  num_pltn_fres = htab->sframe_plt->sec_pltn_num_fres;
+	  num_pltn_entries = dpltsec->size / plt_entry_size;
+
+	  break;
+	}
+      case SFRAME_PLT_GOT:
+	{
+	  ectx = &htab->plt_got_cfe_ctx;
+	  dpltsec = htab->plt_got;
+
+	  plt0_entry_size = 0;
+
+	  plt_entry_size = htab->sframe_plt->plt_got_entry_size;
+	  pltn_fres = htab->sframe_plt->plt_got_fres;
+	  num_pltn_fres = htab->sframe_plt->plt_got_num_fres;
+	  num_pltn_entries = dpltsec->size / plt_entry_size;
+
+	  break;
+	}
+
+    default:
+      /* No other value is possible.  */
+      return false;
+      break;
+    }
+
+  *ectx = sframe_encode (SFRAME_VERSION_2,
+			 SFRAME_F_FDE_FUNC_START_PCREL,
+			 SFRAME_ABI_AMD64_ENDIAN_LITTLE,
+			 SFRAME_CFA_FIXED_FP_INVALID,
+			 -8, /*  Fixed RA offset.  */
+			 &err);
+
+  /* FRE type is dependent on the size of the function.  */
+  fre_type = sframe_calc_fre_type (dpltsec->size);
+  func_info = sframe_fde_create_func_info (fre_type, SFRAME_FDE_TYPE_PCINC);
+
+  /* Add SFrame FDE and the associated FREs for plt0 if plt0 has been
+     generated.  */
+  if (plt0_entry_size)
+    {
+      /* Add SFrame FDE for plt0, the function start address is updated later
+	 at _bfd_elf_merge_section_sframe time.  */
+      sframe_encoder_add_funcdesc_v2 (*ectx,
+				      0, /* func start addr.  */
+				      plt0_entry_size,
+				      func_info,
+				      0,
+				      0 /* Num FREs.  */);
+      sframe_frame_row_entry plt0_fre;
+      unsigned int num_plt0_fres = htab->sframe_plt->plt0_num_fres;
+      for (unsigned int j = 0; j < num_plt0_fres; j++)
+	{
+	  plt0_fre = *(htab->sframe_plt->plt0_fres[j]);
+	  sframe_encoder_add_fre (*ectx, 0, &plt0_fre);
+	}
+    }
+
+
+  if (num_pltn_entries)
+    {
+      /* pltn entries use an SFrame FDE of type
+	 SFRAME_FDE_TYPE_PCMASK to exploit the repetitive
+	 pattern of the instructions in these entries.  Using this SFrame FDE
+	 type helps in keeping the SFrame stack trace info for pltn entries
+	 compact.  */
+      func_info	= sframe_fde_create_func_info (fre_type,
+					       SFRAME_FDE_TYPE_PCMASK);
+      /* Add the SFrame FDE for all PCs starting at the first pltn entry (hence,
+	 function start address = plt0_entry_size.  As usual, this will be
+	 updated later at _bfd_elf_merge_section_sframe, by when the
+	 sections are relocated.  */
+      sframe_encoder_add_funcdesc_v2 (*ectx,
+				      plt0_entry_size, /* func start addr.  */
+				      dpltsec->size - plt0_entry_size,
+				      func_info,
+				      plt_entry_size,
+				      0 /* Num FREs.  */);
+
+      sframe_frame_row_entry pltn_fre;
+      /* Now add the FREs for pltn.  Simply adding the FREs suffices due
+	 to the usage of SFRAME_FDE_TYPE_PCMASK above.  */
+      for (unsigned int j = 0; j < num_pltn_fres; j++)
+	{
+	  unsigned int func_idx = plt0_entry_size ? 1 : 0;
+	  pltn_fre = *(pltn_fres[j]);
+	  sframe_encoder_add_fre (*ectx, func_idx, &pltn_fre);
+	}
+    }
+
+  return true;
+}
+
+/* Put contents of the .sframe section corresponding to the specified
+   PLT_SEC_TYPE.  */
+
+static bool
+_bfd_x86_elf_write_sframe_plt (bfd *output_bfd,
+			       struct bfd_link_info *info,
+			       unsigned int plt_sec_type)
+{
+  struct elf_x86_link_hash_table *htab;
+  const struct elf_backend_data *bed;
+  sframe_encoder_ctx *ectx;
+  size_t sec_size;
+  asection *sec;
+  bfd *dynobj;
+
+  int err = 0;
+
+  bed = get_elf_backend_data (output_bfd);
+  htab = elf_x86_hash_table (info, bed->target_id);
+  dynobj = htab->elf.dynobj;
+
+  switch (plt_sec_type)
+    {
+    case SFRAME_PLT:
+      ectx = htab->plt_cfe_ctx;
+      sec = htab->plt_sframe;
+      break;
+    case SFRAME_PLT_SEC:
+      ectx = htab->plt_second_cfe_ctx;
+      sec = htab->plt_second_sframe;
+      break;
+    case SFRAME_PLT_GOT:
+      ectx = htab->plt_got_cfe_ctx;
+      sec = htab->plt_got_sframe;
+      break;
+    default:
+      /* No other value is possible.  */
+      return false;
+      break;
+    }
+
+  BFD_ASSERT (ectx);
+
+  void *contents = sframe_encoder_write (ectx, &sec_size, &err);
+
+  sec->size = (bfd_size_type) sec_size;
+  sec->contents = (unsigned char *) bfd_zalloc (dynobj, sec->size);
+  sec->alloced = 1;
+  memcpy (sec->contents, contents, sec_size);
+
+  sframe_encoder_free (&ectx);
+
+  return true;
+}
+
+bool
+_bfd_elf_x86_size_relative_relocs (struct bfd_link_info *info,
+				   bool *need_layout)
+{
+  struct elf_x86_link_hash_table *htab;
+  const struct elf_backend_data *bed;
+  bool is_x86_64;
+  bfd_size_type i, count, unaligned_count;
+  asection *sec, *srel;
+
+  /* Do nothing for ld -r.  */
+  if (bfd_link_relocatable (info))
+    return true;
+
+  bed = get_elf_backend_data (info->output_bfd);
+  htab = elf_x86_hash_table (info, bed->target_id);
+  if (htab == NULL)
+    return false;
+
+  count = htab->relative_reloc.count;
+  unaligned_count = htab->unaligned_relative_reloc.count;
+  if (count == 0)
+    {
+      if (htab->generate_relative_reloc_pass == 0
+	  && htab->elf.srelrdyn != NULL)
+	{
+	  /* Remove the empty .relr.dyn sections now.  */
+	  if (!bfd_is_abs_section (htab->elf.srelrdyn->output_section))
+	    {
+	      bfd_section_list_remove
+		(info->output_bfd, htab->elf.srelrdyn->output_section);
+	      info->output_bfd->section_count--;
+	    }
+	  bfd_section_list_remove (htab->elf.srelrdyn->owner,
+				   htab->elf.srelrdyn);
+	  htab->elf.srelrdyn->owner->section_count--;
+	}
+      if (unaligned_count == 0)
+	{
+	  htab->generate_relative_reloc_pass++;
+	  return true;
+	}
+    }
+
+  is_x86_64 = bed->target_id == X86_64_ELF_DATA;
+
+  /* Size relative relocations.  */
+  if (htab->generate_relative_reloc_pass)
+    {
+      /* Reset the regular relative relocation count.  */
+      for (i = 0; i < unaligned_count; i++)
+	{
+	  sec = htab->unaligned_relative_reloc.data[i].sec;
+	  srel = elf_section_data (sec)->sreloc;
+	  srel->reloc_count = 0;
+	}
+    }
+  else
+    {
+      /* Remove the reserved space for compact relative relocations.  */
+      if (count)
+	{
+	  asection *sgot = htab->elf.sgot;
+	  asection *srelgot = htab->elf.srelgot;
+
+	  for (i = 0; i < count; i++)
+	    {
+	      sec = htab->relative_reloc.data[i].sec;
+	      if (sec == sgot)
+		srel = srelgot;
+	      else
+		srel = elf_section_data (sec)->sreloc;
+	      srel->size -= htab->sizeof_reloc;
+	    }
+	}
+    }
+
+  /* Size unaligned relative relocations.  */
+  if (unaligned_count)
+    elf_x86_size_or_finish_relative_reloc (is_x86_64, info, htab,
+					   true, NULL);
+
+  if (count)
+    {
+      elf_x86_size_or_finish_relative_reloc (is_x86_64, info, htab,
+					     false, NULL);
+
+      /* Sort relative relocations by addresses.  We only need to
+	 sort them in the first pass since the relative positions
+	 won't change.  */
+      if (htab->generate_relative_reloc_pass == 0)
+	qsort (htab->relative_reloc.data, count,
+	       sizeof (struct elf_x86_relative_reloc_record),
+	       elf_x86_relative_reloc_compare);
+
+      elf_x86_compute_dl_relr_bitmap (info, htab, need_layout);
+    }
+
+  htab->generate_relative_reloc_pass++;
+
+  return true;
+}
+
+bool
+_bfd_elf_x86_finish_relative_relocs (struct bfd_link_info *info)
+{
+  struct elf_x86_link_hash_table *htab;
+  const struct elf_backend_data *bed;
+  Elf_Internal_Rela outrel;
+  bool is_x86_64;
+  bfd_size_type count;
+
+  /* Do nothing for ld -r.  */
+  if (bfd_link_relocatable (info))
+    return true;
+
+  bed = get_elf_backend_data (info->output_bfd);
+  htab = elf_x86_hash_table (info, bed->target_id);
+  if (htab == NULL)
+    return false;
+
+  is_x86_64 = bed->target_id == X86_64_ELF_DATA;
+
+  outrel.r_info = htab->r_info (0, htab->relative_r_type);
+
+  if (htab->unaligned_relative_reloc.count)
+    elf_x86_size_or_finish_relative_reloc (is_x86_64, info, htab,
+					   true, &outrel);
+
+  count = htab->relative_reloc.count;
+  if (count)
+    {
+      elf_x86_size_or_finish_relative_reloc (is_x86_64, info, htab,
+					     false, &outrel);
+
+      elf_x86_compute_dl_relr_bitmap (info, htab, NULL);
+
+      elf_x86_write_dl_relr_bitmap (info, htab);
+    }
+
+  return true;
+}
+
+asection *
+_bfd_elf_x86_get_reloc_section (bfd *abfd, const char *name)
+{
+  /* Treat .rel.tls/.rela.tls section the same as .rel.plt/.rela.plt
+     section.  */
+  if (strcmp (name, ".tls") == 0)
+    name = ".plt";
+  return _bfd_elf_plt_get_reloc_section (abfd, name);
+}
+
+bool
+_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,
+			    bool *no_dynreloc_p)
+{
+  bool 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 and GOT32
+	 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
+		   || r_type == R_386_GOT32
+		   || r_type == R_386_GOT32X);
+
+      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->fatal
+	    /* xgettext:c-format */
+	    (_("%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
-_bfd_x86_elf_size_dynamic_sections (bfd *output_bfd,
+bool
+_bfd_x86_elf_late_size_sections (bfd *output_bfd,
 				    struct bfd_link_info *info)
 {
   struct elf_x86_link_hash_table *htab;
   bfd *dynobj;
   asection *s;
-  bfd_boolean relocs;
+  bool relocs;
   bfd *ibfd;
   const struct elf_backend_data *bed
     = get_elf_backend_data (output_bfd);
 
   htab = elf_x86_hash_table (info, bed->target_id);
   if (htab == NULL)
-    return FALSE;
+    return false;
   dynobj = htab->elf.dynobj;
   if (dynobj == NULL)
-    abort ();
+    return true;
 
   /* Set up .got offsets for local syms, and space for local dynamic
      relocs.  */
@@ -1005,7 +2316,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 +2331,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 +2375,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))
 		{
@@ -1076,9 +2386,9 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 		    srel->size += htab->sizeof_reloc;
 		  if (GOT_TLS_GDESC_P (*local_tls_type))
 		    {
-		      htab->elf.srelplt->size += htab->sizeof_reloc;
+		      htab->rel_tls_desc->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;
 		    }
 		}
 	    }
@@ -1117,7 +2427,6 @@ _bfd_x86_elf_size_dynamic_sections (bfd
      so that R_{386,X86_64}_IRELATIVE entries come last.  */
   if (htab->elf.srelplt)
     {
-      htab->next_tls_desc_index = htab->elf.srelplt->reloc_count;
       htab->sgotplt_jump_table_size
 	= elf_x86_compute_jump_table_size (htab);
       htab->next_irelative_index = htab->elf.srelplt->reloc_count - 1;
@@ -1125,22 +2434,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 +2473,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. */
@@ -1203,16 +2513,80 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 	  = htab->non_lazy_plt->eh_frame_plt_size;
     }
 
+  /* No need to size the .sframe section explicitly because the write-out
+     mechanism is different.  Simply prep up the FDE/FRE for the
+     .plt section.  */
+  if (_bfd_elf_sframe_present (info))
+    {
+      if (htab->plt_sframe != NULL
+	  && htab->elf.splt != NULL
+	  && htab->elf.splt->size != 0
+	  && !bfd_is_abs_section (htab->elf.splt->output_section))
+	{
+	  _bfd_x86_elf_create_sframe_plt (output_bfd, info, SFRAME_PLT);
+	  /* FIXME - Dirty Hack.  Set the size to something non-zero for now,
+	     so that the section does not get stripped out below.  The precise
+	     size of this section is known only when the contents are
+	     serialized in _bfd_x86_elf_write_sframe_plt.  */
+	  htab->plt_sframe->size = sizeof (sframe_header) + 1;
+	}
+
+      if (htab->plt_got_sframe != NULL
+	  && htab->plt_got != NULL
+	  && htab->plt_got->size != 0
+	  && !bfd_is_abs_section (htab->plt_got->output_section))
+	{
+	  _bfd_x86_elf_create_sframe_plt (output_bfd, info, SFRAME_PLT_GOT);
+	  /* FIXME - Dirty Hack.  Set the size to something non-zero for now,
+	     so that the section does not get stripped out below.  The precise
+	     size of this section is known only when the contents are
+	     serialized in _bfd_x86_elf_write_sframe_plt.  */
+	  htab->plt_got_sframe->size = sizeof (sframe_header) + 1;
+	}
+
+      if (htab->plt_second_sframe != NULL
+	  && htab->plt_second != NULL
+	  && htab->plt_second->size != 0
+	  && !bfd_is_abs_section (htab->plt_second->output_section))
+	{
+	  /* SFrame stack trace info for the second PLT.  */
+	  _bfd_x86_elf_create_sframe_plt (output_bfd, info, SFRAME_PLT_SEC);
+	  /* FIXME - Dirty Hack.  Set the size to something non-zero for now,
+	     so that the section does not get stripped out below.  The precise
+	     size of this section is known only when the contents are
+	     serialized in _bfd_x86_elf_write_sframe_plt.  */
+	  htab->plt_second_sframe->size = sizeof (sframe_header) + 1;
+	}
+    }
+
+  asection *resolved_plt = NULL;
+
+  if (htab->params->mark_plt && htab->elf.dynamic_sections_created)
+    {
+      if (htab->plt_second != NULL)
+	resolved_plt = htab->plt_second;
+      else
+	resolved_plt = htab->elf.splt;
+
+      if (resolved_plt != NULL && resolved_plt->size == 0)
+	resolved_plt = NULL;
+    }
+
   /* We now have determined the sizes of the various dynamic sections.
      Allocate memory for them.  */
-  relocs = FALSE;
+  relocs = false;
   for (s = dynobj->sections; s != NULL; s = s->next)
     {
-      bfd_boolean strip_section = TRUE;
+      bool strip_section = true;
 
       if ((s->flags & SEC_LINKER_CREATED) == 0)
 	continue;
 
+      /* The .relr.dyn section for compact relative relocation will
+	 be filled later.  */
+      if (s == htab->elf.srelrdyn)
+	continue;
+
       if (s == htab->elf.splt
 	  || s == htab->elf.sgot)
 	{
@@ -1223,7 +2597,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 	     It's too late to tell BFD to get rid of the symbols.  */
 
 	  if (htab->elf.hplt != NULL)
-	    strip_section = FALSE;
+	    strip_section = false;
 	}
       else if (s == htab->elf.sgotplt
 	       || s == htab->elf.iplt
@@ -1233,6 +2607,9 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 	       || s == htab->plt_eh_frame
 	       || s == htab->plt_got_eh_frame
 	       || s == htab->plt_second_eh_frame
+	       || s == htab->plt_sframe
+	       || s == htab->plt_second_sframe
+	       || s == htab->plt_got_sframe
 	       || s == htab->elf.sdynbss
 	       || s == htab->elf.sdynrelro)
 	{
@@ -1243,7 +2620,7 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 	  if (s->size != 0
 	      && s != htab->elf.srelplt
 	      && s != htab->srelplt2)
-	    relocs = TRUE;
+	    relocs = true;
 
 	  /* We use the reloc_count field as a counter if we need
 	     to copy relocs into the output file.  */
@@ -1275,12 +2652,19 @@ _bfd_x86_elf_size_dynamic_sections (bfd
       if ((s->flags & SEC_HAS_CONTENTS) == 0)
 	continue;
 
+      /* Skip allocating contents for .sframe section as it is written
+	 out differently.  See below.  */
+      if ((s == htab->plt_sframe) || (s == htab->plt_second_sframe)
+	  || (s == htab->plt_got_sframe))
+	continue;
+
       /* NB: Initially, the iplt section has minimal alignment to
 	 avoid moving dot of the following section backwards when
 	 it is empty.  Update its section alignment now since it
 	 is non-empty.  */
-      if (s == htab->elf.iplt)
-	bfd_set_section_alignment (s, htab->plt.iplt_alignment);
+      if (s == htab->elf.iplt
+	  && !bfd_link_align_section (s, htab->plt.iplt_alignment))
+	abort ();
 
       /* Allocate memory for the section contents.  We use bfd_zalloc
 	 here in case unused entries are not reclaimed before the
@@ -1289,7 +2673,8 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 	 reloc instead of garbage.  */
       s->contents = (unsigned char *) bfd_zalloc (dynobj, s->size);
       if (s->contents == NULL)
-	return FALSE;
+	return false;
+      s->alloced = 1;
     }
 
   if (htab->plt_eh_frame != NULL
@@ -1324,79 +2709,35 @@ _bfd_x86_elf_size_dynamic_sections (bfd
 		   + PLT_FDE_LEN_OFFSET));
     }
 
-  if (htab->elf.dynamic_sections_created)
+  if (_bfd_elf_sframe_present (info))
     {
-      /* 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 (htab->plt_sframe != NULL
+	  && htab->elf.splt != NULL
+	  && htab->elf.splt->size != 0
+	  && htab->plt_sframe->contents == NULL)
+	_bfd_x86_elf_write_sframe_plt (output_bfd, info, SFRAME_PLT);
 
-	  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 (htab->plt_second_sframe != NULL
+	  && htab->plt_second != NULL
+	  && htab->plt_second->size != 0
+	  && htab->plt_second_sframe->contents == NULL)
+	_bfd_x86_elf_write_sframe_plt (output_bfd, info, SFRAME_PLT_SEC);
 
-	      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;
+      if (htab->plt_got_sframe != NULL
+	  && htab->plt_got != NULL
+	  && htab->plt_got->size != 0
+	  && htab->plt_got_sframe->contents == NULL)
+	_bfd_x86_elf_write_sframe_plt (output_bfd, info, SFRAME_PLT_GOT);
     }
-#undef add_dynamic_entry
 
-  return TRUE;
+  if (resolved_plt != NULL
+      && (!_bfd_elf_add_dynamic_entry (info, DT_X86_64_PLT, 0)
+	  || !_bfd_elf_add_dynamic_entry (info, DT_X86_64_PLTSZ, 0)
+	  || !_bfd_elf_add_dynamic_entry (info, DT_X86_64_PLTENT, 0)))
+    return false;
+
+  return _bfd_elf_maybe_vxworks_add_dynamic_tags (output_bfd, info,
+						  relocs);
 }
 
 /* Finish up the x86 dynamic sections.  */
@@ -1418,7 +2759,7 @@ _bfd_x86_elf_finish_dynamic_sections (bf
     return htab;
 
   dynobj = htab->elf.dynobj;
-  sdyn = bfd_get_linker_section (dynobj, ".dynamic");
+  sdyn = htab->elf.dynamic;
 
   /* GOT is always created in setup_gnu_properties.  But it may not be
      needed.  .got.plt section may be needed for static IFUNC.  */
@@ -1469,6 +2810,12 @@ _bfd_x86_elf_finish_dynamic_sections (bf
   if (sdyn == NULL || htab->elf.sgot == NULL)
     abort ();
 
+  asection *resolved_plt;
+  if (htab->plt_second != NULL)
+    resolved_plt = htab->plt_second;
+  else
+    resolved_plt = htab->elf.splt;
+
   sizeof_dyn = bed->s->sizeof_dyn;
   dyncon = sdyn->contents;
   dynconend = sdyn->contents + sdyn->size;
@@ -1482,7 +2829,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;
@@ -1493,24 +2840,38 @@ _bfd_x86_elf_finish_dynamic_sections (bf
 	  break;
 
 	case DT_JMPREL:
-	  dyn.d_un.d_ptr = htab->elf.srelplt->output_section->vma;
+	  s = htab->elf.srelplt;
+	  dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
 	  break;
 
 	case DT_PLTRELSZ:
-	  s = htab->elf.srelplt->output_section;
+	  s = htab->elf.srelplt;
 	  dyn.d_un.d_val = s->size;
 	  break;
 
 	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;
+
+	case DT_X86_64_PLT:
+	  s = resolved_plt->output_section;
+	  dyn.d_un.d_ptr = s->output_section->vma + s->output_offset;
+	  break;
+
+	case DT_X86_64_PLTSZ:
+	  dyn.d_un.d_val = resolved_plt->size;
+	  break;
+
+	case DT_X86_64_PLTENT:
+	  dyn.d_un.d_ptr = htab->plt.plt_entry_size;
 	  break;
 	}
 
@@ -1609,6 +2970,102 @@ _bfd_x86_elf_finish_dynamic_sections (bf
 	}
     }
 
+  /* Make any adjustment if necessary and merge .sframe section to
+     create the final .sframe section for output_bfd.  */
+  if (htab->plt_sframe != NULL
+      && htab->plt_sframe->contents != NULL)
+    {
+      if (htab->elf.splt != NULL
+	  && htab->elf.splt->size != 0
+	  && (htab->elf.splt->flags & SEC_EXCLUDE) == 0
+	  && htab->elf.splt->output_section != NULL
+	  && htab->plt_sframe->output_section != NULL)
+	{
+	  bfd_vma plt_start = htab->elf.splt->output_section->vma;
+	  bfd_vma sframe_start = htab->plt_sframe->output_section->vma
+				   + htab->plt_sframe->output_offset
+				   + PLT_SFRAME_FDE_START_OFFSET;
+#if 0 /* FIXME Testing only. Remove before review.  */
+	  bfd_vma test_value = (plt_start - sframe_start)
+	    + htab->plt_sframe->output_section->vma
+	    + htab->plt_sframe->output_offset
+	    + PLT_SFRAME_FDE_START_OFFSET;
+	  bfd_put_signed_32 (dynobj, test_value,
+#endif
+	  bfd_put_signed_32 (dynobj, plt_start - sframe_start,
+			     htab->plt_sframe->contents
+			     + PLT_SFRAME_FDE_START_OFFSET);
+	}
+      if (htab->plt_sframe->sec_info_type == SEC_INFO_TYPE_SFRAME)
+	{
+	  if (! _bfd_elf_merge_section_sframe (output_bfd, info,
+					       htab->plt_sframe,
+					       htab->plt_sframe->contents))
+	    return NULL;
+	}
+    }
+
+  if (htab->plt_second_sframe != NULL
+      && htab->plt_second_sframe->contents != NULL)
+    {
+      if (htab->plt_second != NULL
+	  && htab->plt_second->size != 0
+	  && (htab->plt_second->flags & SEC_EXCLUDE) == 0
+	  && htab->plt_second->output_section != NULL
+	  && htab->plt_second_sframe->output_section != NULL)
+	{
+	  bfd_vma plt_start = htab->plt_second->output_section->vma;
+	  bfd_vma sframe_start
+	    = (htab->plt_second_sframe->output_section->vma
+	       + htab->plt_second_sframe->output_offset
+	       + PLT_SFRAME_FDE_START_OFFSET);
+#if 0 /* FIXME Testing only. Remove before review.  */
+	  bfd_vma test_value = (plt_start - sframe_start)
+	    + htab->plt_second_sframe->output_section->vma
+	    + htab->plt_second_sframe->output_offset
+	    + PLT_SFRAME_FDE_START_OFFSET;
+	  bfd_put_signed_32 (dynobj, test_value,
+#endif
+	  bfd_put_signed_32 (dynobj, plt_start - sframe_start,
+			     htab->plt_second_sframe->contents
+			     + PLT_SFRAME_FDE_START_OFFSET);
+	}
+      if (htab->plt_second_sframe->sec_info_type == SEC_INFO_TYPE_SFRAME)
+	{
+	  if (! _bfd_elf_merge_section_sframe (output_bfd, info,
+					       htab->plt_second_sframe,
+					       htab->plt_second_sframe->contents))
+	    return NULL;
+	}
+    }
+
+  if (htab->plt_got_sframe != NULL
+      && htab->plt_got_sframe->contents != NULL)
+    {
+      if (htab->plt_got != NULL
+	  && htab->plt_got->size != 0
+	  && (htab->plt_got->flags & SEC_EXCLUDE) == 0
+	  && htab->plt_got->output_section != NULL
+	  && htab->plt_got_sframe->output_section != NULL)
+	{
+	  bfd_vma plt_start = htab->plt_got->output_section->vma;
+	  bfd_vma sframe_start
+	    = (htab->plt_got_sframe->output_section->vma
+	       + htab->plt_got_sframe->output_offset
+	       + PLT_SFRAME_FDE_START_OFFSET);
+	  bfd_put_signed_32 (dynobj, plt_start - sframe_start,
+			     htab->plt_got_sframe->contents
+			     + PLT_SFRAME_FDE_START_OFFSET);
+	}
+      if (htab->plt_got_sframe->sec_info_type == SEC_INFO_TYPE_SFRAME)
+	{
+	  if (! _bfd_elf_merge_section_sframe (output_bfd, info,
+					       htab->plt_got_sframe,
+					       htab->plt_got_sframe->contents))
+	    return NULL;
+	}
+    }
+
   if (htab->elf.sgot && htab->elf.sgot->size > 0)
     elf_section_data (htab->elf.sgot->output_section)->this_hdr.sh_entsize
       = htab->got_entry_size;
@@ -1617,19 +3074,19 @@ _bfd_x86_elf_finish_dynamic_sections (bf
 }
 
 
-bfd_boolean
-_bfd_x86_elf_always_size_sections (bfd *output_bfd,
-				   struct bfd_link_info *info)
+bool
+_bfd_x86_elf_early_size_sections (bfd *output_bfd,
+				  struct bfd_link_info *info)
 {
   asection *tls_sec = elf_hash_table (info)->tls_sec;
 
-  if (tls_sec)
+  if (tls_sec && !bfd_link_relocatable (info))
     {
       struct elf_link_hash_entry *tlsbase;
 
       tlsbase = elf_link_hash_lookup (elf_hash_table (info),
 				      "_TLS_MODULE_BASE_",
-				      FALSE, FALSE, FALSE);
+				      false, false, false);
 
       if (tlsbase && tlsbase->type == STT_TLS)
 	{
@@ -1640,13 +3097,13 @@ _bfd_x86_elf_always_size_sections (bfd *
 
 	  htab = elf_x86_hash_table (info, bed->target_id);
 	  if (htab == NULL)
-	    return FALSE;
+	    return false;
 
 	  if (!(_bfd_generic_link_add_one_symbol
 		(info, output_bfd, "_TLS_MODULE_BASE_", BSF_LOCAL,
-		 tls_sec, 0, NULL, FALSE,
+		 tls_sec, 0, NULL, false,
 		 bed->collect, &bh)))
-	    return FALSE;
+	    return false;
 
 	  htab->tls_module_base = bh;
 
@@ -1654,25 +3111,24 @@ _bfd_x86_elf_always_size_sections (bfd *
 	  tlsbase->def_regular = 1;
 	  tlsbase->other = STV_HIDDEN;
 	  tlsbase->root.linker_def = 1;
-	  (*bed->elf_backend_hide_symbol) (info, tlsbase, TRUE);
+	  (*bed->elf_backend_hide_symbol) (info, tlsbase, true);
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 void
 _bfd_x86_elf_merge_symbol_attribute (struct elf_link_hash_entry *h,
-				     const Elf_Internal_Sym *isym,
-				     bfd_boolean definition,
-				     bfd_boolean dynamic ATTRIBUTE_UNUSED)
+				     unsigned int st_other,
+				     bool definition,
+				     bool dynamic ATTRIBUTE_UNUSED)
 {
   if (definition)
     {
       struct elf_x86_link_hash_entry *eh
 	= (struct elf_x86_link_hash_entry *) h;
-      eh->def_protected = (ELF_ST_VISIBILITY (isym->st_other)
-			   == STV_PROTECTED);
+      eh->def_protected = ELF_ST_VISIBILITY (st_other) == STV_PROTECTED;
     }
 }
 
@@ -1688,37 +3144,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)
     {
@@ -1753,7 +3178,7 @@ _bfd_x86_elf_copy_indirect_symbol (struc
 /* Remove undefined weak symbol from the dynamic symbol table if it
    is resolved to 0.   */
 
-bfd_boolean
+bool
 _bfd_x86_elf_fixup_symbol (struct bfd_link_info *info,
 			   struct elf_link_hash_entry *h)
 {
@@ -1764,7 +3189,7 @@ _bfd_x86_elf_fixup_symbol (struct bfd_li
       _bfd_elf_strtab_delref (elf_hash_table (info)->dynstr,
 			      h->dynstr_index);
     }
-  return TRUE;
+  return true;
 }
 
 /* Change the STT_GNU_IFUNC symbol defined in position-dependent
@@ -1782,8 +3207,7 @@ _bfd_x86_elf_link_fixup_ifunc_symbol (st
       && h->def_regular
       && h->dynindx != -1
       && h->plt.offset != (bfd_vma) -1
-      && h->type == STT_GNU_IFUNC
-      && h->pointer_equality_needed)
+      && h->type == STT_GNU_IFUNC)
     {
       asection *plt_s;
       bfd_vma plt_offset;
@@ -1813,15 +3237,137 @@ _bfd_x86_elf_link_fixup_ifunc_symbol (st
     }
 }
 
+/* Report relative relocation.  */
+
+void
+_bfd_x86_elf_link_report_relative_reloc
+  (struct bfd_link_info *info, asection *asect,
+   struct elf_link_hash_entry *h, Elf_Internal_Sym *sym,
+   const char *reloc_name, const void *reloc)
+{
+  const char *name;
+  bfd *abfd;
+  const Elf_Internal_Rela *rel = (const Elf_Internal_Rela *) reloc;
+
+  /* Use the output BFD for linker created sections.  */
+  if ((asect->flags & SEC_LINKER_CREATED) != 0)
+    abfd = info->output_bfd;
+  else
+    abfd = asect->owner;
+
+  if (h != NULL && h->root.root.string != NULL)
+    name = h->root.root.string;
+  else
+    name = bfd_elf_sym_name (abfd, &elf_symtab_hdr (abfd), sym, NULL);
+
+  if (asect->use_rela_p)
+    info->callbacks->einfo
+      (_("%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against "
+	 "'%s' " "for section '%pA' in %pB\n"),
+       info->output_bfd, reloc_name, rel->r_offset, rel->r_info,
+       rel->r_addend, name, asect, abfd);
+  else
+    info->callbacks->einfo
+      (_("%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section "
+	 "'%pA' in %pB\n"),
+       info->output_bfd, reloc_name, rel->r_offset, rel->r_info, name,
+       asect, abfd);
+}
+
+/* Report TLS transition error.  */
+
+void
+_bfd_x86_elf_link_report_tls_transition_error
+  (struct bfd_link_info *info, bfd *abfd, asection *asect,
+   Elf_Internal_Shdr *symtab_hdr, struct elf_link_hash_entry *h,
+   Elf_Internal_Sym *sym, const Elf_Internal_Rela *rel,
+   const char *from_reloc_name, const char *to_reloc_name,
+   enum elf_x86_tls_error_type tls_error)
+{
+  const char *name;
+  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+  struct elf_x86_link_hash_table *htab
+    = elf_x86_hash_table (info, bed->target_id);
+
+  if (h)
+    name = h->root.root.string;
+  else
+    {
+      if (htab == NULL)
+	name = "*unknown*";
+      else
+	name = bfd_elf_sym_name (abfd, symtab_hdr, sym, NULL);
+    }
+
+  switch (tls_error)
+    {
+    case elf_x86_tls_error_yes:
+      info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%pB: TLS transition from %s to %s against `%s' at 0x%v in "
+	   "section `%pA' failed\n"),
+	 abfd, from_reloc_name, to_reloc_name, name, rel->r_offset,
+	 asect);
+      break;
+
+    case elf_x86_tls_error_add_mov:
+      info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
+	   "in ADD or MOV only\n"),
+	 abfd, asect, rel->r_offset, from_reloc_name, name);
+      break;
+
+    case elf_x86_tls_error_add_movrs:
+      info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
+	   "in ADD or MOVRS only\n"),
+	 abfd, asect, rel->r_offset, from_reloc_name, name);
+      break;
+
+    case elf_x86_tls_error_add_sub_mov:
+      info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
+	   "in ADD, SUB or MOV only\n"),
+	 abfd, asect, rel->r_offset, from_reloc_name, name);
+      break;
+
+    case elf_x86_tls_error_indirect_call:
+      info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
+	   "in indirect CALL with %s register only\n"),
+	 abfd, asect, rel->r_offset, from_reloc_name, name,
+	 htab->ax_register);
+      break;
+
+    case elf_x86_tls_error_lea:
+      info->callbacks->einfo
+	/* xgettext:c-format */
+	(_("%pB(%pA+0x%v): relocation %s against `%s' must be used "
+	   "in LEA only\n"),
+	 abfd, asect, rel->r_offset, from_reloc_name, name);
+      break;
+
+    default:
+      abort ();
+      break;
+    }
+
+  bfd_set_error (bfd_error_bad_value);
+}
+
 /* Return TRUE if symbol should be hashed in the `.gnu.hash' section.  */
 
-bfd_boolean
+bool
 _bfd_x86_elf_hash_symbol (struct elf_link_hash_entry *h)
 {
   if (h->plt.offset != (bfd_vma) -1
       && !h->def_regular
       && !h->pointer_equality_needed)
-    return FALSE;
+    return false;
 
   return _bfd_elf_hash_symbol (h);
 }
@@ -1832,7 +3378,7 @@ _bfd_x86_elf_hash_symbol (struct elf_lin
    change the definition to something the rest of the link can
    understand.  */
 
-bfd_boolean
+bool
 _bfd_x86_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
 				    struct elf_link_hash_entry *h)
 {
@@ -1843,6 +3389,27 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
   const struct elf_backend_data *bed
     = get_elf_backend_data (info->output_bfd);
 
+  eh = (struct elf_x86_link_hash_entry *) h;
+
+  /* Clear GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS if it is turned
+     on by an input relocatable file and there is a non-GOT/non-PLT
+     reference from another relocatable file without it.
+     NB: There can be non-GOT reference in data sections in input with
+     GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS.  */
+  if (eh->non_got_ref_without_indirect_extern_access
+      && info->indirect_extern_access == 1
+      && bfd_link_executable (info))
+    {
+      unsigned int needed_1;
+      info->indirect_extern_access = 0;
+      /* Turn off nocopyreloc if implied by indirect_extern_access.  */
+      if (info->nocopyreloc == 2)
+	info->nocopyreloc = 0;
+      needed_1 = bfd_h_get_32 (info->output_bfd, info->needed_1_p);
+      needed_1 &= ~GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS;
+      bfd_h_put_32 (info->output_bfd, needed_1, info->needed_1_p);
+    }
+
   /* STT_GNU_IFUNC symbol must go through PLT. */
   if (h->type == STT_GNU_IFUNC)
     {
@@ -1855,7 +3422,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;
@@ -1881,6 +3448,10 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
 		    h->plt.refcount += 1;
 		}
 	    }
+
+	  /* GOTOFF relocation needs PLT.  */
+	  if (eh->gotoff_ref)
+	    h->plt.refcount = 1;
 	}
 
       if (h->plt.refcount <= 0)
@@ -1888,7 +3459,7 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
 	  h->plt.offset = (bfd_vma) -1;
 	  h->needs_plt = 0;
 	}
-      return TRUE;
+      return true;
     }
 
   /* If this is a function, put it in the procedure linkage table.  We
@@ -1911,7 +3482,7 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
 	  h->needs_plt = 0;
 	}
 
-      return TRUE;
+      return true;
     }
   else
     /* It's possible that we incorrectly decided a .plt reloc was needed
@@ -1921,8 +3492,6 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
        the link may change h->type.  So fix it now.  */
     h->plt.offset = (bfd_vma) -1;
 
-  eh = (struct elf_x86_link_hash_entry *) h;
-
   /* If this is a weak symbol, and there is a real definition, the
      processor independent code will have arranged for us to see the
      real definition first, and we can just use the same value.  */
@@ -1940,7 +3509,7 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
 	  h->non_got_ref = def->non_got_ref;
 	  eh->needs_copy = def->needs_copy;
 	}
-      return TRUE;
+      return true;
     }
 
   /* This is a reference to a symbol defined by a dynamic object which
@@ -1951,24 +3520,24 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
      For such cases we need not do anything here; the relocations will
      be handled correctly by relocate_section.  */
   if (!bfd_link_executable (info))
-    return TRUE;
+    return true;
 
   /* If there are no references to this symbol that do not use the
      GOT nor R_386_GOTOFF relocation, we don't need to generate a copy
      reloc.  NB: gotoff_ref is always 0 for x86-64.  */
   if (!h->non_got_ref && !eh->gotoff_ref)
-    return TRUE;
+    return true;
 
   /* If -z nocopyreloc was given, we won't generate them either.  */
   if (info->nocopyreloc || SYMBOL_NO_COPYRELOC (info, eh))
     {
       h->non_got_ref = 0;
-      return TRUE;
+      return true;
     }
 
   htab = elf_x86_hash_table (info, bed->target_id);
   if (htab == NULL)
-    return FALSE;
+    return false;
 
   /* If there aren't any dynamic relocs in read-only sections nor
      R_386_GOTOFF relocation, then we can keep the dynamic relocs and
@@ -1978,15 +3547,15 @@ _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;
+	  return true;
 	}
     }
 
@@ -2015,6 +3584,24 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
     }
   if ((h->root.u.def.section->flags & SEC_ALLOC) != 0 && h->size != 0)
     {
+      if (eh->def_protected && bfd_link_executable (info))
+	for (p = h->dyn_relocs; p != NULL; p = p->next)
+	  {
+	    /* Disallow copy relocation against non-copyable protected
+	       symbol.  */
+	    s = p->sec->output_section;
+	    if (s != NULL && (s->flags & SEC_READONLY) != 0)
+	      {
+		info->callbacks->fatal
+		  /* xgettext:c-format */
+		  (_("%P: %pB: copy relocation against non-copyable "
+		     "protected symbol `%s' in %pB\n"),
+		   p->sec->owner, h->root.root.string,
+		   h->root.u.def.section->owner);
+		return false;
+	      }
+	  }
+
       srel->size += htab->sizeof_reloc;
       h->needs_copy = 1;
     }
@@ -2025,7 +3612,7 @@ _bfd_x86_elf_adjust_dynamic_symbol (stru
 void
 _bfd_x86_elf_hide_symbol (struct bfd_link_info *info,
 			  struct elf_link_hash_entry *h,
-			  bfd_boolean force_local)
+			  bool force_local)
 {
   if (h->root.type == bfd_link_hash_undefweak
       && info->nointerp
@@ -2047,7 +3634,7 @@ _bfd_x86_elf_hide_symbol (struct bfd_lin
    SYMBOL_REFERENCES_LOCAL, but it also checks version script.  It
    works in check_relocs.  */
 
-bfd_boolean
+bool
 _bfd_x86_elf_link_symbol_references_local (struct bfd_link_info *info,
 					   struct elf_link_hash_entry *h)
 {
@@ -2056,10 +3643,10 @@ _bfd_x86_elf_link_symbol_references_loca
     = (struct elf_x86_link_hash_table *) info->hash;
 
   if (eh->local_ref > 1)
-    return TRUE;
+    return true;
 
   if (eh->local_ref == 1)
-    return FALSE;
+    return false;
 
   /* Unversioned symbols defined in regular objects can be forced local
      by linker version script.  A weak undefined symbol is forced local
@@ -2068,7 +3655,7 @@ _bfd_x86_elf_link_symbol_references_loca
      2. When building executable, there is no dynamic linker.  Or
      3. or "-z nodynamic-undefined-weak" is used.
    */
-  if (SYMBOL_REFERENCES_LOCAL (info, h)
+  if (_bfd_elf_symbol_refs_local_p (h, info, 1)
       || (h->root.type == bfd_link_hash_undefweak
 	  && (ELF_ST_VISIBILITY (h->other) != STV_DEFAULT
 	      || (bfd_link_executable (info)
@@ -2079,11 +3666,11 @@ _bfd_x86_elf_link_symbol_references_loca
 	  && _bfd_elf_link_hide_sym_by_version (info, h)))
     {
       eh->local_ref = 2;
-      return TRUE;
+      return true;
     }
 
   eh->local_ref = 1;
-  return FALSE;
+  return false;
 }
 
 /* Return the section that should be marked against GC for a given
@@ -2132,7 +3719,7 @@ elf_x86_64_get_plt_got_vma (struct elf_x
   return plt_p->sec->vma + offset + off + plt_p->plt_got_insn_size;
 }
 
-static bfd_boolean
+static bool
 elf_i386_valid_plt_reloc_p (unsigned int type)
 {
   return (type == R_386_JUMP_SLOT
@@ -2140,7 +3727,7 @@ elf_i386_valid_plt_reloc_p (unsigned int
 	  || type == R_386_IRELATIVE);
 }
 
-static bfd_boolean
+static bool
 elf_x86_64_valid_plt_reloc_p (unsigned int type)
 {
   return (type == R_X86_64_JUMP_SLOT
@@ -2168,7 +3755,8 @@ _bfd_x86_elf_get_synthetic_symtab (bfd *
   const struct elf_backend_data *bed;
   bfd_vma (*get_plt_got_vma) (struct elf_x86_plt *, bfd_vma, bfd_vma,
 			      bfd_vma);
-  bfd_boolean (*valid_plt_reloc_p) (unsigned int);
+  bool (*valid_plt_reloc_p) (unsigned int);
+  unsigned int jump_slot_reloc;
 
   dynrelbuf = NULL;
   if (count == 0)
@@ -2209,11 +3797,13 @@ _bfd_x86_elf_get_synthetic_symtab (bfd *
     {
       get_plt_got_vma = elf_x86_64_get_plt_got_vma;
       valid_plt_reloc_p = elf_x86_64_valid_plt_reloc_p;
+      jump_slot_reloc = R_X86_64_JUMP_SLOT;
     }
   else
     {
       get_plt_got_vma = elf_i386_get_plt_got_vma;
       valid_plt_reloc_p = elf_i386_valid_plt_reloc_p;
+      jump_slot_reloc = R_386_JUMP_SLOT;
       if (got_addr)
 	{
 	  /* Check .got.plt and then .got to get the _GLOBAL_OFFSET_TABLE_
@@ -2318,7 +3908,9 @@ _bfd_x86_elf_get_synthetic_symtab (bfd *
 		len = strlen ((*p->sym_ptr_ptr)->name);
 		memcpy (names, (*p->sym_ptr_ptr)->name, len);
 		names += len;
-		if (p->addend != 0)
+		/* There may be JUMP_SLOT and IRELATIVE relocations.
+		   JUMP_SLOT r_addend should be ignored.  */
+		if (p->addend != 0 && p->howto->type != jump_slot_reloc)
 		  {
 		    char buf[30], *a;
 
@@ -2347,15 +3939,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);
+    _bfd_elf_munmap_section_contents (plts[j].sec, plts[j].contents);
 
   free (dynrelbuf);
 
@@ -2399,7 +3990,7 @@ _bfd_x86_elf_parse_gnu_properties (bfd *
    return TRUE if APROP is updated.  Otherwise, return TRUE if BPROP
    should be merged with ABFD.  */
 
-bfd_boolean
+bool
 _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
 				   bfd *abfd ATTRIBUTE_UNUSED,
 				   bfd *bbfd ATTRIBUTE_UNUSED,
@@ -2407,7 +3998,9 @@ _bfd_x86_elf_merge_gnu_properties (struc
 				   elf_property *bprop)
 {
   unsigned int number, features;
-  bfd_boolean updated = FALSE;
+  bool updated = false;
+  const struct elf_backend_data *bed;
+  struct elf_x86_link_hash_table *htab;
   unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type;
 
   if (pr_type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED
@@ -2422,7 +4015,7 @@ _bfd_x86_elf_merge_gnu_properties (struc
 	      /* Remove this property since the other input file doesn't
 		 have it.  */
 	      aprop->pr_kind = property_remove;
-	      updated = TRUE;
+	      updated = true;
 	    }
 	}
       else
@@ -2437,15 +4030,37 @@ _bfd_x86_elf_merge_gnu_properties (struc
 	   || (pr_type >= GNU_PROPERTY_X86_UINT32_OR_LO
 	       && pr_type <= GNU_PROPERTY_X86_UINT32_OR_HI))
     {
+      features = 0;
+      if (pr_type == GNU_PROPERTY_X86_ISA_1_NEEDED)
+	{
+	  bed = get_elf_backend_data (info->output_bfd);
+	  htab = elf_x86_hash_table (info, bed->target_id);
+	  switch (htab->params->isa_level)
+	    {
+	    case 0:
+	      break;
+	    case 2:
+	      features = GNU_PROPERTY_X86_ISA_1_V2;
+	      break;
+	    case 3:
+	      features = GNU_PROPERTY_X86_ISA_1_V3;
+	      break;
+	    case 4:
+	      features = GNU_PROPERTY_X86_ISA_1_V4;
+	      break;
+	    default:
+	      abort ();
+	    }
+	}
       if (aprop != NULL && bprop != NULL)
 	{
 	  number = aprop->u.number;
-	  aprop->u.number = number | bprop->u.number;
+	  aprop->u.number = number | bprop->u.number | features;
 	  /* Remove the property if all bits are empty.  */
 	  if (aprop->u.number == 0)
 	    {
 	      aprop->pr_kind = property_remove;
-	      updated = TRUE;
+	      updated = true;
 	    }
 	  else
 	    updated = number != (unsigned int) aprop->u.number;
@@ -2455,11 +4070,12 @@ _bfd_x86_elf_merge_gnu_properties (struc
 	  /* Only one of APROP and BPROP can be NULL.  */
 	  if (aprop != NULL)
 	    {
+	      aprop->u.number |= features;
 	      if (aprop->u.number == 0)
 		{
 		  /* Remove APROP if all bits are empty.  */
 		  aprop->pr_kind = property_remove;
-		  updated = TRUE;
+		  updated = true;
 		}
 	    }
 	  else
@@ -2467,6 +4083,7 @@ _bfd_x86_elf_merge_gnu_properties (struc
 	      /* Return TRUE if APROP is NULL and all bits of BPROP
 		 aren't empty to indicate that BPROP should be added
 		 to ABFD.  */
+	      bprop->u.number |= features;
 	      updated = bprop->u.number != 0;
 	    }
 	}
@@ -2480,23 +4097,32 @@ _bfd_x86_elf_merge_gnu_properties (struc
 	 2. If APROP is NULL, remove x86 feature.
 	 3. Otherwise, do nothing.
        */
-      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);
+      bed = get_elf_backend_data (info->output_bfd);
+      htab = elf_x86_hash_table (info, bed->target_id);
       if (!htab)
 	abort ();
       if (aprop != NULL && bprop != NULL)
 	{
-	  features = 0;
-	  if (htab->params->ibt)
-	    features = GNU_PROPERTY_X86_FEATURE_1_IBT;
-	  if (htab->params->shstk)
-	    features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
 	  number = aprop->u.number;
-	  /* Add GNU_PROPERTY_X86_FEATURE_1_IBT and
-	     GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
-	  aprop->u.number = (number & bprop->u.number) | features;
+	  aprop->u.number = number & bprop->u.number;
+	  if (pr_type == GNU_PROPERTY_X86_FEATURE_1_AND)
+	    {
+	      features = 0;
+	      if (htab->params->ibt)
+		features = GNU_PROPERTY_X86_FEATURE_1_IBT;
+	      if (htab->params->shstk)
+		features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
+	      if (htab->params->lam_u48)
+		features |= (GNU_PROPERTY_X86_FEATURE_1_LAM_U48
+			     | GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
+	      else if (htab->params->lam_u57)
+		features |= GNU_PROPERTY_X86_FEATURE_1_LAM_U57;
+	      /* Add GNU_PROPERTY_X86_FEATURE_1_IBT,
+		 GNU_PROPERTY_X86_FEATURE_1_SHSTK,
+		 GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and
+		 GNU_PROPERTY_X86_FEATURE_1_LAM_U57.  */
+	      aprop->u.number |= features;
+	    }
 	  updated = number != (unsigned int) aprop->u.number;
 	  /* Remove the property if all feature bits are cleared.  */
 	  if (aprop->u.number == 0)
@@ -2508,10 +4134,18 @@ _bfd_x86_elf_merge_gnu_properties (struc
 	     have them.  Set IBT and SHSTK properties for -z ibt and -z
 	     shstk if needed.  */
 	  features = 0;
-	  if (htab->params->ibt)
-	    features = GNU_PROPERTY_X86_FEATURE_1_IBT;
-	  if (htab->params->shstk)
-	    features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
+	  if (pr_type == GNU_PROPERTY_X86_FEATURE_1_AND)
+	    {
+	      if (htab->params->ibt)
+		features = GNU_PROPERTY_X86_FEATURE_1_IBT;
+	      if (htab->params->shstk)
+		features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
+	      if (htab->params->lam_u48)
+		features |= (GNU_PROPERTY_X86_FEATURE_1_LAM_U48
+			     | GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
+	      else if (htab->params->lam_u57)
+		features |= GNU_PROPERTY_X86_FEATURE_1_LAM_U57;
+	    }
 	  if (features)
 	    {
 	      if (aprop != NULL)
@@ -2521,14 +4155,14 @@ _bfd_x86_elf_merge_gnu_properties (struc
 		}
 	      else
 		{
-		  updated = TRUE;
+		  updated = true;
 		  bprop->u.number = features;
 		}
 	    }
 	  else if (aprop != NULL)
 	    {
 	      aprop->pr_kind = property_remove;
-	      updated = TRUE;
+	      updated = true;
 	    }
 	}
       return updated;
@@ -2542,6 +4176,50 @@ _bfd_x86_elf_merge_gnu_properties (struc
   return updated;
 }
 
+/* Report x86-64 ISA level.  */
+
+static void
+report_isa_level (struct bfd_link_info *info, bfd *abfd,
+		  unsigned int bitmask, bool needed)
+{
+  if (!bitmask)
+    return;
+
+  if (needed)
+    info->callbacks->einfo (_("%pB: x86 ISA needed: "), abfd);
+  else
+    info->callbacks->einfo (_("%pB: x86 ISA used: "), abfd);
+
+  while (bitmask)
+    {
+      unsigned int bit = bitmask & (- bitmask);
+
+      bitmask &= ~ bit;
+      switch (bit)
+	{
+	case GNU_PROPERTY_X86_ISA_1_BASELINE:
+	  info->callbacks->einfo ("x86-64-baseline");
+	  break;
+	case GNU_PROPERTY_X86_ISA_1_V2:
+	  info->callbacks->einfo ("x86-64-v2");
+	  break;
+	case GNU_PROPERTY_X86_ISA_1_V3:
+	  info->callbacks->einfo ("x86-64-v3");
+	  break;
+	case GNU_PROPERTY_X86_ISA_1_V4:
+	  info->callbacks->einfo ("x86-64-v4");
+	  break;
+	default:
+	  info->callbacks->einfo (_("<unknown: %x>"), bit);
+	  break;
+	}
+      if (bitmask)
+	info->callbacks->einfo (", ");
+    }
+
+  info->callbacks->einfo ("\n");
+}
+
 /* Set up x86 GNU properties.  Return the first relocatable ELF input
    with GNU properties if found.  Otherwise, return NULL.  */
 
@@ -2549,12 +4227,12 @@ bfd *
 _bfd_x86_elf_link_setup_gnu_properties
   (struct bfd_link_info *info, struct elf_x86_init_table *init_table)
 {
-  bfd_boolean normal_target;
-  bfd_boolean lazy_plt;
+  bool normal_target;
+  bool lazy_plt;
   asection *sec, *pltsec;
   bfd *dynobj;
-  bfd_boolean use_ibt_plt;
-  unsigned int plt_alignment, features;
+  bool use_ibt_plt;
+  unsigned int plt_alignment, features, isa_level;
   struct elf_x86_link_hash_table *htab;
   bfd *pbfd;
   bfd *ebfd = NULL;
@@ -2586,23 +4264,58 @@ _bfd_x86_elf_link_setup_gnu_properties
   if (htab->params->ibt)
     {
       features = GNU_PROPERTY_X86_FEATURE_1_IBT;
-      htab->params->cet_report &= ~cet_report_ibt;
+      htab->params->cet_report &= ~prop_report_ibt;
     }
   if (htab->params->shstk)
     {
       features |= GNU_PROPERTY_X86_FEATURE_1_SHSTK;
-      htab->params->cet_report &= ~cet_report_shstk;
+      htab->params->cet_report &= ~prop_report_shstk;
+    }
+  if (!(htab->params->cet_report & (prop_report_ibt | prop_report_shstk)))
+    htab->params->cet_report = prop_report_none;
+  if (htab->params->lam_u48)
+    {
+      features |= (GNU_PROPERTY_X86_FEATURE_1_LAM_U48
+		   | GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
+      htab->params->lam_u48_report = prop_report_none;
+      htab->params->lam_u57_report = prop_report_none;
+    }
+  else if (htab->params->lam_u57)
+    {
+      features |= GNU_PROPERTY_X86_FEATURE_1_LAM_U57;
+      htab->params->lam_u57_report = prop_report_none;
+    }
+
+  switch (htab->params->isa_level)
+    {
+    case 0:
+      isa_level = 0;
+      break;
+    case 1:
+      isa_level = GNU_PROPERTY_X86_ISA_1_BASELINE;
+      break;
+    case 2:
+      isa_level = GNU_PROPERTY_X86_ISA_1_V2;
+      break;
+    case 3:
+      isa_level = GNU_PROPERTY_X86_ISA_1_V3;
+      break;
+    case 4:
+      isa_level = GNU_PROPERTY_X86_ISA_1_V4;
+      break;
+    default:
+      abort ();
     }
-  if (!(htab->params->cet_report & (cet_report_ibt | cet_report_shstk)))
-    htab->params->cet_report = cet_report_none;
 
   if (ebfd != NULL)
     {
       prop = NULL;
       if (features)
 	{
-	  /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
-	     GNU_PROPERTY_X86_FEATURE_1_SHSTK.  */
+	  /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT,
+	     GNU_PROPERTY_X86_FEATURE_1_SHSTK,
+	     GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and
+	     GNU_PROPERTY_X86_FEATURE_1_LAM_U57.  */
 	  prop = _bfd_elf_get_property (ebfd,
 					GNU_PROPERTY_X86_FEATURE_1_AND,
 					4);
@@ -2610,6 +4323,16 @@ _bfd_x86_elf_link_setup_gnu_properties
 	  prop->pr_kind = property_number;
 	}
 
+      if (isa_level)
+	{
+	  /* If ISA level is set, add GNU_PROPERTY_X86_ISA_1_NEEDED.  */
+	  prop = _bfd_elf_get_property (ebfd,
+					GNU_PROPERTY_X86_ISA_1_NEEDED,
+					4);
+	  prop->u.number |= isa_level;
+	  prop->pr_kind = property_number;
+	}
+
       /* Create the GNU property note section if needed.  */
       if (prop != NULL && pbfd == NULL)
 	{
@@ -2621,65 +4344,155 @@ _bfd_x86_elf_link_setup_gnu_properties
 					      | SEC_READONLY
 					      | SEC_HAS_CONTENTS
 					      | SEC_DATA));
-	  if (sec == NULL)
-	    info->callbacks->einfo (_("%F%P: failed to create GNU property section\n"));
-
-	  if (!bfd_set_section_alignment (sec, class_align))
-	    {
-error_alignment:
-	      info->callbacks->einfo (_("%F%pA: failed to align section\n"),
-				      sec);
-	    }
+	  if (sec == NULL
+	      || !bfd_set_section_alignment (sec, class_align))
+	    info->callbacks->fatal (_("%P: failed to create %sn"),
+				    NOTE_GNU_PROPERTY_SECTION_NAME);
 
 	  elf_section_type (sec) = SHT_NOTE;
 	}
     }
 
-  if (htab->params->cet_report)
+  bool check_feature_1 = (htab->params->cet_report
+			  || htab->params->lam_u48_report
+			  || htab->params->lam_u57_report);
+  if (check_feature_1 || htab->params->isa_level_report)
     {
-      /* Report missing IBT and SHSTK properties.  */
+      /* Report missing IBT, SHSTK, ISA level and LAM properties.  */
       bfd *abfd;
-      const char *msg;
+      const char *warning_msg = _("%P: %pB: warning: missing %s\n");
+      const char *error_msg = _("%X%P: %pB: error: missing %s\n");
+      const char *cet_msg = NULL;
+      const char *lam_u48_msg = NULL;
+      const char *lam_u57_msg = NULL;
+      const char *missing;
       elf_property_list *p;
-      bfd_boolean missing_ibt, missing_shstk;
-      bfd_boolean check_ibt
-	= !!(htab->params->cet_report & cet_report_ibt);
-      bfd_boolean check_shstk
-	= !!(htab->params->cet_report & cet_report_shstk);
+      bool missing_ibt, missing_shstk;
+      bool missing_lam_u48, missing_lam_u57;
+      bool check_ibt
+	= (htab->params->cet_report
+	   && (htab->params->cet_report & prop_report_ibt));
+      bool check_shstk
+	= (htab->params->cet_report
+	   && (htab->params->cet_report & prop_report_shstk));
+      bool report_needed_level
+	= (htab->params->isa_level_report & isa_level_report_needed) != 0;
+      bool report_used_level
+	= (htab->params->isa_level_report & isa_level_report_used) != 0;
 
-      if ((htab->params->cet_report & cet_report_warning))
-	msg = _("%P: %pB: warning: missing %s\n");
-      else
-	msg = _("%X%P: %pB: error: missing %s\n");
+      if (htab->params->cet_report)
+	{
+	  if ((htab->params->cet_report & prop_report_warning))
+	    cet_msg = warning_msg;
+	  else
+	    cet_msg = error_msg;
+	}
+      if (htab->params->lam_u48_report)
+	{
+	  if ((htab->params->lam_u48_report & prop_report_warning))
+	    lam_u48_msg = warning_msg;
+	  else
+	    lam_u48_msg = error_msg;
+	}
+      if (htab->params->lam_u57_report)
+	{
+	  if ((htab->params->lam_u57_report & prop_report_warning))
+	    lam_u57_msg = warning_msg;
+	  else
+	    lam_u57_msg = error_msg;
+	}
 
       for (abfd = info->input_bfds; abfd != NULL; abfd = abfd->link.next)
 	if (!(abfd->flags & (DYNAMIC | BFD_PLUGIN | BFD_LINKER_CREATED))
 	    && bfd_get_flavour (abfd) == bfd_target_elf_flavour)
 	  {
+	    elf_property_list *p_feature_1 = NULL;
+	    elf_property_list *p_isa_1_needed = NULL;
+	    elf_property_list *p_isa_1_used = NULL;
+	    bool find_feature_1 = check_feature_1;
+	    bool find_needed_level = report_needed_level;
+	    bool find_used_level = report_used_level;
+
 	    for (p = elf_properties (abfd); p; p = p->next)
-	      if (p->property.pr_type == GNU_PROPERTY_X86_FEATURE_1_AND)
-		break;
+	      {
+		switch (p->property.pr_type)
+		  {
+		  case GNU_PROPERTY_X86_FEATURE_1_AND:
+		    if (find_feature_1)
+		      {
+			p_feature_1 = p;
+			find_feature_1 = false;
+		      }
+		    break;
+		  case GNU_PROPERTY_X86_ISA_1_NEEDED:
+		    if (find_needed_level)
+		      {
+			p_isa_1_needed = p;
+			find_needed_level = false;
+		      }
+		    break;
+		  case GNU_PROPERTY_X86_ISA_1_USED:
+		    if (find_used_level)
+		      {
+			p_isa_1_used = p;
+			find_used_level = false;
+		      }
+		    break;
+		  default:
+		    break;
+		  }
+
+		if (!find_feature_1
+		    && !find_needed_level
+		    && !find_used_level)
+		  break;
+	      }
+
 
 	    missing_ibt = check_ibt;
 	    missing_shstk = check_shstk;
-	    if (p)
+	    missing_lam_u48 = !!lam_u48_msg;
+	    missing_lam_u57 = !!lam_u57_msg;
+	    if (p_feature_1)
 	      {
-		missing_ibt &= !(p->property.u.number
+		missing_ibt &= !(p_feature_1->property.u.number
 				 & GNU_PROPERTY_X86_FEATURE_1_IBT);
-		missing_shstk &= !(p->property.u.number
+		missing_shstk &= !(p_feature_1->property.u.number
 				   & GNU_PROPERTY_X86_FEATURE_1_SHSTK);
+		missing_lam_u48 &= !(p_feature_1->property.u.number
+				     & GNU_PROPERTY_X86_FEATURE_1_LAM_U48);
+		missing_lam_u57 &= !(p_feature_1->property.u.number
+				     & GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
 	      }
 	    if (missing_ibt || missing_shstk)
 	      {
-		const char *missing;
 		if (missing_ibt && missing_shstk)
 		  missing = _("IBT and SHSTK properties");
 		else if (missing_ibt)
 		  missing = _("IBT property");
 		else
 		  missing = _("SHSTK property");
-		info->callbacks->einfo (msg, abfd, missing);
+		info->callbacks->einfo (cet_msg, abfd, missing);
 	      }
+	    if (missing_lam_u48)
+	      {
+		missing = _("LAM_U48 property");
+		info->callbacks->einfo (lam_u48_msg, abfd, missing);
+	      }
+	    if (missing_lam_u57)
+	      {
+		missing = _("LAM_U57 property");
+		info->callbacks->einfo (lam_u57_msg, abfd, missing);
+	      }
+
+	    if (p_isa_1_needed)
+	      report_isa_level (info, abfd,
+				p_isa_1_needed->property.u.number,
+				true);
+	    if (p_isa_1_used)
+	      report_isa_level (info, abfd,
+				p_isa_1_used->property.u.number,
+				false);
 	  }
     }
 
@@ -2754,7 +4567,8 @@ 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;
+  htab->plt.plt_indirect_branch_offset = 0;
+  normal_target = htab->elf.target_os == is_normal;
 
   if (normal_target)
     {
@@ -2762,6 +4576,7 @@ error_alignment:
 	{
 	  htab->lazy_plt = init_table->lazy_ibt_plt;
 	  htab->non_lazy_plt = init_table->non_lazy_ibt_plt;
+	  htab->plt.plt_indirect_branch_offset = 4;
 	}
       else
 	{
@@ -2777,12 +4592,38 @@ error_alignment:
 
   pltsec = htab->elf.splt;
 
-  /* If the non-lazy PLT is available, use it for all PLT entries if
-     there are no PLT0 or no .plt section.  */
   if (htab->non_lazy_plt != NULL
       && (!htab->plt.has_plt0 || pltsec == NULL))
+    lazy_plt = false;
+  else
+    lazy_plt = true;
+
+  if (normal_target)
+    {
+      if (use_ibt_plt)
+	{
+	  if (lazy_plt)
+	    htab->sframe_plt = init_table->sframe_lazy_ibt_plt;
+	  else
+	    htab->sframe_plt = init_table->sframe_non_lazy_ibt_plt;
+	}
+      else
+	{
+	  if (lazy_plt)
+	    htab->sframe_plt = init_table->sframe_lazy_plt;
+	  else
+	    htab->sframe_plt = init_table->sframe_non_lazy_plt;
+	}
+    }
+  else if (lazy_plt)
+    htab->sframe_plt = init_table->sframe_lazy_plt;
+  else
+    htab->sframe_plt = NULL;
+
+  /* If the non-lazy PLT is available, use it for all PLT entries if
+     there are no PLT0 or no .plt section.  */
+  if (!lazy_plt)
     {
-      lazy_plt = FALSE;
       if (bfd_link_pic (info))
 	htab->plt.plt_entry = htab->non_lazy_plt->pic_plt_entry;
       else
@@ -2797,7 +4638,6 @@ error_alignment:
     }
   else
     {
-      lazy_plt = TRUE;
       if (bfd_link_pic (info))
 	{
 	  htab->plt.plt0_entry = htab->lazy_plt->pic_plt0_entry;
@@ -2817,11 +4657,11 @@ 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))
     {
-      info->callbacks->einfo (_("%F%P: failed to create VxWorks dynamic sections\n"));
+      info->callbacks->fatal (_("%P: failed to create VxWorks dynamic sections\n"));
       return pbfd;
     }
 
@@ -2830,7 +4670,7 @@ error_alignment:
      don't need to do it in check_relocs.  */
   if (htab->elf.sgot == NULL
       && !_bfd_elf_create_got_section (dynobj, info))
-    info->callbacks->einfo (_("%F%P: failed to create GOT sections\n"));
+    info->callbacks->fatal (_("%P: failed to create GOT sections\n"));
 
   got_align = (bed->target_id == X86_64_ELF_DATA) ? 3 : 2;
 
@@ -2839,16 +4679,16 @@ error_alignment:
      properly aligned even if create_dynamic_sections isn't called.  */
   sec = htab->elf.sgot;
   if (!bfd_set_section_alignment (sec, got_align))
-    goto error_alignment;
+    abort ();
 
   sec = htab->elf.sgotplt;
   if (!bfd_set_section_alignment (sec, got_align))
-    goto error_alignment;
+    abort ();
 
   /* Create the ifunc sections here so that check_relocs can be
      simplified.  */
   if (!_bfd_elf_create_ifunc_sections (dynobj, info))
-    info->callbacks->einfo (_("%F%P: failed to create ifunc sections\n"));
+    info->callbacks->fatal (_("%P: failed to create ifunc sections\n"));
 
   plt_alignment = bfd_log2 (htab->plt.plt_entry_size);
 
@@ -2863,12 +4703,10 @@ error_alignment:
 	    abort ();
 	  s->size = htab->dynamic_interpreter_size;
 	  s->contents = (unsigned char *) htab->dynamic_interpreter;
+	  s->alloced = 1;
 	  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
@@ -2881,17 +4719,15 @@ error_alignment:
 
 	  sec = pltsec;
 	  if (!bfd_set_section_alignment (sec, plt_alignment))
-	    goto error_alignment;
+	    abort ();
 
 	  /* Create the GOT procedure linkage table.  */
 	  sec = bfd_make_section_anyway_with_flags (dynobj,
 						    ".plt.got",
 						    pltflags);
-	  if (sec == NULL)
-	    info->callbacks->einfo (_("%F%P: failed to create GOT PLT section\n"));
-
-	  if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment))
-	    goto error_alignment;
+	  if (sec == NULL
+	      || !bfd_set_section_alignment (sec, non_lazy_plt_alignment))
+	    info->callbacks->fatal (_("%P: failed to create GOT PLT section\n"));
 
 	  htab->plt_got = sec;
 
@@ -2902,36 +4738,27 @@ 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);
-		  if (sec == NULL)
-		    info->callbacks->einfo (_("%F%P: failed to create IBT-enabled PLT section\n"));
-
-		  if (!bfd_set_section_alignment (sec, plt_alignment))
-		    goto 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.  */
-		  sec = bfd_make_section_anyway_with_flags (dynobj,
-							    ".plt.sec",
-							    pltflags);
-		  if (sec == NULL)
-		    info->callbacks->einfo (_("%F%P: failed to create BND PLT section\n"));
-
-		  if (!bfd_set_section_alignment (sec, non_lazy_plt_alignment))
-		    goto error_alignment;
+		  if (sec == NULL
+		      || !bfd_set_section_alignment (sec, plt_alignment))
+		    info->callbacks->fatal (_("%P: failed to create IBT-enabled PLT section\n"));
 		}
 
 	      htab->plt_second = sec;
 	    }
 	}
 
+      sec = bfd_make_section_anyway_with_flags
+	(dynobj, bed->rela_plts_and_copies_p ? ".rela.tls" : ".rel.tls",
+	 bed->dynamic_sec_flags | SEC_READONLY);
+      if (sec == NULL
+	  || !bfd_set_section_alignment (sec, bed->s->log_file_align))
+	return false;
+      htab->rel_tls_desc = sec;
+
       if (!info->no_ld_generated_unwind_info)
 	{
 	  flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY
@@ -2941,11 +4768,9 @@ error_alignment:
 	  sec = bfd_make_section_anyway_with_flags (dynobj,
 						    ".eh_frame",
 						    flags);
-	  if (sec == NULL)
-	    info->callbacks->einfo (_("%F%P: failed to create PLT .eh_frame section\n"));
-
-	  if (!bfd_set_section_alignment (sec, class_align))
-	    goto error_alignment;
+	  if (sec == NULL
+	      || !bfd_set_section_alignment (sec, class_align))
+	    info->callbacks->fatal (_("%P: failed to create PLT .eh_frame section\n"));
 
 	  htab->plt_eh_frame = sec;
 
@@ -2954,11 +4779,9 @@ error_alignment:
 	      sec = bfd_make_section_anyway_with_flags (dynobj,
 							".eh_frame",
 							flags);
-	      if (sec == NULL)
-		info->callbacks->einfo (_("%F%P: failed to create GOT PLT .eh_frame section\n"));
-
-	      if (!bfd_set_section_alignment (sec, class_align))
-		goto error_alignment;
+	      if (sec == NULL
+		  || !bfd_set_section_alignment (sec, class_align))
+		info->callbacks->fatal (_("%P: failed to create GOT PLT .eh_frame section\n"));
 
 	      htab->plt_got_eh_frame = sec;
 	    }
@@ -2968,13 +4791,56 @@ error_alignment:
 	      sec = bfd_make_section_anyway_with_flags (dynobj,
 							".eh_frame",
 							flags);
+	      if (sec == NULL
+		  || !bfd_set_section_alignment (sec, class_align))
+		info->callbacks->fatal (_("%P: failed to create the second PLT .eh_frame section\n"));
+
+	      htab->plt_second_eh_frame = sec;
+	    }
+	}
+
+      /* .sframe sections are emitted for AMD64 ABI only.  */
+      if (ABI_64_P (info->output_bfd) && !info->no_ld_generated_unwind_info)
+	{
+	  flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY
+			    | SEC_HAS_CONTENTS | SEC_IN_MEMORY
+			    | SEC_LINKER_CREATED);
+
+	  sec = bfd_make_section_anyway_with_flags (dynobj, ".sframe", flags);
+	  if (sec == NULL)
+	    info->callbacks->fatal (_("%P: failed to create PLT .sframe section\n"));
+	  elf_section_type (sec) = SHT_GNU_SFRAME;
+
+	  // FIXME check this
+	  // if (!bfd_set_section_alignment (sec, class_align))
+	  //  goto error_alignment;
+
+	  htab->plt_sframe = sec;
+
+	  /* Second PLT is generated for Intel IBT + lazy plt.  */
+	  if (htab->plt_second != NULL)
+	    {
+	      sec = bfd_make_section_anyway_with_flags (dynobj,
+							".sframe",
+							flags);
 	      if (sec == NULL)
-		info->callbacks->einfo (_("%F%P: failed to create the second PLT .eh_frame section\n"));
+		info->callbacks->fatal (_("%P: failed to create second PLT .sframe section\n"));
+	      elf_section_type (sec) = SHT_GNU_SFRAME;
 
-	      if (!bfd_set_section_alignment (sec, class_align))
-		goto error_alignment;
+	      htab->plt_second_sframe = sec;
+	    }
 
-	      htab->plt_second_eh_frame = sec;
+	  /* .plt.got.  */
+	  if (htab->plt_got != NULL)
+	    {
+	      sec = bfd_make_section_anyway_with_flags (dynobj,
+							".sframe",
+							flags);
+	      if (sec == NULL)
+		info->callbacks->fatal (_("%P: failed to create PLT GOT .sframe section\n"));
+	      elf_section_type (sec) = SHT_GNU_SFRAME;
+
+	      htab->plt_got_sframe = sec;
 	    }
 	}
     }
@@ -2991,13 +4857,30 @@ error_alignment:
 	 being set properly.  It later leads to a "File truncated"
 	 error.  */
       if (!bfd_set_section_alignment (sec, 0))
-	goto error_alignment;
+	abort ();
 
       htab->plt.iplt_alignment = (normal_target
 				  ? plt_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;
 }
 
@@ -3005,15 +4888,15 @@ error_alignment:
 
 void
 _bfd_x86_elf_link_fixup_gnu_properties
-  (struct bfd_link_info *info ATTRIBUTE_UNUSED,
-   elf_property_list **listp)
+  (struct bfd_link_info *info, elf_property_list **listp)
 {
   elf_property_list *p;
 
   for (p = *listp; p; p = p->next)
     {
       unsigned int type = p->property.pr_type;
-      if (type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED
+      if (type == GNU_PROPERTY_MEMORY_SEAL
+	  || type == GNU_PROPERTY_X86_COMPAT_ISA_1_USED
 	  || type == GNU_PROPERTY_X86_COMPAT_ISA_1_NEEDED
 	  || (type >= GNU_PROPERTY_X86_UINT32_AND_LO
 	      && type <= GNU_PROPERTY_X86_UINT32_AND_HI)
@@ -3034,6 +4917,12 @@ _bfd_x86_elf_link_fixup_gnu_properties
 	      continue;
 	    }
 
+	  /* Keep LAM features only for 64-bit output.  */
+	  if (type == GNU_PROPERTY_X86_FEATURE_1_AND
+	      && !ABI_64_P (info->output_bfd))
+	    p->property.u.number &= ~(GNU_PROPERTY_X86_FEATURE_1_LAM_U48
+				      | GNU_PROPERTY_X86_FEATURE_1_LAM_U57);
+
 	  listp = &p->next;
 	}
       else if (type > GNU_PROPERTY_HIPROC)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-x86.h ./bfd/elfxx-x86.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/elfxx-x86.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/elfxx-x86.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* x86 specific support for ELF
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,6 +18,9 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
+/* Don't generate unused section symbols.  */
+#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS false
+
 #include "sysdep.h"
 #include "bfd.h"
 #include "bfdlink.h"
@@ -25,12 +28,80 @@
 #include "elf-bfd.h"
 #include "hashtab.h"
 #include "elf-linker-x86.h"
+#include "elf/i386.h"
+#include "elf/x86-64.h"
+#include "sframe-api.h"
+
+#define X86_64_PCREL_TYPE_P(TYPE) \
+  ((TYPE) == R_X86_64_PC8 \
+   || (TYPE) == R_X86_64_PC16 \
+   || (TYPE) == R_X86_64_PC32 \
+   || (TYPE) == R_X86_64_PC64)
+#define I386_PCREL_TYPE_P(TYPE) ((TYPE) == R_386_PC32)
+#define X86_PCREL_TYPE_P(IS_X86_64, TYPE) \
+  ((IS_X86_64) ? X86_64_PCREL_TYPE_P (TYPE) : I386_PCREL_TYPE_P (TYPE))
+
+#define X86_64_SIZE_TYPE_P(TYPE) \
+  ((TYPE) == R_X86_64_SIZE32 || (TYPE) == R_X86_64_SIZE64)
+#define I386_SIZE_TYPE_P(TYPE) ((TYPE) == R_386_SIZE32)
+#define X86_SIZE_TYPE_P(IS_X86_64, TYPE) \
+  ((IS_X86_64) ? X86_64_SIZE_TYPE_P(TYPE) : I386_SIZE_TYPE_P (TYPE))
+
+#define X86_64_GOT_TYPE_P(TYPE) \
+  ((TYPE) == R_X86_64_GOTPCREL \
+   || (TYPE) == R_X86_64_GOTPCRELX \
+   || (TYPE) == R_X86_64_REX_GOTPCRELX \
+   || (TYPE) == R_X86_64_GOT32 \
+   || (TYPE) == R_X86_64_GOT64 \
+   || (TYPE) == R_X86_64_GOTPCREL64 \
+   || (TYPE) == R_X86_64_GOTPLT64)
+#define I386_GOT_TYPE_P(TYPE) \
+  ((TYPE) == R_386_GOT32 || (TYPE) == R_386_GOT32X)
+#define X86_GOT_TYPE_P(IS_X86_64, TYPE) \
+  ((IS_X86_64) ? X86_64_GOT_TYPE_P (TYPE) : I386_GOT_TYPE_P (TYPE))
+
+#define X86_64_RELATIVE_RELOC_TYPE_P(TYPE) \
+  (X86_64_PCREL_TYPE_P (TYPE) \
+   || (TYPE) == R_X86_64_8 \
+   || (TYPE) == R_X86_64_16 \
+   || (TYPE) == R_X86_64_32 \
+   || (TYPE) == R_X86_64_32S \
+   || (TYPE) == R_X86_64_64)
+#define I386_RELATIVE_RELOC_TYPE_P(TYPE) \
+  ((TYPE) == R_386_32 || (TYPE) == R_386_PC32)
+#define X86_RELATIVE_RELOC_TYPE_P(IS_X86_64, TYPE) \
+  ((IS_X86_64) \
+   ? X86_64_RELATIVE_RELOC_TYPE_P (TYPE) \
+   : I386_RELATIVE_RELOC_TYPE_P(TYPE))
+
+#define X86_64_NEED_DYNAMIC_RELOC_TYPE_P(TYPE) \
+  (X86_64_SIZE_TYPE_P (TYPE) \
+   || X86_64_RELATIVE_RELOC_TYPE_P (TYPE))
+#define I386_NEED_DYNAMIC_RELOC_TYPE_P(TYPE) \
+  (I386_SIZE_TYPE_P (TYPE) \
+   || I386_RELATIVE_RELOC_TYPE_P (TYPE) \
+   || (TYPE) == R_386_TLS_IE \
+   || (TYPE) == R_386_TLS_LE \
+   || (TYPE) == R_386_TLS_LE_32)
+#define X86_NEED_DYNAMIC_RELOC_TYPE_P(IS_X86_64, TYPE) \
+  ((IS_X86_64) \
+   ? X86_64_NEED_DYNAMIC_RELOC_TYPE_P (TYPE) \
+   : I386_NEED_DYNAMIC_RELOC_TYPE_P (TYPE))
+
+#define X86_LOCAL_GOT_RELATIVE_RELOC_P(IS_X86_64, INFO, SYM) \
+  (bfd_link_pic (INFO) \
+   && (!(IS_X86_64) || ((SYM) != NULL && (SYM)->st_shndx != SHN_ABS)))
 
 #define PLT_CIE_LENGTH		20
 #define PLT_FDE_LENGTH		36
 #define PLT_FDE_START_OFFSET	4 + PLT_CIE_LENGTH + 8
 #define PLT_FDE_LEN_OFFSET	4 + PLT_CIE_LENGTH + 12
 
+/* This must be the same as sframe_get_hdr_size (sfh).  For x86-64, this value
+   is the same as sizeof (sframe_header) because there is no SFrame auxilliary
+   header.  */
+#define PLT_SFRAME_FDE_START_OFFSET	sizeof (sframe_header)
+
 #define ABI_64_P(abfd) \
   (get_elf_backend_data (abfd)->s->elfclass == ELFCLASS64)
 
@@ -61,12 +132,11 @@
 
 /* Should copy relocation be generated for a symbol.  Don't generate
    copy relocation against a protected symbol defined in a shared
-   object with GNU_PROPERTY_NO_COPY_ON_PROTECTED.  */
+   object.  */
 #define SYMBOL_NO_COPYRELOC(INFO, EH) \
   ((EH)->def_protected \
    && ((EH)->elf.root.type == bfd_link_hash_defined \
        || (EH)->elf.root.type == bfd_link_hash_defweak) \
-   && elf_has_no_copy_on_protected ((EH)->elf.root.u.def.section->owner) \
    && ((EH)->elf.root.u.def.section->owner->flags & DYNAMIC) != 0 \
    && ((EH)->elf.root.u.def.section->flags & SEC_CODE) == 0)
 
@@ -88,10 +158,10 @@
 
    We also need to generate dynamic pointer relocation against
    STT_GNU_IFUNC symbol in the non-code section.  */
-#define NEED_DYNAMIC_RELOCATION_P(INFO, PCREL_PLT, H, SEC, R_TYPE, \
-				  POINTER_TYPE) \
+#define NEED_DYNAMIC_RELOCATION_P(IS_X86_64, INFO, PCREL_PLT, H, SEC, \
+				  R_TYPE, POINTER_TYPE) \
   ((bfd_link_pic (INFO) \
-    && (! X86_PCREL_TYPE_P (R_TYPE) \
+    && (! X86_PCREL_TYPE_P (IS_X86_64, R_TYPE) \
 	|| ((H) != NULL \
 	    && (! (bfd_link_pie (INFO) \
 		   || SYMBOLIC_BIND ((INFO), (H))) \
@@ -119,19 +189,30 @@
    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, \
-				      NEED_COPY_RELOC_IN_PIE, \
+   when PIC is false.  Don't generate dynamic relocations against
+   non-preemptible absolute symbol.  NB: rel_from_abs is set on symbols
+   defined by linker scripts from "dot" (also SEGMENT_START or ORIGIN)
+   outside of an output section statement, which will be converted from
+   absolute to section-relative in set_sym_sections called from
+   ldexp_finalize_syms after ldemul_finish.   */
+#define GENERATE_DYNAMIC_RELOCATION_P(IS_X86_64, 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 \
+	     || (EH)->elf.root.rel_from_abs == 0) \
+	 && ((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 (IS_X86_64, R_TYPE) \
+	 && !X86_SIZE_TYPE_P (IS_X86_64, R_TYPE)) \
+	|| ! SYMBOL_CALLS_LOCAL ((INFO), \
+				 (struct elf_link_hash_entry *) (EH)))) \
    || (ELIMINATE_COPY_RELOCS \
        && !bfd_link_pic (INFO) \
        && (EH) != NULL \
@@ -143,12 +224,15 @@
 		   || (EH)->elf.root.type == bfd_link_hash_undefined)))
 
 /* TRUE if this input relocation should be copied to output.  H->dynindx
-   may be -1 if this symbol was marked to become local.  */
-#define COPY_INPUT_RELOC_P(INFO, H, R_TYPE) \
+   may be -1 if this symbol was marked to become local.  STV_PROTECTED
+   symbols are local. */
+#define COPY_INPUT_RELOC_P(IS_X86_64, INFO, H, R_TYPE) \
   ((H) != NULL \
    && (H)->dynindx != -1 \
-   && (X86_PCREL_TYPE_P (R_TYPE) \
-       || !(bfd_link_executable (INFO) || SYMBOLIC_BIND ((INFO), (H))) \
+   && (X86_PCREL_TYPE_P (IS_X86_64, R_TYPE) \
+       || !(bfd_link_executable (INFO) \
+	    || SYMBOLIC_BIND ((INFO), (H)) \
+	    || ELF_ST_VISIBILITY ((H)->other) == STV_PROTECTED) \
        || !(H)->def_regular))
 
 /* TRUE if this is actually a static link, or it is a -Bsymbolic link
@@ -170,17 +254,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 +330,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.
@@ -252,6 +341,10 @@ struct elf_x86_link_hash_entry
   /* Don't call finish_dynamic_symbol on this symbol.  */
   unsigned int no_finish_dynamic_symbol : 1;
 
+  /* R_*_RELATIVE relocation in GOT for this symbol has been
+     processed.  */
+  unsigned int got_relative_reloc_done : 1;
+
   /* TRUE if symbol is __tls_get_addr.  */
   unsigned int tls_get_addr : 1;
 
@@ -267,6 +360,10 @@ struct elf_x86_link_hash_entry
   /* TRUE if symbol is defined by linker.  */
   unsigned int linker_def : 1;
 
+  /* TRUE if symbol is referenced by a non-GOT/non-PLT relocation in a
+     relocatable object file without indirect external access marker.  */
+  unsigned int non_got_ref_without_indirect_extern_access : 1;
+
   /* TRUE if symbol is referenced by R_386_GOTOFF relocation.  This is
      only used by i386.  */
   unsigned int gotoff_ref : 1;
@@ -291,6 +388,28 @@ struct elf_x86_link_hash_entry
   bfd_vma tlsdesc_got;
 };
 
+#define SFRAME_PLT0_MAX_NUM_FRES 2
+#define SFRAME_PLTN_MAX_NUM_FRES 2
+
+struct elf_x86_sframe_plt
+{
+  unsigned int plt0_entry_size;
+  unsigned int plt0_num_fres;
+  const sframe_frame_row_entry *plt0_fres[SFRAME_PLT0_MAX_NUM_FRES];
+
+  unsigned int pltn_entry_size;
+  unsigned int pltn_num_fres;
+  const sframe_frame_row_entry *pltn_fres[SFRAME_PLTN_MAX_NUM_FRES];
+
+  unsigned int sec_pltn_entry_size;
+  unsigned int sec_pltn_num_fres;
+  const sframe_frame_row_entry *sec_pltn_fres[SFRAME_PLTN_MAX_NUM_FRES];
+
+  unsigned int plt_got_entry_size;
+  unsigned int plt_got_num_fres;
+  const sframe_frame_row_entry *plt_got_fres[SFRAME_PLTN_MAX_NUM_FRES];
+};
+
 struct elf_x86_lazy_plt_layout
 {
   /* The first entry in a lazy procedure linkage table looks like this.  */
@@ -390,6 +509,9 @@ struct elf_x86_plt_layout
   /* 1 has PLT0.  */
   unsigned int has_plt0;
 
+  /* Offset of indirect branch in plt_entry.  */
+  unsigned int plt_indirect_branch_offset;
+
   /* Offsets into plt_entry that are to be replaced with...  */
   unsigned int plt_got_offset;    /* ... address of this symbol in .got. */
 
@@ -414,6 +536,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,12 +549,50 @@ struct elf_x86_plt_layout
 #define elf_x86_hash_entry(ent) \
   ((struct elf_x86_link_hash_entry *)(ent))
 
-enum elf_x86_target_os
+/* Information of an input relocation used to compute its contribution
+   to the DT_RELR section size.  */
+
+struct elf_x86_relative_reloc_record
+{
+  /* The original relocation info.  */
+  Elf_Internal_Rela rel;
+  /* The input or the GOT section where the relocation is applied.  */
+  asection *sec;
+  /* Local symbol info.  NULL for global symbol.  */
+  Elf_Internal_Sym *sym;
+  union
+    {
+      /* Section where the local symbol is defined.  */
+      asection *sym_sec;
+      /* Global symbol hash.  */
+      struct elf_link_hash_entry *h;
+    } u;
+  /* The offset into the output section where the relative relocation
+     will be applied at run-time.  */
+  bfd_vma offset;
+  /* The run-time address.  */
+  bfd_vma address;
+};
+
+struct elf_x86_relative_reloc_data
 {
-  is_normal,
-  is_solaris,
-  is_vxworks,
-  is_nacl
+  bfd_size_type count;
+  bfd_size_type size;
+  struct elf_x86_relative_reloc_record *data;
+};
+
+/* DT_RELR bitmap.  */
+struct elf_dt_relr_bitmap
+{
+  bfd_size_type count;
+  bfd_size_type size;
+  union
+    {
+      /* 32-bit bitmap.  */
+      uint32_t *elf32;
+      /* 64-bit bitmap.  */
+      uint64_t *elf64;
+    } u;
 };
 
 /* x86 ELF linker hash table.  */
@@ -448,6 +609,13 @@ struct elf_x86_link_hash_table
   asection *plt_got;
   asection *plt_got_eh_frame;
 
+  sframe_encoder_ctx *plt_cfe_ctx;
+  asection *plt_sframe;
+  sframe_encoder_ctx *plt_second_cfe_ctx;
+  asection *plt_second_sframe;
+  sframe_encoder_ctx *plt_got_cfe_ctx;
+  asection *plt_got_sframe;
+
   /* Parameters describing PLT generation, lazy or non-lazy.  */
   struct elf_x86_plt_layout plt;
 
@@ -457,6 +625,10 @@ struct elf_x86_link_hash_table
   /* Parameters describing non-lazy PLT generation.  */
   const struct elf_x86_non_lazy_plt_layout *non_lazy_plt;
 
+  /* The .sframe helper object for .plt section.
+     This is used for x86-64 only.  */
+  const struct elf_x86_sframe_plt *sframe_plt;
+
   union
   {
     bfd_signed_vma refcount;
@@ -466,9 +638,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,32 +645,37 @@ 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 .rela.tls/.rel.tls section for R_386_TLS_DESC or R_X86_64_TLSDESC
+     relocation.  */
+  asection *rel_tls_desc;
 
   /* The (unloaded but important) .rel.plt.unloaded section on VxWorks.
      This is used for i386 only.  */
   asection *srelplt2;
 
-  /* The index of the next unused R_386_TLS_DESC slot in .rel.plt.  This
-     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;
+  /* DT_RELR bitmap.  */
+  struct elf_dt_relr_bitmap dt_relr_bitmap;
+
+  /* Relative relocation data.  */
+  struct elf_x86_relative_reloc_data relative_reloc;
+
+  /* Unaligned relative relocation data.  */
+  struct elf_x86_relative_reloc_data unaligned_relative_reloc;
+
+  /* Number of relative reloc generation pass.  */
+  unsigned int generate_relative_reloc_pass;
+
+  /* TRUE if inputs have R_386_TLS_DESC_CALL or R_X86_64_TLSDESC_CALL
+     relocation.  */
+  unsigned int has_tls_desc_call : 1;
+
+  /* TRUE if inputs call ___tls_get_addr.  This is only used for i386.  */
+  unsigned int has_tls_get_addr_call : 1;
 
    /* Value used to fill the unused bytes of the first PLT entry.  This
       is only used for i386.  */
@@ -520,35 +694,24 @@ 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;
+  bool (*is_reloc_section) (const char *);
   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;
+  unsigned int relative_r_type;
   int dynamic_interpreter_size;
   const char *dynamic_interpreter;
   const char *tls_get_addr;
+  const char *relative_r_name;
+  const char *ax_register;
+  void (*elf_append_reloc) (bfd *, asection *, Elf_Internal_Rela *);
+  void (*elf_write_addend) (bfd *, uint64_t, void *);
+  void (*elf_write_addend_in_got) (bfd *, uint64_t, void *);
 
   /* Options passed from the linker.  */
   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.  */
@@ -563,6 +726,22 @@ struct elf_x86_init_table
   /* The non-lazy PLT layout for IBT.  */
   const struct elf_x86_non_lazy_plt_layout *non_lazy_ibt_plt;
 
+  /* The .sframe helper object for lazy .plt section.
+     This is used for x86-64 only.  */
+  const struct elf_x86_sframe_plt *sframe_lazy_plt;
+
+  /* The .sframe helper object for non-lazy .plt section.
+     This is used for x86-64 only.  */
+  const struct elf_x86_sframe_plt *sframe_non_lazy_plt;
+
+  /* The .sframe helper object for lazy IBT .plt section.
+     This is used for x86-64 only.  */
+  const struct elf_x86_sframe_plt *sframe_lazy_ibt_plt;
+
+  /* The .sframe helper object for non-lazy IBT .plt section.
+     This is used for x86-64 only.  */
+  const struct elf_x86_sframe_plt *sframe_non_lazy_ibt_plt;
+
   bfd_byte plt0_pad_byte;
 
   bfd_vma (*r_info) (bfd_vma, bfd_vma);
@@ -578,6 +757,10 @@ struct elf_x86_obj_tdata
 
   /* GOTPLT entries for TLS descriptors.  */
   bfd_vma *local_tlsdesc_gotent;
+
+  /* R_*_RELATIVE relocation in GOT for this local symbol has been
+     processed.  */
+  char *relative_reloc_done;
 };
 
 enum elf_x86_plt_type
@@ -601,6 +784,20 @@ struct elf_x86_plt
   long count;
 };
 
+enum elf_x86_tls_error_type
+{
+  elf_x86_tls_error_none,
+  elf_x86_tls_error_add_mov,
+  elf_x86_tls_error_add_movrs,
+  elf_x86_tls_error_add_sub_mov,
+  elf_x86_tls_error_indirect_call,
+  elf_x86_tls_error_lea,
+  elf_x86_tls_error_yes
+};
+
+/* 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)
 
@@ -610,103 +807,150 @@ struct elf_x86_plt
 #define elf_x86_local_tlsdesc_gotent(abfd) \
   (elf_x86_tdata (abfd)->local_tlsdesc_gotent)
 
+#define elf_x86_relative_reloc_done(abfd) \
+  (elf_x86_tdata (abfd)->relative_reloc_done)
+
 #define elf_x86_compute_jump_table_size(htab) \
   ((htab)->elf.srelplt->reloc_count * (htab)->got_entry_size)
 
 #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)
+
+/* Rename some of the generic section flags to better document how they
+   are used here.  */
+#define check_relocs_failed	sec_flg0
+#define relative_reloc_packed	sec_flg1
 
-extern bfd_boolean _bfd_x86_elf_mkobject
-  (bfd *);
+extern bool _bfd_x86_elf_mkobject
+  (bfd *) ATTRIBUTE_HIDDEN;
 
 extern void _bfd_x86_elf_set_tls_module_base
-  (struct bfd_link_info *);
+  (struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
 extern bfd_vma _bfd_x86_elf_dtpoff_base
-  (struct bfd_link_info *);
+  (struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_readonly_dynrelocs
-  (struct elf_link_hash_entry *, void *);
+extern bool _bfd_x86_elf_readonly_dynrelocs
+  (struct elf_link_hash_entry *, void *) ATTRIBUTE_HIDDEN;
 
 extern struct elf_link_hash_entry * _bfd_elf_x86_get_local_sym_hash
   (struct elf_x86_link_hash_table *, bfd *, const Elf_Internal_Rela *,
-   bfd_boolean);
+   bool) ATTRIBUTE_HIDDEN;
 
 extern hashval_t _bfd_x86_elf_local_htab_hash
-  (const void *);
+  (const void *) ATTRIBUTE_HIDDEN;
 
 extern int _bfd_x86_elf_local_htab_eq
-  (const void *, const void *);
+  (const void *, const void *) ATTRIBUTE_HIDDEN;
 
 extern struct bfd_hash_entry * _bfd_x86_elf_link_hash_newfunc
-  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *)
+  ATTRIBUTE_HIDDEN;
 
 extern struct bfd_link_hash_table * _bfd_x86_elf_link_hash_table_create
-  (bfd *);
+  (bfd *) ATTRIBUTE_HIDDEN;
 
 extern int _bfd_x86_elf_compare_relocs
-  (const void *, const void *);
+  (const void *, const void *) ATTRIBUTE_HIDDEN;
+
+extern bool _bfd_x86_elf_link_check_relocs
+  (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
+
+extern bool _bfd_x86_elf_check_relocs
+  (bfd *, struct bfd_link_info *, asection *,
+   const Elf_Internal_Rela *) ATTRIBUTE_HIDDEN;
+
+extern bool _bfd_x86_elf_link_relax_section
+  (bfd *, asection *, struct bfd_link_info *, bool *) ATTRIBUTE_HIDDEN;
+
+extern bool _bfd_elf_x86_size_relative_relocs
+  (struct bfd_link_info *, bool *) ATTRIBUTE_HIDDEN;
+
+extern bool _bfd_elf_x86_finish_relative_relocs
+  (struct bfd_link_info *) ATTRIBUTE_HIDDEN;
+
+extern asection * _bfd_elf_x86_get_reloc_section
+  (bfd *, const char *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_link_check_relocs
-  (bfd *, struct bfd_link_info *);
+extern void _bfd_elf32_write_addend 
+  (bfd *, uint64_t, void *) ATTRIBUTE_HIDDEN;
+extern void _bfd_elf64_write_addend
+  (bfd *, uint64_t, void *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_size_dynamic_sections
-  (bfd *, struct bfd_link_info *);
+extern bool _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 *, bool *) ATTRIBUTE_HIDDEN;
+
+extern bool _bfd_x86_elf_late_size_sections
+  (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
 extern struct elf_x86_link_hash_table *_bfd_x86_elf_finish_dynamic_sections
-  (bfd *, struct bfd_link_info *);
+  (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_always_size_sections
-  (bfd *, struct bfd_link_info *);
+extern bool _bfd_x86_elf_early_size_sections
+  (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
 extern void _bfd_x86_elf_merge_symbol_attribute
-  (struct elf_link_hash_entry *, const Elf_Internal_Sym *,
-   bfd_boolean, bfd_boolean);
+  (struct elf_link_hash_entry *, unsigned int, bool, bool)
+  ATTRIBUTE_HIDDEN;
 
 extern void _bfd_x86_elf_copy_indirect_symbol
   (struct bfd_link_info *, struct elf_link_hash_entry *,
-   struct elf_link_hash_entry *);
+   struct elf_link_hash_entry *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_fixup_symbol
-  (struct bfd_link_info *, struct elf_link_hash_entry *);
+extern bool _bfd_x86_elf_fixup_symbol
+  (struct bfd_link_info *, struct elf_link_hash_entry *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_hash_symbol
-  (struct elf_link_hash_entry *);
+extern bool _bfd_x86_elf_hash_symbol
+  (struct elf_link_hash_entry *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_adjust_dynamic_symbol
-  (struct bfd_link_info *, struct elf_link_hash_entry *);
+extern bool _bfd_x86_elf_adjust_dynamic_symbol
+  (struct bfd_link_info *, struct elf_link_hash_entry *) ATTRIBUTE_HIDDEN;
 
 extern void _bfd_x86_elf_hide_symbol
-  (struct bfd_link_info *, struct elf_link_hash_entry *, bfd_boolean);
+  (struct bfd_link_info *, struct elf_link_hash_entry *,
+   bool) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_link_symbol_references_local
-  (struct bfd_link_info *, struct elf_link_hash_entry *);
+extern bool _bfd_x86_elf_link_symbol_references_local
+  (struct bfd_link_info *, struct elf_link_hash_entry *) ATTRIBUTE_HIDDEN;
 
 extern asection * _bfd_x86_elf_gc_mark_hook
   (asection *, struct bfd_link_info *, Elf_Internal_Rela *,
-   struct elf_link_hash_entry *, Elf_Internal_Sym *);
+   struct elf_link_hash_entry *, Elf_Internal_Sym *) ATTRIBUTE_HIDDEN;
 
 extern long _bfd_x86_elf_get_synthetic_symtab
   (bfd *, long, long, bfd_vma, struct elf_x86_plt [], asymbol **,
-   asymbol **);
+   asymbol **) ATTRIBUTE_HIDDEN;
 
 extern enum elf_property_kind _bfd_x86_elf_parse_gnu_properties
-  (bfd *, unsigned int, bfd_byte *, unsigned int);
+  (bfd *, unsigned int, bfd_byte *, unsigned int) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_x86_elf_merge_gnu_properties
-  (struct bfd_link_info *, bfd *, bfd *, elf_property *, elf_property *);
+extern bool _bfd_x86_elf_merge_gnu_properties
+  (struct bfd_link_info *, bfd *, bfd *, elf_property *, elf_property *)
+  ATTRIBUTE_HIDDEN;
 
 extern void _bfd_x86_elf_link_fixup_gnu_properties
-  (struct bfd_link_info *, elf_property_list **);
+  (struct bfd_link_info *, elf_property_list **) ATTRIBUTE_HIDDEN;
 
 extern bfd * _bfd_x86_elf_link_setup_gnu_properties
-  (struct bfd_link_info *, struct elf_x86_init_table *);
+  (struct bfd_link_info *, struct elf_x86_init_table *) ATTRIBUTE_HIDDEN;
 
 extern void _bfd_x86_elf_link_fixup_ifunc_symbol
   (struct bfd_link_info *, struct elf_x86_link_hash_table *,
-   struct elf_link_hash_entry *, Elf_Internal_Sym *sym);
+   struct elf_link_hash_entry *, Elf_Internal_Sym *sym) ATTRIBUTE_HIDDEN;
+
+extern void _bfd_x86_elf_link_report_relative_reloc
+  (struct bfd_link_info *, asection *, struct elf_link_hash_entry *,
+   Elf_Internal_Sym *, const char *, const void *) ATTRIBUTE_HIDDEN;
+
+extern void _bfd_x86_elf_link_report_tls_transition_error
+  (struct bfd_link_info *, bfd *, asection *, Elf_Internal_Shdr *,
+   struct elf_link_hash_entry *, Elf_Internal_Sym *,
+   const Elf_Internal_Rela *, const char *, const char *,
+   enum elf_x86_tls_error_type);
 
 #define bfd_elf64_mkobject \
   _bfd_x86_elf_mkobject
@@ -720,11 +964,15 @@ extern void _bfd_x86_elf_link_fixup_ifun
   _bfd_x86_elf_link_check_relocs
 #define bfd_elf32_bfd_link_check_relocs \
   _bfd_x86_elf_link_check_relocs
-
-#define elf_backend_size_dynamic_sections \
-  _bfd_x86_elf_size_dynamic_sections
-#define elf_backend_always_size_sections \
-  _bfd_x86_elf_always_size_sections
+#define bfd_elf32_bfd_relax_section \
+  _bfd_x86_elf_link_relax_section
+#define bfd_elf64_bfd_relax_section \
+  _bfd_x86_elf_link_relax_section
+
+#define elf_backend_check_relocs \
+  _bfd_x86_elf_check_relocs
+#define elf_backend_late_size_sections \
+  _bfd_x86_elf_late_size_sections
 #define elf_backend_merge_symbol_attribute \
   _bfd_x86_elf_merge_symbol_attribute
 #define elf_backend_copy_indirect_symbol \
@@ -745,3 +993,37 @@ extern void _bfd_x86_elf_link_fixup_ifun
   _bfd_x86_elf_merge_gnu_properties
 #define elf_backend_fixup_gnu_properties \
   _bfd_x86_elf_link_fixup_gnu_properties
+#define elf_backend_size_relative_relocs \
+  _bfd_elf_x86_size_relative_relocs
+#define elf_backend_finish_relative_relocs \
+  _bfd_elf_x86_finish_relative_relocs
+#define elf_backend_get_reloc_section \
+  _bfd_elf_x86_get_reloc_section
+#define elf_backend_use_mmap true
+
+#define ELF_P_ALIGN ELF_MINPAGESIZE
+
+/* Allocate x86 GOT info for local symbols.  */
+
+static inline bool
+elf_x86_allocate_local_got_info (bfd *abfd, bfd_size_type count)
+{
+  bfd_signed_vma *local_got_refcounts = elf_local_got_refcounts (abfd);
+  if (local_got_refcounts == NULL)
+    {
+      bfd_size_type size = count * (sizeof (bfd_signed_vma)
+				    + sizeof (bfd_vma)
+				    + 2 * sizeof(char));
+      local_got_refcounts = (bfd_signed_vma *) bfd_zalloc (abfd, size);
+      if (local_got_refcounts == NULL)
+	return false;
+      elf_local_got_refcounts (abfd) = local_got_refcounts;
+      elf_x86_local_tlsdesc_gotent (abfd) =
+	(bfd_vma *) (local_got_refcounts + count);
+      elf_x86_local_got_tls_type (abfd) =
+	(char *) (local_got_refcounts + 2 * count);
+      elf_x86_relative_reloc_done (abfd) =
+	((char *) (local_got_refcounts + 2 * count)) + count;
+    }
+  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.20200303/bfd/format.c ./bfd/format.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/format.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/format.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generic BFD support for file formats.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -46,6 +46,7 @@ SUBSECTION
 #include "sysdep.h"
 #include "bfd.h"
 #include "libbfd.h"
+#include "plugin.h"
 
 /* IMPORT from targets.c.  */
 extern const size_t _bfd_target_vector_entries;
@@ -55,7 +56,7 @@ FUNCTION
 	bfd_check_format
 
 SYNOPSIS
-	bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
+	bool bfd_check_format (bfd *abfd, bfd_format format);
 
 DESCRIPTION
 	Verify if the file attached to the BFD @var{abfd} is compatible
@@ -86,9 +87,16 @@ DESCRIPTION
 
 	o <<bfd_error_file_ambiguously_recognized>> -
 	more than one backend recognised the file format.
+
+	When calling bfd_check_format (or bfd_check_format_matches),
+	any underlying file descriptor will be kept open for the
+	duration of the call.  This is done to avoid races when
+	another thread calls bfd_cache_close_all.  In this scenario,
+	the thread calling bfd_check_format must call bfd_cache_close
+	itself.
 */
 
-bfd_boolean
+bool
 bfd_check_format (bfd *abfd, bfd_format format)
 {
   return bfd_check_format_matches (abfd, format, NULL);
@@ -99,13 +107,19 @@ struct bfd_preserve
   void *marker;
   void *tdata;
   flagword flags;
+  const struct bfd_iovec *iovec;
+  void *iostream;
   const struct bfd_arch_info *arch_info;
+  const struct bfd_build_id *build_id;
+  bfd_cleanup cleanup;
   struct bfd_section *sections;
   struct bfd_section *section_last;
   unsigned int section_count;
   unsigned int section_id;
+  unsigned int symcount;
+  bool read_only;
+  bfd_vma start_address;
   struct bfd_hash_table section_htab;
-  const struct bfd_build_id *build_id;
 };
 
 /* When testing an object for compatibility with a particular target
@@ -117,59 +131,110 @@ struct bfd_preserve
    subset of the bfd state works in practice.  This function stores
    the subset.  */
 
-static bfd_boolean
-bfd_preserve_save (bfd *abfd, struct bfd_preserve *preserve)
+static bool
+bfd_preserve_save (bfd *abfd, struct bfd_preserve *preserve,
+		   bfd_cleanup cleanup)
 {
   preserve->tdata = abfd->tdata.any;
   preserve->arch_info = abfd->arch_info;
   preserve->flags = abfd->flags;
+  preserve->iovec = abfd->iovec;
+  preserve->iostream = abfd->iostream;
   preserve->sections = abfd->sections;
   preserve->section_last = abfd->section_last;
   preserve->section_count = abfd->section_count;
   preserve->section_id = _bfd_section_id;
+  preserve->symcount = abfd->symcount;
+  preserve->read_only = abfd->read_only;
+  preserve->start_address = abfd->start_address;
   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;
+    return false;
 
   return bfd_hash_table_init (&abfd->section_htab, bfd_section_hash_newfunc,
 			      sizeof (struct section_hash_entry));
 }
 
+/* A back-end object_p function may flip a bfd from file backed to
+   in-memory, eg. pe_ILF_object_p.  In that case to restore the
+   original IO state we need to reopen the file.  Conversely, if we
+   are restoring a previously matched pe ILF format and have been
+   checking further target matches using file IO then we need to close
+   the file and detach the bfd from the cache lru list.  */
+
+static void
+io_reinit (bfd *abfd, struct bfd_preserve *preserve)
+{
+  if (abfd->iovec != preserve->iovec)
+    {
+      /* Handle file backed to in-memory transition.  bfd_cache_close
+	 won't do anything unless abfd->iovec is the cache_iovec.
+	 Don't be tempted to call iovec->bclose here.  We don't want
+	 to call memory_bclose, which would free the bim.  The bim
+	 must be kept if bfd_check_format_matches is going to decide
+	 later that the PE format needing it is in fact the correct
+	 target match.  */
+      bfd_cache_close (abfd);
+      abfd->iovec = preserve->iovec;
+      abfd->iostream = preserve->iostream;
+
+      /* Handle in-memory to file backed transition.  */
+      if ((abfd->flags & BFD_CLOSED_BY_CACHE) != 0
+	  && (abfd->flags & BFD_IN_MEMORY) != 0
+	  && (preserve->flags & BFD_CLOSED_BY_CACHE) == 0
+	  && (preserve->flags & BFD_IN_MEMORY) == 0)
+	bfd_open_file (abfd);
+    }
+  abfd->flags = preserve->flags;
+}
+
 /* 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,
+	    struct bfd_preserve *preserve, 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;
+  io_reinit (abfd, preserve);
+  abfd->symcount = 0;
+  abfd->read_only = 0;
+  abfd->start_address = 0;
+  abfd->build_id = NULL;
   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);
 
   abfd->tdata.any = preserve->tdata;
   abfd->arch_info = preserve->arch_info;
-  abfd->flags = preserve->flags;
+  io_reinit (abfd, preserve);
   abfd->section_htab = preserve->section_htab;
   abfd->sections = preserve->sections;
   abfd->section_last = preserve->section_last;
   abfd->section_count = preserve->section_count;
   _bfd_section_id = preserve->section_id;
+  abfd->symcount = preserve->symcount;
+  abfd->read_only = preserve->read_only;
+  abfd->start_address = preserve->start_address;
   abfd->build_id = preserve->build_id;
 
   /* bfd_release frees all memory more recently bfd_alloc'd than
      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 +243,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
@@ -186,40 +260,203 @@ bfd_preserve_finish (bfd *abfd ATTRIBUTE
   preserve->marker = NULL;
 }
 
+static void
+print_warnmsg (struct per_xvec_message **list)
+{
+  for (struct per_xvec_message *warn = *list; warn; warn = warn->next)
+    _bfd_error_handler ("%s", warn->message);
+}
+
+static void
+clear_warnmsg (struct per_xvec_message **list)
+{
+  struct per_xvec_message *warn = *list;
+  while (warn)
+    {
+      struct per_xvec_message *next = warn->next;
+      free (warn);
+      warn = next;
+    }
+  *list = NULL;
+}
+
+/* Free all the storage in LIST.  Note that the first element of LIST
+   is special and is assumed to be stack-allocated.  TARG is used for
+   re-issuing warning messages.  If TARG is PER_XVEC_NO_TARGET, then
+   it acts like a sort of wildcard -- messages are reissued if all
+   targets with messages have identical messages.  One copy of the
+   messages are then reissued.  If TARG is anything else, then only
+   messages associated with TARG are emitted.  */
+
+static void
+print_and_clear_messages (struct per_xvec_messages *list,
+			  const bfd_target *targ)
+{
+  struct per_xvec_messages *iter;
+
+  if (targ == PER_XVEC_NO_TARGET)
+    {
+      iter = list->next;
+      while (iter != NULL)
+	{
+	  struct per_xvec_message *msg1 = list->messages;
+	  struct per_xvec_message *msg2 = iter->messages;
+	  do
+	    {
+	      if (strcmp (msg1->message, msg2->message))
+		break;
+	      msg1 = msg1->next;
+	      msg2 = msg2->next;
+	    } while (msg1 && msg2);
+	  if (msg1 || msg2)
+	    break;
+	  iter = iter->next;
+	}
+      if (iter == NULL)
+	targ = list->targ;
+    }
+
+  iter = list;
+  while (iter != NULL)
+    {
+      struct per_xvec_messages *next = iter->next;
+
+      if (iter->targ == targ)
+	print_warnmsg (&iter->messages);
+      clear_warnmsg (&iter->messages);
+      if (iter != list)
+	free (iter);
+      iter = next;
+    }
+
+  /* Don't retain a pointer to free'd memory.  */
+  list->next = NULL;
+}
+
+/* Discard all messages associated with TARG in LIST.  Unlike
+   print_and_clear_messages, PER_XVEC_NO_TARGET is not valid for TARG.  */
+
+static void
+clear_messages (struct per_xvec_messages *list,
+		const bfd_target *targ)
+{
+  struct per_xvec_messages *iter;
+
+  for (iter = list; iter != NULL; iter = iter->next)
+    {
+      if (iter->targ == targ)
+	clear_warnmsg (&iter->messages);
+    }
+}
+
+/* This a copy of lto_section defined in GCC (lto-streamer.h).  */
+
+struct lto_section
+{
+  int16_t major_version;
+  int16_t minor_version;
+  unsigned char slim_object;
+
+  /* Flags is a private field that is not defined publicly.  */
+  uint16_t flags;
+};
+
+/* Set lto_type in ABFD.  */
+
+static void
+bfd_set_lto_type (bfd *abfd)
+{
+  if (abfd->format == bfd_object
+      && abfd->lto_type == lto_non_object
+      && (abfd->flags
+	  & (DYNAMIC
+	     | (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+		? EXEC_P : 0))) == 0)
+    {
+      asection *sec = abfd->sections;
+      enum bfd_lto_object_type type = lto_non_ir_object;
+      if (sec == NULL)
+	{
+	  /* If there are no sections, check for slim LLVM IR object whose
+	     first 4 bytes are: 'B', 'C', 0xc0, 0xde.  */
+	  bfd_byte llvm_ir_magic[4];
+	  if (bfd_seek (abfd, 0, SEEK_SET) == 0
+	      && bfd_read (llvm_ir_magic, 4, abfd) == 4
+	      && llvm_ir_magic[0] == 'B'
+	      && llvm_ir_magic[1] == 'C'
+	      && llvm_ir_magic[2] == 0xc0
+	      && llvm_ir_magic[3] == 0xde)
+	    type = lto_slim_ir_object;
+	}
+      else
+	{
+	  struct lto_section lsection = { 0, 0, 0, 0 };
+	  /* GCC uses .gnu.lto_.lto.<some_hash> as a LTO bytecode
+	     information section.  */
+	  for (; sec != NULL; sec = sec->next)
+	    if (strcmp (sec->name, GNU_OBJECT_ONLY_SECTION_NAME) == 0)
+	      {
+		type = lto_mixed_object;
+		abfd->object_only_section = sec;
+		break;
+	      }
+	    else if (strcmp (sec->name, ".llvm.lto") == 0)
+	      {
+		type = lto_fat_ir_object;
+		break;
+	      }
+	    else if (lsection.major_version == 0
+		     && startswith (sec->name, ".gnu.lto_.lto.")
+		     && bfd_get_section_contents (abfd, sec, &lsection, 0,
+						  sizeof (struct lto_section)))
+	      {
+		if (lsection.slim_object)
+		  type = lto_slim_ir_object;
+		else
+		  type = lto_fat_ir_object;
+	  }
+	}
+
+      abfd->lto_type = type;
+    }
+}
+
 /*
 FUNCTION
 	bfd_check_format_matches
 
 SYNOPSIS
-	bfd_boolean bfd_check_format_matches
+	bool bfd_check_format_matches
 	  (bfd *abfd, bfd_format format, char ***matching);
 
 DESCRIPTION
 	Like <<bfd_check_format>>, except when it returns FALSE with
-	<<bfd_errno>> set to <<bfd_error_file_ambiguously_recognized>>.  In that
-	case, if @var{matching} is not NULL, it will be filled in with
-	a NULL-terminated list of the names of the formats that matched,
-	allocated with <<malloc>>.
+	<<bfd_errno>> set to <<bfd_error_file_ambiguously_recognized>>.
+	In that case, if @var{matching} is not NULL, it will be filled
+	in with a NULL-terminated list of the names of the formats
+	that matched, allocated with <<malloc>>.
 	Then the user may choose a format and try again.
 
 	When done with the list that @var{matching} points to, the caller
 	should free it.
 */
 
-bfd_boolean
+bool
 bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching)
 {
   extern const bfd_target binary_vec;
-#if BFD_SUPPORTS_PLUGINS
-  extern const bfd_target plugin_vec;
-#endif
   const bfd_target * const *target;
   const bfd_target **matching_vector = NULL;
   const bfd_target *save_targ, *right_targ, *ar_right_targ, *match_targ;
+  const bfd_target *fail_targ;
   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;
+  struct per_xvec_messages messages = { abfd, PER_XVEC_NO_TARGET, NULL, NULL };
+  struct per_xvec_messages *orig_messages;
+  bool old_in_format_matches;
 
   if (matching != NULL)
     *matching = NULL;
@@ -228,7 +465,7 @@ bfd_check_format_matches (bfd *abfd, bfd
       || (unsigned int) abfd->format >= (unsigned int) bfd_type_end)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   if (abfd->format != bfd_unknown)
@@ -236,48 +473,105 @@ 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);
       if (!matching_vector)
-	return FALSE;
+	return false;
+    }
+
+  /* Avoid clashes with bfd_cache_close_all running in another
+     thread.  */
+  if (!bfd_cache_set_uncloseable (abfd, true, &old_in_format_matches))
+    {
+      free (matching_vector);
+      return false;
+    }
+
+  /* Locking is required here in order to manage _bfd_section_id.  */
+  if (!bfd_lock ())
+    {
+      bfd_cache_set_uncloseable (abfd, old_in_format_matches, NULL);
+      free (matching_vector);
+      return false;
     }
 
   /* Presume the answer is yes.  */
   abfd->format = format;
   save_targ = abfd->xvec;
-  preserve.marker = NULL;
 
-  /* If the target type was explicitly specified, just check that target.  */
-  if (!abfd->target_defaulted)
+  /* Don't report errors on recursive calls checking the first element
+     of an archive.  */
+  orig_messages = _bfd_set_error_handler_caching (&messages);
+
+  preserve_match.marker = NULL;
+  if (!bfd_preserve_save (abfd, &preserve, NULL))
+    goto err_ret;
+
+  /* First try matching the plugin target if appropriate.  Next try
+     the current target.  The current target may have been set due to
+     a user option, or due to the linker trying optimistically to load
+     input files for the same target as the output.  Either will
+     have target_defaulted false.  Failing that, bfd_find_target will
+     have chosen a default target, and target_defaulted will be true.  */
+  fail_targ = NULL;
+  if (bfd_plugin_enabled ()
+      && abfd->format == bfd_object
+      && abfd->target_defaulted
+      && !abfd->is_linker_input
+      && abfd->plugin_format != bfd_plugin_no)
     {
-      if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)	/* rewind! */
+      if (bfd_seek (abfd, 0, SEEK_SET) != 0)
 	goto err_ret;
 
-      right_targ = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
-
-      if (right_targ)
+      BFD_ASSERT (save_targ != bfd_plugin_vec ());
+      abfd->xvec = bfd_plugin_vec ();
+      bfd_set_error (bfd_error_no_error);
+      cleanup = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+      if (cleanup)
 	goto ok_ret;
 
-      /* For a long time the code has dropped through to check all
-	 targets if the specified target was wrong.  I don't know why,
-	 and I'm reluctant to change it.  However, in the case of an
-	 archive, it can cause problems.  If the specified target does
-	 not permit archives (e.g., the binary target), then we should
-	 not allow some other target to recognize it as an archive, but
-	 should instead allow the specified target to recognize it as an
-	 object.  When I first made this change, it broke the PE target,
-	 because the specified pei-i386 target did not recognize the
-	 actual pe-i386 archive.  Since there may be other problems of
-	 this sort, I changed this test to check only for the binary
-	 target.  */
-      if (format == bfd_archive && save_targ == &binary_vec)
-	goto err_unrecog;
+      bfd_reinit (abfd, initial_section_id, &preserve, cleanup);
+      bfd_release (abfd, preserve.marker);
+      preserve.marker = bfd_alloc (abfd, 1);
+      abfd->xvec = save_targ;
     }
 
-  /* Since the target type was defaulted, check them all in the hope
-     that one will be uniquely recognized.  */
+  /* bfd_plugin_no excluding the plugin target is an optimisation.
+     The test can be removed if desired.  */
+  if (!(abfd->plugin_format == bfd_plugin_no
+	&& bfd_plugin_target_p (save_targ)))
+    {
+      if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+	goto err_ret;
+
+      bfd_set_error (bfd_error_no_error);
+      cleanup = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+      if (cleanup)
+	{
+	  if (abfd->format != bfd_archive
+	      /* An archive with object files matching the archive
+		 target is OK.  Other archives should be further
+		 tested.  */
+	      || (bfd_has_map (abfd)
+		  && bfd_get_error () != bfd_error_wrong_object_format)
+	      /* Empty archives can match the current target.
+		 Attempting to read the armap will result in a file
+		 truncated error.  */
+	      || (!bfd_has_map (abfd)
+		  && bfd_get_error () == bfd_error_file_truncated))
+	    goto ok_ret;
+	}
+      else
+	{
+	  if (!abfd->target_defaulted && !abfd->is_linker_input)
+	    goto err_unrecog;
+	  fail_targ = save_targ;
+	}
+    }
+
+  /* Check all targets in the hope that one will be recognized.  */
   right_targ = NULL;
   ar_right_targ = NULL;
   match_targ = NULL;
@@ -288,53 +582,56 @@ 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
-	 alternative since we want to properly set the input format
-	 before allowing a plugin to claim the file.  Also, don't
-	 check the default target twice.  */
+	 searching.  Also, don't check the current target twice when
+	 it has failed already.
+	 Don't match the plugin target during linking if we have
+	 another alternative since we want to properly set the input
+	 format before allowing a plugin to claim the file.
+	 Also as an optimisation don't match the plugin target when
+	 abfd->plugin_format is set to bfd_plugin_no.  (This occurs
+	 when LTO sections have been stripped or when we have a
+	 recursive call here from the plugin object_p via
+	 bfd_plugin_get_symbols_in_object_only.)  */
       if (*target == &binary_vec
-#if BFD_SUPPORTS_PLUGINS
-	  || (match_count != 0 && *target == &plugin_vec)
-#endif
-	  || (!abfd->target_defaulted && *target == save_targ))
+	  || *target == fail_targ
+	  || (((abfd->is_linker_input && match_count != 0)
+	       || abfd->plugin_format == bfd_plugin_no)
+	      && bfd_plugin_target_p (*target)))
 	continue;
 
       /* 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, &preserve, 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;
 
-      if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+      /* It is possible that targets appear multiple times in
+	 bfd_target_vector.  If this is the case, then we want to avoid
+	 accumulating duplicate messages for a target in MESSAGES, so
+	 discard any previous messages associated with this target.  */
+      clear_messages (&messages, abfd->xvec);
+
+      if (bfd_seek (abfd, 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)
-	{
-	  int match_priority = temp->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
-	     with an underlying object format will be claimed
-	     separately by the plugin.  */
-	  if (*target == &plugin_vec)
-	    match_priority = (*target)->match_priority;
-#endif
-
-	  match_targ = temp;
-	  if (preserve.marker != NULL)
-	    bfd_preserve_finish (abfd, &preserve);
+      bfd_set_error (bfd_error_no_error);
+      cleanup = BFD_SEND_FMT (abfd, _bfd_check_format, (abfd));
+      if (cleanup)
+	{
+	  int match_priority = abfd->xvec->match_priority;
 
 	  if (abfd->format != bfd_archive
 	      || (bfd_has_map (abfd)
@@ -343,11 +640,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 +655,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 +671,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 +748,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);
-	  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+	  bfd_reinit (abfd, initial_section_id, &preserve, cleanup);
+	  bfd_release (abfd, preserve.marker);
+	  if (bfd_seek (abfd, 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:
@@ -473,13 +778,23 @@ bfd_check_format_matches (bfd *abfd, bfd
 	 We can not set this flag until after checking the format,
 	 because it will interfere with creation of BFD sections.  */
       if (abfd->direction == both_direction)
-	abfd->output_has_begun = TRUE;
+	abfd->output_has_begun = true;
+
+      free (matching_vector);
+      if (preserve_match.marker != NULL)
+	bfd_preserve_finish (abfd, &preserve_match);
+      bfd_preserve_finish (abfd, &preserve);
+      _bfd_restore_error_handler_caching (orig_messages);
 
-      if (matching_vector)
-	free (matching_vector);
+      print_and_clear_messages (&messages, abfd->xvec);
+
+      bfd_set_lto_type (abfd);
 
       /* File position has moved, BTW.  */
-      return TRUE;
+      bool ret = bfd_cache_set_uncloseable (abfd, old_in_format_matches, NULL);
+      if (!bfd_unlock ())
+	return false;
+      return ret;
     }
 
   if (match_count == 0)
@@ -487,13 +802,12 @@ 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);
-      return FALSE;
+      free (matching_vector);
+      goto out;
     }
 
   /* Restore original target type and format.  */
@@ -513,7 +827,20 @@ bfd_check_format_matches (bfd *abfd, bfd
 	  *(const char **) &matching_vector[match_count] = name;
 	}
     }
-  return FALSE;
+  else
+    free (matching_vector);
+  if (cleanup)
+    cleanup (abfd);
+ out:
+  if (preserve_match.marker != NULL)
+    bfd_preserve_finish (abfd, &preserve_match);
+  if (preserve.marker != NULL)
+    bfd_preserve_restore (abfd, &preserve);
+  _bfd_restore_error_handler_caching (orig_messages);
+  print_and_clear_messages (&messages, PER_XVEC_NO_TARGET);
+  bfd_cache_set_uncloseable (abfd, old_in_format_matches, NULL);
+  bfd_unlock ();
+  return false;
 }
 
 /*
@@ -521,7 +848,7 @@ FUNCTION
 	bfd_set_format
 
 SYNOPSIS
-	bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
+	bool bfd_set_format (bfd *abfd, bfd_format format);
 
 DESCRIPTION
 	This function sets the file format of the BFD @var{abfd} to the
@@ -530,14 +857,14 @@ DESCRIPTION
 	is not open for writing, then an error occurs.
 */
 
-bfd_boolean
+bool
 bfd_set_format (bfd *abfd, bfd_format format)
 {
   if (bfd_read_p (abfd)
       || (unsigned int) abfd->format >= (unsigned int) bfd_type_end)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   if (abfd->format != bfd_unknown)
@@ -549,10 +876,10 @@ bfd_set_format (bfd *abfd, bfd_format fo
   if (!BFD_SEND_FMT (abfd, _bfd_set_format, (abfd)))
     {
       abfd->format = bfd_unknown;
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  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.20200303/bfd/gen-aout.c ./bfd/gen-aout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/gen-aout.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/gen-aout.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Generate parameters for an a.out system.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 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.20200303/bfd/genlink.h ./bfd/genlink.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/genlink.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/genlink.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -43,7 +43,7 @@ struct generic_link_hash_entry
 {
   struct bfd_link_hash_entry root;
   /* Whether this symbol has been written out.  */
-  bfd_boolean written;
+  bool written;
   /* Symbol from input BFD.  */
   asymbol *sym;
 };
@@ -66,7 +66,7 @@ struct generic_link_hash_table
 #define _bfd_generic_link_hash_traverse(table, func, info)		\
   (bfd_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct bfd_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* Get the generic link hash table from the info structure.  This is
@@ -81,30 +81,4 @@ struct generic_link_hash_table
 #define _bfd_generic_link_get_symbols(abfd)  ((abfd)->outsymbols)
 #define _bfd_generic_link_get_symcount(abfd) ((abfd)->symcount)
 
-/* Add the symbols of input_bfd to the symbols being built for
-   output_bfd.  */
-extern bfd_boolean _bfd_generic_link_output_symbols
-  (bfd *, bfd *, struct bfd_link_info *, size_t *);
-
-/* This structure is used to pass information to
-   _bfd_generic_link_write_global_symbol, which may be called via
-   _bfd_generic_link_hash_traverse.  */
-
-struct generic_write_global_symbol_info
-{
-  struct bfd_link_info *info;
-  bfd *output_bfd;
-  size_t *psymalloc;
-};
-
-/* Write out a single global symbol.  This is expected to be called
-   via _bfd_generic_link_hash_traverse.  The second argument must
-   actually be a struct generic_write_global_symbol_info *.  */
-extern bfd_boolean _bfd_generic_link_write_global_symbol
-  (struct generic_link_hash_entry *, void *);
-
-/* Generic link hash table entry creation routine.  */
-struct bfd_hash_entry *_bfd_generic_link_hash_newfunc
-  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-
 #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.20200303/bfd/.gitignore ./bfd/.gitignore
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/.gitignore	2020-03-03 02:08:50.000000000 +0000
+++ ./bfd/.gitignore	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,5 @@
 /bfd-in3.h
 /bfd.h
-/bfd_stdint.h
 /bfdver.h
 /elf32-ia64.c
 /elf32-target.h
@@ -11,6 +10,9 @@
 /peigen.c
 /pepigen.c
 /pex64igen.c
+/pe-aarch64igen.c
+/pe-loongarch64igen.c
+/pe-riscv64igen.c
 /stmp-bfd-h
 /targmatch.h
 
@@ -24,12 +26,11 @@
 /doc/cache.texi
 /doc/chew
 /doc/coffcode.texi
-/doc/core.texi
+/doc/corefile.texi
 /doc/elf.texi
 /doc/elfcode.texi
 /doc/format.texi
 /doc/hash.texi
-/doc/init.texi
 /doc/libbfd.texi
 /doc/linker.texi
 /doc/mmo.texi
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hash.c ./bfd/hash.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hash.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hash.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* hash.c -- hash table routines for BFD
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
    Written by Steve Chamberlain <sac@cygnus.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -295,6 +295,50 @@ SUBSUBSECTION
 	linker hash table, uses macros for the lookup and traversal
 	routines.  These are <<aout_link_hash_lookup>> and
 	<<aout_link_hash_traverse>> in aoutx.h.
+
+EXTERNAL
+.{* An element in the hash table.  Most uses will actually use a larger
+.   structure, and an instance of this will be the first field.  *}
+.
+.struct bfd_hash_entry
+.{
+.  {* Next entry for this hash code.  *}
+.  struct bfd_hash_entry *next;
+.  {* String being hashed.  *}
+.  const char *string;
+.  {* Hash code.  This is the full hash code, not the index into the
+.     table.  *}
+.  unsigned long hash;
+.};
+.
+.{* A hash table.  *}
+.
+.struct bfd_hash_table
+.{
+.  {* The hash array.  *}
+.  struct bfd_hash_entry **table;
+.  {* A function used to create new elements in the hash table.  The
+.     first entry is itself a pointer to an element.  When this
+.     function is first invoked, this pointer will be NULL.  However,
+.     having the pointer permits a hierarchy of method functions to be
+.     built each of which calls the function in the superclass.  Thus
+.     each function should be written to allocate a new block of memory
+.     only if the argument is NULL.  *}
+.  struct bfd_hash_entry *(*newfunc)
+.    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
+.  {* An objalloc for this hash table.  This is a struct objalloc *,
+.     but we use void * to avoid requiring the inclusion of objalloc.h.  *}
+.  void *memory;
+.  {* The number of slots in the hash table.  *}
+.  unsigned int size;
+.  {* The number of entries in the hash table.  *}
+.  unsigned int count;
+.  {* The size of elements.  *}
+.  unsigned int entsize;
+.  {* If non-zero, don't grow the hash table.  *}
+.  unsigned int frozen:1;
+.};
+.
 */
 
 /* The default number of entries to use when creating a hash table.  */
@@ -304,50 +348,49 @@ SUBSUBSECTION
    greater than N, and near a power of two.  Copied from libiberty.
    Returns zero for ridiculously large N to signify an error.  */
 
-static unsigned long
-higher_prime_number (unsigned long n)
+static uint32_t
+higher_prime_number (uint32_t n)
 {
   /* These are primes that are near, but slightly smaller than, a
      power of two.  */
-  static const unsigned long primes[] =
+  static const uint32_t primes[] =
     {
-      (unsigned long) 31,
-      (unsigned long) 61,
-      (unsigned long) 127,
-      (unsigned long) 251,
-      (unsigned long) 509,
-      (unsigned long) 1021,
-      (unsigned long) 2039,
-      (unsigned long) 4093,
-      (unsigned long) 8191,
-      (unsigned long) 16381,
-      (unsigned long) 32749,
-      (unsigned long) 65521,
-      (unsigned long) 131071,
-      (unsigned long) 262139,
-      (unsigned long) 524287,
-      (unsigned long) 1048573,
-      (unsigned long) 2097143,
-      (unsigned long) 4194301,
-      (unsigned long) 8388593,
-      (unsigned long) 16777213,
-      (unsigned long) 33554393,
-      (unsigned long) 67108859,
-      (unsigned long) 134217689,
-      (unsigned long) 268435399,
-      (unsigned long) 536870909,
-      (unsigned long) 1073741789,
-      (unsigned long) 2147483647,
-					/* 4294967291L */
-      ((unsigned long) 2147483647) + ((unsigned long) 2147483644),
+      UINT32_C (31),
+      UINT32_C (61),
+      UINT32_C (127),
+      UINT32_C (251),
+      UINT32_C (509),
+      UINT32_C (1021),
+      UINT32_C (2039),
+      UINT32_C (4093),
+      UINT32_C (8191),
+      UINT32_C (16381),
+      UINT32_C (32749),
+      UINT32_C (65521),
+      UINT32_C (131071),
+      UINT32_C (262139),
+      UINT32_C (524287),
+      UINT32_C (1048573),
+      UINT32_C (2097143),
+      UINT32_C (4194301),
+      UINT32_C (8388593),
+      UINT32_C (16777213),
+      UINT32_C (33554393),
+      UINT32_C (67108859),
+      UINT32_C (134217689),
+      UINT32_C (268435399),
+      UINT32_C (536870909),
+      UINT32_C (1073741789),
+      UINT32_C (2147483647),
+      UINT32_C (4294967291)
   };
 
-  const unsigned long *low = &primes[0];
-  const unsigned long *high = &primes[sizeof (primes) / sizeof (primes[0])];
+  const uint32_t *low = &primes[0];
+  const uint32_t *high = &primes[sizeof (primes) / sizeof (primes[0])];
 
   while (low != high)
     {
-      const unsigned long *mid = low + (high - low) / 2;
+      const uint32_t *mid = low + (high - low) / 2;
       if (n >= *mid)
 	low = mid + 1;
       else
@@ -360,11 +403,24 @@ higher_prime_number (unsigned long n)
   return *low;
 }
 
-static unsigned long bfd_default_hash_table_size = DEFAULT_SIZE;
+static unsigned int bfd_default_hash_table_size = DEFAULT_SIZE;
 
-/* Create a new hash table, given a number of entries.  */
+/*
+FUNCTION
+	bfd_hash_table_init_n
+
+SYNOPSIS
+	bool bfd_hash_table_init_n
+	  (struct bfd_hash_table *,
+	   struct bfd_hash_entry *(* {*newfunc*})
+	     (struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
+	   unsigned int {*entsize*}, unsigned int {*size*});
 
-bfd_boolean
+DESCRIPTION
+	Create a new hash table, given a number of entries.
+*/
+
+bool
 bfd_hash_table_init_n (struct bfd_hash_table *table,
 		       struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
 							  struct bfd_hash_table *,
@@ -379,14 +435,14 @@ bfd_hash_table_init_n (struct bfd_hash_t
   if (alloc / sizeof (struct bfd_hash_entry *) != size)
     {
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
 
   table->memory = (void *) objalloc_create ();
   if (table->memory == NULL)
     {
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
   table->table = (struct bfd_hash_entry **)
       objalloc_alloc ((struct objalloc *) table->memory, alloc);
@@ -394,7 +450,7 @@ bfd_hash_table_init_n (struct bfd_hash_t
     {
       bfd_hash_table_free (table);
       bfd_set_error (bfd_error_no_memory);
-      return FALSE;
+      return false;
     }
   memset ((void *) table->table, 0, alloc);
   table->size = size;
@@ -402,12 +458,25 @@ bfd_hash_table_init_n (struct bfd_hash_t
   table->count = 0;
   table->frozen = 0;
   table->newfunc = newfunc;
-  return TRUE;
+  return true;
 }
 
-/* Create a new hash table with the default number of entries.  */
+/*
+FUNCTION
+	bfd_hash_table_init
+
+SYNOPSIS
+	bool bfd_hash_table_init
+	  (struct bfd_hash_table *,
+	   struct bfd_hash_entry *(* {*newfunc*})
+	     (struct bfd_hash_entry *, struct bfd_hash_table *, const char *),
+	   unsigned int {*entsize*});
 
-bfd_boolean
+DESCRIPTION
+	Create a new hash table with the default number of entries.
+*/
+
+bool
 bfd_hash_table_init (struct bfd_hash_table *table,
 		     struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
 							struct bfd_hash_table *,
@@ -418,7 +487,16 @@ bfd_hash_table_init (struct bfd_hash_tab
 				bfd_default_hash_table_size);
 }
 
-/* Free a hash table.  */
+/*
+FUNCTION
+	bfd_hash_table_free
+
+SYNOPSIS
+	void bfd_hash_table_free (struct bfd_hash_table *);
+
+DESCRIPTION
+	Free a hash table.
+*/
 
 void
 bfd_hash_table_free (struct bfd_hash_table *table)
@@ -452,13 +530,24 @@ bfd_hash_hash (const char *string, unsig
   return hash;
 }
 
-/* Look up a string in a hash table.  */
+/*
+FUNCTION
+	bfd_hash_lookup
+
+SYNOPSIS
+	struct bfd_hash_entry *bfd_hash_lookup
+	  (struct bfd_hash_table *, const char *,
+	   bool {*create*}, bool {*copy*});
+
+DESCRIPTION
+	Look up a string in a hash table.
+*/
 
 struct bfd_hash_entry *
 bfd_hash_lookup (struct bfd_hash_table *table,
 		 const char *string,
-		 bfd_boolean create,
-		 bfd_boolean copy)
+		 bool create,
+		 bool copy)
 {
   unsigned long hash;
   struct bfd_hash_entry *hashp;
@@ -497,7 +586,19 @@ bfd_hash_lookup (struct bfd_hash_table *
   return bfd_hash_insert (table, string, hash);
 }
 
-/* Insert an entry in a hash table.  */
+/*
+FUNCTION
+	bfd_hash_insert
+
+SYNOPSIS
+	struct bfd_hash_entry *bfd_hash_insert
+	  (struct bfd_hash_table *,
+	   const char *,
+	   unsigned long {*hash*});
+
+DESCRIPTION
+	Insert an entry in a hash table.
+*/
 
 struct bfd_hash_entry *
 bfd_hash_insert (struct bfd_hash_table *table,
@@ -562,7 +663,18 @@ bfd_hash_insert (struct bfd_hash_table *
   return hashp;
 }
 
-/* Rename an entry in a hash table.  */
+/*
+FUNCTION
+	bfd_hash_rename
+
+SYNOPSIS
+	void bfd_hash_rename (struct bfd_hash_table *,
+			      const char *,
+			      struct bfd_hash_entry *);
+
+DESCRIPTION
+	Rename an entry in a hash table.
+*/
 
 void
 bfd_hash_rename (struct bfd_hash_table *table,
@@ -587,7 +699,18 @@ bfd_hash_rename (struct bfd_hash_table *
   table->table[_index] = ent;
 }
 
-/* Replace an entry in a hash table.  */
+/*
+FUNCTION
+	bfd_hash_replace
+
+SYNOPSIS
+	void bfd_hash_replace (struct bfd_hash_table *,
+			       struct bfd_hash_entry * {*old*},
+			       struct bfd_hash_entry * {*new*});
+
+DESCRIPTION
+	Replace an entry in a hash table.
+*/
 
 void
 bfd_hash_replace (struct bfd_hash_table *table,
@@ -612,7 +735,17 @@ bfd_hash_replace (struct bfd_hash_table
   abort ();
 }
 
-/* Allocate space in a hash table.  */
+/*
+FUNCTION
+	bfd_hash_allocate
+
+SYNOPSIS
+	void *bfd_hash_allocate (struct bfd_hash_table *,
+				 unsigned int {*size*});
+
+DESCRIPTION
+	Allocate space in a hash table.
+*/
 
 void *
 bfd_hash_allocate (struct bfd_hash_table *table,
@@ -626,7 +759,19 @@ bfd_hash_allocate (struct bfd_hash_table
   return ret;
 }
 
-/* Base method for creating a new hash table entry.  */
+/*
+FUNCTION
+	bfd_hash_newfunc
+
+SYNOPSIS
+	struct bfd_hash_entry *bfd_hash_newfunc
+	  (struct bfd_hash_entry *,
+	   struct bfd_hash_table *,
+	   const char *);
+
+DESCRIPTION
+	Base method for creating a new hash table entry.
+*/
 
 struct bfd_hash_entry *
 bfd_hash_newfunc (struct bfd_hash_entry *entry,
@@ -639,12 +784,24 @@ bfd_hash_newfunc (struct bfd_hash_entry
   return entry;
 }
 
-/* Traverse a hash table.  */
+/*
+FUNCTION
+	bfd_hash_traverse
+
+SYNOPSIS
+	void bfd_hash_traverse
+	  (struct bfd_hash_table *,
+	   bool (*) (struct bfd_hash_entry *, void *),
+	   void *);
+
+DESCRIPTION
+	Traverse a hash table.
+*/
 
 void
 bfd_hash_traverse (struct bfd_hash_table *table,
-		   bfd_boolean (*func) (struct bfd_hash_entry *, void *),
-		   void * info)
+		   bool (*func) (struct bfd_hash_entry *, void *),
+		   void *info)
 {
   unsigned int i;
 
@@ -660,23 +817,33 @@ bfd_hash_traverse (struct bfd_hash_table
  out:
   table->frozen = 0;
 }
-
-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;
+/*
+FUNCTION
+	bfd_hash_set_default_size
+
+SYNOPSIS
+	unsigned int bfd_hash_set_default_size (unsigned int);
+
+DESCRIPTION
+	Set hash table default size.
+*/
 
-  bfd_default_hash_table_size = hash_size_primes[_index];
+unsigned int
+bfd_hash_set_default_size (unsigned int hash_size)
+{
+  /* 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 int 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;
 }
 
@@ -714,11 +881,12 @@ struct bfd_strtab_hash
   struct strtab_hash_entry *first;
   /* Last string in strtab.  */
   struct strtab_hash_entry *last;
-  /* Whether to precede strings with a two byte length, as in the
-     XCOFF .debug section.  */
-  bfd_boolean xcoff;
+  /* Whether to precede strings with a two or four byte length,
+     as in the XCOFF .debug section.  */
+  char length_field_size;
 };
 
+
 /* Routine to create an entry in a strtab.  */
 
 static struct bfd_hash_entry *
@@ -756,13 +924,22 @@ strtab_hash_newfunc (struct bfd_hash_ent
   ((struct strtab_hash_entry *) \
    bfd_hash_lookup (&(t)->table, (string), (create), (copy)))
 
-/* Create a new strtab.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_stringtab_init
+
+SYNOPSIS
+	struct bfd_strtab_hash *_bfd_stringtab_init (void);
+
+DESCRIPTION
+	Create a new strtab.
+*/
 
 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)
@@ -778,27 +955,46 @@ _bfd_stringtab_init (void)
   table->size = 0;
   table->first = NULL;
   table->last = NULL;
-  table->xcoff = FALSE;
+  table->length_field_size = 0;
 
   return table;
 }
 
-/* Create a new strtab in which the strings are output in the format
-   used in the XCOFF .debug section: a two byte length precedes each
-   string.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_xcoff_stringtab_init
+
+SYNOPSIS
+	struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
+	  (bool {*isxcoff64*});
+
+DESCRIPTION
+	Create a new strtab in which the strings are output in the format
+	used in the XCOFF .debug section: a two byte length precedes each
+	string.
+*/
 
 struct bfd_strtab_hash *
-_bfd_xcoff_stringtab_init (void)
+_bfd_xcoff_stringtab_init (bool isxcoff64)
 {
   struct bfd_strtab_hash *ret;
 
   ret = _bfd_stringtab_init ();
   if (ret != NULL)
-    ret->xcoff = TRUE;
+    ret->length_field_size = isxcoff64 ? 4 : 2;
   return ret;
 }
 
-/* Free a strtab.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_stringtab_free
+
+SYNOPSIS
+	void _bfd_stringtab_free (struct bfd_strtab_hash *);
+
+DESCRIPTION
+	Free a strtab.
+*/
 
 void
 _bfd_stringtab_free (struct bfd_strtab_hash *table)
@@ -807,22 +1003,33 @@ _bfd_stringtab_free (struct bfd_strtab_h
   free (table);
 }
 
-/* Get the index of a string in a strtab, adding it if it is not
-   already present.  If HASH is FALSE, we don't really use the hash
-   table, and we don't eliminate duplicate strings.  If COPY is true
-   then store a copy of STR if creating a new entry.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_stringtab_add
+
+SYNOPSIS
+	bfd_size_type _bfd_stringtab_add
+	  (struct bfd_strtab_hash *, const char *,
+	   bool {*hash*}, bool {*copy*});
+
+DESCRIPTION
+	Get the index of a string in a strtab, adding it if it is not
+	already present.  If HASH is FALSE, we don't really use the hash
+	table, and we don't eliminate duplicate strings.  If COPY is true
+	then store a copy of STR if creating a new entry.
+*/
 
 bfd_size_type
 _bfd_stringtab_add (struct bfd_strtab_hash *tab,
 		    const char *str,
-		    bfd_boolean hash,
-		    bfd_boolean copy)
+		    bool hash,
+		    bool copy)
 {
   struct strtab_hash_entry *entry;
 
   if (hash)
     {
-      entry = strtab_hash_lookup (tab, str, TRUE, copy);
+      entry = strtab_hash_lookup (tab, str, true, copy);
       if (entry == NULL)
 	return (bfd_size_type) -1;
     }
@@ -853,11 +1060,8 @@ _bfd_stringtab_add (struct bfd_strtab_ha
     {
       entry->index = tab->size;
       tab->size += strlen (str) + 1;
-      if (tab->xcoff)
-	{
-	  entry->index += 2;
-	  tab->size += 2;
-	}
+      entry->index += tab->length_field_size;
+      tab->size += tab->length_field_size;
       if (tab->first == NULL)
 	tab->first = entry;
       else
@@ -868,7 +1072,16 @@ _bfd_stringtab_add (struct bfd_strtab_ha
   return entry->index;
 }
 
-/* Get the number of bytes in a strtab.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_stringtab_size
+
+SYNOPSIS
+	bfd_size_type _bfd_stringtab_size (struct bfd_strtab_hash *);
+
+DESCRIPTION
+	Get the number of bytes in a strtab.
+*/
 
 bfd_size_type
 _bfd_stringtab_size (struct bfd_strtab_hash *tab)
@@ -876,17 +1089,23 @@ _bfd_stringtab_size (struct bfd_strtab_h
   return tab->size;
 }
 
-/* Write out a strtab.  ABFD must already be at the right location in
-   the file.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_stringtab_emit
 
-bfd_boolean
+SYNOPSIS
+	bool _bfd_stringtab_emit (bfd *, struct bfd_strtab_hash *);
+
+DESCRIPTION
+	Write out a strtab.  ABFD must already be at the right location in
+	the file.
+*/
+
+bool
 _bfd_stringtab_emit (bfd *abfd, struct bfd_strtab_hash *tab)
 {
-  bfd_boolean xcoff;
   struct strtab_hash_entry *entry;
 
-  xcoff = tab->xcoff;
-
   for (entry = tab->first; entry != NULL; entry = entry->next)
     {
       const char *str;
@@ -895,19 +1114,28 @@ _bfd_stringtab_emit (bfd *abfd, struct b
       str = entry->root.string;
       len = strlen (str) + 1;
 
-      if (xcoff)
+      if (tab->length_field_size == 4)
+	{
+	  bfd_byte buf[4];
+
+	  /* The output length includes the null byte.  */
+	  bfd_put_32 (abfd, len, buf);
+	  if (bfd_write (buf, 4, abfd) != 4)
+	    return false;
+	}
+      else if (tab->length_field_size == 2)
 	{
 	  bfd_byte buf[2];
 
 	  /* The output length includes the null byte.  */
-	  bfd_put_16 (abfd, (bfd_vma) len, buf);
-	  if (bfd_bwrite ((void *) buf, (bfd_size_type) 2, abfd) != 2)
-	    return FALSE;
+	  bfd_put_16 (abfd, len, buf);
+	  if (bfd_write (buf, 2, abfd) != 2)
+	    return false;
 	}
 
-      if (bfd_bwrite ((void *) str, (bfd_size_type) len, abfd) != len)
-	return FALSE;
+      if (bfd_write (str, len, abfd) != len)
+	return false;
     }
 
-  return TRUE;
+  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.20200303/bfd/host-aout.c ./bfd/host-aout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/host-aout.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/host-aout.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/hosts/alphalinux.h ./bfd/hosts/alphalinux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/alphalinux.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/alphalinux.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/alphavms.h ./bfd/hosts/alphavms.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/alphavms.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/alphavms.h	2026-03-05 02:07:20.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-2025 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.20200303/bfd/hosts/decstation.h ./bfd/hosts/decstation.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/decstation.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/decstation.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/dpx2.h ./bfd/hosts/dpx2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/dpx2.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/dpx2.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/i386bsd.h ./bfd/hosts/i386bsd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/i386bsd.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/i386bsd.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/i386linux.h ./bfd/hosts/i386linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/i386linux.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/i386linux.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/i386mach3.h ./bfd/hosts/i386mach3.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/i386mach3.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/i386mach3.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/i386sco.h ./bfd/hosts/i386sco.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/i386sco.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/i386sco.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,38 +0,0 @@
-/* Copyright (C) 2007-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.  */
-
-/* Core file stuff.  At least some, perhaps all, of the following
-   defines work on many more systems than just SCO.  */
-
-#define NBPG NBPC
-#define UPAGES USIZE
-#define HOST_DATA_START_ADDR u.u_exdata.ux_datorg
-#define HOST_STACK_START_ADDR u.u_sub
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(abfd) \
-  ((core_upage(abfd)->u_sysabort != 0) \
-   ? core_upage(abfd)->u_sysabort \
-   : -1)
-
-/* According to the manpage, a version 2 SCO corefile can contain
-   various additional sections (it is cleverly arranged so the u area,
-   data, and stack are first where we can find them).  So without
-   writing lots of code to parse all their headers and stuff, we can't
-   know whether a corefile is bigger than it should be.  */
-
-#define TRAD_CORE_ALLOW_ANY_EXTRA_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.20200303/bfd/hosts/m68klinux.h ./bfd/hosts/m68klinux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/m68klinux.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/m68klinux.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/mipsbsd.h ./bfd/hosts/mipsbsd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/mipsbsd.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/mipsbsd.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,31 +0,0 @@
-/* Copyright (C) 2007-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 <machine/param.h>
-#include <machine/vmparam.h>
-#undef ALIGN
-
-#define	HOST_PAGE_SIZE		NBPG
-/* #define	HOST_SEGMENT_SIZE	NBPG -- we use HOST_DATA_START_ADDR */
-#define	HOST_MACHINE_ARCH	bfd_arch_mips
-/* #define	HOST_MACHINE_MACHINE	 */
-
-#define	HOST_TEXT_START_ADDR		USRTEXT
-#define	HOST_STACK_END_ADDR		USRSTACK
-#define NO_CORE_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.20200303/bfd/hosts/mipsmach3.h ./bfd/hosts/mipsmach3.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/mipsmach3.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/mipsmach3.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/news-mips.h ./bfd/hosts/news-mips.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/news-mips.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/news-mips.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/pc532mach.h ./bfd/hosts/pc532mach.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/pc532mach.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/pc532mach.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/riscos.h ./bfd/hosts/riscos.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/riscos.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/riscos.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2025 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.20200303/bfd/hosts/symmetry.h ./bfd/hosts/symmetry.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/symmetry.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/symmetry.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,39 +0,0 @@
-/* Copyright (C) 2007-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.  */
-
-/* Symmetry running either dynix 3.1 (bsd) or ptx (sysv).  */
-
-#define NBPG 4096
-#define UPAGES 1
-
-#ifdef _SEQUENT_
-/* ptx */
-#define HOST_TEXT_START_ADDR 0
-#define HOST_STACK_END_ADDR 0x3fffe000
-#define TRAD_CORE_USER_OFFSET ((UPAGES * NBPG) - sizeof (struct user))
-#else
-/* dynix */
-#define HOST_TEXT_START_ADDR 0x1000
-#define HOST_DATA_START_ADDR (NBPG * u.u_tsize)
-#define HOST_STACK_END_ADDR 0x3ffff000
-#define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
-  ((core_bfd)->tdata.trad_core_data->u.u_arg[0])
-#endif
-
-#define TRAD_CORE_DSIZE_INCLUDES_TSIZE
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/vaxbsd.h ./bfd/hosts/vaxbsd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/vaxbsd.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/vaxbsd.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2025 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.20200303/bfd/hosts/vaxlinux.h ./bfd/hosts/vaxlinux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/vaxlinux.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/vaxlinux.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2025 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.20200303/bfd/hosts/vaxult2.h ./bfd/hosts/vaxult2.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/vaxult2.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/vaxult2.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
-/* Copyright (C) 2007-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 <machine/param.h>
-#include <machine/vmparam.h>
-#define	HOST_PAGE_SIZE		(NBPG*CLSIZE)
-#define	HOST_MACHINE_ARCH	bfd_arch_vax
-
-#define	HOST_TEXT_START_ADDR	USRTEXT
-#define	HOST_STACK_END_ADDR	USRSTACK
-#undef	HOST_BIG_ENDIAN_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.20200303/bfd/hosts/vaxult.h ./bfd/hosts/vaxult.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/vaxult.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/vaxult.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,27 +0,0 @@
-/* Copyright (C) 2007-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 <machine/param.h>
-#include <machine/vmparam.h>
-#define	HOST_PAGE_SIZE		(NBPG*CLSIZE)
-#define	HOST_MACHINE_ARCH	bfd_arch_vax
-
-#define	HOST_TEXT_START_ADDR	USRTEXT
-#define	HOST_STACK_END_ADDR	USRSTACK
-#undef	HOST_BIG_ENDIAN_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.20200303/bfd/hosts/x86-64linux.h ./bfd/hosts/x86-64linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hosts/x86-64linux.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hosts/x86-64linux.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2019 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2025 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
@@ -31,13 +31,7 @@
 
 /* We define here only the symbols differing from their 64-bit variant.  */
 #include <sys/procfs.h>
-
-#ifdef HAVE_STDINT_H
 #include <stdint.h>
-#else
-typedef unsigned int uint32_t;
-typedef unsigned long long int uint64_t;
-#endif
 
 /* Unsigned 64-bit integer aligned to 8 bytes.  */
 typedef uint64_t __attribute__ ((__aligned__ (8))) a8_uint64_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.20200303/bfd/hppabsd-core.c ./bfd/hppabsd-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hppabsd-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hppabsd-core.c	2026-03-05 02:07:20.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-2025 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;
@@ -100,7 +100,7 @@ hppabsd_core_core_file_p (bfd *abfd)
 
   /* Try to read in the u-area.  We will need information from this
      to know how to grok the rest of the core structures.  */
-  val = bfd_bread ((void *) &u, (bfd_size_type) sizeof u, abfd);
+  val = bfd_read (&u, sizeof u, abfd);
   if (val != sizeof u)
     {
       if (bfd_get_error () != bfd_error_system_call)
@@ -179,9 +179,10 @@ hppabsd_core_core_file_p (bfd *abfd)
     goto fail;
   core_regsec (abfd)->vma = 0;
 
-  strncpy (core_command (abfd), u.u_comm, MAXCOMLEN + 1);
+  strncpy (core_command (abfd), u.u_comm, MAXCOMLEN);
+  core_command (abfd)[MAXCOMLEN] = 0;
   core_signal (abfd) = u.u_code;
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  fail:
   bfd_release (abfd, abfd->tdata.any);
@@ -213,9 +214,9 @@ swap_abort (void)
 #define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
 #define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
 #define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
+#define	NO_GET64 ((uint64_t (*) (const void *)) swap_abort)
+#define	NO_PUT64 ((void (*) (uint64_t, void *)) swap_abort)
+#define	NO_GETS64 ((int64_t (*) (const void *)) swap_abort)
 
 const bfd_target core_hppabsd_vec =
   {
@@ -230,6 +231,7 @@ const bfd_target core_hppabsd_vec =
     0,							   /* symbol prefix */
     ' ',						   /* ar_pad_char */
     16,							   /* ar_max_namelen */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 16 bit 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.20200303/bfd/hpux-core.c ./bfd/hpux-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/hpux-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/hpux-core.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Stu Grossman, Cygnus Support.
    Converted to back-end form by Ian Lance Taylor, Cygnus SUpport
 
@@ -48,19 +48,7 @@
 #endif /* HOST_HPPABSD */
 
 #include <sys/param.h>
-#ifdef HAVE_DIRENT_H
-# include <dirent.h>
-#else
-# ifdef HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif
-# ifdef HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif
-# ifdef HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif
+#include <dirent.h>
 #include <signal.h>
 #ifdef HPUX_CORE
 #include <machine/reg.h>
@@ -106,7 +94,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);
@@ -140,12 +128,12 @@ make_bfd_asection (bfd *abfd, const char
 /* Return true if the given core file section corresponds to a thread,
    based on its name.  */
 
-static int
+static bool
 thread_section_p (bfd *abfd ATTRIBUTE_UNUSED,
 		  asection *sect,
 		  void *obj ATTRIBUTE_UNUSED)
 {
-  return CONST_STRNEQ (sect->name, ".reg/");
+  return startswith (sect->name, ".reg/");
 }
 
 /* this function builds a bfd target if the file is a corefile.
@@ -157,7 +145,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;
@@ -173,8 +161,7 @@ hpux_core_core_file_p (bfd *abfd)
       int val;
       struct corehead core_header;
 
-      val = bfd_bread ((void *) &core_header,
-		      (bfd_size_type) sizeof core_header, abfd);
+      val = bfd_read (&core_header, sizeof core_header, abfd);
       if (val <= 0)
 	break;
       switch (core_header.type)
@@ -182,16 +169,16 @@ hpux_core_core_file_p (bfd *abfd)
 	case CORE_KERNEL:
 	case CORE_FORMAT:
 	  /* Just skip this.  */
-	  bfd_seek (abfd, (file_ptr) core_header.len, SEEK_CUR);
+	  bfd_seek (abfd, core_header.len, SEEK_CUR);
 	  good_sections++;
 	  break;
 	case CORE_EXEC:
 	  {
 	    struct proc_exec proc_exec;
-	    if (bfd_bread ((void *) &proc_exec, (bfd_size_type) core_header.len,
-			  abfd) != core_header.len)
+	    if (bfd_read (&proc_exec, core_header.len, abfd) != core_header.len)
 	      break;
-	    strncpy (core_command (abfd), proc_exec.cmd, MAXCOMLEN + 1);
+	    strncpy (core_command (abfd), proc_exec.cmd, MAXCOMLEN);
+	    core_command (abfd)[MAXCOMLEN] = 0;
 	    good_sections++;
 	  }
 	  break;
@@ -203,13 +190,12 @@ hpux_core_core_file_p (bfd *abfd)
 	    /* We need to read this section, 'cause we need to determine
 	       whether the core-dumped app was threaded before we create
 	       any .reg sections. */
-	    if (bfd_bread (&proc_info, (bfd_size_type) core_header.len, abfd)
-		!= core_header.len)
+	    if (bfd_read (&proc_info, core_header.len, abfd) != core_header.len)
 	      break;
 
 	      /* However, we also want to create those sections with the
 		 file positioned at the start of the record, it seems. */
-	    if (bfd_seek (abfd, -((file_ptr) core_header.len), SEEK_CUR) != 0)
+	    if (bfd_seek (abfd, -(file_ptr) core_header.len, SEEK_CUR) != 0)
 	      break;
 
 #if defined(PROC_INFO_HAS_THREAD_ID)
@@ -342,7 +328,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));
@@ -374,9 +360,9 @@ swap_abort (void)
 #define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
 #define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
 #define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
+#define	NO_GET64 ((uint64_t (*) (const void *)) swap_abort)
+#define	NO_PUT64 ((void (*) (uint64_t, void *)) swap_abort)
+#define	NO_GETS64 ((int64_t (*) (const void *)) swap_abort)
 
 const bfd_target core_hpux_vec =
   {
@@ -392,6 +378,7 @@ const bfd_target core_hpux_vec =
     ' ',			/* ar_pad_char */
     16,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 16 bit 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.20200303/bfd/i386aout.c ./bfd/i386aout.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/i386aout.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/i386aout.c	2026-03-05 02:07:20.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-2025 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"
@@ -48,7 +47,7 @@
 
 /* Set the machine type correctly.  */
 
-static bfd_boolean
+static bool
 i386aout_write_object_contents (bfd *abfd)
 {
   struct external_exec exec_bytes;
@@ -60,7 +59,7 @@ i386aout_write_object_contents (bfd *abf
 
   WRITE_HEADERS (abfd, execp);
 
-  return TRUE;
+  return true;
 }
 
 #define MY_write_object_contents  i386aout_write_object_contents
@@ -80,7 +79,6 @@ static const struct aout_backend_data MY
   MY (set_sizes),
   1,				/* Exec header not counted.  */
   0,				/* Add_dynamic_symbols.  */
-  0,				/* Add_one_symbol.  */
   0,				/* Link_dynamic_object.  */
   0,				/* Write_dynamic_symbol.  */
   0,				/* Check_dynamic_reloc.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/i386bsd.c ./bfd/i386bsd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/i386bsd.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/i386bsd.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/i386lynx.c ./bfd/i386lynx.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/i386lynx.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/i386lynx.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -34,48 +34,47 @@
 #include "libbfd.h"
 
 #ifndef WRITE_HEADERS
-#define WRITE_HEADERS(abfd, execp)					      \
-      {									      \
-	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 (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0		      \
-	    || bfd_bwrite (&exec_bytes, (bfd_size_type) EXEC_BYTES_SIZE, \
-			  abfd) != EXEC_BYTES_SIZE)			      \
-	  return FALSE;							      \
-	/* Now write out reloc info, followed by syms and strings */	      \
-									      \
-	if (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(lynx,squirt_out_relocs) (abfd, obj_textsec (abfd)))   \
-		return FALSE;						      \
-	      if (bfd_seek (abfd, (file_ptr) (N_DRELOFF (execp)), SEEK_SET)   \
-		  != 0)							      \
-		return 0;						      \
-									      \
-	      if (!NAME(lynx,squirt_out_relocs) (abfd, obj_datasec (abfd)))   \
-		return FALSE;						      \
-	    }								      \
-      }
+#define WRITE_HEADERS(abfd, execp)					\
+  {									\
+    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));			\
+    if (!NAME (aout, swap_exec_header_out) (abfd, execp, &exec_bytes))	\
+      return false;							\
+									\
+    if (bfd_seek (abfd, 0, SEEK_SET) != 0				\
+	|| bfd_write (&exec_bytes, EXEC_BYTES_SIZE,			\
+		      abfd) != EXEC_BYTES_SIZE)				\
+      return false;							\
+    /* Now write out reloc info, followed by syms and strings.  */	\
+									\
+    if (bfd_get_outsymbols (abfd) != NULL				\
+	&& bfd_get_symcount (abfd) != 0)				\
+      {									\
+	if (bfd_seek (abfd, N_SYMOFF (execp), SEEK_SET) != 0)		\
+	  return false;							\
+									\
+	if (! NAME (aout, write_syms) (abfd))				\
+	  return false;							\
+      }									\
+									\
+    if (bfd_seek (abfd, N_TRELOFF (execp), SEEK_SET) != 0)		\
+      return false;							\
+    if (!NAME (lynx, squirt_out_relocs) (abfd, obj_textsec (abfd)))	\
+      return false;							\
+									\
+    if (bfd_seek (abfd, N_DRELOFF (execp), SEEK_SET) != 0)		\
+      return false;							\
+    if (!NAME (lynx, squirt_out_relocs) (abfd, obj_datasec (abfd)))	\
+      return false;							\
+  }
 #endif
 
 #include "libaout.h"
@@ -86,8 +85,8 @@
 
 char *lynx_core_file_failing_command ();
 int lynx_core_file_failing_signal ();
-bfd_boolean lynx_core_file_matches_executable_p ();
-const bfd_target *lynx_core_file_p ();
+bool lynx_core_file_matches_executable_p ();
+bfd_cleanup lynx_core_file_p ();
 
 #define	MY_core_file_failing_command lynx_core_file_failing_command
 #define	MY_core_file_failing_signal lynx_core_file_failing_signal
@@ -120,7 +119,7 @@ NAME(lynx,swap_std_reloc_out) (bfd *abfd
 
   PUT_WORD (abfd, g->address, natptr->r_address);
 
-  r_length = g->howto->size;	/* Size as a power of two */
+  r_length = bfd_log2 (bfd_get_reloc_size (g->howto));
   r_pcrel = (int) g->howto->pc_relative;	/* Relative to PC? */
   /* r_baserel, r_jmptable, r_relative???  FIXME-soon */
   r_baserel = 0;
@@ -282,38 +281,42 @@ NAME(lynx,swap_ext_reloc_out) (bfd *abfd
 #define MOVE_ADDRESS(ad)						\
   if (r_extern)								\
     {									\
-   /* undefined symbol */						\
-     cache_ptr->sym_ptr_ptr = symbols + r_index;			\
-     cache_ptr->addend = ad;						\
+      /* undefined symbol */						\
+      if (symbols != NULL && r_index < bfd_get_symcount (abfd))		\
+	cache_ptr->sym_ptr_ptr = symbols + r_index;			\
+      else								\
+	cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;		\
+      cache_ptr->addend = ad;						\
     }									\
   else									\
     {									\
-    /* defined, section relative. replace symbol with pointer to	\
-       symbol which points to section  */				\
-    switch (r_index) {							\
-    case N_TEXT:							\
-    case N_TEXT | N_EXT:						\
-      cache_ptr->sym_ptr_ptr  = obj_textsec(abfd)->symbol_ptr_ptr;	\
-      cache_ptr->addend = ad  - su->textsec->vma;			\
-      break;								\
-    case N_DATA:							\
-    case N_DATA | N_EXT:						\
-      cache_ptr->sym_ptr_ptr  = obj_datasec(abfd)->symbol_ptr_ptr;	\
-      cache_ptr->addend = ad - su->datasec->vma;			\
-      break;								\
-    case N_BSS:								\
-    case N_BSS | N_EXT:							\
-      cache_ptr->sym_ptr_ptr  = obj_bsssec(abfd)->symbol_ptr_ptr;	\
-      cache_ptr->addend = ad - su->bsssec->vma;				\
-      break;								\
-    default:								\
-    case N_ABS:								\
-    case N_ABS | N_EXT:							\
-     cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;	\
-      cache_ptr->addend = ad;						\
-      break;								\
+      /* defined, section relative. replace symbol with pointer to	\
+	 symbol which points to section  */				\
+      switch (r_index)							\
+	{								\
+	case N_TEXT:							\
+	case N_TEXT | N_EXT:						\
+	  cache_ptr->sym_ptr_ptr  = &obj_textsec(abfd)->symbol;		\
+	  cache_ptr->addend = ad  - su->textsec->vma;			\
+	  break;							\
+	case N_DATA:							\
+	case N_DATA | N_EXT:						\
+	  cache_ptr->sym_ptr_ptr  = &obj_datasec(abfd)->symbol;		\
+	  cache_ptr->addend = ad - su->datasec->vma;			\
+	  break;							\
+	case N_BSS:							\
+	case N_BSS | N_EXT:						\
+	  cache_ptr->sym_ptr_ptr  = &obj_bsssec(abfd)->symbol;		\
+	  cache_ptr->addend = ad - su->bsssec->vma;			\
+	  break;							\
+	default:							\
+	case N_ABS:							\
+	case N_ABS | N_EXT:						\
+	  cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;	\
+	  cache_ptr->addend = ad;					\
+	  break;							\
+	}								\
     }									\
-  }									\
 
 static void
 NAME(lynx,swap_ext_reloc_in) (bfd *abfd,
@@ -322,7 +325,7 @@ NAME(lynx,swap_ext_reloc_in) (bfd *abfd,
 			      asymbol **symbols,
 			      bfd_size_type symcount ATTRIBUTE_UNUSED)
 {
-  int r_index;
+  unsigned int r_index;
   int r_extern;
   unsigned int r_type;
   struct aoutdata *su = &(abfd->tdata.aout_data->a);
@@ -345,7 +348,7 @@ NAME(lynx,swap_std_reloc_in) (bfd *abfd,
 			      asymbol **symbols,
 			      bfd_size_type symcount ATTRIBUTE_UNUSED)
 {
-  int r_index;
+  unsigned int r_index;
   int r_extern;
   unsigned int r_length;
   int r_pcrel;
@@ -367,7 +370,7 @@ NAME(lynx,swap_std_reloc_in) (bfd *abfd,
 
 /* Reloc hackery */
 
-static bfd_boolean
+static bool
 NAME(lynx,slurp_reloc_table) (bfd *abfd,
 			      sec_ptr asect,
 			      asymbol **symbols)
@@ -379,10 +382,10 @@ NAME(lynx,slurp_reloc_table) (bfd *abfd,
   size_t each_size;
 
   if (asect->relocation)
-    return TRUE;
+    return true;
 
   if (asect->flags & SEC_CONSTRUCTOR)
-    return TRUE;
+    return true;
 
   if (asect == obj_datasec (abfd))
     {
@@ -397,11 +400,11 @@ NAME(lynx,slurp_reloc_table) (bfd *abfd,
     }
 
   bfd_set_error (bfd_error_invalid_operation);
-  return FALSE;
+  return false;
 
-doit:
+ doit:
   if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
-    return FALSE;
+    return false;
   each_size = obj_reloc_entry_size (abfd);
 
   count = reloc_size / each_size;
@@ -409,20 +412,13 @@ doit:
 
   reloc_cache = (arelent *) bfd_zmalloc (count * sizeof (arelent));
   if (!reloc_cache && count != 0)
-    return FALSE;
+    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;
+      return false;
     }
 
   if (each_size == RELOC_EXT_SIZE)
@@ -454,14 +450,14 @@ doit:
   bfd_release (abfd, relocs);
   asect->relocation = reloc_cache;
   asect->reloc_count = count;
-  return TRUE;
+  return true;
 }
 
 
 
 /* Write out a relocation section into an object file.  */
 
-static bfd_boolean
+static bool
 NAME(lynx,squirt_out_relocs) (bfd *abfd, asection *section)
 {
   arelent **generic;
@@ -471,14 +467,14 @@ NAME(lynx,squirt_out_relocs) (bfd *abfd,
   bfd_size_type natsize;
 
   if (count == 0)
-    return TRUE;
+    return true;
 
   each_size = obj_reloc_entry_size (abfd);
   natsize = count;
   natsize *= each_size;
   native = (unsigned char *) bfd_zalloc (abfd, natsize);
   if (!native)
-    return FALSE;
+    return false;
 
   generic = section->orelocation;
 
@@ -497,14 +493,14 @@ NAME(lynx,squirt_out_relocs) (bfd *abfd,
 	NAME(lynx,swap_std_reloc_out) (abfd, *generic, (struct reloc_std_external *) natptr);
     }
 
-  if (bfd_bwrite (native, natsize, abfd) != natsize)
+  if (bfd_write (native, natsize, abfd) != natsize)
     {
       bfd_release (abfd, native);
-      return FALSE;
+      return false;
     }
   bfd_release (abfd, native);
 
-  return TRUE;
+  return true;
 }
 
 /* This is stupid.  This function should be a boolean 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.20200303/bfd/i386msdos.c ./bfd/i386msdos.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/i386msdos.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/i386msdos.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for MS-DOS executables.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Bryan Ford of the University of Utah.
 
    Contributed by the Center for Software Science at the
@@ -33,7 +33,7 @@
 #define EXE_LOAD_LOW	0xffff
 #define EXE_PAGE_SIZE	512
 
-static bfd_boolean
+static bool
 msdos_mkobject (bfd *abfd)
 {
   bfd_default_set_arch_mach (abfd, bfd_arch_i386, bfd_mach_i386_i8086);
@@ -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)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || (size = bfd_read (&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_read (buffer, 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
@@ -122,7 +124,7 @@ msdos_sizeof_headers (bfd *abfd ATTRIBUT
   return 0;
 }
 
-static bfd_boolean
+static bool
 msdos_write_object_contents (bfd *abfd)
 {
   static char hdr[EXE_PAGE_SIZE];
@@ -155,7 +157,7 @@ msdos_write_object_contents (bfd *abfd)
   if (high_vma > (bfd_vma)0xffff)
     {
       bfd_set_error(bfd_error_file_too_big);
-      return FALSE;
+      return false;
     }
 
   /* Constants.  */
@@ -177,14 +179,14 @@ msdos_write_object_contents (bfd *abfd)
      The program's crt0 code must relocate it to a real stack.  */
   H_PUT_16 (abfd, high_vma, &hdr[16]);
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bwrite (hdr, (bfd_size_type) sizeof(hdr), abfd) != sizeof(hdr))
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_write (hdr, sizeof (hdr), abfd) != sizeof (hdr))
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 msdos_set_section_contents (bfd *abfd,
 			    sec_ptr section,
 			    const void *location,
@@ -193,18 +195,18 @@ msdos_set_section_contents (bfd *abfd,
 {
 
   if (count == 0)
-    return TRUE;
+    return true;
 
   section->filepos = EXE_PAGE_SIZE + bfd_section_vma (section);
 
   if (bfd_section_flags (section) & SEC_LOAD)
     {
       if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
-	  || bfd_bwrite (location, count, abfd) != count)
-	return FALSE;
+	  || bfd_write (location, count, abfd) != count)
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 
@@ -217,8 +219,6 @@ msdos_set_section_contents (bfd *abfd,
 #define msdos_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
 #define msdos_new_section_hook _bfd_generic_new_section_hook
 #define msdos_get_section_contents _bfd_generic_get_section_contents
-#define msdos_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
 #define msdos_bfd_get_relocated_section_contents \
   bfd_generic_get_relocated_section_contents
 #define msdos_bfd_relax_section bfd_generic_relax_section
@@ -250,6 +250,7 @@ msdos_set_section_contents (bfd *abfd,
 #define msdos_get_symbol_version_string \
   _bfd_nosymbols_get_symbol_version_string
 #define msdos_find_nearest_line _bfd_nosymbols_find_nearest_line
+#define msdos_find_nearest_line_with_alt _bfd_nosymbols_find_nearest_line_with_alt
 #define msdos_find_line _bfd_nosymbols_find_line
 #define msdos_find_inliner_info _bfd_nosymbols_find_inliner_info
 #define msdos_get_lineno _bfd_nosymbols_get_lineno
@@ -277,6 +278,7 @@ const bfd_target i386_msdos_vec =
     ' ',				/* ar_pad_char */
     16,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     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 */
@@ -293,13 +295,13 @@ const bfd_target i386_msdos_vec =
     {
       _bfd_bool_bfd_false_error,
       msdos_mkobject,
-      _bfd_generic_mkarchive,
+      _bfd_bool_bfd_false_error,
       _bfd_bool_bfd_false_error,
     },
     {				/* bfd_write_contents */
       _bfd_bool_bfd_false_error,
       msdos_write_object_contents,
-      _bfd_write_archive_contents,
+      _bfd_bool_bfd_false_error,
       _bfd_bool_bfd_false_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.20200303/bfd/ihex.c ./bfd/ihex.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ihex.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ihex.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Intel Hex objects.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2025 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.
@@ -160,54 +160,54 @@ struct ihex_data_struct
 static void
 ihex_init (void)
 {
-  static bfd_boolean inited;
+  static bool inited;
 
   if (! inited)
     {
-      inited = TRUE;
+      inited = true;
       hex_init ();
     }
 }
 
 /* Create an ihex object.  */
 
-static bfd_boolean
+static bool
 ihex_mkobject (bfd *abfd)
 {
   struct ihex_data_struct *tdata;
 
   tdata = (struct ihex_data_struct *) bfd_alloc (abfd, sizeof (* tdata));
   if (tdata == NULL)
-    return FALSE;
+    return false;
 
   abfd->tdata.ihex_data = tdata;
   tdata->head = NULL;
   tdata->tail = NULL;
-  return TRUE;
+  return true;
 }
 
 /* Read a byte from a BFD.  Set *ERRORPTR if an error occurred.
    Return EOF on error or end of file.  */
 
-static INLINE int
-ihex_get_byte (bfd *abfd, bfd_boolean *errorptr)
+static inline int
+ihex_get_byte (bfd *abfd, bool *errorptr)
 {
   bfd_byte c;
 
-  if (bfd_bread (&c, (bfd_size_type) 1, abfd) != 1)
+  if (bfd_read (&c, 1, abfd) != 1)
     {
       if (bfd_get_error () != bfd_error_file_truncated)
-	*errorptr = TRUE;
+	*errorptr = true;
       return EOF;
     }
 
-  return (int) (c & 0xff);
+  return c & 0xff;
 }
 
 /* Report a problem in an Intel Hex file.  */
 
 static void
-ihex_bad_byte (bfd *abfd, unsigned int lineno, int c, bfd_boolean error)
+ihex_bad_byte (bfd *abfd, unsigned int lineno, int c, bool error)
 {
   if (c == EOF)
     {
@@ -236,19 +236,19 @@ ihex_bad_byte (bfd *abfd, unsigned int l
 /* Read an Intel hex file and turn it into sections.  We create a new
    section for each contiguous set of bytes.  */
 
-static bfd_boolean
+static bool
 ihex_scan (bfd *abfd)
 {
   bfd_vma segbase;
   bfd_vma extbase;
   asection *sec;
   unsigned int lineno;
-  bfd_boolean error;
+  bool error;
   bfd_byte *buf = NULL;
   size_t bufsize;
   int c;
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
     goto error_return;
 
   abfd->start_address = 0;
@@ -257,7 +257,7 @@ ihex_scan (bfd *abfd)
   extbase = 0;
   sec = NULL;
   lineno = 1;
-  error = FALSE;
+  error = false;
   bufsize = 0;
 
   while ((c = ihex_get_byte (abfd, &error)) != EOF)
@@ -289,7 +289,7 @@ ihex_scan (bfd *abfd)
 	  pos = bfd_tell (abfd) - 1;
 
 	  /* Read the header bytes.  */
-	  if (bfd_bread (hdr, (bfd_size_type) 8, abfd) != 8)
+	  if (bfd_read (hdr, 8, abfd) != 8)
 	    goto error_return;
 
 	  for (i = 0; i < 8; i++)
@@ -309,13 +309,13 @@ ihex_scan (bfd *abfd)
 	  chars = len * 2 + 2;
 	  if (chars >= bufsize)
 	    {
-	      buf = (bfd_byte *) bfd_realloc (buf, (bfd_size_type) chars);
+	      buf = bfd_realloc (buf, chars);
 	      if (buf == NULL)
 		goto error_return;
 	      bufsize = chars;
 	    }
 
-	  if (bfd_bread (buf, (bfd_size_type) chars, abfd) != chars)
+	  if (bfd_read (buf, chars, abfd) != chars)
 	    goto error_return;
 
 	  for (i = 0; i < chars; i++)
@@ -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,9 +381,8 @@ ihex_scan (bfd *abfd)
 	      /* An end record.  */
 	      if (abfd->start_address == 0)
 		abfd->start_address = addr;
-	      if (buf != NULL)
-		free (buf);
-	      return TRUE;
+	      free (buf);
+	      return true;
 
 	    case 2:
 	      /* An extended address record.  */
@@ -474,32 +473,28 @@ ihex_scan (bfd *abfd)
   if (error)
     goto error_return;
 
-  if (buf != NULL)
-    free (buf);
-
-  return TRUE;
+  free (buf);
+  return true;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
-  return FALSE;
+  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;
   bfd_byte b[9];
   unsigned int i;
   unsigned int type;
 
   ihex_init ();
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
     return NULL;
-  if (bfd_bread (b, (bfd_size_type) 9, abfd) != 9)
+  if (bfd_read (b, 9, abfd) != 9)
     {
       if (bfd_get_error () == bfd_error_file_truncated)
 	bfd_set_error (bfd_error_wrong_format);
@@ -529,35 +524,35 @@ ihex_object_p (bfd *abfd)
     }
 
   /* OK, it looks like it really is an Intel Hex file.  */
-  tdata_save = abfd->tdata.any;
-  if (! ihex_mkobject (abfd) || ! ihex_scan (abfd))
+  if (!ihex_mkobject (abfd))
+    return NULL;
+
+  if (!ihex_scan (abfd))
     {
-      if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
-	bfd_release (abfd, abfd->tdata.any);
-      abfd->tdata.any = tdata_save;
+      bfd_release (abfd, abfd->tdata.any);
       return NULL;
     }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 /* Read the contents of a section in an Intel Hex file.  */
 
-static bfd_boolean
+static bool
 ihex_read_section (bfd *abfd, asection *section, bfd_byte *contents)
 {
   int c;
   bfd_byte *p;
   bfd_byte *buf = NULL;
   size_t bufsize;
-  bfd_boolean error;
+  bool error;
 
   if (bfd_seek (abfd, section->filepos, SEEK_SET) != 0)
     goto error_return;
 
   p = contents;
   bufsize = 0;
-  error = FALSE;
+  error = false;
   while ((c = ihex_get_byte (abfd, &error)) != EOF)
     {
       unsigned char hdr[8];
@@ -572,7 +567,7 @@ ihex_read_section (bfd *abfd, asection *
 	 know the exact format.  */
       BFD_ASSERT (c == ':');
 
-      if (bfd_bread (hdr, (bfd_size_type) 8, abfd) != 8)
+      if (bfd_read (hdr, 8, abfd) != 8)
 	goto error_return;
 
       len = HEX2 (hdr);
@@ -589,13 +584,13 @@ ihex_read_section (bfd *abfd, asection *
 
       if (len * 2 > bufsize)
 	{
-	  buf = (bfd_byte *) bfd_realloc (buf, (bfd_size_type) len * 2);
+	  buf = bfd_realloc (buf, len * 2);
 	  if (buf == NULL)
 	    goto error_return;
 	  bufsize = len * 2;
 	}
 
-      if (bfd_bread (buf, (bfd_size_type) len * 2, abfd) != len * 2)
+      if (bfd_read (buf, len * 2, abfd) != len * 2)
 	goto error_return;
 
       for (i = 0; i < len; i++)
@@ -603,13 +598,12 @@ 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);
-	  return TRUE;
+	  free (buf);
+	  return true;
 	}
 
       /* Skip the checksum.  */
-      if (bfd_bread (buf, (bfd_size_type) 2, abfd) != 2)
+      if (bfd_read (buf, 2, abfd) != 2)
 	goto error_return;
     }
 
@@ -621,20 +615,17 @@ ihex_read_section (bfd *abfd, asection *
       goto error_return;
     }
 
-  if (buf != NULL)
-    free (buf);
-
-  return TRUE;
+  free (buf);
+  return true;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
-  return FALSE;
+  free (buf);
+  return false;
 }
 
 /* Get the contents of a section in an Intel Hex file.  */
 
-static bfd_boolean
+static bool
 ihex_get_section_contents (bfd *abfd,
 			   asection *section,
 			   void * location,
@@ -645,21 +636,21 @@ ihex_get_section_contents (bfd *abfd,
     {
       section->used_by_bfd = bfd_alloc (abfd, section->size);
       if (section->used_by_bfd == NULL)
-	return FALSE;
+	return false;
       if (! ihex_read_section (abfd, section,
 			       (bfd_byte *) section->used_by_bfd))
-	return FALSE;
+	return false;
     }
 
   memcpy (location, (bfd_byte *) section->used_by_bfd + offset,
 	  (size_t) count);
 
-  return TRUE;
+  return true;
 }
 
 /* Set the contents of a section in an Intel Hex file.  */
 
-static bfd_boolean
+static bool
 ihex_set_section_contents (bfd *abfd,
 			   asection *section,
 			   const void * location,
@@ -673,15 +664,15 @@ ihex_set_section_contents (bfd *abfd,
   if (count == 0
       || (section->flags & SEC_ALLOC) == 0
       || (section->flags & SEC_LOAD) == 0)
-    return TRUE;
+    return true;
 
   n = (struct ihex_data_list *) bfd_alloc (abfd, sizeof (* n));
   if (n == NULL)
-    return FALSE;
+    return false;
 
   data = (bfd_byte *) bfd_alloc (abfd, count);
   if (data == NULL)
-    return FALSE;
+    return false;
   memcpy (data, location, (size_t) count);
 
   n->data = data;
@@ -712,12 +703,12 @@ ihex_set_section_contents (bfd *abfd,
 	tdata->tail = n;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write a record out to an Intel Hex file.  */
 
-static bfd_boolean
+static bool
 ihex_write_record (bfd *abfd,
 		   size_t count,
 		   unsigned int addr,
@@ -753,15 +744,15 @@ ihex_write_record (bfd *abfd,
   p[3] = '\n';
 
   total = 9 + count * 2 + 4;
-  if (bfd_bwrite (buf, (bfd_size_type) total, abfd) != total)
-    return FALSE;
+  if (bfd_write (buf, total, abfd) != total)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Write out an Intel Hex file.  */
 
-static bfd_boolean
+static bool
 ihex_write_object_contents (bfd *abfd)
 {
   bfd_vma segbase;
@@ -794,7 +785,7 @@ ihex_write_object_contents (bfd *abfd)
 	       " out of range for Intel Hex file"),
 	     abfd, (uint64_t) where);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       where &= 0xffffffff;
 #endif
@@ -811,21 +802,20 @@ 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;
 		  if (! ihex_write_record (abfd, 2, 0, 2, addr))
-		    return FALSE;
+		    return false;
 		}
 	      else
 		{
@@ -840,7 +830,7 @@ ihex_write_object_contents (bfd *abfd)
 		      addr[0] = 0;
 		      addr[1] = 0;
 		      if (! ihex_write_record (abfd, 2, 0, 2, addr))
-			return FALSE;
+			return false;
 		      segbase = 0;
 		    }
 
@@ -853,12 +843,12 @@ ihex_write_object_contents (bfd *abfd)
 			   " out of range for Intel Hex file"),
 			 abfd, (uint64_t) where);
 		      bfd_set_error (bfd_error_bad_value);
-		      return FALSE;
+		      return false;
 		    }
 		  addr[0] = (bfd_byte)(extbase >> 24) & 0xff;
 		  addr[1] = (bfd_byte)(extbase >> 16) & 0xff;
 		  if (! ihex_write_record (abfd, 2, 0, 4, addr))
-		    return FALSE;
+		    return false;
 		}
 	    }
 
@@ -869,7 +859,7 @@ ihex_write_object_contents (bfd *abfd)
 	    now = 0x10000 - rec_addr;
 
 	  if (! ihex_write_record (abfd, now, rec_addr, 0, p))
-	    return FALSE;
+	    return false;
 
 	  where += now;
 	  p += now;
@@ -891,7 +881,7 @@ ihex_write_object_contents (bfd *abfd)
 	  startbuf[2] = (bfd_byte)(start >> 8) & 0xff;
 	  startbuf[3] = (bfd_byte)start & 0xff;
 	  if (! ihex_write_record (abfd, 4, 0, 3, startbuf))
-	    return FALSE;
+	    return false;
 	}
       else
 	{
@@ -900,20 +890,20 @@ ihex_write_object_contents (bfd *abfd)
 	  startbuf[2] = (bfd_byte)(start >> 8) & 0xff;
 	  startbuf[3] = (bfd_byte)start & 0xff;
 	  if (! ihex_write_record (abfd, 4, 0, 5, startbuf))
-	    return FALSE;
+	    return false;
 	}
     }
 
   if (! ihex_write_record (abfd, 0, 0, 1, NULL))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Set the architecture for the output file.  The architecture is
    irrelevant, so we ignore errors about unknown architectures.  */
 
-static bfd_boolean
+static bool
 ihex_set_arch_mach (bfd *abfd,
 		    enum bfd_architecture arch,
 		    unsigned long mach)
@@ -921,18 +911,9 @@ ihex_set_arch_mach (bfd *abfd,
   if (! bfd_default_set_arch_mach (abfd, arch, mach))
     {
       if (arch != bfd_arch_unknown)
-	return FALSE;
+	return false;
     }
-  return TRUE;
-}
-
-/* Get the size of the headers, for the linker.  */
-
-static int
-ihex_sizeof_headers (bfd *abfd ATTRIBUTE_UNUSED,
-		     struct bfd_link_info *info ATTRIBUTE_UNUSED)
-{
-  return 0;
+  return true;
 }
 
 /* Some random definitions for the target vector.  */
@@ -940,22 +921,7 @@ ihex_sizeof_headers (bfd *abfd ATTRIBUTE
 #define	ihex_close_and_cleanup			  _bfd_generic_close_and_cleanup
 #define ihex_bfd_free_cached_info		  _bfd_generic_bfd_free_cached_info
 #define ihex_new_section_hook			  _bfd_generic_new_section_hook
-#define ihex_get_section_contents_in_window	  _bfd_generic_get_section_contents_in_window
-#define ihex_get_symtab_upper_bound		  _bfd_long_bfd_0
-#define ihex_canonicalize_symtab		  _bfd_nosymbols_canonicalize_symtab
-#define ihex_make_empty_symbol			  _bfd_generic_make_empty_symbol
-#define ihex_print_symbol			  _bfd_nosymbols_print_symbol
-#define ihex_get_symbol_info			  _bfd_nosymbols_get_symbol_info
-#define ihex_get_symbol_version_string		  _bfd_nosymbols_get_symbol_version_string
-#define ihex_bfd_is_target_special_symbol	  _bfd_bool_bfd_asymbol_false
-#define ihex_bfd_is_local_label_name		  _bfd_nosymbols_bfd_is_local_label_name
-#define ihex_get_lineno				  _bfd_nosymbols_get_lineno
-#define ihex_find_nearest_line			  _bfd_nosymbols_find_nearest_line
-#define ihex_find_line				  _bfd_nosymbols_find_line
-#define ihex_find_inliner_info			  _bfd_nosymbols_find_inliner_info
-#define ihex_bfd_make_debug_symbol		  _bfd_nosymbols_bfd_make_debug_symbol
-#define ihex_read_minisymbols			  _bfd_nosymbols_read_minisymbols
-#define ihex_minisymbol_to_symbol		  _bfd_nosymbols_minisymbol_to_symbol
+#define ihex_sizeof_headers			  _bfd_nolink_sizeof_headers
 #define ihex_bfd_get_relocated_section_contents	  bfd_generic_get_relocated_section_contents
 #define ihex_bfd_relax_section			  bfd_generic_relax_section
 #define ihex_bfd_gc_sections			  bfd_generic_gc_sections
@@ -990,6 +956,7 @@ const bfd_target ihex_vec =
   ' ',				/* AR_pad_char.  */
   16,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
@@ -1006,13 +973,13 @@ const bfd_target ihex_vec =
   {
     _bfd_bool_bfd_false_error,
     ihex_mkobject,
-    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
   {				/* bfd_write_contents.  */
     _bfd_bool_bfd_false_error,
     ihex_write_object_contents,
-    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
 
@@ -1020,7 +987,7 @@ const bfd_target ihex_vec =
   BFD_JUMP_TABLE_COPY (_bfd_generic),
   BFD_JUMP_TABLE_CORE (_bfd_nocore),
   BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
-  BFD_JUMP_TABLE_SYMBOLS (ihex),
+  BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
   BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
   BFD_JUMP_TABLE_WRITE (ihex),
   BFD_JUMP_TABLE_LINK (ihex),
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/init.c ./bfd/init.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/init.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/init.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* bfd initialization stuff
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -33,29 +33,3 @@ SUBSECTION
 	These are the functions that handle initializing a BFD.
 */
 
-/*
-FUNCTION
-	bfd_init
-
-SYNOPSIS
-	unsigned int bfd_init (void);
-
-DESCRIPTION
-	This routine must be called before any other BFD function to
-	initialize magical internal data structures.
-	Returns a magic number, which may be used to check
-	that the bfd library is configured as expected by users.
-.
-.{* Value returned by bfd_init.  *}
-.
-.#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
-*/
-
-/* Actually, there is currently nothing for this function to do.
-   However, someday it may be needed, so keep it around.  */
-
-unsigned int
-bfd_init (void)
-{
-  return BFD_INIT_MAGIC;
-}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/irix-core.c ./bfd/irix-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/irix-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/irix-core.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for Irix core files.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
    Written by Stu Grossman, Cygnus Support.
    Converted to back-end form by Ian Lance Taylor, Cygnus Support
 
@@ -61,7 +61,7 @@ do_sections64 (bfd *abfd, struct coreout
 
   for (i = 0; i < coreout->c_nvmap; i++)
     {
-      val = bfd_bread (&vmap, (bfd_size_type) sizeof vmap, abfd);
+      val = bfd_read (&vmap, sizeof vmap, abfd);
       if (val != sizeof vmap)
 	break;
 
@@ -109,7 +109,7 @@ do_sections (bfd *abfd, struct coreout *
 
   for (i = 0; i < coreout->c_nvmap; i++)
     {
-      val = bfd_bread (&vmap, (bfd_size_type) sizeof vmap, abfd);
+      val = bfd_read (&vmap, sizeof vmap, abfd);
       if (val != sizeof vmap)
 	break;
 
@@ -166,15 +166,15 @@ 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);
+  val = bfd_read (&coreout, sizeof coreout, abfd);
   if (val != sizeof coreout)
     {
       if (bfd_get_error () != bfd_error_system_call)
@@ -203,7 +203,8 @@ irix_core_core_file_p (bfd *abfd)
   if (!core_hdr (abfd))
     return NULL;
 
-  strncpy (core_command (abfd), coreout.c_name, CORE_NAMESIZE);
+  strncpy (core_command (abfd), coreout.c_name, CORE_NAMESIZE - 1);
+  core_command (abfd)[CORE_NAMESIZE - 1] = 0;
   core_signal (abfd) = coreout.c_sigcause;
 
   if (bfd_seek (abfd, coreout.c_vmapoffset, SEEK_SET) != 0)
@@ -244,7 +245,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));
@@ -275,9 +276,9 @@ swap_abort(void)
 #define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
 #define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
 #define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
+#define	NO_GET64 ((uint64_t (*) (const void *)) swap_abort)
+#define	NO_PUT64 ((void (*) (uint64_t, void *)) swap_abort)
+#define	NO_GETS64 ((int64_t (*) (const void *)) swap_abort)
 
 const bfd_target core_irix_vec =
   {
@@ -293,6 +294,7 @@ const bfd_target core_irix_vec =
     ' ',						   /* ar_pad_char */
     16,							   /* ar_max_namelen */
     0,							   /* match_priority */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 16 bit 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.20200303/bfd/libaout.h ./bfd/libaout.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libaout.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libaout.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -102,7 +102,7 @@ struct aout_link_hash_entry
 {
   struct bfd_link_hash_entry root;
   /* Whether this symbol has been written out.  */
-  bfd_boolean written;
+  bool written;
   /* Symbol index in output file.  */
   int indx;
 };
@@ -125,7 +125,7 @@ struct aout_link_hash_table
 #define aout_link_hash_traverse(table, func, info)			\
   (bfd_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct bfd_link_hash_entry *, void *)) (func),	\
     (info)))
 
 /* Get the a.out link hash table from the info structure.  This is
@@ -164,7 +164,7 @@ struct aout_backend_data
 
   /* Callback for setting the page and segment sizes, if they can't be
      trivially determined from the architecture.  */
-  bfd_boolean (*set_sizes) (bfd *);
+  bool (*set_sizes) (bfd *);
 
   /* zmagic files only. For go32, the length of the exec header contributes
      to the size of the text section in the file for alignment purposes but
@@ -173,39 +173,32 @@ struct aout_backend_data
 
   /* Callback from the add symbols phase of the linker code to handle
      a dynamic object.  */
-  bfd_boolean (*add_dynamic_symbols)
+  bool (*add_dynamic_symbols)
     (bfd *, struct bfd_link_info *, struct external_nlist **,
      bfd_size_type *, char **);
 
-  /* Callback from the add symbols phase of the linker code to handle
-     adding a single symbol to the global linker hash table.  */
-  bfd_boolean (*add_one_symbol)
-    (struct bfd_link_info *, bfd *, const char *, flagword,
-     asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
-     struct bfd_link_hash_entry **);
-
   /* Called to handle linking a dynamic object.  */
-  bfd_boolean (*link_dynamic_object)
+  bool (*link_dynamic_object)
     (struct bfd_link_info *, bfd *);
 
   /* Called for each global symbol being written out by the linker.
      This should write out the dynamic symbol information.  */
-  bfd_boolean (*write_dynamic_symbol)
+  bool (*write_dynamic_symbol)
     (bfd *, struct bfd_link_info *, struct aout_link_hash_entry *);
 
   /* If this callback is not NULL, the linker calls it for each reloc.
      RELOC is a pointer to the unswapped reloc.  If *SKIP is set to
      TRUE, the reloc will be skipped.  *RELOCATION may be changed to
      change the effects of the relocation.  */
-  bfd_boolean (*check_dynamic_reloc)
+  bool (*check_dynamic_reloc)
     (struct bfd_link_info *info, bfd *input_bfd,
      asection *input_section, struct aout_link_hash_entry *h,
-     void * reloc, bfd_byte *contents, bfd_boolean *skip,
+     void * reloc, bfd_byte *contents, bool *skip,
      bfd_vma *relocation);
 
   /* Called at the end of a link to finish up any dynamic linking
      information.  */
-  bfd_boolean (*finish_dynamic_link) (bfd *, struct bfd_link_info *);
+  bool (*finish_dynamic_link) (bfd *, struct bfd_link_info *);
 };
 #define aout_backend_info(abfd) \
 	((const struct aout_backend_data *)((abfd)->xvec->backend_data))
@@ -359,7 +352,8 @@ enum aout_magic {
   undecided_magic = 0,
   z_magic,
   o_magic,
-  n_magic
+  n_magic,
+  i_magic
 };
 
 struct aoutdata
@@ -407,10 +401,8 @@ struct aoutdata
   /* The external symbol information.  */
   struct external_nlist *external_syms;
   bfd_size_type external_sym_count;
-  bfd_window sym_window;
   char *external_strings;
   bfd_size_type external_string_size;
-  bfd_window string_window;
   struct aout_link_hash_entry **sym_hashes;
 
   /* A pointer for shared library information.  */
@@ -441,10 +433,8 @@ struct  aout_data_struct
 #define obj_aout_subformat(bfd)		   (adata (bfd).subformat)
 #define obj_aout_external_syms(bfd)	   (adata (bfd).external_syms)
 #define obj_aout_external_sym_count(bfd)   (adata (bfd).external_sym_count)
-#define obj_aout_sym_window(bfd)	   (adata (bfd).sym_window)
 #define obj_aout_external_strings(bfd)	   (adata (bfd).external_strings)
 #define obj_aout_external_string_size(bfd) (adata (bfd).external_string_size)
-#define obj_aout_string_window(bfd)	   (adata (bfd).string_window)
 #define obj_aout_sym_hashes(bfd)	   (adata (bfd).sym_hashes)
 #define obj_aout_dynamic_info(bfd)	   (adata (bfd).dynamic_info)
 
@@ -452,58 +442,43 @@ struct  aout_data_struct
    macro is only ever applied to an asymbol.  */
 #define aout_symbol(asymbol) ((aout_symbol_type *)(&(asymbol)->the_bfd))
 
-/* Information we keep for each a.out section.  This is currently only
-   used by the a.out backend linker.  */
-
-struct aout_section_data_struct
-{
-  /* The unswapped relocation entries for this section.  */
-  void * relocs;
-};
-
-#define aout_section_data(s) \
-  ((struct aout_section_data_struct *) (s)->used_by_bfd)
-
-#define set_aout_section_data(s,v) \
-  ((s)->used_by_bfd = (void *)&(v)->relocs)
-
 /* Prototype declarations for functions defined in aoutx.h.  */
 
-extern bfd_boolean NAME (aout, squirt_out_relocs)
+extern bool NAME (aout, squirt_out_relocs)
   (bfd *, asection *);
 
-extern bfd_boolean NAME (aout, make_sections)
+extern bool 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)
+extern bool NAME (aout, mkobject)
   (bfd *);
 
 extern enum machine_type NAME (aout, machine_type)
-  (enum bfd_architecture, unsigned long, bfd_boolean *);
+  (enum bfd_architecture, unsigned long, bool *);
 
-extern bfd_boolean NAME (aout, set_arch_mach)
+extern bool NAME (aout, set_arch_mach)
   (bfd *, enum bfd_architecture, unsigned long);
 
-extern bfd_boolean NAME (aout, new_section_hook)
+extern bool NAME (aout, new_section_hook)
   (bfd *, asection *);
 
-extern bfd_boolean NAME (aout, set_section_contents)
+extern bool NAME (aout, set_section_contents)
   (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
 
 extern asymbol * NAME (aout, make_empty_symbol)
   (bfd *);
 
-extern bfd_boolean NAME (aout, translate_symbol_table)
+extern bool NAME (aout, translate_symbol_table)
   (bfd *, aout_symbol_type *, struct external_nlist *, bfd_size_type,
-	   char *, bfd_size_type, bfd_boolean);
+   char *, bfd_size_type, bool);
 
-extern bfd_boolean NAME (aout, slurp_symbol_table)
+extern bool NAME (aout, slurp_symbol_table)
   (bfd *);
 
-extern bfd_boolean NAME (aout, write_syms)
+extern bool NAME (aout, write_syms)
   (bfd *);
 
 extern void NAME (aout, reclaim_symbol_table)
@@ -529,7 +504,7 @@ extern reloc_howto_type * NAME (aout, re
 extern reloc_howto_type * NAME (aout, reloc_name_lookup)
   (bfd *, const char *);
 
-extern bfd_boolean NAME (aout, slurp_reloc_table)
+extern bool NAME (aout, slurp_reloc_table)
   (bfd *, sec_ptr, asymbol **);
 
 extern long NAME (aout, canonicalize_reloc)
@@ -550,32 +525,32 @@ extern void NAME (aout, print_symbol)
 extern void NAME (aout, get_symbol_info)
   (bfd *, asymbol *, symbol_info *);
 
-extern bfd_boolean NAME (aout, find_nearest_line)
+extern bool NAME (aout, find_nearest_line)
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *);
 
 extern long NAME (aout, read_minisymbols)
-  (bfd *, bfd_boolean, void * *, unsigned int *);
+  (bfd *, bool, void * *, unsigned int *);
 
 extern asymbol * NAME (aout, minisymbol_to_symbol)
-  (bfd *, bfd_boolean, const void *, asymbol *);
+  (bfd *, bool, const void *, asymbol *);
 
 extern int NAME (aout, sizeof_headers)
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean NAME (aout, adjust_sizes_and_vmas)
+extern bool NAME (aout, adjust_sizes_and_vmas)
   (bfd *);
 
 extern void NAME (aout, swap_exec_header_in)
   (bfd *, struct external_exec *, struct internal_exec *);
 
-extern void NAME (aout, swap_exec_header_out)
+extern bool NAME (aout, swap_exec_header_out)
   (bfd *, struct internal_exec *, struct external_exec *);
 
 extern struct bfd_hash_entry * NAME (aout, link_hash_newfunc)
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
 
-extern bfd_boolean NAME (aout, link_hash_table_init)
+extern bool NAME (aout, link_hash_table_init)
   (struct aout_link_hash_table *, bfd *,
    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
 			       struct bfd_hash_table *,
@@ -585,14 +560,14 @@ extern bfd_boolean NAME (aout, link_hash
 extern struct bfd_link_hash_table * NAME (aout, link_hash_table_create)
   (bfd *);
 
-extern bfd_boolean NAME (aout, link_add_symbols)
+extern bool NAME (aout, link_add_symbols)
   (bfd *, struct bfd_link_info *);
 
-extern bfd_boolean NAME (aout, final_link)
+extern bool NAME (aout, final_link)
   (bfd *, struct bfd_link_info *,
    void (*) (bfd *, file_ptr *, file_ptr *, file_ptr *));
 
-extern bfd_boolean NAME (aout, bfd_free_cached_info)
+extern bool NAME (aout, bfd_free_cached_info)
   (bfd *);
 
 #define aout_32_find_inliner_info	_bfd_nosymbols_find_inliner_info
@@ -608,9 +583,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
@@ -621,46 +593,47 @@ extern bfd_boolean NAME (aout, bfd_free_
 #endif
 
 #ifndef WRITE_HEADERS
-#define WRITE_HEADERS(abfd, execp)					      \
-      {									      \
-	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 (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0		      \
-	    || bfd_bwrite (& exec_bytes, (bfd_size_type) EXEC_BYTES_SIZE,     \
-			  abfd) != EXEC_BYTES_SIZE)			      \
-	  return FALSE;							      \
-	/* Now write out reloc info, followed by syms and strings.  */	      \
-									      \
-	if (bfd_get_outsymbols (abfd) != 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;							      \
-      }
+#define WRITE_HEADERS(abfd, execp)					\
+  {									\
+    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));			\
+    if (!NAME (aout, swap_exec_header_out) (abfd, execp, &exec_bytes))	\
+      return false;							\
+									\
+    if (bfd_seek (abfd, 0, SEEK_SET) != 0				\
+	|| bfd_write (&exec_bytes, EXEC_BYTES_SIZE,			\
+		      abfd) != EXEC_BYTES_SIZE)				\
+      return false;							\
+    /* Now write out reloc info, followed by syms and strings.  */	\
+									\
+    if (bfd_get_outsymbols (abfd) != NULL				\
+	&& bfd_get_symcount (abfd) != 0)				\
+      {									\
+	if (bfd_seek (abfd, N_SYMOFF (execp), SEEK_SET) != 0)		\
+	  return false;							\
+									\
+	if (! NAME (aout, write_syms) (abfd))				\
+	  return false;							\
+      }									\
+									\
+    if (bfd_seek (abfd, N_TRELOFF (execp), SEEK_SET) != 0)		\
+      return false;							\
+    if (!NAME (aout, squirt_out_relocs) (abfd, obj_textsec (abfd)))	\
+      return false;							\
+									\
+    if (bfd_seek (abfd, N_DRELOFF (execp), SEEK_SET) != 0)		\
+      return false;							\
+    if (!NAME (aout, squirt_out_relocs) (abfd, obj_datasec (abfd)))	\
+      return false;							\
+  }
 #endif
 
 /* Test if a read-only section can be merged with .text.  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.20200303/bfd/libbfd.c ./bfd/libbfd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libbfd.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libbfd.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Assorted BFD support routines, only used internally.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -21,7 +21,9 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#include "elf-bfd.h"
 #include "libbfd.h"
+#include "objalloc.h"
 
 #ifndef HAVE_GETPAGESIZE
 #define getpagesize() 2048
@@ -40,30 +42,30 @@ DESCRIPTION
 	completeness.
 */
 
-bfd_boolean
+bool
 _bfd_bool_bfd_false (bfd *abfd ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 _bfd_bool_bfd_asymbol_false (bfd *abfd ATTRIBUTE_UNUSED,
 			     asymbol *sym ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
 /* A routine which is used in target vectors for unsupported
    operations.  */
 
-bfd_boolean
+bool
 _bfd_bool_bfd_false_error (bfd *ignore ATTRIBUTE_UNUSED)
 {
   bfd_set_error (bfd_error_invalid_operation);
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 _bfd_bool_bfd_link_false_error (bfd *abfd,
 				struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
@@ -73,56 +75,56 @@ _bfd_bool_bfd_link_false_error (bfd *abf
 /* A routine which is used in target vectors for supported operations
    which do not actually do anything.  */
 
-bfd_boolean
+bool
 _bfd_bool_bfd_true (bfd *ignore ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_bool_bfd_link_true (bfd *abfd ATTRIBUTE_UNUSED,
 			 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_bool_bfd_bfd_true (bfd *ibfd ATTRIBUTE_UNUSED,
 			bfd *obfd ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_bool_bfd_uint_true (bfd *abfd ATTRIBUTE_UNUSED,
 			 unsigned int flags ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_bool_bfd_asection_bfd_asection_true (bfd *ibfd ATTRIBUTE_UNUSED,
 					  asection *isec ATTRIBUTE_UNUSED,
 					  bfd *obfd ATTRIBUTE_UNUSED,
 					  asection *osec ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_bool_bfd_asymbol_bfd_asymbol_true (bfd *ibfd ATTRIBUTE_UNUSED,
 					asymbol *isym ATTRIBUTE_UNUSED,
 					bfd *obfd ATTRIBUTE_UNUSED,
 					asymbol *osym ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_bool_bfd_ptr_true (bfd *abfd ATTRIBUTE_UNUSED,
 			void *ptr ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /* A routine which is used in target vectors for unsupported
@@ -206,13 +208,13 @@ _bfd_norelocs_set_reloc (bfd *abfd ATTRI
   /* Do nothing.  */
 }
 
-bfd_boolean
+bool
 _bfd_nocore_core_file_matches_executable_p
   (bfd *ignore_core_bfd ATTRIBUTE_UNUSED,
    bfd *ignore_exec_bfd ATTRIBUTE_UNUSED)
 {
   bfd_set_error (bfd_error_invalid_operation);
-  return FALSE;
+  return false;
 }
 
 /* Routine to handle core_file_failing_command entry point for targets
@@ -245,7 +247,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);
@@ -258,6 +260,20 @@ _bfd_dummy_target (bfd *ignore_abfd ATTR
 #define SSIZE_MAX ((size_t) -1 >> 1)
 #endif
 
+/*
+INTERNAL_FUNCTION
+	bfd_malloc
+
+SYNOPSIS
+	void *bfd_malloc (bfd_size_type {*size*});
+
+DESCRIPTION
+	Returns a pointer to an allocated block of memory that is at least
+	SIZE bytes long.  If SIZE is 0 then it will be treated as if it were
+	1.  If SIZE is too big then NULL will be returned.
+	
+	Returns NULL upon error and sets bfd_error.
+*/
 void *
 bfd_malloc (bfd_size_type size)
 {
@@ -272,31 +288,36 @@ bfd_malloc (bfd_size_type size)
       return NULL;
     }
 
-  ptr = malloc (sz);
-  if (ptr == NULL && sz != 0)
+  ptr = malloc (sz ? sz : 1);
+  if (ptr == NULL)
     bfd_set_error (bfd_error_no_memory);
 
   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;
-    }
+/*
+INTERNAL_FUNCTION
+	bfd_realloc
 
-  return bfd_malloc (size * nmemb);
-}
+SYNOPSIS
+	void *bfd_realloc (void *{*mem*}, bfd_size_type {*size*});
 
-/* Reallocate memory using realloc.  */
+DESCRIPTION
+	Returns a pointer to an allocated block of memory that is at least
+	SIZE bytes long.  If SIZE is 0 then it will be treated as if it were
+	1.  If SIZE is too big then NULL will be returned.
+	
+	If MEM is not NULL then it must point to an allocated block of memory.
+	If this block is large enough then MEM may be used as the return
+	value for this function, but this is not guaranteed.
+
+	If MEM is not returned then the first N bytes in the returned block
+	will be identical to the first N bytes in region pointed to by MEM,
+	where N is the lessor of SIZE and the length of the region of memory
+	currently addressed by MEM.
 
+	Returns NULL upon error and sets bfd_error.
+*/
 void *
 bfd_realloc (void *ptr, bfd_size_type size)
 {
@@ -314,74 +335,168 @@ bfd_realloc (void *ptr, bfd_size_type si
       return NULL;
     }
 
-  ret = realloc (ptr, sz);
+  /* The behaviour of realloc(0) is implementation defined,
+     but for this function we always allocate memory.  */
+  ret = realloc (ptr, sz ? sz : 1);
 
-  if (ret == NULL && sz != 0)
+  if (ret == NULL)
     bfd_set_error (bfd_error_no_memory);
 
   return ret;
 }
 
-/* Reallocate memory using realloc, nmemb * size with overflow checking.  */
+/*
+INTERNAL_FUNCTION
+	bfd_realloc_or_free
+
+SYNOPSIS
+	void *bfd_realloc_or_free (void *{*mem*}, bfd_size_type {*size*});
 
+DESCRIPTION
+	Returns a pointer to an allocated block of memory that is at least
+	SIZE bytes long.  If SIZE is 0 then no memory will be allocated,
+	MEM will be freed, and NULL will be returned.  This will not cause
+	bfd_error to be set.
+
+	If SIZE is too big then NULL will be returned and bfd_error will be
+	set. 
+	
+	If MEM is not NULL then it must point to an allocated block of memory.
+	If this block is large enough then MEM may be used as the return
+	value for this function, but this is not guaranteed.
+
+	If MEM is not returned then the first N bytes in the returned block
+	will be identical to the first N bytes in region pointed to by MEM,
+	where N is the lessor of SIZE and the length of the region of memory
+	currently addressed by MEM.
+*/
 void *
-bfd_realloc2 (void *ptr, bfd_size_type nmemb, bfd_size_type size)
+bfd_realloc_or_free (void *ptr, bfd_size_type size)
 {
-  if ((nmemb | size) >= HALF_BFD_SIZE_TYPE
-      && size != 0
-      && nmemb > ~(bfd_size_type) 0 / size)
+  void *ret;
+
+  /* The behaviour of realloc(0) is implementation defined, but
+     for this function we treat it is always freeing the memory.  */
+  if (size == 0)
     {
-      bfd_set_error (bfd_error_no_memory);
+      free (ptr);
       return NULL;
     }
+      
+  ret = bfd_realloc (ptr, size);
+  if (ret == NULL)
+    free (ptr);
 
-  return bfd_realloc (ptr, size * nmemb);
+  return ret;
 }
 
-/* Reallocate memory using realloc.
-   If this fails the pointer is freed before returning.  */
+/*
+INTERNAL_FUNCTION
+	bfd_zmalloc
+
+SYNOPSIS
+	void *bfd_zmalloc (bfd_size_type {*size*});
+
+DESCRIPTION
+	Returns a pointer to an allocated block of memory that is at least
+	SIZE bytes long.  If SIZE is 0 then it will be treated as if it were
+	1.  If SIZE is too big then NULL will be returned.
+	
+	Returns NULL upon error and sets bfd_error.
 
+	If NULL is not returned then the allocated block of memory will
+	have been cleared.
+*/
 void *
-bfd_realloc_or_free (void *ptr, bfd_size_type size)
+bfd_zmalloc (bfd_size_type size)
 {
-  void *ret = bfd_realloc (ptr, size);
+  void *ptr = bfd_malloc (size);
 
-  if (ret == NULL && ptr != NULL)
-    free (ptr);
+  if (ptr != NULL)
+    memset (ptr, 0, size ? (size_t) size : 1);
 
-  return ret;
+  return ptr;
 }
 
-/* Allocate memory using malloc and clear it.  */
+/*
+FUNCTION
+	bfd_alloc
+
+SYNOPSIS
+	void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
+
+DESCRIPTION
+	Allocate a block of @var{wanted} bytes of memory attached to
+	<<abfd>> and return a pointer to it.
+*/
 
 void *
-bfd_zmalloc (bfd_size_type size)
+bfd_alloc (bfd *abfd, bfd_size_type size)
 {
-  void *ptr = bfd_malloc (size);
+  void *ret;
+  unsigned long ul_size = (unsigned long) size;
 
-  if (ptr != NULL && size > 0)
-    memset (ptr, 0, (size_t) size);
+  if (size != ul_size
+      /* Note - although objalloc_alloc takes an unsigned long as its
+	 argument, internally the size is treated as a signed long.  This can
+	 lead to problems where, for example, a request to allocate -1 bytes
+	 can result in just 1 byte being allocated, rather than
+	 ((unsigned long) -1) bytes.  Also memory checkers will often
+	 complain about attempts to allocate a negative amount of memory.
+	 So to stop these problems we fail if the size is negative.  */
+      || ((signed long) ul_size) < 0)
+    {
+      bfd_set_error (bfd_error_no_memory);
+      return NULL;
+    }
 
-  return ptr;
+  ret = objalloc_alloc ((struct objalloc *) abfd->memory, ul_size);
+  if (ret == NULL)
+    bfd_set_error (bfd_error_no_memory);
+  else
+    abfd->alloc_size += size;
+  return ret;
 }
 
-/* Allocate memory using malloc (nmemb * size) with overflow checking
-   and clear it.  */
+/*
+FUNCTION
+	bfd_zalloc
+
+SYNOPSIS
+	void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
+
+DESCRIPTION
+	Allocate a block of @var{wanted} bytes of zeroed memory
+	attached to <<abfd>> and return a pointer to it.
+*/
 
 void *
-bfd_zmalloc2 (bfd_size_type nmemb, bfd_size_type size)
+bfd_zalloc (bfd *abfd, bfd_size_type size)
 {
-  void *ptr = bfd_malloc2 (nmemb, size);
+  void *res;
 
-  if (ptr != NULL)
-    {
-      size_t sz = nmemb * size;
+  res = bfd_alloc (abfd, size);
+  if (res)
+    memset (res, 0, (size_t) size);
+  return res;
+}
 
-      if (sz > 0)
-	memset (ptr, 0, sz);
-    }
+/*
+FUNCTION
+	bfd_release
 
-  return ptr;
+SYNOPSIS
+	void bfd_release (bfd *, void *);
+
+DESCRIPTION
+	Free a block allocated for a BFD.
+	Note: Also frees all more recently allocated blocks!
+*/
+
+void
+bfd_release (bfd *abfd, void *block)
+{
+  objalloc_free_block ((struct objalloc *) abfd->memory, block);
 }
 
 /*
@@ -389,7 +504,7 @@ INTERNAL_FUNCTION
 	bfd_write_bigendian_4byte_int
 
 SYNOPSIS
-	bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
+	bool bfd_write_bigendian_4byte_int (bfd *, unsigned int);
 
 DESCRIPTION
 	Write a 4 byte integer @var{i} to the output BFD @var{abfd}, in big
@@ -397,12 +512,12 @@ DESCRIPTION
 	archives.
 
 */
-bfd_boolean
+bool
 bfd_write_bigendian_4byte_int (bfd *abfd, unsigned int i)
 {
   bfd_byte buffer[4];
-  bfd_putb32 ((bfd_vma) i, buffer);
-  return bfd_bwrite (buffer, (bfd_size_type) 4, abfd) == 4;
+  bfd_putb32 (i, buffer);
+  return bfd_write (buffer, 4, abfd) == 4;
 }
 
 
@@ -445,13 +560,13 @@ DESCRIPTION
 .{* Byte swapping macros for user section data.  *}
 .
 .#define bfd_put_8(abfd, val, ptr) \
-.  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
+.  ((void) (*((bfd_byte *) (ptr)) = (val) & 0xff))
 .#define bfd_put_signed_8 \
 .  bfd_put_8
 .#define bfd_get_8(abfd, ptr) \
-.  ((bfd_vma) *(const unsigned char *) (ptr) & 0xff)
+.  ((bfd_vma) *(const bfd_byte *) (ptr) & 0xff)
 .#define bfd_get_signed_8(abfd, ptr) \
-.  ((((bfd_signed_vma) *(const unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
+.  ((((bfd_signed_vma) *(const bfd_byte *) (ptr) & 0xff) ^ 0x80) - 0x80)
 .
 .#define bfd_put_16(abfd, val, ptr) \
 .  BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
@@ -495,7 +610,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)		\
@@ -585,7 +700,43 @@ DESCRIPTION
 #define COERCE16(x) (((bfd_vma) (x) ^ 0x8000) - 0x8000)
 #define COERCE32(x) (((bfd_vma) (x) ^ 0x80000000) - 0x80000000)
 #define COERCE64(x) \
-  (((bfd_uint64_t) (x) ^ ((bfd_uint64_t) 1 << 63)) - ((bfd_uint64_t) 1 << 63))
+  (((uint64_t) (x) ^ ((uint64_t) 1 << 63)) - ((uint64_t) 1 << 63))
+
+/*
+FUNCTION
+	Byte swapping routines.
+
+SYNOPSIS
+	uint64_t bfd_getb64 (const void *);
+	uint64_t bfd_getl64 (const void *);
+	int64_t bfd_getb_signed_64 (const void *);
+	int64_t bfd_getl_signed_64 (const void *);
+	bfd_vma bfd_getb32 (const void *);
+	bfd_vma bfd_getl32 (const void *);
+	bfd_signed_vma bfd_getb_signed_32 (const void *);
+	bfd_signed_vma bfd_getl_signed_32 (const void *);
+	bfd_vma bfd_getb16 (const void *);
+	bfd_vma bfd_getl16 (const void *);
+	bfd_signed_vma bfd_getb_signed_16 (const void *);
+	bfd_signed_vma bfd_getl_signed_16 (const void *);
+	void bfd_putb64 (uint64_t, void *);
+	void bfd_putl64 (uint64_t, void *);
+	void bfd_putb32 (bfd_vma, void *);
+	void bfd_putl32 (bfd_vma, void *);
+	void bfd_putb24 (bfd_vma, void *);
+	void bfd_putl24 (bfd_vma, void *);
+	void bfd_putb16 (bfd_vma, void *);
+	void bfd_putl16 (bfd_vma, void *);
+	uint64_t bfd_get_bits (const void *, int, bool);
+	void bfd_put_bits (uint64_t, void *, int, bool);
+
+DESCRIPTION
+	Read and write integers in a particular endian order.  getb
+	and putb functions handle big-endian, getl and putl handle
+	little-endian.  bfd_get_bits and bfd_put_bits specify
+	big-endian by passing TRUE in the last parameter,
+	little-endian by passing FALSE.
+*/
 
 bfd_vma
 bfd_getb16 (const void *p)
@@ -653,11 +804,11 @@ bfd_vma
 bfd_getb24 (const void *p)
 {
   const bfd_byte *addr = (const bfd_byte *) p;
-  unsigned long v;
+  uint32_t v;
 
-  v =  (unsigned long) addr[0] << 16;
-  v |= (unsigned long) addr[1] << 8;
-  v |= (unsigned long) addr[2];
+  v =  (uint32_t) addr[0] << 16;
+  v |= (uint32_t) addr[1] << 8;
+  v |= (uint32_t) addr[2];
   return v;
 }
 
@@ -665,11 +816,11 @@ bfd_vma
 bfd_getl24 (const void *p)
 {
   const bfd_byte *addr = (const bfd_byte *) p;
-  unsigned long v;
+  uint32_t v;
 
-  v = (unsigned long) addr[0];
-  v |= (unsigned long) addr[1] << 8;
-  v |= (unsigned long) addr[2] << 16;
+  v = (uint32_t) addr[0];
+  v |= (uint32_t) addr[1] << 8;
+  v |= (uint32_t) addr[2] << 16;
   return v;
 }
 
@@ -677,12 +828,12 @@ bfd_vma
 bfd_getb32 (const void *p)
 {
   const bfd_byte *addr = (const bfd_byte *) p;
-  unsigned long v;
+  uint32_t v;
 
-  v = (unsigned long) addr[0] << 24;
-  v |= (unsigned long) addr[1] << 16;
-  v |= (unsigned long) addr[2] << 8;
-  v |= (unsigned long) addr[3];
+  v = (uint32_t) addr[0] << 24;
+  v |= (uint32_t) addr[1] << 16;
+  v |= (uint32_t) addr[2] << 8;
+  v |= (uint32_t) addr[3];
   return v;
 }
 
@@ -690,12 +841,12 @@ bfd_vma
 bfd_getl32 (const void *p)
 {
   const bfd_byte *addr = (const bfd_byte *) p;
-  unsigned long v;
+  uint32_t v;
 
-  v = (unsigned long) addr[0];
-  v |= (unsigned long) addr[1] << 8;
-  v |= (unsigned long) addr[2] << 16;
-  v |= (unsigned long) addr[3] << 24;
+  v = (uint32_t) addr[0];
+  v |= (uint32_t) addr[1] << 8;
+  v |= (uint32_t) addr[2] << 16;
+  v |= (uint32_t) addr[3] << 24;
   return v;
 }
 
@@ -703,12 +854,12 @@ bfd_signed_vma
 bfd_getb_signed_32 (const void *p)
 {
   const bfd_byte *addr = (const bfd_byte *) p;
-  unsigned long v;
+  uint32_t v;
 
-  v = (unsigned long) addr[0] << 24;
-  v |= (unsigned long) addr[1] << 16;
-  v |= (unsigned long) addr[2] << 8;
-  v |= (unsigned long) addr[3];
+  v = (uint32_t) addr[0] << 24;
+  v |= (uint32_t) addr[1] << 16;
+  v |= (uint32_t) addr[2] << 8;
+  v |= (uint32_t) addr[3];
   return COERCE32 (v);
 }
 
@@ -716,21 +867,20 @@ bfd_signed_vma
 bfd_getl_signed_32 (const void *p)
 {
   const bfd_byte *addr = (const bfd_byte *) p;
-  unsigned long v;
+  uint32_t v;
 
-  v = (unsigned long) addr[0];
-  v |= (unsigned long) addr[1] << 8;
-  v |= (unsigned long) addr[2] << 16;
-  v |= (unsigned long) addr[3] << 24;
+  v = (uint32_t) addr[0];
+  v |= (uint32_t) addr[1] << 8;
+  v |= (uint32_t) addr[2] << 16;
+  v |= (uint32_t) addr[3] << 24;
   return COERCE32 (v);
 }
 
-bfd_uint64_t
-bfd_getb64 (const void *p ATTRIBUTE_UNUSED)
+uint64_t
+bfd_getb64 (const void *p)
 {
-#ifdef BFD_HOST_64_BIT
   const bfd_byte *addr = (const bfd_byte *) p;
-  bfd_uint64_t v;
+  uint64_t v;
 
   v  = addr[0]; v <<= 8;
   v |= addr[1]; v <<= 8;
@@ -742,18 +892,13 @@ bfd_getb64 (const void *p ATTRIBUTE_UNUS
   v |= addr[7];
 
   return v;
-#else
-  BFD_FAIL();
-  return 0;
-#endif
 }
 
-bfd_uint64_t
-bfd_getl64 (const void *p ATTRIBUTE_UNUSED)
+uint64_t
+bfd_getl64 (const void *p)
 {
-#ifdef BFD_HOST_64_BIT
   const bfd_byte *addr = (const bfd_byte *) p;
-  bfd_uint64_t v;
+  uint64_t v;
 
   v  = addr[7]; v <<= 8;
   v |= addr[6]; v <<= 8;
@@ -765,19 +910,13 @@ bfd_getl64 (const void *p ATTRIBUTE_UNUS
   v |= addr[0];
 
   return v;
-#else
-  BFD_FAIL();
-  return 0;
-#endif
-
 }
 
-bfd_int64_t
-bfd_getb_signed_64 (const void *p ATTRIBUTE_UNUSED)
+int64_t
+bfd_getb_signed_64 (const void *p)
 {
-#ifdef BFD_HOST_64_BIT
   const bfd_byte *addr = (const bfd_byte *) p;
-  bfd_uint64_t v;
+  uint64_t v;
 
   v  = addr[0]; v <<= 8;
   v |= addr[1]; v <<= 8;
@@ -789,18 +928,13 @@ bfd_getb_signed_64 (const void *p ATTRIB
   v |= addr[7];
 
   return COERCE64 (v);
-#else
-  BFD_FAIL();
-  return 0;
-#endif
 }
 
-bfd_int64_t
-bfd_getl_signed_64 (const void *p ATTRIBUTE_UNUSED)
+int64_t
+bfd_getl_signed_64 (const void *p)
 {
-#ifdef BFD_HOST_64_BIT
   const bfd_byte *addr = (const bfd_byte *) p;
-  bfd_uint64_t v;
+  uint64_t v;
 
   v  = addr[7]; v <<= 8;
   v |= addr[6]; v <<= 8;
@@ -812,10 +946,6 @@ bfd_getl_signed_64 (const void *p ATTRIB
   v |= addr[0];
 
   return COERCE64 (v);
-#else
-  BFD_FAIL();
-  return 0;
-#endif
 }
 
 void
@@ -839,9 +969,8 @@ bfd_putl32 (bfd_vma data, void *p)
 }
 
 void
-bfd_putb64 (bfd_uint64_t data ATTRIBUTE_UNUSED, void *p ATTRIBUTE_UNUSED)
+bfd_putb64 (uint64_t data, void *p)
 {
-#ifdef BFD_HOST_64_BIT
   bfd_byte *addr = (bfd_byte *) p;
   addr[0] = (data >> (7*8)) & 0xff;
   addr[1] = (data >> (6*8)) & 0xff;
@@ -851,15 +980,11 @@ bfd_putb64 (bfd_uint64_t data ATTRIBUTE_
   addr[5] = (data >> (2*8)) & 0xff;
   addr[6] = (data >> (1*8)) & 0xff;
   addr[7] = (data >> (0*8)) & 0xff;
-#else
-  BFD_FAIL();
-#endif
 }
 
 void
-bfd_putl64 (bfd_uint64_t data ATTRIBUTE_UNUSED, void *p ATTRIBUTE_UNUSED)
+bfd_putl64 (uint64_t data, void *p)
 {
-#ifdef BFD_HOST_64_BIT
   bfd_byte *addr = (bfd_byte *) p;
   addr[7] = (data >> (7*8)) & 0xff;
   addr[6] = (data >> (6*8)) & 0xff;
@@ -869,13 +994,10 @@ bfd_putl64 (bfd_uint64_t data ATTRIBUTE_
   addr[2] = (data >> (2*8)) & 0xff;
   addr[1] = (data >> (1*8)) & 0xff;
   addr[0] = (data >> (0*8)) & 0xff;
-#else
-  BFD_FAIL();
-#endif
 }
 
 void
-bfd_put_bits (bfd_uint64_t data, void *p, int bits, bfd_boolean big_p)
+bfd_put_bits (uint64_t data, void *p, int bits, bool big_p)
 {
   bfd_byte *addr = (bfd_byte *) p;
   int i;
@@ -894,11 +1016,11 @@ bfd_put_bits (bfd_uint64_t data, void *p
     }
 }
 
-bfd_uint64_t
-bfd_get_bits (const void *p, int bits, bfd_boolean big_p)
+uint64_t
+bfd_get_bits (const void *p, int bits, bool big_p)
 {
   const bfd_byte *addr = (const bfd_byte *) p;
-  bfd_uint64_t data;
+  uint64_t data;
   int i;
   int bytes;
 
@@ -917,9 +1039,207 @@ bfd_get_bits (const void *p, int bits, b
   return data;
 }
 
+#ifdef USE_MMAP
+/* Allocate a page to track mmapped memory and return the page and
+   the first entry.  Return NULL if mmap fails.  */
+
+static struct bfd_mmapped *
+bfd_allocate_mmapped_page (bfd *abfd, struct bfd_mmapped_entry **entry)
+{
+  struct bfd_mmapped * mmapped
+    = (struct bfd_mmapped *) mmap (NULL, _bfd_pagesize,
+				   PROT_READ | PROT_WRITE,
+				   MAP_PRIVATE | MAP_ANONYMOUS,
+				   -1, 0);
+  if (mmapped == MAP_FAILED)
+    return NULL;
+
+  mmapped->next = abfd->mmapped;
+  mmapped->max_entry
+    = ((_bfd_pagesize - offsetof (struct bfd_mmapped, entries))
+       / sizeof (struct bfd_mmapped_entry));
+  mmapped->next_entry = 1;
+  abfd->mmapped = mmapped;
+  *entry = mmapped->entries;
+  return mmapped;
+}
+
+/* Mmap a memory region of RSIZE bytes at the current file offset.
+   Return mmap address and size in MAP_ADDR and MAP_SIZE.  Return NULL
+   on invalid input and MAP_FAILED for mmap failure.  */
+
+static void *
+bfd_mmap_local (bfd *abfd, size_t rsize, void **map_addr, size_t *map_size)
+{
+  /* We mmap on the underlying file.  In an archive it might be nice
+     to limit RSIZE to the element size, but that can be fuzzed and
+     the offset returned by bfd_tell is relative to the start of the
+     element.  Therefore to reliably stop access beyond the end of a
+     file (and resulting bus errors) we must work with the underlying
+     file offset and size, and trust that callers will limit access to
+     within an archive element.  */
+  while (abfd->my_archive != NULL
+	 && !bfd_is_thin_archive (abfd->my_archive))
+    abfd = abfd->my_archive;
+
+  ufile_ptr filesize = bfd_get_size (abfd);
+  ufile_ptr offset = bfd_tell (abfd);
+  if (filesize < offset || filesize - offset < rsize)
+    {
+      bfd_set_error (bfd_error_file_truncated);
+      return NULL;
+    }
+
+  void *mem;
+  mem = bfd_mmap (abfd, NULL, rsize, PROT_READ | PROT_WRITE, MAP_PRIVATE,
+		  offset, map_addr, map_size);
+  return mem;
+}
+
+/* Mmap a memory region of RSIZE bytes at the current offset.
+   Return mmap address and size in MAP_ADDR and MAP_SIZE.  Return NULL
+   on invalid input.  */
+
+void *
+_bfd_mmap_temporary (bfd *abfd, size_t rsize, void **map_addr,
+		     size_t *map_size)
+{
+  /* Use mmap only if section size >= the minimum mmap section size.  */
+  if (rsize >= _bfd_minimum_mmap_size)
+    {
+      void *result = bfd_mmap_local (abfd, rsize, map_addr, map_size);
+      if (result != MAP_FAILED)
+	return result;
+    }
+
+  void *mem = _bfd_malloc_and_read (abfd, rsize, rsize);
+  /* NB: Set *MAP_ADDR to MEM and *MAP_SIZE to 0 to indicate that
+     _bfd_malloc_and_read is called.  */
+  *map_addr = mem;
+  *map_size = 0;
+  return mem;
+}
+
+/* Munmap RSIZE bytes at PTR.  */
+
+void
+_bfd_munmap_temporary (void *ptr, size_t rsize)
+{
+  /* NB: Since _bfd_munmap_temporary is called like free, PTR may be
+     NULL.  Otherwise, PTR and RSIZE must be valid.  If RSIZE is 0,
+     free is called.  */
+  if (ptr == NULL)
+    return;
+  if (rsize != 0)
+    {
+      if (munmap (ptr, rsize) != 0)
+	abort ();
+    }
+  else
+    free (ptr);
+}
+
+/* Mmap a memory region of RSIZE bytes at the current offset.
+   Return NULL on invalid input or mmap failure.  */
+
+void *
+_bfd_mmap_persistent (bfd *abfd, size_t rsize)
+{
+  /* Use mmap only if section size >= the minimum mmap section size.  */
+  if (rsize < _bfd_minimum_mmap_size)
+    return _bfd_alloc_and_read (abfd, rsize, rsize);
+
+  void *mem, *map_addr;
+  size_t map_size;
+  mem = bfd_mmap_local (abfd, rsize, &map_addr, &map_size);
+  if (mem == NULL)
+    return mem;
+  if (mem == MAP_FAILED)
+    return _bfd_alloc_and_read (abfd, rsize, rsize);
+
+  struct bfd_mmapped_entry *entry;
+  unsigned int next_entry;
+  struct bfd_mmapped *mmapped = abfd->mmapped;
+  if (mmapped != NULL
+      && (next_entry = mmapped->next_entry) < mmapped->max_entry)
+    {
+      entry = &mmapped->entries[next_entry];
+      mmapped->next_entry++;
+    }
+  else
+    {
+      mmapped = bfd_allocate_mmapped_page (abfd, &entry);
+      if (mmapped == NULL)
+	{
+	  munmap (map_addr, map_size);
+	  return NULL;
+	}
+    }
+
+  entry->addr = map_addr;
+  entry->size = map_size;
+
+  return mem;
+}
+#endif
+
+/* Attempt to read *SIZE_P bytes from ABFD's iostream to *DATA_P.
+   Return true if the full the amount has been read.  If *DATA_P is
+   NULL, mmap should be used, return the memory address at the
+   current offset in *DATA_P as well as return mmap address and size
+   in *MMAP_BASE and *SIZE_P.  Otherwise, return NULL in *MMAP_BASE
+   and 0 in *SIZE_P.  If FINAL_LINK is true, this is called from
+   elf_link_read_relocs_from_section.  */
+
+bool
+_bfd_mmap_read_temporary (void **data_p, size_t *size_p,
+			  void **mmap_base, bfd *abfd,
+			  bool final_link ATTRIBUTE_UNUSED)
+{
+  void *data = *data_p;
+  size_t size = *size_p;
+
+#ifdef USE_MMAP
+  /* NB: When FINAL_LINK is true, the size of the preallocated buffer
+     is _bfd_minimum_mmap_size and use mmap if the data size >=
+     _bfd_minimum_mmap_size.  Otherwise, use mmap if ABFD isn't an IR
+     input or the data size >= _bfd_minimum_mmap_size.  */
+  bool use_mmmap;
+  bool mmap_size = size >= _bfd_minimum_mmap_size;
+  if (final_link)
+    use_mmmap = mmap_size;
+  else
+    use_mmmap = (mmap_size
+		 && data == NULL
+		 && (abfd->flags & BFD_PLUGIN) == 0);
+  if (use_mmmap)
+    {
+      void *mmaped = _bfd_mmap_temporary (abfd, size, mmap_base, size_p);
+      if (mmaped == NULL)
+	return false;
+      *data_p = mmaped;
+      return true;
+    }
+#endif
+
+  if (data == NULL)
+    {
+      data = bfd_malloc (size);
+      if (data == NULL)
+	return false;
+      *data_p = data;
+      /* NB: _bfd_munmap_temporary will free *MMAP_BASE if *SIZE_P == 0.  */
+      *mmap_base = data;
+    }
+  else
+    *mmap_base = NULL;
+  *size_p = 0;
+  return bfd_read (data, size, abfd) == size;
+}
+
 /* Default implementation */
 
-bfd_boolean
+bool
 _bfd_generic_get_section_contents (bfd *abfd,
 				   sec_ptr section,
 				   void *location,
@@ -928,7 +1248,7 @@ _bfd_generic_get_section_contents (bfd *
 {
   bfd_size_type sz;
   if (count == 0)
-    return TRUE;
+    return true;
 
   if (section->compress_status != COMPRESS_SECTION_NONE)
     {
@@ -937,18 +1257,23 @@ _bfd_generic_get_section_contents (bfd *
 	(_("%pB: unable to get decompressed section %pA"),
 	 abfd, section);
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
-  /* We do allow reading of a section after bfd_final_link has
-     written the contents out to disk.  In that situation, rawsize is
-     just a stale version of size, so ignore it.  Otherwise we must be
-     reading an input section, where rawsize, if different to size,
-     is the on-disk size.  */
-  if (abfd->direction != write_direction && section->rawsize != 0)
-    sz = section->rawsize;
-  else
-    sz = section->size;
+#ifdef USE_MMAP
+  if (section->mmapped_p
+      && (section->contents != NULL || location != NULL))
+    {
+      _bfd_error_handler
+	/* xgettext:c-format */
+	(_("%pB: mapped section %pA has non-NULL buffer"),
+	 abfd, section);
+      bfd_set_error (bfd_error_invalid_operation);
+      return false;
+    }
+#endif
+
+  sz = bfd_get_section_limit_octets (abfd, section);
   if (offset + count < count
       || offset + count > sz
       || (abfd->my_archive != NULL
@@ -957,78 +1282,59 @@ _bfd_generic_get_section_contents (bfd *
 	      > arelt_size (abfd))))
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
-  if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
-      || bfd_bread (location, count, abfd) != count)
-    return FALSE;
-
-  return TRUE;
-}
+  if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0)
+    return false;
 
-bfd_boolean
-_bfd_generic_get_section_contents_in_window
-  (bfd *abfd ATTRIBUTE_UNUSED,
-   sec_ptr section ATTRIBUTE_UNUSED,
-   bfd_window *w ATTRIBUTE_UNUSED,
-   file_ptr offset ATTRIBUTE_UNUSED,
-   bfd_size_type count ATTRIBUTE_UNUSED)
-{
 #ifdef USE_MMAP
-  bfd_size_type sz;
+  if (section->mmapped_p)
+    {
+      if (location != 0
+	  || bfd_get_flavour (abfd) != bfd_target_elf_flavour)
+	abort ();
+
+      location = bfd_mmap_local (abfd, count,
+				 &elf_section_data (section)->contents_addr,
+				 &elf_section_data (section)->contents_size);
 
-  if (count == 0)
-    return TRUE;
-  if (abfd->xvec->_bfd_get_section_contents
-      != _bfd_generic_get_section_contents)
-    {
-      /* We don't know what changes the bfd's get_section_contents
-	 method may have to make.  So punt trying to map the file
-	 window, and let get_section_contents do its thing.  */
-      /* @@ FIXME : If the internal window has a refcount of 1 and was
-	 allocated with malloc instead of mmap, just reuse it.  */
-      bfd_free_window (w);
-      w->i = bfd_zmalloc (sizeof (bfd_window_internal));
-      if (w->i == NULL)
-	return FALSE;
-      w->i->data = bfd_malloc (count);
-      if (w->i->data == NULL)
+      if (location == NULL)
+	return false;
+
+      /* Check for iovec not supporting mmap.  */
+      if (location != MAP_FAILED)
+	{
+	  section->contents = location;
+	  return true;
+	}
+
+      /* Malloc the buffer and call bfd_read.  */
+      location = (bfd_byte *) bfd_malloc (count);
+      if (location == NULL)
 	{
-	  free (w->i);
-	  w->i = NULL;
-	  return FALSE;
+	  if (bfd_get_error () == bfd_error_no_memory)
+	    _bfd_error_handler
+	      /* xgettext:c-format */
+	      (_("error: %pB(%pA) is too large (%#" PRIx64 " bytes)"),
+	       abfd, section, (uint64_t) count);
+	  return false;
 	}
-      w->i->mapped = 0;
-      w->i->refcount = 1;
-      w->size = w->i->size = count;
-      w->data = w->i->data;
-      return bfd_get_section_contents (abfd, section, w->data, offset, count);
+      section->contents = location;
     }
-  if (abfd->direction != write_direction && section->rawsize != 0)
-    sz = section->rawsize;
-  else
-    sz = section->size;
-  if (offset + count < count
-      || offset + count > sz
-      || (abfd->my_archive != NULL
-	  && !bfd_is_thin_archive (abfd->my_archive)
-	  && ((ufile_ptr) section->filepos + offset + count
-	      > arelt_size (abfd)))
-      || ! bfd_get_file_window (abfd, section->filepos + offset, count, w,
-				TRUE))
-    return FALSE;
-  return TRUE;
-#else
-  abort ();
 #endif
+
+  if (bfd_read (location, count, abfd) != count)
+    return false;
+
+  return true;
 }
 
 /* This generic function can only be used in implementations where creating
    NEW sections is disallowed.  It is useful in patching existing sections
    in read-write files, though.  See other set_section_contents functions
    to see why it doesn't work for new sections.  */
-bfd_boolean
+bool
 _bfd_generic_set_section_contents (bfd *abfd,
 				   sec_ptr section,
 				   const void *location,
@@ -1036,13 +1342,13 @@ _bfd_generic_set_section_contents (bfd *
 				   bfd_size_type count)
 {
   if (count == 0)
-    return TRUE;
+    return true;
 
   if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
-      || bfd_bwrite (location, count, abfd) != count)
-    return FALSE;
+      || bfd_write (location, count, abfd) != count)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /*
@@ -1071,7 +1377,7 @@ bfd_log2 (bfd_vma x)
   return result;
 }
 
-bfd_boolean
+bool
 bfd_generic_is_local_label_name (bfd *abfd, const char *name)
 {
   char locals_prefix = (bfd_get_symbol_leading_char (abfd) == '_') ? 'L' : '.';
@@ -1079,34 +1385,6 @@ bfd_generic_is_local_label_name (bfd *ab
   return name[0] == locals_prefix;
 }
 
-/* Give a warning at runtime if someone compiles code which calls
-   old routines.  */
-
-void
-_bfd_warn_deprecated (const char *what,
-		      const char *file,
-		      int line,
-		      const char *func)
-{
-  /* Poor man's tracking of functions we've already warned about.  */
-  static size_t mask = 0;
-
-  if (~(size_t) func & ~mask)
-    {
-      fflush (stdout);
-      /* Note: separate sentences in order to allow
-	 for translation into other languages.  */
-      if (func)
-	/* xgettext:c-format */
-	fprintf (stderr, _("Deprecated %s called at %s line %d in %s\n"),
-		 what, file, line, func);
-      else
-	fprintf (stderr, _("Deprecated %s called\n"), what);
-      fflush (stderr);
-      mask |= ~(size_t) func;
-    }
-}
-
 /* Helper function for reading uleb128 encoded data.  */
 
 bfd_vma
@@ -1117,7 +1395,7 @@ _bfd_read_unsigned_leb128 (bfd *abfd ATT
   bfd_vma result;
   unsigned int num_read;
   unsigned int shift;
-  unsigned char byte;
+  bfd_byte byte;
 
   result = 0;
   shift = 0;
@@ -1127,46 +1405,47 @@ _bfd_read_unsigned_leb128 (bfd *abfd ATT
       byte = bfd_get_8 (abfd, buf);
       buf++;
       num_read++;
-      result |= (((bfd_vma) byte & 0x7f) << shift);
-      shift += 7;
+      if (shift < 8 * sizeof (result))
+	{
+	  result |= (((bfd_vma) byte & 0x7f) << shift);
+	  shift += 7;
+	}
     }
   while (byte & 0x80);
   *bytes_read_ptr = num_read;
   return result;
 }
 
-/* Read in a LEB128 encoded value from ABFD starting at DATA.
+/* Read in a LEB128 encoded value from ABFD starting at *PTR.
    If SIGN is true, return a signed LEB128 value.
-   If LENGTH_RETURN is not NULL, return in it the number of bytes read.
+   *PTR is incremented by the number of bytes read.
    No bytes will be read at address END or beyond.  */
 
 bfd_vma
 _bfd_safe_read_leb128 (bfd *abfd ATTRIBUTE_UNUSED,
-		       bfd_byte *data,
-		       unsigned int *length_return,
-		       bfd_boolean sign,
+		       bfd_byte **ptr,
+		       bool sign,
 		       const bfd_byte * const end)
 {
   bfd_vma result = 0;
-  unsigned int num_read = 0;
   unsigned int shift = 0;
-  unsigned char byte = 0;
+  bfd_byte byte = 0;
+  bfd_byte *data = *ptr;
 
   while (data < end)
     {
       byte = bfd_get_8 (abfd, data);
       data++;
-      num_read++;
-
-      result |= ((bfd_vma) (byte & 0x7f)) << shift;
-
-      shift += 7;
+      if (shift < 8 * sizeof (result))
+	{
+	  result |= ((bfd_vma) (byte & 0x7f)) << shift;
+	  shift += 7;
+	}
       if ((byte & 0x80) == 0)
 	break;
     }
 
-  if (length_return != NULL)
-    *length_return = num_read;
+  *ptr = data;
 
   if (sign && (shift < 8 * sizeof (result)) && (byte & 0x40))
     result |= -((bfd_vma) 1 << shift);
@@ -1184,7 +1463,7 @@ _bfd_read_signed_leb128 (bfd *abfd ATTRI
   bfd_vma result;
   unsigned int shift;
   unsigned int num_read;
-  unsigned char byte;
+  bfd_byte byte;
 
   result = 0;
   shift = 0;
@@ -1194,8 +1473,11 @@ _bfd_read_signed_leb128 (bfd *abfd ATTRI
       byte = bfd_get_8 (abfd, buf);
       buf ++;
       num_read ++;
-      result |= (((bfd_vma) byte & 0x7f) << shift);
-      shift += 7;
+      if (shift < 8 * sizeof (result))
+	{
+	  result |= (((bfd_vma) byte & 0x7f) << shift);
+	  shift += 7;
+	}
     }
   while (byte & 0x80);
   if (shift < 8 * sizeof (result) && (byte & 0x40))
@@ -1204,12 +1486,54 @@ _bfd_read_signed_leb128 (bfd *abfd ATTRI
   return result;
 }
 
-bfd_boolean
-_bfd_generic_init_private_section_data (bfd *ibfd ATTRIBUTE_UNUSED,
-					asection *isec ATTRIBUTE_UNUSED,
-					bfd *obfd ATTRIBUTE_UNUSED,
-					asection *osec ATTRIBUTE_UNUSED,
-					struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
+/* 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;
+}
+
+bool
+_bfd_generic_bfd_copy_private_section_data (bfd *ibfd ATTRIBUTE_UNUSED,
+					    asection *isec ATTRIBUTE_UNUSED,
+					    bfd *obfd ATTRIBUTE_UNUSED,
+					    asection *osec ATTRIBUTE_UNUSED,
+					    struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
+
+#ifdef HAVE_MMAP
+uintptr_t _bfd_pagesize;
+uintptr_t _bfd_pagesize_m1;
+uintptr_t _bfd_minimum_mmap_size;
+
+__attribute__ ((unused, constructor))
+static void
+bfd_init_pagesize (void)
+{
+  _bfd_pagesize = getpagesize ();
+  if (_bfd_pagesize == 0)
+    abort ();
+  _bfd_pagesize_m1 = _bfd_pagesize - 1;
+  /* The minimum section size to use mmap.  */
+  _bfd_minimum_mmap_size = _bfd_pagesize * 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.20200303/bfd/libbfd.h ./bfd/libbfd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libbfd.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libbfd.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,12 +1,13 @@
 /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
-   generated from "libbfd-in.h", "libbfd.c", "bfdio.c", "bfdwin.c",
-   "cache.c", "reloc.c", "archures.c" and "linker.c".
+   generated from "libbfd-in.h", "libbfd.c", "bfd.c", "bfdio.c",
+   "archive.c", "archures.c", "cache.c", "hash.c", "linker.c", "opncls.c",
+   "reloc.c", "section.c", "stabs.c" and "targets.c".
    Run "make headers" in your build bfd/ to regenerate.  */
 
 /* 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-2025 Free Software Foundation, Inc.
 
    Written by Cygnus Support.
 
@@ -44,10 +45,6 @@
 extern "C" {
 #endif
 
-/* If you want to read and write large blocks, you might want to do it
-   in quanta of this amount */
-#define DEFAULT_BUFFERSIZE 8192
-
 /* Set a tdata field.  Can't use the other macros for this, since they
    do casts, and casting to the left of assignment isn't portable.  */
 #define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
@@ -77,10 +74,9 @@ extern unsigned int _bfd_section_id ATTR
 
 struct artdata
 {
-  file_ptr first_file_filepos;
+  ufile_ptr first_file_filepos;
   /* Speed up searching the armap */
   htab_t cache;
-  bfd *archive_head;		/* Only interesting in output routines.  */
   carsym *symdefs;		/* The symdef entries.  */
   symindex symdef_count;	/* How many there are.  */
   char *extended_names;		/* Clever intel extension.  */
@@ -115,18 +111,6 @@ struct areltdata
 
 extern void *bfd_malloc
   (bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_realloc
-  (void *, bfd_size_type) ATTRIBUTE_HIDDEN;
-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)
@@ -137,34 +121,26 @@ bfd_strdup (const char *str)
     memcpy (buf, str, len);
   return buf;
 }
-/* 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;
 
 extern bfd * _bfd_create_empty_archive_element_shell
   (bfd *) ATTRIBUTE_HIDDEN;
 extern bfd * _bfd_look_for_bfd_in_cache
   (bfd *, file_ptr) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_add_bfd_to_archive_cache
+extern bool _bfd_add_bfd_to_archive_cache
   (bfd *, file_ptr, bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_generic_mkarchive
+extern bool _bfd_generic_mkarchive
   (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
+extern bool bfd_slurp_armap
   (bfd *) ATTRIBUTE_HIDDEN;
 #define bfd_slurp_bsd_armap bfd_slurp_armap
 #define bfd_slurp_coff_armap bfd_slurp_armap
-extern bfd_boolean _bfd_archive_64_bit_slurp_armap
+extern bool _bfd_archive_64_bit_slurp_armap
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_archive_64_bit_write_armap
+extern bool _bfd_archive_64_bit_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int) ATTRIBUTE_HIDDEN;
 #define _bfd_archive_64_bit_slurp_extended_name_table \
   _bfd_slurp_extended_name_table
@@ -184,44 +160,40 @@ extern bfd_boolean _bfd_archive_64_bit_w
   bfd_generic_stat_arch_elt
 #define _bfd_archive_64_bit_update_armap_timestamp _bfd_bool_bfd_true
 
-extern bfd_boolean _bfd_slurp_extended_name_table
+extern bool _bfd_slurp_extended_name_table
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_construct_extended_name_table
-  (bfd *, bfd_boolean, char **, bfd_size_type *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_write_archive_contents
+extern bool _bfd_construct_extended_name_table
+  (bfd *, bool, char **, bfd_size_type *) ATTRIBUTE_HIDDEN;
+extern bool _bfd_write_archive_contents
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_compute_and_write_armap
+extern bool _bfd_compute_and_write_armap
   (bfd *, unsigned int) ATTRIBUTE_HIDDEN;
 extern bfd *_bfd_get_elt_at_filepos
-  (bfd *, file_ptr) ATTRIBUTE_HIDDEN;
+  (bfd *, file_ptr, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 extern bfd *_bfd_generic_get_elt_at_index
   (bfd *, symindex) ATTRIBUTE_HIDDEN;
-extern bfd * _bfd_new_bfd
-  (void) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_free_cached_info
-  (bfd *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_bool_bfd_false
+extern bool _bfd_bool_bfd_false
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_asymbol_false
+extern bool _bfd_bool_bfd_asymbol_false
   (bfd *, asymbol *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_false_error
+extern bool _bfd_bool_bfd_false_error
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_link_false_error
+extern bool _bfd_bool_bfd_link_false_error
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_true
+extern bool _bfd_bool_bfd_true
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_link_true
+extern bool _bfd_bool_bfd_link_true
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_bfd_true
+extern bool _bfd_bool_bfd_bfd_true
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_uint_true
+extern bool _bfd_bool_bfd_uint_true
   (bfd *, unsigned int) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_asection_bfd_asection_true
+extern bool _bfd_bool_bfd_asection_bfd_asection_true
   (bfd *, asection *, bfd *, asection *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_asymbol_bfd_asymbol_true
+extern bool _bfd_bool_bfd_asymbol_bfd_asymbol_true
   (bfd *, asymbol *, bfd *, asymbol *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_ptr_true
+extern bool _bfd_bool_bfd_ptr_true
   (bfd *, void *) ATTRIBUTE_HIDDEN;
 extern void *_bfd_ptr_bfd_null_error
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -240,10 +212,9 @@ extern void _bfd_void_bfd_link
 extern void _bfd_void_bfd_asection
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
 
-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;
@@ -252,26 +223,26 @@ extern void bfd_bsd_truncate_arname
 extern void bfd_gnu_truncate_arname
   (bfd *, const char *, char *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_bsd_write_armap
+extern bool _bfd_bsd_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_coff_write_armap
+extern bool _bfd_coff_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int) ATTRIBUTE_HIDDEN;
 
 extern void *_bfd_generic_read_ar_hdr
   (bfd *) ATTRIBUTE_HIDDEN;
 extern void _bfd_ar_spacepad
   (char *, size_t, const char *, long) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_ar_sizepad
+extern bool _bfd_ar_sizepad
   (char *, size_t, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 extern void *_bfd_generic_read_ar_hdr_mag
   (bfd *, const char *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_generic_write_ar_hdr
+extern bool _bfd_generic_write_ar_hdr
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_bsd44_write_ar_hdr
+extern bool _bfd_bsd44_write_ar_hdr
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
 
 extern bfd * bfd_generic_openr_next_archived_file
@@ -283,22 +254,20 @@ extern int bfd_generic_stat_arch_elt
 #define _bfd_read_ar_hdr(abfd) \
 	BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
 #define _bfd_write_ar_hdr(archive, abfd)	 \
-	BFD_SEND (abfd, _bfd_write_ar_hdr_fn, (archive, abfd))
+	BFD_SEND (archive, _bfd_write_ar_hdr_fn, (archive, abfd))
 
 /* Generic routines to use for BFD_JUMP_TABLE_GENERIC.  Use
    BFD_JUMP_TABLE_GENERIC (_bfd_generic).  */
 
 #define _bfd_generic_close_and_cleanup _bfd_archive_close_and_cleanup
-extern bfd_boolean _bfd_archive_close_and_cleanup
+extern bool _bfd_archive_close_and_cleanup
   (bfd *) ATTRIBUTE_HIDDEN;
 extern void _bfd_unlink_from_archive_parent (bfd *) ATTRIBUTE_HIDDEN;
-#define _bfd_generic_bfd_free_cached_info _bfd_bool_bfd_true
-extern bfd_boolean _bfd_generic_new_section_hook
+#define _bfd_generic_bfd_free_cached_info _bfd_free_cached_info
+extern bool _bfd_generic_new_section_hook
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_generic_get_section_contents
+extern bool _bfd_generic_get_section_contents
   (bfd *, asection *, void *, file_ptr, bfd_size_type) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_generic_get_section_contents_in_window
-  (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 /* Generic routines to use for BFD_JUMP_TABLE_COPY.  Use
    BFD_JUMP_TABLE_COPY (_bfd_generic).  */
@@ -307,17 +276,14 @@ extern bfd_boolean _bfd_generic_get_sect
 #define _bfd_generic_bfd_merge_private_bfd_data \
   _bfd_bool_bfd_link_true
 #define _bfd_generic_bfd_set_private_flags _bfd_bool_bfd_uint_true
-#define _bfd_generic_bfd_copy_private_section_data \
-  _bfd_bool_bfd_asection_bfd_asection_true
+extern bool _bfd_generic_bfd_copy_private_section_data
+  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *)
+  ATTRIBUTE_HIDDEN;
 #define _bfd_generic_bfd_copy_private_symbol_data \
   _bfd_bool_bfd_asymbol_bfd_asymbol_true
 #define _bfd_generic_bfd_copy_private_header_data _bfd_bool_bfd_bfd_true
 #define _bfd_generic_bfd_print_private_bfd_data _bfd_bool_bfd_ptr_true
 
-extern bfd_boolean _bfd_generic_init_private_section_data
-  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *)
-  ATTRIBUTE_HIDDEN;
-
 /* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
    support.  Use BFD_JUMP_TABLE_CORE (_bfd_nocore).  */
 
@@ -325,7 +291,7 @@ extern char *_bfd_nocore_core_file_faili
   (bfd *) ATTRIBUTE_HIDDEN;
 extern int _bfd_nocore_core_file_failing_signal
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
+extern bool _bfd_nocore_core_file_matches_executable_p
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
 extern int _bfd_nocore_core_file_pid
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -335,14 +301,14 @@ extern int _bfd_nocore_core_file_pid
 
 #define _bfd_noarchive_slurp_armap _bfd_bool_bfd_false_error
 #define _bfd_noarchive_slurp_extended_name_table _bfd_bool_bfd_false_error
-extern bfd_boolean _bfd_noarchive_construct_extended_name_table
+extern bool _bfd_noarchive_construct_extended_name_table
   (bfd *, char **, bfd_size_type *, const char **) ATTRIBUTE_HIDDEN;
 extern void _bfd_noarchive_truncate_arname
   (bfd *, const char *, char *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_noarchive_write_armap
+extern bool _bfd_noarchive_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int) ATTRIBUTE_HIDDEN;
 #define _bfd_noarchive_read_ar_hdr _bfd_ptr_bfd_null_error
-extern bfd_boolean _bfd_noarchive_write_ar_hdr
+extern bool _bfd_noarchive_write_ar_hdr
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
 extern bfd *
 _bfd_noarchive_openr_next_archived_file
@@ -358,7 +324,7 @@ extern bfd * _bfd_noarchive_get_elt_at_i
 #define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
 #define _bfd_archive_bsd_slurp_extended_name_table \
   _bfd_slurp_extended_name_table
-extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
+extern bool _bfd_archive_bsd_construct_extended_name_table
   (bfd *, char **, bfd_size_type *, const char **) ATTRIBUTE_HIDDEN;
 #define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
 #define _bfd_archive_bsd_write_armap _bfd_bsd_write_armap
@@ -369,7 +335,7 @@ extern bfd_boolean _bfd_archive_bsd_cons
 #define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
 #define _bfd_archive_bsd_generic_stat_arch_elt \
   bfd_generic_stat_arch_elt
-extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
+extern bool _bfd_archive_bsd_update_armap_timestamp
   (bfd *) ATTRIBUTE_HIDDEN;
 
 /* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
@@ -378,7 +344,7 @@ extern bfd_boolean _bfd_archive_bsd_upda
 #define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
 #define _bfd_archive_coff_slurp_extended_name_table \
   _bfd_slurp_extended_name_table
-extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
+extern bool _bfd_archive_coff_construct_extended_name_table
   (bfd *, char **, bfd_size_type *, const char **) ATTRIBUTE_HIDDEN;
 #define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
 #define _bfd_archive_coff_write_armap _bfd_coff_write_armap
@@ -397,7 +363,7 @@ extern bfd_boolean _bfd_archive_coff_con
 #define _bfd_archive_bsd44_slurp_armap bfd_slurp_bsd_armap
 #define _bfd_archive_bsd44_slurp_extended_name_table \
   _bfd_slurp_extended_name_table
-extern bfd_boolean _bfd_archive_bsd44_construct_extended_name_table
+extern bool _bfd_archive_bsd44_construct_extended_name_table
   (bfd *, char **, bfd_size_type *, const char **) ATTRIBUTE_HIDDEN;
 #define _bfd_archive_bsd44_truncate_arname bfd_bsd_truncate_arname
 #define _bfd_archive_bsd44_write_armap _bfd_bsd_write_armap
@@ -415,7 +381,7 @@ extern bfd_boolean _bfd_archive_bsd44_co
    archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_vms_lib).  Some of them
    are irrelevant.  */
 
-extern bfd_boolean _bfd_vms_lib_write_archive_contents
+extern bool _bfd_vms_lib_write_archive_contents
   (bfd *) ATTRIBUTE_HIDDEN;
 #define _bfd_vms_lib_slurp_armap _bfd_noarchive_slurp_armap
 #define _bfd_vms_lib_slurp_extended_name_table \
@@ -440,19 +406,19 @@ 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
+extern bool _bfd_vms_lib_alpha_mkarchive
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_vms_lib_ia64_mkarchive
+extern bool _bfd_vms_lib_ia64_mkarchive
   (bfd *) ATTRIBUTE_HIDDEN;
 
 /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
    support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */
 
-#define _bfd_nosymbols_get_symtab_upper_bound _bfd_long_bfd_n1_error
+#define _bfd_nosymbols_get_symtab_upper_bound _bfd_long_bfd_0
 extern long _bfd_nosymbols_canonicalize_symtab
   (bfd *, asymbol **) ATTRIBUTE_HIDDEN;
 #define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
@@ -461,27 +427,31 @@ 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;
-extern bfd_boolean _bfd_nosymbols_bfd_is_local_label_name
+  (bfd *, asymbol *, bool, bool *) ATTRIBUTE_HIDDEN;
+extern bool _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
 extern alent *_bfd_nosymbols_get_lineno
   (bfd *, asymbol *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nosymbols_find_nearest_line
+extern bool _bfd_nosymbols_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *)
   ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nosymbols_find_line
+extern bool _bfd_nosymbols_find_nearest_line_with_alt
+  (bfd *, const char *, asymbol **, asection *, bfd_vma,
+   const char **, const char **, unsigned int *, unsigned int *)
+  ATTRIBUTE_HIDDEN;
+extern bool _bfd_nosymbols_find_line
   (bfd *, asymbol **, asymbol *, const char **, unsigned int *)
   ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nosymbols_find_inliner_info
+extern bool _bfd_nosymbols_find_inliner_info
   (bfd *, const char **, const char **, unsigned int *) ATTRIBUTE_HIDDEN;
 extern asymbol *_bfd_nosymbols_bfd_make_debug_symbol
-  (bfd *, void *, unsigned long) ATTRIBUTE_HIDDEN;
+  (bfd *) ATTRIBUTE_HIDDEN;
 extern long _bfd_nosymbols_read_minisymbols
-  (bfd *, bfd_boolean, void **, unsigned int *) ATTRIBUTE_HIDDEN;
+  (bfd *, bool, void **, unsigned int *) ATTRIBUTE_HIDDEN;
 extern asymbol *_bfd_nosymbols_minisymbol_to_symbol
-  (bfd *, bfd_boolean, const void *, asymbol *) ATTRIBUTE_HIDDEN;
+  (bfd *, bool, const void *, asymbol *) ATTRIBUTE_HIDDEN;
 
 /* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
    support.  Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs).  */
@@ -500,16 +470,16 @@ extern reloc_howto_type *_bfd_norelocs_b
 /* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
    be written.  Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite).  */
 
-extern bfd_boolean _bfd_nowrite_set_arch_mach
+extern bool _bfd_nowrite_set_arch_mach
   (bfd *, enum bfd_architecture, unsigned long) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nowrite_set_section_contents
+extern bool _bfd_nowrite_set_section_contents
   (bfd *, asection *, const void *, file_ptr, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 /* Generic routines to use for BFD_JUMP_TABLE_WRITE.  Use
    BFD_JUMP_TABLE_WRITE (_bfd_generic).  */
 
 #define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
-extern bfd_boolean _bfd_generic_set_section_contents
+extern bool _bfd_generic_set_section_contents
   (bfd *, asection *, const void *, file_ptr, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 /* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
@@ -519,18 +489,18 @@ extern int _bfd_nolink_sizeof_headers
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 extern bfd_byte *_bfd_nolink_bfd_get_relocated_section_contents
   (bfd *, struct bfd_link_info *, struct bfd_link_order *,
-   bfd_byte *, bfd_boolean, asymbol **) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nolink_bfd_relax_section
-  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *) ATTRIBUTE_HIDDEN;
+   bfd_byte *, bool, asymbol **) ATTRIBUTE_HIDDEN;
+extern bool _bfd_nolink_bfd_relax_section
+  (bfd *, asection *, struct bfd_link_info *, bool *) ATTRIBUTE_HIDDEN;
 #define _bfd_nolink_bfd_gc_sections _bfd_bool_bfd_link_false_error
-extern bfd_boolean _bfd_nolink_bfd_lookup_section_flags
+extern bool _bfd_nolink_bfd_lookup_section_flags
   (struct bfd_link_info *, struct flag_info *, asection *) ATTRIBUTE_HIDDEN;
 #define _bfd_nolink_bfd_merge_sections _bfd_bool_bfd_link_false_error
-extern bfd_boolean _bfd_nolink_bfd_is_group_section
+extern bool _bfd_nolink_bfd_is_group_section
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
 extern const char *_bfd_nolink_bfd_group_name
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nolink_bfd_discard_group
+extern bool _bfd_nolink_bfd_discard_group
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
 extern struct bfd_link_hash_table *_bfd_nolink_bfd_link_hash_table_create
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -541,11 +511,11 @@ extern void _bfd_nolink_bfd_copy_link_ha
   (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *)
   ATTRIBUTE_HIDDEN;
 #define _bfd_nolink_bfd_final_link _bfd_bool_bfd_link_false_error
-extern bfd_boolean _bfd_nolink_bfd_link_split_section
+extern bool _bfd_nolink_bfd_link_split_section
   (bfd *, struct bfd_section *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nolink_section_already_linked
+extern bool _bfd_nolink_section_already_linked
   (bfd *, asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nolink_bfd_define_common_symbol
+extern bool _bfd_nolink_bfd_define_common_symbol
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *)
   ATTRIBUTE_HIDDEN;
 #define _bfd_nolink_bfd_link_hide_symbol \
@@ -570,25 +540,29 @@ extern long _bfd_nodynamic_canonicalize_
 
 /* Generic routine to determine of the given symbol is a local
    label.  */
-extern bfd_boolean bfd_generic_is_local_label_name
+extern bool bfd_generic_is_local_label_name
   (bfd *, const char *) ATTRIBUTE_HIDDEN;
 
 /* Generic minisymbol routines.  */
 extern long _bfd_generic_read_minisymbols
-  (bfd *, bfd_boolean, void **, unsigned int *) ATTRIBUTE_HIDDEN;
+  (bfd *, bool, void **, unsigned int *) ATTRIBUTE_HIDDEN;
 extern asymbol *_bfd_generic_minisymbol_to_symbol
-  (bfd *, bfd_boolean, const void *, asymbol *) ATTRIBUTE_HIDDEN;
+  (bfd *, bool, const void *, asymbol *) ATTRIBUTE_HIDDEN;
 
 /* Find the nearest line using .stab/.stabstr sections.  */
-extern bfd_boolean _bfd_stab_section_find_nearest_line
-  (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
+extern bool _bfd_stab_section_find_nearest_line
+  (bfd *, asymbol **, asection *, bfd_vma, bool *,
    const char **, const char **, unsigned int *, void **) ATTRIBUTE_HIDDEN;
 
 /* Find the nearest line using DWARF 1 debugging information.  */
-extern bfd_boolean _bfd_dwarf1_find_nearest_line
+extern bool _bfd_dwarf1_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *) ATTRIBUTE_HIDDEN;
 
+/* Clean up the data used to handle DWARF 1 debugging information. */
+extern void _bfd_dwarf1_cleanup_debug_info
+  (bfd *, void **) ATTRIBUTE_HIDDEN;
+
 struct dwarf_debug_section
 {
   const char * uncompressed_name;
@@ -606,24 +580,34 @@ extern int _bfd_dwarf2_find_nearest_line
    const char **, const char **, unsigned int *, unsigned int *,
    const struct dwarf_debug_section *, void **) ATTRIBUTE_HIDDEN;
 
+/* Find the nearest line using DWARF 2 debugging information, with
+   the option of specifying a .gnu_debugaltlink file.  */
+extern int _bfd_dwarf2_find_nearest_line_with_alt
+  (bfd *, const char *, asymbol **, asymbol *, asection *, bfd_vma,
+   const char **, const char **, unsigned int *, unsigned int *,
+   const struct dwarf_debug_section *, void **) ATTRIBUTE_HIDDEN;
+
 /* Find the bias between DWARF addresses and real addresses.  */
 extern bfd_signed_vma _bfd_dwarf2_find_symbol_bias
   (asymbol **, void **) ATTRIBUTE_HIDDEN;
 
 /* Find inliner info after calling bfd_find_nearest_line. */
-extern bfd_boolean _bfd_dwarf2_find_inliner_info
+extern bool _bfd_dwarf2_find_inliner_info
   (bfd *, const char **, const char **, unsigned int *, void **)
   ATTRIBUTE_HIDDEN;
 
 /* Read DWARF 2 debugging information. */
-extern bfd_boolean _bfd_dwarf2_slurp_debug_info
+extern bool _bfd_dwarf2_slurp_debug_info
   (bfd *, bfd *, const struct dwarf_debug_section *, asymbol **, void **,
-   bfd_boolean) ATTRIBUTE_HIDDEN;
+   bool) ATTRIBUTE_HIDDEN;
 
 /* Clean up the data used to handle DWARF 2 debugging information. */
 extern void _bfd_dwarf2_cleanup_debug_info
   (bfd *, void **) ATTRIBUTE_HIDDEN;
 
+extern void _bfd_stab_cleanup
+  (bfd *, void **) ATTRIBUTE_HIDDEN;
+
 /* Create a new section entry.  */
 extern struct bfd_hash_entry *bfd_section_hash_newfunc
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *)
@@ -635,7 +619,7 @@ extern struct bfd_hash_entry *_bfd_link_
    const char *string) ATTRIBUTE_HIDDEN;
 
 /* Initialize a bfd_link_hash_table.  */
-extern bfd_boolean _bfd_link_hash_table_init
+extern bool _bfd_link_hash_table_init
   (struct bfd_link_hash_table *, bfd *,
    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
 			       struct bfd_hash_table *,
@@ -651,25 +635,19 @@ extern void _bfd_generic_link_hash_table
   (bfd *) ATTRIBUTE_HIDDEN;
 
 /* Generic add symbol routine.  */
-extern bfd_boolean _bfd_generic_link_add_symbols
+extern bool _bfd_generic_link_add_symbols
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
 /* Generic archive add symbol routine.  */
-extern bfd_boolean _bfd_generic_link_add_archive_symbols
+extern bool _bfd_generic_link_add_archive_symbols
   (bfd *, struct bfd_link_info *,
-   bfd_boolean (*) (bfd *, struct bfd_link_info *,
+   bool (*) (bfd *, struct bfd_link_info *,
 		    struct bfd_link_hash_entry *, const char *,
-		    bfd_boolean *)) ATTRIBUTE_HIDDEN;
+		    bool *)) ATTRIBUTE_HIDDEN;
 
 /* Forward declaration to avoid prototype errors.  */
 typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
 
-/* Generic routine to add a single symbol.  */
-extern bfd_boolean _bfd_generic_link_add_one_symbol
-  (struct bfd_link_info *, bfd *, const char *name, flagword,
-   asection *, bfd_vma, const char *, bfd_boolean copy,
-   bfd_boolean constructor, struct bfd_link_hash_entry **) ATTRIBUTE_HIDDEN;
-
 /* Generic routine to mark section as supplying symbols only.  */
 extern void _bfd_generic_link_just_syms
   (asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
@@ -680,22 +658,22 @@ extern void _bfd_generic_copy_link_hash_
   ATTRIBUTE_HIDDEN;
 
 /* Generic link routine.  */
-extern bfd_boolean _bfd_generic_final_link
+extern bool _bfd_generic_final_link
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_generic_link_split_section
+extern bool _bfd_generic_link_split_section
   (bfd *, struct bfd_section *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_generic_section_already_linked
+extern bool _bfd_generic_section_already_linked
   (bfd *, asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
 /* Generic reloc_link_order processing routine.  */
-extern bfd_boolean _bfd_generic_reloc_link_order
+extern bool _bfd_generic_reloc_link_order
   (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *)
   ATTRIBUTE_HIDDEN;
 
 /* Default link order processing routine.  */
-extern bfd_boolean _bfd_default_link_order
+extern bool _bfd_default_link_order
   (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *)
   ATTRIBUTE_HIDDEN;
 
@@ -716,48 +694,20 @@ extern bfd_reloc_status_type _bfd_reloca
 extern bfd_reloc_status_type _bfd_clear_contents
   (reloc_howto_type *, bfd *, asection *, bfd_byte *, bfd_vma) ATTRIBUTE_HIDDEN;
 
-/* Link stabs in sections in the first pass.  */
-
-extern bfd_boolean _bfd_link_section_stabs
-  (bfd *, struct stab_info *, asection *, asection *, void **,
-   bfd_size_type *) ATTRIBUTE_HIDDEN;
-
-/* Eliminate stabs for discarded functions and symbols.  */
-extern bfd_boolean _bfd_discard_section_stabs
-  (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *)
-  ATTRIBUTE_HIDDEN;
-
-/* Write out the .stab section when linking stabs in sections.  */
-
-extern bfd_boolean _bfd_write_section_stabs
-  (bfd *, struct stab_info *, asection *, void **, bfd_byte *)
-  ATTRIBUTE_HIDDEN;
-
-/* Write out the .stabstr string table when linking stabs in sections.  */
-
-extern bfd_boolean _bfd_write_stab_strings
-  (bfd *, struct stab_info *) ATTRIBUTE_HIDDEN;
-
-/* Find an offset within a .stab section when linking stabs in
-   sections.  */
-
-extern bfd_vma _bfd_stab_section_offset
-  (asection *, void *, bfd_vma) ATTRIBUTE_HIDDEN;
-
 /* Register a SEC_MERGE section as a candidate for merging.  */
 
-extern bfd_boolean _bfd_add_merge_section
+extern bool _bfd_add_merge_section
   (bfd *, void **, asection *, void **) ATTRIBUTE_HIDDEN;
 
 /* Attempt to merge SEC_MERGE sections.  */
 
-extern bfd_boolean _bfd_merge_sections
+extern bool _bfd_merge_sections
   (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *))
   ATTRIBUTE_HIDDEN;
 
 /* Write out a merged section.  */
 
-extern bfd_boolean _bfd_write_merged_section
+extern bool _bfd_write_merged_section
   (bfd *, asection *, void *) ATTRIBUTE_HIDDEN;
 
 /* Find an offset within a modified SEC_MERGE section.  */
@@ -769,31 +719,6 @@ extern bfd_vma _bfd_merged_section_offse
 
 extern void _bfd_merge_sections_free (void *) ATTRIBUTE_HIDDEN;
 
-/* Create a string table.  */
-extern struct bfd_strtab_hash *_bfd_stringtab_init
-  (void) ATTRIBUTE_HIDDEN;
-
-/* Create an XCOFF .debug section style string table.  */
-extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
-  (void) ATTRIBUTE_HIDDEN;
-
-/* Free a string table.  */
-extern void _bfd_stringtab_free
-  (struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
-
-/* Get the size of a string table.  */
-extern bfd_size_type _bfd_stringtab_size
-  (struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
-
-/* Add a string to a string table.  */
-extern bfd_size_type _bfd_stringtab_add
-  (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy)
-  ATTRIBUTE_HIDDEN;
-
-/* Write out a string table.  */
-extern bfd_boolean _bfd_stringtab_emit
-  (bfd *, struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
-
 /* Macros to tell if bfds are read or write enabled.
 
    Note that bfds open for read may be scribbled into if the fd passed
@@ -839,28 +764,31 @@ extern FILE *_bfd_real_fopen
 
 /* List of supported target vectors, and the default vector (if
    bfd_default_vector[0] is NULL, there is no default).  */
-extern const bfd_target * const *bfd_target_vector ATTRIBUTE_HIDDEN;
+extern const bfd_target *const *const bfd_target_vector ATTRIBUTE_HIDDEN;
 extern const bfd_target *bfd_default_vector[] ATTRIBUTE_HIDDEN;
 
 /* List of associated target vectors.  */
-extern const bfd_target * const *bfd_associated_vector ATTRIBUTE_HIDDEN;
+extern const bfd_target *const *const bfd_associated_vector ATTRIBUTE_HIDDEN;
 
 /* Functions shared by the ECOFF and MIPS ELF backends, which have no
    other common header files.  */
 
-#if defined(__STDC__) || defined(ALMOST_STDC)
+struct ecoff_debug_info;
+struct ecoff_debug_swap;
+struct ecoff_extr;
 struct ecoff_find_line;
-#endif
 
-extern bfd_boolean _bfd_ecoff_locate_line
+extern void _bfd_ecoff_free_ecoff_debug_info
+  (struct ecoff_debug_info *debug);
+extern bool _bfd_ecoff_locate_line
   (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
    const struct ecoff_debug_swap * const, struct ecoff_find_line *,
    const char **, const char **, unsigned int *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
+extern bool _bfd_ecoff_get_accumulated_pdr
   (void *, bfd_byte *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_ecoff_get_accumulated_sym
+extern bool _bfd_ecoff_get_accumulated_sym
   (void *, bfd_byte *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_ecoff_get_accumulated_ss
+extern bool _bfd_ecoff_get_accumulated_ss
   (void *, bfd_byte *) ATTRIBUTE_HIDDEN;
 
 extern bfd_vma _bfd_get_gp_value
@@ -872,10 +800,10 @@ extern void _bfd_set_gp_value
    other common header files.  */
 
 #ifndef _bfd_sh_align_load_span
-extern bfd_boolean _bfd_sh_align_load_span
+extern bool _bfd_sh_align_load_span
   (bfd *, asection *, bfd_byte *,
-   bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
-   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *) ATTRIBUTE_HIDDEN;
+   bool (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
+   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bool *) ATTRIBUTE_HIDDEN;
 #endif
 
 /* This is the shape of the elements inside the already_linked hash
@@ -896,11 +824,11 @@ struct bfd_section_already_linked
 
 extern struct bfd_section_already_linked_hash_entry *
   bfd_section_already_linked_table_lookup (const char *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean bfd_section_already_linked_table_insert
+extern bool bfd_section_already_linked_table_insert
   (struct bfd_section_already_linked_hash_entry *, asection *)
   ATTRIBUTE_HIDDEN;
 extern void bfd_section_already_linked_table_traverse
-  (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
+  (bool (*) (struct bfd_section_already_linked_hash_entry *,
 		    void *), void *) ATTRIBUTE_HIDDEN;
 
 extern bfd_vma _bfd_read_unsigned_leb128
@@ -908,12 +836,157 @@ extern bfd_vma _bfd_read_unsigned_leb128
 extern bfd_signed_vma _bfd_read_signed_leb128
   (bfd *, bfd_byte *, unsigned int *) ATTRIBUTE_HIDDEN;
 extern bfd_vma _bfd_safe_read_leb128
-  (bfd *, bfd_byte *, unsigned int *, bfd_boolean, const bfd_byte * const)
+  (bfd *, bfd_byte **, bool, const bfd_byte * const) ATTRIBUTE_HIDDEN;
+extern bfd_byte * _bfd_write_unsigned_leb128
+  (bfd_byte *, bfd_byte *, bfd_vma) ATTRIBUTE_HIDDEN;
+
+extern struct bfd_link_info *_bfd_get_link_info (bfd *)
   ATTRIBUTE_HIDDEN;
+
+#ifdef HAVE_MMAP
+extern uintptr_t _bfd_pagesize ATTRIBUTE_HIDDEN;
+extern uintptr_t _bfd_pagesize_m1 ATTRIBUTE_HIDDEN;
+extern uintptr_t _bfd_minimum_mmap_size ATTRIBUTE_HIDDEN;
+#endif
+
+#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 void *
+_bfd_alloc_and_read (bfd *abfd, bfd_size_type asize, bfd_size_type rsize)
+{
+  void *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_read (mem, rsize, abfd) == rsize)
+	return mem;
+      bfd_release (abfd, mem);
+    }
+  return NULL;
+}
+
+static inline void *
+_bfd_malloc_and_read (bfd *abfd, bfd_size_type asize, bfd_size_type rsize)
+{
+  void *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_read (mem, rsize, abfd) == rsize)
+	return mem;
+      free (mem);
+    }
+  return NULL;
+}
+
+#ifdef USE_MMAP
+extern void *_bfd_mmap_persistent
+  (bfd *, size_t) ATTRIBUTE_HIDDEN;
+extern void *_bfd_mmap_temporary
+  (bfd *, size_t, void **, size_t *) ATTRIBUTE_HIDDEN;
+extern void _bfd_munmap_temporary
+  (void *, size_t) ATTRIBUTE_HIDDEN;
+#else
+static inline void *
+_bfd_mmap_persistent (bfd *abfd, size_t rsize)
+{
+  return _bfd_alloc_and_read (abfd, rsize, rsize);
+}
+static inline void *
+_bfd_mmap_temporary (bfd *abfd, size_t rsize, void **map_addr,
+		     size_t *map_size)
+{
+  void *mem = _bfd_malloc_and_read (abfd, rsize, rsize);
+  *map_addr = mem;
+  *map_size = rsize;
+  return mem;
+}
+static inline void
+_bfd_munmap_temporary (void *ptr, size_t rsize ATTRIBUTE_UNUSED)
+{
+  free (ptr);
+}
+#endif
+
+extern bool _bfd_mmap_read_temporary
+  (void **, size_t *, void **, bfd *, bool) ATTRIBUTE_HIDDEN;
 /* Extracted from libbfd.c.  */
-bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
+void *bfd_malloc (bfd_size_type /*size*/) ATTRIBUTE_HIDDEN;
+
+void *bfd_realloc (void */*mem*/, bfd_size_type /*size*/) ATTRIBUTE_HIDDEN;
+
+void *bfd_realloc_or_free (void */*mem*/, bfd_size_type /*size*/) ATTRIBUTE_HIDDEN;
+
+void *bfd_zmalloc (bfd_size_type /*size*/) ATTRIBUTE_HIDDEN;
+
+bool bfd_write_bigendian_4byte_int (bfd *, unsigned int) ATTRIBUTE_HIDDEN;
+
+unsigned int bfd_log2 (bfd_vma x) ATTRIBUTE_HIDDEN;
+
+/* Extracted from bfd.c.  */
+char *bfd_asprintf (const char *fmt, ...) ATTRIBUTE_HIDDEN;
+
+/* Cached _bfd_check_format messages are put in this.  */
+struct per_xvec_message
+{
+  struct per_xvec_message *next;
+  char message[];
+};
+
+/* A list of per_xvec_message objects.  The targ field indicates
+   which xvec this list holds; PER_XVEC_NO_TARGET is only set for the
+   root of the list and indicates that the entry isn't yet used.  The
+   abfd field is only needed in the root entry of the list.  */
+struct per_xvec_messages
+{
+  bfd *abfd;
+  const bfd_target *targ;
+  struct per_xvec_message *messages;
+  struct per_xvec_messages *next;
+};
 
-unsigned int bfd_log2 (bfd_vma x);
+#define PER_XVEC_NO_TARGET ((const bfd_target *) -1)
+struct per_xvec_messages *_bfd_set_error_handler_caching (struct per_xvec_messages *) ATTRIBUTE_HIDDEN;
+
+void _bfd_restore_error_handler_caching (struct per_xvec_messages *) ATTRIBUTE_HIDDEN;
+
+const char *_bfd_get_error_program_name (void) ATTRIBUTE_HIDDEN;
+
+bool _bfd_threading_enabled (void) ATTRIBUTE_HIDDEN;
+
+bool bfd_lock (void) ATTRIBUTE_HIDDEN;
+
+bool bfd_unlock (void) ATTRIBUTE_HIDDEN;
 
 /* Extracted from bfdio.c.  */
 struct bfd_iovec
@@ -926,7 +999,7 @@ struct bfd_iovec
      or -1 (setting <<bfd_error>>) if an error occurs.  */
   file_ptr (*bread) (struct bfd *abfd, void *ptr, file_ptr nbytes);
   file_ptr (*bwrite) (struct bfd *abfd, const void *ptr,
-                      file_ptr nbytes);
+		      file_ptr nbytes);
   /* Return the current IOSTREAM file offset, or -1 (setting <<bfd_error>>
      if an error occurs.  */
   file_ptr (*btell) (struct bfd *abfd);
@@ -938,29 +1011,75 @@ struct bfd_iovec
   int (*bstat) (struct bfd *abfd, struct stat *sb);
   /* Mmap a part of the files. ADDR, LEN, PROT, FLAGS and OFFSET are the usual
      mmap parameter, except that LEN and OFFSET do not need to be page
-     aligned.  Returns (void *)-1 on failure, mmapped address on success.
+     aligned.  Returns MAP_FAILED on failure, mmapped address on success.
      Also write in MAP_ADDR the address of the page aligned buffer and in
      MAP_LEN the size mapped (a page multiple).  Use unmap with MAP_ADDR and
      MAP_LEN to unmap.  */
-  void *(*bmmap) (struct bfd *abfd, void *addr, bfd_size_type len,
-                  int prot, int flags, file_ptr offset,
-                  void **map_addr, bfd_size_type *map_len);
+  void *(*bmmap) (struct bfd *abfd, void *addr, size_t len,
+		  int prot, int flags, file_ptr offset,
+		  void **map_addr, size_t *map_len);
 };
 extern const struct bfd_iovec _bfd_memory_iovec;
-/* Extracted from bfdwin.c.  */
-struct _bfd_window_internal {
-  struct _bfd_window_internal *next;
-  void *data;
-  bfd_size_type size;
-  int refcount : 31;           /* should be enough...  */
-  unsigned mapped : 1;         /* 1 = mmap, 0 = malloc */
+
+/* Extracted from archive.c.  */
+/* Used in generating armaps (archive tables of contents).  */
+struct orl             /* Output ranlib.  */
+{
+  char **name;         /* Symbol name.  */
+  union
+  {
+    file_ptr pos;
+    bfd *abfd;
+  } u;                 /* bfd* or file position.  */
+  int namidx;          /* Index into string table.  */
 };
+
+/* Extracted from archures.c.  */
+extern const bfd_arch_info_type bfd_default_arch_struct;
+
+const bfd_arch_info_type *bfd_default_compatible
+   (const bfd_arch_info_type *a, const bfd_arch_info_type *b) ATTRIBUTE_HIDDEN;
+
+bool bfd_default_scan
+   (const struct bfd_arch_info *info, const char *string) ATTRIBUTE_HIDDEN;
+
+void *bfd_arch_default_fill (bfd_size_type count,
+    bool is_bigendian,
+    bool code) ATTRIBUTE_HIDDEN;
+
 /* Extracted from cache.c.  */
-bfd_boolean bfd_cache_init (bfd *abfd);
+bool bfd_cache_init (bfd *abfd) ATTRIBUTE_HIDDEN;
+
+bool bfd_cache_set_uncloseable (bfd *abfd, bool value, bool *old) ATTRIBUTE_HIDDEN;
+
+FILE* bfd_open_file (bfd *abfd) ATTRIBUTE_HIDDEN;
+
+/* Extracted from hash.c.  */
+struct bfd_strtab_hash *_bfd_stringtab_init (void) ATTRIBUTE_HIDDEN;
+
+struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
+   (bool /*isxcoff64*/) ATTRIBUTE_HIDDEN;
+
+void _bfd_stringtab_free (struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
 
-bfd_boolean bfd_cache_close (bfd *abfd);
+bfd_size_type _bfd_stringtab_add
+   (struct bfd_strtab_hash *, const char *,
+    bool /*hash*/, bool /*copy*/) ATTRIBUTE_HIDDEN;
 
-FILE* bfd_open_file (bfd *abfd);
+bfd_size_type _bfd_stringtab_size (struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
+
+bool _bfd_stringtab_emit (bfd *, struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
+
+/* Extracted from linker.c.  */
+bool _bfd_generic_verify_endian_match
+   (bfd *ibfd, struct bfd_link_info *info) ATTRIBUTE_HIDDEN;
+
+/* Extracted from opncls.c.  */
+bfd *_bfd_new_bfd (void) ATTRIBUTE_HIDDEN;
+
+bfd *_bfd_new_bfd_contained_in (bfd *) ATTRIBUTE_HIDDEN;
+
+bool _bfd_free_cached_info (bfd *) ATTRIBUTE_HIDDEN;
 
 /* Extracted from reloc.c.  */
 #ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
@@ -981,6 +1100,7 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_12_PCREL",
   "BFD_RELOC_8_PCREL",
   "BFD_RELOC_32_SECREL",
+  "BFD_RELOC_16_SECIDX",
   "BFD_RELOC_32_GOT_PCREL",
   "BFD_RELOC_16_GOT_PCREL",
   "BFD_RELOC_8_GOT_PCREL",
@@ -1225,7 +1345,7 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_MICROMIPS_HIGHER",
   "BFD_RELOC_MIPS_SCN_DISP",
   "BFD_RELOC_MICROMIPS_SCN_DISP",
-  "BFD_RELOC_MIPS_REL16",
+  "BFD_RELOC_MIPS_16",
   "BFD_RELOC_MIPS_RELGOT",
   "BFD_RELOC_MIPS_JALR",
   "BFD_RELOC_MICROMIPS_JALR",
@@ -1250,12 +1370,9 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_MIPS_TLS_TPREL_LO16",
   "BFD_RELOC_MICROMIPS_TLS_TPREL_LO16",
   "BFD_RELOC_MIPS_EH",
-
   "BFD_RELOC_MIPS_COPY",
   "BFD_RELOC_MIPS_JUMP_SLOT",
-
   "BFD_RELOC_MOXIE_10_PCREL",
-
   "BFD_RELOC_FT32_10",
   "BFD_RELOC_FT32_20",
   "BFD_RELOC_FT32_17",
@@ -1265,7 +1382,6 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_FT32_SC1",
   "BFD_RELOC_FT32_15",
   "BFD_RELOC_FT32_DIFF32",
-
   "BFD_RELOC_FRV_LABEL16",
   "BFD_RELOC_FRV_LABEL24",
   "BFD_RELOC_FRV_LO16",
@@ -1305,7 +1421,6 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_FRV_GETTLSOFF_RELAX",
   "BFD_RELOC_FRV_TLSOFF_RELAX",
   "BFD_RELOC_FRV_TLSMOFF",
-
   "BFD_RELOC_MN10300_GOTOFF24",
   "BFD_RELOC_MN10300_GOT32",
   "BFD_RELOC_MN10300_GOT24",
@@ -1327,7 +1442,6 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_MN10300_TLS_TPOFF",
   "BFD_RELOC_MN10300_32_PCREL",
   "BFD_RELOC_MN10300_16_PCREL",
-
   "BFD_RELOC_386_GOT32",
   "BFD_RELOC_386_PLT32",
   "BFD_RELOC_386_COPY",
@@ -1384,6 +1498,15 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_X86_64_PLT32_BND",
   "BFD_RELOC_X86_64_GOTPCRELX",
   "BFD_RELOC_X86_64_REX_GOTPCRELX",
+  "BFD_RELOC_X86_64_CODE_4_GOTPCRELX",
+  "BFD_RELOC_X86_64_CODE_4_GOTTPOFF",
+  "BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC",
+  "BFD_RELOC_X86_64_CODE_5_GOTPCRELX",
+  "BFD_RELOC_X86_64_CODE_5_GOTTPOFF",
+  "BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC",
+  "BFD_RELOC_X86_64_CODE_6_GOTPCRELX",
+  "BFD_RELOC_X86_64_CODE_6_GOTTPOFF",
+  "BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC",
   "BFD_RELOC_NS32K_IMM_8",
   "BFD_RELOC_NS32K_IMM_16",
   "BFD_RELOC_NS32K_IMM_32",
@@ -1407,6 +1530,8 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_PPC_B26",
   "BFD_RELOC_PPC_BA26",
   "BFD_RELOC_PPC_TOC16",
+  "BFD_RELOC_PPC_TOC16_LO",
+  "BFD_RELOC_PPC_TOC16_HI",
   "BFD_RELOC_PPC_B16",
   "BFD_RELOC_PPC_B16_BRTAKEN",
   "BFD_RELOC_PPC_B16_BRNTAKEN",
@@ -1453,6 +1578,7 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_PPC_VLE_SDAREL_HA16D",
   "BFD_RELOC_PPC_16DX_HA",
   "BFD_RELOC_PPC_REL16DX_HA",
+  "BFD_RELOC_PPC_NEG",
   "BFD_RELOC_PPC64_HIGHER",
   "BFD_RELOC_PPC64_HIGHER_S",
   "BFD_RELOC_PPC64_HIGHEST",
@@ -1487,6 +1613,7 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_PPC64_ADDR64_LOCAL",
   "BFD_RELOC_PPC64_ENTRY",
   "BFD_RELOC_PPC64_REL24_NOTOC",
+  "BFD_RELOC_PPC64_REL24_P9NOTOC",
   "BFD_RELOC_PPC64_D34",
   "BFD_RELOC_PPC64_D34_LO",
   "BFD_RELOC_PPC64_D34_HI30",
@@ -1507,6 +1634,10 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_PPC_TLS",
   "BFD_RELOC_PPC_TLSGD",
   "BFD_RELOC_PPC_TLSLD",
+  "BFD_RELOC_PPC_TLSLE",
+  "BFD_RELOC_PPC_TLSIE",
+  "BFD_RELOC_PPC_TLSM",
+  "BFD_RELOC_PPC_TLSML",
   "BFD_RELOC_PPC_DTPMOD",
   "BFD_RELOC_PPC_TPREL16",
   "BFD_RELOC_PPC_TPREL16_LO",
@@ -1534,6 +1665,12 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_PPC_GOT_DTPREL16_LO",
   "BFD_RELOC_PPC_GOT_DTPREL16_HI",
   "BFD_RELOC_PPC_GOT_DTPREL16_HA",
+  "BFD_RELOC_PPC64_TLSGD",
+  "BFD_RELOC_PPC64_TLSLD",
+  "BFD_RELOC_PPC64_TLSLE",
+  "BFD_RELOC_PPC64_TLSIE",
+  "BFD_RELOC_PPC64_TLSM",
+  "BFD_RELOC_PPC64_TLSML",
   "BFD_RELOC_PPC64_TPREL16_DS",
   "BFD_RELOC_PPC64_TPREL16_LO_DS",
   "BFD_RELOC_PPC64_TPREL16_HIGH",
@@ -1552,10 +1689,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",
@@ -2184,7 +2321,6 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_MEP_ADDR24A4",
   "BFD_RELOC_MEP_GNU_VTINHERIT",
   "BFD_RELOC_MEP_GNU_VTENTRY",
-
   "BFD_RELOC_METAG_HIADDR16",
   "BFD_RELOC_METAG_LOADDR16",
   "BFD_RELOC_METAG_RELBRANCH",
@@ -2311,14 +2447,13 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_RISCV_TLS_DTPREL64",
   "BFD_RELOC_RISCV_TLS_TPREL32",
   "BFD_RELOC_RISCV_TLS_TPREL64",
+  "BFD_RELOC_RISCV_TLSDESC_HI20",
+  "BFD_RELOC_RISCV_TLSDESC_LOAD_LO12",
+  "BFD_RELOC_RISCV_TLSDESC_ADD_LO12",
+  "BFD_RELOC_RISCV_TLSDESC_CALL",
   "BFD_RELOC_RISCV_ALIGN",
   "BFD_RELOC_RISCV_RVC_BRANCH",
   "BFD_RELOC_RISCV_RVC_JUMP",
-  "BFD_RELOC_RISCV_RVC_LUI",
-  "BFD_RELOC_RISCV_GPREL_I",
-  "BFD_RELOC_RISCV_GPREL_S",
-  "BFD_RELOC_RISCV_TPREL_I",
-  "BFD_RELOC_RISCV_TPREL_S",
   "BFD_RELOC_RISCV_RELAX",
   "BFD_RELOC_RISCV_CFA",
   "BFD_RELOC_RISCV_SUB6",
@@ -2327,6 +2462,8 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_RISCV_SET16",
   "BFD_RELOC_RISCV_SET32",
   "BFD_RELOC_RISCV_32_PCREL",
+  "BFD_RELOC_RISCV_SET_ULEB128",
+  "BFD_RELOC_RISCV_SUB_ULEB128",
   "BFD_RELOC_RL78_NEG8",
   "BFD_RELOC_RL78_NEG16",
   "BFD_RELOC_RL78_NEG24",
@@ -2672,6 +2809,7 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_OR1K_SLO13",
   "BFD_RELOC_OR1K_GOTPC_HI16",
   "BFD_RELOC_OR1K_GOTPC_LO16",
+  "BFD_RELOC_OR1K_GOT_AHI16",
   "BFD_RELOC_OR1K_GOT16",
   "BFD_RELOC_OR1K_GOT_PG21",
   "BFD_RELOC_OR1K_GOT_LO13",
@@ -2715,11 +2853,6 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_XSTORMY16_24",
   "BFD_RELOC_XSTORMY16_FPTR16",
   "BFD_RELOC_RELC",
-
-  "BFD_RELOC_XC16X_PAG",
-  "BFD_RELOC_XC16X_POF",
-  "BFD_RELOC_XC16X_SEG",
-  "BFD_RELOC_XC16X_SOF",
   "BFD_RELOC_VAX_GLOB_DAT",
   "BFD_RELOC_VAX_JMP_SLOT",
   "BFD_RELOC_VAX_RELATIVE",
@@ -2751,58 +2884,8 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_MSP430_ABS_HI16",
   "BFD_RELOC_MSP430_PREL31",
   "BFD_RELOC_MSP430_SYM_DIFF",
-  "BFD_RELOC_NIOS2_S16",
-  "BFD_RELOC_NIOS2_U16",
-  "BFD_RELOC_NIOS2_CALL26",
-  "BFD_RELOC_NIOS2_IMM5",
-  "BFD_RELOC_NIOS2_CACHE_OPX",
-  "BFD_RELOC_NIOS2_IMM6",
-  "BFD_RELOC_NIOS2_IMM8",
-  "BFD_RELOC_NIOS2_HI16",
-  "BFD_RELOC_NIOS2_LO16",
-  "BFD_RELOC_NIOS2_HIADJ16",
-  "BFD_RELOC_NIOS2_GPREL",
-  "BFD_RELOC_NIOS2_UJMP",
-  "BFD_RELOC_NIOS2_CJMP",
-  "BFD_RELOC_NIOS2_CALLR",
-  "BFD_RELOC_NIOS2_ALIGN",
-  "BFD_RELOC_NIOS2_GOT16",
-  "BFD_RELOC_NIOS2_CALL16",
-  "BFD_RELOC_NIOS2_GOTOFF_LO",
-  "BFD_RELOC_NIOS2_GOTOFF_HA",
-  "BFD_RELOC_NIOS2_PCREL_LO",
-  "BFD_RELOC_NIOS2_PCREL_HA",
-  "BFD_RELOC_NIOS2_TLS_GD16",
-  "BFD_RELOC_NIOS2_TLS_LDM16",
-  "BFD_RELOC_NIOS2_TLS_LDO16",
-  "BFD_RELOC_NIOS2_TLS_IE16",
-  "BFD_RELOC_NIOS2_TLS_LE16",
-  "BFD_RELOC_NIOS2_TLS_DTPMOD",
-  "BFD_RELOC_NIOS2_TLS_DTPREL",
-  "BFD_RELOC_NIOS2_TLS_TPREL",
-  "BFD_RELOC_NIOS2_COPY",
-  "BFD_RELOC_NIOS2_GLOB_DAT",
-  "BFD_RELOC_NIOS2_JUMP_SLOT",
-  "BFD_RELOC_NIOS2_RELATIVE",
-  "BFD_RELOC_NIOS2_GOTOFF",
-  "BFD_RELOC_NIOS2_CALL26_NOAT",
-  "BFD_RELOC_NIOS2_GOT_LO",
-  "BFD_RELOC_NIOS2_GOT_HA",
-  "BFD_RELOC_NIOS2_CALL_LO",
-  "BFD_RELOC_NIOS2_CALL_HA",
-  "BFD_RELOC_NIOS2_R2_S12",
-  "BFD_RELOC_NIOS2_R2_I10_1_PCREL",
-  "BFD_RELOC_NIOS2_R2_T1I7_1_PCREL",
-  "BFD_RELOC_NIOS2_R2_T1I7_2",
-  "BFD_RELOC_NIOS2_R2_T2I4",
-  "BFD_RELOC_NIOS2_R2_T2I4_1",
-  "BFD_RELOC_NIOS2_R2_T2I4_2",
-  "BFD_RELOC_NIOS2_R2_X1I7_2",
-  "BFD_RELOC_NIOS2_R2_X2L5",
-  "BFD_RELOC_NIOS2_R2_F1I5_2",
-  "BFD_RELOC_NIOS2_R2_L5I4X1",
-  "BFD_RELOC_NIOS2_R2_T1X1I6",
-  "BFD_RELOC_NIOS2_R2_T1X1I6_2",
+  "BFD_RELOC_MSP430_SET_ULEB128",
+  "BFD_RELOC_MSP430_SUB_ULEB128",
   "BFD_RELOC_PRU_U16",
   "BFD_RELOC_PRU_U16_PMEMIMM",
   "BFD_RELOC_PRU_LDI32",
@@ -2868,7 +2951,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",
@@ -2903,6 +2999,7 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_MICROBLAZE_32_ROSDA",
   "BFD_RELOC_MICROBLAZE_32_RWSDA",
   "BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM",
+  "BFD_RELOC_MICROBLAZE_32_NONE",
   "BFD_RELOC_MICROBLAZE_64_NONE",
   "BFD_RELOC_MICROBLAZE_64_GOTPC",
   "BFD_RELOC_MICROBLAZE_64_GOT",
@@ -2920,6 +3017,91 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_MICROBLAZE_64_TLSTPREL",
   "BFD_RELOC_MICROBLAZE_64_TEXTPCREL",
   "BFD_RELOC_MICROBLAZE_64_TEXTREL",
+  "BFD_RELOC_KVX_RELOC_START",
+  "BFD_RELOC_KVX_NONE",
+  "BFD_RELOC_KVX_16",
+  "BFD_RELOC_KVX_32",
+  "BFD_RELOC_KVX_64",
+  "BFD_RELOC_KVX_S16_PCREL",
+  "BFD_RELOC_KVX_PCREL17",
+  "BFD_RELOC_KVX_PCREL27",
+  "BFD_RELOC_KVX_32_PCREL",
+  "BFD_RELOC_KVX_S37_PCREL_LO10",
+  "BFD_RELOC_KVX_S37_PCREL_UP27",
+  "BFD_RELOC_KVX_S43_PCREL_LO10",
+  "BFD_RELOC_KVX_S43_PCREL_UP27",
+  "BFD_RELOC_KVX_S43_PCREL_EX6",
+  "BFD_RELOC_KVX_S64_PCREL_LO10",
+  "BFD_RELOC_KVX_S64_PCREL_UP27",
+  "BFD_RELOC_KVX_S64_PCREL_EX27",
+  "BFD_RELOC_KVX_64_PCREL",
+  "BFD_RELOC_KVX_S16",
+  "BFD_RELOC_KVX_S32_LO5",
+  "BFD_RELOC_KVX_S32_UP27",
+  "BFD_RELOC_KVX_S37_LO10",
+  "BFD_RELOC_KVX_S37_UP27",
+  "BFD_RELOC_KVX_S37_GOTOFF_LO10",
+  "BFD_RELOC_KVX_S37_GOTOFF_UP27",
+  "BFD_RELOC_KVX_S43_GOTOFF_LO10",
+  "BFD_RELOC_KVX_S43_GOTOFF_UP27",
+  "BFD_RELOC_KVX_S43_GOTOFF_EX6",
+  "BFD_RELOC_KVX_32_GOTOFF",
+  "BFD_RELOC_KVX_64_GOTOFF",
+  "BFD_RELOC_KVX_32_GOT",
+  "BFD_RELOC_KVX_S37_GOT_LO10",
+  "BFD_RELOC_KVX_S37_GOT_UP27",
+  "BFD_RELOC_KVX_S43_GOT_LO10",
+  "BFD_RELOC_KVX_S43_GOT_UP27",
+  "BFD_RELOC_KVX_S43_GOT_EX6",
+  "BFD_RELOC_KVX_64_GOT",
+  "BFD_RELOC_KVX_GLOB_DAT",
+  "BFD_RELOC_KVX_COPY",
+  "BFD_RELOC_KVX_JMP_SLOT",
+  "BFD_RELOC_KVX_RELATIVE",
+  "BFD_RELOC_KVX_S43_LO10",
+  "BFD_RELOC_KVX_S43_UP27",
+  "BFD_RELOC_KVX_S43_EX6",
+  "BFD_RELOC_KVX_S64_LO10",
+  "BFD_RELOC_KVX_S64_UP27",
+  "BFD_RELOC_KVX_S64_EX27",
+  "BFD_RELOC_KVX_S37_GOTADDR_LO10",
+  "BFD_RELOC_KVX_S37_GOTADDR_UP27",
+  "BFD_RELOC_KVX_S43_GOTADDR_LO10",
+  "BFD_RELOC_KVX_S43_GOTADDR_UP27",
+  "BFD_RELOC_KVX_S43_GOTADDR_EX6",
+  "BFD_RELOC_KVX_S64_GOTADDR_LO10",
+  "BFD_RELOC_KVX_S64_GOTADDR_UP27",
+  "BFD_RELOC_KVX_S64_GOTADDR_EX27",
+  "BFD_RELOC_KVX_64_DTPMOD",
+  "BFD_RELOC_KVX_64_DTPOFF",
+  "BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10",
+  "BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27",
+  "BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10",
+  "BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27",
+  "BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6",
+  "BFD_RELOC_KVX_S37_TLS_GD_LO10",
+  "BFD_RELOC_KVX_S37_TLS_GD_UP27",
+  "BFD_RELOC_KVX_S43_TLS_GD_LO10",
+  "BFD_RELOC_KVX_S43_TLS_GD_UP27",
+  "BFD_RELOC_KVX_S43_TLS_GD_EX6",
+  "BFD_RELOC_KVX_S37_TLS_LD_LO10",
+  "BFD_RELOC_KVX_S37_TLS_LD_UP27",
+  "BFD_RELOC_KVX_S43_TLS_LD_LO10",
+  "BFD_RELOC_KVX_S43_TLS_LD_UP27",
+  "BFD_RELOC_KVX_S43_TLS_LD_EX6",
+  "BFD_RELOC_KVX_64_TPOFF",
+  "BFD_RELOC_KVX_S37_TLS_IE_LO10",
+  "BFD_RELOC_KVX_S37_TLS_IE_UP27",
+  "BFD_RELOC_KVX_S43_TLS_IE_LO10",
+  "BFD_RELOC_KVX_S43_TLS_IE_UP27",
+  "BFD_RELOC_KVX_S43_TLS_IE_EX6",
+  "BFD_RELOC_KVX_S37_TLS_LE_LO10",
+  "BFD_RELOC_KVX_S37_TLS_LE_UP27",
+  "BFD_RELOC_KVX_S43_TLS_LE_LO10",
+  "BFD_RELOC_KVX_S43_TLS_LE_UP27",
+  "BFD_RELOC_KVX_S43_TLS_LE_EX6",
+  "BFD_RELOC_KVX_8",
+  "BFD_RELOC_KVX_RELOC_END",
   "BFD_RELOC_AARCH64_RELOC_START",
   "BFD_RELOC_AARCH64_NULL",
   "BFD_RELOC_AARCH64_NONE",
@@ -3045,6 +3227,7 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_AARCH64_LD_GOT_LO12_NC",
   "BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC",
   "BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC",
+  "BFD_RELOC_AARCH64_BRANCH9",
   "BFD_RELOC_TILEPRO_COPY",
   "BFD_RELOC_TILEPRO_GLOB_DAT",
   "BFD_RELOC_TILEPRO_JMP_SLOT",
@@ -3234,10 +3417,9 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_TILEGX_IMM8_Y0_TLS_ADD",
   "BFD_RELOC_TILEGX_IMM8_Y1_TLS_ADD",
   "BFD_RELOC_BPF_64",
-  "BFD_RELOC_BPF_32",
-  "BFD_RELOC_BPF_16",
-  "BFD_RELOC_BPF_DISP16",
   "BFD_RELOC_BPF_DISP32",
+  "BFD_RELOC_BPF_DISPCALL32",
+  "BFD_RELOC_BPF_DISP16",
   "BFD_RELOC_EPIPHANY_SIMM8",
   "BFD_RELOC_EPIPHANY_SIMM24",
   "BFD_RELOC_EPIPHANY_HIGH",
@@ -3328,63 +3510,215 @@ static const char *const bfd_reloc_code_
   "BFD_RELOC_CKCORE_PCREL_BLOOP_IMM4BY4",
   "BFD_RELOC_CKCORE_PCREL_BLOOP_IMM12BY4",
   "BFD_RELOC_S12Z_OPR",
+  "BFD_RELOC_LARCH_TLS_DTPMOD32",
+  "BFD_RELOC_LARCH_TLS_DTPREL32",
+  "BFD_RELOC_LARCH_TLS_DTPMOD64",
+  "BFD_RELOC_LARCH_TLS_DTPREL64",
+  "BFD_RELOC_LARCH_TLS_TPREL32",
+  "BFD_RELOC_LARCH_TLS_TPREL64",
+  "BFD_RELOC_LARCH_TLS_DESC32",
+  "BFD_RELOC_LARCH_TLS_DESC64",
+  "BFD_RELOC_LARCH_MARK_LA",
+  "BFD_RELOC_LARCH_MARK_PCREL",
+  "BFD_RELOC_LARCH_SOP_PUSH_PCREL",
+  "BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE",
+  "BFD_RELOC_LARCH_SOP_PUSH_DUP",
+  "BFD_RELOC_LARCH_SOP_PUSH_GPREL",
+  "BFD_RELOC_LARCH_SOP_PUSH_TLS_TPREL",
+  "BFD_RELOC_LARCH_SOP_PUSH_TLS_GOT",
+  "BFD_RELOC_LARCH_SOP_PUSH_TLS_GD",
+  "BFD_RELOC_LARCH_SOP_PUSH_PLT_PCREL",
+  "BFD_RELOC_LARCH_SOP_ASSERT",
+  "BFD_RELOC_LARCH_SOP_NOT",
+  "BFD_RELOC_LARCH_SOP_SUB",
+  "BFD_RELOC_LARCH_SOP_SL",
+  "BFD_RELOC_LARCH_SOP_SR",
+  "BFD_RELOC_LARCH_SOP_ADD",
+  "BFD_RELOC_LARCH_SOP_AND",
+  "BFD_RELOC_LARCH_SOP_IF_ELSE",
+  "BFD_RELOC_LARCH_SOP_POP_32_S_10_5",
+  "BFD_RELOC_LARCH_SOP_POP_32_U_10_12",
+  "BFD_RELOC_LARCH_SOP_POP_32_S_10_12",
+  "BFD_RELOC_LARCH_SOP_POP_32_S_10_16",
+  "BFD_RELOC_LARCH_SOP_POP_32_S_10_16_S2",
+  "BFD_RELOC_LARCH_SOP_POP_32_S_5_20",
+  "BFD_RELOC_LARCH_SOP_POP_32_S_0_5_10_16_S2",
+  "BFD_RELOC_LARCH_SOP_POP_32_S_0_10_10_16_S2",
+  "BFD_RELOC_LARCH_SOP_POP_32_U",
+  "BFD_RELOC_LARCH_ADD8",
+  "BFD_RELOC_LARCH_ADD16",
+  "BFD_RELOC_LARCH_ADD24",
+  "BFD_RELOC_LARCH_ADD32",
+  "BFD_RELOC_LARCH_ADD64",
+  "BFD_RELOC_LARCH_SUB8",
+  "BFD_RELOC_LARCH_SUB16",
+  "BFD_RELOC_LARCH_SUB24",
+  "BFD_RELOC_LARCH_SUB32",
+  "BFD_RELOC_LARCH_SUB64",
+  "BFD_RELOC_LARCH_B16",
+  "BFD_RELOC_LARCH_B21",
+  "BFD_RELOC_LARCH_B26",
+  "BFD_RELOC_LARCH_ABS_HI20",
+  "BFD_RELOC_LARCH_ABS_LO12",
+  "BFD_RELOC_LARCH_ABS64_LO20",
+  "BFD_RELOC_LARCH_ABS64_HI12",
+  "BFD_RELOC_LARCH_PCALA_HI20",
+  "BFD_RELOC_LARCH_PCALA_LO12",
+  "BFD_RELOC_LARCH_PCALA64_LO20",
+  "BFD_RELOC_LARCH_PCALA64_HI12",
+  "BFD_RELOC_LARCH_GOT_PC_HI20",
+  "BFD_RELOC_LARCH_GOT_PC_LO12",
+  "BFD_RELOC_LARCH_GOT64_PC_LO20",
+  "BFD_RELOC_LARCH_GOT64_PC_HI12",
+  "BFD_RELOC_LARCH_GOT_HI20",
+  "BFD_RELOC_LARCH_GOT_LO12",
+  "BFD_RELOC_LARCH_GOT64_LO20",
+  "BFD_RELOC_LARCH_GOT64_HI12",
+  "BFD_RELOC_LARCH_TLS_LE_HI20",
+  "BFD_RELOC_LARCH_TLS_LE_LO12",
+  "BFD_RELOC_LARCH_TLS_LE64_LO20",
+  "BFD_RELOC_LARCH_TLS_LE64_HI12",
+  "BFD_RELOC_LARCH_TLS_IE_PC_HI20",
+  "BFD_RELOC_LARCH_TLS_IE_PC_LO12",
+  "BFD_RELOC_LARCH_TLS_IE64_PC_LO20",
+  "BFD_RELOC_LARCH_TLS_IE64_PC_HI12",
+  "BFD_RELOC_LARCH_TLS_IE_HI20",
+  "BFD_RELOC_LARCH_TLS_IE_LO12",
+  "BFD_RELOC_LARCH_TLS_IE64_LO20",
+  "BFD_RELOC_LARCH_TLS_IE64_HI12",
+  "BFD_RELOC_LARCH_TLS_LD_PC_HI20",
+  "BFD_RELOC_LARCH_TLS_LD_HI20",
+  "BFD_RELOC_LARCH_TLS_GD_PC_HI20",
+  "BFD_RELOC_LARCH_TLS_GD_HI20",
+  "BFD_RELOC_LARCH_32_PCREL",
+  "BFD_RELOC_LARCH_RELAX",
+  "BFD_RELOC_LARCH_DELETE",
+  "BFD_RELOC_LARCH_ALIGN",
+  "BFD_RELOC_LARCH_PCREL20_S2",
+  "BFD_RELOC_LARCH_CFA",
+  "BFD_RELOC_LARCH_ADD6",
+  "BFD_RELOC_LARCH_SUB6",
+  "BFD_RELOC_LARCH_ADD_ULEB128",
+  "BFD_RELOC_LARCH_SUB_ULEB128",
+  "BFD_RELOC_LARCH_64_PCREL",
+  "BFD_RELOC_LARCH_CALL36",
+  "BFD_RELOC_LARCH_TLS_DESC_PC_HI20",
+  "BFD_RELOC_LARCH_TLS_DESC_PC_LO12",
+  "BFD_RELOC_LARCH_TLS_DESC64_PC_LO20",
+  "BFD_RELOC_LARCH_TLS_DESC64_PC_HI12",
+  "BFD_RELOC_LARCH_TLS_DESC_HI20",
+  "BFD_RELOC_LARCH_TLS_DESC_LO12",
+  "BFD_RELOC_LARCH_TLS_DESC64_LO20",
+  "BFD_RELOC_LARCH_TLS_DESC64_HI12",
+  "BFD_RELOC_LARCH_TLS_DESC_LD",
+  "BFD_RELOC_LARCH_TLS_DESC_CALL",
+  "BFD_RELOC_LARCH_TLS_LE_HI20_R",
+  "BFD_RELOC_LARCH_TLS_LE_ADD_R",
+  "BFD_RELOC_LARCH_TLS_LE_LO12_R",
+  "BFD_RELOC_LARCH_TLS_LD_PCREL20_S2",
+  "BFD_RELOC_LARCH_TLS_GD_PCREL20_S2",
+  "BFD_RELOC_LARCH_TLS_DESC_PCREL20_S2",
  "@@overflow: BFD_RELOC_UNUSED@@",
 };
 #endif
 
 reloc_howto_type *bfd_default_reloc_type_lookup
-   (bfd *abfd, bfd_reloc_code_real_type  code);
+   (bfd *abfd, bfd_reloc_code_real_type  code) ATTRIBUTE_HIDDEN;
 
-bfd_boolean bfd_generic_relax_section
+bool bfd_generic_relax_section
    (bfd *abfd,
     asection *section,
     struct bfd_link_info *,
-    bfd_boolean *);
+    bool *) ATTRIBUTE_HIDDEN;
 
-bfd_boolean bfd_generic_gc_sections
-   (bfd *, struct bfd_link_info *);
+bool bfd_generic_gc_sections
+   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
-bfd_boolean bfd_generic_lookup_section_flags
-   (struct bfd_link_info *, struct flag_info *, asection *);
+bool bfd_generic_lookup_section_flags
+   (struct bfd_link_info *, struct flag_info *, asection *) ATTRIBUTE_HIDDEN;
 
-bfd_boolean bfd_generic_merge_sections
-   (bfd *, struct bfd_link_info *);
+bool bfd_generic_merge_sections
+   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
 bfd_byte *bfd_generic_get_relocated_section_contents
    (bfd *abfd,
     struct bfd_link_info *link_info,
     struct bfd_link_order *link_order,
     bfd_byte *data,
-    bfd_boolean relocatable,
-    asymbol **symbols);
+    bool relocatable,
+    asymbol **symbols) ATTRIBUTE_HIDDEN;
 
 void _bfd_generic_set_reloc
    (bfd *abfd,
     sec_ptr section,
     arelent **relptr,
-    unsigned int count);
+    unsigned int count) ATTRIBUTE_HIDDEN;
 
-bfd_boolean _bfd_unrecognized_reloc
+bool _bfd_unrecognized_reloc
    (bfd * abfd,
     sec_ptr section,
-    unsigned int r_type);
+    unsigned int r_type) ATTRIBUTE_HIDDEN;
 
-/* Extracted from archures.c.  */
-extern const bfd_arch_info_type bfd_default_arch_struct;
-const bfd_arch_info_type *bfd_default_compatible
-   (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
+/* Extracted from section.c.  */
+#define BFD_FAKE_SECTION(SEC, SYM, NAME, IDX, FLAGS)                   \
+  /* name, next, prev, id,  section_id, index, flags, user_set_vma, */ \
+  {  NAME, NULL, NULL, IDX, 0,          0,     FLAGS, 0,               \
+								       \
+  /* linker_mark, linker_has_input, gc_mark, decompress_status,     */ \
+     0,           0,                1,       0,                        \
+								       \
+  /* segment_mark, sec_info_type, use_rela_p, mmapped_p, alloced,   */ \
+     0,            0,             0,          0,         0,            \
+								       \
+  /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,    */ \
+     0,        0,        0,        0,        0,        0,              \
+								       \
+  /* vma, lma, size, rawsize, compressed_size,                      */ \
+     0,   0,   0,    0,       0,                                       \
+								       \
+  /* output_offset, output_section, relocation, orelocation,        */ \
+     0,             &SEC,           NULL,       NULL,                  \
+								       \
+  /* reloc_count, alignment_power, filepos, rel_filepos,            */ \
+     0,           0,               0,       0,                         \
+								       \
+  /* line_filepos, userdata, contents, lineno, lineno_count,        */ \
+     0,            NULL,     NULL,     NULL,   0,                      \
+								       \
+  /* entsize, kept_section, moving_line_filepos,                    */ \
+     0,       NULL,         0,                                         \
+								       \
+  /* target_index, used_by_bfd, constructor_chain, owner,           */ \
+     0,            NULL,        NULL,              NULL,               \
+								       \
+  /* symbol,                                                        */ \
+     (struct bfd_symbol *) SYM,                                        \
+								       \
+  /* map_head, map_tail, already_assigned, type                     */ \
+     { NULL }, { NULL }, NULL,             0                           \
+								       \
+  }
+
+#define GLOBAL_SYM_INIT(NAME, SECTION)                                 \
+  /* the_bfd, name, value, attr,            section, udata  */         \
+  {  0,       NAME, 0,     BSF_SECTION_SYM, SECTION, { 0 } }
+
+/* Extracted from stabs.c.  */
+bool _bfd_link_section_stabs
+   (bfd *, struct stab_info *, asection *, asection *, void **,
+    bfd_size_type *) ATTRIBUTE_HIDDEN;
+
+bool _bfd_discard_section_stabs
+   (bfd *, asection *, void *, bool (*) (bfd_vma, void *), void *) ATTRIBUTE_HIDDEN;
 
-bfd_boolean bfd_default_scan
-   (const struct bfd_arch_info *info, const char *string);
+bool _bfd_write_section_stabs
+   (bfd *, struct stab_info *, asection *, void **, bfd_byte *) ATTRIBUTE_HIDDEN;
 
-void *bfd_arch_default_fill (bfd_size_type count,
-    bfd_boolean is_bigendian,
-    bfd_boolean code);
+bool _bfd_write_stab_strings (bfd *, struct stab_info *) ATTRIBUTE_HIDDEN;
 
-/* Extracted from linker.c.  */
-bfd_boolean _bfd_generic_verify_endian_match
-   (bfd *ibfd, struct bfd_link_info *info);
+bfd_vma _bfd_stab_section_offset (asection *, void *, bfd_vma) ATTRIBUTE_HIDDEN;
 
+/* Extracted from targets.c.  */
 #ifdef __cplusplus
 }
 #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.20200303/bfd/libbfd-in.h ./bfd/libbfd-in.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libbfd-in.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libbfd-in.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    Written by Cygnus Support.
 
@@ -39,10 +39,6 @@
 extern "C" {
 #endif
 
-/* If you want to read and write large blocks, you might want to do it
-   in quanta of this amount */
-#define DEFAULT_BUFFERSIZE 8192
-
 /* Set a tdata field.  Can't use the other macros for this, since they
    do casts, and casting to the left of assignment isn't portable.  */
 #define set_tdata(bfd, v) ((bfd)->tdata.any = (v))
@@ -72,10 +68,9 @@ extern unsigned int _bfd_section_id ATTR
 
 struct artdata
 {
-  file_ptr first_file_filepos;
+  ufile_ptr first_file_filepos;
   /* Speed up searching the armap */
   htab_t cache;
-  bfd *archive_head;		/* Only interesting in output routines.  */
   carsym *symdefs;		/* The symdef entries.  */
   symindex symdef_count;	/* How many there are.  */
   char *extended_names;		/* Clever intel extension.  */
@@ -110,18 +105,6 @@ struct areltdata
 
 extern void *bfd_malloc
   (bfd_size_type) ATTRIBUTE_HIDDEN;
-extern void *bfd_realloc
-  (void *, bfd_size_type) ATTRIBUTE_HIDDEN;
-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)
@@ -132,34 +115,26 @@ bfd_strdup (const char *str)
     memcpy (buf, str, len);
   return buf;
 }
-/* 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;
 
 extern bfd * _bfd_create_empty_archive_element_shell
   (bfd *) ATTRIBUTE_HIDDEN;
 extern bfd * _bfd_look_for_bfd_in_cache
   (bfd *, file_ptr) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_add_bfd_to_archive_cache
+extern bool _bfd_add_bfd_to_archive_cache
   (bfd *, file_ptr, bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_generic_mkarchive
+extern bool _bfd_generic_mkarchive
   (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
+extern bool bfd_slurp_armap
   (bfd *) ATTRIBUTE_HIDDEN;
 #define bfd_slurp_bsd_armap bfd_slurp_armap
 #define bfd_slurp_coff_armap bfd_slurp_armap
-extern bfd_boolean _bfd_archive_64_bit_slurp_armap
+extern bool _bfd_archive_64_bit_slurp_armap
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_archive_64_bit_write_armap
+extern bool _bfd_archive_64_bit_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int) ATTRIBUTE_HIDDEN;
 #define _bfd_archive_64_bit_slurp_extended_name_table \
   _bfd_slurp_extended_name_table
@@ -179,44 +154,40 @@ extern bfd_boolean _bfd_archive_64_bit_w
   bfd_generic_stat_arch_elt
 #define _bfd_archive_64_bit_update_armap_timestamp _bfd_bool_bfd_true
 
-extern bfd_boolean _bfd_slurp_extended_name_table
+extern bool _bfd_slurp_extended_name_table
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_construct_extended_name_table
-  (bfd *, bfd_boolean, char **, bfd_size_type *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_write_archive_contents
+extern bool _bfd_construct_extended_name_table
+  (bfd *, bool, char **, bfd_size_type *) ATTRIBUTE_HIDDEN;
+extern bool _bfd_write_archive_contents
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_compute_and_write_armap
+extern bool _bfd_compute_and_write_armap
   (bfd *, unsigned int) ATTRIBUTE_HIDDEN;
 extern bfd *_bfd_get_elt_at_filepos
-  (bfd *, file_ptr) ATTRIBUTE_HIDDEN;
+  (bfd *, file_ptr, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 extern bfd *_bfd_generic_get_elt_at_index
   (bfd *, symindex) ATTRIBUTE_HIDDEN;
-extern bfd * _bfd_new_bfd
-  (void) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_free_cached_info
-  (bfd *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_bool_bfd_false
+extern bool _bfd_bool_bfd_false
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_asymbol_false
+extern bool _bfd_bool_bfd_asymbol_false
   (bfd *, asymbol *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_false_error
+extern bool _bfd_bool_bfd_false_error
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_link_false_error
+extern bool _bfd_bool_bfd_link_false_error
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_true
+extern bool _bfd_bool_bfd_true
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_link_true
+extern bool _bfd_bool_bfd_link_true
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_bfd_true
+extern bool _bfd_bool_bfd_bfd_true
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_uint_true
+extern bool _bfd_bool_bfd_uint_true
   (bfd *, unsigned int) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_asection_bfd_asection_true
+extern bool _bfd_bool_bfd_asection_bfd_asection_true
   (bfd *, asection *, bfd *, asection *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_asymbol_bfd_asymbol_true
+extern bool _bfd_bool_bfd_asymbol_bfd_asymbol_true
   (bfd *, asymbol *, bfd *, asymbol *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_bool_bfd_ptr_true
+extern bool _bfd_bool_bfd_ptr_true
   (bfd *, void *) ATTRIBUTE_HIDDEN;
 extern void *_bfd_ptr_bfd_null_error
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -235,10 +206,9 @@ extern void _bfd_void_bfd_link
 extern void _bfd_void_bfd_asection
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
 
-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;
@@ -247,26 +217,26 @@ extern void bfd_bsd_truncate_arname
 extern void bfd_gnu_truncate_arname
   (bfd *, const char *, char *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_bsd_write_armap
+extern bool _bfd_bsd_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_coff_write_armap
+extern bool _bfd_coff_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int) ATTRIBUTE_HIDDEN;
 
 extern void *_bfd_generic_read_ar_hdr
   (bfd *) ATTRIBUTE_HIDDEN;
 extern void _bfd_ar_spacepad
   (char *, size_t, const char *, long) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_ar_sizepad
+extern bool _bfd_ar_sizepad
   (char *, size_t, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 extern void *_bfd_generic_read_ar_hdr_mag
   (bfd *, const char *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_generic_write_ar_hdr
+extern bool _bfd_generic_write_ar_hdr
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_bsd44_write_ar_hdr
+extern bool _bfd_bsd44_write_ar_hdr
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
 
 extern bfd * bfd_generic_openr_next_archived_file
@@ -278,22 +248,20 @@ extern int bfd_generic_stat_arch_elt
 #define _bfd_read_ar_hdr(abfd) \
 	BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
 #define _bfd_write_ar_hdr(archive, abfd)	 \
-	BFD_SEND (abfd, _bfd_write_ar_hdr_fn, (archive, abfd))
+	BFD_SEND (archive, _bfd_write_ar_hdr_fn, (archive, abfd))
 
 /* Generic routines to use for BFD_JUMP_TABLE_GENERIC.  Use
    BFD_JUMP_TABLE_GENERIC (_bfd_generic).  */
 
 #define _bfd_generic_close_and_cleanup _bfd_archive_close_and_cleanup
-extern bfd_boolean _bfd_archive_close_and_cleanup
+extern bool _bfd_archive_close_and_cleanup
   (bfd *) ATTRIBUTE_HIDDEN;
 extern void _bfd_unlink_from_archive_parent (bfd *) ATTRIBUTE_HIDDEN;
-#define _bfd_generic_bfd_free_cached_info _bfd_bool_bfd_true
-extern bfd_boolean _bfd_generic_new_section_hook
+#define _bfd_generic_bfd_free_cached_info _bfd_free_cached_info
+extern bool _bfd_generic_new_section_hook
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_generic_get_section_contents
+extern bool _bfd_generic_get_section_contents
   (bfd *, asection *, void *, file_ptr, bfd_size_type) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_generic_get_section_contents_in_window
-  (bfd *, asection *, bfd_window *, file_ptr, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 /* Generic routines to use for BFD_JUMP_TABLE_COPY.  Use
    BFD_JUMP_TABLE_COPY (_bfd_generic).  */
@@ -302,17 +270,14 @@ extern bfd_boolean _bfd_generic_get_sect
 #define _bfd_generic_bfd_merge_private_bfd_data \
   _bfd_bool_bfd_link_true
 #define _bfd_generic_bfd_set_private_flags _bfd_bool_bfd_uint_true
-#define _bfd_generic_bfd_copy_private_section_data \
-  _bfd_bool_bfd_asection_bfd_asection_true
+extern bool _bfd_generic_bfd_copy_private_section_data
+  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *)
+  ATTRIBUTE_HIDDEN;
 #define _bfd_generic_bfd_copy_private_symbol_data \
   _bfd_bool_bfd_asymbol_bfd_asymbol_true
 #define _bfd_generic_bfd_copy_private_header_data _bfd_bool_bfd_bfd_true
 #define _bfd_generic_bfd_print_private_bfd_data _bfd_bool_bfd_ptr_true
 
-extern bfd_boolean _bfd_generic_init_private_section_data
-  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *)
-  ATTRIBUTE_HIDDEN;
-
 /* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file
    support.  Use BFD_JUMP_TABLE_CORE (_bfd_nocore).  */
 
@@ -320,7 +285,7 @@ extern char *_bfd_nocore_core_file_faili
   (bfd *) ATTRIBUTE_HIDDEN;
 extern int _bfd_nocore_core_file_failing_signal
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
+extern bool _bfd_nocore_core_file_matches_executable_p
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
 extern int _bfd_nocore_core_file_pid
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -330,14 +295,14 @@ extern int _bfd_nocore_core_file_pid
 
 #define _bfd_noarchive_slurp_armap _bfd_bool_bfd_false_error
 #define _bfd_noarchive_slurp_extended_name_table _bfd_bool_bfd_false_error
-extern bfd_boolean _bfd_noarchive_construct_extended_name_table
+extern bool _bfd_noarchive_construct_extended_name_table
   (bfd *, char **, bfd_size_type *, const char **) ATTRIBUTE_HIDDEN;
 extern void _bfd_noarchive_truncate_arname
   (bfd *, const char *, char *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_noarchive_write_armap
+extern bool _bfd_noarchive_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int) ATTRIBUTE_HIDDEN;
 #define _bfd_noarchive_read_ar_hdr _bfd_ptr_bfd_null_error
-extern bfd_boolean _bfd_noarchive_write_ar_hdr
+extern bool _bfd_noarchive_write_ar_hdr
   (bfd *, bfd *) ATTRIBUTE_HIDDEN;
 extern bfd *
 _bfd_noarchive_openr_next_archived_file
@@ -353,7 +318,7 @@ extern bfd * _bfd_noarchive_get_elt_at_i
 #define _bfd_archive_bsd_slurp_armap bfd_slurp_bsd_armap
 #define _bfd_archive_bsd_slurp_extended_name_table \
   _bfd_slurp_extended_name_table
-extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
+extern bool _bfd_archive_bsd_construct_extended_name_table
   (bfd *, char **, bfd_size_type *, const char **) ATTRIBUTE_HIDDEN;
 #define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
 #define _bfd_archive_bsd_write_armap _bfd_bsd_write_armap
@@ -364,7 +329,7 @@ extern bfd_boolean _bfd_archive_bsd_cons
 #define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
 #define _bfd_archive_bsd_generic_stat_arch_elt \
   bfd_generic_stat_arch_elt
-extern bfd_boolean _bfd_archive_bsd_update_armap_timestamp
+extern bool _bfd_archive_bsd_update_armap_timestamp
   (bfd *) ATTRIBUTE_HIDDEN;
 
 /* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get COFF style
@@ -373,7 +338,7 @@ extern bfd_boolean _bfd_archive_bsd_upda
 #define _bfd_archive_coff_slurp_armap bfd_slurp_coff_armap
 #define _bfd_archive_coff_slurp_extended_name_table \
   _bfd_slurp_extended_name_table
-extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
+extern bool _bfd_archive_coff_construct_extended_name_table
   (bfd *, char **, bfd_size_type *, const char **) ATTRIBUTE_HIDDEN;
 #define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
 #define _bfd_archive_coff_write_armap _bfd_coff_write_armap
@@ -392,7 +357,7 @@ extern bfd_boolean _bfd_archive_coff_con
 #define _bfd_archive_bsd44_slurp_armap bfd_slurp_bsd_armap
 #define _bfd_archive_bsd44_slurp_extended_name_table \
   _bfd_slurp_extended_name_table
-extern bfd_boolean _bfd_archive_bsd44_construct_extended_name_table
+extern bool _bfd_archive_bsd44_construct_extended_name_table
   (bfd *, char **, bfd_size_type *, const char **) ATTRIBUTE_HIDDEN;
 #define _bfd_archive_bsd44_truncate_arname bfd_bsd_truncate_arname
 #define _bfd_archive_bsd44_write_armap _bfd_bsd_write_armap
@@ -410,7 +375,7 @@ extern bfd_boolean _bfd_archive_bsd44_co
    archives.  Use BFD_JUMP_TABLE_ARCHIVE (_bfd_vms_lib).  Some of them
    are irrelevant.  */
 
-extern bfd_boolean _bfd_vms_lib_write_archive_contents
+extern bool _bfd_vms_lib_write_archive_contents
   (bfd *) ATTRIBUTE_HIDDEN;
 #define _bfd_vms_lib_slurp_armap _bfd_noarchive_slurp_armap
 #define _bfd_vms_lib_slurp_extended_name_table \
@@ -435,19 +400,19 @@ 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
+extern bool _bfd_vms_lib_alpha_mkarchive
   (bfd *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_vms_lib_ia64_mkarchive
+extern bool _bfd_vms_lib_ia64_mkarchive
   (bfd *) ATTRIBUTE_HIDDEN;
 
 /* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
    support.  Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols).  */
 
-#define _bfd_nosymbols_get_symtab_upper_bound _bfd_long_bfd_n1_error
+#define _bfd_nosymbols_get_symtab_upper_bound _bfd_long_bfd_0
 extern long _bfd_nosymbols_canonicalize_symtab
   (bfd *, asymbol **) ATTRIBUTE_HIDDEN;
 #define _bfd_nosymbols_make_empty_symbol _bfd_generic_make_empty_symbol
@@ -456,27 +421,31 @@ 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;
-extern bfd_boolean _bfd_nosymbols_bfd_is_local_label_name
+  (bfd *, asymbol *, bool, bool *) ATTRIBUTE_HIDDEN;
+extern bool _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
 extern alent *_bfd_nosymbols_get_lineno
   (bfd *, asymbol *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nosymbols_find_nearest_line
+extern bool _bfd_nosymbols_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *)
   ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nosymbols_find_line
+extern bool _bfd_nosymbols_find_nearest_line_with_alt
+  (bfd *, const char *, asymbol **, asection *, bfd_vma,
+   const char **, const char **, unsigned int *, unsigned int *)
+  ATTRIBUTE_HIDDEN;
+extern bool _bfd_nosymbols_find_line
   (bfd *, asymbol **, asymbol *, const char **, unsigned int *)
   ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nosymbols_find_inliner_info
+extern bool _bfd_nosymbols_find_inliner_info
   (bfd *, const char **, const char **, unsigned int *) ATTRIBUTE_HIDDEN;
 extern asymbol *_bfd_nosymbols_bfd_make_debug_symbol
-  (bfd *, void *, unsigned long) ATTRIBUTE_HIDDEN;
+  (bfd *) ATTRIBUTE_HIDDEN;
 extern long _bfd_nosymbols_read_minisymbols
-  (bfd *, bfd_boolean, void **, unsigned int *) ATTRIBUTE_HIDDEN;
+  (bfd *, bool, void **, unsigned int *) ATTRIBUTE_HIDDEN;
 extern asymbol *_bfd_nosymbols_minisymbol_to_symbol
-  (bfd *, bfd_boolean, const void *, asymbol *) ATTRIBUTE_HIDDEN;
+  (bfd *, bool, const void *, asymbol *) ATTRIBUTE_HIDDEN;
 
 /* Routines to use for BFD_JUMP_TABLE_RELOCS when there is no reloc
    support.  Use BFD_JUMP_TABLE_RELOCS (_bfd_norelocs).  */
@@ -495,16 +464,16 @@ extern reloc_howto_type *_bfd_norelocs_b
 /* Routines to use for BFD_JUMP_TABLE_WRITE for targets which may not
    be written.  Use BFD_JUMP_TABLE_WRITE (_bfd_nowrite).  */
 
-extern bfd_boolean _bfd_nowrite_set_arch_mach
+extern bool _bfd_nowrite_set_arch_mach
   (bfd *, enum bfd_architecture, unsigned long) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nowrite_set_section_contents
+extern bool _bfd_nowrite_set_section_contents
   (bfd *, asection *, const void *, file_ptr, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 /* Generic routines to use for BFD_JUMP_TABLE_WRITE.  Use
    BFD_JUMP_TABLE_WRITE (_bfd_generic).  */
 
 #define _bfd_generic_set_arch_mach bfd_default_set_arch_mach
-extern bfd_boolean _bfd_generic_set_section_contents
+extern bool _bfd_generic_set_section_contents
   (bfd *, asection *, const void *, file_ptr, bfd_size_type) ATTRIBUTE_HIDDEN;
 
 /* Routines to use for BFD_JUMP_TABLE_LINK for targets which do not
@@ -514,18 +483,18 @@ extern int _bfd_nolink_sizeof_headers
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 extern bfd_byte *_bfd_nolink_bfd_get_relocated_section_contents
   (bfd *, struct bfd_link_info *, struct bfd_link_order *,
-   bfd_byte *, bfd_boolean, asymbol **) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nolink_bfd_relax_section
-  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *) ATTRIBUTE_HIDDEN;
+   bfd_byte *, bool, asymbol **) ATTRIBUTE_HIDDEN;
+extern bool _bfd_nolink_bfd_relax_section
+  (bfd *, asection *, struct bfd_link_info *, bool *) ATTRIBUTE_HIDDEN;
 #define _bfd_nolink_bfd_gc_sections _bfd_bool_bfd_link_false_error
-extern bfd_boolean _bfd_nolink_bfd_lookup_section_flags
+extern bool _bfd_nolink_bfd_lookup_section_flags
   (struct bfd_link_info *, struct flag_info *, asection *) ATTRIBUTE_HIDDEN;
 #define _bfd_nolink_bfd_merge_sections _bfd_bool_bfd_link_false_error
-extern bfd_boolean _bfd_nolink_bfd_is_group_section
+extern bool _bfd_nolink_bfd_is_group_section
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
 extern const char *_bfd_nolink_bfd_group_name
   (bfd *, const asection *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nolink_bfd_discard_group
+extern bool _bfd_nolink_bfd_discard_group
   (bfd *, asection *) ATTRIBUTE_HIDDEN;
 extern struct bfd_link_hash_table *_bfd_nolink_bfd_link_hash_table_create
   (bfd *) ATTRIBUTE_HIDDEN;
@@ -536,11 +505,11 @@ extern void _bfd_nolink_bfd_copy_link_ha
   (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *)
   ATTRIBUTE_HIDDEN;
 #define _bfd_nolink_bfd_final_link _bfd_bool_bfd_link_false_error
-extern bfd_boolean _bfd_nolink_bfd_link_split_section
+extern bool _bfd_nolink_bfd_link_split_section
   (bfd *, struct bfd_section *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nolink_section_already_linked
+extern bool _bfd_nolink_section_already_linked
   (bfd *, asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_nolink_bfd_define_common_symbol
+extern bool _bfd_nolink_bfd_define_common_symbol
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *)
   ATTRIBUTE_HIDDEN;
 #define _bfd_nolink_bfd_link_hide_symbol \
@@ -565,25 +534,29 @@ extern long _bfd_nodynamic_canonicalize_
 
 /* Generic routine to determine of the given symbol is a local
    label.  */
-extern bfd_boolean bfd_generic_is_local_label_name
+extern bool bfd_generic_is_local_label_name
   (bfd *, const char *) ATTRIBUTE_HIDDEN;
 
 /* Generic minisymbol routines.  */
 extern long _bfd_generic_read_minisymbols
-  (bfd *, bfd_boolean, void **, unsigned int *) ATTRIBUTE_HIDDEN;
+  (bfd *, bool, void **, unsigned int *) ATTRIBUTE_HIDDEN;
 extern asymbol *_bfd_generic_minisymbol_to_symbol
-  (bfd *, bfd_boolean, const void *, asymbol *) ATTRIBUTE_HIDDEN;
+  (bfd *, bool, const void *, asymbol *) ATTRIBUTE_HIDDEN;
 
 /* Find the nearest line using .stab/.stabstr sections.  */
-extern bfd_boolean _bfd_stab_section_find_nearest_line
-  (bfd *, asymbol **, asection *, bfd_vma, bfd_boolean *,
+extern bool _bfd_stab_section_find_nearest_line
+  (bfd *, asymbol **, asection *, bfd_vma, bool *,
    const char **, const char **, unsigned int *, void **) ATTRIBUTE_HIDDEN;
 
 /* Find the nearest line using DWARF 1 debugging information.  */
-extern bfd_boolean _bfd_dwarf1_find_nearest_line
+extern bool _bfd_dwarf1_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *) ATTRIBUTE_HIDDEN;
 
+/* Clean up the data used to handle DWARF 1 debugging information. */
+extern void _bfd_dwarf1_cleanup_debug_info
+  (bfd *, void **) ATTRIBUTE_HIDDEN;
+
 struct dwarf_debug_section
 {
   const char * uncompressed_name;
@@ -601,24 +574,34 @@ extern int _bfd_dwarf2_find_nearest_line
    const char **, const char **, unsigned int *, unsigned int *,
    const struct dwarf_debug_section *, void **) ATTRIBUTE_HIDDEN;
 
+/* Find the nearest line using DWARF 2 debugging information, with
+   the option of specifying a .gnu_debugaltlink file.  */
+extern int _bfd_dwarf2_find_nearest_line_with_alt
+  (bfd *, const char *, asymbol **, asymbol *, asection *, bfd_vma,
+   const char **, const char **, unsigned int *, unsigned int *,
+   const struct dwarf_debug_section *, void **) ATTRIBUTE_HIDDEN;
+
 /* Find the bias between DWARF addresses and real addresses.  */
 extern bfd_signed_vma _bfd_dwarf2_find_symbol_bias
   (asymbol **, void **) ATTRIBUTE_HIDDEN;
 
 /* Find inliner info after calling bfd_find_nearest_line. */
-extern bfd_boolean _bfd_dwarf2_find_inliner_info
+extern bool _bfd_dwarf2_find_inliner_info
   (bfd *, const char **, const char **, unsigned int *, void **)
   ATTRIBUTE_HIDDEN;
 
 /* Read DWARF 2 debugging information. */
-extern bfd_boolean _bfd_dwarf2_slurp_debug_info
+extern bool _bfd_dwarf2_slurp_debug_info
   (bfd *, bfd *, const struct dwarf_debug_section *, asymbol **, void **,
-   bfd_boolean) ATTRIBUTE_HIDDEN;
+   bool) ATTRIBUTE_HIDDEN;
 
 /* Clean up the data used to handle DWARF 2 debugging information. */
 extern void _bfd_dwarf2_cleanup_debug_info
   (bfd *, void **) ATTRIBUTE_HIDDEN;
 
+extern void _bfd_stab_cleanup
+  (bfd *, void **) ATTRIBUTE_HIDDEN;
+
 /* Create a new section entry.  */
 extern struct bfd_hash_entry *bfd_section_hash_newfunc
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *)
@@ -630,7 +613,7 @@ extern struct bfd_hash_entry *_bfd_link_
    const char *string) ATTRIBUTE_HIDDEN;
 
 /* Initialize a bfd_link_hash_table.  */
-extern bfd_boolean _bfd_link_hash_table_init
+extern bool _bfd_link_hash_table_init
   (struct bfd_link_hash_table *, bfd *,
    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
 			       struct bfd_hash_table *,
@@ -646,25 +629,19 @@ extern void _bfd_generic_link_hash_table
   (bfd *) ATTRIBUTE_HIDDEN;
 
 /* Generic add symbol routine.  */
-extern bfd_boolean _bfd_generic_link_add_symbols
+extern bool _bfd_generic_link_add_symbols
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
 /* Generic archive add symbol routine.  */
-extern bfd_boolean _bfd_generic_link_add_archive_symbols
+extern bool _bfd_generic_link_add_archive_symbols
   (bfd *, struct bfd_link_info *,
-   bfd_boolean (*) (bfd *, struct bfd_link_info *,
+   bool (*) (bfd *, struct bfd_link_info *,
 		    struct bfd_link_hash_entry *, const char *,
-		    bfd_boolean *)) ATTRIBUTE_HIDDEN;
+		    bool *)) ATTRIBUTE_HIDDEN;
 
 /* Forward declaration to avoid prototype errors.  */
 typedef struct bfd_link_hash_entry _bfd_link_hash_entry;
 
-/* Generic routine to add a single symbol.  */
-extern bfd_boolean _bfd_generic_link_add_one_symbol
-  (struct bfd_link_info *, bfd *, const char *name, flagword,
-   asection *, bfd_vma, const char *, bfd_boolean copy,
-   bfd_boolean constructor, struct bfd_link_hash_entry **) ATTRIBUTE_HIDDEN;
-
 /* Generic routine to mark section as supplying symbols only.  */
 extern void _bfd_generic_link_just_syms
   (asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
@@ -675,22 +652,22 @@ extern void _bfd_generic_copy_link_hash_
   ATTRIBUTE_HIDDEN;
 
 /* Generic link routine.  */
-extern bfd_boolean _bfd_generic_final_link
+extern bool _bfd_generic_final_link
   (bfd *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_generic_link_split_section
+extern bool _bfd_generic_link_split_section
   (bfd *, struct bfd_section *) ATTRIBUTE_HIDDEN;
 
-extern bfd_boolean _bfd_generic_section_already_linked
+extern bool _bfd_generic_section_already_linked
   (bfd *, asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN;
 
 /* Generic reloc_link_order processing routine.  */
-extern bfd_boolean _bfd_generic_reloc_link_order
+extern bool _bfd_generic_reloc_link_order
   (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *)
   ATTRIBUTE_HIDDEN;
 
 /* Default link order processing routine.  */
-extern bfd_boolean _bfd_default_link_order
+extern bool _bfd_default_link_order
   (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *)
   ATTRIBUTE_HIDDEN;
 
@@ -711,48 +688,20 @@ extern bfd_reloc_status_type _bfd_reloca
 extern bfd_reloc_status_type _bfd_clear_contents
   (reloc_howto_type *, bfd *, asection *, bfd_byte *, bfd_vma) ATTRIBUTE_HIDDEN;
 
-/* Link stabs in sections in the first pass.  */
-
-extern bfd_boolean _bfd_link_section_stabs
-  (bfd *, struct stab_info *, asection *, asection *, void **,
-   bfd_size_type *) ATTRIBUTE_HIDDEN;
-
-/* Eliminate stabs for discarded functions and symbols.  */
-extern bfd_boolean _bfd_discard_section_stabs
-  (bfd *, asection *, void *, bfd_boolean (*) (bfd_vma, void *), void *)
-  ATTRIBUTE_HIDDEN;
-
-/* Write out the .stab section when linking stabs in sections.  */
-
-extern bfd_boolean _bfd_write_section_stabs
-  (bfd *, struct stab_info *, asection *, void **, bfd_byte *)
-  ATTRIBUTE_HIDDEN;
-
-/* Write out the .stabstr string table when linking stabs in sections.  */
-
-extern bfd_boolean _bfd_write_stab_strings
-  (bfd *, struct stab_info *) ATTRIBUTE_HIDDEN;
-
-/* Find an offset within a .stab section when linking stabs in
-   sections.  */
-
-extern bfd_vma _bfd_stab_section_offset
-  (asection *, void *, bfd_vma) ATTRIBUTE_HIDDEN;
-
 /* Register a SEC_MERGE section as a candidate for merging.  */
 
-extern bfd_boolean _bfd_add_merge_section
+extern bool _bfd_add_merge_section
   (bfd *, void **, asection *, void **) ATTRIBUTE_HIDDEN;
 
 /* Attempt to merge SEC_MERGE sections.  */
 
-extern bfd_boolean _bfd_merge_sections
+extern bool _bfd_merge_sections
   (bfd *, struct bfd_link_info *, void *, void (*) (bfd *, asection *))
   ATTRIBUTE_HIDDEN;
 
 /* Write out a merged section.  */
 
-extern bfd_boolean _bfd_write_merged_section
+extern bool _bfd_write_merged_section
   (bfd *, asection *, void *) ATTRIBUTE_HIDDEN;
 
 /* Find an offset within a modified SEC_MERGE section.  */
@@ -764,31 +713,6 @@ extern bfd_vma _bfd_merged_section_offse
 
 extern void _bfd_merge_sections_free (void *) ATTRIBUTE_HIDDEN;
 
-/* Create a string table.  */
-extern struct bfd_strtab_hash *_bfd_stringtab_init
-  (void) ATTRIBUTE_HIDDEN;
-
-/* Create an XCOFF .debug section style string table.  */
-extern struct bfd_strtab_hash *_bfd_xcoff_stringtab_init
-  (void) ATTRIBUTE_HIDDEN;
-
-/* Free a string table.  */
-extern void _bfd_stringtab_free
-  (struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
-
-/* Get the size of a string table.  */
-extern bfd_size_type _bfd_stringtab_size
-  (struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
-
-/* Add a string to a string table.  */
-extern bfd_size_type _bfd_stringtab_add
-  (struct bfd_strtab_hash *, const char *, bfd_boolean hash, bfd_boolean copy)
-  ATTRIBUTE_HIDDEN;
-
-/* Write out a string table.  */
-extern bfd_boolean _bfd_stringtab_emit
-  (bfd *, struct bfd_strtab_hash *) ATTRIBUTE_HIDDEN;
-
 /* Macros to tell if bfds are read or write enabled.
 
    Note that bfds open for read may be scribbled into if the fd passed
@@ -834,28 +758,31 @@ extern FILE *_bfd_real_fopen
 
 /* List of supported target vectors, and the default vector (if
    bfd_default_vector[0] is NULL, there is no default).  */
-extern const bfd_target * const *bfd_target_vector ATTRIBUTE_HIDDEN;
+extern const bfd_target *const *const bfd_target_vector ATTRIBUTE_HIDDEN;
 extern const bfd_target *bfd_default_vector[] ATTRIBUTE_HIDDEN;
 
 /* List of associated target vectors.  */
-extern const bfd_target * const *bfd_associated_vector ATTRIBUTE_HIDDEN;
+extern const bfd_target *const *const bfd_associated_vector ATTRIBUTE_HIDDEN;
 
 /* Functions shared by the ECOFF and MIPS ELF backends, which have no
    other common header files.  */
 
-#if defined(__STDC__) || defined(ALMOST_STDC)
+struct ecoff_debug_info;
+struct ecoff_debug_swap;
+struct ecoff_extr;
 struct ecoff_find_line;
-#endif
 
-extern bfd_boolean _bfd_ecoff_locate_line
+extern void _bfd_ecoff_free_ecoff_debug_info
+  (struct ecoff_debug_info *debug);
+extern bool _bfd_ecoff_locate_line
   (bfd *, asection *, bfd_vma, struct ecoff_debug_info * const,
    const struct ecoff_debug_swap * const, struct ecoff_find_line *,
    const char **, const char **, unsigned int *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_ecoff_get_accumulated_pdr
+extern bool _bfd_ecoff_get_accumulated_pdr
   (void *, bfd_byte *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_ecoff_get_accumulated_sym
+extern bool _bfd_ecoff_get_accumulated_sym
   (void *, bfd_byte *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean _bfd_ecoff_get_accumulated_ss
+extern bool _bfd_ecoff_get_accumulated_ss
   (void *, bfd_byte *) ATTRIBUTE_HIDDEN;
 
 extern bfd_vma _bfd_get_gp_value
@@ -867,10 +794,10 @@ extern void _bfd_set_gp_value
    other common header files.  */
 
 #ifndef _bfd_sh_align_load_span
-extern bfd_boolean _bfd_sh_align_load_span
+extern bool _bfd_sh_align_load_span
   (bfd *, asection *, bfd_byte *,
-   bfd_boolean (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
-   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bfd_boolean *) ATTRIBUTE_HIDDEN;
+   bool (*) (bfd *, asection *, void *, bfd_byte *, bfd_vma),
+   void *, bfd_vma **, bfd_vma *, bfd_vma, bfd_vma, bool *) ATTRIBUTE_HIDDEN;
 #endif
 
 /* This is the shape of the elements inside the already_linked hash
@@ -891,11 +818,11 @@ struct bfd_section_already_linked
 
 extern struct bfd_section_already_linked_hash_entry *
   bfd_section_already_linked_table_lookup (const char *) ATTRIBUTE_HIDDEN;
-extern bfd_boolean bfd_section_already_linked_table_insert
+extern bool bfd_section_already_linked_table_insert
   (struct bfd_section_already_linked_hash_entry *, asection *)
   ATTRIBUTE_HIDDEN;
 extern void bfd_section_already_linked_table_traverse
-  (bfd_boolean (*) (struct bfd_section_already_linked_hash_entry *,
+  (bool (*) (struct bfd_section_already_linked_hash_entry *,
 		    void *), void *) ATTRIBUTE_HIDDEN;
 
 extern bfd_vma _bfd_read_unsigned_leb128
@@ -903,5 +830,107 @@ extern bfd_vma _bfd_read_unsigned_leb128
 extern bfd_signed_vma _bfd_read_signed_leb128
   (bfd *, bfd_byte *, unsigned int *) ATTRIBUTE_HIDDEN;
 extern bfd_vma _bfd_safe_read_leb128
-  (bfd *, bfd_byte *, unsigned int *, bfd_boolean, const bfd_byte * const)
+  (bfd *, bfd_byte **, bool, const bfd_byte * const) ATTRIBUTE_HIDDEN;
+extern bfd_byte * _bfd_write_unsigned_leb128
+  (bfd_byte *, bfd_byte *, bfd_vma) ATTRIBUTE_HIDDEN;
+
+extern struct bfd_link_info *_bfd_get_link_info (bfd *)
   ATTRIBUTE_HIDDEN;
+
+#ifdef HAVE_MMAP
+extern uintptr_t _bfd_pagesize ATTRIBUTE_HIDDEN;
+extern uintptr_t _bfd_pagesize_m1 ATTRIBUTE_HIDDEN;
+extern uintptr_t _bfd_minimum_mmap_size ATTRIBUTE_HIDDEN;
+#endif
+
+#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 void *
+_bfd_alloc_and_read (bfd *abfd, bfd_size_type asize, bfd_size_type rsize)
+{
+  void *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_read (mem, rsize, abfd) == rsize)
+	return mem;
+      bfd_release (abfd, mem);
+    }
+  return NULL;
+}
+
+static inline void *
+_bfd_malloc_and_read (bfd *abfd, bfd_size_type asize, bfd_size_type rsize)
+{
+  void *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_read (mem, rsize, abfd) == rsize)
+	return mem;
+      free (mem);
+    }
+  return NULL;
+}
+
+#ifdef USE_MMAP
+extern void *_bfd_mmap_persistent
+  (bfd *, size_t) ATTRIBUTE_HIDDEN;
+extern void *_bfd_mmap_temporary
+  (bfd *, size_t, void **, size_t *) ATTRIBUTE_HIDDEN;
+extern void _bfd_munmap_temporary
+  (void *, size_t) ATTRIBUTE_HIDDEN;
+#else
+static inline void *
+_bfd_mmap_persistent (bfd *abfd, size_t rsize)
+{
+  return _bfd_alloc_and_read (abfd, rsize, rsize);
+}
+static inline void *
+_bfd_mmap_temporary (bfd *abfd, size_t rsize, void **map_addr,
+		     size_t *map_size)
+{
+  void *mem = _bfd_malloc_and_read (abfd, rsize, rsize);
+  *map_addr = mem;
+  *map_size = rsize;
+  return mem;
+}
+static inline void
+_bfd_munmap_temporary (void *ptr, size_t rsize ATTRIBUTE_UNUSED)
+{
+  free (ptr);
+}
+#endif
+
+extern bool _bfd_mmap_read_temporary
+  (void **, size_t *, void **, bfd *, bool) ATTRIBUTE_HIDDEN;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libcoff.h ./bfd/libcoff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libcoff.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libcoff.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -28,6 +28,7 @@
 
 #include "bfdlink.h"
 #include "coff-bfd.h"
+#include "hashtab.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -37,11 +38,13 @@ 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)
+#define obj_coff_keep_raw_syms(bfd)   (coff_data (bfd)->keep_raw_syms)
 #define obj_convert(bfd)	      (coff_data (bfd)->conversion_table)
 #define obj_conv_table_size(bfd)      (coff_data (bfd)->conv_table_size)
 #define obj_coff_external_syms(bfd)   (coff_data (bfd)->external_syms)
@@ -82,21 +85,36 @@ typedef struct coff_tdata
   /* The unswapped external symbols.  May be NULL.  Read by
      _bfd_coff_get_external_symbols.  */
   void * external_syms;
-  /* If this is TRUE, the external_syms may not be freed.  */
-  bfd_boolean keep_syms;
 
   /* The string table.  May be NULL.  Read by
      _bfd_coff_read_string_table.  */
   char *strings;
   /* The length of the strings table.  For error checking.  */
   bfd_size_type strings_len;
+
+  /* Set if long section names are supported.  A writable copy of the COFF
+     backend flag _bfd_coff_long_section_names.  */
+  bool long_section_names;
+
+  /* If this is TRUE, raw_syments may not be released.  */
+  bool keep_raw_syms;
+  /* If this is TRUE, the external_syms may not be freed.  */
+  bool keep_syms;
   /* If this is TRUE, the strings may not be freed.  */
-  bfd_boolean keep_strings;
+  bool keep_strings;
   /* If this is TRUE, the strings have been written out already.  */
-  bfd_boolean strings_written;
+  bool strings_written;
+
+  /* Is this a GO32 coff file?  */
+  bool go32;
 
   /* Is this a PE format coff file?  */
-  int pe;
+  bool pe;
+
+  /* Copy of some of the f_flags bits in the COFF filehdr structure,
+     used by ARM code.  */
+  flagword flags;
+
   /* Used by the COFF backend linker.  */
   struct coff_link_hash_entry **sym_hashes;
 
@@ -114,13 +132,18 @@ typedef struct coff_tdata
   /* The timestamp from the COFF file header.  */
   long timestamp;
 
-  /* Copy of some of the f_flags bits in the COFF filehdr structure,
-     used by ARM code.  */
-  flagword flags;
+  /* 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;
+
+  /* Hash table containing sections by target index.  */
+  htab_t section_by_target_index;
+
+  /* Hash table containing sections by index.  */
+  htab_t section_by_index;
 
-  /* coff-stgo32 EXE stub header after BFD tdata has been allocated.  Its data
-     is kept in internal_filehdr.go32stub beforehand.  */
-  char *go32stub;
 } coff_data_type;
 
 /* Tdata for pe image files.  */
@@ -131,22 +154,36 @@ typedef struct pe_tdata
   int dll;
   int has_reloc_section;
   int dont_strip_reloc;
-  int dos_message[16];
-  bfd_boolean insert_timestamp;
-  bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
+  char dos_message[64];
+  /* The timestamp to insert into the output file.
+     If the timestamp is -1 then the current time is used.  */
+  int timestamp;
+  bool (*in_reloc_p) (bfd *, reloc_howto_type *);
   flagword real_flags;
 
   /* Build-id info.  */
   struct
   {
-    bfd_boolean (*after_write_object_contents) (bfd *);
+    bool (*after_write_object_contents) (bfd *);
     const char *style;
     asection *sec;
   } build_id;
+
+  htab_t comdat_hash;
 } pe_data_type;
 
 #define pe_data(bfd)		((bfd)->tdata.pe_obj_data)
 
+struct comdat_hash_entry
+{
+  int target_index;
+  struct internal_syment isym;
+  char *symname;
+  flagword sec_flags;
+  char *comdat_name;
+  long comdat_symbol;
+};
+
 /* Tdata for XCOFF files.  */
 
 struct xcoff_tdata
@@ -155,10 +192,10 @@ struct xcoff_tdata
   coff_data_type coff;
 
   /* TRUE if this is an XCOFF64 file. */
-  bfd_boolean xcoff64;
+  bool xcoff64;
 
   /* TRUE if a large a.out header should be generated.  */
-  bfd_boolean full_aouthdr;
+  bool full_aouthdr;
 
   /* TOC value.  */
   bfd_vma toc;
@@ -239,8 +276,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.  */
@@ -271,6 +309,9 @@ struct coff_link_hash_table
   struct bfd_link_hash_table root;
   /* A pointer to information used to link stabs in sections.  */
   struct stab_info stab_info;
+  /* Hash table that maps undecorated names to their respective
+   * decorated coff_link_hash_entry as found in fixup_stdcalls  */
+  struct bfd_hash_table decoration_hash;
 };
 
 struct coff_reloc_cookie
@@ -295,15 +336,25 @@ struct coff_reloc_cookie
 #define coff_link_hash_traverse(table, func, info)			\
   (bfd_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
+    (bool (*) (struct bfd_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* Get the COFF linker hash table from a link_info structure.  */
 
 #define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
 
+struct decoration_hash_entry
+{
+  struct bfd_hash_entry root;
+  struct bfd_link_hash_entry *decorated_link;
+};
+
 /* Functions in coffgen.c.  */
-extern const bfd_target *coff_object_p
+extern void coff_object_cleanup
+  (bfd *);
+extern bfd_cleanup coff_real_object_p
+  (bfd *, unsigned, struct internal_filehdr *, struct internal_aouthdr *);
+extern bfd_cleanup coff_object_p
   (bfd *);
 extern struct bfd_section *coff_section_from_bfd_index
   (bfd *, int);
@@ -313,26 +364,26 @@ extern long coff_canonicalize_symtab
   (bfd *, asymbol **);
 extern int coff_count_linenumbers
   (bfd *);
-extern bfd_boolean coff_renumber_symbols
+extern bool coff_renumber_symbols
   (bfd *, int *);
 extern void coff_mangle_symbols
   (bfd *);
-extern bfd_boolean coff_write_symbols
+extern bool coff_write_symbols
   (bfd *);
-extern bfd_boolean coff_write_alien_symbol
-  (bfd *, asymbol *, struct internal_syment *, union internal_auxent *,
-   bfd_vma *, bfd_size_type *, asection **, bfd_size_type *);
-extern bfd_boolean coff_write_linenumbers
+extern bool coff_write_alien_symbol
+  (bfd *, asymbol *, struct internal_syment *, bfd_vma *,
+   struct bfd_strtab_hash *, bool, asection **, bfd_size_type *);
+extern bool coff_write_linenumbers
   (bfd *);
 extern alent *coff_get_lineno
   (bfd *, asymbol *);
 extern asymbol *coff_section_symbol
   (bfd *, char *);
-extern bfd_boolean _bfd_coff_get_external_symbols
+extern bool _bfd_coff_get_external_symbols
   (bfd *);
 extern const char *_bfd_coff_read_string_table
   (bfd *);
-extern bfd_boolean _bfd_coff_free_symbols
+extern bool _bfd_coff_free_symbols
   (bfd *);
 extern struct coff_ptr_struct *coff_get_normalized_symtab
   (bfd *);
@@ -346,31 +397,35 @@ extern void coff_get_symbol_info
   (bfd *, asymbol *, symbol_info *ret);
 #define coff_get_symbol_version_string \
   _bfd_nosymbols_get_symbol_version_string
-extern bfd_boolean _bfd_coff_is_local_label_name
+extern bool _bfd_coff_is_local_label_name
   (bfd *, const char *);
 extern asymbol *coff_bfd_make_debug_symbol
-  (bfd *, void *, unsigned long);
-extern bfd_boolean coff_find_nearest_line
+  (bfd *);
+extern bool coff_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *);
+#define coff_find_nearest_line_with_alt \
+  _bfd_nosymbols_find_nearest_line_with_alt
 #define coff_find_line _bfd_nosymbols_find_line
 struct dwarf_debug_section;
-extern bfd_boolean coff_find_nearest_line_with_names
+extern bool coff_find_nearest_line_with_names
   (bfd *, asymbol **, asection *, bfd_vma, const char **, const char **,
    unsigned int *, const struct dwarf_debug_section *);
-extern bfd_boolean coff_find_inliner_info
+extern bool coff_find_inliner_info
   (bfd *, const char **, const char **, unsigned int *);
 extern int coff_sizeof_headers
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_coff_reloc16_relax_section
-  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
+extern bool bfd_coff_reloc16_relax_section
+  (bfd *, asection *, struct bfd_link_info *, bool *);
 extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
   (bfd *, struct bfd_link_info *, struct bfd_link_order *,
-   bfd_byte *, bfd_boolean, asymbol **);
+   bfd_byte *, bool, asymbol **);
 extern bfd_vma bfd_coff_reloc16_get_value
   (arelent *, struct bfd_link_info *, asection *);
 extern void bfd_perform_slip
   (bfd *, unsigned int, asection *, bfd_vma);
+extern bool _bfd_coff_free_cached_info
+  (bfd *);
 
 /* Functions and types in cofflink.c.  */
 
@@ -469,11 +524,11 @@ struct coff_final_link_info
   /* Output BFD.  */
   bfd *output_bfd;
   /* Used to indicate failure in traversal routine.  */
-  bfd_boolean failed;
+  bool failed;
   /* If doing "task linking" set only during the time when we want the
      global symbol writer to convert the storage class of defined global
      symbols from global to static. */
-  bfd_boolean global_to_static;
+  bool global_to_static;
   /* Hash table for long symbol names.  */
   struct bfd_strtab_hash *strtab;
   /* When doing a relocatable link, an array of information kept for
@@ -545,9 +600,11 @@ struct coff_section_alignment_entry
   unsigned int alignment_power;
 };
 
+extern struct bfd_hash_entry *_decoration_hash_newfunc
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
 extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-extern bfd_boolean _bfd_coff_link_hash_table_init
+extern bool _bfd_coff_link_hash_table_init
   (struct coff_link_hash_table *, bfd *,
    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
 			       struct bfd_hash_table *,
@@ -557,37 +614,34 @@ extern struct bfd_link_hash_table *_bfd_
   (bfd *);
 extern const char *_bfd_coff_internal_syment_name
   (bfd *, const struct internal_syment *, char *);
-extern bfd_boolean _bfd_coff_section_already_linked
+extern bool _bfd_coff_section_already_linked
   (bfd *, asection *, struct bfd_link_info *);
-extern bfd_boolean _bfd_coff_link_add_symbols
+extern bool _bfd_coff_link_add_symbols
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_coff_final_link
+extern bool _bfd_coff_final_link
   (bfd *, struct bfd_link_info *);
 extern struct internal_reloc *_bfd_coff_read_internal_relocs
-  (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
+  (bfd *, asection *, bool, bfd_byte *, bool,
    struct internal_reloc *);
-extern bfd_boolean _bfd_coff_generic_relocate_section
+extern bool _bfd_coff_generic_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    struct internal_reloc *, struct internal_syment *, asection **);
 extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-extern bfd_boolean _bfd_coff_write_global_sym
+extern bool _bfd_coff_write_global_sym
   (struct bfd_hash_entry *, void *);
-extern bfd_boolean _bfd_coff_write_task_globals
+extern bool _bfd_coff_write_task_globals
   (struct coff_link_hash_entry *, void *);
-extern bfd_boolean _bfd_coff_link_input_bfd
+extern bool _bfd_coff_link_input_bfd
   (struct coff_final_link_info *, bfd *);
-extern bfd_boolean _bfd_coff_reloc_link_order
+extern bool _bfd_coff_reloc_link_order
   (bfd *, struct coff_final_link_info *, asection *,
    struct bfd_link_order *);
-extern bfd_boolean bfd_coff_gc_sections
+extern bool bfd_coff_gc_sections
   (bfd *, struct bfd_link_info *);
 extern const char *bfd_coff_group_name
   (bfd *, const asection *);
 
-#define coff_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
-
 /* Functions in xcofflink.c.  */
 
 extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
@@ -600,49 +654,43 @@ extern long _bfd_xcoff_canonicalize_dyna
   (bfd *, arelent **, asymbol **);
 extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
   (bfd *);
-extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
+extern bool _bfd_xcoff_bfd_link_add_symbols
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_xcoff_bfd_final_link
+extern bool _bfd_xcoff_bfd_final_link
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_xcoff_define_common_symbol
+extern bool _bfd_xcoff_define_common_symbol
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
-extern bfd_boolean _bfd_ppc_xcoff_relocate_section
+extern bool _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
 {
   /* Remembers the offset from the first symbol in the file for
-     this symbol. Generated by coff_renumber_symbols.  */
+     this symbol.  Generated by coff_renumber_symbols.  */
   unsigned int offset;
 
-  /* Should the value of this symbol be renumbered.  Used for
-     XCOFF C_BSTAT symbols.  Set by coff_slurp_symbol_table.  */
-  unsigned int fix_value : 1;
+  /* Selects between the elements of the union below.  */
+  unsigned int is_sym : 1;
 
-  /* Should the tag field of this symbol be renumbered.
-     Created by coff_pointerize_aux.  */
+  /* Selects between the elements of the x_sym.x_tagndx union.  If set,
+     p is valid and the field will be renumbered.  */
   unsigned int fix_tag : 1;
 
-  /* Should the endidx field of this symbol be renumbered.
-     Created by coff_pointerize_aux.  */
+  /* Selects between the elements of the x_sym.x_fcnary.x_fcn.x_endndx
+     union.  If set, p is valid and the field will be renumbered.  */
   unsigned int fix_end : 1;
 
-  /* Should the x_csect.x_scnlen field be renumbered.
-     Created by coff_pointerize_aux.  */
+  /* Selects between the elements of the x_csect.x_scnlen union.  If set,
+     p is valid and the field will be renumbered.  */
   unsigned int fix_scnlen : 1;
 
-  /* Fix up an XCOFF C_BINCL/C_EINCL symbol.  The value is the
-     index into the line number entries.  Set by coff_slurp_symbol_table.  */
+  /* If set, u.syment.n_value contains a pointer to a symbol.  The final
+     value will be the offset field.  Used for XCOFF C_BSTAT symbols.  */
+  unsigned int fix_value : 1;
+
+  /* If set, u.syment.n_value is an index into the line number entries.
+     Used for XCOFF C_BINCL/C_EINCL symbols.  */
   unsigned int fix_line : 1;
 
   /* The container for the symbol structure as read and translated
@@ -653,11 +701,11 @@ typedef struct coff_ptr_struct
     struct internal_syment syment;
   } u;
 
- /* Selector for the union above.  */
- bfd_boolean is_sym;
+ /* An extra pointer which can used by format based on COFF (like XCOFF)
+    to provide extra information to their backend.  */
+ void *extrap;
 } combined_entry_type;
 
-
 /* Each canonical asymbol really looks like this: */
 
 typedef struct coff_symbol_struct
@@ -672,8 +720,9 @@ typedef struct coff_symbol_struct
   struct lineno_cache_entry *lineno;
 
   /* Have the line numbers been relocated yet ? */
-  bfd_boolean done_lineno;
+  bool done_lineno;
 } coff_symbol_type;
+
 /* COFF symbol classifications.  */
 
 enum coff_symbol_classification
@@ -734,14 +783,14 @@ typedef struct
   unsigned int _bfd_relsz;
   unsigned int _bfd_linesz;
   unsigned int _bfd_filnmlen;
-  bfd_boolean _bfd_coff_long_filenames;
+  bool _bfd_coff_long_filenames;
 
-  bfd_boolean _bfd_coff_long_section_names;
-  bfd_boolean (*_bfd_coff_set_long_section_names)
+  bool _bfd_coff_long_section_names;
+  bool (*_bfd_coff_set_long_section_names)
     (bfd *, int);
 
   unsigned int _bfd_coff_default_section_alignment_power;
-  bfd_boolean _bfd_coff_force_symnames_in_strings;
+  bool _bfd_coff_force_symnames_in_strings;
   unsigned int _bfd_coff_debug_string_prefix_length;
   unsigned int _bfd_coff_max_nscns;
 
@@ -757,38 +806,38 @@ typedef struct
   void (*_bfd_coff_swap_reloc_in)
     (bfd *abfd, void *, void *);
 
-  bfd_boolean (*_bfd_coff_bad_format_hook)
+  bool (*_bfd_coff_bad_format_hook)
     (bfd *, void *);
 
-  bfd_boolean (*_bfd_coff_set_arch_mach_hook)
+  bool (*_bfd_coff_set_arch_mach_hook)
     (bfd *, void *);
 
   void * (*_bfd_coff_mkobject_hook)
     (bfd *, void *, void *);
 
-  bfd_boolean (*_bfd_styp_to_sec_flags_hook)
+  bool (*_bfd_styp_to_sec_flags_hook)
     (bfd *, void *, const char *, asection *, flagword *);
 
   void (*_bfd_set_alignment_hook)
     (bfd *, asection *, void *);
 
-  bfd_boolean (*_bfd_coff_slurp_symbol_table)
+  bool (*_bfd_coff_slurp_symbol_table)
     (bfd *);
 
-  bfd_boolean (*_bfd_coff_symname_in_debug)
+  bool (*_bfd_coff_symname_in_debug)
     (bfd *, struct internal_syment *);
 
-  bfd_boolean (*_bfd_coff_pointerize_aux_hook)
+  bool (*_bfd_coff_pointerize_aux_hook)
     (bfd *, combined_entry_type *, combined_entry_type *,
      unsigned int, combined_entry_type *);
 
-  bfd_boolean (*_bfd_coff_print_aux)
+  bool (*_bfd_coff_print_aux)
     (bfd *, FILE *, combined_entry_type *, combined_entry_type *,
      combined_entry_type *, unsigned int);
 
-  void (*_bfd_coff_reloc16_extra_cases)
+  bool (*_bfd_coff_reloc16_extra_cases)
     (bfd *, struct bfd_link_info *, struct bfd_link_order *, arelent *,
-     bfd_byte *, unsigned int *, unsigned int *);
+     bfd_byte *, size_t *, size_t *);
 
   int (*_bfd_coff_reloc16_estimate)
     (bfd *, asection *, arelent *, unsigned int,
@@ -797,13 +846,13 @@ typedef struct
   enum coff_symbol_classification (*_bfd_coff_classify_symbol)
     (bfd *, struct internal_syment *);
 
-  bfd_boolean (*_bfd_coff_compute_section_file_positions)
+  bool (*_bfd_coff_compute_section_file_positions)
     (bfd *);
 
-  bfd_boolean (*_bfd_coff_start_final_link)
+  bool (*_bfd_coff_start_final_link)
     (bfd *, struct bfd_link_info *);
 
-  bfd_boolean (*_bfd_coff_relocate_section)
+  bool (*_bfd_coff_relocate_section)
     (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
      struct internal_reloc *, struct internal_syment *, asection **);
 
@@ -811,28 +860,23 @@ typedef struct
     (bfd *, asection *, struct internal_reloc *,
      struct coff_link_hash_entry *, struct internal_syment *, bfd_vma *);
 
-  bfd_boolean (*_bfd_coff_adjust_symndx)
+  bool (*_bfd_coff_adjust_symndx)
     (bfd *, struct bfd_link_info *, bfd *, asection *,
-     struct internal_reloc *, bfd_boolean *);
-
-  bfd_boolean (*_bfd_coff_link_add_one_symbol)
-    (struct bfd_link_info *, bfd *, const char *, flagword,
-     asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
-     struct bfd_link_hash_entry **);
+     struct internal_reloc *, bool *);
 
-  bfd_boolean (*_bfd_coff_link_output_has_begun)
+  bool (*_bfd_coff_link_output_has_begun)
     (bfd *, struct coff_final_link_info *);
 
-  bfd_boolean (*_bfd_coff_final_link_postscript)
+  bool (*_bfd_coff_final_link_postscript)
     (bfd *, struct coff_final_link_info *);
 
-  bfd_boolean (*_bfd_coff_print_pdata)
+  bool (*_bfd_coff_print_pdata)
     (bfd *, void *);
 
 } bfd_coff_backend_data;
 
 #define coff_backend_info(abfd) \
-  ((bfd_coff_backend_data *) (abfd)->xvec->backend_data)
+  ((const bfd_coff_backend_data *) (abfd)->xvec->backend_data)
 
 #define bfd_coff_swap_aux_in(a,e,t,c,ind,num,i) \
   ((coff_backend_info (a)->_bfd_coff_swap_aux_in) (a,e,t,c,ind,num,i))
@@ -875,7 +919,7 @@ typedef struct
 #define bfd_coff_long_filenames(abfd) \
   (coff_backend_info (abfd)->_bfd_coff_long_filenames)
 #define bfd_coff_long_section_names(abfd) \
-  (coff_backend_info (abfd)->_bfd_coff_long_section_names)
+  (coff_data (abfd)->long_section_names)
 #define bfd_coff_set_long_section_names(abfd, enable) \
   ((coff_backend_info (abfd)->_bfd_coff_set_long_section_names) (abfd, enable))
 #define bfd_coff_default_section_alignment_power(abfd) \
@@ -928,7 +972,7 @@ typedef struct
    (abfd, file, base, symbol, aux, indaux))
 
 #define bfd_coff_reloc16_extra_cases(abfd, link_info, link_order,\
-                                     reloc, data, src_ptr, dst_ptr)\
+				     reloc, data, src_ptr, dst_ptr)\
   ((coff_backend_info (abfd)->_bfd_coff_reloc16_extra_cases)\
    (abfd, link_info, link_order, reloc, data, src_ptr, dst_ptr))
 
@@ -956,10 +1000,6 @@ typedef struct
 #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\
   ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\
    (obfd, info, ibfd, sec, rel, adjustedp))
-#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\
-                                     value, string, cp, coll, hashp)\
-  ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\
-   (info, abfd, name, flags, section, value, string, cp, coll, hashp))
 
 #define bfd_coff_link_output_has_begun(a,p) \
   ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p))
@@ -974,7 +1014,7 @@ typedef struct
 /* Macro: Returns true if the bfd is a PE executable as opposed to a
    PE object file.  */
 #define bfd_pei_p(abfd) \
-  (CONST_STRNEQ ((abfd)->xvec->name, "pei-"))
+  (startswith ((abfd)->xvec->name, "pei-"))
 #ifdef __cplusplus
 }
 #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.20200303/bfd/libcoff-in.h ./bfd/libcoff-in.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libcoff-in.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libcoff-in.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD COFF object file private structure.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -24,6 +24,7 @@
 
 #include "bfdlink.h"
 #include "coff-bfd.h"
+#include "hashtab.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -33,11 +34,13 @@ 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)
+#define obj_coff_keep_raw_syms(bfd)   (coff_data (bfd)->keep_raw_syms)
 #define obj_convert(bfd)	      (coff_data (bfd)->conversion_table)
 #define obj_conv_table_size(bfd)      (coff_data (bfd)->conv_table_size)
 #define obj_coff_external_syms(bfd)   (coff_data (bfd)->external_syms)
@@ -78,21 +81,36 @@ typedef struct coff_tdata
   /* The unswapped external symbols.  May be NULL.  Read by
      _bfd_coff_get_external_symbols.  */
   void * external_syms;
-  /* If this is TRUE, the external_syms may not be freed.  */
-  bfd_boolean keep_syms;
 
   /* The string table.  May be NULL.  Read by
      _bfd_coff_read_string_table.  */
   char *strings;
   /* The length of the strings table.  For error checking.  */
   bfd_size_type strings_len;
+
+  /* Set if long section names are supported.  A writable copy of the COFF
+     backend flag _bfd_coff_long_section_names.  */
+  bool long_section_names;
+
+  /* If this is TRUE, raw_syments may not be released.  */
+  bool keep_raw_syms;
+  /* If this is TRUE, the external_syms may not be freed.  */
+  bool keep_syms;
   /* If this is TRUE, the strings may not be freed.  */
-  bfd_boolean keep_strings;
+  bool keep_strings;
   /* If this is TRUE, the strings have been written out already.  */
-  bfd_boolean strings_written;
+  bool strings_written;
+
+  /* Is this a GO32 coff file?  */
+  bool go32;
 
   /* Is this a PE format coff file?  */
-  int pe;
+  bool pe;
+
+  /* Copy of some of the f_flags bits in the COFF filehdr structure,
+     used by ARM code.  */
+  flagword flags;
+
   /* Used by the COFF backend linker.  */
   struct coff_link_hash_entry **sym_hashes;
 
@@ -110,13 +128,18 @@ typedef struct coff_tdata
   /* The timestamp from the COFF file header.  */
   long timestamp;
 
-  /* Copy of some of the f_flags bits in the COFF filehdr structure,
-     used by ARM code.  */
-  flagword flags;
+  /* 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;
+
+  /* Hash table containing sections by target index.  */
+  htab_t section_by_target_index;
+
+  /* Hash table containing sections by index.  */
+  htab_t section_by_index;
 
-  /* coff-stgo32 EXE stub header after BFD tdata has been allocated.  Its data
-     is kept in internal_filehdr.go32stub beforehand.  */
-  char *go32stub;
 } coff_data_type;
 
 /* Tdata for pe image files.  */
@@ -127,22 +150,36 @@ typedef struct pe_tdata
   int dll;
   int has_reloc_section;
   int dont_strip_reloc;
-  int dos_message[16];
-  bfd_boolean insert_timestamp;
-  bfd_boolean (*in_reloc_p) (bfd *, reloc_howto_type *);
+  char dos_message[64];
+  /* The timestamp to insert into the output file.
+     If the timestamp is -1 then the current time is used.  */
+  int timestamp;
+  bool (*in_reloc_p) (bfd *, reloc_howto_type *);
   flagword real_flags;
 
   /* Build-id info.  */
   struct
   {
-    bfd_boolean (*after_write_object_contents) (bfd *);
+    bool (*after_write_object_contents) (bfd *);
     const char *style;
     asection *sec;
   } build_id;
+
+  htab_t comdat_hash;
 } pe_data_type;
 
 #define pe_data(bfd)		((bfd)->tdata.pe_obj_data)
 
+struct comdat_hash_entry
+{
+  int target_index;
+  struct internal_syment isym;
+  char *symname;
+  flagword sec_flags;
+  char *comdat_name;
+  long comdat_symbol;
+};
+
 /* Tdata for XCOFF files.  */
 
 struct xcoff_tdata
@@ -151,10 +188,10 @@ struct xcoff_tdata
   coff_data_type coff;
 
   /* TRUE if this is an XCOFF64 file. */
-  bfd_boolean xcoff64;
+  bool xcoff64;
 
   /* TRUE if a large a.out header should be generated.  */
-  bfd_boolean full_aouthdr;
+  bool full_aouthdr;
 
   /* TOC value.  */
   bfd_vma toc;
@@ -235,8 +272,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.  */
@@ -267,6 +305,9 @@ struct coff_link_hash_table
   struct bfd_link_hash_table root;
   /* A pointer to information used to link stabs in sections.  */
   struct stab_info stab_info;
+  /* Hash table that maps undecorated names to their respective
+   * decorated coff_link_hash_entry as found in fixup_stdcalls  */
+  struct bfd_hash_table decoration_hash;
 };
 
 struct coff_reloc_cookie
@@ -291,15 +332,25 @@ struct coff_reloc_cookie
 #define coff_link_hash_traverse(table, func, info)			\
   (bfd_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func), \
+    (bool (*) (struct bfd_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* Get the COFF linker hash table from a link_info structure.  */
 
 #define coff_hash_table(p) ((struct coff_link_hash_table *) ((p)->hash))
 
+struct decoration_hash_entry
+{
+  struct bfd_hash_entry root;
+  struct bfd_link_hash_entry *decorated_link;
+};
+
 /* Functions in coffgen.c.  */
-extern const bfd_target *coff_object_p
+extern void coff_object_cleanup
+  (bfd *);
+extern bfd_cleanup coff_real_object_p
+  (bfd *, unsigned, struct internal_filehdr *, struct internal_aouthdr *);
+extern bfd_cleanup coff_object_p
   (bfd *);
 extern struct bfd_section *coff_section_from_bfd_index
   (bfd *, int);
@@ -309,26 +360,26 @@ extern long coff_canonicalize_symtab
   (bfd *, asymbol **);
 extern int coff_count_linenumbers
   (bfd *);
-extern bfd_boolean coff_renumber_symbols
+extern bool coff_renumber_symbols
   (bfd *, int *);
 extern void coff_mangle_symbols
   (bfd *);
-extern bfd_boolean coff_write_symbols
+extern bool coff_write_symbols
   (bfd *);
-extern bfd_boolean coff_write_alien_symbol
-  (bfd *, asymbol *, struct internal_syment *, union internal_auxent *,
-   bfd_vma *, bfd_size_type *, asection **, bfd_size_type *);
-extern bfd_boolean coff_write_linenumbers
+extern bool coff_write_alien_symbol
+  (bfd *, asymbol *, struct internal_syment *, bfd_vma *,
+   struct bfd_strtab_hash *, bool, asection **, bfd_size_type *);
+extern bool coff_write_linenumbers
   (bfd *);
 extern alent *coff_get_lineno
   (bfd *, asymbol *);
 extern asymbol *coff_section_symbol
   (bfd *, char *);
-extern bfd_boolean _bfd_coff_get_external_symbols
+extern bool _bfd_coff_get_external_symbols
   (bfd *);
 extern const char *_bfd_coff_read_string_table
   (bfd *);
-extern bfd_boolean _bfd_coff_free_symbols
+extern bool _bfd_coff_free_symbols
   (bfd *);
 extern struct coff_ptr_struct *coff_get_normalized_symtab
   (bfd *);
@@ -342,31 +393,35 @@ extern void coff_get_symbol_info
   (bfd *, asymbol *, symbol_info *ret);
 #define coff_get_symbol_version_string \
   _bfd_nosymbols_get_symbol_version_string
-extern bfd_boolean _bfd_coff_is_local_label_name
+extern bool _bfd_coff_is_local_label_name
   (bfd *, const char *);
 extern asymbol *coff_bfd_make_debug_symbol
-  (bfd *, void *, unsigned long);
-extern bfd_boolean coff_find_nearest_line
+  (bfd *);
+extern bool coff_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *);
+#define coff_find_nearest_line_with_alt \
+  _bfd_nosymbols_find_nearest_line_with_alt
 #define coff_find_line _bfd_nosymbols_find_line
 struct dwarf_debug_section;
-extern bfd_boolean coff_find_nearest_line_with_names
+extern bool coff_find_nearest_line_with_names
   (bfd *, asymbol **, asection *, bfd_vma, const char **, const char **,
    unsigned int *, const struct dwarf_debug_section *);
-extern bfd_boolean coff_find_inliner_info
+extern bool coff_find_inliner_info
   (bfd *, const char **, const char **, unsigned int *);
 extern int coff_sizeof_headers
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean bfd_coff_reloc16_relax_section
-  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
+extern bool bfd_coff_reloc16_relax_section
+  (bfd *, asection *, struct bfd_link_info *, bool *);
 extern bfd_byte *bfd_coff_reloc16_get_relocated_section_contents
   (bfd *, struct bfd_link_info *, struct bfd_link_order *,
-   bfd_byte *, bfd_boolean, asymbol **);
+   bfd_byte *, bool, asymbol **);
 extern bfd_vma bfd_coff_reloc16_get_value
   (arelent *, struct bfd_link_info *, asection *);
 extern void bfd_perform_slip
   (bfd *, unsigned int, asection *, bfd_vma);
+extern bool _bfd_coff_free_cached_info
+  (bfd *);
 
 /* Functions and types in cofflink.c.  */
 
@@ -465,11 +520,11 @@ struct coff_final_link_info
   /* Output BFD.  */
   bfd *output_bfd;
   /* Used to indicate failure in traversal routine.  */
-  bfd_boolean failed;
+  bool failed;
   /* If doing "task linking" set only during the time when we want the
      global symbol writer to convert the storage class of defined global
      symbols from global to static. */
-  bfd_boolean global_to_static;
+  bool global_to_static;
   /* Hash table for long symbol names.  */
   struct bfd_strtab_hash *strtab;
   /* When doing a relocatable link, an array of information kept for
@@ -541,9 +596,11 @@ struct coff_section_alignment_entry
   unsigned int alignment_power;
 };
 
+extern struct bfd_hash_entry *_decoration_hash_newfunc
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
 extern struct bfd_hash_entry *_bfd_coff_link_hash_newfunc
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-extern bfd_boolean _bfd_coff_link_hash_table_init
+extern bool _bfd_coff_link_hash_table_init
   (struct coff_link_hash_table *, bfd *,
    struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
 			       struct bfd_hash_table *,
@@ -553,37 +610,34 @@ extern struct bfd_link_hash_table *_bfd_
   (bfd *);
 extern const char *_bfd_coff_internal_syment_name
   (bfd *, const struct internal_syment *, char *);
-extern bfd_boolean _bfd_coff_section_already_linked
+extern bool _bfd_coff_section_already_linked
   (bfd *, asection *, struct bfd_link_info *);
-extern bfd_boolean _bfd_coff_link_add_symbols
+extern bool _bfd_coff_link_add_symbols
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_coff_final_link
+extern bool _bfd_coff_final_link
   (bfd *, struct bfd_link_info *);
 extern struct internal_reloc *_bfd_coff_read_internal_relocs
-  (bfd *, asection *, bfd_boolean, bfd_byte *, bfd_boolean,
+  (bfd *, asection *, bool, bfd_byte *, bool,
    struct internal_reloc *);
-extern bfd_boolean _bfd_coff_generic_relocate_section
+extern bool _bfd_coff_generic_relocate_section
   (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *,
    struct internal_reloc *, struct internal_syment *, asection **);
 extern struct bfd_hash_entry *_bfd_coff_debug_merge_hash_newfunc
   (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
-extern bfd_boolean _bfd_coff_write_global_sym
+extern bool _bfd_coff_write_global_sym
   (struct bfd_hash_entry *, void *);
-extern bfd_boolean _bfd_coff_write_task_globals
+extern bool _bfd_coff_write_task_globals
   (struct coff_link_hash_entry *, void *);
-extern bfd_boolean _bfd_coff_link_input_bfd
+extern bool _bfd_coff_link_input_bfd
   (struct coff_final_link_info *, bfd *);
-extern bfd_boolean _bfd_coff_reloc_link_order
+extern bool _bfd_coff_reloc_link_order
   (bfd *, struct coff_final_link_info *, asection *,
    struct bfd_link_order *);
-extern bfd_boolean bfd_coff_gc_sections
+extern bool bfd_coff_gc_sections
   (bfd *, struct bfd_link_info *);
 extern const char *bfd_coff_group_name
   (bfd *, const asection *);
 
-#define coff_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
-
 /* Functions in xcofflink.c.  */
 
 extern long _bfd_xcoff_get_dynamic_symtab_upper_bound
@@ -596,20 +650,12 @@ extern long _bfd_xcoff_canonicalize_dyna
   (bfd *, arelent **, asymbol **);
 extern struct bfd_link_hash_table *_bfd_xcoff_bfd_link_hash_table_create
   (bfd *);
-extern bfd_boolean _bfd_xcoff_bfd_link_add_symbols
+extern bool _bfd_xcoff_bfd_link_add_symbols
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_xcoff_bfd_final_link
+extern bool _bfd_xcoff_bfd_final_link
   (bfd *, struct bfd_link_info *);
-extern bfd_boolean _bfd_xcoff_define_common_symbol
+extern bool _bfd_xcoff_define_common_symbol
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
-extern bfd_boolean _bfd_ppc_xcoff_relocate_section
+extern bool _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.20200303/bfd/libecoff.h ./bfd/libecoff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libecoff.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libecoff.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD ECOFF object file private structure.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -47,7 +47,7 @@ struct ecoff_backend_data
   /* TRUE if the .rdata section is part of the text segment, as on the
      Alpha.  FALSE if .rdata is part of the data segment, as on the
      MIPS.  */
-  bfd_boolean rdata_in_text;
+  bool rdata_in_text;
   /* Bitsize of constructor entries.  */
   unsigned int constructor_bitsize;
   /* Reloc to use for constructor entries.  */
@@ -65,20 +65,27 @@ struct ecoff_backend_data
   void (*adjust_reloc_out)
     (bfd *, const arelent *, struct internal_reloc *);
   /* Relocate section contents while linking.  */
-  bfd_boolean (*relocate_section)
+  bool (*relocate_section)
     (bfd *, struct bfd_link_info *, bfd *, asection *, bfd_byte *, void *);
   /* Do final adjustments to filehdr and aouthdr.  */
-  bfd_boolean (*adjust_headers)
+  bool (*adjust_headers)
     (bfd *, struct internal_filehdr *, struct internal_aouthdr *);
   /* Read an element from an archive at a given file position.  This
      is needed because OSF/1 3.2 uses a weird archive format.  */
-  bfd *(*get_elt_at_filepos) (bfd *, file_ptr);
+  bfd *(*get_elt_at_filepos) (bfd *, file_ptr, struct bfd_link_info *);
 };
 
 /* ECOFF targets don't support COFF long section names, so this
   macro is provided to use as an initialiser for the related
   members of the embedded bfd_coff_backend_data struct.  */
-#define ECOFF_NO_LONG_SECTION_NAMES (FALSE), _bfd_ecoff_no_long_sections
+#define ECOFF_NO_LONG_SECTION_NAMES (false), _bfd_ecoff_no_long_sections
+
+struct mips_hi
+{
+  struct mips_hi *next;
+  bfd_byte *addr;
+  bfd_vma addend;
+};
 
 /* This is the target specific information kept for ECOFF files.  */
 
@@ -117,9 +124,6 @@ typedef struct ecoff_tdata
   /* The ECOFF symbolic debugging information.  */
   struct ecoff_debug_info debug_info;
 
-  /* The unswapped ECOFF symbolic information.  */
-  void * raw_syments;
-
   /* The canonical BFD symbols.  */
   struct ecoff_symbol_struct *canonical_symbols;
 
@@ -132,11 +136,11 @@ typedef struct ecoff_tdata
   asection **symndx_to_section;
 
   /* TRUE if this BFD was written by the backend linker.  */
-  bfd_boolean linker;
+  bool linker;
 
   /* TRUE if a warning that multiple global pointer values are
      needed in the output binary was issued already.  */
-  bfd_boolean issued_multiple_gp_warning;
+  bool issued_multiple_gp_warning;
 
   /* Used by find_nearest_line entry point.  The structure could be
      included directly in this one, but there's no point to wasting
@@ -146,8 +150,10 @@ typedef struct ecoff_tdata
   /* Whether the .rdata section is in the text segment for this
      particular ECOFF file.  This is not valid until
      ecoff_compute_section_file_positions is called.  */
-  bfd_boolean rdata_in_text;
+  bool rdata_in_text;
 
+  /* Used by coff-mips.c to track REFHI relocs for pairing with REFLO.  */
+  struct mips_hi *mips_refhi_list;
 } ecoff_data_type;
 
 /* Each canonical asymbol really looks like this.  */
@@ -161,7 +167,7 @@ typedef struct ecoff_symbol_struct
   FDR *fdr;
 
   /* TRUE if this is a local symbol rather than an external one.  */
-  bfd_boolean local;
+  bool local;
 
   /* A pointer to the unswapped hidden information for this symbol.
      This is either a struct sym_ext or a struct ext_ext, depending on
@@ -224,27 +230,27 @@ struct ecoff_link_hash_table
 };
 
 /* Make an ECOFF object.  */
-extern bfd_boolean _bfd_ecoff_mkobject (bfd *);
+extern bool _bfd_ecoff_mkobject (bfd *);
 
 /* Read in the ECOFF symbolic debugging information.  */
-extern bfd_boolean _bfd_ecoff_slurp_symbolic_info
+extern bool _bfd_ecoff_slurp_symbolic_info
   (bfd *, asection *, struct ecoff_debug_info *);
 
 /* Generic ECOFF BFD backend vectors.  */
 
-extern bfd_boolean _bfd_ecoff_write_object_contents (bfd *);
+extern bool _bfd_ecoff_write_object_contents (bfd *);
 
-#define	_bfd_ecoff_close_and_cleanup _bfd_generic_close_and_cleanup
-#define _bfd_ecoff_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
-extern bfd_boolean _bfd_ecoff_new_section_hook
+#define _bfd_ecoff_close_and_cleanup _bfd_generic_close_and_cleanup
+extern bool _bfd_ecoff_bfd_free_cached_info (bfd *);
+extern bool _bfd_ecoff_new_section_hook
   (bfd *, asection *);
-extern bfd_boolean _bfd_ecoff_get_section_contents
+extern bool _bfd_ecoff_get_section_contents
   (bfd *, asection *, void * location, file_ptr, bfd_size_type);
 
 #define _bfd_ecoff_bfd_link_split_section _bfd_generic_link_split_section
 #define _bfd_ecoff_bfd_link_check_relocs  _bfd_generic_link_check_relocs
 
-extern bfd_boolean _bfd_ecoff_bfd_copy_private_bfd_data
+extern bool _bfd_ecoff_bfd_copy_private_bfd_data
   (bfd *, bfd *);
 #define _bfd_ecoff_bfd_copy_private_section_data \
   _bfd_generic_bfd_copy_private_section_data
@@ -262,12 +268,12 @@ extern bfd_boolean _bfd_ecoff_bfd_copy_p
   _bfd_generic_bfd_merge_private_bfd_data
 
 #define _bfd_ecoff_bfd_set_private_flags _bfd_generic_bfd_set_private_flags
-extern bfd_boolean _bfd_ecoff_slurp_armap (bfd *);
+extern bool _bfd_ecoff_slurp_armap (bfd *);
 #define _bfd_ecoff_slurp_extended_name_table _bfd_slurp_extended_name_table
 #define _bfd_ecoff_construct_extended_name_table \
   _bfd_archive_bsd_construct_extended_name_table
 #define _bfd_ecoff_truncate_arname bfd_dont_truncate_arname
-extern bfd_boolean _bfd_ecoff_write_armap
+extern bool _bfd_ecoff_write_armap
   (bfd *, unsigned int, struct orl *, unsigned int, int);
 #define _bfd_ecoff_read_ar_hdr _bfd_generic_read_ar_hdr
 #define _bfd_ecoff_write_ar_hdr _bfd_generic_write_ar_hdr
@@ -287,12 +293,14 @@ extern void _bfd_ecoff_get_symbol_info
   (bfd *, asymbol *, symbol_info *);
 #define _bfd_ecoff_get_symbol_version_string \
   _bfd_nosymbols_get_symbol_version_string
-extern bfd_boolean _bfd_ecoff_bfd_is_local_label_name
+extern bool _bfd_ecoff_bfd_is_local_label_name
   (bfd *, const char *);
 #define _bfd_ecoff_get_lineno _bfd_nosymbols_get_lineno
-extern bfd_boolean _bfd_ecoff_find_nearest_line
+extern bool _bfd_ecoff_find_nearest_line
   (bfd *, asymbol **, asection *, bfd_vma,
    const char **, const char **, unsigned int *, unsigned int *);
+#define _bfd_ecoff_find_nearest_line_with_alt \
+  _bfd_nosymbols_find_nearest_line_with_alt
 #define _bfd_ecoff_find_line _bfd_nosymbols_find_line
 #define _bfd_ecoff_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
 #define _bfd_ecoff_read_minisymbols _bfd_generic_read_minisymbols
@@ -304,9 +312,9 @@ extern long _bfd_ecoff_canonicalize_relo
   (bfd *, asection *, arelent **, asymbol **);
 /* ecoff_bfd_reloc_type_lookup defined by backend. */
 
-extern bfd_boolean _bfd_ecoff_set_arch_mach
+extern bool _bfd_ecoff_set_arch_mach
   (bfd *, enum bfd_architecture, unsigned long);
-extern bfd_boolean _bfd_ecoff_set_section_contents
+extern bool _bfd_ecoff_set_section_contents
   (bfd *, asection *, const void * location, file_ptr, bfd_size_type);
 
 extern int _bfd_ecoff_sizeof_headers (bfd *, struct bfd_link_info *);
@@ -314,12 +322,12 @@ extern int _bfd_ecoff_sizeof_headers (bf
 /* ecoff_bfd_relax_section defined by backend.  */
 extern struct bfd_link_hash_table *_bfd_ecoff_bfd_link_hash_table_create
   (bfd *);
-extern bfd_boolean _bfd_ecoff_bfd_link_add_symbols
+extern bool _bfd_ecoff_bfd_link_add_symbols
   (bfd *, struct bfd_link_info *);
 #define _bfd_ecoff_bfd_link_just_syms _bfd_generic_link_just_syms
 #define _bfd_ecoff_bfd_copy_link_hash_symbol_type \
   _bfd_generic_copy_link_hash_symbol_type
-extern bfd_boolean _bfd_ecoff_bfd_final_link
+extern bool _bfd_ecoff_bfd_final_link
   (bfd *, struct bfd_link_info *);
 
 /* Hook functions for the generic COFF section reading code.  */
@@ -327,13 +335,13 @@ extern bfd_boolean _bfd_ecoff_bfd_final_
 extern void * _bfd_ecoff_mkobject_hook (bfd *, void *, void *);
 extern void _bfd_ecoff_set_alignment_hook
   (bfd *, asection *, void *);
-extern bfd_boolean _bfd_ecoff_set_arch_mach_hook
+extern bool _bfd_ecoff_set_arch_mach_hook
   (bfd *, void *);
-extern bfd_boolean _bfd_ecoff_no_long_sections
+extern bool _bfd_ecoff_no_long_sections
   (bfd *abfd, int enable);
-extern bfd_boolean _bfd_ecoff_styp_to_sec_flags
+extern bool _bfd_ecoff_styp_to_sec_flags
   (bfd *, void *, const char *, asection *, flagword *);
-extern bfd_boolean _bfd_ecoff_slurp_symbol_table (bfd *);
+extern bool _bfd_ecoff_slurp_symbol_table (bfd *);
 
 /* ECOFF auxiliary information swapping routines.  These are the same
    for all ECOFF targets, so they are defined in ecofflink.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.20200303/bfd/libhppa.h ./bfd/libhppa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libhppa.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libhppa.h	2026-03-05 02:07:20.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-2025 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 = (1u << (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.20200303/bfd/libpei.h ./bfd/libpei.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libpei.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libpei.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Solutions.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -19,6 +19,8 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
+#ifndef _LIBPEI_H
+#define _LIBPEI_H
 
 /* Most of this hacked by  Steve Chamberlain,
 			sac@cygnus.com
@@ -275,6 +277,111 @@
 #define _bfd_XXi_write_codeview_record			_bfd_pepi_write_codeview_record
 #define _bfd_XXi_slurp_codeview_record			_bfd_pepi_slurp_codeview_record
 
+#elif defined COFF_WITH_peAArch64
+
+#define GET_OPTHDR_IMAGE_BASE		 H_GET_64
+#define PUT_OPTHDR_IMAGE_BASE		 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
+#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
+#define GET_OPTHDR_SIZE_OF_STACK_COMMIT	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT	 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_PUT_64
+#define GET_PDATA_ENTRY			 bfd_get_32
+
+#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_peAArch64_bfd_copy_private_bfd_data_common
+#define _bfd_XX_bfd_copy_private_section_data		_bfd_peAArch64_bfd_copy_private_section_data
+#define _bfd_XX_get_symbol_info				_bfd_peAArch64_get_symbol_info
+#define _bfd_XX_only_swap_filehdr_out			_bfd_peAArch64_only_swap_filehdr_out
+#define _bfd_XX_print_private_bfd_data_common		_bfd_peAArch64_print_private_bfd_data_common
+#define _bfd_XXi_final_link_postscript			_bfd_peAArch64i_final_link_postscript
+#define _bfd_XXi_only_swap_filehdr_out			_bfd_peAArch64i_only_swap_filehdr_out
+#define _bfd_XXi_swap_aouthdr_in			_bfd_peAArch64i_swap_aouthdr_in
+#define _bfd_XXi_swap_aouthdr_out			_bfd_peAArch64i_swap_aouthdr_out
+#define _bfd_XXi_swap_aux_in				_bfd_peAArch64i_swap_aux_in
+#define _bfd_XXi_swap_aux_out				_bfd_peAArch64i_swap_aux_out
+#define _bfd_XXi_swap_lineno_in				_bfd_peAArch64i_swap_lineno_in
+#define _bfd_XXi_swap_lineno_out			_bfd_peAArch64i_swap_lineno_out
+#define _bfd_XXi_swap_scnhdr_out			_bfd_peAArch64i_swap_scnhdr_out
+#define _bfd_XXi_swap_sym_in				_bfd_peAArch64i_swap_sym_in
+#define _bfd_XXi_swap_sym_out				_bfd_peAArch64i_swap_sym_out
+#define _bfd_XXi_swap_debugdir_in			_bfd_peAArch64i_swap_debugdir_in
+#define _bfd_XXi_swap_debugdir_out			_bfd_peAArch64i_swap_debugdir_out
+#define _bfd_XXi_write_codeview_record			_bfd_peAArch64i_write_codeview_record
+#define _bfd_XXi_slurp_codeview_record			_bfd_peAArch64i_slurp_codeview_record
+
+#elif defined COFF_WITH_peLoongArch64
+
+#define GET_OPTHDR_IMAGE_BASE		 H_GET_64
+#define PUT_OPTHDR_IMAGE_BASE		 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
+#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
+#define GET_OPTHDR_SIZE_OF_STACK_COMMIT	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT	 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_PUT_64
+#define GET_PDATA_ENTRY			 bfd_get_32
+
+#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_peLoongArch64_bfd_copy_private_bfd_data_common
+#define _bfd_XX_bfd_copy_private_section_data		_bfd_peLoongArch64_bfd_copy_private_section_data
+#define _bfd_XX_get_symbol_info				_bfd_peLoongArch64_get_symbol_info
+#define _bfd_XX_only_swap_filehdr_out			_bfd_peLoongArch64_only_swap_filehdr_out
+#define _bfd_XX_print_private_bfd_data_common		_bfd_peLoongArch64_print_private_bfd_data_common
+#define _bfd_XXi_final_link_postscript			_bfd_peLoongArch64i_final_link_postscript
+#define _bfd_XXi_only_swap_filehdr_out			_bfd_peLoongArch64i_only_swap_filehdr_out
+#define _bfd_XXi_swap_aouthdr_in			_bfd_peLoongArch64i_swap_aouthdr_in
+#define _bfd_XXi_swap_aouthdr_out			_bfd_peLoongArch64i_swap_aouthdr_out
+#define _bfd_XXi_swap_aux_in				_bfd_peLoongArch64i_swap_aux_in
+#define _bfd_XXi_swap_aux_out				_bfd_peLoongArch64i_swap_aux_out
+#define _bfd_XXi_swap_lineno_in				_bfd_peLoongArch64i_swap_lineno_in
+#define _bfd_XXi_swap_lineno_out			_bfd_peLoongArch64i_swap_lineno_out
+#define _bfd_XXi_swap_scnhdr_out			_bfd_peLoongArch64i_swap_scnhdr_out
+#define _bfd_XXi_swap_sym_in				_bfd_peLoongArch64i_swap_sym_in
+#define _bfd_XXi_swap_sym_out				_bfd_peLoongArch64i_swap_sym_out
+#define _bfd_XXi_swap_debugdir_in			_bfd_peLoongArch64i_swap_debugdir_in
+#define _bfd_XXi_swap_debugdir_out			_bfd_peLoongArch64i_swap_debugdir_out
+#define _bfd_XXi_write_codeview_record			_bfd_peLoongArch64i_write_codeview_record
+#define _bfd_XXi_slurp_codeview_record			_bfd_peLoongArch64i_slurp_codeview_record
+
+#elif defined COFF_WITH_peRiscV64
+
+#define GET_OPTHDR_IMAGE_BASE		 H_GET_64
+#define PUT_OPTHDR_IMAGE_BASE		 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64
+#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64
+#define GET_OPTHDR_SIZE_OF_STACK_COMMIT	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT	 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE	 H_PUT_64
+#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_GET_64
+#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT	 H_PUT_64
+#define GET_PDATA_ENTRY			 bfd_get_32
+
+#define _bfd_XX_bfd_copy_private_bfd_data_common	_bfd_peRiscV64_bfd_copy_private_bfd_data_common
+#define _bfd_XX_bfd_copy_private_section_data		_bfd_peRiscV64_bfd_copy_private_section_data
+#define _bfd_XX_get_symbol_info				_bfd_peRiscV64_get_symbol_info
+#define _bfd_XX_only_swap_filehdr_out			_bfd_peRiscV64_only_swap_filehdr_out
+#define _bfd_XX_print_private_bfd_data_common		_bfd_peRiscV64_print_private_bfd_data_common
+#define _bfd_XXi_final_link_postscript			_bfd_peRiscV64i_final_link_postscript
+#define _bfd_XXi_only_swap_filehdr_out			_bfd_peRiscV64i_only_swap_filehdr_out
+#define _bfd_XXi_swap_aouthdr_in			_bfd_peRiscV64i_swap_aouthdr_in
+#define _bfd_XXi_swap_aouthdr_out			_bfd_peRiscV64i_swap_aouthdr_out
+#define _bfd_XXi_swap_aux_in				_bfd_peRiscV64i_swap_aux_in
+#define _bfd_XXi_swap_aux_out				_bfd_peRiscV64i_swap_aux_out
+#define _bfd_XXi_swap_lineno_in				_bfd_peRiscV64i_swap_lineno_in
+#define _bfd_XXi_swap_lineno_out			_bfd_peRiscV64i_swap_lineno_out
+#define _bfd_XXi_swap_scnhdr_out			_bfd_peRiscV64i_swap_scnhdr_out
+#define _bfd_XXi_swap_sym_in				_bfd_peRiscV64i_swap_sym_in
+#define _bfd_XXi_swap_sym_out				_bfd_peRiscV64i_swap_sym_out
+#define _bfd_XXi_swap_debugdir_in			_bfd_peRiscV64i_swap_debugdir_in
+#define _bfd_XXi_swap_debugdir_out			_bfd_peRiscV64i_swap_debugdir_out
+#define _bfd_XXi_write_codeview_record			_bfd_peRiscV64i_write_codeview_record
+#define _bfd_XXi_slurp_codeview_record			_bfd_peRiscV64i_slurp_codeview_record
+
 #else /* !COFF_WITH_pep */
 
 #define GET_OPTHDR_IMAGE_BASE H_GET_32
@@ -338,34 +445,42 @@
 #define coff_final_link_postscript _bfd_XXi_final_link_postscript
 #endif
 
-void	    _bfd_XXi_swap_sym_in (bfd *, void *, void *);
-unsigned    _bfd_XXi_swap_sym_out (bfd *, void *, void *);
-void	    _bfd_XXi_swap_aux_in (bfd *, void *, int, int, int, int, void *);
-unsigned    _bfd_XXi_swap_aux_out (bfd *, void *, int, int, int, int, void *);
-void	    _bfd_XXi_swap_lineno_in (bfd *, void *, void *);
-unsigned    _bfd_XXi_swap_lineno_out (bfd *, void *, void *);
-void	    _bfd_XXi_swap_aouthdr_in (bfd *, void *, void *);
-unsigned    _bfd_XXi_swap_aouthdr_out (bfd *, void *, void *);
-unsigned    _bfd_XXi_swap_scnhdr_out (bfd *, void *, void *);
-bfd_boolean _bfd_XX_print_private_bfd_data_common (bfd *, void *);
-bfd_boolean _bfd_XX_bfd_copy_private_bfd_data_common (bfd *, bfd *);
-void	    _bfd_XX_get_symbol_info (bfd *, asymbol *, symbol_info *);
-bfd_boolean _bfd_XXi_final_link_postscript (bfd *, struct coff_final_link_info *);
-void	    _bfd_XXi_swap_debugdir_in (bfd *, void *, void *);
-unsigned    _bfd_XXi_swap_debugdir_out (bfd *, void *, void *);
-unsigned    _bfd_XXi_write_codeview_record (bfd *, file_ptr, CODEVIEW_INFO *);
-CODEVIEW_INFO * _bfd_XXi_slurp_codeview_record (bfd * abfd, file_ptr where, unsigned long length, CODEVIEW_INFO *cvinfo);
+void _bfd_XXi_swap_sym_in (bfd *, void *, void *);
+unsigned _bfd_XXi_swap_sym_out (bfd *, void *, void *);
+void _bfd_XXi_swap_aux_in (bfd *, void *, int, int, int, int, void *);
+unsigned _bfd_XXi_swap_aux_out (bfd *, void *, int, int, int, int, void *);
+void _bfd_XXi_swap_lineno_in (bfd *, void *, void *);
+unsigned _bfd_XXi_swap_lineno_out (bfd *, void *, void *);
+void _bfd_XXi_swap_aouthdr_in (bfd *, void *, void *);
+unsigned _bfd_XXi_swap_aouthdr_out (bfd *, void *, void *);
+unsigned _bfd_XXi_swap_scnhdr_out (bfd *, void *, void *);
+bool _bfd_XX_print_private_bfd_data_common (bfd *, void *);
+bool _bfd_XX_bfd_copy_private_bfd_data_common (bfd *, bfd *);
+void _bfd_XX_get_symbol_info (bfd *, asymbol *, symbol_info *);
+bool _bfd_XXi_final_link_postscript (bfd *, struct coff_final_link_info *);
+void _bfd_XXi_swap_debugdir_in (bfd *, void *, void *);
+unsigned _bfd_XXi_swap_debugdir_out (bfd *, void *, void *);
+unsigned _bfd_XXi_write_codeview_record
+  (bfd *, file_ptr, CODEVIEW_INFO *, const char *);
+CODEVIEW_INFO *_bfd_XXi_slurp_codeview_record
+  (bfd * abfd, file_ptr where, unsigned long length, CODEVIEW_INFO *cvinfo,
+   char **pdb);
 
 /* The following are needed only for ONE of pe or pei, but don't
    otherwise vary; peicode.h fixes up ifdefs but we provide the
    prototype.  */
 
-unsigned    _bfd_XX_only_swap_filehdr_out  (bfd *, void *, void *);
-unsigned    _bfd_XXi_only_swap_filehdr_out (bfd *, void *, void *);
-bfd_boolean _bfd_XX_bfd_copy_private_section_data (bfd *, asection *, bfd *, asection *);
-
-bfd_boolean _bfd_pe_print_ce_compressed_pdata (bfd *, void *);
-bfd_boolean _bfd_pe64_print_ce_compressed_pdata (bfd *, void *);
-bfd_boolean _bfd_pex64_print_ce_compressed_pdata (bfd *, void *);
-bfd_boolean _bfd_pep_print_ce_compressed_pdata (bfd *, void *);
+unsigned _bfd_XX_only_swap_filehdr_out  (bfd *, void *, void *);
+unsigned _bfd_XXi_only_swap_filehdr_out (bfd *, void *, void *);
+bool _bfd_XX_bfd_copy_private_section_data
+  (bfd *, asection *, bfd *, asection *, struct bfd_link_info *);
+
+bool _bfd_pe_print_ce_compressed_pdata (bfd *, void *);
+bool _bfd_pe64_print_ce_compressed_pdata (bfd *, void *);
+bool _bfd_pex64_print_ce_compressed_pdata (bfd *, void *);
+bool _bfd_peAArch64_print_ce_compressed_pdata (bfd *, void *);
+bool _bfd_peLoongArch64_print_ce_compressed_pdata (bfd *, void *);
+bool _bfd_peRiscV64_print_ce_compressed_pdata (bfd *, void *);
+bool _bfd_pep_print_ce_compressed_pdata (bfd *, void *);
 
+#endif /* _LIBPEI_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.20200303/bfd/libxcoff.h ./bfd/libxcoff.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/libxcoff.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/libxcoff.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD XCOFF object file private structure.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
    Written by Tom Rix, Redhat.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -63,11 +63,11 @@ struct xcoff_backend_data_rec
      2 : XCOFF64.  */
   unsigned long _xcoff_ldhdr_version;
 
-  bfd_boolean (* _xcoff_put_symbol_name)
+  bool (* _xcoff_put_symbol_name)
     (struct bfd_link_info *, struct bfd_strtab_hash *,
      struct internal_syment *, const char *);
 
-  bfd_boolean (* _xcoff_put_ldsymbol_name)
+  bool (* _xcoff_put_ldsymbol_name)
     (bfd *, struct xcoff_loader_info *, struct internal_ldsym *,
      const char *);
 
@@ -79,8 +79,8 @@ struct xcoff_backend_data_rec
   /* Line number and relocation overflow.
      XCOFF32 overflows to another section when the line number or the
      relocation count exceeds 0xffff.  XCOFF64 does not overflow.  */
-  bfd_boolean (*_xcoff_is_lineno_count_overflow) (bfd *, bfd_vma);
-  bfd_boolean (*_xcoff_is_reloc_count_overflow)  (bfd *, bfd_vma);
+  bool (*_xcoff_is_lineno_count_overflow) (bfd *, bfd_vma);
+  bool (*_xcoff_is_reloc_count_overflow)  (bfd *, bfd_vma);
 
   /* Loader section symbol and relocation table offset
      XCOFF32 is after the .loader header
@@ -90,15 +90,24 @@ struct xcoff_backend_data_rec
 
   /* Global linkage.  The first word of global linkage code must be be
      modified by filling in the correct TOC offset.  */
-  unsigned long *_xcoff_glink_code;
+  const unsigned long *_xcoff_glink_code;
 
   /* Size of the global link code in bytes of the xcoff_glink_code table.  */
   unsigned long _xcoff_glink_size;
 
   /* rtinit.  */
   unsigned int _xcoff_rtinit_size;
-  bfd_boolean (*_xcoff_generate_rtinit)
-    (bfd *, const char *, const char *, bfd_boolean);
+  bool (*_xcoff_generate_rtinit)
+    (bfd *, const char *, const char *, bool);
+
+  /* Stubs code generation.
+     The code part is an array which might need to be modified by
+     some relocations.
+     The size is in bytes.  */
+  const unsigned long *_xcoff_stub_indirect_call_code;
+  unsigned long _xcoff_stub_indirect_call_size;
+  const unsigned long *_xcoff_stub_shared_call_code;
+  unsigned long _xcoff_stub_shared_call_size;
 };
 
 /* Look up an entry in an XCOFF link hash table.  */
@@ -111,7 +120,7 @@ struct xcoff_backend_data_rec
 #define xcoff_link_hash_traverse(table, func, info)			\
   (bfd_link_hash_traverse						\
    (&(table)->root,							\
-    (bfd_boolean (*) (struct bfd_link_hash_entry *, void *)) (func),	\
+    (bool (*) (struct bfd_link_hash_entry *, void *)) (func),		\
     (info)))
 
 /* Get the XCOFF link hash table from the info structure.  This is
@@ -185,6 +194,11 @@ struct xcoff_backend_data_rec
 #define bfd_xcoff_glink_code(a, b)   ((xcoff_backend (a)->_xcoff_glink_code[(b)]))
 #define bfd_xcoff_glink_code_size(a) ((xcoff_backend (a)->_xcoff_glink_size))
 
+#define bfd_xcoff_stub_indirect_call_code(a, b)   ((xcoff_backend (a)->_xcoff_stub_indirect_call_code[(b)]))
+#define bfd_xcoff_stub_indirect_call_size(a) ((xcoff_backend (a)->_xcoff_stub_indirect_call_size))
+#define bfd_xcoff_stub_shared_call_code(a, b)   ((xcoff_backend (a)->_xcoff_stub_shared_call_code[(b)]))
+#define bfd_xcoff_stub_shared_call_size(a) ((xcoff_backend (a)->_xcoff_stub_shared_call_size))
+
 /* Check for the magic number U803XTOCMAGIC or U64_TOCMAGIC for 64 bit
    targets.  */
 #define bfd_xcoff_is_xcoff64(a) \
@@ -202,7 +216,7 @@ struct xcoff_backend_data_rec
 #define bfd_xcoff_data_align_power(a) ((xcoff_data (a)->data_align_power))
 
 /* xcoff*_ppc_relocate_section macros  */
-#define XCOFF_MAX_CALCULATE_RELOCATION (0x1c)
+#define XCOFF_MAX_CALCULATE_RELOCATION (0x32)
 #define XCOFF_MAX_COMPLAIN_OVERFLOW (4)
 /* N_ONES produces N one bits, without overflowing machine arithmetic.  */
 #ifdef N_ONES
@@ -210,30 +224,32 @@ struct xcoff_backend_data_rec
 #endif
 #define N_ONES(n) (((((bfd_vma) 1 << ((n) - 1)) - 1) << 1) | 1)
 
-#define XCOFF_RELOC_FUNCTION_ARGS \
-  bfd *, asection *, bfd *, struct internal_reloc *, \
-  struct internal_syment *, struct reloc_howto_struct *, bfd_vma, bfd_vma, \
-  bfd_vma *relocation, bfd_byte *contents
-
-#define XCOFF_COMPLAIN_FUNCTION_ARGS \
-  bfd *, bfd_vma, bfd_vma, struct reloc_howto_struct *howto
-
-extern bfd_boolean (*xcoff_calculate_relocation[XCOFF_MAX_CALCULATE_RELOCATION])
-  (XCOFF_RELOC_FUNCTION_ARGS);
-extern bfd_boolean (*xcoff_complain_overflow[XCOFF_MAX_COMPLAIN_OVERFLOW])
-  (XCOFF_COMPLAIN_FUNCTION_ARGS);
+typedef bool xcoff_reloc_function (bfd *, asection *, bfd *,
+				   struct internal_reloc *,
+				   struct internal_syment *,
+				   struct reloc_howto_struct *,
+				   bfd_vma, bfd_vma,
+				   bfd_vma *, bfd_byte *,
+				   struct bfd_link_info *);
+
+typedef bool xcoff_complain_function (bfd *, bfd_vma, bfd_vma,
+					     struct reloc_howto_struct *);
 
-#define XCOFF_NO_LONG_SECTION_NAMES  (FALSE), bfd_coff_set_long_section_names_disallowed
+extern xcoff_reloc_function *const xcoff_calculate_relocation[];
+extern xcoff_complain_function *const xcoff_complain_overflow[];
+
+#define XCOFF_NO_LONG_SECTION_NAMES  (false), bfd_coff_set_long_section_names_disallowed
 
 /* Relocation functions */
-bfd_boolean xcoff_reloc_type_noop (XCOFF_RELOC_FUNCTION_ARGS);
-bfd_boolean xcoff_reloc_type_fail (XCOFF_RELOC_FUNCTION_ARGS);
-bfd_boolean xcoff_reloc_type_pos  (XCOFF_RELOC_FUNCTION_ARGS);
-bfd_boolean xcoff_reloc_type_neg  (XCOFF_RELOC_FUNCTION_ARGS);
-bfd_boolean xcoff_reloc_type_rel  (XCOFF_RELOC_FUNCTION_ARGS);
-bfd_boolean xcoff_reloc_type_toc  (XCOFF_RELOC_FUNCTION_ARGS);
-bfd_boolean xcoff_reloc_type_ba   (XCOFF_RELOC_FUNCTION_ARGS);
-bfd_boolean xcoff_reloc_type_crel (XCOFF_RELOC_FUNCTION_ARGS);
+extern xcoff_reloc_function xcoff_reloc_type_noop;
+extern xcoff_reloc_function xcoff_reloc_type_fail;
+extern xcoff_reloc_function xcoff_reloc_type_pos;
+extern xcoff_reloc_function xcoff_reloc_type_neg;
+extern xcoff_reloc_function xcoff_reloc_type_rel;
+extern xcoff_reloc_function xcoff_reloc_type_toc;
+extern xcoff_reloc_function xcoff_reloc_type_ba;
+extern xcoff_reloc_function xcoff_reloc_type_crel;
+extern xcoff_reloc_function xcoff_reloc_type_tls;
 
 /* Structure to describe dwarf sections.
    Useful to convert from XCOFF section name to flag and vice-versa.
@@ -243,18 +259,59 @@ struct xcoff_dwsect_name {
   unsigned int flag;
 
   /* Corresponding XCOFF section name.  */
-  const char *name;
+  const char *xcoff_name;
+
+  /* Corresponding DWARF section name.  */
+  const char *dwarf_name;
 
   /* True if size must be prepended.  */
-  bfd_boolean def_size;
+  bool def_size;
 };
 
 /* Number of entries in the array.  The number is known and public so that user
    can 'extend' this array by index.  */
-#define XCOFF_DWSECT_NBR_NAMES	8
+#define XCOFF_DWSECT_NBR_NAMES	11
 
 /* The dwarf sections array.  */
 extern const struct xcoff_dwsect_name
   xcoff_dwsect_names[XCOFF_DWSECT_NBR_NAMES];
 
+/* Structure and functions needed by backend in order to handle
+   stubs created in xcofflink.c.  */
+
+enum xcoff_stub_type
+  {
+    xcoff_stub_none,
+    xcoff_stub_indirect_call,
+    xcoff_stub_shared_call
+  };
+
+struct xcoff_stub_hash_entry
+{
+  /* Base hash table entry structure.  */
+  struct bfd_hash_entry root;
+
+  enum xcoff_stub_type stub_type;
+
+  /* The hash table entry of the stub's csect.  */
+  struct xcoff_link_hash_entry *hcsect;
+
+  /* Offset in the stub's csect.  */
+  bfd_vma stub_offset;
+
+  /* The target's section.  */
+  asection *target_section;
+
+  /* The target's hash table entry.  */
+  struct xcoff_link_hash_entry *htarget;
+};
+
+
+extern enum xcoff_stub_type bfd_xcoff_type_of_stub
+  (asection *, const struct internal_reloc *, bfd_vma,
+   struct xcoff_link_hash_entry *);
+
+extern struct xcoff_stub_hash_entry *bfd_xcoff_get_stub_entry
+  (asection *, struct xcoff_link_hash_entry *, struct bfd_link_info *);
+
 #endif /* LIBXCOFF_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.20200303/bfd/linker.c ./bfd/linker.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/linker.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/linker.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* linker.c -- BFD linker routines
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 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.
@@ -402,20 +402,36 @@ SUBSUBSECTION
 	file at the end of <<NAME(aout,final_link)>>.
 */
 
-static bfd_boolean generic_link_add_object_symbols
+/* This structure is used to pass information to
+   _bfd_generic_link_write_global_symbol, which may be called via
+   _bfd_generic_link_hash_traverse.  */
+
+struct generic_write_global_symbol_info
+{
+  struct bfd_link_info *info;
+  bfd *output_bfd;
+  size_t *psymalloc;
+  bool failed;
+};
+
+static bool generic_link_add_object_symbols
   (bfd *, struct bfd_link_info *);
-static bfd_boolean generic_link_check_archive_element
+static bool generic_link_check_archive_element
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *,
-   bfd_boolean *);
-static bfd_boolean generic_link_add_symbol_list
+   bool *);
+static bool generic_link_add_symbol_list
   (bfd *, struct bfd_link_info *, bfd_size_type count, asymbol **);
-static bfd_boolean generic_add_output_symbol
+static bool generic_add_output_symbol
   (bfd *, size_t *psymalloc, asymbol *);
-static bfd_boolean default_data_link_order
+static bool default_data_link_order
   (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *);
-static bfd_boolean default_indirect_link_order
+static bool default_indirect_link_order
   (bfd *, struct bfd_link_info *, asection *, struct bfd_link_order *,
-   bfd_boolean);
+   bool);
+static bool _bfd_generic_link_output_symbols
+  (bfd *, bfd *, struct bfd_link_info *, size_t *);
+static bool _bfd_generic_link_write_global_symbol
+  (struct generic_link_hash_entry *, void *);
 
 /* The link hash table structure is defined in bfdlink.h.  It provides
    a base hash table which the backend specific hash tables are built
@@ -455,7 +471,7 @@ _bfd_link_hash_newfunc (struct bfd_hash_
 /* Initialize a link hash table.  The BFD argument is the one
    responsible for creating this table.  */
 
-bfd_boolean
+bool
 _bfd_link_hash_table_init
   (struct bfd_link_hash_table *table,
    bfd *abfd ATTRIBUTE_UNUSED,
@@ -464,7 +480,7 @@ _bfd_link_hash_table_init
 				      const char *),
    unsigned int entsize)
 {
-  bfd_boolean ret;
+  bool ret;
 
   BFD_ASSERT (!abfd->is_linker_output && !abfd->link.hash);
   table->undefs = NULL;
@@ -477,7 +493,7 @@ _bfd_link_hash_table_init
       /* Arrange for destruction of this hash table on closing ABFD.  */
       table->hash_table_free = _bfd_generic_link_hash_table_free;
       abfd->link.hash = table;
-      abfd->is_linker_output = TRUE;
+      abfd->is_linker_output = true;
     }
   return ret;
 }
@@ -502,9 +518,9 @@ _bfd_link_hash_table_init
 struct bfd_link_hash_entry *
 bfd_link_hash_lookup (struct bfd_link_hash_table *table,
 		      const char *string,
-		      bfd_boolean create,
-		      bfd_boolean copy,
-		      bfd_boolean follow)
+		      bool create,
+		      bool copy,
+		      bool follow)
 {
   struct bfd_link_hash_entry *ret;
 
@@ -532,11 +548,11 @@ struct bfd_link_hash_entry *
 bfd_wrapped_link_hash_lookup (bfd *abfd,
 			      struct bfd_link_info *info,
 			      const char *string,
-			      bfd_boolean create,
-			      bfd_boolean copy,
-			      bfd_boolean follow)
+			      bool create,
+			      bool copy,
+			      bool follow)
 {
-  bfd_size_type amt;
+  size_t amt;
 
   if (info->wrap_hash != NULL)
     {
@@ -544,7 +560,9 @@ bfd_wrapped_link_hash_lookup (bfd *abfd,
       char prefix = '\0';
 
       l = string;
-      if (*l == bfd_get_symbol_leading_char (abfd) || *l == info->wrap_char)
+      if (*l
+	  && (*l == bfd_get_symbol_leading_char (abfd)
+	      || *l == info->wrap_char))
 	{
 	  prefix = *l;
 	  ++l;
@@ -553,7 +571,7 @@ bfd_wrapped_link_hash_lookup (bfd *abfd,
 #undef WRAP
 #define WRAP "__wrap_"
 
-      if (bfd_hash_lookup (info->wrap_hash, l, FALSE, FALSE) != NULL)
+      if (bfd_hash_lookup (info->wrap_hash, l, false, false) != NULL)
 	{
 	  char *n;
 	  struct bfd_link_hash_entry *h;
@@ -570,7 +588,9 @@ bfd_wrapped_link_hash_lookup (bfd *abfd,
 	  n[1] = '\0';
 	  strcat (n, WRAP);
 	  strcat (n, l);
-	  h = bfd_link_hash_lookup (info->hash, n, create, TRUE, follow);
+	  h = bfd_link_hash_lookup (info->hash, n, create, true, follow);
+	  if (h != NULL)
+	    h->wrapper_symbol = true;
 	  free (n);
 	  return h;
 	}
@@ -579,9 +599,9 @@ bfd_wrapped_link_hash_lookup (bfd *abfd,
 #define REAL "__real_"
 
       if (*l == '_'
-	  && CONST_STRNEQ (l, REAL)
+	  && startswith (l, REAL)
 	  && bfd_hash_lookup (info->wrap_hash, l + sizeof REAL - 1,
-			      FALSE, FALSE) != NULL)
+			      false, false) != NULL)
 	{
 	  char *n;
 	  struct bfd_link_hash_entry *h;
@@ -598,7 +618,9 @@ bfd_wrapped_link_hash_lookup (bfd *abfd,
 	  n[0] = prefix;
 	  n[1] = '\0';
 	  strcat (n, l + sizeof REAL - 1);
-	  h = bfd_link_hash_lookup (info->hash, n, create, TRUE, follow);
+	  h = bfd_link_hash_lookup (info->hash, n, create, true, follow);
+	  if (h != NULL)
+	    h->ref_real = 1;
 	  free (n);
 	  return h;
 	}
@@ -619,15 +641,16 @@ unwrap_hash_lookup (struct bfd_link_info
 {
   const char *l = h->root.string;
 
-  if (*l == bfd_get_symbol_leading_char (input_bfd)
-      || *l == info->wrap_char)
+  if (*l
+      && (*l == bfd_get_symbol_leading_char (input_bfd)
+	  || *l == info->wrap_char))
     ++l;
 
-  if (CONST_STRNEQ (l, WRAP))
+  if (startswith (l, WRAP))
     {
       l += sizeof WRAP - 1;
 
-      if (bfd_hash_lookup (info->wrap_hash, l, FALSE, FALSE) != NULL)
+      if (bfd_hash_lookup (info->wrap_hash, l, false, false) != NULL)
 	{
 	  char save = 0;
 	  if (l - (sizeof WRAP - 1) != h->root.string)
@@ -636,7 +659,7 @@ unwrap_hash_lookup (struct bfd_link_info
 	      save = *l;
 	      *(char *) l = *h->root.string;
 	    }
-	  h = bfd_link_hash_lookup (info->hash, l, FALSE, FALSE, FALSE);
+	  h = bfd_link_hash_lookup (info->hash, l, false, false, false);
 	  if (save)
 	    *(char *) l = save;
 	}
@@ -654,7 +677,7 @@ unwrap_hash_lookup (struct bfd_link_info
 void
 bfd_link_hash_traverse
   (struct bfd_link_hash_table *htab,
-   bfd_boolean (*func) (struct bfd_link_hash_entry *, void *),
+   bool (*func) (struct bfd_link_hash_entry *, void *),
    void *info)
 {
   unsigned int i;
@@ -728,7 +751,7 @@ bfd_link_repair_undef_list (struct bfd_l
 
 /* Routine to create an entry in a generic link hash table.  */
 
-struct bfd_hash_entry *
+static struct bfd_hash_entry *
 _bfd_generic_link_hash_newfunc (struct bfd_hash_entry *entry,
 				struct bfd_hash_table *table,
 				const char *string)
@@ -751,7 +774,7 @@ _bfd_generic_link_hash_newfunc (struct b
 
       /* Set local fields.  */
       ret = (struct generic_link_hash_entry *) entry;
-      ret->written = FALSE;
+      ret->written = false;
       ret->sym = NULL;
     }
 
@@ -764,7 +787,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)
@@ -789,7 +812,7 @@ _bfd_generic_link_hash_table_free (bfd *
   bfd_hash_table_free (&ret->root.table);
   free (ret);
   obfd->link.hash = NULL;
-  obfd->is_linker_output = FALSE;
+  obfd->is_linker_output = false;
 }
 
 /* Grab the symbols for an object file when doing a generic link.  We
@@ -799,7 +822,7 @@ _bfd_generic_link_hash_table_free (bfd *
    the hash table pointing to different instances of the symbol
    structure.  */
 
-bfd_boolean
+bool
 bfd_generic_link_read_symbols (bfd *abfd)
 {
   if (bfd_get_outsymbols (abfd) == NULL)
@@ -809,17 +832,17 @@ bfd_generic_link_read_symbols (bfd *abfd
 
       symsize = bfd_get_symtab_upper_bound (abfd);
       if (symsize < 0)
-	return FALSE;
+	return false;
       abfd->outsymbols = bfd_alloc (abfd, symsize);
       if (bfd_get_outsymbols (abfd) == NULL && symsize != 0)
-	return FALSE;
+	return false;
       symcount = bfd_canonicalize_symtab (abfd, bfd_get_outsymbols (abfd));
       if (symcount < 0)
-	return FALSE;
+	return false;
       abfd->symcount = symcount;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Indicate that we are only retrieving symbol values from this
@@ -848,10 +871,10 @@ _bfd_generic_copy_link_hash_symbol_type
 /* Generic function to add symbols from an object file to the
    global hash table.  */
 
-bfd_boolean
+bool
 _bfd_generic_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
-  bfd_boolean ret;
+  bool ret;
 
   switch (bfd_get_format (abfd))
     {
@@ -864,7 +887,7 @@ _bfd_generic_link_add_symbols (bfd *abfd
       break;
     default:
       bfd_set_error (bfd_error_wrong_format);
-      ret = FALSE;
+      ret = false;
     }
 
   return ret;
@@ -872,7 +895,7 @@ _bfd_generic_link_add_symbols (bfd *abfd
 
 /* Add symbols from an object file to the global hash table.  */
 
-static bfd_boolean
+static bool
 generic_link_add_object_symbols (bfd *abfd,
 				 struct bfd_link_info *info)
 {
@@ -880,7 +903,7 @@ generic_link_add_object_symbols (bfd *ab
   struct bfd_symbol **outsyms;
 
   if (!bfd_generic_link_read_symbols (abfd))
-    return FALSE;
+    return false;
   symcount = _bfd_generic_link_get_symcount (abfd);
   outsyms = _bfd_generic_link_get_symbols (abfd);
   return generic_link_add_symbol_list (abfd, info, symcount, outsyms);
@@ -901,15 +924,14 @@ generic_link_add_object_symbols (bfd *ab
    those symbols instead if it does so.  CHECKFN should only return
    FALSE if some sort of error occurs.  */
 
-bfd_boolean
+bool
 _bfd_generic_link_add_archive_symbols
   (bfd *abfd,
    struct bfd_link_info *info,
-   bfd_boolean (*checkfn) (bfd *, struct bfd_link_info *,
-			   struct bfd_link_hash_entry *, const char *,
-			   bfd_boolean *))
+   bool (*checkfn) (bfd *, struct bfd_link_info *,
+		    struct bfd_link_hash_entry *, const char *, bool *))
 {
-  bfd_boolean loop;
+  bool loop;
   bfd_size_type amt;
   unsigned char *included;
 
@@ -917,18 +939,18 @@ _bfd_generic_link_add_archive_symbols
     {
       /* An empty archive is a special case.  */
       if (bfd_openr_next_archived_file (abfd, NULL) == NULL)
-	return TRUE;
+	return true;
       bfd_set_error (bfd_error_no_armap);
-      return FALSE;
+      return false;
     }
 
   amt = bfd_ardata (abfd)->symdef_count;
   if (amt == 0)
-    return TRUE;
+    return true;
   amt *= sizeof (*included);
   included = (unsigned char *) bfd_zmalloc (amt);
   if (included == NULL)
-    return FALSE;
+    return false;
 
   do
     {
@@ -937,10 +959,10 @@ _bfd_generic_link_add_archive_symbols
       carsym *arsym;
       unsigned int indx;
       file_ptr last_ar_offset = -1;
-      bfd_boolean needed = FALSE;
+      bool needed = false;
       bfd *element = NULL;
 
-      loop = FALSE;
+      loop = false;
       arsyms = bfd_ardata (abfd)->symdefs;
       arsym_end = arsyms + bfd_ardata (abfd)->symdef_count;
       for (arsym = arsyms, indx = 0; arsym < arsym_end; arsym++, indx++)
@@ -960,13 +982,13 @@ _bfd_generic_link_add_archive_symbols
 	    goto error_return;
 
 	  h = bfd_link_hash_lookup (info->hash, arsym->name,
-				    FALSE, FALSE, TRUE);
+				    false, false, true);
 
 	  if (h == NULL
 	      && info->pei386_auto_import
-	      && CONST_STRNEQ (arsym->name, "__imp_"))
+	      && startswith (arsym->name, "__imp_"))
 	    h = bfd_link_hash_lookup (info->hash, arsym->name + 6,
-				      FALSE, FALSE, TRUE);
+				      false, false, true);
 	  if (h == NULL)
 	    continue;
 
@@ -982,7 +1004,8 @@ _bfd_generic_link_add_archive_symbols
 	  if (last_ar_offset != arsym->file_offset)
 	    {
 	      last_ar_offset = arsym->file_offset;
-	      element = _bfd_get_elt_at_filepos (abfd, last_ar_offset);
+	      element = _bfd_get_elt_at_filepos (abfd, last_ar_offset,
+						 info);
 	      if (element == NULL
 		  || !bfd_check_format (element, bfd_object))
 		goto error_return;
@@ -1012,34 +1035,34 @@ _bfd_generic_link_add_archive_symbols
 	      while (arsyms[mark].file_offset == last_ar_offset);
 
 	      if (undefs_tail != info->hash->undefs_tail)
-		loop = TRUE;
+		loop = true;
 	    }
 	}
     } while (loop);
 
   free (included);
-  return TRUE;
+  return true;
 
  error_return:
   free (included);
-  return FALSE;
+  return false;
 }
 
 /* See if we should include an archive element.  */
 
-static bfd_boolean
+static bool
 generic_link_check_archive_element (bfd *abfd,
 				    struct bfd_link_info *info,
 				    struct bfd_link_hash_entry *h,
 				    const char *name ATTRIBUTE_UNUSED,
-				    bfd_boolean *pneeded)
+				    bool *pneeded)
 {
   asymbol **pp, **ppend;
 
-  *pneeded = FALSE;
+  *pneeded = false;
 
   if (!bfd_generic_link_read_symbols (abfd))
-    return FALSE;
+    return false;
 
   pp = _bfd_generic_link_get_symbols (abfd);
   ppend = pp + _bfd_generic_link_get_symcount (abfd);
@@ -1059,8 +1082,8 @@ generic_link_check_archive_element (bfd
 	 symbol (type bfd_link_hash_undefweak) is not considered to be
 	 a reference when pulling files out of an archive.  See the
 	 SVR4 ABI, p. 4-27.  */
-      h = bfd_link_hash_lookup (info->hash, bfd_asymbol_name (p), FALSE,
-				FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->hash, bfd_asymbol_name (p), false,
+				false, true);
       if (h == NULL
 	  || (h->type != bfd_link_hash_undefined
 	      && h->type != bfd_link_hash_common))
@@ -1075,11 +1098,11 @@ generic_link_check_archive_element (bfd
 	  /* P is not a common symbol, or an undefined reference was
 	     created from outside BFD such as from a linker -u option.
 	     This object file defines the symbol, so pull it in.  */
-	  *pneeded = TRUE;
+	  *pneeded = true;
 	  if (!(*info->callbacks
 		->add_archive_element) (info, abfd, bfd_asymbol_name (p),
 					&abfd))
-	    return FALSE;
+	    return false;
 	  /* Potentially, the add_archive_element hook may have set a
 	     substitute BFD for us.  */
 	  return bfd_link_add_symbols (abfd, info);
@@ -1106,7 +1129,7 @@ generic_link_check_archive_element (bfd
 	    bfd_hash_allocate (&info->hash->table,
 			       sizeof (struct bfd_link_hash_common_entry));
 	  if (h->u.c.p == NULL)
-	    return FALSE;
+	    return false;
 
 	  size = bfd_asymbol_value (p);
 	  h->u.c.size = size;
@@ -1135,14 +1158,14 @@ generic_link_check_archive_element (bfd
     }
 
   /* This archive element is not needed.  */
-  return TRUE;
+  return true;
 }
 
 /* Add the symbols from an object file to the global hash table.  ABFD
    is the object file.  INFO is the linker information.  SYMBOL_COUNT
    is the number of symbols.  SYMBOLS is the list of symbols.  */
 
-static bfd_boolean
+static bool
 generic_link_add_symbol_list (bfd *abfd,
 			      struct bfd_link_info *info,
 			      bfd_size_type symbol_count,
@@ -1192,8 +1215,8 @@ generic_link_add_symbol_list (bfd *abfd,
 	  bh = NULL;
 	  if (! (_bfd_generic_link_add_one_symbol
 		 (info, abfd, name, p->flags, bfd_asymbol_section (p),
-		  p->value, string, FALSE, FALSE, &bh)))
-	    return FALSE;
+		  p->value, string, false, false, &bh)))
+	    return false;
 	  h = (struct generic_link_hash_entry *) bh;
 
 	  /* If this is a constructor symbol, and the linker didn't do
@@ -1240,7 +1263,7 @@ generic_link_add_symbol_list (bfd *abfd,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We use a state table to deal with adding symbols from an object
@@ -1301,7 +1324,7 @@ static const enum link_action link_actio
   /* current\prev    new    undef  undefw def    defw   com    indr   warn  */
   /* UNDEF_ROW	*/  {UND,   NOACT, UND,   REF,   REF,   NOACT, REFC,  WARNC },
   /* UNDEFW_ROW	*/  {WEAK,  NOACT, NOACT, REF,   REF,   NOACT, REFC,  WARNC },
-  /* DEF_ROW	*/  {DEF,   DEF,   DEF,   MDEF,  DEF,   CDEF,  MDEF,  CYCLE },
+  /* DEF_ROW	*/  {DEF,   DEF,   DEF,   MDEF,  DEF,   CDEF,  MIND,  CYCLE },
   /* DEFW_ROW	*/  {DEFW,  DEFW,  DEFW,  NOACT, NOACT, NOACT, NOACT, CYCLE },
   /* COMMON_ROW	*/  {COM,   COM,   COM,   CREF,  COM,   BIG,   REFC,  WARNC },
   /* INDR_ROW	*/  {IND,   IND,   IND,   MDEF,  IND,   CIND,  MIND,  CYCLE },
@@ -1355,7 +1378,25 @@ hash_entry_bfd (struct bfd_link_hash_ent
   /*NOTREACHED*/
 }
 
-/* Add a symbol to the global hash table.
+/*
+FUNCTION
+	_bfd_generic_link_add_one_symbol
+
+SYNOPSIS
+	bool _bfd_generic_link_add_one_symbol
+	  (struct bfd_link_info *info,
+	   bfd *abfd,
+	   const char *name,
+	   flagword flags,
+	   asection *section,
+	   bfd_vma value,
+	   const char *string,
+	   bool copy,
+	   bool collect,
+	   struct bfd_link_hash_entry **hashp);
+
+DESCRIPTION
+   Add a symbol to the global hash table.
    ABFD is the BFD the symbol comes from.
    NAME is the name of the symbol.
    FLAGS is the BSF_* bits associated with the symbol.
@@ -1373,7 +1414,7 @@ hash_entry_bfd (struct bfd_link_hash_ent
      entry; if *HASHP is not NULL, the caller has already looked up
      the hash table entry, and stored it in *HASHP.  */
 
-bfd_boolean
+bool
 _bfd_generic_link_add_one_symbol (struct bfd_link_info *info,
 				  bfd *abfd,
 				  const char *name,
@@ -1381,14 +1422,14 @@ _bfd_generic_link_add_one_symbol (struct
 				  asection *section,
 				  bfd_vma value,
 				  const char *string,
-				  bfd_boolean copy,
-				  bfd_boolean collect,
+				  bool copy,
+				  bool collect,
 				  struct bfd_link_hash_entry **hashp)
 {
   enum link_row row;
   struct bfd_link_hash_entry *h;
   struct bfd_link_hash_entry *inh = NULL;
-  bfd_boolean cycle;
+  bool cycle;
 
   BFD_ASSERT (section != NULL);
 
@@ -1399,10 +1440,10 @@ _bfd_generic_link_add_one_symbol (struct
       /* Create the indirect symbol here.  This is for the benefit of
 	 the plugin "notice" function.
 	 STRING is the name of the symbol we want to indirect to.  */
-      inh = bfd_wrapped_link_hash_lookup (abfd, info, string, TRUE,
-					  copy, FALSE);
+      inh = bfd_wrapped_link_hash_lookup (abfd, info, string, true,
+					  copy, false);
       if (inh == NULL)
-	return FALSE;
+	return false;
     }
   else if ((flags & BSF_WARNING) != 0)
     row = WARN_ROW;
@@ -1421,6 +1462,7 @@ _bfd_generic_link_add_one_symbol (struct
     {
       row = COMMON_ROW;
       if (!bfd_link_relocatable (info)
+	  && name != NULL
 	  && name[0] == '_'
 	  && name[1] == '_'
 	  && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0)
@@ -1435,24 +1477,24 @@ _bfd_generic_link_add_one_symbol (struct
   else
     {
       if (row == UNDEF_ROW || row == UNDEFW_ROW)
-	h = bfd_wrapped_link_hash_lookup (abfd, info, name, TRUE, copy, FALSE);
+	h = bfd_wrapped_link_hash_lookup (abfd, info, name, true, copy, false);
       else
-	h = bfd_link_hash_lookup (info->hash, name, TRUE, copy, FALSE);
+	h = bfd_link_hash_lookup (info->hash, name, true, copy, false);
       if (h == NULL)
 	{
 	  if (hashp != NULL)
 	    *hashp = NULL;
-	  return FALSE;
+	  return false;
 	}
     }
 
   if (info->notice_all
       || (info->notice_hash != NULL
-	  && bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE) != NULL))
+	  && bfd_hash_lookup (info->notice_hash, name, false, false) != NULL))
     {
       if (! (*info->callbacks->notice) (info, h, inh,
 					abfd, section, value, flags))
-	return FALSE;
+	return false;
     }
 
   if (hashp != NULL)
@@ -1467,7 +1509,7 @@ _bfd_generic_link_add_one_symbol (struct
       /* Treat symbols defined by early linker script pass as undefined.  */
       if (h->ldscript_def)
 	prev = bfd_link_hash_undefined;
-      cycle = FALSE;
+      cycle = false;
       action = link_action[(int) row][prev];
       switch (action)
 	{
@@ -1536,7 +1578,7 @@ _bfd_generic_link_add_one_symbol (struct
 		s = name + 1;
 		while (*s == '_')
 		  ++s;
-		if (s[0] == 'G' && CONST_STRNEQ (s, CONS_PREFIX))
+		if (s[0] == 'G' && startswith (s, CONS_PREFIX))
 		  {
 		    char c;
 
@@ -1573,7 +1615,7 @@ _bfd_generic_link_add_one_symbol (struct
 	    bfd_hash_allocate (&info->hash->table,
 			       sizeof (struct bfd_link_hash_common_entry));
 	  if (h->u.c.p == NULL)
-	    return FALSE;
+	    return false;
 
 	  h->u.c.size = value;
 
@@ -1672,8 +1714,19 @@ _bfd_generic_link_add_one_symbol (struct
 	case MIND:
 	  /* Multiple indirect symbols.  This is OK if they both point
 	     to the same symbol.  */
-	  if (strcmp (h->u.i.link->root.string, string) == 0)
+	  if (h->u.i.link == inh)
 	    break;
+	  if (h->u.i.link->type == bfd_link_hash_defweak)
+	    {
+	      /* It is also OK to redefine a symbol that indirects to
+		 a weak definition.  So for sym@ver -> sym@@ver where
+		 sym@@ver is weak and we have a new strong sym@ver,
+		 redefine sym@@ver.  Of course if there exists
+		 sym -> sym@@ver then this also redefines sym.  */
+	      h = h->u.i.link;
+	      cycle = true;
+	      break;
+	    }
 	  /* Fall through.  */
 	case MDEF:
 	  /* Handle a multiple definition.  */
@@ -1696,7 +1749,7 @@ _bfd_generic_link_add_one_symbol (struct
 		(_("%pB: indirect symbol `%s' to `%s' is a loop"),
 		 abfd, name, string);
 	      bfd_set_error (bfd_error_invalid_operation);
-	      return FALSE;
+	      return false;
 	    }
 	  if (inh->type == bfd_link_hash_new)
 	    {
@@ -1712,7 +1765,7 @@ _bfd_generic_link_add_one_symbol (struct
 	      /* ??? If inh->type == bfd_link_hash_undefweak this
 		 converts inh to bfd_link_hash_undefined.  */
 	      row = UNDEF_ROW;
-	      cycle = TRUE;
+	      cycle = true;
 	    }
 
 	  h->type = bfd_link_hash_indirect;
@@ -1746,7 +1799,7 @@ _bfd_generic_link_add_one_symbol (struct
 	case CYCLE:
 	  /* Try again with the referenced symbol.  */
 	  h = h->u.i.link;
-	  cycle = TRUE;
+	  cycle = true;
 	  break;
 
 	case REFC:
@@ -1754,7 +1807,7 @@ _bfd_generic_link_add_one_symbol (struct
 	  if (h->u.undef.next == NULL && info->hash->undefs_tail != h)
 	    h->u.undef.next = h;
 	  h = h->u.i.link;
-	  cycle = TRUE;
+	  cycle = true;
 	  break;
 
 	case WARN:
@@ -1767,6 +1820,14 @@ _bfd_generic_link_add_one_symbol (struct
 	    {
 	      (*info->callbacks->warning) (info, string, h->root.string,
 					   hash_entry_bfd (h), NULL, 0);
+	      /* PR 31067: If garbage collection is enabled then the
+		 referenced symbol may actually be discarded later on.
+		 This could be very confusing to the user.  So give them
+		 a hint as to what might be happening.  */
+	      if (info->gc_sections)
+		(*info->callbacks->info)
+		  (_("%P: %pB: note: the message above does not take linker garbage collection into account\n"),
+		   hash_entry_bfd (h));
 	      break;
 	    }
 	  /* Fall through.  */
@@ -1780,7 +1841,7 @@ _bfd_generic_link_add_one_symbol (struct
 		   ((*info->hash->table.newfunc)
 		    (NULL, &info->hash->table, h->root.string)));
 	    if (sub == NULL)
-	      return FALSE;
+	      return false;
 	    *sub = *h;
 	    sub->type = bfd_link_hash_warning;
 	    sub->u.i.link = h;
@@ -1793,7 +1854,7 @@ _bfd_generic_link_add_one_symbol (struct
 
 		w = (char *) bfd_hash_allocate (&info->hash->table, len);
 		if (w == NULL)
-		  return FALSE;
+		  return false;
 		memcpy (w, string, len);
 		sub->u.i.warning = w;
 	      }
@@ -1809,12 +1870,52 @@ _bfd_generic_link_add_one_symbol (struct
     }
   while (cycle);
 
-  return TRUE;
+  return true;
 }
-
+
+/*
+FUNCTION
+	bfd_link_align_section
+
+SYNOPSIS
+	bool bfd_link_align_section (asection *, unsigned int);
+
+DESCRIPTION
+	Increase section alignment if the current section alignment is
+	less than the requested value.  Adjust output section
+	alignment too, so that linker layout adjusts for alignment on
+	the current lang_size_sections pass.  This is important for
+	lang_size_relro_segment.  If the output section alignment
+	isn't adjusted, the linker will place the output section at an
+	address depending on its current alignment.  When sizing the
+	output section, input sections attached transfer any increase
+	in alignment to the output section, which will affect layout
+	for the next sizing pass.  Which is all well and good except
+	that lang_size_relro_segment for the current sizing pass uses
+	that possibly increased alignment with a layout that doesn't
+	suit.
+*/
+
+bool
+bfd_link_align_section (asection *sec, unsigned int align_p2)
+{
+  if (align_p2 > bfd_section_alignment (sec))
+    {
+      if (!bfd_set_section_alignment (sec, align_p2))
+	return false;
+      asection *osec = sec->output_section;
+      if (osec && align_p2 > bfd_section_alignment (osec))
+	{
+	  if (!bfd_set_section_alignment (osec, align_p2))
+	    return false;
+	}
+    }
+  return true;
+}
+
 /* Generic final link routine.  */
 
-bfd_boolean
+bool
 _bfd_generic_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   bfd *sub;
@@ -1831,26 +1932,29 @@ _bfd_generic_final_link (bfd *abfd, stru
   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)
-	p->u.indirect.section->linker_mark = TRUE;
+	p->u.indirect.section->linker_mark = true;
 
   /* Build the output symbol table.  */
   for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
     if (! _bfd_generic_link_output_symbols (abfd, sub, info, &outsymalloc))
-      return FALSE;
+      return false;
 
   /* Accumulate the global symbols.  */
   wginfo.info = info;
   wginfo.output_bfd = abfd;
   wginfo.psymalloc = &outsymalloc;
+  wginfo.failed = false;
   _bfd_generic_link_hash_traverse (_bfd_generic_hash_table (info),
 				   _bfd_generic_link_write_global_symbol,
 				   &wginfo);
+  if (wginfo.failed)
+    return false;
 
   /* Make sure we have a trailing NULL pointer on OUTSYMBOLS.  We
      shouldn't really need one, since we have SYMCOUNT, but some old
      code still expects one.  */
   if (! generic_add_output_symbol (abfd, &outsymalloc, NULL))
-    return FALSE;
+    return false;
 
   if (bfd_link_relocatable (info))
     {
@@ -1877,10 +1981,10 @@ _bfd_generic_final_link (bfd *abfd, stru
 		  relsize = bfd_get_reloc_upper_bound (input_bfd,
 						       input_section);
 		  if (relsize < 0)
-		    return FALSE;
+		    return false;
 		  relocs = (arelent **) bfd_malloc (relsize);
 		  if (!relocs && relsize != 0)
-		    return FALSE;
+		    return false;
 		  symbols = _bfd_generic_link_get_symbols (input_bfd);
 		  reloc_count = bfd_canonicalize_reloc (input_bfd,
 							input_section,
@@ -1888,7 +1992,7 @@ _bfd_generic_final_link (bfd *abfd, stru
 							symbols);
 		  free (relocs);
 		  if (reloc_count < 0)
-		    return FALSE;
+		    return false;
 		  BFD_ASSERT ((unsigned long) reloc_count
 			      == input_section->reloc_count);
 		  o->reloc_count += reloc_count;
@@ -1902,7 +2006,7 @@ _bfd_generic_final_link (bfd *abfd, stru
 	      amt *= sizeof (arelent *);
 	      o->orelocation = (struct reloc_cache_entry **) bfd_alloc (abfd, amt);
 	      if (!o->orelocation)
-		return FALSE;
+		return false;
 	      o->flags |= SEC_RELOC;
 	      /* Reset the count so that it can be used as an index
 		 when putting in the output relocs.  */
@@ -1921,28 +2025,31 @@ _bfd_generic_final_link (bfd *abfd, stru
 	    case bfd_section_reloc_link_order:
 	    case bfd_symbol_reloc_link_order:
 	      if (! _bfd_generic_reloc_link_order (abfd, info, o, p))
-		return FALSE;
+		return false;
 	      break;
 	    case bfd_indirect_link_order:
-	      if (! default_indirect_link_order (abfd, info, o, p, TRUE))
-		return FALSE;
+	      if (! default_indirect_link_order (abfd, info, o, p, true))
+		return false;
 	      break;
 	    default:
 	      if (! _bfd_default_link_order (abfd, info, o, p))
-		return FALSE;
+		return false;
 	      break;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Add an output symbol to the output BFD.  */
 
-static bfd_boolean
+static bool
 generic_add_output_symbol (bfd *output_bfd, size_t *psymalloc, asymbol *sym)
 {
+  if (!(bfd_applicable_file_flags (output_bfd) & HAS_SYMS))
+    return true;
+
   if (bfd_get_symcount (output_bfd) >= *psymalloc)
     {
       asymbol **newsyms;
@@ -1956,7 +2063,7 @@ generic_add_output_symbol (bfd *output_b
       amt *= sizeof (asymbol *);
       newsyms = (asymbol **) bfd_realloc (bfd_get_outsymbols (output_bfd), amt);
       if (newsyms == NULL)
-	return FALSE;
+	return false;
       output_bfd->outsymbols = newsyms;
     }
 
@@ -1964,12 +2071,12 @@ generic_add_output_symbol (bfd *output_b
   if (sym != NULL)
     ++output_bfd->symcount;
 
-  return TRUE;
+  return true;
 }
 
 /* Handle the symbols for an input BFD.  */
 
-bfd_boolean
+static bool
 _bfd_generic_link_output_symbols (bfd *output_bfd,
 				  bfd *input_bfd,
 				  struct bfd_link_info *info,
@@ -1979,7 +2086,7 @@ _bfd_generic_link_output_symbols (bfd *o
   asymbol **sym_end;
 
   if (!bfd_generic_link_read_symbols (input_bfd))
-    return FALSE;
+    return false;
 
   /* Create a filename symbol if we are supposed to.  */
   if (info->create_object_symbols_section != NULL)
@@ -1994,15 +2101,15 @@ _bfd_generic_link_output_symbols (bfd *o
 
 	      newsym = bfd_make_empty_symbol (input_bfd);
 	      if (!newsym)
-		return FALSE;
-	      newsym->name = input_bfd->filename;
+		return false;
+	      newsym->name = bfd_get_filename (input_bfd);
 	      newsym->value = 0;
 	      newsym->flags = BSF_LOCAL | BSF_FILE;
 	      newsym->section = sec;
 
 	      if (! generic_add_output_symbol (output_bfd, psymalloc,
 					       newsym))
-		return FALSE;
+		return false;
 
 	      break;
 	    }
@@ -2017,7 +2124,6 @@ _bfd_generic_link_output_symbols (bfd *o
     {
       asymbol *sym;
       struct generic_link_hash_entry *h;
-      bfd_boolean output;
 
       h = NULL;
       sym = *sym_ptr;
@@ -2048,11 +2154,11 @@ _bfd_generic_link_output_symbols (bfd *o
 	    h = ((struct generic_link_hash_entry *)
 		 bfd_wrapped_link_hash_lookup (output_bfd, info,
 					       bfd_asymbol_name (sym),
-					       FALSE, FALSE, TRUE));
+					       false, false, true));
 	  else
 	    h = _bfd_generic_link_hash_lookup (_bfd_generic_hash_table (info),
 					       bfd_asymbol_name (sym),
-					       FALSE, FALSE, TRUE);
+					       false, false, true);
 
 	  if (h != NULL)
 	    {
@@ -2111,12 +2217,20 @@ _bfd_generic_link_output_symbols (bfd *o
 	    }
 	}
 
+      bool output = false;
       if ((sym->flags & BSF_KEEP) == 0
 	  && (info->strip == strip_all
 	      || (info->strip == strip_some
 		  && bfd_hash_lookup (info->keep_hash, bfd_asymbol_name (sym),
-				      FALSE, FALSE) == NULL)))
-	output = FALSE;
+				      false, false) == NULL)))
+	;
+      /* If this symbol is in a section which is not being included
+	 in the output file, then we don't want to output the
+	 symbol.  */
+      else if (!bfd_is_abs_section (sym->section)
+	       && bfd_section_removed_from_list (output_bfd,
+						 sym->section->output_section))
+	;
       else if ((sym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0)
 	{
 	  /* If this symbol is marked as occurring now, rather
@@ -2125,50 +2239,41 @@ _bfd_generic_link_output_symbols (bfd *o
 	     better way.  */
 	  if (bfd_asymbol_bfd (sym) == input_bfd
 	      && (sym->flags & BSF_NOT_AT_END) != 0)
-	    output = TRUE;
-	  else
-	    output = FALSE;
+	    output = true;
 	}
       else if ((sym->flags & BSF_KEEP) != 0)
-	output = TRUE;
+	output = true;
       else if (bfd_is_ind_section (sym->section))
-	output = FALSE;
+	;
       else if ((sym->flags & BSF_DEBUGGING) != 0)
 	{
 	  if (info->strip == strip_none)
-	    output = TRUE;
-	  else
-	    output = FALSE;
+	    output = true;
 	}
       else if (bfd_is_und_section (sym->section)
 	       || bfd_is_com_section (sym->section))
-	output = FALSE;
+	;
       else if ((sym->flags & BSF_LOCAL) != 0)
 	{
-	  if ((sym->flags & BSF_WARNING) != 0)
-	    output = FALSE;
-	  else
+	  if ((sym->flags & BSF_WARNING) == 0)
 	    {
 	      switch (info->discard)
 		{
 		default:
 		case discard_all:
-		  output = FALSE;
 		  break;
 		case discard_sec_merge:
-		  output = TRUE;
+		  output = true;
 		  if (bfd_link_relocatable (info)
 		      || ! (sym->section->flags & SEC_MERGE))
 		    break;
 		  /* FALLTHROUGH */
 		case discard_l:
-		  if (bfd_is_local_label (input_bfd, sym))
-		    output = FALSE;
-		  else
-		    output = TRUE;
+		  if (!bfd_is_local_label (input_bfd, sym))
+		    output = true;
 		  break;
 		case discard_none:
-		  output = TRUE;
+		  output = true;
 		  break;
 		}
 	    }
@@ -2176,37 +2281,27 @@ _bfd_generic_link_output_symbols (bfd *o
       else if ((sym->flags & BSF_CONSTRUCTOR))
 	{
 	  if (info->strip != strip_all)
-	    output = TRUE;
-	  else
-	    output = FALSE;
+	    output = true;
 	}
-      else if (sym->flags == 0
-	       && (sym->section->owner->flags & BFD_PLUGIN) != 0)
+      else if (sym->flags == 0)
 	/* LTO doesn't set symbol information.  We get here with the
 	   generic linker for a symbol that was "common" but no longer
-	   needs to be global.  */
-	output = FALSE;
+	   needs to be global.  We also get here on fuzzed ELF objects
+	   with bogus symbol type and binding.  */
+	;
       else
-	abort ();
-
-      /* If this symbol is in a section which is not being included
-	 in the output file, then we don't want to output the
-	 symbol.  */
-      if (!bfd_is_abs_section (sym->section)
-	  && bfd_section_removed_from_list (output_bfd,
-					    sym->section->output_section))
-	output = FALSE;
+	BFD_FAIL ();
 
       if (output)
 	{
 	  if (! generic_add_output_symbol (output_bfd, psymalloc, sym))
-	    return FALSE;
+	    return false;
 	  if (h != NULL)
-	    h->written = TRUE;
+	    h->written = true;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the section and value of a generic BFD symbol based on a linker
@@ -2273,24 +2368,23 @@ set_symbol_from_hash (asymbol *sym, stru
 /* Write out a global symbol, if it hasn't already been written out.
    This is called for each symbol in the hash table.  */
 
-bfd_boolean
+static bool
 _bfd_generic_link_write_global_symbol (struct generic_link_hash_entry *h,
 				       void *data)
 {
-  struct generic_write_global_symbol_info *wginfo =
-      (struct generic_write_global_symbol_info *) data;
+  struct generic_write_global_symbol_info *wginfo = data;
   asymbol *sym;
 
   if (h->written)
-    return TRUE;
+    return true;
 
-  h->written = TRUE;
+  h->written = true;
 
   if (wginfo->info->strip == strip_all
       || (wginfo->info->strip == strip_some
 	  && bfd_hash_lookup (wginfo->info->keep_hash, h->root.root.string,
-			      FALSE, FALSE) == NULL))
-    return TRUE;
+			      false, false) == NULL))
+    return true;
 
   if (h->sym != NULL)
     sym = h->sym;
@@ -2298,7 +2392,10 @@ _bfd_generic_link_write_global_symbol (s
     {
       sym = bfd_make_empty_symbol (wginfo->output_bfd);
       if (!sym)
-	return FALSE;
+	{
+	  wginfo->failed = true;
+	  return false;
+	}
       sym->name = h->root.root.string;
       sym->flags = 0;
     }
@@ -2310,16 +2407,16 @@ _bfd_generic_link_write_global_symbol (s
   if (! generic_add_output_symbol (wginfo->output_bfd, wginfo->psymalloc,
 				   sym))
     {
-      /* FIXME: No way to return failure.  */
-      abort ();
+      wginfo->failed = true;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Create a relocation.  */
 
-bfd_boolean
+bool
 _bfd_generic_reloc_link_order (bfd *abfd,
 			       struct bfd_link_info *info,
 			       asection *sec,
@@ -2334,19 +2431,19 @@ _bfd_generic_reloc_link_order (bfd *abfd
 
   r = (arelent *) bfd_alloc (abfd, sizeof (arelent));
   if (r == NULL)
-    return FALSE;
+    return false;
 
   r->address = link_order->offset;
   r->howto = bfd_reloc_type_lookup (abfd, link_order->u.reloc.p->reloc);
   if (r->howto == 0)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* Get the symbol to use for the relocation.  */
   if (link_order->type == bfd_section_reloc_link_order)
-    r->sym_ptr_ptr = link_order->u.reloc.p->u.section->symbol_ptr_ptr;
+    r->sym_ptr_ptr = &link_order->u.reloc.p->u.section->symbol;
   else
     {
       struct generic_link_hash_entry *h;
@@ -2354,14 +2451,14 @@ _bfd_generic_reloc_link_order (bfd *abfd
       h = ((struct generic_link_hash_entry *)
 	   bfd_wrapped_link_hash_lookup (abfd, info,
 					 link_order->u.reloc.p->u.name,
-					 FALSE, FALSE, TRUE));
+					 false, false, true));
       if (h == NULL
 	  || ! h->written)
 	{
 	  (*info->callbacks->unattached_reloc)
 	    (info, link_order->u.reloc.p->u.name, NULL, NULL, 0);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       r->sym_ptr_ptr = &h->sym;
     }
@@ -2375,13 +2472,13 @@ _bfd_generic_reloc_link_order (bfd *abfd
       bfd_size_type size;
       bfd_reloc_status_type rstat;
       bfd_byte *buf;
-      bfd_boolean ok;
+      bool ok;
       file_ptr loc;
 
       size = bfd_get_reloc_size (r->howto);
       buf = (bfd_byte *) bfd_zmalloc (size);
       if (buf == NULL && size != 0)
-	return FALSE;
+	return false;
       rstat = _bfd_relocate_contents (r->howto, abfd,
 				      (bfd_vma) link_order->u.reloc.p->addend,
 				      buf);
@@ -2406,7 +2503,7 @@ _bfd_generic_reloc_link_order (bfd *abfd
       ok = bfd_set_section_contents (abfd, sec, buf, loc, size);
       free (buf);
       if (! ok)
-	return FALSE;
+	return false;
 
       r->addend = 0;
     }
@@ -2414,7 +2511,7 @@ _bfd_generic_reloc_link_order (bfd *abfd
   sec->orelocation[sec->reloc_count] = r;
   ++sec->reloc_count;
 
-  return TRUE;
+  return true;
 }
 
 /* Allocate a new link_order for a section.  */
@@ -2422,7 +2519,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);
@@ -2444,7 +2541,7 @@ bfd_new_link_order (bfd *abfd, asection
    the reloc_link_order types here, since they depend upon the details
    of how the particular backends generates relocs.  */
 
-bfd_boolean
+bool
 _bfd_default_link_order (bfd *abfd,
 			 struct bfd_link_info *info,
 			 asection *sec,
@@ -2459,7 +2556,7 @@ _bfd_default_link_order (bfd *abfd,
       abort ();
     case bfd_indirect_link_order:
       return default_indirect_link_order (abfd, info, sec, link_order,
-					  FALSE);
+					  false);
     case bfd_data_link_order:
       return default_data_link_order (abfd, info, sec, link_order);
     }
@@ -2467,7 +2564,7 @@ _bfd_default_link_order (bfd *abfd,
 
 /* Default routine to handle a bfd_data_link_order.  */
 
-static bfd_boolean
+static bool
 default_data_link_order (bfd *abfd,
 			 struct bfd_link_info *info,
 			 asection *sec,
@@ -2477,13 +2574,13 @@ default_data_link_order (bfd *abfd,
   size_t fill_size;
   bfd_byte *fill;
   file_ptr loc;
-  bfd_boolean result;
+  bool result;
 
   BFD_ASSERT ((sec->flags & SEC_HAS_CONTENTS) != 0);
 
   size = link_order->size;
   if (size == 0)
-    return TRUE;
+    return true;
 
   fill = link_order->u.data.contents;
   fill_size = link_order->u.data.size;
@@ -2492,14 +2589,14 @@ default_data_link_order (bfd *abfd,
       fill = abfd->arch_info->fill (size, info->big_endian,
 				    (sec->flags & SEC_CODE) != 0);
       if (fill == NULL)
-	return FALSE;
+	return false;
     }
   else if (fill_size < size)
     {
       bfd_byte *p;
       fill = (bfd_byte *) bfd_malloc (size);
       if (fill == NULL)
-	return FALSE;
+	return false;
       p = fill;
       if (fill_size == 1)
 	memset (p, (int) link_order->u.data.contents[0], (size_t) size);
@@ -2528,18 +2625,17 @@ default_data_link_order (bfd *abfd,
 
 /* Default routine to handle a bfd_indirect_link_order.  */
 
-static bfd_boolean
+static bool
 default_indirect_link_order (bfd *output_bfd,
 			     struct bfd_link_info *info,
 			     asection *output_section,
 			     struct bfd_link_order *link_order,
-			     bfd_boolean generic_linker)
+			     bool generic_linker)
 {
   asection *input_section;
   bfd *input_bfd;
-  bfd_byte *contents = NULL;
+  bfd_byte *alloced = NULL;
   bfd_byte *new_contents;
-  bfd_size_type sec_size;
   file_ptr loc;
 
   BFD_ASSERT ((output_section->flags & SEC_HAS_CONTENTS) != 0);
@@ -2547,7 +2643,7 @@ default_indirect_link_order (bfd *output
   input_section = link_order->u.indirect.section;
   input_bfd = input_section->owner;
   if (input_section->size == 0)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (input_section->output_section == output_section);
   BFD_ASSERT (input_section->output_offset == link_order->offset);
@@ -2567,7 +2663,7 @@ default_indirect_link_order (bfd *output
 	(_("attempt to do relocatable link with %s input and %s output"),
 	 bfd_get_target (input_bfd), bfd_get_target (output_bfd));
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   if (! generic_linker)
@@ -2580,7 +2676,7 @@ default_indirect_link_order (bfd *output
 	 a specific linker, presumably because we are linking
 	 different types of object files together.  */
       if (!bfd_generic_link_read_symbols (input_bfd))
-	return FALSE;
+	return false;
 
       /* Since we have been called by a specific linker, rather than
 	 the generic linker, the values of the symbols will not be
@@ -2612,11 +2708,11 @@ default_indirect_link_order (bfd *output
 	      else if (bfd_is_und_section (bfd_asymbol_section (sym)))
 		h = bfd_wrapped_link_hash_lookup (output_bfd, info,
 						  bfd_asymbol_name (sym),
-						  FALSE, FALSE, TRUE);
+						  false, false, true);
 	      else
 		h = bfd_link_hash_lookup (info->hash,
 					  bfd_asymbol_name (sym),
-					  FALSE, FALSE, TRUE);
+					  false, false, true);
 	      if (h != NULL)
 		set_symbol_from_hash (sym, h);
 	    }
@@ -2640,16 +2736,11 @@ default_indirect_link_order (bfd *output
   else
     {
       /* Get and relocate the section contents.  */
-      sec_size = (input_section->rawsize > input_section->size
-		  ? input_section->rawsize
-		  : input_section->size);
-      contents = (bfd_byte *) bfd_malloc (sec_size);
-      if (contents == NULL && sec_size != 0)
-	goto error_return;
       new_contents = (bfd_get_relocated_section_contents
-		      (output_bfd, info, link_order, contents,
+		      (output_bfd, info, link_order, NULL,
 		       bfd_link_relocatable (info),
 		       _bfd_generic_link_get_symbols (input_bfd)));
+      alloced = new_contents;
       if (!new_contents)
 	goto error_return;
     }
@@ -2661,14 +2752,12 @@ default_indirect_link_order (bfd *output
 				  new_contents, loc, input_section->size))
     goto error_return;
 
-  if (contents != NULL)
-    free (contents);
-  return TRUE;
+  free (alloced);
+  return true;
 
  error_return:
-  if (contents != NULL)
-    free (contents);
-  return FALSE;
+  free (alloced);
+  return false;
 }
 
 /* A little routine to count the number of relocs in a link_order
@@ -2696,7 +2785,7 @@ FUNCTION
 	bfd_link_split_section
 
 SYNOPSIS
-	bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
+	bool bfd_link_split_section (bfd *abfd, asection *sec);
 
 DESCRIPTION
 	Return nonzero if @var{sec} should be split during a
@@ -2708,11 +2797,11 @@ DESCRIPTION
 
 */
 
-bfd_boolean
+bool
 _bfd_generic_link_split_section (bfd *abfd ATTRIBUTE_UNUSED,
 				 asection *sec ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
 /*
@@ -2720,9 +2809,9 @@ FUNCTION
 	bfd_section_already_linked
 
 SYNOPSIS
-	bfd_boolean bfd_section_already_linked (bfd *abfd,
-						asection *sec,
-						struct bfd_link_info *info);
+	bool bfd_section_already_linked (bfd *abfd,
+					 asection *sec,
+					 struct bfd_link_info *info);
 
 DESCRIPTION
 	Check if @var{data} has been already linked during a reloceatable
@@ -2752,12 +2841,11 @@ static struct bfd_hash_table _bfd_sectio
 
 void
 bfd_section_already_linked_table_traverse
-  (bfd_boolean (*func) (struct bfd_section_already_linked_hash_entry *,
-			void *), void *info)
+  (bool (*func) (struct bfd_section_already_linked_hash_entry *, void *),
+   void *info)
 {
   bfd_hash_traverse (&_bfd_section_already_linked_table,
-		     (bfd_boolean (*) (struct bfd_hash_entry *,
-				       void *)) func,
+		     (bool (*) (struct bfd_hash_entry *, void *)) func,
 		     info);
 }
 
@@ -2766,10 +2854,10 @@ bfd_section_already_linked_table_lookup
 {
   return ((struct bfd_section_already_linked_hash_entry *)
 	  bfd_hash_lookup (&_bfd_section_already_linked_table, name,
-			   TRUE, FALSE));
+			   true, false));
 }
 
-bfd_boolean
+bool
 bfd_section_already_linked_table_insert
   (struct bfd_section_already_linked_hash_entry *already_linked_list,
    asection *sec)
@@ -2781,11 +2869,11 @@ bfd_section_already_linked_table_insert
   l = (struct bfd_section_already_linked *)
       bfd_hash_allocate (&_bfd_section_already_linked_table, sizeof *l);
   if (l == NULL)
-    return FALSE;
+    return false;
   l->sec = sec;
   l->next = already_linked_list->entry;
   already_linked_list->entry = l;
-  return TRUE;
+  return true;
 }
 
 static struct bfd_hash_entry *
@@ -2805,7 +2893,7 @@ already_linked_newfunc (struct bfd_hash_
   return &ret->root;
 }
 
-bfd_boolean
+bool
 bfd_section_already_linked_table_init (void)
 {
   return bfd_hash_table_init_n (&_bfd_section_already_linked_table,
@@ -2823,7 +2911,7 @@ bfd_section_already_linked_table_free (v
 /* Report warnings as appropriate for duplicate section SEC.
    Return FALSE if we decide to keep SEC after all.  */
 
-bfd_boolean
+bool
 _bfd_handle_already_linked (asection *sec,
 			    struct bfd_section_already_linked *l,
 			    struct bfd_link_info *info)
@@ -2844,7 +2932,7 @@ _bfd_handle_already_linked (asection *se
 	  && (l->sec->owner->flags & BFD_PLUGIN) != 0)
 	{
 	  l->sec = sec;
-	  return FALSE;
+	  return false;
 	}
       break;
 
@@ -2875,29 +2963,38 @@ _bfd_handle_already_linked (asection *se
 	   sec->owner, sec);
       else if (sec->size != 0)
 	{
-	  bfd_byte *sec_contents, *l_sec_contents = NULL;
+	  bfd_byte *sec_contents, *l_sec_contents;
 
-	  if (!bfd_malloc_and_get_section (sec->owner, sec, &sec_contents))
+	  if ((sec->flags & SEC_HAS_CONTENTS) == 0
+	      && (l->sec->flags & SEC_HAS_CONTENTS) == 0)
+	    ;
+	  else if ((sec->flags & SEC_HAS_CONTENTS) == 0
+		   || !bfd_malloc_and_get_section (sec->owner, sec,
+						   &sec_contents))
 	    info->callbacks->einfo
 	      /* xgettext:c-format */
 	      (_("%pB: could not read contents of section `%pA'\n"),
 	       sec->owner, sec);
-	  else if (!bfd_malloc_and_get_section (l->sec->owner, l->sec,
-						&l_sec_contents))
-	    info->callbacks->einfo
-	      /* xgettext:c-format */
-	      (_("%pB: could not read contents of section `%pA'\n"),
-	       l->sec->owner, l->sec);
-	  else if (memcmp (sec_contents, l_sec_contents, sec->size) != 0)
-	    info->callbacks->einfo
-	      /* xgettext:c-format */
-	      (_("%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);
+	  else if ((l->sec->flags & SEC_HAS_CONTENTS) == 0
+		   || !bfd_malloc_and_get_section (l->sec->owner, l->sec,
+						   &l_sec_contents))
+	    {
+	      info->callbacks->einfo
+		/* xgettext:c-format */
+		(_("%pB: could not read contents of section `%pA'\n"),
+		 l->sec->owner, l->sec);
+	      free (sec_contents);
+	    }
+	  else
+	    {
+	      if (memcmp (sec_contents, l_sec_contents, sec->size) != 0)
+		info->callbacks->einfo
+		  /* xgettext:c-format */
+		  (_("%pB: duplicate section `%pA' has different contents\n"),
+		   sec->owner, sec);
+	      free (l_sec_contents);
+	      free (sec_contents);
+	    }
 	}
       break;
     }
@@ -2909,12 +3006,12 @@ _bfd_handle_already_linked (asection *se
      which we are really going to use.  */
   sec->output_section = bfd_abs_section_ptr;
   sec->kept_section = l->sec;
-  return TRUE;
+  return true;
 }
 
 /* This is used on non-ELF inputs.  */
 
-bfd_boolean
+bool
 _bfd_generic_section_already_linked (bfd *abfd ATTRIBUTE_UNUSED,
 				     asection *sec,
 				     struct bfd_link_info *info)
@@ -2924,11 +3021,11 @@ _bfd_generic_section_already_linked (bfd
   struct bfd_section_already_linked_hash_entry *already_linked_list;
 
   if ((sec->flags & SEC_LINK_ONCE) == 0)
-    return FALSE;
+    return false;
 
   /* The generic linker doesn't handle section groups.  */
   if ((sec->flags & SEC_GROUP) != 0)
-    return FALSE;
+    return false;
 
   /* FIXME: When doing a relocatable link, we may have trouble
      copying relocations in other sections that refer to local symbols
@@ -2946,6 +3043,8 @@ _bfd_generic_section_already_linked (bfd
   name = bfd_section_name (sec);
 
   already_linked_list = bfd_section_already_linked_table_lookup (name);
+  if (!already_linked_list)
+    goto bad;
 
   l = already_linked_list->entry;
   if (l != NULL)
@@ -2957,8 +3056,11 @@ _bfd_generic_section_already_linked (bfd
 
   /* This is the first section with this name.  Record it.  */
   if (!bfd_section_already_linked_table_insert (already_linked_list, sec))
-    info->callbacks->einfo (_("%F%P: already_linked_table: %E\n"));
-  return FALSE;
+    {
+    bad:
+      info->callbacks->fatal (_("%P: already_linked_table: %E\n"));
+    }
+  return false;
 }
 
 /* Choose a neighbouring section to S in OBFD that will be output, or
@@ -3033,7 +3135,7 @@ _bfd_nearby_section (bfd *obfd, asection
 
 /* Convert symbols in excluded output sections to use a kept section.  */
 
-static bfd_boolean
+static bool
 fix_syms (struct bfd_link_hash_entry *h, void *data)
 {
   bfd *obfd = (bfd *) data;
@@ -3056,7 +3158,7 @@ fix_syms (struct bfd_link_hash_entry *h,
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 void
@@ -3070,7 +3172,7 @@ FUNCTION
 	bfd_generic_define_common_symbol
 
 SYNOPSIS
-	bfd_boolean bfd_generic_define_common_symbol
+	bool bfd_generic_define_common_symbol
 	  (bfd *output_bfd, struct bfd_link_info *info,
 	   struct bfd_link_hash_entry *h);
 
@@ -3083,7 +3185,7 @@ DESCRIPTION
 .
 */
 
-bfd_boolean
+bool
 bfd_generic_define_common_symbol (bfd *output_bfd,
 				  struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  struct bfd_link_hash_entry *h)
@@ -3099,8 +3201,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;
@@ -3121,7 +3228,7 @@ bfd_generic_define_common_symbol (bfd *o
      it is no longer a common section.  */
   section->flags |= SEC_ALLOC;
   section->flags &= ~(SEC_IS_COMMON | SEC_HAS_CONTENTS);
-  return TRUE;
+  return true;
 }
 
 /*
@@ -3174,8 +3281,9 @@ bfd_generic_define_start_stop (struct bf
 {
   struct bfd_link_hash_entry *h;
 
-  h = bfd_link_hash_lookup (info->hash, symbol, FALSE, FALSE, TRUE);
+  h = bfd_link_hash_lookup (info->hash, symbol, false, false, true);
   if (h != NULL
+      && !h->ldscript_def
       && (h->type == bfd_link_hash_undefined
 	  || h->type == bfd_link_hash_undefweak))
     {
@@ -3194,7 +3302,7 @@ FUNCTION
 SYNOPSIS
 	struct bfd_elf_version_tree * bfd_find_version_for_sym
 	  (struct bfd_elf_version_tree *verdefs,
-	   const char *sym_name, bfd_boolean *hide);
+	   const char *sym_name, bool *hide);
 
 DESCRIPTION
 	Search an elf version script tree for symbol versioning
@@ -3207,7 +3315,7 @@ DESCRIPTION
 struct bfd_elf_version_tree *
 bfd_find_version_for_sym (struct bfd_elf_version_tree *verdefs,
 			  const char *sym_name,
-			  bfd_boolean *hide)
+			  bool *hide)
 {
   struct bfd_elf_version_tree *t;
   struct bfd_elf_version_tree *local_ver, *global_ver, *exist_ver;
@@ -3287,7 +3395,7 @@ bfd_find_version_for_sym (struct bfd_elf
 
   if (local_ver != NULL)
     {
-      *hide = TRUE;
+      *hide = true;
       return local_ver;
     }
 
@@ -3299,7 +3407,7 @@ FUNCTION
 	bfd_hide_sym_by_version
 
 SYNOPSIS
-	bfd_boolean bfd_hide_sym_by_version
+	bool bfd_hide_sym_by_version
 	  (struct bfd_elf_version_tree *verdefs, const char *sym_name);
 
 DESCRIPTION
@@ -3308,11 +3416,11 @@ DESCRIPTION
 
 */
 
-bfd_boolean
+bool
 bfd_hide_sym_by_version (struct bfd_elf_version_tree *verdefs,
 			 const char *sym_name)
 {
-  bfd_boolean hidden = FALSE;
+  bool hidden = false;
   bfd_find_version_for_sym (verdefs, sym_name, &hidden);
   return hidden;
 }
@@ -3322,7 +3430,7 @@ FUNCTION
 	bfd_link_check_relocs
 
 SYNOPSIS
-	bfd_boolean bfd_link_check_relocs
+	bool bfd_link_check_relocs
 	  (bfd *abfd, struct bfd_link_info *info);
 
 DESCRIPTION
@@ -3332,7 +3440,7 @@ DESCRIPTION
 	This is the external entry point to this code.
 */
 
-bfd_boolean
+bool
 bfd_link_check_relocs (bfd *abfd, struct bfd_link_info *info)
 {
   return BFD_SEND (abfd, _bfd_link_check_relocs, (abfd, info));
@@ -3343,7 +3451,7 @@ FUNCTION
 	_bfd_generic_link_check_relocs
 
 SYNOPSIS
-	bfd_boolean _bfd_generic_link_check_relocs
+	bool _bfd_generic_link_check_relocs
 	  (bfd *abfd, struct bfd_link_info *info);
 
 DESCRIPTION
@@ -3353,11 +3461,11 @@ DESCRIPTION
 	outside the BFD library.
 */
 
-bfd_boolean
+bool
 _bfd_generic_link_check_relocs (bfd *abfd ATTRIBUTE_UNUSED,
 				struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /*
@@ -3365,7 +3473,7 @@ FUNCTION
 	bfd_merge_private_bfd_data
 
 SYNOPSIS
-	bfd_boolean bfd_merge_private_bfd_data
+	bool bfd_merge_private_bfd_data
 	  (bfd *ibfd, struct bfd_link_info *info);
 
 DESCRIPTION
@@ -3379,6 +3487,7 @@ DESCRIPTION
 .#define bfd_merge_private_bfd_data(ibfd, info) \
 .	BFD_SEND ((info)->output_bfd, _bfd_merge_private_bfd_data, \
 .		  (ibfd, info))
+.
 */
 
 /*
@@ -3386,7 +3495,7 @@ INTERNAL_FUNCTION
 	_bfd_generic_verify_endian_match
 
 SYNOPSIS
-	bfd_boolean _bfd_generic_verify_endian_match
+	bool _bfd_generic_verify_endian_match
 	  (bfd *ibfd, struct bfd_link_info *info);
 
 DESCRIPTION
@@ -3395,7 +3504,7 @@ DESCRIPTION
 	TRUE for a match, otherwise returns FALSE and emits an error.
 */
 
-bfd_boolean
+bool
 _bfd_generic_verify_endian_match (bfd *ibfd, struct bfd_link_info *info)
 {
   bfd *obfd = info->output_bfd;
@@ -3411,10 +3520,10 @@ _bfd_generic_verify_endian_match (bfd *i
 	_bfd_error_handler (_("%pB: compiled for a little endian system "
 			      "and target is big endian"), ibfd);
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 int
@@ -3424,11 +3533,11 @@ _bfd_nolink_sizeof_headers (bfd *abfd AT
   return 0;
 }
 
-bfd_boolean
+bool
 _bfd_nolink_bfd_relax_section (bfd *abfd,
 			       asection *section ATTRIBUTE_UNUSED,
 			       struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
-			       bfd_boolean *again ATTRIBUTE_UNUSED)
+			       bool *again ATTRIBUTE_UNUSED)
 {
   return _bfd_bool_bfd_false_error (abfd);
 }
@@ -3439,13 +3548,13 @@ _bfd_nolink_bfd_get_relocated_section_co
      struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
      struct bfd_link_order *link_order ATTRIBUTE_UNUSED,
      bfd_byte *data ATTRIBUTE_UNUSED,
-     bfd_boolean relocatable ATTRIBUTE_UNUSED,
+     bool relocatable ATTRIBUTE_UNUSED,
      asymbol **symbols ATTRIBUTE_UNUSED)
 {
   return (bfd_byte *) _bfd_ptr_bfd_null_error (abfd);
 }
 
-bfd_boolean
+bool
 _bfd_nolink_bfd_lookup_section_flags
     (struct bfd_link_info *info ATTRIBUTE_UNUSED,
      struct flag_info *flaginfo ATTRIBUTE_UNUSED,
@@ -3454,7 +3563,7 @@ _bfd_nolink_bfd_lookup_section_flags
   return _bfd_bool_bfd_false_error (section->owner);
 }
 
-bfd_boolean
+bool
 _bfd_nolink_bfd_is_group_section (bfd *abfd,
 				  const asection *sec ATTRIBUTE_UNUSED)
 {
@@ -3468,7 +3577,7 @@ _bfd_nolink_bfd_group_name (bfd *abfd,
   return _bfd_ptr_bfd_null_error (abfd);
 }
 
-bfd_boolean
+bool
 _bfd_nolink_bfd_discard_group (bfd *abfd, asection *sec ATTRIBUTE_UNUSED)
 {
   return _bfd_bool_bfd_false_error (abfd);
@@ -3494,13 +3603,13 @@ _bfd_nolink_bfd_copy_link_hash_symbol_ty
 {
 }
 
-bfd_boolean
+bool
 _bfd_nolink_bfd_link_split_section (bfd *abfd, asection *sec ATTRIBUTE_UNUSED)
 {
   return _bfd_bool_bfd_false_error (abfd);
 }
 
-bfd_boolean
+bool
 _bfd_nolink_section_already_linked (bfd *abfd,
 				    asection *sec ATTRIBUTE_UNUSED,
 				    struct bfd_link_info *info ATTRIBUTE_UNUSED)
@@ -3508,7 +3617,7 @@ _bfd_nolink_section_already_linked (bfd
   return _bfd_bool_bfd_false_error (abfd);
 }
 
-bfd_boolean
+bool
 _bfd_nolink_bfd_define_common_symbol
     (bfd *abfd,
      struct bfd_link_info *info 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.20200303/bfd/lynx-core.c ./bfd/lynx-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/lynx-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/lynx-core.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back end for Lynx core files
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 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
@@ -102,11 +102,11 @@ lynx_core_file_p (bfd *abfd)
 
   /* Get the pss entry from the core file */
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
     return NULL;
 
   amt = sizeof pss;
-  if (bfd_bread ((void *) &pss, amt, abfd) != amt)
+  if (bfd_read (&pss, amt, abfd) != amt)
     {
       /* Too small to be a core file */
       if (bfd_get_error () != bfd_error_system_call)
@@ -120,30 +120,20 @@ lynx_core_file_p (bfd *abfd)
   if (!core_hdr (abfd))
     return NULL;
 
-  strncpy (core_command (abfd), pss.pname, PNMLEN + 1);
+  strncpy (core_command (abfd), pss.pname, PNMLEN);
+  core_command (abfd)[PNMLEN] = 0;
 
   /* Compute the size of the thread contexts */
 
   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 +192,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.20200303/bfd/mach-o-aarch64.c ./bfd/mach-o-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mach-o-aarch64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mach-o-aarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* AArch-64 Mach-O support for BFD.
-   Copyright (C) 2015-2019 Free Software Foundation, Inc.
+   Copyright (C) 2015-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -40,26 +40,26 @@
 #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,
 			      BFD_MACH_O_MH_CORE, BFD_MACH_O_CPU_TYPE_ARM64);
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_arm64_mkobject (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata;
 
   if (!bfd_mach_o_mkobject_init (abfd))
-    return FALSE;
+    return false;
 
   mdata = bfd_mach_o_get_data (abfd);
   mdata->header.magic = BFD_MACH_O_MH_MAGIC;
@@ -68,7 +68,7 @@ bfd_mach_o_arm64_mkobject (bfd *abfd)
   mdata->header.byteorder = BFD_ENDIAN_LITTLE;
   mdata->header.version = 1;
 
-  return TRUE;
+  return true;
 }
 
 /* In case we're on a 32-bit machine, construct a 64-bit "-1" value.  */
@@ -77,76 +77,76 @@ bfd_mach_o_arm64_mkobject (bfd *abfd)
 static reloc_howto_type arm64_howto_table[]=
 {
   /* 0 */
-  HOWTO (BFD_RELOC_64, 0, 4, 64, FALSE, 0,
+  HOWTO (BFD_RELOC_64, 0, 8, 64, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "64",
-	 FALSE, MINUS_ONE, MINUS_ONE, FALSE),
-  HOWTO (BFD_RELOC_32, 0, 2, 32, FALSE, 0,
+	 false, MINUS_ONE, MINUS_ONE, false),
+  HOWTO (BFD_RELOC_32, 0, 4, 32, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "32",
-	 FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO (BFD_RELOC_16, 0, 1, 16, FALSE, 0,
+	 false, 0xffffffff, 0xffffffff, false),
+  HOWTO (BFD_RELOC_16, 0, 2, 16, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "16",
-	 FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO (BFD_RELOC_8, 0, 0, 8, FALSE, 0,
+	 false, 0xffff, 0xffff, false),
+  HOWTO (BFD_RELOC_8, 0, 1, 8, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "8",
-	 FALSE, 0xff, 0xff, FALSE),
+	 false, 0xff, 0xff, false),
   /* 4 */
-  HOWTO (BFD_RELOC_64_PCREL, 0, 4, 64, TRUE, 0,
+  HOWTO (BFD_RELOC_64_PCREL, 0, 8, 64, true, 0,
 	 complain_overflow_bitfield,
 	 NULL, "DISP64",
-	 FALSE, MINUS_ONE, MINUS_ONE, TRUE),
-  HOWTO (BFD_RELOC_32_PCREL, 0, 2, 32, TRUE, 0,
+	 false, MINUS_ONE, MINUS_ONE, true),
+  HOWTO (BFD_RELOC_32_PCREL, 0, 4, 32, true, 0,
 	 complain_overflow_bitfield,
 	 NULL, "DISP32",
-	 FALSE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO (BFD_RELOC_16_PCREL, 0, 1, 16, TRUE, 0,
+	 false, 0xffffffff, 0xffffffff, true),
+  HOWTO (BFD_RELOC_16_PCREL, 0, 2, 16, true, 0,
 	 complain_overflow_bitfield,
 	 NULL, "DISP16",
-	 FALSE, 0xffff, 0xffff, TRUE),
-  HOWTO (BFD_RELOC_AARCH64_CALL26, 0, 2, 26, TRUE, 0,
+	 false, 0xffff, 0xffff, true),
+  HOWTO (BFD_RELOC_AARCH64_CALL26, 0, 4, 26, true, 0,
 	 complain_overflow_bitfield,
 	 NULL, "BRANCH26",
-	 FALSE, 0x03ffffff, 0x03ffffff, TRUE),
+	 false, 0x03ffffff, 0x03ffffff, true),
   /* 8 */
-  HOWTO (BFD_RELOC_AARCH64_ADR_HI21_PCREL, 12, 2, 21, TRUE, 0,
+  HOWTO (BFD_RELOC_AARCH64_ADR_HI21_PCREL, 12, 4, 21, true, 0,
 	 complain_overflow_signed,
 	 NULL, "PAGE21",
-	 FALSE, 0x1fffff, 0x1fffff, TRUE),
-  HOWTO (BFD_RELOC_AARCH64_LDST16_LO12, 1, 2, 12, TRUE, 0,
+	 false, 0x1fffff, 0x1fffff, true),
+  HOWTO (BFD_RELOC_AARCH64_LDST16_LO12, 1, 4, 12, true, 0,
 	 complain_overflow_signed,
 	 NULL, "PGOFF12",
-	 FALSE, 0xffe, 0xffe, TRUE),
-  HOWTO (BFD_RELOC_MACH_O_ARM64_ADDEND, 0, 2, 32, FALSE, 0,
+	 false, 0xffe, 0xffe, true),
+  HOWTO (BFD_RELOC_MACH_O_ARM64_ADDEND, 0, 4, 32, false, 0,
 	 complain_overflow_signed,
 	 NULL, "ADDEND",
-	 FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO (BFD_RELOC_MACH_O_SUBTRACTOR32, 0, 2, 32, FALSE, 0,
+	 false, 0xffffffff, 0xffffffff, false),
+  HOWTO (BFD_RELOC_MACH_O_SUBTRACTOR32, 0, 4, 32, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "SUBTRACTOR32",
-	 FALSE, 0xffffffff, 0xffffffff, FALSE),
+	 false, 0xffffffff, 0xffffffff, false),
   /* 12 */
-  HOWTO (BFD_RELOC_MACH_O_SUBTRACTOR64, 0, 4, 64, FALSE, 0,
+  HOWTO (BFD_RELOC_MACH_O_SUBTRACTOR64, 0, 8, 64, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "SUBTRACTOR64",
-	 FALSE, MINUS_ONE, MINUS_ONE, FALSE),
-  HOWTO (BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21, 12, 2, 21, TRUE, 0,
+	 false, MINUS_ONE, MINUS_ONE, false),
+  HOWTO (BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGE21, 12, 4, 21, true, 0,
 	 complain_overflow_signed,
 	 NULL, "GOT_LD_PG21",
-	 FALSE, 0x1fffff, 0x1fffff, TRUE),
-  HOWTO (BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12, 1, 2, 12, TRUE, 0,
+	 false, 0x1fffff, 0x1fffff, true),
+  HOWTO (BFD_RELOC_MACH_O_ARM64_GOT_LOAD_PAGEOFF12, 1, 4, 12, true, 0,
 	 complain_overflow_signed,
 	 NULL, "GOT_LD_PGOFF12",
-	 FALSE, 0xffe, 0xffe, TRUE),
-  HOWTO (BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT, 0, 2, 32, TRUE, 0,
+	 false, 0xffe, 0xffe, true),
+  HOWTO (BFD_RELOC_MACH_O_ARM64_POINTER_TO_GOT, 0, 4, 32, true, 0,
 	 complain_overflow_bitfield,
 	 NULL, "PTR_TO_GOT",
-	 FALSE, 0xffffffff, 0xffffffff, TRUE),
+	 false, 0xffffffff, 0xffffffff, true),
 };
 
-static bfd_boolean
+static bool
 bfd_mach_o_arm64_canonicalize_one_reloc (bfd *       abfd,
 					 struct mach_o_reloc_info_external * raw,
 					 arelent *   res,
@@ -159,7 +159,7 @@ bfd_mach_o_arm64_canonicalize_one_reloc
   if (res->address & BFD_MACH_O_SR_SCATTERED)
     {
       /* Only non-scattered relocations.  */
-      return FALSE;
+      return false;
     }
 
   /* The value and info fields have to be extracted dependent on target
@@ -170,16 +170,16 @@ bfd_mach_o_arm64_canonicalize_one_reloc
     {
       if (reloc.r_length == 2 && reloc.r_pcrel == 0)
 	{
-	  res->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	  res->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	  res->addend = reloc.r_value;
 	  res->howto = &arm64_howto_table[10];
-	  return TRUE;
+	  return true;
 	}
-      return FALSE;
+      return false;
     }
 
   if (!bfd_mach_o_canonicalize_non_scattered_reloc (abfd, &reloc, res, syms))
-    return FALSE;
+    return false;
 
   switch (reloc.r_type)
     {
@@ -188,90 +188,90 @@ bfd_mach_o_arm64_canonicalize_one_reloc
 	{
 	case 0: /* len = 0, pcrel = 0  */
 	  res->howto = &arm64_howto_table[3];
-	  return TRUE;
+	  return true;
 	case 2: /* len = 1, pcrel = 0  */
 	  res->howto = &arm64_howto_table[2];
-	  return TRUE;
+	  return true;
 	case 3: /* len = 1, pcrel = 1  */
 	  res->howto = &arm64_howto_table[6];
-	  return TRUE;
+	  return true;
 	case 4: /* len = 2, pcrel = 0  */
 	  res->howto = &arm64_howto_table[1];
-	  return TRUE;
+	  return true;
 	case 5: /* len = 2, pcrel = 1  */
 	  res->howto = &arm64_howto_table[5];
-	  return TRUE;
+	  return true;
 	case 6: /* len = 3, pcrel = 0  */
 	  res->howto = &arm64_howto_table[0];
-	  return TRUE;
+	  return true;
 	case 7: /* len = 3, pcrel = 1  */
 	  res->howto = &arm64_howto_table[4];
-	  return TRUE;
+	  return true;
 	default:
-	  return FALSE;
+	  return false;
 	}
       break;
     case BFD_MACH_O_ARM64_RELOC_SUBTRACTOR:
       if (reloc.r_pcrel)
-	return FALSE;
+	return false;
       switch (reloc.r_length)
 	{
 	case 2:
 	  res->howto = &arm64_howto_table[11];
-	  return TRUE;
+	  return true;
 	case 3:
 	  res->howto = &arm64_howto_table[12];
-	  return TRUE;
+	  return true;
 	default:
-	  return FALSE;
+	  return false;
 	}
       break;
     case BFD_MACH_O_ARM64_RELOC_BRANCH26:
       if (reloc.r_length == 2 && reloc.r_pcrel == 1)
 	{
 	  res->howto = &arm64_howto_table[7];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_ARM64_RELOC_PAGE21:
       if (reloc.r_length == 2 && reloc.r_pcrel == 1)
 	{
 	  res->howto = &arm64_howto_table[8];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_ARM64_RELOC_PAGEOFF12:
       if (reloc.r_length == 2 && reloc.r_pcrel == 0)
 	{
 	  res->howto = &arm64_howto_table[9];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_ARM64_RELOC_GOT_LOAD_PAGE21:
       if (reloc.r_length == 2 && reloc.r_pcrel == 1)
 	{
 	  res->howto = &arm64_howto_table[13];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_ARM64_RELOC_GOT_LOAD_PAGEOFF12:
       if (reloc.r_length == 2 && reloc.r_pcrel == 0)
 	{
 	  res->howto = &arm64_howto_table[14];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_ARM64_RELOC_POINTER_TO_GOT:
       if (reloc.r_length == 2 && reloc.r_pcrel == 1)
 	{
 	  res->howto = &arm64_howto_table[15];
-	  return TRUE;
+	  return true;
 	}
       break;
     default:
       break;
     }
-  return FALSE;
+  return false;
 }
 
 static reloc_howto_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.20200303/bfd/mach-o-arm.c ./bfd/mach-o-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mach-o-arm.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mach-o-arm.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* ARM Mach-O support for BFD.
-   Copyright (C) 2015-2019 Free Software Foundation, Inc.
+   Copyright (C) 2015-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -38,26 +38,26 @@
 #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,
 			      BFD_MACH_O_MH_CORE, BFD_MACH_O_CPU_TYPE_ARM);
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_arm_mkobject (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata;
 
   if (!bfd_mach_o_mkobject_init (abfd))
-    return FALSE;
+    return false;
 
   mdata = bfd_mach_o_get_data (abfd);
   mdata->header.magic = BFD_MACH_O_MH_MAGIC;
@@ -66,87 +66,87 @@ bfd_mach_o_arm_mkobject (bfd *abfd)
   mdata->header.byteorder = BFD_ENDIAN_LITTLE;
   mdata->header.version = 1;
 
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type arm_howto_table[]=
 {
   /* 0 */
-  HOWTO (BFD_RELOC_32, 0, 2, 32, FALSE, 0,
+  HOWTO (BFD_RELOC_32, 0, 4, 32, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "32",
-	 FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO (BFD_RELOC_16, 0, 1, 16, FALSE, 0,
+	 false, 0xffffffff, 0xffffffff, false),
+  HOWTO (BFD_RELOC_16, 0, 2, 16, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "16",
-	 FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO (BFD_RELOC_8, 0, 0, 8, FALSE, 0,
+	 false, 0xffff, 0xffff, false),
+  HOWTO (BFD_RELOC_8, 0, 1, 8, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "8",
-	 FALSE, 0xff, 0xff, FALSE),
-  HOWTO (BFD_RELOC_32_PCREL, 0, 2, 32, TRUE, 0,
+	 false, 0xff, 0xff, false),
+  HOWTO (BFD_RELOC_32_PCREL, 0, 4, 32, true, 0,
 	 complain_overflow_bitfield,
 	 NULL, "DISP32",
-	 FALSE, 0xffffffff, 0xffffffff, TRUE),
+	 false, 0xffffffff, 0xffffffff, true),
   /* 4 */
-  HOWTO (BFD_RELOC_16_PCREL, 0, 1, 16, TRUE, 0,
+  HOWTO (BFD_RELOC_16_PCREL, 0, 2, 16, true, 0,
 	 complain_overflow_bitfield,
 	 NULL, "DISP16",
-	 FALSE, 0xffff, 0xffff, TRUE),
-  HOWTO (BFD_RELOC_MACH_O_SECTDIFF, 0, 2, 32, FALSE, 0,
+	 false, 0xffff, 0xffff, true),
+  HOWTO (BFD_RELOC_MACH_O_SECTDIFF, 0, 4, 32, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "SECTDIFF_32",
-	 FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO (BFD_RELOC_MACH_O_LOCAL_SECTDIFF, 0, 2, 32, FALSE, 0,
+	 false, 0xffffffff, 0xffffffff, false),
+  HOWTO (BFD_RELOC_MACH_O_LOCAL_SECTDIFF, 0, 4, 32, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "LSECTDIFF_32",
-	 FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO (BFD_RELOC_MACH_O_PAIR, 0, 2, 32, FALSE, 0,
+	 false, 0xffffffff, 0xffffffff, false),
+  HOWTO (BFD_RELOC_MACH_O_PAIR, 0, 4, 32, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "PAIR_32",
-	 FALSE, 0xffffffff, 0xffffffff, FALSE),
+	 false, 0xffffffff, 0xffffffff, false),
   /* 8 */
-  HOWTO (BFD_RELOC_MACH_O_SECTDIFF, 0, 1, 16, FALSE, 0,
+  HOWTO (BFD_RELOC_MACH_O_SECTDIFF, 0, 2, 16, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "SECTDIFF_16",
-	 FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO (BFD_RELOC_MACH_O_LOCAL_SECTDIFF, 0, 1, 16, FALSE, 0,
+	 false, 0xffff, 0xffff, false),
+  HOWTO (BFD_RELOC_MACH_O_LOCAL_SECTDIFF, 0, 2, 16, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "LSECTDIFF_16",
-	 FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO (BFD_RELOC_MACH_O_PAIR, 0, 1, 16, FALSE, 0,
+	 false, 0xffff, 0xffff, false),
+  HOWTO (BFD_RELOC_MACH_O_PAIR, 0, 2, 16, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "PAIR_16",
-	 FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO (BFD_RELOC_ARM_PCREL_CALL, 2, 2, 24, TRUE, 0,
+	 false, 0xffff, 0xffff, false),
+  HOWTO (BFD_RELOC_ARM_PCREL_CALL, 2, 4, 24, true, 0,
 	 complain_overflow_signed,
 	 NULL, "BR24",
-	 FALSE, 0x00ffffff, 0x00ffffff, TRUE),
+	 false, 0x00ffffff, 0x00ffffff, true),
   /* 12 */
-  HOWTO (BFD_RELOC_ARM_MOVW, 0,	2, 16, FALSE, 0,
+  HOWTO (BFD_RELOC_ARM_MOVW, 0,	4, 16, false, 0,
 	 complain_overflow_dont,
 	 NULL, "MOVW",
-	 FALSE, 0x000f0fff, 0x000f0fff, FALSE),
-  HOWTO (BFD_RELOC_MACH_O_PAIR, 0, 2, 16, FALSE, 0,
+	 false, 0x000f0fff, 0x000f0fff, false),
+  HOWTO (BFD_RELOC_MACH_O_PAIR, 0, 4, 16, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "PAIR_W",
-	 FALSE, 0x000f0fff, 0x000f0fff, FALSE),
-  HOWTO (BFD_RELOC_ARM_MOVT, 0, 2, 16, FALSE, 0,
+	 false, 0x000f0fff, 0x000f0fff, false),
+  HOWTO (BFD_RELOC_ARM_MOVT, 0, 4, 16, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "MOVT",
-	 FALSE, 0x000f0fff, 0x000f0fff, FALSE),
-  HOWTO (BFD_RELOC_MACH_O_PAIR, 0, 2, 16, FALSE, 0,
+	 false, 0x000f0fff, 0x000f0fff, false),
+  HOWTO (BFD_RELOC_MACH_O_PAIR, 0, 4, 16, false, 0,
 	 complain_overflow_bitfield,
 	 NULL, "PAIR_T",
-	 FALSE, 0x000f0fff, 0x000f0fff, FALSE),
+	 false, 0x000f0fff, 0x000f0fff, false),
   /* 16 */
-  HOWTO (BFD_RELOC_THUMB_PCREL_BLX, 2, 2, 24, TRUE, 0,
+  HOWTO (BFD_RELOC_THUMB_PCREL_BLX, 2, 4, 24, true, 0,
 	 complain_overflow_signed,
 	 NULL, "TBR22",
-	 FALSE, 0x07ff2fff, 0x07ff2fff, TRUE)
+	 false, 0x07ff2fff, 0x07ff2fff, true)
 };
 
-static bfd_boolean
+static bool
 bfd_mach_o_arm_canonicalize_one_reloc (bfd *       abfd,
 				       struct mach_o_reloc_info_external * raw,
 				       arelent *   res,
@@ -156,10 +156,7 @@ bfd_mach_o_arm_canonicalize_one_reloc (b
   bfd_mach_o_reloc_info reloc;
 
   if (!bfd_mach_o_pre_canonicalize_one_reloc (abfd, raw, &reloc, res, syms))
-    {
-fprintf (stderr, "ARm 1\n");
-    return FALSE;
-    }
+    return false;
 
   if (reloc.r_scattered)
     {
@@ -169,71 +166,71 @@ fprintf (stderr, "ARm 1\n");
 	  /* PR 21813: Check for a corrupt PAIR reloc at the start.  */
 	  if (res == res_base)
 	    {
-	      _bfd_error_handler (_("\
-malformed mach-o ARM reloc pair: reloc is first reloc"));
-	    return FALSE;
+	      _bfd_error_handler (_("malformed mach-o ARM reloc pair: "
+				    "reloc is first reloc"));
+	      return false;
 	    }
 	  if (reloc.r_length == 2)
 	    {
 	      res->howto = &arm_howto_table[7];
 	      res->address = res[-1].address;
-	      return TRUE;
+	      return true;
 	    }
 	  else if (reloc.r_length == 1)
 	    {
 	      res->howto = &arm_howto_table[10];
 	      res->address = res[-1].address;
-	      return TRUE;
+	      return true;
 	    }
-	  _bfd_error_handler (_("\
-malformed mach-o ARM reloc pair: invalid length: %d"), reloc.r_length);
-	  return FALSE;
+	  _bfd_error_handler (_("malformed mach-o ARM reloc pair: "
+				"invalid length: %d"), reloc.r_length);
+	  return false;
 
 	case BFD_MACH_O_ARM_RELOC_SECTDIFF:
 	  if (reloc.r_length == 2)
 	    {
 	      res->howto = &arm_howto_table[5];
-	      return TRUE;
+	      return true;
 	    }
 	  else if (reloc.r_length == 1)
 	    {
 	      res->howto = &arm_howto_table[8];
-	      return TRUE;
+	      return true;
 	    }
-	  _bfd_error_handler (_("\
-malformed mach-o ARM sectdiff reloc: invalid length: %d"), reloc.r_length);
-	  return FALSE;
+	  _bfd_error_handler (_("malformed mach-o ARM sectdiff reloc: "
+				"invalid length: %d"), reloc.r_length);
+	  return false;
 
 	case BFD_MACH_O_ARM_RELOC_LOCAL_SECTDIFF:
 	  if (reloc.r_length == 2)
 	    {
 	      res->howto = &arm_howto_table[6];
-	      return TRUE;
+	      return true;
 	    }
 	  else if (reloc.r_length == 1)
 	    {
 	      res->howto = &arm_howto_table[9];
-	      return TRUE;
+	      return true;
 	    }
-	  _bfd_error_handler (_("\
-malformed mach-o ARM local sectdiff reloc: invalid length: %d"),
+	  _bfd_error_handler (_("malformed mach-o ARM local sectdiff reloc: "
+				"invalid length: %d"),
 			      reloc.r_length);
-	  return FALSE;
+	  return false;
 
 	case BFD_MACH_O_ARM_RELOC_HALF_SECTDIFF:
 	  switch (reloc.r_length)
 	    {
 	    case 2: /* :lower16: for movw arm.  */
 	      res->howto = &arm_howto_table[12];
-	      return TRUE;
+	      return true;
 	    case 3: /* :upper16: for movt arm.  */
 	      res->howto = &arm_howto_table[14];
-	      return TRUE;
+	      return true;
 	    }
-	  _bfd_error_handler (_("\
-malformed mach-o ARM half sectdiff reloc: invalid length: %d"),
+	  _bfd_error_handler (_("malformed mach-o ARM half sectdiff reloc: "
+				"invalid length: %d"),
 			      reloc.r_length);
-	  return FALSE;
+	  return false;
 
 	default:
 	  break;
@@ -248,24 +245,24 @@ malformed mach-o ARM half sectdiff reloc
 	    {
 	    case 0: /* len = 0, pcrel = 0  */
 	      res->howto = &arm_howto_table[2];
-	      return TRUE;
+	      return true;
 	    case 2: /* len = 1, pcrel = 0  */
 	      res->howto = &arm_howto_table[1];
-	      return TRUE;
+	      return true;
 	    case 3: /* len = 1, pcrel = 1  */
 	      res->howto = &arm_howto_table[4];
-	      return TRUE;
+	      return true;
 	    case 4: /* len = 2, pcrel = 0  */
 	      res->howto = &arm_howto_table[0];
-	      return TRUE;
+	      return true;
 	    case 5: /* len = 2, pcrel = 1  */
 	      res->howto = &arm_howto_table[3];
-	      return TRUE;
+	      return true;
 	    default:
-	      _bfd_error_handler (_("\
-malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"),
+	      _bfd_error_handler (_("malformed mach-o ARM vanilla reloc: "
+				    "invalid length: %d (pcrel: %d)"),
 				  reloc.r_length, reloc.r_pcrel);
-	      return FALSE;
+	      return false;
 	    }
 	  break;
 
@@ -273,7 +270,7 @@ malformed mach-o ARM vanilla reloc: inva
 	  if (reloc.r_length == 2 && reloc.r_pcrel == 1)
 	    {
 	      res->howto = &arm_howto_table[11];
-	      return TRUE;
+	      return true;
 	    }
 	  break;
 
@@ -281,7 +278,7 @@ malformed mach-o ARM vanilla reloc: inva
 	  if (reloc.r_length == 2 && reloc.r_pcrel == 1)
 	    {
 	      res->howto = &arm_howto_table[16];
-	      return TRUE;
+	      return true;
 	    }
 	  break;
 
@@ -291,14 +288,20 @@ malformed mach-o ARM vanilla reloc: inva
 	      {
 	      case 0: /* :lower16: for movw arm.  */
 		res->howto = &arm_howto_table[12];
-		return TRUE;
+		return true;
 	      case 1: /* :upper16: for movt arm.  */
 		res->howto = &arm_howto_table[14];
-		return TRUE;
+		return true;
 	      }
 	  break;
 
 	case BFD_MACH_O_ARM_RELOC_PAIR:
+	  if (res == res_base)
+	    {
+	      _bfd_error_handler (_("malformed mach-o ARM reloc pair: "
+				    "reloc is first reloc"));
+	      return false;
+	    }
 	  if (res[-1].howto == &arm_howto_table[12]
 	      && reloc.r_length == 0)
 	    {
@@ -307,7 +310,7 @@ malformed mach-o ARM vanilla reloc: inva
 	      /* This reloc contains the other half in its r_address field.  */
 	      res[-1].addend += (res->address & 0xffff) << 16;
 	      res->address = res[-1].address;
-	      return TRUE;
+	      return true;
 	    }
 	  else if (res[-1].howto == &arm_howto_table[14]
 		   && reloc.r_length == 1)
@@ -317,7 +320,7 @@ malformed mach-o ARM vanilla reloc: inva
 	      /* This reloc contains the other half in its r_address field.  */
 	      res[-1].addend += res->address & 0xffff;
 	      res->address = res[-1].address;
-	      return TRUE;
+	      return true;
 	    }
 	  break;
 
@@ -326,9 +329,9 @@ malformed mach-o ARM vanilla reloc: inva
 	}
     }
 
-  _bfd_error_handler (_("\
-malformed mach-o ARM reloc: unknown reloc type: %d"), reloc.r_length);
-  return FALSE;
+  _bfd_error_handler (_("malformed mach-o ARM reloc: "
+			"unknown reloc type: %d"), reloc.r_length);
+  return false;
 }
 
 static reloc_howto_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.20200303/bfd/mach-o.c ./bfd/mach-o.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mach-o.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mach-o.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Mach-O support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -36,9 +36,9 @@
 #define bfd_mach_o_mkobject bfd_mach_o_gen_mkobject
 
 #define FILE_ALIGN(off, algn) \
-  (((off) + ((file_ptr) 1 << (algn)) - 1) & ((file_ptr) -1U << (algn)))
+  (((off) + ((ufile_ptr) 1 << (algn)) - 1) & ((ufile_ptr) -1 << (algn)))
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_dyld_content (bfd *abfd, bfd_mach_o_dyld_info_command *cmd);
 
 unsigned int
@@ -52,36 +52,36 @@ bfd_mach_o_version (bfd *abfd)
   return mdata->header.version;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_valid (bfd *abfd)
 {
   if (abfd == NULL || abfd->xvec == NULL)
-    return FALSE;
+    return false;
 
   if (abfd->xvec->flavour != bfd_target_mach_o_flavour)
-    return FALSE;
+    return false;
 
   if (bfd_mach_o_get_data (abfd) == NULL)
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
-static INLINE bfd_boolean
+static inline bool
 mach_o_wide_p (bfd_mach_o_header *header)
 {
   switch (header->version)
     {
     case 1:
-      return FALSE;
+      return false;
     case 2:
-      return TRUE;
+      return true;
     default:
       BFD_FAIL ();
-      return FALSE;
+      return false;
     }
 }
 
-static INLINE bfd_boolean
+static inline bool
 bfd_mach_o_wide_p (bfd *abfd)
 {
   return mach_o_wide_p (&bfd_mach_o_get_data (abfd)->header);
@@ -379,7 +379,7 @@ bfd_mach_o_convert_section_name_to_bfd (
 {
   const mach_o_section_name_xlat *xlat;
   char *res;
-  unsigned int len;
+  size_t len;
   const char *pfx = "";
 
   *name = NULL;
@@ -394,7 +394,7 @@ bfd_mach_o_convert_section_name_to_bfd (
       res = bfd_alloc (abfd, len + 1);
       if (res == NULL)
 	return;
-      memcpy (res, xlat->bfd_name, len+1);
+      memcpy (res, xlat->bfd_name, len + 1);
       *name = res;
       *flags = xlat->bfd_flags;
       return;
@@ -440,9 +440,9 @@ bfd_mach_o_convert_section_name_to_mach_
   const char *name = bfd_section_name (sect);
   const char *segname;
   const char *dot;
-  unsigned int len;
-  unsigned int seglen;
-  unsigned int seclen;
+  size_t len;
+  size_t seglen;
+  size_t seclen;
 
   memset (section->segname, 0, BFD_MACH_O_SEGNAME_SIZE + 1);
   memset (section->sectname, 0, BFD_MACH_O_SECTNAME_SIZE + 1);
@@ -526,6 +526,15 @@ bfd_mach_o_section_get_nbr_indirect (bfd
 {
   unsigned int elsz;
 
+  /* FIXME: This array is set by the assembler but does not seem to be
+     set anywhere for objcopy.  Since bfd_mach_o_build_dysymtab will
+     not fill in output bfd_mach_o_dysymtab_command indirect_syms when
+     this array is NULL we may as well return zero for the size.
+     This is enough to stop objcopy allocating huge amounts of memory
+     for indirect symbols in fuzzed object files.  */
+  if (sec->indirect_syms == NULL)
+    return 0;
+
   elsz = bfd_mach_o_section_get_entry_size (abfd, sec);
   if (elsz == 0)
     return 0;
@@ -551,7 +560,7 @@ bfd_mach_o_append_command (bfd *abfd, bf
 /* Copy any private info we understand from the input symbol
    to the output symbol.  */
 
-bfd_boolean
+bool
 bfd_mach_o_bfd_copy_private_symbol_data (bfd *ibfd ATTRIBUTE_UNUSED,
 					 asymbol *isymbol,
 					 bfd *obfd ATTRIBUTE_UNUSED,
@@ -566,23 +575,25 @@ bfd_mach_o_bfd_copy_private_symbol_data
   os->n_desc = is->n_desc;
   os->symbol.udata.i = is->symbol.udata.i;
 
-  return TRUE;
+  return true;
 }
 
 /* Copy any private info we understand from the input section
    to the output section.  */
 
-bfd_boolean
+bool
 bfd_mach_o_bfd_copy_private_section_data (bfd *ibfd, asection *isection,
-					  bfd *obfd, asection *osection)
+					  bfd *obfd, asection *osection,
+					  struct bfd_link_info *link_info)
 {
+  if (link_info != NULL
+      || ibfd->xvec->flavour != bfd_target_mach_o_flavour
+      || obfd->xvec->flavour != bfd_target_mach_o_flavour)
+    return true;
+
   bfd_mach_o_section *os = bfd_mach_o_get_mach_o_section (osection);
   bfd_mach_o_section *is = bfd_mach_o_get_mach_o_section (isection);
 
-  if (ibfd->xvec->flavour != bfd_target_mach_o_flavour
-      || obfd->xvec->flavour != bfd_target_mach_o_flavour)
-    return TRUE;
-
   BFD_ASSERT (is != NULL && os != NULL);
 
   os->flags = is->flags;
@@ -590,7 +601,7 @@ bfd_mach_o_bfd_copy_private_section_data
   os->reserved2 = is->reserved2;
   os->reserved3 = is->reserved3;
 
-  return TRUE;
+  return true;
 }
 
 static const char *
@@ -618,12 +629,10 @@ cputype (unsigned long value)
 }
 
 static const char *
-cpusubtype (unsigned long cputype, unsigned long cpusubtype)
+cpusubtype (unsigned long cpu_type, unsigned long cpu_subtype, char *buffer)
 {
-  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 +642,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 +658,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 +678,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,37 +693,38 @@ cpusubtype (unsigned long cputype, unsig
       break;
     }
 
-  if (cpusubtype != 0)
+  if (cpu_subtype != 0)
     return strcat (buffer, _(" (<unknown>)"));
 
   return buffer;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_bfd_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE * file = (FILE *) ptr;
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
+  char buff[128];
 
   fprintf (file, _(" MACH-O header:\n"));
   fprintf (file, _("   magic:      %#lx\n"), (long) mdata->header.magic);
   fprintf (file, _("   cputype:    %#lx (%s)\n"), (long) mdata->header.cputype,
 	   cputype (mdata->header.cputype));
   fprintf (file, _("   cpusubtype: %#lx%s\n"), (long) mdata->header.cpusubtype,
-	   cpusubtype (mdata->header.cputype, mdata->header.cpusubtype));
+	   cpusubtype (mdata->header.cputype, mdata->header.cpusubtype, buff));
   fprintf (file, _("   filetype:   %#lx\n"), (long) mdata->header.filetype);
   fprintf (file, _("   ncmds:      %#lx\n"), (long) mdata->header.ncmds);
   fprintf (file, _("   sizeocmds:  %#lx\n"), (long) mdata->header.sizeofcmds);
   fprintf (file, _("   flags:      %#lx\n"), (long) mdata->header.flags);
   fprintf (file, _("   version:    %x\n"), mdata->header.version);
 
-  return TRUE;
+  return true;
 }
 
 /* Copy any private info we understand from the input bfd
    to the output bfd.  */
 
-bfd_boolean
+bool
 bfd_mach_o_bfd_copy_private_header_data (bfd *ibfd, bfd *obfd)
 {
   bfd_mach_o_data_struct *imdata;
@@ -723,7 +733,7 @@ bfd_mach_o_bfd_copy_private_header_data
 
   if (bfd_get_flavour (ibfd) != bfd_target_mach_o_flavour
       || bfd_get_flavour (obfd) != bfd_target_mach_o_flavour)
-    return TRUE;
+    return true;
 
   BFD_ASSERT (bfd_mach_o_valid (ibfd));
   BFD_ASSERT (bfd_mach_o_valid (obfd));
@@ -762,7 +772,7 @@ bfd_mach_o_bfd_copy_private_header_data
 	  /* Command is copied.  */
 	  ocmd = bfd_alloc (obfd, sizeof (bfd_mach_o_load_command));
 	  if (ocmd == NULL)
-	    return FALSE;
+	    return false;
 
 	  /* Copy common fields.  */
 	  ocmd->type = icmd->type;
@@ -850,23 +860,23 @@ bfd_mach_o_bfd_copy_private_header_data
       bfd_mach_o_append_command (obfd, ocmd);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* This allows us to set up to 32 bits of flags (unless we invent some
    fiendish scheme to subdivide).  For now, we'll just set the file flags
    without error checking - just overwrite.  */
 
-bfd_boolean
+bool
 bfd_mach_o_bfd_set_private_flags (bfd *abfd, flagword flags)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
 
   if (!mdata)
-    return FALSE;
+    return false;
 
   mdata->header.flags = flags;
-  return TRUE;
+  return true;
 }
 
 /* Count the total number of symbols.  */
@@ -911,7 +921,7 @@ bfd_mach_o_canonicalize_symtab (bfd *abf
     {
       _bfd_error_handler
 	(_("bfd_mach_o_canonicalize_symtab: unable to load symbols"));
-      return 0;
+      return -1;
     }
 
   BFD_ASSERT (sym->symbols != NULL);
@@ -939,11 +949,9 @@ bfd_mach_o_get_synthetic_symtab (bfd *ab
   bfd_mach_o_symtab_command *symtab = mdata->symtab;
   asymbol *s;
   char * s_start;
-  char * s_end;
   unsigned long count, i, j, n;
   size_t size;
   char *names;
-  char *nul_name;
   const char stub [] = "$stub";
 
   *ret = NULL;
@@ -956,27 +964,27 @@ bfd_mach_o_get_synthetic_symtab (bfd *ab
   /* We need to allocate a bfd symbol for every indirect symbol and to
      allocate the memory for its name.  */
   count = dysymtab->nindirectsyms;
-  size = count * sizeof (asymbol) + 1;
-
+  size = 0;
   for (j = 0; j < count; j++)
     {
-      const char * strng;
       unsigned int isym = dysymtab->indirect_syms[j];
+      const char *str;
 
       /* Some indirect symbols are anonymous.  */
-      if (isym < symtab->nsyms && (strng = symtab->symbols[isym].symbol.name))
-	/* PR 17512: file: f5b8eeba.  */
-	size += strnlen (strng, symtab->strsize - (strng - symtab->strtab)) + sizeof (stub);
+      if (isym < symtab->nsyms
+	  && (str = symtab->symbols[isym].symbol.name) != NULL)
+	{
+	  /* PR 17512: file: f5b8eeba.  */
+	  size += strnlen (str, symtab->strsize - (str - symtab->strtab));
+	  size += sizeof (stub);
+	}
     }
 
-  s_start = bfd_malloc (size);
+  s_start = bfd_malloc (size + count * sizeof (asymbol));
   s = *ret = (asymbol *) s_start;
   if (s == NULL)
     return -1;
   names = (char *) (s + count);
-  nul_name = names;
-  *names++ = 0;
-  s_end = s_start + size;
 
   n = 0;
   for (i = 0; i < mdata->nsects; i++)
@@ -984,7 +992,7 @@ bfd_mach_o_get_synthetic_symtab (bfd *ab
       bfd_mach_o_section *sec = mdata->sections[i];
       unsigned int first, last;
       bfd_vma addr;
-      bfd_vma entry_size;
+      unsigned int entry_size;
 
       switch (sec->flags & BFD_MACH_O_SECTION_TYPE_MASK)
 	{
@@ -998,47 +1006,39 @@ bfd_mach_o_get_synthetic_symtab (bfd *ab
 	  entry_size = bfd_mach_o_section_get_entry_size (abfd, sec);
 
 	  /* PR 17512: file: 08e15eec.  */
-	  if (first >= count || last >= count || first > last)
+	  if (first >= count || last > count || first > last)
 	    goto fail;
 
 	  for (j = first; j < last; j++)
 	    {
 	      unsigned int isym = dysymtab->indirect_syms[j];
-
-	      /* PR 17512: file: 04d64d9b.  */
-	      if (((char *) s) + sizeof (* s) > s_end)
-		goto fail;
-
-	      s->flags = BSF_GLOBAL | BSF_SYNTHETIC;
-	      s->section = sec->bfdsection;
-	      s->value = addr - sec->addr;
-	      s->udata.p = NULL;
+	      const char *str;
+	      size_t len;
 
 	      if (isym < symtab->nsyms
-		  && symtab->symbols[isym].symbol.name)
+		  && (str = symtab->symbols[isym].symbol.name) != NULL)
 		{
-		  const char *sym = symtab->symbols[isym].symbol.name;
-		  size_t len;
-
-		  s->name = names;
-		  len = strlen (sym);
-		  /* PR 17512: file: 47dfd4d2.  */
-		  if (names + len >= s_end)
+		  /* PR 17512: file: 04d64d9b.  */
+		  if (n >= count)
 		    goto fail;
-		  memcpy (names, sym, len);
-		  names += len;
-		  /* PR 17512: file: 18f340a4.  */
-		  if (names + sizeof (stub) >= s_end)
+		  len = strnlen (str, symtab->strsize - (str - symtab->strtab));
+		  /* PR 17512: file: 47dfd4d2, 18f340a4.  */
+		  if (size < len + sizeof (stub))
 		    goto fail;
-		  memcpy (names, stub, sizeof (stub));
-		  names += sizeof (stub);
+		  memcpy (names, str, len);
+		  memcpy (names + len, stub, sizeof (stub));
+		  s->name = names;
+		  names += len + sizeof (stub);
+		  size -= len + sizeof (stub);
+		  s->the_bfd = symtab->symbols[isym].symbol.the_bfd;
+		  s->flags = BSF_GLOBAL | BSF_SYNTHETIC;
+		  s->section = sec->bfdsection;
+		  s->value = addr - sec->addr;
+		  s->udata.p = NULL;
+		  s++;
+		  n++;
 		}
-	      else
-		s->name = nul_name;
-
 	      addr += entry_size;
-	      s++;
-	      n++;
 	    }
 	  break;
 	default:
@@ -1203,14 +1203,14 @@ bfd_mach_o_convert_architecture (bfd_mac
    number of bytes written or -1 in case of error.  */
 
 static int
-bfd_mach_o_pad4 (bfd *abfd, unsigned int len)
+bfd_mach_o_pad4 (bfd *abfd, size_t len)
 {
   if (len % 4 != 0)
     {
       char pad[4] = {0,0,0,0};
       unsigned int padlen = 4 - (len % 4);
 
-      if (bfd_bwrite (pad, padlen, abfd) != padlen)
+      if (bfd_write (pad, padlen, abfd) != padlen)
 	return -1;
 
       return padlen;
@@ -1222,16 +1222,16 @@ bfd_mach_o_pad4 (bfd *abfd, unsigned int
 /* Likewise, but for a command.  */
 
 static int
-bfd_mach_o_pad_command (bfd *abfd, unsigned int len)
+bfd_mach_o_pad_command (bfd *abfd, size_t len)
 {
-  unsigned int align = bfd_mach_o_wide_p (abfd) ? 8 : 4;
+  size_t align = bfd_mach_o_wide_p (abfd) ? 8 : 4;
 
   if (len % align != 0)
     {
       char pad[8] = {0};
-      unsigned int padlen = align - (len % align);
+      size_t padlen = align - (len % align);
 
-      if (bfd_bwrite (pad, padlen, abfd) != padlen)
+      if (bfd_write (pad, padlen, abfd) != padlen)
 	return -1;
 
       return padlen;
@@ -1240,11 +1240,11 @@ bfd_mach_o_pad_command (bfd *abfd, unsig
     return 0;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_header (bfd *abfd, bfd_mach_o_header *header)
 {
   struct mach_o_header_external raw;
-  unsigned int size;
+  size_t size;
 
   size = mach_o_wide_p (header) ?
     BFD_MACH_O_HEADER_64_SIZE : BFD_MACH_O_HEADER_SIZE;
@@ -1261,19 +1261,19 @@ bfd_mach_o_write_header (bfd *abfd, bfd_
     bfd_h_put_32 (abfd, header->reserved, raw.reserved);
 
   if (bfd_seek (abfd, 0, SEEK_SET) != 0
-      || bfd_bwrite (&raw, size, abfd) != size)
-    return FALSE;
+      || bfd_write (&raw, size, abfd) != size)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_thread (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_thread_command *cmd = &command->command.thread;
   unsigned int i;
   struct mach_o_thread_command_external raw;
-  unsigned int offset;
+  size_t offset;
 
   BFD_ASSERT ((command->type == BFD_MACH_O_LC_THREAD)
 	      || (command->type == BFD_MACH_O_LC_UNIXTHREAD));
@@ -1282,51 +1282,51 @@ bfd_mach_o_write_thread (bfd *abfd, bfd_
   for (i = 0; i < cmd->nflavours; i++)
     {
       BFD_ASSERT ((cmd->flavours[i].size % 4) == 0);
-      BFD_ASSERT (cmd->flavours[i].offset ==
-		  (command->offset + offset + BFD_MACH_O_LC_SIZE));
+      BFD_ASSERT (cmd->flavours[i].offset
+		  == command->offset + offset + BFD_MACH_O_LC_SIZE);
 
       bfd_h_put_32 (abfd, cmd->flavours[i].flavour, raw.flavour);
       bfd_h_put_32 (abfd, (cmd->flavours[i].size / 4), raw.count);
 
       if (bfd_seek (abfd, command->offset + offset, SEEK_SET) != 0
-	  || bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-	return FALSE;
+	  || bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+	return false;
 
       offset += cmd->flavours[i].size + sizeof (raw);
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_dylinker (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_dylinker_command *cmd = &command->command.dylinker;
   struct mach_o_str_command_external raw;
-  unsigned int namelen;
+  size_t namelen;
 
   bfd_h_put_32 (abfd, cmd->name_offset, raw.str);
 
   if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
-      || bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+      || bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   namelen = strlen (cmd->name_str) + 1;
-  if (bfd_bwrite (cmd->name_str, namelen, abfd) != namelen)
-    return FALSE;
+  if (bfd_write (cmd->name_str, namelen, abfd) != namelen)
+    return false;
 
   if (bfd_mach_o_pad_command (abfd, namelen) < 0)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_dylib (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_dylib_command *cmd = &command->command.dylib;
   struct mach_o_dylib_command_external raw;
-  unsigned int namelen;
+  size_t namelen;
 
   bfd_h_put_32 (abfd, cmd->name_offset, raw.name);
   bfd_h_put_32 (abfd, cmd->timestamp, raw.timestamp);
@@ -1334,20 +1334,20 @@ bfd_mach_o_write_dylib (bfd *abfd, bfd_m
   bfd_h_put_32 (abfd, cmd->compatibility_version, raw.compatibility_version);
 
   if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
-      || bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+      || bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   namelen = strlen (cmd->name_str) + 1;
-  if (bfd_bwrite (cmd->name_str, namelen, abfd) != namelen)
-    return FALSE;
+  if (bfd_write (cmd->name_str, namelen, abfd) != namelen)
+    return false;
 
   if (bfd_mach_o_pad_command (abfd, namelen) < 0)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_main (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_main_command *cmd = &command->command.main;
@@ -1357,13 +1357,13 @@ bfd_mach_o_write_main (bfd *abfd, bfd_ma
   bfd_h_put_64 (abfd, cmd->stacksize, raw.stacksize);
 
   if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
-      || bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+      || bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_dyld_info (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_dyld_info_command *cmd = &command->command.dyld_info;
@@ -1381,54 +1381,64 @@ bfd_mach_o_write_dyld_info (bfd *abfd, b
   bfd_h_put_32 (abfd, cmd->export_size, raw.export_size);
 
   if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
-      || bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+      || bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   if (cmd->rebase_size != 0)
     if (bfd_seek (abfd, cmd->rebase_off, SEEK_SET) != 0
-	|| (bfd_bwrite (cmd->rebase_content, cmd->rebase_size, abfd) !=
+	|| (bfd_write (cmd->rebase_content, cmd->rebase_size, abfd) !=
 	    cmd->rebase_size))
-      return FALSE;
+      return false;
 
   if (cmd->bind_size != 0)
     if (bfd_seek (abfd, cmd->bind_off, SEEK_SET) != 0
-	|| (bfd_bwrite (cmd->bind_content, cmd->bind_size, abfd) !=
+	|| (bfd_write (cmd->bind_content, cmd->bind_size, abfd) !=
 	    cmd->bind_size))
-      return FALSE;
+      return false;
 
   if (cmd->weak_bind_size != 0)
     if (bfd_seek (abfd, cmd->weak_bind_off, SEEK_SET) != 0
-	|| (bfd_bwrite (cmd->weak_bind_content, cmd->weak_bind_size, abfd) !=
+	|| (bfd_write (cmd->weak_bind_content, cmd->weak_bind_size, abfd) !=
 	    cmd->weak_bind_size))
-      return FALSE;
+      return false;
 
   if (cmd->lazy_bind_size != 0)
     if (bfd_seek (abfd, cmd->lazy_bind_off, SEEK_SET) != 0
-	|| (bfd_bwrite (cmd->lazy_bind_content, cmd->lazy_bind_size, abfd) !=
+	|| (bfd_write (cmd->lazy_bind_content, cmd->lazy_bind_size, abfd) !=
 	    cmd->lazy_bind_size))
-      return FALSE;
+      return false;
 
   if (cmd->export_size != 0)
     if (bfd_seek (abfd, cmd->export_off, SEEK_SET) != 0
-	|| (bfd_bwrite (cmd->export_content, cmd->export_size, abfd) !=
+	|| (bfd_write (cmd->export_content, cmd->export_size, abfd) !=
 	    cmd->export_size))
-      return FALSE;
+      return false;
 
-  return TRUE;
+  return true;
 }
 
 long
-bfd_mach_o_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED,
-				  asection *asect)
+bfd_mach_o_get_reloc_upper_bound (bfd *abfd, asection *asect)
 {
-#if SIZEOF_LONG == SIZEOF_INT
-   if (asect->reloc_count >= LONG_MAX / sizeof (arelent *))
+  size_t count, raw;
+
+  count = asect->reloc_count;
+  if (count >= LONG_MAX / sizeof (arelent *)
+      || _bfd_mul_overflow (count, BFD_MACH_O_RELENT_SIZE, &raw))
     {
       bfd_set_error (bfd_error_file_too_big);
       return -1;
     }
-#endif
- return (asect->reloc_count + 1) * sizeof (arelent *);
+  if (!bfd_write_p (abfd))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && raw > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
+    }
+  return (count + 1) * sizeof (arelent *);
 }
 
 /* In addition to the need to byte-swap the symbol number, the bit positions
@@ -1462,7 +1472,7 @@ bfd_mach_o_swap_in_non_scattered_reloc (
 
 /* Set syms_ptr_ptr and addend of RES.  */
 
-bfd_boolean
+bool
 bfd_mach_o_canonicalize_non_scattered_reloc (bfd *abfd,
 					     bfd_mach_o_reloc_info *reloc,
 					     arelent *res, asymbol **syms)
@@ -1481,9 +1491,9 @@ bfd_mach_o_canonicalize_non_scattered_re
     {
       /* PR 17512: file: 8396-1185-0.004.  */
       if (num >= (unsigned) bfd_mach_o_count_symbols (abfd))
-	sym = bfd_und_section_ptr->symbol_ptr_ptr;
+	sym = &bfd_und_section_ptr->symbol;
       else if (syms == NULL)
-	sym = bfd_und_section_ptr->symbol_ptr_ptr;
+	sym = &bfd_und_section_ptr->symbol;
       else
 	/* An external symbol number.  */
 	sym = syms + num;
@@ -1495,7 +1505,7 @@ bfd_mach_o_canonicalize_non_scattered_re
 	 This value is almost certainly not a valid section number, hence
 	 this specific case to avoid an assertion failure.
 	 Target specific swap_reloc_in routine should adjust that.  */
-      sym = bfd_abs_section_ptr->symbol_ptr_ptr;
+      sym = &bfd_abs_section_ptr->symbol;
     }
   else
     {
@@ -1504,11 +1514,11 @@ bfd_mach_o_canonicalize_non_scattered_re
 	{
 	  _bfd_error_handler (_("\
 malformed mach-o reloc: section index is greater than the number of sections"));
-	  return FALSE;
+	  return false;
 	}
 
       /* A section number.  */
-      sym = mdata->sections[num - 1]->bfdsection->symbol_ptr_ptr;
+      sym = &mdata->sections[num - 1]->bfdsection->symbol;
       /* For a symbol defined in section S, the addend (stored in the
 	 binary) contains the address of the section.  To comply with
 	 bfd convention, subtract the section address.
@@ -1525,7 +1535,7 @@ malformed mach-o reloc: section index is
      the PPC swap_reloc_in routine.  */
   res->sym_ptr_ptr = sym;
 
-  return TRUE;
+  return true;
 }
 
 /* Do most of the work for canonicalize_relocs on RAW: create internal
@@ -1536,7 +1546,7 @@ malformed mach-o reloc: section index is
    (like arm64) don't follow the generic rules (symnum is a value for the
    non-scattered relocation ADDEND).  */
 
-bfd_boolean
+bool
 bfd_mach_o_pre_canonicalize_one_reloc (bfd *abfd,
 				       struct mach_o_reloc_info_external *raw,
 				       bfd_mach_o_reloc_info *reloc,
@@ -1546,7 +1556,7 @@ bfd_mach_o_pre_canonicalize_one_reloc (b
   bfd_vma addr;
 
   addr = bfd_get_32 (abfd, raw->r_address);
-  res->sym_ptr_ptr = NULL;
+  res->sym_ptr_ptr = &bfd_und_section_ptr->symbol;
   res->addend = 0;
 
   if (addr & BFD_MACH_O_SR_SCATTERED)
@@ -1564,13 +1574,13 @@ bfd_mach_o_pre_canonicalize_one_reloc (b
 	 end of the data for the section (e.g. in a calculation of section
 	 data length).  At present, the symbol will end up associated with
 	 the following section or, if it falls within alignment padding, as
-	 null - which will assert later.  */
+	 the undefined section symbol.  */
       for (j = 0; j < mdata->nsects; j++)
 	{
 	  bfd_mach_o_section *sect = mdata->sections[j];
 	  if (symnum >= sect->addr && symnum < sect->addr + sect->size)
 	    {
-	      res->sym_ptr_ptr = sect->bfdsection->symbol_ptr_ptr;
+	      res->sym_ptr_ptr = &sect->bfdsection->symbol;
 	      res->addend = symnum - sect->addr;
 	      break;
 	    }
@@ -1596,14 +1606,14 @@ bfd_mach_o_pre_canonicalize_one_reloc (b
 
       if (!bfd_mach_o_canonicalize_non_scattered_reloc (abfd, reloc,
 							res, syms))
-	return FALSE;
+	return false;
     }
 
   /* We have set up a reloc with all the information present, so the swapper
      can modify address, value and addend fields, if necessary, to convey
      information in the generic BFD reloc that is mach-o specific.  */
 
-  return TRUE;
+  return true;
 }
 
 static int
@@ -1614,24 +1624,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 +1671,14 @@ bfd_mach_o_canonicalize_reloc (bfd *abfd
 
   if (asect->relocation == NULL)
     {
-      if (asect->reloc_count * sizeof (arelent) < asect->reloc_count)
-	return -1;
-      res = bfd_malloc (asect->reloc_count * sizeof (arelent));
+      size_t amt;
+
+      if (_bfd_mul_overflow (asect->reloc_count, sizeof (arelent), &amt))
+	{
+	  bfd_set_error (bfd_error_file_too_big);
+	  return -1;
+	}
+      res = bfd_malloc (amt);
       if (res == NULL)
 	return -1;
 
@@ -1692,11 +1703,36 @@ long
 bfd_mach_o_get_dynamic_reloc_upper_bound (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
+  bfd_mach_o_dysymtab_command *dysymtab = mdata->dysymtab;
 
-  if (mdata->dysymtab == NULL)
+  if (dysymtab == NULL)
     return 1;
-  return (mdata->dysymtab->nextrel + mdata->dysymtab->nlocrel + 1)
-    * sizeof (arelent *);
+
+  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 (dysymtab->nextrel + dysymtab->nlocrel < dysymtab->nextrel
+      || _bfd_mul_overflow (dysymtab->nextrel + dysymtab->nlocrel,
+			    sizeof (arelent), &amt))
+    {
+      bfd_set_error (bfd_error_file_too_big);
+      return -1;
+    }
+
+  return (dysymtab->nextrel + dysymtab->nlocrel + 1) * sizeof (arelent *);
 }
 
 long
@@ -1720,12 +1756,8 @@ 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;
-
-      res = bfd_malloc ((dysymtab->nextrel + dysymtab->nlocrel)
-			* sizeof (arelent));
+      size_t amt = (dysymtab->nextrel + dysymtab->nlocrel) * sizeof (arelent);
+      res = bfd_malloc (amt);
       if (res == NULL)
 	return -1;
 
@@ -1789,7 +1821,7 @@ bfd_mach_o_swap_out_non_scattered_reloc
   fields[3] = info;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_relocs (bfd *abfd, bfd_mach_o_section *section)
 {
   unsigned int i;
@@ -1799,13 +1831,13 @@ bfd_mach_o_write_relocs (bfd *abfd, bfd_
 
   sec = section->bfdsection;
   if (sec->reloc_count == 0)
-    return TRUE;
+    return true;
 
   if (bed->_bfd_mach_o_swap_reloc_out == NULL)
-    return TRUE;
+    return true;
 
   if (bfd_seek (abfd, section->reloff, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   /* Convert and write.  */
   entries = section->bfdsection->orelocation;
@@ -1817,7 +1849,7 @@ bfd_mach_o_write_relocs (bfd *abfd, bfd_
 
       /* Convert relocation to an intermediate representation.  */
       if (!(*bed->_bfd_mach_o_swap_reloc_out) (rel, pinfo))
-	return FALSE;
+	return false;
 
       /* Lower the relocation info.  */
       if (pinfo->r_scattered)
@@ -1840,14 +1872,14 @@ bfd_mach_o_write_relocs (bfd *abfd, bfd_
 						   pinfo);
 	}
 
-      if (bfd_bwrite (&raw, BFD_MACH_O_RELENT_SIZE, abfd)
+      if (bfd_write (&raw, BFD_MACH_O_RELENT_SIZE, abfd)
 	  != BFD_MACH_O_RELENT_SIZE)
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_section_32 (bfd *abfd, bfd_mach_o_section *section)
 {
   struct mach_o_section_32_external raw;
@@ -1864,14 +1896,14 @@ bfd_mach_o_write_section_32 (bfd *abfd,
   bfd_h_put_32 (abfd, section->reserved1, raw.reserved1);
   bfd_h_put_32 (abfd, section->reserved2, raw.reserved2);
 
-  if (bfd_bwrite (&raw, BFD_MACH_O_SECTION_SIZE, abfd)
+  if (bfd_write (&raw, BFD_MACH_O_SECTION_SIZE, abfd)
       != BFD_MACH_O_SECTION_SIZE)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_section_64 (bfd *abfd, bfd_mach_o_section *section)
 {
   struct mach_o_section_64_external raw;
@@ -1889,14 +1921,14 @@ bfd_mach_o_write_section_64 (bfd *abfd,
   bfd_h_put_32 (abfd, section->reserved2, raw.reserved2);
   bfd_h_put_32 (abfd, section->reserved3, raw.reserved3);
 
-  if (bfd_bwrite (&raw, BFD_MACH_O_SECTION_64_SIZE, abfd)
+  if (bfd_write (&raw, BFD_MACH_O_SECTION_64_SIZE, abfd)
       != BFD_MACH_O_SECTION_64_SIZE)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_segment_32 (bfd *abfd, bfd_mach_o_load_command *command)
 {
   struct mach_o_segment_command_32_external raw;
@@ -1907,7 +1939,7 @@ bfd_mach_o_write_segment_32 (bfd *abfd,
 
   for (sec = seg->sect_head; sec != NULL; sec = sec->next)
     if (!bfd_mach_o_write_relocs (abfd, sec))
-      return FALSE;
+      return false;
 
   memcpy (raw.segname, seg->segname, 16);
   bfd_h_put_32 (abfd, seg->vmaddr, raw.vmaddr);
@@ -1920,17 +1952,17 @@ bfd_mach_o_write_segment_32 (bfd *abfd,
   bfd_h_put_32 (abfd, seg->flags, raw.flags);
 
   if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
-      || bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+      || bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   for (sec = seg->sect_head; sec != NULL; sec = sec->next)
     if (!bfd_mach_o_write_section_32 (abfd, sec))
-      return FALSE;
+      return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_segment_64 (bfd *abfd, bfd_mach_o_load_command *command)
 {
   struct mach_o_segment_command_64_external raw;
@@ -1941,7 +1973,7 @@ bfd_mach_o_write_segment_64 (bfd *abfd,
 
   for (sec = seg->sect_head; sec != NULL; sec = sec->next)
     if (!bfd_mach_o_write_relocs (abfd, sec))
-      return FALSE;
+      return false;
 
   memcpy (raw.segname, seg->segname, 16);
   bfd_h_put_64 (abfd, seg->vmaddr, raw.vmaddr);
@@ -1954,17 +1986,17 @@ bfd_mach_o_write_segment_64 (bfd *abfd,
   bfd_h_put_32 (abfd, seg->flags, raw.flags);
 
   if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
-      || bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+      || bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   for (sec = seg->sect_head; sec != NULL; sec = sec->next)
     if (!bfd_mach_o_write_section_64 (abfd, sec))
-      return FALSE;
+      return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_symtab_content (bfd *abfd, bfd_mach_o_symtab_command *sym)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -1976,17 +2008,17 @@ bfd_mach_o_write_symtab_content (bfd *ab
 
   /* Write the symbols first.  */
   if (bfd_seek (abfd, sym->symoff, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   strtab = _bfd_stringtab_init ();
   if (strtab == NULL)
-    return FALSE;
+    return false;
 
   if (sym->nsyms > 0)
     /* Although we don't strictly need to do this, for compatibility with
        Darwin system tools, actually output an empty string for the index
        0 entry.  */
-    _bfd_stringtab_add (strtab, "", TRUE, FALSE);
+    _bfd_stringtab_add (strtab, "", true, false);
 
   for (i = 0; i < sym->nsyms; i++)
     {
@@ -1998,7 +2030,7 @@ bfd_mach_o_write_symtab_content (bfd *ab
 	str_index = 0;
       else
 	{
-	  str_index = _bfd_stringtab_add (strtab, s->symbol.name, TRUE, FALSE);
+	  str_index = _bfd_stringtab_add (strtab, s->symbol.name, true, false);
 
 	  if (str_index == (bfd_size_type) -1)
 	    goto err;
@@ -2015,7 +2047,7 @@ bfd_mach_o_write_symtab_content (bfd *ab
 	  bfd_h_put_64 (abfd, s->symbol.section->vma + s->symbol.value,
 			raw.n_value);
 
-	  if (bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
+	  if (bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
 	    goto err;
 	}
       else
@@ -2029,7 +2061,7 @@ bfd_mach_o_write_symtab_content (bfd *ab
 	  bfd_h_put_32 (abfd, s->symbol.section->vma + s->symbol.value,
 			raw.n_value);
 
-	  if (bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
+	  if (bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
 	    goto err;
 	}
     }
@@ -2043,22 +2075,24 @@ bfd_mach_o_write_symtab_content (bfd *ab
   if (!_bfd_stringtab_emit (abfd, strtab))
     goto err;
 
+  _bfd_stringtab_free (strtab);
+
   /* Pad string table.  */
   padlen = bfd_mach_o_pad4 (abfd, sym->strsize);
   if (padlen < 0)
-    return FALSE;
+    return false;
   mdata->filelen += padlen;
   sym->strsize += padlen;
 
-  return TRUE;
+  return true;
 
  err:
   _bfd_stringtab_free (strtab);
   sym->strsize = 0;
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_symtab (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_symtab_command *sym = &command->command.symtab;
@@ -2073,10 +2107,10 @@ bfd_mach_o_write_symtab (bfd *abfd, bfd_
   bfd_h_put_32 (abfd, sym->strsize, raw.strsize);
 
   if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0
-      || bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+      || bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Count the number of indirect symbols in the image.
@@ -2108,7 +2142,7 @@ bfd_mach_o_count_indirect_symbols (bfd *
 
 /* Create the dysymtab.  */
 
-static bfd_boolean
+static bool
 bfd_mach_o_build_dysymtab (bfd *abfd, bfd_mach_o_dysymtab_command *cmd)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -2122,7 +2156,7 @@ bfd_mach_o_build_dysymtab (bfd *abfd, bf
     {
       _bfd_error_handler (_("sorry: modtab, toc and extrefsyms are not yet"
 			    " implemented for dysymtab commands."));
-      return FALSE;
+      return false;
     }
 
   cmd->ilocalsym = 0;
@@ -2167,16 +2201,17 @@ 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 (_bfd_mul_overflow (cmd->nindirectsyms, 4, &amt))
+	return false;
+      mdata->filelen += amt;
 
-      if (cmd->nindirectsyms * 4 < cmd->nindirectsyms)
-	return FALSE;
-      cmd->indirect_syms = bfd_zalloc (abfd, cmd->nindirectsyms * 4);
+      cmd->indirect_syms = bfd_zalloc (abfd, amt);
       if (cmd->indirect_syms == NULL)
-	return FALSE;
+	return false;
 
       n = 0;
       for (i = 0; i < mdata->nsects; ++i)
@@ -2216,13 +2251,13 @@ bfd_mach_o_build_dysymtab (bfd *abfd, bf
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write a dysymtab command.
    TODO: Possibly coalesce writes of smaller objects.  */
 
-static bfd_boolean
+static bool
 bfd_mach_o_write_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_dysymtab_command *cmd = &command->command.dysymtab;
@@ -2234,7 +2269,7 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
       unsigned int i;
 
       if (bfd_seek (abfd, cmd->modtaboff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       for (i = 0; i < cmd->nmodtab; i++)
 	{
@@ -2268,8 +2303,8 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
 	      bfd_h_put_32 (abfd, module->objc_module_info_size,
 			    &w.objc_module_info_size);
 
-	      if (bfd_bwrite ((void *) &w, sizeof (w), abfd) != sizeof (w))
-		return FALSE;
+	      if (bfd_write (&w, sizeof (w), abfd) != sizeof (w))
+		return false;
 	    }
 	  else
 	    {
@@ -2291,8 +2326,8 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
 	      bfd_h_put_32 (abfd, module->objc_module_info_size,
 			    &n.objc_module_info_size);
 
-	      if (bfd_bwrite ((void *) &n, sizeof (n), abfd) != sizeof (n))
-		return FALSE;
+	      if (bfd_write (&n, sizeof (n), abfd) != sizeof (n))
+		return false;
 	    }
 	}
     }
@@ -2302,7 +2337,7 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
       unsigned int i;
 
       if (bfd_seek (abfd, cmd->tocoff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       for (i = 0; i < cmd->ntoc; i++)
 	{
@@ -2312,8 +2347,8 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
 	  bfd_h_put_32 (abfd, toc->symbol_index, &raw.symbol_index);
 	  bfd_h_put_32 (abfd, toc->module_index, &raw.module_index);
 
-	  if (bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-	    return FALSE;
+	  if (bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+	    return false;
 	}
     }
 
@@ -2322,15 +2357,15 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
       unsigned int i;
 
       if (bfd_seek (abfd, cmd->indirectsymoff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       for (i = 0; i < cmd->nindirectsyms; ++i)
 	{
 	  unsigned char raw[4];
 
 	  bfd_h_put_32 (abfd, cmd->indirect_syms[i], &raw);
-	  if (bfd_bwrite (raw, sizeof (raw), abfd) != sizeof (raw))
-	    return FALSE;
+	  if (bfd_write (raw, sizeof (raw), abfd) != sizeof (raw))
+	    return false;
 	}
     }
 
@@ -2339,7 +2374,7 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
       unsigned int i;
 
       if (bfd_seek (abfd, cmd->extrefsymoff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       for (i = 0; i < cmd->nextrefsyms; i++)
 	{
@@ -2362,14 +2397,14 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
 	    }
 
 	  bfd_h_put_32 (abfd, v, raw);
-	  if (bfd_bwrite (raw, sizeof (raw), abfd) != sizeof (raw))
-	    return FALSE;
+	  if (bfd_write (raw, sizeof (raw), abfd) != sizeof (raw))
+	    return false;
 	}
     }
 
   /* The command.  */
   if (bfd_seek (abfd, command->offset + BFD_MACH_O_LC_SIZE, SEEK_SET) != 0)
-    return FALSE;
+    return false;
   else
     {
       struct mach_o_dysymtab_command_external raw;
@@ -2393,11 +2428,11 @@ bfd_mach_o_write_dysymtab (bfd *abfd, bf
       bfd_h_put_32 (abfd, cmd->locreloff, &raw.locreloff);
       bfd_h_put_32 (abfd, cmd->nlocrel, &raw.nlocrel);
 
-      if (bfd_bwrite (&raw, sizeof (raw), abfd) != sizeof (raw))
-	return FALSE;
+      if (bfd_write (&raw, sizeof (raw), abfd) != sizeof (raw))
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 static unsigned
@@ -2472,14 +2507,14 @@ bfd_mach_o_cf_symbols (const void *a, co
 		(by name)
 */
 
-static bfd_boolean
+static bool
 bfd_mach_o_mangle_symbols (bfd *abfd)
 {
   unsigned long i;
   asymbol **symbols = bfd_get_outsymbols (abfd);
 
   if (symbols == NULL || bfd_get_symcount (abfd) == 0)
-    return TRUE;
+    return true;
 
   for (i = 0; i < bfd_get_symcount (abfd); i++)
     {
@@ -2542,18 +2577,19 @@ bfd_mach_o_mangle_symbols (bfd *abfd)
       s->symbol.udata.i = i;  /* renumber.  */
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We build a flat table of sections, which can be re-ordered if necessary.
    Fill in the section number and other mach-o-specific data.  */
 
-static bfd_boolean
+static bool
 bfd_mach_o_mangle_sections (bfd *abfd, bfd_mach_o_data_struct *mdata)
 {
   asection *sec;
   unsigned target_index;
   unsigned nsect;
+  size_t amt;
 
   nsect = bfd_count_sections (abfd);
 
@@ -2561,21 +2597,21 @@ bfd_mach_o_mangle_sections (bfd *abfd, b
      doing.  */
   if (mdata->nsects == nsect
       && (mdata->nsects == 0 || mdata->sections != NULL))
-    return TRUE;
+    return true;
 
   /* We need to check that this can be done...  */
   if (nsect > 255)
     {
       _bfd_error_handler (_("mach-o: there are too many sections (%u)"
 			    " maximum is 255,\n"), nsect);
-      return FALSE;
+      return false;
     }
 
   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;
+    return false;
 
   /* Create Mach-O sections.
      Section type, attribute and align should have been set when the
@@ -2599,10 +2635,10 @@ bfd_mach_o_mangle_sections (bfd *abfd, b
       sec->target_index = ++target_index;
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_write_contents (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -2613,12 +2649,12 @@ bfd_mach_o_write_contents (bfd *abfd)
 
   /* Make the commands, if not already present.  */
   if (!abfd->output_has_begun && !bfd_mach_o_build_commands (abfd))
-    return FALSE;
-  abfd->output_has_begun = TRUE;
+    return false;
+  abfd->output_has_begun = true;
 
   /* Write the header.  */
   if (!bfd_mach_o_write_header (abfd, &mdata->header))
-    return FALSE;
+    return false;
 
   /* First pass: allocate the linkedit segment.  */
   for (cmd = mdata->first_command; cmd != NULL; cmd = cmd->next)
@@ -2639,31 +2675,16 @@ bfd_mach_o_write_contents (bfd *abfd)
 	{
 	  bfd_mach_o_dyld_info_command *di = &cmd->command.dyld_info;
 
-	  if (di->rebase_size != 0)
-	    {
-	      di->rebase_off = mdata->filelen;
-	      mdata->filelen += di->rebase_size;
-	    }
-	  if (di->bind_size != 0)
-	    {
-	      di->bind_off = mdata->filelen;
-	      mdata->filelen += di->bind_size;
-	    }
-	  if (di->weak_bind_size != 0)
-	    {
-	      di->weak_bind_off = mdata->filelen;
-	      mdata->filelen += di->weak_bind_size;
-	    }
-	  if (di->lazy_bind_size != 0)
-	    {
-	      di->lazy_bind_off = mdata->filelen;
-	      mdata->filelen += di->lazy_bind_size;
-	    }
-	  if (di->export_size != 0)
-	    {
-	      di->export_off = mdata->filelen;
-	      mdata->filelen += di->export_size;
-	    }
+	  di->rebase_off = di->rebase_size != 0 ? mdata->filelen : 0;
+	  mdata->filelen += di->rebase_size;
+	  di->bind_off = di->bind_size != 0 ? mdata->filelen : 0;
+	  mdata->filelen += di->bind_size;
+	  di->weak_bind_off = di->weak_bind_size != 0 ? mdata->filelen : 0;
+	  mdata->filelen += di->weak_bind_size;
+	  di->lazy_bind_off = di->lazy_bind_size != 0 ? mdata->filelen : 0;
+	  mdata->filelen += di->lazy_bind_size;
+	  di->export_off = di->export_size != 0 ? mdata->filelen : 0;
+	  mdata->filelen += di->export_size;
 	}
 	break;
       case BFD_MACH_O_LC_LOAD_DYLIB:
@@ -2701,12 +2722,12 @@ bfd_mach_o_write_contents (bfd *abfd)
   /* Build the dysymtab.  */
   if (dysymtab != NULL)
     if (!bfd_mach_o_build_dysymtab (abfd, dysymtab))
-      return FALSE;
+      return false;
 
   /* Write symtab and strtab.  */
   if (symtab != NULL)
     if (!bfd_mach_o_write_symtab_content (abfd, symtab))
-      return FALSE;
+      return false;
 
   /* Adjust linkedit size.  */
   if (linkedit != NULL)
@@ -2734,57 +2755,57 @@ bfd_mach_o_write_contents (bfd *abfd)
       bfd_h_put_32 (abfd, cmd->len, raw.cmdsize);
 
       if (bfd_seek (abfd, cmd->offset, SEEK_SET) != 0
-	  || bfd_bwrite (&raw, BFD_MACH_O_LC_SIZE, abfd) != 8)
-	return FALSE;
+	  || bfd_write (&raw, BFD_MACH_O_LC_SIZE, abfd) != 8)
+	return false;
 
       switch (cmd->type)
 	{
 	case BFD_MACH_O_LC_SEGMENT:
 	  if (!bfd_mach_o_write_segment_32 (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	case BFD_MACH_O_LC_SEGMENT_64:
 	  if (!bfd_mach_o_write_segment_64 (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	case BFD_MACH_O_LC_SYMTAB:
 	  if (!bfd_mach_o_write_symtab (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	case BFD_MACH_O_LC_DYSYMTAB:
 	  if (!bfd_mach_o_write_dysymtab (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	case BFD_MACH_O_LC_THREAD:
 	case BFD_MACH_O_LC_UNIXTHREAD:
 	  if (!bfd_mach_o_write_thread (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	case BFD_MACH_O_LC_LOAD_DYLIB:
 	  if (!bfd_mach_o_write_dylib (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	case BFD_MACH_O_LC_LOAD_DYLINKER:
 	  if (!bfd_mach_o_write_dylinker (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	case BFD_MACH_O_LC_MAIN:
 	  if (!bfd_mach_o_write_main (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	case BFD_MACH_O_LC_DYLD_INFO:
 	  if (!bfd_mach_o_write_dyld_info (abfd, cmd))
-	    return FALSE;
+	    return false;
 	  break;
 	default:
 	  _bfd_error_handler
 	    (_("unable to write unknown load command %#x"),
 	     cmd->type);
-	  return FALSE;
+	  return false;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 static void
@@ -2821,7 +2842,7 @@ bfd_mach_o_set_section_flags_from_bfd (b
     s->flags = BFD_MACH_O_S_REGULAR;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_build_obj_seg_command (bfd *abfd, bfd_mach_o_segment_command *seg)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -2926,10 +2947,10 @@ bfd_mach_o_build_obj_seg_command (bfd *a
       mdata->filelen += sec->reloc_count * BFD_MACH_O_RELENT_SIZE;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_build_exec_seg_command (bfd *abfd, bfd_mach_o_segment_command *seg)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -2965,7 +2986,7 @@ bfd_mach_o_build_exec_seg_command (bfd *
 	    (_("section address (%#" PRIx64 ") "
 	       "below start of segment (%#" PRIx64 ")"),
 	       (uint64_t) s->addr, (uint64_t) vma);
-	  return FALSE;
+	  return false;
 	}
 
       vma = s->addr + s->size;
@@ -3021,7 +3042,7 @@ bfd_mach_o_build_exec_seg_command (bfd *
 
       /* Relocs shouldn't appear in non-object files.  */
       if (s->bfdsection->reloc_count != 0)
-	return FALSE;
+	return false;
     }
 
   /* Set maxprot.  */
@@ -3036,13 +3057,13 @@ bfd_mach_o_build_exec_seg_command (bfd *
   seg->filesize = (seg->filesize + pagemask) & ~pagemask;
   mdata->filelen = (mdata->filelen + pagemask) & ~pagemask;
 
-  return TRUE;
+  return true;
 }
 
 /* Layout the commands: set commands size and offset, set ncmds and sizeofcmds
    fields in header.  */
 
-static bfd_boolean
+static bool
 bfd_mach_o_layout_commands (bfd_mach_o_data_struct *mdata)
 {
   unsigned wide = mach_o_wide_p (&mdata->header);
@@ -3050,7 +3071,7 @@ bfd_mach_o_layout_commands (bfd_mach_o_d
   ufile_ptr offset;
   bfd_mach_o_load_command *cmd;
   unsigned int align;
-  bfd_boolean ret = TRUE;
+  bool ret = true;
 
   hdrlen = wide ? BFD_MACH_O_HEADER_64_SIZE : BFD_MACH_O_HEADER_SIZE;
   align = wide ? 8 - 1 : 4 - 1;
@@ -3106,7 +3127,7 @@ bfd_mach_o_layout_commands (bfd_mach_o_d
 	  _bfd_error_handler
 	    (_("unable to layout unknown load command %#x"),
 	     cmd->type);
-	  ret = FALSE;
+	  ret = false;
 	  break;
 	}
 
@@ -3132,7 +3153,7 @@ bfd_mach_o_init_segment (bfd_mach_o_data
 
   /* Init segment command.  */
   cmd->type = wide ? BFD_MACH_O_LC_SEGMENT_64 : BFD_MACH_O_LC_SEGMENT;
-  cmd->type_required = FALSE;
+  cmd->type_required = false;
 
   strcpy (seg->segname, segname);
   seg->nsects = nbr_sect;
@@ -3153,7 +3174,7 @@ bfd_mach_o_init_segment (bfd_mach_o_data
    TODO: Other file formats, rebuilding symtab/dysymtab commands for strip
    and copy functionality.  */
 
-bfd_boolean
+bool
 bfd_mach_o_build_commands (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -3168,7 +3189,7 @@ bfd_mach_o_build_commands (bfd *abfd)
 
   /* Return now if already built.  */
   if (mdata->header.ncmds != 0)
-    return TRUE;
+    return true;
 
   /* Fill in the file type, if not already set.  */
   if (mdata->header.filetype == 0)
@@ -3186,12 +3207,12 @@ bfd_mach_o_build_commands (bfd *abfd)
      since that depends on properly numbered sections.  */
   if (mdata->nsects == 0 || mdata->sections == NULL)
     if (! bfd_mach_o_mangle_sections (abfd, mdata))
-      return FALSE;
+      return false;
 
   /* Order the symbol table, fill-in/check mach-o specific fields and
      partition out any indirect symbols.  */
   if (!bfd_mach_o_mangle_symbols (abfd))
-    return FALSE;
+    return false;
 
   /* Segment commands.  */
   if (mdata->header.filetype == BFD_MACH_O_MH_OBJECT)
@@ -3257,7 +3278,7 @@ bfd_mach_o_build_commands (bfd *abfd)
   /* Create commands for segments (and symtabs), prepend them.  */
   commands = bfd_zalloc (abfd, nbr_commands * sizeof (bfd_mach_o_load_command));
   if (commands == NULL)
-    return FALSE;
+    return false;
   for (i = 0; i < nbr_commands - 1; i++)
     commands[i].next = &commands[i + 1];
   commands[nbr_commands - 1].next = mdata->first_command;
@@ -3308,7 +3329,7 @@ bfd_mach_o_build_commands (bfd *abfd)
       bfd_mach_o_load_command *cmd = &commands[symtab_idx];
 
       cmd->type = BFD_MACH_O_LC_SYMTAB;
-      cmd->type_required = FALSE;
+      cmd->type_required = false;
     }
 
   /* If required, setup symtab command, see comment above about the quality
@@ -3318,7 +3339,7 @@ bfd_mach_o_build_commands (bfd *abfd)
       bfd_mach_o_load_command *cmd = &commands[dysymtab_idx];
 
       cmd->type = BFD_MACH_O_LC_DYSYMTAB;
-      cmd->type_required = FALSE;
+      cmd->type_required = false;
     }
 
   /* Create the main command.  */
@@ -3327,7 +3348,7 @@ bfd_mach_o_build_commands (bfd *abfd)
       bfd_mach_o_load_command *cmd = &commands[main_idx];
 
       cmd->type = BFD_MACH_O_LC_MAIN;
-      cmd->type_required = TRUE;
+      cmd->type_required = true;
 
       cmd->command.main.entryoff = 0;
       cmd->command.main.stacksize = 0;
@@ -3335,7 +3356,7 @@ bfd_mach_o_build_commands (bfd *abfd)
 
   /* Layout commands.  */
   if (! bfd_mach_o_layout_commands (mdata))
-    return FALSE;
+    return false;
 
   /* So, now we have sized the commands and the filelen set to that.
      Now we can build the segment command and set the section file offsets.  */
@@ -3344,7 +3365,7 @@ bfd_mach_o_build_commands (bfd *abfd)
       for (i = 0; i < nbr_segcmd; i++)
 	if (!bfd_mach_o_build_obj_seg_command
 	    (abfd, &commands[i].command.segment))
-	  return FALSE;
+	  return false;
     }
   else
     {
@@ -3356,7 +3377,7 @@ bfd_mach_o_build_commands (bfd *abfd)
 	  bfd_mach_o_segment_command *seg = &commands[i].command.segment;
 
 	  if (!bfd_mach_o_build_exec_seg_command (abfd, seg))
-	    return FALSE;
+	    return false;
 
 	  if (seg->vmaddr + seg->vmsize > maxvma)
 	    maxvma = seg->vmaddr + seg->vmsize;
@@ -3376,12 +3397,12 @@ bfd_mach_o_build_commands (bfd *abfd)
 	  bfd_get_start_address (abfd) - commands[1].command.segment.vmaddr;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the contents of a section.  */
 
-bfd_boolean
+bool
 bfd_mach_o_set_section_contents (bfd *abfd,
 				 asection *section,
 				 const void * location,
@@ -3393,17 +3414,17 @@ bfd_mach_o_set_section_contents (bfd *ab
   /* Trying to write the first section contents will trigger the creation of
      the load commands if they are not already present.  */
   if (!abfd->output_has_begun && !bfd_mach_o_build_commands (abfd))
-    return FALSE;
+    return false;
 
   if (count == 0)
-    return TRUE;
+    return true;
 
   pos = section->filepos + offset;
   if (bfd_seek (abfd, pos, SEEK_SET) != 0
-      || bfd_bwrite (location, count, abfd) != count)
-    return FALSE;
+      || bfd_write (location, count, abfd) != count)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 int
@@ -3429,7 +3450,7 @@ bfd_mach_o_make_empty_symbol (bfd *abfd)
   return new_symbol;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_header (bfd *abfd, file_ptr hdr_off, bfd_mach_o_header *header)
 {
   struct mach_o_header_external raw;
@@ -3438,8 +3459,8 @@ bfd_mach_o_read_header (bfd *abfd, file_
 
   /* Just read the magic number.  */
   if (bfd_seek (abfd, hdr_off, SEEK_SET) != 0
-      || bfd_bread (raw.magic, sizeof (raw.magic), abfd) != 4)
-    return FALSE;
+      || bfd_read (raw.magic, sizeof (raw.magic), abfd) != 4)
+    return false;
 
   if (bfd_getb32 (raw.magic) == BFD_MACH_O_MH_MAGIC)
     {
@@ -3472,7 +3493,7 @@ bfd_mach_o_read_header (bfd *abfd, file_
   else
     {
       header->byteorder = BFD_ENDIAN_UNKNOWN;
-      return FALSE;
+      return false;
     }
 
   /* Once the size of the header is known, read the full header.  */
@@ -3480,8 +3501,8 @@ bfd_mach_o_read_header (bfd *abfd, file_
     BFD_MACH_O_HEADER_64_SIZE : BFD_MACH_O_HEADER_SIZE;
 
   if (bfd_seek (abfd, hdr_off, SEEK_SET) != 0
-      || bfd_bread (&raw, size, abfd) != size)
-    return FALSE;
+      || bfd_read (&raw, size, abfd) != size)
+    return false;
 
   header->cputype = (*get32) (raw.cputype);
   header->cpusubtype = (*get32) (raw.cpusubtype);
@@ -3495,46 +3516,37 @@ bfd_mach_o_read_header (bfd *abfd, file_
   else
     header->reserved = 0;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_new_section_hook (bfd *abfd, asection *sec)
 {
-  bfd_mach_o_section *s;
-  unsigned bfdalign = bfd_section_alignment (sec);
-
-  s = bfd_mach_o_get_mach_o_section (sec);
+  bfd_mach_o_section *s = bfd_zalloc (abfd, sizeof (*s));
   if (s == NULL)
-    {
-      flagword bfd_flags;
-      static const mach_o_section_name_xlat * xlat;
-
-      s = (bfd_mach_o_section *) bfd_zalloc (abfd, sizeof (*s));
-      if (s == NULL)
-	return FALSE;
-      sec->used_by_bfd = s;
-      s->bfdsection = sec;
-
-      /* Create the Darwin seg/sect name pair from the bfd name.
-	 If this is a canonical name for which a specific paiting exists
-	 there will also be defined flags, type, attribute and alignment
-	 values.  */
-      xlat = bfd_mach_o_convert_section_name_to_mach_o (abfd, sec, s);
-      if (xlat != NULL)
-	{
-	  s->flags = xlat->macho_sectype | xlat->macho_secattr;
-	  s->align = xlat->sectalign > bfdalign ? xlat->sectalign
-						: bfdalign;
-	  bfd_set_section_alignment (sec, s->align);
-	  bfd_flags = bfd_section_flags (sec);
-	  if (bfd_flags == SEC_NO_FLAGS)
-	    bfd_set_section_flags (sec, xlat->bfd_flags);
-	}
-      else
-	/* Create default flags.  */
-	bfd_mach_o_set_section_flags_from_bfd (abfd, sec);
+    return false;
+  sec->used_by_bfd = s;
+  s->bfdsection = sec;
+
+  /* Create the Darwin seg/sect name pair from the bfd name.
+     If this is a canonical name for which a specific paiting exists
+     there will also be defined flags, type, attribute and alignment
+     values.  */
+  const mach_o_section_name_xlat *xlat
+    = bfd_mach_o_convert_section_name_to_mach_o (abfd, sec, s);
+  if (xlat != NULL)
+    {
+      s->flags = xlat->macho_sectype | xlat->macho_secattr;
+      unsigned bfdalign = bfd_section_alignment (sec);
+      s->align = xlat->sectalign > bfdalign ? xlat->sectalign : bfdalign;
+      bfd_set_section_alignment (sec, s->align);
+      flagword bfd_flags = bfd_section_flags (sec);
+      if (bfd_flags == SEC_NO_FLAGS)
+	bfd_set_section_flags (sec, xlat->bfd_flags);
     }
+  else
+    /* Create default flags.  */
+    bfd_mach_o_set_section_flags_from_bfd (abfd, sec);
 
   return _bfd_generic_new_section_hook (abfd, sec);
 }
@@ -3618,7 +3630,7 @@ bfd_mach_o_read_section_32 (bfd *abfd, u
   asection *sec;
   bfd_mach_o_section *section;
 
-  if (bfd_bread (&raw, BFD_MACH_O_SECTION_SIZE, abfd)
+  if (bfd_read (&raw, BFD_MACH_O_SECTION_SIZE, abfd)
       != BFD_MACH_O_SECTION_SIZE)
     return NULL;
 
@@ -3636,12 +3648,12 @@ bfd_mach_o_read_section_32 (bfd *abfd, u
   section->offset = bfd_h_get_32 (abfd, raw.offset);
   section->align = bfd_h_get_32 (abfd, raw.align);
   /* PR 17512: file: 0017eb76.  */
-  if (section->align > 64)
+  if (section->align >= 31)
     {
       _bfd_error_handler
-	(_("bfd_mach_o_read_section_32: overlarge alignment value: %#lx, "
-	   "using 32 instead"), section->align);
-      section->align = 32;
+	(_("bfd_mach_o_read_section_32: overlarge alignment value: %#lx"),
+	 section->align);
+      section->align = 30;
     }
   section->reloff = bfd_h_get_32 (abfd, raw.reloff);
   section->nreloc = bfd_h_get_32 (abfd, raw.nreloc);
@@ -3662,7 +3674,7 @@ bfd_mach_o_read_section_64 (bfd *abfd, u
   asection *sec;
   bfd_mach_o_section *section;
 
-  if (bfd_bread (&raw, BFD_MACH_O_SECTION_64_SIZE, abfd)
+  if (bfd_read (&raw, BFD_MACH_O_SECTION_64_SIZE, abfd)
       != BFD_MACH_O_SECTION_64_SIZE)
     return NULL;
 
@@ -3679,12 +3691,12 @@ bfd_mach_o_read_section_64 (bfd *abfd, u
   section->size = bfd_h_get_64 (abfd, raw.size);
   section->offset = bfd_h_get_32 (abfd, raw.offset);
   section->align = bfd_h_get_32 (abfd, raw.align);
-  if (section->align > 64)
+  if (section->align >= 63)
     {
       _bfd_error_handler
-	(_("bfd_mach_o_read_section_64: overlarge alignment value: %#lx, "
-	   "using 32 instead"), section->align);
-      section->align = 32;
+	(_("bfd_mach_o_read_section_64: overlarge alignment value: %#lx"),
+	 section->align);
+      section->align = 62;
     }
   section->reloff = bfd_h_get_32 (abfd, raw.reloff);
   section->nreloc = bfd_h_get_32 (abfd, raw.nreloc);
@@ -3707,7 +3719,7 @@ bfd_mach_o_read_section (bfd *abfd, unsi
     return bfd_mach_o_read_section_32 (abfd, prot);
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_symtab_symbol (bfd *abfd,
 			       bfd_mach_o_symtab_command *sym,
 			       bfd_mach_o_asymbol *s,
@@ -3729,13 +3741,13 @@ bfd_mach_o_read_symtab_symbol (bfd *abfd
   BFD_ASSERT (sym->strtab != NULL);
 
   if (bfd_seek (abfd, symoff, SEEK_SET) != 0
-      || bfd_bread (&raw, symwidth, abfd) != symwidth)
+      || bfd_read (&raw, symwidth, abfd) != symwidth)
     {
       _bfd_error_handler
 	/* xgettext:c-format */
 	(_("bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"),
 	 symwidth, symoff);
-      return FALSE;
+      return false;
     }
 
   stroff = bfd_h_get_32 (abfd, raw.n_strx);
@@ -3755,7 +3767,7 @@ bfd_mach_o_read_symtab_symbol (bfd *abfd
 	(_("bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"),
 	 stroff,
 	 sym->strsize);
-      return FALSE;
+      return false;
     }
 
   s->symbol.the_bfd = abfd;
@@ -3862,10 +3874,10 @@ bfd_mach_o_read_symtab_symbol (bfd *abfd
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_read_symtab_strtab (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -3873,11 +3885,11 @@ bfd_mach_o_read_symtab_strtab (bfd *abfd
 
   /* Fail if there is no symtab.  */
   if (sym == NULL)
-    return FALSE;
+    return false;
 
   /* Success if already loaded.  */
   if (sym->strtab)
-    return TRUE;
+    return true;
 
   if (abfd->flags & BFD_IN_MEMORY)
     {
@@ -3888,7 +3900,7 @@ bfd_mach_o_read_symtab_strtab (bfd *abfd
       if ((sym->stroff + sym->strsize) > b->size)
 	{
 	  bfd_set_error (bfd_error_file_truncated);
-	  return FALSE;
+	  return false;
 	}
       sym->strtab = (char *) b->buffer + sym->stroff;
     }
@@ -3896,45 +3908,55 @@ 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);
+	return false;
+      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;
+	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;
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_read_symtab_symbols (bfd *abfd)
 {
   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;
+    return true;
+
+  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;
 
-  sym->symbols = bfd_alloc2 (abfd, sym->nsyms, sizeof (bfd_mach_o_asymbol));
-  if (sym->symbols == NULL)
+      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;
+      return false;
     }
 
   if (!bfd_mach_o_read_symtab_strtab (abfd))
@@ -3944,13 +3966,13 @@ bfd_mach_o_read_symtab_symbols (bfd *abf
     if (!bfd_mach_o_read_symtab_symbol (abfd, sym, &sym->symbols[i], i))
       goto fail;
 
-  return TRUE;
+  return true;
 
  fail:
   bfd_release (abfd, sym->symbols);
   sym->symbols = NULL;
   sym->nsyms = 0;
-  return FALSE;
+  return false;
 }
 
 static const char *
@@ -3990,40 +4012,55 @@ bfd_mach_o_ppc_flavour_string (unsigned
     }
 }
 
-static bfd_boolean
+static unsigned char *
+bfd_mach_o_alloc_and_read (bfd *abfd, file_ptr filepos,
+			   size_t size, size_t extra)
+{
+  if (bfd_seek (abfd, filepos, SEEK_SET) != 0)
+    return NULL;
+  unsigned char *ret = _bfd_alloc_and_read (abfd, size + extra, size);
+  if (ret && extra != 0)
+    memset (ret + size, 0, extra);
+  return ret;
+}
+
+static bool
 bfd_mach_o_read_dylinker (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_dylinker_command *cmd = &command->command.dylinker;
   struct mach_o_str_command_external raw;
   unsigned int nameoff;
-  unsigned int namelen;
+  size_t namelen;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&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, 1);
+  return cmd->name_str != NULL;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_dylib (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
   bfd_mach_o_dylib_command *cmd = &command->command.dylib;
   struct mach_o_dylib_command_external raw;
   unsigned int nameoff;
-  unsigned int namelen;
+  size_t namelen;
+  file_ptr pos;
 
+  if (command->len < sizeof (raw) + 8)
+    return false;
   switch (command->type)
     {
     case BFD_MACH_O_LC_LOAD_DYLIB:
@@ -4035,29 +4072,27 @@ bfd_mach_o_read_dylib (bfd *abfd, bfd_ma
       break;
     default:
       BFD_FAIL ();
-      return FALSE;
+      return false;
     }
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    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, 1);
+  return cmd->name_str != NULL;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_prebound_dylib (bfd *abfd,
 				bfd_mach_o_load_command *command)
 {
@@ -4068,20 +4103,20 @@ bfd_mach_o_read_prebound_dylib (bfd *abf
   unsigned int str_len;
   unsigned char *str;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   nameoff = bfd_h_get_32 (abfd, raw.name);
   modoff = bfd_h_get_32 (abfd, raw.linked_modules);
   if (nameoff > command->len || modoff > command->len)
-    return FALSE;
+    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;
+    return false;
 
   cmd->name_offset = command->offset + nameoff;
   cmd->nmodules = bfd_h_get_32 (abfd, raw.nmodules);
@@ -4089,65 +4124,69 @@ bfd_mach_o_read_prebound_dylib (bfd *abf
 
   cmd->name_str = (char *)str + nameoff - (sizeof (raw) + BFD_MACH_O_LC_SIZE);
   cmd->linked_modules = str + modoff - (sizeof (raw) + BFD_MACH_O_LC_SIZE);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_prebind_cksum (bfd *abfd,
 			       bfd_mach_o_load_command *command)
 {
   bfd_mach_o_prebind_cksum_command *cmd = &command->command.prebind_cksum;
   struct mach_o_prebind_cksum_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->cksum = bfd_get_32 (abfd, raw.cksum);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_twolevel_hints (bfd *abfd,
 				bfd_mach_o_load_command *command)
 {
   bfd_mach_o_twolevel_hints_command *cmd = &command->command.twolevel_hints;
   struct mach_o_twolevel_hints_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->offset = bfd_get_32 (abfd, raw.offset);
   cmd->nhints = bfd_get_32 (abfd, raw.nhints);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_fvmlib (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_fvmlib_command *fvm = &command->command.fvmlib;
   struct mach_o_fvmlib_command_external raw;
   unsigned int nameoff;
-  unsigned int namelen;
+  size_t namelen;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&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, 1);
+  return fvm->name_str != NULL;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_thread (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -4155,6 +4194,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,43 +4203,42 @@ 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;
+	  || bfd_read (&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;
+    return false;
   cmd->nflavours = nflavours;
 
   offset = 8;
   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;
+	  || bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+	return false;
 
       cmd->flavours[nflavours].flavour = bfd_h_get_32 (abfd, raw.flavour);
       cmd->flavours[nflavours].offset = command->offset + offset + sizeof (raw);
@@ -4210,7 +4250,7 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_m
   for (i = 0; i < nflavours; i++)
     {
       asection *bfdsec;
-      unsigned int snamelen;
+      size_t snamelen;
       char *sname;
       const char *flavourstr;
       const char *prefix = "LC_THREAD";
@@ -4236,7 +4276,7 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_m
       snamelen = strlen (prefix) + 1 + 20 + 1 + strlen (flavourstr) + 1;
       sname = bfd_alloc (abfd, snamelen);
       if (sname == NULL)
-	return FALSE;
+	return false;
 
       for (;;)
 	{
@@ -4257,11 +4297,12 @@ bfd_mach_o_read_thread (bfd *abfd, bfd_m
       cmd->section = bfdsec;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-bfd_mach_o_read_dysymtab (bfd *abfd, bfd_mach_o_load_command *command)
+static bool
+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,8 +4312,10 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
   {
     struct mach_o_dysymtab_command_external raw;
 
-    if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-      return FALSE;
+    if (command->len < sizeof (raw) + 8)
+      return false;
+    if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+      return false;
 
     cmd->ilocalsym = bfd_h_get_32 (abfd, raw.ilocalsym);
     cmd->nlocalsym = bfd_h_get_32 (abfd, raw.nlocalsym);
@@ -4299,14 +4342,26 @@ 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;
+	return false;
 
       if (bfd_seek (abfd, cmd->modtaboff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       for (i = 0; i < cmd->nmodtab; i++)
 	{
@@ -4314,8 +4369,8 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
 	  unsigned long v;
 	  unsigned char buf[56];
 
-	  if (bfd_bread ((void *) buf, module_len, abfd) != module_len)
-	    return FALSE;
+	  if (bfd_read (buf, module_len, abfd) != module_len)
+	    return false;
 
 	  module->module_name_idx = bfd_h_get_32 (abfd, buf + 0);
 	  module->iextdefsym = bfd_h_get_32 (abfd, buf + 4);
@@ -4348,22 +4403,34 @@ 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;
+	return false;
 
       if (bfd_seek (abfd, cmd->tocoff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       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))
-	    return FALSE;
+	  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+	    return false;
 
 	  toc->symbol_index = bfd_h_get_32 (abfd, raw.symbol_index);
 	  toc->module_index = bfd_h_get_32 (abfd, raw.module_index);
@@ -4373,22 +4440,33 @@ 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;
+	return false;
 
       if (bfd_seek (abfd, cmd->indirectsymoff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       for (i = 0; i < cmd->nindirectsyms; i++)
 	{
 	  unsigned char raw[4];
 	  unsigned int *is = &cmd->indirect_syms[i];
 
-	  if (bfd_bread (raw, sizeof (raw), abfd) != sizeof (raw))
-	    return FALSE;
+	  if (bfd_read (raw, sizeof (raw), abfd) != sizeof (raw))
+	    return false;
 
 	  *is = bfd_h_get_32 (abfd, raw);
 	}
@@ -4398,22 +4476,34 @@ 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;
+	return false;
 
       if (bfd_seek (abfd, cmd->extrefsymoff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       for (i = 0; i < cmd->nextrefsyms; i++)
 	{
 	  unsigned char raw[4];
 	  bfd_mach_o_dylib_reference *ref = &cmd->ext_refs[i];
 
-	  if (bfd_bread (raw, sizeof (raw), abfd) != sizeof (raw))
-	    return FALSE;
+	  if (bfd_read (raw, sizeof (raw), abfd) != sizeof (raw))
+	    return false;
 
 	  /* Fields isym and flags are written as bit-fields, thus we need
 	     a specific processing for endianness.  */
@@ -4432,14 +4522,15 @@ bfd_mach_o_read_dysymtab (bfd *abfd, bfd
     }
 
   if (mdata->dysymtab)
-    return FALSE;
+    return false;
   mdata->dysymtab = cmd;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-bfd_mach_o_read_symtab (bfd *abfd, bfd_mach_o_load_command *command)
+static bool
+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,8 +4538,10 @@ bfd_mach_o_read_symtab (bfd *abfd, bfd_m
 
   BFD_ASSERT (command->type == BFD_MACH_O_LC_SYMTAB);
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   symtab->symoff = bfd_h_get_32 (abfd, raw.symoff);
   symtab->nsyms = bfd_h_get_32 (abfd, raw.nsyms);
@@ -4457,137 +4550,144 @@ 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;
 
   if (mdata->symtab)
-    return FALSE;
+    return false;
   mdata->symtab = symtab;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_uuid (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_uuid_command *cmd = &command->command.uuid;
 
   BFD_ASSERT (command->type == BFD_MACH_O_LC_UUID);
 
-  if (bfd_bread (cmd->uuid, 16, abfd) != 16)
-    return FALSE;
+  if (command->len < 16 + 8)
+    return false;
+  if (bfd_read (cmd->uuid, 16, abfd) != 16)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_linkedit (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_linkedit_command *cmd = &command->command.linkedit;
   struct mach_o_linkedit_data_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->dataoff = bfd_get_32 (abfd, raw.dataoff);
   cmd->datasize = bfd_get_32 (abfd, raw.datasize);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_str (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_str_command *cmd = &command->command.str;
   struct mach_o_str_command_external raw;
   unsigned long off;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   off = bfd_get_32 (abfd, raw.str);
+  if (off > command->len)
+    return false;
+
   cmd->stroff = command->offset + off;
   cmd->str_len = command->len - off;
-  cmd->str = bfd_alloc (abfd, cmd->str_len);
-  if (cmd->str == NULL)
-    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->str = (char *) bfd_mach_o_alloc_and_read (abfd, cmd->stroff,
+						 cmd->str_len, 1);
+  return cmd->str != NULL;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_dyld_content (bfd *abfd, bfd_mach_o_dyld_info_command *cmd)
 {
   /* 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, 0);
       if (cmd->rebase_content == NULL)
-	return FALSE;
+	return false;
     }
 
   /* 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, 0);
       if (cmd->bind_content == NULL)
-	return FALSE;
+	return false;
     }
 
   /* Read weak bind content.  */
   if (cmd->weak_bind_content == NULL && cmd->weak_bind_size != 0)
     {
-      cmd->weak_bind_content = bfd_mach_o_alloc_and_read
-	(abfd, cmd->weak_bind_off, cmd->weak_bind_size);
+      cmd->weak_bind_content
+	= bfd_mach_o_alloc_and_read (abfd, cmd->weak_bind_off,
+				     cmd->weak_bind_size, 0);
       if (cmd->weak_bind_content == NULL)
-	return FALSE;
+	return false;
     }
 
   /* Read lazy bind content.  */
   if (cmd->lazy_bind_content == NULL && cmd->lazy_bind_size != 0)
     {
-      cmd->lazy_bind_content = bfd_mach_o_alloc_and_read
-	(abfd, cmd->lazy_bind_off, cmd->lazy_bind_size);
+      cmd->lazy_bind_content
+	= bfd_mach_o_alloc_and_read (abfd, cmd->lazy_bind_off,
+				     cmd->lazy_bind_size, 0);
       if (cmd->lazy_bind_content == NULL)
-	return FALSE;
+	return false;
     }
 
   /* Read export content.  */
   if (cmd->export_content == NULL && cmd->export_size != 0)
     {
-      cmd->export_content = bfd_mach_o_alloc_and_read
-	(abfd, cmd->export_off, cmd->export_size);
+      cmd->export_content
+	= bfd_mach_o_alloc_and_read (abfd, cmd->export_off,
+				     cmd->export_size, 0);
       if (cmd->export_content == NULL)
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_dyld_info (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_dyld_info_command *cmd = &command->command.dyld_info;
   struct mach_o_dyld_info_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->rebase_off = bfd_get_32 (abfd, raw.rebase_off);
   cmd->rebase_size = bfd_get_32 (abfd, raw.rebase_size);
@@ -4604,76 +4704,86 @@ bfd_mach_o_read_dyld_info (bfd *abfd, bf
   cmd->export_off = bfd_get_32 (abfd, raw.export_off);
   cmd->export_size = bfd_get_32 (abfd, raw.export_size);
   cmd->export_content = NULL;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_version_min (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_version_min_command *cmd = &command->command.version_min;
   struct mach_o_version_min_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->version = bfd_get_32 (abfd, raw.version);
   cmd->sdk = bfd_get_32 (abfd, raw.sdk);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_encryption_info (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_encryption_info_command *cmd = &command->command.encryption_info;
   struct mach_o_encryption_info_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->cryptoff = bfd_get_32 (abfd, raw.cryptoff);
   cmd->cryptsize = bfd_get_32 (abfd, raw.cryptsize);
   cmd->cryptid = bfd_get_32 (abfd, raw.cryptid);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_encryption_info_64 (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_encryption_info_command *cmd = &command->command.encryption_info;
   struct mach_o_encryption_info_64_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->cryptoff = bfd_get_32 (abfd, raw.cryptoff);
   cmd->cryptsize = bfd_get_32 (abfd, raw.cryptsize);
   cmd->cryptid = bfd_get_32 (abfd, raw.cryptid);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_main (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_main_command *cmd = &command->command.main;
   struct mach_o_entry_point_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->entryoff = bfd_get_64 (abfd, raw.entryoff);
   cmd->stacksize = bfd_get_64 (abfd, raw.stacksize);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_source_version (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_source_version_command *cmd = &command->command.source_version;
   struct mach_o_source_version_command_external raw;
-  bfd_uint64_t ver;
+  uint64_t ver;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   ver = bfd_get_64 (abfd, raw.version);
   /* Note: we use a serie of shift to avoid shift > 32 (for which gcc
@@ -4688,41 +4798,45 @@ bfd_mach_o_read_source_version (bfd *abf
   cmd->b = ver & 0x3ff;
   ver >>= 10;
   cmd->a = ver & 0xffffff;
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_note (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_note_command *cmd = &command->command.note;
   struct mach_o_note_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   memcpy (cmd->data_owner, raw.data_owner, 16);
   cmd->offset = bfd_get_64 (abfd, raw.offset);
   cmd->size = bfd_get_64 (abfd, raw.size);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_build_version (bfd *abfd, bfd_mach_o_load_command *command)
 {
   bfd_mach_o_build_version_command *cmd = &command->command.build_version;
   struct mach_o_build_version_command_external raw;
 
-  if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-    return FALSE;
+  if (command->len < sizeof (raw) + 8)
+    return false;
+  if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+    return false;
 
   cmd->platform = bfd_get_32 (abfd, raw.platform);
   cmd->minos = bfd_get_32 (abfd, raw.minos);
   cmd->sdk = bfd_get_32 (abfd, raw.sdk);
   cmd->ntools = bfd_get_32 (abfd, raw.ntools);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_segment (bfd *abfd,
 			 bfd_mach_o_load_command *command,
 			 unsigned int wide)
@@ -4736,8 +4850,10 @@ bfd_mach_o_read_segment (bfd *abfd,
 
       BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT_64);
 
-      if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-	return FALSE;
+      if (command->len < sizeof (raw) + 8)
+	return false;
+      if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+	return false;
 
       memcpy (seg->segname, raw.segname, 16);
       seg->segname[16] = '\0';
@@ -4757,8 +4873,10 @@ bfd_mach_o_read_segment (bfd *abfd,
 
       BFD_ASSERT (command->type == BFD_MACH_O_LC_SEGMENT);
 
-      if (bfd_bread (&raw, sizeof (raw), abfd) != sizeof (raw))
-	return FALSE;
+      if (command->len < sizeof (raw) + 8)
+	return false;
+      if (bfd_read (&raw, sizeof (raw), abfd) != sizeof (raw))
+	return false;
 
       memcpy (seg->segname, raw.segname, 16);
       seg->segname[16] = '\0';
@@ -4781,29 +4899,30 @@ bfd_mach_o_read_segment (bfd *abfd,
 
       sec = bfd_mach_o_read_section (abfd, seg->initprot, wide);
       if (sec == NULL)
-	return FALSE;
+	return false;
 
       bfd_mach_o_append_section_to_segment
 	(seg, bfd_mach_o_get_mach_o_section (sec));
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_segment_32 (bfd *abfd, bfd_mach_o_load_command *command)
 {
   return bfd_mach_o_read_segment (abfd, command, 0);
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_read_segment_64 (bfd *abfd, bfd_mach_o_load_command *command)
 {
   return bfd_mach_o_read_segment (abfd, command, 1);
 }
 
-static bfd_boolean
-bfd_mach_o_read_command (bfd *abfd, bfd_mach_o_load_command *command)
+static bool
+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;
@@ -4811,40 +4930,42 @@ bfd_mach_o_read_command (bfd *abfd, bfd_
 
   /* Read command type and length.  */
   if (bfd_seek (abfd, mdata->hdr_offset + command->offset, SEEK_SET) != 0
-      || bfd_bread (&raw, BFD_MACH_O_LC_SIZE, abfd) != BFD_MACH_O_LC_SIZE)
-    return FALSE;
+      || bfd_read (&raw, BFD_MACH_O_LC_SIZE, abfd) != BFD_MACH_O_LC_SIZE)
+    return false;
 
   cmd = bfd_h_get_32 (abfd, raw.cmd);
-  command->type =  cmd & ~BFD_MACH_O_LC_REQ_DYLD;
-  command->type_required = cmd & BFD_MACH_O_LC_REQ_DYLD ? TRUE : FALSE;
+  command->type = cmd & ~BFD_MACH_O_LC_REQ_DYLD;
+  command->type_required = (cmd & BFD_MACH_O_LC_REQ_DYLD) != 0;
   command->len = bfd_h_get_32 (abfd, raw.cmdsize);
+  if (command->len < 8 || command->len % 4 != 0)
+    return false;
 
   switch (command->type)
     {
     case BFD_MACH_O_LC_SEGMENT:
       if (!bfd_mach_o_read_segment_32 (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_SEGMENT_64:
       if (!bfd_mach_o_read_segment_64 (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_SYMTAB:
-      if (!bfd_mach_o_read_symtab (abfd, command))
-	return FALSE;
+      if (!bfd_mach_o_read_symtab (abfd, command, filesize))
+	return false;
       break;
     case BFD_MACH_O_LC_SYMSEG:
       break;
     case BFD_MACH_O_LC_THREAD:
     case BFD_MACH_O_LC_UNIXTHREAD:
       if (!bfd_mach_o_read_thread (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_LOAD_DYLINKER:
     case BFD_MACH_O_LC_ID_DYLINKER:
     case BFD_MACH_O_LC_DYLD_ENVIRONMENT:
       if (!bfd_mach_o_read_dylinker (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_LOAD_DYLIB:
     case BFD_MACH_O_LC_LAZY_LOAD_DYLIB:
@@ -4853,16 +4974,16 @@ bfd_mach_o_read_command (bfd *abfd, bfd_
     case BFD_MACH_O_LC_REEXPORT_DYLIB:
     case BFD_MACH_O_LC_LOAD_UPWARD_DYLIB:
       if (!bfd_mach_o_read_dylib (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_PREBOUND_DYLIB:
       if (!bfd_mach_o_read_prebound_dylib (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_LOADFVMLIB:
     case BFD_MACH_O_LC_IDFVMLIB:
       if (!bfd_mach_o_read_fvmlib (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_IDENT:
     case BFD_MACH_O_LC_FVMFILE:
@@ -4876,23 +4997,23 @@ bfd_mach_o_read_command (bfd *abfd, bfd_
     case BFD_MACH_O_LC_SUB_CLIENT:
     case BFD_MACH_O_LC_RPATH:
       if (!bfd_mach_o_read_str (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_DYSYMTAB:
-      if (!bfd_mach_o_read_dysymtab (abfd, command))
-	return FALSE;
+      if (!bfd_mach_o_read_dysymtab (abfd, command, filesize))
+	return false;
       break;
     case BFD_MACH_O_LC_PREBIND_CKSUM:
       if (!bfd_mach_o_read_prebind_cksum (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_TWOLEVEL_HINTS:
       if (!bfd_mach_o_read_twolevel_hints (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_UUID:
       if (!bfd_mach_o_read_uuid (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_CODE_SIGNATURE:
     case BFD_MACH_O_LC_SEGMENT_SPLIT_INFO:
@@ -4900,62 +5021,65 @@ 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;
+	return false;
       break;
     case BFD_MACH_O_LC_ENCRYPTION_INFO:
       if (!bfd_mach_o_read_encryption_info (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_ENCRYPTION_INFO_64:
       if (!bfd_mach_o_read_encryption_info_64 (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_DYLD_INFO:
       if (!bfd_mach_o_read_dyld_info (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_VERSION_MIN_MACOSX:
     case BFD_MACH_O_LC_VERSION_MIN_IPHONEOS:
     case BFD_MACH_O_LC_VERSION_MIN_WATCHOS:
     case BFD_MACH_O_LC_VERSION_MIN_TVOS:
       if (!bfd_mach_o_read_version_min (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_MAIN:
       if (!bfd_mach_o_read_main (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_SOURCE_VERSION:
       if (!bfd_mach_o_read_source_version (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_LINKER_OPTIONS:
       break;
     case BFD_MACH_O_LC_NOTE:
       if (!bfd_mach_o_read_note (abfd, command))
-	return FALSE;
+	return false;
       break;
     case BFD_MACH_O_LC_BUILD_VERSION:
       if (!bfd_mach_o_read_build_version (abfd, command))
-	return FALSE;
+	return false;
       break;
     default:
       command->len = 0;
       _bfd_error_handler (_("%pB: unknown load command %#x"),
 			  abfd, command->type);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
-static void
+static bool
 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;
+  unsigned long csect;
+  size_t amt;
 
   /* Count total number of sections.  */
   mdata->nsects = 0;
@@ -4972,8 +5096,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,9 +5122,11 @@ bfd_mach_o_flatten_sections (bfd *abfd)
 	    mdata->sections[csect++] = sec;
 	}
     }
+  BFD_ASSERT (mdata->nsects == csect);
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_scan_start_address (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
@@ -5018,13 +5150,13 @@ bfd_mach_o_scan_start_address (bfd *abfd
 	  {
 	    abfd->start_address = main_cmd->entryoff
 	      + (text_sect->addr - text_sect->offset);
-	    return TRUE;
+	    return true;
 	  }
       }
 
   /* An object file has no start address, so do not fail if not found.  */
   if (thr == NULL)
-    return TRUE;
+    return true;
 
   /* FIXME: create a subtarget hook ?  */
   for (i = 0; i < thr->nflavours; i++)
@@ -5035,8 +5167,8 @@ bfd_mach_o_scan_start_address (bfd *abfd
 	  unsigned char buf[4];
 
 	  if (bfd_seek (abfd, thr->flavours[i].offset + 40, SEEK_SET) != 0
-	      || bfd_bread (buf, 4, abfd) != 4)
-	    return FALSE;
+	      || bfd_read (buf, 4, abfd) != 4)
+	    return false;
 
 	  abfd->start_address = bfd_h_get_32 (abfd, buf);
 	}
@@ -5046,8 +5178,8 @@ bfd_mach_o_scan_start_address (bfd *abfd
 	  unsigned char buf[4];
 
 	  if (bfd_seek (abfd, thr->flavours[i].offset + 0, SEEK_SET) != 0
-	      || bfd_bread (buf, 4, abfd) != 4)
-	    return FALSE;
+	      || bfd_read (buf, 4, abfd) != 4)
+	    return false;
 
 	  abfd->start_address = bfd_h_get_32 (abfd, buf);
 	}
@@ -5057,8 +5189,8 @@ bfd_mach_o_scan_start_address (bfd *abfd
 	  unsigned char buf[8];
 
 	  if (bfd_seek (abfd, thr->flavours[i].offset + 0, SEEK_SET) != 0
-	      || bfd_bread (buf, 8, abfd) != 8)
-	    return FALSE;
+	      || bfd_read (buf, 8, abfd) != 8)
+	    return false;
 
 	  abfd->start_address = bfd_h_get_64 (abfd, buf);
 	}
@@ -5068,17 +5200,17 @@ bfd_mach_o_scan_start_address (bfd *abfd
 	  unsigned char buf[8];
 
 	  if (bfd_seek (abfd, thr->flavours[i].offset + (16 * 8), SEEK_SET) != 0
-	      || bfd_bread (buf, 8, abfd) != 8)
-	    return FALSE;
+	      || bfd_read (buf, 8, abfd) != 8)
+	    return false;
 
 	  abfd->start_address = bfd_h_get_64 (abfd, buf);
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_set_arch_mach (bfd *abfd,
 			  enum bfd_architecture arch,
 			  unsigned long machine)
@@ -5090,19 +5222,19 @@ bfd_mach_o_set_arch_mach (bfd *abfd,
   if (arch != bed->arch
       && arch != bfd_arch_unknown
       && bed->arch != bfd_arch_unknown)
-    return FALSE;
+    return false;
 
   return bfd_default_set_arch_mach (abfd, arch, machine);
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_scan (bfd *abfd,
 		 bfd_mach_o_header *header,
 		 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) ?
@@ -5125,31 +5257,45 @@ bfd_mach_o_scan (bfd *abfd,
       break;
     }
 
-  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 */
 	(_("bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"),
 	 header->cputype, header->cpusubtype);
-      return FALSE;
+      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;
+	return false;
 
       for (i = 0; i < header->ncmds; i++)
 	{
@@ -5165,27 +5311,31 @@ bfd_mach_o_scan (bfd *abfd,
 	      cur->offset = prev->offset + prev->len;
 	    }
 
-	  if (!bfd_mach_o_read_command (abfd, cur))
-	    return FALSE;
+	  if (!bfd_mach_o_read_command (abfd, cur, filesize))
+	    {
+	      bfd_set_error (bfd_error_wrong_format);
+	      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;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_mkobject_init (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata = NULL;
 
   mdata = bfd_zalloc (abfd, sizeof (bfd_mach_o_data_struct));
   if (mdata == NULL)
-    return FALSE;
+    return false;
   abfd->tdata.mach_o_data = mdata;
 
   mdata->header.magic = 0;
@@ -5202,16 +5352,16 @@ bfd_mach_o_mkobject_init (bfd *abfd)
   mdata->sections = NULL;
   mdata->dyn_reloc_cache = NULL;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_gen_mkobject (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata;
 
   if (!bfd_mach_o_mkobject_init (abfd))
-    return FALSE;
+    return false;
 
   mdata = bfd_mach_o_get_data (abfd);
   mdata->header.magic = BFD_MACH_O_MH_MAGIC;
@@ -5220,14 +5370,14 @@ bfd_mach_o_gen_mkobject (bfd *abfd)
   mdata->header.byteorder = abfd->xvec->byteorder;
   mdata->header.version = 1;
 
-  return TRUE;
+  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 +5404,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 +5419,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
@@ -5288,28 +5438,31 @@ bfd_mach_o_header_p (bfd *abfd,
 
   mdata = (bfd_mach_o_data_struct *) bfd_zalloc (abfd, sizeof (*mdata));
   if (mdata == NULL)
-    goto fail;
+    return NULL;
+  abfd->tdata.mach_o_data = mdata;
+
   mdata->hdr_offset = hdr_off;
 
   if (!bfd_mach_o_scan (abfd, &header, mdata))
-    goto wrong;
+    {
+      bfd_release (abfd, mdata);
+      return NULL;
+    }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  wrong:
   bfd_set_error (bfd_error_wrong_format);
-
- fail:
   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,16 +5512,38 @@ typedef struct mach_o_fat_data_struct
   mach_o_fat_archentry *archentries;
 } mach_o_fat_data_struct;
 
-const bfd_target *
+/* Check for overlapping archive elements.  Note that we can't allow
+   multiple elements at the same offset even if one is empty, because
+   bfd_mach_o_fat_openr_next_archived_file assume distinct offsets.  */
+static bool
+overlap_previous (const mach_o_fat_archentry *elt, unsigned long i)
+{
+  unsigned long j = i;
+  while (j-- != 0)
+    if (elt[i].offset == elt[j].offset
+	|| (elt[i].offset > elt[j].offset
+	    ? elt[i].offset - elt[j].offset < elt[j].size
+	    : elt[j].offset - elt[i].offset < elt[i].size))
+      return true;
+  return false;
+}
+
+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;
+  ufile_ptr filesize;
 
   if (bfd_seek (abfd, 0, SEEK_SET) != 0
-      || bfd_bread (&hdr, sizeof (hdr), abfd) != sizeof (hdr))
-    goto error;
+      || bfd_read (&hdr, sizeof (hdr), abfd) != sizeof (hdr))
+    {
+      if (bfd_get_error () != bfd_error_system_call)
+	goto wrong;
+      goto error;
+    }
 
   adata = bfd_alloc (abfd, sizeof (mach_o_fat_data_struct));
   if (adata == NULL)
@@ -5377,38 +5552,57 @@ bfd_mach_o_fat_archive_p (bfd *abfd)
   adata->magic = bfd_getb32 (hdr.magic);
   adata->nfat_arch = bfd_getb32 (hdr.nfat_arch);
   if (adata->magic != 0xcafebabe)
-    goto error;
+    goto wrong;
   /* Avoid matching Java bytecode files, which have the same magic number.
      In the Java bytecode file format this field contains the JVM version,
      which starts at 43.0.  */
   if (adata->nfat_arch > 30)
-    goto error;
+    goto wrong;
 
-  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;
 
+  filesize = bfd_get_file_size (abfd);
   for (i = 0; i < adata->nfat_arch; i++)
     {
       struct mach_o_fat_arch_external arch;
-      if (bfd_bread (&arch, sizeof (arch), abfd) != sizeof (arch))
+      if (bfd_read (&arch, sizeof (arch), abfd) != sizeof (arch))
 	goto error;
       adata->archentries[i].cputype = bfd_getb32 (arch.cputype);
       adata->archentries[i].cpusubtype = bfd_getb32 (arch.cpusubtype);
       adata->archentries[i].offset = bfd_getb32 (arch.offset);
       adata->archentries[i].size = bfd_getb32 (arch.size);
       adata->archentries[i].align = bfd_getb32 (arch.align);
+      if ((filesize != 0
+	   && (adata->archentries[i].offset > filesize
+	       || (adata->archentries[i].size
+		   > filesize - adata->archentries[i].offset)))
+	  || (adata->archentries[i].offset
+	      < sizeof (hdr) + adata->nfat_arch * sizeof (arch))
+	  || overlap_previous (adata->archentries, i))
+	{
+	  bfd_release (abfd, adata);
+	  bfd_set_error (bfd_error_malformed_archive);
+	  return NULL;
+	}
     }
 
   abfd->tdata.mach_o_fat_data = adata;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
+ wrong:
+  bfd_set_error (bfd_error_wrong_format);
  error:
   if (adata != NULL)
     bfd_release (abfd, adata);
-  bfd_set_error (bfd_error_wrong_format);
   return NULL;
 }
 
@@ -5416,7 +5610,7 @@ bfd_mach_o_fat_archive_p (bfd *abfd)
    ARCH_TYPE/ARCH_SUBTYPE and corresponding entry in header is ENTRY.
    Set arelt_data and origin fields too.  */
 
-static bfd_boolean
+static bool
 bfd_mach_o_fat_member_init (bfd *abfd,
 			    enum bfd_architecture arch_type,
 			    unsigned long arch_subtype,
@@ -5425,35 +5619,32 @@ 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)
-    return FALSE;
+    return false;
   areltdata->parsed_size = entry->size;
   abfd->arelt_data = areltdata;
   abfd->iostream = NULL;
   abfd->origin = entry->offset;
-  return TRUE;
+  return true;
 }
 
 bfd *
@@ -5598,11 +5789,11 @@ bfd_mach_o_fat_extract (bfd *abfd,
   return NULL;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_fat_close_and_cleanup (bfd *abfd)
 {
   _bfd_unlink_from_archive_parent (abfd);
-  return TRUE;
+  return true;
 }
 
 int
@@ -5752,6 +5943,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;
@@ -5771,7 +5964,7 @@ bfd_mach_o_core_fetch_environment (bfd *
 		  return -1;
 		}
 
-	      nread = bfd_bread (buf, size, abfd);
+	      nread = bfd_read (buf, size, abfd);
 
 	      if (nread != size)
 		{
@@ -5783,7 +5976,8 @@ bfd_mach_o_core_fetch_environment (bfd *
 		{
 		  unsigned long val;
 
-		  val = *((unsigned long *) (buf + size - offset));
+		  val = bfd_get_32(abfd, buf + size - offset);
+
 		  if (! found_nonnull)
 		    {
 		      if (val != 0)
@@ -5797,6 +5991,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);
@@ -5826,9 +6022,9 @@ bfd_mach_o_core_file_failing_command (bf
   int ret;
 
   ret = bfd_mach_o_core_fetch_environment (abfd, &buf, &len);
-  if (ret < 0)
+  if (ret < 0 || len == 0)
     return NULL;
-
+  buf[len - 1] = 0;
   return (char *) buf;
 }
 
@@ -5844,13 +6040,13 @@ bfd_mach_o_lookup_uuid_command (bfd *abf
   bfd_mach_o_load_command *uuid_cmd = NULL;
   int ncmd = bfd_mach_o_lookup_command (abfd, BFD_MACH_O_LC_UUID, &uuid_cmd);
   if (ncmd != 1 || uuid_cmd == NULL)
-    return FALSE;
+    return NULL;
   return &uuid_cmd->command.uuid;
 }
 
 /* Return true if ABFD is a dSYM file and its UUID matches UUID_CMD. */
 
-static bfd_boolean
+static bool
 bfd_mach_o_dsym_for_uuid_p (bfd *abfd, const bfd_mach_o_uuid_command *uuid_cmd)
 {
   bfd_mach_o_uuid_command *dsym_uuid_cmd;
@@ -5859,22 +6055,22 @@ bfd_mach_o_dsym_for_uuid_p (bfd *abfd, c
   BFD_ASSERT (uuid_cmd);
 
   if (!bfd_check_format (abfd, bfd_object))
-    return FALSE;
+    return false;
 
   if (bfd_get_flavour (abfd) != bfd_target_mach_o_flavour
       || bfd_mach_o_get_data (abfd) == NULL
       || bfd_mach_o_get_data (abfd)->header.filetype != BFD_MACH_O_MH_DSYM)
-    return FALSE;
+    return false;
 
   dsym_uuid_cmd = bfd_mach_o_lookup_uuid_command (abfd);
   if (dsym_uuid_cmd == NULL)
-    return FALSE;
+    return false;
 
   if (memcmp (uuid_cmd->uuid, dsym_uuid_cmd->uuid,
 	      sizeof (uuid_cmd->uuid)) != 0)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Find a BFD in DSYM_FILENAME which matches ARCH and UUID_CMD.
@@ -5923,12 +6119,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 +6134,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));
@@ -5952,7 +6151,7 @@ bfd_mach_o_follow_dsym (bfd *abfd)
   return dsym_bfd;
 }
 
-bfd_boolean
+bool
 bfd_mach_o_find_nearest_line (bfd *abfd,
 			      asymbol **symbols,
 			      asection *section,
@@ -5964,7 +6163,7 @@ bfd_mach_o_find_nearest_line (bfd *abfd,
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
   if (mdata == NULL)
-    return FALSE;
+    return false;
   switch (mdata->header.filetype)
     {
     case BFD_MACH_O_MH_OBJECT:
@@ -5985,12 +6184,12 @@ bfd_mach_o_find_nearest_line (bfd *abfd,
 	  if (! _bfd_dwarf2_slurp_debug_info (abfd, mdata->dsym_bfd,
 					      dwarf_debug_sections, symbols,
 					      &mdata->dwarf2_find_line_info,
-					      FALSE))
-	    return FALSE;
+					      false))
+	    return false;
 	}
       break;
     default:
-      return FALSE;
+      return false;
     }
   return _bfd_dwarf2_find_nearest_line (abfd, symbols, NULL, section, offset,
 					filename_ptr, functionname_ptr,
@@ -5999,14 +6198,12 @@ bfd_mach_o_find_nearest_line (bfd *abfd,
 					&mdata->dwarf2_find_line_info);
 }
 
-bfd_boolean
+bool
 bfd_mach_o_close_and_cleanup (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
   if (bfd_get_format (abfd) == bfd_object && mdata != NULL)
     {
-      _bfd_dwarf2_cleanup_debug_info (abfd, &mdata->dwarf2_find_line_info);
-      bfd_mach_o_free_cached_info (abfd);
       if (mdata->dsym_bfd != NULL)
 	{
 	  bfd *fat_bfd = mdata->dsym_bfd->my_archive;
@@ -6020,8 +6217,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;
@@ -6036,20 +6233,29 @@ bfd_mach_o_close_and_cleanup (bfd *abfd)
   return _bfd_generic_close_and_cleanup (abfd);
 }
 
-bfd_boolean
-bfd_mach_o_free_cached_info (bfd *abfd)
+bool
+bfd_mach_o_bfd_free_cached_info (bfd *abfd)
 {
-  bfd_mach_o_data_struct *mdata = bfd_mach_o_get_data (abfd);
-  asection *asect;
-  free (mdata->dyn_reloc_cache);
-  mdata->dyn_reloc_cache = NULL;
-  for (asect = abfd->sections; asect != NULL; asect = asect->next)
+  bfd_mach_o_data_struct *mdata;
+
+  if ((bfd_get_format (abfd) == bfd_object
+       || bfd_get_format (abfd) == bfd_core)
+      && (mdata = bfd_mach_o_get_data (abfd)) != NULL)
     {
-      free (asect->relocation);
-      asect->relocation = NULL;
+      _bfd_dwarf2_cleanup_debug_info (abfd, &mdata->dwarf2_find_line_info);
+      free (mdata->dyn_reloc_cache);
+      mdata->dyn_reloc_cache = NULL;
+
+      for (asection *asect = abfd->sections; asect; asect = asect->next)
+	{
+	  free (asect->relocation);
+	  asect->relocation = NULL;
+	}
     }
 
-  return TRUE;
+  /* Do not call _bfd_generic_bfd_free_cached_info here.
+     bfd_mach_o_close_and_cleanup uses tdata.  */
+  return true;
 }
 
 #define bfd_mach_o_bfd_reloc_type_lookup _bfd_norelocs_bfd_reloc_type_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.20200303/bfd/mach-o.h ./bfd/mach-o.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mach-o.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mach-o.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Mach-O support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -545,8 +545,8 @@ bfd_mach_o_encryption_info_command;
 
 typedef struct bfd_mach_o_main_command
 {
-  bfd_uint64_t entryoff;
-  bfd_uint64_t stacksize;
+  uint64_t entryoff;
+  uint64_t stacksize;
 }
 bfd_mach_o_main_command;
 
@@ -563,8 +563,8 @@ bfd_mach_o_source_version_command;
 typedef struct bfd_mach_o_note_command
 {
   char data_owner[16];
-  bfd_uint64_t offset;
-  bfd_uint64_t size;
+  uint64_t offset;
+  uint64_t size;
 }
 bfd_mach_o_note_command;
 
@@ -591,7 +591,7 @@ typedef struct bfd_mach_o_load_command
 
   /* Type and required flag.  */
   bfd_mach_o_load_command_type type;
-  bfd_boolean type_required;
+  bool type_required;
 
   /* Offset and length in the file.  */
   unsigned int offset;
@@ -677,24 +677,25 @@ bfd_mach_o_xlat_name;
 #define bfd_mach_o_get_mach_o_section(sec) \
   ((bfd_mach_o_section *)(sec)->used_by_bfd)
 
-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 *);
+bool bfd_mach_o_valid (bfd *);
+bool bfd_mach_o_mkobject_init (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);
-int bfd_mach_o_lookup_command (bfd *, bfd_mach_o_load_command_type, bfd_mach_o_load_command **);
-bfd_boolean bfd_mach_o_new_section_hook (bfd *, asection *);
-bfd_boolean bfd_mach_o_write_contents (bfd *);
-bfd_boolean bfd_mach_o_bfd_copy_private_symbol_data (bfd *, asymbol *,
-						     bfd *, asymbol *);
-bfd_boolean bfd_mach_o_bfd_copy_private_section_data (bfd *, asection *,
-						      bfd *, asection *);
-bfd_boolean bfd_mach_o_bfd_copy_private_header_data (bfd *, bfd *);
-bfd_boolean bfd_mach_o_bfd_set_private_flags (bfd *, flagword);
-bfd_boolean bfd_mach_o_bfd_print_private_bfd_data (bfd *, void *);
+bool bfd_mach_o_set_arch_mach (bfd *, enum bfd_architecture, unsigned long);
+int bfd_mach_o_lookup_command (bfd *, bfd_mach_o_load_command_type,
+			       bfd_mach_o_load_command **);
+bool bfd_mach_o_new_section_hook (bfd *, asection *);
+bool bfd_mach_o_write_contents (bfd *);
+bool bfd_mach_o_bfd_copy_private_symbol_data (bfd *, asymbol *,
+					      bfd *, asymbol *);
+bool bfd_mach_o_bfd_copy_private_section_data (bfd *, asection *,
+					       bfd *, asection *,
+					       struct bfd_link_info *);
+bool bfd_mach_o_bfd_copy_private_header_data (bfd *, bfd *);
+bool bfd_mach_o_bfd_set_private_flags (bfd *, flagword);
+bool bfd_mach_o_bfd_print_private_bfd_data (bfd *, void *);
 long bfd_mach_o_get_symtab_upper_bound (bfd *);
 long bfd_mach_o_canonicalize_symtab (bfd *, asymbol **);
 long bfd_mach_o_get_synthetic_symtab (bfd *, long, asymbol **, long,
@@ -711,13 +712,13 @@ unsigned long bfd_mach_o_stack_addr (enu
 int bfd_mach_o_core_fetch_environment (bfd *, unsigned char **, unsigned int *);
 char *bfd_mach_o_core_file_failing_command (bfd *);
 int bfd_mach_o_core_file_failing_signal (bfd *);
-bfd_boolean bfd_mach_o_core_file_matches_executable_p (bfd *, bfd *);
+bool 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_boolean bfd_mach_o_build_commands (bfd *);
-bfd_boolean bfd_mach_o_set_section_contents (bfd *, asection *, const void *,
-					     file_ptr, bfd_size_type);
+bfd_cleanup bfd_mach_o_header_p (bfd *, file_ptr, bfd_mach_o_filetype,
+				 bfd_mach_o_cpu_type);
+bool bfd_mach_o_build_commands (bfd *);
+bool bfd_mach_o_set_section_contents (bfd *, asection *, const void *,
+				      file_ptr, bfd_size_type);
 unsigned int bfd_mach_o_version (bfd *);
 
 unsigned int bfd_mach_o_get_section_type_from_name (bfd *, const char *);
@@ -725,29 +726,31 @@ unsigned int bfd_mach_o_get_section_attr
 
 void bfd_mach_o_convert_section_name_to_bfd (bfd *, const char *, const char *,
 					     const char **, flagword *);
-bfd_boolean bfd_mach_o_find_nearest_line (bfd *, asymbol **,
+bool bfd_mach_o_find_nearest_line (bfd *, asymbol **,
 					  asection *, bfd_vma,
 					  const char **, const char **,
 					  unsigned int *, unsigned int *);
+#define bfd_mach_o_find_nearest_line_with_alt \
+  _bfd_nosymbols_find_nearest_line_with_alt
 #define bfd_mach_o_find_line _bfd_nosymbols_find_line
-bfd_boolean bfd_mach_o_close_and_cleanup (bfd *);
-bfd_boolean bfd_mach_o_free_cached_info (bfd *);
+bool bfd_mach_o_close_and_cleanup (bfd *);
+bool bfd_mach_o_bfd_free_cached_info (bfd *);
 
 unsigned int bfd_mach_o_section_get_nbr_indirect (bfd *, bfd_mach_o_section *);
 unsigned int bfd_mach_o_section_get_entry_size (bfd *, bfd_mach_o_section *);
-bfd_boolean bfd_mach_o_read_symtab_symbols (bfd *);
-bfd_boolean bfd_mach_o_read_symtab_strtab (bfd *abfd);
+bool bfd_mach_o_read_symtab_symbols (bfd *);
+bool bfd_mach_o_read_symtab_strtab (bfd *abfd);
 
 bfd_vma bfd_mach_o_get_base_address (bfd *);
 
 void bfd_mach_o_swap_in_non_scattered_reloc (bfd *, bfd_mach_o_reloc_info *,
 					     unsigned char *);
-bfd_boolean bfd_mach_o_canonicalize_non_scattered_reloc (bfd *, bfd_mach_o_reloc_info *, arelent *, asymbol **);
-bfd_boolean bfd_mach_o_pre_canonicalize_one_reloc (bfd *, struct mach_o_reloc_info_external *, bfd_mach_o_reloc_info *, arelent *, asymbol **);
+bool bfd_mach_o_canonicalize_non_scattered_reloc (bfd *, bfd_mach_o_reloc_info *, arelent *, asymbol **);
+bool bfd_mach_o_pre_canonicalize_one_reloc (bfd *, struct mach_o_reloc_info_external *, bfd_mach_o_reloc_info *, arelent *, asymbol **);
 
 /* A placeholder in case we need to suppress emitting the dysymtab for some
    reason (e.g. compatibility with older system versions).  */
-#define bfd_mach_o_should_emit_dysymtab(x) TRUE
+#define bfd_mach_o_should_emit_dysymtab(x) true
 
 extern const bfd_mach_o_xlat_name bfd_mach_o_section_attribute_name[];
 extern const bfd_mach_o_xlat_name bfd_mach_o_section_type_name[];
@@ -781,13 +784,13 @@ typedef struct bfd_mach_o_backend_data
 {
   enum bfd_architecture arch;
   bfd_vma page_size;
-  bfd_boolean (*_bfd_mach_o_canonicalize_one_reloc)
+  bool (*_bfd_mach_o_canonicalize_one_reloc)
   (bfd *, struct mach_o_reloc_info_external *, arelent *, asymbol **, arelent *);
-  bfd_boolean (*_bfd_mach_o_swap_reloc_out)(arelent *, bfd_mach_o_reloc_info *);
-  bfd_boolean (*_bfd_mach_o_print_thread)(bfd *, bfd_mach_o_thread_flavour *,
+  bool (*_bfd_mach_o_swap_reloc_out)(arelent *, bfd_mach_o_reloc_info *);
+  bool (*_bfd_mach_o_print_thread)(bfd *, bfd_mach_o_thread_flavour *,
 					  void *, char *);
   const mach_o_segment_name_xlat *segsec_names_xlat;
-  bfd_boolean (*bfd_mach_o_section_type_valid_for_target) (unsigned long);
+  bool (*bfd_mach_o_section_type_valid_for_target) (unsigned long);
 }
 bfd_mach_o_backend_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.20200303/bfd/mach-o-i386.c ./bfd/mach-o-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mach-o-i386.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mach-o-i386.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Intel i386 Mach-O support for BFD.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,26 +29,26 @@
 #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,
 			      BFD_MACH_O_MH_CORE, BFD_MACH_O_CPU_TYPE_I386);
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_i386_mkobject (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata;
 
   if (!bfd_mach_o_mkobject_init (abfd))
-    return FALSE;
+    return false;
 
   mdata = bfd_mach_o_get_data (abfd);
   mdata->header.magic = BFD_MACH_O_MH_MAGIC;
@@ -57,61 +57,61 @@ bfd_mach_o_i386_mkobject (bfd *abfd)
   mdata->header.byteorder = BFD_ENDIAN_LITTLE;
   mdata->header.version = 1;
 
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type i386_howto_table[]=
 {
   /* 0 */
-  HOWTO(BFD_RELOC_32, 0, 2, 32, FALSE, 0,
+  HOWTO(BFD_RELOC_32, 0, 4, 32, false, 0,
 	complain_overflow_bitfield,
 	NULL, "32",
-	FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(BFD_RELOC_16, 0, 1, 16, FALSE, 0,
+	false, 0xffffffff, 0xffffffff, false),
+  HOWTO(BFD_RELOC_16, 0, 2, 16, false, 0,
 	complain_overflow_bitfield,
 	NULL, "16",
-	FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO(BFD_RELOC_8, 0, 0, 8, FALSE, 0,
+	false, 0xffff, 0xffff, false),
+  HOWTO(BFD_RELOC_8, 0, 1, 8, false, 0,
 	complain_overflow_bitfield,
 	NULL, "8",
-	FALSE, 0xff, 0xff, FALSE),
-  HOWTO(BFD_RELOC_32_PCREL, 0, 2, 32, TRUE, 0,
+	false, 0xff, 0xff, false),
+  HOWTO(BFD_RELOC_32_PCREL, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "DISP32",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
+	false, 0xffffffff, 0xffffffff, true),
   /* 4 */
-  HOWTO(BFD_RELOC_16_PCREL, 0, 1, 16, TRUE, 0,
+  HOWTO(BFD_RELOC_16_PCREL, 0, 2, 16, true, 0,
 	complain_overflow_bitfield,
 	NULL, "DISP16",
-	FALSE, 0xffff, 0xffff, TRUE),
-  HOWTO(BFD_RELOC_MACH_O_SECTDIFF, 0, 2, 32, FALSE, 0,
+	false, 0xffff, 0xffff, true),
+  HOWTO(BFD_RELOC_MACH_O_SECTDIFF, 0, 4, 32, false, 0,
 	complain_overflow_bitfield,
 	NULL, "SECTDIFF_32",
-	FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(BFD_RELOC_MACH_O_LOCAL_SECTDIFF, 0, 2, 32, FALSE, 0,
+	false, 0xffffffff, 0xffffffff, false),
+  HOWTO(BFD_RELOC_MACH_O_LOCAL_SECTDIFF, 0, 4, 32, false, 0,
 	complain_overflow_bitfield,
 	NULL, "LSECTDIFF_32",
-	FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(BFD_RELOC_MACH_O_PAIR, 0, 2, 32, FALSE, 0,
+	false, 0xffffffff, 0xffffffff, false),
+  HOWTO(BFD_RELOC_MACH_O_PAIR, 0, 4, 32, false, 0,
 	complain_overflow_bitfield,
 	NULL, "PAIR_32",
-	FALSE, 0xffffffff, 0xffffffff, FALSE),
+	false, 0xffffffff, 0xffffffff, false),
   /* 8 */
-  HOWTO(BFD_RELOC_MACH_O_SECTDIFF, 0, 1, 16, FALSE, 0,
+  HOWTO(BFD_RELOC_MACH_O_SECTDIFF, 0, 2, 16, false, 0,
 	complain_overflow_bitfield,
 	NULL, "SECTDIFF_16",
-	FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO(BFD_RELOC_MACH_O_LOCAL_SECTDIFF, 0, 1, 16, FALSE, 0,
+	false, 0xffff, 0xffff, false),
+  HOWTO(BFD_RELOC_MACH_O_LOCAL_SECTDIFF, 0, 2, 16, false, 0,
 	complain_overflow_bitfield,
 	NULL, "LSECTDIFF_16",
-	FALSE, 0xffff, 0xffff, FALSE),
-  HOWTO(BFD_RELOC_MACH_O_PAIR, 0, 1, 16, FALSE, 0,
+	false, 0xffff, 0xffff, false),
+  HOWTO(BFD_RELOC_MACH_O_PAIR, 0, 2, 16, false, 0,
 	complain_overflow_bitfield,
 	NULL, "PAIR_16",
-	FALSE, 0xffff, 0xffff, FALSE),
+	false, 0xffff, 0xffff, false),
 };
 
-static bfd_boolean
+static bool
 bfd_mach_o_i386_canonicalize_one_reloc (bfd *       abfd,
 					struct mach_o_reloc_info_external * raw,
 					arelent *   res,
@@ -121,7 +121,7 @@ bfd_mach_o_i386_canonicalize_one_reloc (
   bfd_mach_o_reloc_info reloc;
 
   if (!bfd_mach_o_pre_canonicalize_one_reloc (abfd, raw, &reloc, res, syms))
-    return FALSE;
+    return false;
 
   if (reloc.r_scattered)
     {
@@ -130,44 +130,44 @@ bfd_mach_o_i386_canonicalize_one_reloc (
 	case BFD_MACH_O_GENERIC_RELOC_PAIR:
 	  /* PR 21813: Check for a corrupt PAIR reloc at the start.  */
 	  if (res == res_base)
-	    return FALSE;
+	    return false;
 	  if (reloc.r_length == 2)
 	    {
 	      res->howto = &i386_howto_table[7];
 	      res->address = res[-1].address;
-	      return TRUE;
+	      return true;
 	    }
 	  else if (reloc.r_length == 1)
 	    {
 	      res->howto = &i386_howto_table[10];
 	      res->address = res[-1].address;
-	      return TRUE;
+	      return true;
 	    }
-	  return FALSE;
+	  return false;
 	case BFD_MACH_O_GENERIC_RELOC_SECTDIFF:
 	  if (reloc.r_length == 2)
 	    {
 	      res->howto = &i386_howto_table[5];
-	      return TRUE;
+	      return true;
 	    }
 	  else if (reloc.r_length == 1)
 	    {
 	      res->howto = &i386_howto_table[8];
-	      return TRUE;
+	      return true;
 	    }
-	  return FALSE;
+	  return false;
 	case BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF:
 	  if (reloc.r_length == 2)
 	    {
 	      res->howto = &i386_howto_table[6];
-	      return TRUE;
+	      return true;
 	    }
 	  else if (reloc.r_length == 1)
 	    {
 	      res->howto = &i386_howto_table[9];
-	      return TRUE;
+	      return true;
 	    }
-	  return FALSE;
+	  return false;
 	default:
 	  break;
 	}
@@ -181,30 +181,30 @@ bfd_mach_o_i386_canonicalize_one_reloc (
 	    {
 	    case 0: /* len = 0, pcrel = 0  */
 	      res->howto = &i386_howto_table[2];
-	      return TRUE;
+	      return true;
 	    case 2: /* len = 1, pcrel = 0  */
 	      res->howto = &i386_howto_table[1];
-	      return TRUE;
+	      return true;
 	    case 3: /* len = 1, pcrel = 1  */
 	      res->howto = &i386_howto_table[4];
-	      return TRUE;
+	      return true;
 	    case 4: /* len = 2, pcrel = 0  */
 	      res->howto = &i386_howto_table[0];
-	      return TRUE;
+	      return true;
 	    case 5: /* len = 2, pcrel = 1  */
 	      res->howto = &i386_howto_table[3];
-	      return TRUE;
+	      return true;
 	    default:
-	      return FALSE;
+	      return false;
 	    }
 	default:
 	  break;
 	}
     }
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_i386_swap_reloc_out (arelent *rel, bfd_mach_o_reloc_info *rinfo)
 {
   rinfo->r_address = rel->address;
@@ -218,7 +218,7 @@ bfd_mach_o_i386_swap_reloc_out (arelent
       rinfo->r_scattered = 0;
       rinfo->r_type = BFD_MACH_O_GENERIC_RELOC_VANILLA;
       rinfo->r_pcrel = rel->howto->pc_relative;
-      rinfo->r_length = rel->howto->size; /* Correct in practice.  */
+      rinfo->r_length = bfd_log2 (bfd_get_reloc_size (rel->howto));
       if ((*rel->sym_ptr_ptr)->flags & BSF_SECTION_SYM)
 	{
 	  rinfo->r_extern = 0;
@@ -235,7 +235,7 @@ bfd_mach_o_i386_swap_reloc_out (arelent
       rinfo->r_scattered = 1;
       rinfo->r_type = BFD_MACH_O_GENERIC_RELOC_SECTDIFF;
       rinfo->r_pcrel = 0;
-      rinfo->r_length = rel->howto->size;
+      rinfo->r_length = bfd_log2 (bfd_get_reloc_size (rel->howto));
       rinfo->r_extern = 0;
       rinfo->r_value = rel->addend;
       break;
@@ -243,7 +243,7 @@ bfd_mach_o_i386_swap_reloc_out (arelent
       rinfo->r_scattered = 1;
       rinfo->r_type = BFD_MACH_O_GENERIC_RELOC_LOCAL_SECTDIFF;
       rinfo->r_pcrel = 0;
-      rinfo->r_length = rel->howto->size;
+      rinfo->r_length = bfd_log2 (bfd_get_reloc_size (rel->howto));
       rinfo->r_extern = 0;
       rinfo->r_value = rel->addend;
       break;
@@ -252,14 +252,14 @@ bfd_mach_o_i386_swap_reloc_out (arelent
       rinfo->r_scattered = 1;
       rinfo->r_type = BFD_MACH_O_GENERIC_RELOC_PAIR;
       rinfo->r_pcrel = 0;
-      rinfo->r_length = rel->howto->size;
+      rinfo->r_length = bfd_log2 (bfd_get_reloc_size (rel->howto));
       rinfo->r_extern = 0;
       rinfo->r_value = rel->addend;
       break;
     default:
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type *
@@ -281,7 +281,7 @@ bfd_mach_o_i386_bfd_reloc_name_lookup (b
   return NULL;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_i386_print_thread (bfd *abfd, bfd_mach_o_thread_flavour *thread,
 			      void *vfile, char *buf)
 {
@@ -291,7 +291,7 @@ bfd_mach_o_i386_print_thread (bfd *abfd,
     {
     case BFD_MACH_O_x86_THREAD_STATE:
       if (thread->size < (8 + 16 * 4))
-	return FALSE;
+	return false;
       fprintf (file, "   x86_THREAD_STATE:\n");
       fprintf (file, "    flavor: 0x%08lx  count: 0x%08lx\n",
 	       (unsigned long)bfd_get_32 (abfd, buf + 0),
@@ -316,18 +316,18 @@ bfd_mach_o_i386_print_thread (bfd *abfd,
 	       (unsigned long)bfd_get_32 (abfd, buf + 60),
 	       (unsigned long)bfd_get_32 (abfd, buf + 64),
 	       (unsigned long)bfd_get_32 (abfd, buf + 68));
-      return TRUE;
+      return true;
     case BFD_MACH_O_x86_FLOAT_STATE:
       if (thread->size < 8)
-	return FALSE;
+	return false;
       fprintf (file, "   x86_FLOAT_STATE:\n");
       fprintf (file, "    flavor: 0x%08lx  count: 0x%08lx\n",
 	       (unsigned long)bfd_get_32 (abfd, buf + 0),
 	       (unsigned long)bfd_get_32 (abfd, buf + 4));
-      return TRUE;
+      return true;
     case BFD_MACH_O_x86_EXCEPTION_STATE:
       if (thread->size < 8 + 3 * 4)
-	return FALSE;
+	return false;
       fprintf (file, "   x86_EXCEPTION_STATE:\n");
       fprintf (file, "    flavor: 0x%08lx  count: 0x%08lx\n",
 	       (unsigned long)bfd_get_32 (abfd, buf + 0),
@@ -336,11 +336,11 @@ bfd_mach_o_i386_print_thread (bfd *abfd,
 	       (unsigned long)bfd_get_32 (abfd, buf + 8),
 	       (unsigned long)bfd_get_32 (abfd, buf + 12),
 	       (unsigned long)bfd_get_32 (abfd, buf + 16));
-      return TRUE;
+      return true;
     default:
       break;
     }
-  return FALSE;
+  return false;
 }
 
 static const mach_o_section_name_xlat text_section_names_xlat[] =
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mach-o-target.c ./bfd/mach-o-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mach-o-target.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mach-o-target.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Mach-O support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -24,8 +24,6 @@
 #ifndef MACH_O_TARGET_COMMON_DEFINED
 #define MACH_O_TARGET_COMMON_DEFINED
 
-#define bfd_mach_o_bfd_free_cached_info		      _bfd_generic_bfd_free_cached_info
-#define bfd_mach_o_get_section_contents_in_window     _bfd_generic_get_section_contents_in_window
 #define bfd_mach_o_bfd_print_private_bfd_data	      bfd_mach_o_bfd_print_private_bfd_data
 #define bfd_mach_o_bfd_is_target_special_symbol	      _bfd_bool_bfd_asymbol_false
 #define bfd_mach_o_bfd_is_local_label_name	      bfd_generic_is_local_label_name
@@ -136,6 +134,7 @@ const bfd_target TARGET_NAME =
   ' ',				/* ar_pad_char.  */
   16,				/* ar_max_namelen.  */
   TARGET_PRIORITY,	/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
 #if TARGET_BIG_ENDIAN
   bfd_getb64, bfd_getb_signed_64, bfd_putb64,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/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.20200303/bfd/mach-o-x86-64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mach-o-x86-64.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,26 +29,26 @@
 #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,
 			      BFD_MACH_O_MH_CORE, BFD_MACH_O_CPU_TYPE_X86_64);
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_x86_64_mkobject (bfd *abfd)
 {
   bfd_mach_o_data_struct *mdata;
 
   if (!bfd_mach_o_mkobject_init (abfd))
-    return FALSE;
+    return false;
 
   mdata = bfd_mach_o_get_data (abfd);
   mdata->header.magic = BFD_MACH_O_MH_MAGIC_64;
@@ -58,7 +58,7 @@ bfd_mach_o_x86_64_mkobject (bfd *abfd)
   mdata->header.byteorder = BFD_ENDIAN_LITTLE;
   mdata->header.version = 2;
 
-  return TRUE;
+  return true;
 }
 
 /* In case we're on a 32-bit machine, construct a 64-bit "-1" value.  */
@@ -67,64 +67,64 @@ bfd_mach_o_x86_64_mkobject (bfd *abfd)
 static reloc_howto_type x86_64_howto_table[]=
 {
   /* 0 */
-  HOWTO(BFD_RELOC_64, 0, 4, 64, FALSE, 0,
+  HOWTO(BFD_RELOC_64, 0, 8, 64, false, 0,
 	complain_overflow_bitfield,
 	NULL, "64",
-	FALSE, MINUS_ONE, MINUS_ONE, FALSE),
-  HOWTO(BFD_RELOC_32, 0, 2, 32, FALSE, 0,
+	false, MINUS_ONE, MINUS_ONE, false),
+  HOWTO(BFD_RELOC_32, 0, 4, 32, false, 0,
 	complain_overflow_bitfield,
 	NULL, "32",
-	FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(BFD_RELOC_32_PCREL, 0, 2, 32, TRUE, 0,
+	false, 0xffffffff, 0xffffffff, false),
+  HOWTO(BFD_RELOC_32_PCREL, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "DISP32",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_1, 0, 2, 32, TRUE, 0,
+	false, 0xffffffff, 0xffffffff, true),
+  HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_1, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "DISP32_1",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
+	false, 0xffffffff, 0xffffffff, true),
   /* 4 */
-  HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_2, 0, 2, 32, TRUE, 0,
+  HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_2, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "DISP32_2",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_4, 0, 2, 32, TRUE, 0,
+	false, 0xffffffff, 0xffffffff, true),
+  HOWTO(BFD_RELOC_MACH_O_X86_64_PCREL32_4, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "DISP32_4",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(BFD_RELOC_MACH_O_X86_64_BRANCH32, 0, 2, 32, TRUE, 0,
+	false, 0xffffffff, 0xffffffff, true),
+  HOWTO(BFD_RELOC_MACH_O_X86_64_BRANCH32, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "BRANCH32",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(BFD_RELOC_MACH_O_X86_64_GOT_LOAD, 0, 2, 32, TRUE, 0,
+	false, 0xffffffff, 0xffffffff, true),
+  HOWTO(BFD_RELOC_MACH_O_X86_64_GOT_LOAD, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "GOT_LOAD",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
+	false, 0xffffffff, 0xffffffff, true),
   /* 8 */
-  HOWTO(BFD_RELOC_MACH_O_SUBTRACTOR32, 0, 2, 32, FALSE, 0,
+  HOWTO(BFD_RELOC_MACH_O_SUBTRACTOR32, 0, 4, 32, false, 0,
 	complain_overflow_bitfield,
 	NULL, "SUBTRACTOR32",
-	FALSE, 0xffffffff, 0xffffffff, FALSE),
-  HOWTO(BFD_RELOC_MACH_O_SUBTRACTOR64, 0, 4, 64, FALSE, 0,
+	false, 0xffffffff, 0xffffffff, false),
+  HOWTO(BFD_RELOC_MACH_O_SUBTRACTOR64, 0, 8, 64, false, 0,
 	complain_overflow_bitfield,
 	NULL, "SUBTRACTOR64",
-	FALSE, MINUS_ONE, MINUS_ONE, FALSE),
-  HOWTO(BFD_RELOC_MACH_O_X86_64_GOT, 0, 2, 32, TRUE, 0,
+	false, MINUS_ONE, MINUS_ONE, false),
+  HOWTO(BFD_RELOC_MACH_O_X86_64_GOT, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "GOT",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
-  HOWTO(BFD_RELOC_MACH_O_X86_64_BRANCH8, 0, 0, 8, TRUE, 0,
+	false, 0xffffffff, 0xffffffff, true),
+  HOWTO(BFD_RELOC_MACH_O_X86_64_BRANCH8, 0, 1, 8, true, 0,
 	complain_overflow_bitfield,
 	NULL, "BRANCH8",
-	FALSE, 0xff, 0xff, TRUE),
+	false, 0xff, 0xff, true),
   /* 12 */
-  HOWTO(BFD_RELOC_MACH_O_X86_64_TLV, 0, 2, 32, TRUE, 0,
+  HOWTO(BFD_RELOC_MACH_O_X86_64_TLV, 0, 4, 32, true, 0,
 	complain_overflow_bitfield,
 	NULL, "TLV",
-	FALSE, 0xffffffff, 0xffffffff, TRUE),
+	false, 0xffffffff, 0xffffffff, true),
 };
 
-static bfd_boolean
+static bool
 bfd_mach_o_x86_64_canonicalize_one_reloc (bfd *       abfd,
 					  struct mach_o_reloc_info_external * raw,
 					  arelent *   res,
@@ -134,111 +134,111 @@ bfd_mach_o_x86_64_canonicalize_one_reloc
   bfd_mach_o_reloc_info reloc;
 
   if (!bfd_mach_o_pre_canonicalize_one_reloc (abfd, raw, &reloc, res, syms))
-    return FALSE;
+    return false;
 
   /* On x86-64, scattered relocs are not used.  */
   if (reloc.r_scattered)
-    return FALSE;
+    return false;
 
   switch (reloc.r_type)
     {
     case BFD_MACH_O_X86_64_RELOC_UNSIGNED:
       if (reloc.r_pcrel)
-	return FALSE;
+	return false;
       switch (reloc.r_length)
 	{
 	case 2:
 	  res->howto = &x86_64_howto_table[1];
-	  return TRUE;
+	  return true;
 	case 3:
 	  res->howto = &x86_64_howto_table[0];
-	  return TRUE;
+	  return true;
 	default:
-	  return FALSE;
+	  return false;
 	}
     case BFD_MACH_O_X86_64_RELOC_SIGNED:
       if (reloc.r_length == 2 && reloc.r_pcrel)
 	{
 	  res->howto = &x86_64_howto_table[2];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_X86_64_RELOC_BRANCH:
       if (!reloc.r_pcrel)
-	return FALSE;
+	return false;
       switch (reloc.r_length)
 	{
 	case 2:
 	  res->howto = &x86_64_howto_table[6];
-	  return TRUE;
+	  return true;
 	default:
-	  return FALSE;
+	  return false;
 	}
       break;
     case BFD_MACH_O_X86_64_RELOC_GOT_LOAD:
       if (reloc.r_length == 2 && reloc.r_pcrel && reloc.r_extern)
 	{
 	  res->howto = &x86_64_howto_table[7];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_X86_64_RELOC_GOT:
       if (reloc.r_length == 2 && reloc.r_pcrel && reloc.r_extern)
 	{
 	  res->howto = &x86_64_howto_table[10];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_X86_64_RELOC_SUBTRACTOR:
       if (reloc.r_pcrel)
-	return FALSE;
+	return false;
       switch (reloc.r_length)
 	{
 	case 2:
 	  res->howto = &x86_64_howto_table[8];
-	  return TRUE;
+	  return true;
 	case 3:
 	  res->howto = &x86_64_howto_table[9];
-	  return TRUE;
+	  return true;
 	default:
-	  return FALSE;
+	  return false;
 	}
       break;
     case BFD_MACH_O_X86_64_RELOC_SIGNED_1:
       if (reloc.r_length == 2 && reloc.r_pcrel)
 	{
 	  res->howto = &x86_64_howto_table[3];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_X86_64_RELOC_SIGNED_2:
       if (reloc.r_length == 2 && reloc.r_pcrel)
 	{
 	  res->howto = &x86_64_howto_table[4];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_X86_64_RELOC_SIGNED_4:
       if (reloc.r_length == 2 && reloc.r_pcrel)
 	{
 	  res->howto = &x86_64_howto_table[5];
-	  return TRUE;
+	  return true;
 	}
       break;
     case BFD_MACH_O_X86_64_RELOC_TLV:
       if (reloc.r_length == 2 && reloc.r_pcrel && reloc.r_extern)
 	{
 	  res->howto = &x86_64_howto_table[12];
-	  return TRUE;
+	  return true;
 	}
       break;
     default:
-      return FALSE;
+      return false;
     }
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_x86_64_swap_reloc_out (arelent *rel, bfd_mach_o_reloc_info *rinfo)
 {
   rinfo->r_address = rel->address;
@@ -306,7 +306,7 @@ bfd_mach_o_x86_64_swap_reloc_out (arelen
       rinfo->r_length = 2;
       break;
     default:
-      return FALSE;
+      return false;
     }
   if ((*rel->sym_ptr_ptr)->flags & BSF_SECTION_SYM)
     {
@@ -319,7 +319,7 @@ bfd_mach_o_x86_64_swap_reloc_out (arelen
       rinfo->r_extern = 1;
       rinfo->r_value = (*rel->sym_ptr_ptr)->udata.i;
     }
-  return TRUE;
+  return true;
 }
 
 static reloc_howto_type *
@@ -343,14 +343,14 @@ bfd_mach_o_x86_64_bfd_reloc_name_lookup
   return NULL;
 }
 
-static bfd_boolean
+static bool
 bfd_mach_o_section_type_valid_for_x86_64 (unsigned long val)
 {
   if (val == BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS
       || val == BFD_MACH_O_S_LAZY_SYMBOL_POINTERS
       || val == BFD_MACH_O_S_SYMBOL_STUBS)
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 /* We want to bump the alignment of some 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.20200303/bfd/MAINTAINERS ./bfd/MAINTAINERS
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/MAINTAINERS	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/MAINTAINERS	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 See ../binutils/MAINTAINERS
 
-Copyright (C) 2012-2019 Free Software Foundation, Inc.
+Copyright (C) 2012-2025 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.20200303/bfd/Makefile.am ./bfd/Makefile.am
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/Makefile.am	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/Makefile.am	2026-03-05 02:07:20.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-2025 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
@@ -17,13 +17,18 @@
 # <http://www.gnu.org/licenses/>.
 #
 
-AUTOMAKE_OPTIONS = no-dist foreign
+AUTOMAKE_OPTIONS = no-dist foreign info-in-builddir no-texinfo.tex
 ACLOCAL_AMFLAGS = -I . -I .. -I ../config
 
+MOSTLYCLEANFILES =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
 INCDIR = $(srcdir)/../include
 CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
 
-SUBDIRS = doc po
+SUBDIRS = po
 
 bfddocdir = doc
 
@@ -33,7 +38,7 @@ bfdlibdir = @bfdlibdir@
 bfdincludedir = @bfdincludedir@
 bfdlib_LTLIBRARIES = libbfd.la
 bfdinclude_HEADERS = $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
-		     bfd_stdint.h $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
+		     $(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
 else !INSTALL_LIBBFD
 # Empty these so that the respective installation directories will not be created.
 bfdlibdir =
@@ -52,8 +57,8 @@ ZLIBINC = @zlibinc@
 
 WARN_CFLAGS = @WARN_CFLAGS@
 NO_WERROR = @NO_WERROR@
-AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC)
-AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"'
+AM_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC) $(ZSTD_CFLAGS)
+AM_CPPFLAGS = -DBINDIR='"$(bindir)"' -DLIBDIR='"$(libdir)"' @LARGEFILE_CPPFLAGS@
 if PLUGINS
 bfdinclude_HEADERS += $(INCDIR)/plugin-api.h
 LIBDL = @lt_cv_dlopen_libs@
@@ -70,18 +75,18 @@ BFD_H = bfd.h
 # need two copies of the executable, one to download and one for the
 # debugger).
 BFD32_LIBS = \
-	archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo cache.lo \
+	archive.lo archures.lo bfd.lo bfdio.lo cache.lo \
 	coff-bfd.lo compress.lo corefile.lo elf-properties.lo format.lo \
-	hash.lo init.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
+	hash.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
 	section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo \
 	binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 
 BFD64_LIBS = archive64.lo
 
 BFD32_LIBS_CFILES = \
-	archive.c archures.c bfd.c bfdio.c bfdwin.c cache.c coff-bfd.c \
+	archive.c archures.c bfd.c bfdio.c cache.c coff-bfd.c \
 	compress.c corefile.c elf-properties.c format.c hash.c \
-	init.c libbfd.c linker.c merge.c opncls.c reloc.c \
+	libbfd.c linker.c merge.c opncls.c reloc.c \
 	section.c simple.c stab-syms.c stabs.c syms.c targets.c \
 	binary.c ihex.c srec.c tekhex.c verilog.c
 
@@ -92,6 +97,7 @@ BFD64_LIBS_CFILES = archive64.c
 ALL_MACHINES = \
 	cpu-aarch64.lo \
 	cpu-alpha.lo \
+	cpu-amdgcn.lo \
 	cpu-arc.lo \
 	cpu-arm.lo \
 	cpu-avr.lo \
@@ -111,23 +117,22 @@ ALL_MACHINES = \
 	cpu-h8300.lo \
 	cpu-hppa.lo \
 	cpu-i386.lo \
-	cpu-iamcu.lo \
-	cpu-l1om.lo \
-	cpu-k1om.lo \
 	cpu-ia64.lo \
+	cpu-iamcu.lo \
 	cpu-ip2k.lo \
 	cpu-iq2000.lo \
+	cpu-kvx.lo \
 	cpu-lm32.lo \
+	cpu-loongarch.lo \
 	cpu-m10200.lo \
 	cpu-m10300.lo \
 	cpu-m32c.lo \
 	cpu-m32r.lo \
 	cpu-m68hc11.lo \
 	cpu-m68hc12.lo \
+	cpu-m68k.lo \
 	cpu-m9s12x.lo \
-	cpu-s12z.lo \
 	cpu-m9s12xg.lo \
-	cpu-m68k.lo \
 	cpu-mcore.lo \
 	cpu-mep.lo \
 	cpu-metag.lo \
@@ -139,18 +144,17 @@ ALL_MACHINES = \
 	cpu-mt.lo \
 	cpu-nds32.lo \
 	cpu-nfp.lo \
-	cpu-nios2.lo \
 	cpu-ns32k.lo \
 	cpu-or1k.lo \
 	cpu-pdp11.lo \
 	cpu-pj.lo \
-	cpu-plugin.lo \
 	cpu-powerpc.lo \
 	cpu-pru.lo \
-	cpu-rs6000.lo \
 	cpu-riscv.lo \
 	cpu-rl78.lo \
+	cpu-rs6000.lo \
 	cpu-rx.lo \
+	cpu-s12z.lo \
 	cpu-s390.lo \
 	cpu-score.lo \
 	cpu-sh.lo \
@@ -160,7 +164,6 @@ ALL_MACHINES = \
 	cpu-tic4x.lo \
 	cpu-tic54x.lo \
 	cpu-tic6x.lo \
-	cpu-tic80.lo \
 	cpu-tilegx.lo \
 	cpu-tilepro.lo \
 	cpu-v850.lo \
@@ -168,7 +171,6 @@ ALL_MACHINES = \
 	cpu-vax.lo \
 	cpu-visium.lo \
 	cpu-wasm32.lo \
-	cpu-xc16x.lo \
 	cpu-xgate.lo \
 	cpu-xstormy16.lo \
 	cpu-xtensa.lo \
@@ -178,6 +180,7 @@ ALL_MACHINES = \
 ALL_MACHINES_CFILES = \
 	cpu-aarch64.c \
 	cpu-alpha.c \
+	cpu-amdgcn.c \
 	cpu-arc.c \
 	cpu-arm.c \
 	cpu-avr.c \
@@ -197,23 +200,22 @@ ALL_MACHINES_CFILES = \
 	cpu-h8300.c \
 	cpu-hppa.c \
 	cpu-i386.c \
-	cpu-iamcu.c \
-	cpu-l1om.c \
-	cpu-k1om.c \
 	cpu-ia64.c \
+	cpu-iamcu.c \
 	cpu-ip2k.c \
 	cpu-iq2000.c \
+	cpu-kvx.c \
 	cpu-lm32.c \
+	cpu-loongarch.c \
 	cpu-m10200.c \
 	cpu-m10300.c \
 	cpu-m32c.c \
 	cpu-m32r.c \
 	cpu-m68hc11.c \
 	cpu-m68hc12.c \
+	cpu-m68k.c \
 	cpu-m9s12x.c \
-	cpu-s12z.c \
 	cpu-m9s12xg.c \
-	cpu-m68k.c \
 	cpu-mcore.c \
 	cpu-mep.c \
 	cpu-metag.c \
@@ -226,17 +228,16 @@ ALL_MACHINES_CFILES = \
 	cpu-nds32.c \
 	cpu-nfp.c \
 	cpu-ns32k.c \
-	cpu-nios2.c \
 	cpu-or1k.c \
 	cpu-pdp11.c \
 	cpu-pj.c \
-	cpu-plugin.c \
 	cpu-powerpc.c \
 	cpu-pru.c \
-	cpu-rs6000.c \
 	cpu-riscv.c \
 	cpu-rl78.c \
+	cpu-rs6000.c \
 	cpu-rx.c \
+	cpu-s12z.c \
 	cpu-s390.c \
 	cpu-score.c \
 	cpu-sh.c \
@@ -246,7 +247,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 \
@@ -254,7 +254,6 @@ ALL_MACHINES_CFILES = \
 	cpu-vax.c \
 	cpu-visium.c \
 	cpu-wasm32.c \
-	cpu-xc16x.c \
 	cpu-xgate.c \
 	cpu-xstormy16.c \
 	cpu-xtensa.c \
@@ -266,7 +265,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 +276,6 @@ BFD32_BACKENDS = \
 	coff-tic30.lo \
 	coff-tic4x.lo \
 	coff-tic54x.lo \
-	coff-tic80.lo \
 	coff-z80.lo \
 	coff-z8k.lo \
 	coffgen.lo \
@@ -292,7 +289,7 @@ BFD32_BACKENDS = \
 	elf-ifunc.lo \
 	elf-m10200.lo \
 	elf-m10300.lo \
-	elf-nacl.lo \
+	elf-sframe.lo \
 	elf-strtab.lo \
 	elf-vxworks.lo \
 	elf.lo \
@@ -316,7 +313,6 @@ BFD32_BACKENDS = \
 	elf32-h8300.lo \
 	elf32-hppa.lo \
 	elf32-i386.lo \
-	elfxx-x86.lo \
 	elf32-ip2k.lo \
 	elf32-iq2000.lo \
 	elf32-lm32.lo \
@@ -326,7 +322,6 @@ BFD32_BACKENDS = \
 	elf32-m68hc12.lo \
 	elf32-m68hc1x.lo \
 	elf32-m68k.lo \
-	elf32-s12z.lo \
 	elf32-mcore.lo \
 	elf32-mep.lo \
 	elf32-metag.lo \
@@ -335,13 +330,13 @@ BFD32_BACKENDS = \
 	elf32-msp430.lo \
 	elf32-mt.lo \
 	elf32-nds32.lo \
-	elf32-nios2.lo \
 	elf32-or1k.lo \
 	elf32-pj.lo \
 	elf32-ppc.lo \
 	elf32-pru.lo \
 	elf32-rl78.lo \
 	elf32-rx.lo \
+	elf32-s12z.lo \
 	elf32-s390.lo \
 	elf32-sh.lo \
 	elf32-sparc.lo \
@@ -353,36 +348,36 @@ BFD32_BACKENDS = \
 	elf32-vax.lo \
 	elf32-visium.lo \
 	elf32-wasm32.lo \
-	elf32-xc16x.lo \
 	elf32-xgate.lo \
 	elf32-xstormy16.lo \
 	elf32-xtensa.lo \
+	elf32-z80.lo \
 	elf32.lo \
 	elflink.lo \
 	elfxx-sparc.lo \
 	elfxx-tilegx.lo \
+	elfxx-x86.lo \
 	i386aout.lo \
 	i386bsd.lo \
 	i386lynx.lo \
 	i386msdos.lo \
-	mach-o.lo \
-	mach-o-i386.lo \
 	mach-o-arm.lo \
+	mach-o-i386.lo \
+	mach-o.lo \
 	ns32knetbsd.lo \
 	pc532-mach.lo \
+	pdb.lo \
 	pdp11.lo \
 	pe-arm-wince.lo \
 	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 \
@@ -396,13 +391,13 @@ BFD32_BACKENDS = \
 	wasm-module.lo \
 	xcofflink.lo \
 	xsym.lo \
+	xtensa-dynconfig.lo \
 	xtensa-isa.lo \
 	xtensa-modules.lo
 
 BFD32_BACKENDS_CFILES = \
 	aout-cris.c \
 	aout-ns32k.c \
-	aout-tic30.c \
 	aout32.c \
 	cf-i386lynx.c \
 	coff-go32.c \
@@ -414,7 +409,6 @@ BFD32_BACKENDS_CFILES = \
 	coff-tic30.c \
 	coff-tic4x.c \
 	coff-tic54x.c \
-	coff-tic80.c \
 	coff-z80.c \
 	coff-z8k.c \
 	coffgen.c \
@@ -428,7 +422,7 @@ BFD32_BACKENDS_CFILES = \
 	elf-ifunc.c \
 	elf-m10200.c \
 	elf-m10300.c \
-	elf-nacl.c \
+	elf-sframe.c \
 	elf-strtab.c \
 	elf-vxworks.c \
 	elf.c \
@@ -452,7 +446,6 @@ BFD32_BACKENDS_CFILES = \
 	elf32-h8300.c \
 	elf32-hppa.c \
 	elf32-i386.c \
-	elfxx-x86.c \
 	elf32-ip2k.c \
 	elf32-iq2000.c \
 	elf32-lm32.c \
@@ -462,7 +455,6 @@ BFD32_BACKENDS_CFILES = \
 	elf32-m68hc12.c \
 	elf32-m68hc1x.c \
 	elf32-m68k.c \
-	elf32-s12z.c \
 	elf32-mcore.c \
 	elf32-mep.c \
 	elf32-metag.c \
@@ -471,13 +463,13 @@ BFD32_BACKENDS_CFILES = \
 	elf32-msp430.c \
 	elf32-mt.c \
 	elf32-nds32.c \
-	elf32-nios2.c \
 	elf32-or1k.c \
 	elf32-pj.c \
 	elf32-ppc.c \
 	elf32-pru.c \
 	elf32-rl78.c \
 	elf32-rx.c \
+	elf32-s12z.c \
 	elf32-s390.c \
 	elf32-sh.c \
 	elf32-sparc.c \
@@ -489,36 +481,36 @@ BFD32_BACKENDS_CFILES = \
 	elf32-vax.c \
 	elf32-visium.c \
 	elf32-wasm32.c \
-	elf32-xc16x.c \
 	elf32-xgate.c \
 	elf32-xstormy16.c \
 	elf32-xtensa.c \
+	elf32-z80.c \
 	elf32.c \
 	elflink.c \
 	elfxx-sparc.c \
 	elfxx-tilegx.c \
+	elfxx-x86.c \
 	i386aout.c \
 	i386bsd.c \
 	i386lynx.c \
 	i386msdos.c \
-	mach-o.c \
-	mach-o-i386.c \
 	mach-o-arm.c \
+	mach-o-i386.c \
+	mach-o.c \
 	ns32knetbsd.c \
 	pc532-mach.c \
+	pdb.c \
 	pdp11.c \
 	pe-arm-wince.c \
 	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 \
@@ -531,6 +523,7 @@ BFD32_BACKENDS_CFILES = \
 	wasm-module.c \
 	xcofflink.c \
 	xsym.c \
+	xtensa-dynconfig.c \
 	xtensa-isa.c \
 	xtensa-modules.c
 
@@ -540,45 +533,59 @@ BFD32_BACKENDS_CFILES = \
 # elf32-ia64.c requires a 64-bit bfd_vma, and hence can not be put in
 # BFD32_BACKENDS.
 BFD64_BACKENDS = \
-	elf32-aarch64.lo \
-	elf64-aarch64.lo \
-	elfxx-aarch64.lo \
 	aix5ppc-core.lo \
 	aout64.lo \
 	coff-alpha.lo \
 	coff-x86_64.lo \
 	coff64-rs6000.lo \
+	elf32-aarch64.lo \
 	elf32-ia64.lo \
+	elf32-kvx.lo \
+	elf32-loongarch.lo \
 	elf32-mips.lo \
+	elf32-riscv.lo \
 	elf32-score.lo \
 	elf32-score7.lo \
+	elf64-aarch64.lo \
 	elf64-alpha.lo \
+	elf64-amdgcn.lo \
+	elf64-bpf.lo \
 	elf64-gen.lo \
 	elf64-hppa.lo \
-	elf64-ia64.lo \
 	elf64-ia64-vms.lo \
-	elfxx-ia64.lo \
-	elfn32-mips.lo \
+	elf64-ia64.lo \
+	elf64-kvx.lo \
+	elf64-loongarch.lo \
 	elf64-mips.lo \
-	elfxx-mips.lo \
 	elf64-mmix.lo \
 	elf64-nfp.lo \
 	elf64-ppc.lo \
-	elf32-riscv.lo \
 	elf64-riscv.lo \
-	elfxx-riscv.lo \
 	elf64-s390.lo \
 	elf64-sparc.lo \
 	elf64-tilegx.lo \
 	elf64-x86-64.lo \
-	elfxx-x86.lo \
-	elf64-bpf.lo \
 	elf64.lo \
+	elfn32-mips.lo \
+	elfxx-aarch64.lo \
+	elfxx-ia64.lo \
+	elfxx-kvx.lo \
+	elfxx-loongarch.lo \
+	elfxx-mips.lo \
+	elfxx-riscv.lo \
+	elfxx-x86.lo \
 	mach-o-aarch64.lo \
 	mach-o-x86-64.lo \
 	mmo.lo \
+	pe-aarch64.lo \
+	pe-aarch64igen.lo \
+	pe-loongarch64igen.lo \
+	pe-riscv64igen.lo \
 	pe-x86_64.lo \
+	pei-aarch64.lo \
 	pei-ia64.lo \
+	pei-loongarch64.lo \
+	pei-riscv64.lo \
 	pei-x86_64.lo \
 	pepigen.lo \
 	pex64igen.lo \
@@ -594,6 +601,8 @@ BFD64_BACKENDS_CFILES = \
 	elf32-score.c \
 	elf32-score7.c \
 	elf64-alpha.c \
+	elf64-amdgcn.c \
+	elf64-bpf.c \
 	elf64-gen.c \
 	elf64-hppa.c \
 	elf64-ia64-vms.c \
@@ -605,24 +614,28 @@ BFD64_BACKENDS_CFILES = \
 	elf64-sparc.c \
 	elf64-tilegx.c \
 	elf64-x86-64.c \
-	elfxx-x86.c \
-	elf64-bpf.c \
 	elf64.c \
 	elfn32-mips.c \
 	elfxx-aarch64.c \
 	elfxx-ia64.c \
+	elfxx-kvx.c \
+	elfxx-loongarch.c \
 	elfxx-mips.c \
 	elfxx-riscv.c \
+	elfxx-x86.c \
 	mach-o-aarch64.c \
 	mach-o-x86-64.c \
 	mmo.c \
+	pe-aarch64.c \
 	pe-x86_64.c \
+	pei-aarch64.c \
 	pei-ia64.c \
+	pei-loongarch64.c \
+	pei-riscv64.c \
 	pei-x86_64.c \
 	vms-alpha.c
 
 OPTIONAL_BACKENDS = \
-	aix386-core.lo \
 	cisco-core.lo \
 	hpux-core.lo \
 	irix-core.lo \
@@ -630,11 +643,9 @@ OPTIONAL_BACKENDS = \
 	netbsd-core.lo \
 	osf-core.lo \
 	rs6000-core.lo \
-	sco5-core.lo \
 	trad-core.lo
 
 OPTIONAL_BACKENDS_CFILES = \
-	aix386-core.c \
 	cisco-core.c \
 	hpux-core.c \
 	irix-core.c \
@@ -642,7 +653,6 @@ OPTIONAL_BACKENDS_CFILES = \
 	netbsd-core.c \
 	osf-core.c \
 	rs6000-core.c \
-	sco5-core.c \
 	trad-core.c
 
 # Reconfigure if config.bfd or configure.host changes.
@@ -674,9 +684,12 @@ SOURCE_CFILES = \
 
 BUILD_CFILES = \
 	elf32-aarch64.c elf64-aarch64.c \
+	elf32-kvx.c elf64-kvx.c \
 	elf32-ia64.c elf64-ia64.c \
+	elf32-loongarch.c elf64-loongarch.c \
 	elf32-riscv.c elf64-riscv.c \
-	peigen.c pepigen.c pex64igen.c
+	peigen.c pepigen.c pex64igen.c pe-aarch64igen.c pe-loongarch64igen.c \
+	pe-riscv64igen.c
 
 CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
 
@@ -685,18 +698,18 @@ CFILES = $(SOURCE_CFILES) $(BUILD_CFILES
 SOURCE_HFILES = \
 	aout-target.h aoutx.h arc-got.h arc-plt.h \
 	coff-arm.h coff-bfd.h coffcode.h coffswap.h \
-	cpu-aarch64.h cpu-arm.h cpu-h8300.h cpu-m68k.h \
+	cpu-aarch64.h cpu-arm.h cpu-h8300.h cpu-m68k.h cpu-riscv.h \
 	ecoff-bfd.h ecoffswap.h \
 	elf32-arm.h elf32-avr.h elf32-bfin.h elf32-cr16.h elf32-csky.h \
 	elf32-dlx.h elf32-hppa.h elf32-m68hc1x.h elf32-m68k.h \
-	elf32-metag.h elf32-nds32.h elf32-nios2.h elf32-ppc.h \
+	elf32-metag.h elf32-nds32.h elf32-ppc.h \
 	elf32-rx.h elf32-score.h elf32-sh-relocs.h elf32-spu.h \
 	elf32-tic6x.h elf32-tilegx.h elf32-tilepro.h elf32-v850.h \
 	elf64-hppa.h elf64-ppc.h elf64-tilegx.h \
 	elf-bfd.h elfcode.h elfcore.h elf-hppa.h elf-linker-x86.h \
-	elf-linux-core.h elf-nacl.h elf-s390.h elf-vxworks.h \
+	elf-linux-core.h elf-s390.h elf-vxworks.h \
 	elfxx-aarch64.h elfxx-ia64.h elfxx-mips.h elfxx-riscv.h \
-	elfxx-sparc.h elfxx-tilegx.h elfxx-x86.h \
+	elfxx-sparc.h elfxx-tilegx.h elfxx-x86.h elfxx-loongarch.h \
 	genlink.h go32stub.h \
 	libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
 	libpei.h libxcoff.h \
@@ -710,24 +723,33 @@ SOURCE_HFILES = \
 
 ## ... and .h files which are in the build tree, minus config.h and bfd.h
 BUILD_HFILES = \
-	bfdver.h elf32-target.h elf64-target.h targmatch.h bfd_stdint.h
+	bfdver.h elf32-target.h elf64-target.h targmatch.h
 
 # Ensure they are built early:
-BUILT_SOURCES = $(BUILD_HFILES)
+BUILT_SOURCES = $(BUILD_HFILES) @MAINT@ $(BUILD_CFILES)
 
 HFILES = $(SOURCE_HFILES) $(BUILD_HFILES)
 
+BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
+LOCAL_H_DEPS = libbfd.h sysdep.h config.h
+$(BFD32_LIBS) \
+ $(BFD64_LIBS) \
+ $(ALL_MACHINES) \
+ $(BFD32_BACKENDS) \
+ $(BFD64_BACKENDS) \
+ $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
+
 SRC_POTFILES = $(SOURCE_CFILES) $(SOURCE_HFILES)
 BLD_POTFILES = $(BUILD_CFILES) $(BUILD_HFILES)
 
-po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES)
+po/SRC-POTFILES.in: @MAINT@ Makefile
 	for file in $(SRC_POTFILES); do echo $$file; done \
-	  | LC_ALL=C sort > tmp.src \
+	  | LC_ALL=C sort | uniq > tmp.src \
 	  && mv tmp.src $(srcdir)/po/SRC-POTFILES.in
 
-po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES)
+po/BLD-POTFILES.in: @MAINT@ Makefile
 	for file in $(BLD_POTFILES); do echo $$file; done \
-	  | LC_ALL=C sort > tmp.bld \
+	  | LC_ALL=C sort | uniq > tmp.bld \
 	  && mv tmp.bld $(srcdir)/po/BLD-POTFILES.in
 
 all diststuff: info
@@ -760,143 +782,126 @@ ofiles: stamp-ofiles ; @true
 # dependency tracking fragments are picked up in the Makefile.
 libbfd_la_SOURCES = $(BFD32_LIBS_CFILES)
 EXTRA_libbfd_la_SOURCES = $(CFILES)
-libbfd_la_DEPENDENCIES = $(OFILES) ofiles
-libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) $(ZLIB)
+libbfd_la_DEPENDENCIES = $(OFILES) ofiles ../libsframe/libsframe.la
+libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) $(ZLIB) $(ZSTD_LIBS) ../libsframe/libsframe.la
 libbfd_la_LDFLAGS += -release `cat libtool-soversion` @SHARED_LDFLAGS@
 
-# libtool will build .libs/libbfd.a.  We create libbfd.a in the build
-# directory so that we don't have to convert all the programs that use
-# libbfd.a simultaneously.  This is a hack which should be removed if
-# everything else starts using libtool.  FIXME.
-
-noinst_LIBRARIES = libbfd.a
-libbfd_a_SOURCES =
-
-stamp-lib: libbfd.la
-	libtooldir=`$(LIBTOOL) --config | $(SED) -n -e 's/^objdir=//p'`; \
-	if [ -f $$libtooldir/libbfd.a ]; then \
-	  cp $$libtooldir/libbfd.a libbfd.tmp; \
-	  $(RANLIB) libbfd.tmp; \
-	  $(SHELL) $(srcdir)/../move-if-change libbfd.tmp libbfd.a; \
-	else true; fi
-	touch stamp-lib
-
-libbfd.a: stamp-lib ; @true
-
 # This file holds an array associating configuration triplets and
 # vector names.  It is built from config.bfd.  It is not compiled by
 # itself, but is included by targets.c.
 targmatch.h: config.bfd targmatch.sed
-	rm -f targmatch.h
-	$(SED) -f $(srcdir)/targmatch.sed < $(srcdir)/config.bfd > targmatch.new
-	mv -f targmatch.new targmatch.h
+	$(AM_V_at)rm -f targmatch.new
+	$(AM_V_GEN)$(SED) -f $(srcdir)/targmatch.sed < $(srcdir)/config.bfd > targmatch.new
+	$(AM_V_at)mv -f targmatch.new targmatch.h
 
 # When compiling archures.c and targets.c, supply the default target
 # info from configure.
 
 targets.lo: targets.c Makefile
 if am__fastdepCC
-	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c
-	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c
+	$(AM_V_at)mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 else
 if AMDEP
 	source='targets.c' object='$@' libtool=yes @AMDEPBACKSLASH@
 	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 endif
-	$(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c
 endif
 
 archures.lo: archures.c Makefile
 if am__fastdepCC
-	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c
-	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c
+	$(AM_V_at)mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 else
 if AMDEP
 	source='archures.c' object='$@' libtool=yes @AMDEPBACKSLASH@
 	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 endif
-	$(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c
 endif
 
 dwarf2.lo: dwarf2.c Makefile
 if am__fastdepCC
-	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c
-	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c
+	$(AM_V_at)mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 else
 if AMDEP
 	source='dwarf2.c' object='$@' libtool=yes @AMDEPBACKSLASH@
 	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 endif
-	$(LTCOMPILE) -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c
+	$(AM_V_CC)$(LTCOMPILE) -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c
 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
+	$(AM_V_GEN)$(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
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/NN/64/g < $< >> $@
+
+elf32-kvx.c : elfnn-kvx.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/NN/32/g < $< >> $@
+
+elf64-kvx.c : elfnn-kvx.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/NN/64/g < $< >> $@
+
+elf32-loongarch.c : elfnn-loongarch.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/NN/32/g < $< >> $@
+
+elf64-loongarch.c : elfnn-loongarch.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
-$(BFD32_LIBS) \
- $(BFD64_LIBS) \
- $(ALL_MACHINES) \
- $(BFD32_BACKENDS) \
- $(BFD64_BACKENDS) \
- $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
+pe-aarch64igen.c: peXXigen.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/XX/peAArch64/g < $< >> $@
+
+pe-loongarch64igen.c: peXXigen.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/XX/peLoongArch64/g < $< >> $@
+
+pe-riscv64igen.c: peXXigen.c
+	$(AM_V_at)echo "#line 1 \"peXXigen.c\"" > $@
+	$(AM_V_GEN)$(SED) -e s/XX/peRiscV64/g < $< >> $@
 
 host-aout.lo: Makefile
 
@@ -916,59 +921,68 @@ stmp-bfd-h: bfd-in3.h
 	rm -f bfd-tmp.h
 	touch stmp-bfd-h
 
-BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c \
-	bfdio.c bfdwin.c section.c archures.c reloc.c \
-	syms.c bfd.c archive.c corefile.c targets.c format.c \
-	linker.c simple.c compress.c
+BFD_H_FILES = bfd-in.h libbfd.c hash.c section.c syms.c \
+	archive.c archures.c bfd.c bfdio.c \
+	cache.c compress.c corefile.c format.c linker.c opncls.c \
+	reloc.c simple.c stab-syms.c stabs.c targets.c
 BFD64_H_FILES = archive64.c
-LIBBFD_H_FILES = libbfd-in.h libbfd.c bfdio.c bfdwin.c \
-	cache.c reloc.c archures.c linker.c
+LIBBFD_H_FILES = libbfd-in.h libbfd.c bfd.c bfdio.c \
+	archive.c archures.c cache.c hash.c linker.c opncls.c \
+	reloc.c section.c stabs.c targets.c
 LIBCOFF_H_FILES = libcoff-in.h coffcode.h
 
-# Could really use a "copy-if-change"...
-headers:
-	(cd $(bfddocdir); $(MAKE) protos $(FLAGS_TO_PASS))
-	cp $(bfddocdir)/bfd.h bfd-in2.h-new
-	$(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h
-	cp $(bfddocdir)/libbfd.h libbfd.h-new
-	$(SHELL) $(srcdir)/../move-if-change libbfd.h-new $(srcdir)/libbfd.h
-	cp $(bfddocdir)/libcoff.h libcoff.h-new
-	$(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h
+headers: stmp-bin2-h stmp-lbfd-h stmp-lcoff-h
 
 # We only rebuild the header files automatically if we have been
 # configured with --enable-maintainer-mode.
 
+REGEN_HEADER = \
+	( \
+	set -e; \
+	echo "$$H_FILES" | sed -f $(srcdir)/doc/header.sed; \
+	for file in $$H_FILES; do \
+	  file="$(srcdir)/$$file"; \
+	  case $$file in \
+	    *-in.h) cat $$file;; \
+	    *)	echo $$file | sed -e 's,.*/,,' -e 's,^,/* Extracted from ,' \
+				-e 's,$$,.  */,'; \
+		$(MKDOC) $$CHEW_FLAGS -f $(srcdir)/doc/proto.str < $$file;; \
+	  esac; \
+	done; \
+	echo "\#ifdef __cplusplus"; \
+	echo "}"; \
+	echo "\#endif"; \
+	echo "\#endif"; \
+	)
+
 $(srcdir)/bfd-in2.h: @MAINT@ stmp-bin2-h ; @true
-stmp-bin2-h: $(BFD_H_FILES) $(BFD64_H_FILES)
-	(cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) bfd.h)
-	cp $(bfddocdir)/bfd.h bfd-in2.h-new
-	$(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h
-	touch stmp-bin2-h
+stmp-bin2-h: $(BFD_H_FILES) $(BFD64_H_FILES) $(MKDOC)
+	$(AM_V_GEN)H_FILES="$(BFD_H_FILES)" CHEW_FLAGS= ; $(REGEN_HEADER) > bfd-in2.h-new
+	$(AM_V_at)$(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h
+	$(AM_V_at)touch stmp-bin2-h
 
 $(srcdir)/libbfd.h: @MAINT@ stmp-lbfd-h ; @true
-stmp-lbfd-h: $(LIBBFD_H_FILES)
-	(cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) libbfd.h)
-	cp $(bfddocdir)/libbfd.h libbfd.h-new
-	$(SHELL) $(srcdir)/../move-if-change libbfd.h-new $(srcdir)/libbfd.h
-	touch stmp-lbfd-h
+stmp-lbfd-h: $(LIBBFD_H_FILES) $(MKDOC)
+	$(AM_V_GEN)H_FILES="$(LIBBFD_H_FILES)" CHEW_FLAGS=-i ; $(REGEN_HEADER) > libbfd.h-new
+	$(AM_V_at)$(SHELL) $(srcdir)/../move-if-change libbfd.h-new $(srcdir)/libbfd.h
+	$(AM_V_at)touch stmp-lbfd-h
 
 $(srcdir)/libcoff.h: @MAINT@ stmp-lcoff-h ; @true
-stmp-lcoff-h: $(LIBCOFF_H_FILES)
-	(cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) libcoff.h)
-	cp $(bfddocdir)/libcoff.h libcoff.h-new
-	$(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h
-	touch stmp-lcoff-h
+stmp-lcoff-h: $(LIBCOFF_H_FILES) $(MKDOC)
+	$(AM_V_GEN)H_FILES="$(LIBCOFF_H_FILES)" CHEW_FLAGS=-i ; $(REGEN_HEADER) > libcoff.h-new
+	$(AM_V_at)$(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h
+	$(AM_V_at)touch stmp-lcoff-h
 
-MOSTLYCLEANFILES = ofiles stamp-ofiles
+MOSTLYCLEANFILES += ofiles stamp-ofiles
 
-CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEPA DEP1 DEP2 libbfd.a stamp-lib \
+CLEANFILES += bfd.h dep.sed stmp-bfd-h DEP DEPA DEP1 DEP2 \
 	stmp-bin2-h stmp-lbfd-h stmp-lcoff-h
 
-DISTCLEANFILES = $(BUILD_CFILES) $(BUILD_HFILES) libtool-soversion
+DISTCLEANFILES += $(BUILD_CFILES) $(BUILD_HFILES) libtool-soversion
 
 bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
-	@echo "creating $@"
-	@bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
+	$(AM_V_GEN)\
+	bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
 	bfd_version_string="\"$(VERSION)\"" ;\
 	bfd_soversion="$(VERSION)" ;\
 	bfd_version_package="\"$(PKGVERSION)\"" ;\
@@ -989,15 +1003,17 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
 # Disable -Werror, if it has been enabled, since coffswap.h won't
 # compile with gcc 4.5 and above.
 coff-tic4x.lo: coff-tic4x.c
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR)
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR)
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $< $(NO_WERROR)
+@am__fastdepCC_FALSE@	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $< $(NO_WERROR)
 
 coff-tic54x.lo: coff-tic54x.c
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR)
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR)
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $< $(NO_WERROR)
+@am__fastdepCC_FALSE@	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $< $(NO_WERROR)
+
+include doc/local.mk
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/Makefile.in ./bfd/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/Makefile.in	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/Makefile.in	2026-03-05 02:07:20.000000000 +0000
@@ -15,7 +15,7 @@
 @SET_MAKE@
 
 #
-#   Copyright (C) 2012-2019 Free Software Foundation, Inc.
+#   Copyright (C) 2012-2025 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,7 +33,6 @@
 #
 
 
-
 VPATH = @srcdir@
 am__is_gnu_make = { \
   if test -z '$(MAKELEVEL)'; then \
@@ -116,20 +115,28 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
 	$(top_srcdir)/../config/depstand.m4 \
 	$(top_srcdir)/../config/gettext-sister.m4 \
+	$(top_srcdir)/../config/gettext.m4 \
+	$(top_srcdir)/../config/iconv.m4 \
+	$(top_srcdir)/../config/intlmacosx.m4 \
+	$(top_srcdir)/../config/jobserver.m4 \
 	$(top_srcdir)/../config/largefile.m4 \
 	$(top_srcdir)/../config/lead-dot.m4 \
-	$(top_srcdir)/../config/nls.m4 \
+	$(top_srcdir)/../config/lib-ld.m4 \
+	$(top_srcdir)/../config/lib-link.m4 \
+	$(top_srcdir)/../config/lib-prefix.m4 \
+	$(top_srcdir)/../config/mmap.m4 $(top_srcdir)/../config/nls.m4 \
 	$(top_srcdir)/../config/override.m4 \
+	$(top_srcdir)/../config/pkg.m4 \
 	$(top_srcdir)/../config/plugins.m4 \
 	$(top_srcdir)/../config/po.m4 \
 	$(top_srcdir)/../config/progtest.m4 \
-	$(top_srcdir)/../config/stdint.m4 \
-	$(top_srcdir)/../config/zlib.m4 $(top_srcdir)/../libtool.m4 \
+	$(top_srcdir)/../config/zlib.m4 \
+	$(top_srcdir)/../config/zstd.m4 $(top_srcdir)/../libtool.m4 \
 	$(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
 	$(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
-	$(top_srcdir)/bfd.m4 $(top_srcdir)/warning.m4 \
-	$(top_srcdir)/acinclude.m4 $(top_srcdir)/version.m4 \
-	$(top_srcdir)/configure.ac
+	$(top_srcdir)/ax_tls.m4 $(top_srcdir)/bfd.m4 \
+	$(top_srcdir)/warning.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/version.m4 $(top_srcdir)/configure.ac
 am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 	$(ACLOCAL_M4)
 DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
@@ -140,16 +147,6 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/.
 CONFIG_HEADER = config.h
 CONFIG_CLEAN_FILES = bfd-in3.h po/Makefile.in
 CONFIG_CLEAN_VPATH_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-ARFLAGS = cru
-AM_V_AR = $(am__v_AR_@AM_V@)
-am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
-am__v_AR_0 = @echo "  AR      " $@;
-am__v_AR_1 = 
-libbfd_a_AR = $(AR) $(ARFLAGS)
-libbfd_a_LIBADD =
-am_libbfd_a_OBJECTS =
-libbfd_a_OBJECTS = $(am_libbfd_a_OBJECTS)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -177,16 +174,15 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(bfdlibdir)" \
+am__installdirs = "$(DESTDIR)$(bfdlibdir)" "$(DESTDIR)$(infodir)" \
 	"$(DESTDIR)$(bfdincludedir)"
 LTLIBRARIES = $(bfdlib_LTLIBRARIES) $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
-am__objects_1 = archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \
-	cache.lo coff-bfd.lo compress.lo corefile.lo elf-properties.lo \
-	format.lo hash.lo init.lo libbfd.lo linker.lo merge.lo \
-	opncls.lo reloc.lo section.lo simple.lo stab-syms.lo stabs.lo \
-	syms.lo targets.lo binary.lo ihex.lo srec.lo tekhex.lo \
-	verilog.lo
+am__objects_1 = archive.lo archures.lo bfd.lo bfdio.lo cache.lo \
+	coff-bfd.lo compress.lo corefile.lo elf-properties.lo \
+	format.lo hash.lo libbfd.lo linker.lo merge.lo opncls.lo \
+	reloc.lo section.lo simple.lo stab-syms.lo stabs.lo syms.lo \
+	targets.lo binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 am_libbfd_la_OBJECTS = $(am__objects_1)
 libbfd_la_OBJECTS = $(am_libbfd_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -232,8 +228,47 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libbfd_a_SOURCES) $(libbfd_la_SOURCES) \
-	$(EXTRA_libbfd_la_SOURCES)
+SOURCES = $(libbfd_la_SOURCES) $(EXTRA_libbfd_la_SOURCES)
+AM_V_DVIPS = $(am__v_DVIPS_@AM_V@)
+am__v_DVIPS_ = $(am__v_DVIPS_@AM_DEFAULT_V@)
+am__v_DVIPS_0 = @echo "  DVIPS   " $@;
+am__v_DVIPS_1 = 
+AM_V_MAKEINFO = $(am__v_MAKEINFO_@AM_V@)
+am__v_MAKEINFO_ = $(am__v_MAKEINFO_@AM_DEFAULT_V@)
+am__v_MAKEINFO_0 = @echo "  MAKEINFO" $@;
+am__v_MAKEINFO_1 = 
+AM_V_INFOHTML = $(am__v_INFOHTML_@AM_V@)
+am__v_INFOHTML_ = $(am__v_INFOHTML_@AM_DEFAULT_V@)
+am__v_INFOHTML_0 = @echo "  INFOHTML" $@;
+am__v_INFOHTML_1 = 
+AM_V_TEXI2DVI = $(am__v_TEXI2DVI_@AM_V@)
+am__v_TEXI2DVI_ = $(am__v_TEXI2DVI_@AM_DEFAULT_V@)
+am__v_TEXI2DVI_0 = @echo "  TEXI2DVI" $@;
+am__v_TEXI2DVI_1 = 
+AM_V_TEXI2PDF = $(am__v_TEXI2PDF_@AM_V@)
+am__v_TEXI2PDF_ = $(am__v_TEXI2PDF_@AM_DEFAULT_V@)
+am__v_TEXI2PDF_0 = @echo "  TEXI2PDF" $@;
+am__v_TEXI2PDF_1 = 
+AM_V_texinfo = $(am__v_texinfo_@AM_V@)
+am__v_texinfo_ = $(am__v_texinfo_@AM_DEFAULT_V@)
+am__v_texinfo_0 = -q
+am__v_texinfo_1 = 
+AM_V_texidevnull = $(am__v_texidevnull_@AM_V@)
+am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@)
+am__v_texidevnull_0 = > /dev/null
+am__v_texidevnull_1 = 
+am__dirstamp = $(am__leading_dot)dirstamp
+INFO_DEPS = doc/bfd.info
+am__TEXINFO_TEX_DIR = $(srcdir)
+DVIS = doc/bfd.dvi
+PDFS = doc/bfd.pdf
+PSS = doc/bfd.ps
+HTMLS = doc/bfd.html
+TEXINFOS = doc/bfd.texi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
 RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
 	ctags-recursive dvi-recursive html-recursive info-recursive \
 	install-data-recursive install-dvi-recursive \
@@ -248,7 +283,7 @@ am__can_run_installinfo = \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
 am__bfdinclude_HEADERS_DIST = $(INCDIR)/plugin-api.h bfd.h \
-	$(INCDIR)/ansidecl.h $(INCDIR)/symcat.h bfd_stdint.h \
+	$(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
 	$(INCDIR)/diagnostics.h $(INCDIR)/bfdlink.h
 HEADERS = $(bfdinclude_HEADERS)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
@@ -289,12 +324,6 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BFD_HOSTPTR_T = @BFD_HOSTPTR_T@
-BFD_HOST_64BIT_LONG = @BFD_HOST_64BIT_LONG@
-BFD_HOST_64BIT_LONG_LONG = @BFD_HOST_64BIT_LONG_LONG@
-BFD_HOST_64_BIT = @BFD_HOST_64_BIT@
-BFD_HOST_64_BIT_DEFINED = @BFD_HOST_64_BIT_DEFINED@
-BFD_HOST_U_64_BIT = @BFD_HOST_U_64_BIT@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -330,8 +359,12 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LARGEFILE_CPPFLAGS = @LARGEFILE_CPPFLAGS@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
 LIBINTL = @LIBINTL@
 LIBINTL_DEP = @LIBINTL_DEP@
 LIBM = @LIBM@
@@ -340,6 +373,8 @@ LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
@@ -363,6 +398,9 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 PKGVERSION = @PKGVERSION@
+PKG_CONFIG = @PKG_CONFIG@
+PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
+PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
 POSUB = @POSUB@
 RANLIB = @RANLIB@
 REPORT_BUGS_TEXI = @REPORT_BUGS_TEXI@
@@ -380,6 +418,8 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_FOR_BUILD = @WARN_CFLAGS_FOR_BUILD@
 WARN_WRITE_STRINGS = @WARN_WRITE_STRINGS@
 XGETTEXT = @XGETTEXT@
+ZSTD_CFLAGS = @ZSTD_CFLAGS@
+ZSTD_LIBS = @ZSTD_LIBS@
 abs_builddir = @abs_builddir@
 abs_srcdir = @abs_srcdir@
 abs_top_builddir = @abs_top_builddir@
@@ -456,11 +496,17 @@ top_srcdir = @top_srcdir@
 wordsize = @wordsize@
 zlibdir = @zlibdir@
 zlibinc = @zlibinc@
-AUTOMAKE_OPTIONS = no-dist foreign
+AUTOMAKE_OPTIONS = no-dist foreign info-in-builddir no-texinfo.tex
 ACLOCAL_AMFLAGS = -I . -I .. -I ../config
+MOSTLYCLEANFILES = ofiles stamp-ofiles $(MKDOC) doc/*.o doc/*.stamp
+CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEPA DEP1 DEP2 stmp-bin2-h \
+	stmp-lbfd-h stmp-lcoff-h
+DISTCLEANFILES = $(BUILD_CFILES) $(BUILD_HFILES) libtool-soversion \
+	doc/bfd.?? doc/bfd.??? texput.log
+MAINTAINERCLEANFILES = $(DOCFILES) doc/bfd.info
 INCDIR = $(srcdir)/../include
 CSEARCH = -I. -I$(srcdir) -I$(INCDIR)
-SUBDIRS = doc po
+SUBDIRS = po
 bfddocdir = doc
 libbfd_la_LDFLAGS = $(am__append_1) -release `cat libtool-soversion` \
 	@SHARED_LDFLAGS@ $(am__empty)
@@ -468,7 +514,7 @@ libbfd_la_LDFLAGS = $(am__append_1) -rel
 @INSTALL_LIBBFD_FALSE@bfdinclude_HEADERS = $(am__append_2)
 @INSTALL_LIBBFD_TRUE@bfdinclude_HEADERS = $(BFD_H) \
 @INSTALL_LIBBFD_TRUE@	$(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \
-@INSTALL_LIBBFD_TRUE@	bfd_stdint.h $(INCDIR)/diagnostics.h \
+@INSTALL_LIBBFD_TRUE@	$(INCDIR)/diagnostics.h \
 @INSTALL_LIBBFD_TRUE@	$(INCDIR)/bfdlink.h $(am__append_2)
 @INSTALL_LIBBFD_FALSE@rpath_bfdlibdir = @bfdlibdir@
 @INSTALL_LIBBFD_FALSE@noinst_LTLIBRARIES = libbfd.la
@@ -478,10 +524,10 @@ libbfd_la_LDFLAGS = $(am__append_1) -rel
 # case both are empty.
 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_CFLAGS = $(WARN_CFLAGS) $(ZLIBINC) $(ZSTD_CFLAGS)
+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
@@ -495,17 +541,17 @@ BFD_H = bfd.h
 # need two copies of the executable, one to download and one for the
 # debugger).
 BFD32_LIBS = \
-	archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo cache.lo \
+	archive.lo archures.lo bfd.lo bfdio.lo cache.lo \
 	coff-bfd.lo compress.lo corefile.lo elf-properties.lo format.lo \
-	hash.lo init.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
+	hash.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
 	section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo \
 	binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 
 BFD64_LIBS = archive64.lo
 BFD32_LIBS_CFILES = \
-	archive.c archures.c bfd.c bfdio.c bfdwin.c cache.c coff-bfd.c \
+	archive.c archures.c bfd.c bfdio.c cache.c coff-bfd.c \
 	compress.c corefile.c elf-properties.c format.c hash.c \
-	init.c libbfd.c linker.c merge.c opncls.c reloc.c \
+	libbfd.c linker.c merge.c opncls.c reloc.c \
 	section.c simple.c stab-syms.c stabs.c syms.c targets.c \
 	binary.c ihex.c srec.c tekhex.c verilog.c
 
@@ -516,6 +562,7 @@ BFD64_LIBS_CFILES = archive64.c
 ALL_MACHINES = \
 	cpu-aarch64.lo \
 	cpu-alpha.lo \
+	cpu-amdgcn.lo \
 	cpu-arc.lo \
 	cpu-arm.lo \
 	cpu-avr.lo \
@@ -535,23 +582,22 @@ ALL_MACHINES = \
 	cpu-h8300.lo \
 	cpu-hppa.lo \
 	cpu-i386.lo \
-	cpu-iamcu.lo \
-	cpu-l1om.lo \
-	cpu-k1om.lo \
 	cpu-ia64.lo \
+	cpu-iamcu.lo \
 	cpu-ip2k.lo \
 	cpu-iq2000.lo \
+	cpu-kvx.lo \
 	cpu-lm32.lo \
+	cpu-loongarch.lo \
 	cpu-m10200.lo \
 	cpu-m10300.lo \
 	cpu-m32c.lo \
 	cpu-m32r.lo \
 	cpu-m68hc11.lo \
 	cpu-m68hc12.lo \
+	cpu-m68k.lo \
 	cpu-m9s12x.lo \
-	cpu-s12z.lo \
 	cpu-m9s12xg.lo \
-	cpu-m68k.lo \
 	cpu-mcore.lo \
 	cpu-mep.lo \
 	cpu-metag.lo \
@@ -563,18 +609,17 @@ ALL_MACHINES = \
 	cpu-mt.lo \
 	cpu-nds32.lo \
 	cpu-nfp.lo \
-	cpu-nios2.lo \
 	cpu-ns32k.lo \
 	cpu-or1k.lo \
 	cpu-pdp11.lo \
 	cpu-pj.lo \
-	cpu-plugin.lo \
 	cpu-powerpc.lo \
 	cpu-pru.lo \
-	cpu-rs6000.lo \
 	cpu-riscv.lo \
 	cpu-rl78.lo \
+	cpu-rs6000.lo \
 	cpu-rx.lo \
+	cpu-s12z.lo \
 	cpu-s390.lo \
 	cpu-score.lo \
 	cpu-sh.lo \
@@ -584,7 +629,6 @@ ALL_MACHINES = \
 	cpu-tic4x.lo \
 	cpu-tic54x.lo \
 	cpu-tic6x.lo \
-	cpu-tic80.lo \
 	cpu-tilegx.lo \
 	cpu-tilepro.lo \
 	cpu-v850.lo \
@@ -592,7 +636,6 @@ ALL_MACHINES = \
 	cpu-vax.lo \
 	cpu-visium.lo \
 	cpu-wasm32.lo \
-	cpu-xc16x.lo \
 	cpu-xgate.lo \
 	cpu-xstormy16.lo \
 	cpu-xtensa.lo \
@@ -602,6 +645,7 @@ ALL_MACHINES = \
 ALL_MACHINES_CFILES = \
 	cpu-aarch64.c \
 	cpu-alpha.c \
+	cpu-amdgcn.c \
 	cpu-arc.c \
 	cpu-arm.c \
 	cpu-avr.c \
@@ -621,23 +665,22 @@ ALL_MACHINES_CFILES = \
 	cpu-h8300.c \
 	cpu-hppa.c \
 	cpu-i386.c \
-	cpu-iamcu.c \
-	cpu-l1om.c \
-	cpu-k1om.c \
 	cpu-ia64.c \
+	cpu-iamcu.c \
 	cpu-ip2k.c \
 	cpu-iq2000.c \
+	cpu-kvx.c \
 	cpu-lm32.c \
+	cpu-loongarch.c \
 	cpu-m10200.c \
 	cpu-m10300.c \
 	cpu-m32c.c \
 	cpu-m32r.c \
 	cpu-m68hc11.c \
 	cpu-m68hc12.c \
+	cpu-m68k.c \
 	cpu-m9s12x.c \
-	cpu-s12z.c \
 	cpu-m9s12xg.c \
-	cpu-m68k.c \
 	cpu-mcore.c \
 	cpu-mep.c \
 	cpu-metag.c \
@@ -650,17 +693,16 @@ ALL_MACHINES_CFILES = \
 	cpu-nds32.c \
 	cpu-nfp.c \
 	cpu-ns32k.c \
-	cpu-nios2.c \
 	cpu-or1k.c \
 	cpu-pdp11.c \
 	cpu-pj.c \
-	cpu-plugin.c \
 	cpu-powerpc.c \
 	cpu-pru.c \
-	cpu-rs6000.c \
 	cpu-riscv.c \
 	cpu-rl78.c \
+	cpu-rs6000.c \
 	cpu-rx.c \
+	cpu-s12z.c \
 	cpu-s390.c \
 	cpu-score.c \
 	cpu-sh.c \
@@ -670,7 +712,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 \
@@ -678,7 +719,6 @@ ALL_MACHINES_CFILES = \
 	cpu-vax.c \
 	cpu-visium.c \
 	cpu-wasm32.c \
-	cpu-xc16x.c \
 	cpu-xgate.c \
 	cpu-xstormy16.c \
 	cpu-xtensa.c \
@@ -691,7 +731,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 +742,6 @@ BFD32_BACKENDS = \
 	coff-tic30.lo \
 	coff-tic4x.lo \
 	coff-tic54x.lo \
-	coff-tic80.lo \
 	coff-z80.lo \
 	coff-z8k.lo \
 	coffgen.lo \
@@ -717,7 +755,7 @@ BFD32_BACKENDS = \
 	elf-ifunc.lo \
 	elf-m10200.lo \
 	elf-m10300.lo \
-	elf-nacl.lo \
+	elf-sframe.lo \
 	elf-strtab.lo \
 	elf-vxworks.lo \
 	elf.lo \
@@ -741,7 +779,6 @@ BFD32_BACKENDS = \
 	elf32-h8300.lo \
 	elf32-hppa.lo \
 	elf32-i386.lo \
-	elfxx-x86.lo \
 	elf32-ip2k.lo \
 	elf32-iq2000.lo \
 	elf32-lm32.lo \
@@ -751,7 +788,6 @@ BFD32_BACKENDS = \
 	elf32-m68hc12.lo \
 	elf32-m68hc1x.lo \
 	elf32-m68k.lo \
-	elf32-s12z.lo \
 	elf32-mcore.lo \
 	elf32-mep.lo \
 	elf32-metag.lo \
@@ -760,13 +796,13 @@ BFD32_BACKENDS = \
 	elf32-msp430.lo \
 	elf32-mt.lo \
 	elf32-nds32.lo \
-	elf32-nios2.lo \
 	elf32-or1k.lo \
 	elf32-pj.lo \
 	elf32-ppc.lo \
 	elf32-pru.lo \
 	elf32-rl78.lo \
 	elf32-rx.lo \
+	elf32-s12z.lo \
 	elf32-s390.lo \
 	elf32-sh.lo \
 	elf32-sparc.lo \
@@ -778,36 +814,36 @@ BFD32_BACKENDS = \
 	elf32-vax.lo \
 	elf32-visium.lo \
 	elf32-wasm32.lo \
-	elf32-xc16x.lo \
 	elf32-xgate.lo \
 	elf32-xstormy16.lo \
 	elf32-xtensa.lo \
+	elf32-z80.lo \
 	elf32.lo \
 	elflink.lo \
 	elfxx-sparc.lo \
 	elfxx-tilegx.lo \
+	elfxx-x86.lo \
 	i386aout.lo \
 	i386bsd.lo \
 	i386lynx.lo \
 	i386msdos.lo \
-	mach-o.lo \
-	mach-o-i386.lo \
 	mach-o-arm.lo \
+	mach-o-i386.lo \
+	mach-o.lo \
 	ns32knetbsd.lo \
 	pc532-mach.lo \
+	pdb.lo \
 	pdp11.lo \
 	pe-arm-wince.lo \
 	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 \
@@ -821,13 +857,13 @@ BFD32_BACKENDS = \
 	wasm-module.lo \
 	xcofflink.lo \
 	xsym.lo \
+	xtensa-dynconfig.lo \
 	xtensa-isa.lo \
 	xtensa-modules.lo
 
 BFD32_BACKENDS_CFILES = \
 	aout-cris.c \
 	aout-ns32k.c \
-	aout-tic30.c \
 	aout32.c \
 	cf-i386lynx.c \
 	coff-go32.c \
@@ -839,7 +875,6 @@ BFD32_BACKENDS_CFILES = \
 	coff-tic30.c \
 	coff-tic4x.c \
 	coff-tic54x.c \
-	coff-tic80.c \
 	coff-z80.c \
 	coff-z8k.c \
 	coffgen.c \
@@ -853,7 +888,7 @@ BFD32_BACKENDS_CFILES = \
 	elf-ifunc.c \
 	elf-m10200.c \
 	elf-m10300.c \
-	elf-nacl.c \
+	elf-sframe.c \
 	elf-strtab.c \
 	elf-vxworks.c \
 	elf.c \
@@ -877,7 +912,6 @@ BFD32_BACKENDS_CFILES = \
 	elf32-h8300.c \
 	elf32-hppa.c \
 	elf32-i386.c \
-	elfxx-x86.c \
 	elf32-ip2k.c \
 	elf32-iq2000.c \
 	elf32-lm32.c \
@@ -887,7 +921,6 @@ BFD32_BACKENDS_CFILES = \
 	elf32-m68hc12.c \
 	elf32-m68hc1x.c \
 	elf32-m68k.c \
-	elf32-s12z.c \
 	elf32-mcore.c \
 	elf32-mep.c \
 	elf32-metag.c \
@@ -896,13 +929,13 @@ BFD32_BACKENDS_CFILES = \
 	elf32-msp430.c \
 	elf32-mt.c \
 	elf32-nds32.c \
-	elf32-nios2.c \
 	elf32-or1k.c \
 	elf32-pj.c \
 	elf32-ppc.c \
 	elf32-pru.c \
 	elf32-rl78.c \
 	elf32-rx.c \
+	elf32-s12z.c \
 	elf32-s390.c \
 	elf32-sh.c \
 	elf32-sparc.c \
@@ -914,36 +947,36 @@ BFD32_BACKENDS_CFILES = \
 	elf32-vax.c \
 	elf32-visium.c \
 	elf32-wasm32.c \
-	elf32-xc16x.c \
 	elf32-xgate.c \
 	elf32-xstormy16.c \
 	elf32-xtensa.c \
+	elf32-z80.c \
 	elf32.c \
 	elflink.c \
 	elfxx-sparc.c \
 	elfxx-tilegx.c \
+	elfxx-x86.c \
 	i386aout.c \
 	i386bsd.c \
 	i386lynx.c \
 	i386msdos.c \
-	mach-o.c \
-	mach-o-i386.c \
 	mach-o-arm.c \
+	mach-o-i386.c \
+	mach-o.c \
 	ns32knetbsd.c \
 	pc532-mach.c \
+	pdb.c \
 	pdp11.c \
 	pe-arm-wince.c \
 	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 \
@@ -956,6 +989,7 @@ BFD32_BACKENDS_CFILES = \
 	wasm-module.c \
 	xcofflink.c \
 	xsym.c \
+	xtensa-dynconfig.c \
 	xtensa-isa.c \
 	xtensa-modules.c
 
@@ -966,45 +1000,59 @@ BFD32_BACKENDS_CFILES = \
 # elf32-ia64.c requires a 64-bit bfd_vma, and hence can not be put in
 # BFD32_BACKENDS.
 BFD64_BACKENDS = \
-	elf32-aarch64.lo \
-	elf64-aarch64.lo \
-	elfxx-aarch64.lo \
 	aix5ppc-core.lo \
 	aout64.lo \
 	coff-alpha.lo \
 	coff-x86_64.lo \
 	coff64-rs6000.lo \
+	elf32-aarch64.lo \
 	elf32-ia64.lo \
+	elf32-kvx.lo \
+	elf32-loongarch.lo \
 	elf32-mips.lo \
+	elf32-riscv.lo \
 	elf32-score.lo \
 	elf32-score7.lo \
+	elf64-aarch64.lo \
 	elf64-alpha.lo \
+	elf64-amdgcn.lo \
+	elf64-bpf.lo \
 	elf64-gen.lo \
 	elf64-hppa.lo \
-	elf64-ia64.lo \
 	elf64-ia64-vms.lo \
-	elfxx-ia64.lo \
-	elfn32-mips.lo \
+	elf64-ia64.lo \
+	elf64-kvx.lo \
+	elf64-loongarch.lo \
 	elf64-mips.lo \
-	elfxx-mips.lo \
 	elf64-mmix.lo \
 	elf64-nfp.lo \
 	elf64-ppc.lo \
-	elf32-riscv.lo \
 	elf64-riscv.lo \
-	elfxx-riscv.lo \
 	elf64-s390.lo \
 	elf64-sparc.lo \
 	elf64-tilegx.lo \
 	elf64-x86-64.lo \
-	elfxx-x86.lo \
-	elf64-bpf.lo \
 	elf64.lo \
+	elfn32-mips.lo \
+	elfxx-aarch64.lo \
+	elfxx-ia64.lo \
+	elfxx-kvx.lo \
+	elfxx-loongarch.lo \
+	elfxx-mips.lo \
+	elfxx-riscv.lo \
+	elfxx-x86.lo \
 	mach-o-aarch64.lo \
 	mach-o-x86-64.lo \
 	mmo.lo \
+	pe-aarch64.lo \
+	pe-aarch64igen.lo \
+	pe-loongarch64igen.lo \
+	pe-riscv64igen.lo \
 	pe-x86_64.lo \
+	pei-aarch64.lo \
 	pei-ia64.lo \
+	pei-loongarch64.lo \
+	pei-riscv64.lo \
 	pei-x86_64.lo \
 	pepigen.lo \
 	pex64igen.lo \
@@ -1020,6 +1068,8 @@ BFD64_BACKENDS_CFILES = \
 	elf32-score.c \
 	elf32-score7.c \
 	elf64-alpha.c \
+	elf64-amdgcn.c \
+	elf64-bpf.c \
 	elf64-gen.c \
 	elf64-hppa.c \
 	elf64-ia64-vms.c \
@@ -1031,24 +1081,28 @@ BFD64_BACKENDS_CFILES = \
 	elf64-sparc.c \
 	elf64-tilegx.c \
 	elf64-x86-64.c \
-	elfxx-x86.c \
-	elf64-bpf.c \
 	elf64.c \
 	elfn32-mips.c \
 	elfxx-aarch64.c \
 	elfxx-ia64.c \
+	elfxx-kvx.c \
+	elfxx-loongarch.c \
 	elfxx-mips.c \
 	elfxx-riscv.c \
+	elfxx-x86.c \
 	mach-o-aarch64.c \
 	mach-o-x86-64.c \
 	mmo.c \
+	pe-aarch64.c \
 	pe-x86_64.c \
+	pei-aarch64.c \
 	pei-ia64.c \
+	pei-loongarch64.c \
+	pei-riscv64.c \
 	pei-x86_64.c \
 	vms-alpha.c
 
 OPTIONAL_BACKENDS = \
-	aix386-core.lo \
 	cisco-core.lo \
 	hpux-core.lo \
 	irix-core.lo \
@@ -1056,11 +1110,9 @@ OPTIONAL_BACKENDS = \
 	netbsd-core.lo \
 	osf-core.lo \
 	rs6000-core.lo \
-	sco5-core.lo \
 	trad-core.lo
 
 OPTIONAL_BACKENDS_CFILES = \
-	aix386-core.c \
 	cisco-core.c \
 	hpux-core.c \
 	irix-core.c \
@@ -1068,7 +1120,6 @@ OPTIONAL_BACKENDS_CFILES = \
 	netbsd-core.c \
 	osf-core.c \
 	rs6000-core.c \
-	sco5-core.c \
 	trad-core.c
 
 
@@ -1099,26 +1150,29 @@ SOURCE_CFILES = \
 
 BUILD_CFILES = \
 	elf32-aarch64.c elf64-aarch64.c \
+	elf32-kvx.c elf64-kvx.c \
 	elf32-ia64.c elf64-ia64.c \
+	elf32-loongarch.c elf64-loongarch.c \
 	elf32-riscv.c elf64-riscv.c \
-	peigen.c pepigen.c pex64igen.c
+	peigen.c pepigen.c pex64igen.c pe-aarch64igen.c pe-loongarch64igen.c \
+	pe-riscv64igen.c
 
 CFILES = $(SOURCE_CFILES) $(BUILD_CFILES)
 SOURCE_HFILES = \
 	aout-target.h aoutx.h arc-got.h arc-plt.h \
 	coff-arm.h coff-bfd.h coffcode.h coffswap.h \
-	cpu-aarch64.h cpu-arm.h cpu-h8300.h cpu-m68k.h \
+	cpu-aarch64.h cpu-arm.h cpu-h8300.h cpu-m68k.h cpu-riscv.h \
 	ecoff-bfd.h ecoffswap.h \
 	elf32-arm.h elf32-avr.h elf32-bfin.h elf32-cr16.h elf32-csky.h \
 	elf32-dlx.h elf32-hppa.h elf32-m68hc1x.h elf32-m68k.h \
-	elf32-metag.h elf32-nds32.h elf32-nios2.h elf32-ppc.h \
+	elf32-metag.h elf32-nds32.h elf32-ppc.h \
 	elf32-rx.h elf32-score.h elf32-sh-relocs.h elf32-spu.h \
 	elf32-tic6x.h elf32-tilegx.h elf32-tilepro.h elf32-v850.h \
 	elf64-hppa.h elf64-ppc.h elf64-tilegx.h \
 	elf-bfd.h elfcode.h elfcore.h elf-hppa.h elf-linker-x86.h \
-	elf-linux-core.h elf-nacl.h elf-s390.h elf-vxworks.h \
+	elf-linux-core.h elf-s390.h elf-vxworks.h \
 	elfxx-aarch64.h elfxx-ia64.h elfxx-mips.h elfxx-riscv.h \
-	elfxx-sparc.h elfxx-tilegx.h elfxx-x86.h \
+	elfxx-sparc.h elfxx-tilegx.h elfxx-x86.h elfxx-loongarch.h \
 	genlink.h go32stub.h \
 	libaout.h libbfd.h libcoff.h libecoff.h libhppa.h \
 	libpei.h libxcoff.h \
@@ -1131,12 +1185,14 @@ SOURCE_HFILES = \
 	xcofflink.h xsym.h
 
 BUILD_HFILES = \
-	bfdver.h elf32-target.h elf64-target.h targmatch.h bfd_stdint.h
+	bfdver.h elf32-target.h elf64-target.h targmatch.h
 
 
 # Ensure they are built early:
-BUILT_SOURCES = $(BUILD_HFILES)
+BUILT_SOURCES = $(BUILD_HFILES) @MAINT@ $(BUILD_CFILES)
 HFILES = $(SOURCE_HFILES) $(BUILD_HFILES)
+BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
+LOCAL_H_DEPS = libbfd.h sysdep.h config.h
 SRC_POTFILES = $(SOURCE_CFILES) $(SOURCE_HFILES)
 BLD_POTFILES = $(BUILD_CFILES) $(BUILD_HFILES)
 
@@ -1153,40 +1209,126 @@ OFILES = $(BFD_BACKENDS) $(BFD_MACHINES)
 # dependency tracking fragments are picked up in the Makefile.
 libbfd_la_SOURCES = $(BFD32_LIBS_CFILES)
 EXTRA_libbfd_la_SOURCES = $(CFILES)
-libbfd_la_DEPENDENCIES = $(OFILES) ofiles
-libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) $(ZLIB)
-
-# libtool will build .libs/libbfd.a.  We create libbfd.a in the build
-# directory so that we don't have to convert all the programs that use
-# libbfd.a simultaneously.  This is a hack which should be removed if
-# everything else starts using libtool.  FIXME.
-noinst_LIBRARIES = libbfd.a
-libbfd_a_SOURCES = 
-BFD_H_DEPS = $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h
-LOCAL_H_DEPS = libbfd.h sysdep.h config.h bfd_stdint.h
-BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c \
-	bfdio.c bfdwin.c section.c archures.c reloc.c \
-	syms.c bfd.c archive.c corefile.c targets.c format.c \
-	linker.c simple.c compress.c
+libbfd_la_DEPENDENCIES = $(OFILES) ofiles ../libsframe/libsframe.la
+libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) $(ZLIB) $(ZSTD_LIBS) ../libsframe/libsframe.la
+BFD_H_FILES = bfd-in.h libbfd.c hash.c section.c syms.c \
+	archive.c archures.c bfd.c bfdio.c \
+	cache.c compress.c corefile.c format.c linker.c opncls.c \
+	reloc.c simple.c stab-syms.c stabs.c targets.c
 
 BFD64_H_FILES = archive64.c
-LIBBFD_H_FILES = libbfd-in.h libbfd.c bfdio.c bfdwin.c \
-	cache.c reloc.c archures.c linker.c
+LIBBFD_H_FILES = libbfd-in.h libbfd.c bfd.c bfdio.c \
+	archive.c archures.c cache.c hash.c linker.c opncls.c \
+	reloc.c section.c stabs.c targets.c
 
 LIBCOFF_H_FILES = libcoff-in.h coffcode.h
-MOSTLYCLEANFILES = ofiles stamp-ofiles
-CLEANFILES = bfd.h dep.sed stmp-bfd-h DEP DEPA DEP1 DEP2 libbfd.a stamp-lib \
-	stmp-bin2-h stmp-lbfd-h stmp-lcoff-h
 
-DISTCLEANFILES = $(BUILD_CFILES) $(BUILD_HFILES) libtool-soversion
+# We only rebuild the header files automatically if we have been
+# configured with --enable-maintainer-mode.
+REGEN_HEADER = \
+	( \
+	set -e; \
+	echo "$$H_FILES" | sed -f $(srcdir)/doc/header.sed; \
+	for file in $$H_FILES; do \
+	  file="$(srcdir)/$$file"; \
+	  case $$file in \
+	    *-in.h) cat $$file;; \
+	    *)	echo $$file | sed -e 's,.*/,,' -e 's,^,/* Extracted from ,' \
+				-e 's,$$,.  */,'; \
+		$(MKDOC) $$CHEW_FLAGS -f $(srcdir)/doc/proto.str < $$file;; \
+	  esac; \
+	done; \
+	echo "\#ifdef __cplusplus"; \
+	echo "}"; \
+	echo "\#endif"; \
+	echo "\#endif"; \
+	)
+
+DOCFILES = \
+	doc/aoutx.texi \
+	doc/archive.texi \
+	doc/archures.texi \
+	doc/bfdio.texi \
+	doc/bfdt.texi \
+	doc/bfdver.texi \
+	doc/cache.texi \
+	doc/coffcode.texi \
+	doc/corefile.texi \
+	doc/elfcode.texi \
+	doc/elf.texi \
+	doc/format.texi \
+	doc/hash.texi \
+	doc/libbfd.texi \
+	doc/linker.texi \
+	doc/mmo.texi \
+	doc/opncls.texi \
+	doc/reloc.texi \
+	doc/section.texi \
+	doc/syms.texi \
+	doc/targets.texi
+
+
+# SRCDOC, SRCPROT, SRCIPROT only used to sidestep Sun Make bug in interaction
+# between VPATH and suffix rules.  If you use GNU Make, perhaps other Makes,
+# you don't need these three:
+SRCDOC = \
+	$(srcdir)/aoutx.h $(srcdir)/archive.c \
+	$(srcdir)/archures.c $(srcdir)/bfd.c \
+	$(srcdir)/cache.c $(srcdir)/coffcode.h \
+	$(srcdir)/corefile.c $(srcdir)/elf.c \
+	$(srcdir)/elfcode.h $(srcdir)/format.c \
+	$(srcdir)/libbfd.c $(srcdir)/opncls.c \
+	$(srcdir)/reloc.c $(srcdir)/section.c \
+	$(srcdir)/syms.c $(srcdir)/targets.c \
+	$(srcdir)/hash.c $(srcdir)/linker.c \
+	$(srcdir)/mmo.c
+
+SRCPROT = $(srcdir)/archive.c $(srcdir)/archures.c \
+	$(srcdir)/bfd.c $(srcdir)/coffcode.h $(srcdir)/corefile.c \
+	$(srcdir)/format.c $(srcdir)/libbfd.c \
+	$(srcdir)/opncls.c $(srcdir)/reloc.c \
+	$(srcdir)/section.c $(srcdir)/syms.c \
+	$(srcdir)/targets.c
+
+SRCIPROT = $(srcdir)/cache.c $(srcdir)/libbfd.c \
+	$(srcdir)/bfdio.c \
+	$(srcdir)/reloc.c $(srcdir)/cpu-h8300.c \
+	$(srcdir)/archures.c
+
+TEXIDIR = $(srcdir)/../texinfo/fsf
+info_TEXINFOS = doc/bfd.texi
+doc_bfd_TEXINFOS = $(DOCFILES) doc/bfdsumm.texi
+AM_MAKEINFOFLAGS = --no-split -I "$(srcdir)/doc" -P doc
+TEXI2DVI = texi2dvi -I "$(srcdir)/doc" -I doc
+MKDOC = doc/chew$(EXEEXT_FOR_BUILD)
+
+# We can't replace these rules with an implicit rule, because
+# makes without VPATH support couldn't find the .h files in `..'.
+
+# We do not depend on chew directly so that we can distribute the info
+# files, and permit people to rebuild them, without requiring the makeinfo
+# program.  If somebody tries to rebuild info, but none of the .texi files
+# have changed, then nothing will be rebuilt.
+REGEN_TEXI = \
+	( \
+	set -e; \
+	$(MKDOC) -f $(srcdir)/doc/doc.str < $< > $@.tmp; \
+	texi=$@; \
+	texi=$${texi%.stamp}.texi; \
+	test -e $$texi || test ! -f $(srcdir)/$$texi || $(LN_S) $(abs_srcdir)/$$texi $$texi; \
+	$(SHELL) $(srcdir)/../move-if-change $@.tmp $$texi; \
+	touch $@; \
+	)
+
+noinst_TEXINFOS = doc/bfdint.texi
 all: $(BUILT_SOURCES) config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
+.SUFFIXES: .c .dvi .lo .o .obj .ps
 am--refresh: Makefile
 	@:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/doc/local.mk $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -1208,6 +1350,7 @@ Makefile: $(srcdir)/Makefile.in $(top_bu
 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
 	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
 	esac;
+$(srcdir)/doc/local.mk $(am__empty):
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
 	$(SHELL) ./config.status --recheck
@@ -1237,9 +1380,6 @@ bfd-in3.h: $(top_builddir)/config.status
 po/Makefile.in: $(top_builddir)/config.status $(top_srcdir)/po/Make-in
 	cd $(top_builddir) && $(SHELL) ./config.status $@
 
-clean-noinstLIBRARIES:
-	-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
-
 install-bfdlibLTLIBRARIES: $(bfdlib_LTLIBRARIES)
 	@$(NORMAL_INSTALL)
 	@list='$(bfdlib_LTLIBRARIES)'; test -n "$(bfdlibdir)" || list=; \
@@ -1295,11 +1435,9 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aix386-core.Plo@am__quote@
 @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@
@@ -1307,7 +1445,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/archures.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfd.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfdio.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bfdwin.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cf-i386lynx.Plo@am__quote@
@@ -1323,7 +1460,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@
@@ -1334,6 +1470,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/corefile.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-aarch64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-alpha.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-amdgcn.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-arc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-arm.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-avr.Plo@am__quote@
@@ -1357,9 +1494,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iamcu.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ip2k.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-iq2000.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-k1om.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-l1om.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-kvx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-lm32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-loongarch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m10200.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m10300.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-m32c.Plo@am__quote@
@@ -1380,12 +1517,10 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mt.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-nds32.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-nfp.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-nios2.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ns32k.Plo@am__quote@
 @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 +1537,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@
@@ -1410,7 +1544,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-vax.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-visium.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-wasm32.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-xc16x.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-xgate.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-xstormy16.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-xtensa.Plo@am__quote@
@@ -1425,8 +1558,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-ifunc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-m10200.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-m10300.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-nacl.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-properties.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-sframe.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-strtab.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf-vxworks.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf.Plo@am__quote@
@@ -1454,7 +1587,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ia64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ip2k.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-iq2000.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-kvx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-lm32.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-loongarch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m32c.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m32r.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-m68hc11.Plo@am__quote@
@@ -1470,7 +1605,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-msp430.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mt.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-nds32.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-nios2.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-or1k.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-pj.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-ppc.Plo@am__quote@
@@ -1492,18 +1626,21 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-vax.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-visium.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-wasm32.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-xc16x.Plo@am__quote@
 @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@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-amdgcn.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-bpf.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-gen.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-hppa.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-ia64-vms.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-ia64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-kvx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-loongarch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-mips.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-mmix.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf64-nfp.Plo@am__quote@
@@ -1518,6 +1655,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfn32-mips.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-aarch64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-ia64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-kvx.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-loongarch.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-mips.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-riscv.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elfxx-sparc.Plo@am__quote@
@@ -1531,7 +1670,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386lynx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386msdos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ihex.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irix-core.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libbfd.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linker.Plo@am__quote@
@@ -1548,21 +1686,27 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/opncls.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/osf-core.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pc532-mach.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdb.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pdp11.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-aarch64.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-aarch64igen.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-arm-wince.Plo@am__quote@
 @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-loongarch64igen.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-riscv64igen.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@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-aarch64.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-arm-wince.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-arm.Plo@am__quote@
 @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-loongarch64.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-riscv64.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@
@@ -1573,7 +1717,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc16.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rs6000-core.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sco5-core.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/section.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simple.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/som.Plo@am__quote@
@@ -1593,6 +1736,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wasm-module.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xcofflink.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xsym.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtensa-dynconfig.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtensa-isa.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xtensa-modules.Plo@am__quote@
 
@@ -1625,6 +1769,143 @@ clean-libtool:
 
 distclean-libtool:
 	-rm -f libtool config.lt
+doc/$(am__dirstamp):
+	@$(MKDIR_P) doc
+	@: > doc/$(am__dirstamp)
+
+doc/bfd.info: doc/bfd.texi $(doc_bfd_TEXINFOS)
+	@test -f doc/$(am__dirstamp) || $(MAKE) $(AM_MAKEFLAGS) doc/$(am__dirstamp)
+	$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+	rm -rf $$backupdir && mkdir $$backupdir && \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
+	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
+	 -o $@ `test -f 'doc/bfd.texi' || echo '$(srcdir)/'`doc/bfd.texi; \
+	then \
+	  rc=0; \
+	else \
+	  rc=$$?; \
+	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+	fi; \
+	rm -rf $$backupdir; exit $$rc
+
+doc/bfd.dvi: doc/bfd.texi $(doc_bfd_TEXINFOS) doc/$(am__dirstamp)
+	$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
+	$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
+	`test -f 'doc/bfd.texi' || echo '$(srcdir)/'`doc/bfd.texi
+
+doc/bfd.pdf: doc/bfd.texi $(doc_bfd_TEXINFOS) doc/$(am__dirstamp)
+	$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc' \
+	$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
+	`test -f 'doc/bfd.texi' || echo '$(srcdir)/'`doc/bfd.texi
+
+doc/bfd.html: doc/bfd.texi $(doc_bfd_TEXINFOS) doc/$(am__dirstamp)
+	$(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
+	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc -I $(srcdir)/doc \
+	 -o $(@:.html=.htp) `test -f 'doc/bfd.texi' || echo '$(srcdir)/'`doc/bfd.texi; \
+	then \
+	  rm -rf $@ && mv $(@:.html=.htp) $@; \
+	else \
+	  rm -rf $(@:.html=.htp); exit 1; \
+	fi
+.dvi.ps:
+	$(AM_V_DVIPS)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	$(DVIPS) $(AM_V_texinfo) -o $@ $<
+
+uninstall-dvi-am:
+	@$(NORMAL_UNINSTALL)
+	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+	done
+
+uninstall-html-am:
+	@$(NORMAL_UNINSTALL)
+	@list='$(HTMLS)'; test -n "$(htmldir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \
+	  rm -rf "$(DESTDIR)$(htmldir)/$$f"; \
+	done
+
+uninstall-info-am:
+	@$(PRE_UNINSTALL)
+	@if test -d '$(DESTDIR)$(infodir)' && $(am__can_run_installinfo); then \
+	  list='$(INFO_DEPS)'; \
+	  for file in $$list; do \
+	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+	    if install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+	    then :; else test ! -f "$(DESTDIR)$(infodir)/$$relfile" || exit 1; fi; \
+	  done; \
+	else :; fi
+	@$(NORMAL_UNINSTALL)
+	@list='$(INFO_DEPS)'; \
+	for file in $$list; do \
+	  relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	  relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \
+	     echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+	     rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+	   else :; fi); \
+	done
+
+uninstall-pdf-am:
+	@$(NORMAL_UNINSTALL)
+	@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+	done
+
+uninstall-ps-am:
+	@$(NORMAL_UNINSTALL)
+	@list='$(PSS)'; test -n "$(psdir)" || list=; \
+	for p in $$list; do \
+	  $(am__strip_dir) \
+	  echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(psdir)/$$f"; \
+	done
+
+dist-info: $(INFO_DEPS)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	list='$(INFO_DEPS)'; \
+	for base in $$list; do \
+	  case $$base in \
+	    $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+	  esac; \
+	  if test -f $$base; then d=.; else d=$(srcdir); fi; \
+	  base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \
+	    if test -f $$file; then \
+	      relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+	      test -f "$(distdir)/$$relfile" || \
+		cp -p $$file "$(distdir)/$$relfile"; \
+	    else :; fi; \
+	  done; \
+	done
+
+mostlyclean-aminfo:
+	-rm -rf doc/bfd.t2d doc/bfd.t2p
+
+clean-aminfo:
+	-test -z "doc/bfd.dvi doc/bfd.pdf doc/bfd.ps doc/bfd.html" \
+	|| rm -rf doc/bfd.dvi doc/bfd.pdf doc/bfd.ps doc/bfd.html
+
+maintainer-clean-aminfo:
+	@list='$(INFO_DEPS)'; for i in $$list; do \
+	  i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+	done
 install-bfdincludeHEADERS: $(bfdinclude_HEADERS)
 	@$(NORMAL_INSTALL)
 	@list='$(bfdinclude_HEADERS)'; test -n "$(bfdincludedir)" || list=; \
@@ -1755,10 +2036,10 @@ distclean-tags:
 check-am: all-am
 check: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) check-recursive
-all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(HEADERS) config.h
+all-am: Makefile $(INFO_DEPS) $(LTLIBRARIES) $(HEADERS) config.h
 installdirs: installdirs-recursive
 installdirs-am:
-	for dir in "$(DESTDIR)$(bfdlibdir)" "$(DESTDIR)$(bfdincludedir)"; do \
+	for dir in "$(DESTDIR)$(bfdlibdir)" "$(DESTDIR)$(infodir)" "$(DESTDIR)$(bfdincludedir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: $(BUILT_SOURCES)
@@ -1790,16 +2071,18 @@ clean-generic:
 distclean-generic:
 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+	-rm -f doc/$(am__dirstamp)
 	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
 	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
 clean: clean-recursive
 
-clean-am: clean-bfdlibLTLIBRARIES clean-generic clean-libtool \
-	clean-noinstLIBRARIES clean-noinstLTLIBRARIES mostlyclean-am
+clean-am: clean-aminfo clean-bfdlibLTLIBRARIES clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES mostlyclean-am
 
 distclean: distclean-recursive
 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -1810,42 +2093,134 @@ distclean-am: clean-am distclean-compile
 
 dvi: dvi-recursive
 
-dvi-am:
+dvi-am: $(DVIS)
 
 html: html-recursive
 
-html-am:
+html-am: $(HTMLS) html-local
 
 info: info-recursive
 
-info-am:
+info-am: $(INFO_DEPS)
 
-install-data-am: install-bfdincludeHEADERS install-bfdlibLTLIBRARIES
+install-data-am: install-bfdincludeHEADERS install-bfdlibLTLIBRARIES \
+	install-info-am
 
 install-dvi: install-dvi-recursive
 
-install-dvi-am:
-
+install-dvi-am: $(DVIS)
+	@$(NORMAL_INSTALL)
+	@list='$(DVIS)'; test -n "$(dvidir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(dvidir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(dvidir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(dvidir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(dvidir)" || exit $$?; \
+	done
 install-exec-am:
 
 install-html: install-html-recursive
 
-install-html-am:
-
+install-html-am: $(HTMLS)
+	@$(NORMAL_INSTALL)
+	@list='$(HTMLS)'; list2=; test -n "$(htmldir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(htmldir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  $(am__strip_dir) \
+	  d2=$$d$$p; \
+	  if test -d "$$d2"; then \
+	    echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \
+	    $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \
+	    echo " $(INSTALL_DATA) '$$d2'/* '$(DESTDIR)$(htmldir)/$$f'"; \
+	    $(INSTALL_DATA) "$$d2"/* "$(DESTDIR)$(htmldir)/$$f" || exit $$?; \
+	  else \
+	    list2="$$list2 $$d2"; \
+	  fi; \
+	done; \
+	test -z "$$list2" || { echo "$$list2" | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(htmldir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(htmldir)" || exit $$?; \
+	done; }
 install-info: install-info-recursive
 
-install-info-am:
-
+install-info-am: $(INFO_DEPS)
+	@$(NORMAL_INSTALL)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(infodir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(infodir)" || exit 1; \
+	fi; \
+	for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	  esac; \
+	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
+	  file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+	               $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+	    if test -f $$ifile; then \
+	      echo "$$ifile"; \
+	    else : ; fi; \
+	  done; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(infodir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(infodir)" || exit $$?; done
+	@$(POST_INSTALL)
+	@if $(am__can_run_installinfo); then \
+	  list='$(INFO_DEPS)'; test -n "$(infodir)" || list=; \
+	  for file in $$list; do \
+	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+	  done; \
+	else : ; fi
 install-man:
 
 install-pdf: install-pdf-recursive
 
-install-pdf-am:
-
+install-pdf-am: $(PDFS)
+	@$(NORMAL_INSTALL)
+	@list='$(PDFS)'; test -n "$(pdfdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(pdfdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(pdfdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pdfdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(pdfdir)" || exit $$?; done
 install-ps: install-ps-recursive
 
-install-ps-am:
-
+install-ps-am: $(PSS)
+	@$(NORMAL_INSTALL)
+	@list='$(PSS)'; test -n "$(psdir)" || list=; \
+	if test -n "$$list"; then \
+	  echo " $(MKDIR_P) '$(DESTDIR)$(psdir)'"; \
+	  $(MKDIR_P) "$(DESTDIR)$(psdir)" || exit 1; \
+	fi; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(psdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(psdir)" || exit $$?; done
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
@@ -1853,55 +2228,67 @@ maintainer-clean: maintainer-clean-recur
 	-rm -rf $(top_srcdir)/autom4te.cache
 	-rm -rf ./$(DEPDIR)
 	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+	maintainer-clean-generic
 
 mostlyclean: mostlyclean-recursive
 
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
+mostlyclean-am: mostlyclean-aminfo mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool
 
 pdf: pdf-recursive
 
-pdf-am:
+pdf-am: $(PDFS)
 
 ps: ps-recursive
 
-ps-am:
+ps-am: $(PSS)
 
-uninstall-am: uninstall-bfdincludeHEADERS uninstall-bfdlibLTLIBRARIES
+uninstall-am: uninstall-bfdincludeHEADERS uninstall-bfdlibLTLIBRARIES \
+	uninstall-dvi-am uninstall-html-am uninstall-info-am \
+	uninstall-pdf-am uninstall-ps-am
 
 .MAKE: $(am__recursive_targets) all check install install-am \
 	install-strip
 
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-	am--refresh check check-am clean clean-bfdlibLTLIBRARIES \
-	clean-cscope clean-generic clean-libtool clean-noinstLIBRARIES \
-	clean-noinstLTLIBRARIES cscope cscopelist-am ctags ctags-am \
-	distclean distclean-compile distclean-generic distclean-hdr \
-	distclean-libtool distclean-tags dvi dvi-am html html-am info \
-	info-am install install-am install-bfdincludeHEADERS \
+	am--refresh check check-am clean clean-aminfo \
+	clean-bfdlibLTLIBRARIES clean-cscope clean-generic \
+	clean-libtool clean-noinstLTLIBRARIES cscope cscopelist-am \
+	ctags ctags-am dist-info distclean distclean-compile \
+	distclean-generic distclean-hdr distclean-libtool \
+	distclean-tags dvi dvi-am html html-am html-local info info-am \
+	install install-am install-bfdincludeHEADERS \
 	install-bfdlibLTLIBRARIES install-data install-data-am \
 	install-dvi install-dvi-am install-exec install-exec-am \
 	install-html install-html-am install-info install-info-am \
 	install-man install-pdf install-pdf-am install-ps \
 	install-ps-am install-strip installcheck installcheck-am \
 	installdirs installdirs-am maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
-	tags tags-am uninstall uninstall-am \
-	uninstall-bfdincludeHEADERS uninstall-bfdlibLTLIBRARIES
+	maintainer-clean-aminfo maintainer-clean-generic mostlyclean \
+	mostlyclean-aminfo mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+	uninstall-am uninstall-bfdincludeHEADERS \
+	uninstall-bfdlibLTLIBRARIES uninstall-dvi-am uninstall-html-am \
+	uninstall-info-am uninstall-pdf-am uninstall-ps-am
 
 .PRECIOUS: Makefile
 
+$(BFD32_LIBS) \
+ $(BFD64_LIBS) \
+ $(ALL_MACHINES) \
+ $(BFD32_BACKENDS) \
+ $(BFD64_BACKENDS) \
+ $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
 
-po/SRC-POTFILES.in: @MAINT@ Makefile $(SRC_POTFILES)
+po/SRC-POTFILES.in: @MAINT@ Makefile
 	for file in $(SRC_POTFILES); do echo $$file; done \
-	  | LC_ALL=C sort > tmp.src \
+	  | LC_ALL=C sort | uniq > tmp.src \
 	  && mv tmp.src $(srcdir)/po/SRC-POTFILES.in
 
-po/BLD-POTFILES.in: @MAINT@ Makefile $(BLD_POTFILES)
+po/BLD-POTFILES.in: @MAINT@ Makefile
 	for file in $(BLD_POTFILES); do echo $$file; done \
-	  | LC_ALL=C sort > tmp.bld \
+	  | LC_ALL=C sort | uniq > tmp.bld \
 	  && mv tmp.bld $(srcdir)/po/BLD-POTFILES.in
 
 all diststuff: info
@@ -1921,113 +2308,107 @@ stamp-ofiles: Makefile
 
 ofiles: stamp-ofiles ; @true
 
-stamp-lib: libbfd.la
-	libtooldir=`$(LIBTOOL) --config | $(SED) -n -e 's/^objdir=//p'`; \
-	if [ -f $$libtooldir/libbfd.a ]; then \
-	  cp $$libtooldir/libbfd.a libbfd.tmp; \
-	  $(RANLIB) libbfd.tmp; \
-	  $(SHELL) $(srcdir)/../move-if-change libbfd.tmp libbfd.a; \
-	else true; fi
-	touch stamp-lib
-
-libbfd.a: stamp-lib ; @true
-
 # This file holds an array associating configuration triplets and
 # vector names.  It is built from config.bfd.  It is not compiled by
 # itself, but is included by targets.c.
 targmatch.h: config.bfd targmatch.sed
-	rm -f targmatch.h
-	$(SED) -f $(srcdir)/targmatch.sed < $(srcdir)/config.bfd > targmatch.new
-	mv -f targmatch.new targmatch.h
+	$(AM_V_at)rm -f targmatch.new
+	$(AM_V_GEN)$(SED) -f $(srcdir)/targmatch.sed < $(srcdir)/config.bfd > targmatch.new
+	$(AM_V_at)mv -f targmatch.new targmatch.h
 
 # When compiling archures.c and targets.c, supply the default target
 # info from configure.
 
 targets.lo: targets.c Makefile
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c
+@am__fastdepCC_TRUE@	$(AM_V_at)mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='targets.c' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c
+@am__fastdepCC_FALSE@	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/targets.c
 
 archures.lo: archures.c Makefile
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c
+@am__fastdepCC_TRUE@	$(AM_V_at)mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='archures.c' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c
+@am__fastdepCC_FALSE@	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $(TDEFAULTS) $(srcdir)/archures.c
 
 dwarf2.lo: dwarf2.c Makefile
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c
-@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c
+@am__fastdepCC_TRUE@	$(AM_V_at)mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='dwarf2.c' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ -DDEBUGDIR=\"$(DEBUGDIR)\" $(srcdir)/dwarf2.c
+@am__fastdepCC_FALSE@	$(AM_V_CC)$(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
+	$(AM_V_GEN)$(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
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/NN/64/g < $< >> $@
+
+elf32-kvx.c : elfnn-kvx.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/NN/32/g < $< >> $@
+
+elf64-kvx.c : elfnn-kvx.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/NN/64/g < $< >> $@
+
+elf32-loongarch.c : elfnn-loongarch.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/NN/32/g < $< >> $@
+
+elf64-loongarch.c : elfnn-loongarch.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(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
-$(BFD32_LIBS) \
- $(BFD64_LIBS) \
- $(ALL_MACHINES) \
- $(BFD32_BACKENDS) \
- $(BFD64_BACKENDS) \
- $(OPTIONAL_BACKENDS): $(BFD_H) $(BFD_H_DEPS) $(LOCAL_H_DEPS)
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/XX/pex64/g < $< >> $@
+
+pe-aarch64igen.c: peXXigen.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/XX/peAArch64/g < $< >> $@
+
+pe-loongarch64igen.c: peXXigen.c
+	$(AM_V_at)echo "#line 1 \"$<\"" > $@
+	$(AM_V_GEN)$(SED) -e s/XX/peLoongArch64/g < $< >> $@
+
+pe-riscv64igen.c: peXXigen.c
+	$(AM_V_at)echo "#line 1 \"peXXigen.c\"" > $@
+	$(AM_V_GEN)$(SED) -e s/XX/peRiscV64/g < $< >> $@
 
 host-aout.lo: Makefile
 
@@ -2047,43 +2428,29 @@ stmp-bfd-h: bfd-in3.h
 	rm -f bfd-tmp.h
 	touch stmp-bfd-h
 
-# Could really use a "copy-if-change"...
-headers:
-	(cd $(bfddocdir); $(MAKE) protos $(FLAGS_TO_PASS))
-	cp $(bfddocdir)/bfd.h bfd-in2.h-new
-	$(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h
-	cp $(bfddocdir)/libbfd.h libbfd.h-new
-	$(SHELL) $(srcdir)/../move-if-change libbfd.h-new $(srcdir)/libbfd.h
-	cp $(bfddocdir)/libcoff.h libcoff.h-new
-	$(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h
-
-# We only rebuild the header files automatically if we have been
-# configured with --enable-maintainer-mode.
+headers: stmp-bin2-h stmp-lbfd-h stmp-lcoff-h
 
 $(srcdir)/bfd-in2.h: @MAINT@ stmp-bin2-h ; @true
-stmp-bin2-h: $(BFD_H_FILES) $(BFD64_H_FILES)
-	(cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) bfd.h)
-	cp $(bfddocdir)/bfd.h bfd-in2.h-new
-	$(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h
-	touch stmp-bin2-h
+stmp-bin2-h: $(BFD_H_FILES) $(BFD64_H_FILES) $(MKDOC)
+	$(AM_V_GEN)H_FILES="$(BFD_H_FILES)" CHEW_FLAGS= ; $(REGEN_HEADER) > bfd-in2.h-new
+	$(AM_V_at)$(SHELL) $(srcdir)/../move-if-change bfd-in2.h-new $(srcdir)/bfd-in2.h
+	$(AM_V_at)touch stmp-bin2-h
 
 $(srcdir)/libbfd.h: @MAINT@ stmp-lbfd-h ; @true
-stmp-lbfd-h: $(LIBBFD_H_FILES)
-	(cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) libbfd.h)
-	cp $(bfddocdir)/libbfd.h libbfd.h-new
-	$(SHELL) $(srcdir)/../move-if-change libbfd.h-new $(srcdir)/libbfd.h
-	touch stmp-lbfd-h
+stmp-lbfd-h: $(LIBBFD_H_FILES) $(MKDOC)
+	$(AM_V_GEN)H_FILES="$(LIBBFD_H_FILES)" CHEW_FLAGS=-i ; $(REGEN_HEADER) > libbfd.h-new
+	$(AM_V_at)$(SHELL) $(srcdir)/../move-if-change libbfd.h-new $(srcdir)/libbfd.h
+	$(AM_V_at)touch stmp-lbfd-h
 
 $(srcdir)/libcoff.h: @MAINT@ stmp-lcoff-h ; @true
-stmp-lcoff-h: $(LIBCOFF_H_FILES)
-	(cd $(bfddocdir); $(MAKE) $(FLAGS_TO_PASS) libcoff.h)
-	cp $(bfddocdir)/libcoff.h libcoff.h-new
-	$(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h
-	touch stmp-lcoff-h
+stmp-lcoff-h: $(LIBCOFF_H_FILES) $(MKDOC)
+	$(AM_V_GEN)H_FILES="$(LIBCOFF_H_FILES)" CHEW_FLAGS=-i ; $(REGEN_HEADER) > libcoff.h-new
+	$(AM_V_at)$(SHELL) $(srcdir)/../move-if-change libcoff.h-new $(srcdir)/libcoff.h
+	$(AM_V_at)touch stmp-lcoff-h
 
 bfdver.h: $(srcdir)/version.h $(srcdir)/development.sh $(srcdir)/Makefile.in
-	@echo "creating $@"
-	@bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
+	$(AM_V_GEN)\
+	bfd_version=`echo "$(VERSION)" | $(SED) -e 's/\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\)\.*\([^\.]*\).*/\1.00\2.00\3.00\4.00\5/' -e 's/\([^\.]*\)\..*\(..\)\..*\(..\)\..*\(..\)\..*\(..\)$$/\1\2\3\4\5/'` ;\
 	bfd_version_string="\"$(VERSION)\"" ;\
 	bfd_soversion="$(VERSION)" ;\
 	bfd_version_package="\"$(PKGVERSION)\"" ;\
@@ -2104,18 +2471,61 @@ bfdver.h: $(srcdir)/version.h $(srcdir)/
 # Disable -Werror, if it has been enabled, since coffswap.h won't
 # compile with gcc 4.5 and above.
 coff-tic4x.lo: coff-tic4x.c
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR)
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR)
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $< $(NO_WERROR)
+@am__fastdepCC_FALSE@	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $< $(NO_WERROR)
 
 coff-tic54x.lo: coff-tic54x.c
-@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR)
-@am__fastdepCC_TRUE@	$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< $(NO_WERROR)
+@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $< $(NO_WERROR)
+@am__fastdepCC_FALSE@	$(AM_V_CC)$(LTCOMPILE) -c -o $@ $< $(NO_WERROR)
+
+$(MKDOC): doc/chew.stamp ; @true
+doc/chew.stamp: $(srcdir)/doc/chew.c doc/$(am__dirstamp)
+	$(AM_V_CCLD)$(CC_FOR_BUILD) -o doc/chw$$$$$(EXEEXT_FOR_BUILD) $(CFLAGS_FOR_BUILD) \
+	  $(WARN_CFLAGS_FOR_BUILD) $(CPPFLAGS_FOR_BUILD) $(LDFLAGS_FOR_BUILD) \
+	  -I. -I$(srcdir) -Idoc -I$(srcdir)/../include -I$(srcdir)/../intl -I../intl \
+	  $(srcdir)/doc/chew.c && \
+	$(SHELL) $(srcdir)/../move-if-change \
+	  doc/chw$$$$$(EXEEXT_FOR_BUILD) $(MKDOC) && \
+	touch $@
+
+.PRECIOUS: doc/%.stamp
+doc/%.texi: doc/%.stamp ; @true
+doc/%.stamp: $(srcdir)/%.c $(srcdir)/doc/doc.str $(MKDOC) doc/$(am__dirstamp)
+	$(AM_V_GEN)$(REGEN_TEXI)
+doc/%.stamp: $(srcdir)/%.h $(srcdir)/doc/doc.str $(MKDOC) doc/$(am__dirstamp)
+	$(AM_V_GEN)$(REGEN_TEXI)
+
+# Avoid the %.stamp generating a builddir/bfd.texi that overrides the
+# srcdir/ as well as regenerating doc/bfd.info for each make run.
+doc/bfd.stamp: $(srcdir)/doc/bfd.texi ; $(AM_V_at)touch $@
+
+# We use bfdt.texi, rather than bfd.texi, to avoid conflicting with
+# bfd.texi on an 8.3 filesystem.
+doc/bfdt.stamp: $(srcdir)/bfd.c $(srcdir)/doc/doc.str $(MKDOC) doc/$(am__dirstamp)
+	$(AM_V_GEN)$(REGEN_TEXI)
+
+doc/bfdver.texi: $(srcdir)/Makefile.in
+	$(AM_V_GEN)\
+	$(MKDIR_P) $(@D); \
+	echo "@set VERSION $(VERSION)" > $@; \
+	if test -n "$(PKGVERSION)"; then \
+	  echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@; \
+	fi; \
+	echo "@set UPDATED `date '+%B %Y'`" >> $@; \
+	if test -n "$(REPORT_BUGS_TEXI)"; then \
+	  echo "@set BUGURL $(REPORT_BUGS_TEXI)" >> $@; \
+	fi
+
+html-local: doc/bfd/index.html
+doc/bfd/index.html: doc/bfd.texi $(bfd_TEXINFOS) doc/$(am__dirstamp)
+	$(AM_V_at)$(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) \
+	  --split=node -o doc/bfd $(srcdir)/doc/bfd.texi
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/makefile.vms ./bfd/makefile.vms
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/makefile.vms	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/makefile.vms	2026-03-05 02:07:20.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-2025 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.20200303/bfd/mep-relocs.pl ./bfd/mep-relocs.pl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mep-relocs.pl	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mep-relocs.pl	2026-03-05 02:07:20.000000000 +0000
@@ -2,7 +2,7 @@
 # -*- perl -*-
 #
 # Toshiba MeP Media Engine Relocation Generator
-# Copyright (C) 2001-2019 Free Software Foundation, Inc.
+# Copyright (C) 2001-2025 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.20200303/bfd/merge.c ./bfd/merge.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/merge.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/merge.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* SEC_MERGE support.
-   Copyright (C) 2001-2019 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
    Written by Jakub Jelinek <jakub@redhat.com>.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -28,16 +28,29 @@
 #include "bfd.h"
 #include "elf-bfd.h"
 #include "libbfd.h"
-#include "hashtab.h"
+#include "objalloc.h"
 #include "libiberty.h"
 
-struct sec_merge_sec_info;
+/* We partition all mergable input sections into sets of similar
+   characteristics.  These sets are the unit of merging.  All content
+   of the input sections is scanned and inserted into a hash table.
+   We also remember an input-offset to entry mapping per input section, but
+   the content itself is removed.  After everything is read in we assign
+   output offsets to all hash entries, and when relocations are processed we
+   lookup the given input offset per input-section, get the matching entry
+   and its output offset (possibly adjusted for offset pointing into the
+   middle of an entry).
+
+   The input-offset-to-entry mapping (in map_ofs/map) is sorted, so in principle
+   we could binary search it, but that's not cache-friendly and it's faster
+   to add another lookup structure that gets us very near the correct
+   entry in just one step (that's what ofstolowbound is for) and do a linear
+   search from there.  */
 
 /* An entry in the section merge hash table.  */
 
 struct sec_merge_hash_entry
 {
-  struct bfd_hash_entry root;
   /* Length of this entry.  This includes the zero terminator.  */
   unsigned int len;
   /* Start of this string needs to be aligned to
@@ -50,10 +63,9 @@ struct sec_merge_hash_entry
     /* Entry this is a suffix of (if alignment is 0).  */
     struct sec_merge_hash_entry *suffix;
   } u;
-  /* Which section is it in.  */
-  struct sec_merge_sec_info *secinfo;
-  /* Next entity in the hash table.  */
+  /* Next entity in the hash table (in order of entering).  */
   struct sec_merge_hash_entry *next;
+  char str[1];
 };
 
 /* The section merge hash table.  */
@@ -61,8 +73,6 @@ struct sec_merge_hash_entry
 struct sec_merge_hash
 {
   struct bfd_hash_table table;
-  /* Next available index.  */
-  bfd_size_type size;
   /* First entity in the SEC_MERGE sections of this type.  */
   struct sec_merge_hash_entry *first;
   /* Last entity in the SEC_MERGE sections of this type.  */
@@ -70,19 +80,52 @@ struct sec_merge_hash
   /* Entity size.  */
   unsigned int entsize;
   /* Are entries fixed size or zero terminated strings?  */
-  bfd_boolean strings;
+  bool strings;
+  /* struct-of-array variant of all entries in the hash-table: */
+  unsigned int nbuckets;
+  /* We keep hash-code and length of entry together in a separate
+     array in such a way that it can be checked with just a single memory
+     reference.  In this way we don't need indirect access to the entries
+     in the normal case.  keys_lens[i] is 'hashcode << 32) | len' for entry
+     i (which is pointed to be values[i]).  */
+  uint64_t *key_lens;
+  struct sec_merge_hash_entry **values;
 };
 
+struct sec_merge_sec_info;
+
+/* Information per merged blob.  This is the unit of merging and is
+   related to (multiple) input sections of similar characteristics
+   (alignment, entity size, strings or blobs).  */
 struct sec_merge_info
 {
   /* Chain of sec_merge_infos.  */
   struct sec_merge_info *next;
-  /* Chain of sec_merge_sec_infos.  */
+  /* Chain of sec_merge_sec_infos.  This first one will be the representative
+     section that conceptually collects all merged content.  */
   struct sec_merge_sec_info *chain;
+  struct sec_merge_sec_info **last;
   /* A hash table used to hold section content.  */
   struct sec_merge_hash *htab;
 };
 
+/* Offset into input mergable sections are represented by this type.
+   Note how doesn't support crazy large mergable sections.  */
+typedef uint32_t mapofs_type;
+
+/* Given a sec_merge_sec_info S this gives the input offset of the IDX's
+   recorded entry.  */
+#define MAP_OFS(S,IDX) (S)->map_ofs[IDX]
+/* And this gives the output offset (in the merged blob representing
+   this S.  */
+#define MAP_IDX(S,IDX) (S)->map[IDX].idx
+/* For quick lookup of output offset given an input offset we store
+   an array mapping intput-offset / OFSDIV to entry index.
+   16 is better than 8, 32 is roughly same as 16, but uses less memory, so
+   we use that. */
+#define OFSDIV 32
+
+/* Information per input merge section.  */
 struct sec_merge_sec_info
 {
   /* Chain of sec_merge_sec_infos.  */
@@ -91,76 +134,240 @@ struct sec_merge_sec_info
   asection *sec;
   /* Pointer to merge_info pointing to us.  */
   void **psecinfo;
-  /* A hash table used to hold section content.  */
-  struct sec_merge_hash *htab;
+  /* The merge entity this is a part of.  */
+  struct sec_merge_info *sinfo;
+  /* The section associated with sinfo (i.e. the representative section).
+     Same as sinfo->chain->sec, but faster to access in the hot function.  */
+  asection *reprsec;
   /* First string in this section.  */
   struct sec_merge_hash_entry *first_str;
-  /* Original section content.  */
-  unsigned char contents[1];
+  /* Sparse mapping from input offset to entry covering that offset:  */
+  unsigned int noffsetmap;  /* Number of these mappings.  */
+  mapofs_type *map_ofs;     /* Input offset.  */
+  union {
+      struct sec_merge_hash_entry *entry;  /* Covering hash entry ... */
+      bfd_size_type idx;                   /* ... or destination offset.  */
+  } *map;
+  /* Quick access: index into map_ofs[].  ofstolowbound[o / OFSDIV]=I is
+     such that map_ofs[I] is the smallest offset higher that
+     rounddown(o, OFSDIV) (and hence I-1 is the largest entry whose offset is
+     smaller or equal to o/OFSDIV*OFSDIV).  */
+  unsigned int *ofstolowbound;
+  int fast_state;
 };
 
 
-/* Routine to create an entry in a section merge hashtab.  */
+/* True when COUNT+ADDED and NBUCKETS indicate that the hash table
+   needs resizing.  */
 
-static struct bfd_hash_entry *
-sec_merge_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 = (struct bfd_hash_entry *)
-	bfd_hash_allocate (table, sizeof (struct sec_merge_hash_entry));
-  if (entry == NULL)
-    return NULL;
+static inline bool
+needs_resize (unsigned int count, unsigned int added, unsigned int nbuckets)
+{
+  /* This doesn't consider the possibility of "count" + "added"
+     overflowing, because that can't happen given current usage.  If
+     code calling this function changes then that assumption may no
+     longer be correct.  Currently "added" is always 1 and "nbuckets"
+     is limited to 0x80000000.  We'll attempt and fail resizing at
+     "count" of 0x55555555.  */
+  return count + added > nbuckets / 3 * 2;
+}
 
-  /* Call the allocation method of the superclass.  */
-  entry = bfd_hash_newfunc (entry, table, string);
+/* Given a merge hash table TABLE and a number of entries to be
+   ADDED, resize the table for this to fit.
+   Returns false if that can't be done for whatever reason.  */
 
-  if (entry != NULL)
-    {
-      /* Initialize the local fields.  */
-      struct sec_merge_hash_entry *ret = (struct sec_merge_hash_entry *) entry;
+static bool
+sec_merge_resize (struct sec_merge_hash *table, unsigned added)
+{
+  struct bfd_hash_table *bfdtab = &table->table;
+  unsigned i;
+  unsigned long newnb = table->nbuckets;
+  struct sec_merge_hash_entry **newv;
+  uint64_t *newl;
+  unsigned long alloc;
+
+  do
+    {
+      if (newnb >> (8 * sizeof(mapofs_type) - 1))
+	return false;
+      newnb *= 2;
+    }
+  while (needs_resize (bfdtab->count, added, newnb));
+
+  alloc = newnb * sizeof (newl[0]);
+  if (alloc / sizeof (newl[0]) != newnb)
+    return false;
+  newl = objalloc_alloc ((struct objalloc *) table->table.memory, alloc);
+  if (newl == NULL)
+    return false;
+  memset (newl, 0, alloc);
+  alloc = newnb * sizeof (newv[0]);
+  if (alloc / sizeof (newv[0]) != newnb)
+    return false;
+  newv = objalloc_alloc ((struct objalloc *) table->table.memory, alloc);
+  if (newv == NULL)
+    return false;
+  memset (newv, 0, alloc);
 
-      ret->u.suffix = NULL;
-      ret->alignment = 0;
-      ret->secinfo = NULL;
-      ret->next = NULL;
+  for (i = 0; i < table->nbuckets; i++)
+    {
+      struct sec_merge_hash_entry *v = table->values[i];
+      if (v)
+	{
+	  uint32_t thishash = table->key_lens[i] >> 32;
+	  unsigned idx = thishash & (newnb - 1);
+	  while (newv[idx])
+	    idx = (idx + 1) & (newnb - 1);
+	  newl[idx] = table->key_lens[i];
+	  newv[idx] = v;
+	}
     }
 
-  return entry;
+  table->key_lens = newl;
+  table->values = newv;
+  table->nbuckets = newnb;
+  return true;
 }
 
-/* Look up an entry in a section merge hash table.  */
+/* Insert STRING (actually a byte blob of length LEN, with pre-computed
+   HASH and bucket _INDEX) into our hash TABLE.  */
 
 static struct sec_merge_hash_entry *
-sec_merge_hash_lookup (struct sec_merge_hash *table, const char *string,
-		       unsigned int alignment, bfd_boolean create)
+sec_merge_hash_insert (struct sec_merge_hash *table,
+		 const char *string,
+		 uint64_t hash, unsigned int len, unsigned int _index)
 {
-  const unsigned char *s;
-  unsigned long hash;
-  unsigned int c;
+  struct bfd_hash_table *bfdtab = &table->table;
   struct sec_merge_hash_entry *hashp;
+
+  hashp = (struct sec_merge_hash_entry *)
+      bfd_hash_allocate (bfdtab, len + sizeof (struct sec_merge_hash_entry));
+  if (hashp == NULL)
+    return NULL;
+
+  memcpy (hashp->str, string, len);
+  hashp->len = len;
+  hashp->alignment = 0;
+  hashp->u.suffix = NULL;
+  hashp->next = NULL;
+
+  if (needs_resize (bfdtab->count, 1, table->nbuckets))
+    {
+      if (!sec_merge_resize (table, 1))
+	return NULL;
+      uint64_t *key_lens = table->key_lens;
+      unsigned int nbuckets = table->nbuckets;
+      _index = hash & (nbuckets - 1);
+      while (1)
+	{
+	  uint64_t candlen = key_lens[_index];
+	  if (!(candlen & (uint32_t)-1))
+	    break;
+	  _index = (_index + 1) & (nbuckets - 1);
+	}
+    }
+
+  bfdtab->count++;
+  table->key_lens[_index] = (hash << 32) | (uint32_t)len;
+  table->values[_index] = hashp;
+
+  return hashp;
+}
+
+/* Read four bytes from *STR, interpret it as 32bit unsigned little
+   endian value and return that.  */
+
+static inline uint32_t
+hash_read32 (const char *str)
+{
+  uint32_t i;
+  /* All reasonable compilers will inline this memcpy and generate optimal
+     code on architectures that support unaligned (4-byte) accesses.  */
+  memcpy(&i, str, 4);
+#ifdef WORDS_BIGENDIAN
+  i = (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24);
+#endif
+  return i;
+}
+
+/* Calculate and return a hashvalue of the bytes at STR[0..LEN-1].
+   All non-zero lengths and all alignments are supported.
+
+   This is somewhat similar to xxh3 (of xxhash), but restricted to 32bit.
+   On cc1 strings this has quite similar statistic properties, and we
+   don't need to jump through hoops to get fast 64x64->128 mults,
+   or 64bit arith on 32 bit hosts.  We also don't care for seeds
+   or secrets.  They improve mixing very little.  */
+
+static uint32_t
+hash_blob (const char *str, unsigned int len)
+{
+  uint32_t ret = 0;
+  uint32_t mul = (1 << 0) +  (1 << 2) + (1 << 3) + (1 << 5) + (1 << 7);
+  mul += (1 << 11) + (1 << 13) + (1 << 17) + (0 << 19) + (1 << 23) + (1 << 29);
+  mul += (1u << 31);
+  if (len >= 8)
+    {
+      uint32_t acc = len * 0x9e3779b1;
+      while (len >= 8)
+	{
+	  uint32_t i1 = hash_read32  (str) ^ (0x396cfeb8 + 1*len);
+	  uint32_t i2 = hash_read32  (str + 4) ^ (0xbe4ba423 + 1*len);
+	  str += 8;
+	  len -= 8;
+	  uint64_t m = (uint64_t)i1 * i2;
+	  acc += (uint32_t)m ^ (uint32_t)(m >> 32);
+	}
+      acc = acc ^ (acc >> 7);
+      uint64_t r = (uint64_t)mul * acc;
+      ret = (uint32_t)r ^ (uint32_t)(r >> 32);
+      if (len == 0)
+	goto end;
+    }
+  if (len >= 4)
+    {
+      uint32_t i1 = hash_read32  (str);
+      uint32_t i2 = hash_read32  (str + len - 4);
+      i1 = ((i1 + len) ^ (i1 >> 7));
+      i2 = i2 ^ (i2 >> 7);
+      uint64_t r = (uint64_t)mul * i1 + i2;
+      ret += r ^ (r >> 32);
+    }
+  else
+    {
+      /* Cleverly read in 1 to 3 bytes without further conditionals.  */
+      unsigned char c1 = str[0];
+      unsigned char c2 = str[len >> 1];
+      unsigned char c3 = str[len - 1];
+      uint32_t i1 = ((uint32_t)c1 << 16) | ((uint32_t)c2 << 24)
+		     | ((uint32_t) c3) | (len << 8);
+      i1 = i1 ^ (i1 >> 7);
+      uint64_t r = (uint64_t)mul * i1;
+      ret += r ^ (r >> 32);
+    }
+end:
+  return ret;
+}
+
+/* Given a hash TABLE, return the hash of STRING (a blob described
+   according to info in TABLE, either a character string, or some fixed
+   size entity) and set *PLEN to the length of this blob.  */
+
+static uint32_t
+hashit (struct sec_merge_hash *table, const char *string, unsigned int *plen)
+{
+  const unsigned char *s;
+  uint32_t hash;
   unsigned int len, i;
-  unsigned int _index;
 
-  hash = 0;
-  len = 0;
   s = (const unsigned char *) string;
   if (table->strings)
     {
       if (table->entsize == 1)
-	{
-	  while ((c = *s++) != '\0')
-	    {
-	      hash += c + (c << 17);
-	      hash ^= hash >> 2;
-	      ++len;
-	    }
-	  hash += len + (len << 17);
-	}
+	len = strlen (string) + 1;
       else
 	{
+	  len = 0;
 	  for (;;)
 	    {
 	      for (i = 0; i < table->entsize; ++i)
@@ -168,72 +375,72 @@ sec_merge_hash_lookup (struct sec_merge_
 		  break;
 	      if (i == table->entsize)
 		break;
-	      for (i = 0; i < table->entsize; ++i)
-		{
-		  c = *s++;
-		  hash += c + (c << 17);
-		  hash ^= hash >> 2;
-		}
+	      s += table->entsize;
 	      ++len;
 	    }
-	  hash += len + (len << 17);
 	  len *= table->entsize;
+	  len += table->entsize;
 	}
-      hash ^= hash >> 2;
-      len += table->entsize;
     }
   else
-    {
-      for (i = 0; i < table->entsize; ++i)
-	{
-	  c = *s++;
-	  hash += c + (c << 17);
-	  hash ^= hash >> 2;
-	}
-      len = table->entsize;
-    }
+    len = table->entsize;
+  hash = hash_blob (string, len);
+  *plen = len;
+  return hash;
+}
 
-  _index = hash % table->table.size;
-  for (hashp = (struct sec_merge_hash_entry *) table->table.table[_index];
-       hashp != NULL;
-       hashp = (struct sec_merge_hash_entry *) hashp->root.next)
-    {
-      if (hashp->root.hash == hash
-	  && len == hashp->len
-	  && memcmp (hashp->root.string, string, len) == 0)
+/* Lookup or insert a blob STRING (of length LEN, precomputed HASH and
+   input ALIGNMENT) into TABLE.  Return the found or new hash table entry.  */
+
+static struct sec_merge_hash_entry *
+sec_merge_hash_lookup (struct sec_merge_hash *table, const char *string,
+		       unsigned int len, uint64_t hash,
+		       unsigned int alignment)
+{
+  struct sec_merge_hash_entry *hashp;
+  unsigned int _index;
+
+  /*printf ("YYY insert 0x%x into %u buckets (%s)\n",
+	  (unsigned)hash, (unsigned)table->nbuckets, string);*/
+  uint64_t *key_lens = table->key_lens;
+  struct sec_merge_hash_entry **values = table->values;
+  uint64_t hlen = (hash << 32) | (uint32_t)len;
+  unsigned int nbuckets = table->nbuckets;
+  _index = hash & (nbuckets - 1);
+  while (1)
+    {
+      uint64_t candlen = key_lens[_index];
+      if (candlen == hlen
+	  && !memcmp (values[_index]->str, string, len))
 	{
-	  /* If the string we found does not have at least the required
-	     alignment, we need to insert another copy.  */
+	  hashp = values[_index];
 	  if (hashp->alignment < alignment)
-	    {
-	      if (create)
-		{
-		  /*  Mark the less aligned copy as deleted.  */
-		  hashp->len = 0;
-		  hashp->alignment = 0;
-		}
-	      break;
-	    }
+	    hashp->alignment = alignment;
 	  return hashp;
 	}
+      if (!(candlen & (uint32_t)-1))
+	break;
+      _index = (_index + 1) & (nbuckets - 1);
     }
 
-  if (! create)
-    return NULL;
-
-  hashp = ((struct sec_merge_hash_entry *)
-	   bfd_hash_insert (&table->table, string, hash));
+  hashp = sec_merge_hash_insert (table, string, hash, len, _index);
   if (hashp == NULL)
     return NULL;
-  hashp->len = len;
   hashp->alignment = alignment;
+
+  if (table->first == NULL)
+    table->first = hashp;
+  else
+    table->last->next = hashp;
+  table->last = hashp;
+
   return hashp;
 }
 
 /* Create a new hash table.  */
 
 static struct sec_merge_hash *
-sec_merge_init (unsigned int entsize, bfd_boolean strings)
+sec_merge_init (unsigned int entsize, bool strings)
 {
   struct sec_merge_hash *table;
 
@@ -241,59 +448,100 @@ sec_merge_init (unsigned int entsize, bf
   if (table == NULL)
     return NULL;
 
-  if (! bfd_hash_table_init_n (&table->table, sec_merge_hash_newfunc,
-			       sizeof (struct sec_merge_hash_entry), 16699))
+  if (! bfd_hash_table_init_n (&table->table, NULL,
+			       sizeof (struct sec_merge_hash_entry), 0x2000))
     {
       free (table);
       return NULL;
     }
 
-  table->size = 0;
   table->first = NULL;
   table->last = NULL;
   table->entsize = entsize;
   table->strings = strings;
 
+  table->nbuckets = 0x2000;
+  table->key_lens = objalloc_alloc ((struct objalloc *) table->table.memory,
+				table->nbuckets * sizeof (table->key_lens[0]));
+  memset (table->key_lens, 0, table->nbuckets * sizeof (table->key_lens[0]));
+  table->values = objalloc_alloc ((struct objalloc *) table->table.memory,
+				table->nbuckets * sizeof (table->values[0]));
+  memset (table->values, 0, table->nbuckets * sizeof (table->values[0]));
+
   return table;
 }
 
-/* Get the index of an entity in a hash table, adding it if it is not
-   already present.  */
-
-static struct sec_merge_hash_entry *
-sec_merge_add (struct sec_merge_hash *tab, const char *str,
-	       unsigned int alignment, struct sec_merge_sec_info *secinfo)
+/* Append the tuple of input-offset O corresponding
+   to hash table ENTRY into SECINFO, such that we later may lookup the
+   entry just by O.  */
+
+static bool
+append_offsetmap (struct sec_merge_sec_info *secinfo,
+		  mapofs_type o,
+		  struct sec_merge_hash_entry *entry)
 {
-  struct sec_merge_hash_entry *entry;
+  if ((secinfo->noffsetmap & 2047) == 0)
+    {
+      bfd_size_type amt;
+      amt = (secinfo->noffsetmap + 2048);
+      secinfo->map_ofs = bfd_realloc (secinfo->map_ofs,
+				      amt * sizeof(secinfo->map_ofs[0]));
+      if (!secinfo->map_ofs)
+	return false;
+      secinfo->map = bfd_realloc (secinfo->map, amt * sizeof(secinfo->map[0]));
+      if (!secinfo->map)
+	return false;
+    }
+  unsigned int i = secinfo->noffsetmap++;
+  MAP_OFS(secinfo, i) = o;
+  secinfo->map[i].entry = entry;
+  return true;
+}
 
-  entry = sec_merge_hash_lookup (tab, str, alignment, TRUE);
-  if (entry == NULL)
-    return NULL;
+/* Prepare the input-offset-to-entry tables after output offsets are
+   determined.  */
 
-  if (entry->secinfo == NULL)
-    {
-      tab->size++;
-      entry->secinfo = secinfo;
-      if (tab->first == NULL)
-	tab->first = entry;
-      else
-	tab->last->next = entry;
-      tab->last = entry;
+static void
+prepare_offsetmap (struct sec_merge_sec_info *secinfo)
+{
+  unsigned int noffsetmap = secinfo->noffsetmap;
+  unsigned int i, lbi;
+  bfd_size_type l, sz, amt;
+
+  secinfo->fast_state = 1;
+
+  for (i = 0; i < noffsetmap; i++)
+    MAP_IDX(secinfo, i) = secinfo->map[i].entry->u.index;
+
+  sz = secinfo->sec->rawsize;
+  amt = (sz / OFSDIV + 1) * sizeof (secinfo->ofstolowbound[0]);
+  secinfo->ofstolowbound = bfd_zmalloc (amt);
+  if (!secinfo->ofstolowbound)
+    return;
+  for (l = lbi = 0; l < sz; l += OFSDIV)
+    {
+      /* No need for bounds checking on lbi, as we've added a sentinel that's
+	 larger than any offset.  */
+      while (MAP_OFS(secinfo, lbi) <= l)
+	lbi++;
+      //BFD_ASSERT ((l / OFSDIV) <= (i / OFSDIV));
+      secinfo->ofstolowbound[l / OFSDIV] = lbi;
     }
-
-  return entry;
+  secinfo->fast_state = 2;
 }
 
-static bfd_boolean
-sec_merge_emit (bfd *abfd, struct sec_merge_hash_entry *entry,
-		unsigned char *contents, file_ptr offset)
+static bool
+sec_merge_emit (bfd *abfd, struct sec_merge_sec_info *secinfo,
+		unsigned char *contents)
 {
-  struct sec_merge_sec_info *secinfo = entry->secinfo;
+  struct sec_merge_hash_entry *entry = secinfo->first_str;
   asection *sec = secinfo->sec;
+  file_ptr offset = sec->output_offset;
   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.  */
@@ -301,13 +549,16 @@ sec_merge_emit (bfd *abfd, struct sec_me
 
   pad = (char *) bfd_zmalloc (pad_len);
   if (pad == NULL)
-    return FALSE;
+    return false;
 
-  for (; entry != NULL && entry->secinfo == secinfo; entry = entry->next)
+  for (; entry != NULL; entry = entry->next)
     {
       const char *str;
       bfd_size_type len;
 
+      if (!entry->len)
+	continue;
+      BFD_ASSERT (entry->alignment);
       len = -off & (entry->alignment - 1);
       if (len != 0)
 	{
@@ -317,12 +568,12 @@ sec_merge_emit (bfd *abfd, struct sec_me
 	      memcpy (contents + offset, pad, len);
 	      offset += len;
 	    }
-	  else if (bfd_bwrite (pad, len, abfd) != len)
+	  else if (bfd_write (pad, len, abfd) != len)
 	    goto err;
 	  off += len;
 	}
 
-      str = entry->root.string;
+      str = entry->str;
       len = entry->len;
 
       if (contents)
@@ -330,43 +581,45 @@ sec_merge_emit (bfd *abfd, struct sec_me
 	  memcpy (contents + offset, str, len);
 	  offset += len;
 	}
-      else if (bfd_bwrite (str, len, abfd) != len)
+      else if (bfd_write (str, len, abfd) != len)
 	goto err;
 
       off += len;
     }
+  BFD_ASSERT (!entry);
 
   /* Trailing alignment needed?  */
   off = sec->size - off;
-  if (off != 0)
+  if (1 && off != 0)
     {
       BFD_ASSERT (off <= pad_len);
       if (contents)
 	memcpy (contents + offset, pad, off);
-      else if (bfd_bwrite (pad, off, abfd) != off)
+      else if (bfd_write (pad, off, abfd) != off)
 	goto err;
     }
 
   free (pad);
-  return TRUE;
+  return true;
 
  err:
   free (pad);
-  return FALSE;
+  return false;
 }
 
 /* Register a SEC_MERGE section as a candidate for merging.
    This function is called for all non-dynamic SEC_MERGE input sections.  */
 
-bfd_boolean
+bool
 _bfd_add_merge_section (bfd *abfd, void **psinfo, asection *sec,
 			void **psecinfo)
 {
   struct sec_merge_info *sinfo;
   struct sec_merge_sec_info *secinfo;
-  unsigned int align;
-  bfd_size_type amt;
-  bfd_byte *contents;
+  asection *repr;
+  unsigned int alignment_power;  /* Octets.  */
+  unsigned int align;            /* Octets.  */
+  unsigned int opb = bfd_octets_per_byte (abfd, sec);
 
   if ((abfd->flags & DYNAMIC) != 0
       || (sec->flags & SEC_MERGE) == 0)
@@ -374,25 +627,33 @@ _bfd_add_merge_section (bfd *abfd, void
 
   if (sec->size == 0
       || (sec->flags & SEC_EXCLUDE) != 0
+      || (sec->flags & SEC_HAS_CONTENTS) == 0
       || sec->entsize == 0)
-    return TRUE;
+    return true;
 
   if (sec->size % sec->entsize != 0)
-    return TRUE;
+    return true;
 
   if ((sec->flags & SEC_RELOC) != 0)
     {
       /* We aren't prepared to handle relocations in merged sections.  */
-      return TRUE;
+      return true;
+    }
+
+  if (sec->size > (mapofs_type)-1)
+    {
+      /* Input offsets must be representable by mapofs_type.  */
+      return true;
     }
 
 #ifndef CHAR_BIT
 #define CHAR_BIT 8
 #endif
-  if (sec->alignment_power >= sizeof (align) * CHAR_BIT)
-    return TRUE;
+  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)))
@@ -405,15 +666,26 @@ _bfd_add_merge_section (bfd *abfd, void
 	 of alignment.  For non-string constants, alignment must
 	 be smaller than or equal to entity size and entity size
 	 must be integer multiple of alignment.  */
-      return TRUE;
+      return true;
     }
 
+  /* Initialize the descriptor for this input section.  */
+
+  *psecinfo = secinfo = bfd_zalloc (abfd, sizeof (*secinfo));
+  if (*psecinfo == NULL)
+    goto error_return;
+
+  secinfo->sec = sec;
+  secinfo->psecinfo = psecinfo;
+
+  /* Search for a matching output merged section.  */
   for (sinfo = (struct sec_merge_info *) *psinfo; sinfo; sinfo = sinfo->next)
-    if ((secinfo = sinfo->chain)
-	&& ! ((secinfo->sec->flags ^ sec->flags) & (SEC_MERGE | SEC_STRINGS))
-	&& secinfo->sec->entsize == sec->entsize
-	&& secinfo->sec->alignment_power == sec->alignment_power
-	&& secinfo->sec->output_section == sec->output_section)
+    if (sinfo->chain
+	&& (repr = sinfo->chain->sec)
+	&& ! ((repr->flags ^ sec->flags) & (SEC_MERGE | SEC_STRINGS))
+	&& repr->entsize == sec->entsize
+	&& repr->alignment_power == sec->alignment_power
+	&& repr->output_section == sec->output_section)
       break;
 
   if (sinfo == NULL)
@@ -425,134 +697,116 @@ _bfd_add_merge_section (bfd *abfd, void
 	goto error_return;
       sinfo->next = (struct sec_merge_info *) *psinfo;
       sinfo->chain = NULL;
+      sinfo->last = &sinfo->chain;
       *psinfo = sinfo;
       sinfo->htab = sec_merge_init (sec->entsize, (sec->flags & SEC_STRINGS));
       if (sinfo->htab == NULL)
 	goto error_return;
     }
 
-  /* Read the section from abfd.  */
+  *sinfo->last = secinfo;
+  sinfo->last = &secinfo->next;
 
-  amt = sizeof (struct sec_merge_sec_info) - 1 + sec->size;
-  if (sec->flags & SEC_STRINGS)
-    /* Some versions of gcc may emit a string without a zero terminator.
-       See http://gcc.gnu.org/ml/gcc-patches/2006-06/msg01004.html
-       Allocate space for an extra zero.  */
-    amt += sec->entsize;
-  *psecinfo = bfd_alloc (abfd, amt);
-  if (*psecinfo == NULL)
-    goto error_return;
-
-  secinfo = (struct sec_merge_sec_info *) *psecinfo;
-  if (sinfo->chain)
-    {
-      secinfo->next = sinfo->chain->next;
-      sinfo->chain->next = secinfo;
-    }
-  else
-    secinfo->next = secinfo;
-  sinfo->chain = secinfo;
-  secinfo->sec = sec;
-  secinfo->psecinfo = psecinfo;
-  secinfo->htab = sinfo->htab;
-  secinfo->first_str = NULL;
-
-  sec->rawsize = sec->size;
-  if (sec->flags & SEC_STRINGS)
-    memset (secinfo->contents + sec->size, 0, sec->entsize);
-  contents = secinfo->contents;
-  if (! bfd_get_full_section_contents (sec->owner, sec, &contents))
-    goto error_return;
+  secinfo->sinfo = sinfo;
+  secinfo->reprsec = sinfo->chain->sec;
 
-  return TRUE;
+  return true;
 
  error_return:
   *psecinfo = NULL;
-  return FALSE;
+  return false;
 }
 
-/* Record one section into the hash table.  */
-static bfd_boolean
+/* Record one whole input section (described by SECINFO) into the hash table
+   SINFO.  Returns true when section is completely recorded, and false when
+   it wasn't recorded but we can continue (e.g. by simply not deduplicating
+   this section).  */
+
+static bool
 record_section (struct sec_merge_info *sinfo,
 		struct sec_merge_sec_info *secinfo)
 {
   asection *sec = secinfo->sec;
   struct sec_merge_hash_entry *entry;
-  bfd_boolean nul;
   unsigned char *p, *end;
   bfd_vma mask, eltalign;
-  unsigned int align, i;
+  unsigned int align;
+  bfd_size_type amt;
+  bfd_byte *contents;
+  void *tmpptr;
+
+  amt = sec->size;
+  if (sec->flags & SEC_STRINGS)
+    /* Some versions of gcc may emit a string without a zero terminator.
+       See http://gcc.gnu.org/ml/gcc-patches/2006-06/msg01004.html
+       Allocate space for an extra zero.  */
+    amt += sec->entsize;
+  contents = bfd_malloc (amt);
+  if (!contents)
+    goto error_return;
 
+  /* Slurp in all section contents (possibly decompressing it).  */
+  sec->rawsize = sec->size;
+  if (sec->flags & SEC_STRINGS)
+    memset (contents + sec->size, 0, sec->entsize);
+  if (! bfd_get_full_section_contents (sec->owner, sec, &contents))
+    goto error_return;
+
+  /* Now populate the hash table and offset mapping.  */
+
+  /* Walk through the contents, calculate hashes and length of all
+     blobs (strings or fixed-size entries) we find and fill the
+     hash and offset tables.  */
   align = sec->alignment_power;
-  end = secinfo->contents + sec->size;
-  nul = FALSE;
   mask = ((bfd_vma) 1 << align) - 1;
-  if (sec->flags & SEC_STRINGS)
-    {
-      for (p = secinfo->contents; p < end; )
-	{
-	  eltalign = p - secinfo->contents;
-	  eltalign = ((eltalign ^ (eltalign - 1)) + 1) >> 1;
-	  if (!eltalign || eltalign > mask)
-	    eltalign = mask + 1;
-	  entry = sec_merge_add (sinfo->htab, (char *) p, (unsigned) eltalign,
-				 secinfo);
-	  if (! entry)
-	    goto error_return;
-	  p += entry->len;
-	  if (sec->entsize == 1)
-	    {
-	      while (p < end && *p == 0)
-		{
-		  if (!nul && !((p - secinfo->contents) & mask))
-		    {
-		      nul = TRUE;
-		      entry = sec_merge_add (sinfo->htab, "",
-					     (unsigned) mask + 1, secinfo);
-		      if (! entry)
-			goto error_return;
-		    }
-		  p++;
-		}
-	    }
-	  else
-	    {
-	      while (p < end)
-		{
-		  for (i = 0; i < sec->entsize; i++)
-		    if (p[i] != '\0')
-		      break;
-		  if (i != sec->entsize)
-		    break;
-		  if (!nul && !((p - secinfo->contents) & mask))
-		    {
-		      nul = TRUE;
-		      entry = sec_merge_add (sinfo->htab, (char *) p,
-					     (unsigned) mask + 1, secinfo);
-		      if (! entry)
-			goto error_return;
-		    }
-		  p += sec->entsize;
-		}
-	    }
-	}
-    }
-  else
+  end = contents + sec->size;
+  for (p = contents; p < end;)
     {
-      for (p = secinfo->contents; p < end; p += sec->entsize)
-	{
-	  entry = sec_merge_add (sinfo->htab, (char *) p, 1, secinfo);
-	  if (! entry)
-	    goto error_return;
-	}
+      unsigned len;
+      uint32_t hash = hashit (sinfo->htab, (char*) p, &len);
+      unsigned int ofs = p - contents;
+      eltalign = ofs;
+      eltalign = ((eltalign ^ (eltalign - 1)) + 1) >> 1;
+      if (!eltalign || eltalign > mask)
+	eltalign = mask + 1;
+      entry = sec_merge_hash_lookup (sinfo->htab, (char *) p, len, hash,
+				     (unsigned) eltalign);
+      if (! entry)
+	goto error_return;
+      if (! append_offsetmap (secinfo, ofs, entry))
+	goto error_return;
+      p += len;
     }
 
-  return TRUE;
+  /* Add a sentinel element that's conceptually behind all others.  */
+  append_offsetmap (secinfo, sec->size, NULL);
+  /* But don't count it.  */
+  secinfo->noffsetmap--;
+
+  free (contents);
+  contents = NULL;
+
+  /* We allocate the ofsmap arrays in blocks of 2048 elements.
+     In case we have very many small input files/sections,
+     this might waste large amounts of memory, so reallocate these
+     arrays here to their true size.  */
+  amt = secinfo->noffsetmap + 1;
+  tmpptr = bfd_realloc (secinfo->map, amt * sizeof(secinfo->map[0]));
+  if (tmpptr)
+    secinfo->map = tmpptr;
+  tmpptr = bfd_realloc (secinfo->map_ofs, amt * sizeof(secinfo->map_ofs[0]));
+  if (tmpptr)
+    secinfo->map_ofs = tmpptr;
 
-error_return:
-  for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
-    *secinfo->psecinfo = NULL;
-  return FALSE;
+  /*printf ("ZZZ %s:%s %u entries\n", sec->owner->filename, sec->name,
+	  (unsigned)secinfo->noffsetmap);*/
+
+  return true;
+
+ error_return:
+  free (contents);
+  contents = NULL;
+  return false;
 }
 
 /* qsort comparison function.  Won't ever return zero as all entries
@@ -565,8 +819,8 @@ strrevcmp (const void *a, const void *b)
   struct sec_merge_hash_entry *B = *(struct sec_merge_hash_entry **) b;
   unsigned int lenA = A->len;
   unsigned int lenB = B->len;
-  const unsigned char *s = (const unsigned char *) A->root.string + lenA - 1;
-  const unsigned char *t = (const unsigned char *) B->root.string + lenB - 1;
+  const unsigned char *s = (const unsigned char *) A->str + lenA - 1;
+  const unsigned char *t = (const unsigned char *) B->str + lenB - 1;
   int l = lenA < lenB ? lenA : lenB;
 
   while (l)
@@ -590,8 +844,8 @@ strrevcmp_align (const void *a, const vo
   struct sec_merge_hash_entry *B = *(struct sec_merge_hash_entry **) b;
   unsigned int lenA = A->len;
   unsigned int lenB = B->len;
-  const unsigned char *s = (const unsigned char *) A->root.string + lenA - 1;
-  const unsigned char *t = (const unsigned char *) B->root.string + lenB - 1;
+  const unsigned char *s = (const unsigned char *) A->str + lenA - 1;
+  const unsigned char *t = (const unsigned char *) B->str + lenB - 1;
   int l = lenA < lenB ? lenA : lenB;
   int tail_align = (lenA & (A->alignment - 1)) - (lenB & (A->alignment - 1));
 
@@ -618,8 +872,8 @@ is_suffix (const struct sec_merge_hash_e
        not to be equal by the hash table.  */
     return 0;
 
-  return memcmp (A->root.string + (A->len - B->len),
-		 B->root.string, B->len) == 0;
+  return memcmp (A->str + (A->len - B->len),
+		 B->str, B->len) == 0;
 }
 
 /* This is a helper function for _bfd_merge_sections.  It attempts to
@@ -633,7 +887,7 @@ merge_strings (struct sec_merge_info *si
   unsigned int alignment = 0;
 
   /* Now sort the strings */
-  amt = sinfo->htab->size * sizeof (struct sec_merge_hash_entry *);
+  amt = sinfo->htab->table.count * sizeof (struct sec_merge_hash_entry *);
   array = (struct sec_merge_hash_entry **) bfd_malloc (amt);
   if (array == NULL)
     return NULL;
@@ -653,10 +907,10 @@ merge_strings (struct sec_merge_info *si
 	  }
       }
 
-  sinfo->htab->size = a - array;
-  if (sinfo->htab->size != 0)
+  size_t asize = a - array;
+  if (asize != 0)
     {
-      qsort (array, (size_t) sinfo->htab->size,
+      qsort (array, asize,
 	     sizeof (struct sec_merge_hash_entry *),
 	     (alignment != (unsigned) -1 && alignment > sinfo->htab->entsize
 	      ? strrevcmp_align : strrevcmp));
@@ -685,21 +939,11 @@ merge_strings (struct sec_merge_info *si
 
   /* Now assign positions to the strings we want to keep.  */
   size = 0;
-  secinfo = sinfo->htab->first->secinfo;
+  secinfo = sinfo->chain;
   for (e = sinfo->htab->first; e; e = e->next)
     {
-      if (e->secinfo != secinfo)
-	{
-	  secinfo->sec->size = size;
-	  secinfo = e->secinfo;
-	}
       if (e->alignment)
 	{
-	  if (e->secinfo->first_str == NULL)
-	    {
-	      e->secinfo->first_str = e;
-	      size = 0;
-	    }
 	  size = (size + e->alignment - 1) & ~((bfd_vma) e->alignment - 1);
 	  e->u.index = size;
 	  size += e->len;
@@ -717,18 +961,21 @@ merge_strings (struct sec_merge_info *si
 	*a = e->next;
 	if (e->len)
 	  {
-	    e->secinfo = e->u.suffix->secinfo;
 	    e->alignment = e->u.suffix->alignment;
 	    e->u.index = e->u.suffix->u.index + (e->u.suffix->len - e->len);
 	  }
       }
+
+  BFD_ASSERT (!secinfo->first_str);
+  secinfo->first_str = sinfo->htab->first;
+
   return secinfo;
 }
 
 /* This function is called once after all SEC_MERGE sections are registered
    with _bfd_merge_section.  */
 
-bfd_boolean
+bool
 _bfd_merge_sections (bfd *abfd,
 		     struct bfd_link_info *info ATTRIBUTE_UNUSED,
 		     void *xsinfo,
@@ -739,35 +986,28 @@ _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;
 
-      /* Move sinfo->chain to head of the chain, terminate it.  */
-      secinfo = sinfo->chain;
-      sinfo->chain = secinfo->next;
-      secinfo->next = NULL;
-
       /* Record the sections into the hash table.  */
       align = 1;
       for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
-	if (secinfo->sec->flags & SEC_EXCLUDE)
+	if (secinfo->sec->flags & SEC_EXCLUDE
+	    || !record_section (sinfo, secinfo))
 	  {
 	    *secinfo->psecinfo = NULL;
 	    if (remove_hook)
 	      (*remove_hook) (abfd, secinfo->sec);
 	  }
-	else
+	else if (align)
 	  {
-	    if (!record_section (sinfo, secinfo))
-	      return FALSE;
-	    if (align)
-	      {
-		align = (bfd_size_type) 1 << secinfo->sec->alignment_power;
-		if ((secinfo->sec->size & (align - 1)) != 0)
-		  align = 0;
-	      }
+	    unsigned int opb = bfd_octets_per_byte (abfd, secinfo->sec);
+
+	    align = (bfd_size_type) 1 << secinfo->sec->alignment_power;
+	    if (((secinfo->sec->size / opb) & (align - 1)) != 0)
+	      align = 0;
 	  }
 
       if (sinfo->htab->first == NULL)
@@ -777,29 +1017,27 @@ _bfd_merge_sections (bfd *abfd,
 	{
 	  secinfo = merge_strings (sinfo);
 	  if (!secinfo)
-	    return FALSE;
+	    return false;
 	}
       else
 	{
-	  struct sec_merge_hash_entry *e;
-	  bfd_size_type size = 0;
+	  struct sec_merge_hash_entry *e = sinfo->htab->first;
+	  bfd_size_type size = 0;  /* Octets.  */
 
 	  /* Things are much simpler for non-strings.
 	     Just assign them slots in the section.  */
-	  secinfo = NULL;
+	  secinfo = sinfo->chain;
+	  BFD_ASSERT (!secinfo->first_str);
+	  secinfo->first_str = e;
 	  for (e = sinfo->htab->first; e; e = e->next)
 	    {
-	      if (e->secinfo->first_str == NULL)
+	      if (e->alignment)
 		{
-		  if (secinfo)
-		    secinfo->sec->size = size;
-		  e->secinfo->first_str = e;
-		  size = 0;
+		  size = (size + e->alignment - 1)
+			 & ~((bfd_vma) e->alignment - 1);
+		  e->u.index = size;
+		  size += e->len;
 		}
-	      size = (size + e->alignment - 1) & ~((bfd_vma) e->alignment - 1);
-	      e->u.index = size;
-	      size += e->len;
-	      secinfo = e->secinfo;
 	    }
 	  secinfo->sec->size = size;
 	}
@@ -812,16 +1050,17 @@ _bfd_merge_sections (bfd *abfd,
       /* Finally remove all input sections which have not made it into
 	 the hash table at all.  */
       for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
-	if (secinfo->first_str == NULL)
+	if (secinfo->first_str == NULL
+	    && secinfo->sec->sec_info_type == SEC_INFO_TYPE_MERGE)
 	  secinfo->sec->flags |= SEC_EXCLUDE | SEC_KEEP;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write out the merged section.  */
 
-bfd_boolean
+bool
 _bfd_write_merged_section (bfd *output_bfd, asection *sec, void *psecinfo)
 {
   struct sec_merge_sec_info *secinfo;
@@ -832,10 +1071,10 @@ _bfd_write_merged_section (bfd *output_b
   secinfo = (struct sec_merge_sec_info *) psecinfo;
 
   if (!secinfo)
-    return FALSE;
+    return false;
 
   if (secinfo->first_str == NULL)
-    return TRUE;
+    return true;
 
   /* FIXME: octets_per_byte.  */
   hdr = &elf_section_data (sec->output_section)->this_hdr;
@@ -844,8 +1083,7 @@ _bfd_write_merged_section (bfd *output_b
       /* We must compress this section.  Write output to the
 	 buffer.  */
       contents = hdr->contents;
-      if ((sec->output_section->flags & SEC_ELF_COMPRESS) == 0
-	  || contents == NULL)
+      if (contents == NULL)
 	abort ();
     }
   else
@@ -853,14 +1091,15 @@ _bfd_write_merged_section (bfd *output_b
       contents = NULL;
       pos = sec->output_section->filepos + sec->output_offset;
       if (bfd_seek (output_bfd, pos, SEEK_SET) != 0)
-	return FALSE;
+	return false;
     }
 
-  if (! sec_merge_emit (output_bfd, secinfo->first_str, contents,
-			sec->output_offset))
-    return FALSE;
+  BFD_ASSERT (sec == secinfo->sec);
+  BFD_ASSERT (secinfo == secinfo->sinfo->chain);
+  if (! sec_merge_emit (output_bfd, secinfo, contents))
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Adjust an address in the SEC_MERGE section.  Given OFFSET within
@@ -872,8 +1111,6 @@ _bfd_merged_section_offset (bfd *output_
 			    void *psecinfo, bfd_vma offset)
 {
   struct sec_merge_sec_info *secinfo;
-  struct sec_merge_hash_entry *entry;
-  unsigned char *p;
   asection *sec = *psec;
 
   secinfo = (struct sec_merge_sec_info *) psecinfo;
@@ -891,55 +1128,27 @@ _bfd_merged_section_offset (bfd *output_
       return secinfo->first_str ? sec->size : 0;
     }
 
-  if (secinfo->htab->strings)
+  if (secinfo->fast_state != 2)
     {
-      if (sec->entsize == 1)
-	{
-	  p = secinfo->contents + offset - 1;
-	  while (p >= secinfo->contents && *p)
-	    --p;
-	  ++p;
-	}
-      else
-	{
-	  p = secinfo->contents + (offset / sec->entsize) * sec->entsize;
-	  p -= sec->entsize;
-	  while (p >= secinfo->contents)
-	    {
-	      unsigned int i;
-
-	      for (i = 0; i < sec->entsize; ++i)
-		if (p[i] != '\0')
-		  break;
-	      if (i == sec->entsize)
-		break;
-	      p -= sec->entsize;
-	    }
-	  p += sec->entsize;
-	}
-    }
-  else
-    {
-      p = secinfo->contents + (offset / sec->entsize) * sec->entsize;
-    }
-  entry = sec_merge_hash_lookup (secinfo->htab, (char *) p, 0, FALSE);
-  if (!entry)
-    {
-      if (! secinfo->htab->strings)
-	abort ();
-      /* This should only happen if somebody points into the padding
-	 after a NUL character but before next entity.  */
-      if (*p)
-	abort ();
-      if (! secinfo->htab->first)
-	abort ();
-      entry = secinfo->htab->first;
-      p = (secinfo->contents + (offset / sec->entsize + 1) * sec->entsize
-	   - entry->len);
-    }
-
-  *psec = entry->secinfo->sec;
-  return entry->u.index + (secinfo->contents + offset - p);
+      if (!secinfo->fast_state)
+	prepare_offsetmap (secinfo);
+      if (secinfo->fast_state != 2)
+	return offset;
+    }
+
+  long lb = secinfo->ofstolowbound[offset / OFSDIV];
+  *psec = secinfo->reprsec;
+
+  /* No need for bounds checking on lb, as we've added a sentinel that's
+     larger than any offset.  */
+  while (MAP_OFS(secinfo, lb) <= offset)
+    lb++;
+  lb--;
+
+  /*printf ("YYY (%s:%s):%u -> (%s):%u\n",
+	  sec->owner->filename, sec->name, (unsigned)offset,
+	  (*psec)->name, (unsigned)lb);*/
+  return MAP_IDX(secinfo, lb) + offset - MAP_OFS(secinfo, lb);
 }
 
 /* Tidy up when done.  */
@@ -951,6 +1160,13 @@ _bfd_merge_sections_free (void *xsinfo)
 
   for (sinfo = (struct sec_merge_info *) xsinfo; sinfo; sinfo = sinfo->next)
     {
+      struct sec_merge_sec_info *secinfo;
+      for (secinfo = sinfo->chain; secinfo; secinfo = secinfo->next)
+	{
+	  free (secinfo->ofstolowbound);
+	  free (secinfo->map);
+	  free (secinfo->map_ofs);
+	}
       bfd_hash_table_free (&sinfo->htab->table);
       free (sinfo->htab);
     }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mmo.c ./bfd/mmo.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/mmo.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/mmo.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Hans-Peter Nilsson (hp@bitrange.com).
    Infrastructure and other bits originally copied from srec.c and
    binary.c.
@@ -307,7 +307,7 @@ struct mmo_data_struct
 
     /* When we're reading bytes recursively, check this occasionally.
        Also holds write errors.  */
-    bfd_boolean have_error;
+    bool have_error;
 
     /* Max symbol length that may appear in the lop_stab table.  Note that
        this table might just hold a subset of symbols for not-really large
@@ -334,10 +334,10 @@ struct mmo_data_struct
     /* Whether we've calculated symbol consistency requirement yet.  We do this
        when-needed, which must be at some time after all section
        contents is known.  */
-    bfd_boolean symbol_consistency_override_calculated;
+    bool symbol_consistency_override_calculated;
 
     /* Whether to consistency-check symbol values, in particular "Main".  */
-    bfd_boolean ignore_symbol_consistency;
+    bool ignore_symbol_consistency;
   };
 
 typedef struct mmo_data_struct tdata_type;
@@ -358,7 +358,7 @@ struct mmo_section_data_struct
 struct mmo_write_sec_info
   {
     asection *reg_section;
-    bfd_boolean retval;
+    bool retval;
   };
 
 /* Used when trying to find a section corresponding to addr.  */
@@ -368,7 +368,7 @@ struct mmo_find_sec_info
     bfd_vma addr;
   };
 
-static bfd_boolean mmo_bfd_copy_private_bfd_data (bfd *, bfd *);
+static bool mmo_bfd_copy_private_bfd_data (bfd *, bfd *);
 static void mmo_write_section_unless_reg_contents (bfd *, asection *, void *);
 static void mmo_find_sec_w_addr (bfd *, asection *, void *);
 static void mmo_find_sec_w_addr_grow (bfd *, asection *, void *);
@@ -377,59 +377,55 @@ static void mmo_get_symbol_info (bfd *,
 static void mmo_print_symbol (bfd *, void *, asymbol *,
 			      bfd_print_symbol_type);
 static void mmo_init (void);
-static bfd_boolean mmo_mkobject (bfd *);
-static bfd_boolean mmo_scan (bfd *);
+static bool mmo_mkobject (bfd *);
+static bool mmo_scan (bfd *);
 static asection *mmo_decide_section (bfd *, bfd_vma);
 static asection *mmo_get_generic_spec_data_section (bfd *, int);
 static asection *mmo_get_spec_section (bfd *, int);
-static INLINE bfd_byte *mmo_get_loc (asection *, bfd_vma, int);
-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_byte *mmo_get_loc (asection *, bfd_vma, unsigned int);
+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,
-				      enum mmo_sym_type, unsigned int);
-static bfd_boolean mmo_get_section_contents (bfd *, asection *, void *,
-					     file_ptr, bfd_size_type);
+static bool mmo_get_symbols (bfd *);
+static bool mmo_create_symbol (bfd *, const char *, bfd_vma,
+			       enum mmo_sym_type, unsigned int);
+static bool mmo_get_section_contents (bfd *, asection *, void *,
+				      file_ptr, bfd_size_type);
 static long mmo_get_symtab_upper_bound (bfd *);
 static long mmo_canonicalize_symtab (bfd *, asymbol **);
 static void mmo_get_symbol_info (bfd *, asymbol *, symbol_info *);
 static void mmo_print_symbol (bfd *, void *, asymbol *,
 			      bfd_print_symbol_type);
-static bfd_boolean mmo_set_section_contents (bfd *, sec_ptr, const void *,
-					     file_ptr, bfd_size_type);
+static bool mmo_set_section_contents (bfd *, sec_ptr, const void *,
+				      file_ptr, bfd_size_type);
 static int mmo_sizeof_headers (bfd *, struct bfd_link_info *);
-static bfd_boolean mmo_internal_write_header (bfd *);
-static bfd_boolean mmo_internal_write_post (bfd *, int, asection *);
-static bfd_boolean mmo_internal_add_3_sym (bfd *, struct mmo_symbol_trie *,
+static bool mmo_internal_write_header (bfd *);
+static bool mmo_internal_write_post (bfd *, int, asection *);
+static bool mmo_internal_add_3_sym (bfd *, struct mmo_symbol_trie *,
 					   const struct mmo_symbol *);
 static unsigned int mmo_internal_3_length (bfd *, struct mmo_symbol_trie *);
 static void mmo_internal_3_dump (bfd *, struct mmo_symbol_trie *);
 static void mmo_beb128_out (bfd *, int, int);
-static bfd_boolean mmo_internal_write_section (bfd *, asection *);
+static bool mmo_internal_write_section (bfd *, asection *);
 static void mmo_write_tetra (bfd *, unsigned int);
 static void mmo_write_tetra_raw (bfd *, unsigned int);
 static void mmo_write_octa (bfd *, bfd_vma);
 static void mmo_write_octa_raw (bfd *, bfd_vma);
-static bfd_boolean mmo_write_chunk (bfd *, const bfd_byte *, unsigned int);
-static bfd_boolean mmo_flush_chunk (bfd *);
-static bfd_boolean mmo_write_loc_chunk (bfd *, bfd_vma, const bfd_byte *,
-					unsigned int, bfd_vma *);
-static bfd_boolean mmo_write_chunk_list (bfd *, mmo_data_list_type *);
-static bfd_boolean mmo_write_loc_chunk_list (bfd *, mmo_data_list_type *);
-static bfd_boolean mmo_write_symbols_and_terminator (bfd *);
+static bool mmo_write_chunk (bfd *, const bfd_byte *, unsigned int);
+static bool mmo_flush_chunk (bfd *);
+static bool mmo_write_loc_chunk (bfd *, bfd_vma, const bfd_byte *,
+				 unsigned int, bfd_vma *);
+static bool mmo_write_chunk_list (bfd *, mmo_data_list_type *);
+static bool mmo_write_loc_chunk_list (bfd *, mmo_data_list_type *);
+static bool mmo_write_symbols_and_terminator (bfd *);
 static flagword mmo_sec_flags_from_bfd_flags (flagword);
 static flagword bfd_sec_flags_from_mmo_flags (flagword);
 static bfd_byte mmo_get_byte (bfd *);
 static void mmo_write_byte (bfd *, bfd_byte);
-static bfd_boolean mmo_new_section_hook (bfd *, asection *);
+static bool mmo_new_section_hook (bfd *, asection *);
 static int mmo_sort_mmo_symbols (const void *, const void *);
-static bfd_boolean mmo_write_object_contents (bfd *);
-static bfd_boolean mmo_write_section_description (bfd *, asection *);
-static bfd_boolean mmo_has_leading_or_trailing_zero_tetra_p (bfd *,
-							     asection *);
+static bool mmo_write_object_contents (bfd *);
+static bool mmo_write_section_description (bfd *, asection *);
+static bool mmo_has_leading_or_trailing_zero_tetra_p (bfd *, asection *);
 
 static const char
 valid_mmo_symbol_character_set[] =
@@ -467,17 +463,15 @@ mmo_make_section (bfd *abfd, const char
 
   if (sec == NULL)
     {
-      char *newsecname = strdup (secname);
+      size_t len = strlen (secname) + 1;
+      char *newsecname = bfd_alloc (abfd, len);
 
       if (newsecname == NULL)
 	{
-	  _bfd_error_handler
-	    /* xgettext:c-format */
-	    (_("%pB: no core to allocate section name %s"),
-	     abfd, secname);
-	  bfd_set_error (bfd_error_system_call);
+	  bfd_set_error (bfd_error_no_memory);
 	  return NULL;
 	}
+      memcpy (newsecname, secname, len);
       sec = bfd_make_section (abfd, newsecname);
     }
 
@@ -491,16 +485,16 @@ mmo_make_section (bfd *abfd, const char
 static void
 mmo_init (void)
 {
-  static bfd_boolean inited = FALSE;
+  static bool inited = false;
 
   if (inited)
     return;
-  inited = TRUE;
+  inited = true;
 }
 
 /* Check whether an existing file is an mmo file.  */
 
-static const bfd_target *
+static bfd_cleanup
 mmo_object_p (bfd *abfd)
 {
   struct stat statbuf;
@@ -509,8 +503,8 @@ mmo_object_p (bfd *abfd)
   mmo_init ();
 
   if (bfd_stat (abfd, &statbuf) < 0
-      || bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bread (b, 4, abfd) != 4)
+      || bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_read (b, 4, abfd) != 4)
     goto bad_final;
 
   /* All mmo files are a multiple of four bytes long.
@@ -520,8 +514,8 @@ mmo_object_p (bfd *abfd)
     goto bad_format;
 
   /* Get the last 32-bit word.  */
-  if (bfd_seek (abfd, (file_ptr) statbuf.st_size - 4, SEEK_SET) != 0
-      || bfd_bread (b, 4, abfd) != 4)
+  if (bfd_seek (abfd, statbuf.st_size - 4, SEEK_SET) != 0
+      || bfd_read (b, 4, abfd) != 4)
     goto bad_final;
 
   /* Check if the file ends in a lop_end lopcode. */
@@ -532,7 +526,7 @@ mmo_object_p (bfd *abfd)
      important as all of the symbol information can only be 256k.  */
   abfd->tdata.mmo_data->max_symbol_length = (b[2] * 256 + b[3]) * 4;
   abfd->tdata.mmo_data->lop_stab_symbol
-    = bfd_malloc (abfd->tdata.mmo_data->max_symbol_length + 1);
+    = bfd_alloc (abfd, abfd->tdata.mmo_data->max_symbol_length + 1);
 
   if (abfd->tdata.mmo_data->lop_stab_symbol == NULL)
     {
@@ -545,7 +539,7 @@ mmo_object_p (bfd *abfd)
 
   /* Read in everything.  */
   if (! mmo_scan (abfd))
-    goto bad_format_free;
+    goto bad_format;
 
   if (abfd->symcount > 0)
     abfd->flags |= HAS_SYMS;
@@ -554,12 +548,10 @@ mmo_object_p (bfd *abfd)
      arches (not recommended due to its small-size limitations).  Look at
      the ELF format for how to make it target-generic.  */
   if (! bfd_default_set_arch_mach (abfd, bfd_arch_mmix, 0))
-    goto bad_format_free;
+    goto bad_format;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
- bad_format_free:
-  free (abfd->tdata.mmo_data->lop_stab_symbol);
  bad_format:
   bfd_set_error (bfd_error_wrong_format);
  bad_final:
@@ -568,31 +560,26 @@ mmo_object_p (bfd *abfd)
 
 /* Set up the mmo tdata information.  */
 
-static bfd_boolean
+static bool
 mmo_mkobject (bfd *abfd)
 {
   mmo_init ();
 
-  if (abfd->tdata.mmo_data == NULL)
-    {
-      time_t created;
-
-      /* All fields are zero-initialized, so we don't have to explicitly
-	 initialize most.  */
-      tdata_type *tdata = (tdata_type *) bfd_zmalloc (sizeof (tdata_type));
-      if (tdata == NULL)
-	return FALSE;
+  /* All fields are zero-initialized, so we don't have to explicitly
+     initialize most.  */
+  tdata_type *tdata = bfd_zalloc (abfd, sizeof (tdata_type));
+  if (tdata == NULL)
+    return false;
 
-      created = time (NULL);
-      bfd_put_32 (abfd, created, tdata->created);
+  time_t created = time (NULL);
+  bfd_put_32 (abfd, created, tdata->created);
 
-      abfd->tdata.mmo_data = tdata;
-    }
+  abfd->tdata.mmo_data = tdata;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 mmo_section_has_contents (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *p ATTRIBUTE_UNUSED)
 {
   /* The point is to match what --extract-symbols does (well, negated).  */
@@ -606,7 +593,7 @@ mmo_section_has_contents (bfd *abfd ATTR
    known.  However, calculating symbol consistency at the time the
    private BFD data is initialized is too late for some uses.  */
 
-static bfd_boolean
+static bool
 mmo_ignore_symbol_consistency (bfd *abfd)
 {
   if (!abfd->tdata.mmo_data->symbol_consistency_override_calculated)
@@ -614,25 +601,25 @@ mmo_ignore_symbol_consistency (bfd *abfd
       abfd->tdata.mmo_data->ignore_symbol_consistency =
 	bfd_sections_find_if (abfd, mmo_section_has_contents, NULL) == NULL;
 
-      abfd->tdata.mmo_data->symbol_consistency_override_calculated = TRUE;
+      abfd->tdata.mmo_data->symbol_consistency_override_calculated = true;
     }
 
   return abfd->tdata.mmo_data->ignore_symbol_consistency;
 }
 
-static bfd_boolean
+static bool
 mmo_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   if (bfd_get_flavour (ibfd) != bfd_target_mmo_flavour
       || bfd_get_flavour (obfd) != bfd_target_mmo_flavour)
-    return TRUE;
+    return true;
 
   /* Copy the time the copied-from file was created.  If people want the
      time the file was last *modified*, they have that in the normal file
      information.  */
   memcpy (obfd->tdata.mmo_data->created, ibfd->tdata.mmo_data->created,
 	  sizeof (obfd->tdata.mmo_data->created));
-  return TRUE;
+  return true;
 }
 
 /* Helper functions for mmo_decide_section, used through
@@ -731,7 +718,7 @@ mmo_decide_section (bfd *abfd, bfd_vma v
   sprintf (sec_name, ".MMIX.sec.%d", abfd->tdata.mmo_data->sec_no++);
   sec = mmo_make_section (abfd, sec_name);
 
-  if (!sec->user_set_vma && !bfd_set_section_vma (sec, vma))
+  if (!sec || (!sec->user_set_vma && !bfd_set_section_vma (sec, vma)))
     return NULL;
 
   if (!bfd_set_section_flags (sec, (bfd_section_flags (sec)
@@ -742,56 +729,68 @@ mmo_decide_section (bfd *abfd, bfd_vma v
 
 /* Xor in a 64-bit value VALUE at VMA.  */
 
-static INLINE void
+static inline bfd_byte *
 mmo_xore_64 (asection *sec, bfd_vma vma, bfd_vma value)
 {
   bfd_byte *loc = mmo_get_loc (sec, vma, 8);
-  bfd_vma prev = bfd_get_64 (sec->owner, loc);
+  if (loc)
+    {
+      bfd_vma prev = bfd_get_64 (sec->owner, loc);
 
-  value ^= prev;
-  bfd_put_64 (sec->owner, value, loc);
+      value ^= prev;
+      bfd_put_64 (sec->owner, value, loc);
+    }
+  return loc;
 }
 
 /* Xor in a 32-bit value VALUE at VMA.  */
 
-static INLINE void
+static inline bfd_byte *
 mmo_xore_32 (asection *sec, bfd_vma vma, unsigned int value)
 {
   bfd_byte *loc = mmo_get_loc (sec, vma, 4);
-  unsigned int prev = bfd_get_32 (sec->owner, loc);
+  if (loc)
+    {
+      unsigned int prev = bfd_get_32 (sec->owner, loc);
 
-  value ^= prev;
-  bfd_put_32 (sec->owner, value, loc);
+      value ^= prev;
+      bfd_put_32 (sec->owner, value, loc);
+    }
+  return loc;
 }
 
 /* Xor in a 16-bit value VALUE at VMA.  */
 
-static INLINE void
+static inline bfd_byte *
 mmo_xore_16 (asection *sec, bfd_vma vma, unsigned int value)
 {
   bfd_byte *loc = mmo_get_loc (sec, vma, 2);
-  unsigned int prev = bfd_get_16 (sec->owner, loc);
+  if (loc)
+    {
+      unsigned int prev = bfd_get_16 (sec->owner, loc);
 
-  value ^= prev;
-  bfd_put_16 (sec->owner, value, loc);
+      value ^= prev;
+      bfd_put_16 (sec->owner, value, loc);
+    }
+  return loc;
 }
 
 /* Write a 32-bit word to output file, no lop_quote generated.  */
 
-static INLINE void
+static inline void
 mmo_write_tetra_raw (bfd *abfd, unsigned int value)
 {
   bfd_byte buf[4];
 
   bfd_put_32 (abfd, value, buf);
 
-  if (bfd_bwrite (buf, 4, abfd) != 4)
-    abfd->tdata.mmo_data->have_error = TRUE;
+  if (bfd_write (buf, 4, abfd) != 4)
+    abfd->tdata.mmo_data->have_error = true;
 }
 
 /* Write a 32-bit word to output file; lop_quote if necessary.  */
 
-static INLINE void
+static inline void
 mmo_write_tetra (bfd *abfd, unsigned int value)
 {
   if (((value >> 24) & 0xff) == LOP)
@@ -802,7 +801,7 @@ mmo_write_tetra (bfd *abfd, unsigned int
 
 /* Write a 64-bit word to output file, perhaps with lop_quoting.  */
 
-static INLINE void
+static inline void
 mmo_write_octa (bfd *abfd, bfd_vma value)
 {
   mmo_write_tetra (abfd, (unsigned int) (value >> 32));
@@ -811,7 +810,7 @@ mmo_write_octa (bfd *abfd, bfd_vma value
 
 /* Write a 64-bit word to output file, without lop_quoting.  */
 
-static INLINE void
+static inline void
 mmo_write_octa_raw (bfd *abfd, bfd_vma value)
 {
   mmo_write_tetra_raw (abfd, (unsigned int) (value >> 32));
@@ -821,10 +820,10 @@ mmo_write_octa_raw (bfd *abfd, bfd_vma v
 /* Write quoted contents.  Intended to be called multiple times in
    sequence, followed by a call to mmo_flush_chunk.  */
 
-static INLINE bfd_boolean
+static inline bool
 mmo_write_chunk (bfd *abfd, const bfd_byte *loc, unsigned int len)
 {
-  bfd_boolean retval = TRUE;
+  bool retval = true;
   struct mmo_data_struct *mmop = abfd->tdata.mmo_data;
 
   /* Fill up a tetra from bytes remaining from a previous chunk.  */
@@ -850,7 +849,7 @@ mmo_write_chunk (bfd *abfd, const bfd_by
 
       retval = (retval
 		&& ! mmop->have_error
-		&& 4 == bfd_bwrite (loc, 4, abfd));
+		&& 4 == bfd_write (loc, 4, abfd));
 
       loc += 4;
       len -= 4;
@@ -866,14 +865,14 @@ mmo_write_chunk (bfd *abfd, const bfd_by
     }
 
   if (! retval)
-    mmop->have_error = TRUE;
+    mmop->have_error = true;
   return retval;
 }
 
 /* Flush remaining bytes, from a previous mmo_write_chunk, zero-padded to
    4 bytes.  */
 
-static INLINE bfd_boolean
+static inline bool
 mmo_flush_chunk (bfd *abfd)
 {
   if (abfd->tdata.mmo_data->byte_no != 0)
@@ -890,12 +889,12 @@ mmo_flush_chunk (bfd *abfd)
 
 /* Same, but from a list.  */
 
-static INLINE bfd_boolean
+static inline bool
 mmo_write_chunk_list (bfd *abfd, mmo_data_list_type *datap)
 {
   for (; datap != NULL; datap = datap->next)
     if (! mmo_write_chunk (abfd, datap->data, datap->size))
-      return FALSE;
+      return false;
 
   return mmo_flush_chunk (abfd);
 }
@@ -904,7 +903,7 @@ mmo_write_chunk_list (bfd *abfd, mmo_dat
    mmo_flush_chunk after calling this function.  The location is only
    output if different than *LAST_VMAP, which is updated after this call.  */
 
-static bfd_boolean
+static bool
 mmo_write_loc_chunk (bfd *abfd, bfd_vma vma, const bfd_byte *loc,
 		     unsigned int len, bfd_vma *last_vmap)
 {
@@ -953,7 +952,7 @@ mmo_write_loc_chunk (bfd *abfd, bfd_vma
 	       " address %#" PRIx64 ""),
 	     abfd, (uint64_t) vma);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       /* We always write the location as 64 bits; no use saving bytes
@@ -971,7 +970,7 @@ mmo_write_loc_chunk (bfd *abfd, bfd_vma
 
 /* Same, but from a list.  */
 
-static INLINE bfd_boolean
+static inline bool
 mmo_write_loc_chunk_list (bfd *abfd, mmo_data_list_type *datap)
 {
   /* Get an address different than the address of the first chunk.  */
@@ -980,7 +979,7 @@ mmo_write_loc_chunk_list (bfd *abfd, mmo
   for (; datap != NULL; datap = datap->next)
     if (! mmo_write_loc_chunk (abfd, datap->where, datap->data, datap->size,
 			       &last_vma))
-      return FALSE;
+      return false;
 
   return mmo_flush_chunk (abfd);
 }
@@ -1028,7 +1027,7 @@ mmo_get_spec_section (bfd *abfd, int spe
   orig_pos = bfd_tell (abfd);
 
   /* Read the length (in 32-bit words).  */
-  if (bfd_bread (buf, 4, abfd) != 4)
+  if (bfd_read (buf, 4, abfd) != 4)
     goto format_error;
 
   if (buf[0] == LOP)
@@ -1036,7 +1035,7 @@ mmo_get_spec_section (bfd *abfd, int spe
       if (buf[1] != LOP_QUOTE)
 	goto format_error;
 
-      if (bfd_bread (buf, 4, abfd) != 4)
+      if (bfd_read (buf, 4, abfd) != 4)
 	goto format_error;
     }
 
@@ -1054,7 +1053,7 @@ mmo_get_spec_section (bfd *abfd, int spe
 
   for (i = 0; i < secname_length / 4; i++)
     {
-      if (bfd_bread (secname + i * 4, 4, abfd) != 4)
+      if (bfd_read (secname + i * 4, 4, abfd) != 4)
 	goto format_error_free;
 
       if (secname[i * 4] == (char) LOP)
@@ -1062,7 +1061,7 @@ mmo_get_spec_section (bfd *abfd, int spe
 	  /* A bit of overkill, but we handle char 0x98 in a section name,
 	     and recognize misparsing.  */
 	  if (secname[i * 4 + 1] != LOP_QUOTE
-	      || bfd_bread (secname + i * 4, 4, abfd) != 4)
+	      || bfd_read (secname + i * 4, 4, abfd) != 4)
 	    /* Whoops.  We thought this was a name, and now we found a
 	       non-lop_quote lopcode before we parsed the whole length of
 	       the name.  Signal end-of-file in the same manner.  */
@@ -1071,26 +1070,26 @@ mmo_get_spec_section (bfd *abfd, int spe
     }
 
   /* Get the section flags.  */
-  if (bfd_bread (buf, 4, abfd) != 4
+  if (bfd_read (buf, 4, abfd) != 4
       || (buf[0] == LOP
-	  && (buf[1] != LOP_QUOTE || bfd_bread (buf, 4, abfd) != 4)))
+	  && (buf[1] != LOP_QUOTE || bfd_read (buf, 4, abfd) != 4)))
     goto format_error_free;
 
   flags = bfd_get_32 (abfd, buf);
 
   /* Get the section length.  */
-  if (bfd_bread (buf, 4, abfd) != 4
+  if (bfd_read (buf, 4, abfd) != 4
       || (buf[0] == LOP
-	  && (buf[1] != LOP_QUOTE || bfd_bread (buf, 4, abfd) != 4)))
+	  && (buf[1] != LOP_QUOTE || bfd_read (buf, 4, abfd) != 4)))
     goto format_error_free;
 
   section_length = (bfd_vma) bfd_get_32 (abfd, buf) << 32;
 
   /* That's the first, high-part.  Now get the low part.  */
 
-  if (bfd_bread (buf, 4, abfd) != 4
+  if (bfd_read (buf, 4, abfd) != 4
       || (buf[0] == LOP
-	  && (buf[1] != LOP_QUOTE || bfd_bread (buf, 4, abfd) != 4)))
+	  && (buf[1] != LOP_QUOTE || bfd_read (buf, 4, abfd) != 4)))
     goto format_error_free;
 
   section_length |= (bfd_vma) bfd_get_32 (abfd, buf);
@@ -1100,17 +1099,17 @@ mmo_get_spec_section (bfd *abfd, int spe
     goto format_error_free;
 
   /* Get the section VMA.  */
-  if (bfd_bread (buf, 4, abfd) != 4
+  if (bfd_read (buf, 4, abfd) != 4
       || (buf[0] == LOP
-	  && (buf[1] != LOP_QUOTE || bfd_bread (buf, 4, abfd) != 4)))
+	  && (buf[1] != LOP_QUOTE || bfd_read (buf, 4, abfd) != 4)))
     goto format_error_free;
 
   section_vma = (bfd_vma) bfd_get_32 (abfd, buf) << 32;
 
   /* That's the first, high-part.  Now get the low part.  */
-  if (bfd_bread (buf, 4, abfd) != 4
+  if (bfd_read (buf, 4, abfd) != 4
       || (buf[0] == LOP
-	  && (buf[1] != LOP_QUOTE || bfd_bread (buf, 4, abfd) != 4)))
+	  && (buf[1] != LOP_QUOTE || bfd_read (buf, 4, abfd) != 4)))
     goto format_error_free;
 
   section_vma |= (bfd_vma) bfd_get_32 (abfd, buf);
@@ -1122,8 +1121,8 @@ mmo_get_spec_section (bfd *abfd, int spe
 
   /* We allocate a buffer here for the advertised size, with head room for
      tetrabyte alignment.  */
-  loc = bfd_zmalloc (section_length + 3
-		     + sizeof (struct mmo_data_list_struct));
+  loc = bfd_zalloc (abfd, (section_length + 3
+			   + sizeof (struct mmo_data_list_struct)));
   if (loc == NULL)
     goto format_error;
 
@@ -1174,15 +1173,14 @@ mmo_get_byte (bfd *abfd)
 
   if (abfd->tdata.mmo_data->byte_no == 0)
     {
-      if (! abfd->tdata.mmo_data->have_error
-	  && bfd_bread (abfd->tdata.mmo_data->buf, 4, abfd) != 4)
-	{
-	  abfd->tdata.mmo_data->have_error = TRUE;
-
-	  /* A value somewhat safe against tripping on some inconsistency
-	     when mopping up after this error.  */
-	  return 128;
-	}
+      if (!abfd->tdata.mmo_data->have_error
+	  && bfd_read (abfd->tdata.mmo_data->buf, 4, abfd) != 4)
+	abfd->tdata.mmo_data->have_error = true;
+
+      /* A value somewhat safe against tripping on some inconsistency
+	 when mopping up after this error.  */
+      if (abfd->tdata.mmo_data->have_error)
+	return 128;
     }
 
   retval = abfd->tdata.mmo_data->buf[abfd->tdata.mmo_data->byte_no];
@@ -1200,14 +1198,14 @@ mmo_write_byte (bfd *abfd, bfd_byte valu
   if ((abfd->tdata.mmo_data->byte_no % 4) == 0)
     {
       if (! abfd->tdata.mmo_data->have_error
-	  && bfd_bwrite (abfd->tdata.mmo_data->buf, 4, abfd) != 4)
-	abfd->tdata.mmo_data->have_error = TRUE;
+	  && bfd_write (abfd->tdata.mmo_data->buf, 4, abfd) != 4)
+	abfd->tdata.mmo_data->have_error = true;
     }
 }
 
 /* Create a symbol.  */
 
-static bfd_boolean
+static bool
 mmo_create_symbol (bfd *abfd, const char *symname, bfd_vma addr, enum
 		   mmo_sym_type sym_type, unsigned int serno)
 {
@@ -1215,11 +1213,11 @@ mmo_create_symbol (bfd *abfd, const char
 
   n = (struct mmo_symbol *) bfd_alloc (abfd, sizeof (struct mmo_symbol));
   if (n == NULL)
-    return FALSE;
+    return false;
 
   n->name = bfd_alloc (abfd, strlen (symname) + 1);
   if (n->name == NULL)
-    return FALSE;
+    return false;
 
   strcpy (n->name, symname);
 
@@ -1249,15 +1247,15 @@ mmo_create_symbol (bfd *abfd, const char
 	   " is not `Main'\n"),
 	 abfd);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read in symbols.  */
 
-static bfd_boolean
+static bool
 mmo_get_symbols (bfd *abfd)
 {
 /*
@@ -1363,7 +1361,7 @@ SUBSECTION
 
   /* Check first if we have a bad hair day.  */
   if (abfd->tdata.mmo_data->have_error)
-    return FALSE;
+    return false;
 
   if (m & MMO3_LEFT)
     /* Traverse left trie. */
@@ -1396,13 +1394,23 @@ SUBSECTION
 		   " 0x%02X 0x%02X after symbol name starting with `%s'\n"),
 		 abfd, c, c2, abfd->tdata.mmo_data->lop_stab_symbol);
 	      bfd_set_error (bfd_error_bad_value);
-	      abfd->tdata.mmo_data->have_error = TRUE;
-	      return FALSE;
+	      abfd->tdata.mmo_data->have_error = true;
+	      return false;
 	    }
 	  else
 	    c = c2;
 	}
 
+      if (abfd->tdata.mmo_data->symbol_position
+	  >= abfd->tdata.mmo_data->max_symbol_length)
+	{
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB: symbol name exceeds given max length of %d"),
+	     abfd, abfd->tdata.mmo_data->max_symbol_length);
+	  abfd->tdata.mmo_data->have_error = true;
+	  return false;
+	}
       abfd->tdata.mmo_data->lop_stab_symbol[abfd->tdata.mmo_data->symbol_position++] = c;
       abfd->tdata.mmo_data->lop_stab_symbol[abfd->tdata.mmo_data->symbol_position] = 0;
 
@@ -1451,7 +1459,7 @@ SUBSECTION
 				      abfd->tdata.mmo_data->lop_stab_symbol
 				      + 1,
 				      addr, sym_type, serno))
-	    abfd->tdata.mmo_data->have_error = TRUE;
+	    abfd->tdata.mmo_data->have_error = true;
 	}
 
       if (m & MMO3_MIDDLE)
@@ -1473,8 +1481,8 @@ SUBSECTION
    If there's new contents, allocate to the next multiple of
    MMO_SEC_CONTENTS_CHUNK_SIZE.  */
 
-static INLINE bfd_byte *
-mmo_get_loc (asection *sec, bfd_vma vma, int size)
+static bfd_byte *
+mmo_get_loc (asection *sec, bfd_vma vma, unsigned int size)
 {
   bfd_size_type allocated_size;
   struct mmo_section_data_struct *sdatap = mmo_section_data (sec);
@@ -1486,27 +1494,29 @@ mmo_get_loc (asection *sec, bfd_vma vma,
   for (; datap != NULL; datap = datap->next)
     {
       if (datap->where <= vma
-	  && datap->where + datap->size >= vma + size)
-	return datap->data + vma - datap->where;
+	  && datap->size >= size
+	  && datap->size - size >= vma - datap->where)
+	return datap->data + (vma - datap->where);
       else if (datap->where <= vma
-	       && datap->where + datap->allocated_size >= vma + size
+	       && datap->allocated_size >= size
+	       && datap->allocated_size - size >= vma - datap->where
 	       /* Only munch on the "allocated size" if it does not
 		  overlap the next chunk.  */
 	       && (datap->next == NULL || datap->next->where >= vma + size))
 	{
 	  /* There was room allocated, but the size wasn't set to include
 	     it.  Do that now.  */
-	  datap->size += (vma + size) - (datap->where + datap->size);
+	  datap->size = vma - datap->where + size;
 
 	  /* Update the section size.  This happens only if we update the
 	     32-bit-aligned chunk size.  Callers that have
 	     non-32-bit-aligned sections should do all allocation and
 	     size-setting by themselves or at least set the section size
 	     after the last allocating call to this function.  */
-	  if (vma + size > sec->vma + sec->size)
-	    sec->size += (vma + size) - (sec->vma + sec->size);
+	  if (vma - sec->vma + size > sec->size)
+	    sec->size = vma - sec->vma + size;
 
-	  return datap->data + vma - datap->where;
+	  return datap->data + (vma - datap->where);
 	}
     }
 
@@ -1517,7 +1527,7 @@ mmo_get_loc (asection *sec, bfd_vma vma,
      for no more than MMO_SEC_CONTENTS_CHUNK_SIZE will always get resolved.  */
 
   for (datap = sdatap->head; datap != NULL; datap = datap->next)
-    if ((datap->where <= vma && datap->where + datap->size > vma)
+    if ((datap->where <= vma && datap->size > vma - datap->where)
 	|| (datap->where < vma + size
 	    && datap->where + datap->size >= vma + size))
       return NULL;
@@ -1565,8 +1575,8 @@ mmo_get_loc (asection *sec, bfd_vma vma,
 
   /* Update the section size.  This happens only when we add contents and
      re-size as we go.  The section size will then be aligned to 32 bits.  */
-  if (vma + size > sec->vma + sec->size)
-    sec->size += (vma + size) - (sec->vma + sec->size);
+  if (vma - sec->vma + size > sec->size)
+    sec->size = vma - sec->vma + size;
   return entry->data;
 }
 
@@ -1581,14 +1591,14 @@ mmo_map_set_sizes (bfd *abfd ATTRIBUTE_U
 
 /* Read the mmo file and turn it into sections.  */
 
-static bfd_boolean
+static bool
 mmo_scan (bfd *abfd)
 {
   unsigned int i;
-  unsigned int lineno = 1;
-  bfd_boolean error = FALSE;
+  unsigned int lineno ATTRIBUTE_UNUSED = 1;
+  bool 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;
@@ -1600,10 +1610,10 @@ mmo_scan (bfd *abfd)
   abfd->symcount = 0;
   memset (file_names, 0, sizeof (file_names));
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
     goto error_return;
 
-  while ((nbytes_read = bfd_bread (buf, 4, abfd)) == 4)
+  while ((nbytes_read = bfd_read (buf, 4, abfd)) == 4)
     {
       if (buf[0] == LOP)
 	{
@@ -1642,11 +1652,17 @@ mmo_scan (bfd *abfd)
 		  bfd_set_error (bfd_error_bad_value);
 		  goto error_return;
 		}
-	      if (bfd_bread (buf, 4, abfd) != 4)
+	      if (bfd_read (buf, 4, abfd) != 4)
 		goto error_return;
 
 	      vma &= ~3;
-	      mmo_xore_32 (sec, vma, bfd_get_32 (abfd, buf));
+	      if (sec == NULL)
+		sec = bfd_make_section_old_way (abfd, MMO_TEXT_SECTION_NAME);
+	      if (!mmo_xore_32 (sec, vma, bfd_get_32 (abfd, buf)))
+		{
+		  bfd_set_error (bfd_error_bad_value);
+		  goto error_return;
+		}
 	      vma += 4;
 	      lineno++;
 	      break;
@@ -1657,7 +1673,7 @@ mmo_scan (bfd *abfd)
 	      if (z == 1)
 		{
 		  /* Get a 32-bit value.  */
-		  if (bfd_bread (buf, 4, abfd) != 4)
+		  if (bfd_read (buf, 4, abfd) != 4)
 		    goto error_return;
 
 		  vma += bfd_get_32 (abfd, buf);
@@ -1665,7 +1681,7 @@ mmo_scan (bfd *abfd)
 	      else if (z == 2)
 		{
 		  /* Get a 64-bit value.  */
-		  if (bfd_bread (buf, 8, abfd) != 8)
+		  if (bfd_read (buf, 8, abfd) != 8)
 		    goto error_return;
 
 		  vma += bfd_get_64 (abfd, buf);
@@ -1708,7 +1724,7 @@ mmo_scan (bfd *abfd)
 		if (z == 1)
 		  {
 		    /* Get a 32-bit value.  */
-		    if (bfd_bread (buf, 4, abfd) != 4)
+		    if (bfd_read (buf, 4, abfd) != 4)
 		      goto error_return;
 
 		    p += bfd_get_32 (abfd, buf);
@@ -1716,7 +1732,7 @@ mmo_scan (bfd *abfd)
 		else if (z == 2)
 		  {
 		    /* Get a 64-bit value.  */
-		    if (bfd_bread (buf, 8, abfd) != 8)
+		    if (bfd_read (buf, 8, abfd) != 8)
 		      goto error_return;
 
 		    p += bfd_get_64 (abfd, buf);
@@ -1737,7 +1753,11 @@ mmo_scan (bfd *abfd)
 		fixosec = mmo_decide_section (abfd, p);
 		if (fixosec == NULL)
 		  goto error_return;
-		mmo_xore_64 (fixosec, p, vma);
+		if (!mmo_xore_64 (fixosec, p, vma))
+		  {
+		    bfd_set_error (bfd_error_bad_value);
+		    goto error_return;
+		  }
 	      }
 	    break;
 
@@ -1749,7 +1769,11 @@ mmo_scan (bfd *abfd)
 		asection *fixrsec = mmo_decide_section (abfd, p);
 		if (fixrsec == NULL)
 		  goto error_return;
-		mmo_xore_16 (fixrsec, p, yz);
+		if (!mmo_xore_16 (fixrsec, p, yz))
+		  {
+		    bfd_set_error (bfd_error_bad_value);
+		    goto error_return;
+		  }
 	      }
 	    break;
 
@@ -1785,7 +1809,7 @@ mmo_scan (bfd *abfd)
 		  }
 
 		/* Get the next 32-bit value.  */
-		if (bfd_bread (buf, 4, abfd) != 4)
+		if (bfd_read (buf, 4, abfd) != 4)
 		  goto error_return;
 
 		delta = bfd_get_32 (abfd, buf);
@@ -1812,7 +1836,11 @@ mmo_scan (bfd *abfd)
 		fixrsec = mmo_decide_section (abfd, vma);
 		if (fixrsec == NULL)
 		  goto error_return;
-		mmo_xore_32 (fixrsec, p, delta);
+		if (!mmo_xore_32 (fixrsec, p, delta))
+		  {
+		    bfd_set_error (bfd_error_bad_value);
+		    goto error_return;
+		  }
 	      }
 	    break;
 
@@ -1838,7 +1866,7 @@ mmo_scan (bfd *abfd)
 
 		  for (i = 0; i < z; i++)
 		    {
-		      if (bfd_bread (fname + i * 4, 4, abfd) != 4)
+		      if (bfd_read (fname + i * 4, 4, abfd) != 4)
 			{
 			  free (fname);
 			  goto error_return;
@@ -1853,6 +1881,7 @@ mmo_scan (bfd *abfd)
 			   " was already entered as `%s'\n"),
 			 abfd, y, fname, file_names[y]);
 		      bfd_set_error (bfd_error_bad_value);
+		      free (fname);
 		      goto error_return;
 		    }
 
@@ -1899,12 +1928,12 @@ mmo_scan (bfd *abfd)
 		   creation time from the first 32-bit word with the time
 		   in seconds since era.  */
 		if (z >= 1
-		    && bfd_bread (abfd->tdata.mmo_data->created, 4,
+		    && bfd_read (abfd->tdata.mmo_data->created, 4,
 				 abfd) != 4)
 		  goto error_return;
 
 		for (i = 1; i < z; i++)
-		  if (bfd_bread (buf, 4, abfd) != 4)
+		  if (bfd_read (buf, 4, abfd) != 4)
 		    goto error_return;
 	      }
 	      break;
@@ -1921,7 +1950,7 @@ mmo_scan (bfd *abfd)
 
 		/* Read first octaword outside loop to simplify logic when
 		   excluding the Z == 255, octa == 0 case.  */
-		if (bfd_bread (buf, 8, abfd) != 8)
+		if (bfd_read (buf, 8, abfd) != 8)
 		  goto error_return;
 
 		first_octa = bfd_get_64 (abfd, buf);
@@ -1936,17 +1965,22 @@ mmo_scan (bfd *abfd)
 		    rsec->flags |= SEC_LINKER_CREATED;
 		    rsec->vma = z * 8;
 		    loc = mmo_get_loc (rsec, z * 8, (255 - z) * 8);
+		    if (!loc)
+		      {
+			bfd_set_error (bfd_error_bad_value);
+			goto error_return;
+		      }
 		    bfd_put_64 (abfd, first_octa, loc);
 
 		    for (i = z + 1; i < 255; i++)
 		      {
-			if (bfd_bread (loc + (i - z) * 8, 8, abfd) != 8)
+			if (bfd_read (loc + (i - z) * 8, 8, abfd) != 8)
 			  goto error_return;
 		      }
 
 		    /* Read out the last octabyte, and use it to set the
 		       start address.  */
-		    if (bfd_bread (buf, 8, abfd) != 8)
+		    if (bfd_read (buf, 8, abfd) != 8)
 		      goto error_return;
 
 		    startaddr_octa = bfd_get_64 (abfd, buf);
@@ -2038,7 +2072,13 @@ mmo_scan (bfd *abfd)
       else
 	{
 	  /* This wasn't a lopcode, so store it in the current section.  */
-	  mmo_xore_32 (sec, vma & ~3, bfd_get_32 (abfd, buf));
+	  if (sec == NULL)
+	    sec = bfd_make_section_old_way (abfd, MMO_TEXT_SECTION_NAME);
+	  if (!mmo_xore_32 (sec, vma & ~3, bfd_get_32 (abfd, buf)))
+	    {
+	      bfd_set_error (bfd_error_bad_value);
+	      goto error_return;
+	    }
 	  vma += 4;
 	  vma &= ~3;
 	  lineno++;
@@ -2057,7 +2097,7 @@ mmo_scan (bfd *abfd)
     bfd_set_error (bfd_error_bad_value);
 
  error_return:
-  error = TRUE;
+  error = true;
  done:
   /* Mark the .text and .data section with their normal attribute if they
      contain anything.  This is not redundant wrt. mmo_decide_section,
@@ -2068,37 +2108,33 @@ mmo_scan (bfd *abfd)
       && (bfd_section_flags (sec) & SEC_HAS_CONTENTS)
       && !bfd_set_section_flags (sec, (bfd_section_flags (sec)
 				       | SEC_ALLOC | SEC_LOAD | SEC_CODE)))
-    error = TRUE;
+    error = true;
 
   sec = bfd_get_section_by_name (abfd, MMO_DATA_SECTION_NAME);
   if (sec != NULL
       && (bfd_section_flags (sec) & SEC_HAS_CONTENTS)
       && !bfd_set_section_flags (sec, (bfd_section_flags (sec)
-				       | SEC_ALLOC | SEC_LOAD)))
-    error = TRUE;
+				       | 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;
 }
 
 /* A hook to set up object file dependent section information.  For mmo,
    we point out the shape of allocated section contents.  */
 
-static bfd_boolean
+static bool
 mmo_new_section_hook (bfd *abfd, asection *newsect)
 {
+  /* We zero-fill all fields and assume NULL is represented by an all
+     zero-bit pattern.  */
+  newsect->used_by_bfd
+    = bfd_zalloc (abfd, sizeof (struct mmo_section_data_struct));
   if (!newsect->used_by_bfd)
-    {
-      /* We zero-fill all fields and assume NULL is represented by an all
-	 zero-bit pattern.  */
-      newsect->used_by_bfd
-	= bfd_zalloc (abfd, sizeof (struct mmo_section_data_struct));
-      if (!newsect->used_by_bfd)
-	return FALSE;
-    }
+    return false;
 
   /* Always align to at least 32-bit words.  */
   newsect->alignment_power = 2;
@@ -2108,7 +2144,7 @@ mmo_new_section_hook (bfd *abfd, asectio
 /* We already have section contents loaded for sections that have
    contents.  */
 
-static bfd_boolean
+static bool
 mmo_get_section_contents (bfd *abfd ATTRIBUTE_UNUSED,
 			  asection *sec,
 			  void * location,
@@ -2131,7 +2167,7 @@ mmo_get_section_contents (bfd *abfd ATTR
       while (loc == NULL && (chunk_size /= 2) != 0);
 
       if (chunk_size == 0)
-	return FALSE;
+	return false;
 
       memcpy (location, loc, chunk_size);
 
@@ -2139,7 +2175,7 @@ mmo_get_section_contents (bfd *abfd ATTR
       bytes_to_do -= chunk_size;
       offset += chunk_size;
     }
-  return TRUE;
+  return true;
 }
 
 /* Return the amount of memory needed to read the symbol table.  */
@@ -2319,19 +2355,19 @@ mmo_sizeof_headers (bfd *abfd ATTRIBUTE_
 
 /* Write the (section-neutral) file preamble.  */
 
-static bfd_boolean
+static bool
 mmo_internal_write_header (bfd *abfd)
 {
   const char lop_pre_bfd[] = { LOP, LOP_PRE, 1, 1};
 
-  if (bfd_bwrite (lop_pre_bfd, 4, abfd) != 4)
-    return FALSE;
+  if (bfd_write (lop_pre_bfd, 4, abfd) != 4)
+    return false;
 
   /* Copy creation time of original file.  */
-  if (bfd_bwrite (abfd->tdata.mmo_data->created, 4, abfd) != 4)
-    return FALSE;
+  if (bfd_write (abfd->tdata.mmo_data->created, 4, abfd) != 4)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Write the LOP_POST record, with global register initializations.
@@ -2339,7 +2375,7 @@ mmo_internal_write_header (bfd *abfd)
    registers at DATA.  The Z = 255 field is filled in with the
    start-address.  */
 
-static bfd_boolean
+static bool
 mmo_internal_write_post (bfd *abfd, int z, asection *sec)
 {
   int i;
@@ -2350,8 +2386,8 @@ mmo_internal_write_post (bfd *abfd, int
     {
       bfd_byte *data = mmo_get_loc (sec, i * 8, 8);
 
-      if (bfd_bwrite (data, 8, abfd) != 8)
-	return FALSE;
+      if (bfd_write (data, 8, abfd) != 8)
+	return false;
     }
 
   /* For Z == $255, we always emit the start location; supposedly Main,
@@ -2359,7 +2395,7 @@ mmo_internal_write_post (bfd *abfd, int
      Z == 255, don't assume DATA is valid.  */
   bfd_put_64 (abfd, bfd_get_start_address (abfd), buf);
 
-  return ! abfd->tdata.mmo_data->have_error && bfd_bwrite (buf, 8, abfd) == 8;
+  return ! abfd->tdata.mmo_data->have_error && bfd_write (buf, 8, abfd) == 8;
 }
 
 /* Translate to and from BFD flags.  This is to make sure that we don't
@@ -2422,25 +2458,25 @@ bfd_sec_flags_from_mmo_flags (flagword f
 /* Return TRUE iff the leading or trailing tetrabyte in SEC is defined and
    is 0.  */
 
-static bfd_boolean
+static bool
 mmo_has_leading_or_trailing_zero_tetra_p (bfd *abfd, asection *sec)
 {
   bfd_vma secaddr = bfd_section_vma (sec);
 
   if (sec->size < 4)
-    return FALSE;
+    return false;
 
   if (bfd_get_32 (abfd, mmo_get_loc (sec, secaddr, 4)) == 0
       && bfd_get_32 (abfd,
 		     mmo_get_loc (sec, secaddr + sec->size - 4, 4)) == 0)
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Write a section.  */
 
-static bfd_boolean
+static bool
 mmo_internal_write_section (bfd *abfd, asection *sec)
 {
   /* We do it differently depending on what section this is:
@@ -2470,7 +2506,7 @@ mmo_internal_write_section (bfd *abfd, a
 	      || mmo_has_leading_or_trailing_zero_tetra_p (abfd, sec)))
 	{
 	  if (!mmo_write_section_description (abfd, sec))
-	    return FALSE;
+	    return false;
 	}
 
       /* FIXME: Output source file name and line number.  */
@@ -2489,7 +2525,7 @@ mmo_internal_write_section (bfd *abfd, a
 	      || mmo_has_leading_or_trailing_zero_tetra_p (abfd, sec)))
 	{
 	  if (!mmo_write_section_description (abfd, sec))
-	    return FALSE;
+	    return false;
 	}
 
       return mmo_write_loc_chunk_list (abfd, mmo_section_data (sec)->head);
@@ -2500,9 +2536,9 @@ mmo_internal_write_section (bfd *abfd, a
       /* This would normally be an abort call since this can't happen, but
 	 we don't do that.  */
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
-  else if (CONST_STRNEQ (sec->name, MMIX_OTHER_SPEC_SECTION_PREFIX))
+  else if (startswith (sec->name, MMIX_OTHER_SPEC_SECTION_PREFIX))
     {
       int n = atoi (sec->name + strlen (MMIX_OTHER_SPEC_SECTION_PREFIX));
 
@@ -2516,7 +2552,7 @@ mmo_internal_write_section (bfd *abfd, a
 	   && sec->size != 0)
     {
       if (!mmo_write_section_description (abfd, sec))
-	return FALSE;
+	return false;
 
       /* Writing a LOP_LOC ends the LOP_SPEC data, and makes data actually
 	 loaded.  */
@@ -2529,12 +2565,12 @@ mmo_internal_write_section (bfd *abfd, a
     }
 
   /* Some section without contents.  */
-  return TRUE;
+  return true;
 }
 
 /* Write the description of a section, extended-mmo-style.  */
 
-static bfd_boolean
+static bool
 mmo_write_section_description (bfd *abfd, asection *sec)
 {
   /* Keep the following document-comment formatted the way it is.  */
@@ -2642,12 +2678,12 @@ EXAMPLE
 		   mmo_sec_flags_from_bfd_flags (bfd_section_flags (sec)));
   mmo_write_octa (abfd, sec->size);
   mmo_write_octa (abfd, bfd_section_vma (sec));
-  return TRUE;
+  return true;
 }
 
 /* We save up all data before output.  */
 
-static bfd_boolean
+static bool
 mmo_set_section_contents (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr sec,
 			  const void *location, file_ptr offset,
 			  bfd_size_type bytes_to_do)
@@ -2667,7 +2703,7 @@ mmo_set_section_contents (bfd *abfd ATTR
       while (loc == NULL && (chunk_size /= 2) != 0);
 
       if (chunk_size == 0)
-	return FALSE;
+	return false;
 
       memcpy (loc, location, chunk_size);
 
@@ -2675,12 +2711,12 @@ mmo_set_section_contents (bfd *abfd ATTR
       bytes_to_do -= chunk_size;
       offset += chunk_size;
     }
-  return TRUE;
+  return true;
 }
 
 /* Add a symbol to a trie-tree.  */
 
-static bfd_boolean
+static bool
 mmo_internal_add_3_sym (bfd *abfd, struct mmo_symbol_trie *rootp,
 			const struct mmo_symbol *symp)
 {
@@ -2732,11 +2768,11 @@ mmo_internal_add_3_sym (bfd *abfd, struc
 	(_("%pB: invalid symbol table: duplicate symbol `%s'\n"),
 	 abfd, trie->sym.name);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   memcpy (&trie->sym, symp, sizeof *symp);
-  return TRUE;
+  return true;
 }
 
 /* Find out the length of the serialized version of a trie in bytes.  */
@@ -2904,7 +2940,7 @@ mmo_internal_3_dump (bfd *abfd, struct m
 
 /* Write symbols in mmo format.  Also write the lop_end terminator.  */
 
-static bfd_boolean
+static bool
 mmo_write_symbols_and_terminator (bfd *abfd)
 {
   int count = bfd_get_symcount (abfd);
@@ -2933,9 +2969,10 @@ mmo_write_symbols_and_terminator (bfd *a
      symbols.  Make sure we have room for it.  */
   table = bfd_alloc (abfd, (count + 1) * sizeof (asymbol *));
   if (table == NULL)
-    return FALSE;
+    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
@@ -2963,20 +3000,15 @@ mmo_write_symbols_and_terminator (bfd *a
 	  {
 	    /* Arbitrary buffer to hold the printable representation of a
 	       vma.  */
-	    char vmas_main[40];
-	    char vmas_start[40];
 	    bfd_vma vma_start = bfd_get_start_address (abfd);
 
-	    sprintf_vma (vmas_main, mainvalue);
-	    sprintf_vma (vmas_start, vma_start);
-
 	    _bfd_error_handler
 	      /* xgettext:c-format */
-	      (_("%pB: bad symbol definition: `Main' set to %s rather"
-		 " than the start address %s\n"),
-	       abfd, vmas_main, vmas_start);
+	      (_("%pB: bad symbol definition: `Main' set to %" PRIx64 " rather"
+		 " than the start address %" PRIx64 "\n"),
+	       abfd, mainvalue, vma_start);
 	    bfd_set_error (bfd_error_bad_value);
-	    return FALSE;
+	    return false;
 	  }
 	break;
       }
@@ -3046,7 +3078,7 @@ mmo_write_symbols_and_terminator (bfd *a
 	      sym.serno = serno++;
 
 	      if (! mmo_internal_add_3_sym (abfd, &root, &sym))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -3089,7 +3121,7 @@ mmo_write_symbols_and_terminator (bfd *a
       root.right = NULL;
 
       if (! mmo_internal_add_3_sym (abfd, &root, &sym))
-	return FALSE;
+	return false;
 
       root.symchar = ':';
       root.middle = root.left;
@@ -3104,8 +3136,8 @@ mmo_write_symbols_and_terminator (bfd *a
 
   /* Put out the lop_stab mark.  */
   bfd_put_32 (abfd, (LOP << 24) | (LOP_STAB << 16), buf);
-  if (bfd_bwrite (buf, 4, abfd) != 4)
-    return FALSE;
+  if (bfd_write (buf, 4, abfd) != 4)
+    return false;
 
   /* Dump out symbols.  */
   mmo_internal_3_dump (abfd, &root);
@@ -3122,7 +3154,7 @@ mmo_write_symbols_and_terminator (bfd *a
 	 abfd, trie_len,
 	 (abfd->tdata.mmo_data->byte_no + 3)/4);
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   /* Dump out remaining bytes in the buffer and handle I/O errors by
@@ -3134,12 +3166,12 @@ mmo_write_symbols_and_terminator (bfd *a
 	      0, 4 - (abfd->tdata.mmo_data->byte_no % 4));
 
       if (abfd->tdata.mmo_data->have_error
-	  || bfd_bwrite (abfd->tdata.mmo_data->buf, 4, abfd) != 4)
-	return FALSE;
+	  || bfd_write (abfd->tdata.mmo_data->buf, 4, abfd) != 4)
+	return false;
     }
 
   bfd_put_32 (abfd, (LOP << 24) | (LOP_END << 16) | trie_len, buf);
-  return bfd_bwrite (buf, 4, abfd) == 4;
+  return bfd_write (buf, 4, abfd) == 4;
 }
 
 /* Write section unless it is the register contents section.  For that, we
@@ -3174,7 +3206,7 @@ mmo_write_section_unless_reg_contents (b
 	       " contents\n"),
 	     abfd, sec);
 	  bfd_set_error (bfd_error_bad_value);
-	  infop->retval = FALSE;
+	  infop->retval = false;
 	  return;
 	}
 
@@ -3187,23 +3219,23 @@ mmo_write_section_unless_reg_contents (b
 /* Do the actual output of a file.  Assumes mmo_set_section_contents is
    already called. */
 
-static bfd_boolean
+static bool
 mmo_write_object_contents (bfd *abfd)
 {
   struct mmo_write_sec_info wsecinfo;
 
   /* First, there are a few words of preamble.  */
   if (! mmo_internal_write_header (abfd))
-    return FALSE;
+    return false;
 
   wsecinfo.reg_section = NULL;
-  wsecinfo.retval = TRUE;
+  wsecinfo.retval = true;
 
   bfd_map_over_sections (abfd, mmo_write_section_unless_reg_contents,
 			 &wsecinfo);
 
   if (! wsecinfo.retval)
-    return FALSE;
+    return false;
 
   if (wsecinfo.reg_section != NULL)
     {
@@ -3237,15 +3269,15 @@ mmo_write_object_contents (bfd *abfd)
 		 " length %" PRId64 ": %#" PRIx64),
 	       abfd, (int64_t) sec->size, (uint64_t) sec->vma);
 
-	  return FALSE;
+	  return false;
 	}
 
       if (! mmo_internal_write_post (abfd, z, sec))
-	return FALSE;
+	return false;
     }
   else
     if (! mmo_internal_write_post (abfd, 255, NULL))
-      return FALSE;
+      return false;
 
   return mmo_write_symbols_and_terminator (abfd);
 }
@@ -3275,6 +3307,7 @@ mmo_write_object_contents (bfd *abfd)
 /* FIXME: We can do better on this one, if we have a dwarf2 .debug_line
    section or if MMO line numbers are implemented.  */
 #define mmo_find_nearest_line _bfd_nosymbols_find_nearest_line
+#define mmo_find_nearest_line_with_alt _bfd_nosymbols_find_nearest_line_with_alt
 #define mmo_find_line _bfd_nosymbols_find_line
 #define mmo_find_inliner_info _bfd_nosymbols_find_inliner_info
 #define mmo_make_empty_symbol _bfd_generic_make_empty_symbol
@@ -3282,8 +3315,6 @@ mmo_write_object_contents (bfd *abfd)
 #define mmo_read_minisymbols _bfd_generic_read_minisymbols
 #define mmo_minisymbol_to_symbol _bfd_generic_minisymbol_to_symbol
 
-#define mmo_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
 #define mmo_bfd_get_relocated_section_contents \
   bfd_generic_get_relocated_section_contents
 #define mmo_bfd_gc_sections bfd_generic_gc_sections
@@ -3340,6 +3371,7 @@ const bfd_target mmix_mmo_vec =
   ' ',				/* ar_pad_char */
   16,				/* ar_max_namelen */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/netbsd-core.c ./bfd/netbsd-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/netbsd-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/netbsd-core.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Paul Kranenburg, EUR
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -47,11 +47,11 @@
 struct netbsd_core_struct
 {
   struct core core;
-} *rawptr;
+};
 
 /* Handle NetBSD-style core dump file.  */
 
-static const bfd_target *
+static bfd_cleanup
 netbsd_core_file_p (bfd *abfd)
 {
   int val;
@@ -60,9 +60,9 @@ netbsd_core_file_p (bfd *abfd)
   asection *asect;
   struct core core;
   struct coreseg coreseg;
-  bfd_size_type amt = sizeof core;
+  struct netbsd_core_struct *rawptr;
 
-  val = bfd_bread (&core, amt, abfd);
+  val = bfd_read (&core, sizeof core, abfd);
   if (val != sizeof core)
     {
       /* Too small to be a core file.  */
@@ -76,13 +76,15 @@ netbsd_core_file_p (bfd *abfd)
       return 0;
     }
 
-  amt = sizeof (struct netbsd_core_struct);
-  rawptr = (struct netbsd_core_struct *) bfd_zalloc (abfd, amt);
+  rawptr = bfd_alloc (abfd, sizeof (*rawptr) + 1);
   if (rawptr == NULL)
     return 0;
 
-  rawptr->core = core;
   abfd->tdata.netbsd_core_data = rawptr;
+  rawptr->core = core;
+  /* Ensure core_file_failing_command string is terminated.  This is
+     just to stop buffer overflows on fuzzed files.  */
+  ((char *) rawptr)[sizeof (*rawptr)] = 0;
 
   offset = core.c_hdrsize;
   for (i = 0; i < core.c_nseg; i++)
@@ -93,7 +95,7 @@ netbsd_core_file_p (bfd *abfd)
       if (bfd_seek (abfd, offset, SEEK_SET) != 0)
 	goto punt;
 
-      val = bfd_bread (&coreseg, sizeof coreseg, abfd);
+      val = bfd_read (&coreseg, sizeof coreseg, abfd);
       if (val != sizeof coreseg)
 	{
 	  bfd_set_error (bfd_error_file_truncated);
@@ -222,7 +224,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);
@@ -257,9 +259,9 @@ swap_abort (void)
 #define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
 #define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
 #define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
+#define	NO_GET64 ((uint64_t (*) (const void *)) swap_abort)
+#define	NO_PUT64 ((void (*) (uint64_t, void *)) swap_abort)
+#define	NO_GETS64 ((int64_t (*) (const void *)) swap_abort)
 
 const bfd_target core_netbsd_vec =
   {
@@ -276,6 +278,7 @@ const bfd_target core_netbsd_vec =
     ' ',			/* ar_pad_char.  */
     16,				/* ar_max_namelen.  */
     0,				/* Match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit data.  */
     NO_GET, NO_GETS, NO_PUT,		/* 32 bit data.  */
     NO_GET, NO_GETS, NO_PUT,		/* 16 bit 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.20200303/bfd/netbsd.h ./bfd/netbsd.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/netbsd.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/netbsd.h	2026-03-05 02:07:20.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-2025 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"
@@ -64,7 +64,7 @@
 #define MY_entry_is_text_address 1
 
 #define MY_write_object_contents MY (write_object_contents)
-static bfd_boolean MY (write_object_contents) (bfd *);
+static bool MY (write_object_contents) (bfd *);
 
 #define MY_text_includes_header 1
 
@@ -74,7 +74,7 @@ static bfd_boolean MY (write_object_cont
    Section contents have already been written.  We write the
    file header, symbols, and relocation.  */
 
-static bfd_boolean
+static bool
 MY (write_object_contents) (bfd *abfd)
 {
   struct external_exec exec_bytes;
@@ -110,5 +110,5 @@ MY (write_object_contents) (bfd *abfd)
 
   WRITE_HEADERS (abfd, execp);
 
-  return TRUE;
+  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.20200303/bfd/ns32k.h ./bfd/ns32k.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ns32k.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ns32k.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header file for ns32k routines.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 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.20200303/bfd/ns32knetbsd.c ./bfd/ns32knetbsd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ns32knetbsd.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ns32knetbsd.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/opncls.c ./bfd/opncls.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/opncls.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/opncls.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* opncls.c -- open and close a BFD.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
 
    Written by Cygnus Support.
 
@@ -37,22 +37,31 @@
 #define S_IXOTH 0001	/* Execute by others.  */
 #endif
 
-/* Counters used to initialize the bfd identifier.  */
-
-static unsigned int bfd_id_counter = 0;
-static unsigned int bfd_reserved_id_counter = 0;
-
 /*
-CODE_FRAGMENT
-.{* Set to N to open the next N BFDs using an alternate id space.  *}
-.extern unsigned int bfd_use_reserved_id;
+SECTION
+	Opening and closing BFDs
+
+SUBSECTION
+	Functions for opening and closing
 */
-unsigned int bfd_use_reserved_id = 0;
+
+/* Counter used to initialize the unique bfd identifier.  */
+
+static unsigned int bfd_id_counter = 0;
 
 /* fdopen is a loser -- we should use stdio exclusively.  Unfortunately
    if we do that we can't use fcntl.  */
 
-/* Return a new BFD.  All BFD's are allocated through this routine.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_new_bfd
+
+SYNOPSIS
+	bfd *_bfd_new_bfd (void);
+
+DESCRIPTION
+	Return a new BFD.  All BFD's are allocated through this routine.
+*/
 
 bfd *
 _bfd_new_bfd (void)
@@ -63,20 +72,17 @@ _bfd_new_bfd (void)
   if (nbfd == NULL)
     return NULL;
 
-  if (bfd_use_reserved_id)
-    {
-      nbfd->id = --bfd_reserved_id_counter;
-      --bfd_use_reserved_id;
-    }
-  else
-    nbfd->id = bfd_id_counter++;
+  if (!bfd_lock ())
+    goto loser;
+  nbfd->id = bfd_id_counter++;
+  if (!bfd_unlock ())
+    goto loser;
 
   nbfd->memory = objalloc_create ();
   if (nbfd->memory == NULL)
     {
       bfd_set_error (bfd_error_no_memory);
-      free (nbfd);
-      return NULL;
+      goto loser;
     }
 
   nbfd->arch_info = &bfd_default_arch_struct;
@@ -84,22 +90,42 @@ _bfd_new_bfd (void)
   if (!bfd_hash_table_init_n (& nbfd->section_htab, bfd_section_hash_newfunc,
 			      sizeof (struct section_hash_entry), 13))
     {
-      free (nbfd);
-      return NULL;
+      objalloc_free (nbfd->memory);
+      goto loser;
     }
 
+  nbfd->archive_plugin_fd = -1;
   return nbfd;
+
+ loser:
+  free (nbfd);
+  return NULL;
 }
 
 static const struct bfd_iovec opncls_iovec;
 
-/* Allocate a new BFD as a member of archive OBFD.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_new_bfd_contained_in
+
+SYNOPSIS
+	bfd *_bfd_new_bfd_contained_in (bfd *);
+
+DESCRIPTION
+	Allocate a new BFD as a member of archive OBFD.
+*/
 
 bfd *
 _bfd_new_bfd_contained_in (bfd *obfd)
 {
   bfd *nbfd;
 
+  /* Nested archives in bims are unsupported.  */
+  if ((obfd->flags & BFD_IN_MEMORY) != 0)
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return NULL;
+    }
   nbfd = _bfd_new_bfd ();
   if (nbfd == NULL)
     return NULL;
@@ -120,48 +146,60 @@ _bfd_new_bfd_contained_in (bfd *obfd)
 static void
 _bfd_delete_bfd (bfd *abfd)
 {
+  /* Give the target _bfd_free_cached_info a chance to free memory.  */
+  if (abfd->memory && abfd->xvec)
+    bfd_free_cached_info (abfd);
+
+  /* The target _bfd_free_cached_info may not have done anything..  */
+  if (abfd->section_htab.memory)
+    bfd_hash_table_free (&abfd->section_htab);
   if (abfd->memory)
-    {
-      bfd_hash_table_free (&abfd->section_htab);
-      objalloc_free ((struct objalloc *) abfd->memory);
+    objalloc_free (abfd->memory);
+
+#ifdef USE_MMAP
+  struct bfd_mmapped *mmapped, *next;
+  for (mmapped = abfd->mmapped; mmapped != NULL; mmapped = next)
+    {
+      struct bfd_mmapped_entry *entries = mmapped->entries;
+      next = mmapped->next;
+      for (unsigned int i = 0; i < mmapped->next_entry; i++)
+	munmap (entries[i].addr, entries[i].size);
+      munmap (mmapped, _bfd_pagesize);
     }
+#endif
 
-  if (abfd->filename)
-    free ((char *) abfd->filename);
   free (abfd->arelt_data);
   free (abfd);
 }
 
-/* Free objalloc memory.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_free_cached_info
+
+SYNOPSIS
+	bool _bfd_free_cached_info (bfd *);
+
+DESCRIPTION
+	Free objalloc memory.
+*/
 
-bfd_boolean
+bool
 _bfd_free_cached_info (bfd *abfd)
 {
-  if (abfd->memory)
-    {
-      bfd_hash_table_free (&abfd->section_htab);
-      objalloc_free ((struct objalloc *) abfd->memory);
+  if (abfd->section_htab.memory)
+    bfd_hash_table_free (&abfd->section_htab);
 
-      abfd->sections = NULL;
-      abfd->section_last = NULL;
-      abfd->outsymbols = NULL;
-      abfd->tdata.any = NULL;
-      abfd->usrdata = NULL;
-      abfd->memory = NULL;
-    }
+  abfd->sections = NULL;
+  abfd->section_last = NULL;
+  abfd->section_count = 0;
+  abfd->outsymbols = NULL;
+  abfd->tdata.any = NULL;
+  abfd->usrdata = NULL;
 
-  return TRUE;
+  return true;
 }
 
 /*
-SECTION
-	Opening and closing BFDs
-
-SUBSECTION
-	Functions for opening and closing
-*/
-
-/*
 FUNCTION
 	bfd_fopen
 
@@ -233,8 +271,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);
@@ -257,14 +294,14 @@ bfd_fopen (const char *filename, const c
       _bfd_delete_bfd (nbfd);
       return NULL;
     }
-  nbfd->opened_once = TRUE;
+  nbfd->opened_once = true;
 
   /* If we opened the file by name, mark it cacheable; we can close it
      and reopen it later.  However, if a file descriptor was provided,
      then it may have been opened with special flags that make it
      unsafe to close and reopen the file.  */
   if (fd == -1)
-    (void) bfd_set_cacheable (nbfd, TRUE);
+    (void) bfd_set_cacheable (nbfd, true);
 
   return nbfd;
 }
@@ -372,6 +409,39 @@ bfd_fdopenr (const char *filename, const
 
 /*
 FUNCTION
+	bfd_fdopenw
+
+SYNOPSIS
+	bfd *bfd_fdopenw (const char *filename, const char *target, int fd);
+
+DESCRIPTION
+	<<bfd_fdopenw>> is exactly like <<bfd_fdopenr>> with the exception that
+	the resulting BFD is suitable for output.
+*/
+
+bfd *
+bfd_fdopenw (const char *filename, const char *target, int fd)
+{
+  bfd *out = bfd_fdopenr (filename, target, fd);
+
+  if (out != NULL)
+    {
+      if (!bfd_write_p (out))
+	{
+	  close (fd);
+	  _bfd_delete_bfd (out);
+	  out = NULL;
+	  bfd_set_error (bfd_error_invalid_operation);
+	}
+      else
+	out->direction = write_direction;
+    }
+
+  return out;
+}
+
+/*
+FUNCTION
 	bfd_openstreamr
 
 SYNOPSIS
@@ -407,8 +477,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;
@@ -565,14 +634,14 @@ opncls_bstat (struct bfd *abfd, struct s
 static void *
 opncls_bmmap (struct bfd *abfd ATTRIBUTE_UNUSED,
 	      void *addr ATTRIBUTE_UNUSED,
-	      bfd_size_type len ATTRIBUTE_UNUSED,
+	      size_t len ATTRIBUTE_UNUSED,
 	      int prot ATTRIBUTE_UNUSED,
 	      int flags ATTRIBUTE_UNUSED,
 	      file_ptr offset ATTRIBUTE_UNUSED,
 	      void **map_addr ATTRIBUTE_UNUSED,
-	      bfd_size_type *map_len ATTRIBUTE_UNUSED)
+	      size_t *map_len ATTRIBUTE_UNUSED)
 {
-  return (void *) -1;
+  return MAP_FAILED;
 }
 
 static const struct bfd_iovec opncls_iovec =
@@ -608,8 +677,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 +748,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;
@@ -699,6 +766,51 @@ bfd_openw (const char *filename, const c
   return nbfd;
 }
 
+/*
+FUNCTION
+	bfd_elf_bfd_from_remote_memory
+
+SYNOPSIS
+	bfd *bfd_elf_bfd_from_remote_memory
+	  (bfd *templ, bfd_vma ehdr_vma, bfd_size_type size, bfd_vma *loadbasep,
+	   int (*target_read_memory)
+	     (bfd_vma vma, bfd_byte *myaddr, bfd_size_type len));
+
+DESCRIPTION
+	Create a new BFD as if by bfd_openr.  Rather than opening a
+	file, reconstruct an ELF file by reading the segments out of
+	remote memory based on the ELF file header at EHDR_VMA and the
+	ELF program headers it points to.  If non-zero, SIZE is the
+	known extent of the object.  If not null, *LOADBASEP is filled
+	in with the difference between the VMAs from which the
+	segments were read, and the VMAs the file headers (and hence
+	BFD's idea of each section's VMA) put them at.
+
+	The function TARGET_READ_MEMORY is called to copy LEN bytes
+	from the remote memory at target address VMA into the local
+	buffer at MYADDR; it should return zero on success or an
+	errno code on failure.  TEMPL must be a BFD for an ELF
+	target with the word size and byte order found in the remote
+	memory.
+*/
+
+bfd *
+bfd_elf_bfd_from_remote_memory
+  (bfd *templ,
+   bfd_vma ehdr_vma,
+   bfd_size_type size,
+   bfd_vma *loadbasep,
+   int (*target_read_memory) (bfd_vma, bfd_byte *, bfd_size_type))
+{
+  if (bfd_get_flavour (templ) != bfd_target_elf_flavour)
+    {
+      bfd_set_error (bfd_error_invalid_operation);
+      return NULL;
+    }
+  return (*get_elf_backend_data (templ)->elf_backend_bfd_from_remote_memory)
+    (templ, ehdr_vma, size, loadbasep, target_read_memory);
+}
+
 static inline void
 _maybe_make_executable (bfd * abfd)
 {
@@ -709,7 +821,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 +830,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))));
 	}
@@ -730,7 +842,7 @@ FUNCTION
 	bfd_close
 
 SYNOPSIS
-	bfd_boolean bfd_close (bfd *abfd);
+	bool bfd_close (bfd *abfd);
 
 DESCRIPTION
 	Close a BFD. If the BFD was open for writing, then pending
@@ -743,20 +855,16 @@ DESCRIPTION
 	The file descriptor associated with the BFD is closed (even
 	if it was passed in to BFD by <<bfd_fdopenr>>).
 
-RETURNS
 	<<TRUE>> is returned if all is ok, otherwise <<FALSE>>.
 */
 
-bfd_boolean
+bool
 bfd_close (bfd *abfd)
 {
-  if (bfd_write_p (abfd))
-    {
-      if (! BFD_SEND_FMT (abfd, _bfd_write_contents, (abfd)))
-	return FALSE;
-    }
+  bool ret = (!bfd_write_p (abfd)
+	      || BFD_SEND_FMT (abfd, _bfd_write_contents, (abfd)));
 
-  return bfd_close_all_done (abfd);
+  return bfd_close_all_done (abfd) && ret;
 }
 
 /*
@@ -764,7 +872,7 @@ FUNCTION
 	bfd_close_all_done
 
 SYNOPSIS
-	bfd_boolean bfd_close_all_done (bfd *);
+	bool bfd_close_all_done (bfd *);
 
 DESCRIPTION
 	Close a BFD.  Differs from <<bfd_close>> since it does not
@@ -777,19 +885,16 @@ DESCRIPTION
 
 	All memory attached to the BFD is released.
 
-RETURNS
 	<<TRUE>> is returned if all is ok, otherwise <<FALSE>>.
 */
 
-bfd_boolean
+bool
 bfd_close_all_done (bfd *abfd)
 {
-  bfd_boolean ret;
+  bool ret = BFD_SEND (abfd, _close_and_cleanup, (abfd));
 
-  if (! BFD_SEND (abfd, _close_and_cleanup, (abfd)))
-    return FALSE;
-
-  ret = abfd->iovec->bclose (abfd) == 0;
+  if (abfd->iovec != NULL)
+    ret &= abfd->iovec->bclose (abfd) == 0;
 
   if (ret)
     _maybe_make_executable (abfd);
@@ -825,8 +930,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;
@@ -844,7 +948,7 @@ FUNCTION
 	bfd_make_writable
 
 SYNOPSIS
-	bfd_boolean bfd_make_writable (bfd *abfd);
+	bool bfd_make_writable (bfd *abfd);
 
 DESCRIPTION
 	Takes a BFD as created by <<bfd_create>> and converts it
@@ -852,11 +956,10 @@ DESCRIPTION
 	by converting the BFD to BFD_IN_MEMORY.  It's assumed that
 	you will call <<bfd_make_readable>> on this bfd later.
 
-RETURNS
 	<<TRUE>> is returned if all is ok, otherwise <<FALSE>>.
 */
 
-bfd_boolean
+bool
 bfd_make_writable (bfd *abfd)
 {
   struct bfd_in_memory *bim;
@@ -864,14 +967,14 @@ bfd_make_writable (bfd *abfd)
   if (abfd->direction != no_direction)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   bim = (struct bfd_in_memory *) bfd_malloc (sizeof (struct bfd_in_memory));
   if (bim == NULL)
-    return FALSE;	/* bfd_error already set.  */
+    return false;	/* bfd_error already set.  */
   abfd->iostream = bim;
-  /* bfd_bwrite will grow these as needed.  */
+  /* bfd_write will grow these as needed.  */
   bim->size = 0;
   bim->buffer = 0;
 
@@ -881,7 +984,7 @@ bfd_make_writable (bfd *abfd)
   abfd->direction = write_direction;
   abfd->where = 0;
 
-  return TRUE;
+  return true;
 }
 
 /*
@@ -889,7 +992,7 @@ FUNCTION
 	bfd_make_readable
 
 SYNOPSIS
-	bfd_boolean bfd_make_readable (bfd *abfd);
+	bool bfd_make_readable (bfd *abfd);
 
 DESCRIPTION
 	Takes a BFD as created by <<bfd_create>> and
@@ -898,23 +1001,30 @@ DESCRIPTION
 	contents out to the memory buffer, then reversing the
 	direction.
 
-RETURNS
 	<<TRUE>> is returned if all is ok, otherwise <<FALSE>>.  */
 
-bfd_boolean
+bool
 bfd_make_readable (bfd *abfd)
 {
   if (abfd->direction != write_direction || !(abfd->flags & BFD_IN_MEMORY))
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
-  if (! BFD_SEND_FMT (abfd, _bfd_write_contents, (abfd)))
-    return FALSE;
+  if (!BFD_SEND_FMT (abfd, _bfd_write_contents, (abfd)))
+    return false;
+
+  if (!BFD_SEND (abfd, _bfd_free_cached_info, (abfd)))
+    return false;
 
-  if (! BFD_SEND (abfd, _close_and_cleanup, (abfd)))
-    return FALSE;
+  if (!BFD_SEND (abfd, _close_and_cleanup, (abfd)))
+    return false;
+
+  _bfd_free_cached_info (abfd);
+  if (!bfd_hash_table_init_n (&abfd->section_htab, bfd_section_hash_newfunc,
+			      sizeof (struct section_hash_entry), 13))
+    return false;
 
   abfd->arch_info = &bfd_default_arch_struct;
 
@@ -922,157 +1032,24 @@ bfd_make_readable (bfd *abfd)
   abfd->format = bfd_unknown;
   abfd->my_archive = NULL;
   abfd->origin = 0;
-  abfd->opened_once = FALSE;
-  abfd->output_has_begun = FALSE;
-  abfd->section_count = 0;
+  abfd->opened_once = false;
+  abfd->output_has_begun = false;
   abfd->usrdata = NULL;
-  abfd->cacheable = FALSE;
-  abfd->flags |= BFD_IN_MEMORY;
-  abfd->mtime_set = FALSE;
+  abfd->cacheable = false;
+  abfd->mtime_set = false;
 
-  abfd->target_defaulted = TRUE;
+  abfd->target_defaulted = true;
   abfd->direction = read_direction;
-  abfd->sections = 0;
   abfd->symcount = 0;
   abfd->outsymbols = 0;
   abfd->tdata.any = 0;
+  abfd->size = 0;
 
-  bfd_section_list_clear (abfd);
   bfd_check_format (abfd, bfd_object);
 
-  return TRUE;
-}
-
-/*
-FUNCTION
-	bfd_alloc
-
-SYNOPSIS
-	void *bfd_alloc (bfd *abfd, bfd_size_type wanted);
-
-DESCRIPTION
-	Allocate a block of @var{wanted} bytes of memory attached to
-	<<abfd>> and return a pointer to it.
-*/
-
-void *
-bfd_alloc (bfd *abfd, bfd_size_type size)
-{
-  void *ret;
-  unsigned long ul_size = (unsigned long) size;
-
-  if (size != ul_size
-      /* Note - although objalloc_alloc takes an unsigned long as its
-	 argument, internally the size is treated as a signed long.  This can
-	 lead to problems where, for example, a request to allocate -1 bytes
-	 can result in just 1 byte being allocated, rather than
-	 ((unsigned long) -1) bytes.  Also memory checkers will often
-	 complain about attempts to allocate a negative amount of memory.
-	 So to stop these problems we fail if the size is negative.  */
-      || ((signed long) ul_size) < 0)
-    {
-      bfd_set_error (bfd_error_no_memory);
-      return NULL;
-    }
-
-  ret = objalloc_alloc ((struct objalloc *) abfd->memory, ul_size);
-  if (ret == NULL)
-    bfd_set_error (bfd_error_no_memory);
-  return ret;
-}
-
-/*
-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
-
-SYNOPSIS
-	void *bfd_zalloc (bfd *abfd, bfd_size_type wanted);
-
-DESCRIPTION
-	Allocate a block of @var{wanted} bytes of zeroed memory
-	attached to <<abfd>> and return a pointer to it.
-*/
-
-void *
-bfd_zalloc (bfd *abfd, bfd_size_type size)
-{
-  void *res;
-
-  res = bfd_alloc (abfd, size);
-  if (res)
-    memset (res, 0, (size_t) size);
-  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;
+  return true;
 }
 
-/* Free a block allocated for a BFD.
-   Note:  Also frees all more recently allocated blocks!  */
-
-void
-bfd_release (bfd *abfd, void *block)
-{
-  objalloc_free_block ((struct objalloc *) abfd->memory, block);
-}
-
-
 /*
    GNU Extension: separate debug-info files
 
@@ -1094,24 +1071,23 @@ FUNCTION
 	bfd_calc_gnu_debuglink_crc32
 
 SYNOPSIS
-	unsigned long bfd_calc_gnu_debuglink_crc32
-	  (unsigned long crc, const unsigned char *buf, bfd_size_type len);
+	uint32_t bfd_calc_gnu_debuglink_crc32
+	  (uint32_t crc, const bfd_byte *buf, bfd_size_type len);
 
 DESCRIPTION
 	Computes a CRC value as used in the .gnu_debuglink section.
 	Advances the previously computed @var{crc} value by computing
 	and adding in the crc32 for @var{len} bytes of @var{buf}.
 
-RETURNS
 	Return the updated CRC32 value.
 */
 
-unsigned long
-bfd_calc_gnu_debuglink_crc32 (unsigned long crc,
-			      const unsigned char *buf,
+uint32_t
+bfd_calc_gnu_debuglink_crc32 (uint32_t crc,
+			      const bfd_byte *buf,
 			      bfd_size_type len)
 {
-  static const unsigned long crc32_table[256] =
+  static const uint32_t crc32_table[256] =
     {
       0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
       0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
@@ -1166,7 +1142,7 @@ bfd_calc_gnu_debuglink_crc32 (unsigned l
       0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
       0x2d02ef8d
     };
-  const unsigned char *end;
+  const bfd_byte *end;
 
   crc = ~crc & 0xffffffff;
   for (end = buf + len; buf < end; ++ buf)
@@ -1175,36 +1151,26 @@ bfd_calc_gnu_debuglink_crc32 (unsigned l
 }
 
 
-/*
-INTERNAL_FUNCTION
-	bfd_get_debug_link_info_1
-
-SYNOPSIS
-	char *bfd_get_debug_link_info_1 (bfd *abfd, void *crc32_out);
-
-DESCRIPTION
-	Extracts the filename and CRC32 value for any separate debug
-	information file associated with @var{abfd}.
+/* Extracts the filename and CRC32 value for any separate debug
+   information file associated with @var{abfd}.
 
-	The @var{crc32_out} parameter is an untyped pointer because
-	this routine is used as a @code{get_func_type} function, but it
-	is expected to be an unsigned long pointer.
+   The @var{crc32_out} parameter is an untyped pointer because
+   this routine is used as a @code{get_func_type} function, but it
+   is expected to be a uint32_t pointer.
+
+   Returns the filename of the associated debug information file,
+   or NULL if there is no such file.  If the filename was found
+   then the contents of @var{crc32_out} are updated to hold the
+   corresponding CRC32 value for the file.
 
-RETURNS
-	The filename of the associated debug information file, or NULL
-	if there is no such file.  If the filename was found then the
-	contents of @var{crc32_out} are updated to hold the corresponding
-	CRC32 value for the file.
-
-	The returned filename is allocated with @code{malloc}; freeing
-	it is the responsibility of the caller.
-*/
+   The returned filename is allocated with @code{malloc}; freeing
+   it is the responsibility of the caller.  */
 
 static char *
 bfd_get_debug_link_info_1 (bfd *abfd, void *crc32_out)
 {
   asection *sect;
-  unsigned long *crc32 = (unsigned long *) crc32_out;
+  uint32_t *crc32 = crc32_out;
   bfd_byte *contents;
   unsigned int crc_offset;
   char *name;
@@ -1215,21 +1181,17 @@ bfd_get_debug_link_info_1 (bfd *abfd, vo
 
   sect = bfd_get_section_by_name (abfd, GNU_DEBUGLINK);
 
-  if (sect == NULL)
+  if (sect == NULL || (sect->flags & SEC_HAS_CONTENTS) == 0)
     return NULL;
 
   size = bfd_section_size (sect);
 
   /* PR 22794: Make sure that the section has a reasonable size.  */
-  if (size < 8 || size >= bfd_get_size (abfd))
+  if (size < 8)
     return NULL;
 
   if (!bfd_malloc_and_get_section (abfd, sect, &contents))
-    {
-      if (contents != NULL)
-	free (contents);
-      return NULL;
-    }
+    return NULL;
 
   /* CRC value is stored after the filename, aligned up to 4 bytes.  */
   name = (char *) contents;
@@ -1237,7 +1199,10 @@ bfd_get_debug_link_info_1 (bfd *abfd, vo
   crc_offset = strnlen (name, size) + 1;
   crc_offset = (crc_offset + 3) & ~3;
   if (crc_offset + 4 > size)
-    return NULL;
+    {
+      free (name);
+      return NULL;
+    }
 
   *crc32 = bfd_get_32 (abfd, contents + crc_offset);
   return name;
@@ -1249,24 +1214,23 @@ FUNCTION
 	bfd_get_debug_link_info
 
 SYNOPSIS
-	char *bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out);
+	char *bfd_get_debug_link_info (bfd *abfd, uint32_t *crc32_out);
 
 DESCRIPTION
 	Extracts the filename and CRC32 value for any separate debug
 	information file associated with @var{abfd}.
 
-RETURNS
-	The filename of the associated debug information file, or NULL
-	if there is no such file.  If the filename was found then the
-	contents of @var{crc32_out} are updated to hold the corresponding
-	CRC32 value for the file.
+	Returns the filename of the associated debug information file,
+	or NULL if there is no such file.  If the filename was found
+	then the contents of @var{crc32_out} are updated to hold the
+	corresponding CRC32 value for the file.
 
 	The returned filename is allocated with @code{malloc}; freeing
 	it is the responsibility of the caller.
 */
 
 char *
-bfd_get_debug_link_info (bfd *abfd, unsigned long *crc32_out)
+bfd_get_debug_link_info (bfd *abfd, uint32_t *crc32_out)
 {
   return bfd_get_debug_link_info_1 (abfd, crc32_out);
 }
@@ -1305,19 +1269,15 @@ bfd_get_alt_debug_link_info (bfd * abfd,
 
   sect = bfd_get_section_by_name (abfd, GNU_DEBUGALTLINK);
 
-  if (sect == NULL)
+  if (sect == NULL || (sect->flags & SEC_HAS_CONTENTS) == 0)
     return NULL;
 
   size = bfd_section_size (sect);
-  if (size < 8 || size >= bfd_get_size (abfd))
+  if (size < 8)
     return NULL;
 
   if (!bfd_malloc_and_get_section (abfd, sect, & contents))
-    {
-      if (contents != NULL)
-	free (contents);
-      return NULL;
-    }
+    return NULL;
 
   /* BuildID value is stored after the filename.  */
   name = (char *) contents;
@@ -1332,40 +1292,30 @@ bfd_get_alt_debug_link_info (bfd * abfd,
   return name;
 }
 
-/*
-INTERNAL_FUNCTION
-	separate_debug_file_exists
+/* Checks to see if @var{name} is a file and if its contents match
+   @var{crc32}, which is a pointer to a @code{uint32_t}
+   containing a CRC32.
 
-SYNOPSIS
-	bfd_boolean separate_debug_file_exists
-	  (char *name, void *crc32_p);
+   The @var{crc32_p} parameter is an untyped pointer because this
+   routine is used as a @code{check_func_type} function.  */
 
-DESCRIPTION
-	Checks to see if @var{name} is a file and if its contents
-	match @var{crc32}, which is a pointer to an @code{unsigned
-	long} containing a CRC32.
-
-	The @var{crc32_p} parameter is an untyped pointer because
-	this routine is used as a @code{check_func_type} function.
-*/
-
-static bfd_boolean
+static bool
 separate_debug_file_exists (const char *name, void *crc32_p)
 {
-  static unsigned char buffer [8 * 1024];
-  unsigned long file_crc = 0;
+  unsigned char buffer[8 * 1024];
+  uint32_t file_crc = 0;
   FILE *f;
   bfd_size_type count;
-  unsigned long crc;
+  uint32_t crc;
 
   BFD_ASSERT (name);
   BFD_ASSERT (crc32_p);
 
-  crc = *(unsigned long *) crc32_p;
+  crc = *(uint32_t *) crc32_p;
 
   f = _bfd_real_fopen (name, FOPEN_RB);
   if (f == NULL)
-    return FALSE;
+    return false;
 
   while ((count = fread (buffer, 1, sizeof (buffer), f)) > 0)
     file_crc = bfd_calc_gnu_debuglink_crc32 (file_crc, buffer, count);
@@ -1375,19 +1325,9 @@ separate_debug_file_exists (const char *
   return crc == file_crc;
 }
 
-/*
-INTERNAL_FUNCTION
-	separate_alt_debug_file_exists
-
-SYNOPSIS
-	bfd_boolean separate_alt_debug_file_exists
-	  (char *name, void *unused);
+/* Checks to see if @var{name} is a file.  */
 
-DESCRIPTION
-	Checks to see if @var{name} is a file.
-*/
-
-static bfd_boolean
+static bool
 separate_alt_debug_file_exists (const char *name, void *unused ATTRIBUTE_UNUSED)
 {
   FILE *f;
@@ -1396,52 +1336,40 @@ separate_alt_debug_file_exists (const ch
 
   f = _bfd_real_fopen (name, FOPEN_RB);
   if (f == NULL)
-    return FALSE;
+    return false;
 
   fclose (f);
 
-  return TRUE;
+  return true;
 }
 
-/*
-INTERNAL_FUNCTION
-	find_separate_debug_file
+/* Searches for a debug information file corresponding to @var{abfd}.
 
-SYNOPSIS
-	char *find_separate_debug_file
-	  (bfd *abfd, const char *dir, bfd_boolean include_dirs,
-	   get_func_type get, check_func_type check, void *data);
+   The name of the separate debug info file is returned by the
+   @var{get} function.  This function scans various fixed locations
+   in the filesystem, including the file tree rooted at @var{dir}.
+   If the @var{include_dirs} parameter is true then the directory
+   components of @var{abfd}'s filename will be included in the
+   searched locations.
 
-DESCRIPTION
-	Searches for a debug information file corresponding to @var{abfd}.
+   @var{data} is passed unmodified to the @var{get} and @var{check}
+   functions.  It is generally used to implement build-id-like
+   matching in the callback functions.
 
-	The name of the separate debug info file is returned by the
-	@var{get} function.  This function scans various fixed locations
-	in the filesystem, including the file tree rooted at @var{dir}.
-	If the @var{include_dirs} parameter is true then the directory
-	components of @var{abfd}'s filename will be included in the
-	searched locations.
+   Returns the filename of the first file to be found which
+   receives a TRUE result from the @var{check} function.
+   Returns NULL if no valid file could be found.  */
 
-	@var{data} is passed unmodified to the @var{get} and @var{check}
-	functions.  It is generally used to implement build-id-like
-	matching in the callback functions.
-
-RETURNS
-	Returns the filename of the first file to be found which
-	receives a TRUE result from the @var{check} function.
-	Returns NULL if no valid file could be found.
-*/
-
-typedef char *      (* get_func_type) (bfd *, void *);
-typedef bfd_boolean (* check_func_type) (const char *, void *);
+typedef char * (*get_func_type) (bfd *, void *);
+typedef bool (*check_func_type) (const char *, void *);
 
 static char *
-find_separate_debug_file (bfd *		  abfd,
-			  const char *	  debug_file_directory,
-			  bfd_boolean	  include_dirs,
-			  get_func_type	  get_func,
+find_separate_debug_file (bfd *abfd,
+			  const char *debug_file_directory,
+			  bool include_dirs,
+			  get_func_type get_func,
 			  check_func_type check_func,
-			  void *	  func_data)
+			  void *func_data)
 {
   char *base;
   char *dir;
@@ -1455,7 +1383,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 +1403,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 +1414,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 +1426,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;
@@ -1609,18 +1538,18 @@ DESCRIPTION
 	If @var{dir} is NULL, the search will take place starting at
 	the current directory.
 
-RETURNS
-	<<NULL>> on any errors or failure to locate the .debug file,
-	otherwise a pointer to a heap-allocated string containing the
-	filename.  The caller is responsible for freeing this string.
+	Returns <<NULL>> on any errors or failure to locate the .debug
+	file, otherwise a pointer to a heap-allocated string
+	containing the filename.  The caller is responsible for
+	freeing this string.
 */
 
 char *
 bfd_follow_gnu_debuglink (bfd *abfd, const char *dir)
 {
-  unsigned long crc32;
+  uint32_t crc32;
 
-  return find_separate_debug_file (abfd, dir, TRUE,
+  return find_separate_debug_file (abfd, dir, true,
 				   bfd_get_debug_link_info_1,
 				   separate_debug_file_exists, &crc32);
 }
@@ -1658,16 +1587,16 @@ DESCRIPTION
 	If @var{dir} is NULL, the search will take place starting at
 	the current directory.
 
-RETURNS
-	<<NULL>> on any errors or failure to locate the debug file,
-	otherwise a pointer to a heap-allocated string containing the
-	filename.  The caller is responsible for freeing this string.
+	Returns <<NULL>> on any errors or failure to locate the debug
+	file, otherwise a pointer to a heap-allocated string
+	containing the filename.  The caller is responsible for
+	freeing this string.
 */
 
 char *
 bfd_follow_gnu_debugaltlink (bfd *abfd, const char *dir)
 {
-  return find_separate_debug_file (abfd, dir, TRUE,
+  return find_separate_debug_file (abfd, dir, true,
 				   get_alt_debug_link_info_shim,
 				   separate_alt_debug_file_exists,
 				   NULL);
@@ -1686,7 +1615,6 @@ DESCRIPTION
 	section is sized to be big enough to contain a link to the specified
 	@var{filename}.
 
-RETURNS
 	A pointer to the new section is returned if all is ok.  Otherwise
 	<<NULL>> is returned and bfd_error is set.
 */
@@ -1745,51 +1673,45 @@ FUNCTION
 	bfd_fill_in_gnu_debuglink_section
 
 SYNOPSIS
-	bfd_boolean bfd_fill_in_gnu_debuglink_section
+	bool bfd_fill_in_gnu_debuglink_section
 	  (bfd *abfd, struct bfd_section *sect, const char *filename);
 
 DESCRIPTION
 	Takes a @var{BFD} and containing a .gnu_debuglink section @var{SECT}
 	and fills in the contents of the section to contain a link to the
-	specified @var{filename}.  The filename should be relative to the
-	current directory.
+	specified @var{filename}.  The filename should be absolute or
+	relative to the current directory.
 
-RETURNS
 	<<TRUE>> is returned if all is ok.  Otherwise <<FALSE>> is returned
 	and bfd_error is set.
 */
 
-bfd_boolean
+bool
 bfd_fill_in_gnu_debuglink_section (bfd *abfd,
 				   struct bfd_section *sect,
 				   const char *filename)
 {
   bfd_size_type debuglink_size;
-  unsigned long crc32;
+  uint32_t crc32;
   char * contents;
   bfd_size_type crc_offset;
   FILE * handle;
-  static unsigned char buffer[8 * 1024];
+  unsigned char buffer[8 * 1024];
   size_t count;
   size_t filelen;
 
   if (abfd == NULL || sect == NULL || filename == NULL)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
-  /* Make sure that we can read the file.
-     XXX - Should we attempt to locate the debug info file using the same
-     algorithm as gdb ?  At the moment, since we are creating the
-     .gnu_debuglink section, we insist upon the user providing us with a
-     correct-for-section-creation-time path, but this need not conform to
-     the gdb location algorithm.  */
+  /* Open the linked file so that we can compute a CRC.  */
   handle = _bfd_real_fopen (filename, FOPEN_RB);
   if (handle == NULL)
     {
       bfd_set_error (bfd_error_system_call);
-      return FALSE;
+      return false;
     }
 
   crc32 = 0;
@@ -1807,11 +1729,11 @@ bfd_fill_in_gnu_debuglink_section (bfd *
   debuglink_size &= ~3;
   debuglink_size += 4;
 
-  contents = (char *) bfd_malloc (debuglink_size);
+  contents = bfd_malloc (debuglink_size);
   if (contents == NULL)
     {
       /* XXX Should we delete the section from the bfd ?  */
-      return FALSE;
+      return false;
     }
 
   crc_offset = debuglink_size - 4;
@@ -1820,34 +1742,19 @@ bfd_fill_in_gnu_debuglink_section (bfd *
 
   bfd_put_32 (abfd, crc32, contents + crc_offset);
 
-  if (! bfd_set_section_contents (abfd, sect, contents, 0, debuglink_size))
-    {
-      /* XXX Should we delete the section from the bfd ?  */
-      free (contents);
-      return FALSE;
-    }
-
-  return TRUE;
+  bool ret = bfd_set_section_contents (abfd, sect, contents, 0, debuglink_size);
+  free (contents);
+  return ret;
 }
 
-/*
-INTERNAL_FUNCTION
-	get_build_id
-
-SYNOPSIS
-	struct bfd_build_id * get_build_id (bfd *abfd);
-
-DESCRIPTION
-	Finds the build-id associated with @var{abfd}.  If the build-id is
-	extracted from the note section then a build-id structure is built
-	for it, using memory allocated to @var{abfd}, and this is then
-	attached to the @var{abfd}.
-
-RETURNS
-	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.
-*/
+/* Finds the build-id associated with @var{abfd}.  If the build-id is
+   extracted from the note section then a build-id structure is built
+   for it, using memory allocated to @var{abfd}, and this is then
+   attached to the @var{abfd}.
+
+   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.  */
 
 static struct bfd_build_id *
 get_build_id (bfd *abfd)
@@ -1866,7 +1773,8 @@ get_build_id (bfd *abfd)
     return (struct bfd_build_id *) abfd->build_id;
 
   sect = bfd_get_section_by_name (abfd, ".note.gnu.build-id");
-  if (sect == NULL)
+  if (sect == NULL
+      || (sect->flags & SEC_HAS_CONTENTS) == 0)
     {
       bfd_set_error (bfd_error_no_debug_section);
       return NULL;
@@ -1881,11 +1789,7 @@ get_build_id (bfd *abfd)
     }
 
   if (!bfd_malloc_and_get_section (abfd, sect, & contents))
-    {
-      if (contents != NULL)
-	free (contents);
-      return NULL;
-    }
+    return NULL;
 
   /* FIXME: Paranoia - allow for compressed build-id sections.
      Maybe we should complain if this size is different from
@@ -1909,7 +1813,7 @@ get_build_id (bfd *abfd)
   if (inote.descsz <= 0
       || inote.type != NT_GNU_BUILD_ID
       || inote.namesz != 4 /* sizeof "GNU"  */
-      || strncmp (inote.namedata, "GNU", 4) != 0
+      || !startswith (inote.namedata, "GNU")
       || inote.descsz > 0x7ffffffe
       || size < (12 + BFD_ALIGN (inote.namesz, 4) + inote.descsz))
     {
@@ -1933,26 +1837,15 @@ get_build_id (bfd *abfd)
   return build_id;
 }
 
-/*
-INTERNAL_FUNCTION
-	get_build_id_name
-
-SYNOPSIS
-	char * get_build_id_name (bfd *abfd, void *build_id_out_p)
-
-DESCRIPTION
-	Searches @var{abfd} for a build-id, and then constructs a pathname
-	from it.  The path is computed as .build-id/NN/NN+NN.debug where
-	NNNN+NN is the build-id value as a hexadecimal string.
-
-RETURNS
-	Returns the constructed filename or NULL upon error.
-	It is the caller's responsibility to free the memory used to hold the
-	filename.
-	If a filename is returned then the @var{build_id_out_p}
-	parameter (which points to a @code{struct bfd_build_id}
-	pointer) is set to a pointer to the build_id structure.
-*/
+/* Searches @var{abfd} for a build-id, and then constructs a pathname
+   from it.  The path is computed as .build-id/NN/NN+NN.debug where
+   NNNN+NN is the build-id value as a hexadecimal string.
+
+   Returns the constructed filename or NULL upon error.  It is the
+   caller's responsibility to free the memory used to hold the
+   filename.  If a filename is returned then the @var{build_id_out_p}
+   parameter (which points to a @code{struct bfd_build_id} pointer) is
+   set to a pointer to the build_id structure.  */
 
 static char *
 get_build_id_name (bfd *abfd, void *build_id_out_p)
@@ -1964,7 +1857,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;
@@ -1996,50 +1889,40 @@ get_build_id_name (bfd *abfd, void *buil
   return name;
 }
 
-/*
-INTERNAL_FUNCTION
-	check_build_id_file
+/* Checks to see if @var{name} is a readable file and if its build-id
+   matches @var{buildid}.
 
-SYNOPSIS
-	bfd_boolean check_build_id_file (char *name, void *buildid_p);
-
-DESCRIPTION
-	Checks to see if @var{name} is a readable file and if its build-id
-	matches @var{buildid}.
+   Returns TRUE if the file exists, is readable, and contains a
+   build-id which matches the build-id pointed at by @var{build_id_p}
+   (which is really a @code{struct bfd_build_id **}).  */
 
-RETURNS
-	Returns TRUE if the file exists, is readable, and contains a
-	build-id which matches the build-id pointed at by
-	@var{build_id_p} (which is really a @code{struct bfd_build_id **}).
-*/
-
-static bfd_boolean
+static bool
 check_build_id_file (const char *name, void *buildid_p)
 {
   struct bfd_build_id *orig_build_id;
   struct bfd_build_id *build_id;
   bfd * file;
-  bfd_boolean result;
+  bool result;
 
   BFD_ASSERT (name);
   BFD_ASSERT (buildid_p);
 
   file = bfd_openr (name, NULL);
   if (file == NULL)
-    return FALSE;
+    return false;
 
   /* If the file is an archive, process all of its elements.  */
   if (! bfd_check_format (file, bfd_object))
     {
       bfd_close (file);
-      return FALSE;
+      return false;
     }
 
   build_id = get_build_id (file);
   if (build_id == NULL)
     {
       bfd_close (file);
-      return FALSE;
+      return false;
     }
 
   orig_build_id = *(struct bfd_build_id **) buildid_p;
@@ -2074,10 +1957,10 @@ DESCRIPTION
 	If @var{dir} is NULL, the search will take place starting at
 	the current directory.
 
-RETURNS
-	<<NULL>> on any errors or failure to locate the debug file,
-	otherwise a pointer to a heap-allocated string containing the
-	filename.  The caller is responsible for freeing this string.
+	Returns <<NULL>> on any errors or failure to locate the debug
+	file, otherwise a pointer to a heap-allocated string
+	containing the filename.  The caller is responsible for
+	freeing this string.
 */
 
 char *
@@ -2085,7 +1968,7 @@ bfd_follow_build_id_debuglink (bfd *abfd
 {
   struct bfd_build_id *build_id;
 
-  return find_separate_debug_file (abfd, dir, FALSE,
+  return find_separate_debug_file (abfd, dir, false,
 				   get_build_id_name,
 				   check_build_id_file, &build_id);
 }
@@ -2095,17 +1978,107 @@ 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}, 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.
+*/
+
+const char *
+bfd_set_filename (bfd *abfd, const char *filename)
+{
+  size_t len = strlen (filename) + 1;
+  char *n = bfd_alloc (abfd, len);
+
+  if (n == NULL)
+    return NULL;
+
+  if (abfd->filename != NULL)
+    {
+      /* PR 29389.  If we attempt to rename a file that has been closed due
+	 to caching, then we will not be able to reopen it later on.  */
+      if (abfd->iostream == NULL && (abfd->flags & BFD_CLOSED_BY_CACHE))
+	{
+	  bfd_set_error (bfd_error_invalid_operation);
+	  return NULL;
+	}
+
+      /* Similarly if we attempt to close a renamed file because the
+	 cache is now full, we will not be able to reopen it later on.  */
+      if (abfd->iostream != NULL)
+	abfd->cacheable = 0;
+    }
+
+  memcpy (n, filename, len);
+  abfd->filename = n;
+
+  return n;
+}
+
+/*
+FUNCTION
+	bfd_extract_object_only_section
+
+SYNOPSIS
+	const char *bfd_extract_object_only_section
+	  (bfd *abfd);
 
 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}.
+
+	Takes a @var{ABFD} and extract the .gnu_object_only section into
+	a temporary file.
+
+RETURNS
+	The name of the temporary file is returned if all is ok.
+	Otherwise <<NULL>> is returned and bfd_error is set.
 */
 
-void
-bfd_set_filename (bfd *abfd, char *filename)
+const char *
+bfd_extract_object_only_section (bfd *abfd)
 {
-  free ((char *) abfd->filename);
-  abfd->filename = filename;
+  asection *sec = abfd->object_only_section;
+  const char *name;
+  FILE *file;
+  bfd_byte *memhunk = NULL;
+  size_t off, size;
+  bfd_error_type err;
+
+  /* Get a temporary object-only file.  */
+  name = make_temp_file (".obj-only.o");
+
+  /* Open the object-only file.  */
+  file = _bfd_real_fopen (name, FOPEN_WB);
+  if (!bfd_get_full_section_contents (abfd, sec, &memhunk))
+    {
+      err = bfd_get_error ();
+
+loser:
+      free (memhunk);
+      fclose (file);
+      unlink (name);
+      bfd_set_error (err);
+      return NULL;
+    }
+
+  off = 0;
+  size = sec->size;
+  while (off != size)
+    {
+      size_t written, nwrite = size - off;
+
+      written = fwrite (memhunk + off, 1, nwrite, file);
+      if (written < nwrite && ferror (file))
+	{
+	  err = bfd_error_system_call;
+	  goto loser;
+	}
+
+      off += written;
+    }
+
+  free (memhunk);
+  fclose (file);
+  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.20200303/bfd/osf-core.c ./bfd/osf-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/osf-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/osf-core.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -70,21 +70,21 @@ 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);
+  val = bfd_read (& core_header, amt, abfd);
   if (val != sizeof core_header)
     return NULL;
 
-  if (! CONST_STRNEQ (core_header.magic, "Core"))
+  if (! startswith (core_header.magic, "Core"))
     return NULL;
 
   core_hdr (abfd) = (struct osf_core_struct *)
@@ -92,7 +92,8 @@ osf_core_core_file_p (bfd *abfd)
   if (!core_hdr (abfd))
     return NULL;
 
-  strncpy (core_command (abfd), core_header.name, MAXCOMLEN + 1);
+  strncpy (core_command (abfd), core_header.name, MAXCOMLEN);
+  core_command (abfd)[MAXCOMLEN] = 0;
   core_signal (abfd) = core_header.signo;
 
   for (i = 0; i < core_header.nscns; i++)
@@ -101,7 +102,7 @@ osf_core_core_file_p (bfd *abfd)
       flagword flags;
 
       amt = sizeof core_scnhdr;
-      val = bfd_bread (& core_scnhdr, amt, abfd);
+      val = bfd_read (& core_scnhdr, amt, abfd);
       if (val != sizeof core_scnhdr)
 	break;
 
@@ -138,7 +139,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));
@@ -169,9 +170,9 @@ swap_abort (void)
 #define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
 #define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
 #define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
+#define	NO_GET64 ((uint64_t (*) (const void *)) swap_abort)
+#define	NO_PUT64 ((void (*) (uint64_t, void *)) swap_abort)
+#define	NO_GETS64 ((int64_t (*) (const void *)) swap_abort)
 
 const bfd_target core_osf_vec =
   {
@@ -187,6 +188,7 @@ const bfd_target core_osf_vec =
     ' ',			/* ar_pad_char */
     16,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 16 bit 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.20200303/bfd/pc532-mach.c ./bfd/pc532-mach.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pc532-mach.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pc532-mach.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -77,7 +77,7 @@
 reloc_howto_type *MY_bfd_reloc_type_lookup
   (bfd *abfd, bfd_reloc_code_real_type code);
 
-static bfd_boolean
+static bool
 MY(write_object_contents) (bfd *abfd)
 {
   struct external_exec exec_bytes;
@@ -100,7 +100,7 @@ MY(write_object_contents) (bfd *abfd)
 
   WRITE_HEADERS (abfd, execp);
 
-  return TRUE;
+  return true;
 }
 
 #define MY_write_object_contents MY(write_object_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.20200303/bfd/pdb.c ./bfd/pdb.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pdb.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/pdb.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,864 @@
+/* BFD back-end for PDB Multi-Stream Format archives.
+   Copyright (C) 2022-2025 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.  */
+
+/* This describes the MSF file archive format, which is used for the
+   PDB debug info generated by MSVC. See https://llvm.org/docs/PDB/MsfFile.html
+   for a full description of the format.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+
+/* "Microsoft C/C++ MSF 7.00\r\n\x1a\x44\x53\0\0\0" */
+static const uint8_t pdb_magic[] =
+{ 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66,
+  0x74, 0x20, 0x43, 0x2f, 0x43, 0x2b, 0x2b, 0x20,
+  0x4d, 0x53, 0x46, 0x20, 0x37, 0x2e, 0x30, 0x30,
+  0x0d, 0x0a, 0x1a, 0x44, 0x53, 0x00, 0x00, 0x00 };
+
+#define arch_eltdata(bfd) ((struct areltdata *) ((bfd)->arelt_data))
+
+static bfd_cleanup
+pdb_archive_p (bfd *abfd)
+{
+  int ret;
+  char magic[sizeof (pdb_magic)];
+
+  ret = bfd_read (magic, sizeof (magic), abfd);
+  if (ret != sizeof (magic))
+    {
+      bfd_set_error (bfd_error_wrong_format);
+      return NULL;
+    }
+
+  if (memcmp (magic, pdb_magic, sizeof (magic)))
+    {
+      bfd_set_error (bfd_error_wrong_format);
+      return NULL;
+    }
+
+  void *tdata = bfd_zalloc (abfd, sizeof (struct artdata));
+  if (tdata == NULL)
+    return NULL;
+  bfd_ardata (abfd) = tdata;
+
+  return _bfd_no_cleanup;
+}
+
+static bfd *
+pdb_get_elt_at_index (bfd *abfd, symindex sym_index)
+{
+  char int_buf[sizeof (uint32_t)];
+  uint32_t block_size, block_map_addr, block, num_files;
+  uint32_t first_dir_block, dir_offset, file_size, block_off, left;
+  char name[10];
+  bfd *file;
+  char *buf;
+
+  /* Get block_size.  */
+
+  if (bfd_seek (abfd, sizeof (pdb_magic), SEEK_SET))
+    return NULL;
+
+  if (bfd_read (int_buf, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return NULL;
+    }
+
+  block_size = bfd_getl32 (int_buf);
+  if ((block_size & -block_size) != block_size
+      || block_size < 512
+      || block_size > 4096)
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return NULL;
+    }
+
+  /* Get block_map_addr.  */
+
+  if (bfd_seek (abfd, 4 * sizeof (uint32_t), SEEK_CUR))
+    return NULL;
+
+  if (bfd_read (int_buf, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return NULL;
+    }
+
+  block_map_addr = bfd_getl32 (int_buf);
+
+  /* Get num_files.  */
+
+  if (bfd_seek (abfd, block_map_addr * block_size, SEEK_SET))
+    return NULL;
+
+  if (bfd_read (int_buf, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return NULL;
+    }
+
+  first_dir_block = bfd_getl32 (int_buf);
+
+  if (bfd_seek (abfd, first_dir_block * block_size, SEEK_SET))
+    return NULL;
+
+  if (bfd_read (int_buf, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return NULL;
+    }
+
+  num_files = bfd_getl32 (int_buf);
+
+  if (sym_index >= num_files)
+    {
+      bfd_set_error (bfd_error_no_more_archived_files);
+      return NULL;
+    }
+
+  /* Read file size.  */
+
+  dir_offset = sizeof (uint32_t) * (sym_index + 1);
+
+  if (dir_offset >= block_size)
+    {
+      uint32_t block_map_addr_off;
+
+      block_map_addr_off = ((dir_offset / block_size) * sizeof (uint32_t));
+
+      if (bfd_seek (abfd, (block_map_addr * block_size) + block_map_addr_off,
+		    SEEK_SET))
+	return NULL;
+
+      if (bfd_read (int_buf, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+	{
+	  bfd_set_error (bfd_error_malformed_archive);
+	  return NULL;
+	}
+
+      block = bfd_getl32 (int_buf);
+    }
+  else
+    {
+      block = first_dir_block;
+    }
+
+  if (bfd_seek (abfd, (block * block_size) + (dir_offset % block_size),
+		SEEK_SET))
+    return NULL;
+
+  if (bfd_read (int_buf, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    {
+      bfd_set_error (bfd_error_malformed_archive);
+      return NULL;
+    }
+
+  file_size = bfd_getl32 (int_buf);
+
+  /* Undocumented? Seen on PDBs created by MSVC 2022.  */
+  if (file_size == 0xffffffff)
+    file_size = 0;
+
+  /* Create BFD. */
+
+  /* Four hex digits is enough - even though MSF allows for 32 bits, the
+     PDB format itself only uses 16 bits for stream numbers.  */
+  sprintf (name, "%04lx", sym_index);
+
+  file = bfd_create (name, abfd);
+
+  if (!file)
+    return NULL;
+
+  if (!bfd_make_writable (file))
+    goto fail;
+
+  file->arelt_data =
+    (struct areltdata *) bfd_zmalloc (sizeof (struct areltdata));
+
+  if (!file->arelt_data)
+    goto fail;
+
+  arch_eltdata (file)->parsed_size = file_size;
+  arch_eltdata (file)->key = sym_index;
+
+  if (file_size == 0)
+    return file;
+
+  block_off = 0;
+
+  /* Sum number of blocks in previous files.  */
+
+  if (sym_index != 0)
+    {
+      dir_offset = sizeof (uint32_t);
+
+      if (bfd_seek (abfd, (first_dir_block * block_size) + sizeof (uint32_t),
+		    SEEK_SET))
+	goto fail;
+
+      for (symindex i = 0; i < sym_index; i++)
+	{
+	  uint32_t size, num_blocks;
+
+	  if ((dir_offset % block_size) == 0)
+	    {
+	      uint32_t block_map_addr_off;
+
+	      block_map_addr_off =
+		((dir_offset / block_size) * sizeof (uint32_t));
+
+	      if (bfd_seek
+		  (abfd, (block_map_addr * block_size) + block_map_addr_off,
+		   SEEK_SET))
+		goto fail;
+
+	      if (bfd_read (int_buf, sizeof (uint32_t), abfd) !=
+		  sizeof (uint32_t))
+		{
+		  bfd_set_error (bfd_error_malformed_archive);
+		  goto fail;
+		}
+
+	      block = bfd_getl32 (int_buf);
+
+	      if (bfd_seek (abfd, block * block_size, SEEK_SET))
+		goto fail;
+	    }
+
+	  if (bfd_read (int_buf, sizeof (uint32_t), abfd) !=
+	      sizeof (uint32_t))
+	    {
+	      bfd_set_error (bfd_error_malformed_archive);
+	      goto fail;
+	    }
+
+	  size = bfd_getl32 (int_buf);
+
+	  if (size == 0xffffffff)
+	    size = 0;
+
+	  num_blocks = (size + block_size - 1) / block_size;
+	  block_off += num_blocks;
+
+	  dir_offset += sizeof (uint32_t);
+	}
+    }
+
+  /* Read blocks, and write into new BFD.  */
+
+  dir_offset = sizeof (uint32_t) * (num_files + block_off + 1);
+
+  if (dir_offset >= block_size)
+    {
+      uint32_t block_map_addr_off;
+
+      block_map_addr_off = ((dir_offset / block_size) * sizeof (uint32_t));
+
+      if (bfd_seek (abfd, (block_map_addr * block_size) + block_map_addr_off,
+		    SEEK_SET))
+	goto fail;
+
+      if (bfd_read (int_buf, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+	{
+	  bfd_set_error (bfd_error_malformed_archive);
+	  goto fail;
+	}
+
+      block = bfd_getl32 (int_buf);
+    }
+  else
+    {
+      block = first_dir_block;
+    }
+
+  buf = bfd_malloc (block_size);
+  if (!buf)
+    goto fail;
+
+  left = file_size;
+  do
+    {
+      uint32_t file_block, to_read;
+
+      if ((dir_offset % block_size) == 0 && left != file_size)
+	{
+	  uint32_t block_map_addr_off;
+
+	  block_map_addr_off =
+	    ((dir_offset / block_size) * sizeof (uint32_t));
+
+	  if (bfd_seek
+	      (abfd, (block_map_addr * block_size) + block_map_addr_off,
+	       SEEK_SET))
+	    goto fail2;
+
+	  if (bfd_read (int_buf, sizeof (uint32_t), abfd) !=
+	      sizeof (uint32_t))
+	    {
+	      bfd_set_error (bfd_error_malformed_archive);
+	      goto fail2;
+	    }
+
+	  block = bfd_getl32 (int_buf);
+	}
+
+      if (bfd_seek (abfd, (block * block_size) + (dir_offset % block_size),
+		    SEEK_SET))
+	goto fail2;
+
+      if (bfd_read (int_buf, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+	{
+	  bfd_set_error (bfd_error_malformed_archive);
+	  goto fail2;
+	}
+
+      file_block = bfd_getl32 (int_buf);
+
+      if (bfd_seek (abfd, file_block * block_size, SEEK_SET))
+	goto fail2;
+
+      to_read = left > block_size ? block_size : left;
+
+      if (bfd_read (buf, to_read, abfd) != to_read)
+	{
+	  bfd_set_error (bfd_error_malformed_archive);
+	  goto fail2;
+	}
+
+      if (bfd_write (buf, to_read, file) != to_read)
+	goto fail2;
+
+      if (left > block_size)
+	left -= block_size;
+      else
+	break;
+
+      dir_offset += sizeof (uint32_t);
+    }
+  while (left > 0);
+
+  free (buf);
+
+  return file;
+
+fail2:
+  free (buf);
+
+fail:
+  bfd_close (file);
+  return NULL;
+}
+
+static bfd *
+pdb_openr_next_archived_file (bfd *archive, bfd *last_file)
+{
+  if (!last_file)
+    return pdb_get_elt_at_index (archive, 0);
+  else
+    return pdb_get_elt_at_index (archive, arch_eltdata (last_file)->key + 1);
+}
+
+static int
+pdb_generic_stat_arch_elt (bfd *abfd, struct stat *buf)
+{
+  buf->st_mtime = 0;
+  buf->st_uid = 0;
+  buf->st_gid = 0;
+  buf->st_mode = 0644;
+  buf->st_size = arch_eltdata (abfd)->parsed_size;
+
+  return 0;
+}
+
+static uint32_t
+pdb_allocate_block (uint32_t *num_blocks, uint32_t block_size)
+{
+  uint32_t block;
+
+  block = *num_blocks;
+
+  (*num_blocks)++;
+
+  /* If new interval, skip two blocks for free space map.  */
+
+  if ((block % block_size) == 1)
+    {
+      block += 2;
+      (*num_blocks) += 2;
+    }
+
+  return block;
+}
+
+static bool
+pdb_write_directory (bfd *abfd, uint32_t block_size, uint32_t num_files,
+		     uint32_t block_map_addr, uint32_t * num_blocks,
+		     uint32_t *stream0_start)
+{
+  char tmp[sizeof (uint32_t)];
+  uint32_t block, left, block_map_off;
+  bfd *arelt;
+  char *buf;
+
+  /* Allocate first block for directory.  */
+
+  block = pdb_allocate_block (num_blocks, block_size);
+  left = block_size;
+
+  /* Write allocated block no. at beginning of block map.  */
+
+  if (bfd_seek (abfd, block_map_addr * block_size, SEEK_SET))
+    return false;
+
+  bfd_putl32 (block, tmp);
+
+  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    return false;
+
+  block_map_off = sizeof (uint32_t);
+
+  /* Write num_files at beginning of directory.  */
+
+  if (bfd_seek (abfd, block * block_size, SEEK_SET))
+    return false;
+
+  bfd_putl32 (num_files, tmp);
+
+  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    return false;
+
+  left -= sizeof (uint32_t);
+
+  /* Write file sizes.  */
+
+  arelt = abfd->archive_head;
+  while (arelt)
+    {
+      if (left == 0)
+	{
+	  if (block_map_off == block_size) /* Too many blocks.  */
+	    {
+	      bfd_set_error (bfd_error_invalid_operation);
+	      return false;
+	    }
+
+	  block = pdb_allocate_block (num_blocks, block_size);
+	  left = block_size;
+
+	  if (bfd_seek
+	      (abfd, (block_map_addr * block_size) + block_map_off, SEEK_SET))
+	    return false;
+
+	  bfd_putl32 (block, tmp);
+
+	  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+	    return false;
+
+	  block_map_off += sizeof (uint32_t);
+
+	  if (bfd_seek (abfd, block * block_size, SEEK_SET))
+	    return false;
+	}
+
+      bfd_putl32 (bfd_get_size (arelt), tmp);
+
+      if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+	return false;
+
+      left -= sizeof (uint32_t);
+
+      arelt = arelt->archive_next;
+    }
+
+  /* Write blocks.  */
+
+  buf = bfd_malloc (block_size);
+  if (!buf)
+    return false;
+
+  arelt = abfd->archive_head;
+  while (arelt)
+    {
+      ufile_ptr size = bfd_get_size (arelt);
+      uint32_t req_blocks = (size + block_size - 1) / block_size;
+
+      if (bfd_seek (arelt, 0, SEEK_SET))
+	{
+	  free (buf);
+	  return false;
+	}
+
+      for (uint32_t i = 0; i < req_blocks; i++)
+	{
+	  uint32_t file_block, to_read;
+
+	  if (left == 0)
+	    {
+	      if (block_map_off == block_size) /* Too many blocks.  */
+		{
+		  bfd_set_error (bfd_error_invalid_operation);
+		  free (buf);
+		  return false;
+		}
+
+	      block = pdb_allocate_block (num_blocks, block_size);
+	      left = block_size;
+
+	      if (bfd_seek
+		  (abfd, (block_map_addr * block_size) + block_map_off,
+		   SEEK_SET))
+		{
+		  free (buf);
+		  return false;
+		}
+
+	      bfd_putl32 (block, tmp);
+
+	      if (bfd_write (tmp, sizeof (uint32_t), abfd) !=
+		  sizeof (uint32_t))
+		{
+		  free (buf);
+		  return false;
+		}
+
+	      block_map_off += sizeof (uint32_t);
+
+	      if (bfd_seek (abfd, block * block_size, SEEK_SET))
+		{
+		  free (buf);
+		  return false;
+		}
+	    }
+
+	  /* Allocate block and write number into directory.  */
+
+	  file_block = pdb_allocate_block (num_blocks, block_size);
+
+	  bfd_putl32 (file_block, tmp);
+
+	  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+	    {
+	      free (buf);
+	      return false;
+	    }
+
+	  if (arelt == abfd->archive_head && i == 0)
+	    *stream0_start = file_block;
+
+	  left -= sizeof (uint32_t);
+
+	  /* Read file contents into buffer.  */
+
+	  to_read = size > block_size ? block_size : size;
+
+	  if (bfd_read (buf, to_read, arelt) != to_read)
+	    {
+	      free (buf);
+	      return false;
+	    }
+
+	  size -= to_read;
+
+	  if (to_read < block_size)
+	    memset (buf + to_read, 0, block_size - to_read);
+
+	  if (bfd_seek (abfd, file_block * block_size, SEEK_SET))
+	    {
+	      free (buf);
+	      return false;
+	    }
+
+	  /* Write file contents into allocated block.  */
+
+	  if (bfd_write (buf, block_size, abfd) != block_size)
+	    {
+	      free (buf);
+	      return false;
+	    }
+
+	  if (bfd_seek
+	      (abfd, (block * block_size) + block_size - left, SEEK_SET))
+	    {
+	      free (buf);
+	      return false;
+	    }
+	}
+
+      arelt = arelt->archive_next;
+    }
+
+  memset (buf, 0, left);
+
+  if (bfd_write (buf, left, abfd) != left)
+    {
+      free (buf);
+      return false;
+    }
+
+  free (buf);
+
+  return true;
+}
+
+static bool
+pdb_write_bitmap (bfd *abfd, uint32_t block_size, uint32_t num_blocks,
+		  uint32_t stream0_start)
+{
+  char *buf;
+  uint32_t num_intervals = (num_blocks + block_size - 1) / block_size;
+
+  buf = bfd_malloc (block_size);
+  if (!buf)
+    return false;
+
+  for (uint32_t i = 0; i < num_intervals; i++)
+    {
+      if (bfd_seek (abfd, ((i * block_size) + 1) * block_size, SEEK_SET))
+	{
+	  free (buf);
+	  return false;
+	}
+
+      /* All of our blocks are contiguous, making our free block map
+	 relatively simple.  0 = used, 1 = free.  */
+
+      if (num_blocks >= 8)
+	memset (buf, 0,
+		(num_blocks / 8) >
+		block_size ? block_size : (num_blocks / 8));
+
+      if (num_blocks < block_size * 8)
+	{
+	  unsigned int off = num_blocks / 8;
+
+	  if (num_blocks % 8)
+	    {
+	      buf[off] = 256 - (1 << (num_blocks % 8));
+	      off++;
+	    }
+
+	  if (off < block_size)
+	    memset (buf + off, 0xff, block_size - off);
+	}
+
+      /* Mark the blocks allocated to stream 0 as free.  This is because stream
+	 0 is intended to be used for the previous MSF directory, to allow
+	 atomic updates.  This doesn't apply to us, as we rewrite the whole
+	 file whenever any change is made.  */
+
+      if (i == 0 && abfd->archive_head)
+	{
+	  bfd *arelt = abfd->archive_head;
+	  uint32_t stream0_blocks =
+	    (bfd_get_size (arelt) + block_size - 1) / block_size;
+
+	  if (stream0_start % 8)
+	    {
+	      unsigned int high_bit;
+
+	      high_bit = (stream0_start % 8) + stream0_blocks;
+	      if (high_bit > 8)
+		high_bit = 8;
+
+	      buf[stream0_start / 8] |=
+		(1 << high_bit) - (1 << (stream0_start % 8));
+
+	      stream0_blocks -= high_bit - (stream0_start % 8);
+	      stream0_start += high_bit - (stream0_start % 8);
+	    }
+
+	  memset (buf + (stream0_start / 8), 0xff, stream0_blocks / 8);
+	  stream0_start += stream0_blocks / 8;
+	  stream0_blocks %= 8;
+
+	  if (stream0_blocks > 0)
+	    buf[stream0_start / 8] |= (1 << stream0_blocks) - 1;
+	}
+
+      if (num_blocks < block_size * 8)
+	num_blocks = 0;
+      else
+	num_blocks -= block_size * 8;
+
+      if (bfd_write (buf, block_size, abfd) != block_size)
+	return false;
+    }
+
+  free (buf);
+
+  return true;
+}
+
+static bool
+pdb_write_contents (bfd *abfd)
+{
+  char tmp[sizeof (uint32_t)];
+  const uint32_t block_size = 0x400;
+  uint32_t block_map_addr;
+  uint32_t num_blocks;
+  uint32_t num_files = 0;
+  uint32_t num_directory_bytes = sizeof (uint32_t);
+  uint32_t stream0_start = 0;
+  bfd *arelt;
+
+  if (bfd_write (pdb_magic, sizeof (pdb_magic), abfd) != sizeof (pdb_magic))
+    return false;
+
+  bfd_putl32 (block_size, tmp);
+
+  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    return false;
+
+  bfd_putl32 (1, tmp); /* Free block map block (always either 1 or 2).  */
+
+  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    return false;
+
+  arelt = abfd->archive_head;
+
+  while (arelt)
+    {
+      uint32_t blocks_required =
+	(bfd_get_size (arelt) + block_size - 1) / block_size;
+
+      num_directory_bytes += sizeof (uint32_t); /* Size.  */
+      num_directory_bytes += blocks_required * sizeof (uint32_t); /* Blocks.  */
+
+      num_files++;
+
+      arelt = arelt->archive_next;
+    }
+
+  /* Superblock plus two bitmap blocks.  */
+  num_blocks = 3;
+
+  /* Skip num_blocks for now.  */
+  if (bfd_seek (abfd, sizeof (uint32_t), SEEK_CUR))
+    return false;
+
+  bfd_putl32 (num_directory_bytes, tmp);
+
+  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    return false;
+
+  /* Skip unknown uint32_t (always 0?).  */
+  if (bfd_seek (abfd, sizeof (uint32_t), SEEK_CUR))
+    return false;
+
+  block_map_addr = pdb_allocate_block (&num_blocks, block_size);
+
+  bfd_putl32 (block_map_addr, tmp);
+
+  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    return false;
+
+  if (!pdb_write_directory
+      (abfd, block_size, num_files, block_map_addr, &num_blocks,
+       &stream0_start))
+    return false;
+
+  if (!pdb_write_bitmap (abfd, block_size, num_blocks, stream0_start))
+    return false;
+
+  /* Write num_blocks now we know it.  */
+
+  if (bfd_seek
+      (abfd, sizeof (pdb_magic) + sizeof (uint32_t) + sizeof (uint32_t),
+       SEEK_SET))
+    return false;
+
+  bfd_putl32 (num_blocks, tmp);
+
+  if (bfd_write (tmp, sizeof (uint32_t), abfd) != sizeof (uint32_t))
+    return false;
+
+  return true;
+}
+
+#define pdb_bfd_free_cached_info _bfd_generic_bfd_free_cached_info
+#define pdb_new_section_hook _bfd_generic_new_section_hook
+#define pdb_get_section_contents _bfd_generic_get_section_contents
+#define pdb_close_and_cleanup _bfd_generic_close_and_cleanup
+
+#define pdb_slurp_armap _bfd_noarchive_slurp_armap
+#define pdb_slurp_extended_name_table _bfd_noarchive_slurp_extended_name_table
+#define pdb_construct_extended_name_table _bfd_noarchive_construct_extended_name_table
+#define pdb_truncate_arname _bfd_noarchive_truncate_arname
+#define pdb_write_armap _bfd_noarchive_write_armap
+#define pdb_read_ar_hdr _bfd_noarchive_read_ar_hdr
+#define pdb_write_ar_hdr _bfd_noarchive_write_ar_hdr
+#define pdb_update_armap_timestamp _bfd_noarchive_update_armap_timestamp
+
+const bfd_target pdb_vec =
+{
+  "pdb",
+  bfd_target_unknown_flavour,
+  BFD_ENDIAN_LITTLE,		/* target byte order */
+  BFD_ENDIAN_LITTLE,		/* target headers byte order */
+  0,				/* object flags */
+  0,				/* section flags */
+  0,				/* leading underscore */
+  ' ',				/* ar_pad_char */
+  16,				/* ar_max_namelen */
+  0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
+  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,
+    _bfd_dummy_target,
+    pdb_archive_p,
+    _bfd_dummy_target
+  },
+  {				/* bfd_set_format */
+    _bfd_bool_bfd_false_error,
+    _bfd_bool_bfd_false_error,
+    _bfd_bool_bfd_true,
+    _bfd_bool_bfd_false_error
+  },
+  {				/* bfd_write_contents */
+    _bfd_bool_bfd_true,
+    _bfd_bool_bfd_false_error,
+    pdb_write_contents,
+    _bfd_bool_bfd_false_error
+  },
+
+  BFD_JUMP_TABLE_GENERIC (pdb),
+  BFD_JUMP_TABLE_COPY (_bfd_generic),
+  BFD_JUMP_TABLE_CORE (_bfd_nocore),
+  BFD_JUMP_TABLE_ARCHIVE (pdb),
+  BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
+  BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
+  BFD_JUMP_TABLE_WRITE (_bfd_generic),
+  BFD_JUMP_TABLE_LINK (_bfd_nolink),
+  BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
+
+  NULL,
+
+  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.20200303/bfd/pdp11.c ./bfd/pdp11.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pdp11.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pdp11.c	2026-03-05 02:07:20.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-2025 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.  */
@@ -128,7 +145,7 @@ struct pdp11_external_nlist
 #define MY_entry_is_text_address 1
 
 #define MY_write_object_contents MY(write_object_contents)
-static bfd_boolean MY(write_object_contents) (bfd *);
+static bool MY(write_object_contents) (bfd *);
 #define MY_text_includes_header 1
 
 #define MY_BFD_TARGET
@@ -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,20 +273,27 @@ 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 bool 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( 0,	       0,  2,  16,  false, 0, complain_overflow_dont,0,"16",	true, 0x0000ffff,0x0000ffff, false),
+HOWTO( 1,	       0,  2,  16,  true,  0, complain_overflow_dont,0,"DISP16",	true, 0x0000ffff,0x0000ffff, false),
+HOWTO( 2,	       0,  4,  32,  false, 0, complain_overflow_dont,0,"32",	true, 0x0000ffff,0x0000ffff, false),
 };
 
 #define TABLE_SIZE(TABLE)	(sizeof(TABLE)/sizeof(TABLE[0]))
 
 
-static bfd_boolean aout_link_check_archive_element (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, const char *, bfd_boolean *);
-static bfd_boolean aout_link_add_object_symbols	   (bfd *, struct bfd_link_info *);
-static bfd_boolean aout_link_add_symbols	   (bfd *, struct bfd_link_info *);
-static bfd_boolean aout_link_write_symbols	   (struct aout_final_link_info *, bfd *);
+static bool aout_link_check_archive_element (bfd *, struct bfd_link_info *,
+					     struct bfd_link_hash_entry *,
+					     const char *, bool *);
+static bool aout_link_add_object_symbols (bfd *, struct bfd_link_info *);
+static bool aout_link_add_symbols (bfd *, struct bfd_link_info *);
+static bool aout_link_write_symbols (struct aout_final_link_info *, bfd *);
 
 
 reloc_howto_type *
@@ -268,6 +306,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 +329,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)
 {
@@ -312,44 +365,44 @@ pdp11_aout_write_headers (bfd *abfd, str
       execp->a_drsize = 0;
     }
 
-  NAME (aout, swap_exec_header_out) (abfd, execp, & exec_bytes);
+  if (!NAME (aout, swap_exec_header_out) (abfd, execp, & exec_bytes))
+    return false;
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    return false;
 
-  if (bfd_bwrite ((void *) &exec_bytes, (bfd_size_type) EXEC_BYTES_SIZE, abfd)
-      != EXEC_BYTES_SIZE)
-    return FALSE;
+  if (bfd_write (&exec_bytes, EXEC_BYTES_SIZE, abfd) != EXEC_BYTES_SIZE)
+    return false;
 
   /* Now write out reloc info, followed by syms and strings.  */
   if (bfd_get_outsymbols (abfd) != NULL
       && bfd_get_symcount (abfd) != 0)
     {
-      if (bfd_seek (abfd, (file_ptr) (N_SYMOFF (execp)), SEEK_SET) != 0)
-	return FALSE;
+      if (bfd_seek (abfd, N_SYMOFF (execp), SEEK_SET) != 0)
+	return false;
 
       if (! NAME (aout, write_syms) (abfd))
-	return FALSE;
+	return false;
     }
 
   if (obj_textsec (abfd)->reloc_count > 0
       || obj_datasec (abfd)->reloc_count > 0)
     {
-      if (bfd_seek (abfd, (file_ptr) (N_TRELOFF (execp)), SEEK_SET) != 0
+      if (bfd_seek (abfd, N_TRELOFF (execp), SEEK_SET) != 0
 	  || !NAME (aout, squirt_out_relocs) (abfd, obj_textsec (abfd))
-	  || bfd_seek (abfd, (file_ptr) (N_DRELOFF (execp)), SEEK_SET) != 0
+	  || bfd_seek (abfd, N_DRELOFF (execp), SEEK_SET) != 0
 	  || !NAME (aout, squirt_out_relocs) (abfd, obj_datasec (abfd)))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write an object file.
    Section contents have already been written.  We write the
    file header, symbols, and relocation.  */
 
-static bfd_boolean
+static bool
 MY(write_object_contents) (bfd *abfd)
 {
   struct internal_exec *execp = exec_hdr (abfd);
@@ -404,11 +457,33 @@ NAME (aout, swap_exec_header_in) (bfd *a
 
 /*  Swap the information in an internal exec header structure
     "execp" into the buffer "bytes" ready for writing to disk.  */
-void
+bool
 NAME (aout, swap_exec_header_out) (bfd *abfd,
 				   struct internal_exec *execp,
 				   struct external_exec *bytes)
 {
+  const char *err = NULL;
+  uint64_t val;
+#define MAXVAL(x) ((UINT64_C (1) << (8 * sizeof (x) - 1) << 1) - 1)
+  if ((val = execp->a_text) > MAXVAL (bytes->e_text))
+    err = "e_text";
+  else if ((val = execp->a_data) > MAXVAL (bytes->e_data))
+    err = "e_data";
+  else if ((val = execp->a_bss) > MAXVAL (bytes->e_bss))
+    err = "e_bss";
+  else if ((val = execp->a_syms) > MAXVAL (bytes->e_syms))
+    err = "e_syms";
+  else if ((val = execp->a_entry) > MAXVAL (bytes->e_entry))
+    err = "e_entry";
+#undef MAXVAL
+  if (err)
+    {
+      _bfd_error_handler (_("%pB: %#" PRIx64 " overflows header %s field"),
+			  abfd, val, err);
+      bfd_set_error (bfd_error_file_too_big);
+      return false;
+    }
+
   /* Now fill in fields in the raw data, from the fields in the exec struct.  */
   PUT_MAGIC (abfd, execp->a_info,		bytes->e_info);
   PUT_WORD (abfd, execp->a_text,		bytes->e_text);
@@ -430,20 +505,21 @@ NAME (aout, swap_exec_header_out) (bfd *
       fprintf (stderr, "BFD:%s:%d: internal error\n", __FILE__, __LINE__);
       PUT_WORD (abfd, 0,			bytes->e_flag);
     }
+  return true;
 }
 
 /* Make all the section for an a.out file.  */
 
-bfd_boolean
+bool
 NAME (aout, make_sections) (bfd *abfd)
 {
   if (obj_textsec (abfd) == NULL && bfd_make_section (abfd, ".text") == NULL)
-    return FALSE;
+    return false;
   if (obj_datasec (abfd) == NULL && bfd_make_section (abfd, ".data") == NULL)
-    return FALSE;
+    return false;
   if (obj_bsssec (abfd) == NULL  && bfd_make_section (abfd, ".bss") == NULL)
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 /* Some a.out variant thinks that the file open in ABFD
@@ -452,28 +528,23 @@ 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);
+  struct aout_data_struct *rawptr;
+  bfd_cleanup result;
+  size_t amt = sizeof (*rawptr);
 
   rawptr = bfd_zalloc (abfd, amt);
   if (rawptr == NULL)
-    return 0;
-
-  oldrawptr = abfd->tdata.aout_data;
+    return NULL;
   abfd->tdata.aout_data = rawptr;
 
-  /* Copy the contents of the old tdata struct.  */
-  if (oldrawptr != NULL)
-    *abfd->tdata.aout_data = *oldrawptr;
-
   abfd->tdata.aout_data->a.hdr = &rawptr->e;
-  *(abfd->tdata.aout_data->a.hdr) = *execp;	/* Copy in the internal_exec struct.  */
+  /* Copy in the internal_exec struct.  */
+  *(abfd->tdata.aout_data->a.hdr) = *execp;
   execp = abfd->tdata.aout_data->a.hdr;
 
   /* Set the file flags.  */
@@ -498,6 +569,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
@@ -507,7 +580,6 @@ NAME (aout, some_aout_object_p) (bfd *ab
 
   abfd->start_address = execp->a_entry;
 
-  obj_aout_symbols (abfd) = NULL;
   abfd->symcount = execp->a_syms / sizeof (struct external_nlist);
 
   /* The default relocation entry size is that of traditional V7 Unix.  */
@@ -516,17 +588,8 @@ NAME (aout, some_aout_object_p) (bfd *ab
   /* The default symbol entry size is that of traditional Unix.  */
   obj_symbol_entry_size (abfd) = EXTERNAL_NLIST_SIZE;
 
-#ifdef USE_MMAP
-  bfd_init_window (&obj_aout_sym_window (abfd));
-  bfd_init_window (&obj_aout_string_window (abfd));
-#endif
-
-  obj_aout_external_syms (abfd) = NULL;
-  obj_aout_external_strings (abfd) = NULL;
-  obj_aout_sym_hashes (abfd) = NULL;
-
   if (! NAME (aout, make_sections) (abfd))
-    return NULL;
+    goto error_ret;
 
   obj_datasec (abfd)->size = execp->a_data;
   obj_bsssec (abfd)->size = execp->a_bss;
@@ -576,11 +639,11 @@ NAME (aout, some_aout_object_p) (bfd *ab
   /* Determine the architecture and machine type of the object file.  */
   abfd->obj_arch = bfd_arch_obscure;
 
-  adata(abfd)->page_size = TARGET_PAGE_SIZE;
-  adata(abfd)->segment_size = SEGMENT_SIZE;
-  adata(abfd)->exec_bytes_size = EXEC_BYTES_SIZE;
+  adata (abfd)->page_size = TARGET_PAGE_SIZE;
+  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 +655,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);
+  result = (*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
@@ -607,11 +670,14 @@ NAME (aout, some_aout_object_p) (bfd *ab
 
      To fix this, we now accept any non-zero entry point as an indication of
      executability.  This will work most of the time, since only the linker
-     sets the entry point, and that is likely to be non-zero for most systems. */
+     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
@@ -627,27 +693,27 @@ NAME (aout, some_aout_object_p) (bfd *ab
 	issue.  Many kernels are loaded at non standard addresses.  */
       if (abfd->iostream != NULL
 	  && (abfd->flags & BFD_IN_MEMORY) == 0
-	  && (fstat(fileno((FILE *) (abfd->iostream)), &stat_buf) == 0)
+	  && (fstat (fileno ((FILE *) (abfd->iostream)), &stat_buf) == 0)
 	  && ((stat_buf.st_mode & 0111) != 0))
 	abfd->flags |= EXEC_P;
     }
 #endif /* STAT_FOR_EXEC */
 
-  if (!result)
-    {
-      free (rawptr);
-      abfd->tdata.aout_data = oldrawptr;
-    }
-  return result;
+  if (result)
+    return result;
+
+ error_ret:
+  bfd_release (abfd, rawptr);
+  return NULL;
 }
 
 /* Initialize ABFD for use with a.out files.  */
 
-bfd_boolean
+bool
 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);
 
@@ -655,7 +721,7 @@ NAME (aout, mkobject) (bfd *abfd)
   rawptr = bfd_zalloc (abfd, amt);
 
   if (rawptr == NULL)
-    return FALSE;
+    return false;
 
   abfd->tdata.aout_data = rawptr;
   exec_hdr (abfd) = &(rawptr->e);
@@ -664,7 +730,7 @@ NAME (aout, mkobject) (bfd *abfd)
   obj_datasec (abfd) = NULL;
   obj_bsssec (abfd)  = NULL;
 
-  return TRUE;
+  return true;
 }
 
 /* Keep track of machine architecture and machine type for
@@ -678,12 +744,12 @@ NAME (aout, mkobject) (bfd *abfd)
 enum machine_type
 NAME (aout, machine_type) (enum bfd_architecture arch,
 			   unsigned long machine,
-			   bfd_boolean *unknown)
+			   bool *unknown)
 {
   enum machine_type arch_flags;
 
   arch_flags = M_UNKNOWN;
-  *unknown = TRUE;
+  *unknown = true;
 
   switch (arch)
     {
@@ -740,11 +806,11 @@ NAME (aout, machine_type) (enum bfd_arch
 
     case bfd_arch_pdp11:
       /* TODO: arch_flags = M_PDP11; */
-      *unknown = FALSE;
+      *unknown = false;
       break;
 
     case bfd_arch_vax:
-      *unknown = FALSE;
+      *unknown = false;
       break;
 
     default:
@@ -752,7 +818,7 @@ NAME (aout, machine_type) (enum bfd_arch
     }
 
   if (arch_flags != M_UNKNOWN)
-    *unknown = FALSE;
+    *unknown = false;
 
   return arch_flags;
 }
@@ -761,21 +827,21 @@ NAME (aout, machine_type) (enum bfd_arch
    values ARCH and MACHINE.  Verify that @ABFD's format
    can support the architecture required.  */
 
-bfd_boolean
+bool
 NAME (aout, set_arch_mach) (bfd *abfd,
 			    enum bfd_architecture arch,
 			    unsigned long machine)
 {
   if (! bfd_default_set_arch_mach (abfd, arch, machine))
-    return FALSE;
+    return false;
 
   if (arch != bfd_arch_unknown)
     {
-      bfd_boolean unknown;
+      bool unknown;
 
       NAME (aout, machine_type) (arch, machine, &unknown);
       if (unknown)
-	return FALSE;
+	return false;
     }
 
   obj_reloc_entry_size (abfd) = RELOC_SIZE;
@@ -789,57 +855,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 +914,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.  */
+  bool ztih;
+  asection *text = obj_textsec (abfd);
+  asection *data = obj_datasec (abfd);
+  asection *bss = obj_bsssec (abfd);
 
   abdp = aout_backend_info (abfd);
 
@@ -857,18 +926,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 +945,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 +963,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,69 +1006,108 @@ 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);
 }
 
-bfd_boolean
+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);
+}
+
+bool
 NAME (aout, adjust_sizes_and_vmas) (bfd *abfd)
 {
   struct internal_exec *execp = exec_hdr (abfd);
 
   if (! NAME (aout, make_sections) (abfd))
-    return FALSE;
+    return false;
 
-  if (adata(abfd).magic != undecided_magic)
-    return TRUE;
+  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 +1115,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 +1125,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,25 +1166,28 @@ 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;
+  return true;
 }
 
 /* Called by the BFD in response to a bfd_make_section request.  */
 
-bfd_boolean
+bool
 NAME (aout, new_section_hook) (bfd *abfd, asection *newsect)
 {
   /* Align to double at least.  */
@@ -1112,7 +1219,7 @@ NAME (aout, new_section_hook) (bfd *abfd
   return _bfd_generic_new_section_hook (abfd, newsect);
 }
 
-bfd_boolean
+bool
 NAME (aout, set_section_contents) (bfd *abfd,
 				   sec_ptr section,
 				   const void * location,
@@ -1122,13 +1229,13 @@ NAME (aout, set_section_contents) (bfd *
   if (! abfd->output_has_begun)
     {
       if (! NAME (aout, adjust_sizes_and_vmas) (abfd))
-	return FALSE;
+	return false;
     }
 
   if (section == obj_bsssec (abfd))
     {
       bfd_set_error (bfd_error_no_contents);
-      return FALSE;
+      return false;
     }
 
   if (section != obj_textsec (abfd)
@@ -1139,61 +1246,44 @@ NAME (aout, set_section_contents) (bfd *
 	(_("%pB: can not represent section `%pA' in a.out object file format"),
 	 abfd, section);
       bfd_set_error (bfd_error_nonrepresentable_section);
-      return FALSE;
+      return false;
     }
 
   if (count != 0)
     {
       if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
-	  || bfd_bwrite (location, count, abfd) != count)
-	return FALSE;
+	  || bfd_write (location, count, abfd) != count)
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read the external symbols from an a.out file.  */
 
-static bfd_boolean
+static bool
 aout_get_external_symbols (bfd *abfd)
 {
   if (obj_aout_external_syms (abfd) == NULL)
     {
       bfd_size_type count;
-      struct external_nlist *syms;
+      struct external_nlist *syms = NULL;
+      bfd_size_type amt = exec_hdr (abfd)->a_syms;
 
-      count = exec_hdr (abfd)->a_syms / EXTERNAL_NLIST_SIZE;
+      count = amt / EXTERNAL_NLIST_SIZE;
 
       /* PR 17512: file: 011f5a08.  */
       if (count == 0)
-	{
-	  obj_aout_external_syms (abfd) = NULL;
-	  obj_aout_external_sym_count (abfd) = count;
-	  return TRUE;
-	}
+	return true;
 
-#ifdef USE_MMAP
-      if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd),
-				 exec_hdr (abfd)->a_syms,
-				 &obj_aout_sym_window (abfd), TRUE))
-	return FALSE;
-      syms = (struct external_nlist *) obj_aout_sym_window (abfd).data;
-#else
       /* 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)
-	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
+      if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0)
+	return false;
+      syms = _bfd_malloc_and_read (abfd, amt, amt);
+      if (syms == NULL)
+	return false;
 
       obj_aout_external_syms (abfd) = syms;
       obj_aout_external_sym_count (abfd) = count;
@@ -1205,42 +1295,48 @@ 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))
-	return FALSE;
+	  || bfd_read (string_chars, amt, abfd) != amt)
+	return false;
       stringsize = H_GET_32 (abfd, string_chars);
+      if (stringsize == 0)
+	stringsize = 1;
+      else if (stringsize + 1 < BYTES_IN_LONG + 1
+	       || (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);
+      strings = (char *) bfd_malloc (stringsize + 1);
       if (strings == NULL)
-	return FALSE;
+	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;
+	  amt = stringsize - BYTES_IN_LONG;
+	  if (bfd_read (strings + BYTES_IN_LONG, amt, abfd) != amt)
+	    {
+	      free (strings);
+	      return false;
+	    }
 	}
-#endif
+
       /* Ensure that a zero index yields an empty string.  */
-      strings[0] = '\0';
+      if (stringsize >= BYTES_IN_WORD)
+	memset (strings, 0, BYTES_IN_LONG);
 
-      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;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Translate an a.out symbol into a BFD symbol.  The desc, other, type
@@ -1248,13 +1344,13 @@ aout_get_external_symbols (bfd *abfd)
    nlist structure.  This function is responsible for setting
    symbol->flags and symbol->section, and adjusting symbol->value.  */
 
-static bfd_boolean
+static bool
 translate_from_native_sym_flags (bfd *abfd,
 				 aout_symbol_type *cache_ptr)
 {
   flagword visible;
 
-  if (cache_ptr->type == N_FN)
+  if (is_stab (cache_ptr->type, cache_ptr->symbol.name))
     {
       asection *sec;
 
@@ -1262,20 +1358,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;
 	}
@@ -1283,7 +1384,7 @@ translate_from_native_sym_flags (bfd *ab
       cache_ptr->symbol.section = sec;
       cache_ptr->symbol.value -= sec->vma;
 
-      return TRUE;
+      return true;
     }
 
   /* Get the default visibility.  This does not apply to all types, so
@@ -1334,12 +1435,12 @@ translate_from_native_sym_flags (bfd *ab
       break;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the fields of SYM_POINTER according to CACHE_PTR.  */
 
-static bfd_boolean
+static bool
 translate_to_native_sym_flags (bfd *abfd,
 			       asymbol *cache_ptr,
 			       struct external_nlist *sym_pointer)
@@ -1347,10 +1448,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,9 +1465,9 @@ 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;
+      return false;
     }
 
   if (sec->output_section != NULL)
@@ -1392,7 +1495,7 @@ translate_to_native_sym_flags (bfd *abfd
 	(_("%pB: can not represent section `%pA' in a.out object file format"),
 	 abfd, sec);
       bfd_set_error (bfd_error_nonrepresentable_section);
-      return FALSE;
+      return false;
     }
 
   /* Turn the symbol from section relative to absolute again */
@@ -1405,7 +1508,7 @@ translate_to_native_sym_flags (bfd *abfd
 
   PUT_WORD(abfd, value, sym_pointer->e_value);
 
-  return TRUE;
+  return true;
 }
 
 /* Native-level interface to symbols. */
@@ -1413,7 +1516,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,16 +1526,16 @@ 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
+bool
 NAME (aout, translate_symbol_table) (bfd *abfd,
 				     aout_symbol_type *in,
 				     struct external_nlist *ext,
 				     bfd_size_type count,
 				     char *str,
 				     bfd_size_type strsize,
-				     bfd_boolean dynamic)
+				     bool dynamic)
 {
   struct external_nlist *ext_end;
 
@@ -1440,6 +1543,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,30 +1558,46 @@ NAME (aout, translate_symbol_table) (bfd
       else if (x < strsize)
 	in->symbol.name = str + x;
       else
-	return FALSE;
-
-      in->symbol.value = GET_SWORD (abfd,  ext->e_value);
-      /* TODO: is 0 a safe value here?  */
-      in->desc = 0;
+	{
+	  _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;
+	}
+
+      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;
 
       if (! translate_from_native_sym_flags (abfd, in))
-	return FALSE;
+	return false;
 
       if (dynamic)
 	in->symbol.flags |= BSF_DYNAMIC;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We read the symbols into a buffer, which is discarded when this
    function exits.  We read the strings into a buffer large enough to
    hold them all plus all the cached symbol entries.  */
 
-bfd_boolean
+bool
 NAME (aout, slurp_symbol_table) (bfd *abfd)
 {
   struct external_nlist *old_external_syms;
@@ -1486,18 +1606,18 @@ NAME (aout, slurp_symbol_table) (bfd *ab
 
   /* If there's no work to be done, don't do any.  */
   if (obj_aout_symbols (abfd) != NULL)
-    return TRUE;
+    return true;
 
   old_external_syms = obj_aout_external_syms (abfd);
 
   if (! aout_get_external_symbols (abfd))
-    return FALSE;
+    return false;
 
   cached_size = obj_aout_external_sym_count (abfd);
   cached_size *= sizeof (aout_symbol_type);
   cached = bfd_zmalloc (cached_size);
   if (cached == NULL && cached_size != 0)
-    return FALSE;
+    return false;
 
   /* Convert from external symbol information to internal.  */
   if (! (NAME (aout, translate_symbol_table)
@@ -1506,10 +1626,10 @@ NAME (aout, slurp_symbol_table) (bfd *ab
 	  obj_aout_external_sym_count (abfd),
 	  obj_aout_external_strings (abfd),
 	  obj_aout_external_string_size (abfd),
-	  FALSE)))
+	  false)))
     {
       free (cached);
-      return FALSE;
+      return false;
     }
 
   abfd->symcount = obj_aout_external_sym_count (abfd);
@@ -1523,15 +1643,11 @@ NAME (aout, slurp_symbol_table) (bfd *ab
   if (old_external_syms == NULL
       && obj_aout_external_syms (abfd) != NULL)
     {
-#ifdef USE_MMAP
-      bfd_free_window (&obj_aout_sym_window (abfd));
-#else
       free (obj_aout_external_syms (abfd));
-#endif
       obj_aout_external_syms (abfd) = NULL;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* We use a hash table when writing out symbols so that we only write
@@ -1546,13 +1662,13 @@ 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,
-		  bfd_boolean copy)
+		  bool copy)
 {
-  bfd_boolean hash;
+  bool hash;
   bfd_size_type str_index;
 
   /* An index of 0 always means the empty string.  */
@@ -1561,9 +1677,9 @@ add_to_stringtab (bfd *abfd,
 
   /* Don't hash if BFD_TRADITIONAL_FORMAT is set, because SunOS dbx
      doesn't understand a hashed string table.  */
-  hash = TRUE;
+  hash = true;
   if ((abfd->flags & BFD_TRADITIONAL_FORMAT) != 0)
-    hash = FALSE;
+    hash = false;
 
   str_index = _bfd_stringtab_add (tab, str, hash, copy);
 
@@ -1578,21 +1694,20 @@ add_to_stringtab (bfd *abfd,
 /* Write out a strtab.  ABFD is already at the right location in the
    file.  */
 
-static bfd_boolean
+static bool
 emit_stringtab (bfd *abfd, struct bfd_strtab_hash *tab)
 {
   bfd_byte buffer[BYTES_IN_LONG];
 
   /* The string table starts with the size.  */
   H_PUT_32 (abfd, _bfd_stringtab_size (tab) + BYTES_IN_LONG, buffer);
-  if (bfd_bwrite ((void *) buffer, (bfd_size_type) BYTES_IN_LONG, abfd)
-      != BYTES_IN_LONG)
-    return FALSE;
+  if (bfd_write (buffer, BYTES_IN_LONG, abfd) != BYTES_IN_LONG)
+    return false;
 
   return _bfd_stringtab_emit (abfd, tab);
 }
 
-bfd_boolean
+bool
 NAME (aout, write_syms) (bfd *abfd)
 {
   unsigned int count ;
@@ -1601,7 +1716,7 @@ NAME (aout, write_syms) (bfd *abfd)
 
   strtab = _bfd_stringtab_init ();
   if (strtab == NULL)
-    return FALSE;
+    return false;
 
   for (count = 0; count < bfd_get_symcount (abfd); count++)
     {
@@ -1609,25 +1724,28 @@ 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);
+      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)
+      if (bfd_write (&nsp, EXTERNAL_NLIST_SIZE, abfd) != EXTERNAL_NLIST_SIZE)
 	goto error_return;
 
       /* NB: `KEEPIT' currently overlays `udata.p', so set this only
@@ -1640,11 +1758,11 @@ NAME (aout, write_syms) (bfd *abfd)
 
   _bfd_stringtab_free (strtab);
 
-  return TRUE;
+  return true;
 
-error_return:
+ error_return:
   _bfd_stringtab_free (strtab);
-  return FALSE;
+  return false;
 }
 
 
@@ -1721,7 +1839,10 @@ pdp11_aout_swap_reloc_out (bfd *abfd, ar
   if (r_extern)								\
     {									\
       /* Undefined symbol.  */						\
-      cache_ptr->sym_ptr_ptr = symbols + r_index;			\
+      if (symbols != NULL && r_index < bfd_get_symcount (abfd))		\
+	cache_ptr->sym_ptr_ptr = symbols + r_index;			\
+      else								\
+	cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;		\
       cache_ptr->addend = ad;						\
     }									\
   else									\
@@ -1732,23 +1853,23 @@ pdp11_aout_swap_reloc_out (bfd *abfd, ar
 	{								\
 	case N_TEXT:							\
 	case N_TEXT | N_EXT:						\
-	  cache_ptr->sym_ptr_ptr  = obj_textsec (abfd)->symbol_ptr_ptr;	\
+	  cache_ptr->sym_ptr_ptr  = &obj_textsec (abfd)->symbol;	\
 	  cache_ptr->addend = ad  - su->textsec->vma;			\
 	  break;							\
 	case N_DATA:							\
 	case N_DATA | N_EXT:						\
-	  cache_ptr->sym_ptr_ptr  = obj_datasec (abfd)->symbol_ptr_ptr;	\
+	  cache_ptr->sym_ptr_ptr  = &obj_datasec (abfd)->symbol;	\
 	  cache_ptr->addend = ad - su->datasec->vma;			\
 	  break;							\
 	case N_BSS:							\
 	case N_BSS | N_EXT:						\
-	  cache_ptr->sym_ptr_ptr  = obj_bsssec (abfd)->symbol_ptr_ptr;	\
+	  cache_ptr->sym_ptr_ptr  = &obj_bsssec (abfd)->symbol;		\
 	  cache_ptr->addend = ad - su->bsssec->vma;			\
 	  break;							\
 	default:							\
 	case N_ABS:							\
 	case N_ABS | N_EXT:						\
-	  cache_ptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;	\
+	  cache_ptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;	\
 	  cache_ptr->addend = ad;					\
 	  break;							\
 	}								\
@@ -1784,10 +1905,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;
     }
@@ -1797,7 +1920,7 @@ pdp11_aout_swap_reloc_in (bfd *		 abfd,
 
 /* Read and swap the relocs for a section.  */
 
-bfd_boolean
+bool
 NAME (aout, slurp_reloc_table) (bfd *abfd, sec_ptr asect, asymbol **symbols)
 {
   bfd_byte *rptr;
@@ -1810,10 +1933,10 @@ NAME (aout, slurp_reloc_table) (bfd *abf
   arelent *cache_ptr;
 
   if (asect->relocation)
-    return TRUE;
+    return true;
 
   if (asect->flags & SEC_CONSTRUCTOR)
-    return TRUE;
+    return true;
 
   if (asect == obj_datasec (abfd))
     reloc_size = exec_hdr(abfd)->a_drsize;
@@ -1824,24 +1947,16 @@ NAME (aout, slurp_reloc_table) (bfd *abf
   else
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
-    return FALSE;
-
-  each_size = obj_reloc_entry_size (abfd);
-
-  relocs = bfd_malloc (reloc_size);
+    return false;
+  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;
-    }
+    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.  */
@@ -1862,7 +1977,7 @@ NAME (aout, slurp_reloc_table) (bfd *abf
 
   reloc_cache = bfd_zmalloc (count * sizeof (arelent));
   if (reloc_cache == NULL && count != 0)
-    return FALSE;
+    return false;
 
   cache_ptr = reloc_cache;
 
@@ -1893,12 +2008,12 @@ NAME (aout, slurp_reloc_table) (bfd *abf
   asect->relocation = reloc_cache;
   asect->reloc_count = cache_ptr - reloc_cache;
 
-  return TRUE;
+  return true;
 }
 
 /* Write out a relocation section into an object file.  */
 
-bfd_boolean
+bool
 NAME (aout, squirt_out_relocs) (bfd *abfd, asection *section)
 {
   arelent **generic;
@@ -1909,7 +2024,7 @@ NAME (aout, squirt_out_relocs) (bfd *abf
   natsize = section->size;
   native = bfd_zalloc (abfd, natsize);
   if (!native)
-    return FALSE;
+    return false;
 
   generic = section->orelocation;
   if (generic != NULL)
@@ -1918,6 +2033,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--;
@@ -1925,14 +2049,14 @@ NAME (aout, squirt_out_relocs) (bfd *abf
 	}
     }
 
-  if (bfd_bwrite ((void *) native, natsize, abfd) != natsize)
+  if (bfd_write (native, natsize, abfd) != natsize)
     {
       bfd_release (abfd, native);
-      return FALSE;
+      return false;
     }
 
   bfd_release (abfd, native);
-  return TRUE;
+  return true;
 }
 
 /* This is stupid.  This function should be a boolean predicate.  */
@@ -1981,13 +2105,7 @@ NAME (aout, canonicalize_reloc) (bfd *ab
 long
 NAME (aout, get_reloc_upper_bound) (bfd *abfd, sec_ptr asect)
 {
-  bfd_size_type count;
-
-  if (bfd_get_format (abfd) != bfd_object)
-    {
-      bfd_set_error (bfd_error_invalid_operation);
-      return -1;
-    }
+  size_t count, raw;
 
   if (asect->flags & SEC_CONSTRUCTOR)
     count = asect->reloc_count;
@@ -2003,11 +2121,21 @@ NAME (aout, get_reloc_upper_bound) (bfd
       return -1;
     }
 
-  if (count >= LONG_MAX / sizeof (arelent *))
+  if (count >= LONG_MAX / sizeof (arelent *)
+      || _bfd_mul_overflow (count, obj_reloc_entry_size (abfd), &raw))
     {
       bfd_set_error (bfd_error_file_too_big);
       return -1;
     }
+  if (!bfd_write_p (abfd))
+    {
+      ufile_ptr filesize = bfd_get_file_size (abfd);
+      if (filesize != 0 && raw > filesize)
+	{
+	  bfd_set_error (bfd_error_file_truncated);
+	  return -1;
+	}
+    }
   return (count + 1) * sizeof (arelent *);
 }
 
@@ -2103,7 +2231,7 @@ NAME (aout, print_symbol) (bfd * abfd,
 
 long
 NAME (aout, read_minisymbols) (bfd *abfd,
-			       bfd_boolean dynamic,
+			       bool dynamic,
 			       void * *minisymsp,
 			       unsigned int *sizep)
 {
@@ -2136,7 +2264,7 @@ NAME (aout, read_minisymbols) (bfd *abfd
 
 asymbol *
 NAME (aout, minisymbol_to_symbol) (bfd *abfd,
-				   bfd_boolean dynamic,
+				   bool dynamic,
 				   const void * minisym,
 				   asymbol *sym)
 {
@@ -2154,7 +2282,7 @@ NAME (aout, minisymbol_to_symbol) (bfd *
 	  (bfd_size_type) 1,
 	  obj_aout_external_strings (abfd),
 	  obj_aout_external_string_size (abfd),
-	  FALSE)))
+	  false)))
     return NULL;
 
   return sym;
@@ -2164,7 +2292,7 @@ NAME (aout, minisymbol_to_symbol) (bfd *
    and return the name of the source file and the line nearest to the
    wanted location.  */
 
-bfd_boolean
+bool
 NAME (aout, find_nearest_line) (bfd *abfd,
 				asymbol **symbols,
 				asection *section,
@@ -2186,8 +2314,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 +2343,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 +2378,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 +2439,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
@@ -2317,7 +2447,7 @@ NAME (aout, find_nearest_line) (bfd *abf
       buf = bfd_malloc ((bfd_size_type) filelen + funclen + 3);
       adata (abfd).line_buf = buf;
       if (buf == NULL)
-	return FALSE;
+	return false;
     }
 
   if (main_file_name != NULL)
@@ -2326,9 +2456,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 +2475,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.  */
@@ -2355,7 +2499,7 @@ NAME (aout, find_nearest_line) (bfd *abf
       *functionname_ptr = buf;
     }
 
-  return TRUE;
+  return true;
 }
 
 int
@@ -2365,34 +2509,26 @@ NAME (aout, sizeof_headers) (bfd *abfd,
   return adata (abfd).exec_bytes_size;
 }
 
-/* Free all information we have cached for this BFD.  We can always
-   read it again later if we need it.  */
+/* Throw away most malloc'd and alloc'd information for this BFD.  */
 
-bfd_boolean
+bool
 NAME (aout, bfd_free_cached_info) (bfd *abfd)
 {
-  asection *o;
-
-  if (bfd_get_format (abfd) != bfd_object)
-    return TRUE;
-
-#define BFCI_FREE(x) if (x != NULL) { free (x); x = NULL; }
-  BFCI_FREE (obj_aout_symbols (abfd));
-
-#ifdef USE_MMAP
-  obj_aout_external_syms (abfd) = 0;
-  bfd_free_window (&obj_aout_sym_window (abfd));
-  bfd_free_window (&obj_aout_string_window (abfd));
-  obj_aout_external_strings (abfd) = 0;
-#else
-  BFCI_FREE (obj_aout_external_syms (abfd));
-  BFCI_FREE (obj_aout_external_strings (abfd));
-#endif
-  for (o = abfd->sections; o != NULL; o = o->next)
-    BFCI_FREE (o->relocation);
+  if ((bfd_get_format (abfd) == bfd_object
+       || bfd_get_format (abfd) == bfd_core)
+      && abfd->tdata.aout_data != NULL)
+    {
+#define BFCI_FREE(x) do { free (x); x = NULL; } while (0)
+      BFCI_FREE (adata (abfd).line_buf);
+      BFCI_FREE (obj_aout_symbols (abfd));
+      BFCI_FREE (obj_aout_external_syms (abfd));
+      BFCI_FREE (obj_aout_external_strings (abfd));
+      for (asection *o = abfd->sections; o != NULL; o = o->next)
+	BFCI_FREE (o->relocation);
 #undef BFCI_FREE
+    }
 
-  return TRUE;
+  return _bfd_generic_bfd_free_cached_info (abfd);
 }
 
 /* Routine to create an entry in an a.out link hash table.  */
@@ -2417,7 +2553,7 @@ NAME (aout, link_hash_newfunc) (struct b
   if (ret)
     {
       /* Set local fields.  */
-      ret->written = FALSE;
+      ret->written = false;
       ret->indx = -1;
     }
 
@@ -2426,7 +2562,7 @@ NAME (aout, link_hash_newfunc) (struct b
 
 /* Initialize an a.out link hash table.  */
 
-bfd_boolean
+bool
 NAME (aout, link_hash_table_init) (struct aout_link_hash_table *table,
 				   bfd *abfd,
 				   struct bfd_hash_entry *(*newfunc) (struct bfd_hash_entry *,
@@ -2443,7 +2579,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)
@@ -2460,35 +2596,27 @@ NAME (aout, link_hash_table_create) (bfd
 
 /* Free up the internal symbols read from an a.out file.  */
 
-static bfd_boolean
+static bool
 aout_link_free_symbols (bfd *abfd)
 {
   if (obj_aout_external_syms (abfd) != NULL)
     {
-#ifdef USE_MMAP
-      bfd_free_window (&obj_aout_sym_window (abfd));
-#else
       free ((void *) obj_aout_external_syms (abfd));
-#endif
       obj_aout_external_syms (abfd) = NULL;
     }
 
   if (obj_aout_external_strings (abfd) != NULL)
     {
-#ifdef USE_MMAP
-      bfd_free_window (&obj_aout_string_window (abfd));
-#else
       free ((void *) obj_aout_external_strings (abfd));
-#endif
       obj_aout_external_strings (abfd) = NULL;
     }
-  return TRUE;
+  return true;
 }
 
 /* Given an a.out BFD, add symbols to the global hash table as
    appropriate.  */
 
-bfd_boolean
+bool
 NAME (aout, link_add_symbols) (bfd *abfd, struct bfd_link_info *info)
 {
   switch (bfd_get_format (abfd))
@@ -2500,25 +2628,25 @@ NAME (aout, link_add_symbols) (bfd *abfd
 	(abfd, info, aout_link_check_archive_element);
     default:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 }
 
 /* Add symbols from an a.out object file.  */
 
-static bfd_boolean
+static bool
 aout_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   if (! aout_get_external_symbols (abfd))
-    return FALSE;
+    return false;
   if (! aout_link_add_symbols (abfd, info))
-    return FALSE;
+    return false;
   if (! info->keep_memory)
     {
       if (! aout_link_free_symbols (abfd))
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Look through the internal symbols to see if this object file should
@@ -2528,17 +2656,17 @@ aout_link_add_object_symbols (bfd *abfd,
    known symbol but we do not include the object file in the link
    (unless there is some other reason to include it).  */
 
-static bfd_boolean
+static bool
 aout_link_check_ar_symbols (bfd *abfd,
 			    struct bfd_link_info *info,
-			    bfd_boolean *pneeded,
+			    bool *pneeded,
 			    bfd **subsbfd)
 {
   struct external_nlist *p;
   struct external_nlist *pend;
   char *strings;
 
-  *pneeded = FALSE;
+  *pneeded = false;
 
   /* Look through all the symbols.  */
   p = obj_aout_external_syms (abfd);
@@ -2547,18 +2675,18 @@ 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);
+      h = bfd_link_hash_lookup (info->hash, name, false, false, true);
 
       /* We are only interested in symbols that are currently
 	 undefined or common.  */
@@ -2590,8 +2718,8 @@ aout_link_check_ar_symbols (bfd *abfd,
 	  if (!(*info->callbacks
 		->add_archive_element) (info, abfd, name, subsbfd))
 	    continue;
-	  *pneeded = TRUE;
-	  return TRUE;
+	  *pneeded = true;
+	  return true;
 	}
 
       if (type == (N_UNDF | N_EXT))
@@ -2617,9 +2745,9 @@ aout_link_check_ar_symbols (bfd *abfd,
 			 option in the linker.  */
 		      if (!(*info->callbacks
 			    ->add_archive_element) (info, abfd, name, subsbfd))
-			return FALSE;
-		      *pneeded = TRUE;
-		      return TRUE;
+			return false;
+		      *pneeded = true;
+		      return true;
 		    }
 		  /* Turn the current link symbol into a common
 		     symbol.  It is already on the undefs list.  */
@@ -2627,7 +2755,7 @@ aout_link_check_ar_symbols (bfd *abfd,
 		  h->u.c.p = bfd_hash_allocate (&info->hash->table,
 						sizeof (struct bfd_link_hash_common_entry));
 		  if (h->u.c.p == NULL)
-		    return FALSE;
+		    return false;
 
 		  h->u.c.size = value;
 
@@ -2655,7 +2783,7 @@ aout_link_check_ar_symbols (bfd *abfd,
     }
 
   /* We do not need this object file.  */
-  return TRUE;
+  return true;
 }
 
 /* Check a single archive element to see if we need to include it in
@@ -2663,22 +2791,22 @@ aout_link_check_ar_symbols (bfd *abfd,
    needed in the link or not.  This is called from
    _bfd_generic_link_add_archive_symbols.  */
 
-static bfd_boolean
+static bool
 aout_link_check_archive_element (bfd *abfd,
 				 struct bfd_link_info *info,
 				 struct bfd_link_hash_entry *h ATTRIBUTE_UNUSED,
 				 const char *name ATTRIBUTE_UNUSED,
-				 bfd_boolean *pneeded)
+				 bool *pneeded)
 {
   bfd *oldbfd;
-  bfd_boolean needed;
+  bool needed;
 
   if (!aout_get_external_symbols (abfd))
-    return FALSE;
+    return false;
 
   oldbfd = abfd;
   if (!aout_link_check_ar_symbols (abfd, info, pneeded, &abfd))
-    return FALSE;
+    return false;
 
   needed = *pneeded;
   if (needed)
@@ -2689,36 +2817,32 @@ aout_link_check_archive_element (bfd *ab
 	{
 	  if (!info->keep_memory
 	      && !aout_link_free_symbols (oldbfd))
-	    return FALSE;
+	    return false;
 	  if (!aout_get_external_symbols (abfd))
-	    return FALSE;
+	    return false;
 	}
       if (!aout_link_add_symbols (abfd, info))
-	return FALSE;
+	return false;
     }
 
   if (!info->keep_memory || !needed)
     {
       if (!aout_link_free_symbols (abfd))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Add all symbols from an object file to the hash table.  */
 
-static bfd_boolean
+static bool
 aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
-  bfd_boolean (*add_one_symbol)
-    (struct bfd_link_info *, bfd *, const char *, flagword, asection *,
-     bfd_vma, const char *, bfd_boolean, bfd_boolean,
-     struct bfd_link_hash_entry **);
   struct external_nlist *syms;
   bfd_size_type sym_count;
   char *strings;
-  bfd_boolean copy;
+  bool copy;
   struct aout_link_hash_entry **sym_hash;
   struct external_nlist *p;
   struct external_nlist *pend;
@@ -2727,15 +2851,15 @@ aout_link_add_symbols (bfd *abfd, struct
   sym_count = obj_aout_external_sym_count (abfd);
   strings = obj_aout_external_strings (abfd);
   if (info->keep_memory)
-    copy = FALSE;
+    copy = false;
   else
-    copy = TRUE;
+    copy = true;
 
   if (aout_backend_info (abfd)->add_dynamic_symbols != NULL)
     {
       if (! ((*aout_backend_info (abfd)->add_dynamic_symbols)
 	     (abfd, info, &syms, &sym_count, &strings)))
-	return FALSE;
+	return false;
     }
 
   /* We keep a list of the linker hash table entries that correspond
@@ -2745,13 +2869,9 @@ aout_link_add_symbols (bfd *abfd, struct
   sym_hash = bfd_alloc (abfd,
 			sym_count * sizeof (struct aout_link_hash_entry *));
   if (sym_hash == NULL && sym_count != 0)
-    return FALSE;
+    return false;
   obj_aout_sym_hashes (abfd) = sym_hash;
 
-  add_one_symbol = aout_backend_info (abfd)->add_one_symbol;
-  if (add_one_symbol == NULL)
-    add_one_symbol = _bfd_generic_link_add_one_symbol;
-
   p = syms;
   pend = p + sym_count;
   for (; p < pend; p++, sym_hash++)
@@ -2767,15 +2887,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:
@@ -2816,10 +2944,10 @@ aout_link_add_symbols (bfd *abfd, struct
 	  break;
 	}
 
-      if (! ((*add_one_symbol)
-	     (info, abfd, name, flags, section, value, string, copy, FALSE,
+      if (! (_bfd_generic_link_add_one_symbol
+	     (info, abfd, name, flags, section, value, string, copy, false,
 	      (struct bfd_link_hash_entry **) sym_hash)))
-	return FALSE;
+	return false;
 
       /* Restrict the maximum alignment of a common symbol based on
 	 the architecture, since a.out has no way to represent
@@ -2842,7 +2970,7 @@ aout_link_add_symbols (bfd *abfd, struct
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look up an entry in an the header file hash table.  */
@@ -2879,7 +3007,10 @@ aout_link_includes_newfunc (struct bfd_h
   return (struct bfd_hash_entry *) ret;
 }
 
-static bfd_boolean
+/* Write out a symbol that was not associated with an a.out input
+   object.  */
+
+static bool
 aout_link_write_other_symbol (struct bfd_hash_entry *bh, void *data)
 {
   struct aout_link_hash_entry *h = (struct aout_link_hash_entry *) bh;
@@ -2889,13 +3020,13 @@ 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)
     {
       h = (struct aout_link_hash_entry *) h->root.u.i.link;
       if (h->root.type == bfd_link_hash_new)
-	return TRUE;
+	return true;
     }
 
   output_bfd = flaginfo->output_bfd;
@@ -2911,28 +3042,28 @@ aout_link_write_other_symbol (struct bfd
     }
 
   if (h->written)
-    return TRUE;
+    return true;
 
-  h->written = TRUE;
+  h->written = true;
 
   /* An indx of -2 means the symbol must be written.  */
   if (h->indx != -2
       && (flaginfo->info->strip == strip_all
 	  || (flaginfo->info->strip == strip_some
 	      && bfd_hash_lookup (flaginfo->info->keep_hash, h->root.root.string,
-				  FALSE, FALSE) == NULL)))
-    return TRUE;
+				  false, false) == NULL)))
+    return true;
 
   switch (h->root.type)
     {
     default:
       abort ();
       /* Avoid variable not initialized warnings.  */
-      return TRUE;
+      return true;
     case bfd_link_hash_new:
       /* This can happen for set symbols when sets are not being
 	 built.  */
-      return TRUE;
+      return true;
     case bfd_link_hash_undefined:
       type = N_UNDF | N_EXT;
       val = 0;
@@ -2971,22 +3102,24 @@ aout_link_write_other_symbol (struct bfd
     case bfd_link_hash_warning:
       /* FIXME: Ignore these for now.  The circumstances under which
 	 they should be written out are not clear to me.  */
-      return TRUE;
+      return true;
     }
 
   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);
+			   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);
 
   amt = EXTERNAL_NLIST_SIZE;
   if (bfd_seek (output_bfd, flaginfo->symoff, SEEK_SET) != 0
-      || bfd_bwrite ((void *) &outsym, amt, output_bfd) != amt)
+      || bfd_write (&outsym, amt, output_bfd) != amt)
     /* FIXME: No way to handle errors.  */
     abort ();
 
@@ -2994,12 +3127,12 @@ aout_link_write_other_symbol (struct bfd
   h->indx = obj_aout_external_sym_count (output_bfd);
   ++obj_aout_external_sym_count (output_bfd);
 
-  return TRUE;
+  return true;
 }
 
 /* Handle a link order which is supposed to generate a reloc.  */
 
-static bfd_boolean
+static bool
 aout_link_reloc_link_order (struct aout_final_link_info *flaginfo,
 			    asection *o,
 			    struct bfd_link_order *p)
@@ -3034,7 +3167,7 @@ aout_link_reloc_link_order (struct aout_
       r_extern = 1;
       h = ((struct aout_link_hash_entry *)
 	   bfd_wrapped_link_hash_lookup (flaginfo->output_bfd, flaginfo->info,
-					 pr->u.name, FALSE, FALSE, TRUE));
+					 pr->u.name, false, false, true));
       if (h != NULL
 	  && h->indx >= 0)
 	r_index = h->indx;
@@ -3045,9 +3178,9 @@ aout_link_reloc_link_order (struct aout_
 	     here.  I don't think that will ever matter for a global
 	     symbol.  */
 	  h->indx = -2;
-	  h->written = FALSE;
+	  h->written = false;
 	  if (!aout_link_write_other_symbol (&h->root.root, flaginfo))
-	    return FALSE;
+	    return false;
 	  r_index = h->indx;
 	}
       else
@@ -3062,7 +3195,7 @@ aout_link_reloc_link_order (struct aout_
   if (howto == 0)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   if (o == obj_textsec (flaginfo->output_bfd))
@@ -3089,7 +3222,7 @@ aout_link_reloc_link_order (struct aout_
     r_baserel = (howto->type & 8) != 0;
     r_jmptable = (howto->type & 16) != 0;
     r_relative = (howto->type & 32) != 0;
-    r_length = howto->size;
+    r_length = bfd_log2 (bfd_get_reloc_size (howto));
 
     PUT_WORD (flaginfo->output_bfd, p->offset, srel.r_address);
     if (bfd_header_big_endian (flaginfo->output_bfd))
@@ -3132,12 +3265,12 @@ aout_link_reloc_link_order (struct aout_
       bfd_size_type size;
       bfd_reloc_status_type r;
       bfd_byte *buf;
-      bfd_boolean ok;
+      bool ok;
 
       size = bfd_get_reloc_size (howto);
       buf = bfd_zmalloc (size);
       if (buf == NULL && size != 0)
-	return FALSE;
+	return false;
       r = MY_relocate_contents (howto, flaginfo->output_bfd,
 				pr->addend, buf);
       switch (r)
@@ -3163,13 +3296,13 @@ aout_link_reloc_link_order (struct aout_
 				     size);
       free (buf);
       if (! ok)
-	return FALSE;
+	return false;
     }
 
   rel_size = obj_reloc_entry_size (flaginfo->output_bfd);
   if (bfd_seek (flaginfo->output_bfd, *reloff_ptr, SEEK_SET) != 0
-      || bfd_bwrite (rel_ptr, rel_size, flaginfo->output_bfd) != rel_size)
-    return FALSE;
+      || bfd_write (rel_ptr, rel_size, flaginfo->output_bfd) != rel_size)
+    return false;
 
   *reloff_ptr += rel_size;
 
@@ -3180,7 +3313,7 @@ aout_link_reloc_link_order (struct aout_
 		  || (*reloff_ptr
 		      <= obj_datasec (flaginfo->output_bfd)->rel_filepos)));
 
-  return TRUE;
+  return true;
 }
 
 /* Get the section corresponding to a reloc index.  */
@@ -3199,7 +3332,7 @@ aout_reloc_type_to_section (bfd *abfd, i
     }
 }
 
-static bfd_boolean
+static bool
 pdp11_aout_link_input_section (struct aout_final_link_info *flaginfo,
 			       bfd *input_bfd,
 			       asection *input_section,
@@ -3207,12 +3340,11 @@ pdp11_aout_link_input_section (struct ao
 			       bfd_size_type rel_size,
 			       bfd_byte *contents)
 {
-  bfd_boolean (*check_dynamic_reloc)
+  bool (*check_dynamic_reloc)
     (struct bfd_link_info *, bfd *, asection *,
-     struct aout_link_hash_entry *, void *, bfd_byte *, bfd_boolean *,
-     bfd_vma *);
+     struct aout_link_hash_entry *, void *, bfd_byte *, bool *, bfd_vma *);
   bfd *output_bfd;
-  bfd_boolean relocatable;
+  bool relocatable;
   struct external_nlist *syms;
   char *strings;
   struct aout_link_hash_entry **sym_hashes;
@@ -3263,8 +3395,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)
@@ -3318,10 +3457,10 @@ pdp11_aout_link_input_section (struct ao
 			  if (h->indx < 0)
 			    {
 			      h->indx = -2;
-			      h->written = FALSE;
+			      h->written = false;
 			      if (!aout_link_write_other_symbol (&h->root.root,
 								 flaginfo))
-				return FALSE;
+				return false;
 			    }
 			  r_index = h->indx;
 			}
@@ -3383,11 +3522,11 @@ pdp11_aout_link_input_section (struct ao
 	}
       else
 	{
-	  bfd_boolean hundef;
+	  bool hundef;
 
 	  /* We are generating an executable, and must do a full
 	     relocation.  */
-	  hundef = FALSE;
+	  hundef = false;
 	  if (r_extern)
 	    {
 	      h = sym_hashes[r_index];
@@ -3405,7 +3544,7 @@ pdp11_aout_link_input_section (struct ao
 		relocation = 0;
 	      else
 		{
-		  hundef = TRUE;
+		  hundef = true;
 		  relocation = 0;
 		}
 	    }
@@ -3423,12 +3562,12 @@ pdp11_aout_link_input_section (struct ao
 
 	  if (check_dynamic_reloc != NULL)
 	    {
-	      bfd_boolean skip;
+	      bool skip;
 
 	      if (! ((*check_dynamic_reloc)
 		     (flaginfo->info, input_bfd, input_section, h,
 		      (void *) rel, contents, &skip, &relocation)))
-		return FALSE;
+		return false;
 	      if (skip)
 		continue;
 	    }
@@ -3446,7 +3585,7 @@ pdp11_aout_link_input_section (struct ao
 		name = strings + GET_WORD (input_bfd, syms[r_index].e_strx);
 	      (*flaginfo->info->callbacks->undefined_symbol)
 		(flaginfo->info, name, input_bfd, input_section,
-		 r_addr, TRUE);
+		 r_addr, true);
 	    }
 
 	  r = MY_final_link_relocate (howto,
@@ -3487,12 +3626,12 @@ pdp11_aout_link_input_section (struct ao
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Link an a.out section into the output file.  */
 
-static bfd_boolean
+static bool
 aout_link_input_section (struct aout_final_link_info *flaginfo,
 			 bfd *input_bfd,
 			 asection *input_section,
@@ -3507,28 +3646,21 @@ aout_link_input_section (struct aout_fin
   if (! bfd_get_section_contents (input_bfd, input_section,
 				  (void *) flaginfo->contents,
 				  (file_ptr) 0, input_size))
-    return FALSE;
+    return false;
 
-  /* Read in the relocs if we haven't already done it.  */
-  if (aout_section_data (input_section) != NULL
-      && aout_section_data (input_section)->relocs != NULL)
-    relocs = aout_section_data (input_section)->relocs;
-  else
+  relocs = flaginfo->relocs;
+  if (rel_size > 0)
     {
-      relocs = flaginfo->relocs;
-      if (rel_size > 0)
-	{
-	  if (bfd_seek (input_bfd, input_section->rel_filepos, SEEK_SET) != 0
-	      || bfd_bread (relocs, rel_size, input_bfd) != rel_size)
-	    return FALSE;
-	}
+      if (bfd_seek (input_bfd, input_section->rel_filepos, SEEK_SET) != 0
+	  || bfd_read (relocs, rel_size, input_bfd) != rel_size)
+	return false;
     }
 
   /* Relocate the section contents.  */
   if (! pdp11_aout_link_input_section (flaginfo, input_bfd, input_section,
 				       (bfd_byte *) relocs,
 				       rel_size, flaginfo->contents))
-    return FALSE;
+    return false;
 
   /* Write out the section contents.  */
   if (! bfd_set_section_contents (flaginfo->output_bfd,
@@ -3536,16 +3668,16 @@ aout_link_input_section (struct aout_fin
 				  (void *) flaginfo->contents,
 				  (file_ptr) input_section->output_offset,
 				  input_size))
-    return FALSE;
+    return false;
 
   /* If we are producing relocatable output, the relocs were
      modified, and we now write them out.  */
   if (bfd_link_relocatable (flaginfo->info) && rel_size > 0)
     {
       if (bfd_seek (flaginfo->output_bfd, *reloff_ptr, SEEK_SET) != 0)
-	return FALSE;
-      if (bfd_bwrite (relocs, rel_size, flaginfo->output_bfd) != rel_size)
-	return FALSE;
+	return false;
+      if (bfd_write (relocs, rel_size, flaginfo->output_bfd) != rel_size)
+	return false;
       *reloff_ptr += rel_size;
 
       /* Assert that the relocs have not run into the symbols, and
@@ -3557,12 +3689,12 @@ aout_link_input_section (struct aout_fin
 			  <= obj_datasec (flaginfo->output_bfd)->rel_filepos)));
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Link an a.out input BFD into the output file.  */
 
-static bfd_boolean
+static bool
 aout_link_input_bfd (struct aout_final_link_info *flaginfo, bfd *input_bfd)
 {
   BFD_ASSERT (bfd_get_format (input_bfd) == bfd_object);
@@ -3576,12 +3708,12 @@ aout_link_input_bfd (struct aout_final_l
   /* Get the symbols.  We probably have them already, unless
      flaginfo->info->keep_memory is FALSE.  */
   if (! aout_get_external_symbols (input_bfd))
-    return FALSE;
+    return false;
 
   /* Write out the symbols and get a map of the new indices.  The map
      is placed into flaginfo->symbol_map.  */
   if (! aout_link_write_symbols (flaginfo, input_bfd))
-    return FALSE;
+    return false;
 
   /* Relocate and write out the sections.  These functions use the
      symbol map created by aout_link_write_symbols.  The linker_mark
@@ -3593,7 +3725,7 @@ aout_link_input_bfd (struct aout_final_l
 				     obj_textsec (input_bfd),
 				     &flaginfo->treloff,
 				     exec_hdr (input_bfd)->a_trsize))
-	return FALSE;
+	return false;
     }
   if (obj_datasec (input_bfd)->linker_mark)
     {
@@ -3601,7 +3733,7 @@ aout_link_input_bfd (struct aout_final_l
 				     obj_datasec (input_bfd),
 				     &flaginfo->dreloff,
 				     exec_hdr (input_bfd)->a_drsize))
-	return FALSE;
+	return false;
     }
 
   /* If we are not keeping memory, we don't need the symbols any
@@ -3610,10 +3742,10 @@ aout_link_input_bfd (struct aout_final_l
   if (! flaginfo->info->keep_memory)
     {
       if (! aout_link_free_symbols (input_bfd))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Do the final link step.  This is called on the output BFD.  The
@@ -3623,13 +3755,13 @@ aout_link_input_bfd (struct aout_final_l
    of bfd_link_order structures which list all the input sections for
    the output section.  */
 
-bfd_boolean
+bool
 NAME (aout, final_link) (bfd *abfd,
 			 struct bfd_link_info *info,
 			 void (*callback) (bfd *, file_ptr *, file_ptr *, file_ptr *))
 {
   struct aout_final_link_info aout_info;
-  bfd_boolean includes_hash_initialized = FALSE;
+  bool includes_hash_initialized = false;
   bfd *sub;
   bfd_size_type trsize, drsize;
   bfd_size_type max_contents_size;
@@ -3637,11 +3769,12 @@ NAME (aout, final_link) (bfd *abfd,
   bfd_size_type max_sym_count;
   struct bfd_link_order *p;
   asection *o;
-  bfd_boolean have_link_order_relocs;
+  bool have_link_order_relocs;
 
   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;
@@ -3654,7 +3787,7 @@ NAME (aout, final_link) (bfd *abfd,
 			      sizeof (struct aout_link_includes_entry),
 			      251))
     goto error_return;
-  includes_hash_initialized = TRUE;
+  includes_hash_initialized = true;
 
   /* Figure out the largest section size.  Also, if generating
      relocatable output, count the relocs.  */
@@ -3774,7 +3907,7 @@ NAME (aout, final_link) (bfd *abfd,
     struct aout_link_hash_entry *h;
 
     h = aout_link_hash_lookup (aout_hash_table (info), "__DYNAMIC",
-			       FALSE, FALSE, FALSE);
+			       false, false, false);
     if (h != NULL)
       aout_link_write_other_symbol (&h->root.root, &aout_info);
   }
@@ -3801,7 +3934,7 @@ NAME (aout, final_link) (bfd *abfd,
      We use the output_has_begun field of the input BFDs to see
      whether we have already handled it.  */
   for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
-    sub->output_has_begun = FALSE;
+    sub->output_has_begun = false;
 
   /* 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
@@ -3811,10 +3944,10 @@ NAME (aout, final_link) (bfd *abfd,
     {
       for (p = o->map_head.link_order; p != NULL; p = p->next)
 	if (p->type == bfd_indirect_link_order)
-	  p->u.indirect.section->linker_mark = TRUE;
+	  p->u.indirect.section->linker_mark = true;
     }
 
-  have_link_order_relocs = FALSE;
+  have_link_order_relocs = false;
   for (o = abfd->sections; o != NULL; o = o->next)
     {
       for (p = o->map_head.link_order;
@@ -3832,13 +3965,13 @@ NAME (aout, final_link) (bfd *abfd,
 		{
 		  if (! aout_link_input_bfd (&aout_info, input_bfd))
 		    goto error_return;
-		  input_bfd->output_has_begun = TRUE;
+		  input_bfd->output_has_begun = true;
 		}
 	    }
 	  else if (p->type == bfd_section_reloc_link_order
 		   || p->type == bfd_symbol_reloc_link_order)
 	    /* These are handled below.  */
-	    have_link_order_relocs = TRUE;
+	    have_link_order_relocs = true;
 	  else
 	    {
 	      if (! _bfd_default_link_order (abfd, info, o, p))
@@ -3874,30 +4007,18 @@ 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);
-      includes_hash_initialized = FALSE;
+      includes_hash_initialized = false;
     }
 
   /* Finish up any dynamic linking we may be doing.  */
@@ -3926,38 +4047,46 @@ 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_write (&b, 1, abfd) != 1)
+	    goto error_return;
+	}
     }
 
-  return TRUE;
+  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;
+  return false;
 }
 
 /* Adjust and write out the symbols for an a.out file.  Set the new
    symbol indices into a symbol_map.  */
 
-static bfd_boolean
+static bool
 aout_link_write_symbols (struct aout_final_link_info *flaginfo, bfd *input_bfd)
 {
   bfd *output_bfd;
@@ -3971,8 +4100,8 @@ aout_link_write_symbols (struct aout_fin
   struct external_nlist *sym_end;
   struct aout_link_hash_entry **sym_hash;
   int *symbol_map;
-  bfd_boolean pass;
-  bfd_boolean skip_next;
+  bool pass;
+  bool skip_next;
 
   output_bfd = flaginfo->output_bfd;
   sym_count = obj_aout_external_sym_count (input_bfd);
@@ -3985,15 +4114,18 @@ 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,
-			      FALSE, FALSE) != NULL)
+	  || 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;
+	return false;
       PUT_WORD (output_bfd, strtab_index, outsym->e_strx);
       PUT_WORD (output_bfd,
 		(bfd_section_vma (obj_textsec (input_bfd)->output_section)
@@ -4003,8 +4135,8 @@ aout_link_write_symbols (struct aout_fin
       ++outsym;
     }
 
-  pass = FALSE;
-  skip_next = FALSE;
+  pass = false;
+  skip_next = false;
   sym = obj_aout_external_syms (input_bfd);
   sym_end = sym + sym_count;
   sym_hash = obj_aout_sym_hashes (input_bfd);
@@ -4015,10 +4147,10 @@ aout_link_write_symbols (struct aout_fin
       const char *name;
       int type;
       struct aout_link_hash_entry *h;
-      bfd_boolean skip;
+      bool skip;
       asection *symsec;
       bfd_vma val = 0;
-      bfd_boolean copy;
+      bool copy;
 
       /* We set *symbol_map to 0 above for all symbols.  If it has
 	 already been set to -1 for this symbol, it means that we are
@@ -4042,14 +4174,14 @@ aout_link_write_symbols (struct aout_fin
 	  /* Pass this symbol through.  It is the target of an
 	     indirect or warning symbol.  */
 	  val = GET_WORD (input_bfd, sym->e_value);
-	  pass = FALSE;
+	  pass = false;
 	}
       else if (skip_next)
 	{
 	  /* Skip this symbol, which is the target of an indirect
 	     symbol that we have changed to no longer be an indirect
 	     symbol.  */
-	  skip_next = FALSE;
+	  skip_next = false;
 	  continue;
 	}
       else
@@ -4091,39 +4223,65 @@ aout_link_write_symbols (struct aout_fin
 	    {
 	      if ((type & N_TYPE) == N_INDR
 		  || type == N_WARNING)
-		skip_next = TRUE;
+		skip_next = true;
 	      *symbol_map = h->indx;
 	      continue;
 	    }
 
 	  /* See if we are stripping this symbol.  */
-	  skip = FALSE;
+	  skip = false;
 	  switch (strip)
 	    {
 	    case strip_none:
 	      break;
 	    case strip_debugger:
-	      if ((type & N_STAB) != 0)
-		skip = TRUE;
+	      if (is_stab (type, name))
+		skip = true;
 	      break;
 	    case strip_some:
-	      if (bfd_hash_lookup (flaginfo->info->keep_hash, name, FALSE, FALSE)
-		  == NULL)
-		skip = TRUE;
+	      if (bfd_hash_lookup (flaginfo->info->keep_hash, name,
+				   false, false) == NULL)
+		skip = true;
 	      break;
 	    case strip_all:
-	      skip = TRUE;
+	      skip = true;
 	      break;
 	    }
 	  if (skip)
 	    {
 	      if (h != NULL)
-		h->written = TRUE;
+		h->written = true;
 	      continue;
 	    }
 
 	  /* 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
@@ -4147,12 +4305,7 @@ aout_link_write_symbols (struct aout_fin
 		 the indirect symbol was defined, we output it with
 		 the correct definition so the debugger will
 		 understand it.  */
-	      pass = TRUE;
-	      val = GET_WORD (input_bfd, sym->e_value);
-	      symsec = NULL;
-	    }
-	  else if ((type & N_STAB) != 0)
-	    {
+	      pass = true;
 	      val = GET_WORD (input_bfd, sym->e_value);
 	      symsec = NULL;
 	    }
@@ -4163,7 +4316,7 @@ aout_link_write_symbols (struct aout_fin
 		 a case we do not want to output the next symbol,
 		 which is the target of the indirection.  */
 	      if ((type & N_TYPE) == N_INDR)
-		skip_next = TRUE;
+		skip_next = true;
 
 	      symsec = NULL;
 
@@ -4255,7 +4408,7 @@ aout_link_write_symbols (struct aout_fin
 	     it is a local symbol see if we should discard it.  */
 	  if (h != NULL)
 	    {
-	      h->written = TRUE;
+	      h->written = true;
 	      h->indx = obj_aout_external_sym_count (output_bfd);
 	    }
 	  else if ((type & N_TYPE) != N_SETT
@@ -4269,17 +4422,17 @@ 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;
+		    skip = true;
 		  break;
 		case discard_all:
-		  skip = TRUE;
+		  skip = true;
 		  break;
 		}
 	      if (skip)
 		{
-		  pass = FALSE;
+		  pass = false;
 		  continue;
 		}
 	    }
@@ -4337,9 +4490,9 @@ aout_link_write_symbols (struct aout_fin
 		 symbol.  */
 	      copy = ! flaginfo->info->keep_memory;
 	      incl_entry = aout_link_includes_lookup (&flaginfo->includes,
-						      name, TRUE, copy);
+						      name, true, copy);
 	      if (incl_entry == NULL)
-		return FALSE;
+		return false;
 	      for (t = incl_entry->totals; t != NULL; t = t->next)
 		if (t->total == val)
 		  break;
@@ -4350,7 +4503,7 @@ aout_link_write_symbols (struct aout_fin
 		  t = bfd_hash_allocate (&flaginfo->includes.root,
 					 sizeof *t);
 		  if (t == NULL)
-		    return FALSE;
+		    return false;
 		  t->total = val;
 		  t->next = incl_entry->totals;
 		  incl_entry->totals = t;
@@ -4393,7 +4546,9 @@ 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);
-      copy = FALSE;
+      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)
 	{
 	  /* name points into a string table which we are going to
@@ -4402,12 +4557,12 @@ aout_link_write_symbols (struct aout_fin
 	  if (h != NULL)
 	    name = h->root.root.string;
 	  else
-	    copy = TRUE;
+	    copy = true;
 	}
       strtab_index = add_to_stringtab (output_bfd, flaginfo->strtab,
 				       name, copy);
       if (strtab_index == (bfd_size_type) -1)
-	return FALSE;
+	return false;
       PUT_WORD (output_bfd, strtab_index, outsym->e_strx);
       PUT_WORD (output_bfd, val, outsym->e_value);
       *symbol_map = obj_aout_external_sym_count (output_bfd);
@@ -4421,15 +4576,15 @@ aout_link_write_symbols (struct aout_fin
       bfd_size_type size;
 
       if (bfd_seek (output_bfd, flaginfo->symoff, SEEK_SET) != 0)
-	return FALSE;
+	return false;
       size = outsym - flaginfo->output_syms;
       size *= EXTERNAL_NLIST_SIZE;
-      if (bfd_bwrite ((void *) flaginfo->output_syms, size, output_bfd) != size)
-	return FALSE;
+      if (bfd_write (flaginfo->output_syms, size, output_bfd) != size)
+	return false;
       flaginfo->symoff += size;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Write out a symbol that was not associated with an a.out input
@@ -4488,6 +4643,7 @@ const bfd_target MY (vec) =
   AR_PAD_CHAR,			/* AR_pad_char.  */
   15,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
      bfd_getp32, bfd_getp_signed_32, bfd_putp32,
      bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* 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.20200303/bfd/pe-aarch64.c ./bfd/pe-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-aarch64.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/pe-aarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,75 @@
+/* BFD back-end for AArch64 PE IMAGE COFF files.
+   Copyright (C) 2022-2025 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"
+
+#define TARGET_SYM             aarch64_pe_le_vec
+#define TARGET_NAME            "pe-aarch64-little"
+#define TARGET_ARCHITECTURE    bfd_arch_aarch64
+#define TARGET_PAGESIZE        4096
+#define TARGET_BIG_ENDIAN      0
+#define TARGET_ARCHIVE         0
+#define TARGET_PRIORITY        0
+
+/* Rename the above into.. */
+#define COFF_WITH_peAArch64
+#define COFF_WITH_PE
+#define PCRELOFFSET       true
+
+/* Long section names not allowed in executable images, only object files.  */
+#define COFF_LONG_SECTION_NAMES 1
+
+#define COFF_SECTION_ALIGNMENT_ENTRIES \
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+#include "coff/aarch64.h"
+#include "coff/internal.h"
+#include "coff/pe.h"
+#include "libcoff.h"
+#include "libpei.h"
+#include "libiberty.h"
+
+/* Make sure we're setting a 64-bit format.  */
+#undef AOUTSZ
+#define AOUTSZ          PEPAOUTSZ
+#define PEAOUTHDR       PEPAOUTHDR
+
+#include "coff-aarch64.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.20200303/bfd/pe-arm.c ./bfd/pe-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-arm.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pe-arm.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for ARM PECOFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,7 +29,7 @@
 #endif
 
 #define COFF_WITH_PE
-#define PCRELOFFSET	     TRUE
+#define PCRELOFFSET	     true
 #define COFF_LONG_SECTION_NAMES
 
 #define COFF_SECTION_ALIGNMENT_ENTRIES \
@@ -43,6 +43,8 @@
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".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.20200303/bfd/pe-arm-wince.c ./bfd/pe-arm-wince.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-arm-wince.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pe-arm-wince.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/pef.c ./bfd/pef.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pef.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pef.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* PEF support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -41,6 +41,7 @@
 #define bfd_pef_bfd_is_target_special_symbol        _bfd_bool_bfd_asymbol_false
 #define bfd_pef_get_lineno			    _bfd_nosymbols_get_lineno
 #define bfd_pef_find_nearest_line		    _bfd_nosymbols_find_nearest_line
+#define bfd_pef_find_nearest_line_with_alt	    _bfd_nosymbols_find_nearest_line_with_alt
 #define bfd_pef_find_line			    _bfd_nosymbols_find_line
 #define bfd_pef_find_inliner_info		    _bfd_nosymbols_find_inliner_info
 #define bfd_pef_get_symbol_version_string	    _bfd_nosymbols_get_symbol_version_string
@@ -69,7 +70,6 @@
   _bfd_generic_copy_link_hash_symbol_type
 #define bfd_pef_bfd_final_link			    _bfd_generic_final_link
 #define bfd_pef_bfd_link_split_section		    _bfd_generic_link_split_section
-#define bfd_pef_get_section_contents_in_window	    _bfd_generic_get_section_contents_in_window
 #define bfd_pef_bfd_link_check_relocs		    _bfd_generic_link_check_relocs
 
 static int
@@ -180,7 +180,7 @@ bfd_pef_parse_traceback_table (bfd *abfd
 
       /* Strip leading period inserted by compiler.  */
       if (namebuf[0] == '.')
-	memmove (namebuf, namebuf + 1, name.name_len + 1);
+	memmove (namebuf, namebuf + 1, name.name_len);
 
       sym->name = namebuf;
 
@@ -210,16 +210,18 @@ bfd_pef_print_symbol (bfd *abfd,
 		      bfd_print_symbol_type how)
 {
   FILE *file = (FILE *) afile;
+  const char *symname = (symbol->name != bfd_symbol_error_name
+			 ? symbol->name : _("<corrupt>"));
 
   switch (how)
     {
     case bfd_print_symbol_name:
-      fprintf (file, "%s", symbol->name);
+      fprintf (file, "%s", symname);
       break;
     default:
       bfd_print_symbol_vandf (abfd, (void *) file, symbol);
-      fprintf (file, " %-5s %s", symbol->section->name, symbol->name);
-      if (CONST_STRNEQ (symbol->name, "__traceback_"))
+      fprintf (file, " %-5s %s", symbol->section->name, symname);
+      if (startswith (symname, "__traceback_"))
 	{
 	  unsigned char *buf;
 	  size_t offset = symbol->value + 4;
@@ -254,10 +256,10 @@ bfd_pef_convert_architecture (unsigned l
     *type = bfd_arch_m68k;
 }
 
-static bfd_boolean
+static bool
 bfd_pef_mkobject (bfd *abfd ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 static const char *bfd_pef_section_name (bfd_pef_section *section)
@@ -385,8 +387,8 @@ bfd_pef_scan_section (bfd *abfd, bfd_pef
 {
   unsigned char buf[28];
 
-  bfd_seek (abfd, section->header_offset, SEEK_SET);
-  if (bfd_bread ((void *) buf, 28, abfd) != 28)
+  if (bfd_seek (abfd, section->header_offset, SEEK_SET) != 0
+      || bfd_read (buf, 28, abfd) != 28)
     return -1;
 
   section->name_offset = bfd_h_get_32 (abfd, buf);
@@ -446,12 +448,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,17 +482,17 @@ 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 wrong;
+  if (bfd_seek (abfd, loadersec->filepos, SEEK_SET) != 0)
     goto error;
-  if (bfd_bread ((void *) loaderbuf, loaderlen, abfd) != loaderlen)
+  loaderbuf = _bfd_malloc_and_read (abfd, loaderlen, loaderlen);
+  if (loaderbuf == NULL)
     goto error;
 
-  if (loaderlen < 56)
-    goto error;
   ret = bfd_pef_parse_loader_header (abfd, loaderbuf, 56, &header);
   if (ret < 0)
-    goto error;
+    goto wrong;
 
   if (header.main_section < 0)
     goto end;
@@ -497,18 +502,18 @@ bfd_pef_scan_start_address (bfd *abfd)
       break;
 
   if (section == NULL)
-    goto error;
+    goto wrong;
 
   abfd->start_address = section->vma + header.main_offset;
 
  end:
-  if (loaderbuf != NULL)
-    free (loaderbuf);
+  free (loaderbuf);
   return 0;
 
+ wrong:
+  bfd_set_error (bfd_error_wrong_format);
  error:
-  if (loaderbuf != NULL)
-    free (loaderbuf);
+  free (loaderbuf);
   return -1;
 }
 
@@ -556,8 +561,6 @@ bfd_pef_scan (bfd *abfd,
   if (bfd_pef_scan_start_address (abfd) < 0)
     return -1;
 
-  abfd->tdata.pef_data = mdata;
-
   return 0;
 }
 
@@ -566,9 +569,8 @@ bfd_pef_read_header (bfd *abfd, bfd_pef_
 {
   unsigned char buf[40];
 
-  bfd_seek (abfd, 0, SEEK_SET);
-
-  if (bfd_bread ((void *) buf, 40, abfd) != 40)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_read (buf, 40, abfd) != 40)
     return -1;
 
   header->tag1 = bfd_getb32 (buf);
@@ -586,32 +588,33 @@ 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;
   bfd_pef_data_struct *mdata;
 
   if (bfd_pef_read_header (abfd, &header) != 0)
-    goto wrong;
+    return NULL;
 
   if (header.tag1 != BFD_PEF_TAG1 || header.tag2 != BFD_PEF_TAG2)
-    goto wrong;
+    {
+      bfd_set_error (bfd_error_wrong_format);
+      return NULL;
+    }
 
   mdata = (bfd_pef_data_struct *) bfd_zalloc (abfd, sizeof (*mdata));
   if (mdata == NULL)
-    goto fail;
+    return NULL;
 
   if (bfd_pef_scan (abfd, &header, mdata))
-    goto wrong;
-
-  return abfd->xvec;
-
- wrong:
-  bfd_set_error (bfd_error_wrong_format);
+    {
+      bfd_release (abfd, mdata);
+      return NULL;
+    }
 
- fail:
-  return NULL;
+  abfd->tdata.pef_data = mdata;
+  return _bfd_no_cleanup;
 }
 
 static int
@@ -749,13 +752,20 @@ bfd_pef_parse_function_stubs (bfd *abfd,
   if (ret < 0)
     goto error;
 
+  if ((loaderlen - 56) / 24 < header.imported_library_count)
+    goto error;
+
+  if ((loaderlen - 56 - header.imported_library_count * 24) / 4
+      < header.total_imported_symbol_count)
+    goto error;
+
   libraries = bfd_malloc
     (header.imported_library_count * sizeof (bfd_pef_imported_library));
   imports = bfd_malloc
     (header.total_imported_symbol_count * sizeof (bfd_pef_imported_symbol));
-
-  if (loaderlen < (56 + (header.imported_library_count * 24)))
+  if (libraries == NULL || imports == NULL)
     goto error;
+
   for (i = 0; i < header.imported_library_count; i++)
     {
       ret = bfd_pef_parse_imported_library
@@ -764,9 +774,6 @@ bfd_pef_parse_function_stubs (bfd *abfd,
 	goto error;
     }
 
-  if (loaderlen < (56 + (header.imported_library_count * 24)
-		   + (header.total_imported_symbol_count * 4)))
-    goto error;
   for (i = 0; i < header.total_imported_symbol_count; i++)
     {
       ret = (bfd_pef_parse_imported_symbol
@@ -799,7 +806,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 +870,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 +899,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 +910,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 +939,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;
 }
 
@@ -1020,6 +1019,7 @@ const bfd_target pef_vec =
   ' ',				/* AR_pad_char.  */
   16,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
@@ -1065,7 +1065,6 @@ const bfd_target pef_vec =
 #define bfd_pef_xlib_new_section_hook		    _bfd_generic_new_section_hook
 #define bfd_pef_xlib_get_section_contents	    _bfd_generic_get_section_contents
 #define bfd_pef_xlib_set_section_contents	    _bfd_generic_set_section_contents
-#define bfd_pef_xlib_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
 #define bfd_pef_xlib_set_section_contents_in_window _bfd_generic_set_section_contents_in_window
 
 static int
@@ -1073,9 +1072,8 @@ bfd_pef_xlib_read_header (bfd *abfd, bfd
 {
   unsigned char buf[80];
 
-  bfd_seek (abfd, 0, SEEK_SET);
-
-  if (bfd_bread ((void *) buf, sizeof buf, abfd) != sizeof buf)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_read (buf, sizeof buf, abfd) != sizeof buf)
     return -1;
 
   header->tag1 = bfd_getb32 (buf);
@@ -1121,32 +1119,25 @@ 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;
 
-  if (bfd_pef_xlib_read_header (abfd, &header) != 0)
+  if (bfd_pef_xlib_read_header (abfd, &header) != 0
+      || header.tag1 != BFD_PEF_XLIB_TAG1
+      || (header.tag2 != BFD_PEF_VLIB_TAG2
+	  && header.tag2 != BFD_PEF_BLIB_TAG2))
     {
-      bfd_set_error (bfd_error_wrong_format);
-      return NULL;
-    }
-
-  if ((header.tag1 != BFD_PEF_XLIB_TAG1)
-      || ((header.tag2 != BFD_PEF_VLIB_TAG2)
-	  && (header.tag2 != BFD_PEF_BLIB_TAG2)))
-    {
-      bfd_set_error (bfd_error_wrong_format);
+      if (bfd_get_error () != bfd_error_system_call)
+	bfd_set_error (bfd_error_wrong_format);
       return NULL;
     }
 
   if (bfd_pef_xlib_scan (abfd, &header) != 0)
-    {
-      bfd_set_error (bfd_error_wrong_format);
-      return NULL;
-    }
+    return NULL;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
 const bfd_target pef_xlib_vec =
@@ -1164,6 +1155,7 @@ const bfd_target pef_xlib_vec =
   ' ',				/* AR_pad_char.  */
   16,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pef.h ./bfd/pef.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pef.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pef.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* PEF support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 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.20200303/bfd/pef-traceback.h ./bfd/pef-traceback.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pef-traceback.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pef-traceback.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* PowerPC traceback table support for BFD.
-   Copyright (C) 1993-2019 Free Software Foundation, Inc.
+   Copyright (C) 1993-2025 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.20200303/bfd/pe-i386.c ./bfd/pe-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-i386.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pe-i386.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -23,8 +23,11 @@
 
 #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 PCRELOFFSET		TRUE
+#define COFF_WITH_PE_BIGOBJ
+#define PCRELOFFSET		true
 #define TARGET_UNDERSCORE	'_'
 #define COFF_LONG_SECTION_NAMES
 #define COFF_SUPPORT_GNU_LINKONCE
@@ -33,6 +36,8 @@
 #define COFF_SECTION_ALIGNMENT_ENTRIES \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".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.20200303/bfd/pei-aarch64.c ./bfd/pei-aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-aarch64.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/pei-aarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,74 @@
+/* BFD back-end for AArch64 PE IMAGE COFF files.
+   Copyright (C) 2021-2025 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"
+
+#define TARGET_SYM		aarch64_pei_le_vec
+#define TARGET_NAME		"pei-aarch64-little"
+#define TARGET_ARCHITECTURE	bfd_arch_aarch64
+#define TARGET_PAGESIZE		4096
+#define TARGET_BIG_ENDIAN	0
+#define TARGET_ARCHIVE		0
+#define TARGET_PRIORITY		0
+
+#define COFF_IMAGE_WITH_PE
+/* Rename the above into.. */
+#define COFF_WITH_peAArch64
+#define COFF_WITH_PE
+#define PCRELOFFSET	   true
+
+/* Long section names not allowed in executable images, only object files.  */
+#define COFF_LONG_SECTION_NAMES 0
+
+#define COFF_SECTION_ALIGNMENT_ENTRIES \
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
+
+#include "coff/aarch64.h"
+#include "coff/internal.h"
+#include "coff/pe.h"
+#include "libcoff.h"
+#include "libpei.h"
+#include "libiberty.h"
+
+/* Make sure we're setting a 64-bit format.  */
+#undef AOUTSZ
+#define AOUTSZ          PEPAOUTSZ
+#define PEAOUTHDR       PEPAOUTHDR
+
+#include "coff-aarch64.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.20200303/bfd/pei-arm.c ./bfd/pei-arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-arm.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pei-arm.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -30,7 +30,7 @@
 
 #define COFF_IMAGE_WITH_PE
 #define COFF_WITH_PE
-#define PCRELOFFSET	   TRUE
+#define PCRELOFFSET	   true
 /* Long section names not allowed in executable images, only object files.  */
 #define COFF_LONG_SECTION_NAMES 0
 
@@ -45,6 +45,8 @@
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".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.20200303/bfd/pei-arm-wince.c ./bfd/pei-arm-wince.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-arm-wince.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pei-arm-wince.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -28,4 +28,6 @@
 
 #define LOCAL_LABEL_PREFIX "."
 
+#define WINCE
+
 #include "pei-arm.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.20200303/bfd/peicode.h ./bfd/peicode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/peicode.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/peicode.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Solutions.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -56,7 +56,7 @@
 
 #include "libpei.h"
 
-static bfd_boolean (*pe_saved_coff_bfd_print_private_bfd_data) (bfd *, void *) =
+static bool (*pe_saved_coff_bfd_print_private_bfd_data) (bfd *, void *) =
 #ifndef coff_bfd_print_private_bfd_data
      NULL;
 #else
@@ -64,10 +64,10 @@ static bfd_boolean (*pe_saved_coff_bfd_p
 #undef coff_bfd_print_private_bfd_data
 #endif
 
-static bfd_boolean			pe_print_private_bfd_data (bfd *, void *);
+static bool pe_print_private_bfd_data (bfd *, void *);
 #define coff_bfd_print_private_bfd_data pe_print_private_bfd_data
 
-static bfd_boolean (*pe_saved_coff_bfd_copy_private_bfd_data) (bfd *, bfd *) =
+static bool (*pe_saved_coff_bfd_copy_private_bfd_data) (bfd *, bfd *) =
 #ifndef coff_bfd_copy_private_bfd_data
      NULL;
 #else
@@ -75,7 +75,7 @@ static bfd_boolean (*pe_saved_coff_bfd_c
 #undef coff_bfd_copy_private_bfd_data
 #endif
 
-static bfd_boolean		       pe_bfd_copy_private_bfd_data (bfd *, bfd *);
+static bool pe_bfd_copy_private_bfd_data (bfd *, bfd *);
 #define coff_bfd_copy_private_bfd_data pe_bfd_copy_private_bfd_data
 
 #define coff_mkobject	   pe_mkobject
@@ -122,12 +122,12 @@ 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
 static void
-coff_swap_reloc_in (bfd * abfd, void * src, void * dst)
+coff_swap_reloc_in (bfd *abfd, void *src, void *dst)
 {
   RELOC *reloc_src = (RELOC *) src;
   struct internal_reloc *reloc_dst = (struct internal_reloc *) dst;
@@ -141,7 +141,7 @@ coff_swap_reloc_in (bfd * abfd, void * s
 }
 
 static unsigned int
-coff_swap_reloc_out (bfd * abfd, void * src, void * dst)
+coff_swap_reloc_out (bfd *abfd, void *src, void *dst)
 {
   struct internal_reloc *reloc_src = (struct internal_reloc *) src;
   struct external_reloc *reloc_dst = (struct external_reloc *) dst;
@@ -166,7 +166,7 @@ coff_swap_reloc_out (bfd * abfd, void *
 #endif
 
 static void
-coff_swap_filehdr_in (bfd * abfd, void * src, void * dst)
+coff_swap_filehdr_in (bfd *abfd, void *src, void *dst)
 {
   FILHDR *filehdr_src = (FILHDR *) src;
   struct internal_filehdr *filehdr_dst = (struct internal_filehdr *) dst;
@@ -191,6 +191,8 @@ coff_swap_filehdr_in (bfd * abfd, void *
 
 #ifdef COFF_IMAGE_WITH_PE
 # define coff_swap_filehdr_out _bfd_XXi_only_swap_filehdr_out
+#elif defined COFF_WITH_peAArch64
+# define coff_swap_filehdr_out _bfd_XX_only_swap_filehdr_out
 #elif defined COFF_WITH_pex64
 # define coff_swap_filehdr_out _bfd_pex64_only_swap_filehdr_out
 #elif defined COFF_WITH_pep
@@ -200,7 +202,7 @@ coff_swap_filehdr_in (bfd * abfd, void *
 #endif
 
 static void
-coff_swap_scnhdr_in (bfd * abfd, void * ext, void * in)
+coff_swap_scnhdr_in (bfd *abfd, void *ext, void *in)
 {
   SCNHDR *scnhdr_ext = (SCNHDR *) ext;
   struct internal_scnhdr *scnhdr_int = (struct internal_scnhdr *) in;
@@ -231,7 +233,8 @@ coff_swap_scnhdr_in (bfd * abfd, void *
     {
       scnhdr_int->s_vaddr += pe_data (abfd)->pe_opthdr.ImageBase;
       /* Do not cut upper 32-bits for 64-bit vma.  */
-#ifndef COFF_WITH_pex64
+#if (!defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) \
+     && !defined(COFF_WITH_peLoongArch64) && !defined(COFF_WITH_peRiscV64))
       scnhdr_int->s_vaddr &= 0xffffffff;
 #endif
     }
@@ -253,52 +256,44 @@ coff_swap_scnhdr_in (bfd * abfd, void *
 #endif
 }
 
-static bfd_boolean
-pe_mkobject (bfd * abfd)
+static bool
+pe_mkobject (bfd *abfd)
 {
-  pe_data_type *pe;
-  bfd_size_type amt = sizeof (pe_data_type);
-
-  abfd->tdata.pe_obj_data = (struct pe_tdata *) bfd_zalloc (abfd, amt);
-
-  if (abfd->tdata.pe_obj_data == 0)
-    return FALSE;
-
-  pe = pe_data (abfd);
+  /* Some x86 code followed by an ascii string.  */
+  static const char default_dos_message[64] = {
+    0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09, 0xcd,
+    0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21, 0x54, 0x68,
+    0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72,
+    0x61, 0x6d, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f,
+    0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6e,
+    0x20, 0x69, 0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20,
+    0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a,
+    0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+  pe_data_type *pe = bfd_zalloc (abfd, sizeof (*pe));
+  abfd->tdata.pe_obj_data = pe;
+  if (pe == NULL)
+    return false;
 
   pe->coff.pe = 1;
 
   /* in_reloc_p is architecture dependent.  */
   pe->in_reloc_p = in_reloc_p;
 
-  /* Default DOS message string.  */
-  pe->dos_message[0]  = 0x0eba1f0e;
-  pe->dos_message[1]  = 0xcd09b400;
-  pe->dos_message[2]  = 0x4c01b821;
-  pe->dos_message[3]  = 0x685421cd;
-  pe->dos_message[4]  = 0x70207369;
-  pe->dos_message[5]  = 0x72676f72;
-  pe->dos_message[6]  = 0x63206d61;
-  pe->dos_message[7]  = 0x6f6e6e61;
-  pe->dos_message[8]  = 0x65622074;
-  pe->dos_message[9]  = 0x6e757220;
-  pe->dos_message[10] = 0x206e6920;
-  pe->dos_message[11] = 0x20534f44;
-  pe->dos_message[12] = 0x65646f6d;
-  pe->dos_message[13] = 0x0a0d0d2e;
-  pe->dos_message[14] = 0x24;
-  pe->dos_message[15] = 0x0;
+  memcpy (pe->dos_message, default_dos_message, sizeof (pe->dos_message));
+
+  bfd_coff_long_section_names (abfd)
+    = coff_backend_info (abfd)->_bfd_coff_long_section_names;
 
-  memset (& pe->pe_opthdr, 0, sizeof pe->pe_opthdr);
-  return TRUE;
+  return true;
 }
 
 /* Create the COFF backend specific information.  */
 
 static void *
-pe_mkobject_hook (bfd * abfd,
-		  void * filehdr,
-		  void * aouthdr ATTRIBUTE_UNUSED)
+pe_mkobject_hook (bfd *abfd,
+		  void *filehdr,
+		  void *aouthdr ATTRIBUTE_UNUSED)
 {
   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
   pe_data_type *pe;
@@ -349,16 +344,16 @@ pe_mkobject_hook (bfd * abfd,
   return (void *) pe;
 }
 
-static bfd_boolean
-pe_print_private_bfd_data (bfd *abfd, void * vfile)
+static bool
+pe_print_private_bfd_data (bfd *abfd, void *vfile)
 {
   FILE *file = (FILE *) vfile;
 
   if (!_bfd_XX_print_private_bfd_data_common (abfd, vfile))
-    return FALSE;
+    return false;
 
   if (pe_saved_coff_bfd_print_private_bfd_data == NULL)
-    return TRUE;
+    return true;
 
   fputc ('\n', file);
 
@@ -368,7 +363,7 @@ pe_print_private_bfd_data (bfd *abfd, vo
 /* Copy any private info we understand from the input bfd
    to the output bfd.  */
 
-static bfd_boolean
+static bool
 pe_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   /* PR binutils/716: Copy the large address aware flag.
@@ -380,12 +375,12 @@ pe_bfd_copy_private_bfd_data (bfd *ibfd,
     pe_data (obfd)->real_flags |= IMAGE_FILE_LARGE_ADDRESS_AWARE;
 
   if (!_bfd_XX_bfd_copy_private_bfd_data_common (ibfd, obfd))
-    return FALSE;
+    return false;
 
   if (pe_saved_coff_bfd_copy_private_bfd_data)
     return pe_saved_coff_bfd_copy_private_bfd_data (ibfd, obfd);
 
-  return TRUE;
+  return true;
 }
 
 #define coff_bfd_copy_private_section_data \
@@ -395,11 +390,11 @@ pe_bfd_copy_private_bfd_data (bfd *ibfd,
 
 #ifdef COFF_IMAGE_WITH_PE
 
-/* Code to handle Microsoft's Image Library Format.
+/* Code to handle Microsoft's Import Library Format.
    Also known as LINK6 format.
    Documentation about this format can be found at:
 
-   http://msdn.microsoft.com/library/specs/pecoff_section8.htm  */
+   https://learn.microsoft.com/en-us/windows/win32/debug/pe-format#import-library-format  */
 
 /* The following constants specify the sizes of the various data
    structures that we have to create in order to build a bfd describing
@@ -424,21 +419,21 @@ pe_bfd_copy_private_bfd_data (bfd *ibfd,
 #define NUM_ILF_SECTIONS	6
 #define NUM_ILF_SYMS		(2 + NUM_ILF_SECTIONS)
 
-#define SIZEOF_ILF_SYMS		 (NUM_ILF_SYMS * sizeof (* vars.sym_cache))
-#define SIZEOF_ILF_SYM_TABLE	 (NUM_ILF_SYMS * sizeof (* vars.sym_table))
-#define SIZEOF_ILF_NATIVE_SYMS	 (NUM_ILF_SYMS * sizeof (* vars.native_syms))
-#define SIZEOF_ILF_SYM_PTR_TABLE (NUM_ILF_SYMS * sizeof (* vars.sym_ptr_table))
-#define SIZEOF_ILF_EXT_SYMS	 (NUM_ILF_SYMS * sizeof (* vars.esym_table))
-#define SIZEOF_ILF_RELOCS	 (NUM_ILF_RELOCS * sizeof (* vars.reltab))
-#define SIZEOF_ILF_INT_RELOCS	 (NUM_ILF_RELOCS * sizeof (* vars.int_reltab))
+#define SIZEOF_ILF_SYMS		 (NUM_ILF_SYMS * sizeof (*vars.sym_cache))
+#define SIZEOF_ILF_SYM_TABLE	 (NUM_ILF_SYMS * sizeof (*vars.sym_table))
+#define SIZEOF_ILF_NATIVE_SYMS	 (NUM_ILF_SYMS * sizeof (*vars.native_syms))
+#define SIZEOF_ILF_SYM_PTR_TABLE (NUM_ILF_SYMS * sizeof (*vars.sym_ptr_table))
+#define SIZEOF_ILF_EXT_SYMS	 (NUM_ILF_SYMS * sizeof (*vars.esym_table))
+#define SIZEOF_ILF_RELOCS	 (NUM_ILF_RELOCS * sizeof (*vars.reltab))
+#define SIZEOF_ILF_INT_RELOCS	 (NUM_ILF_RELOCS * sizeof (*vars.int_reltab))
 #define SIZEOF_ILF_STRINGS	 (strlen (symbol_name) * 2 + 8 \
-					+ 21 + strlen (source_dll) \
-					+ NUM_ILF_SECTIONS * 9 \
-					+ STRING_SIZE_SIZE)
+				  + 21 + strlen (source_dll)   \
+				  + NUM_ILF_SECTIONS * 9       \
+				  + STRING_SIZE_SIZE)
 #define SIZEOF_IDATA2		(5 * 4)
 
 /* For PEx64 idata4 & 5 have thumb size of 8 bytes.  */
-#ifdef COFF_WITH_pex64
+#if defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64)
 #define SIZEOF_IDATA4		(2 * 4)
 #define SIZEOF_IDATA5		(2 * 4)
 #else
@@ -446,9 +441,10 @@ pe_bfd_copy_private_bfd_data (bfd *ibfd,
 #define SIZEOF_IDATA5		(1 * 4)
 #endif
 
-#define SIZEOF_IDATA6		(2 + strlen (symbol_name) + 1 + 1)
+#define SIZEOF_IDATA6		(2 + strlen (import_name) + 1 + 1)
 #define SIZEOF_IDATA7		(strlen (source_dll) + 1 + 1)
-#define SIZEOF_ILF_SECTIONS	(NUM_ILF_SECTIONS * sizeof (struct coff_section_tdata))
+#define SIZEOF_ILF_SECTIONS	(NUM_ILF_SECTIONS \
+				 * sizeof (struct coff_section_tdata))
 
 #define ILF_DATA_SIZE				\
     + SIZEOF_ILF_SYMS				\
@@ -476,8 +472,8 @@ pe_ILF_make_a_symbol_reloc (pe_ILF_vars
 			    struct bfd_symbol **	sym,
 			    unsigned int		sym_index)
 {
-  arelent * entry;
-  struct internal_reloc * internal;
+  arelent *entry;
+  struct internal_reloc *internal;
 
   entry = vars->reltab + vars->relcount;
   internal = vars->int_reltab + vars->relcount;
@@ -489,7 +485,7 @@ pe_ILF_make_a_symbol_reloc (pe_ILF_vars
 
   internal->r_vaddr  = address;
   internal->r_symndx = sym_index;
-  internal->r_type   = entry->howto->type;
+  internal->r_type   = entry->howto ? entry->howto->type : 0;
 
   vars->relcount ++;
 
@@ -504,15 +500,15 @@ pe_ILF_make_a_reloc (pe_ILF_vars *
 		     bfd_reloc_code_real_type  reloc,
 		     asection_ptr	       sec)
 {
-  pe_ILF_make_a_symbol_reloc (vars, address, reloc, sec->symbol_ptr_ptr,
+  pe_ILF_make_a_symbol_reloc (vars, address, reloc, &sec->symbol,
 			      coff_section_data (vars->abfd, sec)->i);
 }
 
 /* Move the queued relocs into the given section.  */
 
 static void
-pe_ILF_save_relocs (pe_ILF_vars * vars,
-		    asection_ptr  sec)
+pe_ILF_save_relocs (pe_ILF_vars *vars,
+		    asection_ptr sec)
 {
   /* Make sure that there is somewhere to store the internal relocs.  */
   if (coff_section_data (vars->abfd, sec) == NULL)
@@ -520,7 +516,6 @@ pe_ILF_save_relocs (pe_ILF_vars * vars,
     abort ();
 
   coff_section_data (vars->abfd, sec)->relocs = vars->int_reltab;
-  coff_section_data (vars->abfd, sec)->keep_relocs = TRUE;
 
   sec->relocation  = vars->reltab;
   sec->reloc_count = vars->relcount;
@@ -542,9 +537,9 @@ pe_ILF_make_a_symbol (pe_ILF_vars *  var
 		      asection_ptr   section,
 		      flagword       extra_flags)
 {
-  coff_symbol_type * sym;
-  combined_entry_type * ent;
-  SYMENT * esym;
+  coff_symbol_type *sym;
+  combined_entry_type *ent;
+  SYMENT *esym;
   unsigned short sclass;
 
   if (extra_flags & BSF_LOCAL)
@@ -571,7 +566,7 @@ pe_ILF_make_a_symbol (pe_ILF_vars *  var
   esym = vars->esym_ptr;
 
   /* Copy the symbol's name into the string table.  */
-  sprintf (vars->string_ptr, "%s%s", prefix, symbol_name);
+  int len = sprintf (vars->string_ptr, "%s%s", prefix, symbol_name);
 
   if (section == NULL)
     section = bfd_und_section_ptr;
@@ -588,8 +583,8 @@ pe_ILF_make_a_symbol (pe_ILF_vars *  var
   /* Initialise the internal symbol structure.  */
   ent->u.syment.n_sclass	  = sclass;
   ent->u.syment.n_scnum		  = section->target_index;
-  ent->u.syment._n._n_n._n_offset = (bfd_hostptr_t) sym;
-  ent->is_sym = TRUE;
+  ent->u.syment._n._n_n._n_offset = (uintptr_t) sym;
+  ent->is_sym = true;
 
   sym->symbol.the_bfd = vars->abfd;
   sym->symbol.name    = vars->string_ptr;
@@ -597,8 +592,8 @@ pe_ILF_make_a_symbol (pe_ILF_vars *  var
   sym->symbol.section = section;
   sym->native	      = ent;
 
-  * vars->table_ptr = vars->sym_index;
-  * vars->sym_ptr_ptr = sym;
+  *vars->table_ptr = vars->sym_index;
+  *vars->sym_ptr_ptr = sym;
 
   /* Adjust pointers for the next symbol.  */
   vars->sym_index ++;
@@ -607,7 +602,7 @@ pe_ILF_make_a_symbol (pe_ILF_vars *  var
   vars->table_ptr ++;
   vars->native_ptr ++;
   vars->esym_ptr ++;
-  vars->string_ptr += strlen (symbol_name) + strlen (prefix) + 1;
+  vars->string_ptr += len + 1;
 
   BFD_ASSERT (vars->string_ptr < vars->end_string_ptr);
 }
@@ -622,6 +617,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 +648,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);
@@ -700,7 +694,7 @@ typedef struct
 }
 jump_table;
 
-static jump_table jtab[] =
+static const jump_table jtab[] =
 {
 #ifdef I386MAGIC
   { I386MAGIC,
@@ -739,6 +733,16 @@ static jump_table jtab[] =
   },
 #endif
 
+#ifdef AARCH64MAGIC
+/* We don't currently support jumping to DLLs, so if
+   someone does try emit a runtime trap.  Through UDF #0.  */
+  { AARCH64MAGIC,
+    { 0x00, 0x00, 0x00, 0x00 },
+    4, 0
+  },
+
+#endif
+
 #ifdef  ARMPEMAGIC
   { ARMPEMAGIC,
     { 0x00, 0xc0, 0x9f, 0xe5, 0x00, 0xf0,
@@ -754,6 +758,27 @@ static jump_table jtab[] =
     16, 12
   },
 #endif
+
+#ifdef LOONGARCH64MAGIC
+/* We don't currently support jumping to DLLs, so if
+   someone does try emit a runtime trap.  Through BREAK 0.  */
+  { LOONGARCH64MAGIC,
+    { 0x00, 0x00, 0x2a, 0x00 },
+    4, 0
+  },
+
+#endif
+
+#ifdef RISCV64MAGIC
+  /* We don't currently support jumping to DLLs, so if
+     someone does try emit a runtime trap.  Through EBREAK.  */
+  { RISCV64MAGIC,
+    { 0x73, 0x00, 0x10, 0x00 },
+    4, 0
+  },
+
+#endif
+
   { 0, { 0 }, 0, 0 }
 };
 
@@ -763,13 +788,14 @@ static jump_table jtab[] =
 
 /* Build a full BFD from the information supplied in a ILF object.  */
 
-static bfd_boolean
+static bool
 pe_ILF_build_a_bfd (bfd *	    abfd,
 		    unsigned int    magic,
 		    char *	    symbol_name,
 		    char *	    source_dll,
 		    unsigned int    ordinal,
-		    unsigned int    types)
+		    unsigned int    types,
+		    char *	    import_name)
 {
   bfd_byte *		   ptr;
   pe_ILF_vars		   vars;
@@ -779,6 +805,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;
@@ -788,20 +815,14 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
     {
     case IMPORT_CODE:
     case IMPORT_DATA:
-      break;
-
     case IMPORT_CONST:
-      /* XXX code yet to be written.  */
-      /* xgettext:c-format */
-      _bfd_error_handler (_("%pB: unhandled import type; %x"),
-			  abfd, import_type);
-      return FALSE;
+      break;
 
     default:
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unrecognized import type; %x"),
 			  abfd, import_type);
-      return FALSE;
+      return false;
     }
 
   switch (import_name_type)
@@ -810,13 +831,24 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
     case IMPORT_NAME:
     case IMPORT_NAME_NOPREFIX:
     case IMPORT_NAME_UNDECORATE:
+      import_name = symbol_name;
+      break;
+
+    case IMPORT_NAME_EXPORTAS:
+      if (!import_name || !import_name[0])
+	{
+	  _bfd_error_handler (_("%pB: missing import name for "
+				"IMPORT_NAME_EXPORTAS for %s"),
+			      abfd, symbol_name);
+	  return false;
+	}
       break;
 
     default:
       /* xgettext:c-format */
       _bfd_error_handler (_("%pB: unrecognized import name type; %x"),
 			  abfd, import_name_type);
-      return FALSE;
+      return false;
     }
 
   /* Initialise local variables.
@@ -829,7 +861,7 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
   vars.bim
     = (struct bfd_in_memory *) bfd_malloc ((bfd_size_type) sizeof (*vars.bim));
   if (vars.bim == NULL)
-    return FALSE;
+    return false;
 
   ptr = (bfd_byte *) bfd_zmalloc ((bfd_size_type) ILF_DATA_SIZE);
   vars.bim->buffer = ptr;
@@ -874,23 +906,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;
@@ -904,8 +930,8 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
 
      Note we do not create a .idata$3 section as this is
      created for us by the linker script.  */
-  id4 = pe_ILF_make_a_section (& vars, ".idata$4", SIZEOF_IDATA4, 0);
-  id5 = pe_ILF_make_a_section (& vars, ".idata$5", SIZEOF_IDATA5, 0);
+  id4 = pe_ILF_make_a_section (&vars, ".idata$4", SIZEOF_IDATA4, 0);
+  id5 = pe_ILF_make_a_section (&vars, ".idata$5", SIZEOF_IDATA5, 0);
   if (id4 == NULL || id5 == NULL)
     goto error_return;
 
@@ -916,28 +942,29 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
 	/* See PR 20907 for a reproducer.  */
 	goto error_return;
 
-#ifdef COFF_WITH_pex64
+#if (defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) \
+     || defined(COFF_WITH_peLoongArch64) || defined (COFF_WITH_peRiscV64))
       ((unsigned int *) id4->contents)[0] = ordinal;
       ((unsigned int *) id4->contents)[1] = 0x80000000;
       ((unsigned int *) id5->contents)[0] = ordinal;
       ((unsigned int *) id5->contents)[1] = 0x80000000;
 #else
-      * (unsigned int *) id4->contents = ordinal | 0x80000000;
-      * (unsigned int *) id5->contents = ordinal | 0x80000000;
+      ((unsigned int *) id4->contents)[0] = ordinal | 0x80000000;
+      ((unsigned int *) id5->contents)[0] = ordinal | 0x80000000;
 #endif
     }
   else
     {
-      char * symbol;
+      char *symbol;
       unsigned int len;
 
       /* Create .idata$6 - the Hint Name Table.  */
-      id6 = pe_ILF_make_a_section (& vars, ".idata$6", SIZEOF_IDATA6, 0);
+      id6 = pe_ILF_make_a_section (&vars, ".idata$6", SIZEOF_IDATA6, 0);
       if (id6 == NULL)
 	goto error_return;
 
       /* If necessary, trim the import symbol name.  */
-      symbol = symbol_name;
+      symbol = import_name;
 
       /* As used by MS compiler, '_', '@', and '?' are alternative
 	 forms of USER_LABEL_PREFIX, with '?' for c++ mangled names,
@@ -946,7 +973,8 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
 	 IMPORT_NAME_NOPREFIX and IMPORT_NAME_UNDECORATE as per the
 	 PE COFF 6.0 spec (section 8.3, Import Name Type).  */
 
-      if (import_name_type != IMPORT_NAME)
+      if (import_name_type != IMPORT_NAME
+	  && import_name_type != IMPORT_NAME_EXPORTAS)
 	{
 	  char c = symbol[0];
 
@@ -984,11 +1012,12 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
     }
 
   /* Create an import symbol.  */
-  pe_ILF_make_a_symbol (& vars, "__imp_", symbol_name, id5, 0);
+  pe_ILF_make_a_symbol (&vars, "__imp_", symbol_name, id5, 0);
   imp_sym   = vars.sym_ptr_ptr - 1;
   imp_index = vars.sym_index - 1;
 
-  /* Create extra sections depending upon the type of import we are dealing with.  */
+  /* Create extra sections depending upon the type of import we are
+     dealing with.  */
   switch (import_type)
     {
       int i;
@@ -1009,7 +1038,7 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
 	abort ();
 
       /* Create the .text section.  */
-      text = pe_ILF_make_a_section (& vars, ".text", jtab[i].size, SEC_CODE);
+      text = pe_ILF_make_a_section (&vars, ".text", jtab[i].size, SEC_CODE);
       if (text == NULL)
 	goto error_return;
 
@@ -1043,10 +1072,11 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
 				    BFD_RELOC_32, (asymbol **) imp_sym,
 				    imp_index);
 
-      pe_ILF_save_relocs (& vars, text);
+      pe_ILF_save_relocs (&vars, text);
       break;
 
     case IMPORT_DATA:
+    case IMPORT_CONST:
       break;
 
     default:
@@ -1054,25 +1084,56 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
       abort ();
     }
 
+  /* Now create a symbol describing the imported value.  */
+  switch (import_type)
+    {
+    case IMPORT_CODE:
+      pe_ILF_make_a_symbol (&vars, "", symbol_name, text,
+			    BSF_NOT_AT_END | BSF_FUNCTION);
+
+      break;
+
+    case IMPORT_DATA:
+      /* Nothing to do here.  */
+      break;
+
+    case IMPORT_CONST:
+      pe_ILF_make_a_symbol (&vars, "", symbol_name, id5, 0);
+      break;
+
+    default:
+      /* XXX code not yet written.  */
+      abort ();
+    }
+
+  /* Create an import symbol for the DLL, without the .dll suffix.  */
+  ptr = (bfd_byte *) strrchr (source_dll, '.');
+  if (ptr)
+    *ptr = 0;
+  pe_ILF_make_a_symbol (&vars, "__IMPORT_DESCRIPTOR_", source_dll, NULL, 0);
+  if (ptr)
+    *ptr = '.';
+
   /* Initialise the bfd.  */
-  memset (& internal_f, 0, sizeof (internal_f));
+  memset (&internal_f, 0, sizeof (internal_f));
 
   internal_f.f_magic  = magic;
   internal_f.f_symptr = 0;
   internal_f.f_nsyms  = 0;
   internal_f.f_flags  = F_AR32WR | F_LNNO; /* XXX is this correct ?  */
 
-  if (   ! bfd_set_start_address (abfd, (bfd_vma) 0)
-      || ! bfd_coff_set_arch_mach_hook (abfd, & internal_f))
+  if (!bfd_set_start_address (abfd, (bfd_vma) 0)
+      || !bfd_coff_set_arch_mach_hook (abfd, &internal_f))
     goto error_return;
 
-  if (bfd_coff_mkobject_hook (abfd, (void *) & internal_f, NULL) == NULL)
+  if (bfd_coff_mkobject_hook (abfd, (void *) &internal_f, NULL) == NULL)
     goto error_return;
 
-  coff_data (abfd)->pe = 1;
+  obj_pe (abfd) = true;
 #ifdef THUMBPEMAGIC
   if (vars.magic == THUMBPEMAGIC)
-    /* Stop some linker warnings about thumb code not supporting interworking.  */
+    /* Stop some linker warnings about thumb code not supporting
+       interworking.  */
     coff_data (abfd)->flags |= F_INTERWORK | F_INTERWORK_SET;
 #endif
 
@@ -1080,75 +1141,63 @@ pe_ILF_build_a_bfd (bfd *	    abfd,
   bfd_cache_close (abfd);
 
   abfd->iostream = (void *) vars.bim;
-  abfd->flags |= BFD_IN_MEMORY /* | HAS_LOCALS */;
+  abfd->flags |= BFD_IN_MEMORY | HAS_SYMS;
   abfd->iovec = &_bfd_memory_iovec;
   abfd->where = 0;
   abfd->origin = 0;
+  abfd->size = 0;
   obj_sym_filepos (abfd) = 0;
 
-  /* Now create a symbol describing the imported value.  */
-  switch (import_type)
-    {
-    case IMPORT_CODE:
-      pe_ILF_make_a_symbol (& vars, "", symbol_name, text,
-			    BSF_NOT_AT_END | BSF_FUNCTION);
-
-      break;
-
-    case IMPORT_DATA:
-      /* Nothing to do here.  */
-      break;
-
-    default:
-      /* XXX code not yet written.  */
-      abort ();
-    }
-
-  /* Create an import symbol for the DLL, without the .dll suffix.  */
-  ptr = (bfd_byte *) strrchr (source_dll, '.');
-  if (ptr)
-    * ptr = 0;
-  pe_ILF_make_a_symbol (& vars, "__IMPORT_DESCRIPTOR_", source_dll, NULL, 0);
-  if (ptr)
-    * ptr = '.';
-
   /* Point the bfd at the symbol table.  */
   obj_symbols (abfd) = vars.sym_cache;
   abfd->symcount = vars.sym_index;
 
   obj_raw_syments (abfd) = vars.native_syms;
   obj_raw_syment_count (abfd) = vars.sym_index;
+  obj_coff_keep_raw_syms (abfd) = true;
 
   obj_coff_external_syms (abfd) = (void *) vars.esym_table;
-  obj_coff_keep_syms (abfd) = TRUE;
+  obj_coff_keep_syms (abfd) = true;
 
   obj_convert (abfd) = vars.sym_table;
   obj_conv_table_size (abfd) = vars.sym_index;
 
   obj_coff_strings (abfd) = vars.string_table;
-  obj_coff_keep_strings (abfd) = TRUE;
+  obj_coff_strings_len (abfd) = vars.string_ptr - vars.string_table;
+  obj_coff_keep_strings (abfd) = true;
 
-  abfd->flags |= HAS_SYMS;
-
-  return TRUE;
+  return true;
 
  error_return:
-  if (vars.bim->buffer != NULL)
-    free (vars.bim->buffer);
+  free (vars.bim->buffer);
   free (vars.bim);
-  return FALSE;
+  return false;
 }
 
-/* We have detected a Image Library Format archive element.
+/* Cleanup function, returned from check_format hook.  */
+
+static void
+pe_ILF_cleanup (bfd *abfd)
+{
+  coff_object_cleanup (abfd);
+
+  struct bfd_in_memory *bim = abfd->iostream;
+  free (bim->buffer);
+  free (bim);
+  abfd->iostream = NULL;
+}
+
+/* We have detected an Import Library Format archive element.
    Decode the element and return the appropriate target.  */
 
-static const bfd_target *
-pe_ILF_object_p (bfd * abfd)
+static bfd_cleanup
+pe_ILF_object_p (bfd *abfd)
 {
   bfd_byte	  buffer[14];
   bfd_byte *	  ptr;
   char *	  symbol_name;
   char *	  source_dll;
+  char *	  import_name;
   unsigned int	  machine;
   bfd_size_type	  size;
   unsigned int	  ordinal;
@@ -1156,8 +1205,8 @@ pe_ILF_object_p (bfd * abfd)
   unsigned int	  magic;
 
   /* Upon entry the first six bytes of the ILF header have
-      already been read.  Now read the rest of the header.  */
-  if (bfd_bread (buffer, (bfd_size_type) 14, abfd) != 14)
+     already been read.  Now read the rest of the header.  */
+  if (bfd_read (buffer, 14, abfd) != 14)
     return NULL;
 
   ptr = buffer;
@@ -1213,12 +1262,30 @@ pe_ILF_object_p (bfd * abfd)
 #endif
       break;
 
+    case IMAGE_FILE_MACHINE_ARM64:
+#ifdef AARCH64MAGIC
+      magic = AARCH64MAGIC;
+#endif
+      break;
+
+    case IMAGE_FILE_MACHINE_LOONGARCH64:
+#ifdef LOONGARCH64MAGIC
+      magic = LOONGARCH64MAGIC;
+#endif
+      break;
+
+    case IMAGE_FILE_MACHINE_RISCV64:
+#ifdef RISCV64MAGIC
+      magic = RISCV64MAGIC;
+#endif
+      break;
+
     case IMAGE_FILE_MACHINE_THUMB:
 #ifdef THUMBPEMAGIC
       {
 	extern const bfd_target TARGET_LITTLE_SYM;
 
-	if (abfd->xvec == & TARGET_LITTLE_SYM)
+	if (abfd->xvec == &TARGET_LITTLE_SYM)
 	  magic = THUMBPEMAGIC;
       }
 #endif
@@ -1273,16 +1340,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;
@@ -1298,15 +1359,30 @@ pe_ILF_object_p (bfd * abfd)
       return NULL;
     }
 
+  /* An ILF file may contain a third string, after source_dll; this is
+     used for IMPORT_NAME_EXPORTAS. We know from above that the whole
+     block of data is null terminated, ptr[size-1]==0, but we don't
+     know how many individual null terminated strings we have in there.
+
+     First find the end of source_dll.  */
+  import_name = source_dll + strlen (source_dll) + 1;
+  if ((bfd_byte *) import_name >= ptr + size)
+    {
+      /* If this points at the end of the ptr+size block, we only had
+	 two strings. */
+      import_name = NULL;
+    }
+
   /* Now construct the bfd.  */
   if (! pe_ILF_build_a_bfd (abfd, magic, symbol_name,
-			    source_dll, ordinal, types))
+			    source_dll, ordinal, types,
+			    import_name))
     {
       bfd_release (abfd, ptr);
       return NULL;
     }
 
-  return abfd->xvec;
+  return pe_ILF_cleanup;
 }
 
 static void
@@ -1356,8 +1432,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;
     }
 
@@ -1381,14 +1456,16 @@ pe_bfd_read_buildid (bfd *abfd)
 	  */
 	  if (_bfd_XXi_slurp_codeview_record (abfd,
 					      (file_ptr) idd.PointerToRawData,
-					      idd.SizeOfData, cvinfo))
+					      idd.SizeOfData, cvinfo, NULL))
 	    {
-	      struct bfd_build_id* build_id = bfd_alloc (abfd,
-			 sizeof (struct bfd_build_id) + cvinfo->SignatureLength);
+	      struct bfd_build_id *build_id;
+	      size_t bidlen = sizeof (*build_id) + cvinfo->SignatureLength;
+
+	      build_id = bfd_alloc (abfd, bidlen);
 	      if (build_id)
 		{
 		  build_id->size = cvinfo->SignatureLength;
-		  memcpy(build_id->data,  cvinfo->Signature,
+		  memcpy(build_id->data, cvinfo->Signature,
 			 cvinfo->SignatureLength);
 		  abfd->build_id = build_id;
 		}
@@ -1396,24 +1473,26 @@ pe_bfd_read_buildid (bfd *abfd)
 	  break;
 	}
     }
+
+  free (data);
 }
 
-static const bfd_target *
-pe_bfd_object_p (bfd * abfd)
+static bfd_cleanup
+pe_bfd_object_p (bfd *abfd)
 {
   bfd_byte buffer[6];
   struct external_DOS_hdr dos_hdr;
   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.  */
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bread (buffer, (bfd_size_type) 6, abfd) != 6)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_read (buffer, 6, abfd) != 6)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -1425,9 +1504,8 @@ pe_bfd_object_p (bfd * abfd)
       && H_GET_16 (abfd, buffer + 4) == 0)
     return pe_ILF_object_p (abfd);
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bread (&dos_hdr, (bfd_size_type) sizeof (dos_hdr), abfd)
-	 != sizeof (dos_hdr))
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_read (&dos_hdr, sizeof (dos_hdr), abfd) != sizeof (dos_hdr))
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -1452,8 +1530,7 @@ pe_bfd_object_p (bfd * abfd)
 
   offset = H_GET_32 (abfd, dos_hdr.e_lfanew);
   if (bfd_seek (abfd, offset, SEEK_SET) != 0
-      || (bfd_bread (&image_hdr, (bfd_size_type) sizeof (image_hdr), abfd)
-	  != sizeof (image_hdr)))
+      || bfd_read (&image_hdr, sizeof (image_hdr), abfd) != sizeof (image_hdr))
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -1486,32 +1563,65 @@ pe_bfd_object_p (bfd * abfd)
   if (opt_hdr_size != 0)
     {
       bfd_size_type amt = opt_hdr_size;
-      void * opthdr;
+      bfd_byte *opthdr;
 
       /* PR 17521 file: 230-131433-0.004.  */
       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);
-      if (bfd_get_error () != bfd_error_no_error)
-	return NULL;
-    }
+      bfd_coff_swap_aouthdr_in (abfd, opthdr, &internal_a);
 
+      struct internal_extra_pe_aouthdr *a = &internal_a.pe;
+
+#ifdef ARM
+      /* Use Subsystem to distinguish between pei-arm-little and
+	 pei-arm-wince-little.  */
+#ifdef WINCE
+      if (a->Subsystem != IMAGE_SUBSYSTEM_WINDOWS_CE_GUI)
+#else
+      if (a->Subsystem == IMAGE_SUBSYSTEM_WINDOWS_CE_GUI)
+#endif
+	{
+	  bfd_set_error (bfd_error_wrong_format);
+	  return NULL;
+	}
+#endif
+
+      if ((a->SectionAlignment & -a->SectionAlignment) != a->SectionAlignment
+	  || a->SectionAlignment >= 0x80000000)
+	{
+	  _bfd_error_handler (_("%pB: adjusting invalid SectionAlignment"),
+			      abfd);
+	  a->SectionAlignment &= -a->SectionAlignment;
+	  if (a->SectionAlignment >= 0x80000000)
+	    a->SectionAlignment = 0x40000000;
+	}
+
+      if ((a->FileAlignment & -a->FileAlignment) != a->FileAlignment
+	  || a->FileAlignment > a->SectionAlignment)
+	{
+	  _bfd_error_handler (_("%pB: adjusting invalid FileAlignment"),
+			      abfd);
+	  a->FileAlignment &= -a->FileAlignment;
+	  if (a->FileAlignment > a->SectionAlignment)
+	    a->FileAlignment = a->SectionAlignment;
+	}
+
+      if (a->NumberOfRvaAndSizes > IMAGE_NUMBEROF_DIRECTORY_ENTRIES)
+	_bfd_error_handler (_("%pB: invalid NumberOfRvaAndSizes"), abfd);
+    }
 
   result = coff_real_object_p (abfd, internal_f.f_nscns, &internal_f,
 			       (opt_hdr_size != 0
 				? &internal_a
 				: (struct internal_aouthdr *) NULL));
 
-
   if (result)
     {
       /* Now the whole header has been processed, see if there is a 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.20200303/bfd/pei-i386.c ./bfd/pei-i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-i386.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pei-i386.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -25,7 +25,7 @@
 #define TARGET_NAME		"pei-i386"
 #define COFF_IMAGE_WITH_PE
 #define COFF_WITH_PE
-#define PCRELOFFSET		TRUE
+#define PCRELOFFSET		true
 #define TARGET_UNDERSCORE	'_'
 /* Long section names not allowed in executable images, only object files.  */
 #define COFF_LONG_SECTION_NAMES 0
@@ -35,6 +35,8 @@
 #define COFF_SECTION_ALIGNMENT_ENTRIES \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".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.20200303/bfd/pei-ia64.c ./bfd/pei-ia64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-ia64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pei-ia64.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Contributed by David Mosberger <davidm@hpl.hp.com>
 
    This implementation only supports objcopy to ouput IA-64 PE IMAGE COFF
@@ -30,7 +30,7 @@
 #define COFF_IMAGE_WITH_PE
 #define COFF_WITH_PE
 #define COFF_WITH_pep
-#define PCRELOFFSET TRUE
+#define PCRELOFFSET true
 #define TARGET_UNDERSCORE '_'
 /* Long section names not allowed in executable images, only object files.  */
 #define COFF_LONG_SECTION_NAMES 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.20200303/bfd/pei-loongarch64.c ./bfd/pei-loongarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-loongarch64.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/pei-loongarch64.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,74 @@
+/* BFD back-end for LoongArch64 PE IMAGE COFF files.
+   Copyright (C) 2022-2025 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"
+
+#define TARGET_SYM		loongarch64_pei_vec
+#define TARGET_NAME		"pei-loongarch64"
+#define TARGET_ARCHITECTURE	bfd_arch_loongarch
+#define TARGET_PAGESIZE		0x4000
+#define TARGET_BIG_ENDIAN	0
+#define TARGET_ARCHIVE		0
+#define TARGET_PRIORITY		0
+
+#define COFF_IMAGE_WITH_PE
+/* Rename the above into...  */
+#define COFF_WITH_peLoongArch64
+#define COFF_WITH_PE
+#define PCRELOFFSET	   true
+
+/* Long section names not allowed in executable images, only object files.  */
+#define COFF_LONG_SECTION_NAMES 0
+
+#define COFF_SECTION_ALIGNMENT_ENTRIES \
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
+
+#include "coff/loongarch64.h"
+#include "coff/internal.h"
+#include "coff/pe.h"
+#include "libcoff.h"
+#include "libpei.h"
+#include "libiberty.h"
+
+/* Make sure we're setting a 64-bit format.  */
+#undef AOUTSZ
+#define AOUTSZ          PEPAOUTSZ
+#define PEAOUTHDR       PEPAOUTHDR
+
+#include "coff-loongarch64.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.20200303/bfd/pei-mcore.c ./bfd/pei-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-mcore.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pei-mcore.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for MCore PECOFF files.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -30,7 +30,7 @@
 
 #define COFF_IMAGE_WITH_PE
 #define COFF_WITH_PE
-#define PCRELOFFSET	   TRUE
+#define PCRELOFFSET	   true
 /* Long section names not allowed in executable images, only object files.  */
 #define COFF_LONG_SECTION_NAMES 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.20200303/bfd/pei-ppc.c ./bfd/pei-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-ppc.c	2020-03-03 02:08:51.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.20200303/bfd/pei-riscv64.c ./bfd/pei-riscv64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-riscv64.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/pei-riscv64.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,74 @@
+/* BFD back-end for RISC-V 64-bit PE IMAGE COFF files.
+   Copyright (C) 2023-2025 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"
+
+#define TARGET_SYM		riscv64_pei_vec
+#define TARGET_NAME		"pei-riscv64-little"
+#define TARGET_ARCHITECTURE	bfd_arch_riscv
+#define TARGET_PAGESIZE		0x4000
+#define TARGET_BIG_ENDIAN	0
+#define TARGET_ARCHIVE		0
+#define TARGET_PRIORITY		0
+
+#define COFF_IMAGE_WITH_PE
+/* Rename the above into...  */
+#define COFF_WITH_peRiscV64
+#define COFF_WITH_PE
+#define PCRELOFFSET	   true
+
+/* Long section names not allowed in executable images, only object files.  */
+#define COFF_LONG_SECTION_NAMES 0
+
+#define COFF_SECTION_ALIGNMENT_ENTRIES \
+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
+
+#include "coff/riscv64.h"
+#include "coff/internal.h"
+#include "coff/pe.h"
+#include "libcoff.h"
+#include "libpei.h"
+#include "libiberty.h"
+
+/* Make sure we're setting a 64-bit format.  */
+#undef AOUTSZ
+#define AOUTSZ          PEPAOUTSZ
+#define PEAOUTHDR       PEPAOUTHDR
+
+#include "coff-riscv64.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.20200303/bfd/pei-sh.c ./bfd/pei-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-sh.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pei-sh.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -26,7 +26,7 @@
 #define IMAGE_BASE NT_IMAGE_BASE
 #define COFF_IMAGE_WITH_PE
 #define COFF_WITH_PE
-#define PCRELOFFSET TRUE
+#define PCRELOFFSET true
 #define TARGET_UNDERSCORE '_'
 /* Long section names not allowed in executable images, only object files.  */
 #define COFF_LONG_SECTION_NAMES 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.20200303/bfd/pei-x86_64.c ./bfd/pei-x86_64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pei-x86_64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pei-x86_64.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -22,13 +22,14 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#include "libbfd.h"
 
 #define TARGET_SYM		x86_64_pei_vec
 #define TARGET_NAME		"pei-x86-64"
 #define COFF_IMAGE_WITH_PE
 #define COFF_WITH_PE
 #define COFF_WITH_pex64
-#define PCRELOFFSET		TRUE
+#define PCRELOFFSET		true
 #if defined (USE_MINGW64_LEADING_UNDERSCORES)
 #define TARGET_UNDERSCORE	'_'
 #else
@@ -51,6 +52,8 @@
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
@@ -58,13 +61,6 @@
 { COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }
 
-/* Note we have to make sure not to include headers twice.
-   Not all headers are wrapped in #ifdef guards, so we define
-   PEI_HEADERS to prevent double including in coff-x86_64.c  */
-#define PEI_HEADERS
-#include "sysdep.h"
-#include "bfd.h"
-#include "libbfd.h"
 #include "coff/x86_64.h"
 #include "coff/internal.h"
 #include "coff/pe.h"
@@ -98,7 +94,7 @@ pex64_get_runtime_function (bfd *abfd, s
 
 /* Swap in unwind info header.  */
 
-static bfd_boolean
+static bool
 pex64_get_unwind_info (bfd *abfd, struct pex64_unwind_info *ui,
 		       void *data, void *data_end)
 {
@@ -109,8 +105,8 @@ pex64_get_unwind_info (bfd *abfd, struct
 
   memset (ui, 0, sizeof (struct pex64_unwind_info));
 
-  if (ex_dta >= ex_dta_end || ex_dta + 4 >= ex_dta_end)
-    return FALSE;
+  if (ex_dta_end - ex_dta < 4)
+    return false;
 
   ui->Version = PEX64_UWI_VERSION (ex_ui->Version_Flags);
   ui->Flags = PEX64_UWI_FLAGS (ex_ui->Version_Flags);
@@ -123,30 +119,30 @@ pex64_get_unwind_info (bfd *abfd, struct
   ui->rawUnwindCodes = ex_dta + 4;
   ui->rawUnwindCodesEnd = ex_dta_end;
 
+  if ((size_t) (ex_dta_end - ex_dta) < ui->SizeOfBlock)
+    return false;
   ex_dta += ui->SizeOfBlock;
-  if (ex_dta >= ex_dta_end)
-    return FALSE;
 
   switch (ui->Flags)
     {
     case UNW_FLAG_CHAININFO:
-      if (ex_dta + 12 >= ex_dta_end)
-	return FALSE;
+      if (ex_dta_end - ex_dta < 12)
+	return false;
       ui->rva_BeginAddress = bfd_get_32 (abfd, ex_dta + 0);
       ui->rva_EndAddress = bfd_get_32 (abfd, ex_dta + 4);
       ui->rva_UnwindData = bfd_get_32 (abfd, ex_dta + 8);
       ui->SizeOfBlock += 12;
-      return TRUE;
+      return true;
     case UNW_FLAG_EHANDLER:
     case UNW_FLAG_UHANDLER:
     case UNW_FLAG_FHANDLER:
-      if (ex_dta + 4 >= ex_dta_end)
-	return FALSE;
+      if (ex_dta_end - ex_dta < 4)
+	return false;
       ui->rva_ExceptionHandler = bfd_get_32 (abfd, ex_dta);
       ui->SizeOfBlock += 4;
-      return TRUE;
+      return true;
     default:
-      return TRUE;
+      return true;
     }
 }
 
@@ -168,11 +164,12 @@ pex64_xdata_print_uwd_codes (FILE *file,
       If an FP reg is used, the any unwind code taking an offset must only be
       used after the FP reg is established in the prolog.
      But there are counter examples of that in system dlls...  */
-  save_allowed = TRUE;
+  save_allowed = true;
 
   i = 0;
 
-  if (ui->rawUnwindCodes + 1 >= ui->rawUnwindCodesEnd)
+  if ((size_t) (ui->rawUnwindCodesEnd - ui->rawUnwindCodes)
+      < ui->CountOfCodes * 2)
     {
       fprintf (file, _("warning: corrupt unwind data\n"));
       return;
@@ -186,12 +183,6 @@ pex64_xdata_print_uwd_codes (FILE *file,
 	 to decode instruction flow if outside an epilog.  */
       unsigned int func_size = rf->rva_EndAddress - rf->rva_BeginAddress;
 
-      if (ui->rawUnwindCodes + 1 + (ui->CountOfCodes * 2) >= ui->rawUnwindCodesEnd)
-	{
-	  fprintf (file, _("warning: corrupt unwind data\n"));
-	  return;
-	}
-
       fprintf (file, "\tv2 epilog (length: %02x) at pc+:",
 	       ui->rawUnwindCodes[0]);
 
@@ -215,17 +206,11 @@ pex64_xdata_print_uwd_codes (FILE *file,
       fputc ('\n', file);
     }
 
-  if (ui->rawUnwindCodes + 2 + (ui->CountOfCodes * 2) >= ui->rawUnwindCodesEnd)
-    {
-      fprintf (file, _("warning: corrupt unwind data\n"));
-      return;
-    }
-
   for (; i < ui->CountOfCodes; i++)
     {
       const bfd_byte *dta = ui->rawUnwindCodes + 2 * i;
       unsigned int info = PEX64_UNWCODE_INFO (dta[1]);
-      int unexpected = FALSE;
+      int unexpected = false;
 
       fprintf (file, "\t  pc+0x%02x: ", (unsigned int) dta[0]);
 
@@ -238,7 +223,7 @@ pex64_xdata_print_uwd_codes (FILE *file,
 	case UWOP_ALLOC_LARGE:
 	  if (info == 0)
 	    {
-	      if (dta + 4 > ui->rawUnwindCodesEnd)
+	      if (ui->rawUnwindCodesEnd - dta < 4)
 		{
 		  fprintf (file, _("warning: corrupt unwind data\n"));
 		  return;
@@ -248,7 +233,7 @@ pex64_xdata_print_uwd_codes (FILE *file,
 	    }
 	  else
 	    {
-	      if (dta + 6 > ui->rawUnwindCodesEnd)
+	      if (ui->rawUnwindCodesEnd - dta < 6)
 		{
 		  fprintf (file, _("warning: corrupt unwind data\n"));
 		  return;
@@ -269,11 +254,11 @@ pex64_xdata_print_uwd_codes (FILE *file,
 		   pex_regs[ui->FrameRegister],
 		   (unsigned int) ui->FrameOffset * 16, info);
 	  unexpected = ui->FrameRegister == 0;
-	  save_allowed = FALSE;
+	  save_allowed = false;
 	  break;
 
 	case UWOP_SAVE_NONVOL:
-	  if (dta + 4 > ui->rawUnwindCodesEnd)
+	  if (ui->rawUnwindCodesEnd - dta < 4)
 	    {
 	      fprintf (file, _("warning: corrupt unwind data\n"));
 	      return;
@@ -285,7 +270,7 @@ pex64_xdata_print_uwd_codes (FILE *file,
 	  break;
 
 	case UWOP_SAVE_NONVOL_FAR:
-	  if (dta + 6 > ui->rawUnwindCodesEnd)
+	  if (ui->rawUnwindCodesEnd - dta < 6)
 	    {
 	      fprintf (file, _("warning: corrupt unwind data\n"));
 	      return;
@@ -299,7 +284,7 @@ pex64_xdata_print_uwd_codes (FILE *file,
 	case UWOP_SAVE_XMM:
 	  if (ui->Version == 1)
 	    {
-	      if (dta + 4 > ui->rawUnwindCodesEnd)
+	      if (ui->rawUnwindCodesEnd - dta < 4)
 		{
 		  fprintf (file, _("warning: corrupt unwind data\n"));
 		  return;
@@ -312,12 +297,12 @@ pex64_xdata_print_uwd_codes (FILE *file,
 	  else if (ui->Version == 2)
 	    {
 	      fprintf (file, "epilog %02x %01x", dta[0], info);
-	      unexpected = TRUE;
+	      unexpected = true;
 	    }
 	  break;
 
 	case UWOP_SAVE_XMM_FAR:
-	  if (dta + 6 > ui->rawUnwindCodesEnd)
+	  if (ui->rawUnwindCodesEnd - dta < 6)
 	    {
 	      fprintf (file, _("warning: corrupt unwind data\n"));
 	      return;
@@ -329,7 +314,7 @@ pex64_xdata_print_uwd_codes (FILE *file,
 	  break;
 
 	case UWOP_SAVE_XMM128:
-	  if (dta + 4 > ui->rawUnwindCodesEnd)
+	  if (ui->rawUnwindCodesEnd - dta < 4)
 	    {
 	      fprintf (file, _("warning: corrupt unwind data\n"));
 	      return;
@@ -341,7 +326,7 @@ pex64_xdata_print_uwd_codes (FILE *file,
 	  break;
 
 	case UWOP_SAVE_XMM128_FAR:
-	  if (dta + 6 > ui->rawUnwindCodesEnd)
+	  if (ui->rawUnwindCodesEnd - dta < 6)
 	    {
 	      fprintf (file, _("warning: corrupt unwind data\n"));
 	      return;
@@ -498,19 +483,14 @@ pex64_dump_xdata (FILE *file, bfd *abfd,
     case UNW_FLAG_EHANDLER:
     case UNW_FLAG_UHANDLER:
     case UNW_FLAG_FHANDLER:
-      fprintf (file, "\tHandler: ");
-      fprintf_vma (file, (ui.rva_ExceptionHandler
-			  + pe_data (abfd)->pe_opthdr.ImageBase));
-      fprintf (file, ".\n");
+      fprintf (file, "\tHandler: %016" PRIx64 ".\n",
+	       ui.rva_ExceptionHandler + pe_data (abfd)->pe_opthdr.ImageBase);
       break;
     case UNW_FLAG_CHAININFO:
-      fprintf (file, "\tChain: start: ");
-      fprintf_vma (file, ui.rva_BeginAddress);
-      fprintf (file, ", end: ");
-      fprintf_vma (file, ui.rva_EndAddress);
-      fprintf (file, "\n\t unwind data: ");
-      fprintf_vma (file, ui.rva_UnwindData);
-      fprintf (file, ".\n");
+      fprintf (file, "\tChain: start: %016" PRIx64 ", end: %016" PRIx64,
+	       ui.rva_BeginAddress, ui.rva_EndAddress);
+      fprintf (file, "\n\t unwind data: %016" PRIx64 ".\n",
+	       ui.rva_UnwindData);
       break;
     }
 
@@ -549,7 +529,7 @@ sort_xdata_arr (const void *l, const voi
 
 /* Display unwind tables for x86-64.  */
 
-static bfd_boolean
+static bool
 pex64_bfd_print_pdata_section (bfd *abfd, void *vfile, asection *pdata_section)
 {
   FILE *file = (FILE *) vfile;
@@ -567,13 +547,14 @@ pex64_bfd_print_pdata_section (bfd *abfd
   int seen_error = 0;
   bfd_vma *xdata_arr = NULL;
   int xdata_arr_cnt;
-  bfd_boolean virt_size_is_zero = FALSE;
+  bool virt_size_is_zero = false;
 
   /* Sanity checks.  */
   if (pdata_section == NULL
+      || (pdata_section->flags & SEC_HAS_CONTENTS) == 0
       || coff_section_data (abfd, pdata_section) == NULL
       || pei_section_data (abfd, pdata_section) == NULL)
-    return TRUE;
+    return true;
 
   stop = pei_section_data (abfd, pdata_section)->virt_size;
   if ((stop % onaline) != 0)
@@ -588,14 +569,14 @@ pex64_bfd_print_pdata_section (bfd *abfd
       if (stop)
 	fprintf (file, _("Warning: %s section size is zero\n"),
 		 pdata_section->name);
-      return TRUE;
+      return true;
     }
 
   /* virt_size might be zero for objects.  */
   if (stop == 0 && strcmp (abfd->xvec->name, "pe-x86-64") == 0)
     {
       stop = datasize;
-      virt_size_is_zero = TRUE;
+      virt_size_is_zero = true;
     }
   else if (datasize < stop)
       {
@@ -640,15 +621,10 @@ pex64_bfd_print_pdata_section (bfd *abfd
 	  && rf.rva_UnwindData == 0)
 	/* We are probably into the padding of the section now.  */
 	break;
-      fputc (' ', file);
-      fprintf_vma (file, i + pdata_section->vma);
-      fprintf (file, ":\t");
-      fprintf_vma (file, imagebase + rf.rva_BeginAddress);
-      fprintf (file, " ");
-      fprintf_vma (file, imagebase + rf.rva_EndAddress);
-      fprintf (file, " ");
-      fprintf_vma (file, imagebase + rf.rva_UnwindData);
-      fprintf (file, "\n");
+      fprintf (file, " %016" PRIx64, i + pdata_section->vma);
+      fprintf (file, ":\t%016" PRIx64, imagebase + rf.rva_BeginAddress);
+      fprintf (file, " %016" PRIx64, imagebase + rf.rva_EndAddress);
+      fprintf (file, " %016" PRIx64 "\n", imagebase + rf.rva_UnwindData);
       if (i != 0 && rf.rva_BeginAddress <= prev_beginaddress)
 	{
 	  seen_error = 1;
@@ -720,6 +696,7 @@ pex64_bfd_print_pdata_section (bfd *abfd
     xdata_section = pex64_get_section_by_rva (abfd, xdata_base, ".text");
   /* Transfer xdata section into xdata array.  */
   if (!xdata_section
+      || (xdata_section->flags & SEC_HAS_CONTENTS) == 0
       || !bfd_malloc_and_get_section (abfd, xdata_section, &xdata))
     goto done;
 
@@ -744,26 +721,22 @@ pex64_bfd_print_pdata_section (bfd *abfd
       if (i == 0)
 	fprintf (file, _("\nDump of %s\n"), xdata_section->name);
 
-      fputc (' ', file);
-      fprintf_vma (file, rf.rva_UnwindData + imagebase);
+      fprintf (file, " %016" PRIx64, rf.rva_UnwindData + imagebase);
 
       if (prev_unwinddata_rva == rf.rva_UnwindData)
 	{
 	  /* Do not dump again the xdata for the same entry.  */
-	  fprintf (file, " also used for function at ");
-	  fprintf_vma (file, rf.rva_BeginAddress + imagebase);
-	  fputc ('\n', file);
+	  fprintf (file, " also used for function at %016" PRIx64 "\n",
+		   rf.rva_BeginAddress + imagebase);
 	  continue;
 	}
       else
 	prev_unwinddata_rva = rf.rva_UnwindData;
 
-      fprintf (file, " (rva: %08x): ",
-	       (unsigned int) rf.rva_UnwindData);
-      fprintf_vma (file, rf.rva_BeginAddress + imagebase);
-      fprintf (file, " - ");
-      fprintf_vma (file, rf.rva_EndAddress + imagebase);
-      fputc ('\n', file);
+      fprintf (file, " (rva: %08x): %016" PRIx64 " - %016" PRIx64 "\n",
+	       (unsigned int) rf.rva_UnwindData,
+	       rf.rva_BeginAddress + imagebase,
+	       rf.rva_EndAddress + imagebase);
 
       if (rf.rva_UnwindData != 0 || virt_size_is_zero)
 	{
@@ -781,8 +754,8 @@ pex64_bfd_print_pdata_section (bfd *abfd
 		{
 		  pex64_get_runtime_function
 		    (abfd, &arf, &pdata[altent - pdata_vma]);
-		  fprintf (file, "pdata element at 0x");
-		  fprintf_vma (file, arf.rva_UnwindData);
+		  fprintf (file, "pdata element at 0x%016" PRIx64,
+			   arf.rva_UnwindData);
 		}
 	      else
 		fprintf (file, "unknown pdata element");
@@ -817,37 +790,44 @@ pex64_bfd_print_pdata_section (bfd *abfd
   free (xdata_arr);
   free (xdata);
 
-  return TRUE;
+  return true;
 }
 
-/* Static counter of number of found pdata sections.  */
-static bfd_boolean pdata_count;
+struct pex64_paps
+{
+  void *obj;
+  /* Number of found pdata sections.  */
+  unsigned int pdata_count;
+};
 
 /* Functionn prototype.  */
-bfd_boolean pex64_bfd_print_pdata (bfd *, void *);
+bool pex64_bfd_print_pdata (bfd *, void *);
 
 /* Helper function for bfd_map_over_section.  */
 static void
-pex64_print_all_pdata_sections (bfd *abfd, asection *pdata, void *obj)
+pex64_print_all_pdata_sections (bfd *abfd, asection *pdata, void *arg)
 {
-  if (CONST_STRNEQ (pdata->name, ".pdata"))
+  struct pex64_paps *paps = arg;
+  if (startswith (pdata->name, ".pdata"))
     {
-      if (pex64_bfd_print_pdata_section (abfd, obj, pdata))
-	pdata_count++;
+      if (pex64_bfd_print_pdata_section (abfd, paps->obj, pdata))
+	paps->pdata_count++;
     }
 }
 
-bfd_boolean
+bool
 pex64_bfd_print_pdata (bfd *abfd, void *vfile)
 {
   asection *pdata_section = bfd_get_section_by_name (abfd, ".pdata");
+  struct pex64_paps paps;
 
   if (pdata_section)
     return pex64_bfd_print_pdata_section (abfd, vfile, pdata_section);
 
-  pdata_count = 0;
-  bfd_map_over_sections (abfd, pex64_print_all_pdata_sections, vfile);
-  return (pdata_count > 0);
+  paps.obj = vfile;
+  paps.pdata_count = 0;
+  bfd_map_over_sections (abfd, pex64_print_all_pdata_sections, &paps);
+  return paps.pdata_count != 0;
 }
 
 #define bfd_pe_print_pdata   pex64_bfd_print_pdata
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-mcore.c ./bfd/pe-mcore.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-mcore.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pe-mcore.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for MCore PECOFF files.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -29,7 +29,7 @@
 #endif
 
 #define COFF_WITH_PE
-#define PCRELOFFSET	     TRUE
+#define PCRELOFFSET		true
 #define COFF_LONG_SECTION_NAMES
 
 #define MCORE_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.20200303/bfd/pe-ppc.c ./bfd/pe-ppc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-ppc.c	2020-03-03 02:08:51.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.20200303/bfd/pe-sh.c ./bfd/pe-sh.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-sh.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pe-sh.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for SH PECOFF files.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -24,7 +24,7 @@
 #define TARGET_SHL_SYM sh_pe_le_vec
 #define TARGET_SHL_NAME "pe-shl"
 #define COFF_WITH_PE
-#define PCRELOFFSET TRUE
+#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.20200303/bfd/pe-x86_64.c ./bfd/pe-x86_64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/pe-x86_64.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/pe-x86_64.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -22,13 +22,21 @@
 
 #include "sysdep.h"
 #include "bfd.h"
+#include "libbfd.h"
+#include "libiberty.h"
+#include "coff/x86_64.h"
+#include "coff/internal.h"
+#include "coff/pe.h"
+#include "libcoff.h"
 
 #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
-#define PCRELOFFSET		TRUE
+#define PCRELOFFSET		true
 #if defined (USE_MINGW64_LEADING_UNDERSCORES)
 #define TARGET_UNDERSCORE	'_'
 #else
@@ -49,6 +57,8 @@
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
+{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \
+  COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \
   COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \
 { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \
@@ -60,73 +70,37 @@
 
 /* The function pex64_bfd_print_pdata is implemented in pei-x86_64.c
    source, but has be extended to also handle pe objects.  */
-extern bfd_boolean pex64_bfd_print_pdata (bfd *, void *);
+extern bool pex64_bfd_print_pdata (bfd *, void *);
 
 #define bfd_pe_print_pdata   pex64_bfd_print_pdata
 
-#include "coff-x86_64.c"
-
-/* Entry for big object files.  */
-
-const bfd_target
-x86_64_pe_be_vec =
+static bool
+pex64_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
-  "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),
+  if (bfd_link_pde (info)
+      && bfd_get_flavour (info->output_bfd) == bfd_target_elf_flavour)
+    {
+      /* NB: When linking Windows x86-64 relocatable object files to
+	 generate ELF executable, create an indirect reference to
+	 __executable_start for __ImageBase to support R_AMD64_IMAGEBASE
+	 relocation which is relative to __ImageBase.  */
+      struct bfd_link_hash_entry *h, *hi;
+      hi = bfd_link_hash_lookup (info->hash, "__ImageBase", true, false,
+				 false);
+      if (hi->type == bfd_link_hash_new
+	  || hi->type == bfd_link_hash_undefined
+	  || hi->type == bfd_link_hash_undefweak)
+	{
+	  h = bfd_link_hash_lookup (info->hash, "__executable_start",
+				    true, false, true);
+	  hi->type = bfd_link_hash_indirect;
+	  hi->u.i.link = h;
+	}
+    }
+
+  return _bfd_coff_link_add_symbols (abfd, info);
+}
 
-  NULL,
+#define coff_bfd_link_add_symbols pex64_link_add_symbols
 
-  &bigobj_swap_table
-};
+#include "coff-x86_64.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.20200303/bfd/peXXigen.c ./bfd/peXXigen.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/peXXigen.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/peXXigen.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Solutions.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -60,7 +60,8 @@
    on this code has a chance of getting something accomplished without
    wasting too much time.  */
 
-/* This expands into COFF_WITH_pe, COFF_WITH_pep, or COFF_WITH_pex64
+/* This expands into COFF_WITH_pe, COFF_WITH_pep, COFF_WITH_pex64,
+   COFF_WITH_peAArch64 or COFF_WITH_peLoongArch64 or COFF_WITH_peRiscV64
    depending on whether we're compiling for straight PE or PE+.  */
 #define COFF_WITH_XX
 
@@ -70,12 +71,8 @@
 #include "coff/internal.h"
 #include "bfdver.h"
 #include "libiberty.h"
-#ifdef HAVE_WCHAR_H
 #include <wchar.h>
-#endif
-#ifdef HAVE_WCTYPE_H
 #include <wctype.h>
-#endif
 
 /* NOTE: it's strange to be including an architecture specific header
    in what's supposed to be general (to PE/PEI) code.  However, that's
@@ -87,6 +84,12 @@
 # include "coff/x86_64.h"
 #elif defined COFF_WITH_pep
 # include "coff/ia64.h"
+#elif defined COFF_WITH_peAArch64
+# include "coff/aarch64.h"
+#elif defined COFF_WITH_peLoongArch64
+# include "coff/loongarch64.h"
+#elif defined COFF_WITH_peRiscV64
+# include "coff/riscv64.h"
 #else
 # include "coff/i386.h"
 #endif
@@ -96,7 +99,7 @@
 #include "libpei.h"
 #include "safe-ctype.h"
 
-#if defined COFF_WITH_pep || defined COFF_WITH_pex64
+#if defined COFF_WITH_pep || defined COFF_WITH_pex64 || defined COFF_WITH_peAArch64 || defined COFF_WITH_peLoongArch64 || defined COFF_WITH_peRiscV64
 # undef AOUTSZ
 # define AOUTSZ		PEPAOUTSZ
 # define PEAOUTHDR	PEPAOUTHDR
@@ -105,12 +108,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 +174,26 @@ _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);
+	  flags = (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_DATA | SEC_LOAD
+		   | SEC_LINKER_CREATED);
+	  sec = bfd_make_section_anyway_with_flags (abfd, sec_name, flags);
 	  if (sec == NULL)
 	    {
 	      _bfd_error_handler (_("%pB: unable to create fake empty section"),
@@ -203,18 +201,7 @@ _bfd_XXi_swap_sym_in (bfd * abfd, void *
 	      return;
 	    }
 
-	  sec->vma = 0;
-	  sec->lma = 0;
-	  sec->size = 0;
-	  sec->filepos = 0;
-	  sec->rel_filepos = 0;
-	  sec->reloc_count = 0;
-	  sec->line_filepos = 0;
-	  sec->lineno_count = 0;
-	  sec->userdata = NULL;
-	  sec->next = NULL;
 	  sec->alignment_power = 2;
-
 	  sec->target_index = unused_section_number;
 
 	  in->n_scnum = unused_section_number;
@@ -222,15 +209,9 @@ _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
+static bool
 abs_finder (bfd * abfd ATTRIBUTE_UNUSED, asection * sec, void * data)
 {
   bfd_vma abs_val = * (bfd_vma *) data;
@@ -308,17 +289,20 @@ _bfd_XXi_swap_aux_in (bfd *	abfd,
 
   /* PR 17521: Make sure that all fields in the aux structure
      are initialised.  */
-  memset (in, 0, sizeof * in);
+  memset (in, 0, sizeof (*in));
   switch (in_class)
     {
     case C_FILE:
       if (ext->x_file.x_fname[0] == 0)
 	{
-	  in->x_file.x_n.x_zeroes = 0;
-	  in->x_file.x_n.x_offset = H_GET_32 (abfd, ext->x_file.x_n.x_offset);
+	  in->x_file.x_n.x_n.x_zeroes = 0;
+	  in->x_file.x_n.x_n.x_offset = H_GET_32 (abfd, ext->x_file.x_n.x_offset);
 	}
       else
-	memcpy (in->x_file.x_fname, ext->x_file.x_fname, FILNMLEN);
+#if FILNMLEN != E_FILNMLEN
+#error we need to cope with truncating or extending x_fname
+#endif
+	memcpy (in->x_file.x_n.x_fname, ext->x_file.x_fname, FILNMLEN);
       return;
 
     case C_STAT:
@@ -337,14 +321,14 @@ _bfd_XXi_swap_aux_in (bfd *	abfd,
       break;
     }
 
-  in->x_sym.x_tagndx.l = H_GET_32 (abfd, ext->x_sym.x_tagndx);
+  in->x_sym.x_tagndx.u32 = H_GET_32 (abfd, ext->x_sym.x_tagndx);
   in->x_sym.x_tvndx = H_GET_16 (abfd, ext->x_sym.x_tvndx);
 
   if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
       || ISTAG (in_class))
     {
       in->x_sym.x_fcnary.x_fcn.x_lnnoptr = GET_FCN_LNNOPTR (abfd, ext);
-      in->x_sym.x_fcnary.x_fcn.x_endndx.l = GET_FCN_ENDNDX (abfd, ext);
+      in->x_sym.x_fcnary.x_fcn.x_endndx.u32 = GET_FCN_ENDNDX (abfd, ext);
     }
   else
     {
@@ -386,13 +370,16 @@ _bfd_XXi_swap_aux_out (bfd *  abfd,
   switch (in_class)
     {
     case C_FILE:
-      if (in->x_file.x_fname[0] == 0)
+      if (in->x_file.x_n.x_fname[0] == 0)
 	{
 	  H_PUT_32 (abfd, 0, ext->x_file.x_n.x_zeroes);
-	  H_PUT_32 (abfd, in->x_file.x_n.x_offset, ext->x_file.x_n.x_offset);
+	  H_PUT_32 (abfd, in->x_file.x_n.x_n.x_offset, ext->x_file.x_n.x_offset);
 	}
       else
-	memcpy (ext->x_file.x_fname, in->x_file.x_fname, FILNMLEN);
+#if FILNMLEN != E_FILNMLEN
+#error we need to cope with truncating or extending x_fname
+#endif
+	memcpy (ext->x_file.x_fname, in->x_file.x_n.x_fname, E_FILNMLEN);
 
       return AUXESZ;
 
@@ -412,14 +399,14 @@ _bfd_XXi_swap_aux_out (bfd *  abfd,
       break;
     }
 
-  H_PUT_32 (abfd, in->x_sym.x_tagndx.l, ext->x_sym.x_tagndx);
+  H_PUT_32 (abfd, in->x_sym.x_tagndx.u32, ext->x_sym.x_tagndx);
   H_PUT_16 (abfd, in->x_sym.x_tvndx, ext->x_sym.x_tvndx);
 
   if (in_class == C_BLOCK || in_class == C_FCN || ISFCN (type)
       || ISTAG (in_class))
     {
       PUT_FCN_LNNOPTR (abfd, in->x_sym.x_fcnary.x_fcn.x_lnnoptr,  ext);
-      PUT_FCN_ENDNDX  (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.l, ext);
+      PUT_FCN_ENDNDX  (abfd, in->x_sym.x_fcnary.x_fcn.x_endndx.u32, ext);
     }
   else
     {
@@ -485,7 +472,7 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
   aouthdr_int->text_start =
     GET_AOUTHDR_TEXT_START (abfd, aouthdr_ext->text_start);
 
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
   /* PE32+ does not have data_start member!  */
   aouthdr_int->data_start =
     GET_AOUTHDR_DATA_START (abfd, aouthdr_ext->data_start);
@@ -511,7 +498,7 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
   a->MinorImageVersion = H_GET_16 (abfd, src->MinorImageVersion);
   a->MajorSubsystemVersion = H_GET_16 (abfd, src->MajorSubsystemVersion);
   a->MinorSubsystemVersion = H_GET_16 (abfd, src->MinorSubsystemVersion);
-  a->Reserved1 = H_GET_32 (abfd, src->Reserved1);
+  a->Win32Version = H_GET_32 (abfd, src->Win32Version);
   a->SizeOfImage = H_GET_32 (abfd, src->SizeOfImage);
   a->SizeOfHeaders = H_GET_32 (abfd, src->SizeOfHeaders);
   a->CheckSum = H_GET_32 (abfd, src->CheckSum);
@@ -528,50 +515,31 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
   a->LoaderFlags = H_GET_32 (abfd, src->LoaderFlags);
   a->NumberOfRvaAndSizes = H_GET_32 (abfd, src->NumberOfRvaAndSizes);
 
-  {
-    unsigned idx;
-
-    /* PR 17512: Corrupt PE binaries can cause seg-faults.  */
-    if (a->NumberOfRvaAndSizes > IMAGE_NUMBEROF_DIRECTORY_ENTRIES)
-      {
-	/* xgettext:c-format */
-	_bfd_error_handler
-	  (_("%pB: aout header specifies an invalid number of"
-	     " data-directory entries: %u"), abfd, a->NumberOfRvaAndSizes);
-	bfd_set_error (bfd_error_bad_value);
-
-	/* Paranoia: If the number is corrupt, then assume that the
-	   actual entries themselves might be corrupt as well.  */
-	a->NumberOfRvaAndSizes = 0;
-      }
+  /* PR 17512: Don't blindly trust NumberOfRvaAndSizes.  */
+  unsigned idx;
+  for (idx = 0;
+       idx < a->NumberOfRvaAndSizes && idx < IMAGE_NUMBEROF_DIRECTORY_ENTRIES;
+       idx++)
+    {
+      /* If data directory is empty, rva also should be 0.  */
+      int size = H_GET_32 (abfd, src->DataDirectory[idx][1]);
+      int vma = size ? H_GET_32 (abfd, src->DataDirectory[idx][0]) : 0;
 
-    for (idx = 0; idx < a->NumberOfRvaAndSizes; idx++)
-      {
-	/* If data directory is empty, rva also should be 0.  */
-	int size =
-	  H_GET_32 (abfd, src->DataDirectory[idx][1]);
-
-	a->DataDirectory[idx].Size = size;
-
-	if (size)
-	  a->DataDirectory[idx].VirtualAddress =
-	    H_GET_32 (abfd, src->DataDirectory[idx][0]);
-	else
-	  a->DataDirectory[idx].VirtualAddress = 0;
-      }
+      a->DataDirectory[idx].Size = size;
+      a->DataDirectory[idx].VirtualAddress = vma;
+    }
 
-    while (idx < IMAGE_NUMBEROF_DIRECTORY_ENTRIES)
-      {
-	a->DataDirectory[idx].Size = 0;
-	a->DataDirectory[idx].VirtualAddress = 0;
-	idx ++;
-      }
-  }
+  while (idx < IMAGE_NUMBEROF_DIRECTORY_ENTRIES)
+    {
+      a->DataDirectory[idx].Size = 0;
+      a->DataDirectory[idx].VirtualAddress = 0;
+      idx++;
+    }
 
   if (aouthdr_int->entry)
     {
       aouthdr_int->entry += a->ImageBase;
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
       aouthdr_int->entry &= 0xffffffff;
 #endif
     }
@@ -579,12 +547,12 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd,
   if (aouthdr_int->tsize)
     {
       aouthdr_int->text_start += a->ImageBase;
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
       aouthdr_int->text_start &= 0xffffffff;
 #endif
     }
 
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
   /* PE32+ does not have data_start member!  */
   if (aouthdr_int->dsize)
     {
@@ -592,15 +560,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.  */
@@ -640,7 +599,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
   struct internal_extra_pe_aouthdr *extra = &pe->pe_opthdr;
   PEAOUTHDR *aouthdr_out = (PEAOUTHDR *) out;
   bfd_vma sa, fa, ib;
-  IMAGE_DATA_DIRECTORY idata2, idata5, tls;
+  IMAGE_DATA_DIRECTORY idata2, idata5, didat2, tls, loadcfg;
 
   sa = extra->SectionAlignment;
   fa = extra->FileAlignment;
@@ -648,12 +607,14 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
 
   idata2 = pe->pe_opthdr.DataDirectory[PE_IMPORT_TABLE];
   idata5 = pe->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE];
+  didat2 = pe->pe_opthdr.DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR];
   tls = pe->pe_opthdr.DataDirectory[PE_TLS_TABLE];
+  loadcfg = pe->pe_opthdr.DataDirectory[PE_LOAD_CONFIG_TABLE];
 
   if (aouthdr_in->tsize)
     {
       aouthdr_in->text_start -= ib;
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
       aouthdr_in->text_start &= 0xffffffff;
 #endif
     }
@@ -661,7 +622,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
   if (aouthdr_in->dsize)
     {
       aouthdr_in->data_start -= ib;
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
       aouthdr_in->data_start &= 0xffffffff;
 #endif
     }
@@ -669,7 +630,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
   if (aouthdr_in->entry)
     {
       aouthdr_in->entry -= ib;
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
       aouthdr_in->entry &= 0xffffffff;
 #endif
     }
@@ -697,7 +658,9 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
      a final link is going to be performed, it can overwrite them.  */
   extra->DataDirectory[PE_IMPORT_TABLE]  = idata2;
   extra->DataDirectory[PE_IMPORT_ADDRESS_TABLE] = idata5;
+  extra->DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR] = didat2;
   extra->DataDirectory[PE_TLS_TABLE] = tls;
+  extra->DataDirectory[PE_LOAD_CONFIG_TABLE] = loadcfg;
 
   if (extra->DataDirectory[PE_IMPORT_TABLE].VirtualAddress == 0)
     /* Until other .idata fixes are made (pending patch), the entry for
@@ -746,8 +709,8 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
 	   for the image size.  */
 	if (coff_section_data (abfd, sec) != NULL
 	    && pei_section_data (abfd, sec) != NULL)
-	  isize = (sec->vma - extra->ImageBase
-		   + SA (FA (pei_section_data (abfd, sec)->virt_size)));
+	  isize = SA (sec->vma - extra->ImageBase
+		      + FA (pei_section_data (abfd, sec)->virt_size));
       }
 
     aouthdr_in->dsize = dsize;
@@ -758,13 +721,23 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
 
   H_PUT_16 (abfd, aouthdr_in->magic, aouthdr_out->standard.magic);
 
+  if (extra->MajorLinkerVersion || extra->MinorLinkerVersion)
+    {
+      H_PUT_8 (abfd, extra->MajorLinkerVersion,
+	       aouthdr_out->standard.vstamp);
+      H_PUT_8 (abfd, extra->MinorLinkerVersion,
+	       aouthdr_out->standard.vstamp + 1);
+    }
+  else
+    {
 /* e.g. 219510000 is linker version 2.19  */
 #define LINKER_VERSION ((short) (BFD_VERSION / 1000000))
 
-  /* This piece of magic sets the "linker version" field to
-     LINKER_VERSION.  */
-  H_PUT_16 (abfd, (LINKER_VERSION / 100 + (LINKER_VERSION % 100) * 256),
-	    aouthdr_out->standard.vstamp);
+      /* This piece of magic sets the "linker version" field to
+	 LINKER_VERSION.  */
+      H_PUT_16 (abfd, (LINKER_VERSION / 100 + (LINKER_VERSION % 100) * 256),
+		aouthdr_out->standard.vstamp);
+    }
 
   PUT_AOUTHDR_TSIZE (abfd, aouthdr_in->tsize, aouthdr_out->standard.tsize);
   PUT_AOUTHDR_DSIZE (abfd, aouthdr_in->dsize, aouthdr_out->standard.dsize);
@@ -773,7 +746,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
   PUT_AOUTHDR_TEXT_START (abfd, aouthdr_in->text_start,
 			  aouthdr_out->standard.text_start);
 
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
   /* PE32+ does not have data_start member!  */
   PUT_AOUTHDR_DATA_START (abfd, aouthdr_in->data_start,
 			  aouthdr_out->standard.data_start);
@@ -792,7 +765,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v
 	    aouthdr_out->MajorSubsystemVersion);
   H_PUT_16 (abfd, extra->MinorSubsystemVersion,
 	    aouthdr_out->MinorSubsystemVersion);
-  H_PUT_32 (abfd, extra->Reserved1, aouthdr_out->Reserved1);
+  H_PUT_32 (abfd, extra->Win32Version, aouthdr_out->Win32Version);
   H_PUT_32 (abfd, extra->SizeOfImage, aouthdr_out->SizeOfImage);
   H_PUT_32 (abfd, extra->SizeOfHeaders, aouthdr_out->SizeOfHeaders);
   H_PUT_32 (abfd, extra->CheckSum, aouthdr_out->CheckSum);
@@ -876,10 +849,13 @@ _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))
-    H_PUT_32 (abfd, time (0), filehdr_out->f_timdat);
+  if ((pe_data (abfd)->timestamp) == -1)
+    {
+      time_t now = bfd_get_current_time (0);
+      H_PUT_32 (abfd, now, 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);
@@ -916,9 +892,8 @@ _bfd_XXi_only_swap_filehdr_out (bfd * ab
 
   H_PUT_32 (abfd, filehdr_in->pe.e_lfanew, filehdr_out->e_lfanew);
 
-  for (idx = 0; idx < 16; idx++)
-    H_PUT_32 (abfd, filehdr_in->pe.dos_message[idx],
-	      filehdr_out->dos_message[idx]);
+  memcpy (filehdr_out->dos_message, filehdr_in->pe.dos_message,
+	  sizeof (filehdr_out->dos_message));
 
   /* Also put in the NT signature.  */
   H_PUT_32 (abfd, filehdr_in->pe.nt_signature, filehdr_out->nt_signature);
@@ -954,11 +929,18 @@ _bfd_XXi_swap_scnhdr_out (bfd * abfd, vo
 
   memcpy (scnhdr_ext->s_name, scnhdr_int->s_name, sizeof (scnhdr_int->s_name));
 
-  PUT_SCNHDR_VADDR (abfd,
-		    ((scnhdr_int->s_vaddr
-		      - pe_data (abfd)->pe_opthdr.ImageBase)
-		     & 0xffffffff),
-		    scnhdr_ext->s_vaddr);
+  ss = scnhdr_int->s_vaddr - pe_data (abfd)->pe_opthdr.ImageBase;
+  if (scnhdr_int->s_vaddr < pe_data (abfd)->pe_opthdr.ImageBase)
+    _bfd_error_handler (_("%pB:%.8s: section below image base"),
+                        abfd, scnhdr_int->s_name);
+  /* Do not compare lower 32-bits for 64-bit vma.  */
+#if !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
+  else if(ss != (ss & 0xffffffff))
+    _bfd_error_handler (_("%pB:%.8s: RVA truncated"), abfd, scnhdr_int->s_name);
+  PUT_SCNHDR_VADDR (abfd, ss & 0xffffffff, scnhdr_ext->s_vaddr);
+#else
+  PUT_SCNHDR_VADDR (abfd, ss, scnhdr_ext->s_vaddr);
+#endif
 
   /* NT wants the size data to be rounded up to the next
      NT_FILE_ALIGNMENT, but zero if it has no content (as in .bss,
@@ -1010,7 +992,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 ?  */
 
@@ -1023,15 +1005,17 @@ _bfd_XXi_swap_scnhdr_out (bfd * abfd, vo
 
     pe_required_section_flags known_sections [] =
       {
+	{ ".CRT",   IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA },
 	{ ".arch",  IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_DISCARDABLE | IMAGE_SCN_ALIGN_8BYTES },
 	{ ".bss",   IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_UNINITIALIZED_DATA | IMAGE_SCN_MEM_WRITE },
 	{ ".data",  IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE },
+	{ ".didat", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE },
 	{ ".edata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA },
-	{ ".idata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE },
+	{ ".idata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA },
 	{ ".pdata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA },
 	{ ".rdata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA },
 	{ ".reloc", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_DISCARDABLE },
-	{ ".rsrc",  IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE },
+	{ ".rsrc",  IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA },
 	{ ".text" , IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE },
 	{ ".tls",   IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE },
 	{ ".xdata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA },
@@ -1144,18 +1128,25 @@ _bfd_XXi_swap_debugdir_out (bfd * abfd,
 }
 
 CODEVIEW_INFO *
-_bfd_XXi_slurp_codeview_record (bfd * abfd, file_ptr where, unsigned long length, CODEVIEW_INFO *cvinfo)
+_bfd_XXi_slurp_codeview_record (bfd * abfd, file_ptr where, unsigned long length, CODEVIEW_INFO *cvinfo,
+				char **pdb)
 {
   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_read (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 +1167,10 @@ _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;  */
+
+      if (pdb)
+	*pdb = xstrdup (cvinfo70->PdbFileName);
 
       return cvinfo;
     }
@@ -1187,7 +1181,10 @@ _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;  */
+
+      if (pdb)
+	*pdb = xstrdup (cvinfo20->PdbFileName);
 
       return cvinfo;
     }
@@ -1196,9 +1193,11 @@ _bfd_XXi_slurp_codeview_record (bfd * ab
 }
 
 unsigned int
-_bfd_XXi_write_codeview_record (bfd * abfd, file_ptr where, CODEVIEW_INFO *cvinfo)
+_bfd_XXi_write_codeview_record (bfd * abfd, file_ptr where, CODEVIEW_INFO *cvinfo,
+				const char *pdb)
 {
-  const bfd_size_type size = sizeof (CV_INFO_PDB70) + 1;
+  size_t pdb_len = pdb ? strlen (pdb) : 0;
+  const bfd_size_type size = sizeof (CV_INFO_PDB70) + pdb_len + 1;
   bfd_size_type written;
   CV_INFO_PDB70 *cvinfo70;
   char * buffer;
@@ -1221,9 +1220,13 @@ _bfd_XXi_write_codeview_record (bfd * ab
   memcpy (&(cvinfo70->Signature[8]), &(cvinfo->Signature[8]), 8);
 
   H_PUT_32 (abfd, cvinfo->Age, cvinfo70->Age);
-  cvinfo70->PdbFileName[0] = '\0';
 
-  written = bfd_bwrite (buffer, size, abfd);
+  if (pdb == NULL)
+    cvinfo70->PdbFileName[0] = '\0';
+  else
+    memcpy (cvinfo70->PdbFileName, pdb, pdb_len + 1);
+
+  written = bfd_write (buffer, size, abfd);
 
   free (buffer);
 
@@ -1250,26 +1253,31 @@ 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 bool
+get_contents_sanity_check (bfd *abfd, asection *section,
+			   bfd_size_type dataoff, bfd_size_type datasize)
+{
+  if ((section->flags & SEC_HAS_CONTENTS) == 0)
+    return false;
+  if (dataoff > section->size
+      || datasize > section->size - dataoff)
+    return false;
+  ufile_ptr filesize = bfd_get_file_size (abfd);
+  if (filesize != 0
+      && ((ufile_ptr) section->filepos > filesize
+	  || dataoff > filesize - section->filepos
+	  || datasize > filesize - section->filepos - dataoff))
+    return false;
+  return true;
+}
 
-static bfd_boolean
+static bool
 pe_print_idata (bfd * abfd, void * vfile)
 {
   FILE *file = (FILE *) 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;
@@ -1286,13 +1294,13 @@ pe_print_idata (bfd * abfd, void * vfile
     {
       /* Maybe the extra header isn't there.  Look for the section.  */
       section = bfd_get_section_by_name (abfd, ".idata");
-      if (section == NULL)
-	return TRUE;
+      if (section == NULL || (section->flags & SEC_HAS_CONTENTS) == 0)
+	return true;
 
       addr = section->vma;
       datasize = section->size;
       if (datasize == 0)
-	return TRUE;
+	return true;
     }
   else
     {
@@ -1308,14 +1316,14 @@ pe_print_idata (bfd * abfd, void * vfile
 	{
 	  fprintf (file,
 		   _("\nThere is an import table, but the section containing it could not be found\n"));
-	  return TRUE;
+	  return true;
 	}
       else if (!(section->flags & SEC_HAS_CONTENTS))
 	{
 	  fprintf (file,
 		   _("\nThere is an import table in %s, but that section has no contents\n"),
 		   section->name);
-	  return TRUE;
+	  return true;
 	}
     }
 
@@ -1325,59 +1333,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,9 +1344,8 @@ 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);
-      return FALSE;
+      free (data);
+      return false;
     }
 
   adj = section->vma - extra->ImageBase;
@@ -1448,7 +1402,7 @@ pe_print_idata (bfd * abfd, void * vfile
 	  int ft_idx;
 	  int ft_allocated;
 
-	  fprintf (file, _("\tvma:  Hint/Ord Member-Name Bound-To\n"));
+	  fprintf (file, _("\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"));
 
 	  idx = hint_addr - adj;
 
@@ -1483,6 +1437,9 @@ pe_print_idata (bfd * abfd, void * vfile
 		{
 		  ft_idx = first_thunk - (ft_section->vma - extra->ImageBase);
 		  ft_datasize = ft_section->size - ft_idx;
+		  if (!get_contents_sanity_check (abfd, ft_section,
+						  ft_idx, ft_datasize))
+		    continue;
 		  ft_data = (bfd_byte *) bfd_malloc (ft_datasize);
 		  if (ft_data == NULL)
 		    continue;
@@ -1512,20 +1469,25 @@ pe_print_idata (bfd * abfd, void * vfile
 	      amt = member - adj;
 
 	      if (HighBitSet (member_high))
-		fprintf (file, "\t%lx%08lx\t %4lx%08lx  <none>",
-			 member_high, member,
-			 WithoutHighBit (member_high), member);
+	        {
+		  /* in low 16 bits is ordinal number, other bits are reserved */
+		  unsigned int ordinal = member & 0xffff;
+		  fprintf (file, "\t%08lx  %5u  <none> <none>",
+			   (unsigned long)(first_thunk + j), ordinal);
+	        }
 	      /* PR binutils/17512: Handle corrupt PE data.  */
 	      else if (amt >= datasize || amt + 2 >= datasize)
-		fprintf (file, _("\t<corrupt: 0x%04lx>"), member);
+		fprintf (file, _("\t<corrupt: 0x%08lx>"), member);
 	      else
 		{
-		  int ordinal;
+		  unsigned int hint;
 		  char *member_name;
 
-		  ordinal = bfd_get_16 (abfd, data + amt);
+		  /* First 16 bits is hint name index, rest is the name */
+		  hint = bfd_get_16 (abfd, data + amt);
 		  member_name = (char *) data + amt + 2;
-		  fprintf (file, "\t%04lx\t %4d  %.*s",member, ordinal,
+		  fprintf (file, "\t%08lx  <none>  %04x  %.*s",
+			   (unsigned long)(first_thunk + j), hint,
 			   (int) (datasize - (amt + 2)), member_name);
 		}
 
@@ -1535,8 +1497,9 @@ pe_print_idata (bfd * abfd, void * vfile
 		  && first_thunk != 0
 		  && first_thunk != hint_addr
 		  && j + 4 <= ft_datasize)
-		fprintf (file, "\t%04lx",
+		fprintf (file, "\t%08lx",
 			 (unsigned long) bfd_get_32 (abfd, ft_data + j));
+
 	      fprintf (file, "\n");
 	    }
 #else
@@ -1552,20 +1515,24 @@ pe_print_idata (bfd * abfd, void * vfile
 	      amt = member - adj;
 
 	      if (HighBitSet (member))
-		fprintf (file, "\t%04lx\t %4lu  <none>",
-			 member, WithoutHighBit (member));
+	        {
+		  /* in low 16 bits is ordinal number, other bits are reserved */
+		  unsigned int ordinal = member & 0xffff;
+		  fprintf (file, "\t%08lx  %5u  <none> <none>", (unsigned long)(first_thunk + j), ordinal);
+	        }
 	      /* PR binutils/17512: Handle corrupt PE data.  */
 	      else if (amt >= datasize || amt + 2 >= datasize)
-		fprintf (file, _("\t<corrupt: 0x%04lx>"), member);
+		fprintf (file, _("\t<corrupt: 0x%08lx>"), member);
 	      else
 		{
-		  int ordinal;
+		  unsigned int hint;
 		  char *member_name;
 
-		  ordinal = bfd_get_16 (abfd, data + amt);
+		  /* First 16 bits is hint name index, rest is the name */
+		  hint = bfd_get_16 (abfd, data + amt);
 		  member_name = (char *) data + amt + 2;
-		  fprintf (file, "\t%04lx\t %4d  %.*s",
-			   member, ordinal,
+		  fprintf (file, "\t%08lx  <none>  %04x  %.*s",
+			   (unsigned long)(first_thunk + j), hint,
 			   (int) (datasize - (amt + 2)), member_name);
 		}
 
@@ -1575,7 +1542,7 @@ pe_print_idata (bfd * abfd, void * vfile
 		  && first_thunk != 0
 		  && first_thunk != hint_addr
 		  && j + 4 <= ft_datasize)
-		fprintf (file, "\t%04lx",
+		fprintf (file, "\t%08lx",
 			 (unsigned long) bfd_get_32 (abfd, ft_data + j));
 
 	      fprintf (file, "\n");
@@ -1590,10 +1557,10 @@ pe_print_idata (bfd * abfd, void * vfile
 
   free (data);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 pe_print_edata (bfd * abfd, void * vfile)
 {
   FILE *file = (FILE *) vfile;
@@ -1630,13 +1597,13 @@ pe_print_edata (bfd * abfd, void * vfile
       /* Maybe the extra header isn't there.  Look for the section.  */
       section = bfd_get_section_by_name (abfd, ".edata");
       if (section == NULL)
-	return TRUE;
+	return true;
 
       addr = section->vma;
       dataoff = 0;
       datasize = section->size;
       if (datasize == 0)
-	return TRUE;
+	return true;
     }
   else
     {
@@ -1650,26 +1617,11 @@ pe_print_edata (bfd * abfd, void * vfile
 	{
 	  fprintf (file,
 		   _("\nThere is an export table, but the section containing it could not be found\n"));
-	  return TRUE;
-	}
-      else if (!(section->flags & SEC_HAS_CONTENTS))
-	{
-	  fprintf (file,
-		   _("\nThere is an export table in %s, but that section has no contents\n"),
-		   section->name);
-	  return TRUE;
+	  return true;
 	}
 
       dataoff = addr - section->vma;
       datasize = extra->DataDirectory[PE_EXPORT_TABLE].Size;
-      if (dataoff > section->size
-	  || datasize > section->size - dataoff)
-	{
-	  fprintf (file,
-		   _("\nThere is an export table in %s, but it does not fit into that section\n"),
-		   section->name);
-	  return TRUE;
-	}
     }
 
   /* PR 17512: Handle corrupt PE binaries.  */
@@ -1679,7 +1631,15 @@ pe_print_edata (bfd * abfd, void * vfile
 	       /* xgettext:c-format */
 	       _("\nThere is an export table in %s, but it is too small (%d)\n"),
 	       section->name, (int) datasize);
-      return TRUE;
+      return true;
+    }
+
+  if (!get_contents_sanity_check (abfd, section, dataoff, datasize))
+    {
+      fprintf (file,
+	       _("\nThere is an export table in %s, but contents cannot be read\n"),
+	       section->name);
+      return true;
     }
 
   /* xgettext:c-format */
@@ -1688,11 +1648,14 @@ pe_print_edata (bfd * abfd, void * vfile
 
   data = (bfd_byte *) bfd_malloc (datasize);
   if (data == NULL)
-    return FALSE;
+    return false;
 
   if (! bfd_get_section_contents (abfd, section, data,
 				  (file_ptr) dataoff, datasize))
-    return FALSE;
+    {
+      free (data);
+      return false;
+    }
 
   /* Go get Export Directory Table.  */
   edt.export_flags   = bfd_get_32 (abfd, data +	 0);
@@ -1778,6 +1741,7 @@ pe_print_edata (bfd * abfd, void * vfile
   fprintf (file,
 	  _("\nExport Address Table -- Ordinal Base %ld\n"),
 	  edt.base);
+  fprintf (file, "\t          Ordinal  Address  Type\n");
 
   /* PR 17512: Handle corrupt PE binaries.  */
   /* PR 17512 file: 140-165018-0.004.  */
@@ -1800,7 +1764,7 @@ pe_print_edata (bfd * abfd, void * vfile
 	  /* This rva is to a name (forwarding function) in our section.  */
 	  /* Should locate a function descriptor.  */
 	  fprintf (file,
-		   "\t[%4ld] +base[%4ld] %04lx %s -- %.*s\n",
+		   "\t[%4ld] +base[%4ld] %08lx %s -- %.*s\n",
 		   (long) i,
 		   (long) (i + edt.base),
 		   (unsigned long) eat_member,
@@ -1812,7 +1776,7 @@ pe_print_edata (bfd * abfd, void * vfile
 	{
 	  /* Should locate a function descriptor in the reldata section.  */
 	  fprintf (file,
-		   "\t[%4ld] +base[%4ld] %04lx %s\n",
+		   "\t[%4ld] +base[%4ld] %08lx %s\n",
 		   (long) i,
 		   (long) (i + edt.base),
 		   (unsigned long) eat_member,
@@ -1823,7 +1787,9 @@ pe_print_edata (bfd * abfd, void * vfile
   /* The Export Name Pointer Table is paired with the Export Ordinal Table.  */
   /* Dump them in parallel for clarity.  */
   fprintf (file,
-	   _("\n[Ordinal/Name Pointer] Table\n"));
+	   _("\n[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"),
+	  edt.base);
+  fprintf (file, "\t          Ordinal   Hint Name\n");
 
   /* PR 17512: Handle corrupt PE binaries.  */
   if (edt.npt_addr + (edt.num_names * 4) - adj >= datasize
@@ -1852,21 +1818,23 @@ pe_print_edata (bfd * abfd, void * vfile
       if ((name_ptr - adj) >= datasize)
 	{
 	  /* xgettext:c-format */
-	  fprintf (file, _("\t[%4ld] <corrupt offset: %lx>\n"),
-		   (long) ord, (long) name_ptr);
+	  fprintf (file, _("\t[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>\n"),
+		   (long) ord, (long) (ord + edt.base), (long) i, (long) name_ptr);
 	}
       else
 	{
 	  char * name = (char *) data + name_ptr - adj;
 
-	  fprintf (file, "\t[%4ld] %.*s\n", (long) ord,
+	  fprintf (file,
+		   "\t[%4ld] +base[%4ld]  %04lx %.*s\n",
+		   (long) ord, (long) (ord + edt.base), (long) i,
 		   (int)((char *)(data + datasize) - name), name);
 	}
     }
 
   free (data);
 
-  return TRUE;
+  return true;
 }
 
 /* This really is architecture dependent.  On IA-64, a .pdata entry
@@ -1881,10 +1849,10 @@ pe_print_edata (bfd * abfd, void * vfile
 
    This is the version for uncompressed data.  */
 
-static bfd_boolean
+static bool
 pe_print_pdata (bfd * abfd, void * vfile)
 {
-#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
 # define PDATA_ROW_SIZE	(3 * 8)
 #else
 # define PDATA_ROW_SIZE	(5 * 4)
@@ -1898,9 +1866,10 @@ pe_print_pdata (bfd * abfd, void * vfile
   int onaline = PDATA_ROW_SIZE;
 
   if (section == NULL
+      || (section->flags & SEC_HAS_CONTENTS) == 0
       || coff_section_data (abfd, section) == NULL
       || pei_section_data (abfd, section) == NULL)
-    return TRUE;
+    return true;
 
   stop = pei_section_data (abfd, section)->virt_size;
   if ((stop % onaline) != 0)
@@ -1911,7 +1880,7 @@ pe_print_pdata (bfd * abfd, void * vfile
 
   fprintf (file,
 	   _("\nThe Function Table (interpreted .pdata section contents)\n"));
-#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
   fprintf (file,
 	   _(" vma:\t\t\tBegin Address    End Address      Unwind Info\n"));
 #else
@@ -1922,7 +1891,7 @@ pe_print_pdata (bfd * abfd, void * vfile
 
   datasize = section->size;
   if (datasize == 0)
-    return TRUE;
+    return true;
 
   /* PR 17512: file: 002-193900-0.004.  */
   if (datasize < stop)
@@ -1930,14 +1899,13 @@ pe_print_pdata (bfd * abfd, void * vfile
       /* xgettext:c-format */
       fprintf (file, _("Virtual size of .pdata section (%ld) larger than real size (%ld)\n"),
 	       (long) stop, (long) datasize);
-      return FALSE;
+      return false;
     }
 
   if (! bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
-      return FALSE;
+      free (data);
+      return false;
     }
 
   start = 0;
@@ -1949,7 +1917,7 @@ pe_print_pdata (bfd * abfd, void * vfile
       bfd_vma eh_handler;
       bfd_vma eh_data;
       bfd_vma prolog_end_addr;
-#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) || defined(COFF_WITH_peLoongArch64) || defined (COFF_WITH_peRiscV64)
       int em_data;
 #endif
 
@@ -1967,7 +1935,7 @@ pe_print_pdata (bfd * abfd, void * vfile
 	/* We are probably into the padding of the section now.  */
 	break;
 
-#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) || defined(COFF_WITH_peLoongArch64) || defined (COFF_WITH_peRiscV64)
       em_data = ((eh_handler & 0x1) << 2) | (prolog_end_addr & 0x3);
 #endif
       eh_handler &= ~(bfd_vma) 0x3;
@@ -1978,45 +1946,18 @@ pe_print_pdata (bfd * abfd, void * vfile
       bfd_fprintf_vma (abfd, file, begin_addr); fputc (' ', file);
       bfd_fprintf_vma (abfd, file, end_addr); fputc (' ', file);
       bfd_fprintf_vma (abfd, file, eh_handler);
-#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) || defined(COFF_WITH_peLoongArch64) || defined (COFF_WITH_peRiscV64)
       fputc (' ', file);
       bfd_fprintf_vma (abfd, file, eh_data); fputc (' ', file);
       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");
     }
 
   free (data);
 
-  return TRUE;
+  return true;
 #undef PDATA_ROW_SIZE
 }
 
@@ -2081,7 +2022,7 @@ cleanup_syms (sym_cache *psc)
 
 /* This is the version for "compressed" pdata.  */
 
-bfd_boolean
+bool
 _bfd_XX_print_ce_compressed_pdata (bfd * abfd, void * vfile)
 {
 # define PDATA_ROW_SIZE	(2 * 4)
@@ -2095,9 +2036,10 @@ _bfd_XX_print_ce_compressed_pdata (bfd *
   struct sym_cache cache = {0, 0} ;
 
   if (section == NULL
+      || (section->flags & SEC_HAS_CONTENTS) == 0
       || coff_section_data (abfd, section) == NULL
       || pei_section_data (abfd, section) == NULL)
-    return TRUE;
+    return true;
 
   stop = pei_section_data (abfd, section)->virt_size;
   if ((stop % onaline) != 0)
@@ -2115,16 +2057,17 @@ _bfd_XX_print_ce_compressed_pdata (bfd *
 
   datasize = section->size;
   if (datasize == 0)
-    return TRUE;
+    return true;
 
   if (! bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
-      return FALSE;
+      free (data);
+      return false;
     }
 
   start = 0;
+  if (stop > datasize)
+    stop = datasize;
 
   for (i = start; i < stop; i += onaline)
     {
@@ -2196,7 +2139,7 @@ _bfd_XX_print_ce_compressed_pdata (bfd *
 
   cleanup_syms (& cache);
 
-  return TRUE;
+  return true;
 #undef PDATA_ROW_SIZE
 }
 
@@ -2219,7 +2162,7 @@ static const char * const tbl[] =
   "UNKNOWN",   /* MUST be last.  */
 };
 
-static bfd_boolean
+static bool
 pe_print_reloc (bfd * abfd, void * vfile)
 {
   FILE *file = (FILE *) vfile;
@@ -2227,17 +2170,18 @@ pe_print_reloc (bfd * abfd, void * vfile
   asection *section = bfd_get_section_by_name (abfd, ".reloc");
   bfd_byte *p, *end;
 
-  if (section == NULL || section->size == 0 || !(section->flags & SEC_HAS_CONTENTS))
-    return TRUE;
+  if (section == NULL
+      || section->size == 0
+      || (section->flags & SEC_HAS_CONTENTS) == 0)
+    return true;
 
   fprintf (file,
 	   _("\n\nPE File Base Relocations (interpreted .reloc section contents)\n"));
 
   if (! bfd_malloc_and_get_section (abfd, section, &data))
     {
-      if (data != NULL)
-	free (data);
-      return FALSE;
+      free (data);
+      return false;
     }
 
   p = data;
@@ -2300,7 +2244,7 @@ pe_print_reloc (bfd * abfd, void * vfile
 
   free (data);
 
-  return TRUE;
+  return true;
 }
 
 /* A data structure describing the regions of a .rsrc section.
@@ -2325,13 +2269,13 @@ rsrc_print_resource_directory (FILE * ,
    or section_end + 1 upon failure.  */
 
 static bfd_byte *
-rsrc_print_resource_entries (FILE *	    file,
-			     bfd *	    abfd,
-			     unsigned int   indent,
-			     bfd_boolean    is_name,
-			     bfd_byte *	    data,
-			     rsrc_regions * regions,
-			     bfd_vma	    rva_bias)
+rsrc_print_resource_entries (FILE *file,
+			     bfd *abfd,
+			     unsigned int indent,
+			     bool is_name,
+			     bfd_byte *data,
+			     rsrc_regions *regions,
+			     bfd_vma rva_bias)
 {
   unsigned long entry, addr, size;
   bfd_byte * leaf;
@@ -2487,7 +2431,7 @@ rsrc_print_resource_directory (FILE *
     {
       bfd_byte * entry_end;
 
-      entry_end = rsrc_print_resource_entries (file, abfd, indent + 1, TRUE,
+      entry_end = rsrc_print_resource_entries (file, abfd, indent + 1, true,
 					       data, regions, rva_bias);
       data += 8;
       highest_data = max (highest_data, entry_end);
@@ -2499,7 +2443,7 @@ rsrc_print_resource_directory (FILE *
     {
       bfd_byte * entry_end;
 
-      entry_end = rsrc_print_resource_entries (file, abfd, indent + 1, FALSE,
+      entry_end = rsrc_print_resource_entries (file, abfd, indent + 1, false,
 					       data, regions, rva_bias);
       data += 8;
       highest_data = max (highest_data, entry_end);
@@ -2514,7 +2458,7 @@ rsrc_print_resource_directory (FILE *
    reproduce the resources, windres does that.  Instead we dump
    the tables in a human readable format.  */
 
-static bfd_boolean
+static bool
 rsrc_print_section (bfd * abfd, void * vfile)
 {
   bfd_vma rva_bias;
@@ -2527,25 +2471,24 @@ rsrc_print_section (bfd * abfd, void * v
 
   pe = pe_data (abfd);
   if (pe == NULL)
-    return TRUE;
+    return true;
 
   section = bfd_get_section_by_name (abfd, ".rsrc");
   if (section == NULL)
-    return TRUE;
+    return true;
   if (!(section->flags & SEC_HAS_CONTENTS))
-    return TRUE;
+    return true;
 
   datasize = section->size;
   if (datasize == 0)
-    return TRUE;
+    return true;
 
   rva_bias = section->vma - pe->pe_opthdr.ImageBase;
 
   if (! bfd_malloc_and_get_section (abfd, section, & data))
     {
-      if (data != NULL)
-	free (data);
-      return FALSE;
+      free (data);
+      return false;
     }
 
   regions.section_start = data;
@@ -2600,10 +2543,10 @@ rsrc_print_section (bfd * abfd, void * v
 	     (int) (regions.resource_start - regions.section_start));
 
   free (regions.section_start);
-  return TRUE;
+  return true;
 }
 
-#define IMAGE_NUMBEROF_DEBUG_TYPES 12
+#define IMAGE_NUMBEROF_DEBUG_TYPES 17
 
 static char * debug_type_names[IMAGE_NUMBEROF_DEBUG_TYPES] =
 {
@@ -2619,9 +2562,14 @@ static char * debug_type_names[IMAGE_NUM
   "Borland",
   "Reserved",
   "CLSID",
+  "Feature",
+  "CoffGrp",
+  "ILTCG",
+  "MPX",
+  "Repro",
 };
 
-static bfd_boolean
+static bool
 pe_print_debugdata (bfd * abfd, void * vfile)
 {
   FILE *file = (FILE *) vfile;
@@ -2630,13 +2578,13 @@ 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;
 
   if (size == 0)
-    return TRUE;
+    return true;
 
   addr += extra->ImageBase;
   for (section = abfd->sections; section != NULL; section = section->next)
@@ -2649,21 +2597,21 @@ pe_print_debugdata (bfd * abfd, void * v
     {
       fprintf (file,
 	       _("\nThere is a debug directory, but the section containing it could not be found\n"));
-      return TRUE;
+      return true;
     }
   else if (!(section->flags & SEC_HAS_CONTENTS))
     {
       fprintf (file,
 	       _("\nThere is a debug directory in %s, but that section has no contents\n"),
 	       section->name);
-      return TRUE;
+      return true;
     }
   else if (section->size < size)
     {
       fprintf (file,
 	       _("\nError: section %s contains the debug data starting address but it is too small\n"),
 	       section->name);
-      return FALSE;
+      return false;
     }
 
   fprintf (file, _("\nThere is a debug directory in %s at 0x%lx\n\n"),
@@ -2674,7 +2622,7 @@ pe_print_debugdata (bfd * abfd, void * v
   if (size > (section->size - dataoff))
     {
       fprintf (file, _("The debug data size field in the data directory is too big for the section"));
-      return FALSE;
+      return false;
     }
 
   fprintf (file,
@@ -2683,9 +2631,8 @@ 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);
-      return FALSE;
+      free (data);
+      return false;
     }
 
   for (i = 0; i < size / sizeof (struct external_IMAGE_DEBUG_DIRECTORY); i++)
@@ -2713,35 +2660,104 @@ pe_print_debugdata (bfd * abfd, void * v
 	     We need to use a 32-bit aligned buffer
 	     to safely read in a codeview record.  */
 	  char buffer[256 + 1] ATTRIBUTE_ALIGNED_ALIGNOF (CODEVIEW_INFO);
+	  char *pdb;
 
 	  CODEVIEW_INFO *cvinfo = (CODEVIEW_INFO *) buffer;
 
 	  /* The debug entry doesn't have to have to be in a section,
 	     in which case AddressOfRawData is 0, so always use PointerToRawData.  */
 	  if (!_bfd_XXi_slurp_codeview_record (abfd, (file_ptr) idd.PointerToRawData,
-					       idd.SizeOfData, cvinfo))
+					       idd.SizeOfData, cvinfo, &pdb))
 	    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"),
+	  fprintf (file, _("(format %c%c%c%c signature %s age %ld pdb %s)\n"),
 		   buffer[0], buffer[1], buffer[2], buffer[3],
-		   signature, cvinfo->Age);
+		   signature, cvinfo->Age, pdb[0] ? pdb : "(none)");
+
+	  free (pdb);
 	}
     }
 
+  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"));
 
-  return TRUE;
+  return true;
+}
+
+static bool
+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;
+  bool 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
+bool
 _bfd_XX_print_private_bfd_data_common (bfd * abfd, void * vfile)
 {
   FILE *file = (FILE *) vfile;
@@ -2765,16 +2781,29 @@ _bfd_XX_print_private_bfd_data_common (b
   PF (IMAGE_FILE_BYTES_REVERSED_LO, "little endian");
   PF (IMAGE_FILE_32BIT_MACHINE, "32 bit words");
   PF (IMAGE_FILE_DEBUG_STRIPPED, "debugging information removed");
+  PF (IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP, "copy to swap file if on removable media");
+  PF (IMAGE_FILE_NET_RUN_FROM_SWAP, "copy to swap file if on network media");
   PF (IMAGE_FILE_SYSTEM, "system file");
   PF (IMAGE_FILE_DLL, "DLL");
+  PF (IMAGE_FILE_UP_SYSTEM_ONLY, "run only on uniprocessor machine");
   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
@@ -2816,7 +2845,7 @@ _bfd_XX_print_private_bfd_data_common (b
   bfd_fprintf_vma (abfd, file, i->AddressOfEntryPoint);
   fprintf (file, "\nBaseOfCode\t\t");
   bfd_fprintf_vma (abfd, file, i->BaseOfCode);
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
   /* PE32+ does not have BaseOfData member!  */
   fprintf (file, "\nBaseOfData\t\t");
   bfd_fprintf_vma (abfd, file, i->BaseOfData);
@@ -2832,7 +2861,7 @@ _bfd_XX_print_private_bfd_data_common (b
   fprintf (file, "MinorImageVersion\t%d\n", i->MinorImageVersion);
   fprintf (file, "MajorSubsystemVersion\t%d\n", i->MajorSubsystemVersion);
   fprintf (file, "MinorSubsystemVersion\t%d\n", i->MinorSubsystemVersion);
-  fprintf (file, "Win32Version\t\t%08x\n", i->Reserved1);
+  fprintf (file, "Win32Version\t\t%08x\n", i->Win32Version);
   fprintf (file, "SizeOfImage\t\t%08x\n", i->SizeOfImage);
   fprintf (file, "SizeOfHeaders\t\t%08x\n", i->SizeOfHeaders);
   fprintf (file, "CheckSum\t\t%08x\n", i->CheckSum);
@@ -2857,7 +2886,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 +2899,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;
     }
@@ -2883,6 +2912,34 @@ _bfd_XX_print_private_bfd_data_common (b
   if (subsystem_name)
     fprintf (file, "\t(%s)", subsystem_name);
   fprintf (file, "\nDllCharacteristics\t%08x\n", i->DllCharacteristics);
+  if (i->DllCharacteristics)
+    {
+      unsigned short dllch = i->DllCharacteristics;
+      const char *indent = "\t\t\t\t\t";
+
+      if (dllch & IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA)
+	fprintf (file, "%sHIGH_ENTROPY_VA\n", indent);
+      if (dllch & IMAGE_DLL_CHARACTERISTICS_DYNAMIC_BASE)
+	fprintf (file, "%sDYNAMIC_BASE\n", indent);
+      if (dllch & IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY)
+	fprintf (file, "%sFORCE_INTEGRITY\n", indent);
+      if (dllch & IMAGE_DLL_CHARACTERISTICS_NX_COMPAT)
+	fprintf (file, "%sNX_COMPAT\n", indent);
+      if (dllch & IMAGE_DLLCHARACTERISTICS_NO_ISOLATION)
+	fprintf (file, "%sNO_ISOLATION\n", indent);
+      if (dllch & IMAGE_DLLCHARACTERISTICS_NO_SEH)
+	fprintf (file, "%sNO_SEH\n", indent);
+      if (dllch & IMAGE_DLLCHARACTERISTICS_NO_BIND)
+	fprintf (file, "%sNO_BIND\n", indent);
+      if (dllch & IMAGE_DLLCHARACTERISTICS_APPCONTAINER)
+	fprintf (file, "%sAPPCONTAINER\n", indent);
+      if (dllch & IMAGE_DLLCHARACTERISTICS_WDM_DRIVER)
+	fprintf (file, "%sWDM_DRIVER\n", indent);
+      if (dllch & IMAGE_DLLCHARACTERISTICS_GUARD_CF)
+	fprintf (file, "%sGUARD_CF\n", indent);
+      if (dllch & IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE)
+	fprintf (file, "%sTERMINAL_SERVICE_AWARE\n", indent);
+    }
   fprintf (file, "SizeOfStackReserve\t");
   bfd_fprintf_vma (abfd, file, i->SizeOfStackReserve);
   fprintf (file, "\nSizeOfStackCommit\t");
@@ -2915,10 +2972,10 @@ _bfd_XX_print_private_bfd_data_common (b
 
   rsrc_print_section (abfd, vfile);
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 is_vma_in_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sect, void *obj)
 {
   bfd_vma addr = * (bfd_vma *) obj;
@@ -2934,15 +2991,16 @@ find_section_by_vma (bfd *abfd, bfd_vma
 /* Copy any private info we understand from the input bfd
    to the output bfd.  */
 
-bfd_boolean
+bool
 _bfd_XX_bfd_copy_private_bfd_data_common (bfd * ibfd, bfd * obfd)
 {
   pe_data_type *ipe, *ope;
+  bfd_size_type size;
 
   /* One day we may try to grok other private data.  */
   if (ibfd->xvec->flavour != bfd_target_coff_flavour
       || obfd->xvec->flavour != bfd_target_coff_flavour)
-    return TRUE;
+    return true;
 
   ipe = pe_data (ibfd);
   ope = pe_data (obfd);
@@ -2972,102 +3030,122 @@ _bfd_XX_bfd_copy_private_bfd_data_common
   memcpy (ope->dos_message, ipe->dos_message, sizeof (ope->dos_message));
 
   /* The file offsets contained in the debug directory need rewriting.  */
-  if (ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size != 0)
+  size = ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size;
+  if (size != 0)
     {
       bfd_vma addr = ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].VirtualAddress
 	+ ope->pe_opthdr.ImageBase;
-      asection *section = find_section_by_vma (obfd, addr);
-      bfd_byte *data;
+      /* 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 + size - 1;
+      asection *section = find_section_by_vma (obfd, last);
 
-      if (section && bfd_malloc_and_get_section (obfd, section, &data))
+      if (section != NULL)
 	{
-	  unsigned int i;
-	  struct external_IMAGE_DEBUG_DIRECTORY *dd =
-	    (struct external_IMAGE_DEBUG_DIRECTORY *)(data + (addr - section->vma));
+	  bfd_byte *data;
+	  bfd_vma dataoff = addr - section->vma;
 
 	  /* PR 17512: file: 0f15796a.  */
-	  if ((unsigned long) ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size
-	      > section->size - (addr - section->vma))
+	  if (addr < section->vma
+	      || section->size < dataoff
+	      || section->size - dataoff < size)
 	    {
 	      /* xgettext:c-format */
 	      _bfd_error_handler
-		(_("%pB: Data Directory size (%lx) "
-		   "exceeds space left in section (%" PRIx64 ")"),
+		(_("%pB: Data Directory (%lx bytes at %" PRIx64 ") "
+		   "extends across section boundary at %" PRIx64),
 		 obfd, ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size,
-		 (uint64_t) (section->size - (addr - section->vma)));
-	      free (data);
-	      return FALSE;
+		 (uint64_t) addr, (uint64_t) section->vma);
+	      return false;
 	    }
 
-	  for (i = 0; i < ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size
-		 / sizeof (struct external_IMAGE_DEBUG_DIRECTORY); i++)
+	  if ((section->flags & SEC_HAS_CONTENTS) != 0
+	      && bfd_malloc_and_get_section (obfd, section, &data))
 	    {
-	      asection *ddsection;
-	      struct external_IMAGE_DEBUG_DIRECTORY *edd = &(dd[i]);
-	      struct internal_IMAGE_DEBUG_DIRECTORY idd;
+	      unsigned int i;
+	      struct external_IMAGE_DEBUG_DIRECTORY *dd =
+		(struct external_IMAGE_DEBUG_DIRECTORY *)(data + dataoff);
 
-	      _bfd_XXi_swap_debugdir_in (obfd, edd, &idd);
+	      for (i = 0; i < ope->pe_opthdr.DataDirectory[PE_DEBUG_DATA].Size
+		     / sizeof (struct external_IMAGE_DEBUG_DIRECTORY); i++)
+		{
+		  asection *ddsection;
+		  struct external_IMAGE_DEBUG_DIRECTORY *edd = &(dd[i]);
+		  struct internal_IMAGE_DEBUG_DIRECTORY idd;
+		  bfd_vma idd_vma;
 
-	      if (idd.AddressOfRawData == 0)
-		continue; /* RVA 0 means only offset is valid, not handled yet.  */
+		  _bfd_XXi_swap_debugdir_in (obfd, edd, &idd);
 
-	      ddsection = find_section_by_vma (obfd, idd.AddressOfRawData + ope->pe_opthdr.ImageBase);
-	      if (!ddsection)
-		continue; /* Not in a section! */
+		  /* RVA 0 means only offset is valid, not handled yet.  */
+		  if (idd.AddressOfRawData == 0)
+		    continue;
 
-	      idd.PointerToRawData = ddsection->filepos + (idd.AddressOfRawData
-							   + ope->pe_opthdr.ImageBase) - ddsection->vma;
+		  idd_vma = idd.AddressOfRawData + ope->pe_opthdr.ImageBase;
+		  ddsection = find_section_by_vma (obfd, idd_vma);
+		  if (!ddsection)
+		    continue; /* Not in a section! */
+
+		  idd.PointerToRawData
+		    = ddsection->filepos + idd_vma - ddsection->vma;
+		  _bfd_XXi_swap_debugdir_out (obfd, &idd, edd);
+		}
 
-	      _bfd_XXi_swap_debugdir_out (obfd, &idd, edd);
+	      if (!bfd_set_section_contents (obfd, section, data, 0,
+					     section->size))
+		{
+		  _bfd_error_handler (_("failed to update file offsets"
+					" in debug directory"));
+		  free (data);
+		  return false;
+		}
+	      free (data);
 	    }
-
-	  if (!bfd_set_section_contents (obfd, section, data, 0, section->size))
+	  else
 	    {
-	      _bfd_error_handler (_("failed to update file offsets in debug directory"));
-	      free (data);
-	      return FALSE;
+	      _bfd_error_handler (_("%pB: failed to read "
+				    "debug data section"), obfd);
+	      return false;
 	    }
-	  free (data);
-	}
-      else if (section)
-	{
-	  _bfd_error_handler (_("%pB: failed to read debug data section"), obfd);
-	  return FALSE;
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Copy private section data.  */
 
-bfd_boolean
+bool
 _bfd_XX_bfd_copy_private_section_data (bfd *ibfd,
 				       asection *isec,
 				       bfd *obfd,
-				       asection *osec)
+				       asection *osec,
+				       struct bfd_link_info *link_info)
 {
-  if (bfd_get_flavour (ibfd) != bfd_target_coff_flavour
+  if (link_info != NULL
+      || bfd_get_flavour (ibfd) != bfd_target_coff_flavour
       || bfd_get_flavour (obfd) != bfd_target_coff_flavour)
-    return TRUE;
+    return true;
 
   if (coff_section_data (ibfd, isec) != NULL
       && pei_section_data (ibfd, isec) != NULL)
     {
       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;
+	    return false;
 	}
 
       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;
+	    return false;
 	}
 
       pei_section_data (obfd, osec)->virt_size =
@@ -3076,7 +3154,7 @@ _bfd_XX_bfd_copy_private_section_data (b
 	pei_section_data (ibfd, isec)->pe_flags;
     }
 
-  return TRUE;
+  return true;
 }
 
 void
@@ -3085,7 +3163,7 @@ _bfd_XX_get_symbol_info (bfd * abfd, asy
   coff_get_symbol_info (abfd, symbol, ret);
 }
 
-#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && (defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) || defined(COFF_WITH_peLoongArch64) || defined (COFF_WITH_peRiscV64))
 static int
 sort_x64_pdata (const void *l, const void *r)
 {
@@ -3110,12 +3188,12 @@ static bfd_byte *
 rsrc_count_directory (bfd *, bfd_byte *, bfd_byte *, bfd_byte *, bfd_vma);
 
 static bfd_byte *
-rsrc_count_entries (bfd *	   abfd,
-		    bfd_boolean	   is_name,
-		    bfd_byte *	   datastart,
-		    bfd_byte *	   data,
-		    bfd_byte *	   dataend,
-		    bfd_vma	   rva_bias)
+rsrc_count_entries (bfd *abfd,
+		    bool is_name,
+		    bfd_byte *datastart,
+		    bfd_byte *data,
+		    bfd_byte *dataend,
+		    bfd_vma rva_bias)
 {
   unsigned long entry, addr, size;
 
@@ -3232,14 +3310,14 @@ typedef struct rsrc_leaf
 
 typedef struct rsrc_entry
 {
-  bfd_boolean is_name;
+  bool is_name;
   union
   {
     unsigned int	  id;
     struct rsrc_string	  name;
   } name_id;
 
-  bfd_boolean is_dir;
+  bool is_dir;
   union
   {
     struct rsrc_directory * directory;
@@ -3255,14 +3333,14 @@ rsrc_parse_directory (bfd *, rsrc_direct
 		      bfd_byte *, bfd_byte *, bfd_vma, rsrc_entry *);
 
 static bfd_byte *
-rsrc_parse_entry (bfd *		   abfd,
-		  bfd_boolean	   is_name,
-		  rsrc_entry *	   entry,
-		  bfd_byte *	   datastart,
-		  bfd_byte *	   data,
-		  bfd_byte *	   dataend,
-		  bfd_vma	   rva_bias,
-		  rsrc_directory * parent)
+rsrc_parse_entry (bfd *abfd,
+		  bool is_name,
+		  rsrc_entry *entry,
+		  bfd_byte *datastart,
+		  bfd_byte * data,
+		  bfd_byte *dataend,
+		  bfd_vma rva_bias,
+		  rsrc_directory *parent)
 {
   unsigned long val, addr, size;
 
@@ -3299,8 +3377,8 @@ rsrc_parse_entry (bfd *		   abfd,
 
   if (HighBitSet (val))
     {
-      entry->is_dir = TRUE;
-      entry->value.directory = bfd_malloc (sizeof * entry->value.directory);
+      entry->is_dir = true;
+      entry->value.directory = bfd_malloc (sizeof (*entry->value.directory));
       if (entry->value.directory == NULL)
 	return dataend;
 
@@ -3310,13 +3388,13 @@ rsrc_parse_entry (bfd *		   abfd,
 				   dataend, rva_bias, entry);
     }
 
-  entry->is_dir = FALSE;
-  entry->value.leaf = bfd_malloc (sizeof * entry->value.leaf);
+  entry->is_dir = false;
+  entry->value.leaf = bfd_malloc (sizeof (*entry->value.leaf));
   if (entry->value.leaf == NULL)
     return dataend;
 
   data = datastart + val;
-  if (data < datastart || data >= dataend)
+  if (data < datastart || data + 12 > dataend)
     return dataend;
 
   addr = bfd_get_32 (abfd, data);
@@ -3324,6 +3402,8 @@ rsrc_parse_entry (bfd *		   abfd,
   entry->value.leaf->codepage = bfd_get_32 (abfd, data + 8);
   /* FIXME: We assume that the reserved field (data + 12) is OK.  */
 
+  if (size > dataend - datastart - (addr - rva_bias))
+    return dataend;
   entry->value.leaf->data = bfd_malloc (size);
   if (entry->value.leaf->data == NULL)
     return dataend;
@@ -3333,15 +3413,15 @@ rsrc_parse_entry (bfd *		   abfd,
 }
 
 static bfd_byte *
-rsrc_parse_entries (bfd *	     abfd,
-		    rsrc_dir_chain * chain,
-		    bfd_boolean	     is_name,
-		    bfd_byte *	     highest_data,
-		    bfd_byte *	     datastart,
-		    bfd_byte *	     data,
-		    bfd_byte *	     dataend,
-		    bfd_vma	     rva_bias,
-		    rsrc_directory * parent)
+rsrc_parse_entries (bfd *abfd,
+		    rsrc_dir_chain *chain,
+		    bool is_name,
+		    bfd_byte *highest_data,
+		    bfd_byte *datastart,
+		    bfd_byte *data,
+		    bfd_byte *dataend,
+		    bfd_vma rva_bias,
+		    rsrc_directory *parent)
 {
   unsigned int i;
   rsrc_entry * entry;
@@ -3352,7 +3432,7 @@ rsrc_parse_entries (bfd *	     abfd,
       return highest_data;
     }
 
-  entry = bfd_malloc (sizeof * entry);
+  entry = bfd_malloc (sizeof (*entry));
   if (entry == NULL)
     return dataend;
 
@@ -3371,7 +3451,7 @@ rsrc_parse_entries (bfd *	     abfd,
 
       if (i)
 	{
-	  entry->next_entry = bfd_malloc (sizeof * entry);
+	  entry->next_entry = bfd_malloc (sizeof (*entry));
 	  entry = entry->next_entry;
 	  if (entry == NULL)
 	    return dataend;
@@ -3409,11 +3489,11 @@ rsrc_parse_directory (bfd *	       abfd,
 
   data += 16;
 
-  highest_data = rsrc_parse_entries (abfd, & table->names, TRUE, data,
+  highest_data = rsrc_parse_entries (abfd, & table->names, true, data,
 				     datastart, data, dataend, rva_bias, table);
   data += table->names.num_entries * 8;
 
-  highest_data = rsrc_parse_entries (abfd, & table->ids, FALSE, highest_data,
+  highest_data = rsrc_parse_entries (abfd, & table->ids, false, highest_data,
 				     datastart, data, dataend, rva_bias, table);
   data += table->ids.num_entries * 8;
 
@@ -3575,16 +3655,12 @@ rsrc_write_directory (rsrc_write_data *
   BFD_ASSERT (nt == next_entry);
 }
 
-#if defined HAVE_WCHAR_H && ! defined __CYGWIN__ && ! defined __MINGW32__
+#if ! defined __CYGWIN__ && ! defined __MINGW32__
 /* Return the length (number of units) of the first character in S,
    putting its 'ucs4_t' representation in *PUC.  */
 
 static unsigned int
-#if defined HAVE_WCTYPE_H
 u16_mbtouc (wint_t * puc, const unsigned short * s, unsigned int n)
-#else
-u16_mbtouc (wchar_t * puc, const unsigned short * s, unsigned int n)
-#endif
 {
   unsigned short c = * s;
 
@@ -3616,11 +3692,11 @@ u16_mbtouc (wchar_t * puc, const unsigne
   *puc = 0xfffd;
   return 1;
 }
-#endif /* HAVE_WCHAR_H and not Cygwin/Mingw */
+#endif /* not Cygwin/Mingw */
 
 /* Perform a comparison of two entries.  */
 static signed int
-rsrc_cmp (bfd_boolean is_name, rsrc_entry * a, rsrc_entry * b)
+rsrc_cmp (bool is_name, rsrc_entry * a, rsrc_entry * b)
 {
   signed int    res;
   bfd_byte *    astring;
@@ -3653,20 +3729,15 @@ rsrc_cmp (bfd_boolean is_name, rsrc_entr
   res = rscpcmp ((const wchar_t *) astring, (const wchar_t *) bstring,
 		 min (alen, blen));
 
-#elif defined HAVE_WCHAR_H
+#else
   {
     unsigned int  i;
 
     res = 0;
     for (i = min (alen, blen); i--; astring += 2, bstring += 2)
       {
-#if defined HAVE_WCTYPE_H
 	wint_t awc;
 	wint_t bwc;
-#else
-	wchar_t awc;
-	wchar_t bwc;
-#endif
 
 	/* Convert UTF-16 unicode characters into wchar_t characters
 	   so that we can then perform a case insensitive comparison.  */
@@ -3676,21 +3747,14 @@ rsrc_cmp (bfd_boolean is_name, rsrc_entr
 	if (Alen != Blen)
 	  return Alen - Blen;
 
-#ifdef HAVE_WCTYPE_H
 	awc = towlower (awc);
 	bwc = towlower (bwc);
 
 	res = awc - bwc;
-#else
-	res = wcsncasecmp (& awc, & bwc, 1);
-#endif
 	if (res)
 	  break;
       }
   }
-#else
-  /* Do the best we can - a case sensitive, untranslated comparison.  */
-  res = memcmp (astring, bstring, min (alen, blen) * 2);
 #endif
 
   if (res == 0)
@@ -3710,10 +3774,9 @@ rsrc_print_name (char * buffer, rsrc_str
 }
 
 static const char *
-rsrc_resource_name (rsrc_entry * entry, rsrc_directory * dir)
+rsrc_resource_name (rsrc_entry *entry, rsrc_directory *dir, char *buffer)
 {
-  static char buffer [256];
-  bfd_boolean is_string = FALSE;
+  bool is_string = false;
 
   buffer[0] = 0;
 
@@ -3736,7 +3799,7 @@ rsrc_resource_name (rsrc_entry * entry,
 	    case 3: strcat (buffer, " (ICON)"); break;
 	    case 4: strcat (buffer, " (MENU)"); break;
 	    case 5: strcat (buffer, " (DIALOG)"); break;
-	    case 6: strcat (buffer, " (STRING)"); is_string = TRUE; break;
+	    case 6: strcat (buffer, " (STRING)"); is_string = true; break;
 	    case 7: strcat (buffer, " (FONTDIR)"); break;
 	    case 8: strcat (buffer, " (FONT)"); break;
 	    case 9: strcat (buffer, " (ACCELERATOR)"); break;
@@ -3800,7 +3863,7 @@ rsrc_resource_name (rsrc_entry * entry,
    them and return FALSE.  Otherwise we copy any strings from B into A and
    then return TRUE.  */
 
-static bfd_boolean
+static bool
 rsrc_merge_string_entries (rsrc_entry * a ATTRIBUTE_UNUSED,
 			   rsrc_entry * b ATTRIBUTE_UNUSED)
 {
@@ -3849,11 +3912,11 @@ rsrc_merge_string_entries (rsrc_entry *
 	  && !a->parent->entry->is_name)
 	_bfd_error_handler (_(".rsrc merge failure: duplicate string resource: %d"),
 			    ((a->parent->entry->name_id.id - 1) << 4) + i);
-      return FALSE;
+      return false;
     }
 
   if (copy_needed == 0)
-    return TRUE;
+    return true;
 
   /* If we reach here then A and B must both have non-colliding strings.
      (We never get string resources with fully empty string tables).
@@ -3861,7 +3924,7 @@ rsrc_merge_string_entries (rsrc_entry *
      in B's strings.  */
   new_data = bfd_malloc (a->value.leaf->size + copy_needed);
   if (new_data == NULL)
-    return FALSE;
+    return false;
 
   nstring = new_data;
   astring = a->value.leaf->data;
@@ -3898,7 +3961,7 @@ rsrc_merge_string_entries (rsrc_entry *
   a->value.leaf->data = new_data;
   a->value.leaf->size += copy_needed;
 
-  return TRUE;
+  return true;
 }
 
 static void rsrc_merge (rsrc_entry *, rsrc_entry *);
@@ -3908,21 +3971,21 @@ static void rsrc_merge (rsrc_entry *, rs
    with lists and we want to handle matches specially.  */
 
 static void
-rsrc_sort_entries (rsrc_dir_chain *  chain,
-		   bfd_boolean       is_name,
-		   rsrc_directory *  dir)
+rsrc_sort_entries (rsrc_dir_chain *chain,
+		   bool is_name,
+		   rsrc_directory *dir)
 {
   rsrc_entry * entry;
   rsrc_entry * next;
   rsrc_entry ** points_to_entry;
-  bfd_boolean swapped;
+  bool swapped;
 
   if (chain->num_entries < 2)
     return;
 
   do
     {
-      swapped = FALSE;
+      swapped = false;
       points_to_entry = & chain->first_entry;
       entry = * points_to_entry;
       next  = entry->next_entry;
@@ -3938,7 +4001,7 @@ rsrc_sort_entries (rsrc_dir_chain *  cha
 	      * points_to_entry = next;
 	      points_to_entry = & next->next_entry;
 	      next = entry->next_entry;
-	      swapped = TRUE;
+	      swapped = true;
 	    }
 	  else if (cmp == 0)
 	    {
@@ -3978,7 +4041,7 @@ rsrc_sort_entries (rsrc_dir_chain *  cha
 			  * points_to_entry = next;
 			  points_to_entry = & next->next_entry;
 			  next = entry->next_entry;
-			  swapped = TRUE;
+			  swapped = true;
 			}
 		      else
 			{
@@ -4044,8 +4107,12 @@ rsrc_sort_entries (rsrc_dir_chain *  cha
 			  || dir->entry->parent->entry == NULL)
 			_bfd_error_handler (_(".rsrc merge failure: duplicate leaf"));
 		      else
-			_bfd_error_handler (_(".rsrc merge failure: duplicate leaf: %s"),
-					    rsrc_resource_name (entry, dir));
+			{
+			  char buff[256];
+
+			  _bfd_error_handler (_(".rsrc merge failure: duplicate leaf: %s"),
+					      rsrc_resource_name (entry, dir, buff));
+			}
 		      bfd_set_error (bfd_error_file_truncated);
 		      return;
 		    }
@@ -4129,8 +4196,8 @@ rsrc_merge (struct rsrc_entry * a, struc
   rsrc_attach_chain (& adir->ids, & bdir->ids);
 
   /* Now sort A's entries.  */
-  rsrc_sort_entries (& adir->names, TRUE, adir);
-  rsrc_sort_entries (& adir->ids, FALSE, adir);
+  rsrc_sort_entries (& adir->names, true, adir);
+  rsrc_sort_entries (& adir->ids, false, adir);
 }
 
 /* Check the .rsrc section.  If it contains multiple concatenated
@@ -4172,13 +4239,7 @@ rsrc_process_section (bfd * abfd,
 
   rva_bias = sec->vma - pe->pe_opthdr.ImageBase;
 
-  data = bfd_malloc (size);
-  if (data == NULL)
-    return;
-
-  datastart = data;
-
-  if (! bfd_get_section_contents (abfd, sec, data, 0, size))
+  if (! bfd_malloc_and_get_section (abfd, sec, &datastart))
     goto end;
 
   /* Step zero: Scan the input bfds looking for .rsrc sections and record
@@ -4190,7 +4251,8 @@ rsrc_process_section (bfd * abfd,
      at the end of a variable amount.  (It does not appear to be based upon
      the section alignment or the file alignment).  We need to skip any
      padding bytes when parsing the input .rsrc sections.  */
-  rsrc_sizes = bfd_malloc (max_num_input_rsrc * sizeof * rsrc_sizes);
+  data = datastart;
+  rsrc_sizes = bfd_malloc (max_num_input_rsrc * sizeof (*rsrc_sizes));
   if (rsrc_sizes == NULL)
     goto end;
 
@@ -4207,7 +4269,7 @@ rsrc_process_section (bfd * abfd,
 	    {
 	      max_num_input_rsrc += 10;
 	      rsrc_sizes = bfd_realloc (rsrc_sizes, max_num_input_rsrc
-					* sizeof * rsrc_sizes);
+					* sizeof (*rsrc_sizes));
 	      if (rsrc_sizes == NULL)
 		goto end;
 	    }
@@ -4260,7 +4322,7 @@ rsrc_process_section (bfd * abfd,
   data = datastart;
   rva_bias = sec->vma - pe->pe_opthdr.ImageBase;
 
-  type_tables = bfd_malloc (num_resource_sets * sizeof * type_tables);
+  type_tables = bfd_malloc (num_resource_sets * sizeof (*type_tables));
   if (type_tables == NULL)
     goto end;
 
@@ -4297,7 +4359,7 @@ rsrc_process_section (bfd * abfd,
   for (indx = 0; indx < num_resource_sets; indx++)
     rsrc_attach_chain (& new_table.names, & type_tables[indx].names);
 
-  rsrc_sort_entries (& new_table.names, TRUE, & new_table);
+  rsrc_sort_entries (& new_table.names, true, & new_table);
 
   /* Chain the ID entries onto the table.  */
   new_table.ids.first_entry = NULL;
@@ -4306,7 +4368,7 @@ rsrc_process_section (bfd * abfd,
   for (indx = 0; indx < num_resource_sets; indx++)
     rsrc_attach_chain (& new_table.ids, & type_tables[indx].ids);
 
-  rsrc_sort_entries (& new_table.ids, FALSE, & new_table);
+  rsrc_sort_entries (& new_table.ids, false, & new_table);
 
   /* Step four: Create new contents for the .rsrc section.  */
   /* Step four point one: Compute the size of each region of the .rsrc section.
@@ -4348,12 +4410,13 @@ rsrc_process_section (bfd * abfd,
 /* Handle the .idata section and other things that need symbol table
    access.  */
 
-bfd_boolean
+bool
 _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo)
 {
   struct coff_link_hash_entry *h1;
   struct bfd_link_info *info = pfinfo->info;
-  bfd_boolean result = TRUE;
+  bool result = true;
+  char name[20];
 
   /* There are a few fields that need to be filled in now while we
      have symbol table access.
@@ -4364,7 +4427,7 @@ _bfd_XXi_final_link_postscript (bfd * ab
   /* The import directory.  This is the address of .idata$2, with size
      of .idata$2 + .idata$3.  */
   h1 = coff_link_hash_lookup (coff_hash_table (info),
-			      ".idata$2", FALSE, FALSE, TRUE);
+			      ".idata$2", false, false, true);
   if (h1 != NULL)
     {
       /* PR ld/2729: We cannot rely upon all the output sections having been
@@ -4381,13 +4444,13 @@ _bfd_XXi_final_link_postscript (bfd * ab
       else
 	{
 	  _bfd_error_handler
-	    (_("%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"),
-	     abfd);
-	  result = FALSE;
+	    (_("%pB: unable to fill in DataDirectory[%d]: %s is missing"),
+	     abfd, PE_IMPORT_TABLE, ".idata$2");
+	  result = false;
 	}
 
       h1 = coff_link_hash_lookup (coff_hash_table (info),
-				  ".idata$4", FALSE, FALSE, TRUE);
+				  ".idata$4", false, false, true);
       if (h1 != NULL
 	  && (h1->root.type == bfd_link_hash_defined
 	   || h1->root.type == bfd_link_hash_defweak)
@@ -4401,15 +4464,15 @@ _bfd_XXi_final_link_postscript (bfd * ab
       else
 	{
 	  _bfd_error_handler
-	    (_("%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"),
-	     abfd);
-	  result = FALSE;
+	    (_("%pB: unable to fill in DataDirectory[%d]: %s is missing"),
+	     abfd, PE_IMPORT_TABLE, ".idata$4");
+	  result = false;
 	}
 
       /* The import address table.  This is the size/address of
 	 .idata$5.  */
       h1 = coff_link_hash_lookup (coff_hash_table (info),
-				  ".idata$5", FALSE, FALSE, TRUE);
+				  ".idata$5", false, false, true);
       if (h1 != NULL
 	  && (h1->root.type == bfd_link_hash_defined
 	   || h1->root.type == bfd_link_hash_defweak)
@@ -4422,13 +4485,13 @@ _bfd_XXi_final_link_postscript (bfd * ab
       else
 	{
 	  _bfd_error_handler
-	    (_("%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"),
-	     abfd);
-	  result = FALSE;
+	    (_("%pB: unable to fill in DataDirectory[%d]: %s is missing"),
+	     abfd, PE_IMPORT_ADDRESS_TABLE, ".idata$5");
+	  result = false;
 	}
 
       h1 = coff_link_hash_lookup (coff_hash_table (info),
-				  ".idata$6", FALSE, FALSE, TRUE);
+				  ".idata$6", false, false, true);
       if (h1 != NULL
 	  && (h1->root.type == bfd_link_hash_defined
 	   || h1->root.type == bfd_link_hash_defweak)
@@ -4442,15 +4505,15 @@ _bfd_XXi_final_link_postscript (bfd * ab
       else
 	{
 	  _bfd_error_handler
-	    (_("%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"),
-	     abfd);
-	  result = FALSE;
+	    (_("%pB: unable to fill in DataDirectory[%d]: %s is missing"),
+	     abfd, PE_IMPORT_ADDRESS_TABLE, ".idata$6");
+	  result = false;
 	}
     }
   else
     {
       h1 = coff_link_hash_lookup (coff_hash_table (info),
-				  "__IAT_start__", FALSE, FALSE, TRUE);
+				  "__IAT_start__", false, false, true);
       if (h1 != NULL
 	  && (h1->root.type == bfd_link_hash_defined
 	   || h1->root.type == bfd_link_hash_defweak)
@@ -4465,7 +4528,7 @@ _bfd_XXi_final_link_postscript (bfd * ab
 	     + h1->root.u.def.section->output_offset);
 
 	  h1 = coff_link_hash_lookup (coff_hash_table (info),
-				      "__IAT_end__", FALSE, FALSE, TRUE);
+				      "__IAT_end__", false, false, true);
 	  if (h1 != NULL
 	      && (h1->root.type == bfd_link_hash_defined
 	       || h1->root.type == bfd_link_hash_defweak)
@@ -4484,17 +4547,62 @@ _bfd_XXi_final_link_postscript (bfd * ab
 	  else
 	    {
 	      _bfd_error_handler
-		(_("%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)]"
-		   " because .idata$6 is missing"), abfd);
-	      result = FALSE;
+		(_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"),
+		 abfd, PE_IMPORT_ADDRESS_TABLE, "__IAT_end__");
+	      result = false;
 	    }
 	}
     }
 
+  /* The delay import directory.  This is .didat$2 */
   h1 = coff_link_hash_lookup (coff_hash_table (info),
-			      (bfd_get_symbol_leading_char (abfd) != 0
-			       ? "__tls_used" : "_tls_used"),
-			      FALSE, FALSE, TRUE);
+			      "__DELAY_IMPORT_DIRECTORY_start__", false, false,
+			      true);
+  if (h1 != NULL
+      && (h1->root.type == bfd_link_hash_defined
+       || h1->root.type == bfd_link_hash_defweak)
+      && h1->root.u.def.section != NULL
+      && h1->root.u.def.section->output_section != NULL)
+    {
+      bfd_vma delay_va;
+
+      delay_va =
+	(h1->root.u.def.value
+	 + h1->root.u.def.section->output_section->vma
+	 + h1->root.u.def.section->output_offset);
+
+      h1 = coff_link_hash_lookup (coff_hash_table (info),
+				  "__DELAY_IMPORT_DIRECTORY_end__", false,
+				  false, true);
+      if (h1 != NULL
+	  && (h1->root.type == bfd_link_hash_defined
+	   || h1->root.type == bfd_link_hash_defweak)
+	  && h1->root.u.def.section != NULL
+	  && h1->root.u.def.section->output_section != NULL)
+	{
+	  pe_data (abfd)->pe_opthdr.DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR].Size =
+	    ((h1->root.u.def.value
+	      + h1->root.u.def.section->output_section->vma
+	      + h1->root.u.def.section->output_offset)
+	     - delay_va);
+	  if (pe_data (abfd)->pe_opthdr.DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR].Size
+	      != 0)
+	    pe_data (abfd)->pe_opthdr.DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR].VirtualAddress =
+	      delay_va - pe_data (abfd)->pe_opthdr.ImageBase;
+	}
+      else
+	{
+	  _bfd_error_handler
+	    (_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"),
+	     abfd, PE_DELAY_IMPORT_DESCRIPTOR,
+	     "__DELAY_IMPORT_DIRECTORY_end__");
+	  result = false;
+	}
+    }
+
+  name[0] = bfd_get_symbol_leading_char (abfd);
+  strcpy (name + !!name[0], "_tls_used");
+  h1 = coff_link_hash_lookup (coff_hash_table (info), name, false, false, true);
   if (h1 != NULL)
     {
       if ((h1->root.type == bfd_link_hash_defined
@@ -4509,49 +4617,118 @@ _bfd_XXi_final_link_postscript (bfd * ab
       else
 	{
 	  _bfd_error_handler
-	    (_("%pB: unable to fill in DataDictionary[9] because __tls_used is missing"),
-	     abfd);
-	  result = FALSE;
+	    (_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"),
+	     abfd, PE_TLS_TABLE, name);
+	  result = false;
 	}
      /* According to PECOFF sepcifications by Microsoft version 8.2
 	the TLS data directory consists of 4 pointers, followed
 	by two 4-byte integer. This implies that the total size
 	is different for 32-bit and 64-bit executables.  */
-#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) && !defined(COFF_WITH_peLoongArch64) && !defined (COFF_WITH_peRiscV64)
       pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x18;
 #else
       pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x28;
 #endif
     }
 
+  name[0] = bfd_get_symbol_leading_char (abfd);
+  strcpy (name + !!name[0], "_load_config_used");
+  h1 = coff_link_hash_lookup (coff_hash_table (info), name, false, false, true);
+  if (h1 != NULL)
+    {
+      char data[4];
+      if ((h1->root.type == bfd_link_hash_defined
+	   || h1->root.type == bfd_link_hash_defweak)
+	  && h1->root.u.def.section != NULL
+	  && h1->root.u.def.section->output_section != NULL)
+	{
+	  pe_data (abfd)->pe_opthdr.DataDirectory[PE_LOAD_CONFIG_TABLE].VirtualAddress =
+	    (h1->root.u.def.value
+	     + h1->root.u.def.section->output_section->vma
+	     + h1->root.u.def.section->output_offset
+	     - pe_data (abfd)->pe_opthdr.ImageBase);
+
+	  if (pe_data (abfd)->pe_opthdr.DataDirectory[PE_LOAD_CONFIG_TABLE].VirtualAddress
+	      & (bfd_arch_bits_per_address (abfd) / bfd_arch_bits_per_byte (abfd)
+		- 1))
+	    {
+	      _bfd_error_handler
+		(_("%pB: unable to fill in DataDirectory[%d]: %s not properly aligned"),
+		 abfd, PE_LOAD_CONFIG_TABLE, name);
+	      result = false;
+	    }
+
+	  /* The size is stored as the first 4 bytes at _load_config_used.  */
+	  if (bfd_get_section_contents (abfd,
+		h1->root.u.def.section->output_section, data,
+		h1->root.u.def.section->output_offset + h1->root.u.def.value,
+		4))
+	    {
+	      uint32_t size = bfd_get_32 (abfd, data);
+	      /* The Microsoft PE format documentation says for compatibility
+		 with Windows XP and earlier, the size must be 64 for x86
+		 images.  */
+	      pe_data (abfd)->pe_opthdr.DataDirectory[PE_LOAD_CONFIG_TABLE].Size
+		= (bfd_get_arch (abfd) == bfd_arch_i386
+		   && ((bfd_get_mach (abfd) & ~bfd_mach_i386_intel_syntax)
+		       == bfd_mach_i386_i386)
+		   && ((pe_data (abfd)->pe_opthdr.Subsystem
+			== IMAGE_SUBSYSTEM_WINDOWS_GUI)
+		       || (pe_data (abfd)->pe_opthdr.Subsystem
+			   == IMAGE_SUBSYSTEM_WINDOWS_CUI))
+		   && (pe_data (abfd)->pe_opthdr.MajorSubsystemVersion * 256
+		       + pe_data (abfd)->pe_opthdr.MinorSubsystemVersion
+		       <= 0x0501))
+		? 64 : size;
+
+	      if (size > h1->root.u.def.section->size - h1->root.u.def.value)
+		{
+		  _bfd_error_handler
+		    (_("%pB: unable to fill in DataDirectory[%d]: size too large for the containing section"),
+		     abfd, PE_LOAD_CONFIG_TABLE);
+		  result = false;
+		}
+	    }
+	  else
+	    {
+	      _bfd_error_handler
+		(_("%pB: unable to fill in DataDirectory[%d]: size can't be read from %s"),
+		 abfd, PE_LOAD_CONFIG_TABLE, name);
+	      result = false;
+	    }
+	}
+      else
+	{
+	  _bfd_error_handler
+	    (_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"),
+	     abfd, PE_LOAD_CONFIG_TABLE, name);
+	  result = false;
+	}
+    }
+
 /* If there is a .pdata section and we have linked pdata finally, we
      need to sort the entries ascending.  */
-#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64)
+#if !defined(COFF_WITH_pep) && (defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) || defined(COFF_WITH_peLoongArch64) || defined (COFF_WITH_peRiscV64))
   {
     asection *sec = bfd_get_section_by_name (abfd, ".pdata");
 
     if (sec)
       {
 	bfd_size_type x = sec->rawsize;
-	bfd_byte *tmp_data = NULL;
-
-	if (x)
-	  tmp_data = bfd_malloc (x);
+	bfd_byte *tmp_data;
 
-	if (tmp_data != NULL)
+	if (bfd_malloc_and_get_section (abfd, sec, &tmp_data))
 	  {
-	    if (bfd_get_section_contents (abfd, sec, tmp_data, 0, x))
-	      {
-		qsort (tmp_data,
-		       (size_t) (x / 12),
-		       12, sort_x64_pdata);
-		bfd_set_section_contents (pfinfo->output_bfd, sec,
-					  tmp_data, 0, x);
-	      }
+	    qsort (tmp_data,
+		   (size_t) (x / 12),
+		   12, sort_x64_pdata);
+	    bfd_set_section_contents (pfinfo->output_bfd, sec,
+				      tmp_data, 0, x);
 	    free (tmp_data);
 	  }
 	else
-	  result = FALSE;
+	  result = 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.20200303/bfd/plugin.c ./bfd/plugin.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/plugin.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/plugin.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Plugin support for BFD.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -73,8 +73,6 @@ dlerror (void)
 #define bfd_plugin_bfd_free_cached_info		      _bfd_generic_bfd_free_cached_info
 #define bfd_plugin_new_section_hook		      _bfd_generic_new_section_hook
 #define bfd_plugin_get_section_contents		      _bfd_generic_get_section_contents
-#define bfd_plugin_get_section_contents_in_window     _bfd_generic_get_section_contents_in_window
-#define bfd_plugin_bfd_copy_private_header_data	      _bfd_generic_bfd_copy_private_header_data
 #define bfd_plugin_bfd_merge_private_bfd_data	      _bfd_generic_bfd_merge_private_bfd_data
 #define bfd_plugin_bfd_copy_private_header_data	      _bfd_generic_bfd_copy_private_header_data
 #define bfd_plugin_bfd_set_private_flags	      _bfd_generic_bfd_set_private_flags
@@ -83,6 +81,7 @@ dlerror (void)
 #define bfd_plugin_bfd_is_target_special_symbol	      _bfd_bool_bfd_asymbol_false
 #define bfd_plugin_get_lineno			      _bfd_nosymbols_get_lineno
 #define bfd_plugin_find_nearest_line		      _bfd_nosymbols_find_nearest_line
+#define bfd_plugin_find_nearest_line_with_alt	      _bfd_nosymbols_find_nearest_line_with_alt
 #define bfd_plugin_find_line			      _bfd_nosymbols_find_line
 #define bfd_plugin_find_inliner_info		      _bfd_nosymbols_find_inliner_info
 #define bfd_plugin_get_symbol_version_string	      _bfd_nosymbols_get_symbol_version_string
@@ -124,13 +123,218 @@ 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_claim_file_handler_v2 claim_file_v2;
+  ld_plugin_all_symbols_read_handler all_symbols_read;
+  ld_plugin_all_symbols_read_handler cleanup_handler;
+  bool has_symbol_type;
+
+  struct plugin_list_entry *next;
+
+  /* These can be reused for all IR objects.  */
+  const char *plugin_name;
+};
+
+struct plugin_data_struct
+{
+  int nsyms;
+  const struct ld_plugin_symbol *syms;
+  int object_only_nsyms;
+  asymbol **object_only_syms;
+};
+
+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;
+}
+
+static asection bfd_plugin_fake_text_section
+  = BFD_FAKE_SECTION (bfd_plugin_fake_text_section, NULL, "plug", 0,
+		      SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS);
+static asection bfd_plugin_fake_data_section
+  = BFD_FAKE_SECTION (bfd_plugin_fake_data_section, NULL, "plug", 0,
+		      SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_HAS_CONTENTS);
+static asection bfd_plugin_fake_bss_section
+  = BFD_FAKE_SECTION (bfd_plugin_fake_bss_section, NULL, "plug", 0,
+		      SEC_ALLOC);
+static asection bfd_plugin_fake_common_section
+  = BFD_FAKE_SECTION (bfd_plugin_fake_common_section, NULL, NULL,
+		      0, SEC_IS_COMMON);
+
+/* Get symbols from object only section.  */
+
+static void
+bfd_plugin_get_symbols_in_object_only (bfd *abfd)
+{
+  struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
+  const char *object_only_file;
+  bfd *nbfd;
+  long storage;
+  long object_only_nsyms, added_nsyms, i;
+  asymbol **object_only_syms, **added_syms;
+
+  plugin_data->object_only_syms = NULL;
+  plugin_data->object_only_nsyms = 0;
+
+  if (abfd->sections == NULL && abfd->my_archive == NULL)
+    {
+      nbfd = bfd_openr (abfd->filename, NULL);
+      if (nbfd == NULL)
+	{
+	  (*_bfd_error_handler)
+	    (_("%s: failed to open to extract object only section: %s"),
+	     abfd->filename, bfd_errmsg (bfd_get_error ()));
+	  return;
+	}
+      /* Prevent this recursive call into bfd_check_format from
+	 attempting to load the plugin again while it is running.  */
+      nbfd->plugin_format = bfd_plugin_no;
+      if (!bfd_check_format (nbfd, bfd_object))
+	{
+	  /* There is no object only section if it isn't a bfd_object
+	     file.  */
+	  bfd_close (nbfd);
+	  return;
+	}
+
+      /* Copy LTO type derived from input sections.  */
+      abfd->lto_type = nbfd->lto_type;
+    }
+  else
+    {
+      BFD_ASSERT (abfd->plugin_format == bfd_plugin_no);
+      if (!bfd_check_format (abfd, bfd_object))
+	{
+	  (*_bfd_error_handler)
+	    (_("%pB: invalid file to extract object only section: %s"),
+	     abfd, bfd_errmsg (bfd_get_error ()));
+	  return;
+	}
+      nbfd = abfd;
+    }
+
+  if (nbfd->lto_type == lto_mixed_object
+      && (nbfd->flags & HAS_SYMS) != 0)
+    {
+      object_only_file = bfd_extract_object_only_section (nbfd);
+      if (object_only_file == NULL)
+	(*_bfd_error_handler)
+	  (_("%pB: failed to extract object only section: %s"),
+	   abfd, bfd_errmsg (bfd_get_error ()));
+    }
+  else
+    object_only_file = NULL;
+
+  /* Close the new bfd we just opened.  */
+  if (nbfd != abfd)
+    bfd_close (nbfd);
+
+  /* Return if there is no object only section or there is no
+     symbol in object only section.  */
+  if (!object_only_file)
+    return;
+
+  /* Open the file containing object only section.  */
+  nbfd = bfd_openr (object_only_file, NULL);
+  /* Prevent this recursive call into bfd_check_format from
+     attempting to load the plugin again while it is running.  */
+  nbfd->plugin_format = bfd_plugin_no;
+  if (!bfd_check_format (nbfd, bfd_object))
+    {
+      (*_bfd_error_handler)
+	(_("%pB: failed to open object only section: %s"),
+	 abfd, bfd_errmsg (bfd_get_error ()));
+      goto quit;
+    }
+
+  storage = bfd_get_symtab_upper_bound (nbfd);
+  if (storage <= 0)
+    {
+      if (storage < 0)
+	(*_bfd_error_handler)
+	  (_("%pB: failed to get symbol table in object only section: %s"),
+	   abfd, bfd_errmsg (bfd_get_error ()));
+
+      goto quit;
+    }
+
+  object_only_syms = (asymbol **) bfd_malloc (storage);
+  object_only_nsyms = bfd_canonicalize_symtab (nbfd, object_only_syms);
+
+  /* FIXME: We waste some spaces if not all symbols are copied.  */
+  added_syms = (asymbol **) bfd_alloc (abfd, storage);
+  added_nsyms = 0;
+
+  /* Copy only global symbols from object only section.  */
+  for (i = 0; i < object_only_nsyms; i++)
+    {
+      asection *sec = object_only_syms[i]->section;
+      flagword flags = object_only_syms[i]->flags;
+      asymbol *s;
+
+      if (bfd_is_com_section (sec))
+	sec = &bfd_plugin_fake_common_section;
+      else if (bfd_is_und_section (sec))
+	;
+      else if ((flags & (BSF_GLOBAL | BSF_WEAK | BSF_GNU_UNIQUE)) != 0)
+	{
+	  if ((sec->flags & SEC_CODE) != 0)
+	    sec = &bfd_plugin_fake_text_section;
+	  else if ((sec->flags & SEC_LOAD) != 0)
+	    sec = &bfd_plugin_fake_data_section;
+	  else
+	    sec = &bfd_plugin_fake_bss_section;
+	}
+      else
+	continue;
+
+      s = bfd_alloc (abfd, sizeof (asymbol));
+      BFD_ASSERT (s);
+      added_syms[added_nsyms++] = s;
+
+      s->section = sec;
+      s->the_bfd = abfd;
+      s->name = xstrdup (object_only_syms[i]->name);
+      s->value = 0;
+      s->flags = flags;
+      s->udata.p = NULL;
+    }
+
+  plugin_data->object_only_syms = added_syms;
+  plugin_data->object_only_nsyms = added_nsyms;
+
+  free (object_only_syms);
+
+quit:
+  /* Close and remove the object only section file.  */
+  bfd_close (nbfd);
+  unlink (object_only_file);
+}
+
+/* Register a claim-file handler, version 2. */
+
+static enum ld_plugin_status
+register_claim_file_v2 (ld_plugin_claim_file_handler_v2 handler)
+{
+  current_plugin->claim_file_v2 = handler;
   return LDPS_OK;
 }
 
@@ -140,57 +344,101 @@ add_symbols (void * handle,
 	     const struct ld_plugin_symbol * syms)
 {
   bfd *abfd = handle;
-  struct plugin_data_struct *plugin_data =
-    bfd_alloc (abfd, sizeof (plugin_data_struct));
+  struct plugin_data_struct *plugin_data = bfd_alloc (abfd,
+						      sizeof (*plugin_data));
+  if (!plugin_data)
+    return LDPS_ERR;
 
   plugin_data->nsyms = nsyms;
   plugin_data->syms = syms;
 
-  if (nsyms != 0)
+  abfd->tdata.plugin_data = plugin_data;
+
+  bfd_plugin_get_symbols_in_object_only (abfd);
+
+  if ((nsyms + plugin_data->object_only_nsyms) != 0)
     abfd->flags |= HAS_SYMS;
 
-  abfd->tdata.plugin_data = plugin_data;
   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
 bfd_plugin_open_input (bfd *ibfd, struct ld_plugin_input_file *file)
 {
   bfd *iobfd;
+  int fd;
 
   iobfd = ibfd;
   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;
 
-  /* The plugin API expects that the file descriptor won't be closed
-     and reused as done by the bfd file cache.  So open it again.
-     dup isn't good enough.  plugin IO uses lseek/read while BFD uses
-     fseek/fread.  It isn't wise to mix the unistd and stdio calls on
-     the same underlying file descriptor.  */
-  file->fd = open (file->name, O_RDONLY | O_BINARY);
-  if (file->fd < 0)
-    return 0;
+  /* Reuse the archive plugin file descriptor.  */
+  if (iobfd != ibfd)
+    fd = iobfd->archive_plugin_fd;
+  else
+    fd = -1;
+
+  if (fd < 0)
+    {
+      /* The plugin API expects that the file descriptor won't be closed
+	 and reused as done by the bfd file cache.  So open it again.
+	 dup isn't good enough.  plugin IO uses lseek/read while BFD uses
+	 fseek/fread.  It isn't wise to mix the unistd and stdio calls on
+	 the same underlying file descriptor.  */
+      fd = open (file->name, O_RDONLY | O_BINARY);
+      if (fd < 0)
+	{
+#ifndef EMFILE
+	  return 0;
+#else
+	  if (errno != EMFILE)
+	    return 0;
+
+#ifdef HAVE_GETRLIMIT
+	  struct rlimit lim;
+
+	  /* Complicated links involving lots of files and/or large
+	     archives can exhaust the number of file descriptors
+	     available to us.  If possible, try to allocate more
+	     descriptors.  */
+	  if (getrlimit (RLIMIT_NOFILE, & lim) == 0
+	      && lim.rlim_cur < lim.rlim_max)
+	    {
+	      lim.rlim_cur = lim.rlim_max;
+	      if (setrlimit (RLIMIT_NOFILE, &lim) == 0)
+		fd = open (file->name, O_RDONLY | O_BINARY);
+	    }
+
+	  if (fd < 0)
+#endif
+	    {
+	      _bfd_error_handler (_("plugin framework: out of file descriptors. Try using fewer objects/archives\n"));
+	      return 0;
+	    }
+#endif
+	}
+    }
 
   if (iobfd == ibfd)
     {
       struct stat stat_buf;
 
-      if (fstat (file->fd, &stat_buf))
+      if (fstat (fd, &stat_buf))
 	{
-	  close(file->fd);
+	  close (fd);
 	  return 0;
 	}
 
@@ -199,12 +447,51 @@ bfd_plugin_open_input (bfd *ibfd, struct
     }
   else
     {
+      /* Cache the archive plugin file descriptor.  */
+      iobfd->archive_plugin_fd = fd;
+      iobfd->archive_plugin_fd_open_count++;
+
       file->offset = ibfd->origin;
       file->filesize = arelt_size (ibfd);
     }
+
+  file->fd = fd;
   return 1;
 }
 
+/* Close the plugin file descriptor FD.  If ABFD isn't NULL, it is an
+   archive member.   */
+
+void
+bfd_plugin_close_file_descriptor (bfd *abfd, int fd)
+{
+  if (abfd == NULL)
+    close (fd);
+  else
+    {
+      while (abfd->my_archive
+	     && !bfd_is_thin_archive (abfd->my_archive))
+	abfd = abfd->my_archive;
+
+      /* Close the file descriptor if there is no archive plugin file
+	 descriptor.  */
+      if (abfd->archive_plugin_fd == -1)
+	{
+	  close (fd);
+	  return;
+	}
+
+      abfd->archive_plugin_fd_open_count--;
+      /* Dup the archive plugin file descriptor for later use, which
+	 will be closed by _bfd_archive_close_and_cleanup.  */
+      if (abfd->archive_plugin_fd_open_count == 0)
+	{
+	  abfd->archive_plugin_fd = dup (fd);
+	  close (fd);
+	}
+    }
+}
+
 static int
 try_claim (bfd *abfd)
 {
@@ -212,68 +499,91 @@ 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))
+    {
+      bool claim_file_called = false;
+      if (current_plugin->claim_file_v2)
+	{
+	  current_plugin->claim_file_v2 (&file, &claimed, false);
+	  claim_file_called = true;
+	}
+      else if (current_plugin->claim_file)
+	{
+	  current_plugin->claim_file (&file, &claimed);
+	  claim_file_called = true;
+	}
+      if (claim_file_called)
+	bfd_plugin_close_file_descriptor ((abfd->my_archive != NULL
+					   ? abfd : NULL),
+					  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 bool
+try_load_plugin (const char *pname,
+		 struct plugin_list_entry *plugin_list_iter,
+		 bfd *abfd,
+		 bool build_list_p)
 {
-  void *plugin_handle = NULL;
-  struct ld_plugin_tv tv[4];
+  void *plugin_handle;
+  struct ld_plugin_tv tv[6];
   int i;
   ld_plugin_onload onload;
   enum ld_plugin_status status;
-  struct plugin_list_entry *plugin_list_iter;
+  bool 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;
@@ -284,40 +594,51 @@ try_load_plugin (const char *pname, bfd
   tv[i].tv_u.tv_register_claim_file = register_claim_file;
 
   ++i;
+  tv[i].tv_tag = LDPT_REGISTER_CLAIM_FILE_HOOK_V2;
+  tv[i].tv_u.tv_register_claim_file_v2 = register_claim_file_v2;
+
+  ++i;
   tv[i].tv_tag = LDPT_ADD_SYMBOLS;
   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;
 
+  /* Setting bfd_plugin_no here prevents recursive calls into
+     bfd_check_format from within the plugin (unless the plugin opens
+     another bfd.)  Attempting to load the plugin again while it is
+     running is *not* a good idea.  */
   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 *, bool);
 
 static const char *plugin_name;
 
@@ -325,47 +646,28 @@ void
 bfd_plugin_set_plugin (const char *p)
 {
   plugin_name = p;
-  has_plugin = p != NULL;
-}
-
-/* Return TRUE if a plugin library is used.  */
-
-bfd_boolean
-bfd_plugin_specified_p (void)
-{
-  return has_plugin > 0;
 }
 
 /* Return TRUE if ABFD can be claimed by linker LTO plugin.  */
 
-bfd_boolean
+bool
 bfd_link_plugin_object_p (bfd *abfd)
 {
   if (ld_plugin_object_p)
-    return ld_plugin_object_p (abfd) != NULL;
-  return FALSE;
-}
-
-extern const bfd_target plugin_vec;
-
-/* Return TRUE if TARGET is a pointer to plugin_vec.  */
-
-bfd_boolean
-bfd_plugin_target_p (const bfd_target *target)
-{
-  return target == &plugin_vec;
+    return ld_plugin_object_p (abfd, false) != NULL;
+  return false;
 }
 
 /* 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 *, bool))
 {
   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 +676,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,83 +714,100 @@ 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 bool
+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;
 
-static const bfd_target *
+  return false;
+}
+
+
+static bfd_cleanup
 bfd_plugin_object_p (bfd *abfd)
 {
+  /* Since ld_plugin_object_p is called only for linker command-line input
+     objects, pass true to ld_plugin_object_p so that the same input IR
+     file won't be included twice if the LDPT_REGISTER_CLAIM_FILE_HOOK_V2
+     isn't used.  */
   if (ld_plugin_object_p)
-    return ld_plugin_object_p (abfd);
+    return ld_plugin_object_p (abfd, true);
 
   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
    to the output bfd.  */
 
-static bfd_boolean
+static bool
 bfd_plugin_bfd_copy_private_bfd_data (bfd *ibfd ATTRIBUTE_UNUSED,
 				      bfd *obfd ATTRIBUTE_UNUSED)
 {
   BFD_ASSERT (0);
-  return TRUE;
+  return true;
 }
 
 /* Copy any private info we understand from the input section
    to the output section.  */
 
-static bfd_boolean
+static bool
 bfd_plugin_bfd_copy_private_section_data (bfd *ibfd ATTRIBUTE_UNUSED,
 					  asection *isection ATTRIBUTE_UNUSED,
 					  bfd *obfd ATTRIBUTE_UNUSED,
-					  asection *osection ATTRIBUTE_UNUSED)
+					  asection *osection ATTRIBUTE_UNUSED,
+					  struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
 {
   BFD_ASSERT (0);
-  return TRUE;
+  return true;
 }
 
 /* Copy any private info we understand from the input symbol
    to the output symbol.  */
 
-static bfd_boolean
+static bool
 bfd_plugin_bfd_copy_private_symbol_data (bfd *ibfd ATTRIBUTE_UNUSED,
 					 asymbol *isymbol ATTRIBUTE_UNUSED,
 					 bfd *obfd ATTRIBUTE_UNUSED,
 					 asymbol *osymbol ATTRIBUTE_UNUSED)
 {
   BFD_ASSERT (0);
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
-bfd_plugin_bfd_print_private_bfd_data (bfd *abfd ATTRIBUTE_UNUSED, PTR ptr ATTRIBUTE_UNUSED)
+static bool
+bfd_plugin_bfd_print_private_bfd_data (bfd *abfd ATTRIBUTE_UNUSED, void *ptr ATTRIBUTE_UNUSED)
 {
   BFD_ASSERT (0);
-  return TRUE;
+  return true;
 }
 
 static char *
@@ -523,7 +835,8 @@ static long
 bfd_plugin_get_symtab_upper_bound (bfd *abfd)
 {
   struct plugin_data_struct *plugin_data = abfd->tdata.plugin_data;
-  long nsyms = plugin_data->nsyms;
+  /* Add symbols from object only section.  */
+  long nsyms = plugin_data->nsyms + plugin_data->object_only_nsyms;
 
   BFD_ASSERT (nsyms >= 0);
 
@@ -557,12 +870,7 @@ 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,
-			SEC_ALLOC | SEC_LOAD | SEC_CODE | SEC_HAS_CONTENTS);
-  static asection fake_common_section
-    = BFD_FAKE_SECTION (fake_common_section, NULL, "plug", 0, SEC_IS_COMMON);
-  int i;
+  int i, j;
 
   for (i = 0; i < nsyms; i++)
     {
@@ -575,10 +883,11 @@ bfd_plugin_canonicalize_symtab (bfd *abf
       s->name = syms[i].name;
       s->value = 0;
       s->flags = convert_flags (&syms[i]);
+      s->udata.p = NULL;
       switch (syms[i].def)
 	{
 	case LDPK_COMMON:
-	  s->section = &fake_common_section;
+	  s->section = &bfd_plugin_fake_common_section;
 	  break;
 	case LDPK_UNDEF:
 	case LDPK_WEAKUNDEF:
@@ -586,21 +895,42 @@ 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 = &bfd_plugin_fake_text_section;
+		break;
+	      case LDST_VARIABLE:
+		if (syms[i].section_kind == LDSSK_BSS)
+		  s->section = &bfd_plugin_fake_bss_section;
+		else
+		  s->section = &bfd_plugin_fake_data_section;
+		break;
+	      }
+	  else
+	    s->section = &bfd_plugin_fake_text_section;
 	  break;
 	default:
 	  BFD_ASSERT (0);
 	}
-
-      s->udata.p = (void *) &syms[i];
     }
 
+  /* Copy symbols from object only section.  */
+  nsyms += plugin_data->object_only_nsyms;
+  for (j = 0; j < plugin_data->object_only_nsyms; j++, i++)
+    alocation[i] = plugin_data->object_only_syms[j];
+
   return nsyms;
 }
 
 static void
 bfd_plugin_print_symbol (bfd *abfd ATTRIBUTE_UNUSED,
-			 PTR afile ATTRIBUTE_UNUSED,
+			 void *afile ATTRIBUTE_UNUSED,
 			 asymbol *symbol ATTRIBUTE_UNUSED,
 			 bfd_print_symbol_type how ATTRIBUTE_UNUSED)
 {
@@ -650,6 +980,7 @@ const bfd_target plugin_vec =
   '/',				/* ar_pad_char.  */
   15,				/* ar_max_namelen.  */
   255,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
 
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
@@ -661,30 +992,26 @@ const bfd_target plugin_vec =
   {				/* bfd_check_format.  */
     _bfd_dummy_target,
     bfd_plugin_object_p,
-    bfd_generic_archive_p,
+    _bfd_dummy_target,
     _bfd_dummy_target
   },
   {				/* bfd_set_format.  */
     _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
-    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
   {				/* bfd_write_contents.  */
     _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
-    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
 
   BFD_JUMP_TABLE_GENERIC (bfd_plugin),
   BFD_JUMP_TABLE_COPY (bfd_plugin),
   BFD_JUMP_TABLE_CORE (bfd_plugin),
-#ifdef USE_64_BIT_ARCHIVE
-  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_64_bit),
-#else
-  BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff),
-#endif
+  BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
   BFD_JUMP_TABLE_SYMBOLS (bfd_plugin),
   BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
   BFD_JUMP_TABLE_WRITE (bfd_plugin),
@@ -695,4 +1022,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.20200303/bfd/plugin.h ./bfd/plugin.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/plugin.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/plugin.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Plugin support for BFD.
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -21,19 +21,75 @@
 #ifndef _PLUGIN_H_
 #define _PLUGIN_H_
 
+struct ld_plugin_input_file;
+
+#if BFD_SUPPORTS_PLUGINS
 void bfd_plugin_set_program_name (const char *);
 int bfd_plugin_open_input (bfd *, struct ld_plugin_input_file *);
 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 *));
+bool bfd_link_plugin_object_p (bfd *);
+void register_ld_plugin_object_p (bfd_cleanup (*object_p) (bfd *, bool));
+void bfd_plugin_close_file_descriptor (bfd *, int);
+
+static inline const bfd_target *
+bfd_plugin_vec (void)
+{
+  extern const bfd_target plugin_vec;
+  return &plugin_vec;
+}
+
+static inline bool
+bfd_plugin_target_p (const bfd_target *target)
+{
+  return target == bfd_plugin_vec ();
+}
+#else
+static inline void
+bfd_plugin_set_program_name (const char *name ATTRIBUTE_UNUSED)
+{
+}
+
+static inline int
+bfd_plugin_open_input (bfd *ibfd ATTRIBUTE_UNUSED,
+		       struct ld_plugin_input_file *file ATTRIBUTE_UNUSED)
+{
+  return 0;
+}
+
+static inline void
+bfd_plugin_set_plugin (const char *p ATTRIBUTE_UNUSED)
+{
+}
+
+static inline bool
+bfd_link_plugin_object_p (bfd *abfd ATTRIBUTE_UNUSED)
+{
+  return false;
+}
+
+static inline void
+register_ld_plugin_object_p
+  (bfd_cleanup (*object_p) (bfd *, bool) ATTRIBUTE_UNUSED)
+{
+}
 
-typedef struct plugin_data_struct
+static inline void
+bfd_plugin_close_file_descriptor (bfd *abfd ATTRIBUTE_UNUSED,
+				  int fd ATTRIBUTE_UNUSED)
 {
-  int nsyms;
-  const struct ld_plugin_symbol *syms;
 }
-plugin_data_struct;
+
+static inline const bfd_target *
+bfd_plugin_vec (void)
+{
+  return NULL;
+}
+
+static inline bool
+bfd_plugin_target_p (const bfd_target *target ATTRIBUTE_UNUSED)
+{
+  return false;
+}
+#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.20200303/bfd/po/bfd.pot ./bfd/po/bfd.pot
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/bfd.pot	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/bfd.pot	2026-03-05 02:07:20.000000000 +0000
@@ -7,246 +7,263 @@
 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"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2025-07-13 08:43+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"
-"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "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:444 pdp11.c:481
+#, c-format
+msgid "%pB: %#<PRIx64> overflows header %s field"
+msgstr ""
+
+#: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495
 #, c-format
 msgid "%pB: can not represent section `%pA' in a.out object file format"
 msgstr ""
 
-#: aoutx.h:1582 pdp11.c:1371
+#: aoutx.h:1562 pdp11.c:1467
 #, 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:1565 vms-alpha.c:8473
 msgid "*unknown*"
 msgstr ""
 
-#: aoutx.h:1721
+#: aoutx.h:1701 pdp11.c:1563
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr ""
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1945
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr ""
+
+#: aoutx.h:2389 aoutx.h:2407 pdp11.c:2040
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr ""
 
-#: aoutx.h:4086
+#: aoutx.h:4040 pdp11.c:3402
 #, 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
-#: 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
+#: aoutx.h:4360 coff-alpha.c:604 coff-mips.c:356 coff-rs6000.c:3037
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531
+#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4692
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6246 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2211 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3294
+#: elf32-nds32.c:3315 elf32-nds32.c:5084 elf32-or1k.c:1085 elf32-pj.c:326
+#: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291
+#: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347
+#: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163
+#: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537
+#: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924
+#: elf32-v850.c:4254 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510
+#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4058
+#: elf64-alpha.c:4206 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3428 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:331 elf64-s390.c:381 elf64-x86-64.c:305 elf64-x86-64.c:2558
+#: elfn32-mips.c:3799 elfxx-ia64.c:324 elfxx-loongarch.c:1897
+#: elfxx-riscv.c:1068 elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:907
+#: elfxx-tilegx.c:947
+#: elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2316
+#: elfnn-ia64.c:214
+#: elfnn-ia64.c:3823
+#: elfnn-kvx.c:259
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr ""
 
-#: aoutx.h:5434 pdp11.c:3694
+#: aoutx.h:5380 pdp11.c:3818
 #, 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:748
+msgid "%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr ""
+
+#: archive.c:2282
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr ""
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2351 archive.c:2408 elflink.c:4956 linker.c:1470
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr ""
 
-#: archive.c:2559
+#: archive.c:2640
 msgid "Reading archive file mod timestamp"
 msgstr ""
 
-#: archive.c:2583
+#: archive.c:2671
 msgid "Writing updated armap timestamp"
 msgstr ""
 
-#: bfd.c:449
+#: bfd.c:793
 msgid "no error"
 msgstr ""
 
-#: bfd.c:450
+#: bfd.c:794
 msgid "system call error"
 msgstr ""
 
-#: bfd.c:451
+#: bfd.c:795
 msgid "invalid bfd target"
 msgstr ""
 
-#: bfd.c:452
+#: bfd.c:796
 msgid "file in wrong format"
 msgstr ""
 
-#: bfd.c:453
+#: bfd.c:797
 msgid "archive object file in wrong format"
 msgstr ""
 
-#: bfd.c:454
+#: bfd.c:798
 msgid "invalid operation"
 msgstr ""
 
-#: bfd.c:455
+#: bfd.c:799
 msgid "memory exhausted"
 msgstr ""
 
-#: bfd.c:456
+#: bfd.c:800
 msgid "no symbols"
 msgstr ""
 
-#: bfd.c:457
+#: bfd.c:801
 msgid "archive has no index; run ranlib to add one"
 msgstr ""
 
-#: bfd.c:458
+#: bfd.c:802
 msgid "no more archived files"
 msgstr ""
 
-#: bfd.c:459
+#: bfd.c:803
 msgid "malformed archive"
 msgstr ""
 
-#: bfd.c:460
+#: bfd.c:804
 msgid "DSO missing from command line"
 msgstr ""
 
-#: bfd.c:461
+#: bfd.c:805
 msgid "file format not recognized"
 msgstr ""
 
-#: bfd.c:462
+#: bfd.c:806
 msgid "file format is ambiguous"
 msgstr ""
 
-#: bfd.c:463
+#: bfd.c:807
 msgid "section has no contents"
 msgstr ""
 
-#: bfd.c:464
+#: bfd.c:808
 msgid "nonrepresentable section on output"
 msgstr ""
 
-#: bfd.c:465
+#: bfd.c:809
 msgid "symbol needs debug section which does not exist"
 msgstr ""
 
-#: bfd.c:466
+#: bfd.c:810
 msgid "bad value"
 msgstr ""
 
-#: bfd.c:467
+#: bfd.c:811
 msgid "file truncated"
 msgstr ""
 
-#: bfd.c:468
+#: bfd.c:812
 msgid "file too big"
 msgstr ""
 
-#: bfd.c:469
+#: bfd.c:813
+msgid "sorry, cannot handle this file"
+msgstr ""
+
+#: bfd.c:814
 #, c-format
 msgid "error reading %s: %s"
 msgstr ""
 
-#: bfd.c:470
+#: bfd.c:815
 msgid "#<invalid error code>"
 msgstr ""
 
-#: bfd.c:1429
+#: bfd.c:2266
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr ""
 
-#: bfd.c:1442
-#, c-format
-msgid "BFD %s internal error, aborting at %s:%d in %s\n"
-msgstr ""
-
-#: bfd.c:1447
+#: bfd.c:2279
 #, c-format
-msgid "BFD %s internal error, aborting at %s:%d\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n"
 msgstr ""
 
-#: bfd.c:1449
-msgid "Please report this bug.\n"
-msgstr ""
-
-#: bfdwin.c:206
+#: bfd.c:2283
 #, c-format
-msgid "not mapping: data=%lx mapped=%d\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d\n"
 msgstr ""
 
-#: bfdwin.c:209
+#: bfd.c:2286
 #, c-format
-msgid "not mapping: env var not set\n"
+msgid "Please report this bug.\n"
 msgstr ""
 
-#: binary.c:276
+#: binary.c:277
 #, c-format
 msgid "warning: writing section `%pA' at huge (ie negative) file offset"
 msgstr ""
 
-#: cache.c:271
+#: cache.c:290
 #, c-format
-msgid "reopening %pB: %s\n"
+msgid "reopening %pB: %s"
 msgstr ""
 
 #: coff-alpha.c:450
@@ -256,1136 +273,1418 @@ 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:914 coff-alpha.c:941 coff-alpha.c:2009 coff-mips.c:948
 msgid "GP relative relocation used when GP not defined"
 msgstr ""
 
-#: coff-alpha.c:1443
+#: coff-alpha.c:1177 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13195
+#: elfxx-mips.c:13594 reloc.c:8602 reloc16.c:314
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr ""
+
+#: coff-alpha.c:1183 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13604
+#: reloc.c:8612
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr ""
+
+#: coff-alpha.c:1189 elfxx-mips.c:13613 reloc.c:8621
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr ""
+
+#: coff-alpha.c:1515
 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:1992
 #, c-format
-msgid "%pB: %s unsupported"
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr ""
+
+#: coff-alpha.c:2004
+#, c-format
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr ""
+
+#: coff-go32.c:167 coffswap.h:812
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
 msgstr ""
 
-#: coff-mips.c:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
-#: elf64-mips.c:3451 elfn32-mips.c:3276
+#: coff-mips.c:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
 msgid "GP relative relocation when _gp not defined"
 msgstr ""
 
-#: coff-rs6000.c:2858
+#: coff-rs6000.c:484 coff64-rs6000.c:377
+#, c-format
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr ""
+
+#: coff-rs6000.c:571 coff64-rs6000.c:497
+#, c-format
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr ""
+
+#: coff-rs6000.c:3127
 #, 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:3251 coff64-rs6000.c:848
+#, c-format
+msgid "Unable to find the stub entry targeting %s"
+msgstr ""
+
+#: coff-rs6000.c:3366
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr ""
+
+#: coff-rs6000.c:3379
+#, c-format
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr ""
+
+#: coff-rs6000.c:3785
+#, c-format
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr ""
+
+#: coff-rs6000.c:4047 coff64-rs6000.c:2021
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized smclas %d"
 msgstr ""
 
-#: coff-sh.c:780 elf32-sh.c:521
+#: coff-sh.c:781 elf32-sh.c:521
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
 msgstr ""
 
-#: coff-sh.c:791
+#: coff-sh.c:792
 #, 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:810 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:835 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:852 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:973 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:983 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:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
 msgstr ""
 
-#: coff-sh.c:1454
+#: coff-sh.c:1443
 #, c-format
 msgid "%pB: fatal: generic symbols retrieved before relaxing"
 msgstr ""
 
-#: coff-sh.c:2785 cofflink.c:2965
+#: coff-sh.c:2773 cofflink.c:2986
 #, c-format
 msgid "%pB: illegal symbol index %ld in relocs"
 msgstr ""
 
-#: coff-tic4x.c:228 coff-tic54x.c:366 coffcode.h:5010
+#: coff-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5305
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr ""
 
-#: coff-tic80.c:441
+#: coff-x86_64.c:147
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr ""
+
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
 #, c-format
-msgid "unsupported relocation type %#x"
+msgid "%pB: C_STAT isn't supported by XCOFF64"
 msgstr ""
 
-#: coff-tic80.c:672 cofflink.c:3127
+#: coff64-rs6000.c:477
 #, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgid "%pB: wrong auxtype %#x for storage class %#x"
 msgstr ""
 
-#: coffcode.h:954
+#: coff64-rs6000.c:1598
+#, c-format
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr ""
+
+#: coffcode.h:951
 #, 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:976
 #, c-format
-msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
+msgid "%pB: warning: no symbol for section '%s' found"
 msgstr ""
 
-#: coffcode.h:1001
+#: coffcode.h:1148
 #, c-format
-msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
+msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr ""
 
-#: coffcode.h:1011
+#: coffcode.h:1159
 #, c-format
-msgid "%pB: warning: no symbol for section '%s' found"
+msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 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:1267
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr ""
 
-#: coffcode.h:1306
+#: coffcode.h:1337
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr ""
 
-#: coffcode.h:1917
+#: coffcode.h:1945
 #, c-format
-msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
+msgid "%pB: overflow reloc count too small"
 msgstr ""
 
-#: coffcode.h:2315
+#: coffcode.h:1954 coffcode.h:2019
 #, c-format
-msgid "unrecognized TI COFF target id '0x%x'"
+msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr ""
 
-#: coffcode.h:2599
+#: coffcode.h:2402
 #, c-format
-msgid "%pB: reloc against a non-existent symbol index: %ld"
+msgid "unrecognized TI COFF target id '0x%x'"
 msgstr ""
 
-#: coffcode.h:2910
+#: coffcode.h:2681
 #, c-format
-msgid "%pB: page size is too large (0x%x)"
+msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr ""
 
-#: coffcode.h:3070
+#: coffcode.h:3153
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr ""
 
-#: coffcode.h:3489
+#: coffcode.h:3681
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr ""
 
-#: coffcode.h:3589
+#: coffcode.h:3782
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr ""
 
-#: coffcode.h:4276
-#, c-format
-msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
-msgstr ""
-
-#: coffcode.h:4291
+#: coffcode.h:4523
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr ""
 
-#: coffcode.h:4325 coffcode.h:4339
+#: coffcode.h:4569 coffcode.h:4583
 #, c-format
 msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
 msgstr ""
 
-#: coffcode.h:4353
+#: coffcode.h:4597
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr ""
 
-#: coffcode.h:4366
+#: coffcode.h:4610
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr ""
 
-#: coffcode.h:4774
+#: coffcode.h:5034
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr ""
 
-#: coffcode.h:4904
+#: coffcode.h:5174
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr ""
 
-#: coffcode.h:5050
+#: coffcode.h:5345
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr ""
 
-#: coffgen.c:178 elf.c:1216
+#: coffgen.c:257 elf.c:1060
 #, c-format
-msgid "%pB: unable to initialize compress status for section %s"
+msgid "%pB: unable to compress section %s"
 msgstr ""
 
-#: coffgen.c:202 elf.c:1227
+#: coffgen.c:267 elf.c:1070
 #, c-format
-msgid "%pB: unable to initialize decompress status for section %s"
+msgid "%pB: unable to decompress 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:1795
 #, 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:2179 coffgen.c:2318 cofflink.c:2051 ecoff.c:1444 elf.c:2313
+#: elf.c:2345 pef.c:214 syms.c:789 xcofflink.c:384 xcofflink.c:5577
 msgid "<corrupt>"
 msgstr ""
 
-#: coffgen.c:2114
+#: coffgen.c:2208
 #, c-format
 msgid "<corrupt info> %s"
 msgstr ""
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
-msgid "%F%P: already_linked_table: %E\n"
+#: coffgen.c:2818 elflink.c:15490 linker.c:3061
+msgid "%P: already_linked_table: %E\n"
 msgstr ""
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3175 elflink.c:14430
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr ""
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3252 elflink.c:14661
 msgid "warning: gc-sections option ignored"
 msgstr ""
 
-#: cofflink.c:352
+#: cofflink.c:399
 #, 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:504 elf64-ia64-vms.c:5200 elflink.c:5587
 #, c-format
 msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
 msgstr ""
 
-#: cofflink.c:2373
+#: cofflink.c:2379
 #, c-format
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr ""
 
-#: cofflink.c:2436 elflink.c:10810
+#: cofflink.c:2442 elflink.c:11880
 #, c-format
 msgid ""
-"%X`%s' referenced in section `%pA' of %pB: defined in discarded section `"
-"%pA' of %pB\n"
+"%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%"
+"pA' of %pB\n"
+msgstr ""
+
+#: cofflink.c:2637
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
 msgstr ""
 
-#: cofflink.c:2734
+#: cofflink.c:2755
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr ""
 
-#: cofflink.c:2742
+#: cofflink.c:2763
 #, c-format
 msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 msgstr ""
 
-#: coffswap.h:789
+#: cofflink.c:3157
 #, 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:826
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr ""
 
-#: compress.c:260
+#: compress.c:732 compress.c:749 libbfd.c:1322
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr ""
 
-#: cpu-arm.c:298 cpu-arm.c:310
+#: cpu-arm.c:438
 #, c-format
-msgid ""
-"error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
+msgid "warning: unable to update contents of %s section in %pB"
 msgstr ""
 
-#: cpu-arm.c:446
+#: dwarf2.c:702
 #, c-format
-msgid "warning: unable to update contents of %s section in %pB"
+msgid "DWARF error: can't find %s section."
 msgstr ""
 
-#: dwarf2.c:544
+#: dwarf2.c:710
 #, c-format
-msgid "DWARF error: can't find %s section."
+msgid "DWARF error: section %s has no contents"
+msgstr ""
+
+#. PR 26946
+#: dwarf2.c:719
+#, c-format
+msgid "DWARF error: section %s is too big"
 msgstr ""
 
-#: dwarf2.c:579
+#: dwarf2.c:754
 #, c-format
 msgid ""
 "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
 msgstr ""
 
-#: dwarf2.c:1107
+#: dwarf2.c:1501
 msgid "DWARF error: info pointer extends beyond end of attributes"
 msgstr ""
 
-#: dwarf2.c:1275
+#: dwarf2.c:1693
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr ""
 
-#: dwarf2.c:1581
+#: dwarf2.c:2050
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr ""
 
-#: dwarf2.c:1926
+#: dwarf2.c:2614
 msgid "DWARF error: zero format count"
 msgstr ""
 
-#: dwarf2.c:1936
+#: dwarf2.c:2624
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr ""
 
-#: dwarf2.c:1977
+#: dwarf2.c:2663
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr ""
 
-#: dwarf2.c:2057
+#: dwarf2.c:2736
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr ""
 
-#: dwarf2.c:2087
+#: dwarf2.c:2763
 #, 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:2776
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr ""
 
-#: dwarf2.c:2110
+#: dwarf2.c:2785
 msgid "DWARF error: ran out of room reading prologue"
 msgstr ""
 
-#: dwarf2.c:2128
+#: dwarf2.c:2801
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr ""
 
-#: dwarf2.c:2155
+#: dwarf2.c:2823
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr ""
 
-#: dwarf2.c:2174
+#: dwarf2.c:2835
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr ""
 
-#: dwarf2.c:2347
+#: dwarf2.c:3012
 msgid "DWARF error: mangled line number section"
 msgstr ""
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:3483
+msgid "DWARF error: abstract instance recursion detected"
+msgstr ""
+
+#: dwarf2.c:3517 dwarf2.c:3607
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr ""
 
-#: dwarf2.c:2889
+#: dwarf2.c:3533
 #, c-format
 msgid "DWARF error: unable to read alt ref %<PRIu64>"
 msgstr ""
 
-#: dwarf2.c:2930 dwarf2.c:3103 dwarf2.c:3457
+#: dwarf2.c:3585
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr ""
+
+#: dwarf2.c:3622 dwarf2.c:3938 dwarf2.c:4511
 #, c-format
 msgid "DWARF error: could not find abbrev number %u"
 msgstr ""
 
-#: dwarf2.c:2947
-msgid "DWARF error: abstract instance recursion detected"
+#: dwarf2.c:4211
+#, c-format
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr ""
+
+#: dwarf2.c:4357 dwarf2.c:4611
+msgid ""
+"DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
 msgstr ""
 
-#: dwarf2.c:3376
+#: dwarf2.c:4428
 #, 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:4475
 #, c-format
 msgid ""
 "DWARF error: found address size '%u', this reader can not handle sizes "
 "greater than '%u'"
 msgstr ""
 
-#: dwarf2.c:3523
-msgid ""
-"DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
-msgstr ""
-
-#: ecoff.c:971
+#: ecoff.c:1005
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr ""
 
-#: ecoff.c:1268
+#: ecoff.c:1301
 #, c-format
 msgid "unknown basic type %d"
 msgstr ""
 
-#: ecoff.c:1525
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1566 ecoff.c:1569
 #, c-format
 msgid ""
 "\n"
 "      First symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1548
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %-7ld   Type:  %s"
 msgstr ""
 
-#: ecoff.c:1555
+#: ecoff.c:1592
 #, c-format
 msgid ""
 "\n"
 "      Local symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1563
+#: ecoff.c:1600
 #, c-format
 msgid ""
 "\n"
 "      struct; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1568
+#: ecoff.c:1605
 #, c-format
 msgid ""
 "\n"
 "      union; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1573
+#: ecoff.c:1610
 #, c-format
 msgid ""
 "\n"
 "      enum; End+1 symbol: %ld"
 msgstr ""
 
-#: ecoff.c:1579
+#: ecoff.c:1618
 #, c-format
 msgid ""
 "\n"
 "      Type: %s"
 msgstr ""
 
-#: elf-attrs.c:446
+#: elf-attrs.c:424 elf-attrs.c:454 elf-attrs.c:596
+msgid "error adding attribute"
+msgstr ""
+
+#: elf-attrs.c:513
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr ""
+
+#: elf-attrs.c:623
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr ""
 
-#: elf-attrs.c:487
+#: elf-attrs.c:642
 #, c-format
-msgid "%pB: error: attribute section length too small: %<PRId64>"
+msgid "%pB: error: unknown attributes version '%c'(%d) - expecting 'A'\n"
 msgstr ""
 
-#: elf-attrs.c:615
+#: elf-attrs.c:688
 #, 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:698
 #, c-format
 msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
 msgstr ""
 
-#: elf-eh-frame.c:944
+#: elf-eh-frame.c:952
 #, c-format
 msgid "discarding zero address range FDE in %pB(%pA).\n"
 msgstr ""
 
-#: elf-eh-frame.c:1049
+#: elf-eh-frame.c:1057
 #, c-format
 msgid "error in %pB(%pA); no .eh_frame_hdr table will be created"
 msgstr ""
 
-#: elf-eh-frame.c:1539
+#: elf-eh-frame.c:1548
 #, c-format
 msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created"
 msgstr ""
 
-#: elf-eh-frame.c:1546
+#: elf-eh-frame.c:1555
 msgid ""
 "further warnings about FDE encoding preventing .eh_frame_hdr generation "
 "dropped"
 msgstr ""
 
-#: elf-eh-frame.c:1868
+#: elf-eh-frame.c:1878
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr ""
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1892
 #, c-format
 msgid "%pB: %pA invalid input section size"
 msgstr ""
 
-#: elf-eh-frame.c:1890
+#: elf-eh-frame.c:1900
 #, c-format
 msgid "%pB: %pA points past end of text section"
 msgstr ""
 
-#: elf-eh-frame.c:2139
+#: elf-eh-frame.c:2153
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr ""
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2323
 #, c-format
 msgid "invalid output section for .eh_frame_entry: %pA"
 msgstr ""
 
-#: elf-eh-frame.c:2332
+#: elf-eh-frame.c:2346
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr ""
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2500
 msgid ".eh_frame_hdr entry overflow"
 msgstr ""
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2502
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ""
 
-#: elf-ifunc.c:149
+#. xgettext:c-format.
+#: elf-ifunc.c:144
+#: elfnn-loongarch.c:1713
 #, 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 -"
+"%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 ""
 
-#: 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:2146 elf32-bfin.c:3132 elf32-cr16.c:1429
+#: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624
+#: elf32-m32r.c:2839 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1983
+#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6099
+#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5084
+#: elf32-tilepro.c:3371 elf32-v850.c:2297 elf32-visium.c:680
+#: elf32-xstormy16.c:931 elf64-bpf.c:339 elf64-mmix.c:1537 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:2150 elf32-bfin.c:3136 elf32-cr16.c:1433
+#: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2843 elf32-m68hc1x.c:1275
+#: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681
+#: elf32-moxie.c:292 elf32-msp430.c:1510 elf32-nds32.c:6103 elf32-or1k.c:1899
+#: elf32-score.c:2728 elf32-score7.c:2539 elf32-spu.c:5088
+#: elf32-tilepro.c:3375 elf32-v850.c:2301 elf32-visium.c:684
+#: elf32-xstormy16.c:935 elf64-mmix.c:1541 elfxx-mips.c:10727
+#: 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:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2847 elf32-m68hc1x.c:1279
+#: elf32-microblaze.c:1685 elf32-nds32.c:6107 elf32-score.c:2732
+#: elf32-score7.c:2543 elf32-spu.c:5092
 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:2167 elf32-bfin.c:3144 elf32-cr16.c:1441
+#: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636
+#: elf32-m32r.c:2851 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1995
+#: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518
+#: elf32-mt.c:410 elf32-nds32.c:6111 elf32-or1k.c:1907 elf32-score.c:2741
+#: elf32-score7.c:2547 elf32-spu.c:5096 elf32-tilepro.c:3383 elf32-v850.c:2321
+#: elf32-visium.c:692 elf32-xstormy16.c:943 elf64-bpf.c:352 elf64-mmix.c:1549
+#: elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr ""
 
-#: elf-m10300.c:1029
+#: elf-m10300.c:1030
 #, c-format
 msgid "%pB: unsupported transition from %s to %s"
 msgstr ""
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1197
 #, 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:2093 elf32-arm.c:13476 elf32-i386.c:3545 elf32-m32r.c:2333
+#: elf32-m68k.c:3931 elf32-s390.c:3074 elf32-sh.c:3674 elf32-tilepro.c:3274
+#: elf32-xtensa.c:3022 elf64-s390.c:3391 elf64-x86-64.c:5025
+#: elfxx-sparc.c:2924 elfxx-sparc.c:3820 elfxx-tilegx.c:3667
+#: elfnn-aarch64.c:5743
+#: elfnn-aarch64.c:7361
+#: elfnn-kvx.c:2773
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr ""
 
-#: elf-m10300.c:2156
+#: elf-m10300.c:2155
 msgid ""
 "error: inappropriate relocation type for shared library (did you forget -"
 "fpic?)"
 msgstr ""
 
-#: elf-m10300.c:2160
+#: elf-m10300.c:2159
 #, 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:2162
 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
-msgid "%P%F: --relax and -r may not be used together\n"
+#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5627 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2691 reloc.c:8376 reloc16.c:155
+#: elfnn-ia64.c:365
+msgid "%P: --relax and -r may not be used together\n"
 msgstr ""
 
-#: elf-properties.c:65
+#: elf-properties.c:121
 #, c-format
 msgid "%pB: out of memory in _bfd_elf_get_property"
 msgstr ""
 
-#: elf-properties.c:91
+#: elf-properties.c:150
 #, c-format
 msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
 msgstr ""
 
-#: elf-properties.c:112
+#: elf-properties.c:171
 #, c-format
 msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
 msgstr ""
 
-#: elf-properties.c:151
+#: elf-properties.c:210
 #, c-format
 msgid "warning: %pB: corrupt stack size: 0x%x"
 msgstr ""
 
-#: elf-properties.c:169
+#: elf-properties.c:228
 #, c-format
 msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
 msgstr ""
 
-#: elf-properties.c:186
+#: elf-properties.c:243
+#, c-format
+msgid "warning: %pB: corrupt memory sealing size: 0x%x"
+msgstr ""
+
+#: elf-properties.c:262
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr ""
+
+#: elf-properties.c:287
 #, c-format
 msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
 msgstr ""
 
-#: elf-properties.c:301
+#: elf-properties.c:467
 msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr ""
 
-#: elf-properties.c:307
+#: elf-properties.c:473
 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:482 elf-properties.c:560
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr ""
 
-#: elf-properties.c:320
+#: elf-properties.c:486
 msgid "Removed property %W to merge %pB and %pB (not found)\n"
 msgstr ""
 
-#: elf-properties.c:339
+#: elf-properties.c:503
 msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr ""
 
-#: elf-properties.c:348
+#: elf-properties.c:512
 msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
 msgstr ""
 
-#: elf-properties.c:390
+#: elf-properties.c:554
 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
 msgstr ""
 
+#: elf-properties.c:693 elfxx-aarch64.c:765
+msgid "%P: failed to create %s\n"
+msgstr ""
+
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:798 elf-properties.c:800
 msgid "\n"
 msgstr ""
 
-#: elf-properties.c:553
+#: elf-properties.c:799
 msgid "Merging program properties\n"
 msgstr ""
 
-#. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf-sframe.c:201
 #, c-format
-msgid "%pB: attempt to load strings from a non-string section (number %d)"
+msgid "error in %pB(%pA); unexpected SFrame section type"
 msgstr ""
 
-#: elf.c:360
+#: elf-sframe.c:252
 #, c-format
-msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
+msgid "error in %pB(%pA); no .sframe will be created"
 msgstr ""
 
-#: elf.c:499 /work/sources/binutils/current/bfd/elfnn-aarch64.c:7891
+#: elf-sframe.c:426
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr ""
+
+#: elf-sframe.c:437
+msgid ""
+"input SFrame sections with different format versions prevent .sframe "
+"generation"
+msgstr ""
+
+#: elf-sframe.c:450
+msgid ""
+"SFrame sections with unexpected data encoding prevent .sframe generation"
+msgstr ""
+
+#: elf.c:299
 #, c-format
-msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
+msgid "%pB: string table [%u] is corrupt"
 msgstr ""
 
-#: elf.c:664
+#. PR 17512: file: f057ec89.
+#: elf.c:328
 #, c-format
-msgid "%pB: corrupt size field in group section header: %#<PRIx64>"
+msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr ""
 
-#: elf.c:680
+#: elf.c:353
 #, c-format
-msgid "%pB: invalid size field in group section header: %#<PRIx64>"
+msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
 msgstr ""
 
-#: elf.c:728
+#: elf.c:512 elf32-arm.c:17779
+#: elfnn-aarch64.c:8361
+#: elfnn-loongarch.c:6449
+#: elfnn-riscv.c:3885
 #, c-format
-msgid "%pB: invalid entry in SHT_GROUP section [%u]"
+msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
 msgstr ""
 
-#: elf.c:747
+#: elf.c:526
 #, c-format
-msgid "%pB: no valid group sections found"
+msgid "%pB symbol number %lu uses unsupported binding of %u"
 msgstr ""
 
-#. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:538
 #, c-format
-msgid "%pB: group section '%pA' has no contents"
+msgid "%pB symbol number %lu uses unsupported type of %u"
 msgstr ""
 
-#: elf.c:837
+#: elf.c:641
 #, c-format
-msgid "%pB: no group info for section '%pA'"
+msgid "%pB: could not read contents of group [%u]"
 msgstr ""
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:672
 #, c-format
-msgid "%pB: warning: sh_link not set for section `%pA'"
+msgid "%pB: invalid entry (%#x) in group [%u]"
 msgstr ""
 
-#: elf.c:888
+#: elf.c:691
 #, c-format
-msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
+msgid "%pB: unexpected type (%#x) section `%s' in group [%u]"
 msgstr ""
 
-#: elf.c:901
+#: elf.c:767
 #, c-format
-msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
+msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr ""
 
-#: elf.c:922
+#: elf.c:796
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr ""
 
-#: elf.c:945
+#: elf.c:1078
 #, c-format
-msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
+msgid ""
+"%pB: section %s is compressed with zstd, but BFD is not built with zstd "
+"support"
 msgstr ""
 
-#: elf.c:1408
+#: elf.c:1264
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr ""
 
-#: elf.c:1424
+#: elf.c:1280
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr ""
 
-#: elf.c:1451
+#: elf.c:1307
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr ""
 
-#: elf.c:1623
+#: elf.c:1484
 #, c-format
 msgid ""
 "\n"
 "Program Header:\n"
 msgstr ""
 
-#: elf.c:1665
+#: elf.c:1526
 #, c-format
 msgid ""
 "\n"
 "Dynamic Section:\n"
 msgstr ""
 
-#: elf.c:1806
+#: elf.c:1665
 #, c-format
 msgid ""
 "\n"
 "Version definitions:\n"
 msgstr ""
 
-#: elf.c:1831
+#: elf.c:1690
 #, c-format
 msgid ""
 "\n"
 "Version References:\n"
 msgstr ""
 
-#: elf.c:1836
+#: elf.c:1695
 #, c-format
 msgid "  required from %s:\n"
 msgstr ""
 
-#: elf.c:2037
+#: elf.c:1944
+#, c-format
+msgid "%pB: DT_STRTAB table is corrupt"
+msgstr ""
+
+#: elf.c:2451
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr ""
 
-#: elf.c:2145
+#: elf.c:2559
 #, c-format
 msgid ""
 "%pB: warning: multiple symbol tables detected - ignoring the table in "
 "section %u"
 msgstr ""
 
-#: elf.c:2229
+#: elf.c:2644
 #, c-format
 msgid ""
 "%pB: warning: multiple dynamic symbol tables detected - ignoring the table "
 "in section %u"
 msgstr ""
 
-#: elf.c:2342
+#: elf.c:2763
 #, 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:2820
+#, c-format
+msgid ""
+"%pB: warning: secondary relocation section '%s' for section %pA found - "
+"ignoring"
+msgstr ""
+
+#: elf.c:2905 elf.c:2919 elf.c:2930 elf.c:2943
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr ""
 
-#: elf.c:3248
+#: elf.c:3614
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr ""
 
-#: elf.c:3278
+#: elf.c:3649
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr ""
 
-#: elf.c:3754
+#: elf.c:3981
+#, c-format
+msgid "%pB: corrupted group section: `%pA'"
+msgstr ""
+
+#: elf.c:4156
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr ""
 
-#: elf.c:3839
+#: elf.c:4242
 #, c-format
 msgid ""
 "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
 msgstr ""
 
-#: elf.c:3864
+#: elf.c:4260
 #, c-format
 msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
 msgstr ""
 
-#: elf.c:4430
+#: elf.c:4860
 #, 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:5043
+msgid "%P: failed to size relative relocations\n"
+msgstr ""
+
+#: elf.c:5470
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr ""
 
-#: elf.c:5020
+#: elf.c:5477
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr ""
 
-#: elf.c:5024
+#: elf.c:5481
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr ""
 
-#: elf.c:5538
+#: elf.c:6103
 #, c-format
 msgid ""
 "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
 msgstr ""
 
-#: elf.c:5566
+#: elf.c:6129
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr ""
 
-#: elf.c:5654
+#: elf.c:6256
 #, 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:6397
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr ""
+
+#: elf.c:6437
 #, c-format
-msgid "%pB: section `%pA' can't be allocated in segment %d"
+msgid "%pB: section `%pA' can't be allocated in segment %u"
 msgstr ""
 
-#: elf.c:5839
+#: elf.c:6575
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr ""
 
-#: elf.c:6072
+#: elf.c:6710
+#, c-format
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr ""
+
+#: elf.c:6741
 #, 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
+#: elf.c:6894
 #, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgid "error: %pB has a TLS segment with execute permission"
 msgstr ""
 
-#: elf.c:6606
+#: elf.c:6900
+#, c-format
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr ""
+
+#: elf.c:6915
+#, c-format
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr ""
+
+#: elf.c:6921
+#, c-format
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr ""
+
+#: elf.c:7316
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr ""
 
-#: elf.c:6949
+#: elf.c:7693
 #, c-format
 msgid ""
 "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this "
 "intentional?"
 msgstr ""
 
-#: elf.c:7574
+#: elf.c:8366
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr ""
 
-#: elf.c:8073
+#: elf.c:8848
+#, c-format
+msgid ""
+"%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr ""
+
+#: elf.c:8878
 #, c-format
 msgid ""
 "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr ""
 
-#: elf.c:8421
+#: elf.c:9311
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr ""
 
-#: elf.c:8548
+#: elf.c:9489
 #, 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:9992
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr ""
+
+#: elf.c:10004
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr ""
+
+#: elf.c:10119 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7666
+#: elf32-ppc.c:8854 elf64-ppc.c:16870
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr ""
+
+#: elf.c:10966
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr ""
+
+#: elf.c:11045
+#, c-format
+msgid ""
+"%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a "
+"name of size %u"
+msgstr ""
+
+#: elf.c:13726
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13729
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13732
+msgid ""
+"symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13735
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13952
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr ""
+
+#: elf.c:14027
+#, c-format
+msgid ""
+"%pB(%pA): link section cannot be set because the output file does not have a "
+"symbol table"
+msgstr ""
+
+#: elf.c:14041
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr ""
+
+#: elf.c:14055
+#, c-format
+msgid ""
+"%pB(%pA): info section index cannot be set because the section is not in the "
+"output"
+msgstr ""
+
+#: elf.c:14131
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr ""
+
+#: elf.c:14143
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr ""
+
+#: elf.c:14155
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr ""
+
+#: elf.c:14169
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr ""
+
+#: elf.c:14193
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr ""
+
+#: elf.c:14213
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr ""
+
+#: elf.c:14238
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr ""
+
+#: elf.c:14256
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr ""
+
+#: elf.c:14270
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+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-arc.c:454 elf32-arm.c:15198 elf32-frv.c:6618 elf32-iq2000.c:868
+#: elf32-m32c.c:915 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5531
+#: elfnn-aarch64.c:7591
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr ""
 
-#: elf32-arc.c:627
+#: elf32-arc.c:641
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
 msgstr ""
 
-#: elf32-arc.c:646
+#: elf32-arc.c:660
 #, c-format
 msgid "error: %pB: unable to merge CPU base attributes %s with %s"
 msgstr ""
 
-#: elf32-arc.c:683
+#: elf32-arc.c:697
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
 msgstr ""
 
-#: elf32-arc.c:707
+#: elf32-arc.c:721
 #, c-format
 msgid "error: %pB: conflicting ISA extension attributes %s with %s"
 msgstr ""
 
-#: elf32-arc.c:747
+#: elf32-arc.c:761
 #, c-format
 msgid "error: %pB: cannot mix rf16 with full register set %pB"
 msgstr ""
 
-#: elf32-arc.c:775
+#: elf32-arc.c:789
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
 msgstr ""
 
-#: elf32-arc.c:802
+#: elf32-arc.c:816
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr ""
 
-#: elf32-arc.c:907
+#: elf32-arc.c:921
 #, 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:937 elf32-iq2000.c:844 elf32-m32c.c:890 elf32-m68hc1x.c:1390
+#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15766
 #, c-format
 msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
 msgstr ""
 
-#: elf32-arc.c:1012
+#: elf32-arc.c:1026
 msgid "error: the ARC4 architecture is no longer supported"
 msgstr ""
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1032
 msgid "warning: unset or old architecture flags; use default machine"
 msgstr ""
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1158
 #, c-format
 msgid ""
-"%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be "
-"%#x (value is %#<PRIx64>)"
+"%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:1169
 #, 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:1897
 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:1921 elf32-rx.c:1486
 #, 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:1926 elf32-rx.c:1491
 #, 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:1931 elf32-rx.c:1496
 #, 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:1936 elf32-rx.c:1501
 #, 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:1941 elf32-rx.c:1506
 #, 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:2035 elf32-arc.c:2103 elf32-arm.c:15641 elf32-metag.c:2250
+#: elf32-nds32.c:5549
+#: elfnn-aarch64.c:7998
+#: elfnn-riscv.c:915
 #, 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:2922
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
 msgstr ""
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2930
 #, 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:4367 elf32-arm.c:4401 elf32-arm.c:4420 elf32-arm.c:4472
 #, c-format
 msgid ""
 "%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE "
@@ -1393,141 +1692,158 @@ msgid ""
 "movw instruction"
 msgstr ""
 
-#: elf32-arm.c:4369 elf32-arm.c:4423 elf32-arm.c:9093 elf32-arm.c:9183
+#: elf32-arm.c:4432 elf32-arm.c:4486 elf32-arm.c:9185 elf32-arm.c:9275
 #, c-format
 msgid ""
 "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call "
 "to %s"
 msgstr ""
 
-#: elf32-arm.c:4697
+#: elf32-arm.c:4612
+#, c-format
+msgid ""
+"ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%"
+"#<PRIx64>)"
+msgstr ""
+
+#: elf32-arm.c:4781
 #, 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:4856 elf32-arm.c:7005 elf32-csky.c:3387 elf32-hppa.c:581
+#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14180
+#: elfnn-aarch64.c:3200
+#: elfnn-kvx.c:894
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr ""
 
-#: elf32-arm.c:5957
+#: elf32-arm.c:5077 elf32-csky.c:3729 elf32-hppa.c:731 elf32-hppa.c:760
+#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3346
+#: elf64-ppc.c:12297 elf64-ppc.c:12305 xcofflink.c:4723
+#: elfnn-aarch64.c:3272
+msgid ""
+"%P: Could not assign `%pA' to an output section. Retry without --enable-non-"
+"contiguous-regions.\n"
+msgstr ""
+
+#: elf32-arm.c:6048
 #, c-format
 msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
 msgstr ""
 
-#: elf32-arm.c:5966
+#: elf32-arm.c:6057
 #, 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:6096
 #, 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:6102
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr ""
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6114
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr ""
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6126
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr ""
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6133
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr ""
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6262
 #, c-format
 msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
 msgstr ""
 
-#: elf32-arm.c:6217
+#: elf32-arm.c:6311
 #, 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:6333
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr ""
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6357
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr ""
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6372
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr ""
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6381
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr ""
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6400
 #, c-format
 msgid "offset of veneer for entry function `%s' not a multiple of its size"
 msgstr ""
 
-#: elf32-arm.c:6326
+#: elf32-arm.c:6420
 msgid ""
 "new entry function(s) introduced but no output import library specified:"
 msgstr ""
 
-#: elf32-arm.c:6334
+#: elf32-arm.c:6428
 #, c-format
 msgid "start address of `%s' is different from previous link"
 msgstr ""
 
-#: elf32-arm.c:7042 elf32-arm.c:7078
+#: elf32-arm.c:7140 elf32-arm.c:7178
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr ""
 
-#: elf32-arm.c:7793
+#: elf32-arm.c:7890
 #, 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:8118
 #, c-format
 msgid ""
 "%pB: warning: selected VFP11 erratum workaround is not necessary for target "
 "architecture"
 msgstr ""
 
-#: elf32-arm.c:8051
+#: elf32-arm.c:8145
 #, 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:8681 elf32-arm.c:8701 elf32-arm.c:8768 elf32-arm.c:8787
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr ""
 
-#: elf32-arm.c:8900
+#: elf32-arm.c:8994
 #, c-format
 msgid ""
 "%pB(%pA+%#x): error: multiple load detected in non-last IT block "
@@ -1535,560 +1851,613 @@ msgid ""
 "it to generate only one instruction per IT block"
 msgstr ""
 
-#: elf32-arm.c:9000
+#: elf32-arm.c:9092
 #, 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:9861
 #, 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:10170 elf32-arm.c:10212
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
 msgstr ""
 
-#: elf32-arm.c:10492
+#: elf32-arm.c:10493
+#, c-format
+msgid ""
+"warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-"
+"only CPU) in %pB"
+msgstr ""
+
+#: elf32-arm.c:10498
+#, c-format
+msgid ""
+"warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only "
+"CPU) in %pB"
+msgstr ""
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr ""
+
+#: elf32-arm.c:10531
+#, c-format
+msgid "(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr ""
+
+#: elf32-arm.c:10619
 msgid "shared object"
 msgstr ""
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10622
 msgid "PIE executable"
 msgstr ""
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10625
 #, 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:10727
+#, c-format
+msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr ""
+
+#: elf32-arm.c:11144
 #, c-format
 msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
 msgstr ""
 
-#: elf32-arm.c:11975 elf32-arm.c:12001
+#: elf32-arm.c:11778
+#, c-format
+msgid ""
+"%pB: expected symbol index in range 0..%lu but found local symbol with index "
+"%lu"
+msgstr ""
+
+#: elf32-arm.c:12053 elf32-arm.c:12079
 #, 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:12125 elf32-csky.c:4958 elf32-m68k.c:3735 elf32-metag.c:1912
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
 msgstr ""
 
-#: elf32-arm.c:12261
+#: elf32-arm.c:12339
 #, 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:12380 elf32-arm.c:12472 elf32-arm.c:12560 elf32-arm.c:12650
 #, 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:12708 elf32-arm.c:12867
+msgid "local symbol index too big"
+msgstr ""
+
+#: elf32-arm.c:12718 elf32-arm.c:12752
+msgid "no dynamic index information available"
+msgstr ""
+
+#: elf32-arm.c:12760
+msgid "invalid dynamic index"
+msgstr ""
+
+#: elf32-arm.c:12877
+msgid "dynamic index information not available"
+msgstr ""
+
+#: elf32-arm.c:13308 elf32-sh.c:3568
 #, 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:13421 elf32-m68k.c:3968 elf32-xtensa.c:2760
+#: elfnn-aarch64.c:7088
+#: elfnn-kvx.c:2569
 #, 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:13423 elf32-m68k.c:3970 elf32-xtensa.c:2762
+#: elfnn-aarch64.c:7090
+#: elfnn-kvx.c:2571
 #, 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:13506 elf32-tic6x.c:2641
+#: elfnn-aarch64.c:7425
+#: elfnn-kvx.c:2798
 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:13510 elf32-pru.c:936 elf32-tic6x.c:2645
+#: elfnn-aarch64.c:7429
+#: elfnn-kvx.c:2802
 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:13518 elf32-pru.c:946 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7437
+#: elfnn-kvx.c:2810
 msgid "unknown error"
 msgstr ""
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13995
 #, 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:13999
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr ""
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:14044
 #, 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:14131
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:13908
+#: elf32-arm.c:14139
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr ""
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14474
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr ""
 
-#: elf32-arm.c:14213 elf32-nios2.c:2946
+#: elf32-arm.c:14512
 #, c-format
-msgid "error: %pB: conflicting CPU architectures %d/%d"
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
 msgstr ""
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14609
 #, c-format
 msgid ""
 "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr ""
 
-#: elf32-arm.c:14339
+#: elf32-arm.c:14646
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr ""
 
-#: elf32-arm.c:14497
+#: elf32-arm.c:14816
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr ""
 
-#: elf32-arm.c:14523
+#: elf32-arm.c:14842
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr ""
 
-#: elf32-arm.c:14662
+#: elf32-arm.c:14981
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr ""
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14990
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr ""
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:15002
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr ""
 
-#: elf32-arm.c:14696
+#: elf32-arm.c:15015
 #, 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:15046
 #, 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:15058
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr ""
 
-#: elf32-arm.c:14756
+#: elf32-arm.c:15075
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr ""
 
-#: elf32-arm.c:14792
+#: elf32-arm.c:15111
 #, c-format
 msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
 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.
-#. 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
-#, c-format
-msgid "private flags = %lx:"
-msgstr ""
-
-#: elf32-arm.c:14888
+#: elf32-arm.c:15207
 #, c-format
 msgid " [interworking enabled]"
 msgstr ""
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15215
 #, c-format
 msgid " [VFP float format]"
 msgstr ""
 
-#: elf32-arm.c:14898
-#, c-format
-msgid " [Maverick float format]"
-msgstr ""
-
-#: elf32-arm.c:14900
+#: elf32-arm.c:15217
 #, c-format
 msgid " [FPA float format]"
 msgstr ""
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15220
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr ""
 
-#: elf32-arm.c:14906 elf32-arm.c:14992
+#: elf32-arm.c:15223 elf32-arm.c:15308
 #, c-format
 msgid " [position independent]"
 msgstr ""
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15226
 #, c-format
 msgid " [new ABI]"
 msgstr ""
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15229
 #, c-format
 msgid " [old ABI]"
 msgstr ""
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15232
 #, c-format
 msgid " [software FP]"
 msgstr ""
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15240
 #, c-format
 msgid " [Version1 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15243 elf32-arm.c:15254
 #, c-format
 msgid " [sorted symbol table]"
 msgstr ""
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15245 elf32-arm.c:15256
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr ""
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15251
 #, c-format
 msgid " [Version2 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15259
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr ""
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15262
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr ""
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15269
 #, c-format
 msgid " [Version3 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15273
 #, c-format
 msgid " [Version4 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15277
 #, c-format
 msgid " [Version5 EABI]"
 msgstr ""
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15280
 #, c-format
 msgid " [soft-float ABI]"
 msgstr ""
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15283
 #, c-format
 msgid " [hard-float ABI]"
 msgstr ""
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15289
 #, c-format
 msgid " [BE8]"
 msgstr ""
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15292
 #, c-format
 msgid " [LE8]"
 msgstr ""
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15298
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr ""
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15305
 #, c-format
 msgid " [relocatable executable]"
 msgstr ""
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15311
 #, c-format
 msgid " [FDPIC ABI supplement]"
 msgstr ""
 
-#: elf32-arm.c:15000 /work/sources/binutils/current/bfd/elfnn-aarch64.c:7040
+#: elf32-arm.c:15316
+#: elfnn-aarch64.c:7594
 #, c-format
-msgid "<Unrecognised flag bits set>"
+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:15424 elf32-arm.c:15558 elf32-i386.c:1576 elf32-s390.c:921
+#: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088
+#: elf64-s390.c:924 elf64-x86-64.c:2550 elfxx-sparc.c:1385 elfxx-tilegx.c:1661
+#: elfxx-x86.c:962
+#: elfnn-aarch64.c:7865
+#: elfnn-kvx.c:3248
+#: elfnn-loongarch.c:961
+#: elfnn-riscv.c:959
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr ""
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15814
 #, 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
+#: elf32-arm.c:17077
 #, c-format
-msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgid "errors encountered processing file %pB"
 msgstr ""
 
-#: elf32-arm.c:16854
+#: elf32-arm.c:17448 elflink.c:13605 elflink.c:13652
 #, c-format
-msgid "errors encountered processing file %pB"
+msgid "could not find section %s"
 msgstr ""
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:18406
 #, c-format
-msgid "could not find section %s"
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
 msgstr ""
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18664
 #, 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:18691
 #, 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:19518 elf32-arm.c:19540
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr ""
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19591
 #, 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:19630
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr ""
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20713
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr ""
 
-#: elf32-arm.c:20643
+#: elf32-arm.c:20790
 #, 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:20805
 #, c-format
 msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
 msgstr ""
 
-#: elf32-arm.c:20668
+#: elf32-arm.c:20815
 #, 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:20819
 #, 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:20829 elf32-arm.c:20833
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr ""
 
-#: elf32-arm.c:20700
-#, c-format
-msgid "error: %pB does not use %s instructions, whereas %pB does"
-msgstr ""
-
-#: elf32-arm.c:20719
+#: elf32-arm.c:20852
 #, c-format
 msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
 msgstr ""
 
-#: elf32-arm.c:20723
+#: elf32-arm.c:20856
 #, c-format
 msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
 msgstr ""
 
-#: elf32-arm.c:20737
+#: elf32-arm.c:20870
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr ""
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20876
 #, 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
-msgid "internal error: dangerous relocation"
+#: elf32-avr.c:1503
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr ""
+
+#: elf32-avr.c:1511
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
 msgstr ""
 
-#: elf32-avr.c:3327 /work/sources/binutils/current/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:1519
+msgid ""
+"%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr ""
+
+#: elf32-avr.c:3335
+#: elfnn-aarch64.c:3231
 #, c-format
 msgid "cannot create stub entry %s"
 msgstr ""
 
-#: elf32-bfin.c:106 elf32-bfin.c:362
+#: elf32-bfin.c:107 elf32-bfin.c:364
 msgid "relocation should be even number"
 msgstr ""
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1589
 #, 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:1621 elf32-i386.c:3585 elf32-m68k.c:4008 elf32-s390.c:3132
+#: elf64-s390.c:3468 elf64-x86-64.c:5080
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr ""
 
-#: elf32-bfin.c:2638
+#: elf32-bfin.c:2646
 #, c-format
 msgid ""
 "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero "
 "addend"
 msgstr ""
 
-#: elf32-bfin.c:2655
+#: elf32-bfin.c:2663
 msgid "relocation references symbol not defined in the module"
 msgstr ""
 
-#: elf32-bfin.c:2752
+#: elf32-bfin.c:2761
 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
 msgstr ""
 
-#: elf32-bfin.c:2793 elf32-bfin.c:2916
+#: elf32-bfin.c:2801 elf32-bfin.c:2922
 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:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4386
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr ""
 
-#: elf32-bfin.c:2874
+#: elf32-bfin.c:2881
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr ""
 
-#: elf32-bfin.c:3039
+#: elf32-bfin.c:3044
 msgid "relocations between different segments are not supported"
 msgstr ""
 
-#: elf32-bfin.c:3040
+#: elf32-bfin.c:3045
 msgid "warning: relocation references a different segment"
 msgstr ""
 
-#: elf32-bfin.c:4787 elf32-frv.c:6603
+#: elf32-bfin.c:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3379
+#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:939 elf64-bpf.c:348
+#: elf64-mmix.c:1545 elfxx-tilegx.c:3752
+msgid "internal error: dangerous relocation"
+msgstr ""
+
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4734 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1264
+#: elf32-score.c:3986 elf32-score7.c:3793 elf32-vax.c:534 elf32-xgate.c:494
+#: elfxx-mips.c:16452
+#, c-format
+msgid "private flags = %lx:"
+msgstr ""
+
+#: elf32-bfin.c:4785 elf32-frv.c:6591
 #, 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:4789 elf32-frv.c:6595
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr ""
 
-#: elf32-bfin.c:4941
+#: elf32-bfin.c:4925
 #, 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:5335 elf32-cr16.c:2723 elf32-m68k.c:4423
 msgid "unsupported relocation type"
 msgstr ""
 
@@ -2108,18 +2477,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:2552
 msgid "[whose name is lost]"
 msgstr ""
 
-#: elf32-cris.c:1311 elf32-tic6x.c:2603
+#: elf32-cris.c:1311 elf32-tic6x.c:2536
 #, 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:2545
 #, c-format
 msgid ""
 "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against "
@@ -2168,13 +2537,13 @@ msgid ""
 "-mno-small-tls)"
 msgstr ""
 
-#: elf32-cris.c:3050
+#: elf32-cris.c:3048
 #, c-format
 msgid ""
 "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
 msgstr ""
 
-#: elf32-cris.c:3104
+#: elf32-cris.c:3102
 #, c-format
 msgid ""
 "%pB, section %pA:\n"
@@ -2182,83 +2551,109 @@ msgid ""
 "recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:3322
+#: elf32-cris.c:3320
 #, c-format
 msgid ""
 "%pB, section %pA: relocation %s should not be used in a shared object; "
 "recompile with -fPIC"
 msgstr ""
 
-#: elf32-cris.c:3747
+#: elf32-cris.c:3701
 #, 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:3813
 msgid "unexpected machine number"
 msgstr ""
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3865
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr ""
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3868
 #, c-format
 msgid " [v10 and v32]"
 msgstr ""
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3871
 #, c-format
 msgid " [v32]"
 msgstr ""
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3915
 #, c-format
 msgid ""
 "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr ""
 
-#: elf32-cris.c:3962
+#: elf32-cris.c:3916
 #, c-format
 msgid ""
 "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr ""
 
-#: elf32-cris.c:3981
+#: elf32-cris.c:3935
 #, c-format
 msgid "%pB contains CRIS v32 code, incompatible with previous objects"
 msgstr ""
 
-#: elf32-cris.c:3983
+#: elf32-cris.c:3937
 #, c-format
 msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr ""
 
-#: elf32-csky.c:2066
+#: elf32-csky.c:2017
 msgid "GOT table size out of range"
 msgstr ""
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2828
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr ""
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2851
+#, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr ""
+
+#: elf32-csky.c:2916 elf32-csky.c:3076
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr ""
 
-#: elf32-csky.c:2990
+#: elf32-csky.c:2929
 #, c-format
 msgid ""
-"warning: file %pB's arch flag ck%s conflicts with target ck%s, using ck%s"
+"warning: file %pB's arch flag %s conflict with target %s,set target arch "
+"flag to %s"
+msgstr ""
+
+#: elf32-csky.c:2958
+#, c-format
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr ""
+
+#: elf32-csky.c:2975
+#, c-format
+msgid "Error: %pB and %pB has different DSP version"
+msgstr ""
+
+#: elf32-csky.c:2993
+#, c-format
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr ""
+
+#: elf32-csky.c:3090
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
 msgstr ""
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4330 elf32-i386.c:344
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr ""
@@ -2274,7 +2669,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:570 elf32-ip2k.c:1485
 msgid "unsupported relocation between data/insn address spaces"
 msgstr ""
 
@@ -2282,97 +2677,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:6502
 #, 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:6556 elf32-iq2000.c:830 elf32-m32c.c:877
 #, c-format
 msgid "%pB: compiled with %s and linked with modules compiled with %s"
 msgstr ""
 
-#: elf32-frv.c:6581
+#: elf32-frv.c:6569
 #, c-format
 msgid ""
 "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
@@ -2383,305 +2778,338 @@ msgstr ""
 msgid "%pB: relocations in generic ELF (EM: %d)"
 msgstr ""
 
-#: elf32-hppa.c:834 elf32-hppa.c:3511
+#: elf32-hppa.c:862 elf32-hppa.c:3403
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
 msgstr ""
 
-#: elf32-hppa.c:1248
+#: elf32-hppa.c:1240
 #, 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:2579
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr ""
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3236
 #, 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:3456
+#, c-format
+msgid ""
+"%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 "
+"(gp %#x)"
+msgstr ""
+
+#: elf32-hppa.c:3475
+#, c-format
+msgid ""
+"%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 "
+"(gp %#x)"
+msgstr ""
+
+#: elf32-hppa.c:4090
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr ""
 
-#: elf32-hppa.c:4158
+#: elf32-hppa.c:4108
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr ""
 
-#: elf32-hppa.c:4217
+#: elf32-hppa.c:4167
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr ""
 
-#: elf32-hppa.c:4521
+#: elf32-hppa.c:4471
 msgid ".got section not immediately after .plt section"
 msgstr ""
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
+#: elf32-i386.c:1300
 #, c-format
 msgid ""
-"%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `"
-"%pA' failed"
+"%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:1269
+#: elf32-i386.c:1586
 #, c-format
-msgid ""
-"%pB: direct GOT relocation R_386_GOT32X against `%s' without base register "
-"can not be used when making a shared object"
+msgid "%pB: bad reloc offset (%#<PRIx32> > %#<PRIx32>) for section `%pA'"
 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:1771 elf32-s390.c:1149 elf32-sh.c:5500 elf32-tilepro.c:1546
+#: elf32-xtensa.c:1261 elf64-s390.c:1162 elfxx-sparc.c:1565
+#: elfxx-tilegx.c:1766
+#: elfnn-loongarch.c:750
+#: elfnn-riscv.c:866
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr ""
 
-#: elf32-i386.c:1798
+#: elf32-i386.c:1843
 #, c-format
 msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
 msgstr ""
 
-#: elf32-i386.c:2379 elf64-x86-64.c:2670
+#: elf32-i386.c:1898 elf64-x86-64.c:2964
+#, c-format
+msgid ""
+"%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr ""
+
+#: elf32-i386.c:2461 elf64-x86-64.c:3446
+#: elfnn-riscv.c:2742
 #, 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:2494 elf32-i386.c:3794 elf32-i386.c:3942 elf64-x86-64.c:3503
+#: elf64-x86-64.c:5254 elf64-x86-64.c:5425
+#: elfnn-riscv.c:2604
+#: elfnn-riscv.c:3511
+#: elfnn-riscv.c:3585
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr ""
 
-#: elf32-i386.c:2569
+#: elf32-i386.c:2672
 #, 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:2707 elf64-x86-64.c:3726
 msgid "hidden symbol"
 msgstr ""
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2710 elf64-x86-64.c:3729
 msgid "internal symbol"
 msgstr ""
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2713 elf64-x86-64.c:3732
 msgid "protected symbol"
 msgstr ""
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2716 elf64-x86-64.c:3735
 msgid "symbol"
 msgstr ""
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2722
 #, 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:2735
 #, 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-i386.c:4145 elf64-x86-64.c:5645
+msgid "%P: discarded output section: `%pA'\n"
+msgstr ""
+
+#: 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:1298
 #, c-format
 msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr ""
 
-#: elf32-ip2k.c:1321
+#: elf32-ip2k.c:1317
 #, 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
 msgid "global pointer relative relocation when _gp not defined"
 msgstr ""
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:663
 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 ""
 
-#: elf32-m32r.c:1471
+#: elf32-m32r.c:1461
 msgid "SDA relocation when _SDA_BASE_ not defined"
 msgstr ""
 
-#: elf32-m32r.c:2984 elf32-microblaze.c:1101 elf32-microblaze.c:1149
+#: elf32-m32r.c:2778 elf32-microblaze.c:1147 elf32-microblaze.c:1195
 #, 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:3279
 #, c-format
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr ""
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6992
+#: elf32-m32r.c:3300 elf32-nds32.c:6906
 #, c-format
 msgid "private flags = %lx"
 msgstr ""
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3305
 #, c-format
 msgid ": m32r instructions"
 msgstr ""
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3306
 #, c-format
 msgid ": m32rx instructions"
 msgstr ""
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3307
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ""
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1135
 #, 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:1166
 #, 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:1182
 #, 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:1197
 #, c-format
 msgid ""
-"reference to a banked address [%lx:%04lx] in the normal address space at "
-"%04lx"
+"reference to a banked address [%lx:%04lx] in the normal address space at %"
+"04lx"
 msgstr ""
 
-#: elf32-m68hc1x.c:1225
+#: elf32-m68hc1x.c:1233
 #, 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:1357
 #, 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:1364
 #, 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:1373
 #, 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:1418 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr ""
 
-#: elf32-m68hc1x.c:1415 elf32-xgate.c:499
+#: elf32-m68hc1x.c:1420 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr ""
 
-#: elf32-m68hc1x.c:1418 elf32-xgate.c:502
+#: elf32-m68hc1x.c:1423 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr ""
 
-#: elf32-m68hc1x.c:1420 elf32-xgate.c:504
+#: elf32-m68hc1x.c:1425 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr ""
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1428
 #, c-format
 msgid "cpu=HC11]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1430
 #, c-format
 msgid "cpu=HCS12]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1432
 #, c-format
 msgid "cpu=HC12]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1435
 #, c-format
 msgid " [memory=bank-model]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1437
 #, c-format
 msgid " [memory=flat]"
 msgstr ""
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1440
 #, 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:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr ""
+
+#: elf32-m68k.c:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105
 msgid "unknown"
 msgstr ""
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1730
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
 msgstr ""
 
-#: elf32-m68k.c:1667
+#: elf32-m68k.c:1737
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
 msgstr ""
@@ -2697,401 +3125,375 @@ msgstr ""
 msgid "MeP: howto %d has type %d"
 msgstr ""
 
-#: elf32-mep.c:622
+#: elf32-mep.c:618
 #, c-format
 msgid "%pB and %pB are for different cores"
 msgstr ""
 
-#: elf32-mep.c:641
+#: elf32-mep.c:637
 #, c-format
 msgid "%pB and %pB are for different configurations"
 msgstr ""
 
-#: elf32-mep.c:679
+#: elf32-mep.c:675
 #, c-format
 msgid "private flags = 0x%lx"
 msgstr ""
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1856
 #, c-format
 msgid "%pB(%pA): multiple TLS models are not supported"
 msgstr ""
 
-#: elf32-metag.c:1866
+#: elf32-metag.c:1859
 #, 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:1590 elf32-tilepro.c:3020 elfxx-sparc.c:3452
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr ""
 
-#: elf32-mips.c:1775 elf64-mips.c:3516 elfn32-mips.c:3332
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334
 msgid "literal relocation occurs for an external symbol"
 msgstr ""
 
-#: elf32-mips.c:1822 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:3559
-#: elfn32-mips.c:3373
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr ""
 
-#: elf32-msp430.c:837 elf32-msp430.c:1151
+#: elf32-msp430.c:914
+#, c-format
+msgid ""
+"error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds "
+"available space"
+msgstr ""
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr ""
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1506
 msgid "internal error: branch/jump to an odd address detected"
 msgstr ""
 
-#: elf32-msp430.c:2357
+#: elf32-msp430.c:2673
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr ""
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2774
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr ""
 
-#: elf32-msp430.c:2468
+#: elf32-msp430.c:2786
 #, 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:2799
 #, c-format
 msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
 msgstr ""
 
-#: elf32-msp430.c:2491
+#: elf32-msp430.c:2810
 #, 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:2823
 #, 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:2835
 #, c-format
 msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
 msgstr ""
 
-#: elf32-nds32.c:3624
+#: elf32-msp430.c:2860
 #, 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:3680
 #, 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:5579
 #, c-format
 msgid "%pB: warning: %s unsupported in shared mode"
 msgstr ""
 
-#: elf32-nds32.c:5795
+#: elf32-nds32.c:5705
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
 msgstr ""
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5746
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
 msgstr ""
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5768
 #, c-format
 msgid "%pB(%pA): warning: unaligned small data access of type %d"
 msgstr ""
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6694
 #, 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:6742
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6756
 #, 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:6844
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6854
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr ""
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6881
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr ""
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6912
 #, c-format
 msgid ": n1 instructions"
 msgstr ""
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6915
 #, c-format
 msgid ": n1h instructions"
 msgstr ""
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9364
 #, c-format
 msgid "%pB: error: search_nds32_elf_blank reports wrong node"
 msgstr ""
 
-#: elf32-nds32.c:9722
+#: elf32-nds32.c:9628
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr ""
 
-#: elf32-nds32.c:12975
+#: elf32-nds32.c:12893
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr ""
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12912
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr ""
 
-#: elf32-nds32.c:13275 reloc.c:8410
-#, c-format
-msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
-msgstr ""
-
-#: elf32-nios2.c:2930
-#, c-format
-msgid "error: %pB: big-endian R2 is not supported"
-msgstr ""
-
-#: elf32-nios2.c:3822
-#, c-format
-msgid ""
-"global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr ""
-
-#: elf32-nios2.c:3842
-#, 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 ""
-
-#: elf32-nios2.c:4495 elf32-pru.c:928
-msgid "relocation out of range"
-msgstr ""
-
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
-msgid "dangerous relocation"
-msgstr ""
-
-#: elf32-nios2.c:5378
-#, c-format
-msgid "dynamic variable `%s' is zero size"
-msgstr ""
-
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1256
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr ""
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1375
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr ""
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1429
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr ""
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1542
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr ""
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1559
 #, 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:1573 elf32-or1k.c:1588 elf64-alpha.c:4412 elf64-alpha.c:4556
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1602
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr ""
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1686
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr ""
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1865
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr ""
 
-#: elf32-or1k.c:2074
+#: elf32-or1k.c:2199
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr ""
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3313
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr ""
 
-#: elf32-ppc.c:986
+#: elf32-ppc.c:990 elf64-ppc.c:1753
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr ""
 
-#: elf32-ppc.c:1617
+#: elf32-ppc.c:1627
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr ""
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1646
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr ""
 
-#: elf32-ppc.c:1679
+#: elf32-ppc.c:1688
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr ""
 
-#: elf32-ppc.c:1729
+#: elf32-ppc.c:1737
 msgid "failed to allocate space for new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1756
 msgid "failed to compute new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1759
 msgid "failed to install new APUinfo section"
 msgstr ""
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2867
 #, 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:3586 elf32-ppc.c:3594
 #, 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:3616 elf32-ppc.c:3624
 #, 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:3632 elf32-ppc.c:3640
 #, 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:3707 elf32-ppc.c:3716
 #, 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:3745 elf32-ppc.c:3754
 #, c-format
 msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
 msgstr ""
 
-#: elf32-ppc.c:3829
+#: elf32-ppc.c:3818
 #, c-format
 msgid ""
 "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr ""
 
-#: elf32-ppc.c:3837
+#: elf32-ppc.c:3826
 #, c-format
 msgid ""
 "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr ""
 
-#: elf32-ppc.c:3906
+#: elf32-ppc.c:3897
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
 msgstr ""
 
-#: elf32-ppc.c:3925
+#: elf32-ppc.c:3916
 #, c-format
 msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
 msgstr ""
 
-#: elf32-ppc.c:4028
+#: elf32-ppc.c:4026
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr ""
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4028
 msgid "bss-plt forced by profiling"
 msgstr ""
 
+#: elf32-ppc.c:4606 elf64-ppc.c:8517
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr ""
+
 #. 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:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4636 elf64-ppc.c:8582
 #, 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:5565 elf32-sh.c:3019 elf32-tilepro.c:2246 elfxx-sparc.c:2464
+#: elfxx-tilegx.c:2495
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr ""
 
-#: elf32-ppc.c:7457
+#: elf32-ppc.c:6512
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr ""
+
+#: elf32-ppc.c:7454
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr ""
 
-#: elf32-ppc.c:7494
+#: elf32-ppc.c:7492
 msgid "%H: fixup branch overflow\n"
 msgstr ""
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7532 elf32-ppc.c:7570
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr ""
@@ -3101,11 +3503,12 @@ msgstr ""
 msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
 msgstr ""
 
-#: elf32-ppc.c:7673 elf64-ppc.c:15220
-msgid "%H: warning: %s unexpected insn %#x.\n"
+#: elf32-ppc.c:7670
+#, c-format
+msgid "%pB: reloc %#x unsupported"
 msgstr ""
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7953
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr ""
@@ -3118,115 +3521,130 @@ 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:7985
 #, c-format
 msgid "%X%H: @local call to ifunc %s\n"
 msgstr ""
 
-#: elf32-ppc.c:8187
+#: elf32-ppc.c:8163
 #, 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:8501 elf32-ppc.c:8532 elf32-ppc.c:8635 elf32-ppc.c:8735
 #, 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:8913 elf32-ppc.c:8934
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
 msgstr ""
 
-#: elf32-ppc.c:8954
+#: elf32-ppc.c:9016
 #, c-format
 msgid "%H: error: %s against `%s' not a multiple of %u\n"
 msgstr ""
 
-#: elf32-ppc.c:8983
+#: elf32-ppc.c:9045
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr ""
 
-#: elf32-ppc.c:9064
+#: elf32-ppc.c:9127
 #, c-format
 msgid "%H: %s reloc against `%s': error %d\n"
 msgstr ""
 
-#: elf32-ppc.c:9959 elf64-ppc.c:15715
+#: elf32-ppc.c:10009
 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:10013 elf64-ppc.c:18330
 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:10058
 #, 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:1477
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr ""
 
-#: elf32-rl78.c:372
-msgid "internal error: RL78 reloc stack overflow"
+#: elf32-pru.c:931
+msgid "relocation out of range"
+msgstr ""
+
+#: elf32-pru.c:941 elf32-tic6x.c:2649
+msgid "dangerous relocation"
+msgstr ""
+
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
 msgstr ""
 
-#: elf32-rl78.c:383
-msgid "internal error: RL78 reloc stack underflow"
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
 msgstr ""
 
-#: elf32-rl78.c:1053
+#: elf32-rl78.c:1069
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr ""
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
-#, c-format
-msgid "%pB(%pA): error: call to undefined function '%s'"
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr ""
+
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
 msgstr ""
 
-#: elf32-rl78.c:1205
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr ""
+
+#: elf32-rl78.c:1220
 #, c-format
 msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
 msgstr ""
 
-#: elf32-rl78.c:1222
+#: elf32-rl78.c:1237
 #, c-format
 msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
 msgstr ""
 
-#: elf32-rl78.c:1231
+#: elf32-rl78.c:1246
 msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
 msgstr ""
 
-#: elf32-rl78.c:1235 elf32-rl78.c:1239
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
 #, c-format
 msgid "- %pB is 64-bit, %pB is not"
 msgstr ""
 
-#: elf32-rl78.c:1266
+#: elf32-rl78.c:1281
 #, c-format
 msgid " [64-bit doubles]"
 msgstr ""
 
-#: elf32-rx.c:605
+#: elf32-rx.c:618
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr ""
 
-#: elf32-rx.c:612
+#: elf32-rx.c:625
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr ""
 
-#: elf32-rx.c:684
+#: elf32-rx.c:700
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr ""
@@ -3235,74 +3653,84 @@ 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:720
 #, c-format
 msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
 msgstr ""
 
-#: elf32-rx.c:1288
+#: elf32-rx.c:1304
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr ""
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr ""
+
+#: elf32-rx.c:3185
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr ""
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3188
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr ""
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3190
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr ""
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3797
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr ""
 
-#: elf32-rx.c:3800
+#: elf32-rx.c:3805
 #, 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:2007 elf64-s390.c:2242
 #, 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:1505 elf32-score7.c:1368 elfxx-mips.c:3914
 msgid "not enough GOT space for local GOT entries"
 msgstr ""
 
-#: elf32-score.c:2746
+#: elf32-score.c:2737
 msgid "address not word aligned"
 msgstr ""
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2818 elf32-score7.c:2625
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr ""
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2872 elf32-score7.c:2679
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr ""
 
-#: elf32-score.c:4003 elf32-score7.c:3808
+#: elf32-score.c:3483 elf32-score7.c:3294 elfxx-mips.c:11260
+#, c-format
+msgid "%pB: cannot handle more than %d dynamic symbols"
+msgstr ""
+
+#: elf32-score.c:3989 elf32-score7.c:3796
 #, c-format
 msgid " [pic]"
 msgstr ""
 
-#: elf32-score.c:4007 elf32-score7.c:3812
+#: elf32-score.c:3993 elf32-score7.c:3800
 #, c-format
 msgid " [fix dep]"
 msgstr ""
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4040 elf32-score7.c:3847
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr ""
@@ -3312,170 +3740,166 @@ 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:3755
 #, 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:3785 elf32-sh.c:3801
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:3942
+#: elf32-sh.c:3817
 #, c-format
 msgid ""
 "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
 msgstr ""
 
-#: elf32-sh.c:3958
+#: elf32-sh.c:3833
 #, 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:3963 elf32-sh.c:4358
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
 msgstr ""
 
-#: elf32-sh.c:4586
+#: elf32-sh.c:4461
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
 msgstr ""
 
-#: elf32-sh.c:4705
+#: elf32-sh.c:4580
 #, c-format
 msgid ""
-"%pB(%pA): offset in relocation for GD->LE translation is too small: "
-"%#<PRIx64>"
+"%pB(%pA): offset in relocation for GD->LE translation is too small: %"
+"#<PRIx64>"
 msgstr ""
 
 #. The backslash is to prevent bogus trigraph detection.
-#: elf32-sh.c:4723
+#: elf32-sh.c:4598
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr ""
 
-#: elf32-sh.c:4731
+#: elf32-sh.c:4606
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr ""
 
-#: elf32-sh.c:4738
+#: elf32-sh.c:4613
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr ""
 
-#: elf32-sh.c:4745
+#: elf32-sh.c:4620
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr ""
 
-#: elf32-sh.c:4752
+#: elf32-sh.c:4627
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr ""
 
-#: elf32-sh.c:4759
+#: elf32-sh.c:4634
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr ""
 
-#: elf32-sh.c:4794
+#: elf32-sh.c:4669
 #, c-format
 msgid ""
-"%pB(%pA): offset in relocation for IE->LE translation is too small: "
-"%#<PRIx64>"
+"%pB(%pA): offset in relocation for IE->LE translation is too small: %"
+"#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:4812
+#: elf32-sh.c:4687
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
 msgstr ""
 
-#: elf32-sh.c:4821
+#: elf32-sh.c:4696
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
 msgstr ""
 
-#: elf32-sh.c:4828
+#: elf32-sh.c:4703
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
 msgstr ""
 
-#: elf32-sh.c:4943
+#: elf32-sh.c:4818
 #, c-format
 msgid ""
-"%pB(%pA): offset in relocation for GD->IE translation is too small: "
-"%#<PRIx64>"
+"%pB(%pA): offset in relocation for GD->IE translation is too small: %"
+"#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:5011
+#: elf32-sh.c:4886
 #, c-format
 msgid ""
-"%pB(%pA): offset in relocation for LD->LE translation is too small: "
-"%#<PRIx64>"
+"%pB(%pA): offset in relocation for LD->LE translation is too small: %"
+"#<PRIx64>"
 msgstr ""
 
-#: elf32-sh.c:5139
+#: elf32-sh.c:5014
 #, c-format
-msgid "%X%C: relocation to \"%s\" references a different segment\n"
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
 msgstr ""
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5021
 #, c-format
-msgid "%C: warning: relocation to \"%s\" references a different segment\n"
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
 msgstr ""
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5489 elf32-sh.c:5571
 #, c-format
 msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
 msgstr ""
 
-#: elf32-sh.c:5657 elf32-sh.c:5738
+#: elf32-sh.c:5495 elf32-sh.c:5576
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr ""
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5526
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr ""
 
-#: elf32-sh.c:5895 elf64-alpha.c:4691
+#: elf32-sh.c:5733 elf64-alpha.c:4648
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr ""
 
-#: elf32-sh.c:6010
+#: elf32-sh.c:5848
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr ""
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:5860
 #, c-format
 msgid ""
 "internal error: merge of architecture '%s' with architecture '%s' produced "
 "unknown architecture"
 msgstr ""
 
-#: elf32-sh.c:6059
+#: elf32-sh.c:5901
 #, c-format
 msgid ""
 "%pB: uses instructions which are incompatible with instructions used in "
 "previous modules"
 msgstr ""
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:5914
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr ""
@@ -3490,29 +3914,35 @@ 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:734
 msgid "%X%P: overlay section %pA does not start on a cache line\n"
 msgstr ""
 
-#: elf32-spu.c:740
+#: elf32-spu.c:742
 msgid "%X%P: overlay section %pA is larger than a cache line\n"
 msgstr ""
 
-#: elf32-spu.c:760
+#: elf32-spu.c:762
 msgid "%X%P: overlay section %pA is not in cache area\n"
 msgstr ""
 
-#: elf32-spu.c:801
+#: elf32-spu.c:803
 #, 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:1029
 #, c-format
 msgid "warning: call to non-function symbol %s defined in %pB"
 msgstr ""
 
-#: elf32-spu.c:1377
+#: elf32-spu.c:1379
 #, c-format
 msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
 msgstr ""
@@ -3532,30 +3962,30 @@ msgstr ""
 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:15372
 msgid "stubs don't match calculated size"
 msgstr ""
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2575
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr ""
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2591
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr ""
 
-#: elf32-spu.c:2620
+#: elf32-spu.c:2623
 #, c-format
 msgid "%pA:0x%v not found in function table\n"
 msgstr ""
 
-#: elf32-spu.c:2761
+#: elf32-spu.c:2764
 #, c-format
 msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
 msgstr ""
@@ -3569,34 +3999,34 @@ msgstr ""
 msgid "  calls:\n"
 msgstr ""
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4342
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr ""
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4346
 #, c-format
 msgid "%s duplicated\n"
 msgstr ""
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4353
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr ""
 
-#: elf32-spu.c:4394
+#: elf32-spu.c:4395
 #, 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:4551
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr ""
 
-#: elf32-spu.c:4691
-msgid "%F%P: auto overlay error: %E\n"
+#: elf32-spu.c:4692
+msgid "%P: auto overlay error: %E\n"
 msgstr ""
 
 #: elf32-spu.c:4712
@@ -3618,333 +4048,335 @@ msgid "%X%P: stack/lrlive analysis error
 msgstr ""
 
 #: elf32-spu.c:4745
-msgid "%F%P: can not build overlay stubs: %E\n"
+msgid "%P: can not build overlay stubs: %E\n"
 msgstr ""
 
 #: elf32-spu.c:4814
 msgid "fatal error while creating .fixup"
 msgstr ""
 
-#: elf32-spu.c:5049
+#: elf32-spu.c:5050
 #, c-format
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr ""
 
-#: elf32-tic6x.c:1628
+#: elf32-tic6x.c:1587
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr ""
 
-#: elf32-tic6x.c:1633
+#: elf32-tic6x.c:1592
 msgid "warning: generating a shared library containing non-PID code"
 msgstr ""
 
-#: elf32-tic6x.c:2493
+#: elf32-tic6x.c:2426
 #, c-format
 msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
 msgstr ""
 
-#: elf32-tic6x.c:3629
+#: elf32-tic6x.c:3492
 #, c-format
 msgid "%pB: error: unknown mandatory EABI object attribute %d"
 msgstr ""
 
-#: elf32-tic6x.c:3638
+#: elf32-tic6x.c:3501
 #, c-format
 msgid "%pB: warning: unknown EABI object attribute %d"
 msgstr ""
 
-#: elf32-tic6x.c:3752 elf32-tic6x.c:3761
+#: elf32-tic6x.c:3619 elf32-tic6x.c:3628
 #, c-format
 msgid "error: %pB requires more stack alignment than %pB preserves"
 msgstr ""
 
-#: elf32-tic6x.c:3771 elf32-tic6x.c:3780
+#: elf32-tic6x.c:3638 elf32-tic6x.c:3647
 #, 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:3656 elf32-tic6x.c:3665
 #, 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:3674 elf32-tic6x.c:3682
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr ""
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3705
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr ""
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3724
 #, 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:3626 elfxx-tilegx.c:4019 elfxx-x86.c:2762
+#: elfnn-aarch64.c:10375
+#: elfnn-kvx.c:4631
+#: elfnn-loongarch.c:6379
+#: elfnn-riscv.c:3801
 #, 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:466
 msgid "failed to find previous HI16 reloc"
 msgstr ""
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2309
 msgid "could not locate special linker symbol __gp"
 msgstr ""
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2313
 msgid "could not locate special linker symbol __ep"
 msgstr ""
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2317
 msgid "could not locate special linker symbol __ctbp"
 msgstr ""
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2539
 #, 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:2555
 #, c-format
 msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
 msgstr ""
 
-#: elf32-v850.c:2563
+#: elf32-v850.c:2570
 #, c-format
 msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
 msgstr ""
 
-#: elf32-v850.c:2595
+#: elf32-v850.c:2602
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr ""
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2605
 #, c-format
 msgid "4-byte"
 msgstr ""
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2606
 #, c-format
 msgid "8-byte"
 msgstr ""
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2607 elf32-v850.c:2619
 #, 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:2608 elf32-v850.c:2620 elf32-v850.c:2632 elf32-v850.c:2643
+#: elf32-v850.c:2654 elf32-v850.c:2665
 #, c-format
 msgid "unknown: %x"
 msgstr ""
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2614
 #, c-format
 msgid " size of doubles: "
 msgstr ""
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2617
 #, c-format
 msgid "4-bytes"
 msgstr ""
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2618
 #, c-format
 msgid "8-bytes"
 msgstr ""
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2626
 #, c-format
 msgid " FPU support required: "
 msgstr ""
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2629
 #, c-format
 msgid "FPU-2.0"
 msgstr ""
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2630
 #, c-format
 msgid "FPU-3.0"
 msgstr ""
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2631
 #, c-format
 msgid "none"
 msgstr ""
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2638
 #, c-format
 msgid "SIMD use: "
 msgstr ""
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663
 #, c-format
 msgid "yes"
 msgstr ""
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2642 elf32-v850.c:2653 elf32-v850.c:2664
 #, c-format
 msgid "no"
 msgstr ""
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2649
 #, c-format
 msgid "CACHE use: "
 msgstr ""
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2660
 #, c-format
 msgid "MMU use: "
 msgstr ""
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2827 elf32-v850.c:2883
 #, c-format
 msgid "%pB: architecture mismatch with previous modules"
 msgstr ""
 
 #. xgettext:c-format.
-#: elf32-v850.c:2894
+#: elf32-v850.c:2901
 #, c-format
 msgid "private flags = %lx: "
 msgstr ""
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2906
 #, c-format
 msgid "unknown v850 architecture"
 msgstr ""
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2908
 #, c-format
 msgid "v850 E3 architecture"
 msgstr ""
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2910 elf32-v850.c:2917
 #, c-format
 msgid "v850 architecture"
 msgstr ""
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2918
 #, c-format
 msgid "v850e architecture"
 msgstr ""
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2919
 #, c-format
 msgid "v850e1 architecture"
 msgstr ""
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2920
 #, c-format
 msgid "v850e2 architecture"
 msgstr ""
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2921
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr ""
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2922
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr ""
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3596 elf32-v850.c:3835
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
 msgstr ""
 
-#: elf32-v850.c:3619 elf32-v850.c:3858
+#: elf32-v850.c:3606 elf32-v850.c:3845
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
 msgstr ""
 
-#: elf32-v850.c:3665 elf32-v850.c:3893
+#: elf32-v850.c:3652 elf32-v850.c:3880
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr ""
 
-#: elf32-v850.c:3705
+#: elf32-v850.c:3692
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr ""
 
-#: elf32-vax.c:540
+#: elf32-vax.c:537
 #, c-format
 msgid " [nonpic]"
 msgstr ""
 
-#: elf32-vax.c:543
+#: elf32-vax.c:540
 #, c-format
 msgid " [d-float]"
 msgstr ""
 
-#: elf32-vax.c:546
+#: elf32-vax.c:543
 #, c-format
 msgid " [g-float]"
 msgstr ""
 
-#: elf32-vax.c:632
+#: elf32-vax.c:629
 #, c-format
 msgid ""
 "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT "
 "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,1355 +4392,2156 @@ 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:2077
+#: elfnn-ia64.c:2345
 msgid "non-zero addend in @fptr reloc"
 msgstr ""
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:996
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr ""
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2732
 #, 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:2815 elf32-xtensa.c:2938
 msgid "dynamic relocation in read-only section"
 msgstr ""
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2915
 msgid "TLS relocation invalid without dynamic sections"
 msgstr ""
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3128
 msgid "internal inconsistency in size of .got.loc section"
 msgstr ""
 
-#: elf32-xtensa.c:3377
+#: elf32-xtensa.c:3434
 #, 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:4733 elf32-xtensa.c:4741
 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:6569 elf32-xtensa.c:6648 elf32-xtensa.c:8074
 #, c-format
 msgid ""
 "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration "
 "mismatch"
 msgstr ""
 
-#: elf32-xtensa.c:7638
+#: elf32-xtensa.c:7815
 #, 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:9673
 msgid "invalid relocation address"
 msgstr ""
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9764
 msgid "overflow after relaxation"
 msgstr ""
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10910
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr ""
 
+#: 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:472
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr ""
 
-#: elf64-alpha.c:2463
+#: elf64-alpha.c:1983
+#, c-format
+msgid ""
+"%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr ""
+
+#: elf64-alpha.c:2435
 #, c-format
 msgid "%pB: .got subsegment exceeds 64K (size %d)"
 msgstr ""
 
-#: elf64-alpha.c:3018 elf64-alpha.c:3214
+#: elf64-alpha.c:2679 elflink.c:15752
+#: elfnn-kvx.c:4016
+#: elfnn-loongarch.c:2016
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr ""
+
+#: elf64-alpha.c:2977 elf64-alpha.c:3172
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
 msgstr ""
 
-#: elf64-alpha.c:4415 elf64-alpha.c:4428
+#: elf64-alpha.c:4372 elf64-alpha.c:4385
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4484
+#: elf64-alpha.c:4441
 #, 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:4466 mach-o.c:627
+#: elfnn-loongarch.c:917
+#: elfnn-riscv.c:917
+#: elfnn-riscv.c:1122
+#: elfnn-riscv.c:1164
 msgid "<unknown>"
 msgstr ""
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4472
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr ""
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4530
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr ""
 
-#: elf64-alpha.c:4608
+#: elf64-alpha.c:4565
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4674
+#: elf64-alpha.c:4631
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr ""
 
-#: elf64-alpha.c:4699
+#: elf64-alpha.c:4656
 #, c-format
 msgid "%pB: tp-relative relocation against dynamic symbol %s"
 msgstr ""
 
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:344
+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:2037
 #, c-format
 msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
 msgstr ""
 
-#: elf64-hppa.c:3286
+#: elf64-hppa.c:3241
 #, 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:600
+#: elfnn-ia64.c:641
 #, 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:2032
+#: elfnn-ia64.c:2293
 msgid "@pltoff reloc against local symbol"
 msgstr ""
 
-#: elf64-ia64-vms.c:3292 elf32-ia64.c:3712 elf64-ia64.c:3712
+#: elf64-ia64-vms.c:3280
+#: elfnn-ia64.c:3673
 #, 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:3290
+#: elfnn-ia64.c:3683
 #, 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:3560
+#: elfnn-ia64.c:3956
 #, 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:3624
+#: elfnn-ia64.c:4024
 #, 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:3683
+#: elfnn-ia64.c:4087
 #, 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:3785
+#: elfnn-ia64.c:4225
 #, 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:3788
+#: elfnn-ia64.c:4228
 #, 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:3791
+#: elfnn-ia64.c:4231
 #, 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:3915
+#: elfnn-ia64.c:4428
 msgid "unsupported reloc"
 msgstr ""
 
-#: elf64-ia64-vms.c:3964 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3952
+#: elfnn-ia64.c:4466
 #, 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:3969
+#: elfnn-ia64.c:4483
 #, c-format
 msgid ""
-"%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size "
-"%#<PRIx64> (> 0x1000000)."
+"%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:4263
+#: elfnn-ia64.c:4742
 #, 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:4272
+#: elfnn-ia64.c:4751
 #, 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:4281
+#: elfnn-ia64.c:4760
 #, 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:4290
+#: elfnn-ia64.c:4769
 #, 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:4300
+#: elfnn-ia64.c:4779
 #, 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:5518
 #, 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
 #, 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:5547
 #, c-format
 msgid ""
-"warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in "
-"%pB"
+"warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %"
+"pB"
 msgstr ""
 
-#: elf64-mips.c:4098
+#: elf64-mips.c:4102
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr ""
 
-#: elf64-mmix.c:984
+#: elf64-mmix.c:980
 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 ""
 
-#: elf64-mmix.c:1168
+#: elf64-mmix.c:1164
 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 ""
 
-#: elf64-mmix.c:1195
+#: elf64-mmix.c:1191
 #, c-format
 msgid ""
 "%pB: Internal inconsistency error for value for\n"
 " linker-allocated global register: linked: %#<PRIx64> != relaxed: %#<PRIx64>"
 msgstr ""
 
-#: elf64-mmix.c:1619
+#: elf64-mmix.c:1615
 #, c-format
 msgid ""
 "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
 msgstr ""
 
-#: elf64-mmix.c:1625
+#: elf64-mmix.c:1621
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
 msgstr ""
 
-#: elf64-mmix.c:1670
+#: elf64-mmix.c:1666
 #, c-format
 msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
 msgstr ""
 
-#: elf64-mmix.c:1676
+#: elf64-mmix.c:1672
 #, c-format
 msgid "%pB: register relocation against non-register symbol: %s in %pA"
 msgstr ""
 
-#: elf64-mmix.c:1713
+#: elf64-mmix.c:1709
 #, c-format
 msgid "%pB: directive LOCAL valid only with a register or absolute value"
 msgstr ""
 
-#: elf64-mmix.c:1744
+#: elf64-mmix.c:1738
 #, 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:2153
 #, 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:2208
 msgid "register section has contents\n"
 msgstr ""
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2399
 #, c-format
 msgid ""
 "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr ""
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:1361
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr ""
+
+#: elf64-ppc.c:4302
 #, c-format
 msgid "symbol '%s' has invalid st_other for ABI version 1"
 msgstr ""
 
-#: elf64-ppc.c:4002
+#: elf64-ppc.c:4485
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr ""
 
-#: elf64-ppc.c:4523
+#: elf64-ppc.c:5107
 #, c-format
 msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
 msgstr ""
 
-#: elf64-ppc.c:4919
+#: elf64-ppc.c:5277
+msgid "%H: %s reloc unsupported here\n"
+msgstr ""
+
+#: elf64-ppc.c:5500
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr ""
 
-#: elf64-ppc.c:4927
+#: elf64-ppc.c:5508
 #, c-format
 msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
 msgstr ""
 
-#: elf64-ppc.c:4954
+#: elf64-ppc.c:5535
 #, c-format
 msgid " [abiv%ld]"
 msgstr ""
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6845
 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:7112
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr ""
 
-#: elf64-ppc.c:6644
+#: elf64-ppc.c:7363
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr ""
 
-#: elf64-ppc.c:6733
+#: elf64-ppc.c:7454
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr ""
 
-#: elf64-ppc.c:6743
+#: elf64-ppc.c:7464
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr ""
 
-#: elf64-ppc.c:6765
+#: elf64-ppc.c:7486
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr ""
 
-#: elf64-ppc.c:7249
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7987
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr ""
+
+#: elf64-ppc.c:7995
 msgid ""
 "warning: --plt-localentry is especially dangerous without ld.so support to "
 "detect ABI violations"
 msgstr ""
 
-#: elf64-ppc.c:7499
+#: elf64-ppc.c:8311
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr ""
 
-#: elf64-ppc.c:7876 elf64-ppc.c:8513
+#: elf64-ppc.c:8746 elf64-ppc.c:9462
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr ""
 
-#: elf64-ppc.c:8241
+#: elf64-ppc.c:9419
 #, 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:9640
 #, 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:10536
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr ""
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11692
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:10303
+#: elf64-ppc.c:11842
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr ""
 
-#: elf64-ppc.c:10330
+#: elf64-ppc.c:11869
 #, 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:11930 elf64-ppc.c:12182 elf64-ppc.c:14748
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:12381
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr ""
 
-#: elf64-ppc.c:11779
+#: elf64-ppc.c:13412
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr ""
 
-#: elf64-ppc.c:13189 elf64-ppc.c:13208
+#: elf64-ppc.c:14929
+msgid "__tls_get_addr call offset overflow"
+msgstr ""
+
+#: elf64-ppc.c:15272 elf64-ppc.c:15291
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr ""
 
-#: elf64-ppc.c:13244
+#: elf64-ppc.c:15380
 #, c-format
-msgid "linker stubs in %u group\n"
-msgid_plural "linker stubs in %u groups\n"
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
 msgstr[0] ""
 msgstr[1] ""
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:15387
 #, c-format
 msgid ""
+"%s, iter %u\n"
 "  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 ""
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:15769
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:15771
 #, c-format
 msgid "%H: %s used with non-TLS symbol `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:14245
+#: elf64-ppc.c:16555
 #, 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:16561
 #, 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:17212
+#, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr ""
+
+#: elf64-ppc.c:17488
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr ""
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:17575
+#, c-format
+msgid ""
+"%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr ""
+
+#: elf64-ppc.c:17630
 #, c-format
 msgid "%P: %pB: %s is not supported for `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:15326
+#: elf64-ppc.c:17899
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr ""
 
-#: elf64-ppc.c:15349
+#: elf64-ppc.c:17922
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr ""
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:18067
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr ""
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2752
 #, 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
+#: elf64-s390.c:3415
+#, c-format
+msgid ""
+"%pB(%pA+%#<PRIx64>): relocation %s against misaligned symbol `%s' (%"
+"#<PRIx64>) in %pB"
+msgstr ""
+
+#: elf64-sparc.c:134 elfcode.h:1601
 #, c-format
 msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
 msgstr ""
 
-#: elf64-sparc.c:467
+#: elf64-sparc.c:493
 #, c-format
 msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
 msgstr ""
 
-#: elf64-sparc.c:488
+#: elf64-sparc.c:514
 #, c-format
 msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
 msgstr ""
 
-#: elf64-sparc.c:512
+#: elf64-sparc.c:538
 #, c-format
 msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
 msgstr ""
 
-#: elf64-sparc.c:559
+#: elf64-sparc.c:585
 #, c-format
 msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
 msgstr ""
 
-#: elf64-sparc.c:691
+#: elf64-sparc.c:717
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr ""
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1690
 msgid "hidden symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1693
 msgid "internal symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1696 elf64-x86-64.c:1700
 msgid "protected symbol "
 msgstr ""
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1702
 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:1708
 msgid "undefined "
 msgstr ""
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1718
+#: elfnn-loongarch.c:901
 msgid "a shared object"
 msgstr ""
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1720
+msgid "; recompile with -fPIC"
+msgstr ""
+
+#: elf64-x86-64.c:1725
+#: elfnn-loongarch.c:907
 msgid "a PIE object"
 msgstr ""
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1727
+#: elfnn-loongarch.c:909
 msgid "a PDE object"
 msgstr ""
 
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1729
+msgid "; recompile with -fPIE"
+msgstr ""
+
+#: elf64-x86-64.c:1733
 #, 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:2566
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx64> > %#<PRIx64>) for section `%pA'"
+msgstr ""
+
+#: elf64-x86-64.c:2630
 #, 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:2791
 #, 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:3046
+#, c-format
+msgid "%pB: unsupported relocation %s against symbol `%s'"
+msgstr ""
+
+#: elf64-x86-64.c:3472
+#: elfnn-aarch64.c:5784
+#: elfnn-riscv.c:2572
 #, c-format
 msgid ""
-"%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: "
-"%<PRId64>"
+"%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %"
+"<PRId64>"
 msgstr ""
 
-#: elf64-x86-64.c:2934
+#: elf64-x86-64.c:3741
 #, 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:3755
 #, 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:4045
 #, 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
-msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
+#: elf64-x86-64.c:4197
+msgid "%P: corrupt input: %pB\n"
+msgstr ""
+
+#: elf64-x86-64.c:5066
+#, c-format
+msgid ""
+" failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr ""
+
+#: elf64-x86-64.c:5225
+#, c-format
+msgid "%pB: PC-relative offset overflow in PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:5301
 #, c-format
-msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgid "%pB: branch displacement overflow in PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:4106
+#: elf64-x86-64.c:5354
 #, c-format
-msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgid "%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
 msgstr ""
 
-#: elf64-x86-64.c:4159
+#: elf64-x86-64.c:5505
 #, c-format
-msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgid ""
+"%pB: Unable to generate dynamic relocs because a suitable section does not "
+"exist\n"
 msgstr ""
 
-#: elfcode.h:323
-msgid "warning: %pB has a corrupt section with a size (%"
+#: elfcode.h:342
+#, c-format
+msgid "warning: %pB has a section extending past end of file"
 msgstr ""
 
-#: elfcode.h:768
+#: elfcode.h:790
 #, c-format
-msgid "warning: %pB has a corrupt string table index - ignoring"
+msgid "warning: %pB has a corrupt string table index"
 msgstr ""
 
-#: elfcode.h:1212
+#: elfcode.h:838
+#, c-format
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr ""
+
+#: elfcode.h:1056
+#, c-format
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr ""
+
+#: elfcode.h:1321
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr ""
 
-#: elfcore.h:300
+#: elfcore.h:280
 #, c-format
-msgid ""
-"warning: %pB is truncated: expected core file size >= %<PRIu64>, found: "
-"%<PRIu64>"
+msgid "warning: %pB has a segment extending past end of file"
 msgstr ""
 
-#: elflink.c:1367
+#: elflink.c:1477
 #, c-format
 msgid ""
 "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB "
 "section %pA"
 msgstr ""
 
-#: elflink.c:1373
+#: elflink.c:1483
 #, c-format
 msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
 msgstr ""
 
-#: elflink.c:1379
+#: elflink.c:1489
 #, c-format
 msgid ""
 "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
 msgstr ""
 
-#: elflink.c:1385
+#: elflink.c:1495
 #, c-format
 msgid ""
 "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
 msgstr ""
 
-#: elflink.c:2075
+#: elflink.c:2207
 #, c-format
 msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr ""
 
-#: elflink.c:2452
+#: elflink.c:2720
 #, c-format
 msgid "%pB: version node not found for symbol %s"
 msgstr ""
 
-#: elflink.c:2541
+#: elflink.c:2819
 #, c-format
 msgid ""
 "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in "
 "section `%pA'"
 msgstr ""
 
-#: elflink.c:2553
+#: elflink.c:2831
 #, c-format
 msgid ""
-"%pB: non-zero symbol index (%#<PRIx64>) for offset %#<PRIx64> in section `"
-"%pA' when the object file has no symbol table"
+"%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:3017
 #, c-format
 msgid "%pB: relocation size mismatch in %pB section %pA"
 msgstr ""
 
-#: elflink.c:3066
+#: elflink.c:3350
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr ""
 
-#: elflink.c:3128
+#: elflink.c:3407
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr ""
 
-#: elflink.c:3932
+#: elflink.c:4363
+msgid "%P: %pB: failed to add %s to first hash\n"
+msgstr ""
+
+#: elflink.c:4431
+msgid "%P: first_hash failed to create: %E\n"
+msgstr ""
+
+#: elflink.c:4462
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr ""
 
-#: elflink.c:4598
+#: elflink.c:4945
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr ""
+
+#: elflink.c:5015
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr ""
+
+#: elflink.c:5164
+#, c-format
+msgid "%pB: not enough version information"
+msgstr ""
+
+#: elflink.c:5202
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr ""
 
-#: elflink.c:4635
+#: elflink.c:5239
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr ""
 
-#: elflink.c:5054
+#: elflink.c:5525
+#, c-format
+msgid ""
+"warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used "
+"by the common definition in %pB"
+msgstr ""
+
+#: elflink.c:5532
+msgid ""
+"warning: NOTE: alignment discrepancies can cause real problems.  "
+"Investigation is advised."
+msgstr ""
+
+#: elflink.c:5554
+msgid ""
+"warning: NOTE: size discrepancies can cause real problems.  Investigation is "
+"advised."
+msgstr ""
+
+#: elflink.c:5697
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr ""
 
-#: elflink.c:6130
+#: elflink.c:6812
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr ""
 
-#: elflink.c:6134
+#: elflink.c:6816
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr ""
 
-#: elflink.c:6331
+#: elflink.c:7028
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr ""
 
-#: elflink.c:6902
+#: elflink.c:7419
+msgid ""
+"error: creating an executable stack because of -z execstack command line "
+"option"
+msgstr ""
+
+#: elflink.c:7425
+msgid ""
+"warning: enabling an executable stack because of -z execstack command line "
+"option"
+msgstr ""
+
+#: elflink.c:7487
+#, c-format
+msgid ""
+"error: %s: is triggering the generation of an executable stack (because it "
+"has an executable .note.GNU-stack section)"
+msgstr ""
+
+#: elflink.c:7493
+#, c-format
+msgid ""
+"warning: %s: requires executable stack (because the .note.GNU-stack section "
+"is executable)"
+msgstr ""
+
+#: elflink.c:7501
+#, c-format
+msgid ""
+"error: %s: is triggering the generation of an executable stack because it "
+"does not have a .note.GNU-stack section"
+msgstr ""
+
+#: elflink.c:7507
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr ""
+
+#: elflink.c:7510
+msgid ""
+"NOTE: This behaviour is deprecated and will be removed in a future version "
+"of the linker"
+msgstr ""
+
+#: elflink.c:7664
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr ""
 
-#: elflink.c:8359
+#: elflink.c:9284
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr ""
 
-#: elflink.c:8514
+#: elflink.c:9447 elflink.c:9455
+msgid "division by zero"
+msgstr ""
+
+#: elflink.c:9469
 #, 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:9805
 #, c-format
 msgid ""
 "%pB:%pA: error: relocation references symbol %s which was removed by garbage "
 "collection"
 msgstr ""
 
-#: elflink.c:8855
+#: elflink.c:9808
 #, 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:10059 elflink.c:10077 elflink.c:10116 elflink.c:10134
 #, 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:10093 elflink.c:10150
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr ""
 
-#: elflink.c:9234
+#: elflink.c:10202
 msgid "not enough memory to sort relocations"
 msgstr ""
 
-#: elflink.c:9502
+#: elflink.c:10536
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr ""
 
-#: elflink.c:9782
+#: elflink.c:10812
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9785
+#: elflink.c:10815
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9788
+#: elflink.c:10818
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr ""
 
-#: elflink.c:9874
+#: elflink.c:10911
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr ""
 
-#: elflink.c:10028
+#: elflink.c:11069
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10031
+#: elflink.c:11072
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10034
+#: elflink.c:11075
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr ""
 
-#: elflink.c:10066
+#: elflink.c:11107
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr ""
 
-#: elflink.c:10679
+#: elflink.c:11649
 #, c-format
-msgid "error: %pB: size of section %pA is not multiple of address size"
+msgid "error: %pB: unable to create group section symbol"
 msgstr ""
 
-#: elflink.c:10724
+#: elflink.c:11798
 #, c-format
 msgid ""
-"error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a "
+"error: %pB contains a reloc (%#<PRIx64>) for section '%pA' that references a "
 "non-existent global symbol"
 msgstr ""
 
-#: elflink.c:11484
+#: elflink.c:12264
 #, c-format
-msgid ""
-"%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
+msgid "error: %pB: size of section %pA is not multiple of address size"
 msgstr ""
 
-#: elflink.c:11490
+#: elflink.c:12544
 #, c-format
-msgid "%pA has both ordered and unordered sections"
+msgid "%pB: no symbol found for import library"
 msgstr ""
 
-#: elflink.c:11592
-#, c-format
-msgid "%pB: no symbol found for import library"
+#: elflink.c:13150
+msgid "%P: %pB: failed to finish relative relocations\n"
 msgstr ""
 
-#: elflink.c:12225
+#: elflink.c:13227
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr ""
 
-#: elflink.c:12442
+#: elflink.c:13449
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr ""
 
-#: elflink.c:12561
+#: elflink.c:13610
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr ""
 
-#: elflink.c:12609
+#: elflink.c:13658
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr ""
 
-#: elflink.c:12701
+#: elflink.c:13752
 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:13755
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
 msgstr ""
 
-#: elflink.c:12829
+#: elflink.c:13758
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr ""
+
+#: elflink.c:13761
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr ""
+
+#: elflink.c:13890
 msgid "%P%X: can not read symbols: %E\n"
 msgstr ""
 
-#: elflink.c:13002
-msgid "%F%P: corrupt input: %pB\n"
+#: elflink.c:14312
+msgid "%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
 msgstr ""
 
-#: elflink.c:13668
+#: elflink.c:14793
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr ""
 
-#: elflink.c:13844
+#: elflink.c:14834
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr ""
+
+#: elflink.c:14977
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr ""
 
-#: elfxx-mips.c:1450
+#: elflink.c:15758
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr ""
+
+#: elflink.c:15847
+msgid ""
+"%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault "
+"at runtime; recompile with %s\n"
+msgstr ""
+
+#: elfxx-aarch64.c:478
+#, c-format
+msgid ""
+"%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr ""
+
+#: elfxx-aarch64.c:786
+#, c-format
+msgid ""
+"%Xerror: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:788
+#, c-format
+msgid ""
+"warning: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:798
+#, c-format
+msgid ""
+"%Xerror: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:800
+#, c-format
+msgid ""
+"warning: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:810
+#, c-format
+msgid ""
+"%Xerror: found a total of %d dynamically-linked objects incompatible with "
+"GCS requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid ""
+"warning: found a total of %d dynamically-linked objects incompatible with "
+"GCS requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:971
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr ""
+
+#: elfxx-aarch64.c:1115
+#, c-format
+msgid ""
+"%pB: warning: BTI is required by -z force-bti, but this input object file "
+"lacks the necessary property note.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1117
+#, c-format
+msgid ""
+"%X%pB: error: BTI is required by -z force-bti, but this input object file "
+"lacks the necessary property note.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1149
+#, c-format
+msgid ""
+"%pB: warning: GCS is required by -z gcs, but this shared library lacks the "
+"necessary property note. The dynamic loader might not enable GCS or refuse "
+"to load the program unless all the shared library dependencies have the GCS "
+"marking.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1153
+#, c-format
+msgid ""
+"%X%pB: error: GCS is required by -z gcs, but this shared library lacks the "
+"necessary property note. The dynamic loader might not enable GCS or refuse "
+"to load the program unless all the shared library dependencies have the GCS "
+"marking.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1159
+#, c-format
+msgid ""
+"%pB: warning: GCS is required by -z gcs, but this input object file lacks "
+"the necessary property note.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1161
+#, c-format
+msgid ""
+"%X%pB: error: GCS is required by -z gcs, but this input object file lacks "
+"the necessary property note.\n"
+msgstr ""
+
+#: elfxx-loongarch.c:1911
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr ""
+
+#: elfxx-loongarch.c:1939
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr ""
+
+#: elfxx-loongarch.c:2013
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr ""
+
+#: elfxx-loongarch.c:2032
+#, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr ""
+
+#: elfxx-mips.c:1534
 msgid "static procedure (no name)"
 msgstr ""
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5895
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr ""
 
-#: elfxx-mips.c:6485
+#: elfxx-mips.c:6665
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr ""
 
-#: elfxx-mips.c:6518
+#: elfxx-mips.c:6698
 msgid ""
 "%X%H: unsupported jump between ISA modes; consider recompiling with "
 "interlinking enabled\n"
 msgstr ""
 
-#: elfxx-mips.c:6563
+#: elfxx-mips.c:6743
 msgid ""
 "%X%H: cannot convert branch between ISA modes to JALX: relocation out of "
 "range\n"
 msgstr ""
 
-#: elfxx-mips.c:6575
+#: elfxx-mips.c:6755
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr ""
 
-#: elfxx-mips.c:7223
+#: elfxx-mips.c:7401
 #, c-format
 msgid ""
 "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
 msgstr ""
 
-#: elfxx-mips.c:7267 elfxx-mips.c:7502
+#: elfxx-mips.c:7445
 #, 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:7681
+#, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr ""
+
+#: elfxx-mips.c:8533 elfxx-mips.c:8659
 #, c-format
 msgid ""
 "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr ""
 
-#: elfxx-mips.c:8558
+#: elfxx-mips.c:8791
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr ""
 
-#: elfxx-mips.c:8658
+#: elfxx-mips.c:8891
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr ""
 
-#: elfxx-mips.c:8796
+#: elfxx-mips.c:9031
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr ""
 
-#: elfxx-mips.c:9086
+#: elfxx-mips.c:9334
 #, 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:9460
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr ""
+
+#: elfxx-mips.c:9463
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr ""
+
+#: elfxx-mips.c:9683
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr ""
 
-#: elfxx-mips.c:10350
+#: elfxx-mips.c:10606
 #, 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:10748
 msgid ""
-"small-data section exceeds 64KB; lower small-data size limit (see option -G)"
+"small-data section too large; lower small-data size limit (see option -G)"
 msgstr ""
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10767
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10770
 msgid "jump to a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10771
 msgid "jump to a non-instruction-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10774
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10776
 msgid "branch to a non-instruction-aligned address"
 msgstr ""
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10778
 msgid "PC-relative load from unaligned address"
 msgstr ""
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:11078
 #, 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:11193 elfxx-mips.c:11786
 #, c-format
 msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
 msgstr ""
 
-#: elfxx-mips.c:11456
+#: elfxx-mips.c:11758
 #, 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:13503 reloc.c:8524
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr ""
+
+#: elfxx-mips.c:14814
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr ""
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15342
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr ""
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15620
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr ""
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15637
 #, 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:15669 elfxx-mips.c:15735 elfxx-mips.c:15750
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15281
+#: elfxx-mips.c:15693
 #, c-format
 msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15306
+#: elfxx-mips.c:15718
 #, c-format
 msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
 msgstr ""
 
-#: elfxx-mips.c:15440
+#: elfxx-mips.c:15852
 #, 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:15858
 #, 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:15864
 #, 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:15878
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15485
+#: elfxx-mips.c:15897
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
 msgstr ""
 
-#: elfxx-mips.c:15497
+#: elfxx-mips.c:15909
 #, c-format
 msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
 msgstr ""
 
-#: elfxx-mips.c:15506
+#: elfxx-mips.c:15918
 #, c-format
 msgid ""
-"warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI "
-"%d"
+"warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %"
+"d"
 msgstr ""
 
-#: elfxx-mips.c:15568
+#: elfxx-mips.c:15980
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr ""
 
-#: elfxx-mips.c:15582
+#: elfxx-mips.c:15994
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr ""
 
-#: elfxx-mips.c:15634
+#: elfxx-mips.c:16047
 #, c-format
 msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15639
+#: elfxx-mips.c:16052
 #, c-format
 msgid ""
 "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15643
+#: elfxx-mips.c:16056
 #, c-format
 msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15650
+#: elfxx-mips.c:16063
 #, c-format
 msgid ""
 "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
 msgstr ""
 
-#: elfxx-mips.c:15654
+#: elfxx-mips.c:16067
 #, c-format
 msgid ""
 "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
 msgstr ""
 
-#: elfxx-mips.c:15843
+#: elfxx-mips.c:16258
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr ""
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16320 elfxx-mips.c:16331
 msgid "None"
 msgstr ""
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16322 elfxx-mips.c:16391
 msgid "Unknown"
 msgstr ""
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16402
 #, c-format
 msgid "Hard or soft float\n"
 msgstr ""
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16405
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr ""
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16408
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr ""
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16411
 #, c-format
 msgid "Soft float\n"
 msgstr ""
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16414
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
 msgstr ""
 
-#: elfxx-mips.c:16002
+#: elfxx-mips.c:16417
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16005
+#: elfxx-mips.c:16420
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16008
+#: elfxx-mips.c:16423
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
 msgstr ""
 
-#: elfxx-mips.c:16040
+#: elfxx-mips.c:16455
 #, c-format
 msgid " [abi=O32]"
 msgstr ""
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16457
 #, c-format
 msgid " [abi=O64]"
 msgstr ""
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16459
 #, c-format
 msgid " [abi=EABI32]"
 msgstr ""
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16461
 #, c-format
 msgid " [abi=EABI64]"
 msgstr ""
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16463
 #, c-format
 msgid " [abi unknown]"
 msgstr ""
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16465
 #, c-format
 msgid " [abi=N32]"
 msgstr ""
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16467
 #, c-format
 msgid " [abi=64]"
 msgstr ""
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16469
 #, c-format
 msgid " [no abi set]"
 msgstr ""
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16494
 #, c-format
 msgid " [unknown ISA]"
 msgstr ""
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16514
 #, c-format
 msgid " [not 32bitmode]"
 msgstr ""
 
-#: elfxx-sparc.c:3113 /work/sources/binutils/current/bfd/elfnn-aarch64.c:5286
+#: elfxx-riscv.c:1950
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr ""
+
+#: elfxx-riscv.c:1956
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2063
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr ""
+
+#: elfxx-riscv.c:2087
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr ""
+
+#: elfxx-riscv.c:2123
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr ""
+
+#: elfxx-riscv.c:2147
+#, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2171
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr ""
+
+#: elfxx-riscv.c:2211
+#, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2219
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2226
+msgid "zcmp' is incompatible with `d' and `c', or `zcd' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2233
+#, c-format
+msgid "rv%d does not support the `zcf' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2240
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2247
+msgid "`xtheadvector' is conflict with the `v/zve32x' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2256
+msgid "`zclsd' is conflict with the `c+f'/ `zcf' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2261
+#, c-format
+msgid "rv%d does not support the `ssnpm' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2267
+#, c-format
+msgid "rv%d does not support the `smnpm' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2273
+#, c-format
+msgid "rv%d does not support the `smmpm' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2279
+#, c-format
+msgid "rv%d does not support the `sspm' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2285
+#, c-format
+msgid "rv%d does not support the `supm' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2307
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2364
+msgid "Warning: should use \"_\" to contact Profiles with other extensions"
+msgstr ""
+
+#: elfxx-riscv.c:2405
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr ""
+
+#: elfxx-riscv.c:2439
+#, c-format
+msgid "%s: ISA string must begin with rv32, rv64 or Profiles"
+msgstr ""
+
+#: elfxx-riscv.c:2629
+msgid "internal: "
+msgstr ""
+
+#: elfxx-riscv.c:2683
+#, c-format
+msgid "%sinvalid ISA extension ends with <number>p in %s `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2706
+#, c-format
+msgid "%sunknown ISA extension `%s' in %s `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2717
+#, c-format
+msgid "%sdeprecated - extension `%s' in %s `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2727
+#, c-format
+msgid "%scannot + base extension `%s' in %s `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:3059 elfxx-riscv.c:3343
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr ""
+
+#: elfxx-riscv.c:3093
+msgid "zicfiss' and `zcmop"
+msgstr ""
+
+#: elfxx-riscv.c:3106
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr ""
+
+#: elfxx-riscv.c:3111 elfxx-riscv.c:3137
+msgid "c' or `zca"
+msgstr ""
+
+#: elfxx-riscv.c:3119
+msgid "m' or `zmmul"
+msgstr ""
+
+#: elfxx-riscv.c:3139
+msgid "f' and `c', or `zcf"
+msgstr ""
+
+#: elfxx-riscv.c:3141
+msgid "d' and `c', or `zcd"
+msgstr ""
+
+#: elfxx-riscv.c:3143
+msgid "f' or `zfinx"
+msgstr ""
+
+#: elfxx-riscv.c:3145
+msgid "d' or `zdinx"
+msgstr ""
+
+#: elfxx-riscv.c:3147
+msgid "q' or `zqinx"
+msgstr ""
+
+#: elfxx-riscv.c:3149
+msgid "zfh' or `zhinx"
+msgstr ""
+
+#: elfxx-riscv.c:3153
+msgid "zfhmin' or `zhinxmin"
+msgstr ""
+
+#: elfxx-riscv.c:3164
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr ""
+
+#: elfxx-riscv.c:3175
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr ""
+
+#: elfxx-riscv.c:3183
+msgid "d' and `zfa"
+msgstr ""
+
+#: elfxx-riscv.c:3191
+msgid "q' and `zfa"
+msgstr ""
+
+#: elfxx-riscv.c:3199
+msgid "zfh' and `zfa"
+msgstr ""
+
+#: elfxx-riscv.c:3209
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr ""
+
+#: elfxx-riscv.c:3214
+msgid "zfh' or `zvfh"
+msgstr ""
+
+#: elfxx-riscv.c:3230
+msgid "zbb' or `zbkb"
+msgstr ""
+
+#: elfxx-riscv.c:3232
+msgid "zbc' or `zbkc"
+msgstr ""
+
+#: elfxx-riscv.c:3240
+msgid "zknd' or `zkne"
+msgstr ""
+
+#: elfxx-riscv.c:3246
+msgid "v' or `zve64x' or `zve32x"
+msgstr ""
+
+#: elfxx-riscv.c:3248
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr ""
+
+#: elfxx-riscv.c:3250
+msgid "zvbb"
+msgstr ""
+
+#: elfxx-riscv.c:3252
+msgid "zvbc"
+msgstr ""
+
+#: elfxx-riscv.c:3258
+msgid "zvkb"
+msgstr ""
+
+#: elfxx-riscv.c:3260
+msgid "zvkg"
+msgstr ""
+
+#: elfxx-riscv.c:3262
+msgid "zvkned"
+msgstr ""
+
+#: elfxx-riscv.c:3264
+msgid "zvknha' or `zvknhb"
+msgstr ""
+
+#: elfxx-riscv.c:3266
+msgid "zvksed"
+msgstr ""
+
+#: elfxx-riscv.c:3268
+msgid "zvksh"
+msgstr ""
+
+#: elfxx-riscv.c:3272
+msgid "zcb' and `zba"
+msgstr ""
+
+#: elfxx-riscv.c:3274
+msgid "zcb' and `zbb"
+msgstr ""
+
+#: elfxx-riscv.c:3276
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr ""
+
+#: elfxx-riscv.c:3284
+msgid "smctr' or `ssctr"
+msgstr ""
+
+#: elfxx-riscv.c:3294
+msgid "h"
+msgstr ""
+
+#: elfxx-riscv.c:3441
+msgid "%F%P: failed to create GNU property section\n"
+msgstr ""
+
+#: elfxx-riscv.c:3485
+#, c-format
+msgid "error: %pB: <corrupt RISC-V used size: 0x%x>"
+msgstr ""
+
+#: elfxx-sparc.c:3028
+#: elfnn-aarch64.c:5768
 #, c-format
 msgid ""
 "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
 msgstr ""
 
-#: elfxx-tilegx.c:4254
+#: elfxx-tilegx.c:4128
 #, c-format
 msgid "%pB: cannot link together %s and %s objects"
 msgstr ""
 
-#: elfxx-x86.c:578
+#: elfxx-x86.c:534 elfxx-x86.c:3586
 #, c-format
-msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgid ""
+"%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
 msgstr ""
 
 #: elfxx-x86.c:1027
+#, c-format
+msgid "%P: %pB: failed to allocate relative reloc record\n"
+msgstr ""
+
+#: elfxx-x86.c:1388
+#, c-format
+msgid "%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr ""
+
+#: elfxx-x86.c:1424
+#, c-format
+msgid "%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr ""
+
+#: elfxx-x86.c:1563
+#, c-format
+msgid "%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr ""
+
+#: elfxx-x86.c:1750
+#, c-format
+msgid ""
+"%P: %pB: size of compact relative reloc section is changed: new (%lu) != old "
+"(%lu)\n"
+msgstr ""
+
+#: elfxx-x86.c:1772
+#, c-format
+msgid "%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr ""
+
+#: elfxx-x86.c:2243
+#, c-format
+msgid ""
+"%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is "
+"disallowed\n"
+msgstr ""
+
+#: elfxx-x86.c:2325
 msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
 msgstr ""
 
-#: elfxx-x86.c:1383
+#: elfxx-x86.c:3254
 msgid ""
-"%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
+"%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%"
+"pA' in %pB\n"
 msgstr ""
 
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:3260
+msgid ""
+"%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr ""
+
+#: elfxx-x86.c:3296
+#, c-format
+msgid ""
+"%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' "
+"failed\n"
+msgstr ""
+
+#: elfxx-x86.c:3305
+#, c-format
+msgid ""
+"%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n"
+msgstr ""
+
+#: elfxx-x86.c:3313
+#, c-format
+msgid ""
+"%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only\n"
+msgstr ""
+
+#: elfxx-x86.c:3321
+#, c-format
+msgid ""
+"%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV "
+"only\n"
+msgstr ""
+
+#: elfxx-x86.c:3329
+#, c-format
+msgid ""
+"%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with "
+"%s register only\n"
+msgstr ""
+
+#: elfxx-x86.c:3338
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n"
+msgstr ""
+
+#: elfxx-x86.c:3965
 #, c-format
 msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
 msgstr ""
 
-#: elfxx-x86.c:2609
-msgid "%F%P: failed to create GNU property section\n"
+#: elfxx-x86.c:4178
+#, c-format
+msgid "%pB: x86 ISA needed: "
+msgstr ""
+
+#: elfxx-x86.c:4180
+#, c-format
+msgid "%pB: x86 ISA used: "
 msgstr ""
 
-#: elfxx-x86.c:2614
+#: elfxx-x86.c:4202
 #, c-format
-msgid "%F%pA: failed to align section\n"
+msgid "<unknown: %x>"
+msgstr ""
+
+#: elfxx-x86.c:4338
+msgid "%P: failed to create %sn"
+msgstr ""
+
+#: elfxx-x86.c:4352
+msgid "%P: %pB: warning: missing %s\n"
+msgstr ""
+
+#: elfxx-x86.c:4353
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr ""
+
+#: elfxx-x86.c:4459
+msgid "IBT and SHSTK properties"
+msgstr ""
+
+#: elfxx-x86.c:4461
+msgid "IBT property"
 msgstr ""
 
-#: elfxx-x86.c:2760
-msgid "%F%P: failed to create VxWorks dynamic sections\n"
+#: elfxx-x86.c:4463
+msgid "SHSTK property"
 msgstr ""
 
-#: elfxx-x86.c:2769
-msgid "%F%P: failed to create GOT sections\n"
+#: elfxx-x86.c:4468
+msgid "LAM_U48 property"
 msgstr ""
 
-#: elfxx-x86.c:2787
-msgid "%F%P: failed to create ifunc sections\n"
+#: elfxx-x86.c:4473
+msgid "LAM_U57 property"
 msgstr ""
 
-#: elfxx-x86.c:2828
-msgid "%F%P: failed to create GOT PLT section\n"
+#: elfxx-x86.c:4651
+msgid "%P: failed to create VxWorks dynamic sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2849
-msgid "%F%P: failed to create IBT-enabled PLT section\n"
+#: elfxx-x86.c:4660
+msgid "%P: failed to create GOT sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2864
-msgid "%F%P: failed to create BND PLT section\n"
+#: elfxx-x86.c:4678
+msgid "%P: failed to create ifunc sections\n"
 msgstr ""
 
-#: elfxx-x86.c:2885
-msgid "%F%P: failed to create PLT .eh_frame section\n"
+#: elfxx-x86.c:4717
+msgid "%P: failed to create GOT PLT section\n"
 msgstr ""
 
-#: elfxx-x86.c:2898
-msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
+#: elfxx-x86.c:4734
+msgid "%P: failed to create IBT-enabled PLT section\n"
 msgstr ""
 
-#: elfxx-x86.c:2912
-msgid "%F%P: failed to create the second PLT .eh_frame section\n"
+#: elfxx-x86.c:4752
+msgid "%P: failed to create PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4763
+msgid "%P: failed to create GOT PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4775
+msgid "%P: failed to create the second PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4790
+msgid "%P: failed to create PLT .sframe section\n"
+msgstr ""
+
+#: elfxx-x86.c:4806
+msgid "%P: failed to create second PLT .sframe section\n"
+msgstr ""
+
+#: elfxx-x86.c:4819
+msgid "%P: failed to create PLT GOT .sframe section\n"
+msgstr ""
+
+#: elfxx-x86.c:4859
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
 msgstr ""
 
 #: ihex.c:230
@@ -5321,517 +6554,602 @@ 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:580
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr ""
 
-#: ihex.c:619
+#: ihex.c:613
 #, c-format
 msgid "%pB: bad section length in ihex_read_section"
 msgstr ""
 
-#: ihex.c:793
+#: ihex.c:784
 #, c-format
 msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
 msgstr ""
 
-#: ihex.c:852
+#: ihex.c:842
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr ""
 
-#: libbfd.c:937
+#: libbfd.c:1260
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr ""
 
-#: libbfd.c:1101
+#: libbfd.c:1272
 #, c-format
-msgid "Deprecated %s called at %s line %d in %s\n"
+msgid "%pB: mapped section %pA has non-NULL buffer"
 msgstr ""
 
-#: libbfd.c:1104
+#: linker.c:1749
 #, c-format
-msgid "Deprecated %s called\n"
+msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr ""
 
-#: linker.c:1697
-#, c-format
-msgid "%pB: indirect symbol `%s' to `%s' is a loop"
+#: linker.c:1829
+msgid ""
+"%P: %pB: note: the message above does not take linker garbage collection "
+"into account\n"
 msgstr ""
 
-#: linker.c:2567
+#: linker.c:2663
 #, c-format
 msgid "attempt to do relocatable link with %s input and %s output"
 msgstr ""
 
-#: linker.c:2853
+#: linker.c:2942
 #, c-format
 msgid "%pB: ignoring duplicate section `%pA'\n"
 msgstr ""
 
-#: linker.c:2863 linker.c:2873
+#: linker.c:2952 linker.c:2962
 #, c-format
 msgid "%pB: duplicate section `%pA' has different size\n"
 msgstr ""
 
-#: linker.c:2882 linker.c:2888
+#: linker.c:2976 linker.c:2984
 #, c-format
 msgid "%pB: could not read contents of section `%pA'\n"
 msgstr ""
 
-#: linker.c:2893
+#: linker.c:2993
 #, c-format
 msgid "%pB: duplicate section `%pA' has different contents\n"
 msgstr ""
 
-#: linker.c:3407
+#: linker.c:3517
 #, c-format
 msgid "%pB: compiled for a big endian system and target is little endian"
 msgstr ""
 
-#: linker.c:3410
+#: linker.c:3520
 #, c-format
 msgid "%pB: compiled for a little endian system and target is big endian"
 msgstr ""
 
-#: mach-o.c:632
+#: mach-o-arm.c:169 mach-o-arm.c:301
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr ""
+
+#: mach-o-arm.c:185
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:200
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:215
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:230
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:262
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr ""
+
+#: mach-o-arm.c:332
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr ""
+
+#: mach-o.c:642
 #, c-format
 msgid "<unknown mask flags>"
 msgstr ""
 
-#: mach-o.c:687
+#: mach-o.c:697
 msgid " (<unknown>)"
 msgstr ""
 
-#: mach-o.c:698
+#: mach-o.c:709
 #, c-format
 msgid " MACH-O header:\n"
 msgstr ""
 
-#: mach-o.c:699
+#: mach-o.c:710
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr ""
 
-#: mach-o.c:700
+#: mach-o.c:711
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr ""
 
-#: mach-o.c:702
+#: mach-o.c:713
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr ""
 
-#: mach-o.c:704
+#: mach-o.c:715
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr ""
 
-#: mach-o.c:705
+#: mach-o.c:716
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr ""
 
-#: mach-o.c:706
+#: mach-o.c:717
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr ""
 
-#: mach-o.c:707
+#: mach-o.c:718
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr ""
 
-#: mach-o.c:708
+#: mach-o.c:719
 #, c-format
 msgid "   version:    %x\n"
 msgstr ""
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:754
 #, c-format
 msgid "incompatible cputypes in mach-o files: %ld vs %ld"
 msgstr ""
 
-#: mach-o.c:912
+#: mach-o.c:923
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr ""
 
-#: mach-o.c:2108
+#: mach-o.c:1515
+msgid ""
+"malformed mach-o reloc: section index is greater than the number of sections"
+msgstr ""
+
+#: mach-o.c:2157
 msgid ""
 "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab "
 "commands."
 msgstr ""
 
-#: mach-o.c:2554
+#: mach-o.c:2605
 #, c-format
 msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
 msgstr ""
 
-#: mach-o.c:2661
+#: mach-o.c:2697
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr ""
 
-#: mach-o.c:2766
+#: mach-o.c:2802
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:2950
+#: mach-o.c:2986
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr ""
 
-#: mach-o.c:3092
+#: mach-o.c:3128
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:3628
+#: mach-o.c:3654
 #, c-format
-msgid ""
-"bfd_mach_o_read_section_32: overlarge alignment value: %#lx, using 32 instead"
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
 msgstr ""
 
-#: mach-o.c:3671
+#: mach-o.c:3697
 #, c-format
-msgid ""
-"bfd_mach_o_read_section_64: overlarge alignment value: %#lx, using 32 instead"
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
 msgstr ""
 
-#: mach-o.c:3722
+#: mach-o.c:3748
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
 msgstr ""
 
-#: mach-o.c:3741
+#: mach-o.c:3767
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
 msgstr ""
 
-#: mach-o.c:3824
+#: mach-o.c:3850
 #, 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:3869
 #, c-format
 msgid ""
-"bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x"
-"%x: setting to undefined"
+"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:5068
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr ""
 
-#: mach-o.c:5122
+#: mach-o.c:5266
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr ""
 
-#: mach-o.c:5227
+#: mach-o.c:5391
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr ""
 
-#: merge.c:878
+#: merge.c:1126
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr ""
 
-#: mmo.c:476
-#, c-format
-msgid "%pB: no core to allocate section name %s"
-msgstr ""
-
-#: mmo.c:541
+#: mmo.c:535
 #, c-format
 msgid "%pB: no core to allocate a symbol %d bytes long"
 msgstr ""
 
-#: mmo.c:955
+#: mmo.c:951
 #, c-format
 msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
 msgstr ""
 
-#: mmo.c:1252
+#: mmo.c:1246
 #, c-format
 msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
 msgstr ""
 
-#: mmo.c:1399
+#: mmo.c:1393
 #, 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:1409
+#, c-format
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr ""
+
+#: mmo.c:1638
 #, c-format
 msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
 msgstr ""
 
-#: mmo.c:1644
+#: mmo.c:1649
 #, c-format
 msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
 msgstr ""
 
-#: mmo.c:1682
+#: mmo.c:1693
 #, 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:1744
 #, 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:1793
 #, c-format
 msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
 msgstr ""
 
-#: mmo.c:1785
+#: mmo.c:1804
 #, 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:1829
 #, 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:1858
 #, c-format
 msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
 msgstr ""
 
-#: mmo.c:1857
+#: mmo.c:1880
 #, c-format
 msgid ""
 "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
 msgstr ""
 
-#: mmo.c:1871
+#: mmo.c:1895
 #, c-format
 msgid ""
 "%pB: invalid mmo file: file name for number %d was not specified before use\n"
 msgstr ""
 
-#: mmo.c:1978
+#: mmo.c:2007
 #, 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:2044
 #, c-format
 msgid "%pB: invalid mmo file: lop_end not last item in file\n"
 msgstr ""
 
-#: mmo.c:2029
+#: mmo.c:2058
 #, 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:2768
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr ""
 
-#: mmo.c:2983
+#: mmo.c:3007
 #, c-format
 msgid ""
-"%pB: bad symbol definition: `Main' set to %s rather than the start address "
-"%s\n"
+"%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start "
+"address %<PRIx64>\n"
 msgstr ""
 
-#: mmo.c:3082
+#: mmo.c:3106
 #, 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:3152
 #, c-format
 msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
 msgstr ""
 
-#: mmo.c:3181
+#: mmo.c:3205
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr ""
 
-#: mmo.c:3232
+#: mmo.c:3256
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr ""
 
-#: mmo.c:3239
+#: mmo.c:3263
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr ""
 
-#: mmo.c:3244
+#: mmo.c:3268
 #, c-format
 msgid ""
-"%pB: invalid start address for initialized registers of length %<PRId64>: "
-"%#<PRIx64>"
+"%pB: invalid start address for initialized registers of length %<PRId64>: %"
+"#<PRIx64>"
 msgstr ""
 
-#: osf-core.c:127
+#: osf-core.c:128
 #, c-format
 msgid "unhandled OSF/1 core file section type %d"
 msgstr ""
 
-#: pef.c:527
+#: pdp11.c:1573
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr ""
+
+#: pef.c:534
 #, 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:176 pei-x86_64.c:230 pei-x86_64.c:240 pei-x86_64.c:265
+#: pei-x86_64.c:277 pei-x86_64.c:291 pei-x86_64.c:309 pei-x86_64.c:321
+#: pei-x86_64.c:333
 #, 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:354
 #, 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:405 pei-x86_64.c:415 pei-x86_64.c:424
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr ""
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:479
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
 msgstr ""
 
-#: pei-x86_64.c:529
+#: pei-x86_64.c:565
 #, 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:572
 #, c-format
 msgid "Warning: %s section size is zero\n"
 msgstr ""
 
-#: pei-x86_64.c:551
+#: pei-x86_64.c:587
 #, 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:596
 #, c-format
 msgid ""
 "\n"
 "The Function Table (interpreted %s section contents)\n"
 msgstr ""
 
-#: pei-x86_64.c:563
+#: pei-x86_64.c:599
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
 msgstr ""
 
-#: pei-x86_64.c:692
+#: pei-x86_64.c:724
 #, c-format
 msgid ""
 "\n"
 "Dump of %s\n"
 msgstr ""
 
-#. XXX code yet to be written.
-#: peicode.h:775
+#: peicode.h:823
 #, c-format
-msgid "%pB: unhandled import type; %x"
+msgid "%pB: unrecognized import type; %x"
 msgstr ""
 
-#: peicode.h:781
+#: peicode.h:840
 #, c-format
-msgid "%pB: unrecognized import type; %x"
+msgid "%pB: missing import name for IMPORT_NAME_EXPORTAS for %s"
 msgstr ""
 
-#: peicode.h:796
+#: peicode.h:849
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr ""
 
-#: peicode.h:1211
+#: peicode.h:1299
 #, c-format
 msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
 msgstr ""
 
-#: peicode.h:1224
+#: peicode.h:1312
 #, c-format
 msgid ""
 "%pB: recognised but unhandled machine type (0x%x) in Import Library Format "
 "archive"
 msgstr ""
 
-#: peicode.h:1242
+#: peicode.h:1330
 #, c-format
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr ""
 
-#: peicode.h:1274
+#: peicode.h:1356
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr ""
 
-#: peicode.h:1330
+#: peicode.h:1427
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr ""
 
+#: peicode.h:1599
+#, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr ""
+
+#: peicode.h:1609
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr ""
+
+#: peicode.h:1617
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr ""
+
+#: plugin.c:195
+#, c-format
+msgid "%s: failed to open to extract object only section: %s"
+msgstr ""
+
+#: plugin.c:212
+#, c-format
+msgid "%pB: invalid file to extract object only section: %s"
+msgstr ""
+
+#: plugin.c:225
+#, c-format
+msgid "%pB: failed to extract object only section: %s"
+msgstr ""
+
+#: plugin.c:245
+#, c-format
+msgid "%pB: failed to open object only section: %s"
+msgstr ""
+
+#: plugin.c:255
+#, c-format
+msgid "%pB: failed to get symbol table in object only section: %s"
+msgstr ""
+
+#: plugin.c:411
+msgid ""
+"plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr ""
+
 #: ppcboot.c:392
 #, c-format
 msgid ""
@@ -5881,49 +7199,50 @@ msgstr ""
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr ""
 
-#: reloc.c:8232
+#: reloc.c:8423
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr ""
 
-#: reloc.c:8333
+#: reloc.c:8689
 #, c-format
-msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgid "%pB: unrecognized relocation type %#x in section `%pA'"
 msgstr ""
 
-#: reloc.c:8420
+#. PR 21803: Suggest the most likely cause of this error.
+#: reloc.c:8693
 #, c-format
-msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgid "is this version of the linker - %s - out of date ?"
 msgstr ""
 
-#: reloc.c:8429
+#: rs6000-core.c:471
 #, c-format
-msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgid "%pB: warning core file truncated"
 msgstr ""
 
-#: reloc.c:8491
+#: som.c:3002
 #, c-format
-msgid "%pB: unrecognized relocation type %#x in section `%pA'"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
 msgstr ""
 
-#. PR 21803: Suggest the most likely cause of this error.
-#: reloc.c:8495
+#: som.c:3015
 #, c-format
-msgid "is this version of the linker - %s - out of date ?"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
 msgstr ""
 
-#: rs6000-core.c:471
+#. User has specified a subspace without its containing space.
+#: som.c:5403
 #, c-format
-msgid "%pB: warning core file truncated"
+msgid "%pB[%pA]: no output section for space %pA"
 msgstr ""
 
-#: som.c:5478
+#: som.c:5450
 #, c-format
 msgid ""
 "\n"
 "Exec Auxiliary Header\n"
 msgstr ""
 
-#: som.c:5787
+#: som.c:5759
 msgid "som_sizeof_headers unimplemented"
 msgstr ""
 
@@ -5937,17 +7256,17 @@ 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 ""
 
-#: stabs.c:279
+#: stabs.c:308
 #, c-format
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr ""
 
-#: syms.c:1091
+#: syms.c:1121
 msgid "unsupported .stab relocation"
 msgstr ""
 
@@ -5955,65 +7274,75 @@ msgstr ""
 msgid "corrupt EIHD record - size is too small"
 msgstr ""
 
-#: vms-alpha.c:660
+#: vms-alpha.c:665
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr ""
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr ""
+
+#: vms-alpha.c:1190
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr ""
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1214
 #, 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:1224
 #, 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:1366
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr ""
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1441
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr ""
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1474
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr ""
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1488
 msgid "stack underflow in _bfd_vms_pop"
 msgstr ""
 
+#: vms-alpha.c:1562
+#, 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,2363 +7352,2669 @@ 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:4006
 #, c-format
 msgid "SEC_RELOC with no relocs in section %pA"
 msgstr ""
 
-#: vms-alpha.c:3883 vms-alpha.c:4097
+#: vms-alpha.c:4058 vms-alpha.c:4286
 #, c-format
 msgid "size error in section %pA"
 msgstr ""
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4229
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr ""
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4272
 #, c-format
 msgid "unhandled relocation %s"
 msgstr ""
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4637
 #, 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:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804
+#: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842
+#: vms-alpha.c:4847
 #, c-format
 msgid "%s not implemented"
 msgstr ""
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4883
 #, 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:5322
+msgid "corrupt reloc record"
+msgstr ""
+
+#: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405
+#: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr ""
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5502
 #, c-format
 msgid "unknown reloc %s"
 msgstr ""
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5516
 msgid "invalid section index in ETIR"
 msgstr ""
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5525
 msgid "relocation for non-REL psect"
 msgstr ""
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5578
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr ""
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5996
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr ""
 
-#: vms-alpha.c:5752
-#, c-format
-msgid "  EMH %u (len=%u): "
-msgstr ""
-
-#: vms-alpha.c:5757
+#: vms-alpha.c:6113
 #, c-format
-msgid "   Error: The length is less than the length of an EMH record\n"
+msgid "  EMH %d (len=%u): "
 msgstr ""
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216
 #, c-format
-msgid ""
-"   Error: The record length is less than the size of an EMH_MHD record\n"
+msgid "   Error: %s min length is %u\n"
 msgstr ""
 
-#: vms-alpha.c:5777
+#: vms-alpha.c:6141
 #, c-format
 msgid "Module header\n"
 msgstr ""
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:6142
 #, c-format
 msgid "   structure level: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:6143
 #, c-format
 msgid "   max record size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:6149
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr ""
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:6155
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr ""
 
-#: vms-alpha.c:5794
+#: vms-alpha.c:6158
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:6162
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr ""
 
-#: vms-alpha.c:5804
+#: vms-alpha.c:6168
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr ""
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:6171
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:6174
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr ""
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:6176
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr ""
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:6181
 #, c-format
 msgid "Language Processor Name\n"
 msgstr ""
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:6182
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6186
 #, c-format
 msgid "Source Files Header\n"
 msgstr ""
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6187
 #, c-format
 msgid "   file: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6191
 #, c-format
 msgid "Title Text Header\n"
 msgstr ""
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6192
 #, c-format
 msgid "   title: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6196
 #, c-format
 msgid "Copyright Header\n"
 msgstr ""
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6197
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6201
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr ""
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6211
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr ""
 
-#: vms-alpha.c:5852
-#, c-format
-msgid "   Error: The length is less than the length of an EEOM record\n"
-msgstr ""
-
-#: vms-alpha.c:5856
+#: vms-alpha.c:6221
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6223
 #, c-format
 msgid "   completion code: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6228
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr ""
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6229
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr ""
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6231
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6240
 msgid " WEAK"
 msgstr ""
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6242
 msgid " DEF"
 msgstr ""
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6244
 msgid " UNI"
 msgstr ""
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6246 vms-alpha.c:6267
 msgid " REL"
 msgstr ""
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6248
 msgid " COMM"
 msgstr ""
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6250
 msgid " VECEP"
 msgstr ""
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6252
 msgid " NORM"
 msgstr ""
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6254
 msgid " QVAL"
 msgstr ""
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6261
 msgid " PIC"
 msgstr ""
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6263
 msgid " LIB"
 msgstr ""
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6265
 msgid " OVR"
 msgstr ""
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6269
 msgid " GBL"
 msgstr ""
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6271
 msgid " SHR"
 msgstr ""
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6273
 msgid " EXE"
 msgstr ""
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6275
 msgid " RD"
 msgstr ""
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6277
 msgid " WRT"
 msgstr ""
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6279
 msgid " VEC"
 msgstr ""
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6281
 msgid " NOMOD"
 msgstr ""
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6283
 msgid " COM"
 msgstr ""
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6285
 msgid " 64B"
 msgstr ""
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6294
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr ""
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6309
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr ""
 
-#: vms-alpha.c:5947 vms-alpha.c:6198
+#: vms-alpha.c:6315 vms-alpha.c:6610
 #, c-format
-msgid "   Error: length larger than remaining space in record\n"
+msgid "   Erroneous length\n"
 msgstr ""
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6328
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr ""
 
-#: vms-alpha.c:5960 vms-alpha.c:5977
+#: vms-alpha.c:6329 vms-alpha.c:6349
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr ""
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6330 vms-alpha.c:6350
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6334
 #, 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:6336 vms-alpha.c:6402 vms-alpha.c:6470
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6348
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr ""
 
-#: vms-alpha.c:5982
+#: vms-alpha.c:6354
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr ""
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6355
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6357
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6360
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6376
 #, 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:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6380
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6384
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6386
 #, 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:6389 vms-alpha.c:6489 vms-alpha.c:6512
 #, c-format
 msgid "   psect index : %u\n"
 msgstr ""
 
-#: vms-alpha.c:6015 vms-alpha.c:6091 vms-alpha.c:6110
+#: vms-alpha.c:6392 vms-alpha.c:6492 vms-alpha.c:6515
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6400
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr ""
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6415
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr ""
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6416
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr ""
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6420
 #, c-format
 msgid "   id match      : %x\n"
 msgstr ""
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6422
 #, c-format
 msgid "   error severity: %x\n"
 msgstr ""
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6426
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6432
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6441
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6445
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6457
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr ""
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6461
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6463
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6465
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6467
 #, c-format
 msgid "   psect index: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6481
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr ""
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6485
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6487 vms-alpha.c:6510
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6504
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr ""
 
-#: vms-alpha.c:6104
+#: vms-alpha.c:6508
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6521
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr ""
 
-#: vms-alpha.c:6150
+#: vms-alpha.c:6560
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6154
+#: vms-alpha.c:6564
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6159
+#: vms-alpha.c:6569
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6165
+#: vms-alpha.c:6575
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6170
+#: vms-alpha.c:6580
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6592
 #, c-format
-msgid "  %s (len=%u+%u):\n"
+msgid "  %s (len=%u):\n"
 msgstr ""
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6615
 #, c-format
-msgid "   (type: %3u, size: 4+%3u): "
+msgid "   (type: %3u, size: %3u): "
 msgstr ""
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6621
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6625
 #, c-format
-msgid "STA_LW (stack longword) 0x%08x\n"
+msgid "STA_LW (stack longword)"
 msgstr ""
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6631
 #, c-format
-msgid "STA_QW (stack quadword) 0x%08x %08x\n"
+msgid "STA_QW (stack quadword)"
 msgstr ""
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6638
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6641
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6228
+#: vms-alpha.c:6647
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr ""
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6650
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr ""
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6653
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr ""
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6657
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr ""
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6660
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr ""
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6663
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr ""
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6666
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr ""
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6673
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr ""
 
-#: vms-alpha.c:6260
+#: vms-alpha.c:6682
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6687
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6268
+#: vms-alpha.c:6691
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr ""
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6694
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr ""
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6697
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr ""
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6704
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr ""
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6713
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6291
+#: vms-alpha.c:6717
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr ""
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6720
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr ""
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6723
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr ""
 
-#: vms-alpha.c:6301
+#: vms-alpha.c:6727
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr ""
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6730
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr ""
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6733
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr ""
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6736
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr ""
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6739
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr ""
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6742
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr ""
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6745
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr ""
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6748
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr ""
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6751
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr ""
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6754
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr ""
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6757
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr ""
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6760
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr ""
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6763
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr ""
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6766
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr ""
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6769
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr ""
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6772
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr ""
 
-#: vms-alpha.c:6349
+#: vms-alpha.c:6775
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr ""
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6779
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr ""
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6783
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr ""
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6787
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6794
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6800
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr ""
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6803
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6808
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr ""
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6811
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6816
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6820
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:6387
+#: vms-alpha.c:6827
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:6831
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6395
+#: vms-alpha.c:6835
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6399
+#: vms-alpha.c:6839
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6403
+#: vms-alpha.c:6843
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6407
+#: vms-alpha.c:6847
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6411
+#: vms-alpha.c:6851
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6415
+#: vms-alpha.c:6855
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6420
+#: vms-alpha.c:6860
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr ""
 
-#: vms-alpha.c:6424
+#: vms-alpha.c:6864
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr ""
 
-#: vms-alpha.c:6428
+#: vms-alpha.c:6868
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr ""
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6874
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr ""
 
-#: vms-alpha.c:6438
+#: vms-alpha.c:6879
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr ""
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6882
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr ""
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6885
 #, 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:6888 vms-alpha.c:7316 vms-alpha.c:7477
 #, c-format
 msgid "*unhandled*\n"
 msgstr ""
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6913
 #, c-format
-msgid "cannot read GST record length\n"
+msgid "cannot read GST record header\n"
 msgstr ""
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6936
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr ""
 
-#: vms-alpha.c:6524
+#: vms-alpha.c:6960
 #, c-format
-msgid "cannot read GST record header\n"
+msgid "corrupted GST\n"
 msgstr ""
 
-#: vms-alpha.c:6537
-#, c-format
-msgid " corrupted GST\n"
-msgstr ""
-
-#: vms-alpha.c:6545
+#: vms-alpha.c:6973
 #, c-format
 msgid "cannot read GST record\n"
 msgstr ""
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:7000
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr ""
 
-#: vms-alpha.c:6598
+#: vms-alpha.c:7025
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:7039
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr ""
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:7046
 #, c-format
 msgid " %08x"
 msgstr ""
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:7073
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr ""
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:7079
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:7102
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr ""
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:7109
 #, c-format
 msgid " 0x%08x"
 msgstr ""
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:7235
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr ""
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:7240
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6818
+#: vms-alpha.c:7251
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr ""
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7258
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6828
+#: vms-alpha.c:7263
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7267
 #, c-format
 msgid "Strides:\n"
 msgstr ""
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7281
 #, c-format
 msgid "Bounds:\n"
 msgstr ""
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7288
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7302
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr ""
 
-#: vms-alpha.c:6865
+#: vms-alpha.c:7309
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr ""
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7335
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr ""
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7342
 #, c-format
 msgid "(no value)\n"
 msgstr ""
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7345
 #, c-format
 msgid "(not active)\n"
 msgstr ""
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7348
 #, c-format
 msgid "(not allocated)\n"
 msgstr ""
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7351
 #, c-format
 msgid "(descriptor)\n"
 msgstr ""
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7356
 #, c-format
 msgid "(trailing value)\n"
 msgstr ""
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7359
 #, c-format
 msgid "(value spec follows)\n"
 msgstr ""
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7362
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr ""
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7366
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr ""
 
-#: vms-alpha.c:6922
+#: vms-alpha.c:7373
 msgid "literal"
 msgstr ""
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7376
 msgid "address"
 msgstr ""
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7379
 msgid "desc"
 msgstr ""
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7382
 msgid "reg"
 msgstr ""
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7403
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr ""
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7411
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr ""
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7416
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7420
 #, c-format
 msgid "typed pointer\n"
 msgstr ""
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7424
 #, c-format
 msgid "pointer\n"
 msgstr ""
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7435
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr ""
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7450
 #, c-format
 msgid "array descriptor:\n"
 msgstr ""
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7461
 #, c-format
 msgid "type spec for element:\n"
 msgstr ""
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7463
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr ""
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7488
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr ""
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7499
 #, c-format
 msgid "cannot read DST header\n"
 msgstr ""
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7505
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr ""
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7524
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr ""
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7568
 #, c-format
 msgid "standard data: %s\n"
 msgstr ""
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7572 vms-alpha.c:7696
 #, c-format
 msgid "    name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7580
 #, c-format
 msgid "modbeg\n"
 msgstr ""
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7584
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7100 vms-alpha.c:7374
+#: vms-alpha.c:7594 vms-alpha.c:7963
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7601
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7608
 #, c-format
 msgid "modend\n"
 msgstr ""
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7615
 msgid "rtnbeg\n"
 msgstr ""
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7619
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7122
+#: vms-alpha.c:7628
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7639
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7649
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7659
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7674
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7166
+#: vms-alpha.c:7686
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7692
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7708
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7725
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7731
 #, c-format
 msgid "    len: %u bits\n"
 msgstr ""
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7737
 #, c-format
 msgid "recend\n"
 msgstr ""
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7742
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7748
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7754
 #, c-format
 msgid "enumend\n"
 msgstr ""
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7761
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7764
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7776
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7783
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7794
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7813
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr ""
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7822
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7830
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7838
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr ""
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7846
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr ""
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7853
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr ""
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7860
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr ""
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7867
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7873
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7880
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr ""
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7882
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7889
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7891
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7897
 #, c-format
 msgid "delta pc +%-4d"
 msgstr ""
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7901
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7906
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr ""
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7921
 #, c-format
 msgid "source (len: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7940
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7362
+#: vms-alpha.c:7945
 #, 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:7957
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7973
 #, c-format
 msgid "   setfile %u\n"
 msgstr ""
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7980 vms-alpha.c:7987
 #, c-format
 msgid "   setrec %u\n"
 msgstr ""
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7994 vms-alpha.c:8001
 #, c-format
 msgid "   setlnum %u\n"
 msgstr ""
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:8008 vms-alpha.c:8015
 #, c-format
 msgid "   deflines %u\n"
 msgstr ""
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:8019
 #, c-format
 msgid "   formfeed\n"
 msgstr ""
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:8023
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr ""
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:8035
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr ""
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:8067
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr ""
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:8071
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7470
+#: vms-alpha.c:8075
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:8083
 msgid "executable"
 msgstr ""
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:8086
 msgid "linkable image"
 msgstr ""
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:8093
 #, c-format
 msgid " image type: %u (%s)"
 msgstr ""
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:8099
 msgid "native"
 msgstr ""
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:8102
 msgid "CLI"
 msgstr ""
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:8109
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ""
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:8116
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7515
+#: vms-alpha.c:8120
 #, c-format
 msgid " fixup info rva: "
 msgstr ""
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:8122
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ""
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:8125
 #, c-format
 msgid ""
 "\n"
 " version array off: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:8130
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7531
+#: vms-alpha.c:8136
 #, c-format
 msgid " linker flags: %08x:"
 msgstr ""
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:8167
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7568
+#: vms-alpha.c:8173
 #, c-format
 msgid " BPAGE: %u"
 msgstr ""
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:8180
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ""
 
-#: vms-alpha.c:7578
+#: vms-alpha.c:8183
 #, c-format
 msgid ", alias: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:8191
 #, c-format
 msgid "system version array information:\n"
 msgstr ""
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:8195
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr ""
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:8205
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr ""
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:8208
 #, c-format
 msgid "   %02u "
 msgstr ""
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:8212
 msgid "BASE_IMAGE       "
 msgstr ""
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:8215
 msgid "MEMORY_MANAGEMENT"
 msgstr ""
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:8218
 msgid "IO               "
 msgstr ""
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:8221
 msgid "FILES_VOLUMES    "
 msgstr ""
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:8224
 msgid "PROCESS_SCHED    "
 msgstr ""
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:8227
 msgid "SYSGEN           "
 msgstr ""
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:8230
 msgid "CLUSTERS_LOCKMGR "
 msgstr ""
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:8233
 msgid "LOGICAL_NAMES    "
 msgstr ""
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:8236
 msgid "SECURITY         "
 msgstr ""
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:8239
 msgid "IMAGE_ACTIVATOR  "
 msgstr ""
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:8242
 msgid "NETWORKS         "
 msgstr ""
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:8245
 msgid "COUNTERS         "
 msgstr ""
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:8248
 msgid "STABLE           "
 msgstr ""
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:8251
 msgid "MISC             "
 msgstr ""
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:8254
 msgid "CPU              "
 msgstr ""
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:8257
 msgid "VOLATILE         "
 msgstr ""
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:8260
 msgid "SHELL            "
 msgstr ""
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:8263
 msgid "POSIX            "
 msgstr ""
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:8266
 msgid "MULTI_PROCESSING "
 msgstr ""
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:8269
 msgid "GALAXY           "
 msgstr ""
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:8272
 msgid "*unknown*        "
 msgstr ""
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:8288 vms-alpha.c:8575
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr ""
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:8291
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr ""
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:8294
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7693
+#: vms-alpha.c:8298
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:8302
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:8306
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7705
+#: vms-alpha.c:8310
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:8321
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr ""
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:8325
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7723
+#: vms-alpha.c:8331
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:8332
 #, c-format
 msgid " link time        : %s\n"
 msgstr ""
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:8337
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:8341
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:8345
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:8354
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr ""
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:8358
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7751
+#: vms-alpha.c:8364
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
 msgstr ""
 
-#: vms-alpha.c:7756
+#: vms-alpha.c:8369
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:8374
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7774
+#: vms-alpha.c:8387
 #, c-format
 msgid "cannot read EISD\n"
 msgstr ""
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:8398
 #, c-format
 msgid ""
 "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7793
+#: vms-alpha.c:8406
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7798
+#: vms-alpha.c:8411
 #, c-format
 msgid " flags: 0x%04x"
 msgstr ""
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8449
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr ""
 
-#: vms-alpha.c:7842
+#: vms-alpha.c:8455
 msgid "NORMAL"
 msgstr ""
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8458
 msgid "SHRFXD"
 msgstr ""
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8461
 msgid "PRVFXD"
 msgstr ""
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8464
 msgid "SHRPIC"
 msgstr ""
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8467
 msgid "PRVPIC"
 msgstr ""
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8470
 msgid "USRSTACK"
 msgstr ""
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8476
 msgid ")\n"
 msgstr ""
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8483
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8494
 #, c-format
 msgid "cannot read DMT\n"
 msgstr ""
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8498
 #, c-format
 msgid "Debug module table:\n"
 msgstr ""
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8507
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr ""
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8513
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr ""
 
-#: vms-alpha.c:7905
+#: vms-alpha.c:8523
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr ""
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8527
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr ""
 
-#: vms-alpha.c:7922
+#: vms-alpha.c:8540
 #, c-format
 msgid "cannot read DST\n"
 msgstr ""
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8550
 #, c-format
 msgid "cannot read GST\n"
 msgstr ""
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8554
 #, c-format
 msgid "Global symbol table:\n"
 msgstr ""
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8581
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr ""
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8585
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8589
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr ""
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8592
 #, c-format
 msgid "  size : %u\n"
 msgstr ""
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8594
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8599
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8604
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8609
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8612
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8616
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8619
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8622
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr ""
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8624
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr ""
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8631
 #, c-format
 msgid " Shareable images:\n"
 msgstr ""
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8642
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
 msgstr ""
 
-#: vms-alpha.c:8028
+#: vms-alpha.c:8649
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8655
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8661
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8043
+#: vms-alpha.c:8666
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8048
+#: vms-alpha.c:8671
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8053
+#: vms-alpha.c:8676
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr ""
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8684
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr ""
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8693
 #, 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:9571
 msgid "%P: relocatable link is not supported\n"
 msgstr ""
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9642
 #, c-format
 msgid "%P: multiple entry points: in modules %pB and %pB\n"
 msgstr ""
 
-#: vms-lib.c:1445
+#: vms-lib.c:1530
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr ""
 
-#: vms-misc.c:361
+#: vms-misc.c:374
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr ""
 
-#: vms-misc.c:366
+#: vms-misc.c:379
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr ""
 
-#: xcofflink.c:832
+#: xcofflink.c:505
+#, c-format
+msgid "%pB: warning: illegal symbol index %lu in relocs"
+msgstr ""
+
+#: xcofflink.c:924
 #, c-format
 msgid "%pB: XCOFF shared object when not producing XCOFF output"
 msgstr ""
 
-#: xcofflink.c:853
+#: xcofflink.c:945
 #, c-format
 msgid "%pB: dynamic object with no .loader section"
 msgstr ""
 
-#: xcofflink.c:1413
+#: xcofflink.c:1527
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr ""
 
-#: xcofflink.c:1466
+#: xcofflink.c:1583
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr ""
 
-#: xcofflink.c:1489
+#: xcofflink.c:1606
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr ""
 
-#: xcofflink.c:1502
+#: xcofflink.c:1619
 #, c-format
 msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
 msgstr ""
 
-#: xcofflink.c:1533
+#: xcofflink.c:1650
 #, c-format
-msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
 msgstr ""
 
-#: xcofflink.c:1680
+#: xcofflink.c:1785
+#, c-format
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr ""
+
+#: xcofflink.c:1819
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr ""
 
-#: xcofflink.c:1788
+#: xcofflink.c:1928
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr ""
 
-#: xcofflink.c:2109
+#: xcofflink.c:2271
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr ""
 
-#: xcofflink.c:3196
+#: xcofflink.c:3380
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr ""
+
+#: xcofflink.c:3428
 #, c-format
 msgid "%s: no such symbol"
 msgstr ""
 
-#: xcofflink.c:3301
+#: xcofflink.c:3537
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr ""
 
-#: xcofflink.c:3680
+#: xcofflink.c:3885
 msgid "error: undefined symbol __rtinit"
 msgstr ""
 
-#: xcofflink.c:4060
+#: xcofflink.c:4902
+#, c-format
+msgid ""
+"%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> "
+"targeting'%s'"
+msgstr ""
+
+#: xcofflink.c:4931
+#, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr ""
+
+#: xcofflink.c:5051
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr ""
+
+#: xcofflink.c:5119
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr ""
 
-#: xcofflink.c:4072
+#: xcofflink.c:5131
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr ""
 
-#: xcofflink.c:4089
+#: xcofflink.c:5148
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr ""
 
-#: xcofflink.c:5113
+#: xcofflink.c:6227
 #, c-format
 msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:5031
+#: xcofflink.c:7343
+#, c-format
+msgid "Unable to link input file: %s"
+msgstr ""
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr ""
+
+#: xtensa-dynconfig.c:86
+#, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr ""
+
+#: xtensa-dynconfig.c:102
+#, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr ""
+
+#: xtensa-dynconfig.c:115
+#, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr ""
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2889
+#: elfnn-riscv.c:5940
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr ""
+
+#: elfnn-aarch64.c:5486
 #, 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:5578
 #, 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:5591
+#, c-format
+msgid ""
+"%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input "
+"file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --"
+"fix-cortex-a53-843419=full instead"
+msgstr ""
+
+#: elfnn-aarch64.c:6134
 #, 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:6154
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr ""
+
+#: elfnn-aarch64.c:6242
+#: elfnn-kvx.c:2382
 #, 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:6356
+#: elfnn-aarch64.c:6393
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr ""
+
+#: elfnn-aarch64.c:7384
 msgid "too many GOT entries for -fpic, please recompile with -fPIC"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-aarch64.c:6858
+#: elfnn-aarch64.c:7412
 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:7979
 #, 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-aarch64.c:8940
+#, c-format
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr ""
+
+#: elfnn-kvx.c:929
+msgid ""
+"%P: Could not assign '%pA' to an output section. Retry without --enable-non-"
+"contiguous-regions.\n"
+msgstr ""
+
+#: elfnn-kvx.c:2127
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr ""
+
+#: elfnn-kvx.c:2851
+#, c-format
+msgid "%s: Bad ELF id: `%d'"
+msgstr ""
+
+#: elfnn-kvx.c:2906
+#, c-format
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr ""
+
+#: elfnn-kvx.c:2909
+#, c-format
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr ""
+
+#: elfnn-kvx.c:2911
+#, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr ""
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:2999
+#, c-format
+msgid "Private flags = 0x%lx : "
+msgstr ""
+
+#: elfnn-kvx.c:3003
+#, c-format
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr ""
+
+#: elfnn-kvx.c:3005
+#, c-format
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr ""
+
+#: elfnn-kvx.c:3007
+#, c-format
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr ""
+
+#: elfnn-kvx.c:3012
+#, c-format
+msgid "Coolidge (kv3) V1 32 bits"
+msgstr ""
+
+#: elfnn-kvx.c:3014
+#, c-format
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr ""
+
+#: elfnn-kvx.c:3016
+#, c-format
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr ""
+
+#: elfnn-kvx.c:3848
+#, c-format
+msgid "relocation against `%s' has faulty GOT type "
+msgstr ""
+
+#: elfnn-loongarch.c:303
+#: elfnn-loongarch.c:355
+#, c-format
+msgid "%#<PRIx64> invaild imm"
+msgstr ""
+
+#: elfnn-loongarch.c:537
+#: elfnn-riscv.c:4383
+#, c-format
+msgid ""
+"%pB: ABI is incompatible with that of the selected emulation:\n"
+"  target emulation `%s' does not match `%s'"
+msgstr ""
+
+#: elfnn-loongarch.c:592
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr ""
+
+#: elfnn-loongarch.c:735
+msgid "Internal error: unreachable."
+msgstr ""
+
+#: elfnn-loongarch.c:915
+#, c-format
+msgid ""
+"%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; "
+"recompile with %s%s"
+msgstr ""
+
+#: elfnn-loongarch.c:919
+msgid " and check the symbol visibility"
+msgstr ""
+
+#: elfnn-loongarch.c:1045
+#, c-format
+msgid ""
+"%pB: stack based reloc type (%u) is not supported with -z pack-relative-"
+"relocs"
+msgstr ""
+
+#: elfnn-loongarch.c:1240
+#, c-format
+msgid ""
+"%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used "
+"in ELFCLASS64 when making a shared object or PIE"
+msgstr ""
+
+#: elfnn-loongarch.c:1305
+#, c-format
+msgid ""
+"%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary"
+msgstr ""
+
+#: elfnn-loongarch.c:4196
+msgid ""
+"cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend "
+"out of [-2048, 2048)"
+msgstr ""
+
+#: elfnn-loongarch.c:4706
+msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'"
+msgstr ""
+
+#: elfnn-loongarch.c:5584
+#: elfnn-riscv.c:5168
+#, c-format
+msgid ""
+"%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-"
+"byte boundary, but only %<PRId64> present"
+msgstr ""
+
+#: elfnn-riscv.c:385
+#: elfnn-riscv.c:436
+#: elfnn-riscv.c:484
+#: elfnn-riscv.c:520
 #, c-format
 msgid "%pB: warning: RVE PLT generation not supported"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2311
-msgid "%X%P: internal error: out of range error\n"
+#: elfnn-riscv.c:675
+#, c-format
+msgid "%pB: error: unsupported PLT type: %u"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2315
-msgid "%X%P: internal error: unsupported relocation error\n"
+#: elfnn-riscv.c:1120
+#, c-format
+msgid ""
+"%pB: relocation %s against absolute symbol `%s' can not be used when making "
+"a shared object"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2325
-msgid "%X%P: internal error: unknown error\n"
+#: elfnn-riscv.c:1162
+#, c-format
+msgid ""
+"%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 "
+"when making a shared object"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2711
+#: elfnn-riscv.c:2095
 #, c-format
-msgid "error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%d"
+msgid ""
+"final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds "
+"available space"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2729
+#: elfnn-riscv.c:2337
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr ""
+
+#: elfnn-riscv.c:2340
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr ""
+
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2345
 #, c-format
 msgid ""
-"error: %pB: corrupted ISA string '%s'.first letter should be 'i' or 'e' but "
-"got '%s'."
+"%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> "
+"without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2773
+#: elfnn-riscv.c:2353
 #, c-format
-msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
+msgid "%pcrel_lo overflow with an addend"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2921
+#: elfnn-riscv.c:2843
 #, c-format
-msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
+msgid ""
+"%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by "
+"binutils 2.42 or up"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2946
+#: elfnn-riscv.c:2923
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr ""
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:3022
 #, c-format
-msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
+msgid ""
+"%%X%%P: relocation %s against `%s' which may bind externally can not be used "
+"when making a shared object; recompile with -fPIC\n"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:2954
+#: elfnn-riscv.c:3103
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
+msgid "%pcrel_lo section symbol with an addend"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3039
+#: elfnn-riscv.c:3124
 #, c-format
-msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
+msgid "%tlsdesc_lo with addend"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3055
+#: elfnn-riscv.c:3357
 #, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr ""
+
+#: elfnn-riscv.c:3392
+msgid "%X%P: internal error: out of range error\n"
+msgstr ""
+
+#: elfnn-riscv.c:3397
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr ""
+
+#: elfnn-riscv.c:3403
+msgid "dangerous relocation error"
+msgstr ""
+
+#: elfnn-riscv.c:3409
+msgid "%X%P: internal error: unknown error\n"
+msgstr ""
+
+#: elfnn-riscv.c:3982
+#, c-format
+msgid ""
+"error: %pB: corrupted ISA string '%s'.  First letter should be 'i' or 'e' "
+"but got '%s'"
+msgstr ""
+
+#: elfnn-riscv.c:4025
+#, c-format
+msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'"
+msgstr ""
+
+#: elfnn-riscv.c:4162
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)"
+msgstr ""
+
+#: elfnn-riscv.c:4182
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)"
+msgstr ""
+
+#: elfnn-riscv.c:4190
+#, c-format
+msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation"
+msgstr ""
+
+#: elfnn-riscv.c:4314
 msgid ""
-"error: %pB use %u-byte stack aligned but the output use %u-byte stack "
-"aligned."
+"warning: privileged spec version 1.9.1 can not be linked with other spec "
+"versions"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3096
+#: elfnn-riscv.c:4342
 #, c-format
 msgid ""
-"%pB: ABI is incompatible with that of the selected emulation:\n"
-"  target emulation `%s' does not match `%s'"
+"error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3119
+#: elfnn-riscv.c:4439
 #, 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:4449
 #, c-format
 msgid "%pB: can't link RVE with other target"
 msgstr ""
 
-#: /work/sources/binutils/current/bfd/elfnn-riscv.c:3630
+#: elfnn-riscv.c:4473
+#, c-format
+msgid "warning: %pB: unknown RISCV ABI object attribute %d"
+msgstr ""
+
+#: elfnn-riscv.c:1162
 #, c-format
 msgid ""
-"%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-"
-"byte boundary, but only %<PRId64> present"
+"%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 "
+"when making a shared object"
 msgstr ""
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: peXXigen.c:161 peXXigen.c:161
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr ""
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
+#: peXXigen.c:188 peXXigen.c:188
 #, c-format
 msgid "%pB: out of memory creating name for empty section"
 msgstr ""
 
-#: peigen.c:194 pepigen.c:194 pex64igen.c:194
+#: peXXigen.c:199 peXXigen.c:199
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr ""
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
+#: peXXigen.c:928 peXXigen.c:928
 #, c-format
-msgid ""
-"%pB: aout header specifies an invalid number of data-directory entries: %ld"
+msgid "%pB:%.8s: section below image base"
 msgstr ""
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:933 peXXigen.c:933
+#, c-format
+msgid "%pB:%.8s: RVA truncated"
+msgstr ""
+
+#: peXXigen.c:1066 peXXigen.c:1066
 #, c-format
 msgid "%pB: line number overflow: 0x%lx > 0xffff"
 msgstr ""
 
-#: peigen.c:1235 pepigen.c:1235 pex64igen.c:1235
+#: peXXigen.c:1232 peXXigen.c:1232
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr ""
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1233 peXXigen.c:1233
 msgid "Import Directory [parts of .idata]"
 msgstr ""
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1234 peXXigen.c:1234
 msgid "Resource Directory [.rsrc]"
 msgstr ""
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1235 peXXigen.c:1235
 msgid "Exception Directory [.pdata]"
 msgstr ""
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1236 peXXigen.c:1236
 msgid "Security Directory"
 msgstr ""
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1237 peXXigen.c:1237
 msgid "Base Relocation Directory [.reloc]"
 msgstr ""
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1238 peXXigen.c:1238
 msgid "Debug Directory"
 msgstr ""
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1239 peXXigen.c:1239
 msgid "Description Directory"
 msgstr ""
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1240 peXXigen.c:1240
 msgid "Special Directory"
 msgstr ""
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1241 peXXigen.c:1241
 msgid "Thread Storage Directory [.tls]"
 msgstr ""
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1242 peXXigen.c:1242
 msgid "Load Configuration Directory"
 msgstr ""
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1243 peXXigen.c:1243
 msgid "Bound Import Directory"
 msgstr ""
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1244 peXXigen.c:1244
 msgid "Import Address Table Directory"
 msgstr ""
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1245 peXXigen.c:1245
 msgid "Delay Import Directory"
 msgstr ""
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1246 peXXigen.c:1246
 msgid "CLR Runtime Header"
 msgstr ""
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1247 peXXigen.c:1247
 msgid "Reserved"
 msgstr ""
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1312 peXXigen.c:1312
 #, 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:1318 peXXigen.c:1318
 #, 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:1325 peXXigen.c:1325
 #, 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
-#, c-format
-msgid ""
-"\n"
-"Function descriptor located at the start address: %04lx\n"
-msgstr ""
-
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
-#, c-format
-msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
-msgstr ""
-
-#: peigen.c:1377 pepigen.c:1377 pex64igen.c:1377
-#, c-format
-msgid ""
-"\n"
-"No reldata section! Function descriptor not decoded.\n"
-msgstr ""
-
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1331 peXXigen.c:1331
 #, c-format
 msgid ""
 "\n"
 "The Import Tables (interpreted %s section contents)\n"
 msgstr ""
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1334 peXXigen.c:1334
 #, 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:1383 peXXigen.c:1383
 #, c-format
 msgid ""
 "\n"
 "\tDLL Name: %.*s\n"
 msgstr ""
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1399 peXXigen.c:1399
 #, c-format
-msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
+msgid "\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"
 msgstr ""
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1424 peXXigen.c:1424
 #, 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:1474
+#: peXXigen.c:1519 peXXigen.c:1474
+#: peXXigen.c:1519
 #, c-format
-msgid "\t<corrupt: 0x%04lx>"
+msgid "\t<corrupt: 0x%08lx>"
 msgstr ""
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1613 peXXigen.c:1613
 #, 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:1626 peXXigen.c:1626
 #, 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
-#, c-format
-msgid ""
-"\n"
-"There is an export table in %s, but it does not fit into that section\n"
+"There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1634 peXXigen.c:1634
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it is too small (%d)\n"
+"There is an export table in %s, but contents cannot be read\n"
 msgstr ""
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1640 peXXigen.c:1640
 #, 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:1671 peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -8387,162 +10022,149 @@ msgid ""
 "\n"
 msgstr ""
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1675 peXXigen.c:1675
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
 msgstr ""
 
-#: peigen.c:1721 pepigen.c:1721 pex64igen.c:1721
+#: peXXigen.c:1678 peXXigen.c:1678
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
 msgstr ""
 
-#: peigen.c:1725 pepigen.c:1725 pex64igen.c:1725
+#: peXXigen.c:1682 peXXigen.c:1682
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr ""
 
-#: peigen.c:1728 pepigen.c:1728 pex64igen.c:1728
+#: peXXigen.c:1685 peXXigen.c:1685
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr ""
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1696 peXXigen.c:1696
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr ""
 
-#: peigen.c:1742 pepigen.c:1742 pex64igen.c:1742
+#: peXXigen.c:1699 peXXigen.c:1699
 #, c-format
 msgid "Number in:\n"
 msgstr ""
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1702 peXXigen.c:1702
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
 msgstr ""
 
-#: peigen.c:1749 pepigen.c:1749 pex64igen.c:1749
+#: peXXigen.c:1706 peXXigen.c:1706
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
 msgstr ""
 
-#: peigen.c:1752 pepigen.c:1752 pex64igen.c:1752
+#: peXXigen.c:1709 peXXigen.c:1709
 #, c-format
 msgid "Table Addresses\n"
 msgstr ""
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1712 peXXigen.c:1712
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr ""
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1717 peXXigen.c:1717
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr ""
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1722 peXXigen.c:1722
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr ""
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1736 peXXigen.c:1736
 #, c-format
 msgid ""
 "\n"
 "Export Address Table -- Ordinal Base %ld\n"
 msgstr ""
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1746 peXXigen.c:1746
 #, 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:1765 peXXigen.c:1765
 msgid "Forwarder RVA"
 msgstr ""
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1777 peXXigen.c:1777
 msgid "Export RVA"
 msgstr ""
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1784 peXXigen.c:1784
 #, c-format
 msgid ""
 "\n"
-"[Ordinal/Name Pointer] Table\n"
+"[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"
 msgstr ""
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1794 peXXigen.c:1794
 #, 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:1801 peXXigen.c:1801
 #, 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:1815 peXXigen.c:1815
 #, c-format
-msgid "\t[%4ld] <corrupt offset: %lx>\n"
+msgid "\t[%4ld] +base[%4ld]  %04lx <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:1872
+#: peXXigen.c:2042 peXXigen.c:1872
+#: peXXigen.c:2042
 #, 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:1876
+#: peXXigen.c:2046 peXXigen.c:1876
+#: peXXigen.c:2046
 #, c-format
 msgid ""
 "\n"
 "The Function Table (interpreted .pdata section contents)\n"
 msgstr ""
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1879 peXXigen.c:1879
 #, 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:1881 peXXigen.c:1881
 #, 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:1894 peXXigen.c:1894
 #, 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
-#, c-format
-msgid " Register save millicode"
-msgstr ""
-
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
-#, c-format
-msgid " Register restore millicode"
-msgstr ""
-
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
-#, c-format
-msgid " Glue code sequence"
-msgstr ""
-
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2048 peXXigen.c:2048
 #, 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:2173 peXXigen.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -8550,86 +10172,86 @@ msgid ""
 "PE File Base Relocations (interpreted .reloc section contents)\n"
 msgstr ""
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2202 peXXigen.c:2202
 #, 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:2220 peXXigen.c:2220
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr ""
 
-#: peigen.c:2343 pepigen.c:2343 pex64igen.c:2343
+#: peXXigen.c:2281 peXXigen.c:2281
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr ""
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2305 peXXigen.c:2305
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr ""
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2325 peXXigen.c:2325
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr ""
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2335 peXXigen.c:2335
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr ""
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2340 peXXigen.c:2340
 #, c-format
 msgid "ID: %#08lx"
 msgstr ""
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2343 peXXigen.c:2343
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ""
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2365 peXXigen.c:2365
 #, 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:2407 peXXigen.c:2407
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr ""
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2415 peXXigen.c:2415
 #, 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:2503 peXXigen.c:2503
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr ""
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2527 peXXigen.c:2527
 #, 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:2533 peXXigen.c:2533
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr ""
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2536 peXXigen.c:2536
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr ""
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2593 peXXigen.c:2593
 #, c-format
 msgid ""
 "\n"
@@ -8637,14 +10259,14 @@ msgid ""
 "found\n"
 msgstr ""
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2599 peXXigen.c:2599
 #, 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:2606 peXXigen.c:2606
 #, c-format
 msgid ""
 "\n"
@@ -8652,7 +10274,7 @@ msgid ""
 "small\n"
 msgstr ""
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2611 peXXigen.c:2611
 #, c-format
 msgid ""
 "\n"
@@ -8660,23 +10282,23 @@ msgid ""
 "\n"
 msgstr ""
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2618 peXXigen.c:2618
 #, 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:2623 peXXigen.c:2623
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr ""
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2671 peXXigen.c:2671
 #, c-format
-msgid "(format %c%c%c%c signature %s age %ld)\n"
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
 msgstr ""
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2683 peXXigen.c:2683
 #, c-format
 msgid ""
 "The debug directory size is not a multiple of the debug directory entry "
@@ -8686,99 +10308,101 @@ 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:2767 peXXigen.c:2767
 #, c-format
 msgid ""
 "\n"
 "Characteristics 0x%x\n"
 msgstr ""
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3052 peXXigen.c:3052
 #, c-format
 msgid ""
-"%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
+"%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary "
+"at %<PRIx64>"
 msgstr ""
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3093 peXXigen.c:3093
 msgid "failed to update file offsets in debug directory"
 msgstr ""
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3102 peXXigen.c:3102
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr ""
 
-#: peigen.c:3849 pepigen.c:3849 pex64igen.c:3849
+#: peXXigen.c:3907 peXXigen.c:3907
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr ""
 
-#: peigen.c:3984 pepigen.c:3984 pex64igen.c:3984
+#: peXXigen.c:4042 peXXigen.c:4042
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr ""
 
-#: peigen.c:4002 pepigen.c:4002 pex64igen.c:4002
+#: peXXigen.c:4060 peXXigen.c:4060
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr ""
 
-#: peigen.c:4044 pepigen.c:4044 pex64igen.c:4044
+#: peXXigen.c:4102 peXXigen.c:4102
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr ""
 
-#: peigen.c:4046 pepigen.c:4046 pex64igen.c:4046
+#: peXXigen.c:4107 peXXigen.c:4107
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr ""
 
-#: peigen.c:4112 pepigen.c:4112 pex64igen.c:4112
+#: peXXigen.c:4174 peXXigen.c:4174
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr ""
 
-#: peigen.c:4119 pepigen.c:4119 pex64igen.c:4119
+#: peXXigen.c:4181 peXXigen.c:4181
 msgid ".rsrc merge failure: differing directory versions"
 msgstr ""
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:4236 pepigen.c:4236 pex64igen.c:4236
+#: peXXigen.c:4293 peXXigen.c:4293
 #, c-format
 msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
 msgstr ""
 
-#: peigen.c:4244 pepigen.c:4244 pex64igen.c:4244
+#: peXXigen.c:4301 peXXigen.c:4301
 #, c-format
 msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
 msgstr ""
 
-#: peigen.c:4383 pepigen.c:4383 pex64igen.c:4383
+#: peXXigen.c:4441
+#: peXXigen.c:4461
+#: peXXigen.c:4482
+#: peXXigen.c:4502 peXXigen.c:4441
+#: peXXigen.c:4461 peXXigen.c:4482 peXXigen.c:4502
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s is missing"
 msgstr ""
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4544
+#: peXXigen.c:4590
+#: peXXigen.c:4614
+#: peXXigen.c:4698 peXXigen.c:4544
+#: peXXigen.c:4590 peXXigen.c:4614 peXXigen.c:4698
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"
 msgstr ""
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4651 peXXigen.c:4651
 #, 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
-#, c-format
-msgid ""
-"%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because ."
-"idata$6 is missing"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not properly aligned"
 msgstr ""
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4682 peXXigen.c:4682
 #, c-format
 msgid ""
-"%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because ."
-"idata$6 is missing"
+"%pB: unable to fill in DataDirectory[%d]: size too large for the containing "
+"section"
 msgstr ""
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
+#: peXXigen.c:4690 peXXigen.c:4690
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
+msgid "%pB: unable to fill in DataDirectory[%d]: size can't be read from %s"
 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.20200303/bfd/po/BLD-POTFILES.in ./bfd/po/BLD-POTFILES.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/BLD-POTFILES.in	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/BLD-POTFILES.in	2026-03-05 02:07:20.000000000 +0000
@@ -1,13 +1,19 @@
-bfd_stdint.h
 bfdver.h
 elf32-aarch64.c
 elf32-ia64.c
+elf32-kvx.c
+elf32-loongarch.c
 elf32-riscv.c
 elf32-target.h
 elf64-aarch64.c
 elf64-ia64.c
+elf64-kvx.c
+elf64-loongarch.c
 elf64-riscv.c
 elf64-target.h
+pe-aarch64igen.c
+pe-loongarch64igen.c
+pe-riscv64igen.c
 peigen.c
 pepigen.c
 pex64igen.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.20200303/bfd/po/es.gmo ./bfd/po/es.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/es.gmo	2020-03-03 02:13:28.000000000 +0000
+++ ./bfd/po/es.gmo	2026-03-05 02:15:54.000000000 +0000
@@ -1,71 +1,163 @@
-Þ•ì|7C	Ünè“é“ö“
-”#”AB”?„”:Ä”ÿ”•)•$H•3m•¡•®•%Î•ô•A–&H–o–ˆ–¡–º–Ê– é–
-—*—C—Z—g—Pz—Ë—*ã—9˜6H˜;˜»˜FÍ˜6™6K™:‚™5½™,ó™D šNešJ´š)ÿšG)›:q›B¬›Lï›)<œBfœL©œöœ�D#�Gh�°�Ï�á�õ�
ž"ž3AžužŒž0žžÏžßžïž+	Ÿ+5Ÿ+aŸ#�Ÿ±ŸÉŸÒŸðŸ( ?0 >p %¯ &Õ (ü )%¡GO¡7—¡Ï¡æ¡¢#¢<¢W¢w¢�¢«¢Á¢Ù¢,í¢£*£C£[£r£�£—£±£1È£ú£¤¤/¤J¤#b¤+†¤&²¤5Ù¤¥'¥A¥W¥q¥Š¥¡¥$·¥Ü¥õ¥¦-¦$B¦g¦{¦�¦<©¦æ¦õ¦
§§&§ >§_§z§Š§ª§Æ§æ§ÿ§¨*+¨V¨h¨&z¨¡¨0µ¨æ¨"ú¨„©	¢©¬©#¿©ã©ü©
ª&ª"?ªbª"vª#™ª#½ªáª#öª#«>«K«i«‡«�«•«š«
-·«Â«Ç«!Í« ï«¬¬¬2¬R¬r¬w¬‹¬!�¬²¬¹¬¿¬Ä¬É¬Ï¬Ó¬Ø¬ô¬"
­0­5­U­i­&‰­B°­ó­®®®$®*®/®A®H®\®c®|®�®¡®²®Ã®Ô®å®ý®	¯
¯
$¯
-2¯
-=¯
-H¯
-S¯^¯
-s¯$~¯
-£¯#®¯%Ò¯
-ø¯°°$-°R°p°!Š°¬°Á°
-Ð°
Û°	é°ó°
-±±±.±H±Z±i±€±›±ª±Ã±Ò±Ù±ù±(	²/2²b²t²+ƒ²¯²AË²
³'³A³[³8p³©³Á³Ö³&ð³´6´2Q´?„´&Ä´ë´(
-µ3µ"Fµiµ*‰µ6´µ{ëµrg¶xÚ¶S·:i·¤·D¶·*û·7&¸$^¸'ƒ¸*«¸!Ö¸=ø¸A6¹Ax¹º¹%Ù¹Dÿ¹Dºsbº.Öº,»*2»%]»4ƒ»¸»-×»2¼L8¼;…¼©Á¼Gk½8³½Hì½45¾7j¾9¢¾'Ü¾+¿U0¿Z†¿Oá¿C1À;uÀ$±ÀÖÀ@óÀm4ÁJ¢Á6íÁ6$Â)[Â7…Â@½ÂHþÂBGÃJŠÃ-ÕÃ;Ä8?Ä2xÄ¿«ÄVkÅ\ÂÅ:Æ:ZÆB•ÆTØÆT-ÇT‚Ç‰×Ç;aÈm�È[ÉMgÉ<µÉDòÉ^7Ê|–ÊDË€XË1ÙËKÌJWÌ>¢ÌmáÌ6OÍ>†Í>ÅÍ.Î-3ÎEaÎ<§Î=äÎB"Ï?eÏ?¥ÏDåÏB*Ð?mÐ?­Ð,íÐ'ÑBÑ6_Ñ0–Ñ/ÇÑ!÷ÑÒ&-Ò(TÒ;}Ò@¹Ò$úÒÓ73Ó!kÓ#�Ó&±Ó8ØÓCÔ UÔ vÔ)—Ô.ÁÔ0ðÔ?!Õ.aÕ.�Õ/¿Õ)ïÕ/Ö;IÖh…Ö<îÖA+×<m×/ª×-Ú×&ØM/Ø2}Ø2°ØNãØU2ÙNˆÙo×Ù+GÚAsÚ7µÚ9íÚT'Û5|Û#²Û.ÖÛ.Ü%4Ü7ZÜ2’Ü7ÅÜEýÜ>CÝ1‚Ý:´ÝUïÝ2EÞoxÞ(èÞ(ß3:ß[nßZÊß+%à+Qà}à/—à(Çà7ðà<(á?eáQ¥á3÷á5+â'aâ=‰â:ÇâGã<Jã"‡ãLªã6÷ãK.äDzä!¿ä:áä7åTårå.Žå.½åìå1æ>æ'[æ%ƒæ ©æEÊæ4ç(Eç;nçHªç?óç<3èGpè@¸è7ùè.1é*`é<‹é7Èé1ê82ê:kê2¦ê+Ùêtë/zë ªë-Ëë]ùë0WìJˆì>ÓìAí.Tí+ƒí8¯íèí*îI3î$}î+¢îÎîìîAïHGï>�ï+ÏïIûï9Eð;ð»ð;Ûð;ñSñ+nñGšñ.âñ.ò5@ò@vò@·òIøò=BóI€óIÊó4ôIô9hô,¢ô.Ïô/þô'.õkVõuÂõ@8ö5yö¯ö2Ìö.ÿö*.÷>Y÷1˜÷)Ê÷?ô÷!4ø#Vø.zø8©ø*âø 
ùA.ùEpùB¶ùBùù:<ú3wú$«ú2ÐúIû:Mû<ˆû3Åû5ùû&/ü%Vü4|ü&±ü4Øü&
ý14ý$fý$‹ý.°ýßý&ýý&$þ<Kþ#ˆþ*¬þ'×þ>ÿþB>ÿ3�ÿ&µÿ Üÿ"ýÿ! !B!d%†!¬ Î!ï#!5!W!y$›$À å"!)#K$o”"´"×!ú!>^!z#œ"À#ã!')3Ql…@ò?3GsF»JHMK–GâB*Xm4Æ/û+4J ! GÂ4
-	0?	p	(‡	.°	(ß	*
-63
-2j
-5�
-8Ó
-WZdB¿5=8<v(³-Ü0
-
;
OU
"¥
/È
&ø
!@Ai‚Eì021c*•!À4â;&S$z'Ÿ=ÇDJ2h0›CÌLG]C¥Jé`4r•A�JSÌ< a]a¿f!fˆFï-62d(—3À1ô,&-SD�BÆ4	6>*u# 2Ä*÷-".P*(ª]ÓJ16|³Î4è'DECŠCÎE^X]·)(?+h$”)¹)ã7
9E&&¦&Í2ô,' =T ,’ ¿ +Ý 	!-!M!j!,‰!#¶!1Ú!*"'7"&_"%†"&¬"'Ó")û",%#%R#*x#$£#%È#%î#1$'F$*n$"™$#¼$"à$&%-*%,X%[…%Cá%G%&Cm&K±&Wý&GU'9�'(×'*(+(3K(4(>´(2ó(5&)@\)P�)3î)P"*2s*A¦*Kè*@4+Ku+-Á+`ï+>P,J�,2Ú,<
-;J-7†-3¾-/ò-?".7b.Aš.*Ü.1/;9/2u/W¨/O0&P03w0[«0W1-_1o�1+ý1])2-‡2+µ2á22ÿ2)23V\3<³3(ð334#M4%q42—4Ê42ê4$53B5=v5;´5Bð5A36:u62°6?ã6#7<B7879¸7ò78&08W8›p8D9'Q9,y91¦9'Ø9$:/%:-U:0ƒ:&´:8Û:6;6K;‚;.¡;+Ð;$ü;"!<7D<!|<%ž<AÄ<G=6N==…=:Ã=:þ=D9>8~>9·>Cñ>:5?7p?8¨?Pá?D2@9w@,±@0Þ@#A3A-NA6|A³A7ÏA;B:CB:~B!¹B3ÛB%C.5CdCL„C1ÑC*D%.D$TD9yDO³D#E,'E1TEC†E6ÊE(F5*F"`F.ƒF8²FGëFU3G>‰G ÈGéG!H )H'JHbrH3ÕH)	I=3I%qI*—I0ÂI&óI&J7AJfyJ7àJ]K8vK¯KOÎK,L+KLYwL)ÑL;ûL07M/hM?˜M9ØM6N/INCyN&½NWäNQ<OŽO®O½O!ÒOôOR
-PF]PF¤P:ëP&Q9QMQ_QyQ
�Q'›QÃQ
ÏQÝQ%îQ\R;qR­R¿RÕRØRõRS	S%S7SHS,US‚S–S¬S"ÆS/éS/T2IT9|T#¶T'ÚT2U35UiU;yUµU¼UÄUÙUéUðUøUV!V6VHV[VrV�V¡V¿V	ÞVèV	W"W+3W#_W,ƒW:°WëWýW)X/CX?sX=³X	ñX"ûXY5Y+>YjYvYzY�YŸY±Y'ÃYëY Z#)ZMZ>gZ<¦ZãZ õZ'[7>[0v[D§[,ì['\A\a\s\$‘\$¶\'Û\%]')]Q]o]�]"¯]Ò]â]÷]^#^)9^c^2y^#¬^-Ð^Iþ^:H_/ƒ_8³_2ì_[`1{`<­`Bê`,-a-Za)ˆa.²a-áab6/bYfbbÀb;#c)_c!‰cG«c1óc$%dJdH_d5¨d%Þde5!eWe
-le"weše¬e´e0¼eíef!f6fCfRf
pf~fB�f/Óf+g8/ghg$~g!£g1Åg÷gh+5hah
-uh€h9ŸhÙh'ëhi%i.Ci-riG i3èij";j)^j*ˆjK³j ÿj k%=kckvk•k.§kÖk2ôk,'l)Tl"~l¡l³l$Ìl*ñl+mHm em†m5˜mÎm	àmêmümn$nDn^non~n�n	—n4¡nÖnßn
-öno"o%)oOo[ojo�o�o³oÅoåoþop2pDp\p-zp¨pºpÌpàpúpDq¥_qr)r/Dr'trœr«r½rÏrÖr!Ýr.ÿr,.s[s:ws%²s%Øsþs?t9WtC‘t=ÕtCu=Wu"•u[¸u?vTvsv)�vºvÃvvÞv*Uw€w&’w¹wÙwëwòw
-ùw(x-x'?xgx„xœx¼x#Ôx$øx,y.Jy,yy.¦yÕy"òy,z.Bz!qz1“z0Åz2öz,){.V{#…{©{É{(Ý{/|!6|X|(u|#ž|+Â|î|,} 4}U}n}Ž}¢}Â}#á}-~"3~V~h~€~“~¬~¸~Í~ß~2ú~$-&Ry6™	Ð!ÚDüDA€/†€?¶€ö€/�>8�w�Jˆ�MÓ�8!‚Z‚z‚‘‚;¤‚à‚7ý‚-5ƒcƒJlƒ‰·ƒ(A„7j„¢„*¼„ç„ÿ„……5…F…\…y…"……#¨…%Ì…ò…†',†T†Jf†J±†Jü†IG‡:‘‡AÌ‡;ˆ:Jˆ6…ˆ+¼ˆ;èˆF$‰@k‰;¬‰:è‰Q#Š/uŠB¥Š;èŠK$‹Fp‹a·‹/Œ<IŒ-†Œ-´Œ/âŒ7�BJ�!��i¯�DŽd^Ž.ÃŽ,òŽf�C†�Ê�#é�@
�4N�8ƒ�H¼�7‘=‘˜]‘ö‘’$’6’2K’.~’$­’Ò’ß’ì’ü’““.“G“_“w“d�“ô“6”M>”MŒ”<Ú”g•b•<â•E–1e–(—–$À–å–û–4—'L—$t—7™—Ñ—â—ú—˜"˜:˜R˜d˜v˜ˆ˜š˜´˜Ï˜á˜ò˜
-™)™2H™{™”™-®™+Ü™+š*4š	_š	iš
-sš
-~š‰šžš­šÂšÑš1Öš›-'›U›'t›"œ›¿›Ý›ò›û›,œ]Fœ=¤œ(âœZ�Zf�EÁ�AžGIžC‘žWÕžW-Ÿ9…Ÿ9¿Ÿ-ùŸ8' 4` 3• 9É 4¡28¡7k¡5£¡7Ù¡B¢ET¢Bš¢CÝ¢A!£'c£.‹£,º£+ç£*¤.>¤2m¤  ¤[Á¤@¥:^¥#™¥6½¥<ô¥&1¦2X¦=‹¦;É¦8§<>§%{§¡§¾§NÔ§-#¨OQ¨ ¡¨>Â¨9©
-;©*F©1q©&£©&Ê©!ñ©ª,2ªJ_ª7ªª
âªðªÿª«&«9«L«7i«6¡«6Ø«¬$/¬_T¬"´¬A×¬­,7­2d­—­§­¾¸­»w®3¯N¯i¯;‰¯=Å¯*°L.°{°Ž°£°¸°4Ç°ü°0±95±o±‰±‘±™±µ±H¼±²²2$²OW²§²Æ²*Ë² ö²³5³=³J³ d³…³Ž³¢³·³Í³á³÷³´+´<´N´b´Nj´¹´½´#Õ´ù´6µHµ hµ8‰µÂµÔµäµìµ4¶6¶J¶^¶r¶…¶
˜¶L¦¶ ó¶D·PY·ª·¼·Ï·3ê·!¸@¸G¸"O¸r¸‚¸M‘¸ß¸÷¸¹#¹,6¹%c¹'‰¹)±¹$Û¹(º)º0Eº
-vº,�º®ºÌºæºîº
»#»8»'P»x»’»¬»"¸»Û»ú»¼#¼:¼7Q¼‰¼¢¼·¼É¼Ü¼ð¼½½0½-O½)}½>§½7æ½E¾gd¾xÌ¾7E¿E}¿4Ã¿%ø¿-À;LÀ!ˆÀªÀ!ÃÀ0åÀ5Á&LÁ<sÁ<°Á2íÁ/ Â.PÂ=Â/½Â6íÂ?$ÃdÃƒÃ£Ã,§ÃÜÔÃ±Å¾Å(ÓÅ.üÅY+ÆY…ÆKßÆ"+ÇNÇ'aÇ&‰ÇI°ÇúÇ.È(5È^È[rÈ'ÎÈöÈÉ/ÉJÉ"ZÉ$}É#¢ÉÆÉãÉûÉÊd!Ê#†Ê5ªÊJàÊN+Ë=zË¸ËRÓËM&ÌDtÌL¹Ì@Í2GÍQzÍVÌÍN#Î0rÎE£ÎJéÎH4ÏY}Ï0×ÏIÐYRÐ¬ÐÇÐTãÐV8Ñ"�Ñ²ÑËÑßÑùÑ$Ò36ÒjÒƒÒ/•ÒÅÒ×ÒçÒ*Ó*.Ó*YÓ"„Ó§Ó¿ÓÈÓåÓ2þÓC1ÔBuÔ.¸Ô2çÔ0Õ5KÕR�Õ@ÔÕÖ-ÖMÖjÖƒÖ#žÖÂÖáÖüÖ×0×*D×o×€×™×´×Ë×Ý×ó×
Ø/$ØTØ
hØvØ�Ø¨Ø$ÂØ2çØ+Ù5FÙ|Ù•Ù°ÙÇÙãÙüÙÚ')ÚQÚjÚ‰Ú¡Ú*¸ÚãÚùÚÛ<&ÛcÛrÛ�Û�Û Û!¸ÛÚÛõÛ!Ü)Ü IÜjÜƒÜœÜ*¯ÜÚÜìÜ'þÜ&Ý/:ÝjÝ&~Ý˜¥Ý>ÞKÞ#^Þ‚ÞžÞ¯ÞÈÞ%ãÞ	ß!ß#?ß#cß‡ß#œß#Àß
äß&òß%à?àEàMàRà
-màxà}à$ƒà6¨àßàäàéàá$áDáIáiá'ná–á�á£á¨á­á³á·á$¼á"áá+â0â5âUâoâ2�âAÂâã$ã)ã.ã5ã;ã@ãTã[ã{ã$‚ã§ã¿ãÐãáãòãää+ä	>ä
Hä
Vä
-dä
-oä
-zä
-…ä�ä
¦ä9´ä
-îä1ùä(+å
Tåbåtå+’å¾åÝå*ùå$æ@æQæ^æ	uææ“æ¢æ©æÅæÞæðæ"ç#&çJç$]ç‚ç�ç%–ç¼ç9Ëç@èFèYè>iè¨è@Æèé"é<éVé8lé¥é½éÙé/óé(#êLê1gê?™ê/Ùê(	ë(2ë[ë"pë&“ë*ºëEåë„+ìv°ìz'í¢í<ÀíýíNî4`î7•î3Íî-ï+/ï$[ï>€ïH¿ïQð Zð2{ðT®ð0ñ}4ñ7²ñ-êñ+ò(Dò<mò)ªò1ÔòAó^HóD§ó»ìóO¨ôPøôPIõ6šõ=ÑõEö,Uö0‚ö]³ö^÷\p÷QÍ÷Xø*xø%£øCÉø}
ùg‹ù7óù<+ú-húI–úDàúL%ûFrûM¹û8ü?@ü?€ü4ÀüÈõü_¾ýnþ@�þ@ÎþVÿ[fÿ[Âÿ[‘z@ƒMhÑU:M�TÞx3£¬JP–›/2abUÄJ}e=ãK!KmF¹1c2;–<ÒA	>Q	>�	IÏ	A
->[
->š
-=Ù
-4$LAq>³7ò+*V3n5¢:Ø?
4S
ˆ
:›
'Ö
*þ
?)>iI¨%ò$3=1q3£O×1'2Y4Œ1Á4óD(umDãA(Dj8¯<è6%m\8Ê8m<dª^„n4óY(>‚NÁz;‹0ÇEø>>/}F­4ô>)YhTÂ7<O[Œ>è†'+®5Ú:bKo®6?U•F°8÷K0V|PÓv$6›:Ò+
 H9 G‚ RÊ W!$u!Wš!Jò!L="PŠ"%Û"G#GI#(‘#º#6Ú#6$(H$=q$ ¯$*Ð$8û$.4%ec%DÉ%3&CB&U†&GÜ&X$'V}'<Ô'=(2O(,‚(L¯(Iü(BF)J‰)?Ô)D*NY*‹¨*-4+*b+1�+o¿+M/,W},BÕ,D-,]->Š-CÉ-%
.B3.nv.6å.6/1S/'…/O­/Zý/WX07°0eè0LN1V›1+ò1V2Pu2Æ29ã2N35l35¢3BØ3G4Gc4R«4>þ4R=5R�5Lã5&06QW66©66à667:N7|‰7ƒ8EŠ8?Ð8%99697p93¨9OÜ9;,:Ch:F¬:*ó:*;0I;Kz;2Æ;)ù;K#<ho<XØ<X1=FŠ=6Ñ=.>B7>Vz>HÑ>J?=e?=£?*á?+@:8@.s@>¢@.á@;A,LA+yA5¥A"ÛA2þA21BHdB,­B8ÚB&CB:CW}C?ÕC0D-FD+tD* D*ËD*öD.!E*PE){E*¥E,ÐE*ýE*(F*SF-~F-¬F)ÚF+G*0G,[G-ˆG(¶G+ßG+H*7H*bH(�H¶H*ÖH,I+.I,ZI*‡I<²IHïIm8JO¦JNöJUEKT›KXðKVILi La
-MJlMi·MK!NFmN%´NMÚN((O&QOYxOHÒO>PZPAvP3¸P5ìP8"QN[QKªQ=öQH4R`}ReÞRMDS=’SOÐSL T@mTD®T=óT1U\OU0¬U6ÝU8V/MVR}VšÐVTkW=ÀW8þW67X1nX> XGßX5'Y(]Y2†YC¹YNýY&LZ?sZ1³ZOåZe5[S›[Lï[Z<\o—\‚]FŠ] Ñ]`r^KÓ^p_q�_t`ww`Tï`<Da?�a(ÁaXêa:Cb;~b3ºbLîbI;c>…c\Äc8!d1Zd;Œd1Èd.úd@)e9je9¤eoÞeZNf:©fäfg<g-\g?Šg>Êg>	h@HhY‰hXãh=<i/zi?ªi2êi5j4Sj=ˆj@Æj/k-7k3ek;™k/ÕkGl:Ml#ˆl2¬lßl7÷l"/m'Rm;zm*¶m8ám3n.Nn-}n,«n-Øn.o05o3fo,šo1Ço+ùo,%p,Rp:p-ºp+èp'q,<q+iq+•q7Áq6ùqk0rUœrWòrHJs`“sgôsY\tI¶t<u1=u"ou@’u2ÓuEv3LvB€vOÃvXw4lwX¡w/úw=*xFhx;¯xGëx;3yvoyBæyJ)z:tzB¯zGòzC:{B~{;Á{Sý{2Q|W„|<Ü|>}VX}>¯}fî}\U~)²~?Ü~ts‘:€ƒ@€/Ä€lô€1a�:“�,Î�9û�,5‚ib‚@Ì‚6
ƒBDƒ'‡ƒ@¯ƒ:ðƒ.+„:Z„,•„6Â„fù„\`…c½…a!†Zƒ†=Þ†G‡#d‡Rˆ‡]Û‡L9ˆ†ˆ*¦ˆ4Ñˆ‰¢"‰IÅ‰(Š08Š2iŠ(œŠ$ÅŠ/êŠ.‹4I‹&~‹.¥‹MÔ‹J"ŒmŒ1�Œ6¿Œ)öŒ( �JI�&”�)»�Qå�W7Ž8�Ž?ÈŽ;�<D�E��9Ç�;�D=�>‚�9Á�9û�Z5‘H�‘QÙ‘D+’4p’$¥’-Ê’?ø’D8“#}“;¡“OÝ“?-”>m”!¬”7Î”"•,)•&V•Z}•CØ•3–&P–0w–A¨–]ê–(H—6q—@¨—Lé—>6˜7u˜S­˜6™68™=o™S­™UšKWš.£š"Òš;õš:1›7l›v¤›?œD[œ> œ.ßœK�:Z�&•�4¼�Añ�q3ž:¥ž‚àžBcŸ ¦ŸRÇŸ/ (J ^s *Ò Pý 1N¡5€¡E¶¡Iü¡PF¢G—¢Qß¢)1£|[£\Ø£*5¤
`¤n¤)‚¤#¬¤gÐ¤Z8¥Z“¥Mî¥<¦T¦h¦y¦–¦
¯¦3½¦ñ¦þ¦§(§eC§?©§é§û§¨ ¨=¨L¨
g¨u¨‡¨˜¨+¥¨Ñ¨å¨ý¨(©EB©:ˆ©:Ã©<þ©%;ª)aª5‹ªCÁª«G«_«f«n«†«˜«Ÿ«§«¼«Ò«è«û«¬/%¬U¬h¬�¬
-¡¬!¬¬
Î¬#Ü¬9­0:­0k­Aœ­Þ­#ð­)®0>®Ro®JÂ®
¯(¯(G¯
-p¯<{¯¸¯Ë¯&Ï¯ö¯°°,,°Y°(x°(¡°!Ê°Qì°Y>±˜±&®±6Õ±H²>U²L”²;á²6³!T³v³"‰³$¬³$Ñ³'ö³%´'D´l´Š´ª´"Ê´í´µµ%<µbµ5‚µ¸µ9Ôµ2¶?A¶M�¶DÏ¶<·?Q·:‘·mÌ·D:¸V¸SÖ¸/*¹-Z¹1ˆ¹3º¹8î¹#'ºGKºy“ºx
»U†»5Ü»%¼G8¼;€¼*¼¼ç¼Uü¼+R½,~½"«½>Î½
¾%¾-2¾`¾r¾z¾<‚¾¿¾%Þ¾¿"¿;¿#L¿p¿€¿F’¿>Ù¿5À=NÀŒÀ'¨À*ÐÀ=ûÀ)9Á,cÁ0�ÁÁÁ
-×Á-âÁPÂaÂ"sÂ–Â©Â:ÉÂ2ÃK7ÃDƒÃ3ÈÃ-üÃ;*Ä;fÄW¢Ä)úÄ%$Å.JÅyÅ$�ÅµÅ5ÊÅ#Æ8$Æ/]Æ=�Æ+ËÆ÷Æ!	Ç*+Ç4VÇ/‹Ç&»Ç)âÇ
È=ÈXÈjÈ€È’È¨È"»ÈÞÈýÈ
É$É6É=ÉAIÉ‹É˜É¸ÉÉÉ&ÑÉ8øÉ1Ê>ÊRÊgÊ„Ê›Ê°ÊÏÊêÊ
-Ë%Ë:ËSË5sË©Ë¾ËÔËèË1Ì_5Ì»•ÌQÍ>fÍD¥Í.êÍÎ(Î:ÎLÎSÎ(ZÎ6ƒÎ4ºÎ$ïÎ;Ï(PÏ&yÏ ÏJ¿ÏD
-ÐKOÐM›ÐSéÐ>=Ñ>|Ñt»ÑO0Ò,€Ò"­Ò:ÐÒ	ÓÓ‘4Ó2ÆÓùÓ1Ô-=ÔkÔ}Ô„Ô
‹Ô2™ÔÌÔ1ÞÔÕ,ÕCÕbÕ!zÕ#œÕ5ÀÕ0öÕ5'Ö0]ÖŽÖ.®Ö5ÝÖ0×%D×1j×9œ×4Ö×5Ø0AØ%rØ!˜ØºØ*ÑØ0üØ&-ÙTÙ+tÙ& Ù0ÇÙøÙ1Ú$FÚkÚ!‡Ú©Ú%ÀÚ$æÚ)Û35Û+iÛ•Û§ÛÆÛÞÛþÛ
Ü,Ü @Ü1aÜ.“Ü<ÂÜ(ÿÜ@(Ý
-iÝ2tÝP§ÝPøÝFIÞB�ÞÓÞ5ïÞQ%ßwßL�ßjÝß<Hà,…à²àÊà7êà!"áBDá0‡á¸áeÀá–&â3½â?ñâ1ã9PãŠã¨ã´ãÓãïã ä#,äPä)`ä%Šä/°ä+àä"å-/å]å\påXÍåX&æWæE×æOçGmç:µç6ðç6'èL^èS«èDÿèBDé>‡éjÆéA1êOsêJÃêPëI_ë|©ë5&ìA\ì1žì1Ðì3í>6íJuí$ÀíqåíUWî�­î8/ï6hïrŸïPð,cð)�ðIºð6ñ;;ñ^wñKÖñ7"ò§Zò!ó$ó6óHó6dó0›ó0Ìó
ýó
ôô
-.ô&9ô`ô'wôŸô¶ô"Ðô{óôoõ=‚õ^Àõ^ö@~ö|¿öu<÷?²÷Kò÷5>ø,tø)¡øËø$àøLù?Rù4’ùSÇùú#1úUútú#Šú!®úÐúçúþúû%,û#Rûvû�û!£û0Åû.öû0%üVü qü?’ü=Òü=ý:Ný	‰ý	“ý
-�ý
-¨ý³ýÊýÙýîýýý2þ'5þ4]þ’þ6¯þ/æþÿ5ÿKÿSÿ2pÿl£ÿ@*Qw|wôTlQÁU^iuÈu>D´Bù4<Cq7µ@í<.7k@£HäC-HqYºPUeV»T.g5–5Ì7	*:	2e	7˜	$Ð	|õ	Rr
-NÅ
-*G??‡&Ç1îW BxE»G
0I
!z
 œ
]½
0XL#¥EÉ@
-P0[;Œ.È/÷',C4pZ¥DEUf†š­À:ß9;T�%¯oÕ#EUi ¿4à<RcÞuÛT$0!U wE˜HÞ7'c_ÃÛó	:U7]6•+Ìø&X-†‰H£{ì0h™7¡"Ù7ü4<)K;u±ºÒë5Nn�•«_³(2[Bw*º'å:
HZmu:‰ÄÚî(i:"¤]ÇW% } � $¢ HÇ /!@!	I!/S!ƒ!“!I¢! ì!%
"3"C"/W"9‡";Á"4ý"+2#2^# ‘#?²#ò#5þ#&4$[$y$…$Ÿ$4±$æ$1%7%S%q%)�%!«%Í%ê%$&,&EI& �&°&Å&×&ê&þ&'('C'3`'*”'B¿'F(XI(|¢(ƒ)9£)JÝ)7(*)`*5Š*<À*+ý*)+(=+9f+A +(â+L,MX,8¦,;ß,5-JQ-@œ-BÝ-R .'s.(›.Ä.(È.nâ(_€9¥{Õñ”Á«Âq|äät‚µH*îkÔ©8¸ä\V	Ûò»ºÊ3¨2wõˆˆ‡ù±æ/|d‚dˆ‹oÈ´ß@+Ï+hòp¹’�1Î­5MâJŒK+ ã�ÍW·ÂÅÁ§Ÿ÷Õ5{qª!-ÒË@iÖøÓ&œ™	+É$4ô'¶ÂTÌØ›k~¶|€0F�£Œy¶6Æ\Ó©R´þ‰;)tEBì—¥ø—ZSAOÑÓ	�ú¯óû‡ hçìÛv–�îàä‘[�/T„4jX)Šº$ÂáèÆÿYk]ö²BB”pWW«è?šPF¼u†üGè'•e#Çö¡§"ñHÄØÑïÚå~ªÝ¤$W[”SÖ°ÌFs>6·˜O—’±~0Í¾2å'É?CU”Å�ÁÀŸG<îÆp6—/rHg¡ÌPSèasb«¹ÇQ£H×ƒ‹8´ßL°ü¿u´4UË0ôAÚi·•;®o§™&ë4@Ù›!…},šl�“ƒˆ#/…Zóé.ÇUþÏ—‰xÅëvÖ˜ŒŠí%_ECíÜÖ¦=Ì!¿ƒ.`áh¢Ÿ›�›_úÚzTŸõÊ<·Ý¦tðØ]ÂØÎåF Íeí*‚)7�ou Ð®„G¤#„œ<…±xÒ�' ýÒ,(ƒöFÓá=�½1Ù¤?°"¾V~>%±¨+ª“g€U8³ü®‰ù/ëmkšx¬ð@Nz;¤©bõÜþ‘XM70“�e,Uâ3øz6ƒlòJ–ÝÀ}ºt²áLU?Ä¸
ÓÃ€J%™Ô	Ç,=K@Gèºf¯ÑLyEq9>Xg»Œc"C­éª‰*ÖÆP"	Äz9‚Í£¯%uXN�üiû–{§nm&‡ö�Èå’4J4°ñ¡Ãæ¸2RÆ°[-<åmyú�¥[ž-ÚJ\§Ð«úÔvùÑ0±)8a.Œ²ý¹*Á‹£Ðfõ%6®p5„>[I’;T²!¤SX¦¿
Åe¹çq˜A™PLa(ž«"Vchw¢o‡p•ºRÆ\ÃÒ]+»)¹<í�2Ð¬¾*Ð¶»d<æØ¿�í¼0ÜÝÃ–ôvàNu

-ñ¡î¬ž´ÔëËT‘µíéWhÕ˜’|¼-ÈÑÜ{ŒðQ5˜hlC(ª§Ö¬Qýà3¿á
-˜×ÇWÀ³d2ï÷÷Çb;ìøÃ³³½Éˆ¢æ‡RuÉ2oqà
-Y¯·ÞœÁ`¬j�æYMe�”r�Ù¦Ö…GäHÙ�xæ[Ø…cóµ¢1ç™$QFE¬ýÕRKr‘£mÊXž+QM…àHrs TÓbú¨á½pÊòF£«¢êÕA&â¿ÎÏCúàÔãìYÞÿùI¿Z¾|­¾‘G„ÂËâ'	?©mWéœû›r=0;Êi“éœZg”]Ì3Ð®,VßÜ:fðŒVÑô2}7ïÕSî >½ˆÎ•#'µZvD°¥ÑPõÝ°^„9-Üà:®ÝÉ¡:È-âûÄ‰¢ßLC»ýOû×evóêÏqì}­A§ÞƒƒšB†Ú
m{ånc¨ˆ¼óä»Â]‰|ßñô‰»øý¸³Ž4Z9p%¾}‚QL©Š,w]¶·*":DÅ9Z×wÅ–ÚNTBŸI\½Ò{@Mÿ�f•}ëÀDþáö›la jioŠ^xd8k€|CïD†1 ™O¢×3V^bÈb3sIµyÿP²�c¥¨ŽÞ‡aÌ¹ê«$œù
-ï–·ÛKêéq_‹Ž†nÏE�³ã3ö—?þ÷­#V!w,Å´¯=Šsë�ËzÍ8ò
Ô{Û„`Jš±äsènÃ€ŽAËo‚t âRjçf?(=ê¸dÍŠ#Bw\ŸÜ7ÞëÀì¥&M_m÷”&X¨:9ÊÃ± $ÌN/d5´æ³c'À•^š¼Ø$r:½ÞB�ôÕ•HyfÁñõ.çj¤¦ðž;²L—Çègt&~×Ô¨füc­¡êÝ56žÓÏ)!‡GUOÍ½º!éêQ…ïl:@ šçJ7w£8j
%‹7‹Éð5M}ò€O~yPŽ¯Ixœ`Sªs�®¾ADÄü¹>ìÎDÀ†¯
-b1YÒ.çþgy=ÎãÙ1\ß‚-™aãK¶g×Ð^Ž`"�O¥I/r©ÛãŸ“�‹^ª��~û¼E	K¦’_YÙÒt‘ã]È“#“Ä_<h>u­`(IlÈ¸xÛž)Ra¤¬.
-ßŽ¡1ºŠ†ÿi
-^�ËåÎDµ¦Ev¸¶jizN[kù `lÿ(k²¼É’†Êó�ÛzÚY6 î�ÞÙ7øÁÏµ©SÄ.*Kn÷–eÆ
›‘n˜N	    TLS: %A	<corrupt: 0x%04lx>	Export Address Table 			Export Address Table 		%08lx
+Þ•	0x8
+Àp<™ŽT™Œ›4¶
5¶C¶W¶p¶A�¶?Ñ¶:·L·c·v·$•·
º·È·%è·¸¸A"¸&d¸‹¸¤¸½¸Ö¸æ¸ ¹&¹F¹_¹v¹ƒ¹P–¹ç¹*ÿ¹;*ºfºFxº6¿º6öº:-»5h»,ž»DË»N¼J_¼)ª¼=Ô¼:½LM½)š½BÄ½L¾T¾j¾D�¾GÆ¾¿-¿?¿S¿k¿€¿3Ÿ¿Ó¿ê¿0ü¿-À=ÀMÀ+gÀ+“À+¿À#ëÀÁ'Á0ÁLÁcÁ(xÁ?¡Á>áÁ% Â&FÂ(mÂ)–ÂGÀÂÃÃ?Ã\ÃuÃ�Ã°ÃÉÃäÃúÃÄ&Ä=Ä,WÄ„Ä”Ä­ÄÅÄÜÄëÄÅÅ0ÅGÅ1\ÅŽÅŸÅ¬ÅÃÅÞÅ#öÅ+Æ&FÆ5mÆ£Æ¸ÆÐÆêÆÇÇ3ÇJÇ`Ç$uÇšÇ³ÇÓÇëÇ$È%È9ÈNÈ<gÈ¤È³È
ÂÈÐÈäÈùÈ É2ÉMÉ]É}É™É¹ÉÒÉëÉþÉ*Ê9ÊKÊ&]Ê„Ê0˜ÊÉÊ"ÝÊ	Ë
+Ë#ËAËZËkË„Ë"�ËÀË"ÔË#÷Ë#Ì?Ì#TÌ#xÌœÌ©ÌÇÌåÌëÌøÌÍÍ"Í
+@ÍKÍPÍ!VÍ xÍ™ÍžÍ£Í»ÍÛÍûÍÎ!Î'Î8Î?ÎEÎJÎOÎUÎYÎ"^Î�Î†Î¦ÎºÎ&ÚÎBÏDÏdÏiÏnÏuÏ{Ï€Ï’Ï™Ï±ÏÅÏÌÏåÏùÏ
+ÐÐ,Ð=ÐNÐfÐ	uÐ
Ð
�Ð
+›Ð
+¦Ð
+±Ð
+¼Ð
+ÇÐ$ÒÐ
+÷Ð#Ñ
+&Ñ1ÑCÑ![Ñ}Ñ’Ñ
+¡Ñ
¬Ñ	ºÑÄÑ
+ÕÑàÑçÑÿÑÒ+Ò:ÒQÒlÒ{Ò”Ò£ÒªÒ(ÊÒ/óÒL#ÓpÓ‚Ó+‘Ó½ÓAÙÓÔ5ÔOÔiÔ8~Ô·ÔÏÔäÔ&þÔ%ÕDÕ2_Õ?’Õ&ÒÕùÕ(ÖAÖ"TÖwÖ*—Ö6ÂÖ{ùÖru×xè×aØwØ7÷Ø:/ÙjÙ@|Ù5½ÙFóÙM:Ú4ˆÚ4½Ú=òÚ70Û4hÛ1�ÛUÏÛU%Üb{ÜbÞÜAÝaÝ&Ý¦Ý&ÀÝœçÝ,„Þ1±Þ'ãÞ$ß/0ß-`ß+Žß0ºß&ëß2à8Eà*~à©à=Éà9á:Aá6|á6³á$êáâ//â_â5tâ+ªâ$Öâûâ6ã"Qã&tã6›ã=Òã:ä:KäD†ä8Ëä9åC>å:‚å7½å8õå@.æGoæ9·æ,ñæ0ç#Oçsç=Žç-Ìç6úç1è7Mè3…è;¹è:õè(0é"Yé3|é%°é?Öé.êEê0eê1–ê'ÈêVðêGëEeë8«ë(äëc
ì4qì&¦ì2Íì&ík'í*“í*¾í4éí]îA|î?¾îGþîFïOeïbµï8ð,Qð+~ð)ªðYÔð0.ñ=_ñ3�ñ2ÑñBò,Gò(tòL�òêò4ó)=ó$gó3Œó9Àó6úó/1ôDaô&¦ôWÍôU%õ8{õ%´õ(Úõ&ö,*ö#Wö>{öBºöBýö@÷'`÷Eˆ÷9Î÷4ø3=øJqø(¼ø;åø!ù0@ùDqù/¶ù:æù@!ú@búG£ú?ëú2+û8^ûS—û'ëû.ü,Bü'oü6—ü ÎüYïü/Iý4yý5®ýNäýª3þIÞþ9(ÿ3bÿ¾–ÿ<U<’FÏPog>×F`]~¾F=‚„[3c@—MØm&7”#Ìð(&/IVW +ø5$Zo8ƒ"¼$ß'9,Cf!ª!Ì*î/	1I	/{	/«	0Û	*
+07
+<h
+i¥
+=BM=�9Î-&6"].€8¯:èF#
?j
Vª
B(D>m;¬=è4&#[@LÀI
8W+�8¼2õ9(:b3�,Ñuþ t.•.Ä$ó'0@Bq/´,ä'%9,_ŒC¦Jê@5Jv*Á%ì%<81u §(Èlñ<^<›+Ø, HM6–AÍAJQ>œJÛJ&<q<®.ë(lCv°A'6i 4¾0ó+$APJ’3Ý@!R#t.˜BÇF
+4Q%†:¬2ç3 *N 9y C³ C÷ :;!Tv!JË!5"4L"6�"P¸"/	#/9#&i#&�#5·#'í#0$5F$(|$3¥$%Ù$&ÿ$&%'F%=n%#¬%+Ð%3ü%(0&@Y&Cš&5Þ&'' <',]'gŠ'4ò'm'(A•(@×(H)Ga)K©)Iõ)L?*HŒ*CÕ*Y+5s+0©+4Ú+M,N],1¬,)Þ,)-/2-)b-+Œ-7¸-3ð-6$.9[.X•.[î.CJ/6Ž/>Å/=0*B0.m02œ0[Ï0&+1-R1,€1­1È1/ã1$2082'i28‘2"Ê2Hí2A63)x3=¢3#à3@42E4+x4#¤45È4<þ4';5%c5(‰5R²5?6FE6Œ63§61Û6D
7HR7D›7Kà7a,8[Ž8sê8g^9gÆ9B.:‚q:Tô:=I;!‡;-©;b×;b:<g�<g=0m=(ž=4Ç=5ü=O2>)‚>3¬>-à>/?H>?F‡?7Î?G@+N@$z@2Ÿ@.Ò@/A+1A)]A-‡A/µA^åAKDBF�B×B"óBC51C"gC(ŠC$³CEØCDDDcDF¨D_ïD^OE"®E*ÑE+üE'(F;PF8ŒF'ÅF'íF3G>IG-ˆG,¶GãGIHLHiH.‡H/¶HæH$I3+I_IF}I&ÄI!ëI6
J5DJ)zJ¤J¾J(ÝJK+ K LK$mK#’K.¶K.åK%L2:L3mL)¡L\ËLD(MHmMD¶MLûMXHNH¡N)êN*O ?O5`O9–O@ÐO+P6=P\tPAÑP.Q]BQM Q3îQ="RH`R<©R8æR3S4SS4ˆS0½S@îS1/TBaTL¤TAñTL3U8€U+¹U2åU<V3UVX‰VPâV.3W`bW&ÃWPêW\;XX˜XpñXAbY#¤YEÈY+ZK:Z.†Z<µZ,òZX[,x[¥["½[%à[\3&\2Z\�\4­\?â\@"]Wc]=»]*ù]5$^%Z^B€^%Ã^4é^>_<]_Cš_BÞ_;!`3]`)‘`$»`!à`'a8*acaƒa•a¤a!¹aÛa)ña,b-Hb$vb›b1®b_àb@c/Uc+…cV±cIdIRd<œd.Ùd.e/7e;ge£e¶eÊe0Üe/
f=f'Wf7f·f
Ëf.Ùfg
g"g%3g\Yg;¶gòghhh:hGh	`hjh|h�h,šhÇhÛhñh"
i0i(Mi/vi/¦i1Öi8j#Aj'ej2�j3Àjôj;k@kGkOkdktk{kƒk—k¬kÁkÓkækýkl&lDl	clml‹l	 l"ªlÍlßl)ûl/%m"Umxm�m˜m¤m¨m»mÍmßm'ñmn 6n#Wn{n•n¯nÉnãnýno1o CodoH‚o1Ëo#ýo,!pBNpX‘paêp:Lq.‡q7¶q1îq; r(\r:…r,Àr-ír's"Cs-fs”s2³sæsöst t7t!Mt$ot,”t(Át-êtIubu5uµu
+ÊuCÕuIvcvuv}v…v
£v±v>Ãv?wABw„w/ w+Ðw8üw5x$Kx!px1’xÄxãx+y.yBy[y
+hysyB’yÕy%çy
zz.=z-lzGšz3âz{"5{X{u{†{—{©{$Â{ç{!|&|58|n|	€|Š|œ|²|Ò|ì|}})}X0}	‰}“}˜}¤}³}Ê}æ}ü}~.~G~g~{~�~¥~-Ã~ñ~)C'X€�¡³º!Áã:ÿ%:€%`€†€Ÿ€A¸€;ú€C6�z�#”�,¸�=å�C#‚=g‚"¥‚7È‚<ƒ<=ƒ)zƒ5¤ƒÚƒãƒvþƒ*u„ „'²„Ú„ì„ó„ú„
+	…(…=…'O…w…”…¬…Ä…#Ü…†,†.E†,t†.¡†Ð†"í†,‡.=‡!l‡1Ž‡0À‡2ñ‡,$ˆ.Qˆ#€ˆ¤ˆÄˆ(Øˆ/‰!1‰S‰(p‰#™‰+½‰é‰,Š /ŠPŠiŠ‰Š�Š½Š#ÜŠ-‹".‹Q‹c‹v‹‚‹—‹&©‹	Ð‹FÚ‹/!ŒEQŒ—Œ-¨ŒJÖŒM!�o���¦�¹�-Ö�Ž*
Ž8ŽVŽjŽrŽA~Ž>ÀŽÿŽA�7S�B‹�!Î�ð�˜�©�Å�×�é�:þ�#9‘2]‘.�‘#¿‘1ã‘9’O’\’i’y’�’:š’+Õ’#“%“8“Q“i“,�“:®“é“	”d”p”6ƒ”;º”;ö”<2•go•b×•<:–1w–(©–$Ò–÷–/
—+=—i—…—
+Ÿ—
+ª—
+µ—À—Ý—6ù—>0˜<o˜¬˜4È˜'ý˜$%™6J™�™’™ª™Á™Ò™ê™šš&š8šJšdšš‘š¢šºš2Ùš›'&›LN›4››7Ð›0œ'9œaœ�œ–œ¨œ·œ-Ñœ+ÿœ++�*W�	‚�	Œ�
+–�
+¡�¬�È�Ô�á�ö�ž ž5žDž1Iž{ž/›žËžêž ûž'Ÿ'DŸ"lŸ&�Ÿ0¶ŸçŸ  # A 9X -’ À ,Õ a¡9d¡2ž¡4Ñ¡)¢C0¢It¢E¾¢Y£Y^£;¸£;ô£M0¤/~¤5®¤:ä¤5¥4U¥9Š¥7Ä¥9ü¥D6¦G{¦DÃ¦E§CN§-’§0À§4ñ§>&¨;e¨8¡¨*Ú¨6©/<©;l©3¨©%Ü©1ª!4ªVVª9­ª\çªAD«1†«?¸«:ø«73¬>k¬$ª¬EÏ¬u­q‹­Iý­G®4d®O™®Zé®/D¯Ot¯PÄ¯3° I°?j°:ª°&å°
+±±3±0@±%q±"—±%º±0à±!²3²L²g²|²‰²S˜²Oì²<³,[³7ˆ³À³
Â³Ð³1ß³´%´8´K´Ch´O¬´,ü´6)µ`µ$€µ_¥µ"¶((¶AQ¶“¶,±¶2Þ¶H·Z·j·"{·
+ž·>©·$è·
¸ ¸@¸¼V¸¹¹Í¹/ß¹º*ºHº*hºL“º2àº-»)A»"k»Ž»¡»¶»Ë»2Ú»
¼0¼F¼%a¼‡¼9”¼Î¼<à¼=½3[½5�½2Å½7ø½B0¾Ls¾À¾Ñ¾ë¾ó¾û¾¿H¿g¿4j¿&Ÿ¿Æ¿Ï¿
+æ¿ñ¿2
À-@ÀOnÀ¾ÀÝÀ"âÀ*Á%0Á VÁwÁ•Á�ÁC¼Á¤Â¥Â²Â ÌÂLíÂ:ÃCÃWÃlÃ‚Ã˜Ã¯ÃÌÃÝÃïÃûÃÄÄ*$ÄNOÄ[žÄúÄAþÄ@Å_Å,wÅ¤ÅÁÅ6ÙÅÆ 0Æ8QÆ+ŠÆ¶ÆÈÆØÆàÆ'õÆ)Ç(GÇpÇˆÇœÇ°ÇÄÇ×Ç
êÇøÇIÈ \È}ÈDœÈPáÈ2ÉDÉ2_É$’É·É×É5êÉ Ê!;Ê]ÊdÊ2lÊFŸÊJæÊ/1ËFaË¨Ë"ºËÝËíËMüË9JÌ;„Ì7ÀÌøÌÍ-Í<Í,OÍ$|ÍJ¡Í)ìÍ(Î%?Î(eÎŽÎ
+ªÎ,µÎâÎ)üÎ&ÏDÏ^ÏvÏ~Ï–Ï/®Ï)ÞÏÐ
Ð#,ÐPÐ'hÐ�Ð¡Ð·ÐÑÐîÐÑ#Ñ%8Ñ^Ñ{Ñ’Ñ¤Ñ7»ÑóÑÒ%(ÒNÒhÒ}Ò�Ò¢Ò¶ÒÊÒàÒJöÒJAÓJŒÓI×Ó:!Ô\Ô-{Ô;©Ô+åÔ@Õ<RÕ4�Õ6ÄÕ-ûÕ8)Ö5bÖ5˜Ö8ÎÖU×.]×>Œ×IË×hØy~Ø>øØN7ÙI†ÙdÐÙ05Ú;fÚ8¢ÚFÛÚ5"Û&XÛ.Û-®Û.ÜÛ0Ü<<Ü!yÜ›Ü!´Ü)ÖÜEÝZFÝ`¡ÝGÞZJÞU¥Þ.ûÞ,*ßhWßjÀßE+à0qà6¢àkÙàEEá‹á&©áQÐáS"âEvâ#¼â<àâ<ãeZãQÀã2ä/Eä/uä4¥ä=Úä9å0Rå7ƒå%»å'áå=	æ6Gæ@~æ¿æ2ßæç,ç
Cç
Qç
_ç
mç!{ç
�ç"«çÎç
Ýç)ëç)è?è+Tè€è�è”è™èžè£èªè½èÄè=Êè÷é
ëë(#ë.Lë\{ëRØëI+ì uì–ì'®ì)Öìí.
í(<íeígí[{í'×íÿíî8îSî"cî$†î$«îÐîíîïïm+ï#™ï:½ï=øï6ðVQðQ¨ðKúðOFñP–ñ0çñOòYhòNÂò.óI@óFŠóWÑó.)ôMXôW¦ôþôõS5õK‰õ#Õõùõö&ö@ö$Xö:}ö¸öÑö5ãö÷+÷;÷*W÷*‚÷*­÷"Ø÷û÷øø8øQø2gøCšøBÞø&!ù3Hù(|ù5¥ùRÛù.úFúfúƒúœú!·úÙúøúû)ûGû[ûrû3ŒûÀûÑûêûüü.üDüYüsüŠü2ŸüÒü
äüòü	ý$ý$>ý2cý+–ý5Âýøýþ-þHþaþ}þ–þ­þÃþ'Øþÿÿ8ÿPÿ,gÿ”ÿªÿ¿ÿ<Øÿ$
3AQe!~ » Íî 
++Dbv,†³Å'×ÿ/C%W}Š#�ÁÜî#"F!Z#|# Ä#Ü#
$&2%Y…–ž£+Â
+îùþ$2)\af†"¦ÉÎ*Óþ#(-37+<h#m‘«2ËFþEejov|�–�µÍÔñ	+<M^y	Œ
–
¤
+²
+½
+È
+Ó
Þ5ì
+"	2-	
`	n	ƒ	*¡	Ì	ç	ø	
+	
+%
+9
+H
+O
+m
+†
+›
+®
+$Î
+ó
+!(5&<6c=šUØ.A5Q‡@¥æ

3
8I
‚
š
°
6Ê
,.1I?{;»1÷()R"g&Š*±>Ü‚vžz�‘¯>A<€½NÑA \bc¿A#AeL§?ôC4@xk¹q%t—t�.¡<Ð
-*¥X4þ53+i'•4½1ò/$8T+�7¹1ñ=#%aX‡QàN2M�JÏ$ ?3`”E«;ñ)-&WA~)À9ê>$EcA©BëK. ?z Aº Jü DG!?Œ!?Ì!Z"_g"QÇ"@#5Z#$�#%µ#DÛ#A $Cb$#¦$;Ê$:%OA%A‘%,Ó%"&:#&"^&E�&,Ç&*ô&B'1b'+”'^À'(P9(BŠ(:Í({)F„)5Ë)8*&:*‡a*+é*++9A+~{+Nú+TI,Ož, î,X-qh-GÚ-.".'Q.)y.Z£.:þ.X9/:’/:Í/K02T0,‡0P´01E!1*g1'’17º1Jò1P=2GŽ2RÖ2,)3uV3jÌ38740p4.¡4+Ð4-ü4&*5BQ5L”5Rá5!464V6Y‹6?å68%77^7U–7,ì7G8"a8:„8Z¿8H9Ic9W­9W:^]:V¼:G;H[;s¤;A</Z<-Š<*¸<:ã<)=rH=3»=Hï=I8>p‚>Æó>Uº?A@HR@ê›@L†ALÓAY BUzBˆÐBOYCV©C}D¤~DU#E§yEf!F7ˆFHÀFU	G_G>ßG2HQH:fH6¡HRØH`+I8ŒI<ÅIJJE+J)qJ*›J7ÆJEþJPDK&•K&¼K4ãK2L4KL3€L7´L8ìL,%M8RM=‹MuÉMH?NKˆNHÔN;O?YO(™O0ÂOCóOH7PD€P[ÅPV!QfxQOßQ,/RI\RK¦ROòR>BS)�SV«SMTcPT>´T-óTL!UEnUM´UAVCDVOˆV•ØV&nW;•W;ÑW*
X*8X<cXJ X0ëX<Y@YY9šY9ÔY'ZT6Z_‹ZVëZfB[=©[.ç[1\VH\>Ÿ\,Þ\5]|A]Q¾]Q^4b^—^=³^Kñ^E=_Hƒ_HÌ_S`?i`S©`Sý`AQaS“a?ça='bxeb‚ÞbFac@¨c&éc?d;Pd*ŒdS·d]eDieG®e/öe,&f3SfV‡fmÞfCLg:�gTËg@ hKah;­h`éhVJiV¡iLøisEjf¹j@ k<ak>žknÝkILlC–l5Úl8mCIm,�m8ºm?óm53n@in0ªn-Ûn&	o40oIeo/¯o9ßoEp'_pJ‡pZÒpA-q1oq#¡q2Åq…øqJ~rnÉrQ8sPŠsWÛsV3tZŠt^åtgDuc¬uNvk_vMËv8w<RwZ�w[êw>Fx:…x9Àx7úx82y;kyO§yM÷y>EzJ„zeÏzh5{Mž{>ì{P+|O||>Ì|>}?J}tŠ}3ÿ}<3~Ap~²~Ñ~Eí~;3<oH¬Põ5F€L|€SÉ€.�XL�/¥�IÕ�?‚-_‚B�‚?Ð‚Hƒ5Yƒ)�ƒ3¹ƒuíƒQc„\µ„!…@4…4u…Oª…Uú…QP†Z¢†oý†om‡‚Ý‡z`ˆzÛˆMV‰™¤‰a>ŠL Š,íŠ?‹qZ‹sÌ‹s@Œx´Œ?-�,m�Cš�NÞ�a-Ž/�Ž>¿ŽBþŽ6A�Vx�UÏ�]%�_ƒ�5ã�2‘;L‘@ˆ‘?É‘6	’;@’4|’A±’mó’[a“R½“”%/”U”?s”)³”3Ý”,•@>•?•?¿•Aÿ•ZA–Yœ–8ö–</—6l—7£—HÛ—H$˜.m˜4œ˜<Ñ˜H™;W™1“™)Å™`ï™ Pš#qš6•š7Ìš(›+-›:Y›!”›f¶›9œ/WœB‡œHÊœ1�!E�g�1†�¸�.Ò�)ž-+ž,Yž=†ž=Äž.Ÿ@1ŸArŸ.´ŸvãŸPZ Z« H¡aO¡\±¡Z¢<i¢2¦¢'Ù¢B£AD£K†£/Ò£C¤fF¤R­¤3¥f4¥i›¥?¦\E¦W¢¦Aú¦C<§@€§?Á§B¨;D¨S€¨/Ô¨>©GC©<‹©IÈ©3ª?Fª?†ªWÆª@«i_«^É«H(¬uq¬2ç¬l­t‡­pü­�m®Kþ®#J¯In¯/¸¯Iè¯22°Fe°>¬°më°=Y±—±1®±?à±- ²;N²:Š².Å²<ô²A1³Cs³i·³A!´5c´R™´.ì´Oµ-kµ6™µ_ÐµW0¶^ˆ¶\ç¶UD·>š·7Ù·0¸*B¸-m¸>›¸*Ú¸¹
¹)¹)=¹#g¹,‹¹K¸¹<º,AºnºO‡º_×º 7»6X»/�»k¿»]+¼]‰¼Oç¼77½7o½;§½Iã½-¾E¾Y¾Dj¾6¯¾æ¾/¿B3¿v¿
Œ¿,š¿Ç¿Ô¿á¿(ð¿eÀ?À¿ÀÑÀïÀ òÀÁ"Á
=ÁKÁ]ÁnÁ/{Á«Á¿Á!×Á*ùÁ'$Â1LÂE~Â:ÄÂ9ÿÂB9Ã%|Ã)¢Ã6ÌÃDÄHÄG[Ä£ÄªÄ²ÄÉÄÜÄãÄëÄÅÅ,Å?ÅSÅiÅÅ#’Å*¶Å
+áÅ%ìÅ!Æ
4Æ*BÆmÆ Æ) Æ/ÊÆ(úÆ(#Ç
+LÇWÇgÇ&kÇ’Ç¤Ç¶Ç/ÈÇøÇ+È+CÈ!oÈ‘È«ÈÅÈßÈùÈÉ-É2FÉ!yÉW›ÉCóÉ27Ê>jÊ^©ÊxËy�ËYûË<UÌ?’Ì8ÒÌYÍ9eÍYŸÍAùÍ6;Î/rÎ/¢Î3ÒÎ%Ï7,ÏdÏ"~Ï#¡Ï%ÅÏëÏ%Ð$-Ð1RÐ)„Ð2®ÐVáÐ"8ÑB[ÑžÑ½ÑNÊÑUÒoÒ�Ò‰Ò‘Ò¯ÒÁÒEÓÒFÓL`Ó#­Ó=ÑÓ5Ô@EÔ†Ô/¢Ô.ÒÔ@Õ!BÕ"dÕ8‡ÕÀÕÖÕ
îÕ
+üÕ-ÖK5Ö�Ö!“ÖµÖ!ÇÖ7éÖ2!×MT×A¢×3ä×-ØFØcØuØ‡Ø!™Ø$»Ø&àØ#Ù+ÙA=ÙÙ‘ÙžÙ°Ù"ÆÙéÙ(Ú1ÚHÚZÚ]aÚ¿ÚËÚÓÚàÚðÚÛ$Û;ÛPÛpÛ‹Û«ÛÆÛÛÛôÛ5ÜIÜ^ÜtÜ…Ü Ü0µÜæÜõÜÝÝ Ý*'ÝRÝ;qÝ(­Ý&ÖÝ!ýÝÞP9ÞOŠÞRÚÞ$-ß@Rß-“ßMÁßSàDcà<¨àBåàK(áKtá4ÀáDõá	:âDâ�câ:ôâ/ã.Aãpã‚ã‰ã�ã
 ã8®ãçã1ùã+äGä^äuä!�ä¯ä5Æä0üä5-å0cå”å.´å5ãå0æ%Jæ1pæ9¢æ4Üæ5ç0Gç%xç žç¿ç)Öç/è*0è[è+{è&§è0Îèÿè1é$Méré Žé¯é%Æé$ìé)ê3;ê+oê›ê­êÅêÔêóê?ëGëTOë4¤ë[Ùë5ì3NìQ‚ìoÔì,DíqíŒí*¬í0×íî8î-Iîwî’îžîR®îKïMïO`ïC°ïPôï,Eð2rð·¥ð!]ññ’ñ¥ñBÁñ:ò8?ò2xò:«ò;æòC"ó
fó
tó‚ó
+—ó)¢óGÌó<ô3Qô…ôœô·ôÒô0ìôAõ$_õ„õ{•õö=$öGböGªö@òö�3÷zµ÷?0ø5pø,¦ø)Óøýø2ù=Iù+‡ù³ù	Òù	Üù	æù/ðù/ úPPúZ¡úZüú'WûLû;Ìû4üP=üŽü&§ü!Îüðü&	ý$0ýUýoý‰ý£ý(½ý&æý
þ'þ$@þ2eþ0˜þÉþ9åþZÿIzÿBÄÿ>9F*€!«Í
à#î;9N9ˆ:Â	ý	
+
+'	>HTk‹š¯¾4Ã&ø9Yv'‰/±6á/AH=ŠÈèÿ!*7D(|¥5ºð@p2±:ä+PKWœaôjVjÁF,	Ds	i¸	/"
+<R
+=�
+4Í
+9B<<B¼SÿLSO LðO=
5�
8Ã
<ü
H9Q‚?Ô+M@3Ž>Â8%:0`!‘b³C|ZX×>0YoEÉDJT+ŸXË|$r¡J,_8Œ^År$2—XÊh#+Œ$¸FÝA$3f
+š¥¼7È+0,+]N‰Ø!ô%<Zsk„_ð*P4{D°õ÷9RfyŒT«e3f@šÛ%úx #™'½Yå ?0`<‘UÎ$ 5 "G 
j Wx .Ð ÿ )!A!Ï^!Ê."ù"7#%G#&m#!”#:¶#`ñ#<R$3�$>Ã$-%0%H%`%v%@‡%È%7Ð%-&?6&v&9‚&¼&QÐ&Q"'Ft'Y»'I(K_(U«(_)a)+q)�)¥)­)Ë)zÒ)M*HP*3™*Í*Ú*ú*+M%+<s+}°+1.,`,&h,7�,8Ç,(-:)-d-0s-d¤-±	.».)Ê.<ô.Y1/‹/”/ª/Á/Ù/ñ/!
+0,0?0	S0]0i00J‡0_Ò0s21¦1Sª1(þ1%'2;M2%‰2¯2QË2(3'F3:n3A©3ë3þ344"14$T4#y4�4½4Ó4ç4û45!5#35rW5"Ê5 í5T6Wc6»6Í65ì6,"7)O7y7EŽ7$Ô7/ù7)8	28C<8T€8TÕ8>*9Qi9»9/×9::O&:@v:7·:Jï::;"X;{;‹;5Ÿ;8Õ;e<5t<=ª<,è<6=!L=n=5{=±=8Ð=$	>.>J>f>r>‘>C«>4ï>$?@?4R?‡?3¦?Ú? ö?@#3@W@u@(…@1®@à@ÿ@A5AENA ”AµA"ÒAõA
B"B4BGB[BoB…BW›BXóBXLCW¥CEýCCD4bDG—D2ßDDEDWE2œE:ÏE8
+FECFN‰FMØF@&GkgG3ÓGGHTOHs¤HŠIG£I[ëITGJuœJ6K?IK=‰KEÇK9
L*GL6rL1©L2ÛL4M=CM+�M­M(ÊM%óMLNZfNiÁNL+OhxOdáO8FP6Pt¶Py+QR¥Q9øQA2RztRSïR'CS+kS]—SŽõSe„T'êTMUM`U€®Us/V7£V;ÛV8W9PWJŠW@ÕWAXFXX3ŸX0ÓXXYJ]Y]¨YZ>&ZeZ(iZ’ZŸZ¬Z¸ZÄZáZíZ
[[$&[$K[p[&„[
«[¹[¾[Ã[È[Í[Ô[æ[í[Eó[]›j7ìŸ±ß4¾ˆKi¿z¹Ò°ZÜÐ†©œË‹e£æÌµ Þ½W³1üÑÃO”�+·-Øˆæ>6ØK¹Å5.ŽÚÞüÙ-ÿ¨¡8éÊà”)é9hfBC”5ðpHÄ•ír~�}u‚N}lACˆÔHQ~à
+CÔõùÀáÖE�Pñ¤»Ãÿ±ë]ÈÚçi[3ªÆ3-Ph–ž‡Ïw“FR³âãk_é‰%$¡*—²5¨Q0q`µôŽQy”+“ùvå4GåìÄªÙõÓÞŽ+ÐæÁñÆàeøç{Dík-­PZ»)r
+Q:»‘Œ´@½ªJ(ˆSðTfŠÓ¡‘—ÏúM¼°ý#,#æÁ.z,¤_ÑbŠ¼úñ>—˜îµñ%„ÿŸÀ¶Y÷÷¤@¯wRO”À‹ÈTxëL0–‘Û�»ÁäŸ{lK ÐÍz#ÅxMH}õøÖd6ƒ0a‰L.‚*òøÝÚ¯ÐÂ¯ÂcÃ mg�°\è^wÂØaf…Fek_|YÊd±+x¹—v7¾˜%A<‚ÄÒ
+÷£�"àª5…È§�•„�×
+[nq@ÊýÔ…–IÙá]WÞ¬¥3�*™äï|˜Y­¹6ÇÑPÆW_ì"¸œòâ‘‰çµ$É}Á4Ì/Ì+,¯ÆMÑs‚àœŸÙt)Š¦C´žêþï×éV¿@‡É(Ø?¢B¥E©�íË2c	Óè}ŸC(ç?Ã†	îók�b§ãL	—kÚXö�	uK:±£ähmùß;’˜Î®ô™Rêp XËUqÊô÷Ÿg*=d•¬‡Gx�ScÁ�I«]&d¸à`1ÛðUò:ãäÜØÚ"=]h²°jÕ°.�Ö�HI=¬‡ì?…CÍê¦NîºNéWá7¸+I
+ë™>“Í/sŽšûi>Œ’“i4½!¤|!ÉšêäŒ¿>À²'pÕÛìn‡A6žK8ºy½¥~W'‹·ëheb’!÷«4Æ(s·L‹®Î·ø§¶¯`orfãa
ëöÎZFŠAGÚO©Ù='ËBLèE[ºÄB&$ÒRn¬/öa�¨ÿºkÝ~|-ý"ºÔ!Ãþú,9y%€É’Ú?õõüVêF›óKô&†TtE'¢m8Jœs‡ÝClO™²ˆU„›êŠ¢"âdS#�†ÓïèDÑÜw«VƒùÕMZ¶b&jžiÏÛ«’ÍB¿Å´Ý¢@V[(÷çúpôº]ÙÀ€¶Ä)mX@MŠmzÍtïÅcçÙ9‹ìl2$6ª�[ nžîµåH ÂP	�‘Ga€üâ%#»‚U•8Ýyó•t×éòšjj�³Š¼1Æ�=rªu<±Ô:ÍþGo�×nX~ržU:;vŸ±ð¸Q×A&$= ‡_ôÿÓ·tÑÇãÜVþ{g³4Äg,¸ŽG×¥�ö4���‰û¶‘è¸õ5£¾\â5Ž£åãÔƒ¯ñÃÂÈ%Ø½n";–î°ÈÿžSO}ÂÈìM(móÞ1á…û\«¢Õv¨·›´pÂ´Ï³\S_/«Zá{ý†ãÇOzæËf¼T•/—­ùg(ÒÊ¹8¦2H±þ…Üò1D%š\˜0½ß¤zÆEZ3ÐL¢R§EéW
+5;ÎyG:Ûe‰n‰^J<wÐö!N‹
•ÇÅö²üÏs'ÌƒXob×¬¬O1PI†o+íDþ¶ÕÜ<�iÕâN¼9î‘ÊLŽ­;ô)F¡r{]›ögßÖ#y8
<Y.*¨ÜcV°ý™™X„p¤qQ÷ ùNJˆ.¥Àètš^ÇFßhÝÝÊÎ a»
¦KþÖ{ð�£	¾œ2g`¡À­†¿á0¼�ctÈ€x“‚­ÿøz¨©Óål?fTƒ[®cuƒ)€¿SRÕDï¥l7 ³?ßYš3¤·–aqÅ*”§^ý_—ñ2$`}à;ÉËëçùëI/ób)oÓúƒ¡8ŒÛ&å!˜­U6¼ h\ºE¦o²òpÖNí>d�û¬�ýû`0ÅDX øw³v´®^v˜‹Á«¡`®ä&¦úÒÐ' M-¶!|óŒuRÞîï’äÞšT*J77sÎÉò99új¾	¦>y@Ì„„¢Ôœø#;Ã¥™dsAr=	Œ9q\¯B€/æÉü¸Òµ £Pœ…6Q�
Ò¾®F|?|{1ZHØvåSífuóêÇ[‰D~›Tˆ-:3Ñû€áæ,¹ÎÄ®m©oAü²„
©ujÏ©~¹ÖßËûâBw3xÛkð´õ<eÍï“<Y,YŒ§”Ìq§70’è
2ílÁ›»¿^Iñ¨ªµ�–W‚^UÇ“ðJ.ÌbÏVJ"½$
+2x–ie'¾�9\@\G\Ä�à�ô�žž0žDžXžlž€ž”ž¨ž¼žÐžäžøžŸ Ÿ4ŸHŸdŸxŸŒŸ Ÿ´ŸÈŸÜŸðŸ  4 H \ x œ ¸ Ì à ô ¡$¡8¡L¡`¡|¡�¡¤¡¸¡Ì¡à¡ô¡¢¢0¢L¢h¢|¢�¢´¢È¢Ü¢ð¢££,£H£d£€£”£¨£¼£Ð£ä£ø£¤ ¤4¤H¤\¤p¤„¤˜¤¬¤À¤Ô¤è¤ü¤¥4¥H¥\¥x¥Œ¥ ¥´¥È¥Ü¥ð¥¦¦,¦H¦d¦x¦”¦°¦Ì¦à¦ô¦§$§@§\§p§„§ §´§È§Ü§ð§¨¨,¨@¨\¨p¨„¨ ¨´¨Ð¨ä¨ø¨© ©4©H©\©p©„©˜©Ä©à©ü©ª,ª@ªTªhª|ª�ª¤ª¸ªÌªàªôª««0«D«X«l«€«œ«°«Ä«Ø«ì«¬¬(¬<¬P¬l¬€¬”¬°¬Ô¬ð¬­­,­@­\­p­„­˜­´­È­Ü­ð­®®,®@®T®h®„® ®´®È®ì®¯¯(¯<¯P¯d¯€¯œ¯¸¯Ì¯à¯ô¯°°0°D°X°l°€°”°¨°¼°Ð°ä°ø°± ±4±P±l±€±”±°±Ä±Ø±ì±²²(²<²P²d²€²œ²°²Ì²è²³³,³H³\³x³”³¨³¼³Ø³ì³´´(´<´P´d´x´”´¨´¼´Ø´ì´µµ0µDµXµlµ€µ”µ¨µ¼µÐµüµ¶N\ÿÿÿÿp\"ÿÿÿÿ¦\ ÿÿÿÿà\ ÿÿÿÿ]ÿÿÿÿP] ÿÿÿÿw]5ÿÿÿÿ³]%ÿÿÿÿß])ÿÿÿÿ^(ÿÿÿÿ>^/ÿÿÿÿt^ÿÿÿÿ�^'ÿÿÿÿ¾^ÿÿÿÿö^-ÿÿÿÿ$_ÿÿÿÿA_7ÿÿÿÿz_ÿÿÿÿ¥_ ÿÿÿÿÍ_%ÿÿÿÿ
+`ÿÿÿÿ>`*ÿÿÿÿi`.ÿÿÿÿ™`)1ÿÿÿÿó`%ÿÿÿÿa9ÿÿÿÿSa
+2ÿÿÿÿ�a"ÿÿÿÿÃa3ÿÿÿÿ÷aÿÿÿÿb9ÿÿÿÿnb%ÿÿÿÿ¡b
+Hÿÿÿÿõb
+/ÿÿÿÿLc)ÿÿÿÿ�c
+6ÿÿÿÿÍc
+>ÿÿÿÿd
+0ÿÿÿÿOd
+FÿÿÿÿŸd
+ÿÿÿÿád
++ÿÿÿÿe
+ÿÿÿÿ>e
+"ÿÿÿÿje@)ÿÿÿÿÙe
+/ÿÿÿÿf
+ ÿÿÿÿ<f-ÿÿÿÿƒf6ÿÿÿÿÏf6ÿÿÿÿg
+7ÿÿÿÿ[g
+?ÿÿÿÿ¤g
+ÿÿÿÿÉg4ÿÿÿÿh+ÿÿÿÿNh-ÿÿÿÿˆh3ÿÿÿÿ¼h0ÿÿÿÿi 0ÿÿÿÿƒi
+-ÿÿÿÿºi(ÿÿÿÿöi
+-ÿÿÿÿ-jÿÿÿÿ_j6ÿÿÿÿœj>ÿÿÿÿáj#ÿÿÿÿkÿÿÿÿHkÿÿÿÿ„k
+2ÿÿÿÿÀk
+.ÿÿÿÿøkFÿÿÿÿ?l
+2ÿÿÿÿ{l
+2ÿÿÿÿ·l
+2ÿÿÿÿól
+2ÿÿÿÿ/m
+2ÿÿÿÿkm
+2ÿÿÿÿ§mFÿÿÿÿîm
+9ÿÿÿÿ1n
+7ÿÿÿÿrn
+9ÿÿÿÿµnFÿÿÿÿünFÿÿÿÿCo	2ÿÿÿÿ~o+ÿÿÿÿ°o.ÿÿÿÿåo+ÿÿÿÿp-ÿÿÿÿLp0ÿÿÿÿšp"ÿÿÿÿÙp!ÿÿÿÿq
+*ÿÿÿÿBq
+Aÿÿÿÿ�q
+dÿÿÿÿûq
+$ÿÿÿÿ)r1ÿÿÿÿer1ÿÿÿÿ—r
+ÿÿÿÿ´r5ÿÿÿÿs&ÿÿÿÿ6s=ÿÿÿÿ†s&ÿÿÿÿÚs+ÿÿÿÿtÿÿÿÿMt]ÿÿÿÿºt!5ÿÿÿÿu
+ÿÿÿÿLuKÿÿÿÿ˜u<"ÿÿÿÿöu
+ÿÿÿÿ v$ÿÿÿÿYvÿÿÿÿ¡v;ÿÿÿÿ	w?ÿÿÿÿgwÿÿÿÿ�w2ÿÿÿÿÊwÿÿÿÿûwÿÿÿÿ-x=ÿÿÿÿ|xIÿÿÿÿßx(ÿÿÿÿyIÿÿÿÿ€y!ÿÿÿÿ¶y!ÿÿÿÿæyÿÿÿÿz+ÿÿÿÿDz=ÿÿÿÿ‚z+ ÿÿÿÿÏz5ÿÿÿÿ{@ÿÿÿÿJ{
+%ÿÿÿÿy{
+%ÿÿÿÿ¨{7ÿÿÿÿà{-ÿÿÿÿ|ÿÿÿÿ+|<ÿÿÿÿv|-ÿÿÿÿ³|(�ÿÿÿÿh}
+.ÿÿÿÿ }
ÿÿÿÿ¯}
+"	ÿÿÿÿ~B#$ÿÿÿÿ‹~#&ÿÿÿÿÕ~*ÿÿÿÿ,ÿÿÿÿL,ÿÿÿÿ”"!ÿÿÿÿ×  ÿÿÿÿ€+ÿÿÿÿI€4ÿÿÿÿ„€4ÿÿÿÿ¿€7ÿÿÿÿý€)ÿÿÿÿ-�=ÿÿÿÿq�ÿÿÿÿ“�?ÿÿÿÿÙ�!!ÿÿÿÿ‚7ÿÿÿÿS‚-ÿÿÿÿ�‚>ÿÿÿÿÁ‚"#ÿÿÿÿƒ'ÿÿÿÿ5ƒ!.ÿÿÿÿ†ƒ%+ÿÿÿÿÖƒ+
ÿÿÿÿ„Kÿÿÿÿ[„E0ÿÿÿÿÐ„9ÿÿÿÿ
+…JÿÿÿÿU…
+9ÿÿÿÿ˜…0ÿÿÿÿá…Mÿÿÿÿ/†ÿÿÿÿV†Cÿÿÿÿ²†,ÿÿÿÿó†
+WÿÿÿÿV‡
+!9ÿÿÿÿ¼‡2ÿÿÿÿˆ
+<ÿÿÿÿGˆ
+Dÿÿÿÿ•ˆ
+8ÿÿÿÿ×ˆ
+Sÿÿÿÿ4‰
+"ÿÿÿÿ‰
+0ÿÿÿÿ¹‰
+#ÿÿÿÿæ‰
+-ÿÿÿÿŠU9ÿÿÿÿ±Š
+6ÿÿÿÿñŠ
+(ÿÿÿÿ#‹ >ÿÿÿÿ�‹0+ÿÿÿÿÜ‹0,ÿÿÿÿ8Œ
+=ÿÿÿÿŒ
+FÿÿÿÿÏŒ
+"ÿÿÿÿûŒ=#ÿÿÿÿ[�6ÿÿÿÿž�8ÿÿÿÿã�8ÿÿÿÿŽ;ÿÿÿÿvŽ 3ÿÿÿÿ�
+-ÿÿÿÿ;�/ÿÿÿÿ}�
+7ÿÿÿÿ¾�!!ÿÿÿÿ�5ÿÿÿÿ<�Oÿÿÿÿ’�'ÿÿÿÿÁ�$ÿÿÿÿ
+‘$ÿÿÿÿS‘
+Lÿÿÿÿ©‘
+5ÿÿÿÿè‘cÿÿÿÿL’
+6ÿÿÿÿŒ’
+6ÿÿÿÿÌ’
+6ÿÿÿÿ“
+6ÿÿÿÿL“
+6ÿÿÿÿŒ“
+6ÿÿÿÿÌ“cÿÿÿÿ0”
+=ÿÿÿÿw”
+;ÿÿÿÿ¼”
+=ÿÿÿÿ•cÿÿÿÿg•cÿÿÿÿË•	9ÿÿÿÿ
–*ÿÿÿÿ>–-ÿÿÿÿr–0ÿÿÿÿ©–2ÿÿÿÿã–6ÿÿÿÿ9—. ÿÿÿÿ‡— ÿÿÿÿ¾—
+<ÿÿÿÿ˜
+Uÿÿÿÿe˜
+~ÿÿÿÿí˜
+2ÿÿÿÿ)™0ÿÿÿÿd™Iÿÿÿÿ®™
+ÿÿÿÿÓ™!:ÿÿÿÿ.š+ÿÿÿÿgšFÿÿÿÿÆš/&ÿÿÿÿ+›6ÿÿÿÿt›-ÿÿÿÿ¼›sÿÿÿÿ@œ$9ÿÿÿÿžœ
+"ÿÿÿÿäœaÿÿÿÿF�K-ÿÿÿÿ¾�
+ÿÿÿÿõ�/ÿÿÿÿCž7#ÿÿÿÿµž.UÿÿÿÿSŸ(MÿÿÿÿÈŸ4ÿÿÿÿ <ÿÿÿÿP ÿÿÿÿ‡ !!ÿÿÿÿÉ Xÿÿÿÿ9¡!Lÿÿÿÿ¦¡ /ÿÿÿÿõ¡ Lÿÿÿÿa¢ 0ÿÿÿÿ±¢0ÿÿÿÿö¢$ÿÿÿÿ6£<ÿÿÿÿt£OÿÿÿÿÄ£G&ÿÿÿÿ3¤;ÿÿÿÿo¤SÿÿÿÿÇ¤
+4ÿÿÿÿ¥
+4ÿÿÿÿC¥Bÿÿÿÿ†¥1ÿÿÿÿ¸¥ÿÿÿÿå¥JÿÿÿÿB¦1ÿÿÿÿŒ¦'§ÿÿÿÿZ§
+5ÿÿÿÿ™§ÿÿÿÿ«§
+5ÿÿÿÿ¨J(+ÿÿÿÿ®¨+7ÿÿÿÿ	    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
 
@@ -94,10 +186,6 @@ Exec Auxiliary Header
 
 Export Address Table -- Ordinal Base %ld
 
-Function descriptor located at the start address: %04lx
-
-No reldata section! Function descriptor not decoded.
-
 Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Program Header:
@@ -124,12 +212,10 @@ There is a first thunk, but the section
 
 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 contents cannot be read
 
 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
@@ -165,7 +251,8 @@ ppcboot header:
     psect idx 3: %u, offset 3: 0x%08x %08x
     psect: %u, offset: 0x%08x %08x
     routine name: %.*s
-   %02u    (type: %3u, size: 4+%3u):    *unhandled* cmd %u
+   %02u    (type: %3u, size: %3u):    *unhandled* cmd %u
+   Erroneous length
    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
@@ -174,7 +261,6 @@ ppcboot header:
    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)
@@ -186,6 +272,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
@@ -193,7 +281,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
@@ -202,6 +292,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
@@ -209,6 +300,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
@@ -223,6 +315,7 @@ ppcboot header:
    setlnum %u
    setrec %u
    signature: %.*s
+   sizeocmds:  %#lx
    structure level: %u
    symbol vector offset: 0x%08x
    symvec offset : 0x%08x
@@ -232,19 +325,14 @@ ppcboot header:
    transfer address   : 0x%08x
    vector      : 0x%08x
    version mask: 0x%08x
-  %s (len=%u+%u):
+   version:    %x
+  %s (len=%u):
   %u: size: %u, flags: 0x%02x, name: %.*s
   EEOM (len=%u):
   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
-  toc adjust   %lu
-  long branch  %lu
-  long toc adj %lu
-  plt call     %lu
-  plt call toc %lu
-  global entry %lu  calls:
+  calls:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
   fixuplnk: 0x%08x %08x
@@ -260,21 +348,22 @@ ppcboot header:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   size : %u
-  the input  file's flags: %s  the output file's flags: %s %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> <Unrecognised flag bits set> BPAGE: %u COM COMM Change Protection (%u entries):
  Code Address Reference Fixups:
  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 Resources start at offset: %#03x
+ GBL LIB Linkage Pairs Reference Fixups:
+ MACH-O header:
+ NOMOD NORM OVR PIC QVAL RD REL 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 [64-bit doubles] [BE8] [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] [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] [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] alignment of 8-byte entities:  corrupted GST
- debug module table : vbn: %u, size: %u
+ 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:  debug module table : vbn: %u, size: %u
  debug symbol table : vbn: %u, size: %u (0x%x)
+ failed to convert GOTPCREL relocation against '%s'; relink with --no-relax
  fixup info rva:  flags: 0x%04x global symbol table: vbn: %u, records: %u
  ident: 0x%08x, name: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -300,100 +389,58 @@ 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
-%03x %*.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 (%#lx) 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 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(%#Lx): error: Cannot create STM32L4XX veneer. Jump out of range by %Ld bytes. Cannot encode branch instruction. %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): multiple TLS models are not supported%B(%A): relocation %d has invalid symbol index %ld%B(%A): shared library symbol %s encountered whilst performing a static link%B(%A): unsafe PID relocation %s at %#Lx (against %s in %s)%B(%A): 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.%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+%#Lx): %s fixup for insn %#x is not supported in a non-shared link%B(%A+%#Lx): %s relocation against SEC_MERGE section%B(%A+%#Lx): %s relocation against external symbol "%s"%B(%A+%#Lx): %s relocation not permitted in shared object%B(%A+%#Lx): %s used with TLS symbol %s%B(%A+%#Lx): %s used with non-TLS symbol %s%B(%A+%#Lx): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#Lx)%B(%A+%#Lx): CMEM relocation to `%s+%#Lx' is invalid, 16 MSB should be %#x (value is %#Lx)%B(%A+%#Lx): Only ADD or SUB instructions are allowed for ALU group relocations%B(%A+%#Lx): Overflow whilst splitting %#Lx for group relocation %s%B(%A+%#Lx): cannot emit fixup to `%s' in read-only section%B(%A+%#Lx): cannot handle %s for %s%B(%A+%#Lx): cannot reach %s%B(%A+%#Lx): cannot reach %s, recompile with -ffunction-sections%B(%A+%#Lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch%B(%A+%#Lx): could not decode instruction; possible configuration mismatch%B(%A+%#Lx): error: %s with unexpected instruction %#x%B(%A+%#Lx): invalid instruction for TLS relocation %s%B(%A+%#Lx): reloc against `%s': error %d%B(%A+%#Lx): relocation offset out of range (size=%#Lx)%B(%A+%#Lx): unexpected ARM instruction '%#lx' in TLS trampoline%B(%A+%#Lx): unexpected ARM instruction '%#lx' referenced by TLS_GOTDESC%B(%A+%#Lx): unexpected Thumb instruction '%#lx' in TLS trampoline%B(%A+%#Lx): unexpected Thumb instruction '%#lx' referenced by TLS_GOTDESC%B(%A+%#Lx): unexpected fix for %s relocation%B(%A+%#Lx): unresolvable %s relocation against symbol `%s'%B(%A+%#Lx): unresolvable relocation against symbol `%s'%B(%A+%#lx): Stabs entry has invalid string index.%B(%A+%#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.
-%B(%A+0x%lx): %d bytes required for alignment to %d-byte boundary, but only %d present%B(%A+0x%lx): Unable to clear RISCV_PCREL_HI20 relocfor cooresponding RISCV_PCREL_LO12 reloc%B(%A+0x%lx): expected 16A style relocation on 0x%08x insn%B(%A+0x%lx): expected 16D style relocation on 0x%08x insn%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+%#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 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 `%s', a global symbol with default visibility, 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 %Ld against local symbol%B, section %A: relocation %s with non-zero addend %Ld 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: %#Lx: fatal: R_SH_PSHA relocation %Ld not in range -32..32%B: %#Lx: fatal: R_SH_PSHL relocation %Ld not in range -32..32%B: %#Lx: fatal: reloc overflow while relaxing%B: %#Lx: fatal: unaligned %s relocation %#Lx%B: %#Lx: fatal: unaligned branch target for relax-support relocation%B: %#Lx: warning: R_SH_USES points to unrecognized insn %#x%B: %#Lx: warning: R_SH_USES points to unrecognized insn 0x%x%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized insn %#x%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized insns%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized reloc%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized reloc %#Lx%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized insn %#x%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized insns%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized reloc%B: %#Lx: warning: bad R_SH_USES load offset%B: %#Lx: warning: bad R_SH_USES offset%B: %#Lx: warning: bad count%B: %#Lx: warning: could not find expected COUNT reloc%B: %#Lx: warning: could not find expected reloc%B: %#Lx: warning: symbol in unexpected section%B: %A invalid input section size%B: %A not in order%B: %A points past end of text section%B: %A+%#Lx: No symbol found for INHERIT%B: %A+%#Lx: warning: %s relocation against unexpected insn%B: %A+%#Lx: warning: LITERAL relocation against unexpected insn%B: %A: reloc overflow: %#x > 0xffff%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: reloc overflow: 0x%lx > 0xffff%B: '%s' accessed both as normal and thread local symbol%B: --in-implib only supported for Secure Gateway import libraries.%B: .gnu.version_d invalid entry%B: .gnu.version_r invalid entry%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: .reginfo section size should be %d bytes, actual size is %d%B: .rsrc merge failure: corrupt .rsrc section%B: .rsrc merge failure: unexpected .rsrc size%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 is incompatible with that of the selected emulation:
-  target emulation `%s' does not match `%s'%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: Architecture mismatch with previous modules%B: BE8 images only valid in big-endian mode.%B: Bad relocation record imported: %d%B: Bad symbol definition: `Main' set to %s rather than the start address %s
-%B: CALL15 reloc at %#Lx not against global symbol%B: CALL16 reloc at %#Lx not against global symbol%B: Can't find matching LO16 reloc against `%s' for %s at %#Lx in section `%A'%B: Can't relax br (%s) to `%s' at %#Lx in section `%A' with size %#Lx (> 0x1000000).%B: Can't relax br at %#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: Data Directory size (%lx) exceeds space left in section (%Lx)%B: EF_OR1K_NODELAY flag mismatch with previous modules%B: Error: Debug Data ends beyond end of debug directory.%B: Error: multiple definition of `%s'; start of %s is set in a earlier linked file
-%B: Error: search_nds32_elf_blank reports wrong node
-%B: Failed to add renamed symbol %s%B: Failed to find info section for section %d%B: Failed to find link section for section %d%B: Failed to read debug data section%B: Function descriptor relocation with non-zero addend%B: GAS error: unexpected PTB insn with R_SH_PT_16%B: GNU_MBIN section `%A' has invalid sh_info field: %d%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 %#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: Internal inconsistency error for value for
- linker-allocated global register: linked: %#Lx != relaxed: %#Lx%B: Invalid relocation type exported: %d%B: Invalid relocation type imported: %d%B: Invalid sh_link field (%d) in section number %d%B: LOCAL directive: Register $%Ld is not a local register.  First global register is $%Ld.%B: Local symbol descriptor table be NULL when applying relocation %s against local symbol%B: Malformed reloc detected for section %A%B: Malformed reloc detected for section %s%B: Nested OMIT_FP in %A.%B: No core to allocate a symbol %d bytes long
-%B: No core to allocate section name %s
-%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: Relocation %s is not yet supported for symbol %s.%B: Relocations in generic ELF (EM: %d)%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined%B: SHT_GROUP section [index %d] has no SHF_GROUP sections%B: Special symbol `%s' only allowed for ARMv8-M architecture or later.%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 %#Lx in section `%A' failed%B: TOC reloc at %#Lx to symbol `%s' with no TOC entry%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 architecture %s%B: Unknown mandatory ARC object attribute %d.%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: Unsupported transition from %s to %s%B: Warning: Arm BLX instruction targets Arm function '%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-1 mode PLT generation not currently supported%B: XCOFF shared object when not producing XCOFF output%B: XMC_TC0 symbol `%s' is class %d scnlen %Ld%B: __gp does not cover short data segment%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' and its special symbol are in different sections.%B: `%s' has line numbers but no enclosing section%B: `%s' in loader reloc but not loader sym%B: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)%B: `ld -r' not supported with PE MIPS objects
-%B: absent standard symbol `%s'.%B: access beyond end of merged section (%Ld)%B: addend %s%#x in relocation %s against symbol `%s' at %#Lx in section `%A' is out of range%B: address %#Lx out of range for Intel Hex file%B: aout header specifies an invalid number of data-directory entries: %ld%B: attempt to emit contents at non-multiple-of-4 address %#Lx%B: attempt to load strings from a non-string section (number %d)%B: attempt to mix FDPIC and non-FDPIC objects%B: attempt to write out unknown reloc type%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %Ld%B: bad pair/reflo after refhi
-%B: bad reloc address %#Lx in section `%A'%B: bad reloc symbol index (%#Lx >= %#lx) for offset %#Lx in section `%A'%B: bad relocation section name `%s'%B: bad section length in ihex_read_section%B: bad string table size %Lu%B: bad symbol index: %d%B: base-plus-offset relocation against register symbol: %s in %A%B: base-plus-offset relocation against register symbol: (unknown) in %A%B: can not represent section `%A' in a.out object file format%B: can not represent section `%A' in oasys%B: can not represent section for symbol `%s' in a.out object file format%B: can't link hard-float modules with soft-float modules%B: cannot allocate file name for file number %d, %d bytes
-%B: cannot create stub entry %s%B: cannot link fdpic object file into non-fdpic executable%B: cannot link non-fdpic object file into fdpic executable%B: change in gp: BRSGP %s%B: class %d symbol `%s' has no aux entries%B: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s%B: compiled as 32-bit object and %B is 64-bit%B: compiled as 64-bit object and %B is 32-bit%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 %s and linked with modules compiled with %s%B: compiled with %s and linked with modules that use non-pic relocations%B: compiled with -mrelocatable and linked with modules compiled normally%B: corrupt size field in group section header: %#Lx%B: corrupt symbol count: %#Lx%B: could not find output section %A for input section %A%B: could not read contents of section `%A'
-%B: could not write out added .cranges entries%B: could not write out sorted .cranges entries%B: csect `%s' not in enclosing section%B: direct GOT relocation %s against `%s' without base register can not be used when making a shared object%B: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object%B: directive LOCAL valid only with a register or absolute value%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: dynamic object with no .loader section%B: dynamic relocation against `%T' in read-only section `%A'
-%B: dynamic relocation in read-only section `%A'
-%B: encountered datalabel symbol in input%B: endianness incompatible with that of the selected emulation%B: entry function `%s' is empty.%B: entry function `%s' not output.%B: error: ABI mismatch with previous modules.%B: error: Alignment power %d of section `%A' is too big%B: error: Cannot create STM32L4XX veneer.%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: Erratum 835769 stub out of range (input file too large)%B: error: Erratum 843419 stub out of range (input file too large)%B: error: Instruction set mismatch with previous modules.%B: error: PHDR segment not covered by LOAD segment%B: error: VFP11 veneer out of range%B: error: attribute section length too small: %ld%B: error: non-load segment %d includes file header and/or program header%B: error: unaligned relocation type %d at %#Lx reloc %#Lx%B: error: unaligned relocation type %d at %08Lx reloc %08Lx%B: error: unexpected symbol '%s' in COMDAT section%B: error: unknown mandatory EABI object attribute %d%B: error: unknown relocation type %d.%B: failed to generate import library%B: fatal: generic symbols retrieved before relaxing%B: file class %s incompatible with %s%B: gp-relative relocation against dynamic symbol %s%B: group section '%A' has no contents%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 %#Lx%B: illegal section name `%A'%B: illegal symbol index %ld in relocs%B: illegal symbol index in reloc: %ld%B: incompatible machine type. Output is 0x%x. Input is 0x%x%B: incorrect size for symbol `%s'.%B: indirect symbol `%s' to `%s' is a loop%B: internal error in ihex_read_section%B: internal error, internal register section %A had contents
-%B: internal error, symbol table changed size from %d to %d words
-%B: internal symbol `%s' in %B is referenced by DSO%B: internal symbol `%s' isn't defined%B: invalid AVR reloc number: %d%B: invalid CR16C reloc number: %d%B: invalid CRIS reloc number: %d%B: invalid D10V reloc number: %d%B: invalid D30V reloc number: %d%B: invalid Epiphany reloc number: %d%B: invalid FR30 reloc number: %d%B: invalid FRV reloc number: %d%B: invalid IP2K reloc number: %d%B: invalid IQ2000 reloc number: %d%B: invalid LM32 reloc number: %d%B: invalid M32C reloc number: %d%B: invalid M32R reloc number: %d%B: invalid M68HC11 reloc number: %d%B: invalid M68HC12 reloc number: %d%B: invalid MEP reloc number: %d%B: invalid METAG reloc number: %d%B: invalid MMIX reloc number: %d%B: invalid MSP430 reloc number: %d%B: invalid MSP430X reloc number: %d%B: invalid MT reloc number: %d%B: invalid Moxie reloc number: %d%B: invalid NDS32 reloc number: %d%B: invalid OR1K reloc number: %d%B: invalid RL78 reloc number: %d%B: invalid RX reloc number: %d%B: invalid SHT_GROUP entry%B: invalid V850 reloc number: %d%B: invalid Visium reloc number: %d%B: invalid XGate reloc number: %d%B: invalid XTENSA reloc number: %d%B: invalid i960 reloc number: %d%B: invalid import library entry: `%s'.%B: invalid link %u for reloc section %s (index %u)%B: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)
-%B: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote
-%B: invalid mmo file: expected y = 0, got y = %d for lop_fixrx
-%B: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo
-%B: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc
-%B: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx
-%B: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d
-%B: invalid mmo file: file name for number %d was not specified before use
-%B: invalid mmo file: file number %d `%s', was already entered as `%s'
-%B: invalid mmo file: initialization value for $255 is not `Main'
-%B: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx
-%B: invalid mmo file: lop_end not last item in file
-%B: invalid mmo file: unsupported lopcode `%d'
-%B: invalid relocation type %d%B: invalid size field in group section header: %#Lx%B: invalid special symbol `%s'.%B: invalid standard symbol `%s'.%B: invalid start address for initialized registers of length %Ld: %#Lx%B: invalid string offset %u >= %Lu for section `%s'%B: invalid symbol table: duplicate symbol `%s'
-%B: jump too far away
-%B: line number overflow: 0x%lx > 0xffff%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 %#Lx in section `%A'.%B: no group info for section '%A'%B: no initialized registers; section length 0
-%B: no symbol found for import library%B: no valid group sections found%B: non-pic code with imm relocation against dynamic symbol `%s'%B: non-zero symbol index (%#Lx) for offset %#Lx in section `%A' when the object file has no symbol table%B: not enough memory to allocate space for %#Lx symbols of size %#Lx%B: object size does not match that of target %B%B: out of memory creating name for empty section%B: out of memory in _bfd_elf_get_property%B: page size is too large (0x%x)%B: pc-relative relocation against dynamic symbol %s%B: pc-relative relocation against undefined weak symbol %s%B: plugin needed to handle lto object%B: probably compiled without -fPIC?%B: protected symbol `%s' isn't defined%B: register relocation against non-register symbol: %s in %A%B: register relocation against non-register symbol: (unknown) in %A%B: reloc %s:%Ld not in csect%B: reloc against a non-existent symbol index: %ld%B: relocatable link from %s to %s not supported%B: relocation %s against %s%s`%s' can not be used when making %s%s%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %Ld%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported%B: relocation %s against `%s' can not be used when making a shared object%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC%B: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%B: relocation %s against symbol `%s' isn't supported in x32 mode%B: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC%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 %s `%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 %s `%s' can not be used when making a shared object%B: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object%B: relocation at `%A+%#Lx' 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 %A: string table overflow at offset %ld%B: section `%A' can't be allocated in segment %d%B: section group entry number %u is corrupt%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: short data segment overflowed (%#Lx >= 0x400000)%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: string too long (%ld chars, max 65535)%B: support for local dynamic not implemented%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 initialized registers; section length %Ld%B: too many sections (%d)%B: too many sections: %u%B: tp-relative relocation against dynamic symbol %s%B: unable to create fake empty section%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 STM32L4XX veneer `%s'%B: unable to find THUMB glue '%s' for `%s'%B: unable to find VFP11 veneer `%s'%B: unable to find name for empty section%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: unable to load COMDAT section name%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 %Ld 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 load command %#x%B: unknown relocation type %d%B: unknown relocation type %d for symbol %s%B: unknown type [%#x] section `%s'%B: unknown type [%#x] section `%s' in group [%A]%B: unknown/unsupported relocation type %d%B: unrecognised Alpha reloc number: %d%B: unrecognised CR16 reloc number: %d%B: unrecognised CRX reloc number: %d%B: unrecognised I370 reloc number: %d%B: unrecognised MCore reloc number: %d%B: unrecognised MN10300 reloc number: %d%B: unrecognised MicroBlaze reloc number: %d%B: unrecognised PPC reloc number: %d%B: unrecognised PicoJava reloc number: %d%B: unrecognised SH reloc number: %d%B: unrecognised SPU reloc number: %d%B: unrecognised VAX reloc number: %d%B: unrecognized relocation (%#x) in section `%A'%B: unrecognized symbol `%s' flags 0x%x%B: unsupported non-PIC call to IFUNC `%s'%B: unsupported relocation type %d%B: unsupported relocation type %i
-%B: unsupported relocation type %s%B: unsupported relocation type 0x%02x%B: unsupported relocation: ALPHA_R_GPRELHIGH%B: unsupported relocation: ALPHA_R_GPRELLOW%B: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
-%B: uses %s instructions while previous modules use %s instructions%B: uses _-prefixed symbols, but writing file with non-prefixed symbols%B: uses different e_flags (%#x) fields than previous modules (%#x)%B: uses different unknown e_flags (%#x) fields than previous modules (%#x)%B: uses instructions which are incompatible with instructions used in previous modules%B: uses non-prefixed symbols, but writing file with _-prefixed symbols%B: version count (%Ld) does not match symbol count (%ld)%B: version node not found for symbol %s%B: visibility of symbol `%s' has changed.%B: warning core file truncated%B: warning: %A: line number overflow: %#x > 0xffff%B: warning: %s points to unrecognized reloc at %#Lx%B: warning: %s relocation against symbol `%s' from %A section%B: warning: %s relocation to %#Lx from %A section%B: warning: %s: line number overflow: 0x%lx > 0xffff%B: warning: COMDAT symbol '%s' does not match section name '%s'%B: warning: Empty loadable segment detected at vaddr=%#Lx, is this intentional?%B: warning: Endian mismatch with previous modules.%B: warning: GOT addend of %Ld to `%s' does not match previous GOT addend of %Ld%B: warning: Incompatible elf-versions %s and  %s.%B: warning: Inconsistent ASEs between e_flags and .MIPS.abiflags%B: warning: Inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags%B: warning: Inconsistent ISA between e_flags and .MIPS.abiflags%B: warning: Inconsistent ISA extensions between e_flags and .MIPS.abiflags%B: warning: No symbol for section '%s' found%B: warning: Older version of object file encountered, Please recompile with current tool chain.%B: warning: PLT addend of %Ld to `%s' from %A section ignored%B: warning: Unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)%B: warning: allocated section `%s' not in segment%B: warning: cannot deal R_NDS32_25_ABS_RELA in shared mode.%B: warning: claims to have 0xffff relocs, without overflow%B: warning: duplicate line number information for `%s'%B: warning: illegal symbol in line number entry %d%B: warning: illegal symbol index %ld in relocs%B: warning: illegal symbol index 0x%lx in line number entry %d%B: warning: isymMax (%ld) is greater than ifdMax (%ld)%B: warning: line number count (%#lx) exceeds section size (%#lx)%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: loop in section dependencies detected%B: warning: multiple dynamic symbol tables detected - ignoring the table in section %u%B: warning: multiple symbol tables detected - ignoring the table in section %u%B: warning: relocate SDA_BASE failed.%B: warning: segment alignment of %#Lx is too large%B: warning: selected STM32L4XX erratum workaround is not necessary for target architecture%B: warning: selected VFP11 erratum workaround is not necessary for target architecture%B: warning: sh_link not set for section `%A'%B: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
-%B: warning: unaligned access to GOT entry.%B: warning: unaligned small data access for entry: {%Ld, %Ld, %Ld}, addr = %#Lx, align = %#x%B: warning: unknown EABI object attribute %d%B: will not resolve runtime TLS relocation%B:%A%s exceeds overlay size
-%B:%A: %s and %s must be in the same input section%B:%A: Warning: deprecated Red Hat reloc %B:%A: error: relocation references symbol %s which was removed by garbage collection.%B:%A: error: try relinking with --gc-keep-exported enabled.%B:%A: table %s missing corresponding %s%B:%A: table entry %s not word-aligned within table%B:%A: table entry %s outside table%B:%d: Bad checksum in S-record file
-%B:%d: Unexpected character `%s' in S-record file
-%B:%d: byte count %d too small
-%B:%d: unexpected character `%s' in Intel Hex file%B:%s has both normal and TLS relocs%B:%s section %s: alignment 2**%u not representable%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
-%F%A: failed to align section
-%F%B: PC-relative offset overflow in GOT PLT entry for `%s'
-%F%B: PC-relative offset overflow in PLT entry for `%s'
-%F%B: branch displacement overflow in PLT entry for `%s'
+#<invalid error code>%%X%%P: relocation %s against `%s' which may bind externally 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: %F%P: %pB(%pA): error: need linked-to section for --gc-sections
+%F%P: %pB(%s): error opening thin archive member: %E
+%F%P: %pB: copy relocation against non-copyable protected symbol `%s'
+%F%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB
+%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap
+%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap
+%F%P: %pB: failed to allocate compact relative reloc section
+%F%P: %pB: failed to allocate memory for section `%pA'
+%F%P: %pB: failed to allocate relative reloc record
+%F%P: %pB: failed to finish relative relocations
+%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%F%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)
+%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: already_linked_table: %E
 %F%P: auto overlay error: %E
 %F%P: can not build overlay stubs: %E
-%F%P: corrupt input: %B
-%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: failed to convert GOTPCREL relocation; relink with --no-relax
-%F%P: failed to create BND PLT section
+%F%P: corrupt input: %pB
+%F%P: discarded output section: `%pA'
+%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 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 PLT .sframe section
 %F%P: failed to create VxWorks dynamic sections
 %F%P: failed to create ifunc sections
+%F%P: failed to create second PLT .sframe section
 %F%P: failed to create the second PLT .eh_frame section
+%F%P: failed to size relative relocations
+%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: %s against `%T': error %d
-%H: %s for indirect function `%T' unsupported
+%H: %s against %pT is not supported
+%H: %s against `%pT': error %d
+%H: %s for indirect function `%pT' unsupported
+%H: %s out of range
+%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 against local symbol
-%H: %s reloc unsupported in shared libraries and PIEs.
-%H: %s used with TLS symbol `%T'
-%H: %s used with non-TLS symbol `%T'
-%H: R_FRV_FUNCDESC references dynamic symbol with nonzero addend
-%H: R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend
+%H: %s reloc unsupported here
+%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
@@ -405,85 +452,123 @@ Use gcc option -mrestrict-it to generate
 %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 `%T' lacks nop, can't restore toc; (-mcmodel=small toc adjust stub)
-%H: call to `%T' lacks nop, can't restore toc; recompile with -fPIC
+%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 %s returns an unrecognized value %x
 %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 `%T'
+%H: relocation type %u is not supported
+%H: unresolvable %s against `%pT'
 %H: unresolvable %s relocation against symbol `%s'
 %H: warning: %s unexpected insn %#x.
+%H: warning: relocation to "%s" references a different segment
 %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: %B .opd not allowed in ABI version %d
-%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 read-only section `%A'
-%P: %B: warning: relocation in read-only section `%A'
-%P: %s not defined in linker created %s
-%P: %s offset too large for .eh_frame sdata4 encoding%P: .eh_frame_hdr entry overflow.
-%P: .eh_frame_hdr refers to overlapping FDEs.
-%P: DW_EH_PE_datarel unspecified for this architecture.
-%P: FDE encoding in %B(%A) prevents .eh_frame_hdr table being created.
-%P: Further warnings about FDE encoding preventing .eh_frame_hdr generation dropped.
-%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: copy reloc against protected `%T' is dangerous
-%P: dynreloc miscount for %B, section %A
-%P: error in %B(%A); no .eh_frame_hdr table will be 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: note: the message above does not take linker garbage collection into account
+%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: --plt-localentry is especially dangerous without ld.so support to detect ABI violations.
-%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 PDE
+%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: %s against `%s': error: relocation applies outside section
+%X%H: %s against `%s': error: relocation target address is odd
+%X%H: %s against `%s': internal error: unexpected relocation result %d
 %X%H: @local call to ifunc %s
-%X%H: Cannot convert branch between ISA modes to JALX: relocation out of range
-%X%H: Unsupported JALX to the same ISA mode
-%X%H: Unsupported branch between ISA modes
-%X%H: Unsupported jump between ISA modes; consider recompiling with interlinking enabled
+%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: relocation to "%s" references a different segment
+%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%P: %B(%A): error: relocation for offset %V has no value
-%X%P: %B(%A): relocation "%R" goes out of range
-%X%P: %B(%A): relocation "%R" is not supported
-%X%P: %B(%A): relocation "%R" returns an unrecognized value %x
-%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%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(%pA): relocation is not supported
+%X%P: %pB(%pA): relocation out of range
+%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 `%A' of %B: defined in discarded section `%A' of %B
-%s defined on removed toc entry%s duplicated
+%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB
+%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 %zu is empty%pB(%pA): error: secondary reloc %zu is of an unknown type%pB(%pA): error: secondary reloc %zu references a deleted symbol%pB(%pA): error: secondary reloc %zu references a missing symbol%pB(%pA): error: secondary reloc section has non-standard sized entries%pB(%pA): error: secondary reloc section has zero sized entries%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): relocation %zu has invalid symbol index %lu%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 (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB
+%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB
+%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: Adjusting branch at 0x%V towards "%s" in section %s
+%pB: BE8 images only valid in big-endian mode%pB: C_STAT isn't supported by XCOFF64%pB: Cannot create stub entry '%s'%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: Number of symbols in input file has increased from %lu to %u
+%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: TOC entry `%s' has a R_TLSMLrelocation not targeting itself%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: adjusting invalid FileAlignment%pB: adjusting invalid SectionAlignment%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 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: can't link different ABI object.%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 export internal symbol `%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: conditional branch to undefined symbol `%s' not allowed%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 against a local symbol 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: attribute section length too small: %ld%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: expected symbol index in range 0..%lu but found local symbol with index %lu%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 NumberOfRvaAndSizes%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 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-canonical reference to canonical protected function `%s' in %pB%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: overflow reloc count too small%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 %#x unsupported%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 absolute symbol `%s' can not be used when making a shared object%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object%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 %s overflow 0x%lx%pB: relocation %s right shift %d error 0x%lx%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 %s is compressed with zstd, but BFD is not built with zstd support%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: symbol name exceeds given max length of %d%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 compress section %s%pB: unable to create fake empty section%pB: unable to decompress section %s%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 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 bfd relocation type %#x%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 %s%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported swap_aux_in for storage class %#x%pB: unsupported swap_aux_out for storage class %#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: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up%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 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: 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: truncated `%s' option%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment%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: warning: win32pstatus %s of size %lu bytes is too small%pB: will not resolve runtime TLS relocation%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u%pB: wrong auxtype %#x for storage class %#x%pB:%.8s: RVA truncated%pB:%.8s: section below image base%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 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%pB[%pA]: no output section for space %pA%pcrel_lo missing matching %pcrel_hi%pcrel_lo overflow with an addend%pcrel_lo section symbol with an addend%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20%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: 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: no such symbol%s: not implemented%s: not supported%s: undefined version: %s(at bit offset %u)
+%s has both normal and TLS relocs%s in overlay section%s is defined but could not be loaded: %s%s is defined but plugin support is disabled%s is loaded but symbol "%s" is not found: %s%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s, iter %u
+  branch         %lu
+  long branch    %lu
+  plt call       %lu
+  global entry   %lu%s: Bad ELF id: `%d'%s: ISA string cannot contain uppercase letters%s: ISA string must begin with rv32 or rv64%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: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: first ISA extension must be `e', `i' or `g'%s: invalid prefixed ISA extension `%s' ends with <number>p%s: no such symbol%s: not implemented%s: not supported%s: object size does not match that of target %s%s: prefixed ISA extension must separate with _%s: undefined version: %s%s: unknown prefixed ISA extension `%s'%s: unknown standard ISA extension or prefix class `%c'(at bit offset %u)
 (descriptor)
-(format %c%c%c%c signature %s age %ld)
+(format %c%c%c%c signature %s age %ld pdb %s)
 (no value)
 (not active)
 (not allocated)
@@ -495,32 +580,27 @@ Use gcc option -mrestrict-it to generate
 *unknown**unknown*        , Value: %#08lx
 , alias: %u
 , ext fixup offset: %u, no_opt psect off: %u, subtype: %u (%s)
-, symbol vector rva: - %B is 64-bit, %B is not-mips32r2 -mfp64 (12 callee-saved).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-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<corrupt info> %s<corrupt string length: %#x>
 <corrupt string offset: %#lx>
 <corrupt><unknown directory type: %d>
-<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:%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
-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:
-Branch to a non-instruction-aligned addressCACHE use: CLICLR Runtime HeaderCLUSTERS_LOCKMGR COUNTERS         CPU              CTL_AUGRB (augment relocation base) %u
+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)
-Cannot convert a branch to JALX for a non-word-aligned addressCannot convert a jump to JALX for a non-word-aligned addressCopyright Header
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsCopyright Header
 Corrupt .rsrc section detected!
-Corrupt 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 valueDSO 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 0x%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: section %s has no contentsDWARF error: section %s is too bigDWARF 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: Abstract instance recursion detected.Dwarf Error: Can't find %s section.Dwarf Error: Could not find abbrev number %u.Dwarf Error: DW_AT_comp_dir attribute encountered with a non-string form.Dwarf Error: Info pointer extends beyond end of attributesDwarf Error: Invalid abstract instance DIE ref.Dwarf Error: Invalid maximum operations per instruction.Dwarf Error: Invalid or unhandled FORM value: %#x.Dwarf Error: Line info data is bigger (%#Lx) than the space remaining in the section (%#lx)Dwarf Error: Line info section is too small (%Ld)Dwarf Error: Line info unsupported segment selector size %u.Dwarf Error: Offset (%llu) greater than or equal to %s size (%Lu).Dwarf Error: Ran out of room reading opcodesDwarf Error: Ran out of room reading prologueDwarf Error: Unable to read alt ref %llu.Dwarf Error: Unhandled .debug_line version %d.Dwarf Error: Unknown format content type %Lu.Dwarf Error: Zero format count.Dwarf Error: data count (%Lx) larger than buffer size.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, 4 and 5 information.Dwarf Error: mangled line number section (bad file number).Dwarf Error: mangled line number section.EIHD: (size: %u, nbr blocks: %u)
-ERROR: Attempting to link %B with a binary %B of different architectureEntry function `%s' disappeared from secure code.Entry offset        = 0x%.8lx (%ld)
-Error reading %s: %sError: %B has both the current and legacy Tag_MPextension_use attributesError: The ARC4 architecture is no longer supported.
-Errors encountered processing file %BException Directory [.pdata]Export Directory [.edata (or where ever we found it)]Export Flags 			%lx
-Export RVAFAILED to find previous HI16 relocFILES_VOLUMES    FPU-2.0FPU-3.0Failed to update file offsets in debug directoryFile format is ambiguousFile format not recognizedFile in wrong formatFile too bigFile truncatedFlag field          = 0x%.2x
-Forwarder RVAGALAXY           GOT and PLT relocations cannot be fixed with a non dynamic linker.GP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsGlobal symbol table:
+Delay Import DirectoryDescription DirectoryEIHD: (size: %u, nbr blocks: %u)
+Entry offset        = 0x%.8lx (%ld)
+Error: %pB and %pB has different DSP versionError: %pB and %pB has different FPU ABIError: %pB and %pB has different VDSP versionError: %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 supported only by GNU and FreeBSD targetsGNU_RETAIN section is supported only by GNU and FreeBSD targetsGOT 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)
@@ -528,23 +608,20 @@ Use gcc option -mrestrict-it to generate
 Hard float (single precision)
 Hard float compat (32-bit CPU, 64-bit FPU)
 Hard or soft float
-ID: %#08lxIDC - Ident Consistency check
-IEEE parser: string length: %#lx longer than buffer: %#lxIMAGE_ACTIVATOR  INPUT_SECTION_FLAGS are not supported.
-IO               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)
 Image symbol & debug table: (major: %u, minor: %u)
-Import Address Table DirectoryImport Directory [parts of .idata]Internal Error: RL78 reloc stack overflowInternal Error: RL78 reloc stack underflowInternal inconsistency: remaining %lu != max %lu.
-  Please report this bug.Invalid AArch64 reloc number: %dInvalid DLX reloc number: %dInvalid TARGET2 relocation type '%s'.Invalid bfd targetInvalid contents in %A sectionInvalid operationInvalid output section for .eh_frame_entry: %AInvalid section index in ETIRIs this version of the linker - %s - out of date ?It must be a global or weak function symbol.Jump to a non-instruction-aligned addressJump to a non-word-aligned addressLOGICAL_NAMES    Language Processor Name
+Import Address Table DirectoryImport Directory [parts of .idata]Internal error: unreachable.LAM_U48 propertyLAM_U57 propertyLOGICAL_NAMES    Language Processor Name
 Length              = 0x%.8lx (%ld)
-Linker: cannot init ex9 hash table error 
-Linker: error cannot fixed ex9 relocation 
-Load Configuration DirectoryLocal IFUNC function `%s' in %B
+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
-Malformed archiveMaximum stack required is 0x%v
-MeP: howto %d has type %dMemory exhaustedModule header
-NETWORKS         NORMALName 				No address assigned to the veneers output section %sNo errorNo more archived filesNo symbolsNoneNonrepresentable section on outputNot enough memory to sort relocationsNumber in:
+Maximum stack required is 0x%v
+MeP: howto %d has type %dMerging program properties
+Module header
+NETWORKS         NORMALNOTE: This behaviour is deprecated and will be removed in a future version of the linkerName 				NoneNumber in:
 OPR_ADD (add)
 OPR_AND (logical and)
 OPR_ASH (arithmetic shift)
@@ -562,27 +639,26 @@ Use gcc option -mrestrict-it to generate
 OPR_SEL (select)
 OPR_SUB (subtract)
 OPR_USH (unsigned shift)
-Object module NOT error-free !
-Offset of veneer for entry function `%s' not a multiple of its size.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.Ordinal Base 			%ld
-Output file requires shared library `%s'
-Output file requires shared library `%s.so.%s'
+Ordinal Base 			%ld
 PC-relative load from unaligned addressPIE executablePOSIX            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"
+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 ABI conflict: G10 file %B cannot be linked with %s file %BRL78 ABI conflict: cannot link %s file %B with %s file %BRL78 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 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 '%A' 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 %ASH Error: unknown reloc type %dSHELL            SHRFXDSHRPICSIMD use: SPSC - Shared Image Program section def
+Private flags = 0x%lx : 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 togetherRL78 reloc divide by zeroRL78 reloc stack overflow/underflowR_AMD64_IMAGEBASE with __ImageBase undefinedR_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)
-STA_LW (stack longword) 0x%08x
-STA_MOD (stack module)
+STA_LW (stack longword)STA_MOD (stack module)
 STA_PQ (stack psect base + offset)
-STA_QW (stack quadword) 0x%08x %08x
-STC_BOH_GBL (store cond BOH at global addr)
+STA_QW (stack quadword)STC_BOH_GBL (store cond BOH at global addr)
 STC_BOH_PS (store cond BOH at psect + offset)
 STC_BSR_GBL (store cond BSR at global addr)
 STC_BSR_PS (store cond BSR at psect + offset)
@@ -617,41 +693,31 @@ Use gcc option -mrestrict-it to generate
 SYMG - Universal symbol definition
 SYMM - Global symbol definition with version
 SYMV - Vectored symbol definition
-SYSGEN           Section has no contentsSecurity DirectorySize error in section %ASoft float
+SYSGEN           Security DirectorySoft float
 Source 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_popStart address of `%s' is different from previous link.Strides:
-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 existSymbol should be absolute, global and refer to Thumb functions.System call errorTLS relocation invalid without dynamic sectionsTOC overflow: %#Lx > 0x10000; try -mminimal-toc when compilingTable 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
-There is a conflict merging the ELF header flags from %BThread Storage Directory [.tls]Time/Date stamp 		%lx
+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 sectionsTOC overflow during stub generation; try -mminimal-toc when compilingTable Addresses
+The addend isn't allowed for R_RISCV_GOT_HI20The 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
-Too many GOT entries for -fpic, please recompile with -fPICToo many unwind codes (%ld)
-Try enabling relaxation to avoid relocation truncationsType                Size     Rva      Offset
-USRSTACKUnable 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.
-Unable to read EIHS record at offset %#xUnexpected STO_SH5_ISA32 on local symbol is not handledUnexpected machine numberUnhandled OSF/1 core file section type %d
-Unhandled relocation %sUnknownUnknown EGSD subtype %dUnknown basic type %dUnknown reloc %sUnknown reloc %s + %sUnknown symbol in command %sUnknown: %xUnrecognised MIPS reloc number: %dUnrecognized INPUT_SECTION_FLAG %s
-Unrecognized TI COFF target id '0x%x'Unrecognized reloc type 0x%xUnsupported .stab relocationUnsupported CR16 relocation type: 0x%x
-VOLATILE         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 regionsVirtual size of .pdata section (%ld) larger than real size (%ld)
-Warning, .pdata section size (%ld) is not a multiple of %d
-Warning: %B does not support interworking, whereas %B doesWarning: %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 64-bit long double, %B uses 128-bit long doubleWarning: %B uses AltiVec vector ABI, %B uses SPE vector ABIWarning: %B uses IBM long double, %B uses IEEE long doubleWarning: %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 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 %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: Conflicting platform configurationWarning: %B: Conflicting platform configuration %s with %s.
-Warning: %B: Unknown ARC object attribute %d.Warning: %B: Unknown EABI object attribute %dWarning: %B: Unknown MSPABI object attribute %dWarning: %s section size (%ld) is not a multiple of %d
+Too many unwind codes (%ld)
+Type                Size     Rva      Offset
+USRSTACKUnable to find the stub entry targeting %sUnable to link input file: %sUnable to load DLL.UnknownUnknown: %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
-Warning: 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: 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: symbol `%s' is both section and non-sectionWarning: type of symbol `%s' changed from %d to %d in %BWarning: unset or old architecture flags. 
-	       Use default machine.
-Warning: 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]: 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 function.a PDE objecta PIE objecta shared objectaddressaddress not word alignarray descriptor:
+[abi=16-bit int, [abi=32-bit int, [whose name is lost]\%pB: warning: %s BLX instruction targets %s function '%s'__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 function`xtheadvector' is conflict with the `v' extension`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extensiona 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
-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_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
+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: %#lxbfd_mach_o_read_section_64: overlarge alignment value: %#lxbfd_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 create stub entry %scannot 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 %pBc' or `zcac' or `zcdc' or `zcfcan't build branch stub `%s'can't find branch stub `%s'cannot + or - base extension `%s' in .option arch `%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 find default versions of the ISA extension `%s'cannot read DMT
 cannot read DMT header
 cannot read DMT psect
 cannot read DST
@@ -667,106 +733,97 @@ Use gcc option -mrestrict-it to generate
 cannot read GST
 cannot read GST record
 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 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 reloc recordcorrupt vms valuecorrupted GST
+could 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]d' and `c', or `d' and `zcdd' and `zfad' or `zdinxdangerous 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'discarding zero address range FDE in %B(%A).
+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 sizeenumbeg, len: %u, name: %.*s
+division by zerodst_define_location %u too largedynamic index information not availabledynamic 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 (%#Lx) 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 needs 8-byte alignment but %B is set for 4-byte alignmenterror: %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 64-bit doubles but %B uses 32-bit doubleserror: %B uses FPA instructions, whereas %B does noterror: %B uses FPU-3.0 but %B only supports FPU-2.0error: %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(%A) is too large (%#Lx bytes)error: %B: <corrupt x86 ISA needed size: 0x%x>error: %B: <corrupt x86 ISA used size: 0x%x>error: %B: <corrupt x86 feature size: 0x%x>error: %B: Big-endian R2 is not supported.error: %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: cannot mix rf16 with full register set %B.
-error: %B: conflicting ISA extension attributes %s with %s.
-error: %B: conflicting attributes %s.
-error: %B: conflicting attributes %s: %s with %s.
-error: %B: size of section %A is not multiple of address sizeerror: %B: unable to merge CPU base attributes %s with %s.
-error: %B: unable to merge ISA extension attributes %s.
-error: %B: unable to merge virtualization attributes with %Berror: Can't find symbol: _SDA_BASE_.error: IFC relocation error.error: Jump IFC Fail.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: undefined symbol __rtiniterror: unknown Tag_ABI_array_object_align_expected value in %Berror: unknown Tag_ABI_array_object_alignment value in %Bexecutablefailed creating ex9.it %s hash table entryfailed 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 symbolhidden symbol ignoring reloc %s
-incr_linum(b): +%u
+error adding attributeerror in %pB(%pA); no .eh_frame_hdr table will be createderror in %pB(%pA); no .sframe 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 has a LOAD segment with RWX permissionserror: %pB has a TLS segment with execute permissionerror: %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 alignederror: %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 property (0x%x) 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: SB relative addressing conflicts with use of R9error: %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: mis-matched ISA string to merge '%s' and '%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: %pB: unsupported XLEN (%u), you might be using wrong emulationerror: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack sectionerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: conflicting CPU architectures %s vs %s in %pBerror: creating an executable stack because of -z execstack command line optionerror: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spaceerror: 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 %pBexecutablef' and `c', or `f' and `zcff' or `zfinxfailed 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 truncatedfinal size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spacefurther 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 definedhhidden 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: addend should be zero for R_LM32_16_GOTinternal error: addend should be zero for R_OR1K_GOT16internal 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 symbolinternal symbol 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"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 %#Lx (dest = %#Lx)ip2k linker: redundant page instruction at %#Lx (dest = %#Lx)ip2k relaxer: switch table header corrupt.ip2k relaxer: switch table without complete matching relocation information.label, name: %.*s
+input SFrame sections with different abi prevent .sframe generationinput SFrame sections with different format versions prevent .sframe generationinternal 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 internal: unreachable INSN_CLASS_*invalid %sinvalid ISA extension ends with <number>p in .option arch `%s'invalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid dynamic indexinvalid 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 symbolmach-o: there are too many sections (%u) maximum is 255,
-mep: no reloc for code %dmodbeg
+linkable imagelinker stubs in %u grouplinker stubs in %u groupsliteralliteral relocation occurs for an external symbollocal symbol index too biglong branch stub `%s' offset overflowm' or `zmmulmach-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]: nativenew entry function(s) introduced but no output import library specified:nonon-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 relocnonenot 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 dynamic index information availableno 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
-not setout of rangeoverflow after relaxationoverlay stub relocation overflowpointer
-private flags = %lxprivate flags = %lx:private flags = %lx: private flags = %x:private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
-protected symbolprotected symbol recbeg: 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 overflowplugin framework: out of file descriptors. Try using fewer objects/archives
+pointer
+private flags = %lxprivate flags = %lx:private flags = %lx: private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
+protected symbolprotected symbol q' and `zfaq' or `zqinxrecbeg: name: %.*s
 recend
-reference to a banked address [%lx:%04lx] in the normal address space at %04lxregreloc (%d) is *UNKNOWN*relocation `%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
-reserved cmd %drtnbeg
+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 against `%s' has faulty GOT type 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: %sreserved cmd %drtnbeg
 rtnend: size 0x%08x
-section address (%#Lx) below start of segment (%#Lx)septyp, name: %.*s
+rv%d does not support the `q' extensionrv%d does not support the `zcf' extensionrv%de does not support the `h' extensionsection 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
-shared objectsmall-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 too large; 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 sizesymbolsymbol system version array information:
-term(b): 0x%02xterm_w: 0x%04xthe bfin target does not currently support the generation of copy relocationstype spec for element:
+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 supported only by GNU and FreeBSD targetssymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targetssystem 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 ARM glue '%s' for '%s'unable to find THUMB glue '%s' for '%s'unable to layout unknown load command %#xunable to read in %s section from %Bunable to write unknown load command %#xunaligned bit-string of %s
-uncertain calling convention for non-COFF symbolundefined undefined %s reference in complex symbol: %sunhandled 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
-unknownunknown ETIR command %dunknown errorunknown header byte-order value %#xunknown line command %dunknown operator '%c' in complex symbolunknown source command %dunknown v850 architectureunknown: %xunrecognised MIPS reloc number: %dunrecognized relocation (0x%x)unsupported 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 has a corrupt string table index - ignoringwarning: %B is truncated: expected core file size >= %Lu, found: %lluwarning: %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: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lxwarning: %B: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%xwarning: %B: corrupt no copy on protected size: 0x%xwarning: %B: corrupt stack size: 0x%xwarning: %B: local symbol `%s' has no sectionwarning: %B: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%xwarning: %s exceeds section size
+unhandled relocation %sunknownunknown EGSD subtype %dunknown ETIR command %dunknown ISA extension `%s' in .option arch `%s'unknown 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 valuesv' or `zve64d' or `zve64f' or `zve32fv' or `zve64x' or `zve32xv850 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 LOAD segment with RWX permissionswarning: %pB has a TLS segment with execute permissionwarning: %pB has a corrupt string table indexwarning: %pB has a program header with invalid alignmentwarning: %pB has a section extending past end of filewarning: %pB has a segment extending past end of filewarning: %pB supports interworking, whereas %pB does notwarning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%uwarning: %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: attempt to export undefined symbol `%s'warning: call to non-function symbol %s defined in %Bwarning: discarding dynamic section %swarning: 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 %Bwarning: writing section `%A' at huge (ie negative) file offsetwarning: xdata section corruptwarning: xdata section corrupt
-yesyou are not allowed to define %s in a scriptProject-Id-Version: bfd 2.30.0
-Report-Msgid-Bugs-To: bug-binutils@gnu.org
-POT-Creation-Date: 2018-01-13 13:44+0000
-PO-Revision-Date: 2018-03-18 12:38+0200
-Last-Translator: Javier <fserrador@gmail.com>
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: %s: missing .note.GNU-stack section implies executable stackwarning: %s: requires executable stack (because the .note.GNU-stack section is executable)warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: --plt-localentry is incompatible with power10 pc-relative codewarning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised.warning: NOTE: size discrepancies can cause real problems.  Investigation is advised.warning: 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 normal symbol `%s' in %pB is smaller than %u used by the common definition in %pBwarning: 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: enabling an executable stack because of -z execstack command line optionwarning: file %pB's arch flag %s conflict with target %s,set target arch flag to %swarning: file %pB's arch flag %s conflicts with target ck%s, using %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: privileged spec version 1.9.1 can not be linked with other spec versionswarning: 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: unrecognised arch name '%#x'warning: 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
+x ISA extension `%s' must be set with the versionsyesyou are not allowed to define %s in a scriptzbb' or `zbkbzbc' or `zbkczcb' and `zbazcb' and `zbbzcb' and `zmmul', or `zcb' and `mzfh' and `zfazfh' and `zfa', or `zvfh' and `zfazfh' or `zhinxzfh' or `zvfhzfhmin' and `d', or `zhinxmin' and `zdinxzfhmin' and `q', or `zhinxmin' and `zqinxzfhmin' or `zhinxminzihintntl' and `c', or `zihintntl' and `zcazknd' or `zknezvbbzvbczvkbzvkgzvknedzvknha' or `zvknhbzvksedzvkshzvl*b extensions need to enable either `v' or `zve' extensionProject-Id-Version: bfd 2.41.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2024-01-15 14:55+0000
+PO-Revision-Date: 2024-06-14 15:58+0200
+Last-Translator: Rodrigo LledÃ³ Milanca <rodhos92@gmail.com>
 Language-Team: Spanish <es@tp.org.es>
 Language: es
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 Plural-Forms: nplurals=2; plural=(n != 1);
-X-Generator: Virtaal 0.7.1
+X-Generator: Poedit 3.4.3
 X-Bugs: Report translation errors to the Language-Team address.
-	    TLS: %A	<corrupto: 0x%04lx>	Tabla de ExportaciÃ³n de Direcciones 			Tabla de ExportaciÃ³n de Direcciones 		%08lx
-	DistribuciÃ³n Direccional Exportada InvÃ¡lida rva (0x%lx) o contador de entrada (0x%lx)
-	DistribuciÃ³n de nombres de punteros Invalido rva (0x%lx) o contador de entrada (0x%lx)
-	DistribuciÃ³n Ordinal InvÃ¡lida rva (0x%lx) o contador de entrada (0x%lx)
-	Nombre de la Tabla de Punteros 			Tabla Ordinal 				[%4ld] <desplazamiento corrupto: %lx>
-	Tabla [Nombre Puntero/Ordinal]	%08lx
-	cÃ³digo-base %08lx segmento-de-contenidos (cargable/actual) %08lx/%08lx
-	no-TLS: %A	reubicaciÃ³n %4d desplazamiento %4x [%4lx] %s	vma:  Pista/Ord Nombre-Miembro Unido-A
+	    TLS: %pA	<corrupto: 0x%04lx>	Tabla de direcciones de exportaciÃ³n 			Tabla de direcciones de exportaciÃ³n 		%08lx
+	Tabla de direcciones de exportaciÃ³n no vÃ¡lidas rva (0x%lx) o contador de entrada (0x%lx)
+	Tabla de punteros de nombres no valida rva (0x%lx) o contador de entrada (0x%lx)
+	Tabla de ordinales no vÃ¡lida rva (0x%lx) o contador de entrada (0x%lx)
+	Tabla de punteros de nombres 			Tabla de ordinales 				[%4ld] <desplazamiento corrupto: %lx>
+	Tabla [Puntero de nombre/Ordinal]	%08lx
+	no-TLS: %pA	reubicaciÃ³n %4d desplazamiento %4x [%4lx] %s	vma:  Pista/Ord Nombre-Miembro Unido-A
+
 
 	Nombre DLL: %.*s
 
 
 Reubicaciones de Fichero Base PE (se interpretaron los contenidos de la secciÃ³n .reloc)
 
-      SÃ­mbolo final+1: %-7ld Tipo: %s
+      SÃ­mbolo fin+1: %-7ld  Tipo:  %s
       SÃ­mbolo final+1: %ld
       Primer sÃ­mbolo: %ld
       SÃ­mbolo local: %ld
       Tipo: %s
       enum; sÃ­mbolo final+1: %ld
       struct; sÃ­mbolo final+1: %ld
-      union; sÃ­mbolo final+1: %ld
+      uniÃ³n; sÃ­mbolo final+1: %ld
  matriz versiÃ³n despl: %u
 
 CaracterÃ­sticas 0x%x
@@ -775,77 +832,70 @@ Volcado de %s
 
 SecciÃ³n dinÃ¡mica:
 
-Error: secciÃ³n %s contiene los datos depurados iniciando en direcciÃ³n pero es demasiado pequeÃ±o
+Error: la secciÃ³n %s contiene la direcciÃ³n inicial de los datos de depuraciÃ³n pero es demasiado pequeÃ±a
 
 Encabezado Auxiliar de EjecuciÃ³n
 
-Tabla Exportante de Direcciones -- Base Ordinal %ld
-
-Se localizÃ³ el descriptor de funciÃ³n en la direcciÃ³n de inicio: %04lx
-
-Â¡No estÃ¡ la secciÃ³n reldata! No se decodificÃ³ el descriptor de funciÃ³n.
+Tabla de direcciones de exportaciÃ³n -- Base ordinal %ld
 
 ParticiÃ³n[%d] inicio  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Encabezado del Programa:
 
-TamaÃ±o de la pila para funciones.  Anotaciones: '*' pila mÃ¡x, 't' llamada cola
+TamaÃ±o de la pila para funciones.  Anotaciones: Â«*Â» pila mÃ¡x, Â«tÂ» llamada cola
 
-Las Tablas Exportables (se interpretaron los contenidos de la secciÃ³n %s)
+Las tablas de exportaciÃ³n (se interpretaron los contenidos de la secciÃ³n %s)
 
 
-La Tabla Funcional (se interpretaron %s contenidos de la secciÃ³n)
+La tabla de funciones (se interpretaron los contenidos de la secciÃ³n %s)
 
-La Tabla Funcional (se interpretaron los contenidos de la secciÃ³n .pdata)
+La tabla de funciones (se interpretaron los contenidos de la secciÃ³n .pdata)
 
-Las Tablas Importables (interpretados contenidos seccional %s)
+Las tablas de importaciÃ³n (se interpretaron los contenidos de la secciÃ³n %s)
 
-Hay un directorio depurante dentro de %s en %lx
+Hay un directorio de depuraciÃ³n en %s en %lx
 
 
-Hay un directorio depurante dentro de %s, pero esa secciÃ³n no tiene contenidos
-
-Hay un directorio depurante, pero la secciÃ³n conteniÃ©ndola no pudo ser encontrada
-
+Hay un directorio de depuraciÃ³n en %s, pero esa secciÃ³n no tiene contenidos
 
-Hay un trozo inicial, pero no se puede encontrar la secciÃ³n que lo contiene
+Hay un directorio de depuraciÃ³n, pero no se pudo encontrar la secciÃ³n que la contiene
 
-Hay un segmento de exportaciÃ³n en %s en 0x%lx
+Hay un thunk inicial, pero no se puede encontrar la secciÃ³n que lo contiene
 
-Hay un segmento de exportaciÃ³n en %s, pero no cabe en esa secciÃ³n
+Hay una tabla de exportaciÃ³n en %s en 0x%lx
 
-Hay un segmento exportador dentro de %s, pero es demasiado pequeÃ±a (%d)
+Hay una tabla de exportaciÃ³n en %s, pero no se puede leer el contenido
 
-Hay un segmento exportado en %s, pero esa secciÃ³n no tiene contenidos
+Hay una tabla de exportaciÃ³n en %s, pero es demasiado pequeÃ±a (%d)
 
-Hay un segmento de exportaciÃ³n, pero no se puede encontrar la secciÃ³n que la contiene
+Hay una tabla de exportaciÃ³n, pero no se puede encontrar la secciÃ³n que la contiene
 
-Hay un segmento de importaciÃ³n en %s en 0x%lx
+Hay una tabla de importaciÃ³n en %s en 0x%lx
 
-Hay un segmento importada en %s, pero esa secciÃ³n no tiene contenidos
+Hay una tabla de importaciÃ³n en %s, pero esa secciÃ³n no tiene contenidos
 
 
-Hay un segmento de importaciÃ³n, pero no se puede encontrar la secciÃ³n que la contiene
+Hay una tabla de importaciÃ³n, pero no se puede encontrar la secciÃ³n que la contiene
 
 Referencias de versiÃ³n:
 
 Definiciones de versiÃ³n:
 
-DirecciÃ³n Virtual: %08lx TamaÃ±o del trozo %ld (0x%lx) NÃºmero de composturas %ld
+DirecciÃ³n virtual: %08lx TamaÃ±o de fragmento %ld (0x%lx) NÃºmero de ajustes %ld
 
-ATENCIÃ“N: Datos adicionales dentro en secciÃ³n .rsrc - serÃ¡ ignorado por Ventanas:
+ATENCIÃ“N: Datos adicionales en la secciÃ³n .rsrc - Windows lo ignorarÃ¡:
 
-Tabla [Puntero a Ordinal/Nombre]
+Tabla [Ordinal/Puntero de nombre]
 
 encabezado de ppcboot:
         pc: 0x%08x
     *sin manejar* ord %u
     direcciÃ³n: 0x%08x
     direcciÃ³n: 0x%08x, tamaÃ±o: %u
-    ops: %u, direcciÃ³n: 0x%08x, direcc-pd: 0x%08x
+    marcas: %u, direcciÃ³n: 0x%08x, direcciÃ³n-pd: 0x%08x
     nombre global: %.*s
     lon: %u bits
-    Ã­ndice enlace: %u, insn reemplazo: 0x%08x
+    Ã­ndice enlazamiento: %u, insn reemplazo: 0x%08x
     nombre: %.*s
     pc: 0x%08x
     pc: 0x%08x lÃ­nea: %5u
@@ -853,37 +903,41 @@ encabezado de ppcboot:
     ind psect 2: %u, despl 2: 0x%08x %08x
     ind psect 3: %u, despl 3: 0x%08x %08x
     psect: %u, despl: 0x%08x %08x
-    nom rutina  : %.*s
-   %02u    (tipo: %3u, tam: 4+%3u):    *sin manejar* ord %u
-   Error: la fecha de compilaciÃ³n estÃ¡ truncada
-   Error: la longitud es menor que la longitud de un registro EEOM
-   Error: la longitud es menor que la longitud de un registro EMH
-   Error: el nombre del mÃ³dulo estÃ¡ ausente
-   Error: el nombre de mÃ³dulo es demasiado largo
-   Error: la versiÃ³n de mÃ³dulo estÃ¡ faltando
-   Error: la versiÃ³n del mÃ³dulo es demasiado largo
+    nombre rutina: %.*s
+   %02u    (tipo: %3u, tam: %3u):    *sin manejar* ord %u
+   Longitud errÃ³nea
+   Error: La fecha de compilaciÃ³n estÃ¡ truncada
+   Error: La longitud es menor que la longitud de un registro EEOM
+   Error: La longitud es menor que la longitud de un registro EMH
+   Error: Falta el nombre del mÃ³dulo
+   Error: El nombre del mÃ³dulo es demasiado largo
+   Error: Falta la versiÃ³n del mÃ³dulo
+   Error: La versiÃ³n del mÃ³dulo es demasiado larga
    Error: La longitud del registro es menor que el tamaÃ±o de un registro EMH_MHD
-   Error: longitud mÃ±as larga que espacio restante en registro
    alineaciÃ³n : 2**%u
-   aloj (lon)    : %u (0x%08x)
-   aloj (lon) : %u (0x%08x)
+   asig (lon)    : %u (0x%08x)
+   asig (lon) : %u (0x%08x)
    ident ascii   : %.*s
    ident binaria : 0x%08x
-   bitdistri: 0x%08x (cuenta: %u):
+   mapabit: 0x%08x (cuenta: %u):
    direcciÃ³n cÃ³digo: 0x%08x
-   fecha compil   : %.17s
+   fecha compil.  : %.17s
    compilador : %.*s
    cÃ³digo de completado: %u
    copyright: %.*s
-   declfich: lon: %u, ops: %u, fichid: %u
-   deflineas %u
+   subtipocpu: %#lx%s
+   tipocpu:    %#lx (%s)
+   ficherodecl: lon: %u, marcas: %u, idfichero: %u
+   lineasdef %u
    nombre entidad: %.*s
-   punto entrante: 0x%08x
-   severidad err : %x
+   punto entrada: 0x%08x
+   severidad error: %x
    fichero: %.*s
    nomfichero : %.*s
-   opciones      : 0x%08x   opciones   : 0x%04x   ops: %d, lenguaje: %u, mayor: %u, menor: %u
-   opciones: 0x%04x   alimforma
+   tipoficher: %#lx
+   marcas        : 0x%08x   marcas     : 0x%04x   marcas:     %#lx
+   marcas: %d, lenguaje: %u, mayor: %u, menor: %u
+   marcas: 0x%04x   alimforma
    coinc id      : %x
    despl imagen  : 0x%08x
    nombre lenguaje: %.*s
@@ -891,295 +945,287 @@ encabezado de ppcboot:
    Ã­ndice enlace: %u, nombre procedimiento: %.*s
    Ã­ndice enlace: %u, procedimiento: %.*s
    Ã­ndice enlace: %u, psect: %u, despl: 0x%08x %08x
-   tam reg mÃ¡ximo : %u
+   mÃ¡gico:     %#lx
+   tamaÃ±o mÃ¡x. registro: %u
    nombre mÃ³dulo  : %.*s
-   nom mÃ³dulo : %.*s
+   nombre mÃ³dulo: %.*s
    versiÃ³n mÃ³dulo : %.*s
    nombre        : %.*s
    nombre      : %.*s
    nombre     : %.*s
+   ncmds:      %#lx
    nÃºmero de pares de enlace cond: %u
    nombre objeto : %.*s
    despl: 0x%08x, val: 0x%08x
    descr proc : 0x%08x
    Ã­ndice psect : %u
-   Ã­ndice psect para punto entrante : %u
+   Ã­ndice psect para punto de entrada : %u
    Ã­ndice psect: %u
    despl psect : %u
-   despl psect: 0x%08x
+   despl psect : 0x%08x
    rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u
    setfile %u
    setlnum %u
-   setrect %u
+   setrec %u
    firma: %.*s
-   nivel estruct  : %u
+   tamdords:  %#lx
+   nivel estructura: %u
    despl vector sÃ­mbolo: 0x%08x
-   despl symvec  : 0x%08x
+   despl vecsim  : 0x%08x
    tÃ­tulo: %.*s
-   ops direcciÃ³n transf: 0x%02x
-   psect direcciÃ³n transf: %u
-   direcciÃ³n transf   : 0x%08x
+   marcas direcc transf: 0x%02x
+   psect direcc transf: %u
+   direcciÃ³n transfer : 0x%08x
    vector      : 0x%08x
-   mÃ¡scara ver: 0x%08x
-  %s (lon=%u+%u):
-  %u: tam: %u, opts: 0x%02x, nombre: %.*s
+   mÃ¡scara versiÃ³n: 0x%08x
+   versiÃ³n:    %x
+  %s (lon=%u):
+  %u: tam: %u, marcas: 0x%02x, nombre: %.*s
   EEOM (lon=%u):
   EGSD (lon=%u):
  entrada EGSD %2u (tipo: %u, lon: %u):   EMH %u (lon=%u):   base: 0x%08x %08x, tam: 0x%08x, prot: 0x%08x   base_va : 0x%08x
-  cuenta bit: %u, direcc base: 0x%08x
-  rama            %lu
-  ajuste toc      %lu
-  rama long       %lu
-  ajuste toc long %lu
-  llamada plt     %lu
-  llamada plt toc %lu
-  entrada global %lu  llamadas:
+  cuentabit: %u, direcc base: 0x%08x
+  llamadas:
   chgprtoff : %5u
   codeadroff: %5u, lpfixoff  : %5u
-  compenlace : 0x%08x %08x
-  opcis: 0x%08x
-  iafenl  : 0x%08x %08x
-  imagen %u (%u asientos)
- imagen %u (%u asientos), desplazs.:
+  enlcajuste: 0x%08x %08x
+  marcas: 0x%08x
+  enlaciaf: 0x%08x %08x
+  imagen %u (%u entradas)
+ imagen %u (%u entradas), despls.:
   lppsbfixoff: %5u
-  psect inicio: 0x%08x, long: %u
+  inicio psect: 0x%08x, long: %u
   qdotadroff: %5u, ldotadroff: %5u
   qrelfixoff: %5u, lrelfixoff: %5u
-  requer. desde %s:
+   requerido desde %s:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
-  tamÃ± : %u
-  las marcas de entrada de fichero: %s  las marcas de salida de fichero: %s %08x 0x%08x 64B <vers EABI no reconocido> BPAGE: %u COM COMM Cambiar ProtecciÃ³n (%u entradas):
- Composturas de Referencias de DirecciÃ³n de CÃ³digo:
- DEF EXE FPU soportado requerido:  Primera direcc: 0x%08x 0x%08x
- Cuarta direcc : 0x%08x 0x%08x
- GBL Secuencia de cÃ³digo pegamento BIB Recuperar Referencia Pares Enlazada:
+  tamÃ±o: %u
+  las marcas de entrada de fichero: %s  las marcas de salida de fichero: %s %08x (<desconocido>) 0x%08x 64B <VersiÃ³n EABI no reconocida> <Conjunto de bits de marca no reconocidos> BPAGE: %u COM COMM Cambiar ProtecciÃ³n (%u entradas):
+ Ajustes de referencias de direcciÃ³n de cÃ³digo:
+ DEF EXE Se necesita soporte para FPU:  Primera direcc: 0x%08x 0x%08x
+ Cuarta direcciÃ³n: 0x%08x 0x%08x
+ GBL BIB Ajustes de referencias pares de enlace:
 
- NOMOD NORM SOB PIC QVAL RD REL Registro para restaurar milicÃ³digo Registro para guardar milicÃ³digo Recursos inician en desplazamiento: %#03x
- SHR Segunda direcc: 0x%08x 0x%08x
+ Encabezado de MACH-O:
+ NOMOD NORM OVR PIC QVAL RD REL Recursos inician en desplazamiento: %#03x
+ SHR Segunda direcciÃ³n: 0x%08x 0x%08x
  ImÃ¡genes compartibles:
- Img compartbl : 0x%08x 0x%08x
+ Img compartida: 0x%08x 0x%08x
  Tabla de cadenas inicia en desplazamiento: %#03x
- Tabla: Car: %d, Tiempo: %08lx, Ver: %d/%d, NÃºm Nombres: %d, %d
+ Tabla: Car: %d, Tiempo: %08lx, Ver: %d/%d, Nombres NÃºm: %d, IDs: %d
  Tercera direcc: 0x%08x 0x%08x
- UNI VEC VECEP WEAK WRT [dobles de 64-bit] [BE8] [formato de coma flotante FPA] [LE8] [formato de coma flotante Maverick] [formato flotante VFP] [EABI Version1] [EABI Version2] [EABI Version3] [EABI Version4] [EABI Version5] [XGATE retirando RAM] [abi desconocido] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [posiciÃ³n absoluta] [flotante-d] [los sÃ­mbolos dinÃ¡micos utilizan Ã­ndices de segmento] [fix dep] [flotante pasados en registros de coma flotante] [flotante pasados en registros enteros] [flotante-g] [hard-float ABI] [interoperabilidad activada] [opciÃ³n de interoperabilidad no iniciada] [no admite interoperabilidad] [admite interoperabilidad] [distribuyendo sÃ­mbolos precede a otros] [memoria=modelo de bancos] [memoria=plana] [ABI nuevo] [no hay conjunto abi] [no pic] [no es modo 32bit] [ABI antiguo] [pic] [independiente posicional] [ejecutable reubicable] [soft-float ABI] [FP por software] [segmento de sÃ­mbolos ordenados] [los sÃ­mbolos tiene un prefijo _] [ISA desconocido] [segmento de sÃ­mbolos sin ordenar] [v10 y v32] [v32] alineaciÃ³n de entidades de 8-byte:  GST corrupto
- segmento de mÃ³dulo de depuraciÃ³n   : vbn: %u, tam: %u
- segmento de sÃ­mbolos de depuraciÃ³n : vbn: %u, tam: %u (0x%x)
- info compos rva:  opciones: %04x segmento de sÃ­mbolos globales      : vbn: %u, registros: %u
+ UNI VEC VECEP WEAK WRT [dobles de 64 bits] [BE8] [Suplemento ABI FDPIC] [formato flotante FPA] [LE8] [formato flotante Maverick] [formato flotante VFP] [EABI Version1] [EABI Version2] [EABI Version3] [EABI Version4] [EABI Version5] [CompensaciÃ³n RAM XGATE] [abi desconocido] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [flotante-d] [sÃ­mbolos dinÃ¡micos que usan Ã­ndices de segmento] [fix dep] [flotantes pasados en registros de coma flotante] [flotante-g] [ABI flotante hard] [interoperabilidad activada] [distribuyendo sÃ­mbolos precede a otros] [memoria=modelo de banco] [memoria=plana] [ABI nuevo] [no abi establecido] [no pic] [no es modo 32bit] [ABI antiguo] [pic] [independiente de posiciÃ³n] [ejecutable reubicable] [ABI flotante soft] [FP por software] [tabla de sÃ­mbolos ordenados] [sÃ­mbolos que tienen un prefijo _] [ISA desconocido] [tabla de sÃ­mbolos sin ordenar] [v10 y v32] [v32] alineaciÃ³n de entidades de 8 bytes:  tabla de mÃ³dulo de depuraciÃ³n   : vbn: %u, tam: %u
+ tabla de sÃ­mbolos de depuraciÃ³n : vbn: %u, tam: %u (0x%x)
+ fallÃ³ al convertir la reubicaciÃ³n GOTPCREL contra Â«%sÂ»; reenlace con --no-relax
+ info ajuste rva:  marcas: 0x%04x tabla de sÃ­mbolos globales: vbn: %u, registros: %u
  ident: 0x%08x, nombre: %.*s
  ident: 0x%08x, versis: 0x%08x, ctrl coinc: %u, tam_vectsim: %u
- ident const imagen: %.*s
+ ident imagen comp: %.*s
  ident imagen     : %.*s
- nombre de imagen : %.*s
+ nombre de imagen: %.*s
  tipo imagen: %u (%s) cuenta E/S img: %u, canales nbr: %u, pri req: %08x%08x
  hora enlazado    : %s
- opciones enlazadora: %08x: ident enlazador  : %.*s
- composturas de referencia .address long-word:
- composturas de reubicaciÃ³n long-word:
+ marcas enlace: %08x: ident enlazador  : %.*s
+ ajustes de referencias de .address de palabra larga:
+ ajustes de reubicaciones de palabra larga:
  idmayor: %u, idmenor: %u
  despl mÃ³dulo: 0x%08x, tam: 0x%08x, (%u psects)
  despls: isd: %u, activ: %u, simdep: %u, idimg: %u, parche: %u
- composturas de referencia .address quad-word:
- composturas de reubicaciÃ³n quad-word:
+ ajustes de referencias de .address de palabra cuÃ¡druple:
+ ajustes de reubicaciones de palabra cuÃ¡druple:
  secciÃ³n: base: 0x%08x%08x tam: 0x%08x
  tamaÃ±o de dobles:  tipo: %3u, lon: %3u (en 0x%08x):  tipo de registro EOBJ %u sin manejar
- vbn: %u, pfc: %u, coincctl: %u tipo: %u ( vma:			DirecciÃ³n Inicio DirecciÃ³n Fin    InformaciÃ³n Desenvuelta
- vma:		Inicio   Final    EH       EH       FinPrÃ³log   ExcepciÃ³n
-     		Direcc   Direcc   Asa      Datos    DirecciÃ³n   MÃ¡scara
- vma:		Inicio   PrÃ³logo  FunciÃ³n  Opciones ExcepciÃ³n EH
+ vbn: %u, pfc: %u, coincctl: %u tipo: %u ( vma:			DirecciÃ³n Inicio DirecciÃ³n Fin    Info Desenrollado
+ vma:		Inicio   Final    EH       EH       FinPrÃ³log  ExcepciÃ³n
+     		Direcc   Direcc   Maneja   Datos    DirecciÃ³n  MÃ¡scara
+ vma:		Inicio   PrÃ³logo  FunciÃ³n  Marcas   ExcepciÃ³n EH
      		Direcc   Longitud Longitud 32b exc  Manejador Datos
  vma:            Pista   Fecha     Adelante DLL       Primero
-                 Tabla   Estampa   Cadena   Nombre    Thunk
-#<CÃ³digo de error invÃ¡lido>%03x %*.s  Hoja: Direc: %#08lx, Tam: %#08lx, PÃ¡gCodigo: %d
-%03x %*.s Entrada: %A tiene tanto secciones ordenadas [`%A' en %B] como desordenadas [`%A' en %B]%A tiene secciones tanto ordenadas como desordenadas%A:0x%v lrlive .brinfo (%u) difiere del anÃ¡lisis (%u)
-%A:0x%v no se encuentra en el segmento de funciÃ³n
-%B (%s): marca de secciÃ³n %s (%#lx) ignorado%B y %B son para configuraciones diferentes%B y %B son para nÃºcleos diferentes%B contiene cÃ³digo CRIS v32, incompatible con objetos previos%B contiene cÃ³digo que no es CRIS v32, incompatible con objetos previos%B tiene al mismo tiempo los atributos actuales y antiguos de Tag_MPextension_use%B no estÃ¡ permitido definir %s%B secciÃ³n %A excede el tamaÃ±o de grupo de cabos%B nÃºmero simbÃ³lico %lu hace referencia a la secciÃ³n inexistente SHT_SYMTAB_SHNDX%B emplea indicadores e_flags 0x%lx desconocidos%B(%#Lx): error: no puede crear veneer STM32L4XX. OmisiÃ³n de lÃ­mite por %Ld bytes. No puede codificar intrucciÃ³n de rama. %B(%A): error: llamada a la funciÃ³n sin definir Â«%sÂ»%B(%A): error interno: reubicaciÃ³n peligrosa%B(%A): error interno: error fuera de rango%B(%A): error interno: error desconocido%B(%A): error interno: no se admite el error de reubicaciÃ³n%B(%A): segmento de propiedades invÃ¡lida%B(%A): mÃºltiples modelos TLS no estÃ¡n apoyados%B(%A): reubicaciÃ³n %d tiene un Ã­ndice simbÃ³lico %ld invÃ¡lido%B(%A): sÃ­mbolo de biblioteca compartido %s encontrado mientras efectuaba un enlace estÃ¡tico%B(%A): PID de reubicaciÃ³n %s no segura en %#Lx (frente a %s en %s)%B(%A): aviso: rama larga recubierta utilizada en secciÃ³n con atributo seccional SHF_ARM_PURECODE solo estÃ¡ soportado para objetivos M-profile que implementa la instrucciÃ³n â€œmovwâ€�.%B(%A): aviso: acceso sin alinear al sÃ­mbolo Â«%sÂ» en el Ã¡rea de datos small%B(%A): aviso: acceso sin alinear al sÃ­mbolo Â«%sÂ» en el Ã¡rea de datos small.%B(%A+%#Lx): compostura %s para insn %#x no se admite en un enlace no compartido%B(%A+%#Lx): reubicaciÃ³n %s contra secciÃ³n SEC_MERGE%B(%A+%#Lx): %s reubicaciÃ³n frente a sÃ­mbolo externo Â«%sÂ»%B(%A+%#Lx): reubicaciÃ³n %s no permitida dentro de objeto compartido%B(%A+%#Lx): %s empleado con sÃ­mbolo TLS %s%B(%A+%#Lx): %s utilizado con sÃ­mbolo no-TLS %s%B(%A+%#Lx): reubicaciÃ³n CMEM a Â«%sÂ» es invÃ¡lido, 16 MSB deberÃ­a ser %#x (valor es %#Lx)%B(%A+%#Lx): CMEM reubicando a `%s+%#Lx' es invÃ¡lido, 16 MSB deberÃ­a ser %#x (valor es %#Lx)%B(%A+%#Lx): SÃ³lo se permiten las instrucciones ADD o SUB en las reubicaciones de grupo ALU%B(%A+%#Lx): Desborde superior al dividirse %#Lx para la reubicaciÃ³n de grupo %s%B(%A+%#Lx): no se pueden emitir composturas para Â«%sÂ» en la secciÃ³n de sÃ³lo lectura%B(%A+%#Lx): no puede manipular %s para %s%B(%A+%#Lx): no se pueden alcanzar %s%B(%A+%#Lx): no puede alcanzar %s, recompile con -ffuntion-sections%B(%A+%#Lx): no pudo decodificar instrucciÃ³n para reubicaciÃ³n XTENSA_ASM_SIMPLIFY; posible incoincidencia de configuraciÃ³n%B(%A+%#Lx): no se pudo decodificar la instrucciÃ³n; posible falta de coincidencia de la configuraciÃ³n%B(%A+%#Lx): error: %s con instrucciÃ³n no esperada %#x%B(%A+%#Lx): instrucciÃ³n invÃ¡lida para reubicaciÃ³n TLS %s%B(%A+%#Lx): reubicar frente Â«%sÂ»: error %d%B(%A+%#Lx): desplazamiento de reubicaciÃ³n fuera de rango (tamaÃ±o=%#Lx)%B(%A+%#Lx): instrucciÃ³n ARM '%#lx' inesperada en el trampolÃ­n TLS%B(%A+%#Lx): instrucciÃ³n ARM '%#lx' inesperada referenciada por TLS_GOTDESC%B(%A+%#Lx): instrucciÃ³n Thumb '%#lx' inesperada en el trampolÃ­n TLS%B(%A+%#Lx):instrucciÃ³n Thumb '%#lx' inesperada referenciada por TLS_GOTDESC%B(%A+%#Lx): reparaciÃ³n inesperado para %s reubicaciÃ³n%B(%A+%#Lx): reubicaciÃ³n %s irresoluble frente a sÃ­mbolo `%s'%B(%A+%#Lx): reubicaciÃ³n %s irresoluble frente a sÃ­mbolo `%s'%B(%A+%#lx): Entrada de cabos tiene cadena indexada.%B(%A+%#x): error: carga mÃºltiple detectada en bloque IT no Ãºltima instrucciÃ³n : STM32L4XX no puede ser generada.
-Emplee opciÃ³n gcc -mrestrict-it para generar solo una instrucciÃ³n por bloque IT.
-%B(%A+0x%lx): %d bytes requiriÃ³ para alineamiento para %d-byte frontera, pero solo %d presente%B(%A+0x%lx): Incapaz de vaciar RISCV_PCREL_HI20 reubicando para correspondiente reubicaciÃ³n RISCV_PCREL_LO12%B(%A+0x%lx): esperada reubicaciÃ³n de estilo 16A en 0x%08x insn%B(%A+0x%lx): esperada reubicaciÃ³n de estilo 16D en 0x%08x insn%B(%A+0x%v): se llama a la secciÃ³n %B(%A) que no es de cÃ³digo, anÃ¡lisis incompleto
-%B(%s): aviso: no se activÃ³ la interoperabilidad.
-  primer suceso: %B: llamada ARM a Thumb%B(%s): aviso: no se activÃ³ la interoperabilidad.
-  primer suceso: %B: llamada Thumb a ARM%B(%s): aviso: no se activÃ³ la interoperabilidad.
-  primer suceso: %B: llamada arm a thumb%B(%s): aviso: no se activÃ³ la interoperabilidad.
-  primer suceso: %B: llamada thumb a arm
-  considere reenlazar con --support-old-code activado%B(%s+%#Lx): reubicaciÃ³n %s irresoluble frente al sÃ­mbolo `%s'%B, secciÃ³n %A:
-  reubicaciÃ³n %s no es vÃ¡lida en un objeto compartido; es una confusiÃ³n de opciÃ³n tÃ­pica, recompile con -fPIC%B, secciÃ³n %A:
-  reubicaciÃ³n %s no se deberÃ­a emplearse en un objeto compartido; recompile con -fPIC%B, secciÃ³n %A:
-  el objeto compatible v10/v32 no debe contener una reubicaciÃ³n PIC%B, secciÃ³n %A: No hay PLT para la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ»%B, secciÃ³n %A: No hay PLT ni GOT para la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ»%B, secciÃ³n %A: reubicaciÃ³n %s tiene una referencia sin definir a Â«%sÂ», Â¿tal vez una confusiÃ³n en la declaraciÃ³n?%B, secciÃ³n %A: la reubicaciÃ³n %s  no estÃ¡ permitida para Â«%sÂ», un sÃ­mbolo global con visibilidad predeterminada, Â¿quizÃ¡ una confusiÃ³n en la declaraciÃ³n?%B, secciÃ³n %A: reubicaciÃ³n %s no permitida para sÃ­mbolo global: Â«%sÂ»%B, secciÃ³n %A: reubicaciÃ³n %s no permitida para sÃ­mbolo: Â«%sÂ» el cual se define fuera del programa, Â¿tal vez una confusiÃ³n en la declaraciÃ³n?%B, secciÃ³n %A: reubicaciÃ³n %s sin GOT creado%B, secciÃ³n %A: reubicaciÃ³n %s con adiciÃ³n de direcciÃ³n sin cero %Ld contra el sÃ­mbolo local%B, secciÃ³n %A: reubicaciÃ³n %s con adiciÃ³n %Ld sin ceros contra el sÃ­mbolo Â«%sÂ»%B, secciÃ³n %A: reubicaciÃ³n %s sin resoluciÃ³n contra el sÃ­mbolo Â«%sÂ»%B, secciÃ³n `%A', para el sÃ­mbolo Â«%sÂ»:
-  la reubicaciÃ³n %s no se debe usar en un objeto compartido; recompile con -fPIC%B: reubicaciÃ³n !samegp contra un sÃ­mbolo sin .prologue: %s%B: %#Lx: fatal: la reubicaciÃ³n R_SH_PSHA %Ld no estÃ¡ en el rango -32..32%B: %#Lx: fatal: la reubicaciÃ³n R_SH_PSHL %Ld no estÃ¡ en el rango -32..32%B: %#Lx: fatal: desbordamiento de reubicaciÃ³n durante la relajaciÃ³n%B: %#Lx: fatal: reubicaciÃ³n %s no alineada %#Lx%B: %#Lx: fatal: objetivo de ramificaciÃ³n sin alineaciÃ³n para la reubicaciÃ³n de soporte relajado%B: %#Lx: aviso: R_SH_USES apunta al insn %#x no reconocido%B: %#Lx: aviso: R_SH_USES apunta al insn 0x%x no reconocido%B: %#Lx: aviso: R_V850_LONGCALL apunta al insn %#x no reconocido%B: %#Lx: aviso: R_V850_LONGCALL apunta al insns no reconocido%B: %#Lx: aviso: R_V850_LONGCALL apunta al reloc no reconocido%B: %#Lx: aviso: R_V850_LONGCALL apunta a reubicaciÃ³n %#Lx no reconocido%B: %#Lx: aviso: R_V850_LONGJUMP apunta al insn %#x no reconocido%B: %#Lx: aviso: R_V850_LONGJUMP apunta al insns no reconocido%B: %#Lx: aviso: R_V850_LONGJUMP apunta al reloc no reconocido%B: %#Lx: aviso: desplazamiento de carga R_SH_USES equivocado%B: %#Lx: aviso: desplazamiento R_SH_USES equivocado%B: %#Lx: aviso: contador equivocado%B: %#Lx: aviso: no pudo encontrar la reubicaciÃ³n COUNT esperada%B: %#Lx: aviso: no se pudo encontrar la reubicaciÃ³n esperada%B: %#Lx: aviso: sÃ­mbolo dentro de secciÃ³n inesperada%B: %A tamaÃ±o seccional entrante invÃ¡lido%B: %A no en operaciÃ³n%B: %A puntos pasados finales de selecciÃ³n textual%B: %A+%#Lx: NingÃºn sÃ­mbolo encontrado para INHERIT%B: %A+%#Lx: aviso: reubicaciÃ³n %s contra insn inesperado%B: %A+%#Lx: aviso: reubicaciÃ³n LITERAL contra insn inesperado%B: %A: desbordamiento de reubicaciÃ³n: %#x > 0xffff%B: %s no absoluto%B: %s accedidos ambos como comÃºn e hilo simbÃ³lico local%B: %s: versiÃ³n requerida %d invÃ¡lida%B: %s: versiÃ³n %u invÃ¡lida (mÃ¡ximo %d)%B: %s: desbordamiento superior de reubicaciÃ³n: 0x%lx > 0xffff%B: Â«%sÂ» accedido ambos como un sÃ­mbolo comÃºn e hilo local%B: --in-implib solo compatible para importar bibliotecas Secure Gateway.%B: entrada  .gnu.version_d invÃ¡lida%B: entrada .gnu.version_r invÃ¡lida%B: el subsegmento .got excede los 64K (tamaÃ±o %d)%B: .opd no es una matriz regular de entradas opd%B: no se permite la secciÃ³n .preinit_array en DSO%B: tamaÃ±o de secciÃ³n .reginfo deberÃ­a ser de %d bytes, tamaÃ±o actual es %d%B: uniÃ³n .rsrc fallada: secciÃ³n .rsrc corrupta%B: uniÃ³n .rsrc fallada: tamaÃ±o inesperado .rsrc%B: @gprel reubicado contra el sÃ­mbolo dinÃ¡mico %s%B: @internal ramificado al sÃ­mbolo dinÃ¡mico %s%B: @pcrel reubicado contra el sÃ­mbolo dinÃ¡mico %s%B: la ABI es incompatible con aquella de la emulaciÃ³n seleccionada%B: la ABI es incompatible con esa de la emulaciÃ³n seleccionada:
-  emulaciÃ³n objetivo Â«%sÂ» no coincide con Â«%sÂ»%B: no coincide ABI: se enlaza el mÃ³dulo %s con mÃ³dulos %s previos%B: VersiÃ³n ABI %ld no es compatible con versiÃ³n ABI %ld salida%B: no coincide ASE: se enlaza el mÃ³dulo %s con mÃ³dulos %s previos%B: No coincide la arquitectura con los mÃ³dulos previos%B: las imÃ¡genes BE8 sÃ³lo son vÃ¡lidas en modo big-endian.%B: equivocaciÃ³n de registro reubicable importado: %d%B: DefiniciÃ³n de sÃ­mbolo equivocada: `Main' se estableciÃ³ como %s en lugar de la direcciÃ³n de inicio %s
-%B: reubicaciÃ³n CALL15 en %Lx no contra sÃ­mbolo global%B: reubicaciÃ³n CALL16 en %Lx no contra sÃ­mbolo global%B: no se puede encontrar una reubicaciÃ³n LO16 coincidente contra Â«%sÂ» para %s en %#Lx en la secciÃ³n `%A'%B: no se puede relajar br (%s) a Â«%sÂ» en %#Lx en la secciÃ³n `%A' con tamaÃ±o %#Lx (> 0x1000000).%B: no se puede relajar br en %#Lx en la secciÃ³n `%A'. Utilice brl o ramificaciÃ³n indirecta.%B: No se pueden manejar binarios Alpha comprimidos.
-   Emplee opciones del compilador, o objZ, para generar binarios sin comprimir.%B: No se pueden enlazar juntos los objetos %s y %s.%B: tamaÃ±o de Directorio e Datos (%lx) excede espacio izquierdo dentro de secciÃ³n (%Lx)%B: marca EF_OR1K_NODELAY no coincide con los mÃ³dulos previos%B: Error: Depura Datos finales mÃ¡s allÃ¡ del final del directorio depurante.%B: error: definiciÃ³n mÃºltiple de Â«%sÂ»; el inicio de %s estÃ¡ definido dentro de un fichero enlazado con anterioridad
-%B: Error: search_nds32_elf_blank devuelve nodo equivocado
-%B: fallaba al aÃ±adir el sÃ­mbolo renombrado %s%B: fallaba al encontrar secciÃ³n de informaciÃ³n para la secciÃ³n %d%B: fallado para encontrar secciÃ³n de enlace para secciÃ³n %d%B: fallaba al leer secciÃ³n de datos depurados%B: reubicaciÃ³n de descriptor de funciÃ³n con adiciÃ³n que no es cero%B: error de GAS: insn PTB inesperada con R_SH_PT_16%B: secciÃ³n GNU_MBIN Â«%AÂ» tiene campo sh_info invÃ¡lido: %d%B: desbordamiento de GOT: NÃºmero de reubicaciones con desplazamiento de 8 o 16-bit > %d%B: desbordamiento de GOT: NÃºmero de reubicaciones con desplazamiento de 8-bit > %d%B: reubicaciÃ³n GOT en %#Lx no esperado en ejecutables%B: directiva IMPORT AS para %s concilia un IMPORT AS previo%B: tamaÃ±o de vector ISR no coincide con mÃ³dulos previos, previos %u-byte, actual %u-byte%B: Conjunto de instrucciones no coincide con mÃ³dulos previos%B: error de inconsistencia interna para el valor para
- un registro global colocado por el enlazador: enlazado: %#Lx != relajado: %#Lx%B: tipo reubicante invÃ¡lido exportado: %d%B: Se importÃ³ un tipo de reubicaciÃ³n invÃ¡lido: %d%B: campo sh_link invÃ¡lido (%d) en nÃºmero de secciÃ³n %d%B: directiva LOCAL: El registro $%Ld no es un registro local.  El primer registro global es $%Ld.%B: tabla de descripciÃ³n simbÃ³lica local es NULO cuando estÃ© aplicando reubicaciÃ³n %s frente sÃ­mbolo local%B: detectada reubicaciÃ³n malformada para secciÃ³n %A%B: Se detectÃ³ una reubicaciÃ³n malformada para la secciÃ³n %s%B: OMIT_FP anidado en %A.%B: ningÃºn nÃºcleo para reservar un sÃ­mbolo de %d bytes de longitud
-%B: ningÃºn nÃºcleo para reservar nombre de secciÃ³n %s
-%B: ninguna secciÃ³n de versiÃ³n simbÃ³lica para sÃ­mbolo Â«%sÂ» versionado%B: No hay suficiente espacio para los encabezados del programa, pruebe enlazar con -N%B: Solamente los registros %%g[2367] se pueden declarar utilizando STT_REGISTER%B: Se reconoce el tipo de mÃ¡quina (0x%x) pero no se manipula en el archivo de Formato de ImportaciÃ³n de Bibliotecas%B: Actualmente no se admite la reubicaciÃ³n %s (%d).
-%B: reubicaciÃ³n %s aÃºn no se admite para el sÃ­mbolo %s.%B: Reubicaciones en ELF genÃ©rico (EM: %d)%B: reubicaciÃ³n relativa a SB pero __c6xabi_DSBT_BASE no estÃ¡ definido%B: secciÃ³n SHT_GROUP [Ã­ndice %d] no tiene ninguna secciÃ³n SHF_GROUP%B: sÃ­mbolo especial Â«%sÂ» solo permitido para arquitectura ARMv8-M o posterior.%B: cÃ³digo local ejecutable TLS no se puede ser enlazado dentro de objetos compartidos%B: secciones TLS no son adyacentes:%B: transiciÃ³n TLS desde %s hasta %s contra Â«%sÂ» en %#Lx en la secciÃ³n `%A' fallada%B: reubicaciÃ³n de TOC en %#Lx al sÃ­mbolo Â«%sÂ» sin ninguna entrada TOC%B: La primera secciÃ³n en el segmento PT_DYNAMIC no es la secciÃ³n .dynamic%B: El objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n equivocada (%A)%B: Demasiadas secciones:  %d (>= %d)%B: no se pueden ordenar las reubicaciones - son de tamaÃ±os diferentes%B: no se pueden ordenar las reubicaciones - son de tamaÃ±o desconocido%B: Tipo de importaciÃ³n sin manejar; %x%B: arquitectura %d desconocida%B: Atributo de objeto ARC obligatorio %d desconocido.%B: Atributo de objeto EABI obligatorio %d desconocido%B: Tipo de reubicaciÃ³n %d desconocido
-%B: Tipo seccional desconocido en el fichero a.out.adobe: %x
-%B: OMIT_FP desemparejado en %A.%B: No se reconoce la orden .directive: %s%B: No se reconoce el tipo de nombre de importaciÃ³n; %x%B: No se reconoce el tipo de importaciÃ³n; %x%B: No se reconoce el tipo de mÃ¡quina (0x%x) en el archivo de Formato de ImportaciÃ³n de Bibliotecas%B: Clase de almacenamiento %d no reconocida para %s sÃ­mbolo Â«%sÂ»%B: transiciÃ³n desde %s hasta %s no estÃ¡ admitido%B: Aviso: La instrucciÃ³n Arm BLX apunta a la funciÃ³n Arm Â«%sÂ».%B: Aviso: Se descarta la opciÃ³n seccional IMAGE_SCN_MEM_NOT_PAGED en la secciÃ³n %s%B: Aviso: La instrucciÃ³n Thumb BLX apunta a la funciÃ³n thumb Â«%sÂ».%B: Aviso: el tamaÃ±o de opciÃ³n Â«%sÂ» %u equivocado es mÃ¡s pequeÃ±o que su encabezado%B: Aviso: no se puede determinar la funciÃ³n objetivo para la secciÃ³n de cabo Â«%sÂ»%B: Aviso: mode PLT actualmente no se admite la reubicaciÃ³n%B: objeto compartido XCOFF cuando no se produce salida XCOFF%B: sÃ­mbolo XMC_TCO Â«%sÂ» es clase %d scnlen %Ld%B: __gp no cubre el segmento corto de datos%B: desplazamiento `%A' de %Ld desde `%A' mÃ¡s allÃ¡ que el rango de ADDIUPC%B: se accediÃ³ Â«%sÂ» como un sÃ­mbolo FDPIC y un sÃ­mbolo local de hilo%B: se accediÃ³ Â«%sÂ» como un sÃ­mbolo normal y un sÃ­mbolo FDPIC%B: se accediÃ³ Â«%sÂ» como un sÃ­mbolo normal y un sÃ­mbolo local de hilo%B: `%s' y su sÃ­mbolo especial estÃ¡n en secciones diferentes.%B: Â«%sÂ» tiene nÃºmeros de lÃ­nea pero no una secciÃ³n contenedora%B: Â«%sÂ» en la reubicaciÃ³n del cargador pero no es un sÃ­mbolo del cargador%B: `%s' no-PLT reubica para sÃ­mbolo definido dentro de biblioteca compartida y accedido desde ejecutable (recompilar fichero con -fPIC ?)%B: `ld -r' no se admite con objetos PE MIPS
-%B: sÃ­mbolo estandarizado ausente Â«%sÂ».%B: acceso mÃ¡s allÃ¡ de secciÃ³n combinada (%Ld)%B: aÃ±adir final %s%#x en reubicaciÃ³n %s frente sÃ­mbolo Â«%sÂ» en %#Lx en secciÃ³n `%A' estÃ¡ fuera de rango%B: direcciÃ³n %#Lx estÃ¡ fuera de rango para el fichero Hexadecimal de Intel%B: cabecera aout especifica un nÃºmero de entradas de datos-directorio no vÃ¡lido: %ld%B: intenta emitir contenidos en direcciÃ³n no mÃºltiplo de 4 %#Lx%B: intenta cargar cadenas desde una secciÃ³n no-cadena (nÃºmero %d)%B: intenta mezclar objetos FDPIC y no-FDPIC%B: intenta escribir fuera de tipo de reubicaciÃ³n desconocida%B: sÃ­mbolo XTY_ER Â«%sÂ» equivocado: clase %d scnum %d scnlen %Ld%B: pair/reflo equivocado tras refhi
-%B: direcciÃ³n de reubicaciÃ³n %#Lx equivocada en la secciÃ³n `%A'%B: indexado simbÃ³lico de reubicaciÃ³n equivocado (%#Lx >= %#lx)  para desplazar %#Lx dentro de secciÃ³n `%A'%B: equivocado nombre seccional de reubicaciÃ³n Â«%sÂ»%B: longitud seccional equivocada en ihex_read_section%B: tamaÃ±o equivocado de segmento de cadenas %Lu%B: Ã­ndice de sÃ­mbolos equivocado: %d%B: reubicaciÃ³n base-suma-desplazamiento contra sÃ­mbolo registrador: %s en %A%B: reubicaciÃ³n base-suma-desplazamiento contra sÃ­mbolo registrador: (desconocido) en %A%B: no se puede representar la secciÃ³n `%A' dentro del formato de fichero objeto a.out%B: no se puede representar la secciÃ³n Â«%AÂ» en oasys%B: no se puede representar la secciÃ³n para el sÃ­mbolo Â«%sÂ» en el formato de fichero objeto a.out%B: no puede enlazar mÃ³dulos flotantes-duros con mÃ³dulos flotantes-blandos%B: no se puede reservar el nombre de fichero para el nÃºmero de fichero %d, %d bytes
-%B: no se puede crear la entrada de cabo %s%B: no se puede enlazar el fichero objeto â€˜fdpicâ€™ en un ejecutable que no es fdpic%B: no se puede enlazar el fichero objeto que no es fdpic en un ejecutable fdpic%B: modifica en gp: BRSGP %s%B: clase %d sÃ­mbolo Â«%sÂ» no tiene entradas auxiliares%B: %s compilado -mtune=%s y enlazado con mÃ³dulos compilados con %s -mtune=%s%B: compilado como objeto de 32-bit y %B es de 64-bit%B: compilado como objeto de 64-bit y %B es de 32-bit%B: compilado para un sistema de 64 bit y el objetivo es de 32 bit%B: compilado para un sistema big endian y el objetivo es little endian%B: compilado para un sistema little endian y el objetivo es big endian%B: compilado de forma normal y enlazado con mÃ³dulos compilados con -mrelocatable%B: compilado con %s y enlazado con mÃ³dulos compilados con %s%B: compilado con %s y enlazado con mÃ³dulos que usan reubicaciones que no son pic%B: compilado con -mrelocatable y enlazado con mÃ³dulos compilados de forma normal%B: campo de tamaÃ±o corrupto en el encabezado de la secciÃ³n de grupo: %#Lx%B: contador simbÃ³lico corrupto: %#Lx%B: no se puede encontrar la secciÃ³n de salida %A para la secciÃ³n de entrada %A%B: no se puede leer el contenido de la secciÃ³n `%A'
-%B: no pudo escribir fuera entradas .cranges aÃ±adidas%B: no pudo escribir fuera entradas .cranges ordenadas%B: csect Â«%sÂ» no estÃ¡ contenido en un cierre seccional%B: reubicaciÃ³n GOT directa %s frente a Â«%sÂ» sin  registro base no puede ser empleado cuando se crea un objeto compartido%B: reubicaciÃ³n GOT directa R_386_GOT32X contra Â«%sÂ» sin registrador base no puede ser empleado cuando cree un objeto compartido%B: directiva LOCAL vÃ¡lida sÃ³lo con un registro o un valor absoluto%B: reubicaciÃ³n relativa a dtp contra el sÃ­mbolo dinÃ¡mico %s%B: cabo de exportaciÃ³n %s duplicado%B: la secciÃ³n duplicada `%A' tiene contenido diferente
-%B: la secciÃ³n duplicada `%A' tiene tamaÃ±o diferente
-%B: objeto dinÃ¡mico sin secciÃ³n cargadora .loader%B: reubicaciÃ³n dinÃ¡mica frente a Â«%TÂ» en secciÃ³n de sÃ³lo lectura Â«%AÂ»
-%B: ubicaciÃ³n dinÃ¡mica en secciÃ³n de sÃ³lo lectura `%A'
-%B: se encontrÃ³ un sÃ­mbolo etiqueta de datos dentro de la entrada%B: endianez es incompatible con aquella de la emulaciÃ³n seleccionada%B: funciÃ³n entrante Â«%sÂ» estÃ¡ vacÃ­a.%B: funciÃ³n entrante Â«%sÂ» no de salida.%B: error: ABI no coincide con mÃ³dulos previos.%B: error: alineamiento potencial %s de secciÃ³n Â«%AÂ» es demasiado grande%B: error: no puede crear recubrimiento STM32L4XX.%B: error: no puede establecer _ITB_BASE_%B: error: el cabo de errores Cortex-A8 se aloja en una ubicaciÃ³n insegura%B: error: el cabo de errores Cortex-A8 estÃ¡ fuera de rango (el fichero de entrada es demasiado grande)%B: error: error 835769 de cabo estÃ¡ fuera de rango (fichero entrante demasiado grande)%B: error: error 843419 de cabo estÃ¡ fuera de rango (fichero entrante demasiado grande)%B: error: conjunto de instrucciones no coincide con mÃ³dulos previos.%B: error: segmento PHDR no cubierto por segmento LOAD%B: error: la chapa VFP11 estÃ¡ fuera de rango%B: error: longitud de secciÃ³n atributiva demasiado pequeÃ±a: %ld%B: error: segmento no-cargado %d incluye cabecera de fichero y/o cabecera de programa%B: error: tipo de reubicaciÃ³n %d sin alinear en %#Lx reubicaciÃ³n %#Lx%B: error: tipo de reubicaciÃ³n %d sin alinear en %08Lx reubicaciÃ³n %08Lx%B: error: sÃ­mbolo Â«%sÂ» sin esperado en la secciÃ³n COMDAT%B: error: atributo de objeto EABI obligatorio %d desconocido%B: error: tipo reubicante %d desconocido.%B: fallaba al generar biblioteca importada%B: fatal: sÃ­mbolos genÃ©ricos obtenidos antes de relajar%B: fichero de clase %s es incompatible con %s%B: reubicaciÃ³n relativa a gp contra el sÃ­mbolo dinÃ¡mico %s%B: secciÃ³n agrupada '%A' no tiene contenidos%B: sÃ­mbolo oculto Â«%sÂ» en %B estÃ¡ referenciado por DSO%B: sÃ­mbolo oculto Â«%sÂ» no estÃ¡ definido%B: se descarta la secciÃ³n duplicada `%A'
-%B: tipo de reubicaciÃ³n %d ilegal en direcciÃ³n %#Lx%B: nombre de secciÃ³n ilegal `%A'%B: Ã­ndice simbÃ³lico %ld ilegal en reubicaciones%B: Ã­ndice simbÃ³lico ilegal en reubicaciÃ³n: %ld%B: tipo de mÃ¡quina incompatible. La salida es 0x%x. La entrada es 0x%x%B: tamaÃ±o incorrecto para sÃ­mbolo Â«%sÂ».%B: el sÃ­mbolo indirecto Â«%sÂ» para Â«%sÂ» es un bucle%B: error interno en ihex_read_section%B: error interno, secciÃ³n interna registrada %A tuvo contenidos
-%B: error interno, el segmento simbÃ³lico modificÃ³ el tamaÃ±o desde %d hasta %d words
-%B: el sÃ­mbolo interno Â«%sÂ» en %B estÃ¡ referenciado por DSO%B: el sÃ­mbolo interno Â«%sÂ» no estÃ¡ definido%B: nÃºmero reubicante AArch64 no vÃ¡lido: %d%B: nÃºmero reubicante CR16C no vÃ¡lido: %d%B: nÃºmero reubicante CRIS no vÃ¡lido: %d%B: nÃºmero reubicante D10V no vÃ¡lido: %d%B: nÃºmero reubicante D30V no vÃ¡lido: %d%B: nÃºmero reubicante Epiphany no vÃ¡lido: %d%B: nÃºmero reubicante FR30 no vÃ¡lido: %d%B: nÃºmero reubicante FRV no vÃ¡lido: %d%B: nÃºmero reubicante IP2K no vÃ¡lido: %d%B: nÃºmero reubicante IQ2000 no vÃ¡lido: %d%B: nÃºmero reubicante LM32 no vÃ¡lido: %d%B: nÃºmero reubicante M32C no vÃ¡lido: %d%B: nÃºmero reubicante M32R no vÃ¡lido: %d%B: nÃºmero reubicante M68HC11 no vÃ¡lido: %d%B: nÃºmero reubicante M68HC12 no vÃ¡lido: %d%B: nÃºmero reubicante MEP no vÃ¡lido: %d%B: nÃºmero reubicante METAG no vÃ¡lido: %d%B: nÃºmero reubicante MMIX no vÃ¡lido: %d%B: nÃºmero reubicante MSP430 no vÃ¡lido: %d%B: nÃºmero reubicante MSP430X no vÃ¡lido: %d%B: nÃºmero reubicante MT no vÃ¡lido: %d%B: nÃºmero reubicante Moxie no vÃ¡lido: %d%B: nÃºmero reubicante NDS32 no vÃ¡lido: %d%B: nÃºmero reubicante OR1K no vÃ¡lido: %d%B: nÃºmero reubicante RL78 no vÃ¡lido: %d%B: nÃºmero reubicante RX no vÃ¡lido: %d%B: entrada SHT_GROUP invÃ¡lida%B: nÃºmero reubicante V850 no vÃ¡lido: %d%B: nÃºmero reubicante Visium no vÃ¡lido: %d%B: nÃºmero reubicante XGate no vÃ¡lido: %d%B: nÃºmero reubicante XTENSA no vÃ¡lido: %d%B: nÃºmero reubicante i960 no vÃ¡lido: %d%B: importaciÃ³n de entrada de biblioteca invÃ¡lida: Â«%sÂ».%B: enlace %u invÃ¡lido para la secciÃ³n de reubicaciÃ³n %s (Ã­ndice %u)%B: fichero mmo invÃ¡lido: YZ de lop_end (%ld) no es igual al nÃºmero de tetras al lop_stab precedente (%ld)
-%B: fichero mmo invÃ¡lido: se esperaba YZ = 1 se obtuvo YZ = %d para lop_quote
-%B: fichero mmo invÃ¡lido: se esperaba y = 0, se obtuvo y = %d para lop_fixrx
-%B: fichero mmo invÃ¡lido: se esperaba z = 1 o z = 2, se obtuvo z = %d para lop_fixo
-%B: fichero mmo invÃ¡lido: se esperaba z = 1 o z = 2, se obtuvo z = %d para lop_loc
-%B: fichero mmo invÃ¡lido: se esperaba z = 16 o z = 24, se obtuvo z = %d para lop_fixrx
-%B: fichero mmo invÃ¡lido: campos â€˜yâ€™ y â€˜zâ€™ de lop_stab no cero, y: %d, z: %d
-%B: fichero mmo invÃ¡lido: no se especificÃ³ un nombre de fichero para el nÃºmero %d antes de utilizarse
-%B: fichero mmo invÃ¡lido: el nÃºmero de fichero %d Â«%sÂ», ya se habÃ­a introducido como Â«%sÂ»
-%B: fichero mmo invÃ¡lido: el valor de iniciaciÃ³n para $255 no es `Main'
-%B: fichero mmo invÃ¡lido: el byte inicial del operando word debe ser 0 o 1, se obtuvo %d para lop_fixrx
-%B: fichero mmo invÃ¡lido: lop_end no es el Ãºltimo elemento en el fichero
-%B: fichero mmo invÃ¡lido: cÃ³digo de operaciÃ³n-l `%d' no compatible
-%B: tipo de reubicaciÃ³n %d invÃ¡lido%B: campo de tamaÃ±o invÃ¡lido en el encabezado de la secciÃ³n de grupo: %#Lx%B: sÃ­mbolo especial no vÃ¡lido Â«%sÂ».%B: sÃ­mbolo comÃºn no vÃ¡lido Â«%sÂ».%B: direcciÃ³n de inicio invÃ¡lida para los registros inicializados de longitud %Ld: %#Lx%B: desplazamiento de cadena invÃ¡lido %u >= %Lu para la secciÃ³n Â«%sÂ»%B: segmento simbÃ³lico no vÃ¡lido: sÃ­mbolo duplicado Â«%sÂ»
-%B: omitir demasiado lejos
-%B: nÃºmero de lÃ­nea del desbordamiento superior: 0x%lx > 0xffff%B: se enlaza el mÃ³dulo %s con mÃ³dulos %s previos%B: se enlaza cÃ³digo de 32-bit con cÃ³digo de 64-bit%B: se enlazan ficheros de 64-bit con ficheros de 32-bit%B: se enlaza cÃ³digo especÃ­fico de UltraSPARC con cÃ³digo especÃ­fico de HAL%B: se enlazan ficheros de pic automÃ¡tico con ficheros sin pic automÃ¡tico%B: se enlazan ficheros big-endian con ficheros little-endian%B: se enlazan ficheros de gp constante con ficheros con gp no constante%B: se enlazan ficheros compilados con enteros de 16-bit (-mshort) y otros con enteros de 32-bit%B: se enlazan ficheros compilados con dobles de 32-bit (-fshort-double) y otros con dobles de 64-bit%B: se enlazan ficheros compilados para HCS12, con otros compilados para HC12%B: se enlazan ficheros little endian con ficheros big endian%B: se enlaza cÃ³digo que no es pic en un ejecutable independiente de posiciÃ³n%B: se enlaza deferencias-captura-en-NULL con ficheros que no son de captura%B: reubicaciÃ³n del cargador en la secciÃ³n de sÃ³lo lectura %A%B: reubicaciÃ³n del cargador en la secciÃ³n que no se reconoce `%s'%B: el sÃ­mbolo local Â«%sÂ» en %B estÃ¡ referenciado por DSO%B: XTY_LD mal ubicado Â«%sÂ»%B: falta la secciÃ³n TLS para la reubicaciÃ³n %s contra Â«%sÂ» en %#Lx en la secciÃ³n `%A'.%B: ningÃºn grupo informado para secciÃ³n Â«%AÂ»%B: sin registros inicializados: longitud seccional 0
-%B: ningÃºn sÃ­mbolo encontrado para importar biblioteca%B: encontradas secciones agrupadas no vÃ¡lidas%B: cÃ³digo que no es pic con reubicaciÃ³n imm contra el sÃ­mbolo dinÃ¡mico Â«%sÂ»%B: Ã­ndice simbÃ³licos distinto de cero (%#Lx) para desplazamiento %#Lx en la secciÃ³n `%A' cuando el fichero objeto no tiene ningÃºn segmento simbÃ³lico%B: sin suficiente memoria para reservar espacio para sÃ­mbolos %#Lx de tamaÃ±o %#Lx%B: tamaÃ±o del objeto no coincide con el tamaÃ±o objetivo %B%B: memoria agotada al crear nombre para secciÃ³n vacÃ­a%B: memoria agotada en propiedad _bfd_elf_get_property%B: tamaÃ±o de pÃ¡gina es demasiado grande (0x%x)%B: reubicaciÃ³n relativa a pc contra el sÃ­mbolo dinÃ¡mico %s%B: reubicaciÃ³n relativa a pc contra el sÃ­mbolo dÃ©bil sin definir %s%B: complementos requeridos para manipular objeto lto%B: Â¿Compilado probablemente sin -fPIC?%B: el sÃ­mbolo protegido Â«%sÂ» no estÃ¡ definido%B: reubicaciÃ³n registrada frente sÃ­mbolo no registrado: %s en %A%B: reubicaciÃ³n registrada frente sÃ­mbolo no registrado: (desconocido) en %A%B: reloc %s:%Ld no contenido en csect%B: reubicaciÃ³n contra un Ã­ndice de sÃ­mbolo inexistente: %ld%B: enlace reubicable desde %s hasta %s sin apoyo%B: reubicaciÃ³n %s frente a %s%s Â«%sÂ» no puede emplearse cuando se crea %s%s%B: reubicaciÃ³n %s frente al sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» tiene aÃ±adido algo distinto de cero: %Ld%B: reubicaciÃ³n %s frente al sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» no es manipulada por %s%B: reubicaciÃ³n %s frente al sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» no estÃ¡ apoyado%B: reubicaciÃ³n %s frente a Â«%sÂ» no puede emplearse cuando se crea un objeto compartido%B: reubicaciÃ³n %s frente a Â«%sÂ» no puede emplearse cuando se crea un objeto compartido; recompile con -fPIC%B: reubicaciÃ³n %s frente sÃ­mbolos externos o indefinidos Â«%sÂ» pueden no ser empleados cuando hacen un %s; recompile con -fPIC%B: reubicaciÃ³n %s frente al sÃ­mbolo Â«%sÂ» no se admite en modo x32%B: reubicaciÃ³n %s frente al sÃ­mbolo Â«%sÂ» el cual quizÃ¡ externamente enlazado no puede ser empleada cuando se cra un objeto compartido; recompile con -fPIC%B: reubicaciÃ³n %s no puede utilizarse cuando se crea un objeto compartido; recompile con -fPIC%B: reubicaciÃ³n %s no puede utilizarse cuando se crea un objeto compartido%B: reubicaciÃ³n R_386_GOTOFF contra %s protegida Â«%sÂ» no puede ser utilizada cuando crea un objeto compartido%B: no se puede usar la reubicaciÃ³n R_386_GOTOFF contra %s indefinida Â«%sÂ» cuando se hace un objeto compartido%B: reubicaciÃ³n R_X86_64_GOTOFF64 contra %s protegida Â«%sÂ» puede no ser empleada cuando crea un objeto compartido%B: no se puede usar la reubicaciÃ³n R_X86_64_GOTOFF64  contra %s indefinida Â«%sÂ» cuando se hace un objeto compartido%B: la reubicaciÃ³n en `%A+%#Lx' referencia al sÃ­mbolo Â«%sÂ» con adiciÃ³n sin cero%B: el tamaÃ±o de reubicaciÃ³n no coincide en %B secciÃ³n %A%B: reubicaciones en la secciÃ³n `%A', pero no tiene contenidos%B: secciÃ³n %A lma %#lx ajustado a %#Lx%B: secciÃ³n %A: desbordamiento superior de segmento de cadenas en el desplazamiento %ld%B: la secciÃ³n `%A' no se puede asignar en el segmento %d%B: nÃºmero de entrada de grupo seccional %u estÃ¡ corrupto%B: sh_link [%d] en la secciÃ³n `%A', es incorrecto%B: sh_link de la secciÃ³n `%A' apunta a la secciÃ³n descartada `%A' de `%B'%B: sh_link de la secciÃ³n `%A' apunta a la secciÃ³n quitada `%A' de `%B'%B: segmento de datos short sobredesbordado (%#Lx >= 0x400000)%B: el tamaÃ±o del campo es cero en el encabezado del Formato de ImportaciÃ³n de Bibliotecas%B: compostura de especulaciÃ³n al sÃ­mbolo dinÃ¡mico %s%B: tamaÃ±o de pila especificado y %s establecido%B: cadena que no termina en null en el fichero objeto ILF.%B: cadena muy larga (%ld caracteres, mÃ¡x 65535)%B: apoyo para dinÃ¡mico local no implementado%B: el sÃ­mbolo Â«%sÂ» tiene un tipo csect %d que no se reconoce%B: el sÃ­mbolo Â«%sÂ» tiene smclas %d que no se reconoce%B: el sÃ­mbolo Â«%sÂ» se requiere pero no estÃ¡ presente%B: tomando la direcciÃ³n de funciÃ³n protegida Â«%sÂ» no puede ser hecha cuando crea una biblioteca compartida%B: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n de salida equivocada (%s)%B: demasiados registros iniciados: longitud seccional %Ld%B: Demasiadas secciones (%d)%B: demasiadas secciones: %u%B: reubicaciÃ³n tp-relativa contra el sÃ­mbolo dinÃ¡mico %s%B: incapaz de crear secciÃ³n vacÃ­a simulada%B: no se puede llenar DataDictionary[12] porque falta .idata$5%B: no se puede llenar DataDictionary[1] porque falta .idata$2%B: no se puede llenar DataDictionary[1] porque falta .idata$4%B: no se puede llenar DataDictionary[9] porque falta __tls_used%B: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] porque falta .idata$6%B: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] porque falta .idata$6%B: no se puede encontrar el pegamento ARM Â«%sÂ» para Â«%sÂ»%B: incapaz de encontrar chapa STM32L4XX Â«%sÂ»%B: no se puede encontrar el pegamento THUMB Â«%sÂ» para Â«%sÂ»%B: no se puede encontrar la chapa de VFP11 Â«%sÂ»%B: no se puede encontrar nombre para secciÃ³n vacÃ­a%B: no se puede obtener la secciÃ³n %A descomprimida%B: incapaz de inicializar estado compresivo para secciÃ³n %s%B: incapaz de inicializar estado descompresivo para secciÃ³n %s%B: incapaz de cargar nombre de secciÃ³n COMDAT%B: referencia sin definir al sÃ­mbolo Â«%sÂ»%B: sÃ­mbolo Â«%sÂ» sin definir en la secciÃ³n .opd%B: sÃ­mbolo sin definir en la reubicaciÃ³n R_PPC64_TOCSAVE%B: tipo ATN %Ld inesperado en la parte externa%B: redefiniciÃ³n inesperada del sÃ­mbolo con versiÃ³n indirecta Â«%sÂ»%B: tipo de reubicaciÃ³n %u inesperado en la secciÃ³n .opd%B: tipo inesperado despuÃ©s de ATN%B: reubicaciÃ³n dinÃ¡mica sin manipular contra %s%B: %s sin implementar
-%B: registro ATI %u sin implementar para el sÃ­mbolo %u%B: orden de carga desconocida %#x%B: tipo de reubicaciÃ³n %d desconocido%B: tipo de reubicaciÃ³n %d desconocida para el sÃ­mbolo %s%B: tipo desconocido [%#x] secciÃ³n Â«%sÂ»%B: tipo desconocido [%#x] secciÃ³n Â«%sÂ» en grupo [%A]%B: tipo de reubicaciÃ³n %d desconocida/no admitida%B: nÃºmero reubicante Alpha no reconocido: %d%B: nÃºmero reubicante CR16 no reconocido: %d%B: nÃºmero reubicante CRX no reconocido: %d%B: nÃºmero reubicante I370 no reconocido: %d%B: nÃºmero reubicante MCore no reconocido: %d%B: nÃºmero reubicante MN10300 no reconocido: %d%B: nÃºmero reubicante MicroBlaze no reconocido: %d%B: nÃºmero reubicante PPC no reconocido: %d%B: nÃºmero reubicante PicoJava no reconocido: %d%B: nÃºmero reubicante SH no reconocido: %d%B: nÃºmero reubicante SPU no reconocido: %d%B: nÃºmero reubicante VAX no reconocido: %d%B: reubicaciÃ³n no reconocida (%#x) en la secciÃ³n Â«%AÂ»%B: sÃ­mbolo Â«%sÂ» marcas 0x%x no reconocido%B: llamada no-PIC a IFUNC Â«%sÂ» sin apoyo%B: tipo de reubicaciÃ³n %d no admitido%B: no se admite el tipo de reubicaciÃ³n %i
-%B: no se admite el tipo de reubicaciÃ³n %s%B: tipo de reubicaciÃ³n 0x%02x no admitido%B: tipo de reubicaciÃ³n no admitida: ALPHA_R_GPRELHIGH%B: tipo de reubicaciÃ³n no admitida: ALPHA_R_GPRELLOW%B: secuencia de anchura de carÃ¡cter 0x%02X 0x%02X tras nombre simbÃ³lico iniciada con Â«%sÂ» no admitida
-%B: emplea %s instrucciones mientras que mÃ³dulos anteriores emplean %s instrucciones%B: se usan sÃ­mbolos _-prefijo, pero escribiÃ©ndo el fichero con sÃ­mbolos sin prefijo%B: emplea diferentes campos e_flags (%#x) que mÃ³dulos (%#x) anteriores%B: emplea campos e_flags (%#x) desconocidos diferentes a aquellos de los mÃ³dulos previos (%#x)%B: utiliza instrucciones las cuales son incompatibles con instrucciones utilizadas en mÃ³dulos previos%B: se usan sÃ­mbolos sin prefijo, pero se escribe el fichero con sÃ­mbolos con _-prefijo%B: contador de versiÃ³n (%Ld) no coincide con la cuenta simbÃ³lica (%ld)%B: no se encuentra la versiÃ³n del nodo para el sÃ­mbolo %s%B: visibilidad de sÃ­mbolo Â«%sÂ» ha modificado.%B: aviso de fichero core truncado%B: aviso: %A: desbordamiento de nÃºmero de lÃ­nea: %#x > 0xffff%B: aviso: %s apunta a reloc no reconocido en %#Lx%B: aviso: reubicaciÃ³n %s frente a sÃ­mbolo Â«%sÂ» desde secciÃ³n %A%B: aviso: reubicaciÃ³n %s a %#Lx desde secciÃ³n %A%B: aviso: %s: desbordamiento de nÃºmero de lÃ­nea: 0x%lx > 0xffff%B: aviso: el sÃ­mbolo COMDAT Â«%sÂ» no coincide con el nombre seccional Â«%sÂ»%B: aviso: Se detectÃ³ un segmento cargable vacÃ­o en vaddr=%#Lx, Â¿esto es intencional?%B: aviso: Coincidencia endian con mÃ³dulos previos.%B: aviso: la adiciÃ³n GOT de %Ld a Â«%sÂ» no coincide con la adiciÃ³n previa GOT de %Ld%B: aviso: versiones elf incompatibles %s y %s.%B: aviso: ASEs inconsistentes entre e_flags y .MIPS.abiflags%B: aviso: ABI FP inconsistente entre .gnu.attributes y .MIPS.abiflags%B: aviso: ISA inconsistente entre e_flags y .MIPS.abiflags%B: aviso: Extensiones ISA inconsistente entre e_flags y .MIPS.abiflags%B: aviso: ningÃºn sÃ­mbolo para secciÃ³n Â«%sÂ» encontrado%B: aviso: versiÃ³n de fichero objeto anterior encontrado, por favor recompile con la cadena de herramientas actuales.%B: aviso: adiciÃ³n PLT de %Ld a Â«%sÂ» desde secciÃ³n %A ignorada%B: aviso: Marca inesperada den el campo flags2 de  .MIPS.abiflags (0x%lx)%B: aviso: secciÃ³n asignada Â«%sÂ» no dentro del segmento%B: aviso: se crea un R_NDS32_25_ABS_RELA en un objeto compartido.%B: aviso: reclama tener reubicados 0xffff, sin desbordamiento superior%B: aviso: informaciÃ³n de nÃºmeros de lÃ­nea duplicada para Â«%sÂ»%B: aviso: sÃ­mbolos ilegal en la entrada del nÃºmero de lÃ­nea %d%B: aviso: Ã­ndice de sÃ­mbolos %ld ilegal en reubicaciones%B: aviso: Ã­ndice simbÃ³lico 0x%ld ilegal en las entradas del nÃºmero de lÃ­nea %d%B: aviso: isymMax (%ld) es mayor que ifdMax (%ld)%B: aviso: contador de nÃºmero de lÃ­nea (%#lx) excede el tamaÃ±o (%#lx) de la secciÃ³n%B: aviso: lectura de segmento de nÃºmeros de lÃ­nea fallada%B: aviso: se enlazan ficheros PIC con ficheros que no son PIC%B: aviso: se enlazan ficheros de llamadas ABI con ficheros que no son de llamadas ABI%B: aviso: bucle dentro de dependencias de secciÃ³n detectadas%B: aviso: mÃºltiples tablas sÃ­mbÃ³licas dinÃ¡micas detectadas - ignorando el segmento en secciÃ³n %u%B: aviso: mÃºltiples segmento simbÃ³licos detectados - ignorando el segmento en secciÃ³n %u%B: aviso: reubicaciÃ³n SDA_BASE fallada.%B: aviso: alineamiento de segmento de %#Lx es demasiado grande%B: aviso: no se necesita la alternativa para evitar la errata del STM32L4XX seleccionado para arquitectura objetivo%B: aviso: no se necesita la alternativa para evitar la errata del VFP11 seleccionado para la arquitectura objetivo%B: aviso: no se estableciÃ³ sh_link para la secciÃ³n `%A'%B: aviso: segmento simbÃ³lico es muy grande para mmo, mÃ¡s grande que 65535 words de 32-bit: %d.  Solamente serÃ¡ emitida `Main'.
-%B: aviso: acceso no alineado a la entrada GOT.%B: aviso: acceso de datos pequeÃ±o desalineados para entradas: {%Ld, %Ld, %Ld}, direc = %#Lx, alineam = %#x%B: aviso: atributo de objeto EABI %d desconocido%B: no resolverÃ¡ reubicaciÃ³n TLS en tiempo de ejecuciÃ³n%B:%A%s excede el tamaÃ±o de sobreescritura
-%B:%A: %s y %s debe estar en la misma secciÃ³n de entrada%B:%A: Aviso: reubicaciÃ³n Red Hat obsoleta %B:%A: error: referencias simbÃ³licas %s reubicadas las cuales fueron quitadas para colecciÃ³n de basura.%B:%A: error: intente reenlazar con --gc-keep-exported activado.%B:%A: segmento %s requiere correspondiente ausente %d%B:%A: entrada de tabla %s no alineada por palabra dentro de tabla%B:%A: entrada de mesa %s fuera de mesa%B:%d: EquivocaciÃ³n de suma comprobante en el fichero S-record
-%B:%d: CarÃ¡cter Â«%sÂ» inesperado en el fichero S-record
-%B:%d: contador de byte %d demasiado pequeÃ±o
-%B:%d: carÃ¡cter Â«%sÂ» inesperado en el fichero Hex Intel%B:%s tiene ambas reubicaciones normal y TLS%B:%s secciÃ³n %s: alineamiento 2**%u no representable%B:%u: equivocaciÃ³n de comprobaciÃ³n sumatoria en el fichero Hex Intel (se esperaba %u, se obtuvo %u)%B:%u: equivocaciÃ³n de longitud de registro de direcciÃ³n extendida en el fichero Hex Intel%B:%u: equivocaciÃ³n de longitud de registro de direcciÃ³n lineal extendida en el fichero Hex Intel%B:%u: equivocaciÃ³n de longitud de direcciÃ³n de inicio lineal extendida en el fichero Hex Intel%B:%u: equivocaciÃ³n de longitud de direcciÃ³n de inicio extendida en el fichero Hex Intel%B:%u: no se reconoce el tipo ihex %u en el fichero Hex Intel%C: aviso: la reubicaciÃ³n de Â«%sÂ» referencÃ­a un segmento diferente
-%F%A: fallÃ³ para alinear secciÃ³n
-%F%B: desplazamiento PC-relativo desborda por encima el asiento GOT PLT para `%s'
-%F%B: desbordamiento superior de desplazamiento relativo Pc dentro e asiento PLT para Â«%sÂ»
-%F%B: desbordamiento superior de rama desplazada en entrada PLT para Â«%sÂ»
+                 Tabla   Sello     Cadena   Nombre    Thunk
+#<cÃ³digo de error no vÃ¡lido>%%X%%P: la reubicaciÃ³n %s contra Â«%sÂ» que puede unirse externamente no se puede usar cuando se crea un objeto compartido; recompile con -fPIC
+%%X%%P: reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»
+%03x %*.s  Hoja: Direc: %#08lx, Tam: %#08lx, PÃ¡gCodigo: %d
+%03x %*.s Entrada: %F%P: %pB(%pA): error: es necesaria la secciÃ³n enlazado-a para --gc-sections
+%F%P: %pB(%s): error al abrir el miembro delgado del archivo: %E
+%F%P: %pB: reubicaciÃ³n de copia contra el sÃ­mbolo protegido que no se puede copiar Â«%sÂ»
+%F%P: %pB: reubicaciÃ³n de copia contra el sÃ­mbolo protegido que no se puede copiar Â«%sÂ» en %pB
+%F%P: %pB: no se pudo asignar el mapa de bits DT_RELR de 32 bits
+%F%P: %pB: no se pudo asignar el mapa de bits DT_RELR de 64 bits
+%F%P: %pB: no se pudo asignar la secciÃ³n de reubicaciÃ³n relativa compacta
+%F%P: %pB: no se pudo asignar memoria para la secciÃ³n Â«%pAÂ»
+%F%P: %pB: no se pudo asignar el registro de reubicaciÃ³n relativo
+%F%P: %pB: no se pudieron finalizar las reubicaciones relativas
+%F%P: %pB: la reubicaciÃ³n %s contra el sÃ­mbolo absoluto Â«%sÂ» en la secciÃ³n Â«%pAÂ» no estÃ¡ permitido
+%F%P: %pB: ha cambiado el tamaÃ±o de la secciÃ³n de reubicaciÃ³n relativa compacta: nuevo (%lu) != antiguo (%lu)
+%F%P: No se pudo asignar Â«%pAÂ» a una secciÃ³n de salida. Vuelva a intentarlo sin --enable-non-contiguous-regions.
+%F%P: No se pudo asignar Â«%pAÂ» a una secciÃ³n de salida. Vuelva a intentarlo sin --enable-non-contiguous-regions.
 %F%P: already_linked_table: %E
-%F%P: error de sobrecarga automÃ¡tica: %E
-%F%P: no se puede construir sobrecarga de cabos %E
-
-%F%P: entrada corrupta: %B
-%F%P: el sÃ­mbolo STT_GNU_IFUNC dinÃ¡mico Â«%sÂ» con igualdad de puntero en `%B' no se puede usar al hacer un ejecutable; recompile con -fPIE y reenlace con -pie
-%F%P: fallado al convertir reubicaciÃ³n GOTPCREL; renlaza con --no-relax
-%F%P: fallado al crear secciÃ³n BND PLT
-%F%P: fallado al crear secciÃ³n propietaria GNU
-%F%P: fallado al crear secciÃ³n GOT PLT .eh_frame
-%F%P: fallado al crear secciÃ³n GOT PLT
-%F%P: fallado al crear secciÃ³n GOT
-%F%P: fallado al crear secciÃ³n PLT IBT-activo
-%F%P: fallado al crear secciÃ³n PLT .eh_frame
-%F%P: fallado al crear secciones dinÃ¡micas VxWorks
-%F%P: fallado al crear secciÃ³n ifunc
-%F%P: fallado al crear secciÃ³n PLT .eh_frame
+%F%P: error de superposiciÃ³n automÃ¡tica: %E
+%F%P: no se pueden construir los stubs de superposiciÃ³n %E
+%F%P: entrada corrupta: %pB
+%F%P: secciÃ³n de salida descartada: Â«%pAÂ»
+%F%P: el sÃ­mbolo STT_GNU_IFUNC dinÃ¡mico Â«%sÂ» con igualdad de puntero en Â«%pBÂ» no se puede usar al hacer un ejecutable; recompile con -fPIE y reenlace con -pie
+%F%P: fallado al crear la secciÃ³n de propiedad GNU
+%F%P: fallado al crear la secciÃ³n GOT PLT .eh_frame
+%F%P: fallado al crear la secciÃ³n GOT PLT
+%F%P: fallado al crear la secciÃ³n GOT
+%F%P: fallado al crear la secciÃ³n PLT IBT-activado
+%F%P: fallado al crear la secciÃ³n PLT .eh_frame
+%F%P: fallado al crear la secciÃ³n PLT .sframe
+%F%P: fallado al crear las secciones dinÃ¡micas VxWorks
+%F%P: fallado al crear las secciones ifunc
+%F%P: fallado al crear la segunda secciÃ³n PLT .sframe
+%F%P: fallado al crear la secciÃ³n PLT .eh_frame
+%F%P: no se pudieron dimensionar las reubicaciones relativas
+%F%pA: fallÃ³ al alinear la secciÃ³n
+%F%pB: desbordamiento de desplazamiento relativo a PC en la entrada GOT PLT para Â«%sÂ»
+%F%pB: desbordamiento de desplazamiento relativo a PC en entrada PLT para Â«%sÂ»
+%F%pB: desbordamiento de desplazamiento de rama en la entrada PLT para Â«%sÂ»
 %H se perdiÃ³ el argumento __tls_get_addr, se desactiva la optimizaciÃ³n TLS
 %H el argumento perdiÃ³ __tls_get_addr, se desactiva la optimizaciÃ³n TLS
-%H: %s frente a `%T': error %d
-%H: %s para funciÃ³n `%T' indirecta no admitida
-
-%H: reubicaciones %s optimizada externa a entrada TOC
+%H: %s contra %pT no estÃ¡ admitido
+%H: %s contra Â«%pTÂ»: error %d
+%H: %s para funciÃ³n Â«%pTÂ» indirecta no admitida
+%H: %s fuera de rango
+%H: %s referencia un sÃ­mbolo dinÃ¡mico con sumando distinto de cero
+%H: %s hace referencia a una entrada TOC lejana optimizada
 %H: reubicaciÃ³n contra Â«%sÂ»: error %d
-%H: %s reubica frente al sÃ­mbolo local
-%H: %s reubicaciÃ³n no soportada en bibliotecas compartidas y varios PIE.
-%H: %s empleado con sÃ­mbolo TLS `%T'
-%H: %s empleado con sÃ­mbolo no-TLS `%T'
-%H: R_FRV_FUNCDESC referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es cero
-%H: R_FRV_FUNCDESC_VALUE referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es cero
-%H: no aplicado R_FRV_GETTLSOFF a una instrucciÃ³n call
-%H: no aplicado R_FRV_GETTLSOFF_RELAX a una instrucciÃ³n calll
-%H: no aplicado R_FRV_GOTTLSDESC12 a una instrucciÃ³n lddi
-%H: no aplicado R_FRV_GOTTLSDESCHI a una instrucciÃ³n sethi
-%H: no aplicado R_FRV_GOTTLSDESCLO a una instrucciÃ³n setlo o setlos
-%H: no aplicado R_FRV_GOTTLSOFF12 a una instrucciÃ³n ldi
-%H: no aplicado R_FRV_GOTTLSOFFHI a una instrucciÃ³n sethi
-%H: no aplicado R_FRV_GOTTLSOFFLO a una instrucciÃ³n setlo o setlos
-%H: no aplicado R_FRV_GOTTLSDESC_RELAX a una instrucciÃ³n ldd
-%H: no aplicado R_FRV_TLSMOFFHI a una instrucciÃ³n sethi
-%H: no aplicado R_FRV_TLSOFF_RELAX a una instrucciÃ³n ld
-%H: llama a Â«%TÂ» le falta nop, no puede restaurar toc; (-mcmodel=small toc ajusta cabo)
-%H: llamar a`%T' falta nop, no puede restaurar toc; recompile con -fPIC
+%H: reubicaciÃ³n %s no admitida aquÃ­
+%H: reubicaciÃ³n %s no admitida en bibliotecas compartidas y PIE
+%H: %s usado con el sÃ­mbolo TLS Â«%pTÂ»
+%H: se ha usado %s con un sÃ­mbolo que no es TLS Â«%pTÂ»
+%H: no se ha aplicado R_FRV_GETTLSOFF a una instrucciÃ³n call
+%H: no se ha aplicado R_FRV_GETTLSOFF_RELAX a una instrucciÃ³n calll
+%H: no se ha aplicado R_FRV_GOTTLSDESC12 a una instrucciÃ³n lddi
+%H: no se ha aplicado R_FRV_GOTTLSDESCHI a una instrucciÃ³n sethi
+%H: no se ha aplicado R_FRV_GOTTLSDESCLO a una instrucciÃ³n setlo o setlos
+%H: no se ha aplicado R_FRV_GOTTLSOFF12 a una instrucciÃ³n ldi
+%H: no se ha aplicado R_FRV_GOTTLSOFFHI a una instrucciÃ³n sethi
+%H: no se ha aplicado R_FRV_GOTTLSOFFLO a una instrucciÃ³n setlo o setlos
+%H: no se ha aplicado R_FRV_GOTTLSDESC_RELAX a una instrucciÃ³n ldd
+%H: no se ha aplicado R_FRV_TLSMOFFHI a una instrucciÃ³n sethi
+%H: no se ha aplicado R_FRV_TLSOFF_RELAX a una instrucciÃ³n ld
+%H: a la llamada a Â«%pTÂ» le falta nop, no se puede restaurar toc; (stub de llamada plt)
+%H: a la llamada a Â«%pTÂ» le falta nop, no se puede restaurar toc; (toc guardar/ajustar stub)
 %H: no se pueden emitir reubicaciones dinÃ¡micas en la secciÃ³n de sÃ³lo lectura
-%H: no se pueden emitir composturas en la secciÃ³n de sÃ³lo lectura
-%H: error: %s frente a Â«%sÂ» no un mÃºltiplo de %u
+%H: no se pueden emitir ajustes en la secciÃ³n de sÃ³lo lectura
+%H: error: %s contra Â«%sÂ» no es un mÃºltiplo de %u
 %H: error: %s no un mÃºltiplo de %u
-%H: reparar desbordamiento superior de rama 
-%H: adiciÃ³n distinta de cero en reubicaciÃ³n %s contra Â«%sÂ»
-%H: la reubicaciÃ³n contra Â«%sÂ» referencÃ­a un segmento diferente
+%H: desbordamiento de ajuste de rama
+%H: optimizaciÃ³n got/toc no estÃ¡ admitida para la instrucciÃ³n %s
+%H: sumando distinto de cero en la reubicaciÃ³n %s contra Â«%sÂ»
+%H: la reubicaciÃ³n contra Â«%sÂ» referencia un segmento diferente
 %H: reubicaciÃ³n contra Â«%sÂ»: %s
 %H: reubicaciÃ³n %s para funciÃ³n indirecta %s no admitida
+%H: la reubicaciÃ³n %s devuelve un valor no reconocido %x
 %H: la reubicaciÃ³n referencia un sÃ­mbolo que no estÃ¡ definido en el mÃ³dulo
-%H: la reubicaciÃ³n a `%s+%v' tal vez causÃ³ el error anterior
-%H: optimizaciÃ³n toc no estÃ¡ admitida para instrucciÃ³n %s.
-%H: irresoluble %s frente a `%T'
-%H: reubicaciÃ³n %s irresoluble frente a sÃ­mbolo `%s'
+%H: la reubicaciÃ³n a Â«%s+%vÂ» tal vez causÃ³ el error anterior
+%H: no se admite el tipo de reubicaciÃ³n %u
+%H: %s irresoluble contra Â«%pTÂ»
+%H: reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»
 %H: aviso: %s inesperado ins %#x.
+%H: aviso: la reubicaciÃ³n a Â«%sÂ» referencia un segmento diferente
 %P%F: --relax y -r no se pueden usar juntos
-%P%X: no se pueden leer sÃ­mbolos: %E
-%P%X: segmento de sÃ³lo lectura tiene reubicaciones dinÃ¡micas IFUNC; recompile con -fPIC
-%P%X: un segmento de sÃ³lo lectura tiene reubicaciones dinÃ¡micas.
-%P: %B .opd no permitido dentro de versiÃ³n ABI %d
-%P: %B: %s no estÃ¡ apoyado para `%T'
-%P: %B: no se puede crear la entrada de cabo %s
-%P: %B: la reubicaciÃ³n %s aÃºn no se admite para el sÃ­mbolo %s
-%P: %B: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n de salida errÃ³nea (%s)
-%P: %B: tipo de reubicaciÃ³n inesperado
-%P: %B: tipo de reubicaciÃ³n %d desconocido para `%T'
-%P: %B: tipo de reubicaciÃ³n %d desconocida para el sÃ­mbolo %s
-%P: %B: aviso: reubicaciÃ³n contra Â«%sÂ» en secciÃ³n `%A' de sÃ³lo lectura
-%P: %B: aviso: reubicaciÃ³n en secciÃ³n de sÃ³lo lectura `%A'
-%P: no se definiÃ³ %s en el %s creado por el enlazador
-%P: el desplazamiento %s es demasiado grande para la codificaciÃ³n sdata4 .eh_frame%P: desbordamiento superior de asiento .eh_frame_hdr.
-%P: .eh_frame_hdr refiere a superponiendo varios FDE.
-%P: DW_EH_PE_datarel sin especificar para esta arquitectura.
-%P: codificaciÃ³n FDE en %B(%A) previene creaciÃ³n de distribuciÃ³n .eh_frame_hdr.
-%P: la codificaciÃ³n FDE en %B(%A) previene la creaciÃ³n del segmento .eh_frame_hdr.
-%P: se encontrÃ³ cÃ³digo mÃ¡quina ELF alternativo (%d) en %B, se espera %d
-%P: se fuerza bss-plt por anÃ¡lisis de perfil
-%P: se fuerza bss-plt debido a %B
-%P: no se puede construir la ramificaciÃ³n de cabos Â«%sÂ»
-%P: no se puede encontrar la ramificaciÃ³n de cabo Â«%sÂ»
-%P: no se puede encontrar la entrada opd toc para `%T'
-%P: reubicaciÃ³n copiada contra Â«%TÂ» requiere de enlazado plt flojo; evite establecer LD_BIND_NOW=1 o modernice gcc
-%P: copiar reubicaciÃ³n frente a Â«%TÂ» protegido es peligroso
-%P: cuenta errÃ³nea de la reubicaciÃ³n dinÃ¡mica de %B, secciÃ³n %A
-%P: error en %B(%A); no se crearÃ¡ el segmento .eh_frame_hdr.
-%P: error del segmento enlazada frente a `%T'
-%P: desbordamiento del desplazamiento de stub de ramificaciÃ³n long Â«%sÂ»
-%P: puntos de entrada mÃºltiples: en los mÃ³dulos %B y %B
+%P%X: no se pueden leer los sÃ­mbolos: %E
+%P%X: un segmento de sÃ³lo lectura tiene reubicaciones dinÃ¡micas
+%P: %H: error: %s con instrucciÃ³n inesperada %x
+%P: %pB: %s no estÃ¡ admitido para Â«%pTÂ»
+%P: %pB: nota: el mensaje anterior no tiene en cuenta la recolecciÃ³n de basura del enlazador
+%P: %pB: aviso: falta %s
+%P: %pB: aviso: reubicaciÃ³n contra Â«%sÂ» en secciÃ³n Â«%pAÂ» de sÃ³lo lectura
+%P: %pB: aviso: reubicaciÃ³n en secciÃ³n de sÃ³lo lectura Â«%pAÂ»
+%P: no se puede encontrar la entrada opd toc para Â«%pTÂ»
+%P: la reubicaciÃ³n de copia contra Â«%pTÂ» requiere de enlazado plt diferido; evite establecer LD_BIND_NOW=1 o mejore gcc
+%P: la reubicaciÃ³n de copia contra un Â«%pTÂ» protegido es peligroso
+%P: error de la tabla de enlazamiento contra Â«%pTÂ»
+%P: varios puntos de entrada: en los mÃ³dulos %pB y %pB
 %P: no se admite el enlace reubicable
-%P: los cabos no coinciden con el tamaÃ±o calculado
-%P: sÃ­mbolo Â«%sÂ» tiene st_other invÃ¡lido para versiÃ³n ABI 1
-%P: aviso: --plt-localentry es especialmente peligroso sin compatibilidad ld.so para detectar violaciones ABI.
- 
-%P: aviso: se crea un DT_TEXTREL en un objeto compartido.
-%P: aviso:reubicaciones textuales y funciones indirectas GNU quizÃ¡ resulten dentro de un fallo segmental en tiempo de ejecuciÃ³n
-%X%C: la reubicaciÃ³n de Â«%sÂ» referencÃ­a un segmento diferente
+%P: aviso: las funciones indirectas GNU con DT_TEXTREL podÃ­an producir un fallo de segmento en tiempo de ejecuciÃ³n; recompile con %s
+%P: aviso: se crea un DT_TEXTREL en un PDE
+%P: aviso: se crea un DT_TEXTREL en un PIE
+%P: aviso: se crea un DT_TEXTREL en un objeto compartido
+%P: aviso: las reubicaciones de texto y funciones indirectas GNU pueden producir un fallo de segmento en tiempo de ejecuciÃ³n
+%X%H: %s contra Â«%sÂ»: error: la reubicaciÃ³n se aplica fuera de la secciÃ³n
+%X%H: %s contra Â«%sÂ»: error: la direcciÃ³n de destino de la reubicaciÃ³n es impar
+%X%H: %s contra Â«%sÂ»: error interno: resultado de reubicaciÃ³n inesperado %d
 %X%H: llamada @local a ifunc %s
-%X%H: no puede convertir rama entre modos ISA a JALX: reubicando fuera de lÃ­mite
-%X%H: JALX no soportado para el mismo modo ISA
-%X%H: rama no soportada entre modos ISA
-%X%H: omisiÃ³n no permitido entre modos ISA; considere recompilar con el entrelazado activado
-%X%H: bss-plt no soportado -fPIC ifunc %s
-%X%P: %B(%A): error: reubicaciÃ³n para desplazamiento %V no tiene ningÃºn valor
-%X%P: %B(%A): reubicaciÃ³n Â«%RÂ» sale del rango
-%X%P: %B(%A): reubicaciÃ³n Â«%RÂ» no estÃ¡ soportado
-%X%P: %B(%A): reubicaciÃ³n Â«%RÂ» devuelve un valor no reconocido %x
-%X%P: la secciÃ³n de sobrescritura %A no inicia en una lÃ­nea de cachÃ©.
-%X%P: la secciÃ³n de sobreescritura %A es mÃ¡s grande que una lÃ­nea de cachÃ©.
-%X%P: la secciÃ³n de sobreescritura %A no estÃ¡ en el Ã¡rea de cachÃ©.
-%X%P: las secciones de sobreescritura %A y %A no inician en la misma direcciÃ³n.
-%X%P: pila/lrlive error de anÃ¡lisis: %E
-%X%P: reubicaciones textuales y funciones indirectas GNU resultarÃ¡n dentro de un fallo de segmento en tiempo de ejecuciÃ³n
-%X`%s' referido en la secciÃ³n `%A' de %B: se definiÃ³ en la secciÃ³n descartada `%A' de %B
-se definiÃ³ %s en la entrada toc eliminada%s duplicado
+%X%H: no se puede convertir la rama entre modos ISA a JALX: reubicaciÃ³n fuera de rango
+%X%H: la reubicaciÃ³n %s contra Â«%sÂ» no se puede usar cuando se crea un objeto compartido; recompile con -fPIC
+%X%H: la reubicaciÃ³n a Â«%sÂ» hace referencia a un segmento diferente
+%X%H: JALX no admitido para el mismo modo ISA
+%X%H: rama no admitida entre modos ISA
+%X%H: bss-plt -fPIC ifunc %s no admitido
+%X%H: salto no admitido entre modos ISA. Considere recompilar con el entrelazado activado
+%X%P: %H: la reubicaciÃ³n de %s no se admite para bss-plt
+%X%P: %pB(%pA): error: la reubicaciÃ³n para el desplazamiento %V no tiene ningÃºn valor
+%X%P: %pB(%pA): la reubicaciÃ³n Â«%pRÂ» se sale del rango
+%X%P: %pB(%pA): la reubicaciÃ³n Â«%pRÂ» no estÃ¡ admitida
+%X%P: %pB(%pA): la reubicaciÃ³n Â«%pRÂ» devuelve un valor no reconocido %x
+%X%P: %pB(%pA): la reubicaciÃ³n no estÃ¡ admitida
+%X%P: %pB(%pA): reubicaciÃ³n fuera de rango
+%X%P: %pB: %s contra %pT no es compatible con glibc como reubicaciÃ³n dinÃ¡mica
+%X%P: %pB: error: falta %s
+%X%P: se intentÃ³ un enlace estÃ¡tico de un objeto dinÃ¡mico Â«%pBÂ»
+%X%P: error interno: error fuera de rango
+%X%P: error interno: error desconocido
+%X%P: error interno: error de reubicaciÃ³n no admitida
+%X%P: la secciÃ³n de superposiciÃ³n %pA no inicia en una lÃ­nea de cachÃ©
+%X%P: la secciÃ³n de superposiciÃ³n %pA es mÃ¡s grande que una lÃ­nea de cachÃ©
+%X%P: la secciÃ³n de superposiciÃ³n %pA no estÃ¡ en el Ã¡rea de cachÃ©
+%X%P: las secciones de superposiciÃ³n %pA y %pA no inician en la misma direcciÃ³n
+%X%P: error de anÃ¡lisis de pila/lrlive: %E
+%X%P: las reubicaciones de texto y funciones indirectas GNU producirÃ¡n un fallo de segmento en tiempo de ejecuciÃ³n
+%XÂ«%sÂ» referenciado en la secciÃ³n Â«%pAÂ» de %pB: se definiÃ³ en la secciÃ³n descartada Â«%pAÂ» de %pB
+%pA:0x%v lrlive .brinfo (%u) difiere del anÃ¡lisis (%u)
+%pA:0x%v no encontrado en la tabla de funciones
+%pB (%s): marca de secciÃ³n %s (%#lx) ignorada%pB .opd no permitido en la versiÃ³n ABI %d%pB y %pB son para configuraciones diferentes%pB y %pB son para nÃºcleos diferentes%pB contiene cÃ³digo CRIS v32, incompatible con objetos anteriores%pB contiene cÃ³digo que no es CRIS v32, incompatible con objetos anteriores%pB tiene al mismo tiempo los atributos actuales y antiguos de Tag_MPextension_use%pB no tiene permitido definir %s%pB secciÃ³n %pA excede el tamaÃ±o de grupo de stubs%pB el nÃºmero de sÃ­mbolo %lu hace referencia a la secciÃ³n inexistente SHT_SYMTAB_SHNDX%pB usa long double de 64 bits, %pB usa long double de 128 bits%pB usa ABI de vector AltiVec, %pB usa ABI de vector SPE%pB usa long double de IBM, %pB usa long double de IEEE%pB usa flotante hard de precisiÃ³n doble, %pB usa flotante hard de precisiÃ³n simple%pB usa flotante hard, %pB usa flotante soft%pB usa r3/r4 para devoluciones de estructura pequeÃ±a, %pB usa memoria%pB usa e_flags 0x%lx desconocidos%pB(%pA): error: llamada a una funciÃ³n sin definir Â«%sÂ»%pB(%pA): error: faltan reubicaciones internas para la secciÃ³n de reubicaciÃ³n secundaria%pB(%pA): error: la entrada de la tabla de reubicaciÃ³n %zu estÃ¡ vacÃ­a%pB(%pA): error: la reubicaciÃ³n secundaria %zu es de un tipo desconocido%pB(%pA): error: la reubicaciÃ³n secundaria %zu hace referencia a un sÃ­mbolo eliminado%pB(%pA): error: la reubicaciÃ³n secundaria %zu hace referencia a un sÃ­mbolo que falta%pB(%pA): error: la secciÃ³n de reubicaciÃ³n secundaria tiene entradas de tamaÃ±o no estÃ¡ndar%pB(%pA): error: la secciÃ³n de reubicaciÃ³n secundaria tiene entradas de tamaÃ±o cero%pB(%pA): error: Â¡la secciÃ³n de reubicaciÃ³n secundaria estÃ¡ vacÃ­a!%pB(%pA): error: secciÃ³n de reubicaciÃ³n secundaria procesada dos veces%pB(%pA): el Ã­ndice de la secciÃ³n de informaciÃ³n no se puede configurar porque la secciÃ³n no estÃ¡ en la salida%pB(%pA): el Ã­ndice de la secciÃ³n de informaciÃ³n no es vÃ¡lido%pB(%pA): error interno: reubicaciÃ³n peligrosa%pB(%pA): error interno: error fuera de rango%pB(%pA): error interno: error desconocido%pB(%pA): error interno: error de reubicaciÃ³n no admitida%pB(%pA): tabla de propiedades no vÃ¡lida%pB(%pA): la secciÃ³n de enlace no se puede configurar porque el fichero de salida no tiene una tabla de sÃ­mbolos%pB(%pA): no se admite el uso de varios modelos TLS%pB(%pA): la reubicaciÃ³n %d tiene un Ã­ndice de sÃ­mbolo %ld no vÃ¡lido%pB(%pA): la reubicaciÃ³n %zu tiene un Ã­ndice de sÃ­mbolo %lu no vÃ¡lido%pB(%pA): se ha encontrado con un sÃ­mbolo de biblioteca compartida %s mientras se efectuaba un enlace estÃ¡tico%pB(%pA): aviso: los intermediarios de rama larga usados en la secciÃ³n con atributo de secciÃ³n SHF_ARM_PURECODE sÃ³lo estÃ¡n admitidos para objetivos M-profile que implementan la instrucciÃ³n movw%pB(%pA): aviso: acceso desalineado al sÃ­mbolo Â«%sÂ» en el Ã¡rea de datos pequeÃ±os%pB(%pA): aviso: acceso a datos pequeÃ±os desalineados de tipo %d%pB(%pA+%#lx): la entrada de stabs tiene un Ã­ndice de cadena no vÃ¡lido%pB(%pA+%#x): error: carga mÃºltiple detectada en instrucciÃ³n de bloque IT que no es el Ãºltimo: no se puede generar el intermediario de STM32L4XX. Use la opciÃ³n de gcc -mrestrict-it para generar sÃ³lo una instrucciÃ³n por bloque IT%pB(%pA+0x%lx): se esperaba una reubicaciÃ³n de estilo 16A en el insn 0x%08x%pB(%pA+0x%lx): se esperaba una reubicaciÃ³n de estilo 16D en el insn 0x%08x%pB(%pA+0x%v): llamada a la secciÃ³n %pB(%pA) que no es de cÃ³digo, anÃ¡lisis incompleto
+%pB(%s): aviso: no se activÃ³ la interoperabilidad. Primer suceso: %pB: %s llama a %s%pB, secciÃ³n %pA:
+  la reubicaciÃ³n %s no es vÃ¡lida en un objeto compartido; es una confusiÃ³n de opciÃ³n tÃ­pica, recompile con -fPIC%pB, secciÃ³n %pA: no hay PLT para la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ»%pB, secciÃ³n %pA: no hay PLT ni GOT para la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ»%pB, secciÃ³n %pA: la reubicaciÃ³n %s tiene una referencia sin definir a Â«%sÂ», Â¿tal vez una confusiÃ³n en la declaraciÃ³n?%pB, secciÃ³n %pA: la reubicaciÃ³n %s no estÃ¡ permitida para Â«%sÂ», un sÃ­mbolo global con visibilidad predeterminada, Â¿quizÃ¡ una confusiÃ³n en la declaraciÃ³n?%pB, secciÃ³n %pA: la reubicaciÃ³n %s no estÃ¡ permitida para sÃ­mbolo global: Â«%sÂ»%pB, secciÃ³n %pA: la reubicaciÃ³n %s no estÃ¡ permitida para el sÃ­mbolo: Â«%sÂ» el cual se define fuera del programa, Â¿tal vez es una confusiÃ³n en la declaraciÃ³n?%pB, secciÃ³n %pA: la reubicaciÃ³n %s no se deberÃ­a usar en un objeto compartido; recompile con -fPIC%pB, secciÃ³n %pA: se creÃ³ una reubicaciÃ³n %s sin GOT%pB, secciÃ³n %pA: reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»%pB, secciÃ³n %pA: el objeto compatible v10/v32 no debe contener una reubicaciÃ³n PIC%pB, secciÃ³n Â«%pAÂ», para el sÃ­mbolo Â«%sÂ»: la reubicaciÃ³n %s no se debe usar en un objeto compartido; recompile con -fPIC%pB: reubicaciÃ³n !samegp contra un sÃ­mbolo sin .prologue: %s%pB: %pA tamaÃ±o de secciÃ³n de entrada no vÃ¡lido%pB: %pA desordenado%pB: %pA puntos despuÃ©s del final de la secciÃ³n de texto%pB: %pA: desbordamiento de reubicaciÃ³n: %#x > 0xffff%pB: %s (desplaz: 0x%v, info: 0x%v) contra Â«%sÂ» para la secciÃ³n Â«%pAÂ» en %pB
+%pB: %s (desplaz: 0x%v, info: 0x%v, sumando: 0x%v) sobre Â«%sÂ» para la secciÃ³n Â«%pAÂ» en %pB
+%pB: la marca %s no coincide con los mÃ³dulos anteriores%pB: sÃ­mbolo local %s en el Ã­ndice %lu (>= sh_info de %lu)%pB: %s no absoluto%pB: no se admite %s%pB: Â«%sÂ» ha accedido como ambos un sÃ­mbolo comÃºn y local de hilo%pB: %s: versiÃ³n requerida %d no vÃ¡lida%pB: %s: versiÃ³n %u no vÃ¡lida (mÃ¡x. %d)%pB: %s: desbordamiento de reubicaciÃ³n: 0x%lx > 0xffff%pB: Â«%sÂ» ha accedido como ambos un sÃ­mbolo comÃºn y local de hilo%pB: --in-implib sÃ³lo se admite para bibliotecas de importaciÃ³n Secure Gateway%pB: entrada .gnu.version_d no vÃ¡lida%pB: entrada .gnu.version_r no vÃ¡lida%pB: el subsegmento .got excede los 64K (tamaÃ±o %d)%pB: .opd no es una matriz regular de entradas opd%pB: no se permite la secciÃ³n .preinit_array en DSO%pB: fallo de uniÃ³n .rsrc: secciÃ³n .rsrc corrupta%pB: fallo de uniÃ³n .rsrc: tamaÃ±o de .rsrc inesperado%pB: reubicaciÃ³n @gprel contra el sÃ­mbolo dinÃ¡mico %s%pB: rama @internal al sÃ­mbolo dinÃ¡mico %s%pB: reubicaciÃ³n @pcrel contra el sÃ­mbolo dinÃ¡mico %s%pB: ABI es incompatible con el de la emulaciÃ³n seleccionada%pB: ABI es incompatible con el de la emulaciÃ³n seleccionada:
+  la emulaciÃ³n objetivo Â«%sÂ» no coincide con Â«%sÂ»%pB: no coincide ABI: enlazando el mÃ³dulo %s con mÃ³dulos %s anteriores%pB: la versiÃ³n ABI %ld no es compatible con la versiÃ³n ABI %ld de salida%pB: no coincide ASE: enlazando el mÃ³dulo %s con mÃ³dulos %s anteriores%pB: Ajustando rama en 0x%V hacia Â«%sÂ» en la secciÃ³n %s
+%pB: las imÃ¡genes BE8 sÃ³lo son vÃ¡lidas en el modo big-endian%pB: C_STAT no es compatible con XCOFF64%pB: No se puede crear la entrada de stub Â«%sÂ»%pB: No se puede manejar el tamaÃ±o del valor de reubicaciÃ³n de %d%pB: reubicaciÃ³n de descriptor de funciÃ³n con sumando distinto de cero%pB: la secciÃ³n GNU_MBIN Â«%pAÂ» tiene campo sh_info no vÃ¡lido: %d%pB: desbordamiento de GOT: nÃºmero de reubicaciones con desplazamiento de 8 o 16 bits > %d%pB: desbordamiento de GOT: nÃºmero de reubicaciones con desplazamiento de 8 bits > %d%pB: el tamaÃ±o del vector ISR no coincide con mÃ³dulos anteriores, anterior %u bytes, actual %u bytes%pB: El nÃºmero de sÃ­mbolos en el fichero de entrada ha aumentado de %lu a %u
+%pB: Reubicaciones en ELF genÃ©rico (EM: %d)%pB: reubicaciÃ³n relativa a SB pero __c6xabi_DSBT_BASE no estÃ¡ definido%pB: la secciÃ³n SHT_GROUP [Ã­ndice %d] no tiene ninguna secciÃ³n SHF_GROUP%pB: el cÃ³digo local ejecutable TLS no se puede enlazar en objetos compartidos%pB: reubicaciÃ³n TLS %s contra el sÃ­mbolo sin definir Â«%sÂ»%pB: las secciones TLS no son adyacentes:%pB: la entrada TOC Â«%sÂ» tiene una reubicaciÃ³n R_TLSML que no se dirige a sÃ­ misma%pB: La primera secciÃ³n en el segmento PT_DYNAMIC no es la secciÃ³n .dynamic%pB: No se puede manejar el Ã­ndice de secciÃ³n %x en el sÃ­mbolo ELF.  Utilizando ABS en su lugar.%pB: objeto compartido XCOFF cuando no se produce salida XCOFF%pB: __gp no cubre el segmento corto de datos%pB: Â«%sÂ» accediÃ³ como un sÃ­mbolo FDPIC y como un sÃ­mbolo local de hilo%pB: Â«%sÂ» accediÃ³ como un sÃ­mbolo normal y como un sÃ­mbolo FDPIC%pB: Â«%sÂ» accediÃ³ como un sÃ­mbolo normal y como un sÃ­mbolo local de hilo%pB: Â«%sÂ» y su sÃ­mbolo especial estÃ¡n en secciones diferentes%pB: Â«%sÂ» tiene nÃºmeros de lÃ­nea pero no una secciÃ³n de cierre%pB: Â«%sÂ» en la reubicaciÃ³n del cargador pero no es un sÃ­mbolo del cargador%pB: reubicaciÃ³n Â«%sÂ» no-PLT para sÃ­mbolo definido en biblioteca compartida y accedido desde el ejecutable (Â¿ recompilar el fichero con -fPIC ?)%pB: sÃ­mbolo estÃ¡ndar Â«%sÂ» ausente%pB: el sumando debe ser cero para las reubicaciones de got%pB: el sumando debe ser cero para las reubicaciones de plt%pB: ajustando un FileAlignment no vÃ¡lido%pB: ajustando SectionAlignment no vÃ¡lido%pB: no coincide la arquitectura con los mÃ³dulos anteriores%pB: intento de cargar cadenas desde una secciÃ³n sin cadenas (nÃºmero %d)%pB: intento de mezclar objetos FDPIC y no FDPIC%pB: intento de escribir un tipo de reubicaciÃ³n desconocido%pB: se ha importado un registro de reubicaciones incorrecto: %d%pB: nombre de secciÃ³n de reubicaciÃ³n incorrecto Â«%sÂ»%pB: longitud de secciÃ³n incorrecta en ihex_read_section%pB: Ã­ndice de sÃ­mbolo incorrecto: %d%pB: reubicaciÃ³n base-mÃ¡s-desplazamiento contra el sÃ­mbolo de registro: %s en %pA%pB: reubicaciÃ³n base-mÃ¡s-desplazamiento contra el sÃ­mbolo de registro: (desconocido) en %pA%pB: no se puede representar la secciÃ³n Â«%pAÂ» en un formato de fichero objeto a.out%pB: no se puede representar la secciÃ³n para el sÃ­mbolo Â«%sÂ» en el formato de fichero objeto a.out%pB: no se pueden enlazar los mÃ³dulos %s con los mÃ³dulos %s%pB: no se puede enlazar RVE con otro objetivo%pB: no se puede enlazar un objeto ABI diferente.%pB: no se puede asignar el nombre de fichero para el nÃºmero de fichero %d, %d bytes
+%pB: no se puede asignar memoria para las entradas GOT locales%pB: no se puede crear la entrada de stub %s%pB: no se puede exportar el sÃ­mbolo interno Â«%sÂ».%pB: no se pueden manejar binarios Alpha comprimidos. Use marcas del compilador, o objZ, para generar binarios sin comprimir%pB: no se puede enlazar el fichero objeto fdpic en un ejecutable que no es fdpic%pB: no se puede enlazar el fichero objeto que no es fdpic en un ejecutable fdpic%pB: no se pueden enlazar juntos los objetos %s y %s%pB: cambio en gp: BRSGP %s%pB: la clase %d sÃ­mbolo Â«%sÂ» no tiene entradas auxiliares%pB: %s compilado -mtune=%s y enlazado con mÃ³dulos compilados %s -mtune=%s%pB: compilado para un sistema de 64 bits y el objetivo es de 32 bits%pB: compilado para un sistema big endian y el objetivo es little endian%pB: compilado para un sistema little endian y el objetivo es big endian%pB: compilado de forma normal y enlazado con mÃ³dulos compilados con -mrelocatable%pB: compilado con %s y enlazado con mÃ³dulos compilados con %s%pB: compilado con %s y enlazado con mÃ³dulos que usan reubicaciones que no son pic%pB: compilado con -mrelocatable y enlazado con mÃ³dulos compilados de forma normal%pB: rama condicional al sÃ­mbolo no definido Â«%sÂ» no permitido%pB: no se pudo encontrar la secciÃ³n de salida %pA para la secciÃ³n de entrada %pA%pB: no se pudieron leer los contenidos de la secciÃ³n Â«%pAÂ»
+%pB: csect Â«%sÂ» no estÃ¡ contenido en un cierre de secciÃ³n%pB: la reubicaciÃ³n GOT directa %s contra Â«%sÂ» sin registro base no se puede usar cuando se crea un objeto compartido%pB: la reubicaciÃ³n GOT directa R_386_GOT32X contra Â«%sÂ» sin registro base no se puede usar cuando se crea un objeto compartido%pB: directiva LOCAL vÃ¡lida sÃ³lo con un registro o un valor absoluto%pB: reubicaciÃ³n relativa a dtp contra el sÃ­mbolo dinÃ¡mico %s%pB: stub de exportaciÃ³n %s duplicado%pB: la secciÃ³n duplicada Â«%pAÂ» tiene contenidos diferentes
+%pB: la secciÃ³n duplicada Â«%pAÂ» tiene tamaÃ±o diferente
+%pB: objeto dinÃ¡mico sin secciÃ³n .loader%pB: reubicaciÃ³n dinÃ¡mica contra Â«%pTÂ» en la secciÃ³n de sÃ³lo lectura Â«%pAÂ»
+%pB: reubicaciÃ³n dinÃ¡mica contra un sÃ­mbolo local en la secciÃ³n de sÃ³lo lectura Â«%pAÂ»
+%pB: reubicaciÃ³n dinÃ¡mica en la secciÃ³n de sÃ³lo lectura Â«%pAÂ»
+%pB: la endianidad es incompatible con la de la emulaciÃ³n seleccionada%pB: la funciÃ³n de entrada Â«%sÂ» estÃ¡ vacÃ­a%pB: funciÃ³n de entrada Â«%sÂ» no de salida%pB: error: ABI no coincide con mÃ³dulos anteriores%pB: error: el stub de erratas del Cortex-A8 estÃ¡ asignado en una ubicaciÃ³n insegura%pB: error: el stub de erratas del Cortex-A8 estÃ¡ fuera de rango (el fichero de entrada es demasiado grande)%pB: error: el segmento PHDR no estÃ¡ cubierto por el segmento LOAD%pB: error: el intermediario de VFP11 estÃ¡ fuera de rango%pB: error: la alineaciÃ³n de potencia %d de la secciÃ³n Â«%pAÂ» es demasiado grande%pB: error: secciÃ³n de atributo Â«%pAÂ» demasiado grande: %#llx%pB: error: la longitud de secciÃ³n del atributo es demasiado pequeÃ±a: %ld%pB: error: no se puede crear el intermediario de STM32L4XX%pB: error: los datos de depuraciÃ³n terminan mÃ¡s allÃ¡ del final del directorio de depuraciÃ³n%pB: error: stub de errata 835769 fuera de rango (fichero de entrada demasiado grande)%pB: error: stub de errata 843419 fuera de rango (fichero de entrada demasiado grande)%pB: error: el conjunto de instrucciones no coincide con mÃ³dulos anteriores%pB: error: definiciÃ³n mÃºltiple de Â«%sÂ»; el inicio de %s estÃ¡ definido en un fichero enlazado con anterioridad%pB: error: el segmento que no es de carga %d incluye una cabecera de fichero y/o cabecera de programa%pB: error: search_nds32_elf_blank informa de un nodo incorrecto%pB: error: sÃ­mbolo Â«%sÂ» inesperado en la secciÃ³n COMDAT%pB: error: atributo de objeto EABI obligatorio %d desconocido%pB: se esperaba un Ã­ndice de sÃ­mbolo en el rango 0..%lu pero se encontrÃ³ un sÃ­mbolo local con Ã­ndice %lu%pB: no se pudo encontrar la secciÃ³n de informaciÃ³n para la secciÃ³n %d%pB: no se pudo encontrar la secciÃ³n de enlace para la secciÃ³n %d%pB: no se pudo generar la biblioteca de importaciÃ³n%pB: no se pudo leer la secciÃ³n de datos de depuraciÃ³n%pB: fatal: se han recuperado sÃ­mbolos genÃ©ricos antes de relajar%pB: clase de fichero %s incompatible con %s%pB: reubicaciÃ³n gotoff contra el sÃ­mbolo dinÃ¡mico %s%pB: reubicaciÃ³n relativa a gp contra el sÃ­mbolo dinÃ¡mico %s%pB: la secciÃ³n de grupo Â«%pAÂ» no tiene contenidos%pB: el sÃ­mbolo oculto Â«%sÂ» en %pB estÃ¡ referenciado por DSO%pB: el sÃ­mbolo oculto Â«%sÂ» no estÃ¡ definido%pB: se ignora la secciÃ³n duplicada Â«%pAÂ»
+%pB: nombre de secciÃ³n ilegal Â«%pAÂ»%pB: Ã­ndice de sÃ­mbolo %ld ilegal en reubicaciones%pB: tipo de mÃ¡quina incompatible. La salida es 0x%x. La entrada es 0x%x%pB: tamaÃ±o incorrecto para el sÃ­mbolo Â«%sÂ»%pB: el sÃ­mbolo indirecto Â«%sÂ» para Â«%sÂ» es un bucle%pB: el conjunto de instrucciones no coincide con mÃ³dulos anteriores%pB: error interno en ihex_read_section%pB: error interno, la secciÃ³n interna de registro %pA tenÃ­a contenidos
+%pB: error interno, la tabla de sÃ­mbolos modificÃ³ su tamaÃ±o desde %d hasta %d palabras
+%pB: el sÃ­mbolo interno Â«%sÂ» en %pB estÃ¡ referenciado por DSO%pB: el sÃ­mbolo interno Â«%sÂ» no estÃ¡ definido%pB: NumberOfRvaAndSizes no vÃ¡lido%pB: entrada no vÃ¡lida en secciÃ³n SHT_GROUP [%u]%pB: entrada de biblioteca de importaciÃ³n no vÃ¡lida: Â«%sÂ». El sÃ­mbolo deberÃ­a ser absoluto, global y referido a funciones Thumb%pB: enlace %u no vÃ¡lido para la secciÃ³n de reubicaciÃ³n %s (Ã­ndice %u)%pB: fichero mmo no vÃ¡lido: YZ de lop_end (%ld) no es igual al nÃºmero de tetras del lop_stab anterior (%ld)
+%pB: fichero mmo no vÃ¡lido: se esperaba YZ = 1 se obtuvo YZ = %d para lop_quote
+%pB: fichero mmo no vÃ¡lido: se esperaba y = 0, se obtuvo y = %d para lop_fixrx
+%pB: fichero mmo no vÃ¡lido: se esperaba z = 1 o z = 2, se obtuvo z = %d para lop_fixo
+%pB: fichero mmo no vÃ¡lido: se esperaba z = 1 o z = 2, se obtuvo z = %d para lop_loc
+%pB: fichero mmo no vÃ¡lido: se esperaba z = 16 o z = 24, se obtuvo z = %d para lop_fixrx
+%pB: fichero mmo no vÃ¡lido: campos Â«yÂ» y Â«zÂ» de lop_stab distintos de cero, y: %d, z: %d
+%pB: fichero mmo no vÃ¡lido: no se especificÃ³ un nombre de fichero para el nÃºmero %d antes de usarse
+%pB: fichero mmo no vÃ¡lido: el nÃºmero de fichero %d Â«%sÂ», ya se habÃ­a introducido como Â«%sÂ»
+%pB: fichero mmo no vÃ¡lido: el valor de iniciaciÃ³n para $255 no es Â«MainÂ»
+%pB: fichero mmo no vÃ¡lido: el byte inicial del operando word debe ser 0 o 1, se obtuvo %d para lop_fixrx
+%pB: fichero mmo no vÃ¡lido: lop_end no es el Ãºltimo elemento en el fichero
+%pB: fichero mmo no vÃ¡lido: lopcode Â«%dÂ» no admitido
+%pB: campo sh_link no vÃ¡lido (%d) en nÃºmero de secciÃ³n %d%pB: sÃ­mbolo especial no vÃ¡lido Â«%sÂ». Debe ser un sÃ­mbolo de funciÃ³n global o dÃ©bil%pB: sÃ­mbolo estÃ¡ndar no vÃ¡lido Â«%sÂ». Debe ser un sÃ­mbolo de funciÃ³n global o dÃ©bil%pB: tabla de sÃ­mbolos no vÃ¡lida: sÃ­mbolo duplicado Â«%sÂ»
+%pB: desplazamiento de versiÃ³n no vÃ¡lido %lx (mÃ¡x. %lx)%pB: desbordamiento del nÃºmero de lÃ­nea: 0x%lx > 0xffff%pB: se enlaza el mÃ³dulo %s con mÃ³dulos %s anteriores%pB: se enlaza cÃ³digo de 32 bits con cÃ³digo de 64 bits%pB: se enlazan ficheros de 64 bits con ficheros de 32 bits%pB: se enlaza cÃ³digo especÃ­fico de UltraSPARC con cÃ³digo especÃ­fico de HAL%pB: se enlazan ficheros con pic automÃ¡tico con ficheros sin pic automÃ¡tico%pB: se enlazan ficheros big-endian con ficheros little-endian%pB: se enlazan ficheros con gp constante con ficheros con gp no constante%pB: se enlazan ficheros compilados para enteros de 16 bits (-mshort) y otros para enteros de 32 bits%pB: se enlazan ficheros compilados para doble de 32 bits (-fshort-double) y otros para doble de 64 bits%pB: se enlazan ficheros compilados para HCS12 con otros compilados para HC12%pB: se enlazan ficheros little endian con ficheros big endian%pB: se enlaza cÃ³digo que no es pic en un ejecutable independiente de posiciÃ³n%pB: se enlaza captura de desreferencia NULL con ficheros que no son de captura%pB: reubicaciÃ³n de cargador en secciÃ³n de sÃ³lo lectura %pA%pB: reubicaciÃ³n de cargador en secciÃ³n no reconocida Â«%sÂ»%pB: el sÃ­mbolo local Â«%sÂ» en %pB estÃ¡ referenciado por DSO%pB: la tabla de descriptores de sÃ­mbolos locales serÃ¡ NULL al aplicar la reubicaciÃ³n %s contra el sÃ­mbolo local%pB: conflicto de marca de mÃ¡quina con el objetivo%pB: detectada reubicaciÃ³n mal formada para la secciÃ³n %pA%pB: se detectÃ³ una reubicaciÃ³n mal formada para la secciÃ³n %s%pB: XTY_LD mal ubicado Â«%sÂ»%pB: OMIT_FP anidado en %pA%pB: ningÃºn nÃºcleo para asignar un sÃ­mbolo de %d bytes de longitud%pB: no hay informaciÃ³n del grupo para la secciÃ³n Â«%pAÂ»%pB: no hay registros inicializados; longitud de secciÃ³n 0
+%pB: no se encontrÃ³ ningÃºn sÃ­mbolo para la biblioteca de importaciÃ³n%pB: ninguna secciÃ³n de versiÃ³n de sÃ­mbolo para el sÃ­mbolo Â«%sÂ» versionado%pB: no se han encontrado secciones de grupo vÃ¡lidas%pB: referencia no canÃ³nica a la funciÃ³n canÃ³nica protegida Â«%sÂ» en %pB%pB: cÃ³digo que no es pic con reubicaciÃ³n imm contra el sÃ­mbolo dinÃ¡mico Â«%sÂ»%pB: reubicaciÃ³n no-pic contra el sÃ­mbolo %s%pB: no hay suficiente espacio para los encabezados del programa, intente enlazar con -N%pB: no hay suficiente informaciÃ³n de versiÃ³n%pB: sÃ³lo los registros %%g[2367] se pueden declarar usando STT_REGISTER%pB: memoria agotada al crear el nombre para la secciÃ³n vacÃ­a%pB: memoria agotada en _bfd_elf_get_property%pB: contador de desbordamiento de reubicaciÃ³n demasiado pequeÃ±o%pB: reubicaciÃ³n relativa a pc contra el sÃ­mbolo dinÃ¡mico %s%pB: reubicaciÃ³n relativa a pc contra el sÃ­mbolo dÃ©bil sin definir %s%pB: complemento necesario para manejar el objeto lto%pB: Â¿Probablemente compilado sin -fPIC?%pB: el sÃ­mbolo protegido Â«%sÂ» no estÃ¡ definido%pB: se reconoce el tipo de mÃ¡quina (0x%x) pero no se maneja en el archivo de Formato de ImportaciÃ³n de Bibliotecas%pB: reubicaciÃ³n de registro contra un sÃ­mbolo que no es de registro: %s en %pA%pB: reubicaciÃ³n de registro contra un sÃ­mbolo que no es de registro: (desconocida) en %pA%pB: reubicaciÃ³n %#x no admitida%pB: reubicaciÃ³n contra un Ã­ndice de sÃ­mbolo inexistente: %ld%pB: enlace reubicable desde %s hasta %s no admitido%pB: la reubicaciÃ³n %s contra %s%s Â«%sÂ» no se puede usar cuando se crea %s%s%pB: la reubicaciÃ³n %s contra el sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» no es manejado por %s%pB: la reubicaciÃ³n %s contra el sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» no estÃ¡ admitida%pB: la reubicaciÃ³n %s contra Â«%sÂ» no se puede usar cuando se crea un objeto compartido%pB: la reubicaciÃ³n %s contra Â«%sÂ» no se puede usar cuando se crea un objeto compartido; recompile con -fPIC%pB: la reubicaciÃ³n %s contra el sÃ­mbolo absoluto Â«%sÂ» no se puede usar cuando se crea un objeto compartido%pB: la reubicaciÃ³n %s contra el sÃ­mbolo externo o sin definir Â«%sÂ» no se puede usar cuando se crea un %s; recompile con -fPIC%pB: la reubicaciÃ³n %s contra el sÃ­mbolo no absoluto Â«%sÂ» no se puede usar en RV32 cuando se crea un objeto compartido%pB: la reubicaciÃ³n %s contra el sÃ­mbolo no absoluto Â«%sÂ» no se puede usar en RV64 cuando se crea un objeto compartido%pB: la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ» no se admite en el modo x32%pB: la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ» que puede unirse externamente no se puede usar cuando se crea un objeto compartido; recompile con -fPIC%pB: la reubicaciÃ³n %s no se puede usar cuando se crea un objeto compartido; recompile con -fPIC%pB: la reubicaciÃ³n %s no se puede usar cuando se crea un objeto compartido%pB: desbordamiento de reubicaciÃ³n %s 0x%lx%pB: reubicaciÃ³n %s desplazamiento a la derecha %d error 0x%lx%pB: la reubicaciÃ³n R_386_GOTOFF contra %s protegida Â«%sÂ» no se puede usar cuando se crea un objeto compartido%pB: no se puede usar la reubicaciÃ³n R_386_GOTOFF contra %s sin definir Â«%sÂ» cuando se crea un objeto compartido%pB: reubicaciÃ³n R_X86_64_GOTOFF64 contra %s protegida Â«%sÂ» no se puede usar cuando se crea un objeto compartido%pB: no se puede usar la reubicaciÃ³n R_X86_64_GOTOFF64 contra %s sin definir Â«%sÂ» cuando se crea un objeto compartido%pB: el tamaÃ±o de reubicaciÃ³n no coincide en %pB secciÃ³n %pA%pB: reubicaciones en ELF genÃ©rico (EM: %d)%pB: reubicaciones en la secciÃ³n Â«%pAÂ», pero no tiene contenidos%pB: secciÃ³n %pA: desbordamiento de tabla de cadenas en el desplazamiento %ld%pB: la secciÃ³n %s estÃ¡ comprimida con zstd, pero BFD no estÃ¡ construido con soporte para zstd%pB: secciÃ³n Â«%pAÂ»: entrada VTENTRY corrupta%pB: la secciÃ³n Â«%pAÂ» no se puede asignar en el segmento %d%pB: el nÃºmero de entrada del grupo de secciÃ³n %u estÃ¡ corrupto%pB: sh_link [%d] en la secciÃ³n Â«%pAÂ» es incorrecto%pB: sh_link de la secciÃ³n Â«%pAÂ» apunta a la secciÃ³n descartada Â«%pAÂ» de Â«%pBÂ»%pB: sh_link de la secciÃ³n Â«%pAÂ» apunta a la secciÃ³n eliminada Â«%pAÂ» de Â«%pBÂ»%pB: el tamaÃ±o del campo es cero en el encabezado del Formato de ImportaciÃ³n de Bibliotecas%pB: el sÃ­mbolo especial Â«%sÂ» sÃ³lo estÃ¡ permitido para la arquitectura ARMv8-M o posterior%pB: ajuste de especulaciÃ³n al sÃ­mbolo dinÃ¡mico %s%pB: tamaÃ±o de pila especificado y %s establecido%pB: cadena que no termina en null en el fichero objeto ILF%pB: la compatibilidad con dinÃ¡mica local no estÃ¡ implementada%pB: el sÃ­mbolo Â«%sÂ» tiene un tipo de csect %d no reconocido%pB: el sÃ­mbolo Â«%sÂ» tiene smclas %d no reconocidas%pB: el sÃ­mbolo Â«%sÂ» es necesario pero no estÃ¡ presente%pB: el sÃ­mbolo indica superposiciÃ³n (no admitida)%pB: el nombre del sÃ­mbolo excede la longitud mÃ¡xima dada de %d%pB: no se puede tomar la direcciÃ³n de la funciÃ³n protegida Â«%sÂ» cuando se crea una biblioteca compartida%pB: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n de salida incorrecta (%s)%pB: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n incorrecta (%pA)%pB: demasiadas secciones (%d)%pB: demasiadas secciones: %d (>= %d)%pB: demasiadas secciones: %u%pB: reubicaciÃ³n relativa a tp contra el sÃ­mbolo dinÃ¡mico %s%pB: no se puede comprimir la secciÃ³n %s%pB: no se puede crear una secciÃ³n vacÃ­a simulada%pB: no se puede descomprimir la secciÃ³n %s%pB: no se puede llenar DataDictionary[12] porque falta .idata$5%pB: no se puede llenar DataDictionary[1] porque falta .idata$2%pB: no se puede llenar DataDictionary[1] porque falta .idata$4%pB: no se puede llenar DataDictionary[9] porque falta __tls_used%pB: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] porque falta .idata$6%pB: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] porque falta .idata$6%pB: no se puede encontrar el intermediario de %s Â«%sÂ»%pB: no se puede encontrar el nombre para la secciÃ³n vacÃ­a%pB: no se puede obtener la secciÃ³n %pA descomprimida%pB: no se puede cargar el nombre de la secciÃ³n COMDAT%pB: no se pueden ordenar las reubicaciones - son de tamaÃ±os diferentes%pB: no se pueden ordenar las reubicaciones - son de tamaÃ±o desconocido%pB: referencia sin definir al sÃ­mbolo Â«%sÂ»%pB: sÃ­mbolo Â«%sÂ» sin definir en la secciÃ³n .opd%pB: sÃ­mbolo sin definir en la reubicaciÃ³n R_PPC64_TOCSAVE%pB: redefiniciÃ³n inesperada del sÃ­mbolo con versiÃ³n indirecta Â«%sÂ»%pB: tipo de reubicaciÃ³n %u inesperado en la secciÃ³n .opd%pB: reubicaciÃ³n dinÃ¡mica sin manejar contra %s%pB: tipo de importaciÃ³n sin manejar; %x%pB: valor de mÃ¡quina sparc no manejado Â«%luÂ» detectado durante el procesamiento de escritura%pB: arquitectura %s desconocida%pB: orden de carga desconocida %#x%pB: atributo de objeto ARC obligatorio %d desconocido%pB: atributo de objeto EABI obligatorio %d desconocido%pB: tipo de reubicaciÃ³n %d desconocido%pB: tipo desconocido [%#x] secciÃ³n Â«%sÂ»%pB: tipo desconocido [%#x] secciÃ³n Â«%sÂ» en grupo [%pA]%pB: OMIT_FP desemparejado en %pA%pB: no se reconoce el tipo de mÃ¡quina (0x%x) en el archivo de Formato de ImportaciÃ³n de Bibliotecas%pB: no se reconoce el tipo de nombre de importaciÃ³n; %x%pB: no se reconoce el tipo de importaciÃ³n; %x%pB: tipo de reubicaciÃ³n no reconocido %#x en la secciÃ³n Â«%pAÂ»%pB: clase de almacenamiento %d no reconocida para el sÃ­mbolo %s Â«%sÂ»%pB: tamaÃ±o de reubicaciÃ³n AOUT no admitido: %d%pB: arquitectura %#x no admitida%pB: mach bfd no admitido %#lx%pB: no se admite el tipo de reubicaciÃ³n bfd %#x%pB: mach no admitido %#x%pB: llamada no-PIC a IFUNC Â«%sÂ» no admitida%pB: no se admite el tipo de reubicaciÃ³n%pB: no se admite el tipo de reubicaciÃ³n %#x%pB: no se admite el tipo de reubicaciÃ³n %s%pB: se ha exportado un tipo de reubicaciÃ³n no admitido: %#x%pB: se ha importado un tipo de reubicaciÃ³n no admitido: %#x%pB: no se admite el tipo de reubicaciÃ³n: %#x%pB: swap_aux_in no admitido para la clase de almacenamiento %#x%pB: swap_aux_out no admitido para la clase de almacenamiento %#x%pB: transiciÃ³n desde %s hasta %s no admitida%pB: secuencia amplia de caracteres 0x%02X 0x%02X no admitida despuÃ©s del nombre de sÃ­mbolo que comienza con Â«%sÂ»
+%pB: usa %s instrucciones mientras que mÃ³dulos anteriores usan %s instrucciones%pB: se usan sÃ­mbolos con _-prefijo, pero se escribe el fichero con sÃ­mbolos sin prefijo%pB: usa campos e_flags (%#x) diferentes a los mÃ³dulos anteriores (%#x)%pB: usa campos e_flags (%#x) desconocidos diferentes a aquellos de los mÃ³dulos anteriores (%#x)%pB: usa instrucciones que son incompatibles con instrucciones usadas en mÃ³dulos anteriores%pB: se usan sÃ­mbolos sin prefijo, pero se escribe el fichero con sÃ­mbolos con _-prefijo%pB: no se encuentra el nodo de versiÃ³n para el sÃ­mbolo %s%pB: la visibilidad de sÃ­mbolo Â«%sÂ» ha cambiado%pB: aviso: fichero de nÃºcleo truncado%pB: aviso: %pA: desbordamiento de nÃºmero de lÃ­nea: %#x > 0xffff%pB: aviso: la instrucciÃ³n BLX %s apunta a la funciÃ³n %s Â«%sÂ»%pB: aviso: reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ» desde la secciÃ³n %pA%pB: aviso: %s no compatible en modo compartido%pB: aviso: %s: desbordamiento de nÃºmero de lÃ­nea: 0x%lx > 0xffff%pB: aviso: BTI activado por -z force-bti cuando todas las entradas no tienen BTI en la secciÃ³n NOTA.%pB: aviso: el sÃ­mbolo COMDAT Â«%sÂ» no coincide con el nombre de secciÃ³n Â«%sÂ»%pB: aviso: la generaciÃ³n PLT RVE no es compatible%pB: aviso: R_RISCV_SUB_ULEB128 con sumando distinto de cero, reconstruya con binutils 2.42 o superior%pB: aviso: TLS dÃ©bil estÃ¡ definido en la implementaciÃ³n y es posible que no funcione como se esperaba%pB: aviso: la secciÃ³n asignada Â«%sÂ» no estÃ¡ en el segmento%pB: aviso: el tamaÃ±o incorrecto de la opciÃ³n Â«%sÂ» %u es mÃ¡s pequeÃ±o que su encabezado%pB: aviso: no se puede determinar la funciÃ³n objetivo para la secciÃ³n de stub Â«%sÂ»%pB: aviso: afirma tener reubicaciones 0xffff, sin desbordamiento%pB: aviso: informaciÃ³n de nÃºmero de lÃ­nea duplicada para Â«%sÂ»%pB: aviso: falta de coincidencia endian con mÃ³dulos anteriores%pB: aviso: ignorando la marca de secciÃ³n %s en la secciÃ³n %s%pB: aviso: sÃ­mbolo ilegal en la entrada del nÃºmero de lÃ­nea %d%pB: aviso: Ã­ndice de sÃ­mbolo %ld ilegal en reubicaciones%pB: aviso: Ã­ndice de sÃ­mbolo 0x%lx ilegal en la entrada con nÃºmero de lÃ­nea %d%pB: aviso: versiones elf incompatibles %s y %s%pB: aviso: ASEs inconsistentes entre e_flags y .MIPS.abiflags%pB: aviso: ABI FP inconsistente entre .gnu.attributes y .MIPS.abiflags%pB: aviso: ISA inconsistente entre e_flags y .MIPS.abiflags%pB: aviso: extensiones ISA inconsistentes entre e_flags y .MIPS.abiflags%pB: aviso: isymMax (%ld) es mayor que ifdMax (%ld)%pB: aviso: fallÃ³ la lectura de la tabla de nÃºmeros de lÃ­nea%pB: aviso: se enlazan ficheros PIC con ficheros que no son PIC%pB: aviso: se enlazan ficheros de llamadas ABI con ficheros que no son de llamadas ABI%pB: aviso: se ha detectado un bucle en dependencias de secciÃ³n%pB: aviso: se han detectado varias tablas de sÃ­mbolos dinÃ¡micos - ignorando la tabla en la secciÃ³n %u%pB: aviso: se han detectado varias tablas de sÃ­mbolos - ignorando la tabla en la secciÃ³n %u%pB: aviso: no se ha encontrado ningÃºn sÃ­mbolo para la secciÃ³n Â«%sÂ»%pB: aviso: se ha encontrado una versiÃ³n del fichero objeto anterior, recompile con la cadena de herramientas actual%pB: aviso: la reubicaciÃ³n de SDA_BASE ha fallado%pB: aviso: se ha encontrado una secciÃ³n de reubicaciÃ³n secundaria Â«%sÂ» para la secciÃ³n %pA - ignorando%pB: aviso: la soluciÃ³n alternativa de erratas seleccionada STM32L4XX no es necesaria para la arquitectura objetivo%pB: aviso: la soluciÃ³n alternativa de erratas seleccionada VFP11 no es necesaria para la arquitectura objetivo%pB: aviso: la tabla de sÃ­mbolos es demasiado grande para mmo, mÃ¡s grande que 65535 palabras de 32 bits: %d.  Solamente se emitirÃ¡ Â«MainÂ».
+%pB: aviso: el modo thumb-1 de generaciÃ³n PLT no es compatible actualmente%pB: aviso: opciÃ³n Â«%sÂ» truncada%pB: aviso: no se puede asignar ninguna secciÃ³n al segmento PT_GNU_RELRO%pB: aviso: acceso no alineado a la entrada GOT%pB: aviso: marca inesperada en el campo flags2 de .MIPS.abiflags (0x%lx)%pB: aviso: atributo de objeto EABI %d desconocido%pB: aviso: win32pstatus %s de tamaÃ±o %lu bytes es demasiado pequeÃ±o%pB: no resolverÃ¡ la reubicaciÃ³n TLS en tiempo de ejecuciÃ³n%pB: win32pstatus NOTE_INFO_MODULE de tamaÃ±o %lu es demasiado pequeÃ±o para contener un nombre de tamaÃ±o %u%pB: auxtype %#x errÃ³neo para la clase de almacenamiento %#x%pB:%.8s: RVA truncado%pB:%.8s: secciÃ³n debajo de la base de imÃ¡genes%pB:%d: suma de comprobaciÃ³n incorrecta en el fichero S-record%pB:%d: cuenta en bytes %d demasiado pequeÃ±a%pB:%d: carÃ¡cter Â«%sÂ» inesperado en el fichero Intel Hex%pB:%d: carÃ¡cter Â«%sÂ» inesperado en el fichero S-record%pB:%pA%s excede el tamaÃ±o de superposiciÃ³n
+%pB:%pA: %s y %s deben estar en la misma secciÃ³n de entrada%pB:%pA: error: intentando escribir sobre el final de la secciÃ³n%pB:%pA: error: intentando escribir la secciÃ³n en un bÃºfer vacÃ­o%pB:%pA: error: la reubicaciÃ³n hace referencia al sÃ­mbolo %s que se eliminÃ³ por recolecciÃ³n de basura%pB:%pA: error: intente reenlazar con --gc-keep-exported activado%pB:%pA: a la tabla %s le falta el %s correspondiente%pB:%pA: la entrada %s de la tabla no estÃ¡ alineada a palabras dentro de la tabla%pB:%pA: entrada de tabla %s fuera de la tabla%pB:%pA: aviso: se ha detectado una reubicaciÃ³n Red Hat obsoleta %s contra: %s%pB:%s tiene ambas reubicaciones normal y TLS%pB:%s secciÃ³n %s: alineaciÃ³n 2**%u no representable%pB:%u: suma de comprobaciÃ³n incorrecta en el fichero Intel Hex (se esperaba %u, se obtuvo %u)%pB:%u: longitud de registro de direcciÃ³n extendida incorrecta en el fichero Intel Hex%pB:%u: longitud de registro de direcciÃ³n lineal extendida incorrecta en el fichero Intel Hex%pB:%u: longitud de direcciÃ³n de inicio lineal extendida incorrecta en el fichero Intel Hex%pB:%u: longitud de direcciÃ³n de inicio extendida incorrecta en el fichero Intel Hex%pB:%u: no se reconoce el tipo ihex %u en el fichero Intel Hex%pB[%pA]: no hay secciÃ³n de salida para el espacio %pAfalta la coincidencia de %pcrel_lo con %pcrel_hidesbordamiento de %pcrel_lo con un sumandosÃ­mbolo de secciÃ³n %pcrel_lo con un sumando%pcrel_lo con sumando no estÃ¡ permitido para R_RISCV_GOT_HI20se definiÃ³ %s en la entrada toc eliminada%s divisiÃ³n por cero%s duplicado
 %s duplicado en %s
-%s tiene ambas reubicaciones normal y TLS%s en la secciÃ³n de sobreescritura%s: la definiciÃ³n TLS en %B secciÃ³n %A no coincide con la definiciÃ³n que no es TLS en %B secciÃ³n %A%s: la definiciÃ³n TLS en %B secciÃ³n %A no coincide con la referencia que no es TLS en %B%s: la referencia TLS en %B no coincide con la definiciÃ³n que no es TLS en %B secciÃ³n %A%s: la referencia TLS en %B no coincide con la referencia que no es TLS en %B%s: no hay tal sÃ­mbolo%s: sin implementar%s: no se admite%s: versiÃ³n sin definir: %s(en el despl de bit %u)
+%s tiene ambas reubicaciones normal y TLS%s en la secciÃ³n de superposiciÃ³n%s estÃ¡ definido pero no se pudo cargar: %s%s estÃ¡ definido pero la compatibilidad con complementos estÃ¡ desactivada%s estÃ¡ cargado pero no se encuentra el sÃ­mbolo Â«%sÂ»: %sno se definiÃ³ %s en el enlazador creado %pA%s no estÃ¡ implementadoel desplazamiento %s es demasiado grande para la codificaciÃ³n sdata4 .eh_frame%s, iter %u
+  rama           %lu
+  rama larga     %lu
+  llamada plt    %lu
+  entrada global %lu%s: ID de ELF incorrecta: Â«%dÂ»%s: la cadena ISA no puede contener letras mayÃºsculas%s: la cadena ISA debe comenzar con rv32 o rv64%s: la definiciÃ³n TLS en %pB secciÃ³n %pA no coincide con la definiciÃ³n que no es TLS en %pB secciÃ³n %pA%s: la definiciÃ³n TLS en %pB secciÃ³n %pA no coincide con la referencia que no es TLS en %pB%s: la referencia TLS en %pB no coincide con la definiciÃ³n que no es TLS en %pB secciÃ³n %pA%s: la referencia TLS en %pB no coincide con la referencia que no es TLS en %pB%s: compilado como objeto de 32 bits y %s es de 64 bits%s: compilado como objeto de 64 bits y %s es de 32 bits%s: la primera extensiÃ³n ISA debe ser Â«eÂ», Â«iÂ» o Â«gÂ»%s: la extensiÃ³n ISA con prefijo no vÃ¡lida Â«%sÂ» termina con <number>p%s: no hay tal sÃ­mbolo%s: sin implementar%s: no se admite%s: el tamaÃ±o del objeto no coincide con el tamaÃ±o del objetivo %s%s: la extensiÃ³n ISA con prefijo debe separarse con _%s: versiÃ³n sin definir: %s%s: extensiÃ³n ISA prefijada desconocida Â«%sÂ»%s: extensiÃ³n ISA estÃ¡ndar desconocida o clase de prefijo Â«%cÂ»(en despl de bit %u)
 (descriptor)
-(formato %c%c%c%c signatura %s envejecimiento %ld)
+(formato %c%c%c%c firma %s edad %ld pdb %s)
 (sin valor)
 (no activo)
-(sin ubicado)
+(sin asignar)
 (reg: %u, disp: %u, indir: %u, gÃ©nero: (datos thread-local demasiado grandes para -fpic o -msmall-tls: recompile con -fPIC o -mno-small-tls)(demasiadas variables globales para -fpic: recompile con -fPIC)(valor restante)
 (valor spec a continuaciÃ³n)
 )
@@ -1187,97 +1233,86 @@ Emplee opciÃ³n gcc -mrestrict-it para ge
 tipo dst %u *sin manejar*
 *desconocido**desconocido*    , Valor: %#08lx
 , alias: %u
-, ext comp despl: %u, no_opt desp psect: %u, subtipo: %u (%s)
-, vector sÃ­mbolo rva: - %B es 64-bit, %B no lo es-mips32r2 -mfp64 (12 llamadas-guardadas)la secciÃ³n .got no estÃ¡ inmediatamente despuÃ©s de la secciÃ³n .pltfallo de mezcla .rsrc: un directorio coincide con una hojafallo de mezcla .rsrc: versiones de directorio diferentes
-fallo de mezcla .rsrc: dirs con caracterÃ­sticas diferentes
-fallo de mezcla .rsrc: hoja duplicadafallo de mezcla .rsrc: hoja duplicada: %s.rsrc uniÃ³n fallado: recurso de cadena duplicada: %duniÃ³n .rsrc fallada: mÃºltiples manifestaciones no-predeterminadasdoble de 32-bit, la reubicaciÃ³n relativa a gp de 32bits sucede para un sÃ­mbolo externo4-byte4-bytes64 bits *inmanipulado*
-doble de 64-bit, 8-byte8-bytes: instrucciones m32r: instrucciones m32r2: instrucciones m32rx: instrucciones ni: instrucciones n1h; recompile con -fPIC<No se reconoce el conjunto de bits de opciÃ³n><corrupto info> %s<anchura corrupta: %#x>
-<cadena desplz corrupto: %#lx>
-<corrupto><tipo directivo desconocido: %d>
-<desconocido>reubica @pltoff contra sÃ­mb. localArchivo no tiene Ã­ndice; ejecute ranlib para aÃ±adir unoArchivo de ficheros objeto en formato equivocadoFallÃ³ el intento de convertir L32R/CALLX a CALLSe intentÃ³ hacer un enlace reubicable con entrada %s y salida %sIMAGEN_BASE      FallÃ³ la aseveraciÃ³n BFD %s %s:%dError interno %s BFD: se aborta en %s:%d
+, ext despl. ajuste: %u, no_opt desp. psect: %u, subtipo: %u (%s)
+, vector sÃ­mbolo rva: - %pB es de 64 bits, %pB no lo es-mips32r2 -mfp64 (12 guardadas por callee)desbordamiento de entrada .eh_frame_hdr.eh_frame_hdr hace referencia a FDEs superpuestosla secciÃ³n .got no estÃ¡ inmediatamente despuÃ©s de la secciÃ³n .pltfallo de uniÃ³n .rsrc: un directorio coincide con una hojafallo de uniÃ³n .rsrc: versiones de directorio diferentesfallo de uniÃ³n .rsrc: directorios con caracterÃ­sticas diferentesfallo de uniÃ³n .rsrc: hoja duplicadafallo de uniÃ³n .rsrc: hoja duplicada: %sfallo de uniÃ³n .rsrc: recurso de cadena duplicado: %dfallo de uniÃ³n .rsrc: varios manifiestos que no son predeterminadosdoble de 32 bits, la reubicaciÃ³n relativa a gp de 32bits sucede para un sÃ­mbolo externo4-byte4-bytes64 bits *no manejado*
+doble de 64 bits, 8-byte8-bytes: instrucciones m32r: instrucciones m32r2: instrucciones m32rx: instrucciones n1: instrucciones n1h; recompile con -fPIC; recompile con -fPIE<info corrupta> %s<longitud de cadena corrupta: %#x>
+<desplazamiento de cadena corrupto: %#lx>
+<corrupto><tipo de directorio desconocido: %d>
+<marcas de mÃ¡scara desconocidas><desconocido>reubicaciÃ³n @pltoff contra sÃ­mbolo localIMAGEN_BASE      FallÃ³ la aserciÃ³n %s BFD %s:%dError interno %s BFD: se aborta en %s:%d
 Error interno %s BFD: se aborta en %s:%d en %s
-
-Error de Enlazado BFD: no se admite la ramificaciÃ³n (PC rel16) a la secciÃ³n (%s)Error de Enlazado BFD: no se admite el salto (PC rel26) a la secciÃ³n (%s)Valor equivocadoDirectorio de ReubicaciÃ³n Base [.reloc]Directorio de ImportaciÃ³n de RelacionesLÃ­mites:
-Rama a una direcciÃ³n que no estÃ¡ alineada con instrucciÃ³nEmpleo de cachÃ©: CLIEncabezado de Tiempo de EjecuciÃ³n CLRADMBLOQ_CLUSTERS CONTADORES       CPU              CTL_AUGRB (aumenta base de reubicaciÃ³n) %u
+Directorio de ReubicaciÃ³n Base [.reloc]Directorio de ImportaciÃ³n de RelacionesLÃ­mites:
+Uso de cachÃ©: CLIEncabezado de Tiempo de EjecuciÃ³n CLRADMBLOQ_CLUSTERS CONTADORES       CPU              CTL_AUGRB (aumenta la base de reubicaciÃ³n) %u
 CTL_DFLOC (define ubicaciÃ³n)
-CTL_SETRB (define base de reubicaciÃ³n)
-CTL_STKDL (ubicaciÃ³n definida de pila)
+CTL_SETRB (establece base de reubicaciÃ³n)
+CTL_STKDL (ubicaciÃ³n definida en la pila)
 CTL_STLOC (establece ubicaciÃ³n)
-No puede convertir una rama a JALX para una direcciÃ³n no estÃ¡ alineada con wordNo puede convertir una omisiÃ³n a JALX para una direcciÃ³n que no estÃ¡ alineada con wordEncabezado Copyright
-Â¡Detectada secciÃ³n .rsrc corrupta!
-
-Registro corrupto EEOM - tamaÃ±o es demasiado pequeÃ±oRegistro corrupto EGSD: su campo â€˜psindxâ€™ es demasiado grande (%#lx)Registro corrupto EGSD: su tamaÃ±o (%#x) es demasiado pequeÃ±oRegistro corrupto EGSD: tamaÃ±o (%#x) es mayor que el espacio restante (%#x)Registro corrupto EGSD: tamaÃ±o (%#x) es demasiado pequeÃ±oRegistro corrupto EIHD - tamaÃ±o es demasiado pequeÃ±oEncontrado registro ETIR corruptoValor vms corruptoDSO faltante desde lÃ­nea de ordenDST__K_BEG_STMT_MODE no implementadoDST__K_END_STMT_MODE no implementadoDST__K_RESET_LINUM_INCR no implementadoDST__K_SET_LINUM_INCR no implementadoDST__K_SET_LINUM_INCR_W no implementadoDST__K_SET_PC no implementadoDST__K_SET_PC_L no implementadoDST__K_SET_PC_W no implementadoDST__K_SET_STMTNUM no implementadoDirectorio DepuranteTabla de mÃ³dulos depurante
-Tabla simbÃ³lica depurante:
-Directorio de Retardo de ImportaciÃ³nSe llamÃ³ a %s que es obsoleto
-Se llamÃ³ a %s que es obsoleto en %s lÃ­nea %d en %s
-Directorio de DescripcionesError enano: RecursiÃ³n de instancia abstracta detectada.Error enano: no se puede encontrar la secciÃ³n %s.Error enano: no se pudo encontrar el nÃºmero de abreviatura %u.Error enano: atributo DW_AT_comp_dir encontrado con un formato no encadenado.Error enano: puntero info extiende mÃ¡s allÃ¡ del final de atributosError enano: instancia DIE abstracta invÃ¡lida referenciada.Error enano: mÃ¡ximo de operaciones por instrucciÃ³n invÃ¡lido.Error enano: valor de FORM no manipulado o invÃ¡lido: %#x.Error enano: informaciÃ³n lineal de datos es mÃ¡s grande (%#Lx) que el espacio restante en la secciÃ³n (%#lx)Error enano: LÃ­nea informativa de secciÃ³n es demasiado corta (%Ld)Error enano: lÃ­nea informativa incompatible con segmento seleccionador de tamaÃ±o %u.Error enano: desplazamiento (%llu) es mayor que o igual que el tamaÃ±o de %s (%Lu).Error enano: Agotado de espacio leyendo opcodesError enano: Agotado espacio leyendo prÃ³logoError enano: incapaz de leer referencia alt %llu.Error enano: .debug_line versiÃ³n %d sin manipular.Error enano: formato de tipo continente %Lu desconocido.Error enano: formato contador cero.Error enano: contador de datos (%Lx) mÃ¡s grande que tamaÃ±o de bÃºfer.Error enano: se encontrÃ³ el tamaÃ±o de direcciÃ³n Â«%uÂ», este lector no puede manipular tamaÃ±os mÃ¡s grandes que '%u'.Error enano: encontrada versiÃ³n dwarf Â«%uÂ», este lector solamente manipula informaciÃ³n de las versiones 2, 3, 4 y 5.Error enano: secciÃ³n de nÃºmeros de lÃ­nea revuelta (nÃºmero de fichero equivocado).Error enano: secciÃ³n de nÃºmeros de lÃ­nea revuelta.EIHD: (tamaÃ±o: %u, bloques nbr: %u)
-ERROR: intentando enlazar %B con un binario %B de arquitectura distintaFunciÃ³n entrante Â«%sÂ» desaparecida desde cÃ³digo seguro.Desplazamiento de entrada = 0x%.8lx (%ld)
-Error al leer %s: %sError: %B tiene al mismo tiempo los atributos Tag_MPextension_use actuales y antiguosError: arquitectura ARC4 sin mÃ¡s soporte.
-Errores encontrados procesando el fichero %BDirectorio de Excepciones [.pdata]Exportar Directorio [.edata (o donde quiera que se encuentre)]Exportar Marcas 			%lx
-Exportar RVAFALLADO al encontrar reubicaciÃ³n HI16 previaVOL_FICHEROS     FPU-2.0FPU-3.0Fallado al actualizar desplazamiento en directorio depuranteFormato del fichero es ambiguoNo se reconoce el formato del ficheroFichero en formato equivocadoFichero demasiado grandeFichero truncadoCampo de opciones         = 0x%.2x
-RVA AdelantadorGALAXIA          GOT y PLT reubicados no pueden ser fijados con enlazador no dinÃ¡mico.ReubicaciÃ³n relativa GP empleada cuando GP no estaba definidoReubicaciÃ³n relativa GP cuando _gp no estÃ¡ definidoReubicaciÃ³n GPDISP no encontrÃ³ las instrucciones ldah y ldaTabla de sÃ­mbolos global:
-Flotante Hard (32-bit CPU, 64-bit FPU)
-Flotante Hard (32-bit CPU, cualquier FPU)
-Flotante hard (FPU 12 llamadas-guardadas MIPS32r2 de 64-bit)
-Coma flotante de hard (precisiÃ³n doble)
-Coma flotante de hard (precisiÃ³n sencilla)
-Flotante Hard compacto (32-bit CPU, 64-bit FPU)
-Hard o soft flotante
-ID: %#08lxIDC - Revisor de Consistencia de IdentaciÃ³n
-Interpretador IEEE: longitud de cadena textual: %#lx mÃ¡s largo que bÃºfer: %#lxACTIVADOR_IMAGEN No se admite INPUT_SECTION_FLAGS.
-E/S               Activa imagen   : (tamaÃ±o=%u)
-Compostura de activador de imagen: (mayor: %u, menor: %u)
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsEncabezado de Copyright
+Â¡Se ha detectado una secciÃ³n corrupta de .rsrc!
+Falta DSO en la lÃ­nea de ordenesError DWARF: se encontrÃ³ un atributo DW_AT_comp_dir con un formato que no es de cadenaError DWARF: se ha detectado una recurrencia de instancia abstractaError DWARF: no se puede encontrar la secciÃ³n %s.Error DWARF: no se pudo encontrar el nÃºmero de abreviatura %uError DWARF: no se pudo encontrar la especificaciÃ³n de la variable en el desplazamiento 0x%lxError DWARF: se encontrÃ³ el tamaÃ±o de direcciÃ³n Â«%uÂ», este lector no puede manejar tamaÃ±os mÃ¡s grandes que Â«%uÂ»Error DWARF: se encontrÃ³ la versiÃ³n Â«%uÂ» de dwarf, este lector sÃ³lo maneja informaciÃ³n de las versiones 2, 3, 4 y 5Error DWARF: el puntero de informaciÃ³n se extiende mÃ¡s allÃ¡ del final de los atributosError DWARF: referencia DIE a instancia abstracta no vÃ¡lidaError DWARF: mÃ¡ximo de operaciones por instrucciÃ³n no vÃ¡lidoError DWARF: valor de FORM no manejado o no vÃ¡lido: %#xError DWARF: tamaÃ±o del selector de segmento %u no admitido en la informaciÃ³n de lÃ­neaError DWARF: la secciÃ³n de nÃºmeros de lÃ­nea estÃ¡ rotaError DWARF: la secciÃ³n de nÃºmeros de lÃ­nea estÃ¡ rota (nÃºmero de fichero incorrecto)Error DWARF: se quedÃ³ sin espacio leyendo cÃ³digos de operaciÃ³nError DWARF: se quedÃ³ sin espacio leyendo el prÃ³logoError DWARF: la secciÃ³n %s no tiene contenidoserror DWARF: la secciÃ³n %s es demasiado grandeError DWARF: versiÃ³n de .debug_line sin manejar %dError DWARF: contador de formato ceroDW_EH_PE_datarel sin especificar para esta arquitecturaDirectorio de DepuraciÃ³nTabla de mÃ³dulos de depuraciÃ³n:
+Tabla de sÃ­mbolos de depuraciÃ³n:
+Directorio de Retardo de ImportaciÃ³nDirectorio de DescripcionesEIHD: (tamaÃ±o: %u, bloques nbr: %u)
+Desplz de entrada   = 0x%.8lx (%ld)
+Error: %pB y %pB tienen diferente versiÃ³n de DSPError: %pB y %pB tienen diferente ABI FPUError: %pB y %pB tienen diferente versiÃ³n de VDSPError: %pB tiene al mismo tiempo los atributos Tag_MPextension_use actuales y antiguosDirectorio de Excepciones [.pdata]Directorio de ExportaciÃ³n [.edata (o donde sea que se encuentre)]Marcas de ExportaciÃ³n 			%lx
+Exportar RVALa codificaciÃ³n FDE en %pB(%pA) impide la creaciÃ³n de la tabla .eh_frame_hdrFDPIC aÃºn no admite que la reubicaciÃ³n de %s se vuelva dinÃ¡mica para el ejecutableVOL_FICHEROS     FPU-2.0FPU-3.0Campo de opciones   = 0x%.2x
+RVA de reenviadorGALAXIA          La secciÃ³n GNU_MBIND sÃ³lo es compatible con objetivos GNU y FreeBSDLa secciÃ³n GNU_RETAIN sÃ³lo es compatible con objetivos GNU y FreeBSDLas reubicaciones GOT y PLT no se pueden fijar con un enlazador no dinÃ¡micotamaÃ±o de tabla GOT fuera de rangoReubicaciÃ³n relativa a GP usada cuando GP no estaba definidoReubicaciÃ³n relativa GP cuando _gp no estÃ¡ definidoLa reubicaciÃ³n GPDISP no encontrÃ³ las instrucciones ldah y ldaTabla de sÃ­mbolos global:
+Flotante hard (CPU de 32 bits, FPU de 64 bits)
+Flotante hard (CPU de 32 bits, cualquier FPU)
+Flotante hard (FPU de 64 bits MIPS32r2 12 guardadas por callee)
+Flotante hard (precisiÃ³n doble)
+Flotante hard (precisiÃ³n simple)
+Flotante hard compacto (CPU de 32 bits, FPU de 64 bits)
+Flotante hard o soft
+Propiedades IBT y SHSTKPropiedad IBTID: %#08lxIDC - ComprobaciÃ³n de Consistencia de Ident
+SÃ­mbolo IFUNC %s en la tabla de sÃ­mbolos dinÃ¡micos: no se admiten IFUNCSACTIVADOR_IMAGEN no se admiten INPUT_SECTION_FLAGSE/S              ActivaciÃ³n imagen: (tamaÃ±o=%u)
+Ajuste del activador de imagen: (mayor: %u, menor: %u)
 IdentificaciÃ³n de imagen: (mayor: %u, menor: %u)
-Descriptor seccional de imagen: (mayor: %u, menor: %u, tam: %u, despl: %u)
-SÃ­mbolo de imagen y segmento de depuraciÃ³n: (mayor: %u, menor %u)
-Directorio de Tablas de Direcciones de ImportaciÃ³nDirectorio de ImportaciÃ³n [partes de .idata]Error Interno: RL78 reubica desbordamiento superior de pilaError Interno: RL78 reubica desbordamiento inferior de pilaInconsistencia interna: %lu restante != %lu mÃ¡ximo.
-  Por favor boletine este defecto.NÃºmero reubicante AArch64 no vÃ¡lido: %dNÃºmero reubicante DLX no vÃ¡lido: %dTipo de reubicaciÃ³n TARGET2 Â«%sÂ» invÃ¡lido.Objetivo bfd invÃ¡lidoContenidos invÃ¡lidos en secciÃ³n %AOperaciÃ³n invÃ¡lidaSalida de secciÃ³n invÃ¡lida para .eh_frame_entry: %AÃ�ndice seccional invÃ¡lido en ETIRÂ¿Es esta versiÃ³n del enlazador - %s - fuera de fecha ?Debe ser un sÃ­mbolo funcional global o dÃ©bil.Omite a una direcciÃ³n que no estÃ¡ alineada con instrucciÃ³nOmite a una direcciÃ³n no alineada con wordNOMBRES_LOGICOS  Nombre de Procesador de Lenguaje
-Longitud                  = 0x%.8lx (%ld)
-Enlazador: error de tabla hash no puede iniciar ex9
-Enlazador: error no solucionado ex9 reubicado 
-Directorio de Carga de ConfiguracionesFunciÃ³n local IFUNC Â«%sÂ» dentro de %B
-ADMIN_MEMORIAFunciones MIPS16 y microMIPS no se pueden llamar unas a otrasMISC             UtilizaciÃ³n de MMU: MULTI_PROCESAM   Mayor/Menor 			%d/%d
-Archivo malformadoLa pila mÃ¡xima requerida es 0x%v
-MeP: para que %d tenga tipo %dMemoria agotadaEncabezado de mÃ³dulo
-REDES            COMÃšNNombre 				Ninguna direcciÃ³n asignada a la secciÃ³n de salida recubierta %sNo hay errorNo hay mÃ¡s ficheros archivadosNo hay sÃ­mbolosNingunoSecciÃ³n no representable en la salidaNo hay suficiente memoria para ordenar las reubicacionesNÃºmero en:
-OPR_ADD (adiciÃ³n)
-OPR_AND (y lÃ³gico)
+Descriptor de secciÃ³n de imagen: (mayor: %u, menor: %u, tam: %u, despl: %u)
+SÃ­mbolo de imagen y tabla de depuraciÃ³n: (mayor: %u, menor %u)
+Directorio de Tablas de Direcciones de ImportaciÃ³nDirectorio de ImportaciÃ³n [partes de .idata]Error interno: inalcanzable.Propiedad LAM_U48Propiedad LAM_U57NOMBRES_LOGICOS  Nombre de Procesador de Lenguaje
+Longitud            = 0x%.8lx (%ld)
+Directorio de Carga de ConfiguracionesFunciÃ³n local IFUNC Â«%sÂ» en %pB
+ADMIN_MEMORIA    Las funciones MIPS16 y microMIPS no se pueden llamar unas a otrasMISC             Uso de MMU: MULTI_PROCESAM   Mayor/Menor 			%d/%d
+La pila mÃ¡xima requerida es 0x%v
+MeP: el howto %d tiene tipo %dCombinando las propiedades del programa
+Encabezado de mÃ³dulo
+REDES            NORMALNOTA: Este comportamiento estÃ¡ obsoleto y se eliminarÃ¡ en una versiÃ³n futura del enlazadorNombre 				NingunoNÃºmero en:
+OPR_ADD (suma)
+OPR_AND (and lÃ³gico)
 OPR_ASH (despl aritmÃ©tico)
 OPR_COM (complemento)
 OPR_DIV (divisiÃ³n)
-OPR_EOR (o lÃ³gico exclusivo)
+OPR_EOR (or exclusivo lÃ³gico)
 OPR_INSV (insertar campo)
-OPR_IOR (or lÃ³gico inclusivo)
+OPR_IOR (or inclusivo lÃ³gico)
 OPR_MUL (multiplicaciÃ³n)
 OPR_NEG (negaciÃ³n)
 OPR_NOP (no operaciÃ³n)
-OPR_REDEF (define una literal)
+OPR_REDEF (define un literal)
 OPR_REDEF (redefine sÃ­mbolo a la ubicaciÃ³n actual)
 OPR_ROT (rotaciÃ³n)
 OPR_SEL (selecciÃ³n)
-OPR_SUB (subtract)
+OPR_SUB (resta)
 OPR_USH (despl sin signo)
-Â¡ El mÃ³dulo objeto NO estÃ¡ libre de errores !
-Desplazamiento de recubrimiento para funciÃ³n de entrante Â«%sÂ» no un mÃºltiplo de su tamaÃ±o.Una causa posible de este error es que el sÃ­mbolo estÃ¡ siendo referenciado dentro del cÃ³digo indicado como si tuvo un alineamiento mayor que lo que fue declarado donde estuvo definido.Base Ordinal 			%ld
-El fichero de salida requiere la biblioteca compartida Â«%sÂ»
-El fichero de salida requiere la biblioteca compartida Â«%s.so.%sÂ»
-Carga relativa PC desde direcciÃ³n no alineadaPIE ejecutablePOSIX            CALEND_PROCESOS  PRVFXDPRVPICPSC - DefiniciÃ³n seccional de programa
-No coincide PTA: una direcciÃ³n SHcompact (bit 0 == 0)No coincide PTB: una direcciÃ³n SHmedia (bit 0 == 1)Nombre de la particiÃ³n    = Â«%sÂ»
+Base Ordinal 			%ld
+Carga relativa a PC desde direcciÃ³n no alineadaPIE ejecutablePOSIX            CALEND_PROCESOS  PRVFXDPRVPICPSC - DefiniciÃ³n de secciÃ³n de programa
+Nombre de particiÃ³n = Â«%sÂ»
 ParticiÃ³n[%d] fin    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 ParticiÃ³n[%d] longitud = 0x%.8lx (%ld)
 ParticiÃ³n[%d] sector = 0x%.8lx (%ld)
-Por favor reporte este bicho.
-Conflicto ABI RL78: fichero G10 %B no puede ser enlazado con fichero %s %BConflicto ABI RL78: no puede enlazar fichero %s %B con fichero %s %BConflicto de reenlace RL78: no puede enlazar objetos 32-bit y 64-bit juntosR_BFIN_FUNCDESC referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es ceroR_BFIN_FUNCDESC_VALUE referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es ceroR_FRV_TLSMOFFLO no aplicado a una instrucciÃ³n setlo o setlos
-Se lee la marca de tiempo modificada del fichero en el archivoEl referenciar al sÃ­mbolo far Â«%sÂ» usando una reubicaciÃ³n incorrecta puede resultar en una ejecuciÃ³n incorrectaEl registro %%g%d se usÃ³ de forma incompatible: %s en %B, previamente %s en %BLa secciÃ³n de registros no tiene contenido
-ReubicaciÃ³n para psect que no-RELQuitando secciÃ³n Â«%AÂ» no utilizada en el fichero Â«%BÂ»ReservadoDirectorio de Recursos [.rsrc]DirecciÃ³n S12 (%lx) no estÃ¡ dentro de RAM(0x2000-0x4000) compartida, por lo tanto debe desplazar manualmente la direcciÃ³n dentro de su cÃ³digoSDA reubicable cuando _SDA_BASE_ no estÃ¡ definidoSEGURIDAD        SEC_RELOC con ninguna reubicaciÃ³n en secciÃ³n %AError SH: tipo de reubicaciÃ³n %d desconocidoSHELL            SHRFXDSHRPICEmpleo SIMD: SPSC - def secciÃ³n Programa de Imagen Compartida
+Por favor informe de este error.
+Marcas privadas = 0x%lx: Conflicto ABI RL78: el fichero G10 %pB no se puede enlazar con el fichero %s %pBConflicto ABI RL78: no se puede enlazar el fichero %s %pB con el fichero %s %pBConflicto de uniÃ³n de RL78: no pueden enlazar objetos de 32 bits y 64 bits juntosla reubicaciÃ³n RL78 divide por ceroDesbordamiento/subdesbordamiento de la pila de reubicaciÃ³n RL78R_AMD64_IMAGEBASE con __ImageBase sin definirR_BFIN_FUNCDESC referencia un sÃ­mbolo dinÃ¡mico con sumando distinto de ceroR_BFIN_FUNCDESC_VALUE referencia un sÃ­mbolo dinÃ¡mico con sumando distinto de cerono se ha aplicado R_FRV_TLSMOFFLO a una instrucciÃ³n setlo o setlos
+Se lee la marca de tiempo modificada del fichero del archivoSe eliminÃ³ la propiedad %W para combinar %pB (0x%v) y %pB (0x%v)
+Se eliminÃ³ la propiedad %W para combinar %pB (0x%v) y %pB (no encontrada)
+Se eliminÃ³ la propiedad %W para combinar %pB (no encontrada) y %pB (0x%v)
+Se eliminÃ³ la propiedad %W para combinar %pB y %pB
+Se eliminÃ³ la propiedad %W para combinar %pB y %pB (no encontrada)
+ReservadoDirectorio de Recursos [.rsrc]La direcciÃ³n S12 (%lx) no estÃ¡ dentro de la RAM(0x2000-0x4000) compartida, por lo tanto debe desplazar manualmente la direcciÃ³n en su cÃ³digoreubicaciÃ³n SDA mientras que _SDA_BASE_ no estÃ¡ definidoSEGURIDAD        SEC_RELOC sin reubicaciones en la secciÃ³n %pASHELL            SHRFXDSHRPICPropiedad SHSTKUso de SIMD: SPSC - def de secciÃ³n de Programa de Imagen Compartida
 ESTABLE          STA_CKARG (compara argumentos de procedimientos)
 STA_GBL (pila global) %.*s
 STA_LI (pila literal)
-STA_LW (pila longword) 0x%08x
-STA_MOD (pila mÃ³dulo)
+STA_LW (pila longword)STA_MOD (pila mÃ³dulo)
 STA_PQ (pila psect base + despl)
-STA_QW (pila quadword) 0x%08x %08x
-STC_BOH_GBL (almacena BOH cond en direcciÃ³n global)
+STA_QW (pila quadword)STC_BOH_GBL (almacena BOH cond en direcciÃ³n global)
 STC_BOH_PS (almacena BOH cond en psect + despl)
 STC_BSR_GBL (almacena BSR cond en direcciÃ³n global)
 STC_BSR_PS (almacena BSR cond en psect + despl)
@@ -1292,11 +1327,11 @@ Emplee opciÃ³n gcc -mrestrict-it para ge
 STC_NOP_GBL (almacena NOP cond en direcciÃ³n global)
 STC_NOP_PS (almacena NOP cond en psect + despl)
 STC_PS (almacena psect cond + despl)
-STO_AB (almacena ramif absoluta)
+STO_AB (almacena rama absoluta)
 STO_B (almacena byte)
-STO_BR_GBL (almacena ramif global) *pend*
-STO_BR_PS (almacena ramif psect + despl) *pend*
-STO_CA (almacena direcc cÃ³digo) %.*s
+STO_BR_GBL (almacena rama global) *pend*
+STO_BR_PS (almacena rama psect + despl) *pend*
+STO_CA (almacena direcciÃ³n cÃ³digo) %.*s
 STO_GBL (almacena global) %.*s
 STO_GBL_LW (almacena global longword) %.*s
 STO_IMM (almacena inmediato) %u bytes
@@ -1305,128 +1340,123 @@ Emplee opciÃ³n gcc -mrestrict-it para ge
 STO_OFF (almacena LP con firma de procedimiento)
 STO_OFF (almacena despl para psect)
 STO_QW (almacena quadword)
-STO_RB (almacena ramif relativa)
+STO_RB (almacena rama relativa)
 STO_W (almacena word)
 SYM - DefiniciÃ³n de sÃ­mbolo global
 SYM - Referencia de sÃ­mbolo global
 SYMG - DefiniciÃ³n de sÃ­mbolo universal
 SYMM - DefiniciÃ³n de sÃ­mbolo global con versiÃ³n
 SYMV - DefiniciÃ³n de sÃ­mbolo vectorizado
-GENSIS           La secciÃ³n no tiene contenidoDirectorio de SeguridadTamaÃ±o errÃ³neo en secciÃ³n %AFlotante soft
+GENSIS           Directorio de SeguridadFlotante soft
 Encabezado de Ficheros Fuente
-Directorio EspecialReubicaciÃ³n ALPHA_R_BSR espuriaPila analizada descartarÃ¡ la llamada de %s a %s
-Pila desbordada superior (%d) en _bfd_vms_pushPila de tamaÃ±o para los nodos raÃ­z del grafo de llamadas.
-Pila desbordada inferior en _bfd_vms_popDirecciÃ³n inicial de Â«%sÂ» es diferente desde enlace anterior.Estribos:
-El sÃ­mbolo %s no estÃ¡ definido para composturas
-El sÃ­mbolo Â«%sÂ» tiene tipos divergentes: %s en %B, previamente REGISTER en %BEl sÃ­mbolo Â«%sÂ» tiene tipos divergentes: REGISTER en %B, previamente %s en %BUn sÃ­mbolo requiere de una secciÃ³n de depuraciÃ³n, la cual no existeSÃ­mbolo deberÃ­a ser absoluto, global y refiere a funciÃ³n Thumb.Error en llamada al sistemaTLS reubicado invÃ¡lidamente sin secciones dinÃ¡micasDesbordamiento superior de TOC: %#Lx > 0x10000; intente -mminimal-toc al compilarDirecciones de la Tabla
-El tamaÃ±o del campo de datos depurados es demasiado grande para la secciÃ³nEl tamaÃ±o de directorio de depuraciÃ³n no es un mÃºltiplo del tamaÃ±o de entrada de directorio depurador
-Hay un conflicto uniendo las marcas de cabecera ELF desde %BDirectorio de Almacenamiento de Hilos [.tls]Marca Hora/Fecha 		%lx
+Directorio EspecialTamaÃ±o de pila para los nodos raÃ­z del grÃ¡fico de llamadas.
+Pasos:
+El sÃ­mbolo Â«%sÂ» tiene tipos divergentes: %s en %pB, anteriormente REGISTER en %pBreubicaciÃ³n TLS no vÃ¡lida sin secciones dinÃ¡micasDesbordamiento de TOC durante la generaciÃ³n del stub. Pruebe con -mminimal-toc al compilarDirecciones de la Tabla
+El sumando no estÃ¡ permitido para R_RISCV_GOT_HI20El tamaÃ±o del campo de datos de depuraciÃ³n es demasiado grande para la secciÃ³nEl tamaÃ±o de directorio de depuraciÃ³n no es un mÃºltiplo del tamaÃ±o de entrada de directorio de depuraciÃ³n
+Directorio de Almacenamiento de Hilos [.tls]Sello de Hora/Fecha 		%lx
 Encabezado de Texto de TÃ­tulo
-Demasiadas entradas GOT para -fpic, recompile con -fPICDemasiados cÃ³digos unwind (%ld)
-Intente activando relajaciÃ³n para evitar truncaciones reubicantesTipo             TamaÃ±o         Rva      Despl
-USRPILANo se puede encontrar la secciÃ³n de salida equivalente para el sÃ­mbolo Â«%sÂ» de la secciÃ³n Â«%sÂ»Incapaz de alcanzar %s (en 0x%08x) desde el puntero global (en 0x%08x) porque el desplazamiento (%d) estÃ¡ fuera del rango permitido, -32678 a 32767.
-Incapaz de leer registro EIHS en desplazamiento %#xNo se manipula un STO_SH5_ISA32 inesperado en un sÃ­mbolo localNÃºmero de mÃ¡quina inesperadoTipo seccional de fichero nÃºcleo OSF/1 %d sin manipular
-ReubicaciÃ³n %s sin manipularDesconocidaSubtipo de EGSD %d desconocidoTipo bÃ¡sico %d desconocidoReubicaciÃ³n %s desconocidaReubicaciÃ³n %s + %s desconocidaSÃ­mbolo desconocido en la orden %sDesconocido: %xNÃºmero reubicante MIPS no reconocido: %dNo se reconoce INPUT_SECTION_FLAG %s
-No se reconoce el id de objetivo COFF TI '0x%x'No se reconoce el tipo de reubicaciÃ³n 0x%xNo se admite la reubicaciÃ³n .stabReubicaciÃ³n de tipo CR16 no soportado: 0x%x
-VOLÃ�TIL          La variable Â«%sÂ» solamente puede estar en una de las regiones de datos small, zero, y tinyLa variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos small y tinyLa variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos small y zeroLa variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos zero y tinyLa variable Â«%sÂ» no puede ocupar mÃºltiples regiones de datos smallTamaÃ±o virtual de secciÃ³n .pdata (%ld) mÃ¡s grande que el tamaÃ±o real (%ld)
-Aviso, el tamaÃ±o de la secciÃ³n .pdata (%ld) no es un mÃºltiplo de %d
-Aviso: %B no admite interoperabilidad, mientras que %B sÃ­Aviso: %B admite interoperabilidad, mientras que %B noAviso: %B emplea %s (establecido por %B), %B emplea %sAviso: %B utiliza %s (establecido por %B), %B utiliza ABI MSA desconocido %dAviso: %B emplea %s (establece por %B), %B emplea punto flotante ABI desconocido %dAviso: %B utiliza 64 bit doble largo, %B utiliza 128 bit doble largoAviso: %B emplea la ABI de vectorAltiVec, %B emplea vector SPE ABIAviso: %B utiliza doble largo IBM, %B utiliza doble largo IEEEAviso: %B emplea coma flotante hard de doble precisiÃ³n, %B emplea coma flotante hard de precisiÃ³n simpleAviso: %B emplea coma flotante hard, %B emplea coma flotante softAviso: %B emplea r3/r4 para devoluciones de estructura small, %B emplea memoriaAviso: %B emplea la ABI MSA desconocida%d (establece por %B), %B emplea %sAviso: %B emplea MSA ABI %d desconocida (establece por %B), %B emplea MSA ABI %dAviso: %B utiliza coma flotante ABI %d (establecido por %B), %B emplea %sAviso: %B emplea la ABI de coma flotante desconocida %d (establecida por %B), %B emplea ABI con coma flotante %d desconocidaAviso: %B: ConfiguraciÃ³n de plataformas en conflictoAviso: %B: ConfiguraciÃ³n de plataformas en conflicto %s con %s.
-Aviso: %B: Atributo de objeto ARC %d desconocido.Aviso: %B: Atributo de objeto EABI %d desconocidoAviso: %B: Atributo desconocido de objeto MSPABI %dAviso: tamaÃ±o de secciÃ³n %s (%ld) no es un mÃºltiplo de %d
-
-Aviso: tamaÃ±o de secciÃ³n %s (%ld) es menor que el tamaÃ±o virtual (%ld)
-Aviso: tamaÃ±o seccional %s es cero
-Aviso: Se limpia la opciÃ³n de interoperaciÃ³n en %B porque se ha enlazado con Ã©l cÃ³digo no interoperable en %BAviso: Se limpia la opciÃ³n de interoperabilidad de %B debido a una peticiÃ³n externaAviso: No se establece la opciÃ³n de interoperabilidad de %B ya que se habÃ­a especificado con anterioridad como no interoperableAviso: reubicaciÃ³n RL78_SYM con un sÃ­mbolo desconocidoAviso: reubicaciÃ³n RX_SYM con un sÃ­mbolo desconocidoAviso: la alineaciÃ³n %u del sÃ­mbolo comÃºn Â«%sÂ» en %B es mÃ¡s grande que la alineaciÃ³n (%u) de su secciÃ³n %AAviso: la alineaciÃ³n %u del sÃ­mbolo Â«%sÂ» en %B es mÃ¡s pequeÃ±a que %u en %BAviso: no coincide la cuenta de composturas
-Aviso: se descarta la opciÃ³n gc-sectionsAviso: el tamaÃ±o del sÃ­mbolo Â«%sÂ» modificado de %Lu en %B a %Lu en %BAviso: sÃ­mbolo Â«%sÂ» es ambas secciÃ³n y no secciÃ³nAviso: el tipo del sÃ­mbolo Â«%sÂ» cambiÃ³ de %d a %d en %BAviso: destablece o marcas arquitecturales antiguas. 
-	       Emplee mÃ¡quina predeterminada.
-Aviso: la escritura del fichero fue lenta: se reescribe la marca de tiempo
-Se escribe la marca temporal actualizada de â€˜armapâ€™DirecciÃ³n XGATE (%lx) no estÃ¡ dentro de RAM(0xE000-0xFFFF) compartida, por lo que debe desplazar manualmente la direcciÃ³n, y posiblemente la pÃ¡gina, en su cÃ³digo.[%u]: Inferior: %u, superior: %u
-[abi=16-bit ent, [abi=32-bit ent, [cuyo nombre estÃ¡ perdido]se llamÃ³ _bfd_vms_output_counted con demasiados bytesse llamÃ³ _bfd_vms_output_counted con cero bytes`%s' refiere a una funciÃ³n distinta de entrada.un objeto PDEun objeto PIEun objeto compartidodirecciÃ³nla direcciÃ³n no estÃ¡ alineada a worddescriptor matricial:
-unimatriz, dim: %u, distribuciÃ³n bit: artam: %u, a0: 0x%08x
+Demasiados cÃ³digos de desenrollado (%ld)
+Tipo             TamaÃ±o         Rva      Despl
+PILAUSRNo se puede encontrar la entrada de stub con objetivo %sNo se puede enlazar el fichero de entrada: %sNo se puede cargar la DLL.DesconocidoDesconocido: %xSe actualizÃ³ la propiedad %W (%v) para combinar %pB (0x%v) y %pB (no encontrada)
+Se actualizÃ³ la propiedad %W (0x%v) para combinar %pB (0x%v) y %pB (0x%v)
+VOLÃ�TIL          TamaÃ±o virtual de secciÃ³n .pdata (%ld) mÃ¡s grande que el tamaÃ±o real (%ld)
+Aviso: el tamaÃ±o de la secciÃ³n %s (%ld) no es un mÃºltiplo de %d
+Aviso: el tamaÃ±o de la secciÃ³n %s (%ld) es menor que el tamaÃ±o virtual (%ld)
+Aviso: el tamaÃ±o de la secciÃ³n %s es cero
+Se escribe la marca de tiempo actualizada de armapLa direcciÃ³n XGATE (%lx) no estÃ¡ dentro de la RAM(0xE000-0xFFFF) compartida, por lo que debe desplazar manualmente la direcciÃ³n, y posiblemente gestionar la pÃ¡gina, en su cÃ³digo.[%u]: Inferior: %u, superior: %u
+[abi=ent 16 bits, [abi=ent 32 bits, [cuyo nombre estÃ¡ perdido]\%pB: aviso: la instrucciÃ³n BLX %s apunta a la funciÃ³n %s Â«%sÂ»desbordamiento de desplazamiento de llamada __tls_get_addrse llamÃ³ a _bfd_vms_output_counted con demasiados bytesse llamÃ³ a _bfd_vms_output_counted con cero bytesÂ«%sÂ» hace referencia a una funciÃ³n que no es de entradaÂ«xtheadvectorÂ» estÃ¡ en conflicto con la extensiÃ³n Â«vÂ»Â«zfinxÂ» estÃ¡ en conflicto con la extensiÃ³n Â«f/d/q/zfh/zfhminÂ»un objeto PDEun objeto PIEun objeto compartidodirecciÃ³nla direcciÃ³n no estÃ¡ alineada a palabrase encontrÃ³ cÃ³digo mÃ¡quina ELF alternativo (%d) en %pB, se espera %del archivo no tiene Ã­ndice. Ejecute ranlib para aÃ±adir unofichero de objeto del archivo en formato incorrectodescriptor de matriz:
+matriz, dim: %u, mapabit: tamaÃ±oar: %u, a0: 0x%08x
 atÃ³mico, tipo=0x%02x %s
-Ã­ndice seccional equivocado en %sla direcciÃ³n almacenada [%lx:%04lx] (%lx) no estÃ¡ en el mismo banco que la direcciÃ³n almacenada actual [%lx:%04lx] (%lx)base: %u, pos: %u
-bfd_mach_o_canonicalize_symtab: no se pueden cargar sÃ­mbolosbfd_mach_o_read_section_32: valor de alineamiento sobrepasado: %#lx, utilizando 32 en su lugarbfd_mach_o_read_section_64: valor de alineamiento sobrepasado: %#lx, utilizando 32 en su lugarbfd_mach_o_read_symtab_symbol: nombre fuera de rango (%lu >= %u)bfd_mach_o_read_symtab_symbol: el sÃ­mbolo Â«%sÂ» especificÃ³ la secciÃ³n invÃ¡lida %d (mÃ¡ximo %lu): se cambia a indefinidobfd_mach_o_read_symtab_symbol: el sÃ­mbolo Â«%sÂ» especificÃ³ el campo de tipo 0x%x invÃ¡lido: se cambia a indefinidobfd_mach_o_read_symtab_symbol: no se pueden leer %d bytes en %ubfd_mach_o_read_symtab_symbols: no se puede reservar memoria para sÃ­mbolosbfd_mach_o_scan: arquitectura 0x%lx/0x%lx desconocidabfd_pef_scan: arquitectura 0x%lx desconocidablkini: direcciÃ³n: 0x%08x, nombre: %.*s
-blkfin: tam: 0x%08x
-no puede crear la entrada de cabo %sno se pueden emitir reubicaciones dinÃ¡micas en la secciÃ³n de sÃ³lo lecturano se pueden emitir composturas en la secciÃ³n de sÃ³lo lecturano se puede encontrar EMH en el primer registro GST
-no se puede manipular la reubicaciÃ³n R_MEM_INDIRECT cuando se utiliza la salida %sno se puede leer DMT
-no se puede leer el encabezado DMT
-no se puede leer el psect DMT
-no se puede leer DST
-no se puede leer el encabezado DST
-no se puede leer el sÃ­mbolo DST
-no se puede leer EIHA
-no se puede leer EIHD
-no se puede leer EIHI
-no se puede leer EIHS
-no se puede leer el encabezado EIHVN
-no se puede leer la versiÃ³n EIHVN
-no se puede leer EISD
-no se puede leer GST
-no se puede leer el registro GST
-no se puede leer el encabezado del registro GST
-no se puede leer la longitud del registro GST
+fallÃ³ el intento de convertir L32R/CALLX a CALLse intentÃ³ hacer un enlace reubicable con entrada %s y salida %sÃ­ndice de secciÃ³n incorrecto en %svalor incorrectola direcciÃ³n almacenada [%lx:%04lx] (%lx) no estÃ¡ en el mismo banco que la direcciÃ³n almacenada actual [%lx:%04lx] (%lx)base: %u, pos: %u
+bfd_mach_o_canonicalize_symtab: no se pueden cargar sÃ­mbolosbfd_mach_o_read_section_32: valor de alineaciÃ³n demasiado grande: %#lxbfd_mach_o_read_section_64: valor de alineaciÃ³n demasiado grande: %#lxbfd_mach_o_read_symtab_symbol: nombre fuera de rango (%lu >= %u)bfd_mach_o_read_symtab_symbol: el sÃ­mbolo Â«%sÂ» especificÃ³ la secciÃ³n no vÃ¡lida %d (mÃ¡ximo %lu): se establece a sin definirbfd_mach_o_read_symtab_symbol: el sÃ­mbolo Â«%sÂ» especificÃ³ el campo de tipo 0x%x no vÃ¡lido: se establece a sin definirbfd_mach_o_read_symtab_symbol: no se pueden leer %d bytes en %ubfd_mach_o_scan: arquitectura 0x%lx/0x%lx desconocidabfd_pef_scan: arquitectura 0x%lx desconocidainiblk: direcciÃ³n: 0x%08x, nombre: %.*s
+finblk: tamaÃ±o: 0x%08x
+no se admite la rama (PC rel16) a la secciÃ³n (%s)rama a una direcciÃ³n que no estÃ¡ alineada con instruccionesse fuerza bss-plt por creaciÃ³n de perfilesse fuerza bss-plt debido a %pBc' o `zcac' o `zcdc' o `zcfno se puede construir el stub de la rama Â«%sÂ»no se puede encontrar el stub de la rama Â«%sÂ»no se puede + o - la extensiÃ³n base Â«%sÂ» en la arquitectura de .option Â«%sÂ»no se puede convertir una rama a JALX para una direcciÃ³n que no estÃ¡ alineada a palabrasno se puede convertir un salto a JALX para una direcciÃ³n que no estÃ¡ alineada a palabrasno se puede crear la entrada de stub %sno se pueden emitir reubicaciones dinÃ¡micas en la secciÃ³n de sÃ³lo lecturano se pueden emitir ajustes en la secciÃ³n de sÃ³lo lecturano se puede encontrar EMH en el primer registro GST
+no se pueden encontrar las versiones predeterminadas de la extensiÃ³n ISA Â«%sÂ»no se puede leer el DMT
+no se puede leer el encabezado de DMT
+no se puede leer el psect de DMT
+no se puede leer el DST
+no se puede leer el encabezado de DST
+no se puede leer el sÃ­mbolo de DST
+no se puede leer el EIHA
+no se puede leer el EIHD
+no se puede leer el EIHI
+no se puede leer el EIHS
+no se puede leer el encabezado de EIHVN
+no se puede leer la versiÃ³n de EIHVN
+no se puede leer el EISD
+no se puede leer el GST
+no se puede leer el registro de GST
+no se puede leer el encabezado de registro de GST
 clase: %u, tipod: %u, long: %u, puntero: 0x%08x
-secciÃ³n %s corrupta en %Bno pudo encontrar la secciÃ³n %sno se puede localizar el sÃ­mbolo especial del enlazador __ctbpno se puede localizar el sÃ­mbolo especial del enlazador __epno se puede localizar el sÃ­mbolo especial del enlazador __gpno se puede abrir la imagen compartida Â«%sÂ» desde Â«%sÂ»cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]reubicaciÃ³n peligrosadelta pc +%-4ddelta_pc_l: +0x%08x
+secciÃ³n %s corrupta en %pBregistro EEOM corrupto - el tamaÃ±o es demasiado pequeÃ±oregistro EGSD corrupto de tipo %d: su tamaÃ±o (%#x) es mayor que el espacio restante (%#x)registro EGSD corrupto de tipo %d: su tamaÃ±o (%#x) es demasiado pequeÃ±oregistro EGSD corrupto: su campo psindx es demasiado grande (%#lx)registro EGSD corrupto: su tamaÃ±o (%#x) es demasiado pequeÃ±oregistro EIHD corrupto - el tamaÃ±o es demasiado pequeÃ±ose ha encontrado un registro ETIR corruptoregistro de reubicaciÃ³n corruptovalor vms corruptoGST corrupto
+no se pudo encontrar la secciÃ³n %sno se pudo ubicar el sÃ­mbolo especial del enlazador __ctbpno se pudo ubicar el sÃ­mbolo especial del enlazador __epno se pudo ubicar el sÃ­mbolo especial del enlazador __gpno se puede abrir la imagen compartida Â«%sÂ» desde Â«%sÂ»cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]d' y `c', o `d' y `zcdd' y `zfad' o `zdinxreubicaciÃ³n peligrosaerror de reubicaciÃ³n peligrosodelta pc +%-4ddelta_pc_l: +0x%08x
 delta_pc_w %u
-descdimct: %u, aops: 0x%02x, dÃ­gitos: %u, escala: %u
-se descarta la secciÃ³n de salida: `%A'descartando lÃ­mite direccional cero FDE en %B(%A).
+descdimct: %u, aflags: 0x%02x, dÃ­gitos: %u, escala: %u
+secciÃ³n de salida descartada: Â«%pAÂ»descartando el rango de direcciÃ³n cero FDE en %pB(%pA).
 rango discontinuo (nbr: %u)
-reubicaciÃ³n dinÃ¡mica en la secciÃ³n de sÃ³lo lecturala variable dinÃ¡mica Â«%sÂ» es de tamaÃ±o ceroenuini, lon: %u, nombre: %.*s
-enufin, nombre: %.*s
-enufin
-epilog: ops: %u, cuenta: %u
-error leyendo tipo de cpu desde datos privados elferror: %B contiene una reubicaciÃ³n (%#Lx) para la secciÃ³n %A que refiere a un sÃ­mbolo global no existenteerror: %B no utiliza instrucciones Maverick, mientras que %B sÃ­error: %B ya estÃ¡ en el formato BE8 finalerror: %B estÃ¡ compilado como cÃ³digo de posiciÃ³n absoluta, mientras que el objetivo %B es independiente de posiciÃ³nerror: %B estÃ¡ compilado como cÃ³digo independiente de posiciÃ³n, mientras que el objetivo %B es de posiciÃ³n absolutaerror: %B estÃ¡ compilado para APCS-%d, mientras que %B estÃ¡ compilado para APCS-%derror: %B estÃ¡ compilado para APCS-%d mientras que el objetivo %B emplea APCS-%derror: %B estÃ¡ compilado para el EP9312, mientras que %B estÃ¡ compilado para XScaleerror: %B necesita alineaciÃ³n de 8-byte pero %B estÃ¡ establecido para alineamiento de 4-byteerror: %B pasa nÃºmeros de coma flotante en registros de coma flotante, mientras que %B los pasa en registros enteroserror: %B pasa nÃºmeros de coma flotante en registros enteros, mientras que %B los pasa en registros de coma flotanteerror: %B requiere mÃ¡s alineaciÃ³n de matriz que la que %B preservaerror: %B requiere mÃ¡s alineaciÃ³n de pila que la que %B preservaerror: %B utiliza %s instrucciones pero %B emplea %serror: %B utiliza dobles de 64-bit pero %B utiliza dobles de 32-biterror: %B utiliza instrucciones FPA, mientras que %B noerror: %B utiliza FPU-3.0 pero %B solo es compatible con FPU-2.0error: %B utiliza instrucciones Maverick, mientras que %B noerror: %B utiliza instrucciones VFP, mientras que %B noerror: %B utiliza argumentos de registro VFP, mientras que %B noerror: %B utiliza FP de hardware, mientras que %B utiliza FP de softwareerror: %B utiliza argumentos de registro iWMMXt, mientras que %B noerror: %B utiliza FP de software, mientras que %B utiliza FP de hardwareerror: %B utiliza el modelo de cÃ³digo %s mientras que %B utiliza el modelo de cÃ³digo %serror: %B utiliza el modelo de datos %s pero %B solo emplea instrucciones MSP430error: %B utiliza el modelo de datos %s mientras que %B utiliza el modelo de datos %serror: %B utiliza el modelo de cÃ³digo grande pero %B solo emplea instrucciones MSP430error: %B utiliza el modelo de cÃ³digo pequeÃ±o pero %B emplea el modelo de datos %serror: %B(%A) es demasiado grande (%#Lx bytes)error: %B: <corrompe tamaÃ±o ISA x86 requerido: 0x%x>error: %B: <corrompe tamaÃ±o ISA x86 utilizado: 0x%x>error: %B: <corrompe tamaÃ±o caracterÃ­stico x86: 0x%x>error: %B: Big-endian R2 no estÃ¡ apoyado.error: %B: Arquitecturas de CPU en conflicto %d/%derror: %B: Perfiles de arquitecturas en conflicto %c/%cerror: %B: Empleo en conflicto de R9error: %B: El objeto tiene contenidos especÃ­ficos del proveedor que debe ser procesado por la cadena Â«%sÂ» de compilaciÃ³nerror: %B: La etiqueta de objeto '%d, %s' es incompatible con la etiqueta '%d, %s'error: %B: El direccionamiento relativo a SB tiene conflictos con el uso de R9error: %B: Arquitectura de CPU desconocidaerror: %B: no puede mezclar rf16 con conjunto de registro completo %B.
-error: %B: conflicto de atributos de extensiÃ³n ISA %s con %s.
-error: %B: conflicto de atributos %s.
-error: %B: atributos conflictivos %s: %s con %s.
-error: %B: el tamaÃ±o de la secciÃ³n %A no es un mÃºltiplo del tamaÃ±o de la direcciÃ³nerror: %B: no se pueden combinar atributos base de CPU %s con %s.
-error: %B: no se pueden combinar los atributos de extensiÃ³n ISA %s.
-error: %B: no se pueden mezclar los atributos de virtualizaciÃ³n con %Berror: no puede encontrar sÃ­mbolo: __SDA_BASE_.error: reubicaciÃ³n IFC errÃ³nea.error: reubicaciÃ³n IFC fallada.error: El objeto fuente %B tiene EABI versiÃ³n %d, pero el objetivo %B tiene EABI versiÃ³n %derror: no coincide el formato fp16 entre %B y %Berror: tipo de reubicaciÃ³n inapropiada para la biblioteca compartida (Â¿olvidÃ³ -fpic?)error: sÃ­mbolo __rtinit indefinidoerror: valor de Tag_ABI_array_object_align_expected desconocido en %Berror: valor de Tag_ABI_array_object_alignment desconocido en %Bejecutablefallaba al crear ex9.it %s asiento de tabla hashfallaba al reservar espacio para la nueva secciÃ³n APUinfo.fallaba al calcular la nueva secciÃ³n APUinfo.no se puede instalar la nueva secciÃ³n APUinfo.error fatal al crear .fixupel enlazador genÃ©rico no puede manipular %sdirecciÃ³n relativa al puntero global fuera de rangoreubicaciÃ³n relativa al puntero global en direcciÃ³n 0x%08x cuando _gp no estÃ¡ definido
-reubicaciÃ³n relativa al puntero global cuando _gp no estÃ¡ definidosÃ­mbolo ocultosÃ­mbolo oculto se descarta la reubicaciÃ³n %s
-incr_linum(b): +%u
+divisiÃ³n por cerodst_define_location %u demasiado grandeinformaciÃ³n de Ã­ndice dinÃ¡mico no disponiblereubicaciÃ³n dinÃ¡mica en la secciÃ³n de sÃ³lo lecturala variable dinÃ¡mica Â«%sÂ» es de tamaÃ±o cerocuenta errÃ³nea de la reubicaciÃ³n dinÃ¡mica de %pB, secciÃ³n %pAla funciÃ³n de entrada Â«%sÂ» desapareciÃ³ del cÃ³digo seguroinienum, lon: %u, nombre: %.*s
+elmenum, nombre: %.*s
+finenum
+epÃ­logo: marcas: %u, cuenta: %u
+error al aÃ±adir atributoerror en %pB(%pA); no se crearÃ¡ la tabla .eh_frame_hdrerror en %pB(%pA); no se crearÃ¡ .sframeerror al leer %s: %serror al leer el tipo de cpu desde datos privados elferror: %pB puede usar la regiÃ³n superior para datos, pero %pB asume que los datos estÃ¡n exclusivamente en la memoria inferiorerror: %pB no usa instrucciones %s, mientras que %pB sÃ­ lo haceerror: %pB tiene un segmento LOAD con permisos RWXerror: %pB tiene un segmento TLS con permiso de ejecuciÃ³nerror: %pB ya estÃ¡ en el formato BE8 finalerror: %pB estÃ¡ compilado para APCS-%d mientras que el objetivo %pB usa APCS-%derror: %pB estÃ¡ compilado para el EP9312, mientras que %pB estÃ¡ compilado para XScaleerror: %pB necesita alineaciÃ³n de 8 bytes pero %pB estÃ¡ establecido para alineaciÃ³n de 4 byteserror: %pB pasa flotantes en registros de coma flotante, mientras que %pB los pasa en registros de enteroserror: %pB pasa flotantes en registros de enteros, mientras que %pB los pasa en registros de coma flotanteerror: %pB necesita mÃ¡s alineaciÃ³n de matriz que la que %pB mantieneerror: %pB necesita mÃ¡s alineaciÃ³n de pila que la que %pB mantieneerror: %pB usa la pila con alineaciÃ³n de %u bytes pero la salida usa la pila con alineaciÃ³n de %u byteserror: %pB usa instrucciones %s pero %pB usa %serror: %pB usa instrucciones %s, mientras que %pB no lo haceerror: %pB usa doble de 64 bits pero %pB usa doble de 32 bitserror: %pB usa FPU-3.0 pero %pB sÃ³lo admite FPU-2.0error: %pB usa argumentos de registro VFP, %pB no lo haceerror: %pB usa FP de hardware, mientras que %pB usa FP de softwareerror: %pB usa argumentos de registro iWMMXt, %pB no lo haceerror: %pB usa FP de software, mientras que %pB usa FP de hardwareerror: %pB usa el modelo de cÃ³digo %s mientras que %pB usa el modelo de cÃ³digo %serror: %pB usa el modelo de datos %s pero %pB sÃ³lo usa instrucciones MSP430error: %pB usa el modelo de datos %s mientras que %pB usa el modelo de datos %serror: %pB usa el modelo de cÃ³digo grande pero %pB usa instrucciones MSP430error: %pB usa el modelo de cÃ³digo pequeÃ±o pero %pB usa el modelo de datos %serror: %pB: <tamaÃ±o usado de AArch64 corrupto: 0x%x>error: %pB: <tamaÃ±o de propiedad (0x%x) corrupto: 0x%x>error: %pB: <tamaÃ±o de propiedad x86 (0x%x) corrupto: 0x%x>error: %pB: la cadena ISA de entrada (%s) no coincide con la salida (%s)error: %pB: el direccionamiento relativo a SB entra en conflicto con el uso de R9error: %pB: XLEN de entrada (%u) no coincide con la salida (%u)error: %pB: big-endian R2 no estÃ¡ admitidoerror: %pB: no se puede mezclar rf16 con el conjunto de registro completo %pBerror: %pB: arquitecturas de CPU en conflicto %d/%derror: %pB: atributos de extensiÃ³n ISA en conflicto %s con %serror: %pB: perfiles de arquitecturas en conflicto %c/%cerror: %pB: atributos en conflicto %serror: %pB: atributos en conflicto %s: %s con %serror: %pB: uso conflictivo de R9error: %pB: cadena ISA Â«%sÂ» daÃ±ada.  La primera letra deberÃ­a ser Â«iÂ» o Â«eÂ» pero es Â«%sÂ»error: %pB: cadena ISA no coincidente para combinar Â«%sÂ» y Â«%sÂ»error: %pB: el objeto tiene contenidos especÃ­ficos del proveedor que se deben procesar por la cadena de herramientas Â«%sÂ»error: %pB: la etiqueta del objeto Â«%d, %sÂ» es incompatible con la etiqueta Â«%d, %sÂ»error: %pB: se detectÃ³ un fichero objeto antiguo incompatibleerror: %pB: el tamaÃ±o de la secciÃ³n %pA no es un mÃºltiplo del tamaÃ±o de la direcciÃ³nerror: %pB: no se pueden combinar los atributos base de CPU %s con %serror: %pB: no se pueden combinar los atributos de extensiÃ³n ISA %serror: %pB: no se pueden combinar los atributos de virtualizaciÃ³n con %pBerror: %pB: arquitectura de CPU desconocidaerror: %pB: XLEN no admitido (%u), es posible que estÃ© usando una emulaciÃ³n incorrectaerror: %s: estÃ¡ desencadenando la generaciÃ³n de una pila ejecutable (porque tiene una secciÃ³n ejecutable .note.GNU-stack)error: %s: estÃ¡ desencadenando la generaciÃ³n de una pila ejecutable porque no tiene una secciÃ³n .note.GNU-stackerror: intentando enlazar %pB con un binario %pB de arquitectura diferenteerror: no se puede encontrar el sÃ­mbolo: %serror: arquitecturas de CPU en conflicto %s vs %s en %pBerror: se crearÃ¡ una pila ejecutable debido a la opciÃ³n de la lÃ­nea de ordenes -z execstackerror: el tamaÃ±o final del valor uleb128 en el desplazamiento 0x%lx en %pA desde %pB excede el espacio disponibleerror: no coincide el formato fp16 entre %pB y %pBerror: tipo de reubicaciÃ³n inapropiada para la biblioteca compartida (Â¿olvidÃ³ -fpic?)error: el objeto de origen %pB tiene versiÃ³n de EABI %d, pero el objetivo %pB tiene versiÃ³n de EABI %derror: la arquitectura ARC4 ya no se admiteerror: sÃ­mbolo __rtinit sin definirerror: valor de Tag_ABI_array_object_align_expected desconocido en %pBerror: valor de Tag_ABI_array_object_alignment desconocido en %pBse han encontrado errores procesando el fichero %pBejecutablef' y `c', o `f' y `zcff' o `zfinxfallo al asignar espacio para la nueva secciÃ³n APUinfofallo al calcular la nueva secciÃ³n APUinfofallo al encontrar la reubicaciÃ³n HI16 anteriorfallo al instalar la nueva secciÃ³n APUinfofallo al actualizar desplazamientos de fichero en el directorio de depuraciÃ³nerror fatal al crear .fixupel formato del fichero es ambiguono se reconoce el formato del ficherofichero en formato incorrectofichero demasiado grandefichero truncadoel tamaÃ±o final del valor uleb128 en el desplazamiento 0x%lx en %pA desde %pB excede el espacio disponiblese eliminaron mÃ¡s avisos sobre la codificaciÃ³n FDE que impide la generaciÃ³n de .eh_frame_hdrel enlazador genÃ©rico no puede manejar %sdirecciÃ³n relativa al puntero global fuera de rangoreubicaciÃ³n relativa al puntero global cuando _gp no estÃ¡ definidohsÃ­mbolo ocultosÃ­mbolo oculto tipos de CPU incompatibles en ficheros mach-o: %ld vs %ldincr_linum(b): +%u
 incr_linum_l: +%u
 incr_linum_w: +%u
 indirecto, definido en 0x%08x
-error interno: addend deberÃ­a ser cero para R_LM32_16_GOTerror interno: addend deberÃ­a ser cero para R_OR1K_GOT16error interno: rama/omisiÃ³n a una direcciÃ³n par detectadaerror interno: error peligrosoerror interno: reubicaciÃ³n peligrosaerror interno: combinaciÃ³n de arquitectura Â«%sÂ» con arquitectura Â«%sÂ» produjo una arquitectura desconocidaerror interno: error fuera de rangoerror interno: se usÃ³ un tipo de reubicaciÃ³n sospechosa en la biblioteca compartidaerror interno: error desconocidoerror interno: no se admite el error de reubicaciÃ³ninconsistencia interna en el tamaÃ±o de la secciÃ³n .got.locsÃ­mbolo internosÃ­mbolo interno reubicaciÃ³n de entrada invÃ¡lida al producir el formato de salida que no
- es mmo ni ELF.  Por favor utilice el programa objcopy para convertir de
- ELF o mmo, o ensamble utilizando "-no-expand" (para gcc, "-Wa, -no-expand"reubicaciÃ³n de entrada invÃ¡lida al producir el formato de salida que no
- es mmo ni ELF. Por favor utilice el programa objcopy para converitr de
- ELF o mmo, o compile utilizando la opciÃ³n de gcc "-mno-base-addresses".direcciÃ³n de reubicaciÃ³n invÃ¡lidatipo de reubicaciÃ³n %d invÃ¡lidouso invÃ¡lido de %s en contextosip2k enlazante: instrucciÃ³n de pÃ¡gina ausente en %#Lx (dest = %#Lx)ip2k enlazante: instrucciÃ³n de pÃ¡gina redundante en %#Lx (dest = %#Lx)ip2k relajante: encabezado de segmento switch corrupto.ip2k relajante: intercambio de segmento sin informaciÃ³n completa de reubicaciÃ³n de coincidencias.etiqueta, nombre: %.*s
+las secciones de entrada SFrame con diferentes abi impiden la generaciÃ³n de .sframelas secciones de entrada SFrame con diferentes versiones de formato impiden la generaciÃ³n de .sframeerror interno: el sumando deberÃ­a ser cero para %serror interno: se ha detectado rama/salto a una direcciÃ³n imparerror interno: error peligrosoerror interno: reubicaciÃ³n peligrosaerror interno: la combinaciÃ³n de la arquitectura Â«%sÂ» con la arquitectura Â«%sÂ» produjo una arquitectura desconocidaerror interno: error fuera de rangoerror interno: reubicaciÃ³n no admitidaerror interno: se ha usado un tipo de reubicaciÃ³n sospechosa en la biblioteca compartidaerror interno: error desconocidoerror interno: error de reubicaciÃ³n no admitidainconsistencia interna en el tamaÃ±o de la secciÃ³n .got.locinconsistencia interna: %lu restante != %lu mÃ¡ximo. Por favor, informe de este errorsÃ­mbolo internosÃ­mbolo interno interno: INSN_CLASS_* inalcanzable%s no vÃ¡lidola extensiÃ³n ISA no vÃ¡lida termina con <number>p en la arquitectura de .option Â«%sÂ»tipo de reubicaciÃ³n TARGET2 Â«%sÂ» no vÃ¡lidoobjetivo bfd no vÃ¡lidocontenidos no vÃ¡lidos en la secciÃ³n %pAÃ­ndice dinÃ¡mico no vÃ¡lidoreubicaciÃ³n de entrada no vÃ¡lida al producir el formato de salida que no es mmo ni ELF. Use el programa objcopy para convertir de ELF o mmo, o ensamble usando Â«-no-expandÂ» (para gcc, Â«-Wa, -no-expandÂ»)reubicaciÃ³n de entrada no vÃ¡lida al producir el formato de salida que no es mmo ni ELF. Use el programa objcopy para convertir de ELF o mmo, o compile usando la opciÃ³n de gcc Â«-mno-base-addressesÂ».operaciÃ³n no vÃ¡lidasecciÃ³n de salida no vÃ¡lida para .eh_frame_entry: %pAdirecciÃ³n de reubicaciÃ³n no vÃ¡lidaÃ­ndice de secciÃ³n no vÃ¡lido en ETIRuso no vÃ¡lido de %s en contextosrelajador ip2k: encabezado de la tabla de switch corrupto.relajador ip2k: tabla de switch sin coincidir completamente con la informaciÃ³n de reubicaciÃ³n.Â¿ Esta versiÃ³n del enlazador - %s - estÃ¡ desactualizada ?no se admite el salto (PC rel26) a la secciÃ³n (%s)salto a una direcciÃ³n que no estÃ¡ alineada con instruccionessalto a una direcciÃ³n no alineada a palabrasetiqueta, nombre: %.*s
 lon: %2u, familia: %2u num lÃ­nea (lon: %u)
-imagen enlazableenlazador stubs en grupo %u
-enlazador stubs en grupos %u
-literalla reubicaciÃ³n literal sucede para un sÃ­mbolo externomach-o: hay demasiadas secciones (%u) mÃ¡ximo es 255.
-mep: no hay reubicaciÃ³n para el cÃ³digo %dmodini
-modfin
-nombre: [val: %08lx len %d]: nativaentrada funcional nueva introducida pero ninguna salida importa biblioteca especificada:nomatriz no contigua de %s
-reubicaciones que no son dinÃ¡micas se refieren al sÃ­mbolo dinÃ¡mico %seltamaÃ±o 0x%v que no es de sobreescritura mas el tamaÃ±o de sobreescritura mÃ¡ximo de 0x%v excede el almacenamiento local
-adiciÃ³n que no es cero en la reubicaciÃ³n @fptrningunono hay suficiente espacio GOT para entradas GOT localesno se mapea: datos=%lx mapeados%d
-no se mapea: no se estableciÃ³ la variable de ambiente
-sin deffuera de rangodesbordamiento despuÃ©s de la relajaciÃ³ndesbordamiento de la reubicaciÃ³n de cabo de sobreescriturapuntero
-opciones privadas = %lxopciones privadas = %lx:opciones privadas = %lx: opciones privadas = %x:marcas privadas = 0x%lxmarcas privadas = 0x%lx:prolog: direcciÃ³n bkpt 0x%08x
-sÃ­mbolo protegidosÃ­mbolo protegido recini: nombre: %.*s
-recfin
-referencia a una direcciÃ³n almacenada [%lx:%04lx] en el espacio normal de direcciones en %04lxregreub (%d) es *DESCONOCIDA*reubicaciÃ³n Â«%sÂ» aÃºn no implementadareubicaciÃ³n fuera de rangola referencia reubicante simbÃ³lica no definida dentro del mÃ³dulola reubicaciÃ³n requiere una adiciÃ³n cerola reubicaciÃ³n debe ser un nÃºmero parno se admiten las reubicaciones entre segmentos diferentesse reabre %B: %s
-orden %d reservadartnini
-rtnfin: tam 0x%08x
-secciÃ³n direccional (%#Lx) bajo inicio de segmento (%#Lx)septip, nombre: %.*s
+imagen enlazablestubs del enlazador en %u grupostubs del enlazador en %u gruposliteralla reubicaciÃ³n literal sucede para un sÃ­mbolo externoÃ­ndice de sÃ­mbolos locales demasiado grandedesbordamiento del desplazamiento del stub Â«%sÂ» de rama largam' o `zmmulmach-o: hay demasiadas secciones (%u) el mÃ¡ximo es 255,
+archivo mal formadoreubicaciÃ³n de medio sectdiff de ARM mach-o mal formada: longitud no vÃ¡lida: %dreubicaciÃ³n de sectdiff local de ARM mach-o mal formada: longitud no vÃ¡lida: %dpar de reubicaciÃ³n de ARM mach-o mal formado: longitud no vÃ¡lida: %dpar de reubicaciÃ³n de ARM mach-o mal formado: la reubicaciÃ³n es la primera reubicaciÃ³nreubicaciÃ³n ARM mach-o mal formada: tipo de reubicaciÃ³n desconocido: %dreubicaciÃ³n de sectdiff de ARM mach-o mal formada: longitud no vÃ¡lida: %dreubicaciÃ³n estÃ¡ndar de ARM mach-o mal formada: longitud no vÃ¡lida: %d (pcrel: %d)reubicaciÃ³n de mach-o mal formada: el Ã­ndice de secciÃ³n es mayor que el nÃºmero de seccionesmemoria agotadamep: no hay reubicaciÃ³n para el cÃ³digo %dinimod
+finmod
+nombre: [val: %08lx lon %d]: nativase ha(n) introducido funciÃ³n(es) de entrada nueva(s) pero no se especificÃ³ ninguna biblioteca de importaciÃ³n de salida:noninguna direcciÃ³n asignada a la secciÃ³n %s de salida del intermediariono hay informaciÃ³n de Ã­ndice dinÃ¡mico disponibleno hay errorno hay mÃ¡s ficheros archivadosno hay sÃ­mbolosmatriz no contigua de %s
+reubicaciones que no son dinÃ¡micas hacen referencia al sÃ­mbolo dinÃ¡mico %ssÃ­mbolo no dinÃ¡mico %s en la tabla de sÃ­mbolos dinÃ¡micosel tamaÃ±o 0x%v que no es de superposiciÃ³n mÃ¡s el tamaÃ±o de superposiciÃ³n mÃ¡ximo de 0x%v excede el almacenamiento local
+sumando distinto de cero en la reubicaciÃ³n @fptrningunosecciÃ³n no representable en la salidano hay suficiente espacio GOT para entradas GOT localesno hay suficiente memoria para ordenar las reubicacionessin asignaciÃ³n: datos=%lx asignados=%d
+sin asignaciÃ³n: no se estableciÃ³ la variable de entorno
+sin establecerÂ¡ El mÃ³dulo objeto no estÃ¡ libre de errores !el desplazamiento del intermediario para la funciÃ³n de entrada Â«%sÂ» no es mÃºltiplo de su tamaÃ±ouna causa posible de este error es que el sÃ­mbolo estÃ¡ siendo referenciado en el cÃ³digo indicado como si tuviera una alineaciÃ³n mayor de la que se declarÃ³ donde se definiÃ³fuera de rangodesbordamiento despuÃ©s de la relajaciÃ³ndesbordamiento de la reubicaciÃ³n del stub de superposiciÃ³nmarco de complementos: sin descriptores de ficheros. Intente usar menos objetos/archivos
+puntero
+marcas privadas = %lxmarcas privadas = %lx:marcas privadas = %lx: marcas privadas = 0x%lxmarcas privadas = 0x%lx:prÃ³logo: direcciÃ³n bkpt 0x%08x
+sÃ­mbolo protegidosÃ­mbolo protegido q' y `zfaq' o `zqinxinirec: nombre: %.*s
+finrec
+el registro es demasiado pequeÃ±o para la longitud del nombre del sÃ­mboloreferencia a una direcciÃ³n almacenada [%lx:%04lx] en el espacio normal de direcciones en %04lxla referencia al sÃ­mbolo lejano Â«%sÂ» usando una reubicaciÃ³n incorrecta puede producir una ejecuciÃ³n incorrectaregel registro %%g%d se usÃ³ de forma incompatible: %s en %pB, anteriormente %s en %pBla secciÃ³n de registro tiene contenido
+la reubicaciÃ³n (%d) es *DESCONOCIDA*la reubicaciÃ³n contra Â«%sÂ» tiene un tipo GOT defectuoso reubicaciÃ³n para psect que no es RELreubicaciÃ³n fuera de rangola reubicaciÃ³n hace referencia a un sÃ­mbolo que no estÃ¡ definido en el mÃ³dulola reubicaciÃ³n requiere un sumando cerola reubicaciÃ³n debe ser un nÃºmero parno se admiten las reubicaciones entre segmentos diferenteseliminando la secciÃ³n Â«%pAÂ» no utilizada en el fichero Â«%pBÂ»reabriendo %pB: %sorden %d reservadainirtn
+finrtn: tamaÃ±o 0x%08x
+rv%d no admite la extensiÃ³n Â«qÂ»rv%d no admite la extensiÃ³n Â«zcfÂ»rv%de no admite la extensiÃ³n Â«hÂ»la secciÃ³n no tiene contenidostipsep, nombre: %.*s
 set_abs_pc: 0x%08x
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-objeto compartidola secciÃ³n small-data excede los 64KB; disminuya el lÃ­mite de tamaÃ±o de small-data (vea la opciÃ³n -G)som_sizeof_headers sin implementarperdÃ³n, no se admiten ficheros objeto duplicados en el guiÃ³n de sobreescritura automÃ¡tica
+objeto compartidotamaÃ±o errÃ³neo en la secciÃ³n %pAla secciÃ³n small-data es demasiado grande; disminuya el lÃ­mite de tamaÃ±o de small-data (consulte la opciÃ³n -G)som_sizeof_headers sin implementarno se puede manejar este ficherono se admiten ficheros objeto duplicados en el script de superposiciÃ³n automÃ¡tica
 disculpe: modtab, toc y extrefsyms aÃºn no estÃ¡n implementados para Ã³rdenes dysymtab.fuente (lon: %u)
-datos comunes: %s
-procedimiento estÃ¡tico (sin nombre)la entrada de cabo para %s no puede cargar .plt, desplazamiento dp = %Ldlos cabos no coinciden con el tamaÃ±o calculadosÃ­mbolosÃ­mbolo informaciÃ³n de matriz de versiÃ³n de sistema:
-term(b): 0x%02xterm_w: 0x%04xel destino bfin no soporta actualmente la generaciÃ³n de copia reubicabletipo especÃ­fico para elemento:
-tipo especÃ­fico para subcadena %u:
-
+reubicaciÃ³n ALPHA_R_BSR falsael anÃ¡lisis de pila ignorarÃ¡ la llamada de %s a %s
+desbordamiento de pila (%d) en _bfd_vms_pushsubdesbordamiento de pila en _bfd_vms_popdatos estÃ¡ndar: %s
+la direcciÃ³n inicial de Â«%sÂ» es diferente a la del enlace anteriorprocedimiento estÃ¡tico (sin nombre)los stubs no coinciden con el tamaÃ±o calculadosÃ­mbolosÃ­mbolo el sÃ­mbolo Â«%sÂ» tiene st_other no vÃ¡lido para versiÃ³n 1 de ABIel sÃ­mbolo Â«%sÂ» tiene tipos divergentes: REGISTER en %pB, anteriormente %s en %pBel enlace de sÃ­mbolo STB_GNU_UNIQUE sÃ³lo es compatible con objetivos GNU y FreeBSDel sÃ­mbolo necesita una secciÃ³n de depuraciÃ³n que no existeel tipo de sÃ­mbolo STT_GNU_IFUNC sÃ³lo es compatible con objetivos GNU y FreeBSDerror de llamada al sistemainformaciÃ³n de matriz de versiÃ³n de sistema:
+term(b): 0x%02xterm_w: 0x%04xactualmente el objetivo bfin no admite la generaciÃ³n de reubicaciones de copiahay un conflicto combinando las marcas de cabecera ELF desde %pBdemasiadas entradas GOT para -fpic, recompile con -fPICintente activando la relajaciÃ³n para evitar truncamientos de reubicaciÃ³nespec de tipo para elemento:
+espec de tipo para subÃ­ndice %u:
 puntero tipado
 espectip (lon: %u)
-incapaz de ubicar datos para orden de carga %#xno se puede encontrar el pegamento ARM Â«%sÂ» para Â«%sÂ»no se puede encontrar el pegamento THUMB Â«%sÂ» para Â«%sÂ»incapaz de distribuir orden de carga desconocida %#xno se puede leer en la secciÃ³n %s desde %Bincapaz de escribir orden de carga desconocida %#xcadena de bit sin alinear de %s
-convenciÃ³n de llamada incierta para un sÃ­mbolo que no es COFFindefinido referencia %s sin definir en el sÃ­mbolo complejo: %stipo de entrada egsd %u sin manipular
-subtipo emh %u sin manipular
-desconocidoorden ETIR %d desconocidaerror desconocidovalor de encabezado de orden de byte %#x desconocidoorden de lÃ­nea %d desconocidaoperador desconocido '%c' en el sÃ­mbolo complejoorden fuente %d desconocidaarquitectura v850 desconocidadesconocido: %xnÃºmero reubicante MIPS no reconocido: %dreubicaciÃ³n no reconocida (0x%x)no se admite la orden STA %sno se admite la reubicaciÃ³nno se admite el tipo de reubicaciÃ³nno se admite la reubicaciÃ³nno se admite la reubicaciÃ³n entre espacios de direcciones datos/insnse usan valores mÃºltiples de gparquitectura v850 E3arquitectura v850arquitectura v850earquitectura v850e1arquitectura v850e2arquitectura v850e2v3v850e3v5 como arquitecturavops: 0x%02x, valor: 0x%08x vma:			DireccInicio	 DireccFin 	  DatosDesenvuelta
-aviso: %B y %B difieren en tamaÃ±o wchar_taviso: %B y %B difieren en si el cÃ³digo estÃ¡ compilado para DSBTaviso: %B tiene un Ã­ndice de tablas de cadenas corrupto - se descartaaviso: %B estÃ¡ truncado: esperaba el tamaÃ±o de fichero core >= %Lu, se encontrÃ³: %lluaviso: %B emplea â€˜enumsâ€™ %s aunque la salida emplea â€˜enumsâ€™ %s; emplea valores â€˜enumâ€™ entre objetos quizÃ¡ fallaaviso: %B emplea wchar_t de %u bytes aunque la salida usa wchar_t de %u bytes; el uso de valores wchar_t entre objetos puede fallaraviso: %B: tamaÃ±o GNU_PROPERTY_TYPE (%ld) corrupto: %#lxadvertencia: %B: GNU_PROPERTY_TYPE corrupto (%ld) tipo (0x%x) datosz: 0x%xaviso: %B: corrupto no copia en tamaÃ±o protegido: 0x%xaviso: %B; tamaÃ±o de pila corrupta: 0x%xaviso: %B: el sÃ­mbolo local Â«%sÂ» no tiene secciÃ³ncuidado: %B: tipo GNU_PROPERTY_TYPE (%ld) no soportado: 0x%xaviso: %s excede el tamaÃ±o de la secciÃ³n
-aviso: %s cubre %s
-aviso: la secciÃ³n %s es de tamaÃ±o ceroaviso: se intenta exportar el sÃ­mbolo sin definir Â«%sÂ»aviso: se llama al sÃ­mbolo %s que no es funciÃ³n, definido en %Baviso: descartando secciÃ³n dinÃ¡mica %saviso: se genera una biblioteca compartida que contiene cÃ³digo que no esPICaviso: se genera una biblioteca compartida que contiene cÃ³digo que no es PIDaviso: la reubicaciÃ³n referencÃ­a un segmento diferenteaviso: la secciÃ³n Â«%sÂ» se estÃ¡ convirtiendo en una notaaviso: el tipo de la secciÃ³n `%A' cambiÃ³ a PROGBITSaviso: el tipo y tamaÃ±o del sÃ­mbolo dinÃ¡mico Â«%sÂ» no estÃ¡n definidosaviso: no se puede establecer el tamaÃ±o de la secciÃ³n %s en %Baviso: no se puede actualizar el contenido de la secciÃ³n %s en %Baviso: escribiendo secciÃ³n `%A' en desplazamiento de fichero enorme (pe negativo)aviso: secciÃ³n de datos xdata corruptaaviso: secciÃ³n de datos xdata corrupto
-sÃ­no se le permite definir %s en un guiÃ³n
\ No newline at end of file
+no se pueden asignar datos para la orden de carga %#xno se puede encontrar el pegamento %s Â«%sÂ» para Â«%sÂ»no se puede encontrar la secciÃ³n de salida equivalente para el sÃ­mbolo Â«%sÂ» de la secciÃ³n Â«%sÂ»no se puede distribuir orden de carga desconocida %#xno se puede leer el registro de EIHS en el desplazamiento %#xno se puede leer en la secciÃ³n %s desde %pBno se puede escribir la orden de carga desconocida %#xcadena de bits sin alinear de %s
+sin definir referencia %s sin definir en el sÃ­mbolo complejo: %snÃºmero de mÃ¡quina inesperadotipo de secciÃ³n de fichero nÃºcleo OSF/1 %d sin manejartipo de entrada egsd %u sin manejar
+subtipo emh %u sin manejar
+reubicaciÃ³n %s no manejadadesconocidosubtipo de EGSD %d desconocidoorden ETIR %d desconocidaextensiÃ³n ISA desconocida Â«%sÂ» en arquitectura de .option Â«%sÂ»atributo desconocido para el sÃ­mbolo Â«%sÂ»: 0x%02xtipo bÃ¡sico %d desconocidoerror desconocidovalor de orden de byte de encabezado %#x desconocidoorden de lÃ­nea %d desconocidaoperador desconocido Â«%cÂ» en el sÃ­mbolo complejoreubicaciÃ³n %s desconocidareubicaciÃ³n %s + %s desconocidaorden fuente %d desconocidasÃ­mbolo desconocido en la orden %sarquitectura v850 desconocidadesconocido: %xno se reconoce el INPUT_SECTION_FLAG %s
+no se reconoce el id de objetivo COFF TI Â«0x%xÂ»reubicaciÃ³n .stab no admitidano se admite la orden STA %sreubicaciÃ³n no admitidareubicaciÃ³n no admitidano se admite la reubicaciÃ³n entre espacios de direcciones datos/insntipo de reubicaciÃ³n no admitidose usan varios valores de gpv' o `zve64d' o `zve64f' o `zve32fv' o `zve64x' o `zve32xarquitectura v850 E3arquitectura v850arquitectura v850earquitectura v850e1arquitectura v850e2arquitectura v850e2v3arquitectura v850e3v5la variable Â«%sÂ» sÃ³lo puede estar en una de las regiones de datos small, zero y tinyla variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos small y tinyla variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos small y zerola variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos zero y tinyla variable Â«%sÂ» no puede ocupar mÃºltiples regiones de datos smallvflags: 0x%02x, valor: 0x%08x vma:			DireccInicio	 DireccFin 	  DatosDesenrollado
+aviso, el tamaÃ±o de la secciÃ³n .pdata (%ld) no es un mÃºltiplo de %d
+aviso: %pB y %pB difieren en el tamaÃ±o de wchar_taviso: %pB y %pB difieren en si el cÃ³digo estÃ¡ compilado para DSBTaviso: %pB no admite interoperabilidad, mientras que %pB sÃ­ lo haceaviso: %pB tiene un segmento LOAD con permisos RWXaviso: %pB tiene un segmento TLS con permiso de ejecuciÃ³naviso: %pB tiene un Ã­ndice de tabla de cadenas corruptoaviso: %pB tiene un encabezado de programa con alineaciÃ³n no vÃ¡lidaaviso: %pB tiene una secciÃ³n que se extiende mÃ¡s allÃ¡ del final del ficheroaviso: %pB tiene un segmento que se extiende mÃ¡s allÃ¡ del final del ficheroaviso: %pB admite interoperabilidad, mientras que %pB no lo haceaviso: %pB usa la versiÃ³n de especificaciÃ³n privilegiada %u.%u.%u pero la salida usa la versiÃ³n %u.%u.%uaviso: %pB usa %s (establecido por %pB), %pB usa %saviso: %pB usa %s (establecido por %pB), %pB usa ABI MSA desconocido %daviso: %pB usa %s (establecido por %pB), %pB usa ABI de coma flotante desconocido %daviso: %pB usa enums %s aunque la salida es para usar enums %s; el uso de valores enum entre objetos podrÃ­a fallaraviso: %pB usa wchar_t de %u bytes aunque la salida es para usar wchar_t de %u bytes. El uso de valores wchar_t entre objetos puede fallaraviso: %pB usa ABI MSA desconocido %d (establecido por %pB), %pB usa %saviso: %pB usa ABI MSA desconocido %d (establecido por %pB), %pB usa ABI MSA desconocido %daviso: %pB usa ABI de coma flotante desconocido %d (establecido por %pB), %pB usa %saviso: %pB usa ABI de coma flotante desconocido %d (establecido por %pB), %pB usa ABI de coma flotante %d desconocidoaviso: %pB: configuraciÃ³n de plataformas en conflictoaviso: %pB: configuraciÃ³n de plataforma en conflicto %s con %saviso: %pB: tamaÃ±o de GNU_PROPERTY_TYPE (%ld) corrupto: %#lxaviso: %pB: GNU_PROPERTY_TYPE corrupto (%ld) tipo (0x%x) datasz: 0x%xaviso: %pB: no copiar corrupto en tamaÃ±o protegido: 0x%xaviso: %pB: tamaÃ±o de pila corrupto: 0x%xaviso: %pB: el sÃ­mbolo local Â«%sÂ» no tiene secciÃ³naviso: %pB: atributo de objeto ARC desconocido %daviso: %pB: atributo de objeto EABI desconocido %daviso: %pB: atributo de objeto MSPABI desconocido %daviso: %pB: tipo de GNU_PROPERTY_TYPE (%ld) no admitido: 0x%xaviso: %s excede el tamaÃ±o de la secciÃ³n
+aviso: %s se superpone a %s
+aviso: la secciÃ³n %s es de tamaÃ±o ceroaviso: se debe usar %s en lugar de %saviso: %s: que falte la secciÃ³n .note.GNU-stack implica una pila ejecutableaviso: %s: requiere una pila ejecutable (porque la secciÃ³n .note.GNU-stack es ejecutable)aviso: --plt-localentry es especialmente peligroso sin compatibilidad ld.so para detectar violaciones ABIaviso: --plt-localentry es incompatible con el cÃ³digo relativo a pc power10aviso: NOTE: las discrepancias de alineaciÃ³n pueden causar problemas reales.  Se recomienda investigar.aviso: NOTE: las discrepancias de tamaÃ±o pueden causar problemas reales.  Se recomienda investigar.aviso: reubicaciÃ³n RL78_SYM con un sÃ­mbolo desconocidoaviso: reubicaciÃ³n RX_SYM con un sÃ­mbolo desconocidoaviso: la alineaciÃ³n %u del sÃ­mbolo comÃºn Â«%sÂ» en %pB es mÃ¡s grande que la alineaciÃ³n (%u) de su secciÃ³n %pAaviso: la alineaciÃ³n %u del sÃ­mbolo normal Â«%sÂ» en %pB es mÃ¡s pequeÃ±a que %u usada por la definiciÃ³n comÃºn en %pBaviso: la alineaciÃ³n %u del sÃ­mbolo Â«%sÂ» en %pB es mÃ¡s pequeÃ±a que %u en %pBaviso: se intenta exportar el sÃ­mbolo sin definir Â«%sÂ»aviso: llamada al sÃ­mbolo %s que no es funciÃ³n, definido en %pBaviso: se quita la marca de interoperabilidad de %pB porque se ha enlazado con Ã©l, cÃ³digo que no es interoperable en %pBaviso: se quita la marca de interoperabilidad de %pB debido a una peticiÃ³n externaaviso: datos de desenrollado corruptos
+aviso: descartando la secciÃ³n dinÃ¡mica %saviso: activando una pila ejecutable debido a la opciÃ³n de la lÃ­nea de ordenes -z execstackaviso: la marca de arquitectura del fichero %pB %s entra en conflicto con el objetivo %s, establezca la marca de arquitectura de destino en %saviso: la marca de arquitectura del fichero %pB %s entra en conflicto con el objetivo ck%s, usando %saviso: se ignora la opciÃ³n gc-sectionsaviso: se genera una biblioteca compartida que contiene cÃ³digo que no es PICaviso: se genera una biblioteca compartida que contiene cÃ³digo que no es PIDaviso: no se establece la marca de interoperabilidad de %pB ya que se habÃ­a especificado con anterioridad como no interoperableaviso: la versiÃ³n de especificaciÃ³n privilegiada 1.9.1 no se puede enlazar con otras versiones de especificaciÃ³naviso: la reubicaciÃ³n referencia un segmento diferenteaviso: la secciÃ³n Â«%sÂ» se estÃ¡ convirtiendo en una notaaviso: el tipo de la secciÃ³n Â«%pAÂ» cambiÃ³ a PROGBITSaviso: el sÃ­mbolo Â«%sÂ» es ambas secciÃ³n y no secciÃ³naviso: el tipo y tamaÃ±o del sÃ­mbolo dinÃ¡mico Â«%sÂ» no estÃ¡n definidosaviso: el tipo del sÃ­mbolo Â«%sÂ» ha cambiado de %d a %d en %pBaviso: no se puede establecer el tamaÃ±o de la secciÃ³n %s en %pBaviso: no se pueden actualizar los contenidos de la secciÃ³n %s en %pBaviso: nombre de arquitectura Â«%#xÂ» no reconocidoaviso: arquitectura eflag Â«%#lxÂ» no reconocidaaviso: marcas de arquitectura antiguas o no establecidas. Use la mÃ¡quina predeterminadaaviso: la escritura del archivo fue lenta: se reescribe la marca de tiempoaviso: secciÃ³n de escritura Â«%pAÂ» en desplazamiento de fichero enorme (es decir, negativo)aviso: secciÃ³n xdata corrupta
+la extensiÃ³n x ISA Â«%sÂ» debe configurarse con las versionessÃ­no se le permite definir %s en un scriptzbb' o `zbkbzbc' o `zbkczcb' y `zbazcb' y `zbbzcb' y `zmmul', o `zcb' y `mzfh' y `zfazfh' y `zfa', o `zvfh' y `zfazfh' o `zhinxzfh' o `zvfhzfhmin' y `d', o `zhinxmin' y `zdinxzfhmin' y `q', o `zhinxmin' y `zqinxzfhmin' o `zhinxminzihintntl' y `c', o `zihintntl' y `zcazknd' o `zknezvbbzvbczvkbzvkgzvknedzvknha' o `zvknhbzvksedzvkshlas extensiones zvl*b necesitan activar la extensiÃ³n Â«vÂ» o Â«zveÂ»PRIu64PRIx64PRId64%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: TLS relocation at 0x% over non-TLS symbol %s (0x%x)
+%pB: TLS local relocation at 0x% over imported symbol %s
+%pB: relocation (%d) at 0x% has wrong r_rsize (0x%x)
+%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: relocation (%d) at (0x%) has wrong r_rsize (0x%x)
+%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: stripping non-representable symbol '%s' (value 0x%)%pB: bad reloc address %# in section `%pA'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(%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(%pA+%#): misaligned symbol `%s' (%#) for relocation %s%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: %pA+%: relocation addend % too large%pB: version count (%) does not match symbol count (%ld)%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: bad symbol definition: `Main' set to % rather than the start address %
+%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB(%pA+%#): %s relocation offset out of order%pB(%pA+%#): %s relocation offset out of range%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 csect%pB: Unable to find a stub csect in rangeof relocation at %# targeting'%s'TOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB: error: erratum 843419 immediate 0x% out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead%pB(%pA+%#): unresolvable %s relocation in section `%s'%# invaild imm%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x% without any addend, but may be 0x% after adding the %%pcrel_lo addend%pB: Data Directory (%lx bytes at %) extends across section boundary at %%pB: desplazamiento de cadena no vÃ¡lido % >= %%pB: reubicaciÃ³n TOC en %# al sÃ­mbolo Â«%sÂ» sin ninguna entrada TOC%pB: ReubicaciÃ³n TLS en 0x% sobre un sÃ­mbolo que no es TLS %s (0x%x)
+%pB: reubicaciÃ³n local TLS en 0x% sobre el sÃ­mbolo importado %s
+%pB: la reubicaciÃ³n (%d) en 0x% tiene r_rsize errÃ³neo (0x%x)
+%pB: %#: aviso: desplazamiento R_SH_USES errÃ³neo%pB: %#: aviso: R_SH_USES apunta al insn %#x no reconocido%pB: %#: aviso: desplazamiento de carga R_SH_USES errÃ³neo%pB: %#: aviso: no se pudo encontrar la reubicaciÃ³n esperada%pB: %#: aviso: sÃ­mbolo en secciÃ³n inesperada%pB: %#: aviso: no se pudo encontrar la reubicaciÃ³n COUNT esperada%pB: %#: aviso: contador errÃ³neo%pB: %#: fatal: desbordamiento de reubicaciÃ³n durante la relajaciÃ³n%pB: la reubicaciÃ³n (%d) en (0x%) tiene r_rsize errÃ³neo (0x%x)
+%pB: tipo de reubicaciÃ³n %d ilegal en la direcciÃ³n %#%pB: tamaÃ±o incorrecto de tabla de cadenas %%pB: eliminando el sÃ­mbolo no representable Â«%sÂ» (valor 0x%)%pB: direcciÃ³n de reubicaciÃ³n %# incorrecta en la secciÃ³n Â«%pAÂ»error: %pB(%pA) es demasiado grande (%# bytes)Error DWARF: el desplazamiento (%) es mayor que o igual que el tamaÃ±o de %s (%)Error DWARF: el contador de datos (%#) es mÃ¡s grande que el tamaÃ±o del bÃºferError DWARF: tipo de contenido de formato % desconocidoError DWARF: la secciÃ³n de informaciÃ³n de lÃ­nea es demasiado peqeuÃ±a (%)Error DWARF: los datos de informaciÃ³n de lÃ­nea son mÃ¡s grandes (%#) que el espacio restante en la secciÃ³n (%#lx)Error DWARF: no se puede leer la referencia alternativa %Error DWARF: no se puede ubicar la referencia DIE de instancia abstracta %%pB(%pA+%#): reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»%pB: desplazamiento de cadena no vÃ¡lido %u >= % para la secciÃ³n Â«%sÂ»%pB: campo de tamaÃ±o no vÃ¡lido en el encabezado de la secciÃ³n de grupo: %#%pB: secciÃ³n %pA lma %# ajustado a %#%pB: aviso: se ha detectado un segmento cargable vacÃ­o en vaddr=%#, Â¿esto es intencional?%pB: aviso: la alineaciÃ³n de segmento de %# es demasiado grande%pB(%pA+%#): la reubicaciÃ³n CMEM a Â«%sÂ» es no vÃ¡lida, 16 MSB deberÃ­a ser %#x (el valor es %#)%pB(%pA+%#): la reubicaciÃ³n CMEM a Â«%s+%#Â» es no vÃ¡lida, 16 MSB deberÃ­a ser %#x (el valor es %#)ERROR: stub CMSE (secciÃ³n %s) demasiado lejos (%#) del destino (%#)%pB(%pA+%#): instrucciÃ³n %s inesperada Â«%#lxÂ» en el trampolÃ­n TLS%pB(%pA+%#): instrucciÃ³n %s inesperada Â«%#lxÂ» referenciada por TLS_GOTDESC%pB(%pA+%#): reubicaciÃ³n %s no permitida en un objeto compartido%pB(%pA+%#): sÃ³lo se permiten las instrucciones ADD o SUB en las reubicaciones de grupo ALU%pB(%pA+%#): desbordamiento al dividir %# para la reubicaciÃ³n de grupo %s%pB(%pA+%#): reubicaciÃ³n %s contra la secciÃ³n SEC_MERGE%pB(%pA+%#): %s usado con el sÃ­mbolo TLS %s%pB(%pA+%#): %s usado con un sÃ­mbolo que no es TLS %s%pB(%#): error: no se puede crear el intermediario de STM32L4XX. Salto fuera de rango por % bytes. No se puede codificar la instrucciÃ³n de la rama%pB(%pA+%#): reubicaciÃ³n irresoluble contra el sÃ­mbolo Â«%sÂ»%pB(%pA+%#): reubicaciÃ³n contra Â«%sÂ»: error %d%pB: la reubicaciÃ³n en Â«%pA+%#Â» referencia al sÃ­mbolo Â«%sÂ» con sumando distinto de cero%pB, secciÃ³n %pA: reubicaciÃ³n %s con sumando % distinto de cero contra el sÃ­mbolo local%pB, secciÃ³n %pA: reubicaciÃ³n %s con sumando % distinto de cero contra el sÃ­mbolo Â«%sÂ»%pB(%pA+%#): no se puede alcanzar %s, recompile con -ffuntion-sections%pB(%pA+%#): el ajuste %s para insn %#x no se admite en un enlace no compartido%pB(%pA+%#): no se puede manejar %s para %s%pB: la transiciÃ³n TLS desde %s hasta %s contra Â«%sÂ» en %# en la secciÃ³n Â«%pAÂ» ha falladoenlazador ip2k: falta la instrucciÃ³n de pÃ¡gina en %# (dest = %#)enlazador ip2k: instrucciÃ³n de pÃ¡gina redundante en %# (dest = %#)%pB: aviso: %s apunta a reubicaciÃ³n no reconocida en %#reubicaciÃ³n relativa al puntero global en la direcciÃ³n %# cuando _gp no estÃ¡ definido
+no se puede alcanzar %s (en %#) desde el puntero global (en %#) porque el desplazamiento (%) estÃ¡ fuera del rango permitido, -32678 a 32767
+%pB(%pA+%#): error: %s con instrucciÃ³n inesperada %#x%pB(%pA): reubicaciÃ³n de PID %s insegura en %# (contra %s en %s)%pB(%pA+%#): instrucciÃ³n no vÃ¡lida para la reubicaciÃ³n TLS %s%pB: la reubicaciÃ³n CALL15 en %# no es contra un sÃ­mbolo global%pB: %#: aviso: R_SH_USES apunta al insn 0x%x no reconocido%pB: %#: fatal: objetivo de rama desalineado para reubicaciÃ³n que admite relajaciÃ³n%pB: %#: fatal: reubicaciÃ³n %s no alineada %#%pB: %#: fatal: la reubicaciÃ³n R_SH_PSHA % no estÃ¡ en el rango -32..32%pB: %#: fatal: la reubicaciÃ³n R_SH_PSHL % no estÃ¡ en el rango -32..32%pB(%pA+%#): no se puede emitir el ajuste para Â«%sÂ» en la secciÃ³n de sÃ³lo lectura%pB(%pA+%#): reubicaciÃ³n %s contra un sÃ­mbolo externo Â«%sÂ»%pB(%pA): el desplazamiento en la reubicaciÃ³n para la traducciÃ³n GD->LE es demasiado pequeÃ±o: %#%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0xd4??)%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0xc7??)%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0xd1??)%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0x310c)%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0x410b)%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0x34cc)%pB(%pA): el desplazamiento en la reubicaciÃ³n para la traducciÃ³n IE->LE es demasiado pequeÃ±o: %#%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0xd0??: mov.l)%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0x0?12: stc)%pB(%pA+%#): instrucciÃ³n %#04X inesperada (se esperaba 0x0?ce: mov.l)%pB(%pA): el desplazamiento en la reubicaciÃ³n para la traducciÃ³n GD->IE es demasiado pequeÃ±o: %#%pB(%pA): el desplazamiento en la reubicaciÃ³n para la traducciÃ³n LD->LE es demasiado pequeÃ±o: %#%pB(%s+%#): reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»%pB: %#: aviso: %s apunta a insns no reconocidos%pB: %#: aviso: %s apunta al insn %#x no reconocido%pB: %#: aviso: %s apunta a reubicaciÃ³n no reconocida%pB: %#: aviso: %s apunta a reubicaciÃ³n no reconocida %#%pB: aviso: el sumando GOT de % a Â«%sÂ» no coincide con la sumando GOT anterior de %%pB: aviso: se ha ignorado el sumando PLT de % a Â«%sÂ» desde la secciÃ³n %pA%pB: aviso: reubicaciÃ³n %s a %# desde la secciÃ³n %pA%pB(%pA+%#): desplazamiento de reubicaciÃ³n fuera de rango (tamaÃ±o=%#)%pB(%pA+%#): no se pudo decodificar la instrucciÃ³n. Posible discrepancia en la configuraciÃ³n%pB(%pA+%#): no se pudo decodificar la instrucciÃ³n para la reubicaciÃ³n XTENSA_ASM_SIMPLIFY. Posible discrepancia en la configuraciÃ³n%pB(%pA+%#): reparaciÃ³n inesperada para la reubicaciÃ³n %s%pB: %pA+%#: aviso: reubicaciÃ³n %s contra insn inesperadola entrada de stub para %s no puede cargar el .plt, desplazamiento dp = %%pB(%pA+%#): no se puede alcanzar %s%pB: no se puede relajar br en %# en la secciÃ³n Â«%pAÂ». Utilice brl o una rama indirecta%pB: segmento de datos corto desbordado (%# >= 0x400000)%pB: falta la secciÃ³n TLS para la reubicaciÃ³n %s contra Â«%sÂ» en %# en la secciÃ³n Â«%pAÂ».%pB: No se puede relajar br (%s) a Â«%sÂ» en %# en la secciÃ³n Â«%pAÂ» con tamaÃ±o %# (> 0x1000000).aviso: el tamaÃ±o del sÃ­mbolo Â«%sÂ» ha cambiado de % en %pB a % en %pB%pB(%pA): la reubicaciÃ³n % tiene un Ã­ndice de sÃ­mbolo %ld no vÃ¡lido%pB: error de inconsistencia interna para el valor para
+ un registro global asignado por el enlazador: enlazado: %# != relajado: %#%pB: directiva LOCAL: el registro $% no es un registro local; el primer registro global es $%%pB(%pA+%#): sÃ­mbolo desalineado Â«%sÂ» (%#) para la reubicaciÃ³n %s%pB: la reubicaciÃ³n %s contra el sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» tiene sumando distinto de cero: %%pB: el sumando %s%#x en la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ» en %# en la secciÃ³n Â«%pAÂ» estÃ¡ fuera de rango%pB: %pA+%: sumando de reubicaciÃ³n % demasiado grande%pB: el contador de versiÃ³n (%) no coincide con la cuenta de sÃ­mbolos (%ld)%pB: Ã­ndice de sÃ­mbolo de reubicaciÃ³n incorrecto (%# >= %#lx) para el desplazamiento %# en la secciÃ³n Â«%pAÂ»%pB: Ã­ndice de sÃ­mbolos distinto de cero (%#) para el desplazamiento %# en la secciÃ³n Â«%pAÂ» cuando el fichero objeto no tiene ninguna tabla de sÃ­mboloserror: %pB contiene una reubicaciÃ³n (%#) para la secciÃ³n %pA que hace referencia a un sÃ­mbolo global no existente%pB: %pA+%#: no se ha encontrado ningÃºn sÃ­mbolo para INHERIT%pB: tamaÃ±o de secciÃ³n Â«.reginfoÂ» incorrecto; esperado %, obtenido %%pB: reubicaciÃ³n GOT en %# no esperada en ejecutables%pB: la reubicaciÃ³n CALL16 en %# no es contra un sÃ­mbolo global%pB: no se puede encontrar una reubicaciÃ³n LO16 coincidente contra Â«%sÂ» para %s en %# en la secciÃ³n Â«%pAÂ»%pB: VMA de entrada Â«%pAÂ» de %# fuera del rango de 32 bits admitido; considere usar Â«-Ttext-segment=...Â»%pB: desplazamiento Â«%pAÂ» de % desde Â«%pAÂ» mÃ¡s allÃ¡ del rango de ADDIUPC%pB: VMA de inicio Â«%pAÂ» de %# fuera del rango de 32 bits admitido; considere usar Â«-Ttext-segment=...Â»%pB: la direcciÃ³n de 64 bits %# estÃ¡ fuera de rango para el fichero Intel Hex%pB: la direcciÃ³n %# estÃ¡ fuera de rango para el fichero Intel HexdirecciÃ³n de secciÃ³n (%#) debajo del inicio del segmento (%#)%pB: acceso mÃ¡s allÃ¡ del final de la secciÃ³n combinada (%)%pB: intento de emitir contenidos en una direcciÃ³n que no es mÃºltiplo de 4 %#%pB: definiciÃ³n de sÃ­mbolo incorrecta: Â«MainÂ» se estableciÃ³ como % en lugar de la direcciÃ³n de inicio %
+%pB: demasiados registros iniciados: longitud de secciÃ³n %%pB: direcciÃ³n de inicio no vÃ¡lida para los registros inicializados de longitud %: %#%pB(%pA+%#): desplazamiento de reubicaciÃ³n %s fuera de orden%pB(%pA+%#): desplazamiento de reubicaciÃ³n %s fuera de rango%pB: sÃ­mbolo XTY_ER Â«%sÂ» incorrecto: clase %d scnum %d scnlen %%pB: sÃ­mbolo XMC_TC0 Â«%sÂ» es clase %d scnlen %%pB: reubicaciÃ³n %s:% no contenido en csect%pB: No se puede encontrar un csect stub en el rango de reubicaciÃ³n en %# dirigido a Â«%sÂ»Desbordamiento de TOC: %# > 0x10000. Pruebe con -mminimal-toc al compilar%pB: error: errata 843419 inmediata 0x% fuera de rango para ADR (fichero de entrada demasiado grande) y --fix-cortex-a53-843419=adr usado.  Ejecute el enlazador con --fix-cortex-a53-843419=full en su lugar%pB(%pA+%#): reubicaciÃ³n %s irresoluble en la secciÃ³n Â«%sÂ»%# imm no vÃ¡lido%pB(%pA+%#): % bytes necesarios para la alineaciÃ³n al lÃ­mite de % bytes, pero sÃ³lo hay % presentesdesbordamiento de %%pcrel_lo con un sumando, el valor de %%pcrel_hi es 0x% sin ningÃºn sumando, pero puede ser 0x% despuÃ©s de aÃ±adir el sumando %%pcrel_lo%pB: el directorio de datos (%lx bytes en %) se extiende a travÃ©s del lÃ­mite de la secciÃ³n en %
\ 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.20200303/bfd/po/es.po ./bfd/po/es.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/es.po	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/es.po	2026-03-05 02:07:20.000000000 +0000
@@ -3,815 +3,774 @@
 # This file is distributed under the same license as the binutils package.
 # Cristian OthÃ³n MartÃ­nez Vera <cfuga@cfuga.mx>, 2002 - 2012
 # Francisco Javier Serrador <fserrador@gmail.com>, 2018
+# Rodrigo LledÃ³ Milanca <rodhos92@gmail.com>, 2024
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.30.0\n"
-"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n"
-"POT-Creation-Date: 2018-01-13 13:44+0000\n"
-"PO-Revision-Date: 2018-03-18 12:38+0200\n"
-"Last-Translator: Javier <fserrador@gmail.com>\n"
+"Project-Id-Version: bfd 2.41.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2024-01-15 14:55+0000\n"
+"PO-Revision-Date: 2024-06-14 15:58+0200\n"
+"Last-Translator: Rodrigo LledÃ³ Milanca <rodhos92@gmail.com>\n"
 "Language-Team: Spanish <es@tp.org.es>\n"
 "Language: es\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Virtaal 0.7.1\n"
+"X-Generator: Poedit 3.4.3\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
 
-#: aout-adobe.c:126
+#: aout-cris.c:196
 #, c-format
-msgid "%B: Unknown section type in a.out.adobe file: %x\n"
-msgstr "%B: Tipo seccional desconocido en el fichero a.out.adobe: %x\n"
+msgid "%pB: unsupported relocation type exported: %#x"
+msgstr "%pB: se ha exportado un tipo de reubicaciÃ³n no admitido: %#x"
 
-#: aout-cris.c:200
+#: aout-cris.c:242
 #, c-format
-msgid "%B: Invalid relocation type exported: %d"
-msgstr "%B: tipo reubicante invÃ¡lido exportado: %d"
+msgid "%pB: unsupported relocation type imported: %#x"
+msgstr "%pB: se ha importado un tipo de reubicaciÃ³n no admitido: %#x"
 
-#: aout-cris.c:244
+#: aout-cris.c:254
 #, c-format
-msgid "%B: Invalid relocation type imported: %d"
-msgstr "%B: Se importÃ³ un tipo de reubicaciÃ³n invÃ¡lido: %d"
+msgid "%pB: bad relocation record imported: %d"
+msgstr "%pB: se ha importado un registro de reubicaciones incorrecto: %d"
 
-#: aout-cris.c:256
+#: aoutx.h:1265 aoutx.h:1612 pdp11.c:1237 pdp11.c:1510
 #, c-format
-msgid "%B: Bad relocation record imported: %d"
-msgstr "%B: equivocaciÃ³n de registro reubicable importado: %d"
+msgid "%pB: can not represent section `%pA' in a.out object file format"
+msgstr "%pB: no se puede representar la secciÃ³n Â«%pAÂ» en un formato de fichero objeto a.out"
 
-#: aoutx.h:1284 aoutx.h:1636 pdp11.c:1152 pdp11.c:1413
+#: aoutx.h:1576 pdp11.c:1482
 #, c-format
-msgid "%B: can not represent section `%A' in a.out object file format"
-msgstr "%B: no se puede representar la secciÃ³n `%A' dentro del formato de fichero objeto a.out"
+msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
+msgstr "%pB: no se puede representar la secciÃ³n para el sÃ­mbolo Â«%sÂ» en el formato de fichero objeto a.out"
 
-#: aoutx.h:1600 pdp11.c:1385
-#, c-format
-msgid "%B: can not represent section for symbol `%s' in a.out object file format"
-msgstr "%B: no se puede representar la secciÃ³n para el sÃ­mbolo Â«%sÂ» en el formato de fichero objeto a.out"
-
-#: aoutx.h:1603 vms-alpha.c:7853
+#: aoutx.h:1579 vms-alpha.c:8461
 msgid "*unknown*"
 msgstr "*desconocido*"
 
-#: aoutx.h:2422 aoutx.h:2440
-msgid "%B: attempt to write out unknown reloc type"
-msgstr "%B: intenta escribir fuera de tipo de reubicaciÃ³n desconocida"
-
-#: aoutx.h:4093 aoutx.h:4414
-msgid "%P: %B: unexpected relocation type\n"
-msgstr "%P: %B: tipo de reubicaciÃ³n inesperado\n"
-
-#: aoutx.h:5440 pdp11.c:3708
-#, c-format
-msgid "%B: relocatable link from %s to %s not supported"
-msgstr "%B: enlace reubicable desde %s hasta %s sin apoyo"
-
-#: archive.c:2305
-msgid "Warning: writing archive was slow: rewriting timestamp\n"
-msgstr "Aviso: la escritura del fichero fue lenta: se reescribe la marca de tiempo\n"
-
-#: archive.c:2421 linker.c:1410
-msgid "%B: plugin needed to handle lto object"
-msgstr "%B: complementos requeridos para manipular objeto lto"
+#: aoutx.h:1715 pdp11.c:1578
+#, c-format
+msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
+msgstr "%pB: desplazamiento de cadena no vÃ¡lido %<PRIu64> >= %<PRIu64>"
+
+#: aoutx.h:1963
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: tamaÃ±o de reubicaciÃ³n AOUT no admitido: %d"
+
+#: aoutx.h:2407 aoutx.h:2425 pdp11.c:2059
+#, c-format
+msgid "%pB: attempt to write out unknown reloc type"
+msgstr "%pB: intento de escribir un tipo de reubicaciÃ³n desconocido"
+
+#: aoutx.h:4080 pdp11.c:3443
+#, c-format
+msgid "%pB: unsupported relocation type"
+msgstr "%pB: no se admite el tipo de reubicaciÃ³n"
+
+#. Unknown relocation.
+#: aoutx.h:4400 coff-alpha.c:601 coff-mips.c:356 coff-rs6000.c:3050
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:532
+#: elf32-arm.c:1985 elf32-avr.c:962 elf32-bfin.c:1063 elf32-bfin.c:4686
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2559
+#: elf32-frv.c:6240 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:496 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2209 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1020 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3288
+#: elf32-nds32.c:3309 elf32-nds32.c:5078 elf32-nios2.c:3019 elf32-or1k.c:1087
+#: elf32-pj.c:326 elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423
+#: elf32-rl78.c:291 elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296
+#: elf32-s390.c:347 elf32-score.c:2383 elf32-score7.c:2224 elf32-sh.c:437
+#: 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:792 elf32-v850.c:1902
+#: elf32-v850.c:1924 elf32-v850.c:4250 elf32-vax.c:289 elf32-visium.c:481
+#: elf32-wasm32.c:105 elf32-xgate.c:418 elf32-xstormy16.c:395
+#: elf32-xtensa.c:510 elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1114
+#: elf64-alpha.c:4056 elf64-alpha.c:4204 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3426 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1264
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:281 elfn32-mips.c:3799
+#: elfxx-ia64.c:324 elfxx-loongarch.c:1895 elfxx-riscv.c:989 elfxx-sparc.c:589
+#: elfxx-sparc.c:639 elfxx-tilegx.c:907 elfxx-tilegx.c:947 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:214 elfnn-ia64.c:3821 elfnn-kvx.c:259
+#, c-format
+msgid "%pB: unsupported relocation type %#x"
+msgstr "%pB: no se admite el tipo de reubicaciÃ³n %#x"
+
+#: aoutx.h:5427 pdp11.c:3866
+#, c-format
+msgid "%pB: relocatable link from %s to %s not supported"
+msgstr "%pB: enlace reubicable desde %s hasta %s no admitido"
+
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr "%pB: no se puede asignar memoria para las entradas GOT locales"
+
+#: archive.c:753
+msgid "%F%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr "%F%P: %pB(%s): error al abrir el miembro delgado del archivo: %E\n"
+
+#: archive.c:2294
+msgid "warning: writing archive was slow: rewriting timestamp"
+msgstr "aviso: la escritura del archivo fue lenta: se reescribe la marca de tiempo"
+
+#: archive.c:2362 archive.c:2423 elflink.c:4800 linker.c:1434
+#, c-format
+msgid "%pB: plugin needed to handle lto object"
+msgstr "%pB: complemento necesario para manejar el objeto lto"
 
 # Â¡Uff! Si utilizÃ¡ramos file=archivo, esta traducciÃ³n serÃ­a imposible. cfuga
-#: archive.c:2650
+#: archive.c:2655
 msgid "Reading archive file mod timestamp"
-msgstr "Se lee la marca de tiempo modificada del fichero en el archivo"
+msgstr "Se lee la marca de tiempo modificada del fichero del archivo"
 
-#: archive.c:2674
+#: archive.c:2686
 msgid "Writing updated armap timestamp"
-msgstr "Se escribe la marca temporal actualizada de â€˜armapâ€™"
+msgstr "Se escribe la marca de tiempo actualizada de armap"
 
-#: bfd.c:454
-msgid "No error"
-msgstr "No hay error"
+#: bfd.c:740
+msgid "no error"
+msgstr "no hay error"
 
-#: bfd.c:455
-msgid "System call error"
-msgstr "Error en llamada al sistema"
+#: bfd.c:741
+msgid "system call error"
+msgstr "error de llamada al sistema"
 
-#: bfd.c:456
-msgid "Invalid bfd target"
-msgstr "Objetivo bfd invÃ¡lido"
+#: bfd.c:742
+msgid "invalid bfd target"
+msgstr "objetivo bfd no vÃ¡lido"
 
-#: bfd.c:457
-msgid "File in wrong format"
-msgstr "Fichero en formato equivocado"
+#: bfd.c:743
+msgid "file in wrong format"
+msgstr "fichero en formato incorrecto"
 
-#: bfd.c:458
-msgid "Archive object file in wrong format"
-msgstr "Archivo de ficheros objeto en formato equivocado"
+#: bfd.c:744
+msgid "archive object file in wrong format"
+msgstr "fichero de objeto del archivo en formato incorrecto"
 
-#: bfd.c:459
-msgid "Invalid operation"
-msgstr "OperaciÃ³n invÃ¡lida"
+#: bfd.c:745
+msgid "invalid operation"
+msgstr "operaciÃ³n no vÃ¡lida"
 
-#: bfd.c:460
-msgid "Memory exhausted"
-msgstr "Memoria agotada"
+#: bfd.c:746
+msgid "memory exhausted"
+msgstr "memoria agotada"
 
-#: bfd.c:461
-msgid "No symbols"
-msgstr "No hay sÃ­mbolos"
+#: bfd.c:747
+msgid "no symbols"
+msgstr "no hay sÃ­mbolos"
 
-#: bfd.c:462
-msgid "Archive has no index; run ranlib to add one"
-msgstr "Archivo no tiene Ã­ndice; ejecute ranlib para aÃ±adir uno"
+#: bfd.c:748
+msgid "archive has no index; run ranlib to add one"
+msgstr "el archivo no tiene Ã­ndice. Ejecute ranlib para aÃ±adir uno"
 
-#: bfd.c:463
-msgid "No more archived files"
-msgstr "No hay mÃ¡s ficheros archivados"
+#: bfd.c:749
+msgid "no more archived files"
+msgstr "no hay mÃ¡s ficheros archivados"
 
-#: bfd.c:464
-msgid "Malformed archive"
-msgstr "Archivo malformado"
+#: bfd.c:750
+msgid "malformed archive"
+msgstr "archivo mal formado"
 
-#: bfd.c:465
+#: bfd.c:751
 msgid "DSO missing from command line"
-msgstr "DSO faltante desde lÃ­nea de orden"
+msgstr "Falta DSO en la lÃ­nea de ordenes"
 
-#: bfd.c:466
-msgid "File format not recognized"
-msgstr "No se reconoce el formato del fichero"
+#: bfd.c:752
+msgid "file format not recognized"
+msgstr "no se reconoce el formato del fichero"
 
-#: bfd.c:467
-msgid "File format is ambiguous"
-msgstr "Formato del fichero es ambiguo"
+#: bfd.c:753
+msgid "file format is ambiguous"
+msgstr "el formato del fichero es ambiguo"
 
-#: bfd.c:468
-msgid "Section has no contents"
-msgstr "La secciÃ³n no tiene contenido"
+#: bfd.c:754
+msgid "section has no contents"
+msgstr "la secciÃ³n no tiene contenidos"
 
-#: bfd.c:469
-msgid "Nonrepresentable section on output"
-msgstr "SecciÃ³n no representable en la salida"
+#: bfd.c:755
+msgid "nonrepresentable section on output"
+msgstr "secciÃ³n no representable en la salida"
 
-#: bfd.c:470
-msgid "Symbol needs debug section which does not exist"
-msgstr "Un sÃ­mbolo requiere de una secciÃ³n de depuraciÃ³n, la cual no existe"
+#: bfd.c:756
+msgid "symbol needs debug section which does not exist"
+msgstr "el sÃ­mbolo necesita una secciÃ³n de depuraciÃ³n que no existe"
 
-#: bfd.c:471
-msgid "Bad value"
-msgstr "Valor equivocado"
+#: bfd.c:757
+msgid "bad value"
+msgstr "valor incorrecto"
 
-#: bfd.c:472
-msgid "File truncated"
-msgstr "Fichero truncado"
+#: bfd.c:758
+msgid "file truncated"
+msgstr "fichero truncado"
 
-#: bfd.c:473
-msgid "File too big"
-msgstr "Fichero demasiado grande"
+#: bfd.c:759
+msgid "file too big"
+msgstr "fichero demasiado grande"
 
-#: bfd.c:474
+#: bfd.c:760
+msgid "sorry, cannot handle this file"
+msgstr "no se puede manejar este fichero"
+
+#: bfd.c:761
 #, c-format
-msgid "Error reading %s: %s"
-msgstr "Error al leer %s: %s"
+msgid "error reading %s: %s"
+msgstr "error al leer %s: %s"
 
-#: bfd.c:475
-msgid "#<Invalid error code>"
-msgstr "#<CÃ³digo de error invÃ¡lido>"
+#: bfd.c:762
+msgid "#<invalid error code>"
+msgstr "#<cÃ³digo de error no vÃ¡lido>"
 
-#: bfd.c:1442
+#: bfd.c:2019
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
-msgstr "FallÃ³ la aseveraciÃ³n BFD %s %s:%d"
+msgstr "FallÃ³ la aserciÃ³n %s BFD %s:%d"
 
-#: bfd.c:1455
+#: bfd.c:2032
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d in %s\n"
-msgstr ""
-"Error interno %s BFD: se aborta en %s:%d en %s\n"
-"\n"
+msgstr "Error interno %s BFD: se aborta en %s:%d en %s\n"
 
-#: bfd.c:1460
+#: bfd.c:2037
 #, c-format
 msgid "BFD %s internal error, aborting at %s:%d\n"
 msgstr "Error interno %s BFD: se aborta en %s:%d\n"
 
-#: bfd.c:1462
+#: bfd.c:2039
 msgid "Please report this bug.\n"
-msgstr "Por favor reporte este bicho.\n"
+msgstr "Por favor informe de este error.\n"
 
-#: bfdwin.c:206
+#: bfdwin.c:261
 #, c-format
 msgid "not mapping: data=%lx mapped=%d\n"
-msgstr "no se mapea: datos=%lx mapeados%d\n"
+msgstr "sin asignaciÃ³n: datos=%lx asignados=%d\n"
 
-#: bfdwin.c:209
+#: bfdwin.c:264
 #, c-format
 msgid "not mapping: env var not set\n"
-msgstr "no se mapea: no se estableciÃ³ la variable de ambiente\n"
+msgstr "sin asignaciÃ³n: no se estableciÃ³ la variable de entorno\n"
 
-#: binary.c:276
+#: binary.c:277
 #, c-format
-msgid "warning: writing section `%A' at huge (ie negative) file offset"
-msgstr "aviso: escribiendo secciÃ³n `%A' en desplazamiento de fichero enorme (pe negativo)"
+msgid "warning: writing section `%pA' at huge (ie negative) file offset"
+msgstr "aviso: secciÃ³n de escritura Â«%pAÂ» en desplazamiento de fichero enorme (es decir, negativo)"
 
-#: bout.c:1142 elf-m10300.c:2647 elf32-avr.c:2484 elf32-frv.c:5633
-#: elf64-ia64-vms.c:353 elfxx-sparc.c:2817 reloc.c:8059 reloc16.c:156
-#: elf32-ia64.c:351 elf64-ia64.c:351
-msgid "%P%F: --relax and -r may not be used together\n"
-msgstr "%P%F: --relax y -r no se pueden usar juntos\n"
-
-#: cache.c:273
+#: cache.c:275
 #, c-format
-msgid "reopening %B: %s\n"
-msgstr "se reabre %B: %s\n"
+msgid "reopening %pB: %s"
+msgstr "reabriendo %pB: %s"
 
 #: coff-alpha.c:450
-msgid ""
-"%B: Cannot handle compressed Alpha binaries.\n"
-"   Use compiler flags, or objZ, to generate uncompressed binaries."
-msgstr ""
-"%B: No se pueden manejar binarios Alpha comprimidos.\n"
-"   Emplee opciones del compilador, o objZ, para generar binarios sin comprimir."
-
-#: coff-alpha.c:602
-msgid "%B: unknown/unsupported relocation type %d"
-msgstr "%B: tipo de reubicaciÃ³n %d desconocida/no admitida"
-
-#: coff-alpha.c:851 coff-alpha.c:888 coff-alpha.c:1961 coff-mips.c:950
-msgid "GP relative relocation used when GP not defined"
-msgstr "ReubicaciÃ³n relativa GP empleada cuando GP no estaba definido"
-
-#: coff-alpha.c:1444
-msgid "using multiple gp values"
-msgstr "se usan valores mÃºltiples de gp"
-
-#: coff-alpha.c:1503
-msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH"
-msgstr "%B: tipo de reubicaciÃ³n no admitida: ALPHA_R_GPRELHIGH"
-
-#: coff-alpha.c:1510
-msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
-msgstr "%B: tipo de reubicaciÃ³n no admitida: ALPHA_R_GPRELLOW"
-
-#: coff-alpha.c:1518 elf32-i370.c:1081 elf32-m32r.c:2404
-#: elf32-microblaze.c:932 elf64-alpha.c:4098 elf64-alpha.c:4246
-#: elf64-ia64-vms.c:3430 elf32-ia64.c:3847 elf64-ia64.c:3847
-#, c-format
-msgid "%B: unknown relocation type %d"
-msgstr "%B: tipo de reubicaciÃ³n %d desconocido"
-
-#: coff-arm.c:1037
-#, c-format
-msgid "%B: unable to find THUMB glue '%s' for `%s'"
-msgstr "%B: no se puede encontrar el pegamento THUMB Â«%sÂ» para Â«%sÂ»"
-
-#: coff-arm.c:1066
-#, c-format
-msgid "%B: unable to find ARM glue '%s' for `%s'"
-msgstr "%B: no se puede encontrar el pegamento ARM Â«%sÂ» para Â«%sÂ»"
-
-#: coff-arm.c:1368 elf32-arm.c:8896
 #, c-format
-msgid ""
-"%B(%s): warning: interworking not enabled.\n"
-"  first occurrence: %B: arm call to thumb"
-msgstr ""
-"%B(%s): aviso: no se activÃ³ la interoperabilidad.\n"
-"  primer suceso: %B: llamada arm a thumb"
+msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
+msgstr "%pB: no se pueden manejar binarios Alpha comprimidos. Use marcas del compilador, o objZ, para generar binarios sin comprimir"
 
-#: coff-arm.c:1458
-#, 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): aviso: no se activÃ³ la interoperabilidad.\n"
-"  primer suceso: %B: llamada thumb a arm\n"
-"  considere reenlazar con --support-old-code activado"
-
-#: coff-arm.c:1751 coff-tic80.c:672 cofflink.c:3127
-#, c-format
-msgid "%B: bad reloc address %#Lx in section `%A'"
-msgstr "%B: direcciÃ³n de reubicaciÃ³n %#Lx equivocada en la secciÃ³n `%A'"
+#: coff-alpha.c:867 coff-alpha.c:894 coff-alpha.c:2004 coff-mips.c:948
+msgid "GP relative relocation used when GP not defined"
+msgstr "ReubicaciÃ³n relativa a GP usada cuando GP no estaba definido"
 
-#: coff-arm.c:2076
+#: coff-alpha.c:1151 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13189
+#: elfxx-mips.c:13520 reloc.c:8683 reloc16.c:314
 #, c-format
-msgid "%B: illegal symbol index in reloc: %ld"
-msgstr "%B: Ã­ndice simbÃ³lico ilegal en reubicaciÃ³n: %ld"
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr "%X%P: %pB(%pA): la reubicaciÃ³n Â«%pRÂ» se sale del rango\n"
 
-#: coff-arm.c:2208
+#: coff-alpha.c:1157 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13530
+#: reloc.c:8693
 #, c-format
-msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
-msgstr "error: %B estÃ¡ compilado para APCS-%d, mientras que %B estÃ¡ compilado para APCS-%d"
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr "%X%P: %pB(%pA): la reubicaciÃ³n Â«%pRÂ» no estÃ¡ admitida\n"
 
-#: coff-arm.c:2221 elf32-arm.c:19582
+#: coff-alpha.c:1163 elfxx-mips.c:13539 reloc.c:8702
 #, c-format
-msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers"
-msgstr "error: %B pasa nÃºmeros de coma flotante en registros de coma flotante, mientras que %B los pasa en registros enteros"
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr "%X%P: %pB(%pA): la reubicaciÃ³n Â«%pRÂ» devuelve un valor no reconocido %x\n"
 
-#: coff-arm.c:2226 elf32-arm.c:19586
-#, c-format
-msgid "error: %B passes floats in integer registers, whereas %B passes them in float registers"
-msgstr "error: %B pasa nÃºmeros de coma flotante en registros enteros, mientras que %B los pasa en registros de coma flotante"
+#: coff-alpha.c:1489
+msgid "using multiple gp values"
+msgstr "se usan varios valores de gp"
 
-#: coff-arm.c:2238
+#: coff-alpha.c:1987
 #, c-format
-msgid "error: %B is compiled as position independent code, whereas target %B is absolute position"
-msgstr "error: %B estÃ¡ compilado como cÃ³digo independiente de posiciÃ³n, mientras que el objetivo %B es de posiciÃ³n absoluta"
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr "%X%P: %pB(%pA): reubicaciÃ³n fuera de rango\n"
 
-#: coff-arm.c:2243
+#: coff-alpha.c:1999
 #, c-format
-msgid "error: %B is compiled as absolute position code, whereas target %B is position independent"
-msgstr "error: %B estÃ¡ compilado como cÃ³digo de posiciÃ³n absoluta, mientras que el objetivo %B es independiente de posiciÃ³n"
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr "%X%P: %pB(%pA): la reubicaciÃ³n no estÃ¡ admitida\n"
 
-#: coff-arm.c:2270 elf32-arm.c:19651
+#: coff-go32.c:167 coffswap.h:812
 #, c-format
-msgid "Warning: %B supports interworking, whereas %B does not"
-msgstr "Aviso: %B admite interoperabilidad, mientras que %B no"
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: aviso: %s: desbordamiento de nÃºmero de lÃ­nea: 0x%lx > 0xffff"
 
-#: coff-arm.c:2275 elf32-arm.c:19657
-#, c-format
-msgid "Warning: %B does not support interworking, whereas %B does"
-msgstr "Aviso: %B no admite interoperabilidad, mientras que %B sÃ­"
+#: coff-mips.c:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
+msgid "GP relative relocation when _gp not defined"
+msgstr "ReubicaciÃ³n relativa GP cuando _gp no estÃ¡ definido"
 
-#: coff-arm.c:2298
+#: coff-rs6000.c:484 coff64-rs6000.c:377
 #, c-format
-msgid "private flags = %x:"
-msgstr "opciones privadas = %x:"
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr "%pB: swap_aux_in no admitido para la clase de almacenamiento %#x"
 
-#: coff-arm.c:2306 elf32-arm.c:14160
+#: coff-rs6000.c:571 coff64-rs6000.c:497
 #, c-format
-msgid " [floats passed in float registers]"
-msgstr " [flotante pasados en registros de coma flotante]"
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr "%pB: swap_aux_out no admitido para la clase de almacenamiento %#x"
 
-#: coff-arm.c:2308
+#: coff-rs6000.c:3140
 #, c-format
-msgid " [floats passed in integer registers]"
-msgstr " [flotante pasados en registros enteros]"
+msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
+msgstr "%pB: reubicaciÃ³n TOC en %#<PRIx64> al sÃ­mbolo Â«%sÂ» sin ninguna entrada TOC"
 
-#: coff-arm.c:2311 elf32-arm.c:14163
+#: coff-rs6000.c:3264 coff64-rs6000.c:848
 #, c-format
-msgid " [position independent]"
-msgstr " [independiente posicional]"
+msgid "Unable to find the stub entry targeting %s"
+msgstr "No se puede encontrar la entrada de stub con objetivo %s"
 
-#: coff-arm.c:2313
+#: coff-rs6000.c:3379
 #, c-format
-msgid " [absolute position]"
-msgstr " [posiciÃ³n absoluta]"
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr "%pB: ReubicaciÃ³n TLS en 0x%<PRIx64> sobre un sÃ­mbolo que no es TLS %s (0x%x)\n"
 
-#: coff-arm.c:2317
+#: coff-rs6000.c:3392
 #, c-format
-msgid " [interworking flag not initialised]"
-msgstr " [opciÃ³n de interoperabilidad no iniciada]"
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr "%pB: reubicaciÃ³n local TLS en 0x%<PRIx64> sobre el sÃ­mbolo importado %s\n"
 
-#: coff-arm.c:2319
+#: coff-rs6000.c:3798
 #, c-format
-msgid " [interworking supported]"
-msgstr " [admite interoperabilidad]"
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr "%pB: la reubicaciÃ³n (%d) en 0x%<PRIx64> tiene r_rsize errÃ³neo (0x%x)\n"
 
-#: coff-arm.c:2321
+#: coff-rs6000.c:4060 coff64-rs6000.c:2030
 #, c-format
-msgid " [interworking not supported]"
-msgstr " [no admite interoperabilidad]"
+msgid "%pB: symbol `%s' has unrecognized smclas %d"
+msgstr "%pB: el sÃ­mbolo Â«%sÂ» tiene smclas %d no reconocidas"
 
-#: coff-arm.c:2366 elf32-arm.c:13021
-msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking"
-msgstr "Aviso: No se establece la opciÃ³n de interoperabilidad de %B ya que se habÃ­a especificado con anterioridad como no interoperable"
-
-#: coff-arm.c:2369 elf32-arm.c:13025
-msgid "Warning: Clearing the interworking flag of %B due to outside request"
-msgstr "Aviso: Se limpia la opciÃ³n de interoperabilidad de %B debido a una peticiÃ³n externa"
-
-#: coff-arm.c:2426 elf32-arm.c:13070
+#: coff-sh.c:781 elf32-sh.c:521
 #, c-format
-msgid "Warning: Clearing the interworking flag of %B because non-interworking code in %B has been linked with it"
-msgstr "Aviso: Se limpia la opciÃ³n de interoperaciÃ³n en %B porque se ha enlazado con Ã©l cÃ³digo no interoperable en %B"
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
+msgstr "%pB: %#<PRIx64>: aviso: desplazamiento R_SH_USES errÃ³neo"
 
-#: coff-h8300.c:1068
+#: coff-sh.c:792
 #, c-format
-msgid "cannot handle R_MEM_INDIRECT reloc when using %s output"
-msgstr "no se puede manipular la reubicaciÃ³n R_MEM_INDIRECT cuando se utiliza la salida %s"
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
+msgstr "%pB: %#<PRIx64>: aviso: R_SH_USES apunta al insn %#x no reconocido"
 
-#: coff-i860.c:151
+#: coff-sh.c:810 elf32-sh.c:552
 #, c-format
-msgid "relocation `%s' not yet implemented"
-msgstr "reubicaciÃ³n Â«%sÂ» aÃºn no implementada"
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
+msgstr "%pB: %#<PRIx64>: aviso: desplazamiento de carga R_SH_USES errÃ³neo"
 
-#: coff-i860.c:613 coff-tic4x.c:227 coff-tic54x.c:365 coffcode.h:5343
+#: coff-sh.c:835 elf32-sh.c:568
 #, c-format
-msgid "%B: warning: illegal symbol index %ld in relocs"
-msgstr "%B: aviso: Ã­ndice de sÃ­mbolos %ld ilegal en reubicaciones"
-
-#: coff-i960.c:122 coff-i960.c:475
-msgid "uncertain calling convention for non-COFF symbol"
-msgstr "convenciÃ³n de llamada incierta para un sÃ­mbolo que no es COFF"
-
-#: coff-m68k.c:488 elf32-bfin.c:5340 elf32-cr16.c:2801 elf32-m68k.c:4385
-msgid "unsupported reloc type"
-msgstr "no se admite el tipo de reubicaciÃ³n"
-
-#: coff-mips.c:640 elf32-mips.c:1744 elf32-score.c:430 elf32-score7.c:330
-#: elf64-mips.c:3135 elfn32-mips.c:2958
-msgid "GP relative relocation when _gp not defined"
-msgstr "ReubicaciÃ³n relativa GP cuando _gp no estÃ¡ definido"
+msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
+msgstr "%pB: %#<PRIx64>: aviso: no se pudo encontrar la reubicaciÃ³n esperada"
 
-#: coff-rs6000.c:2773
+#: coff-sh.c:852 elf32-sh.c:597
 #, c-format
-msgid "%B: unsupported relocation type 0x%02x"
-msgstr "%B: tipo de reubicaciÃ³n 0x%02x no admitido"
+msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
+msgstr "%pB: %#<PRIx64>: aviso: sÃ­mbolo en secciÃ³n inesperada"
 
-#: coff-rs6000.c:2859
+#: coff-sh.c:973 elf32-sh.c:727
 #, c-format
-msgid "%B: TOC reloc at %#Lx to symbol `%s' with no TOC entry"
-msgstr "%B: reubicaciÃ³n de TOC en %#Lx al sÃ­mbolo Â«%sÂ» sin ninguna entrada TOC"
+msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
+msgstr "%pB: %#<PRIx64>: aviso: no se pudo encontrar la reubicaciÃ³n COUNT esperada"
 
-#: coff-rs6000.c:3605 coff64-rs6000.c:2150
+#: coff-sh.c:983 elf32-sh.c:738
 #, c-format
-msgid "%B: symbol `%s' has unrecognized smclas %d"
-msgstr "%B: el sÃ­mbolo Â«%sÂ» tiene smclas %d que no se reconoce"
+msgid "%pB: %#<PRIx64>: warning: bad count"
+msgstr "%pB: %#<PRIx64>: aviso: contador errÃ³neo"
 
-#: coff-sh.c:504
+#: coff-sh.c:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
 #, c-format
-msgid "SH Error: unknown reloc type %d"
-msgstr "Error SH: tipo de reubicaciÃ³n %d desconocido"
+msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
+msgstr "%pB: %#<PRIx64>: fatal: desbordamiento de reubicaciÃ³n durante la relajaciÃ³n"
 
-#: coff-sh.c:778 elf32-sh.c:580
+#: coff-sh.c:1443
 #, c-format
-msgid "%B: %#Lx: warning: bad R_SH_USES offset"
-msgstr "%B: %#Lx: aviso: desplazamiento R_SH_USES equivocado"
+msgid "%pB: fatal: generic symbols retrieved before relaxing"
+msgstr "%pB: fatal: se han recuperado sÃ­mbolos genÃ©ricos antes de relajar"
 
-#: coff-sh.c:789
+#: coff-sh.c:2773 cofflink.c:2947
 #, c-format
-msgid "%B: %#Lx: warning: R_SH_USES points to unrecognized insn %#x"
-msgstr "%B: %#Lx: aviso: R_SH_USES apunta al insn %#x no reconocido"
+msgid "%pB: illegal symbol index %ld in relocs"
+msgstr "%pB: Ã­ndice de sÃ­mbolo %ld ilegal en reubicaciones"
 
-#: coff-sh.c:807 elf32-sh.c:610
+#: coff-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5314
 #, c-format
-msgid "%B: %#Lx: warning: bad R_SH_USES load offset"
-msgstr "%B: %#Lx: aviso: desplazamiento de carga R_SH_USES equivocado"
+msgid "%pB: warning: illegal symbol index %ld in relocs"
+msgstr "%pB: aviso: Ã­ndice de sÃ­mbolo %ld ilegal en reubicaciones"
 
-#: coff-sh.c:832 elf32-sh.c:626
-#, c-format
-msgid "%B: %#Lx: warning: could not find expected reloc"
-msgstr "%B: %#Lx: aviso: no se pudo encontrar la reubicaciÃ³n esperada"
+#: coff-x86_64.c:147
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr "R_AMD64_IMAGEBASE con __ImageBase sin definir"
 
-#: coff-sh.c:849 elf32-sh.c:655
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
 #, c-format
-msgid "%B: %#Lx: warning: symbol in unexpected section"
-msgstr "%B: %#Lx: aviso: sÃ­mbolo dentro de secciÃ³n inesperada"
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr "%pB: C_STAT no es compatible con XCOFF64"
 
-#: coff-sh.c:975 elf32-sh.c:785
+#: coff64-rs6000.c:477
 #, c-format
-msgid "%B: %#Lx: warning: could not find expected COUNT reloc"
-msgstr "%B: %#Lx: aviso: no pudo encontrar la reubicaciÃ³n COUNT esperada"
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr "%pB: auxtype %#x errÃ³neo para la clase de almacenamiento %#x"
 
-#: coff-sh.c:985 elf32-sh.c:795
+#: coff64-rs6000.c:1598
 #, c-format
-msgid "%B: %#Lx: warning: bad count"
-msgstr "%B: %#Lx: aviso: contador equivocado"
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr "%pB: la reubicaciÃ³n (%d) en (0x%<PRIx64>) tiene r_rsize errÃ³neo (0x%x)\n"
 
-#: coff-sh.c:1357 coff-sh.c:2645 elf32-sh.c:1199 elf32-sh.c:1570
+#: coffcode.h:951
 #, c-format
-msgid "%B: %#Lx: fatal: reloc overflow while relaxing"
-msgstr "%B: %#Lx: fatal: desbordamiento de reubicaciÃ³n durante la relajaciÃ³n"
+msgid "%pB: unable to load COMDAT section name"
+msgstr "%pB: no se puede cargar el nombre de la secciÃ³n COMDAT"
 
-#: coff-sh.c:1452
-msgid "%B: fatal: generic symbols retrieved before relaxing"
-msgstr "%B: fatal: sÃ­mbolos genÃ©ricos obtenidos antes de relajar"
-
-#: coff-sh.c:2783 cofflink.c:2965
+#: coffcode.h:976
 #, c-format
-msgid "%B: illegal symbol index %ld in relocs"
-msgstr "%B: Ã­ndice simbÃ³lico %ld ilegal en reubicaciones"
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "%pB: aviso: no se ha encontrado ningÃºn sÃ­mbolo para la secciÃ³n Â«%sÂ»"
 
-#: coff-tic4x.c:183 coff-tic54x.c:278 coff-tic80.c:441
+#: coffcode.h:1148
 #, c-format
-msgid "Unrecognized reloc type 0x%x"
-msgstr "No se reconoce el tipo de reubicaciÃ³n 0x%x"
+msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
+msgstr "%pB: error: sÃ­mbolo Â«%sÂ» inesperado en la secciÃ³n COMDAT"
 
-#: coff-w65.c:352
+#: coffcode.h:1159
 #, c-format
-msgid "ignoring reloc %s\n"
-msgstr "se descarta la reubicaciÃ³n %s\n"
-
-#: coffcode.h:968
-msgid "%B: unable to load COMDAT section name"
-msgstr "%B: incapaz de cargar nombre de secciÃ³n COMDAT"
-
-#. Malformed input files can trigger this test.
-#. cf PR 21781.
-#: coffcode.h:1003
-msgid "%B: error: unexpected symbol '%s' in COMDAT section"
-msgstr "%B: error: sÃ­mbolo Â«%sÂ» sin esperado en la secciÃ³n COMDAT"
-
-#: coffcode.h:1015
-#, c-format
-msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'"
-msgstr "%B: aviso: el sÃ­mbolo COMDAT Â«%sÂ» no coincide con el nombre seccional Â«%sÂ»"
-
-#: coffcode.h:1025
-#, c-format
-msgid "%B: warning: No symbol for section '%s' found"
-msgstr "%B: aviso: ningÃºn sÃ­mbolo para secciÃ³n Â«%sÂ» encontrado"
+msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
+msgstr "%pB: aviso: el sÃ­mbolo COMDAT Â«%sÂ» no coincide con el nombre de secciÃ³n Â«%sÂ»"
 
 #. 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:1251
+#: coffcode.h:1267
 #, c-format
-msgid "%B: Warning: Ignoring section flag IMAGE_SCN_MEM_NOT_PAGED in section %s"
-msgstr "%B: Aviso: Se descarta la opciÃ³n seccional IMAGE_SCN_MEM_NOT_PAGED en la secciÃ³n %s"
+msgid "%pB: warning: ignoring section flag %s in section %s"
+msgstr "%pB: aviso: ignorando la marca de secciÃ³n %s en la secciÃ³n %s"
 
-#: coffcode.h:1320
+#: coffcode.h:1337
 #, c-format
-msgid "%B (%s): Section flag %s (%#lx) ignored"
-msgstr "%B (%s): marca de secciÃ³n %s (%#lx) ignorado"
+msgid "%pB (%s): section flag %s (%#lx) ignored"
+msgstr "%pB (%s): marca de secciÃ³n %s (%#lx) ignorada"
 
-#: coffcode.h:1950
-msgid "%B: warning: claims to have 0xffff relocs, without overflow"
-msgstr "%B: aviso: reclama tener reubicados 0xffff, sin desbordamiento superior"
-
-#: coffcode.h:2466
+#: coffcode.h:1954
 #, c-format
-msgid "Unrecognized TI COFF target id '0x%x'"
-msgstr "No se reconoce el id de objetivo COFF TI '0x%x'"
+msgid "%pB: overflow reloc count too small"
+msgstr "%pB: contador de desbordamiento de reubicaciÃ³n demasiado pequeÃ±o"
 
-#: coffcode.h:2784
+#: coffcode.h:1963 coffcode.h:2028
 #, c-format
-msgid "%B: reloc against a non-existent symbol index: %ld"
-msgstr "%B: reubicaciÃ³n contra un Ã­ndice de sÃ­mbolo inexistente: %ld"
+msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
+msgstr "%pB: aviso: afirma tener reubicaciones 0xffff, sin desbordamiento"
 
-#: coffcode.h:3187
+#: coffcode.h:2411
 #, c-format
-msgid "%B: page size is too large (0x%x)"
-msgstr "%B: tamaÃ±o de pÃ¡gina es demasiado grande (0x%x)"
+msgid "unrecognized TI COFF target id '0x%x'"
+msgstr "no se reconoce el id de objetivo COFF TI Â«0x%xÂ»"
 
-#: coffcode.h:3347
+#: coffcode.h:2690
 #, c-format
-msgid "%B: too many sections (%d)"
-msgstr "%B: Demasiadas secciones (%d)"
+msgid "%pB: reloc against a non-existent symbol index: %ld"
+msgstr "%pB: reubicaciÃ³n contra un Ã­ndice de sÃ­mbolo inexistente: %ld"
 
-#: coffcode.h:3768
+#: coffcode.h:3162
 #, c-format
-msgid "%B: section %A: string table overflow at offset %ld"
-msgstr "%B: secciÃ³n %A: desbordamiento superior de segmento de cadenas en el desplazamiento %ld"
+msgid "%pB: too many sections (%d)"
+msgstr "%pB: demasiadas secciones (%d)"
 
-#: coffcode.h:3873
+#: coffcode.h:3690
 #, c-format
-msgid "%B:%s section %s: alignment 2**%u not representable"
-msgstr "%B:%s secciÃ³n %s: alineamiento 2**%u no representable"
-
-#: coffcode.h:4592
-msgid "%B: warning: line number count (%#lx) exceeds section size (%#lx)"
-msgstr "%B: aviso: contador de nÃºmero de lÃ­nea (%#lx) excede el tamaÃ±o (%#lx) de la secciÃ³n"
-
-#: coffcode.h:4607
-msgid "%B: warning: line number table read failed"
-msgstr "%B: aviso: lectura de segmento de nÃºmeros de lÃ­nea fallada"
+msgid "%pB: section %pA: string table overflow at offset %ld"
+msgstr "%pB: secciÃ³n %pA: desbordamiento de tabla de cadenas en el desplazamiento %ld"
 
-#: coffcode.h:4641 coffcode.h:4655
+#: coffcode.h:3791
 #, c-format
-msgid "%B: warning: illegal symbol index 0x%lx in line number entry %d"
-msgstr "%B: aviso: Ã­ndice simbÃ³lico 0x%ld ilegal en las entradas del nÃºmero de lÃ­nea %d"
+msgid "%pB:%s section %s: alignment 2**%u not representable"
+msgstr "%pB:%s secciÃ³n %s: alineaciÃ³n 2**%u no representable"
 
-#: coffcode.h:4669
+#: coffcode.h:4532
 #, c-format
-msgid "%B: warning: illegal symbol in line number entry %d"
-msgstr "%B: aviso: sÃ­mbolos ilegal en la entrada del nÃºmero de lÃ­nea %d"
+msgid "%pB: warning: line number table read failed"
+msgstr "%pB: aviso: fallÃ³ la lectura de la tabla de nÃºmeros de lÃ­nea"
 
-#: coffcode.h:4682
+#: coffcode.h:4578 coffcode.h:4592
 #, c-format
-msgid "%B: warning: duplicate line number information for `%s'"
-msgstr "%B: aviso: informaciÃ³n de nÃºmeros de lÃ­nea duplicada para Â«%sÂ»"
+msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
+msgstr "%pB: aviso: Ã­ndice de sÃ­mbolo 0x%lx ilegal en la entrada con nÃºmero de lÃ­nea %d"
 
-#: coffcode.h:5103
+#: coffcode.h:4606
 #, c-format
-msgid "%B: Unrecognized storage class %d for %s symbol `%s'"
-msgstr "%B: Clase de almacenamiento %d no reconocida para %s sÃ­mbolo Â«%sÂ»"
+msgid "%pB: warning: illegal symbol in line number entry %d"
+msgstr "%pB: aviso: sÃ­mbolo ilegal en la entrada del nÃºmero de lÃ­nea %d"
 
-#: coffcode.h:5236
+#: coffcode.h:4619
 #, c-format
-msgid "warning: %B: local symbol `%s' has no section"
-msgstr "aviso: %B: el sÃ­mbolo local Â«%sÂ» no tiene secciÃ³n"
+msgid "%pB: warning: duplicate line number information for `%s'"
+msgstr "%pB: aviso: informaciÃ³n de nÃºmero de lÃ­nea duplicada para Â«%sÂ»"
 
-#: coffcode.h:5383
+#: coffcode.h:5043
 #, c-format
-msgid "%B: illegal relocation type %d at address %#Lx"
-msgstr "%B: tipo de reubicaciÃ³n %d ilegal en direcciÃ³n %#Lx"
+msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
+msgstr "%pB: clase de almacenamiento %d no reconocida para el sÃ­mbolo %s Â«%sÂ»"
 
-#: coffgen.c:178 elf.c:1198
+#: coffcode.h:5183
 #, c-format
-msgid "%B: unable to initialize compress status for section %s"
-msgstr "%B: incapaz de inicializar estado compresivo para secciÃ³n %s"
+msgid "warning: %pB: local symbol `%s' has no section"
+msgstr "aviso: %pB: el sÃ­mbolo local Â«%sÂ» no tiene secciÃ³n"
 
-#: coffgen.c:202 elf.c:1209
+#: coffcode.h:5354
 #, c-format
-msgid "%B: unable to initialize decompress status for section %s"
-msgstr "%B: incapaz de inicializar estado descompresivo para secciÃ³n %s"
+msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
+msgstr "%pB: tipo de reubicaciÃ³n %d ilegal en la direcciÃ³n %#<PRIx64>"
 
-#: coffgen.c:1649
-msgid "%B: corrupt symbol count: %#Lx"
-msgstr "%B: contador simbÃ³lico corrupto: %#Lx"
+#: coffgen.c:255 elf.c:1226
+#, c-format
+msgid "%pB: unable to compress section %s"
+msgstr "%pB: no se puede comprimir la secciÃ³n %s"
 
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1658
-msgid "%B: not enough memory to allocate space for %#Lx symbols of size %#Lx"
-msgstr "%B: sin suficiente memoria para reservar espacio para sÃ­mbolos %#Lx de tamaÃ±o %#Lx"
+#: coffgen.c:265 elf.c:1236
+#, c-format
+msgid "%pB: unable to decompress section %s"
+msgstr "%pB: no se puede descomprimir la secciÃ³n %s"
 
-#: coffgen.c:1725
+#: coffgen.c:1781
 #, c-format
-msgid "%B: bad string table size %Lu"
-msgstr "%B: tamaÃ±o equivocado de segmento de cadenas %Lu"
+msgid "%pB: bad string table size %<PRIu64>"
+msgstr "%pB: tamaÃ±o incorrecto de tabla de cadenas %<PRIu64>"
 
-#: coffgen.c:1902 coffgen.c:1962 coffgen.c:1980 cofflink.c:2045
-#: xcofflink.c:4507
+#: coffgen.c:1931 coffgen.c:1981 coffgen.c:2031 coffgen.c:2050 cofflink.c:2012
+#: elf.c:2478 xcofflink.c:5532
 msgid "<corrupt>"
 msgstr "<corrupto>"
 
-#: coffgen.c:2104
+#: coffgen.c:2192
 #, c-format
 msgid "<corrupt info> %s"
-msgstr "<corrupto info> %s"
+msgstr "<info corrupta> %s"
 
-#: coffgen.c:2683 elflink.c:14149 linker.c:2940
+#: coffgen.c:2796 elflink.c:15219 linker.c:2985
 msgid "%F%P: already_linked_table: %E\n"
 msgstr "%F%P: already_linked_table: %E\n"
 
-#: coffgen.c:3024 elflink.c:13151
+#: coffgen.c:3138 elflink.c:14159
 #, c-format
-msgid "Removing unused section '%A' in file '%B'"
-msgstr "Quitando secciÃ³n Â«%AÂ» no utilizada en el fichero Â«%BÂ»"
+msgid "removing unused section '%pA' in file '%pB'"
+msgstr "eliminando la secciÃ³n Â«%pAÂ» no utilizada en el fichero Â«%pBÂ»"
 
-#: coffgen.c:3101 elflink.c:13369
-msgid "Warning: gc-sections option ignored"
-msgstr "Aviso: se descarta la opciÃ³n gc-sections"
+#: coffgen.c:3215 elflink.c:14389
+msgid "warning: gc-sections option ignored"
+msgstr "aviso: se ignora la opciÃ³n gc-sections"
 
-#: cofflink.c:352
+#: cofflink.c:398
 #, c-format
-msgid "Warning: symbol `%s' is both section and non-section"
-msgstr "Aviso: sÃ­mbolo Â«%sÂ» es ambas secciÃ³n y no secciÃ³n"
+msgid "warning: symbol `%s' is both section and non-section"
+msgstr "aviso: el sÃ­mbolo Â«%sÂ» es ambas secciÃ³n y no secciÃ³n"
 
-#: cofflink.c:454 elf64-ia64-vms.c:5186 elflink.c:4831
+#: cofflink.c:503 elf64-ia64-vms.c:5200 elflink.c:5407
 #, c-format
-msgid "Warning: type of symbol `%s' changed from %d to %d in %B"
-msgstr "Aviso: el tipo del sÃ­mbolo Â«%sÂ» cambiÃ³ de %d a %d en %B"
+msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
+msgstr "aviso: el tipo del sÃ­mbolo Â«%sÂ» ha cambiado de %d a %d en %pB"
 
-#: cofflink.c:2373
+#: cofflink.c:2340
 #, c-format
-msgid "%B: relocs in section `%A', but it has no contents"
-msgstr "%B: reubicaciones en la secciÃ³n `%A', pero no tiene contenidos"
+msgid "%pB: relocs in section `%pA', but it has no contents"
+msgstr "%pB: reubicaciones en la secciÃ³n Â«%pAÂ», pero no tiene contenidos"
 
-#: cofflink.c:2436 elflink.c:10664
+#: cofflink.c:2403 elflink.c:11600
 #, c-format
-msgid "%X`%s' referenced in section `%A' of %B: defined in discarded section `%A' of %B\n"
-msgstr "%X`%s' referido en la secciÃ³n `%A' de %B: se definiÃ³ en la secciÃ³n descartada `%A' de %B\n"
+msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
+msgstr "%XÂ«%sÂ» referenciado en la secciÃ³n Â«%pAÂ» de %pB: se definiÃ³ en la secciÃ³n descartada Â«%pAÂ» de %pB\n"
 
-#: cofflink.c:2734
+#: cofflink.c:2598
 #, c-format
-msgid "%B: %A: reloc overflow: %#x > 0xffff"
-msgstr "%B: %A: desbordamiento de reubicaciÃ³n: %#x > 0xffff"
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr "%pB: eliminando el sÃ­mbolo no representable Â«%sÂ» (valor 0x%<PRIx64>)"
 
-#: cofflink.c:2742
+#: cofflink.c:2716
 #, c-format
-msgid "%B: warning: %A: line number overflow: %#x > 0xffff"
-msgstr "%B: aviso: %A: desbordamiento de nÃºmero de lÃ­nea: %#x > 0xffff"
+msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
+msgstr "%pB: %pA: desbordamiento de reubicaciÃ³n: %#x > 0xffff"
 
-#: coffswap.h:811
+#: cofflink.c:2724
 #, c-format
-msgid "%B: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%B: aviso: %s: desbordamiento de nÃºmero de lÃ­nea: 0x%lx > 0xffff"
+msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
+msgstr "%pB: aviso: %pA: desbordamiento de nÃºmero de lÃ­nea: %#x > 0xffff"
 
-#: coffswap.h:825
+#: cofflink.c:3118
 #, c-format
-msgid "%B: %s: reloc overflow: 0x%lx > 0xffff"
-msgstr "%B: %s: desbordamiento superior de reubicaciÃ³n: 0x%lx > 0xffff"
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr "%pB: direcciÃ³n de reubicaciÃ³n %#<PRIx64> incorrecta en la secciÃ³n Â«%pAÂ»"
 
-#: compress.c:255
+#: coffswap.h:826
 #, c-format
-msgid "error: %B(%A) is too large (%#Lx bytes)"
-msgstr "error: %B(%A) es demasiado grande (%#Lx bytes)"
+msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
+msgstr "%pB: %s: desbordamiento de reubicaciÃ³n: 0x%lx > 0xffff"
 
-#: cpu-arm.c:192 cpu-arm.c:204
+#: compress.c:744 compress.c:761
 #, c-format
-msgid "error: %B is compiled for the EP9312, whereas %B is compiled for XScale"
-msgstr "error: %B estÃ¡ compilado para el EP9312, mientras que %B estÃ¡ compilado para XScale"
+msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
+msgstr "error: %pB(%pA) es demasiado grande (%#<PRIx64> bytes)"
 
-#: cpu-arm.c:338
+#: cpu-arm.c:320 cpu-arm.c:332
 #, c-format
-msgid "warning: unable to update contents of %s section in %B"
-msgstr "aviso: no se puede actualizar el contenido de la secciÃ³n %s en %B"
+msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
+msgstr "error: %pB estÃ¡ compilado para el EP9312, mientras que %pB estÃ¡ compilado para XScale"
 
-#: dwarf2.c:543
+#: cpu-arm.c:469
 #, c-format
-msgid "Dwarf Error: Can't find %s section."
-msgstr "Error enano: no se puede encontrar la secciÃ³n %s."
+msgid "warning: unable to update contents of %s section in %pB"
+msgstr "aviso: no se pueden actualizar los contenidos de la secciÃ³n %s en %pB"
 
-#: dwarf2.c:572
+#: dwarf2.c:705
 #, c-format
-msgid "Dwarf Error: Offset (%llu) greater than or equal to %s size (%Lu)."
-msgstr "Error enano: desplazamiento (%llu) es mayor que o igual que el tamaÃ±o de %s (%Lu)."
+msgid "DWARF error: can't find %s section."
+msgstr "Error DWARF: no se puede encontrar la secciÃ³n %s."
 
-#: dwarf2.c:1089
-msgid "Dwarf Error: Info pointer extends beyond end of attributes"
-msgstr "Error enano: puntero info extiende mÃ¡s allÃ¡ del final de atributos"
+#: dwarf2.c:713
+#, c-format
+msgid "DWARF error: section %s has no contents"
+msgstr "Error DWARF: la secciÃ³n %s no tiene contenidos"
 
-#: dwarf2.c:1261
+#. PR 26946
+#: dwarf2.c:722
 #, c-format
-msgid "Dwarf Error: Invalid or unhandled FORM value: %#x."
-msgstr "Error enano: valor de FORM no manipulado o invÃ¡lido: %#x."
+msgid "DWARF error: section %s is too big"
+msgstr "error DWARF: la secciÃ³n %s es demasiado grande"
 
-#: dwarf2.c:1567
-msgid "Dwarf Error: mangled line number section (bad file number)."
-msgstr "Error enano: secciÃ³n de nÃºmeros de lÃ­nea revuelta (nÃºmero de fichero equivocado)."
+#: dwarf2.c:757
+#, c-format
+msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
+msgstr "Error DWARF: el desplazamiento (%<PRIu64>) es mayor que o igual que el tamaÃ±o de %s (%<PRIu64>)"
 
-#: dwarf2.c:1912
-msgid "Dwarf Error: Zero format count."
-msgstr "Error enano: formato contador cero."
+#: dwarf2.c:1504
+msgid "DWARF error: info pointer extends beyond end of attributes"
+msgstr "Error DWARF: el puntero de informaciÃ³n se extiende mÃ¡s allÃ¡ del final de los atributos"
 
-#: dwarf2.c:1921
+#: dwarf2.c:1696
 #, c-format
-msgid "Dwarf Error: data count (%Lx) larger than buffer size."
-msgstr "Error enano: contador de datos (%Lx) mÃ¡s grande que tamaÃ±o de bÃºfer."
+msgid "DWARF error: invalid or unhandled FORM value: %#x"
+msgstr "Error DWARF: valor de FORM no manejado o no vÃ¡lido: %#x"
+
+#: dwarf2.c:2043
+msgid "DWARF error: mangled line number section (bad file number)"
+msgstr "Error DWARF: la secciÃ³n de nÃºmeros de lÃ­nea estÃ¡ rota (nÃºmero de fichero incorrecto)"
 
-#: dwarf2.c:1962
+#: dwarf2.c:2585
+msgid "DWARF error: zero format count"
+msgstr "Error DWARF: contador de formato cero"
+
+#: dwarf2.c:2595
 #, c-format
-msgid "Dwarf Error: Unknown format content type %Lu."
-msgstr "Error enano: formato de tipo continente %Lu desconocido."
+msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
+msgstr "Error DWARF: el contador de datos (%#<PRIx64>) es mÃ¡s grande que el tamaÃ±o del bÃºfer"
 
-#: dwarf2.c:2042
+#: dwarf2.c:2634
 #, c-format
-msgid "Dwarf Error: Line info section is too small (%Ld)"
-msgstr "Error enano: LÃ­nea informativa de secciÃ³n es demasiado corta (%Ld)"
+msgid "DWARF error: unknown format content type %<PRIu64>"
+msgstr "Error DWARF: tipo de contenido de formato %<PRIu64> desconocido"
 
-#: dwarf2.c:2072
+#: dwarf2.c:2707
 #, c-format
-msgid "Dwarf Error: Line info data is bigger (%#Lx) than the space remaining in the section (%#lx)"
-msgstr "Error enano: informaciÃ³n lineal de datos es mÃ¡s grande (%#Lx) que el espacio restante en la secciÃ³n (%#lx)"
+msgid "DWARF error: line info section is too small (%<PRId64>)"
+msgstr "Error DWARF: la secciÃ³n de informaciÃ³n de lÃ­nea es demasiado peqeuÃ±a (%<PRId64>)"
 
-#: dwarf2.c:2085
+#: dwarf2.c:2734
 #, c-format
-msgid "Dwarf Error: Unhandled .debug_line version %d."
-msgstr "Error enano: .debug_line versiÃ³n %d sin manipular."
+msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
+msgstr "Error DWARF: los datos de informaciÃ³n de lÃ­nea son mÃ¡s grandes (%#<PRIx64>) que el espacio restante en la secciÃ³n (%#lx)"
 
-#: dwarf2.c:2095
-msgid "Dwarf Error: Ran out of room reading prologue"
-msgstr "Error enano: Agotado espacio leyendo prÃ³logo"
+#: dwarf2.c:2747
+#, c-format
+msgid "DWARF error: unhandled .debug_line version %d"
+msgstr "Error DWARF: versiÃ³n de .debug_line sin manejar %d"
 
-#: dwarf2.c:2113
+#: dwarf2.c:2756
+msgid "DWARF error: ran out of room reading prologue"
+msgstr "Error DWARF: se quedÃ³ sin espacio leyendo el prÃ³logo"
+
+#: dwarf2.c:2772
 #, c-format
-msgid "Dwarf Error: Line info unsupported segment selector size %u."
-msgstr "Error enano: lÃ­nea informativa incompatible con segmento seleccionador de tamaÃ±o %u."
+msgid "DWARF error: line info unsupported segment selector size %u"
+msgstr "Error DWARF: tamaÃ±o del selector de segmento %u no admitido en la informaciÃ³n de lÃ­nea"
+
+#: dwarf2.c:2794
+msgid "DWARF error: invalid maximum operations per instruction"
+msgstr "Error DWARF: mÃ¡ximo de operaciones por instrucciÃ³n no vÃ¡lido"
 
-#: dwarf2.c:2140
-msgid "Dwarf Error: Invalid maximum operations per instruction."
-msgstr "Error enano: mÃ¡ximo de operaciones por instrucciÃ³n invÃ¡lido."
+#: dwarf2.c:2806
+msgid "DWARF error: ran out of room reading opcodes"
+msgstr "Error DWARF: se quedÃ³ sin espacio leyendo cÃ³digos de operaciÃ³n"
 
-#: dwarf2.c:2159
-msgid "Dwarf Error: Ran out of room reading opcodes"
-msgstr "Error enano: Agotado de espacio leyendo opcodes"
+#: dwarf2.c:2984
+msgid "DWARF error: mangled line number section"
+msgstr "Error DWARF: la secciÃ³n de nÃºmeros de lÃ­nea estÃ¡ rota"
 
-#: dwarf2.c:2332
-msgid "Dwarf Error: mangled line number section."
-msgstr "Error enano: secciÃ³n de nÃºmeros de lÃ­nea revuelta."
+#: dwarf2.c:3455
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "Error DWARF: se ha detectado una recurrencia de instancia abstracta"
 
-#: dwarf2.c:2833 dwarf2.c:2894
-msgid "Dwarf Error: Invalid abstract instance DIE ref."
-msgstr "Error enano: instancia DIE abstracta invÃ¡lida referenciada."
+#: dwarf2.c:3489 dwarf2.c:3579
+msgid "DWARF error: invalid abstract instance DIE ref"
+msgstr "Error DWARF: referencia DIE a instancia abstracta no vÃ¡lida"
 
-#: dwarf2.c:2870
+#: dwarf2.c:3505
 #, c-format
-msgid "Dwarf Error: Unable to read alt ref %llu."
-msgstr "Error enano: incapaz de leer referencia alt %llu."
+msgid "DWARF error: unable to read alt ref %<PRIu64>"
+msgstr "Error DWARF: no se puede leer la referencia alternativa %<PRIu64>"
 
-#: dwarf2.c:2911 dwarf2.c:3076 dwarf2.c:3428
+#: dwarf2.c:3557
 #, c-format
-msgid "Dwarf Error: Could not find abbrev number %u."
-msgstr "Error enano: no se pudo encontrar el nÃºmero de abreviatura %u."
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "Error DWARF: no se puede ubicar la referencia DIE de instancia abstracta %<PRIu64>"
 
-#: dwarf2.c:2928
-msgid "Dwarf Error: Abstract instance recursion detected."
-msgstr "Error enano: RecursiÃ³n de instancia abstracta detectada."
+#: dwarf2.c:3594 dwarf2.c:3910 dwarf2.c:4483
+#, c-format
+msgid "DWARF error: could not find abbrev number %u"
+msgstr "Error DWARF: no se pudo encontrar el nÃºmero de abreviatura %u"
 
-#: dwarf2.c:3347
+#: dwarf2.c:4183
 #, c-format
-msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information."
-msgstr "Error enano: encontrada versiÃ³n dwarf Â«%uÂ», este lector solamente manipula informaciÃ³n de las versiones 2, 3, 4 y 5."
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr "Error DWARF: no se pudo encontrar la especificaciÃ³n de la variable en el desplazamiento 0x%lx"
+
+#: dwarf2.c:4329 dwarf2.c:4583
+msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
+msgstr "Error DWARF: se encontrÃ³ un atributo DW_AT_comp_dir con un formato que no es de cadena"
 
-#: dwarf2.c:3391
+#: dwarf2.c:4400
 #, c-format
-msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."
-msgstr "Error enano: se encontrÃ³ el tamaÃ±o de direcciÃ³n Â«%uÂ», este lector no puede manipular tamaÃ±os mÃ¡s grandes que '%u'."
+msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
+msgstr "Error DWARF: se encontrÃ³ la versiÃ³n Â«%uÂ» de dwarf, este lector sÃ³lo maneja informaciÃ³n de las versiones 2, 3, 4 y 5"
 
-#: dwarf2.c:3494
-msgid "Dwarf Error: DW_AT_comp_dir attribute encountered with a non-string form."
-msgstr "Error enano: atributo DW_AT_comp_dir encontrado con un formato no encadenado."
+#: dwarf2.c:4447
+#, c-format
+msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
+msgstr "Error DWARF: se encontrÃ³ el tamaÃ±o de direcciÃ³n Â«%uÂ», este lector no puede manejar tamaÃ±os mÃ¡s grandes que Â«%uÂ»"
 
-#: ecoff.c:964
+#: ecoff.c:1016
 #, c-format
-msgid "%B: warning: isymMax (%ld) is greater than ifdMax (%ld)"
-msgstr "%B: aviso: isymMax (%ld) es mayor que ifdMax (%ld)"
+msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
+msgstr "%pB: aviso: isymMax (%ld) es mayor que ifdMax (%ld)"
 
-#: ecoff.c:1261
+#: ecoff.c:1312
 #, c-format
-msgid "Unknown basic type %d"
-msgstr "Tipo bÃ¡sico %d desconocido"
+msgid "unknown basic type %d"
+msgstr "tipo bÃ¡sico %d desconocido"
 
-#: ecoff.c:1518
+#: ecoff.c:1568
 #, c-format
 msgid ""
 "\n"
@@ -820,7 +779,7 @@ msgstr ""
 "\n"
 "      SÃ­mbolo final+1: %ld"
 
-#: ecoff.c:1525 ecoff.c:1528
+#: ecoff.c:1575 ecoff.c:1578
 #, c-format
 msgid ""
 "\n"
@@ -829,16 +788,16 @@ msgstr ""
 "\n"
 "      Primer sÃ­mbolo: %ld"
 
-#: ecoff.c:1541
+#: ecoff.c:1593
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %-7ld   Type:  %s"
 msgstr ""
 "\n"
-"      SÃ­mbolo final+1: %-7ld Tipo: %s"
+"      SÃ­mbolo fin+1: %-7ld  Tipo:  %s"
 
-#: ecoff.c:1548
+#: ecoff.c:1601
 #, c-format
 msgid ""
 "\n"
@@ -847,7 +806,7 @@ msgstr ""
 "\n"
 "      SÃ­mbolo local: %ld"
 
-#: ecoff.c:1556
+#: ecoff.c:1609
 #, c-format
 msgid ""
 "\n"
@@ -856,16 +815,16 @@ msgstr ""
 "\n"
 "      struct; sÃ­mbolo final+1: %ld"
 
-#: ecoff.c:1561
+#: ecoff.c:1614
 #, c-format
 msgid ""
 "\n"
 "      union; End+1 symbol: %ld"
 msgstr ""
 "\n"
-"      union; sÃ­mbolo final+1: %ld"
+"      uniÃ³n; sÃ­mbolo final+1: %ld"
 
-#: ecoff.c:1566
+#: ecoff.c:1619
 #, c-format
 msgid ""
 "\n"
@@ -874,7 +833,7 @@ msgstr ""
 "\n"
 "      enum; sÃ­mbolo final+1: %ld"
 
-#: ecoff.c:1572
+#: ecoff.c:1627
 #, c-format
 msgid ""
 "\n"
@@ -883,280 +842,349 @@ msgstr ""
 "\n"
 "      Tipo: %s"
 
-#: elf-attrs.c:475
-msgid "%B: error: attribute section length too small: %ld"
-msgstr "%B: error: longitud de secciÃ³n atributiva demasiado pequeÃ±a: %ld"
+#: elf-attrs.c:417 elf-attrs.c:447 elf-attrs.c:623
+msgid "error adding attribute"
+msgstr "error al aÃ±adir atributo"
+
+#: elf-attrs.c:503
+#, c-format
+msgid "%pB: error: attribute section '%pA' too big: %#llx"
+msgstr "%pB: error: secciÃ³n de atributo Â«%pAÂ» demasiado grande: %#llx"
+
+#: elf-attrs.c:540
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr "%pB: error: la longitud de secciÃ³n del atributo es demasiado pequeÃ±a: %ld"
 
-#: elf-attrs.c:603
+#: elf-attrs.c:673
 #, c-format
-msgid "error: %B: Object has vendor-specific contents that must be processed by the '%s' toolchain"
-msgstr "error: %B: El objeto tiene contenidos especÃ­ficos del proveedor que debe ser procesado por la cadena Â«%sÂ» de compilaciÃ³n"
+msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
+msgstr "error: %pB: el objeto tiene contenidos especÃ­ficos del proveedor que se deben procesar por la cadena de herramientas Â«%sÂ»"
 
-#: elf-attrs.c:613
+#: elf-attrs.c:683
 #, c-format
-msgid "error: %B: Object tag '%d, %s' is incompatible with tag '%d, %s'"
-msgstr "error: %B: La etiqueta de objeto '%d, %s' es incompatible con la etiqueta '%d, %s'"
+msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
+msgstr "error: %pB: la etiqueta del objeto Â«%d, %sÂ» es incompatible con la etiqueta Â«%d, %sÂ»"
 
-#: elf-eh-frame.c:942
+#: elf-eh-frame.c:945
 #, c-format
-msgid "discarding zero address range FDE in %B(%A).\n"
-msgstr "descartando lÃ­mite direccional cero FDE en %B(%A).\n"
+msgid "discarding zero address range FDE in %pB(%pA).\n"
+msgstr "descartando el rango de direcciÃ³n cero FDE en %pB(%pA).\n"
 
-#: elf-eh-frame.c:1047
+#: elf-eh-frame.c:1050
 #, c-format
-msgid "%P: error in %B(%A); no .eh_frame_hdr table will be created.\n"
-msgstr "%P: error en %B(%A); no se crearÃ¡ el segmento .eh_frame_hdr.\n"
+msgid "error in %pB(%pA); no .eh_frame_hdr table will be created"
+msgstr "error en %pB(%pA); no se crearÃ¡ la tabla .eh_frame_hdr"
 
-#: elf-eh-frame.c:1537
+#: elf-eh-frame.c:1542
 #, c-format
-msgid "%P: FDE encoding in %B(%A) prevents .eh_frame_hdr table being created.\n"
-msgstr "%P: codificaciÃ³n FDE en %B(%A) previene creaciÃ³n de distribuciÃ³n .eh_frame_hdr.\n"
+msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created"
+msgstr "La codificaciÃ³n FDE en %pB(%pA) impide la creaciÃ³n de la tabla .eh_frame_hdr"
 
-#: elf-eh-frame.c:1544
-msgid "%P: Further warnings about FDE encoding preventing .eh_frame_hdr generation dropped.\n"
-msgstr "%P: la codificaciÃ³n FDE en %B(%A) previene la creaciÃ³n del segmento .eh_frame_hdr.\n"
+#: elf-eh-frame.c:1549
+msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
+msgstr "se eliminaron mÃ¡s avisos sobre la codificaciÃ³n FDE que impide la generaciÃ³n de .eh_frame_hdr"
 
-#: elf-eh-frame.c:1866
+#: elf-eh-frame.c:1868
 #, c-format
-msgid "%B: %A not in order"
-msgstr "%B: %A no en operaciÃ³n"
+msgid "%pB: %pA not in order"
+msgstr "%pB: %pA desordenado"
 
-#: elf-eh-frame.c:1880
+#: elf-eh-frame.c:1882
 #, c-format
-msgid "%B: %A invalid input section size"
-msgstr "%B: %A tamaÃ±o seccional entrante invÃ¡lido"
+msgid "%pB: %pA invalid input section size"
+msgstr "%pB: %pA tamaÃ±o de secciÃ³n de entrada no vÃ¡lido"
 
-#: elf-eh-frame.c:1888
+#: elf-eh-frame.c:1890
 #, c-format
-msgid "%B: %A points past end of text section"
-msgstr "%B: %A puntos pasados finales de selecciÃ³n textual"
+msgid "%pB: %pA points past end of text section"
+msgstr "%pB: %pA puntos despuÃ©s del final de la secciÃ³n de texto"
 
-#: elf-eh-frame.c:2137
-msgid "%P: DW_EH_PE_datarel unspecified for this architecture.\n"
-msgstr "%P: DW_EH_PE_datarel sin especificar para esta arquitectura.\n"
+#: elf-eh-frame.c:2143
+msgid "DW_EH_PE_datarel unspecified for this architecture"
+msgstr "DW_EH_PE_datarel sin especificar para esta arquitectura"
 
-#: elf-eh-frame.c:2307
+#: elf-eh-frame.c:2314
 #, c-format
-msgid "Invalid output section for .eh_frame_entry: %A"
-msgstr "Salida de secciÃ³n invÃ¡lida para .eh_frame_entry: %A"
+msgid "invalid output section for .eh_frame_entry: %pA"
+msgstr "secciÃ³n de salida no vÃ¡lida para .eh_frame_entry: %pA"
 
-#: elf-eh-frame.c:2330
+#: elf-eh-frame.c:2337
 #, c-format
-msgid "Invalid contents in %A section"
-msgstr "Contenidos invÃ¡lidos en secciÃ³n %A"
+msgid "invalid contents in %pA section"
+msgstr "contenidos no vÃ¡lidos en la secciÃ³n %pA"
 
-#: elf-eh-frame.c:2486
-msgid "%P: .eh_frame_hdr entry overflow.\n"
-msgstr "%P: desbordamiento superior de asiento .eh_frame_hdr.\n"
+#: elf-eh-frame.c:2493
+msgid ".eh_frame_hdr entry overflow"
+msgstr "desbordamiento de entrada .eh_frame_hdr"
 
-#: elf-eh-frame.c:2489
-msgid "%P: .eh_frame_hdr refers to overlapping FDEs.\n"
-msgstr "%P: .eh_frame_hdr refiere a superponiendo varios FDE.\n"
+#: elf-eh-frame.c:2495
+msgid ".eh_frame_hdr refers to overlapping FDEs"
+msgstr ".eh_frame_hdr hace referencia a FDEs superpuestos"
 
-#: elf-ifunc.c:142
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1427
 #, c-format
-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: el sÃ­mbolo STT_GNU_IFUNC dinÃ¡mico Â«%sÂ» con igualdad de puntero en `%B' no se puede usar al hacer un ejecutable; recompile con -fPIE y reenlace con -pie\n"
+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: el sÃ­mbolo STT_GNU_IFUNC dinÃ¡mico Â«%sÂ» con igualdad de puntero en Â«%pBÂ» no se puede usar al hacer un ejecutable; recompile con -fPIE y reenlace con -pie\n"
 
-#: elf-m10200.c:425 elf-m10300.c:2145 elf32-avr.c:1502 elf32-bfin.c:3116
-#: elf32-cr16.c:1462 elf32-cr16c.c:780 elf32-cris.c:2030 elf32-crx.c:924
-#: elf32-d10v.c:509 elf32-epiphany.c:563 elf32-fr30.c:591 elf32-frv.c:4041
-#: elf32-ft32.c:485 elf32-h8300.c:522 elf32-i860.c:1210 elf32-ip2k.c:1475
-#: elf32-iq2000.c:689 elf32-lm32.c:1106 elf32-m32c.c:622 elf32-m32r.c:3031
-#: elf32-m68hc1x.c:1265 elf32-mep.c:524 elf32-metag.c:1985
-#: elf32-microblaze.c:1556 elf32-moxie.c:285 elf32-mt.c:400 elf32-nds32.c:5328
-#: elf32-or1k.c:1238 elf32-score.c:2731 elf32-score7.c:2540 elf32-spu.c:5076
-#: elf32-tilepro.c:3497 elf32-v850.c:2283 elf32-visium.c:677
-#: elf32-xstormy16.c:923 elf64-mmix.c:1538 elfxx-tilegx.c:3857
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:2237
+#: elf-m10200.c:434 elf-m10300.c:2146 elf32-bfin.c:3133 elf32-cr16.c:1429
+#: elf32-cris.c:2034 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4049 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1070 elf32-m32c.c:624
+#: elf32-m32r.c:2837 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1984
+#: elf32-microblaze.c:1682 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6093
+#: elf32-or1k.c:1897 elf32-score.c:2734 elf32-score7.c:2545 elf32-spu.c:5085
+#: elf32-tilepro.c:3372 elf32-v850.c:2294 elf32-visium.c:680
+#: elf32-xstormy16.c:930 elf64-bpf.c:339 elf64-mmix.c:1541 elfxx-tilegx.c:3742
 msgid "internal error: out of range error"
 msgstr "error interno: error fuera de rango"
 
-#: elf-m10200.c:429 elf-m10300.c:2149 elf32-avr.c:1506 elf32-bfin.c:3120
-#: elf32-cr16.c:1466 elf32-cr16c.c:784 elf32-cris.c:2034 elf32-crx.c:928
-#: elf32-d10v.c:513 elf32-fr30.c:595 elf32-frv.c:4045 elf32-ft32.c:489
-#: elf32-h8300.c:526 elf32-i860.c:1214 elf32-iq2000.c:693 elf32-lm32.c:1110
-#: elf32-m32c.c:626 elf32-m32r.c:3035 elf32-m68hc1x.c:1269 elf32-mep.c:528
-#: elf32-metag.c:1989 elf32-microblaze.c:1560 elf32-moxie.c:289
-#: elf32-msp430.c:1357 elf32-nds32.c:5332 elf32-or1k.c:1242 elf32-score.c:2735
-#: elf32-score7.c:2544 elf32-spu.c:5080 elf32-tilepro.c:3501 elf32-v850.c:2287
-#: elf32-visium.c:681 elf32-xstormy16.c:927 elf64-mmix.c:1542
-#: elfxx-mips.c:10265 elfxx-tilegx.c:3861
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:2241
+#: elf-m10200.c:438 elf-m10300.c:2150 elf32-bfin.c:3137 elf32-cr16.c:1433
+#: elf32-cris.c:2038 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4053 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1074 elf32-m32c.c:628 elf32-m32r.c:2841 elf32-m68hc1x.c:1275
+#: elf32-mep.c:526 elf32-metag.c:1988 elf32-microblaze.c:1686 elf32-moxie.c:292
+#: elf32-msp430.c:1510 elf32-nds32.c:6097 elf32-or1k.c:1901 elf32-score.c:2738
+#: elf32-score7.c:2549 elf32-spu.c:5089 elf32-tilepro.c:3376 elf32-v850.c:2298
+#: elf32-visium.c:684 elf32-xstormy16.c:934 elf64-mmix.c:1545
+#: elfxx-mips.c:10658 elfxx-tilegx.c:3746
 msgid "internal error: unsupported relocation error"
-msgstr "error interno: no se admite el error de reubicaciÃ³n"
+msgstr "error interno: error de reubicaciÃ³n no admitida"
 
-#: elf-m10200.c:433 elf32-cr16.c:1470 elf32-cr16c.c:788 elf32-crx.c:932
-#: elf32-d10v.c:517 elf32-h8300.c:530 elf32-lm32.c:1114 elf32-m32r.c:3039
-#: elf32-m68hc1x.c:1273 elf32-microblaze.c:1564 elf32-nds32.c:5336
-#: elf32-score.c:2739 elf32-score7.c:2548 elf32-spu.c:5084
+#: elf-m10200.c:442 elf32-cr16.c:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1078 elf32-m32r.c:2845 elf32-m68hc1x.c:1279
+#: elf32-microblaze.c:1690 elf32-nds32.c:6101 elf32-score.c:2742
+#: elf32-score7.c:2553 elf32-spu.c:5093
 msgid "internal error: dangerous error"
 msgstr "error interno: error peligroso"
 
-#: elf-m10200.c:437 elf-m10300.c:2166 elf32-avr.c:1514 elf32-bfin.c:3128
-#: elf32-cr16.c:1474 elf32-cr16c.c:792 elf32-cris.c:2042 elf32-crx.c:936
-#: elf32-d10v.c:521 elf32-epiphany.c:578 elf32-fr30.c:603 elf32-frv.c:4053
-#: elf32-ft32.c:497 elf32-h8300.c:534 elf32-i860.c:1222 elf32-ip2k.c:1490
-#: elf32-iq2000.c:701 elf32-lm32.c:1118 elf32-m32c.c:634 elf32-m32r.c:3043
-#: elf32-m68hc1x.c:1277 elf32-mep.c:536 elf32-metag.c:1997
-#: elf32-microblaze.c:1568 elf32-moxie.c:297 elf32-msp430.c:1365
-#: elf32-mt.c:408 elf32-nds32.c:5340 elf32-or1k.c:1250 elf32-score.c:2748
-#: elf32-score7.c:2552 elf32-spu.c:5088 elf32-tilepro.c:3509 elf32-v850.c:2307
-#: elf32-visium.c:689 elf32-xstormy16.c:935 elf64-mmix.c:1550
-#: elfxx-tilegx.c:3869
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:2249
+#: elf-m10200.c:446 elf-m10300.c:2167 elf32-bfin.c:3145 elf32-cr16.c:1441
+#: elf32-cris.c:2046 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4061 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1082 elf32-m32c.c:636
+#: elf32-m32r.c:2849 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1996
+#: elf32-microblaze.c:1694 elf32-moxie.c:300 elf32-msp430.c:1518 elf32-mt.c:410
+#: elf32-nds32.c:6105 elf32-or1k.c:1909 elf32-score.c:2751 elf32-score7.c:2557
+#: elf32-spu.c:5097 elf32-tilepro.c:3384 elf32-v850.c:2318 elf32-visium.c:692
+#: elf32-xstormy16.c:942 elf64-bpf.c:352 elf64-mmix.c:1553 elfxx-tilegx.c:3754
 msgid "internal error: unknown error"
 msgstr "error interno: error desconocido"
 
-#: elf-m10300.c:812
-#, c-format
-msgid "%B: unrecognised MN10300 reloc number: %d"
-msgstr "%B: nÃºmero reubicante MN10300 no reconocido: %d"
-
-#: elf-m10300.c:1028
+#: elf-m10300.c:1030
 #, c-format
-msgid "%B: Unsupported transition from %s to %s"
-msgstr "%B: transiciÃ³n desde %s hasta %s no estÃ¡ admitido"
+msgid "%pB: unsupported transition from %s to %s"
+msgstr "%pB: transiciÃ³n desde %s hasta %s no admitida"
 
 #: elf-m10300.c:1197
 #, c-format
-msgid "%B: %s' accessed both as normal and thread local symbol"
-msgstr "%B: %s accedidos ambos como comÃºn e hilo simbÃ³lico local"
+msgid "%pB: %s' accessed both as normal and thread local symbol"
+msgstr "%pB: Â«%sÂ» ha accedido como ambos un sÃ­mbolo comÃºn y local de hilo"
 
-#: elf-m10300.c:2093 elf32-arm.c:12536 elf32-i386.c:3433 elf32-m32r.c:2526
-#: elf32-m68k.c:3895 elf32-s390.c:3204 elf32-sh.c:4121 elf32-tilepro.c:3401
-#: elf32-xtensa.c:2939 elf64-s390.c:3118 elf64-sh64.c:1636 elf64-x86-64.c:3790
-#: elfxx-sparc.c:3918 elfxx-tilegx.c:3781
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:5001
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6457
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:2206
+#: elf-m10300.c:2093 elf32-arm.c:13398 elf32-i386.c:3494 elf32-m32r.c:2331
+#: elf32-m68k.c:3929 elf32-s390.c:3080 elf32-sh.c:3673 elf32-tilepro.c:3275
+#: elf32-xtensa.c:3023 elf64-s390.c:3042 elf64-x86-64.c:4369 elfxx-sparc.c:2917
+#: elfxx-sparc.c:3814 elfxx-tilegx.c:3665 elfnn-aarch64.c:5713
+#: elfnn-aarch64.c:7322 elfnn-kvx.c:2775
 #, c-format
-msgid "%B(%A+%#Lx): unresolvable %s relocation against symbol `%s'"
-msgstr "%B(%A+%#Lx): reubicaciÃ³n %s irresoluble frente a sÃ­mbolo `%s'"
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»"
 
-#: elf-m10300.c:2154
+#: elf-m10300.c:2155
 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
 msgstr "error: tipo de reubicaciÃ³n inapropiada para la biblioteca compartida (Â¿olvidÃ³ -fpic?)"
 
-#: elf-m10300.c:2158
+#: elf-m10300.c:2159
 #, c-format
-msgid "%B: taking the address of protected function '%s' cannot be done when making a shared library"
-msgstr "%B: tomando la direcciÃ³n de funciÃ³n protegida Â«%sÂ» no puede ser hecha cuando crea una biblioteca compartida"
+msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
+msgstr "%pB: no se puede tomar la direcciÃ³n de la funciÃ³n protegida Â«%sÂ» cuando se crea una biblioteca compartida"
 
-#: elf-m10300.c:2161
+#: elf-m10300.c:2162
 msgid "internal error: suspicious relocation type used in shared library"
-msgstr "error interno: se usÃ³ un tipo de reubicaciÃ³n sospechosa en la biblioteca compartida"
+msgstr "error interno: se ha usado un tipo de reubicaciÃ³n sospechosa en la biblioteca compartida"
+
+#: elf-m10300.c:2650 elf32-avr.c:2488 elf32-frv.c:5621 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2684 reloc.c:8457 reloc16.c:155 elfnn-ia64.c:365
+msgid "%P%F: --relax and -r may not be used together\n"
+msgstr "%P%F: --relax y -r no se pueden usar juntos\n"
 
 #: elf-properties.c:65
-msgid "%B: out of memory in _bfd_elf_get_property"
-msgstr "%B: memoria agotada en propiedad _bfd_elf_get_property"
+#, c-format
+msgid "%pB: out of memory in _bfd_elf_get_property"
+msgstr "%pB: memoria agotada en _bfd_elf_get_property"
 
 #: elf-properties.c:91
-msgid "warning: %B: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
-msgstr "aviso: %B: tamaÃ±o GNU_PROPERTY_TYPE (%ld) corrupto: %#lx"
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
+msgstr "aviso: %pB: tamaÃ±o de GNU_PROPERTY_TYPE (%ld) corrupto: %#lx"
 
 #: elf-properties.c:112
-msgid "warning: %B: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
-msgstr "advertencia: %B: GNU_PROPERTY_TYPE corrupto (%ld) tipo (0x%x) datosz: 0x%x"
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
+msgstr "aviso: %pB: GNU_PROPERTY_TYPE corrupto (%ld) tipo (0x%x) datasz: 0x%x"
 
 #: elf-properties.c:151
-msgid "warning: %B: corrupt stack size: 0x%x"
-msgstr "aviso: %B; tamaÃ±o de pila corrupta: 0x%x"
+#, c-format
+msgid "warning: %pB: corrupt stack size: 0x%x"
+msgstr "aviso: %pB: tamaÃ±o de pila corrupto: 0x%x"
 
 #: elf-properties.c:169
-msgid "warning: %B: corrupt no copy on protected size: 0x%x"
-msgstr "aviso: %B: corrupto no copia en tamaÃ±o protegido: 0x%x"
+#, c-format
+msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
+msgstr "aviso: %pB: no copiar corrupto en tamaÃ±o protegido: 0x%x"
 
-#: elf-properties.c:186
-msgid "warning: %B: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
-msgstr "cuidado: %B: tipo GNU_PROPERTY_TYPE (%ld) no soportado: 0x%x"
+#: elf-properties.c:189
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr "error: %pB: <tamaÃ±o de propiedad (0x%x) corrupto: 0x%x>"
 
-#. PR 17512: file: f057ec89.
-#: elf.c:343
+#: elf-properties.c:214
 #, c-format
-msgid "%B: attempt to load strings from a non-string section (number %d)"
-msgstr "%B: intenta cargar cadenas desde una secciÃ³n no-cadena (nÃºmero %d)"
+msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
+msgstr "aviso: %pB: tipo de GNU_PROPERTY_TYPE (%ld) no admitido: 0x%x"
+
+#: elf-properties.c:400
+msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr "Se eliminÃ³ la propiedad %W para combinar %pB (0x%v) y %pB (0x%v)\n"
+
+#: elf-properties.c:406
+msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
+msgstr "Se eliminÃ³ la propiedad %W para combinar %pB (0x%v) y %pB (no encontrada)\n"
 
-#: elf.c:358
+#: elf-properties.c:415 elf-properties.c:493
+msgid "Removed property %W to merge %pB and %pB\n"
+msgstr "Se eliminÃ³ la propiedad %W para combinar %pB y %pB\n"
+
+#: elf-properties.c:419
+msgid "Removed property %W to merge %pB and %pB (not found)\n"
+msgstr "Se eliminÃ³ la propiedad %W para combinar %pB y %pB (no encontrada)\n"
+
+#: elf-properties.c:436
+msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr "Se actualizÃ³ la propiedad %W (0x%v) para combinar %pB (0x%v) y %pB (0x%v)\n"
+
+#: elf-properties.c:445
+msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
+msgstr "Se actualizÃ³ la propiedad %W (%v) para combinar %pB (0x%v) y %pB (no encontrada)\n"
+
+#: elf-properties.c:487
+msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
+msgstr "Se eliminÃ³ la propiedad %W para combinar %pB (no encontrada) y %pB (0x%v)\n"
+
+#: elf-properties.c:668 elfxx-aarch64.c:758 elfxx-x86.c:4147
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: fallado al crear la secciÃ³n de propiedad GNU\n"
+
+#: elf-properties.c:672 elfxx-aarch64.c:762 elfxx-x86.c:4152
 #, c-format
-msgid "%B: invalid string offset %u >= %Lu for section `%s'"
-msgstr "%B: desplazamiento de cadena invÃ¡lido %u >= %Lu para la secciÃ³n Â«%sÂ»"
+msgid "%F%pA: failed to align section\n"
+msgstr "%F%pA: fallÃ³ al alinear la secciÃ³n\n"
+
+#. Merge .note.gnu.property sections.
+#: elf-properties.c:698 elf-properties.c:700
+msgid "\n"
+msgstr "\n"
 
-#: elf.c:497 /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:7535
+#: elf-properties.c:699
+msgid "Merging program properties\n"
+msgstr "Combinando las propiedades del programa\n"
+
+#: elf-sframe.c:240
 #, c-format
-msgid "%B symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
-msgstr "%B nÃºmero simbÃ³lico %lu hace referencia a la secciÃ³n inexistente SHT_SYMTAB_SHNDX"
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr "error en %pB(%pA); no se crearÃ¡ .sframe"
+
+#: elf-sframe.c:400
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr "las secciones de entrada SFrame con diferentes abi impiden la generaciÃ³n de .sframe"
 
-#: elf.c:661
+#: elf-sframe.c:411
+msgid "input SFrame sections with different format versions prevent .sframe generation"
+msgstr "las secciones de entrada SFrame con diferentes versiones de formato impiden la generaciÃ³n de .sframe"
+
+#. PR 17512: file: f057ec89.
+#: elf.c:328
 #, c-format
-msgid "%B: corrupt size field in group section header: %#Lx"
-msgstr "%B: campo de tamaÃ±o corrupto en el encabezado de la secciÃ³n de grupo: %#Lx"
+msgid "%pB: attempt to load strings from a non-string section (number %d)"
+msgstr "%pB: intento de cargar cadenas desde una secciÃ³n sin cadenas (nÃºmero %d)"
 
-#: elf.c:676
+#: elf.c:353
 #, c-format
-msgid "%B: invalid size field in group section header: %#Lx"
-msgstr "%B: campo de tamaÃ±o invÃ¡lido en el encabezado de la secciÃ³n de grupo: %#Lx"
+msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
+msgstr "%pB: desplazamiento de cadena no vÃ¡lido %u >= %<PRIu64> para la secciÃ³n Â«%sÂ»"
 
-#: elf.c:712
-msgid "%B: invalid SHT_GROUP entry"
-msgstr "%B: entrada SHT_GROUP invÃ¡lida"
+#: elf.c:517 elf32-arm.c:17731 elfnn-aarch64.c:8322 elfnn-loongarch.c:5102
+#, c-format
+msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
+msgstr "%pB el nÃºmero de sÃ­mbolo %lu hace referencia a la secciÃ³n inexistente SHT_SYMTAB_SHNDX"
 
-#: elf.c:731
-msgid "%B: no valid group sections found"
-msgstr "%B: encontradas secciones agrupadas no vÃ¡lidas"
+#: elf.c:679
+#, c-format
+msgid "%pB: invalid size field in group section header: %#<PRIx64>"
+msgstr "%pB: campo de tamaÃ±o no vÃ¡lido en el encabezado de la secciÃ³n de grupo: %#<PRIx64>"
+
+#: elf.c:724
+#, c-format
+msgid "%pB: invalid entry in SHT_GROUP section [%u]"
+msgstr "%pB: entrada no vÃ¡lida en secciÃ³n SHT_GROUP [%u]"
+
+#: elf.c:743
+#, c-format
+msgid "%pB: no valid group sections found"
+msgstr "%pB: no se han encontrado secciones de grupo vÃ¡lidas"
 
 #. See PR 21957 for a reproducer.
-#: elf.c:760
+#: elf.c:772
 #, c-format
-msgid "%B: group section '%A' has no contents"
-msgstr "%B: secciÃ³n agrupada '%A' no tiene contenidos"
+msgid "%pB: group section '%pA' has no contents"
+msgstr "%pB: la secciÃ³n de grupo Â«%pAÂ» no tiene contenidos"
 
-#: elf.c:820
+#: elf.c:833
 #, c-format
-msgid "%B: no group info for section '%A'"
-msgstr "%B: ningÃºn grupo informado para secciÃ³n Â«%AÂ»"
+msgid "%pB: no group info for section '%pA'"
+msgstr "%pB: no hay informaciÃ³n del grupo para la secciÃ³n Â«%pAÂ»"
 
-#: elf.c:851 elf.c:3862 elflink.c:11252
+#: elf.c:885
 #, c-format
-msgid "%B: warning: sh_link not set for section `%A'"
-msgstr "%B: aviso: no se estableciÃ³ sh_link para la secciÃ³n `%A'"
+msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
+msgstr "%pB: sh_link [%d] en la secciÃ³n Â«%pAÂ» es incorrecto"
 
-#: elf.c:871
+#: elf.c:898
 #, c-format
-msgid "%B: sh_link [%d] in section `%A' is incorrect"
-msgstr "%B: sh_link [%d] en la secciÃ³n `%A', es incorrecto"
+msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
+msgstr "%pB: la secciÃ³n SHT_GROUP [Ã­ndice %d] no tiene ninguna secciÃ³n SHF_GROUP"
 
-#: elf.c:884
+#: elf.c:920
 #, c-format
-msgid "%B: SHT_GROUP section [index %d] has no SHF_GROUP sections"
-msgstr "%B: secciÃ³n SHT_GROUP [Ã­ndice %d] no tiene ninguna secciÃ³n SHF_GROUP"
+msgid "%pB: section group entry number %u is corrupt"
+msgstr "%pB: el nÃºmero de entrada del grupo de secciÃ³n %u estÃ¡ corrupto"
 
-#: elf.c:905
+#: elf.c:943
 #, c-format
-msgid "%B: section group entry number %u is corrupt"
-msgstr "%B: nÃºmero de entrada de grupo seccional %u estÃ¡ corrupto"
+msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
+msgstr "%pB: tipo desconocido [%#x] secciÃ³n Â«%sÂ» en grupo [%pA]"
 
-#: elf.c:928
+#: elf.c:1244
 #, c-format
-msgid "%B: unknown type [%#x] section `%s' in group [%A]"
-msgstr "%B: tipo desconocido [%#x] secciÃ³n Â«%sÂ» en grupo [%A]"
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr "%pB: la secciÃ³n %s estÃ¡ comprimida con zstd, pero BFD no estÃ¡ construido con soporte para zstd"
 
-#: elf.c:1390
+#: elf.c:1440
 #, c-format
-msgid "%B: Invalid sh_link field (%d) in section number %d"
-msgstr "%B: campo sh_link invÃ¡lido (%d) en nÃºmero de secciÃ³n %d"
+msgid "%pB: invalid sh_link field (%d) in section number %d"
+msgstr "%pB: campo sh_link no vÃ¡lido (%d) en nÃºmero de secciÃ³n %d"
 
-#: elf.c:1406
+#: elf.c:1456
 #, c-format
-msgid "%B: Failed to find link section for section %d"
-msgstr "%B: fallado para encontrar secciÃ³n de enlace para secciÃ³n %d"
+msgid "%pB: failed to find link section for section %d"
+msgstr "%pB: no se pudo encontrar la secciÃ³n de enlace para la secciÃ³n %d"
 
-#: elf.c:1433
+#: elf.c:1483
 #, c-format
-msgid "%B: Failed to find info section for section %d"
-msgstr "%B: fallaba al encontrar secciÃ³n de informaciÃ³n para la secciÃ³n %d"
+msgid "%pB: failed to find info section for section %d"
+msgstr "%pB: no se pudo encontrar la secciÃ³n de informaciÃ³n para la secciÃ³n %d"
 
-#: elf.c:1605
+#: elf.c:1660
 #, c-format
 msgid ""
 "\n"
@@ -1165,7 +1193,7 @@ msgstr ""
 "\n"
 "Encabezado del Programa:\n"
 
-#: elf.c:1647
+#: elf.c:1702
 #, c-format
 msgid ""
 "\n"
@@ -1174,7 +1202,7 @@ msgstr ""
 "\n"
 "SecciÃ³n dinÃ¡mica:\n"
 
-#: elf.c:1788
+#: elf.c:1841
 #, c-format
 msgid ""
 "\n"
@@ -1183,7 +1211,7 @@ msgstr ""
 "\n"
 "Definiciones de versiÃ³n:\n"
 
-#: elf.c:1813
+#: elf.c:1866
 #, c-format
 msgid ""
 "\n"
@@ -1192,1535 +1220,1694 @@ msgstr ""
 "\n"
 "Referencias de versiÃ³n:\n"
 
-#: elf.c:1818
+#: elf.c:1871
 #, c-format
 msgid "  required from %s:\n"
-msgstr "  requer. desde %s:\n"
-
-#: elf.c:2016
-msgid "%B: warning: loop in section dependencies detected"
-msgstr "%B: aviso: bucle dentro de dependencias de secciÃ³n detectadas"
+msgstr "   requerido desde %s:\n"
 
-#: elf.c:2124
+#: elf.c:2614
 #, c-format
-msgid "%B: warning: multiple symbol tables detected - ignoring the table in section %u"
-msgstr "%B: aviso: mÃºltiples segmento simbÃ³licos detectados - ignorando el segmento en secciÃ³n %u"
+msgid "%pB: warning: loop in section dependencies detected"
+msgstr "%pB: aviso: se ha detectado un bucle en dependencias de secciÃ³n"
 
-#: elf.c:2208
+#: elf.c:2721
 #, c-format
-msgid "%B: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
-msgstr "%B: aviso: mÃºltiples tablas sÃ­mbÃ³licas dinÃ¡micas detectadas - ignorando el segmento en secciÃ³n %u"
+msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
+msgstr "%pB: aviso: se han detectado varias tablas de sÃ­mbolos - ignorando la tabla en la secciÃ³n %u"
 
-#: elf.c:2321
+#: elf.c:2806
 #, c-format
-msgid "%B: invalid link %u for reloc section %s (index %u)"
-msgstr "%B: enlace %u invÃ¡lido para la secciÃ³n de reubicaciÃ³n %s (Ã­ndice %u)"
+msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
+msgstr "%pB: aviso: se han detectado varias tablas de sÃ­mbolos dinÃ¡micos - ignorando la tabla en la secciÃ³n %u"
 
-#: elf.c:2480 elf.c:2495 elf.c:2506 elf.c:2519
+#: elf.c:2925
 #, c-format
-msgid "%B: unknown type [%#x] section `%s'"
-msgstr "%B: tipo desconocido [%#x] secciÃ³n Â«%sÂ»"
+msgid "%pB: invalid link %u for reloc section %s (index %u)"
+msgstr "%pB: enlace %u no vÃ¡lido para la secciÃ³n de reubicaciÃ³n %s (Ã­ndice %u)"
 
-#: elf.c:3224
+#: elf.c:2982
 #, c-format
-msgid "%B: error: Alignment power %d of section `%A' is too big"
-msgstr "%B: error: alineamiento potencial %s de secciÃ³n Â«%AÂ» es demasiado grande"
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: aviso: se ha encontrado una secciÃ³n de reubicaciÃ³n secundaria Â«%sÂ» para la secciÃ³n %pA - ignorando"
 
-#: elf.c:3254
+#: elf.c:3070 elf.c:3084 elf.c:3095 elf.c:3108
 #, c-format
-msgid "warning: section `%A' type changed to PROGBITS"
-msgstr "aviso: el tipo de la secciÃ³n `%A' cambiÃ³ a PROGBITS"
+msgid "%pB: unknown type [%#x] section `%s'"
+msgstr "%pB: tipo desconocido [%#x] secciÃ³n Â«%sÂ»"
 
-#: elf.c:3730
+#: elf.c:3770
 #, c-format
-msgid "%B: too many sections: %u"
-msgstr "%B: demasiadas secciones: %u"
+msgid "%pB: error: alignment power %d of section `%pA' is too big"
+msgstr "%pB: error: la alineaciÃ³n de potencia %d de la secciÃ³n Â«%pAÂ» es demasiado grande"
 
-#: elf.c:3815
+#: elf.c:3805
 #, c-format
-msgid "%B: sh_link of section `%A' points to discarded section `%A' of `%B'"
-msgstr "%B: sh_link de la secciÃ³n `%A' apunta a la secciÃ³n descartada `%A' de `%B'"
+msgid "warning: section `%pA' type changed to PROGBITS"
+msgstr "aviso: el tipo de la secciÃ³n Â«%pAÂ» cambiÃ³ a PROGBITS"
 
-#: elf.c:3840
+#: elf.c:4311
 #, c-format
-msgid "%B: sh_link of section `%A' points to removed section `%A' of `%B'"
-msgstr "%B: sh_link de la secciÃ³n `%A' apunta a la secciÃ³n quitada `%A' de `%B'"
+msgid "%pB: too many sections: %u"
+msgstr "%pB: demasiadas secciones: %u"
 
-#: elf.c:4392
+#: elf.c:4397
 #, c-format
-msgid "%B: GNU_MBIN section `%A' has invalid sh_info field: %d"
-msgstr "%B: secciÃ³n GNU_MBIN Â«%AÂ» tiene campo sh_info invÃ¡lido: %d"
+msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
+msgstr "%pB: sh_link de la secciÃ³n Â«%pAÂ» apunta a la secciÃ³n descartada Â«%pAÂ» de Â«%pBÂ»"
 
-#: elf.c:4951
-msgid "%B: TLS sections are not adjacent:"
-msgstr "%B: secciones TLS no son adyacentes:"
-
-#: elf.c:4958
+#: elf.c:4415
 #, c-format
-msgid "\t    TLS: %A"
-msgstr "\t    TLS: %A"
+msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
+msgstr "%pB: sh_link de la secciÃ³n Â«%pAÂ» apunta a la secciÃ³n eliminada Â«%pAÂ» de Â«%pBÂ»"
 
-#: elf.c:4962
+#: elf.c:5009
 #, c-format
-msgid "\tnon-TLS: %A"
-msgstr "\tno-TLS: %A"
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr "%pB: la secciÃ³n GNU_MBIN Â«%pAÂ» tiene campo sh_info no vÃ¡lido: %d"
 
-#: elf.c:5458
-msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section"
-msgstr "%B: La primera secciÃ³n en el segmento PT_DYNAMIC no es la secciÃ³n .dynamic"
+#: elf.c:5192
+msgid "%F%P: failed to size relative relocations\n"
+msgstr "%F%P: no se pudieron dimensionar las reubicaciones relativas\n"
 
-#: elf.c:5486
-msgid "%B: Not enough room for program headers, try linking with -N"
-msgstr "%B: No hay suficiente espacio para los encabezados del programa, pruebe enlazar con -N"
+#: elf.c:5617
+#, c-format
+msgid "%pB: TLS sections are not adjacent:"
+msgstr "%pB: las secciones TLS no son adyacentes:"
 
-#: elf.c:5574
+#: elf.c:5624
 #, c-format
-msgid "%B: section %A lma %#Lx adjusted to %#Lx"
-msgstr "%B: secciÃ³n %A lma %#lx ajustado a %#Lx"
+msgid "\t    TLS: %pA"
+msgstr "\t    TLS: %pA"
 
-#: elf.c:5711
+#: elf.c:5628
 #, c-format
-msgid "%B: section `%A' can't be allocated in segment %d"
-msgstr "%B: la secciÃ³n `%A' no se puede asignar en el segmento %d"
+msgid "\tnon-TLS: %pA"
+msgstr "\tno-TLS: %pA"
 
-#: elf.c:5759
+#: elf.c:6256
 #, c-format
-msgid "%B: warning: allocated section `%s' not in segment"
-msgstr "%B: aviso: secciÃ³n asignada Â«%sÂ» no dentro del segmento"
+msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
+msgstr "%pB: La primera secciÃ³n en el segmento PT_DYNAMIC no es la secciÃ³n .dynamic"
 
-#: elf.c:5957
-msgid "%B: error: non-load segment %d includes file header and/or program header"
-msgstr "%B: error: segmento no-cargado %d incluye cabecera de fichero y/o cabecera de programa"
+#: elf.c:6282
+#, c-format
+msgid "%pB: not enough room for program headers, try linking with -N"
+msgstr "%pB: no hay suficiente espacio para los encabezados del programa, intente enlazar con -N"
+
+#: elf.c:6399
+#, c-format
+msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
+msgstr "%pB: secciÃ³n %pA lma %#<PRIx64> ajustado a %#<PRIx64>"
 
 #. 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:6134
-msgid "%B: error: PHDR segment not covered by LOAD segment"
-msgstr "%B: error: segmento PHDR no cubierto por segmento LOAD"
+#: elf.c:6539
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: error: el segmento PHDR no estÃ¡ cubierto por el segmento LOAD"
+
+#: elf.c:6579
+#, c-format
+msgid "%pB: section `%pA' can't be allocated in segment %d"
+msgstr "%pB: la secciÃ³n Â«%pAÂ» no se puede asignar en el segmento %d"
+
+#: elf.c:6720
+#, c-format
+msgid "%pB: warning: allocated section `%s' not in segment"
+msgstr "%pB: aviso: la secciÃ³n asignada Â«%sÂ» no estÃ¡ en el segmento"
 
-#: elf.c:6478
+#: elf.c:6855
 #, c-format
-msgid "%B: symbol `%s' required but not present"
-msgstr "%B: el sÃ­mbolo Â«%sÂ» se requiere pero no estÃ¡ presente"
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr "%pB: aviso: no se puede asignar ninguna secciÃ³n al segmento PT_GNU_RELRO"
 
-#: elf.c:6821
+#: elf.c:6886
 #, c-format
-msgid "%B: warning: Empty loadable segment detected at vaddr=%#Lx, is this intentional?"
-msgstr "%B: aviso: Se detectÃ³ un segmento cargable vacÃ­o en vaddr=%#Lx, Â¿esto es intencional?"
+msgid "%pB: error: non-load segment %d includes file header and/or program header"
+msgstr "%pB: error: el segmento que no es de carga %d incluye una cabecera de fichero y/o cabecera de programa"
 
-#: elf.c:7435
+#: elf.c:7034
 #, c-format
-msgid "%B: warning: segment alignment of %#Lx is too large"
-msgstr "%B: aviso: alineamiento de segmento de %#Lx es demasiado grande"
+msgid "error: %pB has a TLS segment with execute permission"
+msgstr "error: %pB tiene un segmento TLS con permiso de ejecuciÃ³n"
 
-#: elf.c:7916
+#: elf.c:7040
 #, c-format
-msgid "Unable to find equivalent output section for symbol '%s' from section '%s'"
-msgstr "No se puede encontrar la secciÃ³n de salida equivalente para el sÃ­mbolo Â«%sÂ» de la secciÃ³n Â«%sÂ»"
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr "aviso: %pB tiene un segmento TLS con permiso de ejecuciÃ³n"
 
-#: elf.c:8249
-msgid "%B: .gnu.version_r invalid entry"
-msgstr "%B: entrada .gnu.version_r invÃ¡lida"
+#: elf.c:7055
+#, c-format
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr "error: %pB tiene un segmento LOAD con permisos RWX"
+
+#: elf.c:7061
+#, c-format
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr "aviso: %pB tiene un segmento LOAD con permisos RWX"
+
+#: elf.c:7454
+#, c-format
+msgid "%pB: symbol `%s' required but not present"
+msgstr "%pB: el sÃ­mbolo Â«%sÂ» es necesario pero no estÃ¡ presente"
 
-#: elf.c:8376
-msgid "%B: .gnu.version_d invalid entry"
-msgstr "%B: entrada  .gnu.version_d invÃ¡lida"
+#: elf.c:7832
+#, c-format
+msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
+msgstr "%pB: aviso: se ha detectado un segmento cargable vacÃ­o en vaddr=%#<PRIx64>, Â¿esto es intencional?"
+
+#: elf.c:8492
+#, c-format
+msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
+msgstr "%pB: aviso: la alineaciÃ³n de segmento de %#<PRIx64> es demasiado grande"
+
+#: elf.c:9000
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: No se puede manejar el Ã­ndice de secciÃ³n %x en el sÃ­mbolo ELF.  Utilizando ABS en su lugar."
 
-#: elf.c:8928
+#: elf.c:9030
 #, c-format
-msgid "%B: unsupported relocation type %s"
-msgstr "%B: no se admite el tipo de reubicaciÃ³n %s"
+msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
+msgstr "no se puede encontrar la secciÃ³n de salida equivalente para el sÃ­mbolo Â«%sÂ» de la secciÃ³n Â«%sÂ»"
 
-#: elf32-arc.c:433 elf32-frv.c:6623 elf32-iq2000.c:866 elf32-m32c.c:912
-#: elf32-mt.c:560 elf32-rl78.c:1257 elf32-rx.c:3178 elf32-visium.c:837
-#: elf64-ppc.c:6067
+#: elf.c:9464
+#, c-format
+msgid "%pB: .gnu.version_r invalid entry"
+msgstr "%pB: entrada .gnu.version_r no vÃ¡lida"
+
+#: elf.c:9639
+#, c-format
+msgid "%pB: .gnu.version_d invalid entry"
+msgstr "%pB: entrada .gnu.version_d no vÃ¡lida"
+
+#: elf.c:10139
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: error: intentando escribir sobre el final de la secciÃ³n"
+
+#: elf.c:10151
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: error: intentando escribir la secciÃ³n en un bÃºfer vacÃ­o"
+
+#: elf.c:10266 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7676
+#: elf32-ppc.c:8864 elf64-ppc.c:16839
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: no se admite %s"
+
+#: elf.c:11079
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr "%pB: aviso: win32pstatus %s de tamaÃ±o %lu bytes es demasiado pequeÃ±o"
+
+#: elf.c:11158
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr "%pB: win32pstatus NOTE_INFO_MODULE de tamaÃ±o %lu es demasiado pequeÃ±o para contener un nombre de tamaÃ±o %u"
+
+#: elf.c:13796
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr "La secciÃ³n GNU_MBIND sÃ³lo es compatible con objetivos GNU y FreeBSD"
+
+#: elf.c:13799
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr "el tipo de sÃ­mbolo STT_GNU_IFUNC sÃ³lo es compatible con objetivos GNU y FreeBSD"
+
+#: elf.c:13802
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr "el enlace de sÃ­mbolo STB_GNU_UNIQUE sÃ³lo es compatible con objetivos GNU y FreeBSD"
+
+#: elf.c:13805
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr "La secciÃ³n GNU_RETAIN sÃ³lo es compatible con objetivos GNU y FreeBSD"
+
+#: elf.c:14023
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr "%pB(%pA): la reubicaciÃ³n %zu tiene un Ã­ndice de sÃ­mbolo %lu no vÃ¡lido"
+
+#: elf.c:14099
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr "%pB(%pA): la secciÃ³n de enlace no se puede configurar porque el fichero de salida no tiene una tabla de sÃ­mbolos"
+
+#: elf.c:14113
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): el Ã­ndice de la secciÃ³n de informaciÃ³n no es vÃ¡lido"
+
+#: elf.c:14127
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): el Ã­ndice de la secciÃ³n de informaciÃ³n no se puede configurar porque la secciÃ³n no estÃ¡ en la salida"
+
+#: elf.c:14203
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): error: secciÃ³n de reubicaciÃ³n secundaria procesada dos veces"
+
+#: elf.c:14215
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr "%pB(%pA): error: la secciÃ³n de reubicaciÃ³n secundaria tiene entradas de tamaÃ±o cero"
+
+#: elf.c:14227
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr "%pB(%pA): error: la secciÃ³n de reubicaciÃ³n secundaria tiene entradas de tamaÃ±o no estÃ¡ndar"
+
+#: elf.c:14241
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): error: Â¡la secciÃ³n de reubicaciÃ³n secundaria estÃ¡ vacÃ­a!"
+
+#: elf.c:14264
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): error: faltan reubicaciones internas para la secciÃ³n de reubicaciÃ³n secundaria"
+
+#: elf.c:14284
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr "%pB(%pA): error: la entrada de la tabla de reubicaciÃ³n %zu estÃ¡ vacÃ­a"
+
+#: elf.c:14309
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr "%pB(%pA): error: la reubicaciÃ³n secundaria %zu hace referencia a un sÃ­mbolo que falta"
+
+#: elf.c:14327
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr "%pB(%pA): error: la reubicaciÃ³n secundaria %zu hace referencia a un sÃ­mbolo eliminado"
+
+#: elf.c:14341
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+msgstr "%pB(%pA): error: la reubicaciÃ³n secundaria %zu es de un tipo desconocido"
+
+#. 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-arc.c:455 elf32-arm.c:15125 elf32-frv.c:6612 elf32-iq2000.c:868
+#: elf32-m32c.c:914 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5513 elfnn-aarch64.c:7552
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "marcas privadas = 0x%lx:"
 
-#: elf32-arc.c:611
-msgid "Warning: %B: Conflicting platform configuration %s with %s.\n"
-msgstr "Aviso: %B: ConfiguraciÃ³n de plataformas en conflicto %s con %s.\n"
+#: elf32-arc.c:642
+#, c-format
+msgid "warning: %pB: conflicting platform configuration %s with %s"
+msgstr "aviso: %pB: configuraciÃ³n de plataforma en conflicto %s con %s"
 
-#: elf32-arc.c:630
-msgid "error: %B: unable to merge CPU base attributes %s with %s.\n"
-msgstr "error: %B: no se pueden combinar atributos base de CPU %s con %s.\n"
+#: elf32-arc.c:661
+#, c-format
+msgid "error: %pB: unable to merge CPU base attributes %s with %s"
+msgstr "error: %pB: no se pueden combinar los atributos base de CPU %s con %s"
 
-#: elf32-arc.c:667
-msgid "error: %B: unable to merge ISA extension attributes %s.\n"
-msgstr "error: %B: no se pueden combinar los atributos de extensiÃ³n ISA %s.\n"
+#: elf32-arc.c:698
+#, c-format
+msgid "error: %pB: unable to merge ISA extension attributes %s"
+msgstr "error: %pB: no se pueden combinar los atributos de extensiÃ³n ISA %s"
 
-#: elf32-arc.c:691
-msgid "error: %B: conflicting ISA extension attributes %s with %s.\n"
-msgstr "error: %B: conflicto de atributos de extensiÃ³n ISA %s con %s.\n"
+#: elf32-arc.c:722
+#, c-format
+msgid "error: %pB: conflicting ISA extension attributes %s with %s"
+msgstr "error: %pB: atributos de extensiÃ³n ISA en conflicto %s con %s"
 
-#: elf32-arc.c:726
-msgid "error: %B: cannot mix rf16 with full register set %B.\n"
-msgstr "error: %B: no puede mezclar rf16 con conjunto de registro completo %B.\n"
+#: elf32-arc.c:762
+#, c-format
+msgid "error: %pB: cannot mix rf16 with full register set %pB"
+msgstr "error: %pB: no se puede mezclar rf16 con el conjunto de registro completo %pB"
 
-#: elf32-arc.c:752
-msgid "error: %B: conflicting attributes %s: %s with %s.\n"
-msgstr "error: %B: atributos conflictivos %s: %s con %s.\n"
+#: elf32-arc.c:790
+#, c-format
+msgid "error: %pB: conflicting attributes %s: %s with %s"
+msgstr "error: %pB: atributos en conflicto %s: %s con %s"
 
-#: elf32-arc.c:777
-msgid "error: %B: conflicting attributes %s.\n"
-msgstr "error: %B: conflicto de atributos %s.\n"
+#: elf32-arc.c:817
+#, c-format
+msgid "error: %pB: conflicting attributes %s"
+msgstr "error: %pB: atributos en conflicto %s"
 
-#: elf32-arc.c:877
+#: elf32-arc.c:922
 #, c-format
-msgid "ERROR: Attempting to link %B with a binary %B of different architecture"
-msgstr "ERROR: intentando enlazar %B con un binario %B de arquitectura distinta"
+msgid "error: attempting to link %pB with a binary %pB of different architecture"
+msgstr "error: intentando enlazar %pB con un binario %pB de arquitectura diferente"
 
-#: elf32-arc.c:891 elf32-i370.c:359 elf32-iq2000.c:842 elf32-m32c.c:887
-#: elf32-m68hc1x.c:1384 elf32-ppc.c:4846 elf64-sparc.c:727 elfxx-mips.c:15082
+#: elf32-arc.c:938 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1390
+#: elf32-ppc.c:3856 elf64-sparc.c:737 elfxx-mips.c:15692
 #, c-format
-msgid "%B: uses different e_flags (%#x) fields than previous modules (%#x)"
-msgstr "%B: emplea diferentes campos e_flags (%#x) que mÃ³dulos (%#x) anteriores"
+msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
+msgstr "%pB: usa campos e_flags (%#x) diferentes a los mÃ³dulos anteriores (%#x)"
 
-#: elf32-arc.c:980
-msgid "Error: The ARC4 architecture is no longer supported.\n"
-msgstr "Error: arquitectura ARC4 sin mÃ¡s soporte.\n"
+#: elf32-arc.c:1027
+msgid "error: the ARC4 architecture is no longer supported"
+msgstr "error: la arquitectura ARC4 ya no se admite"
 
-#: elf32-arc.c:986
-msgid ""
-"Warning: unset or old architecture flags. \n"
-"\t       Use default machine.\n"
-msgstr ""
-"Aviso: destablece o marcas arquitecturales antiguas. \n"
-"\t       Emplee mÃ¡quina predeterminada.\n"
+#: elf32-arc.c:1033
+msgid "warning: unset or old architecture flags; use default machine"
+msgstr "aviso: marcas de arquitectura antiguas o no establecidas. Use la mÃ¡quina predeterminada"
 
-#: elf32-arc.c:1119
+#: elf32-arc.c:1159
 #, c-format
-msgid "%B(%A+%#Lx): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#Lx)"
-msgstr "%B(%A+%#Lx): reubicaciÃ³n CMEM a Â«%sÂ» es invÃ¡lido, 16 MSB deberÃ­a ser %#x (valor es %#Lx)"
+msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): la reubicaciÃ³n CMEM a Â«%sÂ» es no vÃ¡lida, 16 MSB deberÃ­a ser %#x (el valor es %#<PRIx64>)"
 
-#: elf32-arc.c:1130
+#: elf32-arc.c:1170
 #, c-format
-msgid "%B(%A+%#Lx): CMEM relocation to `%s+%#Lx' is invalid, 16 MSB should be %#x (value is %#Lx)"
-msgstr "%B(%A+%#Lx): CMEM reubicando a `%s+%#Lx' es invÃ¡lido, 16 MSB deberÃ­a ser %#x (valor es %#Lx)"
+msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s+%#<PRIx64>' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): la reubicaciÃ³n CMEM a Â«%s+%#<PRIx64>Â» es no vÃ¡lida, 16 MSB deberÃ­a ser %#x (el valor es %#<PRIx64>)"
 
-#: elf32-arc.c:1836
-msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker."
-msgstr "GOT y PLT reubicados no pueden ser fijados con enlazador no dinÃ¡mico."
+#: elf32-arc.c:1898
+msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
+msgstr "Las reubicaciones GOT y PLT no se pueden fijar con un enlazador no dinÃ¡mico"
 
-#: elf32-arc.c:1860 elf32-rl78.c:1095 elf32-rx.c:1449
+#: elf32-arc.c:1922 elf32-rx.c:1486
 #, c-format
-msgid "%B(%A): warning: unaligned access to symbol '%s' in the small data area"
-msgstr "%B(%A): aviso: acceso sin alinear al sÃ­mbolo Â«%sÂ» en el Ã¡rea de datos small"
+msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
+msgstr "%pB(%pA): aviso: acceso desalineado al sÃ­mbolo Â«%sÂ» en el Ã¡rea de datos pequeÃ±os"
 
-#: elf32-arc.c:1865 elf32-rl78.c:1100 elf32-rx.c:1454
+#: elf32-arc.c:1927 elf32-rx.c:1491
 #, c-format
-msgid "%B(%A): internal error: out of range error"
-msgstr "%B(%A): error interno: error fuera de rango"
+msgid "%pB(%pA): internal error: out of range error"
+msgstr "%pB(%pA): error interno: error fuera de rango"
 
-#: elf32-arc.c:1870 elf32-rl78.c:1105 elf32-rx.c:1459
+#: elf32-arc.c:1932 elf32-rx.c:1496
 #, c-format
-msgid "%B(%A): internal error: unsupported relocation error"
-msgstr "%B(%A): error interno: no se admite el error de reubicaciÃ³n"
+msgid "%pB(%pA): internal error: unsupported relocation error"
+msgstr "%pB(%pA): error interno: error de reubicaciÃ³n no admitida"
 
-#: elf32-arc.c:1875 elf32-rl78.c:1110 elf32-rx.c:1464
+#: elf32-arc.c:1937 elf32-rx.c:1501
 #, c-format
-msgid "%B(%A): internal error: dangerous relocation"
-msgstr "%B(%A): error interno: reubicaciÃ³n peligrosa"
+msgid "%pB(%pA): internal error: dangerous relocation"
+msgstr "%pB(%pA): error interno: reubicaciÃ³n peligrosa"
 
-#: elf32-arc.c:1880 elf32-rl78.c:1115 elf32-rx.c:1469
+#: elf32-arc.c:1942 elf32-rx.c:1506
 #, c-format
-msgid "%B(%A): internal error: unknown error"
-msgstr "%B(%A): error interno: error desconocido"
+msgid "%pB(%pA): internal error: unknown error"
+msgstr "%pB(%pA): error interno: error desconocido"
 
-#: elf32-arc.c:1968 elf32-arm.c:14521 elf32-metag.c:2252 elfxx-mips.c:8889
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:7103
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:471
+#: elf32-arc.c:2036 elf32-arc.c:2104 elf32-arm.c:15580 elf32-metag.c:2251
+#: elf32-nds32.c:5543 elfnn-aarch64.c:7959 elfnn-riscv.c:720
 #, c-format
-msgid "%B: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
-msgstr "%B: reubicaciÃ³n %s frente a Â«%sÂ» no puede emplearse cuando se crea un objeto compartido; recompile con -fPIC"
-
-#: elf32-arc.c:2860
-msgid "%B: Unknown mandatory ARC object attribute %d."
-msgstr "%B: Atributo de objeto ARC obligatorio %d desconocido."
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
+msgstr "%pB: la reubicaciÃ³n %s contra Â«%sÂ» no se puede usar cuando se crea un objeto compartido; recompile con -fPIC"
 
-#: elf32-arc.c:2868
-msgid "Warning: %B: Unknown ARC object attribute %d."
-msgstr "Aviso: %B: Atributo de objeto ARC %d desconocido."
+#: elf32-arc.c:2923
+#, c-format
+msgid "%pB: unknown mandatory ARC object attribute %d"
+msgstr "%pB: atributo de objeto ARC obligatorio %d desconocido"
 
-#: elf32-arm.c:4022 elf32-arm.c:4056 elf32-arm.c:4075 elf32-arm.c:4127
-msgid "%B(%A): 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 "%B(%A): aviso: rama larga recubierta utilizada en secciÃ³n con atributo seccional SHF_ARM_PURECODE solo estÃ¡ soportado para objetivos M-profile que implementa la instrucciÃ³n â€œmovwâ€�."
+#: elf32-arc.c:2931
+#, c-format
+msgid "warning: %pB: unknown ARC object attribute %d"
+msgstr "aviso: %pB: atributo de objeto ARC desconocido %d"
 
-#: elf32-arm.c:4087 elf32-arm.c:8806
-msgid ""
-"%B(%s): warning: interworking not enabled.\n"
-"  first occurrence: %B: Thumb call to ARM"
-msgstr ""
-"%B(%s): aviso: no se activÃ³ la interoperabilidad.\n"
-"  primer suceso: %B: llamada Thumb a ARM"
+#: elf32-arm.c:4346 elf32-arm.c:4380 elf32-arm.c:4399 elf32-arm.c:4451
+#, 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: los intermediarios de rama larga usados en la secciÃ³n con atributo de secciÃ³n SHF_ARM_PURECODE sÃ³lo estÃ¡n admitidos para objetivos M-profile que implementan la instrucciÃ³n movw"
 
-#: elf32-arm.c:4141
-msgid ""
-"%B(%s): warning: interworking not enabled.\n"
-"  first occurrence: %B: ARM call to Thumb"
-msgstr ""
-"%B(%s): aviso: no se activÃ³ la interoperabilidad.\n"
-"  primer suceso: %B: llamada ARM a Thumb"
+#: elf32-arm.c:4411 elf32-arm.c:4465 elf32-arm.c:9163 elf32-arm.c:9253
+#, c-format
+msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
+msgstr "%pB(%s): aviso: no se activÃ³ la interoperabilidad. Primer suceso: %pB: %s llama a %s"
 
-#: elf32-arm.c:4415
+#: elf32-arm.c:4591
 #, c-format
-msgid "No address assigned to the veneers output section %s"
-msgstr "Ninguna direcciÃ³n asignada a la secciÃ³n de salida recubierta %s"
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "ERROR: stub CMSE (secciÃ³n %s) demasiado lejos (%#<PRIx64>) del destino (%#<PRIx64>)"
 
-#: elf32-arm.c:4490 elf32-arm.c:6627 elf32-hppa.c:577 elf32-m68hc1x.c:165
-#: elf32-metag.c:1183 elf32-nios2.c:2207
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:2854
+#: elf32-arm.c:4760
 #, c-format
-msgid "%B: cannot create stub entry %s"
-msgstr "%B: no se puede crear la entrada de cabo %s"
+msgid "no address assigned to the veneers output section %s"
+msgstr "ninguna direcciÃ³n asignada a la secciÃ³n %s de salida del intermediario"
 
-#: elf32-arm.c:5675
-msgid "%B: Special symbol `%s' only allowed for ARMv8-M architecture or later."
-msgstr "%B: sÃ­mbolo especial Â«%sÂ» solo permitido para arquitectura ARMv8-M o posterior."
+#: elf32-arm.c:4835 elf32-arm.c:6984 elf32-csky.c:3389 elf32-hppa.c:582
+#: elf32-m68hc1x.c:164 elf32-metag.c:1180 elf32-nios2.c:2201 elf64-ppc.c:3907
+#: elf64-ppc.c:14157 elfnn-aarch64.c:3203 elfnn-kvx.c:895
+#, c-format
+msgid "%pB: cannot create stub entry %s"
+msgstr "%pB: no se puede crear la entrada de stub %s"
 
-#: elf32-arm.c:5684
-msgid "%B: invalid special symbol `%s'."
-msgstr "%B: sÃ­mbolo especial no vÃ¡lido Â«%sÂ»."
+#: elf32-arm.c:5056 elf32-csky.c:3731 elf32-hppa.c:732 elf32-hppa.c:761
+#: elf32-hppa.c:842 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3345
+#: elf32-nios2.c:2494 elf64-ppc.c:12273 elf64-ppc.c:12281 xcofflink.c:4684
+#: elfnn-aarch64.c:3275
+msgid "%F%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: No se pudo asignar Â«%pAÂ» a una secciÃ³n de salida. Vuelva a intentarlo sin --enable-non-contiguous-regions.\n"
 
-#: elf32-arm.c:5686 elf32-arm.c:5726
-msgid "It must be a global or weak function symbol."
-msgstr "Debe ser un sÃ­mbolo funcional global o dÃ©bil."
+#: elf32-arm.c:6027
+#, c-format
+msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
+msgstr "%pB: el sÃ­mbolo especial Â«%sÂ» sÃ³lo estÃ¡ permitido para la arquitectura ARMv8-M o posterior"
 
-#: elf32-arm.c:5724
-msgid "%B: invalid standard symbol `%s'."
-msgstr "%B: sÃ­mbolo comÃºn no vÃ¡lido Â«%sÂ»."
+#: elf32-arm.c:6036
+#, c-format
+msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
+msgstr "%pB: sÃ­mbolo especial no vÃ¡lido Â«%sÂ». Debe ser un sÃ­mbolo de funciÃ³n global o dÃ©bil"
 
-#: elf32-arm.c:5730
-msgid "%B: absent standard symbol `%s'."
-msgstr "%B: sÃ­mbolo estandarizado ausente Â«%sÂ»."
+#: elf32-arm.c:6075
+#, c-format
+msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
+msgstr "%pB: sÃ­mbolo estÃ¡ndar no vÃ¡lido Â«%sÂ». Debe ser un sÃ­mbolo de funciÃ³n global o dÃ©bil"
 
-#: elf32-arm.c:5742
-msgid "%B: `%s' and its special symbol are in different sections."
-msgstr "%B: `%s' y su sÃ­mbolo especial estÃ¡n en secciones diferentes."
+#: elf32-arm.c:6081
+#, c-format
+msgid "%pB: absent standard symbol `%s'"
+msgstr "%pB: sÃ­mbolo estÃ¡ndar Â«%sÂ» ausente"
 
-#: elf32-arm.c:5754
-msgid "%B: entry function `%s' not output."
-msgstr "%B: funciÃ³n entrante Â«%sÂ» no de salida."
+#: elf32-arm.c:6093
+#, c-format
+msgid "%pB: `%s' and its special symbol are in different sections"
+msgstr "%pB: Â«%sÂ» y su sÃ­mbolo especial estÃ¡n en secciones diferentes"
 
-#: elf32-arm.c:5761
-msgid "%B: entry function `%s' is empty."
-msgstr "%B: funciÃ³n entrante Â«%sÂ» estÃ¡ vacÃ­a."
+#: elf32-arm.c:6105
+#, c-format
+msgid "%pB: entry function `%s' not output"
+msgstr "%pB: funciÃ³n de entrada Â«%sÂ» no de salida"
 
-#: elf32-arm.c:5890
-msgid "%B: --in-implib only supported for Secure Gateway import libraries."
-msgstr "%B: --in-implib solo compatible para importar bibliotecas Secure Gateway."
+#: elf32-arm.c:6112
+#, c-format
+msgid "%pB: entry function `%s' is empty"
+msgstr "%pB: la funciÃ³n de entrada Â«%sÂ» estÃ¡ vacÃ­a"
 
-#: elf32-arm.c:5936
-msgid "%B: invalid import library entry: `%s'."
-msgstr "%B: importaciÃ³n de entrada de biblioteca invÃ¡lida: Â«%sÂ»."
+#: elf32-arm.c:6241
+#, c-format
+msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
+msgstr "%pB: --in-implib sÃ³lo se admite para bibliotecas de importaciÃ³n Secure Gateway"
 
-#: elf32-arm.c:5938
-msgid "Symbol should be absolute, global and refer to Thumb functions."
-msgstr "SÃ­mbolo deberÃ­a ser absoluto, global y refiere a funciÃ³n Thumb."
+#: elf32-arm.c:6290
+#, c-format
+msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
+msgstr "%pB: entrada de biblioteca de importaciÃ³n no vÃ¡lida: Â«%sÂ». El sÃ­mbolo deberÃ­a ser absoluto, global y referido a funciones Thumb"
 
-#: elf32-arm.c:5958
+#: elf32-arm.c:6312
 #, c-format
-msgid "Entry function `%s' disappeared from secure code."
-msgstr "FunciÃ³n entrante Â«%sÂ» desaparecida desde cÃ³digo seguro."
+msgid "entry function `%s' disappeared from secure code"
+msgstr "la funciÃ³n de entrada Â«%sÂ» desapareciÃ³ del cÃ³digo seguro"
 
-#: elf32-arm.c:5982
+#: elf32-arm.c:6336
 #, c-format
-msgid "`%s' refers to a non entry function."
-msgstr "`%s' refiere a una funciÃ³n distinta de entrada."
+msgid "`%s' refers to a non entry function"
+msgstr "Â«%sÂ» hace referencia a una funciÃ³n que no es de entrada"
 
-#: elf32-arm.c:5997
-msgid "%B: visibility of symbol `%s' has changed."
-msgstr "%B: visibilidad de sÃ­mbolo Â«%sÂ» ha modificado."
+#: elf32-arm.c:6351
+#, c-format
+msgid "%pB: visibility of symbol `%s' has changed"
+msgstr "%pB: la visibilidad de sÃ­mbolo Â«%sÂ» ha cambiado"
 
-#: elf32-arm.c:6006
-msgid "%B: incorrect size for symbol `%s'."
-msgstr "%B: tamaÃ±o incorrecto para sÃ­mbolo Â«%sÂ»."
+#: elf32-arm.c:6360
+#, c-format
+msgid "%pB: incorrect size for symbol `%s'"
+msgstr "%pB: tamaÃ±o incorrecto para el sÃ­mbolo Â«%sÂ»"
 
-#: elf32-arm.c:6025
+#: elf32-arm.c:6379
 #, c-format
-msgid "Offset of veneer for entry function `%s' not a multiple of its size."
-msgstr "Desplazamiento de recubrimiento para funciÃ³n de entrante Â«%sÂ» no un mÃºltiplo de su tamaÃ±o."
+msgid "offset of veneer for entry function `%s' not a multiple of its size"
+msgstr "el desplazamiento del intermediario para la funciÃ³n de entrada Â«%sÂ» no es mÃºltiplo de su tamaÃ±o"
 
-#: elf32-arm.c:6045
+#: elf32-arm.c:6399
 msgid "new entry function(s) introduced but no output import library specified:"
-msgstr "entrada funcional nueva introducida pero ninguna salida importa biblioteca especificada:"
+msgstr "se ha(n) introducido funciÃ³n(es) de entrada nueva(s) pero no se especificÃ³ ninguna biblioteca de importaciÃ³n de salida:"
 
-#: elf32-arm.c:6053
+#: elf32-arm.c:6407
 #, c-format
-msgid "Start address of `%s' is different from previous link."
-msgstr "DirecciÃ³n inicial de Â«%sÂ» es diferente desde enlace anterior."
+msgid "start address of `%s' is different from previous link"
+msgstr "la direcciÃ³n inicial de Â«%sÂ» es diferente a la del enlace anterior"
 
-#: elf32-arm.c:6760
+#: elf32-arm.c:7118 elf32-arm.c:7156
 #, c-format
-msgid "unable to find THUMB glue '%s' for '%s'"
-msgstr "no se puede encontrar el pegamento THUMB Â«%sÂ» para Â«%sÂ»"
+msgid "unable to find %s glue '%s' for '%s'"
+msgstr "no se puede encontrar el pegamento %s Â«%sÂ» para Â«%sÂ»"
 
-#: elf32-arm.c:6796
+#: elf32-arm.c:7868
 #, c-format
-msgid "unable to find ARM glue '%s' for '%s'"
-msgstr "no se puede encontrar el pegamento ARM Â«%sÂ» para Â«%sÂ»"
-
-#: elf32-arm.c:7511
-msgid "%B: BE8 images only valid in big-endian mode."
-msgstr "%B: las imÃ¡genes BE8 sÃ³lo son vÃ¡lidas en modo big-endian."
+msgid "%pB: BE8 images only valid in big-endian mode"
+msgstr "%pB: las imÃ¡genes BE8 sÃ³lo son vÃ¡lidas en el modo big-endian"
 
 #. Give a warning, but do as the user requests anyway.
-#: elf32-arm.c:7742
-msgid "%B: warning: selected VFP11 erratum workaround is not necessary for target architecture"
-msgstr "%B: aviso: no se necesita la alternativa para evitar la errata del VFP11 seleccionado para la arquitectura objetivo"
-
-#: elf32-arm.c:7769
-msgid "%B: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
-msgstr "%B: aviso: no se necesita la alternativa para evitar la errata del STM32L4XX seleccionado para arquitectura objetivo"
+#: elf32-arm.c:8096
+#, c-format
+msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
+msgstr "%pB: aviso: la soluciÃ³n alternativa de erratas seleccionada VFP11 no es necesaria para la arquitectura objetivo"
 
-#: elf32-arm.c:8306 elf32-arm.c:8326
-msgid "%B: unable to find VFP11 veneer `%s'"
-msgstr "%B: no se puede encontrar la chapa de VFP11 Â«%sÂ»"
+#: elf32-arm.c:8123
+#, c-format
+msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
+msgstr "%pB: aviso: la soluciÃ³n alternativa de erratas seleccionada STM32L4XX no es necesaria para la arquitectura objetivo"
 
-#: elf32-arm.c:8392 elf32-arm.c:8411
-msgid "%B: unable to find STM32L4XX veneer `%s'"
-msgstr "%B: incapaz de encontrar chapa STM32L4XX Â«%sÂ»"
+#: elf32-arm.c:8659 elf32-arm.c:8679 elf32-arm.c:8746 elf32-arm.c:8765
+#, c-format
+msgid "%pB: unable to find %s veneer `%s'"
+msgstr "%pB: no se puede encontrar el intermediario de %s Â«%sÂ»"
 
-#: elf32-arm.c:8618
+#: elf32-arm.c:8972
 #, c-format
-msgid ""
-"%B(%A+%#x): error: multiple load detected in non-last IT block instruction : STM32L4XX veneer cannot be generated.\n"
-"Use gcc option -mrestrict-it to generate only one instruction per IT block.\n"
-msgstr ""
-"%B(%A+%#x): error: carga mÃºltiple detectada en bloque IT no Ãºltima instrucciÃ³n : STM32L4XX no puede ser generada.\n"
-"Emplee opciÃ³n gcc -mrestrict-it para generar solo una instrucciÃ³n por bloque IT.\n"
+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): error: carga mÃºltiple detectada en instrucciÃ³n de bloque IT que no es el Ãºltimo: no se puede generar el intermediario de STM32L4XX. Use la opciÃ³n de gcc -mrestrict-it para generar sÃ³lo una instrucciÃ³n por bloque IT"
 
-#: elf32-arm.c:8716
+#: elf32-arm.c:9070
 #, c-format
-msgid "Invalid TARGET2 relocation type '%s'."
-msgstr "Tipo de reubicaciÃ³n TARGET2 Â«%sÂ» invÃ¡lido."
+msgid "invalid TARGET2 relocation type '%s'"
+msgstr "tipo de reubicaciÃ³n TARGET2 Â«%sÂ» no vÃ¡lido"
 
 #. FIXME: We ought to be able to generate thumb-1 PLT
 #. instructions...
-#: elf32-arm.c:9458
-msgid "%B: Warning: thumb-1 mode PLT generation not currently supported"
-msgstr "%B: Aviso: mode PLT actualmente no se admite la reubicaciÃ³n"
-
-#: elf32-arm.c:9723
+#: elf32-arm.c:9840
 #, c-format
-msgid "%B(%A+%#Lx): unexpected Thumb instruction '%#lx' in TLS trampoline"
-msgstr "%B(%A+%#Lx): instrucciÃ³n Thumb '%#lx' inesperada en el trampolÃ­n TLS"
+msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
+msgstr "%pB: aviso: el modo thumb-1 de generaciÃ³n PLT no es compatible actualmente"
 
-#: elf32-arm.c:9763
+#: elf32-arm.c:10149 elf32-arm.c:10191
 #, c-format
-msgid "%B(%A+%#Lx): unexpected ARM instruction '%#lx' in TLS trampoline"
-msgstr "%B(%A+%#Lx): instrucciÃ³n ARM '%#lx' inesperada en el trampolÃ­n TLS"
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %s inesperada Â«%#lxÂ» en el trampolÃ­n TLS"
 
-#: elf32-arm.c:10103
+#: elf32-arm.c:10541
 msgid "shared object"
 msgstr "objeto compartido"
 
-#: elf32-arm.c:10106
+#: elf32-arm.c:10544
 msgid "PIE executable"
 msgstr "PIE ejecutable"
 
-#: elf32-arm.c:10109
-msgid "%B: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC"
-msgstr "%B: reubicaciÃ³n %s frente sÃ­mbolos externos o indefinidos Â«%sÂ» pueden no ser empleados cuando hacen un %s; recompile con -fPIC"
+#: elf32-arm.c:10547
+#, 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: la reubicaciÃ³n %s contra el sÃ­mbolo externo o sin definir Â«%sÂ» no se puede usar cuando se crea un %s; recompile con -fPIC"
 
-#: elf32-arm.c:10240
-msgid "%B: Warning: Arm BLX instruction targets Arm function '%s'."
-msgstr "%B: Aviso: La instrucciÃ³n Arm BLX apunta a la funciÃ³n Arm Â«%sÂ»."
+#: elf32-arm.c:10649
+#, c-format
+msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "\\%pB: aviso: la instrucciÃ³n BLX %s apunta a la funciÃ³n %s Â«%sÂ»"
 
-#: elf32-arm.c:10666
-msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'."
-msgstr "%B: Aviso: La instrucciÃ³n Thumb BLX apunta a la funciÃ³n thumb Â«%sÂ»."
+#: elf32-arm.c:11066
+#, c-format
+msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "%pB: aviso: la instrucciÃ³n BLX %s apunta a la funciÃ³n %s Â«%sÂ»"
 
-#: elf32-arm.c:11534
+#: elf32-arm.c:11700
 #, c-format
-msgid "%B(%A+%#Lx): unexpected Thumb instruction '%#lx' referenced by TLS_GOTDESC"
-msgstr "%B(%A+%#Lx):instrucciÃ³n Thumb '%#lx' inesperada referenciada por TLS_GOTDESC"
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr "%pB: se esperaba un Ã­ndice de sÃ­mbolo en el rango 0..%lu pero se encontrÃ³ un sÃ­mbolo local con Ã­ndice %lu"
 
-#: elf32-arm.c:11557
+#: elf32-arm.c:11975 elf32-arm.c:12001
 #, c-format
-msgid "%B(%A+%#Lx): unexpected ARM instruction '%#lx' referenced by TLS_GOTDESC"
-msgstr "%B(%A+%#Lx): instrucciÃ³n ARM '%#lx' inesperada referenciada por TLS_GOTDESC"
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %s inesperada Â«%#lxÂ» referenciada por TLS_GOTDESC"
 
-#: elf32-arm.c:11586 elf32-m68k.c:3701 elf32-metag.c:1916 elf32-nios2.c:4358
+#: elf32-arm.c:12047 elf32-csky.c:4959 elf32-m68k.c:3733 elf32-metag.c:1913
+#: elf32-nios2.c:4377
 #, c-format
-msgid "%B(%A+%#Lx): %s relocation not permitted in shared object"
-msgstr "%B(%A+%#Lx): reubicaciÃ³n %s no permitida dentro de objeto compartido"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
+msgstr "%pB(%pA+%#<PRIx64>): reubicaciÃ³n %s no permitida en un objeto compartido"
 
-#: elf32-arm.c:11799
+#: elf32-arm.c:12261
 #, c-format
-msgid "%B(%A+%#Lx): Only ADD or SUB instructions are allowed for ALU group relocations"
-msgstr "%B(%A+%#Lx): SÃ³lo se permiten las instrucciones ADD o SUB en las reubicaciones de grupo ALU"
+msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
+msgstr "%pB(%pA+%#<PRIx64>): sÃ³lo se permiten las instrucciones ADD o SUB en las reubicaciones de grupo ALU"
 
-#: elf32-arm.c:11839 elf32-arm.c:11929 elf32-arm.c:12015 elf32-arm.c:12103
+#: elf32-arm.c:12302 elf32-arm.c:12394 elf32-arm.c:12482 elf32-arm.c:12572
 #, c-format
-msgid "%B(%A+%#Lx): Overflow whilst splitting %#Lx for group relocation %s"
-msgstr "%B(%A+%#Lx): Desborde superior al dividirse %#Lx para la reubicaciÃ³n de grupo %s"
+msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): desbordamiento al dividir %#<PRIx64> para la reubicaciÃ³n de grupo %s"
+
+#: elf32-arm.c:12630 elf32-arm.c:12789
+msgid "local symbol index too big"
+msgstr "Ã­ndice de sÃ­mbolos locales demasiado grande"
+
+#: elf32-arm.c:12640 elf32-arm.c:12674
+msgid "no dynamic index information available"
+msgstr "no hay informaciÃ³n de Ã­ndice dinÃ¡mico disponible"
+
+#: elf32-arm.c:12682
+msgid "invalid dynamic index"
+msgstr "Ã­ndice dinÃ¡mico no vÃ¡lido"
+
+#: elf32-arm.c:12799
+msgid "dynamic index information not available"
+msgstr "informaciÃ³n de Ã­ndice dinÃ¡mico no disponible"
 
-#: elf32-arm.c:12369 elf32-sh.c:4003 elf64-sh64.c:1539
+#: elf32-arm.c:13230 elf32-sh.c:3567
 #, c-format
-msgid "%B(%A+%#Lx): %s relocation against SEC_MERGE section"
-msgstr "%B(%A+%#Lx): reubicaciÃ³n %s contra secciÃ³n SEC_MERGE"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
+msgstr "%pB(%pA+%#<PRIx64>): reubicaciÃ³n %s contra la secciÃ³n SEC_MERGE"
 
-#: elf32-arm.c:12481 elf32-m68k.c:3931 elf32-xtensa.c:2681
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6185
+#: elf32-arm.c:13343 elf32-m68k.c:3966 elf32-xtensa.c:2761 elfnn-aarch64.c:7049
+#: elfnn-kvx.c:2571
 #, c-format
-msgid "%B(%A+%#Lx): %s used with TLS symbol %s"
-msgstr "%B(%A+%#Lx): %s empleado con sÃ­mbolo TLS %s"
+msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
+msgstr "%pB(%pA+%#<PRIx64>): %s usado con el sÃ­mbolo TLS %s"
 
-#: elf32-arm.c:12483 elf32-m68k.c:3933 elf32-xtensa.c:2683
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6187
+#: elf32-arm.c:13345 elf32-m68k.c:3968 elf32-xtensa.c:2763 elfnn-aarch64.c:7051
+#: elfnn-kvx.c:2573
 #, c-format
-msgid "%B(%A+%#Lx): %s used with non-TLS symbol %s"
-msgstr "%B(%A+%#Lx): %s utilizado con sÃ­mbolo no-TLS %s"
+msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
+msgstr "%pB(%pA+%#<PRIx64>): %s usado con un sÃ­mbolo que no es TLS %s"
 
-#: elf32-arm.c:12565 elf32-tic6x.c:2674
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6520
+#: elf32-arm.c:13428 elf32-tic6x.c:2649 elfnn-aarch64.c:7386 elfnn-kvx.c:2800
 msgid "out of range"
 msgstr "fuera de rango"
 
-#: elf32-arm.c:12569 elf32-nios2.c:4492 elf32-pru.c:821 elf32-tic6x.c:2678
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6524
+#: elf32-arm.c:13432 elf32-nios2.c:4511 elf32-pru.c:936 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7390 elfnn-kvx.c:2804
 msgid "unsupported relocation"
-msgstr "no se admite la reubicaciÃ³n"
+msgstr "reubicaciÃ³n no admitida"
 
-#: elf32-arm.c:12577 elf32-nios2.c:4502 elf32-pru.c:831 elf32-tic6x.c:2686
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6532
+#: elf32-arm.c:13440 elf32-nios2.c:4521 elf32-pru.c:946 elf32-tic6x.c:2661
+#: elfnn-aarch64.c:7398 elfnn-kvx.c:2812
 msgid "unknown error"
 msgstr "error desconocido"
 
-#: elf32-arm.c:13157
-msgid "%B: Unknown mandatory EABI object attribute %d"
-msgstr "%B: Atributo de objeto EABI obligatorio %d desconocido"
-
-#: elf32-arm.c:13165
-msgid "Warning: %B: Unknown EABI object attribute %d"
-msgstr "Aviso: %B: Atributo de objeto EABI %d desconocido"
-
-#: elf32-arm.c:13432
-msgid "error: %B: Unknown CPU architecture"
-msgstr "error: %B: Arquitectura de CPU desconocida"
-
-#: elf32-arm.c:13470 elf32-nios2.c:2945
-#, c-format
-msgid "error: %B: Conflicting CPU architectures %d/%d"
-msgstr "error: %B: Arquitecturas de CPU en conflicto %d/%d"
-
-#: elf32-arm.c:13567
-msgid "Error: %B has both the current and legacy Tag_MPextension_use attributes"
-msgstr "Error: %B tiene al mismo tiempo los atributos Tag_MPextension_use actuales y antiguos"
-
-#: elf32-arm.c:13596
-msgid "error: %B uses VFP register arguments, %B does not"
-msgstr "error: %B utiliza argumentos de registro VFP, mientras que %B no"
-
-#: elf32-arm.c:13754
-msgid "error: %B: unable to merge virtualization attributes with %B"
-msgstr "error: %B: no se pueden mezclar los atributos de virtualizaciÃ³n con %B"
-
-#: elf32-arm.c:13780
-msgid "error: %B: Conflicting architecture profiles %c/%c"
-msgstr "error: %B: Perfiles de arquitecturas en conflicto %c/%c"
-
-#: elf32-arm.c:13919
-msgid "Warning: %B: Conflicting platform configuration"
-msgstr "Aviso: %B: ConfiguraciÃ³n de plataformas en conflicto"
-
-#: elf32-arm.c:13928
-msgid "error: %B: Conflicting use of R9"
-msgstr "error: %B: Empleo en conflicto de R9"
-
-#: elf32-arm.c:13940
-msgid "error: %B: SB relative addressing conflicts with use of R9"
-msgstr "error: %B: El direccionamiento relativo a SB tiene conflictos con el uso de R9"
-
-#: elf32-arm.c:13953
-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 "aviso: %B emplea wchar_t de %u bytes aunque la salida usa wchar_t de %u bytes; el uso de valores wchar_t entre objetos puede fallar"
-
-#: elf32-arm.c:13984
-msgid "warning: %B uses %s enums yet the output is to use %s enums; use of enum values across objects may fail"
-msgstr "aviso: %B emplea â€˜enumsâ€™ %s aunque la salida emplea â€˜enumsâ€™ %s; emplea valores â€˜enumâ€™ entre objetos quizÃ¡ falla"
-
-#: elf32-arm.c:13996
-msgid "error: %B uses iWMMXt register arguments, %B does not"
-msgstr "error: %B utiliza argumentos de registro iWMMXt, mientras que %B no"
-
-#: elf32-arm.c:14013
-msgid "error: fp16 format mismatch between %B and %B"
-msgstr "error: no coincide el formato fp16 entre %B y %B"
-
-#: elf32-arm.c:14049
-msgid "%B has both the current and legacy Tag_MPextension_use attributes"
-msgstr "%B tiene al mismo tiempo los atributos actuales y antiguos de Tag_MPextension_use"
+#: elf32-arm.c:13922
+#, c-format
+msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
+msgstr "aviso: no se establece la marca de interoperabilidad de %pB ya que se habÃ­a especificado con anterioridad como no interoperable"
 
-#. 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:14136 elf32-bfin.c:4729 elf32-cris.c:3905 elf32-m68hc1x.c:1409
-#: elf32-m68k.c:1199 elf32-score.c:3998 elf32-score7.c:3803 elf32-vax.c:536
-#: elf32-xgate.c:669 elfxx-mips.c:15756
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6686
+#: elf32-arm.c:13926
 #, c-format
-msgid "private flags = %lx:"
-msgstr "opciones privadas = %lx:"
+msgid "warning: clearing the interworking flag of %pB due to outside request"
+msgstr "aviso: se quita la marca de interoperabilidad de %pB debido a una peticiÃ³n externa"
+
+#: elf32-arm.c:13971
+#, c-format
+msgid "warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"
+msgstr "aviso: se quita la marca de interoperabilidad de %pB porque se ha enlazado con Ã©l, cÃ³digo que no es interoperable en %pB"
+
+#: elf32-arm.c:14058
+#, c-format
+msgid "%pB: unknown mandatory EABI object attribute %d"
+msgstr "%pB: atributo de objeto EABI obligatorio %d desconocido"
+
+#: elf32-arm.c:14066
+#, c-format
+msgid "warning: %pB: unknown EABI object attribute %d"
+msgstr "aviso: %pB: atributo de objeto EABI desconocido %d"
+
+#: elf32-arm.c:14401
+#, c-format
+msgid "error: %pB: unknown CPU architecture"
+msgstr "error: %pB: arquitectura de CPU desconocida"
+
+#: elf32-arm.c:14439
+#, c-format
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
+msgstr "error: arquitecturas de CPU en conflicto %s vs %s en %pB"
+
+#: elf32-arm.c:14536
+#, c-format
+msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr "Error: %pB tiene al mismo tiempo los atributos Tag_MPextension_use actuales y antiguos"
 
-#: elf32-arm.c:14145
+#: elf32-arm.c:14573
+#, c-format
+msgid "error: %pB uses VFP register arguments, %pB does not"
+msgstr "error: %pB usa argumentos de registro VFP, %pB no lo hace"
+
+#: elf32-arm.c:14743
+#, c-format
+msgid "error: %pB: unable to merge virtualization attributes with %pB"
+msgstr "error: %pB: no se pueden combinar los atributos de virtualizaciÃ³n con %pB"
+
+#: elf32-arm.c:14769
+#, c-format
+msgid "error: %pB: conflicting architecture profiles %c/%c"
+msgstr "error: %pB: perfiles de arquitecturas en conflicto %c/%c"
+
+#: elf32-arm.c:14908
+#, c-format
+msgid "warning: %pB: conflicting platform configuration"
+msgstr "aviso: %pB: configuraciÃ³n de plataformas en conflicto"
+
+#: elf32-arm.c:14917
+#, c-format
+msgid "error: %pB: conflicting use of R9"
+msgstr "error: %pB: uso conflictivo de R9"
+
+#: elf32-arm.c:14929
+#, c-format
+msgid "error: %pB: SB relative addressing conflicts with use of R9"
+msgstr "error: %pB: el direccionamiento relativo a SB entra en conflicto con el uso de R9"
+
+#: elf32-arm.c:14942
+#, 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 wchar_t de %u bytes aunque la salida es para usar wchar_t de %u bytes. El uso de valores wchar_t entre objetos puede fallar"
+
+#: elf32-arm.c:14973
+#, 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 enums %s aunque la salida es para usar enums %s; el uso de valores enum entre objetos podrÃ­a fallar"
+
+#: elf32-arm.c:14985
+#, c-format
+msgid "error: %pB uses iWMMXt register arguments, %pB does not"
+msgstr "error: %pB usa argumentos de registro iWMMXt, %pB no lo hace"
+
+#: elf32-arm.c:15002
+#, c-format
+msgid "error: fp16 format mismatch between %pB and %pB"
+msgstr "error: no coincide el formato fp16 entre %pB y %pB"
+
+#: elf32-arm.c:15038
+#, c-format
+msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr "%pB tiene al mismo tiempo los atributos actuales y antiguos de Tag_MPextension_use"
+
+#: elf32-arm.c:15134
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [interoperabilidad activada]"
 
-#: elf32-arm.c:14153
+#: elf32-arm.c:15142
 #, c-format
 msgid " [VFP float format]"
 msgstr " [formato flotante VFP]"
 
-#: elf32-arm.c:14155
+#: elf32-arm.c:15144
 #, c-format
 msgid " [Maverick float format]"
-msgstr " [formato de coma flotante Maverick]"
+msgstr " [formato flotante Maverick]"
 
-#: elf32-arm.c:14157
+#: elf32-arm.c:15146
 #, c-format
 msgid " [FPA float format]"
-msgstr " [formato de coma flotante FPA]"
+msgstr " [formato flotante FPA]"
+
+#: elf32-arm.c:15149
+#, c-format
+msgid " [floats passed in float registers]"
+msgstr " [flotantes pasados en registros de coma flotante]"
 
-#: elf32-arm.c:14166
+#: elf32-arm.c:15152 elf32-arm.c:15238
+#, c-format
+msgid " [position independent]"
+msgstr " [independiente de posiciÃ³n]"
+
+#: elf32-arm.c:15155
 #, c-format
 msgid " [new ABI]"
 msgstr " [ABI nuevo]"
 
-#: elf32-arm.c:14169
+#: elf32-arm.c:15158
 #, c-format
 msgid " [old ABI]"
 msgstr " [ABI antiguo]"
 
-#: elf32-arm.c:14172
+#: elf32-arm.c:15161
 #, c-format
 msgid " [software FP]"
 msgstr " [FP por software]"
 
-#: elf32-arm.c:14181
+#: elf32-arm.c:15170
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [EABI Version1]"
 
-#: elf32-arm.c:14184 elf32-arm.c:14195
+#: elf32-arm.c:15173 elf32-arm.c:15184
 #, c-format
 msgid " [sorted symbol table]"
-msgstr " [segmento de sÃ­mbolos ordenados]"
+msgstr " [tabla de sÃ­mbolos ordenados]"
 
-#: elf32-arm.c:14186 elf32-arm.c:14197
+#: elf32-arm.c:15175 elf32-arm.c:15186
 #, c-format
 msgid " [unsorted symbol table]"
-msgstr " [segmento de sÃ­mbolos sin ordenar]"
+msgstr " [tabla de sÃ­mbolos sin ordenar]"
 
-#: elf32-arm.c:14192
+#: elf32-arm.c:15181
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [EABI Version2]"
 
-#: elf32-arm.c:14200
+#: elf32-arm.c:15189
 #, c-format
 msgid " [dynamic symbols use segment index]"
-msgstr " [los sÃ­mbolos dinÃ¡micos utilizan Ã­ndices de segmento]"
+msgstr " [sÃ­mbolos dinÃ¡micos que usan Ã­ndices de segmento]"
 
-#: elf32-arm.c:14203
+#: elf32-arm.c:15192
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [distribuyendo sÃ­mbolos precede a otros]"
 
-#: elf32-arm.c:14210
+#: elf32-arm.c:15199
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [EABI Version3]"
 
-#: elf32-arm.c:14214
+#: elf32-arm.c:15203
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [EABI Version4]"
 
-#: elf32-arm.c:14218
+#: elf32-arm.c:15207
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [EABI Version5]"
 
-#: elf32-arm.c:14221
+#: elf32-arm.c:15210
 #, c-format
 msgid " [soft-float ABI]"
-msgstr " [soft-float ABI]"
+msgstr " [ABI flotante soft]"
 
-#: elf32-arm.c:14224
+#: elf32-arm.c:15213
 #, c-format
 msgid " [hard-float ABI]"
-msgstr " [hard-float ABI]"
+msgstr " [ABI flotante hard]"
 
-#: elf32-arm.c:14230
+#: elf32-arm.c:15219
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14233
+#: elf32-arm.c:15222
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14239
+#: elf32-arm.c:15228
 #, c-format
 msgid " <EABI version unrecognised>"
-msgstr " <vers EABI no reconocido>"
+msgstr " <VersiÃ³n EABI no reconocida>"
 
-#: elf32-arm.c:14246
+#: elf32-arm.c:15235
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [ejecutable reubicable]"
 
-#: elf32-arm.c:14251
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6689
+#: elf32-arm.c:15241
+#, c-format
+msgid " [FDPIC ABI supplement]"
+msgstr " [Suplemento ABI FDPIC]"
+
+#: elf32-arm.c:15246 elfnn-aarch64.c:7555
+#, c-format
+msgid " <Unrecognised flag bits set>"
+msgstr " <Conjunto de bits de marca no reconocidos>"
+
+#: elf32-arm.c:15363 elf32-arm.c:15497 elf32-i386.c:1535 elf32-s390.c:923
+#: elf32-tic6x.c:2724 elf32-tilepro.c:1435 elf32-xtensa.c:1090 elf64-s390.c:845
+#: elf64-x86-64.c:2050 elfxx-sparc.c:1386 elfxx-tilegx.c:1662 elfxx-x86.c:970
+#: elfnn-aarch64.c:7826 elfnn-kvx.c:3250 elfnn-loongarch.c:756
+#: elfnn-riscv.c:764
+#, c-format
+msgid "%pB: bad symbol index: %d"
+msgstr "%pB: Ã­ndice de sÃ­mbolo incorrecto: %d"
+
+#: elf32-arm.c:15753
 #, c-format
-msgid "<Unrecognised flag bits set>"
-msgstr "<No se reconoce el conjunto de bits de opciÃ³n>"
+msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
+msgstr "FDPIC aÃºn no admite que la reubicaciÃ³n de %s se vuelva dinÃ¡mica para el ejecutable"
 
-#: elf32-arm.c:14368 elf32-i386.c:1510 elf32-s390.c:956 elf32-tic6x.c:2749
-#: elf32-tilepro.c:1471 elf32-xtensa.c:1018 elf64-s390.c:875
-#: elf64-x86-64.c:1823 elfxx-sparc.c:1420 elfxx-tilegx.c:1688
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6978
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:513
-#, c-format
-msgid "%B: bad symbol index: %d"
-msgstr "%B: Ã­ndice de sÃ­mbolos equivocado: %d"
-
-#: elf32-arm.c:15636 elf32-hppa.c:2082 elf32-lm32.c:1989 elf32-m32r.c:2097
-#: elf32-metag.c:2792 elf32-nds32.c:3844 elf32-or1k.c:2281 elf32-ppc.c:6156
-#: elf32-s390.c:1851 elf32-sh.c:3289 elf32-tic6x.c:3205 elf32-tilepro.c:2237
-#: elf64-ppc.c:9893 elf64-s390.c:1785 elfxx-sparc.c:2457 elfxx-tilegx.c:2479
-#: elfxx-x86.c:563
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:8319
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:1112
-#, c-format
-msgid "%B: dynamic relocation against `%T' in read-only section `%A'\n"
-msgstr "%B: reubicaciÃ³n dinÃ¡mica frente a Â«%TÂ» en secciÃ³n de sÃ³lo lectura Â«%AÂ»\n"
-
-#: elf32-arm.c:15881
-msgid "Errors encountered processing file %B"
-msgstr "Errores encontrados procesando el fichero %B"
+#: elf32-arm.c:17027
+#, c-format
+msgid "errors encountered processing file %pB"
+msgstr "se han encontrado errores procesando el fichero %pB"
 
-#: elf32-arm.c:16318 elflink.c:12394 elflink.c:12441
+#: elf32-arm.c:17400 elflink.c:13325 elflink.c:13372
 #, c-format
 msgid "could not find section %s"
-msgstr "no pudo encontrar la secciÃ³n %s"
+msgstr "no se pudo encontrar la secciÃ³n %s"
 
-#: elf32-arm.c:17494
-msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location"
-msgstr "%B: error: el cabo de errores Cortex-A8 se aloja en una ubicaciÃ³n insegura"
+#: elf32-arm.c:18355
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr "%pB: El nÃºmero de sÃ­mbolos en el fichero de entrada ha aumentado de %lu a %u\n"
+
+#: elf32-arm.c:18619
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
+msgstr "%pB: error: el stub de erratas del Cortex-A8 estÃ¡ asignado en una ubicaciÃ³n insegura"
 
 #. There's not much we can do apart from complain if this
 #. happens.
-#: elf32-arm.c:17521
-msgid "%B: error: Cortex-A8 erratum stub out of range (input file too large)"
-msgstr "%B: error: el cabo de errores Cortex-A8 estÃ¡ fuera de rango (el fichero de entrada es demasiado grande)"
-
-#: elf32-arm.c:18348 elf32-arm.c:18370
-msgid "%B: error: VFP11 veneer out of range"
-msgstr "%B: error: la chapa VFP11 estÃ¡ fuera de rango"
-
-#: elf32-arm.c:18421
-msgid "%B(%#Lx): error: Cannot create STM32L4XX veneer. Jump out of range by %Ld bytes. Cannot encode branch instruction. "
-msgstr "%B(%#Lx): error: no puede crear veneer STM32L4XX. OmisiÃ³n de lÃ­mite por %Ld bytes. No puede codificar intrucciÃ³n de rama. "
-
-#: elf32-arm.c:18459
-msgid "%B: error: Cannot create STM32L4XX veneer."
-msgstr "%B: error: no puede crear recubrimiento STM32L4XX."
-
-#: elf32-arm.c:19481
-msgid "error: %B is already in final BE8 format"
-msgstr "error: %B ya estÃ¡ en el formato BE8 final"
-
-#: elf32-arm.c:19557
-msgid "error: Source object %B has EABI version %d, but target %B has EABI version %d"
-msgstr "error: El objeto fuente %B tiene EABI versiÃ³n %d, pero el objetivo %B tiene EABI versiÃ³n %d"
-
-#: elf32-arm.c:19572
-msgid "error: %B is compiled for APCS-%d, whereas target %B uses APCS-%d"
-msgstr "error: %B estÃ¡ compilado para APCS-%d mientras que el objetivo %B emplea APCS-%d"
-
-#: elf32-arm.c:19596
-msgid "error: %B uses VFP instructions, whereas %B does not"
-msgstr "error: %B utiliza instrucciones VFP, mientras que %B no"
-
-#: elf32-arm.c:19600
-msgid "error: %B uses FPA instructions, whereas %B does not"
-msgstr "error: %B utiliza instrucciones FPA, mientras que %B no"
-
-#: elf32-arm.c:19610
-msgid "error: %B uses Maverick instructions, whereas %B does not"
-msgstr "error: %B utiliza instrucciones Maverick, mientras que %B no"
-
-#: elf32-arm.c:19614
-msgid "error: %B does not use Maverick instructions, whereas %B does"
-msgstr "error: %B no utiliza instrucciones Maverick, mientras que %B sÃ­"
-
-#: elf32-arm.c:19633
-msgid "error: %B uses software FP, whereas %B uses hardware FP"
-msgstr "error: %B utiliza FP de software, mientras que %B utiliza FP de hardware"
-
-#: elf32-arm.c:19637
-msgid "error: %B uses hardware FP, whereas %B uses software FP"
-msgstr "error: %B utiliza FP de hardware, mientras que %B utiliza FP de software"
-
-#: elf32-avr.c:959
-#, c-format
-msgid "%B: invalid AVR reloc number: %d"
-msgstr "%B: nÃºmero reubicante AArch64 no vÃ¡lido: %d"
-
-#: elf32-avr.c:1510 elf32-bfin.c:3124 elf32-cris.c:2038 elf32-epiphany.c:574
-#: elf32-fr30.c:599 elf32-frv.c:4049 elf32-ft32.c:493 elf32-i860.c:1218
-#: elf32-ip2k.c:1486 elf32-iq2000.c:697 elf32-m32c.c:630 elf32-mep.c:532
-#: elf32-metag.c:1993 elf32-moxie.c:293 elf32-msp430.c:1361 elf32-mt.c:404
-#: elf32-or1k.c:1246 elf32-tilepro.c:3505 elf32-v850.c:2291 elf32-visium.c:685
-#: elf32-xstormy16.c:931 elf64-mmix.c:1546 elfxx-tilegx.c:3865
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:2245
-msgid "internal error: dangerous relocation"
-msgstr "error interno: reubicaciÃ³n peligrosa"
+#: elf32-arm.c:18646
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
+msgstr "%pB: error: el stub de erratas del Cortex-A8 estÃ¡ fuera de rango (el fichero de entrada es demasiado grande)"
+
+#: elf32-arm.c:19473 elf32-arm.c:19495
+#, c-format
+msgid "%pB: error: VFP11 veneer out of range"
+msgstr "%pB: error: el intermediario de VFP11 estÃ¡ fuera de rango"
+
+#: elf32-arm.c:19546
+#, c-format
+msgid "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by %<PRId64> bytes; cannot encode branch instruction"
+msgstr "%pB(%#<PRIx64>): error: no se puede crear el intermediario de STM32L4XX. Salto fuera de rango por %<PRId64> bytes. No se puede codificar la instrucciÃ³n de la rama"
+
+#: elf32-arm.c:19585
+#, c-format
+msgid "%pB: error: cannot create STM32L4XX veneer"
+msgstr "%pB: error: no se puede crear el intermediario de STM32L4XX"
+
+#: elf32-arm.c:20668
+#, c-format
+msgid "error: %pB is already in final BE8 format"
+msgstr "error: %pB ya estÃ¡ en el formato BE8 final"
+
+#: elf32-arm.c:20745
+#, c-format
+msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
+msgstr "error: el objeto de origen %pB tiene versiÃ³n de EABI %d, pero el objetivo %pB tiene versiÃ³n de EABI %d"
+
+#: elf32-arm.c:20760
+#, c-format
+msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
+msgstr "error: %pB estÃ¡ compilado para APCS-%d mientras que el objetivo %pB usa APCS-%d"
+
+#: elf32-arm.c:20770
+#, c-format
+msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
+msgstr "error: %pB pasa flotantes en registros de coma flotante, mientras que %pB los pasa en registros de enteros"
+
+#: elf32-arm.c:20774
+#, c-format
+msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
+msgstr "error: %pB pasa flotantes en registros de enteros, mientras que %pB los pasa en registros de coma flotante"
+
+#: elf32-arm.c:20784 elf32-arm.c:20788 elf32-arm.c:20798
+#, c-format
+msgid "error: %pB uses %s instructions, whereas %pB does not"
+msgstr "error: %pB usa instrucciones %s, mientras que %pB no lo hace"
+
+#: elf32-arm.c:20802
+#, c-format
+msgid "error: %pB does not use %s instructions, whereas %pB does"
+msgstr "error: %pB no usa instrucciones %s, mientras que %pB sÃ­ lo hace"
+
+#: elf32-arm.c:20821
+#, c-format
+msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
+msgstr "error: %pB usa FP de software, mientras que %pB usa FP de hardware"
 
-#: elf32-avr.c:3319
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:2882
+#: elf32-arm.c:20825
+#, c-format
+msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
+msgstr "error: %pB usa FP de hardware, mientras que %pB usa FP de software"
+
+#: elf32-arm.c:20839
+#, c-format
+msgid "warning: %pB supports interworking, whereas %pB does not"
+msgstr "aviso: %pB admite interoperabilidad, mientras que %pB no lo hace"
+
+#: elf32-arm.c:20845
+#, c-format
+msgid "warning: %pB does not support interworking, whereas %pB does"
+msgstr "aviso: %pB no admite interoperabilidad, mientras que %pB sÃ­ lo hace"
+
+#: elf32-avr.c:1508
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr "%X%H: %s contra Â«%sÂ»: error: la reubicaciÃ³n se aplica fuera de la secciÃ³n\n"
+
+#: elf32-avr.c:1516
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr "%X%H: %s contra Â«%sÂ»: error: la direcciÃ³n de destino de la reubicaciÃ³n es impar\n"
+
+#: elf32-avr.c:1524
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr "%X%H: %s contra Â«%sÂ»: error interno: resultado de reubicaciÃ³n inesperado %d\n"
+
+#: elf32-avr.c:3340 elfnn-aarch64.c:3234
 #, c-format
 msgid "cannot create stub entry %s"
-msgstr "no puede crear la entrada de cabo %s"
+msgstr "no se puede crear la entrada de stub %s"
 
-#: elf32-bfin.c:106 elf32-bfin.c:362
+#: elf32-bfin.c:107 elf32-bfin.c:364
 msgid "relocation should be even number"
 msgstr "la reubicaciÃ³n debe ser un nÃºmero par"
 
-#: elf32-bfin.c:1577
+#: elf32-bfin.c:1589
 #, c-format
-msgid "%B(%A+%#Lx): unresolvable relocation against symbol `%s'"
-msgstr "%B(%A+%#Lx): reubicaciÃ³n %s irresoluble frente a sÃ­mbolo `%s'"
+msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): reubicaciÃ³n irresoluble contra el sÃ­mbolo Â«%sÂ»"
 
-#: elf32-bfin.c:1608 elf32-i386.c:3473 elf32-m68k.c:3971 elf32-s390.c:3261
-#: elf64-s390.c:3175 elf64-x86-64.c:3839
+#: elf32-bfin.c:1621 elf32-i386.c:3534 elf32-m68k.c:4006 elf32-s390.c:3138
+#: elf64-s390.c:3118 elf64-x86-64.c:4424
 #, c-format
-msgid "%B(%A+%#Lx): reloc against `%s': error %d"
-msgstr "%B(%A+%#Lx): reubicar frente Â«%sÂ»: error %d"
+msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
+msgstr "%pB(%pA+%#<PRIx64>): reubicaciÃ³n contra Â«%sÂ»: error %d"
 
-#: elf32-bfin.c:2628
+#: elf32-bfin.c:2647
 #, c-format
-msgid "%B: relocation at `%A+%#Lx' references symbol `%s' with nonzero addend"
-msgstr "%B: la reubicaciÃ³n en `%A+%#Lx' referencia al sÃ­mbolo Â«%sÂ» con adiciÃ³n sin cero"
+msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
+msgstr "%pB: la reubicaciÃ³n en Â«%pA+%#<PRIx64>Â» referencia al sÃ­mbolo Â«%sÂ» con sumando distinto de cero"
 
-#: elf32-bfin.c:2644
+#: elf32-bfin.c:2664
 msgid "relocation references symbol not defined in the module"
-msgstr "la referencia reubicante simbÃ³lica no definida dentro del mÃ³dulo"
+msgstr "la reubicaciÃ³n hace referencia a un sÃ­mbolo que no estÃ¡ definido en el mÃ³dulo"
 
-#: elf32-bfin.c:2741
+#: elf32-bfin.c:2762
 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
-msgstr "R_BFIN_FUNCDESC referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es cero"
+msgstr "R_BFIN_FUNCDESC referencia un sÃ­mbolo dinÃ¡mico con sumando distinto de cero"
 
-#: elf32-bfin.c:2782 elf32-bfin.c:2905
+#: elf32-bfin.c:2802 elf32-bfin.c:2923
 msgid "cannot emit fixups in read-only section"
-msgstr "no se pueden emitir composturas en la secciÃ³n de sÃ³lo lectura"
+msgstr "no se pueden emitir ajustes en la secciÃ³n de sÃ³lo lectura"
 
-#: elf32-bfin.c:2813 elf32-bfin.c:2943 elf32-lm32.c:1044 elf32-sh.c:4926
+#: elf32-bfin.c:2832 elf32-bfin.c:2960 elf32-lm32.c:1007 elf32-sh.c:4385
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "no se pueden emitir reubicaciones dinÃ¡micas en la secciÃ³n de sÃ³lo lectura"
 
-#: elf32-bfin.c:2863
+#: elf32-bfin.c:2882
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
-msgstr "R_BFIN_FUNCDESC_VALUE referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es cero"
+msgstr "R_BFIN_FUNCDESC_VALUE referencia un sÃ­mbolo dinÃ¡mico con sumando distinto de cero"
 
-#: elf32-bfin.c:3028
+#: elf32-bfin.c:3045
 msgid "relocations between different segments are not supported"
 msgstr "no se admiten las reubicaciones entre segmentos diferentes"
 
-#: elf32-bfin.c:3029
+#: elf32-bfin.c:3046
 msgid "warning: relocation references a different segment"
-msgstr "aviso: la reubicaciÃ³n referencÃ­a un segmento diferente"
+msgstr "aviso: la reubicaciÃ³n referencia un segmento diferente"
+
+#: elf32-bfin.c:3141 elf32-cris.c:2042 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4057 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1992 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1905 elf32-tilepro.c:3380
+#: elf32-v850.c:2302 elf32-visium.c:688 elf32-xstormy16.c:938 elf64-bpf.c:348
+#: elf64-mmix.c:1549 elfxx-tilegx.c:3750
+msgid "internal error: dangerous relocation"
+msgstr "error interno: reubicaciÃ³n peligrosa"
 
-#: elf32-bfin.c:4687
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4728 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1265
+#: elf32-score.c:3987 elf32-score7.c:3794 elf32-vax.c:536 elf32-xgate.c:494
+#: elfxx-mips.c:16378
 #, c-format
-msgid "%B: unsupported relocation type %d"
-msgstr "%B: tipo de reubicaciÃ³n %d no admitido"
+msgid "private flags = %lx:"
+msgstr "marcas privadas = %lx:"
 
-#: elf32-bfin.c:4776 elf32-frv.c:6596
-msgid "%B: cannot link non-fdpic object file into fdpic executable"
-msgstr "%B: no se puede enlazar el fichero objeto que no es fdpic en un ejecutable fdpic"
+#: elf32-bfin.c:4779 elf32-frv.c:6585
+#, c-format
+msgid "%pB: cannot link non-fdpic object file into fdpic executable"
+msgstr "%pB: no se puede enlazar el fichero objeto que no es fdpic en un ejecutable fdpic"
 
-#: elf32-bfin.c:4780 elf32-frv.c:6600
-msgid "%B: cannot link fdpic object file into non-fdpic executable"
-msgstr "%B: no se puede enlazar el fichero objeto â€˜fdpicâ€™ en un ejecutable que no es fdpic"
+#: elf32-bfin.c:4783 elf32-frv.c:6589
+#, c-format
+msgid "%pB: cannot link fdpic object file into non-fdpic executable"
+msgstr "%pB: no se puede enlazar el fichero objeto fdpic en un ejecutable que no es fdpic"
 
-#: elf32-bfin.c:4930
+#: elf32-bfin.c:4920
 #, c-format
 msgid "*** check this relocation %s"
 msgstr "*** revisar esta reubicaciÃ³n %s"
 
-#: elf32-bfin.c:5046
+#: elf32-bfin.c:5035
 msgid "the bfin target does not currently support the generation of copy relocations"
-msgstr "el destino bfin no soporta actualmente la generaciÃ³n de copia reubicable"
-
-#: elf32-cr16.c:653
-#, c-format
-msgid "Unsupported CR16 relocation type: 0x%x\n"
-msgstr "ReubicaciÃ³n de tipo CR16 no soportado: 0x%x\n"
-
-#: elf32-cr16.c:682
-#, c-format
-msgid "%B: unrecognised CR16 reloc number: %d"
-msgstr "%B: nÃºmero reubicante CR16 no reconocido: %d"
+msgstr "actualmente el objetivo bfin no admite la generaciÃ³n de reubicaciones de copia"
 
-#: elf32-cr16c.c:186
-#, c-format
-msgid "%B: invalid CR16C reloc number: %d"
-msgstr "%B: nÃºmero reubicante CR16C no vÃ¡lido: %d"
-
-#: elf32-cris.c:467
-#, c-format
-msgid "%B: invalid CRIS reloc number: %d"
-msgstr "%B: nÃºmero reubicante CRIS no vÃ¡lido: %d"
+#: elf32-bfin.c:5329 elf32-cr16.c:2720 elf32-m68k.c:4420
+msgid "unsupported relocation type"
+msgstr "tipo de reubicaciÃ³n no admitido"
 
-#: elf32-cris.c:1116
+#: elf32-cris.c:1120
 #, c-format
-msgid "%B, section %A: unresolvable relocation %s against symbol `%s'"
-msgstr "%B, secciÃ³n %A: reubicaciÃ³n %s sin resoluciÃ³n contra el sÃ­mbolo Â«%sÂ»"
+msgid "%pB, section %pA: unresolvable relocation %s against symbol `%s'"
+msgstr "%pB, secciÃ³n %pA: reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»"
 
-#: elf32-cris.c:1181
+#: elf32-cris.c:1185
 #, c-format
-msgid "%B, section %A: No PLT nor GOT for relocation %s against symbol `%s'"
-msgstr "%B, secciÃ³n %A: No hay PLT ni GOT para la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ»"
+msgid "%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'"
+msgstr "%pB, secciÃ³n %pA: no hay PLT ni GOT para la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ»"
 
-#: elf32-cris.c:1184
+#: elf32-cris.c:1188
 #, c-format
-msgid "%B, section %A: No PLT for relocation %s against symbol `%s'"
-msgstr "%B, secciÃ³n %A: No hay PLT para la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ»"
+msgid "%pB, section %pA: no PLT for relocation %s against symbol `%s'"
+msgstr "%pB, secciÃ³n %pA: no hay PLT para la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ»"
 
-#: elf32-cris.c:1190 elf32-cris.c:1323 elf32-cris.c:1588 elf32-cris.c:1671
-#: elf32-cris.c:1824 elf32-tic6x.c:2586
+#: elf32-cris.c:1194 elf32-cris.c:1327 elf32-cris.c:1592 elf32-cris.c:1675
+#: elf32-cris.c:1828 elf32-tic6x.c:2560
 msgid "[whose name is lost]"
 msgstr "[cuyo nombre estÃ¡ perdido]"
 
-#: elf32-cris.c:1308 elf32-tic6x.c:2570
+#: elf32-cris.c:1312 elf32-tic6x.c:2544
 #, c-format
-msgid "%B, section %A: relocation %s with non-zero addend %Ld against local symbol"
-msgstr "%B, secciÃ³n %A: reubicaciÃ³n %s con adiciÃ³n de direcciÃ³n sin cero %Ld contra el sÃ­mbolo local"
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local symbol"
+msgstr "%pB, secciÃ³n %pA: reubicaciÃ³n %s con sumando %<PRId64> distinto de cero contra el sÃ­mbolo local"
 
-#: elf32-cris.c:1317 elf32-cris.c:1665 elf32-cris.c:1818 elf32-tic6x.c:2579
+#: elf32-cris.c:1321 elf32-cris.c:1669 elf32-cris.c:1822 elf32-tic6x.c:2553
 #, c-format
-msgid "%B, section %A: relocation %s with non-zero addend %Ld against symbol `%s'"
-msgstr "%B, secciÃ³n %A: reubicaciÃ³n %s con adiciÃ³n %Ld sin ceros contra el sÃ­mbolo Â«%sÂ»"
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
+msgstr "%pB, secciÃ³n %pA: reubicaciÃ³n %s con sumando %<PRId64> distinto de cero contra el sÃ­mbolo Â«%sÂ»"
 
-#: elf32-cris.c:1344
+#: elf32-cris.c:1348
 #, c-format
-msgid "%B, section %A: relocation %s is not allowed for global symbol: `%s'"
-msgstr "%B, secciÃ³n %A: reubicaciÃ³n %s no permitida para sÃ­mbolo global: Â«%sÂ»"
+msgid "%pB, section %pA: relocation %s is not allowed for global symbol: `%s'"
+msgstr "%pB, secciÃ³n %pA: la reubicaciÃ³n %s no estÃ¡ permitida para sÃ­mbolo global: Â«%sÂ»"
 
-#: elf32-cris.c:1361
+#: elf32-cris.c:1365
 #, c-format
-msgid "%B, section %A: relocation %s with no GOT created"
-msgstr "%B, secciÃ³n %A: reubicaciÃ³n %s sin GOT creado"
+msgid "%pB, section %pA: relocation %s with no GOT created"
+msgstr "%pB, secciÃ³n %pA: se creÃ³ una reubicaciÃ³n %s sin GOT"
 
 #. We shouldn't get here for GCC-emitted code.
-#: elf32-cris.c:1578
+#: elf32-cris.c:1582
 #, c-format
-msgid "%B, section %A: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?"
-msgstr "%B, secciÃ³n %A: reubicaciÃ³n %s tiene una referencia sin definir a Â«%sÂ», Â¿tal vez una confusiÃ³n en la declaraciÃ³n?"
+msgid "%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?"
+msgstr "%pB, secciÃ³n %pA: la reubicaciÃ³n %s tiene una referencia sin definir a Â«%sÂ», Â¿tal vez una confusiÃ³n en la declaraciÃ³n?"
 
-#: elf32-cris.c:1581
+#: elf32-cris.c:1585
 #, c-format
-msgid "%B, section %A: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?"
-msgstr "%B, secciÃ³n %A: la reubicaciÃ³n %s  no estÃ¡ permitida para Â«%sÂ», un sÃ­mbolo global con visibilidad predeterminada, Â¿quizÃ¡ una confusiÃ³n en la declaraciÃ³n?"
+msgid "%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?"
+msgstr "%pB, secciÃ³n %pA: la reubicaciÃ³n %s no estÃ¡ permitida para Â«%sÂ», un sÃ­mbolo global con visibilidad predeterminada, Â¿quizÃ¡ una confusiÃ³n en la declaraciÃ³n?"
 
-#: elf32-cris.c:1952
+#: elf32-cris.c:1956
 #, c-format
-msgid "%B, section %A: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?"
-msgstr "%B, secciÃ³n %A: reubicaciÃ³n %s no permitida para sÃ­mbolo: Â«%sÂ» el cual se define fuera del programa, Â¿tal vez una confusiÃ³n en la declaraciÃ³n?"
+msgid "%pB, section %pA: relocation %s is not allowed for symbol: `%s' which is defined outside the program, perhaps a declaration mixup?"
+msgstr "%pB, secciÃ³n %pA: la reubicaciÃ³n %s no estÃ¡ permitida para el sÃ­mbolo: Â«%sÂ» el cual se define fuera del programa, Â¿tal vez es una confusiÃ³n en la declaraciÃ³n?"
 
-#: elf32-cris.c:2005
+#: elf32-cris.c:2009
 msgid "(too many global variables for -fpic: recompile with -fPIC)"
 msgstr "(demasiadas variables globales para -fpic: recompile con -fPIC)"
 
-#: elf32-cris.c:2012
+#: elf32-cris.c:2016
 msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)"
 msgstr "(datos thread-local demasiado grandes para -fpic o -msmall-tls: recompile con -fPIC o -mno-small-tls)"
 
-#: elf32-cris.c:3047
+#: elf32-cris.c:3051
 #, c-format
-msgid ""
-"%B, section %A:\n"
-"  v10/v32 compatible object must not contain a PIC relocation"
-msgstr ""
-"%B, secciÃ³n %A:\n"
-"  el objeto compatible v10/v32 no debe contener una reubicaciÃ³n PIC"
+msgid "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
+msgstr "%pB, secciÃ³n %pA: el objeto compatible v10/v32 no debe contener una reubicaciÃ³n PIC"
 
-#: elf32-cris.c:3101
+#: elf32-cris.c:3105
 #, 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, secciÃ³n %A:\n"
-"  reubicaciÃ³n %s no es vÃ¡lida en un objeto compartido; es una confusiÃ³n de opciÃ³n tÃ­pica, recompile con -fPIC"
+"%pB, secciÃ³n %pA:\n"
+"  la reubicaciÃ³n %s no es vÃ¡lida en un objeto compartido; es una confusiÃ³n de opciÃ³n tÃ­pica, recompile con -fPIC"
 
-#: elf32-cris.c:3319
+#: elf32-cris.c:3323
 #, c-format
-msgid ""
-"%B, section %A:\n"
-"  relocation %s should not be used in a shared object; recompile with -fPIC"
-msgstr ""
-"%B, secciÃ³n %A:\n"
-"  reubicaciÃ³n %s no se deberÃ­a emplearse en un objeto compartido; recompile con -fPIC"
+msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
+msgstr "%pB, secciÃ³n %pA: la reubicaciÃ³n %s no se deberÃ­a usar en un objeto compartido; recompile con -fPIC"
 
-#: elf32-cris.c:3744
+#: elf32-cris.c:3701
 #, c-format
-msgid ""
-"%B, section `%A', to symbol `%s':\n"
-"  relocation %s should not be used in a shared object; recompile with -fPIC"
-msgstr ""
-"%B, secciÃ³n `%A', para el sÃ­mbolo Â«%sÂ»:\n"
-"  la reubicaciÃ³n %s no se debe usar en un objeto compartido; recompile con -fPIC"
+msgid "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a shared object; recompile with -fPIC"
+msgstr "%pB, secciÃ³n Â«%pAÂ», para el sÃ­mbolo Â«%sÂ»: la reubicaciÃ³n %s no se debe usar en un objeto compartido; recompile con -fPIC"
 
-#: elf32-cris.c:3857
-msgid "Unexpected machine number"
-msgstr "NÃºmero de mÃ¡quina inesperado"
+#: elf32-cris.c:3813
+msgid "unexpected machine number"
+msgstr "nÃºmero de mÃ¡quina inesperado"
 
-#: elf32-cris.c:3908
+#: elf32-cris.c:3865
 #, c-format
 msgid " [symbols have a _ prefix]"
-msgstr " [los sÃ­mbolos tiene un prefijo _]"
+msgstr " [sÃ­mbolos que tienen un prefijo _]"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3868
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 y v32]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3871
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3958
-msgid "%B: uses _-prefixed symbols, but writing file with non-prefixed symbols"
-msgstr "%B: se usan sÃ­mbolos _-prefijo, pero escribiÃ©ndo el fichero con sÃ­mbolos sin prefijo"
+#: elf32-cris.c:3915
+#, c-format
+msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
+msgstr "%pB: se usan sÃ­mbolos con _-prefijo, pero se escribe el fichero con sÃ­mbolos sin prefijo"
+
+#: elf32-cris.c:3916
+#, c-format
+msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
+msgstr "%pB: se usan sÃ­mbolos sin prefijo, pero se escribe el fichero con sÃ­mbolos con _-prefijo"
 
-#: elf32-cris.c:3959
-msgid "%B: uses non-prefixed symbols, but writing file with _-prefixed symbols"
-msgstr "%B: se usan sÃ­mbolos sin prefijo, pero se escribe el fichero con sÃ­mbolos con _-prefijo"
+#: elf32-cris.c:3935
+#, c-format
+msgid "%pB contains CRIS v32 code, incompatible with previous objects"
+msgstr "%pB contiene cÃ³digo CRIS v32, incompatible con objetos anteriores"
 
-#: elf32-cris.c:3978
-msgid "%B contains CRIS v32 code, incompatible with previous objects"
-msgstr "%B contiene cÃ³digo CRIS v32, incompatible con objetos previos"
+#: elf32-cris.c:3937
+#, c-format
+msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
+msgstr "%pB contiene cÃ³digo que no es CRIS v32, incompatible con objetos anteriores"
 
-#: elf32-cris.c:3980
-msgid "%B contains non-CRIS-v32 code, incompatible with previous objects"
-msgstr "%B contiene cÃ³digo que no es CRIS v32, incompatible con objetos previos"
+#: elf32-csky.c:2018
+msgid "GOT table size out of range"
+msgstr "tamaÃ±o de tabla GOT fuera de rango"
 
-#: elf32-crx.c:429
+#: elf32-csky.c:2830
 #, c-format
-msgid "%B: unrecognised CRX reloc number: %d"
-msgstr "%B: nÃºmero reubicante CRX no reconocido: %d"
+msgid "warning: unrecognized arch eflag '%#lx'"
+msgstr "aviso: arquitectura eflag Â«%#lxÂ» no reconocida"
 
-#: elf32-d10v.c:234
+#: elf32-csky.c:2853
 #, c-format
-msgid "%B: invalid D10V reloc number: %d"
-msgstr "%B: nÃºmero reubicante D10V no vÃ¡lido: %d"
+msgid "warning: unrecognised arch name '%#x'"
+msgstr "aviso: nombre de arquitectura Â«%#xÂ» no reconocido"
 
-#: elf32-d30v.c:522 elf32-d30v.c:541
+#: elf32-csky.c:2918 elf32-csky.c:3078
 #, c-format
-msgid "%B: invalid D30V reloc number: %d"
-msgstr "%B: nÃºmero reubicante D30V no vÃ¡lido: %d"
+msgid "%pB: machine flag conflict with target"
+msgstr "%pB: conflicto de marca de mÃ¡quina con el objetivo"
 
-#: elf32-dlx.c:141
+#: elf32-csky.c:2931
 #, c-format
-msgid "BFD Link Error: branch (PC rel16) to section (%s) not supported"
-msgstr "Error de Enlazado BFD: no se admite la ramificaciÃ³n (PC rel16) a la secciÃ³n (%s)"
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr "aviso: la marca de arquitectura del fichero %pB %s entra en conflicto con el objetivo %s, establezca la marca de arquitectura de destino en %s"
 
-#: elf32-dlx.c:204
+#: elf32-csky.c:2960
 #, c-format
-msgid "BFD Link Error: jump (PC rel26) to section (%s) not supported"
-msgstr "Error de Enlazado BFD: no se admite el salto (PC rel26) a la secciÃ³n (%s)"
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr "Error: %pB y %pB tienen diferente versiÃ³n de VDSP"
 
-#: elf32-dlx.c:548
+#: elf32-csky.c:2977
 #, c-format
-msgid "Invalid DLX reloc number: %d"
-msgstr "NÃºmero reubicante DLX no vÃ¡lido: %d"
+msgid "Error: %pB and %pB has different DSP version"
+msgstr "Error: %pB y %pB tienen diferente versiÃ³n de DSP"
 
-#: elf32-epiphany.c:376
+#: elf32-csky.c:2995
 #, c-format
-msgid "%B: invalid Epiphany reloc number: %d"
-msgstr "%B: nÃºmero reubicante Epiphany no vÃ¡lido: %d"
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr "Error: %pB y %pB tienen diferente ABI FPU"
 
-#. Only if it's not an unresolved symbol.
-#: elf32-epiphany.c:570 elf32-ip2k.c:1482
-msgid "unsupported relocation between data/insn address spaces"
-msgstr "no se admite la reubicaciÃ³n entre espacios de direcciones datos/insn"
+#: elf32-csky.c:3092
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr "aviso: la marca de arquitectura del fichero %pB %s entra en conflicto con el objetivo ck%s, usando %s"
 
-#: elf32-fr30.c:381
+#. The r_type is error, not support it.
+#: elf32-csky.c:4331 elf32-i386.c:344
 #, c-format
-msgid "%B: invalid FR30 reloc number: %d"
-msgstr "%B: nÃºmero reubicante FR30 no vÃ¡lido: %d"
+msgid "%pB: unsupported relocation type: %#x"
+msgstr "%pB: no se admite el tipo de reubicaciÃ³n: %#x"
 
-#: elf32-frv.c:1451 elf32-frv.c:1602
-msgid "relocation requires zero addend"
-msgstr "la reubicaciÃ³n requiere una adiciÃ³n cero"
+#: elf32-dlx.c:141
+#, c-format
+msgid "branch (PC rel16) to section (%s) not supported"
+msgstr "no se admite la rama (PC rel16) a la secciÃ³n (%s)"
 
-#: elf32-frv.c:2557
+#: elf32-dlx.c:204
 #, c-format
-msgid "%B: invalid FRV reloc number: %d"
-msgstr "%B: nÃºmero reubicante FRV no vÃ¡lido: %d"
+msgid "jump (PC rel26) to section (%s) not supported"
+msgstr "no se admite el salto (PC rel26) a la secciÃ³n (%s)"
+
+#. Only if it's not an unresolved symbol.
+#: elf32-epiphany.c:570 elf32-ip2k.c:1485
+msgid "unsupported relocation between data/insn address spaces"
+msgstr "no se admite la reubicaciÃ³n entre espacios de direcciones datos/insn"
+
+#: elf32-frv.c:1453 elf32-frv.c:1604
+msgid "relocation requires zero addend"
+msgstr "la reubicaciÃ³n requiere un sumando cero"
 
-#: elf32-frv.c:2823
+#: elf32-frv.c:2833
 #, c-format
 msgid "%H: relocation to `%s+%v' may have caused the error above\n"
-msgstr "%H: la reubicaciÃ³n a `%s+%v' tal vez causÃ³ el error anterior\n"
+msgstr "%H: la reubicaciÃ³n a Â«%s+%vÂ» tal vez causÃ³ el error anterior\n"
 
-#: elf32-frv.c:2840
+#: elf32-frv.c:2850
 msgid "%H: relocation references symbol not defined in the module\n"
 msgstr "%H: la reubicaciÃ³n referencia un sÃ­mbolo que no estÃ¡ definido en el mÃ³dulo\n"
 
-#: elf32-frv.c:2916
+#: elf32-frv.c:2926
 msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
-msgstr "%H: no aplicado R_FRV_GETTLSOFF a una instrucciÃ³n call\n"
+msgstr "%H: no se ha aplicado R_FRV_GETTLSOFF a una instrucciÃ³n call\n"
 
-#: elf32-frv.c:2957
+#: elf32-frv.c:2967
 msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
-msgstr "%H: no aplicado R_FRV_GOTTLSDESC12 a una instrucciÃ³n lddi\n"
+msgstr "%H: no se ha aplicado R_FRV_GOTTLSDESC12 a una instrucciÃ³n lddi\n"
 
-#: elf32-frv.c:3028
+#: elf32-frv.c:3038
 msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
-msgstr "%H: no aplicado R_FRV_GOTTLSDESCHI a una instrucciÃ³n sethi\n"
+msgstr "%H: no se ha aplicado R_FRV_GOTTLSDESCHI a una instrucciÃ³n sethi\n"
 
-#: elf32-frv.c:3065
+#: elf32-frv.c:3075
 msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
-msgstr "%H: no aplicado R_FRV_GOTTLSDESCLO a una instrucciÃ³n setlo o setlos\n"
+msgstr "%H: no se ha aplicado R_FRV_GOTTLSDESCLO a una instrucciÃ³n setlo o setlos\n"
 
-#: elf32-frv.c:3112
+#: elf32-frv.c:3122
 msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
-msgstr "%H: no aplicado R_FRV_GOTTLSDESC_RELAX a una instrucciÃ³n ldd\n"
+msgstr "%H: no se ha aplicado R_FRV_GOTTLSDESC_RELAX a una instrucciÃ³n ldd\n"
 
-#: elf32-frv.c:3196
+#: elf32-frv.c:3206
 msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
-msgstr "%H: no aplicado R_FRV_GETTLSOFF_RELAX a una instrucciÃ³n calll\n"
+msgstr "%H: no se ha aplicado R_FRV_GETTLSOFF_RELAX a una instrucciÃ³n calll\n"
 
-#: elf32-frv.c:3250
+#: elf32-frv.c:3260
 msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
-msgstr "%H: no aplicado R_FRV_GOTTLSOFF12 a una instrucciÃ³n ldi\n"
+msgstr "%H: no se ha aplicado R_FRV_GOTTLSOFF12 a una instrucciÃ³n ldi\n"
 
-#: elf32-frv.c:3280
+#: elf32-frv.c:3290
 msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
-msgstr "%H: no aplicado R_FRV_GOTTLSOFFHI a una instrucciÃ³n sethi\n"
+msgstr "%H: no se ha aplicado R_FRV_GOTTLSOFFHI a una instrucciÃ³n sethi\n"
 
-#: elf32-frv.c:3309
+#: elf32-frv.c:3319
 msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
-msgstr "%H: no aplicado R_FRV_GOTTLSOFFLO a una instrucciÃ³n setlo o setlos\n"
+msgstr "%H: no se ha aplicado R_FRV_GOTTLSOFFLO a una instrucciÃ³n setlo o setlos\n"
 
-#: elf32-frv.c:3339
+#: elf32-frv.c:3349
 msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
-msgstr "%H: no aplicado R_FRV_TLSOFF_RELAX a una instrucciÃ³n ld\n"
+msgstr "%H: no se ha aplicado R_FRV_TLSOFF_RELAX a una instrucciÃ³n ld\n"
 
-#: elf32-frv.c:3384
+#: elf32-frv.c:3394
 msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
-msgstr "%H: no aplicado R_FRV_TLSMOFFHI a una instrucciÃ³n sethi\n"
+msgstr "%H: no se ha aplicado R_FRV_TLSMOFFHI a una instrucciÃ³n sethi\n"
 
-#: elf32-frv.c:3411
+#: elf32-frv.c:3421
 msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
-msgstr "R_FRV_TLSMOFFLO no aplicado a una instrucciÃ³n setlo o setlos\n"
+msgstr "no se ha aplicado R_FRV_TLSMOFFLO a una instrucciÃ³n setlo o setlos\n"
 
-#: elf32-frv.c:3532
-msgid "%H: R_FRV_FUNCDESC references dynamic symbol with nonzero addend\n"
-msgstr "%H: R_FRV_FUNCDESC referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es cero\n"
+#: elf32-frv.c:3542 elf32-frv.c:3662
+msgid "%H: %s references dynamic symbol with nonzero addend\n"
+msgstr "%H: %s referencia un sÃ­mbolo dinÃ¡mico con sumando distinto de cero\n"
 
-#: elf32-frv.c:3573 elf32-frv.c:3695
+#: elf32-frv.c:3583 elf32-frv.c:3704
 msgid "%H: cannot emit fixups in read-only section\n"
-msgstr "%H: no se pueden emitir composturas en la secciÃ³n de sÃ³lo lectura\n"
+msgstr "%H: no se pueden emitir ajustes en la secciÃ³n de sÃ³lo lectura\n"
 
-#: elf32-frv.c:3604 elf32-frv.c:3738
+#: elf32-frv.c:3613 elf32-frv.c:3746
 msgid "%H: cannot emit dynamic relocations in read-only section\n"
 msgstr "%H: no se pueden emitir reubicaciones dinÃ¡micas en la secciÃ³n de sÃ³lo lectura\n"
 
-#: elf32-frv.c:3653
-msgid "%H: R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend\n"
-msgstr "%H: R_FRV_FUNCDESC_VALUE referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es cero\n"
-
-#: elf32-frv.c:3910
+#: elf32-frv.c:3918
 #, c-format
 msgid "%H: reloc against `%s' references a different segment\n"
-msgstr "%H: la reubicaciÃ³n contra Â«%sÂ» referencÃ­a un segmento diferente\n"
+msgstr "%H: la reubicaciÃ³n contra Â«%sÂ» referencia un segmento diferente\n"
 
-#: elf32-frv.c:4061
+#: elf32-frv.c:4069
 #, c-format
 msgid "%H: reloc against `%s': %s\n"
 msgstr "%H: reubicaciÃ³n contra Â«%sÂ»: %s\n"
 
-#: elf32-frv.c:6255
-#, c-format
-msgid "%B: unsupported relocation type %i\n"
-msgstr "%B: no se admite el tipo de reubicaciÃ³n %i\n"
-
-#: elf32-frv.c:6507
+#: elf32-frv.c:6496
 #, c-format
-msgid "%B: compiled with %s and linked with modules that use non-pic relocations"
-msgstr "%B: compilado con %s y enlazado con mÃ³dulos que usan reubicaciones que no son pic"
+msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
+msgstr "%pB: compilado con %s y enlazado con mÃ³dulos que usan reubicaciones que no son pic"
 
-#: elf32-frv.c:6561 elf32-iq2000.c:828 elf32-m32c.c:874
+#: elf32-frv.c:6550 elf32-iq2000.c:830 elf32-m32c.c:876
 #, c-format
-msgid "%B: compiled with %s and linked with modules compiled with %s"
-msgstr "%B: compilado con %s y enlazado con mÃ³dulos compilados con %s"
+msgid "%pB: compiled with %s and linked with modules compiled with %s"
+msgstr "%pB: compilado con %s y enlazado con mÃ³dulos compilados con %s"
 
-#: elf32-frv.c:6574
+#: elf32-frv.c:6563
 #, c-format
-msgid "%B: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
-msgstr "%B: emplea campos e_flags (%#x) desconocidos diferentes a aquellos de los mÃ³dulos previos (%#x)"
+msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
+msgstr "%pB: usa campos e_flags (%#x) desconocidos diferentes a aquellos de los mÃ³dulos anteriores (%#x)"
 
-#: elf32-gen.c:69 elf64-gen.c:69
+#: elf32-gen.c:71
 #, c-format
-msgid "%B: Relocations in generic ELF (EM: %d)"
-msgstr "%B: Reubicaciones en ELF genÃ©rico (EM: %d)"
+msgid "%pB: relocations in generic ELF (EM: %d)"
+msgstr "%pB: reubicaciones en ELF genÃ©rico (EM: %d)"
 
-#: elf32-hppa.c:829 elf32-hppa.c:3499
+#: elf32-hppa.c:863 elf32-hppa.c:3403
 #, c-format
-msgid "%B(%A+%#Lx): cannot reach %s, recompile with -ffunction-sections"
-msgstr "%B(%A+%#Lx): no puede alcanzar %s, recompile con -ffuntion-sections"
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
+msgstr "%pB(%pA+%#<PRIx64>): no se puede alcanzar %s, recompile con -ffuntion-sections"
 
-#: elf32-hppa.c:1242
+#: elf32-hppa.c:1241
 #, c-format
-msgid "%B: relocation %s can not be used when making a shared object; recompile with -fPIC"
-msgstr "%B: reubicaciÃ³n %s no puede utilizarse cuando se crea un objeto compartido; recompile con -fPIC"
+msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
+msgstr "%pB: la reubicaciÃ³n %s no se puede usar cuando se crea un objeto compartido; recompile con -fPIC"
 
-#: elf32-hppa.c:2680
+#: elf32-hppa.c:2580
 #, c-format
-msgid "%B: duplicate export stub %s"
-msgstr "%B: cabo de exportaciÃ³n %s duplicado"
+msgid "%pB: duplicate export stub %s"
+msgstr "%pB: stub de exportaciÃ³n %s duplicado"
 
-#: elf32-hppa.c:3333
+#: elf32-hppa.c:3236
 #, c-format
-msgid "%B(%A+%#Lx): %s fixup for insn %#x is not supported in a non-shared link"
-msgstr "%B(%A+%#Lx): compostura %s para insn %#x no se admite en un enlace no compartido"
+msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
+msgstr "%pB(%pA+%#<PRIx64>): el ajuste %s para insn %#x no se admite en un enlace no compartido"
 
-#: elf32-hppa.c:4124
+#: elf32-hppa.c:4032
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr "%s tiene ambas reubicaciones normal y TLS"
 
-#: elf32-hppa.c:4142
-msgid "%B:%s has both normal and TLS relocs"
-msgstr "%B:%s tiene ambas reubicaciones normal y TLS"
+#: elf32-hppa.c:4050
+#, c-format
+msgid "%pB:%s has both normal and TLS relocs"
+msgstr "%pB:%s tiene ambas reubicaciones normal y TLS"
 
-#: elf32-hppa.c:4201
+#: elf32-hppa.c:4109
 #, c-format
-msgid "%B(%A+%#Lx): cannot handle %s for %s"
-msgstr "%B(%A+%#Lx): no puede manipular %s para %s"
+msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
+msgstr "%pB(%pA+%#<PRIx64>): no se puede manejar %s para %s"
 
-#: elf32-hppa.c:4505
+#: elf32-hppa.c:4415
 msgid ".got section not immediately after .plt section"
 msgstr "la secciÃ³n .got no estÃ¡ inmediatamente despuÃ©s de la secciÃ³n .plt"
 
-#: elf32-i370.c:307
-#, c-format
-msgid "%B: unrecognised I370 reloc number: %d"
-msgstr "%B: nÃºmero reubicante I370 no reconocido: %d"
-
-#: elf32-i370.c:1164
-msgid "%B: unknown relocation type %d for symbol %s"
-msgstr "%B: tipo de reubicaciÃ³n %d desconocida para el sÃ­mbolo %s"
-
-#: elf32-i370.c:1306
+#: elf32-i386.c:1177 elf64-x86-64.c:1506
 #, c-format
-msgid "%B: Relocation %s is not yet supported for symbol %s."
-msgstr "%B: reubicaciÃ³n %s aÃºn no se admite para el sÃ­mbolo %s."
+msgid "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `%pA' failed"
+msgstr "%pB: la transiciÃ³n TLS desde %s hasta %s contra Â«%sÂ» en %#<PRIx64> en la secciÃ³n Â«%pAÂ» ha fallado"
 
-#. Unknown relocation.
-#: elf32-i386.c:384 elf32-m68k.c:352 elf32-ppc.c:2039 elf32-s390.c:346
-#: elf32-tic6x.c:2609 elf32-wasm32.c:106 elf64-ppc.c:2516 elf64-s390.c:373
-#: elf64-x86-64.c:285
+#: elf32-i386.c:1286
 #, c-format
-msgid "%B: invalid relocation type %d"
-msgstr "%B: tipo de reubicaciÃ³n %d invÃ¡lido"
+msgid "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object"
+msgstr "%pB: la reubicaciÃ³n GOT directa R_386_GOT32X contra Â«%sÂ» sin registro base no se puede usar cuando se crea un objeto compartido"
 
-#: elf32-i386.c:1159 elf64-x86-64.c:1335
+#: elf32-i386.c:1719 elf32-s390.c:1151 elf32-sh.c:5499 elf32-tilepro.c:1548
+#: elf32-xtensa.c:1263 elf64-s390.c:1083 elfxx-sparc.c:1556 elfxx-tilegx.c:1767
+#: elfnn-loongarch.c:612 elfnn-riscv.c:671
 #, c-format
-msgid "%B: TLS transition from %s to %s against `%s' at %#Lx in section `%A' failed"
-msgstr "%B: transiciÃ³n TLS desde %s hasta %s contra Â«%sÂ» en %#Lx en la secciÃ³n `%A' fallada"
+msgid "%pB: `%s' accessed both as normal and thread local symbol"
+msgstr "%pB: Â«%sÂ» accediÃ³ como un sÃ­mbolo normal y como un sÃ­mbolo local de hilo"
 
-#: elf32-i386.c:1250
+#: elf32-i386.c:1791
 #, c-format
-msgid "%B: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object"
-msgstr "%B: reubicaciÃ³n GOT directa R_386_GOT32X contra Â«%sÂ» sin registrador base no puede ser empleado cuando cree un objeto compartido"
+msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
+msgstr "%pB: llamada no-PIC a IFUNC Â«%sÂ» no admitida"
 
-#: elf32-i386.c:1703 elf32-s390.c:1184 elf32-sh.c:6057 elf32-tilepro.c:1584
-#: elf32-xtensa.c:1192 elf64-s390.c:1113 elfxx-sparc.c:1601
-#: elfxx-tilegx.c:1793
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:427
+#: elf32-i386.c:1846 elf64-x86-64.c:2436
 #, c-format
-msgid "%B: `%s' accessed both as normal and thread local symbol"
-msgstr "%B: se accediÃ³ Â«%sÂ» como un sÃ­mbolo normal y un sÃ­mbolo local de hilo"
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr "%pB: referencia no canÃ³nica a la funciÃ³n canÃ³nica protegida Â«%sÂ» en %pB"
 
-#: elf32-i386.c:1767
+#: elf32-i386.c:2410 elf64-x86-64.c:2900 elfnn-riscv.c:2455
 #, c-format
-msgid "%B: unsupported non-PIC call to IFUNC `%s'"
-msgstr "%B: llamada no-PIC a IFUNC Â«%sÂ» sin apoyo"
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
+msgstr "%pB: la reubicaciÃ³n %s contra el sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» no estÃ¡ admitida"
 
-#: elf32-i386.c:2345 elf64-x86-64.c:2625
+#: elf32-i386.c:2443 elf32-i386.c:3745 elf32-i386.c:3893 elf64-x86-64.c:2957
+#: elf64-x86-64.c:4597 elf64-x86-64.c:4765 elfnn-riscv.c:2328
+#: elfnn-riscv.c:3184 elfnn-riscv.c:3258
 #, c-format
-msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
-msgstr "%B: reubicaciÃ³n %s frente al sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» no estÃ¡ apoyado"
+msgid "Local IFUNC function `%s' in %pB\n"
+msgstr "FunciÃ³n local IFUNC Â«%sÂ» en %pB\n"
 
-#: elf32-i386.c:2378 elf32-i386.c:3684 elf32-i386.c:3823 elf64-x86-64.c:2682
-#: elf64-x86-64.c:4012 elf64-x86-64.c:4166
-msgid "Local IFUNC function `%s' in %B\n"
-msgstr "FunciÃ³n local IFUNC Â«%sÂ» dentro de %B\n"
-
-#: elf32-i386.c:2593
+#: elf32-i386.c:2621
 #, c-format
-msgid "%B: direct GOT relocation %s against `%s' without base register can not be used when making a shared object"
-msgstr "%B: reubicaciÃ³n GOT directa %s frente a Â«%sÂ» sin  registro base no puede ser empleado cuando se crea un objeto compartido"
+msgid "%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object"
+msgstr "%pB: la reubicaciÃ³n GOT directa %s contra Â«%sÂ» sin registro base no se puede usar cuando se crea un objeto compartido"
 
-#: elf32-i386.c:2628 elf64-x86-64.c:2873
+#: elf32-i386.c:2656 elf64-x86-64.c:3174
 msgid "hidden symbol"
 msgstr "sÃ­mbolo oculto"
 
-#: elf32-i386.c:2631 elf64-x86-64.c:2876
+#: elf32-i386.c:2659 elf64-x86-64.c:3177
 msgid "internal symbol"
 msgstr "sÃ­mbolo interno"
 
-#: elf32-i386.c:2634 elf64-x86-64.c:2879
+#: elf32-i386.c:2662 elf64-x86-64.c:3180
 msgid "protected symbol"
 msgstr "sÃ­mbolo protegido"
 
-#: elf32-i386.c:2637 elf64-x86-64.c:2882
+#: elf32-i386.c:2665 elf64-x86-64.c:3183
 msgid "symbol"
 msgstr "sÃ­mbolo"
 
-#: elf32-i386.c:2643
+#: elf32-i386.c:2671
 #, c-format
-msgid "%B: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
-msgstr "%B: no se puede usar la reubicaciÃ³n R_386_GOTOFF contra %s indefinida Â«%sÂ» cuando se hace un objeto compartido"
+msgid "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
+msgstr "%pB: no se puede usar la reubicaciÃ³n R_386_GOTOFF contra %s sin definir Â«%sÂ» cuando se crea un objeto compartido"
 
-#: elf32-i386.c:2656
+#: elf32-i386.c:2684
 #, c-format
-msgid "%B: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
-msgstr "%B: reubicaciÃ³n R_386_GOTOFF contra %s protegida Â«%sÂ» no puede ser utilizada cuando crea un objeto compartido"
+msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
+msgstr "%pB: la reubicaciÃ³n R_386_GOTOFF contra %s protegida Â«%sÂ» no se puede usar cuando se crea un objeto compartido"
 
-#: elf32-i960.c:140
-#, c-format
-msgid "%B: invalid i960 reloc number: %d"
-msgstr "%B: nÃºmero reubicante i960 no vÃ¡lido: %d"
+#: elf32-i386.c:4096 elf64-x86-64.c:4976
+msgid "%F%P: discarded output section: `%pA'\n"
+msgstr "%F%P: secciÃ³n de salida descartada: Â«%pAÂ»\n"
 
-#: 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 relajante: intercambio de segmento sin informaciÃ³n completa de reubicaciÃ³n de coincidencias."
+msgstr "relajador ip2k: tabla de switch sin coincidir completamente con la informaciÃ³n de reubicaciÃ³n."
 
-#: 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 relajante: encabezado de segmento switch corrupto."
-
-#: elf32-ip2k.c:1245
-#, c-format
-msgid "%B: invalid IP2K reloc number: %d"
-msgstr "%B: nÃºmero reubicante IP2K no vÃ¡lido: %d"
+msgstr "relajador ip2k: encabezado de la tabla de switch corrupto."
 
 #: elf32-ip2k.c:1298
 #, c-format
-msgid "ip2k linker: missing page instruction at %#Lx (dest = %#Lx)"
-msgstr "ip2k enlazante: instrucciÃ³n de pÃ¡gina ausente en %#Lx (dest = %#Lx)"
-
-#: elf32-ip2k.c:1315
-#, c-format
-msgid "ip2k linker: redundant page instruction at %#Lx (dest = %#Lx)"
-msgstr "ip2k enlazante: instrucciÃ³n de pÃ¡gina redundante en %#Lx (dest = %#Lx)"
-
-#: elf32-iq2000.c:441
-#, c-format
-msgid "%B: invalid IQ2000 reloc number: %d"
-msgstr "%B: nÃºmero reubicante IQ2000 no vÃ¡lido: %d"
+msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr "enlazador ip2k: falta la instrucciÃ³n de pÃ¡gina en %#<PRIx64> (dest = %#<PRIx64>)"
 
-#: elf32-lm32.c:539
+#: elf32-ip2k.c:1317
 #, c-format
-msgid "%B: invalid LM32 reloc number: %d"
-msgstr "%B: nÃºmero reubicante LM32 no vÃ¡lido: %d"
+msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr "enlazador ip2k: instrucciÃ³n de pÃ¡gina redundante en %#<PRIx64> (dest = %#<PRIx64>)"
 
-#: elf32-lm32.c:648 elf32-nios2.c:3133
+#: elf32-lm32.c:609 elf32-nios2.c:3145
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "reubicaciÃ³n relativa al puntero global cuando _gp no estÃ¡ definido"
 
-#: elf32-lm32.c:703 elf32-nios2.c:3570
+#: elf32-lm32.c:664 elf32-nios2.c:3582
 msgid "global pointer relative address out of range"
 msgstr "direcciÃ³n relativa al puntero global fuera de rango"
 
-#: elf32-lm32.c:998
-msgid "internal error: addend should be zero for R_LM32_16_GOT"
-msgstr "error interno: addend deberÃ­a ser cero para R_LM32_16_GOT"
-
-#: elf32-m32c.c:306
+#: elf32-lm32.c:960
 #, c-format
-msgid "%B: invalid M32C reloc number: %d"
-msgstr "%B: nÃºmero reubicante M32C no vÃ¡lido: %d"
+msgid "internal error: addend should be zero for %s"
+msgstr "error interno: el sumando deberÃ­a ser cero para %s"
 
-#: elf32-m32r.c:1286
-#, c-format
-msgid "%B: invalid M32R reloc number: %d"
-msgstr "%B: nÃºmero reubicante M32R no vÃ¡lido: %d"
-
-#: elf32-m32r.c:1458
+#: elf32-m32r.c:1461
 msgid "SDA relocation when _SDA_BASE_ not defined"
-msgstr "SDA reubicable cuando _SDA_BASE_ no estÃ¡ definido"
+msgstr "reubicaciÃ³n SDA mientras que _SDA_BASE_ no estÃ¡ definido"
 
-#: elf32-m32r.c:2971 elf32-microblaze.c:1064 elf32-microblaze.c:1112
+#: elf32-m32r.c:2776 elf32-microblaze.c:1152 elf32-microblaze.c:1200
 #, c-format
-msgid "%B: The target (%s) of an %s relocation is in the wrong section (%A)"
-msgstr "%B: El objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n equivocada (%A)"
+msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
+msgstr "%pB: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n incorrecta (%pA)"
 
-#: elf32-m32r.c:3473
-msgid "%B: Instruction set mismatch with previous modules"
-msgstr "%B: Conjunto de instrucciones no coincide con mÃ³dulos previos"
+#: elf32-m32r.c:3279
+#, c-format
+msgid "%pB: instruction set mismatch with previous modules"
+msgstr "%pB: el conjunto de instrucciones no coincide con mÃ³dulos anteriores"
 
-#: elf32-m32r.c:3494 elf32-nds32.c:6037
+#: elf32-m32r.c:3300 elf32-nds32.c:6900
 #, c-format
 msgid "private flags = %lx"
-msgstr "opciones privadas = %lx"
+msgstr "marcas privadas = %lx"
 
-#: elf32-m32r.c:3499
+#: elf32-m32r.c:3305
 #, c-format
 msgid ": m32r instructions"
 msgstr ": instrucciones m32r"
 
-#: elf32-m32r.c:3500
+#: elf32-m32r.c:3306
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": instrucciones m32rx"
 
-#: elf32-m32r.c:3501
+#: elf32-m32r.c:3307
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": instrucciones m32r2"
 
-#: elf32-m68hc11.c:390
+#: elf32-m68hc1x.c:1135
 #, c-format
-msgid "%B: invalid M68HC11 reloc number: %d"
-msgstr "%B: nÃºmero reubicante M68HC11 no vÃ¡lido: %d"
+msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
+msgstr "la referencia al sÃ­mbolo lejano Â«%sÂ» usando una reubicaciÃ³n incorrecta puede producir una ejecuciÃ³n incorrecta"
 
-#: elf32-m68hc12.c:510
-#, c-format
-msgid "%B: invalid M68HC12 reloc number: %d"
-msgstr "%B: nÃºmero reubicante M68HC12 no vÃ¡lido: %d"
-
-#: elf32-m68hc1x.c:1115
-#, c-format
-msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
-msgstr "El referenciar al sÃ­mbolo far Â«%sÂ» usando una reubicaciÃ³n incorrecta puede resultar en una ejecuciÃ³n incorrecta"
-
-#: elf32-m68hc1x.c:1149
+#: elf32-m68hc1x.c:1166
 #, 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 "DirecciÃ³n XGATE (%lx) no estÃ¡ dentro de RAM(0xE000-0xFFFF) compartida, por lo que debe desplazar manualmente la direcciÃ³n, y posiblemente la pÃ¡gina, en su cÃ³digo."
+msgstr "La direcciÃ³n XGATE (%lx) no estÃ¡ dentro de la RAM(0xE000-0xFFFF) compartida, por lo que debe desplazar manualmente la direcciÃ³n, y posiblemente gestionar la pÃ¡gina, en su cÃ³digo."
 
-#: elf32-m68hc1x.c:1167
+#: elf32-m68hc1x.c:1182
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
 msgstr "la direcciÃ³n almacenada [%lx:%04lx] (%lx) no estÃ¡ en el mismo banco que la direcciÃ³n almacenada actual [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1183
+#: elf32-m68hc1x.c:1197
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
 msgstr "referencia a una direcciÃ³n almacenada [%lx:%04lx] en el espacio normal de direcciones en %04lx"
 
-#: elf32-m68hc1x.c:1224
+#: elf32-m68hc1x.c:1233
 #, c-format
 msgid "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your code"
-msgstr "DirecciÃ³n S12 (%lx) no estÃ¡ dentro de RAM(0x2000-0x4000) compartida, por lo tanto debe desplazar manualmente la direcciÃ³n dentro de su cÃ³digo"
+msgstr "La direcciÃ³n S12 (%lx) no estÃ¡ dentro de la RAM(0x2000-0x4000) compartida, por lo tanto debe desplazar manualmente la direcciÃ³n en su cÃ³digo"
 
-#: elf32-m68hc1x.c:1351
-msgid "%B: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
-msgstr "%B: se enlazan ficheros compilados con enteros de 16-bit (-mshort) y otros con enteros de 32-bit"
+#: elf32-m68hc1x.c:1357
+#, c-format
+msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
+msgstr "%pB: se enlazan ficheros compilados para enteros de 16 bits (-mshort) y otros para enteros de 32 bits"
 
-#: elf32-m68hc1x.c:1358
-msgid "%B: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
-msgstr "%B: se enlazan ficheros compilados con dobles de 32-bit (-fshort-double) y otros con dobles de 64-bit"
+#: elf32-m68hc1x.c:1364
+#, c-format
+msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
+msgstr "%pB: se enlazan ficheros compilados para doble de 32 bits (-fshort-double) y otros para doble de 64 bits"
 
-#: elf32-m68hc1x.c:1367
-msgid "%B: linking files compiled for HCS12 with others compiled for HC12"
-msgstr "%B: se enlazan ficheros compilados para HCS12, con otros compilados para HC12"
+#: elf32-m68hc1x.c:1373
+#, c-format
+msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
+msgstr "%pB: se enlazan ficheros compilados para HCS12 con otros compilados para HC12"
 
-#: elf32-m68hc1x.c:1412 elf32-xgate.c:672
+#: elf32-m68hc1x.c:1418 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
-msgstr "[abi=32-bit ent, "
+msgstr "[abi=ent 32 bits, "
 
-#: elf32-m68hc1x.c:1414 elf32-xgate.c:674
+#: elf32-m68hc1x.c:1420 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
-msgstr "[abi=16-bit ent, "
+msgstr "[abi=ent 16 bits, "
 
-#: elf32-m68hc1x.c:1417 elf32-xgate.c:677
+#: elf32-m68hc1x.c:1423 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
-msgstr "doble de 64-bit, "
+msgstr "doble de 64 bits, "
 
-#: elf32-m68hc1x.c:1419 elf32-xgate.c:679
+#: elf32-m68hc1x.c:1425 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
-msgstr "doble de 32-bit, "
+msgstr "doble de 32 bits, "
 
-#: elf32-m68hc1x.c:1422
+#: elf32-m68hc1x.c:1428
 #, c-format
 msgid "cpu=HC11]"
 msgstr "cpu=HC11]"
 
-#: elf32-m68hc1x.c:1424
+#: elf32-m68hc1x.c:1430
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "cpu=HCS12]"
 
-#: elf32-m68hc1x.c:1426
+#: elf32-m68hc1x.c:1432
 #, c-format
 msgid "cpu=HC12]"
 msgstr "cpu=HC12]"
 
-#: elf32-m68hc1x.c:1429
+#: elf32-m68hc1x.c:1435
 #, c-format
 msgid " [memory=bank-model]"
-msgstr " [memoria=modelo de bancos]"
+msgstr " [memoria=modelo de banco]"
 
-#: elf32-m68hc1x.c:1431
+#: elf32-m68hc1x.c:1437
 #, c-format
 msgid " [memory=flat]"
 msgstr " [memoria=plana]"
 
-#: elf32-m68hc1x.c:1434
+#: elf32-m68hc1x.c:1440
 #, c-format
 msgid " [XGATE RAM offsetting]"
-msgstr " [XGATE retirando RAM]"
+msgstr " [CompensaciÃ³n RAM XGATE]"
 
-#: elf32-m68k.c:1214 elf32-m68k.c:1215 vms-alpha.c:7477 vms-alpha.c:7493
-msgid "unknown"
-msgstr "desconocido"
-
-#: elf32-m68k.c:1658
-#, c-format
-msgid "%B: GOT overflow: Number of relocations with 8-bit offset > %d"
-msgstr "%B: desbordamiento de GOT: NÃºmero de reubicaciones con desplazamiento de 8-bit > %d"
-
-#: elf32-m68k.c:1665
+#: elf32-m68k.c:1157 elf32-m68k.c:1165 elf32-ppc.c:3572 elf32-ppc.c:3580
 #, c-format
-msgid "%B: GOT overflow: Number of relocations with 8- or 16-bit offset > %d"
-msgstr "%B: desbordamiento de GOT: NÃºmero de reubicaciones con desplazamiento de 8 o 16-bit > %d"
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "%pB usa flotante hard, %pB usa flotante soft"
 
-#: elf32-mcore.c:100 elf32-mcore.c:455
-#, c-format
-msgid "%B: Relocation %s (%d) is not currently supported.\n"
-msgstr "%B: Actualmente no se admite la reubicaciÃ³n %s (%d).\n"
+#: elf32-m68k.c:1280 elf32-m68k.c:1281 vms-alpha.c:8085 vms-alpha.c:8101
+msgid "unknown"
+msgstr "desconocido"
 
-#: elf32-mcore.c:355
+#: elf32-m68k.c:1731
 #, c-format
-msgid "%B: unrecognised MCore reloc number: %d"
-msgstr "%B: nÃºmero reubicante MCore no reconocido: %d"
+msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
+msgstr "%pB: desbordamiento de GOT: nÃºmero de reubicaciones con desplazamiento de 8 bits > %d"
 
-#: elf32-mcore.c:440
+#: elf32-m68k.c:1738
 #, c-format
-msgid "%B: Unknown relocation type %d\n"
-msgstr "%B: Tipo de reubicaciÃ³n %d desconocido\n"
+msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
+msgstr "%pB: desbordamiento de GOT: nÃºmero de reubicaciones con desplazamiento de 8 o 16 bits > %d"
 
 #. Pacify gcc -Wall.
 #: elf32-mep.c:139
@@ -2731,451 +2918,415 @@ msgstr "mep: no hay reubicaciÃ³n para el
 #: elf32-mep.c:146
 #, c-format
 msgid "MeP: howto %d has type %d"
-msgstr "MeP: para que %d tenga tipo %d"
-
-#: elf32-mep.c:390
-#, c-format
-msgid "%B: invalid MEP reloc number: %d"
-msgstr "%B: nÃºmero reubicante MEP no vÃ¡lido: %d"
+msgstr "MeP: el howto %d tiene tipo %d"
 
-#: elf32-mep.c:620
+#: elf32-mep.c:618
 #, c-format
-msgid "%B and %B are for different cores"
-msgstr "%B y %B son para nÃºcleos diferentes"
+msgid "%pB and %pB are for different cores"
+msgstr "%pB y %pB son para nÃºcleos diferentes"
 
-#: elf32-mep.c:639
+#: elf32-mep.c:637
 #, c-format
-msgid "%B and %B are for different configurations"
-msgstr "%B y %B son para configuraciones diferentes"
+msgid "%pB and %pB are for different configurations"
+msgstr "%pB y %pB son para configuraciones diferentes"
 
-#: elf32-mep.c:677
+#: elf32-mep.c:675
 #, c-format
 msgid "private flags = 0x%lx"
 msgstr "marcas privadas = 0x%lx"
 
-#: elf32-metag.c:878
+#: elf32-metag.c:1857
 #, c-format
-msgid "%B: invalid METAG reloc number: %d"
-msgstr "%B: nÃºmero reubicante METAG no vÃ¡lido: %d"
+msgid "%pB(%pA): multiple TLS models are not supported"
+msgstr "%pB(%pA): no se admite el uso de varios modelos TLS"
 
 #: elf32-metag.c:1860
-msgid "%B(%A): multiple TLS models are not supported"
-msgstr "%B(%A): mÃºltiples modelos TLS no estÃ¡n apoyados"
-
-#: elf32-metag.c:1863
-msgid "%B(%A): shared library symbol %s encountered whilst performing a static link"
-msgstr "%B(%A): sÃ­mbolo de biblioteca compartido %s encontrado mientras efectuaba un enlace estÃ¡tico"
-
-#: elf32-microblaze.c:656
 #, c-format
-msgid "%B: unrecognised MicroBlaze reloc number: %d"
-msgstr "%B: nÃºmero reubicante MicroBlaze no reconocido: %d"
+msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
+msgstr "%pB(%pA): se ha encontrado con un sÃ­mbolo de biblioteca compartida %s mientras se efectuaba un enlace estÃ¡tico"
 
-#: elf32-microblaze.c:1482 elf32-or1k.c:1052 elf32-tilepro.c:3147
-#: elfxx-sparc.c:3537 elfxx-tilegx.c:3531
-msgid "%B: probably compiled without -fPIC?"
-msgstr "%B: Â¿Compilado probablemente sin -fPIC?"
+#: elf32-microblaze.c:1595 elf32-tilepro.c:3021 elfxx-sparc.c:3446
+#: elfxx-tilegx.c:3415
+#, c-format
+msgid "%pB: probably compiled without -fPIC?"
+msgstr "%pB: Â¿Probablemente compilado sin -fPIC?"
 
-#: elf32-mips.c:1777 elf64-mips.c:3200 elfn32-mips.c:3014
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334
 msgid "literal relocation occurs for an external symbol"
 msgstr "la reubicaciÃ³n literal sucede para un sÃ­mbolo externo"
 
-#: elf32-mips.c:1824 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:3243
-#: elfn32-mips.c:3055
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr "la reubicaciÃ³n relativa a gp de 32bits sucede para un sÃ­mbolo externo"
 
-#: elf32-mips.c:2225
-#, c-format
-msgid "Unrecognised MIPS reloc number: %d"
-msgstr "NÃºmero reubicante MIPS no reconocido: %d"
-
-#: elf32-moxie.c:137
-#, c-format
-msgid "%B: invalid Moxie reloc number: %d"
-msgstr "%B: nÃºmero reubicante Moxie no vÃ¡lido: %d"
-
-#: elf32-msp430.c:648
+#: elf32-msp430.c:914
 #, c-format
-msgid "%B: invalid MSP430X reloc number: %d"
-msgstr "%B: nÃºmero reubicante MSP430X no vÃ¡lido: %d"
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "error: el tamaÃ±o final del valor uleb128 en el desplazamiento 0x%lx en %pA desde %pB excede el espacio disponible"
 
-#: elf32-msp430.c:658
-#, c-format
-msgid "%B: invalid MSP430 reloc number: %d"
-msgstr "%B: nÃºmero reubicante MSP430 no vÃ¡lido: %d"
-
-#: elf32-msp430.c:832 elf32-msp430.c:1146
-msgid "Try enabling relaxation to avoid relocation truncations"
-msgstr "Intente activando relajaciÃ³n para evitar truncaciones reubicantes"
+#: elf32-msp430.c:983 elf32-msp430.c:1297
+msgid "try enabling relaxation to avoid relocation truncations"
+msgstr "intente activando la relajaciÃ³n para evitar truncamientos de reubicaciÃ³n"
 
-#: elf32-msp430.c:1353
+#: elf32-msp430.c:1506
 msgid "internal error: branch/jump to an odd address detected"
-msgstr "error interno: rama/omisiÃ³n a una direcciÃ³n par detectada"
+msgstr "error interno: se ha detectado rama/salto a una direcciÃ³n impar"
 
-#: elf32-msp430.c:2352
+#: elf32-msp430.c:2673
 #, c-format
-msgid "Warning: %B: Unknown MSPABI object attribute %d"
-msgstr "Aviso: %B: Atributo desconocido de objeto MSPABI %d"
+msgid "warning: %pB: unknown MSPABI object attribute %d"
+msgstr "aviso: %pB: atributo de objeto MSPABI desconocido %d"
 
-#: elf32-msp430.c:2445
+#: elf32-msp430.c:2774
 #, c-format
-msgid "error: %B uses %s instructions but %B uses %s"
-msgstr "error: %B utiliza %s instrucciones pero %B emplea %s"
+msgid "error: %pB uses %s instructions but %pB uses %s"
+msgstr "error: %pB usa instrucciones %s pero %pB usa %s"
 
-#: elf32-msp430.c:2457
+#: elf32-msp430.c:2786
 #, c-format
-msgid "error: %B uses the %s code model whereas %B uses the %s code model"
-msgstr "error: %B utiliza el modelo de cÃ³digo %s mientras que %B utiliza el modelo de cÃ³digo %s"
+msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
+msgstr "error: %pB usa el modelo de cÃ³digo %s mientras que %pB usa el modelo de cÃ³digo %s"
 
-#: elf32-msp430.c:2469
+#: elf32-msp430.c:2799
 #, c-format
-msgid "error: %B uses the large code model but %B uses MSP430 instructions"
-msgstr "error: %B utiliza el modelo de cÃ³digo grande pero %B solo emplea instrucciones MSP430"
+msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
+msgstr "error: %pB usa el modelo de cÃ³digo grande pero %pB usa instrucciones MSP430"
 
-#: elf32-msp430.c:2480
+#: elf32-msp430.c:2810
 #, c-format
-msgid "error: %B uses the %s data model whereas %B uses the %s data model"
-msgstr "error: %B utiliza el modelo de datos %s mientras que %B utiliza el modelo de datos %s"
+msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
+msgstr "error: %pB usa el modelo de datos %s mientras que %pB usa el modelo de datos %s"
 
-#: elf32-msp430.c:2492
+#: elf32-msp430.c:2823
 #, c-format
-msgid "error: %B uses the small code model but %B uses the %s data model"
-msgstr "error: %B utiliza el modelo de cÃ³digo pequeÃ±o pero %B emplea el modelo de datos %s"
+msgid "error: %pB uses the small code model but %pB uses the %s data model"
+msgstr "error: %pB usa el modelo de cÃ³digo pequeÃ±o pero %pB usa el modelo de datos %s"
 
-#: elf32-msp430.c:2504
+#: elf32-msp430.c:2835
 #, c-format
-msgid "error: %B uses the %s data model but %B only uses MSP430 instructions"
-msgstr "error: %B utiliza el modelo de datos %s pero %B solo emplea instrucciones MSP430"
+msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
+msgstr "error: %pB usa el modelo de datos %s pero %pB sÃ³lo usa instrucciones MSP430"
 
-#: elf32-mt.c:242
+#: elf32-msp430.c:2860
 #, c-format
-msgid "%B: invalid MT reloc number: %d"
-msgstr "%B: nÃºmero reubicante MT no vÃ¡lido: %d"
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr "error: %pB puede usar la regiÃ³n superior para datos, pero %pB asume que los datos estÃ¡n exclusivamente en la memoria inferior"
 
-#: elf32-nds32.c:2897
+#: elf32-nds32.c:3674
 #, c-format
-msgid "%B: invalid NDS32 reloc number: %d"
-msgstr "%B: nÃºmero reubicante NDS32 no vÃ¡lido: %d"
-
-#: elf32-nds32.c:3232
-msgid "error: Can't find symbol: _SDA_BASE_."
-msgstr "error: no puede encontrar sÃ­mbolo: __SDA_BASE_."
-
-#: elf32-nds32.c:4410 elf32-nds32.c:11783
-msgid "%B: error: Cannot set _ITB_BASE_"
-msgstr "%B: error: no puede establecer _ITB_BASE_"
-
-#: elf32-nds32.c:4418
-msgid "error: IFC relocation error."
-msgstr "error: reubicaciÃ³n IFC errÃ³nea."
+msgid "error: can't find symbol: %s"
+msgstr "error: no se puede encontrar el sÃ­mbolo: %s"
 
-#: elf32-nds32.c:4452
+#: elf32-nds32.c:5573
 #, c-format
-msgid "%B: error: unknown relocation type %d."
-msgstr "%B: error: tipo reubicante %d desconocido."
+msgid "%pB: warning: %s unsupported in shared mode"
+msgstr "%pB: aviso: %s no compatible en modo compartido"
 
-#: elf32-nds32.c:4898
-msgid "%B: warning: cannot deal R_NDS32_25_ABS_RELA in shared mode."
-msgstr "%B: aviso: se crea un R_NDS32_25_ABS_RELA en un objeto compartido."
-
-#: elf32-nds32.c:5032
-msgid "%B: warning: unaligned access to GOT entry."
-msgstr "%B: aviso: acceso no alineado a la entrada GOT."
+#: elf32-nds32.c:5699
+#, c-format
+msgid "%pB: warning: unaligned access to GOT entry"
+msgstr "%pB: aviso: acceso no alineado a la entrada GOT"
 
-#: elf32-nds32.c:5074
-msgid "%B: warning: relocate SDA_BASE failed."
-msgstr "%B: aviso: reubicaciÃ³n SDA_BASE fallada."
+#: elf32-nds32.c:5740
+#, c-format
+msgid "%pB: warning: relocate SDA_BASE failed"
+msgstr "%pB: aviso: la reubicaciÃ³n de SDA_BASE ha fallado"
 
-#: elf32-nds32.c:5096
+#: elf32-nds32.c:5762
 #, c-format
-msgid "%B(%A): warning: unaligned small data access of type %d."
-msgstr "%B(%A): aviso: acceso sin alinear al sÃ­mbolo Â«%sÂ» en el Ã¡rea de datos small."
+msgid "%pB(%pA): warning: unaligned small data access of type %d"
+msgstr "%pB(%pA): aviso: acceso a datos pequeÃ±os desalineados de tipo %d"
 
-#: elf32-nds32.c:5844
+#: elf32-nds32.c:6688
 #, c-format
-msgid "%B: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
-msgstr "%B: tamaÃ±o de vector ISR no coincide con mÃ³dulos previos, previos %u-byte, actual %u-byte"
+msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
+msgstr "%pB: el tamaÃ±o del vector ISR no coincide con mÃ³dulos anteriores, anterior %u bytes, actual %u bytes"
 
-#: elf32-nds32.c:5888
-msgid "%B: warning: Endian mismatch with previous modules."
-msgstr "%B: aviso: Coincidencia endian con mÃ³dulos previos."
+#: elf32-nds32.c:6736
+#, c-format
+msgid "%pB: warning: endian mismatch with previous modules"
+msgstr "%pB: aviso: falta de coincidencia endian con mÃ³dulos anteriores"
 
-#: elf32-nds32.c:5898
-msgid "%B: warning: Older version of object file encountered, Please recompile with current tool chain."
-msgstr "%B: aviso: versiÃ³n de fichero objeto anterior encontrado, por favor recompile con la cadena de herramientas actuales."
+#: elf32-nds32.c:6750
+#, c-format
+msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
+msgstr "%pB: aviso: se ha encontrado una versiÃ³n del fichero objeto anterior, recompile con la cadena de herramientas actual"
 
-#: elf32-nds32.c:5976
-msgid "%B: error: ABI mismatch with previous modules."
-msgstr "%B: error: ABI no coincide con mÃ³dulos previos."
+#: elf32-nds32.c:6838
+#, c-format
+msgid "%pB: error: ABI mismatch with previous modules"
+msgstr "%pB: error: ABI no coincide con mÃ³dulos anteriores"
 
-#: elf32-nds32.c:5987
-msgid "%B: error: Instruction set mismatch with previous modules."
-msgstr "%B: error: conjunto de instrucciones no coincide con mÃ³dulos previos."
+#: elf32-nds32.c:6848
+#, c-format
+msgid "%pB: error: instruction set mismatch with previous modules"
+msgstr "%pB: error: el conjunto de instrucciones no coincide con mÃ³dulos anteriores"
 
-#: elf32-nds32.c:6013
+#: elf32-nds32.c:6875
 #, c-format
-msgid "%B: warning: Incompatible elf-versions %s and  %s."
-msgstr "%B: aviso: versiones elf incompatibles %s y %s."
+msgid "%pB: warning: incompatible elf-versions %s and %s"
+msgstr "%pB: aviso: versiones elf incompatibles %s y %s"
 
-#: elf32-nds32.c:6043
+#: elf32-nds32.c:6906
 #, c-format
 msgid ": n1 instructions"
-msgstr ": instrucciones ni"
+msgstr ": instrucciones n1"
 
-#: elf32-nds32.c:6046
+#: elf32-nds32.c:6909
 #, c-format
 msgid ": n1h instructions"
 msgstr ": instrucciones n1h"
 
-#: elf32-nds32.c:8535
-msgid "%B: Error: search_nds32_elf_blank reports wrong node\n"
-msgstr "%B: Error: search_nds32_elf_blank devuelve nodo equivocado\n"
-
-#: elf32-nds32.c:8794
+#: elf32-nds32.c:9358
 #, c-format
-msgid "%B: warning: %s points to unrecognized reloc at %#Lx"
-msgstr "%B: aviso: %s apunta a reloc no reconocido en %#Lx"
+msgid "%pB: error: search_nds32_elf_blank reports wrong node"
+msgstr "%pB: error: search_nds32_elf_blank informa de un nodo incorrecto"
 
-#: elf32-nds32.c:11655 elf32-nds32.c:11672
-msgid "error: Jump IFC Fail."
-msgstr "error: reubicaciÃ³n IFC fallada."
-
-#: elf32-nds32.c:12529
+#: elf32-nds32.c:9622
 #, c-format
-msgid "%B: Nested OMIT_FP in %A."
-msgstr "%B: OMIT_FP anidado en %A."
+msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
+msgstr "%pB: aviso: %s apunta a reubicaciÃ³n no reconocida en %#<PRIx64>"
 
-#: elf32-nds32.c:12548
+#: elf32-nds32.c:12887
 #, c-format
-msgid "%B: Unmatched OMIT_FP in %A."
-msgstr "%B: OMIT_FP desemparejado en %A."
+msgid "%pB: nested OMIT_FP in %pA"
+msgstr "%pB: OMIT_FP anidado en %pA"
 
-#: elf32-nds32.c:12831 reloc.c:8273
+#: elf32-nds32.c:12906
 #, c-format
-msgid "%X%P: %B(%A): relocation \"%R\" goes out of range\n"
-msgstr "%X%P: %B(%A): reubicaciÃ³n Â«%RÂ» sale del rango\n"
-
-#: elf32-nds32.c:14607
-msgid "Linker: cannot init ex9 hash table error \n"
-msgstr "Enlazador: error de tabla hash no puede iniciar ex9\n"
+msgid "%pB: unmatched OMIT_FP in %pA"
+msgstr "%pB: OMIT_FP desemparejado en %pA"
 
-#: elf32-nds32.c:15016 elf32-nds32.c:15030
-msgid "Linker: error cannot fixed ex9 relocation \n"
-msgstr "Enlazador: error no solucionado ex9 reubicado \n"
-
-#: elf32-nds32.c:15241
+#: elf32-nios2.c:2934
 #, c-format
-msgid "%B: warning: unaligned small data access for entry: {%Ld, %Ld, %Ld}, addr = %#Lx, align = %#x"
-msgstr "%B: aviso: acceso de datos pequeÃ±o desalineados para entradas: {%Ld, %Ld, %Ld}, direc = %#Lx, alineam = %#x"
+msgid "error: %pB: big-endian R2 is not supported"
+msgstr "error: %pB: big-endian R2 no estÃ¡ admitido"
 
-#: elf32-nds32.c:15274
+#: elf32-nios2.c:2950
 #, c-format
-msgid "failed creating ex9.it %s hash table entry"
-msgstr "fallaba al crear ex9.it %s asiento de tabla hash"
-
-#: elf32-nios2.c:2929
-msgid "error: %B: Big-endian R2 is not supported."
-msgstr "error: %B: Big-endian R2 no estÃ¡ apoyado."
+msgid "error: %pB: conflicting CPU architectures %d/%d"
+msgstr "error: %pB: arquitecturas de CPU en conflicto %d/%d"
 
-#: elf32-nios2.c:3814
+#: elf32-nios2.c:3825
 #, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "reubicaciÃ³n relativa al puntero global en direcciÃ³n 0x%08x cuando _gp no estÃ¡ definido\n"
+msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+msgstr "reubicaciÃ³n relativa al puntero global en la direcciÃ³n %#<PRIx64> cuando _gp no estÃ¡ definido\n"
 
-#: elf32-nios2.c:3834
+#: elf32-nios2.c:3852
 #, 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 "Incapaz de alcanzar %s (en 0x%08x) desde el puntero global (en 0x%08x) porque el desplazamiento (%d) estÃ¡ fuera del rango 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 "no se puede alcanzar %s (en %#<PRIx64>) desde el puntero global (en %#<PRIx64>) porque el desplazamiento (%<PRId64>) estÃ¡ fuera del rango permitido, -32678 a 32767\n"
 
-#: elf32-nios2.c:4487 elf32-pru.c:816
+#: elf32-nios2.c:4506 elf32-pru.c:931
 msgid "relocation out of range"
 msgstr "reubicaciÃ³n fuera de rango"
 
-#: elf32-nios2.c:4497 elf32-pru.c:826 elf32-tic6x.c:2682
+#: elf32-nios2.c:4516 elf32-pru.c:941 elf32-tic6x.c:2657
 msgid "dangerous relocation"
 msgstr "reubicaciÃ³n peligrosa"
 
-#: elf32-nios2.c:5370
+#: elf32-nios2.c:5354
 #, c-format
 msgid "dynamic variable `%s' is zero size"
 msgstr "la variable dinÃ¡mica Â«%sÂ» es de tamaÃ±o cero"
 
-#: elf32-or1k.c:715
+#: elf32-or1k.c:1258
 #, c-format
-msgid "%B: invalid OR1K reloc number: %d"
-msgstr "%B: nÃºmero reubicante OR1K no vÃ¡lido: %d"
+msgid "%pB: Cannot handle relocation value size of %d"
+msgstr "%pB: No se puede manejar el tamaÃ±o del valor de reubicaciÃ³n de %d"
 
-#: elf32-or1k.c:965
-msgid "internal error: addend should be zero for R_OR1K_GOT16"
-msgstr "error interno: addend deberÃ­a ser cero para R_OR1K_GOT16"
+#: elf32-or1k.c:1377
+#, c-format
+msgid "%pB: unknown relocation type %d"
+msgstr "%pB: tipo de reubicaciÃ³n %d desconocido"
+
+#: elf32-or1k.c:1431
+#, c-format
+msgid "%pB: addend should be zero for plt relocations"
+msgstr "%pB: el sumando debe ser cero para las reubicaciones de plt"
+
+#: elf32-or1k.c:1544
+#, c-format
+msgid "%pB: addend should be zero for got relocations"
+msgstr "%pB: el sumando debe ser cero para las reubicaciones de got"
+
+#: elf32-or1k.c:1561
+#, c-format
+msgid "%pB: gotoff relocation against dynamic symbol %s"
+msgstr "%pB: reubicaciÃ³n gotoff contra el sÃ­mbolo dinÃ¡mico %s"
 
-#: elf32-or1k.c:1074
-msgid "%B: support for local dynamic not implemented"
-msgstr "%B: apoyo para dinÃ¡mico local no implementado"
+#: elf32-or1k.c:1575 elf32-or1k.c:1590 elf64-alpha.c:4410 elf64-alpha.c:4554
+#, c-format
+msgid "%pB: pc-relative relocation against dynamic symbol %s"
+msgstr "%pB: reubicaciÃ³n relativa a pc contra el sÃ­mbolo dinÃ¡mico %s"
 
-#: elf32-or1k.c:1209
-msgid "%B: will not resolve runtime TLS relocation"
-msgstr "%B: no resolverÃ¡ reubicaciÃ³n TLS en tiempo de ejecuciÃ³n"
+#: elf32-or1k.c:1604
+#, c-format
+msgid "%pB: non-pic relocation against symbol %s"
+msgstr "%pB: reubicaciÃ³n no-pic contra el sÃ­mbolo %s"
 
-#: elf32-or1k.c:1529
+#: elf32-or1k.c:1688
 #, c-format
-msgid "%B: bad relocation section name `%s'"
-msgstr "%B: equivocado nombre seccional de reubicaciÃ³n Â«%sÂ»"
+msgid "%pB: support for local dynamic not implemented"
+msgstr "%pB: la compatibilidad con dinÃ¡mica local no estÃ¡ implementada"
 
-#: elf32-or1k.c:2641
-msgid "%B: EF_OR1K_NODELAY flag mismatch with previous modules"
-msgstr "%B: marca EF_OR1K_NODELAY no coincide con los mÃ³dulos previos"
+#: elf32-or1k.c:1867
+#, c-format
+msgid "%pB: will not resolve runtime TLS relocation"
+msgstr "%pB: no resolverÃ¡ la reubicaciÃ³n TLS en tiempo de ejecuciÃ³n"
 
-#: elf32-pj.c:325
+#: elf32-or1k.c:2201
 #, c-format
-msgid "%B: unrecognised PicoJava reloc number: %d"
-msgstr "%B: nÃºmero reubicante PicoJava no reconocido: %d"
+msgid "%pB: bad relocation section name `%s'"
+msgstr "%pB: nombre de secciÃ³n de reubicaciÃ³n incorrecto Â«%sÂ»"
 
-#: elf32-ppc.c:2027
+#: elf32-or1k.c:3315
 #, c-format
-msgid "%B: unrecognised PPC reloc number: %d"
-msgstr "%B: nÃºmero reubicante PPC no reconocido: %d"
+msgid "%pB: %s flag mismatch with previous modules"
+msgstr "%pB: la marca %s no coincide con los mÃ³dulos anteriores"
 
-#: elf32-ppc.c:2112
+#: elf32-ppc.c:990 elf64-ppc.c:1753
 #, c-format
 msgid "generic linker can't handle %s"
-msgstr "el enlazador genÃ©rico no puede manipular %s"
+msgstr "el enlazador genÃ©rico no puede manejar %s"
 
-#: elf32-ppc.c:2732
+#: elf32-ppc.c:1628
 #, c-format
-msgid "corrupt %s section in %B"
-msgstr "secciÃ³n %s corrupta en %B"
+msgid "corrupt %s section in %pB"
+msgstr "secciÃ³n %s corrupta en %pB"
 
-#: elf32-ppc.c:2752
+#: elf32-ppc.c:1647
 #, c-format
-msgid "unable to read in %s section from %B"
-msgstr "no se puede leer en la secciÃ³n %s desde %B"
+msgid "unable to read in %s section from %pB"
+msgstr "no se puede leer en la secciÃ³n %s desde %pB"
 
-#: elf32-ppc.c:2794
+#: elf32-ppc.c:1689
 #, c-format
-msgid "warning: unable to set size of %s section in %B"
-msgstr "aviso: no se puede establecer el tamaÃ±o de la secciÃ³n %s en %B"
+msgid "warning: unable to set size of %s section in %pB"
+msgstr "aviso: no se puede establecer el tamaÃ±o de la secciÃ³n %s en %pB"
 
-#: elf32-ppc.c:2844
-msgid "failed to allocate space for new APUinfo section."
-msgstr "fallaba al reservar espacio para la nueva secciÃ³n APUinfo."
+#: elf32-ppc.c:1738
+msgid "failed to allocate space for new APUinfo section"
+msgstr "fallo al asignar espacio para la nueva secciÃ³n APUinfo"
 
-#: elf32-ppc.c:2863
-msgid "failed to compute new APUinfo section."
-msgstr "fallaba al calcular la nueva secciÃ³n APUinfo."
+#: elf32-ppc.c:1757
+msgid "failed to compute new APUinfo section"
+msgstr "fallo al calcular la nueva secciÃ³n APUinfo"
 
-#: elf32-ppc.c:2866
-msgid "failed to install new APUinfo section."
-msgstr "no se puede instalar la nueva secciÃ³n APUinfo."
+#: elf32-ppc.c:1760
+msgid "failed to install new APUinfo section"
+msgstr "fallo al instalar la nueva secciÃ³n APUinfo"
 
-#: elf32-ppc.c:3915
+#: elf32-ppc.c:2869
 #, c-format
-msgid "%B: relocation %s cannot be used when making a shared object"
-msgstr "%B: reubicaciÃ³n %s no puede utilizarse cuando se crea un objeto compartido"
+msgid "%pB: relocation %s cannot be used when making a shared object"
+msgstr "%pB: la reubicaciÃ³n %s no se puede usar cuando se crea un objeto compartido"
 
-#: elf32-ppc.c:4266 elf64-ppc.c:5597
+#: elf32-ppc.c:3588 elf32-ppc.c:3596
 #, c-format
-msgid "%H: %s reloc against local symbol\n"
-msgstr "%H: %s reubica frente al sÃ­mbolo local\n"
+msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
+msgstr "%pB usa flotante hard de precisiÃ³n doble, %pB usa flotante hard de precisiÃ³n simple"
 
-#: elf32-ppc.c:4628 elf32-ppc.c:4632
+#: elf32-ppc.c:3618 elf32-ppc.c:3626
 #, c-format
-msgid "Warning: %B uses hard float, %B uses soft float"
-msgstr "Aviso: %B emplea coma flotante hard, %B emplea coma flotante soft"
+msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
+msgstr "%pB usa long double de 64 bits, %pB usa long double de 128 bits"
 
-#: elf32-ppc.c:4636 elf32-ppc.c:4641
+#: elf32-ppc.c:3634 elf32-ppc.c:3642
 #, c-format
-msgid "Warning: %B uses double-precision hard float, %B uses single-precision hard float"
-msgstr "Aviso: %B emplea coma flotante hard de doble precisiÃ³n, %B emplea coma flotante hard de precisiÃ³n simple"
+msgid "%pB uses IBM long double, %pB uses IEEE long double"
+msgstr "%pB usa long double de IBM, %pB usa long double de IEEE"
 
-#: elf32-ppc.c:4656 elf32-ppc.c:4661
+#: elf32-ppc.c:3709 elf32-ppc.c:3718
 #, c-format
-msgid "Warning: %B uses 64-bit long double, %B uses 128-bit long double"
-msgstr "Aviso: %B utiliza 64 bit doble largo, %B utiliza 128 bit doble largo"
+msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
+msgstr "%pB usa ABI de vector AltiVec, %pB usa ABI de vector SPE"
 
-#: elf32-ppc.c:4666 elf32-ppc.c:4671
+#: elf32-ppc.c:3747 elf32-ppc.c:3756
 #, c-format
-msgid "Warning: %B uses IBM long double, %B uses IEEE long double"
-msgstr "Aviso: %B utiliza doble largo IBM, %B utiliza doble largo IEEE"
+msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
+msgstr "%pB usa r3/r4 para devoluciones de estructura pequeÃ±a, %pB usa memoria"
 
-#: elf32-ppc.c:4722 elf32-ppc.c:4727
+#: elf32-ppc.c:3820
 #, c-format
-msgid "Warning: %B uses AltiVec vector ABI, %B uses SPE vector ABI"
-msgstr "Aviso: %B emplea la ABI de vectorAltiVec, %B emplea vector SPE ABI"
+msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr "%pB: compilado con -mrelocatable y enlazado con mÃ³dulos compilados de forma normal"
 
-#: elf32-ppc.c:4750 elf32-ppc.c:4755
+#: elf32-ppc.c:3828
 #, c-format
-msgid "Warning: %B uses r3/r4 for small structure returns, %B uses memory"
-msgstr "Aviso: %B emplea r3/r4 para devoluciones de estructura small, %B emplea memoria"
+msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr "%pB: compilado de forma normal y enlazado con mÃ³dulos compilados con -mrelocatable"
 
-#: elf32-ppc.c:4810
-msgid "%B: compiled with -mrelocatable and linked with modules compiled normally"
-msgstr "%B: compilado con -mrelocatable y enlazado con mÃ³dulos compilados de forma normal"
-
-#: elf32-ppc.c:4818
-msgid "%B: compiled normally and linked with modules compiled with -mrelocatable"
-msgstr "%B: compilado de forma normal y enlazado con mÃ³dulos compilados con -mrelocatable"
+#: elf32-ppc.c:3899
+#, c-format
+msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
+msgstr "%pB(%pA+0x%lx): se esperaba una reubicaciÃ³n de estilo 16A en el insn 0x%08x"
 
-#: elf32-ppc.c:4887
+#: elf32-ppc.c:3918
 #, c-format
-msgid "%B(%A+0x%lx): expected 16A style relocation on 0x%08x insn"
-msgstr "%B(%A+0x%lx): esperada reubicaciÃ³n de estilo 16A en 0x%08x insn"
+msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
+msgstr "%pB(%pA+0x%lx): se esperaba una reubicaciÃ³n de estilo 16D en el insn 0x%08x"
 
-#: elf32-ppc.c:4906
+#: elf32-ppc.c:4028
 #, c-format
-msgid "%B(%A+0x%lx): expected 16D style relocation on 0x%08x insn"
-msgstr "%B(%A+0x%lx): esperada reubicaciÃ³n de estilo 16D en 0x%08x insn"
+msgid "bss-plt forced due to %pB"
+msgstr "se fuerza bss-plt debido a %pB"
 
-#: elf32-ppc.c:4997
-msgid "%P: bss-plt forced due to %B\n"
-msgstr "%P: se fuerza bss-plt debido a %B\n"
+#: elf32-ppc.c:4030
+msgid "bss-plt forced by profiling"
+msgstr "se fuerza bss-plt por creaciÃ³n de perfiles"
 
-#: elf32-ppc.c:5000
-msgid "%P: bss-plt forced by profiling\n"
-msgstr "%P: se fuerza bss-plt por anÃ¡lisis de perfil\n"
+#: elf32-ppc.c:4608 elf64-ppc.c:8497
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr "%H: aviso: %s inesperado ins %#x.\n"
 
 #. 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:5322 elf64-ppc.c:8654
+#: elf32-ppc.c:4638 elf64-ppc.c:8562
 #, c-format
 msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
 msgstr "%H el argumento perdiÃ³ __tls_get_addr, se desactiva la optimizaciÃ³n TLS\n"
 
-#: elf32-ppc.c:6264 elf32-sh.c:3392 elf32-tilepro.c:2331 elfxx-sparc.c:2556
-#: elfxx-tilegx.c:2567
-msgid "%B: dynamic relocation in read-only section `%A'\n"
-msgstr "%B: ubicaciÃ³n dinÃ¡mica en secciÃ³n de sÃ³lo lectura `%A'\n"
+#: elf32-ppc.c:5565 elf32-sh.c:3019 elf32-tilepro.c:2248 elfxx-sparc.c:2454
+#: elfxx-tilegx.c:2494
+#, c-format
+msgid "%pB: dynamic relocation in read-only section `%pA'\n"
+msgstr "%pB: reubicaciÃ³n dinÃ¡mica en la secciÃ³n de sÃ³lo lectura Â«%pAÂ»\n"
+
+#: elf32-ppc.c:6511
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr "%pB: Ajustando rama en 0x%V hacia Â«%sÂ» en la secciÃ³n %s\n"
+
+#: elf32-ppc.c:7464
+msgid "%P: %H: error: %s with unexpected instruction %x\n"
+msgstr "%P: %H: error: %s con instrucciÃ³n inesperada %x\n"
 
-#: elf32-ppc.c:8100
+#: elf32-ppc.c:7502
 msgid "%H: fixup branch overflow\n"
-msgstr "%H: reparar desbordamiento superior de rama \n"
+msgstr "%H: desbordamiento de ajuste de rama\n"
 
-#: elf32-ppc.c:8140 elf32-ppc.c:8175
+#: elf32-ppc.c:7542 elf32-ppc.c:7580
 #, c-format
-msgid "%B(%A+%#Lx): error: %s with unexpected instruction %#x"
-msgstr "%B(%A+%#Lx): error: %s con instrucciÃ³n no esperada %#x"
+msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
+msgstr "%pB(%pA+%#<PRIx64>): error: %s con instrucciÃ³n inesperada %#x"
 
-#: elf32-ppc.c:8231
+#: elf32-ppc.c:7644
 #, c-format
 msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
-msgstr "%X%H: bss-plt no soportado -fPIC ifunc %s\n"
+msgstr "%X%H: bss-plt -fPIC ifunc %s no admitido\n"
 
-#: elf32-ppc.c:8294 elf64-ppc.c:15070
-msgid "%H: warning: %s unexpected insn %#x.\n"
-msgstr "%H: aviso: %s inesperado ins %#x.\n"
-
-#: elf32-ppc.c:8319
+#: elf32-ppc.c:7680
 #, c-format
-msgid "%P: %B: unknown relocation type %d for symbol %s\n"
-msgstr "%P: %B: tipo de reubicaciÃ³n %d desconocida para el sÃ­mbolo %s\n"
+msgid "%pB: reloc %#x unsupported"
+msgstr "%pB: reubicaciÃ³n %#x no admitida"
 
-#: elf32-ppc.c:8606
+#: elf32-ppc.c:7963
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
-msgstr "%H: adiciÃ³n distinta de cero en reubicaciÃ³n %s contra Â«%sÂ»\n"
+msgstr "%H: sumando distinto de cero en la reubicaciÃ³n %s contra Â«%sÂ»\n"
 
 #. @local on an ifunc does not really make sense since
 #. the ifunc resolver can take you anywhere.  More
@@ -3185,797 +3336,780 @@ msgstr "%H: adiciÃ³n distinta de cero en
 #. 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:8638
+#: elf32-ppc.c:7995
 #, c-format
 msgid "%X%H: @local call to ifunc %s\n"
 msgstr "%X%H: llamada @local a ifunc %s\n"
 
-#: elf32-ppc.c:8808
+#: elf32-ppc.c:8173
 #, c-format
 msgid "%H: relocation %s for indirect function %s unsupported\n"
 msgstr "%H: reubicaciÃ³n %s para funciÃ³n indirecta %s no admitida\n"
 
-#: elf32-ppc.c:9077 elf32-ppc.c:9108 elf32-ppc.c:9199
-#, c-format
-msgid "%P: %B: the target (%s) of a %s relocation is in the wrong output section (%s)\n"
-msgstr "%P: %B: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n de salida errÃ³nea (%s)\n"
-
-#: elf32-ppc.c:9287
+#: elf32-ppc.c:8511 elf32-ppc.c:8542 elf32-ppc.c:8645 elf32-ppc.c:8745
 #, c-format
-msgid "%B: the target (%s) of a %s relocation is in the wrong output section (%s)"
-msgstr "%B: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n de salida equivocada (%s)"
+msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
+msgstr "%pB: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n de salida incorrecta (%s)"
 
-#: elf32-ppc.c:9395
-#, c-format
-msgid "%P: %B: relocation %s is not yet supported for symbol %s\n"
-msgstr "%P: %B: la reubicaciÃ³n %s aÃºn no se admite para el sÃ­mbolo %s\n"
+#: elf32-ppc.c:8923 elf32-ppc.c:8944
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr "%X%P: %H: la reubicaciÃ³n de %s no se admite para bss-plt\n"
 
-#: elf32-ppc.c:9480
+#: elf32-ppc.c:9026
 #, c-format
 msgid "%H: error: %s against `%s' not a multiple of %u\n"
-msgstr "%H: error: %s frente a Â«%sÂ» no un mÃºltiplo de %u\n"
+msgstr "%H: error: %s contra Â«%sÂ» no es un mÃºltiplo de %u\n"
 
-#: elf32-ppc.c:9509
+#: elf32-ppc.c:9055
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
-msgstr "%H: reubicaciÃ³n %s irresoluble frente a sÃ­mbolo `%s'\n"
+msgstr "%H: reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»\n"
 
-#: elf32-ppc.c:9590
+#: elf32-ppc.c:9137
 #, c-format
 msgid "%H: %s reloc against `%s': error %d\n"
 msgstr "%H: reubicaciÃ³n contra Â«%sÂ»: error %d\n"
 
-#: elf32-ppc.c:10354 elf64-ppc.c:15601
+#: elf32-ppc.c:10019
 msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
-msgstr "%X%P: reubicaciones textuales y funciones indirectas GNU resultarÃ¡n dentro de un fallo de segmento en tiempo de ejecuciÃ³n\n"
+msgstr "%X%P: las reubicaciones de texto y funciones indirectas GNU producirÃ¡n un fallo de segmento en tiempo de ejecuciÃ³n\n"
 
-#: elf32-ppc.c:10358 elf64-ppc.c:15605
+#: elf32-ppc.c:10023 elf64-ppc.c:18302
 msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
-msgstr "%P: aviso:reubicaciones textuales y funciones indirectas GNU quizÃ¡ resulten dentro de un fallo segmental en tiempo de ejecuciÃ³n\n"
+msgstr "%P: aviso: las reubicaciones de texto y funciones indirectas GNU pueden producir un fallo de segmento en tiempo de ejecuciÃ³n\n"
 
-#: elf32-ppc.c:10403
+#: elf32-ppc.c:10068
 #, c-format
-msgid "%P: %s not defined in linker created %s\n"
-msgstr "%P: no se definiÃ³ %s en el %s creado por el enlazador\n"
+msgid "%s not defined in linker created %pA"
+msgstr "no se definiÃ³ %s en el enlazador creado %pA"
 
-#: elf32-rl78.c:292
+#: elf32-pru.c:582 elf32-pru.c:1477
 #, c-format
-msgid "%B: invalid RL78 reloc number: %d"
-msgstr "%B: nÃºmero reubicante RL78 no vÃ¡lido: %d"
+msgid "error: %pB: old incompatible object file detected"
+msgstr "error: %pB: se detectÃ³ un fichero objeto antiguo incompatible"
 
-#: elf32-rl78.c:370
-msgid "Internal Error: RL78 reloc stack overflow"
-msgstr "Error Interno: RL78 reubica desbordamiento superior de pila"
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
+msgstr "Desbordamiento/subdesbordamiento de la pila de reubicaciÃ³n RL78"
 
-#: elf32-rl78.c:381
-msgid "Internal Error: RL78 reloc stack underflow"
-msgstr "Error Interno: RL78 reubica desbordamiento inferior de pila"
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
+msgstr "la reubicaciÃ³n RL78 divide por cero"
 
-#: elf32-rl78.c:1050
-msgid "Warning: RL78_SYM reloc with an unknown symbol"
-msgstr "Aviso: reubicaciÃ³n RL78_SYM con un sÃ­mbolo desconocido"
+#: elf32-rl78.c:1069
+msgid "warning: RL78_SYM reloc with an unknown symbol"
+msgstr "aviso: reubicaciÃ³n RL78_SYM con un sÃ­mbolo desconocido"
 
-#: elf32-rl78.c:1081 elf32-rx.c:1435
-#, c-format
-msgid "%B(%A): error: call to undefined function '%s'"
-msgstr "%B(%A): error: llamada a la funciÃ³n sin definir Â«%sÂ»"
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr "%H: %s fuera de rango\n"
+
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
+msgstr "%H: no se admite el tipo de reubicaciÃ³n %u\n"
 
-#: elf32-rl78.c:1202
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr "%H: la reubicaciÃ³n %s devuelve un valor no reconocido %x\n"
+
+#: elf32-rl78.c:1220
 #, c-format
-msgid "RL78 ABI conflict: G10 file %B cannot be linked with %s file %B"
-msgstr "Conflicto ABI RL78: fichero G10 %B no puede ser enlazado con fichero %s %B"
+msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
+msgstr "Conflicto ABI RL78: el fichero G10 %pB no se puede enlazar con el fichero %s %pB"
 
-#: elf32-rl78.c:1219
+#: elf32-rl78.c:1237
 #, c-format
-msgid "RL78 ABI conflict: cannot link %s file %B with %s file %B"
-msgstr "Conflicto ABI RL78: no puede enlazar fichero %s %B con fichero %s %B"
+msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
+msgstr "Conflicto ABI RL78: no se puede enlazar el fichero %s %pB con el fichero %s %pB"
 
-#: elf32-rl78.c:1228
+#: elf32-rl78.c:1246
 msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
-msgstr "Conflicto de reenlace RL78: no puede enlazar objetos 32-bit y 64-bit juntos"
+msgstr "Conflicto de uniÃ³n de RL78: no pueden enlazar objetos de 32 bits y 64 bits juntos"
 
-#: elf32-rl78.c:1232 elf32-rl78.c:1236
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
 #, c-format
-msgid "- %B is 64-bit, %B is not"
-msgstr "- %B es 64-bit, %B no lo es"
+msgid "- %pB is 64-bit, %pB is not"
+msgstr "- %pB es de 64 bits, %pB no lo es"
 
-#: elf32-rl78.c:1263
+#: elf32-rl78.c:1281
 #, c-format
 msgid " [64-bit doubles]"
-msgstr " [dobles de 64-bit]"
+msgstr " [dobles de 64 bits]"
 
-#: elf32-rx.c:314
+#: elf32-rx.c:618
 #, c-format
-msgid "%B: invalid RX reloc number: %d"
-msgstr "%B: nÃºmero reubicante RX no vÃ¡lido: %d"
+msgid "%pB:%pA: table entry %s outside table"
+msgstr "%pB:%pA: entrada de tabla %s fuera de la tabla"
 
-#: elf32-rx.c:595
+#: elf32-rx.c:625
 #, c-format
-msgid "%B:%A: table entry %s outside table"
-msgstr "%B:%A: entrada de mesa %s fuera de mesa"
+msgid "%pB:%pA: table entry %s not word-aligned within table"
+msgstr "%pB:%pA: la entrada %s de la tabla no estÃ¡ alineada a palabras dentro de la tabla"
 
-#: elf32-rx.c:602
+#: elf32-rx.c:700
 #, c-format
-msgid "%B:%A: table entry %s not word-aligned within table"
-msgstr "%B:%A: entrada de tabla %s no alineada por palabra dentro de tabla"
-
-#: elf32-rx.c:668
-#, c-format
-msgid "%B:%A: Warning: deprecated Red Hat reloc "
-msgstr "%B:%A: Aviso: reubicaciÃ³n Red Hat obsoleta "
+msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
+msgstr "%pB:%pA: aviso: se ha detectado una reubicaciÃ³n Red Hat obsoleta %s contra: %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:687
+#: elf32-rx.c:720
 #, c-format
-msgid "%B(%A): unsafe PID relocation %s at %#Lx (against %s in %s)"
-msgstr "%B(%A): PID de reubicaciÃ³n %s no segura en %#Lx (frente a %s en %s)"
+msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
+msgstr "%pB(%pA): reubicaciÃ³n de PID %s insegura en %#<PRIx64> (contra %s en %s)"
 
-#: elf32-rx.c:1267
-msgid "Warning: RX_SYM reloc with an unknown symbol"
-msgstr "Aviso: reubicaciÃ³n RX_SYM con un sÃ­mbolo desconocido"
+#: elf32-rx.c:1304
+msgid "warning: RX_SYM reloc with an unknown symbol"
+msgstr "aviso: reubicaciÃ³n RX_SYM con un sÃ­mbolo desconocido"
 
-#: elf32-rx.c:3146
-msgid "There is a conflict merging the ELF header flags from %B"
-msgstr "Hay un conflicto uniendo las marcas de cabecera ELF desde %B"
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr "%pB(%pA): error: llamada a una funciÃ³n sin definir Â«%sÂ»"
 
-#: elf32-rx.c:3149
+#: elf32-rx.c:3185
+#, c-format
+msgid "there is a conflict merging the ELF header flags from %pB"
+msgstr "hay un conflicto combinando las marcas de cabecera ELF desde %pB"
+
+#: elf32-rx.c:3188
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr "  las marcas de entrada de fichero: %s"
 
-#: elf32-rx.c:3151
+#: elf32-rx.c:3190
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  las marcas de salida de fichero: %s"
 
-#: elf32-rx.c:3758
+#: elf32-rx.c:3797
 #, c-format
-msgid "%B:%A: table %s missing corresponding %s"
-msgstr "%B:%A: segmento %s requiere correspondiente ausente %d"
+msgid "%pB:%pA: table %s missing corresponding %s"
+msgstr "%pB:%pA: a la tabla %s le falta el %s correspondiente"
 
-#: elf32-rx.c:3766
+#: elf32-rx.c:3805
 #, c-format
-msgid "%B:%A: %s and %s must be in the same input section"
-msgstr "%B:%A: %s y %s debe estar en la misma secciÃ³n de entrada"
+msgid "%pB:%pA: %s and %s must be in the same input section"
+msgstr "%pB:%pA: %s y %s deben estar en la misma secciÃ³n de entrada"
 
-#: elf32-s390.c:2137 elf64-s390.c:2075
+#: elf32-s390.c:2009 elf64-s390.c:1976
 #, c-format
-msgid "%B(%A+%#Lx): invalid instruction for TLS relocation %s"
-msgstr "%B(%A+%#Lx): instrucciÃ³n invÃ¡lida para reubicaciÃ³n TLS %s"
+msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n no vÃ¡lida para la reubicaciÃ³n TLS %s"
 
-#: elf32-score.c:1521 elf32-score7.c:1382 elfxx-mips.c:3756
+#: elf32-score.c:1515 elf32-score7.c:1378 elfxx-mips.c:3875
 msgid "not enough GOT space for local GOT entries"
 msgstr "no hay suficiente espacio GOT para entradas GOT locales"
 
-#: elf32-score.c:2744
-msgid "address not word align"
-msgstr "la direcciÃ³n no estÃ¡ alineada a word"
+#: elf32-score.c:2747
+msgid "address not word aligned"
+msgstr "la direcciÃ³n no estÃ¡ alineada a palabra"
 
-#: elf32-score.c:2825 elf32-score7.c:2630
+#: elf32-score.c:2828 elf32-score7.c:2635
 #, c-format
-msgid "%B: Malformed reloc detected for section %A"
-msgstr "%B: detectada reubicaciÃ³n malformada para secciÃ³n %A"
+msgid "%pB: malformed reloc detected for section %pA"
+msgstr "%pB: detectada reubicaciÃ³n mal formada para la secciÃ³n %pA"
 
-#: elf32-score.c:2879 elf32-score7.c:2684
+#: elf32-score.c:2882 elf32-score7.c:2689
 #, c-format
-msgid "%B: CALL15 reloc at %#Lx not against global symbol"
-msgstr "%B: reubicaciÃ³n CALL15 en %Lx no contra sÃ­mbolo global"
+msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
+msgstr "%pB: la reubicaciÃ³n CALL15 en %#<PRIx64> no es contra un sÃ­mbolo global"
 
-#: elf32-score.c:4001 elf32-score7.c:3806
+#: elf32-score.c:3990 elf32-score7.c:3797
 #, c-format
 msgid " [pic]"
 msgstr " [pic]"
 
-#: elf32-score.c:4005 elf32-score7.c:3810
+#: elf32-score.c:3994 elf32-score7.c:3801
 #, c-format
 msgid " [fix dep]"
 msgstr " [fix dep]"
 
-#: elf32-score.c:4048 elf32-score7.c:3853
-msgid "%B: warning: linking PIC files with non-PIC files"
-msgstr "%B: aviso: se enlazan ficheros PIC con ficheros que no son PIC"
-
-#: elf32-sh-symbian.c:130
+#: elf32-score.c:4041 elf32-score7.c:3848
 #, c-format
-msgid "%B: IMPORT AS directive for %s conceals previous IMPORT AS"
-msgstr "%B: directiva IMPORT AS para %s concilia un IMPORT AS previo"
+msgid "%pB: warning: linking PIC files with non-PIC files"
+msgstr "%pB: aviso: se enlazan ficheros PIC con ficheros que no son PIC"
 
-#: elf32-sh-symbian.c:384
+#: elf32-sh.c:533
 #, c-format
-msgid "%B: Unrecognised .directive command: %s"
-msgstr "%B: No se reconoce la orden .directive: %s"
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
+msgstr "%pB: %#<PRIx64>: aviso: R_SH_USES apunta al insn 0x%x no reconocido"
 
-#: elf32-sh-symbian.c:502
+#: elf32-sh.c:3754
 #, c-format
-msgid "%B: Failed to add renamed symbol %s"
-msgstr "%B: fallaba al aÃ±adir el sÃ­mbolo renombrado %s"
+msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
+msgstr "%pB: %#<PRIx64>: fatal: objetivo de rama desalineado para reubicaciÃ³n que admite relajaciÃ³n"
 
-#: elf32-sh.c:491
+#: elf32-sh.c:3784 elf32-sh.c:3800
 #, c-format
-msgid "%B: unrecognised SH reloc number: %d"
-msgstr "%B: nÃºmero reubicante SH no reconocido: %d"
+msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
+msgstr "%pB: %#<PRIx64>: fatal: reubicaciÃ³n %s no alineada %#<PRIx64>"
 
-#: elf32-sh.c:592
+#: elf32-sh.c:3816
 #, c-format
-msgid "%B: %#Lx: warning: R_SH_USES points to unrecognized insn 0x%x"
-msgstr "%B: %#Lx: aviso: R_SH_USES apunta al insn 0x%x no reconocido"
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
+msgstr "%pB: %#<PRIx64>: fatal: la reubicaciÃ³n R_SH_PSHA %<PRId64> no estÃ¡ en el rango -32..32"
 
-#: elf32-sh.c:3947 elf64-sh64.c:1508
-msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr "No se manipula un STO_SH5_ISA32 inesperado en un sÃ­mbolo local"
-
-#: elf32-sh.c:4200
+#: elf32-sh.c:3832
 #, c-format
-msgid "%B: %#Lx: fatal: unaligned branch target for relax-support relocation"
-msgstr "%B: %#Lx: fatal: objetivo de ramificaciÃ³n sin alineaciÃ³n para la reubicaciÃ³n de soporte relajado"
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
+msgstr "%pB: %#<PRIx64>: fatal: la reubicaciÃ³n R_SH_PSHL %<PRId64> no estÃ¡ en el rango -32..32"
 
-#: elf32-sh.c:4234 elf32-sh.c:4250
+#: elf32-sh.c:3962 elf32-sh.c:4357
 #, c-format
-msgid "%B: %#Lx: fatal: unaligned %s relocation %#Lx"
-msgstr "%B: %#Lx: fatal: reubicaciÃ³n %s no alineada %#Lx"
+msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
+msgstr "%pB(%pA+%#<PRIx64>): no se puede emitir el ajuste para Â«%sÂ» en la secciÃ³n de sÃ³lo lectura"
 
-#: elf32-sh.c:4265
+#: elf32-sh.c:4460
 #, c-format
-msgid "%B: %#Lx: fatal: R_SH_PSHA relocation %Ld not in range -32..32"
-msgstr "%B: %#Lx: fatal: la reubicaciÃ³n R_SH_PSHA %Ld no estÃ¡ en el rango -32..32"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
+msgstr "%pB(%pA+%#<PRIx64>): reubicaciÃ³n %s contra un sÃ­mbolo externo Â«%sÂ»"
 
-#: elf32-sh.c:4280
+#: elf32-sh.c:4579
 #, c-format
-msgid "%B: %#Lx: fatal: R_SH_PSHL relocation %Ld not in range -32..32"
-msgstr "%B: %#Lx: fatal: la reubicaciÃ³n R_SH_PSHL %Ld no estÃ¡ en el rango -32..32"
+msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): el desplazamiento en la reubicaciÃ³n para la traducciÃ³n GD->LE es demasiado pequeÃ±o: %#<PRIx64>"
 
-#: elf32-sh.c:4426 elf32-sh.c:4899
+#. The backslash is to prevent bogus trigraph detection.
+#: elf32-sh.c:4597
 #, c-format
-msgid "%B(%A+%#Lx): cannot emit fixup to `%s' in read-only section"
-msgstr "%B(%A+%#Lx): no se pueden emitir composturas para Â«%sÂ» en la secciÃ³n de sÃ³lo lectura"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0xd4??)"
 
-#: elf32-sh.c:5001
+#: elf32-sh.c:4605
 #, c-format
-msgid "%B(%A+%#Lx): %s relocation against external symbol \"%s\""
-msgstr "%B(%A+%#Lx): %s reubicaciÃ³n frente a sÃ­mbolo externo Â«%sÂ»"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0xc7??)"
 
-#: elf32-sh.c:5465
+#: elf32-sh.c:4612
 #, c-format
-msgid "%X%C: relocation to \"%s\" references a different segment\n"
-msgstr "%X%C: la reubicaciÃ³n de Â«%sÂ» referencÃ­a un segmento diferente\n"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0xd1??)"
 
-#: elf32-sh.c:5472
+#: elf32-sh.c:4619
 #, c-format
-msgid "%C: warning: relocation to \"%s\" references a different segment\n"
-msgstr "%C: aviso: la reubicaciÃ³n de Â«%sÂ» referencÃ­a un segmento diferente\n"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0x310c)"
 
-#: elf32-sh.c:6046 elf32-sh.c:6132
+#: elf32-sh.c:4626
 #, c-format
-msgid "%B: `%s' accessed both as normal and FDPIC symbol"
-msgstr "%B: se accediÃ³ Â«%sÂ» como un sÃ­mbolo normal y un sÃ­mbolo FDPIC"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0x410b)"
 
-#: elf32-sh.c:6052 elf32-sh.c:6137
+#: elf32-sh.c:4633
 #, c-format
-msgid "%B: `%s' accessed both as FDPIC and thread local symbol"
-msgstr "%B: se accediÃ³ Â«%sÂ» como un sÃ­mbolo FDPIC y un sÃ­mbolo local de hilo"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0x34cc)"
 
-#: elf32-sh.c:6083
-msgid "%B: Function descriptor relocation with non-zero addend"
-msgstr "%B: reubicaciÃ³n de descriptor de funciÃ³n con adiciÃ³n que no es cero"
+#: elf32-sh.c:4668
+#, c-format
+msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): el desplazamiento en la reubicaciÃ³n para la traducciÃ³n IE->LE es demasiado pequeÃ±o: %#<PRIx64>"
 
-#: elf32-sh.c:6321 elf64-alpha.c:4688
+#: elf32-sh.c:4686
 #, c-format
-msgid "%B: TLS local exec code cannot be linked into shared objects"
-msgstr "%B: cÃ³digo local ejecutable TLS no se puede ser enlazado dentro de objetos compartidos"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0xd0??: mov.l)"
 
-#: elf32-sh.c:6436
+#: elf32-sh.c:4695
 #, c-format
-msgid "%B: uses %s instructions while previous modules use %s instructions"
-msgstr "%B: emplea %s instrucciones mientras que mÃ³dulos anteriores emplean %s instrucciones"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0x0?12: stc)"
 
-#: elf32-sh.c:6448
+#: elf32-sh.c:4702
 #, c-format
-msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
-msgstr "error interno: combinaciÃ³n de arquitectura Â«%sÂ» con arquitectura Â«%sÂ» produjo una arquitectura desconocida"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucciÃ³n %#04X inesperada (se esperaba 0x0?ce: mov.l)"
 
-#: elf32-sh.c:6485
-msgid "%B: uses instructions which are incompatible with instructions used in previous modules"
-msgstr "%B: utiliza instrucciones las cuales son incompatibles con instrucciones utilizadas en mÃ³dulos previos"
+#: elf32-sh.c:4817
+#, c-format
+msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): el desplazamiento en la reubicaciÃ³n para la traducciÃ³n GD->IE es demasiado pequeÃ±o: %#<PRIx64>"
 
-#: elf32-sh.c:6498
-msgid "%B: attempt to mix FDPIC and non-FDPIC objects"
-msgstr "%B: intenta mezclar objetos FDPIC y no-FDPIC"
+#: elf32-sh.c:4885
+#, c-format
+msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): el desplazamiento en la reubicaciÃ³n para la traducciÃ³n LD->LE es demasiado pequeÃ±o: %#<PRIx64>"
 
-#: elf32-sh64.c:225 elf64-sh64.c:2277
+#: elf32-sh.c:5013
 #, c-format
-msgid "%B: compiled as 32-bit object and %B is 64-bit"
-msgstr "%B: compilado como objeto de 32-bit y %B es de 64-bit"
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
+msgstr "%X%H: la reubicaciÃ³n a Â«%sÂ» hace referencia a un segmento diferente\n"
 
-#: elf32-sh64.c:229 elf64-sh64.c:2281
+#: elf32-sh.c:5020
 #, c-format
-msgid "%B: compiled as 64-bit object and %B is 32-bit"
-msgstr "%B: compilado como objeto de 64-bit y %B es de 32-bit"
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
+msgstr "%H: aviso: la reubicaciÃ³n a Â«%sÂ» referencia un segmento diferente\n"
 
-#: elf32-sh64.c:232 elf64-sh64.c:2284
+#: elf32-sh.c:5488 elf32-sh.c:5570
 #, c-format
-msgid "%B: object size does not match that of target %B"
-msgstr "%B: tamaÃ±o del objeto no coincide con el tamaÃ±o objetivo %B"
+msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
+msgstr "%pB: Â«%sÂ» accediÃ³ como un sÃ­mbolo normal y como un sÃ­mbolo FDPIC"
 
-#: elf32-sh64.c:455 elf64-sh64.c:2772
-msgid "%B: encountered datalabel symbol in input"
-msgstr "%B: se encontrÃ³ un sÃ­mbolo etiqueta de datos dentro de la entrada"
+#: elf32-sh.c:5494 elf32-sh.c:5575
+#, c-format
+msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
+msgstr "%pB: Â«%sÂ» accediÃ³ como un sÃ­mbolo FDPIC y como un sÃ­mbolo local de hilo"
 
-#: elf32-sh64.c:531
-msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
-msgstr "No coincide PTB: una direcciÃ³n SHmedia (bit 0 == 1)"
+#: elf32-sh.c:5525
+#, c-format
+msgid "%pB: Function descriptor relocation with non-zero addend"
+msgstr "%pB: reubicaciÃ³n de descriptor de funciÃ³n con sumando distinto de cero"
 
-#: elf32-sh64.c:534
-msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
-msgstr "No coincide PTA: una direcciÃ³n SHcompact (bit 0 == 0)"
+#: elf32-sh.c:5732 elf64-alpha.c:4646
+#, c-format
+msgid "%pB: TLS local exec code cannot be linked into shared objects"
+msgstr "%pB: el cÃ³digo local ejecutable TLS no se puede enlazar en objetos compartidos"
 
-#: elf32-sh64.c:550
-msgid "%B: GAS error: unexpected PTB insn with R_SH_PT_16"
-msgstr "%B: error de GAS: insn PTB inesperada con R_SH_PT_16"
+#: elf32-sh.c:5847
+#, c-format
+msgid "%pB: uses %s instructions while previous modules use %s instructions"
+msgstr "%pB: usa %s instrucciones mientras que mÃ³dulos anteriores usan %s instrucciones"
 
-#: elf32-sh64.c:600
+#: elf32-sh.c:5859
 #, c-format
-msgid "%B: error: unaligned relocation type %d at %#Lx reloc %#Lx"
-msgstr "%B: error: tipo de reubicaciÃ³n %d sin alinear en %#Lx reubicaciÃ³n %#Lx"
+msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
+msgstr "error interno: la combinaciÃ³n de la arquitectura Â«%sÂ» con la arquitectura Â«%sÂ» produjo una arquitectura desconocida"
 
-#: elf32-sh64.c:676
-msgid "%B: could not write out added .cranges entries"
-msgstr "%B: no pudo escribir fuera entradas .cranges aÃ±adidas"
+#: elf32-sh.c:5900
+#, c-format
+msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
+msgstr "%pB: usa instrucciones que son incompatibles con instrucciones usadas en mÃ³dulos anteriores"
 
-#: elf32-sh64.c:735
-msgid "%B: could not write out sorted .cranges entries"
-msgstr "%B: no pudo escribir fuera entradas .cranges ordenadas"
+#: elf32-sh.c:5913
+#, c-format
+msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
+msgstr "%pB: intento de mezclar objetos FDPIC y no FDPIC"
 
 #: elf32-sparc.c:89
-msgid "%B: compiled for a 64 bit system and target is 32 bit"
-msgstr "%B: compilado para un sistema de 64 bit y el objetivo es de 32 bit"
+#, c-format
+msgid "%pB: compiled for a 64 bit system and target is 32 bit"
+msgstr "%pB: compilado para un sistema de 64 bits y el objetivo es de 32 bits"
 
 #: elf32-sparc.c:102
-msgid "%B: linking little endian files with big endian files"
-msgstr "%B: se enlazan ficheros little endian con ficheros big endian"
+#, c-format
+msgid "%pB: linking little endian files with big endian files"
+msgstr "%pB: se enlazan ficheros little endian con ficheros big endian"
 
-#: elf32-spu.c:160
+#: elf32-sparc.c:157
 #, c-format
-msgid "%B: unrecognised SPU reloc number: %d"
-msgstr "%B: nÃºmero reubicante SPU no reconocido: %d"
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr "%pB: valor de mÃ¡quina sparc no manejado Â«%luÂ» detectado durante el procesamiento de escritura"
 
-#: elf32-spu.c:726
-msgid "%X%P: overlay section %A does not start on a cache line.\n"
-msgstr "%X%P: la secciÃ³n de sobrescritura %A no inicia en una lÃ­nea de cachÃ©.\n"
+#: elf32-spu.c:737
+msgid "%X%P: overlay section %pA does not start on a cache line\n"
+msgstr "%X%P: la secciÃ³n de superposiciÃ³n %pA no inicia en una lÃ­nea de cachÃ©\n"
 
-#: elf32-spu.c:734
-msgid "%X%P: overlay section %A is larger than a cache line.\n"
-msgstr "%X%P: la secciÃ³n de sobreescritura %A es mÃ¡s grande que una lÃ­nea de cachÃ©.\n"
+#: elf32-spu.c:745
+msgid "%X%P: overlay section %pA is larger than a cache line\n"
+msgstr "%X%P: la secciÃ³n de superposiciÃ³n %pA es mÃ¡s grande que una lÃ­nea de cachÃ©\n"
 
-#: elf32-spu.c:754
-msgid "%X%P: overlay section %A is not in cache area.\n"
-msgstr "%X%P: la secciÃ³n de sobreescritura %A no estÃ¡ en el Ã¡rea de cachÃ©.\n"
+#: elf32-spu.c:765
+msgid "%X%P: overlay section %pA is not in cache area\n"
+msgstr "%X%P: la secciÃ³n de superposiciÃ³n %pA no estÃ¡ en el Ã¡rea de cachÃ©\n"
 
-#: elf32-spu.c:795
+#: elf32-spu.c:806
 #, c-format
-msgid "%X%P: overlay sections %A and %A do not start at the same address.\n"
-msgstr "%X%P: las secciones de sobreescritura %A y %A no inician en la misma direcciÃ³n.\n"
+msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
+msgstr "%X%P: las secciones de superposiciÃ³n %pA y %pA no inician en la misma direcciÃ³n\n"
 
-#: elf32-spu.c:1021
+#: elf32-spu.c:1032
 #, c-format
-msgid "warning: call to non-function symbol %s defined in %B"
-msgstr "aviso: se llama al sÃ­mbolo %s que no es funciÃ³n, definido en %B"
+msgid "warning: call to non-function symbol %s defined in %pB"
+msgstr "aviso: llamada al sÃ­mbolo %s que no es funciÃ³n, definido en %pB"
 
-#: elf32-spu.c:1371
+#: elf32-spu.c:1382
 #, c-format
-msgid "%A:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
-msgstr "%A:0x%v lrlive .brinfo (%u) difiere del anÃ¡lisis (%u)\n"
+msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
+msgstr "%pA:0x%v lrlive .brinfo (%u) difiere del anÃ¡lisis (%u)\n"
 
-#: elf32-spu.c:1903
+#: elf32-spu.c:1912
 #, c-format
-msgid "%B is not allowed to define %s"
-msgstr "%B no estÃ¡ permitido definir %s"
+msgid "%pB is not allowed to define %s"
+msgstr "%pB no tiene permitido definir %s"
 
-#: elf32-spu.c:1911
+#: elf32-spu.c:1920
 #, c-format
 msgid "you are not allowed to define %s in a script"
-msgstr "no se le permite definir %s en un guiÃ³n"
+msgstr "no se le permite definir %s en un script"
 
-#: elf32-spu.c:1945
+#: elf32-spu.c:1954
 #, c-format
 msgid "%s in overlay section"
-msgstr "%s en la secciÃ³n de sobreescritura"
+msgstr "%s en la secciÃ³n de superposiciÃ³n"
 
-#: elf32-spu.c:1974
+#: elf32-spu.c:1983
 msgid "overlay stub relocation overflow"
-msgstr "desbordamiento de la reubicaciÃ³n de cabo de sobreescritura"
+msgstr "desbordamiento de la reubicaciÃ³n del stub de superposiciÃ³n"
 
-#: elf32-spu.c:1983
+#: elf32-spu.c:1992 elf64-ppc.c:15341
 msgid "stubs don't match calculated size"
-msgstr "los cabos no coinciden con el tamaÃ±o calculado"
+msgstr "los stubs no coinciden con el tamaÃ±o calculado"
 
-#: elf32-spu.c:2566
+#: elf32-spu.c:2575
 #, c-format
 msgid "warning: %s overlaps %s\n"
-msgstr "aviso: %s cubre %s\n"
+msgstr "aviso: %s se superpone a %s\n"
 
-#: elf32-spu.c:2582
+#: elf32-spu.c:2591
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr "aviso: %s excede el tamaÃ±o de la secciÃ³n\n"
 
-#: elf32-spu.c:2614
+#: elf32-spu.c:2623
 #, c-format
-msgid "%A:0x%v not found in function table\n"
-msgstr "%A:0x%v no se encuentra en el segmento de funciÃ³n\n"
+msgid "%pA:0x%v not found in function table\n"
+msgstr "%pA:0x%v no encontrado en la tabla de funciones\n"
 
-#: elf32-spu.c:2755
+#: elf32-spu.c:2764
 #, c-format
-msgid "%B(%A+0x%v): call to non-code section %B(%A), analysis incomplete\n"
-msgstr "%B(%A+0x%v): se llama a la secciÃ³n %B(%A) que no es de cÃ³digo, anÃ¡lisis incompleto\n"
+msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
+msgstr "%pB(%pA+0x%v): llamada a la secciÃ³n %pB(%pA) que no es de cÃ³digo, anÃ¡lisis incompleto\n"
 
-#: elf32-spu.c:3324
+#: elf32-spu.c:3330
 #, c-format
-msgid "Stack analysis will ignore the call from %s to %s\n"
-msgstr "Pila analizada descartarÃ¡ la llamada de %s a %s\n"
+msgid "stack analysis will ignore the call from %s to %s\n"
+msgstr "el anÃ¡lisis de pila ignorarÃ¡ la llamada de %s a %s\n"
 
-#: elf32-spu.c:4021
+#: elf32-spu.c:4027
 msgid "  calls:\n"
 msgstr "  llamadas:\n"
 
-#: elf32-spu.c:4335
+#: elf32-spu.c:4342
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s duplicado en %s\n"
 
-#: elf32-spu.c:4339
+#: elf32-spu.c:4346
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s duplicado\n"
 
-#: elf32-spu.c:4346
+#: elf32-spu.c:4353
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
-msgstr "perdÃ³n, no se admiten ficheros objeto duplicados en el guiÃ³n de sobreescritura automÃ¡tica\n"
+msgstr "no se admiten ficheros objeto duplicados en el script de superposiciÃ³n automÃ¡tica\n"
 
-#: elf32-spu.c:4388
+#: elf32-spu.c:4395
 #, c-format
 msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
-msgstr "eltamaÃ±o 0x%v que no es de sobreescritura mas el tamaÃ±o de sobreescritura mÃ¡ximo de 0x%v excede el almacenamiento local\n"
+msgstr "el tamaÃ±o 0x%v que no es de superposiciÃ³n mÃ¡s el tamaÃ±o de superposiciÃ³n mÃ¡ximo de 0x%v excede el almacenamiento local\n"
 
-#: elf32-spu.c:4544
+#: elf32-spu.c:4551
 #, c-format
-msgid "%B:%A%s exceeds overlay size\n"
-msgstr "%B:%A%s excede el tamaÃ±o de sobreescritura\n"
+msgid "%pB:%pA%s exceeds overlay size\n"
+msgstr "%pB:%pA%s excede el tamaÃ±o de superposiciÃ³n\n"
 
-#: elf32-spu.c:4685
+#: elf32-spu.c:4692
 msgid "%F%P: auto overlay error: %E\n"
-msgstr "%F%P: error de sobrecarga automÃ¡tica: %E\n"
+msgstr "%F%P: error de superposiciÃ³n automÃ¡tica: %E\n"
 
-#: elf32-spu.c:4706
+#: elf32-spu.c:4713
 msgid "Stack size for call graph root nodes.\n"
-msgstr "Pila de tamaÃ±o para los nodos raÃ­z del grafo de llamadas.\n"
+msgstr "TamaÃ±o de pila para los nodos raÃ­z del grÃ¡fico de llamadas.\n"
 
-#: elf32-spu.c:4707
+#: elf32-spu.c:4714
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
 msgstr ""
 "\n"
-"TamaÃ±o de la pila para funciones.  Anotaciones: '*' pila mÃ¡x, 't' llamada cola\n"
+"TamaÃ±o de la pila para funciones.  Anotaciones: Â«*Â» pila mÃ¡x, Â«tÂ» llamada cola\n"
 
-#: elf32-spu.c:4717
+#: elf32-spu.c:4724
 msgid "Maximum stack required is 0x%v\n"
 msgstr "La pila mÃ¡xima requerida es 0x%v\n"
 
-#: elf32-spu.c:4736
+#: elf32-spu.c:4743
 msgid "%X%P: stack/lrlive analysis error: %E\n"
-msgstr "%X%P: pila/lrlive error de anÃ¡lisis: %E\n"
+msgstr "%X%P: error de anÃ¡lisis de pila/lrlive: %E\n"
 
-#: elf32-spu.c:4739
+#: elf32-spu.c:4746
 msgid "%F%P: can not build overlay stubs: %E\n"
-msgstr ""
-"%F%P: no se puede construir sobrecarga de cabos %E\n"
-"\n"
+msgstr "%F%P: no se pueden construir los stubs de superposiciÃ³n %E\n"
 
-#: elf32-spu.c:4808
+#: elf32-spu.c:4815
 msgid "fatal error while creating .fixup"
 msgstr "error fatal al crear .fixup"
 
-#: elf32-spu.c:5043
+#: elf32-spu.c:5051
 #, c-format
-msgid "%B(%s+%#Lx): unresolvable %s relocation against symbol `%s'"
-msgstr "%B(%s+%#Lx): reubicaciÃ³n %s irresoluble frente al sÃ­mbolo `%s'"
+msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr "%pB(%s+%#<PRIx64>): reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»"
 
-#: elf32-tic6x.c:1596
+#: elf32-tic6x.c:1588
 msgid "warning: generating a shared library containing non-PIC code"
-msgstr "aviso: se genera una biblioteca compartida que contiene cÃ³digo que no esPIC"
+msgstr "aviso: se genera una biblioteca compartida que contiene cÃ³digo que no es PIC"
 
-#: elf32-tic6x.c:1601
+#: elf32-tic6x.c:1593
 msgid "warning: generating a shared library containing non-PID code"
 msgstr "aviso: se genera una biblioteca compartida que contiene cÃ³digo que no es PID"
 
-#: elf32-tic6x.c:2460
-msgid "%B: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
-msgstr "%B: reubicaciÃ³n relativa a SB pero __c6xabi_DSBT_BASE no estÃ¡ definido"
-
-#: elf32-tic6x.c:3582
+#: elf32-tic6x.c:2434
 #, c-format
-msgid "%B: error: unknown mandatory EABI object attribute %d"
-msgstr "%B: error: atributo de objeto EABI obligatorio %d desconocido"
+msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
+msgstr "%pB: reubicaciÃ³n relativa a SB pero __c6xabi_DSBT_BASE no estÃ¡ definido"
 
-#: elf32-tic6x.c:3591
+#: elf32-tic6x.c:3498
 #, c-format
-msgid "%B: warning: unknown EABI object attribute %d"
-msgstr "%B: aviso: atributo de objeto EABI %d desconocido"
+msgid "%pB: error: unknown mandatory EABI object attribute %d"
+msgstr "%pB: error: atributo de objeto EABI obligatorio %d desconocido"
 
-#: elf32-tic6x.c:3705 elf32-tic6x.c:3714
+#: elf32-tic6x.c:3507
 #, c-format
-msgid "error: %B requires more stack alignment than %B preserves"
-msgstr "error: %B requiere mÃ¡s alineaciÃ³n de pila que la que %B preserva"
-
-#: elf32-tic6x.c:3724 elf32-tic6x.c:3733
-msgid "error: unknown Tag_ABI_array_object_alignment value in %B"
-msgstr "error: valor de Tag_ABI_array_object_alignment desconocido en %B"
+msgid "%pB: warning: unknown EABI object attribute %d"
+msgstr "%pB: aviso: atributo de objeto EABI %d desconocido"
 
-#: elf32-tic6x.c:3742 elf32-tic6x.c:3751
-msgid "error: unknown Tag_ABI_array_object_align_expected value in %B"
-msgstr "error: valor de Tag_ABI_array_object_align_expected desconocido en %B"
+#: elf32-tic6x.c:3625 elf32-tic6x.c:3634
+#, c-format
+msgid "error: %pB requires more stack alignment than %pB preserves"
+msgstr "error: %pB necesita mÃ¡s alineaciÃ³n de pila que la que %pB mantiene"
 
-#: elf32-tic6x.c:3760 elf32-tic6x.c:3768
+#: elf32-tic6x.c:3644 elf32-tic6x.c:3653
 #, c-format
-msgid "error: %B requires more array alignment than %B preserves"
-msgstr "error: %B requiere mÃ¡s alineaciÃ³n de matriz que la que %B preserva"
+msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
+msgstr "error: valor de Tag_ABI_array_object_alignment desconocido en %pB"
 
-#: elf32-tic6x.c:3791
+#: elf32-tic6x.c:3662 elf32-tic6x.c:3671
 #, c-format
-msgid "warning: %B and %B differ in wchar_t size"
-msgstr "aviso: %B y %B difieren en tamaÃ±o wchar_t"
+msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
+msgstr "error: valor de Tag_ABI_array_object_align_expected desconocido en %pB"
 
-#: elf32-tic6x.c:3810
+#: elf32-tic6x.c:3680 elf32-tic6x.c:3688
 #, c-format
-msgid "warning: %B and %B differ in whether code is compiled for DSBT"
-msgstr "aviso: %B y %B difieren en si el cÃ³digo estÃ¡ compilado para DSBT"
+msgid "error: %pB requires more array alignment than %pB preserves"
+msgstr "error: %pB necesita mÃ¡s alineaciÃ³n de matriz que la que %pB mantiene"
 
-#: elf32-tilepro.c:3752 elfxx-tilegx.c:4132 elfxx-x86.c:1336
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:9172
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:2492
+#: elf32-tic6x.c:3711
 #, c-format
-msgid "discarded output section: `%A'"
-msgstr "se descarta la secciÃ³n de salida: `%A'"
+msgid "warning: %pB and %pB differ in wchar_t size"
+msgstr "aviso: %pB y %pB difieren en el tamaÃ±o de wchar_t"
 
-#: elf32-v850.c:153
+#: elf32-tic6x.c:3730
 #, c-format
-msgid "Variable `%s' cannot occupy in multiple small data regions"
-msgstr "La variable Â«%sÂ» no puede ocupar mÃºltiples regiones de datos small"
+msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
+msgstr "aviso: %pB y %pB difieren en si el cÃ³digo estÃ¡ compilado para DSBT"
 
-#: elf32-v850.c:156
+#: elf32-tilepro.c:3627 elfxx-tilegx.c:4017 elfxx-x86.c:2729
+#: elfnn-aarch64.c:10030 elfnn-kvx.c:4636 elfnn-loongarch.c:5032
+#: elfnn-riscv.c:3481
 #, c-format
-msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions"
-msgstr "La variable Â«%sÂ» solamente puede estar en una de las regiones de datos small, zero, y tiny"
+msgid "discarded output section: `%pA'"
+msgstr "secciÃ³n de salida descartada: Â«%pAÂ»"
 
-#: elf32-v850.c:159
+#: elf32-v850.c:152
 #, c-format
-msgid "Variable `%s' cannot be in both small and zero data regions simultaneously"
-msgstr "La variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos small y zero"
+msgid "variable `%s' cannot occupy in multiple small data regions"
+msgstr "la variable Â«%sÂ» no puede ocupar mÃºltiples regiones de datos small"
 
-#: elf32-v850.c:162
+#: elf32-v850.c:155
 #, c-format
-msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously"
-msgstr "La variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos small y tiny"
+msgid "variable `%s' can only be in one of the small, zero, and tiny data regions"
+msgstr "la variable Â«%sÂ» sÃ³lo puede estar en una de las regiones de datos small, zero y tiny"
 
-#: elf32-v850.c:165
+#: elf32-v850.c:158
 #, c-format
-msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously"
-msgstr "La variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos zero y tiny"
+msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
+msgstr "la variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos small y zero"
 
-#: elf32-v850.c:463
-msgid "FAILED to find previous HI16 reloc"
-msgstr "FALLADO al encontrar reubicaciÃ³n HI16 previa"
+#: elf32-v850.c:161
+#, c-format
+msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
+msgstr "la variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos small y tiny"
 
-#: elf32-v850.c:1898 elf32-v850.c:1917
+#: elf32-v850.c:164
 #, c-format
-msgid "%B: invalid V850 reloc number: %d"
-msgstr "%B: nÃºmero reubicante V850 no vÃ¡lido: %d"
+msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
+msgstr "la variable Â«%sÂ» no puede estar simultÃ¡neamente en las regiones de datos zero y tiny"
 
-#: elf32-v850.c:2295
+#: elf32-v850.c:466
+msgid "failed to find previous HI16 reloc"
+msgstr "fallo al encontrar la reubicaciÃ³n HI16 anterior"
+
+#: elf32-v850.c:2306
 msgid "could not locate special linker symbol __gp"
-msgstr "no se puede localizar el sÃ­mbolo especial del enlazador __gp"
+msgstr "no se pudo ubicar el sÃ­mbolo especial del enlazador __gp"
 
-#: elf32-v850.c:2299
+#: elf32-v850.c:2310
 msgid "could not locate special linker symbol __ep"
-msgstr "no se puede localizar el sÃ­mbolo especial del enlazador __ep"
+msgstr "no se pudo ubicar el sÃ­mbolo especial del enlazador __ep"
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2314
 msgid "could not locate special linker symbol __ctbp"
-msgstr "no se puede localizar el sÃ­mbolo especial del enlazador __ctbp"
+msgstr "no se pudo ubicar el sÃ­mbolo especial del enlazador __ctbp"
 
-#: elf32-v850.c:2524
+#: elf32-v850.c:2535
 #, c-format
-msgid "error: %B needs 8-byte alignment but %B is set for 4-byte alignment"
-msgstr "error: %B necesita alineaciÃ³n de 8-byte pero %B estÃ¡ establecido para alineamiento de 4-byte"
+msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
+msgstr "error: %pB necesita alineaciÃ³n de 8 bytes pero %pB estÃ¡ establecido para alineaciÃ³n de 4 bytes"
 
-#: elf32-v850.c:2540
+#: elf32-v850.c:2551
 #, c-format
-msgid "error: %B uses 64-bit doubles but %B uses 32-bit doubles"
-msgstr "error: %B utiliza dobles de 64-bit pero %B utiliza dobles de 32-bit"
+msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
+msgstr "error: %pB usa doble de 64 bits pero %pB usa doble de 32 bits"
 
-#: elf32-v850.c:2555
+#: elf32-v850.c:2566
 #, c-format
-msgid "error: %B uses FPU-3.0 but %B only supports FPU-2.0"
-msgstr "error: %B utiliza FPU-3.0 pero %B solo es compatible con FPU-2.0"
+msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
+msgstr "error: %pB usa FPU-3.0 pero %pB sÃ³lo admite FPU-2.0"
 
-#: elf32-v850.c:2587
+#: elf32-v850.c:2598
 #, c-format
 msgid " alignment of 8-byte entities: "
-msgstr " alineaciÃ³n de entidades de 8-byte: "
+msgstr " alineaciÃ³n de entidades de 8 bytes: "
 
-#: elf32-v850.c:2590
+#: elf32-v850.c:2601
 #, c-format
 msgid "4-byte"
 msgstr "4-byte"
 
-#: elf32-v850.c:2591
+#: elf32-v850.c:2602
 #, c-format
 msgid "8-byte"
 msgstr "8-byte"
 
-#: elf32-v850.c:2592 elf32-v850.c:2604
+#: elf32-v850.c:2603 elf32-v850.c:2615
 #, c-format
 msgid "not set"
-msgstr "sin def"
+msgstr "sin establecer"
 
-#: elf32-v850.c:2593 elf32-v850.c:2605 elf32-v850.c:2617 elf32-v850.c:2628
-#: elf32-v850.c:2639 elf32-v850.c:2650
+#: elf32-v850.c:2604 elf32-v850.c:2616 elf32-v850.c:2628 elf32-v850.c:2639
+#: elf32-v850.c:2650 elf32-v850.c:2661
 #, c-format
 msgid "unknown: %x"
 msgstr "desconocido: %x"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2610
 #, c-format
 msgid " size of doubles: "
 msgstr " tamaÃ±o de dobles: "
 
-#: elf32-v850.c:2602
+#: elf32-v850.c:2613
 #, c-format
 msgid "4-bytes"
 msgstr "4-bytes"
 
-#: elf32-v850.c:2603
+#: elf32-v850.c:2614
 #, c-format
 msgid "8-bytes"
 msgstr "8-bytes"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2622
 #, c-format
 msgid " FPU support required: "
-msgstr " FPU soportado requerido: "
+msgstr " Se necesita soporte para FPU: "
 
-#: elf32-v850.c:2614
+#: elf32-v850.c:2625
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2615
+#: elf32-v850.c:2626
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2616
+#: elf32-v850.c:2627
 #, c-format
 msgid "none"
 msgstr "ninguno"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2634
 #, c-format
 msgid "SIMD use: "
-msgstr "Empleo SIMD: "
+msgstr "Uso de SIMD: "
 
-#: elf32-v850.c:2626 elf32-v850.c:2637 elf32-v850.c:2648
+#: elf32-v850.c:2637 elf32-v850.c:2648 elf32-v850.c:2659
 #, c-format
 msgid "yes"
 msgstr "sÃ­"
 
-#: elf32-v850.c:2627 elf32-v850.c:2638 elf32-v850.c:2649
+#: elf32-v850.c:2638 elf32-v850.c:2649 elf32-v850.c:2660
 #, c-format
 msgid "no"
 msgstr "no"
 
-#: elf32-v850.c:2634
+#: elf32-v850.c:2645
 #, c-format
 msgid "CACHE use: "
-msgstr "Empleo de cachÃ©: "
+msgstr "Uso de cachÃ©: "
 
-#: elf32-v850.c:2645
+#: elf32-v850.c:2656
 #, c-format
 msgid "MMU use: "
-msgstr "UtilizaciÃ³n de MMU: "
+msgstr "Uso de MMU: "
 
-#: elf32-v850.c:2812 elf32-v850.c:2868
-msgid "%B: Architecture mismatch with previous modules"
-msgstr "%B: No coincide la arquitectura con los mÃ³dulos previos"
+#: elf32-v850.c:2823 elf32-v850.c:2879
+#, c-format
+msgid "%pB: architecture mismatch with previous modules"
+msgstr "%pB: no coincide la arquitectura con los mÃ³dulos anteriores"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2886
+#: elf32-v850.c:2897
 #, c-format
 msgid "private flags = %lx: "
-msgstr "opciones privadas = %lx: "
+msgstr "marcas privadas = %lx: "
 
-#: elf32-v850.c:2891
+#: elf32-v850.c:2902
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "arquitectura v850 desconocida"
 
-#: elf32-v850.c:2893
+#: elf32-v850.c:2904
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "arquitectura v850 E3"
 
-#: elf32-v850.c:2895 elf32-v850.c:2902
+#: elf32-v850.c:2906 elf32-v850.c:2913
 #, c-format
 msgid "v850 architecture"
 msgstr "arquitectura v850"
 
-#: elf32-v850.c:2903
+#: elf32-v850.c:2914
 #, c-format
 msgid "v850e architecture"
 msgstr "arquitectura v850e"
 
-#: elf32-v850.c:2904
+#: elf32-v850.c:2915
 #, c-format
 msgid "v850e1 architecture"
 msgstr "arquitectura v850e1"
 
-#: elf32-v850.c:2905
+#: elf32-v850.c:2916
 #, c-format
 msgid "v850e2 architecture"
 msgstr "arquitectura v850e2"
 
-#: elf32-v850.c:2906
+#: elf32-v850.c:2917
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "arquitectura v850e2v3"
 
-#: elf32-v850.c:2907
+#: elf32-v850.c:2918
 #, c-format
 msgid "v850e3v5 architecture"
-msgstr "v850e3v5 como arquitectura"
-
-#: elf32-v850.c:3601
-#, c-format
-msgid "%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized insns"
-msgstr "%B: %#Lx: aviso: R_V850_LONGCALL apunta al insns no reconocido"
-
-#: elf32-v850.c:3611
-#, c-format
-msgid "%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized insn %#x"
-msgstr "%B: %#Lx: aviso: R_V850_LONGCALL apunta al insn %#x no reconocido"
-
-#: elf32-v850.c:3656
-#, c-format
-msgid "%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized reloc"
-msgstr "%B: %#Lx: aviso: R_V850_LONGCALL apunta al reloc no reconocido"
-
-#: elf32-v850.c:3696
-#, c-format
-msgid "%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized reloc %#Lx"
-msgstr "%B: %#Lx: aviso: R_V850_LONGCALL apunta a reubicaciÃ³n %#Lx no reconocido"
+msgstr "arquitectura v850e3v5"
 
-#: elf32-v850.c:3839
+#: elf32-v850.c:3592 elf32-v850.c:3831
 #, c-format
-msgid "%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized insns"
-msgstr "%B: %#Lx: aviso: R_V850_LONGJUMP apunta al insns no reconocido"
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
+msgstr "%pB: %#<PRIx64>: aviso: %s apunta a insns no reconocidos"
 
-#: elf32-v850.c:3849
+#: elf32-v850.c:3602 elf32-v850.c:3841
 #, c-format
-msgid "%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized insn %#x"
-msgstr "%B: %#Lx: aviso: R_V850_LONGJUMP apunta al insn %#x no reconocido"
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
+msgstr "%pB: %#<PRIx64>: aviso: %s apunta al insn %#x no reconocido"
 
-#: elf32-v850.c:3883
+#: elf32-v850.c:3648 elf32-v850.c:3876
 #, c-format
-msgid "%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized reloc"
-msgstr "%B: %#Lx: aviso: R_V850_LONGJUMP apunta al reloc no reconocido"
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
+msgstr "%pB: %#<PRIx64>: aviso: %s apunta a reubicaciÃ³n no reconocida"
 
-#: elf32-vax.c:290
+#: elf32-v850.c:3688
 #, c-format
-msgid "%B: unrecognised VAX reloc number: %d"
-msgstr "%B: nÃºmero reubicante VAX no reconocido: %d"
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
+msgstr "%pB: %#<PRIx64>: aviso: %s apunta a reubicaciÃ³n no reconocida %#<PRIx64>"
 
 #: elf32-vax.c:539
 #, c-format
@@ -3994,1795 +4128,2314 @@ msgstr " [flotante-g]"
 
 #: elf32-vax.c:631
 #, c-format
-msgid "%B: warning: GOT addend of %Ld to `%s' does not match previous GOT addend of %Ld"
-msgstr "%B: aviso: la adiciÃ³n GOT de %Ld a Â«%sÂ» no coincide con la adiciÃ³n previa GOT de %Ld"
+msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
+msgstr "%pB: aviso: el sumando GOT de %<PRId64> a Â«%sÂ» no coincide con la sumando GOT anterior de %<PRId64>"
 
-#: elf32-vax.c:1445
+#: elf32-vax.c:1388
 #, c-format
-msgid "%B: warning: PLT addend of %Ld to `%s' from %A section ignored"
-msgstr "%B: aviso: adiciÃ³n PLT de %Ld a Â«%sÂ» desde secciÃ³n %A ignorada"
+msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
+msgstr "%pB: aviso: se ha ignorado el sumando PLT de %<PRId64> a Â«%sÂ» desde la secciÃ³n %pA"
 
-#: elf32-vax.c:1570
+#: elf32-vax.c:1514
 #, c-format
-msgid "%B: warning: %s relocation against symbol `%s' from %A section"
-msgstr "%B: aviso: reubicaciÃ³n %s frente a sÃ­mbolo Â«%sÂ» desde secciÃ³n %A"
+msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
+msgstr "%pB: aviso: reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ» desde la secciÃ³n %pA"
 
-#: elf32-vax.c:1577
+#: elf32-vax.c:1521
 #, c-format
-msgid "%B: warning: %s relocation to %#Lx from %A section"
-msgstr "%B: aviso: reubicaciÃ³n %s a %#Lx desde secciÃ³n %A"
+msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
+msgstr "%pB: aviso: reubicaciÃ³n %s a %#<PRIx64> desde la secciÃ³n %pA"
 
-#: elf32-visium.c:481
+#: elf32-visium.c:824
 #, c-format
-msgid "%B: invalid Visium reloc number: %d"
-msgstr "%B: nÃºmero reubicante Visium no vÃ¡lido: %d"
+msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
+msgstr "%pB: %s compilado -mtune=%s y enlazado con mÃ³dulos compilados %s -mtune=%s"
 
-#: elf32-visium.c:817
-#, c-format
-msgid "%B: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
-msgstr "%B: %s compilado -mtune=%s y enlazado con mÃ³dulos compilados con %s -mtune=%s"
-
-#: elf32-xgate.c:428
-#, c-format
-msgid "%B: invalid XGate reloc number: %d"
-msgstr "%B: nÃºmero reubicante XGate no vÃ¡lido: %d"
-
-#: elf32-xgate.c:681
+#: elf32-xgate.c:506
 #, c-format
 msgid "cpu=XGATE]"
 msgstr "cpu=XGATE]"
 
-#: elf32-xgate.c:683
+#: elf32-xgate.c:508
 #, c-format
 msgid "error reading cpu type from elf private data"
-msgstr "error leyendo tipo de cpu desde datos privados elf"
+msgstr "error al leer el tipo de cpu desde datos privados elf"
 
-#: elf32-xstormy16.c:449 elf64-ia64-vms.c:2074 elf32-ia64.c:2337
-#: elf64-ia64.c:2337
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2077 elfnn-ia64.c:2346
 msgid "non-zero addend in @fptr reloc"
-msgstr "adiciÃ³n que no es cero en la reubicaciÃ³n @fptr"
+msgstr "sumando distinto de cero en la reubicaciÃ³n @fptr"
 
-#: elf32-xtensa.c:485
+#: elf32-xtensa.c:998
 #, c-format
-msgid "%B: invalid XTENSA reloc number: %d"
-msgstr "%B: nÃºmero reubicante XTENSA no vÃ¡lido: %d"
+msgid "%pB(%pA): invalid property table"
+msgstr "%pB(%pA): tabla de propiedades no vÃ¡lida"
 
-#: elf32-xtensa.c:926
+#: elf32-xtensa.c:2733
 #, c-format
-msgid "%B(%A): invalid property table"
-msgstr "%B(%A): segmento de propiedades invÃ¡lida"
+msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): desplazamiento de reubicaciÃ³n fuera de rango (tamaÃ±o=%#<PRIx64>)"
 
-#: elf32-xtensa.c:2655
-#, c-format
-msgid "%B(%A+%#Lx): relocation offset out of range (size=%#Lx)"
-msgstr "%B(%A+%#Lx): desplazamiento de reubicaciÃ³n fuera de rango (tamaÃ±o=%#Lx)"
-
-#: elf32-xtensa.c:2736 elf32-xtensa.c:2855
+#: elf32-xtensa.c:2816 elf32-xtensa.c:2939
 msgid "dynamic relocation in read-only section"
 msgstr "reubicaciÃ³n dinÃ¡mica en la secciÃ³n de sÃ³lo lectura"
 
-#: elf32-xtensa.c:2832
+#: elf32-xtensa.c:2916
 msgid "TLS relocation invalid without dynamic sections"
-msgstr "TLS reubicado invÃ¡lidamente sin secciones dinÃ¡micas"
+msgstr "reubicaciÃ³n TLS no vÃ¡lida sin secciones dinÃ¡micas"
 
-#: elf32-xtensa.c:3043
+#: elf32-xtensa.c:3129
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "inconsistencia interna en el tamaÃ±o de la secciÃ³n .got.loc"
 
-#: elf32-xtensa.c:3350
+#: elf32-xtensa.c:3435
 #, c-format
-msgid "%B: incompatible machine type. Output is 0x%x. Input is 0x%x"
-msgstr "%B: tipo de mÃ¡quina incompatible. La salida es 0x%x. La entrada es 0x%x"
+msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
+msgstr "%pB: tipo de mÃ¡quina incompatible. La salida es 0x%x. La entrada es 0x%x"
 
-#: elf32-xtensa.c:4581 elf32-xtensa.c:4589
-msgid "Attempt to convert L32R/CALLX to CALL failed"
-msgstr "FallÃ³ el intento de convertir L32R/CALLX a CALL"
+#: elf32-xtensa.c:4734 elf32-xtensa.c:4742
+msgid "attempt to convert L32R/CALLX to CALL failed"
+msgstr "fallÃ³ el intento de convertir L32R/CALLX a CALL"
 
-#: elf32-xtensa.c:6417 elf32-xtensa.c:6495 elf32-xtensa.c:7871
+#: elf32-xtensa.c:6574 elf32-xtensa.c:6653 elf32-xtensa.c:8079
 #, c-format
-msgid "%B(%A+%#Lx): could not decode instruction; possible configuration mismatch"
-msgstr "%B(%A+%#Lx): no se pudo decodificar la instrucciÃ³n; posible falta de coincidencia de la configuraciÃ³n"
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
+msgstr "%pB(%pA+%#<PRIx64>): no se pudo decodificar la instrucciÃ³n. Posible discrepancia en la configuraciÃ³n"
 
-#: elf32-xtensa.c:7610
+#: elf32-xtensa.c:7820
 #, c-format
-msgid "%B(%A+%#Lx): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
-msgstr "%B(%A+%#Lx): no pudo decodificar instrucciÃ³n para reubicaciÃ³n XTENSA_ASM_SIMPLIFY; posible incoincidencia de configuraciÃ³n"
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
+msgstr "%pB(%pA+%#<PRIx64>): no se pudo decodificar la instrucciÃ³n para la reubicaciÃ³n XTENSA_ASM_SIMPLIFY. Posible discrepancia en la configuraciÃ³n"
 
-#: elf32-xtensa.c:9455
+#: elf32-xtensa.c:9678
 msgid "invalid relocation address"
-msgstr "direcciÃ³n de reubicaciÃ³n invÃ¡lida"
+msgstr "direcciÃ³n de reubicaciÃ³n no vÃ¡lida"
 
-#: elf32-xtensa.c:9505
+#: elf32-xtensa.c:9769
 msgid "overflow after relaxation"
 msgstr "desbordamiento despuÃ©s de la relajaciÃ³n"
 
-#: elf32-xtensa.c:10649
+#: elf32-xtensa.c:10915
 #, c-format
-msgid "%B(%A+%#Lx): unexpected fix for %s relocation"
-msgstr "%B(%A+%#Lx): reparaciÃ³n inesperado para %s reubicaciÃ³n"
+msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
+msgstr "%pB(%pA+%#<PRIx64>): reparaciÃ³n inesperada para la reubicaciÃ³n %s"
 
-#: elf64-alpha.c:472
-msgid "GPDISP relocation did not find ldah and lda instructions"
-msgstr "ReubicaciÃ³n GPDISP no encontrÃ³ las instrucciones ldah y lda"
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr "%pB: mach bfd no admitido %#lx"
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr "%pB: mach no admitido %#x"
 
-#: elf64-alpha.c:1112
+#: elf32-z80.c:546
 #, c-format
-msgid "%B: unrecognised Alpha reloc number: %d"
-msgstr "%B: nÃºmero reubicante Alpha no reconocido: %d"
+msgid "%pB: unsupported arch %#x"
+msgstr "%pB: arquitectura %#x no admitida"
+
+#: elf64-alpha.c:474
+msgid "GPDISP relocation did not find ldah and lda instructions"
+msgstr "La reubicaciÃ³n GPDISP no encontrÃ³ las instrucciones ldah y lda"
 
-#: elf64-alpha.c:2462
+#: elf64-alpha.c:1985
 #, c-format
-msgid "%B: .got subsegment exceeds 64K (size %d)"
-msgstr "%B: el subsegmento .got excede los 64K (tamaÃ±o %d)"
+msgid "%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr "%pB: reubicaciÃ³n dinÃ¡mica contra un sÃ­mbolo local en la secciÃ³n de sÃ³lo lectura Â«%pAÂ»\n"
 
-#: elf64-alpha.c:3017
+#: elf64-alpha.c:2437
 #, c-format
-msgid "%B: %A+%#Lx: warning: %s relocation against unexpected insn"
-msgstr "%B: %A+%#Lx: aviso: reubicaciÃ³n %s contra insn inesperado"
+msgid "%pB: .got subsegment exceeds 64K (size %d)"
+msgstr "%pB: el subsegmento .got excede los 64K (tamaÃ±o %d)"
 
-#: elf64-alpha.c:3212
+#: elf64-alpha.c:2680 elflink.c:15481 elfnn-kvx.c:4022 elfnn-loongarch.c:1715
 #, c-format
-msgid "%B: %A+%#Lx: warning: LITERAL relocation against unexpected insn"
-msgstr "%B: %A+%#Lx: aviso: reubicaciÃ³n LITERAL contra insn inesperado"
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: reubicaciÃ³n dinÃ¡mica contra Â«%pTÂ» en la secciÃ³n de sÃ³lo lectura Â«%pAÂ»\n"
 
-#: elf64-alpha.c:4412 elf64-alpha.c:4425
+#: elf64-alpha.c:2975 elf64-alpha.c:3170
 #, c-format
-msgid "%B: gp-relative relocation against dynamic symbol %s"
-msgstr "%B: reubicaciÃ³n relativa a gp contra el sÃ­mbolo dinÃ¡mico %s"
+msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
+msgstr "%pB: %pA+%#<PRIx64>: aviso: reubicaciÃ³n %s contra insn inesperado"
 
-#: elf64-alpha.c:4452 elf64-alpha.c:4596
+#: elf64-alpha.c:4370 elf64-alpha.c:4383
 #, c-format
-msgid "%B: pc-relative relocation against dynamic symbol %s"
-msgstr "%B: reubicaciÃ³n relativa a pc contra el sÃ­mbolo dinÃ¡mico %s"
+msgid "%pB: gp-relative relocation against dynamic symbol %s"
+msgstr "%pB: reubicaciÃ³n relativa a gp contra el sÃ­mbolo dinÃ¡mico %s"
 
-#: elf64-alpha.c:4481
+#: elf64-alpha.c:4439
 #, c-format
-msgid "%B: change in gp: BRSGP %s"
-msgstr "%B: modifica en gp: BRSGP %s"
+msgid "%pB: change in gp: BRSGP %s"
+msgstr "%pB: cambio en gp: BRSGP %s"
 
-#: elf64-alpha.c:4506
+#: elf64-alpha.c:4464 mach-o.c:625 elfnn-riscv.c:722 elfnn-riscv.c:921
+#: elfnn-riscv.c:963
 msgid "<unknown>"
 msgstr "<desconocido>"
 
-#: elf64-alpha.c:4512
+#: elf64-alpha.c:4470
+#, c-format
+msgid "%pB: !samegp reloc against symbol without .prologue: %s"
+msgstr "%pB: reubicaciÃ³n !samegp contra un sÃ­mbolo sin .prologue: %s"
+
+#: elf64-alpha.c:4528
 #, c-format
-msgid "%B: !samegp reloc against symbol without .prologue: %s"
-msgstr "%B: reubicaciÃ³n !samegp contra un sÃ­mbolo sin .prologue: %s"
+msgid "%pB: unhandled dynamic relocation against %s"
+msgstr "%pB: reubicaciÃ³n dinÃ¡mica sin manejar contra %s"
 
-#: elf64-alpha.c:4570
+#: elf64-alpha.c:4563
 #, c-format
-msgid "%B: unhandled dynamic relocation against %s"
-msgstr "%B: reubicaciÃ³n dinÃ¡mica sin manipular contra %s"
+msgid "%pB: pc-relative relocation against undefined weak symbol %s"
+msgstr "%pB: reubicaciÃ³n relativa a pc contra el sÃ­mbolo dÃ©bil sin definir %s"
 
-#: elf64-alpha.c:4605
+#: elf64-alpha.c:4629
 #, c-format
-msgid "%B: pc-relative relocation against undefined weak symbol %s"
-msgstr "%B: reubicaciÃ³n relativa a pc contra el sÃ­mbolo dÃ©bil sin definir %s"
+msgid "%pB: dtp-relative relocation against dynamic symbol %s"
+msgstr "%pB: reubicaciÃ³n relativa a dtp contra el sÃ­mbolo dinÃ¡mico %s"
 
-#: elf64-alpha.c:4671
+#: elf64-alpha.c:4654
 #, c-format
-msgid "%B: dtp-relative relocation against dynamic symbol %s"
-msgstr "%B: reubicaciÃ³n relativa a dtp contra el sÃ­mbolo dinÃ¡mico %s"
+msgid "%pB: tp-relative relocation against dynamic symbol %s"
+msgstr "%pB: reubicaciÃ³n relativa a tp contra el sÃ­mbolo dinÃ¡mico %s"
 
-#: elf64-alpha.c:4696
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:344
+msgid "internal error: relocation not supported"
+msgstr "error interno: reubicaciÃ³n no admitida"
+
+#: elf64-gen.c:71
 #, c-format
-msgid "%B: tp-relative relocation against dynamic symbol %s"
-msgstr "%B: reubicaciÃ³n tp-relativa contra el sÃ­mbolo dinÃ¡mico %s"
+msgid "%pB: Relocations in generic ELF (EM: %d)"
+msgstr "%pB: Reubicaciones en ELF genÃ©rico (EM: %d)"
 
-#: elf64-hppa.c:2081
+#: elf64-hppa.c:2032
 #, c-format
-msgid "stub entry for %s cannot load .plt, dp offset = %Ld"
-msgstr "la entrada de cabo para %s no puede cargar .plt, desplazamiento dp = %Ld"
+msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
+msgstr "la entrada de stub para %s no puede cargar el .plt, desplazamiento dp = %<PRId64>"
 
-#: elf64-hppa.c:3286
+#: elf64-hppa.c:3236
 #, c-format
-msgid "%B(%A+%#Lx): cannot reach %s"
-msgstr "%B(%A+%#Lx): no se pueden alcanzar %s"
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
+msgstr "%pB(%pA+%#<PRIx64>): no se puede alcanzar %s"
 
-#: elf64-ia64-vms.c:587 elf32-ia64.c:620 elf64-ia64.c:620
+#: elf64-ia64-vms.c:600 elfnn-ia64.c:641
 #, c-format
-msgid "%B: Can't relax br at %#Lx in section `%A'. Please use brl or indirect branch."
-msgstr "%B: no se puede relajar br en %#Lx en la secciÃ³n `%A'. Utilice brl o ramificaciÃ³n indirecta."
+msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
+msgstr "%pB: no se puede relajar br en %#<PRIx64> en la secciÃ³n Â«%pAÂ». Utilice brl o una rama indirecta"
 
-#: elf64-ia64-vms.c:2029 elf32-ia64.c:2285 elf64-ia64.c:2285
+#: elf64-ia64-vms.c:2032 elfnn-ia64.c:2294
 msgid "@pltoff reloc against local symbol"
-msgstr "reubica @pltoff contra sÃ­mb. local"
+msgstr "reubicaciÃ³n @pltoff contra sÃ­mbolo local"
 
-#: elf64-ia64-vms.c:3281 elf32-ia64.c:3696 elf64-ia64.c:3696
+#: elf64-ia64-vms.c:3278 elfnn-ia64.c:3671
 #, c-format
-msgid "%B: short data segment overflowed (%#Lx >= 0x400000)"
-msgstr "%B: segmento de datos short sobredesbordado (%#Lx >= 0x400000)"
+msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
+msgstr "%pB: segmento de datos corto desbordado (%#<PRIx64> >= 0x400000)"
 
-#: elf64-ia64-vms.c:3291 elf32-ia64.c:3706 elf64-ia64.c:3706
-msgid "%B: __gp does not cover short data segment"
-msgstr "%B: __gp no cubre el segmento corto de datos"
+#: elf64-ia64-vms.c:3288 elfnn-ia64.c:3681
+#, c-format
+msgid "%pB: __gp does not cover short data segment"
+msgstr "%pB: __gp no cubre el segmento corto de datos"
 
-#: elf64-ia64-vms.c:3557 elf32-ia64.c:3974 elf64-ia64.c:3974
+#: elf64-ia64-vms.c:3558 elfnn-ia64.c:3954
 #, c-format
-msgid "%B: non-pic code with imm relocation against dynamic symbol `%s'"
-msgstr "%B: cÃ³digo que no es pic con reubicaciÃ³n imm contra el sÃ­mbolo dinÃ¡mico Â«%sÂ»"
+msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
+msgstr "%pB: cÃ³digo que no es pic con reubicaciÃ³n imm contra el sÃ­mbolo dinÃ¡mico Â«%sÂ»"
 
-#: elf64-ia64-vms.c:3621 elf32-ia64.c:4042 elf64-ia64.c:4042
+#: elf64-ia64-vms.c:3622 elfnn-ia64.c:4022
 #, c-format
-msgid "%B: @gprel relocation against dynamic symbol %s"
-msgstr "%B: @gprel reubicado contra el sÃ­mbolo dinÃ¡mico %s"
+msgid "%pB: @gprel relocation against dynamic symbol %s"
+msgstr "%pB: reubicaciÃ³n @gprel contra el sÃ­mbolo dinÃ¡mico %s"
 
-#: elf64-ia64-vms.c:3680 elf32-ia64.c:4105 elf64-ia64.c:4105
-msgid "%B: linking non-pic code in a position independent executable"
-msgstr "%B: se enlaza cÃ³digo que no es pic en un ejecutable independiente de posiciÃ³n"
+#: elf64-ia64-vms.c:3681 elfnn-ia64.c:4085
+#, c-format
+msgid "%pB: linking non-pic code in a position independent executable"
+msgstr "%pB: se enlaza cÃ³digo que no es pic en un ejecutable independiente de posiciÃ³n"
 
-#: elf64-ia64-vms.c:3782 elf32-ia64.c:4243 elf64-ia64.c:4243
+#: elf64-ia64-vms.c:3783 elfnn-ia64.c:4223
 #, c-format
-msgid "%B: @internal branch to dynamic symbol %s"
-msgstr "%B: @internal ramificado al sÃ­mbolo dinÃ¡mico %s"
+msgid "%pB: @internal branch to dynamic symbol %s"
+msgstr "%pB: rama @internal al sÃ­mbolo dinÃ¡mico %s"
 
-#: elf64-ia64-vms.c:3785 elf32-ia64.c:4246 elf64-ia64.c:4246
+#: elf64-ia64-vms.c:3786 elfnn-ia64.c:4226
 #, c-format
-msgid "%B: speculation fixup to dynamic symbol %s"
-msgstr "%B: compostura de especulaciÃ³n al sÃ­mbolo dinÃ¡mico %s"
+msgid "%pB: speculation fixup to dynamic symbol %s"
+msgstr "%pB: ajuste de especulaciÃ³n al sÃ­mbolo dinÃ¡mico %s"
 
-#: elf64-ia64-vms.c:3788 elf32-ia64.c:4249 elf64-ia64.c:4249
+#: elf64-ia64-vms.c:3789 elfnn-ia64.c:4229
 #, c-format
-msgid "%B: @pcrel relocation against dynamic symbol %s"
-msgstr "%B: @pcrel reubicado contra el sÃ­mbolo dinÃ¡mico %s"
+msgid "%pB: @pcrel relocation against dynamic symbol %s"
+msgstr "%pB: reubicaciÃ³n @pcrel contra el sÃ­mbolo dinÃ¡mico %s"
 
-#: elf64-ia64-vms.c:3912 elf32-ia64.c:4446 elf64-ia64.c:4446
+#: elf64-ia64-vms.c:3913 elfnn-ia64.c:4426
 msgid "unsupported reloc"
-msgstr "no se admite la reubicaciÃ³n"
+msgstr "reubicaciÃ³n no admitida"
 
-#: elf64-ia64-vms.c:3949 elf32-ia64.c:4484 elf64-ia64.c:4484
+#: elf64-ia64-vms.c:3950 elfnn-ia64.c:4464
 #, c-format
-msgid "%B: missing TLS section for relocation %s against `%s' at %#Lx in section `%A'."
-msgstr "%B: falta la secciÃ³n TLS para la reubicaciÃ³n %s contra Â«%sÂ» en %#Lx en la secciÃ³n `%A'."
+msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
+msgstr "%pB: falta la secciÃ³n TLS para la reubicaciÃ³n %s contra Â«%sÂ» en %#<PRIx64> en la secciÃ³n Â«%pAÂ»."
 
-#: elf64-ia64-vms.c:3966 elf32-ia64.c:4501 elf64-ia64.c:4501
+#: elf64-ia64-vms.c:3967 elfnn-ia64.c:4481
 #, c-format
-msgid "%B: Can't relax br (%s) to `%s' at %#Lx in section `%A' with size %#Lx (> 0x1000000)."
-msgstr "%B: no se puede relajar br (%s) a Â«%sÂ» en %#Lx en la secciÃ³n `%A' con tamaÃ±o %#Lx (> 0x1000000)."
+msgid "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size %#<PRIx64> (> 0x1000000)."
+msgstr "%pB: No se puede relajar br (%s) a Â«%sÂ» en %#<PRIx64> en la secciÃ³n Â«%pAÂ» con tamaÃ±o %#<PRIx64> (> 0x1000000)."
 
-#: elf64-ia64-vms.c:4257 elf32-ia64.c:4758 elf64-ia64.c:4758
-msgid "%B: linking trap-on-NULL-dereference with non-trapping files"
-msgstr "%B: se enlaza deferencias-captura-en-NULL con ficheros que no son de captura"
+#: elf64-ia64-vms.c:4263 elfnn-ia64.c:4742
+#, c-format
+msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
+msgstr "%pB: se enlaza captura de desreferencia NULL con ficheros que no son de captura"
 
-#: elf64-ia64-vms.c:4266 elf32-ia64.c:4767 elf64-ia64.c:4767
-msgid "%B: linking big-endian files with little-endian files"
-msgstr "%B: se enlazan ficheros big-endian con ficheros little-endian"
+#: elf64-ia64-vms.c:4272 elfnn-ia64.c:4751
+#, c-format
+msgid "%pB: linking big-endian files with little-endian files"
+msgstr "%pB: se enlazan ficheros big-endian con ficheros little-endian"
 
-#: elf64-ia64-vms.c:4275 elf32-ia64.c:4776 elf64-ia64.c:4776
-msgid "%B: linking 64-bit files with 32-bit files"
-msgstr "%B: se enlazan ficheros de 64-bit con ficheros de 32-bit"
+#: elf64-ia64-vms.c:4281 elfnn-ia64.c:4760
+#, c-format
+msgid "%pB: linking 64-bit files with 32-bit files"
+msgstr "%pB: se enlazan ficheros de 64 bits con ficheros de 32 bits"
 
-#: elf64-ia64-vms.c:4284 elf32-ia64.c:4785 elf64-ia64.c:4785
-msgid "%B: linking constant-gp files with non-constant-gp files"
-msgstr "%B: se enlazan ficheros de gp constante con ficheros con gp no constante"
+#: elf64-ia64-vms.c:4290 elfnn-ia64.c:4769
+#, c-format
+msgid "%pB: linking constant-gp files with non-constant-gp files"
+msgstr "%pB: se enlazan ficheros con gp constante con ficheros con gp no constante"
 
-#: elf64-ia64-vms.c:4294 elf32-ia64.c:4795 elf64-ia64.c:4795
-msgid "%B: linking auto-pic files with non-auto-pic files"
-msgstr "%B: se enlazan ficheros de pic automÃ¡tico con ficheros sin pic automÃ¡tico"
+#: elf64-ia64-vms.c:4300 elfnn-ia64.c:4779
+#, c-format
+msgid "%pB: linking auto-pic files with non-auto-pic files"
+msgstr "%pB: se enlazan ficheros con pic automÃ¡tico con ficheros sin pic automÃ¡tico"
 
-#: elf64-ia64-vms.c:5137 elflink.c:4773
+#: elf64-ia64-vms.c:5150 elflink.c:5338
 #, c-format
-msgid "Warning: alignment %u of common symbol `%s' in %B is greater than the alignment (%u) of its section %A"
-msgstr "Aviso: la alineaciÃ³n %u del sÃ­mbolo comÃºn Â«%sÂ» en %B es mÃ¡s grande que la alineaciÃ³n (%u) de su secciÃ³n %A"
+msgid "warning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pA"
+msgstr "aviso: la alineaciÃ³n %u del sÃ­mbolo comÃºn Â«%sÂ» en %pB es mÃ¡s grande que la alineaciÃ³n (%u) de su secciÃ³n %pA"
 
-#: elf64-ia64-vms.c:5144 elflink.c:4780
+#: elf64-ia64-vms.c:5157
 #, c-format
-msgid "Warning: alignment %u of symbol `%s' in %B is smaller than %u in %B"
-msgstr "Aviso: la alineaciÃ³n %u del sÃ­mbolo Â«%sÂ» en %B es mÃ¡s pequeÃ±a que %u en %B"
+msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
+msgstr "aviso: la alineaciÃ³n %u del sÃ­mbolo Â«%sÂ» en %pB es mÃ¡s pequeÃ±a que %u en %pB"
 
-#: elf64-ia64-vms.c:5160 elflink.c:4797
+#: elf64-ia64-vms.c:5173 elflink.c:5367
 #, c-format
-msgid "Warning: size of symbol `%s' changed from %Lu in %B to %Lu in %B"
-msgstr "Aviso: el tamaÃ±o del sÃ­mbolo Â«%sÂ» modificado de %Lu en %B a %Lu en %B"
+msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
+msgstr "aviso: el tamaÃ±o del sÃ­mbolo Â«%sÂ» ha cambiado de %<PRIu64> en %pB a %<PRIu64> en %pB"
 
-#: elf64-mips.c:3615 elfn32-mips.c:3443
+#: elf64-mips.c:4102
 #, c-format
-msgid "unrecognised MIPS reloc number: %d"
-msgstr "nÃºmero reubicante MIPS no reconocido: %d"
+msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
+msgstr "%pB(%pA): la reubicaciÃ³n %<PRIu64> tiene un Ã­ndice de sÃ­mbolo %ld no vÃ¡lido"
 
 #: elf64-mmix.c:984
-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 ""
-"reubicaciÃ³n de entrada invÃ¡lida al producir el formato de salida que no\n"
-" es mmo ni ELF.  Por favor utilice el programa objcopy para convertir de\n"
-" ELF o mmo, o ensamble utilizando \"-no-expand\" (para gcc, \"-Wa, -no-expand\""
+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 "reubicaciÃ³n de entrada no vÃ¡lida al producir el formato de salida que no es mmo ni ELF. Use el programa objcopy para convertir de ELF o mmo, o ensamble usando Â«-no-expandÂ» (para gcc, Â«-Wa, -no-expandÂ»)"
 
 #: elf64-mmix.c:1168
-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 ""
-"reubicaciÃ³n de entrada invÃ¡lida al producir el formato de salida que no\n"
-" es mmo ni ELF. Por favor utilice el programa objcopy para converitr de\n"
-" ELF o mmo, o compile utilizando la opciÃ³n de gcc \"-mno-base-addresses\"."
+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 "reubicaciÃ³n de entrada no vÃ¡lida al producir el formato de salida que no es mmo ni ELF. Use el programa objcopy para convertir de ELF o mmo, o compile usando la opciÃ³n de gcc Â«-mno-base-addressesÂ»."
 
 #: elf64-mmix.c:1195
 #, c-format
 msgid ""
-"%B: Internal inconsistency error for value for\n"
-" linker-allocated global register: linked: %#Lx != relaxed: %#Lx"
+"%pB: Internal inconsistency error for value for\n"
+" linker-allocated global register: linked: %#<PRIx64> != relaxed: %#<PRIx64>"
 msgstr ""
-"%B: error de inconsistencia interna para el valor para\n"
-" un registro global colocado por el enlazador: enlazado: %#Lx != relajado: %#Lx"
+"%pB: error de inconsistencia interna para el valor para\n"
+" un registro global asignado por el enlazador: enlazado: %#<PRIx64> != relajado: %#<PRIx64>"
 
-#: elf64-mmix.c:1264
+#: elf64-mmix.c:1619
 #, c-format
-msgid "%B: invalid MMIX reloc number: %d"
-msgstr "%B: nÃºmero reubicante MMIX no vÃ¡lido: %d"
+msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
+msgstr "%pB: reubicaciÃ³n base-mÃ¡s-desplazamiento contra el sÃ­mbolo de registro: (desconocido) en %pA"
 
-#: elf64-mmix.c:1616
+#: elf64-mmix.c:1625
 #, c-format
-msgid "%B: base-plus-offset relocation against register symbol: (unknown) in %A"
-msgstr "%B: reubicaciÃ³n base-suma-desplazamiento contra sÃ­mbolo registrador: (desconocido) en %A"
+msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
+msgstr "%pB: reubicaciÃ³n base-mÃ¡s-desplazamiento contra el sÃ­mbolo de registro: %s en %pA"
 
-#: elf64-mmix.c:1622
+#: elf64-mmix.c:1670
 #, c-format
-msgid "%B: base-plus-offset relocation against register symbol: %s in %A"
-msgstr "%B: reubicaciÃ³n base-suma-desplazamiento contra sÃ­mbolo registrador: %s en %A"
+msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
+msgstr "%pB: reubicaciÃ³n de registro contra un sÃ­mbolo que no es de registro: (desconocida) en %pA"
 
-#: elf64-mmix.c:1667
+#: elf64-mmix.c:1676
 #, c-format
-msgid "%B: register relocation against non-register symbol: (unknown) in %A"
-msgstr "%B: reubicaciÃ³n registrada frente sÃ­mbolo no registrado: (desconocido) en %A"
+msgid "%pB: register relocation against non-register symbol: %s in %pA"
+msgstr "%pB: reubicaciÃ³n de registro contra un sÃ­mbolo que no es de registro: %s en %pA"
 
-#: elf64-mmix.c:1673
+#: elf64-mmix.c:1713
 #, c-format
-msgid "%B: register relocation against non-register symbol: %s in %A"
-msgstr "%B: reubicaciÃ³n registrada frente sÃ­mbolo no registrado: %s en %A"
-
-#: elf64-mmix.c:1710
-msgid "%B: directive LOCAL valid only with a register or absolute value"
-msgstr "%B: directiva LOCAL vÃ¡lida sÃ³lo con un registro o un valor absoluto"
+msgid "%pB: directive LOCAL valid only with a register or absolute value"
+msgstr "%pB: directiva LOCAL vÃ¡lida sÃ³lo con un registro o un valor absoluto"
 
-#: elf64-mmix.c:1741
+#: elf64-mmix.c:1742
 #, c-format
-msgid "%B: LOCAL directive: Register $%Ld is not a local register.  First global register is $%Ld."
-msgstr "%B: directiva LOCAL: El registro $%Ld no es un registro local.  El primer registro global es $%Ld."
+msgid "%pB: LOCAL directive: register $%<PRId64> is not a local register; first global register is $%<PRId64>"
+msgstr "%pB: directiva LOCAL: el registro $%<PRId64> no es un registro local; el primer registro global es $%<PRId64>"
 
-#: elf64-mmix.c:2169
+#: elf64-mmix.c:2157
 #, c-format
-msgid "%B: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n"
-msgstr "%B: error: definiciÃ³n mÃºltiple de Â«%sÂ»; el inicio de %s estÃ¡ definido dentro de un fichero enlazado con anterioridad\n"
+msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
+msgstr "%pB: error: definiciÃ³n mÃºltiple de Â«%sÂ»; el inicio de %s estÃ¡ definido en un fichero enlazado con anterioridad"
 
-#: elf64-mmix.c:2224
-msgid "Register section has contents\n"
-msgstr "La secciÃ³n de registros no tiene contenido\n"
+#: elf64-mmix.c:2212
+msgid "register section has contents\n"
+msgstr "la secciÃ³n de registro tiene contenido\n"
 
-#: elf64-mmix.c:2414
+#: elf64-mmix.c:2402
 #, c-format
-msgid ""
-"Internal inconsistency: remaining %lu != max %lu.\n"
-"  Please report this bug."
-msgstr ""
-"Inconsistencia interna: %lu restante != %lu mÃ¡ximo.\n"
-"  Por favor boletine este defecto."
+msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
+msgstr "inconsistencia interna: %lu restante != %lu mÃ¡ximo. Por favor, informe de este error"
 
-#: elf64-ppc.c:4640
+#: elf64-ppc.c:1361
 #, c-format
-msgid "%P: %B: cannot create stub entry %s\n"
-msgstr "%P: %B: no se puede crear la entrada de cabo %s\n"
+msgid "warning: %s should be used rather than %s"
+msgstr "aviso: se debe usar %s en lugar de %s"
 
-#: elf64-ppc.c:4971
-msgid "%P: symbol '%s' has invalid st_other for ABI version 1\n"
-msgstr "%P: sÃ­mbolo Â«%sÂ» tiene st_other invÃ¡lido para versiÃ³n ABI 1\n"
+#: elf64-ppc.c:4307
+#, c-format
+msgid "symbol '%s' has invalid st_other for ABI version 1"
+msgstr "el sÃ­mbolo Â«%sÂ» tiene st_other no vÃ¡lido para versiÃ³n 1 de ABI"
 
-#: elf64-ppc.c:5146
+#: elf64-ppc.c:4490
 #, c-format
-msgid "%P: %B .opd not allowed in ABI version %d\n"
-msgstr "%P: %B .opd no permitido dentro de versiÃ³n ABI %d\n"
+msgid "%pB .opd not allowed in ABI version %d"
+msgstr "%pB .opd no permitido en la versiÃ³n ABI %d"
 
-#: elf64-ppc.c:5645
+#: elf64-ppc.c:5085
 #, c-format
-msgid "%H: %s reloc unsupported in shared libraries and PIEs.\n"
-msgstr "%H: %s reubicaciÃ³n no soportada en bibliotecas compartidas y varios PIE.\n"
+msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
+msgstr "%H: reubicaciÃ³n %s no admitida en bibliotecas compartidas y PIE\n"
 
-#: elf64-ppc.c:6035
+#: elf64-ppc.c:5255
+msgid "%H: %s reloc unsupported here\n"
+msgstr "%H: reubicaciÃ³n %s no admitida aquÃ­\n"
+
+#: elf64-ppc.c:5482
 #, c-format
-msgid "%B uses unknown e_flags 0x%lx"
-msgstr "%B emplea indicadores e_flags 0x%lx desconocidos"
+msgid "%pB uses unknown e_flags 0x%lx"
+msgstr "%pB usa e_flags 0x%lx desconocidos"
 
-#: elf64-ppc.c:6043
+#: elf64-ppc.c:5490
 #, c-format
-msgid "%B: ABI version %ld is not compatible with ABI version %ld output"
-msgstr "%B: VersiÃ³n ABI %ld no es compatible con versiÃ³n ABI %ld salida"
+msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
+msgstr "%pB: la versiÃ³n ABI %ld no es compatible con la versiÃ³n ABI %ld de salida"
 
-#: elf64-ppc.c:6071
+#: elf64-ppc.c:5517
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld]"
 
-#: elf64-ppc.c:7255
-msgid "%P: copy reloc against `%T' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
-msgstr "%P: reubicaciÃ³n copiada contra Â«%TÂ» requiere de enlazado plt flojo; evite establecer LD_BIND_NOW=1 o modernice gcc\n"
+#: elf64-ppc.c:6821
+msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
+msgstr "%P: la reubicaciÃ³n de copia contra Â«%pTÂ» requiere de enlazado plt diferido; evite establecer LD_BIND_NOW=1 o mejore gcc\n"
 
-#: elf64-ppc.c:7522
-msgid "%B: undefined symbol on R_PPC64_TOCSAVE relocation"
-msgstr "%B: sÃ­mbolo sin definir en la reubicaciÃ³n R_PPC64_TOCSAVE"
+#: elf64-ppc.c:7088
+#, c-format
+msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
+msgstr "%pB: sÃ­mbolo sin definir en la reubicaciÃ³n R_PPC64_TOCSAVE"
 
-#: elf64-ppc.c:7749
+#: elf64-ppc.c:7343
 #, c-format
-msgid "%P: dynreloc miscount for %B, section %A\n"
-msgstr "%P: cuenta errÃ³nea de la reubicaciÃ³n dinÃ¡mica de %B, secciÃ³n %A\n"
+msgid "dynreloc miscount for %pB, section %pA"
+msgstr "cuenta errÃ³nea de la reubicaciÃ³n dinÃ¡mica de %pB, secciÃ³n %pA"
 
-#: elf64-ppc.c:7838
-msgid "%B: .opd is not a regular array of opd entries"
-msgstr "%B: .opd no es una matriz regular de entradas opd"
+#: elf64-ppc.c:7434
+#, c-format
+msgid "%pB: .opd is not a regular array of opd entries"
+msgstr "%pB: .opd no es una matriz regular de entradas opd"
 
-#: elf64-ppc.c:7848
+#: elf64-ppc.c:7444
 #, c-format
-msgid "%B: unexpected reloc type %u in .opd section"
-msgstr "%B: tipo de reubicaciÃ³n %u inesperado en la secciÃ³n .opd"
+msgid "%pB: unexpected reloc type %u in .opd section"
+msgstr "%pB: tipo de reubicaciÃ³n %u inesperado en la secciÃ³n .opd"
 
-#: elf64-ppc.c:7870
+#: elf64-ppc.c:7466
 #, c-format
-msgid "%B: undefined sym `%s' in .opd section"
-msgstr "%B: sÃ­mbolo Â«%sÂ» sin definir en la secciÃ³n .opd"
+msgid "%pB: undefined sym `%s' in .opd section"
+msgstr "%pB: sÃ­mbolo Â«%sÂ» sin definir en la secciÃ³n .opd"
 
-#: elf64-ppc.c:8207
-msgid "%P: warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations.\n"
-msgstr ""
-"%P: aviso: --plt-localentry es especialmente peligroso sin compatibilidad ld.so para detectar violaciones ABI.\n"
-" \n"
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7967
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr "aviso: --plt-localentry es incompatible con el cÃ³digo relativo a pc power10"
+
+#: elf64-ppc.c:7975
+msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
+msgstr "aviso: --plt-localentry es especialmente peligroso sin compatibilidad ld.so para detectar violaciones ABI"
 
-#: elf64-ppc.c:8456
+#: elf64-ppc.c:8291
 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
 msgstr "%H se perdiÃ³ el argumento __tls_get_addr, se desactiva la optimizaciÃ³n TLS\n"
 
-#: elf64-ppc.c:8800 elf64-ppc.c:9437
+#: elf64-ppc.c:8726 elf64-ppc.c:9442
 #, c-format
 msgid "%s defined on removed toc entry"
 msgstr "se definiÃ³ %s en la entrada toc eliminada"
 
-#: elf64-ppc.c:9165
+#: elf64-ppc.c:9399
 #, c-format
-msgid "%H: toc optimization is not supported for %s instruction.\n"
-msgstr "%H: optimizaciÃ³n toc no estÃ¡ admitida para instrucciÃ³n %s.\n"
+msgid "%H: %s references optimized away TOC entry\n"
+msgstr "%H: %s hace referencia a una entrada TOC lejana optimizada\n"
 
-#: elf64-ppc.c:9394
+#: elf64-ppc.c:9620
 #, c-format
-msgid "%H: %s references optimized away TOC entry\n"
-msgstr "%H: reubicaciones %s optimizada externa a entrada TOC\n"
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: optimizaciÃ³n got/toc no estÃ¡ admitida para la instrucciÃ³n %s\n"
 
-#: elf64-ppc.c:10157
+#: elf64-ppc.c:10515
 #, c-format
 msgid "warning: discarding dynamic section %s"
-msgstr "aviso: descartando secciÃ³n dinÃ¡mica %s"
+msgstr "aviso: descartando la secciÃ³n dinÃ¡mica %s"
 
-#: elf64-ppc.c:10746
-msgid "%P: cannot find opd entry toc for `%T'\n"
-msgstr "%P: no se puede encontrar la entrada opd toc para `%T'\n"
+#: elf64-ppc.c:11668
+msgid "%P: cannot find opd entry toc for `%pT'\n"
+msgstr "%P: no se puede encontrar la entrada opd toc para Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10837
-msgid "%P: long branch stub `%s' offset overflow\n"
-msgstr "%P: desbordamiento del desplazamiento de stub de ramificaciÃ³n long Â«%sÂ»\n"
+#: elf64-ppc.c:11818
+#, c-format
+msgid "long branch stub `%s' offset overflow"
+msgstr "desbordamiento del desplazamiento del stub Â«%sÂ» de rama larga"
 
-#: elf64-ppc.c:10896
-msgid "%P: can't find branch stub `%s'\n"
-msgstr "%P: no se puede encontrar la ramificaciÃ³n de cabo Â«%sÂ»\n"
+#: elf64-ppc.c:11845
+#, c-format
+msgid "can't find branch stub `%s'"
+msgstr "no se puede encontrar el stub de la rama Â«%sÂ»"
 
-#: elf64-ppc.c:10960 elf64-ppc.c:11112 elf64-ppc.c:12974
+#: elf64-ppc.c:11906 elf64-ppc.c:12158 elf64-ppc.c:14724
 #, c-format
-msgid "%P: linkage table error against `%T'\n"
-msgstr "%P: error del segmento enlazada frente a `%T'\n"
+msgid "%P: linkage table error against `%pT'\n"
+msgstr "%P: error de la tabla de enlazamiento contra Â«%pTÂ»\n"
 
-#: elf64-ppc.c:11331
-msgid "%P: can't build branch stub `%s'\n"
-msgstr "%P: no se puede construir la ramificaciÃ³n de cabos Â«%sÂ»\n"
+#: elf64-ppc.c:12357
+#, c-format
+msgid "can't build branch stub `%s'"
+msgstr "no se puede construir el stub de la rama Â«%sÂ»"
 
-#: elf64-ppc.c:12104
+#: elf64-ppc.c:13384
 #, c-format
-msgid "%B section %A exceeds stub group size"
-msgstr "%B secciÃ³n %A excede el tamaÃ±o de grupo de cabos"
+msgid "%pB section %pA exceeds stub group size"
+msgstr "%pB secciÃ³n %pA excede el tamaÃ±o de grupo de stubs"
 
-#: elf64-ppc.c:13242
-msgid "%P: stubs don't match calculated size\n"
-msgstr "%P: los cabos no coinciden con el tamaÃ±o calculado\n"
+#: elf64-ppc.c:14904
+msgid "__tls_get_addr call offset overflow"
+msgstr "desbordamiento de desplazamiento de llamada __tls_get_addr"
 
-#: elf64-ppc.c:13256
+#: elf64-ppc.c:15244 elf64-ppc.c:15263
 #, c-format
-msgid "linker stubs in %u group\n"
-msgid_plural "linker stubs in %u groups\n"
-msgstr[0] "enlazador stubs en grupo %u\n"
-msgstr[1] "enlazador stubs en grupos %u\n"
+msgid "%s offset too large for .eh_frame sdata4 encoding"
+msgstr "el desplazamiento %s es demasiado grande para la codificaciÃ³n sdata4 .eh_frame"
 
-#: elf64-ppc.c:13260
+#: elf64-ppc.c:15349
+#, c-format
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
+msgstr[0] "stubs del enlazador en %u grupo"
+msgstr[1] "stubs del enlazador en %u grupos"
+
+#: elf64-ppc.c:15356
 #, c-format
 msgid ""
-"  branch       %lu\n"
-"  toc adjust   %lu\n"
-"  long branch  %lu\n"
-"  long toc adj %lu\n"
-"  plt call     %lu\n"
-"  plt call toc %lu\n"
-"  global entry %lu"
+"%s, iter %u\n"
+"  branch         %lu\n"
+"  long branch    %lu\n"
+"  plt call       %lu\n"
+"  global entry   %lu"
 msgstr ""
-"  rama            %lu\n"
-"  ajuste toc      %lu\n"
-"  rama long       %lu\n"
-"  ajuste toc long %lu\n"
-"  llamada plt     %lu\n"
-"  llamada plt toc %lu\n"
+"%s, iter %u\n"
+"  rama           %lu\n"
+"  rama larga     %lu\n"
+"  llamada plt    %lu\n"
 "  entrada global %lu"
 
-#: elf64-ppc.c:13579
+#: elf64-ppc.c:15738
 #, c-format
-msgid "%H: %s used with TLS symbol `%T'\n"
-msgstr "%H: %s empleado con sÃ­mbolo TLS `%T'\n"
+msgid "%H: %s used with TLS symbol `%pT'\n"
+msgstr "%H: %s usado con el sÃ­mbolo TLS Â«%pTÂ»\n"
 
-#: elf64-ppc.c:13581
+#: elf64-ppc.c:15740
 #, c-format
-msgid "%H: %s used with non-TLS symbol `%T'\n"
-msgstr "%H: %s empleado con sÃ­mbolo no-TLS `%T'\n"
+msgid "%H: %s used with non-TLS symbol `%pT'\n"
+msgstr "%H: se ha usado %s con un sÃ­mbolo que no es TLS Â«%pTÂ»\n"
 
-#: elf64-ppc.c:14191
+#: elf64-ppc.c:16524
 #, c-format
-msgid "%H: call to `%T' lacks nop, can't restore toc; recompile with -fPIC\n"
-msgstr "%H: llamar a`%T' falta nop, no puede restaurar toc; recompile con -fPIC\n"
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
+msgstr "%H: a la llamada a Â«%pTÂ» le falta nop, no se puede restaurar toc; (stub de llamada plt)\n"
 
-#: elf64-ppc.c:14197
+#: elf64-ppc.c:16530
 #, c-format
-msgid "%H: call to `%T' lacks nop, can't restore toc; (-mcmodel=small toc adjust stub)\n"
-msgstr "%H: llama a Â«%TÂ» le falta nop, no puede restaurar toc; (-mcmodel=small toc ajusta cabo)\n"
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
+msgstr "%H: a la llamada a Â«%pTÂ» le falta nop, no se puede restaurar toc; (toc guardar/ajustar stub)\n"
 
-#: elf64-ppc.c:14325
+#: elf64-ppc.c:17181
 #, c-format
-msgid "%P: %B: unknown relocation type %d for `%T'\n"
-msgstr "%P: %B: tipo de reubicaciÃ³n %d desconocido para `%T'\n"
+msgid "%H: %s against %pT is not supported\n"
+msgstr "%H: %s contra %pT no estÃ¡ admitido\n"
 
-#: elf64-ppc.c:14874
+#: elf64-ppc.c:17457
 #, c-format
-msgid "%H: %s for indirect function `%T' unsupported\n"
-msgstr ""
-"%H: %s para funciÃ³n `%T' indirecta no admitida\n"
-"\n"
+msgid "%H: %s for indirect function `%pT' unsupported\n"
+msgstr "%H: %s para funciÃ³n Â«%pTÂ» indirecta no admitida\n"
 
-#: elf64-ppc.c:14986
+#: elf64-ppc.c:17545
 #, c-format
-msgid "%P: %B: %s is not supported for `%T'\n"
-msgstr "%P: %B: %s no estÃ¡ apoyado para `%T'\n"
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr "%X%P: %pB: %s contra %pT no es compatible con glibc como reubicaciÃ³n dinÃ¡mica\n"
 
-#: elf64-ppc.c:15169
+#: elf64-ppc.c:17600
+#, c-format
+msgid "%P: %pB: %s is not supported for `%pT'\n"
+msgstr "%P: %pB: %s no estÃ¡ admitido para Â«%pTÂ»\n"
+
+#: elf64-ppc.c:17869
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr "%H: error: %s no un mÃºltiplo de %u\n"
 
-#: elf64-ppc.c:15191
+#: elf64-ppc.c:17892
 #, c-format
-msgid "%H: unresolvable %s against `%T'\n"
-msgstr "%H: irresoluble %s frente a `%T'\n"
+msgid "%H: unresolvable %s against `%pT'\n"
+msgstr "%H: %s irresoluble contra Â«%pTÂ»\n"
 
-#: elf64-ppc.c:15288
+#: elf64-ppc.c:18037
 #, c-format
-msgid "%H: %s against `%T': error %d\n"
-msgstr "%H: %s frente a `%T': error %d\n"
+msgid "%H: %s against `%pT': error %d\n"
+msgstr "%H: %s contra Â«%pTÂ»: error %d\n"
 
-#: elf64-ppc.c:15678 elf64-ppc.c:15697
-msgid "%P: %s offset too large for .eh_frame sdata4 encoding"
-msgstr "%P: el desplazamiento %s es demasiado grande para la codificaciÃ³n sdata4 .eh_frame"
+#: elf64-s390.c:2457
+#, c-format
+msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
+msgstr "%pB: reubicaciÃ³n Â«%sÂ» no-PLT para sÃ­mbolo definido en biblioteca compartida y accedido desde el ejecutable (Â¿ recompilar el fichero con -fPIC ?)"
 
-#: elf64-s390.c:2533
-msgid "%B: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
-msgstr "%B: `%s' no-PLT reubica para sÃ­mbolo definido dentro de biblioteca compartida y accedido desde ejecutable (recompilar fichero con -fPIC ?)"
+#: elf64-s390.c:3066
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): misaligned symbol `%s' (%#<PRIx64>) for relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): sÃ­mbolo desalineado Â«%sÂ» (%#<PRIx64>) para la reubicaciÃ³n %s"
 
-#: elf64-sh64.c:1680
+#: elf64-sparc.c:134 elfcode.h:1602
 #, c-format
-msgid "%B: error: unaligned relocation type %d at %08Lx reloc %08Lx"
-msgstr "%B: error: tipo de reubicaciÃ³n %d sin alinear en %08Lx reubicaciÃ³n %08Lx"
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr "%pB(%pA): la reubicaciÃ³n %d tiene un Ã­ndice de sÃ­mbolo %ld no vÃ¡lido"
 
-#: elf64-sparc.c:460
-msgid "%B: Only registers %%g[2367] can be declared using STT_REGISTER"
-msgstr "%B: Solamente los registros %%g[2367] se pueden declarar utilizando STT_REGISTER"
+#: elf64-sparc.c:493
+#, c-format
+msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
+msgstr "%pB: sÃ³lo los registros %%g[2367] se pueden declarar usando STT_REGISTER"
 
-#: elf64-sparc.c:481
+#: elf64-sparc.c:514
 #, c-format
-msgid "Register %%g%d used incompatibly: %s in %B, previously %s in %B"
-msgstr "El registro %%g%d se usÃ³ de forma incompatible: %s en %B, previamente %s en %B"
+msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
+msgstr "el registro %%g%d se usÃ³ de forma incompatible: %s en %pB, anteriormente %s en %pB"
 
-#: elf64-sparc.c:505
+#: elf64-sparc.c:538
 #, c-format
-msgid "Symbol `%s' has differing types: REGISTER in %B, previously %s in %B"
-msgstr "El sÃ­mbolo Â«%sÂ» tiene tipos divergentes: REGISTER en %B, previamente %s en %B"
+msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
+msgstr "el sÃ­mbolo Â«%sÂ» tiene tipos divergentes: REGISTER en %pB, anteriormente %s en %pB"
 
-#: elf64-sparc.c:552
+#: elf64-sparc.c:585
 #, c-format
-msgid "Symbol `%s' has differing types: %s in %B, previously REGISTER in %B"
-msgstr "El sÃ­mbolo Â«%sÂ» tiene tipos divergentes: %s en %B, previamente REGISTER en %B"
+msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
+msgstr "El sÃ­mbolo Â«%sÂ» tiene tipos divergentes: %s en %pB, anteriormente REGISTER en %pB"
 
-#: elf64-sparc.c:707
-msgid "%B: linking UltraSPARC specific with HAL specific code"
-msgstr "%B: se enlaza cÃ³digo especÃ­fico de UltraSPARC con cÃ³digo especÃ­fico de HAL"
+#: elf64-sparc.c:717
+#, c-format
+msgid "%pB: linking UltraSPARC specific with HAL specific code"
+msgstr "%pB: se enlaza cÃ³digo especÃ­fico de UltraSPARC con cÃ³digo especÃ­fico de HAL"
 
-#: elf64-x86-64.c:1370
+#: elf64-x86-64.c:1537
 msgid "hidden symbol "
 msgstr "sÃ­mbolo oculto "
 
-#: elf64-x86-64.c:1373
+#: elf64-x86-64.c:1540
 msgid "internal symbol "
 msgstr "sÃ­mbolo interno "
 
-#: elf64-x86-64.c:1376 elf64-x86-64.c:1380
+#: elf64-x86-64.c:1543 elf64-x86-64.c:1547
 msgid "protected symbol "
 msgstr "sÃ­mbolo protegido "
 
-#: elf64-x86-64.c:1382
+#: elf64-x86-64.c:1549
 msgid "symbol "
 msgstr "sÃ­mbolo "
 
-#: elf64-x86-64.c:1383 elf64-x86-64.c:1393
-msgid "; recompile with -fPIC"
-msgstr "; recompile con -fPIC"
-
-#: elf64-x86-64.c:1388
+#: elf64-x86-64.c:1555
 msgid "undefined "
-msgstr "indefinido "
+msgstr "sin definir "
 
-#: elf64-x86-64.c:1397
+#: elf64-x86-64.c:1565
 msgid "a shared object"
 msgstr "un objeto compartido"
 
-#: elf64-x86-64.c:1399
+#: elf64-x86-64.c:1567
+msgid "; recompile with -fPIC"
+msgstr "; recompile con -fPIC"
+
+#: elf64-x86-64.c:1572
 msgid "a PIE object"
 msgstr "un objeto PIE"
 
-#: elf64-x86-64.c:1401
+#: elf64-x86-64.c:1574
 msgid "a PDE object"
 msgstr "un objeto PDE"
 
-#: elf64-x86-64.c:1404
+#: elf64-x86-64.c:1576
+msgid "; recompile with -fPIE"
+msgstr "; recompile con -fPIE"
+
+#: elf64-x86-64.c:1580
+#, c-format
+msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
+msgstr "%pB: la reubicaciÃ³n %s contra %s%s Â«%sÂ» no se puede usar cuando se crea %s%s"
+
+#: elf64-x86-64.c:2116
 #, c-format
-msgid "%B: relocation %s against %s%s`%s' can not be used when making %s%s"
-msgstr "%B: reubicaciÃ³n %s frente a %s%s Â«%sÂ» no puede emplearse cuando se crea %s%s"
+msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
+msgstr "%pB: la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ» no se admite en el modo x32"
 
-#: elf64-x86-64.c:1889
+#: elf64-x86-64.c:2266
 #, c-format
-msgid "%B: relocation %s against symbol `%s' isn't supported in x32 mode"
-msgstr "%B: reubicaciÃ³n %s frente al sÃ­mbolo Â«%sÂ» no se admite en modo x32"
+msgid "%pB: '%s' accessed both as normal and thread local symbol"
+msgstr "%pB: Â«%sÂ» ha accedido como ambos un sÃ­mbolo comÃºn y local de hilo"
 
-#: elf64-x86-64.c:2027
+#: elf64-x86-64.c:2926 elfnn-aarch64.c:5754 elfnn-riscv.c:2295
 #, c-format
-msgid "%B: '%s' accessed both as normal and thread local symbol"
-msgstr "%B: Â«%sÂ» accedido ambos como un sÃ­mbolo comÃºn e hilo local"
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
+msgstr "%pB: la reubicaciÃ³n %s contra el sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» tiene sumando distinto de cero: %<PRId64>"
 
-#: elf64-x86-64.c:2651
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:5040
+#: elf64-x86-64.c:3189
 #, c-format
-msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %Ld"
-msgstr "%B: reubicaciÃ³n %s frente al sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» tiene aÃ±adido algo distinto de cero: %Ld"
+msgid "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"
+msgstr "%pB: no se puede usar la reubicaciÃ³n R_X86_64_GOTOFF64 contra %s sin definir Â«%sÂ» cuando se crea un objeto compartido"
 
-#: elf64-x86-64.c:2888
+#: elf64-x86-64.c:3203
 #, c-format
-msgid "%B: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"
-msgstr "%B: no se puede usar la reubicaciÃ³n R_X86_64_GOTOFF64  contra %s indefinida Â«%sÂ» cuando se hace un objeto compartido"
+msgid "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"
+msgstr "%pB: reubicaciÃ³n R_X86_64_GOTOFF64 contra %s protegida Â«%sÂ» no se puede usar cuando se crea un objeto compartido"
 
-#: elf64-x86-64.c:2902
+#: elf64-x86-64.c:3493
 #, c-format
-msgid "%B: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"
-msgstr "%B: reubicaciÃ³n R_X86_64_GOTOFF64 contra %s protegida Â«%sÂ» puede no ser empleada cuando crea un objeto compartido"
+msgid "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in section `%pA' is out of range"
+msgstr "%pB: el sumando %s%#x en la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ» en %#<PRIx64> en la secciÃ³n Â«%pAÂ» estÃ¡ fuera de rango"
 
-#: elf64-x86-64.c:3153
+#: elf64-x86-64.c:3643 elflink.c:13796
+msgid "%F%P: corrupt input: %pB\n"
+msgstr "%F%P: entrada corrupta: %pB\n"
+
+#: elf64-x86-64.c:4410
 #, c-format
-msgid "%B: addend %s%#x in relocation %s against symbol `%s' at %#Lx in section `%A' is out of range"
-msgstr "%B: aÃ±adir final %s%#x en reubicaciÃ³n %s frente sÃ­mbolo Â«%sÂ» en %#Lx en secciÃ³n `%A' estÃ¡ fuera de rango"
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr " fallÃ³ al convertir la reubicaciÃ³n GOTPCREL contra Â«%sÂ»; reenlace con --no-relax\n"
 
-#: elf64-x86-64.c:3828
-msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
-msgstr "%F%P: fallado al convertir reubicaciÃ³n GOTPCREL; renlaza con --no-relax\n"
+#: elf64-x86-64.c:4571
+#, c-format
+msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr "%F%pB: desbordamiento de desplazamiento relativo a PC en entrada PLT para Â«%sÂ»\n"
 
-#: elf64-x86-64.c:3986
+#: elf64-x86-64.c:4644
 #, c-format
-msgid "%F%B: PC-relative offset overflow in PLT entry for `%s'\n"
-msgstr "%F%B: desbordamiento superior de desplazamiento relativo Pc dentro e asiento PLT para Â«%sÂ»\n"
+msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr "%F%pB: desbordamiento de desplazamiento de rama en la entrada PLT para Â«%sÂ»\n"
 
-#: elf64-x86-64.c:4049
+#: elf64-x86-64.c:4697
 #, c-format
-msgid "%F%B: branch displacement overflow in PLT entry for `%s'\n"
-msgstr "%F%B: desbordamiento superior de rama desplazada en entrada PLT para Â«%sÂ»\n"
+msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr "%F%pB: desbordamiento de desplazamiento relativo a PC en la entrada GOT PLT para Â«%sÂ»\n"
 
-#: elf64-x86-64.c:4102
+#: elfcode.h:342
 #, c-format
-msgid "%F%B: PC-relative offset overflow in GOT PLT entry for `%s'\n"
-msgstr "%F%B: desplazamiento PC-relativo desborda por encima el asiento GOT PLT para `%s'\n"
+msgid "warning: %pB has a section extending past end of file"
+msgstr "aviso: %pB tiene una secciÃ³n que se extiende mÃ¡s allÃ¡ del final del fichero"
 
-#: elfcode.h:760
-msgid "warning: %B has a corrupt string table index - ignoring"
-msgstr "aviso: %B tiene un Ã­ndice de tablas de cadenas corrupto - se descarta"
+#: elfcode.h:790
+#, c-format
+msgid "warning: %pB has a corrupt string table index"
+msgstr "aviso: %pB tiene un Ã­ndice de tabla de cadenas corrupto"
+
+#: elfcode.h:838
+#, c-format
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr "aviso: %pB tiene un encabezado de programa con alineaciÃ³n no vÃ¡lida"
 
-#: elfcode.h:1199
+#: elfcode.h:1056
 #, c-format
-msgid "%B: version count (%Ld) does not match symbol count (%ld)"
-msgstr "%B: contador de versiÃ³n (%Ld) no coincide con la cuenta simbÃ³lica (%ld)"
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr "%pB: %pA+%<PRIx64>: sumando de reubicaciÃ³n %<PRIx64> demasiado grande"
 
-#: elfcode.h:1456
+#: elfcode.h:1322
 #, c-format
-msgid "%B(%A): relocation %d has invalid symbol index %ld"
-msgstr "%B(%A): reubicaciÃ³n %d tiene un Ã­ndice simbÃ³lico %ld invÃ¡lido"
+msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
+msgstr "%pB: el contador de versiÃ³n (%<PRId64>) no coincide con la cuenta de sÃ­mbolos (%ld)"
 
-#: elfcore.h:300
+#: elfcore.h:280
 #, c-format
-msgid "warning: %B is truncated: expected core file size >= %Lu, found: %llu"
-msgstr "aviso: %B estÃ¡ truncado: esperaba el tamaÃ±o de fichero core >= %Lu, se encontrÃ³: %llu"
+msgid "warning: %pB has a segment extending past end of file"
+msgstr "aviso: %pB tiene un segmento que se extiende mÃ¡s allÃ¡ del final del fichero"
 
-#: elflink.c:1353
+#: elflink.c:1397
 #, c-format
-msgid "%s: TLS definition in %B section %A mismatches non-TLS definition in %B section %A"
-msgstr "%s: la definiciÃ³n TLS en %B secciÃ³n %A no coincide con la definiciÃ³n que no es TLS en %B secciÃ³n %A"
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
+msgstr "%s: la definiciÃ³n TLS en %pB secciÃ³n %pA no coincide con la definiciÃ³n que no es TLS en %pB secciÃ³n %pA"
 
-#: elflink.c:1359
+#: elflink.c:1403
 #, c-format
-msgid "%s: TLS reference in %B mismatches non-TLS reference in %B"
-msgstr "%s: la referencia TLS en %B no coincide con la referencia que no es TLS en %B"
+msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
+msgstr "%s: la referencia TLS en %pB no coincide con la referencia que no es TLS en %pB"
 
-#: elflink.c:1365
+#: elflink.c:1409
 #, c-format
-msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B"
-msgstr "%s: la definiciÃ³n TLS en %B secciÃ³n %A no coincide con la referencia que no es TLS en %B"
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
+msgstr "%s: la definiciÃ³n TLS en %pB secciÃ³n %pA no coincide con la referencia que no es TLS en %pB"
 
-#: elflink.c:1371
+#: elflink.c:1415
 #, c-format
-msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A"
-msgstr "%s: la referencia TLS en %B no coincide con la definiciÃ³n que no es TLS en %B secciÃ³n %A"
+msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
+msgstr "%s: la referencia TLS en %pB no coincide con la definiciÃ³n que no es TLS en %pB secciÃ³n %pA"
 
-#: elflink.c:2052
+#: elflink.c:2127
 #, c-format
-msgid "%B: unexpected redefinition of indirect versioned symbol `%s'"
-msgstr "%B: redefiniciÃ³n inesperada del sÃ­mbolo con versiÃ³n indirecta Â«%sÂ»"
+msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
+msgstr "%pB: redefiniciÃ³n inesperada del sÃ­mbolo con versiÃ³n indirecta Â«%sÂ»"
 
-#: elflink.c:2345
+#: elflink.c:2626
 #, c-format
-msgid "%B: version node not found for symbol %s"
-msgstr "%B: no se encuentra la versiÃ³n del nodo para el sÃ­mbolo %s"
+msgid "%pB: version node not found for symbol %s"
+msgstr "%pB: no se encuentra el nodo de versiÃ³n para el sÃ­mbolo %s"
 
-#: elflink.c:2434
+#: elflink.c:2717
 #, c-format
-msgid "%B: bad reloc symbol index (%#Lx >= %#lx) for offset %#Lx in section `%A'"
-msgstr "%B: indexado simbÃ³lico de reubicaciÃ³n equivocado (%#Lx >= %#lx)  para desplazar %#Lx dentro de secciÃ³n `%A'"
+msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
+msgstr "%pB: Ã­ndice de sÃ­mbolo de reubicaciÃ³n incorrecto (%#<PRIx64> >= %#lx) para el desplazamiento %#<PRIx64> en la secciÃ³n Â«%pAÂ»"
 
-#: elflink.c:2446
+#: elflink.c:2729
 #, c-format
-msgid "%B: non-zero symbol index (%#Lx) for offset %#Lx in section `%A' when the object file has no symbol table"
-msgstr "%B: Ã­ndice simbÃ³licos distinto de cero (%#Lx) para desplazamiento %#Lx en la secciÃ³n `%A' cuando el fichero objeto no tiene ningÃºn segmento simbÃ³lico"
+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Ã­mbolos distinto de cero (%#<PRIx64>) para el desplazamiento %#<PRIx64> en la secciÃ³n Â«%pAÂ» cuando el fichero objeto no tiene ninguna tabla de sÃ­mbolos"
 
-#: elflink.c:2637
+#: elflink.c:2940
 #, c-format
-msgid "%B: relocation size mismatch in %B section %A"
-msgstr "%B: el tamaÃ±o de reubicaciÃ³n no coincide en %B secciÃ³n %A"
+msgid "%pB: relocation size mismatch in %pB section %pA"
+msgstr "%pB: el tamaÃ±o de reubicaciÃ³n no coincide en %pB secciÃ³n %pA"
 
-#: elflink.c:2955
+#: elflink.c:3269
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "aviso: el tipo y tamaÃ±o del sÃ­mbolo dinÃ¡mico Â«%sÂ» no estÃ¡n definidos"
 
-#: elflink.c:3017
-msgid "%P: copy reloc against protected `%T' is dangerous\n"
-msgstr "%P: copiar reubicaciÃ³n frente a Â«%TÂ» protegido es peligroso\n"
+#: elflink.c:3329
+msgid "%P: copy reloc against protected `%pT' is dangerous\n"
+msgstr "%P: la reubicaciÃ³n de copia contra un Â«%pTÂ» protegido es peligroso\n"
 
-#: elflink.c:3818
+#: elflink.c:4306
 #, c-format
-msgid "%P: alternate ELF machine code found (%d) in %B, expecting %d\n"
-msgstr "%P: se encontrÃ³ cÃ³digo mÃ¡quina ELF alternativo (%d) en %B, se espera %d\n"
+msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
+msgstr "se encontrÃ³ cÃ³digo mÃ¡quina ELF alternativo (%d) en %pB, se espera %d"
 
-#: elflink.c:4484
+#: elflink.c:4789
 #, c-format
-msgid "%B: %s: invalid version %u (max %d)"
-msgstr "%B: %s: versiÃ³n %u invÃ¡lida (mÃ¡ximo %d)"
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: desplazamiento de versiÃ³n no vÃ¡lido %lx (mÃ¡x. %lx)"
 
-#: elflink.c:4521
+#: elflink.c:4857
 #, c-format
-msgid "%B: %s: invalid needed version %d"
-msgstr "%B: %s: versiÃ³n requerida %d invÃ¡lida"
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: sÃ­mbolo local %s en el Ã­ndice %lu (>= sh_info de %lu)"
 
-#: elflink.c:4932
+#: elflink.c:5005
 #, c-format
-msgid "%B: undefined reference to symbol '%s'"
-msgstr "%B: referencia sin definir al sÃ­mbolo Â«%sÂ»"
+msgid "%pB: not enough version information"
+msgstr "%pB: no hay suficiente informaciÃ³n de versiÃ³n"
 
-#: elflink.c:6008
+#: elflink.c:5043
 #, c-format
-msgid "%B: stack size specified and %s set"
-msgstr "%B: tamaÃ±o de pila especificado y %s establecido"
+msgid "%pB: %s: invalid version %u (max %d)"
+msgstr "%pB: %s: versiÃ³n %u no vÃ¡lida (mÃ¡x. %d)"
 
-#: elflink.c:6012
+#: elflink.c:5080
 #, c-format
-msgid "%B: %s not absolute"
-msgstr "%B: %s no absoluto"
+msgid "%pB: %s: invalid needed version %d"
+msgstr "%pB: %s: versiÃ³n requerida %d no vÃ¡lida"
 
-#: elflink.c:6209
+#: elflink.c:5345
+#, c-format
+msgid "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used by the common definition in %pB"
+msgstr "aviso: la alineaciÃ³n %u del sÃ­mbolo normal Â«%sÂ» en %pB es mÃ¡s pequeÃ±a que %u usada por la definiciÃ³n comÃºn en %pB"
+
+#: elflink.c:5352
+msgid "warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."
+msgstr "aviso: NOTE: las discrepancias de alineaciÃ³n pueden causar problemas reales.  Se recomienda investigar."
+
+#: elflink.c:5374
+msgid "warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."
+msgstr "aviso: NOTE: las discrepancias de tamaÃ±o pueden causar problemas reales.  Se recomienda investigar."
+
+#: elflink.c:5516
+#, c-format
+msgid "%pB: undefined reference to symbol '%s'"
+msgstr "%pB: referencia sin definir al sÃ­mbolo Â«%sÂ»"
+
+#: elflink.c:6576
+#, c-format
+msgid "%pB: stack size specified and %s set"
+msgstr "%pB: tamaÃ±o de pila especificado y %s establecido"
+
+#: elflink.c:6580
+#, c-format
+msgid "%pB: %s not absolute"
+msgstr "%pB: %s no absoluto"
+
+#: elflink.c:6792
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: versiÃ³n sin definir: %s"
 
-#: elflink.c:6780
-msgid "%B: .preinit_array section is not allowed in DSO"
-msgstr "%B: no se permite la secciÃ³n .preinit_array en DSO"
+#: elflink.c:7181
+msgid "error: creating an executable stack because of -z execstack command line option"
+msgstr "error: se crearÃ¡ una pila ejecutable debido a la opciÃ³n de la lÃ­nea de ordenes -z execstack"
+
+#: elflink.c:7187
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr "aviso: activando una pila ejecutable debido a la opciÃ³n de la lÃ­nea de ordenes -z execstack"
+
+#: elflink.c:7249
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"
+msgstr "error: %s: estÃ¡ desencadenando la generaciÃ³n de una pila ejecutable (porque tiene una secciÃ³n ejecutable .note.GNU-stack)"
+
+#: elflink.c:7255
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr "aviso: %s: requiere una pila ejecutable (porque la secciÃ³n .note.GNU-stack es ejecutable)"
 
-#: elflink.c:8217
+#: elflink.c:7263
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"
+msgstr "error: %s: estÃ¡ desencadenando la generaciÃ³n de una pila ejecutable porque no tiene una secciÃ³n .note.GNU-stack"
+
+#: elflink.c:7269
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr "aviso: %s: que falte la secciÃ³n .note.GNU-stack implica una pila ejecutable"
+
+#: elflink.c:7272
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr "NOTA: Este comportamiento estÃ¡ obsoleto y se eliminarÃ¡ en una versiÃ³n futura del enlazador"
+
+#: elflink.c:7426
+#, c-format
+msgid "%pB: .preinit_array section is not allowed in DSO"
+msgstr "%pB: no se permite la secciÃ³n .preinit_array en DSO"
+
+#: elflink.c:9017
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "referencia %s sin definir en el sÃ­mbolo complejo: %s"
 
-#: elflink.c:8372
+#: elflink.c:9180 elflink.c:9188
+msgid "division by zero"
+msgstr "divisiÃ³n por cero"
+
+#: elflink.c:9202
 #, c-format
 msgid "unknown operator '%c' in complex symbol"
-msgstr "operador desconocido '%c' en el sÃ­mbolo complejo"
+msgstr "operador desconocido Â«%cÂ» en el sÃ­mbolo complejo"
 
 #. PR 21524: Let the user know if a symbol was removed by garbage collection.
-#: elflink.c:8710
-msgid "%B:%A: error: relocation references symbol %s which was removed by garbage collection."
-msgstr "%B:%A: error: referencias simbÃ³licas %s reubicadas las cuales fueron quitadas para colecciÃ³n de basura."
-
-#: elflink.c:8713
-msgid "%B:%A: error: try relinking with --gc-keep-exported enabled."
-msgstr "%B:%A: error: intente reenlazar con --gc-keep-exported activado."
-
-#: elflink.c:8949 elflink.c:8967 elflink.c:9006 elflink.c:9024
-msgid "%B: Unable to sort relocs - they are in more than one size"
-msgstr "%B: no se pueden ordenar las reubicaciones - son de tamaÃ±os diferentes"
+#: elflink.c:9538
+#, c-format
+msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
+msgstr "%pB:%pA: error: la reubicaciÃ³n hace referencia al sÃ­mbolo %s que se eliminÃ³ por recolecciÃ³n de basura"
 
-#. The section size is not divisible by either -
-#. something is wrong.
-#: elflink.c:8983 elflink.c:9040
-msgid "%B: Unable to sort relocs - they are of an unknown size"
-msgstr "%B: no se pueden ordenar las reubicaciones - son de tamaÃ±o desconocido"
+#: elflink.c:9541
+#, c-format
+msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
+msgstr "%pB:%pA: error: intente reenlazar con --gc-keep-exported activado"
 
-#: elflink.c:9092
-msgid "Not enough memory to sort relocations"
-msgstr "No hay suficiente memoria para ordenar las reubicaciones"
+#: elflink.c:9792 elflink.c:9810 elflink.c:9849 elflink.c:9867
+#, c-format
+msgid "%pB: unable to sort relocs - they are in more than one size"
+msgstr "%pB: no se pueden ordenar las reubicaciones - son de tamaÃ±os diferentes"
 
-#: elflink.c:9360
+#. The section size is not divisible by either -
+#. something is wrong.
+#: elflink.c:9826 elflink.c:9883
 #, c-format
-msgid "%B: Too many sections: %d (>= %d)"
-msgstr "%B: Demasiadas secciones:  %d (>= %d)"
+msgid "%pB: unable to sort relocs - they are of an unknown size"
+msgstr "%pB: no se pueden ordenar las reubicaciones - son de tamaÃ±o desconocido"
+
+#: elflink.c:9935
+msgid "not enough memory to sort relocations"
+msgstr "no hay suficiente memoria para ordenar las reubicaciones"
 
-#: elflink.c:9640
+#: elflink.c:10273
 #, c-format
-msgid "%B: internal symbol `%s' in %B is referenced by DSO"
-msgstr "%B: el sÃ­mbolo interno Â«%sÂ» en %B estÃ¡ referenciado por DSO"
+msgid "%pB: too many sections: %d (>= %d)"
+msgstr "%pB: demasiadas secciones: %d (>= %d)"
 
-#: elflink.c:9643
+#: elflink.c:10549
 #, c-format
-msgid "%B: hidden symbol `%s' in %B is referenced by DSO"
-msgstr "%B: sÃ­mbolo oculto Â«%sÂ» en %B estÃ¡ referenciado por DSO"
+msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: el sÃ­mbolo interno Â«%sÂ» en %pB estÃ¡ referenciado por DSO"
 
-#: elflink.c:9646
+#: elflink.c:10552
 #, c-format
-msgid "%B: local symbol `%s' in %B is referenced by DSO"
-msgstr "%B: el sÃ­mbolo local Â«%sÂ» en %B estÃ¡ referenciado por DSO"
+msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: el sÃ­mbolo oculto Â«%sÂ» en %pB estÃ¡ referenciado por DSO"
 
-#: elflink.c:9732
+#: elflink.c:10555
 #, c-format
-msgid "%B: could not find output section %A for input section %A"
-msgstr "%B: no se puede encontrar la secciÃ³n de salida %A para la secciÃ³n de entrada %A"
+msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: el sÃ­mbolo local Â«%sÂ» en %pB estÃ¡ referenciado por DSO"
 
-#: elflink.c:9886
+#: elflink.c:10641
 #, c-format
-msgid "%B: protected symbol `%s' isn't defined"
-msgstr "%B: el sÃ­mbolo protegido Â«%sÂ» no estÃ¡ definido"
+msgid "%pB: could not find output section %pA for input section %pA"
+msgstr "%pB: no se pudo encontrar la secciÃ³n de salida %pA para la secciÃ³n de entrada %pA"
 
-#: elflink.c:9889
+#: elflink.c:10795
 #, c-format
-msgid "%B: internal symbol `%s' isn't defined"
-msgstr "%B: el sÃ­mbolo interno Â«%sÂ» no estÃ¡ definido"
+msgid "%pB: protected symbol `%s' isn't defined"
+msgstr "%pB: el sÃ­mbolo protegido Â«%sÂ» no estÃ¡ definido"
 
-#: elflink.c:9892
+#: elflink.c:10798
 #, c-format
-msgid "%B: hidden symbol `%s' isn't defined"
-msgstr "%B: sÃ­mbolo oculto Â«%sÂ» no estÃ¡ definido"
+msgid "%pB: internal symbol `%s' isn't defined"
+msgstr "%pB: el sÃ­mbolo interno Â«%sÂ» no estÃ¡ definido"
 
-#: elflink.c:9923
+#: elflink.c:10801
 #, c-format
-msgid "%B: No symbol version section for versioned symbol `%s'"
-msgstr "%B: ninguna secciÃ³n de versiÃ³n simbÃ³lica para sÃ­mbolo Â«%sÂ» versionado"
+msgid "%pB: hidden symbol `%s' isn't defined"
+msgstr "%pB: el sÃ­mbolo oculto Â«%sÂ» no estÃ¡ definido"
 
-#: elflink.c:10533
+#: elflink.c:10833
 #, c-format
-msgid "error: %B: size of section %A is not multiple of address size"
-msgstr "error: %B: el tamaÃ±o de la secciÃ³n %A no es un mÃºltiplo del tamaÃ±o de la direcciÃ³n"
+msgid "%pB: no symbol version section for versioned symbol `%s'"
+msgstr "%pB: ninguna secciÃ³n de versiÃ³n de sÃ­mbolo para el sÃ­mbolo Â«%sÂ» versionado"
 
-#: elflink.c:10578
+#: elflink.c:11514
 #, c-format
-msgid "error: %B contains a reloc (%#Lx) for section %A that references a non-existent global symbol"
-msgstr "error: %B contiene una reubicaciÃ³n (%#Lx) para la secciÃ³n %A que refiere a un sÃ­mbolo global no existente"
+msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
+msgstr "error: %pB contiene una reubicaciÃ³n (%#<PRIx64>) para la secciÃ³n %pA que hace referencia a un sÃ­mbolo global no existente"
 
-#: elflink.c:11333
+#: elflink.c:11984
 #, c-format
-msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections"
-msgstr "%A tiene tanto secciones ordenadas [`%A' en %B] como desordenadas [`%A' en %B]"
+msgid "error: %pB: size of section %pA is not multiple of address size"
+msgstr "error: %pB: el tamaÃ±o de la secciÃ³n %pA no es un mÃºltiplo del tamaÃ±o de la direcciÃ³n"
 
-#: elflink.c:11339
+#: elflink.c:12261
 #, c-format
-msgid "%A has both ordered and unordered sections"
-msgstr "%A tiene secciones tanto ordenadas como desordenadas"
+msgid "%pB: no symbol found for import library"
+msgstr "%pB: no se encontrÃ³ ningÃºn sÃ­mbolo para la biblioteca de importaciÃ³n"
 
-#: elflink.c:11441
-msgid "%B: no symbol found for import library"
-msgstr "%B: ningÃºn sÃ­mbolo encontrado para importar biblioteca"
+#: elflink.c:12836
+msgid "%F%P: %pB: failed to finish relative relocations\n"
+msgstr "%F%P: %pB: no se pudieron finalizar las reubicaciones relativas\n"
 
-#: elflink.c:12063
+#: elflink.c:12913
 #, c-format
-msgid "%B: file class %s incompatible with %s"
-msgstr "%B: fichero de clase %s es incompatible con %s"
+msgid "%pB: file class %s incompatible with %s"
+msgstr "%pB: clase de fichero %s incompatible con %s"
 
-#: elflink.c:12280
-msgid "%B: failed to generate import library"
-msgstr "%B: fallaba al generar biblioteca importada"
+#: elflink.c:13162
+#, c-format
+msgid "%pB: failed to generate import library"
+msgstr "%pB: no se pudo generar la biblioteca de importaciÃ³n"
 
-#: elflink.c:12399
+#: elflink.c:13330
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "aviso: la secciÃ³n %s es de tamaÃ±o cero"
 
-#: elflink.c:12447
+#: elflink.c:13378
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr "aviso: la secciÃ³n Â«%sÂ» se estÃ¡ convirtiendo en una nota"
 
-#: elflink.c:12539
-msgid "%P%X: read-only segment has dynamic relocations.\n"
-msgstr "%P%X: un segmento de sÃ³lo lectura tiene reubicaciones dinÃ¡micas.\n"
-
-#: elflink.c:12542
-msgid "%P: warning: creating a DT_TEXTREL in a shared object.\n"
-msgstr "%P: aviso: se crea un DT_TEXTREL en un objeto compartido.\n"
+#: elflink.c:13472
+msgid "%P%X: read-only segment has dynamic relocations\n"
+msgstr "%P%X: un segmento de sÃ³lo lectura tiene reubicaciones dinÃ¡micas\n"
+
+#: elflink.c:13475
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr "%P: aviso: se crea un DT_TEXTREL en un objeto compartido\n"
+
+#: elflink.c:13478
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr "%P: aviso: se crea un DT_TEXTREL en un PDE\n"
+
+#: elflink.c:13481
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: aviso: se crea un DT_TEXTREL en un PIE\n"
 
-#: elflink.c:12667
+#: elflink.c:13617
 msgid "%P%X: can not read symbols: %E\n"
-msgstr "%P%X: no se pueden leer sÃ­mbolos: %E\n"
+msgstr "%P%X: no se pueden leer los sÃ­mbolos: %E\n"
+
+#: elflink.c:14042
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%F%P: %pB(%pA): error: es necesaria la secciÃ³n enlazado-a para --gc-sections\n"
+
+#: elflink.c:14520
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
+msgstr "%pB: %pA+%#<PRIx64>: no se ha encontrado ningÃºn sÃ­mbolo para INHERIT"
+
+#: elflink.c:14561
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: secciÃ³n Â«%pAÂ»: entrada VTENTRY corrupta"
+
+#: elflink.c:14704
+#, c-format
+msgid "unrecognized INPUT_SECTION_FLAG %s\n"
+msgstr "no se reconoce el INPUT_SECTION_FLAG %s\n"
 
-#: elflink.c:12829
-msgid "%F%P: corrupt input: %B\n"
-msgstr "%F%P: entrada corrupta: %B\n"
+#: elflink.c:15487
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: aviso: reubicaciÃ³n contra Â«%sÂ» en secciÃ³n Â«%pAÂ» de sÃ³lo lectura\n"
+
+#: elflink.c:15576
+msgid "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s\n"
+msgstr "%P: aviso: las funciones indirectas GNU con DT_TEXTREL podÃ­an producir un fallo de segmento en tiempo de ejecuciÃ³n; recompile con %s\n"
 
-#: elflink.c:13495
+#: elfxx-aarch64.c:477
 #, c-format
-msgid "%B: %A+%#Lx: No symbol found for INHERIT"
-msgstr "%B: %A+%#Lx: NingÃºn sÃ­mbolo encontrado para INHERIT"
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: aviso: TLS dÃ©bil estÃ¡ definido en la implementaciÃ³n y es posible que no funcione como se esperaba"
 
-#: elflink.c:13671
+#: elfxx-aarch64.c:738 elfnn-aarch64.c:10231 elfnn-aarch64.c:10238
 #, c-format
-msgid "Unrecognized INPUT_SECTION_FLAG %s\n"
-msgstr "No se reconoce INPUT_SECTION_FLAG %s\n"
+msgid "%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section."
+msgstr "%pB: aviso: BTI activado por -z force-bti cuando todas las entradas no tienen BTI en la secciÃ³n NOTA."
 
-#: elfxx-mips.c:1444
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "error: %pB: <tamaÃ±o usado de AArch64 corrupto: 0x%x>"
+
+#: elfxx-loongarch.c:1909
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr "%pB: no se admite el tipo de reubicaciÃ³n %s"
+
+#: elfxx-loongarch.c:1937
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr "%pB: no se admite el tipo de reubicaciÃ³n bfd %#x"
+
+#: elfxx-loongarch.c:2009
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr "%pB: reubicaciÃ³n %s desplazamiento a la derecha %d error 0x%lx"
+
+#: elfxx-loongarch.c:2028
+#, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr "%pB: desbordamiento de reubicaciÃ³n %s 0x%lx"
+
+#: elfxx-mips.c:1541
 msgid "static procedure (no name)"
 msgstr "procedimiento estÃ¡tico (sin nombre)"
 
-#: elfxx-mips.c:5628
+#: elfxx-mips.c:5857
 msgid "MIPS16 and microMIPS functions cannot call each other"
-msgstr "Funciones MIPS16 y microMIPS no se pueden llamar unas a otras"
+msgstr "Las funciones MIPS16 y microMIPS no se pueden llamar unas a otras"
 
-#: elfxx-mips.c:6376
-msgid "%X%H: Unsupported JALX to the same ISA mode\n"
-msgstr "%X%H: JALX no soportado para el mismo modo ISA\n"
+#: elfxx-mips.c:6627
+msgid "%X%H: unsupported JALX to the same ISA mode\n"
+msgstr "%X%H: JALX no admitido para el mismo modo ISA\n"
 
-#: elfxx-mips.c:6409
-msgid "%X%H: Unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
-msgstr "%X%H: omisiÃ³n no permitido entre modos ISA; considere recompilar con el entrelazado activado\n"
+#: elfxx-mips.c:6660
+msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
+msgstr "%X%H: salto no admitido entre modos ISA. Considere recompilar con el entrelazado activado\n"
 
-#: elfxx-mips.c:6454
-msgid "%X%H: Cannot convert branch between ISA modes to JALX: relocation out of range\n"
-msgstr "%X%H: no puede convertir rama entre modos ISA a JALX: reubicando fuera de lÃ­mite\n"
+#: elfxx-mips.c:6705
+msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
+msgstr "%X%H: no se puede convertir la rama entre modos ISA a JALX: reubicaciÃ³n fuera de rango\n"
 
-#: elfxx-mips.c:6466
-msgid "%X%H: Unsupported branch between ISA modes\n"
-msgstr "%X%H: rama no soportada entre modos ISA\n"
+#: elfxx-mips.c:6717
+msgid "%X%H: unsupported branch between ISA modes\n"
+msgstr "%X%H: rama no admitida entre modos ISA\n"
 
-#: elfxx-mips.c:7144 elfxx-mips.c:7379
+#: elfxx-mips.c:7350
 #, c-format
-msgid "%B: Warning: bad `%s' option size %u smaller than its header"
-msgstr "%B: Aviso: el tamaÃ±o de opciÃ³n Â«%sÂ» %u equivocado es mÃ¡s pequeÃ±o que su encabezado"
+msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
+msgstr "%pB: tamaÃ±o de secciÃ³n Â«.reginfoÂ» incorrecto; esperado %<PRIu64>, obtenido %<PRIu64>"
 
-#: elfxx-mips.c:8135 elfxx-mips.c:8261
+#: elfxx-mips.c:7394
 #, c-format
-msgid "%B: Warning: cannot determine the target function for stub section `%s'"
-msgstr "%B: Aviso: no se puede determinar la funciÃ³n objetivo para la secciÃ³n de cabo Â«%sÂ»"
+msgid "%pB: warning: bad `%s' option size %u smaller than its header"
+msgstr "%pB: aviso: el tamaÃ±o incorrecto de la opciÃ³n Â«%sÂ» %u es mÃ¡s pequeÃ±o que su encabezado"
 
-#: elfxx-mips.c:8393
+#: elfxx-mips.c:7630
 #, c-format
-msgid "%B: Malformed reloc detected for section %s"
-msgstr "%B: Se detectÃ³ una reubicaciÃ³n malformada para la secciÃ³n %s"
+msgid "%pB: warning: truncated `%s' option"
+msgstr "%pB: aviso: opciÃ³n Â«%sÂ» truncada"
 
-#: elfxx-mips.c:8465
+#: elfxx-mips.c:8454 elfxx-mips.c:8580
 #, c-format
-msgid "%B: GOT reloc at %#Lx not expected in executables"
-msgstr "%B: reubicaciÃ³n GOT en %#Lx no esperado en ejecutables"
+msgid "%pB: warning: cannot determine the target function for stub section `%s'"
+msgstr "%pB: aviso: no se puede determinar la funciÃ³n objetivo para la secciÃ³n de stub Â«%sÂ»"
 
-#: elfxx-mips.c:8603
+#: elfxx-mips.c:8712
 #, c-format
-msgid "%B: CALL16 reloc at %#Lx not against global symbol"
-msgstr "%B: reubicaciÃ³n CALL16 en %Lx no contra sÃ­mbolo global"
+msgid "%pB: malformed reloc detected for section %s"
+msgstr "%pB: se detectÃ³ una reubicaciÃ³n mal formada para la secciÃ³n %s"
 
-#: elfxx-mips.c:9226
+#: elfxx-mips.c:8812
+#, c-format
+msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
+msgstr "%pB: reubicaciÃ³n GOT en %#<PRIx64> no esperada en ejecutables"
+
+#: elfxx-mips.c:8952
+#, c-format
+msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
+msgstr "%pB: la reubicaciÃ³n CALL16 en %#<PRIx64> no es contra un sÃ­mbolo global"
+
+#: elfxx-mips.c:9255
+#, c-format
+msgid "%X%H: relocation %s against `%s' cannot be used when making a shared object; recompile with -fPIC\n"
+msgstr "%X%H: la reubicaciÃ³n %s contra Â«%sÂ» no se puede usar cuando se crea un objeto compartido; recompile con -fPIC\n"
+
+#: elfxx-mips.c:9381
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "SÃ­mbolo IFUNC %s en la tabla de sÃ­mbolos dinÃ¡micos: no se admiten IFUNCS"
+
+#: elfxx-mips.c:9384
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "sÃ­mbolo no dinÃ¡mico %s en la tabla de sÃ­mbolos dinÃ¡micos"
+
+#: elfxx-mips.c:9604
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
-msgstr "reubicaciones que no son dinÃ¡micas se refieren al sÃ­mbolo dinÃ¡mico %s"
+msgstr "reubicaciones que no son dinÃ¡micas hacen referencia al sÃ­mbolo dinÃ¡mico %s"
 
-#: elfxx-mips.c:10146
+#: elfxx-mips.c:10539
 #, c-format
-msgid "%B: Can't find matching LO16 reloc against `%s' for %s at %#Lx in section `%A'"
-msgstr "%B: no se puede encontrar una reubicaciÃ³n LO16 coincidente contra Â«%sÂ» para %s en %#Lx en la secciÃ³n `%A'"
+msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
+msgstr "%pB: no se puede encontrar una reubicaciÃ³n LO16 coincidente contra Â«%sÂ» para %s en %#<PRIx64> en la secciÃ³n Â«%pAÂ»"
 
-#: elfxx-mips.c:10286
-msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
-msgstr "la secciÃ³n small-data excede los 64KB; disminuya el lÃ­mite de tamaÃ±o de small-data (vea la opciÃ³n -G)"
+#: elfxx-mips.c:10679
+msgid "small-data section too large; lower small-data size limit (see option -G)"
+msgstr "la secciÃ³n small-data es demasiado grande; disminuya el lÃ­mite de tamaÃ±o de small-data (consulte la opciÃ³n -G)"
 
-#: elfxx-mips.c:10305
-msgid "Cannot convert a jump to JALX for a non-word-aligned address"
-msgstr "No puede convertir una omisiÃ³n a JALX para una direcciÃ³n que no estÃ¡ alineada con word"
+#: elfxx-mips.c:10698
+msgid "cannot convert a jump to JALX for a non-word-aligned address"
+msgstr "no se puede convertir un salto a JALX para una direcciÃ³n que no estÃ¡ alineada a palabras"
 
-#: elfxx-mips.c:10308
-msgid "Jump to a non-word-aligned address"
-msgstr "Omite a una direcciÃ³n no alineada con word"
+#: elfxx-mips.c:10701
+msgid "jump to a non-word-aligned address"
+msgstr "salto a una direcciÃ³n no alineada a palabras"
 
-#: elfxx-mips.c:10309
-msgid "Jump to a non-instruction-aligned address"
-msgstr "Omite a una direcciÃ³n que no estÃ¡ alineada con instrucciÃ³n"
+#: elfxx-mips.c:10702
+msgid "jump to a non-instruction-aligned address"
+msgstr "salto a una direcciÃ³n que no estÃ¡ alineada con instrucciones"
 
-#: elfxx-mips.c:10312
-msgid "Cannot convert a branch to JALX for a non-word-aligned address"
-msgstr "No puede convertir una rama a JALX para una direcciÃ³n no estÃ¡ alineada con word"
+#: elfxx-mips.c:10705
+msgid "cannot convert a branch to JALX for a non-word-aligned address"
+msgstr "no se puede convertir una rama a JALX para una direcciÃ³n que no estÃ¡ alineada a palabras"
 
-#: elfxx-mips.c:10314
-msgid "Branch to a non-instruction-aligned address"
-msgstr "Rama a una direcciÃ³n que no estÃ¡ alineada con instrucciÃ³n"
+#: elfxx-mips.c:10707
+msgid "branch to a non-instruction-aligned address"
+msgstr "rama a una direcciÃ³n que no estÃ¡ alineada con instrucciones"
 
-#: elfxx-mips.c:10316
+#: elfxx-mips.c:10709
 msgid "PC-relative load from unaligned address"
-msgstr "Carga relativa PC desde direcciÃ³n no alineada"
+msgstr "Carga relativa a PC desde direcciÃ³n no alineada"
+
+#: elfxx-mips.c:11009
+#, c-format
+msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr "%pB: VMA de entrada Â«%pAÂ» de %#<PRIx64> fuera del rango de 32 bits admitido; considere usar Â«-Ttext-segment=...Â»"
 
-#: elfxx-mips.c:10690 elfxx-mips.c:11258
+#: elfxx-mips.c:11124 elfxx-mips.c:11711
 #, c-format
-msgid "%B: `%A' offset of %Ld from `%A' beyond the range of ADDIUPC"
-msgstr "%B: desplazamiento `%A' de %Ld desde `%A' mÃ¡s allÃ¡ que el rango de ADDIUPC"
+msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
+msgstr "%pB: desplazamiento Â«%pAÂ» de %<PRId64> desde Â«%pAÂ» mÃ¡s allÃ¡ del rango de ADDIUPC"
 
-#: elfxx-mips.c:14121
+#: elfxx-mips.c:11683
 #, c-format
-msgid "%B: Unknown architecture %s"
-msgstr "%B: arquitectura %d desconocida"
+msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr "%pB: VMA de inicio Â«%pAÂ» de %#<PRIx64> fuera del rango de 32 bits admitido; considere usar Â«-Ttext-segment=...Â»"
 
-#: elfxx-mips.c:14380
-msgid "%B: .reginfo section size should be %d bytes, actual size is %d"
-msgstr "%B: tamaÃ±o de secciÃ³n .reginfo deberÃ­a ser de %d bytes, tamaÃ±o actual es %d"
+#: elfxx-mips.c:13429 reloc.c:8605
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr "%X%P: %pB(%pA): error: la reubicaciÃ³n para el desplazamiento %V no tiene ningÃºn valor\n"
 
-#: elfxx-mips.c:14659
+#: elfxx-mips.c:14741
 #, c-format
-msgid "%B: illegal section name `%A'"
-msgstr "%B: nombre de secciÃ³n ilegal `%A'"
+msgid "%pB: unknown architecture %s"
+msgstr "%pB: arquitectura %s desconocida"
 
-#: elfxx-mips.c:14936
-msgid "%B: warning: linking abicalls files with non-abicalls files"
-msgstr "%B: aviso: se enlazan ficheros de llamadas ABI con ficheros que no son de llamadas ABI"
+#: elfxx-mips.c:15269
+#, c-format
+msgid "%pB: illegal section name `%pA'"
+msgstr "%pB: nombre de secciÃ³n ilegal Â«%pAÂ»"
 
-#: elfxx-mips.c:14953
-msgid "%B: linking 32-bit code with 64-bit code"
-msgstr "%B: se enlaza cÃ³digo de 32-bit con cÃ³digo de 64-bit"
+#: elfxx-mips.c:15546
+#, c-format
+msgid "%pB: warning: linking abicalls files with non-abicalls files"
+msgstr "%pB: aviso: se enlazan ficheros de llamadas ABI con ficheros que no son de llamadas ABI"
+
+#: elfxx-mips.c:15563
+#, c-format
+msgid "%pB: linking 32-bit code with 64-bit code"
+msgstr "%pB: se enlaza cÃ³digo de 32 bits con cÃ³digo de 64 bits"
 
-#: elfxx-mips.c:14985 elfxx-mips.c:15051 elfxx-mips.c:15066
+#: elfxx-mips.c:15595 elfxx-mips.c:15661 elfxx-mips.c:15676
 #, c-format
-msgid "%B: linking %s module with previous %s modules"
-msgstr "%B: se enlaza el mÃ³dulo %s con mÃ³dulos %s previos"
+msgid "%pB: linking %s module with previous %s modules"
+msgstr "%pB: se enlaza el mÃ³dulo %s con mÃ³dulos %s anteriores"
 
-#: elfxx-mips.c:15009
+#: elfxx-mips.c:15619
 #, c-format
-msgid "%B: ABI mismatch: linking %s module with previous %s modules"
-msgstr "%B: no coincide ABI: se enlaza el mÃ³dulo %s con mÃ³dulos %s previos"
+msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
+msgstr "%pB: no coincide ABI: enlazando el mÃ³dulo %s con mÃ³dulos %s anteriores"
 
-#: elfxx-mips.c:15034
+#: elfxx-mips.c:15644
 #, c-format
-msgid "%B: ASE mismatch: linking %s module with previous %s modules"
-msgstr "%B: no coincide ASE: se enlaza el mÃ³dulo %s con mÃ³dulos %s previos"
+msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
+msgstr "%pB: no coincide ASE: enlazando el mÃ³dulo %s con mÃ³dulos %s anteriores"
 
-#: elfxx-mips.c:15168
-msgid "Warning: %B uses unknown floating point ABI %d (set by %B), %B uses unknown floating point ABI %d"
-msgstr "Aviso: %B emplea la ABI de coma flotante desconocida %d (establecida por %B), %B emplea ABI con coma flotante %d desconocida"
+#: elfxx-mips.c:15778
+#, 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 ABI de coma flotante desconocido %d (establecido por %pB), %pB usa ABI de coma flotante %d desconocido"
 
-#: elfxx-mips.c:15174
+#: elfxx-mips.c:15784
 #, c-format
-msgid "Warning: %B uses unknown floating point ABI %d (set by %B), %B uses %s"
-msgstr "Aviso: %B utiliza coma flotante ABI %d (establecido por %B), %B emplea %s"
+msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
+msgstr "aviso: %pB usa ABI de coma flotante desconocido %d (establecido por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15180
+#: elfxx-mips.c:15790
 #, c-format
-msgid "Warning: %B uses %s (set by %B), %B uses unknown floating point ABI %d"
-msgstr "Aviso: %B emplea %s (establece por %B), %B emplea punto flotante ABI desconocido %d"
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
+msgstr "aviso: %pB usa %s (establecido por %pB), %pB usa ABI de coma flotante desconocido %d"
 
-#: elfxx-mips.c:15194
+#: elfxx-mips.c:15804
 #, c-format
-msgid "Warning: %B uses %s (set by %B), %B uses %s"
-msgstr "Aviso: %B emplea %s (establecido por %B), %B emplea %s"
+msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
+msgstr "aviso: %pB usa %s (establecido por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15213
+#: elfxx-mips.c:15823
 #, c-format
-msgid "Warning: %B uses %s (set by %B), %B uses unknown MSA ABI %d"
-msgstr "Aviso: %B utiliza %s (establecido por %B), %B utiliza ABI MSA desconocido %d"
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr "aviso: %pB usa %s (establecido por %pB), %pB usa ABI MSA desconocido %d"
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15835
 #, c-format
-msgid "Warning: %B uses unknown MSA ABI %d (set by %B), %B uses %s"
-msgstr "Aviso: %B emplea la ABI MSA desconocida%d (establece por %B), %B emplea %s"
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
+msgstr "aviso: %pB usa ABI MSA desconocido %d (establecido por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15234
+#: elfxx-mips.c:15844
 #, c-format
-msgid "Warning: %B uses unknown MSA ABI %d (set by %B), %B uses unknown MSA ABI %d"
-msgstr "Aviso: %B emplea MSA ABI %d desconocida (establece por %B), %B emplea MSA ABI %d"
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr "aviso: %pB usa ABI MSA desconocido %d (establecido por %pB), %pB usa ABI MSA desconocido %d"
 
-#: elfxx-mips.c:15296
-msgid "%B: endianness incompatible with that of the selected emulation"
-msgstr "%B: endianez es incompatible con aquella de la emulaciÃ³n seleccionada"
+#: elfxx-mips.c:15906
+#, c-format
+msgid "%pB: endianness incompatible with that of the selected emulation"
+msgstr "%pB: la endianidad es incompatible con la de la emulaciÃ³n seleccionada"
 
-#: elfxx-mips.c:15310
-msgid "%B: ABI is incompatible with that of the selected emulation"
-msgstr "%B: la ABI es incompatible con aquella de la emulaciÃ³n seleccionada"
+#: elfxx-mips.c:15920
+#, c-format
+msgid "%pB: ABI is incompatible with that of the selected emulation"
+msgstr "%pB: ABI es incompatible con el de la emulaciÃ³n seleccionada"
 
-#: elfxx-mips.c:15362
-msgid "%B: warning: Inconsistent ISA between e_flags and .MIPS.abiflags"
-msgstr "%B: aviso: ISA inconsistente entre e_flags y .MIPS.abiflags"
+#: elfxx-mips.c:15973
+#, c-format
+msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
+msgstr "%pB: aviso: ISA inconsistente entre e_flags y .MIPS.abiflags"
 
-#: elfxx-mips.c:15367
-msgid "%B: warning: Inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
-msgstr "%B: aviso: ABI FP inconsistente entre .gnu.attributes y .MIPS.abiflags"
+#: elfxx-mips.c:15978
+#, c-format
+msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
+msgstr "%pB: aviso: ABI FP inconsistente entre .gnu.attributes y .MIPS.abiflags"
 
-#: elfxx-mips.c:15371
-msgid "%B: warning: Inconsistent ASEs between e_flags and .MIPS.abiflags"
-msgstr "%B: aviso: ASEs inconsistentes entre e_flags y .MIPS.abiflags"
+#: elfxx-mips.c:15982
+#, c-format
+msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
+msgstr "%pB: aviso: ASEs inconsistentes entre e_flags y .MIPS.abiflags"
 
-#: elfxx-mips.c:15378
-msgid "%B: warning: Inconsistent ISA extensions between e_flags and .MIPS.abiflags"
-msgstr "%B: aviso: Extensiones ISA inconsistente entre e_flags y .MIPS.abiflags"
+#: elfxx-mips.c:15989
+#, c-format
+msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
+msgstr "%pB: aviso: extensiones ISA inconsistentes entre e_flags y .MIPS.abiflags"
 
-#: elfxx-mips.c:15382
-msgid "%B: warning: Unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
-msgstr "%B: aviso: Marca inesperada den el campo flags2 de  .MIPS.abiflags (0x%lx)"
+#: elfxx-mips.c:15993
+#, c-format
+msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
+msgstr "%pB: aviso: marca inesperada en el campo flags2 de .MIPS.abiflags (0x%lx)"
 
-#: elfxx-mips.c:15571
+#: elfxx-mips.c:16184
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
-msgstr "-mips32r2 -mfp64 (12 llamadas-guardadas)"
+msgstr "-mips32r2 -mfp64 (12 guardadas por callee)"
 
-#: elfxx-mips.c:15621 elfxx-mips.c:15632
+#: elfxx-mips.c:16246 elfxx-mips.c:16257
 msgid "None"
 msgstr "Ninguno"
 
-#: elfxx-mips.c:15623 elfxx-mips.c:15695
+#: elfxx-mips.c:16248 elfxx-mips.c:16317
 msgid "Unknown"
-msgstr "Desconocida"
+msgstr "Desconocido"
 
-#: elfxx-mips.c:15706
+#: elfxx-mips.c:16328
 #, c-format
 msgid "Hard or soft float\n"
-msgstr "Hard o soft flotante\n"
+msgstr "Flotante hard o soft\n"
 
-#: elfxx-mips.c:15709
+#: elfxx-mips.c:16331
 #, c-format
 msgid "Hard float (double precision)\n"
-msgstr "Coma flotante de hard (precisiÃ³n doble)\n"
+msgstr "Flotante hard (precisiÃ³n doble)\n"
 
-#: elfxx-mips.c:15712
+#: elfxx-mips.c:16334
 #, c-format
 msgid "Hard float (single precision)\n"
-msgstr "Coma flotante de hard (precisiÃ³n sencilla)\n"
+msgstr "Flotante hard (precisiÃ³n simple)\n"
 
-#: elfxx-mips.c:15715
+#: elfxx-mips.c:16337
 #, c-format
 msgid "Soft float\n"
 msgstr "Flotante soft\n"
 
-#: elfxx-mips.c:15718
+#: elfxx-mips.c:16340
 #, c-format
 msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
-msgstr "Flotante hard (FPU 12 llamadas-guardadas MIPS32r2 de 64-bit)\n"
+msgstr "Flotante hard (FPU de 64 bits MIPS32r2 12 guardadas por callee)\n"
 
-#: elfxx-mips.c:15721
+#: elfxx-mips.c:16343
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
-msgstr "Flotante Hard (32-bit CPU, cualquier FPU)\n"
+msgstr "Flotante hard (CPU de 32 bits, cualquier FPU)\n"
 
-#: elfxx-mips.c:15724
+#: elfxx-mips.c:16346
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
-msgstr "Flotante Hard (32-bit CPU, 64-bit FPU)\n"
+msgstr "Flotante hard (CPU de 32 bits, FPU de 64 bits)\n"
 
-#: elfxx-mips.c:15727
+#: elfxx-mips.c:16349
 #, c-format
 msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
-msgstr "Flotante Hard compacto (32-bit CPU, 64-bit FPU)\n"
+msgstr "Flotante hard compacto (CPU de 32 bits, FPU de 64 bits)\n"
 
-#: elfxx-mips.c:15759
+#: elfxx-mips.c:16381
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:15761
+#: elfxx-mips.c:16383
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:15763
+#: elfxx-mips.c:16385
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:15765
+#: elfxx-mips.c:16387
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:15767
+#: elfxx-mips.c:16389
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi desconocido]"
 
-#: elfxx-mips.c:15769
+#: elfxx-mips.c:16391
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:15771
+#: elfxx-mips.c:16393
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:15773
+#: elfxx-mips.c:16395
 #, c-format
 msgid " [no abi set]"
-msgstr " [no hay conjunto abi]"
+msgstr " [no abi establecido]"
 
-#: elfxx-mips.c:15798
+#: elfxx-mips.c:16420
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [ISA desconocido]"
 
-#: elfxx-mips.c:15818
+#: elfxx-mips.c:16440
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [no es modo 32bit]"
 
-#: elfxx-riscv.c:955
+#: elfxx-riscv.c:1699
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr "la extensiÃ³n x ISA Â«%sÂ» debe configurarse con las versiones"
+
+#: elfxx-riscv.c:1705
 #, c-format
-msgid "unrecognized relocation (0x%x)"
-msgstr "reubicaciÃ³n no reconocida (0x%x)"
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr "no se pueden encontrar las versiones predeterminadas de la extensiÃ³n ISA Â«%sÂ»"
 
-#: elfxx-sparc.c:639
+#: elfxx-riscv.c:1811
 #, c-format
-msgid "invalid relocation type %d"
-msgstr "tipo de reubicaciÃ³n %d invÃ¡lido"
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr "%s: la primera extensiÃ³n ISA debe ser Â«eÂ», Â«iÂ» o Â«gÂ»"
 
-#: elfxx-sparc.c:3129
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:5024
+#: elfxx-riscv.c:1835
 #, c-format
-msgid "%B: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
-msgstr "%B: reubicaciÃ³n %s frente al sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» no es manipulada por %s"
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr "%s: extensiÃ³n ISA estÃ¡ndar desconocida o clase de prefijo Â«%cÂ»"
 
-#: elfxx-tilegx.c:4241
+#: elfxx-riscv.c:1871
 #, c-format
-msgid "%B: Cannot link together %s and %s objects."
-msgstr "%B: No se pueden enlazar juntos los objetos %s y %s."
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr "%s: la extensiÃ³n ISA con prefijo no vÃ¡lida Â«%sÂ» termina con <number>p"
 
-#: elfxx-x86.c:570
+#: elfxx-riscv.c:1895
 #, c-format
-msgid "%P: %B: warning: relocation against `%s' in read-only section `%A'\n"
-msgstr "%P: %B: aviso: reubicaciÃ³n contra Â«%sÂ» en secciÃ³n `%A' de sÃ³lo lectura\n"
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr "%s: extensiÃ³n ISA prefijada desconocida Â«%sÂ»"
 
-#: elfxx-x86.c:954
-msgid "%P: %B: warning: relocation in read-only section `%A'\n"
-msgstr "%P: %B: aviso: reubicaciÃ³n en secciÃ³n de sÃ³lo lectura `%A'\n"
+#: elfxx-riscv.c:1919
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr "%s: la extensiÃ³n ISA con prefijo debe separarse con _"
 
-#: elfxx-x86.c:1287
-msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
-msgstr "%P%X: segmento de sÃ³lo lectura tiene reubicaciones dinÃ¡micas IFUNC; recompile con -fPIC\n"
+#: elfxx-riscv.c:1973
+#, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr "rv%de no admite la extensiÃ³n Â«hÂ»"
 
-#: elfxx-x86.c:2241
-msgid "error: %B: <corrupt x86 ISA used size: 0x%x>"
-msgstr "error: %B: <corrompe tamaÃ±o ISA x86 utilizado: 0x%x>"
+#: elfxx-riscv.c:1981
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr "rv%d no admite la extensiÃ³n Â«qÂ»"
 
-#: elfxx-x86.c:2243
-msgid "error: %B: <corrupt x86 ISA needed size: 0x%x>"
-msgstr "error: %B: <corrompe tamaÃ±o ISA x86 requerido: 0x%x>"
+#: elfxx-riscv.c:1988
+#, c-format
+msgid "rv%d does not support the `zcf' extension"
+msgstr "rv%d no admite la extensiÃ³n Â«zcfÂ»"
 
-#: elfxx-x86.c:2244
-msgid "error: %B: <corrupt x86 feature size: 0x%x>"
-msgstr "error: %B: <corrompe tamaÃ±o caracterÃ­stico x86: 0x%x>"
+#: elfxx-riscv.c:1995
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr "Â«zfinxÂ» estÃ¡ en conflicto con la extensiÃ³n Â«f/d/q/zfh/zfhminÂ»"
 
-#: elfxx-x86.c:2416
-msgid "%F%P: failed to create GNU property section\n"
-msgstr "%F%P: fallado al crear secciÃ³n propietaria GNU\n"
+#: elfxx-riscv.c:2002
+msgid "`xtheadvector' is conflict with the `v' extension"
+msgstr "Â«xtheadvectorÂ» estÃ¡ en conflicto con la extensiÃ³n Â«vÂ»"
 
-#: elfxx-x86.c:2421
+#: elfxx-riscv.c:2023
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr "las extensiones zvl*b necesitan activar la extensiÃ³n Â«vÂ» o Â«zveÂ»"
+
+#: elfxx-riscv.c:2085
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr "%s: la cadena ISA no puede contener letras mayÃºsculas"
+
+#: elfxx-riscv.c:2113
+#, c-format
+msgid "%s: ISA string must begin with rv32 or rv64"
+msgstr "%s: la cadena ISA debe comenzar con rv32 o rv64"
+
+#: elfxx-riscv.c:2339
 #, c-format
-msgid "%F%A: failed to align section\n"
-msgstr "%F%A: fallÃ³ para alinear secciÃ³n\n"
+msgid "invalid ISA extension ends with <number>p in .option arch `%s'"
+msgstr "la extensiÃ³n ISA no vÃ¡lida termina con <number>p en la arquitectura de .option Â«%sÂ»"
+
+#: elfxx-riscv.c:2362
+#, c-format
+msgid "unknown ISA extension `%s' in .option arch `%s'"
+msgstr "extensiÃ³n ISA desconocida Â«%sÂ» en arquitectura de .option Â«%sÂ»"
+
+#: elfxx-riscv.c:2373
+#, c-format
+msgid "cannot + or - base extension `%s' in .option arch `%s'"
+msgstr "no se puede + o - la extensiÃ³n base Â«%sÂ» en la arquitectura de .option Â«%sÂ»"
+
+#: elfxx-riscv.c:2613 elfxx-riscv.c:2861
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr "interno: INSN_CLASS_* inalcanzable"
+
+#: elfxx-riscv.c:2648
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr "zihintntl' y `c', o `zihintntl' y `zca"
+
+#: elfxx-riscv.c:2653 elfxx-riscv.c:2671
+msgid "c' or `zca"
+msgstr "c' o `zca"
+
+#: elfxx-riscv.c:2659
+msgid "m' or `zmmul"
+msgstr "m' o `zmmul"
+
+#: elfxx-riscv.c:2677
+msgid "f' and `c', or `f' and `zcf"
+msgstr "f' y `c', o `f' y `zcf"
+
+#: elfxx-riscv.c:2682
+msgid "c' or `zcf"
+msgstr "c' o `zcf"
+
+#: elfxx-riscv.c:2688
+msgid "d' and `c', or `d' and `zcd"
+msgstr "d' y `c', o `d' y `zcd"
+
+#: elfxx-riscv.c:2693
+msgid "c' or `zcd"
+msgstr "c' o `zcd"
+
+#: elfxx-riscv.c:2695
+msgid "f' or `zfinx"
+msgstr "f' o `zfinx"
+
+#: elfxx-riscv.c:2697
+msgid "d' or `zdinx"
+msgstr "d' o `zdinx"
+
+#: elfxx-riscv.c:2699
+msgid "q' or `zqinx"
+msgstr "q' o `zqinx"
 
-#: elfxx-x86.c:2571
+#: elfxx-riscv.c:2701
+msgid "zfh' or `zhinx"
+msgstr "zfh' o `zhinx"
+
+#: elfxx-riscv.c:2705
+msgid "zfhmin' or `zhinxmin"
+msgstr "zfhmin' o `zhinxmin"
+
+#: elfxx-riscv.c:2716
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr "zfhmin' y `d', o `zhinxmin' y `zdinx"
+
+#: elfxx-riscv.c:2727
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr "zfhmin' y `q', o `zhinxmin' y `zqinx"
+
+#: elfxx-riscv.c:2733
+msgid "d' and `zfa"
+msgstr "d' y `zfa"
+
+#: elfxx-riscv.c:2741
+msgid "q' and `zfa"
+msgstr "q' y `zfa"
+
+#: elfxx-riscv.c:2749
+msgid "zfh' and `zfa"
+msgstr "zfh' y `zfa"
+
+#: elfxx-riscv.c:2759
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr "zfh' y `zfa', o `zvfh' y `zfa"
+
+#: elfxx-riscv.c:2764
+msgid "zfh' or `zvfh"
+msgstr "zfh' o `zvfh"
+
+#: elfxx-riscv.c:2780
+msgid "zbb' or `zbkb"
+msgstr "zbb' o `zbkb"
+
+#: elfxx-riscv.c:2782
+msgid "zbc' or `zbkc"
+msgstr "zbc' o `zbkc"
+
+#: elfxx-riscv.c:2790
+msgid "zknd' or `zkne"
+msgstr "zknd' o `zkne"
+
+#: elfxx-riscv.c:2796
+msgid "v' or `zve64x' or `zve32x"
+msgstr "v' o `zve64x' o `zve32x"
+
+#: elfxx-riscv.c:2798
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr "v' o `zve64d' o `zve64f' o `zve32f"
+
+#: elfxx-riscv.c:2800
+msgid "zvbb"
+msgstr "zvbb"
+
+#: elfxx-riscv.c:2802
+msgid "zvbc"
+msgstr "zvbc"
+
+#: elfxx-riscv.c:2804
+msgid "zvkb"
+msgstr "zvkb"
+
+#: elfxx-riscv.c:2806
+msgid "zvkg"
+msgstr "zvkg"
+
+#: elfxx-riscv.c:2808
+msgid "zvkned"
+msgstr "zvkned"
+
+#: elfxx-riscv.c:2810
+msgid "zvknha' or `zvknhb"
+msgstr "zvknha' o `zvknhb"
+
+#: elfxx-riscv.c:2812
+msgid "zvksed"
+msgstr "zvksed"
+
+#: elfxx-riscv.c:2814
+msgid "zvksh"
+msgstr "zvksh"
+
+#: elfxx-riscv.c:2818
+msgid "zcb' and `zba"
+msgstr "zcb' y `zba"
+
+#: elfxx-riscv.c:2820
+msgid "zcb' and `zbb"
+msgstr "zcb' y `zbb"
+
+#: elfxx-riscv.c:2822
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr "zcb' y `zmmul', o `zcb' y `m"
+
+#: elfxx-riscv.c:2826
+msgid "h"
+msgstr "h"
+
+#: elfxx-sparc.c:3021 elfnn-aarch64.c:5738
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
+msgstr "%pB: la reubicaciÃ³n %s contra el sÃ­mbolo STT_GNU_IFUNC Â«%sÂ» no es manejado por %s"
+
+#: elfxx-tilegx.c:4126
+#, c-format
+msgid "%pB: cannot link together %s and %s objects"
+msgstr "%pB: no se pueden enlazar juntos los objetos %s y %s"
+
+#: elfxx-x86.c:536 elfxx-x86.c:3440
+#, c-format
+msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr "%F%P: %pB: reubicaciÃ³n de copia contra el sÃ­mbolo protegido que no se puede copiar Â«%sÂ» en %pB\n"
+
+#: elfxx-x86.c:1043
+#, c-format
+msgid "%F%P: %pB: failed to allocate relative reloc record\n"
+msgstr "%F%P: %pB: no se pudo asignar el registro de reubicaciÃ³n relativo\n"
+
+#: elfxx-x86.c:1399
+#, c-format
+msgid "%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr "%F%P: %pB: no se pudo asignar el mapa de bits DT_RELR de 64 bits\n"
+
+#: elfxx-x86.c:1435
+#, c-format
+msgid "%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr "%F%P: %pB: no se pudo asignar el mapa de bits DT_RELR de 32 bits\n"
+
+#: elfxx-x86.c:1574
+#, c-format
+msgid "%F%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr "%F%P: %pB: no se pudo asignar memoria para la secciÃ³n Â«%pAÂ»\n"
+
+#: elfxx-x86.c:1761
+#, c-format
+msgid "%F%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr "%F%P: %pB: ha cambiado el tamaÃ±o de la secciÃ³n de reubicaciÃ³n relativa compacta: nuevo (%lu) != antiguo (%lu)\n"
+
+#: elfxx-x86.c:1783
+#, c-format
+msgid "%F%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr "%F%P: %pB: no se pudo asignar la secciÃ³n de reubicaciÃ³n relativa compacta\n"
+
+#: elfxx-x86.c:2230
+#, c-format
+msgid "%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%F%P: %pB: la reubicaciÃ³n %s contra el sÃ­mbolo absoluto Â«%sÂ» en la secciÃ³n Â«%pAÂ» no estÃ¡ permitido\n"
+
+#: elfxx-x86.c:2312
+msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
+msgstr "%P: %pB: aviso: reubicaciÃ³n en secciÃ³n de sÃ³lo lectura Â«%pAÂ»\n"
+
+#: elfxx-x86.c:3193
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (desplaz: 0x%v, info: 0x%v, sumando: 0x%v) sobre Â«%sÂ» para la secciÃ³n Â«%pAÂ» en %pB\n"
+
+#: elfxx-x86.c:3199
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (desplaz: 0x%v, info: 0x%v) contra Â«%sÂ» para la secciÃ³n Â«%pAÂ» en %pB\n"
+
+#: elfxx-x86.c:3819
+#, c-format
+msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
+msgstr "error: %pB: <tamaÃ±o de propiedad x86 (0x%x) corrupto: 0x%x>"
+
+#: elfxx-x86.c:4166
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: aviso: falta %s\n"
+
+#: elfxx-x86.c:4167
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: error: falta %s\n"
+
+#: elfxx-x86.c:4230
+msgid "IBT and SHSTK properties"
+msgstr "Propiedades IBT y SHSTK"
+
+#: elfxx-x86.c:4232
+msgid "IBT property"
+msgstr "Propiedad IBT"
+
+#: elfxx-x86.c:4234
+msgid "SHSTK property"
+msgstr "Propiedad SHSTK"
+
+#: elfxx-x86.c:4239
+msgid "LAM_U48 property"
+msgstr "Propiedad LAM_U48"
+
+#: elfxx-x86.c:4244
+msgid "LAM_U57 property"
+msgstr "Propiedad LAM_U57"
+
+#: elfxx-x86.c:4413
 msgid "%F%P: failed to create VxWorks dynamic sections\n"
-msgstr "%F%P: fallado al crear secciones dinÃ¡micas VxWorks\n"
+msgstr "%F%P: fallado al crear las secciones dinÃ¡micas VxWorks\n"
 
-#: elfxx-x86.c:2580
+#: elfxx-x86.c:4422
 msgid "%F%P: failed to create GOT sections\n"
-msgstr "%F%P: fallado al crear secciÃ³n GOT\n"
+msgstr "%F%P: fallado al crear la secciÃ³n GOT\n"
 
-#: elfxx-x86.c:2598
+#: elfxx-x86.c:4440
 msgid "%F%P: failed to create ifunc sections\n"
-msgstr "%F%P: fallado al crear secciÃ³n ifunc\n"
+msgstr "%F%P: fallado al crear las secciones ifunc\n"
 
-#: elfxx-x86.c:2639
+#: elfxx-x86.c:4477
 msgid "%F%P: failed to create GOT PLT section\n"
-msgstr "%F%P: fallado al crear secciÃ³n GOT PLT\n"
+msgstr "%F%P: fallado al crear la secciÃ³n GOT PLT\n"
 
-#: elfxx-x86.c:2660
+#: elfxx-x86.c:4496
 msgid "%F%P: failed to create IBT-enabled PLT section\n"
-msgstr "%F%P: fallado al crear secciÃ³n PLT IBT-activo\n"
-
-#: elfxx-x86.c:2675
-msgid "%F%P: failed to create BND PLT section\n"
-msgstr "%F%P: fallado al crear secciÃ³n BND PLT\n"
+msgstr "%F%P: fallado al crear la secciÃ³n PLT IBT-activado\n"
 
-#: elfxx-x86.c:2696
+#: elfxx-x86.c:4516
 msgid "%F%P: failed to create PLT .eh_frame section\n"
-msgstr "%F%P: fallado al crear secciÃ³n PLT .eh_frame\n"
+msgstr "%F%P: fallado al crear la secciÃ³n PLT .eh_frame\n"
 
-#: elfxx-x86.c:2709
+#: elfxx-x86.c:4529
 msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
-msgstr "%F%P: fallado al crear secciÃ³n GOT PLT .eh_frame\n"
+msgstr "%F%P: fallado al crear la secciÃ³n GOT PLT .eh_frame\n"
 
-#: elfxx-x86.c:2723
+#: elfxx-x86.c:4543
 msgid "%F%P: failed to create the second PLT .eh_frame section\n"
-msgstr "%F%P: fallado al crear secciÃ³n PLT .eh_frame\n"
+msgstr "%F%P: fallado al crear la secciÃ³n PLT .eh_frame\n"
 
-#: i386linux.c:416 m68klinux.c:419 sparclinux.c:412
+#: elfxx-x86.c:4563
+msgid "%F%P: failed to create PLT .sframe section\n"
+msgstr "%F%P: fallado al crear la secciÃ³n PLT .sframe\n"
+
+#: elfxx-x86.c:4578
+msgid "%F%P: failed to create second PLT .sframe section\n"
+msgstr "%F%P: fallado al crear la segunda secciÃ³n PLT .sframe\n"
+
+#: elfxx-x86.c:4618
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: se intentÃ³ un enlace estÃ¡tico de un objeto dinÃ¡mico Â«%pBÂ»\n"
+
+#: ihex.c:230
+#, c-format
+msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
+msgstr "%pB:%d: carÃ¡cter Â«%sÂ» inesperado en el fichero Intel Hex"
+
+#: ihex.c:338
 #, c-format
-msgid "Output file requires shared library `%s'\n"
-msgstr "El fichero de salida requiere la biblioteca compartida Â«%sÂ»\n"
+msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
+msgstr "%pB:%u: suma de comprobaciÃ³n incorrecta en el fichero Intel Hex (se esperaba %u, se obtuvo %u)"
 
-#: i386linux.c:424 m68klinux.c:428 sparclinux.c:421
+#: ihex.c:393
 #, c-format
-msgid "Output file requires shared library `%s.so.%s'\n"
-msgstr "El fichero de salida requiere la biblioteca compartida Â«%s.so.%sÂ»\n"
+msgid "%pB:%u: bad extended address record length in Intel Hex file"
+msgstr "%pB:%u: longitud de registro de direcciÃ³n extendida incorrecta en el fichero Intel Hex"
 
-#: i386linux.c:611 i386linux.c:661 m68klinux.c:617 m68klinux.c:665
-#: sparclinux.c:608 sparclinux.c:658
+#: ihex.c:411
 #, c-format
-msgid "Symbol %s not defined for fixups\n"
-msgstr "El sÃ­mbolo %s no estÃ¡ definido para composturas\n"
+msgid "%pB:%u: bad extended start address length in Intel Hex file"
+msgstr "%pB:%u: longitud de direcciÃ³n de inicio extendida incorrecta en el fichero Intel Hex"
 
-#: i386linux.c:685 m68klinux.c:689 sparclinux.c:682
-msgid "Warning: fixup count mismatch\n"
-msgstr "Aviso: no coincide la cuenta de composturas\n"
+#: ihex.c:429
+#, c-format
+msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
+msgstr "%pB:%u: longitud de registro de direcciÃ³n lineal extendida incorrecta en el fichero Intel Hex"
 
-#: ieee.c:159
+#: ihex.c:447
 #, c-format
-msgid "%B: string too long (%ld chars, max 65535)"
-msgstr "%B: cadena muy larga (%ld caracteres, mÃ¡x 65535)"
+msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
+msgstr "%pB:%u: longitud de direcciÃ³n de inicio lineal extendida incorrecta en el fichero Intel Hex"
 
-#: ieee.c:226
+#: ihex.c:465
 #, c-format
-msgid "IEEE parser: string length: %#lx longer than buffer: %#lx"
-msgstr "Interpretador IEEE: longitud de cadena textual: %#lx mÃ¡s largo que bÃºfer: %#lx"
+msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
+msgstr "%pB:%u: no se reconoce el tipo ihex %u en el fichero Intel Hex"
 
-#: ieee.c:302
+#: ihex.c:581
 #, c-format
-msgid "%B: unrecognized symbol `%s' flags 0x%x"
-msgstr "%B: sÃ­mbolo Â«%sÂ» marcas 0x%x no reconocido"
+msgid "%pB: internal error in ihex_read_section"
+msgstr "%pB: error interno en ihex_read_section"
 
-#: ieee.c:837
+#: ihex.c:614
 #, c-format
-msgid "%B: unimplemented ATI record %u for symbol %u"
-msgstr "%B: registro ATI %u sin implementar para el sÃ­mbolo %u"
+msgid "%pB: bad section length in ihex_read_section"
+msgstr "%pB: longitud de secciÃ³n incorrecta en ihex_read_section"
 
-#: ieee.c:862
+#: ihex.c:785
 #, c-format
-msgid "%B: unexpected ATN type %Ld in external part"
-msgstr "%B: tipo ATN %Ld inesperado en la parte externa"
+msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
+msgstr "%pB: la direcciÃ³n de 64 bits %#<PRIx64> estÃ¡ fuera de rango para el fichero Intel Hex"
 
-#: ieee.c:884
-msgid "%B: unexpected type after ATN"
-msgstr "%B: tipo inesperado despuÃ©s de ATN"
+#: ihex.c:843
+#, c-format
+msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
+msgstr "%pB: la direcciÃ³n %#<PRIx64> estÃ¡ fuera de rango para el fichero Intel Hex"
 
-#: ihex.c:230
+#: libbfd.c:1058
 #, c-format
-msgid "%B:%d: unexpected character `%s' in Intel Hex file"
-msgstr "%B:%d: carÃ¡cter Â«%sÂ» inesperado en el fichero Hex Intel"
+msgid "%pB: unable to get decompressed section %pA"
+msgstr "%pB: no se puede obtener la secciÃ³n %pA descomprimida"
 
-#: ihex.c:338
+#: linker.c:1713
+#, c-format
+msgid "%pB: indirect symbol `%s' to `%s' is a loop"
+msgstr "%pB: el sÃ­mbolo indirecto Â«%sÂ» para Â«%sÂ» es un bucle"
+
+#: linker.c:1793
+msgid "%P: %pB: note: the message above does not take linker garbage collection into account\n"
+msgstr "%P: %pB: nota: el mensaje anterior no tiene en cuenta la recolecciÃ³n de basura del enlazador\n"
+
+#: linker.c:2591
+#, c-format
+msgid "attempt to do relocatable link with %s input and %s output"
+msgstr "se intentÃ³ hacer un enlace reubicable con entrada %s y salida %s"
+
+#: linker.c:2870
+#, c-format
+msgid "%pB: ignoring duplicate section `%pA'\n"
+msgstr "%pB: se ignora la secciÃ³n duplicada Â«%pAÂ»\n"
+
+#: linker.c:2880 linker.c:2890
+#, c-format
+msgid "%pB: duplicate section `%pA' has different size\n"
+msgstr "%pB: la secciÃ³n duplicada Â«%pAÂ» tiene tamaÃ±o diferente\n"
+
+#: linker.c:2904 linker.c:2912
+#, c-format
+msgid "%pB: could not read contents of section `%pA'\n"
+msgstr "%pB: no se pudieron leer los contenidos de la secciÃ³n Â«%pAÂ»\n"
+
+#: linker.c:2921
 #, c-format
-msgid "%B:%u: bad checksum in Intel Hex file (expected %u, found %u)"
-msgstr "%B:%u: equivocaciÃ³n de comprobaciÃ³n sumatoria en el fichero Hex Intel (se esperaba %u, se obtuvo %u)"
+msgid "%pB: duplicate section `%pA' has different contents\n"
+msgstr "%pB: la secciÃ³n duplicada Â«%pAÂ» tiene contenidos diferentes\n"
 
-#: ihex.c:394
+#: linker.c:3440
 #, c-format
-msgid "%B:%u: bad extended address record length in Intel Hex file"
-msgstr "%B:%u: equivocaciÃ³n de longitud de registro de direcciÃ³n extendida en el fichero Hex Intel"
+msgid "%pB: compiled for a big endian system and target is little endian"
+msgstr "%pB: compilado para un sistema big endian y el objetivo es little endian"
 
-#: ihex.c:412
+#: linker.c:3443
 #, c-format
-msgid "%B:%u: bad extended start address length in Intel Hex file"
-msgstr "%B:%u: equivocaciÃ³n de longitud de direcciÃ³n de inicio extendida en el fichero Hex Intel"
+msgid "%pB: compiled for a little endian system and target is big endian"
+msgstr "%pB: compilado para un sistema little endian y el objetivo es big endian"
+
+#: mach-o-arm.c:169 mach-o-arm.c:301
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "par de reubicaciÃ³n de ARM mach-o mal formado: la reubicaciÃ³n es la primera reubicaciÃ³n"
 
-#: ihex.c:430
+#: mach-o-arm.c:185
 #, c-format
-msgid "%B:%u: bad extended linear address record length in Intel Hex file"
-msgstr "%B:%u: equivocaciÃ³n de longitud de registro de direcciÃ³n lineal extendida en el fichero Hex Intel"
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "par de reubicaciÃ³n de ARM mach-o mal formado: longitud no vÃ¡lida: %d"
 
-#: ihex.c:448
+#: mach-o-arm.c:200
 #, c-format
-msgid "%B:%u: bad extended linear start address length in Intel Hex file"
-msgstr "%B:%u: equivocaciÃ³n de longitud de direcciÃ³n de inicio lineal extendida en el fichero Hex Intel"
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "reubicaciÃ³n de sectdiff de ARM mach-o mal formada: longitud no vÃ¡lida: %d"
 
-#: ihex.c:466
+#: mach-o-arm.c:215
 #, c-format
-msgid "%B:%u: unrecognized ihex type %u in Intel Hex file"
-msgstr "%B:%u: no se reconoce el tipo ihex %u en el fichero Hex Intel"
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "reubicaciÃ³n de sectdiff local de ARM mach-o mal formada: longitud no vÃ¡lida: %d"
 
-#: ihex.c:585
-msgid "%B: internal error in ihex_read_section"
-msgstr "%B: error interno en ihex_read_section"
+#: mach-o-arm.c:230
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "reubicaciÃ³n de medio sectdiff de ARM mach-o mal formada: longitud no vÃ¡lida: %d"
 
-#: ihex.c:619
-msgid "%B: bad section length in ihex_read_section"
-msgstr "%B: longitud seccional equivocada en ihex_read_section"
+#: mach-o-arm.c:262
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr "reubicaciÃ³n estÃ¡ndar de ARM mach-o mal formada: longitud no vÃ¡lida: %d (pcrel: %d)"
 
-#: ihex.c:830
+#: mach-o-arm.c:332
 #, c-format
-msgid "%B: address %#Lx out of range for Intel Hex file"
-msgstr "%B: direcciÃ³n %#Lx estÃ¡ fuera de rango para el fichero Hexadecimal de Intel"
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "reubicaciÃ³n ARM mach-o mal formada: tipo de reubicaciÃ³n desconocido: %d"
 
-#: libbfd.c:799
+#: mach-o.c:640
 #, c-format
-msgid "%B: unable to get decompressed section %A"
-msgstr "%B: no se puede obtener la secciÃ³n %A descomprimida"
+msgid "<unknown mask flags>"
+msgstr "<marcas de mÃ¡scara desconocidas>"
+
+#: mach-o.c:695
+msgid " (<unknown>)"
+msgstr " (<desconocido>)"
 
-#: libbfd.c:963
+#: mach-o.c:707
 #, c-format
-msgid "Deprecated %s called at %s line %d in %s\n"
-msgstr "Se llamÃ³ a %s que es obsoleto en %s lÃ­nea %d en %s\n"
+msgid " MACH-O header:\n"
+msgstr " Encabezado de MACH-O:\n"
 
-#: libbfd.c:966
+#: mach-o.c:708
 #, c-format
-msgid "Deprecated %s called\n"
-msgstr "Se llamÃ³ a %s que es obsoleto\n"
+msgid "   magic:      %#lx\n"
+msgstr "   mÃ¡gico:     %#lx\n"
 
-#: linker.c:1678
+#: mach-o.c:709
 #, c-format
-msgid "%B: indirect symbol `%s' to `%s' is a loop"
-msgstr "%B: el sÃ­mbolo indirecto Â«%sÂ» para Â«%sÂ» es un bucle"
+msgid "   cputype:    %#lx (%s)\n"
+msgstr "   tipocpu:    %#lx (%s)\n"
 
-#: linker.c:2548
+#: mach-o.c:711
 #, c-format
-msgid "Attempt to do relocatable link with %s input and %s output"
-msgstr "Se intentÃ³ hacer un enlace reubicable con entrada %s y salida %s"
+msgid "   cpusubtype: %#lx%s\n"
+msgstr "   subtipocpu: %#lx%s\n"
 
-#: linker.c:2834
+#: mach-o.c:713
 #, c-format
-msgid "%B: ignoring duplicate section `%A'\n"
-msgstr "%B: se descarta la secciÃ³n duplicada `%A'\n"
+msgid "   filetype:   %#lx\n"
+msgstr "   tipoficher: %#lx\n"
 
-#: linker.c:2844 linker.c:2854
+#: mach-o.c:714
 #, c-format
-msgid "%B: duplicate section `%A' has different size\n"
-msgstr "%B: la secciÃ³n duplicada `%A' tiene tamaÃ±o diferente\n"
+msgid "   ncmds:      %#lx\n"
+msgstr "   ncmds:      %#lx\n"
 
-#: linker.c:2863 linker.c:2869
+#: mach-o.c:715
 #, c-format
-msgid "%B: could not read contents of section `%A'\n"
-msgstr "%B: no se puede leer el contenido de la secciÃ³n `%A'\n"
+msgid "   sizeocmds:  %#lx\n"
+msgstr "   tamdords:  %#lx\n"
 
-#: linker.c:2874
+#: mach-o.c:716
 #, c-format
-msgid "%B: duplicate section `%A' has different contents\n"
-msgstr "%B: la secciÃ³n duplicada `%A' tiene contenido diferente\n"
+msgid "   flags:      %#lx\n"
+msgstr "   marcas:     %#lx\n"
 
-#: linker.c:3362
-msgid "%B: compiled for a big endian system and target is little endian"
-msgstr "%B: compilado para un sistema big endian y el objetivo es little endian"
+#: mach-o.c:717
+#, c-format
+msgid "   version:    %x\n"
+msgstr "   versiÃ³n:    %x\n"
 
-#: linker.c:3365
-msgid "%B: compiled for a little endian system and target is big endian"
-msgstr "%B: compilado para un sistema little endian y el objetivo es big endian"
+#. Urg - what has happened ?
+#: mach-o.c:752
+#, c-format
+msgid "incompatible cputypes in mach-o files: %ld vs %ld"
+msgstr "tipos de CPU incompatibles en ficheros mach-o: %ld vs %ld"
 
-#: mach-o.c:779
+#: mach-o.c:921
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr "bfd_mach_o_canonicalize_symtab: no se pueden cargar sÃ­mbolos"
 
-#: mach-o.c:1981
+#: mach-o.c:1513
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "reubicaciÃ³n de mach-o mal formada: el Ã­ndice de secciÃ³n es mayor que el nÃºmero de secciones"
+
+#: mach-o.c:2155
 msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
 msgstr "disculpe: modtab, toc y extrefsyms aÃºn no estÃ¡n implementados para Ã³rdenes dysymtab."
 
-#: mach-o.c:2424
+#: mach-o.c:2603
 #, c-format
 msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
-msgstr "mach-o: hay demasiadas secciones (%u) mÃ¡ximo es 255.\n"
+msgstr "mach-o: hay demasiadas secciones (%u) el mÃ¡ximo es 255,\n"
 
-#: mach-o.c:2531
+#: mach-o.c:2695
 #, c-format
 msgid "unable to allocate data for load command %#x"
-msgstr "incapaz de ubicar datos para orden de carga %#x"
+msgstr "no se pueden asignar datos para la orden de carga %#x"
 
-#: mach-o.c:2636
+#: mach-o.c:2800
 #, c-format
 msgid "unable to write unknown load command %#x"
-msgstr "incapaz de escribir orden de carga desconocida %#x"
+msgstr "no se puede escribir la orden de carga desconocida %#x"
 
-#: mach-o.c:2820
+#: mach-o.c:2984
 #, c-format
-msgid "section address (%#Lx) below start of segment (%#Lx)"
-msgstr "secciÃ³n direccional (%#Lx) bajo inicio de segmento (%#Lx)"
+msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
+msgstr "direcciÃ³n de secciÃ³n (%#<PRIx64>) debajo del inicio del segmento (%#<PRIx64>)"
 
-#: mach-o.c:2961
+#: mach-o.c:3126
 #, c-format
 msgid "unable to layout unknown load command %#x"
-msgstr "incapaz de distribuir orden de carga desconocida %#x"
+msgstr "no se puede distribuir orden de carga desconocida %#x"
 
-#: mach-o.c:3497
+#: mach-o.c:3661
 #, 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 alineamiento sobrepasado: %#lx, utilizando 32 en su lugar"
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_32: valor de alineaciÃ³n demasiado grande: %#lx"
 
-#: mach-o.c:3540
+#: mach-o.c:3704
 #, 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 alineamiento sobrepasado: %#lx, utilizando 32 en su lugar"
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_64: valor de alineaciÃ³n demasiado grande: %#lx"
 
-#: mach-o.c:3591
+#: mach-o.c:3755
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
 msgstr "bfd_mach_o_read_symtab_symbol: no se pueden leer %d bytes en %u"
 
-#: mach-o.c:3610
+#: mach-o.c:3774
 #, c-format
 msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
 msgstr "bfd_mach_o_read_symtab_symbol: nombre fuera de rango (%lu >= %u)"
 
-#: mach-o.c:3693
+#: mach-o.c:3857
 #, 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: el sÃ­mbolo Â«%sÂ» especificÃ³ la secciÃ³n invÃ¡lida %d (mÃ¡ximo %lu): se cambia a indefinido"
+msgstr "bfd_mach_o_read_symtab_symbol: el sÃ­mbolo Â«%sÂ» especificÃ³ la secciÃ³n no vÃ¡lida %d (mÃ¡ximo %lu): se establece a sin definir"
 
-#: mach-o.c:3712
+#: mach-o.c:3876
 #, 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: el sÃ­mbolo Â«%sÂ» especificÃ³ el campo de tipo 0x%x invÃ¡lido: se cambia a indefinido"
+msgstr "bfd_mach_o_read_symtab_symbol: el sÃ­mbolo Â«%sÂ» especificÃ³ el campo de tipo 0x%x no vÃ¡lido: se establece a sin definir"
 
-#: mach-o.c:3789
-msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
-msgstr "bfd_mach_o_read_symtab_symbols: no se puede reservar memoria para sÃ­mbolos"
-
-#: mach-o.c:4762
-msgid "%B: unknown load command %#x"
-msgstr "%B: orden de carga desconocida %#x"
+#: mach-o.c:5075
+#, c-format
+msgid "%pB: unknown load command %#x"
+msgstr "%pB: orden de carga desconocida %#x"
 
-#: mach-o.c:4953
+#: mach-o.c:5274
 #, c-format
 msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
 msgstr "bfd_mach_o_scan: arquitectura 0x%lx/0x%lx desconocida"
 
-#: mach-o.c:5058
+#: mach-o.c:5396
 #, c-format
 msgid "unknown header byte-order value %#x"
-msgstr "valor de encabezado de orden de byte %#x desconocido"
+msgstr "valor de orden de byte de encabezado %#x desconocido"
 
-#: merge.c:868
+#: merge.c:1118
 #, c-format
-msgid "%B: access beyond end of merged section (%Ld)"
-msgstr "%B: acceso mÃ¡s allÃ¡ de secciÃ³n combinada (%Ld)"
+msgid "%pB: access beyond end of merged section (%<PRId64>)"
+msgstr "%pB: acceso mÃ¡s allÃ¡ del final de la secciÃ³n combinada (%<PRId64>)"
 
-#: mmo.c:468
+#: mmo.c:535
 #, c-format
-msgid "%B: No core to allocate section name %s\n"
-msgstr "%B: ningÃºn nÃºcleo para reservar nombre de secciÃ³n %s\n"
+msgid "%pB: no core to allocate a symbol %d bytes long"
+msgstr "%pB: ningÃºn nÃºcleo para asignar un sÃ­mbolo de %d bytes de longitud"
 
-#: mmo.c:544
+#: mmo.c:956
 #, c-format
-msgid "%B: No core to allocate a symbol %d bytes long\n"
-msgstr "%B: ningÃºn nÃºcleo para reservar un sÃ­mbolo de %d bytes de longitud\n"
+msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
+msgstr "%pB: intento de emitir contenidos en una direcciÃ³n que no es mÃºltiplo de 4 %#<PRIx64>"
 
-#: mmo.c:958
+#: mmo.c:1251
 #, c-format
-msgid "%B: attempt to emit contents at non-multiple-of-4 address %#Lx"
-msgstr "%B: intenta emitir contenidos en direcciÃ³n no mÃºltiplo de 4 %#Lx"
+msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: el valor de iniciaciÃ³n para $255 no es Â«MainÂ»\n"
 
-#: mmo.c:1255
-msgid "%B: invalid mmo file: initialization value for $255 is not `Main'\n"
-msgstr "%B: fichero mmo invÃ¡lido: el valor de iniciaciÃ³n para $255 no es `Main'\n"
-
-#: mmo.c:1402
+#: mmo.c:1398
 #, c-format
-msgid "%B: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
-msgstr "%B: secuencia de anchura de carÃ¡cter 0x%02X 0x%02X tras nombre simbÃ³lico iniciada con Â«%sÂ» no admitida\n"
+msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
+msgstr "%pB: secuencia amplia de caracteres 0x%02X 0x%02X no admitida despuÃ©s del nombre de sÃ­mbolo que comienza con Â«%sÂ»\n"
 
-#: mmo.c:1636
+#: mmo.c:1414
 #, c-format
-msgid "%B: invalid mmo file: unsupported lopcode `%d'\n"
-msgstr "%B: fichero mmo invÃ¡lido: cÃ³digo de operaciÃ³n-l `%d' no compatible\n"
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr "%pB: el nombre del sÃ­mbolo excede la longitud mÃ¡xima dada de %d"
 
-#: mmo.c:1647
+#: mmo.c:1643
 #, c-format
-msgid "%B: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
-msgstr "%B: fichero mmo invÃ¡lido: se esperaba YZ = 1 se obtuvo YZ = %d para lop_quote\n"
+msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: lopcode Â«%dÂ» no admitido\n"
 
-#: mmo.c:1685
+#: mmo.c:1654
 #, c-format
-msgid "%B: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
-msgstr "%B: fichero mmo invÃ¡lido: se esperaba z = 1 o z = 2, se obtuvo z = %d para lop_loc\n"
+msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: se esperaba YZ = 1 se obtuvo YZ = %d para lop_quote\n"
 
-#: mmo.c:1736
+#: mmo.c:1698
 #, c-format
-msgid "%B: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
-msgstr "%B: fichero mmo invÃ¡lido: se esperaba z = 1 o z = 2, se obtuvo z = %d para lop_fixo\n"
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: se esperaba z = 1 o z = 2, se obtuvo z = %d para lop_loc\n"
 
-#: mmo.c:1777
+#: mmo.c:1749
 #, c-format
-msgid "%B: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
-msgstr "%B: fichero mmo invÃ¡lido: se esperaba y = 0, se obtuvo y = %d para lop_fixrx\n"
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: se esperaba z = 1 o z = 2, se obtuvo z = %d para lop_fixo\n"
 
-#: mmo.c:1788
+#: mmo.c:1798
 #, c-format
-msgid "%B: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
-msgstr "%B: fichero mmo invÃ¡lido: se esperaba z = 16 o z = 24, se obtuvo z = %d para lop_fixrx\n"
+msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: se esperaba y = 0, se obtuvo y = %d para lop_fixrx\n"
 
-#: mmo.c:1813
+#: mmo.c:1809
 #, c-format
-msgid "%B: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
-msgstr "%B: fichero mmo invÃ¡lido: el byte inicial del operando word debe ser 0 o 1, se obtuvo %d para lop_fixrx\n"
+msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: se esperaba z = 16 o z = 24, se obtuvo z = %d para lop_fixrx\n"
 
-#: mmo.c:1838
+#: mmo.c:1834
 #, c-format
-msgid "%B: cannot allocate file name for file number %d, %d bytes\n"
-msgstr "%B: no se puede reservar el nombre de fichero para el nÃºmero de fichero %d, %d bytes\n"
+msgid "%pB: invalid mmo file: leading byte of operand word must be 0 or 1, got %d for lop_fixrx\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: el byte inicial del operando word debe ser 0 o 1, se obtuvo %d para lop_fixrx\n"
 
-#: mmo.c:1860
+#: mmo.c:1863
 #, c-format
-msgid "%B: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
-msgstr "%B: fichero mmo invÃ¡lido: el nÃºmero de fichero %d Â«%sÂ», ya se habÃ­a introducido como Â«%sÂ»\n"
+msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
+msgstr "%pB: no se puede asignar el nombre de fichero para el nÃºmero de fichero %d, %d bytes\n"
 
-#: mmo.c:1874
+#: mmo.c:1885
 #, c-format
-msgid "%B: invalid mmo file: file name for number %d was not specified before use\n"
-msgstr "%B: fichero mmo invÃ¡lido: no se especificÃ³ un nombre de fichero para el nÃºmero %d antes de utilizarse\n"
+msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: el nÃºmero de fichero %d Â«%sÂ», ya se habÃ­a introducido como Â«%sÂ»\n"
 
-#: mmo.c:1981
+#: mmo.c:1900
 #, c-format
-msgid "%B: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
-msgstr "%B: fichero mmo invÃ¡lido: campos â€˜yâ€™ y â€˜zâ€™ de lop_stab no cero, y: %d, z: %d\n"
+msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: no se especificÃ³ un nombre de fichero para el nÃºmero %d antes de usarse\n"
 
-#: mmo.c:2018
+#: mmo.c:2012
 #, c-format
-msgid "%B: invalid mmo file: lop_end not last item in file\n"
-msgstr "%B: fichero mmo invÃ¡lido: lop_end no es el Ãºltimo elemento en el fichero\n"
+msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: campos Â«yÂ» y Â«zÂ» de lop_stab distintos de cero, y: %d, z: %d\n"
 
-#: mmo.c:2032
+#: mmo.c:2049
 #, c-format
-msgid "%B: invalid mmo file: YZ of lop_end (%ld) not equal to the number of tetras to the preceding lop_stab (%ld)\n"
-msgstr "%B: fichero mmo invÃ¡lido: YZ de lop_end (%ld) no es igual al nÃºmero de tetras al lop_stab precedente (%ld)\n"
+msgid "%pB: invalid mmo file: lop_end not last item in file\n"
+msgstr "%pB: fichero mmo no vÃ¡lido: lop_end no es el Ãºltimo elemento en el fichero\n"
 
-#: mmo.c:2743
+#: mmo.c:2063
 #, c-format
-msgid "%B: invalid symbol table: duplicate symbol `%s'\n"
-msgstr "%B: segmento simbÃ³lico no vÃ¡lido: sÃ­mbolo duplicado Â«%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: fichero mmo no vÃ¡lido: YZ de lop_end (%ld) no es igual al nÃºmero de tetras del lop_stab anterior (%ld)\n"
 
-#: mmo.c:2986
+#: mmo.c:2776
 #, c-format
-msgid "%B: Bad symbol definition: `Main' set to %s rather than the start address %s\n"
-msgstr "%B: DefiniciÃ³n de sÃ­mbolo equivocada: `Main' se estableciÃ³ como %s en lugar de la direcciÃ³n de inicio %s\n"
+msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
+msgstr "%pB: tabla de sÃ­mbolos no vÃ¡lida: sÃ­mbolo duplicado Â«%sÂ»\n"
 
-#: mmo.c:3085
+#: mmo.c:3015
 #, c-format
-msgid "%B: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.\n"
-msgstr "%B: aviso: segmento simbÃ³lico es muy grande para mmo, mÃ¡s grande que 65535 words de 32-bit: %d.  Solamente serÃ¡ emitida `Main'.\n"
+msgid "%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr "%pB: definiciÃ³n de sÃ­mbolo incorrecta: Â«MainÂ» se estableciÃ³ como %<PRIx64> en lugar de la direcciÃ³n de inicio %<PRIx64>\n"
 
-#: mmo.c:3131
+#: mmo.c:3114
 #, c-format
-msgid "%B: internal error, symbol table changed size from %d to %d words\n"
-msgstr "%B: error interno, el segmento simbÃ³lico modificÃ³ el tamaÃ±o desde %d hasta %d words\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: aviso: la tabla de sÃ­mbolos es demasiado grande para mmo, mÃ¡s grande que 65535 palabras de 32 bits: %d.  Solamente se emitirÃ¡ Â«MainÂ».\n"
 
-#: mmo.c:3184
+#: mmo.c:3160
 #, c-format
-msgid "%B: internal error, internal register section %A had contents\n"
-msgstr "%B: error interno, secciÃ³n interna registrada %A tuvo contenidos\n"
+msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
+msgstr "%pB: error interno, la tabla de sÃ­mbolos modificÃ³ su tamaÃ±o desde %d hasta %d palabras\n"
 
-#: mmo.c:3235
-msgid "%B: no initialized registers; section length 0\n"
-msgstr "%B: sin registros inicializados: longitud seccional 0\n"
+#: mmo.c:3213
+#, c-format
+msgid "%pB: internal error, internal register section %pA had contents\n"
+msgstr "%pB: error interno, la secciÃ³n interna de registro %pA tenÃ­a contenidos\n"
 
-#: mmo.c:3242
+#: mmo.c:3264
 #, c-format
-msgid "%B: too many initialized registers; section length %Ld"
-msgstr "%B: demasiados registros iniciados: longitud seccional %Ld"
+msgid "%pB: no initialized registers; section length 0\n"
+msgstr "%pB: no hay registros inicializados; longitud de secciÃ³n 0\n"
 
-#: mmo.c:3247
+#: mmo.c:3271
 #, c-format
-msgid "%B: invalid start address for initialized registers of length %Ld: %#Lx"
-msgstr "%B: direcciÃ³n de inicio invÃ¡lida para los registros inicializados de longitud %Ld: %#Lx"
+msgid "%pB: too many initialized registers; section length %<PRId64>"
+msgstr "%pB: demasiados registros iniciados: longitud de secciÃ³n %<PRId64>"
 
-#: oasys.c:881
+#: mmo.c:3276
 #, c-format
-msgid "%B: can not represent section `%A' in oasys"
-msgstr "%B: no se puede representar la secciÃ³n Â«%AÂ» en oasys"
+msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
+msgstr "%pB: direcciÃ³n de inicio no vÃ¡lida para los registros inicializados de longitud %<PRId64>: %#<PRIx64>"
 
 #: osf-core.c:127
 #, c-format
-msgid "Unhandled OSF/1 core file section type %d\n"
-msgstr "Tipo seccional de fichero nÃºcleo OSF/1 %d sin manipular\n"
+msgid "unhandled OSF/1 core file section type %d"
+msgstr "tipo de secciÃ³n de fichero nÃºcleo OSF/1 %d sin manejar"
 
-#: pe-mips.c:609
-msgid "%B: `ld -r' not supported with PE MIPS objects\n"
-msgstr "%B: `ld -r' no se admite con objetos PE MIPS\n"
-
-#. 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:720
-#, c-format
-msgid "%B: unimplemented %s\n"
-msgstr "%B: %s sin implementar\n"
-
-#: pe-mips.c:746
-msgid "%B: jump too far away\n"
-msgstr "%B: omitir demasiado lejos\n"
-
-#: pe-mips.c:772
-msgid "%B: bad pair/reflo after refhi\n"
-msgstr "%B: pair/reflo equivocado tras refhi\n"
+#: pdp11.c:1588
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: el sÃ­mbolo indica superposiciÃ³n (no admitida)"
 
-#: pef.c:526
+#: pef.c:531
 #, c-format
 msgid "bfd_pef_scan: unknown architecture 0x%lx"
 msgstr "bfd_pef_scan: arquitectura 0x%lx desconocida"
 
+#: pei-x86_64.c:174 pei-x86_64.c:228 pei-x86_64.c:238 pei-x86_64.c:263
+#: pei-x86_64.c:275 pei-x86_64.c:289 pei-x86_64.c:307 pei-x86_64.c:319
+#: pei-x86_64.c:331
+#, c-format
+msgid "warning: corrupt unwind data\n"
+msgstr "aviso: datos de desenrollado corruptos\n"
+
 #. PR 17512: file: 2245-7442-0.004.
-#: pei-x86_64.c:281
+#: pei-x86_64.c:352
 #, c-format
 msgid "Unknown: %x"
 msgstr "Desconocido: %x"
 
-#: pei-x86_64.c:331
+#: pei-x86_64.c:403 pei-x86_64.c:413 pei-x86_64.c:422
 #, c-format
 msgid "warning: xdata section corrupt\n"
-msgstr "aviso: secciÃ³n de datos xdata corrupto\n"
+msgstr "aviso: secciÃ³n xdata corrupta\n"
 
-#: pei-x86_64.c:341
-#, c-format
-msgid "warning: xdata section corrupt"
-msgstr "aviso: secciÃ³n de datos xdata corrupta"
-
-#: pei-x86_64.c:401
+#: pei-x86_64.c:477
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
-msgstr "Demasiados cÃ³digos unwind (%ld)\n"
+msgstr "Demasiados cÃ³digos de desenrollado (%ld)\n"
 
-#: pei-x86_64.c:491
+#: pei-x86_64.c:563
 #, c-format
 msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
-msgstr ""
-"Aviso: tamaÃ±o de secciÃ³n %s (%ld) no es un mÃºltiplo de %d\n"
-"\n"
+msgstr "Aviso: el tamaÃ±o de la secciÃ³n %s (%ld) no es un mÃºltiplo de %d\n"
 
-#: pei-x86_64.c:498
+#: pei-x86_64.c:570
 #, c-format
 msgid "Warning: %s section size is zero\n"
-msgstr "Aviso: tamaÃ±o seccional %s es cero\n"
+msgstr "Aviso: el tamaÃ±o de la secciÃ³n %s es cero\n"
 
-#: pei-x86_64.c:513
+#: pei-x86_64.c:585
 #, c-format
 msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
-msgstr "Aviso: tamaÃ±o de secciÃ³n %s (%ld) es menor que el tamaÃ±o virtual (%ld)\n"
+msgstr "Aviso: el tamaÃ±o de la secciÃ³n %s (%ld) es menor que el tamaÃ±o virtual (%ld)\n"
 
-#: pei-x86_64.c:522
+#: pei-x86_64.c:594
 #, c-format
 msgid ""
 "\n"
 "The Function Table (interpreted %s section contents)\n"
 msgstr ""
 "\n"
-"La Tabla Funcional (se interpretaron %s contenidos de la secciÃ³n)\n"
+"La tabla de funciones (se interpretaron los contenidos de la secciÃ³n %s)\n"
 
-#: pei-x86_64.c:525
+#: pei-x86_64.c:597
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
-msgstr "vma:\t\t\tDireccInicio\t DireccFin \t  DatosDesenvuelta\n"
+msgstr "vma:\t\t\tDireccInicio\t DireccFin \t  DatosDesenrollado\n"
 
-#: pei-x86_64.c:654
+#: pei-x86_64.c:722
 #, c-format
 msgid ""
 "\n"
@@ -5792,44 +6445,66 @@ msgstr ""
 "Volcado de %s\n"
 
 #. XXX code yet to be written.
-#: peicode.h:775
+#: peicode.h:820
 #, c-format
-msgid "%B: Unhandled import type; %x"
-msgstr "%B: Tipo de importaciÃ³n sin manejar; %x"
+msgid "%pB: unhandled import type; %x"
+msgstr "%pB: tipo de importaciÃ³n sin manejar; %x"
 
-#: peicode.h:781
+#: peicode.h:826
 #, c-format
-msgid "%B: Unrecognised import type; %x"
-msgstr "%B: No se reconoce el tipo de importaciÃ³n; %x"
+msgid "%pB: unrecognized import type; %x"
+msgstr "%pB: no se reconoce el tipo de importaciÃ³n; %x"
 
-#: peicode.h:796
+#: peicode.h:841
 #, c-format
-msgid "%B: Unrecognised import name type; %x"
-msgstr "%B: No se reconoce el tipo de nombre de importaciÃ³n; %x"
+msgid "%pB: unrecognized import name type; %x"
+msgstr "%pB: no se reconoce el tipo de nombre de importaciÃ³n; %x"
 
-#: peicode.h:1217
+#: peicode.h:1280
 #, c-format
-msgid "%B: Unrecognised machine type (0x%x) in Import Library Format archive"
-msgstr "%B: No se reconoce el tipo de mÃ¡quina (0x%x) en el archivo de Formato de ImportaciÃ³n de Bibliotecas"
+msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
+msgstr "%pB: no se reconoce el tipo de mÃ¡quina (0x%x) en el archivo de Formato de ImportaciÃ³n de Bibliotecas"
 
-#: peicode.h:1230
+#: peicode.h:1293
 #, c-format
-msgid "%B: Recognised but unhandled machine type (0x%x) in Import Library Format archive"
-msgstr "%B: Se reconoce el tipo de mÃ¡quina (0x%x) pero no se manipula en el archivo de Formato de ImportaciÃ³n de Bibliotecas"
+msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
+msgstr "%pB: se reconoce el tipo de mÃ¡quina (0x%x) pero no se maneja en el archivo de Formato de ImportaciÃ³n de Bibliotecas"
 
-#: peicode.h:1248
-msgid "%B: size field is zero in Import Library Format header"
-msgstr "%B: el tamaÃ±o del campo es cero en el encabezado del Formato de ImportaciÃ³n de Bibliotecas"
+#: peicode.h:1311
+#, c-format
+msgid "%pB: size field is zero in Import Library Format header"
+msgstr "%pB: el tamaÃ±o del campo es cero en el encabezado del Formato de ImportaciÃ³n de Bibliotecas"
 
-#: peicode.h:1280
-msgid "%B: string not null terminated in ILF object file."
-msgstr "%B: cadena que no termina en null en el fichero objeto ILF."
+#: peicode.h:1337
+#, c-format
+msgid "%pB: string not null terminated in ILF object file"
+msgstr "%pB: cadena que no termina en null en el fichero objeto ILF"
 
-#: peicode.h:1335
-msgid "%B: Error: Debug Data ends beyond end of debug directory."
-msgstr "%B: Error: Depura Datos finales mÃ¡s allÃ¡ del final del directorio depurante."
+#: peicode.h:1393
+#, c-format
+msgid "%pB: error: debug data ends beyond end of debug directory"
+msgstr "%pB: error: los datos de depuraciÃ³n terminan mÃ¡s allÃ¡ del final del directorio de depuraciÃ³n"
 
-#: ppcboot.c:393
+#: peicode.h:1563
+#, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr "%pB: ajustando SectionAlignment no vÃ¡lido"
+
+#: peicode.h:1573
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr "%pB: ajustando un FileAlignment no vÃ¡lido"
+
+#: peicode.h:1581
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr "%pB: NumberOfRvaAndSizes no vÃ¡lido"
+
+#: plugin.c:258
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr "marco de complementos: sin descriptores de ficheros. Intente usar menos objetos/archivos\n"
+
+#: ppcboot.c:392
 #, c-format
 msgid ""
 "\n"
@@ -5838,27 +6513,27 @@ msgstr ""
 "\n"
 "encabezado de ppcboot:\n"
 
-#: ppcboot.c:394
+#: ppcboot.c:393
 #, c-format
 msgid "Entry offset        = 0x%.8lx (%ld)\n"
-msgstr "Desplazamiento de entrada = 0x%.8lx (%ld)\n"
+msgstr "Desplz de entrada   = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:396
+#: ppcboot.c:395
 #, c-format
 msgid "Length              = 0x%.8lx (%ld)\n"
-msgstr "Longitud                  = 0x%.8lx (%ld)\n"
+msgstr "Longitud            = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:400
+#: ppcboot.c:399
 #, c-format
 msgid "Flag field          = 0x%.2x\n"
-msgstr "Campo de opciones         = 0x%.2x\n"
+msgstr "Campo de opciones   = 0x%.2x\n"
 
-#: ppcboot.c:406
+#: ppcboot.c:405
 #, c-format
 msgid "Partition name      = \"%s\"\n"
-msgstr "Nombre de la particiÃ³n    = Â«%sÂ»\n"
+msgstr "Nombre de particiÃ³n = Â«%sÂ»\n"
 
-#: ppcboot.c:426
+#: ppcboot.c:425
 #, c-format
 msgid ""
 "\n"
@@ -5867,56 +6542,58 @@ msgstr ""
 "\n"
 "ParticiÃ³n[%d] inicio  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:433
+#: ppcboot.c:432
 #, c-format
 msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 msgstr "ParticiÃ³n[%d] fin    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:440
+#: ppcboot.c:439
 #, c-format
 msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
 msgstr "ParticiÃ³n[%d] sector = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:444
+#: ppcboot.c:443
 #, c-format
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "ParticiÃ³n[%d] longitud = 0x%.8lx (%ld)\n"
 
-#: reloc.c:8106
-msgid "INPUT_SECTION_FLAGS are not supported.\n"
-msgstr "No se admite INPUT_SECTION_FLAGS.\n"
+#: reloc.c:8504
+msgid "INPUT_SECTION_FLAGS are not supported"
+msgstr "no se admiten INPUT_SECTION_FLAGS"
 
-#: reloc.c:8207
+#: reloc.c:8770
 #, c-format
-msgid "%X%P: %B(%A): error: relocation for offset %V has no value\n"
-msgstr "%X%P: %B(%A): error: reubicaciÃ³n para desplazamiento %V no tiene ningÃºn valor\n"
+msgid "%pB: unrecognized relocation type %#x in section `%pA'"
+msgstr "%pB: tipo de reubicaciÃ³n no reconocido %#x en la secciÃ³n Â«%pAÂ»"
 
-#: reloc.c:8283
+#. PR 21803: Suggest the most likely cause of this error.
+#: reloc.c:8774
 #, c-format
-msgid "%X%P: %B(%A): relocation \"%R\" is not supported\n"
-msgstr "%X%P: %B(%A): reubicaciÃ³n Â«%RÂ» no estÃ¡ soportado\n"
+msgid "is this version of the linker - %s - out of date ?"
+msgstr "Â¿ Esta versiÃ³n del enlazador - %s - estÃ¡ desactualizada ?"
 
-#: reloc.c:8292
+#: rs6000-core.c:471
 #, c-format
-msgid "%X%P: %B(%A): relocation \"%R\" returns an unrecognized value %x\n"
-msgstr "%X%P: %B(%A): reubicaciÃ³n Â«%RÂ» devuelve un valor no reconocido %x\n"
+msgid "%pB: warning core file truncated"
+msgstr "%pB: aviso: fichero de nÃºcleo truncado"
 
-#: reloc.c:8354
+#: som.c:3002
 #, c-format
-msgid "%B: unrecognized relocation (%#x) in section `%A'"
-msgstr "%B: reubicaciÃ³n no reconocida (%#x) en la secciÃ³n Â«%AÂ»"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr "%pB(%pA+%#<PRIx64>): desplazamiento de reubicaciÃ³n %s fuera de orden"
 
-#. PR 21803: Suggest the most likely cause of this error.
-#: reloc.c:8358
+#: som.c:3015
 #, c-format
-msgid "Is this version of the linker - %s - out of date ?"
-msgstr "Â¿Es esta versiÃ³n del enlazador - %s - fuera de fecha ?"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr "%pB(%pA+%#<PRIx64>): desplazamiento de reubicaciÃ³n %s fuera de rango"
 
-#: rs6000-core.c:471
-msgid "%B: warning core file truncated"
-msgstr "%B: aviso de fichero core truncado"
+#. User has specified a subspace without its containing space.
+#: som.c:5405
+#, c-format
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr "%pB[%pA]: no hay secciÃ³n de salida para el espacio %pA"
 
-#: som.c:5478
+#: som.c:5451
 #, c-format
 msgid ""
 "\n"
@@ -5925,97 +6602,106 @@ msgstr ""
 "\n"
 "Encabezado Auxiliar de EjecuciÃ³n\n"
 
-#: som.c:5787
+#: som.c:5760
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers sin implementar"
 
 #: srec.c:260
 #, c-format
-msgid "%B:%d: Unexpected character `%s' in S-record file\n"
-msgstr "%B:%d: CarÃ¡cter Â«%sÂ» inesperado en el fichero S-record\n"
+msgid "%pB:%d: unexpected character `%s' in S-record file"
+msgstr "%pB:%d: carÃ¡cter Â«%sÂ» inesperado en el fichero S-record"
 
 #: srec.c:488
 #, c-format
-msgid "%B:%d: byte count %d too small\n"
-msgstr "%B:%d: contador de byte %d demasiado pequeÃ±o\n"
+msgid "%pB:%d: byte count %d too small"
+msgstr "%pB:%d: cuenta en bytes %d demasiado pequeÃ±a"
 
-#: srec.c:581 srec.c:615
+#: srec.c:580 srec.c:614
 #, c-format
-msgid "%B:%d: Bad checksum in S-record file\n"
-msgstr "%B:%d: EquivocaciÃ³n de suma comprobante en el fichero S-record\n"
+msgid "%pB:%d: bad checksum in S-record file"
+msgstr "%pB:%d: suma de comprobaciÃ³n incorrecta en el fichero S-record"
 
-#: stabs.c:279
+#: stabs.c:308
 #, c-format
-msgid "%B(%A+%#lx): Stabs entry has invalid string index."
-msgstr "%B(%A+%#lx): Entrada de cabos tiene cadena indexada."
+msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
+msgstr "%pB(%pA+%#lx): la entrada de stabs tiene un Ã­ndice de cadena no vÃ¡lido"
 
-#: syms.c:1079
-msgid "Unsupported .stab relocation"
-msgstr "No se admite la reubicaciÃ³n .stab"
+#: syms.c:1112
+msgid "unsupported .stab relocation"
+msgstr "reubicaciÃ³n .stab no admitida"
 
 #: vms-alpha.c:479
-msgid "Corrupt EIHD record - size is too small"
-msgstr "Registro corrupto EIHD - tamaÃ±o es demasiado pequeÃ±o"
+msgid "corrupt EIHD record - size is too small"
+msgstr "registro EIHD corrupto - el tamaÃ±o es demasiado pequeÃ±o"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:665
 #, c-format
-msgid "Unable to read EIHS record at offset %#x"
-msgstr "Incapaz de leer registro EIHS en desplazamiento %#x"
+msgid "unable to read EIHS record at offset %#x"
+msgstr "no se puede leer el registro de EIHS en el desplazamiento %#x"
+
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr "el registro es demasiado pequeÃ±o para la longitud del nombre del sÃ­mbolo"
 
-#: vms-alpha.c:1172
+#: vms-alpha.c:1190
 #, c-format
-msgid "Corrupt EGSD record: its size (%#x) is too small"
-msgstr "Registro corrupto EGSD: su tamaÃ±o (%#x) es demasiado pequeÃ±o"
+msgid "corrupt EGSD record: its size (%#x) is too small"
+msgstr "registro EGSD corrupto: su tamaÃ±o (%#x) es demasiado pequeÃ±o"
 
-#: vms-alpha.c:1196
+#: vms-alpha.c:1214
 #, c-format
-msgid "Corrupt EGSD record: size (%#x) is larger than remaining space (%#x)"
-msgstr "Registro corrupto EGSD: tamaÃ±o (%#x) es mayor que el espacio restante (%#x)"
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr "registro EGSD corrupto de tipo %d: su tamaÃ±o (%#x) es mayor que el espacio restante (%#x)"
 
-#: vms-alpha.c:1204
+#: vms-alpha.c:1224
 #, c-format
-msgid "Corrupt EGSD record: size (%#x) is too small"
-msgstr "Registro corrupto EGSD: tamaÃ±o (%#x) es demasiado pequeÃ±o"
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr "registro EGSD corrupto de tipo %d: su tamaÃ±o (%#x) es demasiado pequeÃ±o"
 
-#: vms-alpha.c:1333 vms-alpha.c:1349 vms-alpha.c:1389
+#: vms-alpha.c:1366
 #, c-format
-msgid "Corrupt EGSD record: its psindx field is too big (%#lx)"
-msgstr "Registro corrupto EGSD: su campo â€˜psindxâ€™ es demasiado grande (%#lx)"
+msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
+msgstr "registro EGSD corrupto: su campo psindx es demasiado grande (%#lx)"
 
-#: vms-alpha.c:1418
+#: vms-alpha.c:1441
 #, c-format
-msgid "Unknown EGSD subtype %d"
-msgstr "Subtipo de EGSD %d desconocido"
+msgid "unknown EGSD subtype %d"
+msgstr "subtipo de EGSD %d desconocido"
 
-#: vms-alpha.c:1451
+#: vms-alpha.c:1474
 #, c-format
-msgid "Stack overflow (%d) in _bfd_vms_push"
-msgstr "Pila desbordada superior (%d) en _bfd_vms_push"
+msgid "stack overflow (%d) in _bfd_vms_push"
+msgstr "desbordamiento de pila (%d) en _bfd_vms_push"
 
-#: vms-alpha.c:1464
-msgid "Stack underflow in _bfd_vms_pop"
-msgstr "Pila desbordada inferior en _bfd_vms_pop"
+#: vms-alpha.c:1488
+msgid "stack underflow in _bfd_vms_pop"
+msgstr "subdesbordamiento de pila en _bfd_vms_pop"
+
+#: vms-alpha.c:1562
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr "dst_define_location %u demasiado grande"
 
 #. These names have not yet been added to this switch statement.
-#: vms-alpha.c:1706
+#: vms-alpha.c:1765
 #, c-format
 msgid "unknown ETIR command %d"
 msgstr "orden ETIR %d desconocida"
 
-#: vms-alpha.c:1737
-msgid "Corrupt vms value"
-msgstr "Valor vms corrupto"
-
-#: vms-alpha.c:1865
-msgid "Corrupt ETIR record encountered"
-msgstr "Encontrado registro ETIR corrupto"
+#: vms-alpha.c:1796
+msgid "corrupt vms value"
+msgstr "valor vms corrupto"
+
+#: vms-alpha.c:1927
+msgid "corrupt ETIR record encountered"
+msgstr "se ha encontrado un registro ETIR corrupto"
 
-#: vms-alpha.c:1922
+#: vms-alpha.c:1989
 #, c-format
 msgid "bad section index in %s"
-msgstr "Ã­ndice seccional equivocado en %s"
+msgstr "Ã­ndice de secciÃ³n incorrecto en %s"
 
-#: vms-alpha.c:1935
+#: vms-alpha.c:2003
 #, c-format
 msgid "unsupported STA cmd %s"
 msgstr "no se admite la orden STA %s"
@@ -6025,1499 +6711,1479 @@ msgstr "no se admite la orden STA %s"
 #. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-alpha.c:2115 vms-alpha.c:2146 vms-alpha.c:2237 vms-alpha.c:2395
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
 #, c-format
 msgid "%s: not supported"
 msgstr "%s: no se admite"
 
-#: vms-alpha.c:2121
+#: vms-alpha.c:2217
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: sin implementar"
 
-#: vms-alpha.c:2379
+#: vms-alpha.c:2382 vms-alpha.c:2397
+#, c-format
+msgid "invalid %s"
+msgstr "%s no vÃ¡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 divisiÃ³n por cero"
+
+#: vms-alpha.c:2523
 #, c-format
 msgid "invalid use of %s with contexts"
-msgstr "uso invÃ¡lido de %s en contextos"
+msgstr "uso no vÃ¡lido de %s en contextos"
 
-#: vms-alpha.c:2413
+#: vms-alpha.c:2581
 #, c-format
 msgid "reserved cmd %d"
 msgstr "orden %d reservada"
 
-#: vms-alpha.c:2497
-msgid "Corrupt EEOM record - size is too small"
-msgstr "Registro corrupto EEOM - tamaÃ±o es demasiado pequeÃ±o"
+#: vms-alpha.c:2665
+msgid "corrupt EEOM record - size is too small"
+msgstr "registro EEOM corrupto - el tamaÃ±o es demasiado pequeÃ±o"
 
-#: vms-alpha.c:2506
-msgid "Object module NOT error-free !\n"
-msgstr "Â¡ El mÃ³dulo objeto NO estÃ¡ libre de errores !\n"
+#: vms-alpha.c:2674
+msgid "object module not error-free !"
+msgstr "Â¡ El mÃ³dulo objeto no estÃ¡ libre de errores !"
 
-#: vms-alpha.c:3830
+#: vms-alpha.c:4012
 #, c-format
-msgid "SEC_RELOC with no relocs in section %A"
-msgstr "SEC_RELOC con ninguna reubicaciÃ³n en secciÃ³n %A"
+msgid "SEC_RELOC with no relocs in section %pA"
+msgstr "SEC_RELOC sin reubicaciones en la secciÃ³n %pA"
 
-#: vms-alpha.c:3882 vms-alpha.c:4095
+#: vms-alpha.c:4064 vms-alpha.c:4292
 #, c-format
-msgid "Size error in section %A"
-msgstr "TamaÃ±o errÃ³neo en secciÃ³n %A"
+msgid "size error in section %pA"
+msgstr "tamaÃ±o errÃ³neo en la secciÃ³n %pA"
 
-#: vms-alpha.c:4041
-msgid "Spurious ALPHA_R_BSR reloc"
-msgstr "ReubicaciÃ³n ALPHA_R_BSR espuria"
+#: vms-alpha.c:4235
+msgid "spurious ALPHA_R_BSR reloc"
+msgstr "reubicaciÃ³n ALPHA_R_BSR falsa"
 
-#: vms-alpha.c:4082
+#: vms-alpha.c:4278
 #, c-format
-msgid "Unhandled relocation %s"
-msgstr "ReubicaciÃ³n %s sin manipular"
+msgid "unhandled relocation %s"
+msgstr "reubicaciÃ³n %s no manejada"
 
-#: vms-alpha.c:4375
+#: vms-alpha.c:4643
 #, c-format
 msgid "unknown source command %d"
 msgstr "orden fuente %d desconocida"
 
-#: vms-alpha.c:4436
-msgid "DST__K_SET_LINUM_INCR not implemented"
-msgstr "DST__K_SET_LINUM_INCR no implementado"
-
-#: vms-alpha.c:4442
-msgid "DST__K_SET_LINUM_INCR_W not implemented"
-msgstr "DST__K_SET_LINUM_INCR_W no implementado"
-
-#: vms-alpha.c:4448
-msgid "DST__K_RESET_LINUM_INCR not implemented"
-msgstr "DST__K_RESET_LINUM_INCR no implementado"
-
-#: vms-alpha.c:4454
-msgid "DST__K_BEG_STMT_MODE not implemented"
-msgstr "DST__K_BEG_STMT_MODE no implementado"
-
-#: vms-alpha.c:4460
-msgid "DST__K_END_STMT_MODE not implemented"
-msgstr "DST__K_END_STMT_MODE no implementado"
-
-#: vms-alpha.c:4487
-msgid "DST__K_SET_PC not implemented"
-msgstr "DST__K_SET_PC no implementado"
-
-#: vms-alpha.c:4493
-msgid "DST__K_SET_PC_W not implemented"
-msgstr "DST__K_SET_PC_W no implementado"
-
-#: vms-alpha.c:4499
-msgid "DST__K_SET_PC_L not implemented"
-msgstr "DST__K_SET_PC_L no implementado"
-
-#: vms-alpha.c:4505
-msgid "DST__K_SET_STMTNUM not implemented"
-msgstr "DST__K_SET_STMTNUM no implementado"
+#: vms-alpha.c:4795 vms-alpha.c:4800 vms-alpha.c:4805 vms-alpha.c:4810
+#: vms-alpha.c:4815 vms-alpha.c:4838 vms-alpha.c:4843 vms-alpha.c:4848
+#: vms-alpha.c:4853
+#, c-format
+msgid "%s not implemented"
+msgstr "%s no estÃ¡ implementado"
 
-#: vms-alpha.c:4548
+#: vms-alpha.c:4889
 #, c-format
 msgid "unknown line command %d"
 msgstr "orden de lÃ­nea %d desconocida"
 
-#: vms-alpha.c:5008 vms-alpha.c:5026 vms-alpha.c:5041 vms-alpha.c:5057
-#: vms-alpha.c:5070 vms-alpha.c:5082 vms-alpha.c:5095
+#: vms-alpha.c:5328
+msgid "corrupt reloc record"
+msgstr "registro de reubicaciÃ³n corrupto"
+
+#: vms-alpha.c:5358 vms-alpha.c:5376 vms-alpha.c:5393 vms-alpha.c:5411
+#: vms-alpha.c:5424 vms-alpha.c:5436 vms-alpha.c:5449
 #, c-format
-msgid "Unknown reloc %s + %s"
-msgstr "ReubicaciÃ³n %s + %s desconocida"
+msgid "unknown reloc %s + %s"
+msgstr "reubicaciÃ³n %s + %s desconocida"
 
-#: vms-alpha.c:5150
+#: vms-alpha.c:5508
 #, c-format
-msgid "Unknown reloc %s"
-msgstr "ReubicaciÃ³n %s desconocida"
+msgid "unknown reloc %s"
+msgstr "reubicaciÃ³n %s desconocida"
 
-#: vms-alpha.c:5163
-msgid "Invalid section index in ETIR"
-msgstr "Ã�ndice seccional invÃ¡lido en ETIR"
+#: vms-alpha.c:5522
+msgid "invalid section index in ETIR"
+msgstr "Ã­ndice de secciÃ³n no vÃ¡lido en ETIR"
 
-#: vms-alpha.c:5172
-msgid "Relocation for non-REL psect"
-msgstr "ReubicaciÃ³n para psect que no-REL"
+#: vms-alpha.c:5531
+msgid "relocation for non-REL psect"
+msgstr "reubicaciÃ³n para psect que no es REL"
 
-#: vms-alpha.c:5219
+#: vms-alpha.c:5584
 #, c-format
-msgid "Unknown symbol in command %s"
-msgstr "SÃ­mbolo desconocido en la orden %s"
+msgid "unknown symbol in command %s"
+msgstr "sÃ­mbolo desconocido en la orden %s"
 
-#: vms-alpha.c:5629
+#: vms-alpha.c:6003
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
-msgstr "reub (%d) es *DESCONOCIDA*"
+msgstr "la reubicaciÃ³n (%d) es *DESCONOCIDA*"
 
-#: vms-alpha.c:5745
+#: vms-alpha.c:6119
 #, c-format
 msgid "  EMH %u (len=%u): "
 msgstr "  EMH %u (lon=%u): "
 
-#: vms-alpha.c:5750
+#: vms-alpha.c:6124
 #, c-format
 msgid "   Error: The length is less than the length of an EMH record\n"
-msgstr "   Error: la longitud es menor que la longitud de un registro EMH\n"
+msgstr "   Error: La longitud es menor que la longitud de un registro EMH\n"
 
-#: vms-alpha.c:5767
+#: vms-alpha.c:6141
 #, c-format
 msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
 msgstr "   Error: La longitud del registro es menor que el tamaÃ±o de un registro EMH_MHD\n"
 
-#: vms-alpha.c:5770
+#: vms-alpha.c:6144
 #, c-format
 msgid "Module header\n"
 msgstr "Encabezado de mÃ³dulo\n"
 
-#: vms-alpha.c:5771
+#: vms-alpha.c:6145
 #, c-format
 msgid "   structure level: %u\n"
-msgstr "   nivel estruct  : %u\n"
+msgstr "   nivel estructura: %u\n"
 
-#: vms-alpha.c:5772
+#: vms-alpha.c:6146
 #, c-format
 msgid "   max record size: %u\n"
-msgstr "   tam reg mÃ¡ximo : %u\n"
+msgstr "   tamaÃ±o mÃ¡x. registro: %u\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:6152
 #, c-format
 msgid "   Error: The module name is missing\n"
-msgstr "   Error: el nombre del mÃ³dulo estÃ¡ ausente\n"
+msgstr "   Error: Falta el nombre del mÃ³dulo\n"
 
-#: vms-alpha.c:5784
+#: vms-alpha.c:6158
 #, c-format
 msgid "   Error: The module name is too long\n"
-msgstr "   Error: el nombre de mÃ³dulo es demasiado largo\n"
+msgstr "   Error: El nombre del mÃ³dulo es demasiado largo\n"
 
-#: vms-alpha.c:5787
+#: vms-alpha.c:6161
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   nombre mÃ³dulo  : %.*s\n"
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:6165
 #, c-format
 msgid "   Error: The module version is missing\n"
-msgstr "   Error: la versiÃ³n de mÃ³dulo estÃ¡ faltando\n"
+msgstr "   Error: Falta la versiÃ³n del mÃ³dulo\n"
 
-#: vms-alpha.c:5797
+#: vms-alpha.c:6171
 #, c-format
 msgid "   Error: The module version is too long\n"
-msgstr "   Error: la versiÃ³n del mÃ³dulo es demasiado largo\n"
+msgstr "   Error: La versiÃ³n del mÃ³dulo es demasiado larga\n"
 
-#: vms-alpha.c:5800
+#: vms-alpha.c:6174
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   versiÃ³n mÃ³dulo : %.*s\n"
 
-#: vms-alpha.c:5803
+#: vms-alpha.c:6177
 #, c-format
 msgid "   Error: The compile date is truncated\n"
-msgstr "   Error: la fecha de compilaciÃ³n estÃ¡ truncada\n"
+msgstr "   Error: La fecha de compilaciÃ³n estÃ¡ truncada\n"
 
-#: vms-alpha.c:5805
+#: vms-alpha.c:6179
 #, c-format
 msgid "   compile date   : %.17s\n"
-msgstr "   fecha compil   : %.17s\n"
+msgstr "   fecha compil.  : %.17s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:6184
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Nombre de Procesador de Lenguaje\n"
 
-#: vms-alpha.c:5811
+#: vms-alpha.c:6185
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   nombre lenguaje: %.*s\n"
 
-#: vms-alpha.c:5815
+#: vms-alpha.c:6189
 #, c-format
 msgid "Source Files Header\n"
 msgstr "Encabezado de Ficheros Fuente\n"
 
-#: vms-alpha.c:5816
+#: vms-alpha.c:6190
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   fichero: %.*s\n"
 
-#: vms-alpha.c:5820
+#: vms-alpha.c:6194
 #, c-format
 msgid "Title Text Header\n"
 msgstr "Encabezado de Texto de TÃ­tulo\n"
 
-#: vms-alpha.c:5821
+#: vms-alpha.c:6195
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   tÃ­tulo: %.*s\n"
 
-#: vms-alpha.c:5825
+#: vms-alpha.c:6199
 #, c-format
 msgid "Copyright Header\n"
-msgstr "Encabezado Copyright\n"
+msgstr "Encabezado de Copyright\n"
 
-#: vms-alpha.c:5826
+#: vms-alpha.c:6200
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   copyright: %.*s\n"
 
-#: vms-alpha.c:5830
+#: vms-alpha.c:6204
 #, c-format
 msgid "unhandled emh subtype %u\n"
-msgstr "subtipo emh %u sin manipular\n"
+msgstr "subtipo emh %u sin manejar\n"
 
-#: vms-alpha.c:5840
+#: vms-alpha.c:6214
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (lon=%u):\n"
 
-#: vms-alpha.c:5845
+#: vms-alpha.c:6219
 #, c-format
 msgid "   Error: The length is less than the length of an EEOM record\n"
-msgstr "   Error: la longitud es menor que la longitud de un registro EEOM\n"
+msgstr "   Error: La longitud es menor que la longitud de un registro EEOM\n"
 
-#: vms-alpha.c:5849
+#: vms-alpha.c:6223
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   nÃºmero de pares de enlace cond: %u\n"
 
-#: vms-alpha.c:5851
+#: vms-alpha.c:6225
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   cÃ³digo de completado: %u\n"
 
-#: vms-alpha.c:5855
+#: vms-alpha.c:6229
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
-msgstr "   ops direcciÃ³n transf: 0x%02x\n"
+msgstr "   marcas direcc transf: 0x%02x\n"
 
-#: vms-alpha.c:5856
+#: vms-alpha.c:6230
 #, c-format
 msgid "   transfer addr psect: %u\n"
-msgstr "   psect direcciÃ³n transf: %u\n"
+msgstr "   psect direcc transf: %u\n"
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6232
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
-msgstr "   direcciÃ³n transf   : 0x%08x\n"
+msgstr "   direcciÃ³n transfer : 0x%08x\n"
 
-#: vms-alpha.c:5867
+#: vms-alpha.c:6241
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5869
+#: vms-alpha.c:6243
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5871
+#: vms-alpha.c:6245
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5873 vms-alpha.c:5894
+#: vms-alpha.c:6247 vms-alpha.c:6268
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5875
+#: vms-alpha.c:6249
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5877
+#: vms-alpha.c:6251
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5879
+#: vms-alpha.c:6253
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5881
+#: vms-alpha.c:6255
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6262
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5890
+#: vms-alpha.c:6264
 msgid " LIB"
 msgstr " BIB"
 
-#: vms-alpha.c:5892
+#: vms-alpha.c:6266
 msgid " OVR"
-msgstr " SOB"
+msgstr " OVR"
 
-#: vms-alpha.c:5896
+#: vms-alpha.c:6270
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5898
+#: vms-alpha.c:6272
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5900
+#: vms-alpha.c:6274
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5902
+#: vms-alpha.c:6276
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5904
+#: vms-alpha.c:6278
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5906
+#: vms-alpha.c:6280
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5908
+#: vms-alpha.c:6282
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5910
+#: vms-alpha.c:6284
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5912
+#: vms-alpha.c:6286
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5921
+#: vms-alpha.c:6295
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (lon=%u):\n"
 
-#: vms-alpha.c:5934
+#: vms-alpha.c:6310
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
 msgstr " entrada EGSD %2u (tipo: %u, lon: %u): "
 
-#: vms-alpha.c:5940 vms-alpha.c:6191
+#: vms-alpha.c:6316 vms-alpha.c:6611
 #, c-format
-msgid "   Error: length larger than remaining space in record\n"
-msgstr "   Error: longitud mÃ±as larga que espacio restante en registro\n"
+msgid "   Erroneous length\n"
+msgstr "   Longitud errÃ³nea\n"
 
-#: vms-alpha.c:5952
+#: vms-alpha.c:6329
 #, c-format
 msgid "PSC - Program section definition\n"
-msgstr "PSC - DefiniciÃ³n seccional de programa\n"
+msgstr "PSC - DefiniciÃ³n de secciÃ³n de programa\n"
 
-#: vms-alpha.c:5953 vms-alpha.c:5970
+#: vms-alpha.c:6330 vms-alpha.c:6350
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   alineaciÃ³n : 2**%u\n"
 
-#: vms-alpha.c:5954 vms-alpha.c:5971
+#: vms-alpha.c:6331 vms-alpha.c:6351
 #, c-format
 msgid "   flags      : 0x%04x"
-msgstr "   opciones   : 0x%04x"
+msgstr "   marcas     : 0x%04x"
 
-#: vms-alpha.c:5958
+#: vms-alpha.c:6335
 #, c-format
 msgid "   alloc (len): %u (0x%08x)\n"
-msgstr "   aloj (lon) : %u (0x%08x)\n"
+msgstr "   asig (lon) : %u (0x%08x)\n"
 
-#: vms-alpha.c:5959 vms-alpha.c:6016 vms-alpha.c:6065
+#: vms-alpha.c:6337 vms-alpha.c:6403 vms-alpha.c:6471
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   nombre     : %.*s\n"
 
-#: vms-alpha.c:5969
+#: vms-alpha.c:6349
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
-msgstr "SPSC - def secciÃ³n Programa de Imagen Compartida\n"
+msgstr "SPSC - def de secciÃ³n de Programa de Imagen Compartida\n"
 
-#: vms-alpha.c:5975
+#: vms-alpha.c:6355
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
-msgstr "   aloj (lon)    : %u (0x%08x)\n"
+msgstr "   asig (lon)    : %u (0x%08x)\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6356
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   despl imagen  : 0x%08x\n"
 
-#: vms-alpha.c:5978
+#: vms-alpha.c:6358
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
-msgstr "   despl symvec  : 0x%08x\n"
+msgstr "   despl vecsim  : 0x%08x\n"
 
-#: vms-alpha.c:5980
+#: vms-alpha.c:6361
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   nombre        : %.*s\n"
 
-#: vms-alpha.c:5993
+#: vms-alpha.c:6377
 #, c-format
 msgid "SYM - Global symbol definition\n"
 msgstr "SYM - DefiniciÃ³n de sÃ­mbolo global\n"
 
-#: vms-alpha.c:5994 vms-alpha.c:6054 vms-alpha.c:6075 vms-alpha.c:6094
+#: vms-alpha.c:6378 vms-alpha.c:6459 vms-alpha.c:6483 vms-alpha.c:6506
 #, c-format
 msgid "   flags: 0x%04x"
-msgstr "   opciones: 0x%04x"
+msgstr "   marcas: 0x%04x"
 
-#: vms-alpha.c:5997
+#: vms-alpha.c:6381
 #, c-format
 msgid "   psect offset: 0x%08x\n"
-msgstr "   despl psect: 0x%08x\n"
+msgstr "   despl psect : 0x%08x\n"
 
-#: vms-alpha.c:6001
+#: vms-alpha.c:6385
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   direcciÃ³n cÃ³digo: 0x%08x\n"
 
-#: vms-alpha.c:6003
+#: vms-alpha.c:6387
 #, c-format
 msgid "   psect index for entry point : %u\n"
-msgstr "   Ã­ndice psect para punto entrante : %u\n"
+msgstr "   Ã­ndice psect para punto de entrada : %u\n"
 
-#: vms-alpha.c:6006 vms-alpha.c:6082 vms-alpha.c:6101
+#: vms-alpha.c:6390 vms-alpha.c:6490 vms-alpha.c:6513
 #, c-format
 msgid "   psect index : %u\n"
 msgstr "   Ã­ndice psect : %u\n"
 
-#: vms-alpha.c:6008 vms-alpha.c:6084 vms-alpha.c:6103
+#: vms-alpha.c:6393 vms-alpha.c:6493 vms-alpha.c:6516
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   nombre      : %.*s\n"
 
-#: vms-alpha.c:6015
+#: vms-alpha.c:6401
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM - Referencia de sÃ­mbolo global\n"
 
-#: vms-alpha.c:6027
+#: vms-alpha.c:6416
 #, c-format
 msgid "IDC - Ident Consistency check\n"
-msgstr "IDC - Revisor de Consistencia de IdentaciÃ³n\n"
+msgstr "IDC - ComprobaciÃ³n de Consistencia de Ident\n"
 
-#: vms-alpha.c:6028
+#: vms-alpha.c:6417
 #, c-format
 msgid "   flags         : 0x%08x"
-msgstr "   opciones      : 0x%08x"
+msgstr "   marcas        : 0x%08x"
 
-#: vms-alpha.c:6032
+#: vms-alpha.c:6421
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   coinc id      : %x\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6423
 #, c-format
 msgid "   error severity: %x\n"
-msgstr "   severidad err : %x\n"
+msgstr "   severidad error: %x\n"
 
-#: vms-alpha.c:6037
+#: vms-alpha.c:6427
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   nombre entidad: %.*s\n"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6433
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   nombre objeto : %.*s\n"
 
-#: vms-alpha.c:6042
+#: vms-alpha.c:6442
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   ident binaria : 0x%08x\n"
 
-#: vms-alpha.c:6045
+#: vms-alpha.c:6446
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   ident ascii   : %.*s\n"
 
-#: vms-alpha.c:6053
+#: vms-alpha.c:6458
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG - DefiniciÃ³n de sÃ­mbolo universal\n"
 
-#: vms-alpha.c:6057
+#: vms-alpha.c:6462
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   despl vector sÃ­mbolo: 0x%08x\n"
 
-#: vms-alpha.c:6059
+#: vms-alpha.c:6464
 #, c-format
 msgid "   entry point: 0x%08x\n"
-msgstr "   punto entrante: 0x%08x\n"
+msgstr "   punto entrada: 0x%08x\n"
 
-#: vms-alpha.c:6061
+#: vms-alpha.c:6466
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   descr proc : 0x%08x\n"
 
-#: vms-alpha.c:6063
+#: vms-alpha.c:6468
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ã­ndice psect: %u\n"
 
-#: vms-alpha.c:6074
+#: vms-alpha.c:6482
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV - DefiniciÃ³n de sÃ­mbolo vectorizado\n"
 
-#: vms-alpha.c:6078
+#: vms-alpha.c:6486
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   vector      : 0x%08x\n"
 
-#: vms-alpha.c:6080 vms-alpha.c:6099
+#: vms-alpha.c:6488 vms-alpha.c:6511
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   despl psect : %u\n"
 
-#: vms-alpha.c:6093
+#: vms-alpha.c:6505
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM - DefiniciÃ³n de sÃ­mbolo global con versiÃ³n\n"
 
-#: vms-alpha.c:6097
+#: vms-alpha.c:6509
 #, c-format
 msgid "   version mask: 0x%08x\n"
-msgstr "   mÃ¡scara ver: 0x%08x\n"
+msgstr "   mÃ¡scara versiÃ³n: 0x%08x\n"
 
-#: vms-alpha.c:6108
+#: vms-alpha.c:6522
 #, c-format
 msgid "unhandled egsd entry type %u\n"
-msgstr "tipo de entrada egsd %u sin manipular\n"
+msgstr "tipo de entrada egsd %u sin manejar\n"
 
-#: vms-alpha.c:6143
+#: vms-alpha.c:6561
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
-msgstr "    Ã­ndice enlace: %u, insn reemplazo: 0x%08x\n"
+msgstr "    Ã­ndice enlazamiento: %u, insn reemplazo: 0x%08x\n"
 
-#: vms-alpha.c:6147
+#: vms-alpha.c:6565
 #, c-format
 msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
 msgstr "    ind psect 1: %u, despl 1: 0x%08x %08x\n"
 
-#: vms-alpha.c:6152
+#: vms-alpha.c:6570
 #, c-format
 msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
 msgstr "    ind psect 2: %u, despl 2: 0x%08x %08x\n"
 
-#: vms-alpha.c:6158
+#: vms-alpha.c:6576
 #, c-format
 msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
 msgstr "    ind psect 3: %u, despl 3: 0x%08x %08x\n"
 
-#: vms-alpha.c:6163
+#: vms-alpha.c:6581
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    nombre global: %.*s\n"
 
-#: vms-alpha.c:6174
+#: vms-alpha.c:6593
 #, c-format
-msgid "  %s (len=%u+%u):\n"
-msgstr "  %s (lon=%u+%u):\n"
+msgid "  %s (len=%u):\n"
+msgstr "  %s (lon=%u):\n"
 
-#: vms-alpha.c:6196
+#: vms-alpha.c:6616
 #, c-format
-msgid "   (type: %3u, size: 4+%3u): "
-msgstr "   (tipo: %3u, tam: 4+%3u): "
+msgid "   (type: %3u, size: %3u): "
+msgstr "   (tipo: %3u, tam: %3u): "
 
-#: vms-alpha.c:6200
+#: vms-alpha.c:6622
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (pila global) %.*s\n"
 
-#: vms-alpha.c:6204
+#: vms-alpha.c:6626
 #, c-format
-msgid "STA_LW (stack longword) 0x%08x\n"
-msgstr "STA_LW (pila longword) 0x%08x\n"
+msgid "STA_LW (stack longword)"
+msgstr "STA_LW (pila longword)"
 
-#: vms-alpha.c:6208
+#: vms-alpha.c:6632
 #, c-format
-msgid "STA_QW (stack quadword) 0x%08x %08x\n"
-msgstr "STA_QW (pila quadword) 0x%08x %08x\n"
+msgid "STA_QW (stack quadword)"
+msgstr "STA_QW (pila quadword)"
 
-#: vms-alpha.c:6213
+#: vms-alpha.c:6639
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (pila psect base + despl)\n"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6642
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "    psect: %u, despl: 0x%08x %08x\n"
 
-#: vms-alpha.c:6221
+#: vms-alpha.c:6648
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (pila literal)\n"
 
-#: vms-alpha.c:6224
+#: vms-alpha.c:6651
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (pila mÃ³dulo)\n"
 
-#: vms-alpha.c:6227
+#: vms-alpha.c:6654
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (compara argumentos de procedimientos)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6658
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (almacena byte)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6661
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (almacena word)\n"
 
-#: vms-alpha.c:6237
+#: vms-alpha.c:6664
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (almacena longword)\n"
 
-#: vms-alpha.c:6240
+#: vms-alpha.c:6667
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (almacena quadword)\n"
 
-#: vms-alpha.c:6246
+#: vms-alpha.c:6674
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (almacena inmediato repetido) %u bytes\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6683
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (almacena global) %.*s\n"
 
-#: vms-alpha.c:6257
+#: vms-alpha.c:6688
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
-msgstr "STO_CA (almacena direcc cÃ³digo) %.*s\n"
+msgstr "STO_CA (almacena direcciÃ³n cÃ³digo) %.*s\n"
 
-#: vms-alpha.c:6261
+#: vms-alpha.c:6692
 #, c-format
 msgid "STO_RB (store relative branch)\n"
-msgstr "STO_RB (almacena ramif relativa)\n"
+msgstr "STO_RB (almacena rama relativa)\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6695
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
-msgstr "STO_AB (almacena ramif absoluta)\n"
+msgstr "STO_AB (almacena rama absoluta)\n"
 
-#: vms-alpha.c:6267
+#: vms-alpha.c:6698
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (almacena despl para psect)\n"
 
-#: vms-alpha.c:6273
+#: vms-alpha.c:6705
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (almacena inmediato) %u bytes\n"
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6714
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr "STO_GBL_LW (almacena global longword) %.*s\n"
 
-#: vms-alpha.c:6284
+#: vms-alpha.c:6718
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF (almacena LP con firma de procedimiento)\n"
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6721
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
-msgstr "STO_BR_GBL (almacena ramif global) *pend*\n"
+msgstr "STO_BR_GBL (almacena rama global) *pend*\n"
 
-#: vms-alpha.c:6290
+#: vms-alpha.c:6724
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
-msgstr "STO_BR_PS (almacena ramif psect + despl) *pend*\n"
+msgstr "STO_BR_PS (almacena rama psect + despl) *pend*\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6728
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (no operaciÃ³n)\n"
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6731
 #, c-format
 msgid "OPR_ADD (add)\n"
-msgstr "OPR_ADD (adiciÃ³n)\n"
+msgstr "OPR_ADD (suma)\n"
 
-#: vms-alpha.c:6300
+#: vms-alpha.c:6734
 #, c-format
 msgid "OPR_SUB (subtract)\n"
-msgstr "OPR_SUB (subtract)\n"
+msgstr "OPR_SUB (resta)\n"
 
-#: vms-alpha.c:6303
+#: vms-alpha.c:6737
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (multiplicaciÃ³n)\n"
 
-#: vms-alpha.c:6306
+#: vms-alpha.c:6740
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (divisiÃ³n)\n"
 
-#: vms-alpha.c:6309
+#: vms-alpha.c:6743
 #, c-format
 msgid "OPR_AND (logical and)\n"
-msgstr "OPR_AND (y lÃ³gico)\n"
+msgstr "OPR_AND (and lÃ³gico)\n"
 
-#: vms-alpha.c:6312
+#: vms-alpha.c:6746
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
-msgstr "OPR_IOR (or lÃ³gico inclusivo)\n"
+msgstr "OPR_IOR (or inclusivo lÃ³gico)\n"
 
-#: vms-alpha.c:6315
+#: vms-alpha.c:6749
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
-msgstr "OPR_EOR (o lÃ³gico exclusivo)\n"
+msgstr "OPR_EOR (or exclusivo lÃ³gico)\n"
 
-#: vms-alpha.c:6318
+#: vms-alpha.c:6752
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (negaciÃ³n)\n"
 
-#: vms-alpha.c:6321
+#: vms-alpha.c:6755
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (complemento)\n"
 
-#: vms-alpha.c:6324
+#: vms-alpha.c:6758
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (insertar campo)\n"
 
-#: vms-alpha.c:6327
+#: vms-alpha.c:6761
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (despl aritmÃ©tico)\n"
 
-#: vms-alpha.c:6330
+#: vms-alpha.c:6764
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (despl sin signo)\n"
 
-#: vms-alpha.c:6333
+#: vms-alpha.c:6767
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (rotaciÃ³n)\n"
 
-#: vms-alpha.c:6336
+#: vms-alpha.c:6770
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (selecciÃ³n)\n"
 
-#: vms-alpha.c:6339
+#: vms-alpha.c:6773
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (redefine sÃ­mbolo a la ubicaciÃ³n actual)\n"
 
-#: vms-alpha.c:6342
+#: vms-alpha.c:6776
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
-msgstr "OPR_REDEF (define una literal)\n"
+msgstr "OPR_REDEF (define un literal)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6780
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (almacena par de enlace cond)\n"
 
-#: vms-alpha.c:6350
+#: vms-alpha.c:6784
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (almacena par de enlace cond + firma)\n"
 
-#: vms-alpha.c:6352
+#: vms-alpha.c:6788
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   Ã­ndice enlace: %u, procedimiento: %.*s\n"
 
-#: vms-alpha.c:6355
+#: vms-alpha.c:6795
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   firma: %.*s\n"
 
-#: vms-alpha.c:6358
+#: vms-alpha.c:6801
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (almacena cond global)\n"
 
-#: vms-alpha.c:6360
+#: vms-alpha.c:6804
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   Ã­ndice enlace: %u, global: %.*s\n"
 
-#: vms-alpha.c:6364
+#: vms-alpha.c:6809
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (almacena direcciÃ³n de cÃ³digo cond)\n"
 
-#: vms-alpha.c:6366
+#: vms-alpha.c:6812
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   Ã­ndice enlace: %u, nombre procedimiento: %.*s\n"
 
-#: vms-alpha.c:6370
+#: vms-alpha.c:6817
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (almacena psect cond + despl)\n"
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6821
 #, c-format
 msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
 msgstr "   Ã­ndice enlace: %u, psect: %u, despl: 0x%08x %08x\n"
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6828
 #, c-format
 msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
 msgstr "STC_NOP_GBL (almacena NOP cond en direcciÃ³n global)\n"
 
-#: vms-alpha.c:6384
+#: vms-alpha.c:6832
 #, c-format
 msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
 msgstr "STC_NOP_PS (almacena NOP cond en psect + despl)\n"
 
-#: vms-alpha.c:6388
+#: vms-alpha.c:6836
 #, c-format
 msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
 msgstr "STC_BSR_GBL (almacena BSR cond en direcciÃ³n global)\n"
 
-#: vms-alpha.c:6392
+#: vms-alpha.c:6840
 #, c-format
 msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
 msgstr "STC_BSR_PS (almacena BSR cond en psect + despl)\n"
 
-#: vms-alpha.c:6396
+#: vms-alpha.c:6844
 #, c-format
 msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
 msgstr "STC_LDA_GBL (almacena LDA cond en direcciÃ³n global)\n"
 
-#: vms-alpha.c:6400
+#: vms-alpha.c:6848
 #, c-format
 msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
 msgstr "STC_LDA_PS (almacena LDA cond en psect + despl)\n"
 
-#: vms-alpha.c:6404
+#: vms-alpha.c:6852
 #, c-format
 msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
 msgstr "STC_BOH_GBL (almacena BOH cond en direcciÃ³n global)\n"
 
-#: vms-alpha.c:6408
+#: vms-alpha.c:6856
 #, c-format
 msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
 msgstr "STC_BOH_PS (almacena BOH cond en psect + despl)\n"
 
-#: vms-alpha.c:6413
+#: vms-alpha.c:6861
 #, c-format
 msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
 msgstr "STC_NBH_GBL (almacena cond o pista en direcciÃ³n global)\n"
 
-#: vms-alpha.c:6417
+#: vms-alpha.c:6865
 #, c-format
 msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
 msgstr "STC_NBH_PS (almacena cond o pista en psect + despl)\n"
 
-#: vms-alpha.c:6421
+#: vms-alpha.c:6869
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
-msgstr "CTL_SETRB (define base de reubicaciÃ³n)\n"
+msgstr "CTL_SETRB (establece base de reubicaciÃ³n)\n"
 
-#: vms-alpha.c:6427
+#: vms-alpha.c:6875
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
-msgstr "CTL_AUGRB (aumenta base de reubicaciÃ³n) %u\n"
+msgstr "CTL_AUGRB (aumenta la base de reubicaciÃ³n) %u\n"
 
-#: vms-alpha.c:6431
+#: vms-alpha.c:6880
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (define ubicaciÃ³n)\n"
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6883
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (establece ubicaciÃ³n)\n"
 
-#: vms-alpha.c:6437
+#: vms-alpha.c:6886
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
-msgstr "CTL_STKDL (ubicaciÃ³n definida de pila)\n"
+msgstr "CTL_STKDL (ubicaciÃ³n definida en la pila)\n"
 
-#: vms-alpha.c:6440 vms-alpha.c:6864 vms-alpha.c:6990
+#: vms-alpha.c:6889 vms-alpha.c:7317 vms-alpha.c:7478
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*sin manejar*\n"
 
-#: vms-alpha.c:6470 vms-alpha.c:6509
+#: vms-alpha.c:6914
 #, c-format
-msgid "cannot read GST record length\n"
-msgstr "no se puede leer la longitud del registro GST\n"
+msgid "cannot read GST record header\n"
+msgstr "no se puede leer el encabezado de registro de GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6491
+#: vms-alpha.c:6937
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "no se puede encontrar EMH en el primer registro GST\n"
 
-#: vms-alpha.c:6517
-#, c-format
-msgid "cannot read GST record header\n"
-msgstr "no se puede leer el encabezado del registro GST\n"
-
-#: vms-alpha.c:6530
+#: vms-alpha.c:6961
 #, c-format
-msgid " corrupted GST\n"
-msgstr " GST corrupto\n"
+msgid "corrupted GST\n"
+msgstr "GST corrupto\n"
 
-#: vms-alpha.c:6538
+#: vms-alpha.c:6974
 #, c-format
 msgid "cannot read GST record\n"
-msgstr "no se puede leer el registro GST\n"
+msgstr "no se puede leer el registro de GST\n"
 
-#: vms-alpha.c:6567
+#: vms-alpha.c:7001
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " tipo de registro EOBJ %u sin manejar\n"
 
-#: vms-alpha.c:6591
+#: vms-alpha.c:7026
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
-msgstr "  cuenta bit: %u, direcc base: 0x%08x\n"
+msgstr "  cuentabit: %u, direcc base: 0x%08x\n"
 
-#: vms-alpha.c:6605
+#: vms-alpha.c:7040
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
-msgstr "   bitdistri: 0x%08x (cuenta: %u):\n"
+msgstr "   mapabit: 0x%08x (cuenta: %u):\n"
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:7047
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6638
+#: vms-alpha.c:7074
 #, c-format
 msgid "  image %u (%u entries)\n"
-msgstr "  imagen %u (%u asientos)\n"
+msgstr "  imagen %u (%u entradas)\n"
 
-#: vms-alpha.c:6644
+#: vms-alpha.c:7080
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   despl: 0x%08x, val: 0x%08x\n"
 
-#: vms-alpha.c:6666
+#: vms-alpha.c:7103
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
-msgstr " imagen %u (%u asientos), desplazs.:\n"
+msgstr " imagen %u (%u entradas), despls.:\n"
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:7110
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6795
+#: vms-alpha.c:7236
 #, c-format
 msgid "64 bits *unhandled*\n"
-msgstr "64 bits *inmanipulado*\n"
+msgstr "64 bits *no manejado*\n"
 
-#: vms-alpha.c:6800
+#: vms-alpha.c:7241
 #, c-format
 msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
 msgstr "clase: %u, tipod: %u, long: %u, puntero: 0x%08x\n"
 
-#: vms-alpha.c:6811
+#: vms-alpha.c:7252
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "matriz no contigua de %s\n"
 
-#: vms-alpha.c:6816
+#: vms-alpha.c:7259
 #, c-format
 msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
-msgstr "dimct: %u, aops: 0x%02x, dÃ­gitos: %u, escala: %u\n"
+msgstr "dimct: %u, aflags: 0x%02x, dÃ­gitos: %u, escala: %u\n"
 
-#: vms-alpha.c:6821
+#: vms-alpha.c:7264
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
-msgstr "artam: %u, a0: 0x%08x\n"
+msgstr "tamaÃ±oar: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6825
+#: vms-alpha.c:7268
 #, c-format
 msgid "Strides:\n"
-msgstr "Estribos:\n"
+msgstr "Pasos:\n"
 
-#: vms-alpha.c:6835
+#: vms-alpha.c:7282
 #, c-format
 msgid "Bounds:\n"
 msgstr "LÃ­mites:\n"
 
-#: vms-alpha.c:6841
+#: vms-alpha.c:7289
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: Inferior: %u, superior: %u\n"
 
-#: vms-alpha.c:6853
+#: vms-alpha.c:7303
 #, c-format
 msgid "unaligned bit-string of %s\n"
-msgstr "cadena de bit sin alinear de %s\n"
+msgstr "cadena de bits sin alinear de %s\n"
 
-#: vms-alpha.c:6858
+#: vms-alpha.c:7310
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "base: %u, pos: %u\n"
 
-#: vms-alpha.c:6879
+#: vms-alpha.c:7336
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
-msgstr "vops: 0x%02x, valor: 0x%08x "
+msgstr "vflags: 0x%02x, valor: 0x%08x "
 
-#: vms-alpha.c:6885
+#: vms-alpha.c:7343
 #, c-format
 msgid "(no value)\n"
 msgstr "(sin valor)\n"
 
-#: vms-alpha.c:6888
+#: vms-alpha.c:7346
 #, c-format
 msgid "(not active)\n"
 msgstr "(no activo)\n"
 
-#: vms-alpha.c:6891
+#: vms-alpha.c:7349
 #, c-format
 msgid "(not allocated)\n"
-msgstr "(sin ubicado)\n"
+msgstr "(sin asignar)\n"
 
-#: vms-alpha.c:6894
+#: vms-alpha.c:7352
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(descriptor)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7357
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(valor restante)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7360
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(valor spec a continuaciÃ³n)\n"
 
-#: vms-alpha.c:6904
+#: vms-alpha.c:7363
 #, c-format
 msgid "(at bit offset %u)\n"
-msgstr "(en el despl de bit %u)\n"
+msgstr "(en despl de bit %u)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7367
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr "(reg: %u, disp: %u, indir: %u, gÃ©nero: "
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7374
 msgid "literal"
 msgstr "literal"
 
-#: vms-alpha.c:6918
+#: vms-alpha.c:7377
 msgid "address"
 msgstr "direcciÃ³n"
 
-#: vms-alpha.c:6921
+#: vms-alpha.c:7380
 msgid "desc"
 msgstr "desc"
 
-#: vms-alpha.c:6924
+#: vms-alpha.c:7383
 msgid "reg"
 msgstr "reg"
 
-#: vms-alpha.c:6941
+#: vms-alpha.c:7404
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "lon: %2u, familia: %2u "
 
-#: vms-alpha.c:6947
+#: vms-alpha.c:7412
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "atÃ³mico, tipo=0x%02x %s\n"
 
-#: vms-alpha.c:6951
+#: vms-alpha.c:7417
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "indirecto, definido en 0x%08x\n"
 
-#: vms-alpha.c:6955
+#: vms-alpha.c:7421
 #, c-format
 msgid "typed pointer\n"
 msgstr "puntero tipado\n"
 
-#: vms-alpha.c:6959
+#: vms-alpha.c:7425
 #, c-format
 msgid "pointer\n"
 msgstr "puntero\n"
 
-#: vms-alpha.c:6967
+#: vms-alpha.c:7436
 #, c-format
 msgid "array, dim: %u, bitmap: "
-msgstr "unimatriz, dim: %u, distribuciÃ³n bit: "
+msgstr "matriz, dim: %u, mapabit: "
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7451
 #, c-format
 msgid "array descriptor:\n"
-msgstr "descriptor matricial:\n"
+msgstr "descriptor de matriz:\n"
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7462
 #, c-format
 msgid "type spec for element:\n"
-msgstr "tipo especÃ­fico para elemento:\n"
+msgstr "espec de tipo para elemento:\n"
 
-#: vms-alpha.c:6983
+#: vms-alpha.c:7464
 #, c-format
 msgid "type spec for subscript %u:\n"
-msgstr ""
-"tipo especÃ­fico para subcadena %u:\n"
-"\n"
+msgstr "espec de tipo para subÃ­ndice %u:\n"
 
-#: vms-alpha.c:7001
+#: vms-alpha.c:7489
 #, c-format
 msgid "Debug symbol table:\n"
-msgstr "Tabla simbÃ³lica depurante:\n"
+msgstr "Tabla de sÃ­mbolos de depuraciÃ³n:\n"
 
-#: vms-alpha.c:7012
+#: vms-alpha.c:7500
 #, c-format
 msgid "cannot read DST header\n"
-msgstr "no se puede leer el encabezado DST\n"
+msgstr "no se puede leer el encabezado de DST\n"
 
-#: vms-alpha.c:7018
+#: vms-alpha.c:7506
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " tipo: %3u, lon: %3u (en 0x%08x): "
 
-#: vms-alpha.c:7032
+#: vms-alpha.c:7523
 #, c-format
 msgid "cannot read DST symbol\n"
-msgstr "no se puede leer el sÃ­mbolo DST\n"
+msgstr "no se puede leer el sÃ­mbolo de DST\n"
 
-#: vms-alpha.c:7075
+#: vms-alpha.c:7567
 #, c-format
 msgid "standard data: %s\n"
-msgstr "datos comunes: %s\n"
+msgstr "datos estÃ¡ndar: %s\n"
 
-#: vms-alpha.c:7078 vms-alpha.c:7166
+#: vms-alpha.c:7571 vms-alpha.c:7695
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    nombre: %.*s\n"
 
-#: vms-alpha.c:7085
+#: vms-alpha.c:7579
 #, c-format
 msgid "modbeg\n"
-msgstr "modini\n"
+msgstr "inimod\n"
 
-#: vms-alpha.c:7087
+#: vms-alpha.c:7583
 #, c-format
 msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
-msgstr "   ops: %d, lenguaje: %u, mayor: %u, menor: %u\n"
+msgstr "   marcas: %d, lenguaje: %u, mayor: %u, menor: %u\n"
 
-#: vms-alpha.c:7093 vms-alpha.c:7367
+#: vms-alpha.c:7593 vms-alpha.c:7959
 #, c-format
 msgid "   module name: %.*s\n"
-msgstr "   nom mÃ³dulo : %.*s\n"
+msgstr "   nombre mÃ³dulo: %.*s\n"
 
-#: vms-alpha.c:7096
+#: vms-alpha.c:7600
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   compilador : %.*s\n"
 
-#: vms-alpha.c:7101
+#: vms-alpha.c:7607
 #, c-format
 msgid "modend\n"
-msgstr "modfin\n"
+msgstr "finmod\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7614
 msgid "rtnbeg\n"
-msgstr "rtnini\n"
+msgstr "inirtn\n"
 
-#: vms-alpha.c:7110
+#: vms-alpha.c:7618
 #, c-format
 msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
-msgstr "    ops: %u, direcciÃ³n: 0x%08x, direcc-pd: 0x%08x\n"
+msgstr "    marcas: %u, direcciÃ³n: 0x%08x, direcciÃ³n-pd: 0x%08x\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7627
 #, c-format
 msgid "    routine name: %.*s\n"
-msgstr "    nom rutina  : %.*s\n"
+msgstr "    nombre rutina: %.*s\n"
 
-#: vms-alpha.c:7123
+#: vms-alpha.c:7638
 #, c-format
 msgid "rtnend: size 0x%08x\n"
-msgstr "rtnfin: tam 0x%08x\n"
+msgstr "finrtn: tamaÃ±o 0x%08x\n"
 
-#: vms-alpha.c:7131
+#: vms-alpha.c:7648
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
-msgstr "prolog: direcciÃ³n bkpt 0x%08x\n"
+msgstr "prÃ³logo: direcciÃ³n bkpt 0x%08x\n"
 
-#: vms-alpha.c:7140
+#: vms-alpha.c:7658
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
-msgstr "epilog: ops: %u, cuenta: %u\n"
+msgstr "epÃ­logo: marcas: %u, cuenta: %u\n"
 
-#: vms-alpha.c:7150
+#: vms-alpha.c:7673
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
-msgstr "blkini: direcciÃ³n: 0x%08x, nombre: %.*s\n"
+msgstr "iniblk: direcciÃ³n: 0x%08x, nombre: %.*s\n"
 
-#: vms-alpha.c:7159
+#: vms-alpha.c:7685
 #, c-format
 msgid "blkend: size: 0x%08x\n"
-msgstr "blkfin: tam: 0x%08x\n"
+msgstr "finblk: tamaÃ±o: 0x%08x\n"
 
-#: vms-alpha.c:7165
+#: vms-alpha.c:7691
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "espectip (lon: %u)\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7707
 #, c-format
 msgid "septyp, name: %.*s\n"
-msgstr "septip, nombre: %.*s\n"
+msgstr "tipsep, nombre: %.*s\n"
 
-#: vms-alpha.c:7181
+#: vms-alpha.c:7723
 #, c-format
 msgid "recbeg: name: %.*s\n"
-msgstr "recini: nombre: %.*s\n"
+msgstr "inirec: nombre: %.*s\n"
 
-#: vms-alpha.c:7183
+#: vms-alpha.c:7727
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "    lon: %u bits\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7733
 #, c-format
 msgid "recend\n"
-msgstr "recfin\n"
+msgstr "finrec\n"
 
-#: vms-alpha.c:7192
+#: vms-alpha.c:7738
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
-msgstr "enuini, lon: %u, nombre: %.*s\n"
+msgstr "inienum, lon: %u, nombre: %.*s\n"
 
-#: vms-alpha.c:7196
+#: vms-alpha.c:7744
 #, c-format
 msgid "enumelt, name: %.*s\n"
-msgstr "enufin, nombre: %.*s\n"
+msgstr "elmenum, nombre: %.*s\n"
 
-#: vms-alpha.c:7200
+#: vms-alpha.c:7750
 #, c-format
 msgid "enumend\n"
-msgstr "enufin\n"
+msgstr "finenum\n"
 
-#: vms-alpha.c:7205
+#: vms-alpha.c:7757
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "etiqueta, nombre: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7760
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "    direcciÃ³n: 0x%08x\n"
 
-#: vms-alpha.c:7217
+#: vms-alpha.c:7772
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "rango discontinuo (nbr: %u)\n"
 
-#: vms-alpha.c:7220
+#: vms-alpha.c:7779
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    direcciÃ³n: 0x%08x, tamaÃ±o: %u\n"
 
-#: vms-alpha.c:7230
+#: vms-alpha.c:7790
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "num lÃ­nea (lon: %u)\n"
 
-#: vms-alpha.c:7247
+#: vms-alpha.c:7809
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7818
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7260
+#: vms-alpha.c:7826
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7266
+#: vms-alpha.c:7834
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7272
+#: vms-alpha.c:7842
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7277
+#: vms-alpha.c:7849
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7282
+#: vms-alpha.c:7856
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7287
+#: vms-alpha.c:7863
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7291
+#: vms-alpha.c:7869
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7296
+#: vms-alpha.c:7876
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7878
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7885
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7887
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7311
+#: vms-alpha.c:7893
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7315
+#: vms-alpha.c:7897
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x lÃ­nea: %5u\n"
 
-#: vms-alpha.c:7320
+#: vms-alpha.c:7902
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    *sin manejar* ord %u\n"
 
-#: vms-alpha.c:7335
+#: vms-alpha.c:7917
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "fuente (lon: %u)\n"
 
-#: vms-alpha.c:7350
+#: vms-alpha.c:7936
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
-msgstr "   declfich: lon: %u, ops: %u, fichid: %u\n"
+msgstr "   ficherodecl: lon: %u, marcas: %u, idfichero: %u\n"
 
-#: vms-alpha.c:7355
+#: vms-alpha.c:7941
 #, 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:7364
+#: vms-alpha.c:7953
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   nomfichero : %.*s\n"
 
-#: vms-alpha.c:7373
+#: vms-alpha.c:7969
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7378 vms-alpha.c:7383
+#: vms-alpha.c:7976 vms-alpha.c:7983
 #, c-format
 msgid "   setrec %u\n"
-msgstr "   setrect %u\n"
+msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7388 vms-alpha.c:7393
+#: vms-alpha.c:7990 vms-alpha.c:7997
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7398 vms-alpha.c:7403
+#: vms-alpha.c:8004 vms-alpha.c:8011
 #, c-format
 msgid "   deflines %u\n"
-msgstr "   deflineas %u\n"
+msgstr "   lineasdef %u\n"
 
-#: vms-alpha.c:7407
+#: vms-alpha.c:8015
 #, c-format
 msgid "   formfeed\n"
 msgstr "   alimforma\n"
 
-#: vms-alpha.c:7411
+#: vms-alpha.c:8019
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   *sin manejar* ord %u\n"
 
-#: vms-alpha.c:7423
+#: vms-alpha.c:8031
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "tipo dst %u *sin manejar*\n"
 
-#: vms-alpha.c:7455
+#: vms-alpha.c:8063
 #, c-format
 msgid "cannot read EIHD\n"
-msgstr "no se puede leer EIHD\n"
+msgstr "no se puede leer el EIHD\n"
 
-#: vms-alpha.c:7459
+#: vms-alpha.c:8067
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (tamaÃ±o: %u, bloques nbr: %u)\n"
 
-#: vms-alpha.c:7463
+#: vms-alpha.c:8071
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " idmayor: %u, idmenor: %u\n"
 
-#: vms-alpha.c:7471
+#: vms-alpha.c:8079
 msgid "executable"
 msgstr "ejecutable"
 
-#: vms-alpha.c:7474
+#: vms-alpha.c:8082
 msgid "linkable image"
 msgstr "imagen enlazable"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:8089
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " tipo imagen: %u (%s)"
 
-#: vms-alpha.c:7487
+#: vms-alpha.c:8095
 msgid "native"
 msgstr "nativa"
 
-#: vms-alpha.c:7490
+#: vms-alpha.c:8098
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:8105
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", subtipo: %u (%s)\n"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:8112
 #, c-format
 msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
 msgstr " despls: isd: %u, activ: %u, simdep: %u, idimg: %u, parche: %u\n"
 
-#: vms-alpha.c:7508
+#: vms-alpha.c:8116
 #, c-format
 msgid " fixup info rva: "
-msgstr " info compos rva: "
+msgstr " info ajuste rva: "
 
-#: vms-alpha.c:7510
+#: vms-alpha.c:8118
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", vector sÃ­mbolo rva: "
 
-#: vms-alpha.c:7513
+#: vms-alpha.c:8121
 #, c-format
 msgid ""
 "\n"
@@ -7526,772 +8192,1059 @@ msgstr ""
 "\n"
 " matriz versiÃ³n despl: %u\n"
 
-#: vms-alpha.c:7518
+#: vms-alpha.c:8126
 #, c-format
 msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
 msgstr " cuenta E/S img: %u, canales nbr: %u, pri req: %08x%08x\n"
 
-#: vms-alpha.c:7524
+#: vms-alpha.c:8132
 #, c-format
 msgid " linker flags: %08x:"
-msgstr " opciones enlazadora: %08x:"
+msgstr " marcas enlace: %08x:"
 
-#: vms-alpha.c:7555
+#: vms-alpha.c:8163
 #, c-format
 msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
 msgstr " ident: 0x%08x, versis: 0x%08x, ctrl coinc: %u, tam_vectsim: %u\n"
 
-#: vms-alpha.c:7561
+#: vms-alpha.c:8169
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7568
+#: vms-alpha.c:8176
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
-msgstr ", ext comp despl: %u, no_opt desp psect: %u"
+msgstr ", ext despl. ajuste: %u, no_opt desp. psect: %u"
 
-#: vms-alpha.c:7571
+#: vms-alpha.c:8179
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", alias: %u\n"
 
-#: vms-alpha.c:7579
+#: vms-alpha.c:8187
 #, c-format
 msgid "system version array information:\n"
 msgstr "informaciÃ³n de matriz de versiÃ³n de sistema:\n"
 
-#: vms-alpha.c:7583
+#: vms-alpha.c:8191
 #, c-format
 msgid "cannot read EIHVN header\n"
-msgstr "no se puede leer el encabezado EIHVN\n"
+msgstr "no se puede leer el encabezado de EIHVN\n"
 
-#: vms-alpha.c:7593
+#: vms-alpha.c:8201
 #, c-format
 msgid "cannot read EIHVN version\n"
-msgstr "no se puede leer la versiÃ³n EIHVN\n"
+msgstr "no se puede leer la versiÃ³n de EIHVN\n"
 
-#: vms-alpha.c:7596
+#: vms-alpha.c:8204
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:8208
 msgid "BASE_IMAGE       "
 msgstr "IMAGEN_BASE      "
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:8211
 msgid "MEMORY_MANAGEMENT"
-msgstr "ADMIN_MEMORIA"
+msgstr "ADMIN_MEMORIA    "
 
-#: vms-alpha.c:7606
+#: vms-alpha.c:8214
 msgid "IO               "
-msgstr "E/S               "
+msgstr "E/S              "
 
-#: vms-alpha.c:7609
+#: vms-alpha.c:8217
 msgid "FILES_VOLUMES    "
 msgstr "VOL_FICHEROS     "
 
-#: vms-alpha.c:7612
+#: vms-alpha.c:8220
 msgid "PROCESS_SCHED    "
 msgstr "CALEND_PROCESOS  "
 
-#: vms-alpha.c:7615
+#: vms-alpha.c:8223
 msgid "SYSGEN           "
 msgstr "GENSIS           "
 
-#: vms-alpha.c:7618
+#: vms-alpha.c:8226
 msgid "CLUSTERS_LOCKMGR "
 msgstr "ADMBLOQ_CLUSTERS "
 
-#: vms-alpha.c:7621
+#: vms-alpha.c:8229
 msgid "LOGICAL_NAMES    "
 msgstr "NOMBRES_LOGICOS  "
 
-#: vms-alpha.c:7624
+#: vms-alpha.c:8232
 msgid "SECURITY         "
 msgstr "SEGURIDAD        "
 
-#: vms-alpha.c:7627
+#: vms-alpha.c:8235
 msgid "IMAGE_ACTIVATOR  "
 msgstr "ACTIVADOR_IMAGEN "
 
-#: vms-alpha.c:7630
+#: vms-alpha.c:8238
 msgid "NETWORKS         "
 msgstr "REDES            "
 
-#: vms-alpha.c:7633
+#: vms-alpha.c:8241
 msgid "COUNTERS         "
 msgstr "CONTADORES       "
 
-#: vms-alpha.c:7636
+#: vms-alpha.c:8244
 msgid "STABLE           "
 msgstr "ESTABLE          "
 
-#: vms-alpha.c:7639
+#: vms-alpha.c:8247
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7642
+#: vms-alpha.c:8250
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7645
+#: vms-alpha.c:8253
 msgid "VOLATILE         "
 msgstr "VOLÃ�TIL          "
 
-#: vms-alpha.c:7648
+#: vms-alpha.c:8256
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7651
+#: vms-alpha.c:8259
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7654
+#: vms-alpha.c:8262
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESAM   "
 
-#: vms-alpha.c:7657
+#: vms-alpha.c:8265
 msgid "GALAXY           "
 msgstr "GALAXIA          "
 
-#: vms-alpha.c:7660
+#: vms-alpha.c:8268
 msgid "*unknown*        "
 msgstr "*desconocido*    "
 
-#: vms-alpha.c:7676 vms-alpha.c:7951
+#: vms-alpha.c:8284 vms-alpha.c:8558
 #, c-format
 msgid "cannot read EIHA\n"
-msgstr "no se puede leer EIHA\n"
+msgstr "no se puede leer el EIHA\n"
 
-#: vms-alpha.c:7679
+#: vms-alpha.c:8287
 #, c-format
 msgid "Image activation:  (size=%u)\n"
-msgstr "Activa imagen   : (tamaÃ±o=%u)\n"
+msgstr "ActivaciÃ³n imagen: (tamaÃ±o=%u)\n"
 
-#: vms-alpha.c:7682
+#: vms-alpha.c:8290
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " Primera direcc: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:8294
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
-msgstr " Segunda direcc: 0x%08x 0x%08x\n"
+msgstr " Segunda direcciÃ³n: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7690
+#: vms-alpha.c:8298
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " Tercera direcc: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7694
+#: vms-alpha.c:8302
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
-msgstr " Cuarta direcc : 0x%08x 0x%08x\n"
+msgstr " Cuarta direcciÃ³n: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7698
+#: vms-alpha.c:8306
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
-msgstr " Img compartbl : 0x%08x 0x%08x\n"
+msgstr " Img compartida: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7709
+#: vms-alpha.c:8317
 #, c-format
 msgid "cannot read EIHI\n"
-msgstr "no se puede leer EIHI\n"
+msgstr "no se puede leer el EIHI\n"
 
-#: vms-alpha.c:7713
+#: vms-alpha.c:8321
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "IdentificaciÃ³n de imagen: (mayor: %u, menor: %u)\n"
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:8324
 #, c-format
 msgid " image name       : %.*s\n"
-msgstr " nombre de imagen : %.*s\n"
+msgstr " nombre de imagen: %.*s\n"
 
-#: vms-alpha.c:7718
+#: vms-alpha.c:8326
 #, c-format
 msgid " link time        : %s\n"
 msgstr " hora enlazado    : %s\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:8328
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " ident imagen     : %.*s\n"
 
-#: vms-alpha.c:7722
+#: vms-alpha.c:8330
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " ident enlazador  : %.*s\n"
 
-#: vms-alpha.c:7724
+#: vms-alpha.c:8332
 #, c-format
 msgid " image build ident: %.*s\n"
-msgstr " ident const imagen: %.*s\n"
+msgstr " ident imagen comp: %.*s\n"
 
-#: vms-alpha.c:7734
+#: vms-alpha.c:8342
 #, c-format
 msgid "cannot read EIHS\n"
-msgstr "no se puede leer EIHS\n"
+msgstr "no se puede leer el EIHS\n"
 
-#: vms-alpha.c:7738
+#: vms-alpha.c:8346
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
-msgstr "SÃ­mbolo de imagen y segmento de depuraciÃ³n: (mayor: %u, menor %u)\n"
+msgstr "SÃ­mbolo de imagen y tabla de depuraciÃ³n: (mayor: %u, menor %u)\n"
 
-#: vms-alpha.c:7744
+#: vms-alpha.c:8352
 #, c-format
 msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
-msgstr " segmento de sÃ­mbolos de depuraciÃ³n : vbn: %u, tam: %u (0x%x)\n"
+msgstr " tabla de sÃ­mbolos de depuraciÃ³n : vbn: %u, tam: %u (0x%x)\n"
 
-#: vms-alpha.c:7749
+#: vms-alpha.c:8357
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
-msgstr " segmento de sÃ­mbolos globales      : vbn: %u, registros: %u\n"
+msgstr " tabla de sÃ­mbolos globales: vbn: %u, registros: %u\n"
 
-#: vms-alpha.c:7754
+#: vms-alpha.c:8362
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
-msgstr " segmento de mÃ³dulo de depuraciÃ³n   : vbn: %u, tam: %u\n"
+msgstr " tabla de mÃ³dulo de depuraciÃ³n   : vbn: %u, tam: %u\n"
 
-#: vms-alpha.c:7767
+#: vms-alpha.c:8375
 #, c-format
 msgid "cannot read EISD\n"
-msgstr "no se puede leer EISD\n"
+msgstr "no se puede leer el EISD\n"
 
-#: vms-alpha.c:7778
+#: vms-alpha.c:8386
 #, c-format
 msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
-msgstr "Descriptor seccional de imagen: (mayor: %u, menor: %u, tam: %u, despl: %u)\n"
+msgstr "Descriptor de secciÃ³n de imagen: (mayor: %u, menor: %u, tam: %u, despl: %u)\n"
 
-#: vms-alpha.c:7786
+#: vms-alpha.c:8394
 #, c-format
 msgid " section: base: 0x%08x%08x size: 0x%08x\n"
 msgstr " secciÃ³n: base: 0x%08x%08x tam: 0x%08x\n"
 
-#: vms-alpha.c:7791
+#: vms-alpha.c:8399
 #, c-format
 msgid " flags: 0x%04x"
-msgstr " opciones: %04x"
+msgstr " marcas: 0x%04x"
 
-#: vms-alpha.c:7829
+#: vms-alpha.c:8437
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr " vbn: %u, pfc: %u, coincctl: %u tipo: %u ("
 
-#: vms-alpha.c:7835
+#: vms-alpha.c:8443
 msgid "NORMAL"
-msgstr "COMÃšN"
+msgstr "NORMAL"
 
-#: vms-alpha.c:7838
+#: vms-alpha.c:8446
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7841
+#: vms-alpha.c:8449
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7844
+#: vms-alpha.c:8452
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7847
+#: vms-alpha.c:8455
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7850
+#: vms-alpha.c:8458
 msgid "USRSTACK"
-msgstr "USRPILA"
+msgstr "PILAUSR"
 
-#: vms-alpha.c:7856
+#: vms-alpha.c:8464
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7859
+#: vms-alpha.c:8467
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " ident: 0x%08x, nombre: %.*s\n"
 
-#: vms-alpha.c:7869
+#: vms-alpha.c:8477
 #, c-format
 msgid "cannot read DMT\n"
-msgstr "no se puede leer DMT\n"
+msgstr "no se puede leer el DMT\n"
 
-#: vms-alpha.c:7873
+#: vms-alpha.c:8481
 #, c-format
 msgid "Debug module table:\n"
-msgstr "Tabla de mÃ³dulos depurante\n"
+msgstr "Tabla de mÃ³dulos de depuraciÃ³n:\n"
 
-#: vms-alpha.c:7882
+#: vms-alpha.c:8490
 #, c-format
 msgid "cannot read DMT header\n"
-msgstr "no se puede leer el encabezado DMT\n"
+msgstr "no se puede leer el encabezado de DMT\n"
 
-#: vms-alpha.c:7888
+#: vms-alpha.c:8496
 #, c-format
 msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
 msgstr " despl mÃ³dulo: 0x%08x, tam: 0x%08x, (%u psects)\n"
 
-#: vms-alpha.c:7898
+#: vms-alpha.c:8506
 #, c-format
 msgid "cannot read DMT psect\n"
-msgstr "no se puede leer el psect DMT\n"
+msgstr "no se puede leer el psect de DMT\n"
 
-#: vms-alpha.c:7902
+#: vms-alpha.c:8510
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
-msgstr "  psect inicio: 0x%08x, long: %u\n"
+msgstr "  inicio psect: 0x%08x, long: %u\n"
 
-#: vms-alpha.c:7915
+#: vms-alpha.c:8523
 #, c-format
 msgid "cannot read DST\n"
-msgstr "no se puede leer DST\n"
+msgstr "no se puede leer el DST\n"
 
-#: vms-alpha.c:7925
+#: vms-alpha.c:8533
 #, c-format
 msgid "cannot read GST\n"
-msgstr "no se puede leer GST\n"
+msgstr "no se puede leer el GST\n"
 
-#: vms-alpha.c:7929
+#: vms-alpha.c:8537
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Tabla de sÃ­mbolos global:\n"
 
-#: vms-alpha.c:7958
+#: vms-alpha.c:8564
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
-msgstr "Compostura de activador de imagen: (mayor: %u, menor: %u)\n"
+msgstr "Ajuste del activador de imagen: (mayor: %u, menor: %u)\n"
 
-#: vms-alpha.c:7962
+#: vms-alpha.c:8568
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
-msgstr "  iafenl  : 0x%08x %08x\n"
+msgstr "  enlaciaf: 0x%08x %08x\n"
 
-#: vms-alpha.c:7966
+#: vms-alpha.c:8572
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
-msgstr "  compenlace : 0x%08x %08x\n"
+msgstr "  enlcajuste: 0x%08x %08x\n"
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8575
 #, c-format
 msgid "  size : %u\n"
-msgstr "  tamÃ± : %u\n"
+msgstr "  tamÃ±o: %u\n"
 
-#: vms-alpha.c:7971
+#: vms-alpha.c:8577
 #, c-format
 msgid "  flags: 0x%08x\n"
-msgstr "  opcis: 0x%08x\n"
+msgstr "  marcas: 0x%08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8582
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7981
+#: vms-alpha.c:8587
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7986
+#: vms-alpha.c:8592
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7989
+#: vms-alpha.c:8595
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8599
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8602
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:7999
+#: vms-alpha.c:8605
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8001
+#: vms-alpha.c:8607
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8009
+#: vms-alpha.c:8614
 #, c-format
 msgid " Shareable images:\n"
 msgstr " ImÃ¡genes compartibles:\n"
 
-#: vms-alpha.c:8014
+#: vms-alpha.c:8622
 #, c-format
 msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
-msgstr "  %u: tam: %u, opts: 0x%02x, nombre: %.*s\n"
+msgstr "  %u: tam: %u, marcas: 0x%02x, nombre: %.*s\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8629
 #, c-format
 msgid " quad-word relocation fixups:\n"
-msgstr " composturas de reubicaciÃ³n quad-word:\n"
+msgstr " ajustes de reubicaciones de palabra cuÃ¡druple:\n"
 
-#: vms-alpha.c:8026
+#: vms-alpha.c:8635
 #, c-format
 msgid " long-word relocation fixups:\n"
-msgstr " composturas de reubicaciÃ³n long-word:\n"
+msgstr " ajustes de reubicaciones de palabra larga:\n"
 
-#: vms-alpha.c:8031
+#: vms-alpha.c:8641
 #, c-format
 msgid " quad-word .address reference fixups:\n"
-msgstr " composturas de referencia .address quad-word:\n"
+msgstr " ajustes de referencias de .address de palabra cuÃ¡druple:\n"
 
-#: vms-alpha.c:8036
+#: vms-alpha.c:8646
 #, c-format
 msgid " long-word .address reference fixups:\n"
-msgstr " composturas de referencia .address long-word:\n"
+msgstr " ajustes de referencias de .address de palabra larga:\n"
 
-#: vms-alpha.c:8041
+#: vms-alpha.c:8651
 #, c-format
 msgid " Code Address Reference Fixups:\n"
-msgstr " Composturas de Referencias de DirecciÃ³n de CÃ³digo:\n"
+msgstr " Ajustes de referencias de direcciÃ³n de cÃ³digo:\n"
 
-#: vms-alpha.c:8046
+#: vms-alpha.c:8656
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr ""
-" Recuperar Referencia Pares Enlazada:\n"
+" Ajustes de referencias pares de enlace:\n"
 "\n"
 
-#: vms-alpha.c:8055
+#: vms-alpha.c:8664
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Cambiar ProtecciÃ³n (%u entradas):\n"
 
-#: vms-alpha.c:8061
+#: vms-alpha.c:8673
 #, 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:8901
+#: vms-alpha.c:9550
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: no se admite el enlace reubicable\n"
 
-#: vms-alpha.c:8972
+#: vms-alpha.c:9621
 #, c-format
-msgid "%P: multiple entry points: in modules %B and %B\n"
-msgstr "%P: puntos de entrada mÃºltiples: en los mÃ³dulos %B y %B\n"
+msgid "%P: multiple entry points: in modules %pB and %pB\n"
+msgstr "%P: varios puntos de entrada: en los mÃ³dulos %pB y %pB\n"
 
-#: vms-lib.c:1445
+#: vms-lib.c:1530
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "no se puede abrir la imagen compartida Â«%sÂ» desde Â«%sÂ»"
 
-#: vms-misc.c:361
+#: vms-misc.c:374
 msgid "_bfd_vms_output_counted called with zero bytes"
-msgstr "se llamÃ³ _bfd_vms_output_counted con cero bytes"
+msgstr "se llamÃ³ a _bfd_vms_output_counted con cero bytes"
 
-#: vms-misc.c:366
+#: vms-misc.c:379
 msgid "_bfd_vms_output_counted called with too many bytes"
-msgstr "se llamÃ³ _bfd_vms_output_counted con demasiados bytes"
+msgstr "se llamÃ³ a _bfd_vms_output_counted con demasiados bytes"
+
+#: xcofflink.c:889
+#, c-format
+msgid "%pB: XCOFF shared object when not producing XCOFF output"
+msgstr "%pB: objeto compartido XCOFF cuando no se produce salida XCOFF"
 
-#: xcofflink.c:832
-msgid "%B: XCOFF shared object when not producing XCOFF output"
-msgstr "%B: objeto compartido XCOFF cuando no se produce salida XCOFF"
+#: xcofflink.c:910
+#, c-format
+msgid "%pB: dynamic object with no .loader section"
+msgstr "%pB: objeto dinÃ¡mico sin secciÃ³n .loader"
 
-#: xcofflink.c:853
-msgid "%B: dynamic object with no .loader section"
-msgstr "%B: objeto dinÃ¡mico sin secciÃ³n cargadora .loader"
+#: xcofflink.c:1492
+#, c-format
+msgid "%pB: `%s' has line numbers but no enclosing section"
+msgstr "%pB: Â«%sÂ» tiene nÃºmeros de lÃ­nea pero no una secciÃ³n de cierre"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1548
 #, c-format
-msgid "%B: `%s' has line numbers but no enclosing section"
-msgstr "%B: Â«%sÂ» tiene nÃºmeros de lÃ­nea pero no una secciÃ³n contenedora"
+msgid "%pB: class %d symbol `%s' has no aux entries"
+msgstr "%pB: la clase %d sÃ­mbolo Â«%sÂ» no tiene entradas auxiliares"
 
-#: xcofflink.c:1466
+#: xcofflink.c:1571
 #, c-format
-msgid "%B: class %d symbol `%s' has no aux entries"
-msgstr "%B: clase %d sÃ­mbolo Â«%sÂ» no tiene entradas auxiliares"
+msgid "%pB: symbol `%s' has unrecognized csect type %d"
+msgstr "%pB: el sÃ­mbolo Â«%sÂ» tiene un tipo de csect %d no reconocido"
 
-#: xcofflink.c:1489
+#: xcofflink.c:1584
 #, c-format
-msgid "%B: symbol `%s' has unrecognized csect type %d"
-msgstr "%B: el sÃ­mbolo Â«%sÂ» tiene un tipo csect %d que no se reconoce"
+msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
+msgstr "%pB: sÃ­mbolo XTY_ER Â«%sÂ» incorrecto: clase %d scnum %d scnlen %<PRId64>"
 
-#: xcofflink.c:1502
+#: xcofflink.c:1615
 #, c-format
-msgid "%B: bad XTY_ER symbol `%s': class %d scnum %d scnlen %Ld"
-msgstr "%B: sÃ­mbolo XTY_ER Â«%sÂ» equivocado: clase %d scnum %d scnlen %Ld"
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
+msgstr "%pB: sÃ­mbolo XMC_TC0 Â«%sÂ» es clase %d scnlen %<PRIu64>"
 
-#: xcofflink.c:1532
+#: xcofflink.c:1750
 #, c-format
-msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %Ld"
-msgstr "%B: sÃ­mbolo XMC_TCO Â«%sÂ» es clase %d scnlen %Ld"
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr "%pB: la entrada TOC Â«%sÂ» tiene una reubicaciÃ³n R_TLSML que no se dirige a sÃ­ misma"
 
-#: xcofflink.c:1679
+#: xcofflink.c:1784
 #, c-format
-msgid "%B: csect `%s' not in enclosing section"
-msgstr "%B: csect Â«%sÂ» no estÃ¡ contenido en un cierre seccional"
+msgid "%pB: csect `%s' not in enclosing section"
+msgstr "%pB: csect Â«%sÂ» no estÃ¡ contenido en un cierre de secciÃ³n"
 
-#: xcofflink.c:1787
+#: xcofflink.c:1893
 #, c-format
-msgid "%B: misplaced XTY_LD `%s'"
-msgstr "%B: XTY_LD mal ubicado Â«%sÂ»"
+msgid "%pB: misplaced XTY_LD `%s'"
+msgstr "%pB: XTY_LD mal ubicado Â«%sÂ»"
 
-#: xcofflink.c:2108
+#: xcofflink.c:2236
 #, c-format
-msgid "%B: reloc %s:%Ld not in csect"
-msgstr "%B: reloc %s:%Ld no contenido en csect"
+msgid "%pB: reloc %s:%<PRId64> not in csect"
+msgstr "%pB: reubicaciÃ³n %s:%<PRId64> no contenido en csect"
 
-#: xcofflink.c:3198
+#: xcofflink.c:3345
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr "%pB: no se puede exportar el sÃ­mbolo interno Â«%sÂ»."
+
+#: xcofflink.c:3393
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: no hay tal sÃ­mbolo"
 
-#: xcofflink.c:3303
+#: xcofflink.c:3502
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "aviso: se intenta exportar el sÃ­mbolo sin definir Â«%sÂ»"
 
-#: xcofflink.c:3682
+#: xcofflink.c:3850
 msgid "error: undefined symbol __rtinit"
-msgstr "error: sÃ­mbolo __rtinit indefinido"
+msgstr "error: sÃ­mbolo __rtinit sin definir"
+
+#: xcofflink.c:4863
+#, c-format
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr "%pB: No se puede encontrar un csect stub en el rango de reubicaciÃ³n en %#<PRIx64> dirigido a Â«%sÂ»"
+
+#: xcofflink.c:4892
+#, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr "%pB: No se puede crear la entrada de stub Â«%sÂ»"
+
+#: xcofflink.c:5012
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr "Desbordamiento de TOC durante la generaciÃ³n del stub. Pruebe con -mminimal-toc al compilar"
+
+#: xcofflink.c:5080
+#, c-format
+msgid "%pB: loader reloc in unrecognized section `%s'"
+msgstr "%pB: reubicaciÃ³n de cargador en secciÃ³n no reconocida Â«%sÂ»"
+
+#: xcofflink.c:5092
+#, c-format
+msgid "%pB: `%s' in loader reloc but not loader sym"
+msgstr "%pB: Â«%sÂ» en la reubicaciÃ³n del cargador pero no es un sÃ­mbolo del cargador"
+
+#: xcofflink.c:5109
+#, c-format
+msgid "%pB: loader reloc in read-only section %pA"
+msgstr "%pB: reubicaciÃ³n de cargador en secciÃ³n de sÃ³lo lectura %pA"
+
+#: xcofflink.c:6182
+#, c-format
+msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
+msgstr "Desbordamiento de TOC: %#<PRIx64> > 0x10000. Pruebe con -mminimal-toc al compilar"
+
+#: xcofflink.c:7298
+#, c-format
+msgid "Unable to link input file: %s"
+msgstr "No se puede enlazar el fichero de entrada: %s"
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr "No se puede cargar la DLL."
+
+#: xtensa-dynconfig.c:86
+#, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr "%s estÃ¡ definido pero no se pudo cargar: %s"
+
+#: xtensa-dynconfig.c:102
+#, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr "%s estÃ¡ cargado pero no se encuentra el sÃ­mbolo Â«%sÂ»: %s"
+
+#: xtensa-dynconfig.c:115
+#, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr "%s estÃ¡ definido pero la compatibilidad con complementos estÃ¡ desactivada"
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2893 elfnn-riscv.c:5548
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "atributo desconocido para el sÃ­mbolo Â«%sÂ»: 0x%02x"
+
+#: elfnn-aarch64.c:5456
+#, c-format
+msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
+msgstr "%pB: error: stub de errata 835769 fuera de rango (fichero de entrada demasiado grande)"
+
+#: elfnn-aarch64.c:5548
+#, c-format
+msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
+msgstr "%pB: error: stub de errata 843419 fuera de rango (fichero de entrada demasiado grande)"
+
+#: elfnn-aarch64.c:5561
+#, c-format
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr "%pB: error: errata 843419 inmediata 0x%<PRIx64> fuera de rango para ADR (fichero de entrada demasiado grande) y --fix-cortex-a53-843419=adr usado.  Ejecute el enlazador con --fix-cortex-a53-843419=full en su lugar"
+
+#: elfnn-aarch64.c:6096
+#, 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: la reubicaciÃ³n %s contra el sÃ­mbolo Â«%sÂ» que puede unirse externamente no se puede usar cuando se crea un objeto compartido; recompile con -fPIC"
+
+#: elfnn-aarch64.c:6116
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr "%pB: rama condicional al sÃ­mbolo no definido Â«%sÂ» no permitido"
+
+#: elfnn-aarch64.c:6204 elfnn-kvx.c:2384
+#, c-format
+msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
+msgstr "%pB: la tabla de descriptores de sÃ­mbolos locales serÃ¡ NULL al aplicar la reubicaciÃ³n %s contra el sÃ­mbolo local"
 
-#: xcofflink.c:4062
+#: elfnn-aarch64.c:6317 elfnn-aarch64.c:6354
 #, c-format
-msgid "%B: loader reloc in unrecognized section `%s'"
-msgstr "%B: reubicaciÃ³n del cargador en la secciÃ³n que no se reconoce `%s'"
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: reubicaciÃ³n TLS %s contra el sÃ­mbolo sin definir Â«%sÂ»"
+
+#: elfnn-aarch64.c:7345
+msgid "too many GOT entries for -fpic, please recompile with -fPIC"
+msgstr "demasiadas entradas GOT para -fpic, recompile con -fPIC"
+
+#: elfnn-aarch64.c:7373
+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 "una causa posible de este error es que el sÃ­mbolo estÃ¡ siendo referenciado en el cÃ³digo indicado como si tuviera una alineaciÃ³n mayor de la que se declarÃ³ donde se definiÃ³"
 
-#: xcofflink.c:4074
+#: elfnn-aarch64.c:7940
 #, c-format
-msgid "%B: `%s' in loader reloc but not loader sym"
-msgstr "%B: Â«%sÂ» en la reubicaciÃ³n del cargador pero no es un sÃ­mbolo del cargador"
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
+msgstr "%pB: la reubicaciÃ³n %s contra Â«%sÂ» no se puede usar cuando se crea un objeto compartido"
 
-#: xcofflink.c:4091
+#: elfnn-aarch64.c:9013
 #, c-format
-msgid "%B: loader reloc in read-only section %A"
-msgstr "%B: reubicaciÃ³n del cargador en la secciÃ³n de sÃ³lo lectura %A"
+msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr "%F%P: %pB: reubicaciÃ³n de copia contra el sÃ­mbolo protegido que no se puede copiar Â«%sÂ»\n"
 
-#: xcofflink.c:5115
+#: elfnn-kvx.c:930
+msgid "%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%F%P: No se pudo asignar Â«%pAÂ» a una secciÃ³n de salida. Vuelva a intentarlo sin --enable-non-contiguous-regions.\n"
+
+#: elfnn-kvx.c:2129
 #, c-format
-msgid "TOC overflow: %#Lx > 0x10000; try -mminimal-toc when compiling"
-msgstr "Desbordamiento superior de TOC: %#Lx > 0x10000; intente -mminimal-toc al compilar"
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): reubicaciÃ³n %s irresoluble en la secciÃ³n Â«%sÂ»"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:1890
+#: elfnn-kvx.c:2853
 #, c-format
-msgid "Invalid AArch64 reloc number: %d"
-msgstr "NÃºmero reubicante AArch64 no vÃ¡lido: %d"
+msgid "%s: Bad ELF id: `%d'"
+msgstr "%s: ID de ELF incorrecta: Â«%dÂ»"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:4779
-msgid "%B: error: Erratum 835769 stub out of range (input file too large)"
-msgstr "%B: error: error 835769 de cabo estÃ¡ fuera de rango (fichero entrante demasiado grande)"
+#: elfnn-kvx.c:2908
+#, c-format
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: compilado como objeto de 32 bits y %s es de 64 bits"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:4860
-msgid "%B: error: Erratum 843419 stub out of range (input file too large)"
-msgstr "%B: error: error 843419 de cabo estÃ¡ fuera de rango (fichero entrante demasiado grande)"
+#: elfnn-kvx.c:2911
+#, c-format
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: compilado como objeto de 64 bits y %s es de 32 bits"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:5366
+#: elfnn-kvx.c:2913
 #, c-format
-msgid "%B: relocation %s against symbol `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC"
-msgstr "%B: reubicaciÃ³n %s frente al sÃ­mbolo Â«%sÂ» el cual quizÃ¡ externamente enlazado no puede ser empleada cuando se cra un objeto compartido; recompile con -fPIC"
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: el tamaÃ±o del objeto no coincide con el tamaÃ±o del objetivo %s"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:5457
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:3001
 #, c-format
-msgid "%B: Local symbol descriptor table be NULL when applying relocation %s against local symbol"
-msgstr "%B: tabla de descripciÃ³n simbÃ³lica local es NULO cuando estÃ© aplicando reubicaciÃ³n %s frente sÃ­mbolo local"
+msgid "Private flags = 0x%lx : "
+msgstr "Marcas privadas = 0x%lx: "
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6479
-msgid "Too many GOT entries for -fpic, please recompile with -fPIC"
-msgstr "Demasiadas entradas GOT para -fpic, recompile con -fPIC"
+#: elfnn-kvx.c:3005
+#, c-format
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr "Coolidge (kv3) V1 64 bits"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:6507
-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 "Una causa posible de este error es que el sÃ­mbolo estÃ¡ siendo referenciado dentro del cÃ³digo indicado como si tuvo un alineamiento mayor que lo que fue declarado donde estuvo definido."
+#: elfnn-kvx.c:3007
+#, c-format
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr "Coolidge (kv3) V2 64 bits"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-aarch64.c:7084
+#: elfnn-kvx.c:3009
 #, c-format
-msgid "%B: relocation %s against `%s' can not be used when making a shared object"
-msgstr "%B: reubicaciÃ³n %s frente a Â«%sÂ» no puede emplearse cuando se crea un objeto compartido"
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr "Coolidge (kv4) V1 64 bits"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:2570
+#: elfnn-kvx.c:3014
+#, c-format
+msgid "Coolidge (kv3) V1 32 bits"
+msgstr "Coolidge (kv3) V1 32 bits"
+
+#: elfnn-kvx.c:3016
+#, c-format
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr "Coolidge (kv3) V2 32 bits"
+
+#: elfnn-kvx.c:3018
+#, c-format
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr "Coolidge (kv4) V1 32 bits"
+
+#: elfnn-kvx.c:3854
+#, c-format
+msgid "relocation against `%s' has faulty GOT type "
+msgstr "la reubicaciÃ³n contra Â«%sÂ» tiene un tipo GOT defectuoso "
+
+#: elfnn-loongarch.c:169 elfnn-loongarch.c:221
+#, c-format
+msgid "%#<PRIx64> invaild imm"
+msgstr "%#<PRIx64> imm no vÃ¡lido"
+
+#: elfnn-loongarch.c:403 elfnn-riscv.c:4028
+#, c-format
 msgid ""
-"%B: ABI is incompatible with that of the selected emulation:\n"
+"%pB: ABI is incompatible with that of the selected emulation:\n"
 "  target emulation `%s' does not match `%s'"
 msgstr ""
-"%B: la ABI es incompatible con esa de la emulaciÃ³n seleccionada:\n"
-"  emulaciÃ³n objetivo Â«%sÂ» no coincide con Â«%sÂ»"
+"%pB: ABI es incompatible con el de la emulaciÃ³n seleccionada:\n"
+"  la emulaciÃ³n objetivo Â«%sÂ» no coincide con Â«%sÂ»"
+
+#: elfnn-loongarch.c:458
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr "%pB: no se puede enlazar un objeto ABI diferente."
+
+#: elfnn-loongarch.c:600
+msgid "Internal error: unreachable."
+msgstr "Error interno: inalcanzable."
+
+#: elfnn-loongarch.c:4339 elfnn-riscv.c:4789
+#, 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 necesarios para la alineaciÃ³n al lÃ­mite de %<PRId64> bytes, pero sÃ³lo hay %<PRId64> presentes"
+
+#: elfnn-riscv.c:326 elfnn-riscv.c:361
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr "%pB: aviso: la generaciÃ³n PLT RVE no es compatible"
+
+#: elfnn-riscv.c:919
+#, c-format
+msgid "%pB: relocation %s against absolute symbol `%s' can not be used when making a shared object"
+msgstr "%pB: la reubicaciÃ³n %s contra el sÃ­mbolo absoluto Â«%sÂ» no se puede usar cuando se crea un objeto compartido"
+
+#: elfnn-riscv.c:961
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object"
+msgstr "%pB: la reubicaciÃ³n %s contra el sÃ­mbolo no absoluto Â«%sÂ» no se puede usar en RV32 cuando se crea un objeto compartido"
+
+#: elfnn-riscv.c:1847
+#, c-format
+msgid "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "el tamaÃ±o final del valor uleb128 en el desplazamiento 0x%lx en %pA desde %pB excede el espacio disponible"
+
+#: elfnn-riscv.c:2082
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr "falta la coincidencia de %pcrel_lo con %pcrel_hi"
+
+#: elfnn-riscv.c:2085
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "%pcrel_lo con sumando no estÃ¡ permitido para R_RISCV_GOT_HI20"
+
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2090
+#, c-format
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr "desbordamiento de %%pcrel_lo con un sumando, el valor de %%pcrel_hi es 0x%<PRIx64> sin ningÃºn sumando, pero puede ser 0x%<PRIx64> despuÃ©s de aÃ±adir el sumando %%pcrel_lo"
+
+#: elfnn-riscv.c:2098
+#, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr "desbordamiento de %pcrel_lo con un sumando"
+
+#: elfnn-riscv.c:2549
+#, c-format
+msgid "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up"
+msgstr "%pB: aviso: R_RISCV_SUB_ULEB128 con sumando distinto de cero, reconstruya con binutils 2.42 o superior"
+
+#: elfnn-riscv.c:2629
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "El sumando no estÃ¡ permitido para R_RISCV_GOT_HI20"
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:2730
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: la reubicaciÃ³n %s contra Â«%sÂ» que puede unirse externamente no se puede usar cuando se crea un objeto compartido; recompile con -fPIC\n"
+
+#: elfnn-riscv.c:2812
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "sÃ­mbolo de secciÃ³n %pcrel_lo con un sumando"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:2590
-msgid "%B: can't link hard-float modules with soft-float modules"
-msgstr "%B: no puede enlazar mÃ³dulos flotantes-duros con mÃ³dulos flotantes-blandos"
+#: elfnn-riscv.c:3022
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: reubicaciÃ³n %s irresoluble contra el sÃ­mbolo Â«%sÂ»\n"
+
+#: elfnn-riscv.c:3057
+msgid "%X%P: internal error: out of range error\n"
+msgstr "%X%P: error interno: error fuera de rango\n"
+
+#: elfnn-riscv.c:3062
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "%X%P: error interno: error de reubicaciÃ³n no admitida\n"
+
+#: elfnn-riscv.c:3068
+msgid "dangerous relocation error"
+msgstr "error de reubicaciÃ³n peligroso"
+
+#: elfnn-riscv.c:3074
+msgid "%X%P: internal error: unknown error\n"
+msgstr "%X%P: error interno: error desconocido\n"
+
+#: elfnn-riscv.c:3620
+#, c-format
+msgid "error: %pB: corrupted ISA string '%s'.  First letter should be 'i' or 'e' but got '%s'"
+msgstr "error: %pB: cadena ISA Â«%sÂ» daÃ±ada.  La primera letra deberÃ­a ser Â«iÂ» o Â«eÂ» pero es Â«%sÂ»"
+
+#: elfnn-riscv.c:3663
+#, c-format
+msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'"
+msgstr "error: %pB: cadena ISA no coincidente para combinar Â«%sÂ» y Â«%sÂ»"
+
+#: elfnn-riscv.c:3800
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)"
+msgstr "error: %pB: la cadena ISA de entrada (%s) no coincide con la salida (%s)"
+
+#: elfnn-riscv.c:3820
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)"
+msgstr "error: %pB: XLEN de entrada (%u) no coincide con la salida (%u)"
+
+#: elfnn-riscv.c:3828
+#, c-format
+msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation"
+msgstr "error: %pB: XLEN no admitido (%u), es posible que estÃ© usando una emulaciÃ³n incorrecta"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:3070
-msgid "%B(%A+0x%lx): %d bytes required for alignment to %d-byte boundary, but only %d present"
-msgstr "%B(%A+0x%lx): %d bytes requiriÃ³ para alineamiento para %d-byte frontera, pero solo %d presente"
+#: elfnn-riscv.c:3942
+#, c-format
+msgid "warning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%u"
+msgstr "aviso: %pB usa la versiÃ³n de especificaciÃ³n privilegiada %u.%u.%u pero la salida usa la versiÃ³n %u.%u.%u"
 
-#: /work/sources/binutils/branches/2.30/bfd/elfnn-riscv.c:3136
-msgid "%B(%A+0x%lx): Unable to clear RISCV_PCREL_HI20 relocfor cooresponding RISCV_PCREL_LO12 reloc"
-msgstr "%B(%A+0x%lx): Incapaz de vaciar RISCV_PCREL_HI20 reubicando para correspondiente reubicaciÃ³n RISCV_PCREL_LO12"
+#: elfnn-riscv.c:3959
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr "aviso: la versiÃ³n de especificaciÃ³n privilegiada 1.9.1 no se puede enlazar con otras versiones de especificaciÃ³n"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
-msgid "%B: unable to find name for empty section"
-msgstr "%B: no se puede encontrar nombre para secciÃ³n vacÃ­a"
+#: elfnn-riscv.c:3987
+#, c-format
+msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned"
+msgstr "error: %pB usa la pila con alineaciÃ³n de %u bytes pero la salida usa la pila con alineaciÃ³n de %u bytes"
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
-msgid "%B: out of memory creating name for empty section"
-msgstr "%B: memoria agotada al crear nombre para secciÃ³n vacÃ­a"
+#: elfnn-riscv.c:4084
+#, c-format
+msgid "%pB: can't link %s modules with %s modules"
+msgstr "%pB: no se pueden enlazar los mÃ³dulos %s con los mÃ³dulos %s"
 
-#: peigen.c:194 pepigen.c:194 pex64igen.c:194
-msgid "%B: unable to create fake empty section"
-msgstr "%B: incapaz de crear secciÃ³n vacÃ­a simulada"
+#: elfnn-riscv.c:4094
+#, c-format
+msgid "%pB: can't link RVE with other target"
+msgstr "%pB: no se puede enlazar RVE con otro objetivo"
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
-msgid "%B: aout header specifies an invalid number of data-directory entries: %ld"
-msgstr "%B: cabecera aout especifica un nÃºmero de entradas de datos-directorio no vÃ¡lido: %ld"
+#: elfnn-riscv.c:961
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object"
+msgstr "%pB: la reubicaciÃ³n %s contra el sÃ­mbolo no absoluto Â«%sÂ» no se puede usar en RV64 cuando se crea un objeto compartido"
 
-#: peigen.c:1089 pepigen.c:1089 pex64igen.c:1089
+#: peXXigen.c:161
 #, c-format
-msgid "%B: line number overflow: 0x%lx > 0xffff"
-msgstr "%B: nÃºmero de lÃ­nea del desbordamiento superior: 0x%lx > 0xffff"
+msgid "%pB: unable to find name for empty section"
+msgstr "%pB: no se puede encontrar el nombre para la secciÃ³n vacÃ­a"
 
-#: peigen.c:1233 pepigen.c:1233 pex64igen.c:1233
+#: peXXigen.c:188
+#, c-format
+msgid "%pB: out of memory creating name for empty section"
+msgstr "%pB: memoria agotada al crear el nombre para la secciÃ³n vacÃ­a"
+
+#: peXXigen.c:199
+#, c-format
+msgid "%pB: unable to create fake empty section"
+msgstr "%pB: no se puede crear una secciÃ³n vacÃ­a simulada"
+
+#: peXXigen.c:924
+#, c-format
+msgid "%pB:%.8s: section below image base"
+msgstr "%pB:%.8s: secciÃ³n debajo de la base de imÃ¡genes"
+
+#: peXXigen.c:929
+#, c-format
+msgid "%pB:%.8s: RVA truncated"
+msgstr "%pB:%.8s: RVA truncado"
+
+#: peXXigen.c:1060
+#, c-format
+msgid "%pB: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: desbordamiento del nÃºmero de lÃ­nea: 0x%lx > 0xffff"
+
+#: peXXigen.c:1226
 msgid "Export Directory [.edata (or where ever we found it)]"
-msgstr "Exportar Directorio [.edata (o donde quiera que se encuentre)]"
+msgstr "Directorio de ExportaciÃ³n [.edata (o donde sea que se encuentre)]"
 
-#: peigen.c:1234 pepigen.c:1234 pex64igen.c:1234
+#: peXXigen.c:1227
 msgid "Import Directory [parts of .idata]"
 msgstr "Directorio de ImportaciÃ³n [partes de .idata]"
 
-#: peigen.c:1235 pepigen.c:1235 pex64igen.c:1235
+#: peXXigen.c:1228
 msgid "Resource Directory [.rsrc]"
 msgstr "Directorio de Recursos [.rsrc]"
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1229
 msgid "Exception Directory [.pdata]"
 msgstr "Directorio de Excepciones [.pdata]"
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1230
 msgid "Security Directory"
 msgstr "Directorio de Seguridad"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1231
 msgid "Base Relocation Directory [.reloc]"
 msgstr "Directorio de ReubicaciÃ³n Base [.reloc]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1232
 msgid "Debug Directory"
-msgstr "Directorio Depurante"
+msgstr "Directorio de DepuraciÃ³n"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1233
 msgid "Description Directory"
 msgstr "Directorio de Descripciones"
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1234
 msgid "Special Directory"
 msgstr "Directorio Especial"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1235
 msgid "Thread Storage Directory [.tls]"
 msgstr "Directorio de Almacenamiento de Hilos [.tls]"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1236
 msgid "Load Configuration Directory"
 msgstr "Directorio de Carga de Configuraciones"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1237
 msgid "Bound Import Directory"
 msgstr "Directorio de ImportaciÃ³n de Relaciones"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1238
 msgid "Import Address Table Directory"
 msgstr "Directorio de Tablas de Direcciones de ImportaciÃ³n"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1239
 msgid "Delay Import Directory"
 msgstr "Directorio de Retardo de ImportaciÃ³n"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1240
 msgid "CLR Runtime Header"
 msgstr "Encabezado de Tiempo de EjecuciÃ³n CLR"
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1241
 msgid "Reserved"
 msgstr "Reservado"
 
-#: peigen.c:1308 pepigen.c:1308 pex64igen.c:1308
+#: peXXigen.c:1306
 #, c-format
 msgid ""
 "\n"
 "There is an import table, but the section containing it could not be found\n"
 msgstr ""
 "\n"
-"Hay un segmento de importaciÃ³n, pero no se puede encontrar la secciÃ³n que la contiene\n"
+"Hay una tabla de importaciÃ³n, pero no se puede encontrar la secciÃ³n que la contiene\n"
 
-#: peigen.c:1314 pepigen.c:1314 pex64igen.c:1314
+#: peXXigen.c:1312
 #, c-format
 msgid ""
 "\n"
 "There is an import table in %s, but that section has no contents\n"
 msgstr ""
 "\n"
-"Hay un segmento importada en %s, pero esa secciÃ³n no tiene contenidos\n"
+"Hay una tabla de importaciÃ³n en %s, pero esa secciÃ³n no tiene contenidos\n"
 "\n"
 
-#: peigen.c:1321 pepigen.c:1321 pex64igen.c:1321
+#: peXXigen.c:1319
 #, c-format
 msgid ""
 "\n"
 "There is an import table in %s at 0x%lx\n"
 msgstr ""
 "\n"
-"Hay un segmento de importaciÃ³n en %s en 0x%lx\n"
+"Hay una tabla de importaciÃ³n en %s en 0x%lx\n"
 
-#: peigen.c:1363 pepigen.c:1363 pex64igen.c:1363
-#, c-format
-msgid ""
-"\n"
-"Function descriptor located at the start address: %04lx\n"
-msgstr ""
-"\n"
-"Se localizÃ³ el descriptor de funciÃ³n en la direcciÃ³n de inicio: %04lx\n"
-
-#: peigen.c:1367 pepigen.c:1367 pex64igen.c:1367
-#, c-format
-msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
-msgstr "\tcÃ³digo-base %08lx segmento-de-contenidos (cargable/actual) %08lx/%08lx\n"
-
-#: peigen.c:1375 pepigen.c:1375 pex64igen.c:1375
-#, c-format
-msgid ""
-"\n"
-"No reldata section! Function descriptor not decoded.\n"
-msgstr ""
-"\n"
-"Â¡No estÃ¡ la secciÃ³n reldata! No se decodificÃ³ el descriptor de funciÃ³n.\n"
-
-#: peigen.c:1380 pepigen.c:1380 pex64igen.c:1380
+#: peXXigen.c:1325
 #, c-format
 msgid ""
 "\n"
 "The Import Tables (interpreted %s section contents)\n"
 msgstr ""
 "\n"
-"Las Tablas Importables (interpretados contenidos seccional %s)\n"
+"Las tablas de importaciÃ³n (se interpretaron los contenidos de la secciÃ³n %s)\n"
 
-#: peigen.c:1383 pepigen.c:1383 pex64igen.c:1383
+#: peXXigen.c:1328
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
 "                 Table   Stamp     Chain    Name      Thunk\n"
 msgstr ""
 " vma:            Pista   Fecha     Adelante DLL       Primero\n"
-"                 Tabla   Estampa   Cadena   Nombre    Thunk\n"
+"                 Tabla   Sello     Cadena   Nombre    Thunk\n"
 
-#: peigen.c:1433 pepigen.c:1433 pex64igen.c:1433
+#: peXXigen.c:1377
 #, c-format
 msgid ""
 "\n"
@@ -8300,72 +9253,62 @@ msgstr ""
 "\n"
 "\tNombre DLL: %.*s\n"
 
-#: peigen.c:1449 pepigen.c:1449 pex64igen.c:1449
+#: peXXigen.c:1393
 #, c-format
 msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
 msgstr "\tvma:  Pista/Ord Nombre-Miembro Unido-A\n"
 
-#: peigen.c:1474 pepigen.c:1474 pex64igen.c:1474
+#: peXXigen.c:1418
 #, c-format
 msgid ""
 "\n"
 "There is a first thunk, but the section containing it could not be found\n"
 msgstr ""
 "\n"
-"Hay un trozo inicial, pero no se puede encontrar la secciÃ³n que lo contiene\n"
+"Hay un thunk inicial, pero no se puede encontrar la secciÃ³n que lo contiene\n"
 
-#: peigen.c:1518 peigen.c:1557 pepigen.c:1518 pepigen.c:1557 pex64igen.c:1518
-#: pex64igen.c:1557
+#: peXXigen.c:1465 peXXigen.c:1504
 #, c-format
 msgid "\t<corrupt: 0x%04lx>"
 msgstr "\t<corrupto: 0x%04lx>"
 
-#: peigen.c:1650 pepigen.c:1650 pex64igen.c:1650
+#: peXXigen.c:1597
 #, c-format
 msgid ""
 "\n"
 "There is an export table, but the section containing it could not be found\n"
 msgstr ""
 "\n"
-"Hay un segmento de exportaciÃ³n, pero no se puede encontrar la secciÃ³n que la contiene\n"
-
-#: peigen.c:1656 pepigen.c:1656 pex64igen.c:1656
-#, c-format
-msgid ""
-"\n"
-"There is an export table in %s, but that section has no contents\n"
-msgstr ""
-"\n"
-"Hay un segmento exportado en %s, pero esa secciÃ³n no tiene contenidos\n"
+"Hay una tabla de exportaciÃ³n, pero no se puede encontrar la secciÃ³n que la contiene\n"
 
-#: peigen.c:1666 pepigen.c:1666 pex64igen.c:1666
+#: peXXigen.c:1610
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it does not fit into that section\n"
+"There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 "\n"
-"Hay un segmento de exportaciÃ³n en %s, pero no cabe en esa secciÃ³n\n"
+"Hay una tabla de exportaciÃ³n en %s, pero es demasiado pequeÃ±a (%d)\n"
 
-#: peigen.c:1677 pepigen.c:1677 pex64igen.c:1677
+#: peXXigen.c:1618
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it is too small (%d)\n"
+"There is an export table in %s, but contents cannot be read\n"
 msgstr ""
 "\n"
-"Hay un segmento exportador dentro de %s, pero es demasiado pequeÃ±a (%d)\n"
+"Hay una tabla de exportaciÃ³n en %s, pero no se puede leer el contenido\n"
 
-#: peigen.c:1683 pepigen.c:1683 pex64igen.c:1683
+#: peXXigen.c:1624
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s at 0x%lx\n"
 msgstr ""
 "\n"
-"Hay un segmento de exportaciÃ³n en %s en 0x%lx\n"
+"Hay una tabla de exportaciÃ³n en %s en 0x%lx\n"
 
-#: peigen.c:1711 pepigen.c:1711 pex64igen.c:1711
+#: peXXigen.c:1655
 #, c-format
 msgid ""
 "\n"
@@ -8373,176 +9316,159 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"Las Tablas Exportables (se interpretaron los contenidos de la secciÃ³n %s)\n"
+"Las tablas de exportaciÃ³n (se interpretaron los contenidos de la secciÃ³n %s)\n"
 "\n"
 
-#: peigen.c:1715 pepigen.c:1715 pex64igen.c:1715
+#: peXXigen.c:1659
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
-msgstr "Exportar Marcas \t\t\t%lx\n"
+msgstr "Marcas de ExportaciÃ³n \t\t\t%lx\n"
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1662
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
-msgstr "Marca Hora/Fecha \t\t%lx\n"
+msgstr "Sello de Hora/Fecha \t\t%lx\n"
 
-#: peigen.c:1722 pepigen.c:1722 pex64igen.c:1722
+#: peXXigen.c:1666
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "Mayor/Menor \t\t\t%d/%d\n"
 
-#: peigen.c:1725 pepigen.c:1725 pex64igen.c:1725
+#: peXXigen.c:1669
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Nombre \t\t\t\t"
 
-#: peigen.c:1736 pepigen.c:1736 pex64igen.c:1736
+#: peXXigen.c:1680
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
 msgstr "Base Ordinal \t\t\t%ld\n"
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1683
 #, c-format
 msgid "Number in:\n"
 msgstr "NÃºmero en:\n"
 
-#: peigen.c:1742 pepigen.c:1742 pex64igen.c:1742
+#: peXXigen.c:1686
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
-msgstr "\tTabla de ExportaciÃ³n de Direcciones \t\t%08lx\n"
+msgstr "\tTabla de direcciones de exportaciÃ³n \t\t%08lx\n"
 
-#: peigen.c:1746 pepigen.c:1746 pex64igen.c:1746
+#: peXXigen.c:1690
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
-msgstr "\tTabla [Nombre Puntero/Ordinal]\t%08lx\n"
+msgstr "\tTabla [Puntero de nombre/Ordinal]\t%08lx\n"
 
-#: peigen.c:1749 pepigen.c:1749 pex64igen.c:1749
+#: peXXigen.c:1693
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Direcciones de la Tabla\n"
 
-#: peigen.c:1752 pepigen.c:1752 pex64igen.c:1752
+#: peXXigen.c:1696
 #, c-format
 msgid "\tExport Address Table \t\t"
-msgstr "\tTabla de ExportaciÃ³n de Direcciones \t\t"
+msgstr "\tTabla de direcciones de exportaciÃ³n \t\t"
 
-#: peigen.c:1757 pepigen.c:1757 pex64igen.c:1757
+#: peXXigen.c:1701
 #, c-format
 msgid "\tName Pointer Table \t\t"
-msgstr "\tNombre de la Tabla de Punteros \t\t"
+msgstr "\tTabla de punteros de nombres \t\t"
 
 # continuar aqui
-#: peigen.c:1762 pepigen.c:1762 pex64igen.c:1762
+#: peXXigen.c:1706
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
-msgstr "\tTabla Ordinal \t\t\t"
+msgstr "\tTabla de ordinales \t\t\t"
 
-#: peigen.c:1776 pepigen.c:1776 pex64igen.c:1776
+#: peXXigen.c:1720
 #, c-format
 msgid ""
 "\n"
 "Export Address Table -- Ordinal Base %ld\n"
 msgstr ""
 "\n"
-"Tabla Exportante de Direcciones -- Base Ordinal %ld\n"
+"Tabla de direcciones de exportaciÃ³n -- Base ordinal %ld\n"
 
-#: peigen.c:1785 pepigen.c:1785 pex64igen.c:1785
+#: peXXigen.c:1729
 #, c-format
 msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
-msgstr "\tDistribuciÃ³n Direccional Exportada InvÃ¡lida rva (0x%lx) o contador de entrada (0x%lx)\n"
+msgstr "\tTabla de direcciones de exportaciÃ³n no vÃ¡lidas rva (0x%lx) o contador de entrada (0x%lx)\n"
 
-#: peigen.c:1804 pepigen.c:1804 pex64igen.c:1804
+#: peXXigen.c:1748
 msgid "Forwarder RVA"
-msgstr "RVA Adelantador"
+msgstr "RVA de reenviador"
 
-#: peigen.c:1816 pepigen.c:1816 pex64igen.c:1816
+#: peXXigen.c:1760
 msgid "Export RVA"
 msgstr "Exportar RVA"
 
-#: peigen.c:1823 pepigen.c:1823 pex64igen.c:1823
+#: peXXigen.c:1767
 #, c-format
 msgid ""
 "\n"
 "[Ordinal/Name Pointer] Table\n"
 msgstr ""
 "\n"
-"Tabla [Puntero a Ordinal/Nombre]\n"
+"Tabla [Ordinal/Puntero de nombre]\n"
 
-#: peigen.c:1831 pepigen.c:1831 pex64igen.c:1831
+#: peXXigen.c:1775
 #, c-format
 msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
-msgstr "\tDistribuciÃ³n de nombres de punteros Invalido rva (0x%lx) o contador de entrada (0x%lx)\n"
+msgstr "\tTabla de punteros de nombres no valida rva (0x%lx) o contador de entrada (0x%lx)\n"
 
-#: peigen.c:1838 pepigen.c:1838 pex64igen.c:1838
+#: peXXigen.c:1782
 #, c-format
 msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
-msgstr "\tDistribuciÃ³n Ordinal InvÃ¡lida rva (0x%lx) o contador de entrada (0x%lx)\n"
+msgstr "\tTabla de ordinales no vÃ¡lida rva (0x%lx) o contador de entrada (0x%lx)\n"
 
-#: peigen.c:1852 pepigen.c:1852 pex64igen.c:1852
+#: peXXigen.c:1796
 #, c-format
 msgid "\t[%4ld] <corrupt offset: %lx>\n"
 msgstr "\t[%4ld] <desplazamiento corrupto: %lx>\n"
 
-#: peigen.c:1906 peigen.c:2103 pepigen.c:1906 pepigen.c:2103 pex64igen.c:1906
-#: pex64igen.c:2103
+#: peXXigen.c:1851 peXXigen.c:2021
 #, c-format
-msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
-msgstr "Aviso, el tamaÃ±o de la secciÃ³n .pdata (%ld) no es un mÃºltiplo de %d\n"
+msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
+msgstr "aviso, el tamaÃ±o de la secciÃ³n .pdata (%ld) no es un mÃºltiplo de %d\n"
 
-#: peigen.c:1910 peigen.c:2107 pepigen.c:1910 pepigen.c:2107 pex64igen.c:1910
-#: pex64igen.c:2107
+#: peXXigen.c:1855 peXXigen.c:2025
 #, c-format
 msgid ""
 "\n"
 "The Function Table (interpreted .pdata section contents)\n"
 msgstr ""
 "\n"
-"La Tabla Funcional (se interpretaron los contenidos de la secciÃ³n .pdata)\n"
+"La tabla de funciones (se interpretaron los contenidos de la secciÃ³n .pdata)\n"
 
-#: peigen.c:1913 pepigen.c:1913 pex64igen.c:1913
+#: peXXigen.c:1858
 #, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
-msgstr " vma:\t\t\tDirecciÃ³n Inicio DirecciÃ³n Fin    InformaciÃ³n Desenvuelta\n"
+msgstr " vma:\t\t\tDirecciÃ³n Inicio DirecciÃ³n Fin    Info Desenrollado\n"
 
-#: peigen.c:1915 pepigen.c:1915 pex64igen.c:1915
+#: peXXigen.c:1860
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
 "     \t\tAddress  Address  Handler  Data     Address    Mask\n"
 msgstr ""
-" vma:\t\tInicio   Final    EH       EH       FinPrÃ³log   ExcepciÃ³n\n"
-"     \t\tDirecc   Direcc   Asa      Datos    DirecciÃ³n   MÃ¡scara\n"
+" vma:\t\tInicio   Final    EH       EH       FinPrÃ³log  ExcepciÃ³n\n"
+"     \t\tDirecc   Direcc   Maneja   Datos    DirecciÃ³n  MÃ¡scara\n"
 
-#: peigen.c:1928 pepigen.c:1928 pex64igen.c:1928
+#: peXXigen.c:1873
 #, c-format
 msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
 msgstr "TamaÃ±o virtual de secciÃ³n .pdata (%ld) mÃ¡s grande que el tamaÃ±o real (%ld)\n"
 
-#: peigen.c:1998 pepigen.c:1998 pex64igen.c:1998
-#, c-format
-msgid " Register save millicode"
-msgstr " Registro para guardar milicÃ³digo"
-
-#: peigen.c:2001 pepigen.c:2001 pex64igen.c:2001
-#, c-format
-msgid " Register restore millicode"
-msgstr " Registro para restaurar milicÃ³digo"
-
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
-#, c-format
-msgid " Glue code sequence"
-msgstr " Secuencia de cÃ³digo pegamento"
-
-#: peigen.c:2109 pepigen.c:2109 pex64igen.c:2109
+#: peXXigen.c:2027
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
 "     \t\tAddress  Length   Length   32b exc  Handler   Data\n"
 msgstr ""
-" vma:\t\tInicio   PrÃ³logo  FunciÃ³n  Opciones ExcepciÃ³n EH\n"
+" vma:\t\tInicio   PrÃ³logo  FunciÃ³n  Marcas   ExcepciÃ³n EH\n"
 "     \t\tDirecc   Longitud Longitud 32b exc  Manejador Datos\n"
 
-#: peigen.c:2231 pepigen.c:2231 pex64igen.c:2231
+#: peXXigen.c:2152
 #, c-format
 msgid ""
 "\n"
@@ -8553,120 +9479,117 @@ msgstr ""
 "\n"
 "Reubicaciones de Fichero Base PE (se interpretaron los contenidos de la secciÃ³n .reloc)\n"
 
-#: peigen.c:2261 pepigen.c:2261 pex64igen.c:2261
+#: peXXigen.c:2181
 #, c-format
 msgid ""
 "\n"
 "Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
 msgstr ""
 "\n"
-"DirecciÃ³n Virtual: %08lx TamaÃ±o del trozo %ld (0x%lx) NÃºmero de composturas %ld\n"
+"DirecciÃ³n virtual: %08lx TamaÃ±o de fragmento %ld (0x%lx) NÃºmero de ajustes %ld\n"
 
-#: peigen.c:2279 pepigen.c:2279 pex64igen.c:2279
+#: peXXigen.c:2199
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
 msgstr "\treubicaciÃ³n %4d desplazamiento %4x [%4lx] %s"
 
-#: peigen.c:2340 pepigen.c:2340 pex64igen.c:2340
+#: peXXigen.c:2260
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "%03x %*.s Entrada: "
 
-#: peigen.c:2364 pepigen.c:2364 pex64igen.c:2364
+#: peXXigen.c:2284
 #, c-format
 msgid "name: [val: %08lx len %d]: "
-msgstr "nombre: [val: %08lx len %d]: "
+msgstr "nombre: [val: %08lx lon %d]: "
 
-#: peigen.c:2384 pepigen.c:2384 pex64igen.c:2384
+#: peXXigen.c:2304
 #, c-format
 msgid "<corrupt string length: %#x>\n"
-msgstr "<anchura corrupta: %#x>\n"
+msgstr "<longitud de cadena corrupta: %#x>\n"
 
-#: peigen.c:2394 pepigen.c:2394 pex64igen.c:2394
+#: peXXigen.c:2314
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
-msgstr "<cadena desplz corrupto: %#lx>\n"
+msgstr "<desplazamiento de cadena corrupto: %#lx>\n"
 
-#: peigen.c:2399 pepigen.c:2399 pex64igen.c:2399
+#: peXXigen.c:2319
 #, c-format
 msgid "ID: %#08lx"
 msgstr "ID: %#08lx"
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2322
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Valor: %#08lx\n"
 
-#: peigen.c:2424 pepigen.c:2424 pex64igen.c:2424
+#: peXXigen.c:2344
 #, c-format
 msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
 msgstr "%03x %*.s  Hoja: Direc: %#08lx, Tam: %#08lx, PÃ¡gCodigo: %d\n"
 
-#: peigen.c:2466 pepigen.c:2466 pex64igen.c:2466
+#: peXXigen.c:2386
 #, c-format
 msgid "<unknown directory type: %d>\n"
-msgstr "<tipo directivo desconocido: %d>\n"
+msgstr "<tipo de directorio desconocido: %d>\n"
 
-#: peigen.c:2474 pepigen.c:2474 pex64igen.c:2474
+#: peXXigen.c:2394
 #, c-format
 msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
-msgstr " Tabla: Car: %d, Tiempo: %08lx, Ver: %d/%d, NÃºm Nombres: %d, %d\n"
+msgstr " Tabla: Car: %d, Tiempo: %08lx, Ver: %d/%d, Nombres NÃºm: %d, IDs: %d\n"
 
-#: peigen.c:2563 pepigen.c:2563 pex64igen.c:2563
+#: peXXigen.c:2482
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
-msgstr ""
-"Â¡Detectada secciÃ³n .rsrc corrupta!\n"
-"\n"
+msgstr "Â¡Se ha detectado una secciÃ³n corrupta de .rsrc!\n"
 
-#: peigen.c:2587 pepigen.c:2587 pex64igen.c:2587
+#: peXXigen.c:2506
 #, c-format
 msgid ""
 "\n"
 "WARNING: Extra data in .rsrc section - it will be ignored by Windows:\n"
 msgstr ""
 "\n"
-"ATENCIÃ“N: Datos adicionales dentro en secciÃ³n .rsrc - serÃ¡ ignorado por Ventanas:\n"
+"ATENCIÃ“N: Datos adicionales en la secciÃ³n .rsrc - Windows lo ignorarÃ¡:\n"
 
-#: peigen.c:2593 pepigen.c:2593 pex64igen.c:2593
+#: peXXigen.c:2512
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr " Tabla de cadenas inicia en desplazamiento: %#03x\n"
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2515
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr " Recursos inician en desplazamiento: %#03x\n"
 
-#: peigen.c:2648 pepigen.c:2648 pex64igen.c:2648
+#: peXXigen.c:2572
 #, c-format
 msgid ""
 "\n"
 "There is a debug directory, but the section containing it could not be found\n"
 msgstr ""
 "\n"
-"Hay un directorio depurante, pero la secciÃ³n conteniÃ©ndola no pudo ser encontrada\n"
-"\n"
+"Hay un directorio de depuraciÃ³n, pero no se pudo encontrar la secciÃ³n que la contiene\n"
 
-#: peigen.c:2654 pepigen.c:2654 pex64igen.c:2654
+#: peXXigen.c:2578
 #, c-format
 msgid ""
 "\n"
 "There is a debug directory in %s, but that section has no contents\n"
 msgstr ""
 "\n"
-"Hay un directorio depurante dentro de %s, pero esa secciÃ³n no tiene contenidos\n"
+"Hay un directorio de depuraciÃ³n en %s, pero esa secciÃ³n no tiene contenidos\n"
 
-#: peigen.c:2661 pepigen.c:2661 pex64igen.c:2661
+#: peXXigen.c:2585
 #, c-format
 msgid ""
 "\n"
 "Error: section %s contains the debug data starting address but it is too small\n"
 msgstr ""
 "\n"
-"Error: secciÃ³n %s contiene los datos depurados iniciando en direcciÃ³n pero es demasiado pequeÃ±o\n"
+"Error: la secciÃ³n %s contiene la direcciÃ³n inicial de los datos de depuraciÃ³n pero es demasiado pequeÃ±a\n"
 
-#: peigen.c:2666 pepigen.c:2666 pex64igen.c:2666
+#: peXXigen.c:2590
 #, c-format
 msgid ""
 "\n"
@@ -8674,33 +9597,33 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"Hay un directorio depurante dentro de %s en %lx\n"
+"Hay un directorio de depuraciÃ³n en %s en %lx\n"
 "\n"
 
-#: peigen.c:2673 pepigen.c:2673 pex64igen.c:2673
+#: peXXigen.c:2597
 #, c-format
 msgid "The debug data size field in the data directory is too big for the section"
-msgstr "El tamaÃ±o del campo de datos depurados es demasiado grande para la secciÃ³n"
+msgstr "El tamaÃ±o del campo de datos de depuraciÃ³n es demasiado grande para la secciÃ³n"
 
-#: peigen.c:2678 pepigen.c:2678 pex64igen.c:2678
+#: peXXigen.c:2602
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr "Tipo             TamaÃ±o         Rva      Despl\n"
 
-#: peigen.c:2726 pepigen.c:2726 pex64igen.c:2726
+#: peXXigen.c:2650
 #, c-format
-msgid "(format %c%c%c%c signature %s age %ld)\n"
-msgstr "(formato %c%c%c%c signatura %s envejecimiento %ld)\n"
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr "(formato %c%c%c%c firma %s edad %ld pdb %s)\n"
 
-#: peigen.c:2734 pepigen.c:2734 pex64igen.c:2734
+#: peXXigen.c:2662
 #, c-format
 msgid "The debug directory size is not a multiple of the debug directory entry size\n"
-msgstr "El tamaÃ±o de directorio de depuraciÃ³n no es un mÃºltiplo del tamaÃ±o de entrada de directorio depurador\n"
+msgstr "El tamaÃ±o de directorio de depuraciÃ³n no es un mÃºltiplo del tamaÃ±o de entrada de directorio de depuraciÃ³n\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:2754 pepigen.c:2754 pex64igen.c:2754
+#: peXXigen.c:2746
 #, c-format
 msgid ""
 "\n"
@@ -8709,81 +9632,693 @@ msgstr ""
 "\n"
 "CaracterÃ­sticas 0x%x\n"
 
-#: peigen.c:2989 pepigen.c:2989 pex64igen.c:2989
+#: peXXigen.c:3031
 #, c-format
-msgid "%B: Data Directory size (%lx) exceeds space left in section (%Lx)"
-msgstr "%B: tamaÃ±o de Directorio e Datos (%lx) excede espacio izquierdo dentro de secciÃ³n (%Lx)"
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr "%pB: el directorio de datos (%lx bytes en %<PRIx64>) se extiende a travÃ©s del lÃ­mite de la secciÃ³n en %<PRIx64>"
 
-#: peigen.c:3019 pepigen.c:3019 pex64igen.c:3019
-msgid "Failed to update file offsets in debug directory"
-msgstr "Fallado al actualizar desplazamiento en directorio depurante"
+#: peXXigen.c:3072
+msgid "failed to update file offsets in debug directory"
+msgstr "fallo al actualizar desplazamientos de fichero en el directorio de depuraciÃ³n"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
-msgid "%B: Failed to read debug data section"
-msgstr "%B: fallaba al leer secciÃ³n de datos depurados"
+#: peXXigen.c:3081
+#, c-format
+msgid "%pB: failed to read debug data section"
+msgstr "%pB: no se pudo leer la secciÃ³n de datos de depuraciÃ³n"
 
-#: peigen.c:3841 pepigen.c:3841 pex64igen.c:3841
+#: peXXigen.c:3884
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
-msgstr ".rsrc uniÃ³n fallado: recurso de cadena duplicada: %d"
+msgstr "fallo de uniÃ³n .rsrc: recurso de cadena duplicado: %d"
 
-#: peigen.c:3976 pepigen.c:3976 pex64igen.c:3976
+#: peXXigen.c:4019
 msgid ".rsrc merge failure: multiple non-default manifests"
-msgstr "uniÃ³n .rsrc fallada: mÃºltiples manifestaciones no-predeterminadas"
+msgstr "fallo de uniÃ³n .rsrc: varios manifiestos que no son predeterminados"
 
-#: peigen.c:3994 pepigen.c:3994 pex64igen.c:3994
+#: peXXigen.c:4037
 msgid ".rsrc merge failure: a directory matches a leaf"
-msgstr "fallo de mezcla .rsrc: un directorio coincide con una hoja"
+msgstr "fallo de uniÃ³n .rsrc: un directorio coincide con una hoja"
 
-#: peigen.c:4036 pepigen.c:4036 pex64igen.c:4036
+#: peXXigen.c:4079
 msgid ".rsrc merge failure: duplicate leaf"
-msgstr "fallo de mezcla .rsrc: hoja duplicada"
+msgstr "fallo de uniÃ³n .rsrc: hoja duplicada"
 
-#: peigen.c:4038 pepigen.c:4038 pex64igen.c:4038
+#: peXXigen.c:4084
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
-msgstr "fallo de mezcla .rsrc: hoja duplicada: %s"
+msgstr "fallo de uniÃ³n .rsrc: hoja duplicada: %s"
 
-#: peigen.c:4104 pepigen.c:4104 pex64igen.c:4104
-msgid ".rsrc merge failure: dirs with differing characteristics\n"
-msgstr "fallo de mezcla .rsrc: dirs con caracterÃ­sticas diferentes\n"
-
-#: peigen.c:4111 pepigen.c:4111 pex64igen.c:4111
-msgid ".rsrc merge failure: differing directory versions\n"
-msgstr "fallo de mezcla .rsrc: versiones de directorio diferentes\n"
+#: peXXigen.c:4151
+msgid ".rsrc merge failure: dirs with differing characteristics"
+msgstr "fallo de uniÃ³n .rsrc: directorios con caracterÃ­sticas diferentes"
+
+#: peXXigen.c:4158
+msgid ".rsrc merge failure: differing directory versions"
+msgstr "fallo de uniÃ³n .rsrc: versiones de directorio diferentes"
 
 #. Corrupted .rsrc section - cannot merge.
-#: peigen.c:4228 pepigen.c:4228 pex64igen.c:4228
-msgid "%B: .rsrc merge failure: corrupt .rsrc section"
-msgstr "%B: uniÃ³n .rsrc fallada: secciÃ³n .rsrc corrupta"
-
-#: peigen.c:4236 pepigen.c:4236 pex64igen.c:4236
-msgid "%B: .rsrc merge failure: unexpected .rsrc size"
-msgstr "%B: uniÃ³n .rsrc fallada: tamaÃ±o inesperado .rsrc"
-
-#: peigen.c:4375 pepigen.c:4375 pex64igen.c:4375
-msgid "%B: unable to fill in DataDictionary[1] because .idata$2 is missing"
-msgstr "%B: no se puede llenar DataDictionary[1] porque falta .idata$2"
-
-#: peigen.c:4395 pepigen.c:4395 pex64igen.c:4395
-msgid "%B: unable to fill in DataDictionary[1] because .idata$4 is missing"
-msgstr "%B: no se puede llenar DataDictionary[1] porque falta .idata$4"
-
-#: peigen.c:4416 pepigen.c:4416 pex64igen.c:4416
-msgid "%B: unable to fill in DataDictionary[12] because .idata$5 is missing"
-msgstr "%B: no se puede llenar DataDictionary[12] porque falta .idata$5"
-
-#: peigen.c:4436 pepigen.c:4436 pex64igen.c:4436
-msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
-msgstr "%B: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] porque falta .idata$6"
-
-#: peigen.c:4478 pepigen.c:4478 pex64igen.c:4478
-msgid "%B: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
-msgstr "%B: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] porque falta .idata$6"
-
-#: peigen.c:4503 pepigen.c:4503 pex64igen.c:4503
-msgid "%B: unable to fill in DataDictionary[9] because __tls_used is missing"
-msgstr "%B: no se puede llenar DataDictionary[9] porque falta __tls_used"
+#: peXXigen.c:4270
+#, c-format
+msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
+msgstr "%pB: fallo de uniÃ³n .rsrc: secciÃ³n .rsrc corrupta"
+
+#: peXXigen.c:4278
+#, c-format
+msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
+msgstr "%pB: fallo de uniÃ³n .rsrc: tamaÃ±o de .rsrc inesperado"
+
+#: peXXigen.c:4417
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
+msgstr "%pB: no se puede llenar DataDictionary[1] porque falta .idata$2"
+
+#: peXXigen.c:4437
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+msgstr "%pB: no se puede llenar DataDictionary[1] porque falta .idata$4"
+
+#: peXXigen.c:4458
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
+msgstr "%pB: no se puede llenar DataDictionary[12] porque falta .idata$5"
+
+#: peXXigen.c:4478
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
+msgstr "%pB: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] porque falta .idata$6"
+
+#: peXXigen.c:4520
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
+msgstr "%pB: no se puede llenar DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] porque falta .idata$6"
+
+#: peXXigen.c:4545
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
+msgstr "%pB: no se puede llenar DataDictionary[9] porque falta __tls_used"
+
+#~ msgid "%B: Unknown section type in a.out.adobe file: %x\n"
+#~ msgstr "%B: Tipo seccional desconocido en el fichero a.out.adobe: %x\n"
+
+#~ msgid "%B: Invalid relocation type exported: %d"
+#~ msgstr "%B: tipo reubicante invÃ¡lido exportado: %d"
+
+#~ msgid "%B: Invalid relocation type imported: %d"
+#~ msgstr "%B: Se importÃ³ un tipo de reubicaciÃ³n invÃ¡lido: %d"
+
+#~ msgid "%P: %B: unexpected relocation type\n"
+#~ msgstr "%P: %B: tipo de reubicaciÃ³n inesperado\n"
+
+#~ msgid "%B: unknown/unsupported relocation type %d"
+#~ msgstr "%B: tipo de reubicaciÃ³n %d desconocida/no admitida"
+
+#~ msgid "%B: unsupported relocation: ALPHA_R_GPRELHIGH"
+#~ msgstr "%B: tipo de reubicaciÃ³n no admitida: ALPHA_R_GPRELHIGH"
+
+#~ msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
+#~ msgstr "%B: tipo de reubicaciÃ³n no admitida: ALPHA_R_GPRELLOW"
+
+#~ msgid "%B: unable to find THUMB glue '%s' for `%s'"
+#~ msgstr "%B: no se puede encontrar el pegamento THUMB Â«%sÂ» para Â«%sÂ»"
+
+#~ msgid "%B: unable to find ARM glue '%s' for `%s'"
+#~ msgstr "%B: no se puede encontrar el pegamento ARM Â«%sÂ» para Â«%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): aviso: no se activÃ³ la interoperabilidad.\n"
+#~ "  primer suceso: %B: llamada thumb a arm\n"
+#~ "  considere reenlazar con --support-old-code activado"
+
+#~ msgid "%B: illegal symbol index in reloc: %ld"
+#~ msgstr "%B: Ã­ndice simbÃ³lico ilegal en reubicaciÃ³n: %ld"
+
+#~ msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
+#~ msgstr "error: %B estÃ¡ compilado para APCS-%d, mientras que %B estÃ¡ compilado para APCS-%d"
+
+#~ msgid "error: %B is compiled as position independent code, whereas target %B is absolute position"
+#~ msgstr "error: %B estÃ¡ compilado como cÃ³digo independiente de posiciÃ³n, mientras que el objetivo %B es de posiciÃ³n absoluta"
+
+#~ msgid "error: %B is compiled as absolute position code, whereas target %B is position independent"
+#~ msgstr "error: %B estÃ¡ compilado como cÃ³digo de posiciÃ³n absoluta, mientras que el objetivo %B es independiente de posiciÃ³n"
+
+#~ msgid "private flags = %x:"
+#~ msgstr "opciones privadas = %x:"
+
+#~ msgid " [floats passed in integer registers]"
+#~ msgstr " [flotante pasados en registros enteros]"
+
+#~ msgid " [absolute position]"
+#~ msgstr " [posiciÃ³n absoluta]"
+
+#~ msgid " [interworking flag not initialised]"
+#~ msgstr " [opciÃ³n de interoperabilidad no iniciada]"
+
+#~ msgid " [interworking supported]"
+#~ msgstr " [admite interoperabilidad]"
+
+#~ msgid " [interworking not supported]"
+#~ msgstr " [no admite interoperabilidad]"
+
+#~ msgid "cannot handle R_MEM_INDIRECT reloc when using %s output"
+#~ msgstr "no se puede manipular la reubicaciÃ³n R_MEM_INDIRECT cuando se utiliza la salida %s"
+
+#~ msgid "relocation `%s' not yet implemented"
+#~ msgstr "reubicaciÃ³n Â«%sÂ» aÃºn no implementada"
+
+#~ msgid "uncertain calling convention for non-COFF symbol"
+#~ msgstr "convenciÃ³n de llamada incierta para un sÃ­mbolo que no es COFF"
+
+#~ msgid "unsupported reloc type"
+#~ msgstr "no se admite el tipo de reubicaciÃ³n"
+
+#~ msgid "Unrecognized reloc type 0x%x"
+#~ msgstr "No se reconoce el tipo de reubicaciÃ³n 0x%x"
+
+#~ msgid "ignoring reloc %s\n"
+#~ msgstr "se descarta la reubicaciÃ³n %s\n"
+
+#~ msgid "%B: page size is too large (0x%x)"
+#~ msgstr "%B: tamaÃ±o de pÃ¡gina es demasiado grande (0x%x)"
+
+#~ msgid "%B: warning: line number count (%#lx) exceeds section size (%#lx)"
+#~ msgstr "%B: aviso: contador de nÃºmero de lÃ­nea (%#lx) excede el tamaÃ±o (%#lx) de la secciÃ³n"
+
+#~ msgid "%B: unable to initialize compress status for section %s"
+#~ msgstr "%B: incapaz de inicializar estado compresivo para secciÃ³n %s"
+
+#~ msgid "%B: unable to initialize decompress status for section %s"
+#~ msgstr "%B: incapaz de inicializar estado descompresivo para secciÃ³n %s"
+
+#~ msgid "%B: corrupt symbol count: %#Lx"
+#~ msgstr "%B: contador simbÃ³lico corrupto: %#Lx"
+
+#~ msgid "%B: not enough memory to allocate space for %#Lx symbols of size %#Lx"
+#~ msgstr "%B: sin suficiente memoria para reservar espacio para sÃ­mbolos %#Lx de tamaÃ±o %#Lx"
+
+#~ msgid "%B: unrecognised MN10300 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante MN10300 no reconocido: %d"
+
+#~ msgid "%B: corrupt size field in group section header: %#Lx"
+#~ msgstr "%B: campo de tamaÃ±o corrupto en el encabezado de la secciÃ³n de grupo: %#Lx"
+
+#~ msgid "%B: warning: sh_link not set for section `%A'"
+#~ msgstr "%B: aviso: no se estableciÃ³ sh_link para la secciÃ³n `%A'"
+
+#~ msgid ""
+#~ "%B(%s): warning: interworking not enabled.\n"
+#~ "  first occurrence: %B: Thumb call to ARM"
+#~ msgstr ""
+#~ "%B(%s): aviso: no se activÃ³ la interoperabilidad.\n"
+#~ "  primer suceso: %B: llamada Thumb a ARM"
+
+#~ msgid ""
+#~ "%B(%s): warning: interworking not enabled.\n"
+#~ "  first occurrence: %B: ARM call to Thumb"
+#~ msgstr ""
+#~ "%B(%s): aviso: no se activÃ³ la interoperabilidad.\n"
+#~ "  primer suceso: %B: llamada ARM a Thumb"
+
+#~ msgid "%B: invalid special symbol `%s'."
+#~ msgstr "%B: sÃ­mbolo especial no vÃ¡lido Â«%sÂ»."
+
+#~ msgid "%B: invalid standard symbol `%s'."
+#~ msgstr "%B: sÃ­mbolo comÃºn no vÃ¡lido Â«%sÂ»."
+
+#~ msgid "%B: invalid import library entry: `%s'."
+#~ msgstr "%B: importaciÃ³n de entrada de biblioteca invÃ¡lida: Â«%sÂ»."
+
+#~ msgid "unable to find THUMB glue '%s' for '%s'"
+#~ msgstr "no se puede encontrar el pegamento THUMB Â«%sÂ» para Â«%sÂ»"
+
+#~ msgid "%B: unable to find STM32L4XX veneer `%s'"
+#~ msgstr "%B: incapaz de encontrar chapa STM32L4XX Â«%sÂ»"
+
+#~ msgid "%B(%A+%#Lx): unexpected Thumb instruction '%#lx' in TLS trampoline"
+#~ msgstr "%B(%A+%#Lx): instrucciÃ³n Thumb '%#lx' inesperada en el trampolÃ­n TLS"
+
+#~ msgid "%B: Warning: Thumb BLX instruction targets thumb function '%s'."
+#~ msgstr "%B: Aviso: La instrucciÃ³n Thumb BLX apunta a la funciÃ³n thumb Â«%sÂ»."
+
+#~ msgid "%B(%A+%#Lx): unexpected Thumb instruction '%#lx' referenced by TLS_GOTDESC"
+#~ msgstr "%B(%A+%#Lx):instrucciÃ³n Thumb '%#lx' inesperada referenciada por TLS_GOTDESC"
+
+#~ msgid "error: %B uses FPA instructions, whereas %B does not"
+#~ msgstr "error: %B utiliza instrucciones FPA, mientras que %B no"
+
+#~ msgid "error: %B uses Maverick instructions, whereas %B does not"
+#~ msgstr "error: %B utiliza instrucciones Maverick, mientras que %B no"
+
+#~ msgid "%B: invalid AVR reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante AArch64 no vÃ¡lido: %d"
+
+#~ msgid "Unsupported CR16 relocation type: 0x%x\n"
+#~ msgstr "ReubicaciÃ³n de tipo CR16 no soportado: 0x%x\n"
+
+#~ msgid "%B: unrecognised CR16 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante CR16 no reconocido: %d"
+
+#~ msgid "%B: invalid CR16C reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante CR16C no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid CRIS reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante CRIS no vÃ¡lido: %d"
+
+#~ msgid "%B: unrecognised CRX reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante CRX no reconocido: %d"
+
+#~ msgid "%B: invalid D10V reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante D10V no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid D30V reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante D30V no vÃ¡lido: %d"
+
+#~ msgid "Invalid DLX reloc number: %d"
+#~ msgstr "NÃºmero reubicante DLX no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid Epiphany reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante Epiphany no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid FR30 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante FR30 no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid FRV reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante FRV no vÃ¡lido: %d"
+
+#~ msgid "%H: R_FRV_FUNCDESC_VALUE references dynamic symbol with nonzero addend\n"
+#~ msgstr "%H: R_FRV_FUNCDESC_VALUE referencÃ­a un sÃ­mbolo dinÃ¡mico con adiciÃ³n que no es cero\n"
+
+#~ msgid "%B: unsupported relocation type %i\n"
+#~ msgstr "%B: no se admite el tipo de reubicaciÃ³n %i\n"
+
+#~ msgid "%B: unrecognised I370 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante I370 no reconocido: %d"
+
+#~ msgid "%B: Relocation %s is not yet supported for symbol %s."
+#~ msgstr "%B: reubicaciÃ³n %s aÃºn no se admite para el sÃ­mbolo %s."
+
+#~ msgid "%B: invalid relocation type %d"
+#~ msgstr "%B: tipo de reubicaciÃ³n %d invÃ¡lido"
+
+#~ msgid "%B: invalid i960 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante i960 no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid IP2K reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante IP2K no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid IQ2000 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante IQ2000 no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid LM32 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante LM32 no vÃ¡lido: %d"
+
+#~ msgid "internal error: addend should be zero for R_LM32_16_GOT"
+#~ msgstr "error interno: addend deberÃ­a ser cero para R_LM32_16_GOT"
+
+#~ msgid "%B: invalid M32C reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante M32C no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid M32R reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante M32R no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid M68HC11 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante M68HC11 no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid M68HC12 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante M68HC12 no vÃ¡lido: %d"
+
+#~ msgid "%B: Relocation %s (%d) is not currently supported.\n"
+#~ msgstr "%B: Actualmente no se admite la reubicaciÃ³n %s (%d).\n"
+
+#~ msgid "%B: unrecognised MCore reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante MCore no reconocido: %d"
+
+#~ msgid "%B: Unknown relocation type %d\n"
+#~ msgstr "%B: Tipo de reubicaciÃ³n %d desconocido\n"
+
+#~ msgid "%B: invalid MEP reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante MEP no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid METAG reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante METAG no vÃ¡lido: %d"
+
+#~ msgid "%B: unrecognised MicroBlaze reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante MicroBlaze no reconocido: %d"
+
+#~ msgid "Unrecognised MIPS reloc number: %d"
+#~ msgstr "NÃºmero reubicante MIPS no reconocido: %d"
+
+#~ msgid "%B: invalid Moxie reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante Moxie no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid MSP430X reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante MSP430X no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid MSP430 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante MSP430 no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid MT reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante MT no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid NDS32 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante NDS32 no vÃ¡lido: %d"
+
+#~ msgid "%B: error: Cannot set _ITB_BASE_"
+#~ msgstr "%B: error: no puede establecer _ITB_BASE_"
+
+#~ msgid "error: IFC relocation error."
+#~ msgstr "error: reubicaciÃ³n IFC errÃ³nea."
+
+#~ msgid "%B: error: unknown relocation type %d."
+#~ msgstr "%B: error: tipo reubicante %d desconocido."
+
+#~ msgid "%B: warning: cannot deal R_NDS32_25_ABS_RELA in shared mode."
+#~ msgstr "%B: aviso: se crea un R_NDS32_25_ABS_RELA en un objeto compartido."
+
+#~ msgid "error: Jump IFC Fail."
+#~ msgstr "error: reubicaciÃ³n IFC fallada."
+
+#~ msgid "Linker: cannot init ex9 hash table error \n"
+#~ msgstr "Enlazador: error de tabla hash no puede iniciar ex9\n"
+
+#~ msgid "Linker: error cannot fixed ex9 relocation \n"
+#~ msgstr "Enlazador: error no solucionado ex9 reubicado \n"
+
+#~ msgid "%B: warning: unaligned small data access for entry: {%Ld, %Ld, %Ld}, addr = %#Lx, align = %#x"
+#~ msgstr "%B: aviso: acceso de datos pequeÃ±o desalineados para entradas: {%Ld, %Ld, %Ld}, direc = %#Lx, alineam = %#x"
+
+#~ msgid "failed creating ex9.it %s hash table entry"
+#~ msgstr "fallaba al crear ex9.it %s asiento de tabla hash"
+
+#~ msgid "%B: invalid OR1K reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante OR1K no vÃ¡lido: %d"
+
+#~ msgid "%B: unrecognised PicoJava reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante PicoJava no reconocido: %d"
+
+#~ msgid "%B: unrecognised PPC reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante PPC no reconocido: %d"
+
+#~ msgid "%H: %s reloc against local symbol\n"
+#~ msgstr "%H: %s reubica frente al sÃ­mbolo local\n"
+
+#~ msgid "%P: %B: unknown relocation type %d for symbol %s\n"
+#~ msgstr "%P: %B: tipo de reubicaciÃ³n %d desconocida para el sÃ­mbolo %s\n"
+
+#~ msgid "%P: %B: the target (%s) of a %s relocation is in the wrong output section (%s)\n"
+#~ msgstr "%P: %B: el objetivo (%s) de una reubicaciÃ³n %s estÃ¡ en la secciÃ³n de salida errÃ³nea (%s)\n"
+
+#~ msgid "%B: invalid RL78 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante RL78 no vÃ¡lido: %d"
+
+#~ msgid "Internal Error: RL78 reloc stack overflow"
+#~ msgstr "Error Interno: RL78 reubica desbordamiento superior de pila"
+
+#~ msgid "%B: invalid RX reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante RX no vÃ¡lido: %d"
+
+#~ msgid "%B: IMPORT AS directive for %s conceals previous IMPORT AS"
+#~ msgstr "%B: directiva IMPORT AS para %s concilia un IMPORT AS previo"
+
+#~ msgid "%B: Unrecognised .directive command: %s"
+#~ msgstr "%B: No se reconoce la orden .directive: %s"
+
+#~ msgid "%B: Failed to add renamed symbol %s"
+#~ msgstr "%B: fallaba al aÃ±adir el sÃ­mbolo renombrado %s"
+
+#~ msgid "%B: unrecognised SH reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante SH no reconocido: %d"
+
+#~ msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
+#~ msgstr "No se manipula un STO_SH5_ISA32 inesperado en un sÃ­mbolo local"
+
+#~ msgid "%B: encountered datalabel symbol in input"
+#~ msgstr "%B: se encontrÃ³ un sÃ­mbolo etiqueta de datos dentro de la entrada"
+
+#~ msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
+#~ msgstr "No coincide PTB: una direcciÃ³n SHmedia (bit 0 == 1)"
+
+#~ msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
+#~ msgstr "No coincide PTA: una direcciÃ³n SHcompact (bit 0 == 0)"
+
+#~ msgid "%B: GAS error: unexpected PTB insn with R_SH_PT_16"
+#~ msgstr "%B: error de GAS: insn PTB inesperada con R_SH_PT_16"
+
+#~ msgid "%B: error: unaligned relocation type %d at %#Lx reloc %#Lx"
+#~ msgstr "%B: error: tipo de reubicaciÃ³n %d sin alinear en %#Lx reubicaciÃ³n %#Lx"
+
+#~ msgid "%B: could not write out added .cranges entries"
+#~ msgstr "%B: no pudo escribir fuera entradas .cranges aÃ±adidas"
+
+#~ msgid "%B: could not write out sorted .cranges entries"
+#~ msgstr "%B: no pudo escribir fuera entradas .cranges ordenadas"
+
+#~ msgid "%B: unrecognised SPU reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante SPU no reconocido: %d"
+
+#~ msgid "%B: invalid V850 reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante V850 no vÃ¡lido: %d"
+
+#~ msgid "%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized insns"
+#~ msgstr "%B: %#Lx: aviso: R_V850_LONGCALL apunta al insns no reconocido"
+
+#~ msgid "%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized insn %#x"
+#~ msgstr "%B: %#Lx: aviso: R_V850_LONGCALL apunta al insn %#x no reconocido"
+
+#~ msgid "%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized reloc"
+#~ msgstr "%B: %#Lx: aviso: R_V850_LONGCALL apunta al reloc no reconocido"
+
+#~ msgid "%B: %#Lx: warning: R_V850_LONGCALL points to unrecognized reloc %#Lx"
+#~ msgstr "%B: %#Lx: aviso: R_V850_LONGCALL apunta a reubicaciÃ³n %#Lx no reconocido"
+
+#~ msgid "%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized insns"
+#~ msgstr "%B: %#Lx: aviso: R_V850_LONGJUMP apunta al insns no reconocido"
+
+#~ msgid "%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized insn %#x"
+#~ msgstr "%B: %#Lx: aviso: R_V850_LONGJUMP apunta al insn %#x no reconocido"
+
+#~ msgid "%B: %#Lx: warning: R_V850_LONGJUMP points to unrecognized reloc"
+#~ msgstr "%B: %#Lx: aviso: R_V850_LONGJUMP apunta al reloc no reconocido"
+
+#~ msgid "%B: unrecognised VAX reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante VAX no reconocido: %d"
+
+#~ msgid "%B: invalid Visium reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante Visium no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid XGate reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante XGate no vÃ¡lido: %d"
+
+#~ msgid "%B: invalid XTENSA reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante XTENSA no vÃ¡lido: %d"
+
+#~ msgid "%B: unrecognised Alpha reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante Alpha no reconocido: %d"
+
+#~ msgid "%B: %A+%#Lx: warning: LITERAL relocation against unexpected insn"
+#~ msgstr "%B: %A+%#Lx: aviso: reubicaciÃ³n LITERAL contra insn inesperado"
+
+#~ msgid "unrecognised MIPS reloc number: %d"
+#~ msgstr "nÃºmero reubicante MIPS no reconocido: %d"
+
+#~ msgid "%B: invalid MMIX reloc number: %d"
+#~ msgstr "%B: nÃºmero reubicante MMIX no vÃ¡lido: %d"
+
+#~ msgid "%P: %B: cannot create stub entry %s\n"
+#~ msgstr "%P: %B: no se puede crear la entrada de cabo %s\n"
+
+#~ msgid "%P: stubs don't match calculated size\n"
+#~ msgstr "%P: los cabos no coinciden con el tamaÃ±o calculado\n"
+
+#~ msgid "%H: call to `%T' lacks nop, can't restore toc; recompile with -fPIC\n"
+#~ msgstr "%H: llamar a`%T' falta nop, no puede restaurar toc; recompile con -fPIC\n"
+
+#~ msgid "%P: %B: unknown relocation type %d for `%T'\n"
+#~ msgstr "%P: %B: tipo de reubicaciÃ³n %d desconocido para `%T'\n"
+
+#~ msgid "%B: error: unaligned relocation type %d at %08Lx reloc %08Lx"
+#~ msgstr "%B: error: tipo de reubicaciÃ³n %d sin alinear en %08Lx reubicaciÃ³n %08Lx"
+
+#~ msgid "warning: %B is truncated: expected core file size >= %Lu, found: %llu"
+#~ msgstr "aviso: %B estÃ¡ truncado: esperaba el tamaÃ±o de fichero core >= %Lu, se encontrÃ³: %llu"
+
+#~ msgid "%A has both ordered [`%A' in %B] and unordered [`%A' in %B] sections"
+#~ msgstr "%A tiene tanto secciones ordenadas [`%A' en %B] como desordenadas [`%A' en %B]"
+
+#~ msgid "%A has both ordered and unordered sections"
+#~ msgstr "%A tiene secciones tanto ordenadas como desordenadas"
+
+#~ msgid "%B: .reginfo section size should be %d bytes, actual size is %d"
+#~ msgstr "%B: tamaÃ±o de secciÃ³n .reginfo deberÃ­a ser de %d bytes, tamaÃ±o actual es %d"
+
+#~ msgid "unrecognized relocation (0x%x)"
+#~ msgstr "reubicaciÃ³n no reconocida (0x%x)"
+
+#~ msgid "invalid relocation type %d"
+#~ msgstr "tipo de reubicaciÃ³n %d invÃ¡lido"
+
+#~ msgid "%P%X: read-only segment has dynamic IFUNC relocations; recompile with -fPIC\n"
+#~ msgstr "%P%X: segmento de sÃ³lo lectura tiene reubicaciones dinÃ¡micas IFUNC; recompile con -fPIC\n"
+
+#~ msgid "error: %B: <corrupt x86 ISA needed size: 0x%x>"
+#~ msgstr "error: %B: <corrompe tamaÃ±o ISA x86 requerido: 0x%x>"
+
+#~ msgid "%F%P: failed to create BND PLT section\n"
+#~ msgstr "%F%P: fallado al crear secciÃ³n BND PLT\n"
+
+#~ msgid "Output file requires shared library `%s'\n"
+#~ msgstr "El fichero de salida requiere la biblioteca compartida Â«%sÂ»\n"
+
+#~ msgid "Output file requires shared library `%s.so.%s'\n"
+#~ msgstr "El fichero de salida requiere la biblioteca compartida Â«%s.so.%sÂ»\n"
+
+#~ msgid "Symbol %s not defined for fixups\n"
+#~ msgstr "El sÃ­mbolo %s no estÃ¡ definido para composturas\n"
+
+#~ msgid "Warning: fixup count mismatch\n"
+#~ msgstr "Aviso: no coincide la cuenta de composturas\n"
+
+#~ msgid "%B: string too long (%ld chars, max 65535)"
+#~ msgstr "%B: cadena muy larga (%ld caracteres, mÃ¡x 65535)"
+
+#~ msgid "IEEE parser: string length: %#lx longer than buffer: %#lx"
+#~ msgstr "Interpretador IEEE: longitud de cadena textual: %#lx mÃ¡s largo que bÃºfer: %#lx"
+
+#~ msgid "%B: unrecognized symbol `%s' flags 0x%x"
+#~ msgstr "%B: sÃ­mbolo Â«%sÂ» marcas 0x%x no reconocido"
+
+#~ msgid "%B: unimplemented ATI record %u for symbol %u"
+#~ msgstr "%B: registro ATI %u sin implementar para el sÃ­mbolo %u"
+
+#~ msgid "%B: unexpected ATN type %Ld in external part"
+#~ msgstr "%B: tipo ATN %Ld inesperado en la parte externa"
+
+#~ msgid "%B: unexpected type after ATN"
+#~ msgstr "%B: tipo inesperado despuÃ©s de ATN"
+
+#~ msgid "Deprecated %s called at %s line %d in %s\n"
+#~ msgstr "Se llamÃ³ a %s que es obsoleto en %s lÃ­nea %d en %s\n"
+
+#~ msgid "Deprecated %s called\n"
+#~ msgstr "Se llamÃ³ a %s que es obsoleto\n"
+
+#~ msgid "bfd_mach_o_read_symtab_symbols: unable to allocate memory for symbols"
+#~ msgstr "bfd_mach_o_read_symtab_symbols: no se puede reservar memoria para sÃ­mbolos"
+
+#~ msgid "%B: No core to allocate section name %s\n"
+#~ msgstr "%B: ningÃºn nÃºcleo para reservar nombre de secciÃ³n %s\n"
+
+#~ msgid "%B: can not represent section `%A' in oasys"
+#~ msgstr "%B: no se puede representar la secciÃ³n Â«%AÂ» en oasys"
+
+#~ msgid "%B: `ld -r' not supported with PE MIPS objects\n"
+#~ msgstr "%B: `ld -r' no se admite con objetos PE MIPS\n"
+
+#~ msgid "%B: unimplemented %s\n"
+#~ msgstr "%B: %s sin implementar\n"
+
+#~ msgid "%B: jump too far away\n"
+#~ msgstr "%B: omitir demasiado lejos\n"
+
+#~ msgid "%B: bad pair/reflo after refhi\n"
+#~ msgstr "%B: pair/reflo equivocado tras refhi\n"
+
+#~ msgid "warning: xdata section corrupt"
+#~ msgstr "aviso: secciÃ³n de datos xdata corrupta"
+
+#~ msgid "DST__K_SET_LINUM_INCR not implemented"
+#~ msgstr "DST__K_SET_LINUM_INCR no implementado"
+
+#~ msgid "DST__K_SET_LINUM_INCR_W not implemented"
+#~ msgstr "DST__K_SET_LINUM_INCR_W no implementado"
+
+#~ msgid "DST__K_RESET_LINUM_INCR not implemented"
+#~ msgstr "DST__K_RESET_LINUM_INCR no implementado"
+
+#~ msgid "DST__K_BEG_STMT_MODE not implemented"
+#~ msgstr "DST__K_BEG_STMT_MODE no implementado"
+
+#~ msgid "DST__K_END_STMT_MODE not implemented"
+#~ msgstr "DST__K_END_STMT_MODE no implementado"
+
+#~ msgid "DST__K_SET_PC not implemented"
+#~ msgstr "DST__K_SET_PC no implementado"
+
+#~ msgid "DST__K_SET_PC_W not implemented"
+#~ msgstr "DST__K_SET_PC_W no implementado"
+
+#~ msgid "DST__K_SET_PC_L not implemented"
+#~ msgstr "DST__K_SET_PC_L no implementado"
+
+#~ msgid "DST__K_SET_STMTNUM not implemented"
+#~ msgstr "DST__K_SET_STMTNUM no implementado"
+
+#~ msgid "   Error: length larger than remaining space in record\n"
+#~ msgstr "   Error: longitud mÃ±as larga que espacio restante en registro\n"
+
+#~ msgid "STA_QW (stack quadword) 0x%08x %08x\n"
+#~ msgstr "STA_QW (pila quadword) 0x%08x %08x\n"
+
+#~ msgid "cannot read GST record length\n"
+#~ msgstr "no se puede leer la longitud del registro GST\n"
+
+#~ msgid "Invalid AArch64 reloc number: %d"
+#~ msgstr "NÃºmero reubicante AArch64 no vÃ¡lido: %d"
+
+#~ msgid "%B: can't link hard-float modules with soft-float modules"
+#~ msgstr "%B: no puede enlazar mÃ³dulos flotantes-duros con mÃ³dulos flotantes-blandos"
+
+#~ msgid "%B(%A+0x%lx): Unable to clear RISCV_PCREL_HI20 relocfor cooresponding RISCV_PCREL_LO12 reloc"
+#~ msgstr "%B(%A+0x%lx): Incapaz de vaciar RISCV_PCREL_HI20 reubicando para correspondiente reubicaciÃ³n RISCV_PCREL_LO12"
+
+#~ msgid "%B: aout header specifies an invalid number of data-directory entries: %ld"
+#~ msgstr "%B: cabecera aout especifica un nÃºmero de entradas de datos-directorio no vÃ¡lido: %ld"
+
+#~ msgid ""
+#~ "\n"
+#~ "Function descriptor located at the start address: %04lx\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Se localizÃ³ el descriptor de funciÃ³n en la direcciÃ³n de inicio: %04lx\n"
+
+#~ msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
+#~ msgstr "\tcÃ³digo-base %08lx segmento-de-contenidos (cargable/actual) %08lx/%08lx\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "No reldata section! Function descriptor not decoded.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Â¡No estÃ¡ la secciÃ³n reldata! No se decodificÃ³ el descriptor de funciÃ³n.\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but that section has no contents\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Hay un segmento exportado en %s, pero esa secciÃ³n no tiene contenidos\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but it does not fit into that section\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Hay un segmento de exportaciÃ³n en %s, pero no cabe en esa secciÃ³n\n"
+
+#~ msgid " Register save millicode"
+#~ msgstr " Registro para guardar milicÃ³digo"
+
+#~ msgid " Register restore millicode"
+#~ msgstr " Registro para restaurar milicÃ³digo"
+
+#~ msgid " Glue code sequence"
+#~ msgstr " Secuencia de cÃ³digo pegamento"
+
+#~ msgid "%B: Data Directory size (%lx) exceeds space left in section (%Lx)"
+#~ msgstr "%B: tamaÃ±o de Directorio e Datos (%lx) excede espacio izquierdo dentro de secciÃ³n (%Lx)"
 
 #~ msgid "Unrecognized reloc"
 #~ msgstr "No se reconoce la reubicaciÃ³n"
@@ -8885,24 +10420,6 @@ msgstr "%B: no se puede llenar DataDicti
 #~ msgid "bfd_mach_o_read_dysymtab_symbol: unable to read %lu bytes at %lu"
 #~ msgstr "bfd_mach_o_read_dysymtab_symbol: no se pueden leer %lu bytes en %lu"
 
-#~ msgid "Mach-O header:\n"
-#~ msgstr "encabezado de Mach-O:\n"
-
-#~ msgid " magic     : %08lx\n"
-#~ msgstr " magic     : %08lx\n"
-
-#~ msgid " cputype   : %08lx (%s)\n"
-#~ msgstr " tipocpu   : %08lx (%s)\n"
-
-#~ msgid " filetype  : %08lx (%s)\n"
-#~ msgstr " tipofich  : %08lx (%s)\n"
-
-#~ msgid " ncmds     : %08lx (%lu)\n"
-#~ msgstr " nordenes  : %08lx (%lu)\n"
-
-#~ msgid " sizeofcmds: %08lx\n"
-#~ msgstr " tamordenes: %08lx\n"
-
 #~ msgid " flags     : %08lx ("
 #~ msgstr " opciones  : %08lx ("
 
@@ -9062,9 +10579,6 @@ msgstr "%B: no se puede llenar DataDicti
 #~ msgid "ERROR: %B: Conflicting enum sizes"
 #~ msgstr "ERROR: %B: TamaÃ±os de enum en conflicto"
 
-#~ msgid "Division by zero. "
-#~ msgstr "DivisiÃ³n por cero. "
-
 #~ msgid " [cpu32]"
 #~ msgstr " [cpu32]"
 
@@ -9188,9 +10702,6 @@ msgstr "%B: no se puede llenar DataDicti
 #~ msgid "warning: relocation against removed section; zeroing"
 #~ msgstr "aviso: reubicaciÃ³n contra una secciÃ³n eliminada; se cambia a ceros"
 
-#~ msgid "local symbols in discarded section %s"
-#~ msgstr "sÃ­mbolos locales en la secciÃ³n descartada %s"
-
 #~ msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)"
 #~ msgstr "%s: no coincide el ISA (-mips%d) con mÃ³dulos previos (-mips%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.20200303/bfd/po/fr.gmo ./bfd/po/fr.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/fr.gmo	2020-03-03 02:13:28.000000000 +0000
+++ ./bfd/po/fr.gmo	2026-03-05 02:15:54.000000000 +0000
@@ -1,150 +1,175 @@
-Þ•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
+Þ•>0 :o
+tÌ��ì�, ,»
-»;»O»h»A‡»?É»:	¼D¼[¼1n¼$ ¼
Å¼Ó¼/ó¼#½%½A7½&y½ ½¹½Ò½ë½û½ ¾;¾[¾t¾‹¾˜¾P«¾ü¾*¿;?¿{¿F�¿6Ô¿6À:BÀ5}À,³ÀDàÀN%ÁJtÁ)¿Á=éÁ:'ÂLbÂ)¯ÂBÙÂLÃiÃÃD–ÃGÛÃ2#ÄVÄhÄ|Ä”Ä©Ä3ÈÄüÄÅ0%ÅVÅfÅvÅ+�Å+¼Å+èÅ#Æ8ÆPÆYÆuÆŒÆ¡Æ(ÀÆ%éÆ&Ç(6Ç)_Ç‰Ç ÇÀÇÝÇöÇÈ1ÈJÈeÈ{È“È§È¾È,ØÈÉÉ.ÉFÉ]ÉlÉ‚É—É±ÉÈÉ1ÝÉÊ Ê-ÊDÊ_Ê#wÊ+›Ê&ÇÊ5îÊ$Ë9ËQËkË�Ë›Ë´ËËËáË$öËÌ4ÌTÌlÌ$�Ì¦ÌºÌÏÌ<èÌ%Í4Í
CÍQÍeÍzÍ ’Í³ÍÎÍÞÍþÍÎ:ÎSÎlÎÎ*�ÎºÎÌÎ&ÞÎÏ0ÏJÏ"^Ï	�Ï‹Ï#žÏÂÏÛÏìÏÐ"ÐAÐ"UÐ#xÐ#œÐÀÐ#ÕÐ#ùÐÑ*ÑHÑfÑlÑyÑ�Ñ†Ñ£Ñ
+ÁÑÌÑÑÑ!×Ñ ùÑÒÒ$Ò<Ò\Ò|Ò�Ò!†Ò¨Ò¹ÒÀÒÆÒËÒÐÒÖÒÚÒ"ßÒÓÓ'Ó;Ó&[ÓB‚ÓÅÓåÓêÓïÓöÓüÓÔÔÔ2ÔFÔMÔaÔrÔƒÔ”Ô¥Ô¶ÔÎÔ	ÝÔ
çÔ
õÔ
+Õ
+Õ
+Õ
+$Õ
+/Õ$:Õ
+_Õ#jÕ
+ŽÕ™Õ«Õ!ÃÕåÕúÕ
+	Ö
Ö	"Ö,Ö
+=ÖHÖOÖgÖ�Ö“Ö¢Ö¹ÖÔÖãÖüÖ×× 2×(S×/|×L¬×ù×Ø+ØFØAbØ¤Ø¾ØØØòØ8Ù@ÙXÙmÙ&‡Ù®ÙÍÙ2èÙ?Ú&[Ú‚Ú(¡ÚÊÚ"ÝÚÛ* Û6KÛ{‚ÛrþÛxqÜêÜÝ7€Ý:¸ÝóÝ,Þ62Þ6iÞ$ ÞÅÞ/åÞß5*ß+`ß$Œß±ß6Ðß"à&*à6Qà=ˆà:Æà:áD<á8�á9ºáCôá:8â7sâ8«â@äâG%ã9mã,§ã0Ôã#ä)ä=Dä-‚ä6°äçä7å3;å;oå:«å(æå"æ32æ%fæ?ŒæÌæ0ìæ1ç>Oç3Žç'ÂçDêçK/è({è2¤è2×è;
+é5Fé2|é/¯éVßéS6êSŠêÞêEüê8Bë,{ë`¨ë`	ìjìˆì$¤ì(Éìcòì4Ví‹í$£íšÈícî|î/•î%Åî"ëî-ï+<ï)hï-’ï.Àï$ïï0ð6Eð(|ð$¥ð&Êð2ñð&$ñkKñ*·ñ*âñ4
ò]BòA ò?âòG"ójóO‰óbÙó8<ô,uô+¢ô)ÎôYøô0Rõ=ƒõ3Áõ2õõB(ö,kö(˜öLÁö÷4,÷)a÷$‹÷3°÷9ä÷6ø/UøD…ø&ÊøWñømIùg·ùëúUû\aûH¾ûHü8Pü%‰ü(¯ü&Øü,ÿü#,ý>PýB�ýBÒýþ'5þE]þ4£þ1Øþ9
+ÿ4Dÿ3yÿJ­ÿ(øÿ;!]0|D­/ò:"@]@žGß?'2g8šSÓ''.O,~'«6Ó 
+Y+/…4µ5êN ªoI9d3ž¾Ò<‘<ÎFJRL�OêC:	^~	4Ý	P
+oc
+>Ó
+F`Y~ºF9‚€[
3_
@“
MÔ
m"7�#Èì(&+IRWœ+ô5 Vk8"¸$Û'9(Cb!¦!È*ê/1E/w/§0×*03<di¡=BI=Œ9Ê-&2"Y.|«8Ë:F??†VÆB;`7œ(Ô>ý=<4z#¯OÓ@#LdQ±I8M+†8²2ë9:X3“,Çuô j.‹.º$é'06Bg/ª,Ú'%/,U‚CœJà8+@dJ¥*ð% %A <g 1¤  Ö (÷ l !/�!<½!<ú!+7"c","H¬"6õ"A,#An#J°#>û#J:$J…$<Ð$#
%<1%*n%.™%(È%lñ%v^&AÕ&6'N'4l'0¡'+Ò'Aþ'J@(3‹(@¿(!)#").F)Bu)F¸)4ÿ)%4*:Z*2•*3È**ü*9'+Ca+C¥+:é+T$,Jy,5Ä,4ú,@/-6p-$§-PÌ-../L./|.&¬.:Ó.+/&:/5a/'—/0¿/5ð/3&0%Z0&€0§0'Ç0=ï0#-1+Q13}1(±1@Ú1C25_2'•2 ½2&Þ243g:34¢3m×3AE4@‡4HÈ4G5KY5I¥5Lï5H<6C…6YÉ65#70Y74Š7M¿7N
81\8)Ž8)¸8/â8)9+<97h93 96Ô99:XE:[ž:Cú:6>;>u;=´;*ò;.<2L<[<&Û<-=,0=+]=‰=8¤=Ý=/ø=0(>'Y>8�>Hº>A?)E?=o?#­?@Ñ?2@+E@#q@5•@<Ë@'A%0A(VARA?ÒAFBYB3tB1¨BDÚBHCDhCK­CaùC[[Ds·Dg+Eg“EBûE‚>FTÁF=G!TG-vGb¤GbH{jHgæHgNI0¶I(çI4J5EJO{J)ËJ3õJ-)K/WKH‡KFÐK7LGOL+—LNÃL$M27M!jM.ŒM/»M+ëM)N-AN/oN^ŸNKþNFJO‘O"­OÐO5ëO"!P(DP$mP7’PBÊPA
QDOQS”Q"èQ*R+6R'bR;ŠR8ÆR'ÿR''S3OS>ƒS-ÂS5ðS,&TIST�TºT.ØT/U7U$WU|UFšU&áU!V6*V5aV)—VÁVÛV(úV#W+=W2iW œW$½W#âW.X.5X%dX2ŠX3½X)ñX\YDxYH½YDZLKZX˜ZHñZ):[*d[ �[5°[9æ[@ \+a\6�\mÄ\A2]gt]ëÜ].È^]÷^MU_3£_=×_H`<^`8›`3Ô`4a4=a0ra0£a@Ôa1bBGbLŠbA×bLc8fc+Ÿc2Ëc<þc3;dXodPÈd.e`He&©ePÐe\!fX~fp×fAHg#ŠgE®g+ôgK h.lh<›h,ØhXi,^i‹i¡iµi"Íi%ðij36j2jj�j4½j?òj@2kWsk=Ëk*	l54l%jlB�l%Ól4ùl>.m<mmCªmBîm;1n3mn^¡n)o$*o!Oo'qo8™oÒoòopp!(pJp)`p,Šp-·p$åp
+q1q_Oq-¯q3Ýqr/&r5VrVŒrIãrI-s<ws.´s.ãs5t/Ht;xt´tÇtÛt0ít/uNu'hu7�u)Èu(òu6v'Rvzv1’vÄv
Øv.ævw
!w/w%@w\fw;Ãwÿwx'x*xGxTx	mxwx‰xšx,§xÔxèxþx"y=y(Zy/ƒy/³y1ãy8z#Nz'rz2šz3Íz{;{M{T{\{q{�{ˆ{�{¤{¹{Î{à{ó{
+|!|3|Q|	p|z|˜|
­|	»|"Å|è|ú|"}9}P}Y}e}i}|}Ž} }'²}Ú} ÷}#~<~V~p~Š~¤~¾~Ø~ò~ %HC1Œ#¾,âB€XR€a«€:
�.H�7w�1¯�;á�(‚:F‚,�‚-®‚'Ü‚"ƒ-'ƒUƒ2tƒ§ƒ·ƒÌƒáƒøƒ!„$0„,U„(‚„-«„IÙ„#…5@…v…
+‹…C–…IÚ…$†6†>†F†
d†r†>„†?Ã†A‡E‡/a‡+‘‡8½‡ö‡$ˆ!1ˆ1Sˆ…ˆ¤ˆ+Ãˆïˆ‰‰
+)‰4‰BS‰–‰%¨‰Î‰à‰.þ‰--ŠG[Š3£Š×Š"öŠ‹6‹G‹X‹j‹$ƒ‹¨‹!Å‹ç‹5ù‹/Œ	AŒKŒ]ŒsŒ“Œ­ŒÉŒØŒêŒXñŒ	J�T�Y�e�t�‹�§�½�Ï�ï�Ž(Ž<ŽNŽfŽ-„Ž²ŽÄŽÖŽêŽ�'�A�P�b�t�{�!‚�¤�:À�%û�%!�G�`�Ay�;»�C÷�;‘#U‘,y‘=¦‘Cä‘=(’"f’7‰’<Á’<þ’);“5e“›“¤“v¿“*6”a”'s”H›”ä”ö”ý”•
+•(•G•'Y•�•ž•¶•Î•#æ•
+–,"–.O–,~–.«–Ú–"÷–,—.G—!v—1˜—0Ê—2û—,.˜.[˜#Š˜®˜Î˜(â˜/™!;™]™(z™#£™+Ç™ó™,š 9šZšsš“š§šÇš#æš-
+›"8›[›m›€›Œ›¡›&³›	Ú›Fä›/+œE[œ¡œ-²œJàœM+�y�™�°�Ã�-à�ž*žBž`žtž|žAˆž>Êž	ŸAŸ7]ŸB•Ÿ!ØŸAúŸ< ˜\ õ ¡#¡5¡:J¡#…¡2©¡.Ü¡#¢8/¢3h¢9œ¢Ö¢ã¢ð¢££:!£+\£#ˆ£¬£¿£Ø£ð£,¤:5¤p¤	ˆ¤d’¤÷¤6
+¥;A¥;}¥<¹¥gö¥b^¦<Á¦1þ¦(0§$Y§~§/”§+Ä§ð§¨
+&¨1¨N¨>j¨<©¨æ¨4©'7©$_©6„©»©Ì©ä©û©ª$ª<ªNª`ªrª„ªžª¹ªËªÜªôª`«2t«§«'Á«Lé«46¬7k¬0£¬'Ô¬ü¬­1­C­R­-l­+š­+Æ­*ò­	®	'®
+1®
+<®G®[®g®t®‰®¤®³®È®×®1Ü®¯/.¯^¯}¯ Ž¯'¯¯'×¯&ÿ¯0&°W°u°Š°“°±°9È°-±10±b±,w±a¤±2²49²)n²C˜²EÜ²Y"³Y|³;Ö³;´MN´/œ´5Ì´:µ5=µ4sµ9¨µ7âµ9¶DT¶G™¶Dá¶E&·Cl·-°·,Þ·0¸4<¸>q¸;°¸8ì¸6%¹;\¹3˜¹%Ì¹1ò¹!$ºVFº9�º\×ºA4»1v»?¨»1è»:¼7U¼>�¼$Ì¼Eñ¼u7½q­½I¾i¾4†¾O»¾Z¿/f¿O–¿Pæ¿37À kÀ?ŒÀ:ÌÀ&Á
+.Á9ÁMÁ0ZÁ%‹Á"±Á%ÔÁ0úÁ!+ÂMÂfÂ�Â–Â£ÂS²ÂOÃVÃ,uÃ7¢ÃÚÃ
ÜÃêÃ1ùÃ+Ä?ÄRÄeÄC‚ÄOÆÄ,Å6CÅzÅ$šÅ_¿Å"Æ(BÆAkÆ­Æ,ËÆ2øÆH+ÇtÇ„Ç
+•Ç" Ç
+ÃÇ$ÎÇóÇÈ&È¼<È¹ùÈ³É/ÅÉõÉÊ.Ê*NÊLyÊ2ÆÊ-ùÊ)'Ë"QËtË‡ËœË±Ë2ÀËóË0ûË,Ì%GÌmÌ9zÌ´Ì<ÆÌ=Í3AÍ5uÍ2«Í7ÞÍBÎLYÎ¦Î·ÎÑÎÙÎáÎýÎHÏMÏ4PÏ&…Ï¬ÏµÏ
+ÌÏ×Ï2óÏ-&ÐOTÐ¤ÐÃÐ"ÈÐ*ëÐ%Ñ<ÑDÑCcÑ¤§ÑLÒYÒ sÒL”ÒáÒêÒþÒÓ)Ó?ÓVÓsÓ„Ó–Ó¢Ó¯ÓÃÓEËÓ*ÔN<Ô[‹ÔçÔAëÔ-ÕLÕ,dÕ‘Õ®Õ6ÆÕýÕ Ö8>Ö+wÖ£ÖµÖÅÖÍÖ'âÖ+
+×+6×+b×*Ž×*¹×)ä×(Ø7ØOØcØwØ‹ØžØ
±Ø¿ØIÙØ#Ù 4ÙUÙDtÙP¹Ù
+ÚÚ27Ú$jÚ�Ú¯Ú5ÂÚøÚ!Û5Û<Û2DÛFwÛJ¾Û/	ÜF9Ü€Ü"’ÜµÜÅÜMÔÜ9"Ý;\Ý7˜ÝÐÝèÝÞÞ,'Þ$TÞJyÞ)ÄÞ(îÞ%ß(=ßfß
+‚ß,�ßºß)Ôßþßà6àNàVànà)†à°à
Æà#Ôàøà'á8áIá_áyá–á°á#¼á%àáâ#â:âLâ7câ›â·â%Ðâöâã%ã7ãJã^ãrãˆãJžãJéãJ4äIä:Éäå-#å;Qå+�å@¹å<úå47æ6læ-£æ8Ñæ5
+ç5@ç8vç.¯ç>ÞçIèhgèyÐè>JéN‰éIØéd"êY‡ê0áê;ë8NëF‡ë/Îë5þë&4ì.[ì-Šì.¸ì0çì3í<Lí!‰í«í!Äí)æíEîZVîV±î`ïGiïZ±ïUð.bð,‘ðh¾ðj'ñE’ñ0Øñ6	òk@òE¬òòò&óQ7óS‰óEÝó\#ôH€ôHÉô#õ<6õ<sõe°õQö2hö/›ö/Ëö4ûö=0÷9n÷0¨÷7Ù÷%ø'7ø=_ø6�ø@Ôøù25ùhù,lù
™ù
§ù
µù
Ãù!Ñù:óù
.ú"<ú_ú
nú)|ú)¦úÐúåú+ùú%û4û9û>ûCûHûOûbûiû=oûÜ­û
Šý˜ý!­ý(Ïýwøýlpþ_Ýþ=ÿ]ÿ2uÿ+¨ÿ
Ôÿ)âÿ+8:UK+¡Íë!"1!T$v›¹Òâi÷a>�>ÀÿbD{EÀICP5”SÊ\W{1ÓNHTU�1óO%VuÌçS[X5´êÿ	-	 B	5c	™	®	=À	þ	
+
+,8
+,e
+,’
+"¿
+â
+ú
+!:/P0€)±*Û.05f}�ºÓ,î
4
T
l
ˆ
œ
³
3Í
+GdvŒ¡»Ò5ç0=Xs$�+²'Þ5<#Qu”¬Ëäû)&Pi‰¡(¶ßó<!^m
|Šž³"Ïò
&D_˜¶É-Ú).X2m +´
+àë#þ"ATn#ˆ¬%À#æ#
+.#?#c‡&–&½äêöþ 
+@KP)V3€´¹¾#×#û$4)^pw}‚‡�‘/–Æ#Ëï#4*@_# ÄÉÎÕÝâøÿ/6M^o€‘¢¹	È
Ò
à
+î
+ù
+
+
+4%
+Z[e
+ÁÌÞ,ý*?
N\	mw
�›¢¼Ùë	+&R a
‚�#—'»1ã:zPËá:ò-GH �±Ìç;ü8 Q g :‚ ,½ ê 7	!HA!9Š!+Ä!*ð!"#1"-U"*ƒ"7®"æ"wf#{Þ#Z$±t$H&%?o%¯%EÃ%D	&DN&#“&#·&<Û&'J,'Iw'/Á'/ñ'Y!(0{(4¬(=á(A)=a)>Ÿ)HÞ);'*=c*G¡*=é*;'+;c+gŸ+~,X†,Lß,E,-+r-.ž-FÍ-G.M\.$ª.@Ï.;/NL/N›/3ê/80DW0'œ0VÄ0(1>D14ƒ1K¸1I2<N2Q‹2ZÝ2483Hm3H¶3Tÿ3PT4Q¥4=÷4n55q¤5s6$Š6]¯6N
7@\7q�7q8�8#Ÿ89Ã87ý8†59I¼9:,":ÎO:&;&E;@l;6­;1ä;D<<[<:˜<>Ó<@=3S=B‡=<Ê=>>2F>3y><­>%ê>„?3•?3É?>ý?|<@U¹@NAU^A´AdÔA‡9BPÁB6C0IC+zC^¦C>DODDB”D@×DPE4iE3žE[ÒE.FJNF-™F&ÇF<îFL+GJxGFÃGQ
+H*\Hk‡HyóHwmI(åIuKm„K_òK_RLD²L1÷L-)M/WM4‡M+¼MGèMK0NE|NÂN7ÞNWOEnOA´OJöOHAP?ŠP~ÊPYIQQ£Q$õQ>R]YRC·RFûRYBSXœS`õSVVTC­TQñToCU:³U0îU%V)EV4oV'¤VpÌVE=W<ƒW=ÀWhþWÝgX_EYH¥YDîY3ZC?[Cƒ[QÇ[]\_w\b×\S:]}Ž]9^dF^Š«^J6_T�_…Ö_ª\`[a©cap
b-~bG¬bUôb”Jc<ßc-dJd6dd4›dWÐdd(e:�e9ÈeffZ.f$‰f%®f5ÔfQ
+gU\g$²g$×g1üg7.h6fh:�h=Øh5i7Li5„iDºiŒÿiXŒjPåjX6kJ�k=Úk+l6DlD{l%ÀlBælE)mTomNÄmsnN‡nTÖnP+o5|oI²oFüo<Cp-€pb®pUqRgqcºqerD„r4ÉrXþrOWsZ§sNtMQtUŸt¤õt'šu?Âu?v)Bv-lvAšvSÜv90w8jw8£w6Üw8xLxKkxR·xT
+yS_yb³ySz@jz9«zPåzC6{.z{9©{—ã{8{|F´|Fû|.B}!q}>“}JÒ}D~sb~sÖ~bJ@­TîbC€X¦€-ÿ€L-�/z�;ª�=æ�Œ$‚ ±‚LRƒ=Ÿƒ(Ýƒ?„BF„)‰„Y³„^
…Jl…]·….†.D†Cs†V·†]‡9l‡%¦‡UÌ‡>"ˆ=aˆFŸˆ\æˆZC‰Zž‰Pù‰oJŠZºŠ=‹@S‹T”‹@é‹)*ŒlTŒ<ÁŒFþŒCE�@‰�VÊ�:!ŽF\Ž@£Ž.äŽ5�<I�@†�0Ç�1ø�(*�6S�DŠ�1Ï�?‘EA‘*‡‘L²‘Kÿ‘AK’1�’!¿’/á’E“•W“Dí“q2”H¤”Gí”O5•N…•RÔ•K'–\s–fÐ–T7—lŒ—Qù—<K˜;ˆ˜`Ä˜`%™>†™0Å™5ö™D,š;qšA­šPïšG@›kˆ›Mô›kBœr®œS!�lu�Jâ�N-žC|žFÀž?ŸxGŸ,ÀŸ<íŸ;* 0f !— <¹  ö B¡8Z¡>“¡QÒ¡V$¢Q{¢6Í¢S£(X£c�£Bå£5(¤<^¤<›¤EØ¤'¥(F¥3o¥n£¥G¦NZ¦#©¦DÍ¦9§SL§W §Sø§_L¨…¬¨q2©”¤©9ª¹ªQ9«²‹«n>¬T­¬'­8*­ƒc­‹ç­”s®ˆ¯�‘¯@"°5c°;™°FÕ°`±3}±I±±4û±?0²gp²fØ²W?³k—³<´d@´-¥´GÓ´-µ9Iµ6ƒµ;ºµ*öµ7!¶?Y¶v™¶S·Hd·­·!È·ê·<¸+A¸2m¸. ¸=Ï¸O
¹O]¹S­¹[ºC]º7¡º7Ùº3»KE»E‘»2×»6
+¼:A¼T|¼;Ñ¼H
½/V½c†½ê½(¾61¾7h¾$ ¾2Å¾"ø¾\¿.x¿'§¿;Ï¿BÀ5NÀ$„À+©À/ÕÀ&Á6,Á=cÁ'¡Á+ÉÁ*õÁ4 Â5UÂ,‹Â=¸Â>öÂ*5Ãs`ÃbÔÃc7ÄP›ÄTìÄsAÅ^µÅ5Æ3JÆ*~ÆO©ÆBùÆL<Ç1‰ÇP»ÇzÈ[‡ÈxãÈ)\É?†ÊoÆÊp6ËE§ËSíË]AÌFŸÌKæÌW2ÍAŠÍIÌÍAÎAXÎWšÎ5òÎ@(ÏMiÏA·ÏLùÏ=FÐK„ÐLÐÐVÑCtÑz¸Ñe3ÒA™ÒyÛÒ0UÓ{†ÓdÔ`gÔƒÈÔNLÕ+›ÕXÇÕ5 ÖOVÖ0¦ÖN×Ö<&×rc×7Ö×Ø+ØFØ2]Ø<�Ø%ÍØJóØ@>Ù-Ù?­ÙEíÙC3ÚiwÚQáÚ03ÛMdÛ;²ÛIîÛ68Ü>oÜ^®Üc
ÝmqÝcßÝYCÞC�Þ†áÞ4hß,�ß Êß.ëß>à*Yà„à
˜à¦à2¼à#ïà2á;FáA‚á6Äáûá8âfHâ,¯â4Üâ ã;2ã<nãi«ãYä]oäQÍä;å;[åG—åKßåN+æzæ‘æ¦æC¸æ3üæ0ç0MçD~çCÃç7èK?è6‹èÂè6Üèé,é.;éjé
{é‰é$™éi¾é>(êgê&~ê¥ê ¨êÉêßê	ùêëë'ë74ëlë‚ë#œë"Àë'ãë<ì6HìFìCÆìO
+í0Zí1‹í>½íBüí?îASî•îžî§îÀîÔîÝîæîúîï#ï5ïHï`ïxï(Œï'µï
+Ýï"èïð
(ð	6ð*@ðkð!}ð,Ÿð&Ìð	óðýðññ.ñ@ñRñ0dñ•ñ)´ñ+Þñ
+ò&ò@òZòtòŽò¨òÂò,Ùò&óK-ó<yó-¶ó5äóOôujôvàôDWõ4œõ:Ñõ<ö_Iö1©öJÛöC&÷Lj÷.·÷+æ÷8ø%Kø7qø©ø¿øÚø%øøù"9ù&\ù4ƒù/¸ù5èùMú#lúB�úÓúðúJûVKû¢û´û¼ûÄû
âûðûMüNPücŸü#ý?'ý4gýDœýáý>þý;=þ:yþ'´þ'ÜþMÿRÿrÿŒÿ
+œÿ2§ÿTÚÿ/"Ad$v@›1ÜQ<`/�4Í!5I[$y*ž*ÉôHOas…�¼%Ú#k*–Ÿ¥´Å!Ûý(Gc‚œ±!Í9ï)=RjŠ8©âò*$!O=q-¯,Ý#
+.OI[™Rõ,H	Eu	2»	Rî	XA
+Aš
+:Ü
+@HXH¡2êA	_!i™‹7%
]
0o
c 
$68I‚3”Èç$4Y3r/¦3Ö/
+:#Y3}/±%á5==9{3µ/é$ >_+u1¡!Óõ)$>3c—7±!é!%G#[$(¤3Í&(:Wj‰6žÕ\Û28~kê/ük,s˜(5N#j0Ž¿7ÈCDbjOvIÆ["H~ZÇ0"]S1±»ã'ŸÇÙëC5G2}=°QîE@G†FÎ"/AIAi>«.ê 2 M e 6 K¶ !!$!u4!ª!B½!A"AB";„"tÀ"o5#A¥#2ç#)$'D$l$=…$=Ã$%!%@%7Q%5‰%Y¿%R&&l&S“&Gç&@/'Lp'½'Ï'ì'("(<(Y(l((’(¥(Ä(ã(ö(")6+)b)6â)*37*bk*GÎ*D+=[+:™+'Ô+'ü+$,
9,G,>f,<¥,<â,<-	\-	f-
+p-
+{-†-¤-µ-È- ß-..$.3.48.'m.>•.Ô.ñ.!/,&/8S/CŒ/7Ð/*0$30X0#k0�0@­01î06 1#W1G{1ƒÃ16G2<~2*»2Hæ2f/3|–3|4S�4Pä4p55@¦5Hç5Q06<‚6S¿6p7N„7pÓ7UD8fš8]9Z_9\º9B:AZ:Eœ:Iâ:O,;K|;GÈ;T<<e<6¢<&Ù<2=,3=…`=Pæ=u7>\­>8
+?^C?A¢?Iä?H.@Lw@&Ä@eë@pQAsÂAP6B,‡BF´B_ûBp[C2ÌCbÿCYbD1¼D$îDDE?XE9˜EÒEÞEüE>F3NF4‚F4·FYìF,FGsGŒGªGÉGÛGhìGtUH&ÊH0ñHD"IgIiIxI;ˆIÄIØIëIþI]JkyJ5åJCK!_K&�Ky¨K"L*>LRiL¼L5ÜL:MNMMœM¬M	½M#ÇMëM0÷M(N$;N`NéyNÝcOAP4UP"ŠP$­P/ÒP9Q_<QCœQ6àQ6R-NR|R“R©RÀR`ÍR	.S98S rSE“SÙS9ìS&T@:TL{TGÈT[UHlUFµUSüU]PV®V(ÁVêVùVW!Wo'W—WM›W.éWX%X
CXQXElX>²XmñX(_YˆY(ŽY;·Y2óY&Z%2ZpXZÁÉZ‹[—[:·[gò[	Z\d\z\�\¨\À\Ù\ø\
+]].]A]X]Xa]Bº]Yý]sW^Ë^XÏ^(_"F_Ei_¯_Ï_Iè_&2`-Y`C‡`MË`a1aHaTa*la.—a.Æa.õa-$b-Rb,€b+­bÙbîbcc)c<cOc$^c…ƒc	d# d*DdSodaÃd%e"8e2[e/Že+¾eêe_fbf=‚fÀfÈfGÑf\g]vg?ÔgXhmh+…h±hÁhSÐhB$i5giH�iæij$j4jDHj<�jWÊj="k8`k5™k;Ïk"l.l8;ltl4‘l%Æl$ìlm-m5mOm5imŸm·m;Çmn6!nXnpn�n#©nÍnèn"ôn8o#Poto“o¯oAÊo"p#/p7Sp%‹p±pÆpØpëpÿpq)q`?q] qYþq\XrMµrs2#sIVs< sOÝsH-t9vt?°t7ðtE(uGnuF¶uAýuC?vNƒv\ÒvŒ/wž¼wO[xb«x]y~ly`ëy9LzA†zAÈzT
+{>_{Fž{/å{;|/Q|6�|2¸|5ë|@!}/b}’}(­}2Ö}T	~X^~]·~{R‘zäw_€8×€6�uG�ƒ½�VA‚F˜‚Jß‚z*ƒ^¥ƒ/„-4„cb„‰Æ„jP…n»…`*†`‹†0ì†I‡Ig‡±‡j1ˆAœˆ1Þˆ=‰NN‰N�‰Gì‰F4ŠK{Š9ÇŠ2‹^4‹V“‹jê‹#UŒByŒ¼Œ-ÀŒîŒ��)�0<�Tm�Â�/Õ�ŽŽ8.Ž8gŽ Ž»Ž:ÔŽ�$�)�.�3�8�?�X�_�Se�jÖ¼ÂW8åì‰³-âtÏ›•áÁ*˜lUCÔVÚõè_Tˆù*Ê�­�KÊ¬D~<Ýt
+¼…€Ö¾‹ ¤ËŸ¤æ'™Ã®Ñ#ˆ&dŒê´œt%"o*ùsUò±Æl¨„ñu¹
/è;øÒçoÙæz·çCôë ú�#o%Ö&é;g!î±
ówÙ±’yRñH1 ¢<¡Y…�ŽrkÜèÓ«Š‘Êþÿ‰„á–ûÝ	[Žq„fsæ ®ˆsØ_•ÎÌ"žÕÉÅä€œn çùÔYC¿4ÃiW"²�5àß*¥íæö2?U–ƒ{k9QšPEÚµÑ·D:Å¶—@ùhê9´2·Or‡C¶(íy3™þ|>ö5P	lZÇ0Ð®rC¡œ‹càZöh6¥�Zû¥ïÃm¤ÑêwOk‚…¦™‘y›Ó0ï=³wáˆI’câ�Ý»¢çI°žäË}•U»M”»ÿ!×É@S657=�ÅWy¶Š(
+÷¢Ê^²—:r%Sô¦Šñ[¥¦§š“‡ß;ùŒñ©ôëãÕ[“«Ïý¨Œs4Ížìñ³ÆRO€Ä¬%mi×(í\v'uF¿<‹eÀO3q`alHš˜×ê�ÃÆãÓ§3Å9ëÍNí6ªˆ'Hœî\z®ï½Ve÷S4"°9a¡h$KÇ_ôÔA6š‚Ó£•vI8EØ#5?ó0G°-�Ü­Q/Æ«�¯Q B%[šYÉë/]!8\Ãð+÷'9§�
+A
óÍÁ^vzæBüTÕ~ÎÏÔWNL{5V,~$.E²7Vx/Þ³!±Úx
+Òú?<Ûû}Þß[oœ(Ç¥s6‰m¯Ñ G†náòÎnÚïGå+õ°ƒJËTC|Hd] `AµÇV”-µÕiï0ËG‚
îÓ8Í²@›p¸p&å–sÙ.-=¯f‡!|Ê©R"Ô¸îz¨Á£ŒçIàmÀÒ™R¼ŸðdÿgÚj>	u]$ðªŸ€ìÀÿ¯
+ú.ÛNµÛ¼‘DÄ	f­=uM3q™n5óºù­wx�
+Y.[j�õ1�h` ZÞ¾DöçÙbYKeÉBî¨òQ¨!ÏäP}àûùaÈx}ß,òLìgý¸ÒÁ6Šb�¡ÔãN\ü9÷Ä&Àée½ÔØD¦¾åé�Ü´´”á˜Io+ˆJÈÍ÷Ï‡Y�uOK©/m“¸|VM�§®Ù'`ë4`:˜môB!Ÿ±Û”Ü°‚;£52#fàO+,$1¤Ö©iTUî¡F)x¼â¨v'üÜ
Ä²ú¨;»�Õtÿ^üï|>=a%Jåê70l’=GŽ„ÕT9žŽ+>)>8ì”Ðvâ—?�±Z¿?nÂŸ­H¶x¼‚Fcó*.ÎYå<^-db®Ï	Ûã>×Ñ†õ¢Q]	áÌ¶Îz¹Œñ_L³{_N!þ¤ÌÈø.Ÿ{:<4—ÐÙ•fâvd>…ô–@ûÃXÒ#2#BQ¾XuÆà­[�†žuÒ%4�>õD£;BF“AW¬ñõbJNÎ�^'’Ð�ú82¬�Ð¦4bÙ»;…oX„6X�¬ƒ gÅ#{ûays&mÌÂR&w<SýÛ
+ø®L„]½‡^¾{¿KF8:|bš7
e¸†)JÍ‰÷G€7È7äŽU„Xëˆ´@€äy˜¹Éöhìõ+tD�È~†_˜i1+øÞºÝ¿è(zè©ÿ‹úUÈúüÞrÖž57zSk‘1Æ¾÷¥8)d](äé°þºI¼,qÞðŒ-š]EÄ
,ªM‘e×iËý‡0K:¬�XlÌµ¶ûøò×ìƒgô Š¾‚ëkp¹ÇM2¹$Ì)"‰Cf·\œêÇÉ,}–ƒ–åóLé›LÁLâÌÃ�HpI´�¤3&:f ð}"™3Qµeó
+²Ñ½G“¯*¿—FÐéoýt%&Ž·‰d$×q-ÜÂÀØ)ªŽqî•ß;ÊÝ¢pZÄV½Rh“
+ƒ`€$º?Sj‹p«<£~Á›)§”aJ ¤í°áxíAtSüÂ9ËÓµ´í\ªWJ¯,ã…P{Ó	}6/TgØ•‡OÈ™BâÛ$›ø³§RF“æ�cŠ‚1¹*øàb³ÒÄl”¬c¦cA˜c?’£þã¢­œ–ðr‹½»MZèêAj†#pÆq›é¶—Ð‰ÎË‹ü‘k—ä'�,Ÿ~Šþ·/ÊØ†_P`n§~ÇÀ¡jÝj«º@¯«(Ú/WHTÚÍi|Þ½’aÀ©rƒwÏÿÕ·ý¸�:"^±E\E0’3Ø*²þÅÖkª7ðÅ-¥yòžÝ1ãï»ç(ß ‘ö.	2©0ÂEPÖN2)Üè¿¹Âgwh£ªß=v…nÑ¡M¢ö4�Pæ¸ÁÉ=òŒKºý.º« X13@¦¹�À�Ç�Î�l¢€¢œ¢°¢Ä¢Ø¢ì¢££(£<£P£d£x£Œ£ £´£È£Ü£ð£¤ ¤4¤H¤\¤p¤„¤˜¤¬¤À¤Ü¤ð¤¥ ¥D¥`¥t¥ˆ¥œ¥°¥Ì¥à¥ô¥¦$¦8¦L¦`¦t¦ˆ¦œ¦°¦Ä¦Ø¦ì¦§$§@§T§h§|§�§¤§¸§Ì§è§¨ ¨4¨H¨\¨p¨„¨˜¨¬¨À¨Ô¨è¨ü¨©$©8©L©`©t©ˆ©œ©¸©Ô©è©ü©ª,ª@ªTªhª|ª�ª¤ª¸ªÌªèª««4«P«l«ˆ«œ«°«Ì«à«ü«¬,¬@¬\¬p¬„¬˜¬¬¬À¬Ô¬è¬ü¬­,­@­\­p­Œ­ ­´­È­Ü­ð­®®,®@®T®h®”®°®Ì®à®ü®¯$¯8¯L¯`¯t¯ˆ¯œ¯°¯Ä¯Ø¯ì¯°°(°<°P°d°€°”°¨°¼°Ð°ä°ø°± ±<±P±d±€±¤±À±Ô±è±ü±²,²@²T²h²„²˜²¬²À²Ô²è²ü²³$³8³L³h³„³ ³´³È³Ü³ð³´´,´H´d´€´”´¨´¼´Ð´ä´ø´µ µ4µHµ\µpµ„µ˜µ¬µÀµÔµèµüµ¶4¶H¶\¶x¶Œ¶ ¶´¶È¶Ü¶ð¶··,·H·d·x·”·°·Ì·è·ü·¸,¸@¸\¸x¸Œ¸ ¸¼¸Ð¸ä¸ø¸¹ ¹4¹H¹\¹x¹Œ¹ ¹¼¹Ð¹ì¹ºº(º<ºPºdºxºŒº º´ºÈºôº»Õ�ÿÿÿÿ÷�ÿÿÿÿ�"ÿÿÿÿO� ÿÿÿÿ‰� ÿÿÿÿÃ�ÿÿÿÿù� ÿÿÿÿ ‘5ÿÿÿÿ\‘%ÿÿÿÿˆ‘)ÿÿÿÿ¸‘(ÿÿÿÿç‘/ÿÿÿÿ’ÿÿÿÿ9’'ÿÿÿÿg’ÿÿÿÿŸ’-ÿÿÿÿÍ’ÿÿÿÿê’7ÿÿÿÿ#“ÿÿÿÿN“ ÿÿÿÿv“%ÿÿÿÿ³“ÿÿÿÿç“*ÿÿÿÿ”.ÿÿÿÿB”)1ÿÿÿÿœ”%ÿÿÿÿÂ”9ÿÿÿÿü”
+2ÿÿÿÿ8•"ÿÿÿÿl•ÿÿÿÿ“•9ÿÿÿÿã•%ÿÿÿÿ–
+Hÿÿÿÿj–
+/ÿÿÿÿÁ–)ÿÿÿÿ—
+6ÿÿÿÿB—
+>ÿÿÿÿŠ—
+0ÿÿÿÿÄ—
+Fÿÿÿÿ˜
+ÿÿÿÿV˜
++ÿÿÿÿ‹˜
+ÿÿÿÿ³˜
+"ÿÿÿÿß˜@)ÿÿÿÿN™
+/ÿÿÿÿ‡™
+ ÿÿÿÿ±™-ÿÿÿÿø™6ÿÿÿÿDš6ÿÿÿÿ�š
+7ÿÿÿÿÐš
+?ÿÿÿÿ›
+Aÿÿÿÿd›
+Aÿÿÿÿ¯›
+ÿÿÿÿÔ›ÿÿÿÿœ+ÿÿÿÿ>œ-ÿÿÿÿxœ3ÿÿÿÿ¬œ
+-ÿÿÿÿãœ(ÿÿÿÿ�
+-ÿÿÿÿV�ÿÿÿÿˆ�6ÿÿÿÿÅ�>ÿÿÿÿ
+ž#ÿÿÿÿ5žÿÿÿÿqžÿÿÿÿ­ž
+2ÿÿÿÿéž
+.ÿÿÿÿ!ŸFÿÿÿÿhŸ
+2ÿÿÿÿ¤Ÿ
+2ÿÿÿÿàŸ
+2ÿÿÿÿ 
+2ÿÿÿÿX 
+2ÿÿÿÿ” 
+2ÿÿÿÿÐ Fÿÿÿÿ¡
+9ÿÿÿÿZ¡
+7ÿÿÿÿ›¡
+9ÿÿÿÿÞ¡Fÿÿÿÿ%¢Fÿÿÿÿl¢	2ÿÿÿÿ§¢+ÿÿÿÿÙ¢.ÿÿÿÿ£+ÿÿÿÿ@£-ÿÿÿÿu£0ÿÿÿÿÃ£"ÿÿÿÿ¤!ÿÿÿÿ5¤
+*ÿÿÿÿk¤
+Aÿÿÿÿ¶¤
+dÿÿÿÿ$¥
+$ÿÿÿÿR¥1ÿÿÿÿŽ¥1ÿÿÿÿÀ¥
+ÿÿÿÿÝ¥5ÿÿÿÿ+¦&ÿÿÿÿ_¦=ÿÿÿÿ¯¦&ÿÿÿÿ§+ÿÿÿÿB§ÿÿÿÿv§]ÿÿÿÿã§!5ÿÿÿÿ:¨
+3	ÿÿÿÿ€¨ÿÿÿÿ²¨Kÿÿÿÿþ¨<"ÿÿÿÿ\©
+ÿÿÿÿ†©$ÿÿÿÿ¿©ÿÿÿÿª;ÿÿÿÿoªAÿÿÿÿÏªÿÿÿÿøª2ÿÿÿÿ2«ÿÿÿÿc«ÿÿÿÿ•«=ÿÿÿÿä«IÿÿÿÿG¬(ÿÿÿÿ…¬Iÿÿÿÿè¬!ÿÿÿÿ­!ÿÿÿÿN­ÿÿÿÿ­+ÿÿÿÿ¬­=ÿÿÿÿê­+ ÿÿÿÿ7®5ÿÿÿÿm®@ÿÿÿÿ²®
+%ÿÿÿÿá®
+%ÿÿÿÿ¯7ÿÿÿÿH¯-ÿÿÿÿv¯ÿÿÿÿ“¯<ÿÿÿÿÞ¯-ÿÿÿÿ°(�ÿÿÿÿÐ°
+.ÿÿÿÿ±
ÿÿÿÿ± %ÿÿÿÿ\±
+"	ÿÿÿÿ¯±B#$ÿÿÿÿ8²#&ÿÿÿÿ‚²&ÿÿÿÿ¯²$ÿÿÿÿÙ²30ÿÿÿÿ<³#ÿÿÿÿ{³"ÿÿÿÿº³ÿÿÿÿõ³.ÿÿÿÿ*´6ÿÿÿÿg´7ÿÿÿÿ¥´6ÿÿÿÿâ´1ÿÿÿÿµCÿÿÿÿdµÿÿÿÿŠµAÿÿÿÿÒµÿÿÿÿ¶5ÿÿÿÿE¶/ÿÿÿÿu¶Fÿÿÿÿ½¶(ÿÿÿÿ·#	ÿÿÿÿ.·+ÿÿÿÿu·&%ÿÿÿÿÀ·)	ÿÿÿÿò·Fÿÿÿÿ:¸K.ÿÿÿÿ³¸-ÿÿÿÿá¸Kÿÿÿÿ-¹
+<ÿÿÿÿs¹*ÿÿÿÿ¹¹ÿÿÿÿå¹=ÿÿÿÿ;º.ÿÿÿÿyº
+`ÿÿÿÿåº
+&<ÿÿÿÿS»6ÿÿÿÿ¢»
+@ÿÿÿÿì»
+Bÿÿÿÿ8¼
+5ÿÿÿÿw¼
+EÿÿÿÿÆ¼
+#ÿÿÿÿ½
+.ÿÿÿÿI½
+&ÿÿÿÿy½
+*ÿÿÿÿ­½`;ÿÿÿÿN¾
+9ÿÿÿÿ‘¾
+*ÿÿÿÿÅ¾Fÿÿÿÿ*¿@ÿÿÿÿ€¿@ÿÿÿÿÛ¿
+=ÿÿÿÿ"À
+MÿÿÿÿyÀ
+IÿÿÿÿÌÀ
+IÿÿÿÿÁ
+"ÿÿÿÿKÁ'ÿÿÿÿ•Á;ÿÿÿÿÞÁ<ÿÿÿÿ)Â@ÿÿÿÿjÂ
+0ÿÿÿÿ¤Â+ÿÿÿÿáÂ
+4ÿÿÿÿÃ'+ÿÿÿÿqÃ8ÿÿÿÿ°ÃVÿÿÿÿ
Ä'ÿÿÿÿ<Ä!ÿÿÿÿƒÄ!%ÿÿÿÿÐÄ
+Yÿÿÿÿ3Å
+6ÿÿÿÿsÅVÿÿÿÿÊÅ
+2ÿÿÿÿÆ
+2ÿÿÿÿBÆ
+2ÿÿÿÿ~Æ
+2ÿÿÿÿºÆ
+2ÿÿÿÿöÆ
+2ÿÿÿÿ2ÇXÿÿÿÿ‹Ç
+9ÿÿÿÿÎÇ
+7ÿÿÿÿÈ
+8ÿÿÿÿQÈXÿÿÿÿªÈXÿÿÿÿÉ	<ÿÿÿÿHÉ,ÿÿÿÿ{É0ÿÿÿÿ²É8ÿÿÿÿñÉ=ÿÿÿÿ6Ê@ÿÿÿÿ•Ê'!ÿÿÿÿÝÊ'ÿÿÿÿË
+3ÿÿÿÿVË
+Wÿÿÿÿ·Ë
+€ÿÿÿÿAÌ
+1ÿÿÿÿ|Ì8ÿÿÿÿ¿ÌFÿÿÿÿÍ
+ÿÿÿÿ(ÍPÿÿÿÿ—Í2ÿÿÿÿ×ÍHÿÿÿÿ=Î7.ÿÿÿÿ²Î6
+ÿÿÿÿÏ$ÿÿÿÿ<Ïmÿÿÿÿ»Ï!<ÿÿÿÿÐ
+<ÿÿÿÿjÐ'ÿÿÿÿ´ÐYÿÿÿÿÑO-ÿÿÿÿŠÑ
+ÿÿÿÿÀÑ4ÿÿÿÿÒ1ÿÿÿÿuÒ!Oÿÿÿÿ÷Ò(SÿÿÿÿrÓ&ÿÿÿÿ£Ó5ÿÿÿÿëÓ#ÿÿÿÿ)Ô!!ÿÿÿÿkÔRÿÿÿÿØÔ$_ÿÿÿÿ[Õ5ÿÿÿÿ¬Õ$_ÿÿÿÿ/Ö0ÿÿÿÿxÖ0ÿÿÿÿ·Ö$ÿÿÿÿóÖ:ÿÿÿÿ/×6 ÿÿÿÿ…×C"ÿÿÿÿì×:ÿÿÿÿ'ØNÿÿÿÿzØ
+6ÿÿÿÿºØ
+,ÿÿÿÿðØCÿÿÿÿ4Ù8ÿÿÿÿmÙÿÿÿÿœÙPÿÿÿÿÚ)=ÿÿÿÿiÚÇÿÿÿÿLÛ
+<ÿÿÿÿ’Ûÿÿÿÿ¢Û"2ÿÿÿÿöÛ3ÿÿÿÿ_ÜB %ÿÿÿÿæÜ04ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%08lx>	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 Table 			Ordinal Table 				[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>
 	[Name Pointer/Ordinal] Table	%08lx
-	code-base %08lx toc (loadable/actual) %08lx/%08lx
-	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:  Hint/Ord Member-Name Bound-To
+	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:     Ordinal  Hint  Member-Name  Bound-To
 
 
 	DLL Name: %.*s
@@ -174,10 +199,6 @@ Exec Auxiliary Header
 
 Export Address Table -- Ordinal Base %ld
 
-Function descriptor located at the start address: %04lx
-
-No reldata section! Function descriptor not decoded.
-
 Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Program Header:
@@ -204,12 +225,10 @@ There is a first thunk, but the section
 
 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 contents cannot be read
 
 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
@@ -226,7 +245,7 @@ Virtual Address: %08lx Chunk size %ld (0
 
 WARNING: Extra data in .rsrc section - it will be ignored by Windows:
 
-[Ordinal/Name Pointer] Table
+[Ordinal/Name Pointer] Table -- Ordinal Base %ld
 
 ppcboot header:
         pc: 0x%08x
@@ -245,16 +264,14 @@ ppcboot header:
     psect idx 3: %u, offset 3: 0x%08x %08x
     psect: %u, offset: 0x%08x %08x
     routine name: %.*s
-   %02u    (type: %3u, size: 4+%3u):    *unhandled* cmd %u
+   %02u    (type: %3u, size: %3u):    *unhandled* cmd %u
+   Erroneous length
+   Error: %s min length is %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)
@@ -320,25 +337,13 @@ ppcboot header:
    vector      : 0x%08x
    version mask: 0x%08x
    version:    %x
-  %s (len=%u+%u):
+  %s (len=%u):
   %u: size: %u, flags: 0x%02x, name: %.*s
   EEOM (len=%u):
   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
+  EGSD entry %2u (type: %u, len: %u):   EMH %d (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
@@ -354,22 +359,22 @@ ppcboot header:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   size : %u
-  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):
+  the input  file's flags: %s  the output file's flags: %s %08x (<unknown>) 0x%08x 64B <EABI version unrecognised> <Unrecognised flag bits set> BPAGE: %u COM COMM Change Protection (%u entries):
  Code Address Reference Fixups:
  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:
+ GBL LIB Linkage Pairs Reference Fixups:
  MACH-O header:
- NOMOD NORM OVR PIC QVAL RD REL Register restore millicode Register save millicode Resources start at offset: %#03x
+ NOMOD NORM OVR PIC QVAL RD REL 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 [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
+ UNI VEC VECEP WEAK WRT [64-bit doubles] [BE8] [FDPIC ABI supplement] [FPA float format] [LE8] [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:  and check the symbol visibility debug module table : vbn: %u, size: %u
  debug symbol table : vbn: %u, size: %u (0x%x)
+ failed to convert GOTPCREL relocation against '%s'; relink with --no-relax
  fixup info rva:  flags: 0x%04x global symbol table: vbn: %u, records: %u
  ident: 0x%08x, name: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -395,35 +400,20 @@ 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
-%03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
-%F%P: already_linked_table: %E
-%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'
+#<invalid error code>%%X%%P: relocation %s against `%s' which may bind externally 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: %F%P: failed to create GNU property section
 %H __tls_get_addr lost arg, TLS optimization disabled
 %H arg lost __tls_get_addr, TLS optimization disabled
+%H: %s against %pT is not supported
 %H: %s against `%pT': error %d
 %H: %s for indirect function `%pT' unsupported
+%H: %s out of range
 %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 here
 %H: %s reloc unsupported in shared libraries and PIEs
 %H: %s used with TLS symbol `%pT'
 %H: %s used with non-TLS symbol `%pT'
@@ -445,45 +435,95 @@ 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 %s returns an unrecognized value %x
 %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: relocation type %u is not supported
 %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
+%H: warning: relocation to "%s" references a different segment
 %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(%pA): error: need linked-to section for --gc-sections
+%P: %pB(%s): error opening thin archive member: %E
 %P: %pB: %s is not supported for `%pT'
+%P: %pB: copy relocation against non-copyable protected symbol `%s'
+%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB
+%P: %pB: failed to add %s to first hash
+%P: %pB: failed to allocate 32-bit DT_RELR bitmap
+%P: %pB: failed to allocate 64-bit DT_RELR bitmap
+%P: %pB: failed to allocate compact relative reloc section
+%P: %pB: failed to allocate memory for section `%pA'
+%P: %pB: failed to allocate relative reloc record
+%P: %pB: failed to finish relative relocations
+%P: %pB: note: the message above does not take linker garbage collection into account
+%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)
+%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: --relax and -r may not be used together
+%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: auto overlay error: %E
+%P: can not build overlay stubs: %E
 %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: corrupt input: %pB
+%P: discarded output section: `%pA'
+%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
+%P: failed to create %s
+%P: failed to create %sn%P: failed to create GOT PLT .eh_frame section
+%P: failed to create GOT PLT section
+%P: failed to create GOT sections
+%P: failed to create IBT-enabled PLT section
+%P: failed to create PLT .eh_frame section
+%P: failed to create PLT .sframe section
+%P: failed to create PLT GOT .sframe section
+%P: failed to create VxWorks dynamic sections
+%P: failed to create ifunc sections
+%P: failed to create second PLT .sframe section
+%P: failed to create the second PLT .eh_frame section
+%P: failed to size relative relocations
+%P: first_hash failed to create: %E
 %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 PDE
+%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: %s against `%s': error: relocation applies outside section
+%X%H: %s against `%s': error: relocation target address is odd
+%X%H: %s against `%s': internal error: unexpected relocation result %d
 %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: relocation to "%s" references a different segment
 %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(%pA): relocation is not supported
+%X%P: %pB(%pA): relocation out of range
+%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
@@ -493,23 +533,44 @@ ppcboot header:
 %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%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
 %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)
+%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+%Xerror: found a total of %d inputs incompatible with BTI requirements.
+%Xerror: found a total of %d inputs incompatible with GCS requirements.
+%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): 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
-%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 (%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 symbol number %lu uses unsupported binding of %u%pB symbol number %lu uses unsupported type of %u%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 %zu is empty%pB(%pA): error: secondary reloc %zu is of an unknown type%pB(%pA): error: secondary reloc %zu references a deleted symbol%pB(%pA): error: secondary reloc %zu references a missing symbol%pB(%pA): error: secondary reloc section has non-standard sized entries%pB(%pA): error: secondary reloc section has zero sized entries%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): relocation %zu has invalid symbol index %lu%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(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only
+%pB(%s): Unknown destination type (ARM/Thumb) in %pB%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 (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB
+%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB
+%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: Adjusting branch at 0x%V towards "%s" in section %s
+%pB: BE8 images only valid in big-endian mode%pB: C_STAT isn't supported by XCOFF64%pB: Cannot create stub entry '%s'%pB: Cannot handle relocation value size of %d%pB: DT_STRTAB table is corrupt%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: Number of symbols in input file has increased from %lu to %u
+%pB: PC-relative offset overflow in GOT PLT entry for `%s'
+%pB: PC-relative offset overflow in PLT entry for `%s'
+%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%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: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed
+%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to generate dynamic relocs because a suitable section does not exist
+%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: adjusting invalid FileAlignment%pB: adjusting invalid SectionAlignment%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 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: branch displacement overflow in PLT entry for `%s'
+%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: can't link different ABI object.%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 export internal symbol `%s`.%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot handle more than %d dynamic symbols%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: conditional branch to undefined symbol `%s' not allowed%pB: corrupted group section: `%pA'%pB: could not find output section %pA for input section %pA%pB: could not read contents of group [%u]%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 against a local symbol 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: attribute section length too small: %ld%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 attributes version '%c'(%d) - expecting 'A'
+%pB: error: unknown mandatory EABI object attribute %d%pB: error: unsupported PLT type: %u%pB: expected symbol index in range 0..%lu but found local symbol with index %lu%pB: failed to extract object only section: %s%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 get symbol table in object only section: %s%pB: failed to open object only section: %s%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: 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: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid NumberOfRvaAndSizes%pB: invalid entry (%#x) in group [%u]%pB: invalid file to extract object only section: %s%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
@@ -523,15 +584,24 @@ 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: 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: 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: mapped section %pA has non-NULL buffer%pB: misplaced XTY_LD `%s'%pB: missing import name for IMPORT_NAME_EXPORTAS for %s%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: non-canonical reference to canonical protected function `%s' in %pB%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: overflow reloc count too small%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 %#x unsupported%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 absolute symbol `%s' can not be used when making a shared object%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object%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 %s overflow 0x%lx%pB: relocation %s right shift %d error 0x%lx%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_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE%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 %s is compressed with zstd, but BFD is not built with zstd support%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %u%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 based reloc type (%u) is not supported with -z pack-relative-relocs%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: string table [%u] is corrupt%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: symbol name exceeds given max length of %d%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 compress section %s%pB: unable to create fake empty section%pB: unable to decompress section %s%pB: unable to fill in DataDirectory[%d]: %s is missing%pB: unable to fill in DataDirectory[%d]: %s not defined correctly%pB: unable to fill in DataDirectory[%d]: %s not properly aligned%pB: unable to fill in DataDirectory[%d]: size can't be read from %s%pB: unable to fill in DataDirectory[%d]: size too large for the containing section%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 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: unexpected type (%#x) section `%s' in group [%u]%pB: unhandled dynamic relocation against %s%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: 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 bfd relocation type %#x%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation %s against symbol `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type %s%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported swap_aux_in for storage class %#x%pB: unsupported swap_aux_out for storage class %#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 is required by -z force-bti, but this input object file lacks the necessary property note.
+%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
+%pB: warning: RVE PLT generation not supported%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up%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 %lu 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 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: 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: truncated `%s' option%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment%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: warning: win32pstatus %s of size %lu bytes is too small%pB: will not resolve runtime TLS relocation%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u%pB: wrong auxtype %#x for storage class %#x%pB: x86 ISA needed: %pB: x86 ISA used: %pB:%.8s: RVA truncated%pB:%.8s: section below image base%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 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%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s%pB[%pA]: no output section for space %pA%pcrel_lo missing matching %pcrel_hi%pcrel_lo overflow with an addend%pcrel_lo section symbol with an addend%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20%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)
+%s has both normal and TLS relocs%s in overlay section%s is defined but could not be loaded: %s%s is defined but plugin support is disabled%s is loaded but symbol "%s" is not found: %s%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s, iter %u
+  branch         %lu
+  long branch    %lu
+  plt call       %lu
+  global entry   %lu%s: BFD %s internal error, aborting at %s:%d
+%s: BFD %s internal error, aborting at %s:%d in %s
+%s: Bad ELF id: `%d'%s: ISA string cannot contain uppercase letters%s: ISA string must begin with rv32, rv64 or Profiles%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: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: failed to open to extract object only section: %s%s: first ISA extension must be `e', `i' or `g'%s: invalid prefixed ISA extension `%s' ends with <number>p%s: no such symbol%s: not implemented%s: not supported%s: object size does not match that of target %s%s: prefixed ISA extension must separate with _%s: undefined version: %s%s: unknown prefixed ISA extension `%s'%s: unknown standard ISA extension or prefix class `%c'%scannot + base extension `%s' in %s `%s'%sdeprecated - extension `%s' in %s `%s'%sinvalid ISA extension ends with <number>p in %s `%s'%sunknown ISA extension `%s' in %s `%s'%tlsdesc_lo with addend(%s): Unknown destination type (ARM/Thumb) in %pB(at bit offset %u)
 (descriptor)
-(format %c%c%c%c signature %s age %ld)
+(format %c%c%c%c signature %s age %ld pdb %s)
 (no value)
 (not active)
 (not allocated)
@@ -544,28 +614,24 @@ ppcboot header:
 , 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>
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<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:
+<unknown mask flags><unknown: %x><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBase 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
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsCopyright 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 0x%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: section %s has no contentsDWARF error: section %s is too bigDWARF 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 DirectoryEIHD: (size: %u, nbr blocks: %u)
+Delay Import DirectoryDescription DirectoryEIHD: (size: %u, nbr blocks: %u)
 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
+Error: %pB and %pB has different DSP versionError: %pB and %pB has different FPU ABIError: %pB and %pB has different VDSP versionError: %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 supported only by GNU and FreeBSD targetsGNU_RETAIN section is supported only by GNU and FreeBSD targetsGOT 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,20 +639,20 @@ 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)
 Image symbol & debug table: (major: %u, minor: %u)
-Import Address Table DirectoryImport Directory [parts of .idata]LOGICAL_NAMES    Language Processor Name
+Import Address Table DirectoryImport Directory [parts of .idata]Internal error: unreachable.LAM_U48 propertyLAM_U57 propertyLOGICAL_NAMES    Language Processor Name
 Length              = 0x%.8lx (%ld)
 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:
+NETWORKS         NORMALNOTE: This behaviour is deprecated and will be removed in a future version of the linkerName 				NoneNumber in:
 OPR_ADD (add)
 OPR_AND (logical and)
 OPR_ASH (arithmetic shift)
@@ -611,21 +677,19 @@ ppcboot header:
 Partition[%d] length = 0x%.8lx (%ld)
 Partition[%d] sector = 0x%.8lx (%ld)
 Please report this bug.
-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
+Private flags = 0x%lx : 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 togetherRL78 reloc divide by zeroRL78 reloc stack overflow/underflowR_AMD64_IMAGEBASE with __ImageBase undefinedR_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            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 %pASFrame sections with unexpected data encoding prevent .sframe generationSHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
-STA_LW (stack longword) 0x%08x
-STA_MOD (stack module)
+STA_LW (stack longword)STA_MOD (stack module)
 STA_PQ (stack psect base + offset)
-STA_QW (stack quadword) 0x%08x %08x
-STC_BOH_GBL (store cond BOH at global addr)
+STA_QW (stack quadword)STC_BOH_GBL (store cond BOH at global addr)
 STC_BOH_PS (store cond BOH at psect + offset)
 STC_BSR_GBL (store cond BSR at global addr)
 STC_BSR_PS (store cond BSR at psect + offset)
@@ -664,27 +728,27 @@ ppcboot header:
 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
+Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pBTLS relocation invalid without dynamic sectionsTOC overflow during stub generation; try -mminimal-toc when compilingTable Addresses
+The addend isn't allowed for R_RISCV_GOT_HI20The 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
 Too many unwind codes (%ld)
 Type                Size     Rva      Offset
-USRSTACKUnknownUnknown: %xUpdated property %W (%v) to merge %pB (0x%v) and %pB (not found)
+USRSTACKUnable to find the stub entry targeting %sUnable to link input file: %sUnable to load DLL.UnknownUnknown: %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]_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:
+Warning: should use "_" to contact Profiles with other extensionsWriting 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]\%pB: warning: %s BLX instruction targets %s function '%s'__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 function`xtheadvector' is conflict with the `v/zve32x' extension`zclsd' is conflict with the `c+f'/ `zcf' extension`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extensiona 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: %#lxbfd_mach_o_read_section_64: overlarge alignment value: %#lxbfd_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
+branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBc' or `zcacan'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 find default versions of the ISA extension `%s'cannot read DMT
 cannot read DMT header
 cannot read DMT psect
 cannot read DST
@@ -700,70 +764,67 @@ ppcboot header:
 cannot read GST
 cannot read GST record
 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
+cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)class: %u, dtype: %u, length: %u, pointer: 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 reloc recordcorrupt vms valuecorrupted GST
+could 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]d' and `c', or `zcdd' and `zfad' or `zdinxdangerous 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
+division by zerodst_define_location %u too largedynamic index information not availabledynamic relocation in read-only sectiondynreloc 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 adding attributeerror in %pB(%pA); no .eh_frame_hdr table will be createderror in %pB(%pA); no .sframe will be createderror in %pB(%pA); unexpected SFrame section typeerror 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 has a LOAD segment with RWX permissionserror: %pB has a TLS segment with execute permissionerror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %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 alignederror: %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 RISC-V used size: 0x%x>error: %pB: <corrupt property (0x%x) 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: SB relative addressing conflicts with use of R9error: %pB: XLEN of input (%u) doesn't match output (%u)error: %pB: cannot mix rf16 with full register set %pBerror: %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: mis-matched ISA string to merge '%s' and '%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 create group section symbolerror: %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: %pB: unsupported XLEN (%u), you might be using wrong emulationerror: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack sectionerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: conflicting CPU architectures %s vs %s in %pBerror: creating an executable stack because of -z execstack command line optionerror: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spaceerror: 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 %pBexecutablef' and `c', or `zcff' or `zfinxfailed 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 truncatedfinal size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spacefurther 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 definedhhidden 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
+input SFrame sections with different abi prevent .sframe generationinput SFrame sections with different format versions prevent .sframe generationinternal 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 internal: internal: unreachable INSN_CLASS_*invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid dynamic indexinvalid 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
+linkable imagelinker stubs in %u grouplinker stubs in %u groupsliteralliteral relocation occurs for an external symbollocal symbol index too biglong branch stub `%s' offset overflowm' or `zmmulmach-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]: 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-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
+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 dynamic index information availableno 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 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 overflowplugin framework: out of file descriptors. Try using fewer objects/archives
+pointer
 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
+protected symbolprotected symbol q' and `zfaq' or `zqinxrecbeg: 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
-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
+recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'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 against `%s' has faulty GOT type 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: %sreserved cmd %drtnbeg
 rtnend: size 0x%08x
-section has no contentsseptyp, name: %.*s
+rv%d does not support the `q' extensionrv%d does not support the `smmpm' extensionrv%d does not support the `smnpm' extensionrv%d does not support the `ssnpm' extensionrv%d does not support the `sspm' extensionrv%d does not support the `supm' extensionrv%d does not support the `zcf' extensionrv%de does not support the `h' extensionsection 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
-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 too large; lower small-data size limit (see option -G)smctr' or `ssctrsom_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 supported only by GNU and FreeBSD targetssymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targetssystem 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 valuesv' or `zve64d' or `zve64f' or `zve32fv' or `zve64x' or `zve32xv850 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 LOAD segment with RWX permissionswarning: %pB has a TLS segment with execute permissionwarning: %pB has a corrupt string table indexwarning: %pB has a program header with invalid alignmentwarning: %pB has a section extending past end of filewarning: %pB has a segment extending past end of filewarning: %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(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: %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 memory sealing size: 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: unknown RISCV ABI 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
-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
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: %s: missing .note.GNU-stack section implies executable stackwarning: %s: requires executable stack (because the .note.GNU-stack section is executable)warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: --plt-localentry is incompatible with power10 pc-relative codewarning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised.warning: NOTE: size discrepancies can cause real problems.  Investigation is advised.warning: 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 normal symbol `%s' in %pB is smaller than %u used by the common definition in %pBwarning: 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: enabling an executable stack because of -z execstack command line optionwarning: file %pB's arch flag %s conflict with target %s,set target arch flag to %swarning: file %pB's arch flag %s conflicts with target ck%s, using %swarning: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+warning: found a total of %d inputs incompatible with BTI requirements.
+warning: found a total of %d inputs incompatible with GCS requirements.
+warning: 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: privileged spec version 1.9.1 can not be linked with other spec versionswarning: 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: unrecognised arch name '%#x'warning: 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
+x ISA extension `%s' must be set with the versionsyesyou are not allowed to define %s in a scriptzbb' or `zbkbzbc' or `zbkczcb' and `zbazcb' and `zbbzcb' and `zmmul', or `zcb' and `mzcmp' is incompatible with `d' and `c', or `zcd' extensionzfh' and `zfazfh' and `zfa', or `zvfh' and `zfazfh' or `zhinxzfh' or `zvfhzfhmin' and `d', or `zhinxmin' and `zdinxzfhmin' and `q', or `zhinxmin' and `zqinxzfhmin' or `zhinxminzicfiss' and `zcmopzihintntl' and `c', or `zihintntl' and `zcazknd' or `zknezvbbzvbczvkbzvkgzvknedzvknha' or `zvknhbzvksedzvkshzvl*b extensions need to enable either `v' or `zve' extensionProject-Id-Version: bfd-2.44.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2025-07-13 08:44+0100
+PO-Revision-Date: 2025-07-18 18:25+0200
 Last-Translator: FrÃ©dÃ©ric Marchal <fmarchal@perso.be>
 Language-Team: French <traduc@traduc.org>
 Language: fr
@@ -772,14 +833,13 @@ 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 >= 2);
-	    TLS: %pA	<corrompu: 0x%04lx>	Table d'adresse d'exportation 			Table d'adresses d'exportation 		%08lx
+	    TLS: %pA	<corrompu: 0x%08lx>	Table d'adresse d'exportation 			Table d'adresses d'exportation 		%08lx
 	L'adresse virtuelle relative de la table des adresses exportÃ©es (0x%lx) ou le nombre d'entrÃ©es (0x%lx) est invalide
 	Adresse virtuelle relative de la table des pointeurs de noms (0x%lx) ou nombre d'entrÃ©es (0x%lx) invalide
 	Adresse virtuelle relative de la table ordinale (0x%lx) ou nombre d'entrÃ©es (0x%lx) invalide
-	Table des noms de pointeurs 			Table des ordinals 				[%4ld] <offset corrompu: %lx>
+	Table des noms de pointeurs 			Table des ordinals 				[%4ld] +base[%4ld]  %04lx <offset corrompu: %lx>
 	Table [Nom pointeur/Nombre ordinal]	%08lx
-	code-base %08lx tab. des entrÃ©es (chargeable/actuel) %08lx/%08lx
-	non-TLS: %pA	rÃ©adressage %4d dÃ©calage %4x [%4lx] %s	vma:  Hint/Ord Membre      Lien
+	non-TLS: %pA	rÃ©adressage %4d dÃ©calage %4x [%4lx] %s	vma:     Ordinal  Hint  Nom-Membre   Lien
 
 
 	Nom DLL: %.*s
@@ -809,10 +869,6 @@ En-tÃªte auxiliaire de l'exec
 
 Table d'adresses d'exportation -- base de nombre ordinal %ld
 
-Descripteur de fonction localisÃ© Ã  l'adresse de dÃ©part: %04lx
-
-Pas de section reldata! Descripteur de fonction pas dÃ©codÃ©.
-
 DÃ©but de partition[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 En-tÃªte de programme:
@@ -838,12 +894,10 @@ Il y a un premier Â«Â thunkÂ Â», mais la
 
 Il y a une table d'exportation dans %s Ã  0x%lx
 
-Il y a une table d'exportation dans %s, mais elle ne rentre pas dans la section
+Il y a une table d'exportation dans %s, mais le contenu ne sait pas Ãªtre lu
 
 Il y a une table d'exportation dans %s, mais elle est trop petite (%d)
 
-Il y a une table d'exportation dans %s, mais cette section n'a pas de contenu
-
 Il y a une table d'exportation, mais la section la contenant n'a pu Ãªtre repÃ©rÃ©e
 
 Il y a une table d'importation dans %s Ã  0x%lx
@@ -860,7 +914,7 @@ Adresse virtuelle: %08lx taille des morc
 
 ATTENTION: DonnÃ©es en trop dans la section .rsrc â€“ elles seront ignorÃ©es par Windows:
 
-Table [Ordinal/Nom de pointeur]
+Table [Ordinal/Nom de pointeur] -- Base Ordinal %ld
 
 En-tÃªtes ppcboot:
         pc: 0x%08x
@@ -879,16 +933,14 @@ En-tÃªtes ppcboot:
    index psect 3: %u, offset 3: 0x%08x %08x
    psect: %u, offset: 0x%08x %08x
     nom routine : %.*s
-   %02u    (type: %3u, taille: 4+%3u):    cmd %u *non gÃ©rÃ©e*
+   %02u    (type: %3u, taille: %3u):    cmd %u *non gÃ©rÃ©e*
+   Longueur erronÃ©e
+   ErreurÂ : la longueur minimale de %s est %u
    Erreur: La date de compilation est tronquÃ©e
-   Erreur: La longueur est plus petite que la longueur d'un enregistrement EEOM
-   Erreur: La longueur est plus petite que la longueur d'un enregistrement EMH
    Erreur: Le nom du module est manquant
    Erreur: Le nom du module est trop long
    Erreur: La version du module est manquante
    Erreur: La version du module est trop longue
-   Erreur: La longueur de l'enregistrement est infÃ©rieure Ã  la taille de l'enregistrement EMH_MHD
-   Erreur: longueur plus grande que l'espace restant dans l'enregistrement
    alignement : 2**%u
    alloc (long)  : %u (0x%08x)
   alloc (long): %u (0x%08x)
@@ -954,25 +1006,13 @@ En-tÃªtes ppcboot:
    vecteur     : 0x%08x
    masque de version: 0x%08x
   version:     %x
-  %s (long=%u+%u):
+  %s (long=%u):
   %u: taille: %u, fanions: 0x%02x, nom: %.*s
   EEOM (long=%u):
   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
+  entrÃ©e EGSD %2u (type: %u, long: %u):   EMH %d (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
@@ -988,22 +1028,22 @@ En-tÃªtes ppcboot:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   taille : %u
-  les fanions du fichier d'entrÃ©e: %s  les fanions du fichier de sortie: %s %08x(<inconnu>) 0x%08x 64B <Version EABI non reconnue> BPAGE: %u COM COMM Changement de protection (%u entrÃ©es):
+  les fanions du fichier d'entrÃ©e: %s  les fanions du fichier de sortie: %s %08x(<inconnu>) 0x%08x 64B <Version EABI non reconnue> <Bits de fanions non reconnus> BPAGE: %u COM COMM Changement de protection (%u entrÃ©es):
  Correctifs des rÃ©fÃ©rences des adresses de code:
  DEF EXE support du FPU requis:  PremiÃ¨re adresse : 0x%08x 0x%08x
  QuatriÃ¨me adresse: 0x%08x 0x%08x
- GBL SÃ©quence du code de liants LIB Correctifs des rÃ©fÃ©rences des paires de liaison:
+ GBL LIB Correctifs des rÃ©fÃ©rences des paires de liaison:
 En-tÃªte MACH-O:
- NOMOD NORM OVR PIC QVAL RD REL Registre a restaurÃ© le millicode Registre a prÃ©servÃ© le millicode Les ressources dÃ©marrent au dÃ©calage: %#03x
+ NOMOD NORM OVR PIC QVAL RD REL Les ressources dÃ©marrent au dÃ©calage: %#03x
  SHR DeuxiÃ¨me adresse : 0x%08x 0x%08x
  Images partageables:
  Image partagÃ©e   : 0x%08x 0x%08x
  La table des chaÃ®nes dÃ©marre au dÃ©calage: %#03x
 Table: Car: %d, Temps: %08lx, Ver: %d/%d, Nbr Noms: %d, IDs: %d
  TroisiÃ¨me adresse: 0x%08x 0x%08x
- UNI VEC VECEP FAIBLE WRT [doubles de 64 bits] [BE8] [supplÃ©ment ABI FDPIC] [format flottant FPA] [LE8] [format flottant Maverick] [format flottant VFP] [Version1 EABI] [Version2 EABI] [Version3 EABI] [Version4 EABI] [Version5 EABI] [dÃ©calage RAM XGATE] [abi inconnu] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [d-float] [symboles dynamiques utilisent un index de segment] [fix dep] [valeurs en virgule flottante passÃ©es dans des registres de valeurs en virgule flottante] [g-float] [hard-float ABI] [inter-rÃ©seautage autorisÃ©] [mapping de symboles prÃ©cÃ¨des les autres] [memory=bank-model] [memory=flat] [nouvel ABI] [aucun jeu abi] [nonpic] [aucun mode 32 bits] [ancien ABI] [pic] [position indÃ©pendante] [exÃ©cutables relocalisÃ©s] [soft-float ABI] [virgule flottante logiciel] [table des symboles triÃ©s] [symboles sont prÃ©fixÃ©s par Â«Â  _ Â Â»] [ISA inconnu] [table des symboles non triÃ©s] [v10 et v32] [v32] alignement d'entitÃ©s de 8 octets: GST corrompu
- table des modules de debug: vbn: %u, taille: %u
+ UNI VEC VECEP FAIBLE WRT [doubles de 64 bits] [BE8] [supplÃ©ment ABI FDPIC] [format flottant FPA] [LE8] [format flottant VFP] [Version1 EABI] [Version2 EABI] [Version3 EABI] [Version4 EABI] [Version5 EABI] [dÃ©calage RAM XGATE] [abi inconnu] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [d-float] [symboles dynamiques utilisent un index de segment] [fix dep] [valeurs en virgule flottante passÃ©es dans des registres de valeurs en virgule flottante] [g-float] [hard-float ABI] [inter-rÃ©seautage autorisÃ©] [mapping de symboles prÃ©cÃ¨des les autres] [memory=bank-model] [memory=flat] [nouvel ABI] [aucun jeu abi] [nonpic] [aucun mode 32 bits] [ancien ABI] [pic] [position indÃ©pendante] [exÃ©cutables relocalisÃ©s] [soft-float ABI] [virgule flottante logiciel] [table des symboles triÃ©s] [symboles sont prÃ©fixÃ©s par Â«Â  _ Â Â»] [ISA inconnu] [table des symboles non triÃ©s] [v10 et v32] [v32] alignement d'entitÃ©s de 8 octets: et vÃ©rifiez la visibilitÃ© du symbole table des modules de debug: vbn: %u, taille: %u
  table des symboles de debug : vbn: %u, taille: %u (0x%x)
+ impossible de convertir le rÃ©adressage GOTPCREL par rapport Ã  Â«Â %sÂ Â»: Ã©ditez les liens Ã  nouveau avec --no-relax
  correctif info rva:  fanions: 0x%04x table des symboles globale: vbn: %u, enregistrements: %u
  ident: 0x%08x, nom: %.*s
  ident: 0x%08x, ver sys: 0x%08x, apparier ctrl: %u, taille vectsym: %u
@@ -1029,35 +1069,20 @@ 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
-%03x %*.s EntrÃ©e: %C: attention: rÃ©adressage vers Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent
-%F%P: already_linked_table: %E
-%F%P: erreur d'auto recouvrement: %E
-%F%P: ne peut construire les Ã©bauches de recouvrement: %E
-%F%P: entrÃ©e corrompue: %pB
-%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
-%F%P: impossible de convertir le rÃ©adressage GOTPCREL: Ã©ditez les liens Ã  nouveau avec --no-relax
-%F%P: Ã©chec lors de la crÃ©ation de la section PLT BND
-%F%P: Ã©chec lors de la crÃ©ation de la section des propriÃ©tÃ©s GNU
-%F%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT GOT
-%F%P: Ã©chec lors de la crÃ©ation de la section PLT GOT
-%F%P: Ã©chec lors de la crÃ©ation des sections GOT
-%F%P: Ã©chec lors de la crÃ©ation de la section PLT activÃ©e pour IBT
-%F%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT
-%F%P: Ã©chec lors de la crÃ©ation des sections dynamiques VxWorks
-%F%P: Ã©chec lors de la crÃ©ation des sections ifunc
-%F%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT
-%F%pA: Ã©chec lors de l'alignement de la section
-%F%pB: dÃ©bordement du dÃ©calage relatif au PC dans l'entrÃ©e PLT GOT pour Â«Â %sÂ Â»
-%F%pB: dÃ©bordement du dÃ©calage relatif au PC dans l'entrÃ©e PLT pour Â«Â %sÂ Â»
-%F%pB: dÃ©bordement du dÃ©placement de branchement dans l'entrÃ©e PLT pour Â«Â %sÂ Â»
+#<code d'erreur invalide>%%X%%P: rÃ©adressage de %s en vertu de Â«Â %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
+%%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: %F%P: Ã©chec lors de la crÃ©ation de la section des propriÃ©tÃ©s GNU
 %H __tls_get_addr a perdu l'argument, optimisation TLS dÃ©sactivÃ©e
 %H l'argument a perdu __tls_get_addr, optimisation TLS dÃ©sactivÃ©e
+%H: %s sur %pT n'est pas supportÃ©
 %H: %s vers Â«Â %pTÂ Â»: erreur %d
 %H: %s non supportÃ© pour la fonction indirecte Â«Â %pTÂ Â»
+%H: %s hors limite
 %H: %s fait rÃ©fÃ©rence Ã  un symbole dynamique avec un opÃ©rande non nul
 %H: %s fait rÃ©fÃ©rence Ã  une entrÃ©e TOC supprimÃ©e par l'optimisation
 %H: rÃ©adressage %s vers Â«Â %sÂ Â»: erreur %d
+%H: le rÃ©adressage %s n'est pas supportÃ© ici
 %H: le rÃ©adressage %s n'est pas supportÃ© dans les bibliothÃ¨ques partagÃ©es et les PIE
 %H: %s utilisÃ© avec le symbole TLS Â«Â %pTÂ Â»
 %H: %s utilisÃ© avec le symbole non-TLS Â«Â %pTÂ Â»
@@ -1079,45 +1104,95 @@ 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 %s retourne une valeur %x non reconnue
 %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: le type de rÃ©adressage %u n'est pas supportÃ©
 %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
+%H: attention: rÃ©adressage vers Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent
 %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(%pA): erreur: une section linked-to est requise pour --gc-sections
+%P: %pB(%s): erreur lors de l'ouverture de membre d'archive lÃ©gerÂ : %E
 %P: %pB: %s n'est pas supportÃ© pour le symbole Â«Â %pTÂ Â»
+%P: %pB: rÃ©adressage par copie sur le symbole protÃ©gÃ© non copiable Â«Â %sÂ Â»
+%P: %pB: rÃ©adressage par copie sur le symbole protÃ©gÃ© non copiable Â«Â %sÂ Â» dans %pB
+%P: %pB: Ã©chec de l'ajout de %s au premier hachage
+%P: %pB: Ã©chec lors de l'allocation d'un champ de bits DT_RELR 32 bits
+%P: %pB: Ã©chec lors de l'allocation d'un champ de bits DT_RELR 64 bits
+%P: %pB: Ã©chec lors de l'allocation d'une section de rÃ©adressage relatif compacte
+%P: %pB: Ã©chec lors de l'allocation de la mÃ©moire pour la section Â«Â %pAÂ Â»
+%P: %pB: Ã©chec lors de l'allocation d'un enregistrement de rÃ©adressage relatif
+%P: %pB: Ã©chec lors finalisation des rÃ©adressages relatifs
+%P: %pB: note: le message ci-dessus ne prend pas en compte la rÃ©cupÃ©ration du rebut par l'Ã©diteur de liens
+%P: %pB: le rÃ©adressage de %s par rapport au symbole absolu Â«Â %sÂ Â» dans la section Â«Â %pAÂ Â» est interdit
+%P: %pB: la taille de la section de rÃ©adressage relatif compacte est changÃ©eÂ : nouvelle (%lu) != ancienne (%lu)
+%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: --relax et -r ne peuvent pas Ãªtre utilisÃ©s en mÃªme temps
+%P: Impossible d'assigner Â«Â %pAÂ Â» Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.
+%P: Impossible d'assigner Â«Â %pAÂ Â» Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: erreur d'auto recouvrement: %E
+%P: ne peut construire les Ã©bauches de recouvrement: %E
 %P: l'entrÃ©e toc de opd non trouvÃ©e pour Â«Â %pTÂ Â»
 %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
 %P: un rÃ©adressage copiÃ© envers un Â«Â %pTÂ Â» protÃ©gÃ© est dangereux
+%P: entrÃ©e corrompue: %pB
+%P: section de sortie rejetÃ©e: Â«Â %pAÂ Â»
+%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
+%P: Ã©chec lors de la crÃ©ation de %s
+%P: Ã©chec lors de la crÃ©ation de %sn%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT GOT
+%P: Ã©chec lors de la crÃ©ation de la section PLT GOT
+%P: Ã©chec lors de la crÃ©ation des sections GOT
+%P: Ã©chec lors de la crÃ©ation de la section PLT activÃ©e pour IBT
+%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT
+%P: Ã©chec lors de la crÃ©ation de la section .sframe PLT
+%P: Ã©chec lors de la crÃ©ation de la section .sframe PLT GOT
+%P: Ã©chec lors de la crÃ©ation des sections dynamiques VxWorks
+%P: Ã©chec lors de la crÃ©ation des sections ifunc
+%P: Ã©chec lors de la crÃ©ation de la seconde section .sframe PLT
+%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT
+%P: Ã©chec lors du dimensionnement des rÃ©adressages relatifs
+%P: Ã©chec lors de la crÃ©ation de first_hash: %E
 %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 PDE
+%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: %s vers Â«Â %sÂ Â»: erreur: le rÃ©adressage s'applique en dehors de la section
+%X%H: %s vers Â«Â %sÂ Â»: erreur: l'adresse cible du rÃ©adressage est impaire
+%X%H: %s envers Â«Â %sÂ Â»Â : erreur interne: rÃ©sultat de rÃ©adressage %d inattendu
 %X%H: appel @local Ã  ifunc %s
 %X%H: impossible de convertir les branchements vers JALX entre modes ISA: rÃ©adressage hors portÃ©e
 %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
+%X%H: le rÃ©adressage vers Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent
 %X%H: JALX vers le mÃªme mode ISA n'est pas supportÃ©
 %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(%pA): le rÃ©adressage n'est pas supportÃ©
+%X%P: %pB(%pA): rÃ©adressage en dehors des limites
+%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Ã©
@@ -1127,23 +1202,44 @@ En-tÃªtes ppcboot:
 %X%P: recouvrement des sections %pA et %pA ne commencent pas Ã  la mÃªme adresse
 %X%P: erreur d'analyse de pile/lrlive: %E
 %X%P: les rÃ©adressages de textes et les fonctions indirectes GNU rÃ©sulteront en un crash Ã  l'exÃ©cution
+%X%pB: erreur: BTI est requis par -z force-bti, mais ce fichier objet en entrÃ©e n'a pas la note de propriÃ©tÃ© requise.
+%X%pB: erreur: GCS est requis par -z gcs, mais ce fichier objet en entrÃ©e n'a pas la note de propriÃ©tÃ© nÃ©cessaire.
+%X%pB: erreur: GCS est requis par -z gcs, mais cette bibliothÃ¨que partagÃ©e n'a pas la note de propriÃ©tÃ© nÃ©cessaire. Le chargeur dynamique pourrait ne pas activer GCS ou refuser de charger le programme Ã  moins que toutes le dÃ©pendances Ã  des bibliothÃ¨ques partagÃ©es aient la marque GCS.
 %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)
+%xerreur: un total de %d objets dynamiquement liÃ©s incompatibles avec les exigences CGS ont Ã©tÃ© trouvÃ©s.
+%Xerreur: un total de %d entrÃ©es incompatibles avec les exigences de BTI ont Ã©tÃ© trouvÃ©es.
+%xerreur: un total de %d entrÃ©es incompatibles avec les exigences de GCS ont Ã©tÃ© trouvÃ©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): 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
-%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 (%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 le numÃ©ro de symbole %lu utilise la liaison non supportÃ©e de %u%pB le numÃ©ro de symbole %lu utilise le type non supportÃ© de %u%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 %zu de la table de rÃ©adressage est vide%pB(%pA): erreur: le rÃ©adressage secondaire %zu est d'un type inconnu%pB(%pA): erreur: le rÃ©adressage secondaire %zu fait rÃ©fÃ©rence Ã  un symbole supprimÃ©%pB(%pA): erreur: le rÃ©adressage secondaire %zu fait rÃ©fÃ©rence Ã  un symbole manquant%pB(%pA): erreur: la section de rÃ©adressage secondaire a des entrÃ©es d'une taille non standard%pB(%pA): erreur: la section de rÃ©adressage secondaire a des entrÃ©es de taille nulle%pB(%pA): erreur: la section de rÃ©adressage secondaire est videÂ !%pB(%pA): erreur: la 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): rÃ©adressage %zu a un index de symbole %lu 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(%pA+0x%v): le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans ADD ou MOV
+%pB(%pA+0x%v): le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans ADD ou MOVRS
+%pB(%pA+0x%v): le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans ADD, SUB ou MOV
+%pB(%pA+0x%v): rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans LEA
+%pB(%pA+0x%v): le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans un appel indirect CALL avec le registre %s
+%pB(%s): Type de destination (ARM/Thumb) inconnu dans %pB%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: %s (offset: 0x%v, info: 0x%v) sur Â«Â %sÂ Â» pour la section Â«Â %pAÂ Â» dans %pB
+%pB: %s (offset: 0x%v, info: 0x%v, terme: 0x%v) sur Â«Â %sÂ Â» pour la section Â«Â %pAÂ Â» dans %pB
+%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: Ajustement du branchement Ã  0x%V vers Â«Â %sÂ Â» dans la section %s
+%pB: les images BE8 ne sont valables qu'en mode gros boutiste%pB: C_STAT n'est pas supportÃ© par XCOFF64%pB: Ne peut crÃ©er l'entrÃ©e de l'Ã©bauche Â«Â %sÂ Â»%pB: Impossible de gÃ©rer une taille de valeur de rÃ©adressage de %d%pB: la table DT_STRTAB est corrompue%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: Le nombre de symboles dans le fichier d'entrÃ©e a augmentÃ© de %lu Ã  %u
+%pB: dÃ©bordement du dÃ©calage relatif au PC dans l'entrÃ©e PLT GOT pour Â«Â %sÂ Â»
+%pB: dÃ©bordement du dÃ©calage relatif au PC dans l'entrÃ©e PLT pour Â«Â %sÂ Â»
+%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: 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: Ã‰chec de la transition TLS de %s vers %s sur Â«Â %sÂ Â» Ã  0x%v dans la section Â«Â %pAÂ Â»
+%pB: l'entrÃ©e TOC Â«Â %sÂ Â» a un rÃ©adressage R_TLSML qui ne se cible pas lui-mÃªme%pB: La premiÃ¨re section dans le segment PT_DYNAMIC n'est pas la section .dynamic%pB: Impossible de gÃ©nÃ©rer les rÃ©adressages dynamiques car une section appropriÃ©e n'existe pas
+%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: ajustement du FileAlignment invalide%pB: ajustement du SectionAlignement invalide%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: 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: dÃ©bordement du dÃ©placement de branchement dans l'entrÃ©e PLT pour Â«Â %sÂ Â»
+%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 lier ensemble des objets d'ABI diffÃ©rentes.%pB: ne peut pas allouer un nom de fichier pour le no. de fichier %d, %d octets
+%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: impossible d'exporter le symbole interne Â«Â %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: impossible de gÃ©rer plus de %d symboles dynamiques%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: le branchement conditionnel vers le symbole non dÃ©fini Â«Â %sÂ Â» n'est pas permis%pB: section de groupe corrompue: Â«Â %pAÂ Â»%pB: ne peut repÃ©rer la section de sortie %pA pour la section d'entrÃ©e %pA%pB: ne peut pas lire le contenu du groupe [%u]%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 sur un symbole local 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: longueur de section d'attributs trop petite: %ld%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: version d'attributs Â«Â %cÂ Â» (%d) inconnue â€“ Â«Â AÂ Â» est attendu
+%pB: erreur: l'attribut d'objet EABI obligatoire %d est manquant%pB: erreur: type PLT non supportÃ©Â : %u%pB: index de symbole attendu dans la plage 0..%lu mais un symbole local avec l'index %lu a Ã©tÃ© rencontrÃ©%pB: impossible d'extraire l'unique section de l'objetÂ : %s%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: impossible d'obtenir la table des symboles dans l'unique section de l'objetÂ : %s%pB: impossible d'ouvrir l'unique section de l'objetÂ : %s%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: 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)
+%pB: symbole interne Â«Â %sÂ Â» dans %pB est rÃ©fÃ©rencÃ© par DSO%pB: symbole interne Â«Â %sÂ Â» n'est pas dÃ©fini%pB: NumberOfRvaAndSizes invalide%pB: entrÃ©e (%#x) invalide dans le groupe [%u]%pB: fichier invalide pour extraire l'unique section de l'objetÂ : %s%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)
 %pB: fichier mmo invalide: attendu YZ = 1 obtenu YZ = %d pour lop_quote
 %pB: fichier mmo invalide: attendu y = 0, obtenu y = %d pour lop_fixrx
 %pB: fichier mmo invalide: attendu z = 1 ou z = 2, obtenu z = %d pour lop_fixo
@@ -1157,15 +1253,24 @@ 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: 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: 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: la section mappÃ©e %pA a un tampon non NULL%pB: XTY_LD Â«Â %sÂ Â» mal placÃ©%pB: nom d'import manquant pour IMPORT_NAME_EXPORTAS pour %s%pB: OMIT_FP imbriquÃ©s dans %pA%pB: pas de noyau pour allouer un symbole de %d octets de longueur%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: rÃ©fÃ©rence non canonique Ã  la fonction protÃ©gÃ©e canonique Â«Â %sÂ Â» dans %pB%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: dÃ©bordement dÃ» au compteur de rÃ©adressage trop petit%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 %#x pas supportÃ©%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 %s vers le symbole absolu Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en crÃ©ant un objet partagÃ©%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 vers le symbole pas absolu Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© dans RV32 en crÃ©ant un objet partagÃ©%pB: le rÃ©adressage %s vers le symbole pas absolu Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© dans RV64 en crÃ©ant un objet partagÃ©%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 %s dÃ©bordement 0x%lx%pB: rÃ©adressage %s dÃ©calage Ã  droite %d erreur 0x%lx%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: le rÃ©adressage R_LARCH_32 vers le symbole pas absolu Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© dans ELFCLASS64 en crÃ©ant un objet partagÃ© ou PIE%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 %s est compressÃ©e avec zstd mais BFD n'est pas compilÃ© avec le support de zstd%pB: section Â«Â %pAÂ Â»: entrÃ©e VTENTRY corrompue%pB: la section Â«Â %pAÂ Â» ne peut pas Ãªtre allouÃ©e dans le segment %u%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: le rÃ©adressage de type (%u) basÃ© sur la pile n'est pas supportÃ© avec -z pack-relative-relocs%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: la table des chaÃ®nes [%u] est corrompue%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: le nom de symbole dÃ©passe la longueur maximale donnÃ©e %d%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 compresser la section %s%pB: impossible de crÃ©er une section vide factice%pB: impossible de dÃ©compresser la section %s%pB: impossible de remplir DataDirectory[%d]: %s est manquant%pB: impossible de remplir DataDirectory[%d]: %s n'est pas dÃ©fini correctement%pB: impossible de remplir DataDirectory[%d]: %s n'est pas correctement alignÃ©%pB: impossible de remplir DataDirectory[%d]: la taille ne peut pas Ãªtre lue de %s%pB: impossible de remplir DataDirectory[%d]: taille trop grande pour la section contenante%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 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: type (%#x) dans la section Â«Â %sÂ Â» inattendu dans le groupe [%u]%pB: rÃ©adressage dynamique non traitÃ© vers %s%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: 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: type de rÃ©adressage bfd %#x non supportÃ©%pB: correspondance %#x non supportÃ©e%pB: appel non-PIC non supportÃ© vers IFUNC Â«Â %sÂ Â»%pB: rÃ©adressage %s non supportÃ© vers le symbole Â«Â %sÂ Â»%pB: type de rÃ©adressage non supportÃ©%pB: type de rÃ©adressage %#x non supportÃ©%pB: type de rÃ©adressage %s 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: swap_aux_in non supportÃ© pour la classe de stockage %#x%pB: swap_aux_out non supportÃ© pour la classe de stockage %#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: BTI est requis par -z force-bti, mais ce fichier objet en entrÃ©e n'a pas la note de propriÃ©tÃ© requise.
+%pB: attention: symbole COMDAT Â«Â %sÂ Â» ne concorde par avec le nom de section Â«Â %sÂ Â»%pB: attention: GCS est requis par -z gcs, mais ce fichier objet en entrÃ©e n'a pas la note de propriÃ©tÃ© nÃ©cessaire.
+%pB: attention: GCS est requis par -z gcs, mais cette bibliothÃ¨que partagÃ©e n'a pas la note de propriÃ©tÃ© nÃ©cessaire. Le chargeur dynamique pourrait ne pas activer GCS ou refuser de charger le programme Ã  moins que toutes le dÃ©pendances Ã  des bibliothÃ¨ques partagÃ©es aient la marque GCS.
+%pB: attention: la gÃ©nÃ©ration de PLT RVE n'est pas supportÃ©e%pB: attention: R_RISCV_SUB_ULEB128 avec un terme non nul, veuillez recompiler avec binutils 2.42 ou supÃ©rieur%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 index illÃ©gal %lu 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: 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: 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: option Â«Â %sÂ Â» tronquÃ©e%pB: attention: impossible d'allouer une quelconque section dans le segment PT_GNU_RELRO%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: attention: le win32pstatus %s, d'une taille de %lu octets, est trop petit%pB: le rÃ©adressage TLS ne sera pas rÃ©solu Ã  l'exÃ©cution%pB: le win32pstatus NOTE_INFO_MODULE, d'une taille de %lu, est trop petit pour contenir un nom d'une taille de %u%pB: mauvais auxtype %#x pour la classe de stockage %#x%pB: ISA x86 nÃ©cessaireÂ : %pB: ISA x86 utilisÃ©eÂ : %pB:%.8s: RVA tronquÃ©%pB:%.8s: section en dessous de la base de l'image%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: 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Ã©cimal%pB:(%pA+%#lx): rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la construction de %sÂ ; recompilez avec %s%s%pB[%pA]: pas de section de sortie pour l'espace %pA%pcrel_lo n'a pas de %pcrel_hi correspondant%pcrel_lo dÃ©borde avec un termesymbole de section %pcrel_lo avec un opÃ©rande%pcrel_lo avec un terme n'est pas permis avec R_RISCV_GOT_HI20%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)
+%s a, Ã  la fois, des rÃ©adressages normaux et TLS%s dans une section de recouvrement%s est dÃ©fini mais n'a pas su Ãªtre chargÃ©Â : %s%s est dÃ©fini mais le support des greffons est dÃ©sactivÃ©%s est chargÃ© mais le symbole Â«Â %sÂ Â» n'est pas trouvÃ©Â : %s%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, itÃ©ration %u
+  branchement    %lu
+  branch. long   %lu
+  appel plt      %lu
+  entrÃ©e globale %lu%s: BFD erreur interne %s, abandon Ã  %s:%d
+%s: BFD erreur interne %s, abandon Ã  %s:%d dans %s
+%s: Mauvais id ELFÂ : Â«Â %dÂ Â»%s: la chaÃ®ne ISA ne peut pas contenir de lettre majuscule%s: la chaÃ®ne ISA doit commencer par rv32, rv64 ou Profiles%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: compilÃ© comme un objet de 32 bits et %s est de 64 bits%s: compilÃ© comme un objet de 64 bits et %s est de 32 bits%s: impossible d'ouvrir pour extraire l'unique section de l'objetÂ : %s%s: la premiÃ¨re extension ISA doit Ãªtre Â«Â eÂ Â», Â«Â iÂ Â» ou Â«Â gÂ Â»%s: l'extension ISA prÃ©fixÃ©e Â«Â %sÂ Â» invalide est terminÃ©e par <nombre>p%s: pas de tel symbole%s: non implÃ©mentÃ©%s: pas supportÃ©%s: taille de l'objet ne concorde pas avec la taille de la cible %s%s: l'extension ISA prÃ©fixÃ©e doit sÃ©parer avec _%s: version non dÃ©finie: %s%s: extension prÃ©fixÃ©e ISA Â«Â %sÂ Â» inconnue%s: extension ISA standard ou classe de prÃ©fixe Â«Â %cÂ Â» inconnue%simpossible de + l'extension de base Â«Â %sÂ Â» dans %s Â«Â %sÂ Â»%sdÃ©prÃ©ciÃ© - extension Â«Â %sÂ Â» dans %s Â«Â %sÂ Â»%sune extension ISA invalide est terminÃ©e par <nombre>p dans %s Â«Â %sÂ Â»%sextension ISA Â«Â %sÂ Â» inconnue dans %s Â«Â %sÂ Â»%tlsdesc_lo avec un terme(%s): Type de destination inconnu (ARM/Thumb) dans %pB(Ã  l'offset de bit %u)
 (descripteur)
-(format %c%c%c%c signature %s age %ld)
+(format %c%c%c%c signature %s age %ld pdb %s)
 (pas de valeur)
 (pas active)
 (pas allouÃ©e)
@@ -1178,28 +1283,24 @@ En-tÃªtes ppcboot:
 , 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>
+double de 64 bits, 8 octets8 octets: instructions m32r: instructions m32r2: instruction m32rx: instructions n1: instructions n1h; recompilez avec -fPIC; recompilez avec -fPIE<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
-BFD erreur interne %s, abandon Ã  %s:%d dans %s
-RÃ©pertoire de base du rÃ©adressage [.reloc]RÃ©pertoire des importations limitÃ©esLimites:
+<fanions de masque inconnus><inconnu: %x><inconnu>rÃ©adressage @pltoff vers un symbole localBASE_IMAGE       BFD assertion %s a Ã©chouÃ© %s:%dRÃ©pertoire de base du rÃ©adressage [.reloc]RÃ©pertoire des importations limitÃ©esLimites:
 utilisation CACHE: CLIEn-tÃªte exÃ©cutable CLRCLUSTERS_LOCKMGR COUNTERS         CPU              CTL_AUGRB (augmente la base du rÃ©adressage) %u
 CTL_DFLOC (dÃ©finir position)
 CTL_SETRB (fixe la base du rÃ©adressage)
 CTL_STKDL (position dÃ©finie dans la pile)
 CTL_STLOC (fixer position)
-En-tÃªte du copyright
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsEn-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 0x%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: la section %s n'a pas de contenuErreur DWARF: la section %s est trop grandeErreur 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
-RÃ©pertoire de descriptionEIHD: (taille: %u, nbr blocs: %u)
+RÃ©pertoire des dÃ©lais d'importationRÃ©pertoire de descriptionEIHD: (taille: %u, nbr blocs: %u)
 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
+Erreur: %pB et %pB ont des versions DSP diffÃ©rentesErreur: %pB et %pB ont des ABI FPU diffÃ©rentesErreur: %pB et %pB ont des versions VDSP diffÃ©rentesErreur: %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 est uniquement supportÃ©e pour les cibles GNU et FreeBSDla section GNU_RETAIN est uniquement supportÃ©e pour les cibles GNU et FreeBSDles 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,20 +1308,20 @@ 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)
 Image des symboles et table debug: (majeur: %u, mineur: %u)
-RÃ©pertoire de la table d'adresse d'importationRÃ©pertoire d'importation [faisant partie de .idata]LOGICAL_NAMES    Nom du Processeur de Langage
+RÃ©pertoire de la table d'adresse d'importationRÃ©pertoire d'importation [faisant partie de .idata]Erreur interne: inatteignable.propriÃ©tÃ© LAM_U48propriÃ©tÃ© LAM_U57LOGICAL_NAMES    Nom du Processeur de Langage
 Longueur            = 0x%.8lx (%ld)
 RÃ©pertoire de chargement de configurationFonction IFUNC locale Â«Â %sÂ Â» dans %pB
 MEMORY_MANAGEMENTDes fonctions MIPS16 et microMIPS ne peuvent pas s'appeler l'une l'autreMISC             utilisation MMU: MULTI_PROCESSING Majeur/Mineur 			%d/%d
 Pile maximum requise est 0x%v
 MeP: le howto %d a le type %dFusion des propriÃ©tÃ©s du programme
 En-tÃªte module
-NETWORKS         NORMALNom 				aucunNumÃ©ro dans:
+NETWORKS         NORMALNOTE: Ce comportement est dÃ©prÃ©ciÃ© et sera supprimÃ© dans une version ultÃ©rieure de l'Ã©diteur de liensNom 				aucunNumÃ©ro dans:
 OPR_ADD (ajout)
 OPR_AND (et logique)
 OPR_ASH (dÃ©calage arithmetique)
@@ -1231,7 +1332,7 @@ En-tÃªtes ppcboot:
 OPR_IOR (ou inclusif logique)
 OPR_MUL (multiplication)
 OPR_NEG (nÃ©gation)
-OPR_NOP (pas d'operation)
+OPR_NOP (pas d'opÃ©ration)
 OPR_REDEF (dÃ©finir un litÃ©ral)
 OPR_REDEF (redÃ©fini le symbole Ã  la position actuelle)
 OPR_ROT (rotation)
@@ -1245,21 +1346,19 @@ En-tÃªtes ppcboot:
 Longueur de la partition[%d] = 0x%.8lx (%ld)
 Secteur de la partition[%d] = 0x%.8lx (%ld)
 Merci de rapporter cette anomalie.
-conflit ABI RL78: le fichier G10 %pB ne peut pas Ãªtre liÃ© avec %s fichier %pBconflit d'ABI RL78: ne peut lier le fichier %2$pB pour %1$s avec le fichier %4$pB pour %3$sconflit de fusion RL78: ne peut lier ensemble un objet 32 bits et un objet 64 bitsR_BFIN_FUNCDESC fait rÃ©fÃ©rence Ã  un symbole dynamique avec un opÃ©rande non nulR_BFIN_FUNCDESC_VALUE fait rÃ©fÃ©rence Ã  un symbole dynamique avec un opÃ©rande non nulR_FRV_TLSMOFFLO pas appliquÃ© Ã  une instruction setlo ou setlos
+Fanions privÃ©s = 0x%lx : conflit ABI RL78: le fichier G10 %pB ne peut pas Ãªtre liÃ© avec %s fichier %pBconflit d'ABI RL78: ne peut lier le fichier %2$pB pour %1$s avec le fichier %4$pB pour %3$sconflit de fusion RL78: ne peut lier ensemble un objet 32 bits et un objet 64 bitsdivision par zÃ©ro dans le rÃ©adressage RL78dÃ©bordement (par le bas ou le haut) de la pile de rÃ©adressages RL78R_AMD64_IMAGEBASE avec __ImageBase est non-dÃ©finiR_BFIN_FUNCDESC fait rÃ©fÃ©rence Ã  un symbole dynamique avec un opÃ©rande non nulR_BFIN_FUNCDESC_VALUE fait rÃ©fÃ©rence Ã  un symbole dynamique avec un opÃ©rande non nulR_FRV_TLSMOFFLO pas appliquÃ© Ã  une instruction setlo ou setlos
 Lecture du cachet date-heure modifiÃ© du fichier d'archivePropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB (0x%v) et %pB (0x%v)
 PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB (0x%v) et %pB (pas trouvÃ©e)
 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 %pADes sections SFrame avec des encodages de donnÃ©es inattendus empÃªchent la gÃ©nÃ©ration de .sframeSHELL            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)
-STA_LW (pile mot long) 0x%08x
-STA_MOD (pile module)
-STA_PQ (base pile psect + offset)
-STA_QW (pile quad mot) 0x%08x %08x
-STC_BOH_GBL (stocke BOH cond Ã  l'adresse globale)
+STA_GBL (empile globals) %.*s
+STA_LI (empile littÃ©ral)
+STA_LW (empile mot long)STA_MOD (empile module)
+STA_PQ (empile base psect + offset)
+STO_QW (empile quad mot)STC_BOH_GBL (stocke BOH cond Ã  l'adresse globale)
 STC_BOH_PS (stocke BOH cond Ã  psect + offset)
 STC_BSR_GBL (stocke BSR cond Ã  l'adresse globale)
 STC_BSR_PS (stocke BSR cond Ã  psect + offset)
@@ -1298,27 +1397,27 @@ En-tÃªtes ppcboot:
 En-tÃªte des fichiers sources
 RÃ©pertoire spÃ©cialTaille de la pile des nÅ“uds racine du graph d'appel.
 Pas:
-Symbole Â«Â %sÂ Â» a des types qui diffÃ¨rent: %s dans %pB, prÃ©cÃ©demment REGISTRE dans %pBrÃ©adressage TLS incorrecte sans section dynamiqueTable d'adresses
-Le champ de taille des donnÃ©es de dÃ©bogage dans le rÃ©pertoire de donnÃ©es est trop grand pour la sectionLa 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
+Symbole Â«Â %sÂ Â» a des types qui diffÃ¨rent: %s dans %pB, prÃ©cÃ©demment REGISTRE dans %pBrÃ©adressage TLS incorrecte sans section dynamiqueDÃ©bordement de la table des entrÃ©es durant la gÃ©nÃ©ration de l'Ã©baucheÂ ; essayez l'option -mminimal-toc Ã  la compilationTable d'adresses
+Le terme n'est pas permis avec R_RISCV_GOT_HI20Le champ de taille des donnÃ©es de dÃ©bogage dans le rÃ©pertoire de donnÃ©es est trop grand pour la sectionLa 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
 RÃ©pertoire des files de stockage [.tls]Tampon Heure/Date 		%lx
 En-tÃªte du texte du titre
 Trop de codes de dÃ©roulages (%ld)
 Type                Taille   Rva      DÃ©calage
-USRSTACKInconnuInconnu: %xPropriÃ©tÃ© mise Ã  jour %W (%v) Ã  fusionner %pB (0x%v) et %pB (pas trouvÃ©e)
+USRSTACKImpossible de trouver une entrÃ©e d'Ã©bauche ciblant %sImpossible de procÃ©der Ã  l'Ã©dition de liens sur le fichierÂ : %sImpossible de charger la DLL.InconnuInconnu: %xPropriÃ©tÃ© mise Ã  jour %W (%v) Ã  fusionner %pB (0x%v) et %pB (pas trouvÃ©e)
 PropriÃ©tÃ© mise Ã  jour %W (0x%v) Ã  fusionner %pB (0x%v) et %pB (0x%v)
 VOLATILE         La taille virtuelle de la section .pdata (%ld) est plus grande que la taille rÃ©elle (%ld)
 Attention: la taille de la section %s (%ld) n'est pas un multiple de %d
 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:
+Attention: il faudrait utiliser Â«Â _Â Â» pour contacter les Profils avec d'autres extensionsÃ‰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]\%pB: attention: instruction %s BLX vise la fonction %s Â«Â %sÂ Â».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Ã©eÂ«Â xtheadvectorÂ Â» est en conflit avec l'extension Â«Â v/zve32xÂ Â»Â«Â zclsdÂ Â» est en conflit avec l'extension Â«Â c+fÂ Â» / Â«Â zcfÂ Â»Â«Â zfinxÂ Â» est en conflit avec l'extension Â«Â f/d/q/zfh/zfhminÂ Â»un 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: %#lxbfd_mach_o_read_section_64: valeur d'alignement dÃ©mesurÃ©e: %#lxbfd_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
+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 %pBcÂ Â» ou Â«Â zcane 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
+impossible de trouver les versions par dÃ©faut de l'extension ISA Â«Â %sÂ Â»ne peut lire DMT
 ne peut lire l'en-tÃªte DMT
 ne peut lire le psect DMT
 ne peut lire DST
@@ -1334,66 +1433,73 @@ En-tÃªtes ppcboot:
 ne peut lire GST
 ne peut lire l'enregistrement GST
 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
+impossible de rÃ©soudre R_LARCH_PCREL20_S2 par rapport Ã  un symbole faible non dÃ©fini avec un opÃ©rande hors de [-2048, 2048)classe: %u, dtype: %u, longueur: %u, pointeur: 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Ã©enregistrement de rÃ©adressage corrompuvaleur vms corrompueGST corrompu
+ne 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]dÂ Â» et Â«Â cÂ Â» ou Â«Â zcddÂ Â» et Â«Â zfadÂ Â» ou Â«Â zdinxrÃ©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
+division par zÃ©rodst_define_location %u trop grandinformation d'index dynamique pas disponiblerÃ©adressage dynamique dans une section en lecture seuleerreur 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 en ajoutant l'attributerreur dans %pB(%pA); aucune table .eh_frame_hdr ne sera crÃ©Ã©eerreur dans %pB(%pA); aucune .sframe sera crÃ©Ã©eerreur dans %pB(%pA); type de section SFrame inattenduerreur 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 a un segment LOAD avec les permissions RWXerreur: %pB a un segment TLS avec la permission d'exÃ©cutionerreur: %pB est dÃ©jÃ  au format final BE8erreur: %pB compilÃ© pour APCS-%d alors que la cible %pB utilise APCS-%derreur: %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 octetserreur: %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 utilisÃ©e par RISC-V est corrompue: 0x%x>erreur: %pB: <la taille de la propriÃ©tÃ© (0x%x) 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: adressage relatif SB entre en conflit avec l'utilisation de R9erreur: %pB: XLEN de l'entrÃ©e (%u) ne correspond pas Ã  la sortie (%u)erreur: %pB: impossible de mÃ©langer rf16 avec l'ensemble des registres complets %pBerreur: %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: chaÃ®nes ISA Ã  fusionner Â«Â %sÂ Â» et Â«Â %sÂ Â» non concordanteserreur: %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 crÃ©er le symbole de section de groupeerreur: %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: %pB: XLEN (%u) non supportÃ©e, vous pourriez Ãªtre en train d'utiliser la mauvaise Ã©mulationerreur: %s: dÃ©clenche la gÃ©nÃ©ration d'une pile exÃ©cutable (car il a une section .note.GNU-stack exÃ©cutable)erreur: %s: dÃ©clenche la gÃ©nÃ©ration d'une pile exÃ©cutable car il n'a pas de section .note.GNU-stack exÃ©cutableerreur: tentative de lier %pB avec un binaire %pB d'une architecture diffÃ©renteerreur: le symbole ne peut Ãªtre trouvÃ©: %serreur: architectures CPU conflictuelles %s par rapport Ã  %s dans %pBerreur: crÃ©ation d'une pile exÃ©cutable Ã  cause de l'option en ligne de commande -z execstackerreur: la taille finale de la valeur uleb128 Ã  l'offset 0x%lx dans %pA depuis %pB dÃ©passe l'espace disponibleerreur: 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Ã©cutablefÂ Â» et Â«Â cÂ Â» ou Â«Â zcffÂ Â» ou Â«Â zfinxÃ©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Ã©la taille finale de la valeur uleb128 Ã  l'offset 0x%lx dans %pA depuis %pB dÃ©passe l'espace disponibleles 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Ã©finihsymbole 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
+Des sections SFrame d'entrÃ©e avec des abi diffÃ©rentes empÃªchent la gÃ©nÃ©ration de .sframeDes sections SFrame d'entrÃ©e avec des formats de version diffÃ©rents empÃªchent la gÃ©nÃ©ration de .sframeerreur 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 interne: interne: INSN_CLASS_* inatteignable%s invalidetype de rÃ©adressage TARGET2 Â«Â %sÂ Â» invalidecible bfd invalidecontenu invalide dans la section %pAindex dynamique invaliderÃ©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
+image liableÃ©bauches de l'Ã©diteur de liens dans %u groupeÃ©bauches de l'Ã©diteur de liens dans %u groupeslitÃ©ralerÃ©adressage littÃ©ral rencontrÃ© pour un symbole externeindex de symbole local trop longdÃ©bordement de l'offset du branchement long de l'Ã©bauche Â«Â %sÂ Â»mÂ Â» ou Â«Â zmmulmach-o: il y a trop de sections (%u) le maximum est 255,
+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
-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
+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'information d'index dynamique disponiblepas d'erreuraucun autre fichier d'archiveaucun symboletable de %s non contiguÃ«
+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 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 recouvrementframework de greffon: Ã  cours de descripteurs de fichiers. Essayez d'utiliser moins d'objets/archives
+pointeur
 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
+symbole protÃ©gÃ©symbole protÃ©gÃ© qÂ Â» et Â«Â zfaqÂ Â» ou Â«Â zqinxdÃ©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
-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
+recompilez avec Â«Â gcc -mno-relaxÂ Â» ou Â«Â as -mno-relaxÂ Â» ou Â«Â ld --no-relaxÂ Â»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*le rÃ©adressage par rapport Ã  Â«Â %sÂ Â» Ã  le type GOT dÃ©fectueux 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: %scommande %d rÃ©servÃ©edÃ©but rtn
 fin rtn: taille 0x%08x
-section sans contenuseptyp, nom: %.*s
+rv%d ne supporte pas l'extension Â«Â qÂ Â»rv%d ne supporte pas l'extension Â«Â smmpmÂ Â»rv%d ne supporte pas l'extension Â«Â smnpmÂ Â»rv%d ne supporte pas l'extension Â«Â ssnpmÂ Â»rv%d ne supporte pas l'extension Â«Â sspmÂ Â»rv%d ne supporte pas l'extension Â«Â supmÂ Â»rv%d ne supporte pas l'extension Â«Â zcfÂ Â»rv%de ne supporte pas l'extension Â«Â hÂ Â»section sans contenuseptyp, nom: %.*s
 set_abs_pc: 0x%08x
 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 est trop grandeÂ ; abaissez la limite de taille des petites donnÃ©es (voyez l'option -G)smctrÂ Â» ou Â«Â ssctrsom_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 est uniquement supportÃ©e pour les cibles GNU et FreeBSDsymboles ont besoin de la section de dÃ©bug qui est inexistantele type symbolique STT_GNU_IFUNC est uniquement supportÃ© pour les cibles GNU et FreeBSDerreur 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 multiplesvÂ Â» ou Â«Â zve64dÂ Â» ou Â«Â zve64fÂ Â» ou Â«Â zve32fvÂ Â» ou Â«Â zve64xÂ Â» ou Â«Â zve32xarchitecture 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 un segment LOAD avec les permissions RWXattention: %pB a un segment TLS avec la permission d'exÃ©cutionattention: %pB a un index de table de chaÃ®nes corrompuattention: %pB a un en-tÃªte de programme avec un alignement invalideattention: %pB a une section qui s'Ã©tend au delÃ  de la fin du fichierattention: %pB a un segment qui s'Ã©tend au delÃ  de la fin du fichierattention: %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(%s): Branche forcÃ©e Ã  un symbole absolu en mode Thumb (CPU Thumb-only) dans %pBattention: %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 la mÃ©moire scellÃ©e corrompue: 0x%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: attribut d'objet ABI RISCV %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
- 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
+attention: section %s a une taille nulleattention: %s devrait Ãªtre utilisÃ© au lieu de %sattention: %s: l'absence de la section .note.GNU-stack implique une pile exÃ©cutableattention: %s: pile exÃ©cutable requise (car la section .note.GNU-stack est exÃ©cutable)attention: (%s): Branche forcÃ©e Ã  un symbole absolu en mode Thumb (CPU Thumb-only) dans %pBattention: --plt-localentry est particuliÃ¨rement dangereux sans le support de ld.so pour dÃ©tecter des violations de l'ABIattention: --plt-localentry est incompatible avec le code relatif au pc du power10attention: NOTEÂ : les dÃ©saccords d'alignements peuvent provoquer des problÃ¨mes rÃ©els. Il est conseillÃ© de contrÃ´ler.attention: NOTEÂ : les dÃ©saccords de tailles peuvent provoquer des problÃ¨mes rÃ©els. Il est conseillÃ© de contrÃ´ler.attention: 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: l'alignement %u du symbole normal Â«Â %sÂ Â» dans %pB est plus petit que %u utilisÃ© par la dÃ©finition commune dans %pBattention: 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 %sattention: activation d'une pile exÃ©cutable Ã  cause de l'option en ligne de commande -z execstackavertissement: le fanion d'archive %2$s du fichier %1$pB est en conflit avec la cible %3$s, dÃ©finissez le fanion d'archive cible Ã  %4$savertissement: le fanion d'archive %2$s du fichier %1$pB est en conflit avec la cible ck%3$s, utilise %4$sattention: un total de %d objets dynamiquement liÃ©s incompatibles avec les exigences CGS ont Ã©tÃ© trouvÃ©s.
+attention: un total de %d entrÃ©es incompatibles avec les exigences de BTI ont Ã©tÃ© trouvÃ©es.
+attention: un total de %d entrÃ©es incompatibles avec les exigences de GCS ont Ã©tÃ© trouvÃ©es.
+attention: 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Ã©seautageavertissement: la version de spec privilÃ©gie 1.9.1 ne peut pas Ãªtre liÃ©e avec d'autres versions de specattention: 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: nom d'architecture Â«Â %#xÂ Â» non reconnuavertissement: 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
+l'extension x ISA Â«Â %sÂ Â» doit Ãªtre dÃ©finie avec les versionsouivous ne pouvez pas dÃ©finir %s dans un scriptzbbÂ Â» ou Â«Â zbkbzbcÂ Â» ou Â«Â zbkczcbÂ Â» et Â«Â zbazcbÂ Â» et Â«Â zbbzcbÂ Â» et Â«Â zmmulÂ Â» ou Â«Â zcbÂ Â» et Â«Â mÂ«Â zcmpÂ Â» est incompatible avec l'extension Â«Â dÂ Â» et Â«Â cÂ Â» ou Â«Â zcdÂ Â»zfhÂ Â» et Â«Â zfazfhÂ» et Â«Â zfaÂ Â» ou Â«Â zvfhÂ Â» et Â«Â zfazfhÂ Â» ou Â«Â zhinxzfhÂ Â» ou Â«Â zvfhzfhminÂ Â» et Â«Â dÂ Â» ou Â«Â zhinxminÂ Â» et Â«Â zdinxzfhminÂ Â» et Â«Â qÂ Â» ou Â«Â zhinxminÂ Â» et Â«Â zqinxzfhminÂ Â» ou Â«Â zhinxminzicfissÂ Â» et Â«Â zcmopzihintntlÂ Â» et Â«Â cÂ Â» ou Â«Â zihintntlÂ Â» et Â«Â zcazkndÂ Â» ou Â«Â zknezvbbzvbczvkbzvkgzvknedzvknhaÂ Â» ou Â«Â zvknhbzvksedzvkshles extensions zvl*b ont besoin d'activer l'extension Â«Â vÂ Â» ou bien Â«Â zveÂ Â»PRIx64PRIu64PRId64PRIx32%pB: %# overflows header %s field%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: TLS relocation at 0x% over non-TLS symbol %s (0x%x)
+%pB: TLS local relocation at 0x% over imported symbol %s
+%pB: relocation (%d) at 0x% has wrong r_rsize (0x%x)
+%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: relocation (%d) at (0x%) has wrong r_rsize (0x%x)
+%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: stripping non-representable symbol '%s' (value 0x%)%pB: bad reloc address %# in section `%pA'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(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%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+%#): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)%pB(%pA+%#): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)%pB(%pA+%#): cannot handle %s for %s%pB: bad reloc offset (%# > %#) for section `%pA'ip2k 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(%pA+%#): relocation %s against misaligned symbol `%s' (%#) in %pB%pB: bad reloc offset (%# > %#) for section `%pA'%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: %pA+%: relocation addend % too large%pB: version count (%) does not match symbol count (%ld)%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: bad symbol definition: `Main' set to % rather than the start address %
+%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB(%pA+%#): %s relocation offset out of order%pB(%pA+%#): %s relocation offset out of range%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 csect%pB: Unable to find a stub csect in rangeof relocation at %# targeting'%s'TOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB: error: erratum 843419 immediate 0x% out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead%pB(%pA+%#): unresolvable %s relocation in section `%s'%# invaild imm%pB: R_LARCH_ALIGN with offset % not aligned to instruction boundary%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x% without any addend, but may be 0x% after adding the %%pcrel_lo addend%pB: Data Directory (%lx bytes at %) extends across section boundary at %%pB: %#: dÃ©bordement du champ d'en-tÃªte %s%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: rÃ©adressage TLS Ã  0x% sur le symbole non-TLS %s (0x%x)
+%pB: rÃ©adressage TLS local Ã  0x% sur le symbole importÃ© %s
+%pB: rÃ©adressage (%d) Ã  0x% a un mauvais r_rsize (0x%x)
+%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: rÃ©adressage (%d) Ã  (0x%) a un mauvais r_rsize (0x%x)
+%pB: type de rÃ©adressage %d illÃ©gal Ã  l'adresse %#%pB: mauvaise taille de la table des chaÃ®nes %%pB: Ã©limination du symbole non reprÃ©sentable Â«Â %sÂ Â» (valeur 0x%)%pB: mauvaise adresse de rÃ©adressage %# dans la section Â«Â %pAÂ Â»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(%pA+%#): rÃ©adressage %s sans solution vers le symbole Â«Â %sÂ Â»%pB: chaÃ®ne de dÃ©calage invalide %u >= % pour la section Â«Â %sÂ Â»%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+%#): le dÃ©placement %#x pour insn %#x n'est pas un multiple de 8 (gp %#x)%pB(%pA+%#): le dÃ©placement %#x pour insn %#x n'est pas un multiple de 4 (gp %#x)%pB(%pA+%#): ne sait pas traiter %s pour %s%pB: mauvais offset de rÃ©adressage (%# > %#) pour 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
+ allouÃ© Ã  l'Ã©dition de lien: liÃ©: %# != relÃ¢chÃ©: %#%pB: directive LOCAL: registre $% n'est pas un registre local; premier registre global est $%%pB(%pA+%#): rÃ©adressage %s sur le symbole mal alignÃ© Â«Â %sÂ Â» (%#) dans %pB%pB: mauvais offset de rÃ©adressage (%# > %#) pour la section Â«Â %pAÂ Â»%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: %pA+%: le terme de rÃ©adressage % est trop grand%pB: compteur de version (%) ne concorde pas avec le symbole du compteur (%ld)%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: dÃ©finition de symbole erronÃ©e: Â«Â MainÂ Â» initialisÃ© Ã  % au lieu de l'adresse de dÃ©part %
+%pB: trop de registres initialisÃ©s; longueur de section %%pB: adresse de dÃ©part invalide pour des registres initialisÃ©s de longueur %: %#%pB(%pA+%#): dÃ©calage de rÃ©adressage %s pas dans le bon ordre%pB(%pA+%#): dÃ©calage de rÃ©adressage %s hors limite%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 csect%pB: Impossible de trouver une Ã©bauche csect dans le rÃ©adressage rangeof Ã  %# et ciblant Â«Â %sÂ Â»DÃ©bordement de la table des entrÃ©es: %# > 0x10000; essayez l'option -mminimal-toc Ã  la compilation%pB: erreur: l'immÃ©diat 0x% de l'erratum 843419 est hors limites pour ADR (fichier d'entrÃ©e trop grand) et --fix-cortex-a53-843419=adr est utilisÃ©. ExÃ©cutez l'Ã©diteur de liens avec --fix-cortex-a53-843419=full Ã  la place%pB(%pA+%#): rÃ©adressage %s sans solution dans la section Â«Â %sÂ Â»%# imm invalide%pB: R_LARCH_ALIGN avec l'offset % n'est pas alignÃ© Ã  la frontiÃ¨re d'instruction%pB(%pA+0x%: % octets requis pour aligner sur une frontiÃ¨re de % octets mais seulement % sont prÃ©sents%%pcrel_lo dÃ©borde avec un terme, la valeur de %%pcrel_hi est 0x% sans terme, mais peut Ãªtre 0x% aprÃ¨s ajout du terme de %%pcrel_lo%pB: Le rÃ©pertoire de donnÃ©es (%lx octets Ã  %) s'Ã©tend au delÃ  de la frontiÃ¨re de 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.20200303/bfd/po/fr.po ./bfd/po/fr.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/fr.po	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/fr.po	2026-03-05 02:07:20.000000000 +0000
@@ -1,14 +1,14 @@
 # Messages franÃ§ais pour GNU concernant bfd.
-# Copyright (C) 2019 Free Software Foundation, Inc.
+# Copyright (C) 2025 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>, 2025.
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd-2.31.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"
+"Project-Id-Version: bfd-2.44.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2025-07-13 08:44+0100\n"
+"PO-Revision-Date: 2025-07-18 18:25+0200\n"
 "Last-Translator: FrÃ©dÃ©ric Marchal <fmarchal@perso.be>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "Language: fr\n"
@@ -18,665 +18,748 @@ 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:444 pdp11.c:481
+#, c-format
+msgid "%pB: %#<PRIx64> overflows header %s field"
+msgstr "%pB: %#<PRIx64>: dÃ©bordement du champ d'en-tÃªte %s"
+
+#: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495
 #, 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:1562 pdp11.c:1467
 #, 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:1565 vms-alpha.c:8473
 msgid "*unknown*"
 msgstr "*inconnu*"
 
-#: aoutx.h:1721
+#: aoutx.h:1701 pdp11.c:1563
 #, 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:1945
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: taille de rÃ©adressage AOUT non supportÃ©eÂ : %d"
+
+#: aoutx.h:2389 aoutx.h:2407 pdp11.c:2040
 #, 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:4040 pdp11.c:3402
 #, 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
-#: 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
+#: aoutx.h:4360 coff-alpha.c:604 coff-mips.c:356 coff-rs6000.c:3037
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531
+#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4692
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6246 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2211 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3294
+#: elf32-nds32.c:3315 elf32-nds32.c:5084 elf32-or1k.c:1085 elf32-pj.c:326
+#: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291
+#: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347
+#: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163
+#: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537
+#: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924
+#: elf32-v850.c:4254 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510
+#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4058
+#: elf64-alpha.c:4206 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3428 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:331 elf64-s390.c:381 elf64-x86-64.c:305 elf64-x86-64.c:2558
+#: elfn32-mips.c:3799 elfxx-ia64.c:324 elfxx-loongarch.c:1897
+#: elfxx-riscv.c:1068 elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:907
+#: elfxx-tilegx.c:947 elfnn-aarch64.c:2215 elfnn-aarch64.c:2316
+#: elfnn-ia64.c:214 elfnn-ia64.c:3823 elfnn-kvx.c:259
 #, 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:5380 pdp11.c:3818
 #, 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:748
+msgid "%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr "%P: %pB(%s): erreur lors de l'ouverture de membre d'archive lÃ©gerÂ : %E\n"
+
+#: archive.c:2282
 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:2351 archive.c:2408 elflink.c:4956 linker.c:1470
 #, 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:2640
 msgid "Reading archive file mod timestamp"
 msgstr "Lecture du cachet date-heure modifiÃ© du fichier d'archive"
 
-#: archive.c:2583
+#: archive.c:2671
 msgid "Writing updated armap timestamp"
 msgstr "Ã‰criture du cachet date-heure armap mise Ã  jour"
 
-#: bfd.c:449
+#: bfd.c:793
 msgid "no error"
 msgstr "pas d'erreur"
 
-#: bfd.c:450
+#: bfd.c:794
 msgid "system call error"
 msgstr "erreur d'appel systÃ¨me"
 
-#: bfd.c:451
+#: bfd.c:795
 msgid "invalid bfd target"
 msgstr "cible bfd invalide"
 
-#: bfd.c:452
+#: bfd.c:796
 msgid "file in wrong format"
 msgstr "fichier dans un mauvais format"
 
-#: bfd.c:453
+#: bfd.c:797
 msgid "archive object file in wrong format"
 msgstr "fichier objet d'archive dans un mauvais format"
 
-#: bfd.c:454
+#: bfd.c:798
 msgid "invalid operation"
 msgstr "opÃ©ration invalide"
 
-#: bfd.c:455
+#: bfd.c:799
 msgid "memory exhausted"
 msgstr "mÃ©moire Ã©puisÃ©e"
 
-#: bfd.c:456
+#: bfd.c:800
 msgid "no symbols"
 msgstr "aucun symbole"
 
-#: bfd.c:457
+#: bfd.c:801
 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:802
 msgid "no more archived files"
 msgstr "aucun autre fichier d'archive"
 
-#: bfd.c:459
+#: bfd.c:803
 msgid "malformed archive"
 msgstr "archive mal formÃ©e"
 
-#: bfd.c:460
+#: bfd.c:804
 msgid "DSO missing from command line"
 msgstr "DSO manquant dans la ligne de commande"
 
-#: bfd.c:461
+#: bfd.c:805
 msgid "file format not recognized"
 msgstr "format de fichier non reconnu"
 
-#: bfd.c:462
+#: bfd.c:806
 msgid "file format is ambiguous"
 msgstr "format de fichier ambigu"
 
-#: bfd.c:463
+#: bfd.c:807
 msgid "section has no contents"
 msgstr "section sans contenu"
 
-#: bfd.c:464
+#: bfd.c:808
 msgid "nonrepresentable section on output"
 msgstr "section non-reprÃ©sentable sur la sortie"
 
-#: bfd.c:465
+#: bfd.c:809
 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:810
 msgid "bad value"
 msgstr "mauvaise valeur"
 
-#: bfd.c:467
+#: bfd.c:811
 msgid "file truncated"
 msgstr "fichier tronquÃ©"
 
-#: bfd.c:468
+#: bfd.c:812
 msgid "file too big"
 msgstr "fichier trop gros"
 
-#: bfd.c:469
+#: bfd.c:813
+msgid "sorry, cannot handle this file"
+msgstr "dÃ©solÃ©, ce fichier ne peut Ãªtre traitÃ©"
+
+#: bfd.c:814
 #, c-format
 msgid "error reading %s: %s"
 msgstr "erreur lors de la lecture de %s: %s"
 
-#: bfd.c:470
+#: bfd.c:815
 msgid "#<invalid error code>"
 msgstr "#<code d'erreur invalide>"
 
-#: bfd.c:1429
+#: bfd.c:2266
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "BFD assertion %s a Ã©chouÃ© %s:%d"
 
-#: bfd.c:1442
+#: bfd.c:2279
 #, 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"
+msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr "%s: BFD erreur interne %s, abandon Ã  %s:%d dans %s\n"
 
-#: bfd.c:1447
+#: bfd.c:2283
 #, c-format
-msgid "BFD %s internal error, aborting at %s:%d\n"
-msgstr "BFD erreur interne %s, abandon Ã  %s:%d\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d\n"
+msgstr "%s: BFD erreur interne %s, abandon Ã  %s:%d\n"
 
-#: bfd.c:1449
+#: bfd.c:2286
+#, c-format
 msgid "Please report this bug.\n"
 msgstr "Merci de rapporter cette anomalie.\n"
 
-#: bfdwin.c:206
-#, 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
-#, c-format
-msgid "not mapping: env var not set\n"
-msgstr "pas de table de projection: variable d'environnement pas initialisÃ©e\n"
-
-#: binary.c:276
+#: binary.c:277
 #, c-format
 msgid "warning: writing section `%pA' at huge (ie negative) file offset"
 msgstr "attention: Ã©criture de la section Â«Â %pAÂ Â» vers un Ã©norme dÃ©calage (c-Ã -d nÃ©gatif) dans le fichier"
 
-#: cache.c:271
+#: cache.c:290
 #, c-format
-msgid "reopening %pB: %s\n"
-msgstr "rÃ©ouverture de %pB: %s\n"
+msgid "reopening %pB: %s"
+msgstr "rÃ©ouverture de %pB: %s"
 
 #: coff-alpha.c:450
 #, c-format
 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:914 coff-alpha.c:941 coff-alpha.c:2009 coff-mips.c:948
 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:1177 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13195
+#: elfxx-mips.c:13594 reloc.c:8602 reloc16.c:314
+#, 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"
+
+#: coff-alpha.c:1183 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13604
+#: reloc.c:8612
+#, 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"
+
+#: coff-alpha.c:1189 elfxx-mips.c:13613 reloc.c:8621
+#, 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"
+
+#: coff-alpha.c:1515
 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:1992
 #, c-format
-msgid "%pB: %s unsupported"
-msgstr "%pB: %s pas supportÃ©"
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr "%X%P: %pB(%pA): rÃ©adressage en dehors des limites\n"
+
+#: coff-alpha.c:2004
+#, c-format
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr "%X%P: %pB(%pA): le rÃ©adressage n'est pas supportÃ©\n"
+
+#: coff-go32.c:167 coffswap.h:812
+#, 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:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
-#: elf64-mips.c:3451 elfn32-mips.c:3276
+#: coff-mips.c:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
 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:484 coff64-rs6000.c:377
+#, c-format
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr "%pB: swap_aux_in non supportÃ© pour la classe de stockage %#x"
+
+#: coff-rs6000.c:571 coff64-rs6000.c:497
+#, c-format
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr "%pB: swap_aux_out non supportÃ© pour la classe de stockage %#x"
+
+#: coff-rs6000.c:3127
 #, 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:3251 coff64-rs6000.c:848
+#, c-format
+msgid "Unable to find the stub entry targeting %s"
+msgstr "Impossible de trouver une entrÃ©e d'Ã©bauche ciblant %s"
+
+#: coff-rs6000.c:3366
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr "%pB: rÃ©adressage TLS Ã  0x%<PRIx64> sur le symbole non-TLS %s (0x%x)\n"
+
+#: coff-rs6000.c:3379
+#, c-format
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr "%pB: rÃ©adressage TLS local Ã  0x%<PRIx64> sur le symbole importÃ© %s\n"
+
+#: coff-rs6000.c:3785
+#, c-format
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr "%pB: rÃ©adressage (%d) Ã  0x%<PRIx64> a un mauvais r_rsize (0x%x)\n"
+
+#: coff-rs6000.c:4047 coff64-rs6000.c:2021
 #, 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:781 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:792
 #, 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:810 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:835 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:852 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:973 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:983 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:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
 #, 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:1443
 #, 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:2773 cofflink.c:2986
 #, 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-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5305
 #, 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
+#: coff-x86_64.c:147
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr "R_AMD64_IMAGEBASE avec __ImageBase est non-dÃ©fini"
+
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
 #, c-format
-msgid "unsupported relocation type %#x"
-msgstr "type de rÃ©adressage %#x non supportÃ©"
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr "%pB: C_STAT n'est pas supportÃ© par XCOFF64"
 
-#: coff-tic80.c:672 cofflink.c:3127
+#: coff64-rs6000.c:477
 #, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr "%pB: mauvaise adresse de rÃ©adressage %#<PRIx64> dans la section Â«Â %pAÂ Â»"
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr "%pB: mauvais auxtype %#x pour la classe de stockage %#x"
+
+#: coff64-rs6000.c:1598
+#, c-format
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr "%pB: rÃ©adressage (%d) Ã  (0x%<PRIx64>) a un mauvais r_rsize (0x%x)\n"
 
-#: coffcode.h:954
+#: coffcode.h:951
 #, 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:976
+#, c-format
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "%pB: attention: pas de symbole trouvÃ© pour la section Â«Â %sÂ Â»"
+
+#: coffcode.h:1148
 #, 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:1159
 #, 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
-#, c-format
-msgid "%pB: warning: no symbol for section '%s' found"
-msgstr "%pB: attention: pas de symbole trouvÃ© pour la section Â«Â %sÂ Â»"
-
 #. 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:1267
 #, 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:1337
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr "%pB (%s): fanion de section %s (%#lx) ignorÃ©"
 
-#: coffcode.h:1917
+#: coffcode.h:1945
+#, c-format
+msgid "%pB: overflow reloc count too small"
+msgstr "%pB: dÃ©bordement dÃ» au compteur de rÃ©adressage trop petit"
+
+#: coffcode.h:1954 coffcode.h:2019
 #, 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:2402
 #, 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:2681
 #, 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
-#, 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:3153
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr "%pB: trop de sections (%d)"
 
-#: coffcode.h:3489
+#: coffcode.h:3681
 #, 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:3782
 #, 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
-#, 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:4523
 #, 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:4569 coffcode.h:4583
 #, 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:4597
 #, 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:4610
 #, 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:5034
 #, 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:5174
 #, 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:5345
 #, 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
-#, 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
-#, 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
+#: coffgen.c:257 elf.c:1060
 #, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr "%pB: dÃ©compte de symbole corrompu: %#<PRIx64>"
+msgid "%pB: unable to compress section %s"
+msgstr "%pB: impossible de compresser la section %s"
 
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1666
+#: coffgen.c:267 elf.c:1070
 #, 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>"
+msgid "%pB: unable to decompress section %s"
+msgstr "%pB: impossible de dÃ©compresser la section %s"
 
-#: coffgen.c:1735
+#: coffgen.c:1795
 #, 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:2179 coffgen.c:2318 cofflink.c:2051 ecoff.c:1444 elf.c:2313
+#: elf.c:2345 pef.c:214 syms.c:789 xcofflink.c:384 xcofflink.c:5577
 msgid "<corrupt>"
 msgstr "<corrompu>"
 
-#: coffgen.c:2114
+#: coffgen.c:2208
 #, c-format
 msgid "<corrupt info> %s"
 msgstr "<info corrompue> %s"
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
-msgid "%F%P: already_linked_table: %E\n"
-msgstr "%F%P: already_linked_table: %E\n"
+#: coffgen.c:2818 elflink.c:15490 linker.c:3061
+msgid "%P: already_linked_table: %E\n"
+msgstr "%P: already_linked_table: %E\n"
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3175 elflink.c:14430
 #, 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:3252 elflink.c:14661
 msgid "warning: gc-sections option ignored"
 msgstr "attention: l'option des sections gc est ignorÃ©e"
 
-#: cofflink.c:352
+#: cofflink.c:399
 #, 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:504 elf64-ia64-vms.c:5200 elflink.c:5587
 #, 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:2379
 #, 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:2442 elflink.c:11880
 #, 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:2637
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr "%pB: Ã©limination du symbole non reprÃ©sentable Â«Â %sÂ Â» (valeur 0x%<PRIx64>)"
+
+#: cofflink.c:2755
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr "%pB: %pA: dÃ©bordement de rÃ©adressage: %#x > 0xffff"
 
-#: cofflink.c:2742
+#: cofflink.c:2763
 #, 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:3157
 #, 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:826
 #, 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:732 compress.c:749 libbfd.c:1322
 #, 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
-#, 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:438
 #, 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:702
 #, 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:710
+#, c-format
+msgid "DWARF error: section %s has no contents"
+msgstr "Erreur DWARF: la section %s n'a pas de contenu"
+
+#. PR 26946
+#: dwarf2.c:719
+#, c-format
+msgid "DWARF error: section %s is too big"
+msgstr "Erreur DWARF: la section %s est trop grande"
+
+#: dwarf2.c:754
 #, 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:1501
 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:1693
 #, 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:2050
 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:2614
 msgid "DWARF error: zero format count"
 msgstr "Erreur DWARF: dÃ©compte de format nul"
 
-#: dwarf2.c:1936
+#: dwarf2.c:2624
 #, 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:2663
 #, 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:2736
 #, 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:2763
 #, 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:2776
 #, 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:2785
 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:2801
 #, 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:2823
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr "Erreur DWARF: opÃ©rations maximum par instruction invalide"
 
-#: dwarf2.c:2174
+#: dwarf2.c:2835
 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:3012
 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:3483
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "Erreur DWARF: rÃ©cursion d'une instance abstraite dÃ©tectÃ©e"
+
+#: dwarf2.c:3517 dwarf2.c:3607
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr "Erreur DWARF: rÃ©f DIE d'instance abstraite invalide"
 
-#: dwarf2.c:2889
+#: dwarf2.c:3533
 #, 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:3585
+#, 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:3622 dwarf2.c:3938 dwarf2.c:4511
 #, 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:4211
+#, c-format
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr "Erreur DWARF: ne peut repÃ©rer la spÃ©cification de variable au dÃ©calage 0x%lx"
 
-#: dwarf2.c:3376
+#: dwarf2.c:4357 dwarf2.c:4611
+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"
+
+#: dwarf2.c:4428
 #, 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:4475
 #, 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
-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:1005
 #, 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:1301
 #, c-format
 msgid "unknown basic type %d"
 msgstr "type de base %d inconnu"
 
-#: ecoff.c:1525
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -685,7 +768,7 @@ msgstr ""
 "\n"
 "      Dernier+1 symbole: %ld"
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1566 ecoff.c:1569
 #, c-format
 msgid ""
 "\n"
@@ -694,7 +777,7 @@ msgstr ""
 "\n"
 "      Premier symbole: %ld"
 
-#: ecoff.c:1548
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -703,7 +786,7 @@ msgstr ""
 "\n"
 "      Dernier+1 symbole: %-7ld   Type:  %s"
 
-#: ecoff.c:1555
+#: ecoff.c:1592
 #, c-format
 msgid ""
 "\n"
@@ -712,7 +795,7 @@ msgstr ""
 "\n"
 "      Symbole local: %ld"
 
-#: ecoff.c:1563
+#: ecoff.c:1600
 #, c-format
 msgid ""
 "\n"
@@ -721,7 +804,7 @@ msgstr ""
 "\n"
 "      struct; Symbole Fin+1: %ld"
 
-#: ecoff.c:1568
+#: ecoff.c:1605
 #, c-format
 msgid ""
 "\n"
@@ -730,7 +813,7 @@ msgstr ""
 "\n"
 "      union; Dernier+1 symbole: %ld"
 
-#: ecoff.c:1573
+#: ecoff.c:1610
 #, c-format
 msgid ""
 "\n"
@@ -739,7 +822,7 @@ msgstr ""
 "\n"
 "      enum; Dernier+1 symbol: %ld"
 
-#: ecoff.c:1579
+#: ecoff.c:1618
 #, c-format
 msgid ""
 "\n"
@@ -748,328 +831,358 @@ msgstr ""
 "\n"
 "      Type: %s"
 
-#: elf-attrs.c:446
+#: elf-attrs.c:424 elf-attrs.c:454 elf-attrs.c:596
+msgid "error adding attribute"
+msgstr "erreur en ajoutant l'attribut"
+
+#: elf-attrs.c:513
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr "%pB: erreur: longueur de section d'attributs trop petite: %ld"
+
+#: elf-attrs.c:623
 #, 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:642
 #, c-format
-msgid "%pB: error: attribute section length too small: %<PRId64>"
-msgstr "%pB: erreur: longueur de section d'attributs trop petite: %<PRId64>"
+msgid "%pB: error: unknown attributes version '%c'(%d) - expecting 'A'\n"
+msgstr "%pB: erreur: version d'attributs Â«Â %cÂ Â» (%d) inconnue â€“ Â«Â AÂ Â» est attendu\n"
 
-#: elf-attrs.c:615
+#: elf-attrs.c:688
 #, 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:698
 #, 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Â Â»"
 
-#: elf-eh-frame.c:944
+#: elf-eh-frame.c:952
 #, c-format
 msgid "discarding zero address range FDE in %pB(%pA).\n"
 msgstr "abandon du FDE avec une plage d'adresses nulle dans %pB(%pA).\n"
 
-#: elf-eh-frame.c:1049
+#: elf-eh-frame.c:1057
 #, c-format
 msgid "error in %pB(%pA); no .eh_frame_hdr table will be created"
 msgstr "erreur dans %pB(%pA); aucune table .eh_frame_hdr ne sera crÃ©Ã©e"
 
-#: elf-eh-frame.c:1539
+#: elf-eh-frame.c:1548
 #, c-format
 msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created"
 msgstr "encodage FDE dans %pB(%pA) empÃªche la crÃ©ation de la table .eh_frame_hdr"
 
-#: elf-eh-frame.c:1546
+#: elf-eh-frame.c:1555
 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:1878
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr "%pB: %pA pas dans l'ordre"
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1892
 #, 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:1900
 #, 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:2153
 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:2323
 #, 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:2346
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr "contenu invalide dans la section %pA"
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2500
 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:2502
 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
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1713
 #, 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"
+msgid "%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: 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:2146 elf32-bfin.c:3132 elf32-cr16.c:1429
+#: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624
+#: elf32-m32r.c:2839 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1983
+#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6099
+#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5084
+#: elf32-tilepro.c:3371 elf32-v850.c:2297 elf32-visium.c:680
+#: elf32-xstormy16.c:931 elf64-bpf.c:339 elf64-mmix.c:1537 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:2150 elf32-bfin.c:3136 elf32-cr16.c:1433
+#: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2843 elf32-m68hc1x.c:1275
+#: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681 elf32-moxie.c:292
+#: elf32-msp430.c:1510 elf32-nds32.c:6103 elf32-or1k.c:1899 elf32-score.c:2728
+#: elf32-score7.c:2539 elf32-spu.c:5088 elf32-tilepro.c:3375 elf32-v850.c:2301
+#: elf32-visium.c:684 elf32-xstormy16.c:935 elf64-mmix.c:1541
+#: elfxx-mips.c:10727 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:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2847 elf32-m68hc1x.c:1279
+#: elf32-microblaze.c:1685 elf32-nds32.c:6107 elf32-score.c:2732
+#: elf32-score7.c:2543 elf32-spu.c:5092
 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:2167 elf32-bfin.c:3144 elf32-cr16.c:1441
+#: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636
+#: elf32-m32r.c:2851 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1995
+#: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518 elf32-mt.c:410
+#: elf32-nds32.c:6111 elf32-or1k.c:1907 elf32-score.c:2741 elf32-score7.c:2547
+#: elf32-spu.c:5096 elf32-tilepro.c:3383 elf32-v850.c:2321 elf32-visium.c:692
+#: elf32-xstormy16.c:943 elf64-bpf.c:352 elf64-mmix.c:1549 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "erreur interne: erreur inconnue"
 
-#: elf-m10300.c:1029
+#: elf-m10300.c:1030
 #, c-format
 msgid "%pB: unsupported transition from %s to %s"
 msgstr "%pB: transition de %s Ã  %s non supportÃ©e"
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1197
 #, 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:2093 elf32-arm.c:13476 elf32-i386.c:3545 elf32-m32r.c:2333
+#: elf32-m68k.c:3931 elf32-s390.c:3074 elf32-sh.c:3674 elf32-tilepro.c:3274
+#: elf32-xtensa.c:3022 elf64-s390.c:3391 elf64-x86-64.c:5025 elfxx-sparc.c:2924
+#: elfxx-sparc.c:3820 elfxx-tilegx.c:3667 elfnn-aarch64.c:5743
+#: elfnn-aarch64.c:7361 elfnn-kvx.c:2773
 #, 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:2155
 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:2159
 #, 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:2162
 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
-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"
+#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5627 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2691 reloc.c:8376 reloc16.c:155 elfnn-ia64.c:365
+msgid "%P: --relax and -r may not be used together\n"
+msgstr "%P: --relax et -r ne peuvent pas Ãªtre utilisÃ©s en mÃªme temps\n"
 
-#: elf-properties.c:65
+#: elf-properties.c:121
 #, c-format
 msgid "%pB: out of memory in _bfd_elf_get_property"
 msgstr "%pB: pas assez de mÃ©moire dans _bfd_elf_get_property"
 
-#: elf-properties.c:91
+#: elf-properties.c:150
 #, c-format
 msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
 msgstr "attention: %pB: taille de GNU_PROPERTY_TYPE (%ld) corrompue: %#lx"
 
-#: elf-properties.c:112
+#: elf-properties.c:171
 #, c-format
 msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
 msgstr "attention: %1$pB: datasz du type (0x%3$x) GNU_PROPERTY_TYPE (%2$ld) corrompu: 0x%4$x"
 
-#: elf-properties.c:151
+#: elf-properties.c:210
 #, c-format
 msgid "warning: %pB: corrupt stack size: 0x%x"
 msgstr "attention: %pB: taille de pille corrompue: 0x%x"
 
-#: elf-properties.c:169
+#: elf-properties.c:228
 #, c-format
 msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
 msgstr "attention: %pB: taille de Â«Â no copy on protectedÂ Â» corrompue: 0x%x"
 
-#: elf-properties.c:186
+#: elf-properties.c:243
+#, c-format
+msgid "warning: %pB: corrupt memory sealing size: 0x%x"
+msgstr "attention: %pB: taille de la mÃ©moire scellÃ©e corrompue: 0x%x"
+
+#: elf-properties.c:262
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr "erreur: %pB: <la taille de la propriÃ©tÃ© (0x%x) est corrompue: 0x%x>"
+
+#: elf-properties.c:287
 #, c-format
 msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
 msgstr "attention: %pB: type GNU_PROPERTY_TYPE (%ld) non supportÃ©: 0x%x"
 
-#: elf-properties.c:301
+#: elf-properties.c:467
 msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr "PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB (0x%v) et %pB (0x%v)\n"
 
-#: elf-properties.c:307
+#: elf-properties.c:473
 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:482 elf-properties.c:560
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr "PropriÃ©tÃ© supprimÃ©e %W Ã  fusionner %pB et %pB\n"
 
-#: elf-properties.c:320
+#: elf-properties.c:486
 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:503
 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:512
 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:554
 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"
 
+#: elf-properties.c:693 elfxx-aarch64.c:765
+msgid "%P: failed to create %s\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de %s\n"
+
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:798 elf-properties.c:800
 msgid "\n"
 msgstr "\n"
 
-#: elf-properties.c:553
+#: elf-properties.c:799
 msgid "Merging program properties\n"
 msgstr "Fusion des propriÃ©tÃ©s du programme\n"
 
+#: elf-sframe.c:201
+#, c-format
+msgid "error in %pB(%pA); unexpected SFrame section type"
+msgstr "erreur dans %pB(%pA); type de section SFrame inattendu"
+
+#: elf-sframe.c:252
+#, c-format
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr "erreur dans %pB(%pA); aucune .sframe sera crÃ©Ã©e"
+
+#: elf-sframe.c:426
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr "Des sections SFrame d'entrÃ©e avec des abi diffÃ©rentes empÃªchent la gÃ©nÃ©ration de .sframe"
+
+#: elf-sframe.c:437
+msgid "input SFrame sections with different format versions prevent .sframe generation"
+msgstr "Des sections SFrame d'entrÃ©e avec des formats de version diffÃ©rents empÃªchent la gÃ©nÃ©ration de .sframe"
+
+#: elf-sframe.c:450
+msgid "SFrame sections with unexpected data encoding prevent .sframe generation"
+msgstr "Des sections SFrame avec des encodages de donnÃ©es inattendus empÃªchent la gÃ©nÃ©ration de .sframe"
+
+#: elf.c:299
+#, c-format
+msgid "%pB: string table [%u] is corrupt"
+msgstr "%pB: la table des chaÃ®nes [%u] est corrompue"
+
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:328
 #, 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:353
 #, 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:512 elf32-arm.c:17779 elfnn-aarch64.c:8361 elfnn-loongarch.c:6449
+#: elfnn-riscv.c:3885
 #, 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
-#, 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:526
 #, c-format
-msgid "%pB: invalid entry in SHT_GROUP section [%u]"
-msgstr "%pB: entrÃ©e invalide dans la section SHT_GROUP [%u]"
+msgid "%pB symbol number %lu uses unsupported binding of %u"
+msgstr "%pB le numÃ©ro de symbole %lu utilise la liaison non supportÃ©e de %u"
 
-#: elf.c:747
+#: elf.c:538
 #, c-format
-msgid "%pB: no valid group sections found"
-msgstr "%pB: aucune section de groupe valable trouvÃ©e"
+msgid "%pB symbol number %lu uses unsupported type of %u"
+msgstr "%pB le numÃ©ro de symbole %lu utilise le type non supportÃ© de %u"
 
-#. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:641
 #, c-format
-msgid "%pB: group section '%pA' has no contents"
-msgstr "%pB: la section de groupe Â«Â %pAÂ Â» n'a pas de contenu"
+msgid "%pB: could not read contents of group [%u]"
+msgstr "%pB: ne peut pas lire le contenu du groupe [%u]"
 
-#: elf.c:837
+#: elf.c:672
 #, c-format
-msgid "%pB: no group info for section '%pA'"
-msgstr "%pB: aucune info de groupe pour la section Â«Â %pAÂ Â»"
+msgid "%pB: invalid entry (%#x) in group [%u]"
+msgstr "%pB: entrÃ©e (%#x) invalide dans le groupe [%u]"
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:691
 #, 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Â Â»"
+msgid "%pB: unexpected type (%#x) section `%s' in group [%u]"
+msgstr "%pB: type (%#x) dans la section Â«Â %sÂ Â» inattendu dans le groupe [%u]"
 
-#: elf.c:888
+#: elf.c:767
 #, 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
-#, 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:796
 #, 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:1078
 #, c-format
-msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
-msgstr "%pB: type [%#x] de section Â«Â %sÂ Â» inconnu dans le groupe [%pA]"
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr "%pB: la section %s est compressÃ©e avec zstd mais BFD n'est pas compilÃ© avec le support de zstd"
 
-#: elf.c:1408
+#: elf.c:1264
 #, 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:1280
 #, 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:1307
 #, 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:1484
 #, c-format
 msgid ""
 "\n"
@@ -1078,7 +1191,7 @@ msgstr ""
 "\n"
 "En-tÃªte de programme:\n"
 
-#: elf.c:1665
+#: elf.c:1526
 #, c-format
 msgid ""
 "\n"
@@ -1087,7 +1200,7 @@ msgstr ""
 "\n"
 "Section dynamique:\n"
 
-#: elf.c:1806
+#: elf.c:1665
 #, c-format
 msgid ""
 "\n"
@@ -1096,7 +1209,7 @@ msgstr ""
 "\n"
 "DÃ©finitions des versions:\n"
 
-#: elf.c:1831
+#: elf.c:1690
 #, c-format
 msgid ""
 "\n"
@@ -1105,262 +1218,421 @@ msgstr ""
 "\n"
 "RÃ©fÃ©rences de version:\n"
 
-#: elf.c:1836
+#: elf.c:1695
 #, c-format
 msgid "  required from %s:\n"
 msgstr " requis par %s:\n"
 
-#: elf.c:2037
+#: elf.c:1944
+#, c-format
+msgid "%pB: DT_STRTAB table is corrupt"
+msgstr "%pB: la table DT_STRTAB est corrompue"
+
+#: elf.c:2451
 #, 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:2559
 #, 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:2644
 #, 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:2763
 #, 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:2820
+#, 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:2905 elf.c:2919 elf.c:2930 elf.c:2943
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr "%pB: type [%#x] inconnu dans la section Â«Â %sÂ Â»"
 
-#: elf.c:3248
+#: elf.c:3614
 #, 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:3649
 #, 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:3981
+#, c-format
+msgid "%pB: corrupted group section: `%pA'"
+msgstr "%pB: section de groupe corrompue: Â«Â %pAÂ Â»"
+
+#: elf.c:4156
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr "%pB: trop de sections: %u"
 
-#: elf.c:3839
+#: elf.c:4242
 #, 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:4260
 #, 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:4860
 #, 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:5043
+msgid "%P: failed to size relative relocations\n"
+msgstr "%P: Ã©chec lors du dimensionnement des rÃ©adressages relatifs\n"
 
-#: elf.c:5013
+#: elf.c:5470
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr "%pB: Les sections TLS ne sont pas adjacentes:"
 
-#: elf.c:5020
+#: elf.c:5477
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr "\t    TLS: %pA"
 
-#: elf.c:5024
+#: elf.c:5481
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr "\tnon-TLS: %pA"
 
-#: elf.c:5538
+#: elf.c:6103
 #, 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:6129
 #, 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:6256
 #, 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:6397
+#, 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:6437
 #, 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"
+msgid "%pB: section `%pA' can't be allocated in segment %u"
+msgstr "%pB: la section Â«Â %pAÂ Â» ne peut pas Ãªtre allouÃ©e dans le segment %u"
 
-#: elf.c:5839
+#: elf.c:6575
 #, 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:6710
+#, c-format
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr "%pB: attention: impossible d'allouer une quelconque section dans le segment PT_GNU_RELRO"
+
+#: elf.c:6741
 #, 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
+#: elf.c:6894
 #, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr "%pB: erreur: segment PHDR non couvert par le segment LOAD"
+msgid "error: %pB has a TLS segment with execute permission"
+msgstr "erreur: %pB a un segment TLS avec la permission d'exÃ©cution"
+
+#: elf.c:6900
+#, c-format
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr "attention: %pB a un segment TLS avec la permission d'exÃ©cution"
 
-#: elf.c:6606
+#: elf.c:6915
+#, c-format
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr "erreur: %pB a un segment LOAD avec les permissions RWX"
+
+#: elf.c:6921
+#, c-format
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr "attention: %pB a un segment LOAD avec les permissions RWX"
+
+#: elf.c:7316
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr "%pB: symbole Â«Â %sÂ Â» requis mais absent"
 
-#: elf.c:6949
+#: elf.c:7693
 #, 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:8366
 #, 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:8848
+#, 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:8878
 #, 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:9311
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr "%pB: entrÃ©e .gnu.version_r invalide"
 
-#: elf.c:8548
+#: elf.c:9489
 #, 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:9992
+#, 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:10004
+#, 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:10119 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7666
+#: elf32-ppc.c:8854 elf64-ppc.c:16870
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: %s pas supportÃ©"
+
+#: elf.c:10966
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr "%pB: attention: le win32pstatus %s, d'une taille de %lu octets, est trop petit"
+
+#: elf.c:11045
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr "%pB: le win32pstatus NOTE_INFO_MODULE, d'une taille de %lu, est trop petit pour contenir un nom d'une taille de %u"
+
+#: elf.c:13726
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr "la section GNU_MBIND est uniquement supportÃ©e pour les cibles GNU et FreeBSD"
+
+#: elf.c:13729
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr "le type symbolique STT_GNU_IFUNC est uniquement supportÃ© pour les cibles GNU et FreeBSD"
+
+#: elf.c:13732
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr "la liaison symbolique STB_GNU_UNIQUE est uniquement supportÃ©e pour les cibles GNU et FreeBSD"
+
+#: elf.c:13735
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr "la section GNU_RETAIN est uniquement supportÃ©e pour les cibles GNU et FreeBSD"
+
+#: elf.c:13952
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr "%pB(%pA): rÃ©adressage %zu a un index de symbole %lu invalide"
+
+#: elf.c:14027
+#, 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:14041
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): l'index de la section d'information est invalide"
+
+#: elf.c:14055
+#, 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:14131
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): erreur: la section de rÃ©adressage secondaire est compressÃ©e deux fois"
+
+#: elf.c:14143
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr "%pB(%pA): erreur: la section de rÃ©adressage secondaire a des entrÃ©es de taille nulle"
+
+#: elf.c:14155
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr "%pB(%pA): erreur: la section de rÃ©adressage secondaire a des entrÃ©es d'une taille non standard"
+
+#: elf.c:14169
+#, 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:14193
+#, 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:14213
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr "%pB:%pA: erreur: l'entrÃ©e %zu de la table de rÃ©adressage est vide"
+
+#: elf.c:14238
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr "%pB(%pA): erreur: le rÃ©adressage secondaire %zu fait rÃ©fÃ©rence Ã  un symbole manquant"
+
+#: elf.c:14256
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr "%pB(%pA): erreur: le rÃ©adressage secondaire %zu fait rÃ©fÃ©rence Ã  un symbole supprimÃ©"
+
+#: elf.c:14270
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+msgstr "%pB(%pA): erreur: le rÃ©adressage secondaire %zu est d'un type inconnu"
+
+#. 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-arc.c:454 elf32-arm.c:15198 elf32-frv.c:6618 elf32-iq2000.c:868
+#: elf32-m32c.c:915 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5531 elfnn-aarch64.c:7591
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "fanions privÃ©s = 0x%lx:"
 
-#: elf32-arc.c:627
+#: elf32-arc.c:641
 #, 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:660
 #, 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:697
 #, 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:721
 #, 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:761
 #, 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:789
 #, 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:816
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr "erreur: %pB: attributs %s conflictuels"
 
-#: elf32-arc.c:907
+#: elf32-arc.c:921
 #, 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:937 elf32-iq2000.c:844 elf32-m32c.c:890 elf32-m68hc1x.c:1390
+#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15766
 #, 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:1026
 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:1032
 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:1158
 #, 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:1169
 #, 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:1897
 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:1921 elf32-rx.c:1486
 #, 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:1926 elf32-rx.c:1491
 #, 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:1931 elf32-rx.c:1496
 #, 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:1936 elf32-rx.c:1501
 #, 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:1941 elf32-rx.c:1506
 #, 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:2035 elf32-arc.c:2103 elf32-arm.c:15641 elf32-metag.c:2250
+#: elf32-nds32.c:5549 elfnn-aarch64.c:7998 elfnn-riscv.c:915
 #, 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:2922
 #, 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:2930
 #, c-format
 msgid "warning: %pB: unknown ARC object attribute %d"
 msgstr "attention: %pB: attribut d'objet ARC %d inconnu"
@@ -1368,665 +1640,709 @@ 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:4367 elf32-arm.c:4401 elf32-arm.c:4420 elf32-arm.c:4472
 #, 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:4432 elf32-arm.c:4486 elf32-arm.c:9185 elf32-arm.c:9275
 #, 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:4612
+#, 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:4781
 #, 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:4856 elf32-arm.c:7005 elf32-csky.c:3387 elf32-hppa.c:581
+#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14180
+#: elfnn-aarch64.c:3200 elfnn-kvx.c:894
 #, 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:5077 elf32-csky.c:3729 elf32-hppa.c:731 elf32-hppa.c:760
+#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3346
+#: elf64-ppc.c:12297 elf64-ppc.c:12305 xcofflink.c:4723 elfnn-aarch64.c:3272
+msgid "%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: Impossible d'assigner Â«Â %pAÂ Â» Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.\n"
+
+#: elf32-arm.c:6048
 #, 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:6057
 #, 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:6096
 #, 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:6102
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr "%pB: symbole standard Â«Â %sÂ Â» absent"
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6114
 #, 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:6126
 #, 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:6133
 #, 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:6262
 #, 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:6311
 #, 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:6333
 #, 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:6357
 #, 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:6372
 #, 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:6381
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr "%pB: taille incorrecte pour le symbole Â«Â %sÂ Â»"
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6400
 #, 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:6420
 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:6428
 #, 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:7140 elf32-arm.c:7178
 #, 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:7890
 #, 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:8118
 #, 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:8145
 #, 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:8681 elf32-arm.c:8701 elf32-arm.c:8768 elf32-arm.c:8787
 #, 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:8994
 #, 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:9092
 #, 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:9861
 #, 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:10170 elf32-arm.c:10212
 #, 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:10493
+#, c-format
+msgid "warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "attention: %pB(%s): Branche forcÃ©e Ã  un symbole absolu en mode Thumb (CPU Thumb-only) dans %pB"
+
+#: elf32-arm.c:10498
+#, c-format
+msgid "warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "attention: (%s): Branche forcÃ©e Ã  un symbole absolu en mode Thumb (CPU Thumb-only) dans %pB"
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "%pB(%s): Type de destination (ARM/Thumb) inconnu dans %pB"
+
+#: elf32-arm.c:10531
+#, c-format
+msgid "(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "(%s): Type de destination inconnu (ARM/Thumb) dans %pB"
+
+#: elf32-arm.c:10619
 msgid "shared object"
 msgstr "objet partagÃ©"
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10622
 msgid "PIE executable"
 msgstr "exÃ©cutable PIE"
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10625
 #, 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:10727
+#, 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:11144
 #, 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:11778
+#, c-format
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr "%pB: index de symbole attendu dans la plage 0..%lu mais un symbole local avec l'index %lu a Ã©tÃ© rencontrÃ©"
+
+#: elf32-arm.c:12053 elf32-arm.c:12079
 #, 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:12125 elf32-csky.c:4958 elf32-m68k.c:3735 elf32-metag.c:1912
 #, 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:12339
 #, 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:12380 elf32-arm.c:12472 elf32-arm.c:12560 elf32-arm.c:12650
 #, 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:12708 elf32-arm.c:12867
+msgid "local symbol index too big"
+msgstr "index de symbole local trop long"
+
+#: elf32-arm.c:12718 elf32-arm.c:12752
+msgid "no dynamic index information available"
+msgstr "pas d'information d'index dynamique disponible"
+
+#: elf32-arm.c:12760
+msgid "invalid dynamic index"
+msgstr "index dynamique invalide"
+
+#: elf32-arm.c:12877
+msgid "dynamic index information not available"
+msgstr "information d'index dynamique pas disponible"
+
+#: elf32-arm.c:13308 elf32-sh.c:3568
 #, 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:13421 elf32-m68k.c:3968 elf32-xtensa.c:2760 elfnn-aarch64.c:7088
+#: elfnn-kvx.c:2569
 #, 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:13423 elf32-m68k.c:3970 elf32-xtensa.c:2762 elfnn-aarch64.c:7090
+#: elfnn-kvx.c:2571
 #, 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:13506 elf32-tic6x.c:2641 elfnn-aarch64.c:7425 elfnn-kvx.c:2798
 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:13510 elf32-pru.c:936 elf32-tic6x.c:2645 elfnn-aarch64.c:7429
+#: elfnn-kvx.c:2802
 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:13518 elf32-pru.c:946 elf32-tic6x.c:2653 elfnn-aarch64.c:7437
+#: elfnn-kvx.c:2810
 msgid "unknown error"
 msgstr "erreur inconnue"
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13995
 #, 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:13999
 #, 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:14044
 #, 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:14131
 #, 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:14139
 #, 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:14474
 #, 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:14512
 #, c-format
-msgid "error: %pB: conflicting CPU architectures %d/%d"
-msgstr "erreur: %pB: architectures CPU conflictuelles %d/%d"
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
+msgstr "erreur: architectures CPU conflictuelles %s par rapport Ã  %s dans %pB"
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14609
 #, 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:14646
 #, 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:14816
 #, 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:14842
 #, 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:14981
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr "attention: %pB: configuration de plateforme conflictuelle"
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14990
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr "erreur: %pB: utilisation conflictuelle de R9"
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:15002
 #, 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:15015
 #, 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:15046
 #, 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:15058
 #, 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:15075
 #, 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:15111
 #, 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Ã©"
 
-#. 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: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
-#, c-format
-msgid "private flags = %lx:"
-msgstr "fanions privÃ©s = %lx"
-
-#: elf32-arm.c:14888
+#: elf32-arm.c:15207
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [inter-rÃ©seautage autorisÃ©]"
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15215
 #, c-format
 msgid " [VFP float format]"
 msgstr " [format flottant VFP]"
 
-#: elf32-arm.c:14898
-#, c-format
-msgid " [Maverick float format]"
-msgstr " [format flottant Maverick]"
-
-#: elf32-arm.c:14900
+#: elf32-arm.c:15217
 #, c-format
 msgid " [FPA float format]"
 msgstr " [format flottant FPA]"
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15220
 #, 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:15223 elf32-arm.c:15308
 #, c-format
 msgid " [position independent]"
 msgstr " [position indÃ©pendante]"
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15226
 #, c-format
 msgid " [new ABI]"
 msgstr " [nouvel ABI]"
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15229
 #, c-format
 msgid " [old ABI]"
 msgstr " [ancien ABI]"
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15232
 #, c-format
 msgid " [software FP]"
 msgstr " [virgule flottante logiciel]"
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15240
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Version1 EABI]"
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15243 elf32-arm.c:15254
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [table des symboles triÃ©s]"
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15245 elf32-arm.c:15256
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [table des symboles non triÃ©s]"
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15251
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Version2 EABI]"
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15259
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [symboles dynamiques utilisent un index de segment]"
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15262
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [mapping de symboles prÃ©cÃ¨des les autres]"
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15269
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Version3 EABI]"
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15273
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Version4 EABI]"
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15277
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Version5 EABI]"
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15280
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [soft-float ABI]"
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15283
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [hard-float ABI]"
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15289
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15292
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15298
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <Version EABI non reconnue>"
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15305
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [exÃ©cutables relocalisÃ©s]"
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15311
 #, 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:15316 elfnn-aarch64.c:7594
 #, c-format
-msgid "<Unrecognised flag bits set>"
-msgstr "<Bits de fanions non reconnus>"
+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:15424 elf32-arm.c:15558 elf32-i386.c:1576 elf32-s390.c:921
+#: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 elf64-s390.c:924
+#: elf64-x86-64.c:2550 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 elfxx-x86.c:962
+#: elfnn-aarch64.c:7865 elfnn-kvx.c:3248 elfnn-loongarch.c:961
+#: elfnn-riscv.c:959
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr "%pB: symbole index erronÃ©: %d"
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15814
 #, 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:17077
 #, 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:17448 elflink.c:13605 elflink.c:13652
 #, c-format
 msgid "could not find section %s"
 msgstr "ne peut repÃ©rer la section %s"
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18406
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr "%pB: Le nombre de symboles dans le fichier d'entrÃ©e a augmentÃ© de %lu Ã  %u\n"
+
+#: elf32-arm.c:18664
 #, 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:18691
 #, 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:19518 elf32-arm.c:19540
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr "%pB: erreur: vernis VFP11 hors limite"
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19591
 #, 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:19630
 #, 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:20713
 #, 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:20790
 #, 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:20805
 #, 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:20815
 #, 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:20819
 #, 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:20829 elf32-arm.c:20833
 #, 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
-#, 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:20852
 #, 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:20856
 #, 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:20870
 #, 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:20876
 #, 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
-msgid "internal error: dangerous relocation"
-msgstr "erreur interne: rÃ©adressage dangereux"
+#: elf32-avr.c:1503
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr "%X%H: %s vers Â«Â %sÂ Â»: erreur: le rÃ©adressage s'applique en dehors de la section\n"
+
+#: elf32-avr.c:1511
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr "%X%H: %s vers Â«Â %sÂ Â»: erreur: l'adresse cible du rÃ©adressage est impaire\n"
+
+#: elf32-avr.c:1519
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr "%X%H: %s envers Â«Â %sÂ Â»Â : erreur interne: rÃ©sultat de rÃ©adressage %d inattendu\n"
 
-#: elf32-avr.c:3327
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3335 elfnn-aarch64.c:3231
 #, 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:364
 msgid "relocation should be even number"
 msgstr "le rÃ©adressage devrait Ãªtre un nombre paire"
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1589
 #, 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:1621 elf32-i386.c:3585 elf32-m68k.c:4008 elf32-s390.c:3132
+#: elf64-s390.c:3468 elf64-x86-64.c:5080
 #, 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:2646
 #, 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:2663
 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:2761
 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:2801 elf32-bfin.c:2922
 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:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4386
 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:2881
 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:3044
 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:3045
 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:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3379
+#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:939 elf64-bpf.c:348
+#: elf64-mmix.c:1545 elfxx-tilegx.c:3752
+msgid "internal error: dangerous relocation"
+msgstr "erreur interne: rÃ©adressage dangereux"
+
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4734 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1264
+#: elf32-score.c:3986 elf32-score7.c:3793 elf32-vax.c:534 elf32-xgate.c:494
+#: elfxx-mips.c:16452
+#, c-format
+msgid "private flags = %lx:"
+msgstr "fanions privÃ©s = %lx"
+
+#: elf32-bfin.c:4785 elf32-frv.c:6591
 #, 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:4789 elf32-frv.c:6595
 #, 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:4925
 #, 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:5335 elf32-cr16.c:2723 elf32-m68k.c:4423
 msgid "unsupported relocation type"
 msgstr "type de rÃ©adressage non supportÃ©"
 
@@ -2046,16 +2362,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:2552
 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:2536
 #, 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:2545
 #, 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Â Â»"
@@ -2094,12 +2410,12 @@ msgstr "(trop de variables globales pour
 msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)"
 msgstr "(donnÃ©e locale au thread trop grande pour -fpic or -msmall-tls: recompilez avec -fPIC ou -mno-small-tls)"
 
-#: elf32-cris.c:3050
+#: elf32-cris.c:3048
 #, c-format
 msgid "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
 msgstr "%pB, section %pA: l'objet compatible v10/v32 ne peut pas contenir de rÃ©adressage PIC"
 
-#: elf32-cris.c:3104
+#: elf32-cris.c:3102
 #, c-format
 msgid ""
 "%pB, section %pA:\n"
@@ -2108,76 +2424,101 @@ msgstr ""
 "%pB, section %pA:\n"
 "  rÃ©adressage de %s pas valable dans un objet partagÃ©; typiquement un mÃ©lange dans les options. Recompilez avec -fPIC"
 
-#: elf32-cris.c:3322
+#: elf32-cris.c:3320
 #, c-format
 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:3701
 #, 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:3813
 msgid "unexpected machine number"
 msgstr "numÃ©ro de machine inattendu"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3865
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [symboles sont prÃ©fixÃ©s par Â«Â  _ Â Â»]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3868
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 et v32]"
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3871
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3915
 #, 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:3916
 #, 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:3935
 #, 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:3937
 #, 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:2017
 msgid "GOT table size out of range"
 msgstr "taille de la table GOT hors limites"
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2828
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr "avertissement: eflag arch Â«Â %#lxÂ Â» non reconnu"
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2851
+#, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr "avertissement: nom d'architecture Â«Â %#xÂ Â» non reconnu"
+
+#: elf32-csky.c:2916 elf32-csky.c:3076
 #, 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:2929
 #, 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"
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr "avertissement: le fanion d'archive %2$s du fichier %1$pB est en conflit avec la cible %3$s, dÃ©finissez le fanion d'archive cible Ã  %4$s"
+
+#: elf32-csky.c:2958
+#, c-format
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr "Erreur: %pB et %pB ont des versions VDSP diffÃ©rentes"
+
+#: elf32-csky.c:2975
+#, c-format
+msgid "Error: %pB and %pB has different DSP version"
+msgstr "Erreur: %pB et %pB ont des versions DSP diffÃ©rentes"
+
+#: elf32-csky.c:2993
+#, c-format
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr "Erreur: %pB et %pB ont des ABI FPU diffÃ©rentes"
+
+#: elf32-csky.c:3090
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr "avertissement: le fanion d'archive %2$s du fichier %1$pB est en conflit avec la cible ck%3$s, utilise %4$s"
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4330 elf32-i386.c:344
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr "%pB: type de rÃ©adressage non supportÃ©: %#x"
@@ -2193,7 +2534,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:570 elf32-ip2k.c:1485
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "rÃ©adressage non supportÃ© entre les espaces d'adresses data/insn"
 
@@ -2201,96 +2542,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:6502
 #, 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:6556 elf32-iq2000.c:830 elf32-m32c.c:877
 #, 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:6569
 #, 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,277 +2641,301 @@ 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:862 elf32-hppa.c:3403
 #, 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:1240
 #, 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:2579
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr "%pB: Ã©bauche d'exportation en double %s"
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3236
 #, 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:3456
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): le dÃ©placement %#x pour insn %#x n'est pas un multiple de 8 (gp %#x)"
+
+#: elf32-hppa.c:3475
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): le dÃ©placement %#x pour insn %#x n'est pas un multiple de 4 (gp %#x)"
+
+#: elf32-hppa.c:4090
 #, 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:4108
 #, 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:4167
 #, 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:4471
 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
-#, 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:1300
 #, 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:1586
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx32> > %#<PRIx32>) for section `%pA'"
+msgstr "%pB: mauvais offset de rÃ©adressage (%#<PRIx32> > %#<PRIx32>) pour la section Â«Â %pAÂ Â»"
+
+#: elf32-i386.c:1771 elf32-s390.c:1149 elf32-sh.c:5500 elf32-tilepro.c:1546
+#: elf32-xtensa.c:1261 elf64-s390.c:1162 elfxx-sparc.c:1565 elfxx-tilegx.c:1766
+#: elfnn-loongarch.c:750 elfnn-riscv.c:866
 #, 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:1843
 #, 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:1898 elf64-x86-64.c:2964
+#, c-format
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr "%pB: rÃ©fÃ©rence non canonique Ã  la fonction protÃ©gÃ©e canonique Â«Â %sÂ Â» dans %pB"
+
+#: elf32-i386.c:2461 elf64-x86-64.c:3446 elfnn-riscv.c:2742
 #, 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:2494 elf32-i386.c:3794 elf32-i386.c:3942 elf64-x86-64.c:3503
+#: elf64-x86-64.c:5254 elf64-x86-64.c:5425 elfnn-riscv.c:2604
+#: elfnn-riscv.c:3511 elfnn-riscv.c:3585
 #, 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:2672
 #, 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:2707 elf64-x86-64.c:3726
 msgid "hidden symbol"
 msgstr "symbole cachÃ©"
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2710 elf64-x86-64.c:3729
 msgid "internal symbol"
 msgstr "symbole interne"
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2713 elf64-x86-64.c:3732
 msgid "protected symbol"
 msgstr "symbole protÃ©gÃ©"
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2716 elf64-x86-64.c:3735
 msgid "symbol"
 msgstr "symbole"
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2722
 #, 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:2735
 #, 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-i386.c:4145 elf64-x86-64.c:5645
+msgid "%P: discarded output section: `%pA'\n"
+msgstr "%P: section de sortie rejetÃ©e: Â«Â %pAÂ Â»\n"
+
+#: 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:1298
 #, 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:1317
 #, 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
 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
 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"
 
-#: elf32-m32r.c:1471
+#: elf32-m32r.c:1461
 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:2778 elf32-microblaze.c:1147 elf32-microblaze.c:1195
 #, 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:3279
 #, 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:3300 elf32-nds32.c:6906
 #, c-format
 msgid "private flags = %lx"
 msgstr "fanions privÃ©s = %lx"
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3305
 #, c-format
 msgid ": m32r instructions"
 msgstr ": instructions m32r"
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3306
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": instruction m32rx"
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3307
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": instructions m32r2"
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1135
 #, 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:1166
 #, 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:1182
 #, 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:1197
 #, 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:1233
 #, 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:1357
 #, 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:1364
 #, 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:1373
 #, 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:1418 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:1420 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:1423 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:1425 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "double de 32 bits, "
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1428
 #, c-format
 msgid "cpu=HC11]"
 msgstr "cpu=HC11]"
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1430
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "cpu=HCS12]"
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1432
 #, c-format
 msgid "cpu=HC12]"
 msgstr "cpu=HC12]"
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1435
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [memory=bank-model]"
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1437
 #, c-format
 msgid " [memory=flat]"
 msgstr " [memory=flat]"
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1440
 #, 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:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578
+#, 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:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105
 msgid "unknown"
 msgstr "inconnu"
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1730
 #, 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:1737
 #, 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"
@@ -2586,387 +2951,362 @@ msgstr "mep: pas de rÃ©adressage pour le
 msgid "MeP: howto %d has type %d"
 msgstr "MeP: le howto %d a le type %d"
 
-#: elf32-mep.c:622
+#: elf32-mep.c:618
 #, c-format
 msgid "%pB and %pB are for different cores"
 msgstr "%pB et %pB sont pour des noyaux diffÃ©rents"
 
-#: elf32-mep.c:641
+#: elf32-mep.c:637
 #, c-format
 msgid "%pB and %pB are for different configurations"
 msgstr "%pB et %pB sont pour des configurations diffÃ©rentes"
 
-#: elf32-mep.c:679
+#: elf32-mep.c:675
 #, c-format
 msgid "private flags = 0x%lx"
 msgstr "fanions privÃ©s = 0x%lx"
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1856
 #, 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:1859
 #, 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:1590 elf32-tilepro.c:3020 elfxx-sparc.c:3452
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr "%pB: probablement compilÃ© sans -fPICÂ ?"
 
-#: elf32-mips.c:1775 elf64-mips.c:3516 elfn32-mips.c:3332
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334
 msgid "literal relocation occurs for an external symbol"
 msgstr "rÃ©adressage littÃ©ral rencontrÃ© pour un symbole externe"
 
-#: elf32-mips.c:1822 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:3559
-#: elfn32-mips.c:3373
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
 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:914
+#, c-format
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "erreur: la taille finale de la valeur uleb128 Ã  l'offset 0x%lx dans %pA depuis %pB dÃ©passe l'espace disponible"
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
 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:1506
 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:2673
 #, 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:2774
 #, 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:2786
 #, 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:2799
 #, 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:2810
 #, 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:2823
 #, 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:2835
 #, 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:2860
 #, 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:3680
 #, 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:5579
 #, 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:5705
 #, 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:5746
 #, 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:5768
 #, 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:6694
 #, 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:6742
 #, 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:6756
 #, 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:6844
 #, 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:6854
 #, 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:6881
 #, 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:6912
 #, c-format
 msgid ": n1 instructions"
 msgstr ": instructions n1"
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6915
 #, c-format
 msgid ": n1h instructions"
 msgstr ": instructions n1h"
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9364
 #, 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:9628
 #, 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:12893
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr "%pB: OMIT_FP imbriquÃ©s dans %pA"
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12912
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr "%pB: OMIT_FP non appariÃ© dans %pA"
 
-#: elf32-nds32.c:13275 reloc.c:8410
-#, 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
-#, 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
-#, 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"
-
-#: elf32-nios2.c:3842
-#, 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"
-
-#: elf32-nios2.c:4495 elf32-pru.c:928
-msgid "relocation out of range"
-msgstr "rÃ©adressage hors limite"
-
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
-msgid "dangerous relocation"
-msgstr "rÃ©adressage dangereux"
-
-#: elf32-nios2.c:5378
-#, 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:1256
 #, 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:1375
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr "%pB: type de rÃ©adressage %d inconnu"
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1429
 #, 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:1542
 #, 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:1559
 #, 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:1573 elf32-or1k.c:1588 elf64-alpha.c:4412 elf64-alpha.c:4556
 #, 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:1602
 #, 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:1686
 #, 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:1865
 #, 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:2199
 #, 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:3313
 #, 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:990 elf64-ppc.c:1753
 #, 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:1627
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr "section %s corrompue dans %pB"
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1646
 #, 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:1688
 #, 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:1737
 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:1756
 msgid "failed to compute new APUinfo section"
 msgstr "Ã©chec d'Ã©valuation de la nouvelle section APUinfo"
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1759
 msgid "failed to install new APUinfo section"
 msgstr "Ã©chec d'installation de la nouvelle section APUinfo"
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2867
 #, 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:3586 elf32-ppc.c:3594
 #, 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:3616 elf32-ppc.c:3624
 #, 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:3632 elf32-ppc.c:3640
 #, 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:3707 elf32-ppc.c:3716
 #, 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:3745 elf32-ppc.c:3754
 #, 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:3818
 #, 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:3826
 #, 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:3897
 #, 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:3916
 #, 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:4026
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr "bss-plt forcÃ© Ã  cause de %pB"
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4028
 msgid "bss-plt forced by profiling"
 msgstr "bss-plt forcÃ© par le profilage"
 
+#: elf32-ppc.c:4606 elf64-ppc.c:8517
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr "%H: attention: %s insn %#x inattendue.\n"
+
 #. 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:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4636 elf64-ppc.c:8582
 #, 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:5565 elf32-sh.c:3019 elf32-tilepro.c:2246 elfxx-sparc.c:2464
+#: elfxx-tilegx.c:2495
 #, 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:6512
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr "%pB: Ajustement du branchement Ã  0x%V vers Â«Â %sÂ Â» dans la section %s\n"
+
+#: elf32-ppc.c:7454
 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:7492
 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:7532 elf32-ppc.c:7570
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr "%pB(%pA+%#<PRIx64>): erreur: %s avec l'instruction inattendue %#x"
@@ -2976,11 +3316,12 @@ msgstr "%pB(%pA+%#<PRIx64>): erreur: %s
 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
-msgid "%H: warning: %s unexpected insn %#x.\n"
-msgstr "%H: attention: %s insn %#x inattendue.\n"
+#: elf32-ppc.c:7670
+#, c-format
+msgid "%pB: reloc %#x unsupported"
+msgstr "%pB: rÃ©adressage %#x pas supportÃ©"
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7953
 #, 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,111 +3334,126 @@ 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:7985
 #, 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:8163
 #, 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:8501 elf32-ppc.c:8532 elf32-ppc.c:8635 elf32-ppc.c:8735
 #, 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:8913 elf32-ppc.c:8934
+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:9016
 #, 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:9045
 #, 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:9127
 #, 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:10009
 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:10013 elf64-ppc.c:18330
 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:10058
 #, 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:1477
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr "erreur: %pB: ancien fichier objet incompatible dÃ©tectÃ©"
 
-#: elf32-rl78.c:372
-msgid "internal error: RL78 reloc stack overflow"
-msgstr "erreur interne: dÃ©bordement de la pile de rÃ©adressages RL78"
-
-#: elf32-rl78.c:383
-msgid "internal error: RL78 reloc stack underflow"
-msgstr "erreur interne: dÃ©bordement par le bas de la pile de rÃ©adressages RL78"
+#: elf32-pru.c:931
+msgid "relocation out of range"
+msgstr "rÃ©adressage hors limite"
+
+#: elf32-pru.c:941 elf32-tic6x.c:2649
+msgid "dangerous relocation"
+msgstr "rÃ©adressage dangereux"
 
-#: elf32-rl78.c:1053
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
+msgstr "dÃ©bordement (par le bas ou le haut) de la pile de rÃ©adressages RL78"
+
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
+msgstr "division par zÃ©ro dans le rÃ©adressage RL78"
+
+#: elf32-rl78.c:1069
 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
-#, c-format
-msgid "%pB(%pA): error: call to undefined function '%s'"
-msgstr "%pB(%pA): erreur: appel Ã  la fonction non dÃ©finie Â«Â %sÂ Â»"
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr "%H: %s hors limite\n"
+
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
+msgstr "%H: le type de rÃ©adressage %u n'est pas supportÃ©\n"
+
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr "%H: le rÃ©adressage %s retourne une valeur %x non reconnue\n"
 
-#: elf32-rl78.c:1205
+#: elf32-rl78.c:1220
 #, c-format
 msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
 msgstr "conflit ABI RL78: le fichier G10 %pB ne peut pas Ãªtre liÃ© avec %s fichier %pB"
 
 # les deux %s sont des noms de processeurs
-#: elf32-rl78.c:1222
+#: elf32-rl78.c:1237
 #, c-format
 msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
 msgstr "conflit d'ABI RL78: ne peut lier le fichier %2$pB pour %1$s avec le fichier %4$pB pour %3$s"
 
-#: elf32-rl78.c:1231
+#: elf32-rl78.c:1246
 msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
 msgstr "conflit de fusion RL78: ne peut lier ensemble un objet 32 bits et un objet 64 bits"
 
-#: elf32-rl78.c:1235 elf32-rl78.c:1239
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
 #, c-format
 msgid "- %pB is 64-bit, %pB is not"
 msgstr "- %pB est 64 bits, %pB ne l'est pas"
 
-#: elf32-rl78.c:1266
+#: elf32-rl78.c:1281
 #, c-format
 msgid " [64-bit doubles]"
 msgstr " [doubles de 64 bits]"
 
-#: elf32-rx.c:605
+#: elf32-rx.c:618
 #, 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:625
 #, 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:700
 #, 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,74 +3462,84 @@ 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:720
 #, 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:1304
 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:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr "%pB(%pA): erreur: appel Ã  la fonction non dÃ©finie Â«Â %sÂ Â»"
+
+#: elf32-rx.c:3185
 #, 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:3188
 #, 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:3190
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  les fanions du fichier de sortie: %s"
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3797
 #, 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:3805
 #, 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:2007 elf64-s390.c:2242
 #, 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:1505 elf32-score7.c:1368 elfxx-mips.c:3914
 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:2737
 msgid "address not word aligned"
 msgstr "adresse pas alignÃ©e sur un mot"
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2818 elf32-score7.c:2625
 #, 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:2872 elf32-score7.c:2679
 #, 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"
 
-#: elf32-score.c:4003 elf32-score7.c:3808
+#: elf32-score.c:3483 elf32-score7.c:3294 elfxx-mips.c:11260
+#, c-format
+msgid "%pB: cannot handle more than %d dynamic symbols"
+msgstr "%pB: impossible de gÃ©rer plus de %d symboles dynamiques"
+
+#: elf32-score.c:3989 elf32-score7.c:3796
 #, c-format
 msgid " [pic]"
 msgstr " [pic]"
 
-#: elf32-score.c:4007 elf32-score7.c:3812
+#: elf32-score.c:3993 elf32-score7.c:3800
 #, c-format
 msgid " [fix dep]"
 msgstr " [fix dep]"
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4040 elf32-score7.c:3847
 #, 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 +3549,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:3755
 #, 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:3785 elf32-sh.c:3801
 #, 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:3817
 #, 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:3833
 #, 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:3963 elf32-sh.c:4358
 #, 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:4461
 #, 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:4580
 #, 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:4598
 #, 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:4606
 #, 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:4613
 #, 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:4620
 #, 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:4627
 #, 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:4634
 #, 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:4669
 #, 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:4687
 #, 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:4696
 #, 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:4703
 #, 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:4818
 #, 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:4886
 #, 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:5014
 #, 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"
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
+msgstr "%X%H: le rÃ©adressage vers Â«Â %sÂ Â» fait rÃ©fÃ©rence Ã  un segment diffÃ©rent\n"
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5021
 #, 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"
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
+msgstr "%H: 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:5489 elf32-sh.c:5571
 #, 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:5495 elf32-sh.c:5576
 #, 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:5526
 #, 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:5733 elf64-alpha.c:4648
 #, 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:5848
 #, 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:5860
 #, 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:5901
 #, 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:5914
 #, 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,29 +3706,34 @@ 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:734
 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:742
 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:762
 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:803
 #, 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:1029
 #, 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:1379
 #, 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"
@@ -3386,30 +3753,30 @@ msgstr "vous ne pouvez pas dÃ©finir %s d
 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:15372
 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:2575
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "attention: %s recouvre %s\n"
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2591
 #, 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:2623
 #, 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:2764
 #, 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"
@@ -3423,33 +3790,33 @@ msgstr "l'analyse de la pile ignorera l'
 msgid "  calls:\n"
 msgstr "  appels:\n"
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4342
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s dupliquÃ© dans %s\n"
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4346
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s dupliquÃ©\n"
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4353
 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:4395
 #, 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:4551
 #, 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
-msgid "%F%P: auto overlay error: %E\n"
-msgstr "%F%P: erreur d'auto recouvrement: %E\n"
+#: elf32-spu.c:4692
+msgid "%P: auto overlay error: %E\n"
+msgstr "%P: erreur d'auto recouvrement: %E\n"
 
 #: elf32-spu.c:4712
 msgid "Stack size for call graph root nodes.\n"
@@ -3472,329 +3839,329 @@ msgid "%X%P: stack/lrlive analysis error
 msgstr "%X%P: erreur d'analyse de pile/lrlive: %E\n"
 
 #: elf32-spu.c:4745
-msgid "%F%P: can not build overlay stubs: %E\n"
-msgstr "%F%P: ne peut construire les Ã©bauches de recouvrement: %E\n"
+msgid "%P: can not build overlay stubs: %E\n"
+msgstr "%P: ne peut construire les Ã©bauches de recouvrement: %E\n"
 
 #: elf32-spu.c:4814
 msgid "fatal error while creating .fixup"
 msgstr "erreur fatale lors de la crÃ©ation de .fixup"
 
-#: elf32-spu.c:5049
+#: elf32-spu.c:5050
 #, c-format
 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:1587
 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:1592
 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:2426
 #, 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:3492
 #, 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:3501
 #, 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:3619 elf32-tic6x.c:3628
 #, 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:3638 elf32-tic6x.c:3647
 #, 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:3656 elf32-tic6x.c:3665
 #, 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:3674 elf32-tic6x.c:3682
 #, 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:3705
 #, 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:3724
 #, 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:3626 elfxx-tilegx.c:4019 elfxx-x86.c:2762
+#: elfnn-aarch64.c:10375 elfnn-kvx.c:4631 elfnn-loongarch.c:6379
+#: elfnn-riscv.c:3801
 #, 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:466
 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:2309
 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:2313
 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:2317
 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:2539
 #, 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:2555
 #, 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:2570
 #, 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:2602
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr " alignement d'entitÃ©s de 8 octets:"
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2605
 #, c-format
 msgid "4-byte"
 msgstr "4 octets"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2606
 #, c-format
 msgid "8-byte"
 msgstr "8 octets"
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2607 elf32-v850.c:2619
 #, 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:2608 elf32-v850.c:2620 elf32-v850.c:2632 elf32-v850.c:2643
+#: elf32-v850.c:2654 elf32-v850.c:2665
 #, c-format
 msgid "unknown: %x"
 msgstr "inconnu: %x"
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2614
 #, c-format
 msgid " size of doubles: "
 msgstr " taille des doubles: "
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2617
 #, c-format
 msgid "4-bytes"
 msgstr "4 octets"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2618
 #, c-format
 msgid "8-bytes"
 msgstr "8 octets"
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2626
 #, c-format
 msgid " FPU support required: "
 msgstr " support du FPU requis: "
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2629
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2630
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2631
 #, c-format
 msgid "none"
 msgstr "aucun"
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2638
 #, c-format
 msgid "SIMD use: "
 msgstr "utilisation SIMD: "
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663
 #, c-format
 msgid "yes"
 msgstr "oui"
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2642 elf32-v850.c:2653 elf32-v850.c:2664
 #, c-format
 msgid "no"
 msgstr "non"
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2649
 #, c-format
 msgid "CACHE use: "
 msgstr "utilisation CACHE: "
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2660
 #, c-format
 msgid "MMU use: "
 msgstr "utilisation MMU: "
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2827 elf32-v850.c:2883
 #, 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:2901
 #, c-format
 msgid "private flags = %lx: "
 msgstr "fanions privÃ©s = %lx: "
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2906
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "architecture v850 inconnue"
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2908
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "architecture v850 E3"
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2910 elf32-v850.c:2917
 #, c-format
 msgid "v850 architecture"
 msgstr "architecture v850"
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2918
 #, c-format
 msgid "v850e architecture"
 msgstr "architecture v850e"
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2919
 #, c-format
 msgid "v850e1 architecture"
 msgstr "architecture v850e1"
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2920
 #, c-format
 msgid "v850e2 architecture"
 msgstr "architecture v850e2"
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2921
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "architecture v850e2v3"
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2922
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "architecture v850e3v5"
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3596 elf32-v850.c:3835
 #, 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:3606 elf32-v850.c:3845
 #, 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:3652 elf32-v850.c:3880
 #, 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:3692
 #, 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>"
 
-#: elf32-vax.c:540
+#: elf32-vax.c:537
 #, c-format
 msgid " [nonpic]"
 msgstr " [nonpic]"
 
-#: elf32-vax.c:543
+#: elf32-vax.c:540
 #, c-format
 msgid " [d-float]"
 msgstr " [d-float]"
 
-#: elf32-vax.c:546
+#: elf32-vax.c:543
 #, c-format
 msgid " [g-float]"
 msgstr " [g-float]"
 
-#: elf32-vax.c:632
+#: elf32-vax.c:629
 #, c-format
 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,251 +4176,280 @@ 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:2077 elfnn-ia64.c:2345
 msgid "non-zero addend in @fptr reloc"
 msgstr "ajout non nul dans le rÃ©adressage @fptr"
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:996
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr "%pB(%pA): table de propriÃ©tÃ© invalide"
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2732
 #, 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:2815 elf32-xtensa.c:2938
 msgid "dynamic relocation in read-only section"
 msgstr "rÃ©adressage dynamique dans une section en lecture seule"
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2915
 msgid "TLS relocation invalid without dynamic sections"
 msgstr "rÃ©adressage TLS incorrecte sans section dynamique"
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3128
 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:3434
 #, 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:4733 elf32-xtensa.c:4741
 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:6569 elf32-xtensa.c:6648 elf32-xtensa.c:8074
 #, 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:7815
 #, 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:9673
 msgid "invalid relocation address"
 msgstr "adresse de rÃ©adressage incorrecte"
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9764
 msgid "overflow after relaxation"
 msgstr "dÃ©bordement aprÃ¨s la relÃ¢che"
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10910
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr "%pB(%pA+%#<PRIx64>): correction inattendue pour le rÃ©adressage %s"
 
+#: 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:472
 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:1983
+#, c-format
+msgid "%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr "%pB: rÃ©adressage dynamique sur un symbole local dans la section en lecture seule Â«Â %pAÂ Â»\n"
+
+#: elf64-alpha.c:2435
 #, 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:2679 elflink.c:15752 elfnn-kvx.c:4016 elfnn-loongarch.c:2016
+#, 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:2977 elf64-alpha.c:3172
 #, 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:4372 elf64-alpha.c:4385
 #, 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:4441
 #, 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:4466 mach-o.c:627 elfnn-loongarch.c:917 elfnn-riscv.c:917
+#: elfnn-riscv.c:1122 elfnn-riscv.c:1164
 msgid "<unknown>"
 msgstr "<inconnu>"
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4472
 #, 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:4530
 #, 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:4565
 #, 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:4631
 #, 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:4656
 #, 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:344
+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:2037
 #, 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:3241
 #, 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:600 elfnn-ia64.c:641
 #, 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:2032 elfnn-ia64.c:2293
 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:3280 elfnn-ia64.c:3673
 #, 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:3290 elfnn-ia64.c:3683
 #, 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:3560 elfnn-ia64.c:3956
 #, 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:3624 elfnn-ia64.c:4024
 #, 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:3683 elfnn-ia64.c:4087
 #, 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:3785 elfnn-ia64.c:4225
 #, 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:3788 elfnn-ia64.c:4228
 #, 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:3791 elfnn-ia64.c:4231
 #, 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:3915 elfnn-ia64.c:4428
 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:3952 elfnn-ia64.c:4466
 #, 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:3969 elfnn-ia64.c:4483
 #, 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:4263 elfnn-ia64.c:4742
 #, 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:4272 elfnn-ia64.c:4751
 #, 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:4281 elfnn-ia64.c:4760
 #, 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:4290 elfnn-ia64.c:4769
 #, 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:4300 elfnn-ia64.c:4779
 #, 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:5518
 #, 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
 #, 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:5547
 #, 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:4102
 #, 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"
 
-#: elf64-mmix.c:984
+#: elf64-mmix.c:980
 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 "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 assembler en utilisant Â«Â -no-expandÂ Â» (pour gcc, Â«Â -Wa,-no-expandÂ Â»"
 
-#: elf64-mmix.c:1168
+#: elf64-mmix.c:1164
 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 "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Â Â»."
 
-#: elf64-mmix.c:1195
+#: elf64-mmix.c:1191
 #, c-format
 msgid ""
 "%pB: Internal inconsistency error for value for\n"
@@ -4062,1046 +4458,1730 @@ msgstr ""
 "%pB: Erreur d'incohÃ©rence interne pour la valeur du registre global\n"
 " allouÃ© Ã  l'Ã©dition de lien: liÃ©: %#<PRIx64> != relÃ¢chÃ©: %#<PRIx64>"
 
-#: elf64-mmix.c:1619
+#: elf64-mmix.c:1615
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
 msgstr "%pB: rÃ©adressage base plus dÃ©calage vers le symbole registre: (inconnu) dans %pA"
 
-#: elf64-mmix.c:1625
+#: elf64-mmix.c:1621
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
 msgstr "%pB: rÃ©adressage base plus dÃ©calage vers le symbole registre: %s dans %pA"
 
-#: elf64-mmix.c:1670
+#: elf64-mmix.c:1666
 #, c-format
 msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
 msgstr "%pB: rÃ©adressage de registre vers le symbole non-registre: (inconnu) dans %pA"
 
-#: elf64-mmix.c:1676
+#: elf64-mmix.c:1672
 #, c-format
 msgid "%pB: register relocation against non-register symbol: %s in %pA"
 msgstr "%pB: rÃ©adressage de registre vers le symbole non-registre: %s dans %pA"
 
-#: elf64-mmix.c:1713
+#: elf64-mmix.c:1709
 #, c-format
 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:1738
 #, 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:2153
 #, 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:2208
 msgid "register section has contents\n"
 msgstr "registre de section contient\n"
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2399
 #, 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:1361
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "attention: %s devrait Ãªtre utilisÃ© au lieu de %s"
+
+#: elf64-ppc.c:4302
 #, 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:4485
 #, 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:5107
 #, 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:5277
+msgid "%H: %s reloc unsupported here\n"
+msgstr "%H: le rÃ©adressage %s n'est pas supportÃ© ici\n"
+
+#: elf64-ppc.c:5500
 #, 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:5508
 #, 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:5535
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld]"
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6845
 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:7112
 #, 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:7363
 #, 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:7454
 #, 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:7464
 #, 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:7486
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr "%pB: symbole Â«Â %sÂ Â» indÃ©fini dans la section .opd"
 
-#: elf64-ppc.c:7249
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7987
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr "attention: --plt-localentry est incompatible avec le code relatif au pc du power10"
+
+#: elf64-ppc.c:7995
 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:8311
 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:8746 elf64-ppc.c:9462
 #, 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:9419
 #, 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:9640
+#, 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:10536
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr "attention: abandon de la section dynamique %s"
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11692
 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:11842
 #, 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:11869
 #, 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:11930 elf64-ppc.c:12182 elf64-ppc.c:14748
 #, 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:12381
 #, 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:13412
 #, 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:14929
+msgid "__tls_get_addr call offset overflow"
+msgstr "dÃ©bordement du dÃ©calage dans l'appel __tls_get_addr"
+
+#: elf64-ppc.c:15272 elf64-ppc.c:15291
 #, 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:15380
 #, 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"
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
+msgstr[0] "Ã©bauches de l'Ã©diteur de liens dans %u groupe"
+msgstr[1] "Ã©bauches de l'Ã©diteur de liens dans %u groupes"
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:15387
 #, c-format
 msgid ""
+"%s, iter %u\n"
 "  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 ""
-"  branchements          %lu\n"
-"  aj. branchements toc  %lu\n"
-"  branchements notoc    %lu\n"
-"  branchements les deux %lu\n"
-"  long branchements     %lu\n"
-"  aj. long toc          %lu\n"
-"  long notoc            %lu\n"
-"  long les deux         %lu\n"
-"  appels plt            %lu\n"
-"  appels plt save       %lu\n"
-"  appels plt notoc      %lu\n"
-"  appels plt les deux   %lu\n"
-"  entrÃ©es globales      %lu"
+"%s, itÃ©ration %u\n"
+"  branchement    %lu\n"
+"  branch. long   %lu\n"
+"  appel plt      %lu\n"
+"  entrÃ©e globale %lu"
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:15769
 #, 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:15771
 #, 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:16555
 #, 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:16561
 #, 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:17212
+#, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr "%H: %s sur %pT n'est pas supportÃ©\n"
+
+#: elf64-ppc.c:17488
 #, 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:17575
+#, 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:17630
 #, 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:17899
 #, 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:17922
 #, 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:18067
 #, 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:2752
 #, 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
+#: elf64-s390.c:3415
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation %s against misaligned symbol `%s' (%#<PRIx64>) in %pB"
+msgstr "%pB(%pA+%#<PRIx64>): rÃ©adressage %s sur le symbole mal alignÃ© Â«Â %sÂ Â» (%#<PRIx64>) dans %pB"
+
+#: elf64-sparc.c:134 elfcode.h:1601
 #, 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:493
 #, 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:514
 #, 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:538
 #, 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:585
 #, 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:717
 #, 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:1690
 msgid "hidden symbol "
 msgstr "symbole cachÃ© "
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1693
 msgid "internal symbol "
 msgstr "symbole interne "
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1696 elf64-x86-64.c:1700
 msgid "protected symbol "
 msgstr "symbole protÃ©gÃ© "
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1702
 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:1708
 msgid "undefined "
 msgstr "non dÃ©fini "
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1718 elfnn-loongarch.c:901
 msgid "a shared object"
 msgstr "un objet partagÃ©"
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1720
+msgid "; recompile with -fPIC"
+msgstr "; recompilez avec -fPIC"
+
+#: elf64-x86-64.c:1725 elfnn-loongarch.c:907
 msgid "a PIE object"
 msgstr "un objet PIE"
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1727 elfnn-loongarch.c:909
 msgid "a PDE object"
 msgstr "un objet PDE"
 
+#: elf64-x86-64.c:1729
+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:1733
 #, 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:2566
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx64> > %#<PRIx64>) for section `%pA'"
+msgstr "%pB: mauvais offset de rÃ©adressage (%#<PRIx64> > %#<PRIx64>) pour la section Â«Â %pAÂ Â»"
+
+#: elf64-x86-64.c:2630
 #, 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:2791
 #, 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:3046
+#, c-format
+msgid "%pB: unsupported relocation %s against symbol `%s'"
+msgstr "%pB: rÃ©adressage %s non supportÃ© vers le symbole Â«Â %sÂ Â»"
+
+#: elf64-x86-64.c:3472 elfnn-aarch64.c:5784 elfnn-riscv.c:2572
 #, 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:3741
 #, 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:3755
 #, 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:4045
 #, 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
-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:4197
+msgid "%P: corrupt input: %pB\n"
+msgstr "%P: entrÃ©e corrompue: %pB\n"
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:5066
 #, 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"
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr " impossible de convertir le rÃ©adressage GOTPCREL par rapport Ã  Â«Â %sÂ Â»: Ã©ditez les liens Ã  nouveau avec --no-relax\n"
 
-#: elf64-x86-64.c:4106
+#: elf64-x86-64.c:5225
 #, 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"
+msgid "%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr "%pB: dÃ©bordement du dÃ©calage relatif au PC dans l'entrÃ©e PLT pour Â«Â %sÂ Â»\n"
 
-#: elf64-x86-64.c:4159
+#: elf64-x86-64.c:5301
 #, 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"
+msgid "%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr "%pB: dÃ©bordement du dÃ©placement de branchement dans l'entrÃ©e PLT pour Â«Â %sÂ Â»\n"
 
-#: elfcode.h:323
-msgid "warning: %pB has a corrupt section with a size (%"
-msgstr "attention: %pB a une section corrompue avec une taille (%"
+#: elf64-x86-64.c:5354
+#, c-format
+msgid "%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr "%pB: dÃ©bordement du dÃ©calage relatif au PC dans l'entrÃ©e PLT GOT pour Â«Â %sÂ Â»\n"
+
+#: elf64-x86-64.c:5505
+#, c-format
+msgid "%pB: Unable to generate dynamic relocs because a suitable section does not exist\n"
+msgstr "%pB: Impossible de gÃ©nÃ©rer les rÃ©adressages dynamiques car une section appropriÃ©e n'existe pas\n"
+
+#: elfcode.h:342
+#, c-format
+msgid "warning: %pB has a section extending past end of file"
+msgstr "attention: %pB a une section qui s'Ã©tend au delÃ  de la fin du fichier"
+
+#: elfcode.h:790
+#, c-format
+msgid "warning: %pB has a corrupt string table index"
+msgstr "attention: %pB a un index de table de chaÃ®nes corrompu"
 
-#: elfcode.h:768
+#: elfcode.h:838
 #, c-format
-msgid "warning: %pB has a corrupt string table index - ignoring"
-msgstr "attention: %pB a un index de table de chaÃ®nes corrompu - ignorÃ©"
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr "attention: %pB a un en-tÃªte de programme avec un alignement invalide"
 
-#: elfcode.h:1212
+#: elfcode.h:1056
+#, c-format
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr "%pB: %pA+%<PRIx64>: le terme de rÃ©adressage %<PRIx64> est trop grand"
+
+#: elfcode.h:1321
 #, 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:280
 #, 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>"
+msgid "warning: %pB has a segment extending past end of file"
+msgstr "attention: %pB a un segment qui s'Ã©tend au delÃ  de la fin du fichier"
 
-#: elflink.c:1367
+#: elflink.c:1477
 #, 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:1483
 #, 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:1489
 #, 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:1495
 #, 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:2207
 #, 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:2720
 #, 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:2819
 #, 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:2831
 #, 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:3017
 #, 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:3350
 #, 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:3407
 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:4363
+msgid "%P: %pB: failed to add %s to first hash\n"
+msgstr "%P: %pB: Ã©chec de l'ajout de %s au premier hachage\n"
+
+#: elflink.c:4431
+msgid "%P: first_hash failed to create: %E\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de first_hash: %E\n"
+
+#: elflink.c:4462
 #, 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:4945
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: dÃ©calage de version %lx invalide (max %lx)"
+
+#: elflink.c:5015
+#, 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:5164
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: pas assez d'informations de version"
+
+#: elflink.c:5202
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr "%pB: %s: version invalide %u (max %d)"
 
-#: elflink.c:4635
+#: elflink.c:5239
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr "%pB: %s: version requise invalide %d"
 
-#: elflink.c:5054
+#: elflink.c:5525
+#, c-format
+msgid "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used by the common definition in %pB"
+msgstr "attention: l'alignement %u du symbole normal Â«Â %sÂ Â» dans %pB est plus petit que %u utilisÃ© par la dÃ©finition commune dans %pB"
+
+#: elflink.c:5532
+msgid "warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."
+msgstr "attention: NOTEÂ : les dÃ©saccords d'alignements peuvent provoquer des problÃ¨mes rÃ©els. Il est conseillÃ© de contrÃ´ler."
+
+#: elflink.c:5554
+msgid "warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."
+msgstr "attention: NOTEÂ : les dÃ©saccords de tailles peuvent provoquer des problÃ¨mes rÃ©els. Il est conseillÃ© de contrÃ´ler."
+
+#: elflink.c:5697
 #, 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:6812
 #, 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:6816
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr "%pB: %s pas supportÃ©"
 
-#: elflink.c:6331
+#: elflink.c:7028
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: version non dÃ©finie: %s"
 
-#: elflink.c:6902
+#: elflink.c:7419
+msgid "error: creating an executable stack because of -z execstack command line option"
+msgstr "erreur: crÃ©ation d'une pile exÃ©cutable Ã  cause de l'option en ligne de commande -z execstack"
+
+#: elflink.c:7425
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr "attention: activation d'une pile exÃ©cutable Ã  cause de l'option en ligne de commande -z execstack"
+
+#: elflink.c:7487
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"
+msgstr "erreur: %s: dÃ©clenche la gÃ©nÃ©ration d'une pile exÃ©cutable (car il a une section .note.GNU-stack exÃ©cutable)"
+
+#: elflink.c:7493
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr "attention: %s: pile exÃ©cutable requise (car la section .note.GNU-stack est exÃ©cutable)"
+
+#: elflink.c:7501
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"
+msgstr "erreur: %s: dÃ©clenche la gÃ©nÃ©ration d'une pile exÃ©cutable car il n'a pas de section .note.GNU-stack exÃ©cutable"
+
+#: elflink.c:7507
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr "attention: %s: l'absence de la section .note.GNU-stack implique une pile exÃ©cutable"
+
+#: elflink.c:7510
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr "NOTE: Ce comportement est dÃ©prÃ©ciÃ© et sera supprimÃ© dans une version ultÃ©rieure de l'Ã©diteur de liens"
+
+#: elflink.c:7664
 #, 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:9284
 #, 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:9447 elflink.c:9455
+msgid "division by zero"
+msgstr "division par zÃ©ro"
+
+#: elflink.c:9469
 #, 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:9805
 #, 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:9808
 #, 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:10059 elflink.c:10077 elflink.c:10116 elflink.c:10134
 #, 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:10093 elflink.c:10150
 #, 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:10202
 msgid "not enough memory to sort relocations"
 msgstr "pas assez de mÃ©moire pour trier les rÃ©adressages"
 
-#: elflink.c:9502
+#: elflink.c:10536
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr "%pB: trop de sections: %d (>= %d)"
 
-#: elflink.c:9782
+#: elflink.c:10812
 #, 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:10815
 #, 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:10818
 #, 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:10911
 #, 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:11069
 #, 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:11072
 #, 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:11075
 #, 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:11107
 #, 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:11649
 #, 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
-#, 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"
+msgid "error: %pB: unable to create group section symbol"
+msgstr "erreur: %pB: impossible de crÃ©er le symbole de section de groupe"
 
-#: elflink.c:11484
+#: elflink.c:11798
 #, 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]"
+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:11490
+#: elflink.c:12264
 #, c-format
-msgid "%pA has both ordered and unordered sections"
-msgstr "%pA a, Ã  la fois, des sections ordonnÃ©es et dÃ©sordonnÃ©es"
+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:11592
+#: elflink.c:12544
 #, 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:13150
+msgid "%P: %pB: failed to finish relative relocations\n"
+msgstr "%P: %pB: Ã©chec lors finalisation des rÃ©adressages relatifs\n"
+
+#: elflink.c:13227
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr "%pB: classe de fichier %s incompatible avec %s"
 
-#: elflink.c:12442
+#: elflink.c:13449
 #, 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:13610
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "attention: section %s a une taille nulle"
 
-#: elflink.c:12609
+#: elflink.c:13658
 #, 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:13752
 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:13755
+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:13758
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr "%P: attention: crÃ©ation de DT_TEXTREL dans un PDE\n"
+
+#: elflink.c:13761
+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:13890
 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:14312
+msgid "%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%P: %pB(%pA): erreur: une section linked-to est requise pour --gc-sections\n"
 
-#: elflink.c:13668
+#: elflink.c:14793
 #, 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:14834
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: section Â«Â %pAÂ Â»: entrÃ©e VTENTRY corrompue"
+
+#: elflink.c:14977
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr "INPUT_SECTION_FLAG %s non reconnu\n"
 
-#: elfxx-mips.c:1450
+#: elflink.c:15758
+#, 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:15847
+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:478
+#, 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:786
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "%Xerreur: un total de %d entrÃ©es incompatibles avec les exigences de BTI ont Ã©tÃ© trouvÃ©es.\n"
+
+#: elfxx-aarch64.c:788
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "attention: un total de %d entrÃ©es incompatibles avec les exigences de BTI ont Ã©tÃ© trouvÃ©es.\n"
+
+#: elfxx-aarch64.c:798
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "%xerreur: un total de %d entrÃ©es incompatibles avec les exigences de GCS ont Ã©tÃ© trouvÃ©es.\n"
+
+#: elfxx-aarch64.c:800
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "attention: un total de %d entrÃ©es incompatibles avec les exigences de GCS ont Ã©tÃ© trouvÃ©es.\n"
+
+#: elfxx-aarch64.c:810
+#, c-format
+msgid "%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "%xerreur: un total de %d objets dynamiquement liÃ©s incompatibles avec les exigences CGS ont Ã©tÃ© trouvÃ©s.\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "warning: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "attention: un total de %d objets dynamiquement liÃ©s incompatibles avec les exigences CGS ont Ã©tÃ© trouvÃ©s.\n"
+
+#: elfxx-aarch64.c:971
+#, 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-aarch64.c:1115
+#, c-format
+msgid "%pB: warning: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: attention: BTI est requis par -z force-bti, mais ce fichier objet en entrÃ©e n'a pas la note de propriÃ©tÃ© requise.\n"
+
+#: elfxx-aarch64.c:1117
+#, c-format
+msgid "%X%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: erreur: BTI est requis par -z force-bti, mais ce fichier objet en entrÃ©e n'a pas la note de propriÃ©tÃ© requise.\n"
+
+#: elfxx-aarch64.c:1149
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%pB: attention: GCS est requis par -z gcs, mais cette bibliothÃ¨que partagÃ©e n'a pas la note de propriÃ©tÃ© nÃ©cessaire. Le chargeur dynamique pourrait ne pas activer GCS ou refuser de charger le programme Ã  moins que toutes le dÃ©pendances Ã  des bibliothÃ¨ques partagÃ©es aient la marque GCS.\n"
+
+#: elfxx-aarch64.c:1153
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%X%pB: erreur: GCS est requis par -z gcs, mais cette bibliothÃ¨que partagÃ©e n'a pas la note de propriÃ©tÃ© nÃ©cessaire. Le chargeur dynamique pourrait ne pas activer GCS ou refuser de charger le programme Ã  moins que toutes le dÃ©pendances Ã  des bibliothÃ¨ques partagÃ©es aient la marque GCS.\n"
+
+#: elfxx-aarch64.c:1159
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: attention: GCS est requis par -z gcs, mais ce fichier objet en entrÃ©e n'a pas la note de propriÃ©tÃ© nÃ©cessaire.\n"
+
+#: elfxx-aarch64.c:1161
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: erreur: GCS est requis par -z gcs, mais ce fichier objet en entrÃ©e n'a pas la note de propriÃ©tÃ© nÃ©cessaire.\n"
+
+#: elfxx-loongarch.c:1911
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr "%pB: type de rÃ©adressage %s non supportÃ©"
+
+#: elfxx-loongarch.c:1939
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr "%pB: type de rÃ©adressage bfd %#x non supportÃ©"
+
+#: elfxx-loongarch.c:2013
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr "%pB: rÃ©adressage %s dÃ©calage Ã  droite %d erreur 0x%lx"
+
+#: elfxx-loongarch.c:2032
+#, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr "%pB: rÃ©adressage %s dÃ©bordement 0x%lx"
+
+#: elfxx-mips.c:1534
 msgid "static procedure (no name)"
 msgstr "procÃ©dure statique (sans name)"
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5895
 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:6665
 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:6698
 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:6743
 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:6755
 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:7401
 #, 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:7445
 #, 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:7681
+#, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr "%pB: attention: option Â«Â %sÂ Â» tronquÃ©e"
+
+#: elfxx-mips.c:8533 elfxx-mips.c:8659
 #, 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:8791
 #, 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:8891
 #, 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:9031
 #, 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:9334
 #, 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:9460
+#, 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:9463
+#, 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:9683
 #, 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:10606
 #, 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
-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:10748
+msgid "small-data section too large; lower small-data size limit (see option -G)"
+msgstr "la taille des petites donnÃ©es de la section est trop grandeÂ ; abaissez la limite de taille des petites donnÃ©es (voyez l'option -G)"
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10767
 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:10770
 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:10771
 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:10774
 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:10776
 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:10778
 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:11078
 #, 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:11193 elfxx-mips.c:11786
 #, 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:11758
 #, 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:13503 reloc.c:8524
+#, 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"
+
+#: elfxx-mips.c:14814
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr "%pB: Architecture %s inconnue"
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15342
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr "%pB: nom illÃ©gal de section Â«Â %pAÂ Â»"
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15620
 #, 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:15637
 #, 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:15669 elfxx-mips.c:15735 elfxx-mips.c:15750
 #, 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:15693
 #, 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:15718
 #, 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:15852
 #, 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:15858
 #, 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:15864
 #, 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:15878
 #, 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:15897
 #, 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:15909
 #, 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:15918
 #, 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:15980
 #, 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:15994
 #, 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:16047
 #, 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:16052
 #, 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:16056
 #, 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:16063
 #, 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:16067
 #, 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:16258
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr "-mips32r2 -mfp64 (12 callee-saved)"
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16320 elfxx-mips.c:16331
 msgid "None"
 msgstr "aucun"
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16322 elfxx-mips.c:16391
 msgid "Unknown"
 msgstr "Inconnu"
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16402
 #, c-format
 msgid "Hard or soft float\n"
 msgstr "Flottant matÃ©riel ou logiciel\n"
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16405
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr "Flottant matÃ©riel (double prÃ©cision)\n"
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16408
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr "Flottant matÃ©riel (simple prÃ©cision)\n"
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16411
 #, c-format
 msgid "Soft float\n"
 msgstr "Flottant logiciel\n"
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16414
 #, 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:16417
 #, 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:16420
 #, 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:16423
 #, 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:16455
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16457
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16459
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16461
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16463
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi inconnu]"
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16465
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16467
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16469
 #, c-format
 msgid " [no abi set]"
 msgstr " [aucun jeu abi]"
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16494
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [ISA inconnu]"
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16514
 #, 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:1950
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr "l'extension x ISA Â«Â %sÂ Â» doit Ãªtre dÃ©finie avec les versions"
+
+#: elfxx-riscv.c:1956
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr "impossible de trouver les versions par dÃ©faut de l'extension ISA Â«Â %sÂ Â»"
+
+#: elfxx-riscv.c:2063
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr "%s: la premiÃ¨re extension ISA doit Ãªtre Â«Â eÂ Â», Â«Â iÂ Â» ou Â«Â gÂ Â»"
+
+#: elfxx-riscv.c:2087
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr "%s: extension ISA standard ou classe de prÃ©fixe Â«Â %cÂ Â» inconnue"
+
+#: elfxx-riscv.c:2123
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr "%s: l'extension ISA prÃ©fixÃ©e Â«Â %sÂ Â» invalide est terminÃ©e par <nombre>p"
+
+#: elfxx-riscv.c:2147
+#, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr "%s: extension prÃ©fixÃ©e ISA Â«Â %sÂ Â» inconnue"
+
+#: elfxx-riscv.c:2171
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr "%s: l'extension ISA prÃ©fixÃ©e doit sÃ©parer avec _"
+
+#: elfxx-riscv.c:2211
+#, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr "rv%de ne supporte pas l'extension Â«Â hÂ Â»"
+
+#: elfxx-riscv.c:2219
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr "rv%d ne supporte pas l'extension Â«Â qÂ Â»"
+
+#: elfxx-riscv.c:2226
+msgid "zcmp' is incompatible with `d' and `c', or `zcd' extension"
+msgstr "Â«Â zcmpÂ Â» est incompatible avec l'extension Â«Â dÂ Â» et Â«Â cÂ Â» ou Â«Â zcdÂ Â»"
+
+#: elfxx-riscv.c:2233
+#, c-format
+msgid "rv%d does not support the `zcf' extension"
+msgstr "rv%d ne supporte pas l'extension Â«Â zcfÂ Â»"
+
+#: elfxx-riscv.c:2240
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr "Â«Â zfinxÂ Â» est en conflit avec l'extension Â«Â f/d/q/zfh/zfhminÂ Â»"
+
+#: elfxx-riscv.c:2247
+msgid "`xtheadvector' is conflict with the `v/zve32x' extension"
+msgstr "Â«Â xtheadvectorÂ Â» est en conflit avec l'extension Â«Â v/zve32xÂ Â»"
+
+#: elfxx-riscv.c:2256
+msgid "`zclsd' is conflict with the `c+f'/ `zcf' extension"
+msgstr "Â«Â zclsdÂ Â» est en conflit avec l'extension Â«Â c+fÂ Â» / Â«Â zcfÂ Â»"
+
+#: elfxx-riscv.c:2261
+#, c-format
+msgid "rv%d does not support the `ssnpm' extension"
+msgstr "rv%d ne supporte pas l'extension Â«Â ssnpmÂ Â»"
+
+#: elfxx-riscv.c:2267
+#, c-format
+msgid "rv%d does not support the `smnpm' extension"
+msgstr "rv%d ne supporte pas l'extension Â«Â smnpmÂ Â»"
+
+#: elfxx-riscv.c:2273
+#, c-format
+msgid "rv%d does not support the `smmpm' extension"
+msgstr "rv%d ne supporte pas l'extension Â«Â smmpmÂ Â»"
+
+#: elfxx-riscv.c:2279
+#, c-format
+msgid "rv%d does not support the `sspm' extension"
+msgstr "rv%d ne supporte pas l'extension Â«Â sspmÂ Â»"
+
+#: elfxx-riscv.c:2285
+#, c-format
+msgid "rv%d does not support the `supm' extension"
+msgstr "rv%d ne supporte pas l'extension Â«Â supmÂ Â»"
+
+#: elfxx-riscv.c:2307
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr "les extensions zvl*b ont besoin d'activer l'extension Â«Â vÂ Â» ou bien Â«Â zveÂ Â»"
+
+#: elfxx-riscv.c:2364
+msgid "Warning: should use \"_\" to contact Profiles with other extensions"
+msgstr "Attention: il faudrait utiliser Â«Â _Â Â» pour contacter les Profils avec d'autres extensions"
+
+#: elfxx-riscv.c:2405
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr "%s: la chaÃ®ne ISA ne peut pas contenir de lettre majuscule"
+
+#: elfxx-riscv.c:2439
+#, c-format
+msgid "%s: ISA string must begin with rv32, rv64 or Profiles"
+msgstr "%s: la chaÃ®ne ISA doit commencer par rv32, rv64 ou Profiles"
+
+#: elfxx-riscv.c:2629
+msgid "internal: "
+msgstr "interne: "
+
+#: elfxx-riscv.c:2683
+#, c-format
+msgid "%sinvalid ISA extension ends with <number>p in %s `%s'"
+msgstr "%sune extension ISA invalide est terminÃ©e par <nombre>p dans %s Â«Â %sÂ Â»"
+
+#: elfxx-riscv.c:2706
+#, c-format
+msgid "%sunknown ISA extension `%s' in %s `%s'"
+msgstr "%sextension ISA Â«Â %sÂ Â» inconnue dans %s Â«Â %sÂ Â»"
+
+#: elfxx-riscv.c:2717
+#, c-format
+msgid "%sdeprecated - extension `%s' in %s `%s'"
+msgstr "%sdÃ©prÃ©ciÃ© - extension Â«Â %sÂ Â» dans %s Â«Â %sÂ Â»"
+
+#: elfxx-riscv.c:2727
+#, c-format
+msgid "%scannot + base extension `%s' in %s `%s'"
+msgstr "%simpossible de + l'extension de base Â«Â %sÂ Â» dans %s Â«Â %sÂ Â»"
+
+#: elfxx-riscv.c:3059 elfxx-riscv.c:3343
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr "interne: INSN_CLASS_* inatteignable"
+
+# FrÃ©dÃ©ric: Les messages suivants sont remplacÃ©s dans un texte contenant Â«Â %sÂ Â» pour produire Â«Â fÂ Â» et Â«Â cÂ Â». Cette bidouille n'est pas sympa pour les traducteurs.
+# Je me demande comment les dÃ©veloppeurs s'y retrouventâ€¦
+#: elfxx-riscv.c:3093
+msgid "zicfiss' and `zcmop"
+msgstr "zicfissÂ Â» et Â«Â zcmop"
+
+#: elfxx-riscv.c:3106
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr "zihintntlÂ Â» et Â«Â cÂ Â» ou Â«Â zihintntlÂ Â» et Â«Â zca"
+
+#: elfxx-riscv.c:3111 elfxx-riscv.c:3137
+msgid "c' or `zca"
+msgstr "cÂ Â» ou Â«Â zca"
+
+#: elfxx-riscv.c:3119
+msgid "m' or `zmmul"
+msgstr "mÂ Â» ou Â«Â zmmul"
+
+#: elfxx-riscv.c:3139
+msgid "f' and `c', or `zcf"
+msgstr "fÂ Â» et Â«Â cÂ Â» ou Â«Â zcf"
+
+#: elfxx-riscv.c:3141
+msgid "d' and `c', or `zcd"
+msgstr "dÂ Â» et Â«Â cÂ Â» ou Â«Â zcd"
+
+#: elfxx-riscv.c:3143
+msgid "f' or `zfinx"
+msgstr "fÂ Â» ou Â«Â zfinx"
+
+#: elfxx-riscv.c:3145
+msgid "d' or `zdinx"
+msgstr "dÂ Â» ou Â«Â zdinx"
+
+#: elfxx-riscv.c:3147
+msgid "q' or `zqinx"
+msgstr "qÂ Â» ou Â«Â zqinx"
+
+#: elfxx-riscv.c:3149
+msgid "zfh' or `zhinx"
+msgstr "zfhÂ Â» ou Â«Â zhinx"
+
+#: elfxx-riscv.c:3153
+msgid "zfhmin' or `zhinxmin"
+msgstr "zfhminÂ Â» ou Â«Â zhinxmin"
+
+#: elfxx-riscv.c:3164
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr "zfhminÂ Â» et Â«Â dÂ Â» ou Â«Â zhinxminÂ Â» et Â«Â zdinx"
+
+#: elfxx-riscv.c:3175
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr "zfhminÂ Â» et Â«Â qÂ Â» ou Â«Â zhinxminÂ Â» et Â«Â zqinx"
+
+#: elfxx-riscv.c:3183
+msgid "d' and `zfa"
+msgstr "dÂ Â» et Â«Â zfa"
+
+# FrÃ©dÃ©ric: Les messages suivants sont remplacÃ©s dans un texte contenant Â«Â %sÂ Â» pour produire Â«Â fÂ Â» et Â«Â cÂ Â». Cette bidouille n'est pas sympa pour les traducteurs.
+# Je me demande comment les dÃ©veloppeurs s'y retrouventâ€¦
+#: elfxx-riscv.c:3191
+msgid "q' and `zfa"
+msgstr "qÂ Â» et Â«Â zfa"
+
+# FrÃ©dÃ©ric: Les messages suivants sont remplacÃ©s dans un texte contenant Â«Â %sÂ Â» pour produire Â«Â fÂ Â» et Â«Â cÂ Â». Cette bidouille n'est pas sympa pour les traducteurs.
+# Je me demande comment les dÃ©veloppeurs s'y retrouventâ€¦
+#: elfxx-riscv.c:3199
+msgid "zfh' and `zfa"
+msgstr "zfhÂ Â» et Â«Â zfa"
+
+#: elfxx-riscv.c:3209
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr "zfhÂ» et Â«Â zfaÂ Â» ou Â«Â zvfhÂ Â» et Â«Â zfa"
+
+#: elfxx-riscv.c:3214
+msgid "zfh' or `zvfh"
+msgstr "zfhÂ Â» ou Â«Â zvfh"
+
+#: elfxx-riscv.c:3230
+msgid "zbb' or `zbkb"
+msgstr "zbbÂ Â» ou Â«Â zbkb"
+
+#: elfxx-riscv.c:3232
+msgid "zbc' or `zbkc"
+msgstr "zbcÂ Â» ou Â«Â zbkc"
+
+#: elfxx-riscv.c:3240
+msgid "zknd' or `zkne"
+msgstr "zkndÂ Â» ou Â«Â zkne"
+
+#: elfxx-riscv.c:3246
+msgid "v' or `zve64x' or `zve32x"
+msgstr "vÂ Â» ou Â«Â zve64xÂ Â» ou Â«Â zve32x"
+
+#: elfxx-riscv.c:3248
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr "vÂ Â» ou Â«Â zve64dÂ Â» ou Â«Â zve64fÂ Â» ou Â«Â zve32f"
+
+#: elfxx-riscv.c:3250
+msgid "zvbb"
+msgstr "zvbb"
+
+#: elfxx-riscv.c:3252
+msgid "zvbc"
+msgstr "zvbc"
+
+#: elfxx-riscv.c:3258
+msgid "zvkb"
+msgstr "zvkb"
+
+#: elfxx-riscv.c:3260
+msgid "zvkg"
+msgstr "zvkg"
+
+#: elfxx-riscv.c:3262
+msgid "zvkned"
+msgstr "zvkned"
+
+#: elfxx-riscv.c:3264
+msgid "zvknha' or `zvknhb"
+msgstr "zvknhaÂ Â» ou Â«Â zvknhb"
+
+#: elfxx-riscv.c:3266
+msgid "zvksed"
+msgstr "zvksed"
+
+#: elfxx-riscv.c:3268
+msgid "zvksh"
+msgstr "zvksh"
+
+# FrÃ©dÃ©ric: Les messages suivants sont remplacÃ©s dans un texte contenant Â«Â %sÂ Â» pour produire Â«Â fÂ Â» et Â«Â cÂ Â». Cette bidouille n'est pas sympa pour les traducteurs.
+# Je me demande comment les dÃ©veloppeurs s'y retrouventâ€¦
+#: elfxx-riscv.c:3272
+msgid "zcb' and `zba"
+msgstr "zcbÂ Â» et Â«Â zba"
+
+# FrÃ©dÃ©ric: Les messages suivants sont remplacÃ©s dans un texte contenant Â«Â %sÂ Â» pour produire Â«Â fÂ Â» et Â«Â cÂ Â». Cette bidouille n'est pas sympa pour les traducteurs.
+# Je me demande comment les dÃ©veloppeurs s'y retrouventâ€¦
+#: elfxx-riscv.c:3274
+msgid "zcb' and `zbb"
+msgstr "zcbÂ Â» et Â«Â zbb"
+
+#: elfxx-riscv.c:3276
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr "zcbÂ Â» et Â«Â zmmulÂ Â» ou Â«Â zcbÂ Â» et Â«Â m"
+
+#: elfxx-riscv.c:3284
+msgid "smctr' or `ssctr"
+msgstr "smctrÂ Â» ou Â«Â ssctr"
+
+#: elfxx-riscv.c:3294
+msgid "h"
+msgstr "h"
+
+#: elfxx-riscv.c:3441
+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-riscv.c:3485
+#, c-format
+msgid "error: %pB: <corrupt RISC-V used size: 0x%x>"
+msgstr "erreur: %pB: <la taille utilisÃ©e par RISC-V est corrompue: 0x%x>"
+
+#: elfxx-sparc.c:3028 elfnn-aarch64.c:5768
 #, 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:534 elfxx-x86.c:3586
 #, 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 "%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr "%P: %pB: rÃ©adressage par copie sur le symbole protÃ©gÃ© non copiable Â«Â %sÂ Â» dans %pB\n"
 
 #: elfxx-x86.c:1027
+#, c-format
+msgid "%P: %pB: failed to allocate relative reloc record\n"
+msgstr "%P: %pB: Ã©chec lors de l'allocation d'un enregistrement de rÃ©adressage relatif\n"
+
+#: elfxx-x86.c:1388
+#, c-format
+msgid "%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: Ã©chec lors de l'allocation d'un champ de bits DT_RELR 64 bits\n"
+
+#: elfxx-x86.c:1424
+#, c-format
+msgid "%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: Ã©chec lors de l'allocation d'un champ de bits DT_RELR 32 bits\n"
+
+#: elfxx-x86.c:1563
+#, c-format
+msgid "%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr "%P: %pB: Ã©chec lors de l'allocation de la mÃ©moire pour la section Â«Â %pAÂ Â»\n"
+
+#: elfxx-x86.c:1750
+#, c-format
+msgid "%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr "%P: %pB: la taille de la section de rÃ©adressage relatif compacte est changÃ©eÂ : nouvelle (%lu) != ancienne (%lu)\n"
+
+#: elfxx-x86.c:1772
+#, c-format
+msgid "%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr "%P: %pB: Ã©chec lors de l'allocation d'une section de rÃ©adressage relatif compacte\n"
+
+#: elfxx-x86.c:2243
+#, c-format
+msgid "%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%P: %pB: le rÃ©adressage de %s par rapport au symbole absolu Â«Â %sÂ Â» dans la section Â«Â %pAÂ Â» est interdit\n"
+
+#: elfxx-x86.c:2325
 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:3254
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (offset: 0x%v, info: 0x%v, terme: 0x%v) sur Â«Â %sÂ Â» pour la section Â«Â %pAÂ Â» dans %pB\n"
 
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:3260
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (offset: 0x%v, info: 0x%v) sur Â«Â %sÂ Â» pour la section Â«Â %pAÂ Â» dans %pB\n"
+
+#: elfxx-x86.c:3296
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed\n"
+msgstr "%pB: Ã‰chec de la transition TLS de %s vers %s sur Â«Â %sÂ Â» Ã  0x%v dans la section Â«Â %pAÂ Â»\n"
+
+#: elfxx-x86.c:3305
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n"
+msgstr "%pB(%pA+0x%v): le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans ADD ou MOV\n"
+
+#: elfxx-x86.c:3313
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only\n"
+msgstr "%pB(%pA+0x%v): le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans ADD ou MOVRS\n"
+
+#: elfxx-x86.c:3321
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only\n"
+msgstr "%pB(%pA+0x%v): le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans ADD, SUB ou MOV\n"
+
+#: elfxx-x86.c:3329
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only\n"
+msgstr "%pB(%pA+0x%v): le rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans un appel indirect CALL avec le registre %s\n"
+
+# 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.
+#: elfxx-x86.c:3338
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n"
+msgstr "%pB(%pA+0x%v): rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans LEA\n"
+
+#: elfxx-x86.c:3965
 #, 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:4178
+#, c-format
+msgid "%pB: x86 ISA needed: "
+msgstr "%pB: ISA x86 nÃ©cessaireÂ : "
+
+#: elfxx-x86.c:4180
+#, c-format
+msgid "%pB: x86 ISA used: "
+msgstr "%pB: ISA x86 utilisÃ©eÂ : "
 
-#: elfxx-x86.c:2614
+#: elfxx-x86.c:4202
 #, c-format
-msgid "%F%pA: failed to align section\n"
-msgstr "%F%pA: Ã©chec lors de l'alignement de la section\n"
+msgid "<unknown: %x>"
+msgstr "<inconnu: %x>"
 
-#: elfxx-x86.c:2760
-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
-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
-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
-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
-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
-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
-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
-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
-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:4338
+msgid "%P: failed to create %sn"
+msgstr "%P: Ã©chec lors de la crÃ©ation de %sn"
+
+#: elfxx-x86.c:4352
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: avertissement: %s manquant\n"
+
+#: elfxx-x86.c:4353
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: erreur: %s manquant\n"
+
+#: elfxx-x86.c:4459
+msgid "IBT and SHSTK properties"
+msgstr "propriÃ©tÃ©s IBT et SHSTK"
+
+#: elfxx-x86.c:4461
+msgid "IBT property"
+msgstr "propriÃ©tÃ© IBT"
+
+#: elfxx-x86.c:4463
+msgid "SHSTK property"
+msgstr "propriÃ©tÃ© SHSTK"
+
+#: elfxx-x86.c:4468
+msgid "LAM_U48 property"
+msgstr "propriÃ©tÃ© LAM_U48"
+
+#: elfxx-x86.c:4473
+msgid "LAM_U57 property"
+msgstr "propriÃ©tÃ© LAM_U57"
+
+#: elfxx-x86.c:4651
+msgid "%P: failed to create VxWorks dynamic sections\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation des sections dynamiques VxWorks\n"
+
+#: elfxx-x86.c:4660
+msgid "%P: failed to create GOT sections\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation des sections GOT\n"
+
+#: elfxx-x86.c:4678
+msgid "%P: failed to create ifunc sections\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation des sections ifunc\n"
+
+#: elfxx-x86.c:4717
+msgid "%P: failed to create GOT PLT section\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de la section PLT GOT\n"
+
+#: elfxx-x86.c:4734
+msgid "%P: failed to create IBT-enabled PLT section\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de la section PLT activÃ©e pour IBT\n"
+
+#: elfxx-x86.c:4752
+msgid "%P: failed to create PLT .eh_frame section\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT\n"
+
+#: elfxx-x86.c:4763
+msgid "%P: failed to create GOT PLT .eh_frame section\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT GOT\n"
+
+#: elfxx-x86.c:4775
+msgid "%P: failed to create the second PLT .eh_frame section\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de la section .eh_frame PLT\n"
+
+#: elfxx-x86.c:4790
+msgid "%P: failed to create PLT .sframe section\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de la section .sframe PLT\n"
+
+#: elfxx-x86.c:4806
+msgid "%P: failed to create second PLT .sframe section\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de la seconde section .sframe PLT\n"
+
+#: elfxx-x86.c:4819
+msgid "%P: failed to create PLT GOT .sframe section\n"
+msgstr "%P: Ã©chec lors de la crÃ©ation de la section .sframe PLT GOT\n"
+
+#: elfxx-x86.c:4859
+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
@@ -5113,430 +6193,470 @@ 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:580
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr "%pB: erreur interne dans ihex_read_section"
 
-#: ihex.c:619
+#: ihex.c:613
 #, 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:784
 #, 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:842
 #, 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:1260
 #, 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:1272
 #, 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"
+msgid "%pB: mapped section %pA has non-NULL buffer"
+msgstr "%pB: la section mappÃ©e %pA a un tampon non NULL"
 
-#: libbfd.c:1104
-#, c-format
-msgid "Deprecated %s called\n"
-msgstr "%s appel dÃ©prÃ©ciÃ©\n"
-
-#: linker.c:1697
+#: linker.c:1749
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr "%pB: symbole indirect Â«Â %sÂ Â» vers Â«Â %sÂ Â» est une boucle"
 
-#: linker.c:2567
+#: linker.c:1829
+msgid "%P: %pB: note: the message above does not take linker garbage collection into account\n"
+msgstr "%P: %pB: note: le message ci-dessus ne prend pas en compte la rÃ©cupÃ©ration du rebut par l'Ã©diteur de liens\n"
+
+#: linker.c:2663
 #, c-format
 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:2942
 #, 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:2952 linker.c:2962
 #, 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:2976 linker.c:2984
 #, 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:2993
 #, 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:3517
 #, 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:3520
 #, 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:169 mach-o-arm.c:301
+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:185
+#, 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:200
+#, 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:215
+#, 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:230
+#, 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:262
+#, 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:332
+#, 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:642
 #, c-format
 msgid "<unknown mask flags>"
 msgstr "<fanions de masque inconnus>"
 
-#: mach-o.c:687
+#: mach-o.c:697
 msgid " (<unknown>)"
 msgstr "(<inconnu>)"
 
-#: mach-o.c:698
+#: mach-o.c:709
 #, c-format
 msgid " MACH-O header:\n"
 msgstr "En-tÃªte MACH-O:\n"
 
-#: mach-o.c:699
+#: mach-o.c:710
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr "  magique:     %#lx\n"
 
-#: mach-o.c:700
+#: mach-o.c:711
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr "  typecpu:     %#lx (%s)\n"
 
-#: mach-o.c:702
+#: mach-o.c:713
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr "  soustypecpu: %#lx%s\n"
 
-#: mach-o.c:704
+#: mach-o.c:715
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr "  typefichier: %#lx\n"
 
-#: mach-o.c:705
+#: mach-o.c:716
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr "  ncmds:       %#lx\n"
 
-#: mach-o.c:706
+#: mach-o.c:717
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr "  taillecmds:  %#lx\n"
 
-#: mach-o.c:707
+#: mach-o.c:718
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr "  fanions:     %#lx\n"
 
-#: mach-o.c:708
+#: mach-o.c:719
 #, c-format
 msgid "   version:    %x\n"
 msgstr "  version:     %x\n"
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:754
 #, 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:923
 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:1515
+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:2157
 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:2605
 #, 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:2697
 #, 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:2802
 #, 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:2986
 #, 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:3128
 #, 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:3654
 #, 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"
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_32: valeur d'alignement dÃ©mesurÃ©e: %#lx"
 
-#: mach-o.c:3671
+#: mach-o.c:3697
 #, 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"
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_64: valeur d'alignement dÃ©mesurÃ©e: %#lx"
 
-#: mach-o.c:3722
+#: mach-o.c:3748
 #, 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:3767
 #, 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:3850
 #, 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:3869
 #, 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:5068
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr "%pB: commande de chargement inconnue %#x"
 
-#: mach-o.c:5122
+#: mach-o.c:5266
 #, 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:5391
 #, 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:1126
 #, 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>)"
 
-#: mmo.c:476
-#, c-format
-msgid "%pB: no core to allocate section name %s"
-msgstr "%pB: pas de noyau pour allouer un nom de section %s"
-
-#: mmo.c:541
+#: mmo.c:535
 #, c-format
 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:951
 #, 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:1246
 #, 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:1393
 #, 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:1409
+#, c-format
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr "%pB: le nom de symbole dÃ©passe la longueur maximale donnÃ©e %d"
+
+#: mmo.c:1638
 #, 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:1649
 #, 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:1693
 #, 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:1744
 #, 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:1793
 #, 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:1804
 #, 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:1829
 #, 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:1858
 #, 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:1880
 #, 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:1895
 #, 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:2007
 #, 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:2044
 #, 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:2058
 #, 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:2768
 #, 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:3007
 #, 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"
+msgid "%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr "%pB: dÃ©finition de symbole erronÃ©e: Â«Â MainÂ Â» initialisÃ© Ã  %<PRIx64> au lieu de l'adresse de dÃ©part %<PRIx64>\n"
 
-#: mmo.c:3082
+#: mmo.c:3106
 #, 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:3152
 #, 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:3205
 #, 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:3256
 #, 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:3263
 #, 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:3268
 #, 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>"
 
-#: osf-core.c:127
+#: osf-core.c:128
 #, c-format
 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:1573
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: le symbole indique un recouvrement (pas supportÃ©)"
+
+#: pef.c:534
 #, 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:176 pei-x86_64.c:230 pei-x86_64.c:240 pei-x86_64.c:265
+#: pei-x86_64.c:277 pei-x86_64.c:291 pei-x86_64.c:309 pei-x86_64.c:321
+#: pei-x86_64.c:333
 #, 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:354
 #, 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:405 pei-x86_64.c:415 pei-x86_64.c:424
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr "attention: section xdata corrompue\n"
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:479
 #, 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:565
 #, 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:572
 #, 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:587
 #, 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:596
 #, c-format
 msgid ""
 "\n"
@@ -5545,12 +6665,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:599
 #, 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:724
 #, c-format
 msgid ""
 "\n"
@@ -5559,47 +6679,90 @@ msgstr ""
 "\n"
 "Vidange de %s\n"
 
-#. XXX code yet to be written.
-#: peicode.h:775
-#, c-format
-msgid "%pB: unhandled import type; %x"
-msgstr "%pB: type d'importation non traitÃ©e; %x"
-
-#: peicode.h:781
+#: peicode.h:823
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr "%pB: type d'importation non reconnu; %x"
 
-#: peicode.h:796
+#: peicode.h:840
+#, c-format
+msgid "%pB: missing import name for IMPORT_NAME_EXPORTAS for %s"
+msgstr "%pB: nom d'import manquant pour IMPORT_NAME_EXPORTAS pour %s"
+
+#: peicode.h:849
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr "%pB: type de nom d'importation non reconnu: %x"
 
-#: peicode.h:1211
+#: peicode.h:1299
 #, 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:1312
 #, 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:1330
 #, 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:1356
 #, 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:1427
 #, 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"
 
+#: peicode.h:1599
+#, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr "%pB: ajustement du SectionAlignement invalide"
+
+#: peicode.h:1609
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr "%pB: ajustement du FileAlignment invalide"
+
+#: peicode.h:1617
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr "%pB: NumberOfRvaAndSizes invalide"
+
+#: plugin.c:195
+#, c-format
+msgid "%s: failed to open to extract object only section: %s"
+msgstr "%s: impossible d'ouvrir pour extraire l'unique section de l'objetÂ : %s"
+
+#: plugin.c:212
+#, c-format
+msgid "%pB: invalid file to extract object only section: %s"
+msgstr "%pB: fichier invalide pour extraire l'unique section de l'objetÂ : %s"
+
+#: plugin.c:225
+#, c-format
+msgid "%pB: failed to extract object only section: %s"
+msgstr "%pB: impossible d'extraire l'unique section de l'objetÂ : %s"
+
+#: plugin.c:245
+#, c-format
+msgid "%pB: failed to open object only section: %s"
+msgstr "%pB: impossible d'ouvrir l'unique section de l'objetÂ : %s"
+
+#: plugin.c:255
+#, c-format
+msgid "%pB: failed to get symbol table in object only section: %s"
+msgstr "%pB: impossible d'obtenir la table des symboles dans l'unique section de l'objetÂ : %s"
+
+#: plugin.c:411
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr "framework de greffon: Ã  cours de descripteurs de fichiers. Essayez d'utiliser moins d'objets/archives\n"
+
 #: ppcboot.c:392
 #, c-format
 msgid ""
@@ -5653,32 +6816,17 @@ 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:8423
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr "INPUT_SECTION_FLAGS pas supportÃ©s"
 
-#: reloc.c:8333
-#, 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
-#, 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
-#, 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:8689
 #, 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:8693
 #, 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 +6836,23 @@ 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:3002
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr "%pB(%pA+%#<PRIx64>): dÃ©calage de rÃ©adressage %s pas dans le bon ordre"
+
+#: som.c:3015
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr "%pB(%pA+%#<PRIx64>): dÃ©calage de rÃ©adressage %s hors limite"
+
+#. User has specified a subspace without its containing space.
+#: som.c:5403
+#, c-format
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr "%pB[%pA]: pas de section de sortie pour l'espace %pA"
+
+#: som.c:5450
 #, c-format
 msgid ""
 "\n"
@@ -5697,7 +6861,7 @@ msgstr ""
 "\n"
 "En-tÃªte auxiliaire de l'exec\n"
 
-#: som.c:5787
+#: som.c:5759
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers non implÃ©mentÃ©"
 
@@ -5711,17 +6875,17 @@ 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"
 
-#: stabs.c:279
+#: stabs.c:308
 #, c-format
 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:1121
 msgid "unsupported .stab relocation"
 msgstr "rÃ©adressage du .stab non supportÃ©"
 
@@ -5729,65 +6893,74 @@ msgstr "rÃ©adressage du .stab non suppor
 msgid "corrupt EIHD record - size is too small"
 msgstr "enregistrement EIHD corrompu â€“ la taille est trop petite"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:665
 #, 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:1157
+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:1190
 #, 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:1214
 #, 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:1224
 #, 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:1366
 #, 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:1441
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr "sous type EGSD %d inconnu"
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1474
 #, 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:1488
 msgid "stack underflow in _bfd_vms_pop"
 msgstr "sous dÃ©pilage de la pile dans _bfd_vms_pop"
 
+#: vms-alpha.c:1562
+#, 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 +6970,1469 @@ 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:4006
 #, 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:4058 vms-alpha.c:4286
 #, c-format
 msgid "size error in section %pA"
 msgstr "erreur de taille dans la section %pA"
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4229
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr "rÃ©adressages ALPHA_R_BSR parasite"
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4272
 #, c-format
 msgid "unhandled relocation %s"
 msgstr "rÃ©adressage %s non traitÃ©"
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4637
 #, 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:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804
+#: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842
+#: vms-alpha.c:4847
 #, c-format
 msgid "%s not implemented"
 msgstr "%s non implÃ©mentÃ©"
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4883
 #, 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:5322
+msgid "corrupt reloc record"
+msgstr "enregistrement de rÃ©adressage corrompu"
+
+#: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405
+#: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr "rÃ©adressage %s + %s inconnu"
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5502
 #, c-format
 msgid "unknown reloc %s"
 msgstr "rÃ©adressage %s inconnu"
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5516
 msgid "invalid section index in ETIR"
 msgstr "index de section incorrect dans ETIR"
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5525
 msgid "relocation for non-REL psect"
 msgstr "rÃ©adressage pour psect non-REL"
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5578
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr "symbole inconnu dans la commande %s"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5996
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr "le rÃ©adressage (%d) est *INCONNU*"
 
-#: vms-alpha.c:5752
+#: vms-alpha.c:6113
 #, c-format
-msgid "  EMH %u (len=%u): "
-msgstr "  EMH %u (long=%u): "
+msgid "  EMH %d (len=%u): "
+msgstr "  EMH %d (long=%u): "
 
-#: vms-alpha.c:5757
+#: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216
 #, 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"
+msgid "   Error: %s min length is %u\n"
+msgstr "   ErreurÂ : la longueur minimale de %s est %u\n"
 
-#: vms-alpha.c:5774
-#, 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:6141
 #, c-format
 msgid "Module header\n"
 msgstr "En-tÃªte module\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:6142
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   niveau de structure: %u\n"
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:6143
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   taille max d'enregistrement: %u\n"
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:6149
 #, 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:6155
 #, 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:6158
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   nom du module       : %.*s\n"
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:6162
 #, 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:6168
 #, 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:6171
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   version du module   : %.*s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:6174
 #, 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:6176
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   date de compilation : %.17s\n"
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:6181
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Nom du Processeur de Langage\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:6182
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   nom du language: %.*s\n"
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6186
 #, c-format
 msgid "Source Files Header\n"
 msgstr "En-tÃªte des fichiers sources\n"
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6187
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   fichier: %.*s\n"
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6191
 #, c-format
 msgid "Title Text Header\n"
 msgstr "En-tÃªte du texte du titre\n"
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6192
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   titre: %.*s\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6196
 #, c-format
 msgid "Copyright Header\n"
 msgstr "En-tÃªte du copyright\n"
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6197
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   copyright: %.*s\n"
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6201
 #, 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:6211
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (long=%u):\n"
 
-#: vms-alpha.c:5852
-#, 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:6221
 #, 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:6223
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   code de complÃ©tion: %u\n"
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6228
 #, 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:6229
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   psect transert adr: %u\n"
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6231
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   adresse de transert: 0x%08x\n"
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6240
 msgid " WEAK"
 msgstr " FAIBLE"
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6242
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6244
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6246 vms-alpha.c:6267
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6248
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6250
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6252
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6254
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6261
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6263
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6265
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6269
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6271
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6273
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6275
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6277
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6279
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6281
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6283
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6285
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6294
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (long=%u):\n"
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6309
 #, 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:6315 vms-alpha.c:6610
 #, 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"
+msgid "   Erroneous length\n"
+msgstr "   Longueur erronÃ©e\n"
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6328
 #, 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:6329 vms-alpha.c:6349
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   alignement : 2**%u\n"
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6330 vms-alpha.c:6350
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   fanions    : 0x%04x"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6334
 #, 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:6336 vms-alpha.c:6402 vms-alpha.c:6470
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   nom        : %.*s\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6348
 #, 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:6354
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   alloc (long)  : %u (0x%08x)\n"
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6355
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   offset d'image: 0x%08x\n"
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6357
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   offset symvec : 0x%08x\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6360
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   nom           : %.*s\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6376
 #, 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:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   fanions: 0x%04x"
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6380
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   offset psect: 0x%08x\n"
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6384
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   adresse code: 0x%08x\n"
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6386
 #, 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:6389 vms-alpha.c:6489 vms-alpha.c:6512
 #, 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:6392 vms-alpha.c:6492 vms-alpha.c:6515
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   nom         : %.*s\n"
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6400
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM - RÃ©fÃ©rence du symbol globaux\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6415
 #, 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:6416
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   fanions       : 0x%08x"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6420
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   correspondance id : %x\n"
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6422
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   sÃ©vÃ©ritÃ© d'erreur: %x\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6426
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   nom d'entitÃ©  : %.*s\n"
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6432
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   nom d'objet   : %.*s\n"
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6441
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   ident binaire : 0x%08x\n"
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6445
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   ident ascii   : %.*s\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6457
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG - DÃ©finition de symbole universel\n"
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6461
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   offset vecteur symbole: 0x%08x\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6463
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   point d'entrÃ©e: 0x%08x\n"
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6465
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   descr proc : 0x%08x\n"
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6467
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   index psect: %u\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6481
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV - DÃ©finition symbole vectorisÃ©\n"
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6485
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   vecteur     : 0x%08x\n"
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6487 vms-alpha.c:6510
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   offset psect: %u\n"
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6504
 #, 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:6508
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   masque de version: 0x%08x\n"
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6521
 #, 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:6560
 #, 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:6564
 #, 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:6569
 #, 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:6575
 #, 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:6580
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "   nom global: %.*s\n"
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6592
 #, c-format
-msgid "  %s (len=%u+%u):\n"
-msgstr "  %s (long=%u+%u):\n"
+msgid "  %s (len=%u):\n"
+msgstr "  %s (long=%u):\n"
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6615
 #, c-format
-msgid "   (type: %3u, size: 4+%3u): "
-msgstr "   (type: %3u, taille: 4+%3u): "
+msgid "   (type: %3u, size: %3u): "
+msgstr "   (type: %3u, taille: %3u): "
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6621
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
-msgstr "STA_GBL (pile globals) %.*s\n"
+msgstr "STA_GBL (empile globals) %.*s\n"
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6625
 #, c-format
-msgid "STA_LW (stack longword) 0x%08x\n"
-msgstr "STA_LW (pile mot long) 0x%08x\n"
+msgid "STA_LW (stack longword)"
+msgstr "STA_LW (empile mot long)"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6631
 #, c-format
-msgid "STA_QW (stack quadword) 0x%08x %08x\n"
-msgstr "STA_QW (pile quad mot) 0x%08x %08x\n"
+msgid "STA_QW (stack quadword)"
+msgstr "STO_QW (empile quad mot)"
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6638
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
-msgstr "STA_PQ (base pile psect + offset)\n"
+msgstr "STA_PQ (empile base psect + offset)\n"
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6641
 #, 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:6647
 #, c-format
 msgid "STA_LI (stack literal)\n"
-msgstr "STA_LI (pile literale)\n"
+msgstr "STA_LI (empile littÃ©ral)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6650
 #, c-format
 msgid "STA_MOD (stack module)\n"
-msgstr "STA_MOD (pile module)\n"
+msgstr "STA_MOD (empile module)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6653
 #, 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:6657
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (stocke octet)\n"
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6660
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (stocke mot)\n"
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6663
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (stocke mot long)\n"
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6666
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (stocke quad mot)\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6673
 #, 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:6682
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (stocke globale) %.*s\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6687
 #, 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:6691
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (stocke branche relative)\n"
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6694
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (stocke branche absolue)\n"
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6697
 #, 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:6704
 #, 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:6713
 #, 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:6717
 #, 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:6720
 #, 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:6723
 #, 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:6727
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
-msgstr "OPR_NOP (pas d'operation)\n"
+msgstr "OPR_NOP (pas d'opÃ©ration)\n"
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6730
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (ajout)\n"
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6733
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (soustraction)\n"
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6736
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (multiplication)\n"
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6739
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (division)\n"
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6742
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (et logique)\n"
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6745
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (ou inclusif logique)\n"
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6748
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (ou exclusif logique)\n"
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6751
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (nÃ©gation)\n"
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6754
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (complÃ©ment)\n"
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6757
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (insertion champ)\n"
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6760
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (dÃ©calage arithmetique)\n"
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6763
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (dÃ©calage non signÃ©)\n"
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6766
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (rotation)\n"
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6769
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (selection)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6772
 #, 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:6775
 #, 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:6779
 #, 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:6783
 #, 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:6787
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   index liaison: %u, procÃ©dure: %.*s\n"
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6794
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   signature: %.*s\n"
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6800
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (stocke cond globale)\n"
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6803
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   index liaison: %u, globale: %.*s\n"
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6808
 #, 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:6811
 #, 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:6816
 #, 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:6820
 #, 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:6827
 #, 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:6831
 #, 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:6835
 #, 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:6839
 #, 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:6843
 #, 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:6847
 #, 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:6851
 #, 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:6855
 #, 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:6860
 #, 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:6864
 #, 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:6868
 #, 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:6874
 #, 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:6879
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (dÃ©finir position)\n"
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6882
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (fixer position)\n"
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6885
 #, 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:6888 vms-alpha.c:7316 vms-alpha.c:7477
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*non pris en charge*\n"
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6913
 #, c-format
-msgid "cannot read GST record length\n"
-msgstr "impossible de lire la longueur de l'enregistrement GST\n"
+msgid "cannot read GST record header\n"
+msgstr "impossible de lire l'en-tÃªte de l'enregistrement GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6936
 #, 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
-#, 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:6960
 #, c-format
-msgid " corrupted GST\n"
-msgstr " GST corrompu\n"
+msgid "corrupted GST\n"
+msgstr "GST corrompu\n"
 
-#: vms-alpha.c:6545
+#: vms-alpha.c:6973
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "ne peut lire l'enregistrement GST\n"
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:7000
 #, 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:7025
 #, 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:7039
 #, 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:7046
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:7073
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  image %u (%u entrÃ©es)\n"
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:7079
 #, 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:7102
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  image %u (%u entrÃ©es), offsets:\n"
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:7109
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:7235
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 bits *non supportÃ©*\n"
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:7240
 #, 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:7251
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "table de %s non contiguÃ«\n"
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7258
 #, 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:7263
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "arsize: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7267
 #, c-format
 msgid "Strides:\n"
 msgstr "Pas:\n"
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7281
 #, c-format
 msgid "Bounds:\n"
 msgstr "Limites:\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7288
 #, 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:7302
 #, 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:7309
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "base: %u, pos: %u\n"
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7335
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "vflags: 0x%02x, valeur: 0x%08x "
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7342
 #, c-format
 msgid "(no value)\n"
 msgstr "(pas de valeur)\n"
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7345
 #, c-format
 msgid "(not active)\n"
 msgstr "(pas active)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7348
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(pas allouÃ©e)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7351
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(descripteur)\n"
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7356
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(valeur postÃ©rieure)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7359
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(spÃ©cificitÃ©s de la valeur suivent)\n"
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7362
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(Ã  l'offset de bit %u)\n"
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7366
 #, 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:7373
 msgid "literal"
 msgstr "litÃ©rale"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7376
 msgid "address"
 msgstr "adresse"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7379
 msgid "desc"
 msgstr "desc"
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7382
 msgid "reg"
 msgstr "reg"
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7403
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "long: %2u, type: %2u "
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7411
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "atomique, type=0x%02x %s\n"
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7416
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "indirect, dÃ©fini Ã  0x%08x\n"
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7420
 #, c-format
 msgid "typed pointer\n"
 msgstr "pointeur typÃ©\n"
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7424
 #, c-format
 msgid "pointer\n"
 msgstr "pointeur\n"
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7435
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr "tableau, dim: %u, bitmpa: "
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7450
 #, c-format
 msgid "array descriptor:\n"
 msgstr "descripteur de tableau:\n"
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7461
 #, c-format
 msgid "type spec for element:\n"
 msgstr "spec de type pour Ã©lÃ©ment:\n"
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7463
 #, 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:7488
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Table des symboles de debug:\n"
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7499
 #, 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:7505
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " type: %3u, long: %3u (Ã  0x%08x): "
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7524
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "ne peut lire le symbole DST\n"
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7568
 #, c-format
 msgid "standard data: %s\n"
 msgstr "donnÃ©es standards: %s\n"
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7572 vms-alpha.c:7696
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    nom: %.*s\n"
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7580
 #, c-format
 msgid "modbeg\n"
 msgstr "dÃ©but module\n"
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7584
 #, 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:7594 vms-alpha.c:7963
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   nom du module: %.*s\n"
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7601
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   compilateur  : %.*s\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7608
 #, c-format
 msgid "modend\n"
 msgstr "fin module\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7615
 msgid "rtnbeg\n"
 msgstr "dÃ©but rtn\n"
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7619
 #, 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:7628
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    nom routine : %.*s\n"
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7639
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "fin rtn: taille 0x%08x\n"
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7649
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "prologue: adresse bkpt 0x%08x\n"
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7659
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "Ã©pilogue: fanions: %u, nombre: %u\n"
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7674
 #, 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:7686
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "fin blk: taille: 0x%08x\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7692
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "typspec (long: %u)\n"
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7708
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "septyp, nom: %.*s\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7725
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "dÃ©but rec: nom: %.*s\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7731
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "   long: %u bits\n"
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7737
 #, c-format
 msgid "recend\n"
 msgstr "fin rec\n"
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7742
 #, 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:7748
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "Ã©numÃ©ration Ã©lÃ©ments, nom: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7754
 #, c-format
 msgid "enumend\n"
 msgstr "fin Ã©numÃ©ration\n"
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7761
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "Ã©tiquette, nom: %.*s\n"
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7764
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "    adresse: 0x%08x\n"
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7776
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "plage discontinue (nbr: %u)\n"
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7783
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    adresse: 0x%08x, taille: %u\n"
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7794
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "num ligne  (long: %u)\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7813
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7822
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7830
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7838
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7846
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7853
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7860
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7867
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7873
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7880
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7882
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7889
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7891
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7897
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7901
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x ligne: %5u\n"
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7906
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    cmd %u *non gÃ©rÃ©e*\n"
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7921
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "source (long: %u)\n"
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7940
 #, 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:7945
 #, 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:7957
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   nom fichier: %.*s\n"
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7973
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7980 vms-alpha.c:7987
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7994 vms-alpha.c:8001
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:8008 vms-alpha.c:8015
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:8019
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:8023
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   cmd %u *non gÃ©rÃ©e*\n"
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:8035
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "type dst %u *non gÃ©rÃ©*\n"
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:8067
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "ne peut lire EIHD\n"
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:8071
 #, 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:8075
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " id majeur: %u, id mineur: %u\n"
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:8083
 msgid "executable"
 msgstr "exÃ©cutable"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:8086
 msgid "linkable image"
 msgstr "image liable"
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:8093
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " type image: %u (%s)"
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:8099
 msgid "native"
 msgstr "natif"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:8102
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:8109
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", sous-type: %u (%s)\n"
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:8116
 #, 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:8120
 #, c-format
 msgid " fixup info rva: "
 msgstr " correctif info rva: "
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:8122
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", vecteur de symbol rva: "
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:8125
 #, c-format
 msgid ""
 "\n"
@@ -7267,653 +8441,750 @@ msgstr ""
 "\n"
 " offset tableau version: %u\n"
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:8130
 #, 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:8136
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " fanions lieur: %08x:"
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:8167
 #, 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:8173
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:8180
 #, 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:8183
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", alias: %u\n"
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:8191
 #, c-format
 msgid "system version array information:\n"
 msgstr "information sur table de version systÃ¨me:\n"
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:8195
 #, 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:8205
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "ne peut lire la version EIHVN\n"
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:8208
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:8212
 msgid "BASE_IMAGE       "
 msgstr "BASE_IMAGE       "
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:8215
 msgid "MEMORY_MANAGEMENT"
 msgstr "MEMORY_MANAGEMENT"
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:8218
 msgid "IO               "
 msgstr "IO               "
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:8221
 msgid "FILES_VOLUMES    "
 msgstr "FILES_VOLUMES    "
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:8224
 msgid "PROCESS_SCHED    "
 msgstr "PROCESS_SCHED    "
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:8227
 msgid "SYSGEN           "
 msgstr "SYSGEN           "
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:8230
 msgid "CLUSTERS_LOCKMGR "
 msgstr "CLUSTERS_LOCKMGR "
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:8233
 msgid "LOGICAL_NAMES    "
 msgstr "LOGICAL_NAMES    "
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:8236
 msgid "SECURITY         "
 msgstr "SECURITY         "
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:8239
 msgid "IMAGE_ACTIVATOR  "
 msgstr "IMAGE_ACTIVATOR  "
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:8242
 msgid "NETWORKS         "
 msgstr "NETWORKS         "
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:8245
 msgid "COUNTERS         "
 msgstr "COUNTERS         "
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:8248
 msgid "STABLE           "
 msgstr "STABLE           "
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:8251
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:8254
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:8257
 msgid "VOLATILE         "
 msgstr "VOLATILE         "
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:8260
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:8263
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:8266
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESSING "
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:8269
 msgid "GALAXY           "
 msgstr "GALAXY           "
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:8272
 msgid "*unknown*        "
 msgstr "*inconnu*        "
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:8288 vms-alpha.c:8575
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "ne peut lire EIHA\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:8291
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "Activation de l'image:  (taille=%u)\n"
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:8294
 #, 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:8298
 #, 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:8302
 #, 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:8306
 #, 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:8310
 #, 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:8321
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "ne peut lire EIHI\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:8325
 #, 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:8331
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " nom de l'image    : %.*s\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:8332
 #, c-format
 msgid " link time        : %s\n"
 msgstr " heure de liaison  : %s\n"
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:8337
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " ident image       : %.*s\n"
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:8341
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " ident lieur       : %.*s\n"
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:8345
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " ident construction image: %.*s\n"
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:8354
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "ne peut lire EIHS\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:8358
 #, 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:8364
 #, 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:8369
 #, 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:8374
 #, 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:8387
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "ne peut lire EISD\n"
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:8398
 #, 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:8406
 #, 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:8411
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " fanions: 0x%04x"
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8449
 #, 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:8455
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8458
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8461
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8464
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8467
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8470
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8476
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8483
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " ident: 0x%08x, nom: %.*s\n"
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8494
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "ne peut lire DMT\n"
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8498
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Table de debug du module:\n"
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8507
 #, 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:8513
 #, 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:8523
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "ne peut lire le psect DMT\n"
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8527
 #, 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:8540
 #, c-format
 msgid "cannot read DST\n"
 msgstr "ne peut lire DST\n"
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8550
 #, c-format
 msgid "cannot read GST\n"
 msgstr "ne peut lire GST\n"
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8554
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Table des symboles globaux:\n"
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8581
 #, 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:8585
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  lien iaf : 0x%08x %08x\n"
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8589
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  lien correctif: 0x%08x %08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8592
 #, c-format
 msgid "  size : %u\n"
 msgstr "  taille : %u\n"
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8594
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  fanions: 0x%08x\n"
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8599
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8604
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8609
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8612
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8616
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8619
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8622
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8624
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8631
 #, c-format
 msgid " Shareable images:\n"
 msgstr " Images partageables:\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8642
 #, 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:8649
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " correctifs du rÃ©adressage des quad-mots:\n"
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8655
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " correctifs du rÃ©adressage des mots longs:\n"
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8661
 #, 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:8666
 #, 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:8671
 #, 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:8676
 #, 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:8684
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Changement de protection (%u entrÃ©es):\n"
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8693
 #, 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:9571
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: lien relocalisable pas supportÃ©\n"
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9642
 #, 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:1530
 #, 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:374
 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:379
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "_bfd_vms_output_counted appelÃ© avec trop d'octets"
 
-#: xcofflink.c:832
+#: xcofflink.c:505
+#, c-format
+msgid "%pB: warning: illegal symbol index %lu in relocs"
+msgstr "%pB: attention: symbole index illÃ©gal %lu dans les rÃ©adressages"
+
+#: xcofflink.c:924
 #, c-format
 msgid "%pB: XCOFF shared object when not producing XCOFF output"
 msgstr "%pB: objet XCOFF partagÃ© alors qu'on ne produit pas de sortie XCOFF"
 
-#: xcofflink.c:853
+#: xcofflink.c:945
 #, c-format
 msgid "%pB: dynamic object with no .loader section"
 msgstr "%pB: objet dynamique sans section .loader"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1527
 #, 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:1583
 #, 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:1606
 #, 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:1619
 #, 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:1650
 #, 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>"
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
+msgstr "%pB: XMC_TC0 symbol Â«Â %sÂ Â» est la classe %d scnlen %<PRIu64>"
 
-#: xcofflink.c:1680
+#: xcofflink.c:1785
+#, c-format
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr "%pB: l'entrÃ©e TOC Â«Â %sÂ Â» a un rÃ©adressage R_TLSML qui ne se cible pas lui-mÃªme"
+
+#: xcofflink.c:1819
 #, 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:1928
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr "%pB: XTY_LD Â«Â %sÂ Â» mal placÃ©"
 
-#: xcofflink.c:2109
+#: xcofflink.c:2271
 #, 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:3380
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr "%pB: impossible d'exporter le symbole interne Â«Â %sÂ Â»."
+
+#: xcofflink.c:3428
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: pas de tel symbole"
 
-#: xcofflink.c:3301
+#: xcofflink.c:3537
 #, 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:3885
 msgid "error: undefined symbol __rtinit"
 msgstr "erreur: symbole __rtinit non dÃ©fini"
 
-#: xcofflink.c:4060
+#: xcofflink.c:4902
+#, c-format
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr "%pB: Impossible de trouver une Ã©bauche csect dans le rÃ©adressage rangeof Ã  %#<PRIx64> et ciblant Â«Â %sÂ Â»"
+
+#: xcofflink.c:4931
+#, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr "%pB: Ne peut crÃ©er l'entrÃ©e de l'Ã©bauche Â«Â %sÂ Â»"
+
+#: xcofflink.c:5051
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr "DÃ©bordement de la table des entrÃ©es durant la gÃ©nÃ©ration de l'Ã©baucheÂ ; essayez l'option -mminimal-toc Ã  la compilation"
+
+#: xcofflink.c:5119
 #, 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:5131
 #, 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:5148
 #, 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:6227
 #, 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
+#: xcofflink.c:7343
+#, c-format
+msgid "Unable to link input file: %s"
+msgstr "Impossible de procÃ©der Ã  l'Ã©dition de liens sur le fichierÂ : %s"
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr "Impossible de charger la DLL."
+
+#: xtensa-dynconfig.c:86
+#, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr "%s est dÃ©fini mais n'a pas su Ãªtre chargÃ©Â : %s"
+
+#: xtensa-dynconfig.c:102
+#, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr "%s est chargÃ© mais le symbole Â«Â %sÂ Â» n'est pas trouvÃ©Â : %s"
+
+#: xtensa-dynconfig.c:115
+#, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr "%s est dÃ©fini mais le support des greffons est dÃ©sactivÃ©"
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2889 elfnn-riscv.c:5940
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "attribut inconnu pour le symbole Â«Â %sÂ Â»Â : 0x%02x"
+
+#: elfnn-aarch64.c:5486
 #, 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:5578
 #, 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:5591
+#, c-format
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr "%pB: erreur: l'immÃ©diat 0x%<PRIx64> de l'erratum 843419 est hors limites pour ADR (fichier d'entrÃ©e trop grand) et --fix-cortex-a53-843419=adr est utilisÃ©. ExÃ©cutez l'Ã©diteur de liens avec --fix-cortex-a53-843419=full Ã  la place"
+
+#: elfnn-aarch64.c:6134
 #, 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:6154
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr "%pB: le branchement conditionnel vers le symbole non dÃ©fini Â«Â %sÂ Â» n'est pas permis"
+
+#: elfnn-aarch64.c:6242 elfnn-kvx.c:2382
 #, 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:6356 elfnn-aarch64.c:6393
+#, 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:7384
 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:7412
 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:7979
 #, 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-aarch64.c:8940
 #, 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"
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr "%P: %pB: rÃ©adressage par copie sur le symbole protÃ©gÃ© non copiable Â«Â %sÂ Â»\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2311
-msgid "%X%P: internal error: out of range error\n"
-msgstr "%X%P: erreur interne: erreur car hors limite\n"
+#: elfnn-kvx.c:929
+msgid "%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: Impossible d'assigner Â«Â %pAÂ Â» Ã  une section de sortie. RÃ©essayez sans --enable-non-contiguous-regions.\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2315
-msgid "%X%P: internal error: unsupported relocation error\n"
-msgstr "%X%P: erreur interne: erreur car rÃ©adressage non supportÃ©\n"
+#: elfnn-kvx.c:2127
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): rÃ©adressage %s sans solution dans la section Â«Â %sÂ Â»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2325
-msgid "%X%P: internal error: unknown error\n"
-msgstr "%X%P: erreur interne: erreur inconnue\n"
+#: elfnn-kvx.c:2851
+#, c-format
+msgid "%s: Bad ELF id: `%d'"
+msgstr "%s: Mauvais id ELFÂ : Â«Â %dÂ Â»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2711
+#: elfnn-kvx.c:2906
 #, 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 "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: compilÃ© comme un objet de 32 bits et %s est de 64 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2729
+#: elfnn-kvx.c:2909
 #, 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 "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: compilÃ© comme un objet de 64 bits et %s est de 32 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2773
+#: elfnn-kvx.c:2911
+#, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: taille de l'objet ne concorde pas avec la taille de la cible %s"
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:2999
 #, 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."
+msgid "Private flags = 0x%lx : "
+msgstr "Fanions privÃ©s = 0x%lx : "
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2921
+#: elfnn-kvx.c:3003
 #, 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)."
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr "Coolidge (kv3) V1 64 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2946
+#: elfnn-kvx.c:3005
 #, 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)."
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr "Coolidge (kv3) V2 64 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2954
+#: elfnn-kvx.c:3007
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
-msgstr "erreur: %pB: XLEN (%u) non supportÃ©e, vous pourriez Ãªtre en train d'utiliser la mauvaise Ã©mulation."
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr "Coolidge (kv4) V1 64 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3039
+#: elfnn-kvx.c:3012
 #, 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 "Coolidge (kv3) V1 32 bits"
+msgstr "Coolidge (kv3) V1 32 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3055
+#: elfnn-kvx.c:3014
 #, 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."
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr "Coolidge (kv3) V2 32 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3096
+#: elfnn-kvx.c:3016
+#, c-format
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr "Coolidge (kv4) V1 32 bits"
+
+#: elfnn-kvx.c:3848
+#, c-format
+msgid "relocation against `%s' has faulty GOT type "
+msgstr "le rÃ©adressage par rapport Ã  Â«Â %sÂ Â» Ã  le type GOT dÃ©fectueux "
+
+#: elfnn-loongarch.c:303 elfnn-loongarch.c:355
+#, c-format
+msgid "%#<PRIx64> invaild imm"
+msgstr "%#<PRIx64> imm invalide"
+
+#: elfnn-loongarch.c:537 elfnn-riscv.c:4383
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
@@ -7922,111 +9193,306 @@ 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-loongarch.c:592
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr "%pB: ne peut lier ensemble des objets d'ABI diffÃ©rentes."
+
+#: elfnn-loongarch.c:735
+msgid "Internal error: unreachable."
+msgstr "Erreur interne: inatteignable."
+
+#: elfnn-loongarch.c:915
+#, c-format
+msgid "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s"
+msgstr "%pB:(%pA+%#lx): rÃ©adressage de %s en vertu de Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© lors de la construction de %sÂ ; recompilez avec %s%s"
+
+#: elfnn-loongarch.c:919
+msgid " and check the symbol visibility"
+msgstr " et vÃ©rifiez la visibilitÃ© du symbole"
+
+#: elfnn-loongarch.c:1045
+#, c-format
+msgid "%pB: stack based reloc type (%u) is not supported with -z pack-relative-relocs"
+msgstr "%pB: le rÃ©adressage de type (%u) basÃ© sur la pile n'est pas supportÃ© avec -z pack-relative-relocs"
+
+#: elfnn-loongarch.c:1240
+#, c-format
+msgid "%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE"
+msgstr "%pB: le rÃ©adressage R_LARCH_32 vers le symbole pas absolu Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© dans ELFCLASS64 en crÃ©ant un objet partagÃ© ou PIE"
+
+#: elfnn-loongarch.c:1305
+#, c-format
+msgid "%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary"
+msgstr "%pB: R_LARCH_ALIGN avec l'offset %<PRId64> n'est pas alignÃ© Ã  la frontiÃ¨re d'instruction"
+
+#: elfnn-loongarch.c:4196
+msgid "cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)"
+msgstr "impossible de rÃ©soudre R_LARCH_PCREL20_S2 par rapport Ã  un symbole faible non dÃ©fini avec un opÃ©rande hors de [-2048, 2048)"
+
+#: elfnn-loongarch.c:4706
+msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'"
+msgstr "recompilez avec Â«Â gcc -mno-relaxÂ Â» ou Â«Â as -mno-relaxÂ Â» ou Â«Â ld --no-relaxÂ Â»"
+
+#: elfnn-loongarch.c:5584 elfnn-riscv.c:5168
+#, 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"
+
+#: elfnn-riscv.c:385 elfnn-riscv.c:436 elfnn-riscv.c:484 elfnn-riscv.c:520
+#, 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"
+
+#: elfnn-riscv.c:675
+#, c-format
+msgid "%pB: error: unsupported PLT type: %u"
+msgstr "%pB: erreur: type PLT non supportÃ©Â : %u"
+
+#: elfnn-riscv.c:1120
+#, c-format
+msgid "%pB: relocation %s against absolute symbol `%s' can not be used when making a shared object"
+msgstr "%pB: le rÃ©adressage %s vers le symbole absolu Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© en crÃ©ant un objet partagÃ©"
+
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object"
+msgstr "%pB: le rÃ©adressage %s vers le symbole pas absolu Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© dans RV32 en crÃ©ant un objet partagÃ©"
+
+#: elfnn-riscv.c:2095
+#, c-format
+msgid "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "la taille finale de la valeur uleb128 Ã  l'offset 0x%lx dans %pA depuis %pB dÃ©passe l'espace disponible"
+
+#: elfnn-riscv.c:2337
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr "%pcrel_lo n'a pas de %pcrel_hi correspondant"
+
+#: elfnn-riscv.c:2340
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "%pcrel_lo avec un terme n'est pas permis avec R_RISCV_GOT_HI20"
+
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2345
+#, c-format
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr "%%pcrel_lo dÃ©borde avec un terme, la valeur de %%pcrel_hi est 0x%<PRIx64> sans terme, mais peut Ãªtre 0x%<PRIx64> aprÃ¨s ajout du terme de %%pcrel_lo"
+
+#: elfnn-riscv.c:2353
+#, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr "%pcrel_lo dÃ©borde avec un terme"
+
+#: elfnn-riscv.c:2843
+#, c-format
+msgid "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up"
+msgstr "%pB: attention: R_RISCV_SUB_ULEB128 avec un terme non nul, veuillez recompiler avec binutils 2.42 ou supÃ©rieur"
+
+#: elfnn-riscv.c:2923
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "Le terme n'est pas permis avec R_RISCV_GOT_HI20"
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:3022
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: rÃ©adressage de %s en vertu de Â«Â %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\n"
+
+#: elfnn-riscv.c:3103
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "symbole de section %pcrel_lo avec un opÃ©rande"
+
+#: elfnn-riscv.c:3124
+#, c-format
+msgid "%tlsdesc_lo with addend"
+msgstr "%tlsdesc_lo avec un terme"
+
+#: elfnn-riscv.c:3357
+#, 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:3392
+msgid "%X%P: internal error: out of range error\n"
+msgstr "%X%P: erreur interne: erreur car hors limite\n"
+
+#: elfnn-riscv.c:3397
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "%X%P: erreur interne: erreur car rÃ©adressage non supportÃ©\n"
+
+#: elfnn-riscv.c:3403
+msgid "dangerous relocation error"
+msgstr "erreur de rÃ©adressage dangereux"
+
+#: elfnn-riscv.c:3409
+msgid "%X%P: internal error: unknown error\n"
+msgstr "%X%P: erreur interne: erreur inconnue\n"
+
+#: elfnn-riscv.c:3982
+#, 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Â Â»."
+
+#: elfnn-riscv.c:4025
+#, 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"
+
+#: elfnn-riscv.c:4162
+#, 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)"
+
+#: elfnn-riscv.c:4182
+#, 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)"
+
+#: elfnn-riscv.c:4190
+#, c-format
+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"
+
+#: elfnn-riscv.c:4314
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr "avertissement: la version de spec privilÃ©gie 1.9.1 ne peut pas Ãªtre liÃ©e avec d'autres versions de spec"
+
+#: elfnn-riscv.c:4342
+#, 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"
+
+#: elfnn-riscv.c:4439
 #, 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:4449
 #, 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:4473
 #, 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"
+msgid "warning: %pB: unknown RISCV ABI object attribute %d"
+msgstr "attention: %pB: attribut d'objet ABI RISCV %d inconnu"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object"
+msgstr "%pB: le rÃ©adressage %s vers le symbole pas absolu Â«Â %sÂ Â» ne peut pas Ãªtre utilisÃ© dans RV64 en crÃ©ant un objet partagÃ©"
+
+#: peXXigen.c:161
 #, 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:188
 #, 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:199
 #, 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:928
+#, c-format
+msgid "%pB:%.8s: section below image base"
+msgstr "%pB:%.8s: section en dessous de la base de l'image"
+
+#: peXXigen.c:933
 #, 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:%.8s: RVA truncated"
+msgstr "%pB:%.8s: RVA tronquÃ©"
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:1066
 #, 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:1232
 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:1233
 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:1234
 msgid "Resource Directory [.rsrc]"
 msgstr "RÃ©pertoire des resources [.rsrc]"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1235
 msgid "Exception Directory [.pdata]"
 msgstr "RÃ©pertoire des exceptions [.pdata]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1236
 msgid "Security Directory"
 msgstr "RÃ©pertoire de la sÃ©curitÃ©"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1237
 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:1238
 msgid "Debug Directory"
 msgstr "RÃ©pertoire de dÃ©bug"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1239
 msgid "Description Directory"
 msgstr "RÃ©pertoire de description"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1240
 msgid "Special Directory"
 msgstr "RÃ©pertoire spÃ©cial"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1241
 msgid "Thread Storage Directory [.tls]"
 msgstr "RÃ©pertoire des files de stockage [.tls]"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1242
 msgid "Load Configuration Directory"
 msgstr "RÃ©pertoire de chargement de configuration"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1243
 msgid "Bound Import Directory"
 msgstr "RÃ©pertoire des importations limitÃ©es"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1244
 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:1245
 msgid "Delay Import Directory"
 msgstr "RÃ©pertoire des dÃ©lais d'importation"
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1246
 msgid "CLR Runtime Header"
 msgstr "En-tÃªte exÃ©cutable CLR"
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1247
 msgid "Reserved"
 msgstr "RÃ©servÃ©"
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1312
 #, c-format
 msgid ""
 "\n"
@@ -8035,7 +9501,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:1318
 #, c-format
 msgid ""
 "\n"
@@ -8044,7 +9510,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:1325
 #, c-format
 msgid ""
 "\n"
@@ -8053,30 +9519,7 @@ msgstr ""
 "\n"
 "Il y a une table d'importation dans %s Ã  0x%lx\n"
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
-#, c-format
-msgid ""
-"\n"
-"Function descriptor located at the start address: %04lx\n"
-msgstr ""
-"\n"
-"Descripteur de fonction localisÃ© Ã  l'adresse de dÃ©part: %04lx\n"
-
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
-#, 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
-#, c-format
-msgid ""
-"\n"
-"No reldata section! Function descriptor not decoded.\n"
-msgstr ""
-"\n"
-"Pas de section reldata! Descripteur de fonction pas dÃ©codÃ©.\n"
-
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1331
 #, c-format
 msgid ""
 "\n"
@@ -8085,7 +9528,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:1334
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -8094,7 +9537,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:1383
 #, c-format
 msgid ""
 "\n"
@@ -8103,12 +9546,12 @@ msgstr ""
 "\n"
 "\tNom DLL: %.*s\n"
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1399
 #, c-format
-msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
-msgstr "\tvma:  Hint/Ord Membre      Lien\n"
+msgid "\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"
+msgstr "\tvma:     Ordinal  Hint  Nom-Membre   Lien\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1424
 #, c-format
 msgid ""
 "\n"
@@ -8117,13 +9560,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:1474 peXXigen.c:1519
 #, c-format
-msgid "\t<corrupt: 0x%04lx>"
-msgstr "\t<corrompu: 0x%04lx>"
+msgid "\t<corrupt: 0x%08lx>"
+msgstr "\t<corrompu: 0x%08lx>"
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1613
 #, c-format
 msgid ""
 "\n"
@@ -8132,34 +9574,25 @@ 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:1626
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but that section has no contents\n"
-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
-#, c-format
-msgid ""
-"\n"
-"There is an export table in %s, but it does not fit into that section\n"
+"There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 "\n"
-"Il y a une table d'exportation dans %s, mais elle ne rentre pas dans la section\n"
+"Il y a une table d'exportation dans %s, mais elle est trop petite (%d)\n"
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1634
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it is too small (%d)\n"
+"There is an export table in %s, but contents cannot be read\n"
 msgstr ""
 "\n"
-"Il y a une table d'exportation dans %s, mais elle est trop petite (%d)\n"
+"Il y a une table d'exportation dans %s, mais le contenu ne sait pas Ãªtre lu\n"
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1640
 #, c-format
 msgid ""
 "\n"
@@ -8168,7 +9601,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:1671
 #, c-format
 msgid ""
 "\n"
@@ -8179,67 +9612,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:1675
 #, 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:1678
 #, 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:1682
 #, 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:1685
 #, 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:1696
 #, 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:1699
 #, c-format
 msgid "Number in:\n"
 msgstr "NumÃ©ro dans:\n"
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1702
 #, 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:1706
 #, 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:1709
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Table d'adresses\n"
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1712
 #, 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:1717
 #, 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:1722
 #, 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:1736
 #, c-format
 msgid ""
 "\n"
@@ -8248,51 +9681,49 @@ msgstr ""
 "\n"
 "Table d'adresses d'exportation -- base de nombre ordinal %ld\n"
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1746
 #, 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:1765
 msgid "Forwarder RVA"
 msgstr "Adresseur RVA"
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1777
 msgid "Export RVA"
 msgstr "Exportation RVA"
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1784
 #, c-format
 msgid ""
 "\n"
-"[Ordinal/Name Pointer] Table\n"
+"[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"
 msgstr ""
 "\n"
-"Table [Ordinal/Nom de pointeur]\n"
+"Table [Ordinal/Nom de pointeur] -- Base Ordinal %ld\n"
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1794
 #, 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:1801
 #, 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:1815
 #, c-format
-msgid "\t[%4ld] <corrupt offset: %lx>\n"
-msgstr "\t[%4ld] <offset corrompu: %lx>\n"
+msgid "\t[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>\n"
+msgstr "\t[%4ld] +base[%4ld]  %04lx <offset corrompu: %lx>\n"
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1872 peXXigen.c:2042
 #, 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:1876 peXXigen.c:2046
 #, c-format
 msgid ""
 "\n"
@@ -8301,12 +9732,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:1879
 #, 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:1881
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -8315,27 +9746,12 @@ 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:1894
 #, 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
-#, c-format
-msgid " Register save millicode"
-msgstr " Registre a prÃ©servÃ© le millicode"
-
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
-#, c-format
-msgid " Register restore millicode"
-msgstr " Registre a restaurÃ© le millicode"
-
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
-#, c-format
-msgid " Glue code sequence"
-msgstr " SÃ©quence du code de liants"
-
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2048
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -8344,7 +9760,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:2173
 #, c-format
 msgid ""
 "\n"
@@ -8355,7 +9771,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:2202
 #, c-format
 msgid ""
 "\n"
@@ -8364,62 +9780,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:2220
 #, 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:2281
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "%03x %*.s EntrÃ©e: "
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2305
 #, 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:2325
 #, 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:2335
 #, 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:2340
 #, c-format
 msgid "ID: %#08lx"
 msgstr "ID: %#08lx"
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2343
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Valeur: %#08lx\n"
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2365
 #, 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:2407
 #, 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:2415
 #, 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:2503
 #, 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:2527
 #, c-format
 msgid ""
 "\n"
@@ -8428,17 +9844,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:2533
 #, 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:2536
 #, 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:2593
 #, c-format
 msgid ""
 "\n"
@@ -8447,7 +9863,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:2599
 #, c-format
 msgid ""
 "\n"
@@ -8456,7 +9872,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:2606
 #, c-format
 msgid ""
 "\n"
@@ -8465,7 +9881,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:2611
 #, c-format
 msgid ""
 "\n"
@@ -8475,24 +9891,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:2618
 #, 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:2623
 #, 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:2671
 #, c-format
-msgid "(format %c%c%c%c signature %s age %ld)\n"
-msgstr "(format %c%c%c%c signature %s age %ld)\n"
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr "(format %c%c%c%c signature %s age %ld pdb %s)\n"
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2683
 #, 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 +9916,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:2767
 #, c-format
 msgid ""
 "\n"
@@ -8509,99 +9925,436 @@ msgstr ""
 "\n"
 "CaractÃ©ristiques 0x%x\n"
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3052
 #, 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>)"
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr "%pB: Le rÃ©pertoire de donnÃ©es (%lx octets Ã  %<PRIx64>) s'Ã©tend au delÃ  de la frontiÃ¨re de section Ã  %<PRIx64>"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3093
 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:3102
 #, 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:3907
 #, 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:4042
 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:4060
 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:4102
 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:4107
 #, 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:4174
 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:4181
 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:4293
 #, 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:4301
 #, 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:4441 peXXigen.c:4461 peXXigen.c:4482 peXXigen.c:4502
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s is missing"
+msgstr "%pB: impossible de remplir DataDirectory[%d]: %s est manquant"
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4544 peXXigen.c:4590 peXXigen.c:4614 peXXigen.c:4698
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"
+msgstr "%pB: impossible de remplir DataDirectory[%d]: %s n'est pas dÃ©fini correctement"
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4651
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not properly aligned"
+msgstr "%pB: impossible de remplir DataDirectory[%d]: %s n'est pas correctement alignÃ©"
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
+#: peXXigen.c:4682
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: size too large for the containing section"
+msgstr "%pB: impossible de remplir DataDirectory[%d]: taille trop grande pour la section contenante"
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4690
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: size can't be read from %s"
+msgstr "%pB: impossible de remplir DataDirectory[%d]: la taille ne peut pas Ãªtre lue de %s"
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
 #, 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 "%F%pA: failed to align section\n"
+#~ msgstr "%F%pA: Ã©chec lors de l'alignement de la section\n"
 
-#~ 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 "c' or `zcf"
+#~ msgstr "cÂ Â» ou Â«Â zcf"
+
+#~ msgid "c' or `zcd"
+#~ msgstr "cÂ Â» ou Â«Â zcd"
+
+# 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.
+#, c-format
+#~ msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD only\n"
+#~ msgstr "%pB(%pA+0x%v): rÃ©adressage %s vers Â«Â %sÂ Â» ne peut Ãªtre utilisÃ© que dans ADD\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>"
+#, 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"
+
+#, 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"
+
+#, 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"
+
+#, 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"
+
+#, c-format
+#~ msgid "error: %pB: big-endian R2 is not supported"
+#~ msgstr "erreur: %pB: R2 gros boutiste n'est pas supportÃ©"
+
+#, c-format
+#~ msgid "error: %pB: conflicting CPU architectures %d/%d"
+#~ msgstr "erreur: %pB: architectures CPU conflictuelles %d/%d"
+
+#, c-format
+#~ 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"
+
+#, 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 "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"
+
+#, c-format
+#~ msgid "dynamic variable `%s' is zero size"
+#~ msgstr "la variable dynamique Â«Â %sÂ Â» a une taille nulle"
+
+#, 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."
+
+#, c-format
+#~ msgid "%pB: unhandled import type; %x"
+#~ msgstr "%pB: type d'importation non traitÃ©e; %x"
+
+#, c-format
+#~ msgid "warning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%u"
+#~ msgstr "avertissement: %pB utilise la version de spec privilÃ©gie %u.%u.%u mais la sortie utilise la version %u.%u.%u"
+
+#, 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"
+
+#, c-format
+#~ msgid "not mapping: env var not set\n"
+#~ msgstr "pas de table de projection: variable d'environnement pas initialisÃ©e\n"
+
+#, 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"
+
+#, 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>"
+
+#, c-format
+#~ msgid "%pB: no valid group sections found"
+#~ msgstr "%pB: aucune section de groupe valable trouvÃ©e"
+
+#, c-format
+#~ msgid "%pB: no group info for section '%pA'"
+#~ msgstr "%pB: aucune info de groupe pour la section Â«Â %pAÂ Â»"
+
+#, 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"
+
+#, c-format
+#~ msgid " [Maverick float format]"
+#~ msgstr " [format flottant Maverick]"
+
+#, 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"
+
+#, 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"
+
+#, 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"
+
+#, 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"
+
+#, c-format
+#~ msgid "%pB: unsupported relocation type name %s"
+#~ msgstr "%pB: nom de type de rÃ©adressage %s non supportÃ©"
+
+#~ msgid "d' and `c"
+#~ msgstr "dÂ Â» et Â«Â c"
+
+#~ msgid "zvknha"
+#~ msgstr "zvknha"
+
+#~ msgid "zvknhb"
+#~ msgstr "zvknhb"
+
+#~ 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"
+
+#~ msgid "Deprecated %s called\n"
+#~ msgstr "%s appel dÃ©prÃ©ciÃ©\n"
+
+#~ msgid "cannot read GST record length\n"
+#~ msgstr "impossible de lire la longueur de l'enregistrement GST\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but that section has no contents\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Il y a une table d'exportation dans %s, mais cette section n'a pas de contenu\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but it does not fit into that section\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Il y a une table d'exportation dans %s, mais elle ne rentre pas dans la section\n"
+
+#~ msgid "%pB: unable to initialize compress status for section %s"
+#~ msgstr "%pB: impossible d'initialiser le statut de compression de la section %s"
+
+#~ msgid "%pB: unable to initialize decompress status for section %s"
+#~ msgstr "%pB: impossible d'initialiser le statut de dÃ©compression de la section %s"
+
+#~ 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)"
+
+#~ msgid "DWARF error: section %s is larger than 10x its filesize! (0x%lx vs 0x%lx)"
+#~ msgstr "erreur DWARF: la section %s est plus grande que 10Ã— sa taille du fichierÂ ! (0x%lx contre 0x%lx)"
+
+#~ 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"
+
+#~ 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"
 
-#~ 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>"
+#~ 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"
+
+#~ msgid "%pB: %pA+%"
+#~ msgstr "%pB: %pA+%"
+
+#~ 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"
+
+#~ msgid "%s: standard ISA extension `%c' is not in canonical order"
+#~ msgstr "%s: l'extension standard ISA Â«Â %cÂ Â» n'est pas dans l'ordre canonique"
+
+#~ msgid "%s: unknown prefix class for the ISA extension `%s'"
+#~ msgstr "%s: classe de prÃ©fixe inconnue pour l'extension ISA Â«Â %sÂ Â»"
+
+#~ msgid "rv32e does not support the `f' extension"
+#~ msgstr "rv32e ne supporte pas l'extension Â«Â fÂ Â»"
+
+#~ 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"
+
+#~ msgid "%pB: no core to allocate section name %s"
+#~ msgstr "%pB: pas de noyau pour allouer un nom de section %s"
+
+#~ 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"
+
+#~ 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"
+
+#~ msgid "%pB: page size is too large (0x%x)"
+#~ msgstr "%pB: la taille de page est trop grande (0x%x)"
+
+#~ msgid "%s: duplicate prefixed ISA extension `%s'"
+#~ msgstr "%s: extension ISA prÃ©fixÃ©e Â«Â %sÂ Â» dupliquÃ©e"
+
+#~ msgid "%s: prefixed ISA extension `%s' is not in expected order.  It must come before `%s'"
+#~ msgstr "%s: l'extension ISA prÃ©fixÃ©e Â«Â %sÂ Â» n'est pas dans l'ordre attendu. Elle doit apparaÃ®tre avant Â«Â %sÂ Â»"
+
+#~ msgid "warning: %pB: mis-matched ISA version %d.%d for '%s' extension, the output version is %d.%d"
+#~ msgstr "avertissement: %pB: version ISA %d.%d non concordante pour l'extension Â«Â %sÂ Â», la version de sortie est %d.%d"
+
+#~ msgid "%pB: TLS relocation at (0x%"
+#~ msgstr "%pB: rÃ©adressage TLS Ã  (0x%"
+
+#~ 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)"
+
+#~ msgid "internal error: RL78 reloc stack overflow"
+#~ msgstr "erreur interne: dÃ©bordement de la pile de rÃ©adressages RL78"
+
+#~ 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  branchements          %lu\n"
+#~ "  aj. branchements toc  %lu\n"
+#~ "  branchements notoc    %lu\n"
+#~ "  branchements les deux %lu\n"
+#~ "  long branchements     %lu\n"
+#~ "  aj. long toc          %lu\n"
+#~ "  long notoc            %lu\n"
+#~ "  long les deux         %lu\n"
+#~ "  appels plt            %lu\n"
+#~ "  appels plt save       %lu\n"
+#~ "  appels plt notoc      %lu\n"
+#~ "  appels plt les deux   %lu\n"
+#~ "  entrÃ©es globales      %lu"
+
+#~ 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>"
+
+#~ msgid "-march=%s: expect number after `%dp'"
+#~ msgstr "-march=%s: nombre attendu aprÃ¨s Â«Â %dpÂ Â»"
+
+#~ msgid "-march=%s: rv%de is not a valid base ISA"
+#~ msgstr "-march=%s: rv%de n'est pas une base ISA valable"
+
+#~ msgid "   Error: length larger than remaining space in record\n"
+#~ msgstr "   Erreur: longueur plus grande que l'espace restant dans l'enregistrement\n"
+
+#~ msgid "STA_QW (stack quadword) 0x%08x %08x\n"
+#~ msgstr "STA_QW (pile quad mot) 0x%08x %08x\n"
+
+#~ msgid "%pB: error: erratum 843419 immediate 0x%"
+#~ msgstr "%pB: erreur: erratum 843419 immÃ©diat 0x%"
+
+#~ 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]"
+
+#~ msgid "%pA has both ordered and unordered sections"
+#~ msgstr "%pA a, Ã  la fois, des sections ordonnÃ©es et dÃ©sordonnÃ©es"
+
+#~ msgid "%F%P: %pA has ordered sections with incompatible alignments\n"
+#~ msgstr "%F%P: %pA a des sections ordonnÃ©es avec des alignements incompatibles\n"
+
+#~ msgid "-march=%s: unexpected ISA string at end: %s"
+#~ msgstr "-march=%s: chaÃ®ne ISA inattendue Ã  la finÂ : %s"
+
+#~ msgid "%pB: warning: sh_link not set for section `%pA'"
+#~ msgstr "%pB: attention: sh_link n'a pas de valeur pour la section Â«Â %pAÂ Â»"
+
+#~ msgid "-march=%s: unsupported ISA subset `%c'"
+#~ msgstr "-march=%s: sous-ensemble ISA Â«Â %cÂ Â» non supportÃ©"
+
+#~ msgid "-march=%s: `d' extension requires `f' extension"
+#~ msgstr "-march=%s: l'extension Â«Â dÂ Â» requiert l'extension Â«Â fÂ Â»"
+
+#~ msgid "-march=%s: `q' extension requires `d' extension"
+#~ msgstr "-march=%s: l'extension Â«Â qÂ Â» requiert l'extension Â«Â dÂ Â»"
+
+#~ msgid ""
+#~ "\n"
+#~ "Function descriptor located at the start address: %04lx\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Descripteur de fonction localisÃ© Ã  l'adresse de dÃ©part: %04lx\n"
+
+#~ msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
+#~ msgstr "\tcode-base %08lx tab. des entrÃ©es (chargeable/actuel) %08lx/%08lx\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "No reldata section! Function descriptor not decoded.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Pas de section reldata! Descripteur de fonction pas dÃ©codÃ©.\n"
+
+#~ msgid " Register save millicode"
+#~ msgstr " Registre a prÃ©servÃ© le millicode"
+
+#~ msgid " Register restore millicode"
+#~ msgstr " Registre a restaurÃ© le millicode"
+
+#~ msgid " Glue code sequence"
+#~ msgstr " SÃ©quence du code de liants"
+
+#~ 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 "%pB: can't link hard-float modules with soft-float modules"
 #~ msgstr "%pB: impossible de lier des modules utilisant des flottants matÃ©riels avec des modules utilisant des flottants logiciels"
@@ -8621,9 +10374,6 @@ msgstr "%pB: impossible de remplir DataD
 #~ msgid "%B: Invalid relocation type imported: %d"
 #~ msgstr "%B: Type de rÃ©adressage importÃ© invalide: %d"
 
-#~ msgid "%P: %B: unexpected relocation type\n"
-#~ msgstr "%P: %B: type de rÃ©adressage non supportÃ©\n"
-
 #~ msgid "%B: unknown/unsupported relocation type %d"
 #~ msgstr "%B: type de rÃ©adressage %d inconnu ou non supportÃ©"
 
@@ -8690,9 +10440,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 +10496,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,15 +10538,9 @@ 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"
 
-#~ msgid "%B: invalid relocation type %d"
-#~ msgstr "%B: type de rÃ©adressage %d invalide"
-
 #~ msgid "%B: invalid i960 reloc number: %d"
 #~ msgstr "%B: numÃ©ro de rÃ©adressage i960 invalide: %d"
 
@@ -8836,9 +10574,6 @@ msgstr "%pB: impossible de remplir DataD
 #~ msgid "%B: unrecognised MCore reloc number: %d"
 #~ msgstr "%B: numÃ©ro de rÃ©adressage MCore non reconnu: %d"
 
-#~ msgid "%B: Unknown relocation type %d\n"
-#~ msgstr "%B: Type de rÃ©adressage %d inconnu\n"
-
 #~ msgid "%B: invalid MEP reloc number: %d"
 #~ msgstr "%B: numÃ©ro de rÃ©adressage MEP invalide: %d"
 
@@ -8929,15 +10664,6 @@ msgstr "%pB: impossible de remplir DataD
 #~ msgid "%B: unrecognised SH reloc number: %d"
 #~ msgstr "%B: numÃ©ro de rÃ©adressage SH non reconnu: %d"
 
-#~ msgid "%B: compiled as 32-bit object and %B is 64-bit"
-#~ msgstr "%B: compilÃ© comme un objet de 32 bits et %B est de 64 bits"
-
-#~ msgid "%B: compiled as 64-bit object and %B is 32-bit"
-#~ msgstr "%B: compilÃ© comme un objet de 64 bits et %B est de 32 bits"
-
-#~ msgid "%B: object size does not match that of target %B"
-#~ msgstr "%B: taille de l'objet ne concorde pas avec la taille de la cible %B"
-
 #~ msgid "%B: encountered datalabel symbol in input"
 #~ msgstr "%B: rencontre du symbole d'une Ã©tiquette de donnÃ©e dans l'entrÃ©e"
 
@@ -9133,9 +10859,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"
 
@@ -9169,9 +10892,6 @@ msgstr "%pB: impossible de remplir DataD
 #~ msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
 #~ msgstr "%s: utilise des champs e_flags (0x%lx) diffÃ©rents des modules prÃ©cÃ©dents (0x%lx)"
 
-#~ msgid "%s: unknown relocation type %d"
-#~ msgstr "%s: type de rÃ©adressage %d inconnu"
-
 #~ msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)"
 #~ msgstr "%s: la cible (%s) du rÃ©adressage %s est dans la mauvaise section (%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.20200303/bfd/po/ka.gmo ./bfd/po/ka.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ka.gmo	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/po/ka.gmo	2026-03-05 02:15:54.000000000 +0000
@@ -0,0 +1,48 @@
+Þ•.0 C$(T
U
cqsƒ–¨¾Õë6V	hrŽ“¬	µ¿Ðåþ.;JL"l�­ÀÒäõþ
+ -?Wv}
��ù¡
›	©	½	¿	4×	7
+7D
+1|
+®
+Ä
+9ä
+€Ÿ	±Q»
ˆ&'¯:×"
A5
Mw
>Å
A3F.z©L°wýLu9Â1ü+.CZ+ž^Ê4)+^7ŠQÂXmlƒ(ð.
+,) $#"!	-*('&%+
&,@-ÿÿÿÿIZÿÿÿÿ	    TLS: %pA	non-TLS: %pA
+
+      Type: %s
+Dynamic Section:
+
+Program Header:
+
+Version References:
+
+Version definitions:
+#<invalid error code>%F%P: already_linked_table: %E
+%pB: %s unsupported%pB: warning: %s: line number overflow: 0x%lx > 0xffff<corrupt info> %s<corrupt>Merging program properties
+NonePlease report this bug.
+Reservedbad valuedivision by zeroerror reading %s: %sfile format is ambiguousfile format not recognizedfile in wrong formatfile too bigfile truncatedhinternal error: dangerous errorinternal error: out of range errorinternal error: unknown errorinvalid bfd targetinvalid operationmalformed archivememory exhaustedno errorno more archived filesno symbolsout of rangereopening %pB: %ssection has no contentssorry, cannot handle this filesymbolsystem call errorunknown erroryesProject-Id-Version: bfd 2.39.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2022-12-31 12:18+0000
+PO-Revision-Date: 2023-04-22 20:38+0200
+Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>
+Language-Team: Georgian <(nothing)>
+Language: ka
+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=2; plural=(n != 1);
+X-Generator: Poedit 3.2.2
+	    TLS: %pA	áƒ�áƒ áƒ�-TLS: %pA
+
+      áƒ¢áƒ˜áƒžáƒ˜: %s
+áƒ“áƒ˜áƒœáƒ�áƒ›áƒ˜áƒ™áƒ£áƒ áƒ˜ áƒ¡áƒ”áƒ¥áƒªáƒ˜áƒ�:
+
+áƒžáƒ áƒ�áƒ’áƒ áƒ�áƒ›áƒ˜áƒ¡ áƒ—áƒ�áƒ•áƒ¡áƒ�áƒ áƒ—áƒ˜:
+
+áƒ•áƒ”áƒ áƒ¡áƒ˜áƒ˜áƒ¡ áƒ›áƒ˜áƒ›áƒ�áƒ áƒ—áƒ•áƒ”áƒ‘áƒ˜:
+
+áƒ•áƒ”áƒ áƒ¡áƒ˜áƒ˜áƒ¡ áƒ�áƒ¦áƒ¬áƒ”áƒ áƒ”áƒ‘áƒ˜:
+#<invalid error code>%F%P: already_linked_table: %E
+%pB: %s áƒ›áƒ®áƒ�áƒ áƒ“áƒ�áƒ­áƒ”áƒ áƒ˜áƒšáƒ˜ áƒ�áƒ áƒ�áƒ�%pB: áƒ’áƒ�áƒ¤áƒ áƒ—áƒ®áƒ˜áƒšáƒ”áƒ‘áƒ�: %s: áƒ®áƒ�áƒ–áƒ˜áƒ¡ áƒœáƒ�áƒ›áƒ áƒ”áƒ‘áƒ˜áƒ¡ áƒ’áƒ�áƒ“áƒ�áƒ•áƒ¡áƒ”áƒ‘áƒ�: 0x%lx > 0xffff<corrupt info> %s<corrupt>áƒžáƒ áƒ�áƒ’áƒ áƒ�áƒ›áƒ˜áƒ¡ áƒ—áƒ•áƒ˜áƒ¡áƒ”áƒ‘áƒ”áƒ‘áƒ˜áƒ¡ áƒ¨áƒ”áƒ áƒ¬áƒ§áƒ›áƒ�
+áƒ�áƒ áƒ�áƒ¤áƒ”áƒ áƒ˜áƒ¡áƒ’áƒ—áƒ®áƒ�áƒ•áƒ— áƒ’áƒ�áƒ“áƒ�áƒ�áƒ’áƒ–áƒ�áƒ•áƒœáƒ�áƒ— áƒ�áƒœáƒ’áƒ�áƒ áƒ˜áƒ¨áƒ˜ áƒ�áƒ› áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ˜áƒ¡ áƒ¨áƒ”áƒ¡áƒ�áƒ®áƒ”áƒ‘.
+áƒ áƒ”áƒ–áƒ”áƒ áƒ•áƒ˜áƒ áƒ”áƒ‘áƒ£áƒšáƒ˜áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ›áƒœáƒ˜áƒ¨áƒ•áƒœáƒ”áƒšáƒ�áƒ‘áƒ�áƒœáƒ£áƒšáƒ–áƒ” áƒ’áƒ�áƒ§áƒ�áƒ¤áƒ�áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ� '%s'-áƒ˜áƒ¡ áƒ™áƒ˜áƒ—áƒ®áƒ•áƒ˜áƒ¡áƒ�áƒ¡. %sáƒ¤áƒ�áƒ˜áƒšáƒ˜áƒ¡ áƒ¤áƒ�áƒ áƒ›áƒ�áƒ¢áƒ˜ áƒ’áƒ�áƒ£áƒ áƒ™áƒ•áƒ”áƒ•áƒ”áƒšáƒ˜áƒ�áƒ¤áƒ�áƒ˜áƒšáƒ˜áƒ¡ áƒ¤áƒ�áƒ áƒ›áƒ�áƒ¢áƒ˜ áƒ£áƒªáƒœáƒ�áƒ‘áƒ˜áƒ�áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ¤áƒ�áƒ˜áƒšáƒ˜áƒ¡ áƒ¤áƒ�áƒ áƒ›áƒ�áƒ¢áƒ˜áƒ¤áƒ�áƒ˜áƒšáƒ˜ .áƒ«áƒ�áƒšáƒ˜áƒ�áƒœ áƒ“áƒ˜áƒ“áƒ˜áƒ�áƒ¤áƒ�áƒ˜áƒšáƒ˜ áƒ¬áƒ�áƒ™áƒ•áƒ”áƒ—áƒ˜áƒšáƒ˜áƒ�áƒ¡áƒ—áƒ¨áƒ˜áƒ“áƒ� áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�: áƒ¡áƒ�áƒ¨áƒ˜áƒ¨áƒ˜ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�áƒ¨áƒ˜áƒ“áƒ� áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�: áƒ“áƒ˜áƒ�áƒžáƒ�áƒ–áƒ�áƒœáƒ¡ áƒ’áƒ�áƒ“áƒ�áƒªáƒ˜áƒšáƒ”áƒ‘áƒ˜áƒ¡ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�áƒ¨áƒ˜áƒ“áƒ� áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�: áƒ£áƒªáƒœáƒ�áƒ‘áƒ˜ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�bfd-áƒ˜áƒ¡ áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ¡áƒ�áƒ›áƒ˜áƒ–áƒœáƒ”áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ�áƒžáƒ”áƒ áƒ�áƒªáƒ˜áƒ�áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ�áƒ áƒ¥áƒ˜áƒ•áƒ˜áƒ›áƒ”áƒ®áƒ¡áƒ˜áƒ”áƒ áƒ”áƒ‘áƒ� áƒ’áƒ�áƒ“áƒ�áƒ•áƒ¡áƒ”áƒ‘áƒ£áƒšáƒ˜áƒ�áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ˜áƒ¡ áƒ’áƒ�áƒ áƒ”áƒ¨áƒ”áƒ›áƒ”áƒ¢áƒ˜ áƒ“áƒ�áƒ�áƒ áƒ¥áƒ˜áƒ•áƒ”áƒ‘áƒ£áƒšáƒ˜ áƒ¤áƒ�áƒ˜áƒšáƒ˜ áƒ•áƒ”áƒ  áƒ•áƒ˜áƒžáƒ�áƒ•áƒ”áƒ¡áƒ˜áƒ›áƒ‘áƒ�áƒšáƒ�áƒ”áƒ‘áƒ˜áƒ¡ áƒ’áƒ�áƒ áƒ”áƒ¨áƒ”áƒ“áƒ˜áƒ�áƒžáƒ�áƒ–áƒ�áƒœáƒ¡ áƒ’áƒ�áƒ áƒ”áƒ—%pB-áƒ˜áƒ¡ áƒ—áƒ�áƒ•áƒ˜áƒ“áƒ�áƒœ áƒ’áƒ�áƒ®áƒ¡áƒœáƒ�: %sáƒ¡áƒ”áƒ¥áƒªáƒ˜áƒ�áƒ¡ áƒ¨áƒ”áƒ›áƒªáƒ•áƒ”áƒšáƒ�áƒ‘áƒ� áƒ�áƒ  áƒ’áƒ�áƒ�áƒ©áƒœáƒ˜áƒ�áƒ�áƒ› áƒ¤áƒ�áƒ˜áƒšáƒ˜áƒ¡ áƒ“áƒ�áƒ›áƒ£áƒ¨áƒ�áƒ•áƒ”áƒ‘áƒ� áƒ�áƒ  áƒ¨áƒ”áƒ›áƒ˜áƒ«áƒšáƒ˜áƒ�áƒ¡áƒ˜áƒ›áƒ‘áƒ�áƒšáƒ�áƒ¡áƒ˜áƒ¡áƒ¢áƒ”áƒ›áƒ£áƒ áƒ˜ áƒ¤áƒ£áƒœáƒ¥áƒªáƒ˜áƒ˜áƒ¡ áƒ’áƒ�áƒ›áƒ�áƒ«áƒ�áƒ®áƒ”áƒ‘áƒ˜áƒ¡ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�áƒ£áƒªáƒœáƒ�áƒ‘áƒ˜ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�áƒ“áƒ˜áƒ�áƒ®PRIx64%pB: %#: warning: bad count%pB: %#: áƒ’áƒ�áƒ¤áƒ áƒ—áƒ®áƒ˜áƒšáƒ”áƒ‘áƒ�: áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ áƒ�áƒ�áƒ“áƒ”áƒœáƒ�áƒ‘áƒ�
\ 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.20200303/bfd/po/ka.po ./bfd/po/ka.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ka.po	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/po/ka.po	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,9348 @@
+# Georgian translation for bfd
+# Copyright (C) 2023 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Temuri Doghonadze <temuri.doghonadze@gmail.com>, 2023
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: bfd 2.39.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2022-12-31 12:18+0000\n"
+"PO-Revision-Date: 2023-04-22 20:38+0200\n"
+"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
+"Language-Team: Georgian <(nothing)>\n"
+"Language: ka\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=2; plural=(n != 1);\n"
+"X-Generator: Poedit 3.2.2\n"
+
+#: aout-cris.c:196
+#, c-format
+msgid "%pB: unsupported relocation type exported: %#x"
+msgstr ""
+
+#: aout-cris.c:242
+#, c-format
+msgid "%pB: unsupported relocation type imported: %#x"
+msgstr ""
+
+#: aout-cris.c:254
+#, c-format
+msgid "%pB: bad relocation record imported: %d"
+msgstr ""
+
+#: aoutx.h:1265 aoutx.h:1612 pdp11.c:1238 pdp11.c:1511
+#, c-format
+msgid "%pB: can not represent section `%pA' in a.out object file format"
+msgstr ""
+
+#: aoutx.h:1576 pdp11.c:1483
+#, c-format
+msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
+msgstr ""
+
+#: aoutx.h:1579 vms-alpha.c:8429
+msgid "*unknown*"
+msgstr ""
+
+#: aoutx.h:1715 pdp11.c:1579
+#, c-format
+msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
+msgstr ""
+
+#: aoutx.h:1963
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr ""
+
+#: aoutx.h:2407 aoutx.h:2425 pdp11.c:2062
+#, c-format
+msgid "%pB: attempt to write out unknown reloc type"
+msgstr ""
+
+#: aoutx.h:4081 pdp11.c:3447
+#, c-format
+msgid "%pB: unsupported relocation type"
+msgstr ""
+
+#. Unknown relocation.
+#: aoutx.h:4401 coff-alpha.c:601 coff-alpha.c:1521 coff-mips.c:356
+#: coff-rs6000.c:2955 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:813
+#: elf32-arc.c:532 elf32-arm.c:1985 elf32-avr.c:962 elf32-bfin.c:1063
+#: elf32-bfin.c:4686 elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467
+#: elf32-crx.c:429 elf32-csky.c:991 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:2559 elf32-frv.c:6240 elf32-ft32.c:304 elf32-h8300.c:302
+#: elf32-i386.c:394 elf32-ip2k.c:1240 elf32-iq2000.c:442 elf32-lm32.c:496
+#: elf32-m32c.c:305 elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2209
+#: elf32-m68hc11.c:390 elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354
+#: elf32-mcore.c:440 elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:690
+#: elf32-microblaze.c:1002 elf32-mips.c:2239 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3288
+#: elf32-nds32.c:3309 elf32-nds32.c:5078 elf32-nios2.c:3019 elf32-or1k.c:1087
+#: elf32-pj.c:326 elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423
+#: elf32-rl78.c:291 elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296
+#: elf32-s390.c:347 elf32-score.c:2383 elf32-score7.c:2224 elf32-sh.c:437
+#: 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:792 elf32-v850.c:1902
+#: elf32-v850.c:1924 elf32-v850.c:4249 elf32-vax.c:289 elf32-visium.c:481
+#: elf32-wasm32.c:105 elf32-xgate.c:418 elf32-xstormy16.c:395
+#: elf32-xtensa.c:510 elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1114
+#: elf64-alpha.c:4073 elf64-alpha.c:4221 elf64-bpf.c:325 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3425 elf64-mips.c:3962 elf64-mips.c:3978 elf64-mmix.c:1264
+#: elf64-nfp.c:151 elf64-ppc.c:1026 elf64-ppc.c:1380 elf64-ppc.c:1389
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:269 elfn32-mips.c:3792
+#: elfxx-ia64.c:324 elfxx-loongarch.c:1382 elfxx-riscv.c:943 elfxx-sparc.c:589
+#: elfxx-sparc.c:639 elfxx-tilegx.c:907 elfxx-tilegx.c:947
+#: elfnn-aarch64.c:2215 elfnn-aarch64.c:2313 elfnn-ia64.c:214
+#: elfnn-ia64.c:3820
+#, c-format
+msgid "%pB: unsupported relocation type %#x"
+msgstr ""
+
+#: aoutx.h:5428 pdp11.c:3870
+#, c-format
+msgid "%pB: relocatable link from %s to %s not supported"
+msgstr ""
+
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr ""
+
+#: archive.c:733
+msgid "%F%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr ""
+
+#: archive.c:2262
+msgid "warning: writing archive was slow: rewriting timestamp"
+msgstr ""
+
+#: archive.c:2329 archive.c:2390 elflink.c:4760 linker.c:1431
+#, c-format
+msgid "%pB: plugin needed to handle lto object"
+msgstr ""
+
+#: archive.c:2616
+msgid "Reading archive file mod timestamp"
+msgstr ""
+
+#: archive.c:2640
+msgid "Writing updated armap timestamp"
+msgstr ""
+
+#: bfd.c:708
+msgid "no error"
+msgstr "áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ˜áƒ¡ áƒ’áƒ�áƒ áƒ”áƒ¨áƒ”"
+
+#: bfd.c:709
+msgid "system call error"
+msgstr "áƒ¡áƒ˜áƒ¡áƒ¢áƒ”áƒ›áƒ£áƒ áƒ˜ áƒ¤áƒ£áƒœáƒ¥áƒªáƒ˜áƒ˜áƒ¡ áƒ’áƒ�áƒ›áƒ�áƒ«áƒ�áƒ®áƒ”áƒ‘áƒ˜áƒ¡ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�"
+
+#: bfd.c:710
+msgid "invalid bfd target"
+msgstr "bfd-áƒ˜áƒ¡ áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ¡áƒ�áƒ›áƒ˜áƒ–áƒœáƒ”"
+
+#: bfd.c:711
+msgid "file in wrong format"
+msgstr "áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ¤áƒ�áƒ˜áƒšáƒ˜áƒ¡ áƒ¤áƒ�áƒ áƒ›áƒ�áƒ¢áƒ˜"
+
+#: bfd.c:712
+msgid "archive object file in wrong format"
+msgstr ""
+
+#: bfd.c:713
+msgid "invalid operation"
+msgstr "áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ�áƒžáƒ”áƒ áƒ�áƒªáƒ˜áƒ�"
+
+#: bfd.c:714
+msgid "memory exhausted"
+msgstr "áƒ›áƒ”áƒ®áƒ¡áƒ˜áƒ”áƒ áƒ”áƒ‘áƒ� áƒ’áƒ�áƒ“áƒ�áƒ•áƒ¡áƒ”áƒ‘áƒ£áƒšáƒ˜áƒ�"
+
+#: bfd.c:715
+msgid "no symbols"
+msgstr "áƒ¡áƒ˜áƒ›áƒ‘áƒ�áƒšáƒ�áƒ”áƒ‘áƒ˜áƒ¡ áƒ’áƒ�áƒ áƒ”áƒ¨áƒ”"
+
+#: bfd.c:716
+msgid "archive has no index; run ranlib to add one"
+msgstr ""
+
+#: bfd.c:717
+msgid "no more archived files"
+msgstr "áƒ›áƒ”áƒ¢áƒ˜ áƒ“áƒ�áƒ�áƒ áƒ¥áƒ˜áƒ•áƒ”áƒ‘áƒ£áƒšáƒ˜ áƒ¤áƒ�áƒ˜áƒšáƒ˜ áƒ•áƒ”áƒ  áƒ•áƒ˜áƒžáƒ�áƒ•áƒ”"
+
+#: bfd.c:718
+msgid "malformed archive"
+msgstr "áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ�áƒ áƒ¥áƒ˜áƒ•áƒ˜"
+
+#: bfd.c:719
+msgid "DSO missing from command line"
+msgstr ""
+
+#: bfd.c:720
+msgid "file format not recognized"
+msgstr "áƒ¤áƒ�áƒ˜áƒšáƒ˜áƒ¡ áƒ¤áƒ�áƒ áƒ›áƒ�áƒ¢áƒ˜ áƒ£áƒªáƒœáƒ�áƒ‘áƒ˜áƒ�"
+
+#: bfd.c:721
+msgid "file format is ambiguous"
+msgstr "áƒ¤áƒ�áƒ˜áƒšáƒ˜áƒ¡ áƒ¤áƒ�áƒ áƒ›áƒ�áƒ¢áƒ˜ áƒ’áƒ�áƒ£áƒ áƒ™áƒ•áƒ”áƒ•áƒ”áƒšáƒ˜áƒ�"
+
+#: bfd.c:722
+msgid "section has no contents"
+msgstr "áƒ¡áƒ”áƒ¥áƒªáƒ˜áƒ�áƒ¡ áƒ¨áƒ”áƒ›áƒªáƒ•áƒ”áƒšáƒ�áƒ‘áƒ� áƒ�áƒ  áƒ’áƒ�áƒ�áƒ©áƒœáƒ˜áƒ�"
+
+#: bfd.c:723
+msgid "nonrepresentable section on output"
+msgstr ""
+
+#: bfd.c:724
+msgid "symbol needs debug section which does not exist"
+msgstr ""
+
+#: bfd.c:725
+msgid "bad value"
+msgstr "áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ›áƒœáƒ˜áƒ¨áƒ•áƒœáƒ”áƒšáƒ�áƒ‘áƒ�"
+
+#: bfd.c:726
+msgid "file truncated"
+msgstr "áƒ¤áƒ�áƒ˜áƒšáƒ˜ áƒ¬áƒ�áƒ™áƒ•áƒ”áƒ—áƒ˜áƒšáƒ˜áƒ�"
+
+#: bfd.c:727
+msgid "file too big"
+msgstr "áƒ¤áƒ�áƒ˜áƒšáƒ˜ .áƒ«áƒ�áƒšáƒ˜áƒ�áƒœ áƒ“áƒ˜áƒ“áƒ˜áƒ�"
+
+#: bfd.c:728
+msgid "sorry, cannot handle this file"
+msgstr "áƒ�áƒ› áƒ¤áƒ�áƒ˜áƒšáƒ˜áƒ¡ áƒ“áƒ�áƒ›áƒ£áƒ¨áƒ�áƒ•áƒ”áƒ‘áƒ� áƒ�áƒ  áƒ¨áƒ”áƒ›áƒ˜áƒ«áƒšáƒ˜áƒ�"
+
+#: bfd.c:729
+#, c-format
+msgid "error reading %s: %s"
+msgstr "áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ� '%s'-áƒ˜áƒ¡ áƒ™áƒ˜áƒ—áƒ®áƒ•áƒ˜áƒ¡áƒ�áƒ¡. %s"
+
+#: bfd.c:730
+msgid "#<invalid error code>"
+msgstr "#<invalid error code>"
+
+#: bfd.c:1775
+#, c-format
+msgid "BFD %s assertion fail %s:%d"
+msgstr ""
+
+#: bfd.c:1788
+#, c-format
+msgid "BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr ""
+
+#: bfd.c:1793
+#, c-format
+msgid "BFD %s internal error, aborting at %s:%d\n"
+msgstr ""
+
+#: bfd.c:1795
+msgid "Please report this bug.\n"
+msgstr "áƒ’áƒ—áƒ®áƒ�áƒ•áƒ— áƒ’áƒ�áƒ“áƒ�áƒ�áƒ’áƒ–áƒ�áƒ•áƒœáƒ�áƒ— áƒ�áƒœáƒ’áƒ�áƒ áƒ˜áƒ¨áƒ˜ áƒ�áƒ› áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ˜áƒ¡ áƒ¨áƒ”áƒ¡áƒ�áƒ®áƒ”áƒ‘.\n"
+
+#: bfdwin.c:207
+#, c-format
+msgid "not mapping: data=%lx mapped=%d\n"
+msgstr ""
+
+#: bfdwin.c:210
+#, c-format
+msgid "not mapping: env var not set\n"
+msgstr ""
+
+#: binary.c:277
+#, c-format
+msgid "warning: writing section `%pA' at huge (ie negative) file offset"
+msgstr ""
+
+#: cache.c:275
+#, c-format
+msgid "reopening %pB: %s"
+msgstr "%pB-áƒ˜áƒ¡ áƒ—áƒ�áƒ•áƒ˜áƒ“áƒ�áƒœ áƒ’áƒ�áƒ®áƒ¡áƒœáƒ�: %s"
+
+#: coff-alpha.c:450
+#, c-format
+msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
+msgstr ""
+
+#: coff-alpha.c:857 coff-alpha.c:894 coff-alpha.c:1963 coff-mips.c:959
+msgid "GP relative relocation used when GP not defined"
+msgstr ""
+
+#: coff-alpha.c:1450
+msgid "using multiple gp values"
+msgstr ""
+
+#: coff-alpha.c:1508 coff-alpha.c:1514 elf.c:9591 elf32-mcore.c:100
+#: elf32-mcore.c:455 elf32-ppc.c:7651 elf32-ppc.c:8846 elf64-ppc.c:16806
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: %s áƒ›áƒ®áƒ�áƒ áƒ“áƒ�áƒ­áƒ”áƒ áƒ˜áƒšáƒ˜ áƒ�áƒ áƒ�áƒ�"
+
+#: coff-go32.c:164 coffswap.h:819
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: áƒ’áƒ�áƒ¤áƒ áƒ—áƒ®áƒ˜áƒšáƒ”áƒ‘áƒ�: %s: áƒ®áƒ�áƒ–áƒ˜áƒ¡ áƒœáƒ�áƒ›áƒ áƒ”áƒ‘áƒ˜áƒ¡ áƒ’áƒ�áƒ“áƒ�áƒ•áƒ¡áƒ”áƒ‘áƒ�: 0x%lx > 0xffff"
+
+#: coff-mips.c:649 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
+msgid "GP relative relocation when _gp not defined"
+msgstr ""
+
+#: coff-rs6000.c:484 coff64-rs6000.c:377
+#, c-format
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr ""
+
+#: coff-rs6000.c:571 coff64-rs6000.c:497
+#, c-format
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr ""
+
+#: coff-rs6000.c:3045
+#, c-format
+msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
+msgstr ""
+
+#: coff-rs6000.c:3169 coff64-rs6000.c:848
+#, c-format
+msgid "Unable to find the stub entry targeting %s"
+msgstr ""
+
+#: coff-rs6000.c:3284
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr ""
+
+#: coff-rs6000.c:3297
+#, c-format
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr ""
+
+#: coff-rs6000.c:3703
+#, c-format
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr ""
+
+#: coff-rs6000.c:3965 coff64-rs6000.c:2037
+#, c-format
+msgid "%pB: symbol `%s' has unrecognized smclas %d"
+msgstr ""
+
+#: coff-sh.c:779 elf32-sh.c:520
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
+msgstr ""
+
+#: coff-sh.c:790
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
+msgstr ""
+
+#: coff-sh.c:808 elf32-sh.c:551
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
+msgstr ""
+
+#: coff-sh.c:833 elf32-sh.c:567
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
+msgstr ""
+
+#: coff-sh.c:850 elf32-sh.c:596
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
+msgstr ""
+
+#: coff-sh.c:976 elf32-sh.c:726
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
+msgstr ""
+
+#: coff-sh.c:986 elf32-sh.c:737
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: bad count"
+msgstr "%pB: %#<PRIx64>: áƒ’áƒ�áƒ¤áƒ áƒ—áƒ®áƒ˜áƒšáƒ”áƒ‘áƒ�: áƒ�áƒ áƒ�áƒ¡áƒ¬áƒ�áƒ áƒ˜ áƒ áƒ�áƒ�áƒ“áƒ”áƒœáƒ�áƒ‘áƒ�"
+
+#: coff-sh.c:1357 coff-sh.c:2645 elf32-sh.c:1137 elf32-sh.c:1504
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
+msgstr ""
+
+#: coff-sh.c:1452
+#, c-format
+msgid "%pB: fatal: generic symbols retrieved before relaxing"
+msgstr ""
+
+#: coff-sh.c:2782 cofflink.c:2915
+#, c-format
+msgid "%pB: illegal symbol index %ld in relocs"
+msgstr ""
+
+#: coff-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:366 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5177
+#, c-format
+msgid "%pB: warning: illegal symbol index %ld in relocs"
+msgstr ""
+
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
+#, c-format
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr ""
+
+#: coff64-rs6000.c:477
+#, c-format
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr ""
+
+#: coff64-rs6000.c:1598
+#, c-format
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr ""
+
+#: coffcode.h:990
+#, c-format
+msgid "%pB: unable to load COMDAT section name"
+msgstr ""
+
+#. Malformed input files can trigger this test.
+#. cf PR 21781.
+#: coffcode.h:1025
+#, c-format
+msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
+msgstr ""
+
+#: coffcode.h:1037
+#, c-format
+msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
+msgstr ""
+
+#: coffcode.h:1047
+#, c-format
+msgid "%pB: warning: no symbol for section '%s' found"
+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:1278
+#, c-format
+msgid "%pB: warning: ignoring section flag %s in section %s"
+msgstr ""
+
+#: coffcode.h:1347
+#, c-format
+msgid "%pB (%s): section flag %s (%#lx) ignored"
+msgstr ""
+
+#: coffcode.h:1960
+#, c-format
+msgid "%pB: overflow reloc count too small"
+msgstr ""
+
+#: coffcode.h:1969 coffcode.h:2034
+#, c-format
+msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
+msgstr ""
+
+#: coffcode.h:2407
+#, c-format
+msgid "unrecognized TI COFF target id '0x%x'"
+msgstr ""
+
+#: coffcode.h:2685
+#, c-format
+msgid "%pB: reloc against a non-existent symbol index: %ld"
+msgstr ""
+
+#: coffcode.h:3148
+#, c-format
+msgid "%pB: too many sections (%d)"
+msgstr ""
+
+#: coffcode.h:3584
+#, c-format
+msgid "%pB: section %pA: string table overflow at offset %ld"
+msgstr ""
+
+#: coffcode.h:3691
+#, c-format
+msgid "%pB:%s section %s: alignment 2**%u not representable"
+msgstr ""
+
+#: coffcode.h:4415
+#, c-format
+msgid "%pB: warning: line number table read failed"
+msgstr ""
+
+#: coffcode.h:4461 coffcode.h:4475
+#, c-format
+msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
+msgstr ""
+
+#: coffcode.h:4489
+#, c-format
+msgid "%pB: warning: illegal symbol in line number entry %d"
+msgstr ""
+
+#: coffcode.h:4502
+#, c-format
+msgid "%pB: warning: duplicate line number information for `%s'"
+msgstr ""
+
+#: coffcode.h:4921
+#, c-format
+msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
+msgstr ""
+
+#: coffcode.h:5061
+#, c-format
+msgid "warning: %pB: local symbol `%s' has no section"
+msgstr ""
+
+#: coffcode.h:5217
+#, c-format
+msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
+msgstr ""
+
+#: coffgen.c:175 elf.c:1224
+#, c-format
+msgid "%pB: unable to compress section %s"
+msgstr ""
+
+#: coffgen.c:185 elf.c:1234
+#, c-format
+msgid "%pB: unable to decompress section %s"
+msgstr ""
+
+#: coffgen.c:1645
+#, c-format
+msgid "%pB: bad string table size %<PRIu64>"
+msgstr ""
+
+#: coffgen.c:1818 coffgen.c:1864 coffgen.c:1915 coffgen.c:1933 cofflink.c:1980
+#: elf.c:1924 xcofflink.c:5541
+msgid "<corrupt>"
+msgstr "<corrupt>"
+
+#: coffgen.c:2073
+#, c-format
+msgid "<corrupt info> %s"
+msgstr "<corrupt info> %s"
+
+#: coffgen.c:2677 elflink.c:15129 linker.c:2963
+msgid "%F%P: already_linked_table: %E\n"
+msgstr "%F%P: already_linked_table: %E\n"
+
+#: coffgen.c:3019 elflink.c:14069
+#, c-format
+msgid "removing unused section '%pA' in file '%pB'"
+msgstr ""
+
+#: coffgen.c:3096 elflink.c:14299
+msgid "warning: gc-sections option ignored"
+msgstr ""
+
+#: cofflink.c:366
+#, c-format
+msgid "warning: symbol `%s' is both section and non-section"
+msgstr ""
+
+#: cofflink.c:471 elf64-ia64-vms.c:5196 elflink.c:5357
+#, c-format
+msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
+msgstr ""
+
+#: cofflink.c:2308
+#, c-format
+msgid "%pB: relocs in section `%pA', but it has no contents"
+msgstr ""
+
+#: cofflink.c:2371 elflink.c:11510
+#, c-format
+msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
+msgstr ""
+
+#: cofflink.c:2566
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr ""
+
+#: cofflink.c:2684
+#, c-format
+msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
+msgstr ""
+
+#: cofflink.c:2692
+#, c-format
+msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
+msgstr ""
+
+#: cofflink.c:3085
+#, c-format
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr ""
+
+#: coffswap.h:833
+#, c-format
+msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
+msgstr ""
+
+#: compress.c:747 compress.c:764
+#, c-format
+msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
+msgstr ""
+
+#: cpu-arm.c:320 cpu-arm.c:332
+#, c-format
+msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
+msgstr ""
+
+#: cpu-arm.c:468
+#, c-format
+msgid "warning: unable to update contents of %s section in %pB"
+msgstr ""
+
+#: dwarf2.c:702
+#, c-format
+msgid "DWARF error: can't find %s section."
+msgstr ""
+
+#. PR 26946
+#: dwarf2.c:711
+#, c-format
+msgid "DWARF error: section %s is too big"
+msgstr ""
+
+#: dwarf2.c:746
+#, c-format
+msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
+msgstr ""
+
+#: dwarf2.c:1493
+msgid "DWARF error: info pointer extends beyond end of attributes"
+msgstr ""
+
+#: dwarf2.c:1685
+#, c-format
+msgid "DWARF error: invalid or unhandled FORM value: %#x"
+msgstr ""
+
+#: dwarf2.c:2032
+msgid "DWARF error: mangled line number section (bad file number)"
+msgstr ""
+
+#: dwarf2.c:2576
+msgid "DWARF error: zero format count"
+msgstr ""
+
+#: dwarf2.c:2586
+#, c-format
+msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
+msgstr ""
+
+#: dwarf2.c:2625
+#, c-format
+msgid "DWARF error: unknown format content type %<PRIu64>"
+msgstr ""
+
+#: dwarf2.c:2698
+#, c-format
+msgid "DWARF error: line info section is too small (%<PRId64>)"
+msgstr ""
+
+#: dwarf2.c:2725
+#, c-format
+msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
+msgstr ""
+
+#: dwarf2.c:2738
+#, c-format
+msgid "DWARF error: unhandled .debug_line version %d"
+msgstr ""
+
+#: dwarf2.c:2747
+msgid "DWARF error: ran out of room reading prologue"
+msgstr ""
+
+#: dwarf2.c:2763
+#, c-format
+msgid "DWARF error: line info unsupported segment selector size %u"
+msgstr ""
+
+#: dwarf2.c:2785
+msgid "DWARF error: invalid maximum operations per instruction"
+msgstr ""
+
+#: dwarf2.c:2797
+msgid "DWARF error: ran out of room reading opcodes"
+msgstr ""
+
+#: dwarf2.c:2975
+msgid "DWARF error: mangled line number section"
+msgstr ""
+
+#: dwarf2.c:3446
+msgid "DWARF error: abstract instance recursion detected"
+msgstr ""
+
+#: dwarf2.c:3480 dwarf2.c:3570
+msgid "DWARF error: invalid abstract instance DIE ref"
+msgstr ""
+
+#: dwarf2.c:3496
+#, c-format
+msgid "DWARF error: unable to read alt ref %<PRIu64>"
+msgstr ""
+
+#: dwarf2.c:3548
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr ""
+
+#: dwarf2.c:3585 dwarf2.c:3901 dwarf2.c:4471
+#, c-format
+msgid "DWARF error: could not find abbrev number %u"
+msgstr ""
+
+#: dwarf2.c:4171
+#, c-format
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr ""
+
+#: dwarf2.c:4317 dwarf2.c:4571
+msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
+msgstr ""
+
+#: dwarf2.c:4388
+#, c-format
+msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
+msgstr ""
+
+#: dwarf2.c:4435
+#, c-format
+msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
+msgstr ""
+
+#: ecoff.c:940
+#, c-format
+msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
+msgstr ""
+
+#: ecoff.c:1236
+#, c-format
+msgid "unknown basic type %d"
+msgstr ""
+
+#: ecoff.c:1492
+#, c-format
+msgid ""
+"\n"
+"      End+1 symbol: %ld"
+msgstr ""
+
+#: ecoff.c:1499 ecoff.c:1502
+#, c-format
+msgid ""
+"\n"
+"      First symbol: %ld"
+msgstr ""
+
+#: ecoff.c:1517
+#, c-format
+msgid ""
+"\n"
+"      End+1 symbol: %-7ld   Type:  %s"
+msgstr ""
+
+#: ecoff.c:1525
+#, c-format
+msgid ""
+"\n"
+"      Local symbol: %ld"
+msgstr ""
+
+#: ecoff.c:1533
+#, c-format
+msgid ""
+"\n"
+"      struct; End+1 symbol: %ld"
+msgstr ""
+
+#: ecoff.c:1538
+#, c-format
+msgid ""
+"\n"
+"      union; End+1 symbol: %ld"
+msgstr ""
+
+#: ecoff.c:1543
+#, c-format
+msgid ""
+"\n"
+"      enum; End+1 symbol: %ld"
+msgstr ""
+
+#: ecoff.c:1551
+#, c-format
+msgid ""
+"\n"
+"      Type: %s"
+msgstr ""
+"\n"
+"      áƒ¢áƒ˜áƒžáƒ˜: %s"
+
+#: elf-attrs.c:477
+#, c-format
+msgid "%pB: error: attribute section '%pA' too big: %#llx"
+msgstr ""
+
+#: elf-attrs.c:514
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr ""
+
+#: elf-attrs.c:644
+#, c-format
+msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
+msgstr ""
+
+#: elf-attrs.c:654
+#, c-format
+msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
+msgstr ""
+
+#: elf-eh-frame.c:944
+#, c-format
+msgid "discarding zero address range FDE in %pB(%pA).\n"
+msgstr ""
+
+#: elf-eh-frame.c:1049
+#, c-format
+msgid "error in %pB(%pA); no .eh_frame_hdr table will be created"
+msgstr ""
+
+#: elf-eh-frame.c:1541
+#, c-format
+msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created"
+msgstr ""
+
+#: elf-eh-frame.c:1548
+msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
+msgstr ""
+
+#: elf-eh-frame.c:1867
+#, c-format
+msgid "%pB: %pA not in order"
+msgstr ""
+
+#: elf-eh-frame.c:1881
+#, c-format
+msgid "%pB: %pA invalid input section size"
+msgstr ""
+
+#: elf-eh-frame.c:1889
+#, c-format
+msgid "%pB: %pA points past end of text section"
+msgstr ""
+
+#: elf-eh-frame.c:2142
+msgid "DW_EH_PE_datarel unspecified for this architecture"
+msgstr ""
+
+#: elf-eh-frame.c:2313
+#, c-format
+msgid "invalid output section for .eh_frame_entry: %pA"
+msgstr ""
+
+#: elf-eh-frame.c:2336
+#, c-format
+msgid "invalid contents in %pA section"
+msgstr ""
+
+#: elf-eh-frame.c:2492
+msgid ".eh_frame_hdr entry overflow"
+msgstr ""
+
+#: elf-eh-frame.c:2494
+msgid ".eh_frame_hdr refers to overlapping FDEs"
+msgstr ""
+
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1278
+#, 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 ""
+
+#: elf-m10200.c:434 elf-m10300.c:2146 elf32-bfin.c:3133 elf32-cr16.c:1429
+#: elf32-cris.c:2034 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:562
+#: elf32-fr30.c:594 elf32-frv.c:4049 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1477 elf32-iq2000.c:691 elf32-lm32.c:1070 elf32-m32c.c:624
+#: elf32-m32r.c:2837 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1984
+#: elf32-microblaze.c:1664 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6093
+#: elf32-or1k.c:1889 elf32-score.c:2734 elf32-score7.c:2545 elf32-spu.c:5085
+#: elf32-tilepro.c:3372 elf32-v850.c:2294 elf32-visium.c:680
+#: elf32-xstormy16.c:930 elf64-bpf.c:552 elf64-mmix.c:1541 elfxx-tilegx.c:3742
+msgid "internal error: out of range error"
+msgstr "áƒ¨áƒ˜áƒ“áƒ� áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�: áƒ“áƒ˜áƒ�áƒžáƒ�áƒ–áƒ�áƒœáƒ¡ áƒ’áƒ�áƒ“áƒ�áƒªáƒ˜áƒšáƒ”áƒ‘áƒ˜áƒ¡ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�"
+
+#: elf-m10200.c:438 elf-m10300.c:2150 elf32-bfin.c:3137 elf32-cr16.c:1433
+#: elf32-cris.c:2038 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4053 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1074 elf32-m32c.c:628 elf32-m32r.c:2841 elf32-m68hc1x.c:1275
+#: elf32-mep.c:526 elf32-metag.c:1988 elf32-microblaze.c:1668
+#: elf32-moxie.c:292 elf32-msp430.c:1510 elf32-nds32.c:6097 elf32-or1k.c:1893
+#: elf32-score.c:2738 elf32-score7.c:2549 elf32-spu.c:5089
+#: elf32-tilepro.c:3376 elf32-v850.c:2298 elf32-visium.c:684
+#: elf32-xstormy16.c:934 elf64-mmix.c:1545 elfxx-mips.c:10628
+#: elfxx-tilegx.c:3746
+msgid "internal error: unsupported relocation error"
+msgstr ""
+
+#: elf-m10200.c:442 elf32-cr16.c:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1078 elf32-m32r.c:2845 elf32-m68hc1x.c:1279
+#: elf32-microblaze.c:1672 elf32-nds32.c:6101 elf32-score.c:2742
+#: elf32-score7.c:2553 elf32-spu.c:5093
+msgid "internal error: dangerous error"
+msgstr "áƒ¨áƒ˜áƒ“áƒ� áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�: áƒ¡áƒ�áƒ¨áƒ˜áƒ¨áƒ˜ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�"
+
+#: elf-m10200.c:446 elf-m10300.c:2167 elf32-bfin.c:3145 elf32-cr16.c:1441
+#: elf32-cris.c:2046 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:577
+#: elf32-fr30.c:606 elf32-frv.c:4061 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1492 elf32-iq2000.c:703 elf32-lm32.c:1082 elf32-m32c.c:636
+#: elf32-m32r.c:2849 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1996
+#: elf32-microblaze.c:1676 elf32-moxie.c:300 elf32-msp430.c:1518
+#: elf32-mt.c:410 elf32-nds32.c:6105 elf32-or1k.c:1901 elf32-score.c:2751
+#: elf32-score7.c:2557 elf32-spu.c:5097 elf32-tilepro.c:3384 elf32-v850.c:2318
+#: elf32-visium.c:692 elf32-xstormy16.c:942 elf64-bpf.c:565 elf64-mmix.c:1553
+#: elfxx-tilegx.c:3754
+msgid "internal error: unknown error"
+msgstr "áƒ¨áƒ˜áƒ“áƒ� áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�: áƒ£áƒªáƒœáƒ�áƒ‘áƒ˜ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�"
+
+#: elf-m10300.c:1030
+#, c-format
+msgid "%pB: unsupported transition from %s to %s"
+msgstr ""
+
+#: elf-m10300.c:1197
+#, c-format
+msgid "%pB: %s' accessed both as normal and thread local symbol"
+msgstr ""
+
+#: elf-m10300.c:2093 elf32-arm.c:13392 elf32-i386.c:3459 elf32-m32r.c:2331
+#: elf32-m68k.c:3929 elf32-s390.c:3080 elf32-sh.c:3671 elf32-tilepro.c:3275
+#: elf32-xtensa.c:3023 elf64-s390.c:3042 elf64-x86-64.c:4182
+#: elfxx-sparc.c:2917 elfxx-sparc.c:3814 elfxx-tilegx.c:3665
+#: elfnn-aarch64.c:5515 elfnn-aarch64.c:7120
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr ""
+
+#: elf-m10300.c:2155
+msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
+msgstr ""
+
+#: elf-m10300.c:2159
+#, c-format
+msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
+msgstr ""
+
+#: elf-m10300.c:2162
+msgid "internal error: suspicious relocation type used in shared library"
+msgstr ""
+
+#: elf-m10300.c:2650 elf32-avr.c:2488 elf32-frv.c:5621 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2684 reloc.c:8424 reloc16.c:155 elfnn-ia64.c:365
+msgid "%P%F: --relax and -r may not be used together\n"
+msgstr ""
+
+#: elf-properties.c:65
+#, c-format
+msgid "%pB: out of memory in _bfd_elf_get_property"
+msgstr ""
+
+#: elf-properties.c:91
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
+msgstr ""
+
+#: elf-properties.c:112
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
+msgstr ""
+
+#: elf-properties.c:151
+#, c-format
+msgid "warning: %pB: corrupt stack size: 0x%x"
+msgstr ""
+
+#: elf-properties.c:169
+#, c-format
+msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
+msgstr ""
+
+#: elf-properties.c:189
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr ""
+
+#: elf-properties.c:214
+#, c-format
+msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
+msgstr ""
+
+#: elf-properties.c:400
+msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr ""
+
+#: elf-properties.c:406
+msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
+msgstr ""
+
+#: elf-properties.c:415 elf-properties.c:493
+msgid "Removed property %W to merge %pB and %pB\n"
+msgstr ""
+
+#: elf-properties.c:419
+msgid "Removed property %W to merge %pB and %pB (not found)\n"
+msgstr ""
+
+#: elf-properties.c:436
+msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr ""
+
+#: elf-properties.c:445
+msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
+msgstr ""
+
+#: elf-properties.c:487
+msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
+msgstr ""
+
+#: elf-properties.c:668 elfxx-aarch64.c:758 elfxx-x86.c:4087
+msgid "%F%P: failed to create GNU property section\n"
+msgstr ""
+
+#: elf-properties.c:672 elfxx-aarch64.c:762 elfxx-x86.c:4092
+#, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr ""
+
+#. Merge .note.gnu.property sections.
+#: elf-properties.c:698 elf-properties.c:700
+msgid "\n"
+msgstr "\n"
+
+#: elf-properties.c:699
+msgid "Merging program properties\n"
+msgstr "áƒžáƒ áƒ�áƒ’áƒ áƒ�áƒ›áƒ˜áƒ¡ áƒ—áƒ•áƒ˜áƒ¡áƒ”áƒ‘áƒ”áƒ‘áƒ˜áƒ¡ áƒ¨áƒ”áƒ áƒ¬áƒ§áƒ›áƒ�\n"
+
+#: elf-sframe.c:239
+#, c-format
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr ""
+
+#: elf-sframe.c:397
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr ""
+
+#. PR 17512: file: f057ec89.
+#: elf.c:337
+#, c-format
+msgid "%pB: attempt to load strings from a non-string section (number %d)"
+msgstr ""
+
+#: elf.c:362
+#, c-format
+msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
+msgstr ""
+
+#: elf.c:515 elfnn-aarch64.c:8120 elfnn-loongarch.c:3919
+#, c-format
+msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
+msgstr ""
+
+#: elf.c:677
+#, c-format
+msgid "%pB: invalid size field in group section header: %#<PRIx64>"
+msgstr ""
+
+#: elf.c:722
+#, c-format
+msgid "%pB: invalid entry in SHT_GROUP section [%u]"
+msgstr ""
+
+#: elf.c:741
+#, c-format
+msgid "%pB: no valid group sections found"
+msgstr ""
+
+#. See PR 21957 for a reproducer.
+#: elf.c:770
+#, c-format
+msgid "%pB: group section '%pA' has no contents"
+msgstr ""
+
+#: elf.c:831
+#, c-format
+msgid "%pB: no group info for section '%pA'"
+msgstr ""
+
+#: elf.c:883
+#, c-format
+msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
+msgstr ""
+
+#: elf.c:896
+#, c-format
+msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
+msgstr ""
+
+#: elf.c:918
+#, c-format
+msgid "%pB: section group entry number %u is corrupt"
+msgstr ""
+
+#: elf.c:941
+#, c-format
+msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
+msgstr ""
+
+#: elf.c:1242
+#, c-format
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr ""
+
+#: elf.c:1438
+#, c-format
+msgid "%pB: invalid sh_link field (%d) in section number %d"
+msgstr ""
+
+#: elf.c:1454
+#, c-format
+msgid "%pB: failed to find link section for section %d"
+msgstr ""
+
+#: elf.c:1481
+#, c-format
+msgid "%pB: failed to find info section for section %d"
+msgstr ""
+
+#: elf.c:1658
+#, c-format
+msgid ""
+"\n"
+"Program Header:\n"
+msgstr ""
+"\n"
+"áƒžáƒ áƒ�áƒ’áƒ áƒ�áƒ›áƒ˜áƒ¡ áƒ—áƒ�áƒ•áƒ¡áƒ�áƒ áƒ—áƒ˜:\n"
+
+#: elf.c:1700
+#, c-format
+msgid ""
+"\n"
+"Dynamic Section:\n"
+msgstr ""
+"\n"
+"áƒ“áƒ˜áƒœáƒ�áƒ›áƒ˜áƒ™áƒ£áƒ áƒ˜ áƒ¡áƒ”áƒ¥áƒªáƒ˜áƒ�:\n"
+
+#: elf.c:1839
+#, c-format
+msgid ""
+"\n"
+"Version definitions:\n"
+msgstr ""
+"\n"
+"áƒ•áƒ”áƒ áƒ¡áƒ˜áƒ˜áƒ¡ áƒ�áƒ¦áƒ¬áƒ”áƒ áƒ”áƒ‘áƒ˜:\n"
+
+#: elf.c:1864
+#, c-format
+msgid ""
+"\n"
+"Version References:\n"
+msgstr ""
+"\n"
+"áƒ•áƒ”áƒ áƒ¡áƒ˜áƒ˜áƒ¡ áƒ›áƒ˜áƒ›áƒ�áƒ áƒ—áƒ•áƒ”áƒ‘áƒ˜:\n"
+
+#: elf.c:1869
+#, c-format
+msgid "  required from %s:\n"
+msgstr ""
+
+#: elf.c:2060
+#, c-format
+msgid "%pB: warning: loop in section dependencies detected"
+msgstr ""
+
+#: elf.c:2167
+#, c-format
+msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
+msgstr ""
+
+#: elf.c:2252
+#, c-format
+msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
+msgstr ""
+
+#: elf.c:2371
+#, c-format
+msgid "%pB: invalid link %u for reloc section %s (index %u)"
+msgstr ""
+
+#: elf.c:2427
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr ""
+
+#: elf.c:2515 elf.c:2529 elf.c:2540 elf.c:2553
+#, c-format
+msgid "%pB: unknown type [%#x] section `%s'"
+msgstr ""
+
+#: elf.c:3213
+#, c-format
+msgid "%pB: error: alignment power %d of section `%pA' is too big"
+msgstr ""
+
+#: elf.c:3248
+#, c-format
+msgid "warning: section `%pA' type changed to PROGBITS"
+msgstr ""
+
+#: elf.c:3754
+#, c-format
+msgid "%pB: too many sections: %u"
+msgstr ""
+
+#: elf.c:3840
+#, c-format
+msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
+msgstr ""
+
+#: elf.c:3858
+#, c-format
+msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
+msgstr ""
+
+#: elf.c:4446
+#, c-format
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr ""
+
+#: elf.c:4629
+msgid "%F%P: failed to size relative relocations\n"
+msgstr ""
+
+#: elf.c:5054
+#, c-format
+msgid "%pB: TLS sections are not adjacent:"
+msgstr ""
+
+#: elf.c:5061
+#, c-format
+msgid "\t    TLS: %pA"
+msgstr "\t    TLS: %pA"
+
+#: elf.c:5065
+#, c-format
+msgid "\tnon-TLS: %pA"
+msgstr "\táƒ�áƒ áƒ�-TLS: %pA"
+
+#: elf.c:5709
+#, c-format
+msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
+msgstr ""
+
+#: elf.c:5735
+#, c-format
+msgid "%pB: not enough room for program headers, try linking with -N"
+msgstr ""
+
+#: elf.c:5852
+#, c-format
+msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
+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:5990
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr ""
+
+#: elf.c:6030
+#, c-format
+msgid "%pB: section `%pA' can't be allocated in segment %d"
+msgstr ""
+
+#: elf.c:6171
+#, c-format
+msgid "%pB: warning: allocated section `%s' not in segment"
+msgstr ""
+
+#: elf.c:6306
+#, c-format
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr ""
+
+#: elf.c:6337
+#, c-format
+msgid "%pB: error: non-load segment %d includes file header and/or program header"
+msgstr ""
+
+#: elf.c:6477
+#, c-format
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr ""
+
+#: elf.c:6483
+#, c-format
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr ""
+
+#: elf.c:6864
+#, c-format
+msgid "%pB: symbol `%s' required but not present"
+msgstr ""
+
+#: elf.c:7239
+#, c-format
+msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
+msgstr ""
+
+#: elf.c:7899
+#, c-format
+msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
+msgstr ""
+
+#: elf.c:8407
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr ""
+
+#: elf.c:8437
+#, c-format
+msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
+msgstr ""
+
+#: elf.c:8851
+#, c-format
+msgid "%pB: .gnu.version_r invalid entry"
+msgstr ""
+
+#: elf.c:8986
+#, c-format
+msgid "%pB: .gnu.version_d invalid entry"
+msgstr ""
+
+#: elf.c:9464
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr ""
+
+#: elf.c:9476
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr ""
+
+#: elf.c:10381
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr ""
+
+#: elf.c:10460
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr ""
+
+#: elf.c:13054
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13057
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13060
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13063
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13282
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr ""
+
+#: elf.c:13358
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr ""
+
+#: elf.c:13372
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr ""
+
+#: elf.c:13386
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr ""
+
+#: elf.c:13462
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr ""
+
+#: elf.c:13474
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr ""
+
+#: elf.c:13486
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr ""
+
+#: elf.c:13500
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr ""
+
+#: elf.c:13523
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr ""
+
+#: elf.c:13543
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr ""
+
+#: elf.c:13568
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr ""
+
+#: elf.c:13586
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr ""
+
+#: elf.c:13600
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+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-arc.c:455 elf32-arm.c:15118 elf32-frv.c:6612 elf32-iq2000.c:868
+#: elf32-m32c.c:914 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3217
+#: elf32-visium.c:844 elf64-ppc.c:5503 elfnn-aarch64.c:7350
+#, c-format
+msgid "private flags = 0x%lx:"
+msgstr ""
+
+#: elf32-arc.c:642
+#, c-format
+msgid "warning: %pB: conflicting platform configuration %s with %s"
+msgstr ""
+
+#: elf32-arc.c:661
+#, c-format
+msgid "error: %pB: unable to merge CPU base attributes %s with %s"
+msgstr ""
+
+#: elf32-arc.c:698
+#, c-format
+msgid "error: %pB: unable to merge ISA extension attributes %s"
+msgstr ""
+
+#: elf32-arc.c:722
+#, c-format
+msgid "error: %pB: conflicting ISA extension attributes %s with %s"
+msgstr ""
+
+#: elf32-arc.c:762
+#, c-format
+msgid "error: %pB: cannot mix rf16 with full register set %pB"
+msgstr ""
+
+#: elf32-arc.c:790
+#, c-format
+msgid "error: %pB: conflicting attributes %s: %s with %s"
+msgstr ""
+
+#: elf32-arc.c:817
+#, c-format
+msgid "error: %pB: conflicting attributes %s"
+msgstr ""
+
+#: elf32-arc.c:922
+#, c-format
+msgid "error: attempting to link %pB with a binary %pB of different architecture"
+msgstr ""
+
+#: elf32-arc.c:938 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1390
+#: elf32-ppc.c:3860 elf64-sparc.c:737 elfxx-mips.c:15659
+#, c-format
+msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
+msgstr ""
+
+#: elf32-arc.c:1027
+msgid "error: the ARC4 architecture is no longer supported"
+msgstr ""
+
+#: 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 ""
+
+#: 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:1885
+msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
+msgstr ""
+
+#: elf32-arc.c:1909 elf32-rx.c:1486
+#, c-format
+msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
+msgstr ""
+
+#: elf32-arc.c:1914 elf32-rx.c:1491
+#, c-format
+msgid "%pB(%pA): internal error: out of range error"
+msgstr ""
+
+#: elf32-arc.c:1919 elf32-rx.c:1496
+#, c-format
+msgid "%pB(%pA): internal error: unsupported relocation error"
+msgstr ""
+
+#: elf32-arc.c:1924 elf32-rx.c:1501
+#, c-format
+msgid "%pB(%pA): internal error: dangerous relocation"
+msgstr ""
+
+#: elf32-arc.c:1929 elf32-rx.c:1506
+#, c-format
+msgid "%pB(%pA): internal error: unknown error"
+msgstr ""
+
+#: elf32-arc.c:2023 elf32-arc.c:2091 elf32-arm.c:15573 elf32-metag.c:2251
+#: elf32-nds32.c:5543 elfnn-aarch64.c:7757 elfnn-riscv.c:617
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
+msgstr ""
+
+#: elf32-arc.c:2910
+#, c-format
+msgid "%pB: unknown mandatory ARC object attribute %d"
+msgstr ""
+
+#: elf32-arc.c:2918
+#, c-format
+msgid "warning: %pB: unknown ARC object attribute %d"
+msgstr ""
+
+#: elf32-arm.c:4346 elf32-arm.c:4380 elf32-arm.c:4399 elf32-arm.c:4451
+#, 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 ""
+
+#: elf32-arm.c:4411 elf32-arm.c:4465 elf32-arm.c:9157 elf32-arm.c:9247
+#, c-format
+msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
+msgstr ""
+
+#: elf32-arm.c:4591
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr ""
+
+#: elf32-arm.c:4760
+#, c-format
+msgid "no address assigned to the veneers output section %s"
+msgstr ""
+
+#: elf32-arm.c:4835 elf32-arm.c:6984 elf32-csky.c:3400 elf32-hppa.c:582
+#: elf32-m68hc1x.c:164 elf32-metag.c:1180 elf32-nios2.c:2201 elf64-ppc.c:3906
+#: elf64-ppc.c:14122 elfnn-aarch64.c:3198
+#, c-format
+msgid "%pB: cannot create stub entry %s"
+msgstr ""
+
+#: elf32-arm.c:5056 elf32-csky.c:3742 elf32-hppa.c:732 elf32-hppa.c:761
+#: elf32-hppa.c:842 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3345
+#: elf32-nios2.c:2494 elf64-ppc.c:12238 elf64-ppc.c:12246 xcofflink.c:4693
+#: elfnn-aarch64.c:3267
+msgid "%F%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr ""
+
+#: elf32-arm.c:6027
+#, c-format
+msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
+msgstr ""
+
+#: elf32-arm.c:6036
+#, c-format
+msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
+msgstr ""
+
+#: elf32-arm.c:6075
+#, c-format
+msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
+msgstr ""
+
+#: elf32-arm.c:6081
+#, c-format
+msgid "%pB: absent standard symbol `%s'"
+msgstr ""
+
+#: elf32-arm.c:6093
+#, c-format
+msgid "%pB: `%s' and its special symbol are in different sections"
+msgstr ""
+
+#: elf32-arm.c:6105
+#, c-format
+msgid "%pB: entry function `%s' not output"
+msgstr ""
+
+#: elf32-arm.c:6112
+#, c-format
+msgid "%pB: entry function `%s' is empty"
+msgstr ""
+
+#: elf32-arm.c:6241
+#, c-format
+msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
+msgstr ""
+
+#: elf32-arm.c:6290
+#, c-format
+msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
+msgstr ""
+
+#: elf32-arm.c:6312
+#, c-format
+msgid "entry function `%s' disappeared from secure code"
+msgstr ""
+
+#: elf32-arm.c:6336
+#, c-format
+msgid "`%s' refers to a non entry function"
+msgstr ""
+
+#: elf32-arm.c:6351
+#, c-format
+msgid "%pB: visibility of symbol `%s' has changed"
+msgstr ""
+
+#: elf32-arm.c:6360
+#, c-format
+msgid "%pB: incorrect size for symbol `%s'"
+msgstr ""
+
+#: elf32-arm.c:6379
+#, c-format
+msgid "offset of veneer for entry function `%s' not a multiple of its size"
+msgstr ""
+
+#: elf32-arm.c:6399
+msgid "new entry function(s) introduced but no output import library specified:"
+msgstr ""
+
+#: elf32-arm.c:6407
+#, c-format
+msgid "start address of `%s' is different from previous link"
+msgstr ""
+
+#: elf32-arm.c:7117 elf32-arm.c:7152
+#, c-format
+msgid "unable to find %s glue '%s' for '%s'"
+msgstr ""
+
+#: elf32-arm.c:7863
+#, 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:8090
+#, c-format
+msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
+msgstr ""
+
+#: elf32-arm.c:8117
+#, c-format
+msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
+msgstr ""
+
+#: elf32-arm.c:8653 elf32-arm.c:8673 elf32-arm.c:8740 elf32-arm.c:8759
+#, c-format
+msgid "%pB: unable to find %s veneer `%s'"
+msgstr ""
+
+#: elf32-arm.c:8966
+#, 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 ""
+
+#: elf32-arm.c:9064
+#, c-format
+msgid "invalid TARGET2 relocation type '%s'"
+msgstr ""
+
+#. FIXME: We ought to be able to generate thumb-1 PLT
+#. instructions...
+#: elf32-arm.c:9834
+#, c-format
+msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
+msgstr ""
+
+#: elf32-arm.c:10143 elf32-arm.c:10185
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
+msgstr ""
+
+#: elf32-arm.c:10535
+msgid "shared object"
+msgstr ""
+
+#: elf32-arm.c:10538
+msgid "PIE executable"
+msgstr ""
+
+#: elf32-arm.c:10541
+#, 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:10643
+#, c-format
+msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr ""
+
+#: elf32-arm.c:11060
+#, c-format
+msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr ""
+
+#: elf32-arm.c:11694
+#, c-format
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr ""
+
+#: elf32-arm.c:11969 elf32-arm.c:11995
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
+msgstr ""
+
+#: elf32-arm.c:12041 elf32-csky.c:4970 elf32-m68k.c:3733 elf32-metag.c:1913
+#: elf32-nios2.c:4382
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
+msgstr ""
+
+#: elf32-arm.c:12255
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
+msgstr ""
+
+#: elf32-arm.c:12296 elf32-arm.c:12388 elf32-arm.c:12476 elf32-arm.c:12566
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
+msgstr ""
+
+#: elf32-arm.c:12624 elf32-arm.c:12783
+msgid "local symbol index too big"
+msgstr ""
+
+#: elf32-arm.c:12634 elf32-arm.c:12668
+msgid "no dynamic index information available"
+msgstr ""
+
+#: elf32-arm.c:12676
+msgid "invalid dynamic index"
+msgstr ""
+
+#: elf32-arm.c:12793
+msgid "dynamic index information not available"
+msgstr ""
+
+#: elf32-arm.c:13224 elf32-sh.c:3565
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
+msgstr ""
+
+#: elf32-arm.c:13337 elf32-m68k.c:3966 elf32-xtensa.c:2761
+#: elfnn-aarch64.c:6847
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
+msgstr ""
+
+#: elf32-arm.c:13339 elf32-m68k.c:3968 elf32-xtensa.c:2763
+#: elfnn-aarch64.c:6849
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
+msgstr ""
+
+#: elf32-arm.c:13422 elf32-tic6x.c:2649 elfnn-aarch64.c:7184
+msgid "out of range"
+msgstr "áƒ“áƒ˜áƒ�áƒžáƒ�áƒ–áƒ�áƒœáƒ¡ áƒ’áƒ�áƒ áƒ”áƒ—"
+
+#: elf32-arm.c:13426 elf32-nios2.c:4516 elf32-pru.c:936 elf32-tic6x.c:2653
+#: elfnn-aarch64.c:7188
+msgid "unsupported relocation"
+msgstr ""
+
+#: elf32-arm.c:13434 elf32-nios2.c:4526 elf32-pru.c:946 elf32-tic6x.c:2661
+#: elfnn-aarch64.c:7196
+msgid "unknown error"
+msgstr "áƒ£áƒªáƒœáƒ�áƒ‘áƒ˜ áƒ¨áƒ”áƒªáƒ“áƒ�áƒ›áƒ�"
+
+#: elf32-arm.c:13916
+#, c-format
+msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
+msgstr ""
+
+#: elf32-arm.c:13920
+#, c-format
+msgid "warning: clearing the interworking flag of %pB due to outside request"
+msgstr ""
+
+#: elf32-arm.c:13965
+#, 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:14052
+#, c-format
+msgid "%pB: unknown mandatory EABI object attribute %d"
+msgstr ""
+
+#: elf32-arm.c:14060
+#, c-format
+msgid "warning: %pB: unknown EABI object attribute %d"
+msgstr ""
+
+#: elf32-arm.c:14395
+#, c-format
+msgid "error: %pB: unknown CPU architecture"
+msgstr ""
+
+#: elf32-arm.c:14433 elf32-nios2.c:2950
+#, c-format
+msgid "error: %pB: conflicting CPU architectures %d/%d"
+msgstr ""
+
+#: elf32-arm.c:14530
+#, c-format
+msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr ""
+
+#: elf32-arm.c:14567
+#, c-format
+msgid "error: %pB uses VFP register arguments, %pB does not"
+msgstr ""
+
+#: elf32-arm.c:14736
+#, c-format
+msgid "error: %pB: unable to merge virtualization attributes with %pB"
+msgstr ""
+
+#: elf32-arm.c:14762
+#, c-format
+msgid "error: %pB: conflicting architecture profiles %c/%c"
+msgstr ""
+
+#: elf32-arm.c:14901
+#, c-format
+msgid "warning: %pB: conflicting platform configuration"
+msgstr ""
+
+#: elf32-arm.c:14910
+#, c-format
+msgid "error: %pB: conflicting use of R9"
+msgstr ""
+
+#: elf32-arm.c:14922
+#, c-format
+msgid "error: %pB: SB relative addressing conflicts with use of R9"
+msgstr ""
+
+#: elf32-arm.c:14935
+#, 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:14966
+#, 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:14978
+#, c-format
+msgid "error: %pB uses iWMMXt register arguments, %pB does not"
+msgstr ""
+
+#: elf32-arm.c:14995
+#, c-format
+msgid "error: fp16 format mismatch between %pB and %pB"
+msgstr ""
+
+#: elf32-arm.c:15031
+#, c-format
+msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr ""
+
+#: elf32-arm.c:15127
+#, c-format
+msgid " [interworking enabled]"
+msgstr ""
+
+#: elf32-arm.c:15135
+#, c-format
+msgid " [VFP float format]"
+msgstr ""
+
+#: elf32-arm.c:15137
+#, c-format
+msgid " [Maverick float format]"
+msgstr ""
+
+#: elf32-arm.c:15139
+#, c-format
+msgid " [FPA float format]"
+msgstr ""
+
+#: elf32-arm.c:15142
+#, c-format
+msgid " [floats passed in float registers]"
+msgstr ""
+
+#: elf32-arm.c:15145 elf32-arm.c:15231
+#, c-format
+msgid " [position independent]"
+msgstr ""
+
+#: elf32-arm.c:15148
+#, c-format
+msgid " [new ABI]"
+msgstr ""
+
+#: elf32-arm.c:15151
+#, c-format
+msgid " [old ABI]"
+msgstr ""
+
+#: elf32-arm.c:15154
+#, c-format
+msgid " [software FP]"
+msgstr ""
+
+#: elf32-arm.c:15163
+#, c-format
+msgid " [Version1 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15166 elf32-arm.c:15177
+#, c-format
+msgid " [sorted symbol table]"
+msgstr ""
+
+#: elf32-arm.c:15168 elf32-arm.c:15179
+#, c-format
+msgid " [unsorted symbol table]"
+msgstr ""
+
+#: elf32-arm.c:15174
+#, c-format
+msgid " [Version2 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15182
+#, c-format
+msgid " [dynamic symbols use segment index]"
+msgstr ""
+
+#: elf32-arm.c:15185
+#, c-format
+msgid " [mapping symbols precede others]"
+msgstr ""
+
+#: elf32-arm.c:15192
+#, c-format
+msgid " [Version3 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15196
+#, c-format
+msgid " [Version4 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15200
+#, c-format
+msgid " [Version5 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15203
+#, c-format
+msgid " [soft-float ABI]"
+msgstr ""
+
+#: elf32-arm.c:15206
+#, c-format
+msgid " [hard-float ABI]"
+msgstr ""
+
+#: elf32-arm.c:15212
+#, c-format
+msgid " [BE8]"
+msgstr ""
+
+#: elf32-arm.c:15215
+#, c-format
+msgid " [LE8]"
+msgstr ""
+
+#: elf32-arm.c:15221
+#, c-format
+msgid " <EABI version unrecognised>"
+msgstr ""
+
+#: elf32-arm.c:15228
+#, c-format
+msgid " [relocatable executable]"
+msgstr ""
+
+#: elf32-arm.c:15234
+#, c-format
+msgid " [FDPIC ABI supplement]"
+msgstr ""
+
+#: elf32-arm.c:15239 elfnn-aarch64.c:7353
+#, c-format
+msgid " <Unrecognised flag bits set>"
+msgstr ""
+
+#: elf32-arm.c:15356 elf32-arm.c:15490 elf32-i386.c:1511 elf32-s390.c:923
+#: elf32-tic6x.c:2724 elf32-tilepro.c:1435 elf32-xtensa.c:1090
+#: elf64-s390.c:845 elf64-x86-64.c:1963 elfxx-sparc.c:1386 elfxx-tilegx.c:1662
+#: elfxx-x86.c:970 elfnn-aarch64.c:7624 elfnn-loongarch.c:632
+#: elfnn-riscv.c:660
+#, c-format
+msgid "%pB: bad symbol index: %d"
+msgstr ""
+
+#: elf32-arm.c:15746
+#, c-format
+msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
+msgstr ""
+
+#: elf32-arm.c:17009
+#, c-format
+msgid "errors encountered processing file %pB"
+msgstr ""
+
+#: elf32-arm.c:17382 elflink.c:13235 elflink.c:13282
+#, c-format
+msgid "could not find section %s"
+msgstr ""
+
+#: elf32-arm.c:18308
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr ""
+
+#: elf32-arm.c:18572
+#, 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:18599
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
+msgstr ""
+
+#: elf32-arm.c:19426 elf32-arm.c:19448
+#, c-format
+msgid "%pB: error: VFP11 veneer out of range"
+msgstr ""
+
+#: elf32-arm.c:19499
+#, 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:19538
+#, c-format
+msgid "%pB: error: cannot create STM32L4XX veneer"
+msgstr ""
+
+#: elf32-arm.c:20622
+#, c-format
+msgid "error: %pB is already in final BE8 format"
+msgstr ""
+
+#: elf32-arm.c:20698
+#, c-format
+msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
+msgstr ""
+
+#: elf32-arm.c:20713
+#, c-format
+msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
+msgstr ""
+
+#: elf32-arm.c:20723
+#, c-format
+msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
+msgstr ""
+
+#: elf32-arm.c:20727
+#, c-format
+msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
+msgstr ""
+
+#: elf32-arm.c:20737 elf32-arm.c:20741 elf32-arm.c:20751
+#, c-format
+msgid "error: %pB uses %s instructions, whereas %pB does not"
+msgstr ""
+
+#: elf32-arm.c:20755
+#, c-format
+msgid "error: %pB does not use %s instructions, whereas %pB does"
+msgstr ""
+
+#: elf32-arm.c:20774
+#, c-format
+msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
+msgstr ""
+
+#: elf32-arm.c:20778
+#, c-format
+msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
+msgstr ""
+
+#: elf32-arm.c:20792
+#, c-format
+msgid "warning: %pB supports interworking, whereas %pB does not"
+msgstr ""
+
+#: elf32-arm.c:20798
+#, c-format
+msgid "warning: %pB does not support interworking, whereas %pB does"
+msgstr ""
+
+#: elf32-avr.c:1508
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr ""
+
+#: elf32-avr.c:1516
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr ""
+
+#: elf32-avr.c:1524
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr ""
+
+#: elf32-avr.c:3339 elfnn-aarch64.c:3229
+#, c-format
+msgid "cannot create stub entry %s"
+msgstr ""
+
+#: elf32-bfin.c:107 elf32-bfin.c:364
+msgid "relocation should be even number"
+msgstr ""
+
+#: elf32-bfin.c:1589
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
+msgstr ""
+
+#: elf32-bfin.c:1621 elf32-i386.c:3499 elf32-m68k.c:4006 elf32-s390.c:3138
+#: elf64-s390.c:3118 elf64-x86-64.c:4237
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
+msgstr ""
+
+#: elf32-bfin.c:2647
+#, c-format
+msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
+msgstr ""
+
+#: elf32-bfin.c:2664
+msgid "relocation references symbol not defined in the module"
+msgstr ""
+
+#: elf32-bfin.c:2762
+msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
+msgstr ""
+
+#: elf32-bfin.c:2802 elf32-bfin.c:2923
+msgid "cannot emit fixups in read-only section"
+msgstr ""
+
+#: elf32-bfin.c:2832 elf32-bfin.c:2960 elf32-lm32.c:1007 elf32-sh.c:4383
+msgid "cannot emit dynamic relocations in read-only section"
+msgstr ""
+
+#: elf32-bfin.c:2882
+msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
+msgstr ""
+
+#: elf32-bfin.c:3045
+msgid "relocations between different segments are not supported"
+msgstr ""
+
+#: elf32-bfin.c:3046
+msgid "warning: relocation references a different segment"
+msgstr ""
+
+#: elf32-bfin.c:3141 elf32-cris.c:2042 elf32-epiphany.c:573 elf32-fr30.c:602
+#: elf32-frv.c:4057 elf32-ft32.c:500 elf32-ip2k.c:1488 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1992 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1897 elf32-tilepro.c:3380
+#: elf32-v850.c:2302 elf32-visium.c:688 elf32-xstormy16.c:938 elf64-bpf.c:561
+#: elf64-mmix.c:1549 elfxx-tilegx.c:3750
+msgid "internal error: dangerous relocation"
+msgstr ""
+
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4728 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1265
+#: elf32-score.c:3987 elf32-score7.c:3794 elf32-vax.c:536 elf32-xgate.c:494
+#: elfxx-mips.c:16345
+#, c-format
+msgid "private flags = %lx:"
+msgstr ""
+
+#: elf32-bfin.c:4779 elf32-frv.c:6585
+#, c-format
+msgid "%pB: cannot link non-fdpic object file into fdpic executable"
+msgstr ""
+
+#: elf32-bfin.c:4783 elf32-frv.c:6589
+#, c-format
+msgid "%pB: cannot link fdpic object file into non-fdpic executable"
+msgstr ""
+
+#: elf32-bfin.c:4920
+#, c-format
+msgid "*** check this relocation %s"
+msgstr ""
+
+#: elf32-bfin.c:5036
+msgid "the bfin target does not currently support the generation of copy relocations"
+msgstr ""
+
+#: elf32-bfin.c:5330 elf32-cr16.c:2719 elf32-m68k.c:4420
+msgid "unsupported relocation type"
+msgstr ""
+
+#: elf32-cris.c:1120
+#, c-format
+msgid "%pB, section %pA: unresolvable relocation %s against symbol `%s'"
+msgstr ""
+
+#: elf32-cris.c:1185
+#, c-format
+msgid "%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'"
+msgstr ""
+
+#: elf32-cris.c:1188
+#, c-format
+msgid "%pB, section %pA: no PLT for relocation %s against symbol `%s'"
+msgstr ""
+
+#: elf32-cris.c:1194 elf32-cris.c:1327 elf32-cris.c:1592 elf32-cris.c:1675
+#: elf32-cris.c:1828 elf32-tic6x.c:2560
+msgid "[whose name is lost]"
+msgstr ""
+
+#: elf32-cris.c:1312 elf32-tic6x.c:2544
+#, c-format
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local symbol"
+msgstr ""
+
+#: elf32-cris.c:1321 elf32-cris.c:1669 elf32-cris.c:1822 elf32-tic6x.c:2553
+#, c-format
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
+msgstr ""
+
+#: elf32-cris.c:1348
+#, c-format
+msgid "%pB, section %pA: relocation %s is not allowed for global symbol: `%s'"
+msgstr ""
+
+#: elf32-cris.c:1365
+#, c-format
+msgid "%pB, section %pA: relocation %s with no GOT created"
+msgstr ""
+
+#. We shouldn't get here for GCC-emitted code.
+#: elf32-cris.c:1582
+#, c-format
+msgid "%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?"
+msgstr ""
+
+#: elf32-cris.c:1585
+#, c-format
+msgid "%pB, section %pA: relocation %s is not allowed for `%s', a global symbol with default visibility, perhaps a declaration mixup?"
+msgstr ""
+
+#: elf32-cris.c:1956
+#, 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 ""
+
+#: elf32-cris.c:2009
+msgid "(too many global variables for -fpic: recompile with -fPIC)"
+msgstr ""
+
+#: elf32-cris.c:2016
+msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)"
+msgstr ""
+
+#: elf32-cris.c:3051
+#, c-format
+msgid "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
+msgstr ""
+
+#: elf32-cris.c:3105
+#, c-format
+msgid ""
+"%pB, section %pA:\n"
+"  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC"
+msgstr ""
+
+#: elf32-cris.c:3323
+#, c-format
+msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
+msgstr ""
+
+#: elf32-cris.c:3701
+#, 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:3813
+msgid "unexpected machine number"
+msgstr ""
+
+#: elf32-cris.c:3865
+#, c-format
+msgid " [symbols have a _ prefix]"
+msgstr ""
+
+#: elf32-cris.c:3868
+#, c-format
+msgid " [v10 and v32]"
+msgstr ""
+
+#: elf32-cris.c:3871
+#, c-format
+msgid " [v32]"
+msgstr ""
+
+#: elf32-cris.c:3915
+#, c-format
+msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
+msgstr ""
+
+#: elf32-cris.c:3916
+#, c-format
+msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
+msgstr ""
+
+#: elf32-cris.c:3935
+#, c-format
+msgid "%pB contains CRIS v32 code, incompatible with previous objects"
+msgstr ""
+
+#: elf32-cris.c:3937
+#, c-format
+msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
+msgstr ""
+
+#: elf32-csky.c:2019
+msgid "GOT table size out of range"
+msgstr ""
+
+#: elf32-csky.c:2831
+#, c-format
+msgid "warning: unrecognized arch eflag '%#lx'"
+msgstr ""
+
+#: elf32-csky.c:2854
+#, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr ""
+
+#: elf32-csky.c:2928 elf32-csky.c:3086
+#, c-format
+msgid "%pB: machine flag conflict with target"
+msgstr ""
+
+#: elf32-csky.c:2941
+#, c-format
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr ""
+
+#: elf32-csky.c:2970
+#, c-format
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr ""
+
+#: elf32-csky.c:2987
+#, c-format
+msgid "Error: %pB and %pB has different DSP version"
+msgstr ""
+
+#: elf32-csky.c:3005
+#, c-format
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr ""
+
+#: elf32-csky.c:3100
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr ""
+
+#. The r_type is error, not support it.
+#: elf32-csky.c:4342 elf32-i386.c:344
+#, c-format
+msgid "%pB: unsupported relocation type: %#x"
+msgstr ""
+
+#: elf32-dlx.c:141
+#, c-format
+msgid "branch (PC rel16) to section (%s) not supported"
+msgstr ""
+
+#: elf32-dlx.c:204
+#, c-format
+msgid "jump (PC rel26) to section (%s) not supported"
+msgstr ""
+
+#. Only if it's not an unresolved symbol.
+#: elf32-epiphany.c:569 elf32-ip2k.c:1484
+msgid "unsupported relocation between data/insn address spaces"
+msgstr ""
+
+#: elf32-frv.c:1453 elf32-frv.c:1604
+msgid "relocation requires zero addend"
+msgstr ""
+
+#: elf32-frv.c:2833
+#, c-format
+msgid "%H: relocation to `%s+%v' may have caused the error above\n"
+msgstr ""
+
+#: elf32-frv.c:2850
+msgid "%H: relocation references symbol not defined in the module\n"
+msgstr ""
+
+#: elf32-frv.c:2926
+msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
+msgstr ""
+
+#: elf32-frv.c:2967
+msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3038
+msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3075
+msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3122
+msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3206
+msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3260
+msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3290
+msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3319
+msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3349
+msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3394
+msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3421
+msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3542 elf32-frv.c:3662
+msgid "%H: %s references dynamic symbol with nonzero addend\n"
+msgstr ""
+
+#: elf32-frv.c:3583 elf32-frv.c:3704
+msgid "%H: cannot emit fixups in read-only section\n"
+msgstr ""
+
+#: elf32-frv.c:3613 elf32-frv.c:3746
+msgid "%H: cannot emit dynamic relocations in read-only section\n"
+msgstr ""
+
+#: elf32-frv.c:3918
+#, c-format
+msgid "%H: reloc against `%s' references a different segment\n"
+msgstr ""
+
+#: elf32-frv.c:4069
+#, c-format
+msgid "%H: reloc against `%s': %s\n"
+msgstr ""
+
+#: elf32-frv.c:6496
+#, c-format
+msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
+msgstr ""
+
+#: elf32-frv.c:6550 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:6563
+#, c-format
+msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
+msgstr ""
+
+#: elf32-gen.c:71
+#, c-format
+msgid "%pB: relocations in generic ELF (EM: %d)"
+msgstr ""
+
+#: elf32-hppa.c:863 elf32-hppa.c:3403
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
+msgstr ""
+
+#: elf32-hppa.c:1241
+#, c-format
+msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
+msgstr ""
+
+#: elf32-hppa.c:2580
+#, c-format
+msgid "%pB: duplicate export stub %s"
+msgstr ""
+
+#: elf32-hppa.c:3236
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
+msgstr ""
+
+#: elf32-hppa.c:4032
+#, c-format
+msgid "%s has both normal and TLS relocs"
+msgstr ""
+
+#: elf32-hppa.c:4050
+#, c-format
+msgid "%pB:%s has both normal and TLS relocs"
+msgstr ""
+
+#: elf32-hppa.c:4109
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
+msgstr ""
+
+#: elf32-hppa.c:4413
+msgid ".got section not immediately after .plt section"
+msgstr ""
+
+#: elf32-i386.c:1163 elf64-x86-64.c:1450
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at %#<PRIx64> in section `%pA' failed"
+msgstr ""
+
+#: elf32-i386.c:1266
+#, 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:1695 elf32-s390.c:1151 elf32-sh.c:5497 elf32-tilepro.c:1548
+#: elf32-xtensa.c:1263 elf64-s390.c:1083 elfxx-sparc.c:1556
+#: elfxx-tilegx.c:1767 elfnn-loongarch.c:586 elfnn-riscv.c:568
+#, c-format
+msgid "%pB: `%s' accessed both as normal and thread local symbol"
+msgstr ""
+
+#: elf32-i386.c:1767
+#, c-format
+msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
+msgstr ""
+
+#: elf32-i386.c:1822 elf64-x86-64.c:2343
+#, c-format
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr ""
+
+#: elf32-i386.c:2385 elf64-x86-64.c:2806 elfnn-riscv.c:2271
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
+msgstr ""
+
+#: elf32-i386.c:2418 elf32-i386.c:3710 elf32-i386.c:3858 elf64-x86-64.c:2863
+#: elf64-x86-64.c:4410 elf64-x86-64.c:4573 elfnn-riscv.c:2144
+#: elfnn-riscv.c:2967 elfnn-riscv.c:3041
+#, c-format
+msgid "Local IFUNC function `%s' in %pB\n"
+msgstr ""
+
+#: elf32-i386.c:2596
+#, 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:2631 elf64-x86-64.c:3077
+msgid "hidden symbol"
+msgstr ""
+
+#: elf32-i386.c:2634 elf64-x86-64.c:3080
+msgid "internal symbol"
+msgstr ""
+
+#: elf32-i386.c:2637 elf64-x86-64.c:3083
+msgid "protected symbol"
+msgstr ""
+
+#: elf32-i386.c:2640 elf64-x86-64.c:3086
+msgid "symbol"
+msgstr "áƒ¡áƒ˜áƒ›áƒ‘áƒ�áƒšáƒ�"
+
+#: elf32-i386.c:2646
+#, 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:2659
+#, c-format
+msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
+msgstr ""
+
+#: elf32-i386.c:4061 elf64-x86-64.c:4784
+msgid "%F%P: discarded output section: `%pA'\n"
+msgstr ""
+
+#: 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:878 elf32-ip2k.c:961
+msgid "ip2k relaxer: switch table header corrupt."
+msgstr ""
+
+#: elf32-ip2k.c:1297
+#, c-format
+msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr ""
+
+#: elf32-ip2k.c:1316
+#, c-format
+msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr ""
+
+#: elf32-lm32.c:609 elf32-nios2.c:3145
+msgid "global pointer relative relocation when _gp not defined"
+msgstr ""
+
+#: elf32-lm32.c:664 elf32-nios2.c:3582
+msgid "global pointer relative address out of range"
+msgstr ""
+
+#: elf32-lm32.c:960
+#, c-format
+msgid "internal error: addend should be zero for %s"
+msgstr ""
+
+#: elf32-m32r.c:1461
+msgid "SDA relocation when _SDA_BASE_ not defined"
+msgstr ""
+
+#: elf32-m32r.c:2776 elf32-microblaze.c:1134 elf32-microblaze.c:1182
+#, c-format
+msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
+msgstr ""
+
+#: elf32-m32r.c:3279
+#, c-format
+msgid "%pB: instruction set mismatch with previous modules"
+msgstr ""
+
+#: elf32-m32r.c:3300 elf32-nds32.c:6900
+#, c-format
+msgid "private flags = %lx"
+msgstr ""
+
+#: elf32-m32r.c:3305
+#, c-format
+msgid ": m32r instructions"
+msgstr ""
+
+#: elf32-m32r.c:3306
+#, c-format
+msgid ": m32rx instructions"
+msgstr ""
+
+#: elf32-m32r.c:3307
+#, c-format
+msgid ": m32r2 instructions"
+msgstr ""
+
+#: elf32-m68hc1x.c:1135
+#, c-format
+msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
+msgstr ""
+
+#: elf32-m68hc1x.c:1166
+#, 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:1182
+#, 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:1197
+#, c-format
+msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
+msgstr ""
+
+#: elf32-m68hc1x.c:1233
+#, 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:1357
+#, c-format
+msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
+msgstr ""
+
+#: elf32-m68hc1x.c:1364
+#, c-format
+msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
+msgstr ""
+
+#: elf32-m68hc1x.c:1373
+#, c-format
+msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
+msgstr ""
+
+#: elf32-m68hc1x.c:1418 elf32-xgate.c:497
+#, c-format
+msgid "[abi=32-bit int, "
+msgstr ""
+
+#: elf32-m68hc1x.c:1420 elf32-xgate.c:499
+#, c-format
+msgid "[abi=16-bit int, "
+msgstr ""
+
+#: elf32-m68hc1x.c:1423 elf32-xgate.c:502
+#, c-format
+msgid "64-bit double, "
+msgstr ""
+
+#: elf32-m68hc1x.c:1425 elf32-xgate.c:504
+#, c-format
+msgid "32-bit double, "
+msgstr ""
+
+#: elf32-m68hc1x.c:1428
+#, c-format
+msgid "cpu=HC11]"
+msgstr ""
+
+#: elf32-m68hc1x.c:1430
+#, c-format
+msgid "cpu=HCS12]"
+msgstr ""
+
+#: elf32-m68hc1x.c:1432
+#, c-format
+msgid "cpu=HC12]"
+msgstr ""
+
+#: elf32-m68hc1x.c:1435
+#, c-format
+msgid " [memory=bank-model]"
+msgstr ""
+
+#: elf32-m68hc1x.c:1437
+#, c-format
+msgid " [memory=flat]"
+msgstr ""
+
+#: elf32-m68hc1x.c:1440
+#, c-format
+msgid " [XGATE RAM offsetting]"
+msgstr ""
+
+#: elf32-m68k.c:1157 elf32-m68k.c:1165 elf32-ppc.c:3576 elf32-ppc.c:3584
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr ""
+
+#: elf32-m68k.c:1280 elf32-m68k.c:1281 vms-alpha.c:8053 vms-alpha.c:8069
+msgid "unknown"
+msgstr ""
+
+#: elf32-m68k.c:1731
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
+msgstr ""
+
+#: elf32-m68k.c:1738
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
+msgstr ""
+
+#. Pacify gcc -Wall.
+#: elf32-mep.c:139
+#, c-format
+msgid "mep: no reloc for code %d"
+msgstr ""
+
+#: elf32-mep.c:146
+#, c-format
+msgid "MeP: howto %d has type %d"
+msgstr ""
+
+#: elf32-mep.c:618
+#, c-format
+msgid "%pB and %pB are for different cores"
+msgstr ""
+
+#: elf32-mep.c:637
+#, c-format
+msgid "%pB and %pB are for different configurations"
+msgstr ""
+
+#: elf32-mep.c:675
+#, c-format
+msgid "private flags = 0x%lx"
+msgstr ""
+
+#: elf32-metag.c:1857
+#, c-format
+msgid "%pB(%pA): multiple TLS models are not supported"
+msgstr ""
+
+#: elf32-metag.c:1860
+#, c-format
+msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
+msgstr ""
+
+#: elf32-microblaze.c:1577 elf32-tilepro.c:3021 elfxx-sparc.c:3446
+#: elfxx-tilegx.c:3415
+#, c-format
+msgid "%pB: probably compiled without -fPIC?"
+msgstr ""
+
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3333
+msgid "literal relocation occurs for an external symbol"
+msgstr ""
+
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3374
+msgid "32bits gp relative relocation occurs for an external symbol"
+msgstr ""
+
+#: elf32-msp430.c:914
+#, c-format
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr ""
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
+msgid "try enabling relaxation to avoid relocation truncations"
+msgstr ""
+
+#: elf32-msp430.c:1506
+msgid "internal error: branch/jump to an odd address detected"
+msgstr ""
+
+#: elf32-msp430.c:2671
+#, c-format
+msgid "warning: %pB: unknown MSPABI object attribute %d"
+msgstr ""
+
+#: elf32-msp430.c:2772
+#, c-format
+msgid "error: %pB uses %s instructions but %pB uses %s"
+msgstr ""
+
+#: elf32-msp430.c:2784
+#, c-format
+msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
+msgstr ""
+
+#: elf32-msp430.c:2797
+#, c-format
+msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
+msgstr ""
+
+#: elf32-msp430.c:2808
+#, c-format
+msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
+msgstr ""
+
+#: elf32-msp430.c:2821
+#, c-format
+msgid "error: %pB uses the small code model but %pB uses the %s data model"
+msgstr ""
+
+#: elf32-msp430.c:2833
+#, c-format
+msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
+msgstr ""
+
+#: elf32-msp430.c:2858
+#, c-format
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr ""
+
+#: elf32-nds32.c:3674
+#, c-format
+msgid "error: can't find symbol: %s"
+msgstr ""
+
+#: elf32-nds32.c:5573
+#, c-format
+msgid "%pB: warning: %s unsupported in shared mode"
+msgstr ""
+
+#: elf32-nds32.c:5699
+#, c-format
+msgid "%pB: warning: unaligned access to GOT entry"
+msgstr ""
+
+#: elf32-nds32.c:5740
+#, c-format
+msgid "%pB: warning: relocate SDA_BASE failed"
+msgstr ""
+
+#: elf32-nds32.c:5762
+#, c-format
+msgid "%pB(%pA): warning: unaligned small data access of type %d"
+msgstr ""
+
+#: elf32-nds32.c:6688
+#, c-format
+msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
+msgstr ""
+
+#: elf32-nds32.c:6736
+#, c-format
+msgid "%pB: warning: endian mismatch with previous modules"
+msgstr ""
+
+#: elf32-nds32.c:6750
+#, c-format
+msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
+msgstr ""
+
+#: elf32-nds32.c:6838
+#, c-format
+msgid "%pB: error: ABI mismatch with previous modules"
+msgstr ""
+
+#: elf32-nds32.c:6848
+#, c-format
+msgid "%pB: error: instruction set mismatch with previous modules"
+msgstr ""
+
+#: elf32-nds32.c:6875
+#, c-format
+msgid "%pB: warning: incompatible elf-versions %s and %s"
+msgstr ""
+
+#: elf32-nds32.c:6906
+#, c-format
+msgid ": n1 instructions"
+msgstr ""
+
+#: elf32-nds32.c:6909
+#, c-format
+msgid ": n1h instructions"
+msgstr ""
+
+#: elf32-nds32.c:9358
+#, c-format
+msgid "%pB: error: search_nds32_elf_blank reports wrong node"
+msgstr ""
+
+#: elf32-nds32.c:9622
+#, c-format
+msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
+msgstr ""
+
+#: elf32-nds32.c:12887
+#, c-format
+msgid "%pB: nested OMIT_FP in %pA"
+msgstr ""
+
+#: elf32-nds32.c:12906
+#, c-format
+msgid "%pB: unmatched OMIT_FP in %pA"
+msgstr ""
+
+#: elf32-nds32.c:13189 elfxx-mips.c:13501 reloc.c:8651
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr ""
+
+#: elf32-nios2.c:2934
+#, c-format
+msgid "error: %pB: big-endian R2 is not supported"
+msgstr ""
+
+#: elf32-nios2.c:3826
+#, c-format
+msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+msgstr ""
+
+#: elf32-nios2.c:3856
+#, 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 ""
+
+#: elf32-nios2.c:4511 elf32-pru.c:931
+msgid "relocation out of range"
+msgstr ""
+
+#: elf32-nios2.c:4521 elf32-pru.c:941 elf32-tic6x.c:2657
+msgid "dangerous relocation"
+msgstr ""
+
+#: elf32-nios2.c:5360
+#, c-format
+msgid "dynamic variable `%s' is zero size"
+msgstr ""
+
+#: elf32-or1k.c:1258
+#, c-format
+msgid "%pB: Cannot handle relocation value size of %d"
+msgstr ""
+
+#: elf32-or1k.c:1366
+#, c-format
+msgid "%pB: unknown relocation type %d"
+msgstr ""
+
+#: elf32-or1k.c:1420
+#, c-format
+msgid "%pB: addend should be zero for plt relocations"
+msgstr ""
+
+#: elf32-or1k.c:1536
+#, c-format
+msgid "%pB: addend should be zero for got relocations"
+msgstr ""
+
+#: elf32-or1k.c:1553
+#, c-format
+msgid "%pB: gotoff relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf32-or1k.c:1567 elf32-or1k.c:1582 elf64-alpha.c:4427 elf64-alpha.c:4571
+#, c-format
+msgid "%pB: pc-relative relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf32-or1k.c:1596
+#, c-format
+msgid "%pB: non-pic relocation against symbol %s"
+msgstr ""
+
+#: elf32-or1k.c:1680
+#, c-format
+msgid "%pB: support for local dynamic not implemented"
+msgstr ""
+
+#: elf32-or1k.c:1859
+#, c-format
+msgid "%pB: will not resolve runtime TLS relocation"
+msgstr ""
+
+#: elf32-or1k.c:2193
+#, c-format
+msgid "%pB: bad relocation section name `%s'"
+msgstr ""
+
+#: elf32-or1k.c:3307
+#, c-format
+msgid "%pB: %s flag mismatch with previous modules"
+msgstr ""
+
+#: elf32-ppc.c:993 elf64-ppc.c:1748
+#, c-format
+msgid "generic linker can't handle %s"
+msgstr ""
+
+#: elf32-ppc.c:1633
+#, c-format
+msgid "corrupt %s section in %pB"
+msgstr ""
+
+#: elf32-ppc.c:1652
+#, c-format
+msgid "unable to read in %s section from %pB"
+msgstr ""
+
+#: elf32-ppc.c:1694
+#, c-format
+msgid "warning: unable to set size of %s section in %pB"
+msgstr ""
+
+#: elf32-ppc.c:1743
+msgid "failed to allocate space for new APUinfo section"
+msgstr ""
+
+#: elf32-ppc.c:1762
+msgid "failed to compute new APUinfo section"
+msgstr ""
+
+#: elf32-ppc.c:1765
+msgid "failed to install new APUinfo section"
+msgstr ""
+
+#: elf32-ppc.c:2873
+#, c-format
+msgid "%pB: relocation %s cannot be used when making a shared object"
+msgstr ""
+
+#: elf32-ppc.c:3592 elf32-ppc.c:3600
+#, c-format
+msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
+msgstr ""
+
+#: elf32-ppc.c:3622 elf32-ppc.c:3630
+#, c-format
+msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
+msgstr ""
+
+#: elf32-ppc.c:3638 elf32-ppc.c:3646
+#, c-format
+msgid "%pB uses IBM long double, %pB uses IEEE long double"
+msgstr ""
+
+#: elf32-ppc.c:3713 elf32-ppc.c:3722
+#, c-format
+msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
+msgstr ""
+
+#: elf32-ppc.c:3751 elf32-ppc.c:3760
+#, c-format
+msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
+msgstr ""
+
+#: elf32-ppc.c:3824
+#, c-format
+msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr ""
+
+#: elf32-ppc.c:3832
+#, c-format
+msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr ""
+
+#: elf32-ppc.c:3903
+#, c-format
+msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
+msgstr ""
+
+#: elf32-ppc.c:3922
+#, c-format
+msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
+msgstr ""
+
+#: elf32-ppc.c:4026
+#, c-format
+msgid "bss-plt forced due to %pB"
+msgstr ""
+
+#: elf32-ppc.c:4028
+msgid "bss-plt forced by profiling"
+msgstr ""
+
+#: elf32-ppc.c:4605 elf64-ppc.c:8478
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr ""
+
+#. 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:4635 elf64-ppc.c:8543
+#, c-format
+msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
+msgstr ""
+
+#: elf32-ppc.c:5564 elf32-sh.c:3017 elf32-tilepro.c:2248 elfxx-sparc.c:2454
+#: elfxx-tilegx.c:2494
+#, c-format
+msgid "%pB: dynamic relocation in read-only section `%pA'\n"
+msgstr ""
+
+#: elf32-ppc.c:7439
+msgid "%P: %H: error: %s with unexpected instruction %x\n"
+msgstr ""
+
+#: elf32-ppc.c:7477
+msgid "%H: fixup branch overflow\n"
+msgstr ""
+
+#: elf32-ppc.c:7517 elf32-ppc.c:7555
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
+msgstr ""
+
+#: elf32-ppc.c:7619
+#, c-format
+msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
+msgstr ""
+
+#: elf32-ppc.c:7655
+#, c-format
+msgid "%pB: reloc %#x unsupported"
+msgstr ""
+
+#: elf32-ppc.c:7943
+#, c-format
+msgid "%H: non-zero addend on %s reloc against `%s'\n"
+msgstr ""
+
+#. @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:7975
+#, c-format
+msgid "%X%H: @local call to ifunc %s\n"
+msgstr ""
+
+#: elf32-ppc.c:8154
+#, c-format
+msgid "%H: relocation %s for indirect function %s unsupported\n"
+msgstr ""
+
+#: elf32-ppc.c:8493 elf32-ppc.c:8524 elf32-ppc.c:8627 elf32-ppc.c:8727
+#, c-format
+msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
+msgstr ""
+
+#: elf32-ppc.c:8905 elf32-ppc.c:8926
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr ""
+
+#: elf32-ppc.c:9008
+#, c-format
+msgid "%H: error: %s against `%s' not a multiple of %u\n"
+msgstr ""
+
+#: elf32-ppc.c:9037
+#, c-format
+msgid "%H: unresolvable %s relocation against symbol `%s'\n"
+msgstr ""
+
+#: elf32-ppc.c:9119
+#, c-format
+msgid "%H: %s reloc against `%s': error %d\n"
+msgstr ""
+
+#: elf32-ppc.c:10000
+msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
+msgstr ""
+
+#: elf32-ppc.c:10004 elf64-ppc.c:18281
+msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
+msgstr ""
+
+#: elf32-ppc.c:10049
+#, c-format
+msgid "%s not defined in linker created %pA"
+msgstr ""
+
+#: elf32-pru.c:582 elf32-pru.c:1475
+#, c-format
+msgid "error: %pB: old incompatible object file detected"
+msgstr ""
+
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
+msgstr ""
+
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
+msgstr ""
+
+#: elf32-rl78.c:1069
+msgid "warning: RL78_SYM reloc with an unknown symbol"
+msgstr ""
+
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr ""
+
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
+msgstr ""
+
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr ""
+
+#: elf32-rl78.c:1220
+#, c-format
+msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
+msgstr ""
+
+#: elf32-rl78.c:1237
+#, c-format
+msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
+msgstr ""
+
+#: elf32-rl78.c:1246
+msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
+msgstr ""
+
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
+#, c-format
+msgid "- %pB is 64-bit, %pB is not"
+msgstr ""
+
+#: elf32-rl78.c:1281
+#, c-format
+msgid " [64-bit doubles]"
+msgstr ""
+
+#: elf32-rx.c:618
+#, c-format
+msgid "%pB:%pA: table entry %s outside table"
+msgstr ""
+
+#: elf32-rx.c:625
+#, c-format
+msgid "%pB:%pA: table entry %s not word-aligned within table"
+msgstr ""
+
+#: elf32-rx.c:700
+#, c-format
+msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
+msgstr ""
+
+#. 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:720
+#, c-format
+msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
+msgstr ""
+
+#: elf32-rx.c:1304
+msgid "warning: RX_SYM reloc with an unknown symbol"
+msgstr ""
+
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr ""
+
+#: elf32-rx.c:3184
+#, c-format
+msgid "there is a conflict merging the ELF header flags from %pB"
+msgstr ""
+
+#: elf32-rx.c:3187
+#, c-format
+msgid "  the input  file's flags: %s"
+msgstr ""
+
+#: elf32-rx.c:3189
+#, c-format
+msgid "  the output file's flags: %s"
+msgstr ""
+
+#: elf32-rx.c:3796
+#, c-format
+msgid "%pB:%pA: table %s missing corresponding %s"
+msgstr ""
+
+#: elf32-rx.c:3804
+#, c-format
+msgid "%pB:%pA: %s and %s must be in the same input section"
+msgstr ""
+
+#: elf32-s390.c:2009 elf64-s390.c:1976
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
+msgstr ""
+
+#: elf32-score.c:1515 elf32-score7.c:1378 elfxx-mips.c:3853
+msgid "not enough GOT space for local GOT entries"
+msgstr ""
+
+#: elf32-score.c:2747
+msgid "address not word aligned"
+msgstr ""
+
+#: elf32-score.c:2828 elf32-score7.c:2635
+#, c-format
+msgid "%pB: malformed reloc detected for section %pA"
+msgstr ""
+
+#: elf32-score.c:2882 elf32-score7.c:2689
+#, c-format
+msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
+msgstr ""
+
+#: elf32-score.c:3990 elf32-score7.c:3797
+#, c-format
+msgid " [pic]"
+msgstr ""
+
+#: elf32-score.c:3994 elf32-score7.c:3801
+#, c-format
+msgid " [fix dep]"
+msgstr ""
+
+#: elf32-score.c:4041 elf32-score7.c:3848
+#, c-format
+msgid "%pB: warning: linking PIC files with non-PIC files"
+msgstr ""
+
+#: elf32-sh.c:532
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
+msgstr ""
+
+#: elf32-sh.c:3752
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
+msgstr ""
+
+#: elf32-sh.c:3782 elf32-sh.c:3798
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
+msgstr ""
+
+#: elf32-sh.c:3814
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
+msgstr ""
+
+#: elf32-sh.c:3830
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
+msgstr ""
+
+#: elf32-sh.c:3960 elf32-sh.c:4355
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
+msgstr ""
+
+#: elf32-sh.c:4458
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
+msgstr ""
+
+#: elf32-sh.c:4577
+#, c-format
+msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
+msgstr ""
+
+#. The backslash is to prevent bogus trigraph detection.
+#: elf32-sh.c:4595
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
+msgstr ""
+
+#: elf32-sh.c:4603
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
+msgstr ""
+
+#: elf32-sh.c:4610
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
+msgstr ""
+
+#: elf32-sh.c:4617
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
+msgstr ""
+
+#: elf32-sh.c:4624
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
+msgstr ""
+
+#: elf32-sh.c:4631
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
+msgstr ""
+
+#: elf32-sh.c:4666
+#, c-format
+msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
+msgstr ""
+
+#: elf32-sh.c:4684
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
+msgstr ""
+
+#: elf32-sh.c:4693
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
+msgstr ""
+
+#: elf32-sh.c:4700
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
+msgstr ""
+
+#: elf32-sh.c:4815
+#, c-format
+msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
+msgstr ""
+
+#: elf32-sh.c:4883
+#, c-format
+msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
+msgstr ""
+
+#: elf32-sh.c:5011
+#, c-format
+msgid "%X%C: relocation to \"%s\" references a different segment\n"
+msgstr ""
+
+#: elf32-sh.c:5018
+#, c-format
+msgid "%C: warning: relocation to \"%s\" references a different segment\n"
+msgstr ""
+
+#: elf32-sh.c:5486 elf32-sh.c:5568
+#, c-format
+msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
+msgstr ""
+
+#: elf32-sh.c:5492 elf32-sh.c:5573
+#, c-format
+msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
+msgstr ""
+
+#: elf32-sh.c:5523
+#, c-format
+msgid "%pB: Function descriptor relocation with non-zero addend"
+msgstr ""
+
+#: elf32-sh.c:5730 elf64-alpha.c:4663
+#, c-format
+msgid "%pB: TLS local exec code cannot be linked into shared objects"
+msgstr ""
+
+#: elf32-sh.c:5845
+#, c-format
+msgid "%pB: uses %s instructions while previous modules use %s instructions"
+msgstr ""
+
+#: elf32-sh.c:5857
+#, c-format
+msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
+msgstr ""
+
+#: elf32-sh.c:5898
+#, c-format
+msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
+msgstr ""
+
+#: elf32-sh.c:5911
+#, c-format
+msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
+msgstr ""
+
+#: elf32-sparc.c:89
+#, c-format
+msgid "%pB: compiled for a 64 bit system and target is 32 bit"
+msgstr ""
+
+#: elf32-sparc.c:102
+#, c-format
+msgid "%pB: linking little endian files with big endian files"
+msgstr ""
+
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr ""
+
+#: elf32-spu.c:737
+msgid "%X%P: overlay section %pA does not start on a cache line\n"
+msgstr ""
+
+#: elf32-spu.c:745
+msgid "%X%P: overlay section %pA is larger than a cache line\n"
+msgstr ""
+
+#: elf32-spu.c:765
+msgid "%X%P: overlay section %pA is not in cache area\n"
+msgstr ""
+
+#: elf32-spu.c:806
+#, c-format
+msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
+msgstr ""
+
+#: elf32-spu.c:1032
+#, c-format
+msgid "warning: call to non-function symbol %s defined in %pB"
+msgstr ""
+
+#: elf32-spu.c:1382
+#, c-format
+msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
+msgstr ""
+
+#: elf32-spu.c:1912
+#, c-format
+msgid "%pB is not allowed to define %s"
+msgstr ""
+
+#: elf32-spu.c:1920
+#, c-format
+msgid "you are not allowed to define %s in a script"
+msgstr ""
+
+#: elf32-spu.c:1954
+#, c-format
+msgid "%s in overlay section"
+msgstr ""
+
+#: elf32-spu.c:1983
+msgid "overlay stub relocation overflow"
+msgstr ""
+
+#: elf32-spu.c:1992 elf64-ppc.c:15308
+msgid "stubs don't match calculated size"
+msgstr ""
+
+#: elf32-spu.c:2575
+#, c-format
+msgid "warning: %s overlaps %s\n"
+msgstr ""
+
+#: elf32-spu.c:2591
+#, c-format
+msgid "warning: %s exceeds section size\n"
+msgstr ""
+
+#: elf32-spu.c:2623
+#, c-format
+msgid "%pA:0x%v not found in function table\n"
+msgstr ""
+
+#: elf32-spu.c:2764
+#, c-format
+msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
+msgstr ""
+
+#: elf32-spu.c:3330
+#, c-format
+msgid "stack analysis will ignore the call from %s to %s\n"
+msgstr ""
+
+#: elf32-spu.c:4027
+msgid "  calls:\n"
+msgstr ""
+
+#: elf32-spu.c:4342
+#, c-format
+msgid "%s duplicated in %s\n"
+msgstr ""
+
+#: elf32-spu.c:4346
+#, c-format
+msgid "%s duplicated\n"
+msgstr ""
+
+#: elf32-spu.c:4353
+msgid "sorry, no support for duplicate object files in auto-overlay script\n"
+msgstr ""
+
+#: elf32-spu.c:4395
+#, c-format
+msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
+msgstr ""
+
+#: elf32-spu.c:4551
+#, c-format
+msgid "%pB:%pA%s exceeds overlay size\n"
+msgstr ""
+
+#: elf32-spu.c:4692
+msgid "%F%P: auto overlay error: %E\n"
+msgstr ""
+
+#: elf32-spu.c:4713
+msgid "Stack size for call graph root nodes.\n"
+msgstr ""
+
+#: elf32-spu.c:4714
+msgid ""
+"\n"
+"Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
+msgstr ""
+
+#: elf32-spu.c:4724
+msgid "Maximum stack required is 0x%v\n"
+msgstr ""
+
+#: elf32-spu.c:4743
+msgid "%X%P: stack/lrlive analysis error: %E\n"
+msgstr ""
+
+#: elf32-spu.c:4746
+msgid "%F%P: can not build overlay stubs: %E\n"
+msgstr ""
+
+#: elf32-spu.c:4815
+msgid "fatal error while creating .fixup"
+msgstr ""
+
+#: elf32-spu.c:5051
+#, c-format
+msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr ""
+
+#: elf32-tic6x.c:1588
+msgid "warning: generating a shared library containing non-PIC code"
+msgstr ""
+
+#: elf32-tic6x.c:1593
+msgid "warning: generating a shared library containing non-PID code"
+msgstr ""
+
+#: elf32-tic6x.c:2434
+#, c-format
+msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
+msgstr ""
+
+#: elf32-tic6x.c:3498
+#, c-format
+msgid "%pB: error: unknown mandatory EABI object attribute %d"
+msgstr ""
+
+#: elf32-tic6x.c:3507
+#, c-format
+msgid "%pB: warning: unknown EABI object attribute %d"
+msgstr ""
+
+#: elf32-tic6x.c:3625 elf32-tic6x.c:3634
+#, c-format
+msgid "error: %pB requires more stack alignment than %pB preserves"
+msgstr ""
+
+#: elf32-tic6x.c:3644 elf32-tic6x.c:3653
+#, c-format
+msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
+msgstr ""
+
+#: elf32-tic6x.c:3662 elf32-tic6x.c:3671
+#, c-format
+msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
+msgstr ""
+
+#: elf32-tic6x.c:3680 elf32-tic6x.c:3688
+#, c-format
+msgid "error: %pB requires more array alignment than %pB preserves"
+msgstr ""
+
+#: elf32-tic6x.c:3711
+#, c-format
+msgid "warning: %pB and %pB differ in wchar_t size"
+msgstr ""
+
+#: elf32-tic6x.c:3730
+#, c-format
+msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
+msgstr ""
+
+#: elf32-tilepro.c:3627 elfxx-tilegx.c:4017 elfxx-x86.c:2694
+#: elfnn-aarch64.c:9831 elfnn-loongarch.c:3845 elfnn-riscv.c:3264
+#, c-format
+msgid "discarded output section: `%pA'"
+msgstr ""
+
+#: elf32-v850.c:152
+#, c-format
+msgid "variable `%s' cannot occupy in multiple small data regions"
+msgstr ""
+
+#: 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:158
+#, c-format
+msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
+msgstr ""
+
+#: elf32-v850.c:161
+#, c-format
+msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
+msgstr ""
+
+#: elf32-v850.c:164
+#, c-format
+msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
+msgstr ""
+
+#: elf32-v850.c:466
+msgid "failed to find previous HI16 reloc"
+msgstr ""
+
+#: elf32-v850.c:2306
+msgid "could not locate special linker symbol __gp"
+msgstr ""
+
+#: elf32-v850.c:2310
+msgid "could not locate special linker symbol __ep"
+msgstr ""
+
+#: elf32-v850.c:2314
+msgid "could not locate special linker symbol __ctbp"
+msgstr ""
+
+#: elf32-v850.c:2535
+#, c-format
+msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
+msgstr ""
+
+#: elf32-v850.c:2551
+#, c-format
+msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
+msgstr ""
+
+#: elf32-v850.c:2566
+#, c-format
+msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
+msgstr ""
+
+#: elf32-v850.c:2598
+#, c-format
+msgid " alignment of 8-byte entities: "
+msgstr ""
+
+#: elf32-v850.c:2601
+#, c-format
+msgid "4-byte"
+msgstr ""
+
+#: elf32-v850.c:2602
+#, c-format
+msgid "8-byte"
+msgstr ""
+
+#: elf32-v850.c:2603 elf32-v850.c:2615
+#, c-format
+msgid "not set"
+msgstr ""
+
+#: elf32-v850.c:2604 elf32-v850.c:2616 elf32-v850.c:2628 elf32-v850.c:2639
+#: elf32-v850.c:2650 elf32-v850.c:2661
+#, c-format
+msgid "unknown: %x"
+msgstr ""
+
+#: elf32-v850.c:2610
+#, c-format
+msgid " size of doubles: "
+msgstr ""
+
+#: elf32-v850.c:2613
+#, c-format
+msgid "4-bytes"
+msgstr ""
+
+#: elf32-v850.c:2614
+#, c-format
+msgid "8-bytes"
+msgstr ""
+
+#: elf32-v850.c:2622
+#, c-format
+msgid " FPU support required: "
+msgstr ""
+
+#: elf32-v850.c:2625
+#, c-format
+msgid "FPU-2.0"
+msgstr ""
+
+#: elf32-v850.c:2626
+#, c-format
+msgid "FPU-3.0"
+msgstr ""
+
+#: elf32-v850.c:2627
+#, c-format
+msgid "none"
+msgstr ""
+
+#: elf32-v850.c:2634
+#, c-format
+msgid "SIMD use: "
+msgstr ""
+
+#: elf32-v850.c:2637 elf32-v850.c:2648 elf32-v850.c:2659
+#, c-format
+msgid "yes"
+msgstr "áƒ“áƒ˜áƒ�áƒ®"
+
+#: elf32-v850.c:2638 elf32-v850.c:2649 elf32-v850.c:2660
+#, c-format
+msgid "no"
+msgstr ""
+
+#: elf32-v850.c:2645
+#, c-format
+msgid "CACHE use: "
+msgstr ""
+
+#: elf32-v850.c:2656
+#, c-format
+msgid "MMU use: "
+msgstr ""
+
+#: elf32-v850.c:2823 elf32-v850.c:2879
+#, c-format
+msgid "%pB: architecture mismatch with previous modules"
+msgstr ""
+
+#. xgettext:c-format.
+#: elf32-v850.c:2897
+#, c-format
+msgid "private flags = %lx: "
+msgstr ""
+
+#: elf32-v850.c:2902
+#, c-format
+msgid "unknown v850 architecture"
+msgstr ""
+
+#: elf32-v850.c:2904
+#, c-format
+msgid "v850 E3 architecture"
+msgstr ""
+
+#: elf32-v850.c:2906 elf32-v850.c:2913
+#, c-format
+msgid "v850 architecture"
+msgstr ""
+
+#: elf32-v850.c:2914
+#, c-format
+msgid "v850e architecture"
+msgstr ""
+
+#: elf32-v850.c:2915
+#, c-format
+msgid "v850e1 architecture"
+msgstr ""
+
+#: elf32-v850.c:2916
+#, c-format
+msgid "v850e2 architecture"
+msgstr ""
+
+#: elf32-v850.c:2917
+#, c-format
+msgid "v850e2v3 architecture"
+msgstr ""
+
+#: elf32-v850.c:2918
+#, c-format
+msgid "v850e3v5 architecture"
+msgstr ""
+
+#: elf32-v850.c:3591 elf32-v850.c:3830
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
+msgstr ""
+
+#: elf32-v850.c:3601 elf32-v850.c:3840
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
+msgstr ""
+
+#: elf32-v850.c:3647 elf32-v850.c:3875
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
+msgstr ""
+
+#: elf32-v850.c:3687
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
+msgstr ""
+
+#: elf32-vax.c:539
+#, c-format
+msgid " [nonpic]"
+msgstr ""
+
+#: elf32-vax.c:542
+#, c-format
+msgid " [d-float]"
+msgstr ""
+
+#: elf32-vax.c:545
+#, c-format
+msgid " [g-float]"
+msgstr ""
+
+#: elf32-vax.c:631
+#, c-format
+msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
+msgstr ""
+
+#: elf32-vax.c:1388
+#, c-format
+msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
+msgstr ""
+
+#: elf32-vax.c:1514
+#, c-format
+msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
+msgstr ""
+
+#: elf32-vax.c:1521
+#, c-format
+msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
+msgstr ""
+
+#: elf32-visium.c:824
+#, c-format
+msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
+msgstr ""
+
+#: elf32-xgate.c:506
+#, c-format
+msgid "cpu=XGATE]"
+msgstr ""
+
+#: elf32-xgate.c:508
+#, c-format
+msgid "error reading cpu type from elf private data"
+msgstr ""
+
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2076 elfnn-ia64.c:2345
+msgid "non-zero addend in @fptr reloc"
+msgstr ""
+
+#: elf32-xtensa.c:998
+#, c-format
+msgid "%pB(%pA): invalid property table"
+msgstr ""
+
+#: elf32-xtensa.c:2733
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
+msgstr ""
+
+#: elf32-xtensa.c:2816 elf32-xtensa.c:2939
+msgid "dynamic relocation in read-only section"
+msgstr ""
+
+#: elf32-xtensa.c:2916
+msgid "TLS relocation invalid without dynamic sections"
+msgstr ""
+
+#: elf32-xtensa.c:3129
+msgid "internal inconsistency in size of .got.loc section"
+msgstr ""
+
+#: elf32-xtensa.c:3435
+#, c-format
+msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
+msgstr ""
+
+#: elf32-xtensa.c:4734 elf32-xtensa.c:4742
+msgid "attempt to convert L32R/CALLX to CALL failed"
+msgstr ""
+
+#: elf32-xtensa.c:6567 elf32-xtensa.c:6646 elf32-xtensa.c:8072
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
+msgstr ""
+
+#: elf32-xtensa.c:7813
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
+msgstr ""
+
+#: elf32-xtensa.c:9671
+msgid "invalid relocation address"
+msgstr ""
+
+#: elf32-xtensa.c:9762
+msgid "overflow after relaxation"
+msgstr ""
+
+#: elf32-xtensa.c:10908
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
+msgstr ""
+
+#: 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:474
+msgid "GPDISP relocation did not find ldah and lda instructions"
+msgstr ""
+
+#: elf64-alpha.c:2002 elf64-alpha.c:2697 elflink.c:15391
+#: elfnn-loongarch.c:1566
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr ""
+
+#: elf64-alpha.c:2454
+#, c-format
+msgid "%pB: .got subsegment exceeds 64K (size %d)"
+msgstr ""
+
+#: elf64-alpha.c:2992 elf64-alpha.c:3187
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
+msgstr ""
+
+#: elf64-alpha.c:4387 elf64-alpha.c:4400
+#, c-format
+msgid "%pB: gp-relative relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf64-alpha.c:4456
+#, c-format
+msgid "%pB: change in gp: BRSGP %s"
+msgstr ""
+
+#: elf64-alpha.c:4481 mach-o.c:616 elfnn-riscv.c:619
+msgid "<unknown>"
+msgstr ""
+
+#: elf64-alpha.c:4487
+#, c-format
+msgid "%pB: !samegp reloc against symbol without .prologue: %s"
+msgstr ""
+
+#: elf64-alpha.c:4545
+#, c-format
+msgid "%pB: unhandled dynamic relocation against %s"
+msgstr ""
+
+#: elf64-alpha.c:4580
+#, c-format
+msgid "%pB: pc-relative relocation against undefined weak symbol %s"
+msgstr ""
+
+#: elf64-alpha.c:4646
+#, c-format
+msgid "%pB: dtp-relative relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf64-alpha.c:4671
+#, c-format
+msgid "%pB: tp-relative relocation against dynamic symbol %s"
+msgstr ""
+
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:557
+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:2032
+#, c-format
+msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
+msgstr ""
+
+#: elf64-hppa.c:3236
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
+msgstr ""
+
+#: elf64-ia64-vms.c:599 elfnn-ia64.c:640
+#, c-format
+msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
+msgstr ""
+
+#: elf64-ia64-vms.c:2031 elfnn-ia64.c:2293
+msgid "@pltoff reloc against local symbol"
+msgstr ""
+
+#: elf64-ia64-vms.c:3277 elfnn-ia64.c:3670
+#, c-format
+msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
+msgstr ""
+
+#: elf64-ia64-vms.c:3287 elfnn-ia64.c:3680
+#, c-format
+msgid "%pB: __gp does not cover short data segment"
+msgstr ""
+
+#: elf64-ia64-vms.c:3557 elfnn-ia64.c:3953
+#, c-format
+msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
+msgstr ""
+
+#: elf64-ia64-vms.c:3621 elfnn-ia64.c:4021
+#, c-format
+msgid "%pB: @gprel relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf64-ia64-vms.c:3680 elfnn-ia64.c:4084
+#, c-format
+msgid "%pB: linking non-pic code in a position independent executable"
+msgstr ""
+
+#: elf64-ia64-vms.c:3782 elfnn-ia64.c:4222
+#, c-format
+msgid "%pB: @internal branch to dynamic symbol %s"
+msgstr ""
+
+#: elf64-ia64-vms.c:3785 elfnn-ia64.c:4225
+#, c-format
+msgid "%pB: speculation fixup to dynamic symbol %s"
+msgstr ""
+
+#: elf64-ia64-vms.c:3788 elfnn-ia64.c:4228
+#, c-format
+msgid "%pB: @pcrel relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf64-ia64-vms.c:3912 elfnn-ia64.c:4425
+msgid "unsupported reloc"
+msgstr ""
+
+#: elf64-ia64-vms.c:3949 elfnn-ia64.c:4463
+#, c-format
+msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
+msgstr ""
+
+#: elf64-ia64-vms.c:3966 elfnn-ia64.c:4480
+#, 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:4262 elfnn-ia64.c:4741
+#, c-format
+msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
+msgstr ""
+
+#: elf64-ia64-vms.c:4271 elfnn-ia64.c:4750
+#, c-format
+msgid "%pB: linking big-endian files with little-endian files"
+msgstr ""
+
+#: elf64-ia64-vms.c:4280 elfnn-ia64.c:4759
+#, c-format
+msgid "%pB: linking 64-bit files with 32-bit files"
+msgstr ""
+
+#: elf64-ia64-vms.c:4289 elfnn-ia64.c:4768
+#, c-format
+msgid "%pB: linking constant-gp files with non-constant-gp files"
+msgstr ""
+
+#: elf64-ia64-vms.c:4299 elfnn-ia64.c:4778
+#, c-format
+msgid "%pB: linking auto-pic files with non-auto-pic files"
+msgstr ""
+
+#: elf64-ia64-vms.c:5146 elflink.c:5298
+#, 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:5153 elflink.c:5305
+#, c-format
+msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
+msgstr ""
+
+#: elf64-ia64-vms.c:5169 elflink.c:5322
+#, c-format
+msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
+msgstr ""
+
+#: elf64-mips.c:4099
+#, c-format
+msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: elf64-mmix.c:1195
+#, c-format
+msgid ""
+"%pB: Internal inconsistency error for value for\n"
+" linker-allocated global register: linked: %#<PRIx64> != relaxed: %#<PRIx64>"
+msgstr ""
+
+#: elf64-mmix.c:1619
+#, c-format
+msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
+msgstr ""
+
+#: elf64-mmix.c:1625
+#, c-format
+msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
+msgstr ""
+
+#: elf64-mmix.c:1670
+#, c-format
+msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
+msgstr ""
+
+#: elf64-mmix.c:1676
+#, c-format
+msgid "%pB: register relocation against non-register symbol: %s in %pA"
+msgstr ""
+
+#: elf64-mmix.c:1713
+#, c-format
+msgid "%pB: directive LOCAL valid only with a register or absolute value"
+msgstr ""
+
+#: 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:2157
+#, c-format
+msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
+msgstr ""
+
+#: elf64-mmix.c:2212
+msgid "register section has contents\n"
+msgstr ""
+
+#: elf64-mmix.c:2402
+#, c-format
+msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
+msgstr ""
+
+#: elf64-ppc.c:1356
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr ""
+
+#: elf64-ppc.c:4306
+#, c-format
+msgid "symbol '%s' has invalid st_other for ABI version 1"
+msgstr ""
+
+#: elf64-ppc.c:4487
+#, c-format
+msgid "%pB .opd not allowed in ABI version %d"
+msgstr ""
+
+#: elf64-ppc.c:5082
+#, c-format
+msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
+msgstr ""
+
+#: elf64-ppc.c:5472
+#, c-format
+msgid "%pB uses unknown e_flags 0x%lx"
+msgstr ""
+
+#: elf64-ppc.c:5480
+#, c-format
+msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
+msgstr ""
+
+#: elf64-ppc.c:5507
+#, c-format
+msgid " [abiv%ld]"
+msgstr ""
+
+#: elf64-ppc.c:6804
+msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
+msgstr ""
+
+#: elf64-ppc.c:7071
+#, c-format
+msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
+msgstr ""
+
+#: elf64-ppc.c:7326
+#, c-format
+msgid "dynreloc miscount for %pB, section %pA"
+msgstr ""
+
+#: elf64-ppc.c:7415
+#, c-format
+msgid "%pB: .opd is not a regular array of opd entries"
+msgstr ""
+
+#: elf64-ppc.c:7425
+#, c-format
+msgid "%pB: unexpected reloc type %u in .opd section"
+msgstr ""
+
+#: elf64-ppc.c:7447
+#, c-format
+msgid "%pB: undefined sym `%s' in .opd section"
+msgstr ""
+
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7948
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr ""
+
+#: elf64-ppc.c:7956
+msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
+msgstr ""
+
+#: elf64-ppc.c:8272
+msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
+msgstr ""
+
+#: elf64-ppc.c:8707 elf64-ppc.c:9422
+#, c-format
+msgid "%s defined on removed toc entry"
+msgstr ""
+
+#: elf64-ppc.c:9379
+#, c-format
+msgid "%H: %s references optimized away TOC entry\n"
+msgstr ""
+
+#: elf64-ppc.c:9600
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr ""
+
+#: elf64-ppc.c:10495
+#, c-format
+msgid "warning: discarding dynamic section %s"
+msgstr ""
+
+#: elf64-ppc.c:11630
+msgid "%P: cannot find opd entry toc for `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:11780
+#, c-format
+msgid "long branch stub `%s' offset overflow"
+msgstr ""
+
+#: elf64-ppc.c:11807
+#, c-format
+msgid "can't find branch stub `%s'"
+msgstr ""
+
+#: elf64-ppc.c:11871 elf64-ppc.c:12123 elf64-ppc.c:14689
+#, c-format
+msgid "%P: linkage table error against `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:12322
+#, c-format
+msgid "can't build branch stub `%s'"
+msgstr ""
+
+#: elf64-ppc.c:13349
+#, c-format
+msgid "%pB section %pA exceeds stub group size"
+msgstr ""
+
+#: elf64-ppc.c:14871
+msgid "__tls_get_addr call offset overflow"
+msgstr ""
+
+#: elf64-ppc.c:15211 elf64-ppc.c:15230
+#, c-format
+msgid "%s offset too large for .eh_frame sdata4 encoding"
+msgstr ""
+
+#: elf64-ppc.c:15316
+#, c-format
+msgid "linker stubs in %u group\n"
+msgid_plural "linker stubs in %u groups\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: elf64-ppc.c:15323
+#, c-format
+msgid ""
+"%s  branch         %lu\n"
+"  long branch    %lu\n"
+"  plt call       %lu\n"
+"  global entry   %lu"
+msgstr ""
+
+#: elf64-ppc.c:15705
+#, c-format
+msgid "%H: %s used with TLS symbol `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:15707
+#, c-format
+msgid "%H: %s used with non-TLS symbol `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:16491
+#, c-format
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
+msgstr ""
+
+#: elf64-ppc.c:16497
+#, c-format
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
+msgstr ""
+
+#: elf64-ppc.c:17154
+#, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr ""
+
+#: elf64-ppc.c:17430
+#, c-format
+msgid "%H: %s for indirect function `%pT' unsupported\n"
+msgstr ""
+
+#: elf64-ppc.c:17522
+#, c-format
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr ""
+
+#: elf64-ppc.c:17577
+#, c-format
+msgid "%P: %pB: %s is not supported for `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:17846
+#, c-format
+msgid "%H: error: %s not a multiple of %u\n"
+msgstr ""
+
+#: elf64-ppc.c:17869
+#, c-format
+msgid "%H: unresolvable %s against `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:18014
+#, c-format
+msgid "%H: %s against `%pT': error %d\n"
+msgstr ""
+
+#: elf64-s390.c:2457
+#, c-format
+msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
+msgstr ""
+
+#: elf64-s390.c:3066
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): misaligned symbol `%s' (%#<PRIx64>) for relocation %s"
+msgstr ""
+
+#: elf64-sparc.c:134 elfcode.h:1525
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr ""
+
+#: elf64-sparc.c:493
+#, c-format
+msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
+msgstr ""
+
+#: elf64-sparc.c:514
+#, c-format
+msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
+msgstr ""
+
+#: elf64-sparc.c:538
+#, c-format
+msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
+msgstr ""
+
+#: elf64-sparc.c:585
+#, c-format
+msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
+msgstr ""
+
+#: elf64-sparc.c:717
+#, c-format
+msgid "%pB: linking UltraSPARC specific with HAL specific code"
+msgstr ""
+
+#: elf64-x86-64.c:1481
+msgid "hidden symbol "
+msgstr ""
+
+#: elf64-x86-64.c:1484
+msgid "internal symbol "
+msgstr ""
+
+#: elf64-x86-64.c:1487 elf64-x86-64.c:1491
+msgid "protected symbol "
+msgstr ""
+
+#: elf64-x86-64.c:1493
+msgid "symbol "
+msgstr ""
+
+#: elf64-x86-64.c:1499
+msgid "undefined "
+msgstr ""
+
+#: elf64-x86-64.c:1509
+msgid "a shared object"
+msgstr ""
+
+#: elf64-x86-64.c:1511
+msgid "; recompile with -fPIC"
+msgstr ""
+
+#: elf64-x86-64.c:1516
+msgid "a PIE object"
+msgstr ""
+
+#: elf64-x86-64.c:1518
+msgid "a PDE object"
+msgstr ""
+
+#: elf64-x86-64.c:1520
+msgid "; recompile with -fPIE"
+msgstr ""
+
+#: elf64-x86-64.c:1524
+#, c-format
+msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
+msgstr ""
+
+#: elf64-x86-64.c:2029
+#, c-format
+msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
+msgstr ""
+
+#: elf64-x86-64.c:2173
+#, c-format
+msgid "%pB: '%s' accessed both as normal and thread local symbol"
+msgstr ""
+
+#: elf64-x86-64.c:2832 elfnn-aarch64.c:5556 elfnn-riscv.c:2111
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
+msgstr ""
+
+#: elf64-x86-64.c:3092
+#, 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:3106
+#, 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:3396
+#, 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:3539 elflink.c:13706
+msgid "%F%P: corrupt input: %pB\n"
+msgstr ""
+
+#: elf64-x86-64.c:4223
+#, c-format
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr ""
+
+#: elf64-x86-64.c:4384
+#, c-format
+msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr ""
+
+#: elf64-x86-64.c:4452
+#, c-format
+msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr ""
+
+#: elf64-x86-64.c:4505
+#, c-format
+msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr ""
+
+#: elfcode.h:329
+#, c-format
+msgid "warning: %pB has a section extending past end of file"
+msgstr ""
+
+#: elfcode.h:777
+#, c-format
+msgid "warning: %pB has a corrupt string table index"
+msgstr ""
+
+#: elfcode.h:824
+#, c-format
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr ""
+
+#: elfcode.h:1011
+#, c-format
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr ""
+
+#: elfcode.h:1265
+#, c-format
+msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
+msgstr ""
+
+#: elfcore.h:280
+#, c-format
+msgid "warning: %pB has a segment extending past end of file"
+msgstr ""
+
+#: elflink.c:1410
+#, c-format
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
+msgstr ""
+
+#: elflink.c:1416
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
+msgstr ""
+
+#: elflink.c:1422
+#, c-format
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
+msgstr ""
+
+#: elflink.c:1428
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
+msgstr ""
+
+#: elflink.c:2140
+#, c-format
+msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
+msgstr ""
+
+#: elflink.c:2601
+#, c-format
+msgid "%pB: version node not found for symbol %s"
+msgstr ""
+
+#: elflink.c:2692
+#, c-format
+msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
+msgstr ""
+
+#: elflink.c:2704
+#, 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:2915
+#, c-format
+msgid "%pB: relocation size mismatch in %pB section %pA"
+msgstr ""
+
+#: elflink.c:3244
+#, c-format
+msgid "warning: type and size of dynamic symbol `%s' are not defined"
+msgstr ""
+
+#: elflink.c:3304
+msgid "%P: copy reloc against protected `%pT' is dangerous\n"
+msgstr ""
+
+#: elflink.c:4266
+#, c-format
+msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
+msgstr ""
+
+#: elflink.c:4749
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr ""
+
+#: elflink.c:4817
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr ""
+
+#: elflink.c:4965
+#, c-format
+msgid "%pB: not enough version information"
+msgstr ""
+
+#: elflink.c:5003
+#, c-format
+msgid "%pB: %s: invalid version %u (max %d)"
+msgstr ""
+
+#: elflink.c:5040
+#, c-format
+msgid "%pB: %s: invalid needed version %d"
+msgstr ""
+
+#: elflink.c:5459
+#, c-format
+msgid "%pB: undefined reference to symbol '%s'"
+msgstr ""
+
+#: elflink.c:6519
+#, c-format
+msgid "%pB: stack size specified and %s set"
+msgstr ""
+
+#: elflink.c:6523
+#, c-format
+msgid "%pB: %s not absolute"
+msgstr ""
+
+#: elflink.c:6735
+#, c-format
+msgid "%s: undefined version: %s"
+msgstr ""
+
+#: elflink.c:7124
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr ""
+
+#: elflink.c:7181
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr ""
+
+#: elflink.c:7186
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr ""
+
+#: elflink.c:7189
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr ""
+
+#: elflink.c:7343
+#, c-format
+msgid "%pB: .preinit_array section is not allowed in DSO"
+msgstr ""
+
+#: elflink.c:8934
+#, c-format
+msgid "undefined %s reference in complex symbol: %s"
+msgstr ""
+
+#: elflink.c:9097 elflink.c:9105
+msgid "division by zero"
+msgstr "áƒœáƒ£áƒšáƒ–áƒ” áƒ’áƒ�áƒ§áƒ�áƒ¤áƒ�"
+
+#: elflink.c:9119
+#, 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:9455
+#, c-format
+msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
+msgstr ""
+
+#: elflink.c:9458
+#, c-format
+msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
+msgstr ""
+
+#: elflink.c:9709 elflink.c:9727 elflink.c:9766 elflink.c:9784
+#, 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:9743 elflink.c:9800
+#, c-format
+msgid "%pB: unable to sort relocs - they are of an unknown size"
+msgstr ""
+
+#: elflink.c:9852
+msgid "not enough memory to sort relocations"
+msgstr ""
+
+#: elflink.c:10190
+#, c-format
+msgid "%pB: too many sections: %d (>= %d)"
+msgstr ""
+
+#: elflink.c:10466
+#, c-format
+msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
+msgstr ""
+
+#: elflink.c:10469
+#, c-format
+msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
+msgstr ""
+
+#: elflink.c:10472
+#, c-format
+msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
+msgstr ""
+
+#: elflink.c:10558
+#, c-format
+msgid "%pB: could not find output section %pA for input section %pA"
+msgstr ""
+
+#: elflink.c:10712
+#, c-format
+msgid "%pB: protected symbol `%s' isn't defined"
+msgstr ""
+
+#: elflink.c:10715
+#, c-format
+msgid "%pB: internal symbol `%s' isn't defined"
+msgstr ""
+
+#: elflink.c:10718
+#, c-format
+msgid "%pB: hidden symbol `%s' isn't defined"
+msgstr ""
+
+#: elflink.c:10750
+#, c-format
+msgid "%pB: no symbol version section for versioned symbol `%s'"
+msgstr ""
+
+#: elflink.c:11424
+#, c-format
+msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
+msgstr ""
+
+#: elflink.c:11894
+#, c-format
+msgid "error: %pB: size of section %pA is not multiple of address size"
+msgstr ""
+
+#: elflink.c:12171
+#, c-format
+msgid "%pB: no symbol found for import library"
+msgstr ""
+
+#: elflink.c:12746
+msgid "%F%P: %pB: failed to finish relative relocations\n"
+msgstr ""
+
+#: elflink.c:12823
+#, c-format
+msgid "%pB: file class %s incompatible with %s"
+msgstr ""
+
+#: elflink.c:13072
+#, c-format
+msgid "%pB: failed to generate import library"
+msgstr ""
+
+#: elflink.c:13240
+#, c-format
+msgid "warning: %s section has zero size"
+msgstr ""
+
+#: elflink.c:13288
+#, c-format
+msgid "warning: section '%s' is being made into a note"
+msgstr ""
+
+#: elflink.c:13382
+msgid "%P%X: read-only segment has dynamic relocations\n"
+msgstr ""
+
+#: elflink.c:13385
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr ""
+
+#: elflink.c:13388
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr ""
+
+#: elflink.c:13391
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr ""
+
+#: elflink.c:13527
+msgid "%P%X: can not read symbols: %E\n"
+msgstr ""
+
+#: elflink.c:13952
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr ""
+
+#: elflink.c:14430
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
+msgstr ""
+
+#: elflink.c:14471
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr ""
+
+#: elflink.c:14614
+#, c-format
+msgid "unrecognized INPUT_SECTION_FLAG %s\n"
+msgstr ""
+
+#: elflink.c:15397
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr ""
+
+#: elflink.c:15486
+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:10031 elfnn-aarch64.c:10038
+#, 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:812
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr ""
+
+#: elfxx-loongarch.c:1398
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr ""
+
+#: elfxx-loongarch.c:1427
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr ""
+
+#: elfxx-loongarch.c:1446
+#, c-format
+msgid "%pB: unsupported relocation type name %s"
+msgstr ""
+
+#: elfxx-mips.c:1537
+msgid "static procedure (no name)"
+msgstr ""
+
+#: elfxx-mips.c:5835
+msgid "MIPS16 and microMIPS functions cannot call each other"
+msgstr ""
+
+#: elfxx-mips.c:6602
+msgid "%X%H: unsupported JALX to the same ISA mode\n"
+msgstr ""
+
+#: elfxx-mips.c:6635
+msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
+msgstr ""
+
+#: elfxx-mips.c:6680
+msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
+msgstr ""
+
+#: elfxx-mips.c:6692
+msgid "%X%H: unsupported branch between ISA modes\n"
+msgstr ""
+
+#: elfxx-mips.c:7321
+#, c-format
+msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
+msgstr ""
+
+#: elfxx-mips.c:7365
+#, c-format
+msgid "%pB: warning: bad `%s' option size %u smaller than its header"
+msgstr ""
+
+#: elfxx-mips.c:7601
+#, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr ""
+
+#: elfxx-mips.c:8424 elfxx-mips.c:8550
+#, c-format
+msgid "%pB: warning: cannot determine the target function for stub section `%s'"
+msgstr ""
+
+#: elfxx-mips.c:8682
+#, c-format
+msgid "%pB: malformed reloc detected for section %s"
+msgstr ""
+
+#: elfxx-mips.c:8782
+#, c-format
+msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
+msgstr ""
+
+#: elfxx-mips.c:8922
+#, c-format
+msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
+msgstr ""
+
+#: elfxx-mips.c:9225
+#, 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:9351
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr ""
+
+#: elfxx-mips.c:9354
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr ""
+
+#: elfxx-mips.c:9574
+#, c-format
+msgid "non-dynamic relocations refer to dynamic symbol %s"
+msgstr ""
+
+#: elfxx-mips.c:10509
+#, c-format
+msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
+msgstr ""
+
+#: elfxx-mips.c:10649
+msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
+msgstr ""
+
+#: elfxx-mips.c:10668
+msgid "cannot convert a jump to JALX for a non-word-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10671
+msgid "jump to a non-word-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10672
+msgid "jump to a non-instruction-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10675
+msgid "cannot convert a branch to JALX for a non-word-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10677
+msgid "branch to a non-instruction-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10679
+msgid "PC-relative load from unaligned address"
+msgstr ""
+
+#: elfxx-mips.c:10979
+#, c-format
+msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr ""
+
+#: elfxx-mips.c:11094 elfxx-mips.c:11681
+#, c-format
+msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
+msgstr ""
+
+#: elfxx-mips.c:11653
+#, c-format
+msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr ""
+
+#: elfxx-mips.c:13410 reloc.c:8573
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr ""
+
+#: elfxx-mips.c:13511 reloc.c:8661
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr ""
+
+#: elfxx-mips.c:13520 reloc.c:8670
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr ""
+
+#: elfxx-mips.c:14702
+#, c-format
+msgid "%pB: unknown architecture %s"
+msgstr ""
+
+#: elfxx-mips.c:15236
+#, c-format
+msgid "%pB: illegal section name `%pA'"
+msgstr ""
+
+#: elfxx-mips.c:15513
+#, c-format
+msgid "%pB: warning: linking abicalls files with non-abicalls files"
+msgstr ""
+
+#: elfxx-mips.c:15530
+#, c-format
+msgid "%pB: linking 32-bit code with 64-bit code"
+msgstr ""
+
+#: elfxx-mips.c:15562 elfxx-mips.c:15628 elfxx-mips.c:15643
+#, c-format
+msgid "%pB: linking %s module with previous %s modules"
+msgstr ""
+
+#: elfxx-mips.c:15586
+#, c-format
+msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
+msgstr ""
+
+#: elfxx-mips.c:15611
+#, c-format
+msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
+msgstr ""
+
+#: elfxx-mips.c:15745
+#, 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:15751
+#, c-format
+msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
+msgstr ""
+
+#: elfxx-mips.c:15757
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
+msgstr ""
+
+#: elfxx-mips.c:15771
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
+msgstr ""
+
+#: elfxx-mips.c:15790
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr ""
+
+#: elfxx-mips.c:15802
+#, c-format
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
+msgstr ""
+
+#: elfxx-mips.c:15811
+#, c-format
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr ""
+
+#: elfxx-mips.c:15873
+#, c-format
+msgid "%pB: endianness incompatible with that of the selected emulation"
+msgstr ""
+
+#: elfxx-mips.c:15887
+#, c-format
+msgid "%pB: ABI is incompatible with that of the selected emulation"
+msgstr ""
+
+#: elfxx-mips.c:15940
+#, c-format
+msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
+msgstr ""
+
+#: elfxx-mips.c:15945
+#, c-format
+msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
+msgstr ""
+
+#: elfxx-mips.c:15949
+#, c-format
+msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
+msgstr ""
+
+#: elfxx-mips.c:15956
+#, c-format
+msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
+msgstr ""
+
+#: elfxx-mips.c:15960
+#, c-format
+msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
+msgstr ""
+
+#: elfxx-mips.c:16151
+msgid "-mips32r2 -mfp64 (12 callee-saved)"
+msgstr ""
+
+#: elfxx-mips.c:16213 elfxx-mips.c:16224
+msgid "None"
+msgstr "áƒ�áƒ áƒ�áƒ¤áƒ”áƒ áƒ˜áƒ¡"
+
+#: elfxx-mips.c:16215 elfxx-mips.c:16284
+msgid "Unknown"
+msgstr ""
+
+#: elfxx-mips.c:16295
+#, c-format
+msgid "Hard or soft float\n"
+msgstr ""
+
+#: elfxx-mips.c:16298
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr ""
+
+#: elfxx-mips.c:16301
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr ""
+
+#: elfxx-mips.c:16304
+#, c-format
+msgid "Soft float\n"
+msgstr ""
+
+#: elfxx-mips.c:16307
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
+msgstr ""
+
+#: elfxx-mips.c:16310
+#, c-format
+msgid "Hard float (32-bit CPU, Any FPU)\n"
+msgstr ""
+
+#: elfxx-mips.c:16313
+#, c-format
+msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
+msgstr ""
+
+#: elfxx-mips.c:16316
+#, c-format
+msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
+msgstr ""
+
+#: elfxx-mips.c:16348
+#, c-format
+msgid " [abi=O32]"
+msgstr ""
+
+#: elfxx-mips.c:16350
+#, c-format
+msgid " [abi=O64]"
+msgstr ""
+
+#: elfxx-mips.c:16352
+#, c-format
+msgid " [abi=EABI32]"
+msgstr ""
+
+#: elfxx-mips.c:16354
+#, c-format
+msgid " [abi=EABI64]"
+msgstr ""
+
+#: elfxx-mips.c:16356
+#, c-format
+msgid " [abi unknown]"
+msgstr ""
+
+#: elfxx-mips.c:16358
+#, c-format
+msgid " [abi=N32]"
+msgstr ""
+
+#: elfxx-mips.c:16360
+#, c-format
+msgid " [abi=64]"
+msgstr ""
+
+#: elfxx-mips.c:16362
+#, c-format
+msgid " [no abi set]"
+msgstr ""
+
+#: elfxx-mips.c:16387
+#, c-format
+msgid " [unknown ISA]"
+msgstr ""
+
+#: elfxx-mips.c:16407
+#, c-format
+msgid " [not 32bitmode]"
+msgstr ""
+
+#: elfxx-riscv.c:1569
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr ""
+
+#: elfxx-riscv.c:1575
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:1681
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr ""
+
+#: elfxx-riscv.c:1705
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr ""
+
+#: elfxx-riscv.c:1741
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr ""
+
+#: elfxx-riscv.c:1765
+#, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:1789
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr ""
+
+#: elfxx-riscv.c:1828
+#, c-format
+msgid "rv%d does not support the `e' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1836
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1843
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1864
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr ""
+
+#: elfxx-riscv.c:1926
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr ""
+
+#: elfxx-riscv.c:1954
+#, c-format
+msgid "%s: ISA string must begin with rv32 or rv64"
+msgstr ""
+
+#: elfxx-riscv.c:2180
+#, c-format
+msgid "invalid ISA extension ends with <number>p in .option arch `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2203
+#, c-format
+msgid "unknown ISA extension `%s' in .option arch `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2214
+#, c-format
+msgid "cannot + or - base extension `%s' in .option arch `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2388 elfxx-riscv.c:2546
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr ""
+
+#: elfxx-riscv.c:2419
+msgid "m' or `zmmul"
+msgstr ""
+
+#: elfxx-riscv.c:2435
+msgid "f' and `c"
+msgstr ""
+
+#: elfxx-riscv.c:2443
+msgid "d' and `c"
+msgstr ""
+
+#: elfxx-riscv.c:2449
+msgid "f' or `zfinx"
+msgstr ""
+
+#: elfxx-riscv.c:2451
+msgid "d' or `zdinx"
+msgstr ""
+
+#: elfxx-riscv.c:2453
+msgid "q' or `zqinx"
+msgstr ""
+
+#: elfxx-riscv.c:2455
+msgid "zfh' or `zhinx"
+msgstr ""
+
+#: elfxx-riscv.c:2459
+msgid "zfhmin' or `zhinxmin"
+msgstr ""
+
+#: elfxx-riscv.c:2470
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr ""
+
+#: elfxx-riscv.c:2481
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr ""
+
+#: elfxx-riscv.c:2497
+msgid "zbb' or `zbkb"
+msgstr ""
+
+#: elfxx-riscv.c:2499
+msgid "zbc' or `zbkc"
+msgstr ""
+
+#: elfxx-riscv.c:2507
+msgid "zknd' or `zkne"
+msgstr ""
+
+#: elfxx-riscv.c:2513
+msgid "v' or `zve64x' or `zve32x"
+msgstr ""
+
+#: elfxx-riscv.c:2515
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr ""
+
+#: elfxx-riscv.c:2519
+msgid "h"
+msgstr "áƒ¡áƒ—"
+
+#: elfxx-sparc.c:3021 elfnn-aarch64.c:5540
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
+msgstr ""
+
+#: elfxx-tilegx.c:4126
+#, c-format
+msgid "%pB: cannot link together %s and %s objects"
+msgstr ""
+
+#: elfxx-x86.c:536 elfxx-x86.c:3385
+#, c-format
+msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr ""
+
+#: elfxx-x86.c:1043
+#, c-format
+msgid "%F%P: %pB: failed to allocate relative reloc record\n"
+msgstr ""
+
+#: elfxx-x86.c:1385
+#, c-format
+msgid "%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr ""
+
+#: elfxx-x86.c:1421
+#, c-format
+msgid "%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr ""
+
+#: elfxx-x86.c:1560
+#, c-format
+msgid "%F%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr ""
+
+#: elfxx-x86.c:1747
+#, c-format
+msgid "%F%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr ""
+
+#: elfxx-x86.c:1769
+#, c-format
+msgid "%F%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr ""
+
+#: elfxx-x86.c:2214
+#, c-format
+msgid "%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr ""
+
+#: elfxx-x86.c:2296
+msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
+msgstr ""
+
+#: elfxx-x86.c:3138
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr ""
+
+#: elfxx-x86.c:3144
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr ""
+
+#: elfxx-x86.c:3759
+#, c-format
+msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
+msgstr ""
+
+#: elfxx-x86.c:4106
+msgid "%P: %pB: warning: missing %s\n"
+msgstr ""
+
+#: elfxx-x86.c:4107
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr ""
+
+#: elfxx-x86.c:4170
+msgid "IBT and SHSTK properties"
+msgstr ""
+
+#: elfxx-x86.c:4172
+msgid "IBT property"
+msgstr ""
+
+#: elfxx-x86.c:4174
+msgid "SHSTK property"
+msgstr ""
+
+#: elfxx-x86.c:4179
+msgid "LAM_U48 property"
+msgstr ""
+
+#: elfxx-x86.c:4184
+msgid "LAM_U57 property"
+msgstr ""
+
+#: elfxx-x86.c:4351
+msgid "%F%P: failed to create VxWorks dynamic sections\n"
+msgstr ""
+
+#: elfxx-x86.c:4360
+msgid "%F%P: failed to create GOT sections\n"
+msgstr ""
+
+#: elfxx-x86.c:4378
+msgid "%F%P: failed to create ifunc sections\n"
+msgstr ""
+
+#: elfxx-x86.c:4415
+msgid "%F%P: failed to create GOT PLT section\n"
+msgstr ""
+
+#: elfxx-x86.c:4434
+msgid "%F%P: failed to create IBT-enabled PLT section\n"
+msgstr ""
+
+#: elfxx-x86.c:4454
+msgid "%F%P: failed to create PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4467
+msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4481
+msgid "%F%P: failed to create the second PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4501
+msgid "%F%P: failed to create PLT .sframe section\n"
+msgstr ""
+
+#: elfxx-x86.c:4516
+msgid "%F%P: failed to create second PLT .sframe section\n"
+msgstr ""
+
+#: elfxx-x86.c:4556
+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"
+msgstr ""
+
+#: ihex.c:338
+#, c-format
+msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
+msgstr ""
+
+#: ihex.c:393
+#, c-format
+msgid "%pB:%u: bad extended address record length in Intel Hex file"
+msgstr ""
+
+#: ihex.c:411
+#, c-format
+msgid "%pB:%u: bad extended start address length in Intel Hex file"
+msgstr ""
+
+#: ihex.c:429
+#, c-format
+msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
+msgstr ""
+
+#: ihex.c:447
+#, c-format
+msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
+msgstr ""
+
+#: ihex.c:465
+#, c-format
+msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
+msgstr ""
+
+#: ihex.c:581
+#, c-format
+msgid "%pB: internal error in ihex_read_section"
+msgstr ""
+
+#: ihex.c:614
+#, c-format
+msgid "%pB: bad section length in ihex_read_section"
+msgstr ""
+
+#: ihex.c:785
+#, c-format
+msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
+msgstr ""
+
+#: ihex.c:843
+#, c-format
+msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
+msgstr ""
+
+#: libbfd.c:940
+#, c-format
+msgid "%pB: unable to get decompressed section %pA"
+msgstr ""
+
+#: libbfd.c:1096
+#, c-format
+msgid "Deprecated %s called at %s line %d in %s\n"
+msgstr ""
+
+#: libbfd.c:1099
+#, c-format
+msgid "Deprecated %s called\n"
+msgstr ""
+
+#: linker.c:1710
+#, c-format
+msgid "%pB: indirect symbol `%s' to `%s' is a loop"
+msgstr ""
+
+#: linker.c:2580
+#, c-format
+msgid "attempt to do relocatable link with %s input and %s output"
+msgstr ""
+
+#: linker.c:2859
+#, c-format
+msgid "%pB: ignoring duplicate section `%pA'\n"
+msgstr ""
+
+#: linker.c:2869 linker.c:2879
+#, c-format
+msgid "%pB: duplicate section `%pA' has different size\n"
+msgstr ""
+
+#: linker.c:2888 linker.c:2894
+#, c-format
+msgid "%pB: could not read contents of section `%pA'\n"
+msgstr ""
+
+#: linker.c:2899
+#, c-format
+msgid "%pB: duplicate section `%pA' has different contents\n"
+msgstr ""
+
+#: linker.c:3417
+#, c-format
+msgid "%pB: compiled for a big endian system and target is little endian"
+msgstr ""
+
+#: linker.c:3420
+#, c-format
+msgid "%pB: compiled for a little endian system and target is big endian"
+msgstr ""
+
+#: mach-o-arm.c:169 mach-o-arm.c:301
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr ""
+
+#: mach-o-arm.c:185
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:200
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:215
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:230
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:262
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr ""
+
+#: mach-o-arm.c:332
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr ""
+
+#: mach-o.c:631
+#, c-format
+msgid "<unknown mask flags>"
+msgstr ""
+
+#: mach-o.c:686
+msgid " (<unknown>)"
+msgstr ""
+
+#: mach-o.c:698
+#, c-format
+msgid " MACH-O header:\n"
+msgstr ""
+
+#: mach-o.c:699
+#, c-format
+msgid "   magic:      %#lx\n"
+msgstr ""
+
+#: mach-o.c:700
+#, c-format
+msgid "   cputype:    %#lx (%s)\n"
+msgstr ""
+
+#: mach-o.c:702
+#, c-format
+msgid "   cpusubtype: %#lx%s\n"
+msgstr ""
+
+#: mach-o.c:704
+#, c-format
+msgid "   filetype:   %#lx\n"
+msgstr ""
+
+#: mach-o.c:705
+#, c-format
+msgid "   ncmds:      %#lx\n"
+msgstr ""
+
+#: mach-o.c:706
+#, c-format
+msgid "   sizeocmds:  %#lx\n"
+msgstr ""
+
+#: mach-o.c:707
+#, c-format
+msgid "   flags:      %#lx\n"
+msgstr ""
+
+#: mach-o.c:708
+#, c-format
+msgid "   version:    %x\n"
+msgstr ""
+
+#. Urg - what has happened ?
+#: mach-o.c:743
+#, c-format
+msgid "incompatible cputypes in mach-o files: %ld vs %ld"
+msgstr ""
+
+#: mach-o.c:912
+msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
+msgstr ""
+
+#: mach-o.c:1504
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr ""
+
+#: mach-o.c:2141
+msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
+msgstr ""
+
+#: mach-o.c:2589
+#, c-format
+msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
+msgstr ""
+
+#: mach-o.c:2681
+#, c-format
+msgid "unable to allocate data for load command %#x"
+msgstr ""
+
+#: mach-o.c:2786
+#, c-format
+msgid "unable to write unknown load command %#x"
+msgstr ""
+
+#: mach-o.c:2970
+#, c-format
+msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
+msgstr ""
+
+#: mach-o.c:3112
+#, c-format
+msgid "unable to layout unknown load command %#x"
+msgstr ""
+
+#: mach-o.c:3647
+#, c-format
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr ""
+
+#: mach-o.c:3690
+#, c-format
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr ""
+
+#: mach-o.c:3741
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
+msgstr ""
+
+#: mach-o.c:3760
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
+msgstr ""
+
+#: mach-o.c:3843
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d (max %lu): setting to undefined"
+msgstr ""
+
+#: mach-o.c:3862
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x%x: setting to undefined"
+msgstr ""
+
+#: mach-o.c:5061
+#, c-format
+msgid "%pB: unknown load command %#x"
+msgstr ""
+
+#: mach-o.c:5260
+#, c-format
+msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
+msgstr ""
+
+#: mach-o.c:5382
+#, c-format
+msgid "unknown header byte-order value %#x"
+msgstr ""
+
+#: merge.c:894
+#, c-format
+msgid "%pB: access beyond end of merged section (%<PRId64>)"
+msgstr ""
+
+#: mmo.c:535
+#, c-format
+msgid "%pB: no core to allocate a symbol %d bytes long"
+msgstr ""
+
+#: mmo.c:958
+#, c-format
+msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
+msgstr ""
+
+#: mmo.c:1253
+#, c-format
+msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
+msgstr ""
+
+#: mmo.c:1400
+#, c-format
+msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
+msgstr ""
+
+#: mmo.c:1416
+#, c-format
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr ""
+
+#: mmo.c:1645
+#, c-format
+msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
+msgstr ""
+
+#: mmo.c:1656
+#, c-format
+msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
+msgstr ""
+
+#: mmo.c:1700
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
+msgstr ""
+
+#: mmo.c:1751
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
+msgstr ""
+
+#: mmo.c:1800
+#, c-format
+msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
+msgstr ""
+
+#: mmo.c:1811
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
+msgstr ""
+
+#: mmo.c:1836
+#, 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:1865
+#, c-format
+msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
+msgstr ""
+
+#: mmo.c:1887
+#, c-format
+msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
+msgstr ""
+
+#: mmo.c:1901
+#, c-format
+msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
+msgstr ""
+
+#: mmo.c:2013
+#, c-format
+msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
+msgstr ""
+
+#: mmo.c:2050
+#, c-format
+msgid "%pB: invalid mmo file: lop_end not last item in file\n"
+msgstr ""
+
+#: mmo.c:2064
+#, 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:2777
+#, c-format
+msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
+msgstr ""
+
+#: mmo.c:3016
+#, c-format
+msgid "%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr ""
+
+#: mmo.c:3115
+#, 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:3161
+#, c-format
+msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
+msgstr ""
+
+#: mmo.c:3214
+#, c-format
+msgid "%pB: internal error, internal register section %pA had contents\n"
+msgstr ""
+
+#: mmo.c:3265
+#, c-format
+msgid "%pB: no initialized registers; section length 0\n"
+msgstr ""
+
+#: mmo.c:3272
+#, c-format
+msgid "%pB: too many initialized registers; section length %<PRId64>"
+msgstr ""
+
+#: mmo.c:3277
+#, c-format
+msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
+msgstr ""
+
+#: osf-core.c:127
+#, c-format
+msgid "unhandled OSF/1 core file section type %d"
+msgstr ""
+
+#: pdp11.c:1589
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr ""
+
+#: pef.c:531
+#, c-format
+msgid "bfd_pef_scan: unknown architecture 0x%lx"
+msgstr ""
+
+#: pei-x86_64.c:178 pei-x86_64.c:232 pei-x86_64.c:242 pei-x86_64.c:267
+#: pei-x86_64.c:279 pei-x86_64.c:293 pei-x86_64.c:311 pei-x86_64.c:323
+#: pei-x86_64.c:335
+#, c-format
+msgid "warning: corrupt unwind data\n"
+msgstr ""
+
+#. PR 17512: file: 2245-7442-0.004.
+#: pei-x86_64.c:356
+#, c-format
+msgid "Unknown: %x"
+msgstr ""
+
+#: pei-x86_64.c:407 pei-x86_64.c:417 pei-x86_64.c:426
+#, c-format
+msgid "warning: xdata section corrupt\n"
+msgstr ""
+
+#: pei-x86_64.c:481
+#, c-format
+msgid "Too many unwind codes (%ld)\n"
+msgstr ""
+
+#: pei-x86_64.c:566
+#, c-format
+msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
+msgstr ""
+
+#: pei-x86_64.c:573
+#, c-format
+msgid "Warning: %s section size is zero\n"
+msgstr ""
+
+#: pei-x86_64.c:588
+#, c-format
+msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
+msgstr ""
+
+#: pei-x86_64.c:597
+#, c-format
+msgid ""
+"\n"
+"The Function Table (interpreted %s section contents)\n"
+msgstr ""
+
+#: pei-x86_64.c:600
+#, c-format
+msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
+msgstr ""
+
+#: pei-x86_64.c:724
+#, c-format
+msgid ""
+"\n"
+"Dump of %s\n"
+msgstr ""
+
+#. XXX code yet to be written.
+#: peicode.h:819
+#, c-format
+msgid "%pB: unhandled import type; %x"
+msgstr ""
+
+#: peicode.h:825
+#, c-format
+msgid "%pB: unrecognized import type; %x"
+msgstr ""
+
+#: peicode.h:840
+#, c-format
+msgid "%pB: unrecognized import name type; %x"
+msgstr ""
+
+#: peicode.h:1260
+#, c-format
+msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
+msgstr ""
+
+#: peicode.h:1273
+#, c-format
+msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
+msgstr ""
+
+#: peicode.h:1291
+#, c-format
+msgid "%pB: size field is zero in Import Library Format header"
+msgstr ""
+
+#: peicode.h:1317
+#, c-format
+msgid "%pB: string not null terminated in ILF object file"
+msgstr ""
+
+#: peicode.h:1373
+#, c-format
+msgid "%pB: error: debug data ends beyond end of debug directory"
+msgstr ""
+
+#: peicode.h:1530
+#, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr ""
+
+#: peicode.h:1540
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr ""
+
+#: peicode.h:1548
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr ""
+
+#: plugin.c:247
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr ""
+
+#: ppcboot.c:393
+#, c-format
+msgid ""
+"\n"
+"ppcboot header:\n"
+msgstr ""
+
+#: ppcboot.c:394
+#, c-format
+msgid "Entry offset        = 0x%.8lx (%ld)\n"
+msgstr ""
+
+#: ppcboot.c:396
+#, c-format
+msgid "Length              = 0x%.8lx (%ld)\n"
+msgstr ""
+
+#: ppcboot.c:400
+#, c-format
+msgid "Flag field          = 0x%.2x\n"
+msgstr ""
+
+#: ppcboot.c:406
+#, c-format
+msgid "Partition name      = \"%s\"\n"
+msgstr ""
+
+#: ppcboot.c:426
+#, c-format
+msgid ""
+"\n"
+"Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr ""
+
+#: ppcboot.c:433
+#, c-format
+msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr ""
+
+#: ppcboot.c:440
+#, c-format
+msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
+msgstr ""
+
+#: ppcboot.c:444
+#, c-format
+msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
+msgstr ""
+
+#: reloc.c:8471
+msgid "INPUT_SECTION_FLAGS are not supported"
+msgstr ""
+
+#: reloc.c:8738
+#, c-format
+msgid "%pB: unrecognized relocation type %#x in section `%pA'"
+msgstr ""
+
+#. PR 21803: Suggest the most likely cause of this error.
+#: reloc.c:8742
+#, c-format
+msgid "is this version of the linker - %s - out of date ?"
+msgstr ""
+
+#: rs6000-core.c:470
+#, c-format
+msgid "%pB: warning core file truncated"
+msgstr ""
+
+#: som.c:3002
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr ""
+
+#: som.c:3015
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr ""
+
+#. User has specified a subspace without its containing space.
+#: som.c:5488
+#, c-format
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr ""
+
+#: som.c:5534
+#, c-format
+msgid ""
+"\n"
+"Exec Auxiliary Header\n"
+msgstr ""
+
+#: som.c:5843
+msgid "som_sizeof_headers unimplemented"
+msgstr ""
+
+#: srec.c:260
+#, c-format
+msgid "%pB:%d: unexpected character `%s' in S-record file"
+msgstr ""
+
+#: srec.c:488
+#, c-format
+msgid "%pB:%d: byte count %d too small"
+msgstr ""
+
+#: srec.c:580 srec.c:614
+#, c-format
+msgid "%pB:%d: bad checksum in S-record file"
+msgstr ""
+
+#: stabs.c:279
+#, c-format
+msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
+msgstr ""
+
+#: syms.c:1098
+msgid "unsupported .stab relocation"
+msgstr ""
+
+#: vms-alpha.c:479
+msgid "corrupt EIHD record - size is too small"
+msgstr ""
+
+#: vms-alpha.c:665
+#, c-format
+msgid "unable to read EIHS record at offset %#x"
+msgstr ""
+
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr ""
+
+#: vms-alpha.c:1190
+#, c-format
+msgid "corrupt EGSD record: its size (%#x) is too small"
+msgstr ""
+
+#: vms-alpha.c:1214
+#, c-format
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr ""
+
+#: vms-alpha.c:1224
+#, c-format
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr ""
+
+#: vms-alpha.c:1366
+#, c-format
+msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
+msgstr ""
+
+#: vms-alpha.c:1441
+#, c-format
+msgid "unknown EGSD subtype %d"
+msgstr ""
+
+#: vms-alpha.c:1474
+#, c-format
+msgid "stack overflow (%d) in _bfd_vms_push"
+msgstr ""
+
+#: vms-alpha.c:1488
+msgid "stack underflow in _bfd_vms_pop"
+msgstr ""
+
+#: vms-alpha.c:1562
+#, c-format
+msgid "dst_define_location %u too large"
+msgstr ""
+
+#. These names have not yet been added to this switch statement.
+#: vms-alpha.c:1765
+#, c-format
+msgid "unknown ETIR command %d"
+msgstr ""
+
+#: vms-alpha.c:1796
+msgid "corrupt vms value"
+msgstr ""
+
+#: vms-alpha.c:1927
+msgid "corrupt ETIR record encountered"
+msgstr ""
+
+#: vms-alpha.c:1989
+#, c-format
+msgid "bad section index in %s"
+msgstr ""
+
+#: vms-alpha.c:2003
+#, c-format
+msgid "unsupported STA cmd %s"
+msgstr ""
+
+#. Insert field.
+#. Unsigned shift.
+#. Rotate.
+#. Redefine symbol to current location.
+#. Define a literal.
+#: 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:2217
+#, c-format
+msgid "%s: not implemented"
+msgstr ""
+
+#: 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:2581
+#, c-format
+msgid "reserved cmd %d"
+msgstr ""
+
+#: vms-alpha.c:2665
+msgid "corrupt EEOM record - size is too small"
+msgstr ""
+
+#: vms-alpha.c:2674
+msgid "object module not error-free !"
+msgstr ""
+
+#: vms-alpha.c:4004
+#, c-format
+msgid "SEC_RELOC with no relocs in section %pA"
+msgstr ""
+
+#: vms-alpha.c:4056 vms-alpha.c:4271
+#, c-format
+msgid "size error in section %pA"
+msgstr ""
+
+#: vms-alpha.c:4216
+msgid "spurious ALPHA_R_BSR reloc"
+msgstr ""
+
+#: vms-alpha.c:4257
+#, c-format
+msgid "unhandled relocation %s"
+msgstr ""
+
+#: vms-alpha.c:4616
+#, c-format
+msgid "unknown source command %d"
+msgstr ""
+
+#: vms-alpha.c:4768 vms-alpha.c:4773 vms-alpha.c:4778 vms-alpha.c:4783
+#: vms-alpha.c:4788 vms-alpha.c:4811 vms-alpha.c:4816 vms-alpha.c:4821
+#: vms-alpha.c:4826
+#, c-format
+msgid "%s not implemented"
+msgstr ""
+
+#: vms-alpha.c:4862
+#, c-format
+msgid "unknown line command %d"
+msgstr ""
+
+#: vms-alpha.c:5323 vms-alpha.c:5341 vms-alpha.c:5356 vms-alpha.c:5372
+#: vms-alpha.c:5385 vms-alpha.c:5397 vms-alpha.c:5410
+#, c-format
+msgid "unknown reloc %s + %s"
+msgstr ""
+
+#: vms-alpha.c:5465
+#, c-format
+msgid "unknown reloc %s"
+msgstr ""
+
+#: vms-alpha.c:5479
+msgid "invalid section index in ETIR"
+msgstr ""
+
+#: vms-alpha.c:5488
+msgid "relocation for non-REL psect"
+msgstr ""
+
+#: vms-alpha.c:5537
+#, c-format
+msgid "unknown symbol in command %s"
+msgstr ""
+
+#: vms-alpha.c:5956
+#, c-format
+msgid "reloc (%d) is *UNKNOWN*"
+msgstr ""
+
+#: vms-alpha.c:6072
+#, c-format
+msgid "  EMH %u (len=%u): "
+msgstr ""
+
+#: vms-alpha.c:6077
+#, c-format
+msgid "   Error: The length is less than the length of an EMH record\n"
+msgstr ""
+
+#: vms-alpha.c:6094
+#, c-format
+msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
+msgstr ""
+
+#: vms-alpha.c:6097
+#, c-format
+msgid "Module header\n"
+msgstr ""
+
+#: vms-alpha.c:6098
+#, c-format
+msgid "   structure level: %u\n"
+msgstr ""
+
+#: vms-alpha.c:6099
+#, c-format
+msgid "   max record size: %u\n"
+msgstr ""
+
+#: vms-alpha.c:6105
+#, c-format
+msgid "   Error: The module name is missing\n"
+msgstr ""
+
+#: vms-alpha.c:6111
+#, c-format
+msgid "   Error: The module name is too long\n"
+msgstr ""
+
+#: vms-alpha.c:6114
+#, c-format
+msgid "   module name    : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6118
+#, c-format
+msgid "   Error: The module version is missing\n"
+msgstr ""
+
+#: vms-alpha.c:6124
+#, c-format
+msgid "   Error: The module version is too long\n"
+msgstr ""
+
+#: vms-alpha.c:6127
+#, c-format
+msgid "   module version : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6130
+#, c-format
+msgid "   Error: The compile date is truncated\n"
+msgstr ""
+
+#: vms-alpha.c:6132
+#, c-format
+msgid "   compile date   : %.17s\n"
+msgstr ""
+
+#: vms-alpha.c:6137
+#, c-format
+msgid "Language Processor Name\n"
+msgstr ""
+
+#: vms-alpha.c:6138
+#, c-format
+msgid "   language name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6142
+#, c-format
+msgid "Source Files Header\n"
+msgstr ""
+
+#: vms-alpha.c:6143
+#, c-format
+msgid "   file: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6147
+#, c-format
+msgid "Title Text Header\n"
+msgstr ""
+
+#: vms-alpha.c:6148
+#, c-format
+msgid "   title: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6152
+#, c-format
+msgid "Copyright Header\n"
+msgstr ""
+
+#: vms-alpha.c:6153
+#, c-format
+msgid "   copyright: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6157
+#, c-format
+msgid "unhandled emh subtype %u\n"
+msgstr ""
+
+#: vms-alpha.c:6167
+#, c-format
+msgid "  EEOM (len=%u):\n"
+msgstr ""
+
+#: vms-alpha.c:6172
+#, c-format
+msgid "   Error: The length is less than the length of an EEOM record\n"
+msgstr ""
+
+#: vms-alpha.c:6176
+#, c-format
+msgid "   number of cond linkage pairs: %u\n"
+msgstr ""
+
+#: vms-alpha.c:6178
+#, c-format
+msgid "   completion code: %u\n"
+msgstr ""
+
+#: vms-alpha.c:6182
+#, c-format
+msgid "   transfer addr flags: 0x%02x\n"
+msgstr ""
+
+#: vms-alpha.c:6183
+#, c-format
+msgid "   transfer addr psect: %u\n"
+msgstr ""
+
+#: vms-alpha.c:6185
+#, c-format
+msgid "   transfer address   : 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6194
+msgid " WEAK"
+msgstr ""
+
+#: vms-alpha.c:6196
+msgid " DEF"
+msgstr ""
+
+#: vms-alpha.c:6198
+msgid " UNI"
+msgstr ""
+
+#: vms-alpha.c:6200 vms-alpha.c:6221
+msgid " REL"
+msgstr ""
+
+#: vms-alpha.c:6202
+msgid " COMM"
+msgstr ""
+
+#: vms-alpha.c:6204
+msgid " VECEP"
+msgstr ""
+
+#: vms-alpha.c:6206
+msgid " NORM"
+msgstr ""
+
+#: vms-alpha.c:6208
+msgid " QVAL"
+msgstr ""
+
+#: vms-alpha.c:6215
+msgid " PIC"
+msgstr ""
+
+#: vms-alpha.c:6217
+msgid " LIB"
+msgstr ""
+
+#: vms-alpha.c:6219
+msgid " OVR"
+msgstr ""
+
+#: vms-alpha.c:6223
+msgid " GBL"
+msgstr ""
+
+#: vms-alpha.c:6225
+msgid " SHR"
+msgstr ""
+
+#: vms-alpha.c:6227
+msgid " EXE"
+msgstr ""
+
+#: vms-alpha.c:6229
+msgid " RD"
+msgstr ""
+
+#: vms-alpha.c:6231
+msgid " WRT"
+msgstr ""
+
+#: vms-alpha.c:6233
+msgid " VEC"
+msgstr ""
+
+#: vms-alpha.c:6235
+msgid " NOMOD"
+msgstr ""
+
+#: vms-alpha.c:6237
+msgid " COM"
+msgstr ""
+
+#: vms-alpha.c:6239
+msgid " 64B"
+msgstr ""
+
+#: vms-alpha.c:6248
+#, c-format
+msgid "  EGSD (len=%u):\n"
+msgstr ""
+
+#: vms-alpha.c:6263
+#, c-format
+msgid "  EGSD entry %2u (type: %u, len: %u): "
+msgstr ""
+
+#: vms-alpha.c:6269 vms-alpha.c:6564
+#, c-format
+msgid "   Erroneous length\n"
+msgstr ""
+
+#: vms-alpha.c:6282
+#, c-format
+msgid "PSC - Program section definition\n"
+msgstr ""
+
+#: vms-alpha.c:6283 vms-alpha.c:6303
+#, c-format
+msgid "   alignment  : 2**%u\n"
+msgstr ""
+
+#: vms-alpha.c:6284 vms-alpha.c:6304
+#, c-format
+msgid "   flags      : 0x%04x"
+msgstr ""
+
+#: vms-alpha.c:6288
+#, c-format
+msgid "   alloc (len): %u (0x%08x)\n"
+msgstr ""
+
+#: vms-alpha.c:6290 vms-alpha.c:6356 vms-alpha.c:6424
+#, c-format
+msgid "   name       : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6302
+#, c-format
+msgid "SPSC - Shared Image Program section def\n"
+msgstr ""
+
+#: vms-alpha.c:6308
+#, c-format
+msgid "   alloc (len)   : %u (0x%08x)\n"
+msgstr ""
+
+#: vms-alpha.c:6309
+#, c-format
+msgid "   image offset  : 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6311
+#, c-format
+msgid "   symvec offset : 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6314
+#, c-format
+msgid "   name          : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6330
+#, c-format
+msgid "SYM - Global symbol definition\n"
+msgstr ""
+
+#: vms-alpha.c:6331 vms-alpha.c:6412 vms-alpha.c:6436 vms-alpha.c:6459
+#, c-format
+msgid "   flags: 0x%04x"
+msgstr ""
+
+#: vms-alpha.c:6334
+#, c-format
+msgid "   psect offset: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6338
+#, c-format
+msgid "   code address: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6340
+#, c-format
+msgid "   psect index for entry point : %u\n"
+msgstr ""
+
+#: vms-alpha.c:6343 vms-alpha.c:6443 vms-alpha.c:6466
+#, c-format
+msgid "   psect index : %u\n"
+msgstr ""
+
+#: vms-alpha.c:6346 vms-alpha.c:6446 vms-alpha.c:6469
+#, c-format
+msgid "   name        : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6354
+#, c-format
+msgid "SYM - Global symbol reference\n"
+msgstr ""
+
+#: vms-alpha.c:6369
+#, c-format
+msgid "IDC - Ident Consistency check\n"
+msgstr ""
+
+#: vms-alpha.c:6370
+#, c-format
+msgid "   flags         : 0x%08x"
+msgstr ""
+
+#: vms-alpha.c:6374
+#, c-format
+msgid "   id match      : %x\n"
+msgstr ""
+
+#: vms-alpha.c:6376
+#, c-format
+msgid "   error severity: %x\n"
+msgstr ""
+
+#: vms-alpha.c:6380
+#, c-format
+msgid "   entity name   : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6386
+#, c-format
+msgid "   object name   : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6395
+#, c-format
+msgid "   binary ident  : 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6399
+#, c-format
+msgid "   ascii ident   : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6411
+#, c-format
+msgid "SYMG - Universal symbol definition\n"
+msgstr ""
+
+#: vms-alpha.c:6415
+#, c-format
+msgid "   symbol vector offset: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6417
+#, c-format
+msgid "   entry point: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6419
+#, c-format
+msgid "   proc descr : 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6421
+#, c-format
+msgid "   psect index: %u\n"
+msgstr ""
+
+#: vms-alpha.c:6435
+#, c-format
+msgid "SYMV - Vectored symbol definition\n"
+msgstr ""
+
+#: vms-alpha.c:6439
+#, c-format
+msgid "   vector      : 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6441 vms-alpha.c:6464
+#, c-format
+msgid "   psect offset: %u\n"
+msgstr ""
+
+#: vms-alpha.c:6458
+#, c-format
+msgid "SYMM - Global symbol definition with version\n"
+msgstr ""
+
+#: vms-alpha.c:6462
+#, c-format
+msgid "   version mask: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6475
+#, c-format
+msgid "unhandled egsd entry type %u\n"
+msgstr ""
+
+#: vms-alpha.c:6514
+#, c-format
+msgid "    linkage index: %u, replacement insn: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6518
+#, c-format
+msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6523
+#, c-format
+msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6529
+#, c-format
+msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6534
+#, c-format
+msgid "    global name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6546
+#, c-format
+msgid "  %s (len=%u):\n"
+msgstr ""
+
+#: vms-alpha.c:6569
+#, c-format
+msgid "   (type: %3u, size: %3u): "
+msgstr ""
+
+#: vms-alpha.c:6575
+#, c-format
+msgid "STA_GBL (stack global) %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6579
+#, c-format
+msgid "STA_LW (stack longword)"
+msgstr ""
+
+#: vms-alpha.c:6585
+#, c-format
+msgid "STA_QW (stack quadword)"
+msgstr ""
+
+#: vms-alpha.c:6592
+#, c-format
+msgid "STA_PQ (stack psect base + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6595
+#, c-format
+msgid "    psect: %u, offset: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6601
+#, c-format
+msgid "STA_LI (stack literal)\n"
+msgstr ""
+
+#: vms-alpha.c:6604
+#, c-format
+msgid "STA_MOD (stack module)\n"
+msgstr ""
+
+#: vms-alpha.c:6607
+#, c-format
+msgid "STA_CKARG (compare procedure argument)\n"
+msgstr ""
+
+#: vms-alpha.c:6611
+#, c-format
+msgid "STO_B (store byte)\n"
+msgstr ""
+
+#: vms-alpha.c:6614
+#, c-format
+msgid "STO_W (store word)\n"
+msgstr ""
+
+#: vms-alpha.c:6617
+#, c-format
+msgid "STO_LW (store longword)\n"
+msgstr ""
+
+#: vms-alpha.c:6620
+#, c-format
+msgid "STO_QW (store quadword)\n"
+msgstr ""
+
+#: vms-alpha.c:6627
+#, c-format
+msgid "STO_IMMR (store immediate repeat) %u bytes\n"
+msgstr ""
+
+#: vms-alpha.c:6636
+#, c-format
+msgid "STO_GBL (store global) %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6641
+#, c-format
+msgid "STO_CA (store code address) %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6645
+#, c-format
+msgid "STO_RB (store relative branch)\n"
+msgstr ""
+
+#: vms-alpha.c:6648
+#, c-format
+msgid "STO_AB (store absolute branch)\n"
+msgstr ""
+
+#: vms-alpha.c:6651
+#, c-format
+msgid "STO_OFF (store offset to psect)\n"
+msgstr ""
+
+#: vms-alpha.c:6658
+#, c-format
+msgid "STO_IMM (store immediate) %u bytes\n"
+msgstr ""
+
+#: vms-alpha.c:6667
+#, c-format
+msgid "STO_GBL_LW (store global longword) %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6671
+#, c-format
+msgid "STO_OFF (store LP with procedure signature)\n"
+msgstr ""
+
+#: vms-alpha.c:6674
+#, c-format
+msgid "STO_BR_GBL (store branch global) *todo*\n"
+msgstr ""
+
+#: vms-alpha.c:6677
+#, c-format
+msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
+msgstr ""
+
+#: vms-alpha.c:6681
+#, c-format
+msgid "OPR_NOP (no-operation)\n"
+msgstr ""
+
+#: vms-alpha.c:6684
+#, c-format
+msgid "OPR_ADD (add)\n"
+msgstr ""
+
+#: vms-alpha.c:6687
+#, c-format
+msgid "OPR_SUB (subtract)\n"
+msgstr ""
+
+#: vms-alpha.c:6690
+#, c-format
+msgid "OPR_MUL (multiply)\n"
+msgstr ""
+
+#: vms-alpha.c:6693
+#, c-format
+msgid "OPR_DIV (divide)\n"
+msgstr ""
+
+#: vms-alpha.c:6696
+#, c-format
+msgid "OPR_AND (logical and)\n"
+msgstr ""
+
+#: vms-alpha.c:6699
+#, c-format
+msgid "OPR_IOR (logical inclusive or)\n"
+msgstr ""
+
+#: vms-alpha.c:6702
+#, c-format
+msgid "OPR_EOR (logical exclusive or)\n"
+msgstr ""
+
+#: vms-alpha.c:6705
+#, c-format
+msgid "OPR_NEG (negate)\n"
+msgstr ""
+
+#: vms-alpha.c:6708
+#, c-format
+msgid "OPR_COM (complement)\n"
+msgstr ""
+
+#: vms-alpha.c:6711
+#, c-format
+msgid "OPR_INSV (insert field)\n"
+msgstr ""
+
+#: vms-alpha.c:6714
+#, c-format
+msgid "OPR_ASH (arithmetic shift)\n"
+msgstr ""
+
+#: vms-alpha.c:6717
+#, c-format
+msgid "OPR_USH (unsigned shift)\n"
+msgstr ""
+
+#: vms-alpha.c:6720
+#, c-format
+msgid "OPR_ROT (rotate)\n"
+msgstr ""
+
+#: vms-alpha.c:6723
+#, c-format
+msgid "OPR_SEL (select)\n"
+msgstr ""
+
+#: vms-alpha.c:6726
+#, c-format
+msgid "OPR_REDEF (redefine symbol to curr location)\n"
+msgstr ""
+
+#: vms-alpha.c:6729
+#, c-format
+msgid "OPR_REDEF (define a literal)\n"
+msgstr ""
+
+#: vms-alpha.c:6733
+#, c-format
+msgid "STC_LP (store cond linkage pair)\n"
+msgstr ""
+
+#: vms-alpha.c:6737
+#, c-format
+msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
+msgstr ""
+
+#: vms-alpha.c:6741
+#, c-format
+msgid "   linkage index: %u, procedure: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6748
+#, c-format
+msgid "   signature: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6754
+#, c-format
+msgid "STC_GBL (store cond global)\n"
+msgstr ""
+
+#: vms-alpha.c:6757
+#, c-format
+msgid "   linkage index: %u, global: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6762
+#, c-format
+msgid "STC_GCA (store cond code address)\n"
+msgstr ""
+
+#: vms-alpha.c:6765
+#, c-format
+msgid "   linkage index: %u, procedure name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6770
+#, c-format
+msgid "STC_PS (store cond psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6774
+#, c-format
+msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6781
+#, c-format
+msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6785
+#, c-format
+msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6789
+#, c-format
+msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6793
+#, c-format
+msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6797
+#, c-format
+msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6801
+#, c-format
+msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6805
+#, c-format
+msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6809
+#, c-format
+msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6814
+#, c-format
+msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6818
+#, c-format
+msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6822
+#, c-format
+msgid "CTL_SETRB (set relocation base)\n"
+msgstr ""
+
+#: vms-alpha.c:6828
+#, c-format
+msgid "CTL_AUGRB (augment relocation base) %u\n"
+msgstr ""
+
+#: vms-alpha.c:6833
+#, c-format
+msgid "CTL_DFLOC (define location)\n"
+msgstr ""
+
+#: vms-alpha.c:6836
+#, c-format
+msgid "CTL_STLOC (set location)\n"
+msgstr ""
+
+#: vms-alpha.c:6839
+#, c-format
+msgid "CTL_STKDL (stack defined location)\n"
+msgstr ""
+
+#: vms-alpha.c:6842 vms-alpha.c:7285 vms-alpha.c:7446
+#, c-format
+msgid "*unhandled*\n"
+msgstr ""
+
+#: vms-alpha.c:6872 vms-alpha.c:6911
+#, c-format
+msgid "cannot read GST record length\n"
+msgstr ""
+
+#. Ill-formed.
+#: vms-alpha.c:6893
+#, c-format
+msgid "cannot find EMH in first GST record\n"
+msgstr ""
+
+#: vms-alpha.c:6919
+#, c-format
+msgid "cannot read GST record header\n"
+msgstr ""
+
+#: vms-alpha.c:6932
+#, c-format
+msgid " corrupted GST\n"
+msgstr ""
+
+#: vms-alpha.c:6940
+#, c-format
+msgid "cannot read GST record\n"
+msgstr ""
+
+#: vms-alpha.c:6969
+#, c-format
+msgid " unhandled EOBJ record type %u\n"
+msgstr ""
+
+#: vms-alpha.c:6994
+#, c-format
+msgid "  bitcount: %u, base addr: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7008
+#, c-format
+msgid "   bitmap: 0x%08x (count: %u):\n"
+msgstr ""
+
+#: vms-alpha.c:7015
+#, c-format
+msgid " %08x"
+msgstr ""
+
+#: vms-alpha.c:7042
+#, c-format
+msgid "  image %u (%u entries)\n"
+msgstr ""
+
+#: vms-alpha.c:7048
+#, c-format
+msgid "   offset: 0x%08x, val: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7071
+#, c-format
+msgid "  image %u (%u entries), offsets:\n"
+msgstr ""
+
+#: vms-alpha.c:7078
+#, c-format
+msgid " 0x%08x"
+msgstr ""
+
+#. 64 bits.
+#: vms-alpha.c:7204
+#, c-format
+msgid "64 bits *unhandled*\n"
+msgstr ""
+
+#: vms-alpha.c:7209
+#, c-format
+msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7220
+#, c-format
+msgid "non-contiguous array of %s\n"
+msgstr ""
+
+#: vms-alpha.c:7227
+#, c-format
+msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7232
+#, c-format
+msgid "arsize: %u, a0: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7236
+#, c-format
+msgid "Strides:\n"
+msgstr ""
+
+#: vms-alpha.c:7250
+#, c-format
+msgid "Bounds:\n"
+msgstr ""
+
+#: vms-alpha.c:7257
+#, c-format
+msgid "[%u]: Lower: %u, upper: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7271
+#, c-format
+msgid "unaligned bit-string of %s\n"
+msgstr ""
+
+#: vms-alpha.c:7278
+#, c-format
+msgid "base: %u, pos: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7304
+#, c-format
+msgid "vflags: 0x%02x, value: 0x%08x "
+msgstr ""
+
+#: vms-alpha.c:7311
+#, c-format
+msgid "(no value)\n"
+msgstr ""
+
+#: vms-alpha.c:7314
+#, c-format
+msgid "(not active)\n"
+msgstr ""
+
+#: vms-alpha.c:7317
+#, c-format
+msgid "(not allocated)\n"
+msgstr ""
+
+#: vms-alpha.c:7320
+#, c-format
+msgid "(descriptor)\n"
+msgstr ""
+
+#: vms-alpha.c:7325
+#, c-format
+msgid "(trailing value)\n"
+msgstr ""
+
+#: vms-alpha.c:7328
+#, c-format
+msgid "(value spec follows)\n"
+msgstr ""
+
+#: vms-alpha.c:7331
+#, c-format
+msgid "(at bit offset %u)\n"
+msgstr ""
+
+#: vms-alpha.c:7335
+#, c-format
+msgid "(reg: %u, disp: %u, indir: %u, kind: "
+msgstr ""
+
+#: vms-alpha.c:7342
+msgid "literal"
+msgstr ""
+
+#: vms-alpha.c:7345
+msgid "address"
+msgstr ""
+
+#: vms-alpha.c:7348
+msgid "desc"
+msgstr ""
+
+#: vms-alpha.c:7351
+msgid "reg"
+msgstr ""
+
+#: vms-alpha.c:7372
+#, c-format
+msgid "len: %2u, kind: %2u "
+msgstr ""
+
+#: vms-alpha.c:7380
+#, c-format
+msgid "atomic, type=0x%02x %s\n"
+msgstr ""
+
+#: vms-alpha.c:7385
+#, c-format
+msgid "indirect, defined at 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7389
+#, c-format
+msgid "typed pointer\n"
+msgstr ""
+
+#: vms-alpha.c:7393
+#, c-format
+msgid "pointer\n"
+msgstr ""
+
+#: vms-alpha.c:7404
+#, c-format
+msgid "array, dim: %u, bitmap: "
+msgstr ""
+
+#: vms-alpha.c:7419
+#, c-format
+msgid "array descriptor:\n"
+msgstr ""
+
+#: vms-alpha.c:7430
+#, c-format
+msgid "type spec for element:\n"
+msgstr ""
+
+#: vms-alpha.c:7432
+#, c-format
+msgid "type spec for subscript %u:\n"
+msgstr ""
+
+#: vms-alpha.c:7457
+#, c-format
+msgid "Debug symbol table:\n"
+msgstr ""
+
+#: vms-alpha.c:7468
+#, c-format
+msgid "cannot read DST header\n"
+msgstr ""
+
+#: vms-alpha.c:7474
+#, c-format
+msgid " type: %3u, len: %3u (at 0x%08x): "
+msgstr ""
+
+#: vms-alpha.c:7491
+#, c-format
+msgid "cannot read DST symbol\n"
+msgstr ""
+
+#: vms-alpha.c:7535
+#, c-format
+msgid "standard data: %s\n"
+msgstr ""
+
+#: vms-alpha.c:7539 vms-alpha.c:7663
+#, c-format
+msgid "    name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7547
+#, c-format
+msgid "modbeg\n"
+msgstr ""
+
+#: vms-alpha.c:7551
+#, c-format
+msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7561 vms-alpha.c:7927
+#, c-format
+msgid "   module name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7568
+#, c-format
+msgid "   compiler   : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7575
+#, c-format
+msgid "modend\n"
+msgstr ""
+
+#: vms-alpha.c:7582
+msgid "rtnbeg\n"
+msgstr ""
+
+#: vms-alpha.c:7586
+#, c-format
+msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7595
+#, c-format
+msgid "    routine name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7606
+#, c-format
+msgid "rtnend: size 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7616
+#, c-format
+msgid "prolog: bkpt address 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7626
+#, c-format
+msgid "epilog: flags: %u, count: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7641
+#, c-format
+msgid "blkbeg: address: 0x%08x, name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7653
+#, c-format
+msgid "blkend: size: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7659
+#, c-format
+msgid "typspec (len: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:7675
+#, c-format
+msgid "septyp, name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7691
+#, c-format
+msgid "recbeg: name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7695
+#, c-format
+msgid "    len: %u bits\n"
+msgstr ""
+
+#: vms-alpha.c:7701
+#, c-format
+msgid "recend\n"
+msgstr ""
+
+#: vms-alpha.c:7706
+#, c-format
+msgid "enumbeg, len: %u, name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7712
+#, c-format
+msgid "enumelt, name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7718
+#, c-format
+msgid "enumend\n"
+msgstr ""
+
+#: vms-alpha.c:7725
+#, c-format
+msgid "label, name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7728
+#, c-format
+msgid "    address: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7740
+#, c-format
+msgid "discontiguous range (nbr: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:7747
+#, c-format
+msgid "    address: 0x%08x, size: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7758
+#, c-format
+msgid "line num  (len: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:7777
+#, c-format
+msgid "delta_pc_w %u\n"
+msgstr ""
+
+#: vms-alpha.c:7786
+#, c-format
+msgid "incr_linum(b): +%u\n"
+msgstr ""
+
+#: vms-alpha.c:7794
+#, c-format
+msgid "incr_linum_w: +%u\n"
+msgstr ""
+
+#: vms-alpha.c:7802
+#, c-format
+msgid "incr_linum_l: +%u\n"
+msgstr ""
+
+#: vms-alpha.c:7810
+#, c-format
+msgid "set_line_num(w) %u\n"
+msgstr ""
+
+#: vms-alpha.c:7817
+#, c-format
+msgid "set_line_num_b %u\n"
+msgstr ""
+
+#: vms-alpha.c:7824
+#, c-format
+msgid "set_line_num_l %u\n"
+msgstr ""
+
+#: vms-alpha.c:7831
+#, c-format
+msgid "set_abs_pc: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7837
+#, c-format
+msgid "delta_pc_l: +0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7844
+#, c-format
+msgid "term(b): 0x%02x"
+msgstr ""
+
+#: vms-alpha.c:7846
+#, c-format
+msgid "        pc: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7853
+#, c-format
+msgid "term_w: 0x%04x"
+msgstr ""
+
+#: vms-alpha.c:7855
+#, c-format
+msgid "    pc: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7861
+#, c-format
+msgid "delta pc +%-4d"
+msgstr ""
+
+#: vms-alpha.c:7865
+#, c-format
+msgid "    pc: 0x%08x line: %5u\n"
+msgstr ""
+
+#: vms-alpha.c:7870
+#, c-format
+msgid "    *unhandled* cmd %u\n"
+msgstr ""
+
+#: vms-alpha.c:7885
+#, c-format
+msgid "source (len: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:7904
+#, c-format
+msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7909
+#, c-format
+msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7921
+#, c-format
+msgid "   filename   : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:7937
+#, c-format
+msgid "   setfile %u\n"
+msgstr ""
+
+#: vms-alpha.c:7944 vms-alpha.c:7951
+#, c-format
+msgid "   setrec %u\n"
+msgstr ""
+
+#: vms-alpha.c:7958 vms-alpha.c:7965
+#, c-format
+msgid "   setlnum %u\n"
+msgstr ""
+
+#: vms-alpha.c:7972 vms-alpha.c:7979
+#, c-format
+msgid "   deflines %u\n"
+msgstr ""
+
+#: vms-alpha.c:7983
+#, c-format
+msgid "   formfeed\n"
+msgstr ""
+
+#: vms-alpha.c:7987
+#, c-format
+msgid "   *unhandled* cmd %u\n"
+msgstr ""
+
+#: vms-alpha.c:7999
+#, c-format
+msgid "*unhandled* dst type %u\n"
+msgstr ""
+
+#: vms-alpha.c:8031
+#, c-format
+msgid "cannot read EIHD\n"
+msgstr ""
+
+#: vms-alpha.c:8035
+#, c-format
+msgid "EIHD: (size: %u, nbr blocks: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:8039
+#, c-format
+msgid " majorid: %u, minorid: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8047
+msgid "executable"
+msgstr ""
+
+#: vms-alpha.c:8050
+msgid "linkable image"
+msgstr ""
+
+#: vms-alpha.c:8057
+#, c-format
+msgid " image type: %u (%s)"
+msgstr ""
+
+#: vms-alpha.c:8063
+msgid "native"
+msgstr ""
+
+#: vms-alpha.c:8066
+msgid "CLI"
+msgstr ""
+
+#: vms-alpha.c:8073
+#, c-format
+msgid ", subtype: %u (%s)\n"
+msgstr ""
+
+#: vms-alpha.c:8080
+#, c-format
+msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8084
+#, c-format
+msgid " fixup info rva: "
+msgstr ""
+
+#: vms-alpha.c:8086
+#, c-format
+msgid ", symbol vector rva: "
+msgstr ""
+
+#: vms-alpha.c:8089
+#, c-format
+msgid ""
+"\n"
+" version array off: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8094
+#, c-format
+msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8100
+#, c-format
+msgid " linker flags: %08x:"
+msgstr ""
+
+#: vms-alpha.c:8131
+#, c-format
+msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8137
+#, c-format
+msgid " BPAGE: %u"
+msgstr ""
+
+#: vms-alpha.c:8144
+#, c-format
+msgid ", ext fixup offset: %u, no_opt psect off: %u"
+msgstr ""
+
+#: vms-alpha.c:8147
+#, c-format
+msgid ", alias: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8155
+#, c-format
+msgid "system version array information:\n"
+msgstr ""
+
+#: vms-alpha.c:8159
+#, c-format
+msgid "cannot read EIHVN header\n"
+msgstr ""
+
+#: vms-alpha.c:8169
+#, c-format
+msgid "cannot read EIHVN version\n"
+msgstr ""
+
+#: vms-alpha.c:8172
+#, c-format
+msgid "   %02u "
+msgstr ""
+
+#: vms-alpha.c:8176
+msgid "BASE_IMAGE       "
+msgstr ""
+
+#: vms-alpha.c:8179
+msgid "MEMORY_MANAGEMENT"
+msgstr ""
+
+#: vms-alpha.c:8182
+msgid "IO               "
+msgstr ""
+
+#: vms-alpha.c:8185
+msgid "FILES_VOLUMES    "
+msgstr ""
+
+#: vms-alpha.c:8188
+msgid "PROCESS_SCHED    "
+msgstr ""
+
+#: vms-alpha.c:8191
+msgid "SYSGEN           "
+msgstr ""
+
+#: vms-alpha.c:8194
+msgid "CLUSTERS_LOCKMGR "
+msgstr ""
+
+#: vms-alpha.c:8197
+msgid "LOGICAL_NAMES    "
+msgstr ""
+
+#: vms-alpha.c:8200
+msgid "SECURITY         "
+msgstr ""
+
+#: vms-alpha.c:8203
+msgid "IMAGE_ACTIVATOR  "
+msgstr ""
+
+#: vms-alpha.c:8206
+msgid "NETWORKS         "
+msgstr ""
+
+#: vms-alpha.c:8209
+msgid "COUNTERS         "
+msgstr ""
+
+#: vms-alpha.c:8212
+msgid "STABLE           "
+msgstr ""
+
+#: vms-alpha.c:8215
+msgid "MISC             "
+msgstr ""
+
+#: vms-alpha.c:8218
+msgid "CPU              "
+msgstr ""
+
+#: vms-alpha.c:8221
+msgid "VOLATILE         "
+msgstr ""
+
+#: vms-alpha.c:8224
+msgid "SHELL            "
+msgstr ""
+
+#: vms-alpha.c:8227
+msgid "POSIX            "
+msgstr ""
+
+#: vms-alpha.c:8230
+msgid "MULTI_PROCESSING "
+msgstr ""
+
+#: vms-alpha.c:8233
+msgid "GALAXY           "
+msgstr ""
+
+#: vms-alpha.c:8236
+msgid "*unknown*        "
+msgstr ""
+
+#: vms-alpha.c:8252 vms-alpha.c:8526
+#, c-format
+msgid "cannot read EIHA\n"
+msgstr ""
+
+#: vms-alpha.c:8255
+#, c-format
+msgid "Image activation:  (size=%u)\n"
+msgstr ""
+
+#: vms-alpha.c:8258
+#, c-format
+msgid " First address : 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8262
+#, c-format
+msgid " Second address: 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8266
+#, c-format
+msgid " Third address : 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8270
+#, c-format
+msgid " Fourth address: 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8274
+#, c-format
+msgid " Shared image  : 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8285
+#, c-format
+msgid "cannot read EIHI\n"
+msgstr ""
+
+#: vms-alpha.c:8289
+#, c-format
+msgid "Image identification: (major: %u, minor: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:8292
+#, c-format
+msgid " image name       : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:8294
+#, c-format
+msgid " link time        : %s\n"
+msgstr ""
+
+#: vms-alpha.c:8296
+#, c-format
+msgid " image ident      : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:8298
+#, c-format
+msgid " linker ident     : %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:8300
+#, c-format
+msgid " image build ident: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:8310
+#, c-format
+msgid "cannot read EIHS\n"
+msgstr ""
+
+#: vms-alpha.c:8314
+#, c-format
+msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:8320
+#, c-format
+msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
+msgstr ""
+
+#: vms-alpha.c:8325
+#, c-format
+msgid " global symbol table: vbn: %u, records: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8330
+#, c-format
+msgid " debug module table : vbn: %u, size: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8343
+#, c-format
+msgid "cannot read EISD\n"
+msgstr ""
+
+#: vms-alpha.c:8354
+#, c-format
+msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:8362
+#, c-format
+msgid " section: base: 0x%08x%08x size: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8367
+#, c-format
+msgid " flags: 0x%04x"
+msgstr ""
+
+#: vms-alpha.c:8405
+#, c-format
+msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
+msgstr ""
+
+#: vms-alpha.c:8411
+msgid "NORMAL"
+msgstr ""
+
+#: vms-alpha.c:8414
+msgid "SHRFXD"
+msgstr ""
+
+#: vms-alpha.c:8417
+msgid "PRVFXD"
+msgstr ""
+
+#: vms-alpha.c:8420
+msgid "SHRPIC"
+msgstr ""
+
+#: vms-alpha.c:8423
+msgid "PRVPIC"
+msgstr ""
+
+#: vms-alpha.c:8426
+msgid "USRSTACK"
+msgstr ""
+
+#: vms-alpha.c:8432
+msgid ")\n"
+msgstr ""
+
+#: vms-alpha.c:8435
+#, c-format
+msgid " ident: 0x%08x, name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:8445
+#, c-format
+msgid "cannot read DMT\n"
+msgstr ""
+
+#: vms-alpha.c:8449
+#, c-format
+msgid "Debug module table:\n"
+msgstr ""
+
+#: vms-alpha.c:8458
+#, c-format
+msgid "cannot read DMT header\n"
+msgstr ""
+
+#: vms-alpha.c:8464
+#, c-format
+msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
+msgstr ""
+
+#: vms-alpha.c:8474
+#, c-format
+msgid "cannot read DMT psect\n"
+msgstr ""
+
+#: vms-alpha.c:8478
+#, c-format
+msgid "  psect start: 0x%08x, length: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8491
+#, c-format
+msgid "cannot read DST\n"
+msgstr ""
+
+#: vms-alpha.c:8501
+#, c-format
+msgid "cannot read GST\n"
+msgstr ""
+
+#: vms-alpha.c:8505
+#, c-format
+msgid "Global symbol table:\n"
+msgstr ""
+
+#: vms-alpha.c:8532
+#, c-format
+msgid "Image activator fixup: (major: %u, minor: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:8536
+#, c-format
+msgid "  iaflink : 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:8540
+#, c-format
+msgid "  fixuplnk: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:8543
+#, c-format
+msgid "  size : %u\n"
+msgstr ""
+
+#: vms-alpha.c:8545
+#, c-format
+msgid "  flags: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8550
+#, c-format
+msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8555
+#, c-format
+msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8560
+#, c-format
+msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8563
+#, c-format
+msgid "  chgprtoff : %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8567
+#, c-format
+msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8570
+#, c-format
+msgid "  shlextra  : %5u, permctx   : %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8573
+#, c-format
+msgid "  base_va : 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8575
+#, c-format
+msgid "  lppsbfixoff: %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8582
+#, c-format
+msgid " Shareable images:\n"
+msgstr ""
+
+#: vms-alpha.c:8590
+#, c-format
+msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:8597
+#, c-format
+msgid " quad-word relocation fixups:\n"
+msgstr ""
+
+#: vms-alpha.c:8603
+#, c-format
+msgid " long-word relocation fixups:\n"
+msgstr ""
+
+#: vms-alpha.c:8609
+#, c-format
+msgid " quad-word .address reference fixups:\n"
+msgstr ""
+
+#: vms-alpha.c:8614
+#, c-format
+msgid " long-word .address reference fixups:\n"
+msgstr ""
+
+#: vms-alpha.c:8619
+#, c-format
+msgid " Code Address Reference Fixups:\n"
+msgstr ""
+
+#: vms-alpha.c:8624
+#, c-format
+msgid " Linkage Pairs Reference Fixups:\n"
+msgstr ""
+
+#: vms-alpha.c:8632
+#, c-format
+msgid " Change Protection (%u entries):\n"
+msgstr ""
+
+#: vms-alpha.c:8641
+#, 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:9518
+msgid "%P: relocatable link is not supported\n"
+msgstr ""
+
+#: vms-alpha.c:9589
+#, c-format
+msgid "%P: multiple entry points: in modules %pB and %pB\n"
+msgstr ""
+
+#: vms-lib.c:1527
+#, c-format
+msgid "could not open shared image '%s' from '%s'"
+msgstr ""
+
+#: vms-misc.c:370
+msgid "_bfd_vms_output_counted called with zero bytes"
+msgstr ""
+
+#: vms-misc.c:375
+msgid "_bfd_vms_output_counted called with too many bytes"
+msgstr ""
+
+#: xcofflink.c:891
+#, c-format
+msgid "%pB: XCOFF shared object when not producing XCOFF output"
+msgstr ""
+
+#: xcofflink.c:912
+#, c-format
+msgid "%pB: dynamic object with no .loader section"
+msgstr ""
+
+#: xcofflink.c:1497
+#, c-format
+msgid "%pB: `%s' has line numbers but no enclosing section"
+msgstr ""
+
+#: xcofflink.c:1553
+#, c-format
+msgid "%pB: class %d symbol `%s' has no aux entries"
+msgstr ""
+
+#: xcofflink.c:1576
+#, c-format
+msgid "%pB: symbol `%s' has unrecognized csect type %d"
+msgstr ""
+
+#: xcofflink.c:1589
+#, c-format
+msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
+msgstr ""
+
+#: xcofflink.c:1620
+#, c-format
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
+msgstr ""
+
+#: xcofflink.c:1755
+#, c-format
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr ""
+
+#: xcofflink.c:1789
+#, c-format
+msgid "%pB: csect `%s' not in enclosing section"
+msgstr ""
+
+#: xcofflink.c:1899
+#, c-format
+msgid "%pB: misplaced XTY_LD `%s'"
+msgstr ""
+
+#: xcofflink.c:2242
+#, c-format
+msgid "%pB: reloc %s:%<PRId64> not in csect"
+msgstr ""
+
+#: xcofflink.c:3356
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr ""
+
+#: xcofflink.c:3404
+#, c-format
+msgid "%s: no such symbol"
+msgstr ""
+
+#: xcofflink.c:3513
+#, c-format
+msgid "warning: attempt to export undefined symbol `%s'"
+msgstr ""
+
+#: xcofflink.c:3861
+msgid "error: undefined symbol __rtinit"
+msgstr ""
+
+#: xcofflink.c:4872
+#, c-format
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr ""
+
+#: xcofflink.c:4901
+#, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr ""
+
+#: xcofflink.c:5021
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr ""
+
+#: xcofflink.c:5089
+#, c-format
+msgid "%pB: loader reloc in unrecognized section `%s'"
+msgstr ""
+
+#: xcofflink.c:5101
+#, c-format
+msgid "%pB: `%s' in loader reloc but not loader sym"
+msgstr ""
+
+#: xcofflink.c:5118
+#, c-format
+msgid "%pB: loader reloc in read-only section %pA"
+msgstr ""
+
+#: xcofflink.c:6191
+#, c-format
+msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
+msgstr ""
+
+#: xcofflink.c:7305
+#, c-format
+msgid "Unable to link input file: %s"
+msgstr ""
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr ""
+
+#: xtensa-dynconfig.c:86
+#, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr ""
+
+#: xtensa-dynconfig.c:102
+#, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr ""
+
+#: xtensa-dynconfig.c:115
+#, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr ""
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2880 elfnn-riscv.c:5319
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr ""
+
+#: elfnn-aarch64.c:5258
+#, c-format
+msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
+msgstr ""
+
+#: elfnn-aarch64.c:5350
+#, c-format
+msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
+msgstr ""
+
+#: elfnn-aarch64.c:5363
+#, c-format
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr ""
+
+#: elfnn-aarch64.c:5898
+#, 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 ""
+
+#: elfnn-aarch64.c:5918
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr ""
+
+#: elfnn-aarch64.c:6006
+#, c-format
+msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
+msgstr ""
+
+#: elfnn-aarch64.c:6119 elfnn-aarch64.c:6156
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr ""
+
+#: elfnn-aarch64.c:7143
+msgid "too many GOT entries for -fpic, please recompile with -fPIC"
+msgstr ""
+
+#: elfnn-aarch64.c:7171
+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:7738
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
+msgstr ""
+
+#: elfnn-aarch64.c:8814
+#, c-format
+msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr ""
+
+#: elfnn-loongarch.c:148 elfnn-loongarch.c:200
+#, c-format
+msgid "%#<PRIx64> invaild imm"
+msgstr ""
+
+#: elfnn-loongarch.c:382 elfnn-riscv.c:3811
+#, c-format
+msgid ""
+"%pB: ABI is incompatible with that of the selected emulation:\n"
+"  target emulation `%s' does not match `%s'"
+msgstr ""
+
+#: elfnn-loongarch.c:437
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr ""
+
+#: elfnn-loongarch.c:578
+msgid "Internal error: unreachable."
+msgstr ""
+
+#: elfnn-riscv.c:224 elfnn-riscv.c:259
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr ""
+
+#: elfnn-riscv.c:1899
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr ""
+
+#: elfnn-riscv.c:1902
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr ""
+
+#: elfnn-riscv.c:1908
+#, c-format
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr ""
+
+#: elfnn-riscv.c:1915
+#, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr ""
+
+#: elfnn-riscv.c:2396
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr ""
+
+#: elfnn-riscv.c:2498
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr ""
+
+#: elfnn-riscv.c:2581
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr ""
+
+#: elfnn-riscv.c:2800
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr ""
+
+#: elfnn-riscv.c:2837
+msgid "%X%P: internal error: out of range error\n"
+msgstr ""
+
+#: elfnn-riscv.c:2842
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr ""
+
+#: elfnn-riscv.c:2848
+msgid "dangerous relocation error"
+msgstr ""
+
+#: elfnn-riscv.c:2854
+msgid "%X%P: internal error: unknown error\n"
+msgstr ""
+
+#: elfnn-riscv.c:3403
+#, c-format
+msgid "error: %pB: corrupted ISA string '%s'.  First letter should be 'i' or 'e' but got '%s'"
+msgstr ""
+
+#: elfnn-riscv.c:3446
+#, c-format
+msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'"
+msgstr ""
+
+#: elfnn-riscv.c:3583
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)"
+msgstr ""
+
+#: elfnn-riscv.c:3603
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)"
+msgstr ""
+
+#: elfnn-riscv.c:3611
+#, c-format
+msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation"
+msgstr ""
+
+#: elfnn-riscv.c:3725
+#, c-format
+msgid "warning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%u"
+msgstr ""
+
+#: elfnn-riscv.c:3742
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr ""
+
+#: elfnn-riscv.c:3770
+#, c-format
+msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned"
+msgstr ""
+
+#: elfnn-riscv.c:3867
+#, c-format
+msgid "%pB: can't link %s modules with %s modules"
+msgstr ""
+
+#: elfnn-riscv.c:3877
+#, c-format
+msgid "%pB: can't link RVE with other target"
+msgstr ""
+
+#: elfnn-riscv.c:4562
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-byte boundary, but only %<PRId64> present"
+msgstr ""
+
+#: peXXigen.c:159
+#, c-format
+msgid "%pB: unable to find name for empty section"
+msgstr ""
+
+#: peXXigen.c:186
+#, c-format
+msgid "%pB: out of memory creating name for empty section"
+msgstr ""
+
+#: peXXigen.c:196
+#, c-format
+msgid "%pB: unable to create fake empty section"
+msgstr ""
+
+#: peXXigen.c:930
+#, c-format
+msgid "%pB:%.8s: section below image base"
+msgstr ""
+
+#: peXXigen.c:935
+#, c-format
+msgid "%pB:%.8s: RVA truncated"
+msgstr ""
+
+#: peXXigen.c:1066
+#, c-format
+msgid "%pB: line number overflow: 0x%lx > 0xffff"
+msgstr ""
+
+#: peXXigen.c:1232
+msgid "Export Directory [.edata (or where ever we found it)]"
+msgstr ""
+
+#: peXXigen.c:1233
+msgid "Import Directory [parts of .idata]"
+msgstr ""
+
+#: peXXigen.c:1234
+msgid "Resource Directory [.rsrc]"
+msgstr ""
+
+#: peXXigen.c:1235
+msgid "Exception Directory [.pdata]"
+msgstr ""
+
+#: peXXigen.c:1236
+msgid "Security Directory"
+msgstr ""
+
+#: peXXigen.c:1237
+msgid "Base Relocation Directory [.reloc]"
+msgstr ""
+
+#: peXXigen.c:1238
+msgid "Debug Directory"
+msgstr ""
+
+#: peXXigen.c:1239
+msgid "Description Directory"
+msgstr ""
+
+#: peXXigen.c:1240
+msgid "Special Directory"
+msgstr ""
+
+#: peXXigen.c:1241
+msgid "Thread Storage Directory [.tls]"
+msgstr ""
+
+#: peXXigen.c:1242
+msgid "Load Configuration Directory"
+msgstr ""
+
+#: peXXigen.c:1243
+msgid "Bound Import Directory"
+msgstr ""
+
+#: peXXigen.c:1244
+msgid "Import Address Table Directory"
+msgstr ""
+
+#: peXXigen.c:1245
+msgid "Delay Import Directory"
+msgstr ""
+
+#: peXXigen.c:1246
+msgid "CLR Runtime Header"
+msgstr ""
+
+#: peXXigen.c:1247
+msgid "Reserved"
+msgstr "áƒ áƒ”áƒ–áƒ”áƒ áƒ•áƒ˜áƒ áƒ”áƒ‘áƒ£áƒšáƒ˜"
+
+#: peXXigen.c:1294
+#, c-format
+msgid ""
+"\n"
+"There is an import table, but the section containing it could not be found\n"
+msgstr ""
+
+#: peXXigen.c:1300
+#, c-format
+msgid ""
+"\n"
+"There is an import table in %s, but that section has no contents\n"
+msgstr ""
+
+#: peXXigen.c:1307
+#, c-format
+msgid ""
+"\n"
+"There is an import table in %s at 0x%lx\n"
+msgstr ""
+
+#: peXXigen.c:1313
+#, c-format
+msgid ""
+"\n"
+"The Import Tables (interpreted %s section contents)\n"
+msgstr ""
+
+#: peXXigen.c:1316
+#, c-format
+msgid ""
+" vma:            Hint    Time      Forward  DLL       First\n"
+"                 Table   Stamp     Chain    Name      Thunk\n"
+msgstr ""
+
+#: peXXigen.c:1365
+#, c-format
+msgid ""
+"\n"
+"\tDLL Name: %.*s\n"
+msgstr ""
+
+#: peXXigen.c:1381
+#, c-format
+msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
+msgstr ""
+
+#: peXXigen.c:1406
+#, c-format
+msgid ""
+"\n"
+"There is a first thunk, but the section containing it could not be found\n"
+msgstr ""
+
+#: peXXigen.c:1450 peXXigen.c:1489
+#, c-format
+msgid "\t<corrupt: 0x%04lx>"
+msgstr ""
+
+#: peXXigen.c:1582
+#, c-format
+msgid ""
+"\n"
+"There is an export table, but the section containing it could not be found\n"
+msgstr ""
+
+#: peXXigen.c:1588
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but that section has no contents\n"
+msgstr ""
+
+#: peXXigen.c:1599
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but it does not fit into that section\n"
+msgstr ""
+
+#: peXXigen.c:1610
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but it is too small (%d)\n"
+msgstr ""
+
+#: peXXigen.c:1616
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s at 0x%lx\n"
+msgstr ""
+
+#: peXXigen.c:1644
+#, c-format
+msgid ""
+"\n"
+"The Export Tables (interpreted %s section contents)\n"
+"\n"
+msgstr ""
+
+#: peXXigen.c:1648
+#, c-format
+msgid "Export Flags \t\t\t%lx\n"
+msgstr ""
+
+#: peXXigen.c:1651
+#, c-format
+msgid "Time/Date stamp \t\t%lx\n"
+msgstr ""
+
+#: peXXigen.c:1655
+#, c-format
+msgid "Major/Minor \t\t\t%d/%d\n"
+msgstr ""
+
+#: peXXigen.c:1658
+#, c-format
+msgid "Name \t\t\t\t"
+msgstr ""
+
+#: peXXigen.c:1669
+#, c-format
+msgid "Ordinal Base \t\t\t%ld\n"
+msgstr ""
+
+#: peXXigen.c:1672
+#, c-format
+msgid "Number in:\n"
+msgstr ""
+
+#: peXXigen.c:1675
+#, c-format
+msgid "\tExport Address Table \t\t%08lx\n"
+msgstr ""
+
+#: peXXigen.c:1679
+#, c-format
+msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
+msgstr ""
+
+#: peXXigen.c:1682
+#, c-format
+msgid "Table Addresses\n"
+msgstr ""
+
+#: peXXigen.c:1685
+#, c-format
+msgid "\tExport Address Table \t\t"
+msgstr ""
+
+#: peXXigen.c:1690
+#, c-format
+msgid "\tName Pointer Table \t\t"
+msgstr ""
+
+#: peXXigen.c:1695
+#, c-format
+msgid "\tOrdinal Table \t\t\t"
+msgstr ""
+
+#: peXXigen.c:1709
+#, c-format
+msgid ""
+"\n"
+"Export Address Table -- Ordinal Base %ld\n"
+msgstr ""
+
+#: peXXigen.c:1718
+#, c-format
+msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr ""
+
+#: peXXigen.c:1737
+msgid "Forwarder RVA"
+msgstr ""
+
+#: peXXigen.c:1749
+msgid "Export RVA"
+msgstr ""
+
+#: peXXigen.c:1756
+#, c-format
+msgid ""
+"\n"
+"[Ordinal/Name Pointer] Table\n"
+msgstr ""
+
+#: peXXigen.c:1764
+#, c-format
+msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr ""
+
+#: peXXigen.c:1771
+#, c-format
+msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr ""
+
+#: peXXigen.c:1785
+#, c-format
+msgid "\t[%4ld] <corrupt offset: %lx>\n"
+msgstr ""
+
+#: peXXigen.c:1839 peXXigen.c:2008
+#, c-format
+msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
+msgstr ""
+
+#: peXXigen.c:1843 peXXigen.c:2012
+#, c-format
+msgid ""
+"\n"
+"The Function Table (interpreted .pdata section contents)\n"
+msgstr ""
+
+#: peXXigen.c:1846
+#, c-format
+msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
+msgstr ""
+
+#: peXXigen.c:1848
+#, c-format
+msgid ""
+" vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
+"     \t\tAddress  Address  Handler  Data     Address    Mask\n"
+msgstr ""
+
+#: peXXigen.c:1861
+#, c-format
+msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
+msgstr ""
+
+#: peXXigen.c:2014
+#, c-format
+msgid ""
+" vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
+"     \t\tAddress  Length   Length   32b exc  Handler   Data\n"
+msgstr ""
+
+#: peXXigen.c:2137
+#, c-format
+msgid ""
+"\n"
+"\n"
+"PE File Base Relocations (interpreted .reloc section contents)\n"
+msgstr ""
+
+#: peXXigen.c:2166
+#, c-format
+msgid ""
+"\n"
+"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
+msgstr ""
+
+#: peXXigen.c:2184
+#, c-format
+msgid "\treloc %4d offset %4x [%4lx] %s"
+msgstr ""
+
+#: peXXigen.c:2245
+#, c-format
+msgid "%03x %*.s Entry: "
+msgstr ""
+
+#: peXXigen.c:2269
+#, c-format
+msgid "name: [val: %08lx len %d]: "
+msgstr ""
+
+#: peXXigen.c:2289
+#, c-format
+msgid "<corrupt string length: %#x>\n"
+msgstr ""
+
+#: peXXigen.c:2299
+#, c-format
+msgid "<corrupt string offset: %#lx>\n"
+msgstr ""
+
+#: peXXigen.c:2304
+#, c-format
+msgid "ID: %#08lx"
+msgstr ""
+
+#: peXXigen.c:2307
+#, c-format
+msgid ", Value: %#08lx\n"
+msgstr ""
+
+#: peXXigen.c:2329
+#, c-format
+msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
+msgstr ""
+
+#: peXXigen.c:2371
+#, c-format
+msgid "<unknown directory type: %d>\n"
+msgstr ""
+
+#: peXXigen.c:2379
+#, c-format
+msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
+msgstr ""
+
+#: peXXigen.c:2467
+#, c-format
+msgid "Corrupt .rsrc section detected!\n"
+msgstr ""
+
+#: peXXigen.c:2491
+#, c-format
+msgid ""
+"\n"
+"WARNING: Extra data in .rsrc section - it will be ignored by Windows:\n"
+msgstr ""
+
+#: peXXigen.c:2497
+#, c-format
+msgid " String table starts at offset: %#03x\n"
+msgstr ""
+
+#: peXXigen.c:2500
+#, c-format
+msgid " Resources start at offset: %#03x\n"
+msgstr ""
+
+#: peXXigen.c:2557
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory, but the section containing it could not be found\n"
+msgstr ""
+
+#: peXXigen.c:2563
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s, but that section has no contents\n"
+msgstr ""
+
+#: peXXigen.c:2570
+#, c-format
+msgid ""
+"\n"
+"Error: section %s contains the debug data starting address but it is too small\n"
+msgstr ""
+
+#: peXXigen.c:2575
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s at 0x%lx\n"
+"\n"
+msgstr ""
+
+#: peXXigen.c:2582
+#, c-format
+msgid "The debug data size field in the data directory is too big for the section"
+msgstr ""
+
+#: peXXigen.c:2587
+#, c-format
+msgid "Type                Size     Rva      Offset\n"
+msgstr ""
+
+#: peXXigen.c:2635
+#, c-format
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr ""
+
+#: peXXigen.c:2647
+#, c-format
+msgid "The debug directory size is not a multiple of the debug directory entry size\n"
+msgstr ""
+
+#. The MS dumpbin program reportedly ands with 0xff0f before
+#. printing the characteristics field.  Not sure why.  No reason to
+#. emulate it here.
+#: peXXigen.c:2731
+#, c-format
+msgid ""
+"\n"
+"Characteristics 0x%x\n"
+msgstr ""
+
+#: peXXigen.c:3016
+#, c-format
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr ""
+
+#: peXXigen.c:3056
+msgid "failed to update file offsets in debug directory"
+msgstr ""
+
+#: peXXigen.c:3065
+#, c-format
+msgid "%pB: failed to read debug data section"
+msgstr ""
+
+#: peXXigen.c:3866
+#, c-format
+msgid ".rsrc merge failure: duplicate string resource: %d"
+msgstr ""
+
+#: peXXigen.c:4001
+msgid ".rsrc merge failure: multiple non-default manifests"
+msgstr ""
+
+#: peXXigen.c:4019
+msgid ".rsrc merge failure: a directory matches a leaf"
+msgstr ""
+
+#: peXXigen.c:4061
+msgid ".rsrc merge failure: duplicate leaf"
+msgstr ""
+
+#: peXXigen.c:4066
+#, c-format
+msgid ".rsrc merge failure: duplicate leaf: %s"
+msgstr ""
+
+#: peXXigen.c:4133
+msgid ".rsrc merge failure: dirs with differing characteristics"
+msgstr ""
+
+#: peXXigen.c:4140
+msgid ".rsrc merge failure: differing directory versions"
+msgstr ""
+
+#. Corrupted .rsrc section - cannot merge.
+#: peXXigen.c:4257
+#, c-format
+msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
+msgstr ""
+
+#: peXXigen.c:4265
+#, c-format
+msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
+msgstr ""
+
+#: peXXigen.c:4404
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
+msgstr ""
+
+#: peXXigen.c:4424
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+msgstr ""
+
+#: peXXigen.c:4445
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
+msgstr ""
+
+#: peXXigen.c:4465
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
+msgstr ""
+
+#: peXXigen.c:4507
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
+msgstr ""
+
+#: peXXigen.c:4532
+#, 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.20200303/bfd/po/Make-in ./bfd/po/Make-in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/Make-in	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/Make-in	2026-03-05 02:07:20.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-2025 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
@@ -96,17 +96,17 @@ all-no:
 	$(XGETTEXT) --default-domain=$(PACKAGE) \
 	  --directory=$(top_srcdir) \
 	  --add-comments --keyword=_ --keyword=N_ \
-	  --msgid-bugs-address=bug-binutils@gnu.org \
+	  --msgid-bugs-address=https://sourceware.org/bugzilla/ \
 	  --files-from=$(srcdir)/SRC-POTFILES.in 
 	$(XGETTEXT) --default-domain=$(PACKAGE) \
 	  --directory=.. \
 	  --directory=. \
 	  --add-comments --keyword=_ --keyword=N_ \
 	  --join-existing \
-	  --msgid-bugs-address=bug-binutils@gnu.org \
+	  --msgid-bugs-address=https://sourceware.org/bugzilla/ \
 	  --files-from=$(srcdir)/BLD-POTFILES.in
-	rm -f $(srcdir)/$(PACKAGE).pot
-	mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
+	sed -e '/^#:/s,$(top_srcdir)/,,g' < $(PACKAGE).po > $@-t
+	mv -f $@-t $@
 
 $(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
 $(srcdir)/stamp-cat-id: $(PACKAGE).pot
@@ -127,7 +127,9 @@ install: install-exec install-data
 install-exec:
 install-info:
 install-html:
+install-dvi:
 install-pdf:
+install-ps:
 install-data: install-data-@USE_NLS@
 install-data-no: all
 install-data-yes: all
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ms.gmo ./bfd/po/ms.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ms.gmo	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/po/ms.gmo	2026-03-05 02:15:54.000000000 +0000
@@ -0,0 +1,60 @@
+Þ•B,Y< 
¡¯±,ÈDõ:N^nw�£°¶¾"Ãæí	ôþ&,?Rd	‚Œž¢´ Æç
+ù(:L	S]bn€‰›­-¿íõ	ý		
+		
+-	08	i	k	|	ƒ	Œ	‘	™	¢	
ª	¸	¼	
ËÙÛ5ìV"y��­¶Ìãðöþ#
'
.
	5
?
,F
s
‰
¥
&¸
ß
ñ
#+O
+al~‘£µ	¼ÆÌÛíö-,Zj	q	{
+…�
¦8´íï	(2BX13
+& #=8,($:B0>%
-69<A!@+*)7;	./4"52?'	    TLS: %pA
+
+Characteristics 0x%x
+
+There is a debug directory in %s at 0x%lx
+
+
+There is a debug directory in %s, but that section has no contents
+        pc: 0x%08x
+    name: %.*s
+    pc: 0x%08x
+   %02u    compiler   : %.*s
+   filename   : %.*s
+  size : %u
+ %08x 0x%08x DEF Resources start at offset: %#03x
+ [BE8] [LE8] [abi=64] [v32]%pB: failed to read debug data section%s not implemented%s: no such symbol*unknown*        <unknown directory type: %d>
+<unknown>BASE_IMAGE       CLICOUNTERS         CPU              Corrupt .rsrc section detected!
+GALAXY           ID: %#08lxIO               MEMORY_MANAGEMENTMISC             NETWORKS         NORMALName 				NoneNumber in:
+POSIX            ReservedSECURITY         SHELL            STABLE           Type                Size     Rva      Offset
+Unknownaddresscpu=HC11]cpu=HC12]cpu=HCS12]division by zeroexecutablefailed to update file offsets in debug directoryhmemory exhaustednativeno errornonenot setpointer
+unknownunknown erroryesProject-Id-Version: bfd 2.43.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2025-01-19 12:19+0000
+PO-Revision-Date: 2025-07-04 21:09+0800
+Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>
+Language-Team: Malay <translation-team-ms@lists.sourceforge.net>
+Language: ms
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+Plural-Forms: nplurals=1; plural=0;
+X-Bugs: Report translation errors to the Language-Team address.
+X-Generator: Poedit 3.6
+	    TLS: %pA
+
+Ciri-ciri 0x%x
+
+Terdapat direktori nyahpepijat dalam %s pada 0x%lx
+
+
+Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan
+        pc: 0x%08x
+    nama: %.*s
+    pc: 0x%08x
+   %02u    pembina    : %.*s
+   nama fail   : %.*s
+  saiz : %u
+ %08x 0x%08x DEF Sumber bermula pada offset: %#03x
+ [BE8] [LE8] [abi=64] [v32]%pB: gagal membaca bahagian data nyahpepijat%s tidak dilaksanakan%s: tiada simbol sedemikian*tidak diketahui* <jenis direktori tidak diketahui: %d>
+<tidak diketahui>IMEJ_ASAS        CLIPENGIRA          CPU              Bahagian .rsrc yang rosak dikesan!
+GALAKSI          ID: %#08lxIO               PENGURUSAN_INGATANLAIN-LAIN        RANGKAIAN        NORMALNama 				TiadaNombor dalam:
+POSIX            SimpananKESELAMATAN      SHELL            STABIL           Jenis               Saiz     Rva      Offset
+Tidak Diketahuialamatcpu=HC11]cpu=HC12]cpu=HCS12]dibahagi dengan sifarboleh laksanagagal mengemaskini offset fail dalam direktori nyahpijathkehabisan memoriaslitiada ralattiadatidak ditetapkanpenunjuk
+tidak diketahuiralat tidak diketahuiya
\ 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.20200303/bfd/po/ms.po ./bfd/po/ms.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ms.po	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/po/ms.po	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,10025 @@
+# bfd Bahasa Melayu (Malay) (ms).
+# Copyright (C) 2024, 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+# Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>, 2024, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: bfd 2.43.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2025-01-19 12:19+0000\n"
+"PO-Revision-Date: 2025-07-04 21:09+0800\n"
+"Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>\n"
+"Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n"
+"Language: ms\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.6\n"
+
+#: aout-cris.c:196
+#, c-format
+msgid "%pB: unsupported relocation type exported: %#x"
+msgstr ""
+
+#: aout-cris.c:242
+#, c-format
+msgid "%pB: unsupported relocation type imported: %#x"
+msgstr ""
+
+#: aout-cris.c:254
+#, c-format
+msgid "%pB: bad relocation record imported: %d"
+msgstr ""
+
+#: aoutx.h:444 pdp11.c:481
+#, fuzzy, c-format
+msgid "%pB: %#<PRIx64> overflows header %s field"
+msgstr "Badan mesej adalah kosong tetapi tanda tangan dalam medan pengepala ialah \"(%s)\""
+
+#: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495
+#, c-format
+msgid "%pB: can not represent section `%pA' in a.out object file format"
+msgstr ""
+
+#: aoutx.h:1562 pdp11.c:1467
+#, c-format
+msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
+msgstr ""
+
+#: aoutx.h:1565 vms-alpha.c:8473
+#, fuzzy
+msgid "*unknown*"
+msgstr "Tidak diketahui "
+
+#: aoutx.h:1701 pdp11.c:1563
+#, c-format
+msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
+msgstr ""
+
+#: aoutx.h:1945
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr ""
+
+#: aoutx.h:2389 aoutx.h:2407 pdp11.c:2040
+#, c-format
+msgid "%pB: attempt to write out unknown reloc type"
+msgstr ""
+
+#: aoutx.h:4047 pdp11.c:3409
+#, fuzzy, c-format
+msgid "%pB: unsupported relocation type"
+msgstr "Jenis _MIME tidak disokong %s"
+
+#. Unknown relocation.
+#: aoutx.h:4367 coff-alpha.c:601 coff-mips.c:356 coff-rs6000.c:3037
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531
+#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4686
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6240 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2209 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3287
+#: elf32-nds32.c:3308 elf32-nds32.c:5077 elf32-or1k.c:1085 elf32-pj.c:326
+#: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291
+#: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347
+#: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163
+#: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537
+#: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924
+#: elf32-v850.c:4253 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510
+#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4055
+#: elf64-alpha.c:4203 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3426 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:305 elfn32-mips.c:3799
+#: elfxx-ia64.c:324 elfxx-loongarch.c:1897 elfxx-riscv.c:1062 elfxx-sparc.c:589
+#: elfxx-sparc.c:639 elfxx-tilegx.c:907 elfxx-tilegx.c:947 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:214 elfnn-ia64.c:3821 elfnn-kvx.c:259
+#, fuzzy, c-format
+msgid "%pB: unsupported relocation type %#x"
+msgstr "TYPE(x)"
+
+#: aoutx.h:5387 pdp11.c:3825
+#, fuzzy, c-format
+msgid "%pB: relocatable link from %s to %s not supported"
+msgstr "Pertukaran dari set aksara \"%s\" ke \"UTF-8\" tidak disokong"
+
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr ""
+
+#: archive.c:748
+msgid "%F%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr ""
+
+#: archive.c:2282
+msgid "warning: writing archive was slow: rewriting timestamp"
+msgstr ""
+
+#: archive.c:2351 archive.c:2412 elflink.c:4931 linker.c:1452
+#, c-format
+msgid "%pB: plugin needed to handle lto object"
+msgstr ""
+
+#: archive.c:2644
+#, fuzzy
+msgid "Reading archive file mod timestamp"
+msgstr "Setem masa penciptaan fail imej tidak ditetapkan dalam fail"
+
+#: archive.c:2675
+#, fuzzy
+msgid "Writing updated armap timestamp"
+msgstr "Dikemaskini"
+
+#: bfd.c:777
+msgid "no error"
+msgstr "tiada ralat"
+
+#: bfd.c:778
+#, fuzzy
+msgid "system call error"
+msgstr "panggilan sistem fork() gagal"
+
+#: bfd.c:779
+#, fuzzy
+msgid "invalid bfd target"
+msgstr "Nilai sasaran tak sah."
+
+#: bfd.c:780
+#, fuzzy
+msgid "file in wrong format"
+msgstr "Format fail:"
+
+#: bfd.c:781
+#, fuzzy
+msgid "archive object file in wrong format"
+msgstr "Cipta arkib dengan objek terpilih"
+
+#: bfd.c:782
+#, fuzzy
+msgid "invalid operation"
+msgstr "Operasi tidak sah %d\n"
+
+#: bfd.c:783
+msgid "memory exhausted"
+msgstr "kehabisan memori"
+
+#: bfd.c:784
+#, fuzzy
+msgid "no symbols"
+msgstr "Simbol"
+
+#: bfd.c:785
+msgid "archive has no index; run ranlib to add one"
+msgstr ""
+
+#: bfd.c:786
+#, fuzzy
+msgid "no more archived files"
+msgstr "Diarkib"
+
+#: bfd.c:787
+#, fuzzy
+msgid "malformed archive"
+msgstr "Respon cacat"
+
+#: bfd.c:788
+#, fuzzy
+msgid "DSO missing from command line"
+msgstr "Alatan KDE untuk pembukaan URL daripada baris arahan"
+
+#: bfd.c:789
+#, fuzzy
+msgid "file format not recognized"
+msgstr "PNM: Format fail tidak dikenal."
+
+#: bfd.c:790
+#, fuzzy
+msgid "file format is ambiguous"
+msgstr "Format Fail"
+
+#: bfd.c:791
+#, fuzzy
+msgid "section has no contents"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: bfd.c:792
+#, fuzzy
+msgid "nonrepresentable section on output"
+msgstr "&Seksyen:"
+
+#: bfd.c:793
+msgid "symbol needs debug section which does not exist"
+msgstr ""
+
+#: bfd.c:794
+#, fuzzy
+msgid "bad value"
+msgstr "nilai salah untuk maklumat keadaan ikon terlabuh %s"
+
+#: bfd.c:795
+#, fuzzy
+msgid "file truncated"
+msgstr "PNM: Fail seperti dipotong."
+
+#: bfd.c:796
+#, fuzzy
+msgid "file too big"
+msgstr "Fail terlalu besar."
+
+#: bfd.c:797
+#, fuzzy
+msgid "sorry, cannot handle this file"
+msgstr "pluma tidak dapat mengendali lokasi ini."
+
+#: bfd.c:798
+#, fuzzy, c-format
+msgid "error reading %s: %s"
+msgstr "Ralat membaca %s: %s"
+
+#: bfd.c:799
+#, fuzzy
+msgid "#<invalid error code>"
+msgstr "kod kesalahan"
+
+#: bfd.c:2242
+#, fuzzy, c-format
+msgid "BFD %s assertion fail %s:%d"
+msgstr "Gagal sebelum mengembalikan media kepada pengguna: %s"
+
+#: bfd.c:2255
+#, fuzzy, c-format
+msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr "RALAT DALAMAN pada %s:%d: regex hilang atau tidak sah"
+
+#: bfd.c:2259
+#, fuzzy, c-format
+msgid "%s: BFD %s internal error, aborting at %s:%d\n"
+msgstr "RALAT DALAMAN pada %s:%d: regex hilang atau tidak sah"
+
+#: bfd.c:2262
+#, fuzzy, c-format
+msgid "Please report this bug.\n"
+msgstr "Sila laporkan pepijat ini kepada pihak pembangun."
+
+#: binary.c:277
+#, c-format
+msgid "warning: writing section `%pA' at huge (ie negative) file offset"
+msgstr ""
+
+#: cache.c:290
+#, fuzzy, c-format
+msgid "reopening %pB: %s"
+msgstr "PB"
+
+#: coff-alpha.c:450
+#, c-format
+msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
+msgstr ""
+
+#: coff-alpha.c:867 coff-alpha.c:894 coff-alpha.c:2004 coff-mips.c:948
+msgid "GP relative relocation used when GP not defined"
+msgstr ""
+
+#: coff-alpha.c:1151 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13188
+#: elfxx-mips.c:13509 reloc.c:8596 reloc16.c:314
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr ""
+
+#: coff-alpha.c:1157 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13519
+#: reloc.c:8606
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr ""
+
+#: coff-alpha.c:1163 elfxx-mips.c:13528 reloc.c:8615
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr ""
+
+#: coff-alpha.c:1489
+#, fuzzy
+msgid "using multiple gp values"
+msgstr "Muat P_GP"
+
+#: coff-alpha.c:1987
+#, c-format
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr ""
+
+#: coff-alpha.c:1999
+#, c-format
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr ""
+
+#: coff-go32.c:167 coffswap.h:812
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr ""
+
+#: coff-mips.c:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
+msgid "GP relative relocation when _gp not defined"
+msgstr ""
+
+#: coff-rs6000.c:484 coff64-rs6000.c:377
+#, c-format
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr ""
+
+#: coff-rs6000.c:571 coff64-rs6000.c:497
+#, c-format
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr ""
+
+#: coff-rs6000.c:3127
+#, c-format
+msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
+msgstr ""
+
+#: coff-rs6000.c:3251 coff64-rs6000.c:848
+#, fuzzy, c-format
+msgid "Unable to find the stub entry targeting %s"
+msgstr "Tak dapat hantar kemasukan senaraimain \"%s\""
+
+#: coff-rs6000.c:3366
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr ""
+
+#: coff-rs6000.c:3379
+#, c-format
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr ""
+
+#: coff-rs6000.c:3785
+#, c-format
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr ""
+
+#: coff-rs6000.c:4047 coff64-rs6000.c:2021
+#, c-format
+msgid "%pB: symbol `%s' has unrecognized smclas %d"
+msgstr ""
+
+#: coff-sh.c:781 elf32-sh.c:521
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
+msgstr ""
+
+#: coff-sh.c:792
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
+msgstr ""
+
+#: coff-sh.c:810 elf32-sh.c:552
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
+msgstr ""
+
+#: coff-sh.c:835 elf32-sh.c:568
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
+msgstr ""
+
+#: coff-sh.c:852 elf32-sh.c:597
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
+msgstr ""
+
+#: coff-sh.c:973 elf32-sh.c:727
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
+msgstr ""
+
+#: coff-sh.c:983 elf32-sh.c:738
+#, fuzzy, c-format
+msgid "%pB: %#<PRIx64>: warning: bad count"
+msgstr "Amaran: Tandatangan rosak."
+
+#: coff-sh.c:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
+msgstr ""
+
+#: coff-sh.c:1443
+#, c-format
+msgid "%pB: fatal: generic symbols retrieved before relaxing"
+msgstr ""
+
+#: coff-sh.c:2773 cofflink.c:2947
+#, c-format
+msgid "%pB: illegal symbol index %ld in relocs"
+msgstr ""
+
+#: coff-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5314
+#, c-format
+msgid "%pB: warning: illegal symbol index %ld in relocs"
+msgstr ""
+
+#: coff-x86_64.c:147
+#, fuzzy
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr "Tidak ditakrif"
+
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
+#, c-format
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr ""
+
+#: coff64-rs6000.c:477
+#, c-format
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr ""
+
+#: coff64-rs6000.c:1598
+#, c-format
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr ""
+
+#: coffcode.h:951
+#, c-format
+msgid "%pB: unable to load COMDAT section name"
+msgstr ""
+
+#: coffcode.h:976
+#, fuzzy, c-format
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "simbol tidak dijumpai di dalam pengeluaran: %.*s"
+
+#: coffcode.h:1148
+#, c-format
+msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
+msgstr ""
+
+#: coffcode.h:1159
+#, c-format
+msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
+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:1267
+#, c-format
+msgid "%pB: warning: ignoring section flag %s in section %s"
+msgstr ""
+
+#: coffcode.h:1337
+#, c-format
+msgid "%pB (%s): section flag %s (%#lx) ignored"
+msgstr ""
+
+#: coffcode.h:1954
+#, c-format
+msgid "%pB: overflow reloc count too small"
+msgstr ""
+
+#: coffcode.h:1963 coffcode.h:2028
+#, c-format
+msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
+msgstr ""
+
+#: coffcode.h:2411
+#, c-format
+msgid "unrecognized TI COFF target id '0x%x'"
+msgstr ""
+
+#: coffcode.h:2690
+#, c-format
+msgid "%pB: reloc against a non-existent symbol index: %ld"
+msgstr ""
+
+#: coffcode.h:3162
+#, fuzzy, c-format
+msgid "%pB: too many sections (%d)"
+msgstr "Terlalu banyak titik henti. Maksimum ialah %d."
+
+#: coffcode.h:3690
+#, c-format
+msgid "%pB: section %pA: string table overflow at offset %ld"
+msgstr ""
+
+#: coffcode.h:3791
+#, c-format
+msgid "%pB:%s section %s: alignment 2**%u not representable"
+msgstr ""
+
+#: coffcode.h:4532
+#, c-format
+msgid "%pB: warning: line number table read failed"
+msgstr ""
+
+#: coffcode.h:4578 coffcode.h:4592
+#, c-format
+msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
+msgstr ""
+
+#: coffcode.h:4606
+#, c-format
+msgid "%pB: warning: illegal symbol in line number entry %d"
+msgstr ""
+
+#: coffcode.h:4619
+#, c-format
+msgid "%pB: warning: duplicate line number information for `%s'"
+msgstr ""
+
+#: coffcode.h:5043
+#, c-format
+msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
+msgstr ""
+
+#: coffcode.h:5183
+#, c-format
+msgid "warning: %pB: local symbol `%s' has no section"
+msgstr ""
+
+#: coffcode.h:5354
+#, c-format
+msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
+msgstr ""
+
+#: coffgen.c:255 elf.c:1033
+#, fuzzy, c-format
+msgid "%pB: unable to compress section %s"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: coffgen.c:265 elf.c:1043
+#, fuzzy, c-format
+msgid "%pB: unable to decompress section %s"
+msgstr "Sumber pada \"%s\" gagal dinyahmampatkan"
+
+#: coffgen.c:1778
+#, c-format
+msgid "%pB: bad string table size %<PRIu64>"
+msgstr ""
+
+#: coffgen.c:2162 coffgen.c:2301 cofflink.c:2012 ecoff.c:1456 elf.c:2288
+#: elf.c:2320 pef.c:214 syms.c:788 xcofflink.c:5530
+#, fuzzy
+msgid "<corrupt>"
+msgstr "Fail rosak?"
+
+#: coffgen.c:2191
+#, fuzzy, c-format
+msgid "<corrupt info> %s"
+msgstr "PNG imej kenit rosak: '%s'"
+
+#: coffgen.c:2797 elflink.c:15435 linker.c:3011
+msgid "%F%P: already_linked_table: %E\n"
+msgstr ""
+
+#: coffgen.c:3139 elflink.c:14375
+#, c-format
+msgid "removing unused section '%pA' in file '%pB'"
+msgstr ""
+
+#: coffgen.c:3216 elflink.c:14606
+#, fuzzy
+msgid "warning: gc-sections option ignored"
+msgstr ""
+"Amaran mengenai %(cleaner)s - %(option)s:\n"
+"\n"
+"%(warning)s"
+
+#: cofflink.c:398
+#, c-format
+msgid "warning: symbol `%s' is both section and non-section"
+msgstr ""
+
+#: cofflink.c:503 elf64-ia64-vms.c:5198 elflink.c:5560
+#, c-format
+msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
+msgstr ""
+
+#: cofflink.c:2340
+#, fuzzy, c-format
+msgid "%pB: relocs in section `%pA', but it has no contents"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: cofflink.c:2403 elflink.c:11809
+#, c-format
+msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
+msgstr ""
+
+#: cofflink.c:2598
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr ""
+
+#: cofflink.c:2716
+#, c-format
+msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
+msgstr ""
+
+#: cofflink.c:2724
+#, c-format
+msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
+msgstr ""
+
+#: cofflink.c:3118
+#, c-format
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr ""
+
+#: coffswap.h:826
+#, c-format
+msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
+msgstr ""
+
+#: compress.c:748 compress.c:765 libbfd.c:1322
+#, c-format
+msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
+msgstr ""
+
+#: cpu-arm.c:438
+#, c-format
+msgid "warning: unable to update contents of %s section in %pB"
+msgstr ""
+
+#: dwarf2.c:702
+#, fuzzy, c-format
+msgid "DWARF error: can't find %s section."
+msgstr "%s: tidak dapat mencari seksyen .text dalam %s\n"
+
+#: dwarf2.c:710
+#, fuzzy, c-format
+msgid "DWARF error: section %s has no contents"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#. PR 26946
+#: dwarf2.c:719
+#, fuzzy, c-format
+msgid "DWARF error: section %s is too big"
+msgstr "Ralat: Saiz mesej %d terlalu besar\n"
+
+#: dwarf2.c:754
+#, c-format
+msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
+msgstr ""
+
+#: dwarf2.c:1501
+msgid "DWARF error: info pointer extends beyond end of attributes"
+msgstr ""
+
+#: dwarf2.c:1693
+#, c-format
+msgid "DWARF error: invalid or unhandled FORM value: %#x"
+msgstr ""
+
+#: dwarf2.c:2050
+msgid "DWARF error: mangled line number section (bad file number)"
+msgstr ""
+
+#: dwarf2.c:2614
+#, fuzzy
+msgid "DWARF error: zero format count"
+msgstr "Sembunyi kiraan bila kosong:"
+
+#: dwarf2.c:2624
+#, c-format
+msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
+msgstr ""
+
+#: dwarf2.c:2663
+#, c-format
+msgid "DWARF error: unknown format content type %<PRIu64>"
+msgstr ""
+
+#: dwarf2.c:2736
+#, c-format
+msgid "DWARF error: line info section is too small (%<PRId64>)"
+msgstr ""
+
+#: dwarf2.c:2763
+#, c-format
+msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
+msgstr ""
+
+#: dwarf2.c:2776
+#, c-format
+msgid "DWARF error: unhandled .debug_line version %d"
+msgstr ""
+
+#: dwarf2.c:2785
+msgid "DWARF error: ran out of room reading prologue"
+msgstr ""
+
+#: dwarf2.c:2801
+#, c-format
+msgid "DWARF error: line info unsupported segment selector size %u"
+msgstr ""
+
+#: dwarf2.c:2823
+msgid "DWARF error: invalid maximum operations per instruction"
+msgstr ""
+
+#: dwarf2.c:2835
+msgid "DWARF error: ran out of room reading opcodes"
+msgstr ""
+
+#: dwarf2.c:3012
+msgid "DWARF error: mangled line number section"
+msgstr ""
+
+#: dwarf2.c:3483
+msgid "DWARF error: abstract instance recursion detected"
+msgstr ""
+
+#: dwarf2.c:3517 dwarf2.c:3607
+msgid "DWARF error: invalid abstract instance DIE ref"
+msgstr ""
+
+#: dwarf2.c:3533
+#, c-format
+msgid "DWARF error: unable to read alt ref %<PRIu64>"
+msgstr ""
+
+#: dwarf2.c:3585
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr ""
+
+#: dwarf2.c:3622 dwarf2.c:3938 dwarf2.c:4511
+#, c-format
+msgid "DWARF error: could not find abbrev number %u"
+msgstr ""
+
+#: dwarf2.c:4211
+#, c-format
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr ""
+
+#: dwarf2.c:4357 dwarf2.c:4611
+msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
+msgstr ""
+
+#: dwarf2.c:4428
+#, c-format
+msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
+msgstr ""
+
+#: dwarf2.c:4475
+#, c-format
+msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
+msgstr ""
+
+#: ecoff.c:1017
+#, c-format
+msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
+msgstr ""
+
+#: ecoff.c:1313
+#, fuzzy, c-format
+msgid "unknown basic type %d"
+msgstr "Jenis bus %d tidak diketahui"
+
+#: ecoff.c:1571
+#, fuzzy, c-format
+msgid ""
+"\n"
+"      End+1 symbol: %ld"
+msgstr "Tetapkan alamat &akhir simbol"
+
+#: ecoff.c:1578 ecoff.c:1581
+#, fuzzy, c-format
+msgid ""
+"\n"
+"      First symbol: %ld"
+msgstr "Memadam fail %ld drpd %ld"
+
+#: ecoff.c:1596
+#, fuzzy, c-format
+msgid ""
+"\n"
+"      End+1 symbol: %-7ld   Type:  %s"
+msgstr "jenis <%s> digunakan, tetapi tidak dihubungkan ke sebarang simbol"
+
+#: ecoff.c:1604
+#, fuzzy, c-format
+msgid ""
+"\n"
+"      Local symbol: %ld"
+msgstr "Memadam fail %ld drpd %ld"
+
+#: ecoff.c:1612
+#, fuzzy, c-format
+msgid ""
+"\n"
+"      struct; End+1 symbol: %ld"
+msgstr "Lumpuhkan simbol _akhir baris"
+
+#: ecoff.c:1617
+#, fuzzy, c-format
+msgid ""
+"\n"
+"      union; End+1 symbol: %ld"
+msgstr "Lumpuhkan simbol _akhir baris"
+
+#: ecoff.c:1622
+#, fuzzy, c-format
+msgid ""
+"\n"
+"      enum; End+1 symbol: %ld"
+msgstr "Lumpuhkan simbol _akhir baris"
+
+#: ecoff.c:1630
+#, fuzzy, c-format
+msgid ""
+"\n"
+"      Type: %s"
+msgstr "Indeks tidak sah untuk jenis %s untuk jenis asa %s"
+
+#: elf-attrs.c:417 elf-attrs.c:447 elf-attrs.c:623
+#, fuzzy
+msgid "error adding attribute"
+msgstr "Ralat ketika menambah hubungan"
+
+#: elf-attrs.c:503
+#, c-format
+msgid "%pB: error: attribute section '%pA' too big: %#llx"
+msgstr ""
+
+#: elf-attrs.c:540
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr ""
+
+#: elf-attrs.c:673
+#, c-format
+msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
+msgstr ""
+
+#: elf-attrs.c:683
+#, c-format
+msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
+msgstr ""
+
+#: elf-eh-frame.c:946
+#, c-format
+msgid "discarding zero address range FDE in %pB(%pA).\n"
+msgstr ""
+
+#: elf-eh-frame.c:1051
+#, c-format
+msgid "error in %pB(%pA); no .eh_frame_hdr table will be created"
+msgstr ""
+
+#: elf-eh-frame.c:1542
+#, c-format
+msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created"
+msgstr ""
+
+#: elf-eh-frame.c:1549
+msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
+msgstr ""
+
+#: elf-eh-frame.c:1872
+#, fuzzy, c-format
+msgid "%pB: %pA not in order"
+msgstr "PA="
+
+#: elf-eh-frame.c:1886
+#, c-format
+msgid "%pB: %pA invalid input section size"
+msgstr ""
+
+#: elf-eh-frame.c:1894
+#, c-format
+msgid "%pB: %pA points past end of text section"
+msgstr ""
+
+#: elf-eh-frame.c:2147
+msgid "DW_EH_PE_datarel unspecified for this architecture"
+msgstr ""
+
+#: elf-eh-frame.c:2317
+#, c-format
+msgid "invalid output section for .eh_frame_entry: %pA"
+msgstr ""
+
+#: elf-eh-frame.c:2340
+#, fuzzy, c-format
+msgid "invalid contents in %pA section"
+msgstr "PA="
+
+#: elf-eh-frame.c:2496
+#, fuzzy
+msgid ".eh_frame_hdr entry overflow"
+msgstr "Lukis bingkai disekeliling masukan"
+
+#: elf-eh-frame.c:2498
+msgid ".eh_frame_hdr refers to overlapping FDEs"
+msgstr ""
+
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1704
+#, 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 ""
+
+#: elf-m10200.c:434 elf-m10300.c:2146 elf32-bfin.c:3132 elf32-cr16.c:1429
+#: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624
+#: elf32-m32r.c:2837 elf32-m68hc1x.c:1270 elf32-mep.c:522 elf32-metag.c:1983
+#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6092
+#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5081
+#: elf32-tilepro.c:3369 elf32-v850.c:2297 elf32-visium.c:680
+#: elf32-xstormy16.c:930 elf64-bpf.c:339 elf64-mmix.c:1537 elfxx-tilegx.c:3742
+#, fuzzy
+msgid "internal error: out of range error"
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#: elf-m10200.c:438 elf-m10300.c:2150 elf32-bfin.c:3136 elf32-cr16.c:1433
+#: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2841 elf32-m68hc1x.c:1274
+#: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681 elf32-moxie.c:292
+#: elf32-msp430.c:1510 elf32-nds32.c:6096 elf32-or1k.c:1899 elf32-score.c:2728
+#: elf32-score7.c:2539 elf32-spu.c:5085 elf32-tilepro.c:3373 elf32-v850.c:2301
+#: elf32-visium.c:684 elf32-xstormy16.c:934 elf64-mmix.c:1541
+#: elfxx-mips.c:10642 elfxx-tilegx.c:3746
+#, fuzzy
+msgid "internal error: unsupported relocation error"
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#: elf-m10200.c:442 elf32-cr16.c:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2845 elf32-m68hc1x.c:1278
+#: elf32-microblaze.c:1685 elf32-nds32.c:6100 elf32-score.c:2732
+#: elf32-score7.c:2543 elf32-spu.c:5089
+#, fuzzy
+msgid "internal error: dangerous error"
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#: elf-m10200.c:446 elf-m10300.c:2167 elf32-bfin.c:3144 elf32-cr16.c:1441
+#: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636
+#: elf32-m32r.c:2849 elf32-m68hc1x.c:1282 elf32-mep.c:534 elf32-metag.c:1995
+#: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518 elf32-mt.c:410
+#: elf32-nds32.c:6104 elf32-or1k.c:1907 elf32-score.c:2741 elf32-score7.c:2547
+#: elf32-spu.c:5093 elf32-tilepro.c:3381 elf32-v850.c:2321 elf32-visium.c:692
+#: elf32-xstormy16.c:942 elf64-bpf.c:352 elf64-mmix.c:1549 elfxx-tilegx.c:3754
+#, fuzzy
+msgid "internal error: unknown error"
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#: elf-m10300.c:1030
+#, c-format
+msgid "%pB: unsupported transition from %s to %s"
+msgstr ""
+
+#: elf-m10300.c:1197
+#, c-format
+msgid "%pB: %s' accessed both as normal and thread local symbol"
+msgstr ""
+
+#: elf-m10300.c:2093 elf32-arm.c:13472 elf32-i386.c:3503 elf32-m32r.c:2331
+#: elf32-m68k.c:3929 elf32-s390.c:3072 elf32-sh.c:3672 elf32-tilepro.c:3272
+#: elf32-xtensa.c:3020 elf64-s390.c:3129 elf64-x86-64.c:4564 elfxx-sparc.c:2913
+#: elfxx-sparc.c:3810 elfxx-tilegx.c:3665 elfnn-aarch64.c:5725
+#: elfnn-aarch64.c:7343 elfnn-kvx.c:2772
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr ""
+
+#: elf-m10300.c:2155
+msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
+msgstr ""
+
+#: elf-m10300.c:2159
+#, c-format
+msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
+msgstr ""
+
+#: elf-m10300.c:2162
+msgid "internal error: suspicious relocation type used in shared library"
+msgstr ""
+
+#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5621 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2680 reloc.c:8370 reloc16.c:155 elfnn-ia64.c:365
+msgid "%P%F: --relax and -r may not be used together\n"
+msgstr ""
+
+#: elf-properties.c:65
+#, c-format
+msgid "%pB: out of memory in _bfd_elf_get_property"
+msgstr ""
+
+#: elf-properties.c:91
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
+msgstr ""
+
+#: elf-properties.c:112
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
+msgstr ""
+
+#: elf-properties.c:151
+#, c-format
+msgid "warning: %pB: corrupt stack size: 0x%x"
+msgstr ""
+
+#: elf-properties.c:169
+#, c-format
+msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
+msgstr ""
+
+#: elf-properties.c:184
+#, c-format
+msgid "warning: %pB: corrupt memory sealing size: 0x%x"
+msgstr ""
+
+#: elf-properties.c:203
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr ""
+
+#: elf-properties.c:228
+#, c-format
+msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
+msgstr ""
+
+#: elf-properties.c:415
+msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr ""
+
+#: elf-properties.c:421
+msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
+msgstr ""
+
+#: elf-properties.c:430 elf-properties.c:508
+msgid "Removed property %W to merge %pB and %pB\n"
+msgstr ""
+
+#: elf-properties.c:434
+msgid "Removed property %W to merge %pB and %pB (not found)\n"
+msgstr ""
+
+#: elf-properties.c:451
+msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr ""
+
+#: elf-properties.c:460
+msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
+msgstr ""
+
+#: elf-properties.c:502
+msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
+msgstr ""
+
+#: elf-properties.c:640 elfxx-aarch64.c:748 elfxx-x86.c:4348
+msgid "%F%P: failed to create GNU property section\n"
+msgstr ""
+
+#: elf-properties.c:644 elfxx-aarch64.c:752 elfxx-x86.c:4353
+#, fuzzy, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#. Merge .note.gnu.property sections.
+#: elf-properties.c:749 elf-properties.c:751
+msgid "\n"
+msgstr "\n"
+
+#: elf-properties.c:750
+#, fuzzy
+msgid "Merging program properties\n"
+msgstr "Tiada Penggabungan"
+
+#: elf-sframe.c:239
+#, c-format
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr ""
+
+#: elf-sframe.c:399
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr ""
+
+#: elf-sframe.c:410
+msgid "input SFrame sections with different format versions prevent .sframe generation"
+msgstr ""
+
+#: elf.c:299
+#, fuzzy, c-format
+msgid "%pB: string table [%u] is corrupt"
+msgstr "Fail nampaknya rosak. Melangkau jadual. "
+
+#. PR 17512: file: f057ec89.
+#: elf.c:328
+#, c-format
+msgid "%pB: attempt to load strings from a non-string section (number %d)"
+msgstr ""
+
+#: elf.c:353
+#, c-format
+msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
+msgstr ""
+
+#: elf.c:511 elf32-arm.c:17773 elfnn-aarch64.c:8343 elfnn-loongarch.c:6132
+#: elfnn-riscv.c:3688
+#, c-format
+msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
+msgstr ""
+
+#: elf.c:614
+#, fuzzy, c-format
+msgid "%pB: could not read contents of group [%u]"
+msgstr "Tidak dapat membaca kandungan folder"
+
+#: elf.c:645
+#, c-format
+msgid "%pB: invalid entry (%#x) in group [%u]"
+msgstr ""
+
+#: elf.c:664
+#, c-format
+msgid "%pB: unexpected type (%#x) section `%s' in group [%u]"
+msgstr ""
+
+#: elf.c:740
+#, c-format
+msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
+msgstr ""
+
+#: elf.c:769
+#, c-format
+msgid "%pB: section group entry number %u is corrupt"
+msgstr ""
+
+#: elf.c:1051
+#, c-format
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr ""
+
+#: elf.c:1237
+#, c-format
+msgid "%pB: invalid sh_link field (%d) in section number %d"
+msgstr ""
+
+#: elf.c:1253
+#, fuzzy, c-format
+msgid "%pB: failed to find link section for section %d"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: elf.c:1280
+#, fuzzy, c-format
+msgid "%pB: failed to find info section for section %d"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: elf.c:1457
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Program Header:\n"
+msgstr "Program"
+
+#: elf.c:1499
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Dynamic Section:\n"
+msgstr "dinamik"
+
+#: elf.c:1638
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version definitions:\n"
+msgstr "Sedang mentakrifkan item..."
+
+#: elf.c:1663
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Version References:\n"
+msgstr "Rujukan:"
+
+#: elf.c:1668
+#, fuzzy, c-format
+msgid "  required from %s:\n"
+msgstr "diperlukan=%s"
+
+#: elf.c:1917
+#, fuzzy, c-format
+msgid "%pB: DT_STRTAB table is corrupt"
+msgstr "Fail nampaknya rosak. Melangkau jadual. "
+
+#: elf.c:2426
+#, c-format
+msgid "%pB: warning: loop in section dependencies detected"
+msgstr ""
+
+#: elf.c:2533
+#, c-format
+msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
+msgstr ""
+
+#: elf.c:2618
+#, c-format
+msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
+msgstr ""
+
+#: elf.c:2737
+#, c-format
+msgid "%pB: invalid link %u for reloc section %s (index %u)"
+msgstr ""
+
+#: elf.c:2794
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr ""
+
+#: elf.c:2879 elf.c:2893 elf.c:2904 elf.c:2917
+#, fuzzy, c-format
+msgid "%pB: unknown type [%#x] section `%s'"
+msgstr "Seksyen tidak diketahui: %s"
+
+#: elf.c:3586
+#, c-format
+msgid "%pB: error: alignment power %d of section `%pA' is too big"
+msgstr ""
+
+#: elf.c:3621
+#, c-format
+msgid "warning: section `%pA' type changed to PROGBITS"
+msgstr ""
+
+#: elf.c:4130
+#, fuzzy, c-format
+msgid "%pB: too many sections: %u"
+msgstr "Terlalu banyak klien. Sambungan daripada %s:%u ditolak."
+
+#: elf.c:4216
+#, c-format
+msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
+msgstr ""
+
+#: elf.c:4234
+#, c-format
+msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
+msgstr ""
+
+#: elf.c:4830
+#, c-format
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr ""
+
+#: elf.c:5013
+msgid "%F%P: failed to size relative relocations\n"
+msgstr ""
+
+#: elf.c:5440
+#, fuzzy, c-format
+msgid "%pB: TLS sections are not adjacent:"
+msgstr "PB"
+
+#: elf.c:5447
+#, c-format
+msgid "\t    TLS: %pA"
+msgstr "\t    TLS: %pA"
+
+#: elf.c:5451
+#, fuzzy, c-format
+msgid "\tnon-TLS: %pA"
+msgstr "PA="
+
+#: elf.c:6075
+#, c-format
+msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
+msgstr ""
+
+#: elf.c:6101
+#, c-format
+msgid "%pB: not enough room for program headers, try linking with -N"
+msgstr ""
+
+#: elf.c:6222
+#, c-format
+msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
+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:6362
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr ""
+
+#: elf.c:6402
+#, c-format
+msgid "%pB: section `%pA' can't be allocated in segment %u"
+msgstr ""
+
+#: elf.c:6543
+#, c-format
+msgid "%pB: warning: allocated section `%s' not in segment"
+msgstr ""
+
+#: elf.c:6678
+#, c-format
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr ""
+
+#: elf.c:6709
+#, c-format
+msgid "%pB: error: non-load segment %d includes file header and/or program header"
+msgstr ""
+
+#: elf.c:6862
+#, fuzzy, c-format
+msgid "error: %pB has a TLS segment with execute permission"
+msgstr "Proses mempunyai keizinan untuk melakukan arahan yang terkandung di dalam segmen ingatan."
+
+#: elf.c:6868
+#, fuzzy, c-format
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr "Proses mempunyai keizinan untuk melakukan arahan yang terkandung di dalam segmen ingatan."
+
+#: elf.c:6883
+#, c-format
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr ""
+
+#: elf.c:6889
+#, c-format
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr ""
+
+#: elf.c:7284
+#, fuzzy, c-format
+msgid "%pB: symbol `%s' required but not present"
+msgstr "Satu unsur (%s) diperlukan tidak hadir."
+
+#: elf.c:7661
+#, c-format
+msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
+msgstr ""
+
+#: elf.c:8334
+#, c-format
+msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
+msgstr ""
+
+#: elf.c:8837
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr ""
+
+#: elf.c:8867
+#, c-format
+msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
+msgstr ""
+
+#: elf.c:9300
+#, fuzzy, c-format
+msgid "%pB: .gnu.version_r invalid entry"
+msgstr "Masukan rangkaian tidak sah."
+
+#: elf.c:9478
+#, fuzzy, c-format
+msgid "%pB: .gnu.version_d invalid entry"
+msgstr "%d masukan"
+
+#: elf.c:9981
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr ""
+
+#: elf.c:9993
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr ""
+
+#: elf.c:10108 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7675
+#: elf32-ppc.c:8863 elf64-ppc.c:16860
+#, fuzzy, c-format
+msgid "%pB: %s unsupported"
+msgstr "PB"
+
+#: elf.c:10923
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr ""
+
+#: elf.c:11002
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr ""
+
+#: elf.c:13640
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13643
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13646
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13649
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr ""
+
+#: elf.c:13866
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr ""
+
+#: elf.c:13941
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr ""
+
+#: elf.c:13955
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr ""
+
+#: elf.c:13969
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr ""
+
+#: elf.c:14045
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr ""
+
+#: elf.c:14057
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr ""
+
+#: elf.c:14069
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr ""
+
+#: elf.c:14083
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr ""
+
+#: elf.c:14106
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr ""
+
+#: elf.c:14126
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr ""
+
+#: elf.c:14151
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr ""
+
+#: elf.c:14169
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr ""
+
+#: elf.c:14183
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+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-arc.c:454 elf32-arm.c:15194 elf32-frv.c:6612 elf32-iq2000.c:868
+#: elf32-m32c.c:914 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5531 elfnn-aarch64.c:7573
+#, fuzzy, c-format
+msgid "private flags = 0x%lx:"
+msgstr "[find_call] %s: 0x%lx ke 0x%lx\n"
+
+#: elf32-arc.c:641
+#, c-format
+msgid "warning: %pB: conflicting platform configuration %s with %s"
+msgstr ""
+
+#: elf32-arc.c:660
+#, c-format
+msgid "error: %pB: unable to merge CPU base attributes %s with %s"
+msgstr ""
+
+#: elf32-arc.c:697
+#, c-format
+msgid "error: %pB: unable to merge ISA extension attributes %s"
+msgstr ""
+
+#: elf32-arc.c:721
+#, c-format
+msgid "error: %pB: conflicting ISA extension attributes %s with %s"
+msgstr ""
+
+#: elf32-arc.c:761
+#, c-format
+msgid "error: %pB: cannot mix rf16 with full register set %pB"
+msgstr ""
+
+#: elf32-arc.c:789
+#, fuzzy, c-format
+msgid "error: %pB: conflicting attributes %s: %s with %s"
+msgstr "keluaran berkonflik kepada fail %s"
+
+#: elf32-arc.c:816
+#, fuzzy, c-format
+msgid "error: %pB: conflicting attributes %s"
+msgstr "Konflik tindakan untuk %s"
+
+#: elf32-arc.c:921
+#, c-format
+msgid "error: attempting to link %pB with a binary %pB of different architecture"
+msgstr ""
+
+#: elf32-arc.c:937 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1389
+#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15680
+#, c-format
+msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
+msgstr ""
+
+#: elf32-arc.c:1026
+#, fuzzy
+msgid "error: the ARC4 architecture is no longer supported"
+msgstr "%s: -c tidak disokong pada rekabentuk %s\n"
+
+#: elf32-arc.c:1032
+msgid "warning: unset or old architecture flags; use default machine"
+msgstr ""
+
+#: elf32-arc.c:1158
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
+msgstr ""
+
+#: elf32-arc.c:1169
+#, 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:1897
+msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
+msgstr ""
+
+#: elf32-arc.c:1921 elf32-rx.c:1486
+#, c-format
+msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
+msgstr ""
+
+#: elf32-arc.c:1926 elf32-rx.c:1491
+#, fuzzy, c-format
+msgid "%pB(%pA): internal error: out of range error"
+msgstr "Ralat kaji hurai: Nombor terkeluar dari Julat (mesti kecil daripada  %1)"
+
+#: elf32-arc.c:1931 elf32-rx.c:1496
+#, c-format
+msgid "%pB(%pA): internal error: unsupported relocation error"
+msgstr ""
+
+#: elf32-arc.c:1936 elf32-rx.c:1501
+#, c-format
+msgid "%pB(%pA): internal error: dangerous relocation"
+msgstr ""
+
+#: elf32-arc.c:1941 elf32-rx.c:1506
+#, fuzzy, c-format
+msgid "%pB(%pA): internal error: unknown error"
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#: elf32-arc.c:2035 elf32-arc.c:2103 elf32-arm.c:15637 elf32-metag.c:2250
+#: elf32-nds32.c:5542 elfnn-aarch64.c:7980 elfnn-riscv.c:722
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
+msgstr ""
+
+#: elf32-arc.c:2920
+#, c-format
+msgid "%pB: unknown mandatory ARC object attribute %d"
+msgstr ""
+
+#: elf32-arc.c:2928
+#, c-format
+msgid "warning: %pB: unknown ARC object attribute %d"
+msgstr ""
+
+#: elf32-arm.c:4365 elf32-arm.c:4399 elf32-arm.c:4418 elf32-arm.c:4470
+#, 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 ""
+
+#: elf32-arm.c:4430 elf32-arm.c:4484 elf32-arm.c:9181 elf32-arm.c:9271
+#, c-format
+msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
+msgstr ""
+
+#: elf32-arm.c:4610
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr ""
+
+#: elf32-arm.c:4779
+#, c-format
+msgid "no address assigned to the veneers output section %s"
+msgstr ""
+
+#: elf32-arm.c:4854 elf32-arm.c:7003 elf32-csky.c:3385 elf32-hppa.c:581
+#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14175
+#: elfnn-aarch64.c:3188 elfnn-kvx.c:894
+#, fuzzy, c-format
+msgid "%pB: cannot create stub entry %s"
+msgstr "%s: Tak dapat mencipta symlink ke %s"
+
+#: elf32-arm.c:5075 elf32-csky.c:3727 elf32-hppa.c:731 elf32-hppa.c:760
+#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3344
+#: elf64-ppc.c:12292 elf64-ppc.c:12300 xcofflink.c:4676 elfnn-aarch64.c:3260
+msgid "%F%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr ""
+
+#: elf32-arm.c:6046
+#, c-format
+msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
+msgstr ""
+
+#: elf32-arm.c:6055
+#, c-format
+msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
+msgstr ""
+
+#: elf32-arm.c:6094
+#, c-format
+msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
+msgstr ""
+
+#: elf32-arm.c:6100
+#, fuzzy, c-format
+msgid "%pB: absent standard symbol `%s'"
+msgstr "%s: tiada simbol sedemikian"
+
+#: elf32-arm.c:6112
+#, c-format
+msgid "%pB: `%s' and its special symbol are in different sections"
+msgstr ""
+
+#: elf32-arm.c:6124
+#, fuzzy, c-format
+msgid "%pB: entry function `%s' not output"
+msgstr "Gagal mencari fungsi titik masukan \"%s\" dalam \"%s\": %s"
+
+#: elf32-arm.c:6131
+#, fuzzy, c-format
+msgid "%pB: entry function `%s' is empty"
+msgstr "Fungsi kosong"
+
+#: elf32-arm.c:6260
+#, c-format
+msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
+msgstr ""
+
+#: elf32-arm.c:6309
+#, c-format
+msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
+msgstr ""
+
+#: elf32-arm.c:6331
+#, c-format
+msgid "entry function `%s' disappeared from secure code"
+msgstr ""
+
+#: elf32-arm.c:6355
+#, fuzzy, c-format
+msgid "`%s' refers to a non entry function"
+msgstr "Tuju atau hubungan merujuk pada anak yang tidak wujud"
+
+#: elf32-arm.c:6370
+#, fuzzy, c-format
+msgid "%pB: visibility of symbol `%s' has changed"
+msgstr "Format mel setempat Evolution telah berubah."
+
+#: elf32-arm.c:6379
+#, fuzzy, c-format
+msgid "%pB: incorrect size for symbol `%s'"
+msgstr "Tetapkan &saiz simbol"
+
+#: elf32-arm.c:6398
+#, c-format
+msgid "offset of veneer for entry function `%s' not a multiple of its size"
+msgstr ""
+
+#: elf32-arm.c:6418
+msgid "new entry function(s) introduced but no output import library specified:"
+msgstr ""
+
+#: elf32-arm.c:6426
+#, c-format
+msgid "start address of `%s' is different from previous link"
+msgstr ""
+
+#: elf32-arm.c:7137 elf32-arm.c:7175
+#, fuzzy, c-format
+msgid "unable to find %s glue '%s' for '%s'"
+msgstr "Tak menjumpai fail include: \"%s\""
+
+#: elf32-arm.c:7886
+#, 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:8114
+#, c-format
+msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
+msgstr ""
+
+#: elf32-arm.c:8141
+#, c-format
+msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
+msgstr ""
+
+#: elf32-arm.c:8677 elf32-arm.c:8697 elf32-arm.c:8764 elf32-arm.c:8783
+#, fuzzy, c-format
+msgid "%pB: unable to find %s veneer `%s'"
+msgstr "Tidak dapat mencari \"%s\""
+
+#: elf32-arm.c:8990
+#, 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 ""
+
+#: elf32-arm.c:9088
+#, fuzzy, c-format
+msgid "invalid TARGET2 relocation type '%s'"
+msgstr "Indeks tidak sah untuk jenis %s untuk jenis asa %s"
+
+#. FIXME: We ought to be able to generate thumb-1 PLT
+#. instructions...
+#: elf32-arm.c:9857
+#, c-format
+msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
+msgstr ""
+
+#: elf32-arm.c:10166 elf32-arm.c:10208
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
+msgstr ""
+
+#: elf32-arm.c:10489
+#, c-format
+msgid "warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr ""
+
+#: elf32-arm.c:10494
+#, c-format
+msgid "warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr ""
+
+#: elf32-arm.c:10523
+#, c-format
+msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr ""
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr ""
+
+#: elf32-arm.c:10615
+#, fuzzy
+msgid "shared object"
+msgstr "objek memori terkongsi"
+
+#: elf32-arm.c:10618
+#, fuzzy
+msgid "PIE executable"
+msgstr "Pai"
+
+#: elf32-arm.c:10621
+#, 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:10723
+#, c-format
+msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr ""
+
+#: elf32-arm.c:11140
+#, c-format
+msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr ""
+
+#: elf32-arm.c:11774
+#, c-format
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr ""
+
+#: elf32-arm.c:12049 elf32-arm.c:12075
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
+msgstr ""
+
+#: elf32-arm.c:12121 elf32-csky.c:4955 elf32-m68k.c:3733 elf32-metag.c:1912
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
+msgstr ""
+
+#: elf32-arm.c:12335
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
+msgstr ""
+
+#: elf32-arm.c:12376 elf32-arm.c:12468 elf32-arm.c:12556 elf32-arm.c:12646
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
+msgstr ""
+
+#: elf32-arm.c:12704 elf32-arm.c:12863
+#, fuzzy
+msgid "local symbol index too big"
+msgstr "Tiada simbol untuk indeks"
+
+#: elf32-arm.c:12714 elf32-arm.c:12748
+#, fuzzy
+msgid "no dynamic index information available"
+msgstr "Tidak tersedia bila menggunakan senarai main dinamik"
+
+#: elf32-arm.c:12756
+#, fuzzy
+msgid "invalid dynamic index"
+msgstr "ICO: Indeks ikon tidak sah."
+
+#: elf32-arm.c:12873
+#, fuzzy
+msgid "dynamic index information not available"
+msgstr "Tidak tersedia bila menggunakan senarai main dinamik"
+
+#: elf32-arm.c:13304 elf32-sh.c:3566
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
+msgstr ""
+
+#: elf32-arm.c:13417 elf32-m68k.c:3966 elf32-xtensa.c:2758 elfnn-aarch64.c:7070
+#: elfnn-kvx.c:2568
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
+msgstr ""
+
+#: elf32-arm.c:13419 elf32-m68k.c:3968 elf32-xtensa.c:2760 elfnn-aarch64.c:7072
+#: elfnn-kvx.c:2570
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
+msgstr ""
+
+#: elf32-arm.c:13502 elf32-tic6x.c:2641 elfnn-aarch64.c:7407 elfnn-kvx.c:2797
+#, fuzzy
+msgid "out of range"
+msgstr "Diluar Julat"
+
+#: elf32-arm.c:13506 elf32-pru.c:936 elf32-tic6x.c:2645 elfnn-aarch64.c:7411
+#: elfnn-kvx.c:2801
+#, fuzzy
+msgid "unsupported relocation"
+msgstr " (tidak disokong)"
+
+#: elf32-arm.c:13514 elf32-pru.c:946 elf32-tic6x.c:2653 elfnn-aarch64.c:7419
+#: elfnn-kvx.c:2809
+msgid "unknown error"
+msgstr "ralat tidak diketahui"
+
+#: elf32-arm.c:13991
+#, c-format
+msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
+msgstr ""
+
+#: elf32-arm.c:13995
+#, c-format
+msgid "warning: clearing the interworking flag of %pB due to outside request"
+msgstr ""
+
+#: elf32-arm.c:14040
+#, 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:14127
+#, c-format
+msgid "%pB: unknown mandatory EABI object attribute %d"
+msgstr ""
+
+#: elf32-arm.c:14135
+#, c-format
+msgid "warning: %pB: unknown EABI object attribute %d"
+msgstr ""
+
+#: elf32-arm.c:14470
+#, fuzzy, c-format
+msgid "error: %pB: unknown CPU architecture"
+msgstr "Ralat tidak diketahui"
+
+#: elf32-arm.c:14508
+#, c-format
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
+msgstr ""
+
+#: elf32-arm.c:14605
+#, c-format
+msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr ""
+
+#: elf32-arm.c:14642
+#, c-format
+msgid "error: %pB uses VFP register arguments, %pB does not"
+msgstr ""
+
+#: elf32-arm.c:14812
+#, c-format
+msgid "error: %pB: unable to merge virtualization attributes with %pB"
+msgstr ""
+
+#: elf32-arm.c:14838
+#, c-format
+msgid "error: %pB: conflicting architecture profiles %c/%c"
+msgstr ""
+
+#: elf32-arm.c:14977
+#, fuzzy, c-format
+msgid "warning: %pB: conflicting platform configuration"
+msgstr "Kunci berkonflik dari Conflict1 yang sepatutnya beri satu amaran"
+
+#: elf32-arm.c:14986
+#, fuzzy, c-format
+msgid "error: %pB: conflicting use of R9"
+msgstr "Kunci berkonflik dengan julat 0~5 yang sepatutnya berikan satu ralat"
+
+#: elf32-arm.c:14998
+#, c-format
+msgid "error: %pB: SB relative addressing conflicts with use of R9"
+msgstr ""
+
+#: elf32-arm.c:15011
+#, 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:15042
+#, 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:15054
+#, c-format
+msgid "error: %pB uses iWMMXt register arguments, %pB does not"
+msgstr ""
+
+#: elf32-arm.c:15071
+#, c-format
+msgid "error: fp16 format mismatch between %pB and %pB"
+msgstr ""
+
+#: elf32-arm.c:15107
+#, c-format
+msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr ""
+
+#: elf32-arm.c:15203
+#, fuzzy, c-format
+msgid " [interworking enabled]"
+msgstr "tidak dihidupkan"
+
+#: elf32-arm.c:15211
+#, fuzzy, c-format
+msgid " [VFP float format]"
+msgstr "apung"
+
+#: elf32-arm.c:15213
+#, fuzzy, c-format
+msgid " [FPA float format]"
+msgstr "apung"
+
+#: elf32-arm.c:15216
+#, fuzzy, c-format
+msgid " [floats passed in float registers]"
+msgstr "&Daftar"
+
+#: elf32-arm.c:15219 elf32-arm.c:15304
+#, fuzzy, c-format
+msgid " [position independent]"
+msgstr "Dokumen bebas"
+
+#: elf32-arm.c:15222
+#, fuzzy, c-format
+msgid " [new ABI]"
+msgstr "Baharu"
+
+#: elf32-arm.c:15225
+#, fuzzy, c-format
+msgid " [old ABI]"
+msgstr " tua "
+
+#: elf32-arm.c:15228
+#, fuzzy, c-format
+msgid " [software FP]"
+msgstr "Segerak FP dibenarkan"
+
+#: elf32-arm.c:15236
+#, c-format
+msgid " [Version1 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15239 elf32-arm.c:15250
+#, fuzzy, c-format
+msgid " [sorted symbol table]"
+msgstr "Simbol"
+
+#: elf32-arm.c:15241 elf32-arm.c:15252
+#, fuzzy, c-format
+msgid " [unsorted symbol table]"
+msgstr "Tidak Diisih"
+
+#: elf32-arm.c:15247
+#, c-format
+msgid " [Version2 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15255
+#, fuzzy, c-format
+msgid " [dynamic symbols use segment index]"
+msgstr "Guna kodek bab ditemui dalam segmen."
+
+#: elf32-arm.c:15258
+#, fuzzy, c-format
+msgid " [mapping symbols precede others]"
+msgstr "Simbol"
+
+#: elf32-arm.c:15265
+#, c-format
+msgid " [Version3 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15269
+#, c-format
+msgid " [Version4 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15273
+#, c-format
+msgid " [Version5 EABI]"
+msgstr ""
+
+#: elf32-arm.c:15276
+#, fuzzy, c-format
+msgid " [soft-float ABI]"
+msgstr "Soft"
+
+#: elf32-arm.c:15279
+#, fuzzy, c-format
+msgid " [hard-float ABI]"
+msgstr "Sukar"
+
+#: elf32-arm.c:15285
+#, c-format
+msgid " [BE8]"
+msgstr " [BE8]"
+
+#: elf32-arm.c:15288
+#, c-format
+msgid " [LE8]"
+msgstr " [LE8]"
+
+#: elf32-arm.c:15294
+#, fuzzy, c-format
+msgid " <EABI version unrecognised>"
+msgstr ""
+"perintah tidak dikenali: %s\n"
+"\n"
+
+#: elf32-arm.c:15301
+#, fuzzy, c-format
+msgid " [relocatable executable]"
+msgstr "Skema boleh letak semula"
+
+#: elf32-arm.c:15307
+#, fuzzy, c-format
+msgid " [FDPIC ABI supplement]"
+msgstr "Latin-1 Tambahan"
+
+#: elf32-arm.c:15312 elfnn-aarch64.c:7576
+#, fuzzy, c-format
+msgid " <Unrecognised flag bits set>"
+msgstr "Alamat mempunyai set bit melangkaui panjang awalan"
+
+#: elf32-arm.c:15420 elf32-arm.c:15554 elf32-i386.c:1545 elf32-s390.c:921
+#: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 elf64-s390.c:843
+#: elf64-x86-64.c:2173 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 elfxx-x86.c:971
+#: elfnn-aarch64.c:7847 elfnn-kvx.c:3247 elfnn-loongarch.c:952
+#: elfnn-riscv.c:766
+#, fuzzy, c-format
+msgid "%pB: bad symbol index: %d"
+msgstr "Tiada simbol untuk indeks"
+
+#: elf32-arm.c:15810
+#, c-format
+msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
+msgstr ""
+
+#: elf32-arm.c:17072
+#, fuzzy, c-format
+msgid "errors encountered processing file %pB"
+msgstr "end-of-file tak matang berlaku"
+
+#: elf32-arm.c:17442 elflink.c:13533 elflink.c:13580
+#, fuzzy, c-format
+msgid "could not find section %s"
+msgstr "Gagal mencipta sesi sftp: %s"
+
+#: elf32-arm.c:18397
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr ""
+
+#: elf32-arm.c:18655
+#, 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:18682
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
+msgstr ""
+
+#: elf32-arm.c:19509 elf32-arm.c:19531
+#, fuzzy, c-format
+msgid "%pB: error: VFP11 veneer out of range"
+msgstr "Ralat kaji hurai: Nombor terkeluar dari Julat (mesti kecil daripada  %1)"
+
+#: elf32-arm.c:19582
+#, 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:19621
+#, fuzzy, c-format
+msgid "%pB: error: cannot create STM32L4XX veneer"
+msgstr "Ralat: Tidak dapat cipta fail sementara: %s\n"
+
+#: elf32-arm.c:20704
+#, c-format
+msgid "error: %pB is already in final BE8 format"
+msgstr ""
+
+#: elf32-arm.c:20781
+#, c-format
+msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
+msgstr ""
+
+#: elf32-arm.c:20796
+#, c-format
+msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
+msgstr ""
+
+#: elf32-arm.c:20806
+#, c-format
+msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
+msgstr ""
+
+#: elf32-arm.c:20810
+#, c-format
+msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
+msgstr ""
+
+#: elf32-arm.c:20820 elf32-arm.c:20824
+#, c-format
+msgid "error: %pB uses %s instructions, whereas %pB does not"
+msgstr ""
+
+#: elf32-arm.c:20843
+#, c-format
+msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
+msgstr ""
+
+#: elf32-arm.c:20847
+#, c-format
+msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
+msgstr ""
+
+#: elf32-arm.c:20861
+#, c-format
+msgid "warning: %pB supports interworking, whereas %pB does not"
+msgstr ""
+
+#: elf32-arm.c:20867
+#, c-format
+msgid "warning: %pB does not support interworking, whereas %pB does"
+msgstr ""
+
+#: elf32-avr.c:1503
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr ""
+
+#: elf32-avr.c:1511
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr ""
+
+#: elf32-avr.c:1519
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr ""
+
+#: elf32-avr.c:3335 elfnn-aarch64.c:3219
+#, fuzzy, c-format
+msgid "cannot create stub entry %s"
+msgstr "Tidak dapat cipta folder '%s'"
+
+#: elf32-bfin.c:107 elf32-bfin.c:364
+#, fuzzy
+msgid "relocation should be even number"
+msgstr "Jumlah aksara genap diperlukan"
+
+#: elf32-bfin.c:1589
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
+msgstr ""
+
+#: elf32-bfin.c:1621 elf32-i386.c:3543 elf32-m68k.c:4006 elf32-s390.c:3130
+#: elf64-s390.c:3205 elf64-x86-64.c:4619
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
+msgstr ""
+
+#: elf32-bfin.c:2646
+#, c-format
+msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
+msgstr ""
+
+#: elf32-bfin.c:2663
+#, fuzzy
+msgid "relocation references symbol not defined in the module"
+msgstr "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai hukum"
+
+#: elf32-bfin.c:2761
+msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
+msgstr ""
+
+#: elf32-bfin.c:2801 elf32-bfin.c:2922
+#, fuzzy
+msgid "cannot emit fixups in read-only section"
+msgstr "Peristiwa tidak boleh disunting, kerana kalendar terpilih adalah baca sahaja"
+
+#: elf32-bfin.c:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4384
+msgid "cannot emit dynamic relocations in read-only section"
+msgstr ""
+
+#: elf32-bfin.c:2881
+msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
+msgstr ""
+
+#: elf32-bfin.c:3044
+#, fuzzy
+msgid "relocations between different segments are not supported"
+msgstr "Operasi tidak disokong, fail berada pada lekap berbeza"
+
+#: elf32-bfin.c:3045
+msgid "warning: relocation references a different segment"
+msgstr ""
+
+#: elf32-bfin.c:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3377
+#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:938 elf64-bpf.c:348
+#: elf64-mmix.c:1545 elfxx-tilegx.c:3750
+#, fuzzy
+msgid "internal error: dangerous relocation"
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4728 elf32-cris.c:3860 elf32-m68hc1x.c:1414 elf32-m68k.c:1264
+#: elf32-score.c:3984 elf32-score7.c:3791 elf32-vax.c:534 elf32-xgate.c:494
+#: elfxx-mips.c:16366
+#, fuzzy, c-format
+msgid "private flags = %lx:"
+msgstr "Persendirian"
+
+#: elf32-bfin.c:4779 elf32-frv.c:6585
+#, c-format
+msgid "%pB: cannot link non-fdpic object file into fdpic executable"
+msgstr ""
+
+#: elf32-bfin.c:4783 elf32-frv.c:6589
+#, c-format
+msgid "%pB: cannot link fdpic object file into non-fdpic executable"
+msgstr ""
+
+#: elf32-bfin.c:4919
+#, fuzzy, c-format
+msgid "*** check this relocation %s"
+msgstr "Tidak dapat memeriksa folder: %s: %s"
+
+#: elf32-bfin.c:5034
+msgid "the bfin target does not currently support the generation of copy relocations"
+msgstr ""
+
+#: elf32-bfin.c:5329 elf32-cr16.c:2720 elf32-m68k.c:4420
+#, fuzzy
+msgid "unsupported relocation type"
+msgstr "Jenis Python tidak disokong: %s"
+
+#: elf32-cris.c:1119
+#, c-format
+msgid "%pB, section %pA: unresolvable relocation %s against symbol `%s'"
+msgstr ""
+
+#: elf32-cris.c:1184
+#, c-format
+msgid "%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'"
+msgstr ""
+
+#: elf32-cris.c:1187
+#, c-format
+msgid "%pB, section %pA: no PLT for relocation %s against symbol `%s'"
+msgstr ""
+
+#: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
+#: elf32-cris.c:1827 elf32-tic6x.c:2552
+#, fuzzy
+msgid "[whose name is lost]"
+msgstr "Nama '%s' hilang dalam dbus mesej."
+
+#: elf32-cris.c:1311 elf32-tic6x.c:2536
+#, 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:2545
+#, c-format
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
+msgstr ""
+
+#: elf32-cris.c:1347
+#, c-format
+msgid "%pB, section %pA: relocation %s is not allowed for global symbol: `%s'"
+msgstr ""
+
+#: elf32-cris.c:1364
+#, c-format
+msgid "%pB, section %pA: relocation %s with no GOT created"
+msgstr ""
+
+#. We shouldn't get here for GCC-emitted code.
+#: elf32-cris.c:1581
+#, c-format
+msgid "%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?"
+msgstr ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: elf32-cris.c:2008
+msgid "(too many global variables for -fpic: recompile with -fPIC)"
+msgstr ""
+
+#: elf32-cris.c:2015
+msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)"
+msgstr ""
+
+#: elf32-cris.c:3048
+#, c-format
+msgid "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
+msgstr ""
+
+#: elf32-cris.c:3102
+#, c-format
+msgid ""
+"%pB, section %pA:\n"
+"  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC"
+msgstr ""
+
+#: elf32-cris.c:3320
+#, c-format
+msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
+msgstr ""
+
+#: elf32-cris.c:3699
+#, 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:3811
+#, fuzzy
+msgid "unexpected machine number"
+msgstr "Nombor pemacu %1 tak dijangka."
+
+#: elf32-cris.c:3863
+#, fuzzy, c-format
+msgid " [symbols have a _ prefix]"
+msgstr "Pengenalpasti pulsar mempunyai awalan 'PSR'"
+
+#: elf32-cris.c:3866
+#, c-format
+msgid " [v10 and v32]"
+msgstr ""
+
+#: elf32-cris.c:3869
+#, c-format
+msgid " [v32]"
+msgstr " [v32]"
+
+#: elf32-cris.c:3913
+#, c-format
+msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
+msgstr ""
+
+#: elf32-cris.c:3914
+#, c-format
+msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
+msgstr ""
+
+#: elf32-cris.c:3933
+#, c-format
+msgid "%pB contains CRIS v32 code, incompatible with previous objects"
+msgstr ""
+
+#: elf32-cris.c:3935
+#, c-format
+msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
+msgstr ""
+
+#: elf32-csky.c:2016
+#, fuzzy
+msgid "GOT table size out of range"
+msgstr "Diluar Julat"
+
+#: elf32-csky.c:2826
+#, c-format
+msgid "warning: unrecognized arch eflag '%#lx'"
+msgstr ""
+
+#: elf32-csky.c:2849
+#, fuzzy, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr "nama (x,y)"
+
+#: elf32-csky.c:2914 elf32-csky.c:3074
+#, c-format
+msgid "%pB: machine flag conflict with target"
+msgstr ""
+
+#: elf32-csky.c:2927
+#, c-format
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr ""
+
+#: elf32-csky.c:2956
+#, c-format
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr ""
+
+#: elf32-csky.c:2973
+#, c-format
+msgid "Error: %pB and %pB has different DSP version"
+msgstr ""
+
+#: elf32-csky.c:2991
+#, c-format
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr ""
+
+#: elf32-csky.c:3088
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr ""
+
+#. The r_type is error, not support it.
+#: elf32-csky.c:4327 elf32-i386.c:344
+#, fuzzy, c-format
+msgid "%pB: unsupported relocation type: %#x"
+msgstr "TYPE(x)"
+
+#: elf32-dlx.c:141
+#, c-format
+msgid "branch (PC rel16) to section (%s) not supported"
+msgstr ""
+
+#: elf32-dlx.c:204
+#, c-format
+msgid "jump (PC rel26) to section (%s) not supported"
+msgstr ""
+
+#. Only if it's not an unresolved symbol.
+#: elf32-epiphany.c:570 elf32-ip2k.c:1485
+msgid "unsupported relocation between data/insn address spaces"
+msgstr ""
+
+#: elf32-frv.c:1452 elf32-frv.c:1603
+#, fuzzy
+msgid "relocation requires zero addend"
+msgstr "Sifar"
+
+#: elf32-frv.c:2832
+#, c-format
+msgid "%H: relocation to `%s+%v' may have caused the error above\n"
+msgstr ""
+
+#: elf32-frv.c:2849
+msgid "%H: relocation references symbol not defined in the module\n"
+msgstr ""
+
+#: elf32-frv.c:2925
+msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
+msgstr ""
+
+#: elf32-frv.c:2966
+msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3037
+msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3074
+msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3121
+msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3205
+msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3259
+msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3289
+msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3318
+msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3348
+msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3393
+msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3420
+msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
+msgstr ""
+
+#: elf32-frv.c:3541 elf32-frv.c:3661
+msgid "%H: %s references dynamic symbol with nonzero addend\n"
+msgstr ""
+
+#: elf32-frv.c:3582 elf32-frv.c:3703
+msgid "%H: cannot emit fixups in read-only section\n"
+msgstr ""
+
+#: elf32-frv.c:3612 elf32-frv.c:3745
+msgid "%H: cannot emit dynamic relocations in read-only section\n"
+msgstr ""
+
+#: elf32-frv.c:3917
+#, c-format
+msgid "%H: reloc against `%s' references a different segment\n"
+msgstr ""
+
+#: elf32-frv.c:4068
+#, fuzzy, c-format
+msgid "%H: reloc against `%s': %s\n"
+msgstr "%s j %s"
+
+#: elf32-frv.c:6496
+#, c-format
+msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
+msgstr ""
+
+#: elf32-frv.c:6550 elf32-iq2000.c:830 elf32-m32c.c:876
+#, fuzzy, c-format
+msgid "%pB: compiled with %s and linked with modules compiled with %s"
+msgstr "Dia Versi %s dikompil %s, %s\n"
+
+#: elf32-frv.c:6563
+#, c-format
+msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
+msgstr ""
+
+#: elf32-gen.c:71
+#, c-format
+msgid "%pB: relocations in generic ELF (EM: %d)"
+msgstr ""
+
+#: elf32-hppa.c:862 elf32-hppa.c:3402
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
+msgstr ""
+
+#: elf32-hppa.c:1240
+#, c-format
+msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
+msgstr ""
+
+#: elf32-hppa.c:2579
+#, fuzzy, c-format
+msgid "%pB: duplicate export stub %s"
+msgstr "%s Pb"
+
+#: elf32-hppa.c:3235
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
+msgstr ""
+
+#: elf32-hppa.c:3455
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)"
+msgstr ""
+
+#: elf32-hppa.c:3474
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)"
+msgstr ""
+
+#: elf32-hppa.c:4089
+#, c-format
+msgid "%s has both normal and TLS relocs"
+msgstr ""
+
+#: elf32-hppa.c:4107
+#, c-format
+msgid "%pB:%s has both normal and TLS relocs"
+msgstr ""
+
+#: elf32-hppa.c:4166
+#, fuzzy, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
+msgstr "Caja tidak dapat mengendali lokasi \"%s\"."
+
+#: elf32-hppa.c:4470
+msgid ".got section not immediately after .plt section"
+msgstr ""
+
+#: elf32-i386.c:1296
+#, 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:1729 elf32-s390.c:1149 elf32-sh.c:5498 elf32-tilepro.c:1546
+#: elf32-xtensa.c:1261 elf64-s390.c:1081 elfxx-sparc.c:1555 elfxx-tilegx.c:1766
+#: elfnn-loongarch.c:741 elfnn-riscv.c:673
+#, c-format
+msgid "%pB: `%s' accessed both as normal and thread local symbol"
+msgstr ""
+
+#: elf32-i386.c:1801
+#, c-format
+msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
+msgstr ""
+
+#: elf32-i386.c:1856 elf64-x86-64.c:2567
+#, c-format
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr ""
+
+#: elf32-i386.c:2419 elf64-x86-64.c:3050 elfnn-riscv.c:2544
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
+msgstr ""
+
+#: elf32-i386.c:2452 elf32-i386.c:3752 elf32-i386.c:3900 elf64-x86-64.c:3107
+#: elf64-x86-64.c:4790 elf64-x86-64.c:4958 elfnn-riscv.c:2406
+#: elfnn-riscv.c:3318 elfnn-riscv.c:3392
+#, fuzzy, c-format
+msgid "Local IFUNC function `%s' in %pB\n"
+msgstr "%s Pb"
+
+#: elf32-i386.c:2630
+#, 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:2665 elf64-x86-64.c:3324
+#, fuzzy
+msgid "hidden symbol"
+msgstr "Tersembunyi"
+
+#: elf32-i386.c:2668 elf64-x86-64.c:3327
+#, fuzzy
+msgid "internal symbol"
+msgstr "Dalaman"
+
+#: elf32-i386.c:2671 elf64-x86-64.c:3330
+#, fuzzy
+msgid "protected symbol"
+msgstr "Dilindungi"
+
+#: elf32-i386.c:2674 elf64-x86-64.c:3333
+#, fuzzy
+msgid "symbol"
+msgstr "Simbol"
+
+#: elf32-i386.c:2680
+#, 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:2693
+#, c-format
+msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
+msgstr ""
+
+#: elf32-i386.c:4103 elf64-x86-64.c:5169
+msgid "%F%P: discarded output section: `%pA'\n"
+msgstr ""
+
+#: 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:878 elf32-ip2k.c:961
+msgid "ip2k relaxer: switch table header corrupt."
+msgstr ""
+
+#: elf32-ip2k.c:1298
+#, c-format
+msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr ""
+
+#: elf32-ip2k.c:1317
+#, c-format
+msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr ""
+
+#: elf32-lm32.c:608
+msgid "global pointer relative relocation when _gp not defined"
+msgstr ""
+
+#: elf32-lm32.c:663
+msgid "global pointer relative address out of range"
+msgstr ""
+
+#: elf32-lm32.c:959
+#, fuzzy, c-format
+msgid "internal error: addend should be zero for %s"
+msgstr "Ralat Dalaman, kiraan bukan-sifar"
+
+#: elf32-m32r.c:1461
+msgid "SDA relocation when _SDA_BASE_ not defined"
+msgstr ""
+
+#: elf32-m32r.c:2776 elf32-microblaze.c:1147 elf32-microblaze.c:1195
+#, c-format
+msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
+msgstr ""
+
+#: elf32-m32r.c:3277
+#, c-format
+msgid "%pB: instruction set mismatch with previous modules"
+msgstr ""
+
+#: elf32-m32r.c:3298 elf32-nds32.c:6899
+#, fuzzy, c-format
+msgid "private flags = %lx"
+msgstr "Persendirian"
+
+#: elf32-m32r.c:3303
+#, fuzzy, c-format
+msgid ": m32r instructions"
+msgstr "Arahan"
+
+#: elf32-m32r.c:3304
+#, fuzzy, c-format
+msgid ": m32rx instructions"
+msgstr "Arahan"
+
+#: elf32-m32r.c:3305
+#, fuzzy, c-format
+msgid ": m32r2 instructions"
+msgstr "Arahan"
+
+#: elf32-m68hc1x.c:1134
+#, c-format
+msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
+msgstr ""
+
+#: elf32-m68hc1x.c:1165
+#, 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:1181
+#, 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:1196
+#, c-format
+msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
+msgstr ""
+
+#: elf32-m68hc1x.c:1232
+#, 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:1356
+#, c-format
+msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
+msgstr ""
+
+#: elf32-m68hc1x.c:1363
+#, c-format
+msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
+msgstr ""
+
+#: elf32-m68hc1x.c:1372
+#, c-format
+msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
+msgstr ""
+
+#: elf32-m68hc1x.c:1417 elf32-xgate.c:497
+#, fuzzy, c-format
+msgid "[abi=32-bit int, "
+msgstr "32-bit"
+
+#: elf32-m68hc1x.c:1419 elf32-xgate.c:499
+#, fuzzy, c-format
+msgid "[abi=16-bit int, "
+msgstr "16-bit"
+
+#: elf32-m68hc1x.c:1422 elf32-xgate.c:502
+#, fuzzy, c-format
+msgid "64-bit double, "
+msgstr "64-bit"
+
+#: elf32-m68hc1x.c:1424 elf32-xgate.c:504
+#, fuzzy, c-format
+msgid "32-bit double, "
+msgstr "32-bit"
+
+#: elf32-m68hc1x.c:1427
+#, c-format
+msgid "cpu=HC11]"
+msgstr "cpu=HC11]"
+
+#: elf32-m68hc1x.c:1429
+#, c-format
+msgid "cpu=HCS12]"
+msgstr "cpu=HCS12]"
+
+#: elf32-m68hc1x.c:1431
+#, c-format
+msgid "cpu=HC12]"
+msgstr "cpu=HC12]"
+
+#: elf32-m68hc1x.c:1434
+#, fuzzy, c-format
+msgid " [memory=bank-model]"
+msgstr "Bank"
+
+#: elf32-m68hc1x.c:1436
+#, fuzzy, c-format
+msgid " [memory=flat]"
+msgstr "Rata."
+
+#: elf32-m68hc1x.c:1439
+#, fuzzy, c-format
+msgid " [XGATE RAM offsetting]"
+msgstr "Kayu pelantak."
+
+#: elf32-m68k.c:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr ""
+
+#: elf32-m68k.c:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105
+msgid "unknown"
+msgstr "tidak diketahui"
+
+#: elf32-m68k.c:1730
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
+msgstr ""
+
+#: elf32-m68k.c:1737
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
+msgstr ""
+
+#. Pacify gcc -Wall.
+#: elf32-mep.c:139
+#, fuzzy, c-format
+msgid "mep: no reloc for code %d"
+msgstr "%d kod kemunculan"
+
+#: elf32-mep.c:146
+#, fuzzy, c-format
+msgid "MeP: howto %d has type %d"
+msgstr "$$ untuk hukum pertengahan pada $%d bagi %s tidak mempunyai jenis yang diisytiharkan"
+
+#: elf32-mep.c:618
+#, fuzzy, c-format
+msgid "%pB and %pB are for different cores"
+msgstr "%1 PB"
+
+#: elf32-mep.c:637
+#, fuzzy, c-format
+msgid "%pB and %pB are for different configurations"
+msgstr "%1 PB"
+
+#: elf32-mep.c:675
+#, fuzzy, c-format
+msgid "private flags = 0x%lx"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n"
+"\n"
+
+#: elf32-metag.c:1856
+#, c-format
+msgid "%pB(%pA): multiple TLS models are not supported"
+msgstr ""
+
+#: elf32-metag.c:1859
+#, c-format
+msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
+msgstr ""
+
+#: elf32-microblaze.c:1590 elf32-tilepro.c:3018 elfxx-sparc.c:3442
+#: elfxx-tilegx.c:3415
+#, fuzzy, c-format
+msgid "%pB: probably compiled without -fPIC?"
+msgstr "Boxes telah dikompil tanpa sokongan RDP"
+
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334
+#, fuzzy
+msgid "literal relocation occurs for an external symbol"
+msgstr "rentetan literal %s tidak dikepilkan pada simbol"
+
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
+msgid "32bits gp relative relocation occurs for an external symbol"
+msgstr ""
+
+#: elf32-msp430.c:914
+#, c-format
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr ""
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
+msgid "try enabling relaxation to avoid relocation truncations"
+msgstr ""
+
+#: elf32-msp430.c:1506
+msgid "internal error: branch/jump to an odd address detected"
+msgstr ""
+
+#: elf32-msp430.c:2673
+#, c-format
+msgid "warning: %pB: unknown MSPABI object attribute %d"
+msgstr ""
+
+#: elf32-msp430.c:2774
+#, c-format
+msgid "error: %pB uses %s instructions but %pB uses %s"
+msgstr ""
+
+#: elf32-msp430.c:2786
+#, c-format
+msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
+msgstr ""
+
+#: elf32-msp430.c:2799
+#, c-format
+msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
+msgstr ""
+
+#: elf32-msp430.c:2810
+#, c-format
+msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
+msgstr ""
+
+#: elf32-msp430.c:2823
+#, c-format
+msgid "error: %pB uses the small code model but %pB uses the %s data model"
+msgstr ""
+
+#: elf32-msp430.c:2835
+#, c-format
+msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
+msgstr ""
+
+#: elf32-msp430.c:2860
+#, c-format
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr ""
+
+#: elf32-nds32.c:3673
+#, fuzzy, c-format
+msgid "error: can't find symbol: %s"
+msgstr "Kami tidak menemui simbol \"%s\""
+
+#: elf32-nds32.c:5572
+#, c-format
+msgid "%pB: warning: %s unsupported in shared mode"
+msgstr ""
+
+#: elf32-nds32.c:5698
+#, c-format
+msgid "%pB: warning: unaligned access to GOT entry"
+msgstr ""
+
+#: elf32-nds32.c:5739
+#, c-format
+msgid "%pB: warning: relocate SDA_BASE failed"
+msgstr ""
+
+#: elf32-nds32.c:5761
+#, c-format
+msgid "%pB(%pA): warning: unaligned small data access of type %d"
+msgstr ""
+
+#: elf32-nds32.c:6687
+#, c-format
+msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
+msgstr ""
+
+#: elf32-nds32.c:6735
+#, c-format
+msgid "%pB: warning: endian mismatch with previous modules"
+msgstr ""
+
+#: elf32-nds32.c:6749
+#, c-format
+msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
+msgstr ""
+
+#: elf32-nds32.c:6837
+#, c-format
+msgid "%pB: error: ABI mismatch with previous modules"
+msgstr ""
+
+#: elf32-nds32.c:6847
+#, c-format
+msgid "%pB: error: instruction set mismatch with previous modules"
+msgstr ""
+
+#: elf32-nds32.c:6874
+#, c-format
+msgid "%pB: warning: incompatible elf-versions %s and %s"
+msgstr ""
+
+#: elf32-nds32.c:6905
+#, fuzzy, c-format
+msgid ": n1 instructions"
+msgstr "Arahan"
+
+#: elf32-nds32.c:6908
+#, fuzzy, c-format
+msgid ": n1h instructions"
+msgstr "Arahan"
+
+#: elf32-nds32.c:9357
+#, c-format
+msgid "%pB: error: search_nds32_elf_blank reports wrong node"
+msgstr ""
+
+#: elf32-nds32.c:9621
+#, c-format
+msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
+msgstr ""
+
+#: elf32-nds32.c:12886
+#, c-format
+msgid "%pB: nested OMIT_FP in %pA"
+msgstr ""
+
+#: elf32-nds32.c:12905
+#, c-format
+msgid "%pB: unmatched OMIT_FP in %pA"
+msgstr ""
+
+#: elf32-or1k.c:1256
+#, c-format
+msgid "%pB: Cannot handle relocation value size of %d"
+msgstr ""
+
+#: elf32-or1k.c:1375
+#, fuzzy, c-format
+msgid "%pB: unknown relocation type %d"
+msgstr "Jenis objek tak diketahui %d\n"
+
+#: elf32-or1k.c:1429
+#, c-format
+msgid "%pB: addend should be zero for plt relocations"
+msgstr ""
+
+#: elf32-or1k.c:1542
+#, c-format
+msgid "%pB: addend should be zero for got relocations"
+msgstr ""
+
+#: elf32-or1k.c:1559
+#, c-format
+msgid "%pB: gotoff relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf32-or1k.c:1573 elf32-or1k.c:1588 elf64-alpha.c:4409 elf64-alpha.c:4553
+#, c-format
+msgid "%pB: pc-relative relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf32-or1k.c:1602
+#, c-format
+msgid "%pB: non-pic relocation against symbol %s"
+msgstr ""
+
+#: elf32-or1k.c:1686
+#, fuzzy, c-format
+msgid "%pB: support for local dynamic not implemented"
+msgstr "Fail yang mengandungi berkas sokongan akan dimuat turun ke sistem domestik."
+
+#: elf32-or1k.c:1865
+#, c-format
+msgid "%pB: will not resolve runtime TLS relocation"
+msgstr ""
+
+#: elf32-or1k.c:2199
+#, fuzzy, c-format
+msgid "%pB: bad relocation section name `%s'"
+msgstr "Nama petimel teruk untuk tapisan: %s"
+
+#: elf32-or1k.c:3312
+#, c-format
+msgid "%pB: %s flag mismatch with previous modules"
+msgstr ""
+
+#: elf32-ppc.c:990 elf64-ppc.c:1753
+#, fuzzy, c-format
+msgid "generic linker can't handle %s"
+msgstr "Tidak boleh mengendalikan lokasi \"%s:\"."
+
+#: elf32-ppc.c:1627
+#, fuzzy, c-format
+msgid "corrupt %s section in %pB"
+msgstr "%s Pb"
+
+#: elf32-ppc.c:1646
+#, fuzzy, c-format
+msgid "unable to read in %s section from %pB"
+msgstr "Tidak boleh baca dari: %s"
+
+#: elf32-ppc.c:1688
+#, c-format
+msgid "warning: unable to set size of %s section in %pB"
+msgstr ""
+
+#: elf32-ppc.c:1737
+msgid "failed to allocate space for new APUinfo section"
+msgstr ""
+
+#: elf32-ppc.c:1756
+#, fuzzy
+msgid "failed to compute new APUinfo section"
+msgstr "Anda tidak boleh menambah direktori baru pada seksyen ini."
+
+#: elf32-ppc.c:1759
+#, fuzzy
+msgid "failed to install new APUinfo section"
+msgstr "Gagal memasang: pengesahihan tidak sah"
+
+#: elf32-ppc.c:2867
+#, c-format
+msgid "%pB: relocation %s cannot be used when making a shared object"
+msgstr ""
+
+#: elf32-ppc.c:3586 elf32-ppc.c:3594
+#, c-format
+msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
+msgstr ""
+
+#: elf32-ppc.c:3616 elf32-ppc.c:3624
+#, c-format
+msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
+msgstr ""
+
+#: elf32-ppc.c:3632 elf32-ppc.c:3640
+#, c-format
+msgid "%pB uses IBM long double, %pB uses IEEE long double"
+msgstr ""
+
+#: elf32-ppc.c:3707 elf32-ppc.c:3716
+#, c-format
+msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
+msgstr ""
+
+#: elf32-ppc.c:3745 elf32-ppc.c:3754
+#, c-format
+msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
+msgstr ""
+
+#: elf32-ppc.c:3818
+#, c-format
+msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr ""
+
+#: elf32-ppc.c:3826
+#, c-format
+msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr ""
+
+#: elf32-ppc.c:3897
+#, c-format
+msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
+msgstr ""
+
+#: elf32-ppc.c:3916
+#, c-format
+msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
+msgstr ""
+
+#: elf32-ppc.c:4026
+#, c-format
+msgid "bss-plt forced due to %pB"
+msgstr ""
+
+#: elf32-ppc.c:4028
+#, fuzzy
+msgid "bss-plt forced by profiling"
+msgstr "Paksa Dihidupkan"
+
+#: elf32-ppc.c:4606 elf64-ppc.c:8516
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr ""
+
+#. 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:4636 elf64-ppc.c:8581
+#, c-format
+msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
+msgstr ""
+
+#: elf32-ppc.c:5564 elf32-sh.c:3018 elf32-tilepro.c:2245 elfxx-sparc.c:2454
+#: elfxx-tilegx.c:2494
+#, c-format
+msgid "%pB: dynamic relocation in read-only section `%pA'\n"
+msgstr ""
+
+#: elf32-ppc.c:6510
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr ""
+
+#: elf32-ppc.c:7463
+msgid "%P: %H: error: %s with unexpected instruction %x\n"
+msgstr ""
+
+#: elf32-ppc.c:7501
+#, fuzzy
+msgid "%H: fixup branch overflow\n"
+msgstr "Rekod melimpah"
+
+#: elf32-ppc.c:7541 elf32-ppc.c:7579
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
+msgstr ""
+
+#: elf32-ppc.c:7643
+#, c-format
+msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
+msgstr ""
+
+#: elf32-ppc.c:7679
+#, fuzzy, c-format
+msgid "%pB: reloc %#x unsupported"
+msgstr "%1 PB"
+
+#: elf32-ppc.c:7962
+#, c-format
+msgid "%H: non-zero addend on %s reloc against `%s'\n"
+msgstr ""
+
+#. @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:7994
+#, c-format
+msgid "%X%H: @local call to ifunc %s\n"
+msgstr ""
+
+#: elf32-ppc.c:8172
+#, c-format
+msgid "%H: relocation %s for indirect function %s unsupported\n"
+msgstr ""
+
+#: elf32-ppc.c:8510 elf32-ppc.c:8541 elf32-ppc.c:8644 elf32-ppc.c:8744
+#, c-format
+msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
+msgstr ""
+
+#: elf32-ppc.c:8922 elf32-ppc.c:8943
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr ""
+
+#: elf32-ppc.c:9025
+#, fuzzy, c-format
+msgid "%H: error: %s against `%s' not a multiple of %u\n"
+msgstr "Kod ralat %u ketika menyisip satu masukan: %s"
+
+#: elf32-ppc.c:9054
+#, c-format
+msgid "%H: unresolvable %s relocation against symbol `%s'\n"
+msgstr ""
+
+#: elf32-ppc.c:9136
+#, fuzzy, c-format
+msgid "%H: %s reloc against `%s': error %d\n"
+msgstr ""
+"\n"
+"%02d h %02d j %02d min pada: %s"
+
+#: elf32-ppc.c:10018
+msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
+msgstr ""
+
+#: elf32-ppc.c:10022 elf64-ppc.c:18320
+msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
+msgstr ""
+
+#: elf32-ppc.c:10067
+#, fuzzy, c-format
+msgid "%s not defined in linker created %pA"
+msgstr "Port %s/%s tidak dinyatakan"
+
+#: elf32-pru.c:582 elf32-pru.c:1477
+#, c-format
+msgid "error: %pB: old incompatible object file detected"
+msgstr ""
+
+#: elf32-pru.c:931
+#, fuzzy
+msgid "relocation out of range"
+msgstr "Diluar Julat"
+
+#: elf32-pru.c:941 elf32-tic6x.c:2649
+#, fuzzy
+msgid "dangerous relocation"
+msgstr "Cuba Sekat _Tapak Sesawang Merbahaya"
+
+#: elf32-rl78.c:551
+#, fuzzy
+msgid "RL78 reloc stack overflow/underflow"
+msgstr "tindanan melimpah"
+
+#: elf32-rl78.c:555
+#, fuzzy
+msgid "RL78 reloc divide by zero"
+msgstr "Bahagi [/]"
+
+#: elf32-rl78.c:1069
+#, fuzzy
+msgid "warning: RL78_SYM reloc with an unknown symbol"
+msgstr "Jenis amaran tidak diketahui"
+
+#: elf32-rl78.c:1115
+#, fuzzy
+msgid "%H: %s out of range\n"
+msgstr "integer diluar julat: %s"
+
+#: elf32-rl78.c:1122
+#, fuzzy
+msgid "%H: relocation type %u is not supported\n"
+msgstr "%U pada %h"
+
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr ""
+
+#: elf32-rl78.c:1220
+#, c-format
+msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
+msgstr ""
+
+#: elf32-rl78.c:1237
+#, c-format
+msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
+msgstr ""
+
+#: elf32-rl78.c:1246
+msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
+msgstr ""
+
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
+#, fuzzy, c-format
+msgid "- %pB is 64-bit, %pB is not"
+msgstr "%1 PB"
+
+#: elf32-rl78.c:1281
+#, fuzzy, c-format
+msgid " [64-bit doubles]"
+msgstr "64-bit"
+
+#: elf32-rx.c:618
+#, c-format
+msgid "%pB:%pA: table entry %s outside table"
+msgstr ""
+
+#: elf32-rx.c:625
+#, c-format
+msgid "%pB:%pA: table entry %s not word-aligned within table"
+msgstr ""
+
+#: elf32-rx.c:700
+#, c-format
+msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
+msgstr ""
+
+#. 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:720
+#, c-format
+msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
+msgstr ""
+
+#: elf32-rx.c:1304
+msgid "warning: RX_SYM reloc with an unknown symbol"
+msgstr ""
+
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr ""
+
+#: elf32-rx.c:3185
+#, c-format
+msgid "there is a conflict merging the ELF header flags from %pB"
+msgstr ""
+
+#: elf32-rx.c:3188
+#, fuzzy, c-format
+msgid "  the input  file's flags: %s"
+msgstr "%s: fail input adalah fail output"
+
+#: elf32-rx.c:3190
+#, fuzzy, c-format
+msgid "  the output file's flags: %s"
+msgstr "%s: fail input adalah fail output"
+
+#: elf32-rx.c:3797
+#, c-format
+msgid "%pB:%pA: table %s missing corresponding %s"
+msgstr ""
+
+#: elf32-rx.c:3805
+#, c-format
+msgid "%pB:%pA: %s and %s must be in the same input section"
+msgstr ""
+
+#: elf32-s390.c:2005 elf64-s390.c:1974
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
+msgstr ""
+
+#: elf32-score.c:1505 elf32-score7.c:1368 elfxx-mips.c:3868
+msgid "not enough GOT space for local GOT entries"
+msgstr ""
+
+#: elf32-score.c:2737
+#, fuzzy
+msgid "address not word aligned"
+msgstr "_Biar Dijajar"
+
+#: elf32-score.c:2818 elf32-score7.c:2625
+#, c-format
+msgid "%pB: malformed reloc detected for section %pA"
+msgstr ""
+
+#: elf32-score.c:2872 elf32-score7.c:2679
+#, c-format
+msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
+msgstr ""
+
+#: elf32-score.c:3481 elf32-score7.c:3292 elfxx-mips.c:11175
+#, c-format
+msgid "%pB: cannot handle more than %d dynamic symbols"
+msgstr ""
+
+#: elf32-score.c:3987 elf32-score7.c:3794
+#, c-format
+msgid " [pic]"
+msgstr ""
+
+#: elf32-score.c:3991 elf32-score7.c:3798
+#, fuzzy, c-format
+msgid " [fix dep]"
+msgstr "A-DEP"
+
+#: elf32-score.c:4038 elf32-score7.c:3845
+#, c-format
+msgid "%pB: warning: linking PIC files with non-PIC files"
+msgstr ""
+
+#: elf32-sh.c:533
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
+msgstr ""
+
+#: elf32-sh.c:3753
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
+msgstr ""
+
+#: elf32-sh.c:3783 elf32-sh.c:3799
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
+msgstr ""
+
+#: elf32-sh.c:3815
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
+msgstr ""
+
+#: elf32-sh.c:3831
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
+msgstr ""
+
+#: elf32-sh.c:3961 elf32-sh.c:4356
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
+msgstr ""
+
+#: elf32-sh.c:4459
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
+msgstr ""
+
+#: elf32-sh.c:4578
+#, c-format
+msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
+msgstr ""
+
+#. The backslash is to prevent bogus trigraph detection.
+#: elf32-sh.c:4596
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
+msgstr ""
+
+#: elf32-sh.c:4604
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
+msgstr ""
+
+#: elf32-sh.c:4611
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
+msgstr ""
+
+#: elf32-sh.c:4618
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
+msgstr ""
+
+#: elf32-sh.c:4625
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
+msgstr ""
+
+#: elf32-sh.c:4632
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
+msgstr ""
+
+#: elf32-sh.c:4667
+#, c-format
+msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
+msgstr ""
+
+#: elf32-sh.c:4685
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
+msgstr ""
+
+#: elf32-sh.c:4694
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
+msgstr ""
+
+#: elf32-sh.c:4701
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
+msgstr ""
+
+#: elf32-sh.c:4816
+#, c-format
+msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
+msgstr ""
+
+#: elf32-sh.c:4884
+#, c-format
+msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
+msgstr ""
+
+#: elf32-sh.c:5012
+#, c-format
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
+msgstr ""
+
+#: elf32-sh.c:5019
+#, c-format
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
+msgstr ""
+
+#: elf32-sh.c:5487 elf32-sh.c:5569
+#, c-format
+msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
+msgstr ""
+
+#: elf32-sh.c:5493 elf32-sh.c:5574
+#, c-format
+msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
+msgstr ""
+
+#: elf32-sh.c:5524
+#, c-format
+msgid "%pB: Function descriptor relocation with non-zero addend"
+msgstr ""
+
+#: elf32-sh.c:5731 elf64-alpha.c:4645
+#, c-format
+msgid "%pB: TLS local exec code cannot be linked into shared objects"
+msgstr ""
+
+#: elf32-sh.c:5846
+#, c-format
+msgid "%pB: uses %s instructions while previous modules use %s instructions"
+msgstr ""
+
+#: elf32-sh.c:5858
+#, c-format
+msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
+msgstr ""
+
+#: elf32-sh.c:5899
+#, c-format
+msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
+msgstr ""
+
+#: elf32-sh.c:5912
+#, c-format
+msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
+msgstr ""
+
+#: elf32-sparc.c:89
+#, c-format
+msgid "%pB: compiled for a 64 bit system and target is 32 bit"
+msgstr ""
+
+#: elf32-sparc.c:102
+#, c-format
+msgid "%pB: linking little endian files with big endian files"
+msgstr ""
+
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr ""
+
+#: elf32-spu.c:733
+msgid "%X%P: overlay section %pA does not start on a cache line\n"
+msgstr ""
+
+#: elf32-spu.c:741
+msgid "%X%P: overlay section %pA is larger than a cache line\n"
+msgstr ""
+
+#: elf32-spu.c:761
+msgid "%X%P: overlay section %pA is not in cache area\n"
+msgstr ""
+
+#: elf32-spu.c:802
+#, c-format
+msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
+msgstr ""
+
+#: elf32-spu.c:1028
+#, c-format
+msgid "warning: call to non-function symbol %s defined in %pB"
+msgstr ""
+
+#: elf32-spu.c:1378
+#, c-format
+msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
+msgstr ""
+
+#: elf32-spu.c:1908
+#, fuzzy, c-format
+msgid "%pB is not allowed to define %s"
+msgstr "PB"
+
+#: elf32-spu.c:1916
+#, fuzzy, c-format
+msgid "you are not allowed to define %s in a script"
+msgstr "pembolehubah %%define %s ditakrif semula"
+
+#: elf32-spu.c:1950
+#, fuzzy, c-format
+msgid "%s in overlay section"
+msgstr "Tiada seksyen sebegitu: %s"
+
+#: elf32-spu.c:1979
+#, fuzzy
+msgid "overlay stub relocation overflow"
+msgstr "Stab"
+
+#: elf32-spu.c:1988 elf64-ppc.c:15362
+#, fuzzy
+msgid "stubs don't match calculated size"
+msgstr "Jika pola diatas tidak sepadan:"
+
+#: elf32-spu.c:2571
+#, fuzzy, c-format
+msgid "warning: %s overlaps %s\n"
+msgstr "%s: Amaran: Tak dapat %s"
+
+#: elf32-spu.c:2587
+#, fuzzy, c-format
+msgid "warning: %s exceeds section size\n"
+msgstr "Bahagian"
+
+#: elf32-spu.c:2619
+#, c-format
+msgid "%pA:0x%v not found in function table\n"
+msgstr ""
+
+#: elf32-spu.c:2760
+#, c-format
+msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
+msgstr ""
+
+#: elf32-spu.c:3326
+#, c-format
+msgid "stack analysis will ignore the call from %s to %s\n"
+msgstr ""
+
+#: elf32-spu.c:4023
+#, fuzzy
+msgid "  calls:\n"
+msgstr "Tiada panggilan"
+
+#: elf32-spu.c:4338
+#, fuzzy, c-format
+msgid "%s duplicated in %s\n"
+msgstr "\"%s\" diduplikasi"
+
+#: elf32-spu.c:4342
+#, fuzzy, c-format
+msgid "%s duplicated\n"
+msgstr "Satu unsur tunggal (%s) mempunyai pendua."
+
+#: elf32-spu.c:4349
+msgid "sorry, no support for duplicate object files in auto-overlay script\n"
+msgstr ""
+
+#: elf32-spu.c:4391
+#, c-format
+msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
+msgstr ""
+
+#: elf32-spu.c:4547
+#, c-format
+msgid "%pB:%pA%s exceeds overlay size\n"
+msgstr ""
+
+#: elf32-spu.c:4688
+msgid "%F%P: auto overlay error: %E\n"
+msgstr ""
+
+#: elf32-spu.c:4709
+msgid "Stack size for call graph root nodes.\n"
+msgstr ""
+
+#: elf32-spu.c:4710
+msgid ""
+"\n"
+"Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
+msgstr ""
+
+#: elf32-spu.c:4720
+msgid "Maximum stack required is 0x%v\n"
+msgstr ""
+
+#: elf32-spu.c:4739
+msgid "%X%P: stack/lrlive analysis error: %E\n"
+msgstr ""
+
+#: elf32-spu.c:4742
+msgid "%F%P: can not build overlay stubs: %E\n"
+msgstr ""
+
+#: elf32-spu.c:4811
+#, fuzzy
+msgid "fatal error while creating .fixup"
+msgstr "Ralat ketika mencipta pautan ke %s."
+
+#: elf32-spu.c:5047
+#, c-format
+msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr ""
+
+#: elf32-tic6x.c:1587
+msgid "warning: generating a shared library containing non-PIC code"
+msgstr ""
+
+#: elf32-tic6x.c:1592
+msgid "warning: generating a shared library containing non-PID code"
+msgstr ""
+
+#: elf32-tic6x.c:2426
+#, c-format
+msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
+msgstr ""
+
+#: elf32-tic6x.c:3490
+#, c-format
+msgid "%pB: error: unknown mandatory EABI object attribute %d"
+msgstr ""
+
+#: elf32-tic6x.c:3499
+#, c-format
+msgid "%pB: warning: unknown EABI object attribute %d"
+msgstr ""
+
+#: elf32-tic6x.c:3617 elf32-tic6x.c:3626
+#, c-format
+msgid "error: %pB requires more stack alignment than %pB preserves"
+msgstr ""
+
+#: elf32-tic6x.c:3636 elf32-tic6x.c:3645
+#, c-format
+msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
+msgstr ""
+
+#: elf32-tic6x.c:3654 elf32-tic6x.c:3663
+#, c-format
+msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
+msgstr ""
+
+#: elf32-tic6x.c:3672 elf32-tic6x.c:3680
+#, c-format
+msgid "error: %pB requires more array alignment than %pB preserves"
+msgstr ""
+
+#: elf32-tic6x.c:3703
+#, c-format
+msgid "warning: %pB and %pB differ in wchar_t size"
+msgstr ""
+
+#: elf32-tic6x.c:3722
+#, c-format
+msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
+msgstr ""
+
+#: elf32-tilepro.c:3624 elfxx-tilegx.c:4017 elfxx-x86.c:2773
+#: elfnn-aarch64.c:10343 elfnn-kvx.c:4628 elfnn-loongarch.c:6062
+#: elfnn-riscv.c:3615
+#, fuzzy, c-format
+msgid "discarded output section: `%pA'"
+msgstr "Bahagian"
+
+#: elf32-v850.c:152
+#, c-format
+msgid "variable `%s' cannot occupy in multiple small data regions"
+msgstr ""
+
+#: 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:158
+#, c-format
+msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
+msgstr ""
+
+#: elf32-v850.c:161
+#, c-format
+msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
+msgstr ""
+
+#: elf32-v850.c:164
+#, c-format
+msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
+msgstr ""
+
+#: elf32-v850.c:466
+#, fuzzy
+msgid "failed to find previous HI16 reloc"
+msgstr "Cari terdahulu"
+
+#: elf32-v850.c:2309
+msgid "could not locate special linker symbol __gp"
+msgstr ""
+
+#: elf32-v850.c:2313
+msgid "could not locate special linker symbol __ep"
+msgstr ""
+
+#: elf32-v850.c:2317
+msgid "could not locate special linker symbol __ctbp"
+msgstr ""
+
+#: elf32-v850.c:2538
+#, c-format
+msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
+msgstr ""
+
+#: elf32-v850.c:2554
+#, c-format
+msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
+msgstr ""
+
+#: elf32-v850.c:2569
+#, c-format
+msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
+msgstr ""
+
+#: elf32-v850.c:2601
+#, fuzzy, c-format
+msgid " alignment of 8-byte entities: "
+msgstr "Salin semula entiti sedia ada"
+
+#: elf32-v850.c:2604
+#, c-format
+msgid "4-byte"
+msgstr ""
+
+#: elf32-v850.c:2605
+#, c-format
+msgid "8-byte"
+msgstr ""
+
+#: elf32-v850.c:2606 elf32-v850.c:2618
+#, c-format
+msgid "not set"
+msgstr "tidak ditetapkan"
+
+#: elf32-v850.c:2607 elf32-v850.c:2619 elf32-v850.c:2631 elf32-v850.c:2642
+#: elf32-v850.c:2653 elf32-v850.c:2664
+#, fuzzy, c-format
+msgid "unknown: %x"
+msgstr "(Kod mekanisma GSSAPI tidak diketahui: %x)"
+
+#: elf32-v850.c:2613
+#, c-format
+msgid " size of doubles: "
+msgstr ""
+
+#: elf32-v850.c:2616
+#, c-format
+msgid "4-bytes"
+msgstr ""
+
+#: elf32-v850.c:2617
+#, c-format
+msgid "8-bytes"
+msgstr ""
+
+#: elf32-v850.c:2625
+#, fuzzy, c-format
+msgid " FPU support required: "
+msgstr "Periksa sama ada alatan sokongan yang diperlukan tersedia"
+
+#: elf32-v850.c:2628
+#, c-format
+msgid "FPU-2.0"
+msgstr ""
+
+#: elf32-v850.c:2629
+#, c-format
+msgid "FPU-3.0"
+msgstr ""
+
+#: elf32-v850.c:2630
+#, c-format
+msgid "none"
+msgstr "tiada"
+
+#: elf32-v850.c:2637
+#, fuzzy, c-format
+msgid "SIMD use: "
+msgstr "_Guna sebagaimana ia"
+
+#: elf32-v850.c:2640 elf32-v850.c:2651 elf32-v850.c:2662
+#, c-format
+msgid "yes"
+msgstr "ya"
+
+#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663
+#, c-format
+msgid "no"
+msgstr ""
+
+#: elf32-v850.c:2648
+#, fuzzy, c-format
+msgid "CACHE use: "
+msgstr ""
+"Tiada fail indeks tema dalam \"%s\".\n"
+"Jika anda pasti mahu mencipta satu cache ikon di sini, guna -ignore-theme-index.\n"
+
+#: elf32-v850.c:2659
+#, fuzzy, c-format
+msgid "MMU use: "
+msgstr "Benarkan MMU"
+
+#: elf32-v850.c:2826 elf32-v850.c:2882
+#, c-format
+msgid "%pB: architecture mismatch with previous modules"
+msgstr ""
+
+#. xgettext:c-format.
+#: elf32-v850.c:2900
+#, fuzzy, c-format
+msgid "private flags = %lx: "
+msgstr "Persendirian"
+
+#: elf32-v850.c:2905
+#, fuzzy, c-format
+msgid "unknown v850 architecture"
+msgstr "S_eni Bina"
+
+#: elf32-v850.c:2907
+#, fuzzy, c-format
+msgid "v850 E3 architecture"
+msgstr "S_eni Bina"
+
+#: elf32-v850.c:2909 elf32-v850.c:2916
+#, fuzzy, c-format
+msgid "v850 architecture"
+msgstr "S_eni Bina"
+
+#: elf32-v850.c:2917
+#, fuzzy, c-format
+msgid "v850e architecture"
+msgstr "S_eni Bina"
+
+#: elf32-v850.c:2918
+#, fuzzy, c-format
+msgid "v850e1 architecture"
+msgstr "S_eni Bina"
+
+#: elf32-v850.c:2919
+#, fuzzy, c-format
+msgid "v850e2 architecture"
+msgstr "S_eni Bina"
+
+#: elf32-v850.c:2920
+#, fuzzy, c-format
+msgid "v850e2v3 architecture"
+msgstr "S_eni Bina"
+
+#: elf32-v850.c:2921
+#, fuzzy, c-format
+msgid "v850e3v5 architecture"
+msgstr "S_eni Bina"
+
+#: elf32-v850.c:3595 elf32-v850.c:3834
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
+msgstr ""
+
+#: elf32-v850.c:3605 elf32-v850.c:3844
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
+msgstr ""
+
+#: elf32-v850.c:3651 elf32-v850.c:3879
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
+msgstr ""
+
+#: elf32-v850.c:3691
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
+msgstr ""
+
+#: elf32-vax.c:537
+#, c-format
+msgid " [nonpic]"
+msgstr ""
+
+#: elf32-vax.c:540
+#, fuzzy, c-format
+msgid " [d-float]"
+msgstr "apung"
+
+#: elf32-vax.c:543
+#, fuzzy, c-format
+msgid " [g-float]"
+msgstr "apung"
+
+#: elf32-vax.c:629
+#, c-format
+msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
+msgstr ""
+
+#: elf32-vax.c:1387
+#, c-format
+msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
+msgstr ""
+
+#: elf32-vax.c:1513
+#, c-format
+msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
+msgstr ""
+
+#: elf32-vax.c:1520
+#, c-format
+msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
+msgstr ""
+
+#: elf32-visium.c:824
+#, c-format
+msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
+msgstr ""
+
+#: elf32-xgate.c:506
+#, fuzzy, c-format
+msgid "cpu=XGATE]"
+msgstr "% CPU"
+
+#: elf32-xgate.c:508
+#, c-format
+msgid "error reading cpu type from elf private data"
+msgstr ""
+
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2076 elfnn-ia64.c:2345
+#, fuzzy
+msgid "non-zero addend in @fptr reloc"
+msgstr "Ralat Dalaman, kiraan bukan-sifar"
+
+#: elf32-xtensa.c:996
+#, fuzzy, c-format
+msgid "%pB(%pA): invalid property table"
+msgstr "Jadual pemampasan paparan tidak sah"
+
+#: elf32-xtensa.c:2730
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
+msgstr ""
+
+#: elf32-xtensa.c:2813 elf32-xtensa.c:2936
+#, fuzzy
+msgid "dynamic relocation in read-only section"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: elf32-xtensa.c:2913
+msgid "TLS relocation invalid without dynamic sections"
+msgstr ""
+
+#: elf32-xtensa.c:3126
+msgid "internal inconsistency in size of .got.loc section"
+msgstr ""
+
+#: elf32-xtensa.c:3432
+#, c-format
+msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
+msgstr ""
+
+#: elf32-xtensa.c:4731 elf32-xtensa.c:4739
+#, fuzzy
+msgid "attempt to convert L32R/CALLX to CALL failed"
+msgstr "Percubaan dailan telah gagal"
+
+#: elf32-xtensa.c:6567 elf32-xtensa.c:6646 elf32-xtensa.c:8072
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
+msgstr ""
+
+#: elf32-xtensa.c:7813
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
+msgstr ""
+
+#: elf32-xtensa.c:9671
+#, fuzzy
+msgid "invalid relocation address"
+msgstr "Alamat IP tidak sah"
+
+#: elf32-xtensa.c:9762
+#, fuzzy
+msgid "overflow after relaxation"
+msgstr "nombor baris melimpah"
+
+#: elf32-xtensa.c:10908
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
+msgstr ""
+
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr ""
+
+#: elf32-z80.c:518
+#, fuzzy, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr "%1 PB"
+
+#: elf32-z80.c:546
+#, fuzzy, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr "PB"
+
+#: elf64-alpha.c:472
+msgid "GPDISP relocation did not find ldah and lda instructions"
+msgstr ""
+
+#: elf64-alpha.c:1983
+#, c-format
+msgid "%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr ""
+
+#: elf64-alpha.c:2435
+#, c-format
+msgid "%pB: .got subsegment exceeds 64K (size %d)"
+msgstr ""
+
+#: elf64-alpha.c:2678 elflink.c:15697 elfnn-kvx.c:4015 elfnn-loongarch.c:2007
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr ""
+
+#: elf64-alpha.c:2974 elf64-alpha.c:3169
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
+msgstr ""
+
+#: elf64-alpha.c:4369 elf64-alpha.c:4382
+#, c-format
+msgid "%pB: gp-relative relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf64-alpha.c:4438
+#, fuzzy, c-format
+msgid "%pB: change in gp: BRSGP %s"
+msgstr "%s Pb"
+
+#: elf64-alpha.c:4463 mach-o.c:625 elfnn-loongarch.c:908 elfnn-riscv.c:724
+#: elfnn-riscv.c:929 elfnn-riscv.c:971
+msgid "<unknown>"
+msgstr "<tidak diketahui>"
+
+#: elf64-alpha.c:4469
+#, c-format
+msgid "%pB: !samegp reloc against symbol without .prologue: %s"
+msgstr ""
+
+#: elf64-alpha.c:4527
+#, c-format
+msgid "%pB: unhandled dynamic relocation against %s"
+msgstr ""
+
+#: elf64-alpha.c:4562
+#, c-format
+msgid "%pB: pc-relative relocation against undefined weak symbol %s"
+msgstr ""
+
+#: elf64-alpha.c:4628
+#, c-format
+msgid "%pB: dtp-relative relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf64-alpha.c:4653
+#, c-format
+msgid "%pB: tp-relative relocation against dynamic symbol %s"
+msgstr ""
+
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:344
+#, fuzzy
+msgid "internal error: relocation not supported"
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#: elf64-gen.c:71
+#, c-format
+msgid "%pB: Relocations in generic ELF (EM: %d)"
+msgstr ""
+
+#: elf64-hppa.c:2035
+#, c-format
+msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
+msgstr ""
+
+#: elf64-hppa.c:3239
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
+msgstr ""
+
+#: elf64-ia64-vms.c:600 elfnn-ia64.c:641
+#, c-format
+msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
+msgstr ""
+
+#: elf64-ia64-vms.c:2031 elfnn-ia64.c:2293
+msgid "@pltoff reloc against local symbol"
+msgstr ""
+
+#: elf64-ia64-vms.c:3278 elfnn-ia64.c:3671
+#, c-format
+msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
+msgstr ""
+
+#: elf64-ia64-vms.c:3288 elfnn-ia64.c:3681
+#, c-format
+msgid "%pB: __gp does not cover short data segment"
+msgstr ""
+
+#: elf64-ia64-vms.c:3558 elfnn-ia64.c:3954
+#, c-format
+msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
+msgstr ""
+
+#: elf64-ia64-vms.c:3622 elfnn-ia64.c:4022
+#, c-format
+msgid "%pB: @gprel relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf64-ia64-vms.c:3681 elfnn-ia64.c:4085
+#, c-format
+msgid "%pB: linking non-pic code in a position independent executable"
+msgstr ""
+
+#: elf64-ia64-vms.c:3783 elfnn-ia64.c:4223
+#, fuzzy, c-format
+msgid "%pB: @internal branch to dynamic symbol %s"
+msgstr "Gagal menemui simbol '%s' dalam pustaka dinamik"
+
+#: elf64-ia64-vms.c:3786 elfnn-ia64.c:4226
+#, fuzzy, c-format
+msgid "%pB: speculation fixup to dynamic symbol %s"
+msgstr "Gagal menemui simbol '%s' dalam pustaka dinamik"
+
+#: elf64-ia64-vms.c:3789 elfnn-ia64.c:4229
+#, c-format
+msgid "%pB: @pcrel relocation against dynamic symbol %s"
+msgstr ""
+
+#: elf64-ia64-vms.c:3913 elfnn-ia64.c:4426
+#, fuzzy
+msgid "unsupported reloc"
+msgstr " (tidak disokong)"
+
+#: elf64-ia64-vms.c:3950 elfnn-ia64.c:4464
+#, c-format
+msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
+msgstr ""
+
+#: elf64-ia64-vms.c:3967 elfnn-ia64.c:4481
+#, 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:4261 elfnn-ia64.c:4740
+#, c-format
+msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
+msgstr ""
+
+#: elf64-ia64-vms.c:4270 elfnn-ia64.c:4749
+#, c-format
+msgid "%pB: linking big-endian files with little-endian files"
+msgstr ""
+
+#: elf64-ia64-vms.c:4279 elfnn-ia64.c:4758
+#, c-format
+msgid "%pB: linking 64-bit files with 32-bit files"
+msgstr ""
+
+#: elf64-ia64-vms.c:4288 elfnn-ia64.c:4767
+#, c-format
+msgid "%pB: linking constant-gp files with non-constant-gp files"
+msgstr ""
+
+#: elf64-ia64-vms.c:4298 elfnn-ia64.c:4777
+#, c-format
+msgid "%pB: linking auto-pic files with non-auto-pic files"
+msgstr ""
+
+#: elf64-ia64-vms.c:5148 elflink.c:5491
+#, 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:5155
+#, c-format
+msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
+msgstr ""
+
+#: elf64-ia64-vms.c:5171 elflink.c:5520
+#, c-format
+msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
+msgstr ""
+
+#: elf64-mips.c:4102
+#, c-format
+msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
+msgstr ""
+
+#: elf64-mmix.c:980
+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 ""
+
+#: elf64-mmix.c:1164
+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 ""
+
+#: elf64-mmix.c:1191
+#, c-format
+msgid ""
+"%pB: Internal inconsistency error for value for\n"
+" linker-allocated global register: linked: %#<PRIx64> != relaxed: %#<PRIx64>"
+msgstr ""
+
+#: elf64-mmix.c:1615
+#, c-format
+msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
+msgstr ""
+
+#: elf64-mmix.c:1621
+#, c-format
+msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
+msgstr ""
+
+#: elf64-mmix.c:1666
+#, c-format
+msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
+msgstr ""
+
+#: elf64-mmix.c:1672
+#, c-format
+msgid "%pB: register relocation against non-register symbol: %s in %pA"
+msgstr ""
+
+#: elf64-mmix.c:1709
+#, c-format
+msgid "%pB: directive LOCAL valid only with a register or absolute value"
+msgstr ""
+
+#: elf64-mmix.c:1738
+#, c-format
+msgid "%pB: LOCAL directive: register $%<PRId64> is not a local register; first global register is $%<PRId64>"
+msgstr ""
+
+#: elf64-mmix.c:2153
+#, c-format
+msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
+msgstr ""
+
+#: elf64-mmix.c:2208
+#, fuzzy
+msgid "register section has contents\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: elf64-mmix.c:2398
+#, c-format
+msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
+msgstr ""
+
+#: elf64-ppc.c:1361
+#, fuzzy, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "Baca jalur %s berbanding %s!"
+
+#: elf64-ppc.c:4302
+#, c-format
+msgid "symbol '%s' has invalid st_other for ABI version 1"
+msgstr ""
+
+#: elf64-ppc.c:4485
+#, c-format
+msgid "%pB .opd not allowed in ABI version %d"
+msgstr ""
+
+#: elf64-ppc.c:5107
+#, c-format
+msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
+msgstr ""
+
+#: elf64-ppc.c:5277
+#, fuzzy
+msgid "%H: %s reloc unsupported here\n"
+msgstr "%s berada di sini"
+
+#: elf64-ppc.c:5500
+#, c-format
+msgid "%pB uses unknown e_flags 0x%lx"
+msgstr ""
+
+#: elf64-ppc.c:5508
+#, c-format
+msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
+msgstr ""
+
+#: elf64-ppc.c:5535
+#, fuzzy, c-format
+msgid " [abiv%ld]"
+msgstr "%ld:%02ld"
+
+#: elf64-ppc.c:6844
+msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
+msgstr ""
+
+#: elf64-ppc.c:7111
+#, fuzzy, c-format
+msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
+msgstr "simbol permulaan %s tidak ditakrifkan"
+
+#: elf64-ppc.c:7362
+#, fuzzy, c-format
+msgid "dynreloc miscount for %pB, section %pA"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: elf64-ppc.c:7453
+#, c-format
+msgid "%pB: .opd is not a regular array of opd entries"
+msgstr ""
+
+#: elf64-ppc.c:7463
+#, c-format
+msgid "%pB: unexpected reloc type %u in .opd section"
+msgstr ""
+
+#: elf64-ppc.c:7485
+#, c-format
+msgid "%pB: undefined sym `%s' in .opd section"
+msgstr ""
+
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7986
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr ""
+
+#: elf64-ppc.c:7994
+msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
+msgstr ""
+
+#: elf64-ppc.c:8310
+msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
+msgstr ""
+
+#: elf64-ppc.c:8745 elf64-ppc.c:9461
+#, fuzzy, c-format
+msgid "%s defined on removed toc entry"
+msgstr "Sistem mungkin tidak berfungsi dengan baik jika masukan ini diubah suai atau dibuang."
+
+#: elf64-ppc.c:9418
+#, c-format
+msgid "%H: %s references optimized away TOC entry\n"
+msgstr ""
+
+#: elf64-ppc.c:9639
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr ""
+
+#: elf64-ppc.c:10534
+#, fuzzy, c-format
+msgid "warning: discarding dynamic section %s"
+msgstr "Bahagian"
+
+#: elf64-ppc.c:11687
+msgid "%P: cannot find opd entry toc for `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:11837
+#, c-format
+msgid "long branch stub `%s' offset overflow"
+msgstr ""
+
+#: elf64-ppc.c:11864
+#, fuzzy, c-format
+msgid "can't find branch stub `%s'"
+msgstr "Gagal mencari posisi semasa dalam fail '%s'"
+
+#: elf64-ppc.c:11925 elf64-ppc.c:12177 elf64-ppc.c:14742
+#, c-format
+msgid "%P: linkage table error against `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:12376
+#, fuzzy, c-format
+msgid "can't build branch stub `%s'"
+msgstr "Gabung %s ke dalam cabang %s"
+
+#: elf64-ppc.c:13407
+#, c-format
+msgid "%pB section %pA exceeds stub group size"
+msgstr ""
+
+#: elf64-ppc.c:14923
+msgid "__tls_get_addr call offset overflow"
+msgstr ""
+
+#: elf64-ppc.c:15263 elf64-ppc.c:15282
+#, c-format
+msgid "%s offset too large for .eh_frame sdata4 encoding"
+msgstr ""
+
+#: elf64-ppc.c:15370
+#, fuzzy, c-format
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
+msgstr[0] "Pemaut"
+
+#: elf64-ppc.c:15377
+#, c-format
+msgid ""
+"%s, iter %u\n"
+"  branch         %lu\n"
+"  long branch    %lu\n"
+"  plt call       %lu\n"
+"  global entry   %lu"
+msgstr ""
+
+#: elf64-ppc.c:15759
+#, fuzzy, c-format
+msgid "%H: %s used with TLS symbol `%pT'\n"
+msgstr "simbol %s digunakan lebih dari sekali sebagai rentetan perkataan"
+
+#: elf64-ppc.c:15761
+#, c-format
+msgid "%H: %s used with non-TLS symbol `%pT'\n"
+msgstr ""
+
+#: elf64-ppc.c:16545
+#, c-format
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
+msgstr ""
+
+#: elf64-ppc.c:16551
+#, c-format
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
+msgstr ""
+
+#: elf64-ppc.c:17202
+#, fuzzy, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr "%s pt"
+
+#: elf64-ppc.c:17478
+#, c-format
+msgid "%H: %s for indirect function `%pT' unsupported\n"
+msgstr ""
+
+#: elf64-ppc.c:17565
+#, c-format
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr ""
+
+#: elf64-ppc.c:17620
+#, fuzzy, c-format
+msgid "%P: %pB: %s is not supported for `%pT'\n"
+msgstr "%s Pb"
+
+#: elf64-ppc.c:17889
+#, fuzzy, c-format
+msgid "%H: error: %s not a multiple of %u\n"
+msgstr "Kod ralat %u ketika mengesahihkan: %s"
+
+#: elf64-ppc.c:17912
+#, fuzzy, c-format
+msgid "%H: unresolvable %s against `%pT'\n"
+msgstr "%s pt"
+
+#: elf64-ppc.c:18057
+#, fuzzy, c-format
+msgid "%H: %s against `%pT': error %d\n"
+msgstr ""
+"\n"
+"%02d h %02d j %02d min pada: %s"
+
+#: elf64-s390.c:2490
+#, c-format
+msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
+msgstr ""
+
+#: elf64-s390.c:3153
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): misaligned symbol `%s' (%#<PRIx64>) for relocation %s"
+msgstr ""
+
+#: elf64-sparc.c:134 elfcode.h:1601
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr ""
+
+#: elf64-sparc.c:493
+#, c-format
+msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
+msgstr ""
+
+#: elf64-sparc.c:514
+#, c-format
+msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
+msgstr ""
+
+#: elf64-sparc.c:538
+#, c-format
+msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
+msgstr ""
+
+#: elf64-sparc.c:585
+#, c-format
+msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
+msgstr ""
+
+#: elf64-sparc.c:717
+#, c-format
+msgid "%pB: linking UltraSPARC specific with HAL specific code"
+msgstr ""
+
+#: elf64-x86-64.c:1660
+#, fuzzy
+msgid "hidden symbol "
+msgstr "Tersembunyi"
+
+#: elf64-x86-64.c:1663
+#, fuzzy
+msgid "internal symbol "
+msgstr "Dalaman"
+
+#: elf64-x86-64.c:1666 elf64-x86-64.c:1670
+#, fuzzy
+msgid "protected symbol "
+msgstr "Dilindungi"
+
+#: elf64-x86-64.c:1672
+#, fuzzy
+msgid "symbol "
+msgstr "Simbol:"
+
+#: elf64-x86-64.c:1678
+#, fuzzy
+msgid "undefined "
+msgstr "Tidak ditakrif"
+
+#: elf64-x86-64.c:1688 elfnn-loongarch.c:892
+#, fuzzy
+msgid "a shared object"
+msgstr "objek memori terkongsi"
+
+#: elf64-x86-64.c:1690
+msgid "; recompile with -fPIC"
+msgstr ""
+
+#: elf64-x86-64.c:1695 elfnn-loongarch.c:898
+#, fuzzy
+msgid "a PIE object"
+msgstr "Pai"
+
+#: elf64-x86-64.c:1697 elfnn-loongarch.c:900
+#, fuzzy
+msgid "a PDE object"
+msgstr "Tiada objek sebegitu"
+
+#: elf64-x86-64.c:1699
+msgid "; recompile with -fPIE"
+msgstr ""
+
+#: elf64-x86-64.c:1703
+#, c-format
+msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
+msgstr ""
+
+#: elf64-x86-64.c:2239
+#, c-format
+msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
+msgstr ""
+
+#: elf64-x86-64.c:2394
+#, c-format
+msgid "%pB: '%s' accessed both as normal and thread local symbol"
+msgstr ""
+
+#: elf64-x86-64.c:2652
+#, c-format
+msgid "%pB: unsupported relocation %s against symbol `%s'"
+msgstr ""
+
+#: elf64-x86-64.c:3076 elfnn-aarch64.c:5766 elfnn-riscv.c:2374
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
+msgstr ""
+
+#: elf64-x86-64.c:3339
+#, 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:3353
+#, 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:3643
+#, 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:3794 elflink.c:14005
+msgid "%F%P: corrupt input: %pB\n"
+msgstr ""
+
+#: elf64-x86-64.c:4605
+#, c-format
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr ""
+
+#: elf64-x86-64.c:4764
+#, c-format
+msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr ""
+
+#: elf64-x86-64.c:4837
+#, c-format
+msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr ""
+
+#: elf64-x86-64.c:4890
+#, c-format
+msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr ""
+
+#: elfcode.h:342
+#, c-format
+msgid "warning: %pB has a section extending past end of file"
+msgstr ""
+
+#: elfcode.h:790
+#, c-format
+msgid "warning: %pB has a corrupt string table index"
+msgstr ""
+
+#: elfcode.h:838
+#, c-format
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr ""
+
+#: elfcode.h:1056
+#, c-format
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr ""
+
+#: elfcode.h:1321
+#, c-format
+msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
+msgstr ""
+
+#: elfcore.h:280
+#, c-format
+msgid "warning: %pB has a segment extending past end of file"
+msgstr ""
+
+#: elflink.c:1438
+#, c-format
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
+msgstr ""
+
+#: elflink.c:1444
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
+msgstr ""
+
+#: elflink.c:1450
+#, c-format
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
+msgstr ""
+
+#: elflink.c:1456
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
+msgstr ""
+
+#: elflink.c:2168
+#, c-format
+msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
+msgstr ""
+
+#: elflink.c:2681
+#, fuzzy, c-format
+msgid "%pB: version node not found for symbol %s"
+msgstr "simbol tidak dijumpai di dalam pengeluaran: %.*s"
+
+#: elflink.c:2780
+#, c-format
+msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
+msgstr ""
+
+#: elflink.c:2792
+#, 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:2989
+#, c-format
+msgid "%pB: relocation size mismatch in %pB section %pA"
+msgstr ""
+
+#: elflink.c:3322
+#, c-format
+msgid "warning: type and size of dynamic symbol `%s' are not defined"
+msgstr ""
+
+#: elflink.c:3382
+msgid "%P: copy reloc against protected `%pT' is dangerous\n"
+msgstr ""
+
+#: elflink.c:4338
+msgid "%F%P: %pB: failed to add %s to first hash\n"
+msgstr ""
+
+#: elflink.c:4406
+msgid "%F%P: first_hash failed to create: %E\n"
+msgstr ""
+
+#: elflink.c:4437
+#, c-format
+msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
+msgstr ""
+
+#: elflink.c:4920
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr ""
+
+#: elflink.c:4989
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr ""
+
+#: elflink.c:5137
+#, fuzzy, c-format
+msgid "%pB: not enough version information"
+msgstr "Maklumat versi"
+
+#: elflink.c:5175
+#, c-format
+msgid "%pB: %s: invalid version %u (max %d)"
+msgstr ""
+
+#: elflink.c:5212
+#, fuzzy, c-format
+msgid "%pB: %s: invalid needed version %d"
+msgstr "keperluan versi tidak sah: %s"
+
+#: elflink.c:5498
+#, c-format
+msgid "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used by the common definition in %pB"
+msgstr ""
+
+#: elflink.c:5505
+msgid "warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."
+msgstr ""
+
+#: elflink.c:5527
+msgid "warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."
+msgstr ""
+
+#: elflink.c:5670
+#, fuzzy, c-format
+msgid "%pB: undefined reference to symbol '%s'"
+msgstr "simbol permulaan %s tidak ditakrifkan"
+
+#: elflink.c:6759
+#, fuzzy, c-format
+msgid "%pB: stack size specified and %s set"
+msgstr "Fail %s tidak wujud dan tiada saiz dinyatakan.\n"
+
+#: elflink.c:6763
+#, fuzzy, c-format
+msgid "%pB: %s not absolute"
+msgstr "PB"
+
+#: elflink.c:6975
+#, fuzzy, c-format
+msgid "%s: undefined version: %s"
+msgstr "%s: pembolehubah %s %%define tidak ditakrifkan"
+
+#: elflink.c:7364
+msgid "error: creating an executable stack because of -z execstack command line option"
+msgstr ""
+
+#: elflink.c:7370
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr ""
+
+#: elflink.c:7432
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"
+msgstr ""
+
+#: elflink.c:7438
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr ""
+
+#: elflink.c:7446
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"
+msgstr ""
+
+#: elflink.c:7452
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr ""
+
+#: elflink.c:7455
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr ""
+
+#: elflink.c:7609
+#, c-format
+msgid "%pB: .preinit_array section is not allowed in DSO"
+msgstr ""
+
+#: elflink.c:9218
+#, fuzzy, c-format
+msgid "undefined %s reference in complex symbol: %s"
+msgstr "simbol permulaan %s tidak ditakrifkan"
+
+#: elflink.c:9381 elflink.c:9389
+msgid "division by zero"
+msgstr "dibahagi dengan sifar"
+
+#: elflink.c:9403
+#, fuzzy, c-format
+msgid "unknown operator '%c' in complex symbol"
+msgstr "Pilihan tidak diketahui '-%c'\n"
+
+#. PR 21524: Let the user know if a symbol was removed by garbage collection.
+#: elflink.c:9739
+#, c-format
+msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
+msgstr ""
+
+#: elflink.c:9742
+#, c-format
+msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
+msgstr ""
+
+#: elflink.c:9993 elflink.c:10011 elflink.c:10050 elflink.c:10068
+#, 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:10027 elflink.c:10084
+#, c-format
+msgid "%pB: unable to sort relocs - they are of an unknown size"
+msgstr ""
+
+#: elflink.c:10136
+#, fuzzy
+msgid "not enough memory to sort relocations"
+msgstr "GIF: memori tidak mencukupi."
+
+#: elflink.c:10470
+#, fuzzy, c-format
+msgid "%pB: too many sections: %d (>= %d)"
+msgstr "Terlalu banyak titik henti. Maksimum ialah %d."
+
+#: elflink.c:10746
+#, c-format
+msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
+msgstr ""
+
+#: elflink.c:10749
+#, c-format
+msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
+msgstr ""
+
+#: elflink.c:10752
+#, c-format
+msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
+msgstr ""
+
+#: elflink.c:10845
+#, c-format
+msgid "%pB: could not find output section %pA for input section %pA"
+msgstr ""
+
+#: elflink.c:11003
+#, fuzzy, c-format
+msgid "%pB: protected symbol `%s' isn't defined"
+msgstr "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai hukum"
+
+#: elflink.c:11006
+#, fuzzy, c-format
+msgid "%pB: internal symbol `%s' isn't defined"
+msgstr "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai hukum"
+
+#: elflink.c:11009
+#, fuzzy, c-format
+msgid "%pB: hidden symbol `%s' isn't defined"
+msgstr "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai hukum"
+
+#: elflink.c:11041
+#, c-format
+msgid "%pB: no symbol version section for versioned symbol `%s'"
+msgstr ""
+
+#: elflink.c:11723
+#, c-format
+msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
+msgstr ""
+
+#: elflink.c:12193
+#, c-format
+msgid "error: %pB: size of section %pA is not multiple of address size"
+msgstr ""
+
+#: elflink.c:12473
+#, fuzzy, c-format
+msgid "%pB: no symbol found for import library"
+msgstr "Pustaka \"%1\" tidak dijumpai"
+
+#: elflink.c:13078
+msgid "%F%P: %pB: failed to finish relative relocations\n"
+msgstr ""
+
+#: elflink.c:13155
+#, fuzzy, c-format
+msgid "%pB: file class %s incompatible with %s"
+msgstr "%s: tidak sepadan dengan fail gmon pertama\n"
+
+#: elflink.c:13377
+#, fuzzy, c-format
+msgid "%pB: failed to generate import library"
+msgstr "Pustaka yang digunakan untuk menjana lakaran kenit"
+
+#: elflink.c:13538
+#, fuzzy, c-format
+msgid "warning: %s section has zero size"
+msgstr "Imej GIF yang terhasil bersaiz sifar"
+
+#: elflink.c:13586
+#, c-format
+msgid "warning: section '%s' is being made into a note"
+msgstr ""
+
+#: elflink.c:13680
+msgid "%P%X: read-only segment has dynamic relocations\n"
+msgstr ""
+
+#: elflink.c:13683
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr ""
+
+#: elflink.c:13686
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr ""
+
+#: elflink.c:13689
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr ""
+
+#: elflink.c:13825
+msgid "%P%X: can not read symbols: %E\n"
+msgstr ""
+
+#: elflink.c:14258
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr ""
+
+#: elflink.c:14738
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
+msgstr ""
+
+#: elflink.c:14779
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr ""
+
+#: elflink.c:14922
+#, fuzzy, c-format
+msgid "unrecognized INPUT_SECTION_FLAG %s\n"
+msgstr "%s: pilihan '--%s' tidak dikenali\n"
+
+#: elflink.c:15703
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr ""
+
+#: elflink.c:15792
+msgid "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s\n"
+msgstr ""
+
+#: elfxx-aarch64.c:478
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr ""
+
+#: elfxx-aarch64.c:773
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:775
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:785
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:787
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:797
+#, c-format
+msgid "%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:799
+#, c-format
+msgid "warning: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:960
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr ""
+
+#: elfxx-aarch64.c:1104
+#, c-format
+msgid "%pB: warning: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1106
+#, c-format
+msgid "%X%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1138
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1142
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1148
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr ""
+
+#: elfxx-aarch64.c:1150
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr ""
+
+#: elfxx-loongarch.c:1911
+#, fuzzy, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr "%s Pb"
+
+#: elfxx-loongarch.c:1939
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr ""
+
+#: elfxx-loongarch.c:2013
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr ""
+
+#: elfxx-loongarch.c:2032
+#, fuzzy, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr "[find_call] %s: 0x%lx ke 0x%lx\n"
+
+#: elfxx-mips.c:1534
+#, fuzzy
+msgid "static procedure (no name)"
+msgstr "nama prosedur tiada"
+
+#: elfxx-mips.c:5849
+msgid "MIPS16 and microMIPS functions cannot call each other"
+msgstr ""
+
+#: elfxx-mips.c:6619
+msgid "%X%H: unsupported JALX to the same ISA mode\n"
+msgstr ""
+
+#: elfxx-mips.c:6652
+msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
+msgstr ""
+
+#: elfxx-mips.c:6697
+msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
+msgstr ""
+
+#: elfxx-mips.c:6709
+msgid "%X%H: unsupported branch between ISA modes\n"
+msgstr ""
+
+#: elfxx-mips.c:7355
+#, c-format
+msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
+msgstr ""
+
+#: elfxx-mips.c:7399
+#, c-format
+msgid "%pB: warning: bad `%s' option size %u smaller than its header"
+msgstr ""
+
+#: elfxx-mips.c:7635
+#, fuzzy, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr ""
+"Amaran mengenai %(cleaner)s - %(option)s:\n"
+"\n"
+"%(warning)s"
+
+#: elfxx-mips.c:8453 elfxx-mips.c:8579
+#, c-format
+msgid "%pB: warning: cannot determine the target function for stub section `%s'"
+msgstr ""
+
+#: elfxx-mips.c:8711
+#, c-format
+msgid "%pB: malformed reloc detected for section %s"
+msgstr ""
+
+#: elfxx-mips.c:8811
+#, c-format
+msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
+msgstr ""
+
+#: elfxx-mips.c:8951
+#, c-format
+msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
+msgstr ""
+
+#: elfxx-mips.c:9254
+#, 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:9380
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr ""
+
+#: elfxx-mips.c:9383
+#, fuzzy, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "Gagal menemui simbol '%s' dalam pustaka dinamik"
+
+#: elfxx-mips.c:9603
+#, fuzzy, c-format
+msgid "non-dynamic relocations refer to dynamic symbol %s"
+msgstr "Gagal menemui simbol '%s' dalam pustaka dinamik"
+
+#: elfxx-mips.c:10523
+#, c-format
+msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
+msgstr ""
+
+#: elfxx-mips.c:10663
+msgid "small-data section too large; lower small-data size limit (see option -G)"
+msgstr ""
+
+#: elfxx-mips.c:10682
+msgid "cannot convert a jump to JALX for a non-word-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10685
+msgid "jump to a non-word-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10686
+msgid "jump to a non-instruction-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10689
+msgid "cannot convert a branch to JALX for a non-word-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10691
+msgid "branch to a non-instruction-aligned address"
+msgstr ""
+
+#: elfxx-mips.c:10693
+msgid "PC-relative load from unaligned address"
+msgstr ""
+
+#: elfxx-mips.c:10993
+#, c-format
+msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr ""
+
+#: elfxx-mips.c:11108 elfxx-mips.c:11701
+#, c-format
+msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
+msgstr ""
+
+#: elfxx-mips.c:11673
+#, c-format
+msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr ""
+
+#: elfxx-mips.c:13418 reloc.c:8518
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr ""
+
+#: elfxx-mips.c:14729
+#, fuzzy, c-format
+msgid "%pB: unknown architecture %s"
+msgstr "%s: -c tidak disokong pada rekabentuk %s\n"
+
+#: elfxx-mips.c:15257
+#, fuzzy, c-format
+msgid "%pB: illegal section name `%pA'"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: elfxx-mips.c:15534
+#, c-format
+msgid "%pB: warning: linking abicalls files with non-abicalls files"
+msgstr ""
+
+#: elfxx-mips.c:15551
+#, c-format
+msgid "%pB: linking 32-bit code with 64-bit code"
+msgstr ""
+
+#: elfxx-mips.c:15583 elfxx-mips.c:15649 elfxx-mips.c:15664
+#, c-format
+msgid "%pB: linking %s module with previous %s modules"
+msgstr ""
+
+#: elfxx-mips.c:15607
+#, c-format
+msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
+msgstr ""
+
+#: elfxx-mips.c:15632
+#, c-format
+msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
+msgstr ""
+
+#: elfxx-mips.c:15766
+#, 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:15772
+#, c-format
+msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
+msgstr ""
+
+#: elfxx-mips.c:15778
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
+msgstr ""
+
+#: elfxx-mips.c:15792
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
+msgstr ""
+
+#: elfxx-mips.c:15811
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr ""
+
+#: elfxx-mips.c:15823
+#, c-format
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
+msgstr ""
+
+#: elfxx-mips.c:15832
+#, c-format
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr ""
+
+#: elfxx-mips.c:15894
+#, fuzzy, c-format
+msgid "%pB: endianness incompatible with that of the selected emulation"
+msgstr "Kekunci DSA yang diberikan tidak serasi dengan protokol TLS yang dipilih."
+
+#: elfxx-mips.c:15908
+#, fuzzy, c-format
+msgid "%pB: ABI is incompatible with that of the selected emulation"
+msgstr "Kekunci DSA yang diberikan tidak serasi dengan protokol TLS yang dipilih."
+
+#: elfxx-mips.c:15961
+#, c-format
+msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
+msgstr ""
+
+#: elfxx-mips.c:15966
+#, c-format
+msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
+msgstr ""
+
+#: elfxx-mips.c:15970
+#, c-format
+msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
+msgstr ""
+
+#: elfxx-mips.c:15977
+#, c-format
+msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
+msgstr ""
+
+#: elfxx-mips.c:15981
+#, c-format
+msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
+msgstr ""
+
+#: elfxx-mips.c:16172
+msgid "-mips32r2 -mfp64 (12 callee-saved)"
+msgstr ""
+
+#: elfxx-mips.c:16234 elfxx-mips.c:16245
+msgid "None"
+msgstr "Tiada"
+
+#: elfxx-mips.c:16236 elfxx-mips.c:16305
+msgid "Unknown"
+msgstr "Tidak Diketahui"
+
+#: elfxx-mips.c:16316
+#, fuzzy, c-format
+msgid "Hard or soft float\n"
+msgstr "apung"
+
+#: elfxx-mips.c:16319
+#, fuzzy, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Kepersisan"
+
+#: elfxx-mips.c:16322
+#, fuzzy, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Volum audio jitu tunggal"
+
+#: elfxx-mips.c:16325
+#, fuzzy, c-format
+msgid "Soft float\n"
+msgstr "Soft"
+
+#: elfxx-mips.c:16328
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
+msgstr ""
+
+#: elfxx-mips.c:16331
+#, c-format
+msgid "Hard float (32-bit CPU, Any FPU)\n"
+msgstr ""
+
+#: elfxx-mips.c:16334
+#, c-format
+msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
+msgstr ""
+
+#: elfxx-mips.c:16337
+#, c-format
+msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
+msgstr ""
+
+#: elfxx-mips.c:16369
+#, c-format
+msgid " [abi=O32]"
+msgstr ""
+
+#: elfxx-mips.c:16371
+#, c-format
+msgid " [abi=O64]"
+msgstr ""
+
+#: elfxx-mips.c:16373
+#, c-format
+msgid " [abi=EABI32]"
+msgstr ""
+
+#: elfxx-mips.c:16375
+#, c-format
+msgid " [abi=EABI64]"
+msgstr ""
+
+#: elfxx-mips.c:16377
+#, fuzzy, c-format
+msgid " [abi unknown]"
+msgstr "Tidak diketahui "
+
+#: elfxx-mips.c:16379
+#, c-format
+msgid " [abi=N32]"
+msgstr ""
+
+#: elfxx-mips.c:16381
+#, c-format
+msgid " [abi=64]"
+msgstr " [abi=64]"
+
+#: elfxx-mips.c:16383
+#, fuzzy, c-format
+msgid " [no abi set]"
+msgstr "tidak ditetapkan"
+
+#: elfxx-mips.c:16408
+#, fuzzy, c-format
+msgid " [unknown ISA]"
+msgstr "Tidak diketahui "
+
+#: elfxx-mips.c:16428
+#, c-format
+msgid " [not 32bitmode]"
+msgstr ""
+
+#: elfxx-riscv.c:1827
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr ""
+
+#: elfxx-riscv.c:1833
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:1939
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr ""
+
+#: elfxx-riscv.c:1963
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr ""
+
+#: elfxx-riscv.c:1999
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr ""
+
+#: elfxx-riscv.c:2023
+#, fuzzy, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr "%s\t\tSambungan tidak diketahui %s (%s):\n"
+
+#: elfxx-riscv.c:2047
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr ""
+
+#: elfxx-riscv.c:2087
+#, fuzzy, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr "Sambungan tidak menyokong versi shell"
+
+#: elfxx-riscv.c:2095
+#, fuzzy, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr "Sambungan tidak menyokong versi shell"
+
+#: elfxx-riscv.c:2102
+msgid "zcmp' is incompatible with `d/zcd' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2109
+#, fuzzy, c-format
+msgid "rv%d does not support the `zcf' extension"
+msgstr "Sambungan tidak menyokong versi shell"
+
+#: elfxx-riscv.c:2116
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2123
+#, fuzzy
+msgid "`xtheadvector' is conflict with the `v' extension"
+msgstr "V"
+
+#: elfxx-riscv.c:2144
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr ""
+
+#: elfxx-riscv.c:2206
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr ""
+
+#: elfxx-riscv.c:2234
+#, c-format
+msgid "%s: ISA string must begin with rv32 or rv64"
+msgstr ""
+
+#: elfxx-riscv.c:2417
+#, fuzzy
+msgid "internal: "
+msgstr "Dalaman"
+
+#: elfxx-riscv.c:2471
+#, c-format
+msgid "%sinvalid ISA extension ends with <number>p in %s `%s'"
+msgstr ""
+
+#: elfxx-riscv.c:2494
+#, fuzzy, c-format
+msgid "%sunknown ISA extension `%s' in %s `%s'"
+msgstr "%s\t\tSambungan tidak diketahui %s (%s):\n"
+
+#: elfxx-riscv.c:2506
+#, fuzzy, c-format
+msgid "%scannot + or - base extension `%s' in %s `%s'"
+msgstr "%s\t\tSambungan tidak diketahui %s (%s):\n"
+
+#: elfxx-riscv.c:2817 elfxx-riscv.c:3112
+#, fuzzy
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr "KELAS"
+
+#: elfxx-riscv.c:2851
+msgid "zicfiss' and `zcmop"
+msgstr ""
+
+#: elfxx-riscv.c:2865
+#, fuzzy
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr "_C/C++"
+
+#: elfxx-riscv.c:2870 elfxx-riscv.c:2896
+#, fuzzy
+msgid "c' or `zca"
+msgstr "_C/C++"
+
+#: elfxx-riscv.c:2878
+#, fuzzy
+msgid "m' or `zmmul"
+msgstr "%a dari %m"
+
+#: elfxx-riscv.c:2902
+#, fuzzy
+msgid "f' and `c', or `f' and `zcf"
+msgstr "F"
+
+#: elfxx-riscv.c:2907
+#, fuzzy
+msgid "c' or `zcf"
+msgstr "_C/C++"
+
+#: elfxx-riscv.c:2913
+#, fuzzy
+msgid "d' and `c', or `d' and `zcd"
+msgstr "Volum %d%c (disenyapkan)"
+
+#: elfxx-riscv.c:2918
+#, fuzzy
+msgid "c' or `zcd"
+msgstr "_C/C++"
+
+#: elfxx-riscv.c:2920
+#, fuzzy
+msgid "f' or `zfinx"
+msgstr "%.f%%"
+
+#: elfxx-riscv.c:2922
+#, fuzzy
+msgid "d' or `zdinx"
+msgstr "%d Ã— %d"
+
+#: elfxx-riscv.c:2924
+#, fuzzy
+msgid "q' or `zqinx"
+msgstr "\t\tQ: "
+
+#: elfxx-riscv.c:2926
+msgid "zfh' or `zhinx"
+msgstr ""
+
+#: elfxx-riscv.c:2930
+msgid "zfhmin' or `zhinxmin"
+msgstr ""
+
+#: elfxx-riscv.c:2941
+#, fuzzy
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr "%d Ã— %d"
+
+#: elfxx-riscv.c:2952
+#, fuzzy
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr " q, Q, Esc              Keluar"
+
+#: elfxx-riscv.c:2960
+#, fuzzy
+msgid "d' and `zfa"
+msgstr "%d Ã— %d"
+
+#: elfxx-riscv.c:2968
+#, fuzzy
+msgid "q' and `zfa"
+msgstr "\t\tQ: "
+
+#: elfxx-riscv.c:2976
+msgid "zfh' and `zfa"
+msgstr ""
+
+#: elfxx-riscv.c:2986
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr ""
+
+#: elfxx-riscv.c:2991
+msgid "zfh' or `zvfh"
+msgstr ""
+
+#: elfxx-riscv.c:3007
+msgid "zbb' or `zbkb"
+msgstr ""
+
+#: elfxx-riscv.c:3009
+msgid "zbc' or `zbkc"
+msgstr ""
+
+#: elfxx-riscv.c:3017
+msgid "zknd' or `zkne"
+msgstr ""
+
+#: elfxx-riscv.c:3023
+#, fuzzy
+msgid "v' or `zve64x' or `zve32x"
+msgstr "Ctrl+V"
+
+#: elfxx-riscv.c:3025
+#, fuzzy
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr "Ctrl+V"
+
+#: elfxx-riscv.c:3027
+msgid "zvbb"
+msgstr ""
+
+#: elfxx-riscv.c:3029
+msgid "zvbc"
+msgstr ""
+
+#: elfxx-riscv.c:3035
+msgid "zvkb"
+msgstr ""
+
+#: elfxx-riscv.c:3037
+msgid "zvkg"
+msgstr ""
+
+#: elfxx-riscv.c:3039
+msgid "zvkned"
+msgstr ""
+
+#: elfxx-riscv.c:3041
+msgid "zvknha' or `zvknhb"
+msgstr ""
+
+#: elfxx-riscv.c:3043
+msgid "zvksed"
+msgstr ""
+
+#: elfxx-riscv.c:3045
+msgid "zvksh"
+msgstr ""
+
+#: elfxx-riscv.c:3049
+msgid "zcb' and `zba"
+msgstr ""
+
+#: elfxx-riscv.c:3051
+msgid "zcb' and `zbb"
+msgstr ""
+
+#: elfxx-riscv.c:3053
+#, fuzzy
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr "Mod:"
+
+#: elfxx-riscv.c:3061
+msgid "smctr' or `ssctr"
+msgstr ""
+
+#: elfxx-riscv.c:3065
+msgid "h"
+msgstr "h"
+
+#: elfxx-sparc.c:3017 elfnn-aarch64.c:5750
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
+msgstr ""
+
+#: elfxx-tilegx.c:4126
+#, fuzzy, c-format
+msgid "%pB: cannot link together %s and %s objects"
+msgstr "%s: Tak dapat memaut keras ke %s"
+
+#: elfxx-x86.c:534 elfxx-x86.c:3597
+#, c-format
+msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr ""
+
+#: elfxx-x86.c:1044
+#, c-format
+msgid "%F%P: %pB: failed to allocate relative reloc record\n"
+msgstr ""
+
+#: elfxx-x86.c:1403
+#, c-format
+msgid "%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr ""
+
+#: elfxx-x86.c:1439
+#, c-format
+msgid "%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr ""
+
+#: elfxx-x86.c:1578
+#, c-format
+msgid "%F%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr ""
+
+#: elfxx-x86.c:1765
+#, c-format
+msgid "%F%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr ""
+
+#: elfxx-x86.c:1787
+#, c-format
+msgid "%F%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr ""
+
+#: elfxx-x86.c:2256
+#, c-format
+msgid "%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr ""
+
+#: elfxx-x86.c:2338
+msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
+msgstr ""
+
+#: elfxx-x86.c:3265
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr ""
+
+#: elfxx-x86.c:3271
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr ""
+
+#: elfxx-x86.c:3307
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed\n"
+msgstr ""
+
+#: elfxx-x86.c:3316
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD only\n"
+msgstr ""
+
+#: elfxx-x86.c:3324
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n"
+msgstr ""
+
+#: elfxx-x86.c:3332
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only\n"
+msgstr ""
+
+#: elfxx-x86.c:3340
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only\n"
+msgstr ""
+
+#: elfxx-x86.c:3349
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n"
+msgstr ""
+
+#: elfxx-x86.c:3976
+#, c-format
+msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
+msgstr ""
+
+#: elfxx-x86.c:4189
+#, fuzzy, c-format
+msgid "%pB: x86 ISA needed: "
+msgstr "Sistem x86 32-bit"
+
+#: elfxx-x86.c:4191
+#, fuzzy, c-format
+msgid "%pB: x86 ISA used: "
+msgstr "Sistem x86 32-bit"
+
+#: elfxx-x86.c:4213
+#, fuzzy, c-format
+msgid "<unknown: %x>"
+msgstr "(Kod mekanisma GSSAPI tidak diketahui: %x)"
+
+#: elfxx-x86.c:4368
+#, fuzzy
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%s Pb"
+
+#: elfxx-x86.c:4369
+#, fuzzy
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "Ralat dalam alamat \"%s\"â€” atribut hos hilang atau cacat"
+
+#: elfxx-x86.c:4475
+#, fuzzy
+msgid "IBT and SHSTK properties"
+msgstr "&Sifatâ€¦"
+
+#: elfxx-x86.c:4477
+#, fuzzy
+msgid "IBT property"
+msgstr "Si_fat:"
+
+#: elfxx-x86.c:4479
+#, fuzzy
+msgid "SHSTK property"
+msgstr "Si_fat:"
+
+#: elfxx-x86.c:4484
+#, fuzzy
+msgid "LAM_U48 property"
+msgstr "Si_fat:"
+
+#: elfxx-x86.c:4489
+#, fuzzy
+msgid "LAM_U57 property"
+msgstr "Si_fat:"
+
+#: elfxx-x86.c:4667
+msgid "%F%P: failed to create VxWorks dynamic sections\n"
+msgstr ""
+
+#: elfxx-x86.c:4676
+msgid "%F%P: failed to create GOT sections\n"
+msgstr ""
+
+#: elfxx-x86.c:4694
+msgid "%F%P: failed to create ifunc sections\n"
+msgstr ""
+
+#: elfxx-x86.c:4731
+msgid "%F%P: failed to create GOT PLT section\n"
+msgstr ""
+
+#: elfxx-x86.c:4750
+msgid "%F%P: failed to create IBT-enabled PLT section\n"
+msgstr ""
+
+#: elfxx-x86.c:4770
+msgid "%F%P: failed to create PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4783
+msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4797
+msgid "%F%P: failed to create the second PLT .eh_frame section\n"
+msgstr ""
+
+#: elfxx-x86.c:4817
+msgid "%F%P: failed to create PLT .sframe section\n"
+msgstr ""
+
+#: elfxx-x86.c:4832
+msgid "%F%P: failed to create second PLT .sframe section\n"
+msgstr ""
+
+#: elfxx-x86.c:4844
+msgid "%F%P: failed to create PLT GOT .sframe section\n"
+msgstr ""
+
+#: elfxx-x86.c:4883
+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"
+msgstr ""
+
+#: ihex.c:338
+#, c-format
+msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
+msgstr ""
+
+#: ihex.c:393
+#, c-format
+msgid "%pB:%u: bad extended address record length in Intel Hex file"
+msgstr ""
+
+#: ihex.c:411
+#, c-format
+msgid "%pB:%u: bad extended start address length in Intel Hex file"
+msgstr ""
+
+#: ihex.c:429
+#, c-format
+msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
+msgstr ""
+
+#: ihex.c:447
+#, c-format
+msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
+msgstr ""
+
+#: ihex.c:465
+#, c-format
+msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
+msgstr ""
+
+#: ihex.c:580
+#, fuzzy, c-format
+msgid "%pB: internal error in ihex_read_section"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: ihex.c:613
+#, fuzzy, c-format
+msgid "%pB: bad section length in ihex_read_section"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: ihex.c:784
+#, c-format
+msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
+msgstr ""
+
+#: ihex.c:842
+#, c-format
+msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
+msgstr ""
+
+#: libbfd.c:1260
+#, c-format
+msgid "%pB: unable to get decompressed section %pA"
+msgstr ""
+
+#: libbfd.c:1272
+#, c-format
+msgid "%pB: mapped section %pA has non-NULL buffer"
+msgstr ""
+
+#: linker.c:1731
+#, c-format
+msgid "%pB: indirect symbol `%s' to `%s' is a loop"
+msgstr ""
+
+#: linker.c:1811
+msgid "%P: %pB: note: the message above does not take linker garbage collection into account\n"
+msgstr ""
+
+#: linker.c:2617
+#, c-format
+msgid "attempt to do relocatable link with %s input and %s output"
+msgstr ""
+
+#: linker.c:2896
+#, fuzzy, c-format
+msgid "%pB: ignoring duplicate section `%pA'\n"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: linker.c:2906 linker.c:2916
+#, c-format
+msgid "%pB: duplicate section `%pA' has different size\n"
+msgstr ""
+
+#: linker.c:2930 linker.c:2938
+#, fuzzy, c-format
+msgid "%pB: could not read contents of section `%pA'\n"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: linker.c:2947
+#, c-format
+msgid "%pB: duplicate section `%pA' has different contents\n"
+msgstr ""
+
+#: linker.c:3466
+#, c-format
+msgid "%pB: compiled for a big endian system and target is little endian"
+msgstr ""
+
+#: linker.c:3469
+#, c-format
+msgid "%pB: compiled for a little endian system and target is big endian"
+msgstr ""
+
+#: mach-o-arm.c:169 mach-o-arm.c:301
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr ""
+
+#: mach-o-arm.c:185
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:200
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:215
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:230
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr ""
+
+#: mach-o-arm.c:262
+#, c-format
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr ""
+
+#: mach-o-arm.c:332
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr ""
+
+#: mach-o.c:640
+#, fuzzy, c-format
+msgid "<unknown mask flags>"
+msgstr "Bendera"
+
+#: mach-o.c:695
+#, fuzzy
+msgid " (<unknown>)"
+msgstr "Tidak diketahui "
+
+#: mach-o.c:707
+#, fuzzy, c-format
+msgid " MACH-O header:\n"
+msgstr "Output:"
+
+#: mach-o.c:708
+#, fuzzy, c-format
+msgid "   magic:      %#lx\n"
+msgstr "Ajaib"
+
+#: mach-o.c:709
+#, fuzzy, c-format
+msgid "   cputype:    %#lx (%s)\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n"
+"\n"
+
+#: mach-o.c:711
+#, fuzzy, c-format
+msgid "   cpusubtype: %#lx%s\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n"
+"\n"
+
+#: mach-o.c:713
+#, fuzzy, c-format
+msgid "   filetype:   %#lx\n"
+msgstr "Tiada jenis fail"
+
+#: mach-o.c:714
+#, fuzzy, c-format
+msgid "   ncmds:      %#lx\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n"
+"\n"
+
+#: mach-o.c:715
+#, fuzzy, c-format
+msgid "   sizeocmds:  %#lx\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n"
+"\n"
+
+#: mach-o.c:716
+#, fuzzy, c-format
+msgid "   flags:      %#lx\n"
+msgstr "Bendera"
+
+#: mach-o.c:717
+#, fuzzy, c-format
+msgid "   version:    %x\n"
+msgstr "Versi"
+
+#. Urg - what has happened ?
+#: mach-o.c:752
+#, c-format
+msgid "incompatible cputypes in mach-o files: %ld vs %ld"
+msgstr ""
+
+#: mach-o.c:921
+msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
+msgstr ""
+
+#: mach-o.c:1513
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr ""
+
+#: mach-o.c:2155
+msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
+msgstr ""
+
+#: mach-o.c:2603
+#, c-format
+msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
+msgstr ""
+
+#: mach-o.c:2695
+#, fuzzy, c-format
+msgid "unable to allocate data for load command %#x"
+msgstr "Tidak boleh muatkan data imej"
+
+#: mach-o.c:2800
+#, c-format
+msgid "unable to write unknown load command %#x"
+msgstr ""
+
+#: mach-o.c:2984
+#, c-format
+msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
+msgstr ""
+
+#: mach-o.c:3126
+#, c-format
+msgid "unable to layout unknown load command %#x"
+msgstr ""
+
+#: mach-o.c:3652
+#, c-format
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr ""
+
+#: mach-o.c:3695
+#, c-format
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr ""
+
+#: mach-o.c:3746
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
+msgstr ""
+
+#: mach-o.c:3765
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
+msgstr ""
+
+#: mach-o.c:3848
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d (max %lu): setting to undefined"
+msgstr ""
+
+#: mach-o.c:3867
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x%x: setting to undefined"
+msgstr ""
+
+#: mach-o.c:5066
+#, fuzzy, c-format
+msgid "%pB: unknown load command %#x"
+msgstr "Arahan tak diketahui '%1'"
+
+#: mach-o.c:5264
+#, c-format
+msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
+msgstr ""
+
+#: mach-o.c:5389
+#, c-format
+msgid "unknown header byte-order value %#x"
+msgstr ""
+
+#: merge.c:1126
+#, c-format
+msgid "%pB: access beyond end of merged section (%<PRId64>)"
+msgstr ""
+
+#: mmo.c:535
+#, c-format
+msgid "%pB: no core to allocate a symbol %d bytes long"
+msgstr ""
+
+#: mmo.c:951
+#, c-format
+msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
+msgstr ""
+
+#: mmo.c:1246
+#, c-format
+msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
+msgstr ""
+
+#: mmo.c:1393
+#, c-format
+msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
+msgstr ""
+
+#: mmo.c:1409
+#, c-format
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr ""
+
+#: mmo.c:1638
+#, c-format
+msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
+msgstr ""
+
+#: mmo.c:1649
+#, c-format
+msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
+msgstr ""
+
+#: mmo.c:1693
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
+msgstr ""
+
+#: mmo.c:1744
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
+msgstr ""
+
+#: mmo.c:1793
+#, c-format
+msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
+msgstr ""
+
+#: mmo.c:1804
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
+msgstr ""
+
+#: mmo.c:1829
+#, 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:1858
+#, c-format
+msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
+msgstr ""
+
+#: mmo.c:1880
+#, c-format
+msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
+msgstr ""
+
+#: mmo.c:1895
+#, c-format
+msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
+msgstr ""
+
+#: mmo.c:2007
+#, c-format
+msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
+msgstr ""
+
+#: mmo.c:2044
+#, c-format
+msgid "%pB: invalid mmo file: lop_end not last item in file\n"
+msgstr ""
+
+#: mmo.c:2058
+#, 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:2768
+#, c-format
+msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
+msgstr ""
+
+#: mmo.c:3007
+#, c-format
+msgid "%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr ""
+
+#: mmo.c:3106
+#, 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:3152
+#, c-format
+msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
+msgstr ""
+
+#: mmo.c:3205
+#, c-format
+msgid "%pB: internal error, internal register section %pA had contents\n"
+msgstr ""
+
+#: mmo.c:3256
+#, c-format
+msgid "%pB: no initialized registers; section length 0\n"
+msgstr ""
+
+#: mmo.c:3263
+#, c-format
+msgid "%pB: too many initialized registers; section length %<PRId64>"
+msgstr ""
+
+#: mmo.c:3268
+#, c-format
+msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
+msgstr ""
+
+#: osf-core.c:128
+#, c-format
+msgid "unhandled OSF/1 core file section type %d"
+msgstr ""
+
+#: pdp11.c:1573
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr ""
+
+#: pef.c:534
+#, c-format
+msgid "bfd_pef_scan: unknown architecture 0x%lx"
+msgstr ""
+
+#: pei-x86_64.c:174 pei-x86_64.c:228 pei-x86_64.c:238 pei-x86_64.c:263
+#: pei-x86_64.c:275 pei-x86_64.c:289 pei-x86_64.c:307 pei-x86_64.c:319
+#: pei-x86_64.c:331
+#, fuzzy, c-format
+msgid "warning: corrupt unwind data\n"
+msgstr "Data piksel imej rosak"
+
+#. PR 17512: file: 2245-7442-0.004.
+#: pei-x86_64.c:352
+#, fuzzy, c-format
+msgid "Unknown: %x"
+msgstr "(Kod mekanisma GSSAPI tidak diketahui: %x)"
+
+#: pei-x86_64.c:403 pei-x86_64.c:413 pei-x86_64.c:422
+#, fuzzy, c-format
+msgid "warning: xdata section corrupt\n"
+msgstr "Bahagian .rsrc yang rosak dikesan!\n"
+
+#: pei-x86_64.c:477
+#, fuzzy, c-format
+msgid "Too many unwind codes (%ld)\n"
+msgstr "Terlalu banyak rujukan dalam jadual"
+
+#: pei-x86_64.c:563
+#, c-format
+msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
+msgstr ""
+
+#: pei-x86_64.c:570
+#, fuzzy, c-format
+msgid "Warning: %s section size is zero\n"
+msgstr ""
+"Terima Sifar\n"
+"Saiz"
+
+#: pei-x86_64.c:585
+#, c-format
+msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
+msgstr ""
+
+#: pei-x86_64.c:594
+#, fuzzy, c-format
+msgid ""
+"\n"
+"The Function Table (interpreted %s section contents)\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: pei-x86_64.c:597
+#, c-format
+msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
+msgstr ""
+
+#: pei-x86_64.c:722
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Dump of %s\n"
+msgstr "Longgok Ingatan..."
+
+#: peicode.h:823
+#, fuzzy, c-format
+msgid "%pB: unrecognized import type; %x"
+msgstr "Tidak boleh menyalin jenis widget yang tidak dikenali."
+
+#: peicode.h:840
+#, c-format
+msgid "%pB: missing import name for IMPORT_NAME_EXPORTAS for %s"
+msgstr ""
+
+#: peicode.h:849
+#, c-format
+msgid "%pB: unrecognized import name type; %x"
+msgstr ""
+
+#: peicode.h:1298
+#, c-format
+msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
+msgstr ""
+
+#: peicode.h:1311
+#, c-format
+msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
+msgstr ""
+
+#: peicode.h:1329
+#, c-format
+msgid "%pB: size field is zero in Import Library Format header"
+msgstr ""
+
+#: peicode.h:1355
+#, c-format
+msgid "%pB: string not null terminated in ILF object file"
+msgstr ""
+
+#: peicode.h:1426
+#, c-format
+msgid "%pB: error: debug data ends beyond end of debug directory"
+msgstr ""
+
+#: peicode.h:1598
+#, fuzzy, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr "Pelarasan"
+
+#: peicode.h:1608
+#, fuzzy, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr "Pelarasan"
+
+#: peicode.h:1616
+#, fuzzy, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr "%1 PB"
+
+#: plugin.c:197
+#, c-format
+msgid "%s: failed to open to extract object only section: %s"
+msgstr ""
+
+#: plugin.c:214
+#, c-format
+msgid "%pB: invalid file to extract object only section: %s"
+msgstr ""
+
+#: plugin.c:227
+#, c-format
+msgid "%pB: failed to extract object only section: %s"
+msgstr ""
+
+#: plugin.c:247
+#, c-format
+msgid "%pB: failed to open object only section: %s"
+msgstr ""
+
+#: plugin.c:257
+#, c-format
+msgid "%pB: failed to get symbol table in object only section: %s"
+msgstr ""
+
+#: plugin.c:413
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr ""
+
+#: ppcboot.c:392
+#, fuzzy, c-format
+msgid ""
+"\n"
+"ppcboot header:\n"
+msgstr "_Pengepala"
+
+#: ppcboot.c:393
+#, fuzzy, c-format
+msgid "Entry offset        = 0x%.8lx (%ld)\n"
+msgstr "offset fail zip kepada masukan rosak"
+
+#: ppcboot.c:395
+#, fuzzy, c-format
+msgid "Length              = 0x%.8lx (%ld)\n"
+msgstr "Memadam fail %ld drpd %ld"
+
+#: ppcboot.c:399
+#, fuzzy, c-format
+msgid "Flag field          = 0x%.2x\n"
+msgstr "2x"
+
+#: ppcboot.c:405
+#, fuzzy, c-format
+msgid "Partition name      = \"%s\"\n"
+msgstr "Ralat menetapkan nama sekatan"
+
+#: ppcboot.c:425
+#, c-format
+msgid ""
+"\n"
+"Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr ""
+
+#: ppcboot.c:432
+#, c-format
+msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr ""
+
+#: ppcboot.c:439
+#, c-format
+msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
+msgstr ""
+
+#: ppcboot.c:443
+#, c-format
+msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
+msgstr ""
+
+#: reloc.c:8417
+#, fuzzy
+msgid "INPUT_SECTION_FLAGS are not supported"
+msgstr "Bendera terima tidak disokong"
+
+#: reloc.c:8683
+#, c-format
+msgid "%pB: unrecognized relocation type %#x in section `%pA'"
+msgstr ""
+
+#. PR 21803: Suggest the most likely cause of this error.
+#: reloc.c:8687
+#, fuzzy, c-format
+msgid "is this version of the linker - %s - out of date ?"
+msgstr "Pralihat sudah ketinggalan zaman"
+
+#: rs6000-core.c:471
+#, fuzzy, c-format
+msgid "%pB: warning core file truncated"
+msgstr "Abai dan tinggalkan fail core"
+
+#: som.c:3002
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr ""
+
+#: som.c:3015
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr ""
+
+#. User has specified a subspace without its containing space.
+#: som.c:5403
+#, c-format
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr ""
+
+#: som.c:5449
+#, fuzzy, c-format
+msgid ""
+"\n"
+"Exec Auxiliary Header\n"
+msgstr "Jalankan"
+
+#: som.c:5758
+#, fuzzy
+msgid "som_sizeof_headers unimplemented"
+msgstr "Tak diimplementasi"
+
+#: srec.c:260
+#, c-format
+msgid "%pB:%d: unexpected character `%s' in S-record file"
+msgstr ""
+
+#: srec.c:488
+#, fuzzy, c-format
+msgid "%pB:%d: byte count %d too small"
+msgstr "Saiz atom QTIF terlalu besar (%d bait)"
+
+#: srec.c:580 srec.c:614
+#, fuzzy, c-format
+msgid "%pB:%d: bad checksum in S-record file"
+msgstr "%s: %s: tag buruk %d dijumpai (fail rosak?)\n"
+
+#: stabs.c:308
+#, c-format
+msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
+msgstr ""
+
+#: syms.c:1120
+#, fuzzy
+msgid "unsupported .stab relocation"
+msgstr " (tidak disokong)"
+
+#: vms-alpha.c:479
+#, fuzzy
+msgid "corrupt EIHD record - size is too small"
+msgstr "Gagal menentukan saiz lightmap. Saiz lightmap maksimum terlalu kecil?"
+
+#: vms-alpha.c:665
+#, c-format
+msgid "unable to read EIHS record at offset %#x"
+msgstr ""
+
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr ""
+
+#: vms-alpha.c:1190
+#, c-format
+msgid "corrupt EGSD record: its size (%#x) is too small"
+msgstr ""
+
+#: vms-alpha.c:1214
+#, c-format
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr ""
+
+#: vms-alpha.c:1224
+#, c-format
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr ""
+
+#: vms-alpha.c:1366
+#, c-format
+msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
+msgstr ""
+
+#: vms-alpha.c:1441
+#, fuzzy, c-format
+msgid "unknown EGSD subtype %d"
+msgstr "Subjenis spline tak diketahui: %d\n"
+
+#: vms-alpha.c:1474
+#, c-format
+msgid "stack overflow (%d) in _bfd_vms_push"
+msgstr ""
+
+#: vms-alpha.c:1488
+#, fuzzy
+msgid "stack underflow in _bfd_vms_pop"
+msgstr "tindanan bawah aliran\n"
+
+#: vms-alpha.c:1562
+#, fuzzy, c-format
+msgid "dst_define_location %u too large"
+msgstr "Mesej terlalu besar untuk sambungan DTLS; maksimum ialah %u bait"
+
+#. These names have not yet been added to this switch statement.
+#: vms-alpha.c:1765
+#, fuzzy, c-format
+msgid "unknown ETIR command %d"
+msgstr "tidak diketahui-%d"
+
+#: vms-alpha.c:1796
+#, fuzzy
+msgid "corrupt vms value"
+msgstr "Takat rosak"
+
+#: vms-alpha.c:1927
+#, fuzzy
+msgid "corrupt ETIR record encountered"
+msgstr "Fail rosak?"
+
+#: vms-alpha.c:1989
+#, fuzzy, c-format
+msgid "bad section index in %s"
+msgstr "Nilai magik buruk dalam profile_section_t"
+
+#: vms-alpha.c:2003
+#, fuzzy, c-format
+msgid "unsupported STA cmd %s"
+msgstr "Tema tidak disokong '%s'."
+
+#. Insert field.
+#. Unsigned shift.
+#. Rotate.
+#. Redefine symbol to current location.
+#. Define a literal.
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
+#, fuzzy, c-format
+msgid "%s: not supported"
+msgstr "Format %s tidak disokong"
+
+#: vms-alpha.c:2217
+#, fuzzy, c-format
+msgid "%s: not implemented"
+msgstr "%s tidak dilaksanakan"
+
+#: vms-alpha.c:2382 vms-alpha.c:2397
+#, fuzzy, c-format
+msgid "invalid %s"
+msgstr "%s tidak sah - %s"
+
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2457
+#, fuzzy, c-format
+msgid "%s divide by zero"
+msgstr "Bahagi [/]"
+
+#: vms-alpha.c:2523
+#, fuzzy, c-format
+msgid "invalid use of %s with contexts"
+msgstr "Tidak dapat menyenaraikan konteks fail"
+
+#: vms-alpha.c:2581
+#, fuzzy, c-format
+msgid "reserved cmd %d"
+msgstr "Simpanan"
+
+#: vms-alpha.c:2665
+#, fuzzy
+msgid "corrupt EEOM record - size is too small"
+msgstr "Gagal menentukan saiz lightmap. Saiz lightmap maksimum terlalu kecil?"
+
+#: vms-alpha.c:2674
+#, fuzzy
+msgid "object module not error-free !"
+msgstr "Ralat: Laluan objek tidak dinyatakan\n"
+
+#: vms-alpha.c:4006
+#, c-format
+msgid "SEC_RELOC with no relocs in section %pA"
+msgstr ""
+
+#: vms-alpha.c:4058 vms-alpha.c:4286
+#, fuzzy, c-format
+msgid "size error in section %pA"
+msgstr "Ralat sintaks dalam pengepala seksyen profil"
+
+#: vms-alpha.c:4229
+msgid "spurious ALPHA_R_BSR reloc"
+msgstr ""
+
+#: vms-alpha.c:4272
+#, fuzzy, c-format
+msgid "unhandled relocation %s"
+msgstr "Pengecualian tidak dikendalikan berlaku: %s"
+
+#: vms-alpha.c:4637
+#, fuzzy, c-format
+msgid "unknown source command %d"
+msgstr "tidak diketahui-%d"
+
+#: vms-alpha.c:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804
+#: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842
+#: vms-alpha.c:4847
+#, c-format
+msgid "%s not implemented"
+msgstr "%s tidak dilaksanakan"
+
+#: vms-alpha.c:4883
+#, fuzzy, c-format
+msgid "unknown line command %d"
+msgstr "Nilai data tridak diketahui \"%s\" pada baris %d. Diabaikan."
+
+#: vms-alpha.c:5322
+#, fuzzy
+msgid "corrupt reloc record"
+msgstr "Fail rosak?"
+
+#: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405
+#: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443
+#, fuzzy, c-format
+msgid "unknown reloc %s + %s"
+msgstr "\t\tSambungan tidak diketahui %s (%s):\n"
+
+#: vms-alpha.c:5502
+#, fuzzy, c-format
+msgid "unknown reloc %s"
+msgstr "\t\tSambungan tidak diketahui %s (%s):\n"
+
+#: vms-alpha.c:5516
+#, fuzzy
+msgid "invalid section index in ETIR"
+msgstr "Objek profile_section tidak sah"
+
+#: vms-alpha.c:5525
+#, fuzzy
+msgid "relocation for non-REL psect"
+msgstr "Direktori-direktori untuk diindeks secara bukan-rekursif"
+
+#: vms-alpha.c:5578
+#, fuzzy, c-format
+msgid "unknown symbol in command %s"
+msgstr "arahan tidak diketahui: '%1$s'"
+
+#: vms-alpha.c:5996
+#, fuzzy, c-format
+msgid "reloc (%d) is *UNKNOWN*"
+msgstr "Mod piksel tidak diketahui: %d\n"
+
+#: vms-alpha.c:6113
+#, fuzzy, c-format
+msgid "  EMH %d (len=%u): "
+msgstr "Ralat membaca dari klien, len = %d\n"
+
+#: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216
+#, fuzzy, c-format
+msgid "   Error: %s min length is %u\n"
+msgstr "Jarak Fokus Min"
+
+#: vms-alpha.c:6141
+#, fuzzy, c-format
+msgid "Module header\n"
+msgstr "Modul"
+
+#: vms-alpha.c:6142
+#, fuzzy, c-format
+msgid "   structure level: %u\n"
+msgstr "Struktur"
+
+#: vms-alpha.c:6143
+#, fuzzy, c-format
+msgid "   max record size: %u\n"
+msgstr "Nilai tidak sah bagi record_size"
+
+#: vms-alpha.c:6149
+#, fuzzy, c-format
+msgid "   Error: The module name is missing\n"
+msgstr "Nama tidak ditulis"
+
+#: vms-alpha.c:6155
+#, fuzzy, c-format
+msgid "   Error: The module name is too long\n"
+msgstr "Nama arkib terlalu panjang."
+
+#: vms-alpha.c:6158
+#, fuzzy, c-format
+msgid "   module name    : %.*s\n"
+msgstr "Nama Modul Teratas"
+
+#: vms-alpha.c:6162
+#, fuzzy, c-format
+msgid "   Error: The module version is missing\n"
+msgstr "Ralat kaji hurai: Ruang Putih Hilang"
+
+#: vms-alpha.c:6168
+#, fuzzy, c-format
+msgid "   Error: The module version is too long\n"
+msgstr "Menunggu sistem fail terlalu lama"
+
+#: vms-alpha.c:6171
+#, fuzzy, c-format
+msgid "   module version : %.*s\n"
+msgstr "versi modul tidak sepadan dalam `%s'"
+
+#: vms-alpha.c:6174
+#, fuzzy, c-format
+msgid "   Error: The compile date is truncated\n"
+msgstr "Kompil keâ€¦"
+
+#: vms-alpha.c:6176
+#, fuzzy, c-format
+msgid "   compile date   : %.17s\n"
+msgstr "Kompil keâ€¦"
+
+#: vms-alpha.c:6181
+#, fuzzy, c-format
+msgid "Language Processor Name\n"
+msgstr "Bahasa Melayu"
+
+#: vms-alpha.c:6182
+#, fuzzy, c-format
+msgid "   language name: %.*s\n"
+msgstr "Bahasa: %s"
+
+#: vms-alpha.c:6186
+#, fuzzy, c-format
+msgid "Source Files Header\n"
+msgstr "Jana pengepala sumber"
+
+#: vms-alpha.c:6187
+#, fuzzy, c-format
+msgid "   file: %.*s\n"
+msgstr "Tiada fail %s sebegitu"
+
+#: vms-alpha.c:6191
+#, fuzzy, c-format
+msgid "Title Text Header\n"
+msgstr "Pengepala Tetingkap - Tajuk"
+
+#: vms-alpha.c:6192
+#, fuzzy, c-format
+msgid "   title: %.*s\n"
+msgstr ""
+"  pengepala    = %s\n"
+"  footer kiri  = %s\n"
+"  footer       = %s\n"
+"  footer kanan = %s\n"
+"  tajuk kiri   = %s\n"
+"  tajuk tengah = %s\n"
+"  tajuk kanan  = %s\n"
+"  under lay    = %s\n"
+
+#: vms-alpha.c:6196
+#, fuzzy, c-format
+msgid "Copyright Header\n"
+msgstr "Hakcipta"
+
+#: vms-alpha.c:6197
+#, fuzzy, c-format
+msgid "   copyright: %.*s\n"
+msgstr "Hakcipta %s."
+
+#: vms-alpha.c:6201
+#, fuzzy, c-format
+msgid "unhandled emh subtype %u\n"
+msgstr "Subjenis"
+
+#: vms-alpha.c:6211
+#, fuzzy, c-format
+msgid "  EEOM (len=%u):\n"
+msgstr "LEN(\"hello\") mengembalikan 5"
+
+#: vms-alpha.c:6221
+#, fuzzy, c-format
+msgid "   number of cond linkage pairs: %u\n"
+msgstr "bilangan pasangan asas per giliran heliks"
+
+#: vms-alpha.c:6223
+#, fuzzy, c-format
+msgid "   completion code: %u\n"
+msgstr "Kod ralat %u ketika mengesahihkan: %s"
+
+#: vms-alpha.c:6228
+#, fuzzy, c-format
+msgid "   transfer addr flags: 0x%02x\n"
+msgstr "DVDRead tidak dapa membaca blok %d/%d pada 0x%02x."
+
+#: vms-alpha.c:6229
+#, fuzzy, c-format
+msgid "   transfer addr psect: %u\n"
+msgstr "%u pemindahan selesai"
+
+#: vms-alpha.c:6231
+#, fuzzy, c-format
+msgid "   transfer address   : 0x%08x\n"
+msgstr "Pindah"
+
+#: vms-alpha.c:6240
+#, fuzzy
+msgid " WEAK"
+msgstr "Lemah"
+
+#: vms-alpha.c:6242
+msgid " DEF"
+msgstr " DEF"
+
+#: vms-alpha.c:6244
+#, fuzzy
+msgid " UNI"
+msgstr "Tanda sebagai _Tidak Penting"
+
+#: vms-alpha.c:6246 vms-alpha.c:6267
+msgid " REL"
+msgstr ""
+
+#: vms-alpha.c:6248
+#, fuzzy
+msgid " COMM"
+msgstr "_Perintah:"
+
+#: vms-alpha.c:6250
+msgid " VECEP"
+msgstr ""
+
+#: vms-alpha.c:6252
+#, fuzzy
+msgid " NORM"
+msgstr "IMABS(nombor kompleks) mengembalikan norma nombor kompleks berbentuk x+yi."
+
+#: vms-alpha.c:6254
+msgid " QVAL"
+msgstr ""
+
+#: vms-alpha.c:6261
+msgid " PIC"
+msgstr ""
+
+#: vms-alpha.c:6263
+#, fuzzy
+msgid " LIB"
+msgstr "Mentakrifkan laluan ke binari open ssl. Ia mungkin memerlukan satu HOME env ($ENV{HOME} = '/var/lib/wwwrun';)."
+
+#: vms-alpha.c:6265
+#, fuzzy
+msgid " OVR"
+msgstr " OVR "
+
+#: vms-alpha.c:6269
+msgid " GBL"
+msgstr ""
+
+#: vms-alpha.c:6271
+msgid " SHR"
+msgstr ""
+
+#: vms-alpha.c:6273
+#, fuzzy
+msgid " EXE"
+msgstr "Jalankan fail .exe di dalam pemacu maya ini"
+
+#: vms-alpha.c:6275
+#, fuzzy
+msgid " RD"
+msgstr "RD$"
+
+#: vms-alpha.c:6277
+#, fuzzy
+msgid " WRT"
+msgstr "Lapor status modul-modul GNOME dengan matlamat 3.0"
+
+#: vms-alpha.c:6279
+msgid " VEC"
+msgstr ""
+
+#: vms-alpha.c:6281
+msgid " NOMOD"
+msgstr ""
+
+#: vms-alpha.c:6283
+#, fuzzy
+msgid " COM"
+msgstr "Hantar ter_mampat"
+
+#: vms-alpha.c:6285
+msgid " 64B"
+msgstr ""
+
+#: vms-alpha.c:6294
+#, fuzzy, c-format
+msgid "  EGSD (len=%u):\n"
+msgstr "LEN(\"hello\") mengembalikan 5"
+
+#: vms-alpha.c:6309
+#, c-format
+msgid "  EGSD entry %2u (type: %u, len: %u): "
+msgstr ""
+
+#: vms-alpha.c:6315 vms-alpha.c:6610
+#, fuzzy, c-format
+msgid "   Erroneous length\n"
+msgstr "Jangka masa"
+
+#: vms-alpha.c:6328
+#, fuzzy, c-format
+msgid "PSC - Program section definition\n"
+msgstr "program tidak dibenarkan dalam seksyen ini"
+
+#: vms-alpha.c:6329 vms-alpha.c:6349
+#, fuzzy, c-format
+msgid "   alignment  : 2**%u\n"
+msgstr "J&ajaran"
+
+#: vms-alpha.c:6330 vms-alpha.c:6350
+#, fuzzy, c-format
+msgid "   flags      : 0x%04x"
+msgstr "(0x%04x, '%s'): "
+
+#: vms-alpha.c:6334
+#, c-format
+msgid "   alloc (len): %u (0x%08x)\n"
+msgstr ""
+
+#: vms-alpha.c:6336 vms-alpha.c:6402 vms-alpha.c:6470
+#, fuzzy, c-format
+msgid "   name       : %.*s\n"
+msgstr "    nama: %.*s\n"
+
+#: vms-alpha.c:6348
+#, c-format
+msgid "SPSC - Shared Image Program section def\n"
+msgstr ""
+
+#: vms-alpha.c:6354
+#, c-format
+msgid "   alloc (len)   : %u (0x%08x)\n"
+msgstr ""
+
+#: vms-alpha.c:6355
+#, fuzzy, c-format
+msgid "   image offset  : 0x%08x\n"
+msgstr "Ofset kawasan imej"
+
+#: vms-alpha.c:6357
+#, fuzzy, c-format
+msgid "   symvec offset : 0x%08x\n"
+msgstr "ofset"
+
+#: vms-alpha.c:6360
+#, fuzzy, c-format
+msgid "   name          : %.*s\n"
+msgstr "    nama: %.*s\n"
+
+#: vms-alpha.c:6376
+#, fuzzy, c-format
+msgid "SYM - Global symbol definition\n"
+msgstr "Lompat ke takrifan simbol"
+
+#: vms-alpha.c:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505
+#, fuzzy, c-format
+msgid "   flags: 0x%04x"
+msgstr "(0x%04x, '%s'): "
+
+#: vms-alpha.c:6380
+#, fuzzy, c-format
+msgid "   psect offset: 0x%08x\n"
+msgstr "ofset"
+
+#: vms-alpha.c:6384
+#, fuzzy, c-format
+msgid "   code address: 0x%08x\n"
+msgstr "ralat tidak diketahui (kod ralat %08x)."
+
+#: vms-alpha.c:6386
+#, fuzzy, c-format
+msgid "   psect index for entry point : %u\n"
+msgstr "Masukan palet %u"
+
+#: vms-alpha.c:6389 vms-alpha.c:6489 vms-alpha.c:6512
+#, fuzzy, c-format
+msgid "   psect index : %u\n"
+msgstr "%U"
+
+#: vms-alpha.c:6392 vms-alpha.c:6492 vms-alpha.c:6515
+#, fuzzy, c-format
+msgid "   name        : %.*s\n"
+msgstr "    nama: %.*s\n"
+
+#: vms-alpha.c:6400
+#, fuzzy, c-format
+msgid "SYM - Global symbol reference\n"
+msgstr "Simbol"
+
+#: vms-alpha.c:6415
+#, fuzzy, c-format
+msgid "IDC - Ident Consistency check\n"
+msgstr "IDENT: socket() gagal"
+
+#: vms-alpha.c:6416
+#, fuzzy, c-format
+msgid "   flags         : 0x%08x"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:6420
+#, fuzzy, c-format
+msgid "   id match      : %x\n"
+msgstr "Tiada padanan"
+
+#: vms-alpha.c:6422
+#, fuzzy, c-format
+msgid "   error severity: %x\n"
+msgstr "ralat dalaman X: %s\n"
+
+#: vms-alpha.c:6426
+#, fuzzy, c-format
+msgid "   entity name   : %.*s\n"
+msgstr "Nama entiti \"%-.*s\" tidak diketahui"
+
+#: vms-alpha.c:6432
+#, fuzzy, c-format
+msgid "   object name   : %.*s\n"
+msgstr "Nama Objek"
+
+#: vms-alpha.c:6441
+#, fuzzy, c-format
+msgid "   binary ident  : 0x%08x\n"
+msgstr "binari"
+
+#: vms-alpha.c:6445
+#, fuzzy, c-format
+msgid "   ascii ident   : %.*s\n"
+msgstr "IDENT: disambungkan kepada %s:%u"
+
+#: vms-alpha.c:6457
+#, fuzzy, c-format
+msgid "SYMG - Universal symbol definition\n"
+msgstr "Lompat ke takrifan simbol"
+
+#: vms-alpha.c:6461
+#, c-format
+msgid "   symbol vector offset: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6463
+#, fuzzy, c-format
+msgid "   entry point: 0x%08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:6465
+#, fuzzy, c-format
+msgid "   proc descr : 0x%08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:6467
+#, fuzzy, c-format
+msgid "   psect index: %u\n"
+msgstr "%U"
+
+#: vms-alpha.c:6481
+#, fuzzy, c-format
+msgid "SYMV - Vectored symbol definition\n"
+msgstr "Lompat ke takrifan simbol"
+
+#: vms-alpha.c:6485
+#, fuzzy, c-format
+msgid "   vector      : 0x%08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:6487 vms-alpha.c:6510
+#, fuzzy, c-format
+msgid "   psect offset: %u\n"
+msgstr "ofset"
+
+#: vms-alpha.c:6504
+#, fuzzy, c-format
+msgid "SYMM - Global symbol definition with version\n"
+msgstr "Lompat ke takrifan simbol"
+
+#: vms-alpha.c:6508
+#, fuzzy, c-format
+msgid "   version mask: 0x%08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:6521
+#, fuzzy, c-format
+msgid "unhandled egsd entry type %u\n"
+msgstr "Xmpdatum %1 tidak dikendali bagi jenis %2"
+
+#: vms-alpha.c:6560
+#, c-format
+msgid "    linkage index: %u, replacement insn: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:6564
+#, c-format
+msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6569
+#, c-format
+msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6575
+#, c-format
+msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6580
+#, fuzzy, c-format
+msgid "    global name: %.*s\n"
+msgstr "Tidak boleh bertembung dengan nama pemalar global yang telah wujud."
+
+#: vms-alpha.c:6592
+#, fuzzy, c-format
+msgid "  %s (len=%u):\n"
+msgstr "Len Tower"
+
+#: vms-alpha.c:6615
+#, fuzzy, c-format
+msgid "   (type: %3u, size: %3u): "
+msgstr "jenis saiz tidak sah `%c'"
+
+#: vms-alpha.c:6621
+#, fuzzy, c-format
+msgid "STA_GBL (stack global) %.*s\n"
+msgstr "Batalkan perincian sejagat untuk repositori \"%s\":"
+
+#: vms-alpha.c:6625
+#, fuzzy, c-format
+msgid "STA_LW (stack longword)"
+msgstr "Tarikh m_ula:"
+
+#: vms-alpha.c:6631
+#, fuzzy, c-format
+msgid "STA_QW (stack quadword)"
+msgstr "Tarikh m_ula:"
+
+#: vms-alpha.c:6638
+#, c-format
+msgid "STA_PQ (stack psect base + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6641
+#, c-format
+msgid "    psect: %u, offset: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6647
+#, fuzzy, c-format
+msgid "STA_LI (stack literal)\n"
+msgstr "Tarikh m_ula:"
+
+#: vms-alpha.c:6650
+#, fuzzy, c-format
+msgid "STA_MOD (stack module)\n"
+msgstr "Modul %(mod)r tidak dipasang"
+
+#: vms-alpha.c:6653
+#, c-format
+msgid "STA_CKARG (compare procedure argument)\n"
+msgstr ""
+
+#: vms-alpha.c:6657
+#, fuzzy, c-format
+msgid "STO_B (store byte)\n"
+msgstr "bait,bait,B"
+
+#: vms-alpha.c:6660
+#, fuzzy, c-format
+msgid "STO_W (store word)\n"
+msgstr "  -W, --word-mode            banding perkataan dan bukannya baris\n"
+
+#: vms-alpha.c:6663
+#, fuzzy, c-format
+msgid "STO_LW (store longword)\n"
+msgstr "&Simpan"
+
+#: vms-alpha.c:6666
+#, fuzzy, c-format
+msgid "STO_QW (store quadword)\n"
+msgstr "&Simpan"
+
+#: vms-alpha.c:6673
+#, c-format
+msgid "STO_IMMR (store immediate repeat) %u bytes\n"
+msgstr ""
+
+#: vms-alpha.c:6682
+#, fuzzy, c-format
+msgid "STO_GBL (store global) %.*s\n"
+msgstr "Batalkan perincian sejagat untuk repositori \"%s\":"
+
+#: vms-alpha.c:6687
+#, c-format
+msgid "STO_CA (store code address) %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6691
+#, c-format
+msgid "STO_RB (store relative branch)\n"
+msgstr ""
+
+#: vms-alpha.c:6694
+#, fuzzy, c-format
+msgid "STO_AB (store absolute branch)\n"
+msgstr "Punca simpanan %s bukan laluan mutlak"
+
+#: vms-alpha.c:6697
+#, c-format
+msgid "STO_OFF (store offset to psect)\n"
+msgstr ""
+
+#: vms-alpha.c:6704
+#, c-format
+msgid "STO_IMM (store immediate) %u bytes\n"
+msgstr ""
+
+#: vms-alpha.c:6713
+#, c-format
+msgid "STO_GBL_LW (store global longword) %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:6717
+#, c-format
+msgid "STO_OFF (store LP with procedure signature)\n"
+msgstr ""
+
+#: vms-alpha.c:6720
+#, c-format
+msgid "STO_BR_GBL (store branch global) *todo*\n"
+msgstr ""
+
+#: vms-alpha.c:6723
+#, c-format
+msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
+msgstr ""
+
+#: vms-alpha.c:6727
+#, fuzzy, c-format
+msgid "OPR_NOP (no-operation)\n"
+msgstr "Sisip &nop"
+
+#: vms-alpha.c:6730
+#, fuzzy, c-format
+msgid "OPR_ADD (add)\n"
+msgstr "Tambah"
+
+#: vms-alpha.c:6733
+#, fuzzy, c-format
+msgid "OPR_SUB (subtract)\n"
+msgstr "Tolak [-]"
+
+#: vms-alpha.c:6736
+#, fuzzy, c-format
+msgid "OPR_MUL (multiply)\n"
+msgstr "Darab [*]"
+
+#: vms-alpha.c:6739
+#, fuzzy, c-format
+msgid "OPR_DIV (divide)\n"
+msgstr "Bahagi [/]"
+
+#: vms-alpha.c:6742
+#, fuzzy, c-format
+msgid "OPR_AND (logical and)\n"
+msgstr "logikal not"
+
+#: vms-alpha.c:6745
+#, fuzzy, c-format
+msgid "OPR_IOR (logical inclusive or)\n"
+msgstr "logikal not"
+
+#: vms-alpha.c:6748
+#, fuzzy, c-format
+msgid "OPR_EOR (logical exclusive or)\n"
+msgstr "Boolean Exclusive OR"
+
+#: vms-alpha.c:6751
+#, fuzzy, c-format
+msgid "OPR_NEG (negate)\n"
+msgstr "Sangkal"
+
+#: vms-alpha.c:6754
+#, fuzzy, c-format
+msgid "OPR_COM (complement)\n"
+msgstr "pelengkap"
+
+#: vms-alpha.c:6757
+#, fuzzy, c-format
+msgid "OPR_INSV (insert field)\n"
+msgstr "Selitkan Ke Dalam Medan Edit"
+
+#: vms-alpha.c:6760
+#, fuzzy, c-format
+msgid "OPR_ASH (arithmetic shift)\n"
+msgstr "Abu Gunung Berapi"
+
+#: vms-alpha.c:6763
+#, fuzzy, c-format
+msgid "OPR_USH (unsigned shift)\n"
+msgstr "K_osongkan Peti Keluar"
+
+#: vms-alpha.c:6766
+#, fuzzy, c-format
+msgid "OPR_ROT (rotate)\n"
+msgstr "&Putar..."
+
+#: vms-alpha.c:6769
+#, fuzzy, c-format
+msgid "OPR_SEL (select)\n"
+msgstr "%(sel)s daripada %(cnt)s dipilih"
+
+#: vms-alpha.c:6772
+#, c-format
+msgid "OPR_REDEF (redefine symbol to curr location)\n"
+msgstr ""
+
+#: vms-alpha.c:6775
+#, fuzzy, c-format
+msgid "OPR_REDEF (define a literal)\n"
+msgstr "Bidang perlu menjadi perkataan literal."
+
+#: vms-alpha.c:6779
+#, c-format
+msgid "STC_LP (store cond linkage pair)\n"
+msgstr ""
+
+#: vms-alpha.c:6783
+#, c-format
+msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
+msgstr ""
+
+#: vms-alpha.c:6787
+#, fuzzy, c-format
+msgid "   linkage index: %u, procedure: %.*s\n"
+msgstr "%s bukan objek prosedur"
+
+#: vms-alpha.c:6794
+#, fuzzy, c-format
+msgid "   signature: %.*s\n"
+msgstr "Ralat mengesahkan tanda tangan: %s"
+
+#: vms-alpha.c:6800
+#, c-format
+msgid "STC_GBL (store cond global)\n"
+msgstr ""
+
+#: vms-alpha.c:6803
+#, fuzzy, c-format
+msgid "   linkage index: %u, global: %.*s\n"
+msgstr "Batalkan perincian sejagat untuk repositori \"%s\":"
+
+#: vms-alpha.c:6808
+#, c-format
+msgid "STC_GCA (store cond code address)\n"
+msgstr ""
+
+#: vms-alpha.c:6811
+#, fuzzy, c-format
+msgid "   linkage index: %u, procedure name: %.*s\n"
+msgstr "gagal mendapatkan nama untuk platform %u (%s)"
+
+#: vms-alpha.c:6816
+#, c-format
+msgid "STC_PS (store cond psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6820
+#, c-format
+msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
+msgstr ""
+
+#: vms-alpha.c:6827
+#, c-format
+msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6831
+#, c-format
+msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6835
+#, c-format
+msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6839
+#, c-format
+msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6843
+#, c-format
+msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6847
+#, c-format
+msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6851
+#, c-format
+msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6855
+#, c-format
+msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6860
+#, c-format
+msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
+msgstr ""
+
+#: vms-alpha.c:6864
+#, c-format
+msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
+msgstr ""
+
+#: vms-alpha.c:6868
+#, c-format
+msgid "CTL_SETRB (set relocation base)\n"
+msgstr ""
+
+#: vms-alpha.c:6874
+#, c-format
+msgid "CTL_AUGRB (augment relocation base) %u\n"
+msgstr ""
+
+#: vms-alpha.c:6879
+#, fuzzy, c-format
+msgid "CTL_DFLOC (define location)\n"
+msgstr "Lokasi:"
+
+#: vms-alpha.c:6882
+#, fuzzy, c-format
+msgid "CTL_STLOC (set location)\n"
+msgstr "Arahan log keluar belum ditetapkan"
+
+#: vms-alpha.c:6885
+#, fuzzy, c-format
+msgid "CTL_STKDL (stack defined location)\n"
+msgstr "Laluan ke direktori pembayang. Jika tiada laluan ditakrifkan, lokasi lalai akan digunakan."
+
+#: vms-alpha.c:6888 vms-alpha.c:7316 vms-alpha.c:7477
+#, fuzzy, c-format
+msgid "*unhandled*\n"
+msgstr "Ralat tidak boleh kendali"
+
+#: vms-alpha.c:6913
+#, fuzzy, c-format
+msgid "cannot read GST record header\n"
+msgstr "Gagal membaca pengepala QTIF"
+
+#. Ill-formed.
+#: vms-alpha.c:6936
+#, c-format
+msgid "cannot find EMH in first GST record\n"
+msgstr ""
+
+#: vms-alpha.c:6960
+#, fuzzy, c-format
+msgid "corrupted GST\n"
+msgstr "profil-gst"
+
+#: vms-alpha.c:6973
+#, fuzzy, c-format
+msgid "cannot read GST record\n"
+msgstr "profil-gst"
+
+#: vms-alpha.c:7000
+#, fuzzy, c-format
+msgid " unhandled EOBJ record type %u\n"
+msgstr "Xmpdatum %1 tidak dikendali bagi jenis %2"
+
+#: vms-alpha.c:7025
+#, c-format
+msgid "  bitcount: %u, base addr: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7039
+#, c-format
+msgid "   bitmap: 0x%08x (count: %u):\n"
+msgstr ""
+
+#: vms-alpha.c:7046
+#, c-format
+msgid " %08x"
+msgstr " %08x"
+
+#: vms-alpha.c:7073
+#, fuzzy, c-format
+msgid "  image %u (%u entries)\n"
+msgstr "Menyimpan imej â€œ%sâ€� (%u/%u)"
+
+#: vms-alpha.c:7079
+#, c-format
+msgid "   offset: 0x%08x, val: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7102
+#, fuzzy, c-format
+msgid "  image %u (%u entries), offsets:\n"
+msgstr "Menyimpan imej â€œ%sâ€� (%u/%u)"
+
+#: vms-alpha.c:7109
+#, c-format
+msgid " 0x%08x"
+msgstr " 0x%08x"
+
+#. 64 bits.
+#: vms-alpha.c:7235
+#, fuzzy, c-format
+msgid "64 bits *unhandled*\n"
+msgstr "64 bit"
+
+#: vms-alpha.c:7240
+#, c-format
+msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7251
+#, fuzzy, c-format
+msgid "non-contiguous array of %s\n"
+msgstr "data berterusan"
+
+#: vms-alpha.c:7258
+#, c-format
+msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7263
+#, c-format
+msgid "arsize: %u, a0: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7267
+#, c-format
+msgid "Strides:\n"
+msgstr ""
+
+#: vms-alpha.c:7281
+#, fuzzy, c-format
+msgid "Bounds:\n"
+msgstr "Batas Kiri"
+
+#: vms-alpha.c:7288
+#, fuzzy, c-format
+msgid "[%u]: Lower: %u, upper: %u\n"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:7302
+#, fuzzy, c-format
+msgid "unaligned bit-string of %s\n"
+msgstr "Tidak boleh membaca petikan bit: %s\n"
+
+#: vms-alpha.c:7309
+#, fuzzy, c-format
+msgid "base: %u, pos: %u\n"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:7335
+#, fuzzy, c-format
+msgid "vflags: 0x%02x, value: 0x%08x "
+msgstr "DVDRead tidak dapa membaca blok %d/%d pada 0x%02x."
+
+#: vms-alpha.c:7342
+#, fuzzy, c-format
+msgid "(no value)\n"
+msgstr "nilai"
+
+#: vms-alpha.c:7345
+#, fuzzy, c-format
+msgid "(not active)\n"
+msgstr "tidak aktif"
+
+#: vms-alpha.c:7348
+#, fuzzy, c-format
+msgid "(not allocated)\n"
+msgstr "DIUMPUKKAN"
+
+#: vms-alpha.c:7351
+#, fuzzy, c-format
+msgid "(descriptor)\n"
+msgstr "Penerang salin"
+
+#: vms-alpha.c:7356
+#, fuzzy, c-format
+msgid "(trailing value)\n"
+msgstr "Slash dibelakang"
+
+#: vms-alpha.c:7359
+#, fuzzy, c-format
+msgid "(value spec follows)\n"
+msgstr "spec RPM"
+
+#: vms-alpha.c:7362
+#, fuzzy, c-format
+msgid "(at bit offset %u)\n"
+msgstr "%u bit"
+
+#: vms-alpha.c:7366
+#, c-format
+msgid "(reg: %u, disp: %u, indir: %u, kind: "
+msgstr ""
+
+#: vms-alpha.c:7373
+#, fuzzy
+msgid "literal"
+msgstr "Bidang perlu menjadi perkataan literal."
+
+#: vms-alpha.c:7376
+msgid "address"
+msgstr "alamat"
+
+#: vms-alpha.c:7379
+#, fuzzy
+msgid "desc"
+msgstr "  Huraian:  %1"
+
+#: vms-alpha.c:7382
+#, fuzzy
+msgid "reg"
+msgstr "Reg "
+
+#: vms-alpha.c:7403
+#, fuzzy, c-format
+msgid "len: %2u, kind: %2u "
+msgstr "Len Tower"
+
+#: vms-alpha.c:7411
+#, fuzzy, c-format
+msgid "atomic, type=0x%02x %s\n"
+msgstr "DVDRead tidak dapa membaca blok %d/%d pada 0x%02x."
+
+#: vms-alpha.c:7416
+#, c-format
+msgid "indirect, defined at 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7420
+#, fuzzy, c-format
+msgid "typed pointer\n"
+msgstr "hukum kosong untuk bukan terminal ditaip, dan tiada tindakan"
+
+#: vms-alpha.c:7424
+#, c-format
+msgid "pointer\n"
+msgstr "penunjuk\n"
+
+#: vms-alpha.c:7435
+#, fuzzy, c-format
+msgid "array, dim: %u, bitmap: "
+msgstr "Tatasusunan"
+
+#: vms-alpha.c:7450
+#, fuzzy, c-format
+msgid "array descriptor:\n"
+msgstr "Penerang salin"
+
+#: vms-alpha.c:7461
+#, fuzzy, c-format
+msgid "type spec for element:\n"
+msgstr "Jenis tidak dikenali \"%s\" pada unsur <%s>"
+
+#: vms-alpha.c:7463
+#, fuzzy, c-format
+msgid "type spec for subscript %u:\n"
+msgstr "spec RPM"
+
+#: vms-alpha.c:7488
+#, fuzzy, c-format
+msgid "Debug symbol table:\n"
+msgstr "nyahpepijat"
+
+#: vms-alpha.c:7499
+#, fuzzy, c-format
+msgid "cannot read DST header\n"
+msgstr "Gagal membaca pengepala QTIF"
+
+#: vms-alpha.c:7505
+#, c-format
+msgid " type: %3u, len: %3u (at 0x%08x): "
+msgstr ""
+
+#: vms-alpha.c:7524
+#, fuzzy, c-format
+msgid "cannot read DST symbol\n"
+msgstr "Tak dalat membaca CD: %s"
+
+#: vms-alpha.c:7568
+#, fuzzy, c-format
+msgid "standard data: %s\n"
+msgstr "Hantar data sebagai &input standard"
+
+#: vms-alpha.c:7572 vms-alpha.c:7696
+#, c-format
+msgid "    name: %.*s\n"
+msgstr "    nama: %.*s\n"
+
+#: vms-alpha.c:7580
+#, c-format
+msgid "modbeg\n"
+msgstr ""
+
+#: vms-alpha.c:7584
+#, c-format
+msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7594 vms-alpha.c:7963
+#, fuzzy, c-format
+msgid "   module name: %.*s\n"
+msgstr "Nama Modul Teratas"
+
+#: vms-alpha.c:7601
+#, c-format
+msgid "   compiler   : %.*s\n"
+msgstr "   pembina    : %.*s\n"
+
+#: vms-alpha.c:7608
+#, c-format
+msgid "modend\n"
+msgstr ""
+
+#: vms-alpha.c:7615
+msgid "rtnbeg\n"
+msgstr ""
+
+#: vms-alpha.c:7619
+#, c-format
+msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7628
+#, fuzzy, c-format
+msgid "    routine name: %.*s\n"
+msgstr "Nama: %s, EntitiID: %s"
+
+#: vms-alpha.c:7639
+#, fuzzy, c-format
+msgid "rtnend: size 0x%08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:7649
+#, c-format
+msgid "prolog: bkpt address 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7659
+#, fuzzy, c-format
+msgid "epilog: flags: %u, count: %u\n"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:7674
+#, fuzzy, c-format
+msgid "blkbeg: address: 0x%08x, name: %.*s\n"
+msgstr "%s: nama hos adalah sah tetatpi tidak mempunyai alamat IP."
+
+#: vms-alpha.c:7686
+#, fuzzy, c-format
+msgid "blkend: size: 0x%08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:7692
+#, fuzzy, c-format
+msgid "typspec (len: %u)\n"
+msgstr "LEN(\"hello\") mengembalikan 5"
+
+#: vms-alpha.c:7708
+#, fuzzy, c-format
+msgid "septyp, name: %.*s\n"
+msgstr "Nama: %s, EntitiID: %s"
+
+#: vms-alpha.c:7725
+#, fuzzy, c-format
+msgid "recbeg: name: %.*s\n"
+msgstr "Nama: %s, EntitiID: %s"
+
+#: vms-alpha.c:7731
+#, fuzzy, c-format
+msgid "    len: %u bits\n"
+msgstr "%u bit"
+
+#: vms-alpha.c:7737
+#, c-format
+msgid "recend\n"
+msgstr ""
+
+#: vms-alpha.c:7742
+#, fuzzy, c-format
+msgid "enumbeg, len: %u, name: %.*s\n"
+msgstr "gagal mendapatkan nama untuk platform %u (%s)"
+
+#: vms-alpha.c:7748
+#, fuzzy, c-format
+msgid "enumelt, name: %.*s\n"
+msgstr "Nama: %s, EntitiID: %s"
+
+#: vms-alpha.c:7754
+#, c-format
+msgid "enumend\n"
+msgstr ""
+
+#: vms-alpha.c:7761
+#, fuzzy, c-format
+msgid "label, name: %.*s\n"
+msgstr "%s kehilangan nama atau label"
+
+#: vms-alpha.c:7764
+#, fuzzy, c-format
+msgid "    address: 0x%08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:7776
+#, fuzzy, c-format
+msgid "discontiguous range (nbr: %u)\n"
+msgstr "Blok buruk %u diluar julat; diabaikan.\n"
+
+#: vms-alpha.c:7783
+#, fuzzy, c-format
+msgid "    address: 0x%08x, size: %u\n"
+msgstr "%s: saiz alamat mempunyai nilai %u tidak dijangka\n"
+
+#: vms-alpha.c:7794
+#, fuzzy, c-format
+msgid "line num  (len: %u)\n"
+msgstr "%u aksara setiap baris"
+
+#: vms-alpha.c:7813
+#, fuzzy, c-format
+msgid "delta_pc_w %u\n"
+msgstr "PC"
+
+#: vms-alpha.c:7822
+#, fuzzy, c-format
+msgid "incr_linum(b): +%u\n"
+msgstr "%U"
+
+#: vms-alpha.c:7830
+#, fuzzy, c-format
+msgid "incr_linum_w: +%u\n"
+msgstr "%U"
+
+#: vms-alpha.c:7838
+#, fuzzy, c-format
+msgid "incr_linum_l: +%u\n"
+msgstr "Had Laju Muat Naik"
+
+#: vms-alpha.c:7846
+#, fuzzy, c-format
+msgid "set_line_num(w) %u\n"
+msgstr "%u aksara setiap baris"
+
+#: vms-alpha.c:7853
+#, fuzzy, c-format
+msgid "set_line_num_b %u\n"
+msgstr "%u aksara setiap baris"
+
+#: vms-alpha.c:7860
+#, fuzzy, c-format
+msgid "set_line_num_l %u\n"
+msgstr "Kedua-dua L dan U dinyatakan.\n"
+
+#: vms-alpha.c:7867
+#, fuzzy, c-format
+msgid "set_abs_pc: 0x%08x\n"
+msgstr "PC set 1"
+
+#: vms-alpha.c:7873
+#, c-format
+msgid "delta_pc_l: +0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:7880
+#, c-format
+msgid "term(b): 0x%02x"
+msgstr ""
+
+#: vms-alpha.c:7882
+#, c-format
+msgid "        pc: 0x%08x\n"
+msgstr "        pc: 0x%08x\n"
+
+#: vms-alpha.c:7889
+#, fuzzy, c-format
+msgid "term_w: 0x%04x"
+msgstr "(0x%04x, '%s'): "
+
+#: vms-alpha.c:7891
+#, c-format
+msgid "    pc: 0x%08x\n"
+msgstr "    pc: 0x%08x\n"
+
+#: vms-alpha.c:7897
+#, fuzzy, c-format
+msgid "delta pc +%-4d"
+msgstr "PC"
+
+#: vms-alpha.c:7901
+#, c-format
+msgid "    pc: 0x%08x line: %5u\n"
+msgstr ""
+
+#: vms-alpha.c:7906
+#, fuzzy, c-format
+msgid "    *unhandled* cmd %u\n"
+msgstr "Ralat tidak boleh kendali"
+
+#: vms-alpha.c:7921
+#, fuzzy, c-format
+msgid "source (len: %u)\n"
+msgstr "LEN(\"hello\") mengembalikan 5"
+
+#: vms-alpha.c:7940
+#, c-format
+msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7945
+#, c-format
+msgid "   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n"
+msgstr ""
+
+#: vms-alpha.c:7957
+#, c-format
+msgid "   filename   : %.*s\n"
+msgstr "   nama fail   : %.*s\n"
+
+#: vms-alpha.c:7973
+#, fuzzy, c-format
+msgid "   setfile %u\n"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:7980 vms-alpha.c:7987
+#, fuzzy, c-format
+msgid "   setrec %u\n"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:7994 vms-alpha.c:8001
+#, fuzzy, c-format
+msgid "   setlnum %u\n"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:8008 vms-alpha.c:8015
+#, fuzzy, c-format
+msgid "   deflines %u\n"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:8019
+#, c-format
+msgid "   formfeed\n"
+msgstr ""
+
+#: vms-alpha.c:8023
+#, fuzzy, c-format
+msgid "   *unhandled* cmd %u\n"
+msgstr "Ralat tidak boleh kendali"
+
+#: vms-alpha.c:8035
+#, fuzzy, c-format
+msgid "*unhandled* dst type %u\n"
+msgstr "Xmpdatum %1 tidak dikendali bagi jenis %2"
+
+#: vms-alpha.c:8067
+#, fuzzy, c-format
+msgid "cannot read EIHD\n"
+msgstr "Tidak Dapat Baca"
+
+#: vms-alpha.c:8071
+#, fuzzy, c-format
+msgid "EIHD: (size: %u, nbr blocks: %u)\n"
+msgstr "Blok buruk: %u"
+
+#: vms-alpha.c:8075
+#, fuzzy, c-format
+msgid " majorid: %u, minorid: %u\n"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:8083
+msgid "executable"
+msgstr "boleh laksana"
+
+#: vms-alpha.c:8086
+msgid "linkable image"
+msgstr ""
+
+#: vms-alpha.c:8093
+#, fuzzy, c-format
+msgid " image type: %u (%s)"
+msgstr "Menyimpan imej â€œ%sâ€� (%u/%u)"
+
+#: vms-alpha.c:8099
+msgid "native"
+msgstr "asli"
+
+#: vms-alpha.c:8102
+msgid "CLI"
+msgstr "CLI"
+
+#: vms-alpha.c:8109
+#, fuzzy, c-format
+msgid ", subtype: %u (%s)\n"
+msgstr "Gagal untuk menambah sub jenis '%s': %s\n"
+
+#: vms-alpha.c:8116
+#, c-format
+msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8120
+#, fuzzy, c-format
+msgid " fixup info rva: "
+msgstr "Jenis               Saiz     Rva      Offset\n"
+
+#: vms-alpha.c:8122
+#, fuzzy, c-format
+msgid ", symbol vector rva: "
+msgstr "Grafik Vektor"
+
+#: vms-alpha.c:8125
+#, fuzzy, c-format
+msgid ""
+"\n"
+" version array off: %u\n"
+msgstr "Menggunakan VTE versi %u.%u.%u"
+
+#: vms-alpha.c:8130
+#, c-format
+msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8136
+#, fuzzy, c-format
+msgid " linker flags: %08x:"
+msgstr "Pemaut"
+
+#: vms-alpha.c:8167
+#, c-format
+msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8173
+#, fuzzy, c-format
+msgid " BPAGE: %u"
+msgstr "%u Ã— %u"
+
+#: vms-alpha.c:8180
+#, c-format
+msgid ", ext fixup offset: %u, no_opt psect off: %u"
+msgstr ""
+
+#: vms-alpha.c:8183
+#, fuzzy, c-format
+msgid ", alias: %u\n"
+msgstr "Alias"
+
+#: vms-alpha.c:8191
+#, fuzzy, c-format
+msgid "system version array information:\n"
+msgstr "sistem, maklumat, terperinci, grafik, bunyi, kernel, versi"
+
+#: vms-alpha.c:8195
+#, fuzzy, c-format
+msgid "cannot read EIHVN header\n"
+msgstr "Gagal membaca pengepala QTIF"
+
+#: vms-alpha.c:8205
+#, fuzzy, c-format
+msgid "cannot read EIHVN version\n"
+msgstr "Versi Baca Jenis Doc"
+
+#: vms-alpha.c:8208
+#, c-format
+msgid "   %02u "
+msgstr "   %02u "
+
+#: vms-alpha.c:8212
+msgid "BASE_IMAGE       "
+msgstr "IMEJ_ASAS        "
+
+#: vms-alpha.c:8215
+msgid "MEMORY_MANAGEMENT"
+msgstr "PENGURUSAN_INGATAN"
+
+#: vms-alpha.c:8218
+msgid "IO               "
+msgstr "IO               "
+
+#: vms-alpha.c:8221
+#, fuzzy
+msgid "FILES_VOLUMES    "
+msgstr "_Volum"
+
+#: vms-alpha.c:8224
+#, fuzzy
+msgid "PROCESS_SCHED    "
+msgstr "(dalam proses)"
+
+#: vms-alpha.c:8227
+msgid "SYSGEN           "
+msgstr ""
+
+#: vms-alpha.c:8230
+#, fuzzy
+msgid "CLUSTERS_LOCKMGR "
+msgstr "kelompok"
+
+#: vms-alpha.c:8233
+#, fuzzy
+msgid "LOGICAL_NAMES    "
+msgstr "logikal not"
+
+#: vms-alpha.c:8236
+msgid "SECURITY         "
+msgstr "KESELAMATAN      "
+
+#: vms-alpha.c:8239
+#, fuzzy
+msgid "IMAGE_ACTIVATOR  "
+msgstr "Bukan imej"
+
+#: vms-alpha.c:8242
+msgid "NETWORKS         "
+msgstr "RANGKAIAN        "
+
+#: vms-alpha.c:8245
+msgid "COUNTERS         "
+msgstr "PENGIRA          "
+
+#: vms-alpha.c:8248
+msgid "STABLE           "
+msgstr "STABIL           "
+
+#: vms-alpha.c:8251
+msgid "MISC             "
+msgstr "LAIN-LAIN        "
+
+#: vms-alpha.c:8254
+msgid "CPU              "
+msgstr "CPU              "
+
+#: vms-alpha.c:8257
+msgid "VOLATILE         "
+msgstr ""
+
+#: vms-alpha.c:8260
+msgid "SHELL            "
+msgstr "SHELL            "
+
+#: vms-alpha.c:8263
+msgid "POSIX            "
+msgstr "POSIX            "
+
+#: vms-alpha.c:8266
+#, fuzzy
+msgid "MULTI_PROCESSING "
+msgstr "pelbagai"
+
+#: vms-alpha.c:8269
+msgid "GALAXY           "
+msgstr "GALAKSI          "
+
+#: vms-alpha.c:8272
+msgid "*unknown*        "
+msgstr "*tidak diketahui* "
+
+#: vms-alpha.c:8288 vms-alpha.c:8575
+#, fuzzy, c-format
+msgid "cannot read EIHA\n"
+msgstr "Tidak Dapat Baca"
+
+#: vms-alpha.c:8291
+#, fuzzy, c-format
+msgid "Image activation:  (size=%u)\n"
+msgstr "Saiz blok=%u (log=%u)\n"
+
+#: vms-alpha.c:8294
+#, c-format
+msgid " First address : 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8298
+#, c-format
+msgid " Second address: 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8302
+#, c-format
+msgid " Third address : 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8306
+#, c-format
+msgid " Fourth address: 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8310
+#, c-format
+msgid " Shared image  : 0x%08x 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8321
+#, fuzzy, c-format
+msgid "cannot read EIHI\n"
+msgstr "Tidak Dapat Baca"
+
+#: vms-alpha.c:8325
+#, fuzzy, c-format
+msgid "Image identification: (major: %u, minor: %u)\n"
+msgstr "Menyimpan imej â€œ%sâ€� (%u/%u)"
+
+#: vms-alpha.c:8331
+#, fuzzy, c-format
+msgid " image name       : %.*s\n"
+msgstr "Nama peta imej"
+
+#: vms-alpha.c:8332
+#, fuzzy, c-format
+msgid " link time        : %s\n"
+msgstr "Pautan %s terpilih %s"
+
+#: vms-alpha.c:8337
+#, fuzzy, c-format
+msgid " image ident      : %.*s\n"
+msgstr "IDENT: disambungkan kepada %s:%u"
+
+#: vms-alpha.c:8341
+#, fuzzy, c-format
+msgid " linker ident     : %.*s\n"
+msgstr "IDENT: disambungkan kepada %s:%u"
+
+#: vms-alpha.c:8345
+#, fuzzy, c-format
+msgid " image build ident: %.*s\n"
+msgstr "IDENT: disambungkan kepada %s:%u"
+
+#: vms-alpha.c:8354
+#, fuzzy, c-format
+msgid "cannot read EIHS\n"
+msgstr "Tidak Dapat Baca"
+
+#: vms-alpha.c:8358
+#, c-format
+msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:8364
+#, c-format
+msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
+msgstr ""
+
+#: vms-alpha.c:8369
+#, c-format
+msgid " global symbol table: vbn: %u, records: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8374
+#, c-format
+msgid " debug module table : vbn: %u, size: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8387
+#, fuzzy, c-format
+msgid "cannot read EISD\n"
+msgstr "Tidak Dapat Baca"
+
+#: vms-alpha.c:8398
+#, c-format
+msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:8406
+#, c-format
+msgid " section: base: 0x%08x%08x size: 0x%08x\n"
+msgstr ""
+
+#: vms-alpha.c:8411
+#, fuzzy, c-format
+msgid " flags: 0x%04x"
+msgstr "(0x%04x, '%s'): "
+
+#: vms-alpha.c:8449
+#, fuzzy, c-format
+msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
+msgstr "Satu integer biasa tidak bertanda tangan, jenis 'u'"
+
+#: vms-alpha.c:8455
+msgid "NORMAL"
+msgstr "NORMAL"
+
+#: vms-alpha.c:8458
+msgid "SHRFXD"
+msgstr ""
+
+#: vms-alpha.c:8461
+msgid "PRVFXD"
+msgstr ""
+
+#: vms-alpha.c:8464
+msgid "SHRPIC"
+msgstr ""
+
+#: vms-alpha.c:8467
+msgid "PRVPIC"
+msgstr ""
+
+#: vms-alpha.c:8470
+msgid "USRSTACK"
+msgstr ""
+
+#: vms-alpha.c:8476
+msgid ")\n"
+msgstr ""
+
+#: vms-alpha.c:8483
+#, fuzzy, c-format
+msgid " ident: 0x%08x, name: %.*s\n"
+msgstr "IDENT: recvline() gagal: %s."
+
+#: vms-alpha.c:8494
+#, fuzzy, c-format
+msgid "cannot read DMT\n"
+msgstr "Tidak Dapat Baca"
+
+#: vms-alpha.c:8498
+#, fuzzy, c-format
+msgid "Debug module table:\n"
+msgstr "Ruang jadual"
+
+#: vms-alpha.c:8507
+#, fuzzy, c-format
+msgid "cannot read DMT header\n"
+msgstr "Gagal membaca pengepala QTIF"
+
+#: vms-alpha.c:8513
+#, c-format
+msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
+msgstr ""
+
+#: vms-alpha.c:8523
+#, fuzzy, c-format
+msgid "cannot read DMT psect\n"
+msgstr "Tak dalat membaca CD: %s"
+
+#: vms-alpha.c:8527
+#, c-format
+msgid "  psect start: 0x%08x, length: %u\n"
+msgstr ""
+
+#: vms-alpha.c:8540
+#, fuzzy, c-format
+msgid "cannot read DST\n"
+msgstr "Tidak Dapat Baca"
+
+#: vms-alpha.c:8550
+#, fuzzy, c-format
+msgid "cannot read GST\n"
+msgstr "profil-gst"
+
+#: vms-alpha.c:8554
+#, fuzzy, c-format
+msgid "Global symbol table:\n"
+msgstr "Simbol"
+
+#: vms-alpha.c:8581
+#, c-format
+msgid "Image activator fixup: (major: %u, minor: %u)\n"
+msgstr ""
+
+#: vms-alpha.c:8585
+#, fuzzy, c-format
+msgid "  iaflink : 0x%08x %08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:8589
+#, fuzzy, c-format
+msgid "  fixuplnk: 0x%08x %08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:8592
+#, c-format
+msgid "  size : %u\n"
+msgstr "  saiz : %u\n"
+
+#: vms-alpha.c:8594
+#, fuzzy, c-format
+msgid "  flags: 0x%08x\n"
+msgstr "Ralat DDE %08x tidak diketahui"
+
+#: vms-alpha.c:8599
+#, c-format
+msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8604
+#, c-format
+msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8609
+#, c-format
+msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8612
+#, c-format
+msgid "  chgprtoff : %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8616
+#, c-format
+msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8619
+#, c-format
+msgid "  shlextra  : %5u, permctx   : %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8622
+#, fuzzy, c-format
+msgid "  base_va : 0x%08x\n"
+msgstr "Penyahkod video VA-API"
+
+#: vms-alpha.c:8624
+#, c-format
+msgid "  lppsbfixoff: %5u\n"
+msgstr ""
+
+#: vms-alpha.c:8631
+#, fuzzy, c-format
+msgid " Shareable images:\n"
+msgstr "Senarai  Main Boleh Kongsi (%s)"
+
+#: vms-alpha.c:8642
+#, c-format
+msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
+msgstr ""
+
+#: vms-alpha.c:8649
+#, fuzzy, c-format
+msgid " quad-word relocation fixups:\n"
+msgstr "Anak Panah Quad"
+
+#: vms-alpha.c:8655
+#, fuzzy, c-format
+msgid " long-word relocation fixups:\n"
+msgstr "perkataan"
+
+#: vms-alpha.c:8661
+#, c-format
+msgid " quad-word .address reference fixups:\n"
+msgstr ""
+
+#: vms-alpha.c:8666
+#, fuzzy, c-format
+msgid " long-word .address reference fixups:\n"
+msgstr "Panjang %u terlalu panjang untuk alamat"
+
+#: vms-alpha.c:8671
+#, fuzzy, c-format
+msgid " Code Address Reference Fixups:\n"
+msgstr "Rujukan(en)"
+
+#: vms-alpha.c:8676
+#, fuzzy, c-format
+msgid " Linkage Pairs Reference Fixups:\n"
+msgstr "Pasangan AT"
+
+#: vms-alpha.c:8684
+#, fuzzy, c-format
+msgid " Change Protection (%u entries):\n"
+msgstr "Sebuah penyimpan buku catatan yang berguna, menyimpan %u masukan."
+
+#: vms-alpha.c:8693
+#, 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:9570
+#, fuzzy
+msgid "%P: relocatable link is not supported\n"
+msgstr "Skema boleh letak semula"
+
+#: vms-alpha.c:9641
+#, c-format
+msgid "%P: multiple entry points: in modules %pB and %pB\n"
+msgstr ""
+
+#: vms-lib.c:1530
+#, fuzzy, c-format
+msgid "could not open shared image '%s' from '%s'"
+msgstr "Tidak dapat membuka penukar dari \"%s\" ke \"%s\""
+
+#: vms-misc.c:374
+msgid "_bfd_vms_output_counted called with zero bytes"
+msgstr ""
+
+#: vms-misc.c:379
+msgid "_bfd_vms_output_counted called with too many bytes"
+msgstr ""
+
+#: xcofflink.c:462
+#, c-format
+msgid "%pB: warning: illegal symbol index %lu in relocs"
+msgstr ""
+
+#: xcofflink.c:881
+#, c-format
+msgid "%pB: XCOFF shared object when not producing XCOFF output"
+msgstr ""
+
+#: xcofflink.c:902
+#, fuzzy, c-format
+msgid "%pB: dynamic object with no .loader section"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: xcofflink.c:1484
+#, c-format
+msgid "%pB: `%s' has line numbers but no enclosing section"
+msgstr ""
+
+#: xcofflink.c:1540
+#, c-format
+msgid "%pB: class %d symbol `%s' has no aux entries"
+msgstr ""
+
+#: xcofflink.c:1563
+#, c-format
+msgid "%pB: symbol `%s' has unrecognized csect type %d"
+msgstr ""
+
+#: xcofflink.c:1576
+#, c-format
+msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
+msgstr ""
+
+#: xcofflink.c:1607
+#, c-format
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
+msgstr ""
+
+#: xcofflink.c:1742
+#, c-format
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr ""
+
+#: xcofflink.c:1776
+#, fuzzy, c-format
+msgid "%pB: csect `%s' not in enclosing section"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: xcofflink.c:1885
+#, fuzzy, c-format
+msgid "%pB: misplaced XTY_LD `%s'"
+msgstr "%s Pb"
+
+#: xcofflink.c:2228
+#, fuzzy, c-format
+msgid "%pB: reloc %s:%<PRId64> not in csect"
+msgstr "%s Pb"
+
+#: xcofflink.c:3337
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr ""
+
+#: xcofflink.c:3385
+#, c-format
+msgid "%s: no such symbol"
+msgstr "%s: tiada simbol sedemikian"
+
+#: xcofflink.c:3494
+#, fuzzy, c-format
+msgid "warning: attempt to export undefined symbol `%s'"
+msgstr "amaran: pembolehubah tidak dinyatakan `%.*s'"
+
+#: xcofflink.c:3842
+#, fuzzy
+msgid "error: undefined symbol __rtinit"
+msgstr "simbol permulaan %s tidak ditakrifkan"
+
+#: xcofflink.c:4855
+#, c-format
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr ""
+
+#: xcofflink.c:4884
+#, fuzzy, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr "%s: Tak dapat mencipta symlink ke %s"
+
+#: xcofflink.c:5004
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr ""
+
+#: xcofflink.c:5072
+#, c-format
+msgid "%pB: loader reloc in unrecognized section `%s'"
+msgstr ""
+
+#: xcofflink.c:5084
+#, fuzzy, c-format
+msgid "%pB: `%s' in loader reloc but not loader sym"
+msgstr "Ralat dalaman pada pemuat GIF (%s)"
+
+#: xcofflink.c:5101
+#, c-format
+msgid "%pB: loader reloc in read-only section %pA"
+msgstr ""
+
+#: xcofflink.c:6180
+#, c-format
+msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
+msgstr ""
+
+#: xcofflink.c:7296
+#, fuzzy, c-format
+msgid "Unable to link input file: %s"
+msgstr "menutup fail input %s"
+
+#: xtensa-dynconfig.c:60
+#, fuzzy
+msgid "Unable to load DLL."
+msgstr "Tidak boleh muatkan lokasi"
+
+#: xtensa-dynconfig.c:86
+#, fuzzy, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr "Profil tidak dapat dimuatkan: %s"
+
+#: xtensa-dynconfig.c:102
+#, fuzzy, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr "simbol tidak dijumpai di dalam pengeluaran: %.*s"
+
+#: xtensa-dynconfig.c:115
+#, fuzzy, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr "Gagal memulakan perkhidmatan Penjejak: %s. Pemalam dilumpuhkan."
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2878 elfnn-riscv.c:5739
+#, fuzzy, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "Vendor GPU anda tidak diketahui: %s (0x%X)"
+
+#: elfnn-aarch64.c:5468
+#, c-format
+msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
+msgstr ""
+
+#: elfnn-aarch64.c:5560
+#, c-format
+msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
+msgstr ""
+
+#: elfnn-aarch64.c:5573
+#, c-format
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr ""
+
+#: elfnn-aarch64.c:6116
+#, 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 ""
+
+#: elfnn-aarch64.c:6136
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr ""
+
+#: elfnn-aarch64.c:6224 elfnn-kvx.c:2381
+#, c-format
+msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
+msgstr ""
+
+#: elfnn-aarch64.c:6338 elfnn-aarch64.c:6375
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr ""
+
+#: elfnn-aarch64.c:7366
+msgid "too many GOT entries for -fpic, please recompile with -fPIC"
+msgstr ""
+
+#: elfnn-aarch64.c:7394
+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:7961
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
+msgstr ""
+
+#: elfnn-aarch64.c:8922
+#, c-format
+msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr ""
+
+#: elfnn-kvx.c:929
+msgid "%F%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr ""
+
+#: elfnn-kvx.c:2126
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr ""
+
+#: elfnn-kvx.c:2850
+#, fuzzy, c-format
+msgid "%s: Bad ELF id: `%d'"
+msgstr "%s: ofset teruk pada halaman %d\n"
+
+#: elfnn-kvx.c:2905
+#, fuzzy, c-format
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "Dikompil oleh %s pada %s (%s)\n"
+
+#: elfnn-kvx.c:2908
+#, fuzzy, c-format
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "Dikompil oleh %s pada %s (%s)\n"
+
+#: elfnn-kvx.c:2910
+#, fuzzy, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr "Direktori sasaran \"%s\" tidak wujud"
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:2998
+#, fuzzy, c-format
+msgid "Private flags = 0x%lx : "
+msgstr "[find_call] %s: 0x%lx ke 0x%lx\n"
+
+#: elfnn-kvx.c:3002
+#, fuzzy, c-format
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr "64 bit"
+
+#: elfnn-kvx.c:3004
+#, fuzzy, c-format
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr "64 bit"
+
+#: elfnn-kvx.c:3006
+#, fuzzy, c-format
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr "64 bit"
+
+#: elfnn-kvx.c:3011
+#, fuzzy, c-format
+msgid "Coolidge (kv3) V1 32 bits"
+msgstr "Himpun data dengan 32 bit"
+
+#: elfnn-kvx.c:3013
+#, fuzzy, c-format
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr "Himpun data dengan 32 bit"
+
+#: elfnn-kvx.c:3015
+#, fuzzy, c-format
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr "Himpun data dengan 32 bit"
+
+#: elfnn-kvx.c:3847
+#, c-format
+msgid "relocation against `%s' has faulty GOT type "
+msgstr ""
+
+#: elfnn-loongarch.c:294 elfnn-loongarch.c:346
+#, c-format
+msgid "%#<PRIx64> invaild imm"
+msgstr ""
+
+#: elfnn-loongarch.c:528 elfnn-riscv.c:4182
+#, c-format
+msgid ""
+"%pB: ABI is incompatible with that of the selected emulation:\n"
+"  target emulation `%s' does not match `%s'"
+msgstr ""
+
+#: elfnn-loongarch.c:583
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr ""
+
+#: elfnn-loongarch.c:726
+#, fuzzy
+msgid "Internal error: unreachable."
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#: elfnn-loongarch.c:906
+#, c-format
+msgid "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s"
+msgstr ""
+
+#: elfnn-loongarch.c:910
+#, fuzzy
+msgid " and check the symbol visibility"
+msgstr "Simbol"
+
+#: elfnn-loongarch.c:1036
+#, c-format
+msgid "%pB: stack based reloc type (%u) is not supported with -z pack-relative-relocs"
+msgstr ""
+
+#: elfnn-loongarch.c:1231
+#, c-format
+msgid "%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE"
+msgstr ""
+
+#: elfnn-loongarch.c:1296
+#, c-format
+msgid "%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary"
+msgstr ""
+
+#: elfnn-loongarch.c:4174
+msgid "cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)"
+msgstr ""
+
+#: elfnn-loongarch.c:4684
+msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'"
+msgstr ""
+
+#: elfnn-loongarch.c:5301 elfnn-riscv.c:4967
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-byte boundary, but only %<PRId64> present"
+msgstr ""
+
+#: elfnn-riscv.c:329 elfnn-riscv.c:364
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr ""
+
+#: elfnn-riscv.c:927
+#, c-format
+msgid "%pB: relocation %s against absolute symbol `%s' can not be used when making a shared object"
+msgstr ""
+
+#: elfnn-riscv.c:969
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object"
+msgstr ""
+
+#: elfnn-riscv.c:1898
+#, c-format
+msgid "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr ""
+
+#: elfnn-riscv.c:2140
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr ""
+
+#: elfnn-riscv.c:2143
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr ""
+
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2148
+#, c-format
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr ""
+
+#: elfnn-riscv.c:2156
+#, fuzzy, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr "Rekod melimpah"
+
+#: elfnn-riscv.c:2639
+#, c-format
+msgid "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up"
+msgstr ""
+
+#: elfnn-riscv.c:2719
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr ""
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:2820
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr ""
+
+#: elfnn-riscv.c:2902
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr ""
+
+#: elfnn-riscv.c:2923
+#, fuzzy, c-format
+msgid "%tlsdesc_lo with addend"
+msgstr "Tambah _Lokasi...:"
+
+#: elfnn-riscv.c:3156
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr ""
+
+#: elfnn-riscv.c:3191
+#, fuzzy
+msgid "%X%P: internal error: out of range error\n"
+msgstr "ralat dalaman X: %s\n"
+
+#: elfnn-riscv.c:3196
+#, fuzzy
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "ralat dalaman X: %s\n"
+
+#: elfnn-riscv.c:3202
+#, fuzzy
+msgid "dangerous relocation error"
+msgstr "Fail berpontensi bahaya"
+
+#: elfnn-riscv.c:3208
+#, fuzzy
+msgid "%X%P: internal error: unknown error\n"
+msgstr "Ralat dalaman: Ralat tidak diketahui"
+
+#: elfnn-riscv.c:3785
+#, c-format
+msgid "error: %pB: corrupted ISA string '%s'.  First letter should be 'i' or 'e' but got '%s'"
+msgstr ""
+
+#: elfnn-riscv.c:3828
+#, c-format
+msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'"
+msgstr ""
+
+#: elfnn-riscv.c:3965
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)"
+msgstr ""
+
+#: elfnn-riscv.c:3985
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)"
+msgstr ""
+
+#: elfnn-riscv.c:3993
+#, c-format
+msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation"
+msgstr ""
+
+#: elfnn-riscv.c:4113
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr ""
+
+#: elfnn-riscv.c:4141
+#, c-format
+msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned"
+msgstr ""
+
+#: elfnn-riscv.c:4238
+#, fuzzy, c-format
+msgid "%pB: can't link %s modules with %s modules"
+msgstr "Tidak dapat awalkan modul berdaftar PKCS#11: %s"
+
+#: elfnn-riscv.c:4248
+#, c-format
+msgid "%pB: can't link RVE with other target"
+msgstr ""
+
+#: elfnn-riscv.c:4272
+#, c-format
+msgid "warning: %pB: unknown RISCV ABI object attribute %d"
+msgstr ""
+
+#: elfnn-riscv.c:969
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object"
+msgstr ""
+
+#: peXXigen.c:161
+#, fuzzy, c-format
+msgid "%pB: unable to find name for empty section"
+msgstr "Pemasangan: Tidak jumpa nama folder yang sesuai untuk $1"
+
+#: peXXigen.c:188
+#, c-format
+msgid "%pB: out of memory creating name for empty section"
+msgstr ""
+
+#: peXXigen.c:199
+#, c-format
+msgid "%pB: unable to create fake empty section"
+msgstr ""
+
+#: peXXigen.c:924
+#, c-format
+msgid "%pB:%.8s: section below image base"
+msgstr ""
+
+#: peXXigen.c:929
+#, fuzzy, c-format
+msgid "%pB:%.8s: RVA truncated"
+msgstr "DIPANGKAS"
+
+#: peXXigen.c:1061
+#, c-format
+msgid "%pB: line number overflow: 0x%lx > 0xffff"
+msgstr ""
+
+#: peXXigen.c:1227
+msgid "Export Directory [.edata (or where ever we found it)]"
+msgstr ""
+
+#: peXXigen.c:1228
+#, fuzzy
+msgid "Import Directory [parts of .idata]"
+msgstr "bahagian"
+
+#: peXXigen.c:1229
+#, fuzzy
+msgid "Resource Directory [.rsrc]"
+msgstr "Sumber pada \"%s\" bukan satu direktori"
+
+#: peXXigen.c:1230
+#, fuzzy
+msgid "Exception Directory [.pdata]"
+msgstr "Maklumat pengecualian:"
+
+#: peXXigen.c:1231
+#, fuzzy
+msgid "Security Directory"
+msgstr "KESELAMATAN      "
+
+#: peXXigen.c:1232
+#, fuzzy
+msgid "Base Relocation Directory [.reloc]"
+msgstr "_Pangkalan Direktori:"
+
+#: peXXigen.c:1233
+#, fuzzy
+msgid "Debug Directory"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: peXXigen.c:1234
+#, fuzzy
+msgid "Description Directory"
+msgstr "Keterangan"
+
+#: peXXigen.c:1235
+#, fuzzy
+msgid "Special Directory"
+msgstr "SPECIAL"
+
+#: peXXigen.c:1236
+#, fuzzy
+msgid "Thread Storage Directory [.tls]"
+msgstr "Gagal memulakan benang: ralat menulis TLS."
+
+#: peXXigen.c:1237
+#, fuzzy
+msgid "Load Configuration Directory"
+msgstr "Muatkan item tambahan konfigurasi"
+
+#: peXXigen.c:1238
+#, fuzzy
+msgid "Bound Import Directory"
+msgstr "Import direktori"
+
+#: peXXigen.c:1239
+#, fuzzy
+msgid "Import Address Table Directory"
+msgstr "Import direktori"
+
+#: peXXigen.c:1240
+#, fuzzy
+msgid "Delay Import Directory"
+msgstr "Import direktori"
+
+#: peXXigen.c:1241
+#, fuzzy
+msgid "CLR Runtime Header"
+msgstr "Masa Jalan"
+
+#: peXXigen.c:1242
+msgid "Reserved"
+msgstr "Simpanan"
+
+#: peXXigen.c:1307
+#, c-format
+msgid ""
+"\n"
+"There is an import table, but the section containing it could not be found\n"
+msgstr ""
+
+#: peXXigen.c:1313
+#, fuzzy, c-format
+msgid ""
+"\n"
+"There is an import table in %s, but that section has no contents\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: peXXigen.c:1320
+#, fuzzy, c-format
+msgid ""
+"\n"
+"There is an import table in %s at 0x%lx\n"
+msgstr "[find_call] %s: 0x%lx ke 0x%lx\n"
+
+#: peXXigen.c:1326
+#, fuzzy, c-format
+msgid ""
+"\n"
+"The Import Tables (interpreted %s section contents)\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: peXXigen.c:1329
+#, c-format
+msgid ""
+" vma:            Hint    Time      Forward  DLL       First\n"
+"                 Table   Stamp     Chain    Name      Thunk\n"
+msgstr ""
+
+#: peXXigen.c:1378
+#, fuzzy, c-format
+msgid ""
+"\n"
+"\tDLL Name: %.*s\n"
+msgstr "Nama: %s, EntitiID: %s"
+
+#: peXXigen.c:1394
+#, c-format
+msgid "\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"
+msgstr ""
+
+#: peXXigen.c:1419
+#, c-format
+msgid ""
+"\n"
+"There is a first thunk, but the section containing it could not be found\n"
+msgstr ""
+
+#: peXXigen.c:1469 peXXigen.c:1514
+#, fuzzy, c-format
+msgid "\t<corrupt: 0x%08lx>"
+msgstr "Eksponen: 0x"
+
+#: peXXigen.c:1608
+#, c-format
+msgid ""
+"\n"
+"There is an export table, but the section containing it could not be found\n"
+msgstr ""
+
+#: peXXigen.c:1621
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but it is too small (%d)\n"
+msgstr ""
+
+#: peXXigen.c:1629
+#, fuzzy, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but contents cannot be read\n"
+msgstr "Tidak dapat menyediakan kandungan sebagai \"%s\""
+
+#: peXXigen.c:1635
+#, fuzzy, c-format
+msgid ""
+"\n"
+"There is an export table in %s at 0x%lx\n"
+msgstr "[find_call] %s: 0x%lx ke 0x%lx\n"
+
+#: peXXigen.c:1666
+#, fuzzy, c-format
+msgid ""
+"\n"
+"The Export Tables (interpreted %s section contents)\n"
+"\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: peXXigen.c:1670
+#, fuzzy, c-format
+msgid "Export Flags \t\t\t%lx\n"
+msgstr "Eksport"
+
+#: peXXigen.c:1673
+#, fuzzy, c-format
+msgid "Time/Date stamp \t\t%lx\n"
+msgstr "Setem Tarikh GPS"
+
+#: peXXigen.c:1677
+#, fuzzy, c-format
+msgid "Major/Minor \t\t\t%d/%d\n"
+msgstr "Penggunaan: %s [OPSYEN]... NAMA JENIS [MAJOR MINOR]\n"
+
+#: peXXigen.c:1680
+#, c-format
+msgid "Name \t\t\t\t"
+msgstr "Nama \t\t\t\t"
+
+#: peXXigen.c:1691
+#, fuzzy, c-format
+msgid "Ordinal Base \t\t\t%ld\n"
+msgstr "ordinal"
+
+#: peXXigen.c:1694
+#, c-format
+msgid "Number in:\n"
+msgstr "Nombor dalam:\n"
+
+#: peXXigen.c:1697
+#, fuzzy, c-format
+msgid "\tExport Address Table \t\t%08lx\n"
+msgstr "Eksport"
+
+#: peXXigen.c:1701
+#, fuzzy, c-format
+msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
+msgstr "Nama jadual adalah kosong!"
+
+#: peXXigen.c:1704
+#, fuzzy, c-format
+msgid "Table Addresses\n"
+msgstr "Alamat:"
+
+#: peXXigen.c:1707
+#, fuzzy, c-format
+msgid "\tExport Address Table \t\t"
+msgstr "Eksport"
+
+#: peXXigen.c:1712
+#, fuzzy, c-format
+msgid "\tName Pointer Table \t\t"
+msgstr "Nama jadual adalah kosong!"
+
+#: peXXigen.c:1717
+#, fuzzy, c-format
+msgid "\tOrdinal Table \t\t\t"
+msgstr "ordinal"
+
+#: peXXigen.c:1731
+#, c-format
+msgid ""
+"\n"
+"Export Address Table -- Ordinal Base %ld\n"
+msgstr ""
+
+#: peXXigen.c:1741
+#, c-format
+msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr ""
+
+#: peXXigen.c:1760
+#, fuzzy
+msgid "Forwarder RVA"
+msgstr "Jenis               Saiz     Rva      Offset\n"
+
+#: peXXigen.c:1772
+#, fuzzy
+msgid "Export RVA"
+msgstr "Jenis               Saiz     Rva      Offset\n"
+
+#: peXXigen.c:1779
+#, c-format
+msgid ""
+"\n"
+"[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"
+msgstr ""
+
+#: peXXigen.c:1789
+#, c-format
+msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr ""
+
+#: peXXigen.c:1796
+#, c-format
+msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr ""
+
+#: peXXigen.c:1810
+#, c-format
+msgid "\t[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>\n"
+msgstr ""
+
+#: peXXigen.c:1867 peXXigen.c:2037
+#, c-format
+msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
+msgstr ""
+
+#: peXXigen.c:1871 peXXigen.c:2041
+#, c-format
+msgid ""
+"\n"
+"The Function Table (interpreted .pdata section contents)\n"
+msgstr ""
+
+#: peXXigen.c:1874
+#, c-format
+msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
+msgstr ""
+
+#: peXXigen.c:1876
+#, c-format
+msgid ""
+" vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
+"     \t\tAddress  Address  Handler  Data     Address    Mask\n"
+msgstr ""
+
+#: peXXigen.c:1889
+#, c-format
+msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
+msgstr ""
+
+#: peXXigen.c:2043
+#, c-format
+msgid ""
+" vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
+"     \t\tAddress  Length   Length   32b exc  Handler   Data\n"
+msgstr ""
+
+#: peXXigen.c:2168
+#, c-format
+msgid ""
+"\n"
+"\n"
+"PE File Base Relocations (interpreted .reloc section contents)\n"
+msgstr ""
+
+#: peXXigen.c:2197
+#, c-format
+msgid ""
+"\n"
+"Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
+msgstr ""
+
+#: peXXigen.c:2215
+#, c-format
+msgid "\treloc %4d offset %4x [%4lx] %s"
+msgstr ""
+
+#: peXXigen.c:2276
+#, fuzzy, c-format
+msgid "%03x %*.s Entry: "
+msgstr " Sumber bermula pada offset: %#03x\n"
+
+#: peXXigen.c:2300
+#, fuzzy, c-format
+msgid "name: [val: %08lx len %d]: "
+msgstr "Ralat membaca dari klien, len = %d\n"
+
+#: peXXigen.c:2320
+#, fuzzy, c-format
+msgid "<corrupt string length: %#x>\n"
+msgstr "-X <rentetan>"
+
+#: peXXigen.c:2330
+#, fuzzy, c-format
+msgid "<corrupt string offset: %#lx>\n"
+msgstr "ofset"
+
+#: peXXigen.c:2335
+#, c-format
+msgid "ID: %#08lx"
+msgstr "ID: %#08lx"
+
+#: peXXigen.c:2338
+#, fuzzy, c-format
+msgid ", Value: %#08lx\n"
+msgstr "nilai"
+
+#: peXXigen.c:2360
+#, c-format
+msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
+msgstr ""
+
+#: peXXigen.c:2402
+#, c-format
+msgid "<unknown directory type: %d>\n"
+msgstr "<jenis direktori tidak diketahui: %d>\n"
+
+#: peXXigen.c:2410
+#, c-format
+msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
+msgstr ""
+
+#: peXXigen.c:2498
+#, c-format
+msgid "Corrupt .rsrc section detected!\n"
+msgstr "Bahagian .rsrc yang rosak dikesan!\n"
+
+#: peXXigen.c:2522
+#, c-format
+msgid ""
+"\n"
+"WARNING: Extra data in .rsrc section - it will be ignored by Windows:\n"
+msgstr ""
+
+#: peXXigen.c:2528
+#, fuzzy, c-format
+msgid " String table starts at offset: %#03x\n"
+msgstr " Sumber bermula pada offset: %#03x\n"
+
+#: peXXigen.c:2531
+#, c-format
+msgid " Resources start at offset: %#03x\n"
+msgstr " Sumber bermula pada offset: %#03x\n"
+
+#: peXXigen.c:2588
+#, fuzzy, c-format
+msgid ""
+"\n"
+"There is a debug directory, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: peXXigen.c:2594
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s, but that section has no contents\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n"
+
+#: peXXigen.c:2601
+#, c-format
+msgid ""
+"\n"
+"Error: section %s contains the debug data starting address but it is too small\n"
+msgstr ""
+
+#: peXXigen.c:2606
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s at 0x%lx\n"
+"\n"
+msgstr ""
+"\n"
+"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n"
+"\n"
+
+#: peXXigen.c:2613
+#, c-format
+msgid "The debug data size field in the data directory is too big for the section"
+msgstr ""
+
+#: peXXigen.c:2618
+#, c-format
+msgid "Type                Size     Rva      Offset\n"
+msgstr "Jenis               Saiz     Rva      Offset\n"
+
+#: peXXigen.c:2666
+#, c-format
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr ""
+
+#: peXXigen.c:2678
+#, c-format
+msgid "The debug directory size is not a multiple of the debug directory entry size\n"
+msgstr ""
+
+#. The MS dumpbin program reportedly ands with 0xff0f before
+#. printing the characteristics field.  Not sure why.  No reason to
+#. emulate it here.
+#: peXXigen.c:2762
+#, c-format
+msgid ""
+"\n"
+"Characteristics 0x%x\n"
+msgstr ""
+"\n"
+"Ciri-ciri 0x%x\n"
+
+#: peXXigen.c:3047
+#, c-format
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr ""
+
+#: peXXigen.c:3088
+msgid "failed to update file offsets in debug directory"
+msgstr "gagal mengemaskini offset fail dalam direktori nyahpijat"
+
+#: peXXigen.c:3097
+#, c-format
+msgid "%pB: failed to read debug data section"
+msgstr "%pB: gagal membaca bahagian data nyahpepijat"
+
+#: peXXigen.c:3900
+#, c-format
+msgid ".rsrc merge failure: duplicate string resource: %d"
+msgstr ""
+
+#: peXXigen.c:4035
+msgid ".rsrc merge failure: multiple non-default manifests"
+msgstr ""
+
+#: peXXigen.c:4053
+msgid ".rsrc merge failure: a directory matches a leaf"
+msgstr ""
+
+#: peXXigen.c:4095
+msgid ".rsrc merge failure: duplicate leaf"
+msgstr ""
+
+#: peXXigen.c:4100
+#, c-format
+msgid ".rsrc merge failure: duplicate leaf: %s"
+msgstr ""
+
+#: peXXigen.c:4167
+msgid ".rsrc merge failure: dirs with differing characteristics"
+msgstr ""
+
+#: peXXigen.c:4174
+msgid ".rsrc merge failure: differing directory versions"
+msgstr ""
+
+#. Corrupted .rsrc section - cannot merge.
+#: peXXigen.c:4286
+#, fuzzy, c-format
+msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
+msgstr "Bahagian .rsrc yang rosak dikesan!\n"
+
+#: peXXigen.c:4294
+#, c-format
+msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
+msgstr ""
+
+#: peXXigen.c:4433
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
+msgstr ""
+
+#: peXXigen.c:4453
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+msgstr ""
+
+#: peXXigen.c:4474
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
+msgstr ""
+
+#: peXXigen.c:4494
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
+msgstr ""
+
+#: peXXigen.c:4536
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
+msgstr ""
+
+#: peXXigen.c:4561
+#, 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.20200303/bfd/po/pt.gmo ./bfd/po/pt.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/pt.gmo	2020-03-03 02:13:28.000000000 +0000
+++ ./bfd/po/pt.gmo	2026-03-05 02:15:54.000000000 +0000
@@ -1,145 +1,179 @@
-Þ•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
+Þ•>0 :o
+tÌ��ì�, ,»
-»;»O»h»A‡»?É»:	¼D¼[¼1n¼$ ¼
Å¼Ó¼/ó¼#½%½A7½&y½ ½¹½Ò½ë½û½ ¾;¾[¾t¾‹¾˜¾P«¾ü¾*¿;?¿{¿F�¿6Ô¿6À:BÀ5}À,³ÀDàÀN%ÁJtÁ)¿Á=éÁ:'ÂLbÂ)¯ÂBÙÂLÃiÃÃD–ÃGÛÃ2#ÄVÄhÄ|Ä”Ä©Ä3ÈÄüÄÅ0%ÅVÅfÅvÅ+�Å+¼Å+èÅ#Æ8ÆPÆYÆuÆŒÆ¡Æ(ÀÆ%éÆ&Ç(6Ç)_Ç‰Ç ÇÀÇÝÇöÇÈ1ÈJÈeÈ{È“È§È¾È,ØÈÉÉ.ÉFÉ]ÉlÉ‚É—É±ÉÈÉ1ÝÉÊ Ê-ÊDÊ_Ê#wÊ+›Ê&ÇÊ5îÊ$Ë9ËQËkË�Ë›Ë´ËËËáË$öËÌ4ÌTÌlÌ$�Ì¦ÌºÌÏÌ<èÌ%Í4Í
CÍQÍeÍzÍ ’Í³ÍÎÍÞÍþÍÎ:ÎSÎlÎÎ*�ÎºÎÌÎ&ÞÎÏ0ÏJÏ"^Ï	�Ï‹Ï#žÏÂÏÛÏìÏÐ"ÐAÐ"UÐ#xÐ#œÐÀÐ#ÕÐ#ùÐÑ*ÑHÑfÑlÑyÑ�Ñ†Ñ£Ñ
+ÁÑÌÑÑÑ!×Ñ ùÑÒÒ$Ò<Ò\Ò|Ò�Ò!†Ò¨Ò¹ÒÀÒÆÒËÒÐÒÖÒÚÒ"ßÒÓÓ'Ó;Ó&[ÓB‚ÓÅÓåÓêÓïÓöÓüÓÔÔÔ2ÔFÔMÔaÔrÔƒÔ”Ô¥Ô¶ÔÎÔ	ÝÔ
çÔ
õÔ
+Õ
+Õ
+Õ
+$Õ
+/Õ$:Õ
+_Õ#jÕ
+ŽÕ™Õ«Õ!ÃÕåÕúÕ
+	Ö
Ö	"Ö,Ö
+=ÖHÖOÖgÖ�Ö“Ö¢Ö¹ÖÔÖãÖüÖ×× 2×(S×/|×L¬×ù×Ø+ØFØAbØ¤Ø¾ØØØòØ8Ù@ÙXÙmÙ&‡Ù®ÙÍÙ2èÙ?Ú&[Ú‚Ú(¡ÚÊÚ"ÝÚÛ* Û6KÛ{‚ÛrþÛxqÜêÜÝ7€Ý:¸ÝóÝ,Þ62Þ6iÞ$ ÞÅÞ/åÞß5*ß+`ß$Œß±ß6Ðß"à&*à6Qà=ˆà:Æà:áD<á8�á9ºáCôá:8â7sâ8«â@äâG%ã9mã,§ã0Ôã#ä)ä=Dä-‚ä6°äçä7å3;å;oå:«å(æå"æ32æ%fæ?ŒæÌæ0ìæ1ç>Oç3Žç'ÂçDêçK/è({è2¤è2×è;
+é5Fé2|é/¯éVßéS6êSŠêÞêEüê8Bë,{ë`¨ë`	ìjìˆì$¤ì(Éìcòì4Ví‹í$£íšÈícî|î/•î%Åî"ëî-ï+<ï)hï-’ï.Àï$ïï0ð6Eð(|ð$¥ð&Êð2ñð&$ñkKñ*·ñ*âñ4
ò]BòA ò?âòG"ójóO‰óbÙó8<ô,uô+¢ô)ÎôYøô0Rõ=ƒõ3Áõ2õõB(ö,kö(˜öLÁö÷4,÷)a÷$‹÷3°÷9ä÷6ø/UøD…ø&ÊøWñømIùg·ùëúUû\aûH¾ûHü8Pü%‰ü(¯ü&Øü,ÿü#,ý>PýB�ýBÒýþ'5þE]þ4£þ1Øþ9
+ÿ4Dÿ3yÿJ­ÿ(øÿ;!]0|D­/ò:"@]@žGß?'2g8šSÓ''.O,~'«6Ó 
+Y+/…4µ5êN ªoI9d3ž¾Ò<‘<ÎFJRL�OêC:	^~	4Ý	P
+oc
+>Ó
+F`Y~ºF9‚€[
3_
@“
MÔ
m"7�#Èì(&+IRWœ+ô5 Vk8"¸$Û'9(Cb!¦!È*ê/1E/w/§0×*03<di¡=BI=Œ9Ê-&2"Y.|«8Ë:F??†VÆB;`7œ(Ô>ý=<4z#¯OÓ@#LdQ±I8M+†8²2ë9:X3“,Çuô j.‹.º$é'06Bg/ª,Ú'%/,U‚CœJà8+@dJ¥*ð% %A <g 1¤  Ö (÷ l !/�!<½!<ú!+7"c","H¬"6õ"A,#An#J°#>û#J:$J…$<Ð$#
%<1%*n%.™%(È%lñ%v^&AÕ&6'N'4l'0¡'+Ò'Aþ'J@(3‹(@¿(!)#").F)Bu)F¸)4ÿ)%4*:Z*2•*3È**ü*9'+Ca+C¥+:é+T$,Jy,5Ä,4ú,@/-6p-$§-PÌ-../L./|.&¬.:Ó.+/&:/5a/'—/0¿/5ð/3&0%Z0&€0§0'Ç0=ï0#-1+Q13}1(±1@Ú1C25_2'•2 ½2&Þ243g:34¢3m×3AE4@‡4HÈ4G5KY5I¥5Lï5H<6C…6YÉ65#70Y74Š7M¿7N
81\8)Ž8)¸8/â8)9+<97h93 96Ô99:XE:[ž:Cú:6>;>u;=´;*ò;.<2L<[<&Û<-=,0=+]=‰=8¤=Ý=/ø=0(>'Y>8�>Hº>A?)E?=o?#­?@Ñ?2@+E@#q@5•@<Ë@'A%0A(VARA?ÒAFBYB3tB1¨BDÚBHCDhCK­CaùC[[Ds·Dg+Eg“EBûE‚>FTÁF=G!TG-vGb¤GbH{jHgæHgNI0¶I(çI4J5EJO{J)ËJ3õJ-)K/WKH‡KFÐK7LGOL+—LNÃL$M27M!jM.ŒM/»M+ëM)N-AN/oN^ŸNKþNFJO‘O"­OÐO5ëO"!P(DP$mP7’PBÊPA
QDOQS”Q"èQ*R+6R'bR;ŠR8ÆR'ÿR''S3OS>ƒS-ÂS5ðS,&TIST�TºT.ØT/U7U$WU|UFšU&áU!V6*V5aV)—VÁVÛV(úV#W+=W2iW œW$½W#âW.X.5X%dX2ŠX3½X)ñX\YDxYH½YDZLKZX˜ZHñZ):[*d[ �[5°[9æ[@ \+a\6�\mÄ\A2]gt]ëÜ].È^]÷^MU_3£_=×_H`<^`8›`3Ô`4a4=a0ra0£a@Ôa1bBGbLŠbA×bLc8fc+Ÿc2Ëc<þc3;dXodPÈd.e`He&©ePÐe\!fX~fp×fAHg#ŠgE®g+ôgK h.lh<›h,ØhXi,^i‹i¡iµi"Íi%ðij36j2jj�j4½j?òj@2kWsk=Ëk*	l54l%jlB�l%Ól4ùl>.m<mmCªmBîm;1n3mn^¡n)o$*o!Oo'qo8™oÒoòopp!(pJp)`p,Šp-·p$åp
+q1q_Oq-¯q3Ýqr/&r5VrVŒrIãrI-s<ws.´s.ãs5t/Ht;xt´tÇtÛt0ít/uNu'hu7�u)Èu(òu6v'Rvzv1’vÄv
Øv.ævw
!w/w%@w\fw;Ãwÿwx'x*xGxTx	mxwx‰xšx,§xÔxèxþx"y=y(Zy/ƒy/³y1ãy8z#Nz'rz2šz3Íz{;{M{T{\{q{�{ˆ{�{¤{¹{Î{à{ó{
+|!|3|Q|	p|z|˜|
­|	»|"Å|è|ú|"}9}P}Y}e}i}|}Ž} }'²}Ú} ÷}#~<~V~p~Š~¤~¾~Ø~ò~ %HC1Œ#¾,âB€XR€a«€:
�.H�7w�1¯�;á�(‚:F‚,�‚-®‚'Ü‚"ƒ-'ƒUƒ2tƒ§ƒ·ƒÌƒáƒøƒ!„$0„,U„(‚„-«„IÙ„#…5@…v…
+‹…C–…IÚ…$†6†>†F†
d†r†>„†?Ã†A‡E‡/a‡+‘‡8½‡ö‡$ˆ!1ˆ1Sˆ…ˆ¤ˆ+Ãˆïˆ‰‰
+)‰4‰BS‰–‰%¨‰Î‰à‰.þ‰--ŠG[Š3£Š×Š"öŠ‹6‹G‹X‹j‹$ƒ‹¨‹!Å‹ç‹5ù‹/Œ	AŒKŒ]ŒsŒ“Œ­ŒÉŒØŒêŒXñŒ	J�T�Y�e�t�‹�§�½�Ï�ï�Ž(Ž<ŽNŽfŽ-„Ž²ŽÄŽÖŽêŽ�'�A�P�b�t�{�!‚�¤�:À�%û�%!�G�`�Ay�;»�C÷�;‘#U‘,y‘=¦‘Cä‘=(’"f’7‰’<Á’<þ’);“5e“›“¤“v¿“*6”a”'s”H›”ä”ö”ý”•
+•(•G•'Y•�•ž•¶•Î•#æ•
+–,"–.O–,~–.«–Ú–"÷–,—.G—!v—1˜—0Ê—2û—,.˜.[˜#Š˜®˜Î˜(â˜/™!;™]™(z™#£™+Ç™ó™,š 9šZšsš“š§šÇš#æš-
+›"8›[›m›€›Œ›¡›&³›	Ú›Fä›/+œE[œ¡œ-²œJàœM+�y�™�°�Ã�-à�ž*žBž`žtž|žAˆž>Êž	ŸAŸ7]ŸB•Ÿ!ØŸAúŸ< ˜\ õ ¡#¡5¡:J¡#…¡2©¡.Ü¡#¢8/¢3h¢9œ¢Ö¢ã¢ð¢££:!£+\£#ˆ£¬£¿£Ø£ð£,¤:5¤p¤	ˆ¤d’¤÷¤6
+¥;A¥;}¥<¹¥gö¥b^¦<Á¦1þ¦(0§$Y§~§/”§+Ä§ð§¨
+&¨1¨N¨>j¨<©¨æ¨4©'7©$_©6„©»©Ì©ä©û©ª$ª<ªNª`ªrª„ªžª¹ªËªÜªôª`«2t«§«'Á«Lé«46¬7k¬0£¬'Ô¬ü¬­1­C­R­-l­+š­+Æ­*ò­	®	'®
+1®
+<®G®[®g®t®‰®¤®³®È®×®1Ü®¯/.¯^¯}¯ Ž¯'¯¯'×¯&ÿ¯0&°W°u°Š°“°±°9È°-±10±b±,w±a¤±2²49²)n²C˜²EÜ²Y"³Y|³;Ö³;´MN´/œ´5Ì´:µ5=µ4sµ9¨µ7âµ9¶DT¶G™¶Dá¶E&·Cl·-°·,Þ·0¸4<¸>q¸;°¸8ì¸6%¹;\¹3˜¹%Ì¹1ò¹!$ºVFº9�º\×ºA4»1v»?¨»1è»:¼7U¼>�¼$Ì¼Eñ¼u7½q­½I¾i¾4†¾O»¾Z¿/f¿O–¿Pæ¿37À kÀ?ŒÀ:ÌÀ&Á
+.Á9ÁMÁ0ZÁ%‹Á"±Á%ÔÁ0úÁ!+ÂMÂfÂ�Â–Â£ÂS²ÂOÃVÃ,uÃ7¢ÃÚÃ
ÜÃêÃ1ùÃ+Ä?ÄRÄeÄC‚ÄOÆÄ,Å6CÅzÅ$šÅ_¿Å"Æ(BÆAkÆ­Æ,ËÆ2øÆH+ÇtÇ„Ç
+•Ç" Ç
+ÃÇ$ÎÇóÇÈ&È¼<È¹ùÈ³É/ÅÉõÉÊ.Ê*NÊLyÊ2ÆÊ-ùÊ)'Ë"QËtË‡ËœË±Ë2ÀËóË0ûË,Ì%GÌmÌ9zÌ´Ì<ÆÌ=Í3AÍ5uÍ2«Í7ÞÍBÎLYÎ¦Î·ÎÑÎÙÎáÎýÎHÏMÏ4PÏ&…Ï¬ÏµÏ
+ÌÏ×Ï2óÏ-&ÐOTÐ¤ÐÃÐ"ÈÐ*ëÐ%Ñ<ÑDÑCcÑ¤§ÑLÒYÒ sÒL”ÒáÒêÒþÒÓ)Ó?ÓVÓsÓ„Ó–Ó¢Ó¯ÓÃÓEËÓ*ÔN<Ô[‹ÔçÔAëÔ-ÕLÕ,dÕ‘Õ®Õ6ÆÕýÕ Ö8>Ö+wÖ£ÖµÖÅÖÍÖ'âÖ+
+×+6×+b×*Ž×*¹×)ä×(Ø7ØOØcØwØ‹ØžØ
±Ø¿ØIÙØ#Ù 4ÙUÙDtÙP¹Ù
+ÚÚ27Ú$jÚ�Ú¯Ú5ÂÚøÚ!Û5Û<Û2DÛFwÛJ¾Û/	ÜF9Ü€Ü"’ÜµÜÅÜMÔÜ9"Ý;\Ý7˜ÝÐÝèÝÞÞ,'Þ$TÞJyÞ)ÄÞ(îÞ%ß(=ßfß
+‚ß,�ßºß)Ôßþßà6àNàVànà)†à°à
Æà#Ôàøà'á8áIá_áyá–á°á#¼á%àáâ#â:âLâ7câ›â·â%Ðâöâã%ã7ãJã^ãrãˆãJžãJéãJ4äIä:Éäå-#å;Qå+�å@¹å<úå47æ6læ-£æ8Ñæ5
+ç5@ç8vç.¯ç>ÞçIèhgèyÐè>JéN‰éIØéd"êY‡ê0áê;ë8NëF‡ë/Îë5þë&4ì.[ì-Šì.¸ì0çì3í<Lí!‰í«í!Äí)æíEîZVîV±î`ïGiïZ±ïUð.bð,‘ðh¾ðj'ñE’ñ0Øñ6	òk@òE¬òòò&óQ7óS‰óEÝó\#ôH€ôHÉô#õ<6õ<sõe°õQö2hö/›ö/Ëö4ûö=0÷9n÷0¨÷7Ù÷%ø'7ø=_ø6�ø@Ôøù25ùhù,lù
™ù
§ù
µù
Ãù!Ñù:óù
.ú"<ú_ú
nú)|ú)¦úÐúåú+ùú%û4û9û>ûCûHûOûbûiû=oû­û
¿ýÍýäý"þW$þS|þGÐþÿ1ÿ4Eÿ&zÿ¡ÿ°ÿ/ÐÿT(i’­Ëæ ö"!:\y‘¡V·.&@U–P°E>GB†DÉ.J=VˆOß//H_E¨Xî/GLwXÄ8QSE¥4ë 6Jd#{7Ÿ×î=	>	N	^	,x	,¥	,Ò	#ÿ	#
+=
+F
+e
+~
+%“
+'¹
+"á
+%%*(Py’²Ïè$>[q�£º,Ô

*
G
b
u
Œ
Ÿ
¹
Ð
6æ
2?Xs*Œ8·.ð<\q‹¦½Úó
+ 17i‚'¢Ê)á!6<OŒ›
ª¸Íâ(þ'BTt ’³Ìì*;M,_Œ0 Ñ'å
#-Qj˜$³Ø%ì##6Z#n#’¶Åã  %/F
+v�†$Œ0±âçì$CH.M|‘˜ž£¨®²$·Üá"+<Dh­ÌÑÖÝãèú29Rct…–§»	Ï
Ù
ç
+õ
+
+	
+ 0+
+\-g
+• ²*Éô(	<F
Xfm‡¥·Æå!:G"N%q8—AÐQdv2‰¼AØ5Oi6‚¹Óè1)4^9y?³1ó)% ,O | "’ %µ *Û 6!…=!zÃ!y>"¸"”Õ";j#>¦#å#1ù#<+$Bh$$«$Ð$4î$#%F=%)„%"®%!Ñ%?ó%$3&)X&9‚&@¼&<ý&=:'Gx':À'<û'F8(<(:¼(:÷(Q2)X„)NÝ)9,*2f*%™*¿*?Ý*-+7K+ƒ+Až+<à+A,B_,.¢,Ñ,7ñ,#)-FM-'”-?¼-/ü-F,.6s.(ª.NÓ.X"/0{/5¬/5â/=08V03�06Ã0Oú0^J1Z©12M!2Ao23±2eå2`K3¬3$Ê3;ï34+4k`46Ì45)5 H5é56.6$F6!k6,�6*º6(å6,71;7#m70‘72Â74õ7"*8-M89{8,µ8râ8%U9'{96£9rÚ9DM:K’:OÞ: .;^O;l®;A<0]<*Ž<,¹<[æ<9B=D|=;Á=7ý=J5>/€>2°>Tã>8?=V?+”?&À?8ç?G @Fh@E¯@Nõ@(DAjmA�ØA{ZBÖB[õCcQDMµDME5QE/‡E1·E)éE.F$BFFgFK®F>úF'9G5aGO—G;çG6#H7ZH2’H1ÅHZ÷H0RIIƒI"ÍI5ðIW&J4~J=³JFñJE8K\~KTÛK>0LMoLk½L7)M0aM.’M)ÁM;ëM)'NrQN5ÄNCúND>OYƒO¯ÝOQ�PAßP<!QÉ^QB(RBkRM®RMüRSJSTžSFóSf:T8¡TTÚT�/UG±UNùUnHV–·VRNWŠ¡Wf,X4“XEÈXYYzhY4ãY1ZJZ4gZ+œZRÈZ`[/|[9¬[æ[ü[C\)X\'‚\,ª\D×\L]%i]%�].µ]3ä]5^3N^4‚^8·^.ð^8_7X_o�_;`H<`;…`@Á`5a)8a.ba@‘a ÒaBóaI6bM€bFÎb\cIrcC¼c?d/@dGpdG¸d;e#<eP`eM±eKÿePKfJœf7çf/gCOg=“gDÑgBh;Yh1•hŽÇh$Vi4{i4°i&åi)j26jGij6±j4èj7k1Uk1‡k ¹kKÚkX&l@lQÀl]m2pm)£m/ÍmOým9Mn+‡n0³n{än6`oF—oFÞo'%p Mp2npI¡p8ëpC$qChqM¬q=úqN8rM‡rBÕr(sRAs.”s1Ãs1õss't}›tGu>au+ u6Ìu4v+8vMdvV²v@	w>Jw)‰w)³w.ÝwOxZ\x8·x(ðxDy8^y=—y,ÕyAzXDzX�zCözf:{P¡{4ò{6'|E^|@¤|&å|`}1m}BŸ}?â}."~FQ~/˜~2È~9û~/58e=ž8Ü-€(C€"l€-�€D½€)�2,�@_�& �CÇ�O‚9[‚&•‚"¼‚*ß‚@
+ƒvKƒ?Âƒr„Lu„JÂ„R
…Q`…U²…N†aW†U¹†O‡j_‡HÊ‡9ˆ;MˆY‰ˆVãˆ;:‰/v‰/¦‰0Ö‰.Š26Š?iŠ:©Š=äŠA"‹dd‹gÉ‹L1Œ=~ŒG¼ŒA�0F�3w�7«�fã�1JŽ1|Ž1®Ž.àŽ�B-�p�5��7Ã�1û�I-�Jw�LÂ�0‘A@‘)‚‘D¬‘3ñ‘*%’BP’=“’DÑ’,“'C“0k“Yœ“Gö“S>”’”9°”:ê”I%•Po•IÀ•V
+–ja–hÌ–w5—u­—u#˜J™˜�ä˜_u™GÕ™)š<Gšm„šnòš‹a›rí›t`œ;Õœ/�5A�Aw�O¹�.	ž=8ž=vž4´žMéžK7ŸAƒŸVÅŸ6 VS 5ª 6à &¡0>¡5o¡1¥¡.×¡6¢?=¢h}¢Ræ¢I9£ƒ£%¢£È£=æ£&$¤+K¤)w¤9¡¤IÛ¤I%¥No¥]¾¥*¦3G¦1{¦1­¦9ß¦>§+X§.„§;³§Dï§14¨9f¨4 ¨[Õ¨!1©&S©9z©A´©,ö©+#ªOªNoª6¾ª.õª=$«Fb«3©«Ý«!ú«3¬P¬1m¬;Ÿ¬+Û¬/­.7­:f­:¡­0Ü­B
®CP®*”®l¿®M,¯[z¯FÖ¯T°Sr°[Æ°4"±*W±%‚±=¨±=æ±C$²0h²>™²€Ø²JY³z¤³´,;µbhµYËµ8%¶E^¶O¤¶4ô¶@)·2j·<�·=Ú·4¸5M¸Nƒ¸/Ò¸=¹G@¹<ˆ¹HÅ¹3º3Bº8vºB¯º8òºc+»Y�»7é»e!¼)‡¼W±¼i	½es½wÙ½DQ¾"–¾A¹¾.û¾I*¿4t¿A©¿<ë¿d(À:�ÀÈÀãÀøÀ+Á);Á&eÁ7ŒÁ6ÄÁ-ûÁ;)Â@eÂ@¦Â[çÂ<CÃ1€Ã<²Ã,ïÃ>Ä-[Ä9‰ÄCÃÄKÅRSÅO¦ÅHöÅ;?Æ`{Æ1ÜÆ/Ç#>Ç-bÇ<�Ç#ÍÇñÇ
ÈÈ)&È PÈ3qÈ?¥È?åÈ%%ÉKÉ:aÉaœÉ,þÉ2+Ê^Ê+sÊ9ŸÊcÙÊV=ËV”ËIëË05Ì0fÌ?—Ì7×ÌBÍRÍgÍ}Í8�Í2ÉÍüÍ/Î@GÎ.ˆÎ$·Î;ÜÎ,ÏEÏ5\Ï’Ï©Ï2¶ÏéÏöÏÐ%Ðb;Ð;žÐÚÐëÐÑ%Ñ+Ñ:ÑUÑdÑvÑ
‡Ñ,•ÑÂÑ×ÑïÑ"Ò#/Ò%SÒ4yÒ8®Ò3çÒ=Ó&YÓ*€Ó6«Ó>âÓ!ÔB0ÔsÔzÔ‚ÔšÔ©Ô°Ô¸ÔÌÔáÔöÔÕÕ1ÕGÕ"bÕ"…Õ
+¨Õ!³Õ%ÕÕûÕÖ#ÖAÖ SÖ&tÖ›Ö»ÖÇÖÓÖ×ÖôÖ××0*×"[×,~×-«×"Ù×ü×Ø0ØJØdØ~Ø˜Ø%±Ø!×ØHùØ;BÙ0~Ù3¯ÙNãÙb2Úe•ÚAûÚ2=Û<pÛ4­ÛVâÛ39ÜJmÜ&¸Ü)ßÜ%	Ý(/Ý.XÝ!‡Ý9©ÝãÝ"øÝ$Þ@Þ`Þ$uÞ$šÞ*¿Þ&êÞ+ßD=ß‚ß7 ß!ØßúßHàUTàªà¼àÄàÌàêàýà=á>MáPŒá'Ýá1â17â=iâ§â+Ãâ-ïâ8ã$Vã&{ã1¢ãÔãðã	ä
+ä&$äPKäœä(®ä×ä!éä9å6EåU|åGÒå-æ(Hæqæ�æ£æ·æ!Éæ$ëæ'ç!8çZç:lç§ç	¹çÃçÕç ïçè *èKèbètèS{è	ÏèÙèàèíèéé7éOébé‚éœé¼éÓéäéþé9êXêiê€ê!”ê¶ê,Ëêøêëë,ë3ë&:ëaë>ë*¾ë)éëì2ìJOìHšìCãì'í%Bí,híB•íHØí@!î-bî:�îEËîEï,Wï>„ï	ÃïÍï{çï0cð”ð$¦ðUËð!ñ3ñ:ñAñ
+Sñ4^ñ“ñ/¥ñÕñòñ
+ò%ò#>òbò<}ò9ºò<ôò91ó'kó5“ó<Éó9ô0@ôAqô@³ô=ôô<2õ9oõ.©õ!Øõúõ(ö/;ö-kö ™ö,ºö&çö3÷B÷4_÷&”÷»÷!Ø÷ú÷%ø%8ø^ø2|ø(¯øØøêøþøù.ù2=ùpùJyù6ÄùMûùIú0_úa�úbòú'Uû}û“û!³û-Õûü5ü+BünüŠü—üM¨üDöü;ýHMý<–ýIÓý&þCDþ&ˆþ¢¯þ!Rÿtÿ†ÿ˜ÿ=²ÿ.ðÿ4.T)ƒ5­/ã6JYh	~ ˆD©5î-$Rh‚š2´Fç.	LgV¾>ÑCCTA˜tÚpO=À6þ-5&cŠ1£4Õ
+'
+E,P,}PªQû&MIt4¾2óA&	h	}	�	¸	Í	í	
+!
+7
+M
+!c
+…
+¤
+º
+Ï
+*ì
+i5�·1ÓR=X7–2Î-
 /
P
l

#�
5³
3é
30Q	‚	Œ
+–
+¡¬	½ÇÔ í2A4F${9  Úû#
14M0‚=³ñ$#-Q@n-¯4Ý-%yS2Í:(;GdV¬]]a?¿>ÿX>,—/Ä7ô1,1^:�4Ë:L;FˆHÏHJa3¬2à8<LE‰BÏ?IR;œ3Ø#.0 _[€3Ü\Nm:¼L÷9D8~9·@ñ(2M[v©k JŒ(×6 G7 _ +ß ]!Oi!/¹!"é!C">P"-�"½"É"Ú"2ç"'#%B#'h#?�#Ð#ë#$$-$H$^$\p$SÍ$#!%7E%A}%¿%Á%Ñ%;â%&2&E&X&Lw&]Ä&+"';N'Š'&¦'hÍ'$6(,[(Mˆ(Ö(1ö(7()K`)¬)½)	Ï)#Ù)ý).
+*9*#O*s*Ï�*Í_+-,6B,&y,% ,!Æ,7è,[ -4|-2±-5ä-..I._.t.Š.Bš.Ý.7å.*/4H/}/9Š/Ä/SØ/O,0D|0WÁ0P1Ij1Q´1X2_2q2�2˜2 2¼2\Ã2 3<%3b3~3"‡3
ª3¸3CÕ3;4oU4Å4å4&ì4155E5
{5$‰5N®5¥ý5£6µ69Í6X7	`7j7ƒ7�7¸7Ó7 ï78#8	78A8N8b8Bj88­8Wæ8k>9ª9E®9"ô9:4/:#d:!ˆ:Bª:"í:&;@7;5x;®;À;Õ;Ý;!õ;%<%=<%c<$‰<$®<#Ó<"÷<=1=E=Y=m=€=“=¦=]Æ=$>$5>)Z>Y„>ZÞ>9?$J?1o?)¡?'Ë?ó?;@!C@1e@—@	 @9ª@Jä@L/A;|AG¸AB.BJBZBNiB?¸B7øBB0CsC ‘C²CÅC2ØC,DX8D4‘D*ÆD%ñD6E#NErE2~E±E9ÐE$
+F/FLFkFxF–F2³FæFG/G EG/fG–G¬GÇG#åG	H(H'9H*aH$ŒH±HÏHäHEIIIhI%…I«IÅIÚIìIÿIJ'J=JSSJX§JRKUSKE©KïK-L@<L+}LC©L6íL3$M;XM9”M@ÎMCNBSN2–N0ÉNEúNT@Ou•O†PE’PZØPT3QxˆQ\R4^R>“R:ÒRF
S=TS>’S*ÑS1üS3.T4bT5—T9ÍT>U'FUnU#‹U&¯UJÖUV!VYxVcÒVH6WiWeéW/OX-Xf­XiYD~Y5ÃY:ùYi4ZDžZ ãZ([J-[ox[Oè[b8\L›\Lè\#5]BY]Bœ]dß]MD^9’^4Ì^6_?8_Fx_:¿_8ú_=3`'q`)™`UÃ`9aHSaœa8¼aõa.ùa
(b
6bDbPb\b?yb¹bÅbãb
òb$c$%cJc_c'qc™c¨c­c²c·c¼cÃcÖcÝcEãcjÖ¼ÂW8åì‰³-âtÏ›•áÁ*˜lUCÔVÚõè_Tˆù*Ê�­�KÊ¬D~<Ýt
+¼…€Ö¾‹ ¤ËŸ¤æ'™Ã®Ñ#ˆ&dŒê´œt%"o*ùsUò±Æl¨„ñu¹
/è;øÒçoÙæz·çCôë ú�#o%Ö&é;g!î±
ówÙ±’yRñH1 ¢<¡Y…�ŽrkÜèÓ«Š‘Êþÿ‰„á–ûÝ	[Žq„fsæ ®ˆsØ_•ÎÌ"žÕÉÅä€œn çùÔYC¿4ÃiW"²�5àß*¥íæö2?U–ƒ{k9QšPEÚµÑ·D:Å¶—@ùhê9´2·Or‡C¶(íy3™þ|>ö5P	lZÇ0Ð®rC¡œ‹càZöh6¥�Zû¥ïÃm¤ÑêwOk‚…¦™‘y›Ó0ï=³wáˆI’câ�Ý»¢çI°žäË}•U»M”»ÿ!×É@S657=�ÅWy¶Š(
+÷¢Ê^²—:r%Sô¦Šñ[¥¦§š“‡ß;ùŒñ©ôëãÕ[“«Ïý¨Œs4Ížìñ³ÆRO€Ä¬%mi×(í\v'uF¿<‹eÀO3q`alHš˜×ê�ÃÆãÓ§3Å9ëÍNí6ªˆ'Hœî\z®ï½Ve÷S4"°9a¡h$KÇ_ôÔA6š‚Ó£•vI8EØ#5?ó0G°-�Ü­Q/Æ«�¯Q B%[šYÉë/]!8\Ãð+÷'9§�
+A
óÍÁ^vzæBüTÕ~ÎÏÔWNL{5V,~$.E²7Vx/Þ³!±Úx
+Òú?<Ûû}Þß[oœ(Ç¥s6‰m¯Ñ G†náòÎnÚïGå+õ°ƒJËTC|Hd] `AµÇV”-µÕiï0ËG‚
îÓ8Í²@›p¸p&å–sÙ.-=¯f‡!|Ê©R"Ô¸îz¨Á£ŒçIàmÀÒ™R¼ŸðdÿgÚj>	u]$ðªŸ€ìÀÿ¯
+ú.ÛNµÛ¼‘DÄ	f­=uM3q™n5óºù­wx�
+Y.[j�õ1�h` ZÞ¾DöçÙbYKeÉBî¨òQ¨!ÏäP}àûùaÈx}ß,òLìgý¸ÒÁ6Šb�¡ÔãN\ü9÷Ä&Àée½ÔØD¦¾åé�Ü´´”á˜Io+ˆJÈÍ÷Ï‡Y�uOK©/m“¸|VM�§®Ù'`ë4`:˜môB!Ÿ±Û”Ü°‚;£52#fàO+,$1¤Ö©iTUî¡F)x¼â¨v'üÜ
Ä²ú¨;»�Õtÿ^üï|>=a%Jåê70l’=GŽ„ÕT9žŽ+>)>8ì”Ðvâ—?�±Z¿?nÂŸ­H¶x¼‚Fcó*.ÎYå<^-db®Ï	Ûã>×Ñ†õ¢Q]	áÌ¶Îz¹Œñ_L³{_N!þ¤ÌÈø.Ÿ{:<4—ÐÙ•fâvd>…ô–@ûÃXÒ#2#BQ¾XuÆà­[�†žuÒ%4�>õD£;BF“AW¬ñõbJNÎ�^'’Ð�ú82¬�Ð¦4bÙ»;…oX„6X�¬ƒ gÅ#{ûays&mÌÂR&w<SýÛ
+ø®L„]½‡^¾{¿KF8:|bš7
e¸†)JÍ‰÷G€7È7äŽU„Xëˆ´@€äy˜¹Éöhìõ+tD�È~†_˜i1+øÞºÝ¿è(zè©ÿ‹úUÈúüÞrÖž57zSk‘1Æ¾÷¥8)d](äé°þºI¼,qÞðŒ-š]EÄ
,ªM‘e×iËý‡0K:¬�XlÌµ¶ûøò×ìƒgô Š¾‚ëkp¹ÇM2¹$Ì)"‰Cf·\œêÇÉ,}–ƒ–åóLé›LÁLâÌÃ�HpI´�¤3&:f ð}"™3Qµeó
+²Ñ½G“¯*¿—FÐéoýt%&Ž·‰d$×q-ÜÂÀØ)ªŽqî•ß;ÊÝ¢pZÄV½Rh“
+ƒ`€$º?Sj‹p«<£~Á›)§”aJ ¤í°áxíAtSüÂ9ËÓµ´í\ªWJ¯,ã…P{Ó	}6/TgØ•‡OÈ™BâÛ$›ø³§RF“æ�cŠ‚1¹*øàb³ÒÄl”¬c¦cA˜c?’£þã¢­œ–ðr‹½»MZèêAj†#pÆq›é¶—Ð‰ÎË‹ü‘k—ä'�,Ÿ~Šþ·/ÊØ†_P`n§~ÇÀ¡jÝj«º@¯«(Ú/WHTÚÍi|Þ½’aÀ©rƒwÏÿÕ·ý¸�:"^±E\E0’3Ø*²þÅÖkª7ðÅ-¥yòžÝ1ãï»ç(ß ‘ö.	2©0ÂEPÖN2)Üè¿¹Âgwh£ªß=v…nÑ¡M¢ö4�Pæ¸ÁÉ=òŒKºý.º« X13@¦)d0d7d>dl¢€¢œ¢°¢Ä¢Ø¢ì¢££(£<£P£d£x£Œ£ £´£È£Ü£ð£¤ ¤4¤H¤\¤p¤„¤˜¤¬¤À¤Ü¤ð¤¥ ¥D¥`¥t¥ˆ¥œ¥°¥Ì¥à¥ô¥¦$¦8¦L¦`¦t¦ˆ¦œ¦°¦Ä¦Ø¦ì¦§$§@§T§h§|§�§¤§¸§Ì§è§¨ ¨4¨H¨\¨p¨„¨˜¨¬¨À¨Ô¨è¨ü¨©$©8©L©`©t©ˆ©œ©¸©Ô©è©ü©ª,ª@ªTªhª|ª�ª¤ª¸ªÌªèª««4«P«l«ˆ«œ«°«Ì«à«ü«¬,¬@¬\¬p¬„¬˜¬¬¬À¬Ô¬è¬ü¬­,­@­\­p­Œ­ ­´­È­Ü­ð­®®,®@®T®h®”®°®Ì®à®ü®¯$¯8¯L¯`¯t¯ˆ¯œ¯°¯Ä¯Ø¯ì¯°°(°<°P°d°€°”°¨°¼°Ð°ä°ø°± ±<±P±d±€±¤±À±Ô±è±ü±²,²@²T²h²„²˜²¬²À²Ô²è²ü²³$³8³L³h³„³ ³´³È³Ü³ð³´´,´H´d´€´”´¨´¼´Ð´ä´ø´µ µ4µHµ\µpµ„µ˜µ¬µÀµÔµèµüµ¶4¶H¶\¶x¶Œ¶ ¶´¶È¶Ü¶ð¶··,·H·d·x·”·°·Ì·è·ü·¸,¸@¸\¸x¸Œ¸ ¸¼¸Ð¸ä¸ø¸¹ ¹4¹H¹\¹x¹Œ¹ ¹¼¹Ð¹ì¹ºº(º<ºPºdºxºŒº º´ºÈºôº»Edÿÿÿÿgdÿÿÿÿ‰d"ÿÿÿÿ¿d ÿÿÿÿùd ÿÿÿÿ3eÿÿÿÿie ÿÿÿÿ�e5ÿÿÿÿÌe%ÿÿÿÿøe)ÿÿÿÿ(f(ÿÿÿÿWf/ÿÿÿÿ�fÿÿÿÿ©f'ÿÿÿÿ×fÿÿÿÿg-ÿÿÿÿ=gÿÿÿÿZg7ÿÿÿÿ“gÿÿÿÿ¾g ÿÿÿÿæg%ÿÿÿÿ#hÿÿÿÿWh*ÿÿÿÿ‚h.ÿÿÿÿ²h)1ÿÿÿÿi%ÿÿÿÿ2i9ÿÿÿÿli
+2ÿÿÿÿ¨i"ÿÿÿÿÜiÿÿÿÿj9ÿÿÿÿSj%ÿÿÿÿ†j
+HÿÿÿÿÚj
+/ÿÿÿÿ1k)ÿÿÿÿrk
+6ÿÿÿÿ²k
+>ÿÿÿÿúk
+0ÿÿÿÿ4l
+Fÿÿÿÿ„l
+ÿÿÿÿÆl
++ÿÿÿÿûl
+ÿÿÿÿ#m
+"ÿÿÿÿOm@)ÿÿÿÿ¾m
+/ÿÿÿÿ÷m
+ ÿÿÿÿ!n-ÿÿÿÿhn6ÿÿÿÿ´n6ÿÿÿÿÿn
+7ÿÿÿÿ@o
+?ÿÿÿÿ‰o
+AÿÿÿÿÔo
+Aÿÿÿÿp
+ÿÿÿÿDpÿÿÿÿvp+ÿÿÿÿ®p-ÿÿÿÿèp3ÿÿÿÿq
+-ÿÿÿÿSq(ÿÿÿÿ�q
+-ÿÿÿÿÆqÿÿÿÿøq6ÿÿÿÿ5r>ÿÿÿÿzr#ÿÿÿÿ¥rÿÿÿÿárÿÿÿÿs
+2ÿÿÿÿYs
+.ÿÿÿÿ‘sFÿÿÿÿØs
+2ÿÿÿÿt
+2ÿÿÿÿPt
+2ÿÿÿÿŒt
+2ÿÿÿÿÈt
+2ÿÿÿÿu
+2ÿÿÿÿ@uFÿÿÿÿ‡u
+9ÿÿÿÿÊu
+7ÿÿÿÿv
+9ÿÿÿÿNvFÿÿÿÿ•vFÿÿÿÿÜv	2ÿÿÿÿw+ÿÿÿÿIw.ÿÿÿÿ~w+ÿÿÿÿ°w-ÿÿÿÿåw0ÿÿÿÿ3x"ÿÿÿÿrx!ÿÿÿÿ¥x
+*ÿÿÿÿÛx
+Aÿÿÿÿ&y
+dÿÿÿÿ”y
+$ÿÿÿÿÂy1ÿÿÿÿþy1ÿÿÿÿ0z
+ÿÿÿÿMz5ÿÿÿÿ›z&ÿÿÿÿÏz=ÿÿÿÿ{&ÿÿÿÿs{+ÿÿÿÿ²{ÿÿÿÿæ{]ÿÿÿÿS|!5ÿÿÿÿª|
+3	ÿÿÿÿð|ÿÿÿÿ"}Kÿÿÿÿn}<"ÿÿÿÿÌ}
+ÿÿÿÿö}$ÿÿÿÿ/~ÿÿÿÿw~;ÿÿÿÿß~Aÿÿÿÿ?ÿÿÿÿh2ÿÿÿÿ¢ÿÿÿÿÓÿÿÿÿ€=ÿÿÿÿT€Iÿÿÿÿ·€(ÿÿÿÿõ€IÿÿÿÿX�!ÿÿÿÿŽ�!ÿÿÿÿ¾�ÿÿÿÿï�+ÿÿÿÿ‚=ÿÿÿÿZ‚+ ÿÿÿÿ§‚5ÿÿÿÿÝ‚@ÿÿÿÿ"ƒ
+%ÿÿÿÿQƒ
+%ÿÿÿÿ€ƒ7ÿÿÿÿ¸ƒ-ÿÿÿÿæƒÿÿÿÿ„<ÿÿÿÿN„-ÿÿÿÿ‹„(�ÿÿÿÿ@…
+.ÿÿÿÿx…
ÿÿÿÿ‡… %ÿÿÿÿÌ…
+"	ÿÿÿÿ†B#$ÿÿÿÿ¨†#&ÿÿÿÿò†!ÿÿÿÿ‡!ÿÿÿÿA‡$ÿÿÿÿy‡$ÿÿÿÿ¼‡%ÿÿÿÿÿ‡ ÿÿÿÿ;ˆÿÿÿÿ`ˆ9ÿÿÿÿ ˆ'ÿÿÿÿÎˆ.ÿÿÿÿ‰)ÿÿÿÿ3‰+ÿÿÿÿe‰ÿÿÿÿ‚‰%ÿÿÿÿ®‰!ÿÿÿÿì‰6ÿÿÿÿ#Š'ÿÿÿÿKŠ;ÿÿÿÿˆŠÿÿÿÿ¶Š"ÿÿÿÿàŠ ÿÿÿÿ‹ ÿÿÿÿU‹*ÿÿÿÿ�‹>ÿÿÿÿÍ‹7,ÿÿÿÿ0Œ5ÿÿÿÿfŒKÿÿÿÿ²Œ
+8ÿÿÿÿôŒ'ÿÿÿÿ/�ÿÿÿÿY�<ÿÿÿÿ§�)ÿÿÿÿá�
+UÿÿÿÿBŽ
+#5ÿÿÿÿ¦Ž2ÿÿÿÿêŽ
+5ÿÿÿÿ)�
+Aÿÿÿÿt�
+;ÿÿÿÿ¹�
+Rÿÿÿÿ�
+"ÿÿÿÿ\�
+0ÿÿÿÿ–�
+ ÿÿÿÿÀ�
+%ÿÿÿÿï�G4ÿÿÿÿp‘
+3ÿÿÿÿ­‘
+ÿÿÿÿÕ‘2ÿÿÿÿ&’<ÿÿÿÿy’<ÿÿÿÿË’
+=ÿÿÿÿ“
+Iÿÿÿÿe“
+Bÿÿÿÿ±“
+Bÿÿÿÿý“
+ ÿÿÿÿ'”&ÿÿÿÿh”2ÿÿÿÿ§”4ÿÿÿÿè”7ÿÿÿÿ •
++ÿÿÿÿU•/ÿÿÿÿ—•
+5ÿÿÿÿÖ•ÿÿÿÿ
+–:ÿÿÿÿK–Dÿÿÿÿ––*ÿÿÿÿÈ–$ÿÿÿÿ—$ÿÿÿÿT—
+>ÿÿÿÿœ—
+3ÿÿÿÿÙ—Rÿÿÿÿ,˜
+2ÿÿÿÿh˜
+2ÿÿÿÿ¤˜
+2ÿÿÿÿà˜
+2ÿÿÿÿ™
+2ÿÿÿÿX™
+2ÿÿÿÿ”™Rÿÿÿÿç™
+9ÿÿÿÿ*š
+7ÿÿÿÿkš
+9ÿÿÿÿ®šRÿÿÿÿ›RÿÿÿÿT›	6ÿÿÿÿ“›/ÿÿÿÿÉ›2ÿÿÿÿœ/ÿÿÿÿ8œ2ÿÿÿÿrœ*	ÿÿÿÿÀœ!ÿÿÿÿüœ&ÿÿÿÿ3�
+:ÿÿÿÿy�
+KÿÿÿÿÎ�
+tÿÿÿÿLž
+*ÿÿÿÿ€ž3ÿÿÿÿ¾ž@ÿÿÿÿÿž
+ÿÿÿÿ#Ÿ!<ÿÿÿÿ€Ÿ/ÿÿÿÿ½ŸDÿÿÿÿ 0!ÿÿÿÿv *ÿÿÿÿ¶ (ÿÿÿÿù fÿÿÿÿp¡ :ÿÿÿÿË¡
+;	ÿÿÿÿ¢&ÿÿÿÿZ¢Rÿÿÿÿ­¢B+ÿÿÿÿ£
+
+!ÿÿÿÿO£-ÿÿÿÿ’£)ÿÿÿÿæ£&Gÿÿÿÿc¤FÿÿÿÿÈ¤ÿÿÿÿï¤9
+ÿÿÿÿ3¥ÿÿÿÿf¥ÿÿÿÿš¥Nÿÿÿÿû¥Kÿÿÿÿb¦(ÿÿÿÿ¡¦Iÿÿÿÿ§,ÿÿÿÿI§+ÿÿÿÿ…§#ÿÿÿÿÃ§-ÿÿÿÿò§Fÿÿÿÿ9¨8ÿÿÿÿ’¨=ÿÿÿÿÐ¨Iÿÿÿÿ©
+.ÿÿÿÿV©
+2ÿÿÿÿ’©:ÿÿÿÿÍ©0ÿÿÿÿþ©ÿÿÿÿªKÿÿÿÿ{ª,ÿÿÿÿ¹ª& ÿÿÿÿ«
+2ÿÿÿÿ»«ÿÿÿÿÌ«(ÿÿÿÿ¬
+/ÿÿÿÿo¬E%ÿÿÿÿö¬('ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%08lx>	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 Table 			Ordinal Table 				[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>
 	[Name Pointer/Ordinal] Table	%08lx
-	code-base %08lx toc (loadable/actual) %08lx/%08lx
-	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:  Hint/Ord Member-Name Bound-To
+	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:     Ordinal  Hint  Member-Name  Bound-To
 
 
 	DLL Name: %.*s
@@ -169,10 +203,6 @@ Exec Auxiliary Header
 
 Export Address Table -- Ordinal Base %ld
 
-Function descriptor located at the start address: %04lx
-
-No reldata section! Function descriptor not decoded.
-
 Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Program Header:
@@ -199,12 +229,10 @@ There is a first thunk, but the section
 
 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 contents cannot be read
 
 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
@@ -221,7 +249,7 @@ Virtual Address: %08lx Chunk size %ld (0
 
 WARNING: Extra data in .rsrc section - it will be ignored by Windows:
 
-[Ordinal/Name Pointer] Table
+[Ordinal/Name Pointer] Table -- Ordinal Base %ld
 
 ppcboot header:
         pc: 0x%08x
@@ -240,16 +268,14 @@ ppcboot header:
     psect idx 3: %u, offset 3: 0x%08x %08x
     psect: %u, offset: 0x%08x %08x
     routine name: %.*s
-   %02u    (type: %3u, size: 4+%3u):    *unhandled* cmd %u
+   %02u    (type: %3u, size: %3u):    *unhandled* cmd %u
+   Erroneous length
+   Error: %s min length is %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)
@@ -315,25 +341,13 @@ ppcboot header:
    vector      : 0x%08x
    version mask: 0x%08x
    version:    %x
-  %s (len=%u+%u):
+  %s (len=%u):
   %u: size: %u, flags: 0x%02x, name: %.*s
   EEOM (len=%u):
   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
+  EGSD entry %2u (type: %u, len: %u):   EMH %d (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
@@ -349,22 +363,22 @@ ppcboot header:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   size : %u
-  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):
+  the input  file's flags: %s  the output file's flags: %s %08x (<unknown>) 0x%08x 64B <EABI version unrecognised> <Unrecognised flag bits set> BPAGE: %u COM COMM Change Protection (%u entries):
  Code Address Reference Fixups:
  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:
+ GBL LIB Linkage Pairs Reference Fixups:
  MACH-O header:
- NOMOD NORM OVR PIC QVAL RD REL Register restore millicode Register save millicode Resources start at offset: %#03x
+ NOMOD NORM OVR PIC QVAL RD REL 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 [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
+ UNI VEC VECEP WEAK WRT [64-bit doubles] [BE8] [FDPIC ABI supplement] [FPA float format] [LE8] [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:  and check the symbol visibility debug module table : vbn: %u, size: %u
  debug symbol table : vbn: %u, size: %u (0x%x)
+ failed to convert GOTPCREL relocation against '%s'; relink with --no-relax
  fixup info rva:  flags: 0x%04x global symbol table: vbn: %u, records: %u
  ident: 0x%08x, name: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -390,35 +404,20 @@ 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
-%03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
-%F%P: already_linked_table: %E
-%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'
+#<invalid error code>%%X%%P: relocation %s against `%s' which may bind externally 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: %F%P: failed to create GNU property section
 %H __tls_get_addr lost arg, TLS optimization disabled
 %H arg lost __tls_get_addr, TLS optimization disabled
+%H: %s against %pT is not supported
 %H: %s against `%pT': error %d
 %H: %s for indirect function `%pT' unsupported
+%H: %s out of range
 %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 here
 %H: %s reloc unsupported in shared libraries and PIEs
 %H: %s used with TLS symbol `%pT'
 %H: %s used with non-TLS symbol `%pT'
@@ -440,45 +439,95 @@ 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 %s returns an unrecognized value %x
 %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: relocation type %u is not supported
 %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
+%H: warning: relocation to "%s" references a different segment
 %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(%pA): error: need linked-to section for --gc-sections
+%P: %pB(%s): error opening thin archive member: %E
 %P: %pB: %s is not supported for `%pT'
+%P: %pB: copy relocation against non-copyable protected symbol `%s'
+%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB
+%P: %pB: failed to add %s to first hash
+%P: %pB: failed to allocate 32-bit DT_RELR bitmap
+%P: %pB: failed to allocate 64-bit DT_RELR bitmap
+%P: %pB: failed to allocate compact relative reloc section
+%P: %pB: failed to allocate memory for section `%pA'
+%P: %pB: failed to allocate relative reloc record
+%P: %pB: failed to finish relative relocations
+%P: %pB: note: the message above does not take linker garbage collection into account
+%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)
+%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: --relax and -r may not be used together
+%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: auto overlay error: %E
+%P: can not build overlay stubs: %E
 %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: corrupt input: %pB
+%P: discarded output section: `%pA'
+%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
+%P: failed to create %s
+%P: failed to create %sn%P: failed to create GOT PLT .eh_frame section
+%P: failed to create GOT PLT section
+%P: failed to create GOT sections
+%P: failed to create IBT-enabled PLT section
+%P: failed to create PLT .eh_frame section
+%P: failed to create PLT .sframe section
+%P: failed to create PLT GOT .sframe section
+%P: failed to create VxWorks dynamic sections
+%P: failed to create ifunc sections
+%P: failed to create second PLT .sframe section
+%P: failed to create the second PLT .eh_frame section
+%P: failed to size relative relocations
+%P: first_hash failed to create: %E
 %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 PDE
+%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: %s against `%s': error: relocation applies outside section
+%X%H: %s against `%s': error: relocation target address is odd
+%X%H: %s against `%s': internal error: unexpected relocation result %d
 %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: relocation to "%s" references a different segment
 %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(%pA): relocation is not supported
+%X%P: %pB(%pA): relocation out of range
+%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
@@ -488,23 +537,44 @@ ppcboot header:
 %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%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
 %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)
+%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+%Xerror: found a total of %d inputs incompatible with BTI requirements.
+%Xerror: found a total of %d inputs incompatible with GCS requirements.
+%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): 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
-%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 (%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 symbol number %lu uses unsupported binding of %u%pB symbol number %lu uses unsupported type of %u%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 %zu is empty%pB(%pA): error: secondary reloc %zu is of an unknown type%pB(%pA): error: secondary reloc %zu references a deleted symbol%pB(%pA): error: secondary reloc %zu references a missing symbol%pB(%pA): error: secondary reloc section has non-standard sized entries%pB(%pA): error: secondary reloc section has zero sized entries%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): relocation %zu has invalid symbol index %lu%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(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only
+%pB(%s): Unknown destination type (ARM/Thumb) in %pB%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 (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB
+%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB
+%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: Adjusting branch at 0x%V towards "%s" in section %s
+%pB: BE8 images only valid in big-endian mode%pB: C_STAT isn't supported by XCOFF64%pB: Cannot create stub entry '%s'%pB: Cannot handle relocation value size of %d%pB: DT_STRTAB table is corrupt%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: Number of symbols in input file has increased from %lu to %u
+%pB: PC-relative offset overflow in GOT PLT entry for `%s'
+%pB: PC-relative offset overflow in PLT entry for `%s'
+%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%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: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed
+%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to generate dynamic relocs because a suitable section does not exist
+%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: adjusting invalid FileAlignment%pB: adjusting invalid SectionAlignment%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 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: branch displacement overflow in PLT entry for `%s'
+%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: can't link different ABI object.%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 export internal symbol `%s`.%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot handle more than %d dynamic symbols%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: conditional branch to undefined symbol `%s' not allowed%pB: corrupted group section: `%pA'%pB: could not find output section %pA for input section %pA%pB: could not read contents of group [%u]%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 against a local symbol 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: attribute section length too small: %ld%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 attributes version '%c'(%d) - expecting 'A'
+%pB: error: unknown mandatory EABI object attribute %d%pB: error: unsupported PLT type: %u%pB: expected symbol index in range 0..%lu but found local symbol with index %lu%pB: failed to extract object only section: %s%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 get symbol table in object only section: %s%pB: failed to open object only section: %s%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: 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: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid NumberOfRvaAndSizes%pB: invalid entry (%#x) in group [%u]%pB: invalid file to extract object only section: %s%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
@@ -518,15 +588,24 @@ 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: 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: 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: mapped section %pA has non-NULL buffer%pB: misplaced XTY_LD `%s'%pB: missing import name for IMPORT_NAME_EXPORTAS for %s%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: non-canonical reference to canonical protected function `%s' in %pB%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: overflow reloc count too small%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 %#x unsupported%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 absolute symbol `%s' can not be used when making a shared object%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object%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 %s overflow 0x%lx%pB: relocation %s right shift %d error 0x%lx%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_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE%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 %s is compressed with zstd, but BFD is not built with zstd support%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %u%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 based reloc type (%u) is not supported with -z pack-relative-relocs%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: string table [%u] is corrupt%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: symbol name exceeds given max length of %d%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 compress section %s%pB: unable to create fake empty section%pB: unable to decompress section %s%pB: unable to fill in DataDirectory[%d]: %s is missing%pB: unable to fill in DataDirectory[%d]: %s not defined correctly%pB: unable to fill in DataDirectory[%d]: %s not properly aligned%pB: unable to fill in DataDirectory[%d]: size can't be read from %s%pB: unable to fill in DataDirectory[%d]: size too large for the containing section%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 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: unexpected type (%#x) section `%s' in group [%u]%pB: unhandled dynamic relocation against %s%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: 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 bfd relocation type %#x%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation %s against symbol `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type %s%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported swap_aux_in for storage class %#x%pB: unsupported swap_aux_out for storage class %#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 is required by -z force-bti, but this input object file lacks the necessary property note.
+%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
+%pB: warning: RVE PLT generation not supported%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up%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 %lu 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 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: 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: truncated `%s' option%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment%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: warning: win32pstatus %s of size %lu bytes is too small%pB: will not resolve runtime TLS relocation%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u%pB: wrong auxtype %#x for storage class %#x%pB: x86 ISA needed: %pB: x86 ISA used: %pB:%.8s: RVA truncated%pB:%.8s: section below image base%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 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%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s%pB[%pA]: no output section for space %pA%pcrel_lo missing matching %pcrel_hi%pcrel_lo overflow with an addend%pcrel_lo section symbol with an addend%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20%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)
+%s has both normal and TLS relocs%s in overlay section%s is defined but could not be loaded: %s%s is defined but plugin support is disabled%s is loaded but symbol "%s" is not found: %s%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s, iter %u
+  branch         %lu
+  long branch    %lu
+  plt call       %lu
+  global entry   %lu%s: BFD %s internal error, aborting at %s:%d
+%s: BFD %s internal error, aborting at %s:%d in %s
+%s: Bad ELF id: `%d'%s: ISA string cannot contain uppercase letters%s: ISA string must begin with rv32, rv64 or Profiles%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: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: failed to open to extract object only section: %s%s: first ISA extension must be `e', `i' or `g'%s: invalid prefixed ISA extension `%s' ends with <number>p%s: no such symbol%s: not implemented%s: not supported%s: object size does not match that of target %s%s: prefixed ISA extension must separate with _%s: undefined version: %s%s: unknown prefixed ISA extension `%s'%s: unknown standard ISA extension or prefix class `%c'%scannot + base extension `%s' in %s `%s'%sdeprecated - extension `%s' in %s `%s'%sinvalid ISA extension ends with <number>p in %s `%s'%sunknown ISA extension `%s' in %s `%s'%tlsdesc_lo with addend(%s): Unknown destination type (ARM/Thumb) in %pB(at bit offset %u)
 (descriptor)
-(format %c%c%c%c signature %s age %ld)
+(format %c%c%c%c signature %s age %ld pdb %s)
 (no value)
 (not active)
 (not allocated)
@@ -539,28 +618,24 @@ ppcboot header:
 , 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>
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<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:
+<unknown mask flags><unknown: %x><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBase 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
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsCopyright 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 0x%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: section %s has no contentsDWARF error: section %s is too bigDWARF 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 DirectoryEIHD: (size: %u, nbr blocks: %u)
+Delay Import DirectoryDescription DirectoryEIHD: (size: %u, nbr blocks: %u)
 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
+Error: %pB and %pB has different DSP versionError: %pB and %pB has different FPU ABIError: %pB and %pB has different VDSP versionError: %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 supported only by GNU and FreeBSD targetsGNU_RETAIN section is supported only by GNU and FreeBSD targetsGOT 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,20 +643,20 @@ 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)
 Image symbol & debug table: (major: %u, minor: %u)
-Import Address Table DirectoryImport Directory [parts of .idata]LOGICAL_NAMES    Language Processor Name
+Import Address Table DirectoryImport Directory [parts of .idata]Internal error: unreachable.LAM_U48 propertyLAM_U57 propertyLOGICAL_NAMES    Language Processor Name
 Length              = 0x%.8lx (%ld)
 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:
+NETWORKS         NORMALNOTE: This behaviour is deprecated and will be removed in a future version of the linkerName 				NoneNumber in:
 OPR_ADD (add)
 OPR_AND (logical and)
 OPR_ASH (arithmetic shift)
@@ -606,21 +681,19 @@ ppcboot header:
 Partition[%d] length = 0x%.8lx (%ld)
 Partition[%d] sector = 0x%.8lx (%ld)
 Please report this bug.
-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
+Private flags = 0x%lx : 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 togetherRL78 reloc divide by zeroRL78 reloc stack overflow/underflowR_AMD64_IMAGEBASE with __ImageBase undefinedR_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            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 %pASFrame sections with unexpected data encoding prevent .sframe generationSHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
-STA_LW (stack longword) 0x%08x
-STA_MOD (stack module)
+STA_LW (stack longword)STA_MOD (stack module)
 STA_PQ (stack psect base + offset)
-STA_QW (stack quadword) 0x%08x %08x
-STC_BOH_GBL (store cond BOH at global addr)
+STA_QW (stack quadword)STC_BOH_GBL (store cond BOH at global addr)
 STC_BOH_PS (store cond BOH at psect + offset)
 STC_BSR_GBL (store cond BSR at global addr)
 STC_BSR_PS (store cond BSR at psect + offset)
@@ -659,27 +732,27 @@ ppcboot header:
 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
+Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pBTLS relocation invalid without dynamic sectionsTOC overflow during stub generation; try -mminimal-toc when compilingTable Addresses
+The addend isn't allowed for R_RISCV_GOT_HI20The 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
 Too many unwind codes (%ld)
 Type                Size     Rva      Offset
-USRSTACKUnknownUnknown: %xUpdated property %W (%v) to merge %pB (0x%v) and %pB (not found)
+USRSTACKUnable to find the stub entry targeting %sUnable to link input file: %sUnable to load DLL.UnknownUnknown: %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]_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:
+Warning: should use "_" to contact Profiles with other extensionsWriting 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]\%pB: warning: %s BLX instruction targets %s function '%s'__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 function`xtheadvector' is conflict with the `v/zve32x' extension`zclsd' is conflict with the `c+f'/ `zcf' extension`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extensiona 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: %#lxbfd_mach_o_read_section_64: overlarge alignment value: %#lxbfd_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
+branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBc' or `zcacan'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 find default versions of the ISA extension `%s'cannot read DMT
 cannot read DMT header
 cannot read DMT psect
 cannot read DST
@@ -695,87 +768,83 @@ ppcboot header:
 cannot read GST
 cannot read GST record
 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
+cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)class: %u, dtype: %u, length: %u, pointer: 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 reloc recordcorrupt vms valuecorrupted GST
+could 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]d' and `c', or `zcdd' and `zfad' or `zdinxdangerous 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
+division by zerodst_define_location %u too largedynamic index information not availabledynamic relocation in read-only sectiondynreloc 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 adding attributeerror in %pB(%pA); no .eh_frame_hdr table will be createderror in %pB(%pA); no .sframe will be createderror in %pB(%pA); unexpected SFrame section typeerror 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 has a LOAD segment with RWX permissionserror: %pB has a TLS segment with execute permissionerror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %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 alignederror: %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 RISC-V used size: 0x%x>error: %pB: <corrupt property (0x%x) 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: SB relative addressing conflicts with use of R9error: %pB: XLEN of input (%u) doesn't match output (%u)error: %pB: cannot mix rf16 with full register set %pBerror: %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: mis-matched ISA string to merge '%s' and '%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 create group section symbolerror: %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: %pB: unsupported XLEN (%u), you might be using wrong emulationerror: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack sectionerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: conflicting CPU architectures %s vs %s in %pBerror: creating an executable stack because of -z execstack command line optionerror: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spaceerror: 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 %pBexecutablef' and `c', or `zcff' or `zfinxfailed 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 truncatedfinal size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spacefurther 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 definedhhidden 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
+input SFrame sections with different abi prevent .sframe generationinput SFrame sections with different format versions prevent .sframe generationinternal 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 internal: internal: unreachable INSN_CLASS_*invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid dynamic indexinvalid 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
+linkable imagelinker stubs in %u grouplinker stubs in %u groupsliteralliteral relocation occurs for an external symbollocal symbol index too biglong branch stub `%s' offset overflowm' or `zmmulmach-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]: 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-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
+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 dynamic index information availableno 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 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 overflowplugin framework: out of file descriptors. Try using fewer objects/archives
+pointer
 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
+protected symbolprotected symbol q' and `zfaq' or `zqinxrecbeg: 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
-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
+recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'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 against `%s' has faulty GOT type 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: %sreserved cmd %drtnbeg
 rtnend: size 0x%08x
-section has no contentsseptyp, name: %.*s
+rv%d does not support the `q' extensionrv%d does not support the `smmpm' extensionrv%d does not support the `smnpm' extensionrv%d does not support the `ssnpm' extensionrv%d does not support the `sspm' extensionrv%d does not support the `supm' extensionrv%d does not support the `zcf' extensionrv%de does not support the `h' extensionsection 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
-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 too large; lower small-data size limit (see option -G)smctr' or `ssctrsom_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 supported only by GNU and FreeBSD targetssymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targetssystem 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 valuesv' or `zve64d' or `zve64f' or `zve32fv' or `zve64x' or `zve32xv850 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 LOAD segment with RWX permissionswarning: %pB has a TLS segment with execute permissionwarning: %pB has a corrupt string table indexwarning: %pB has a program header with invalid alignmentwarning: %pB has a section extending past end of filewarning: %pB has a segment extending past end of filewarning: %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(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: %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 memory sealing size: 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: unknown RISCV ABI 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
-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>
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: %s: missing .note.GNU-stack section implies executable stackwarning: %s: requires executable stack (because the .note.GNU-stack section is executable)warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: --plt-localentry is incompatible with power10 pc-relative codewarning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised.warning: NOTE: size discrepancies can cause real problems.  Investigation is advised.warning: 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 normal symbol `%s' in %pB is smaller than %u used by the common definition in %pBwarning: 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: enabling an executable stack because of -z execstack command line optionwarning: file %pB's arch flag %s conflict with target %s,set target arch flag to %swarning: file %pB's arch flag %s conflicts with target ck%s, using %swarning: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+warning: found a total of %d inputs incompatible with BTI requirements.
+warning: found a total of %d inputs incompatible with GCS requirements.
+warning: 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: privileged spec version 1.9.1 can not be linked with other spec versionswarning: 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: unrecognised arch name '%#x'warning: 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
+x ISA extension `%s' must be set with the versionsyesyou are not allowed to define %s in a scriptzbb' or `zbkbzbc' or `zbkczcb' and `zbazcb' and `zbbzcb' and `zmmul', or `zcb' and `mzcmp' is incompatible with `d' and `c', or `zcd' extensionzfh' and `zfazfh' and `zfa', or `zvfh' and `zfazfh' or `zhinxzfh' or `zvfhzfhmin' and `d', or `zhinxmin' and `zdinxzfhmin' and `q', or `zhinxmin' and `zqinxzfhmin' or `zhinxminzicfiss' and `zcmopzihintntl' and `c', or `zihintntl' and `zcazknd' or `zknezvbbzvbczvkbzvkgzvknedzvknha' or `zvknhbzvksedzvkshzvl*b extensions need to enable either `v' or `zve' extensionProject-Id-Version: bfd-2.44.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2025-07-13 08:44+0100
+PO-Revision-Date: 2025-07-15 06:15+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
+Plural-Forms: nplurals=2; plural=(n != 1);
 X-Bugs: Report translation errors to the Language-Team address.
-Plural-Forms: nplurals=2; plural=n != 1;\n
-X-Generator: Gtranslator 2.91.7
-	    TLS: %pA	<corrupto: 0x%04lx>	Tabela end. exportaÃ§Ã£o 			Tabela end. exportaÃ§Ã£o 		%08lx
+X-Generator: Poedit 3.6
+	    TLS: %pA	<corrompido: 0x%08lx>	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
 	rva de tabela ordinal (0x%lx) ou total de entradas (0x%lx) invÃ¡lidos
-	Tabela Nome Ponteiro 			Tabela ordinal 				[%4ld] <desvio corrupto: %lx>
+	Tabela Nome Ponteiro 			Tabela ordinal 				[%4ld] +base[%4ld]  %04lx <desvio corrompido: %lx>
 	[Nome Ponteiro/Ordinal] Tabela	%08lx
-	code-base %08lx toc (carregÃ¡vel/actual) %08lx/%08lx
-	nÃ£o-TLS: %pA	reloc %4d desvio %4x [%4lx] %s	vma:  Dica/Ord Nome-membro ligado a
+	nÃ£o-TLS: %pA	reloc %4d desvio %4x [%4lx] %s	vma:     Ordinal  Dica  Nome-Membro  Ligado-a
 
 
 	Nome DLL: %.*s
@@ -805,10 +874,6 @@ Exec Auxiliary Header
 
 Tabela end. exportaÃ§Ã£o -- Base ordinal %ld
 
-Descritor de funÃ§Ã£o localizado no endereÃ§o inicial: %04lx
-
-Sem secÃ§Ã£o reldata! Descritor de funÃ§Ã£o nÃ£o descodificado.
-
 InÃ­cio da partiÃ§Ã£o[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 CabeÃ§alho do programa:
@@ -835,12 +900,10 @@ HÃ¡ um primeiro thunk, mas a secÃ§Ã£o qu
 
 HÃ¡ uma tabela de exportaÃ§Ã£o em %s em 0x%lx
 
-HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas nÃ£o serve nessa secÃ§Ã£o
+HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas nÃ£o se pode ler o conteÃºdo
 
 HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas Ã© demasiado pequena (%d)
 
-HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas essa secÃ§Ã£o nÃ£o tem conteÃºdo
-
 HÃ¡ uma tabela de exportaÃ§Ã£o, mas a secÃ§Ã£o que a contÃ©m nÃ£o pÃ´de ser encontrada
 
 HÃ¡ uma tabela de importaÃ§Ã£o em %s em 0x%lx
@@ -857,7 +920,7 @@ EndereÃ§o virtual: %08lx, tamanho do ped
 
 AVISO: dados extra em secÃ§Ã£o .rsrc - serÃ¡ ignorada pelo Windows:
 
-Tabela [Ordinal/Nome Ponteiro]
+[Ponteiro Ordinal/Nome] Tabela -- Ordinal Base %ld
 
 cabeÃ§alho ppcboot:
         pc: 0x%08x
@@ -876,16 +939,14 @@ cabeÃ§alho ppcboot:
     Ã­nd psect 3: %u, desvio 3: 0x%08x %08x
     psect: %u, desvio: 0x%08x %08x
     nome da rotina: %.*s
-   %02u    (tipo: %3u, tam.: 4+%3u):    cmd *nÃ£o gerido* %u
+   %02u    (tipo: %3u, tamanho: %3u):    cmd *nÃ£o gerido* %u
+   Tamanho errÃ³neo
+   Erro: tamanho mÃ­nimo de %s Ã© %u
    Erro: data de compilaÃ§Ã£o truncada
-   Erro: o tamanho Ã© menor que o tamanho de um registo EEOM
-   Erro: o tamanho Ã© menor que o tamanho de um registo EMH
    Erro: nome de mÃ³dulo em falta
    Erro: nome de mÃ³dulo muito longo
    Erro: versÃ£o de mÃ³dulo em falta
    Erro: versÃ£o de mÃ³dulo muito longa
-   Erro: o tamanho do registo Ã© menor que o tamanho de um registo EMH_MHD
-   Erro: tamanho maior que o espaÃ§o restante no registo
    alinhamento  : 2**%u
    aloc. (tam)   : %u (0x%08x)
    aloc. (tam): %u (0x%08x)
@@ -951,25 +1012,13 @@ cabeÃ§alho ppcboot:
    vector      : 0x%08x
    mÃ¡scara de versÃ£o: 0x%08x
    versÃ£o:     %x
-  %s (tam=%u+%u):
+  %s (tam=%u):
   %u: tam.: %u, bands: 0x%02x, nome: %.*s
   EEOM (tam=%u):
   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
+  entrada EGSD %2u (tipo: %u, tamanho: %u):   EMH %d (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
@@ -985,22 +1034,22 @@ cabeÃ§alho ppcboot:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   tamanho: %u
-  bandeiras fich. entrada: %s  bandeiras fich. saÃ­da:   %s %08x<desconhecido> 0x%08x 64B <versÃ£o EABI nÃ£o reconhecida> BPAGE: %u COM COMM Alterar protecÃ§Ã£o (%u entradas):
+  bandeiras fich. entrada: %s  bandeiras fich. saÃ­da:   %s %08x <desconhecido> 0x%08x 64B <versÃ£o EABI nÃ£o reconhecida> <bits de bandeira definidos nÃ£o reconhecidos> BPAGE: %u COM COMM Alterar protecÃ§Ã£o (%u entradas):
  Fixups de referÃªncia de endereÃ§o de cÃ³digo:
  DEF EXE requerido suporte FPU:  1Âº endereÃ§o: 0x%08x 0x%08x
  4Âº endereÃ§o: 0x%08x 0x%08x
- GBL Colar sequÃªncia de cÃ³digo LIBFixups de referÃªncia de pares de ligaÃ§Ã£o:
-CabeÃ§alho MACH-0:
- NOMOD NORM OVR PIC QVAL RD REL Register restore millicode Register save millicode Recursos comeÃ§am no desvio: %#03x
+ GBL LIB Fixups de referÃªncia de pares de ligaÃ§Ã£o:
+ CabeÃ§alho MACH-0:
+ NOMOD NORM OVR PIC QVAL RD REL Recursos comeÃ§am no desvio: %#03x
  SHR 2Âº endereÃ§o: 0x%08x 0x%08x
  Imagens partilhÃ¡veis:
  Imagem partilhada: 0x%08x 0x%08x
  Tabela de cadeia comeÃ§a no desvio: %#03x
  Tabela: Car.: %d, Hora: %08lx, Ver: %d/%d, Nomes NÃºm: %d, IDs: %d
  3Âº endereÃ§o: 0x%08x 0x%08x
- UNI VEC VECEP WEAK WRT [64-bit doubles] [BE8] [suplemento FDPIC ABI] [formato flutuante FPA] [LE8] [formato flutuante Maverick] [formato flutuante VFP] [Version1 EABI] [Version2 EABI] [Version3 EABI] [Version4 EABI] [Version5 EABI] [desvio XGATE RAM] [abi desconhecida] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld [d-float] [sÃ­mbolos dinÃ¢micos usam Ã­ndice de segmento] [fix dep] [flutuantes passados em registos flutuantes] [g-float] [hard-float ABI] [interworking activo] [sÃ­mbolos de mapeamento precedem outros] [memÃ³ria=bank-model] [memÃ³ria=flat] [novo ABI] [sem abi definida] [nonpic] [nÃ£o 32bitmode] [ABI antigo] [pic] [posiÃ§Ã£o independente] [executÃ¡vel relocalizÃ¡vel] [soft-float ABI] [software FP] [tabela de sÃ­mbolo ordenada] [sÃ­mbolos tÃªm um prefixo _] [ISA desconhecida] [tabela de sÃ­mbolo desordenada] [v10 e v32] [v32] alinhamento de entidades 8-byte:  GST corrompido
- tabela de mÃ³dulo de depuraÃ§Ã£o: vbn: %u, tamanho: %u
+ UNI VEC VECEP WEAK WRT [64-bit doubles] [BE8] [suplemento FDPIC ABI] [formato flutuante FPA] [LE8] [formato flutuante VFP] [Version1 EABI] [Version2 EABI] [Version3 EABI] [Version4 EABI] [Version5 EABI] [desvio XGATE RAM] [abi desconhecida] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld [d-float] [sÃ­mbolos dinÃ¢micos usam Ã­ndice de segmento] [fix dep] [flutuantes passados em registos flutuantes] [g-float] [hard-float ABI] [interworking activo] [sÃ­mbolos de mapeamento precedem outros] [memÃ³ria=bank-model] [memÃ³ria=flat] [novo ABI] [sem abi definida] [nonpic] [nÃ£o 32bitmode] [ABI antigo] [pic] [posiÃ§Ã£o independente] [executÃ¡vel relocalizÃ¡vel] [soft-float ABI] [software FP] [tabela de sÃ­mbolo ordenada] [sÃ­mbolos tÃªm um prefixo _] [ISA desconhecida] [tabela de sÃ­mbolo desordenada] [v10 e v32] [v32] alinhamento de entidades 8-byte:  e verificar visibilidade do sÃ­mbolo tabela de mÃ³dulo de depuraÃ§Ã£o: vbn: %u, tamanho: %u
  tabela de sÃ­mbolo de depuraÃ§Ã£o : vbn: %u, tamanho: %u (0x%x)
+ falha ao converter relocalizaÃ§Ã£o GOTPCREL contra "%s"; religue com --no-relax
  fixup info rva:  bandeiras: 0x%04x tabela de sÃ­mbolo global: vbn: %u, registos: %u
  ident: 0x%08x, nome: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -1026,38 +1075,23 @@ 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
-%03x %*.s Entrada: %C: aviso: relocalizaÃ§Ã£o para "%s" referencia um segmento diferente
-%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
-%F%P: entrada corrupta: %pB
-%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
-%F%P: falha ao converter relocalizaÃ§Ã£o GOTPCREL; religue com --no-relax
-%F%P: falha ao criar secÃ§Ã£o BND PLT
-%F%P: falha ao criar secÃ§Ã£o de propriedade GNU
-%F%P: falha ao criar secÃ§Ã£o GOT PLT .eh_frame
-%F%P: falha ao criar secÃ§Ã£o GOT PLT
-%F%P: falha ao criar secÃ§Ãµes GOT
-%F%P: falha ao criar secÃ§Ã£o IBT-enabled PLT
-%F%P: falha ao criar secÃ§Ã£o PLT .eh_frame
-%F%P: falha ao criar secÃ§Ãµes dinÃ¢micas VxWorks 
-%F%P: falha ao criar secÃ§Ãµes ifunc
-%F%P: falha ao criar segunda secÃ§Ã£o PLT .eh_frame
-%F%pA: falha ao alinhar secÃ§Ã£o
-%F%pB: transporte de desvio PC-relative em entrada GOT PLT para "%s"
-%F%pB: transporte de desvio PC-relative em entrada PLT para "%s"
-%F%pB: transporte em deslocamento do ramo em entrada PLT para "%s
+#<CÃ³digo de erro invÃ¡lido>%%X%%P: relocalizaÃ§Ã£o %s contra "%s", que pode estar ligada externamente, 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: %F%P: falha ao criar secÃ§Ã£o de propriedade GNU
 %H __tls_get_addr perdeu arg, optimizaÃ§Ã£o TLS desactivada
 argumento %H perdeu __tls_get_addr, optimizaÃ§Ã£o TLS desactivada
-%H: %s contra "%T": erro %d
-%H: %s para funÃ§Ã£o indirecta "%T" nÃ£o suportado
+%H: %s contra %pT nÃ£o Ã© suportada
+%H: %s contra "%pT": erro %d
+%H: %s para funÃ§Ã£o indirecta "%pT" nÃ£o suportado
+%H: %s fora do intervalo
 %H: R_FRV_FUNCDESC referencia sÃ­mbolo dinÃ¢mico com adenda nÃ£o zero
 %H: %s referencia entrada TOC optimizada
 %H: %s reloc contra "%s": erro %d
+%H: %s reloc nÃ£o suportada aqui
 %H: %s reloc nÃ£o suportada em bibliotecas partilhadas e PIEs.
-%H: %s usado com sÃ­mbolo TLS "%T"
-%H: %s usado com sÃ­mbolo nÃ£o-TLS "%T"
+%H: %s usado com sÃ­mbolo TLS "%pT"
+%H: %s usado com sÃ­mbolo nÃ£o-TLS "%pT"
 %H: R_FRV_GETTLSOFF nÃ£o aplicado a uma instruÃ§Ã£o call
 %H: R_FRV_GETTLSOFF_RELAX nÃ£o aplicado a uma instruÃ§Ã£o calll
 %H: R_FRV_GOTTLSDESC12 nÃ£o aplicado a uma instruÃ§Ã£o lddi
@@ -1076,45 +1110,95 @@ 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 %s devolve um valor nÃ£o reconhecido %x
 %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: tipo de relocalizaÃ§Ã£o %u nÃ£o suportado
+%H: %s insolÃºvel contra "%pT"
 %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
+%H: aviso: relocalizaÃ§Ã£o para "%s" referencia um segmento diferente
 %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(%pA): erro: necessÃ¡ria secÃ§Ã£o linked-to para --gc-sections
+%P: %pB(%s): erro ao abrir membro do arquivo fino: %E
 %P: %pB: %s nÃ£o Ã© suportado para "%T"
+%P: %pB: copiar relocalizaÃ§Ã£o contra sÃ­mbolo protegido nÃ£o-copiÃ¡vel "%s"
+%P: %pB: cÃ³pia de relocalizaÃ§Ã£o contra sÃ­mbolo protegido nÃ£o-copiÃ¡vel "%s" em %pB
+%P: %pB: falha ao adicionar %s ao primeiro hash
+%P: %pB: falha ao alocar mapa de bits 32-bit DT_RELR
+%P: %pB: falha ao alocar mapa de bits 64-bit DT_RELR
+%P: %pB: falha ao alocar secÃ§Ã£o compacta de reloc relativa
+%P: %pB: falha ao alocar memÃ³ria para a secÃ§Ã£o "%pA"
+%P: %pB: falha ao alocar registo de reloc relativa
+%P: %pB: falha ao terminar relocalizaÃ§Ãµes relativas
+%P: %pB: nota: a mensagem acima nÃ£o leva em conta a recolha de lixo do linker
+%P: %pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo absoluto "%s" na secÃ§Ã£o "%pA" nÃ£o Ã© permitida
+%P: %pB: tamanho da secÃ§Ã£o compacta relativa reloc alterado: novo (%lu) != antigo (%lu)
+%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: --relax e -r nÃ£o podem ser usadas em cojnunto
+%P: impossÃ­vel atribuir "%pA" a uma secÃ§Ã£o de saÃ­da. Repita sem --enable-non-contiguous-regions.
+%P: impossÃ­vel atribuir "%pA" a secÃ§Ã£o de saÃ­da. Tente sem --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: erro de auto-sobreposiÃ§Ã£o: %E
+%P: impossÃ­vel construir fictÃ­cios de sobreposiÃ§Ã£o: %E
 %P: impossÃ­vel encontrar entrada opd toc para "%T"
 %P: cÃ³pia da reloc contra "%pT" requer ligaÃ§Ã£o lazy plt; evite definir LD_BIND_NOW=1 ou actualize o gcc
 %P: cÃ³pia de reloc contra "%T" protegido Ã© perigosa
-%P: erro na tabela de ligaÃ§Ã£o contra "%T"
+%P: entrada corrupta: %pB
+%P: secÃ§Ã£o de saÃ­da descartada: "%pA"
+%P: sÃ­mbolo STT_GNU_IFUNC dinÃ¢mico "%s" com igualdade de ponteiro em "%pB" nÃ£o pode se usada ao fazer um executÃ¡vel; recompile com -fPIE e religue com -pie
+%P: falha ao criar %s
+%P: falha ao criar %sn%P: falha ao criar secÃ§Ã£o GOT PLT .eh_frame
+%P: falha ao criar secÃ§Ã£o GOT PLT
+%P: falha ao criar secÃ§Ãµes GOT
+%P: falha ao criar secÃ§Ã£o IBT-enabled PLT
+%P: falha ao criar secÃ§Ã£o PLT .eh_frame
+%P: falha ao criar secÃ§Ã£o PLT .sframe
+%P: falha ao criar secÃ§Ã£o PLT GOT .sframe
+%P: falha ao criar secÃ§Ãµes dinÃ¢micas VxWorks 
+%P: falha ao criar secÃ§Ãµes ifunc
+%P: falha ao criar segunda secÃ§Ã£o PLT .sframe
+%P: falha ao criar segunda secÃ§Ã£o PLT .eh_frame
+%P: falha ao dimensionar relocalizaÃ§Ãµes relativas
+%P: falha ao criar first_hash: %E
+%P: erro na tabela de ligaÃ§Ã£o contra "%pT"
 %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 em PDE
+%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: %s contra "%s": erro: relocalizaÃ§Ã£o aplica secÃ§Ã£o externa
+%X%H: %s contra `%s': erro: endereÃ§o destino da relocalizaÃ§Ã£o Ã© Ã­mpar
+%X%H: %s contra "%s": erro interno: resultado de relocalizaÃ§Ã£o %d inesperado
 %X%H: chamada @local a ifunc %s
 %X%H: impossÃ­vel converter ramo entre modos ISA para JALX: relocalizaÃ§Ã£o fora do intervalo
 %X%H: relocalizaÃ§Ã£o %s contra "%s" nÃ£o pode ser usada a fazer um objecto partilhado; recompile com -fPIC
+%X%H: relocalizaÃ§Ã£o para "%s" referencia um segmento diferente
 %X%H: JALX nÃ£o suportado para o mesmo modo ISA
 %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(%pA): relocalizaÃ§Ã£o nÃ£o suportada
+%X%P: %pB(%pA): relocalizaÃ§Ã£o fora do intervalo
+%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
@@ -1124,28 +1208,47 @@ cabeÃ§alho ppcboot:
 %X%P: secÃ§Ãµes de sobreposiÃ§Ã£o %pA e %pA nÃ£o comeÃ§am no mesmo endereÃ§o.
 %X%P: erro de anÃ¡lise stack/lrlive: %E
 %X%P: relocalizaÃ§Ãµes de texto e funÃ§Ãµes indirectas GNU resultarÃ£o em segfault em tempo de execuÃ§Ã£o
+%X%pB: erro: BTI Ã© requerido por -z force-bti, mas este ficheiro objecto de entrada nÃ£o tem a nota de propriedade necessÃ¡ria.
+%X%pB: erro: GCS Ã© requerido por -z gcs, mas este ficheiro objecto de entrada nÃ£o tem a nota de propriedade necessÃ¡ria.
+%X%pB: erro: GCS Ã© requerido por -z gcs, , mas esta biblioteca partilhada nÃ£o tem a nota de propriedade necessÃ¡ria. O carregador dinÃ¢mico pode nÃ£o activar o GCS ou recusar-se a carregar o programa, a nÃ£o ser que todas as dependÃªncias da biblioteca partilhada tenham a marca GCS.
 %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)
+%Xerro: encontrado um total de %d objectos dinamicamente ligados incompatÃ­vel com requisitos GCS.
+%Xerro: encontrado um total de %d entradas incompatÃ­vel com requisitos BTI.
+%Xerro: encontrado um total de %d entradas incompatÃ­vel com requisitos GCS.
+%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.
-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:
+%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 existentesÃ­mbolo %pB nÃºmero %lu usa ligaÃ§Ã£o nÃ£o suportada de %usÃ­mbolo %pB nÃºmero %lu usa tipo nÃ£o suportado de %u%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: entrada de tabela de reloc %zu vazia%pB(%pA): erro: reloc secundÃ¡ria %zu Ã© de tipo desconhecido%pB(%pA): erro: reloc secundÃ¡ria %zu referencia um sÃ­mbolo eliminado%pB(%pA): erro: reloc secundÃ¡ria %zu referencia um sÃ­mbolo em falta%pB(%pA): erro: secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria tem entradas de tamanho nÃ£o-padrÃ£o%pB(%pA): erro: secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria tem entradas de tamanho zero%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): relocalizaÃ§Ã£o %zu tem Ã­ndice de sÃ­mbolos invÃ¡lido %lu%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 carga mÃºltipla em instruÃ§Ã£o de bloco IT nÃ£o-final: a camada STM32L4XX nÃ£o pode ser gerada; 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(%pA+0x%v): relocalizaÃ§Ã£o %s contra "%ssÃ³ pode ser usada em ADD ou MOV
+%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra "%s" tem de ser usada sÃ³ em ADD ou MOVRS
+%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra "%s" sÃ³ pode ser usada em ADD, SUB ou MOV
+%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra "%ssÃ³ pode ser usada em LEA
+%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra "%s" sÃ³ pode ser usada em CALL indirecta sÃ³ com registo %s
+%pB(%s): tipo de destino desconhecido (ARM/Thumb) em %pB%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
-%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.
-   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"
+  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: %s (desvio: 0x%v, informaÃ§Ã£o: 0x%v) contra "%s" para secÃ§Ã£o "%pA" em %pB
+%pB: %s (offset: 0x%v, informaÃ§Ã£o: 0x%v, addend: 0x%v) contra "%s" para secÃ§Ã£o "%pA" em %pB
+%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: a ajustar ramo em 0x%V em direcÃ§Ã£o a "%s" na secÃ§Ã£o %s
+%pB: imagens BE8 sÃ³ sÃ£o vÃ¡lidas em modo big-endian%pB: C_STAT nÃ£o Ã© suportado por XCOFF64%pB: impossÃ­vel criar entrada fictÃ­cia "'%s"%pB: impossÃ­vel gerir valor de tamanho de relocalizaÃ§Ã£o de %d%pB: tabela DT_STRTAB corrompida%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: nÃºmero de sÃ­mbolos no ficheiro de entrada aumentou de %lu para %u
+%pB: transporte de desvio PC-relative em entrada GOT PLT para "%s"
+%pB: transporte de desvio PC-relative em entrada PLT para "%s"
+%pB: relocalizaÃ§Ãµes em ELF (EM: %d) genÃ©rico%pB: relocalizaÃ§Ã£o relativa a SB mas __c6xabi_DSBT_BASE nÃ£o definido%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: transiÃ§Ã£o TLS de %s para %s contra "%s" em 0x%v na secÃ§Ã£o "%pA" falhou
+%pB: entrada TOC "%s" tem R_TLSMLrelocation que nÃ£o se destina a si prÃ³prio%pB: a primeira secÃ§Ã£o no segmento PT_DYNAMIC nÃ£o Ã© a secÃ§Ã£o .dynamic%pB: impossÃ­vel gerar relocs dinÃ¢micas por nÃ£o existir uma secÃ§Ã£o adequada
+%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: a ajustar FileAlignment invÃ¡lido%pB: a ajustar SectionAlignment invÃ¡lido%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: 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: transporte em deslocamento do ramo em entrada PLT para "%s
+%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 ligar objectos ABI diferentes.%pB: impossÃ­vel alocar nome de ficheiro para nÃºmero de ficheiro %d, %d bytes
+%pB: impossÃ­vel alocar memÃ³ria para entradas GOT locais%pB: impossÃ­vel criar entrada fictÃ­cia %s%pB: impossÃ­vel exportar sÃ­mbolo interno "%s".%pB: impossÃ­vel gerir binÃ¡rios Alpha comprimidos; use bandeiras do compilador ou objZ para gerar binÃ¡rios descomprimidos%pB: impossÃ­vel gerir mais de %d sÃ­mbolos dinÃ¢micos%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: ramo condicional para sÃ­mbolo "%s" indefinido nÃ£o permitido%pB: secÃ§Ã£o de grupo corrompida: "%pA"%pB: impossÃ­vel encontrar a secÃ§Ã£o de saÃ­da %pA para a secÃ§Ã£o de entrada %pA%pB: impossÃ­vel ler o conteÃºdo do grupo [%u]%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 contra sÃ­mbolo local 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: tamanho da secÃ§Ã£o de atributo muito pequeno: %ld%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: versÃ£o de atributos "%c"(%d) desconhecida - esperada "A"
+%pB: erro: atributo de objecto EABI obrigatÃ³rio desconhecido %d%pB: erro: tipo PLT nÃ£o suportado: %u%pB: esperado Ã­ndice de sÃ­mbolo no intervalo 0..%lu, encontrado sÃ­mbolo local com Ã­ndice %lu%pB: falha ao extrair secÃ§Ã£o sÃ³ de objecto: %s%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 obter tabela de sÃ­mbolos em secÃ§Ã£o sÃ³ de objecto: %s%pB: falha ao abrir secÃ§Ã£o sÃ³ de objecto: %s%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: 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
+%pB: sÃ­mbolo "%s" interno em %pB Ã© referenciado por DSO%pB: sÃ­mbolo "%s" nÃ£o estÃ¡ definido%pB: NumberOfRvaAndSizes invÃ¡lido%pB: entrada invÃ¡lida (%#x) no grupo [%u]%pB: ficheiro invÃ¡lido para extrair secÃ§Ã£o sÃ³ de objecto: %s%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
 %pB: ficheiro mmo invÃ¡lido: esperado YZ = 1, obtido YZ = %d para lop_quote
 %pB: ficheiro mmo invÃ¡lido: esperado y = 0, obtido y = %d para lop_fixrx
 %pB: ficheiro mmo invÃ¡lido: esperado z = 1 ou z = 2, obtido z = %d para lop_fixo
@@ -1158,16 +1261,25 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 %pB: ficheiro mmo invÃ¡lido: byte inicial da palavra operando tem de ser 0 ou 1, obtido %d para lop_fixrx
 %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: 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: 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: 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: secÃ§Ã£o mapeada %pA tem buffer nÃ£o-NULL%pB: XTY_LD "%s" mal colocado%pB: nome de importaÃ§Ã£o de IMPORT_NAME_EXPORTAS em falta para %s%pB: OMIT_FP aninhado em %pA%pB: sem nÃºcleo para alocar um sÃ­mbolo com %d bytes%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: referÃªncia nÃ£o-canÃ³nica a funÃ§Ã£o canÃ³nica protegida "%s" em %pB%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: a contagem de relocalizaÃ§Ãµes de transporte Ã© muito pequena%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 %#x nÃ£o suportada%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 absoluto "%s" nÃ£o pode ser usada ao fazer um objecto partilhado%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 nÃ£o-absoluto "%s" nÃ£o pode ser usada em RV32 ao fazer um objecto partilhado%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo nÃ£o-absoluto "%s" nÃ£o pode ser usada em RV64 ao fazer um objecto partilhado%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 %s, transporte 0x%lx%pB: relocalizaÃ§Ã£o %s, deslocaÃ§Ã£o direita %d, erro 0x%lx%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_LARCH_32 contra sÃ­mbolo nÃ£o-absoluto "%s" nÃ£o pode ser usada em ELFCLASS64 ao fazer um objecto ou PIE partilhados%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: a secÃ§Ã£o %s estÃ¡ comprimida com zstd, mas o BFD nÃ£o tem suporte a zstd%pB: secÃ§Ã£o "%pA":entrada VTENTRY corrompida%pB: secÃ§Ã£o "%pA" nÃ£o pode ser relocalizada no segmento %u%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: tipo de reloc baseado em pilha (%u) nÃ£o Ã© suportado com -z pack-relative-relocs%pB: tamanho de stack especificado e definido como %s%pB: cadeia nÃ£-null terminada em ficheiro objecto ILF%pB: tabela de cadeias [%u] corrompida%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: o nome do sÃ­mbolo excede o tamanho mÃ¡ximo indicado de %d%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 comprimir secÃ§Ã£o %s%pB: impossÃ­vel criar secÃ§Ã£o vazia falsa%pB: impossÃ­vel descomprimir secÃ§Ã£o %s%pB: impossÃ­vel preencher DataDirectory[%d]: %s em falta%pB: impossÃ­vel preencher DataDirectory[%d]: %s incorrectamente definido%pB: impossÃ­vel preencher DataDirectory[%d]: %s incorrectamente alinhado%pB: impossÃ­vel preencher DataDirectory[%d]: nÃ£o se pode ler o tamanho de %s%pB: impossÃ­vel preencher DataDirectory[%d]: tamanho muito grande para a secÃ§Ã£o contentora%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 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: tipo de secÃ§Ã£o (%#x) inesperado "%s" no grupo [%u]%pB: relocalizaÃ§Ã£o dinÃ¢mica contra %s nÃ£o gerida%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 desconhecidoAviso: %pB: atributo de objecto EABI %d obrigatÃ³rio desconhecido%pB: tipo de relocalizaÃ§Ã£o %d desconhecido%pB: tipo desconhecido [%#x], secÃ§Ã£o "%s"%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: tipo de relocalizaÃ§Ã£o bfd %#x nÃ£o suportado%pB: mach %#x nÃ£o suportado%pB: chamada nÃ£o-PIC a IFUNC "%s" nÃ£o suportada%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo "%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 %s 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: swap_aux_in nÃ£o suportado para a classe de armazenamento %#x%pB: swap_aux_out nÃ£o suportado para a classe de armazenamento %#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 Ã© requerido por -z force-bti, mas este ficheiro objecto de entrada nÃ£o tem a nota de propriedade necessÃ¡ria.
+%pB: aviso: sÃ­mbolo "%s" COMDAT nÃ£o corresponde ao nome de secÃ§Ã£o "%s"%pB: aviso: GCS Ã© requerido por -z gcs, mas este ficheiro objecto de entrada nÃ£o tem a nota de propriedade necessÃ¡ria.
+%pB: aviso: GCS Ã© requerido por -z gcs, mas esta biblioteca partilhada nÃ£o tem a nota de propriedade necessÃ¡ria. O carregador dinÃ¢mico pode nÃ£o activar o GCS ou recusar-se a carregar o programa, a nÃ£o ser que todas as dependÃªncias da biblioteca partilhada tenham a marca GCS.
+%pB: aviso: geraÃ§Ã£o RVE PLT nÃ£o suportada%pB: aviso: R_RISCV_SUB_ULEB128 com addend Ã£o-zero, por favor, reconstrua com binutils 2.42 ou up%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Ã­mbolos ilegal %lu 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: 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: 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: opÃ§Ã£o "`%s" truncada%pB: aviso: impossÃ­vel alocar secÃ§Ãµes ao segmento PT_GNU_RELRO%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: aviso: win32pstatus %s de tamanho %lu bytes Ã© muito pequeno%pB: nÃ£o resolve relocalizaÃ§Ã£o TLS em tempo de execuÃ§Ã£o%pB: win32pstatus NOTE_INFO_MODULE de tamanho %lu Ã© muito pequeno para conter um nome de tamanho %u%pB: auxtype %#x errado para a classe de armazenamento %#x%pB: x86 ISA necessÃ¡ria: %pB: x86 ISA usado: %pB:%.8s: RVA truncado%pB:%.8s: secÃ§Ã£o abaixo da base da imagem%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: 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 Hex%pB:(%pA+%#lx): relocalizaÃ§Ã£o %s contra "%s"nÃ£o pode se usada ao fazer %s; recompile com %s%s%pB[%pA]: sem secÃ§Ã£o de saÃ­da para espaÃ§o %pA%pcrel_lo com %pcrel_hi correspondente em faltatransporte %pcrel_lo com uma adendasÃ­mbolo de secÃ§Ã£o %pcrel_lo com uma adenda%pcrel_lo com adenda nÃ£o Ã© permitido para R_RISCV_GOT_HI20%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)
+%s tem relocs normal e TLS em simultÃ¢neo%s em secÃ§Ã£o de sobreposiÃ§Ã£o%s estÃ¡ definido, mas nÃ£o pÃ´de ser carregado: %s%s estÃ¡ definido, mas o suporte a extensÃµes estÃ¡ desactivado%s estÃ¡ carregado, mas o sÃ­mbolo "%s" nÃ£o foi encontrado: %s%s nÃ£o definido em linker criado %pA%s: nÃ£o implementadodesvio %s muito grande para codificaÃ§Ã£o .eh_frame sdata4%s, iter %u
+  ramo         %lu
+  ramo longo    %lu
+  chamada plt       %lu
+  entrada global   %lu%s: erro interno BFD %s, a abortar em %s:%d
+%s: erro interno BFD %s, a abortar em %s:%d em %s
+%s: mÃ¡ id ELF: "%d"%s: cadeia ISA nÃ£o pode conter maiÃºsculas%s: cadeia ISA tem de comeÃ§ar com rv32, rv64 ou Profiles%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: compilado como objecto 32-bit e %s Ã© 64-bit%s: compilado como objecto 64-bit e %s Ã© 32-bit%s: falha ao abrir para extracÃ§Ã£o secÃ§Ã£o sÃ³ de objecto: %s%s: a primeira extensÃ£o ISA tem de ser "e", "i" ou "g"%s: extensÃ£o ISA "%s" com prefixo invÃ¡lido termina com <number>p%s: sem tal sÃ­mbolo%s: nÃ£o implementado%s: nÃ£o suportado%s: tamanho do objecto nÃ£o corresponde ao do destino %s%s: extensÃ£o ISA com prefixo tem de separar com _%s: versÃ£o indefinida: %s%s: extensÃ£o ISA "%s" com prefixo desconhecida%s: extensÃ£o padrÃ£o ISA desconhecida ou classe de prefixo "%c"%simpossÃ­vel + extensÃ£o base "%s" em %s "%s"%sobsoleto - extensÃ£o%s" em %s "%s"%sextensÃ£o ISA invÃ¡lida, termina com <number>p em %s "%s"%sextensÃ£o ISA desconhecida "%s" em %s "%s"%tlsdesc_lo com addend(%s): tipo de destino desconhecido (ARM/Thumb) em %pB(no desvio de bit %u)
 (descritor)
-(formato %c%c%c%c assinatura %s idade %ld)
+(formato %c%c%c%c assinatura %s idade %ld pdb %s)
 (sem valor)
 (nÃ£o activo)
 (nÃ£o alocada)
@@ -1179,29 +1291,25 @@ 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 Ã©-mips32r2 -mfp64 (12 callee-saved)transporte na entrada .eh_frame_hdr.eh_frame_hdr refere FDEs sobrepostossecÃ§Ã£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<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
-BFD erro interno %s, a abortar em %s:%d em %s
-Pasta de relocalizaÃ§Ã£o base [.reloc]Pasta de importaÃ§Ã£o vinculadaVÃ­nculos:
+<bandeiras de mÃ¡scara desconhecidas><desconhecido: %x><desconhecido>reloc @pltoff contra sÃ­mbolo localBASE_IMAGE       BFD falha de asserÃ§Ã£o %s %s:%dPasta de relocalizaÃ§Ã£o base [.reloc]Pasta de importaÃ§Ã£o vinculadaVÃ­nculos:
 uso CACHE: CLICabeÃ§alho de execuÃ§Ã£o CLRCLUSTERS_LOCKMGR COUNTERS         CPU              CTL_AUGRB (aumentar base de relocalizaÃ§Ã£o) %u
 CTL_DFLOC (definir localizaÃ§Ã£o)
 CTL_SETRB (definir base de relocalizaÃ§Ã£o)
 CTL_STKDL (localizaÃ§Ã£o definida por stack)
 CTL_STLOC (definir localizaÃ§Ã£o)
-CabeÃ§alho de copyright
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsCabeÃ§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-cadeiaErro Dwarf: detectada recursividade em instÃ¢ncia abstractaErro Dwarf: impossÃ­vel encontrar a secÃ§Ã£o %s.Erro Dwarf: impossÃ­vel encontrar nÃºmero abrev. %uErro Dwarf: impossÃ­vel encontrar especificaÃ§Ã£o de variÃ¡vel no desvio 0x%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 5Erro Dwarf: ponteiro de informaÃ§Ã£o excede o final dos atributosErro Dwarf: instÃ¢ncia DIE ref abstracta invÃ¡lidaErro Dwarf: mÃ¡ximo de operaÃ§Ãµes por instruÃ§Ã£o invÃ¡lidoErro Dwarf: valor FORM invÃ¡lido ou nÃ£o gerido: %#xErro Dwarf: tamanho %u do selector de segmento de informaÃ§Ã£o de linha nÃ£o suportadoErro Dwarf: secÃ§Ã£o de nÃºmero de linha modificadaErro 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: secÃ§Ã£o %s sem conteÃºdoErro Dwarf: secÃ§Ã£o %s demasiado grandeErro Dwarf: versÃ£o %d .debug_line nÃ£o geridaErro Dwarf: total de formato zeroDW_EH_PE_datarel nÃ£o especificado para esta arquitecturaPasta 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
-Pasta de descriÃ§Ã£oEIHD: (tamanho: %u, nÂº blocos: %u)
+Pasta de atraso de importaÃ§Ã£oPasta de descriÃ§Ã£oEIHD: (tamanho: %u, nÂº blocos: %u)
 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:
+Erro: %pB e %pB tÃªm versÃ£o DSP diferenteErro: %pB e %pB tÃªm FPU ABI diferenteErro: %pB e %pB tÃªm versÃ£o VDSP diferenteErro: %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_hdrFDPIC 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           A secÃ§Ã£o GNU_MBIND sÃ³ Ã© suportada por alvos GNU e FreeBSDA secÃ§Ã£o GNU_RETAIN sÃ³ Ã© suportada por alvos GNU e FreeBSDRelocalizaÃ§Ãµes GOT e PLT nÃ£o podem ser reparadas com um linker nÃ£o dinÃ¢micotamanho 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,20 +1317,20 @@ 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 suportadasIO               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)
 Tabela de sÃ­mbolo de imagem e depuraÃ§Ã£o: (principal: %u, menor: %u)
-Pasta de tabela de endereÃ§os de importaÃ§Ã£oPasta de importaÃ§Ã£o [partes de .idata]LOGICAL_NAMES    Nome do processador de linguagem
+Pasta de tabela de endereÃ§os de importaÃ§Ã£oPasta de importaÃ§Ã£o [partes de .idata]Erro interno: inalcanÃ§Ã¡vel.propriedade LAM_U48propriedade LAM_U57LOGICAL_NAMES    Nome do processador de linguagem
 Tamanho             = 0x%.8lx (%ld)
 Pasta de configuraÃ§Ã£o de carregamentoFunÃ§Ã£o IFUNC local "%s" em %pB
 MEMORY_MANAGEMENTfunÃ§Ãµes MIPS16 e microMIPS nÃ£o se podem chamar entre siMISC             uso MMU: MULTI_PROCESSING Principal/Menor 			%d/%d
 Stack mÃ¡ximo requerido Ã© 0x%v
 MeP: howto %d tem tipo %dA unir propriedades do programa
 CabeÃ§alho de mÃ³dulo
-NETWORKS         NORMALNome 				NenhumNÃºmero em:
+NETWORKS         NORMALNOTA: este comportamento Ã© obsoleto e serÃ¡ removido numa versÃ£o futura do linkerNome 				NenhumNÃºmero em:
 OPR_ADD (adicionar)
 OPR_AND (e lÃ³gico)
 OPR_ASH (mudanÃ§a aritmÃ©tica)
@@ -1247,21 +1355,19 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 Tamanho da partiÃ§Ã£o[%d] = 0x%.8lx (%ld)
 Sector da partiÃ§Ã£o[%d] = 0x%.8lx (%ld)
 Por favor, reporte este erro.
-conflito RL78 ABI: ficheiro G10 %pB nÃ£o pode ser ligado a ficheiro %s %pBconflito RL78 ABI: impossÃ­vel ligar ficheiro %s %pB com ficheiro %s %pBconflito de uniÃ£o RL78: impossÃ­vel ligar objectos 32-bit e 64-bitR_BFIN_FUNCDESC referencia sÃ­mbolo dinÃ¢mico com adenda nÃ£o-zeroR_BFIN_FUNCDESC_VALUE referencia sÃ­mbolo dinÃ¢mico com adenda nÃ£o-zeroR_FRV_TLSMOFFLO nÃ£o aplicado a uma instruÃ§Ã£o setlo ou setlos
+Bandeiras privadas = 0x%lx: conflito RL78 ABI: ficheiro G10 %pB nÃ£o pode ser ligado a ficheiro %s %pBconflito RL78 ABI: impossÃ­vel ligar ficheiro %s %pB com ficheiro %s %pBconflito de uniÃ£o RL78: impossÃ­vel ligar objectos 32-bit e 64-bitRL78 reloc divide por zeroRL78 reloc: transporte/falta na pilhaR_AMD64_IMAGEBASE com __ImageBase indefinidaR_BFIN_FUNCDESC referencia sÃ­mbolo dinÃ¢mico com adenda nÃ£o-zeroR_BFIN_FUNCDESC_VALUE referencia sÃ­mbolo dinÃ¢mico com adenda nÃ£o-zeroR_FRV_TLSMOFFLO nÃ£o aplicado a uma instruÃ§Ã£o setlo ou setlos
 A ler dataÃ§Ã£o de mod de ficheiro de arquivoRemovida propriedade %W para unir %pB (0x%v) e %pB (0x%v)
 Removida propriedade %W para unir %pB (0x%v) e %pB (nÃ£o encontrado)
 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 %pAsecÃ§Ãµes SFrame com codificaÃ§Ã£o de dados inesperada impedem a geraÃ§Ã£o de .sframeSHELL            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)
-STA_LW (stack longword) 0x%08x
-STA_MOD (stack mÃ³dulo)
+STA_LW (longword da pilha)STA_MOD (stack mÃ³dulo)
 STA_PQ (stack psect base + desvio)
-STA_QW (stack quadword) 0x%08x %08x
-STC_BOH_GBL (armazenar BOH condicional em endereÃ§o global)
+STA_QW (quadword da pilha)STC_BOH_GBL (armazenar BOH condicional em endereÃ§o global)
 STC_BOH_PS (armazenar BOH condicional em psect + desvio)
 STC_BSR_GBL (armazenar BSR condicional em endereÃ§o global)
 STC_BSR_PS (armazenar BSR condicional em psect + desvio)
@@ -1300,27 +1406,27 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 CabeÃ§alho de ficheiros fonte
 Pasta especialTamanho de stack para chamar nÃ³s raiz grÃ¡ficos.
 Passos:
-SÃ­mbolo "%s" tem tipos diferentes: %s em %pB, previamente REGISTER em %pBrelocalizaÃ§Ã£o TLS invÃ¡lida sem secÃ§Ãµes dinÃ¢micasEndereÃ§os da tabela
-O campo de tamanho dos dados de depuraÃ§Ã£o na pasta de dados Ã© demasiado grande para a secÃ§Ã£oO tamanho da pasta de depuraÃ§Ã£o nÃ£o Ã© mÃºltiplo do tamanho da entrada da pasta de depuraÃ§Ã£o
+SÃ­mbolo "%s" tem tipos diferentes: %s em %pB, previamente REGISTER em %pBrelocalizaÃ§Ã£o TLS invÃ¡lida sem secÃ§Ãµes dinÃ¢micasTransporte TOC durante a geraÃ§Ã£o fictÃ­cia; tente -mminimal-toc ao compilarEndereÃ§os da tabela
+A adenda nÃ£o Ã© permitida para R_RISCV_GOT_HI20O campo de tamanho dos dados de depuraÃ§Ã£o na pasta de dados Ã© demasiado grande para a secÃ§Ã£oO tamanho da pasta de depuraÃ§Ã£o nÃ£o Ã© mÃºltiplo do tamanho da entrada da pasta de depuraÃ§Ã£o
 Pasta de armazenamento de Thread [.tls]Selo Hora/Data 		%lx
 CabeÃ§alho do texto de tÃ­tulo
 Demasiados cÃ³digos unwind (%ld)
 Tipo                Tam.     Rva      Desvio
-USRSTACKDesconhecidoDesconhecido: %xActualizada propriedade %W (%v) para unir %pB (0x%v) e %pB (nÃ£o encontrada)
+USRSTACKImpossÃ­vel encontrar a entrada fictÃ­cia com alvo %sImpossÃ­vel ligar o ficheiro de entrada: %sImpossÃ­vel carregar a DLL.DesconhecidoDesconhecido: %xActualizada propriedade %W (%v) para unir %pB (0x%v) e %pB (nÃ£o encontrada)
 Actualizada propriedade %W (0x%v) para unir %pB (0x%v) e %pB (0x%v)
 VOLATILE         Tamanho virtual da secÃ§Ã£o .pdata (%ld) maior que o tamanho real (%ld)
 Aviso: tamanho de secÃ§Ã£o %s (%ld) nÃ£o Ã© mÃºltiplo de %d
 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:
+Aviso: devia usar "_" para contactar Profiles com outras extensÃµesA 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]\%pB: aviso: instruÃ§Ã£o %s BLX destina-se a funÃ§Ã£o %s "%s"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"xtheadvector" Ã© conflito com a extensÃ£o "v/zve32x""zclsd" Ã© conflito com a extensÃ£o "c+f"/"zcf""zfinx" Ã© conflito com a extensÃ£o "f/d/q/zfh/zfhmin"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
+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: %#lxbfd_mach_o_read_section_64: valor de alinhamento muito grande: %#lxbfd_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
+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 %pBc" ou "zcaimpossÃ­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 encontrar versÃµes predefinidas da extensÃ£o ISA "%s"impossÃ­vel ler DMT
 impossÃ­vel ler cabeÃ§alho DMT
 impossÃ­vel ler psect DMT
 impossÃ­vel ler DST
@@ -1336,71 +1442,73 @@ Use a opÃ§Ã£o gcc -mrestrict-it para ger
 impossÃ­vel ler GST
 impossÃ­vel ler registo GST
 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
+impossÃ­vel resolver R_LARCH_PCREL20_S2 contra sÃ­mbolo fraco indefinido com addend fora de [-2048, 2048)classe: %u, dtype: %u, tamanho: %u, ponteiro: 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 corruptoregisto de reloc corrompidovalor vms corruptoGST corrompido
+impossÃ­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]d" e "c" ou "zcdd" e "zfad" ou "zdinxrelocalizaÃ§Ã£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
+divisÃ£o por zerodst_define_location %u muito grandesem informaÃ§Ã£o de Ã­ndicerelocalizaÃ§Ã£o dinÃ¢mica em secÃ§Ã£o sÃ³ de leituraerro de contagem dynreloc para %pB, secÃ§Ã£o %pAfunÃ§Ã£o de entrada "%s" desapareceu do cÃ³digo de seguranÃ§aenumbeg, 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 ao adicionar o atributoerro em %pB(%pA); nÃ£o serÃ¡ criada nenhuma tabela .eh_frame_hdrerro em %pB(%pA); nenhum .sframe serÃ¡ criadoerro em %pB(%pA); tipo de secÃ§Ã£o SFrame inesperadoerro 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 tem um segmento LOAD com permissÃµes RWXerro: %pB tem um segmento TLS com permissÃ£o de execuÃ§Ã£oerro: %pB jÃ¡ estÃ¡ no formato final BE8erro: %pB estÃ¡ compilado para APCS-%d, enquanto o alvo %pB usa APCS-%derro: %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-byteerro: %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: <tamanho RISC-V corrompido usado: 0x%x>erro: %pB: <propriedade corrompida (0x%x) tamanho: 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: conflitos de endereÃ§amento relativo SB com o uso de R9erro: %pB: XLEN de entrada (%u) nÃ£o corresponde Ã  saÃ­da (%u)erro: %pB: impossÃ­vel misturar rf16 com conjunto de registo completo %pBerro: %pB: conflito de atributos de extensÃ£o ISA %s com %serro: %pB: perfis de arquitectura %c/%c em conflitoerro: %pB: conflito de atributos %serro: %pB: conflito de atributos %s: %s com %serro: %pB: uso de R9 em conflitoerro: %pB: cadeia ISA "%s" corrompida. Primeira letra esperada era "i" ou "e", obtida "%s".erro: %pB: cadeia ISA trocada para unir "%s" e "%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 criar sÃ­mbolo de secÃ§Ã£o de grupoerro: %pB: impossÃ­vel unir atributos base CPU %s com %serro: %pB: impossÃ­vel unir atributos de extensÃ£o ISA %serro: %pB: impossÃ­vel unir atributos de virtualizaÃ§Ã£o com %pBerro: %pB: arquitectura CPU desconhecidaerro: %pB: XLEN nÃ£o suportado (%u), poderÃ¡ estar a usar a emulaÃ§Ã£o erradaerro: %s: estÃ¡ a iniciar a geraÃ§Ã£o de uma pilha de execuÃ§Ã£o (porque tem uma secÃ§Ã£o executÃ¡vel .note.GNU-stack)erro: %s: estÃ¡ a iniciar a geraÃ§Ã£o de uma pilha executÃ¡vel porque nÃ£o tem uma secÃ§Ã£o .note.GNU-stackerro: tentativa de ligar %pB com um binÃ¡rio %pB de diferente arquitecturaerro: impossÃ­vel encontrar sÃ­mbolo: %serro: arquitecturas de CPU em conflito %s vs %s em %pBerro: a criar uma pilha de execuÃ§Ã£o por causa da opÃ§Ã£o -z execstackerro: tamanho final de valor uleb128 no desvio 0x%lx em %pA de %pB excede o espaÃ§o disponÃ­velerro: 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 Ã© suportadaerro: 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Ã¡velf" e "c" ou "zcff" ou "zfinxfalha ao alocar espaÃ§o para nova secÃ§Ã£o APUinfofalha ao computar nova secÃ§Ã£o APUinfofalha ao procurar reloc HI16 anteriorfalha ao instalar nova secÃ§Ã£o APUinfofalha 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 truncadotamanho final do valor de uleb128 no desvio 0x%lx em %pA de %pB excede o espaÃ§o disponÃ­velemitidos 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 definidohsÃ­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.
- 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,
-ou compile usando a opÃ§Ã£o gcc "-mno-base-addresses".OperaÃ§Ã£o invÃ¡lidaSecÃ§Ã£o de saÃ­da invÃ¡lida para .eh_frame_entry: %pAEndereÃ§o de relocalizaÃ§Ã£o invÃ¡lidoÃ�ndice de secÃ§Ã£o invÃ¡lido em ETIRuso invÃ¡lido de %s com contextosip2k relaxer: cabeÃ§alho da tabela de troca corrompido.ip2k relaxer: tabela de troca sem informaÃ§Ã£o completa de comparaÃ§Ã£o de relocalizaÃ§Ã£o.EstarÃ¡ esta versÃ£o do linker - %s - fora do prazo?Erro de ligaÃ§Ã£o BFD: salto (PC rel26) para secÃ§Ã£o (%s) nÃ£o suportadoSalto para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£oSalto para um endereÃ§o nÃ£o alinhado por wordetiqueta, nome: %.*s
+secÃ§Ãµes de entrada SFrame com abi diferente impedem a geraÃ§Ã£o de .sframesecÃ§Ãµes de entrada SFrame com diferentes versÃµes de formato impedem a geraÃ§Ã£o de .sframeerro 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, relate este errosÃ­mbolo internosÃ­mbolo interno interno: interno: INSN_CLASS_* inalcansÃ¡vel%s invÃ¡lidotipo de relocalizaÃ§Ã£o "%s" TARGET2 invÃ¡lidodestino bfd invÃ¡lidoconteÃºdo invÃ¡lido na secÃ§Ã£o %pAÃ­ndice dinÃ¢mico invÃ¡lidorelocalizaÃ§Ã£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, ou compile usando a opÃ§Ã£o gcc "-mno-base-addresses".operaÃ§Ã£o invÃ¡lidasecÃ§Ã£o de saÃ­da invÃ¡lida para .eh_frame_entry: %pAendereÃ§o de relocalizaÃ§Ã£o invÃ¡lidoÃ­ndice de secÃ§Ã£o invÃ¡lido em ETIRuso invÃ¡lido de %s com contextosip2k relaxer: cabeÃ§alho da tabela de troca corrompido.ip2k relaxer: tabela de troca sem informaÃ§Ã£o completa de comparaÃ§Ã£o de relocalizaÃ§Ã£o.estarÃ¡ esta versÃ£o do linker - %s - fora do prazo?salto (PC rel26) para secÃ§Ã£o (%s) nÃ£o suportadosalto para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£osalto para um endereÃ§o nÃ£o alinhado por wordetiqueta, nome: %.*s
 tam: %2u, tipo: %2u nÂº linha  (tam: %u)
-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
+imagem ligÃ¡velfictÃ­cios de linker em grupo %ufictÃ­cios de linker em grupos %uliteralrelocalizaÃ§Ã£o literal ocorre para um sÃ­mbolo externoÃ­ndice de sÃ­mbolo local demasiado grandetransporte em desvio "%s" em fictÃ­cio de ramo longom" ou "zmmulmach-o: hÃ¡ demasiadas secÃ§Ãµes (%u), o mÃ¡ximo Ã© 255,
+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
-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
+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 informaÃ§Ã£o de Ã­ndicesem erronÃ£o hÃ¡ mais ficheiros arquivadossem sÃ­mbolosmatriz nÃ£o contÃ­nua de %s
+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 definidomÃ³dulo objecto NÃƒO livre de erros!desvio "%s" da folha para funÃ§Ã£o de entrada nÃ£o Ã© mÃºltiplo do seu tamanhouma 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Ã§Ã£ofora do intervalotransporte apÃ³s relaxetransporte de relocalizaÃ§Ã£o fictÃ­cia de sobreposiÃ§Ã£oestrutura da extensÃ£o: sem descritores de ficheiro. Tente usar menos objectos/arquivos
+ponteiro
 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
+sÃ­mbolo protegidosÃ­mbolo protegido q" e "zfaq" ou "zqinxrecbeg: 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
-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
+recompile com "gcc -mno-relax", "as -mno-relax" ou "ld --no-relax"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 contra "%s" tem tipo GOT defeituoso 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: %scomando reservado %drtnbeg
 rtnend: tamanho 0x%08x
-SecÃ§Ã£o sem conteÃºdoseptyp, nome: %.*s
+rv%d nÃ£o suporta a extensÃ£o "q"rv%d nÃ£o suporta a extensÃ£o "smmpm"rv%d nÃ£o suporta a extensÃ£o "smnpm"rv%d nÃ£o suporta a extensÃ£o "ssnpm"rv%d nÃ£o suporta a extensÃ£o "sspm"rv%d nÃ£o suporta a extensÃ£o "supm"rv%d nÃ£o suporta a extensÃ£o "zcf"rv%de nÃ£o suporta a extensÃ£o "h"secÃ§Ã£o sem conteÃºdoseptyp, nome: %.*s
 set_abs_pc: 0x%08x
 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 muito grande; baixe o limite de tamanho de small-data (veja a opÃ§Ã£o -G)smctr" ou "ssctrsom_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:
-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:
+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Ã©viaprocedimento 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 sÃ³ Ã© suportada por alvos GNU e FreeBSDsÃ­mbolo precisa de secÃ§Ã£o de depuraÃ§Ã£o que nÃ£o existetipo de sÃ­mbolo STT_GNU_IFUNC sÃ³ Ã© suportada por alvos GNU e FreeBSDerro 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
+indefinido referÃª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
-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
+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
+id de alvo "0x%x" TI COFF 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 gpv" ou "zve64d" ou "zve64f" ou "zve32fv" ou "zve64x" ou "zve32xarquitectura 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 um segmento LOAD com permissÃµes RWXaviso: %pB tem um segmento TLS com permissÃ£o de execuÃ§Ã£oaviso: %pB tem um Ã­ndice de tabela de cadeias corrompidoaviso: %pB tem um cabeÃ§alho de programa com argumento invÃ¡lidoaviso: %pB tem uma secÃ§Ã£o estendida para alÃ©m do fim do ficheiroaviso: %pB tem um segmento estendido para alÃ©m do fim do ficheiroaviso: %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 desconhecidaaviso: %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(%s): a forÃ§ar bramch para sÃ­mbolo absoluto em modo Thumb (CPU sÃ³-Thumb) em %pBaviso: %pB: configuraÃ§Ã£o de plataforma em conflitoaviso: %pB: conflito na configuraÃ§Ã£o de plataforma %s com %saviso: %pB: tamanho GNU_PROPERTY_TYPE (%ld) corrupto: %#lxaviso: %pB: GNU_PROPERTY_TYPE (%ld) corrupto ,tipo (0x%x) datasz: 0x%xaviso: %pB: tamanho de selamento da memÃ³ria corrompido: 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 desconhecidoaviso: %pB: atributo de objecto EABI %d desconhecidoaviso: %pB: atributo de objecto MSABI %d desconhecidoaviso: %pB: atributo de objecto RISCV ABI %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
- 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
+aviso: secÃ§Ã£o %s tem tamanho zeroaviso: deve ser usado %s, em vez de %saviso: %s: secÃ§Ã£o .note.GNU-stack em falta implica uma pilha executÃ¡velaviso: %s: requer pilha executÃ¡vel (porque a secÃ§Ã£o .note.GNU-stack Ã© executÃ¡vel)aviso: (%s): a forÃ§ar branch para sÃ­mbolo absoluto em modo Thumb (CPU sÃ³-Thumb) em %pBaviso: --plt-localentry Ã© particularmente perigosa sem suporte ld.so para detectar violaÃ§Ãµes ABIaviso: --plt-localentry Ã© incompatÃ­vel com cÃ³digo power10 pc-relativeaviso: NOTA: discrepÃ¢ncias de alinhamento podem causar problemas reais. Aconselha-se uma investigaÃ§Ã£o.aviso: NOTA: discrepÃ¢ncias de tamanho podem causar problemas reais. Aconselha-se uma investigaÃ§Ã£o.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 de sÃ­mbolo normal "%s" em %pB Ã© menor que %u, usado pela definiÃ§Ã£o comum em %pBaviso: 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: a activar uma pilha de execuÃ§Ã£o por causa da opÃ§Ã£o -z execstackaviso: ficheiro %pB com bandeira arch %s em conflito com o destino %s, definir bandeira arch do destino como %saviso: bandeira arch do ficheiro %pB %s em conflito com o destino %s, a usar %saviso: encontrado um total de %d objectos dinamicamente ligados incompatÃ­vel com requisitos GCS.
+aviso: encontrado um total de %d entradas incompatÃ­vel com requisitos BTI.
+aviso: encontrado um total de %d entradas incompatÃ­vel com requisitos GCS.
+aviso: 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: versÃ£o 1.9.1 privilegiada nÃ£o pode ser ligada a outras versÃµes specaviso: 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: nome arch "%#x" nÃ£o reconhecidoaviso: eflag "%#lx" arch nÃ£o reconhecidaaviso: bandeiras nÃ£o definidas ou de arquitectura antiga. Use a mÃ¡quina predefinidaaviso: escrita do arquivo lenta: a reescrever a dataÃ§Ã£oaviso: secÃ§Ã£o de escrita "%pA" em enorme (negativo) desvio de ficheiroaviso: secÃ§Ã£o xdata corrupta
+extensÃ£o x ISA "%s" tem de ser definida com as versÃµessimnÃ£o tem permissÃ£o para definir %s num scriptzbb" ou "zbkbzbc" ou "zbkczcb" e "zbazcb" e "zbbzcb" e "zmmul" ou "zcb" e "m"zcmp" Ã© incompatÃ­vel com "d" e "c", ou com a extensÃ£o "zcd"zfh" e "zfazfh" e "zfa" ou "zvfh" e "zfazfh" ou "zhinxzfh" ou "zvfhzfhmin" e "d" ou "zhinxmin" e "zdinxzfhmin" e "q" ou "zhinxmin" e "zqinxzfhmin" ou "zhinxminzicfiss" e "zcmopzihintntl" e "c", ou "zihintntl" e "zcazknd" ou "zknezvbbzvbczvkbzvkgzvknedzvknha" ou "zvknhbzvksedzvkshextensÃµes zvl*b tÃªm de poder escrever ou a extensÃ£o "v" ou a "zve"PRIx64PRIu64PRId64PRIx32%pB: %# overflows header %s field%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: TLS relocation at 0x% over non-TLS symbol %s (0x%x)
+%pB: TLS local relocation at 0x% over imported symbol %s
+%pB: relocation (%d) at 0x% has wrong r_rsize (0x%x)
+%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: relocation (%d) at (0x%) has wrong r_rsize (0x%x)
+%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: stripping non-representable symbol '%s' (value 0x%)%pB: bad reloc address %# in section `%pA'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(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%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+%#): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)%pB(%pA+%#): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)%pB(%pA+%#): cannot handle %s for %s%pB: bad reloc offset (%# > %#) for section `%pA'ip2k 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(%pA+%#): relocation %s against misaligned symbol `%s' (%#) in %pB%pB: bad reloc offset (%# > %#) for section `%pA'%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: %pA+%: relocation addend % too large%pB: version count (%) does not match symbol count (%ld)%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: bad symbol definition: `Main' set to % rather than the start address %
+%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB(%pA+%#): %s relocation offset out of order%pB(%pA+%#): %s relocation offset out of range%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 csect%pB: Unable to find a stub csect in rangeof relocation at %# targeting'%s'TOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB: error: erratum 843419 immediate 0x% out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead%pB(%pA+%#): unresolvable %s relocation in section `%s'%# invaild imm%pB: R_LARCH_ALIGN with offset % not aligned to instruction boundary%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x% without any addend, but may be 0x% after adding the %%pcrel_lo addend%pB: Data Directory (%lx bytes at %) extends across section boundary at %%pB: %# excede o campo de cabeÃ§alho %s%pB: desvio de cadeia invÃ¡lido % >= %%pB: reloc TOC em %# para sÃ­mbolo "%s" sem entrada TOC%pB: TLS relocalizaÃ§Ã£o em 0x% sobre sÃ­mbolo nÃ£o-TLS %s (0x%x)
+%pB: TLS relocalizaÃ§Ã£o local em 0x% sobre sÃ­mbolo importado %s
+%pB: relocalizaÃ§Ã£o (%d) em 0x% tem r_rsize errado (0x%x)
+%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: relocalizaÃ§Ã£o (%d) em (0x%) tem r_rsize errado (0x%x)
+%pB: tipo de relocalizaÃ§Ã£o %d ilegal no endereÃ§o %#%pB: mau tamanho de tabela de cadeias %%pB: a remover sÃ­mbolo nÃ£o-representÃ¡vel "%s" (valor 0x%)%pB: mau endereÃ§o reloc %# na secÃ§Ã£o "%pA"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 bufferErro Dwarf: tipo de formato de conteÃºdo % desconhecidoErro 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(%pA+%#): relocalizaÃ§Ã£o %s insolÃºvel contra o sÃ­mbolo "%s"%pB: desvio de cadeia invÃ¡lido %u >= % para secÃ§Ã£o "%s"%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+%#): deslocamento %#x para insn %#x nÃ£o Ã© mÃºltiplo de 8 (gp %#x)%pB(%pA+%#): deslocamento %#x para insn %#x nÃ£o Ã© mÃºltiplo de 4 (gp %#x)%pB(%pA+%#): impossÃ­vel gerir %s para %s%pB: mau desvio de relocalizaÃ§Ã£o (%# > %#) para secÃ§Ã£o "%pA"ip2k 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
+ registo global alocado para o linker: ligado: %# != relaxado: %#%pB: directiva LOCAL: registo $% nÃ£o Ã© um registo local. O primeiro registo global Ã© $%%pB(%pA+%#): relocalizaÃ§Ã£o %s contra sÃ­mbolo mal alinhado "%s" (%#) em %pB%pB: mau desvio de relocalizaÃ§Ã£o (%# > %#) para secÃ§Ã£o "%pA"%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: %pA+%: addend % de relocalizaÃ§Ã£o muito grande%pB: nÂº de versÃ£o (%) nÃ£o corresponde ao nÂº de sÃ­mbolos (%ld)%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: mÃ¡ definiÃ§Ã£o de sÃ­mbolo: "Main" definido como %, em vez do endereÃ§o inicial %
+%pB: demasiados registos inicializados; tamanho de secÃ§Ã£o %%pB: endereÃ§o inicial invÃ¡lido para registos inicializados de tamanho %: %#%pB(%pA+%#): %s desvio de relocalizaÃ§Ã£o fora de ordem%pB(%pA+%#): %s desvio de relocalizaÃ§Ã£o fora do intervalo%pB: mau sÃ­mbolo XTY_ER "%s": classe %d scnum %d scnlen %%pB: sÃ­mbolo XMC_TC0 "%s" Ã© classe %d scnlen %%pB: reloc %s:% fora de csect%pB: impossÃ³vel encontrar csect fictÃ­cio na relocalizaÃ§Ã£o rangeof em %# com destino a "%s"Transporte TOC: %# > 0x10000; tente -mminimal-toc ao compilar%pB: erro: erratum 843419 imediato 0x% fora do intervalo para ADR (ficheiro de entrada muito grande) e foi usado --fix-cortex-a53-843419=adr. Execute antes o linker com --fix-cortex-a53-843419=full%pB(%pA+%#): relocalizaÃ§Ã£o %s insolÃºvel na secÃ§Ã£o "%s"%# imm invÃ¡lido%pB: R_LARCH_ALIGN com desvio % nÃ£o alinhado ao limite da instruÃ§Ã£o%pB(%pA+%#): % bytes requeridos para alinhamento com limite %-byte, mas sÃ³ hÃ¡ % presentestransporte de %%pcrel_lo com uma adenda, o valor de %%pcrel_hi Ã© 0x% sem adenda, mas pode ser 0x% apÃ³s adicionar a adenda %%pcrel_lo%pB: tamanho da pasta de dados (%lx em %) estende-se para lÃ¡ da fronteira em %)
\ 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.20200303/bfd/po/pt.po ./bfd/po/pt.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/pt.po	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/pt.po	2026-03-05 02:07:20.000000000 +0000
@@ -1,685 +1,766 @@
-# Portuguese translations for GNU binutils package.
+# Portuguese (Portugal) 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>, 2025.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd-2.31.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"
+"Project-Id-Version: bfd-2.44.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2025-07-13 08:44+0100\n"
+"PO-Revision-Date: 2025-07-15 06:15+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"
+"Plural-Forms: nplurals=2; plural=(n != 1);\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"
+"X-Generator: Poedit 3.6\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:444 pdp11.c:481
+#, c-format
+msgid "%pB: %#<PRIx64> overflows header %s field"
+msgstr "%pB: %#<PRIx64> excede o campo de cabeÃ§alho %s"
+
+#: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495
 #, 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:1562 pdp11.c:1467
 #, 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:1565 vms-alpha.c:8473
 msgid "*unknown*"
 msgstr "*desconhecido*"
 
-#: aoutx.h:1721
+#: aoutx.h:1701 pdp11.c:1563
 #, 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:1945
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: tipo de relocalizaÃ§Ã£o AOUT nÃ£o suportado %d"
+
+#: aoutx.h:2389 aoutx.h:2407 pdp11.c:2040
 #, 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:4040 pdp11.c:3402
 #, 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
-#: 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
+#: aoutx.h:4360 coff-alpha.c:604 coff-mips.c:356 coff-rs6000.c:3037
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531
+#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4692
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6246 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2211 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3294
+#: elf32-nds32.c:3315 elf32-nds32.c:5084 elf32-or1k.c:1085 elf32-pj.c:326
+#: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291
+#: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347
+#: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163
+#: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537
+#: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924
+#: elf32-v850.c:4254 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510
+#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4058
+#: elf64-alpha.c:4206 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3428 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:331 elf64-s390.c:381 elf64-x86-64.c:305 elf64-x86-64.c:2558
+#: elfn32-mips.c:3799 elfxx-ia64.c:324 elfxx-loongarch.c:1897
+#: elfxx-riscv.c:1068 elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:907
+#: elfxx-tilegx.c:947 elfnn-aarch64.c:2215 elfnn-aarch64.c:2316
+#: elfnn-ia64.c:214 elfnn-ia64.c:3823 elfnn-kvx.c:259
 #, 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:5380 pdp11.c:3818
 #, 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:748
+msgid "%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr "%P: %pB(%s): erro ao abrir membro do arquivo fino: %E\n"
+
+#: archive.c:2282
 msgid "warning: writing archive was slow: rewriting timestamp"
-msgstr "Aviso: escrita do arquivo lenta: a reescrever a dataÃ§Ã£o"
+msgstr "aviso: escrita do arquivo lenta: a reescrever a dataÃ§Ã£o"
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2351 archive.c:2408 elflink.c:4956 linker.c:1470
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr "%pB: extensÃ£o precisou de gerir objecto lto"
 
-#: archive.c:2559
+#: archive.c:2640
 msgid "Reading archive file mod timestamp"
 msgstr "A ler dataÃ§Ã£o de mod de ficheiro de arquivo"
 
-#: archive.c:2583
+#: archive.c:2671
 msgid "Writing updated armap timestamp"
 msgstr "A escrever dataÃ§Ã£o armap actualizado"
 
-#: bfd.c:449
+#: bfd.c:793
 msgid "no error"
-msgstr "Sem erro"
+msgstr "sem erro"
 
-#: bfd.c:450
+#: bfd.c:794
 msgid "system call error"
-msgstr "Erro de chamada do sistema"
+msgstr "erro de chamada do sistema"
 
-#: bfd.c:451
+#: bfd.c:795
 msgid "invalid bfd target"
-msgstr "Alvo bfd invÃ¡lido"
+msgstr "destino bfd invÃ¡lido"
 
-#: bfd.c:452
+#: bfd.c:796
 msgid "file in wrong format"
-msgstr "Ficheiro em formato errado"
+msgstr "ficheiro em formato errado"
 
-#: bfd.c:453
+#: bfd.c:797
 msgid "archive object file in wrong format"
-msgstr "Ficheiro objecto de arquivo em formato errado"
+msgstr "ficheiro objecto de arquivo em formato errado"
 
-#: bfd.c:454
+#: bfd.c:798
 msgid "invalid operation"
-msgstr "OperaÃ§Ã£o invÃ¡lida"
+msgstr "operaÃ§Ã£o invÃ¡lida"
 
-#: bfd.c:455
+#: bfd.c:799
 msgid "memory exhausted"
-msgstr "MemÃ³ria esgotada"
+msgstr "memÃ³ria esgotada"
 
-#: bfd.c:456
+#: bfd.c:800
 msgid "no symbols"
-msgstr "Sem sÃ­mbolos"
+msgstr "sem sÃ­mbolos"
 
-#: bfd.c:457
+#: bfd.c:801
 msgid "archive has no index; run ranlib to add one"
-msgstr "Arquivo sem Ã­ndice; execute ranlib para adicionar um"
+msgstr "arquivo sem Ã­ndice; execute ranlib para adicionar um"
 
-#: bfd.c:458
+#: bfd.c:802
 msgid "no more archived files"
-msgstr "Sem mais ficheiros de arquivo"
+msgstr "nÃ£o hÃ¡ mais ficheiros arquivados"
 
-#: bfd.c:459
+#: bfd.c:803
 msgid "malformed archive"
-msgstr "Arquivo mal formado"
+msgstr "arquivo mal formado"
 
-#: bfd.c:460
+#: bfd.c:804
 msgid "DSO missing from command line"
 msgstr "DSO em falta da linha de comandos"
 
-#: bfd.c:461
+#: bfd.c:805
 msgid "file format not recognized"
-msgstr "Formato de ficheiro nÃ£o reconhecido"
+msgstr "formato de ficheiro nÃ£o reconhecido"
 
-#: bfd.c:462
+#: bfd.c:806
 msgid "file format is ambiguous"
-msgstr "Formato de ficheiro ambÃ­guo"
+msgstr "formato de ficheiro ambÃ­guo"
 
-#: bfd.c:463
+#: bfd.c:807
 msgid "section has no contents"
-msgstr "SecÃ§Ã£o sem conteÃºdo"
+msgstr "secÃ§Ã£o sem conteÃºdo"
 
-#: bfd.c:464
+#: bfd.c:808
 msgid "nonrepresentable section on output"
-msgstr "SecÃ§Ã£o nÃ£o representÃ¡vel na saÃ­da"
+msgstr "secÃ§Ã£o nÃ£o representÃ¡vel na saÃ­da"
 
-#: bfd.c:465
+#: bfd.c:809
 msgid "symbol needs debug section which does not exist"
-msgstr "SÃ­mbolo precisa de secÃ§Ã£o de depuraÃ§Ã£o que nÃ£o existe"
+msgstr "sÃ­mbolo precisa de secÃ§Ã£o de depuraÃ§Ã£o que nÃ£o existe"
 
-#: bfd.c:466
+#: bfd.c:810
 msgid "bad value"
-msgstr "Mau valor"
+msgstr "mau valor"
 
-#: bfd.c:467
+#: bfd.c:811
 msgid "file truncated"
-msgstr "Ficheiro truncado"
+msgstr "ficheiro truncado"
 
-#: bfd.c:468
+#: bfd.c:812
 msgid "file too big"
-msgstr "Ficheiro muito grande"
+msgstr "ficheiro muito grande"
 
-#: bfd.c:469
+#: bfd.c:813
+msgid "sorry, cannot handle this file"
+msgstr "desculpe, impossÃ­vel gerir este ficheiro"
+
+#: bfd.c:814
 #, c-format
 msgid "error reading %s: %s"
-msgstr "Erro  ao ler %s: %s"
+msgstr "erro ao ler %s: %s"
 
-#: bfd.c:470
+#: bfd.c:815
 msgid "#<invalid error code>"
 msgstr "#<CÃ³digo de erro invÃ¡lido>"
 
-#: bfd.c:1429
+#: bfd.c:2266
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "BFD falha de asserÃ§Ã£o %s %s:%d"
 
-#: bfd.c:1442
+#: bfd.c:2279
 #, 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"
+msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr "%s: erro interno BFD %s, a abortar em %s:%d em %s\n"
 
-#: bfd.c:1447
+#: bfd.c:2283
 #, c-format
-msgid "BFD %s internal error, aborting at %s:%d\n"
-msgstr "BFD erro interno %s, a abortar em %s:%d\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d\n"
+msgstr "%s: erro interno BFD %s, a abortar em %s:%d\n"
 
-#: bfd.c:1449
+#: bfd.c:2286
+#, c-format
 msgid "Please report this bug.\n"
 msgstr "Por favor, reporte este erro.\n"
 
-#: bfdwin.c:206
-#, c-format
-msgid "not mapping: data=%lx mapped=%d\n"
-msgstr "nÃ£o mapeado: dados=%lx mapeado=%d\n"
-
-#: bfdwin.c:209
-#, c-format
-msgid "not mapping: env var not set\n"
-msgstr "nÃ£o mapeado: env var nÃ£o definida\n"
-
-#: binary.c:276
+#: binary.c:277
 #, c-format
 msgid "warning: writing section `%pA' at huge (ie negative) file offset"
 msgstr "aviso: secÃ§Ã£o de escrita \"%pA\" em enorme (negativo) desvio de ficheiro"
 
-#: cache.c:271
+#: cache.c:290
 #, c-format
-msgid "reopening %pB: %s\n"
-msgstr "a reabrir %pB: %s\n"
+msgid "reopening %pB: %s"
+msgstr "a reabrir %pB: %s"
 
 #: coff-alpha.c:450
 #, c-format
 msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
-msgstr ""
-"%pB: impossÃ­vel gerir binÃ¡rios Alpha comprimidos.\n"
-"   Use bandeiras do compilador ou objZ para gerar binÃ¡rios descomprimidos."
+msgstr "%pB: impossÃ­vel gerir binÃ¡rios Alpha comprimidos; 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:914 coff-alpha.c:941 coff-alpha.c:2009 coff-mips.c:948
 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:1177 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13195
+#: elfxx-mips.c:13594 reloc.c:8602 reloc16.c:314
+#, 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"
+
+#: coff-alpha.c:1183 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13604
+#: reloc.c:8612
+#, 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"
+
+#: coff-alpha.c:1189 elfxx-mips.c:13613 reloc.c:8621
+#, 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"
+
+#: coff-alpha.c:1515
 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:1992
 #, c-format
-msgid "%pB: %s unsupported"
-msgstr "%pB: %s: nÃ£o suportado"
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr "%X%P: %pB(%pA): relocalizaÃ§Ã£o fora do intervalo\n"
+
+#: coff-alpha.c:2004
+#, c-format
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr "%X%P: %pB(%pA): relocalizaÃ§Ã£o nÃ£o suportada\n"
+
+#: coff-go32.c:167 coffswap.h:812
+#, 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:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
-#: elf64-mips.c:3451 elfn32-mips.c:3276
+#: coff-mips.c:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
 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:484 coff64-rs6000.c:377
+#, c-format
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr "%pB: swap_aux_in nÃ£o suportado para a classe de armazenamento %#x"
+
+#: coff-rs6000.c:571 coff64-rs6000.c:497
+#, c-format
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr "%pB: swap_aux_out nÃ£o suportado para a classe de armazenamento %#x"
+
+#: coff-rs6000.c:3127
 #, 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:3251 coff64-rs6000.c:848
+#, c-format
+msgid "Unable to find the stub entry targeting %s"
+msgstr "ImpossÃ­vel encontrar a entrada fictÃ­cia com alvo %s"
+
+#: coff-rs6000.c:3366
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr "%pB: TLS relocalizaÃ§Ã£o em 0x%<PRIx64> sobre sÃ­mbolo nÃ£o-TLS %s (0x%x)\n"
+
+#: coff-rs6000.c:3379
+#, c-format
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr "%pB: TLS relocalizaÃ§Ã£o local em 0x%<PRIx64> sobre sÃ­mbolo importado %s\n"
+
+#: coff-rs6000.c:3785
+#, c-format
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr "%pB: relocalizaÃ§Ã£o (%d) em 0x%<PRIx64> tem r_rsize errado (0x%x)\n"
+
+#: coff-rs6000.c:4047 coff64-rs6000.c:2021
 #, 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:781 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:792
 #, 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:810 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:835 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:852 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:973 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:983 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:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
 #, 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:1443
 #, 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:2773 cofflink.c:2986
 #, 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-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5305
 #, 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
+#: coff-x86_64.c:147
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr "R_AMD64_IMAGEBASE com __ImageBase indefinida"
+
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
 #, c-format
-msgid "unsupported relocation type %#x"
-msgstr "tipo de relocalizaÃ§Ã£o %#x nÃ£o suportado"
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr "%pB: C_STAT nÃ£o Ã© suportado por XCOFF64"
 
-#: coff-tic80.c:672 cofflink.c:3127
+#: coff64-rs6000.c:477
 #, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr "%pB: mau endereÃ§o reloc %#<PRIx64> na secÃ§Ã£o \"%pA\""
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr "%pB: auxtype %#x errado para a classe de armazenamento %#x"
+
+#: coff64-rs6000.c:1598
+#, c-format
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr "%pB: relocalizaÃ§Ã£o (%d) em (0x%<PRIx64>) tem r_rsize errado (0x%x)\n"
 
-#: coffcode.h:954
+#: coffcode.h:951
 #, 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:976
+#, c-format
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "%pB: aviso: sÃ­mbolo para secÃ§Ã£o \"%s\" nÃ£o encontrado"
+
+#: coffcode.h:1148
 #, 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:1159
 #, 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
-#, c-format
-msgid "%pB: warning: no symbol for section '%s' found"
-msgstr "%pB: aviso: sÃ­mbolo para secÃ§Ã£o \"%s\" nÃ£o encontrado"
-
 #. 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:1267
 #, 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:1337
 #, 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:1945
+#, c-format
+msgid "%pB: overflow reloc count too small"
+msgstr "%pB: a contagem de relocalizaÃ§Ãµes de transporte Ã© muito pequena"
+
+#: coffcode.h:1954 coffcode.h:2019
 #, 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:2402
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
-msgstr "TI COFF id de alvo \"0x%x\" nÃ£o reconhecida"
+msgstr "id de alvo \"0x%x\" TI COFF nÃ£o reconhecida"
 
-#: coffcode.h:2599
+#: coffcode.h:2681
 #, 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
-#, 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:3153
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr "%pB: demasiadas secÃ§Ãµes (%d)"
 
-#: coffcode.h:3489
+#: coffcode.h:3681
 #, 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:3782
 #, 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
-#, 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:4523
 #, 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:4569 coffcode.h:4583
 #, 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:4597
 #, 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:4610
 #, 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:5034
 #, 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:5174
 #, 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:5345
 #, 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
-#, 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
-#, 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
+#: coffgen.c:257 elf.c:1060
 #, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr "%pB: total de sÃ­mbolos corrupto: %#<PRIx64>"
+msgid "%pB: unable to compress section %s"
+msgstr "%pB: impossÃ­vel comprimir secÃ§Ã£o %s"
 
-#. PR 21013: Provide an error message when the alloc fails.
-#: coffgen.c:1666
+#: coffgen.c:267 elf.c:1070
 #, 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>"
+msgid "%pB: unable to decompress section %s"
+msgstr "%pB: impossÃ­vel descomprimir secÃ§Ã£o %s"
 
-#: coffgen.c:1735
+#: coffgen.c:1795
 #, 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:2179 coffgen.c:2318 cofflink.c:2051 ecoff.c:1444 elf.c:2313
+#: elf.c:2345 pef.c:214 syms.c:789 xcofflink.c:384 xcofflink.c:5577
 msgid "<corrupt>"
 msgstr "<corrupto>"
 
-#: coffgen.c:2114
+#: coffgen.c:2208
 #, c-format
 msgid "<corrupt info> %s"
 msgstr "<informaÃ§Ã£o corrupta> %s"
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
-msgid "%F%P: already_linked_table: %E\n"
-msgstr "%F%P: already_linked_table: %E\n"
+#: coffgen.c:2818 elflink.c:15490 linker.c:3061
+msgid "%P: already_linked_table: %E\n"
+msgstr "%P: already_linked_table: %E\n"
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3175 elflink.c:14430
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
-msgstr "A remover secÃ§Ã£o \"%pA\" nÃ£o usada no ficheiro \"%pB\""
+msgstr "a remover secÃ§Ã£o \"%pA\" nÃ£o usada no ficheiro \"%pB\""
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3252 elflink.c:14661
 msgid "warning: gc-sections option ignored"
-msgstr "Aviso: opÃ§Ã£o gc-sections ignorada"
+msgstr "aviso: opÃ§Ã£o gc-sections ignorada"
 
-#: cofflink.c:352
+#: cofflink.c:399
 #, 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"
+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:504 elf64-ia64-vms.c:5200 elflink.c:5587
 #, 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"
+msgstr "aviso: tipo de sÃ­mbolo \"%s\" alterado de %d para %d em %pB"
 
-#: cofflink.c:2373
+#: cofflink.c:2379
 #, 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:2442 elflink.c:11880
 #, 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:2637
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr "%pB: a remover sÃ­mbolo nÃ£o-representÃ¡vel \"%s\" (valor 0x%<PRIx64>)"
+
+#: cofflink.c:2755
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr "%pB: %pA: transporte de reloc: %#x > 0xffff"
 
-#: cofflink.c:2742
+#: cofflink.c:2763
 #, 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:3157
 #, 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:826
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%pB: %s: transporte de reloc: 0x%lx > 0xffff"
 
-#: compress.c:260
+#: compress.c:732 compress.c:749 libbfd.c:1322
 #, 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
-#, 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:438
 #, 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:702
 #, 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:710
+#, c-format
+msgid "DWARF error: section %s has no contents"
+msgstr "Erro Dwarf: secÃ§Ã£o %s sem conteÃºdo"
+
+#. PR 26946
+#: dwarf2.c:719
+#, c-format
+msgid "DWARF error: section %s is too big"
+msgstr "Erro Dwarf: secÃ§Ã£o %s demasiado grande"
+
+#: dwarf2.c:754
 #, 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:1501
 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:1693
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
-msgstr "Erro Dwarf: valor FORM invÃ¡lido ou nÃ£o gerido: %#x."
+msgstr "Erro Dwarf: valor FORM invÃ¡lido ou nÃ£o gerido: %#x"
 
-#: dwarf2.c:1581
+#: dwarf2.c:2050
 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:2614
 msgid "DWARF error: zero format count"
-msgstr "Erro Dwarf: total de formato zero."
+msgstr "Erro Dwarf: total de formato zero"
 
-#: dwarf2.c:1936
+#: dwarf2.c:2624
 #, 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."
+msgstr "Erro Dwarf: total de dados (%<PRIx64>) maior que o tamanho do buffer"
 
-#: dwarf2.c:1977
+#: dwarf2.c:2663
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
-msgstr "Erro Dwarf: tipo de formato de conteÃºdo %<PRIu64> desconhecido."
+msgstr "Erro Dwarf: tipo de formato de conteÃºdo %<PRIu64> desconhecido"
 
-#: dwarf2.c:2057
+#: dwarf2.c:2736
 #, 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:2763
 #, 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:2776
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
-msgstr "Erro Dwarf: versÃ£o %d .debug_line version nÃ£o gerida."
+msgstr "Erro Dwarf: versÃ£o %d .debug_line nÃ£o gerida"
 
-#: dwarf2.c:2110
+#: dwarf2.c:2785
 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:2801
 #, 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:2823
 msgid "DWARF error: invalid maximum operations per instruction"
-msgstr "Erro Dwarf: mÃ¡ximo de operaÃ§Ãµes por instruÃ§Ã£o invÃ¡lido."
+msgstr "Erro Dwarf: mÃ¡ximo de operaÃ§Ãµes por instruÃ§Ã£o invÃ¡lido"
 
-#: dwarf2.c:2174
+#: dwarf2.c:2835
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr "Erro Dwarf: sem espaÃ§o ao ler opcodes"
 
-#: dwarf2.c:2347
+#: dwarf2.c:3012
 msgid "DWARF error: mangled line number section"
-msgstr "Erro Dwarf: secÃ§Ã£o de nÃºmero de linha modificada."
+msgstr "Erro Dwarf: secÃ§Ã£o de nÃºmero de linha modificada"
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:3483
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "Erro Dwarf: detectada recursividade em instÃ¢ncia abstracta"
+
+#: dwarf2.c:3517 dwarf2.c:3607
 msgid "DWARF error: invalid abstract instance DIE ref"
-msgstr "Erro Dwarf: instÃ¢ncia DIE ref abstracta invÃ¡lida."
+msgstr "Erro Dwarf: instÃ¢ncia DIE ref abstracta invÃ¡lida"
 
-#: dwarf2.c:2889
+#: dwarf2.c:3533
 #, c-format
 msgid "DWARF error: unable to read alt ref %<PRIu64>"
-msgstr "Erro Dwarf:  impossÃ­vel ler referÃªncia alternativa %<PRIu64>."
+msgstr "Erro Dwarf: impossÃ­vel ler referÃªncia alternativa %<PRIu64>"
+
+#: dwarf2.c:3585
+#, 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:2930 dwarf2.c:3103 dwarf2.c:3457
+#: dwarf2.c:3622 dwarf2.c:3938 dwarf2.c:4511
 #, c-format
 msgid "DWARF error: could not find abbrev number %u"
-msgstr "Erro Dwarf: impossÃ­vel encontrar nÃºmero abbrev %u."
+msgstr "Erro Dwarf: impossÃ­vel encontrar nÃºmero abrev. %u"
 
-#: dwarf2.c:2947
-msgid "DWARF error: abstract instance recursion detected"
-msgstr "Erro Dwarf: detectada recursividade em instÃ¢ncia abstracta."
+#: dwarf2.c:4211
+#, c-format
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr "Erro Dwarf: impossÃ­vel encontrar especificaÃ§Ã£o de variÃ¡vel no desvio 0x%lx"
 
-#: dwarf2.c:3376
+#: dwarf2.c:4357 dwarf2.c:4611
+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"
+
+#: dwarf2.c:4428
 #, 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."
+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:4475
 #, 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
-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:1005
 #, 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:1301
 #, c-format
 msgid "unknown basic type %d"
-msgstr "Tipo bÃ¡sico %d desconhecido"
+msgstr "tipo bÃ¡sico %d desconhecido"
 
-#: ecoff.c:1525
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -688,7 +769,7 @@ msgstr ""
 "\n"
 "      SÃ­mbolo End+1: %ld"
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1566 ecoff.c:1569
 #, c-format
 msgid ""
 "\n"
@@ -697,7 +778,7 @@ msgstr ""
 "\n"
 "      Primeiro sÃ­mbolo: %ld"
 
-#: ecoff.c:1548
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -706,7 +787,7 @@ msgstr ""
 "\n"
 "      SÃ­mbolo End+1: %-7ld   Tipo:  %s"
 
-#: ecoff.c:1555
+#: ecoff.c:1592
 #, c-format
 msgid ""
 "\n"
@@ -715,7 +796,7 @@ msgstr ""
 "\n"
 "      SÃ­mbolo local: %ld"
 
-#: ecoff.c:1563
+#: ecoff.c:1600
 #, c-format
 msgid ""
 "\n"
@@ -724,7 +805,7 @@ msgstr ""
 "\n"
 "      struct; sÃ­mbolo End+1: %ld"
 
-#: ecoff.c:1568
+#: ecoff.c:1605
 #, c-format
 msgid ""
 "\n"
@@ -733,7 +814,7 @@ msgstr ""
 "\n"
 "      union; sÃ­mbolo End+1: %ld"
 
-#: ecoff.c:1573
+#: ecoff.c:1610
 #, c-format
 msgid ""
 "\n"
@@ -742,7 +823,7 @@ msgstr ""
 "\n"
 "      enum; sÃ­mbolo End+1: %ld"
 
-#: ecoff.c:1579
+#: ecoff.c:1618
 #, c-format
 msgid ""
 "\n"
@@ -751,328 +832,358 @@ msgstr ""
 "\n"
 "      Tipo: %s"
 
-#: elf-attrs.c:446
+#: elf-attrs.c:424 elf-attrs.c:454 elf-attrs.c:596
+msgid "error adding attribute"
+msgstr "erro ao adicionar o atributo"
+
+#: elf-attrs.c:513
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr "%pB: erro: tamanho da secÃ§Ã£o de atributo muito pequeno: %ld"
+
+#: elf-attrs.c:623
 #, 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:642
 #, c-format
-msgid "%pB: error: attribute section length too small: %<PRId64>"
-msgstr "%pB: erro: tamanho da secÃ§Ã£o de atributo muito pequeno: %<PRId64>"
+msgid "%pB: error: unknown attributes version '%c'(%d) - expecting 'A'\n"
+msgstr "%pB: erro: versÃ£o de atributos \"%c\"(%d) desconhecida - esperada \"A\"\n"
 
-#: elf-attrs.c:615
+#: elf-attrs.c:688
 #, 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:698
 #, 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\""
 
-#: elf-eh-frame.c:944
+#: elf-eh-frame.c:952
 #, c-format
 msgid "discarding zero address range FDE in %pB(%pA).\n"
 msgstr "a descartar intervalo FDE de endereÃ§o zero em %pB(%pA).\n"
 
-#: elf-eh-frame.c:1049
+#: elf-eh-frame.c:1057
 #, c-format
 msgid "error in %pB(%pA); no .eh_frame_hdr table will be created"
-msgstr "erro em %pB(%pA); nÃ£o serÃ¡ criada nenhuma tabela .eh_frame_hdr."
+msgstr "erro em %pB(%pA); nÃ£o serÃ¡ criada nenhuma tabela .eh_frame_hdr"
 
-#: elf-eh-frame.c:1539
+#: elf-eh-frame.c:1548
 #, c-format
 msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created"
-msgstr "codificaÃ§Ã£o FDE em %pB(%pA) impede a criaÃ§Ã£o de tabela .eh_frame_hdr."
+msgstr "codificaÃ§Ã£o FDE em %pB(%pA) impede a criaÃ§Ã£o de tabela .eh_frame_hdr"
 
-#: elf-eh-frame.c:1546
+#: elf-eh-frame.c:1555
 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:1878
 #, 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:1892
 #, 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:1900
 #, 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:2153
 msgid "DW_EH_PE_datarel unspecified for this architecture"
-msgstr "DW_EH_PE_datarel nÃ£o especificado para esta arquitectura."
+msgstr "DW_EH_PE_datarel nÃ£o especificado para esta arquitectura"
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2323
 #, c-format
 msgid "invalid output section for .eh_frame_entry: %pA"
-msgstr "SecÃ§Ã£o de saÃ­da invÃ¡lida para .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:2346
 #, c-format
 msgid "invalid contents in %pA section"
-msgstr "ConteÃºdo invÃ¡lido na secÃ§Ã£o %pA"
+msgstr "conteÃºdo invÃ¡lido na secÃ§Ã£o %pA"
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2500
 msgid ".eh_frame_hdr entry overflow"
-msgstr "transporte na entrada .eh_frame_hdr."
+msgstr "transporte na entrada .eh_frame_hdr"
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2502
 msgid ".eh_frame_hdr refers to overlapping FDEs"
-msgstr ".eh_frame_hdr refere FDEs sobrepostos."
+msgstr ".eh_frame_hdr refere FDEs sobrepostos"
 
-#: elf-ifunc.c:149
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1713
 #, 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"
+msgid "%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: sÃ­mbolo STT_GNU_IFUNC dinÃ¢mico \"%s\" com igualdade de ponteiro em \"%pB\" nÃ£o pode se usada ao fazer um executÃ¡vel; recompile com -fPIE e religue 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:2146 elf32-bfin.c:3132 elf32-cr16.c:1429
+#: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624
+#: elf32-m32r.c:2839 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1983
+#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6099
+#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5084
+#: elf32-tilepro.c:3371 elf32-v850.c:2297 elf32-visium.c:680
+#: elf32-xstormy16.c:931 elf64-bpf.c:339 elf64-mmix.c:1537 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:2150 elf32-bfin.c:3136 elf32-cr16.c:1433
+#: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2843 elf32-m68hc1x.c:1275
+#: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681 elf32-moxie.c:292
+#: elf32-msp430.c:1510 elf32-nds32.c:6103 elf32-or1k.c:1899 elf32-score.c:2728
+#: elf32-score7.c:2539 elf32-spu.c:5088 elf32-tilepro.c:3375 elf32-v850.c:2301
+#: elf32-visium.c:684 elf32-xstormy16.c:935 elf64-mmix.c:1541
+#: elfxx-mips.c:10727 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:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2847 elf32-m68hc1x.c:1279
+#: elf32-microblaze.c:1685 elf32-nds32.c:6107 elf32-score.c:2732
+#: elf32-score7.c:2543 elf32-spu.c:5092
 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:2167 elf32-bfin.c:3144 elf32-cr16.c:1441
+#: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636
+#: elf32-m32r.c:2851 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1995
+#: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518 elf32-mt.c:410
+#: elf32-nds32.c:6111 elf32-or1k.c:1907 elf32-score.c:2741 elf32-score7.c:2547
+#: elf32-spu.c:5096 elf32-tilepro.c:3383 elf32-v850.c:2321 elf32-visium.c:692
+#: elf32-xstormy16.c:943 elf64-bpf.c:352 elf64-mmix.c:1549 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "erro interno: erro desconhecido"
 
-#: elf-m10300.c:1029
+#: elf-m10300.c:1030
 #, c-format
 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:1197
 #, 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:2093 elf32-arm.c:13476 elf32-i386.c:3545 elf32-m32r.c:2333
+#: elf32-m68k.c:3931 elf32-s390.c:3074 elf32-sh.c:3674 elf32-tilepro.c:3274
+#: elf32-xtensa.c:3022 elf64-s390.c:3391 elf64-x86-64.c:5025 elfxx-sparc.c:2924
+#: elfxx-sparc.c:3820 elfxx-tilegx.c:3667 elfnn-aarch64.c:5743
+#: elfnn-aarch64.c:7361 elfnn-kvx.c:2773
 #, 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:2155
 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:2159
 #, 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:2162
 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
-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"
+#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5627 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2691 reloc.c:8376 reloc16.c:155 elfnn-ia64.c:365
+msgid "%P: --relax and -r may not be used together\n"
+msgstr "%P: --relax e -r nÃ£o podem ser usadas em cojnunto\n"
 
-#: elf-properties.c:65
+#: elf-properties.c:121
 #, c-format
 msgid "%pB: out of memory in _bfd_elf_get_property"
 msgstr "%pB: sem memÃ³ria em _bfd_elf_get_property"
 
-#: elf-properties.c:91
+#: elf-properties.c:150
 #, c-format
 msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
 msgstr "aviso: %pB: tamanho GNU_PROPERTY_TYPE (%ld) corrupto: %#lx"
 
-#: elf-properties.c:112
+#: elf-properties.c:171
 #, c-format
 msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
 msgstr "aviso: %pB: GNU_PROPERTY_TYPE (%ld) corrupto ,tipo (0x%x) datasz: 0x%x"
 
-#: elf-properties.c:151
+#: elf-properties.c:210
 #, c-format
 msgid "warning: %pB: corrupt stack size: 0x%x"
 msgstr "aviso: %pB:tamanho de stack corrupto: 0x%x"
 
-#: elf-properties.c:169
+#: elf-properties.c:228
 #, c-format
 msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
 msgstr "aviso: %pB: tamanho corrupto de nÃ£o copiar se protegido: 0x%x"
 
-#: elf-properties.c:186
+#: elf-properties.c:243
+#, c-format
+msgid "warning: %pB: corrupt memory sealing size: 0x%x"
+msgstr "aviso: %pB: tamanho de selamento da memÃ³ria corrompido: 0x%x"
+
+#: elf-properties.c:262
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr "erro: %pB: <propriedade corrompida (0x%x) tamanho: 0x%x>"
+
+#: elf-properties.c:287
 #, c-format
 msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
 msgstr "aviso: %pB: GNU_PROPERTY_TYPE (%ld) nÃ£o suportada, tipo: 0x%x"
 
-#: elf-properties.c:301
+#: elf-properties.c:467
 msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n"
 msgstr "Removida propriedade %W para unir %pB (0x%v) e %pB (0x%v)\n"
 
-#: elf-properties.c:307
+#: elf-properties.c:473
 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:482 elf-properties.c:560
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr "Removida propriedade %W para unir %pB e %pB\n"
 
-#: elf-properties.c:320
+#: elf-properties.c:486
 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:503
 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:512
 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:554
 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"
 
+#: elf-properties.c:693 elfxx-aarch64.c:765
+msgid "%P: failed to create %s\n"
+msgstr "%P: falha ao criar %s\n"
+
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:798 elf-properties.c:800
 msgid "\n"
 msgstr "\n"
 
-#: elf-properties.c:553
+#: elf-properties.c:799
 msgid "Merging program properties\n"
 msgstr "A unir propriedades do programa\n"
 
+#: elf-sframe.c:201
+#, c-format
+msgid "error in %pB(%pA); unexpected SFrame section type"
+msgstr "erro em %pB(%pA); tipo de secÃ§Ã£o SFrame inesperado"
+
+#: elf-sframe.c:252
+#, c-format
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr "erro em %pB(%pA); nenhum .sframe serÃ¡ criado"
+
+#: elf-sframe.c:426
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr "secÃ§Ãµes de entrada SFrame com abi diferente impedem a geraÃ§Ã£o de .sframe"
+
+#: elf-sframe.c:437
+msgid "input SFrame sections with different format versions prevent .sframe generation"
+msgstr "secÃ§Ãµes de entrada SFrame com diferentes versÃµes de formato impedem a geraÃ§Ã£o de .sframe"
+
+#: elf-sframe.c:450
+msgid "SFrame sections with unexpected data encoding prevent .sframe generation"
+msgstr "secÃ§Ãµes SFrame com codificaÃ§Ã£o de dados inesperada impedem a geraÃ§Ã£o de .sframe"
+
+#: elf.c:299
+#, c-format
+msgid "%pB: string table [%u] is corrupt"
+msgstr "%pB: tabela de cadeias [%u] corrompida"
+
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:328
 #, 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:353
 #, 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:512 elf32-arm.c:17779 elfnn-aarch64.c:8361 elfnn-loongarch.c:6449
+#: elfnn-riscv.c:3885
 #, 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:526
 #, 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>"
+msgid "%pB symbol number %lu uses unsupported binding of %u"
+msgstr "sÃ­mbolo %pB nÃºmero %lu usa ligaÃ§Ã£o nÃ£o suportada de %u"
 
-#: elf.c:728
+#: elf.c:538
 #, c-format
-msgid "%pB: invalid entry in SHT_GROUP section [%u]"
-msgstr "%pB: entrada na secÃ§Ã£o [%u] SHT_GROUP invÃ¡lida"
+msgid "%pB symbol number %lu uses unsupported type of %u"
+msgstr "sÃ­mbolo %pB nÃºmero %lu usa tipo nÃ£o suportado de %u"
 
-#: elf.c:747
+#: elf.c:641
 #, c-format
-msgid "%pB: no valid group sections found"
-msgstr "%pB: sem secÃ§Ãµes de grupo vÃ¡lidas"
+msgid "%pB: could not read contents of group [%u]"
+msgstr "%pB: impossÃ­vel ler o conteÃºdo do grupo [%u]"
 
-#. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:672
 #, c-format
-msgid "%pB: group section '%pA' has no contents"
-msgstr "%pB: secÃ§Ã£o de grupo \"%pA\" nÃ£o tem conteÃºdo"
+msgid "%pB: invalid entry (%#x) in group [%u]"
+msgstr "%pB: entrada invÃ¡lida (%#x) no grupo [%u]"
 
-#: elf.c:837
+#: elf.c:691
 #, c-format
-msgid "%pB: no group info for section '%pA'"
-msgstr "%pB: sem informaÃ§Ã£o de grupo para secÃ§Ã£o \"%pA\""
+msgid "%pB: unexpected type (%#x) section `%s' in group [%u]"
+msgstr "%pB: tipo de secÃ§Ã£o (%#x) inesperado \"%s\" no grupo [%u]"
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
-#, 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:767
 #, 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
-#, 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:796
 #, 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:1078
 #, c-format
-msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
-msgstr "%pB: secÃ§Ã£o tipo [%#x] \"%s\" desconhecida no grupo [%pA]"
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr "%pB: a secÃ§Ã£o %s estÃ¡ comprimida com zstd, mas o BFD nÃ£o tem suporte a zstd"
 
-#: elf.c:1408
+#: elf.c:1264
 #, 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:1280
 #, 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:1307
 #, 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:1484
 #, c-format
 msgid ""
 "\n"
@@ -1081,7 +1192,7 @@ msgstr ""
 "\n"
 "CabeÃ§alho do programa:\n"
 
-#: elf.c:1665
+#: elf.c:1526
 #, c-format
 msgid ""
 "\n"
@@ -1090,7 +1201,7 @@ msgstr ""
 "\n"
 "SecÃ§Ã£o dinÃ¢mica:\n"
 
-#: elf.c:1806
+#: elf.c:1665
 #, c-format
 msgid ""
 "\n"
@@ -1099,7 +1210,7 @@ msgstr ""
 "\n"
 "DefiniÃ§Ãµes da versÃ£o:\n"
 
-#: elf.c:1831
+#: elf.c:1690
 #, c-format
 msgid ""
 "\n"
@@ -1108,927 +1219,1128 @@ msgstr ""
 "\n"
 "ReferÃªncias da versÃ£o:\n"
 
-#: elf.c:1836
+#: elf.c:1695
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  requerido de %s:\n"
 
-#: elf.c:2037
+#: elf.c:1944
+#, c-format
+msgid "%pB: DT_STRTAB table is corrupt"
+msgstr "%pB: tabela DT_STRTAB corrompida"
+
+#: elf.c:2451
 #, 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:2559
 #, 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:2644
 #, 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:2763
 #, 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:2820
+#, 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:2905 elf.c:2919 elf.c:2930 elf.c:2943
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr "%pB: tipo desconhecido [%#x], secÃ§Ã£o \"%s\""
 
-#: elf.c:3248
+#: elf.c:3614
 #, 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:3649
 #, 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:3981
+#, c-format
+msgid "%pB: corrupted group section: `%pA'"
+msgstr "%pB: secÃ§Ã£o de grupo corrompida: \"%pA\""
+
+#: elf.c:4156
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr "%pB: demasiadas secÃ§Ãµes: %u"
 
-#: elf.c:3839
+#: elf.c:4242
 #, 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:4260
 #, 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:4860
 #, 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:5043
+msgid "%P: failed to size relative relocations\n"
+msgstr "%P: falha ao dimensionar relocalizaÃ§Ãµes relativas\n"
 
-#: elf.c:5013
+#: elf.c:5470
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr "%pB: secÃ§Ãµes TLS nÃ£o adjacentes:"
 
-#: elf.c:5020
+#: elf.c:5477
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr "\t    TLS: %pA"
 
-#: elf.c:5024
+#: elf.c:5481
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr "\tnÃ£o-TLS: %pA"
 
-#: elf.c:5538
+#: elf.c:6103
 #, 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:6129
 #, 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:6256
 #, 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:6397
 #, 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"
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: erro: segmento PHDR nÃ£o coberto pelo segmento LOAD"
+
+#: elf.c:6437
+#, c-format
+msgid "%pB: section `%pA' can't be allocated in segment %u"
+msgstr "%pB: secÃ§Ã£o \"%pA\" nÃ£o pode ser relocalizada no segmento %u"
 
-#: elf.c:5839
+#: elf.c:6575
 #, 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:6710
+#, c-format
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr "%pB: aviso: impossÃ­vel alocar secÃ§Ãµes ao segmento PT_GNU_RELRO"
+
+#: elf.c:6741
 #, 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
+#: elf.c:6894
 #, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr "%pB: erro: segmento PHDR nÃ£o coberto pelo segmento LOAD"
+msgid "error: %pB has a TLS segment with execute permission"
+msgstr "erro: %pB tem um segmento TLS com permissÃ£o de execuÃ§Ã£o"
 
-#: elf.c:6606
+#: elf.c:6900
+#, c-format
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr "aviso: %pB tem um segmento TLS com permissÃ£o de execuÃ§Ã£o"
+
+#: elf.c:6915
+#, c-format
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr "erro: %pB tem um segmento LOAD com permissÃµes RWX"
+
+#: elf.c:6921
+#, c-format
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr "aviso: %pB tem um segmento LOAD com permissÃµes RWX"
+
+#: elf.c:7316
 #, 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:7693
 #, 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:8366
 #, 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:8848
+#, 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:8878
 #, 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\""
+msgstr "impossÃ­vel encontrar secÃ§Ã£o de saÃ­da equivalente para sÃ­mbolo \"%s\" da secÃ§Ã£o \"%s\""
 
-#: elf.c:8421
+#: elf.c:9311
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr "%pB: entrada .gnu.version_r invÃ¡lida"
 
-#: elf.c:8548
+#: elf.c:9489
 #, 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:9992
+#, 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:10004
+#, 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:10119 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7666
+#: elf32-ppc.c:8854 elf64-ppc.c:16870
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: %s: nÃ£o suportado"
+
+#: elf.c:10966
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr "%pB: aviso: win32pstatus %s de tamanho %lu bytes Ã© muito pequeno"
+
+#: elf.c:11045
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr "%pB: win32pstatus NOTE_INFO_MODULE de tamanho %lu Ã© muito pequeno para conter um nome de tamanho %u"
+
+#: elf.c:13726
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr "A secÃ§Ã£o GNU_MBIND sÃ³ Ã© suportada por alvos GNU e FreeBSD"
+
+#: elf.c:13729
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr "tipo de sÃ­mbolo STT_GNU_IFUNC sÃ³ Ã© suportada por alvos GNU e FreeBSD"
+
+#: elf.c:13732
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr "vÃ­nculo de sÃ­mbolo STB_GNU_UNIQUE sÃ³ Ã© suportada por alvos GNU e FreeBSD"
+
+#: elf.c:13735
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr "A secÃ§Ã£o GNU_RETAIN sÃ³ Ã© suportada por alvos GNU e FreeBSD"
+
+#: elf.c:13952
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr "%pB(%pA): relocalizaÃ§Ã£o %zu tem Ã­ndice de sÃ­mbolos invÃ¡lido %lu"
+
+#: elf.c:14027
+#, 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:14041
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): Ã­ndice da secÃ§Ã£o de informaÃ§Ã£o invÃ¡lido"
+
+#: elf.c:14055
+#, 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:14131
+#, 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:14143
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr "%pB(%pA): erro: secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria tem entradas de tamanho zero"
+
+#: elf.c:14155
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr "%pB(%pA): erro: secÃ§Ã£o de relocalizaÃ§Ã£o secundÃ¡ria tem entradas de tamanho nÃ£o-padrÃ£o"
+
+#: elf.c:14169
+#, 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:14193
+#, 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:14213
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr "%pB(%pA): erro: entrada de tabela de reloc %zu vazia"
+
+#: elf.c:14238
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr "%pB(%pA): erro: reloc secundÃ¡ria %zu referencia um sÃ­mbolo em falta"
+
+#: elf.c:14256
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr "%pB(%pA): erro: reloc secundÃ¡ria %zu referencia um sÃ­mbolo eliminado"
+
+#: elf.c:14270
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+msgstr "%pB(%pA): erro: reloc secundÃ¡ria %zu Ã© de tipo desconhecido"
+
+#. 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-arc.c:454 elf32-arm.c:15198 elf32-frv.c:6618 elf32-iq2000.c:868
+#: elf32-m32c.c:915 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5531 elfnn-aarch64.c:7591
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "bandeiras privadas = 0x%lx:"
 
-#: elf32-arc.c:627
+#: elf32-arc.c:641
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
-msgstr "Aviso: %pB: conflito na configuraÃ§Ã£o de plataforma %s com %s."
+msgstr "aviso: %pB: conflito na configuraÃ§Ã£o de plataforma %s com %s"
 
-#: elf32-arc.c:646
+#: elf32-arc.c:660
 #, 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."
+msgstr "erro: %pB: impossÃ­vel unir atributos base CPU %s com %s"
 
-#: elf32-arc.c:683
+#: elf32-arc.c:697
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
-msgstr "erro: %pB: impossÃ­vel unir atributos de extensÃ£o ISA %s."
+msgstr "erro: %pB: impossÃ­vel unir atributos de extensÃ£o ISA %s"
 
-#: elf32-arc.c:707
+#: elf32-arc.c:721
 #, 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."
+msgstr "erro: %pB: conflito de atributos de extensÃ£o ISA %s com %s"
 
-#: elf32-arc.c:747
+#: elf32-arc.c:761
 #, 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."
+msgstr "erro: %pB: impossÃ­vel misturar rf16 com conjunto de registo completo %pB"
 
-#: elf32-arc.c:775
+#: elf32-arc.c:789
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
-msgstr "erro: %pB: conflito de atributos %s: %s com %s."
+msgstr "erro: %pB: conflito de atributos %s: %s com %s"
 
-#: elf32-arc.c:802
+#: elf32-arc.c:816
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
-msgstr "erro: %pB: conflito de atributos %s."
+msgstr "erro: %pB: conflito de atributos %s"
 
-#: elf32-arc.c:907
+#: elf32-arc.c:921
 #, 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"
+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:937 elf32-iq2000.c:844 elf32-m32c.c:890 elf32-m68hc1x.c:1390
+#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15766
 #, 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:1026
 msgid "error: the ARC4 architecture is no longer supported"
-msgstr "Erro: a arquitectura ARC4 jÃ¡ nÃ£o Ã© suportada."
+msgstr "erro: a arquitectura ARC4 jÃ¡ nÃ£o Ã© suportada"
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1032
 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."
+msgstr "aviso: bandeiras nÃ£o definidas ou de arquitectura antiga. Use a mÃ¡quina predefinida"
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1158
 #, 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:1169
 #, 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:1897
 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."
+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:1921 elf32-rx.c:1486
 #, 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:1926 elf32-rx.c:1491
 #, 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:1931 elf32-rx.c:1496
 #, 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:1936 elf32-rx.c:1501
 #, 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:1941 elf32-rx.c:1506
 #, 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:2035 elf32-arc.c:2103 elf32-arm.c:15641 elf32-metag.c:2250
+#: elf32-nds32.c:5549 elfnn-aarch64.c:7998 elfnn-riscv.c:915
 #, 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:2922
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
-msgstr "%pB: atributo de objecto ARC %d obrigatÃ³rio desconhecido."
+msgstr "%pB: atributo de objecto ARC %d obrigatÃ³rio desconhecido"
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2930
 #, c-format
 msgid "warning: %pB: unknown ARC object attribute %d"
-msgstr "Aviso: %pB: atributo de objecto ARC %d desconhecido."
+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:4367 elf32-arm.c:4401 elf32-arm.c:4420 elf32-arm.c:4472
 #, 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."
+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:4432 elf32-arm.c:4486 elf32-arm.c:9185 elf32-arm.c:9275
 #, 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:4612
+#, 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:4781
 #, 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"
+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:4856 elf32-arm.c:7005 elf32-csky.c:3387 elf32-hppa.c:581
+#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14180
+#: elfnn-aarch64.c:3200 elfnn-kvx.c:894
 #, 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:5077 elf32-csky.c:3729 elf32-hppa.c:731 elf32-hppa.c:760
+#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3346
+#: elf64-ppc.c:12297 elf64-ppc.c:12305 xcofflink.c:4723 elfnn-aarch64.c:3272
+msgid "%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: impossÃ­vel atribuir \"%pA\" a secÃ§Ã£o de saÃ­da. Tente sem --enable-non-contiguous-regions.\n"
+
+#: elf32-arm.c:6048
 #, 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."
+msgstr "%pB: sÃ­mbolo especial \"%s\" sÃ³ Ã© permitido para arquitecturas ARMv8-M ou posteriores"
 
-#: elf32-arm.c:5966
+#: elf32-arm.c:6057
 #, 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."
+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:6096
 #, 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."
+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:6102
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr "%pB: sÃ­mbolo standard \"%s\" ausente."
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6114
 #, 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."
+msgstr "%pB: \"%s\" e o seu sÃ­mbolo especial estÃ£o em secÃ§Ãµes diferentes"
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6126
 #, c-format
 msgid "%pB: entry function `%s' not output"
-msgstr "%pB: funÃ§Ã£o de entrada \"%s\" nÃ£o saÃ­da."
+msgstr "%pB: funÃ§Ã£o de entrada \"%s\" nÃ£o saÃ­da"
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6133
 #, c-format
 msgid "%pB: entry function `%s' is empty"
-msgstr "%pB: funÃ§Ã£o de entrada \"%s\" estÃ¡ vazia."
+msgstr "%pB: funÃ§Ã£o de entrada \"%s\" estÃ¡ vazia"
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6262
 #, c-format
 msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
-msgstr "%pB: --in-implib sÃ³ Ã© suportado para bibliotecas importadas Secure Gateway."
+msgstr "%pB: --in-implib sÃ³ Ã© suportado para bibliotecas importadas Secure Gateway"
 
-#: elf32-arm.c:6217
+#: elf32-arm.c:6311
 #, 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."
+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:6333
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
-msgstr "FunÃ§Ã£o de entrada \"%s\" desapareceu do cÃ³digo de seguranÃ§a."
+msgstr "funÃ§Ã£o de entrada \"%s\" desapareceu do cÃ³digo de seguranÃ§a"
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6357
 #, c-format
 msgid "`%s' refers to a non entry function"
-msgstr "\"%s\" refere-se a funÃ§Ã£o nÃ£o de entrada."
+msgstr "\"%s\" refere-se a funÃ§Ã£o nÃ£o de entrada"
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6372
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
-msgstr "%pB: a visibilidade do sÃ­mbolo \"%s\" mudou."
+msgstr "%pB: a visibilidade do sÃ­mbolo \"%s\" mudou"
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6381
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr "%pB: tamanho incorrecto do sÃ­mbolo \"%s\"."
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6400
 #, 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."
+msgstr "desvio \"%s\" da folha para funÃ§Ã£o de entrada nÃ£o Ã© mÃºltiplo do seu tamanho"
 
-#: elf32-arm.c:6326
+#: elf32-arm.c:6420
 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:6428
 #, c-format
 msgid "start address of `%s' is different from previous link"
-msgstr "EndereÃ§o inicial de \"%s\" Ã© diferente da ligaÃ§Ã£o prÃ©via."
+msgstr "endereÃ§o inicial de \"%s\" Ã© diferente da ligaÃ§Ã£o prÃ©via"
 
-#: elf32-arm.c:7042 elf32-arm.c:7078
+#: elf32-arm.c:7140 elf32-arm.c:7178
 #, 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:7890
 #, 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."
+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:8118
 #, 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:8145
 #, 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:8681 elf32-arm.c:8701 elf32-arm.c:8768 elf32-arm.c:8787
 #, 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:8994
 #, 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."
+msgstr "%pB(%pA+%#x): erro: detectada carga mÃºltipla em instruÃ§Ã£o de bloco IT nÃ£o-final: a camada STM32L4XX nÃ£o pode ser gerada; use a opÃ§Ã£o gcc -mrestrict-it para gerar sÃ³ uma instruÃ§Ã£o por bloco IT"
 
-#: elf32-arm.c:9000
+#: elf32-arm.c:9092
 #, c-format
 msgid "invalid TARGET2 relocation type '%s'"
-msgstr "Tipo de relocalizaÃ§Ã£o \"%s\" TARGET2 invÃ¡lido."
+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:9861
 #, 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:10170 elf32-arm.c:10212
 #, 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:10493
+#, c-format
+msgid "warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "aviso: %pB(%s): a forÃ§ar bramch para sÃ­mbolo absoluto em modo Thumb (CPU sÃ³-Thumb) em %pB"
+
+#: elf32-arm.c:10498
+#, c-format
+msgid "warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "aviso: (%s): a forÃ§ar branch para sÃ­mbolo absoluto em modo Thumb (CPU sÃ³-Thumb) em %pB"
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "%pB(%s): tipo de destino desconhecido (ARM/Thumb) em %pB"
+
+#: elf32-arm.c:10531
+#, c-format
+msgid "(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "(%s): tipo de destino desconhecido (ARM/Thumb) em %pB"
+
+#: elf32-arm.c:10619
 msgid "shared object"
 msgstr "objecto partilhado"
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10622
 msgid "PIE executable"
 msgstr "ExecutÃ¡vel PIE"
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10625
 #, 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:10727
+#, 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:11144
 #, 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:11778
+#, c-format
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr "%pB: esperado Ã­ndice de sÃ­mbolo no intervalo 0..%lu, encontrado sÃ­mbolo local com Ã­ndice %lu"
+
+#: elf32-arm.c:12053 elf32-arm.c:12079
 #, 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:12125 elf32-csky.c:4958 elf32-m68k.c:3735 elf32-metag.c:1912
 #, 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:12339
 #, 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:12380 elf32-arm.c:12472 elf32-arm.c:12560 elf32-arm.c:12650
 #, 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:12708 elf32-arm.c:12867
+msgid "local symbol index too big"
+msgstr "Ã­ndice de sÃ­mbolo local demasiado grande"
+
+#: elf32-arm.c:12718 elf32-arm.c:12752
+msgid "no dynamic index information available"
+msgstr "sem informaÃ§Ã£o de Ã­ndice"
+
+#: elf32-arm.c:12760
+msgid "invalid dynamic index"
+msgstr "Ã­ndice dinÃ¢mico invÃ¡lido"
+
+#: elf32-arm.c:12877
+msgid "dynamic index information not available"
+msgstr "sem informaÃ§Ã£o de Ã­ndice"
+
+#: elf32-arm.c:13308 elf32-sh.c:3568
 #, 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:13421 elf32-m68k.c:3968 elf32-xtensa.c:2760 elfnn-aarch64.c:7088
+#: elfnn-kvx.c:2569
 #, 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:13423 elf32-m68k.c:3970 elf32-xtensa.c:2762 elfnn-aarch64.c:7090
+#: elfnn-kvx.c:2571
 #, 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:13506 elf32-tic6x.c:2641 elfnn-aarch64.c:7425 elfnn-kvx.c:2798
 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:13510 elf32-pru.c:936 elf32-tic6x.c:2645 elfnn-aarch64.c:7429
+#: elfnn-kvx.c:2802
 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:13518 elf32-pru.c:946 elf32-tic6x.c:2653 elfnn-aarch64.c:7437
+#: elfnn-kvx.c:2810
 msgid "unknown error"
 msgstr "erro desconhecido"
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13995
 #, 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"
+msgstr "aviso: bandeira %pB de interworking nÃ£o definida porque jÃ¡ foi especificada como nÃ£o-interworking"
 
-#: elf32-arm.c:13768
+#: elf32-arm.c:13999
 #, 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"
+msgstr "aviso: a limpar bandeira %pB de interworking devido a pedido externo"
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:14044
 #, 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"
+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:14131
 #, 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:14139
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
-msgstr "Aviso: %pB: atributo de objecto EABI %d desconhecido"
+msgstr "aviso: %pB: atributo de objecto EABI %d desconhecido"
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14474
 #, 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:14512
 #, c-format
-msgid "error: %pB: conflicting CPU architectures %d/%d"
-msgstr "erro: %pB: arquitecturas CPU %d/%d em conflito"
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
+msgstr "erro: arquitecturas de CPU em conflito %s vs %s em %pB"
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14609
 #, 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:14646
 #, 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:14816
 #, 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:14842
 #, 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:14981
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
-msgstr "Aviso: %pB: configuraÃ§Ã£o de plataforma em conflito"
+msgstr "aviso: %pB: configuraÃ§Ã£o de plataforma em conflito"
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14990
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr "erro: %pB: uso de R9 em conflito"
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:15002
 #, 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:15015
 #, 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:15046
 #, 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:15058
 #, 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:15075
 #, 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:15111
 #, 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"
 
-#. 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: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
-#, c-format
-msgid "private flags = %lx:"
-msgstr "bandeiras provadas = %lx:"
-
-#: elf32-arm.c:14888
+#: elf32-arm.c:15207
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [interworking activo]"
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15215
 #, c-format
 msgid " [VFP float format]"
 msgstr " [formato flutuante VFP]"
 
-#: elf32-arm.c:14898
-#, c-format
-msgid " [Maverick float format]"
-msgstr " [formato flutuante Maverick]"
-
-#: elf32-arm.c:14900
+#: elf32-arm.c:15217
 #, c-format
 msgid " [FPA float format]"
 msgstr " [formato flutuante FPA]"
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15220
 #, 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:15223 elf32-arm.c:15308
 #, c-format
 msgid " [position independent]"
 msgstr " [posiÃ§Ã£o independente]"
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15226
 #, c-format
 msgid " [new ABI]"
 msgstr " [novo ABI]"
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15229
 #, c-format
 msgid " [old ABI]"
 msgstr " [ABI antigo]"
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15232
 #, c-format
 msgid " [software FP]"
 msgstr " [software FP]"
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15240
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Version1 EABI]"
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15243 elf32-arm.c:15254
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [tabela de sÃ­mbolo ordenada]"
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15245 elf32-arm.c:15256
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [tabela de sÃ­mbolo desordenada]"
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15251
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Version2 EABI]"
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15259
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [sÃ­mbolos dinÃ¢micos usam Ã­ndice de segmento]"
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15262
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [sÃ­mbolos de mapeamento precedem outros]"
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15269
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Version3 EABI]"
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15273
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Version4 EABI]"
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15277
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Version5 EABI]"
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15280
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [soft-float ABI]"
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15283
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [hard-float ABI]"
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15289
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15292
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15298
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <versÃ£o EABI nÃ£o reconhecida>"
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15305
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [executÃ¡vel relocalizÃ¡vel]"
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15311
 #, 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:15316 elfnn-aarch64.c:7594
 #, c-format
-msgid "<Unrecognised flag bits set>"
-msgstr "<bits de bandeira definidos nÃ£o reconhecidos>"
+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:15424 elf32-arm.c:15558 elf32-i386.c:1576 elf32-s390.c:921
+#: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 elf64-s390.c:924
+#: elf64-x86-64.c:2550 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 elfxx-x86.c:962
+#: elfnn-aarch64.c:7865 elfnn-kvx.c:3248 elfnn-loongarch.c:961
+#: elfnn-riscv.c:959
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr "%pB: mau Ã­ndice de sÃ­mbolo: %d"
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15814
 #, 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:17077
 #, c-format
 msgid "errors encountered processing file %pB"
-msgstr "Encontrados erros ao processar o ficheiro %pB"
+msgstr "encontrados erros ao processar o ficheiro %pB"
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:17448 elflink.c:13605 elflink.c:13652
 #, c-format
 msgid "could not find section %s"
 msgstr "impossÃ­vel encontrar a secÃ§Ã£o %s"
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18406
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr "%pB: nÃºmero de sÃ­mbolos no ficheiro de entrada aumentou de %lu para %u\n"
+
+#: elf32-arm.c:18664
 #, 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:18691
 #, 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:19518 elf32-arm.c:19540
 #, 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:19591
 #, 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. "
+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:19630
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
-msgstr "%pB: erro: impossÃ­vel criar folha STM32L4XX."
+msgstr "%pB: erro: impossÃ­vel criar folha STM32L4XX"
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20713
 #, 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:20790
 #, 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:20805
 #, 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:20815
 #, 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:20819
 #, 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:20829 elf32-arm.c:20833
 #, 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
-#, 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:20852
 #, 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:20856
 #, 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:20870
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
-msgstr "Aviso: %pB suporta interworking, enquanto %pB nÃ£o"
+msgstr "aviso: %pB suporta interworking, enquanto %pB nÃ£o"
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20876
 #, c-format
 msgid "warning: %pB does not support interworking, whereas %pB does"
-msgstr "Aviso: %pB nÃ£o suporta interworking, enquanto %pB sim"
+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
-msgid "internal error: dangerous relocation"
-msgstr "erro interno: relocalizaÃ§Ã£o perigosa"
+#: elf32-avr.c:1503
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr "%X%H: %s contra \"%s\": erro: relocalizaÃ§Ã£o aplica secÃ§Ã£o externa\n"
+
+#: elf32-avr.c:1511
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr "%X%H: %s contra `%s': erro: endereÃ§o destino da relocalizaÃ§Ã£o Ã© Ã­mpar\n"
+
+#: elf32-avr.c:1519
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr "%X%H: %s contra \"%s\": erro interno: resultado de relocalizaÃ§Ã£o %d inesperado\n"
 
-#: elf32-avr.c:3327
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3335 elfnn-aarch64.c:3231
 #, 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:364
 msgid "relocation should be even number"
 msgstr "a relocalizaÃ§Ã£o deve ser nÃºmero par"
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1589
 #, 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:1621 elf32-i386.c:3585 elf32-m68k.c:4008 elf32-s390.c:3132
+#: elf64-s390.c:3468 elf64-x86-64.c:5080
 #, 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:2646
 #, 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:2663
 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:2761
 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:2801 elf32-bfin.c:2922
 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:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4386
 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:2881
 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:3044
 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:3045
 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:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3379
+#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:939 elf64-bpf.c:348
+#: elf64-mmix.c:1545 elfxx-tilegx.c:3752
+msgid "internal error: dangerous relocation"
+msgstr "erro interno: relocalizaÃ§Ã£o perigosa"
+
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4734 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1264
+#: elf32-score.c:3986 elf32-score7.c:3793 elf32-vax.c:534 elf32-xgate.c:494
+#: elfxx-mips.c:16452
+#, c-format
+msgid "private flags = %lx:"
+msgstr "bandeiras provadas = %lx:"
+
+#: elf32-bfin.c:4785 elf32-frv.c:6591
 #, 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:4789 elf32-frv.c:6595
 #, 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:4925
 #, 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:5335 elf32-cr16.c:2723 elf32-m68k.c:4423
 msgid "unsupported relocation type"
 msgstr "relocalizaÃ§Ã£o nÃ£o suportada"
 
@@ -2048,16 +2360,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:2552
 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:2536
 #, 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:2545
 #, 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\""
@@ -2096,14 +2408,14 @@ msgstr "(muitas variÃ¡veis globais para
 msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)"
 msgstr "(dados thread-local muito grandes para -fpic ou -msmall-tls: recompile com -fPIC ou -mno-small-tls"
 
-#: elf32-cris.c:3050
+#: elf32-cris.c:3048
 #, c-format
 msgid "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
 msgstr ""
 "%pB, secÃ§Ã£o %pA:\n"
 "  objecto compatÃ­vel v10/v32 nÃ£o deve conter uma relocalizaÃ§Ã£o PIC"
 
-#: elf32-cris.c:3104
+#: elf32-cris.c:3102
 #, c-format
 msgid ""
 "%pB, section %pA:\n"
@@ -2112,80 +2424,106 @@ msgstr ""
 "%pB, secÃ§Ã£o %pA:\n"
 "  relocalizaÃ§Ã£o %s invÃ¡lida em objecto partilhado; tipicamente uma mistura de opÃ§Ãµes, recompile com -fPIC"
 
-#: elf32-cris.c:3322
+#: elf32-cris.c:3320
 #, c-format
 msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
 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:3701
 #, 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:3813
 msgid "unexpected machine number"
-msgstr "NÃºmero de mÃ¡quina inesperado"
+msgstr "nÃºmero de mÃ¡quina inesperado"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3865
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [sÃ­mbolos tÃªm um prefixo _]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3868
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 e v32]"
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3871
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3915
 #, 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:3916
 #, 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:3935
 #, 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:3937
 #, 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:2017
 msgid "GOT table size out of range"
 msgstr "tamanho de tabela GOT fora do intervalo"
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2828
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr "aviso: eflag \"%#lx\" arch nÃ£o reconhecida"
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2851
+#, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr "aviso: nome arch \"%#x\" nÃ£o reconhecido"
+
+#: elf32-csky.c:2916 elf32-csky.c:3076
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr "%pB: conflito de bandeira de mÃ¡quina com destino"
 
-#: elf32-csky.c:2990
+# space missing between '...%s,set...'
+#: elf32-csky.c:2929
+#, c-format
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr "aviso: ficheiro %pB com bandeira arch %s em conflito com o destino %s, definir bandeira arch do destino como %s"
+
+#: elf32-csky.c:2958
 #, 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"
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr "Erro: %pB e %pB tÃªm versÃ£o VDSP diferente"
+
+#: elf32-csky.c:2975
+#, c-format
+msgid "Error: %pB and %pB has different DSP version"
+msgstr "Erro: %pB e %pB tÃªm versÃ£o DSP diferente"
+
+#: elf32-csky.c:2993
+#, c-format
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr "Erro: %pB e %pB tÃªm FPU ABI diferente"
+
+#: elf32-csky.c:3090
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr "aviso: bandeira arch do ficheiro %pB %s em conflito com o destino %s, a usar %s"
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4330 elf32-i386.c:344
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o nÃ£o suportado: %#x"
@@ -2193,15 +2531,15 @@ msgstr "%pB: tipo de relocalizaÃ§Ã£o nÃ£
 #: elf32-dlx.c:141
 #, c-format
 msgid "branch (PC rel16) to section (%s) not supported"
-msgstr "Erro de ligaÃ§Ã£o BFD: ramo (PC rel16) para secÃ§Ã£o (%s) nÃ£o suportado"
+msgstr "ramo (PC rel16) para secÃ§Ã£o (%s) nÃ£o suportado"
 
 #: elf32-dlx.c:204
 #, c-format
 msgid "jump (PC rel26) to section (%s) not supported"
-msgstr "Erro de ligaÃ§Ã£o BFD: salto (PC rel26) para secÃ§Ã£o (%s) nÃ£o suportado"
+msgstr "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:570 elf32-ip2k.c:1485
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "relocalizaÃ§Ã£o nÃ£o suportada entre dados/espaÃ§os de endereÃ§o insn"
 
@@ -2209,96 +2547,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:6502
 #, 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:6556 elf32-iq2000.c:830 elf32-m32c.c:877
 #, 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:6569
 #, 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,275 +2646,299 @@ 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:862 elf32-hppa.c:3403
 #, 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:1240
 #, 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:2579
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr "%pB: fictÃ­cio de exportaÃ§Ã£o duplicado %s"
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3236
 #, 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:3456
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): deslocamento %#x para insn %#x nÃ£o Ã© mÃºltiplo de 8 (gp %#x)"
+
+#: elf32-hppa.c:3475
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): deslocamento %#x para insn %#x nÃ£o Ã© mÃºltiplo de 4 (gp %#x)"
+
+#: elf32-hppa.c:4090
 #, 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:4108
 #, 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:4167
 #, 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:4471
 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
-#, 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:1300
 #, 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:1586
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx32> > %#<PRIx32>) for section `%pA'"
+msgstr "%pB: mau desvio de relocalizaÃ§Ã£o (%#<PRIx32> > %#<PRIx32>) para secÃ§Ã£o \"%pA\""
+
+#: elf32-i386.c:1771 elf32-s390.c:1149 elf32-sh.c:5500 elf32-tilepro.c:1546
+#: elf32-xtensa.c:1261 elf64-s390.c:1162 elfxx-sparc.c:1565 elfxx-tilegx.c:1766
+#: elfnn-loongarch.c:750 elfnn-riscv.c:866
 #, 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:1843
 #, 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:1898 elf64-x86-64.c:2964
+#, c-format
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr "%pB: referÃªncia nÃ£o-canÃ³nica a funÃ§Ã£o canÃ³nica protegida \"%s\" em %pB"
+
+#: elf32-i386.c:2461 elf64-x86-64.c:3446 elfnn-riscv.c:2742
 #, 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:2494 elf32-i386.c:3794 elf32-i386.c:3942 elf64-x86-64.c:3503
+#: elf64-x86-64.c:5254 elf64-x86-64.c:5425 elfnn-riscv.c:2604
+#: elfnn-riscv.c:3511 elfnn-riscv.c:3585
 #, 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:2672
 #, 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:2707 elf64-x86-64.c:3726
 msgid "hidden symbol"
 msgstr "sÃ­mbolo oculto"
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2710 elf64-x86-64.c:3729
 msgid "internal symbol"
 msgstr "sÃ­mbolo interno"
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2713 elf64-x86-64.c:3732
 msgid "protected symbol"
 msgstr "sÃ­mbolo protegido"
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2716 elf64-x86-64.c:3735
 msgid "symbol"
 msgstr "sÃ­mbolo"
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2722
 #, 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:2735
 #, 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-i386.c:4145 elf64-x86-64.c:5645
+msgid "%P: discarded output section: `%pA'\n"
+msgstr "%P: secÃ§Ã£o de saÃ­da descartada: \"%pA\"\n"
+
+#: 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:1298
 #, 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:1317
 #, 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
 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
 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"
 
-#: elf32-m32r.c:1471
+#: elf32-m32r.c:1461
 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:2778 elf32-microblaze.c:1147 elf32-microblaze.c:1195
 #, 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:3279
 #, 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:3300 elf32-nds32.c:6906
 #, c-format
 msgid "private flags = %lx"
 msgstr "bandeiras privadas = %lx"
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3305
 #, c-format
 msgid ": m32r instructions"
 msgstr ": instruÃ§Ãµes m32r"
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3306
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": instruÃ§Ãµes m32rx"
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3307
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": instruÃ§Ãµes m32r2"
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1135
 #, 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"
+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:1166
 #, 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:1182
 #, 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:1197
 #, 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:1233
 #, 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:1357
 #, 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:1364
 #, 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:1373
 #, 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:1418 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:1420 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:1423 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:1425 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "32-bit duplo, "
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1428
 #, c-format
 msgid "cpu=HC11]"
 msgstr "cpu=HC11]"
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1430
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "cpu=HCS12]"
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1432
 #, c-format
 msgid "cpu=HC12]"
 msgstr "cpu=HC12]"
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1435
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [memÃ³ria=bank-model]"
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1437
 #, c-format
 msgid " [memory=flat]"
 msgstr " [memÃ³ria=flat]"
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1440
 #, 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:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578
+#, 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:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105
 msgid "unknown"
 msgstr "desconhecido"
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1730
 #, 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:1737
 #, 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"
@@ -2592,387 +2954,362 @@ msgstr "mep: sem reloc para cÃ³digo %d"
 msgid "MeP: howto %d has type %d"
 msgstr "MeP: howto %d tem tipo %d"
 
-#: elf32-mep.c:622
+#: elf32-mep.c:618
 #, c-format
 msgid "%pB and %pB are for different cores"
 msgstr "%pB e %pB sÃ£o para cores diferentes"
 
-#: elf32-mep.c:641
+#: elf32-mep.c:637
 #, c-format
 msgid "%pB and %pB are for different configurations"
 msgstr "%pB e %pB sÃ£o para configuraÃ§Ãµes diferentes"
 
-#: elf32-mep.c:679
+#: elf32-mep.c:675
 #, c-format
 msgid "private flags = 0x%lx"
 msgstr "bandeiras privadas = 0x%lx"
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1856
 #, 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:1859
 #, 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:1590 elf32-tilepro.c:3020 elfxx-sparc.c:3452
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr "%pB: provavelmente compilado com -fPIC?"
 
-#: elf32-mips.c:1775 elf64-mips.c:3516 elfn32-mips.c:3332
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334
 msgid "literal relocation occurs for an external symbol"
 msgstr "relocalizaÃ§Ã£o literal ocorre para um sÃ­mbolo externo"
 
-#: elf32-mips.c:1822 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:3559
-#: elfn32-mips.c:3373
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
 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:914
+#, c-format
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "erro: tamanho final de valor uleb128 no desvio 0x%lx em %pA de %pB excede o espaÃ§o disponÃ­vel"
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
 msgid "try enabling relaxation to avoid relocation truncations"
-msgstr "Tente activar relaxe para evitar truncamentos nas relocalizaÃ§Ãµes"
+msgstr "tente activar relaxe para evitar truncamentos nas relocalizaÃ§Ãµes"
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1506
 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:2673
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
-msgstr "Aviso: %pB: atributo de objecto MSABI %d desconhecido"
+msgstr "aviso: %pB: atributo de objecto MSABI %d desconhecido"
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2774
 #, 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:2786
 #, 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:2799
 #, 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:2810
 #, 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:2823
 #, 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:2835
 #, 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:2860
 #, 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:3680
 #, 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:5579
 #, 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:5705
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
-msgstr "%pB: aviso: acesso nÃ£o alinhado a entrada GOT."
+msgstr "%pB: aviso: acesso nÃ£o alinhado a entrada GOT"
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5746
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
-msgstr "%pB: aviso: falha ao relocalizar SDA_BASE."
+msgstr "%pB: aviso: falha ao relocalizar SDA_BASE"
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5768
 #, 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."
+msgstr "%pB(%pA): aviso: acesso nÃ£o alinhado a dados pequenos de tipo %d"
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6694
 #, 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:6742
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
-msgstr "%pB: aviso: Endian trocado com mÃ³dulos anteriores."
+msgstr "%pB: aviso: Endian trocado com mÃ³dulos anteriores"
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6756
 #, 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."
+msgstr "%pB: aviso: encontradas versÃµes anteriores do ficheiro objecto, recompile com as ferramentas actuais"
 
-#: elf32-nds32.c:6930
+#: elf32-nds32.c:6844
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
-msgstr "%pB: erro: ABI trocado com mÃ³dulos anteriores."
+msgstr "%pB: erro: ABI trocado com mÃ³dulos anteriores"
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6854
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
-msgstr "%pB: erro: conjunto de instruÃ§Ãµes trocado com mÃ³dulos anteriores."
+msgstr "%pB: erro: conjunto de instruÃ§Ãµes trocado com mÃ³dulos anteriores"
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6881
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
-msgstr "%pB: aviso: versÃµes elf %s e %s incompatÃ­veis."
+msgstr "%pB: aviso: versÃµes elf %s e %s incompatÃ­veis"
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6912
 #, c-format
 msgid ": n1 instructions"
 msgstr ": instruÃ§Ãµes n1"
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6915
 #, c-format
 msgid ": n1h instructions"
 msgstr ": instruÃ§Ãµes n1h"
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9364
 #, 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:9628
 #, 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:12893
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
-msgstr "%pB: OMIT_FP aninhado em %pA."
+msgstr "%pB: OMIT_FP aninhado em %pA"
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12912
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
-msgstr "%pB: OMIT_FP desirmanado em %pA."
-
-#: elf32-nds32.c:13275 reloc.c:8410
-#, 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
-#, c-format
-msgid "error: %pB: big-endian R2 is not supported"
-msgstr "erro: %pB: Big-endian R2 nÃ£o Ã© suportado."
-
-#: elf32-nios2.c:3822
-#, 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"
-
-#: elf32-nios2.c:3842
-#, 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"
-
-#: elf32-nios2.c:4495 elf32-pru.c:928
-msgid "relocation out of range"
-msgstr "relocalizaÃ§Ã£o fora do intervalo"
+msgstr "%pB: OMIT_FP desirmanado em %pA"
 
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
-msgid "dangerous relocation"
-msgstr "relocalizaÃ§Ã£o perigosa"
-
-#: elf32-nios2.c:5378
-#, 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:1256
 #, 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:1375
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr "%pB: tipo de relocalizaÃ§Ã£o %d desconhecido"
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1429
 #, 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:1542
 #, 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:1559
 #, 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:1573 elf32-or1k.c:1588 elf64-alpha.c:4412 elf64-alpha.c:4556
 #, 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:1602
 #, 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:1686
 #, 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:1865
 #, 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:2199
 #, 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:3313
 #, 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:990 elf64-ppc.c:1753
 #, 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:1627
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr "secÃ§Ã£o %s corrupta em %pB"
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1646
 #, 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:1688
 #, 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:1737
 msgid "failed to allocate space for new APUinfo section"
-msgstr "falha ao alocar espaÃ§o para nova secÃ§Ã£o APUinfo."
+msgstr "falha ao alocar espaÃ§o para nova secÃ§Ã£o APUinfo"
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1756
 msgid "failed to compute new APUinfo section"
-msgstr "falha ao computar nova secÃ§Ã£o APUinfo."
+msgstr "falha ao computar nova secÃ§Ã£o APUinfo"
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1759
 msgid "failed to install new APUinfo section"
-msgstr "falha ao instalar nova secÃ§Ã£o APUinfo."
+msgstr "falha ao instalar nova secÃ§Ã£o APUinfo"
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2867
 #, 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:3586 elf32-ppc.c:3594
 #, 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:3616 elf32-ppc.c:3624
 #, 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:3632 elf32-ppc.c:3640
 #, 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:3707 elf32-ppc.c:3716
 #, 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:3745 elf32-ppc.c:3754
 #, 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:3818
 #, 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:3826
 #, 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:3897
 #, 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:3916
 #, 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:4026
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr "bss-plt forÃ§ado devido a %pB"
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4028
 msgid "bss-plt forced by profiling"
 msgstr "bss-plt forÃ§ado pelo perfil"
 
+#: elf32-ppc.c:4606 elf64-ppc.c:8517
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr "%H: aviso: %s insn %#x inesperado.\n"
+
 #. 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:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4636 elf64-ppc.c:8582
 #, 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:5565 elf32-sh.c:3019 elf32-tilepro.c:2246 elfxx-sparc.c:2464
+#: elfxx-tilegx.c:2495
 #, 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:6512
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr "%pB: a ajustar ramo em 0x%V em direcÃ§Ã£o a \"%s\" na secÃ§Ã£o %s\n"
+
+#: elf32-ppc.c:7454
 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:7492
 msgid "%H: fixup branch overflow\n"
 msgstr "%H: transporte em ramo fixup\n"
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7532 elf32-ppc.c:7570
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr "%pB(%pA+%#<PRIx64>): erro: %s com instruÃ§Ã£o inesperada %#x"
@@ -2982,11 +3319,12 @@ msgstr "%pB(%pA+%#<PRIx64>): erro: %s co
 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
-msgid "%H: warning: %s unexpected insn %#x.\n"
-msgstr "%H: aviso: %s insn %#x inesperado.\n"
+#: elf32-ppc.c:7670
+#, c-format
+msgid "%pB: reloc %#x unsupported"
+msgstr "%pB: reloc %#x nÃ£o suportada"
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7953
 #, 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,110 +3337,125 @@ 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:7985
 #, 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:8163
 #, 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:8501 elf32-ppc.c:8532 elf32-ppc.c:8635 elf32-ppc.c:8735
 #, 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:8913 elf32-ppc.c:8934
+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:9016
 #, 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:9045
 #, 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:9127
 #, 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:10009
 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:10013 elf64-ppc.c:18330
 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:10058
 #, 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:1477
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr "erro: %pB: detectado ficheiro objecto antigo incompatÃ­vel"
 
-#: elf32-rl78.c:372
-msgid "internal error: RL78 reloc stack overflow"
-msgstr "Erro interno: transporte de stack em reloc RL78"
-
-#: elf32-rl78.c:383
-msgid "internal error: RL78 reloc stack underflow"
-msgstr "Erro interno: sub-transporte de stack em reloc RL78"
+#: elf32-pru.c:931
+msgid "relocation out of range"
+msgstr "relocalizaÃ§Ã£o fora do intervalo"
+
+#: elf32-pru.c:941 elf32-tic6x.c:2649
+msgid "dangerous relocation"
+msgstr "relocalizaÃ§Ã£o perigosa"
 
-#: elf32-rl78.c:1053
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
+msgstr "RL78 reloc: transporte/falta na pilha"
+
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
+msgstr "RL78 reloc divide por zero"
+
+#: elf32-rl78.c:1069
 msgid "warning: RL78_SYM reloc with an unknown symbol"
-msgstr "Aviso: reloc RL78_SYM com sÃ­mbolo desconhecido"
+msgstr "aviso: reloc RL78_SYM com sÃ­mbolo desconhecido"
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
-#, c-format
-msgid "%pB(%pA): error: call to undefined function '%s'"
-msgstr "%pB(%pA): erro: chamada a funÃ§Ã£o nÃ£o definida \"%s\""
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr "%H: %s fora do intervalo\n"
 
-#: elf32-rl78.c:1205
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
+msgstr "%H: tipo de relocalizaÃ§Ã£o %u nÃ£o suportado\n"
+
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr "%H: relocalizaÃ§Ã£o %s devolve um valor nÃ£o reconhecido %x\n"
+
+#: elf32-rl78.c:1220
 #, c-format
 msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
 msgstr "conflito RL78 ABI: ficheiro G10 %pB nÃ£o pode ser ligado a ficheiro %s %pB"
 
-#: elf32-rl78.c:1222
+#: elf32-rl78.c:1237
 #, c-format
 msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
 msgstr "conflito RL78 ABI: impossÃ­vel ligar ficheiro %s %pB com ficheiro %s %pB"
 
-#: elf32-rl78.c:1231
+#: elf32-rl78.c:1246
 msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
 msgstr "conflito de uniÃ£o RL78: impossÃ­vel ligar objectos 32-bit e 64-bit"
 
-#: elf32-rl78.c:1235 elf32-rl78.c:1239
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
 #, c-format
 msgid "- %pB is 64-bit, %pB is not"
 msgstr "- %pB Ã© 64-bit, %pB nÃ£o Ã©"
 
-#: elf32-rl78.c:1266
+#: elf32-rl78.c:1281
 #, c-format
 msgid " [64-bit doubles]"
 msgstr " [64-bit doubles]"
 
-#: elf32-rx.c:605
+#: elf32-rx.c:618
 #, 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:625
 #, 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:700
 #, 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,74 +3464,84 @@ 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:720
 #, 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:1304
 msgid "warning: RX_SYM reloc with an unknown symbol"
-msgstr "Aviso: reloc RX_SYM com sÃ­mbolo desconhecido"
+msgstr "aviso: reloc RX_SYM com sÃ­mbolo desconhecido"
+
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr "%pB(%pA): erro: chamada a funÃ§Ã£o nÃ£o definida \"%s\""
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:3185
 #, 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"
+msgstr "hÃ¡ um conflito na uniÃ£o das bandeira do cabeÃ§alho ELF de %pB"
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3188
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr "  bandeiras fich. entrada: %s"
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3190
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  bandeiras fich. saÃ­da:   %s"
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3797
 #, 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:3805
 #, 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:2007 elf64-s390.c:2242
 #, 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:1505 elf32-score7.c:1368 elfxx-mips.c:3914
 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:2737
 msgid "address not word aligned"
 msgstr "endereÃ§o nÃ£o alinhado por word"
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2818 elf32-score7.c:2625
 #, 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:2872 elf32-score7.c:2679
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: reloc CALL15 em %#<PRIx64> nÃ£o contra sÃ­mbolo global"
 
-#: elf32-score.c:4003 elf32-score7.c:3808
+#: elf32-score.c:3483 elf32-score7.c:3294 elfxx-mips.c:11260
+#, c-format
+msgid "%pB: cannot handle more than %d dynamic symbols"
+msgstr "%pB: impossÃ­vel gerir mais de %d sÃ­mbolos dinÃ¢micos"
+
+#: elf32-score.c:3989 elf32-score7.c:3796
 #, c-format
 msgid " [pic]"
 msgstr " [pic]"
 
-#: elf32-score.c:4007 elf32-score7.c:3812
+#: elf32-score.c:3993 elf32-score7.c:3800
 #, c-format
 msgid " [fix dep]"
 msgstr " [fix dep]"
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4040 elf32-score7.c:3847
 #, 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 +3551,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:3755
 #, 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:3785 elf32-sh.c:3801
 #, 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:3817
 #, 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:3833
 #, 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:3963 elf32-sh.c:4358
 #, 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:4461
 #, 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:4580
 #, 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:4598
 #, 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:4606
 #, 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:4613
 #, 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:4620
 #, 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:4627
 #, 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:4634
 #, 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:4669
 #, 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:4687
 #, 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:4696
 #, 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:4703
 #, 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:4818
 #, 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:4886
 #, 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:5014
 #, 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"
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
+msgstr "%X%H: relocalizaÃ§Ã£o para \"%s\" referencia um segmento diferente\n"
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5021
 #, 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"
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
+msgstr "%H: aviso: relocalizaÃ§Ã£o para \"%s\" referencia um segmento diferente\n"
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5489 elf32-sh.c:5571
 #, 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:5495 elf32-sh.c:5576
 #, 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:5526
 #, 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:5733 elf64-alpha.c:4648
 #, 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:5848
 #, 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:5860
 #, 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:5901
 #, 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:5914
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr "%pB: tentativa de misturar objectos FDPIC e nÃ£o-FDPIC"
@@ -3348,29 +3707,34 @@ 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:734
 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:742
 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:762
 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:803
 #, 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:1029
 #, 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:1379
 #, 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"
@@ -3390,30 +3754,30 @@ msgstr "nÃ£o tem permissÃ£o para definir
 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:15372
 msgid "stubs don't match calculated size"
 msgstr "fictÃ­cios nÃ£o correspondem ao tamanho calculado"
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2575
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "aviso: %s sobrepÃµe-se a %s\n"
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2591
 #, 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:2623
 #, 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:2764
 #, 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"
@@ -3421,39 +3785,39 @@ msgstr "%pB(%pA+0x%v): chamada a secÃ§Ã£
 #: elf32-spu.c:3330
 #, 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"
+msgstr "anÃ¡lise de stack ignorarÃ¡ a chamada de %s a %s\n"
 
 #: elf32-spu.c:4027
 msgid "  calls:\n"
 msgstr "  chamadas:\n"
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4342
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s duplicado em %s\n"
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4346
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s duplicado\n"
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4353
 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:4395
 #, 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:4551
 #, 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
-msgid "%F%P: auto overlay error: %E\n"
-msgstr "%F%P: erro de auto-sobreposiÃ§Ã£o: %E\n"
+#: elf32-spu.c:4692
+msgid "%P: auto overlay error: %E\n"
+msgstr "%P: erro de auto-sobreposiÃ§Ã£o: %E\n"
 
 #: elf32-spu.c:4712
 msgid "Stack size for call graph root nodes.\n"
@@ -3476,327 +3840,327 @@ msgid "%X%P: stack/lrlive analysis error
 msgstr "%X%P: erro de anÃ¡lise stack/lrlive: %E\n"
 
 #: elf32-spu.c:4745
-msgid "%F%P: can not build overlay stubs: %E\n"
-msgstr "%F%P: impossÃ­vel construir fictÃ­cios de sobreposiÃ§Ã£o: %E\n"
+msgid "%P: can not build overlay stubs: %E\n"
+msgstr "%P: impossÃ­vel construir fictÃ­cios de sobreposiÃ§Ã£o: %E\n"
 
 #: elf32-spu.c:4814
 msgid "fatal error while creating .fixup"
 msgstr "erro fatal ao criar .fixup"
 
-#: elf32-spu.c:5049
+#: elf32-spu.c:5050
 #, c-format
 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:1587
 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:1592
 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:2426
 #, 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:3492
 #, 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:3501
 #, 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:3619 elf32-tic6x.c:3628
 #, 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:3638 elf32-tic6x.c:3647
 #, 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:3656 elf32-tic6x.c:3665
 #, 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:3674 elf32-tic6x.c:3682
 #, 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:3705
 #, 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:3724
 #, 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:3626 elfxx-tilegx.c:4019 elfxx-x86.c:2762
+#: elfnn-aarch64.c:10375 elfnn-kvx.c:4631 elfnn-loongarch.c:6379
+#: elfnn-riscv.c:3801
 #, 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"
+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"
+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"
+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"
+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"
+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:466
 msgid "failed to find previous HI16 reloc"
-msgstr "Falha ao procurar reloc HI16 anterior"
+msgstr "falha ao procurar reloc HI16 anterior"
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2309
 msgid "could not locate special linker symbol __gp"
 msgstr "impossÃ­vel localizar sÃ­mbolo linker especial __gp"
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2313
 msgid "could not locate special linker symbol __ep"
 msgstr "impossÃ­vel localizar sÃ­mbolo linker especial __ep"
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2317
 msgid "could not locate special linker symbol __ctbp"
 msgstr "impossÃ­vel localizar sÃ­mbolo linker especial __ctbp"
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2539
 #, 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:2555
 #, 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:2570
 #, 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:2602
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr " alinhamento de entidades 8-byte: "
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2605
 #, c-format
 msgid "4-byte"
 msgstr "4-byte"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2606
 #, c-format
 msgid "8-byte"
 msgstr "8-byte"
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2607 elf32-v850.c:2619
 #, 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:2608 elf32-v850.c:2620 elf32-v850.c:2632 elf32-v850.c:2643
+#: elf32-v850.c:2654 elf32-v850.c:2665
 #, c-format
 msgid "unknown: %x"
 msgstr "desconhecido: %x"
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2614
 #, c-format
 msgid " size of doubles: "
 msgstr " tamanho de doubles: "
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2617
 #, c-format
 msgid "4-bytes"
 msgstr "4-bytes"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2618
 #, c-format
 msgid "8-bytes"
 msgstr "8-bytes"
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2626
 #, c-format
 msgid " FPU support required: "
 msgstr " requerido suporte FPU: "
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2629
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2630
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2631
 #, c-format
 msgid "none"
 msgstr "nenhum"
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2638
 #, c-format
 msgid "SIMD use: "
 msgstr "uso SIMD: "
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663
 #, c-format
 msgid "yes"
 msgstr "sim"
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2642 elf32-v850.c:2653 elf32-v850.c:2664
 #, c-format
 msgid "no"
 msgstr "nÃ£o"
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2649
 #, c-format
 msgid "CACHE use: "
 msgstr "uso CACHE: "
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2660
 #, c-format
 msgid "MMU use: "
 msgstr "uso MMU: "
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2827 elf32-v850.c:2883
 #, 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:2901
 #, c-format
 msgid "private flags = %lx: "
 msgstr "bandeiras privadas = %lx: "
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2906
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "arquitectura V850 desconhecida"
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2908
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "arquitectura v850 E3"
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2910 elf32-v850.c:2917
 #, c-format
 msgid "v850 architecture"
 msgstr "arquitectura v850"
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2918
 #, c-format
 msgid "v850e architecture"
 msgstr "arquitectura v850e"
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2919
 #, c-format
 msgid "v850e1 architecture"
 msgstr "arquitectura v850e1"
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2920
 #, c-format
 msgid "v850e2 architecture"
 msgstr "arquitectura v850e2"
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2921
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "arquitectura v850e2v3"
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2922
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "arquitectura v850e3v5"
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3596 elf32-v850.c:3835
 #, 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:3606 elf32-v850.c:3845
 #, 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:3652 elf32-v850.c:3880
 #, 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:3692
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: aviso: %s aponta para reloc nÃ£o reconhecida  %#<PRIx64>"
 
-#: elf32-vax.c:540
+#: elf32-vax.c:537
 #, c-format
 msgid " [nonpic]"
 msgstr " [nonpic]"
 
-#: elf32-vax.c:543
+#: elf32-vax.c:540
 #, c-format
 msgid " [d-float]"
 msgstr " [d-float]"
 
-#: elf32-vax.c:546
+#: elf32-vax.c:543
 #, c-format
 msgid " [g-float]"
 msgstr " [g-float]"
 
-#: elf32-vax.c:632
+#: elf32-vax.c:629
 #, c-format
 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"
+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"
+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,257 +4175,280 @@ 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:2077 elfnn-ia64.c:2345
 msgid "non-zero addend in @fptr reloc"
 msgstr "adenda nÃ£o-zero em reloc @fptr"
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:996
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr "%pB(%pA): tabela de propriedade invÃ¡lida"
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2732
 #, 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:2815 elf32-xtensa.c:2938
 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:2915
 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:3128
 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:3434
 #, 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:4733 elf32-xtensa.c:4741
 msgid "attempt to convert L32R/CALLX to CALL failed"
-msgstr "Tentativa de converter L32R/CALLX para CALL falhou"
+msgstr "tentativa de converter L32R/CALLX para CALL falhou"
 
-#: elf32-xtensa.c:6444 elf32-xtensa.c:6523 elf32-xtensa.c:7899
+#: elf32-xtensa.c:6569 elf32-xtensa.c:6648 elf32-xtensa.c:8074
 #, 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:7815
 #, 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:9673
 msgid "invalid relocation address"
-msgstr "EndereÃ§o de relocalizaÃ§Ã£o invÃ¡lido"
+msgstr "endereÃ§o de relocalizaÃ§Ã£o invÃ¡lido"
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9764
 msgid "overflow after relaxation"
 msgstr "transporte apÃ³s relaxe"
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10910
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
 msgstr "%pB(%pA+%#<PRIx64>): fix inesperado para relocalizaÃ§Ã£o %s"
 
+#: 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:472
 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:1983
+#, c-format
+msgid "%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr "%pB: relocalizaÃ§Ã£o dinÃ¢mica contra sÃ­mbolo local em secÃ§Ã£o sÃ³ de leitura \"%pA\"\n"
+
+#: elf64-alpha.c:2435
 #, 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:2679 elflink.c:15752 elfnn-kvx.c:4016 elfnn-loongarch.c:2016
+#, 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:2977 elf64-alpha.c:3172
 #, 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:4372 elf64-alpha.c:4385
 #, 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:4441
 #, 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:4466 mach-o.c:627 elfnn-loongarch.c:917 elfnn-riscv.c:917
+#: elfnn-riscv.c:1122 elfnn-riscv.c:1164
 msgid "<unknown>"
 msgstr "<desconhecido>"
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4472
 #, 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:4530
 #, 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:4565
 #, 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:4631
 #, 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:4656
 #, 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:344
+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:2037
 #, 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>"
+msgstr "entrada fictÃ­cia para %s nÃ£o pode carregar .plt, desvio dp = %<PRId64>"
 
-#: elf64-hppa.c:3286
+#: elf64-hppa.c:3241
 #, 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:600 elfnn-ia64.c:641
 #, 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."
+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:2032 elfnn-ia64.c:2293
 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:3280 elfnn-ia64.c:3673
 #, 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:3290 elfnn-ia64.c:3683
 #, 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:3560 elfnn-ia64.c:3956
 #, 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:3624 elfnn-ia64.c:4024
 #, 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:3683 elfnn-ia64.c:4087
 #, 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:3785 elfnn-ia64.c:4225
 #, 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:3788 elfnn-ia64.c:4228
 #, 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:3791 elfnn-ia64.c:4231
 #, 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:3915 elfnn-ia64.c:4428
 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:3952 elfnn-ia64.c:4466
 #, 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:3969 elfnn-ia64.c:4483
 #, 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:4263 elfnn-ia64.c:4742
 #, 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:4272 elfnn-ia64.c:4751
 #, 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:4281 elfnn-ia64.c:4760
 #, 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:4290 elfnn-ia64.c:4769
 #, 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:4300 elfnn-ia64.c:4779
 #, 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:5518
 #, 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"
+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
 #, 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"
+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:5547
 #, 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"
+msgstr "aviso: tamanho do sÃ­mbolo \"%s\" mudou de %<PRIu64> em %pB para %<PRIu64> em %pB"
 
-#: elf64-mips.c:4098
+#: elf64-mips.c:4102
 #, 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"
+msgstr "%pB(%pA): relocalizaÃ§Ã£o %<PRIu64> tem Ã­ndice de sÃ­mbolos invÃ¡lido %ld"
 
-#: elf64-mmix.c:984
+#: elf64-mmix.c:980
 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 ""
-"RelocalizaÃ§Ã£o de entrada invÃ¡lida ao produzir saÃ­da de formato nÃ£o-ELF, nÃ£o-mmo.\n"
-" Por favor, use o programa objcopy para converter de ELF ou mmo,\n"
-" ou monte usando \"-no-expand\" (para gcc, \"-Wa,-no-expand\""
+msgstr "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, ou monte usando \"-no-expand\" (para gcc, \"-Wa,-no-expand\""
 
-#: elf64-mmix.c:1168
+#: elf64-mmix.c:1164
 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 ""
-"RelocalizaÃ§Ã£o de entrada invÃ¡lida ao produzir saÃ­da de formato nÃ£o-ELF, nÃ£o-mmo.\n"
-" Por favor, use o programa objcopy para converter de ELF ou mmo,\n"
-"ou compile usando a opÃ§Ã£o gcc \"-mno-base-addresses\"."
+msgstr "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, ou compile usando a opÃ§Ã£o gcc \"-mno-base-addresses\"."
 
-#: elf64-mmix.c:1195
+#: elf64-mmix.c:1191
 #, c-format
 msgid ""
 "%pB: Internal inconsistency error for value for\n"
@@ -4070,1040 +4457,1706 @@ msgstr ""
 "%pB: erro interno de inconsistÃªncia no valor para o\n"
 " registo global alocado para o linker: ligado: %#<PRIx64> != relaxado: %#<PRIx64>"
 
-#: elf64-mmix.c:1619
+#: elf64-mmix.c:1615
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
 msgstr "%pB: relocalizaÃ§Ã£o base-plus-offset  contra sÃ­mbolo de registo: (desconhecido) em %pA"
 
-#: elf64-mmix.c:1625
+#: elf64-mmix.c:1621
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
 msgstr "%pB: relocalizaÃ§Ã£o base-plus-offset contra sÃ­mbolo de registo: %s em %pA"
 
-#: elf64-mmix.c:1670
+#: elf64-mmix.c:1666
 #, c-format
 msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
 msgstr "%pB: relocalizaÃ§Ã£o de registo contra sÃ­mbolo nÃ£o-registo: (desconhecido) em %pA"
 
-#: elf64-mmix.c:1676
+#: elf64-mmix.c:1672
 #, c-format
 msgid "%pB: register relocation against non-register symbol: %s in %pA"
 msgstr "%pB: relocalizaÃ§Ã£o de registo contra sÃ­mbolo nÃ£o-registo: %s em %pA"
 
-#: elf64-mmix.c:1713
+#: elf64-mmix.c:1709
 #, c-format
 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:1738
 #, 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>"
+msgstr "%pB: directiva LOCAL: registo $%<PRId64> nÃ£o Ã© um registo local. O primeiro registo global Ã© $%<PRId64>"
 
-#: elf64-mmix.c:2173
+#: elf64-mmix.c:2153
 #, 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:2208
 msgid "register section has contents\n"
-msgstr "SecÃ§Ã£o de registo tem conteÃºdo\n"
+msgstr "secÃ§Ã£o de registo tem conteÃºdo\n"
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2399
 #, 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."
+msgstr "inconsistÃªncia interna: resta %lu != mÃ¡x %lu; por favor, relate este erro"
+
+#: elf64-ppc.c:1361
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "aviso: deve ser usado %s, em vez de %s"
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:4302
 #, 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:4485
 #, 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:5107
 #, 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:5277
+msgid "%H: %s reloc unsupported here\n"
+msgstr "%H: %s reloc nÃ£o suportada aqui\n"
+
+#: elf64-ppc.c:5500
 #, 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:5508
 #, 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:5535
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld"
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6845
 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:7112
 #, 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:7363
 #, 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:7454
 #, 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:7464
 #, 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:7486
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr "%pB: sÃ­mbolo indefinido \"%s\" em secÃ§Ã£o .opd"
 
-#: elf64-ppc.c:7249
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7987
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr "aviso: --plt-localentry Ã© incompatÃ­vel com cÃ³digo power10 pc-relative"
+
+#: elf64-ppc.c:7995
 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."
+msgstr "aviso: --plt-localentry Ã© particularmente perigosa sem suporte ld.so para detectar violaÃ§Ãµes ABI"
 
-#: elf64-ppc.c:7499
+#: elf64-ppc.c:8311
 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:8746 elf64-ppc.c:9462
 #, 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:9419
 #, 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:9640
+#, 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:10536
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr "aviso: a descartar secÃ§Ã£o dinÃ¢mica %s"
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11692
 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:11842
 #, 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:11869
 #, 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:11930 elf64-ppc.c:12182 elf64-ppc.c:14748
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
-msgstr "%P: erro na tabela de ligaÃ§Ã£o contra \"%T\"\n"
+msgstr "%P: erro na tabela de ligaÃ§Ã£o contra \"%pT\"\n"
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:12381
 #, 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:13412
 #, 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:14929
+msgid "__tls_get_addr call offset overflow"
+msgstr "transporte de desvio de chamada __tls_get_addr"
+
+#: elf64-ppc.c:15272 elf64-ppc.c:15291
 #, 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:15380
 #, 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"
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
+msgstr[0] "fictÃ­cios de linker em grupo %u"
+msgstr[1] "fictÃ­cios de linker em grupos %u"
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:15387
 #, c-format
 msgid ""
+"%s, iter %u\n"
 "  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 ""
-"  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"
+"%s, iter %u\n"
+"  ramo         %lu\n"
+"  ramo longo    %lu\n"
+"  chamada plt       %lu\n"
+"  entrada global   %lu"
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:15769
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
-msgstr "%H: %s usado com sÃ­mbolo TLS \"%T\"\n"
+msgstr "%H: %s usado com sÃ­mbolo TLS \"%pT\"\n"
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:15771
 #, c-format
 msgid "%H: %s used with non-TLS symbol `%pT'\n"
-msgstr "%H: %s usado com sÃ­mbolo nÃ£o-TLS \"%T\"\n"
+msgstr "%H: %s usado com sÃ­mbolo nÃ£o-TLS \"%pT\"\n"
 
-#: elf64-ppc.c:14245
+#: elf64-ppc.c:16555
 #, 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:16561
 #, 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:17212
+#, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr "%H: %s contra %pT nÃ£o Ã© suportada\n"
+
+#: elf64-ppc.c:17488
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
-msgstr "%H: %s para funÃ§Ã£o indirecta \"%T\" nÃ£o suportado\n"
+msgstr "%H: %s para funÃ§Ã£o indirecta \"%pT\" nÃ£o suportado\n"
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:17575
+#, 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:17630
 #, 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:17899
 #, 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:17922
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
-msgstr "%H: %s insolÃºvel contra \"%T\"\n"
+msgstr "%H: %s insolÃºvel contra \"%pT\"\n"
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:18067
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
-msgstr "%H: %s contra \"%T\": erro %d\n"
+msgstr "%H: %s contra \"%pT\": erro %d\n"
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2752
 #, 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
+#: elf64-s390.c:3415
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation %s against misaligned symbol `%s' (%#<PRIx64>) in %pB"
+msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o %s contra sÃ­mbolo mal alinhado \"%s\" (%#<PRIx64>) em %pB"
+
+#: elf64-sparc.c:134 elfcode.h:1601
 #, 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:493
 #, 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:514
 #, 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"
+msgstr "registo %%g%d usa incompatibilidade: %s em %pB, previamente %s em %pB"
 
-#: elf64-sparc.c:512
+#: elf64-sparc.c:538
 #, 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"
+msgstr "sÃ­mbolo \"%s\" tem tipos diferentes: REGISTER em %pB, previamente %s em %pB"
 
-#: elf64-sparc.c:559
+#: elf64-sparc.c:585
 #, 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:717
 #, 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:1690
 msgid "hidden symbol "
 msgstr "sÃ­mbolo oculto "
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1693
 msgid "internal symbol "
 msgstr "sÃ­mbolo interno "
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1696 elf64-x86-64.c:1700
 msgid "protected symbol "
 msgstr "sÃ­mbolo protegido "
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1702
 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:1708
 msgid "undefined "
-msgstr "indefinido"
+msgstr "indefinido "
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1718 elfnn-loongarch.c:901
 msgid "a shared object"
 msgstr "um objecto partilhado"
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1720
+msgid "; recompile with -fPIC"
+msgstr "; recompile com -fPIC"
+
+#: elf64-x86-64.c:1725 elfnn-loongarch.c:907
 msgid "a PIE object"
 msgstr "um objecto PIE"
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1727 elfnn-loongarch.c:909
 msgid "a PDE object"
 msgstr "um objecto PDE"
 
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1729
+msgid "; recompile with -fPIE"
+msgstr "; recompile com -fPIE"
+
+#: elf64-x86-64.c:1733
 #, 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:2566
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx64> > %#<PRIx64>) for section `%pA'"
+msgstr "%pB: mau desvio de relocalizaÃ§Ã£o (%#<PRIx64> > %#<PRIx64>) para secÃ§Ã£o \"%pA\""
+
+#: elf64-x86-64.c:2630
 #, 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:2791
 #, 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:3046
+#, c-format
+msgid "%pB: unsupported relocation %s against symbol `%s'"
+msgstr "%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo \"%s\" nÃ£o suportada"
+
+#: elf64-x86-64.c:3472 elfnn-aarch64.c:5784 elfnn-riscv.c:2572
 #, 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>"
+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:3741
 #, 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:3755
 #, 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:4045
 #, 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
-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:4197
+msgid "%P: corrupt input: %pB\n"
+msgstr "%P: entrada corrupta: %pB\n"
+
+#: elf64-x86-64.c:5066
+#, c-format
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr " falha ao converter relocalizaÃ§Ã£o GOTPCREL contra \"%s\"; religue com --no-relax\n"
+
+#: elf64-x86-64.c:5225
+#, c-format
+msgid "%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr "%pB: transporte de desvio PC-relative em entrada PLT para \"%s\"\n"
+
+#: elf64-x86-64.c:5301
+#, c-format
+msgid "%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr "%pB: transporte em deslocamento do ramo em entrada PLT para \"%s\n"
+
+#: elf64-x86-64.c:5354
+#, c-format
+msgid "%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr "%pB: transporte de desvio PC-relative em entrada GOT PLT para \"%s\"\n"
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:5505
 #, 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"
+msgid "%pB: Unable to generate dynamic relocs because a suitable section does not exist\n"
+msgstr "%pB: impossÃ­vel gerar relocs dinÃ¢micas por nÃ£o existir uma secÃ§Ã£o adequada\n"
 
-#: elf64-x86-64.c:4106
+#: elfcode.h:342
 #, 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"
+msgid "warning: %pB has a section extending past end of file"
+msgstr "aviso: %pB tem uma secÃ§Ã£o estendida para alÃ©m do fim do ficheiro"
 
-#: elf64-x86-64.c:4159
+#: elfcode.h:790
 #, 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"
+msgid "warning: %pB has a corrupt string table index"
+msgstr "aviso: %pB tem um Ã­ndice de tabela de cadeias corrompido"
 
-#: elfcode.h:323
-msgid "warning: %pB has a corrupt section with a size (%"
-msgstr "aviso: %pB tem uma secÃ§Ã£o corrompida com um tamanho (%"
+#: elfcode.h:838
+#, c-format
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr "aviso: %pB tem um cabeÃ§alho de programa com argumento invÃ¡lido"
 
-#: elfcode.h:768
+#: elfcode.h:1056
 #, c-format
-msgid "warning: %pB has a corrupt string table index - ignoring"
-msgstr "aviso: %pB tem um Ã­ndice de tabela de cadeia corrompido - a ignorar"
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr "%pB: %pA+%<PRIx64>: addend %<PRIx64> de relocalizaÃ§Ã£o muito grande"
 
-#: elfcode.h:1212
+#: elfcode.h:1321
 #, 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)"
+msgstr "%pB: nÂº de versÃ£o (%<PRId64>) nÃ£o corresponde ao nÂº de sÃ­mbolos (%ld)"
 
-#: elfcore.h:300
+#: elfcore.h:280
 #, 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>"
+msgid "warning: %pB has a segment extending past end of file"
+msgstr "aviso: %pB tem um segmento estendido para alÃ©m do fim do ficheiro"
 
-#: elflink.c:1367
+#: elflink.c:1477
 #, 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:1483
 #, 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:1489
 #, 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:1495
 #, 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:2207
 #, 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:2720
 #, 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:2819
 #, 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:2831
 #, 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:3017
 #, 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:3350
 #, 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:3407
 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:4363
+msgid "%P: %pB: failed to add %s to first hash\n"
+msgstr "%P: %pB: falha ao adicionar %s ao primeiro hash\n"
+
+#: elflink.c:4431
+msgid "%P: first_hash failed to create: %E\n"
+msgstr "%P: falha ao criar first_hash: %E\n"
+
+#: elflink.c:4462
 #, 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:4945
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: desvio de versÃ£o invÃ¡lido %lx (mÃ¡x %lx)"
+
+#: elflink.c:5015
+#, 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:5164
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: versÃ£o de informaÃ§Ã£o insuficiente"
+
+#: elflink.c:5202
 #, 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:5239
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr "%pB: %s: versÃ£o necessÃ¡ria %d invÃ¡lida"
 
-#: elflink.c:5054
+#: elflink.c:5525
+#, c-format
+msgid "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used by the common definition in %pB"
+msgstr "aviso: alinhamento %u de sÃ­mbolo normal \"%s\" em %pB Ã© menor que %u, usado pela definiÃ§Ã£o comum em %pB"
+
+#: elflink.c:5532
+msgid "warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."
+msgstr "aviso: NOTA: discrepÃ¢ncias de alinhamento podem causar problemas reais. Aconselha-se uma investigaÃ§Ã£o."
+
+#: elflink.c:5554
+msgid "warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."
+msgstr "aviso: NOTA: discrepÃ¢ncias de tamanho podem causar problemas reais. Aconselha-se uma investigaÃ§Ã£o."
+
+#: elflink.c:5697
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr "%pB: referÃªncia indefinida a sÃ­mbolo \"%s\""
 
-#: elflink.c:6130
+#: elflink.c:6812
 #, 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:6816
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr "%pB: %s nÃ£o absoluto"
 
-#: elflink.c:6331
+#: elflink.c:7028
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: versÃ£o indefinida: %s"
 
-#: elflink.c:6902
+#: elflink.c:7419
+msgid "error: creating an executable stack because of -z execstack command line option"
+msgstr "erro: a criar uma pilha de execuÃ§Ã£o por causa da opÃ§Ã£o -z execstack"
+
+#: elflink.c:7425
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr "aviso: a activar uma pilha de execuÃ§Ã£o por causa da opÃ§Ã£o -z execstack"
+
+#: elflink.c:7487
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"
+msgstr "erro: %s: estÃ¡ a iniciar a geraÃ§Ã£o de uma pilha de execuÃ§Ã£o (porque tem uma secÃ§Ã£o executÃ¡vel .note.GNU-stack)"
+
+#: elflink.c:7493
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr "aviso: %s: requer pilha executÃ¡vel (porque a secÃ§Ã£o .note.GNU-stack Ã© executÃ¡vel)"
+
+#: elflink.c:7501
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"
+msgstr "erro: %s: estÃ¡ a iniciar a geraÃ§Ã£o de uma pilha executÃ¡vel porque nÃ£o tem uma secÃ§Ã£o .note.GNU-stack"
+
+#: elflink.c:7507
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr "aviso: %s: secÃ§Ã£o .note.GNU-stack em falta implica uma pilha executÃ¡vel"
+
+#: elflink.c:7510
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr "NOTA: este comportamento Ã© obsoleto e serÃ¡ removido numa versÃ£o futura do linker"
+
+#: elflink.c:7664
 #, 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:9284
 #, 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:9447 elflink.c:9455
+msgid "division by zero"
+msgstr "divisÃ£o por zero"
+
+#: elflink.c:9469
 #, 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:9805
 #, 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."
+msgstr "%pB:%pA: erro: relocalizaÃ§Ã£o referencia sÃ­mbolo %s que foi removido pela recolha de lixo"
 
-#: elflink.c:8855
+#: elflink.c:9808
 #, c-format
 msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
-msgstr "%pB:%pA: erro: tente religar com --gc-keep-exported activado."
+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:10059 elflink.c:10077 elflink.c:10116 elflink.c:10134
 #, 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:10093 elflink.c:10150
 #, 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:10202
 msgid "not enough memory to sort relocations"
-msgstr "Sem memÃ³ria suficiente para ordenar relocalizaÃ§Ãµes"
+msgstr "sem memÃ³ria suficiente para ordenar relocalizaÃ§Ãµes"
 
-#: elflink.c:9502
+#: elflink.c:10536
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr "%pB: demasiadas secÃ§Ãµes: %d (>= %d)"
 
-#: elflink.c:9782
+#: elflink.c:10812
 #, 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:10815
 #, 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:10818
 #, 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:10911
 #, 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:11069
 #, 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:11072
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr "%pB: sÃ­mbolo \"%s\" nÃ£o estÃ¡ definido"
 
-#: elflink.c:10034
+#: elflink.c:11075
 #, 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:11107
 #, 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:11649
 #, 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
-#, 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"
+msgid "error: %pB: unable to create group section symbol"
+msgstr "erro %pB: impossÃ­vel criar sÃ­mbolo de secÃ§Ã£o de grupo"
 
-#: elflink.c:11484
+#: elflink.c:11798
 #, 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"
+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:11490
+#: elflink.c:12264
 #, c-format
-msgid "%pA has both ordered and unordered sections"
-msgstr "%pA tem secÃ§Ãµes ordenadas e desordenadas em simultÃ¢neo"
+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:11592
+#: elflink.c:12544
 #, 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:13150
+msgid "%P: %pB: failed to finish relative relocations\n"
+msgstr "%P: %pB: falha ao terminar relocalizaÃ§Ãµes relativas\n"
+
+#: elflink.c:13227
 #, 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:13449
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr "%pB: falha ao gerar biblioteca de importaÃ§Ã£o"
 
-#: elflink.c:12561
+#: elflink.c:13610
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "aviso: secÃ§Ã£o %s tem tamanho zero"
 
-#: elflink.c:12609
+#: elflink.c:13658
 #, 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:13752
 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:13755
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr "%P: aviso: a criar DT_TEXTREL num objecto partilhado.\n"
+
+#: elflink.c:13758
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr "%P: aviso: a criar DT_TEXTREL em PDE\n"
+
+#: elflink.c:13761
+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:13890
 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:14312
+msgid "%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%P: %pB(%pA): erro: necessÃ¡ria secÃ§Ã£o linked-to para --gc-sections\n"
 
-#: elflink.c:13668
+#: elflink.c:14793
 #, 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:14834
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: secÃ§Ã£o \"%pA\":entrada VTENTRY corrompida"
+
+#: elflink.c:14977
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr "INPUT_SECTION_FLAG %s nÃ£o reconhecida\n"
 
-#: elfxx-mips.c:1450
+#: elflink.c:15758
+#, 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:15847
+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:478
+#, 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:786
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "%Xerro: encontrado um total de %d entradas incompatÃ­vel com requisitos BTI.\n"
+
+#: elfxx-aarch64.c:788
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "aviso: encontrado um total de %d entradas incompatÃ­vel com requisitos BTI.\n"
+
+#: elfxx-aarch64.c:798
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "%Xerro: encontrado um total de %d entradas incompatÃ­vel com requisitos GCS.\n"
+
+#: elfxx-aarch64.c:800
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "aviso: encontrado um total de %d entradas incompatÃ­vel com requisitos GCS.\n"
+
+#: elfxx-aarch64.c:810
+#, c-format
+msgid "%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "%Xerro: encontrado um total de %d objectos dinamicamente ligados incompatÃ­vel com requisitos GCS.\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "warning: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "aviso: encontrado um total de %d objectos dinamicamente ligados incompatÃ­vel com requisitos GCS.\n"
+
+#: elfxx-aarch64.c:971
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "erro: %pB: <tamanho AArch64 corrompido usado: 0x%x>"
+
+#: elfxx-aarch64.c:1115
+#, c-format
+msgid "%pB: warning: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: aviso: BTI Ã© requerido por -z force-bti, mas este ficheiro objecto de entrada nÃ£o tem a nota de propriedade necessÃ¡ria.\n"
+
+#: elfxx-aarch64.c:1117
+#, c-format
+msgid "%X%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: erro: BTI Ã© requerido por -z force-bti, mas este ficheiro objecto de entrada nÃ£o tem a nota de propriedade necessÃ¡ria.\n"
+
+#: elfxx-aarch64.c:1149
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%pB: aviso: GCS Ã© requerido por -z gcs, mas esta biblioteca partilhada nÃ£o tem a nota de propriedade necessÃ¡ria. O carregador dinÃ¢mico pode nÃ£o activar o GCS ou recusar-se a carregar o programa, a nÃ£o ser que todas as dependÃªncias da biblioteca partilhada tenham a marca GCS.\n"
+
+#: elfxx-aarch64.c:1153
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%X%pB: erro: GCS Ã© requerido por -z gcs, , mas esta biblioteca partilhada nÃ£o tem a nota de propriedade necessÃ¡ria. O carregador dinÃ¢mico pode nÃ£o activar o GCS ou recusar-se a carregar o programa, a nÃ£o ser que todas as dependÃªncias da biblioteca partilhada tenham a marca GCS.\n"
+
+#: elfxx-aarch64.c:1159
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: aviso: GCS Ã© requerido por -z gcs, mas este ficheiro objecto de entrada nÃ£o tem a nota de propriedade necessÃ¡ria.\n"
+
+#: elfxx-aarch64.c:1161
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: erro: GCS Ã© requerido por -z gcs, mas este ficheiro objecto de entrada nÃ£o tem a nota de propriedade necessÃ¡ria.\n"
+
+#: elfxx-loongarch.c:1911
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr "%pB: tipo de relocalizaÃ§Ã£o %s nÃ£o suportado"
+
+#: elfxx-loongarch.c:1939
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr "%pB: tipo de relocalizaÃ§Ã£o bfd %#x nÃ£o suportado"
+
+#: elfxx-loongarch.c:2013
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr "%pB: relocalizaÃ§Ã£o %s, deslocaÃ§Ã£o direita %d, erro 0x%lx"
+
+#: elfxx-loongarch.c:2032
+#, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr "%pB: relocalizaÃ§Ã£o %s, transporte 0x%lx"
+
+#: elfxx-mips.c:1534
 msgid "static procedure (no name)"
 msgstr "procedimento estÃ¡tico (sem nome)"
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5895
 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:6665
 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:6698
 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:6743
 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:6755
 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:7401
 #, 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:7445
 #, 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:7681
+#, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr "%pB: aviso: opÃ§Ã£o \"`%s\" truncada"
+
+#: elfxx-mips.c:8533 elfxx-mips.c:8659
 #, 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:8791
 #, 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:8891
 #, 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:9031
 #, 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:9334
 #, 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:9460
+#, 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:9463
+#, 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:9683
 #, 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:10606
 #, 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
-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:10748
+msgid "small-data section too large; lower small-data size limit (see option -G)"
+msgstr "secÃ§Ã£o small-data muito grande; baixe o limite de tamanho de small-data (veja a opÃ§Ã£o -G)"
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10767
 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"
+msgstr "impossÃ­vel converter um salto para JALX para um endereÃ§o nÃ£o alinhado por word"
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10770
 msgid "jump to a non-word-aligned address"
-msgstr "Salto para um endereÃ§o nÃ£o alinhado por word"
+msgstr "salto para um endereÃ§o nÃ£o alinhado por word"
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10771
 msgid "jump to a non-instruction-aligned address"
-msgstr "Salto para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£o"
+msgstr "salto para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£o"
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10774
 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"
+msgstr "impossÃ­vel converter um ramo para JALX para um endereÃ§o nÃ£o alinhado por word"
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10776
 msgid "branch to a non-instruction-aligned address"
-msgstr "Ramo para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£o"
+msgstr "ramo para um endereÃ§o nÃ£o alinhado por instruÃ§Ã£o"
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10778
 msgid "PC-relative load from unaligned address"
 msgstr "Carga PC-relative de endereÃ§o nÃ£o alinhado"
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:11078
 #, 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:11193 elfxx-mips.c:11786
 #, 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:11758
 #, 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:13503 reloc.c:8524
+#, 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"
+
+#: elfxx-mips.c:14814
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr "%pB: arquitectura desconhecida %s"
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15342
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr "%pB: nome de secÃ§Ã£o ilegal \"%pA\""
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15620
 #, 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:15637
 #, 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:15669 elfxx-mips.c:15735 elfxx-mips.c:15750
 #, 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:15693
 #, 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:15718
 #, 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:15852
 #, 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"
+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:15858
 #, 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"
+msgstr "aviso: %pB usa vÃ­rgula flutuante ABI %d desconhecida (definida por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15452
+#: elfxx-mips.c:15864
 #, 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"
+msgstr "aviso: %pB usa %s (definida por %pB), %pB usa vÃ­rgula flutuante ABI %d desconhecida"
 
-#: elfxx-mips.c:15466
+#: elfxx-mips.c:15878
 #, c-format
 msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
-msgstr "Aviso: %pB usa %s (definida por %pB), %pB usa %s"
+msgstr "aviso: %pB usa %s (definida por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15485
+#: elfxx-mips.c:15897
 #, 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"
+msgstr "aviso: %pB usa %s (definida por %pB), %pB usa MSA ABI %d desconhecida"
 
-#: elfxx-mips.c:15497
+#: elfxx-mips.c:15909
 #, 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"
+msgstr "aviso: %pB usa MSA ABI %d desconhecida (definida por %pB), %pB usa %s"
 
-#: elfxx-mips.c:15506
+#: elfxx-mips.c:15918
 #, 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"
+msgstr "aviso: %pB usa MSA ABI %d desconhecida (definida por %pB), %pB usa MSA ABI %d desconhecida"
 
-#: elfxx-mips.c:15568
+#: elfxx-mips.c:15980
 #, 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:15994
 #, 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:16047
 #, 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:16052
 #, 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:16056
 #, 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:16063
 #, 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:16067
 #, 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:16258
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr "-mips32r2 -mfp64 (12 callee-saved)"
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16320 elfxx-mips.c:16331
 msgid "None"
 msgstr "Nenhum"
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16322 elfxx-mips.c:16391
 msgid "Unknown"
 msgstr "Desconhecido"
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16402
 #, c-format
 msgid "Hard or soft float\n"
 msgstr "Flutuante rÃ­gido ou suave\n"
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16405
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr "Flutuante rÃ­gido (precisÃ£o dupla)\n"
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16408
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr "Flutuante rÃ­gido (precisÃ£o simples)\n"
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16411
 #, c-format
 msgid "Soft float\n"
 msgstr "Flutuante suave\n"
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16414
 #, 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:16417
 #, 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:16420
 #, 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:16423
 #, 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:16455
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16457
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16459
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16461
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16463
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi desconhecida]"
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16465
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16467
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16469
 #, c-format
 msgid " [no abi set]"
 msgstr " [sem abi definida]"
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16494
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [ISA desconhecida]"
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16514
 #, 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:1950
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr "extensÃ£o x ISA \"%s\" tem de ser definida com as versÃµes"
+
+#: elfxx-riscv.c:1956
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr "impossÃ­vel encontrar versÃµes predefinidas da extensÃ£o ISA \"%s\""
+
+#: elfxx-riscv.c:2063
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr "%s: a primeira extensÃ£o ISA tem de ser \"e\", \"i\" ou \"g\""
+
+#: elfxx-riscv.c:2087
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr "%s: extensÃ£o padrÃ£o ISA desconhecida ou classe de prefixo \"%c\""
+
+#: elfxx-riscv.c:2123
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr "%s: extensÃ£o ISA \"%s\" com prefixo invÃ¡lido termina com <number>p"
+
+#: elfxx-riscv.c:2147
+#, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr "%s: extensÃ£o ISA \"%s\" com prefixo desconhecida"
+
+#: elfxx-riscv.c:2171
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr "%s: extensÃ£o ISA com prefixo tem de separar com _"
+
+#: elfxx-riscv.c:2211
+#, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr "rv%de nÃ£o suporta a extensÃ£o \"h\""
+
+#: elfxx-riscv.c:2219
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr "rv%d nÃ£o suporta a extensÃ£o \"q\""
+
+#: elfxx-riscv.c:2226
+msgid "zcmp' is incompatible with `d' and `c', or `zcd' extension"
+msgstr "\"zcmp\" Ã© incompatÃ­vel com \"d\" e \"c\", ou com a extensÃ£o \"zcd\""
+
+#: elfxx-riscv.c:2233
+#, c-format
+msgid "rv%d does not support the `zcf' extension"
+msgstr "rv%d nÃ£o suporta a extensÃ£o \"zcf\""
+
+#: elfxx-riscv.c:2240
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr "\"zfinx\" Ã© conflito com a extensÃ£o \"f/d/q/zfh/zfhmin\""
+
+#: elfxx-riscv.c:2247
+msgid "`xtheadvector' is conflict with the `v/zve32x' extension"
+msgstr "\"xtheadvector\" Ã© conflito com a extensÃ£o \"v/zve32x\""
+
+#: elfxx-riscv.c:2256
+msgid "`zclsd' is conflict with the `c+f'/ `zcf' extension"
+msgstr "\"zclsd\" Ã© conflito com a extensÃ£o \"c+f\"/\"zcf\""
+
+#: elfxx-riscv.c:2261
+#, c-format
+msgid "rv%d does not support the `ssnpm' extension"
+msgstr "rv%d nÃ£o suporta a extensÃ£o \"ssnpm\""
+
+#: elfxx-riscv.c:2267
+#, c-format
+msgid "rv%d does not support the `smnpm' extension"
+msgstr "rv%d nÃ£o suporta a extensÃ£o \"smnpm\""
+
+#: elfxx-riscv.c:2273
+#, c-format
+msgid "rv%d does not support the `smmpm' extension"
+msgstr "rv%d nÃ£o suporta a extensÃ£o \"smmpm\""
+
+#: elfxx-riscv.c:2279
+#, c-format
+msgid "rv%d does not support the `sspm' extension"
+msgstr "rv%d nÃ£o suporta a extensÃ£o \"sspm\""
+
+#: elfxx-riscv.c:2285
+#, c-format
+msgid "rv%d does not support the `supm' extension"
+msgstr "rv%d nÃ£o suporta a extensÃ£o \"supm\""
+
+#: elfxx-riscv.c:2307
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr "extensÃµes zvl*b tÃªm de poder escrever ou a extensÃ£o \"v\" ou a \"zve\""
+
+#: elfxx-riscv.c:2364
+msgid "Warning: should use \"_\" to contact Profiles with other extensions"
+msgstr "Aviso: devia usar \"_\" para contactar Profiles com outras extensÃµes"
+
+#: elfxx-riscv.c:2405
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr "%s: cadeia ISA nÃ£o pode conter maiÃºsculas"
+
+#: elfxx-riscv.c:2439
+#, c-format
+msgid "%s: ISA string must begin with rv32, rv64 or Profiles"
+msgstr "%s: cadeia ISA tem de comeÃ§ar com rv32, rv64 ou Profiles"
+
+#: elfxx-riscv.c:2629
+msgid "internal: "
+msgstr "interno: "
+
+#: elfxx-riscv.c:2683
+#, c-format
+msgid "%sinvalid ISA extension ends with <number>p in %s `%s'"
+msgstr "%sextensÃ£o ISA invÃ¡lida, termina com <number>p em %s \"%s\""
+
+#: elfxx-riscv.c:2706
+#, c-format
+msgid "%sunknown ISA extension `%s' in %s `%s'"
+msgstr "%sextensÃ£o ISA desconhecida \"%s\" em %s \"%s\""
+
+#: elfxx-riscv.c:2717
+#, c-format
+msgid "%sdeprecated - extension `%s' in %s `%s'"
+msgstr "%sobsoleto - extensÃ£o%s\" em %s \"%s\""
+
+#: elfxx-riscv.c:2727
+#, c-format
+msgid "%scannot + base extension `%s' in %s `%s'"
+msgstr "%simpossÃ­vel + extensÃ£o base \"%s\" em %s \"%s\""
+
+#: elfxx-riscv.c:3059 elfxx-riscv.c:3343
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr "interno: INSN_CLASS_* inalcansÃ¡vel"
+
+#: elfxx-riscv.c:3093
+msgid "zicfiss' and `zcmop"
+msgstr "zicfiss\" e \"zcmop"
+
+#: elfxx-riscv.c:3106
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr "zihintntl\" e \"c\", ou \"zihintntl\" e \"zca"
+
+#: elfxx-riscv.c:3111 elfxx-riscv.c:3137
+msgid "c' or `zca"
+msgstr "c\" ou \"zca"
+
+#: elfxx-riscv.c:3119
+msgid "m' or `zmmul"
+msgstr "m\" ou \"zmmul"
+
+#: elfxx-riscv.c:3139
+msgid "f' and `c', or `zcf"
+msgstr "f\" e \"c\" ou \"zcf"
+
+#: elfxx-riscv.c:3141
+msgid "d' and `c', or `zcd"
+msgstr "d\" e \"c\" ou \"zcd"
+
+#: elfxx-riscv.c:3143
+msgid "f' or `zfinx"
+msgstr "f\" ou \"zfinx"
+
+#: elfxx-riscv.c:3145
+msgid "d' or `zdinx"
+msgstr "d\" ou \"zdinx"
+
+#: elfxx-riscv.c:3147
+msgid "q' or `zqinx"
+msgstr "q\" ou \"zqinx"
+
+#: elfxx-riscv.c:3149
+msgid "zfh' or `zhinx"
+msgstr "zfh\" ou \"zhinx"
+
+#: elfxx-riscv.c:3153
+msgid "zfhmin' or `zhinxmin"
+msgstr "zfhmin\" ou \"zhinxmin"
+
+#: elfxx-riscv.c:3164
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr "zfhmin\" e \"d\" ou \"zhinxmin\" e \"zdinx"
+
+#: elfxx-riscv.c:3175
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr "zfhmin\" e \"q\" ou \"zhinxmin\" e \"zqinx"
+
+#: elfxx-riscv.c:3183
+msgid "d' and `zfa"
+msgstr "d\" e \"zfa"
+
+#: elfxx-riscv.c:3191
+msgid "q' and `zfa"
+msgstr "q\" e \"zfa"
+
+#: elfxx-riscv.c:3199
+msgid "zfh' and `zfa"
+msgstr "zfh\" e \"zfa"
+
+#: elfxx-riscv.c:3209
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr "zfh\" e \"zfa\" ou \"zvfh\" e \"zfa"
+
+#: elfxx-riscv.c:3214
+msgid "zfh' or `zvfh"
+msgstr "zfh\" ou \"zvfh"
+
+#: elfxx-riscv.c:3230
+msgid "zbb' or `zbkb"
+msgstr "zbb\" ou \"zbkb"
+
+#: elfxx-riscv.c:3232
+msgid "zbc' or `zbkc"
+msgstr "zbc\" ou \"zbkc"
+
+#: elfxx-riscv.c:3240
+msgid "zknd' or `zkne"
+msgstr "zknd\" ou \"zkne"
+
+#: elfxx-riscv.c:3246
+msgid "v' or `zve64x' or `zve32x"
+msgstr "v\" ou \"zve64x\" ou \"zve32x"
+
+#: elfxx-riscv.c:3248
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr "v\" ou \"zve64d\" ou \"zve64f\" ou \"zve32f"
+
+#: elfxx-riscv.c:3250
+msgid "zvbb"
+msgstr "zvbb"
+
+#: elfxx-riscv.c:3252
+msgid "zvbc"
+msgstr "zvbc"
+
+#: elfxx-riscv.c:3258
+msgid "zvkb"
+msgstr "zvkb"
+
+#: elfxx-riscv.c:3260
+msgid "zvkg"
+msgstr "zvkg"
+
+#: elfxx-riscv.c:3262
+msgid "zvkned"
+msgstr "zvkned"
+
+#: elfxx-riscv.c:3264
+msgid "zvknha' or `zvknhb"
+msgstr "zvknha\" ou \"zvknhb"
+
+#: elfxx-riscv.c:3266
+msgid "zvksed"
+msgstr "zvksed"
+
+#: elfxx-riscv.c:3268
+msgid "zvksh"
+msgstr "zvksh"
+
+#: elfxx-riscv.c:3272
+msgid "zcb' and `zba"
+msgstr "zcb\" e \"zba"
+
+#: elfxx-riscv.c:3274
+msgid "zcb' and `zbb"
+msgstr "zcb\" e \"zbb"
+
+#: elfxx-riscv.c:3276
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr "zcb\" e \"zmmul\" ou \"zcb\" e \"m"
+
+#: elfxx-riscv.c:3284
+msgid "smctr' or `ssctr"
+msgstr "smctr\" ou \"ssctr"
+
+#: elfxx-riscv.c:3294
+msgid "h"
+msgstr "h"
+
+#: elfxx-riscv.c:3441
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: falha ao criar secÃ§Ã£o de propriedade GNU\n"
+
+#: elfxx-riscv.c:3485
+#, c-format
+msgid "error: %pB: <corrupt RISC-V used size: 0x%x>"
+msgstr "erro: %pB: <tamanho RISC-V corrompido usado: 0x%x>"
+
+#: elfxx-sparc.c:3028 elfnn-aarch64.c:5768
 #, 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."
+msgstr "%pB: impossÃ­vel ligar objectos %s e %s"
 
-#: elfxx-x86.c:578
+#: elfxx-x86.c:534 elfxx-x86.c:3586
 #, 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 "%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr "%P: %pB: cÃ³pia de relocalizaÃ§Ã£o contra sÃ­mbolo protegido nÃ£o-copiÃ¡vel \"%s\" em %pB\n"
 
 #: elfxx-x86.c:1027
+#, c-format
+msgid "%P: %pB: failed to allocate relative reloc record\n"
+msgstr "%P: %pB: falha ao alocar registo de reloc relativa\n"
+
+#: elfxx-x86.c:1388
+#, c-format
+msgid "%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: falha ao alocar mapa de bits 64-bit DT_RELR\n"
+
+#: elfxx-x86.c:1424
+#, c-format
+msgid "%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: falha ao alocar mapa de bits 32-bit DT_RELR\n"
+
+#: elfxx-x86.c:1563
+#, c-format
+msgid "%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr "%P: %pB: falha ao alocar memÃ³ria para a secÃ§Ã£o \"%pA\"\n"
+
+#: elfxx-x86.c:1750
+#, c-format
+msgid "%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr "%P: %pB: tamanho da secÃ§Ã£o compacta relativa reloc alterado: novo (%lu) != antigo (%lu)\n"
+
+#: elfxx-x86.c:1772
+#, c-format
+msgid "%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr "%P: %pB: falha ao alocar secÃ§Ã£o compacta de reloc relativa\n"
+
+#: elfxx-x86.c:2243
+#, c-format
+msgid "%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%P: %pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo absoluto \"%s\" na secÃ§Ã£o \"%pA\" nÃ£o Ã© permitida\n"
+
+#: elfxx-x86.c:2325
 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:3254
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (offset: 0x%v, informaÃ§Ã£o: 0x%v, addend: 0x%v) contra \"%s\" para secÃ§Ã£o \"%pA\" em %pB\n"
+
+#: elfxx-x86.c:3260
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (desvio: 0x%v, informaÃ§Ã£o: 0x%v) contra \"%s\" para secÃ§Ã£o \"%pA\" em %pB\n"
+
+#: elfxx-x86.c:3296
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed\n"
+msgstr "%pB: transiÃ§Ã£o TLS de %s para %s contra \"%s\" em 0x%v na secÃ§Ã£o \"%pA\" falhou\n"
+
+#: elfxx-x86.c:3305
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n"
+msgstr "%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra \"%ssÃ³ pode ser usada em ADD ou MOV\n"
+
+#: elfxx-x86.c:3313
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only\n"
+msgstr "%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra \"%s\" tem de ser usada sÃ³ em ADD ou MOVRS\n"
+
+#: elfxx-x86.c:3321
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only\n"
+msgstr "%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra \"%s\" sÃ³ pode ser usada em ADD, SUB ou MOV\n"
+
+#: elfxx-x86.c:3329
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only\n"
+msgstr "%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra \"%s\" sÃ³ pode ser usada em CALL indirecta sÃ³ com registo %s\n"
 
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:3338
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n"
+msgstr "%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra \"%ssÃ³ pode ser usada em LEA\n"
+
+#: elfxx-x86.c:3965
 #, 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:4178
+#, c-format
+msgid "%pB: x86 ISA needed: "
+msgstr "%pB: x86 ISA necessÃ¡ria: "
+
+#: elfxx-x86.c:4180
+#, c-format
+msgid "%pB: x86 ISA used: "
+msgstr "%pB: x86 ISA usado: "
 
-#: elfxx-x86.c:2614
+#: elfxx-x86.c:4202
 #, c-format
-msgid "%F%pA: failed to align section\n"
-msgstr "%F%pA: falha ao alinhar secÃ§Ã£o\n"
+msgid "<unknown: %x>"
+msgstr "<desconhecido: %x>"
+
+#: elfxx-x86.c:4338
+msgid "%P: failed to create %sn"
+msgstr "%P: falha ao criar %sn"
+
+#: elfxx-x86.c:4352
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: aviso: %s em falta\n"
+
+#: elfxx-x86.c:4353
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: erro: %s em falta\n"
+
+#: elfxx-x86.c:4459
+msgid "IBT and SHSTK properties"
+msgstr "propriedades IBT e SHSTK"
+
+#: elfxx-x86.c:4461
+msgid "IBT property"
+msgstr "propriedade IBT"
+
+#: elfxx-x86.c:4463
+msgid "SHSTK property"
+msgstr "propriedade SHSTK"
+
+#: elfxx-x86.c:4468
+msgid "LAM_U48 property"
+msgstr "propriedade LAM_U48"
+
+#: elfxx-x86.c:4473
+msgid "LAM_U57 property"
+msgstr "propriedade LAM_U57"
 
-#: elfxx-x86.c:2760
-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
-msgid "%F%P: failed to create GOT sections\n"
-msgstr "%F%P: falha ao criar secÃ§Ãµes GOT\n"
-
-#: elfxx-x86.c:2787
-msgid "%F%P: failed to create ifunc sections\n"
-msgstr "%F%P: falha ao criar secÃ§Ãµes ifunc\n"
-
-#: elfxx-x86.c:2828
-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
-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
-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
-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
-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
-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:4651
+msgid "%P: failed to create VxWorks dynamic sections\n"
+msgstr "%P: falha ao criar secÃ§Ãµes dinÃ¢micas VxWorks \n"
+
+#: elfxx-x86.c:4660
+msgid "%P: failed to create GOT sections\n"
+msgstr "%P: falha ao criar secÃ§Ãµes GOT\n"
+
+#: elfxx-x86.c:4678
+msgid "%P: failed to create ifunc sections\n"
+msgstr "%P: falha ao criar secÃ§Ãµes ifunc\n"
+
+#: elfxx-x86.c:4717
+msgid "%P: failed to create GOT PLT section\n"
+msgstr "%P: falha ao criar secÃ§Ã£o GOT PLT\n"
+
+#: elfxx-x86.c:4734
+msgid "%P: failed to create IBT-enabled PLT section\n"
+msgstr "%P: falha ao criar secÃ§Ã£o IBT-enabled PLT\n"
+
+#: elfxx-x86.c:4752
+msgid "%P: failed to create PLT .eh_frame section\n"
+msgstr "%P: falha ao criar secÃ§Ã£o PLT .eh_frame\n"
+
+#: elfxx-x86.c:4763
+msgid "%P: failed to create GOT PLT .eh_frame section\n"
+msgstr "%P: falha ao criar secÃ§Ã£o GOT PLT .eh_frame\n"
+
+#: elfxx-x86.c:4775
+msgid "%P: failed to create the second PLT .eh_frame section\n"
+msgstr "%P: falha ao criar segunda secÃ§Ã£o PLT .eh_frame\n"
+
+#: elfxx-x86.c:4790
+msgid "%P: failed to create PLT .sframe section\n"
+msgstr "%P: falha ao criar secÃ§Ã£o PLT .sframe\n"
+
+#: elfxx-x86.c:4806
+msgid "%P: failed to create second PLT .sframe section\n"
+msgstr "%P: falha ao criar segunda secÃ§Ã£o PLT .sframe\n"
+
+#: elfxx-x86.c:4819
+msgid "%P: failed to create PLT GOT .sframe section\n"
+msgstr "%P: falha ao criar secÃ§Ã£o PLT GOT .sframe\n"
+
+#: elfxx-x86.c:4859
+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
@@ -5115,430 +6168,470 @@ 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:580
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr "%pB: erro interno em ihex_read_section"
 
-#: ihex.c:619
+#: ihex.c:613
 #, 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:784
 #, 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:842
 #, 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:1260
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr "%pB: impossÃ­vel obter secÃ§Ã£o %pA descomprimida"
 
-#: libbfd.c:1101
-#, 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:1272
 #, c-format
-msgid "Deprecated %s called\n"
-msgstr "%s obsoleto chamado\n"
+msgid "%pB: mapped section %pA has non-NULL buffer"
+msgstr "%pB: secÃ§Ã£o mapeada %pA tem buffer nÃ£o-NULL"
 
-#: linker.c:1697
+#: linker.c:1749
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr "%pB: sÃ­mbolo indirecto \"%s\" para \"%s\" Ã© um ciclo"
 
-#: linker.c:2567
+#: linker.c:1829
+msgid "%P: %pB: note: the message above does not take linker garbage collection into account\n"
+msgstr "%P: %pB: nota: a mensagem acima nÃ£o leva em conta a recolha de lixo do linker\n"
+
+#: linker.c:2663
 #, c-format
 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"
+msgstr "tentativa de fazer ligaÃ§Ã£o relocalizÃ¡vel com entrada %s e saÃ­da %s"
 
-#: linker.c:2853
+#: linker.c:2942
 #, 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:2952 linker.c:2962
 #, 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:2976 linker.c:2984
 #, 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:2993
 #, 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:3517
 #, 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:3520
 #, 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:169 mach-o-arm.c:301
+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:185
+#, 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:200
+#, 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:215
+#, 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:230
+#, 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:262
+#, 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:332
+#, 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:642
 #, c-format
 msgid "<unknown mask flags>"
 msgstr "<bandeiras de mÃ¡scara desconhecidas>"
 
-#: mach-o.c:687
+#: mach-o.c:697
 msgid " (<unknown>)"
-msgstr "<desconhecido>"
+msgstr " <desconhecido>"
 
-#: mach-o.c:698
+#: mach-o.c:709
 #, c-format
 msgid " MACH-O header:\n"
-msgstr "CabeÃ§alho MACH-0:\n"
+msgstr " CabeÃ§alho MACH-0:\n"
 
-#: mach-o.c:699
+#: mach-o.c:710
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr "   magia:      %#lx\n"
 
-#: mach-o.c:700
+#: mach-o.c:711
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr "   tipocpu:    %#lx (%s)\n"
 
-#: mach-o.c:702
+#: mach-o.c:713
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr "   subtipocpu: %#lx%s\n"
 
-#: mach-o.c:704
+#: mach-o.c:715
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr "   ficheiro: %#lx\n"
 
-#: mach-o.c:705
+#: mach-o.c:716
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr "   ncmds       : %#lx\n"
 
-#: mach-o.c:706
+#: mach-o.c:717
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr "   tamcmds:    %#lx\n"
 
-#: mach-o.c:707
+#: mach-o.c:718
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr "   bandeiras  : %#lx\n"
 
-#: mach-o.c:708
+#: mach-o.c:719
 #, c-format
 msgid "   version:    %x\n"
 msgstr "   versÃ£o:     %x\n"
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:754
 #, 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:923
 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:1515
+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:2157
 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:2605
 #, 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:2697
 #, 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:2802
 #, 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:2986
 #, 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:3128
 #, 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:3654
 #, 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"
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_32: valor de alinhamento muito grande: %#lx"
 
-#: mach-o.c:3671
+#: mach-o.c:3697
 #, 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"
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_64: valor de alinhamento muito grande: %#lx"
 
-#: mach-o.c:3722
+#: mach-o.c:3748
 #, 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:3767
 #, 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:3850
 #, 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:3869
 #, 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:5068
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr "%pB: comando de carga %#x desconhecido"
 
-#: mach-o.c:5122
+#: mach-o.c:5266
 #, 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:5391
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr "valor de cabeÃ§alho byte-order %#x desconhecido"
 
-#: merge.c:878
+#: merge.c:1126
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr "%pB: acesso alÃ©m do fim da secÃ§Ã£o unida (%<PRId64>)"
 
-#: mmo.c:476
-#, c-format
-msgid "%pB: no core to allocate section name %s"
-msgstr "%pB: sem nÃºcleo para alocar nome de secÃ§Ã£o %s"
-
-#: mmo.c:541
+#: mmo.c:535
 #, c-format
 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:951
 #, 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:1246
 #, 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:1393
 #, 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:1409
+#, c-format
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr "%pB: o nome do sÃ­mbolo excede o tamanho mÃ¡ximo indicado de %d"
+
+#: mmo.c:1638
 #, 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:1649
 #, 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:1693
 #, 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:1744
 #, 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:1793
 #, 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:1804
 #, 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:1829
 #, 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:1858
 #, 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:1880
 #, 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:1895
 #, 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:2007
 #, 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:2044
 #, 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:2058
 #, 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:2768
 #, 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:3007
 #, 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"
+msgid "%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr "%pB: mÃ¡ definiÃ§Ã£o de sÃ­mbolo: \"Main\" definido como %<PRIx64>, em vez do endereÃ§o inicial %<PRIx64>\n"
 
-#: mmo.c:3082
+#: mmo.c:3106
 #, 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:3152
 #, 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:3205
 #, 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:3256
 #, 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:3263
 #, 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:3268
 #, 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>"
 
-#: osf-core.c:127
+#: osf-core.c:128
 #, c-format
 msgid "unhandled OSF/1 core file section type %d"
-msgstr "Tipo de secÃ§Ã£o %d de ficheiro nÃºcleo OSF/1 nÃ£o gerida"
+msgstr "tipo de secÃ§Ã£o %d de ficheiro nÃºcleo OSF/1 nÃ£o gerida"
 
-#: pef.c:527
+#: pdp11.c:1573
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: o sÃ­mbolo indica sobreposiÃ§Ã£o (nÃ£o suportado)"
+
+#: pef.c:534
 #, 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:176 pei-x86_64.c:230 pei-x86_64.c:240 pei-x86_64.c:265
+#: pei-x86_64.c:277 pei-x86_64.c:291 pei-x86_64.c:309 pei-x86_64.c:321
+#: pei-x86_64.c:333
 #, 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:354
 #, 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:405 pei-x86_64.c:415 pei-x86_64.c:424
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr "aviso: secÃ§Ã£o xdata corrupta\n"
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:479
 #, 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:565
 #, 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:572
 #, 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:587
 #, 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:596
 #, c-format
 msgid ""
 "\n"
@@ -5547,12 +6640,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:599
 #, 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:724
 #, c-format
 msgid ""
 "\n"
@@ -5561,46 +6654,89 @@ msgstr ""
 "\n"
 "Despejo de %s\n"
 
-#. XXX code yet to be written.
-#: peicode.h:775
-#, c-format
-msgid "%pB: unhandled import type; %x"
-msgstr "%pB: tipo de importaÃ§Ã£o nÃ£o gerido; %x"
-
-#: peicode.h:781
+#: peicode.h:823
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr "%pB: tipo de importaÃ§Ã£o nÃ£o reconhecido; %x"
 
-#: peicode.h:796
+#: peicode.h:840
+#, c-format
+msgid "%pB: missing import name for IMPORT_NAME_EXPORTAS for %s"
+msgstr "%pB: nome de importaÃ§Ã£o de IMPORT_NAME_EXPORTAS em falta para %s"
+
+#: peicode.h:849
 #, 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:1299
 #, 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:1312
 #, 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:1330
 #, 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:1356
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
-msgstr "%pB: cadeia nÃ£-null terminada em ficheiro objecto ILF."
+msgstr "%pB: cadeia nÃ£-null terminada em ficheiro objecto ILF"
 
-#: peicode.h:1330
+#: peicode.h:1427
 #, 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."
+msgstr "%pB: erro: Debug Data termina apÃ³s o fim da pasta de depuraÃ§Ã£o"
+
+#: peicode.h:1599
+#, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr "%pB: a ajustar SectionAlignment invÃ¡lido"
+
+#: peicode.h:1609
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr "%pB: a ajustar FileAlignment invÃ¡lido"
+
+#: peicode.h:1617
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr "%pB: NumberOfRvaAndSizes invÃ¡lido"
+
+#: plugin.c:195
+#, c-format
+msgid "%s: failed to open to extract object only section: %s"
+msgstr "%s: falha ao abrir para extracÃ§Ã£o secÃ§Ã£o sÃ³ de objecto: %s"
+
+#: plugin.c:212
+#, c-format
+msgid "%pB: invalid file to extract object only section: %s"
+msgstr "%pB: ficheiro invÃ¡lido para extrair secÃ§Ã£o sÃ³ de objecto: %s"
+
+#: plugin.c:225
+#, c-format
+msgid "%pB: failed to extract object only section: %s"
+msgstr "%pB: falha ao extrair secÃ§Ã£o sÃ³ de objecto: %s"
+
+#: plugin.c:245
+#, c-format
+msgid "%pB: failed to open object only section: %s"
+msgstr "%pB: falha ao abrir secÃ§Ã£o sÃ³ de objecto: %s"
+
+#: plugin.c:255
+#, c-format
+msgid "%pB: failed to get symbol table in object only section: %s"
+msgstr "%pB: falha ao obter tabela de sÃ­mbolos em secÃ§Ã£o sÃ³ de objecto: %s"
+
+#: plugin.c:411
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr "estrutura da extensÃ£o: sem descritores de ficheiro. Tente usar menos objectos/arquivos\n"
 
 #: ppcboot.c:392
 #, c-format
@@ -5655,42 +6791,43 @@ 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:8423
 msgid "INPUT_SECTION_FLAGS are not supported"
-msgstr "INPUT_SECTION_FLAGS nÃ£o sÃ£o suportadas."
-
-#: reloc.c:8333
-#, 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
-#, 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
-#, 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"
+msgstr "INPUT_SECTION_FLAGS nÃ£o sÃ£o suportadas"
 
-#: reloc.c:8491
+#: reloc.c:8689
 #, 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:8693
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
-msgstr "EstarÃ¡ esta versÃ£o do linker - %s - fora do prazo?"
+msgstr "estarÃ¡ esta versÃ£o do linker - %s - fora do prazo?"
 
 #: rs6000-core.c:471
 #, c-format
 msgid "%pB: warning core file truncated"
 msgstr "%pB: aviso: ficheiro nÃºcleo truncado"
 
-#: som.c:5478
+#: som.c:3002
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr "%pB(%pA+%#<PRIx64>): %s desvio de relocalizaÃ§Ã£o fora de ordem"
+
+#: som.c:3015
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr "%pB(%pA+%#<PRIx64>): %s desvio de relocalizaÃ§Ã£o fora do intervalo"
+
+#. User has specified a subspace without its containing space.
+#: som.c:5403
+#, c-format
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr "%pB[%pA]: sem secÃ§Ã£o de saÃ­da para espaÃ§o %pA"
+
+#: som.c:5450
 #, c-format
 msgid ""
 "\n"
@@ -5699,7 +6836,7 @@ msgstr ""
 "\n"
 "Exec Auxiliary Header\n"
 
-#: som.c:5787
+#: som.c:5759
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers nÃ£o implementado"
 
@@ -5713,83 +6850,92 @@ 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"
 
-#: stabs.c:279
+#: stabs.c:308
 #, c-format
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
-msgstr "%pB(%pA+%#lx): entrada Stabs tem Ã­ndice de cadeia invÃ¡lido."
+msgstr "%pB(%pA+%#lx): entrada Stabs tem Ã­ndice de cadeia invÃ¡lido"
 
-#: syms.c:1091
+#: syms.c:1121
 msgid "unsupported .stab relocation"
-msgstr "RelocalizaÃ§Ã£o .stab nÃ£o suportada"
+msgstr "relocalizaÃ§Ã£o .stab nÃ£o suportada"
 
 #: vms-alpha.c:479
 msgid "corrupt EIHD record - size is too small"
-msgstr "Registo EIHD corrupto - tamanho muito pequeno"
+msgstr "registo EIHD corrupto - tamanho muito pequeno"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:665
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
-msgstr "ImpossÃ­vel ler registo EIHS no desvio %#x"
+msgstr "impossÃ­vel ler registo EIHS no desvio %#x"
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr "registo muito pequeno para o tamanho do nome do sÃ­mbolo"
+
+#: vms-alpha.c:1190
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
-msgstr "Registo EGSD corrupto: tamanho (%#x) muito pequeno"
+msgstr "registo EGSD corrupto: tamanho (%#x) muito pequeno"
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1214
 #, 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:1224
 #, 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:1366
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
-msgstr "Registo EGSD corrupto: campo psindx muito grande (%#lx)"
+msgstr "registo EGSD corrupto: campo psindx muito grande (%#lx)"
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1441
 #, c-format
 msgid "unknown EGSD subtype %d"
-msgstr "Sub-tipo EGSD %d desconhecido"
+msgstr "sub-tipo EGSD %d desconhecido"
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1474
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
-msgstr "Transporte de stack (%d) em _bfd_vms_push"
+msgstr "transporte de stack (%d) em _bfd_vms_push"
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1488
 msgid "stack underflow in _bfd_vms_pop"
-msgstr "Sub-transporte de stack em _bfd_vms_pop"
+msgstr "sub-transporte de stack em _bfd_vms_pop"
+
+#: vms-alpha.c:1562
+#, 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"
+msgstr "valor vms corrupto"
 
-#: vms-alpha.c:1866
+#: vms-alpha.c:1927
 msgid "corrupt ETIR record encountered"
-msgstr "Encontrado registo ETIR corrupto"
+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 +6945,1469 @@ 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"
+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!"
+msgstr "mÃ³dulo objecto NÃƒO livre de erros!"
 
-#: vms-alpha.c:3831
+#: vms-alpha.c:4006
 #, 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:4058 vms-alpha.c:4286
 #, c-format
 msgid "size error in section %pA"
-msgstr "Erro de tamanho na secÃ§Ã£o %pA"
+msgstr "erro de tamanho na secÃ§Ã£o %pA"
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4229
 msgid "spurious ALPHA_R_BSR reloc"
-msgstr "RelocalizaÃ§Ã£o ALPHA_R_BSR espÃºria"
+msgstr "relocalizaÃ§Ã£o ALPHA_R_BSR espÃºria"
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4272
 #, c-format
 msgid "unhandled relocation %s"
-msgstr "RelocalizaÃ§Ã£o %s nÃ£o gerida"
+msgstr "relocalizaÃ§Ã£o %s nÃ£o gerida"
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4637
 #, c-format
 msgid "unknown source command %d"
-msgstr "Comando fonte %d desconhecido"
+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:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804
+#: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842
+#: vms-alpha.c:4847
 #, c-format
 msgid "%s not implemented"
 msgstr "%s: nÃ£o implementado"
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4883
 #, 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:5322
+msgid "corrupt reloc record"
+msgstr "registo de reloc corrompido"
+
+#: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405
+#: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443
 #, c-format
 msgid "unknown reloc %s + %s"
-msgstr "Reloc %s + %s desconhecida"
+msgstr "reloc %s + %s desconhecida"
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5502
 #, c-format
 msgid "unknown reloc %s"
-msgstr "Reloc %s desconhecida"
+msgstr "reloc %s desconhecida"
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5516
 msgid "invalid section index in ETIR"
-msgstr "Ã�ndice de secÃ§Ã£o invÃ¡lido em ETIR"
+msgstr "Ã­ndice de secÃ§Ã£o invÃ¡lido em ETIR"
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5525
 msgid "relocation for non-REL psect"
-msgstr "RelocalizaÃ§Ã£o para psect nÃ£o-REL"
+msgstr "relocalizaÃ§Ã£o para psect nÃ£o-REL"
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5578
 #, c-format
 msgid "unknown symbol in command %s"
-msgstr "SÃ­mbolo desconhecido em comando %s"
+msgstr "sÃ­mbolo desconhecido em comando %s"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5996
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr "reloc (%d) Ã© *UNKNOWN*"
 
-#: vms-alpha.c:5752
+#: vms-alpha.c:6113
 #, c-format
-msgid "  EMH %u (len=%u): "
-msgstr "  EMH %u (tam=%u): "
+msgid "  EMH %d (len=%u): "
+msgstr "  EMH %d (tam=%u): "
 
-#: vms-alpha.c:5757
+#: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216
 #, 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"
+msgid "   Error: %s min length is %u\n"
+msgstr "   Erro: tamanho mÃ­nimo de %s Ã© %u\n"
 
-#: vms-alpha.c:5774
-#, 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:6141
 #, c-format
 msgid "Module header\n"
 msgstr "CabeÃ§alho de mÃ³dulo\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:6142
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   nÃ­vel de estrutura: %u\n"
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:6143
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   tam. mÃ¡x registo: %u\n"
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:6149
 #, 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:6155
 #, 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:6158
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   nome de mÃ³dulo : %.*s\n"
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:6162
 #, 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:6168
 #, 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:6171
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   versÃ£o de mÃ³dulo: %.*s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:6174
 #, 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:6176
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   data compilaÃ§Ã£o: %.17s\n"
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:6181
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Nome do processador de linguagem\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:6182
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   nome linguagem: %.*s\n"
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6186
 #, c-format
 msgid "Source Files Header\n"
 msgstr "CabeÃ§alho de ficheiros fonte\n"
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6187
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   ficheiro: %.*s\n"
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6191
 #, c-format
 msgid "Title Text Header\n"
 msgstr "CabeÃ§alho do texto de tÃ­tulo\n"
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6192
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   tÃ­tulo: %.*s\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6196
 #, c-format
 msgid "Copyright Header\n"
 msgstr "CabeÃ§alho de copyright\n"
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6197
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   copyright: %.*s\n"
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6201
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "sub-tipo emh %u nÃ£o gerido\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6211
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (tam=%u):\n"
 
-#: vms-alpha.c:5852
-#, 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:6221
 #, 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:6223
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   cÃ³digo de conclusÃ£o: %u\n"
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6228
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   transferir band end: 0x%02x\n"
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6229
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   transferir psect end.: %u\n"
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6231
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   transferir endereÃ§o: 0x%08x\n"
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6240
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6242
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6244
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6246 vms-alpha.c:6267
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6248
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6250
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6252
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6254
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6261
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6263
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6265
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6269
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6271
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6273
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6275
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6277
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6279
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6281
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6283
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6285
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6294
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (tam=%u):\n"
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6309
 #, 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:6315 vms-alpha.c:6610
 #, c-format
-msgid "   Error: length larger than remaining space in record\n"
-msgstr "   Erro: tamanho maior que o espaÃ§o restante no registo\n"
+msgid "   Erroneous length\n"
+msgstr "   Tamanho errÃ³neo\n"
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6328
 #, 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:6329 vms-alpha.c:6349
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   alinhamento  : 2**%u\n"
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6330 vms-alpha.c:6350
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   bandeiras  : 0x%04x"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6334
 #, 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:6336 vms-alpha.c:6402 vms-alpha.c:6470
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   nome       : %.*s\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6348
 #, 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:6354
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   aloc. (tam)   : %u (0x%08x)\n"
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6355
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   desvio imagem : 0x%08x\n"
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6357
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   desvio symvec : 0x%08x\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6360
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   nome          : %.*s\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6376
 #, 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:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   bandeiras: 0x%04x"
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6380
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   desvio psect: 0x%08x\n"
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6384
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   end. de cÃ³d.: 0x%08x\n"
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6386
 #, 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:6389 vms-alpha.c:6489 vms-alpha.c:6512
 #, 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:6392 vms-alpha.c:6492 vms-alpha.c:6515
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   nome        : %.*s\n"
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6400
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM - referÃªncia de sÃ­mbolo Global\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6415
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC - verificaÃ§Ã£o Ident Consistency\n"
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6416
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   bandeiras     : 0x%08x"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6420
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   comparaÃ§Ã£o id : %x\n"
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6422
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   severidade do erro: %x\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6426
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   nome entidade : %.*s\n"
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6432
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   nome objecto  : %.*s\n"
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6441
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   ident. binÃ¡ria: 0x%08x\n"
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6445
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   ident. ascii  : %.*s\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6457
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG - definiÃ§Ã£o Universal\n"
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6461
 #, 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:6463
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   ponto de entrada: 0x%08x\n"
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6465
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   descriÃ§Ã£o de procedimento: 0x%08x\n"
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6467
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ã­ndice psect: %u\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6481
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV - definiÃ§Ã£o de sÃ­mbolo Vectored\n"
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6485
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   vector      : 0x%08x\n"
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6487 vms-alpha.c:6510
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   desvio psect: %u\n"
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6504
 #, 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:6508
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   mÃ¡scara de versÃ£o: 0x%08x\n"
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6521
 #, 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:6560
 #, 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:6564
 #, 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:6569
 #, 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:6575
 #, 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:6580
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    nome global: %.*s\n"
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6592
 #, c-format
-msgid "  %s (len=%u+%u):\n"
-msgstr "  %s (tam=%u+%u):\n"
+msgid "  %s (len=%u):\n"
+msgstr "  %s (tam=%u):\n"
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6615
 #, c-format
-msgid "   (type: %3u, size: 4+%3u): "
-msgstr "   (tipo: %3u, tam.: 4+%3u): "
+msgid "   (type: %3u, size: %3u): "
+msgstr "   (tipo: %3u, tamanho: %3u): "
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6621
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (stack global) %.*s\n"
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6625
 #, c-format
-msgid "STA_LW (stack longword) 0x%08x\n"
-msgstr "STA_LW (stack longword) 0x%08x\n"
+msgid "STA_LW (stack longword)"
+msgstr "STA_LW (longword da pilha)"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6631
 #, c-format
-msgid "STA_QW (stack quadword) 0x%08x %08x\n"
-msgstr "STA_QW (stack quadword) 0x%08x %08x\n"
+msgid "STA_QW (stack quadword)"
+msgstr "STA_QW (quadword da pilha)"
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6638
 #, 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:6641
 #, 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:6647
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (stack literal)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6650
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (stack mÃ³dulo)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6653
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (comparar argumento de procedimento)\n"
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6657
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (armazenar byte)\n"
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6660
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (armazenar word)\n"
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6663
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (armazenar longword)\n"
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6666
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (armazenar quadword)\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6673
 #, 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:6682
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (armazenar global) %.*s\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6687
 #, 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:6691
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (armazenar ramo relativo)\n"
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6694
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (armazenar ramo absoluto)\n"
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6697
 #, 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:6704
 #, 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:6713
 #, 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:6717
 #, 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:6720
 #, 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:6723
 #, 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:6727
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (sem-operaÃ§Ã£o)\n"
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6730
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (adicionar)\n"
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6733
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (subtrair)\n"
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6736
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (multiplicar)\n"
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6739
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (dividir)\n"
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6742
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (e lÃ³gico)\n"
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6745
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (ou inclusivo lÃ³gico)\n"
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6748
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (ou exclusivo lÃ³gico)\n"
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6751
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (negar)\n"
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6754
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (complementar)\n"
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6757
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (inserir campo)\n"
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6760
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (mudanÃ§a aritmÃ©tica)\n"
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6763
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (mudanÃ§a nÃ£o assinada)\n"
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6766
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (rodar)\n"
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6769
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (seleccionar)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6772
 #, 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:6775
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (definir um literal)\n"
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6779
 #, 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:6783
 #, 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:6787
 #, 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:6794
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   assinatura: %.*s\n"
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6800
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (armazenar global condicional)\n"
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6803
 #, 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:6808
 #, 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:6811
 #, 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:6816
 #, 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:6820
 #, 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:6827
 #, 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:6831
 #, 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:6835
 #, 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:6839
 #, 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:6843
 #, 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:6847
 #, 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:6851
 #, 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:6855
 #, 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:6860
 #, 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:6864
 #, 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:6868
 #, 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:6874
 #, 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:6879
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (definir localizaÃ§Ã£o)\n"
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6882
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (definir localizaÃ§Ã£o)\n"
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6885
 #, 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:6888 vms-alpha.c:7316 vms-alpha.c:7477
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*nÃ£o gerido*\n"
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6913
 #, c-format
-msgid "cannot read GST record length\n"
-msgstr "impossÃ­vel ler tamanho do registo GST\n"
+msgid "cannot read GST record header\n"
+msgstr "impossÃ­vel ler cabeÃ§alho de registo GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6936
 #, 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:6960
 #, c-format
-msgid "cannot read GST record header\n"
-msgstr "impossÃ­vel ler cabeÃ§alho de registo GST\n"
+msgid "corrupted GST\n"
+msgstr "GST corrompido\n"
 
-#: vms-alpha.c:6537
-#, c-format
-msgid " corrupted GST\n"
-msgstr " GST corrompido\n"
-
-#: vms-alpha.c:6545
+#: vms-alpha.c:6973
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "impossÃ­vel ler registo GST\n"
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:7000
 #, 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:7025
 #, 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:7039
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   bitmap: 0x%08x (total: %u):\n"
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:7046
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:7073
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  imagem %u (%u entradas)\n"
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:7079
 #, 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:7102
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  imagem %u (%u entradas), desvios:\n"
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:7109
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:7235
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 bits *nÃ£o geridos*\n"
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:7240
 #, 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:7251
 #, 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:7258
 #, 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:7263
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "arsize: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7267
 #, c-format
 msgid "Strides:\n"
 msgstr "Passos:\n"
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7281
 #, c-format
 msgid "Bounds:\n"
 msgstr "VÃ­nculos:\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7288
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: inferior: %u, superior: %u\n"
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7302
 #, 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:7309
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "base: %u, pos: %u\n"
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7335
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "vflags: 0x%02x, valor: 0x%08x "
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7342
 #, c-format
 msgid "(no value)\n"
 msgstr "(sem valor)\n"
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7345
 #, c-format
 msgid "(not active)\n"
 msgstr "(nÃ£o activo)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7348
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(nÃ£o alocada)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7351
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(descritor)\n"
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7356
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(valor inicial)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7359
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(spec de valor segue)\n"
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7362
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(no desvio de bit %u)\n"
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7366
 #, 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:7373
 msgid "literal"
 msgstr "literal"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7376
 msgid "address"
 msgstr "endereÃ§o"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7379
 msgid "desc"
 msgstr "desc"
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7382
 msgid "reg"
 msgstr "reg"
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7403
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "tam: %2u, tipo: %2u "
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7411
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "atÃ³mico, tipo=0x%02x %s\n"
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7416
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "indirecto, definido em 0x%08x\n"
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7420
 #, c-format
 msgid "typed pointer\n"
 msgstr "ponteiro com tipo\n"
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7424
 #, c-format
 msgid "pointer\n"
 msgstr "ponteiro\n"
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7435
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr "matriz, dim: %u, bitmap: "
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7450
 #, c-format
 msgid "array descriptor:\n"
 msgstr "descritor de matriz:\n"
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7461
 #, c-format
 msgid "type spec for element:\n"
 msgstr "tipo de  spec para elemento:\n"
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7463
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr "tipo de spec para subscrito %u:\n"
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7488
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Tabela de sÃ­mbolos de depuraÃ§Ã£o:\n"
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7499
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "impossÃ­vel ler cabeÃ§alho DST\n"
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7505
 #, 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:7524
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "impossÃ­vel ler sÃ­mbolo DST\n"
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7568
 #, c-format
 msgid "standard data: %s\n"
 msgstr "dados standard: %s\n"
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7572 vms-alpha.c:7696
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    nome: %.*s\n"
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7580
 #, c-format
 msgid "modbeg\n"
 msgstr "modbeg\n"
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7584
 #, 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:7594 vms-alpha.c:7963
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   nome mÃ³dulo: %.*s\n"
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7601
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   compilador : %.*s\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7608
 #, c-format
 msgid "modend\n"
 msgstr "modend\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7615
 msgid "rtnbeg\n"
 msgstr "rtnbeg\n"
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7619
 #, 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:7628
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    nome da rotina: %.*s\n"
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7639
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "rtnend: tamanho 0x%08x\n"
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7649
 #, 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:7659
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "epÃ­logo: bandeiras: %u, total: %u\n"
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7674
 #, 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:7686
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "blkend: tamanho: 0x%08x\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7692
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "typspec (tam: %u)\n"
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7708
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "septyp, nome: %.*s\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7725
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "recbeg: nome: %.*s\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7731
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "    tam: %u bits\n"
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7737
 #, c-format
 msgid "recend\n"
 msgstr "recend\n"
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7742
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "enumbeg, tam: %u, nome: %.*s\n"
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7748
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "enumelt, nome: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7754
 #, c-format
 msgid "enumend\n"
 msgstr "enumend\n"
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7761
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "etiqueta, nome: %.*s\n"
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7764
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "    endereÃ§o: 0x%08x\n"
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7776
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "intervalo descontÃ­nuo (nr: %u)\n"
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7783
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    endereÃ§o: 0x%08x, tamanho: %u\n"
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7794
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "nÂº linha  (tam: %u)\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7813
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7822
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7830
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7838
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7846
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7853
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7860
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7867
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7873
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7880
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7882
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7889
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7891
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7897
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7901
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x line: %5u\n"
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7906
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    cmd *nÃ£o gerido* %u\n"
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7921
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "fonte (tam: %u)\n"
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7940
 #, 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:7945
 #, 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:7957
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   nomeficheiro: %.*s\n"
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7973
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7980 vms-alpha.c:7987
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7994 vms-alpha.c:8001
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:8008 vms-alpha.c:8015
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:8019
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:8023
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   cmd *nÃ£o gerido* %u\n"
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:8035
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "tipo DST *nÃ£o gerido* %u\n"
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:8067
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "impossÃ­vel ler EIHD\n"
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:8071
 #, 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:8075
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " majorid: %u, minorid: %u\n"
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:8083
 msgid "executable"
 msgstr "executÃ¡vel"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:8086
 msgid "linkable image"
 msgstr "imagem ligÃ¡vel"
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:8093
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " tipo de imagem: %u (%s)"
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:8099
 msgid "native"
 msgstr "nativo"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:8102
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:8109
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", sub-tipo: %u (%s)\n"
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:8116
 #, 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:8120
 #, c-format
 msgid " fixup info rva: "
 msgstr " fixup info rva: "
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:8122
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", vector sÃ­mbolo rva: "
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:8125
 #, c-format
 msgid ""
 "\n"
@@ -7269,653 +8416,750 @@ msgstr ""
 "\n"
 " matriz de versÃ£o off: %u\n"
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:8130
 #, 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:8136
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " bands linker: %08x:"
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:8167
 #, 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:8173
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:8180
 #, 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:8183
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", aliÃ¡s: %u\n"
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:8191
 #, 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:8195
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "impossÃ­vel ler cabeÃ§alho EIHVN\n"
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:8205
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "impossÃ­vel ler versÃ£o EIHVN\n"
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:8208
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:8212
 msgid "BASE_IMAGE       "
 msgstr "BASE_IMAGE       "
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:8215
 msgid "MEMORY_MANAGEMENT"
 msgstr "MEMORY_MANAGEMENT"
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:8218
 msgid "IO               "
 msgstr "IO               "
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:8221
 msgid "FILES_VOLUMES    "
 msgstr "FILES_VOLUMES    "
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:8224
 msgid "PROCESS_SCHED    "
 msgstr "PROCESS_SCHED    "
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:8227
 msgid "SYSGEN           "
 msgstr "SYSGEN           "
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:8230
 msgid "CLUSTERS_LOCKMGR "
 msgstr "CLUSTERS_LOCKMGR "
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:8233
 msgid "LOGICAL_NAMES    "
 msgstr "LOGICAL_NAMES    "
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:8236
 msgid "SECURITY         "
 msgstr "SECURITY         "
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:8239
 msgid "IMAGE_ACTIVATOR  "
 msgstr "IMAGE_ACTIVATOR  "
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:8242
 msgid "NETWORKS         "
 msgstr "NETWORKS         "
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:8245
 msgid "COUNTERS         "
 msgstr "COUNTERS         "
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:8248
 msgid "STABLE           "
 msgstr "STABLE           "
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:8251
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:8254
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:8257
 msgid "VOLATILE         "
 msgstr "VOLATILE         "
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:8260
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:8263
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:8266
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESSING "
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:8269
 msgid "GALAXY           "
 msgstr "GALAXY           "
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:8272
 msgid "*unknown*        "
 msgstr "*desconhecido*   "
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:8288 vms-alpha.c:8575
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "impossÃ­vel ler EIHA\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:8291
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "ActivaÃ§Ã£o da imagem:  (tam=%u)\n"
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:8294
 #, 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:8298
 #, 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:8302
 #, 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:8306
 #, 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:8310
 #, 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:8321
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "impossÃ­vel ler EIHI\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:8325
 #, 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:8331
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " nome da imagem   : %.*s\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:8332
 #, c-format
 msgid " link time        : %s\n"
 msgstr " hora de ligaÃ§Ã£o  : %s\n"
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:8337
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " ident imagem     : %.*s\n"
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:8341
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " ident linker     : %.*s\n"
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:8345
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " ident build imagem: %.*s\n"
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:8354
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "impossÃ­vel ler EIHS\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:8358
 #, 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:8364
 #, 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:8369
 #, 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:8374
 #, 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:8387
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "impossÃ­vel ler EISD\n"
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:8398
 #, 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:8406
 #, 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:8411
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " bandeiras: 0x%04x"
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8449
 #, 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:8455
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8458
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8461
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8464
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8467
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8470
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8476
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8483
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " ident: 0x%08x, nome: %.*s\n"
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8494
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "impossÃ­vel ler DMT\n"
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8498
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Tabela de mÃ³dulo de depuraÃ§Ã£o:\n"
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8507
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "impossÃ­vel ler cabeÃ§alho DMT\n"
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8513
 #, 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:8523
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "impossÃ­vel ler psect DMT\n"
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8527
 #, 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:8540
 #, c-format
 msgid "cannot read DST\n"
 msgstr "impossÃ­vel ler DST\n"
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8550
 #, c-format
 msgid "cannot read GST\n"
 msgstr "impossÃ­vel ler GST\n"
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8554
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Tabela de sÃ­mbolo global:\n"
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8581
 #, 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:8585
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  iaflink : 0x%08x %08x\n"
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8589
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  fixuplnk: 0x%08x %08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8592
 #, c-format
 msgid "  size : %u\n"
 msgstr "  tamanho: %u\n"
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8594
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  bandeiras: 0x%08x\n"
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8599
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8604
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8609
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8612
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8616
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8619
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8622
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8624
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8631
 #, c-format
 msgid " Shareable images:\n"
 msgstr " Imagens partilhÃ¡veis:\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8642
 #, 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:8649
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " fixups de relocalizaÃ§Ã£o de quad-word:\n"
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8655
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " fixups de relocalizaÃ§Ã£o de long-word:\n"
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8661
 #, 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:8666
 #, 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:8671
 #, 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:8676
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
-msgstr "Fixups de referÃªncia de pares de ligaÃ§Ã£o:\n"
+msgstr " Fixups de referÃªncia de pares de ligaÃ§Ã£o:\n"
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8684
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Alterar protecÃ§Ã£o (%u entradas):\n"
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8693
 #, 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:9571
 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:9642
 #, 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:1530
 #, 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:374
 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:379
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "_bfd_vms_output_counted chamado com demasiados bytes"
 
-#: xcofflink.c:832
+#: xcofflink.c:505
+#, c-format
+msgid "%pB: warning: illegal symbol index %lu in relocs"
+msgstr "%pB: aviso: Ã­ndice de sÃ­mbolos ilegal %lu em relocs"
+
+#: xcofflink.c:924
 #, c-format
 msgid "%pB: XCOFF shared object when not producing XCOFF output"
 msgstr "%pB: objecto partilhado XCOFF sem produzir saÃ­da XCOFF"
 
-#: xcofflink.c:853
+#: xcofflink.c:945
 #, c-format
 msgid "%pB: dynamic object with no .loader section"
 msgstr "%pB: objecto dinÃ¢mico sem secÃ§Ã£o .loader"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1527
 #, 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:1583
 #, 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:1606
 #, 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:1619
 #, 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:1650
+#, c-format
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
+msgstr "%pB: sÃ­mbolo XMC_TC0 \"%s\" Ã© classe %d scnlen %<PRIu64>"
+
+#: xcofflink.c:1785
 #, c-format
-msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
-msgstr "%pB: XMC_TC0 sÃ­mbolo \"%s\" Ã© classe %d scnlen %<PRId64>"
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr "%pB: entrada TOC \"%s\" tem R_TLSMLrelocation que nÃ£o se destina a si prÃ³prio"
 
-#: xcofflink.c:1680
+#: xcofflink.c:1819
 #, 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:1928
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr "%pB: XTY_LD \"%s\" mal colocado"
 
-#: xcofflink.c:2109
+#: xcofflink.c:2271
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr "%pB: reloc %s:%<PRId64> fora de csect"
 
-#: xcofflink.c:3196
+#: xcofflink.c:3380
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr "%pB: impossÃ­vel exportar sÃ­mbolo interno \"%s\"."
+
+#: xcofflink.c:3428
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: sem tal sÃ­mbolo"
 
-#: xcofflink.c:3301
+#: xcofflink.c:3537
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "aviso: tentativa de exportar sÃ­mbolo \"%s\" indefinido"
 
-#: xcofflink.c:3680
+#: xcofflink.c:3885
 msgid "error: undefined symbol __rtinit"
 msgstr "erro: sÃ­mbolo __rtinit indefinido"
 
-#: xcofflink.c:4060
+#: xcofflink.c:4902
+#, c-format
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr "%pB: impossÃ³vel encontrar csect fictÃ­cio na relocalizaÃ§Ã£o rangeof em %#<PRIx64> com destino a \"%s\""
+
+#: xcofflink.c:4931
+#, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr "%pB: impossÃ­vel criar entrada fictÃ­cia \"'%s\""
+
+#: xcofflink.c:5051
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr "Transporte TOC durante a geraÃ§Ã£o fictÃ­cia; tente -mminimal-toc ao compilar"
+
+#: xcofflink.c:5119
 #, 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:5131
 #, 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:5148
 #, 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:6227
 #, 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
+#: xcofflink.c:7343
+#, c-format
+msgid "Unable to link input file: %s"
+msgstr "ImpossÃ­vel ligar o ficheiro de entrada: %s"
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr "ImpossÃ­vel carregar a DLL."
+
+#: xtensa-dynconfig.c:86
+#, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr "%s estÃ¡ definido, mas nÃ£o pÃ´de ser carregado: %s"
+
+#: xtensa-dynconfig.c:102
+#, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr "%s estÃ¡ carregado, mas o sÃ­mbolo \"%s\" nÃ£o foi encontrado: %s"
+
+#: xtensa-dynconfig.c:115
+#, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr "%s estÃ¡ definido, mas o suporte a extensÃµes estÃ¡ desactivado"
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2889 elfnn-riscv.c:5940
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "atributo desconhecido para o sÃ­mbolo \"%s\": 0x%02x"
+
+#: elfnn-aarch64.c:5486
 #, 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:5578
 #, 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:5591
+#, c-format
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr "%pB: erro: erratum 843419 imediato 0x%<PRIx64> fora do intervalo para ADR (ficheiro de entrada muito grande) e foi usado --fix-cortex-a53-843419=adr. Execute antes o linker com --fix-cortex-a53-843419=full"
+
+#: elfnn-aarch64.c:6134
 #, 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:6154
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr "%pB: ramo condicional para sÃ­mbolo \"%s\" indefinido nÃ£o permitido"
+
+#: elfnn-aarch64.c:6242 elfnn-kvx.c:2382
 #, 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:6356 elfnn-aarch64.c:6393
+#, 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:7384
 msgid "too many GOT entries for -fpic, please recompile with -fPIC"
-msgstr "Demasiadas entradas GOT para -fpic, recompile com -fPIC"
+msgstr "demasiadas entradas GOT para -fpic, recompile com -fPIC"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:6858
+#: elfnn-aarch64.c:7412
 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."
+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:7979
 #, 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-aarch64.c:8940
 #, c-format
-msgid "%pB: warning: RVE PLT generation not supported"
-msgstr "%pB: aviso: geraÃ§Ã£o RVE PLT nÃ£o suportada"
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr "%P: %pB: copiar relocalizaÃ§Ã£o contra sÃ­mbolo protegido nÃ£o-copiÃ¡vel \"%s\"\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2311
-msgid "%X%P: internal error: out of range error\n"
-msgstr "%X%P: erro interno: erro fora do intervalo\n"
+#: elfnn-kvx.c:929
+msgid "%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: impossÃ­vel atribuir \"%pA\" a uma secÃ§Ã£o de saÃ­da. Repita sem --enable-non-contiguous-regions.\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2315
-msgid "%X%P: internal error: unsupported relocation error\n"
-msgstr "%X%P: erro interno: erro relocalizaÃ§Ã£o nÃ£o suportada\n"
+#: elfnn-kvx.c:2127
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): relocalizaÃ§Ã£o %s insolÃºvel na secÃ§Ã£o \"%s\""
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2325
-msgid "%X%P: internal error: unknown error\n"
-msgstr "%X%P: erro interno: erro desconhecido\n"
+#: elfnn-kvx.c:2851
+#, c-format
+msgid "%s: Bad ELF id: `%d'"
+msgstr "%s: mÃ¡ id ELF: \"%d\""
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2711
+#: elfnn-kvx.c:2906
 #, c-format
-msgid "error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%d"
-msgstr "erro: %pB: versÃ£o ISA trocada para \"%s\" extensÃ£o. %d.%d vs %d.%d"
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: compilado como objecto 32-bit e %s Ã© 64-bit"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2729
+#: elfnn-kvx.c:2909
 #, c-format
-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\"."
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: compilado como objecto 64-bit e %s Ã© 32-bit"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2773
+#: elfnn-kvx.c:2911
+#, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: tamanho do objecto nÃ£o corresponde ao do destino %s"
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:2999
 #, 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\"."
+msgid "Private flags = 0x%lx : "
+msgstr "Bandeiras privadas = 0x%lx: "
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2921
+#: elfnn-kvx.c:3003
 #, 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)."
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr "Coolidge (kv3) V1 64 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2946
+#: elfnn-kvx.c:3005
 #, 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)."
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr "Coolidge (kv3) V2 64 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2954
+#: elfnn-kvx.c:3007
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
-msgstr "erro: %pB: XLEN nÃ£o suportado (%u), poderÃ¡ estar a usar a emulaÃ§Ã£o errada."
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr "Coolidge (kv4) V1 64 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3039
+#: elfnn-kvx.c:3012
 #, 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 "Coolidge (kv3) V1 32 bits"
+msgstr "Coolidge (kv3) V1 32 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3055
+#: elfnn-kvx.c:3014
 #, 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."
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr "Coolidge (kv3) V2 32 bits"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3096
+#: elfnn-kvx.c:3016
+#, c-format
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr "Coolidge (kv4) V1 32 bits"
+
+#: elfnn-kvx.c:3848
+#, c-format
+msgid "relocation against `%s' has faulty GOT type "
+msgstr "relocalizaÃ§Ã£o contra \"%s\" tem tipo GOT defeituoso "
+
+#: elfnn-loongarch.c:303 elfnn-loongarch.c:355
+#, c-format
+msgid "%#<PRIx64> invaild imm"
+msgstr "%#<PRIx64> imm invÃ¡lido"
+
+#: elfnn-loongarch.c:537 elfnn-riscv.c:4383
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
@@ -7924,111 +9168,306 @@ 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-loongarch.c:592
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr "%pB: impossÃ­vel ligar objectos ABI diferentes."
+
+#: elfnn-loongarch.c:735
+msgid "Internal error: unreachable."
+msgstr "Erro interno: inalcanÃ§Ã¡vel."
+
+#: elfnn-loongarch.c:915
+#, c-format
+msgid "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s"
+msgstr "%pB:(%pA+%#lx): relocalizaÃ§Ã£o %s contra \"%s\"nÃ£o pode se usada ao fazer %s; recompile com %s%s"
+
+#: elfnn-loongarch.c:919
+msgid " and check the symbol visibility"
+msgstr " e verificar visibilidade do sÃ­mbolo"
+
+#: elfnn-loongarch.c:1045
+#, c-format
+msgid "%pB: stack based reloc type (%u) is not supported with -z pack-relative-relocs"
+msgstr "%pB: tipo de reloc baseado em pilha (%u) nÃ£o Ã© suportado com -z pack-relative-relocs"
+
+#: elfnn-loongarch.c:1240
+#, c-format
+msgid "%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE"
+msgstr "%pB: relocalizaÃ§Ã£o R_LARCH_32 contra sÃ­mbolo nÃ£o-absoluto \"%s\" nÃ£o pode ser usada em ELFCLASS64 ao fazer um objecto ou PIE partilhados"
+
+#: elfnn-loongarch.c:1305
+#, c-format
+msgid "%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary"
+msgstr "%pB: R_LARCH_ALIGN com desvio %<PRId64> nÃ£o alinhado ao limite da instruÃ§Ã£o"
+
+#: elfnn-loongarch.c:4196
+msgid "cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)"
+msgstr "impossÃ­vel resolver R_LARCH_PCREL20_S2 contra sÃ­mbolo fraco indefinido com addend fora de [-2048, 2048)"
+
+#: elfnn-loongarch.c:4706
+msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'"
+msgstr "recompile com \"gcc -mno-relax\", \"as -mno-relax\" ou \"ld --no-relax\""
+
+#: elfnn-loongarch.c:5584 elfnn-riscv.c:5168
+#, 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"
+
+#: elfnn-riscv.c:385 elfnn-riscv.c:436 elfnn-riscv.c:484 elfnn-riscv.c:520
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr "%pB: aviso: geraÃ§Ã£o RVE PLT nÃ£o suportada"
+
+#: elfnn-riscv.c:675
+#, c-format
+msgid "%pB: error: unsupported PLT type: %u"
+msgstr "%pB: erro: tipo PLT nÃ£o suportado: %u"
+
+#: elfnn-riscv.c:1120
+#, c-format
+msgid "%pB: relocation %s against absolute symbol `%s' can not be used when making a shared object"
+msgstr "%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo absoluto \"%s\" nÃ£o pode ser usada ao fazer um objecto partilhado"
+
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object"
+msgstr "%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo nÃ£o-absoluto \"%s\" nÃ£o pode ser usada em RV32 ao fazer um objecto partilhado"
+
+#: elfnn-riscv.c:2095
+#, c-format
+msgid "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "tamanho final do valor de uleb128 no desvio 0x%lx em %pA de %pB excede o espaÃ§o disponÃ­vel"
+
+#: elfnn-riscv.c:2337
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr "%pcrel_lo com %pcrel_hi correspondente em falta"
+
+#: elfnn-riscv.c:2340
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "%pcrel_lo com adenda nÃ£o Ã© permitido para R_RISCV_GOT_HI20"
+
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2345
+#, c-format
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr "transporte de %%pcrel_lo com uma adenda, o valor de %%pcrel_hi Ã© 0x%<PRIx64> sem adenda, mas pode ser 0x%<PRIx64> apÃ³s adicionar a adenda %%pcrel_lo"
+
+#: elfnn-riscv.c:2353
+#, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr "transporte %pcrel_lo com uma adenda"
+
+#: elfnn-riscv.c:2843
+#, c-format
+msgid "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up"
+msgstr "%pB: aviso: R_RISCV_SUB_ULEB128 com addend Ã£o-zero, por favor, reconstrua com binutils 2.42 ou up"
+
+#: elfnn-riscv.c:2923
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "A adenda nÃ£o Ã© permitida para R_RISCV_GOT_HI20"
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:3022
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: relocalizaÃ§Ã£o %s contra \"%s\", que pode estar ligada externamente, nÃ£o pode ser usada ao fazer um objecto partilhado; recompile com -fPIC\n"
+
+#: elfnn-riscv.c:3103
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "sÃ­mbolo de secÃ§Ã£o %pcrel_lo com uma adenda"
+
+#: elfnn-riscv.c:3124
+#, c-format
+msgid "%tlsdesc_lo with addend"
+msgstr "%tlsdesc_lo com addend"
+
+#: elfnn-riscv.c:3357
+#, 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:3392
+msgid "%X%P: internal error: out of range error\n"
+msgstr "%X%P: erro interno: erro fora do intervalo\n"
+
+#: elfnn-riscv.c:3397
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "%X%P: erro interno: erro relocalizaÃ§Ã£o nÃ£o suportada\n"
+
+#: elfnn-riscv.c:3403
+msgid "dangerous relocation error"
+msgstr "erro de relocalizaÃ§Ã£o perigosa"
+
+#: elfnn-riscv.c:3409
+msgid "%X%P: internal error: unknown error\n"
+msgstr "%X%P: erro interno: erro desconhecido\n"
+
+#: elfnn-riscv.c:3982
+#, c-format
+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\"."
+
+#: elfnn-riscv.c:4025
+#, 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\""
+
+#: elfnn-riscv.c:4162
+#, 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)"
+
+#: elfnn-riscv.c:4182
+#, 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)"
+
+#: elfnn-riscv.c:4190
+#, c-format
+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"
+
+#: elfnn-riscv.c:4314
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr "aviso: versÃ£o 1.9.1 privilegiada nÃ£o pode ser ligada a outras versÃµes spec"
+
+#: elfnn-riscv.c:4342
+#, 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"
+
+#: elfnn-riscv.c:4439
 #, 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:4449
 #, 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:4473
 #, 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"
+msgid "warning: %pB: unknown RISCV ABI object attribute %d"
+msgstr "aviso: %pB: atributo de objecto RISCV ABI %d desconhecido"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object"
+msgstr "%pB: relocalizaÃ§Ã£o %s contra sÃ­mbolo nÃ£o-absoluto \"%s\" nÃ£o pode ser usada em RV64 ao fazer um objecto partilhado"
+
+#: peXXigen.c:161
 #, 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:188
 #, 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:199
 #, 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:928
+#, c-format
+msgid "%pB:%.8s: section below image base"
+msgstr "%pB:%.8s: secÃ§Ã£o abaixo da base da imagem"
+
+#: peXXigen.c:933
 #, 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:%.8s: RVA truncated"
+msgstr "%pB:%.8s: RVA truncado"
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:1066
 #, 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:1232
 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:1233
 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:1234
 msgid "Resource Directory [.rsrc]"
 msgstr "Pasta de recursos [.rsrc]"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1235
 msgid "Exception Directory [.pdata]"
 msgstr "Pasta de excepÃ§Ãµes [.pdata]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1236
 msgid "Security Directory"
 msgstr "Pasta de seguranÃ§a"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1237
 msgid "Base Relocation Directory [.reloc]"
 msgstr "Pasta de relocalizaÃ§Ã£o base [.reloc]"
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1238
 msgid "Debug Directory"
 msgstr "Pasta de depuraÃ§Ã£o"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1239
 msgid "Description Directory"
 msgstr "Pasta de descriÃ§Ã£o"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1240
 msgid "Special Directory"
 msgstr "Pasta especial"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1241
 msgid "Thread Storage Directory [.tls]"
 msgstr "Pasta de armazenamento de Thread [.tls]"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1242
 msgid "Load Configuration Directory"
 msgstr "Pasta de configuraÃ§Ã£o de carregamento"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1243
 msgid "Bound Import Directory"
 msgstr "Pasta de importaÃ§Ã£o vinculada"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1244
 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:1245
 msgid "Delay Import Directory"
 msgstr "Pasta de atraso de importaÃ§Ã£o"
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1246
 msgid "CLR Runtime Header"
 msgstr "CabeÃ§alho de execuÃ§Ã£o CLR"
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1247
 msgid "Reserved"
 msgstr "Reservado"
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1312
 #, c-format
 msgid ""
 "\n"
@@ -8037,7 +9476,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:1318
 #, c-format
 msgid ""
 "\n"
@@ -8046,7 +9485,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:1325
 #, c-format
 msgid ""
 "\n"
@@ -8055,30 +9494,7 @@ msgstr ""
 "\n"
 "HÃ¡ uma tabela de importaÃ§Ã£o em %s em 0x%lx\n"
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
-#, c-format
-msgid ""
-"\n"
-"Function descriptor located at the start address: %04lx\n"
-msgstr ""
-"\n"
-"Descritor de funÃ§Ã£o localizado no endereÃ§o inicial: %04lx\n"
-
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
-#, 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
-#, c-format
-msgid ""
-"\n"
-"No reldata section! Function descriptor not decoded.\n"
-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:1331
 #, c-format
 msgid ""
 "\n"
@@ -8087,7 +9503,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:1334
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -8096,7 +9512,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:1383
 #, c-format
 msgid ""
 "\n"
@@ -8105,12 +9521,12 @@ msgstr ""
 "\n"
 "\tNome DLL: %.*s\n"
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1399
 #, c-format
-msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
-msgstr "\tvma:  Dica/Ord Nome-membro ligado a\n"
+msgid "\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"
+msgstr "\tvma:     Ordinal  Dica  Nome-Membro  Ligado-a\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1424
 #, c-format
 msgid ""
 "\n"
@@ -8119,13 +9535,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:1474 peXXigen.c:1519
 #, c-format
-msgid "\t<corrupt: 0x%04lx>"
-msgstr "\t<corrupto: 0x%04lx>"
+msgid "\t<corrupt: 0x%08lx>"
+msgstr "\t<corrompido: 0x%08lx>"
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1613
 #, c-format
 msgid ""
 "\n"
@@ -8134,34 +9549,25 @@ 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
-#, c-format
-msgid ""
-"\n"
-"There is an export table in %s, but that section has no contents\n"
-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:1626
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it does not fit into that section\n"
+"There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 "\n"
-"HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas nÃ£o serve nessa secÃ§Ã£o\n"
+"HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas Ã© demasiado pequena (%d)\n"
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1634
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it is too small (%d)\n"
+"There is an export table in %s, but contents cannot be read\n"
 msgstr ""
 "\n"
-"HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas Ã© demasiado pequena (%d)\n"
+"HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas nÃ£o se pode ler o conteÃºdo\n"
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1640
 #, c-format
 msgid ""
 "\n"
@@ -8170,7 +9576,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:1671
 #, c-format
 msgid ""
 "\n"
@@ -8181,67 +9587,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:1675
 #, 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:1678
 #, 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:1682
 #, 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:1685
 #, 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:1696
 #, 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:1699
 #, c-format
 msgid "Number in:\n"
 msgstr "NÃºmero em:\n"
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1702
 #, 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:1706
 #, 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:1709
 #, c-format
 msgid "Table Addresses\n"
 msgstr "EndereÃ§os da tabela\n"
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1712
 #, 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:1717
 #, 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:1722
 #, 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:1736
 #, c-format
 msgid ""
 "\n"
@@ -8250,51 +9656,49 @@ msgstr ""
 "\n"
 "Tabela end. exportaÃ§Ã£o -- Base ordinal %ld\n"
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1746
 #, 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:1765
 msgid "Forwarder RVA"
 msgstr "Reencaminhador RVA"
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1777
 msgid "Export RVA"
 msgstr "ExportaÃ§Ã£o RVA"
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1784
 #, c-format
 msgid ""
 "\n"
-"[Ordinal/Name Pointer] Table\n"
+"[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"
 msgstr ""
 "\n"
-"Tabela [Ordinal/Nome Ponteiro]\n"
+"[Ponteiro Ordinal/Nome] Tabela -- Ordinal Base %ld\n"
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1794
 #, 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:1801
 #, 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:1815
 #, c-format
-msgid "\t[%4ld] <corrupt offset: %lx>\n"
-msgstr "\t[%4ld] <desvio corrupto: %lx>\n"
+msgid "\t[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>\n"
+msgstr "\t[%4ld] +base[%4ld]  %04lx <desvio corrompido: %lx>\n"
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1872 peXXigen.c:2042
 #, 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"
+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:1876 peXXigen.c:2046
 #, c-format
 msgid ""
 "\n"
@@ -8303,12 +9707,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:1879
 #, 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:1881
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -8317,27 +9721,12 @@ 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:1894
 #, 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
-#, c-format
-msgid " Register save millicode"
-msgstr " Register save millicode"
-
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
-#, c-format
-msgid " Register restore millicode"
-msgstr " Register restore millicode"
-
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
-#, c-format
-msgid " Glue code sequence"
-msgstr " Colar sequÃªncia de cÃ³digo"
-
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2048
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -8346,7 +9735,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:2173
 #, c-format
 msgid ""
 "\n"
@@ -8357,7 +9746,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:2202
 #, c-format
 msgid ""
 "\n"
@@ -8366,62 +9755,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:2220
 #, 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:2281
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "%03x %*.s Entrada: "
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2305
 #, 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:2325
 #, 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:2335
 #, 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:2340
 #, c-format
 msgid "ID: %#08lx"
 msgstr "ID: %#08lx"
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2343
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Valor: %#08lx\n"
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2365
 #, 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:2407
 #, 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:2415
 #, 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:2503
 #, 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:2527
 #, c-format
 msgid ""
 "\n"
@@ -8430,17 +9819,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:2533
 #, 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:2536
 #, 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:2593
 #, c-format
 msgid ""
 "\n"
@@ -8449,7 +9838,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:2599
 #, c-format
 msgid ""
 "\n"
@@ -8458,7 +9847,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:2606
 #, c-format
 msgid ""
 "\n"
@@ -8467,7 +9856,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:2611
 #, c-format
 msgid ""
 "\n"
@@ -8478,22 +9867,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:2618
 #, 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:2623
 #, 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:2671
 #, c-format
-msgid "(format %c%c%c%c signature %s age %ld)\n"
-msgstr "(formato %c%c%c%c assinatura %s idade %ld)\n"
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr "(formato %c%c%c%c assinatura %s idade %ld pdb %s)\n"
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2683
 #, 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 +9890,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:2767
 #, c-format
 msgid ""
 "\n"
@@ -8510,99 +9899,434 @@ msgstr ""
 "\n"
 "CaracterÃ­sticas 0x%x\n"
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3052
 #, 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>)"
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr "%pB: tamanho da pasta de dados (%lx em %<PRIx64>) estende-se para lÃ¡ da fronteira em %<PRIx64>)"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3093
 msgid "failed to update file offsets in debug directory"
-msgstr "Falha ao actualizar desvios de ficheiro na pasta de depuraÃ§Ã£o"
+msgstr "falha ao actualizar desvios de ficheiro na pasta de depuraÃ§Ã£o"
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3102
 #, 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:3907
 #, 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:4042
 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:4060
 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:4102
 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:4107
 #, 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:4174
 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:4181
 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:4293
 #, 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:4301
 #, 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:4441 peXXigen.c:4461 peXXigen.c:4482 peXXigen.c:4502
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s is missing"
+msgstr "%pB: impossÃ­vel preencher DataDirectory[%d]: %s em falta"
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4544 peXXigen.c:4590 peXXigen.c:4614 peXXigen.c:4698
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"
+msgstr "%pB: impossÃ­vel preencher DataDirectory[%d]: %s incorrectamente definido"
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4651
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not properly aligned"
+msgstr "%pB: impossÃ­vel preencher DataDirectory[%d]: %s incorrectamente alinhado"
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
+#: peXXigen.c:4682
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: size too large for the containing section"
+msgstr "%pB: impossÃ­vel preencher DataDirectory[%d]: tamanho muito grande para a secÃ§Ã£o contentora"
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4690
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: size can't be read from %s"
+msgstr "%pB: impossÃ­vel preencher DataDirectory[%d]: nÃ£o se pode ler o tamanho de %s"
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
 #, 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 "%F%pA: failed to align section\n"
+#~ msgstr "%F%pA: falha ao alinhar secÃ§Ã£o\n"
 
-#~ 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 "c' or `zcf"
+#~ msgstr "c\" ou \"zcf"
+
+#~ msgid "c' or `zcd"
+#~ msgstr "c\" ou \"zcd"
+
+#, c-format
+#~ msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD only\n"
+#~ msgstr "%pB(%pA+0x%v): relocalizaÃ§Ã£o %s contra \"%s\" sÃ³ pode ser usada em ADD\n"
 
-#~ msgid "error: %pB: <corrupt x86 ISA used size: 0x%x>"
-#~ msgstr "erro: %pB: <tamanho ISA x86 corrupto: 0x%x>"
+#, 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"
 
-#~ msgid "error: %pB: <corrupt x86 ISA needed size: 0x%x>"
-#~ msgstr "erro: %pB: <tamanho necessÃ¡rio x86 ISA corrupto: 0x%x>"
+#, 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"
+
+#, 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"
+
+#, 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"
+
+#, c-format
+#~ msgid "not mapping: data=%lx mapped=%d\n"
+#~ msgstr "nÃ£o mapeado: dados=%lx mapeado=%d\n"
+
+#, c-format
+#~ msgid "not mapping: env var not set\n"
+#~ msgstr "nÃ£o mapeado: env var nÃ£o definida\n"
+
+#~ msgid "%pB: TLS relocation at (0x%"
+#~ msgstr "%pB: relocalizaÃ§Ã£o TLS em (0x%"
+
+#, c-format
+#~ msgid "%pB: page size is too large (0x%x)"
+#~ msgstr "%pB: tamanho de pÃ¡gina muito grande (0x%x)"
+
+#, 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)"
+
+#, c-format
+#~ msgid "%pB: unable to initialize compress status for section %s"
+#~ msgstr "%pB: impossÃ­vel inicializar estado comprimido para secÃ§Ã£o %s"
+
+#, c-format
+#~ msgid "%pB: unable to initialize decompress status for section %s"
+#~ msgstr "%pB: impossÃ­vel inicializar estado descomprimido para secÃ§Ã£o %s"
+
+#, 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)"
+
+#, 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"
+
+#, c-format
+#~ msgid "DWARF error: section %s is larger than its filesize! (0x%lx vs 0x%lx)"
+#~ msgstr "Erro DWARF: secÃ§Ã£o %s maior que o seu tamanho de ficheiro! (0x%lx vs 0x%lx)"
+
+#, 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>"
+
+#, c-format
+#~ msgid "%pB: no valid group sections found"
+#~ msgstr "%pB: sem secÃ§Ãµes de grupo vÃ¡lidas"
+
+#, c-format
+#~ msgid "%pB: no group info for section '%pA'"
+#~ msgstr "%pB: sem informaÃ§Ã£o de grupo para secÃ§Ã£o \"%pA\""
+
+#, 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"
+
+#, 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"
+
+#, c-format
+#~ msgid " [Maverick float format]"
+#~ msgstr " [formato flutuante Maverick]"
+
+#, 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"
+
+#~ 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"
+
+#, c-format
+#~ msgid "error: %pB: big-endian R2 is not supported"
+#~ msgstr "erro: %pB: Big-endian R2 nÃ£o Ã© suportado."
+
+#, c-format
+#~ 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"
+
+#, 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 "ImpossÃ­vel atingir %s (em %#<PRIx64>) do ponteiro global (em %#<PRIx64>) porque o desvio (%<PRId64>) estÃ¡ fora do intervalo permitido, -32678 a 32767.\n"
+
+#, c-format
+#~ msgid "dynamic variable `%s' is zero size"
+#~ msgstr "variÃ¡vel dinÃ¢mica \"%s\" tem tamanho zero"
+
+#~ msgid "internal error: RL78 reloc stack overflow"
+#~ msgstr "Erro interno: transporte de stack em reloc RL78"
+
+#~ 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"
+
+#, 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  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"
+
+#, 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>"
+
+#, 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"
+
+#, 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."
+
+#, c-format
+#~ msgid "-march=%s: expect number after `%dp'"
+#~ msgstr "-march=%s: esperado nÃºmero apÃ³s \"%dp\""
+
+#, 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"
+
+#, c-format
+#~ msgid "-march=%s: standard ISA extension `%c' is not in canonical order"
+#~ msgstr "-march=%s: extensÃ£o padrÃ£o ISA \"%c\" fora da ordem canÃ³nica"
+
+#, c-format
+#~ msgid "-march=%s: unknown prefix class for the ISA extension `%s'"
+#~ msgstr "-march=%s: classe antecipada para extensÃ£o ISA %s desconhecida"
+
+#, c-format
+#~ msgid "-march=%s: duplicate prefixed ISA extension `%s'"
+#~ msgstr "-march=%s: extensÃ£o antecipada ISA %s duplicada"
+
+#, c-format
+#~ msgid "-march=%s: prefixed ISA extension `%s' is not in expected order.  It must come before `%s'"
+#~ msgstr "-march=%s: extensÃ£o ISA %s nÃ£o estÃ¡ na ordem esperada: Tem de estar antes de \"%s\"."
+
+#~ msgid "%F%P: failed to create BND PLT section\n"
+#~ msgstr "%F%P: falha ao criar secÃ§Ã£o BND PLT\n"
+
+#, c-format
+#~ msgid "Deprecated %s called at %s line %d in %s\n"
+#~ msgstr "%s obsoleto chamado em %s linha %d em %s\n"
+
+#, c-format
+#~ msgid "Deprecated %s called\n"
+#~ msgstr "%s obsoleto chamado\n"
+
+#, c-format
+#~ msgid "%pB: no core to allocate section name %s"
+#~ msgstr "%pB: sem nÃºcleo para alocar nome de secÃ§Ã£o %s"
+
+#, c-format
+#~ msgid "%pB: unhandled import type; %x"
+#~ msgstr "%pB: tipo de importaÃ§Ã£o nÃ£o gerido; %x"
+
+#, 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"
+
+#, 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"
+
+#, 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"
+
+#, c-format
+#~ msgid "   Error: length larger than remaining space in record\n"
+#~ msgstr "   Erro: tamanho maior que o espaÃ§o restante no registo\n"
+
+#, c-format
+#~ msgid "STA_QW (stack quadword) 0x%08x %08x\n"
+#~ msgstr "STA_QW (stack quadword) 0x%08x %08x\n"
+
+#, c-format
+#~ msgid "cannot read GST record length\n"
+#~ msgstr "impossÃ­vel ler tamanho do registo GST\n"
+
+#~ msgid "%pB: error: erratum 843419 immediate 0x%"
+#~ msgstr "%pB: erro: erratum 843419 imediato 0x%"
+
+#, 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"
+
+#, c-format
+#~ msgid "warning: %pB: mis-matched ISA version %d.%d for '%s' extension, the output version is %d.%d"
+#~ msgstr "aviso: %pB: versÃ£o ISA trocada %d.%d para extensÃ£o \"%s\", a versÃ£o de saÃ­da Ã© %d.%d"
+
+#, c-format
+#~ msgid "warning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%u"
+#~ msgstr "aviso: %pB usa versÃ£o spec privilegiada %u.%u.%u mas a saÃ­da usa a versÃ£o %u.%u.%u"
+
+#, c-format
+#~ 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"
+
+#, c-format
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but that section has no contents\n"
+#~ msgstr ""
+#~ "\n"
+#~ "HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas essa secÃ§Ã£o nÃ£o tem conteÃºdo\n"
+
+#, c-format
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but it does not fit into that section\n"
+#~ msgstr ""
+#~ "\n"
+#~ "HÃ¡ uma tabela de exportaÃ§Ã£o em %s, mas nÃ£o serve nessa secÃ§Ã£o\n"
+
+#~ 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"
+
+#~ msgid "%pA has both ordered and unordered sections"
+#~ msgstr "%pA tem secÃ§Ãµes ordenadas e desordenadas em simultÃ¢neo"
+
+#~ msgid "%F%P: %pA has ordered sections with incompatible alignments\n"
+#~ msgstr "%F%P: %pA tem secÃ§Ãµes ordenadas com alinhamentos incompatÃ­veis\n"
+
+#~ msgid "-march=%s: unexpected ISA string at end: %s"
+#~ msgstr "-march=%s: cadeia ISA inesperada no final: %s"
+
+#~ msgid "%pB: warning: sh_link not set for section `%pA'"
+#~ msgstr "%pB: aviso: sh_link nÃ£o definido para a secÃ§Ã£o \"%pA\""
+
+#~ msgid "-march=%s: unsupported ISA subset `%c'"
+#~ msgstr "-march=%s: sub-conjunto ISA \"%c\" nÃ£o suportado"
+
+#~ msgid "-march=%s: `d' extension requires `f' extension"
+#~ msgstr "-march=%s: extensÃ£o \"d\" requer a extensÃ£o \"f\""
+
+#~ msgid "-march=%s: `q' extension requires `d' extension"
+#~ msgstr "-march=%s: extensÃ£o \"q\" requer a extensÃ£o \"d\""
+
+#~ msgid ""
+#~ "\n"
+#~ "Function descriptor located at the start address: %04lx\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Descritor de funÃ§Ã£o localizado no endereÃ§o inicial: %04lx\n"
+
+#~ msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
+#~ msgstr "\tcode-base %08lx toc (carregÃ¡vel/actual) %08lx/%08lx\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "No reldata section! Function descriptor not decoded.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Sem secÃ§Ã£o reldata! Descritor de funÃ§Ã£o nÃ£o descodificado.\n"
+
+#~ msgid " Register save millicode"
+#~ msgstr " Register save millicode"
+
+#~ msgid " Register restore millicode"
+#~ msgstr " Register restore millicode"
+
+#~ msgid " Glue code sequence"
+#~ msgstr " Colar sequÃªncia de cÃ³digo"
+
+#~ 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 "%pB: can't link hard-float modules with soft-float modules"
 #~ msgstr "%pB: impossÃ­vel ligar mÃ³dulos hard-float com mÃ³dulos soft-float"
@@ -8622,9 +10346,6 @@ msgstr "%pB: impossÃ­vel preencher DataD
 #~ msgid "%B: Invalid relocation type imported: %d"
 #~ msgstr "%B: tipo de relocalizaÃ§Ã£o importado invÃ¡lido: %d"
 
-#~ msgid "%P: %B: unexpected relocation type\n"
-#~ msgstr "%P: %B: tipo de relocalizaÃ§Ã£o inesperado\n"
-
 #~ msgid "%B: unknown/unsupported relocation type %d"
 #~ msgstr "%B: tipo de relocalizaÃ§Ã£o %d desconhecido/nÃ£o suportado"
 
@@ -8691,9 +10412,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 +10468,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,15 +10510,9 @@ 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."
 
-#~ msgid "%B: invalid relocation type %d"
-#~ msgstr "%B: tipo de relocalizaÃ§Ã£o %d invÃ¡lido"
-
 #~ msgid "%B: invalid i960 reloc number: %d"
 #~ msgstr "%B: nÃºmero de reloc i960 invÃ¡lido: %d"
 
@@ -8837,9 +10546,6 @@ msgstr "%pB: impossÃ­vel preencher DataD
 #~ msgid "%B: unrecognised MCore reloc number: %d"
 #~ msgstr "%B: nÃºmero de reloc MCore nÃ£o reconhecido: %d"
 
-#~ msgid "%B: Unknown relocation type %d\n"
-#~ msgstr "%B: tipo de relocalizaÃ§Ã£o %d desconhecido\n"
-
 #~ msgid "%B: invalid MEP reloc number: %d"
 #~ msgstr "%B: nÃºmero de reloc MEP invÃ¡lido: %d"
 
@@ -8930,15 +10636,6 @@ msgstr "%pB: impossÃ­vel preencher DataD
 #~ msgid "%B: unrecognised SH reloc number: %d"
 #~ msgstr "%B: nÃºmero de reloc SH nÃ£o reconhecido: %d"
 
-#~ msgid "%B: compiled as 32-bit object and %B is 64-bit"
-#~ msgstr "%B: compilado como objecto 32-bit e %B Ã© 64-bit"
-
-#~ msgid "%B: compiled as 64-bit object and %B is 32-bit"
-#~ msgstr "%B: compilado como objecto 64-bit e %B Ã© 32-bit"
-
-#~ msgid "%B: object size does not match that of target %B"
-#~ msgstr "%B: tamanho do objecto nÃ£o corresponde ao do alvo %B"
-
 #~ msgid "%B: encountered datalabel symbol in input"
 #~ msgstr "%B: encontrado sÃ­mbolo datalabel na entrada"
 
@@ -9062,9 +10759,6 @@ msgstr "%pB: impossÃ­vel preencher DataD
 #~ msgid "%B: unexpected type after ATN"
 #~ msgstr "%B: tipo inesperado apÃ³s ATN"
 
-#~ msgid "%B: can not represent section `%A' in oasys"
-#~ msgstr "%B: impossÃ­vel representar secÃ§Ã£o \"%A\" em oasys"
-
 #~ msgid "%B: `ld -r' not supported with PE MIPS objects\n"
 #~ msgstr "%B: \"ld -r\" nÃ£o suportado com objectos PE MIPS\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.20200303/bfd/po/ro.gmo ./bfd/po/ro.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ro.gmo	2020-03-03 02:13:28.000000000 +0000
+++ ./bfd/po/ro.gmo	2026-03-05 02:15:54.000000000 +0000
@@ -1,41 +1,176 @@
-Þ•Q¤,% 1¡1º1Ù1ð1$23(2\2%|2¢2A²2&ô2343M3f3v3 •3¶3Ö3í3*49+46e4;œ4Ø46ê4:!55\5J’5)Ý5L6)T6L~6Ë6á6Dø6=7\74n7)£7)Í7÷78)8=8Y8r88“8¬8À8Ñ8â8	ñ8
û8
	9
-9
-"9
--989M9
-V9$a9#†9%ª9
-Ð9Û9î9$:+:I:	c:!m:�:—:¬:	»:Å:Î:	×:á:í:ö:ÿ:	;
-;
;	+;5;
-F;Q;i;ƒ;’;©;Ä;Ó;6ì;{#<xŸ<=&.='U=2}=*°=-Û=+	>55>3k>uŸ>%?A;?}?7•?6Í?*@¨/@<Ø@9A[OA6«A-âA B71B3iB!�B#¿B&ãB)
-C.4C0cC/”CFÄC>D-JD(xD¡D7¿D1÷D0)E/ZE)ŠE/´E;äE< F/]F&�FM´F3GT6G2‹G2¾G|ñG4nH(£H(ÌH[õH+QIH}I/ÆI(öI?J<_J?œJQÜJ3.K'bK<ŠK6ÇKDþKCLaL1�L%³L ÙLEúL4@M;uM?±M7ñM-)N*WN8‚N2»N+îN/O3JO0~O7¯OçO+P$3P+XP„P¢PA»PHýP>FQ+…QI±Q;ûQ7RWR)rR+œR.ÈR.÷R5&S@\S@�SIÞS=(TIfTI°T$úT9U.YU/ˆU'¸U@àU5!VWV*tV)ŸV?ÉV-	W;7W4sW/¨WØW%öW*X'GX>oXB®XñX4
YlBY@¯Y?ðYG0ZFxZJ¿ZH
-[KS[GŸ[Bç[X*\4ƒ\/¸\è\N]4V]0‹]¼](Ó].ü](+^*T^6^2¶^5é^8_WX_Z°_B`5N`=„`,Â`<ï`(,a-Uaƒa �a/¾aîabb.bBb0Tb4…b$ºb=ßbDcbc$c0¤cSÕc<)d3fdHšd1ãd5eVKeN¢eMñe-?f2mf5 f6Öf*
g28g)kg.•g*Äg(ïgJh7ch4›h)Ðh+úh&&iMi&gi+Ži,ºiçi+j1j-Gjuj,”j'ÁjBéj?,k"lk&�k[¶kGlGZlO¢lGòl9:m>tm2³m5æmDnPan=²n2ðn7#o5[o/‘o1ÁooóoFcpKªpHöp2?q3rq=¦q;äqB rAcr:¥r3àr	ss/<sls;|s¸sÈsÜsñs	t"t+;t#gt:‹tÆt.ât4u	Fu"Pusu(Šu³uÃuÚu)ðuvS0v#„v.¨v,×v+w-0wV^w1µwOçwY7xV‘x;èx)$yZNyZ©yEzAJzPŒzGÝzW%{W}{4Õ{9
-|4D|7y|7±|$é|V}e}5‚}¸}
-Í}#Ø}ü}~0~E~R~a~
~/�~+½~8é~""AId®Á$Ó6ø/€L€b€t€…€•€	¥€¯€¸€Á€
-Ø€"ã€%�,�8�X�)m�/—�Ç�.æ�,‚B‚:^‚%™‚%¿‚å‚"þ‚[!ƒ?}ƒ½ƒÜƒåƒ*„&+„R„j„$}„¢„$´„Ù„!ù„…D5…Dz…/¿…ï…?†A†R†r†J‰†7Ô†*‡7‡O‡%e‡‹‡ž‡»‡JØ‡J#ˆJnˆI¹ˆ:‰;>‰:z‰6µ‰iì‰DVŠd›ŠF‹CG‹‹‹@ª‹8ë‹7$Œ\Œ|ŒŽŒ Œ2µŒ.èŒ�d/�”�%±�×�ô�7ŽHŽ!aŽ-ƒŽ+±Ž+ÝŽ		�	�
-� (�1I�&{�¢�&µ�Ü�û��$.�"S�v�,”�BÁ�D‘*I‘Lt‘ Á‘xâ‘[’q’‡’*¦’ Ñ’ò’“&“:“O“e“y“N�“!ß“””0”D”X” l”&�” ´”#Õ”(ù”9"•\•3w•!«•$Í•0ò•#–?–V–h–7–·–Ð–â–!õ–-—0E—=v—/´—6ä—�˜¬™"Ë™î™š%š5@š#vš(ššÃšBÓš)›@›]›w›�›"Ÿ›$Â›$ç›œ"œ17œ=iœF§œ:îœ)�<;�;x�=´�Hò�-;žJiž-´žPâž3ŸIŸJbŸ­ŸÍŸ@ßŸ8  8Y ’ £ À Ý ø ¡$¡8¡Q¡e¡x¡‹¡	�¡
§¡
µ¡
-Ã¡
-Î¡
-Ù¡ä¡ø¡
-¢1¢&>¢)e¢
-�¢š¢#²¢AÖ¢&£$?£	d£3n£¢£ª£¾£	×£á£ê£	ó£ý£	¤¤¤	$¤
-.¤9¤	H¤R¤c¤p¤Š¤¢¤±¤Ð¤í¤ ÿ¤: ¥}[¥zÙ¥T¦2m¦5 ¦6Ö¦>
§,L§)y§0£§:Ô§ƒ¨*“¨E¾¨©; ©;\©)˜©³Â©8vª5¯ªaåª3G«.{«$ª«XÏ«6(¬%_¬%…¬6«¬-â¬1­;B­A~­OÀ­D®<U®0’®3Ã®C÷®=;¯6y¯*°¯.Û¯+
-°76°>n°7­°2å°Q±8j±d£±3²A<²„~²=³(A³(j³]“³5ñ³T'´F|´?Ã´OµPSµC¤µUèµ.>¶$m¶D’¶D×¶B· _·"€·6£·"Ú·ý·@¸G\¸7¤¸;Ü¸0¹0I¹,z¹X§¹=º0>º0oºH ºIéº;3»"o»6’»'É»1ñ»$#¼!H¼?j¼Iª¼Jô¼1?½\q½HÎ½+¾C¾2a¾-”¾7Â¾7ú¾?2¿Er¿E¸¿Dþ¿7CÀG{ÀCÃÀ,ÁH4Á1}Á0¯Á0àÁJÂ4\Â(‘Â(ºÂDãÂ;(Ã/dÃ?”Ã+ÔÃ-Ä .Ä'OÄ3wÄ'«ÄEÓÄSÅmÅ?ŒÅiÌÅM6ÆK„ÆUÐÆT&ÇW{ÇRÓÇd&ÈN‹ÈKÚÈv&ÉB�É0àÉÊV0Ê9‡Ê7ÁÊ ùÊ2Ë4MË'‚Ë5ªË8àË5Ì7OÌ;‡Ì†ÃÌvJÍRÁÍ>ÎBSÎ:–Î=ÑÎ2Ï0BÏsÏ3ŠÏ8¾Ï÷ÏÐ.ÐIÐ[Ð:jÐ3¥Ð!ÙÐ;ûÐE7Ñ$}Ñ1¢Ñ7ÔÑYÒEfÒ0¬ÒMÝÒ6+Ó;bÓZžÓTùÓJNÔ8™Ô1ÒÔAÕAFÕ5ˆÕ.¾Õ+íÕ-Ö-GÖ.uÖL¤Ö;ñÖ3-×9a×;›×'××ÿ×(Ø*BØ2mØ Ø.¼ØëØ5Ù!7Ù4YÙ.ŽÙA½Ù>ÿÙ">Ú%aÚi‡ÚWñÚXIÛU¢ÛUøÛGNÜB–Ü7ÙÜFÝIXÝ\¢ÝEÿÝ:EÞE€Þ?ÆÞ7ß;>ß„zßYÿßLYàK¦à2òà4%áIZáJ¤áRïáKBâCŽâ3Òâã)ã5=ãsã8‡ãÀãÔãèã)ýã'ä 4ä@Uä%–ä>¼äûä1å7Må…å"•å$¸å0Ýåææ;æ*Qæ|æY�æ0éæ8ç6Sç4Šç9¿ç^ùçBXè[›èn÷èoféMÖé7$ê`\ê_½êMëKkë_·ëKì]cì_ÁìA!íFcíAªíBìíB/î&rîV™îðî4ï @ï
aï,oïœï'¼ïäïüï
ð ð?ð5Yð7�ð4Çð#üð& ñKGñ“ñ¦ñ%¸ñ<Þñò;òQò
cò
qòò	Œò–ò
ªò¸ò×ò#æò6
-ó
-AóLóeó<{óD¸óýó0ô.Nô}ô=˜ô$Öô+ûô'õ,FõasõHÕõ#öBöKö,dö'‘ö¹öÓö*çö÷/#÷,S÷5€÷¶÷HÒ÷Hø2dø—øTªøÿø'ù6ùYTùA®ù2ðù#ú>ú"Xú{úŒú¬úIÇúPûNbûP±û;üC>üG‚üGÊü‡ýfšý�þT�þPäþ55ÿRkÿ?¾ÿSþÿ#Rvˆš3¶-êf8Ÿ%¼+â"U1‡"¡6Ä4û40	e	o
-y!„8¦5ß,--Zˆ"œ$¿8ä".@JoKº;TB$—”¼Qe#y7�"Õ,ø%B`~�ºKÙ"%	H	c	x	�	¢	!·	'Ù	
-$!
-)F
-:p
-«
-DÉ
->'M4uªÈßô2Bar)„4®?ãF#
8j
J£
Á÷6éÇ™4,õ
¯a;ëçÚYªQ>®öe7K�1V°U$•	(½Ó
-ˆ¬Žhøn#SI�%Ú×ÀP±T‹}p‘¦5î+HBøW—S€¡‘!{F×³¢ÅXEµ#¤	‚±Æ)Œ %ÅÂ¶`ˆ.mÁg·w?(Ÿz+¸€
-À!) y|¥•Õ[úƒ½›[GDÿmç‰†YÈÝy6‹ot*tååðæßIºJ­E\ù¼AU³¼u6:ëzÔž†"¡„C¥ìnq­¶XÃ�¯o'«0Bí¹â|2�ï2J@ï5«õ:/V®
þx˜‡h/‚Lðc—?š‡O¿3ôú
²öªã“äjdD°ŽE�Ë=ùJ’š�]C}�\Î*ÏŠŠ<B‰·µ»àóK3_1v.^' ñÃM&ÿRk4ãýÑ£bÏè´9ûêìp§ÕAò!ÒL8Ô¾c˜¾TòF…Pá÷ÆÍô &ä2~vkZ1“i{Ùx$AÊL=)²M©W7íOÇÞHÖž´fé¦~–œI?0q’e›âÜ�b-9lêÌZ"7Ê”Œ$ÌG^ÄœÉý¤iÓÑàl]î¨:ó8™/9Q5sÜD`*@ËÐñÐG-©C-ÛP0NÎüRdrØ<>ujƒÒæ3ÈèOg¸¨,Þ('@�Ä
-K+%&a£	H=;N…ßÖ§8NºŸ„û¿<Û» ”,ÉM¬"r¹sþ�¢_áØF#Ý4ü;–QÍ.w>fÙÂ	Export Address Table 			Export Address Table 		%08lx
-	Name Pointer Table 			Ordinal Table 				[Name Pointer/Ordinal] Table	%08lx
-	code-base %08lx toc (loadable/actual) %08lx/%08lx
-	reloc %4d offset %4x [%4lx] %s	vma:  Hint/Ord Member-Name Bound-To
+Þ•>0 :o
+tÌ��ì�, ,»
-»;»O»h»A‡»?É»:	¼D¼[¼1n¼$ ¼
Å¼Ó¼/ó¼#½%½A7½&y½ ½¹½Ò½ë½û½ ¾;¾[¾t¾‹¾˜¾P«¾ü¾*¿;?¿{¿F�¿6Ô¿6À:BÀ5}À,³ÀDàÀN%ÁJtÁ)¿Á=éÁ:'ÂLbÂ)¯ÂBÙÂLÃiÃÃD–ÃGÛÃ2#ÄVÄhÄ|Ä”Ä©Ä3ÈÄüÄÅ0%ÅVÅfÅvÅ+�Å+¼Å+èÅ#Æ8ÆPÆYÆuÆŒÆ¡Æ(ÀÆ%éÆ&Ç(6Ç)_Ç‰Ç ÇÀÇÝÇöÇÈ1ÈJÈeÈ{È“È§È¾È,ØÈÉÉ.ÉFÉ]ÉlÉ‚É—É±ÉÈÉ1ÝÉÊ Ê-ÊDÊ_Ê#wÊ+›Ê&ÇÊ5îÊ$Ë9ËQËkË�Ë›Ë´ËËËáË$öËÌ4ÌTÌlÌ$�Ì¦ÌºÌÏÌ<èÌ%Í4Í
CÍQÍeÍzÍ ’Í³ÍÎÍÞÍþÍÎ:ÎSÎlÎÎ*�ÎºÎÌÎ&ÞÎÏ0ÏJÏ"^Ï	�Ï‹Ï#žÏÂÏÛÏìÏÐ"ÐAÐ"UÐ#xÐ#œÐÀÐ#ÕÐ#ùÐÑ*ÑHÑfÑlÑyÑ�Ñ†Ñ£Ñ
+ÁÑÌÑÑÑ!×Ñ ùÑÒÒ$Ò<Ò\Ò|Ò�Ò!†Ò¨Ò¹ÒÀÒÆÒËÒÐÒÖÒÚÒ"ßÒÓÓ'Ó;Ó&[ÓB‚ÓÅÓåÓêÓïÓöÓüÓÔÔÔ2ÔFÔMÔaÔrÔƒÔ”Ô¥Ô¶ÔÎÔ	ÝÔ
çÔ
õÔ
+Õ
+Õ
+Õ
+$Õ
+/Õ$:Õ
+_Õ#jÕ
+ŽÕ™Õ«Õ!ÃÕåÕúÕ
+	Ö
Ö	"Ö,Ö
+=ÖHÖOÖgÖ�Ö“Ö¢Ö¹ÖÔÖãÖüÖ×× 2×(S×/|×L¬×ù×Ø+ØFØAbØ¤Ø¾ØØØòØ8Ù@ÙXÙmÙ&‡Ù®ÙÍÙ2èÙ?Ú&[Ú‚Ú(¡ÚÊÚ"ÝÚÛ* Û6KÛ{‚ÛrþÛxqÜêÜÝ7€Ý:¸ÝóÝ,Þ62Þ6iÞ$ ÞÅÞ/åÞß5*ß+`ß$Œß±ß6Ðß"à&*à6Qà=ˆà:Æà:áD<á8�á9ºáCôá:8â7sâ8«â@äâG%ã9mã,§ã0Ôã#ä)ä=Dä-‚ä6°äçä7å3;å;oå:«å(æå"æ32æ%fæ?ŒæÌæ0ìæ1ç>Oç3Žç'ÂçDêçK/è({è2¤è2×è;
+é5Fé2|é/¯éVßéS6êSŠêÞêEüê8Bë,{ë`¨ë`	ìjìˆì$¤ì(Éìcòì4Ví‹í$£íšÈícî|î/•î%Åî"ëî-ï+<ï)hï-’ï.Àï$ïï0ð6Eð(|ð$¥ð&Êð2ñð&$ñkKñ*·ñ*âñ4
ò]BòA ò?âòG"ójóO‰óbÙó8<ô,uô+¢ô)ÎôYøô0Rõ=ƒõ3Áõ2õõB(ö,kö(˜öLÁö÷4,÷)a÷$‹÷3°÷9ä÷6ø/UøD…ø&ÊøWñømIùg·ùëúUû\aûH¾ûHü8Pü%‰ü(¯ü&Øü,ÿü#,ý>PýB�ýBÒýþ'5þE]þ4£þ1Øþ9
+ÿ4Dÿ3yÿJ­ÿ(øÿ;!]0|D­/ò:"@]@žGß?'2g8šSÓ''.O,~'«6Ó 
+Y+/…4µ5êN ªoI9d3ž¾Ò<‘<ÎFJRL�OêC:	^~	4Ý	P
+oc
+>Ó
+F`Y~ºF9‚€[
3_
@“
MÔ
m"7�#Èì(&+IRWœ+ô5 Vk8"¸$Û'9(Cb!¦!È*ê/1E/w/§0×*03<di¡=BI=Œ9Ê-&2"Y.|«8Ë:F??†VÆB;`7œ(Ô>ý=<4z#¯OÓ@#LdQ±I8M+†8²2ë9:X3“,Çuô j.‹.º$é'06Bg/ª,Ú'%/,U‚CœJà8+@dJ¥*ð% %A <g 1¤  Ö (÷ l !/�!<½!<ú!+7"c","H¬"6õ"A,#An#J°#>û#J:$J…$<Ð$#
%<1%*n%.™%(È%lñ%v^&AÕ&6'N'4l'0¡'+Ò'Aþ'J@(3‹(@¿(!)#").F)Bu)F¸)4ÿ)%4*:Z*2•*3È**ü*9'+Ca+C¥+:é+T$,Jy,5Ä,4ú,@/-6p-$§-PÌ-../L./|.&¬.:Ó.+/&:/5a/'—/0¿/5ð/3&0%Z0&€0§0'Ç0=ï0#-1+Q13}1(±1@Ú1C25_2'•2 ½2&Þ243g:34¢3m×3AE4@‡4HÈ4G5KY5I¥5Lï5H<6C…6YÉ65#70Y74Š7M¿7N
81\8)Ž8)¸8/â8)9+<97h93 96Ô99:XE:[ž:Cú:6>;>u;=´;*ò;.<2L<[<&Û<-=,0=+]=‰=8¤=Ý=/ø=0(>'Y>8�>Hº>A?)E?=o?#­?@Ñ?2@+E@#q@5•@<Ë@'A%0A(VARA?ÒAFBYB3tB1¨BDÚBHCDhCK­CaùC[[Ds·Dg+Eg“EBûE‚>FTÁF=G!TG-vGb¤GbH{jHgæHgNI0¶I(çI4J5EJO{J)ËJ3õJ-)K/WKH‡KFÐK7LGOL+—LNÃL$M27M!jM.ŒM/»M+ëM)N-AN/oN^ŸNKþNFJO‘O"­OÐO5ëO"!P(DP$mP7’PBÊPA
QDOQS”Q"èQ*R+6R'bR;ŠR8ÆR'ÿR''S3OS>ƒS-ÂS5ðS,&TIST�TºT.ØT/U7U$WU|UFšU&áU!V6*V5aV)—VÁVÛV(úV#W+=W2iW œW$½W#âW.X.5X%dX2ŠX3½X)ñX\YDxYH½YDZLKZX˜ZHñZ):[*d[ �[5°[9æ[@ \+a\6�\mÄ\A2]gt]ëÜ].È^]÷^MU_3£_=×_H`<^`8›`3Ô`4a4=a0ra0£a@Ôa1bBGbLŠbA×bLc8fc+Ÿc2Ëc<þc3;dXodPÈd.e`He&©ePÐe\!fX~fp×fAHg#ŠgE®g+ôgK h.lh<›h,ØhXi,^i‹i¡iµi"Íi%ðij36j2jj�j4½j?òj@2kWsk=Ëk*	l54l%jlB�l%Ól4ùl>.m<mmCªmBîm;1n3mn^¡n)o$*o!Oo'qo8™oÒoòopp!(pJp)`p,Šp-·p$åp
+q1q_Oq-¯q3Ýqr/&r5VrVŒrIãrI-s<ws.´s.ãs5t/Ht;xt´tÇtÛt0ít/uNu'hu7�u)Èu(òu6v'Rvzv1’vÄv
Øv.ævw
!w/w%@w\fw;Ãwÿwx'x*xGxTx	mxwx‰xšx,§xÔxèxþx"y=y(Zy/ƒy/³y1ãy8z#Nz'rz2šz3Íz{;{M{T{\{q{�{ˆ{�{¤{¹{Î{à{ó{
+|!|3|Q|	p|z|˜|
­|	»|"Å|è|ú|"}9}P}Y}e}i}|}Ž} }'²}Ú} ÷}#~<~V~p~Š~¤~¾~Ø~ò~ %HC1Œ#¾,âB€XR€a«€:
�.H�7w�1¯�;á�(‚:F‚,�‚-®‚'Ü‚"ƒ-'ƒUƒ2tƒ§ƒ·ƒÌƒáƒøƒ!„$0„,U„(‚„-«„IÙ„#…5@…v…
+‹…C–…IÚ…$†6†>†F†
d†r†>„†?Ã†A‡E‡/a‡+‘‡8½‡ö‡$ˆ!1ˆ1Sˆ…ˆ¤ˆ+Ãˆïˆ‰‰
+)‰4‰BS‰–‰%¨‰Î‰à‰.þ‰--ŠG[Š3£Š×Š"öŠ‹6‹G‹X‹j‹$ƒ‹¨‹!Å‹ç‹5ù‹/Œ	AŒKŒ]ŒsŒ“Œ­ŒÉŒØŒêŒXñŒ	J�T�Y�e�t�‹�§�½�Ï�ï�Ž(Ž<ŽNŽfŽ-„Ž²ŽÄŽÖŽêŽ�'�A�P�b�t�{�!‚�¤�:À�%û�%!�G�`�Ay�;»�C÷�;‘#U‘,y‘=¦‘Cä‘=(’"f’7‰’<Á’<þ’);“5e“›“¤“v¿“*6”a”'s”H›”ä”ö”ý”•
+•(•G•'Y•�•ž•¶•Î•#æ•
+–,"–.O–,~–.«–Ú–"÷–,—.G—!v—1˜—0Ê—2û—,.˜.[˜#Š˜®˜Î˜(â˜/™!;™]™(z™#£™+Ç™ó™,š 9šZšsš“š§šÇš#æš-
+›"8›[›m›€›Œ›¡›&³›	Ú›Fä›/+œE[œ¡œ-²œJàœM+�y�™�°�Ã�-à�ž*žBž`žtž|žAˆž>Êž	ŸAŸ7]ŸB•Ÿ!ØŸAúŸ< ˜\ õ ¡#¡5¡:J¡#…¡2©¡.Ü¡#¢8/¢3h¢9œ¢Ö¢ã¢ð¢££:!£+\£#ˆ£¬£¿£Ø£ð£,¤:5¤p¤	ˆ¤d’¤÷¤6
+¥;A¥;}¥<¹¥gö¥b^¦<Á¦1þ¦(0§$Y§~§/”§+Ä§ð§¨
+&¨1¨N¨>j¨<©¨æ¨4©'7©$_©6„©»©Ì©ä©û©ª$ª<ªNª`ªrª„ªžª¹ªËªÜªôª`«2t«§«'Á«Lé«46¬7k¬0£¬'Ô¬ü¬­1­C­R­-l­+š­+Æ­*ò­	®	'®
+1®
+<®G®[®g®t®‰®¤®³®È®×®1Ü®¯/.¯^¯}¯ Ž¯'¯¯'×¯&ÿ¯0&°W°u°Š°“°±°9È°-±10±b±,w±a¤±2²49²)n²C˜²EÜ²Y"³Y|³;Ö³;´MN´/œ´5Ì´:µ5=µ4sµ9¨µ7âµ9¶DT¶G™¶Dá¶E&·Cl·-°·,Þ·0¸4<¸>q¸;°¸8ì¸6%¹;\¹3˜¹%Ì¹1ò¹!$ºVFº9�º\×ºA4»1v»?¨»1è»:¼7U¼>�¼$Ì¼Eñ¼u7½q­½I¾i¾4†¾O»¾Z¿/f¿O–¿Pæ¿37À kÀ?ŒÀ:ÌÀ&Á
+.Á9ÁMÁ0ZÁ%‹Á"±Á%ÔÁ0úÁ!+ÂMÂfÂ�Â–Â£ÂS²ÂOÃVÃ,uÃ7¢ÃÚÃ
ÜÃêÃ1ùÃ+Ä?ÄRÄeÄC‚ÄOÆÄ,Å6CÅzÅ$šÅ_¿Å"Æ(BÆAkÆ­Æ,ËÆ2øÆH+ÇtÇ„Ç
+•Ç" Ç
+ÃÇ$ÎÇóÇÈ&È¼<È¹ùÈ³É/ÅÉõÉÊ.Ê*NÊLyÊ2ÆÊ-ùÊ)'Ë"QËtË‡ËœË±Ë2ÀËóË0ûË,Ì%GÌmÌ9zÌ´Ì<ÆÌ=Í3AÍ5uÍ2«Í7ÞÍBÎLYÎ¦Î·ÎÑÎÙÎáÎýÎHÏMÏ4PÏ&…Ï¬ÏµÏ
+ÌÏ×Ï2óÏ-&ÐOTÐ¤ÐÃÐ"ÈÐ*ëÐ%Ñ<ÑDÑCcÑ¤§ÑLÒYÒ sÒL”ÒáÒêÒþÒÓ)Ó?ÓVÓsÓ„Ó–Ó¢Ó¯ÓÃÓEËÓ*ÔN<Ô[‹ÔçÔAëÔ-ÕLÕ,dÕ‘Õ®Õ6ÆÕýÕ Ö8>Ö+wÖ£ÖµÖÅÖÍÖ'âÖ+
+×+6×+b×*Ž×*¹×)ä×(Ø7ØOØcØwØ‹ØžØ
±Ø¿ØIÙØ#Ù 4ÙUÙDtÙP¹Ù
+ÚÚ27Ú$jÚ�Ú¯Ú5ÂÚøÚ!Û5Û<Û2DÛFwÛJ¾Û/	ÜF9Ü€Ü"’ÜµÜÅÜMÔÜ9"Ý;\Ý7˜ÝÐÝèÝÞÞ,'Þ$TÞJyÞ)ÄÞ(îÞ%ß(=ßfß
+‚ß,�ßºß)Ôßþßà6àNàVànà)†à°à
Æà#Ôàøà'á8áIá_áyá–á°á#¼á%àáâ#â:âLâ7câ›â·â%Ðâöâã%ã7ãJã^ãrãˆãJžãJéãJ4äIä:Éäå-#å;Qå+�å@¹å<úå47æ6læ-£æ8Ñæ5
+ç5@ç8vç.¯ç>ÞçIèhgèyÐè>JéN‰éIØéd"êY‡ê0áê;ë8NëF‡ë/Îë5þë&4ì.[ì-Šì.¸ì0çì3í<Lí!‰í«í!Äí)æíEîZVîV±î`ïGiïZ±ïUð.bð,‘ðh¾ðj'ñE’ñ0Øñ6	òk@òE¬òòò&óQ7óS‰óEÝó\#ôH€ôHÉô#õ<6õ<sõe°õQö2hö/›ö/Ëö4ûö=0÷9n÷0¨÷7Ù÷%ø'7ø=_ø6�ø@Ôøù25ùhù,lù
™ù
§ù
µù
Ãù!Ñù:óù
.ú"<ú_ú
nú)|ú)¦úÐúåú+ùú%û4û9û>ûCûHûOûbûiû=oûL­û
úýþþ#9þO]þQ­þFÿþFÿfÿ1yÿ&«ÿ
Òÿ%àÿ6=?LQ+žÊé$+&P%w%�ÃÙî]$c2ˆ>»úfDx=½Aû?=1}M¯ZýZX,³Oà;0Sl0ÀHñW:’¬YÆ[ 7|´ÅÙõ 		4*	_	v	2�	À	Ð	à	,ú	,'
+,T
+$�
+¦
+¾
+Ç
+â
+ý
+'.:&i+�)¼0æ!.Pm‰)§Ñ%ì
*
D
`
w
7‘
É
Ù
÷
.@Zp�¤2¹ì
'E)a2‹,¾<ë(#=#a…#š¾Ùò.L!hŠ§.¾í<9v…
”¢·!Ì!î.+>'j+’¾Øñ3I\)o™9®è/ü,9#Lp‰�¶&Òù%
#3#W{#Œ#°Ô(ã(5;KSX&x
+Ÿª¯(µ0Þ#/$Sx}7‚ºËÒØÝâèì(ñ#C#Z/~G®#ö$+16LSj~…™¬¿Òåø	$
.
<
+J
+U
+`
+k
+v1�³TÏ
+$/A6`—­
+ÅÐ	áë:Set#’¶Èè÷'þ)&9PCŠpÎ?[:m¨TÄ  !:  \ } P“ ä !  !8A!*z!¥!8Â!Tû!8P"*‰"2´"ç""#*$#.O#:~#ƒ¹#u=$z³$.%¤G%@ì%9-&g&6{&8²&Cë&&/'&V'9}'·'BÖ'5(0O(*€(L«(*ø(.#)?R)E’)?Ø)@*KY*=¥*?ã*J#+?n+=®+=ì+`*,l‹,Kø,AD-<†-)Ã-)í-D.<\.F™.%à.C/:J/B…/BÈ/+0(70<`0*�0MÈ0'1<>16{1`²1E2.Y2Kˆ2SÔ27(3D`3D¥3Gê3@24@s45´4hê4dS5m¸5#&6`J6M«6Hù6„B7„Ç7L8(j89“88Í8ˆ9H�9Ø92ó9Ð&:÷:;3+;)_;'‰;4±;/æ;-<1D<4v<)«<3Õ<5	=2?=+r=5ž=7Ô=.>Ž;>5Ê>5?A6?…x?Pþ?NO@Už@ô@aAuABõA.8B/gB(—B|ÀB:=CKxCAÄC8DL?D.ŒD1»DUíD CEFdE5«E+áE8
FOFFV–FGíFK5G-�Gz¯Gƒ*H}®H4,IaJ^áJP@KK‘K[ÝK49L/nL,žL.ËL'úL?"MCbMI¦M(ðMCNQ]NJ¯N@úN�;OLËOAPyZPRÔPV'Q(~Q7§QXßQC8RE|RMÂRMSZ^ST¹SATSPTk¤T8U2IU8|U.µU;äU( VsIV/½V9íV:'WebWÒÈWR›X>îX:-YúhYKcZK¯ZIûZYE[[Ÿ[^û[YZ\s´\:(]cc]�Ç]PU^X¦^oÿ^“o_T`˜X`nñ`2`aL“aYàaŠ:b7Åb:ýb8c:Tc0�ccÀct$d7™d:Ñde$ee7e(�e'Æe1îek fYŒf%æf%g82g7kg?£g7ãg<h3Xh1Œh4¾h9óhu-iI£iKíiI9jDƒj;Èj'k2,k@_k" k<ÃkClMDlD’lx×lNPmNŸmJîm(9nCbnJ¦n;ñn'-o`UoO¶oIpTPpi¥p<q-LqdzqFßqe&rCŒrCÐrUs–js$t7&t7^t*–t-Át9ïtU)u9u9¹u8óu5,v:bv$�vJÂvT
wHbwP«wdüw-ax-�x/½xPíx;>y,zy2§y˜Úy9szG­zIõz5?{u{:•{JÐ{L|Gh|G°|Lø|:E}K€}LÌ}J~)d~RŽ~0á~88Kˆ„™
€M§€:õ€(0�;Y�>•�,Ô�Z‚`\‚F½‚Bƒ-Gƒ4uƒ9ªƒTäƒj9„>¤„9ã„I…=g…;¥…7á…[†gu†gÝ†LE‡t’‡^ˆ=fˆ>¤ˆTãˆ=8‰&v‰j�‰9ŠABŠ@„Š-ÅŠWóŠ:K‹5†‹>¼‹3û‹3/Œ9cŒ@�Œ-ÞŒ0�'=�.e�I”�3Þ�=ŽDPŽ*•ŽKÀŽ]�@j�-«� Ù�,ú�D'�‰l�Iö�n@‘P¯‘O’XP’W©’[“V]“i´“]”S|”zÐ”FK•6’•:É•_–`d–:Å–0—51—8g—? —;à—?˜9\˜<–˜?Ó˜„™v˜™SšAcšM¥š@óšH4›H}›?Æ›}œ0„œAµœ@÷œ98�#r�@–�×�Eõ�>;ž?zžSºžNŸE]Ÿ,£ŸÐŸ3P H„ JÍ 4¡;M¡9‰¡CÃ¡9¢*A¢/l¢bœ¢Bÿ¢PB£&“£;º£=ö£]4¤V’¤Oé¤_9¥~™¥q¦‰Š¦u§~Š§O	¨©Y¨q©Mu©"Ã©3æ©}ª~˜ª”«|¬«|)¬A¦¬(è¬D­FV­\�­4ú­?/®@o®8°®cé®`M¯P®¯[ÿ¯3[°^�°5î°<$±(a±6Š±9Á±1û±8-²5f²@œ²{Ý²SY³G­³õ³%´:´9X´'’´/º´)ê´:µGOµO—µTçµa<¶3ž¶6Ò¶5	·3?·Cs·H··1¸22¸3e¸J™¸8ä¸B¹3`¹h”¹!ý¹-º4Mº5‚º"¸º/Ûº#»S/»+ƒ»#¯»?Ó»D¼2X¼"‹¼®¼(Ì¼õ¼2½:A½ |½$�½"Â½.å½.¾%C¾7i¾8¡¾+Ú¾p¿^w¿_Ö¿S6À_ŠÀkêÀbVÁ:¹Á3ôÁ1(Â?ZÂEšÂNàÂ8/ÃFhÃ†¯ÃZ6Ä€‘Ä;Å6NÆŠ…ÆsÇB„Ç\ÇÇ^$ÈGƒÈNËÈMÉEhÉD®É;óÉ;/ÊSkÊ6¿ÊIöÊK@ËDŒËNÑËA Ì?bÌC¢ÌIæÌ@0ÍhqÍ_ÚÍK:Î�†Î.ÏqCÏfµÏbÐ�ÐPÑ5aÑL—Ñ1äÑNÒ6eÒMœÒ<êÒr'ÓDšÓßÓûÓÔ(+Ô<TÔ,‘Ô=¾Ô<üÔ09ÕHjÕH³ÕXüÕ|UÖ[ÒÖ/.×R^×1±×Xã×<<Ø;yØ]µØTÙ\hÙZÅÙP Ú8qÚrªÚ8Û+VÛ ‚Û)£Û9ÍÛ(Ü0ÜGÜTÜ8hÜ ¡Ü1ÂÜ;ôÜ>0Ý6oÝ¦Ý8·ÝnðÝ5_Þ;•ÞÑÞ,îÞ?ßh[ßYÄßYàJxà@Ãà@áIEáC�áDÓáâ4âFâ@[â1œâÎâ.ëâDã:_ã0šãAËã4
äBä7Zä’ä
®ä5¼äòäåå$&å’KåNÞå-æ#@ædæ%gæ�æœæ¶æÃæØæëæ:øæ3çGç%cç%‰ç#¯ç-Óç9è>;è8zè>³è'òè+é3Fé9zé´é:Éé	ê	ê ê9ê	Nê	Xêbêwê�ê£ê¶êÊêèêë" ë"Cëfë!oë ‘ë²ëÃë(Ðëùë!ì$-ìRìpìyì‘ì•ì©ì»ìÍì,ßì í*-í*Xí!ƒí¥íÀíÛíöíî,îGî,gî#”îL¸îEï,Kï5xïK®ïxúï‡sðVûð>RñA‘ñ<Óñgò:xòV³òE
+ó7Pó,ˆó*µó2àó+ô:?ôzôŒô ªôËôëô"þô$!õ,Fõ&sõ-šõTÈõö69öpö
ˆöH–öRßö2÷D÷L÷T÷
s÷�÷E“÷GÙ÷R!ø+tøD ø:åø7 ùXùEuù?»ùIûù/Eú2uúX¨ú'û)ûEû
+Vû/aûW‘ûéû&ûû"ü5ü9Sü-�üR»ü@ý"Oý(rý›ý¹ýÎýãýõý$þ"9þ(\þ…þ:—þÒþäþôþÿ"ÿ ?ÿ(`ÿ‰ÿœÿ®ÿpµÿ	&09FY t•«#Ãç#&>R"n7‘ÉÛð %7=u„–¨¯'¶Þ=û&9&`‡¤M¿]
Qk#½Eá,'JTPŸDð35Mi[·S?gT§ü‹.«Ú.ìX	t	†	�	”	§	>¸	÷	/	
+9
+Y
+ t
+•
+,­
+%Ú
+<>=<|>¹*ø1#<U>’4ÑF
DM
F’
<Ù
>2U#ˆ¬?ÃI"M p4‘'Æ2î!.A*p'›#Ãç"##&G0n'ŸÇÙí$J5
€LŽ8ÛyŽ.ŸeÎk4) Êã)þ.(W8`,™Æ
+áì]ûQY«Y½E_]1½Tï*D´o'$LczF—/Þ5.D>s?²>ò@1
r
€Ž¡%¨HÎE+]‰ž¹Ñ6èM"m�i¡=$LbL¯FürCk¶>" 6a -˜ +Æ ò 7!0J!{!˜!¶!5Æ!0ü!O-"M}"'Ë"Bó";6#2r#?¥#å#û#$5$K$i$ˆ$Ÿ$¶$Í$ä$!%&%=%$S%-x%}¦%5$&Z&9x&c²&F'A]'GŸ'9ç'(!(#J(n(„( �(E±(C÷(C;)?)	¿)	É)
+Ó)
+Þ)é)**(* ?*`*o*„*“*3˜*-Ì*7ú*#2+V+ k+8Œ+6Å+@ü+<=,,z, §,È,!Ý, ÿ,? -2`-8“-Ì-<å-‚".N¥.9ô.*./SY/a­/„0„”0Q1Ok1k»1>'2If2Š°2>;3=z3J¸3@4JD4V�4Yæ4Z@5U›5Rñ5DD6C‰6DÍ6B7JU7L 7Dí7G28;z8@¶8,÷86$9)[9q…9G÷9r?:Z²:A
;OO;;Ÿ;LÛ;:(<@c<*¤<RÏ<r"=f•=Mü=&J>5q>f§>p?8?r¸?W+@6ƒ@!º@HÜ@C%A/iA
+™A¤AÁA:ÓA+B.:B+iBN•B äB!C''COCiC{Ch�CiöC2`D?“DKÓDE
!E/ED>EƒE—EªE½EKÚEZ&F:�FF¼F$G'(GnPG.¿G.îGLH$jH1�H<ÁHOþH
NI\IkI"tI
+—I)¢IÌI$âIJüJòK
L:!L\L#{L(ŸL3ÈLYüLDVM5›M.ÑM(N)N@NUNrN ‡N(O40O eOD†OËO<ÝOPH/PIxPHÂPRQG^QC¦QWêQaBR¤R%¶RÜRìRýRSm SŽSO‘S6áST %T
FTTT9qT7«T~ãT&bU‰U&’U:¹U1ôU&V'6Vc^V­ÂVpW‡W6 Wz×W
+RX]XtXŒX¥X¾XØXôXYY%Y7YUYThYA½YTÿYxTZÍZRÑZ%$[#J[4n[£[ Â[=ã['!\(I\7r\Dª\ï\] ]"4]!W]%y]%Ÿ]%Å]$ë]$^#5^"Y^|^˜^­^Á^Õ^è^û^'_Ž3_Â_"Ø_)û_b%`Xˆ`á`÷`/a<Da2�a´aHÇa!b@2bsbzb?‚bLÂbWc:gcL¢cïc2d8dHdFWdBždGádJ)ete‘e°e Âe6ãe5fePf;¶f4òf*'g9Rg Œg
+­g3¸gìg7h#Chgh‚h
+�h¨hÂh3àhi/i7Ci!{i1�iÏiéij 'jHjgj#vj8šjÓj!ðjk)kB@kƒkŸk4¼k#ñkl*l<lOlclwl�l\£lcm^dmcÃm?'n gn=ˆnKÆn8oFKoK’oSÞo>2p8qp>ªpSépR=qG�qDØqUrjsr—Þr˜vsUtketjÑt‘<uaÎu:0v@kvI¬vWöv=NwNŒw2Ûw:x9Ix:ƒx;¾x>úx>9y4xy#­y/Ñy7zN9zfˆzjïz…Z{^à{s?|u³|5)}4_}w”}~YŒ~@æ~@'Žh_÷+W€0ƒ€j´€¨�pÈ�]9‚T—‚Oì‚3<ƒMpƒM¾ƒ‚„s�„8…A<…D~…KÃ…O†I_†C©†Fí†84‡:m‡]¨‡Hˆ\Oˆ'¬ˆ8Ôˆ
‰/‰@‰S‰f‰x‰.Š‰E¹‰ÿ‰/ŠAŠUŠ6hŠ6ŸŠÖŠðŠ8‹A‹U‹Z‹_‹d‹i‹p‹ˆ‹�‹Q•‹jÖ¼ÂW8åì‰³-âtÏ›•áÁ*˜lUCÔVÚõè_Tˆù*Ê�­�KÊ¬D~<Ýt
+¼…€Ö¾‹ ¤ËŸ¤æ'™Ã®Ñ#ˆ&dŒê´œt%"o*ùsUò±Æl¨„ñu¹
/è;øÒçoÙæz·çCôë ú�#o%Ö&é;g!î±
ówÙ±’yRñH1 ¢<¡Y…�ŽrkÜèÓ«Š‘Êþÿ‰„á–ûÝ	[Žq„fsæ ®ˆsØ_•ÎÌ"žÕÉÅä€œn çùÔYC¿4ÃiW"²�5àß*¥íæö2?U–ƒ{k9QšPEÚµÑ·D:Å¶—@ùhê9´2·Or‡C¶(íy3™þ|>ö5P	lZÇ0Ð®rC¡œ‹càZöh6¥�Zû¥ïÃm¤ÑêwOk‚…¦™‘y›Ó0ï=³wáˆI’câ�Ý»¢çI°žäË}•U»M”»ÿ!×É@S657=�ÅWy¶Š(
+÷¢Ê^²—:r%Sô¦Šñ[¥¦§š“‡ß;ùŒñ©ôëãÕ[“«Ïý¨Œs4Ížìñ³ÆRO€Ä¬%mi×(í\v'uF¿<‹eÀO3q`alHš˜×ê�ÃÆãÓ§3Å9ëÍNí6ªˆ'Hœî\z®ï½Ve÷S4"°9a¡h$KÇ_ôÔA6š‚Ó£•vI8EØ#5?ó0G°-�Ü­Q/Æ«�¯Q B%[šYÉë/]!8\Ãð+÷'9§�
+A
óÍÁ^vzæBüTÕ~ÎÏÔWNL{5V,~$.E²7Vx/Þ³!±Úx
+Òú?<Ûû}Þß[oœ(Ç¥s6‰m¯Ñ G†náòÎnÚïGå+õ°ƒJËTC|Hd] `AµÇV”-µÕiï0ËG‚
îÓ8Í²@›p¸p&å–sÙ.-=¯f‡!|Ê©R"Ô¸îz¨Á£ŒçIàmÀÒ™R¼ŸðdÿgÚj>	u]$ðªŸ€ìÀÿ¯
+ú.ÛNµÛ¼‘DÄ	f­=uM3q™n5óºù­wx�
+Y.[j�õ1�h` ZÞ¾DöçÙbYKeÉBî¨òQ¨!ÏäP}àûùaÈx}ß,òLìgý¸ÒÁ6Šb�¡ÔãN\ü9÷Ä&Àée½ÔØD¦¾åé�Ü´´”á˜Io+ˆJÈÍ÷Ï‡Y�uOK©/m“¸|VM�§®Ù'`ë4`:˜môB!Ÿ±Û”Ü°‚;£52#fàO+,$1¤Ö©iTUî¡F)x¼â¨v'üÜ
Ä²ú¨;»�Õtÿ^üï|>=a%Jåê70l’=GŽ„ÕT9žŽ+>)>8ì”Ðvâ—?�±Z¿?nÂŸ­H¶x¼‚Fcó*.ÎYå<^-db®Ï	Ûã>×Ñ†õ¢Q]	áÌ¶Îz¹Œñ_L³{_N!þ¤ÌÈø.Ÿ{:<4—ÐÙ•fâvd>…ô–@ûÃXÒ#2#BQ¾XuÆà­[�†žuÒ%4�>õD£;BF“AW¬ñõbJNÎ�^'’Ð�ú82¬�Ð¦4bÙ»;…oX„6X�¬ƒ gÅ#{ûays&mÌÂR&w<SýÛ
+ø®L„]½‡^¾{¿KF8:|bš7
e¸†)JÍ‰÷G€7È7äŽU„Xëˆ´@€äy˜¹Éöhìõ+tD�È~†_˜i1+øÞºÝ¿è(zè©ÿ‹úUÈúüÞrÖž57zSk‘1Æ¾÷¥8)d](äé°þºI¼,qÞðŒ-š]EÄ
,ªM‘e×iËý‡0K:¬�XlÌµ¶ûøò×ìƒgô Š¾‚ëkp¹ÇM2¹$Ì)"‰Cf·\œêÇÉ,}–ƒ–åóLé›LÁLâÌÃ�HpI´�¤3&:f ð}"™3Qµeó
+²Ñ½G“¯*¿—FÐéoýt%&Ž·‰d$×q-ÜÂÀØ)ªŽqî•ß;ÊÝ¢pZÄV½Rh“
+ƒ`€$º?Sj‹p«<£~Á›)§”aJ ¤í°áxíAtSüÂ9ËÓµ´í\ªWJ¯,ã…P{Ó	}6/TgØ•‡OÈ™BâÛ$›ø³§RF“æ�cŠ‚1¹*øàb³ÒÄl”¬c¦cA˜c?’£þã¢­œ–ðr‹½»MZèêAj†#pÆq›é¶—Ð‰ÎË‹ü‘k—ä'�,Ÿ~Šþ·/ÊØ†_P`n§~ÇÀ¡jÝj«º@¯«(Ú/WHTÚÍi|Þ½’aÀ©rƒwÏÿÕ·ý¸�:"^±E\E0’3Ø*²þÅÖkª7ðÅ-¥yòžÝ1ãï»ç(ß ‘ö.	2©0ÂEPÖN2)Üè¿¹Âgwh£ªß=v…nÑ¡M¢ö4�Pæ¸ÁÉ=òŒKºý.º« X13@¦ç‹î‹õ‹ü‹l¢€¢œ¢°¢Ä¢Ø¢ì¢££(£<£P£d£x£Œ£ £´£È£Ü£ð£¤ ¤4¤H¤\¤p¤„¤˜¤¬¤À¤Ü¤ð¤¥ ¥D¥`¥t¥ˆ¥œ¥°¥Ì¥à¥ô¥¦$¦8¦L¦`¦t¦ˆ¦œ¦°¦Ä¦Ø¦ì¦§$§@§T§h§|§�§¤§¸§Ì§è§¨ ¨4¨H¨\¨p¨„¨˜¨¬¨À¨Ô¨è¨ü¨©$©8©L©`©t©ˆ©œ©¸©Ô©è©ü©ª,ª@ªTªhª|ª�ª¤ª¸ªÌªèª««4«P«l«ˆ«œ«°«Ì«à«ü«¬,¬@¬\¬p¬„¬˜¬¬¬À¬Ô¬è¬ü¬­,­@­\­p­Œ­ ­´­È­Ü­ð­®®,®@®T®h®”®°®Ì®à®ü®¯$¯8¯L¯`¯t¯ˆ¯œ¯°¯Ä¯Ø¯ì¯°°(°<°P°d°€°”°¨°¼°Ð°ä°ø°± ±<±P±d±€±¤±À±Ô±è±ü±²,²@²T²h²„²˜²¬²À²Ô²è²ü²³$³8³L³h³„³ ³´³È³Ü³ð³´´,´H´d´€´”´¨´¼´Ð´ä´ø´µ µ4µHµ\µpµ„µ˜µ¬µÀµÔµèµüµ¶4¶H¶\¶x¶Œ¶ ¶´¶È¶Ü¶ð¶··,·H·d·x·”·°·Ì·è·ü·¸,¸@¸\¸x¸Œ¸ ¸¼¸Ð¸ä¸ø¸¹ ¹4¹H¹\¹x¹Œ¹ ¹¼¹Ð¹ì¹ºº(º<ºPºdºxºŒº º´ºÈºôº»Œÿÿÿÿ%ŒÿÿÿÿGŒ"ÿÿÿÿ}Œ ÿÿÿÿ·Œ ÿÿÿÿñŒÿÿÿÿ'� ÿÿÿÿN�5ÿÿÿÿŠ�%ÿÿÿÿ¶�)ÿÿÿÿæ�(ÿÿÿÿŽ/ÿÿÿÿKŽÿÿÿÿgŽ'ÿÿÿÿ•ŽÿÿÿÿÍŽ-ÿÿÿÿûŽÿÿÿÿ�7ÿÿÿÿQ�ÿÿÿÿ|� ÿÿÿÿ¤�%ÿÿÿÿá�ÿÿÿÿ�*ÿÿÿÿ@�.ÿÿÿÿp�)1ÿÿÿÿÊ�%ÿÿÿÿð�9ÿÿÿÿ*‘
+2ÿÿÿÿf‘"ÿÿÿÿš‘ÿÿÿÿÁ‘9ÿÿÿÿ’%ÿÿÿÿD’
+Hÿÿÿÿ˜’
+/ÿÿÿÿï’)ÿÿÿÿ0“
+6ÿÿÿÿp“
+>ÿÿÿÿ¸“
+0ÿÿÿÿò“
+FÿÿÿÿB”
+ÿÿÿÿ„”
++ÿÿÿÿ¹”
+ÿÿÿÿá”
+"ÿÿÿÿ
•@)ÿÿÿÿ|•
+/ÿÿÿÿµ•
+ ÿÿÿÿß•-ÿÿÿÿ&–6ÿÿÿÿr–6ÿÿÿÿ½–
+7ÿÿÿÿþ–
+?ÿÿÿÿG—
+Aÿÿÿÿ’—
+AÿÿÿÿÝ—
+ÿÿÿÿ˜ÿÿÿÿ4˜+ÿÿÿÿl˜-ÿÿÿÿ¦˜3ÿÿÿÿÚ˜
+-ÿÿÿÿ™(ÿÿÿÿM™
+-ÿÿÿÿ„™ÿÿÿÿ¶™6ÿÿÿÿó™>ÿÿÿÿ8š#ÿÿÿÿcšÿÿÿÿŸšÿÿÿÿÛš
+2ÿÿÿÿ›
+.ÿÿÿÿO›Fÿÿÿÿ–›
+2ÿÿÿÿÒ›
+2ÿÿÿÿœ
+2ÿÿÿÿJœ
+2ÿÿÿÿ†œ
+2ÿÿÿÿÂœ
+2ÿÿÿÿþœFÿÿÿÿE�
+9ÿÿÿÿˆ�
+7ÿÿÿÿÉ�
+9ÿÿÿÿžFÿÿÿÿSžFÿÿÿÿšž	2ÿÿÿÿÕž+ÿÿÿÿŸ.ÿÿÿÿ<Ÿ+ÿÿÿÿnŸ-ÿÿÿÿ£Ÿ0ÿÿÿÿñŸ"ÿÿÿÿ0 !ÿÿÿÿc 
+*ÿÿÿÿ™ 
+Aÿÿÿÿä 
+dÿÿÿÿR¡
+$ÿÿÿÿ€¡1ÿÿÿÿ¼¡1ÿÿÿÿî¡
+ÿÿÿÿ¢5ÿÿÿÿY¢&ÿÿÿÿ�¢=ÿÿÿÿÝ¢&ÿÿÿÿ1£+ÿÿÿÿp£ÿÿÿÿ¤£]ÿÿÿÿ¤!5ÿÿÿÿh¤
+3	ÿÿÿÿ®¤ÿÿÿÿà¤Kÿÿÿÿ,¥<"ÿÿÿÿŠ¥
+ÿÿÿÿ´¥$ÿÿÿÿí¥ÿÿÿÿ5¦;ÿÿÿÿ�¦Aÿÿÿÿý¦ÿÿÿÿ&§2ÿÿÿÿ`§ÿÿÿÿ‘§ÿÿÿÿÃ§=ÿÿÿÿ¨Iÿÿÿÿu¨(ÿÿÿÿ³¨Iÿÿÿÿ©!ÿÿÿÿL©!ÿÿÿÿ|©ÿÿÿÿ­©+ÿÿÿÿÚ©=ÿÿÿÿª+ ÿÿÿÿeª5ÿÿÿÿ›ª@ÿÿÿÿàª
+%ÿÿÿÿ«
+%ÿÿÿÿ>«7ÿÿÿÿv«-ÿÿÿÿ¤«ÿÿÿÿÁ«<ÿÿÿÿ¬-ÿÿÿÿI¬(�ÿÿÿÿþ¬
+.ÿÿÿÿ6­
ÿÿÿÿE­ %ÿÿÿÿŠ­
+"	ÿÿÿÿÝ­B#$ÿÿÿÿf®#&ÿÿÿÿ°®#ÿÿÿÿÚ®ÿÿÿÿþ®3ÿÿÿÿI¯#ÿÿÿÿ…¯!ÿÿÿÿÃ¯ÿÿÿÿý¯*ÿÿÿÿ.°:ÿÿÿÿo°9ÿÿÿÿ¯°9ÿÿÿÿï°2ÿÿÿÿ(±Jÿÿÿÿy±.ÿÿÿÿ®±5ÿÿÿÿê±ÿÿÿÿ$²,ÿÿÿÿQ²2ÿÿÿÿ„²@ÿÿÿÿÆ²'ÿÿÿÿ³#
+ÿÿÿÿ4³(ÿÿÿÿv³#.ÿÿÿÿÇ³6ÿÿÿÿþ³GÿÿÿÿG´B.ÿÿÿÿ·´8ÿÿÿÿð´Kÿÿÿÿ<µ
+9ÿÿÿÿµ$ÿÿÿÿ¿µÿÿÿÿíµCÿÿÿÿN¶-ÿÿÿÿ‹¶
+[ÿÿÿÿò¶
+@ÿÿÿÿ\·8ÿÿÿÿ±·
+@ÿÿÿÿû·
+OÿÿÿÿT¸
+8ÿÿÿÿ–¸
+Uÿÿÿÿõ¸
+(ÿÿÿÿF¹
+/ÿÿÿÿ¹
+"ÿÿÿÿ«¹
+&ÿÿÿÿÛ¹P:ÿÿÿÿkº
+8ÿÿÿÿ­º
++ÿÿÿÿâº@ÿÿÿÿ>»Cÿÿÿÿ›»Cÿÿÿÿû»
+GÿÿÿÿL¼
+Tÿÿÿÿª¼
+Dÿÿÿÿø¼
+DÿÿÿÿF½
+%ÿÿÿÿu½%ÿÿÿÿ½½Dÿÿÿÿ¾Eÿÿÿÿ`¾=ÿÿÿÿž¾
+2ÿÿÿÿÚ¾1ÿÿÿÿ ¿
+4ÿÿÿÿ^¿ÿÿÿÿ˜¿?ÿÿÿÿÞ¿Kÿÿÿÿ0À$ÿÿÿÿ\À$ÿÿÿÿ¦À$ÿÿÿÿðÀ
+KÿÿÿÿEÁ
+3ÿÿÿÿ‚ÁLÿÿÿÿÏÁ
+:ÿÿÿÿÂ
+:ÿÿÿÿWÂ
+:ÿÿÿÿ›Â
+:ÿÿÿÿßÂ
+:ÿÿÿÿ#Ã
+:ÿÿÿÿgÃLÿÿÿÿ´Ã
+AÿÿÿÿÿÃ
+?ÿÿÿÿHÄ
+Aÿÿÿÿ“ÄLÿÿÿÿàÄLÿÿÿÿ-Å	;ÿÿÿÿqÅ4ÿÿÿÿ¬Å7ÿÿÿÿêÅ:ÿÿÿÿ+Æ<ÿÿÿÿoÆ%AÿÿÿÿÖÆ%1ÿÿÿÿ,Ç&ÿÿÿÿfÇ
+=ÿÿÿÿ¯Ç
+RÿÿÿÿÈ
+zÿÿÿÿ�È
+0ÿÿÿÿÉÈ9ÿÿÿÿ
ÉEÿÿÿÿSÉ
+ÿÿÿÿvÉ NÿÿÿÿäÉ(ÿÿÿÿÊKÿÿÿÿ€Ê1+ÿÿÿÿìÊA
	ÿÿÿÿCË!ÿÿÿÿzË|ÿÿÿÿÌ":ÿÿÿÿcÌ
+:
+ÿÿÿÿ±Ì%ÿÿÿÿùÌXÿÿÿÿRÍI6ÿÿÿÿÑÍ
+ÿÿÿÿüÍ3ÿÿÿÿKÎ0ÿÿÿÿ±Î(Kÿÿÿÿ8Ï$Pÿÿÿÿ¬Ï0ÿÿÿÿçÏIÿÿÿÿ?Ð"ÿÿÿÿzÐ!ÿÿÿÿ·ÐVÿÿÿÿ'Ñ!lÿÿÿÿ´Ñ/ÿÿÿÿÒ.nÿÿÿÿ�Ò8ÿÿÿÿñÒ3ÿÿÿÿ2Ó ÿÿÿÿiÓ;ÿÿÿÿ¦ÓMÿÿÿÿôÓDÿÿÿÿYÔ=ÿÿÿÿ—ÔNÿÿÿÿêÔ
+9ÿÿÿÿ-Õ
+/ÿÿÿÿfÕAÿÿÿÿ¨Õ5ÿÿÿÿÞÕÿÿÿÿÖPÿÿÿÿjÖ*9ÿÿÿÿÍÖ+Âÿÿÿÿº×
+5ÿÿÿÿù×
ÿÿÿÿØ!*ÿÿÿÿSØ
+3ÿÿÿÿ¹ØC''ÿÿÿÿJÙ))ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%08lx>	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] +base[%4ld]  %04lx <corrupt offset: %lx>
+	[Name Pointer/Ordinal] Table	%08lx
+	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:     Ordinal  Hint  Member-Name  Bound-To
 
-	DLL Name: %s
+
+	DLL Name: %.*s
 
 
 PE File Base Relocations (interpreted .reloc section contents)
@@ -48,35 +183,56 @@ PE File Base Relocations (interpreted .r
       enum; End+1 symbol: %ld
       struct; End+1 symbol: %ld
       union; End+1 symbol: %ld
+ version array off: %u
+
 Characteristics 0x%x
 
+Dump of %s
+
 Dynamic Section:
 
-Export Address Table -- Ordinal Base %ld
+Error: section %s contains the debug data starting address but it is too small
 
-Function descriptor located at the start address: %04lx
+Exec Auxiliary Header
 
-No reldata section! Function descriptor not decoded.
+Export Address Table -- Ordinal Base %ld
 
 Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Program Header:
 
+Stack size for functions.  Annotations: '*' max stack, 't' tail call
+
 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 contents cannot be read
+
+There is an export table in %s, but it is too small (%d)
+
 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:
@@ -85,246 +241,1264 @@ Version definitions:
 
 Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld
 
-[Ordinal/Name Pointer] Table
+WARNING: Extra data in .rsrc section - it will be ignored by Windows:
+
+[Ordinal/Name Pointer] Table -- Ordinal Base %ld
 
 ppcboot header:
-  consider relinking with --support-old-code enabled  first occurrence: %s: arm call to thumb  first occurrence: %s: thumb call to arm  required from %s:
- <EABI version unrecognised> Glue code sequence Register restore millicode Register save millicode [32bitmode] [FPA float format] [Maverick float format] [VFP float format] [Version1 EABI] [Version2 EABI] [abi unknown] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [absolute position] [cpu32] [d-float] [dynamic symbols use segment index] [floats passed in float registers] [floats passed in integer registers] [g-float] [has entry point] [interworking enabled] [interworking flag not initialised] [interworking not supported] [interworking supported] [m68000] [mapping symbols precede others] [mdmx] [memory=bank-model] [memory=flat] [mips16] [mips1] [mips2] [mips32] [mips32r2] [mips3] [mips4] [mips5] [mips64] [new ABI] [no abi set] [nonpic] [not 32bitmode] [old ABI] [position independent] [relocatable executable] [software FP] [sorted symbol table] [symbols have a _ prefix] [unknown ISA] [unsorted symbol table] vma:			Begin Address    End Address      Unwind Info
+        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
+    pc: 0x%08x line: %5u
+    psect idx 1: %u, offset 1: 0x%08x %08x
+    psect idx 2: %u, offset 2: 0x%08x %08x
+    psect idx 3: %u, offset 3: 0x%08x %08x
+    psect: %u, offset: 0x%08x %08x
+    routine name: %.*s
+   %02u    (type: %3u, size: %3u):    *unhandled* cmd %u
+   Erroneous length
+   Error: %s min length is %u
+   Error: The compile date is truncated
+   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
+   alignment  : 2**%u
+   alloc (len)   : %u (0x%08x)
+   alloc (len): %u (0x%08x)
+   ascii ident   : %.*s
+   binary ident  : 0x%08x
+   bitmap: 0x%08x (count: %u):
+   code address: 0x%08x
+   compile date   : %.17s
+   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
+   entry point: 0x%08x
+   error severity: %x
+   file: %.*s
+   filename   : %.*s
+   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
+   language name: %.*s
+   linkage index: %u, global: %.*s
+   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
+   module version : %.*s
+   name          : %.*s
+   name        : %.*s
+   name       : %.*s
+   ncmds:      %#lx
+   number of cond linkage pairs: %u
+   object name   : %.*s
+   offset: 0x%08x, val: 0x%08x
+   proc descr : 0x%08x
+   psect index : %u
+   psect index for entry point : %u
+   psect index: %u
+   psect offset: %u
+   psect offset: 0x%08x
+   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u
+   setfile %u
+   setlnum %u
+   setrec %u
+   signature: %.*s
+   sizeocmds:  %#lx
+   structure level: %u
+   symbol vector offset: 0x%08x
+   symvec offset : 0x%08x
+   title: %.*s
+   transfer addr flags: 0x%02x
+   transfer addr psect: %u
+   transfer address   : 0x%08x
+   vector      : 0x%08x
+   version mask: 0x%08x
+   version:    %x
+  %s (len=%u):
+  %u: size: %u, flags: 0x%02x, name: %.*s
+  EEOM (len=%u):
+  EGSD (len=%u):
+  EGSD entry %2u (type: %u, len: %u):   EMH %d (len=%u):   base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x   base_va : 0x%08x
+  bitcount: %u, base addr: 0x%08x
+  calls:
+  chgprtoff : %5u
+  codeadroff: %5u, lpfixoff  : %5u
+  fixuplnk: 0x%08x %08x
+  flags: 0x%08x
+  iaflink : 0x%08x %08x
+  image %u (%u entries)
+  image %u (%u entries), offsets:
+  lppsbfixoff: %5u
+  psect start: 0x%08x, length: %u
+  qdotadroff: %5u, ldotadroff: %5u
+  qrelfixoff: %5u, lrelfixoff: %5u
+  required from %s:
+  shlextra  : %5u, permctx   : %5u
+  shlstoff  : %5u, shrimgcnt : %5u
+  size : %u
+  the input  file's flags: %s  the output file's flags: %s %08x (<unknown>) 0x%08x 64B <EABI version unrecognised> <Unrecognised flag bits set> BPAGE: %u COM COMM Change Protection (%u entries):
+ Code Address Reference Fixups:
+ DEF EXE FPU support required:  First address : 0x%08x 0x%08x
+ Fourth address: 0x%08x 0x%08x
+ GBL LIB Linkage Pairs Reference Fixups:
+ MACH-O header:
+ NOMOD NORM OVR PIC QVAL RD REL 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 [64-bit doubles] [BE8] [FDPIC ABI supplement] [FPA float format] [LE8] [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:  and check the symbol visibility debug module table : vbn: %u, size: %u
+ debug symbol table : vbn: %u, size: %u (0x%x)
+ failed to convert GOTPCREL relocation against '%s'; relink with --no-relax
+ fixup info rva:  flags: 0x%04x global symbol table: vbn: %u, records: %u
+ ident: 0x%08x, name: %.*s
+ ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
+ image build ident: %.*s
+ image ident      : %.*s
+ image name       : %.*s
+ image type: %u (%s) img I/O count: %u, nbr channels: %u, req pri: %08x%08x
+ link time        : %s
+ linker flags: %08x: linker ident     : %.*s
+ long-word .address reference fixups:
+ long-word relocation fixups:
+ majorid: %u, minorid: %u
+ module offset: 0x%08x, size: 0x%08x, (%u psects)
+ offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u
+ quad-word .address reference fixups:
+ quad-word relocation fixups:
+ section: base: 0x%08x%08x size: 0x%08x
+ 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
+ vma:		Begin    Prolog   Function Flags    Exception EH
+     		Address  Length   Length   32b exc  Handler   Data
  vma:            Hint    Time      Forward  DLL       First
                  Table   Stamp     Chain    Name      Thunk
-#<Invalid error code>%T: discarded in section `%s' from %s
-%s (%s): Section flag %s (0x%x) ignored%s(%s): relocation %d has invalid symbol index %ld%s(%s): warning: interworking not enabled.%s(%s+0x%lx): %s reloc against `%s': error %d%s(%s+0x%lx): %s reloc against local symbol%s(%s+0x%lx): %s relocation against SEC_MERGE section%s(%s+0x%lx): Stabs entry has invalid string index.%s(%s+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc%s(%s+0x%lx): cannot handle %s for %s%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections%s(%s+0x%lx): fixing %s%s(%s+0x%lx): invalid instruction for TLS relocation %s%s(%s+0x%lx): non-zero addend on %s reloc against `%s'%s(%s+0x%lx): reloc against `%s': error %d%s(%s+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern%s(%s+0x%lx): unresolvable %s relocation against symbol `%s'%s(%s+0x%lx): unresolvable relocation against symbol `%s'%s, section %s:
-  relocation %s should not be used in a shared object; recompile with -fPIC%s: !samegp reloc against symbol without .prologue: %s%s: %s symbol `%s' in %s is referenced by DSO%s: %s symbol `%s' isn't defined%s: %s' accessed both as normal and thread local symbol%s: %s+0x%lx: jump to stub routine which is not jal%s: %s: invalid needed version %d%s: %s: invalid version %u (max %d)%s: %s: reloc overflow: 0x%lx > 0xffff%s: .got subsegment exceeds 64K (size %d)%s: .opd is not a regular array of opd entries%s: .preinit_array section is not allowed in DSO%s: 0x%lx: fatal: reloc overflow while relaxing%s: 0x%lx: fatal: unaligned branch target for relax-support relocation%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x%s: 0x%lx: warning: bad R_SH_USES load offset%s: 0x%lx: warning: bad R_SH_USES offset%s: 0x%lx: warning: bad count%s: 0x%lx: warning: could not find expected COUNT reloc%s: 0x%lx: warning: could not find expected reloc%s: 0x%lx: warning: symbol in unexpected section%s: @gprel relocation against dynamic symbol %s%s: @internal branch to dynamic symbol %s%s: @pcrel relocation against dynamic symbol %s%s: ABI is incompatible with that of the selected emulation%s: ABI mismatch: linking %s module with previous %s modules%s: Architecture mismatch with previous modules%s: Bad relocation record imported: %d%s: Bad symbol definition: `Main' set to %s rather than the start address %s
-%s: CALL16 reloc at 0x%lx not against global symbol%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: Instruction set mismatch with previous modules%s: Internal inconsistency error for value for
- linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx
-%s: Internal inconsistency; no relocation section %s%s: Invalid relocation type exported: %d%s: Invalid relocation type imported: %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 PLT nor GOT for relocation %s against symbol `%s' from %s section%s: No core to allocate a symbol %d bytes long
-%s: No core to allocate section name %s
-%s: Not enough room for program headers (allocated %u, need %u)%s: Not enough room for program headers, try linking with -N%s: Only registers %%g[2367] can be declared using STT_REGISTER%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive%s: Relocation %s (%d) is not currently supported.
-%s: Relocations in generic ELF (EM: %d)%s: TLS local exec code cannot be linked into shared objects%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: Unhandled import type; %x%s: Unknown relocation type %d
-%s: Unknown section type in a.out.adobe file: %x
-%s: Unrecognised import name type; %x%s: Unrecognised import type; %x%s: Unrecognised machine type (0x%x) in Import Library Format archive%s: Unrecognized storage class %d for %s symbol `%s'%s: Warning: Arm BLX instruction targets Arm function '%s'.%s: Warning: Thumb BLX instruction targets thumb function '%s'.%s: XCOFF shared object when not producing XCOFF output%s: XMC_TC0 symbol `%s' is class %d scnlen %d%s: __gp does not cover short data segment%s: `%s' accessed both as normal and thread local symbol%s: `%s' has line numbers but no enclosing section%s: `%s' in loader reloc but not loader sym%s: `ld -r' not supported with PE MIPS objects
-%s: access beyond end of merged section (%ld + %ld)%s: address 0x%s out of range for Intel Hex file%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d%s: bad pair/reflo after refhi
-%s: bad reloc address 0x%lx in section `%s'%s: bad relocation section name `%s'%s: bad section length in ihex_read_section%s: bad string table size %lu%s: bad symbol index: %d%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: change in gp: BRSGP %s%s: check_relocs: unhandled reloc type %d%s: class %d symbol `%s' has no aux entries%s: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: compiled for a 64 bit system and target is 32 bit%s: compiled for a big endian system and target is little endian%s: compiled for a little endian system and target is big endian%s: compiled normally and linked with modules compiled with -mrelocatable%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: compiled with -mrelocatable and linked with modules compiled normally%s: could not find output section %s%s: could not find output section %s for input section %s%s: could not write out added .cranges entries%s: could not write out sorted .cranges entries%s: csect `%s' not in enclosing section%s: directive LOCAL valid only with a register or absolute value%s: dtp-relative relocation against dynamic symbol %s%s: duplicate export stub %s%s: dynamic object with no .loader section%s: encountered datalabel symbol in input%s: endianness incompatible with that of the selected emulation%s: error: relocation %s not a multiple of %d%s: error: unaligned relocation type %d at %08x reloc %08x
-%s: gp-relative relocation against dynamic symbol %s%s: illegal relocation type %d at address 0x%lx%s: illegal section name `%s'%s: illegal symbol index in reloc: %d%s: indirect symbol `%s' to `%s' is a loop%s: internal error in ihex_read_section%s: internal error, internal register section %s had contents
-%s: internal error, symbol table changed size from %d to %d words
-%s: invalid SHT_GROUP entry%s: invalid link %lu for reloc section %s (index %u)%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 relocation type %d%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx
-%s: invalid string offset %u >= %lu for section `%s'%s: invalid symbol table: duplicate symbol `%s'
-%s: jump too far away
-%s: line number overflow: 0x%lx > 0xffff%s: linking %s module with previous %s modules%s: linking 32-bit code with 64-bit code%s: linking 64-bit files with 32-bit files%s: linking UltraSPARC specific with HAL specific code%s: linking auto-pic files with non-auto-pic files%s: linking big-endian files with little-endian files%s: linking constant-gp files with non-constant-gp files%s: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers%s: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double%s: linking files compiled for HCS12 with others compiled for HC12%s: linking little endian files with big endian files%s: linking non-pic code in a position independent executable%s: linking non-pic code in a shared library%s: linking trap-on-NULL-dereference with non-trapping files%s: loader reloc in read-only section %s%s: loader reloc in unrecognized section `%s'%s: misplaced XTY_LD `%s'%s: no group info for section %s%s: no initialized registers; section length 0
-%s: no such symbol%s: no symbol "%s"%s: not fully implemented%s: not implemented%s: not supported%s: object size does not match that of target %s%s: pc-relative relocation against dynamic symbol %s%s: probably compiled without -fPIC?%s: register relocation against non-register symbol: %s in %s%s: register relocation against non-register symbol: (unknown) in %s%s: reloc %s:%d not in csect%s: reloc overflow 1: 0x%lx > 0xffff%s: relocatable link from %s to %s not supported%s: relocation %s can not be used when making a shared object; recompile with -fPIC%s: relocation %s cannot be used when making a shared object%s: relocation %s in section %s with no GOT created%s: relocation %s is not allowed for global symbol: `%s' from %s section%s: relocation %s is not supported for symbol %s.%s: relocation %s is not yet supported for symbol %s.%s: relocation %s should not be used when making a shared object; recompile with -fPIC%s: relocation %s with non-zero addend %d against local symbol from %s section%s: relocation %s with non-zero addend %d against symbol `%s' from %s section%s: relocation size mismatch in %s section %s%s: relocs in section `%s', but it has no contents%s: short data segment overflowed (0x%lx >= 0x400000)%s: size field is zero in Import Library Format header%s: speculation fixup to dynamic symbol %s%s: string not null terminated in ILF object file.%s: string too long (%d chars, max 65535)%s: symbol `%s' has unrecognized csect type %d%s: symbol `%s' has unrecognized smclas %d%s: symbol `%s' required but not present%s: the target (%s) of a %s relocation is in the wrong output section (%s)%s: too many initialized registers; section length %ld
-%s: tp-relative relocation against dynamic symbol %s%s: unable to find ARM glue '%s' for `%s'%s: unable to find THUMB glue '%s' for `%s'%s: undefined sym `%s' in .opd section%s: undefined version: %s%s: undefined versioned symbol name %s%s: unexpected ATN type %d in external part%s: unexpected reloc type %u in .opd section%s: unexpected type after ATN%s: unhandled dynamic relocation against %s%s: unimplemented %s
-%s: unimplemented ATI record %u for symbol %u%s: unknown relocation type %d%s: unknown relocation type %d for symbol %s%s: unrecognized symbol `%s' flags 0x%x%s: unresolvable relocation %s against symbol `%s' from %s section%s: unresolvable relocation against symbol `%s' from %s section%s: unsupported relocation type %s%s: unsupported relocation type 0x%02x%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'
-%s: uses _-prefixed symbols, but writing file with non-prefixed symbols%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: uses non-prefixed symbols, but writing file with _-prefixed symbols%s: version count (%ld) does not match symbol count (%ld)%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: Empty loadable segment detected, is this intentional ?
-%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: allocated section `%s' not in segment%s: warning: duplicate line number information for `%s'%s: warning: illegal symbol index %ld in line numbers%s: warning: illegal symbol index %ld in relocs%s: warning: linking PIC files with non-PIC files%s: warning: symbol table too large for mmo, larger than 65535 32-bit words: %d.  Only `Main' will be emitted.
-%s: warning: unexpected redefinition of indirect versioned symbol `%s'%s: warning: unresolvable relocation %d against symbol `%s' from %s section%s: warning: unresolvable relocation against symbol `%s' from %s section%s:%d: Unexpected character `%s' in S-record file
-%s:%d: unexpected character `%s' in Intel Hex file
-%s:%u: bad checksum in Intel Hex file (expected %u, found %u)%s:%u: bad extended address record length in Intel Hex file%s:%u: bad extended linear address record length in Intel Hex file%s:%u: bad extended linear start address length in Intel Hex file%s:%u: bad extended start address length in Intel Hex file%s:%u: unrecognized ihex type %u in Intel Hex file
-*unknown*.glink and .plt too far apart.got section not immediately after .plt section32-bit double, 32bits gp relative relocation occurs for an external symbol64-bit double, : m32r instructions: m32rx instructions<Unrecognised flag bits set><unknown>@pltoff reloc against local symbolArchive has no index; run ranlib to add oneArchive object file in wrong formatAttempt to do relocatable link with %s input and %s outputBFD %s assertion fail %s:%dBFD %s internal error, aborting at %s line %d
-BFD %s internal error, aborting at %s line %d in %s
-Bad valueBase Relocation Directory [.reloc]Bound Import DirectoryCould not find relocation section for %sDebug DirectoryDelay Import DirectoryDeprecated %s called
-Deprecated %s called at %s line %d in %s
-Description DirectoryDwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu).Dwarf Error: Bad abbrev number: %u.Dwarf Error: Can't find .debug_abbrev section.Dwarf Error: Can't find .debug_line section.Dwarf Error: Can't find .debug_str section.Dwarf Error: Could not find abbrev number %u.Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu).Dwarf Error: Invalid or unhandled FORM value: %u.Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu).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 information.Dwarf Error: mangled line number section (bad file number).Dwarf Error: mangled line number section.ERROR: %s is compiled as absolute position code, whereas target %s is position independentERROR: %s is compiled as position independent code, whereas target %s is absolute positionERROR: %s is compiled for APCS-%d, whereas %s is compiled for APCS-%dERROR: %s is compiled for APCS-%d, whereas target %s uses APCS-%dERROR: %s is compiled for EABI version %d, whereas %s is compiled for version %dERROR: %s is compiled for the EP9312, whereas %s is compiled for XScaleERROR: %s passes floats in float registers, whereas %s passes them in integer registersERROR: %s passes floats in integer registers, whereas %s passes them in float registersERROR: %s uses FPA instructions, whereas %s does notERROR: %s uses Maverick instructions, whereas %s does notERROR: %s uses VFP instructions, whereas %s does notERROR: %s uses hardware FP, whereas %s uses software FPERROR: %s uses software FP, whereas %s uses hardware FPEntry offset        = 0x%.8lx (%ld)
-Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%xException Directory [.pdata]Export Directory [.edata (or where ever we found it)]Export Flags 			%lx
-Export RVAFAILED to find previous HI16 reloc
-File format is ambiguousFile format not recognizedFile in wrong formatFile too bigFile truncatedFlag field          = 0x%.2x
-Forwarder RVAGP relative relocation used when GP not definedGP relative relocation when _gp not definedGPDISP relocation did not find ldah and lda instructionsImport Address Table DirectoryImport Directory [parts of .idata]Internal inconsistency: remaining %u != max %u.
-  Please report this bug.Invalid bfd targetInvalid operationLength              = 0x%.8lx (%ld)
-Linking mips16 objects into %s format is not supportedLoad Configuration DirectoryMajor/Minor 			%d/%d
-Malformed archiveMemory exhaustedMissing IHCONSTMissing IHIHALFName 				No Mem !No errorNo more archived filesNo symbolsNonrepresentable section on outputNot enough memory to sort relocationsNumber in:
-Object module NOT error-free !
+#<invalid error code>%%X%%P: relocation %s against `%s' which may bind externally 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: %F%P: failed to create GNU property section
+%H __tls_get_addr lost arg, TLS optimization disabled
+%H arg lost __tls_get_addr, TLS optimization disabled
+%H: %s against %pT is not supported
+%H: %s against `%pT': error %d
+%H: %s for indirect function `%pT' unsupported
+%H: %s out of range
+%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 here
+%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
+%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction
+%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction
+%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction
+%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction
+%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction
+%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 %s returns an unrecognized value %x
+%H: relocation references symbol not defined in the module
+%H: relocation to `%s+%v' may have caused the error above
+%H: relocation type %u is not supported
+%H: unresolvable %s against `%pT'
+%H: unresolvable %s relocation against symbol `%s'
+%H: warning: %s unexpected insn %#x.
+%H: warning: relocation to "%s" references a different segment
+%P%X: can not read symbols: %E
+%P%X: read-only segment has dynamic relocations
+%P: %H: error: %s with unexpected instruction %x
+%P: %pB(%pA): error: need linked-to section for --gc-sections
+%P: %pB(%s): error opening thin archive member: %E
+%P: %pB: %s is not supported for `%pT'
+%P: %pB: copy relocation against non-copyable protected symbol `%s'
+%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB
+%P: %pB: failed to add %s to first hash
+%P: %pB: failed to allocate 32-bit DT_RELR bitmap
+%P: %pB: failed to allocate 64-bit DT_RELR bitmap
+%P: %pB: failed to allocate compact relative reloc section
+%P: %pB: failed to allocate memory for section `%pA'
+%P: %pB: failed to allocate relative reloc record
+%P: %pB: failed to finish relative relocations
+%P: %pB: note: the message above does not take linker garbage collection into account
+%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)
+%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: --relax and -r may not be used together
+%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: auto overlay error: %E
+%P: can not build overlay stubs: %E
+%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: corrupt input: %pB
+%P: discarded output section: `%pA'
+%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
+%P: failed to create %s
+%P: failed to create %sn%P: failed to create GOT PLT .eh_frame section
+%P: failed to create GOT PLT section
+%P: failed to create GOT sections
+%P: failed to create IBT-enabled PLT section
+%P: failed to create PLT .eh_frame section
+%P: failed to create PLT .sframe section
+%P: failed to create PLT GOT .sframe section
+%P: failed to create VxWorks dynamic sections
+%P: failed to create ifunc sections
+%P: failed to create second PLT .sframe section
+%P: failed to create the second PLT .eh_frame section
+%P: failed to size relative relocations
+%P: first_hash failed to create: %E
+%P: linkage table error against `%pT'
+%P: multiple entry points: in modules %pB and %pB
+%P: relocatable link is not supported
+%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 PDE
+%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%H: %s against `%s': error: relocation applies outside section
+%X%H: %s against `%s': error: relocation target address is odd
+%X%H: %s against `%s': internal error: unexpected relocation result %d
+%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: relocation to "%s" references a different segment
+%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(%pA): relocation is not supported
+%X%P: %pB(%pA): relocation out of range
+%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%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
+%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB
+%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+%Xerror: found a total of %d inputs incompatible with BTI requirements.
+%Xerror: found a total of %d inputs incompatible with GCS requirements.
+%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 symbol number %lu uses unsupported binding of %u%pB symbol number %lu uses unsupported type of %u%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 %zu is empty%pB(%pA): error: secondary reloc %zu is of an unknown type%pB(%pA): error: secondary reloc %zu references a deleted symbol%pB(%pA): error: secondary reloc %zu references a missing symbol%pB(%pA): error: secondary reloc section has non-standard sized entries%pB(%pA): error: secondary reloc section has zero sized entries%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): relocation %zu has invalid symbol index %lu%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(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only
+%pB(%s): Unknown destination type (ARM/Thumb) in %pB%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 (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB
+%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB
+%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: Adjusting branch at 0x%V towards "%s" in section %s
+%pB: BE8 images only valid in big-endian mode%pB: C_STAT isn't supported by XCOFF64%pB: Cannot create stub entry '%s'%pB: Cannot handle relocation value size of %d%pB: DT_STRTAB table is corrupt%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: Number of symbols in input file has increased from %lu to %u
+%pB: PC-relative offset overflow in GOT PLT entry for `%s'
+%pB: PC-relative offset overflow in PLT entry for `%s'
+%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%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: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed
+%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to generate dynamic relocs because a suitable section does not exist
+%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: adjusting invalid FileAlignment%pB: adjusting invalid SectionAlignment%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 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: branch displacement overflow in PLT entry for `%s'
+%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: can't link different ABI object.%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 export internal symbol `%s`.%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot handle more than %d dynamic symbols%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: conditional branch to undefined symbol `%s' not allowed%pB: corrupted group section: `%pA'%pB: could not find output section %pA for input section %pA%pB: could not read contents of group [%u]%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 against a local symbol 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: attribute section length too small: %ld%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 attributes version '%c'(%d) - expecting 'A'
+%pB: error: unknown mandatory EABI object attribute %d%pB: error: unsupported PLT type: %u%pB: expected symbol index in range 0..%lu but found local symbol with index %lu%pB: failed to extract object only section: %s%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 get symbol table in object only section: %s%pB: failed to open object only section: %s%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: 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 NumberOfRvaAndSizes%pB: invalid entry (%#x) in group [%u]%pB: invalid file to extract object only section: %s%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: mapped section %pA has non-NULL buffer%pB: misplaced XTY_LD `%s'%pB: missing import name for IMPORT_NAME_EXPORTAS for %s%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: non-canonical reference to canonical protected function `%s' in %pB%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: overflow reloc count too small%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 %#x unsupported%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 absolute symbol `%s' can not be used when making a shared object%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object%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 %s overflow 0x%lx%pB: relocation %s right shift %d error 0x%lx%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_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE%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 %s is compressed with zstd, but BFD is not built with zstd support%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %u%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 based reloc type (%u) is not supported with -z pack-relative-relocs%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: string table [%u] is corrupt%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: symbol name exceeds given max length of %d%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 compress section %s%pB: unable to create fake empty section%pB: unable to decompress section %s%pB: unable to fill in DataDirectory[%d]: %s is missing%pB: unable to fill in DataDirectory[%d]: %s not defined correctly%pB: unable to fill in DataDirectory[%d]: %s not properly aligned%pB: unable to fill in DataDirectory[%d]: size can't be read from %s%pB: unable to fill in DataDirectory[%d]: size too large for the containing section%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 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: unexpected type (%#x) section `%s' in group [%u]%pB: unhandled dynamic relocation against %s%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: 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 bfd relocation type %#x%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation %s against symbol `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type %s%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported swap_aux_in for storage class %#x%pB: unsupported swap_aux_out for storage class %#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 is required by -z force-bti, but this input object file lacks the necessary property note.
+%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
+%pB: warning: RVE PLT generation not supported%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up%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 %lu 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 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: 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: truncated `%s' option%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment%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: warning: win32pstatus %s of size %lu bytes is too small%pB: will not resolve runtime TLS relocation%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u%pB: wrong auxtype %#x for storage class %#x%pB: x86 ISA needed: %pB: x86 ISA used: %pB:%.8s: RVA truncated%pB:%.8s: section below image base%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 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%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s%pB[%pA]: no output section for space %pA%pcrel_lo missing matching %pcrel_hi%pcrel_lo overflow with an addend%pcrel_lo section symbol with an addend%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20%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 is defined but could not be loaded: %s%s is defined but plugin support is disabled%s is loaded but symbol "%s" is not found: %s%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s, iter %u
+  branch         %lu
+  long branch    %lu
+  plt call       %lu
+  global entry   %lu%s: BFD %s internal error, aborting at %s:%d
+%s: BFD %s internal error, aborting at %s:%d in %s
+%s: Bad ELF id: `%d'%s: ISA string cannot contain uppercase letters%s: ISA string must begin with rv32, rv64 or Profiles%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: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: failed to open to extract object only section: %s%s: first ISA extension must be `e', `i' or `g'%s: invalid prefixed ISA extension `%s' ends with <number>p%s: no such symbol%s: not implemented%s: not supported%s: object size does not match that of target %s%s: prefixed ISA extension must separate with _%s: undefined version: %s%s: unknown prefixed ISA extension `%s'%s: unknown standard ISA extension or prefix class `%c'%scannot + base extension `%s' in %s `%s'%sdeprecated - extension `%s' in %s `%s'%sinvalid ISA extension ends with <number>p in %s `%s'%sunknown ISA extension `%s' in %s `%s'%tlsdesc_lo with addend(%s): Unknown destination type (ARM/Thumb) in %pB(at bit offset %u)
+(descriptor)
+(format %c%c%c%c signature %s age %ld pdb %s)
+(no value)
+(not active)
+(not allocated)
+(reg: %u, disp: %u, indir: %u, kind: (thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)(too many global variables for -fpic: recompile with -fPIC)(trailing value)
+(value spec follows)
+)
+*** check this relocation %s*unhandled*
+*unhandled* dst type %u
+*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; recompile with -fPIE<corrupt info> %s<corrupt string length: %#x>
+<corrupt string offset: %#lx>
+<corrupt><unknown directory type: %d>
+<unknown mask flags><unknown: %x><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBase 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)
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsCopyright 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: could not find variable specification at offset 0x%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: section %s has no contentsDWARF error: section %s is too bigDWARF 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 DirectoryDescription DirectoryEIHD: (size: %u, nbr blocks: %u)
+Entry offset        = 0x%.8lx (%ld)
+Error: %pB and %pB has different DSP versionError: %pB and %pB has different FPU ABIError: %pB and %pB has different VDSP versionError: %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 supported only by GNU and FreeBSD targetsGNU_RETAIN section is supported only by GNU and FreeBSD targetsGOT 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 error: unreachable.LAM_U48 propertyLAM_U57 propertyLOGICAL_NAMES    Language Processor Name
+Length              = 0x%.8lx (%ld)
+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         NORMALNOTE: This behaviour is deprecated and will be removed in a future version of the linkerName 				NoneNumber in:
+OPR_ADD (add)
+OPR_AND (logical and)
+OPR_ASH (arithmetic shift)
+OPR_COM (complement)
+OPR_DIV (divide)
+OPR_EOR (logical exclusive or)
+OPR_INSV (insert field)
+OPR_IOR (logical inclusive or)
+OPR_MUL (multiply)
+OPR_NEG (negate)
+OPR_NOP (no-operation)
+OPR_REDEF (define a literal)
+OPR_REDEF (redefine symbol to curr location)
+OPR_ROT (rotate)
+OPR_SEL (select)
+OPR_SUB (subtract)
+OPR_USH (unsigned shift)
 Ordinal Base 			%ld
-Output file requires shared library `%s'
-Output file requires shared library `%s.so.%s'
-PASSMECH not fully implementedPTA 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.
-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 %s, previously %s in %sRegister section has contents
-ReservedResource Directory [.rsrc]SDA relocation when _SDA_BASE_ not definedSEC_RELOC with no relocs in section %sSection has no contentsSecurity DirectorySize mismatch section %s=%lx, %s=%lxSpecial DirectoryStack overflow (%d) in _bfd_vms_pushStack underflow in _bfd_vms_popSymbol %s not defined for fixups
-Symbol %s replaced by %s
-Symbol `%s' has differing types: %s in %s, previously REGISTER in %sSymbol `%s' has differing types: REGISTER in %s, previously %s in %sSymbol needs debug section which does not existSystem call errorTOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compilingTable Addresses
+Private flags = 0x%lx : 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 togetherRL78 reloc divide by zeroRL78 reloc stack overflow/underflowR_AMD64_IMAGEBASE with __ImageBase undefinedR_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 %pASFrame sections with unexpected data encoding prevent .sframe generationSHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
+STABLE           STA_CKARG (compare procedure argument)
+STA_GBL (stack global) %.*s
+STA_LI (stack literal)
+STA_LW (stack longword)STA_MOD (stack module)
+STA_PQ (stack psect base + offset)
+STA_QW (stack quadword)STC_BOH_GBL (store cond BOH at global addr)
+STC_BOH_PS (store cond BOH at psect + offset)
+STC_BSR_GBL (store cond BSR at global addr)
+STC_BSR_PS (store cond BSR at psect + offset)
+STC_GBL (store cond global)
+STC_GCA (store cond code address)
+STC_LDA_GBL (store cond LDA at global addr)
+STC_LDA_PS (store cond LDA at psect + offset)
+STC_LP (store cond linkage pair)
+STC_LP_PSB (store cond linkage pair + signature)
+STC_NBH_GBL (store cond or hint at global addr)
+STC_NBH_PS (store cond or hint at psect + offset)
+STC_NOP_GBL (store cond NOP at global addr)
+STC_NOP_PS (store cond NOP at psect + offset)
+STC_PS (store cond psect + offset)
+STO_AB (store absolute branch)
+STO_B (store byte)
+STO_BR_GBL (store branch global) *todo*
+STO_BR_PS (store branch psect + offset) *todo*
+STO_CA (store code address) %.*s
+STO_GBL (store global) %.*s
+STO_GBL_LW (store global longword) %.*s
+STO_IMM (store immediate) %u bytes
+STO_IMMR (store immediate repeat) %u bytes
+STO_LW (store longword)
+STO_OFF (store LP with procedure signature)
+STO_OFF (store offset to psect)
+STO_QW (store quadword)
+STO_RB (store relative branch)
+STO_W (store word)
+SYM - Global symbol definition
+SYM - Global symbol reference
+SYMG - Universal symbol definition
+SYMM - Global symbol definition with version
+SYMV - Vectored symbol definition
+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 sectionsTOC overflow during stub generation; try -mminimal-toc when compilingTable Addresses
+The addend isn't allowed for R_RISCV_GOT_HI20The 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
-Unable to find equivalent output section for symbol '%s' from section '%s'Unexpected STO_SH5_ISA32 on local symbol is not handledUnhandled OSF/1 core file section type %d
-Unhandled relocation %sUnknown basic type %dUnrecognized TI COFF target id '0x%x'Unrecognized relocUnrecognized reloc type 0x%xUnsupported .stab relocationVariable `%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: %s does not support interworking, whereas %s doesWarning: %s supports interworking, whereas %s does notWarning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with itWarning: Clearing the interworking flag of %s due to outside requestWarning: Not setting interworking flag of %s since it has already been specified as non-interworkingWarning: Writing section `%s' to huge (ie negative) file offset 0x%lx.Warning: alignment %u of symbol `%s' in %s is smaller than %u in %sWarning: fixup count mismatch
-Warning: size of symbol `%s' changed from %lu in %s to %lu in %sWarning: type of symbol `%s' changed from %d to %d in %sWarning: writing archive was slow: rewriting timestamp
-Writing updated armap timestamp[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 bytesbad section index in %sbanked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)bfd_make_section (%s) failedbfd_set_section_flags (%s, %x) failedcan't build branch stub `%s'can't find branch stub `%s'cannot handle R_MEM_INDIRECT reloc when using %s outputcorrupt %s section in %scorrupt or empty %s section in %scould not locate special linker symbol __ctbpcould not locate special linker symbol __epcould not locate special linker symbol __gpcpu=HC11]cpu=HC12]cpu=HCS12]error: undefined symbol __rtinitfailed to allocate space for new APUinfo section.failed to compute new APUinfo section.failed to enter %sfailed to install new APUinfo section.generic linker can't handle %signoring reloc %s
-internal error: dangerous errorinternal error: dangerous relocationinternal error: out of range errorinternal error: unknown errorinternal error: unsupported relocation errorip2k 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.linkage table error against `%s'linker stubs in %u groups
-  branch       %lu
-  toc adjust   %lu
-  long branch  %lu
-  long toc adj %lu
-  plt call     %lumissing IHCONST relocmissing IHIHALF relocnon-zero addend in @fptr relocnot enough GOT space for local GOT entriesnot mapping: data=%lx mapped=%d
-not mapping: env var not set
-obj code %d not foundprivate flags = %lxprivate flags = %lx:private flags = %lx: private flags = %x:private flags = 0x%lx:reference to a banked address [%lx:%04lx] in the normal address space at %04lxreloc against unsupported sectionreloc not properly alignedreserved CTL cmd %dreserved OPR cmd %dreserved STA cmd %dreserved STO cmd %dsom_sizeof_headers unimplementedstack-entry-mask not fully implementedstack-from-image not implementedstack-literal not fully implementedstack-local-symbol not fully implementedstack-local-symbol-entry-point-mask not fully implementedstatic procedure (no name)stub entry for %s cannot load .plt, dp offset = %ldstubs don't match calculated sizeunable to read in %s section from %suncertain calling convention for non-COFF symbolunknown gsd/egsd subtype %dunsupported STA cmd %sunsupported relocunsupported reloc typeunsupported relocation between data/insn address spacesusing multiple gp valuesv850 architecturev850e architecturewarning: %s section has zero sizewarning: %s: local symbol `%s' has no sectionwarning: attempt to export undefined symbol `%s'warning: type and size of dynamic symbol `%s' are not definedwarning: unable to set size of %s section in %swarning: unable to update contents of %s section in %sProject-Id-Version: bfd 2.14rel030712
-POT-Creation-Date: 2003-07-11 13:53+0930
-PO-Revision-Date: 2003-11-25 08:39+0200
-Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>
+Title Text Header
+Too many unwind codes (%ld)
+Type                Size     Rva      Offset
+USRSTACKUnable to find the stub entry targeting %sUnable to link input file: %sUnable to load DLL.UnknownUnknown: %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
+Warning: should use "_" to contact Profiles with other extensionsWriting 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]\%pB: warning: %s BLX instruction targets %s function '%s'__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 function`xtheadvector' is conflict with the `v/zve32x' extension`zclsd' is conflict with the `c+f'/ `zcf' extension`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extensiona 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: %#lxbfd_mach_o_read_section_64: overlarge alignment value: %#lxbfd_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 %pBc' or `zcacan'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 find default versions of the ISA extension `%s'cannot read DMT
+cannot read DMT header
+cannot read DMT psect
+cannot read DST
+cannot read DST header
+cannot read DST symbol
+cannot read EIHA
+cannot read EIHD
+cannot read EIHI
+cannot read EIHS
+cannot read EIHVN header
+cannot read EIHVN version
+cannot read EISD
+cannot read GST
+cannot read GST record
+cannot read GST record header
+cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)class: %u, dtype: %u, length: %u, pointer: 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 reloc recordcorrupt vms valuecorrupted GST
+could 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]d' and `c', or `zcdd' and `zfad' or `zdinxdangerous 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)
+division by zerodst_define_location %u too largedynamic index information not availabledynamic relocation in read-only sectiondynreloc 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 adding attributeerror in %pB(%pA); no .eh_frame_hdr table will be createderror in %pB(%pA); no .sframe will be createderror in %pB(%pA); unexpected SFrame section typeerror 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 has a LOAD segment with RWX permissionserror: %pB has a TLS segment with execute permissionerror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %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 alignederror: %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 RISC-V used size: 0x%x>error: %pB: <corrupt property (0x%x) 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: SB relative addressing conflicts with use of R9error: %pB: XLEN of input (%u) doesn't match output (%u)error: %pB: cannot mix rf16 with full register set %pBerror: %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: mis-matched ISA string to merge '%s' and '%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 create group section symbolerror: %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: %pB: unsupported XLEN (%u), you might be using wrong emulationerror: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack sectionerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: conflicting CPU architectures %s vs %s in %pBerror: creating an executable stack because of -z execstack command line optionerror: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spaceerror: 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 %pBexecutablef' and `c', or `zcff' or `zfinxfailed 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 truncatedfinal size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spacefurther 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 definedhhidden 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
+input SFrame sections with different abi prevent .sframe generationinput SFrame sections with different format versions prevent .sframe generationinternal 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 internal: internal: unreachable INSN_CLASS_*invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid dynamic indexinvalid 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 grouplinker stubs in %u groupsliteralliteral relocation occurs for an external symbollocal symbol index too biglong branch stub `%s' offset overflowm' or `zmmulmach-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]: nativenew entry function(s) introduced but no output import library specified:nono address assigned to the veneers output section %sno dynamic index information availableno 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 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 overflowplugin framework: out of file descriptors. Try using fewer objects/archives
+pointer
+private flags = %lxprivate flags = %lx:private flags = %lx: private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
+protected symbolprotected symbol q' and `zfaq' or `zqinxrecbeg: name: %.*s
+recend
+recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'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 against `%s' has faulty GOT type 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: %sreserved cmd %drtnbeg
+rtnend: size 0x%08x
+rv%d does not support the `q' extensionrv%d does not support the `smmpm' extensionrv%d does not support the `smnpm' extensionrv%d does not support the `ssnpm' extensionrv%d does not support the `sspm' extensionrv%d does not support the `supm' extensionrv%d does not support the `zcf' extensionrv%de does not support the `h' extensionsection 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
+shared objectsize error in section %pAsmall-data section too large; lower small-data size limit (see option -G)smctr' or `ssctrsom_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 binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targetssymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targetssystem 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
+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 valuesv' or `zve64d' or `zve64f' or `zve32fv' or `zve64x' or `zve32xv850 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 LOAD segment with RWX permissionswarning: %pB has a TLS segment with execute permissionwarning: %pB has a corrupt string table indexwarning: %pB has a program header with invalid alignmentwarning: %pB has a section extending past end of filewarning: %pB has a segment extending past end of filewarning: %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(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: %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 memory sealing size: 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: unknown RISCV ABI 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: %s: missing .note.GNU-stack section implies executable stackwarning: %s: requires executable stack (because the .note.GNU-stack section is executable)warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: --plt-localentry is incompatible with power10 pc-relative codewarning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised.warning: NOTE: size discrepancies can cause real problems.  Investigation is advised.warning: 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 normal symbol `%s' in %pB is smaller than %u used by the common definition in %pBwarning: 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: enabling an executable stack because of -z execstack command line optionwarning: file %pB's arch flag %s conflict with target %s,set target arch flag to %swarning: file %pB's arch flag %s conflicts with target ck%s, using %swarning: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+warning: found a total of %d inputs incompatible with BTI requirements.
+warning: found a total of %d inputs incompatible with GCS requirements.
+warning: 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: privileged spec version 1.9.1 can not be linked with other spec versionswarning: 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: unrecognised arch name '%#x'warning: 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
+x ISA extension `%s' must be set with the versionsyesyou are not allowed to define %s in a scriptzbb' or `zbkbzbc' or `zbkczcb' and `zbazcb' and `zbbzcb' and `zmmul', or `zcb' and `mzcmp' is incompatible with `d' and `c', or `zcd' extensionzfh' and `zfazfh' and `zfa', or `zvfh' and `zfazfh' or `zhinxzfh' or `zvfhzfhmin' and `d', or `zhinxmin' and `zdinxzfhmin' and `q', or `zhinxmin' and `zqinxzfhmin' or `zhinxminzicfiss' and `zcmopzihintntl' and `c', or `zihintntl' and `zcazknd' or `zknezvbbzvbczvkbzvkgzvknedzvknha' or `zvknhbzvksedzvkshzvl*b extensions need to enable either `v' or `zve' extensionProject-Id-Version: bfd 2.44.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2025-07-13 08:44+0100
+PO-Revision-Date: 2025-07-15 13:24+0200
+Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>
 Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>
-X-Bugs: Report translation errors to the Language-Team address.
+Language: ro
 MIME-Version: 1.0
-Content-Type: text/plain; charset=ISO-8859-2
+Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
-	Tabelã Exportare de Adrese 			 Tabelã Exportare Adrese 		%08lx
-	Nume Pointer Tabelã 			Ordinal Tabelã 				Tabelã [Nume Pointer/Ordinal]	%08lx
-	code-base %08lx toc (încãrcabil/actual) %08lx/%08lx
-	relocarea %4d offset %4x [%4lx] %s	vma:  Sugestie/Ord Membru-Nume Salt-La
+Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);
+X-Bugs: Report translation errors to the Language-Team address.
+X-Generator: Poedit 3.5
+	    TLS: %pA	<corupt: 0x%08lx>	Tabel de adrese exportate 			Tabel de adrese exportate 		%08lx
+	Tabel de adrese de export rva (0x%lx) sau numÄƒr de intrÄƒri (0x%lx), nevalid
+	Tabel cu indicatori de nume rva (0x%lx) sau numÄƒr de intrÄƒri (0x%lx), nevalid
+	Tabelul ordinal rva (0x%lx) sau numÄƒrul de intrÄƒri (0x%lx) nevalid
+	Tabel cu indicatori de nume 			Tabel ordinal 				[%4ld] +base[%4ld]  %04lx <decalaj corupt: %lx>
+	Tabel [nume indicator/ordinal]	%08lx
+	non-TLS: %pA	realocarea %4d decalaj %4x [%4lx] %s	vma:     Nr-ordinal  Sugestie  Nume-Membru  Legat-de
+
 
-	Nume DLL: %s
+	Nume DLL: %.*s
 
 
-Relocãri Bazã Fiºier PE (interpretare conþinut secþiune .reloc)
+RealocÄƒri bazÄƒ de fiÈ™iere PE (interpretare conÈ›inut secÈ›iune .reloc)
 
-      Simbol Sfârºit+1: %-7ld   Tip:  %s
-      Simbol Sfârºit+1: %ld
+      Simbol SfÃ¢rÈ™it+1: %-7ld   Tip:  %s
+      Simbol SfÃ¢rÈ™it+1: %ld
       Primul simbol: %ld
       Simbol local: %ld
       Tip: %s
-      enum; Simbol Sfârºit+1: %ld
-      struct; Simbol Sfârºit+1: %ld
-      uniune; Simbol Sfârºit+1: %ld
+      enum; Simbol SfÃ¢rÈ™it+1: %ld
+      struct; Simbol SfÃ¢rÈ™it+1: %ld
+      union; Simbol SfÃ¢rÈ™it+1: %ld
+ decalajul matricei de versiuni: %u
+
 Caracteristici 0x%x
 
-Secþiune Dinamicã:
+DescÄƒrcare din %s
+
+SecÈ›iune dinamicÄƒ:
+
+Eroare: secÈ›iunea %s conÈ›ine adresa de pornire a datelor de depanare, dar este prea micÄƒ
 
-Tabelã Exportare de Adrese -- Bazã Ordinalã %ld
+Antetul auxiliar al executabilului
 
-Descriptorul de funcþie localizat la adresa de start: %04lx
+Tabel de adrese exportate -- BazÄƒ OrdinalÄƒ %ld
 
-Nu existã secþiune reldata! Descriptorul de funcþie nu este decodat.
+ÃŽnceput PartiÈ›ie[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
-Start Partiþie[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
+Antetul programului:
 
-Header Program:
+Dimensiunea stivei pentru funcÈ›ii.  AdnotÄƒri: â€ž*â€� stivÄƒ maximÄƒ, â€žtâ€� apel la coadÄƒ(tail)
 
-Tabelele de Exportare (interpretare conþinut secþiune %s)
+Tabelele de Exportare (s-a interpretat conÈ›inutul secÈ›iunii %s)
 
 
-Tabela de Funcþii (interpretare conþinut secþiune .pdata)
+Tabelul cu funcÈ›ii (interpretat conÈ›inutul secÈ›iunii %s)
 
-Tabelele de Importare (interpretat conþinutul secþiunii %s)
+Tabelul de funcÈ›ii (conÈ›inutul secÈ›iunii .pdata interpretat)
 
-Existã un prim thunk, dar secþiunea care îl conþine nu poate fi gãsitã
+Tabelele de Importare (interpretat conÈ›inutul secÈ›iunii %s)
 
-Existã o tabelã de exportare în %s la 0x%lx
+ExistÄƒ un director de depanare Ã®n %s la 0x%lx
 
-Existã o tabelã de export, dar secþiunea ce o conþine nu poate fi gãsitã
-
-Existã o tabelã de importare în %s la 0x%lx
-
-Existã o tabelã de importare, dar secþiunea care o conþine n-a putut fi gãsitã
-
-Referinþe Versiune:
-
-Definiþii de versiune:
-
-Adresã Virtualã: %08lx Mãrime Trunchiere %ld (0x%lx) Numãr acceptãri %ld
-
-[Ordinal/Nume Pointer] Tabelã
-
-header ppcboot:
-  luaþi în considerare relinkuirea cu --support-old-code activat  prima gãsire: %s: apelare braþ(arm) cãtre deget(thumb)  prima gãsire: %s: apelare deget(thumb) cãtre braþ(arm)  cerute de %s:
- <versiune necunoscutã EABI>Secvenþã de cod lipitã(glue)Registrul reface millicode Registrul salveazã millicode  [mod32biþi] [format float FPA] [format float Maverick] [format float VFP] [EABI Versiunea1] [EABI Versiunea2] [abi necunoscut] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [poziþie absolutã] [cpu32] [d-float] [simbolurile dinamice folosesc index de segment] [floats trecuþi în regiºtri de float] [floats trecuþi în regiºtrii de integer] [g-float] [are punct de intrare] [interlucru(interworking) activat] [marcajul(flag) de interlucru(interworking) nu este iniþializat] [interlucru(interworking) nesuportat] [interlucru(interworking) suportat] [m68000] [simbolurile de mapare le precedeazã pe celelalte] [mdmx] [memorie=mod-bank] [memorie=întinsã(flat)] [mips16] [mips1] [mips2] [mips32] [mips32r2] [mips3] [mips4] [mips5] [mips64] [ABI nou] [abi nesetat] [nonpic] [non-mod32biþi] [ABI vechi][ independent de poziþie] [executabil relocabil] [FP software] [tabelã sortatã de simboluri] [simbolurile au un _prefix] [ISA necunoscut] [tabelã de simboluri nesortatã] vma:			Adresã Început    Adresã Sfârºit      Info Unwind
- vma:		Început    Sfârºit    EH     EH     PrologSfârºit  Excepþii
-     		Adresã  Adresã  Manipulant  Date   Adresã    Mascã
- vma:          Sugestie   Timp      Înaintare  DLL     Primul
-                 Tabel   Marcaj     Lanþ    Nume      Thunk
-#<Cod invalid de eroare>%T: abandonat(discarded) în secþiunea `%s' din %s
-%s (%s): Marcajul(flag) de secþiune %s (0x%x) ignorat%s(%s): relocarea %d are indexul de simbol invalid %ld%s(%s): avertisment: interlucrul(interworking) nu este activat%s(%s+0x%lx):relocarea %s pe `%s': eroare %drelocare %s(%s+0x%lx): %s pe simbol local%s(%s+0x%lx): %s relocare pe secþiunea SEC_MERGE%s(%s+0x%lx): Intrarea bruscã(stab) are index ºir invalid.%s(%s+0x%lx): TOCuri multiple nu sunt suportateîn folosirea fiºierelor voastre crt; recompilaþi cu  -mminimal-toc sau upgradaþi gcc%s(%s+0x%lx): nu pot manipula %s pentru %s%s(%s+0x%lx): nu se poate gãsi %s, recompilaþi cu -ffunction-sections%s(%s+0x%lx): se fixeazã %s%s(%s+0x%lx): instrucþiune invalidã pentur relocarea TLS %s%s(%s+0x%lx): adãugare non-zero în relocarea %s pentru `%s'%s(%s+0x%lx): relocare pe `%s': eroare %d%s(%s+0 x%lx): optimizare apelare sibling pentru `%s' nu permite automatTOCuri multiple; recompilaþi cu -mminimal-toc sau -fno-optimize-sibling-calls, sau faceþi(make) `%s' extern%s(%s+0x%lx): relocare nerezolvabilã %s pe simbolul `%s'%s(%s+0x%lx): relocare nerezolvabilã pe simbolul `%s'%s, secþiunea %s:
-  relocarea %s n-ar trebui folositã într-un shared object; recompilaþi cu -fPIC%s: !samegp reloc apentru simbol fãrã .prologue: %s%s: %s simbolul `%s' în %s este referit de DSO%s: %s simbolul `%s' nu este definit%s: `%s' accesate ºi ca simboluri locale normale ºi ca simboluri locale pe fire (thread)%s: %s+0x%lx: salt la rutinã ciot(stub) ce nu este jal%s: %s: versiune necesarã %d invalidã%s: %s: versiune invalidã %u (max %d)%s: %s: depãºire(overflow) de relocãri: 0x%lx > 0xffff%s: .subsegmentul got depãseºte 64K (size %d)%s: .opd nu este un domeniu(array) de intrãri opd%s: secþiunea .preinit_array section nu este permisã în DSO%s: 0x%lx: fatal: relocare depãºitã(overflow) în timpul relaxãrii%s: 0x%lx: fatal: ramurã þintã nealiniatã pentru relocare cu suport de relaxare%s: 0x%lx: avertisment: R_SH_USES trimite cãtre insn necunoscut 0x%x%s: 0x%lx: avertisment:offset de încãrcare R_SH_USES invalid%s: 0x%lx: avertisment: offset R_SH_USES invalid%s: 0x%lx: avertisment: numãrãtoare(count) invalidã%s: 0x%lx: avertisment: nu s-a putut gãsi relocarea COUNT aºteptatã%s: 0x%lx: avertismetn: nu s-a putut gãsi relocarea aºteptatã%s: 0x%lx: avertisment: simbol în secþiune neaºteptatã%s: relocare @gprel pe simbolul dinamic %s%s: ramurã @internal cãtre simbolul dinamic %s%s: relocare @pcrell pe simbolul dinamic %s%s: ABI este incompatibil cu cel al emulaþiei selectate%s: nepotrivire ABI: linkuire modul %s cu module %s anterioare%s: Arhitectura nu se potriveºte cu modulele anterioare%s: Înregistrare de relocare greºitã importatã: %d%s: Definire invalidã de simbol: `Main' setat la %s în loc de adresa de start %s
-%s: relocarea CALL16 la 0x%lx nu este pe simbolul global%s: Eroare: definiþii multiple ale `%s'; începutul lui %s este setat într-un fiºierlinkuit anterior
-%s: eroare GASr:  PTB insn neaºteptat cu R_SH_PT_16%s: Setul de instrucþiuni nu se potriveºte cu modulele anterioare%s: eroare internã de inconsistenþã pentru valoarea
-registrului global alocat de linker: linkuit: 0x%lx%08lx != relaxat: 0x%lx%08lx
-%s: Inconsistenþã internã, nu existã secþiunea de relocare %s%s: Tip de relocare exportat invalid: %d%s: Tip de relocare importat invalid: %d%s: directivã LOCAL: Registrulr $%ld nu este un registru local.  Primul registru global $%ld.%s: Relocare malformatã detectatã pentru secþiunea %s%s:Nu existã nici PLT nici GOR pentru relocarea %s pe simbolul `%s' din secþiunea %s%s: Nu existã nucleu(core) pentru a aloca un simbol lung de %d octeþi
-%s:Nu existã nucleu(core) pentru a aloca numele de secþiune %s
-%s: Memorie insuficientã pentru headerele programului (alocatã %u, necesarã %u)%s: Memorie insuficientã pentru headerele programului, încercaþi linkuirea cu -N%s: Doar regiºtrii %%g[2367] pot fi declaraþi folosind STT_REGISTER%s: Tip de maºinã recunoscut dar nemanipulabil (0x%x) în arhiva Import Library Format%s: Relocarea %s (%d) nu este încã suportatã.
-%s: Relocãri în ELF generic (EM: %d)%s: codul local executabil TLS nu poate fi linkuit în shared objects%s: relocare TOC la 0x%x cãtre simbolul `%s' fãrã nici o intrare TOC%s: Þinta (%s) unei relocãri %s este în secþiunea nepotrivitã (%s)%s: Tip import nemanipulabil; %x%s: Tip necunoscut de relocare %d
-%s: Tip secþiune necunoscut în fiºier adobe a.out: %x
-%s: Tip nume import necunoscut; %x%s: Tip import necunoscut; %x%s: Tip maºinã necunoscut (0x%x) în arhiva Import Library Format%s: Clasã de depozitare(storage) %d necunoscutã pentru %s simbolul `%s'%s: Avertisment: BLX Arm are ca þintã funcþia Arm `%s'.%s: Avertisment: BLX Thumb are ca þintã funcþia thumb `%s'.%s: XCOFF shared object neproducând output XCOFF%s: simblul XMC_TC0 `%s' este clasa %d scnlen %d%s: __gp nu acoperã segmentul de date scurte%s: `%s' accesate ºi ca simboluri locale normale ºi ca simboluri locale pe fire (thread)%s: `%s' are numere de linii dar nici o secþiune de închidere%s: `%s' în relocare loader dar nu în loader sym%s: `ld -r' nu este suportat cu obiecte PE MIPS
-%s: acces dincolo de sfârºitul secþiunii concatenate(merged) (%ld + %ld)%s: adresa 0x%s este în afara domeniului(range) pentru fiºierul Intel Hex%s: simbol XTY_ER invalid `%s': clasa %d scnum %d scnlen %d%s: pair/reflo invalid dupã refhi
-%s: adresã eronatã de relocare 0x%lx în secþiunea `%s'%s: nume secþiune relocare invalid `%s'%s: mãrime secþiune invalidã în ihex_read_section%s: mãrime tabel ºiruri invalidã %lu%s:index de simboluri invalid: %d%s:relocare-offset-bazã-plus pentru simbolul registru: %s în %s%s:relocare-offset-bazã-plus pentru simbolul registru: (necunoscut) în %s%s: nu se poate reprezenta secþiunea `%s' în format de fiºier obiect a.out%s: nu se poate reprezenta secþiune `%s' în oasys%s: nu se poate reprezenta secþiunea pentru simbolul `%s' în formatul de fiºier obiect a.out%s: nu se poate aloca nume fiºier pentru fiºierul numãrul %d, %d octeþi
-%s: nu se poate crea intrarea trunchiatã %s%s: schimbare în gp: BRSGP %s%s: check_relocs: tip de relocare nemanipulabil %d%s: clasa %d simbolul `%s' nu are intrãri aux%s: compilat ca obiect pe 32-biþi ºi %s este pe 64-biþi%s: compilat ca obiect pe 64-biþi ºi %s este pe 32-biþi%s: compilat pentru un sistem 64 biþi ºi þinta fiind pe 32 biþi%s: compilat pentru un sistem big endiat iar þinta este little endian%s: compilat pentru un sistem little endiat iar þinta este big endian%s: compilat normal ºi linkuite cu module compilate cu -mrelocatable%s: compilat cu %s ºi linkuit cu module compilate cu %s%s: compilat cu %s ºi linkuit cu module care folosesc relocaþii non-pic%s: compilat cu -mrelocatable ºi linkuit cu module compilate normal%s: nu s-a putut gãsi secþiunea de output %s%s: nu am putut gãsi secþiunea de output %s pentru secþiunea de input %s%s: nu am putut scrie intrãrile .cranges adãugate%s: nu am putut scrie intrãrile .cranges sortate%s: csect `%s' nu este în secþiunea de închidere%s: directiva LOCAL este validã doar cu un registru sau o valoare absolutã%s: relocare relativã-dtp pentru simbolul dinamic %s%s: exportare de ciot(stub) duplicatã %s%s: obiect dinamic fãrã secþiune .loader%s: s-a întâlnit un simbol etichetãdate(datalabel) în intrare(input)%s: endianness incompatibilã cu aceea a emulaþiei selectate%s: eroare: relocarea %s nu este multiplu de %d%s: eroare: tip de reloare nealiniat %d la %08x relocarea %08x
-%s: relocare relativã-gp pentru simbolul %s%s: tip ilegal de relocare %d la adresa 0x%lx%s: nume ilegal de secþiune `%s'%s: index ilegal de simbol în reloc: %d%s: simbolul indirect `%s' pentru `%s' este o buclã%s: eroare internã în ihex_read_section%s: eroare internã, secþiunea de regiºtri internã %s nu are conþinut
-%s: eroare internã, tabela de simboluri ºi-a schimbat mãrimea din %d în %d cuvinte
-%s: intrare SHT_GROUP invalidã%s: link invalid %lu pentru secþiunea de relocare %s (index %u)%s: fiºier mmo invalid: YZ al lop_end (%ld) nu este egal cu numerele tetras ale lop_stab precedent (%ld)
-%s: fiºier mmo invalid: pentru lop_quote se aºtepta YZ = 1 s-a primit YZ= %d
-%s: fiºier mmo invalid: pentru lop_fixrx se aºtepta y =0 s-a primit y = %d
-%s: fiºier mmo invalid: pentru lop_fixo se aºtepta z =1 sau z =  2 s-a primit z = %d
-%s: fiºier mmo invalid: pentru lop_loc se aºtepta z =1 sau z =  2 s-a primit z = %d
-%s: fiºier mmo invalid: pentru lop_fixrx se aºtepta z =16 sau z = 24 s-a primit z = %d
-%s: fiºier mmo invalid: câmpurile y ºi z ale lop_stab sunt non-zero: y: %d, z: %d
-%s: fiºier mmo invalid: numele de fiºier pentru numãrul %d nu a fost specificat înainte de folosire
-%s: fiºier mmo invalid: fiºierul numãrul %d `%s' a fost deja introdus ca `%s'
-%s: fiºier mmo invalid: valoare de iniþializare pentru $255 nu este 'Main'
-%s: fiºier mmo invalid: pentru lop_fixrx octetul de înceout al operandului word trebuie sã fie 0 sau 1, s-a primit %d
-%s: fiºier mmo invalid: lop_end nu este ultimul element în fiºier
-%s: fiºier mmo invalid: lopcode `%d' nesuportat
-%s: tip de relocare invalid %d%s: adresã de start invalidã pentru regiºtrii iniþializaþi de lungime %ld: 0x%lx%08lx
-%s: offset de ºir invalid %u >= %lu pentru secþiunea `%s'%s: tabelã de simboluri invalidã: simbol `%s' duplicat
-%s: salt prea departe(far away)
-%s: depãºire(overflow) numãr linii: 0x%lx > 0xffff%s: linkuire a modulului %s cu modulele%s anterioare%s: linkuire cod 32-biþi cu cod 64-biþi%s: linkuire fiºiere pe 64-biþi cu fiºiere pe 32-biþi%s: linkuire cod specific UltraSPARC cu cod specific HAL%s: linkuire fiºiere auto-pic cu fiºiere non-auto-pic%s: linkuire fiºiere big-endiancu fiºiere little-endian%s: linkuire fiºiere constant-gp cu fiºiere non-constant-gp%s: linkuire a fiºierelor compilate pentru întregi(integers)  pe 16-biþi (-mshort) ºi a celorlalte pentru întregi(integers) pe 32-biþi%s: linkuire a fiºierelor compilate pentru double pe 32-biþi (-fshort-double) ºi a celorlalte pentru double pe 64-biþi%s:linkuire a fiºierelor compilate pentru HCS12 cu celelalte compilate pentru HC12%s: linkuire fiºiere little endian files cu fiºiere big endian%s: linkuire cod non-pic într-un executabil independent de poziþie%s: linkuire cod non-pic într-o bibliotecã globalã(shared)%s: linkuire trap-on-NULL-dereference cu fiºiere non-trapping%s: relocare loader în secþiunea doar-în-citire %s%s: relocare loader în secþiune necunoscutã `%s'%s:XTY_LD `%s' rãtãcit%s nu existã informaþii de grup pentru secþiunea %s%s: nu existã regiºtri iniþializaþi; lungime secþiune 0
-%s: nu existã acest simbol%s: nu existã simbolul "%s"%s: neimplementatã complet%s: neimplementat%s: nesuportat%s: mãrimea obiectului nu se potriveºte cu cea a þintei %s%s: relocare relativã pc pentru simbolul dinamic %s%s: probabil compilat fãrã -fPIC?%s:relocare registru pentru simbolul non-registru: %s în %s%s:relocare registru pentru simbolul non-registru: (necunoscut) în %s%s: relocarea %s:%d nu este în csect%s: depãºire(overflow) relocare 1: 0x%lx > 0xffff%s: legãtura relocalizabilã din %s cãtre %s nesuportatã%s: relocarea %s nu poate fi utilizatã când se face un shared object, recompilaþicu -fPIC%s: relocarea %s nu poate fi folositã când se creazã un shared object%s: relocarea %s din secþiunea %s fãrã GOT creat%s: relocarea %s nu este permisã pentru simbolul global `%s' din secþiunea %s%s: relocarea %s nu este suportatã pentru simbolul %s.%s: relocarea %s nu este încã suportatã pentru simbolul %s.%s: relocarea %s nu ar trebui utilizatã când se face un shared object, recompilaþicu -fPIC%s: relocarea %s cu adãugarea diferitã de zero %d pe simbolul local din secþiunea %s%s: relocarea %s cu adãugare non-zero %d pe simbolul `%s' din secþiunea %s%s: nepotrivire a mãrimii de relocare în %s secþiunea %s%s: relocãri în secþiunea `%s', dar fãrã conþinut%s: segment de date scurt depãºit(overflowed) (0x%lx >= 0x400000)%s: mãrimea câmpului din headerul Import Library Format este zero%s: rezolvare de speculaþie cãtre simbolul dinamic %s%s: ºirul nenul terminat în fiºier obiect ILF.%s: ºir prea lung (%d caractere, max 65535)%s: simbolul `%s' are tip necunoscut csect %d%s: simbolul `%s' are un smclas necunoscut %d%s: simbolul `%s' necesar, dar nu este prezent%s: þinta (%s) unei relocãri %s este într-o secþiune invalidã de output (%s)%s: prea mulþi regiºtri iniþializaþi; lungime secþiune %ld
-%s: relocare relativã-tp pentru simbolul dinamic %s%s: nu s-a putut gãsi legãtura(glue) ARM `%s' pentru `%s'%s: nu s-a putut gãsi legãtura(glue) THUMB `%s' pentru `%s'%s: sym nedefinit `%s' în secþiune .opd%s:versiune %s nedefinitã%s: nume de simbol versiune %s nedefinit%s: tip ATN neaºteptat %d în parte externã%s: tip de relocare neaºteptat %u în secþiune .opd%s: tip neaºteptat dupã ATN%s: relocare dinamicã nemanipulabilã pentru %s%s: %s neimplementat
-%s: înregistrare ATI neimplementatã %u pe simbolul %u%s: tip necunoscut de relocare %d%s: tip de relocare %d necunoscut pentru simbolul %s%s: simbol necunoscut `%s' marcaje(flags) 0x%x%s: relocare nerezolvabilã %s pe simbolul `%s' din secþiunea `%s'%s: relocare nerezolvabilã pe simbolul '%s' din secþiunea `%s'%s: tip de relocare nesuportat: %s%s: tip de relocare nesuportat 0x%02x%s: secvenþã mare(wide) de caractere 0x%02X 0x%02X nesuportatã dupã numele de simbol care începe cu `%s'
-%s: se folosesc simbolurile _-prefixate, dar se scrie fiºierul cu simboluri neprefixate%s: foloseºte câmpuri de marcaje e_flags (0x%lx) diferite de modulele anterioare (0x%lx)%s: foloseºte câmpuri marcaje e_flags (0x%lx) diferite de modulele anterioare (0x%lx)%s: se folosesc simboluri neprefixate, dar se scrie fiºierul cu simboluri _-prefixate%s: numãrul versiunii(%ld) nu se potriveºte cu numãrul simbolului (%ld)%s: avertisment: relocare %s pentru simbolul `%s' din secþiunea %s%s: avertisment: relocare %s spre 0x%x din secþiunea %s%s: avertisment: %s: depãºire(overflow) numãr de linii: 0x%lx > 0xffff%s: avertisment: S-a detectat segment încãrcabil vid, este intenþionat ?
-%s: avertisment: adãugarea GOT a %ld în `%s' nu se potriveºte adãugãrii GOT anterioare a %ld%s: avertisment: adãugarea PLT a %d în `%s' din secþiunea %s ignoratã%s: avertisment: secþiunea alocatã `%s' nu este în segment%s: avertisment: informaþie duplicat a numãrului de linii pentru `%s'%s: avertisment: index ilegal de simbol %ld în numãrul de linii%s: avertisment: index ilegal de simbol %ld în relocãri%s: avertisment: linkuire de fiºiere PIC cu fiºiere non-PIC%s: avertisment: tabela de simboluri prea mare pentru mmo, mai mare decâd 65535 cuvinte pe 32 de biþi: %d.  Doar 'Main' va fi emis.
-%s: avertisment: redefinire neaºteptatã a simbolului indirect cu versiune(versioned) `%s'%s: avertisment: relocare nerezolvabilã %d pe simbolul `%s' din secþiunea %s%s: avertisment: relocare nerezolvabilã pe simbolul `%s; din secþiunea `%s'%s:%d: Caracter neaºteptat `%s'în fiºier S-record
-%s:%d: caracter neaºteptat `%s' în fiºier Intel Hex
-%s:%u: checksum invalid în fiºier Intel Hex (se aºtepta %u, s-a gãsit %u)%s: %u: mãrime înregistrare a adresei extinse invalidã în fiºier Intel Hex%s: %u: mãrime înregistrare a adresei lineare extinse invalidã în fiºier Intel Hex%s: %u: mãrime adresã linearã de start extinsã invalidã în fiºier Intel Hex%s: %u: mãrime adresã de start extinsã invalidã în fiºier Intel Hex%s: %u: tip ihex necunoscut %u în fiºier Intel Hex
-*necunoscut*.glink ºi .plt prea departe unul de altulsecþiunea .got nu urmeazã imediat dupã secþiunea .pltdouble pe 32-biþi, relocarea relativã gp 32bits are loc pe un simbol externdouble pe 64-biþi, : instrucþiuni m32r: instrucþiuni m32rx<setare biþi de marcaj(flag) necunoscutã><necunoscut>relocare @pltoff pe simbol localArhiva nu are nici un index.; rulaþi ranlib pentru a adãuga unulFiºier obiect arhivã în format eronatÎncercare de a crea un link relocabil cu input %s ºi output %sAserþiunea BFD %s a eºuat %s:%dEroare internã BFD %s, se renunþã la %s linia %d
-Eroare interna BFD %s, se renunþã la %s linia %d în %s
-Valoare eronatãDirector Relocare de Bazã [.reloc]Director Importare de Graniþã(Bound)Nu se poate gãsi secþiunea de relocare pentru %sDirector DebugDirector Importare Întârziere%s învechitã apelatã
-%s învechitã apelatã la %s linia %d în %s
-Director DescriereEroare Pitic(Dwarf): Offset abbrev(%lu) mai mare sau egal cu mãrimea .debug_abbrev (%lu).Eroare Pitic(Dwarf): Numãr invalid de abbrev: %uEroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_abbrev.Eroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_line.Eroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_strEroare Pitic(Dwarf): Nu am putut gãsi numãrul abbrev: %u.Eroare Pitic(Dwarf): DW_FORM_strp offset (%lu) mai mare sau egalã cu mãrimea .debug_str (%lu).Eroare Pitic(Dwarf): Valoare FORM invalidã sau nemanipulabilã: %u.Eroare Pitic(Dwarf): Offsetul de linie (%lu) mai mare sau egal cu mãrimea .debug_line (%lu)Eroare Pitic(Dwarf): s-a gãsit adresa mãrimea `%u', acest cititor nu poate manipula mãrimi mai mari decât `%u'Eroare Pitic(Dwarf): S-a gãsit dwarf versiunea `%u', acest cititor manipuleazã doar informaþii ale versiunii 2.Eroare Pitic(Dwarf): secþiune numãr de linii trunchiatã (numãr fiºier eronat)Eroare Pitic(Dwarf): secþiune trunchiatã numãr de liniiEROARE: %s este compilat ca ºi cod poziþie absolutã,pe când þinta %seste independentã de poziþieEROARE: %s este compilat ca ºi cod independent de poziþie,pe când þinta %seste poziþie absolutãEROARE: %s este compilat pentru APCS-%d, pe când %s e compilat pentru APCS-%dEROARE: %s este compilat pentru APCS-%d, pe când þinta %s foloseºte APCS-%dEROARE: %s este compilat pentru EABI versiunea %d, pe când %s este compilat pentru versiunea %dEROARE: %s este compilat pentru EP9312, pe când %s e compilat pentru XScaleEROARE: %s trimite float în regiºtrii de float, pe când %s îi trimite în regiºtrii de integerEROARE: %s trimite integer în regiºtrii de integer, pe când %s îi trimite în regiºtrii de floatEROARE: %s foloseºte instrucþiuni FPA, pe când %s nu le foloseºteEROARE: %s foloseºte instrucþiuni Maverick, pe când %s nu le foloseºteEROARE: %s foloseºte instrucþiuni VFP, pe când %s nu le foloseºteEROARE: %s foloseºte FP hardware, pe când %s foloseºte FP softwareEROARE: %s foloseºte FP software, pe când %s foloseºte FP hardwareOffset intrare        = 0x%.8lx (%ld)
-Eroare: prima secþiune în segment (%s) începe la 0x%x pe când segmentul începe la 0x%xDirector Excepþie [.pdata]Director Exportare [.edata (sau oriunde se gãseºte)]Marcaje(Flags) Exportare 			%lx
-Exportare RVAEªUARE în gãsirea relocãrii anterioare HI16
-Formatul de fiºier este ambiguuFormatul de fiºier nu a fost recunoscutFiºier în format eronatFiºier prea mareFiºier trunchiatCâmp Marcaj(Flag)      = 0x%.2x
-Trimiþãtor(Forwarder) RVARelocare relativã GP folositã când GP nu este definitRelocare relativã GP atâta timp cât _gp nu este definitrelocarea GPDISP nu a gãsit instrucþiuni ldah ºi ldaDirector Importare Tabelã de AdreseDirector Importare [ pãrþi ale .idata]Inconsistenþã internã: rãmâne %u ! = max %u
-  Vã rugãm raportaþi acest bug.Þintã bfd invalidãOperaþie invalidãLungime              = 0x%.8lx (%ld)
-Linkuirea obiectelor mips16 în formatul %s nu este suportatãDirector Încãrcare ConfiguraþieMajor/Minor 			%d/%d
-Arhivã malformatãMemorie plinãIHCONST lipsãIHHALF lipsãNume 				Nu mai existã Mem !Nici o eroareNu mai existã fiºiere arhivateNici un simbolSecþiune de output nereprezentabilãNu existã memorie suficientã pentru a sorta relocãrileNumãr în:
-Modul obiect CU erori !
-Bazã Ordinalã 			%ld
-Fiºierul de output necesitã biblioteca globalã(shared) `%s'
-Fiºierul de output necesitã biblioteca globalã(shared) `%s'.so.`%s'
-PASSMECH neimplementatã completnepotrivire PTA: o adresã SHcompact (bit 0 == 0)nepotrivire PTB: o adresã SHmedia (bit 0 == 1)Nume Partiþie      = "%s"
-Sfârºit Partiþie[%d]    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
-Mãrime Partiþie[%d] = 0x%.8lx (%ld)
-Sector Partiþie[%d] sector = 0x%.8lx (%ld)
-Vã rugãm raportaþi acest bug.
-Citirea fiºierului arhivã mod marcaj de timpReferinþa la simbolul depãrtat `%s' folosind o relocare invalidã poate duce la execuþie incorectãRegistrul %%g%d a folosit incompatibilitãþi: %s în %s, anterior %s în %sSecþiunea registru nu are conþinut
-RezervatDirector Resursã [.rsrc]Relocare SDA când _SDA_BASE_ nu este definitSEC_RELOC fãrã relocãri în secþiunea %sSecþiunea nu are conþinutDirector SecuritateMãrime nepotrivitã secþiune %s=%lx, %s=%lxDirector SpecialDepãºire(overflow) de stivã(%d) în bfd_vms_pushSubfolosire(underflow) a stivei _bfd_vms_popSimbolul %s nu este definit pentru acceptare(fixups)
-Simbolul %s înlocuit de %s
-Simbolul `%s' are tipuri diferenþiate: %s în %s, anterior REGISTER în %sSimbolul `%s' are tipuri diferenþiate: REGISTER în %s, anterior %s în %sSimbolul necesitã secþiune de debug care nu existãEroare apel sistemsuprasolicitare(overflow) TOC: 0x%lx > 0x10000; încercaþi -mminimal-toc la compilareAdrese Tabelã
-Director Depozitare Fire(Thread) [.tls]Marcaj(stamp) Orã/Datã 		%lx
-Nnu am putut gãsi secþiunea de output echivalentã pentru simbolul '%s' din secþiunea '%s'STO_SH5_ISA32 neaºteptat pe simbol local ce nu poate fi manipulatTip nemanipulabil %d de fiºier nucleu(core) OSF/1
-Relocare nemanipulabilã %sTip de bazã necunoscut %dId þintã TI COFF necunoscut `0x%x'Reloc necunoscutTip de relocare necunoscut 0x%xRelocare .stab nesuportatãVariabila `%s' nu poate sã fie în una din regiunile mici, zero sau micuþeVariabila `%s' nu poate fi simultan ºi în regiuni de date mici ºi de date micuþeVariabila `%s' nu poate fi simultan ºi în regiuni de date mici ºi de date zeroVariabila `%s' nu poate fi simultan ºi în regiuni de date zero ºi de date micuþeVariabila `%s' nu poate ocupa regiuni multiple de date miciAvertisment, mãrimea secþiunii .pdata (%ld) nu este multiplu de %d
-Avertisment: %s nu suportã interlucru(interworking), pe când %s suportãAvertisment: %s suportã interlucru(interworking), pe când %s nu suportãAvertisment: Se ºterge marcajul(flag) de interlucru(interworking) al %s deoarece împreunã cu el a fost linkuit cod non-interlucru în %sAvertisment: Se ºterge marcajul(flag) de interlucru(interworking) al %s datoritã unei cereri din afarãAvertisment: Nu se seteazã marcajul(flagu) de interlucru(interworking) al %s atâta timp cât a fost specificat ca non-interlucru(interworking)Avertisment: Scrierea secþiunii `%s' spre offset de fiºier imens (sau negativ) 0x%lxAvertisment: alinierea %u al simbolului `%s' din %s este mai micã decât %u în %sAvertisment: nepotrivire numãrãtori acceptare(fixup)
-Avertisment: mãrimea simbolului `%s' a fost schimbatã din %lu din %s în %lu din %sAvertisment: tipul de simbol `%s' schimbat de la %d la %d în %sAvertisment: scrierea arhivei a fost lentã: se rescrie marcajul de timp(timestamp)
-Scriere marcaj de timp armap înnoit[abi=16-bit int, [abi=32-bit int, [al cãrui nume s-a pierdut]_bfd_vms_output_counted apelat cu prea mulþi octeþi_bfd_vms_output_counted apelat cu zero octeþiindex de secþiune invalid în %sadresa banked [%lx:%04lx] (%lx) nu este în acelaºi bank precum adresa banked curentã [%lx:%04lx] (%lx)bfd_make_section (%s) eºuatãbfd_set_section_flags (%s, %x) eºuatãnu se poate construi ramura trunchiatã `%s'nu pot gãsi ramura trunchiatã `%s'nu am putut mainpula(handle) relocarea R_MEM_INDIRECT în folosirea ieºirii(output) %ssecþiune coruptã %s în %ssecþiune %s coruptã sau vidã în %snu am putut localiza simbolul special de linker __ctbpnu am putut localiza simbolul special de linker __epnu am putut localiza simbolul special de linker __gpcpu=HC11]cpu=HC12]cpu=HCS12]eroare: simbol __rtinit nedefinitnu s-a putut aloca spaþiu pentru secþiunea nouã APUinfo.nu s-a putut calcula(compute) secþiunea nouã APUinfo.Eºec în introducerea %snu s-a putut instala secþiunea APUinfo nouã.linkerul generic nu poate manipula(handle) %sse ignorã reloc %s
-eroare internã: eroare periculoasãeroare internã: relocare periculoasãeroare internã: eroare depãºire de domeniu(out of range)eroare internã: eroare necunoscutãeroare internã: eroare de relocare nesuportatãip2k linker: lipseºte instrucþiunea de paginã la 0x%08lx (dest = 0x%08lx).ip2k linker: instrucþiune redundantã de paginã la 0x%08lx (dest = 0x%08lx).ip2k relaxer: headerul tablelului de schimbare este corupt.ip2k relaxer: schimbare de tabel fãrã potrivirea completã a informaþiei de relocare.eroare tabel de linkuire pentru `%s'trunchieri(stubs) de linker în grupurile %u
-  ramurã       %lu
-  ajustare toc   %lu
-  ramurã lungã  %lu
-  ajust. lungã toc %lu
-  apelare plt     %luIHCONST reloc lipsãIHIHALF reloc lipsãadãugare non-zero în relocare @fptrnu existã destul spaþiu GOT pentru intrãrile GOT localenu se mapeazã: data=%lx mapat =%d
-nu se mapeazã: variabila env nu este setatã
-codul abj %d nu a fost gãsitmarcaje (flags) private = %lxmarcaje(flags) private = %lx:marcaje(flags) private=- %lx: marcaje(flags) private = %x:marcaje(flags) private = 0x%lxreferinþã la adresa banked [%lx:%04lx] în spaþiul normal de adresã la %04lxrelocare pe o secþiune nesuportatãrelocare incorect aliniatãcmd CTL %d rezervatãcmd OPR %d rezervatãcmd STA %d rezervatãcmd STO %d rezervatãsom_sizeof_headers neimplementatãstack-entry-mask neimplementatã completstack-from-image neimplementatãstack-literal neimplementatã completstack-local-symbol neimplementatã completstack-local-symbol-entry-point-mask neimplementatã completprocedurã staticã (fãrã nume)intrarea trunchiatã pentru %s nu poate încãrca .plt, offset dp = %ldtrunchierile(stubs) sunt în neconcordanþã cu mãrimea calculatãnu se poate citi în secþiunea %s din %sconvenþie de apelare nesigurã pentru simbol non-COFFsubtip %d gsd/egsd necunoscutcmd STA %s nesuportatãrelocare nesuportatãtip de relocare nesuportatrelocare nesuportatã între datã/spaþiu adresã insnfolosire de valori multiple gparhitecturã v850arhitecturã v850eavertisment: secþiunea %s are mãrime zeroavertisment: %s: simbolul local `%s' nu are secþiuneavertisment: încercare de exportare a simbolului nedefinit `%s'avertisment: tipul ºi mãrimea simbolului dinamic `%s' nu sunt definiteavertisment: nu se poate seta mãrimea secþiunii %s în %savertisment: imposibil de adus la zi(update) conþinutul secþiunii %s în %s
\ No newline at end of file
+ExistÄƒ un director de depanare Ã®n %s, dar acea secÈ›iune nu are conÈ›inut
+
+ExistÄƒ un director de depanare, dar secÈ›iunea care Ã®l conÈ›ine nu a putut fi gÄƒsitÄƒ
+
+ExistÄƒ o primÄƒ subrutinÄƒ( thunk), dar secÈ›iunea care o conÈ›ine nu poate fi gÄƒsitÄƒ
+
+ExistÄƒ un tabel de export Ã®n %s la 0x%lx
+
+ExistÄƒ un tabel de export Ã®n %s, dar conÈ›inutul acestuia nu poate fi citit
+
+ExistÄƒ un tabel de export Ã®n %s, dar este prea mic (%d)
+
+ExistÄƒ un tabel de export, dar secÈ›iunea care Ã®l conÈ›ine nu poate fi gÄƒsitÄƒ
+
+ExistÄƒ o tabelÄƒ de importare Ã®n %s la 0x%lx
+
+ExistÄƒ un tabel de import Ã®n %s, dar acea secÈ›iune nu are conÈ›inut
+
+ExistÄƒ un tabel de importare, dar secÈ›iunea care Ã®l conÈ›ine n-a putut fi gÄƒsitÄƒ
+
+ReferinÈ›e de versiune:
+
+DefiniÈ›ii de versiune:
+
+AdresÄƒ virtualÄƒ: %08lx Dimensiunea fragmentului %ld (0x%lx) NumÄƒrul de remedieri %ld
+
+AVERTISMENT: Date suplimentare Ã®n secÈ›iunea .rsrc - acestea vor fi ignorate de Windows:
+
+Tabel [ordinal/nume indicator] -- BazÄƒ ordinalÄƒ %ld
+
+Antet ppcboot:
+        pc: 0x%08x
+    cmd *negestionatÄƒ* %u
+    adresa: 0x%08x
+    adresa: 0x%08x, dimens.: %u
+    fanioane: %u, adresa: 0x%08x, adresa-pd: 0x%08x
+    nume global: %.*s
+    lungime: %u biÈ›i
+    index legÄƒturÄƒ: %u, insn Ã®nlocuire: 0x%08x
+    nume: %.*s
+    pc: 0x%08x
+    pc: 0x%08x line: %5u
+    ind psect1 : %u, decalaj1 : 0x%08x %08x
+    ind psect 2: %u, decalaj 2: 0x%08x %08x
+    ind psect 3: %u, decalaj 3: 0x%08x %08x
+    psect: %u, decalaj: 0x%08x %08x
+    nume rutinÄƒ: %.*s
+   %02u    (tip: %3u, dim.: %3u):    cmd *negestionatÄƒ* %u
+   Lungime eronatÄƒ
+   Eroare: %s lungimea minimÄƒ este %u
+   Eroare: data de compilare este trunchiatÄƒ
+   Eroare: numele modulului lipseÈ™te
+   Eroare: numele modulului este prea lung
+   Eroare: versiunea modulului lipseÈ™te
+   Eroare: versiunea modulului este prea lungÄƒ
+   alinierea  : 2**%u
+   aloc (lung)     : %u (0x%08x)
+   aloc (lung): %u (0x%08x)
+   ascii ident      : %.*s
+   ident binar      : 0x%08x
+   hartÄƒ de biÈ›i: 0x%08x (contor: %u):
+   adresa codului: 0x%08x
+   data compilÄƒrii          : %.17s
+   compilator   : %.*s
+   cod de completare: %u
+   drepturi de autor: %.*s
+   subtip cpu: %#lx%s
+   tip cpu:    %#lx (%s)
+   declfile: lungime: %u, fanioane: %u, id fiÈ™ier: %u
+   deflines %u
+   numele entitÄƒÈ›ii : %.*s
+   punct de intrare: 0x%08x
+   gravitatea erorii: %x
+   fiÈ™ier: %.*s
+   nume fiÈ™ier   : %.*s
+   tip fiÈ™ier: %#lx
+   fanioane         : 0x%08x   fanioane   : 0x%04x   fanioane:   %#lx
+   fanioane: %d, limbaj: %u, major: %u, minor: %u
+   fanioane: 0x%04x   formfeed
+   potrivire id     : %x
+   poziÈ›ie imagine : 0x%08x
+   numele limbajului: %.*s
+   index de legÄƒturÄƒ: %u, global: %.*s
+   index de legÄƒturÄƒ: %u, nume procedurÄƒ: %.*s
+   index de legÄƒturÄƒ: %u, procedura: %.*s
+   index de legÄƒturÄƒ: %u, psect: %u, decalaj: 0x%08x %08x
+   magic:      %#lx
+   dim. max. a Ã®nregistrÄƒrii: %u
+   numele modulului         : %.*s
+   nume modul: %.*s
+   versiunea modulului      : %.*s
+   nume            : %.*s
+   nume          : %.*s
+   nume       : %.*s
+   nr. cmds:   %#lx
+   numÄƒrul de perechi de legÄƒturÄƒ cond: %u
+   numele obiectului: %.*s
+   decalaj: 0x%08x, val: 0x%08x\
+   descr proc      : 0x%08x
+   index psect   : %u
+   index psect pentru punctul de intrare : %u
+   index psect     : %u
+   poziÈ›ie psect: %u
+   poziÈ›ie psect : 0x%08x
+   rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u
+   setfile %u
+   setlnum %u
+   setrec %u
+   semnÄƒtura: %.*s
+   dim. cmds:  %#lx
+   nivelul structurii       : %u
+   decalaj vector simbol: 0x%08x
+   poziÈ›ie symvec  : 0x%08x
+   titlu: %.*s
+   fanioane de adresÄƒ de transfer: 0x%02x
+   psect de adresÄƒ de transfer   : %u
+   adresÄƒ de transfer            : 0x%08x
+   vector       : 0x%08x
+   masca vers  : 0x%08x
+   versiune:   %x
+  %s (lung=%u):
+  %u: dimensiune: %u, fanioane: 0x%02x, nume: %.*s
+  EEOM (lung=%u):
+  EGSD (lung=%u):
+  intrarea EGSD %2u (tip: %u, lung: %u):   EMH %d (lung=%u):   baza: 0x%08x %08x, dimens.: 0x%08x, protecÈ›ia: 0x%08x   base_va : 0x%08x
+  numÄƒr de biÈ›i: %u, adresa de bazÄƒ: 0x%08x
+  apelÄƒri:
+  chgprtoff : %5u
+  codeadroff: %5u, lpfixoff  : %5u
+  fixuplnk: 0x%08x %08x
+  fanioane: 0x%08x
+  iaflink : 0x%08x %08x
+  imagine %u (%u intrÄƒri)
+  imagine %u (%u intrÄƒri), decalaje:
+  lppsbfixoff: %5u
+  Ã®ncepe psect: 0x%08x, lungime: %u
+  qdotadroff: %5u, ldotadroff: %5u
+  qrelfixoff: %5u, lrelfixoff: %5u
+  cerute de %s:
+  shlextra  : %5u, permctx   : %5u
+  shlstoff  : %5u, shrimgcnt : %5u
+  dimens.: %u
+  fanioanele  fiÈ™ierului de intrare: %s  fanioanele  fiÈ™ierului de ieÈ™ire: %s %08x (<necunoscut>) 0x%08x 64B <versiune nerecunoscutÄƒ EABI> <set de biÈ›i de fanion nerecunoscut> BPAGE: %u COM COMM Modificarea protecÈ›iei (%u intrÄƒri):
+ Remedieri de referinÈ›e pentru adresa codului:
+ DEF EXE Suport FPU necesar:  Prima adresÄƒ     : 0x%08x 0x%08x
+ A patra adresÄƒ    : 0x%08x 0x%08x
+ GBL LIB CorecÈ›ii de referinÈ›Äƒ pentru perechi de legÄƒturi:
+  antet MACH-O:
+ NOMOD NORM OVR PIC QVAL RD REL Resursele Ã®ncep de la poziÈ›ia: %#03x
+ SHR A doua adresÄƒ    : 0x%08x 0x%08x
+ Imagini partajabile:
+ Imagine partajatÄƒ: 0x%08x 0x%08x
+ Tabelul de È™iruri Ã®ncepe la poziÈ›ia: %#03x
+ Tabel: Caracter: %d, Ora: %08lx, Ver: %d/%d, Num Nume: %d, ID-uri: %d
+ A treia adresÄƒ   : 0x%08x 0x%08x
+ UNI VEC VECEP WEAK WRT [double pe 64-biÈ›i] [BE8] [supliment FDPIC ABI] [format float FPA] [LE8] [format float VFP] [EABI Versiunea1] [EABI Versiunea2] [EABI Versiunea3] [EABI Versiunea4] [EABI Versiunea5] [poziÈ›ionare RAM XGATE] [abi necunoscut] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [d-float] [simbolurile dinamice folosesc index de segment] [remediazÄƒ dependenÈ›ele] [valori Ã®n virgulÄƒ mobilÄƒ trecute Ã®n registrele de valori Ã®n virgulÄƒ mobilÄƒ] [g-float] [hard-float ABI] [interfuncÈ›ionare activatÄƒ] [simbolurile de cartografiere le preced pe celelalte] [memorie=model-bank] [memorie=planÄƒ(flat)] [ABI nou] [abi nedefinit] [nonpic] [nu este modul pe 32 de biÈ›i] [ABI vechi] [pic] [independent de poziÈ›ie] [executabil realocabil] [soft-float ABI] [FP software] [tabel de simboluri sortate] [simbolurile au un prefix â€ž_â€�] [ISA necunoscut] [tabel de simboluri nesortate] [v10 È™i v32] [v32] alinierea entitÄƒÈ›ilor de 8 octeÈ›i:  È™i verificaÈ›i vizibilitatea simbolului tabelul de module de depanare : vbn: %u, dimensiune: %u
+ tabelul de simboluri de depanare : vbn: %u, dimensiune: %u (0x%x)
+ nu s-a putut converti realocarea GOTPCREL faÈ›Äƒ de â€ž%sâ€�; editaÈ›i din nou legÄƒturile cu â€ž--no-relaxâ€�
+ reparare informaÈ›ii rva:  fanioane: 0x%04x tabelul global de simboluri: vbn: %u, Ã®nregistrÄƒri: %u
+ ident: 0x%08x, nume: %.*s
+ ident: 0x%08x, versiune sistem: 0x%08x, ctrl potriviri: %u, dimens-vect-simbol: %u
+ ident. constr. imagine  : %.*s
+ ora vinculÄƒrii          : %.*s
+ nume imagine            : %.*s
+ tip imagine: %u (%s) contor de In/IeÈ™ a imaginii: %u, numÄƒrul de canale: %u, prioritate: %08x%08x
+ ora vinculÄƒrii          : %s
+ fanioane vinculator: %08x: identificator vinculator: %.*s
+ remedieri ale referinÈ›elor .address de cuvinte lungi:
+ remedieri de realocare de cuvinte lungi:
+ id-major: %u, id-minor: %u
+ decalaj modul: 0x%08x, dimensiune: 0x%08x, (%u psects)
+ decalaje: isd: %u, activ: %u, simboluri depanare: %u, id imagine: %u, plasture: %u
+ remedieri ale referinÈ›elor .address de patru cuvinte:
+ remedieri de realocare de patru cuvinte:
+  secÈ›iune: bazÄƒ: 0x%08x%08x dimensiune: 0x%08x
+ dimensiunea de doubles:  tip: %3u, lung: %3u (la 0x%08x):  tip de Ã®nregistrare EOBJ negestionat %u
+ vbn: %u, pfc: %u, potrivire ctl: %u tip: %u ( vma:			AdresÄƒ ÃŽnceput  AdresÄƒ SfÃ¢rÈ™it   Info Unwind
+ vma:		ÃŽnceput  SfÃ¢rÈ™it  EH       EH       PrologFin. ExcepÈ›ii
+     		AdresÄƒ   AdresÄƒ  Manipulant Date    AdresÄƒ     MascÄƒ
+ vma:		ÃŽnceput  Prolog   FuncÈ›ia  Fanioane ExcepÈ›ie  EH
+     		Adresa   Lungime  Lungime  32b exc  Gestionar Date
+ vma:          Sugestie  Timp      ÃŽnainte  DLL      Primul
+                 Tabel   Marcaj    LanÈ›     Nume      Thunk
+#<cod de eroare nevalid>%%X%%P: realocarea %s faÈ›Äƒ de â€ž%sâ€� care se poate asocia extern nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�
+%%X%%P: realocare %s nerezolvabilÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�
+%03x %*.s  Foaie: Adr: %#08lx, Dim.: %#08lx, Pag.cod: %d
+%03x %*.s Intrare: %F%P: nu s-a putut crea secÈ›iunea de proprietate GNU
+%H __tls_get_addr lost arg, optimizare TLS dezactivatÄƒ
+%H argument a pierdut __tls_get_addr, optimizarea TLS dezactivatÄƒ
+%H: %s faÈ›Äƒ de %pT nu este acceptat
+%H: %s faÈ›Äƒ de â€ž%pTâ€�: eroare %d
+%H: %s pentru funcÈ›ia indirectÄƒ â€ž%pTâ€� neacceptatÄƒ
+%H: %s Ã®n afara intervalului
+%H: %s face referire la simbolul dinamic cu adaos diferit de zero
+%H: %s referinÈ›e optimizate departe de intrarea TOC
+%H: %s realocarea faÈ›Äƒ de â€ž%sâ€�: eroare %d
+%H: realocarea %s nu este acceptatÄƒ aici
+%H: realocarea %s nu este acceptatÄƒ Ã®n bibliotecile partajate È™i PIE-uri
+%H: %s utilizat cu simbolul TLS â€ž%pTâ€�
+%H: %s utilizat cu simbolul non-TLS â€ž%pTâ€�
+%H: R_FRV_GETTLSOFF nu este aplicat unei instrucÈ›iuni de apel
+%H: R_FRV_GETTLSOFF_RELAX nu este aplicat unei instrucÈ›iuni de apel
+%H: R_FRV_GOTTLSDESC12 nu este aplicat unei instrucÈ›iuni lddi
+%H: R_FRV_GOTTLSDESCHI nu este aplicat unei instrucÈ›iuni sethi
+%H: R_FRV_GOTTLSDESCLO nu este aplicat unei instrucÈ›iuni setlo sau setlos
+%H: R_FRV_GOTTLSOFF12 nu este aplicat unei instrucÈ›iuni ldi
+%H: R_FRV_GOTTLSOFFHI nu este aplicat unei instrucÈ›iuni sethi
+%H: R_FRV_GOTTLSOFFLO nu este aplicat unei instrucÈ›iuni setlo sau setlos
+%H: R_FRV_TLSDESC_RELAX nu este aplicat unei instrucÈ›iuni ldd
+%H: R_FRV_TLSMOFFHI nu este aplicat unei instrucÈ›iuni sethi
+%H: R_FRV_TLSOFF_RELAX nu este aplicat unei instrucÈ›iuni ld
+%H: apelul la â€ž%pTâ€� este lipsit de nop, nu se poate restabili toc; (ciot(stub) de apel plt)
+%H: apelul la â€ž%pTâ€� este lipsit de nop, nu se poate restabili toc; (ciot(stub) de salvare/ajustare toc)
+%H: nu se pot emite realocÄƒri dinamice Ã®n secÈ›iunea numai-pentru-citire
+%H: nu se pot emite remedieri Ã®n secÈ›iunea numai-pentru-citire
+%H: eroare: %s faÈ›Äƒ de â€ž%sâ€� nu este un multiplu de %u
+%H: eroare: %s nu este un multiplu de %u
+%H: remediatÄƒ supraÃ®ncÄƒrcarea ramurii
+%H: optimizarea got/toc nu este acceptatÄƒ pentru instrucÈ›iunea %s
+%H: adÄƒugare non-zero Ã®n realocarea %s faÈ›Äƒ de â€ž%sâ€�
+%H: realocarea faÈ›Äƒ de â€ž%sâ€� face referire la un segment diferit
+%H: realocare faÈ›Äƒ de â€ž%sâ€�: %s
+%H: realocarea %s pentru funcÈ›ia indirectÄƒ %s nu este acceptatÄƒ
+%H: realocarea %s returneazÄƒ o valoare nerecunoscutÄƒ %x
+%H: simbolul referinÈ›elor de realocare nu este definit Ã®n modul
+%H: realocarea Ã®n â€ž%s+%vâ€� poate fi cauzat eroarea de mai sus
+%H: tipul de realocare %u nu este acceptat
+%H: %s nerezolvabil faÈ›Äƒ de â€ž%pTâ€�
+%H: realocare %s nerezolvabilÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�
+%H: avertisment: %s insn neaÈ™teptat %#x.
+%H: avertisment: realocarea din â€ž%sâ€� face referire la un segment diferit
+%P%X: nu se poate citi simbolurile: %E
+%P%X: segmentul numai-pentru-citire are realocÄƒri dinamice
+%P: %H: eroare: %s cu instrucÈ›iunea neaÈ™teptatÄƒ %x
+%P: %pB(%pA): eroare: opÈ›iunea â€ž--gc-sectionsâ€� necesitÄƒ o secÈ›iune ataÈ™atÄƒ ca argument
+%P: %pB(%s): eroare la deschiderea membrului subÈ›ire al arhivei: %E
+%P: %pB: %s nu este acceptat pentru â€ž%pTâ€�
+%P: %pB: copiere realocare faÈ›Äƒ de simbolul protejat necopiabil â€ž%sâ€�
+%P: %pB: realocare copiere faÈ›Äƒ de simbolul protejat necopiabil â€ž%sâ€� din %pB
+%P: %pB: nu s-a reuÈ™it sÄƒ se adauge %s la first_hash
+%P: %pB: a eÈ™uat alocarea hÄƒrÈ›ii de biÈ›i DT_RELR pe 32 de biÈ›i
+%P: %pB: a eÈ™uat alocarea hÄƒrÈ›ii de biÈ›i DT_RELR pe 64 de biÈ›i
+%P: %pB: a eÈ™uat alocarea secÈ›iunii de realocare relativÄƒ compactÄƒ
+%P: %pB: a eÈ™uat alocarea memoriei pentru secÈ›iunea â€ž%pAâ€�
+%P: %pB: a eÈ™uat alocarea Ã®nregistrÄƒrii realocÄƒrii relative
+%P: %pB: eÈ™ec la finalizarea realocÄƒrilor relative
+%P: %pB: notÄƒ: mesajul de mai sus nu ia Ã®n considerare colectarea gunoiului din editorul de legÄƒturi
+%P: %pB: realocarea %s faÈ›Äƒ de simbolul absolut â€ž%sâ€� din secÈ›iunea â€ž%pAâ€� este interzisÄƒ
+%P: %pB: dimensiunea secÈ›iunii de realocare relativÄƒ compactÄƒ este schimbatÄƒ: nouÄƒ (%lu) != veche (%lu)
+%P: %pB: avertisment: lipseÈ™te %s
+%P: %pB: avertisment: realocare faÈ›Äƒ de â€ž%sâ€� Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�
+%P: %pB: avertisment: realocare Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�
+%F: opÈ›iunile â€ž--relaxâ€� È™i â€ž-râ€� nu pot fi folosite Ã®mpreunÄƒ
+%P: Nu s-a putut atribui â€ž%pAâ€� unei secÈ›iuni de ieÈ™ire. ReÃ®ncercaÈ›i fÄƒrÄƒ opÈ›iunea â€ž--enable-non-contiguous-regionsâ€�.
+%P: Nu s-a putut atribui â€ž%pAâ€� unei secÈ›iuni de ieÈ™ire. ReÃ®ncercaÈ›i fÄƒrÄƒ opÈ›iunea â€ž--enable-non-contiguous-regionsâ€�.
+%P: already_linked_table: %E
+%P: eroare de suprapunere automatÄƒ: %E
+%P: nu se pot construi cioturi(stubs) de suprapunere: %E
+%P: nu se poate gÄƒsi intrarea opd toc pentru â€ž%pTâ€�
+%P: realocarea copiei faÈ›Äƒ de â€ž%pTâ€� necesitÄƒ o legÄƒturÄƒ plt leneÈ™Äƒ; evitaÈ›i configurarea LD_BIND_NOW=1 sau actualizaÈ›i gcc
+%P: copierea realocÄƒrii faÈ›Äƒ de â€ž%pTâ€� protejat este periculoasÄƒ
+%P: intrare coruptÄƒ: %pB
+%P: secÈ›iune de ieÈ™ire Ã®nlÄƒturatÄƒ: â€ž%pAâ€�
+%P: simbolul STT_GNU_IFUNC dinamic â€ž%sâ€� cu egalitatea indicatorului Ã®n â€ž%pBâ€� nu poate fi folosit cÃ¢nd se creeazÄƒ un executabil; recompilaÈ›i cu â€ž-fPIEâ€� È™i reeditaÈ›i legÄƒturile cu â€ž-pieâ€�
+%P: nu s-a putut crea %s
+%P: nu s-a putut crea %sn%P: nu s-a putut crea secÈ›iunea .eh_frame PLT GOT
+%P: nu s-a putut crea secÈ›iunea GOT PLT
+%P: nu s-au putut crea secÈ›iunile GOT
+%P: nu s-a putut crea secÈ›iunea PLT cu IBT activat
+%P: nu s-a putut crea secÈ›iunea .eh_frame PLT
+%P: nu s-a putut crea secÈ›iunea .sframe PLT
+%P: nu s-a putut crea secÈ›iunea .sframe PLT GOT
+%P: nu s-au putut crea secÈ›iunile dinamice VxWorks
+%P: nu s-au putut crea secÈ›iunile ifunc
+%P: nu s-a putut crea a doua secÈ›iune .sframe PLT
+%P: nu s-a putut crea a doua secÈ›iune .eh_frame PLT
+%P: eÈ™ec la dimensionarea realocÄƒrilor relative
+%P: first_hash nu a reuÈ™it sÄƒ creeze: %E
+%P: eroare de tabel de legÄƒturi faÈ›Äƒ de â€ž%pTâ€�
+%P: puncte de acces multiple: Ã®n modulele %pB È™i %pB
+%P: legÄƒtura realocabilÄƒ nu este acceptatÄƒ
+%P: avertisment: FuncÈ›iile indirecte GNU cu DT_TEXTREL pot avea ca rezultat o eroare de segmentare Ã®n timpul execuÈ›iei; recompilaÈ›i cu %s
+%P: avertisment: se creeazÄƒ DT_TEXTREL Ã®ntr-un PDE
+%P: avertisment: se creeazÄƒ DT_TEXTREL Ã®ntr-un PIE
+%P: avertisment: se creeazÄƒ DT_TEXTREL Ã®ntr-un obiect partajat
+%P: avertisment: realocÄƒrile de text È™i funcÈ›iile indirecte GNU pot avea ca rezultat o eroare de segmentare Ã®n timpul execuÈ›iei
+%X%H: %s faÈ›Äƒ de â€ž%sâ€�: eroare: realocarea se aplicÄƒ Ã®n afara secÈ›iunii
+%X%H: %s faÈ›Äƒ de â€ž%sâ€�: eroare: adresa È›intÄƒ de realocare este imparÄƒ
+%X%H: %s faÈ›Äƒ de â€ž%sâ€�: eroare internÄƒ: rezultat neaÈ™teptat al realocÄƒrii %d
+%X%H: apel @local la ifunc %s
+%X%H: nu se poate converti ramura dintre modurile ISA Ã®n JALX: realocare Ã®n afara intervalului
+%X%H: realocarea %s faÈ›Äƒ de â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�
+%X%H: realocarea din â€ž%sâ€� face referire la un segment diferit
+%X%H: JALX neacceptat pentru acelaÈ™i mod ISA
+%X%H: ramurÄƒ neacceptatÄƒ Ã®ntre modurile ISA
+%X%H: neacceptat bss-plt -fPIC ifunc %s
+%X%H: salt nesuportat Ã®ntre modurile ISA; luaÈ›i Ã®n considerare recompilarea cu inter-vincularea (interlinking) activatÄƒ
+%X%P: %H: realocarea %s nu este acceptatÄƒ pentru bss-plt
+%X%P: %pB(%pA): eroare: realocarea pentru poziÈ›ia %V nu are nicio valoare
+%X%P: %pB(%pA): realocarea â€ž%pRâ€� iese Ã®n afara intervalului
+%X%P: %pB(%pA): realocarea â€ž%pRâ€� nu este acceptatÄƒ
+%X%P: %pB(%pA): relocarea â€ž%pRâ€� returneazÄƒ o valoare nerecunoscutÄƒ %x
+%X%P: %pB(%pA): realocarea nu este acceptatÄƒ
+%X%P: %pB(%pA): realocare Ã®n afara intervalului
+%X%P: %pB: %s faÈ›Äƒ de %pT nu este acceptatÄƒ de â€žglibcâ€� ca realocare dinamicÄƒ
+%X%P: %pB: eroare: lipseÈ™te %s
+%X%P: Ã®ncercare de vinculare staticÄƒ a obiectului dinamic â€ž%pBâ€�
+%X%P: eroare internÄƒ: eroare Ã®n afara intervalului
+%X%P: eroare internÄƒ: eroare necunoscutÄƒ
+%X%P: eroare internÄƒ: eroare de realocare neacceptatÄƒ
+%X%P: secÈ›iunea de suprapunere %pA nu Ã®ncepe pe o linie de prestocare(cache)
+%X%P: secÈ›iunea de suprapunere %pA este mai mare decÃ¢t o linie de prestocare(cache)
+%X%P: secÈ›iunea de suprapunere %pA nu se aflÄƒ Ã®n zona de prestocare
+%X%P: secÈ›iunile de suprapunere %pA È™i %pA nu Ã®ncep la aceeaÈ™i adresÄƒ
+%X%P: eroare de analizÄƒ a stivei/lrlive: %E
+%X%P: realocÄƒrile de text È™i funcÈ›iile indirecte GNU vor avea ca rezultat o eroare de segmentare Ã®n timpul execuÈ›iei
+%X%pB: eroare: BTI este solicitat de â€ž-z force-btiâ€�, dar acest fiÈ™ier obiect de intrare nu are nota de proprietate necesarÄƒ.
+%X%pB: eroare: GCS este solicitat de â€ž-z gcsâ€�, dar acest fiÈ™ier obiect de intrare nu are nota de proprietate necesarÄƒ.
+%X%pB: eroare: GCS este cerut de â€ž-z gcsâ€�, dar aceastÄƒ bibliotecÄƒ partajatÄƒ nu are nota de proprietate necesarÄƒ. Este posibil ca Ã®ncÄƒrcÄƒtorul dinamic sÄƒ nu activeze GCS sau sÄƒ refuze sÄƒ Ã®ncarce programul cu excepÈ›ia cazului Ã®n care toate dependenÈ›ele bibliotecii partajate au marcajul GCS.
+%Xâ€ž%sâ€� la care se face referire Ã®n secÈ›iunea â€ž%pAâ€� din %pB: este definit Ã®n secÈ›iunea eliminatÄƒ â€ž%pAâ€� din %pB
+%Xerror: a fost gÄƒsit un total de %d obiecte legate dinamic incompatibile cu cerinÈ›ele GCS.
+%Xerror: a fost gÄƒsit un total de %d intrÄƒri incompatibile cu cerinÈ›ele BTI.
+%Xerror: a gÄƒsit un total de %d intrÄƒri incompatibile cu cerinÈ›ele GCS.
+%pA:0x%v .brinfo lrlive (%u) este diferit de ceea ce a fost determinat prin analizare (%u)
+%pA:0x%v nu a fost gÄƒsitÄƒ Ã®n tabelul de funcÈ›ii
+%pB (%s): fanion de secÈ›iune %s (%#lx) ignorat%pB .opd nu este permis Ã®n versiunea ABI %d%pB È™i %pB sunt pentru configuraÈ›ii diferite%pB È™i %pB sunt pentru nuclee diferite%pB conÈ›ine cod CRIS v32, incompatibil cu obiectele anterioare%pB conÈ›ine cod non-CRIS-v32, incompatibil cu obiectele anterioare%pB are atÃ¢t atributele Tag_MPextension_use actuale, cÃ¢t È™i cele vechi%pB nu este autorizat sÄƒ defineascÄƒ %s%pB secÈ›iunea %pA depÄƒÈ™eÈ™te dimensiunea grupului ciotului(stub)%pB numÄƒrul simbol %lu face referire la secÈ›iunea SHT_SYMTAB_SHNDX inexistentÄƒsimbolul %pB cu numÄƒrul %lu foloseÈ™te o legÄƒturÄƒ neacceptatÄƒ a lui %usimbolul %pB cu numÄƒrul %lu utilizeazÄƒ un tip de %u neacceptat%pB foloseÈ™te numere Ã®ntregi lungi cu precizie dublÄƒ de 64 de biÈ›i, %pB foloseÈ™te numere Ã®ntregi lungi cu precizie dublÄƒ de 128 de biÈ›i%pB utilizeazÄƒ ABI de vector AltiVec, iar %pB utilizeazÄƒ ABI de vector SPE%pB utilizeazÄƒ IBM long double, %pB utilizeazÄƒ IEEE long double%pB foloseÈ™te virgulÄƒ mobilÄƒ hardware cu precizie dublÄƒ, %pB foloseÈ™te virgulÄƒ mobilÄƒ hardware cu precizie simplÄƒ%pB foloseÈ™te virgulÄƒ mobilÄƒ hardware, %pB foloseÈ™te virgulÄƒ mobilÄƒ software%pB utilizeazÄƒ r3/r4 pentru returnÄƒri de structuri mici, iar %pB utilizeazÄƒ memoria%pB utilizeazÄƒ e_flags necunoscut 0x%lx%pB(%pA): eroare: apel la funcÈ›ia nedefinitÄƒ â€ž%sâ€�%pB(%pA): eroare: lipsesc realocÄƒrile interne pentru secÈ›iunea de realocare secundarÄƒ%pB(%pA): eroare: intrarea din tabelul de realocare %zu este goalÄƒ%pB(%pA): eroare: realocarea secundarÄƒ %zu este de un tip necunoscut%pB(%pA): eroare: realocarea secundarÄƒ %zu face referire la un simbol È™ters%pB(%pA): eroare: realocarea secundarÄƒ %zu face referire la un simbol lipsÄƒ%pB(%pA): eroare: secÈ›iunea de realocare secundarÄƒ are intrÄƒri de dimensiune nestandard%pB(%pA): eroare: secÈ›iunea de realocare secundarÄƒ are intrÄƒri de dimensiune zero%pB(%pA): eroare: secÈ›iunea de realocare secundarÄƒ este goalÄƒ!%pB(%pA): eroare: secÈ›iunea de realocare secundarÄƒ a fost procesatÄƒ de douÄƒ ori%pB(%pA): indexul secÈ›iunii de informaÈ›ii nu poate fi definit deoarece secÈ›iunea nu se aflÄƒ Ã®n ieÈ™ire%pB(%pA): indexul secÈ›iunii de informaÈ›ii este nevalid%pB(%pA):  eroare internÄƒ: realocare periculoasÄƒ%pB(%pA): eroare internÄƒ: eroare Ã®n afara intervalului%pB(%pA): eroare internÄƒ: eroare necunoscutÄƒ%pB(%pA): eroare internÄƒ: eroare de realocare neacceptatÄƒ%pB(%pA): tabel de proprietÄƒÈ›i nevalid%pB(%pA): secÈ›iunea de legÄƒturÄƒ nu poate fi definitÄƒ deoarece fiÈ™ierul de ieÈ™ire nu are un tabel de simboluri%pB(%pA): nu sunt acceptate multiple modele TLS%pB(%pA): realocarea %d are indexul de simbol nevalid %ld%pB(%pA): realocarea %zu are indexul de simbol nevalid %lu%pB(%pA): simbolul bibliotecii partajate %s Ã®ntÃ¢lnit Ã®n timpul efectuÄƒrii unei vinculÄƒri statice%pB(%pA): avertisment: faÈ›etele(veneers) de ramuri lungi utilizate Ã®n secÈ›iunea cu atributul secÈ›iunii SHF_ARM_PURECODE sunt acceptate numai pentru È›inte cu profil M care implementeazÄƒ instrucÈ›iunea movw%pB(%pA): avertisment: acces nealiniat la simbolul â€ž%sâ€� din zona de date micÄƒ%pB(%pA): avertisment: acces la date mici nealiniate de tip %d%pB(%pA+%#lx): intrarea stabs are un index de È™ir nevalid%pB(%pA+%#x): eroare: Ã®ncÄƒrcare multiplÄƒ detectatÄƒ Ã®n blocul de instrucÈ›iuni IT ce nu este ultimul: faÈ›eta(veneer) STM32L4XX nu poate fi generat; utilizaÈ›i opÈ›iunea â€žgcc -mrestrict-itâ€� pentru a genera o singurÄƒ instrucÈ›iune per bloc IT%pB(%pA+0x%lx): se aÈ™tepta o realocare de tip 16A la instrucÈ›iunea 0x%08x%pB(%pA+0x%lx): se aÈ™tepta o realocare de tip 16D la instrucÈ›iunea 0x%08x%pB(%pA+0x%v): apel la secÈ›iunea non-cod %pB(%pA), analizÄƒ incompletÄƒ
+%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie utilizatÄƒ numai Ã®n ADD sau MOV
+%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie utilizatÄƒ numai Ã®n ADD sau MOVRS
+%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie utilizatÄƒ numai Ã®n ADD, SUB sau MOV
+%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie sÄƒ fie utilizatÄƒ numai Ã®n LEA
+%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie sÄƒ fie utilizatÄƒ numai Ã®n CALL indirect cu registrul %s
+%pB(%s): Tip de destinaÈ›ie necunoscut (ARM/Thumb) Ã®n %pB%pB(%s): avertisment: interfuncÈ›ionarea nu este activatÄƒ; prima apariÈ›ie: %pB: apel %s cÄƒtre %s%pB, secÈ›iunea %pA:
+  realocarea %s nu este validÄƒ Ã®ntr-un obiect partajat; de obicei, o confuzie de opÈ›iuni, recompilaÈ›i cu â€ž-fPICâ€�%pB, secÈ›iunea %pA: fÄƒrÄƒ PLT pentru realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€�%pB, secÈ›iunea %pA: fÄƒrÄƒ PLT sau GOT pentru realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€�%pB, secÈ›iunea %pA: realocarea %s are o referinÈ›Äƒ nedefinitÄƒ la â€ž%sâ€�, poate o confuzie Ã®n declaraÈ›ii?%pB, secÈ›iunea %pA: realocarea %s nu este permisÄƒ pentru â€ž%sâ€�, un simbol global cu vizibilitate implicitÄƒ, poate o confuzie Ã®n declaraÈ›ii?%pB, secÈ›iunea %pA: realocarea %s nu este permisÄƒ pentru simbolul global: â€ž%sâ€�%pB, secÈ›iunea %pA: realocarea %s nu este permisÄƒ pentru simbolul: â€ž%sâ€� care este definit Ã®n afara programului, poate o confuzie Ã®n declaraÈ›ii?%pB, secÈ›iunea %pA: realocarea %s nu trebuie utilizatÄƒ Ã®ntr-un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�%pB, secÈ›iunea %pA: relaocare %s fÄƒrÄƒ GOT creat%pB, secÈ›iunea %pA: realocare nerezolvabilÄƒ %s faÈ›Äƒ de simbolul â€ž%sâ€�%pB, secÈ›iunea %pA: obiectul compatibil v10/v32 nu trebuie sÄƒ conÈ›inÄƒ o realocare PIC%pB, secÈ›iunea â€ž%pAâ€�, la simbolul â€ž%sâ€�: realocarea %s nu trebuie utilizatÄƒ Ã®ntr-un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�%pB: realocare !samegp cÄƒtre simbol fÄƒrÄƒ .prolog: %s%pB: %pA dimensiunea secÈ›iunii de intrare nu este validÄƒ%pB: %pA nu este Ã®n ordine%pB: %pA indicÄƒ dincolo de sfÃ¢rÈ™itul secÈ›iunii de text%pB: %pA: depÄƒÈ™ire de realocÄƒri: %#x > 0xffff%pB: %s (poziÈ›ie: 0x%v, informaÈ›ii: 0x%v) faÈ›Äƒ de â€ž%sâ€� pentru secÈ›iunea â€ž%pAâ€� Ã®n %pB
+%pB: %s (poziÈ›oe: 0x%v, informaÈ›ii: 0x%v, adÄƒugare: 0x%v) faÈ›Äƒ de â€ž%sâ€� pentru secÈ›iunea â€ž%pAâ€� Ã®n %pB
+%pB: nepotrivire a fanionului %s cu modulele anterioare%pB: simbolul local %s la indexul %lu (>= sh_info din %lu)%pB: %s nu este absolut%pB: %s neacceptat%pB: %s a fost accesat atÃ¢t ca simbol local normal, cÃ¢t È™i ca simbol local al firului de execuÈ›ie%pB: %s: versiune necesarÄƒ nevalidÄƒ %d%pB: %s: versiune nevalidÄƒ %u (max %d)%pB: %s: depÄƒÈ™ire de realocÄƒri: 0x%lx > 0xffff%pB: â€ž%sâ€� a fost accesat atÃ¢t ca simbol local normal, cÃ¢t È™i ca simbol local al firului de execuÈ›ie%pB: â€ž--in-implibâ€� este acceptatÄƒ numai pentru bibliotecile de import Secure Gateway%pB: intrare nevalidÄƒ .gnu.version_d%pB: intrare nevalidÄƒ .gnu.version_r%pB: subsegmentul .got depÄƒÈ™eÈ™te 64K (dimensiunea %d)%pB: .opd nu este o matrice obiÈ™nuitÄƒ de intrÄƒri opd%pB: secÈ›iunea .preinit_array section nu este permisÄƒ Ã®n DSO%pB: fuziunea .rsrc a eÈ™uat: secÈ›iunea .rsrc coruptÄƒ%pB: fuziunea .rsrc a eÈ™uat: dimensiune .rsrc neaÈ™teptatÄƒ%pB: realocare @gprel faÈ›Äƒ de simbolul dinamic %s%pB: ramurÄƒ @internal cÄƒtre simbolul dinamic %s%pB: realocare @pcrell faÈ›Äƒ de simbolul dinamic %s%pB: ABI este incompatibil cu cel al emulaÈ›iei selectate%pB: ABI este incompatibil cu cel al emulaÈ›iei selectate:
+  emulaÈ›ia È›intÄƒ â€ž%sâ€� nu se potriveÈ™te cu â€ž%sâ€�%pB: nepotrivire ABI: se vinculeazÄƒ modulul %s cu modulele %s anterioare%pB: versiunea ABI %ld nu este compatibilÄƒ cu versiunea ABI %ld de ieÈ™ire%pB: nepotrivire ASE: se vinculeazÄƒ modulul %s cu modulele %s anterioare%pB: Ajustarea ramurii de la 0x%V cÄƒtre â€ž%sâ€� Ã®n secÈ›iunea %s
+%pB: imaginile BE8 sunt valabile numai Ã®n modul big-endian%pB: C_STAT nu este acceptat de XCOFF64%pB: Nu se poate crea intrarea ciot(stub) â€ž%sâ€�%pB: nu se poate gestiona dimensiunea valorii de realocare de %d%pB: tabelul DT_STRTAB este corupt%pB: Realocarea descriptorului de funcÈ›ie cu adaos non-zero%pB: secÈ›iunea GNU_MBIND â€ž%pAâ€� are cÃ¢mpul sh_info nevalid: %d%pB: depÄƒÈ™ire GOT: numÄƒrul de realocÄƒri cu decalaj de 8 sau 16 biÈ›i > %d%pB: depÄƒÈ™ire GOT: numÄƒr de realocÄƒri cu decalaj pe 8 biÈ›i > %d%pB: dimensiunea vectorului ISR nu se potriveÈ™te cu modulele anterioare, %u-octeÈ›i cel anterior, %u-octeÈ›i cel actual%pB: NumÄƒrul de simboluri din fiÈ™ierul de intrare a crescut de la %lu la %u
+%pB: depÄƒÈ™ire de decalaj relativ la PC Ã®n intrarea GOT PLT pentru â€ž%sâ€�
+%pB: depÄƒÈ™ire de decalaj relativ la PC Ã®n intrarea PLT pentru â€ž%sâ€�
+%pB: RealocÄƒri Ã®n ELF generic (EM: %d)%pB: realocare relativÄƒ SB, dar __c6xabi_DSBT_BASE nu este definit%pB: Codul executabil local TLS nu poate fi vinculat Ã®n obiecte partajate%pB: realocare TLS %s faÈ›Äƒ de simbolul nedefinit â€ž%sâ€�%pB: secÈ›iunile TLS nu sunt adiacente:%pB: tranziÈ›ia TLS de la %s la %s faÈ›Äƒ de â€ž%sâ€� la 0x%v din secÈ›iunea â€ž%pAâ€� a eÈ™uat
+%pB: intrarea TOC â€ž%sâ€� are o realocare R_TLSML care nu È›inteÈ™te spre sine%pB: prima secÈ›iune din segmentul PT_DYNAMIC nu este secÈ›iunea .dynamic%pB: Nu se pot genera realocÄƒri dinamice deoarece nu existÄƒ o secÈ›iune adecvatÄƒ
+%pB: Nu se poate gestiona indexul secÈ›iunii %x Ã®n simbolul ELF.  Se utilizeazÄƒ ABS Ã®n locul acestuia.%pB: obiect partajat XCOFF cÃ¢nd nu se produce ieÈ™ire XCOFF%pB: __gp nu acoperÄƒ segmentul de date scurt%pB: â€ž%sâ€� a fost accesat atÃ¢t ca simbol FDPIC, cÃ¢t È™i ca simbol local al firului de execuÈ›ie%pB: â€ž%sâ€� accesat atÃ¢t ca simbol normal, cÃ¢t È™i ca simbol FDPIC%pB: %s a fost accesat atÃ¢t ca simbol local normal, cÃ¢t È™i ca simbol local al firului de execuÈ›ie%pB: â€ž%sâ€� È™i simbolul sÄƒu special sunt Ã®n secÈ›iuni diferite%pB: â€ž%sâ€� are numere de linie, dar nu o secÈ›iune de Ã®nchidere%pB: â€ž%sâ€� Ã®n realocarea Ã®ncÄƒrcÄƒtorului, dar nu Ã®n simbolul Ã®ncÄƒrcÄƒtorului%pB: realocare non-PLT â€ž%sâ€� pentru simbolul definit Ã®n biblioteca partajatÄƒ È™i accesat din executabil (reconstruiÈ›i fiÈ™ierul cu â€ž-fPICâ€�?)%pB: simbol standard absent â€ž%sâ€�%pB: adaosul trebuie sÄƒ fie zero pentru realocÄƒri got%pB: adaosul trebuie sÄƒ fie zero pentru realocÄƒri plt%pB: se ajusteazÄƒ FileAlignment nevalidÄƒ%pB: se ajusteazÄƒ SectionAlignment nevalidÄƒ%pB: arhitectura nu se potriveÈ™te cu modulele anterioare%pB: Ã®ncercare de-a Ã®ncÄƒrca È™iruri dintr-o secÈ›iune fÄƒrÄƒ È™iruri (numÄƒrul %d)%pB: Ã®ncercare de a amesteca obiecte FDPIC È™i non-FDPIC%pB: Ã®ncercare de a scrie un tip de realocare necunoscut%pB: Ã®nregistrare de realocare greÈ™itÄƒ importatÄƒ: %d%pB: nume de secÈ›iune de realocare incorect â€ž%sâ€�%pB: lungime incorectÄƒ a secÈ›iunii Ã®n ihex_read_section%pB: index de simboluri incorect: %d%pB: realocare base-plus-offset faÈ›Äƒ de simbolul de registru: %s Ã®n %pA%pB: realocare base-plus-offset faÈ›Äƒ de simbolul de registru: (necunoscut) Ã®n %pA%pB: depÄƒÈ™ire de deplasare a ramurii Ã®n intrarea PLT pentru â€ž%sâ€�
+%pB: nu poate reprezenta secÈ›iunea â€ž%pAâ€� Ã®n format de fiÈ™ier obiect a.out%pB: nu se poate reprezenta secÈ›iunea pentru simbolul â€ž%sâ€� Ã®n formatul de fiÈ™ier obiect a.out%pB: nu se pot vincula %s module cu %s module%pB: nu se poate vincula RVE cu altÄƒ È›intÄƒ%pB: nu se poate vincula un obiect ABI diferit.%pB: nu se poate aloca nume de fiÈ™ier pentru fiÈ™ierul numÄƒrul %d, %d octeÈ›i
+%pB: nu se poate aloca memorie pentru intrÄƒrile GOT locale%pB: nu se poate crea intrarea ciot(stub) %s%pB: nu se poate exporta simbolul intern â€ž%sâ€�.%pB: nu se pot gestiona fiÈ™ierele binare Alpha comprimate; utilizaÈ›i opÈ›iunile compilatorului, sau objZ, pentru a genera fiÈ™iere binare necomprimate%pB: nu se pot gestiona mai mult de %d simboluri dinamice%pB: nu se poate vincula fiÈ™ierul obiect fdpic la executabil non-fdpic%pB: nu se poate vincula fiÈ™ierul obiect non-fdpic la executabilul fdpic%pB: nu se pot vincula Ã®mpreunÄƒ obiectele %s È™i %s%pB: schimbare Ã®n gp: BRSGP %s%pB: clasa %d simbolul â€ž%s'â€� nu are intrÄƒri auxiliare%pB: compilat %s -mtune=%s È™i vinculat cu modulele compilate %s -mtune=%s%pB: compilat pentru un sistem pe 64 de biÈ›i È™i È›inta este pe 32 de biÈ›i%pB: compilat pentru un sistem big-endian iar È›inta este little-endian%pB: compilat pentru un sistem little-endian iar È›inta este big-endian%pB: compilat normal È™i vinculat cu module compilate cu â€ž-mrelocatableâ€�%pB: compilat cu %s È™i vinculat cu module compilate cu %s%pB: compilat cu %s È™i vinculat cu module care folosesc realocÄƒri non-pic%pB: compilat cu â€ž-mrelocatableâ€� È™i vinculat cu module compilate normal%pB: ramura condiÈ›ionatÄƒ la simbolul nedefinit â€ž%sâ€� nu este permisÄƒ%pB: secÈ›iune de grup coruptÄƒ â€ž%pAâ€�%pB: nu s-a putut gÄƒsi secÈ›iunea de ieÈ™ire %pA pentru secÈ›iunea de intrare %pA%pB: nu s-a putut citi conÈ›inutul grupului [%u]%pB: nu s-a putut citi conÈ›inutul secÈ›iunii â€ž%pAâ€�
+%pB: csect â€ž%sâ€� nu este Ã®n secÈ›iunea de Ã®nchidere%pB: realocarea GOT directÄƒ %s faÈ›Äƒ de â€ž%sâ€� fÄƒrÄƒ registrul de bazÄƒ nu poate fi utilizatÄƒ cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocarea GOT directÄƒ, R_386_GOT32X faÈ›Äƒ de â€ž%sâ€� fÄƒrÄƒ registru de bazÄƒ nu poate fi utilizatÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat%pB: directiva LOCAL este validÄƒ doar cu un registru sau o valoare absolutÄƒ%pB: realocare relativÄƒ-dtp faÈ›Äƒ de simbolul dinamic %s%pB: ciot(stub) de exportare duplicat %s%pB: secÈ›iunea duplicatÄƒ â€ž%pAâ€� are conÈ›inut diferit
+%pB: secÈ›iunea duplicatÄƒ â€ž%pAâ€� are dimensiune diferitÄƒ
+%pB: obiect dinamic fÄƒrÄƒ secÈ›iune .loader%pB: realocare dinamicÄƒ faÈ›Äƒ de â€ž%pTâ€� Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�
+%pB: realocare dinamicÄƒ faÈ›Äƒ de un simbol local Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�
+%pB: realocare dinamicÄƒ Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�
+%pB: tip de endianness incompatibil cu cel al emulaÈ›iei selectate%pB: funcÈ›ia de intrare â€ž%sâ€� este goalÄƒ%pB: funcÈ›ia de intrare â€ž%sâ€� nu produce ieÈ™ire%pB: eroare: ABI nu se potriveÈ™te cu modulele anterioare%pB: eroare: ciotul(stub) de eroare Cortex-A8 este alocat Ã®ntr-o locaÈ›ie nesigurÄƒ%pB: eroare: ciotul(stub) de eroare Cortex-A8 Ã®n afara intervalului (fiÈ™ierul de intrare este prea mare)%pB: eroare: segmentul PHDR nu este acoperit de segmentul LOAD%pB: eroare: faÈ›eta(veneer) VFP11 Ã®n afara intervalului%pB: eroare: puterea de aliniere %d a secÈ›iunii â€ž%pAâ€� este prea mare%pB: eroare: secÈ›iunea de atribut â€ž%pAâ€� prea mare: %#llx%pB: eroare: lungimea secÈ›iunii de atribut prea micÄƒ: %ld%pB: eroare: nu se poate crea faÈ›eta(veneer) STM32L4XX%pB: eroare: datele de depanare se terminÄƒ dincolo de sfÃ¢rÈ™itul directorului de depanare%pB: eroare: Â«erratum 835769Â» ciot(stub) Ã®n afara intervalului (fiÈ™ierul de intrare este prea mare)%pB: eroare: Â«erratum 843419Â» ciot(stub) Ã®n afara intervalului (fiÈ™ierul de intrare este prea mare)%pB: eroare: setul de instrucÈ›iuni nu se potriveÈ™te cu modulele anterioare%pB: eroare: multiple definiÈ›ii pentru â€ž%sâ€�; Ã®nceputul lui %s este stabilit Ã®ntr-un fiÈ™ier vinculat anterior%pB: eroare: segmentul neÃ®ncÄƒrcat %d include antetul fiÈ™ierului È™i/sau antetul programului%pB: eroare: search_nds32_elf_blank raporteazÄƒ nodul greÈ™it%pB: eroare: simbol neaÈ™teptat â€ž%sâ€� Ã®n secÈ›iunea COMDAT%pB: eroare: versiune necunoscutÄƒ a atributelor â€ž%câ€�(%d) - se aÈ™tepta â€žAâ€�
+%pB: eroare: atribut de obiect EABI obligatoriu necunoscut %d%pB: eroare: tip de PLT neacceptat: %u%pB: indicele de simbol aÈ™teptat Ã®n intervalul 0..%lu, dar a fost gÄƒsit un simbol local cu indicele %lu%pB: a eÈ™uat extragerea doar a secÈ›iunii obiectului: %s%pB: nu s-a gÄƒsit secÈ›iunea de informaÈ›ii pentru secÈ›iunea %d%pB: nu s-a gÄƒsit secÈ›iunea de legÄƒturÄƒ pentru secÈ›iunea %d%pB: eÈ™ec la generarea bibliotecii de import%pB: nu s-a reuÈ™it obÈ›inerea tabelului de simboluri Ã®n secÈ›iunea cu obiect unic: %s%pB: a eÈ™uat deschiderea doar a secÈ›iunii obiectului: %s%pB: nu s-a putut citi secÈ›iunea de date de depanare%pB: fatal: simboluri generice recuperate Ã®nainte de relaxare%pB: clasa de fiÈ™iere %s este incompatibilÄƒ cu %s%pB: realocare gotoff faÈ›Äƒ de simbolul dinamic %s%pB: realocare relativÄƒ-gp faÈ›Äƒ de simbolul dinamic %s%pB: simbolul ascuns â€ž%sâ€� din %pB este referit de cÄƒtre DSO%pB: simbolul ascuns â€ž%sâ€� nu este definit%pB: se ignorÄƒ secÈ›iunea duplicatÄƒ â€ž%pAâ€�
+%pB: nume de secÈ›iune ilegal â€ž%pAâ€�%pB: index de simbol ilegal %ld Ã®n realocÄƒri%pB: tip de maÈ™inÄƒ incompatibil; ieÈ™irea este 0x%x; intrarea este 0x%x%pB: dimensiune incorectÄƒ pentru simbolul â€ž%sâ€�%pB: simbolul indirect â€ž%sâ€� pentru â€ž%sâ€� este o buclÄƒ%pB: setul de instrucÈ›iuni nu se potriveÈ™te cu modulele anterioare%pB: eroare internÄƒ Ã®n ihex_read_section%pB: eroare internÄƒ, secÈ›iunea de registru internÄƒ %pA nu are conÈ›inut
+%pB: eroare internÄƒ, tabelul de simboluri È™i-a schimbat dimensiunea de la %d la %d cuvinte
+%pB: simbolul intern â€ž%sâ€� din %pB este referit de cÄƒtre DSO%pB: simbolul intern â€ž%sâ€� nu este definit%pB: NumberOfRvaAndSizes nevalid%pB: intrare nevalidÄƒ (%#x) Ã®n grupul [%u]%pB: fiÈ™ier nevalid pentru a extrage doar secÈ›iunea obiectului: %s%pB: intrare in bibliotecÄƒ de import nevalidÄƒ: â€ž%sâ€�; simbolul trebuie sÄƒ fie absolut, global È™i sÄƒ se refere la funcÈ›iile Thumb%pB: legÄƒturÄƒ nevalidÄƒ %u pentru secÈ›iunea de realocare %s (index %u)%pB: fiÈ™ier mmo nevalid: YZ al lop_end (%ld) nu este egal cu numÄƒrul de tetras ale lop_stab precedent (%ld)
+%pB: fiÈ™ier mmo nevalid: pentru lop_quote se aÈ™tepta YZ = 1 s-a primit YZ= %d
+%pB: fiÈ™ier mmo nevalid: pentru lop_fixrx se aÈ™tepta y =0, s-a primit y = %d
+%pB: fiÈ™ier mmo nevalid: pentru lop_fixo se aÈ™tepta z =1 sau z = 2, s-a primit z = %d
+%pB: fiÈ™ier mmo nevalid: pentru lop_loc se aÈ™tepta z =1 sau z = 2, s-a primit z = %d
+%pB: fiÈ™ier mmo nevalid: pentru lop_fixrx se aÈ™tepta z =16 sau z = 24, s-a primit z = %d
+%pB: fiÈ™ier mmo nevalid: cÃ¢mpurile y È™i z ale lop_stab sunt non-zero: y: %d, z: %d
+%pB: fiÈ™ier mmo nevalid: numele de fiÈ™ier pentru numÄƒrul %d nu a fost specificat Ã®nainte de folosire
+%pB: fiÈ™ier mmo nevalid: numÄƒrul fiÈ™ierului %d â€ž%sâ€�, a fost deja introdus ca â€ž%sâ€�
+%pB: fiÈ™ier mmo nevalid: valoarea de iniÈ›ializare pentru $255 nu este â€žMainâ€�
+%pB: fiÈ™ier mmo nevalid: pentru lop_fixrx octetul de Ã®nceput al operandului word trebuie sÄƒ fie 0 sau 1, s-a primit %d
+%pB: fiÈ™ier mmo nevalid: lop_end nu este ultimul element din fiÈ™ier
+%pB: fiÈ™ier mmo nevalid: lopcode neacceptat â€ž%dâ€�
+%pB: cÃ¢mp sh_link nevalid (%d) Ã®n secÈ›iunea numÄƒrul %d%pB: simbol special nevalid â€ž%sâ€�; trebuie sÄƒ fie un simbol de funcÈ›ie globalÄƒ sau slabÄƒ%pB: simbol standard nevalid â€ž%sâ€�; trebuie sÄƒ fie un simbol de funcÈ›ie globalÄƒ sau slabÄƒ%pB: tabel de simboluri nevalid: simbol duplicat â€ž%sâ€�
+%pB: decalaj de versiune nevalid %lx (maxim %lx)%pB: depÄƒÈ™ire a numÄƒrului de linii: 0x%lx > 0xffff%pB: se vinculeazÄƒ modulul %s cu modulele %s anterioare%pB: se vinculeazÄƒ cod pe 32 de biÈ›i cu un cod pe 64 de biÈ›i%pB: vinculare fiÈ™iere pe 64-biÈ›i cu fiÈ™iere pe 32-biÈ›i%pB: se vinculeazÄƒ cod specific UltraSPARC cu cod specific HAL%pB: vinculare fiÈ™iere auto-pic cu fiÈ™iere non-auto-pic%pB: vinculare fiÈ™iere big-endian cu fiÈ™iere little-endian%pB: vinculare fiÈ™iere constant-gp cu fiÈ™iere non-constant-gp%pB: se vinculeazÄƒ fiÈ™iere compilate pentru numere Ã®ntregi pe 16 biÈ›i (-mshort) È™i altele pentru numere Ã®ntregi pe 32 de biÈ›i%pB: se vinculeazÄƒ fiÈ™iere compilate pentru double pe 32-biÈ›i (-fshort-double) È™i altele pentru double pe 64-biÈ›i%pB: se vinculeazÄƒ fiÈ™iere compilate pentru HCS12 cu altele compilate pentru HC12%pB: se vinculeazÄƒ fiÈ™iere little-endian cu fiÈ™iere big-endian%pB: se vinculeazÄƒ codul non-pic Ã®ntr-un executabil independent de poziÈ›ie%pB: vinculare trap-on-NULL-dereference cu fiÈ™iere non-trapping%pB: realocarea Ã®ncÄƒrcÄƒtorului Ã®n secÈ›iunea numai-pentru-citire %pA%pB: realocarea Ã®ncÄƒrcÄƒtorului Ã®n secÈ›iunea nerecunoscutÄƒ â€ž%sâ€�%pB: simbolul local â€ž%sâ€� din %pB este referit de cÄƒtre DSO%pB: tabelul de descriptori de simbol local poate sÄƒ fie NULL atunci cÃ¢nd se aplicÄƒ realocarea %s faÈ›Äƒ de simbolul local%pB: fanionul de maÈ™inÄƒ Ã®n conflict cu È›inta%pB: realocare incorect formatÄƒ detectatÄƒ pentru secÈ›iunea %pA%pB: realocare incorect formatÄƒ detectatÄƒ pentru secÈ›iunea %s%pB: secÈ›iunea cartografiatÄƒ %pA are un tampon non-NULL%pB: XTY_LD â€ž%sâ€� plasat greÈ™it%pB: nume de import lipsÄƒ pentru IMPORT_NAME_EXPORTAS pentru %s%pB: OMIT_FP imbricat Ã®n %pA%pB: nu existÄƒ un nucleu pentru a aloca un simbol lungime %d octeÈ›i%pB: nu existÄƒ registre iniÈ›ializate; lungimea secÈ›iunii 0
+%pB: nu a fost gÄƒsit niciun simbol pentru biblioteca de import%pB: nicio secÈ›iune de versiune a simbolului pentru simbolul cu versiunea â€ž%sâ€�%pB: referinÈ›Äƒ necanonicÄƒ la funcÈ›ia protejatÄƒ canonicÄƒ â€ž%sâ€� Ã®n %pB%pB: cod non-pic cu realocare imm faÈ›Äƒ de simbolul dinamic â€ž%sâ€�%pB: realocare non-pic faÈ›Äƒ de simbolul %s%pB: nu este suficient spaÈ›iu pentru antetele programului, Ã®ncercaÈ›i sÄƒ faceÈ›i editarea legÄƒturilor cu opÈ›iunea â€ž-Nâ€�%pB: nu sunt suficiente informaÈ›ii despre versiune%pB: numai registrele %%g[2367] pot fi declarate utilizÃ¢nd STT_REGISTER%pB: memorie insuficientÄƒ pentru crearea numelui pentru secÈ›iunea goalÄƒ%pB: memorie insuficientÄƒ Ã®n _bfd_elf_get_property%pB: pragul maxim al contorului de realocÄƒri este prea mic%pB: realocare relativÄƒ-pc faÈ›Äƒ de simbolul dinamic %s%pB: realocare relativÄƒ la pc faÈ™Äƒ de simbolul slab nedefinit %s%pB: este necesar un modul pentru a gestiona obiectul lto%pB: probabil compilat fÄƒrÄƒ â€ž-fPICâ€�?%pB: simbolul protejat â€ž%sâ€� nu este definit%pB: tip de maÈ™inÄƒ recunoscut, dar negestionat (0x%x) Ã®n arhiva Format de bibliotecÄƒ de import%pB:realocare de registru pentru simbolul non-registru: %s Ã®n %pA%pB: realocare de registru faÈ›Äƒ de simbolul non-registru: (necunoscut) Ã®n %pA%pB: realocarea %#x nu este acceptatÄƒ%pB: realocare faÈ›Äƒ de un index de simbol inexistent: %ld%pB: legÄƒtura realocabilÄƒ de la %s la %s nu este acceptatÄƒ%pB: realocarea %s faÈ›Äƒ de %s%sâ€ž%sâ€� nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ %s%s%pB: realocarea %s faÈ›Äƒ de simbolul STT_GNU_IFUNC â€ž%sâ€� nu este gestionatÄƒ de %s%pB: realocarea %s faÈ›Äƒ de simbolul STT_GNU_IFUNC â€ž%sâ€� nu este acceptatÄƒ%pB: relocarea %s faÈ›Äƒ de â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocarea %s faÈ›Äƒ de â€ž%sâ€� nu poate fi utilizatÄƒ cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�%pB: realocarea %s faÈ›Äƒ de simbolul absolut â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocarea %s faÈ›Äƒ de simbolul extern sau nedefinit â€ž%sâ€� nu poate fi folositÄƒ la crearea unui %s; recompilaÈ›i cu â€ž-fPICâ€�%pB: realocarea %s faÈ›Äƒ de simbolul non-absolut â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocarea %s faÈ›Äƒ de simbolul non-absolut â€ž%sâ€� nu poate fi folositÄƒ Ã®n RV64 cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€� nu este acceptatÄƒ Ã®n modul x32%pB: realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€� care se poate asocia extern nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�%pB: realocarea %s nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�%pB: realocarea %s nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocare %s depÄƒÈ™ire 0x%lx%pB: realocare %s deplasare dreapta %d eroare 0x%lx%pB: realocarea R_386_GOTOFF faÈ›Äƒ de %s protejat â€ž%sâ€� nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocarea R_386_GOTOFF faÈ›Äƒ de %s nedefinit â€ž%sâ€� nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocarea R_LARCH_32 faÈ›Äƒ de simbolul non-absolut â€ž%sâ€� nu poate fi folositÄƒ Ã®n ELFCLASS64 cÃ¢nd se creeazÄƒ un obiect partajat sau PIE%pB: realocarea R_X86_64_GOTOFF64 faÈ›Äƒ de %s protejait â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat%pB: realocarea R_X86_64_GOTOFF64 faÈ›Äƒ de %s nedefinit â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat%pB: nepotrivire a dimensiunii realocÄƒrii din %pB secÈ›iunea %pA%pB: realocÄƒri Ã®n ELF generic (EM: %d)%pB: realocÄƒri in sectiunea â€ž%pAâ€�, dar aceasta nu are conÈ›inut%pB: secÈ›iunea %pA: depÄƒÈ™ire a tabelului de È™iruri la poziÈ›ia %ld%pB: secÈ›iunea %s este comprimatÄƒ cu zstd, dar BFD nu este construit cu suport pentru zstd%pB: secÈ›iunea â€ž%pAâ€�: intrarea VTENTRY coruptÄƒ%pB: secÈ›iunea â€ž%pAâ€� nu poate fi alocatÄƒ Ã®n segmentul %u%pB: numÄƒrul de intrare al grupului de secÈ›iune %u este corupt%pB: sh_link [%d] din secÈ›iunea â€ž%pAâ€� este incorect%pB: sh_link a secÈ›iunii â€ž%pAâ€� indicÄƒ cÄƒtre secÈ›iunea Ã®nlÄƒturatÄƒ â€ž%pAâ€� din â€ž%pBâ€�%pB: sh_link a secÈ›iunii â€ž%pAâ€� indicÄƒ cÄƒtre secÈ›iunea eliminatÄƒ â€ž%pAâ€� din â€ž%pBâ€�%pB: cÃ¢mpul de dimensiune este zero Ã®n antetul Format de bibliotecÄƒ de import%pB: simbolul special â€ž%sâ€� este permis doar pentru arhitectura ARMv8-M sau mai recentÄƒ%pB: remedierea speculaÈ›iei la simbolul dinamic %s%pB: tipul de realocare bazat pe stivÄƒ (%u) nu este acceptat cu â€ž-z pack-relative-relocsâ€�%pB: dimensiunea stivei specificatÄƒ È™i %s definitÄƒ%pB: È™irul nu este terminat cu nul Ã®n fiÈ™ierul obiect ILF%pB: tabelul de È™iruri [%u] este corupt%pB: suportul pentru dinamic local nu este implementat%pB: simbolul â€ž%sâ€� are tipul de csect nerecunoscut %d%pB: simbolul â€ž%sâ€� are smclas nerecunoscut %d%pB: simbolul â€ž%sâ€� este necesar, dar nu este prezent%pB: simbolul indicÄƒ suprapunerea (nu este acceptat)%pB: numele simbolului depÄƒÈ™eÈ™te lungimea maximÄƒ datÄƒ de %d%pB: obÈ›inerea adresei funcÈ›iei protejate â€ž%sâ€� nu poate fi fÄƒcutÄƒ atunci cÃ¢nd se creeazÄƒ o bibliotecÄƒ partajatÄƒ%pB: È›inta (%s) a unei realocÄƒri %s este Ã®n secÈ›iunea de ieÈ™ire greÈ™itÄƒ (%s)%pB: È›inta (%s) unei realocÄƒri %s este Ã®n secÈ›iunea greÈ™itÄƒ (%pA)%pB: prea multe secÈ›iuni (%d)%pB: prea multe secÈ›iuni: %d (>= %d)%pB: prea multe secÈ›iuni: %u%pB: realocare relativÄƒ-tp faÈ›Äƒ de simbolul dinamic %s%pB: nu se poate comprima secÈ›iunea %s%pB: nu se poate crea o secÈ›iune goalÄƒ falsÄƒ%pB: nu se poate decomprima secÈ›iunea %s%pB: nu se poate completa DataDictionary[%d]: %s lipseÈ™te%pB: nu se poate completa DataDictionary[%d]: %s nu este definit corect%pB: nu se poate completa DataDictionary[%d]: %s nu este aliniat corespunzÄƒtor%pB: nu se poate completa DataDictionary[%d]: dimensiunea nu poate fi cititÄƒ din %s%pB: nu se poate completa DataDictionary[%d]: dimensiune prea mare pentru secÈ›iunea de conÈ›inut%pB: nu s-a putut gÄƒsi %s faÈ›eta(veneer) â€ž%sâ€�%pB: nu se poate gÄƒsi numele pentru secÈ›iunea goalÄƒ%pB: nu se poate obÈ›ine secÈ›iunea decomprimatÄƒ %pA%pB: nu se poate Ã®ncÄƒrca numele secÈ›iunii COMDAT%pB: nu se pot sorta realocÄƒrile - acestea au mai multe dimensiuni%pB: nu se pot sorta realocÄƒrile - acestea au o dimensiune necunoscutÄƒ%pB: referinÈ›Äƒ nedefinitÄƒ la simbolul â€ž%sâ€�%pB: simbol nedefinit â€ž%sâ€� Ã®n secÈ›iunea .opd%pB: simbol nedefinit la realocarea R_PPC64_TOCSAVE%pB: redefinire neaÈ™teptatÄƒ a simbolului cu versiune indirectÄƒ â€ž%sâ€�%pB: tip de realocare neaÈ™teptat %u Ã®n secÈ›iunea .opd%pB: tip neaÈ™teptat (%#x) Ã®n secÈ›iunea â€ž%sâ€� din grupul [%u]%pB: realocare dinamicÄƒ negestionatÄƒ faÈ›Äƒ de %s%pB: valoarea maÈ™inii sparc negestionatÄƒ â€ž%luâ€� a fost detectatÄƒ Ã®n timpul procesÄƒrii de scriere%pB: arhitecturÄƒ necunoscutÄƒ %s%pB: comandÄƒ de Ã®ncÄƒrcare necunoscutÄƒ %#x%pB: atribut de obiect ARC obligatoriu necunoscut %d%pB: atribut de obiect EABI obligatoriu necunoscut %d%pB tip necunoscut de realocare %d%pB: tip necunoscut [%#x] de secÈ›iune â€ž%sâ€�%pB: OMIT_FP fÄƒrÄƒ pereche Ã®n %pA%pB: tip de maÈ™inÄƒ nerecunoscut (0x%x) Ã®n arhiva Format de bibliotecÄƒ de import%pB: tip de nume de import nerecunoscut; %x%pB: tip de import nerecunoscut; %x%pB: tip de realocare nerecunoscut %#x Ã®n secÈ›iunea â€ž%pAâ€�%pB: clasÄƒ de stocare nerecunoscutÄƒ %d pentru simbolul %s â€ž%sâ€�%pB: dimensiune de realocare AOUT neacceptatÄƒ: %d%pB: arhitecturÄƒ neacceptatÄƒ %#x%pB: mach bfd neacceptat %#lx%pB: tip de realocare bfd neacceptat %#x%pB: mach neacceptat %#x%pB: apel non-PIC neacceptat cÄƒtre IFUNC â€ž%sâ€�%pB: realocare %s neacceptatÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�%pB: tip de realocare neacceptat%pB: tip de realocare neacceptat %#x%pB: tip de relocare neacceptat %s%pB: tip de realocare neacceptat exportat: %#x%pB: tip de realocare neacceptat importat: %#x%pB: tip de realocare neacceptat: %#x%pB: swap_aux_in neacceptat pentru clasa de stocare %#x%pB: swap_aux_out neacceptat pentru clasa de stocare %#x%pB: tranziÈ›ie neacceptatÄƒ de la %s la %s%pB: secvenÈ›Äƒ de caractere largÄƒ neacceptatÄƒ 0x%02X 0x%02X dupÄƒ numele simbolului care Ã®ncepe cu â€ž%sâ€�
+%pB: utilizeazÄƒ %s instrucÈ›iuni Ã®n timp ce modulele anterioare utilizeazÄƒ %s instrucÈ›iuni%pB: utilizeazÄƒ simboluri prefixate cu â€ž_â€�, dar scrie fiÈ™ierul cu simboluri fÄƒrÄƒ prefix%pB: foloseÈ™te cÃ¢mpuri e_flags (%#x) diferite faÈ›Äƒ de modulele anterioare (%#x)%pB: foloseÈ™te cÃ¢mpuri e_flags necunoscute (%#x) diferite faÈ›Äƒ de modulele anterioare (%#x)%pB: utilizeazÄƒ instrucÈ›iuni care sunt incompatibile cu instrucÈ›iunile utilizate Ã®n modulele anterioare%pB: utilizeazÄƒ simboluri fÄƒrÄƒ prefix, dar se scrie fiÈ™ierul cu simboluri prefixate cu â€ž_â€�%pB: nodul de versiune nu a fost gÄƒsit pentru simbolul %s%pB: vizibilitatea simbolului â€ž%sâ€� s-a schimbat%pB: avertisment: fiÈ™ierul core a fost trunchiat%pB: avertisment: %pA: depÄƒÈ™ire numÄƒr de linii: %#x > 0xffff%pB: avertisment: instrucÈ›iunea %s BLX vizeazÄƒ funcÈ›ia %s â€ž%sâ€�%pB: avertisment: realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€� din secÈ›iunea %pA%pB: avertisment: %s nu este acceptat Ã®n modul partajat%pB: avertisment: %s: depÄƒÈ™ire a numÄƒrului de linii: 0x%lx > 0xffff%pB: avertisment: BTI este solicitat de â€ž-z force-btiâ€�, dar acest fiÈ™ier obiect de intrare nu are nota de proprietate necesarÄƒ.
+%pB: avertisment: simbolul COMDAT â€ž%sâ€� nu se potriveÈ™te cu numele secÈ›iunii â€ž%sâ€�%pB: avertisment: GCS este solicitat de â€ž-z gcsâ€�, dar acest fiÈ™ier obiect de intrare nu are nota de proprietate necesarÄƒ.
+%pB: avertisment: GCS este solicitat de â€ž-z gcsâ€�, dar aceastÄƒ bibliotecÄƒ partajatÄƒ nu are nota de proprietate necesarÄƒ. Este posibil ca Ã®ncÄƒrcÄƒtorul dinamic sÄƒ nu activeze GCS sau sÄƒ refuze sÄƒ Ã®ncarce programul cu excepÈ›ia cazului Ã®n care toate dependenÈ›ele bibliotecii partajate au marcajul GCS.
+%pB: avertisment: generarea PLT RVE nu este acceptatÄƒ%pB: avertisment: R_R_RISCV_SUB_ULEB128 cu adaos diferit de zero, vÄƒ rugÄƒm sÄƒ reconstruiÈ›i cu binutils versiunea 2.42 sau mai recentÄƒ%pB: avertisment: TLS slab este definit de implementare È™i este posibil sÄƒ nu funcÈ›ioneze conform aÈ™teptÄƒrilor%pB: avertisment: secÈ›iunea alocatÄƒ â€ž%sâ€� nu este Ã®n segment%pB: avertisment: opÈ›iunea â€ž%sâ€� greÈ™itÄƒ, dimensiunea %u mai micÄƒ decÃ¢t antetul sÄƒu%pB: avertisment: nu se poate determina funcÈ›ia È›intÄƒ pentru secÈ›iunea ciot(stub) â€ž%sâ€�%pB: avertisment: pretinde cÄƒ are 0xffff realocÄƒri, fÄƒrÄƒ depÄƒÈ™ire%pB: avertisment: informaÈ›ii despre numÄƒrul liniei duplicate pentru â€ž%sâ€�%pB: avertisment: tipul de endianess nu se potriveÈ™te cu modulele anterioare%pB: avertisment: se ignorÄƒ fanionul secÈ›iunii %s Ã®n secÈ›iunea %s%pB: avertisment: simbol ilegal Ã®n intrarea cu numÄƒrul de linie %d%pB: avertisment: index de simbol ilegal %ld Ã®n realocÄƒri%pB: avertisment: index de simbol ilegal %lu Ã®n realocÄƒri%pB: avertisment: index de simbol ilegal 0x%lx Ã®n intrarea cu numÄƒrul de linie %d%pB: avertisment: versiuni elf incompatibile %s È™i %s%pB: avertisment: ASE-uri inconsistente Ã®ntre e_flags È™i .MIPS.abiflags%pB: warning: ABI FP inconsistent Ã®ntre .gnu.attributes È™i .MIPS.abiflags%pB: avertisment: ISA inconsistent Ã®ntre e_flags È™i .MIPS.abiflags%pB: avertisment: extensii ISA inconsistente Ã®ntre e_flags È™i .MIPS.abiflags%pB: avertisment: isymMax (%ld) este mai mare decÃ¢t ifdMax (%ld)%pB: avertisment: citirea tabelului cu numere de linie a eÈ™uat%pB: avertisment: se vinculeazÄƒ fiÈ™ierele PIC cu fiÈ™iere non-PIC%pB: avertisment: se vinculeazÄƒ fiÈ™iere abicals cu fiÈ™iere non-abicals%pB: avertisment: buclÄƒ Ã®n dependenÈ›e de secÈ›iune detectatÄƒ%pB: avertisment: multiple tabele de simboluri dinamice detectate - se ignorÄƒ tabelul din secÈ›iunea %u%pB: avertisment: multiple tabele de simboluri detectate - se ignorÄƒ tabelul din secÈ›iunea %u%pB: avertisment: nu a fost gÄƒsit niciun simbol pentru secÈ›iunea â€ž%sâ€�%pB: avertisment: s-a Ã®ntÃ¢lnit o versiune mai veche a fiÈ™ierului obiect, se recomandÄƒ sÄƒ se recompileze cu lanÈ›ul de instrumente curent%pB: avertisment: realocarea SDA_BASE a eÈ™uat%pB: avertisment: secÈ›iunea secundarÄƒ de realocare â€ž%sâ€� pentru secÈ›iunea %pA, a fost gÄƒsitÄƒ - se ignorÄƒ%pB: avertisment: soluÈ›ia de eroare STM32L4XX selectatÄƒ nu este necesarÄƒ pentru arhitectura È›intÄƒ%pB: avertisment: soluÈ›ia de eroare VFP11 selectatÄƒ nu este necesarÄƒ pentru arhitectura È›intÄƒ%pB: avertisment: tabelul de simboluri este prea mare pentru mmo, mai mare de 65535 de cuvinte pe 32 de biÈ›i: %d.  Doar â€žMainâ€� va fi emis.
+%pB: avertisment: generarea PLT Ã®n modul thumb-1 nu este acceptatÄƒ Ã®n prezent%pB: avertisment: opÈ›iunea â€ž%sâ€� este trunchiatÄƒ%pB: avertisment: nu se poate aloca nicio secÈ›iune segmentului PT_GNU_RELRO%pB: avertisment: acces nealiniat la intrarea GOT%pB: warning: fanion neaÈ™teptat Ã®n cÃ¢mpul flags2 din .MIPS.abiflags (0x%lx)%pB: avertisment: atribut de obiect EABI necunoscut %d%pB: avertisment: win32pstatus %s cu dimensiunea de %lu octeÈ›i este prea mic%pB: nu se va rezolva realocarea TLS Ã®n timpul de execuÈ›ie%pB: win32pstatus NOTE_INFO_MODULE cu dimensiunea de %lu este prea mic pentru a conÈ›ine un nume de dimensiunea %u%pB: tip auxiliar greÈ™it (auxtype) %#x, pentru clasa de stocare %#x%pB: este necesar x86 ISA: %pB: x86 ISA utilizat: %pB:%.8s: RVA trunchiat%pB:%.8s: secÈ›iune de sub baza imaginii%pB:%d: sumÄƒ de verificare greÈ™itÄƒ Ã®n fiÈ™ierul S-record%pB:%d: numÄƒrul de octeÈ›i %d este prea mic%pB:%d: caracter neaÈ™teptat â€ž%sâ€� Ã®n fiÈ™ierul Intel Hex%pB:%d: caracter neaÈ™teptat â€ž%sâ€� Ã®n fiÈ™ierul S-record%pB:%pA%s depÄƒÈ™eÈ™te dimensiunea suprapunerii
+%pB:%pA: %s È™i %s trebuie sÄƒ se afle Ã®n aceeaÈ™i secÈ›iune de intrare%pB:%pA: eroare: Ã®ncercare de a scrie dincolo de sfÃ¢rÈ™itul secÈ›iunii%pB:%pA: eroare: Ã®ncercare de a scrie secÈ›iunea Ã®ntr-un fiÈ™ier de memorie tampon gol%pB:%pA: eroare: realocarea face referire la simbolul %s care a fost eliminat de colectarea deÈ™eurilor (garbage collection)%pB:%pA: eroare: Ã®ncercaÈ›i sÄƒ reeditaÈ›i legÄƒturile cu â€ž--gc-keep-exportedâ€� activat%pB:%pA: tabelul %s lipseÈ™te %s corespunzÄƒtor%pB:%pA: intrarea %s din tabel nu este aliniatÄƒ cu cuvÃ¢ntul Ã®n cadrul tabelului%pB:%pA: intrare Ã®n tabel %s Ã®n afara tabelului%pB:%pA: avertisment: realocarea Red Hat depreciatÄƒ %s a fost detectatÄƒ asupra lui: %s%pB:%s are atÃ¢t realocÄƒri normale, cÃ¢t È™i realocÄƒri TLS%pB:%s secÈ›iunea %s: aliniatul 2**%u nu este reprezentabil%pB:%u: sumÄƒ de verificare greÈ™itÄƒ Ã®n fiÈ™ierul Intel Hex (se aÈ™tepta %u, s-a gÄƒsit %u)%pB:%u: lungime incorectÄƒ a Ã®nregistrÄƒrii adresei extinse Ã®n fiÈ™ierul Intel Hex%pB:%u: lungime incorectÄƒ a Ã®nregistrÄƒrii adresei liniare extinse Ã®n fiÈ™ierul Intel Hex%pB:%u: lungime incorectÄƒ a adresei de Ã®nceput liniarÄƒ extinsÄƒ Ã®n fiÈ™ierul Intel Hex%pB:%u: lungime incorectÄƒ a adresei de Ã®nceput extinse Ã®n fiÈ™ierul Intel Hex%pB:%u: tip ihex nerecunoscut %u Ã®n fiÈ™ierul Intel Hex%pB:(%pA+%#lx): realocarea %s faÈ›Äƒ de â€ž%sâ€� nu poate fi utilizatÄƒ cÃ¢nd se creeazÄƒ %s; recompilaÈ›i cu %s%s%pB[%pA]: nicio secÈ›iune de ieÈ™ire pentru spaÈ›iul %pA%pcrel_lo lipseÈ™te potrivirea cu %pcrel_hi%pcrel_lo depÄƒÈ™ire cu un adaossimbol de secÈ›iune %pcrel_lo cu un adaos%pcrel_lo cu adaos nu este permis pentru R_RISCV_GOT_HI20%s definitÄƒ Ã®n intrarea toc eliminatÄƒ%s Ã®mpÄƒrÈ›it la zero%s duplicat
+%s duplicat Ã®n %s
+%s are atÃ¢t realocÄƒri normale, cÃ¢t È™i realocÄƒri TLS%s Ã®n secÈ›iunea de suprapunere%s este definit, dar nu a putut fi Ã®ncÄƒrcat: %s%s este definit, dar suportul pentru module este dezactivat%s este Ã®ncÄƒrcat, dar simbolul â€ž%sâ€� nu a fost gÄƒsit: %s%s nu este definit Ã®n editorul de legÄƒturi creat %pA%s neimplementat%s decalaj prea mare pentru codificarea sdata4 .eh_frame%s, iteraÈ›ii %u
+  ramura           %lu
+  ramura lungÄƒ     %lu
+  apel plt         %lu
+  intrare globalÄƒ  %lu%s: eroare internÄƒ BFD %s, se abandoneazÄƒ la %s:%d
+%s: eroare interna BFD %s, se abandoneazÄƒ la %s:%d din %s
+%s: id ELF greÈ™it: â€ž%dâ€�%s: È™irul ISA nu poate conÈ›ine litere mari%s: È™irul ISA trebuie sÄƒ Ã®nceapÄƒ cu rv32, rv64 sau Profiles%s: definiÈ›ia TLS din secÈ›iunea %pB %pA nu se potriveÈ™te cu definiÈ›ia non-TLS din secÈ›iunea %pB %pA%s: definiÈ›ia TLS din secÈ›iunea %pB %pA nu se potriveÈ™te cu referinÈ›a non-TLS din %pB%s: referinÈ›a TLS din %pB nu se potriveÈ™te cu definiÈ›ia non-TLS din secÈ›iunea %pB %pA%s: referinÈ›a TLS din %pB nu se potriveÈ™te cu referinÈ›a non-TLS din %pB%s: compilat ca obiect pe 32 de biÈ›i È™i %s este pe 64 de biÈ›i%s: compilat ca obiect pe 64 de biÈ›i È™i %s este pe 32 de biÈ›i%s: nu s-a putut deschide pentru a extrage doar secÈ›iunea obiectului: %s%s: prima extensie ISA trebuie sÄƒ fie â€žeâ€�, â€žiâ€� sau â€žgâ€�%s: extensia ISA cu prefix nevalid â€ž%sâ€� se terminÄƒ cu <numÄƒr>p%s: nu existÄƒ acest simbol%s: neimplementat%s: nu este acceptat%s: dimensiunea obiectului nu se potriveÈ™te cu cea a È›intei %s%s: extensia ISA cu prefix trebuie separatÄƒ cu _%s: versiune nedefinitÄƒ: %s%s: extensie ISA cu prefix necunoscut â€ž%sâ€�%s: extensie ISA standard sau clasÄƒ de prefix â€ž%câ€� necunoscutÄƒ%snu se poate + extensia de bazÄƒ â€ž%sâ€� Ã®n %s â€ž%sâ€�%sdepreciat - extensia â€ž%sâ€� Ã®n %s â€ž%sâ€�.extensia ISA %snevalidÄƒ se terminÄƒ cu <numÄƒr>p Ã®n %s â€ž%sâ€�extensie ISA %snecunoscutÄƒ â€ž%sâ€� Ã®n %s â€ž%sâ€�%tlsdesc_lo cu un adaos(%s): Tip de destinaÈ›ie necunoscut (ARM/Thumb) Ã®n %pB(la decalajul de biÈ›i %u)
+(descriptor)
+(format %c%c%c%c semnÄƒturÄƒ %s vÃ¢rstÄƒ %ld pdb %s)
+(nicio valoare)
+(nu este activ)
+(nu este alocat)
+(reg: %u, disp: %u, indir: %u, gen: (datele de fire de execuÈ›ie locale sunt prea mari pentru â€ž-fpicâ€� sau â€ž-msmall-tlsâ€�: recompilaÈ›i cu â€ž-fPICâ€� sau â€ž-mno-small-tlsâ€�)(prea multe variabile globale pentru â€ž-fpicâ€�: recompilaÈ›i cu â€ž-fPICâ€�)(valoare finalÄƒ)
+(urmeazÄƒ specificaÈ›iile valorii)
+)
+*** verificaÈ›i aceastÄƒ realocare %s*negestionat*
+tip dst *negestionat* %u
+*necunoscut**necunoscut*        , Valoare: %#08lx
+, alias: %u
+, decalaj remediere extensie: %u, decalaj psect no_opt: %u, subtype: %u (%s)
+, vector de simboluri rva: - %pB este pe 64 de biÈ›i, iar %pB nu-mips32r2 -mfp64 (12 apeluri salvate)depÄƒÈ™ire de intrare .eh_frame_hdr.eh_frame_hdr se referÄƒ la FDE-uri suprapusesecÈ›iunea .got nu urmeazÄƒ imediat dupÄƒ secÈ›iunea .pltfuziunea .rsrc a eÈ™uat: un director se potriveÈ™te cu o foaiefuziunea .rsrc a eÈ™uat: versiuni diferite de directoarefuziunea .rsrc a eÈ™uat: directoare cu caracteristici diferitefuziunea .rsrc a eÈ™uat: foaie duplicatfuziunea .rsrc a eÈ™uat: foaie duplicat: %sfuziunea .rsrc a eÈ™uat: resursÄƒ È™ir duplicat: %dfuziunea .rsrc a eÈ™uat: multiple manifeste non-implicitedouble pe 32-biÈ›i, realocarea relativÄƒ gp 32bits are loc pe un simbol extern4-octeÈ›i4-octeÈ›i64 de biÈ›i *nu este gestionat*
+double pe 64-biÈ›i, 8-octeÈ›i8-octeÈ›i: instrucÈ›iuni m32r: instrucÈ›iuni m32r2: instrucÈ›iuni m32rx: instrucÈ›iuni n1: instrucÈ›iuni n1h; recompilaÈ›i cu â€ž-fPICâ€�; recompilaÈ›i cu â€ž-fPIEâ€�<informaÈ›ie coruptÄƒ> %s<lungimea È™irului coruptÄƒ: %#x>
+<decalajul È™irului corupt: %#lx>
+<corupt><tip de director necunoscut: %d>
+<fanioane de mascÄƒ necunoscute><necunoscut: %x><necunoscut>realocare @pltoff faÈ›Äƒ de simbol localBASE_IMAGE       aserÈ›iunea BFD %s a eÈ™uat %s:%dDirector Realocare de BazÄƒ [.reloc]Director Importare de LimitÄƒLimite:
+Utilizare â€žCACHEâ€�: CLIAntet de rulare CLRCLUSTERS_LOCKMGR COUNTERS         CPU              CTL_AUGRB ( mÄƒreÈ™te baza de realocare) %u
+CTL_DFLOC (defineÈ™te locaÈ›ia)
+CTL_SETRB (stabileÈ™te baza de realocare)
+CTL_STKDL (locaÈ›ia definitÄƒ Ã®n stivÄƒ)
+CTL_STLOC (stabileÈ™te locaÈ›ia)
+Coolidge (kv3) V1 32 biÈ›iCoolidge (kv3) V1 64 biÈ›iCoolidge (kv3) V2 32 biÈ›iCoolidge (kv3) V2 64 biÈ›iCoolidge (kv4) V1 32 biÈ›iCoolidge (kv4) V1 64 biÈ›iAntet pentru drepturi de autor
+SecÈ›iune .rsrc coruptÄƒ a fost detectatÄƒ!
+DSO lipseÈ™te din linia de comandÄƒeroare DWARF: atributul DW_AT_comp_dir a fost gÄƒsit cu o formÄƒ fÄƒrÄƒ È™ireroare DWARF: recursiune a unei instanÈ›e abstracte a fost detectatÄƒeroare DWARF: nu se gÄƒseÈ™te secÈ›iunea %s.eroare DWARF: nu s-a putut gÄƒsi numÄƒrul abreviat %ueroare DWARF: nu s-a putut gÄƒsi specificaÈ›ia variabilei la poziÈ›ia 0x%lxeroare DWARF: s-a gÄƒsit adresa cu dimensiunea â€ž%uâ€�, acest cititor nu poate gestiona dimensiuni mai mari de â€ž%uâ€�eroare DWARF: a fost gÄƒsit Â«dwarfÂ» versiunea â€ž%uâ€�, acest cititor gestioneazÄƒ doar informaÈ›iile despre versiunile 2, 3, 4 È™i 5eroare DWARF: indicatorul de informaÈ›ii se extinde dincolo de sfÃ¢rÈ™itul atributeloreroare DWARF: referinÈ›Äƒ DIE a instanÈ›ei abstracte nevalidÄƒeroare DWARF: maximul de operaÈ›ii pe instrucÈ›iune nu este valideroare DWARF: valoare FORM nevalidÄƒ sau neprocesabilÄƒ: %#xeroare DWARF: dimensiunea selectorului de segmente %u, nu este acceptatÄƒ pentru informaÈ›iile de linieeroare DWARF: secÈ›iunea cu numÄƒrul de linie deterioratÄƒeroare DWARF: secÈ›iune a numÄƒrului de linie deterioratÄƒ (numÄƒr de fiÈ™ier greÈ™it)eroare DWARF: s-a rÄƒmas fÄƒrÄƒ spaÈ›iu citind codurile operaÈ›ionaleeroare DWARF: s-a rÄƒmas fÄƒrÄƒ spaÈ›iu citind prologuleroare DWARF: secÈ›iunea %s nu are conÈ›inuteroare DWARF: secÈ›iunea %s este prea mareeroare DWARF: versiune .debug_line neprocesatÄƒ %deroare DWARF: numÄƒr(contor) de format zeroDW_EH_PE_datarel nespecificat pentru aceastÄƒ arhitecturÄƒDirector DepanareTabel cu module de depanare:
+Tabel cu simboluri de depanare:
+Director Importare ÃŽntÃ¢rziereDirector DescriereEIHD: (dim.: %u, nr. blocuri: %u)
+Decalaj intrare     = 0x%.8lx (%ld)
+Eroare: %pB È™i %pB au versiuni DSP diferiteEroare: %pB È™i %pB au ABI FPU diferitEroare: %pB È™i %pB au versiuni VDSP diferiteEroare: %pB are atÃ¢t atributele Tag_MPextension_use actuale, cÃ¢t È™i pe cele vechiDirector ExcepÈ›ii [.pdata]Director Exportare [.edata (sau oriunde se gÄƒseÈ™te)]Export fanioane 			%lx
+Exportare RVAcodificarea FDE Ã®n %pB(%pA) Ã®mpiedicÄƒ crearea tabelului .eh_frame_hdrFDPIC nu acceptÄƒ Ã®ncÄƒ realocarea %s pentru a deveni dinamicÄƒ pentru executabilFILES_VOLUMES    FPU-2.0FPU-3.0CÃ¢mp fanion         = 0x%.2x
+Expeditor RVAGALAXY           secÈ›iunea GNU_MBIND este acceptatÄƒ doar de È›intele GNU È™i FreeBSDsecÈ›iunea GNU_RETAIN este acceptatÄƒ numai de È›intele GNU È™i FreeBSDrealocÄƒrile GOT È™i PLT nu pot fi remediate cu un editor de legÄƒturi non-dinamicdimensiunea tabelului GOT Ã®n afara limiteirealocarea relativÄƒ a GP utilizatÄƒ atunci cÃ¢nd GP nu este definitrealocarea relativÄƒ a GP atunci cÃ¢nd _gp nu este definitrelocarea GPDISP nu a gÄƒsit instrucÈ›iuni ldah È™i ldaTabel cu simboluri globale:
+VirgulÄƒ mobilÄƒ hardware (procesor pe 32 de biÈ›i, FPU pe 64 biÈ›i)
+VirgulÄƒ mobilÄƒ hardware (procesor pe 32 de biÈ›i, orice FPU)
+VirgulÄƒ mobilÄƒ hardware (MIPS32r2 pe 64 de biÈ›i, FPU 12 callee-saved)
+VirgulÄƒ mobilÄƒ hardware (de precizie dublÄƒ)
+VirgulÄƒ flotantÄƒ hardware (de precizie simplÄƒ)
+VirgulÄƒ mobilÄƒ de compatibilitate hardware (procesor pe 32 de biÈ›i, FPU pe 64 biÈ›i)
+VirgulÄƒ mobilÄƒ hardware sau software
+proprietÄƒÈ›i IBT È™i SHSTKproprietatea IBTID: %#08lxIDC - Verificarea consistenÈ›ei identificÄƒrii
+Simbol IFUNC %s Ã®n tabelul dinamic de simboluri - simbolurile IFUNCS nu sunt acceptateIMAGE_ACTIVATOR  INPUT_SECTION_FLAGS nu sunt acceptatÄƒIn/IeÈ™           Activare imagine:  (dim.=%u)
+Fixarea activatorului de imagine: (major: %u, minor: %u)
+Identificare imagine: (major: %u, minor: %u)
+Descriptorul secÈ›iunii de imagine: (major: %u, minor: %u, size: %u, decalaj: %u)
+Simbol de imagine È™i tabel de depanare: (major: %u, minor: %u)
+Director Importare Tabel de AdreseDirector Importare [ pÄƒrÈ›i ale .idata]Eroare internÄƒ: inaccesibil.proprietatea LAM_U48proprietatea LAM_U57LOGICAL_NAMES    Numele procesorului de limbaj
+Lungime             = 0x%.8lx (%ld)
+Director ÃŽncÄƒrcare ConfiguraÈ›ieFuncÈ›ia IFUNC localÄƒ â€ž%sâ€� Ã®n %pB
+MEMORY_MANAGEMENTFuncÈ›iile MIPS16 È™i microMIPS nu se pot apela Ã®ntre eleMISC             Utilizare MMU: MULTI_PROCESSING Major/Minor 			%d/%d
+Stiva maximÄƒ necesarÄƒ este 0x%v
+MeP: â€žhowtoâ€� %d are tipul %dSe Ã®mbinÄƒ proprietÄƒÈ›ile programului
+Antetul modulului
+NETWORKS         NORMALNOTÄ‚: Acest comportament este depreciat È™i va fi eliminat Ã®ntr-o versiune viitoare a editorului de legÄƒturi.Nume 				NiciunulNumÄƒr Ã®n:
+OPR_ADD (adunare)
+OPR_AND (â€žÈ™iâ€� logic)
+OPR_ASH (deplasare aritmeticÄƒ)
+OPR_COM (complement)
+OPR_DIV (Ã®mpÄƒrÈ›ire)
+OPR_IOR (â€žsauâ€� exclusiv logic)
+OPR_INSV (inserare cÃ¢mp)
+OPR_IOR (â€žsauâ€� inclusiv logic)
+OPR_MUL (multiplicare)
+OPR_NEG (negaÈ›ie)
+OPR_NOP (fÄƒrÄƒ operaÈ›ie)
+OPR_REDEF (defineÈ™te un literal)
+OPR_REDEF (redefineÈ™te simbolul la locaÈ›ia actualÄƒ)
+OPR_ROT (rotire)
+OPR_SEL (selectare)
+OPR_SUB (scÄƒdere)
+OPR_USH (deplasare fÄƒrÄƒ semn)
+BazÄƒ ordinalÄƒ 			%ld
+Ã®ncÄƒrcare relativÄƒ la PC de la o adresÄƒ nealiniatÄƒexecutabil PIEPOSIX            PROCESS_SCHED    PRVFXDPRVPICPSC - Definirea secÈ›iunii programului
+Nume partiÈ›ie       = "%s"
+SfÃ¢rÈ™it PartiÈ›ie[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
+Lungime PartiÈ›ie[%d] = 0x%.8lx (%ld)
+Sector PartiÈ›ie[%d]  = 0x%.8lx (%ld)
+RaportaÈ›i aceastÄƒ eroare.
+fanioane private = 0x%lx: Conflict ABI RL78: fiÈ™ierul G10 %pB nu poate fi vinculat cu fiÈ™ierul %s %pBConflict ABI RL78: nu se poate realiza legÄƒtura %s Ã®ntre fiÈ™ierul %pB È™i %s fiÈ™ierul %pBConflict de fuziune RL78: nu se pot lega Ã®ntre ele obiecte pe 32 È™i 64 de biÈ›irealocare R78 Ã®mpÄƒrÈ›itÄƒ la zerodepÄƒÈ™ire a limitei superioare/inferioare a stivei de realocare RL78R_AMD64_IMAGEBASE cu __ImageBase nedefinitÄƒR_BFIN_FUNCDESC face referire la simbolul dinamic cu adaos diferit de zeroR_BFIN_FUNCDESC_VALUE face referire la simbolul dinamic cu adaos diferit de zeroR_FRV_TLSMOFFLO nu este aplicat unei instrucÈ›iuni setlo sau setlos
+Se citeÈ™te marcajul de timp al fiÈ™ierului arhiveiProprietatea %W a fost eliminatÄƒ pentru a fuziona %pB (0x%v) È™i %pB (0x%v)
+Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB (0x%v) È™i %pB (nu a fost gÄƒsitÄƒ)
+Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB (negÄƒsitÄƒ) È™i %pB (0x%v)
+Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB È™i %pB
+Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB È™i %pB (nu a fost gÄƒsitÄƒ)
+RezervatDirector ResursÄƒ [.rsrc]adresa S12 (%lx) nu se aflÄƒ Ã®n memoria RAM partajatÄƒ (0x2000-0x4000), prin urmare trebuie sÄƒ poziÈ›ionaÈ›i manual adresa Ã®n codul dvs.realocare SDA cÃ¢nd _SDA_BASE_ nu este definitSECURITY         SEC_RELOC fÄƒrÄƒ realocÄƒri Ã®n secÈ›iunea %pAsecÈ›iunile SFrame cu o codificare neaÈ™teptatÄƒ a datelor Ã®mpiedicÄƒ generarea .sframeSHELL            SHRFXDSHRPICproprietatea SHSTKUtilizare SIMD: SPSC - Definirea secÈ›iunii programului de imagine partajatÄƒ
+STABLE           STA_CKARG (argumentul procedurii de comparare)
+STA_GBL (stivÄƒ globalÄƒ) %.*s
+STA_LI (stivÄƒ literalÄƒ)
+STA_LW (stivÄƒ de cuvinte lungi)STA_MOD (stivÄƒ modul)
+STA_PQ (stivÄƒ de bazÄƒ psect + deplasarea)
+STA_QW (stivÄƒ de cuvinte Ã®n catren)STC_BOH_GBL (stocare condiÈ›ionalÄƒ BOH la adresa globalÄƒ)
+STC_BOH_PS (stocare condiÈ›ionalÄƒ BOH la psect + deplasarea)
+STC_BSR_GBL (stocare condiÈ›ionalÄƒ BSR la adresa globalÄƒ)
+STC_BSR_PS (stocare condiÈ›ionalÄƒ BSR la psect + deplasarea)
+STC_GBL (stocare condiÈ›ionalÄƒ globalÄƒ)
+STC_GCA (adresa codului condiÈ›ional de stocare)
+STC_LDA_GBL (stocare condiÈ›ionalÄƒ LDA la adresa globalÄƒ)
+STC_LDA_PS (stocare condiÈ›ionalÄƒ LDA la psect + deplasarea)
+STC_LP (stocare pereche de legÄƒturi condiÈ›ionale)
+STC_LP_PSB (stocare pereche de legÄƒturi condiÈ›ionale + semnÄƒturÄƒ)
+STC_NBH_GBL (stocare condiÈ›ionalÄƒ sau indiciu la adresa globalÄƒ)
+STC_NBH_PS (stocare condiÈ›ionalÄƒ sau indiciu la psect + deplasarea)
+STC_NOP_GBL (stocare condiÈ›ionalÄƒ NOP la adresa globalÄƒ)
+STC_NOP_PS (stocare condiÈ›ionalÄƒ NOP la psect + deplasarea)
+STC_PS (stocare condiÈ›ionalÄƒ psect + deplasare)
+STO_RB (stocarea ramurii absolute)
+STO_B (stocare octet)
+STO_BR_GBL (stocarea ramurii globale) *neimplementatÄƒ Ã®ncÄƒ*
+STO_BR_PS (stocarea ramurii psect + deplasarea) *neimplementatÄƒ Ã®ncÄƒ*
+STO_CA (stocare adresÄƒ cod) %.*s
+STO_GBL (stocare globalÄƒ) %.*s
+STO_GBL_LW (stocare globalÄƒ de cuvinte lungi) %.*s
+STO_IMM (stocare imediatÄƒ) %u octeÈ›i
+STO_IMMR (stocare imediatÄƒ repetatÄƒ) %u octeÈ›i
+STO_LW (stocare cuvinte lungi)
+STO_OFF (stocare LP cu semnÄƒtura procedurii)
+STO_OFF (stocheazÄƒ deplasarea Ã®n psect)
+STA_QW (stocare de cuvinte Ã®n catren)
+STO_RB (stocarea ramurii relative)
+STO_B (stocare cuvinte)
+SYM - Definirea simbolului global
+SYM - ReferinÈ›Äƒ de simbol global
+SYMG - Definirea simbolului universal
+SYMM - Definirea simbolului global cu versiunea
+SYMV - Definirea simbolului vectorizat
+SYSGEN           Director SecuritateVirgulÄƒ mobilÄƒ software
+Antetul fiÈ™ierelor sursÄƒ
+Director SpecialDimensiunea stivei pentru nodurile rÄƒdÄƒcinÄƒ ale graficului de apeluri.
+PaÈ™i largi:
+Simbolul â€ž%sâ€� are tipuri diferite: %s Ã®n %pB, anterior REGISTER Ã®n %pBrealocarea TLS nu este validÄƒ fÄƒrÄƒ secÈ›iuni dinamiceDebordare a tabelului de intrÄƒri(TOC) Ã®n timpul generÄƒrii ciotului(stub); Ã®ncercaÈ›i â€ž-mminimal-tocâ€� la compilareTabel de adrese
+Adaosul nu este permis pentru R_RISCV_GOT_HI20CÃ¢mpul pentru dimensiunea datelor de depanare din directorul de date este prea mare pentru secÈ›iuneDimensiunea directorului de depanare nu este un multiplu al dimensiunii intrÄƒrii directorului de depanare
+Director Stocare fire de execuÈ›ie [.tls]Marcaj orÄƒ/datÄƒ 		%lx
+Antetul textului titlului
+Prea multe coduri de desfÄƒÈ™urare (%ld)
+Tip                 Dim.     Rva      Decalaj
+USRSTACKImposibil de gÄƒsit intrarea ciot(stub) care vizeazÄƒ %sNu se poate vincula fiÈ™ierul de intrare: %sNu se poate Ã®ncÄƒrca DLL.NecunoscutNecunoscut: %xS-a actualizat proprietatea %W (%v) pentru a fuziona %pB (0x%v) È™i %pB (nu a fost gÄƒsitÄƒ)
+S-a actualizat proprietatea %W (0x%v) pentru a fuziona %pB (0x%v) È™i %pB (0x%v)
+VOLATILE         Dimensiunea virtualÄƒ a secÈ›iunii .pdata (%ld) mai mare decÃ¢t dimensiunea realÄƒ (%ld)
+Avertisment: dimensiunea secÈ›iunii %s (%ld) nu este multiplu de %dn
+Avertisment: dimensiunea secÈ›iunii %s (%ld) este mai micÄƒ decÃ¢t dimensiunea virtualÄƒ (%ld)
+Avertisment: dimensiunea secÈ›iunii %s este zero
+AtenÈ›ie: trebuie sÄƒ utilizaÈ›i â€ž_â€� pentru a contacta Profiles cu alte extensiiSe scrie marcajul de timp armap actualizatadresa XGATE (%lx) nu se aflÄƒ Ã®n memoria RAM partajatÄƒ (0xE000-0xFFFF), prin urmare trebuie sÄƒ poziÈ›ionaÈ›i manual adresa È™i, eventual, sÄƒ gestionaÈ›i pagina, Ã®n codul dvs.[%u]: InferioarÄƒ: %u, superioarÄƒ: %u
+[abi=int pe 16-biÈ›i, [abi=int pe 32-biÈ›i, [al cÄƒrui nume s-a pierdut]\%pB: avertisment: instrucÈ›iunea %s BLX vizeazÄƒ funcÈ›ia %s â€ž%sâ€�depÄƒÈ™ire a decalajului de apel __tls_get_addr_bfd_vms_output_counted apelat cu prea mulÈ›i octeÈ›i_bfd_vms_output_counted apelat cu zero octeÈ›iâ€ž%sâ€� se referÄƒ la ceva care nu este o funcÈ›ie de intrareâ€žxtheadvectorâ€� este Ã®n conflict cu extensia â€žv/zve32xâ€�â€žzfinxâ€� este Ã®n conflict cu extensia â€žc+fâ€�/ â€žzcfâ€�â€žzfinxâ€� este Ã®n conflict cu extensia â€žf/d/q/zfh/zfhminâ€�un obiect PDEun obiect PIEun obiect partajatadresaadresa nu este aliniatÄƒ cu cuvinteles-a gÄƒsit codul de maÈ™inÄƒ ELF alternativ (%d) Ã®n %pB, se aÈ™tepta %darhiva nu are niciun index.; rulaÈ›i Â«ranlibÂ» pentru a adÄƒuga unulfiÈ™ier obiect de arhivÄƒ Ã®n format eronatdescriptor matrice:
+matrice, dim: %u, bitmap: arsize: %u, a0: 0x%08x
+atomic, tip=0x%02x %s
+Ã®ncercarea de a converti L32R/CALLX Ã®n CALL a eÈ™uatÃ®ncercare de a crea o legÄƒturÄƒ realocabilÄƒ cu intrarea %s È™i ieÈ™irea %sindex de secÈ›iune incorect Ã®n %svaloare eronatÄƒadresa grupatÄƒ [%lx:%04lx] (%lx) nu este Ã®n acelaÈ™i grup cu adresa curentÄƒ grupatÄƒ [%lx:%04lx] (%lx)bazÄƒ: %u, poziÈ›ie: %u
+bfd_mach_o_canonicalize_symtab: nu se pot Ã®ncÄƒrca simboluribfd_mach_o_read_section_32: valoare de aliniere peste mÄƒsurÄƒ de mare: %#lxbfd_mach_o_read_section_64: valoare de aliniere peste mÄƒsurÄƒ de mare: %#lxbfd_mach_o_read_symtab_symbol: nume Ã®n afara intervalului (%lu >= %u)bfd_mach_o_read_symtab_symbol: simbolul â€ž%sâ€� specificÄƒ secÈ›iunea nevalidÄƒ %d (max. %lu): se lasÄƒ nedefinitbfd_mach_o_read_symtab_symbol: simbolul â€ž%sâ€� specificÄƒ cÃ¢mpul de tip nevalid 0x%x: se lasÄƒ nedefinitbfd_mach_o_read_symtab_symbol: nu se pot citi %d octeÈ›i la %ubfd_mach_o_scan: arhitecturÄƒ necunoscutÄƒ 0x%lx/0x%lxbfd_pef_scan: arhitecturÄƒ necunoscutÄƒ 0x%lxÃ®nceputul blk: adresa: 0x%08x, nume: %.*s
+sfÃ¢rÈ™it blk: dimens.: 0x%08x
+ramura (PC rel16) la secÈ›iunea (%s) nu este acceptatÄƒramura la o adresÄƒ nealiniatÄƒ la instrucÈ›iunibss-plt forÈ›at de profilarebss-plt forÈ›at din cauza %pBcâ€œ sau â€žzcanu se poate construi ciotul(stub) de ramurÄƒ â€ž%sâ€�nu se gÄƒseÈ™te ciotul(stub) de ramurÄƒ â€ž%sâ€�nu se poate converti o ramurÄƒ Ã®n JALX pentru o adresÄƒ nealiniatÄƒ la cuvintenu se poate converti un salt Ã®n JALX pentru o adresÄƒ nealiniatÄƒ la cuvintenu se poate crea intrarea ciot(stub) %snu se pot emite realocÄƒri dinamice Ã®n secÈ›iunea de numai-citirenu poate emite remedieri Ã®n secÈ›iunea numai-pentru-citirenu se poate gÄƒsi EMH Ã®n prima Ã®nregistrare GST
+nu se pot gÄƒsi versiunile implicite ale extensiei ISA â€ž%sâ€�nu se poate citi DMT
+nu se poate citi antetul DMT
+nu se poate citi psect DMT
+nu se poate citi DST
+nu se poate citi antetul DST
+nu se poate citi simbolul DST
+nu se poate citi EIHA
+nu se poate citi EIHD
+nu se poate citi EIHI
+nu se poate citi EIHS
+nu se poate citi antetul EIHVN
+nu se poate citi versiunea EIHVN
+nu se poate citi EISD
+nu se poate citi GST
+nu se poate citi Ã®nregistrarea GST
+nu se poate citi antetul Ã®nregistrÄƒrii GST
+nu se poate rezolva R_LARCH_PCREL20_S2 Ã®n raport cu un simbol slab nedefinit cu operand Ã®n afara intervalului [-2048, 2048)clasa: %u, dtype: %u, lungime: %u, indicator: 0x%08x
+secÈ›iune %s coruptÄƒ Ã®n %pBÃ®nregistrare coruptÄƒ EEOM - dimensiunea este prea micÄƒtip de Ã®nregistrare EGSD coruptÄƒ %d: dimensiunea (%#x) este mai mare decÃ¢t spaÈ›iul rÄƒmas (%#x)tip de Ã®nregistrare EGSD corupt %d: dimensiunea (%#x) este prea micÄƒÃ®nregistrare EGSD coruptÄƒ: cÃ¢mpul psindx este prea mare (%#lx)Ã®nregistrare EGSD coruptÄƒ: dimensiunea acesteia (%#x) este prea micÄƒÃ®nregistrare EIHD coruptÄƒ - dimensiunea este prea micÄƒÃ®nregistrare ETIR coruptÄƒ Ã®ntÃ¢lnitÄƒÃ®nregistrare de realocare coruptÄƒvaloarea vms coruptÄƒGST corupt
+nu s-a putut gÄƒsi secÈ›iunea %snu s-a putut localiza simbolul special de editare de legÄƒturi __ctbpnu s-a putut localiza simbolul special de editare de legÄƒturi __epnu s-a putut localiza simbolul special de editare de legÄƒturi __gpnu s-a putut deschide imaginea partajatÄƒ â€ž%sâ€� din â€ž%sâ€�cpu=HC11]cpu=HC12]cpu=HCS12]cpu=XGATE]dâ€œ È™i â€žcâ€œ, sau â€žzcddâ€œ È™i â€žzfadâ€œ sau â€žzdinxrealocare periculoasÄƒeroare de realocare periculoasÄƒdelta pc +%-4ddelta_pc_l: +0x%08x
+delta_pc_w %u
+descdimct: %u, aflags: 0x%02x, digiÈ›i: %u, scarÄƒ: %u
+secÈ›iune de ieÈ™ire Ã®nlÄƒturatÄƒ: â€ž%pAâ€�eliminÃ¢nd intervalul de adrese zero FDE Ã®n %pB(%pA).
+interval de Ã®ntrerupere (nbr: %u)
+Ã®mpÄƒrÈ›ire la zerodst_define_location %u prea mareinformaÈ›iile despre indexul dinamic nu sunt disponibilerealocare dinamicÄƒ Ã®n secÈ›iunea numai-pentru-citirenumÄƒr greÈ™it de realocÄƒri dinamice pentru %pB, secÈ›iunea %pAfuncÈ›ia de intrare â€ž%sâ€� a dispÄƒrut din codul securizatÃ®nceput enumerare, lungime: %u, nume: %.*s
+enumerare lelemente, nume: %.*s
+sfÃ¢rÈ™it enumerare
+epilog: fanioane: %u, numÄƒr: %u
+eroare la adÄƒugarea atributuluieroare Ã®n %pB(%pA); nu va fi creat nici un tabel .eh_frame_hdreroare Ã®n %pB(%pA); nu va fi creat niciun .sframeeroare Ã®n %pB(%pA); tip de secÈ›iune SFrame neaÈ™teptateroare la citirea %s: %seroare la citirea tipului de procesor din datele private elferoare: %pB poate utiliza regiunea superioarÄƒ pentru date, dar %pB presupune cÄƒ datele se aflÄƒ exclusiv Ã®n memoria inferioarÄƒeroare: %pB are un segment LOAD cu permisiuni RWX(de citire-scriere-execuÈ›ie)eroare: %pB are un segment TLS cu permisiune de execuÈ›ieeroare: %pB este deja Ã®n format BE8 finaleroare: %pB este compilat pentru APCS-%d, Ã®n timp ce È›inta %pB foloseÈ™te APCS-%deroare: %pB necesitÄƒ aliniere pe 8 octeÈ›i, dar %pB este configurat pentru aliniere pe 4 octeÈ›ieroare: %pB trece valorile Ã®n virgulÄƒ mobilÄƒ Ã®n registrele de virgulÄƒ mobilÄƒ, Ã®n timp ce %pB le trece Ã®n registrele Ã®ntregieroare: %pB trece valorile Ã®n virgulÄƒ mobilÄƒ Ã®n registrele Ã®ntregi, Ã®n timp ce %pB le trece Ã®n registrele de virgulÄƒ mobilÄƒeroare: %pB necesitÄƒ o aliniere a matricei mai mare decÃ¢t cea pÄƒstratÄƒ de %pBeroare: %pB necesitÄƒ o aliniere a stivei mai mare decÃ¢t cea pÄƒstratÄƒ de %pBeroare: %pB foloseÈ™te stiva aliniatÄƒ la %u-octeÈ›i, dar ieÈ™irea foloseÈ™te stiva aliniatÄƒ la %u-octeÈ›ieroare: %pB foloseÈ™te %s instrucÈ›iuni, dar %pB foloseÈ™te %seroare: %pB foloseÈ™te instrucÈ›iuni %s, Ã®n timp ce %pB nu le foloseÈ™teeroare: %pB utilizeazÄƒ numere reale de precizie dublÄƒ pe 64 de biÈ›i, dar %pB utilizeazÄƒ numere reale de precizie dublÄƒ pe 32 de biÈ›ieroare: %pB utilizeazÄƒ FPU-3.0, dar %pB suportÄƒ doar FPU-2.0eroare: %pB utilizeazÄƒ argumente de registru VFP, iar %pB nueroare: %pB foloseÈ™te FP hardware, Ã®n timp ce %pB foloseÈ™te FP softwareeroare: %pB utilizeazÄƒ argumente de registru iWMMXt, È™i %pB nueroare: %pB foloseÈ™te software FP, Ã®n timp ce %pB foloseÈ™te hardware FPeroare: %pB foloseÈ™te modelul de cod %s, Ã®n timp ce %pB foloseÈ™te modelul de cod %seroare: %pB utilizeazÄƒ modelul de date %s, dar %pB utilizeazÄƒ doar instrucÈ›iuni MSP430eroare: %pB utilizeazÄƒ modelul de date %s, Ã®n timp ce %pB utilizeazÄƒ modelul de date %seroare: %pB utilizeazÄƒ modelul de cod mare, dar %pB utilizeazÄƒ instrucÈ›iuni MSP430eroare: %pB utilizeazÄƒ modelul de cod mic, dar %pB utilizeazÄƒ modelul de date %seroare: %pB: <dimensiunea utilizatÄƒ de AArch64 este coruptÄƒ: 0x%x>eroare: %pB: <dimensiunea utilizatÄƒ de RISC-V este coruptÄƒ: 0x%x>eroare: %pB: <dimensiunea proprietÄƒÈ›ii (0x%x) este coruptÄƒ: 0x%x>eroare: %pB: <dimensiunea proprietÄƒÈ›ii x86 corupte (0x%x): 0x%x>eroare: %pB: È™irul ISA de intrare (%s) nu se potriveÈ™te cu ieÈ™irea (%s)eroare: %pB: adresarea relativÄƒ SB intrÄƒ Ã®n conflict cu utilizarea lui R9eroare: %pB: XLEN de intrare (%u) nu se potriveÈ™te cu ieÈ™irea (%u)eroare: %pB: nu se poate amesteca rf16 cu setul de registru complet %pBeroare: %pB: atributele extensiei ISA Ã®n conflict %s cu %seroare: %pB: profiluri de arhitecturÄƒ aflate Ã®n conflict %c/%ceroare: %pB: atribute aflate Ã®n conflict %seroare: %pB: atribute aflate Ã®n conflict %s: %s cu %seroare: %pB: utilizare conflictualÄƒ a R9eroare: %pB: È™ir ISA corupt â€ž%sâ€�.  Prima litera ar trebui sÄƒ fie â€žiâ€� sau â€žeâ€�, dar a primit â€ž%sâ€�eroare: %pB: È™ir ISA nepotrivit pentru a fuziona â€ž%sâ€� È™i â€ž%sâ€�eroare: %pB: obiectul are conÈ›inut specific furnizorului care trebuie procesat de lanÈ›ul de instrumente â€ž%sâ€�eroare: %pB: eticheta obiectului â€ž%d, %sâ€� este incompatibilÄƒ cu eticheta â€ž%d, %sâ€�eroare: %pB: a fost detectat un fiÈ™ier obiect vechi incompatibileroare: %pB: dimensiunea secÈ›iunii %pA nu este multiplu al dimensiunii adreseieroare: %pB: nu s-a putut crea simbolul secÈ›iunii grupuluieroare: %pB: nu se pot fuziona atributele de bazÄƒ ale procesorului %s cu %seroare: %pB: nu se pot fuziona atributele extensiei ISA %seroare: %pB: nu se pot fuziona atributele de virtualizare cu %pBeroare: %pB: arhitecturÄƒ CPU necunoscutÄƒeroare: %pB: XLEN neacceptat (%u), este posibil sÄƒ utilizaÈ›i o emulare greÈ™itÄƒeroare: %s: declanÈ™eazÄƒ generarea unei stive executabile (deoarece are o secÈ›iune executabilÄƒ .note.GNU-stack)eroare: %s: declanÈ™eazÄƒ generarea unei stive executabile deoarece nu are o secÈ›iune .note.GNU-stackeroare: Ã®ncercare de a vincula %pB cu un %pB binar de arhitecturÄƒ diferitÄƒeroare: nu se poate gÄƒsi simbolul: %seroare: arhitecturi CPU Ã®n conflict %s vs %s Ã®n %pBeroare: se creeazÄƒ o stivÄƒ executabilÄƒ datoritÄƒ opÈ›iunii din linia de comandÄƒ â€ž-z execstackâ€�eroare: dimensiunea finalÄƒ a valorii uleb128 la poziÈ›ia 0x%lx Ã®n %pA din %pB depÄƒÈ™eÈ™te spaÈ›iul disponibileroare: nepotrivire a formatului fp16 Ã®ntre %pB È™i %pBeroare: tip de realocare neadecvat pentru biblioteca partajatÄƒ (aÈ›i uitat sÄƒ adÄƒugaÈ›i opÈ›iunea â€ž-fpicâ€�?)eroare: obiectul sursÄƒ %pB are versiunea EABI %d, dar È›inta %pB are versiunea EABI %deroare: arhitectura ARC4 nu mai este demult acceptatÄƒeroare: simbol __rtinit nedefiniteroare: valoare Tag_ABI_array_object_align_expected necunoscutÄƒ Ã®n %pBeroare: valoare Tag_ABI_array_object_alignment necunoscutÄƒ Ã®n %pBerori Ã®ntÃ¢lnite la procesarea fiÈ™ierului %pBexecutabilfâ€œ È™i â€žcâ€œ, sau â€žzcffâ€œ sau â€žzfinxnu s-a putut aloca spaÈ›iu pentru secÈ›iunea nouÄƒ APUinfonu s-a putut calcula noua secÈ›iune APUinfonu s-a putut gÄƒsi realocarea anterioarÄƒ HI16nu s-a putut instala noua secÈ›iune APUinfonu s-a reuÈ™it actualizarea decalajelor fiÈ™ierelor din directorul de depanareeroare fatalÄƒ la crearea .fixupformatul fiÈ™ierului este ambiguuformatul fiÈ™ierului nu este recunoscutfiÈ™ier Ã®n format eronatfiÈ™ier prea marefiÈ™ier trunchiatdimensiunea finalÄƒ a valorii uleb128 la poziÈ›ia 0x%lx Ã®n %pA din %pB depÄƒÈ™eÈ™te spaÈ›iul disponibilavertismentele suplimentare despre codificarea FDE care Ã®mpiedicÄƒ generarea .eh_frame_hdr au fost omiseeditorul de legÄƒturi generic nu poate manipula %sadresÄƒ relativÄƒ a indicatorului global Ã®n afara intervaluluirealocare relativÄƒ a indicatorului global atunci cÃ¢nd _gp nu este definithsimbol ascunssimbol ascuns tipuri de procesoare incompatibile Ã®n fiÈ™ierele mach-o: %ld vs %ldincr_linum(b): +%u
+incr_linum_l: +%u
+incr_linum_w: +%u
+indirect, definit la 0x%08x
+secÈ›iunile de intrare SFrame cu abi diferite Ã®mpiedicÄƒ generarea .sframesecÈ›iunile de intrare SFrame cu versiuni de format diferite Ã®mpiedicÄƒ generarea .sframeeroare internÄƒ: adÄƒugarea trebuie sÄƒ fie zero pentru %seroare internÄƒ: a fost detectatÄƒ o ramurÄƒ/salt la o adresÄƒ imparÄƒeroare internÄƒ: eroare periculoasÄƒeroare internÄƒ: realocare periculoasÄƒeroare internÄƒ: Ã®mbinarea arhitecturii â€ž%sâ€� cu arhitectura â€ž%sâ€� a produs o arhitecturÄƒ necunoscutÄƒeroare internÄƒ: eroare Ã®n afara intervaluluieroare internÄƒ: realocarea nu este acceptatÄƒeroare internÄƒ: tip de realocare suspect utilizat Ã®n biblioteca partajatÄƒeroare internÄƒ: eroare necunoscutÄƒeroare internÄƒ: eroare de realocare neacceptatÄƒinconsistenÈ›Äƒ internÄƒ Ã®n dimensiunea secÈ›iunii .got.locinconsistenÈ›Äƒ internÄƒ: rÄƒmÃ¢ne %lu ! = max %lu\; raportaÈ›i aceastÄƒ eroaresimbol internsimbol intern intern: intern: inaccesibilÄƒ INSN_CLASS_*%s nevalidtip de realocare TARGET2 nevalid â€ž%sâ€�È›intÄƒ bfd nevalidÄƒconÈ›inut nevalid Ã®n secÈ›iunea %pAindex dinamic nevalidrealocare nevalidÄƒ a intrÄƒrii atunci cÃ¢nd se produce o ieÈ™ire Ã®n format non-ELF, non-mmo; vÄƒ rugÄƒm sÄƒ utilizaÈ›i programul Â«objcopyÂ» pentru a converti din ELF sau mmo sau asamblaÈ›i folosind â€ž-no-expandâ€� (pentru gcc, â€ž-Wa,-no-expandâ€�)realocare nevalidÄƒ a intrÄƒrii atunci cÃ¢nd se produce o ieÈ™ire Ã®n format non-ELF, non-mmo; vÄƒ rugÄƒm sÄƒ utilizaÈ›i programul Â«objcopyÂ» pentru a converti din ELF sau mmo, sau compilaÈ›i folosind opÈ›iunea gcc â€ž-mno-base-addressesâ€�.operaÈ›ie nevalidÄƒsecÈ›iune de ieÈ™ire nevalidÄƒ pentru .eh_frame_entry: %pAadresÄƒ de realocare nevalidÄƒindex de secÈ›iune nevalid Ã®n ETIRutilizare nevalidÄƒ a lui %s cu contexterelaxer ip2k: antetul tabelului de comutare corupt.relaxer ip2k: tabel de comutare fÄƒrÄƒ potrivire completÄƒ a informaÈ›iilor de realocare.este aceastÄƒ versiune a editorului de legÄƒturi - %s - depÄƒÈ™itÄƒ?saltul (PC rel26) la secÈ›iunea (%s) nu este acceptatsalt la o adresÄƒ nealiniatÄƒ la instrucÈ›iunisalt la o adresÄƒ nealiniatÄƒ la cuvinteetichetÄƒ, nume: %.*s
+lung: %2u, gen: %2u numÄƒr linie  (lungime: %u)
+imagine vinculabilÄƒcioturi(stubs) de editor de legÄƒturi Ã®ntr-un grupcioturi(stubs) de editor de legÄƒturi Ã®n %u grupuricioturi(stubs) de editor de legÄƒturi Ã®n %u de grupuriliteralrealocarea literalÄƒ are loc pentru un simbol externindice de simbol local prea maredepÄƒÈ™ire de decalaj pentru ramura lungÄƒ a ciotului(stub) â€ž%sâ€�mâ€œ sau â€žzmmulmach-o: existÄƒ prea multe secÈ›iuni (%u) maximul este 255,
+arhivÄƒ defectuoasÄƒrealocare sectdiff half ARM mach-o prost formatÄƒ: lungime nevalidÄƒ: %drealocare sectdiff local ARM mach-o prost formatÄƒ: lungime nevalidÄƒ: %dpereche de realocare ARM mach-o incorect formatÄƒ: lungime nevalidÄƒ: %dpereche de realocare ARM mach-o incorect formatÄƒ: realocarea este prima realocarerealocare mach-o ARM incorect formatÄƒ: tip de realocare necunoscut: %drealocare sectdiff ARM mach-o prost formatÄƒ: lungime nevalidÄƒ: %drealocare sectdiff vanilla ARM mach-o prost formatÄƒ: lungime nevalidÄƒ: %d (pcrel: %d)realocare mach-o incorect formatÄƒ: indexul secÈ›iunii este mai mare decÃ¢t numÄƒrul de secÈ›iunimemorie epuizatÄƒmep: nici o realocare pentru codul %dÃ®nceput_modul
+sfÃ¢rÈ™it_modul
+nume: [val: %08lx lung %d]: nativau fost introduse funcÈ›ii de intrare noi, dar nu a fost specificatÄƒ nicio bibliotecÄƒ de import de ieÈ™ire:nunicio adresÄƒ nu este atribuitÄƒ secÈ›iunii de ieÈ™ire a faÈ›etelor(veneers) %snu sunt disponibile informaÈ›ii despre indexul dinamicnicio eroarenu mai existÄƒ fiÈ™iere arhivateniciun simbolmatrice non-contiguÄƒ de %s
+realocÄƒri non-dinamice se referÄƒ la simbolul dinamic %ssimbol non-dinamic %s Ã®n tabelul de simboluri dinamicedimensiunea fÄƒrÄƒ suprapunere de 0x%v plus dimensiunea maximÄƒ a suprapunerii de 0x%v depÄƒÈ™eÈ™te spaÈ›iul de stocare local
+adÄƒugare non-zero Ã®n realocare @fptrniciunulsecÈ›iune nereprezentabilÄƒ la ieÈ™irenu existÄƒ destul spaÈ›iu GOT pentru intrÄƒrile GOT localememorie insuficientÄƒ pentru a sorta realocÄƒrilenu este definitmodulul obiect nu este lipsit de erori!decalajul faÈ›etei(veneer) pentru funcÈ›ia de intrare â€ž%sâ€� nu este un multiplu al mÄƒrimii saleo posibilÄƒ cauzÄƒ a acestei erori este cÄƒ simbolul este referit Ã®n codul indicat ca È™i cum ar avea o aliniere mai mare decÃ¢t a fost declaratÄƒ acolo unde a fost definitÃ®n afara intervaluluidebordare dupÄƒ relaxaredepÄƒÈ™ire a realocÄƒrii ciotului(stub) de suprapunerespaÈ›iu de lucru pentru modul: nu mai sunt descriptori de fiÈ™iere. ÃŽncercaÈ›i sÄƒ utilizaÈ›i mai puÈ›ine obiecte/arhive
+indicator
+fanioane private = %lxfanioane private = %lx:fanioane private = %lx: fanioane private = 0x%lxfanioane private = 0x%lx:prolog: adresa bkpt 0x%08x
+simbol protejatsimbol protejat qâ€œ È™i â€žzfaqâ€œ sau â€žzqinxÃ®nceput Ã®nreg.: nume: %.*s
+sfÃ¢rÈ™it Ã®nreg.
+recompilaÈ›i cu â€žgcc -mno-relaxâ€� sau â€žas -mno-relaxâ€� sau â€žld --no-relaxâ€�Ã®nregistrarea este prea micÄƒ pentru lungimea numelui simboluluireferinÈ›Äƒ la o adresÄƒ grupatÄƒ [%lx:%04lx] Ã®n spaÈ›iul de adrese normal la %04lxreferirea la simbolul Ã®ndepÄƒrtat â€ž%sâ€� folosind o realocare greÈ™itÄƒ poate avea ca rezultat o execuÈ›ie incorectÄƒregregistrul %%g%d utilizat de formÄƒ incompatibilÄƒ: %s Ã®n %pB, anterior %s Ã®n %pBsecÈ›iunea de registru are conÈ›inut
+realocarea (%d) este *NECUNOSCUTÄ‚*realocarea faÈ›Äƒ de â€ž%sâ€� are un tip GOT defect realocare pentru psect non-RELrealocare Ã®n afara intervaluluisimbolul referinÈ›elor de realocare nu este definit Ã®n modulrealocarea necesitÄƒ adÄƒugarea de zerorealocarea trebuie sÄƒ fie un numÄƒr parrealocÄƒrile Ã®ntre diferite segmente nu sunt acceptatese eliminÄƒ secÈ›iunea â€ž%pAâ€� nefolositÄƒ din fiÈ™ierul â€ž%pBâ€�se redeschide %pB: %scomandÄƒ STA %d rezervatÄƒÃ®nceputul rutinei
+sfÃ¢rÈ™it rutinÄƒ: dimens. 0x%08x
+rv%d nu acceptÄƒ extensia â€žqâ€�rv%d nu acceptÄƒ extensia â€žsmmpmâ€�rv%d nu acceptÄƒ extensia â€žsmnpmâ€�rv%d nu acceptÄƒ extensia â€žssnpmâ€�rv%d nu acceptÄƒ extensia â€žsspmâ€�rv%d nu acceptÄƒ extensia â€žsupmâ€�rv%d nu acceptÄƒ extensia â€žzcfâ€�rv%de nu acceptÄƒ extensia â€žhâ€�secÈ›iunea nu are conÈ›inuttip sep, nume: %.*s
+set_abs_pc: 0x%08x
+set_line_num(w) %u
+set_line_num_b %u
+set_line_num_l %u
+obiect partajateroare de dimensiune Ã®n secÈ›iunea %pAsecÈ›iunea de date de mici dimensiuni este prea mare; reduceÈ›i limita dimensiunii datelor de mici dimensiuni (consultaÈ›i opÈ›iunea â€ž-Gâ€�)smctrâ€œ sau â€žssctrsom_sizeof_headers neimplementatÄƒscuze, nu se poate gestiona acest fiÈ™ierscuze, nu existÄƒ suport pentru fiÈ™ierele obiect duplicate Ã®n scriptul de suprapunere automatÄƒ
+scuze: modtab, toc È™i extrefsyms nu sunt Ã®ncÄƒ implementate pentru comenzile dysymtab.sursÄƒ (lungime: %u)
+realocare ALPHA_R_BSR falsÄƒanaliza stivei va ignora apelul de la %s la %s
+depÄƒÈ™ire a stivei Ã®n partea de sus (%d) Ã®n _bfd_vms_pushdepÄƒÈ™ire a stivei Ã®n partea de jos _bfd_vms_popdate standard: %s
+adresa de pornire a lui â€ž%sâ€� este diferitÄƒ de legÄƒtura anterioarÄƒprocedurÄƒ staticÄƒ (fÄƒrÄƒ nume)cioturile(stubs) sunt Ã®n neconcordanÈ›Äƒ cu mÄƒrimea calculatÄƒsimbolsimbol simbolul â€ž%sâ€� are st_other nevalid pentru versiunea 1 a ABIsimbolul â€ž%sâ€� are tipuri diferite: REGISTER Ã®n %pB, anterior %s Ã®n %pBasocierea simbolurilor STB_GNU_UNIQUE este acceptatÄƒ numai de È›intele GNU È™i FreeBSDsimbolul necesitÄƒ o secÈ›iune de depanare care nu existÄƒtipul de simbol STT_GNU_IFUNC este acceptat doar de È›intele GNU È™i FreeBSDeroare apel de sisteminformaÈ›ii despre matricea versiunii sistemului:
+term(b): 0x%02xterm_w: 0x%04xÈ›inta bfin nu acceptÄƒ Ã®n prezent generarea de realocÄƒri de copiereexistÄƒ un conflict la fuzionarea fanioanelor de antet ELF din %pBprea multe intrÄƒri GOT pentru â€ž-fpicâ€�, recompilaÈ›i cu â€ž-fPICâ€�Ã®ncercaÈ›i sÄƒ activaÈ›i relaxarea pentru a evita trunchierea realocÄƒriispec de tip pentru element:
+spec de tip pentru indice %u:
+indicator tastat
+specificaÈ›ie tip (lungime: %u)
+nu se pot aloca date pentru comanda de Ã®ncÄƒrcare %#xnu se poate gÄƒsi %s liantul â€ž%sâ€� pentru â€ž%sâ€�nu se poate gÄƒsi secÈ›iunea de ieÈ™ire echivalentÄƒ pentru simbolul â€ž%sâ€� din secÈ›iunea â€ž%sâ€�nu se poate dispune comanda de Ã®ncÄƒrcare necunoscutÄƒ %#xnu se poate citi Ã®nregistrarea EIHS la poziÈ›ia %#xnu se poate citi Ã®n secÈ›iunea %s din %pBnu se poate scrie comanda de Ã®ncÄƒrcare necunoscutÄƒ %#xÈ™ir de biÈ›i nealiniaÈ›i de %s
+nedefinit referinÈ›Äƒ %s nedefinitÄƒ Ã®n simbolul complex: %snumÄƒr de maÈ™inÄƒ neaÈ™teptattipul de secÈ›iune de fiÈ™ier core OSF/1 %d negestionattip de intrare egsd negestionat %u
+subtip emh negestionat %u
+realocare negestionatÄƒ %snecunoscutsubtip EGSD necunoscut %dcomandÄƒ ETIR necunoscutÄƒ %datribut necunoscut pentru simbolul â€ž%sâ€�: 0x%02xtip de bazÄƒ necunoscut %deroare necunoscutÄƒvaloare necunoscutÄƒ a ordinii octeÈ›ilor antetului %#xcomandÄƒ de linie necunoscutÄƒ %doperator necunoscut â€ž%câ€� Ã®n simbolul complexrealocare necunoscutÄƒ %srealocare necunoscutÄƒ %s + %scomanda sursÄƒ necunoscutÄƒ %dsimbol necunoscut Ã®n comanda %sarhitecturÄƒ v850 necunoscutÄƒnecunoscut: %xINPUT_SECTION_FLAG nerecunoscut %s
+identificator de È›intÄƒ TI COFF nerecunoscut â€ž0x%xâ€�realocare .stab neacceptatÄƒcomanda STA %s nu este acceptatÄƒrealocare neacceptatÄƒrealocare neacceptatÄƒrealocarea nu este acceptatÄƒ Ã®ntre spaÈ›iile de adrese date/insntip de realocare neacceptatfolosind mai multe valori gpvâ€œ sau â€žzve64dâ€œ sau â€žzve64fâ€œ sau â€žzve32fvâ€œ sau â€žzve64xâ€œ sau â€žzve32xarhitecturÄƒ v850 E3arhitecturÄƒ v850arhitecturÄƒ v850earhitecturÄƒ v850e1arhitecturÄƒ v850e2arhitecturÄƒ v850e2v3arhitecturÄƒ v850e3v5variabila â€ž%sâ€� poate fi doar Ã®ntr-una dintre regiunile de date mici, zero È™i minusculevariabila â€ž%sâ€� nu poate fi simultan È™i Ã®n regiunea de date mici È™i Ã®n cea de date minusculevariabila â€ž%sâ€� nu poate fi simultan È™i Ã®n regiunea de date mici È™i Ã®n cea de date zerovariabila â€ž%sâ€� nu poate fi simultan È™i Ã®n regiunea de date zero È™i Ã®n cea de date minusculevariabila â€ž%sâ€� nu poate ocupa regiuni multiple de date micivflags: 0x%02x, valoare: 0x%08x vma:			AdresÄƒ ÃŽnceput	 AdresÄƒ SfÃ¢rÈ™it	  DateDesf[;urate
+avertisment, dimensiunea secÈ›iunii .pdata (%ld) nu este un multiplu de %d
+avertisment: %pB È™i %pB diferÄƒ Ã®n dimensiunea wchar_tavertisment: %pB È™i %pB diferÄƒ dacÄƒ codul este compilat pentru DSBTavertisment: %pB nu acceptÄƒ interfuncÈ›ionarea, Ã®n timp ce %pB o acceptÄƒavertisment: %pB are un segment LOAD cu permisiuni RWX(de citire-scriere-execuÈ›ie)avertisment: %pB are un segment TLS cu permisiune de execuÈ›ieavertisment: %pB are un index de tabel de È™iruri coruptavertisment: %pB are un antet de program cu aliniere nevalidÄƒavertisment: %pB are o secÈ›iune care se extinde dincolo de sfÃ¢rÈ™itul fiÈ™ieruluiavertisment: %pB are un segment care se extinde dincolo de sfÃ¢rÈ™itul fiÈ™ieruluiavertisment: %pB acceptÄƒ interfuncÈ›ionarea, Ã®n timp ce %pB nu o faceavertisment: %pB foloseÈ™te %s (definitÄƒ de %pB), %pB foloseÈ™te %savertisment: %pB foloseÈ™te %s (definit de %pB), %pB foloseÈ™te ABI MSA necunoscut %davertisment: %pB foloseÈ™te %s (definitÄƒ de %pB), %pB foloseÈ™te ABI Ã®n virgulÄƒ mobilÄƒ necunoscutÄƒ %davertisment: %pB foloseÈ™te %s enumerÄƒri, dar rezultatul este sÄƒ foloseascÄƒ %s enumerÄƒri; utilizarea valorilor enumerate Ã®ntre obiecte poate eÈ™uaavertisment: %pB foloseÈ™te %u-byte wchar_t, dar rezultatul este sÄƒ foloseascÄƒ %u-byte wchar_t; folosirea valorilor wchar_t Ã®ntre obiecte poate eÈ™uaavertisment: %pB foloseÈ™te ABI MSA necunoscut %d (definit de %pB), %pB foloseÈ™te %savertisment: %pB foloseÈ™te ABI MSA necunoscut %d (definit de %pB) È™i %pB foloseÈ™te ABI MSA necunoscut %davertisment: %pB foloseÈ™te ABI Ã®n virgulÄƒ mobilÄƒ necunoscutÄƒ %d (definitÄƒ de %pB), %pB foloseÈ™te %savertisment: %pB foloseÈ™te ABI Ã®n virgulÄƒ mobilÄƒ necunoscutÄƒ %d (definitÄƒ de %pB), %pB utilizeazÄƒ ABI Ã®n virgulÄƒ mobilÄƒ necunoscutÄƒ %davertizare: %pB(%s): ForÈ›area bramch la simbol absolut Ã®n modul Thumb (CPU numai-Thumb) Ã®n %pBavertisment: %pB: configuraÈ›ie conflictualÄƒ a platformeiavertisment: %pB: configuraÈ›ia platformei %s Ã®n conflict cu %savertisment: %pB: dimensiunea GNU_PROPERTY_TYPE (%ld) este coruptÄƒ: %#lxavertisment: %pB: GNU_PROPERTY_TYPE corupt (%ld), tip (0x%x), dimensiunea datelor: 0x%xavertisment: %pB: dimensiunea memoriei sigilate corupte: 0x%xavertisment: %pB: corupt,  â€žnu este protejat la copiereâ€�, dimensiune: 0x%xavertisment: %pB: dimensiunea stivei corupte: 0x%xavertisment: %pB: simbolul local â€ž%sâ€� nu are secÈ›iuneavertisment: %pB: atribut al obiectului ARC necunoscut %davertisment: %pB: atribut necunoscut al obiectului EABI %davertizare: %pB: atribut necunoscut al obiectului MSPABI %davertizare: %pB: atribut necunoscut al obiectului RISCV ABI %davertisment: %pB: tip GNU_PROPERTY_TYPE (%ld) neacceptat: 0x%xavertisment: %s depÄƒÈ™eÈ™te dimensiunea secÈ›iunii
+avertisment: %s se suprapune pe %s
+avertisment: secÈ›iunea %s are dimensiunea zeroavertisment: %s ar trebui sÄƒ fie folosit Ã®n loc de %savertisment: %s: lipsa secÈ›iunii .note.GNU-stack implicÄƒ stivÄƒ executabilÄƒavertisment: %s: necesitÄƒ stivÄƒ executabilÄƒ (deoarece secÈ›iunea .note.GNU-stack este executabilÄƒ)avertizare: (%s): ForÈ›area ramificÄƒrii cÄƒtre simbolul absolut Ã®n modul Thumb (CPU numai-Thumb) Ã®n %pBavertisment: opÈ›iunea â€ž--plt-localentryâ€� este deosebit de periculoasÄƒ fÄƒrÄƒ suportul ld.so pentru a detecta Ã®ncÄƒlcÄƒrile ABIavertisment: opÈ›iunea â€ž--plt-localentryâ€� este incompatibilÄƒ cu codul pc-relative power10avertizare: NOTÄ‚: discrepanÈ›ele de aliniere pot cauza probleme reale.  Se recomandÄƒ efectuarea de investigaÈ›ii.avertizare: NOTÄ‚: discrepanÈ›ele de dimensiuni pot cauza probleme reale.  Se recomandÄƒ efectuarea de investigaÈ›ii.avertizare: relocare RL78_SYM cu un simbol necunoscutavertizare: realocare RX_SYM cu un simbol necunoscutavertisment: alinierea %u a simbolului comun â€ž%sâ€� Ã®n %pB este mai mare decÃ¢t alinierea (%u) a secÈ›iunii sale %pAavertisment: alinierea %u a simbolului normal â€ž%sâ€� Ã®n %pB este mai micÄƒ decÃ¢t %u folositÄƒ de definiÈ›ia comunÄƒ Ã®n %pBavertisment: alinierea %u a simbolului â€ž%sâ€� Ã®n %pB este mai micÄƒ decÃ¢t %u Ã®n %pBsavertisment: Ã®ncercare de exportare a simbolului nedefinit `%s'avertisment: apel la simbolul non-funcÈ›ional %s definit Ã®n %pBavertisment: se È™terge indicatorul de interfuncÈ›ionare din %pB, deoarece codul care nu interfuncÈ›ioneazÄƒ Ã®n %pB a fost vinculat cu acestaavertisment: se È™terge indicatorul de interfuncÈ›ionare din %pB din cauza solicitÄƒrii externeavertisment: date de desfÄƒÈ™urare corupte
+avertisment: se eliminÄƒ secÈ›iunea dinamicÄƒ %savertisment: activarea unei stive executabile datoritÄƒ opÈ›iunii din linia de comandÄƒ â€ž-z execstackâ€�avertisment: fanionul arhitecturii â€ž%2$sâ€� al fiÈ™ierului â€ž%1$pBâ€� intrÄƒ Ã®n conflict cu È›inta â€ž%3$sâ€�, definiÈ›i fanionul arhitecturii È›intÄƒ la â€ž%4$sâ€�avertisment: fanionul arhitecturii %2$s al fiÈ™ierului %1$pB intrÄƒ Ã®n conflict cu È›inta ck%3$s, folosind %4$savertisment: a gÄƒsit un total de %d obiecte legate dinamic incompatibile cu cerinÈ›ele GCS.
+avertisment: a fost gÄƒsit un total de %d intrÄƒri incompatibile cu cerinÈ›ele BTI.
+avertisment: a gÄƒsit un total de %d intrÄƒri incompatibile cu cerinÈ›ele GCS.
+avertisment: opÈ›iunea gc-sections a fost ignoratÄƒavertisment: se genereazÄƒ o bibliotecÄƒ partajatÄƒ care conÈ›ine cod non-PICavertisment: se genereazÄƒ o bibliotecÄƒ partajatÄƒ care conÈ›ine cod non-PIDavertisment: nu se stabileÈ™te indicatorul de interfuncÈ›ionare pentru %pB, deoarece a fost deja specificat ca neinterfuncÈ›ionareavertisment: versiunea cu specificaÈ›ii privilegiate 1.9.1 nu poate fi conectatÄƒ cu alte versiuni cu specificaÈ›iiavertisment: realocarea se referÄƒ la un segment diferitavertisment: secÈ›iunea â€ž%sâ€� este transformatÄƒ Ã®ntr-o notÄƒavertisment: tipul secÈ›iunii â€ž%pAâ€� a fost schimbat Ã®n PROGBITSavertisment: simbolul â€ž%sâ€� este atÃ¢t secÈ›iune, cÃ¢t È™i non-secÈ›iuneavertisment: tipul È™i dimensiunea simbolului dinamic â€ž%sâ€� nu sunt definiteavertisment: tipul de simbol â€ž%sâ€� s-a schimbat de la %d la %d Ã®n %pBavertisment: nu se poate stabilii dimensiunea secÈ›iunii %s Ã®n %pBavertisment: imposibil de actualizat conÈ›inutul secÈ›iunii %s din %pBavertisment: nume de arhitecturÄƒ nerecunoscut â€ž%#xâ€�avertisment: eflag de arhitecturÄƒ nerecunoscut â€ž%#lxâ€�avertisment: fanioane de arhitecturÄƒ nedefinite sau vechi; se utilizeazÄƒ maÈ™ina implicitÄƒavertisment: scrierea arhivei a fost lentÄƒ: se rescrie marcajul de timpavertisment: scrierea secÈ›iunii â€ž%pAâ€� la un decalaj uriaÈ™ (adicÄƒ negativ) Ã®n fiÈ™ieravertisment: secÈ›iunea xdata coruptÄƒ
+extensia x ISA â€ž%s'â€� trebuie definitÄƒ cu versiuniledanu aveÈ›i voie sÄƒ definiÈ›i %s Ã®ntr-un scriptzbbâ€œ sau â€žzbkbzbcâ€œ sau â€žzbkczcbâ€œ È™i â€žzbazcbâ€œ È™i â€žzbbzcbâ€œ È™i â€žzmmulâ€œ, sau â€žzcbâ€œ È™i â€žmzcmpâ€� este incompatibil cu extensia â€ždâ€�, â€žcâ€�, sau â€žzcdâ€�zfhâ€œ È™i â€žzfazfhâ€œ È™i â€žzfaâ€œ, sau â€žzvfhâ€œ È™i â€žzfazfhâ€œ sau â€žzhinxzfhâ€œ sau â€žzvfhzfhminâ€œ È™i â€ždâ€œ, sau â€žzhinxminâ€œ È™i â€žzdinxzfhminâ€œ È™i â€žqâ€œ, sau â€žzhinxminâ€œ È™i â€žzqinxzfhminâ€œ sau â€žzhinxminzicfissâ€œ È™i â€žzcmopzihintntlâ€œ È™i â€žcâ€œ, sau â€žzihintntlâ€œ È™i â€žzcazkndâ€œ sau â€žzknezvbbzvbczvkbzvkgzvknedzvknhaâ€œ sau â€žzvknhbzvksedzvkshextensiile zvl*b trebuie sÄƒ activeze fie extensia â€žvâ€� fie extensia â€žzveâ€�PRIx64PRIu64PRId64PRIx32%pB: %# overflows header %s field%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: TLS relocation at 0x% over non-TLS symbol %s (0x%x)
+%pB: TLS local relocation at 0x% over imported symbol %s
+%pB: relocation (%d) at 0x% has wrong r_rsize (0x%x)
+%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: relocation (%d) at (0x%) has wrong r_rsize (0x%x)
+%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: stripping non-representable symbol '%s' (value 0x%)%pB: bad reloc address %# in section `%pA'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(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%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+%#): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)%pB(%pA+%#): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)%pB(%pA+%#): cannot handle %s for %s%pB: bad reloc offset (%# > %#) for section `%pA'ip2k 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(%pA+%#): relocation %s against misaligned symbol `%s' (%#) in %pB%pB: bad reloc offset (%# > %#) for section `%pA'%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: %pA+%: relocation addend % too large%pB: version count (%) does not match symbol count (%ld)%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: bad symbol definition: `Main' set to % rather than the start address %
+%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB(%pA+%#): %s relocation offset out of order%pB(%pA+%#): %s relocation offset out of range%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 csect%pB: Unable to find a stub csect in rangeof relocation at %# targeting'%s'TOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB: error: erratum 843419 immediate 0x% out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead%pB(%pA+%#): unresolvable %s relocation in section `%s'%# invaild imm%pB: R_LARCH_ALIGN with offset % not aligned to instruction boundary%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x% without any addend, but may be 0x% after adding the %%pcrel_lo addend%pB: Data Directory (%lx bytes at %) extends across section boundary at %%pB: %# depÄƒÈ™eÈ™te cÃ¢mpul %s din antet%pB: È™ir de decalaj nevalid % >= %%pB: realocare TOC la %# pentru simbolul â€ž%sâ€� fÄƒrÄƒ nicio intrare TOC%pB: realocare TLS la 0x% peste simbolul non-TLS %s (0x%x)
+%pB: realocare localÄƒ TLS la 0x% peste simbolul importat %s
+%pB: realocarea (%d) la 0x% are r_rsize greÈ™itÄƒ (0x%x)
+%pB: %#: avertisment: decalaj R_SH_USES incorect%pB: %#: avertisment: R_SH_USES indicÄƒ un insn nerecunoscut %#x%pB: %#: avertisment: decalaj de Ã®ncÄƒrcare R_SH_USES incorect%pB: %#: avertisment: nu s-a putut gÄƒsi realocarea aÈ™teptatÄƒ%pB: %#: avertisment: simbol Ã®n secÈ›iune neaÈ™teptatÄƒ%pB: %#: avertisment: nu s-a putut gÄƒsi realocarea COUNT(NUMÄ‚RUL)  aÈ™teptatÄƒ%pB: %#: avertisment: numÄƒrÄƒtoare(count) nevalidÄƒ%pB: %#: fatal: realocare depÄƒÈ™itÄƒ Ã®n timpul relaxÄƒrii%pB: realocarea (%d) la 0x% are r_rsize greÈ™itÄƒ (0x%x)
+%pB: tip de realocare ilegal %d la adresa %#%pB: dimensiune greÈ™itÄƒ a tabelului de È™iruri %%pB: eliminarea simbolului nereprezentabil â€ž%sâ€� (valoare 0x%)%pB: adresÄƒ de realocare incorectÄƒ %# Ã®n secÈ›iunea â€ž%pAâ€�eroare: %pB(%pA) este prea mare (%# octeÈ›i)eroare DWARF: decalaj (%) mai mare sau egal cu dimensiunea %s (%)eroare DWARF: cantitatea de date (%) mai mare decÃ¢t dimensiunea memoriei tamponeroare DWARF: tip de conÈ›inut Ã®n format necunoscut %eroare DWARF: secÈ›iunea de informaÈ›ii despre linie este prea micÄƒ (%)eroare DWARF: datele de informaÈ›ii despre linie sunt mai mari (%#) decÃ¢t spaÈ›iul rÄƒmas Ã®n secÈ›iune (%#lx)eroare DWARF: nu se poate citi referinÈ›a alternativÄƒ %eroare DWARF: nu se poate localiza referinÈ›a la instanÈ›a abstractÄƒ DIE %%pB(%pA+%#): realocare %s nerezolvatÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�%pB: decalaj de È™ir nevalid %u >= % pentru secÈ›iunea â€ž%sâ€�%pB: secÈ›iunea %pA cu lma %# ajustatÄƒ la %#%pB: avertisment: s-a detectat segment Ã®ncÄƒrcabil gol la vaddr=%#, este aceasta intenÈ›ionat ?%pB: avertisment: alinierea segmentului de %# este prea mare%pB(%pA+%#): realocarea CMEM la â€ž%sâ€� este nevalidÄƒ, 16 MSB trebuie sÄƒ fie %#x (valoarea este %#)%pB(%pA+%#): realocarea CMEM la â€ž%s+%#â€� este nevalidÄƒ, 16 MSB trebuie sÄƒ fie %#x (valoarea este %#)EROARE: ciot(stub) CMSE (secÈ›iunea %s) prea departe (%#) faÈ›Äƒ de destinaÈ›ie (%#)%pB(%pA+%#): instrucÈ›iune %s neaÈ™teptatÄƒ â€ž%#lxâ€� Ã®n trambulina TLS%pB(%pA+%#): instrucÈ›iune %s neaÈ™teptatÄƒ â€ž%#lxâ€� la care face referire TLS_GOTDESC%pB(%pA+%#): realocarea %s nu este permisÄƒ Ã®n obiectul partajat%pB(%pA+%#): numai instrucÈ›iunile ADD sau SUB sunt permise pentru realocÄƒri ale grupului ALU%pB(%pA+%#): depÄƒÈ™ire Ã®n timp ce se Ã®mparte %# pentru realocarea grupului %s%pB(%pA+%#): %s realocare faÈ›Äƒ de secÈ›iunea SEC_MERGE%pB(%pA+%#): %s utilizat cu simbolul TLS %s%pB(%pA+%#): %s utilizat cu simbolul non-TLS %s%pB(%#): eroare: nu se poate crea faÈ›eta(veneer) STM32L4XX; se iese din interval cu % octeÈ›i; nu se poate codifica instrucÈ›iunile de ramurÄƒ%pB(%pA+%#): realocare nerezolvabilÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�%pB(%pA+%#): realocare faÈ›Äƒ de â€ž%sâ€�: eroare %d%pB: realocarea la â€ž%pA+%#â€� face referire la simbolul â€ž%sâ€� cu adaos diferit de zero%pB, secÈ›iunea %pA: realocare %s cu adÄƒugarea diferitÄƒ de zero % faÈ›Äƒ de simbolul local%pB, secÈ›iunea %pA: realocare %s cu adÄƒugarea diferitÄƒ de zero % faÈ›Äƒ de simbolul â€ž%sâ€�%pB(%pA+%#): nu se poate ajunge la %s, recompilaÈ›i cu â€ž-ffunction-sectionsâ€�%pB(%pA+%#): remedierea %s pentru insn %#x nu este acceptatÄƒ Ã®ntr-o legÄƒturÄƒ nepartajatÄƒ%pB(%pA+%#): deplasarea %#x pentru insn %#x nu este un multiplu de 8 (gp %#x)%pB(%pA+%#): deplasarea %#x pentru insn %#x nu este un multiplu de 4 (gp %#x)%pB(%pA+%#): nu se poate gestiona %s pentru %s%pB: decalaj de realocare greÈ™it (%# > %#) pentru secÈ›iunea â€ž%pAâ€�editor de legÄƒturii ip2k: lipseÈ™te instrucÈ›iunea de paginÄƒ la %# (dest = %#)editor de legÄƒturii ip2k: instrucÈ›iune redundantÄƒ de paginÄƒ la %# (dest = %#)%pB: avertisment: %s indicÄƒ o realocare nerecunoscutÄƒ la %#%pB(%pA+%#): eroare: %s cu instrucÈ›iunea neaÈ™teptatÄƒ %#x%pB(%pA): realocare nesigurÄƒ a PID-ului %s la %# ( pentru %s Ã®n %s)%pB(%pA+%#): instrucÈ›iune nevalidÄƒ pentru realocarea TLS %s%pB: realocarea CALL15 la %# nu faÈ›Äƒ de simbolul global%pB: %#: avertisment: R_SH_USES indicÄƒ cÄƒtre insn nerecunoscut 0x%x%pB: %#: fatal: È›intÄƒ de ramurÄƒ nealiniatÄƒ pentru realocarea suportului-relax%pB: %#: fatal: realocare %s nealiniatÄƒ %#%pB: %#: fatal: realocarea R_SH_PSHA % nu se aflÄƒ Ã®n intervalul -32..32%pB: %#: fatal: realocarea R_SH_PSHL % nu se aflÄƒ Ã®n intervalul -32..32%pB(%pA+%#): nu poate emite remediere la â€ž%sâ€� Ã®n secÈ›iunea numai-pentru-citire%pB(%pA+%#): realocare %s faÈ›Äƒ de simbolul extern â€ž%sâ€�%pB(%pA): decalajul Ã®n realocarea pentru conversia GD->LE este prea mic: %#%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0xd4??)%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0xc7??)%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0xd1??)%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x310c)%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x410b)%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x34cc)%pB(%pA): decalajul Ã®n realocarea pentru conversia IE->LE este prea mic: %#%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0xd0??: mov.l)%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x0?12: stc)%pB(%pA+%#): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x0?ce: mov.l)%pB(%pA): decalajul Ã®n realocarea pentru conversia GD->IE este prea mic: %#%pB(%pA): decalajul Ã®n realocarea pentru conversia LD->LE este prea mic: %#%pB(%s+%#): realocare %s nerezolvabilÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�%pB: %#: avertisment: %s indicÄƒ cÄƒtre insns nerecunoscut%pB: %#: avertisment: %s indicÄƒ cÄƒtre insn nerecunoscut %#x%pB: %#: avertisment: %s indicÄƒ cÄƒtre realocare nerecunoscutÄƒ%pB: %#: avertisment: %s indicÄƒ cÄƒtre realocare nerecunoscutÄƒ %#%pB: avertisment: adÄƒugarea GOT de % la â€ž%sâ€� nu se potriveÈ™te cu adÄƒugarea GOT anterioarÄƒ de %%pB: avertisment: adÄƒugarea PLT de % la â€ž%sâ€� din secÈ›iunea %pA a fost ignoratÄƒ%pB: avertisment: realocarea %s Ã®n %# din secÈ›iunea %pA%pB(%pA+%#): decalaj de realocare Ã®n afara intervalului (dimensiune=%#)%pB(%pA+%#): nu a putut decodifica instrucÈ›iunea; posibilÄƒ neconcordanÈ›Äƒ de configurare%pB(%pA+%#): nu s-a putut decodifica instrucÈ›iunea pentru realocarea XTENSA_ASM_SIMPLIFY; posibilÄƒ neconcordanÈ›Äƒ de configurare%pB(%pA+%#): remediere neaÈ™teptatÄƒ pentru realocarea %s%pB: %pA+%#: avertisment: realocare %s faÈ›Äƒ de insn neaÈ™teptatÄƒintrarea ciot(stub) pentru %s nu poate Ã®ncÄƒrca .plt, decalaj dp = %%pB(%pA+%#): nu se poate atinge %s%pB: nu se poate relaxa br la %# Ã®n secÈ›iunea â€ž%pAâ€�; vÄƒ rugÄƒm sÄƒ folosiÈ›i brl sau ramura indirectÄƒ%pB: segment de date scurt depÄƒÈ™it (%# >= 0x400000)%pB: lipseÈ™te secÈ›iunea TLS pentru realocarea %s faÈ›Äƒ de â€ž%sâ€� la %# Ã®n secÈ›iunea â€ž%pAâ€�.%pB: Nu se poate relaxa br (%s) la â€ž%sâ€� la %# Ã®n secÈ›iunea â€ž%pAâ€� cu dimensiunea %# (> 0x1000000).avertisment: dimensiunea simbolului â€ž%sâ€� s-a schimbat de la % Ã®n %pB la % Ã®n %pB%pB(%pA): realocarea % are index de simbol nevalid %ld%pB: Eroare internÄƒ de inconsistenÈ›Äƒ pentru valoarea pentru registrul global
+alocat editorului de legÄƒturi: vinculat: %# != relaxat: %#%pB: directiva LOCAL: registrul $% nu este un registru local; primul registru global este $%%pB(%pA+%#): realocarea %s faÈ›Äƒ de simbolul nealiniat â€ž%sâ€� (%#) Ã®n %pB%pB: decalaj de realocare greÈ™it (%# > %#) pentru secÈ›iunea â€ž%pAâ€�%pB: realocarea %s faÈ›Äƒ de simbolul STT_GNU_IFUNC â€ž%sâ€� are o adÄƒugare non-zero: %%pB: adÄƒugarea %s%#x Ã®n realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€� la %# din secÈ›iunea â€ž%pAâ€� este Ã®n afara intervalului%pB: %pA+%: adaos de realocare % prea mare%pB: numÄƒrul de versiuni (%) nu se potriveÈ™te cu numÄƒrul de simboluri (%ld)%pB: index de simbol al realocÄƒrii incorect (%# >= %#lx) pentru poziÈ›ia %# din secÈ›iunea â€ž%pAâ€�%pB: index de simbol diferit de zero (%#) pentru poziÈ›ia %# din secÈ›iunea â€ž%pAâ€� cÃ¢nd fiÈ™ierul obiect nu are tabel de simbolurieroare: %pB conÈ›ine o realocare (%#) pentru secÈ›iunea â€ž%pAâ€� care face referire la un simbol global inexistent%pB: %pA+%#: nu a fost gÄƒsit niciun simbol pentru INHERIT%pB: dimensiunea secÈ›iunii â€ž.reginfoâ€� este incorectÄƒ; se aÈ™tepta %, s-a primit %%pB: realocarea GOT la %# nu se aÈ™teaptÄƒ Ã®n executabile%pB: realocarea CALL16 la %# nu este faÈ›Äƒ de simbol global%pB: nu se poate gÄƒsi realocarea LO16 care se potriveÈ™te cu â€ž%sâ€� pentru %s la %# Ã®n secÈ›iunea â€ž%pAâ€�%pB: intrarea â€ž%pAâ€� VMA de %# Ã®n afara intervalului de 32 de biÈ›i acceptat; luaÈ›i Ã®n considerare utilizarea â€ž-Ttext-segment=...â€�%pB: â€ž%pAâ€� decalajul lui % de la â€ž%pAâ€� dincolo de intervalul ADDIUPC%pB: Ã®nceputul lui â€ž%pAâ€� â€‹â€‹VMA din %# se aflÄƒ Ã®n afara intervalului de 32 de biÈ›i acceptat; Ã®ncercaÈ›i sÄƒ utilizaÈ›i â€ž-Ttext-segment=...â€�%pB adresa pe 64 de biÈ›i %# este Ã®n afara intervalului pentru fiÈ™ierul Intel Hex%pB: adresa %# Ã®n afara intervalului pentru fiÈ™ierul Intel Hexadresa secÈ›iunii (%#) sub Ã®nceputul segmentului (%#)%pB: acces dincolo de sfÃ¢rÈ™itul secÈ›iunii concatenate (%)%pB: Ã®ncercare de a emite conÈ›inut la o adresÄƒ ce nu este multiplu de 4 %#%pB: definiÈ›ie greÈ™itÄƒ a simbolului: â€žMainâ€� iniÈ›ializat la % Ã®n loc de adresa de pornire %
+%pB: prea multe registre iniÈ›ializate; lungimea secÈ›iunii %%pB: adresÄƒ de pornire nevalidÄƒ pentru registrele iniÈ›ializate de lungime %: %#%pB(%pA+%#): decalajul realocÄƒrii %s nu este Ã®n ordinea corectÄƒ%pB(%pA+%#): decalaj realocare %s Ã®n afara intervalului%pB: simbol XTY_ER defectuos â€ž%sâ€�: clasa %d scnum %d scnlen %%pB: simbolul XMC_TC0 â€ž%sâ€� este clasa %d scnlen %%pB: realocarea %s:% nu Ã®n csect%pB: Nu s-a putut gÄƒsi un ciot(stub) csect Ã®n intervalul de realocare de la %# care È›inteÈ™te â€ž%sâ€�Debordare a tabelului de intrÄƒri(TOC): %# > 0x10000; Ã®ncercaÈ›i â€ž-mminimal-tocâ€� la compilare%pB: eroare: Â«erratum 843419Â» imediat 0x% Ã®n afara intervalului pentru ADR (fiÈ™ier de intrare prea mare) È™i â€ž--fix-cortex-a53-843419=adrâ€�, utilizatÄƒ.  RulaÈ›i editorul de legÄƒturi cu â€ž--fix-cortex-a53-843419=fullâ€� Ã®n loc%pB(%pA+%#): realocare %s nerezolvatÄƒ Ã®n secÈ›iunea â€ž%sâ€�%# imm nevalid%pB: R_LARCH_ALIGN cu decalajul % nu este aliniat la limita instrucÈ›iunii%pB(%pA+%#): % octeÈ›i sunt necesari pentru alinierea la limita %-octeÈ›i, dar numai % sunt prezenÈ›i%%pcrel_lo depÄƒÈ™ire cu un adaos, valoarea lui %%pcrel_hi este 0x% fÄƒrÄƒ nici un adaos, dar poate fi 0x% dupÄƒ adÄƒugarea adaosului %%pcrel_lo%pB: Directorul de date (%lx octeÈ›i la %) se extinde peste limita secÈ›iunii la %
\ 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.20200303/bfd/po/ro.po ./bfd/po/ro.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ro.po	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/ro.po	2026-03-05 02:07:20.000000000 +0000
@@ -1,530 +1,796 @@
-# Mesajele în limba românã pentru pachetul bfd.
-# Copyright (C) 2003 Free Software Foundation, Inc.
+# Translation of bfd to Romanian.
+# Mesajele Ã®n limba romÃ¢nÄƒ pentru pachetul bfd.
+# Copyright Â© 2003, 2022, 2023, 2024, 2025 Free Software Foundation, Inc.
+# This file is distributed under the same license as the binutils package.
+#
 # Eugen Hoanca <eugenh@urban-grafx.ro>, 2003.
+# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022 - 2025.
+#
+# Cronologia traducerii fiÈ™ierului â€žbfdâ€�:
+# Traducerea iniÈ›ialÄƒ, fÄƒcutÄƒ de EH, pentru versiunea bfd 2.14rel030712
+# Actualizare a mesajelor, de la fiÈ™ierul â€žbfd-2.36.90.potâ€�.
+# Actualizare a codificÄƒrii caracterelor, la codificarea de caractere UTF-8.
+# Actualizare a diacriticelor de la â€žcu sedilÄƒâ€� la â€žcu virgulÄƒâ€�.
+# Actualizare a algoritmului formelor de plural (de la â€ždouÄƒâ€� la â€žtreiâ€�).
+# NU È™i a mesajelor traduse (acestea au rÄƒmas neschimbate).
+# Eliminare a mesajelor ce-au dispÄƒrut Ã®n ultima versiune.
+# ActualizÄƒri realizate de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 15.01.2022.
+# Actualizare a traducerii pentru versiunea 2.38.90, fÄƒcutÄƒ de R-GC, (33% - tradus), dec-2022.
+# Actualizare a traducerii pentru versiunea 2.39.90, fÄƒcutÄƒ de R-GC (80% - tradus), ian-2023.
+# Actualizare a traducerii pentru versiunea 2.40.90, fÄƒcutÄƒ de R-GC (100% - tradus), iul-2023.
+# Actualizare a traducerii pentru versiunea 2.41.90, fÄƒcutÄƒ de R-GC, ian-2024.
+# Actualizare a traducerii pentru versiunea 2.42.90, fÄƒcutÄƒ de R-GC, iul-2024.
+# Actualizare a traducerii pentru versiunea 2.43.90, fÄƒcutÄƒ de R-GC, ian-2025.
+# Actualizare a traducerii pentru versiunea 2.44.90, fÄƒcutÄƒ de R-GC, iul-2025.
+# Actualizare a traducerii pentru versiunea Y, fÄƒcutÄƒ de X, Z(luna-anul).
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.14rel030712\n"
-"POT-Creation-Date: 2003-07-11 13:53+0930\n"
-"PO-Revision-Date: 2003-11-25 08:39+0200\n"
-"Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>\n"
+"Project-Id-Version: bfd 2.44.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2025-07-13 08:44+0100\n"
+"PO-Revision-Date: 2025-07-15 13:24+0200\n"
+"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n"
 "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
-"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Language: ro\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2);\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.5\n"
 
-#: aout-adobe.c:204
+#: aout-cris.c:196
 #, c-format
-msgid "%s: Unknown section type in a.out.adobe file: %x\n"
-msgstr "%s: Tip secþiune necunoscut în fiºier adobe a.out: %x\n"
+msgid "%pB: unsupported relocation type exported: %#x"
+msgstr "%pB: tip de realocare neacceptat exportat: %#x"
 
-#: aout-cris.c:207
+#: aout-cris.c:242
 #, c-format
-msgid "%s: Invalid relocation type exported: %d"
-msgstr "%s: Tip de relocare exportat invalid: %d"
+msgid "%pB: unsupported relocation type imported: %#x"
+msgstr "%pB: tip de realocare neacceptat importat: %#x"
 
-#: aout-cris.c:251
+#: aout-cris.c:254
 #, c-format
-msgid "%s: Invalid relocation type imported: %d"
-msgstr "%s: Tip de relocare importat invalid: %d"
+msgid "%pB: bad relocation record imported: %d"
+msgstr "%pB: Ã®nregistrare de realocare greÈ™itÄƒ importatÄƒ: %d"
 
-#: aout-cris.c:262
+#: aoutx.h:444 pdp11.c:481
 #, c-format
-msgid "%s: Bad relocation record imported: %d"
-msgstr "%s: Înregistrare de relocare greºitã importatã: %d"
+msgid "%pB: %#<PRIx64> overflows header %s field"
+msgstr "%pB: %#<PRIx64> depÄƒÈ™eÈ™te cÃ¢mpul %s din antet"
 
-#: aoutx.h:1295 aoutx.h:1716
+#: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495
 #, c-format
-msgid "%s: can not represent section `%s' in a.out object file format"
-msgstr "%s: nu se poate reprezenta secþiunea `%s' în format de fiºier obiect a.out"
+msgid "%pB: can not represent section `%pA' in a.out object file format"
+msgstr "%pB: nu poate reprezenta secÈ›iunea â€ž%pAâ€� Ã®n format de fiÈ™ier obiect a.out"
 
-#: aoutx.h:1682
+#: aoutx.h:1562 pdp11.c:1467
 #, c-format
-msgid "%s: can not represent section for symbol `%s' in a.out object file format"
-msgstr "%s: nu se poate reprezenta secþiunea pentru simbolul `%s' în formatul de fiºier obiect a.out"
+msgid "%pB: can not represent section for symbol `%s' in a.out object file format"
+msgstr "%pB: nu se poate reprezenta secÈ›iunea pentru simbolul â€ž%sâ€� Ã®n formatul de fiÈ™ier obiect a.out"
 
-#: aoutx.h:1684
+#: aoutx.h:1565 vms-alpha.c:8473
 msgid "*unknown*"
 msgstr "*necunoscut*"
 
-#: aoutx.h:3776
+#: aoutx.h:1701 pdp11.c:1563
 #, c-format
-msgid "%s: relocatable link from %s to %s not supported"
-msgstr "%s: legãtura relocalizabilã din %s cãtre %s nesuportatã"
+msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
+msgstr "%pB: È™ir de decalaj nevalid %<PRIu64> >= %<PRIu64>"
 
-#: archive.c:1751
-msgid "Warning: writing archive was slow: rewriting timestamp\n"
-msgstr "Avertisment: scrierea arhivei a fost lentã: se rescrie marcajul de timp(timestamp)\n"
+#: aoutx.h:1945
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: dimensiune de realocare AOUT neacceptatÄƒ: %d"
+
+#: aoutx.h:2389 aoutx.h:2407 pdp11.c:2040
+#, c-format
+msgid "%pB: attempt to write out unknown reloc type"
+msgstr "%pB: Ã®ncercare de a scrie un tip de realocare necunoscut"
+
+#: aoutx.h:4040 pdp11.c:3402
+#, c-format
+msgid "%pB: unsupported relocation type"
+msgstr "%pB: tip de realocare neacceptat"
+
+#. Unknown relocation.
+#: aoutx.h:4360 coff-alpha.c:604 coff-mips.c:356 coff-rs6000.c:3037
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531
+#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4692
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6246 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2211 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3294
+#: elf32-nds32.c:3315 elf32-nds32.c:5084 elf32-or1k.c:1085 elf32-pj.c:326
+#: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291
+#: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347
+#: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163
+#: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537
+#: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924
+#: elf32-v850.c:4254 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510
+#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4058
+#: elf64-alpha.c:4206 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3428 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:331 elf64-s390.c:381 elf64-x86-64.c:305 elf64-x86-64.c:2558
+#: elfn32-mips.c:3799 elfxx-ia64.c:324 elfxx-loongarch.c:1897
+#: elfxx-riscv.c:1068 elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:907
+#: elfxx-tilegx.c:947 elfnn-aarch64.c:2215 elfnn-aarch64.c:2316
+#: elfnn-ia64.c:214 elfnn-ia64.c:3823 elfnn-kvx.c:259
+#, c-format
+msgid "%pB: unsupported relocation type %#x"
+msgstr "%pB: tip de realocare neacceptat %#x"
+
+#: aoutx.h:5380 pdp11.c:3818
+#, c-format
+msgid "%pB: relocatable link from %s to %s not supported"
+msgstr "%pB: legÄƒtura realocabilÄƒ de la %s la %s nu este acceptatÄƒ"
+
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr "%pB: nu se poate aloca memorie pentru intrÄƒrile GOT locale"
+
+#: archive.c:748
+msgid "%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr "%P: %pB(%s): eroare la deschiderea membrului subÈ›ire al arhivei: %E\n"
+
+#: archive.c:2282
+msgid "warning: writing archive was slow: rewriting timestamp"
+msgstr "avertisment: scrierea arhivei a fost lentÄƒ: se rescrie marcajul de timp"
 
-#: archive.c:2014
+#: archive.c:2351 archive.c:2408 elflink.c:4956 linker.c:1470
+#, c-format
+msgid "%pB: plugin needed to handle lto object"
+msgstr "%pB: este necesar un modul pentru a gestiona obiectul lto"
+
+#: archive.c:2640
 msgid "Reading archive file mod timestamp"
-msgstr "Citirea fiºierului arhivã mod marcaj de timp"
+msgstr "Se citeÈ™te marcajul de timp al fiÈ™ierului arhivei"
 
-#: archive.c:2040
+#: archive.c:2671
 msgid "Writing updated armap timestamp"
-msgstr "Scriere marcaj de timp armap înnoit"
+msgstr "Se scrie marcajul de timp armap actualizat"
+
+#: bfd.c:793
+msgid "no error"
+msgstr "nicio eroare"
+
+#: bfd.c:794
+msgid "system call error"
+msgstr "eroare apel de sistem"
 
-#: bfd.c:280
-msgid "No error"
-msgstr "Nici o eroare"
+#: bfd.c:795
+msgid "invalid bfd target"
+msgstr "È›intÄƒ bfd nevalidÄƒ"
 
-#: bfd.c:281
-msgid "System call error"
-msgstr "Eroare apel sistem"
+#: bfd.c:796
+msgid "file in wrong format"
+msgstr "fiÈ™ier Ã®n format eronat"
 
-#: bfd.c:282
-msgid "Invalid bfd target"
-msgstr "Þintã bfd invalidã"
+#: bfd.c:797
+msgid "archive object file in wrong format"
+msgstr "fiÈ™ier obiect de arhivÄƒ Ã®n format eronat"
 
-#: bfd.c:283
-msgid "File in wrong format"
-msgstr "Fiºier în format eronat"
+#: bfd.c:798
+msgid "invalid operation"
+msgstr "operaÈ›ie nevalidÄƒ"
 
-#: bfd.c:284
-msgid "Archive object file in wrong format"
-msgstr "Fiºier obiect arhivã în format eronat"
+#: bfd.c:799
+msgid "memory exhausted"
+msgstr "memorie epuizatÄƒ"
 
-#: bfd.c:285
-msgid "Invalid operation"
-msgstr "Operaþie invalidã"
+#: bfd.c:800
+msgid "no symbols"
+msgstr "niciun simbol"
 
-#: bfd.c:286
-msgid "Memory exhausted"
-msgstr "Memorie plinã"
+#: bfd.c:801
+msgid "archive has no index; run ranlib to add one"
+msgstr "arhiva nu are niciun index.; rulaÈ›i Â«ranlibÂ» pentru a adÄƒuga unul"
 
-#: bfd.c:287
-msgid "No symbols"
-msgstr "Nici un simbol"
+#: bfd.c:802
+msgid "no more archived files"
+msgstr "nu mai existÄƒ fiÈ™iere arhivate"
 
-#: bfd.c:288
-msgid "Archive has no index; run ranlib to add one"
-msgstr "Arhiva nu are nici un index.; rulaþi ranlib pentru a adãuga unul"
+#: bfd.c:803
+msgid "malformed archive"
+msgstr "arhivÄƒ defectuoasÄƒ"
 
-#: bfd.c:289
-msgid "No more archived files"
-msgstr "Nu mai existã fiºiere arhivate"
+#: bfd.c:804
+msgid "DSO missing from command line"
+msgstr "DSO lipseÈ™te din linia de comandÄƒ"
 
-#: bfd.c:290
-msgid "Malformed archive"
-msgstr "Arhivã malformatã"
+#: bfd.c:805
+msgid "file format not recognized"
+msgstr "formatul fiÈ™ierului nu este recunoscut"
 
-#: bfd.c:291
-msgid "File format not recognized"
-msgstr "Formatul de fiºier nu a fost recunoscut"
+#: bfd.c:806
+msgid "file format is ambiguous"
+msgstr "formatul fiÈ™ierului este ambiguu"
 
-#: bfd.c:292
-msgid "File format is ambiguous"
-msgstr "Formatul de fiºier este ambiguu"
+#: bfd.c:807
+msgid "section has no contents"
+msgstr "secÈ›iunea nu are conÈ›inut"
 
-#: bfd.c:293
-msgid "Section has no contents"
-msgstr "Secþiunea nu are conþinut"
+#: bfd.c:808
+msgid "nonrepresentable section on output"
+msgstr "secÈ›iune nereprezentabilÄƒ la ieÈ™ire"
 
-#: bfd.c:294
-msgid "Nonrepresentable section on output"
-msgstr "Secþiune de output nereprezentabilã"
+#: bfd.c:809
+msgid "symbol needs debug section which does not exist"
+msgstr "simbolul necesitÄƒ o secÈ›iune de depanare care nu existÄƒ"
 
-#: bfd.c:295
-msgid "Symbol needs debug section which does not exist"
-msgstr "Simbolul necesitã secþiune de debug care nu existã"
+#: bfd.c:810
+msgid "bad value"
+msgstr "valoare eronatÄƒ"
 
-#: bfd.c:296
-msgid "Bad value"
-msgstr "Valoare eronatã"
+#: bfd.c:811
+msgid "file truncated"
+msgstr "fiÈ™ier trunchiat"
 
-#: bfd.c:297
-msgid "File truncated"
-msgstr "Fiºier trunchiat"
+#: bfd.c:812
+msgid "file too big"
+msgstr "fiÈ™ier prea mare"
 
-#: bfd.c:298
-msgid "File too big"
-msgstr "Fiºier prea mare"
+#: bfd.c:813
+msgid "sorry, cannot handle this file"
+msgstr "scuze, nu se poate gestiona acest fiÈ™ier"
+
+#: bfd.c:814
+#, c-format
+msgid "error reading %s: %s"
+msgstr "eroare la citirea %s: %s"
 
-#: bfd.c:299
-msgid "#<Invalid error code>"
-msgstr "#<Cod invalid de eroare>"
+#: bfd.c:815
+msgid "#<invalid error code>"
+msgstr "#<cod de eroare nevalid>"
 
-#: bfd.c:687
+#: bfd.c:2266
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
-msgstr "Aserþiunea BFD %s a eºuat %s:%d"
+msgstr "aserÈ›iunea BFD %s a eÈ™uat %s:%d"
 
-#: bfd.c:703
+#: bfd.c:2279
 #, c-format
-msgid "BFD %s internal error, aborting at %s line %d in %s\n"
-msgstr "Eroare interna BFD %s, se renunþã la %s linia %d în %s\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr "%s: eroare interna BFD %s, se abandoneazÄƒ la %s:%d din %s\n"
 
-#: bfd.c:707
+#: bfd.c:2283
 #, c-format
-msgid "BFD %s internal error, aborting at %s line %d\n"
-msgstr "Eroare internã BFD %s, se renunþã la %s linia %d\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d\n"
+msgstr "%s: eroare internÄƒ BFD %s, se abandoneazÄƒ la %s:%d\n"
 
-#: bfd.c:709
+#: bfd.c:2286
+#, c-format
 msgid "Please report this bug.\n"
-msgstr "Vã rugãm raportaþi acest bug.\n"
+msgstr "RaportaÈ›i aceastÄƒ eroare.\n"
 
-#: bfdwin.c:202
+#: binary.c:277
 #, c-format
-msgid "not mapping: data=%lx mapped=%d\n"
-msgstr "nu se mapeazã: data=%lx mapat =%d\n"
+msgid "warning: writing section `%pA' at huge (ie negative) file offset"
+msgstr "avertisment: scrierea secÈ›iunii â€ž%pAâ€� la un decalaj uriaÈ™ (adicÄƒ negativ) Ã®n fiÈ™ier"
 
-#: bfdwin.c:205
-msgid "not mapping: env var not set\n"
-msgstr "nu se mapeazã: variabila env nu este setatã\n"
+#: cache.c:290
+#, c-format
+msgid "reopening %pB: %s"
+msgstr "se redeschide %pB: %s"
 
-#: binary.c:306
+#: coff-alpha.c:450
 #, c-format
-msgid "Warning: Writing section `%s' to huge (ie negative) file offset 0x%lx."
-msgstr "Avertisment: Scrierea secþiunii `%s' spre offset de fiºier imens (sau negativ) 0x%lx"
+msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
+msgstr "%pB: nu se pot gestiona fiÈ™ierele binare Alpha comprimate; utilizaÈ›i opÈ›iunile compilatorului, sau objZ, pentru a genera fiÈ™iere binare necomprimate"
 
-#: coff-a29k.c:120
-msgid "Missing IHCONST"
-msgstr "IHCONST lipsã"
+#: coff-alpha.c:914 coff-alpha.c:941 coff-alpha.c:2009 coff-mips.c:948
+msgid "GP relative relocation used when GP not defined"
+msgstr "realocarea relativÄƒ a GP utilizatÄƒ atunci cÃ¢nd GP nu este definit"
 
-#: coff-a29k.c:181
-msgid "Missing IHIHALF"
-msgstr "IHHALF lipsã"
+#: coff-alpha.c:1177 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13195
+#: elfxx-mips.c:13594 reloc.c:8602 reloc16.c:314
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr "%X%P: %pB(%pA): realocarea â€ž%pRâ€� iese Ã®n afara intervalului\n"
 
-#: coff-a29k.c:213 coff-or32.c:236
-msgid "Unrecognized reloc"
-msgstr "Reloc necunoscut"
+#: coff-alpha.c:1183 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13604
+#: reloc.c:8612
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr "%X%P: %pB(%pA): realocarea â€ž%pRâ€� nu este acceptatÄƒ\n"
 
-#: coff-a29k.c:409
-msgid "missing IHCONST reloc"
-msgstr "IHCONST reloc lipsã"
+#: coff-alpha.c:1189 elfxx-mips.c:13613 reloc.c:8621
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr "%X%P: %pB(%pA): relocarea â€ž%pRâ€� returneazÄƒ o valoare nerecunoscutÄƒ %x\n"
 
-#: coff-a29k.c:499
-msgid "missing IHIHALF reloc"
-msgstr "IHIHALF reloc lipsã"
+#: coff-alpha.c:1515
+msgid "using multiple gp values"
+msgstr "folosind mai multe valori gp"
 
-#: coff-alpha.c:884 coff-alpha.c:921 coff-alpha.c:1992 coff-mips.c:1397
-msgid "GP relative relocation used when GP not defined"
-msgstr "Relocare relativã GP folositã când GP nu este definit"
+#: coff-alpha.c:1992
+#, c-format
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr "%X%P: %pB(%pA): realocare Ã®n afara intervalului\n"
 
-#: coff-alpha.c:1488
-msgid "using multiple gp values"
-msgstr "folosire de valori multiple gp"
+#: coff-alpha.c:2004
+#, c-format
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr "%X%P: %pB(%pA): realocarea nu este acceptatÄƒ\n"
 
-#: coff-arm.c:1066 elf32-arm.h:294
+#: coff-go32.c:167 coffswap.h:812
 #, c-format
-msgid "%s: unable to find THUMB glue '%s' for `%s'"
-msgstr "%s: nu s-a putut gãsi legãtura(glue) THUMB `%s' pentru `%s'"
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: avertisment: %s: depÄƒÈ™ire a numÄƒrului de linii: 0x%lx > 0xffff"
 
-#: coff-arm.c:1096 elf32-arm.h:329
+#: coff-mips.c:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
+msgid "GP relative relocation when _gp not defined"
+msgstr "realocarea relativÄƒ a GP atunci cÃ¢nd _gp nu este definit"
+
+#: coff-rs6000.c:484 coff64-rs6000.c:377
 #, c-format
-msgid "%s: unable to find ARM glue '%s' for `%s'"
-msgstr "%s: nu s-a putut gãsi legãtura(glue) ARM `%s' pentru `%s'"
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr "%pB: swap_aux_in neacceptat pentru clasa de stocare %#x"
 
-#: coff-arm.c:1394 coff-arm.c:1489 elf32-arm.h:892 elf32-arm.h:999
+#: coff-rs6000.c:571 coff64-rs6000.c:497
 #, c-format
-msgid "%s(%s): warning: interworking not enabled."
-msgstr "%s(%s): avertisment: interlucrul(interworking) nu este activat"
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr "%pB: swap_aux_out neacceptat pentru clasa de stocare %#x"
 
-#: coff-arm.c:1398 elf32-arm.h:1002
+#: coff-rs6000.c:3127
 #, c-format
-msgid "  first occurrence: %s: arm call to thumb"
-msgstr "  prima gãsire: %s: apelare braþ(arm) cãtre deget(thumb)"
+msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
+msgstr "%pB: realocare TOC la %#<PRIx64> pentru simbolul â€ž%sâ€� fÄƒrÄƒ nicio intrare TOC"
 
-#: coff-arm.c:1493 elf32-arm.h:895
+#: coff-rs6000.c:3251 coff64-rs6000.c:848
 #, c-format
-msgid "  first occurrence: %s: thumb call to arm"
-msgstr "  prima gãsire: %s: apelare deget(thumb) cãtre braþ(arm)"
+msgid "Unable to find the stub entry targeting %s"
+msgstr "Imposibil de gÄƒsit intrarea ciot(stub) care vizeazÄƒ %s"
 
-#: coff-arm.c:1496
-msgid "  consider relinking with --support-old-code enabled"
-msgstr "  luaþi în considerare relinkuirea cu --support-old-code activat"
+#: coff-rs6000.c:3366
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr "%pB: realocare TLS la 0x%<PRIx64> peste simbolul non-TLS %s (0x%x)\n"
 
-#: coff-arm.c:1788 coff-tic80.c:687 cofflink.c:3038
+#: coff-rs6000.c:3379
 #, c-format
-msgid "%s: bad reloc address 0x%lx in section `%s'"
-msgstr "%s: adresã eronatã de relocare 0x%lx în secþiunea `%s'"
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr "%pB: realocare localÄƒ TLS la 0x%<PRIx64> peste simbolul importat %s\n"
 
-#: coff-arm.c:2132
+#: coff-rs6000.c:3785
 #, c-format
-msgid "%s: illegal symbol index in reloc: %d"
-msgstr "%s: index ilegal de simbol în reloc: %d"
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr "%pB: realocarea (%d) la 0x%<PRIx64> are r_rsize greÈ™itÄƒ (0x%x)\n"
 
-#: coff-arm.c:2265
+#: coff-rs6000.c:4047 coff64-rs6000.c:2021
 #, c-format
-msgid "ERROR: %s is compiled for APCS-%d, whereas %s is compiled for APCS-%d"
-msgstr "EROARE: %s este compilat pentru APCS-%d, pe când %s e compilat pentru APCS-%d"
+msgid "%pB: symbol `%s' has unrecognized smclas %d"
+msgstr "%pB: simbolul â€ž%sâ€� are smclas nerecunoscut %d"
 
-#: coff-arm.c:2280 elf32-arm.h:2328
+#: coff-sh.c:781 elf32-sh.c:521
 #, c-format
-msgid "ERROR: %s passes floats in float registers, whereas %s passes them in integer registers"
-msgstr "EROARE: %s trimite float în regiºtrii de float, pe când %s îi trimite în regiºtrii de integer"
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES offset"
+msgstr "%pB: %#<PRIx64>: avertisment: decalaj R_SH_USES incorect"
 
-#: coff-arm.c:2283 elf32-arm.h:2333
+#: coff-sh.c:792
 #, c-format
-msgid "ERROR: %s passes floats in integer registers, whereas %s passes them in float registers"
-msgstr "EROARE: %s trimite integer în regiºtrii de integer, pe când %s îi trimite în regiºtrii de float"
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
+msgstr "%pB: %#<PRIx64>: avertisment: R_SH_USES indicÄƒ un insn nerecunoscut %#x"
 
-#: coff-arm.c:2298
+#: coff-sh.c:810 elf32-sh.c:552
 #, c-format
-msgid "ERROR: %s is compiled as position independent code, whereas target %s is absolute position"
-msgstr "EROARE: %s este compilat ca ºi cod independent de poziþie,pe când þinta %seste poziþie absolutã"
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
+msgstr "%pB: %#<PRIx64>: avertisment: decalaj de Ã®ncÄƒrcare R_SH_USES incorect"
 
-#: coff-arm.c:2301
+#: coff-sh.c:835 elf32-sh.c:568
 #, c-format
-msgid "ERROR: %s is compiled as absolute position code, whereas target %s is position independent"
-msgstr "EROARE: %s este compilat ca ºi cod poziþie absolutã,pe când þinta %seste independentã de poziþie"
+msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
+msgstr "%pB: %#<PRIx64>: avertisment: nu s-a putut gÄƒsi realocarea aÈ™teptatÄƒ"
 
-#: coff-arm.c:2330 elf32-arm.h:2405
+#: coff-sh.c:852 elf32-sh.c:597
 #, c-format
-msgid "Warning: %s supports interworking, whereas %s does not"
-msgstr "Avertisment: %s suportã interlucru(interworking), pe când %s nu suportã"
+msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
+msgstr "%pB: %#<PRIx64>: avertisment: simbol Ã®n secÈ›iune neaÈ™teptatÄƒ"
 
-#: coff-arm.c:2333 elf32-arm.h:2412
+#: coff-sh.c:973 elf32-sh.c:727
 #, c-format
-msgid "Warning: %s does not support interworking, whereas %s does"
-msgstr "Avertisment: %s nu suportã interlucru(interworking), pe când %s suportã"
+msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
+msgstr "%pB: %#<PRIx64>: avertisment: nu s-a putut gÄƒsi realocarea COUNT(NUMÄ‚RUL)  aÈ™teptatÄƒ"
 
-#: coff-arm.c:2360
+#: coff-sh.c:983 elf32-sh.c:738
 #, c-format
-msgid "private flags = %x:"
-msgstr "marcaje(flags) private = %x:"
+msgid "%pB: %#<PRIx64>: warning: bad count"
+msgstr "%pB: %#<PRIx64>: avertisment: numÄƒrÄƒtoare(count) nevalidÄƒ"
 
-#: coff-arm.c:2368 elf32-arm.h:2467
-msgid " [floats passed in float registers]"
-msgstr " [floats trecuþi în regiºtri de float]"
+#: coff-sh.c:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
+msgstr "%pB: %#<PRIx64>: fatal: realocare depÄƒÈ™itÄƒ Ã®n timpul relaxÄƒrii"
 
-#: coff-arm.c:2370
-msgid " [floats passed in integer registers]"
-msgstr " [floats trecuþi în regiºtrii de integer]"
+#: coff-sh.c:1443
+#, c-format
+msgid "%pB: fatal: generic symbols retrieved before relaxing"
+msgstr "%pB: fatal: simboluri generice recuperate Ã®nainte de relaxare"
 
-#: coff-arm.c:2373 elf32-arm.h:2470
-msgid " [position independent]"
-msgstr "[ independent de poziþie]"
+#: coff-sh.c:2773 cofflink.c:2986
+#, c-format
+msgid "%pB: illegal symbol index %ld in relocs"
+msgstr "%pB: index de simbol ilegal %ld Ã®n realocÄƒri"
 
-#: coff-arm.c:2375
-msgid " [absolute position]"
-msgstr " [poziþie absolutã]"
+#: coff-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5305
+#, c-format
+msgid "%pB: warning: illegal symbol index %ld in relocs"
+msgstr "%pB: avertisment: index de simbol ilegal %ld Ã®n realocÄƒri"
 
-#: coff-arm.c:2379
-msgid " [interworking flag not initialised]"
-msgstr " [marcajul(flag) de interlucru(interworking) nu este iniþializat]"
+#: coff-x86_64.c:147
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr "R_AMD64_IMAGEBASE cu __ImageBase nedefinitÄƒ"
 
-#: coff-arm.c:2381
-msgid " [interworking supported]"
-msgstr " [interlucru(interworking) suportat]"
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
+#, c-format
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr "%pB: C_STAT nu este acceptat de XCOFF64"
 
-#: coff-arm.c:2383
-msgid " [interworking not supported]"
-msgstr " [interlucru(interworking) nesuportat]"
+#: coff64-rs6000.c:477
+#, c-format
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr "%pB: tip auxiliar greÈ™it (auxtype) %#x, pentru clasa de stocare %#x"
 
-#: coff-arm.c:2431 elf32-arm.h:2150
+#: coff64-rs6000.c:1598
 #, c-format
-msgid "Warning: Not setting interworking flag of %s since it has already been specified as non-interworking"
-msgstr "Avertisment: Nu se seteazã marcajul(flagu) de interlucru(interworking) al %s atâta timp cât a fost specificat ca non-interlucru(interworking)"
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr "%pB: realocarea (%d) la 0x%<PRIx64> are r_rsize greÈ™itÄƒ (0x%x)\n"
 
-#: coff-arm.c:2435 elf32-arm.h:2154
+#: coffcode.h:951
 #, c-format
-msgid "Warning: Clearing the interworking flag of %s due to outside request"
-msgstr "Avertisment: Se ºterge marcajul(flag) de interlucru(interworking) al %s datoritã unei cereri din afarã"
+msgid "%pB: unable to load COMDAT section name"
+msgstr "%pB: nu se poate Ã®ncÄƒrca numele secÈ›iunii COMDAT"
 
-#: coff-h8300.c:1096
+#: coffcode.h:976
 #, c-format
-msgid "cannot handle R_MEM_INDIRECT reloc when using %s output"
-msgstr "nu am putut mainpula(handle) relocarea R_MEM_INDIRECT în folosirea ieºirii(output) %s"
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "%pB: avertisment: nu a fost gÄƒsit niciun simbol pentru secÈ›iunea â€ž%sâ€�"
 
-#: coff-i960.c:137 coff-i960.c:486
-msgid "uncertain calling convention for non-COFF symbol"
-msgstr "convenþie de apelare nesigurã pentru simbol non-COFF"
+#: coffcode.h:1148
+#, c-format
+msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
+msgstr "%pB: eroare: simbol neaÈ™teptat â€ž%sâ€� Ã®n secÈ›iunea COMDAT"
 
-#: coff-m68k.c:482 coff-mips.c:2394 elf32-m68k.c:2193 elf32-mips.c:1783
-msgid "unsupported reloc type"
-msgstr "tip de relocare nesuportat"
+#: coffcode.h:1159
+#, c-format
+msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
+msgstr "%pB: avertisment: simbolul COMDAT â€ž%sâ€� nu se potriveÈ™te cu numele secÈ›iunii â€ž%sâ€�"
 
-#: coff-mips.c:839 elf32-mips.c:1088 elf64-mips.c:1590 elfn32-mips.c:1554
-msgid "GP relative relocation when _gp not defined"
-msgstr "Relocare relativã GP atâta timp cât _gp nu este definit"
+#. 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:1267
+#, c-format
+msgid "%pB: warning: ignoring section flag %s in section %s"
+msgstr "%pB: avertisment: se ignorÄƒ fanionul secÈ›iunii %s Ã®n secÈ›iunea %s"
 
-#. No other sections should appear in -membedded-pic
-#. code.
-#: coff-mips.c:2431
-msgid "reloc against unsupported section"
-msgstr "relocare pe o secþiune nesuportatã"
+#: coffcode.h:1337
+#, c-format
+msgid "%pB (%s): section flag %s (%#lx) ignored"
+msgstr "%pB (%s): fanion de secÈ›iune %s (%#lx) ignorat"
 
-#: coff-mips.c:2439
-msgid "reloc not properly aligned"
-msgstr "relocare incorect aliniatã"
+#: coffcode.h:1945
+#, c-format
+msgid "%pB: overflow reloc count too small"
+msgstr "%pB: pragul maxim al contorului de realocÄƒri este prea mic"
 
-#: coff-rs6000.c:2790
+#: coffcode.h:1954 coffcode.h:2019
 #, c-format
-msgid "%s: unsupported relocation type 0x%02x"
-msgstr "%s: tip de relocare nesuportat 0x%02x"
+msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
+msgstr "%pB: avertisment: pretinde cÄƒ are 0xffff realocÄƒri, fÄƒrÄƒ depÄƒÈ™ire"
 
-#: coff-rs6000.c:2883
+#: coffcode.h:2402
 #, c-format
-msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
-msgstr "%s: relocare TOC la 0x%x cãtre simbolul `%s' fãrã nici o intrare TOC"
+msgid "unrecognized TI COFF target id '0x%x'"
+msgstr "identificator de È›intÄƒ TI COFF nerecunoscut â€ž0x%xâ€�"
 
-#: coff-rs6000.c:3616 coff64-rs6000.c:2109
+#: coffcode.h:2681
 #, c-format
-msgid "%s: symbol `%s' has unrecognized smclas %d"
-msgstr "%s: simbolul `%s' are un smclas necunoscut %d"
+msgid "%pB: reloc against a non-existent symbol index: %ld"
+msgstr "%pB: realocare faÈ›Äƒ de un index de simbol inexistent: %ld"
 
-#: coff-tic4x.c:170 coff-tic54x.c:288 coff-tic80.c:450
+#: coffcode.h:3153
 #, c-format
-msgid "Unrecognized reloc type 0x%x"
-msgstr "Tip de relocare necunoscut 0x%x"
+msgid "%pB: too many sections (%d)"
+msgstr "%pB: prea multe secÈ›iuni (%d)"
 
-#: coff-tic4x.c:218 coff-tic54x.c:373 coffcode.h:5045
+#: coffcode.h:3681
 #, c-format
-msgid "%s: warning: illegal symbol index %ld in relocs"
-msgstr "%s: avertisment: index ilegal de simbol %ld în relocãri"
+msgid "%pB: section %pA: string table overflow at offset %ld"
+msgstr "%pB: secÈ›iunea %pA: depÄƒÈ™ire a tabelului de È™iruri la poziÈ›ia %ld"
 
-#: coff-w65.c:364
+#: coffcode.h:3782
 #, c-format
-msgid "ignoring reloc %s\n"
-msgstr "se ignorã reloc %s\n"
+msgid "%pB:%s section %s: alignment 2**%u not representable"
+msgstr "%pB:%s secÈ›iunea %s: aliniatul 2**%u nu este reprezentabil"
 
-#: coffcode.h:1108
+#: coffcode.h:4523
 #, c-format
-msgid "%s (%s): Section flag %s (0x%x) ignored"
-msgstr "%s (%s): Marcajul(flag) de secþiune %s (0x%x) ignorat"
+msgid "%pB: warning: line number table read failed"
+msgstr "%pB: avertisment: citirea tabelului cu numere de linie a eÈ™uat"
 
-#: coffcode.h:2214
+#: coffcode.h:4569 coffcode.h:4583
 #, c-format
-msgid "Unrecognized TI COFF target id '0x%x'"
-msgstr "Id þintã TI COFF necunoscut `0x%x'"
+msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
+msgstr "%pB: avertisment: index de simbol ilegal 0x%lx Ã®n intrarea cu numÄƒrul de linie %d"
 
-#: coffcode.h:4437
+#: coffcode.h:4597
 #, c-format
-msgid "%s: warning: illegal symbol index %ld in line numbers"
-msgstr "%s: avertisment: index ilegal de simbol %ld în numãrul de linii"
+msgid "%pB: warning: illegal symbol in line number entry %d"
+msgstr "%pB: avertisment: simbol ilegal Ã®n intrarea cu numÄƒrul de linie %d"
 
-#: coffcode.h:4451
+#: coffcode.h:4610
 #, c-format
-msgid "%s: warning: duplicate line number information for `%s'"
-msgstr "%s: avertisment: informaþie duplicat a numãrului de linii pentru `%s'"
+msgid "%pB: warning: duplicate line number information for `%s'"
+msgstr "%pB: avertisment: informaÈ›ii despre numÄƒrul liniei duplicate pentru â€ž%sâ€�"
 
-#: coffcode.h:4805
+#: coffcode.h:5034
 #, c-format
-msgid "%s: Unrecognized storage class %d for %s symbol `%s'"
-msgstr "%s: Clasã de depozitare(storage) %d necunoscutã pentru %s simbolul `%s'"
+msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
+msgstr "%pB: clasÄƒ de stocare nerecunoscutÄƒ %d pentru simbolul %s â€ž%sâ€�"
 
-#: coffcode.h:4938
+#: coffcode.h:5174
 #, c-format
-msgid "warning: %s: local symbol `%s' has no section"
-msgstr "avertisment: %s: simbolul local `%s' nu are secþiune"
+msgid "warning: %pB: local symbol `%s' has no section"
+msgstr "avertisment: %pB: simbolul local â€ž%sâ€� nu are secÈ›iune"
 
-#: coffcode.h:5083
+#: coffcode.h:5345
 #, c-format
-msgid "%s: illegal relocation type %d at address 0x%lx"
-msgstr "%s: tip ilegal de relocare %d la adresa 0x%lx"
+msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
+msgstr "%pB: tip de realocare ilegal %d la adresa %#<PRIx64>"
 
-#: coffgen.c:1666
+#: coffgen.c:257 elf.c:1060
 #, c-format
-msgid "%s: bad string table size %lu"
-msgstr "%s: mãrime tabel ºiruri invalidã %lu"
+msgid "%pB: unable to compress section %s"
+msgstr "%pB: nu se poate comprima secÈ›iunea %s"
 
-#: cofflink.c:538 elflink.h:1276
+#: coffgen.c:267 elf.c:1070
 #, c-format
-msgid "Warning: type of symbol `%s' changed from %d to %d in %s"
-msgstr "Avertisment: tipul de simbol `%s' schimbat de la %d la %d în %s"
+msgid "%pB: unable to decompress section %s"
+msgstr "%pB: nu se poate decomprima secÈ›iunea %s"
 
-#: cofflink.c:2328
+#: coffgen.c:1795
 #, c-format
-msgid "%s: relocs in section `%s', but it has no contents"
-msgstr "%s: relocãri în secþiunea `%s', dar fãrã conþinut"
+msgid "%pB: bad string table size %<PRIu64>"
+msgstr "%pB: dimensiune greÈ™itÄƒ a tabelului de È™iruri %<PRIu64>"
 
-#: cofflink.c:2671 coffswap.h:890
+#: coffgen.c:2179 coffgen.c:2318 cofflink.c:2051 ecoff.c:1444 elf.c:2313
+#: elf.c:2345 pef.c:214 syms.c:789 xcofflink.c:384 xcofflink.c:5577
+msgid "<corrupt>"
+msgstr "<corupt>"
+
+#: coffgen.c:2208
 #, c-format
-msgid "%s: %s: reloc overflow: 0x%lx > 0xffff"
-msgstr "%s: %s: depãºire(overflow) de relocãri: 0x%lx > 0xffff"
+msgid "<corrupt info> %s"
+msgstr "<informaÈ›ie coruptÄƒ> %s"
+
+#: coffgen.c:2818 elflink.c:15490 linker.c:3061
+msgid "%P: already_linked_table: %E\n"
+msgstr "%P: already_linked_table: %E\n"
 
-#: cofflink.c:2680 coffswap.h:876
+#: coffgen.c:3175 elflink.c:14430
 #, c-format
-msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%s: avertisment: %s: depãºire(overflow) numãr de linii: 0x%lx > 0xffff"
+msgid "removing unused section '%pA' in file '%pB'"
+msgstr "se eliminÄƒ secÈ›iunea â€ž%pAâ€� nefolositÄƒ din fiÈ™ierul â€ž%pBâ€�"
+
+#: coffgen.c:3252 elflink.c:14661
+msgid "warning: gc-sections option ignored"
+msgstr "avertisment: opÈ›iunea gc-sections a fost ignoratÄƒ"
 
-#: cpu-arm.c:196 cpu-arm.c:206
+#: cofflink.c:399
 #, c-format
-msgid "ERROR: %s is compiled for the EP9312, whereas %s is compiled for XScale"
-msgstr "EROARE: %s este compilat pentru EP9312, pe când %s e compilat pentru XScale"
+msgid "warning: symbol `%s' is both section and non-section"
+msgstr "avertisment: simbolul â€ž%sâ€� este atÃ¢t secÈ›iune, cÃ¢t È™i non-secÈ›iune"
 
-#: cpu-arm.c:344
+#: cofflink.c:504 elf64-ia64-vms.c:5200 elflink.c:5587
 #, c-format
-msgid "warning: unable to update contents of %s section in %s"
-msgstr "avertisment: imposibil de adus la zi(update) conþinutul secþiunii %s în %s"
+msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
+msgstr "avertisment: tipul de simbol â€ž%sâ€� s-a schimbat de la %d la %d Ã®n %pB"
 
-#: dwarf2.c:380
-msgid "Dwarf Error: Can't find .debug_str section."
-msgstr "Eroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_str"
+#: cofflink.c:2379
+#, c-format
+msgid "%pB: relocs in section `%pA', but it has no contents"
+msgstr "%pB: realocÄƒri in sectiunea â€ž%pAâ€�, dar aceasta nu are conÈ›inut"
 
-#: dwarf2.c:397
+#: cofflink.c:2442 elflink.c:11880
 #, c-format
-msgid "Dwarf Error: DW_FORM_strp offset (%lu) greater than or equal to .debug_str size (%lu)."
-msgstr "Eroare Pitic(Dwarf): DW_FORM_strp offset (%lu) mai mare sau egalã cu mãrimea .debug_str (%lu)."
+msgid "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB\n"
+msgstr "%Xâ€ž%sâ€� la care se face referire Ã®n secÈ›iunea â€ž%pAâ€� din %pB: este definit Ã®n secÈ›iunea eliminatÄƒ â€ž%pAâ€� din %pB\n"
 
-#: dwarf2.c:541
-msgid "Dwarf Error: Can't find .debug_abbrev section."
-msgstr "Eroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_abbrev."
+#: cofflink.c:2637
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr "%pB: eliminarea simbolului nereprezentabil â€ž%sâ€� (valoare 0x%<PRIx64>)"
 
-#: dwarf2.c:556
+#: cofflink.c:2755
 #, c-format
-msgid "Dwarf Error: Abbrev offset (%lu) greater than or equal to .debug_abbrev size (%lu)."
-msgstr "Eroare Pitic(Dwarf): Offset abbrev(%lu) mai mare sau egal cu mãrimea .debug_abbrev (%lu)."
+msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
+msgstr "%pB: %pA: depÄƒÈ™ire de realocÄƒri: %#x > 0xffff"
 
-#: dwarf2.c:756
+#: cofflink.c:2763
 #, c-format
-msgid "Dwarf Error: Invalid or unhandled FORM value: %u."
-msgstr "Eroare Pitic(Dwarf): Valoare FORM invalidã sau nemanipulabilã: %u."
+msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
+msgstr "%pB: avertisment: %pA: depÄƒÈ™ire numÄƒr de linii: %#x > 0xffff"
 
-#: dwarf2.c:933
-msgid "Dwarf Error: mangled line number section (bad file number)."
-msgstr "Eroare Pitic(Dwarf): secþiune numãr de linii trunchiatã (numãr fiºier eronat)"
+#: cofflink.c:3157
+#, c-format
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr "%pB: adresÄƒ de realocare incorectÄƒ %#<PRIx64> Ã®n secÈ›iunea â€ž%pAâ€�"
+
+#: coffswap.h:826
+#, c-format
+msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
+msgstr "%pB: %s: depÄƒÈ™ire de realocÄƒri: 0x%lx > 0xffff"
+
+#: compress.c:732 compress.c:749 libbfd.c:1322
+#, c-format
+msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
+msgstr "eroare: %pB(%pA) este prea mare (%#<PRIx64> octeÈ›i)"
+
+#: cpu-arm.c:438
+#, c-format
+msgid "warning: unable to update contents of %s section in %pB"
+msgstr "avertisment: imposibil de actualizat conÈ›inutul secÈ›iunii %s din %pB"
+
+#: dwarf2.c:702
+#, c-format
+msgid "DWARF error: can't find %s section."
+msgstr "eroare DWARF: nu se gÄƒseÈ™te secÈ›iunea %s."
+
+#: dwarf2.c:710
+#, c-format
+msgid "DWARF error: section %s has no contents"
+msgstr "eroare DWARF: secÈ›iunea %s nu are conÈ›inut"
 
-#: dwarf2.c:1032
-msgid "Dwarf Error: Can't find .debug_line section."
-msgstr "Eroare Pitic(Dwarf): Nu pot gãsi secþiunea debug_line."
+#. PR 26946
+#: dwarf2.c:719
+#, c-format
+msgid "DWARF error: section %s is too big"
+msgstr "eroare DWARF: secÈ›iunea %s este prea mare"
+
+#: dwarf2.c:754
+#, c-format
+msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
+msgstr "eroare DWARF: decalaj (%<PRIu64>) mai mare sau egal cu dimensiunea %s (%<PRIu64>)"
 
-#: dwarf2.c:1049
+#: dwarf2.c:1501
+msgid "DWARF error: info pointer extends beyond end of attributes"
+msgstr "eroare DWARF: indicatorul de informaÈ›ii se extinde dincolo de sfÃ¢rÈ™itul atributelor"
+
+#: dwarf2.c:1693
 #, c-format
-msgid "Dwarf Error: Line offset (%lu) greater than or equal to .debug_line size (%lu)."
-msgstr "Eroare Pitic(Dwarf): Offsetul de linie (%lu) mai mare sau egal cu mãrimea .debug_line (%lu)"
+msgid "DWARF error: invalid or unhandled FORM value: %#x"
+msgstr "eroare DWARF: valoare FORM nevalidÄƒ sau neprocesabilÄƒ: %#x"
+
+#: dwarf2.c:2050
+msgid "DWARF error: mangled line number section (bad file number)"
+msgstr "eroare DWARF: secÈ›iune a numÄƒrului de linie deterioratÄƒ (numÄƒr de fiÈ™ier greÈ™it)"
 
-#: dwarf2.c:1255
-msgid "Dwarf Error: mangled line number section."
-msgstr "Eroare Pitic(Dwarf): secþiune trunchiatã numãr de linii"
+#: dwarf2.c:2614
+msgid "DWARF error: zero format count"
+msgstr "eroare DWARF: numÄƒr(contor) de format zero"
 
-#: dwarf2.c:1470 dwarf2.c:1620
+#: dwarf2.c:2624
 #, c-format
-msgid "Dwarf Error: Could not find abbrev number %u."
-msgstr "Eroare Pitic(Dwarf): Nu am putut gãsi numãrul abbrev: %u."
+msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
+msgstr "eroare DWARF: cantitatea de date (%<PRIx64>) mai mare decÃ¢t dimensiunea memoriei tampon"
 
-#: dwarf2.c:1581
+#: dwarf2.c:2663
 #, c-format
-msgid "Dwarf Error: found dwarf version '%u', this reader only handles version 2 information."
-msgstr "Eroare Pitic(Dwarf): S-a gãsit dwarf versiunea `%u', acest cititor manipuleazã doar informaþii ale versiunii 2."
+msgid "DWARF error: unknown format content type %<PRIu64>"
+msgstr "eroare DWARF: tip de conÈ›inut Ã®n format necunoscut %<PRIu64>"
 
-#: dwarf2.c:1588
+#: dwarf2.c:2736
 #, c-format
-msgid "Dwarf Error: found address size '%u', this reader can not handle sizes greater than '%u'."
-msgstr "Eroare Pitic(Dwarf): s-a gãsit adresa mãrimea `%u', acest cititor nu poate manipula mãrimi mai mari decât `%u'"
+msgid "DWARF error: line info section is too small (%<PRId64>)"
+msgstr "eroare DWARF: secÈ›iunea de informaÈ›ii despre linie este prea micÄƒ (%<PRId64>)"
 
-#: dwarf2.c:1611
+#: dwarf2.c:2763
 #, c-format
-msgid "Dwarf Error: Bad abbrev number: %u."
-msgstr "Eroare Pitic(Dwarf): Numãr invalid de abbrev: %u"
+msgid "DWARF error: line info data is bigger (%#<PRIx64>) than the space remaining in the section (%#lx)"
+msgstr "eroare DWARF: datele de informaÈ›ii despre linie sunt mai mari (%#<PRIx64>) decÃ¢t spaÈ›iul rÄƒmas Ã®n secÈ›iune (%#lx)"
 
-#: ecoff.c:1339
+#: dwarf2.c:2776
 #, c-format
-msgid "Unknown basic type %d"
-msgstr "Tip de bazã necunoscut %d"
+msgid "DWARF error: unhandled .debug_line version %d"
+msgstr "eroare DWARF: versiune .debug_line neprocesatÄƒ %d"
+
+#: dwarf2.c:2785
+msgid "DWARF error: ran out of room reading prologue"
+msgstr "eroare DWARF: s-a rÄƒmas fÄƒrÄƒ spaÈ›iu citind prologul"
 
-#: ecoff.c:1599
+#: dwarf2.c:2801
+#, c-format
+msgid "DWARF error: line info unsupported segment selector size %u"
+msgstr "eroare DWARF: dimensiunea selectorului de segmente %u, nu este acceptatÄƒ pentru informaÈ›iile de linie"
+
+#: dwarf2.c:2823
+msgid "DWARF error: invalid maximum operations per instruction"
+msgstr "eroare DWARF: maximul de operaÈ›ii pe instrucÈ›iune nu este valid"
+
+#: dwarf2.c:2835
+msgid "DWARF error: ran out of room reading opcodes"
+msgstr "eroare DWARF: s-a rÄƒmas fÄƒrÄƒ spaÈ›iu citind codurile operaÈ›ionale"
+
+#: dwarf2.c:3012
+msgid "DWARF error: mangled line number section"
+msgstr "eroare DWARF: secÈ›iunea cu numÄƒrul de linie deterioratÄƒ"
+
+#: dwarf2.c:3483
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "eroare DWARF: recursiune a unei instanÈ›e abstracte a fost detectatÄƒ"
+
+#: dwarf2.c:3517 dwarf2.c:3607
+msgid "DWARF error: invalid abstract instance DIE ref"
+msgstr "eroare DWARF: referinÈ›Äƒ DIE a instanÈ›ei abstracte nevalidÄƒ"
+
+#: dwarf2.c:3533
+#, c-format
+msgid "DWARF error: unable to read alt ref %<PRIu64>"
+msgstr "eroare DWARF: nu se poate citi referinÈ›a alternativÄƒ %<PRIu64>"
+
+#: dwarf2.c:3585
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "eroare DWARF: nu se poate localiza referinÈ›a la instanÈ›a abstractÄƒ DIE %<PRIu64>"
+
+#: dwarf2.c:3622 dwarf2.c:3938 dwarf2.c:4511
+#, c-format
+msgid "DWARF error: could not find abbrev number %u"
+msgstr "eroare DWARF: nu s-a putut gÄƒsi numÄƒrul abreviat %u"
+
+#: dwarf2.c:4211
+#, c-format
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr "eroare DWARF: nu s-a putut gÄƒsi specificaÈ›ia variabilei la poziÈ›ia 0x%lx"
+
+#: dwarf2.c:4357 dwarf2.c:4611
+msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
+msgstr "eroare DWARF: atributul DW_AT_comp_dir a fost gÄƒsit cu o formÄƒ fÄƒrÄƒ È™ir"
+
+#: dwarf2.c:4428
+#, c-format
+msgid "DWARF error: found dwarf version '%u', this reader only handles version 2, 3, 4 and 5 information"
+msgstr "eroare DWARF: a fost gÄƒsit Â«dwarfÂ» versiunea â€ž%uâ€�, acest cititor gestioneazÄƒ doar informaÈ›iile despre versiunile 2, 3, 4 È™i 5"
+
+#: dwarf2.c:4475
+#, c-format
+msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
+msgstr "eroare DWARF: s-a gÄƒsit adresa cu dimensiunea â€ž%uâ€�, acest cititor nu poate gestiona dimensiuni mai mari de â€ž%uâ€�"
+
+#: ecoff.c:1005
+#, c-format
+msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
+msgstr "%pB: avertisment: isymMax (%ld) este mai mare decÃ¢t ifdMax (%ld)"
+
+#: ecoff.c:1301
+#, c-format
+msgid "unknown basic type %d"
+msgstr "tip de bazÄƒ necunoscut %d"
+
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %ld"
 msgstr ""
 "\n"
-"      Simbol Sfârºit+1: %ld"
+"      Simbol SfÃ¢rÈ™it+1: %ld"
 
-#: ecoff.c:1606 ecoff.c:1609
+#: ecoff.c:1566 ecoff.c:1569
 #, c-format
 msgid ""
 "\n"
@@ -533,16 +799,16 @@ msgstr ""
 "\n"
 "      Primul simbol: %ld"
 
-#: ecoff.c:1621
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
 "      End+1 symbol: %-7ld   Type:  %s"
 msgstr ""
 "\n"
-"      Simbol Sfârºit+1: %-7ld   Tip:  %s"
+"      Simbol SfÃ¢rÈ™it+1: %-7ld   Tip:  %s"
 
-#: ecoff.c:1628
+#: ecoff.c:1592
 #, c-format
 msgid ""
 "\n"
@@ -551,34 +817,34 @@ msgstr ""
 "\n"
 "      Simbol local: %ld"
 
-#: ecoff.c:1636
+#: ecoff.c:1600
 #, c-format
 msgid ""
 "\n"
 "      struct; End+1 symbol: %ld"
 msgstr ""
 "\n"
-"      struct; Simbol Sfârºit+1: %ld"
+"      struct; Simbol SfÃ¢rÈ™it+1: %ld"
 
-#: ecoff.c:1641
+#: ecoff.c:1605
 #, c-format
 msgid ""
 "\n"
 "      union; End+1 symbol: %ld"
 msgstr ""
 "\n"
-"      uniune; Simbol Sfârºit+1: %ld"
+"      union; Simbol SfÃ¢rÈ™it+1: %ld"
 
-#: ecoff.c:1646
+#: ecoff.c:1610
 #, c-format
 msgid ""
 "\n"
 "      enum; End+1 symbol: %ld"
 msgstr ""
 "\n"
-"      enum; Simbol Sfârºit+1: %ld"
+"      enum; Simbol SfÃ¢rÈ™it+1: %ld"
 
-#: ecoff.c:1652
+#: ecoff.c:1618
 #, c-format
 msgid ""
 "\n"
@@ -587,2247 +853,8781 @@ msgstr ""
 "\n"
 "      Tip: %s"
 
-#: elf-hppa.h:1458 elf-hppa.h:1491 elf-m10300.c:1628 elf64-sh64.c:1704
+#: elf-attrs.c:424 elf-attrs.c:454 elf-attrs.c:596
+msgid "error adding attribute"
+msgstr "eroare la adÄƒugarea atributului"
+
+#: elf-attrs.c:513
 #, c-format
-msgid "%s: warning: unresolvable relocation against symbol `%s' from %s section"
-msgstr "%s: avertisment: relocare nerezolvabilã pe simbolul `%s; din secþiunea `%s'"
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr "%pB: eroare: lungimea secÈ›iunii de atribut prea micÄƒ: %ld"
 
-#: elf-m10200.c:442 elf-m10300.c:1695 elf32-arm.h:2088 elf32-avr.c:812
-#: elf32-cris.c:1390 elf32-d10v.c:570 elf32-fr30.c:634 elf32-frv.c:815
-#: elf32-h8300.c:528 elf32-i860.c:1028 elf32-ip2k.c:1586 elf32-iq2000.c:699
-#: elf32-m32r.c:1283 elf32-m68hc1x.c:1305 elf32-msp430.c:510
-#: elf32-openrisc.c:436 elf32-v850.c:1777 elf32-xstormy16.c:976
-#: elf64-mmix.c:1332
+#: elf-attrs.c:623
+#, c-format
+msgid "%pB: error: attribute section '%pA' too big: %#llx"
+msgstr "%pB: eroare: secÈ›iunea de atribut â€ž%pAâ€� prea mare: %#llx"
+
+#: elf-attrs.c:642
+#, c-format
+msgid "%pB: error: unknown attributes version '%c'(%d) - expecting 'A'\n"
+msgstr "%pB: eroare: versiune necunoscutÄƒ a atributelor â€ž%câ€�(%d) - se aÈ™tepta â€žAâ€�\n"
+
+#: elf-attrs.c:688
+#, c-format
+msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
+msgstr "eroare: %pB: obiectul are conÈ›inut specific furnizorului care trebuie procesat de lanÈ›ul de instrumente â€ž%sâ€�"
+
+#: elf-attrs.c:698
+#, c-format
+msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'"
+msgstr "eroare: %pB: eticheta obiectului â€ž%d, %sâ€� este incompatibilÄƒ cu eticheta â€ž%d, %sâ€�"
+
+#: elf-eh-frame.c:952
+#, c-format
+msgid "discarding zero address range FDE in %pB(%pA).\n"
+msgstr "eliminÃ¢nd intervalul de adrese zero FDE Ã®n %pB(%pA).\n"
+
+#: elf-eh-frame.c:1057
+#, c-format
+msgid "error in %pB(%pA); no .eh_frame_hdr table will be created"
+msgstr "eroare Ã®n %pB(%pA); nu va fi creat nici un tabel .eh_frame_hdr"
+
+#: elf-eh-frame.c:1548
+#, c-format
+msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created"
+msgstr "codificarea FDE Ã®n %pB(%pA) Ã®mpiedicÄƒ crearea tabelului .eh_frame_hdr"
+
+#: elf-eh-frame.c:1555
+msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
+msgstr "avertismentele suplimentare despre codificarea FDE care Ã®mpiedicÄƒ generarea .eh_frame_hdr au fost omise"
+
+#: elf-eh-frame.c:1878
+#, c-format
+msgid "%pB: %pA not in order"
+msgstr "%pB: %pA nu este Ã®n ordine"
+
+#: elf-eh-frame.c:1892
+#, c-format
+msgid "%pB: %pA invalid input section size"
+msgstr "%pB: %pA dimensiunea secÈ›iunii de intrare nu este validÄƒ"
+
+#: elf-eh-frame.c:1900
+#, c-format
+msgid "%pB: %pA points past end of text section"
+msgstr "%pB: %pA indicÄƒ dincolo de sfÃ¢rÈ™itul secÈ›iunii de text"
+
+#: elf-eh-frame.c:2153
+msgid "DW_EH_PE_datarel unspecified for this architecture"
+msgstr "DW_EH_PE_datarel nespecificat pentru aceastÄƒ arhitecturÄƒ"
+
+#: elf-eh-frame.c:2323
+#, c-format
+msgid "invalid output section for .eh_frame_entry: %pA"
+msgstr "secÈ›iune de ieÈ™ire nevalidÄƒ pentru .eh_frame_entry: %pA"
+
+#: elf-eh-frame.c:2346
+#, c-format
+msgid "invalid contents in %pA section"
+msgstr "conÈ›inut nevalid Ã®n secÈ›iunea %pA"
+
+#: elf-eh-frame.c:2500
+msgid ".eh_frame_hdr entry overflow"
+msgstr "depÄƒÈ™ire de intrare .eh_frame_hdr"
+
+#: elf-eh-frame.c:2502
+msgid ".eh_frame_hdr refers to overlapping FDEs"
+msgstr ".eh_frame_hdr se referÄƒ la FDE-uri suprapuse"
+
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1713
+#, c-format
+msgid "%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: simbolul STT_GNU_IFUNC dinamic â€ž%sâ€� cu egalitatea indicatorului Ã®n â€ž%pBâ€� nu poate fi folosit cÃ¢nd se creeazÄƒ un executabil; recompilaÈ›i cu â€ž-fPIEâ€� È™i reeditaÈ›i legÄƒturile cu â€ž-pieâ€�\n"
+
+#: elf-m10200.c:434 elf-m10300.c:2146 elf32-bfin.c:3132 elf32-cr16.c:1429
+#: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624
+#: elf32-m32r.c:2839 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1983
+#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6099
+#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5084
+#: elf32-tilepro.c:3371 elf32-v850.c:2297 elf32-visium.c:680
+#: elf32-xstormy16.c:931 elf64-bpf.c:339 elf64-mmix.c:1537 elfxx-tilegx.c:3744
 msgid "internal error: out of range error"
-msgstr "eroare internã: eroare depãºire de domeniu(out of range)"
+msgstr "eroare internÄƒ: eroare Ã®n afara intervalului"
 
-#: elf-m10200.c:446 elf-m10300.c:1699 elf32-arm.h:2092 elf32-avr.c:816
-#: elf32-cris.c:1394 elf32-d10v.c:574 elf32-fr30.c:638 elf32-frv.c:819
-#: elf32-h8300.c:532 elf32-i860.c:1032 elf32-iq2000.c:703 elf32-m32r.c:1287
-#: elf32-m68hc1x.c:1309 elf32-msp430.c:514 elf32-openrisc.c:440
-#: elf32-v850.c:1781 elf32-xstormy16.c:980 elf64-mmix.c:1336 elfxx-mips.c:6452
+#: elf-m10200.c:438 elf-m10300.c:2150 elf32-bfin.c:3136 elf32-cr16.c:1433
+#: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2843 elf32-m68hc1x.c:1275
+#: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681 elf32-moxie.c:292
+#: elf32-msp430.c:1510 elf32-nds32.c:6103 elf32-or1k.c:1899 elf32-score.c:2728
+#: elf32-score7.c:2539 elf32-spu.c:5088 elf32-tilepro.c:3375 elf32-v850.c:2301
+#: elf32-visium.c:684 elf32-xstormy16.c:935 elf64-mmix.c:1541
+#: elfxx-mips.c:10727 elfxx-tilegx.c:3748
 msgid "internal error: unsupported relocation error"
-msgstr "eroare internã: eroare de relocare nesuportatã"
+msgstr "eroare internÄƒ: eroare de realocare neacceptatÄƒ"
 
-#: elf-m10200.c:450 elf-m10300.c:1703 elf32-arm.h:2096 elf32-d10v.c:578
-#: elf32-h8300.c:536 elf32-m32r.c:1291 elf32-m68hc1x.c:1313
+#: elf-m10200.c:442 elf32-cr16.c:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2847 elf32-m68hc1x.c:1279
+#: elf32-microblaze.c:1685 elf32-nds32.c:6107 elf32-score.c:2732
+#: elf32-score7.c:2543 elf32-spu.c:5092
 msgid "internal error: dangerous error"
-msgstr "eroare internã: eroare periculoasã"
+msgstr "eroare internÄƒ: eroare periculoasÄƒ"
 
-#: elf-m10200.c:454 elf-m10300.c:1707 elf32-arm.h:2100 elf32-avr.c:824
-#: elf32-cris.c:1402 elf32-d10v.c:582 elf32-fr30.c:646 elf32-frv.c:827
-#: elf32-h8300.c:540 elf32-i860.c:1040 elf32-ip2k.c:1601 elf32-iq2000.c:711
-#: elf32-m32r.c:1295 elf32-m68hc1x.c:1317 elf32-msp430.c:522
-#: elf32-openrisc.c:448 elf32-v850.c:1801 elf32-xstormy16.c:988
-#: elf64-mmix.c:1344
+#: elf-m10200.c:446 elf-m10300.c:2167 elf32-bfin.c:3144 elf32-cr16.c:1441
+#: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636
+#: elf32-m32r.c:2851 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1995
+#: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518 elf32-mt.c:410
+#: elf32-nds32.c:6111 elf32-or1k.c:1907 elf32-score.c:2741 elf32-score7.c:2547
+#: elf32-spu.c:5096 elf32-tilepro.c:3383 elf32-v850.c:2321 elf32-visium.c:692
+#: elf32-xstormy16.c:943 elf64-bpf.c:352 elf64-mmix.c:1549 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
-msgstr "eroare internã: eroare necunoscutã"
+msgstr "eroare internÄƒ: eroare necunoscutÄƒ"
+
+#: elf-m10300.c:1030
+#, c-format
+msgid "%pB: unsupported transition from %s to %s"
+msgstr "%pB: tranziÈ›ie neacceptatÄƒ de la %s la %s"
+
+#: elf-m10300.c:1197
+#, c-format
+msgid "%pB: %s' accessed both as normal and thread local symbol"
+msgstr "%pB: %s a fost accesat atÃ¢t ca simbol local normal, cÃ¢t È™i ca simbol local al firului de execuÈ›ie"
+
+#: elf-m10300.c:2093 elf32-arm.c:13476 elf32-i386.c:3545 elf32-m32r.c:2333
+#: elf32-m68k.c:3931 elf32-s390.c:3074 elf32-sh.c:3674 elf32-tilepro.c:3274
+#: elf32-xtensa.c:3022 elf64-s390.c:3391 elf64-x86-64.c:5025 elfxx-sparc.c:2924
+#: elfxx-sparc.c:3820 elfxx-tilegx.c:3667 elfnn-aarch64.c:5743
+#: elfnn-aarch64.c:7361 elfnn-kvx.c:2773
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): realocare %s nerezolvatÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�"
+
+#: elf-m10300.c:2155
+msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
+msgstr "eroare: tip de realocare neadecvat pentru biblioteca partajatÄƒ (aÈ›i uitat sÄƒ adÄƒugaÈ›i opÈ›iunea â€ž-fpicâ€�?)"
+
+#: elf-m10300.c:2159
+#, c-format
+msgid "%pB: taking the address of protected function '%s' cannot be done when making a shared library"
+msgstr "%pB: obÈ›inerea adresei funcÈ›iei protejate â€ž%sâ€� nu poate fi fÄƒcutÄƒ atunci cÃ¢nd se creeazÄƒ o bibliotecÄƒ partajatÄƒ"
+
+#: elf-m10300.c:2162
+msgid "internal error: suspicious relocation type used in shared library"
+msgstr "eroare internÄƒ: tip de realocare suspect utilizat Ã®n biblioteca partajatÄƒ"
+
+#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5627 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2691 reloc.c:8376 reloc16.c:155 elfnn-ia64.c:365
+msgid "%P: --relax and -r may not be used together\n"
+msgstr "%F: opÈ›iunile â€ž--relaxâ€� È™i â€ž-râ€� nu pot fi folosite Ã®mpreunÄƒ\n"
+
+#: elf-properties.c:121
+#, c-format
+msgid "%pB: out of memory in _bfd_elf_get_property"
+msgstr "%pB: memorie insuficientÄƒ Ã®n _bfd_elf_get_property"
+
+#: elf-properties.c:150
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
+msgstr "avertisment: %pB: dimensiunea GNU_PROPERTY_TYPE (%ld) este coruptÄƒ: %#lx"
+
+#: elf-properties.c:171
+#, c-format
+msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x"
+msgstr "avertisment: %pB: GNU_PROPERTY_TYPE corupt (%ld), tip (0x%x), dimensiunea datelor: 0x%x"
+
+#: elf-properties.c:210
+#, c-format
+msgid "warning: %pB: corrupt stack size: 0x%x"
+msgstr "avertisment: %pB: dimensiunea stivei corupte: 0x%x"
+
+#: elf-properties.c:228
+#, c-format
+msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
+msgstr "avertisment: %pB: corupt,  â€žnu este protejat la copiereâ€�, dimensiune: 0x%x"
+
+#: elf-properties.c:243
+#, c-format
+msgid "warning: %pB: corrupt memory sealing size: 0x%x"
+msgstr "avertisment: %pB: dimensiunea memoriei sigilate corupte: 0x%x"
+
+#: elf-properties.c:262
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr "eroare: %pB: <dimensiunea proprietÄƒÈ›ii (0x%x) este coruptÄƒ: 0x%x>"
+
+#: elf-properties.c:287
+#, c-format
+msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
+msgstr "avertisment: %pB: tip GNU_PROPERTY_TYPE (%ld) neacceptat: 0x%x"
+
+#: elf-properties.c:467
+msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr "Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB (0x%v) È™i %pB (0x%v)\n"
+
+#: elf-properties.c:473
+msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
+msgstr "Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB (0x%v) È™i %pB (nu a fost gÄƒsitÄƒ)\n"
+
+#: elf-properties.c:482 elf-properties.c:560
+msgid "Removed property %W to merge %pB and %pB\n"
+msgstr "Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB È™i %pB\n"
+
+#: elf-properties.c:486
+msgid "Removed property %W to merge %pB and %pB (not found)\n"
+msgstr "Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB È™i %pB (nu a fost gÄƒsitÄƒ)\n"
+
+#: elf-properties.c:503
+msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n"
+msgstr "S-a actualizat proprietatea %W (0x%v) pentru a fuziona %pB (0x%v) È™i %pB (0x%v)\n"
+
+#: elf-properties.c:512
+msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n"
+msgstr "S-a actualizat proprietatea %W (%v) pentru a fuziona %pB (0x%v) È™i %pB (nu a fost gÄƒsitÄƒ)\n"
+
+#: elf-properties.c:554
+msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
+msgstr "Proprietatea %W a fost eliminatÄƒ pentru a fuziona %pB (negÄƒsitÄƒ) È™i %pB (0x%v)\n"
+
+#: elf-properties.c:693 elfxx-aarch64.c:765
+msgid "%P: failed to create %s\n"
+msgstr "%P: nu s-a putut crea %s\n"
+
+#. Merge .note.gnu.property sections.
+#: elf-properties.c:798 elf-properties.c:800
+msgid "\n"
+msgstr "\n"
+
+#: elf-properties.c:799
+msgid "Merging program properties\n"
+msgstr "Se Ã®mbinÄƒ proprietÄƒÈ›ile programului\n"
+
+#: elf-sframe.c:201
+#, c-format
+msgid "error in %pB(%pA); unexpected SFrame section type"
+msgstr "eroare Ã®n %pB(%pA); tip de secÈ›iune SFrame neaÈ™teptat"
+
+#: elf-sframe.c:252
+#, c-format
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr "eroare Ã®n %pB(%pA); nu va fi creat niciun .sframe"
+
+#: elf-sframe.c:426
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr "secÈ›iunile de intrare SFrame cu abi diferite Ã®mpiedicÄƒ generarea .sframe"
+
+#: elf-sframe.c:437
+msgid "input SFrame sections with different format versions prevent .sframe generation"
+msgstr "secÈ›iunile de intrare SFrame cu versiuni de format diferite Ã®mpiedicÄƒ generarea .sframe"
+
+#: elf-sframe.c:450
+msgid "SFrame sections with unexpected data encoding prevent .sframe generation"
+msgstr "secÈ›iunile SFrame cu o codificare neaÈ™teptatÄƒ a datelor Ã®mpiedicÄƒ generarea .sframe"
+
+#: elf.c:299
+#, c-format
+msgid "%pB: string table [%u] is corrupt"
+msgstr "%pB: tabelul de È™iruri [%u] este corupt"
+
+#. PR 17512: file: f057ec89.
+#: elf.c:328
+#, c-format
+msgid "%pB: attempt to load strings from a non-string section (number %d)"
+msgstr "%pB: Ã®ncercare de-a Ã®ncÄƒrca È™iruri dintr-o secÈ›iune fÄƒrÄƒ È™iruri (numÄƒrul %d)"
+
+#: elf.c:353
+#, c-format
+msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
+msgstr "%pB: decalaj de È™ir nevalid %u >= %<PRIu64> pentru secÈ›iunea â€ž%sâ€�"
+
+#: elf.c:512 elf32-arm.c:17779 elfnn-aarch64.c:8361 elfnn-loongarch.c:6449
+#: elfnn-riscv.c:3885
+#, c-format
+msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
+msgstr "%pB numÄƒrul simbol %lu face referire la secÈ›iunea SHT_SYMTAB_SHNDX inexistentÄƒ"
+
+#: elf.c:526
+#, c-format
+msgid "%pB symbol number %lu uses unsupported binding of %u"
+msgstr "simbolul %pB cu numÄƒrul %lu foloseÈ™te o legÄƒturÄƒ neacceptatÄƒ a lui %u"
+
+#: elf.c:538
+#, c-format
+msgid "%pB symbol number %lu uses unsupported type of %u"
+msgstr "simbolul %pB cu numÄƒrul %lu utilizeazÄƒ un tip de %u neacceptat"
+
+#: elf.c:641
+#, c-format
+msgid "%pB: could not read contents of group [%u]"
+msgstr "%pB: nu s-a putut citi conÈ›inutul grupului [%u]"
+
+#: elf.c:672
+#, c-format
+msgid "%pB: invalid entry (%#x) in group [%u]"
+msgstr "%pB: intrare nevalidÄƒ (%#x) Ã®n grupul [%u]"
+
+#: elf.c:691
+#, c-format
+msgid "%pB: unexpected type (%#x) section `%s' in group [%u]"
+msgstr "%pB: tip neaÈ™teptat (%#x) Ã®n secÈ›iunea â€ž%sâ€� din grupul [%u]"
+
+#: elf.c:767
+#, c-format
+msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
+msgstr "%pB: sh_link [%d] din secÈ›iunea â€ž%pAâ€� este incorect"
+
+#: elf.c:796
+#, c-format
+msgid "%pB: section group entry number %u is corrupt"
+msgstr "%pB: numÄƒrul de intrare al grupului de secÈ›iune %u este corupt"
+
+#: elf.c:1078
+#, c-format
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr "%pB: secÈ›iunea %s este comprimatÄƒ cu zstd, dar BFD nu este construit cu suport pentru zstd"
 
-#: elf.c:372
+#: elf.c:1264
 #, c-format
-msgid "%s: invalid string offset %u >= %lu for section `%s'"
-msgstr "%s: offset de ºir invalid %u >= %lu pentru secþiunea `%s'"
+msgid "%pB: invalid sh_link field (%d) in section number %d"
+msgstr "%pB: cÃ¢mp sh_link nevalid (%d) Ã®n secÈ›iunea numÄƒrul %d"
 
-#: elf.c:624
+#: elf.c:1280
 #, c-format
-msgid "%s: invalid SHT_GROUP entry"
-msgstr "%s: intrare SHT_GROUP invalidã"
+msgid "%pB: failed to find link section for section %d"
+msgstr "%pB: nu s-a gÄƒsit secÈ›iunea de legÄƒturÄƒ pentru secÈ›iunea %d"
 
-#: elf.c:695
+#: elf.c:1307
 #, c-format
-msgid "%s: no group info for section %s"
-msgstr "%s nu existã informaþii de grup pentru secþiunea %s"
+msgid "%pB: failed to find info section for section %d"
+msgstr "%pB: nu s-a gÄƒsit secÈ›iunea de informaÈ›ii pentru secÈ›iunea %d"
 
-#: elf.c:1055
+#: elf.c:1484
+#, c-format
 msgid ""
 "\n"
 "Program Header:\n"
 msgstr ""
 "\n"
-"Header Program:\n"
+"Antetul programului:\n"
 
-#: elf.c:1106
+#: elf.c:1526
+#, c-format
 msgid ""
 "\n"
 "Dynamic Section:\n"
 msgstr ""
 "\n"
-"Secþiune Dinamicã:\n"
+"SecÈ›iune dinamicÄƒ:\n"
 
-#: elf.c:1235
+#: elf.c:1665
+#, c-format
 msgid ""
 "\n"
 "Version definitions:\n"
 msgstr ""
 "\n"
-"Definiþii de versiune:\n"
+"DefiniÈ›ii de versiune:\n"
 
-#: elf.c:1258
+#: elf.c:1690
+#, c-format
 msgid ""
 "\n"
 "Version References:\n"
 msgstr ""
 "\n"
-"Referinþe Versiune:\n"
+"ReferinÈ›e de versiune:\n"
 
-#: elf.c:1263
+#: elf.c:1695
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  cerute de %s:\n"
 
 #: elf.c:1944
 #, c-format
-msgid "%s: invalid link %lu for reloc section %s (index %u)"
-msgstr "%s: link invalid %lu pentru secþiunea de relocare %s (index %u)"
+msgid "%pB: DT_STRTAB table is corrupt"
+msgstr "%pB: tabelul DT_STRTAB este corupt"
+
+#: elf.c:2451
+#, c-format
+msgid "%pB: warning: loop in section dependencies detected"
+msgstr "%pB: avertisment: buclÄƒ Ã®n dependenÈ›e de secÈ›iune detectatÄƒ"
+
+#: elf.c:2559
+#, c-format
+msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
+msgstr "%pB: avertisment: multiple tabele de simboluri detectate - se ignorÄƒ tabelul din secÈ›iunea %u"
+
+#: elf.c:2644
+#, c-format
+msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
+msgstr "%pB: avertisment: multiple tabele de simboluri dinamice detectate - se ignorÄƒ tabelul din secÈ›iunea %u"
+
+#: elf.c:2763
+#, c-format
+msgid "%pB: invalid link %u for reloc section %s (index %u)"
+msgstr "%pB: legÄƒturÄƒ nevalidÄƒ %u pentru secÈ›iunea de realocare %s (index %u)"
+
+#: elf.c:2820
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: avertisment: secÈ›iunea secundarÄƒ de realocare â€ž%sâ€� pentru secÈ›iunea %pA, a fost gÄƒsitÄƒ - se ignorÄƒ"
 
-#: elf.c:3686
+#: elf.c:2905 elf.c:2919 elf.c:2930 elf.c:2943
 #, c-format
-msgid "%s: Not enough room for program headers (allocated %u, need %u)"
-msgstr "%s: Memorie insuficientã pentru headerele programului (alocatã %u, necesarã %u)"
+msgid "%pB: unknown type [%#x] section `%s'"
+msgstr "%pB: tip necunoscut [%#x] de secÈ›iune â€ž%sâ€�"
 
-#: elf.c:3791
+#: elf.c:3614
 #, c-format
-msgid "%s: Not enough room for program headers, try linking with -N"
-msgstr "%s: Memorie insuficientã pentru headerele programului, încercaþi linkuirea cu -N"
+msgid "%pB: error: alignment power %d of section `%pA' is too big"
+msgstr "%pB: eroare: puterea de aliniere %d a secÈ›iunii â€ž%pAâ€� este prea mare"
 
-#: elf.c:3922
+#: elf.c:3649
 #, c-format
-msgid "Error: First section in segment (%s) starts at 0x%x whereas the segment starts at 0x%x"
-msgstr "Eroare: prima secþiune în segment (%s) începe la 0x%x pe când segmentul începe la 0x%x"
+msgid "warning: section `%pA' type changed to PROGBITS"
+msgstr "avertisment: tipul secÈ›iunii â€ž%pAâ€� a fost schimbat Ã®n PROGBITS"
+
+#: elf.c:3981
+#, c-format
+msgid "%pB: corrupted group section: `%pA'"
+msgstr "%pB: secÈ›iune de grup coruptÄƒ â€ž%pAâ€�"
+
+#: elf.c:4156
+#, c-format
+msgid "%pB: too many sections: %u"
+msgstr "%pB: prea multe secÈ›iuni: %u"
 
 #: elf.c:4242
 #, c-format
-msgid "%s: warning: allocated section `%s' not in segment"
-msgstr "%s: avertisment: secþiunea alocatã `%s' nu este în segment"
+msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
+msgstr "%pB: sh_link a secÈ›iunii â€ž%pAâ€� indicÄƒ cÄƒtre secÈ›iunea Ã®nlÄƒturatÄƒ â€ž%pAâ€� din â€ž%pBâ€�"
+
+#: elf.c:4260
+#, c-format
+msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'"
+msgstr "%pB: sh_link a secÈ›iunii â€ž%pAâ€� indicÄƒ cÄƒtre secÈ›iunea eliminatÄƒ â€ž%pAâ€� din â€ž%pBâ€�"
+
+#: elf.c:4860
+#, c-format
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr "%pB: secÈ›iunea GNU_MBIND â€ž%pAâ€� are cÃ¢mpul sh_info nevalid: %d"
+
+#: elf.c:5043
+msgid "%P: failed to size relative relocations\n"
+msgstr "%P: eÈ™ec la dimensionarea realocÄƒrilor relative\n"
+
+#: elf.c:5470
+#, c-format
+msgid "%pB: TLS sections are not adjacent:"
+msgstr "%pB: secÈ›iunile TLS nu sunt adiacente:"
+
+#: elf.c:5477
+#, c-format
+msgid "\t    TLS: %pA"
+msgstr "\t    TLS: %pA"
+
+#: elf.c:5481
+#, c-format
+msgid "\tnon-TLS: %pA"
+msgstr "\tnon-TLS: %pA"
+
+#: elf.c:6103
+#, c-format
+msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
+msgstr "%pB: prima secÈ›iune din segmentul PT_DYNAMIC nu este secÈ›iunea .dynamic"
+
+#: elf.c:6129
+#, c-format
+msgid "%pB: not enough room for program headers, try linking with -N"
+msgstr "%pB: nu este suficient spaÈ›iu pentru antetele programului, Ã®ncercaÈ›i sÄƒ faceÈ›i editarea legÄƒturilor cu opÈ›iunea â€ž-Nâ€�"
 
-#: elf.c:4566
+#: elf.c:6256
 #, c-format
-msgid "%s: symbol `%s' required but not present"
-msgstr "%s: simbolul `%s' necesar, dar nu este prezent"
+msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
+msgstr "%pB: secÈ›iunea %pA cu lma %#<PRIx64> ajustatÄƒ la %#<PRIx64>"
 
-#: elf.c:4854
+#. 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:6397
 #, c-format
-msgid "%s: warning: Empty loadable segment detected, is this intentional ?\n"
-msgstr "%s: avertisment: S-a detectat segment încãrcabil vid, este intenþionat ?\n"
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: eroare: segmentul PHDR nu este acoperit de segmentul LOAD"
 
-#: elf.c:5485
+#: elf.c:6437
 #, c-format
-msgid "Unable to find equivalent output section for symbol '%s' from section '%s'"
-msgstr "Nnu am putut gãsi secþiunea de output echivalentã pentru simbolul '%s' din secþiunea '%s'"
+msgid "%pB: section `%pA' can't be allocated in segment %u"
+msgstr "%pB: secÈ›iunea â€ž%pAâ€� nu poate fi alocatÄƒ Ã®n segmentul %u"
 
-#: elf.c:6298
+#: elf.c:6575
 #, c-format
-msgid "%s: unsupported relocation type %s"
-msgstr "%s: tip de relocare nesuportat: %s"
+msgid "%pB: warning: allocated section `%s' not in segment"
+msgstr "%pB: avertisment: secÈ›iunea alocatÄƒ â€ž%sâ€� nu este Ã®n segment"
 
-#: elf32-arm.h:1228
+#: elf.c:6710
 #, c-format
-msgid "%s: Warning: Arm BLX instruction targets Arm function '%s'."
-msgstr "%s: Avertisment: BLX Arm are ca þintã funcþia Arm `%s'."
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr "%pB: avertisment: nu se poate aloca nicio secÈ›iune segmentului PT_GNU_RELRO"
 
-#: elf32-arm.h:1424
+#: elf.c:6741
 #, c-format
-msgid "%s: Warning: Thumb BLX instruction targets thumb function '%s'."
-msgstr "%s: Avertisment: BLX Thumb are ca þintã funcþia thumb `%s'."
+msgid "%pB: error: non-load segment %d includes file header and/or program header"
+msgstr "%pB: eroare: segmentul neÃ®ncÄƒrcat %d include antetul fiÈ™ierului È™i/sau antetul programului"
 
-#: elf32-arm.h:1918 elf32-sh.c:4706 elf64-sh64.c:1613
+#: elf.c:6894
 #, c-format
-msgid "%s(%s+0x%lx): %s relocation against SEC_MERGE section"
-msgstr "%s(%s+0x%lx): %s relocare pe secþiunea SEC_MERGE"
+msgid "error: %pB has a TLS segment with execute permission"
+msgstr "eroare: %pB are un segment TLS cu permisiune de execuÈ›ie"
 
-#: elf32-arm.h:2012
+#: elf.c:6900
 #, c-format
-msgid "%s: warning: unresolvable relocation %d against symbol `%s' from %s section"
-msgstr "%s: avertisment: relocare nerezolvabilã %d pe simbolul `%s' din secþiunea %s"
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr "avertisment: %pB are un segment TLS cu permisiune de execuÈ›ie"
 
-#: elf32-arm.h:2202
+#: elf.c:6915
 #, c-format
-msgid "Warning: Clearing the interworking flag of %s because non-interworking code in %s has been linked with it"
-msgstr "Avertisment: Se ºterge marcajul(flag) de interlucru(interworking) al %s deoarece împreunã cu el a fost linkuit cod non-interlucru în %s"
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr "eroare: %pB are un segment LOAD cu permisiuni RWX(de citire-scriere-execuÈ›ie)"
 
-#: elf32-arm.h:2302
+#: elf.c:6921
 #, c-format
-msgid "ERROR: %s is compiled for EABI version %d, whereas %s is compiled for version %d"
-msgstr "EROARE: %s este compilat pentru EABI versiunea %d, pe când %s este compilat pentru versiunea %d"
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr "avertisment: %pB are un segment LOAD cu permisiuni RWX(de citire-scriere-execuÈ›ie)"
 
-#: elf32-arm.h:2316
+#: elf.c:7316
 #, c-format
-msgid "ERROR: %s is compiled for APCS-%d, whereas target %s uses APCS-%d"
-msgstr "EROARE: %s este compilat pentru APCS-%d, pe când þinta %s foloseºte APCS-%d"
+msgid "%pB: symbol `%s' required but not present"
+msgstr "%pB: simbolul â€ž%sâ€� este necesar, dar nu este prezent"
 
-#: elf32-arm.h:2344
+#: elf.c:7693
 #, c-format
-msgid "ERROR: %s uses VFP instructions, whereas %s does not"
-msgstr "EROARE: %s foloseºte instrucþiuni VFP, pe când %s nu le foloseºte"
+msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
+msgstr "%pB: avertisment: s-a detectat segment Ã®ncÄƒrcabil gol la vaddr=%#<PRIx64>, este aceasta intenÈ›ionat ?"
 
-#: elf32-arm.h:2349
+#: elf.c:8366
 #, c-format
-msgid "ERROR: %s uses FPA instructions, whereas %s does not"
-msgstr "EROARE: %s foloseºte instrucþiuni FPA, pe când %s nu le foloseºte"
+msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
+msgstr "%pB: avertisment: alinierea segmentului de %#<PRIx64> este prea mare"
 
-#: elf32-arm.h:2360 elf32-arm.h:2365
+#: elf.c:8848
 #, c-format
-msgid "ERROR: %s uses Maverick instructions, whereas %s does not"
-msgstr "EROARE: %s foloseºte instrucþiuni Maverick, pe când %s nu le foloseºte"
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: Nu se poate gestiona indexul secÈ›iunii %x Ã®n simbolul ELF.  Se utilizeazÄƒ ABS Ã®n locul acestuia."
 
-#: elf32-arm.h:2385
+#: elf.c:8878
 #, c-format
-msgid "ERROR: %s uses software FP, whereas %s uses hardware FP"
-msgstr "EROARE: %s foloseºte FP software, pe când %s foloseºte FP hardware"
+msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
+msgstr "nu se poate gÄƒsi secÈ›iunea de ieÈ™ire echivalentÄƒ pentru simbolul â€ž%sâ€� din secÈ›iunea â€ž%sâ€�"
 
-#: elf32-arm.h:2390
+#: elf.c:9311
 #, c-format
-msgid "ERROR: %s uses hardware FP, whereas %s uses software FP"
-msgstr "EROARE: %s foloseºte FP hardware, pe când %s foloseºte FP software"
+msgid "%pB: .gnu.version_r invalid entry"
+msgstr "%pB: intrare nevalidÄƒ .gnu.version_r"
+
+#: elf.c:9489
+#, c-format
+msgid "%pB: .gnu.version_d invalid entry"
+msgstr "%pB: intrare nevalidÄƒ .gnu.version_d"
+
+#: elf.c:9992
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: eroare: Ã®ncercare de a scrie dincolo de sfÃ¢rÈ™itul secÈ›iunii"
+
+#: elf.c:10004
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: eroare: Ã®ncercare de a scrie secÈ›iunea Ã®ntr-un fiÈ™ier de memorie tampon gol"
+
+#: elf.c:10119 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7666
+#: elf32-ppc.c:8854 elf64-ppc.c:16870
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: %s neacceptat"
+
+#: elf.c:10966
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr "%pB: avertisment: win32pstatus %s cu dimensiunea de %lu octeÈ›i este prea mic"
+
+#: elf.c:11045
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr "%pB: win32pstatus NOTE_INFO_MODULE cu dimensiunea de %lu este prea mic pentru a conÈ›ine un nume de dimensiunea %u"
+
+#: elf.c:13726
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr "secÈ›iunea GNU_MBIND este acceptatÄƒ doar de È›intele GNU È™i FreeBSD"
+
+#: elf.c:13729
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr "tipul de simbol STT_GNU_IFUNC este acceptat doar de È›intele GNU È™i FreeBSD"
+
+#: elf.c:13732
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr "asocierea simbolurilor STB_GNU_UNIQUE este acceptatÄƒ numai de È›intele GNU È™i FreeBSD"
+
+#: elf.c:13735
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr "secÈ›iunea GNU_RETAIN este acceptatÄƒ numai de È›intele GNU È™i FreeBSD"
+
+#: elf.c:13952
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr "%pB(%pA): realocarea %zu are indexul de simbol nevalid %lu"
+
+#: elf.c:14027
+#, c-format
+msgid "%pB(%pA): link section cannot be set because the output file does not have a symbol table"
+msgstr "%pB(%pA): secÈ›iunea de legÄƒturÄƒ nu poate fi definitÄƒ deoarece fiÈ™ierul de ieÈ™ire nu are un tabel de simboluri"
+
+#: elf.c:14041
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): indexul secÈ›iunii de informaÈ›ii este nevalid"
+
+#: elf.c:14055
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): indexul secÈ›iunii de informaÈ›ii nu poate fi definit deoarece secÈ›iunea nu se aflÄƒ Ã®n ieÈ™ire"
+
+#: elf.c:14131
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): eroare: secÈ›iunea de realocare secundarÄƒ a fost procesatÄƒ de douÄƒ ori"
+
+#: elf.c:14143
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr "%pB(%pA): eroare: secÈ›iunea de realocare secundarÄƒ are intrÄƒri de dimensiune zero"
+
+#: elf.c:14155
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr "%pB(%pA): eroare: secÈ›iunea de realocare secundarÄƒ are intrÄƒri de dimensiune nestandard"
+
+#: elf.c:14169
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): eroare: secÈ›iunea de realocare secundarÄƒ este goalÄƒ!"
+
+#: elf.c:14193
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): eroare: lipsesc realocÄƒrile interne pentru secÈ›iunea de realocare secundarÄƒ"
+
+#: elf.c:14213
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr "%pB(%pA): eroare: intrarea din tabelul de realocare %zu este goalÄƒ"
+
+#: elf.c:14238
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr "%pB(%pA): eroare: realocarea secundarÄƒ %zu face referire la un simbol lipsÄƒ"
+
+#: elf.c:14256
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr "%pB(%pA): eroare: realocarea secundarÄƒ %zu face referire la un simbol È™ters"
+
+#: elf.c:14270
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+msgstr "%pB(%pA): eroare: realocarea secundarÄƒ %zu este de un tip necunoscut"
 
 #. Ignore init flag - it may not be set, despite the flags field
 #. containing valid data.
-#: elf32-arm.h:2443 elf32-cris.c:2975 elf32-m68hc1x.c:1459 elf32-m68k.c:397
-#: elf32-vax.c:546 elfxx-mips.c:9238
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elf32-arc.c:454 elf32-arm.c:15198 elf32-frv.c:6618 elf32-iq2000.c:868
+#: elf32-m32c.c:915 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5531 elfnn-aarch64.c:7591
 #, c-format
-msgid "private flags = %lx:"
-msgstr "marcaje(flags) private = %lx:"
+msgid "private flags = 0x%lx:"
+msgstr "fanioane private = 0x%lx:"
+
+#: elf32-arc.c:641
+#, c-format
+msgid "warning: %pB: conflicting platform configuration %s with %s"
+msgstr "avertisment: %pB: configuraÈ›ia platformei %s Ã®n conflict cu %s"
+
+#: elf32-arc.c:660
+#, c-format
+msgid "error: %pB: unable to merge CPU base attributes %s with %s"
+msgstr "eroare: %pB: nu se pot fuziona atributele de bazÄƒ ale procesorului %s cu %s"
+
+#: elf32-arc.c:697
+#, c-format
+msgid "error: %pB: unable to merge ISA extension attributes %s"
+msgstr "eroare: %pB: nu se pot fuziona atributele extensiei ISA %s"
+
+#: elf32-arc.c:721
+#, c-format
+msgid "error: %pB: conflicting ISA extension attributes %s with %s"
+msgstr "eroare: %pB: atributele extensiei ISA Ã®n conflict %s cu %s"
+
+#: elf32-arc.c:761
+#, c-format
+msgid "error: %pB: cannot mix rf16 with full register set %pB"
+msgstr "eroare: %pB: nu se poate amesteca rf16 cu setul de registru complet %pB"
+
+#: elf32-arc.c:789
+#, c-format
+msgid "error: %pB: conflicting attributes %s: %s with %s"
+msgstr "eroare: %pB: atribute aflate Ã®n conflict %s: %s cu %s"
+
+#: elf32-arc.c:816
+#, c-format
+msgid "error: %pB: conflicting attributes %s"
+msgstr "eroare: %pB: atribute aflate Ã®n conflict %s"
+
+#: elf32-arc.c:921
+#, c-format
+msgid "error: attempting to link %pB with a binary %pB of different architecture"
+msgstr "eroare: Ã®ncercare de a vincula %pB cu un %pB binar de arhitecturÄƒ diferitÄƒ"
+
+#: elf32-arc.c:937 elf32-iq2000.c:844 elf32-m32c.c:890 elf32-m68hc1x.c:1390
+#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15766
+#, c-format
+msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
+msgstr "%pB: foloseÈ™te cÃ¢mpuri e_flags (%#x) diferite faÈ›Äƒ de modulele anterioare (%#x)"
+
+#: elf32-arc.c:1026
+msgid "error: the ARC4 architecture is no longer supported"
+msgstr "eroare: arhitectura ARC4 nu mai este demult acceptatÄƒ"
+
+#: elf32-arc.c:1032
+msgid "warning: unset or old architecture flags; use default machine"
+msgstr "avertisment: fanioane de arhitecturÄƒ nedefinite sau vechi; se utilizeazÄƒ maÈ™ina implicitÄƒ"
+
+#: elf32-arc.c:1158
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): CMEM relocation to `%s' is invalid, 16 MSB should be %#x (value is %#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): realocarea CMEM la â€ž%sâ€� este nevalidÄƒ, 16 MSB trebuie sÄƒ fie %#x (valoarea este %#<PRIx64>)"
+
+#: elf32-arc.c:1169
+#, 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>): realocarea CMEM la â€ž%s+%#<PRIx64>â€� este nevalidÄƒ, 16 MSB trebuie sÄƒ fie %#x (valoarea este %#<PRIx64>)"
+
+#: elf32-arc.c:1897
+msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
+msgstr "realocÄƒrile GOT È™i PLT nu pot fi remediate cu un editor de legÄƒturi non-dinamic"
+
+#: elf32-arc.c:1921 elf32-rx.c:1486
+#, c-format
+msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
+msgstr "%pB(%pA): avertisment: acces nealiniat la simbolul â€ž%sâ€� din zona de date micÄƒ"
+
+#: elf32-arc.c:1926 elf32-rx.c:1491
+#, c-format
+msgid "%pB(%pA): internal error: out of range error"
+msgstr "%pB(%pA): eroare internÄƒ: eroare Ã®n afara intervalului"
+
+#: elf32-arc.c:1931 elf32-rx.c:1496
+#, c-format
+msgid "%pB(%pA): internal error: unsupported relocation error"
+msgstr "%pB(%pA): eroare internÄƒ: eroare de realocare neacceptatÄƒ"
+
+#: elf32-arc.c:1936 elf32-rx.c:1501
+#, c-format
+msgid "%pB(%pA): internal error: dangerous relocation"
+msgstr "%pB(%pA):  eroare internÄƒ: realocare periculoasÄƒ"
+
+#: elf32-arc.c:1941 elf32-rx.c:1506
+#, c-format
+msgid "%pB(%pA): internal error: unknown error"
+msgstr "%pB(%pA): eroare internÄƒ: eroare necunoscutÄƒ"
+
+#: elf32-arc.c:2035 elf32-arc.c:2103 elf32-arm.c:15641 elf32-metag.c:2250
+#: elf32-nds32.c:5549 elfnn-aarch64.c:7998 elfnn-riscv.c:915
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC"
+msgstr "%pB: realocarea %s faÈ›Äƒ de â€ž%sâ€� nu poate fi utilizatÄƒ cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�"
+
+#: elf32-arc.c:2922
+#, c-format
+msgid "%pB: unknown mandatory ARC object attribute %d"
+msgstr "%pB: atribut de obiect ARC obligatoriu necunoscut %d"
+
+#: elf32-arc.c:2930
+#, c-format
+msgid "warning: %pB: unknown ARC object attribute %d"
+msgstr "avertisment: %pB: atribut al obiectului ARC necunoscut %d"
+
+#: elf32-arm.c:4367 elf32-arm.c:4401 elf32-arm.c:4420 elf32-arm.c:4472
+#, 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): avertisment: faÈ›etele(veneers) de ramuri lungi utilizate Ã®n secÈ›iunea cu atributul secÈ›iunii SHF_ARM_PURECODE sunt acceptate numai pentru È›inte cu profil M care implementeazÄƒ instrucÈ›iunea movw"
+
+#: elf32-arm.c:4432 elf32-arm.c:4486 elf32-arm.c:9185 elf32-arm.c:9275
+#, c-format
+msgid "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call to %s"
+msgstr "%pB(%s): avertisment: interfuncÈ›ionarea nu este activatÄƒ; prima apariÈ›ie: %pB: apel %s cÄƒtre %s"
+
+#: elf32-arm.c:4612
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "EROARE: ciot(stub) CMSE (secÈ›iunea %s) prea departe (%#<PRIx64>) faÈ›Äƒ de destinaÈ›ie (%#<PRIx64>)"
+
+#: elf32-arm.c:4781
+#, c-format
+msgid "no address assigned to the veneers output section %s"
+msgstr "nicio adresÄƒ nu este atribuitÄƒ secÈ›iunii de ieÈ™ire a faÈ›etelor(veneers) %s"
+
+#: elf32-arm.c:4856 elf32-arm.c:7005 elf32-csky.c:3387 elf32-hppa.c:581
+#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14180
+#: elfnn-aarch64.c:3200 elfnn-kvx.c:894
+#, c-format
+msgid "%pB: cannot create stub entry %s"
+msgstr "%pB: nu se poate crea intrarea ciot(stub) %s"
+
+#: elf32-arm.c:5077 elf32-csky.c:3729 elf32-hppa.c:731 elf32-hppa.c:760
+#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3346
+#: elf64-ppc.c:12297 elf64-ppc.c:12305 xcofflink.c:4723 elfnn-aarch64.c:3272
+msgid "%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: Nu s-a putut atribui â€ž%pAâ€� unei secÈ›iuni de ieÈ™ire. ReÃ®ncercaÈ›i fÄƒrÄƒ opÈ›iunea â€ž--enable-non-contiguous-regionsâ€�.\n"
+
+#: elf32-arm.c:6048
+#, c-format
+msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
+msgstr "%pB: simbolul special â€ž%sâ€� este permis doar pentru arhitectura ARMv8-M sau mai recentÄƒ"
+
+#: elf32-arm.c:6057
+#, c-format
+msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
+msgstr "%pB: simbol special nevalid â€ž%sâ€�; trebuie sÄƒ fie un simbol de funcÈ›ie globalÄƒ sau slabÄƒ"
+
+#: elf32-arm.c:6096
+#, c-format
+msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
+msgstr "%pB: simbol standard nevalid â€ž%sâ€�; trebuie sÄƒ fie un simbol de funcÈ›ie globalÄƒ sau slabÄƒ"
+
+#: elf32-arm.c:6102
+#, c-format
+msgid "%pB: absent standard symbol `%s'"
+msgstr "%pB: simbol standard absent â€ž%sâ€�"
+
+#: elf32-arm.c:6114
+#, c-format
+msgid "%pB: `%s' and its special symbol are in different sections"
+msgstr "%pB: â€ž%sâ€� È™i simbolul sÄƒu special sunt Ã®n secÈ›iuni diferite"
+
+#: elf32-arm.c:6126
+#, c-format
+msgid "%pB: entry function `%s' not output"
+msgstr "%pB: funcÈ›ia de intrare â€ž%sâ€� nu produce ieÈ™ire"
+
+#: elf32-arm.c:6133
+#, c-format
+msgid "%pB: entry function `%s' is empty"
+msgstr "%pB: funcÈ›ia de intrare â€ž%sâ€� este goalÄƒ"
+
+#: elf32-arm.c:6262
+#, c-format
+msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
+msgstr "%pB: â€ž--in-implibâ€� este acceptatÄƒ numai pentru bibliotecile de import Secure Gateway"
+
+#: elf32-arm.c:6311
+#, c-format
+msgid "%pB: invalid import library entry: `%s'; symbol should be absolute, global and refer to Thumb functions"
+msgstr "%pB: intrare in bibliotecÄƒ de import nevalidÄƒ: â€ž%sâ€�; simbolul trebuie sÄƒ fie absolut, global È™i sÄƒ se refere la funcÈ›iile Thumb"
+
+#: elf32-arm.c:6333
+#, c-format
+msgid "entry function `%s' disappeared from secure code"
+msgstr "funcÈ›ia de intrare â€ž%sâ€� a dispÄƒrut din codul securizat"
+
+#: elf32-arm.c:6357
+#, c-format
+msgid "`%s' refers to a non entry function"
+msgstr "â€ž%sâ€� se referÄƒ la ceva care nu este o funcÈ›ie de intrare"
+
+#: elf32-arm.c:6372
+#, c-format
+msgid "%pB: visibility of symbol `%s' has changed"
+msgstr "%pB: vizibilitatea simbolului â€ž%sâ€� s-a schimbat"
+
+#: elf32-arm.c:6381
+#, c-format
+msgid "%pB: incorrect size for symbol `%s'"
+msgstr "%pB: dimensiune incorectÄƒ pentru simbolul â€ž%sâ€�"
+
+#: elf32-arm.c:6400
+#, c-format
+msgid "offset of veneer for entry function `%s' not a multiple of its size"
+msgstr "decalajul faÈ›etei(veneer) pentru funcÈ›ia de intrare â€ž%sâ€� nu este un multiplu al mÄƒrimii sale"
+
+#: elf32-arm.c:6420
+msgid "new entry function(s) introduced but no output import library specified:"
+msgstr "au fost introduse funcÈ›ii de intrare noi, dar nu a fost specificatÄƒ nicio bibliotecÄƒ de import de ieÈ™ire:"
+
+#: elf32-arm.c:6428
+#, c-format
+msgid "start address of `%s' is different from previous link"
+msgstr "adresa de pornire a lui â€ž%sâ€� este diferitÄƒ de legÄƒtura anterioarÄƒ"
 
-#: elf32-arm.h:2452
+#: elf32-arm.c:7140 elf32-arm.c:7178
+#, c-format
+msgid "unable to find %s glue '%s' for '%s'"
+msgstr "nu se poate gÄƒsi %s liantul â€ž%sâ€� pentru â€ž%sâ€�"
+
+#: elf32-arm.c:7890
+#, c-format
+msgid "%pB: BE8 images only valid in big-endian mode"
+msgstr "%pB: imaginile BE8 sunt valabile numai Ã®n modul big-endian"
+
+#. Give a warning, but do as the user requests anyway.
+#: elf32-arm.c:8118
+#, c-format
+msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
+msgstr "%pB: avertisment: soluÈ›ia de eroare VFP11 selectatÄƒ nu este necesarÄƒ pentru arhitectura È›intÄƒ"
+
+#: elf32-arm.c:8145
+#, c-format
+msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
+msgstr "%pB: avertisment: soluÈ›ia de eroare STM32L4XX selectatÄƒ nu este necesarÄƒ pentru arhitectura È›intÄƒ"
+
+#: elf32-arm.c:8681 elf32-arm.c:8701 elf32-arm.c:8768 elf32-arm.c:8787
+#, c-format
+msgid "%pB: unable to find %s veneer `%s'"
+msgstr "%pB: nu s-a putut gÄƒsi %s faÈ›eta(veneer) â€ž%sâ€�"
+
+#: elf32-arm.c:8994
+#, 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): eroare: Ã®ncÄƒrcare multiplÄƒ detectatÄƒ Ã®n blocul de instrucÈ›iuni IT ce nu este ultimul: faÈ›eta(veneer) STM32L4XX nu poate fi generat; utilizaÈ›i opÈ›iunea â€žgcc -mrestrict-itâ€� pentru a genera o singurÄƒ instrucÈ›iune per bloc IT"
+
+#: elf32-arm.c:9092
+#, c-format
+msgid "invalid TARGET2 relocation type '%s'"
+msgstr "tip de realocare TARGET2 nevalid â€ž%sâ€�"
+
+#. FIXME: We ought to be able to generate thumb-1 PLT
+#. instructions...
+#: elf32-arm.c:9861
+#, c-format
+msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
+msgstr "%pB: avertisment: generarea PLT Ã®n modul thumb-1 nu este acceptatÄƒ Ã®n prezent"
+
+#: elf32-arm.c:10170 elf32-arm.c:10212
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune %s neaÈ™teptatÄƒ â€ž%#lxâ€� Ã®n trambulina TLS"
+
+#: elf32-arm.c:10493
+#, c-format
+msgid "warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "avertizare: %pB(%s): ForÈ›area bramch la simbol absolut Ã®n modul Thumb (CPU numai-Thumb) Ã®n %pB"
+
+#: elf32-arm.c:10498
+#, c-format
+msgid "warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "avertizare: (%s): ForÈ›area ramificÄƒrii cÄƒtre simbolul absolut Ã®n modul Thumb (CPU numai-Thumb) Ã®n %pB"
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "%pB(%s): Tip de destinaÈ›ie necunoscut (ARM/Thumb) Ã®n %pB"
+
+#: elf32-arm.c:10531
+#, c-format
+msgid "(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "(%s): Tip de destinaÈ›ie necunoscut (ARM/Thumb) Ã®n %pB"
+
+#: elf32-arm.c:10619
+msgid "shared object"
+msgstr "obiect partajat"
+
+#: elf32-arm.c:10622
+msgid "PIE executable"
+msgstr "executabil PIE"
+
+#: elf32-arm.c:10625
+#, 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: realocarea %s faÈ›Äƒ de simbolul extern sau nedefinit â€ž%sâ€� nu poate fi folositÄƒ la crearea unui %s; recompilaÈ›i cu â€ž-fPICâ€�"
+
+#: elf32-arm.c:10727
+#, c-format
+msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "\\%pB: avertisment: instrucÈ›iunea %s BLX vizeazÄƒ funcÈ›ia %s â€ž%sâ€�"
+
+#: elf32-arm.c:11144
+#, c-format
+msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "%pB: avertisment: instrucÈ›iunea %s BLX vizeazÄƒ funcÈ›ia %s â€ž%sâ€�"
+
+#: elf32-arm.c:11778
+#, c-format
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr "%pB: indicele de simbol aÈ™teptat Ã®n intervalul 0..%lu, dar a fost gÄƒsit un simbol local cu indicele %lu"
+
+#: elf32-arm.c:12053 elf32-arm.c:12079
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by TLS_GOTDESC"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune %s neaÈ™teptatÄƒ â€ž%#lxâ€� la care face referire TLS_GOTDESC"
+
+#: elf32-arm.c:12125 elf32-csky.c:4958 elf32-m68k.c:3735 elf32-metag.c:1912
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
+msgstr "%pB(%pA+%#<PRIx64>): realocarea %s nu este permisÄƒ Ã®n obiectul partajat"
+
+#: elf32-arm.c:12339
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group relocations"
+msgstr "%pB(%pA+%#<PRIx64>): numai instrucÈ›iunile ADD sau SUB sunt permise pentru realocÄƒri ale grupului ALU"
+
+#: elf32-arm.c:12380 elf32-arm.c:12472 elf32-arm.c:12560 elf32-arm.c:12650
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): depÄƒÈ™ire Ã®n timp ce se Ã®mparte %#<PRIx64> pentru realocarea grupului %s"
+
+#: elf32-arm.c:12708 elf32-arm.c:12867
+msgid "local symbol index too big"
+msgstr "indice de simbol local prea mare"
+
+#: elf32-arm.c:12718 elf32-arm.c:12752
+msgid "no dynamic index information available"
+msgstr "nu sunt disponibile informaÈ›ii despre indexul dinamic"
+
+#: elf32-arm.c:12760
+msgid "invalid dynamic index"
+msgstr "index dinamic nevalid"
+
+#: elf32-arm.c:12877
+msgid "dynamic index information not available"
+msgstr "informaÈ›iile despre indexul dinamic nu sunt disponibile"
+
+#: elf32-arm.c:13308 elf32-sh.c:3568
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
+msgstr "%pB(%pA+%#<PRIx64>): %s realocare faÈ›Äƒ de secÈ›iunea SEC_MERGE"
+
+#: elf32-arm.c:13421 elf32-m68k.c:3968 elf32-xtensa.c:2760 elfnn-aarch64.c:7088
+#: elfnn-kvx.c:2569
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
+msgstr "%pB(%pA+%#<PRIx64>): %s utilizat cu simbolul TLS %s"
+
+#: elf32-arm.c:13423 elf32-m68k.c:3970 elf32-xtensa.c:2762 elfnn-aarch64.c:7090
+#: elfnn-kvx.c:2571
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
+msgstr "%pB(%pA+%#<PRIx64>): %s utilizat cu simbolul non-TLS %s"
+
+#: elf32-arm.c:13506 elf32-tic6x.c:2641 elfnn-aarch64.c:7425 elfnn-kvx.c:2798
+msgid "out of range"
+msgstr "Ã®n afara intervalului"
+
+#: elf32-arm.c:13510 elf32-pru.c:936 elf32-tic6x.c:2645 elfnn-aarch64.c:7429
+#: elfnn-kvx.c:2802
+msgid "unsupported relocation"
+msgstr "realocare neacceptatÄƒ"
+
+#: elf32-arm.c:13518 elf32-pru.c:946 elf32-tic6x.c:2653 elfnn-aarch64.c:7437
+#: elfnn-kvx.c:2810
+msgid "unknown error"
+msgstr "eroare necunoscutÄƒ"
+
+#: elf32-arm.c:13995
+#, c-format
+msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
+msgstr "avertisment: nu se stabileÈ™te indicatorul de interfuncÈ›ionare pentru %pB, deoarece a fost deja specificat ca neinterfuncÈ›ionare"
+
+#: elf32-arm.c:13999
+#, c-format
+msgid "warning: clearing the interworking flag of %pB due to outside request"
+msgstr "avertisment: se È™terge indicatorul de interfuncÈ›ionare din %pB din cauza solicitÄƒrii externe"
+
+#: elf32-arm.c:14044
+#, c-format
+msgid "warning: clearing the interworking flag of %pB because non-interworking code in %pB has been linked with it"
+msgstr "avertisment: se È™terge indicatorul de interfuncÈ›ionare din %pB, deoarece codul care nu interfuncÈ›ioneazÄƒ Ã®n %pB a fost vinculat cu acesta"
+
+#: elf32-arm.c:14131
+#, c-format
+msgid "%pB: unknown mandatory EABI object attribute %d"
+msgstr "%pB: atribut de obiect EABI obligatoriu necunoscut %d"
+
+#: elf32-arm.c:14139
+#, c-format
+msgid "warning: %pB: unknown EABI object attribute %d"
+msgstr "avertisment: %pB: atribut necunoscut al obiectului EABI %d"
+
+#: elf32-arm.c:14474
+#, c-format
+msgid "error: %pB: unknown CPU architecture"
+msgstr "eroare: %pB: arhitecturÄƒ CPU necunoscutÄƒ"
+
+#: elf32-arm.c:14512
+#, c-format
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
+msgstr "eroare: arhitecturi CPU Ã®n conflict %s vs %s Ã®n %pB"
+
+#: elf32-arm.c:14609
+#, c-format
+msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr "Eroare: %pB are atÃ¢t atributele Tag_MPextension_use actuale, cÃ¢t È™i pe cele vechi"
+
+#: elf32-arm.c:14646
+#, c-format
+msgid "error: %pB uses VFP register arguments, %pB does not"
+msgstr "eroare: %pB utilizeazÄƒ argumente de registru VFP, iar %pB nu"
+
+#: elf32-arm.c:14816
+#, c-format
+msgid "error: %pB: unable to merge virtualization attributes with %pB"
+msgstr "eroare: %pB: nu se pot fuziona atributele de virtualizare cu %pB"
+
+#: elf32-arm.c:14842
+#, c-format
+msgid "error: %pB: conflicting architecture profiles %c/%c"
+msgstr "eroare: %pB: profiluri de arhitecturÄƒ aflate Ã®n conflict %c/%c"
+
+#: elf32-arm.c:14981
+#, c-format
+msgid "warning: %pB: conflicting platform configuration"
+msgstr "avertisment: %pB: configuraÈ›ie conflictualÄƒ a platformei"
+
+#: elf32-arm.c:14990
+#, c-format
+msgid "error: %pB: conflicting use of R9"
+msgstr "eroare: %pB: utilizare conflictualÄƒ a R9"
+
+#: elf32-arm.c:15002
+#, c-format
+msgid "error: %pB: SB relative addressing conflicts with use of R9"
+msgstr "eroare: %pB: adresarea relativÄƒ SB intrÄƒ Ã®n conflict cu utilizarea lui R9"
+
+#: elf32-arm.c:15015
+#, 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 "avertisment: %pB foloseÈ™te %u-byte wchar_t, dar rezultatul este sÄƒ foloseascÄƒ %u-byte wchar_t; folosirea valorilor wchar_t Ã®ntre obiecte poate eÈ™ua"
+
+#: elf32-arm.c:15046
+#, 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 "avertisment: %pB foloseÈ™te %s enumerÄƒri, dar rezultatul este sÄƒ foloseascÄƒ %s enumerÄƒri; utilizarea valorilor enumerate Ã®ntre obiecte poate eÈ™ua"
+
+#: elf32-arm.c:15058
+#, c-format
+msgid "error: %pB uses iWMMXt register arguments, %pB does not"
+msgstr "eroare: %pB utilizeazÄƒ argumente de registru iWMMXt, È™i %pB nu"
+
+#: elf32-arm.c:15075
+#, c-format
+msgid "error: fp16 format mismatch between %pB and %pB"
+msgstr "eroare: nepotrivire a formatului fp16 Ã®ntre %pB È™i %pB"
+
+#: elf32-arm.c:15111
+#, c-format
+msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr "%pB are atÃ¢t atributele Tag_MPextension_use actuale, cÃ¢t È™i cele vechi"
+
+#: elf32-arm.c:15207
+#, c-format
 msgid " [interworking enabled]"
-msgstr " [interlucru(interworking) activat]"
+msgstr " [interfuncÈ›ionare activatÄƒ]"
 
-#: elf32-arm.h:2460
+#: elf32-arm.c:15215
+#, c-format
 msgid " [VFP float format]"
 msgstr " [format float VFP]"
 
-#: elf32-arm.h:2462
-msgid " [Maverick float format]"
-msgstr " [format float Maverick]"
-
-#: elf32-arm.h:2464
+#: elf32-arm.c:15217
+#, c-format
 msgid " [FPA float format]"
 msgstr " [format float FPA]"
 
-#: elf32-arm.h:2473
+#: elf32-arm.c:15220
+#, c-format
+msgid " [floats passed in float registers]"
+msgstr " [valori Ã®n virgulÄƒ mobilÄƒ trecute Ã®n registrele de valori Ã®n virgulÄƒ mobilÄƒ]"
+
+#: elf32-arm.c:15223 elf32-arm.c:15308
+#, c-format
+msgid " [position independent]"
+msgstr " [independent de poziÈ›ie]"
+
+#: elf32-arm.c:15226
+#, c-format
 msgid " [new ABI]"
 msgstr " [ABI nou]"
 
-#: elf32-arm.h:2476
+#: elf32-arm.c:15229
+#, c-format
 msgid " [old ABI]"
 msgstr " [ABI vechi]"
 
-#: elf32-arm.h:2479
+#: elf32-arm.c:15232
+#, c-format
 msgid " [software FP]"
 msgstr " [FP software]"
 
-#: elf32-arm.h:2488
+#: elf32-arm.c:15240
+#, c-format
 msgid " [Version1 EABI]"
 msgstr " [EABI Versiunea1]"
 
-#: elf32-arm.h:2491 elf32-arm.h:2502
+#: elf32-arm.c:15243 elf32-arm.c:15254
+#, c-format
 msgid " [sorted symbol table]"
-msgstr " [tabelã sortatã de simboluri]"
+msgstr " [tabel de simboluri sortate]"
 
-#: elf32-arm.h:2493 elf32-arm.h:2504
+#: elf32-arm.c:15245 elf32-arm.c:15256
+#, c-format
 msgid " [unsorted symbol table]"
-msgstr " [tabelã de simboluri nesortatã]"
+msgstr " [tabel de simboluri nesortate]"
 
-#: elf32-arm.h:2499
+#: elf32-arm.c:15251
+#, c-format
 msgid " [Version2 EABI]"
 msgstr " [EABI Versiunea2]"
 
-#: elf32-arm.h:2507
+#: elf32-arm.c:15259
+#, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [simbolurile dinamice folosesc index de segment]"
 
-#: elf32-arm.h:2510
+#: elf32-arm.c:15262
+#, c-format
 msgid " [mapping symbols precede others]"
-msgstr " [simbolurile de mapare le precedeazã pe celelalte]"
+msgstr " [simbolurile de cartografiere le preced pe celelalte]"
+
+#: elf32-arm.c:15269
+#, c-format
+msgid " [Version3 EABI]"
+msgstr " [EABI Versiunea3]"
+
+#: elf32-arm.c:15273
+#, c-format
+msgid " [Version4 EABI]"
+msgstr " [EABI Versiunea4]"
+
+#: elf32-arm.c:15277
+#, c-format
+msgid " [Version5 EABI]"
+msgstr " [EABI Versiunea5]"
 
-#: elf32-arm.h:2517
+#: elf32-arm.c:15280
+#, c-format
+msgid " [soft-float ABI]"
+msgstr " [soft-float ABI]"
+
+#: elf32-arm.c:15283
+#, c-format
+msgid " [hard-float ABI]"
+msgstr " [hard-float ABI]"
+
+#: elf32-arm.c:15289
+#, c-format
+msgid " [BE8]"
+msgstr " [BE8]"
+
+#: elf32-arm.c:15292
+#, c-format
+msgid " [LE8]"
+msgstr " [LE8]"
+
+#: elf32-arm.c:15298
+#, c-format
 msgid " <EABI version unrecognised>"
-msgstr " <versiune necunoscutã EABI>"
+msgstr " <versiune nerecunoscutÄƒ EABI>"
 
-#: elf32-arm.h:2524
+#: elf32-arm.c:15305
+#, c-format
 msgid " [relocatable executable]"
-msgstr " [executabil relocabil]"
+msgstr " [executabil realocabil]"
 
-#: elf32-arm.h:2527
-msgid " [has entry point]"
-msgstr " [are punct de intrare]"
-
-#: elf32-arm.h:2532
-msgid "<Unrecognised flag bits set>"
-msgstr "<setare biþi de marcaj(flag) necunoscutã>"
-
-#: elf32-avr.c:820 elf32-cris.c:1398 elf32-fr30.c:642 elf32-frv.c:823
-#: elf32-i860.c:1036 elf32-ip2k.c:1597 elf32-iq2000.c:707 elf32-msp430.c:518
-#: elf32-openrisc.c:444 elf32-v850.c:1785 elf32-xstormy16.c:984
-#: elf64-mmix.c:1340
+#: elf32-arm.c:15311
+#, c-format
+msgid " [FDPIC ABI supplement]"
+msgstr " [supliment FDPIC ABI]"
+
+#: elf32-arm.c:15316 elfnn-aarch64.c:7594
+#, c-format
+msgid " <Unrecognised flag bits set>"
+msgstr " <set de biÈ›i de fanion nerecunoscut>"
+
+#: elf32-arm.c:15424 elf32-arm.c:15558 elf32-i386.c:1576 elf32-s390.c:921
+#: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 elf64-s390.c:924
+#: elf64-x86-64.c:2550 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 elfxx-x86.c:962
+#: elfnn-aarch64.c:7865 elfnn-kvx.c:3248 elfnn-loongarch.c:961
+#: elfnn-riscv.c:959
+#, c-format
+msgid "%pB: bad symbol index: %d"
+msgstr "%pB: index de simboluri incorect: %d"
+
+#: elf32-arm.c:15814
+#, c-format
+msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
+msgstr "FDPIC nu acceptÄƒ Ã®ncÄƒ realocarea %s pentru a deveni dinamicÄƒ pentru executabil"
+
+#: elf32-arm.c:17077
+#, c-format
+msgid "errors encountered processing file %pB"
+msgstr "erori Ã®ntÃ¢lnite la procesarea fiÈ™ierului %pB"
+
+#: elf32-arm.c:17448 elflink.c:13605 elflink.c:13652
+#, c-format
+msgid "could not find section %s"
+msgstr "nu s-a putut gÄƒsi secÈ›iunea %s"
+
+#: elf32-arm.c:18406
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr "%pB: NumÄƒrul de simboluri din fiÈ™ierul de intrare a crescut de la %lu la %u\n"
+
+#: elf32-arm.c:18664
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location"
+msgstr "%pB: eroare: ciotul(stub) de eroare Cortex-A8 este alocat Ã®ntr-o locaÈ›ie nesigurÄƒ"
+
+#. There's not much we can do apart from complain if this
+#. happens.
+#: elf32-arm.c:18691
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
+msgstr "%pB: eroare: ciotul(stub) de eroare Cortex-A8 Ã®n afara intervalului (fiÈ™ierul de intrare este prea mare)"
+
+#: elf32-arm.c:19518 elf32-arm.c:19540
+#, c-format
+msgid "%pB: error: VFP11 veneer out of range"
+msgstr "%pB: eroare: faÈ›eta(veneer) VFP11 Ã®n afara intervalului"
+
+#: elf32-arm.c:19591
+#, c-format
+msgid "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by %<PRId64> bytes; cannot encode branch instruction"
+msgstr "%pB(%#<PRIx64>): eroare: nu se poate crea faÈ›eta(veneer) STM32L4XX; se iese din interval cu %<PRId64> octeÈ›i; nu se poate codifica instrucÈ›iunile de ramurÄƒ"
+
+#: elf32-arm.c:19630
+#, c-format
+msgid "%pB: error: cannot create STM32L4XX veneer"
+msgstr "%pB: eroare: nu se poate crea faÈ›eta(veneer) STM32L4XX"
+
+#: elf32-arm.c:20713
+#, c-format
+msgid "error: %pB is already in final BE8 format"
+msgstr "eroare: %pB este deja Ã®n format BE8 final"
+
+#: elf32-arm.c:20790
+#, c-format
+msgid "error: source object %pB has EABI version %d, but target %pB has EABI version %d"
+msgstr "eroare: obiectul sursÄƒ %pB are versiunea EABI %d, dar È›inta %pB are versiunea EABI %d"
+
+#: elf32-arm.c:20805
+#, c-format
+msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d"
+msgstr "eroare: %pB este compilat pentru APCS-%d, Ã®n timp ce È›inta %pB foloseÈ™te APCS-%d"
+
+#: elf32-arm.c:20815
+#, c-format
+msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
+msgstr "eroare: %pB trece valorile Ã®n virgulÄƒ mobilÄƒ Ã®n registrele de virgulÄƒ mobilÄƒ, Ã®n timp ce %pB le trece Ã®n registrele Ã®ntregi"
+
+#: elf32-arm.c:20819
+#, c-format
+msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
+msgstr "eroare: %pB trece valorile Ã®n virgulÄƒ mobilÄƒ Ã®n registrele Ã®ntregi, Ã®n timp ce %pB le trece Ã®n registrele de virgulÄƒ mobilÄƒ"
+
+#: elf32-arm.c:20829 elf32-arm.c:20833
+#, c-format
+msgid "error: %pB uses %s instructions, whereas %pB does not"
+msgstr "eroare: %pB foloseÈ™te instrucÈ›iuni %s, Ã®n timp ce %pB nu le foloseÈ™te"
+
+#: elf32-arm.c:20852
+#, c-format
+msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
+msgstr "eroare: %pB foloseÈ™te software FP, Ã®n timp ce %pB foloseÈ™te hardware FP"
+
+#: elf32-arm.c:20856
+#, c-format
+msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
+msgstr "eroare: %pB foloseÈ™te FP hardware, Ã®n timp ce %pB foloseÈ™te FP software"
+
+#: elf32-arm.c:20870
+#, c-format
+msgid "warning: %pB supports interworking, whereas %pB does not"
+msgstr "avertisment: %pB acceptÄƒ interfuncÈ›ionarea, Ã®n timp ce %pB nu o face"
+
+#: elf32-arm.c:20876
+#, c-format
+msgid "warning: %pB does not support interworking, whereas %pB does"
+msgstr "avertisment: %pB nu acceptÄƒ interfuncÈ›ionarea, Ã®n timp ce %pB o acceptÄƒ"
+
+#: elf32-avr.c:1503
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr "%X%H: %s faÈ›Äƒ de â€ž%sâ€�: eroare: realocarea se aplicÄƒ Ã®n afara secÈ›iunii\n"
+
+#: elf32-avr.c:1511
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr "%X%H: %s faÈ›Äƒ de â€ž%sâ€�: eroare: adresa È›intÄƒ de realocare este imparÄƒ\n"
+
+#: elf32-avr.c:1519
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr "%X%H: %s faÈ›Äƒ de â€ž%sâ€�: eroare internÄƒ: rezultat neaÈ™teptat al realocÄƒrii %d\n"
+
+#: elf32-avr.c:3335 elfnn-aarch64.c:3231
+#, c-format
+msgid "cannot create stub entry %s"
+msgstr "nu se poate crea intrarea ciot(stub) %s"
+
+#: elf32-bfin.c:107 elf32-bfin.c:364
+msgid "relocation should be even number"
+msgstr "realocarea trebuie sÄƒ fie un numÄƒr par"
+
+#: elf32-bfin.c:1589
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): realocare nerezolvabilÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�"
+
+#: elf32-bfin.c:1621 elf32-i386.c:3585 elf32-m68k.c:4008 elf32-s390.c:3132
+#: elf64-s390.c:3468 elf64-x86-64.c:5080
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
+msgstr "%pB(%pA+%#<PRIx64>): realocare faÈ›Äƒ de â€ž%sâ€�: eroare %d"
+
+#: elf32-bfin.c:2646
+#, c-format
+msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero addend"
+msgstr "%pB: realocarea la â€ž%pA+%#<PRIx64>â€� face referire la simbolul â€ž%sâ€� cu adaos diferit de zero"
+
+#: elf32-bfin.c:2663
+msgid "relocation references symbol not defined in the module"
+msgstr "simbolul referinÈ›elor de realocare nu este definit Ã®n modul"
+
+#: elf32-bfin.c:2761
+msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend"
+msgstr "R_BFIN_FUNCDESC face referire la simbolul dinamic cu adaos diferit de zero"
+
+#: elf32-bfin.c:2801 elf32-bfin.c:2922
+msgid "cannot emit fixups in read-only section"
+msgstr "nu poate emite remedieri Ã®n secÈ›iunea numai-pentru-citire"
+
+#: elf32-bfin.c:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4386
+msgid "cannot emit dynamic relocations in read-only section"
+msgstr "nu se pot emite realocÄƒri dinamice Ã®n secÈ›iunea de numai-citire"
+
+#: elf32-bfin.c:2881
+msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
+msgstr "R_BFIN_FUNCDESC_VALUE face referire la simbolul dinamic cu adaos diferit de zero"
+
+#: elf32-bfin.c:3044
+msgid "relocations between different segments are not supported"
+msgstr "realocÄƒrile Ã®ntre diferite segmente nu sunt acceptate"
+
+#: elf32-bfin.c:3045
+msgid "warning: relocation references a different segment"
+msgstr "avertisment: realocarea se referÄƒ la un segment diferit"
+
+#: elf32-bfin.c:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3379
+#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:939 elf64-bpf.c:348
+#: elf64-mmix.c:1545 elfxx-tilegx.c:3752
 msgid "internal error: dangerous relocation"
-msgstr "eroare internã: relocare periculoasã"
+msgstr "eroare internÄƒ: realocare periculoasÄƒ"
 
-#: elf32-cris.c:931
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4734 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1264
+#: elf32-score.c:3986 elf32-score7.c:3793 elf32-vax.c:534 elf32-xgate.c:494
+#: elfxx-mips.c:16452
 #, c-format
-msgid "%s: unresolvable relocation %s against symbol `%s' from %s section"
-msgstr "%s: relocare nerezolvabilã %s pe simbolul `%s' din secþiunea `%s'"
+msgid "private flags = %lx:"
+msgstr "fanioane private = %lx:"
 
-#: elf32-cris.c:993
+#: elf32-bfin.c:4785 elf32-frv.c:6591
 #, c-format
-msgid "%s: No PLT nor GOT for relocation %s against symbol `%s' from %s section"
-msgstr "%s:Nu existã nici PLT nici GOR pentru relocarea %s pe simbolul `%s' din secþiunea %s"
+msgid "%pB: cannot link non-fdpic object file into fdpic executable"
+msgstr "%pB: nu se poate vincula fiÈ™ierul obiect non-fdpic la executabilul fdpic"
 
-#: elf32-cris.c:996 elf32-cris.c:1122
+#: elf32-bfin.c:4789 elf32-frv.c:6595
+#, c-format
+msgid "%pB: cannot link fdpic object file into non-fdpic executable"
+msgstr "%pB: nu se poate vincula fiÈ™ierul obiect fdpic la executabil non-fdpic"
+
+#: elf32-bfin.c:4925
+#, c-format
+msgid "*** check this relocation %s"
+msgstr "*** verificaÈ›i aceastÄƒ realocare %s"
+
+#: elf32-bfin.c:5040
+msgid "the bfin target does not currently support the generation of copy relocations"
+msgstr "È›inta bfin nu acceptÄƒ Ã®n prezent generarea de realocÄƒri de copiere"
+
+#: elf32-bfin.c:5335 elf32-cr16.c:2723 elf32-m68k.c:4423
+msgid "unsupported relocation type"
+msgstr "tip de realocare neacceptat"
+
+#: elf32-cris.c:1119
+#, c-format
+msgid "%pB, section %pA: unresolvable relocation %s against symbol `%s'"
+msgstr "%pB, secÈ›iunea %pA: realocare nerezolvabilÄƒ %s faÈ›Äƒ de simbolul â€ž%sâ€�"
+
+#: elf32-cris.c:1184
+#, c-format
+msgid "%pB, section %pA: no PLT nor GOT for relocation %s against symbol `%s'"
+msgstr "%pB, secÈ›iunea %pA: fÄƒrÄƒ PLT sau GOT pentru realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€�"
+
+#: elf32-cris.c:1187
+#, c-format
+msgid "%pB, section %pA: no PLT for relocation %s against symbol `%s'"
+msgstr "%pB, secÈ›iunea %pA: fÄƒrÄƒ PLT pentru realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€�"
+
+#: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
+#: elf32-cris.c:1827 elf32-tic6x.c:2552
 msgid "[whose name is lost]"
-msgstr "[al cãrui nume s-a pierdut]"
+msgstr "[al cÄƒrui nume s-a pierdut]"
 
-#: elf32-cris.c:1111
+#: elf32-cris.c:1311 elf32-tic6x.c:2536
 #, c-format
-msgid "%s: relocation %s with non-zero addend %d against local symbol from %s section"
-msgstr "%s: relocarea %s cu adãugarea diferitã de zero %d pe simbolul local din secþiunea %s"
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against local symbol"
+msgstr "%pB, secÈ›iunea %pA: realocare %s cu adÄƒugarea diferitÄƒ de zero %<PRId64> faÈ›Äƒ de simbolul local"
 
-#: elf32-cris.c:1118
+#: elf32-cris.c:1320 elf32-cris.c:1668 elf32-cris.c:1821 elf32-tic6x.c:2545
 #, c-format
-msgid "%s: relocation %s with non-zero addend %d against symbol `%s' from %s section"
-msgstr "%s: relocarea %s cu adãugare non-zero %d pe simbolul `%s' din secþiunea %s"
+msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
+msgstr "%pB, secÈ›iunea %pA: realocare %s cu adÄƒugarea diferitÄƒ de zero %<PRId64> faÈ›Äƒ de simbolul â€ž%sâ€�"
 
-#: elf32-cris.c:1143
+#: elf32-cris.c:1347
 #, c-format
-msgid "%s: relocation %s is not allowed for global symbol: `%s' from %s section"
-msgstr "%s: relocarea %s nu este permisã pentru simbolul global `%s' din secþiunea %s"
+msgid "%pB, section %pA: relocation %s is not allowed for global symbol: `%s'"
+msgstr "%pB, secÈ›iunea %pA: realocarea %s nu este permisÄƒ pentru simbolul global: â€ž%sâ€�"
 
-#: elf32-cris.c:1158
+#: elf32-cris.c:1364
 #, c-format
-msgid "%s: relocation %s in section %s with no GOT created"
-msgstr "%s: relocarea %s din secþiunea %s fãrã GOT creat"
+msgid "%pB, section %pA: relocation %s with no GOT created"
+msgstr "%pB, secÈ›iunea %pA: relaocare %s fÄƒrÄƒ GOT creat"
 
-#: elf32-cris.c:1277
+#. We shouldn't get here for GCC-emitted code.
+#: elf32-cris.c:1581
 #, c-format
-msgid "%s: Internal inconsistency; no relocation section %s"
-msgstr "%s: Inconsistenþã internã, nu existã secþiunea de relocare %s"
+msgid "%pB, section %pA: relocation %s has an undefined reference to `%s', perhaps a declaration mixup?"
+msgstr "%pB, secÈ›iunea %pA: realocarea %s are o referinÈ›Äƒ nedefinitÄƒ la â€ž%sâ€�, poate o confuzie Ã®n declaraÈ›ii?"
 
-#: elf32-cris.c:2500
+#: 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, secÈ›iunea %pA: realocarea %s nu este permisÄƒ pentru â€ž%sâ€�, un simbol global cu vizibilitate implicitÄƒ, poate o confuzie Ã®n declaraÈ›ii?"
+
+#: 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, secÈ›iunea %pA: realocarea %s nu este permisÄƒ pentru simbolul: â€ž%sâ€� care este definit Ã®n afara programului, poate o confuzie Ã®n declaraÈ›ii?"
+
+#: elf32-cris.c:2008
+msgid "(too many global variables for -fpic: recompile with -fPIC)"
+msgstr "(prea multe variabile globale pentru â€ž-fpicâ€�: recompilaÈ›i cu â€ž-fPICâ€�)"
+
+#: elf32-cris.c:2015
+msgid "(thread-local data too big for -fpic or -msmall-tls: recompile with -fPIC or -mno-small-tls)"
+msgstr "(datele de fire de execuÈ›ie locale sunt prea mari pentru â€ž-fpicâ€� sau â€ž-msmall-tlsâ€�: recompilaÈ›i cu â€ž-fPICâ€� sau â€ž-mno-small-tlsâ€�)"
+
+#: elf32-cris.c:3048
+#, c-format
+msgid "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
+msgstr "%pB, secÈ›iunea %pA: obiectul compatibil v10/v32 nu trebuie sÄƒ conÈ›inÄƒ o realocare PIC"
+
+#: elf32-cris.c:3102
 #, c-format
 msgid ""
-"%s, section %s:\n"
-"  relocation %s should not be used in a shared object; recompile with -fPIC"
+"%pB, section %pA:\n"
+"  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC"
 msgstr ""
-"%s, secþiunea %s:\n"
-"  relocarea %s n-ar trebui folositã într-un shared object; recompilaþi cu -fPIC"
+"%pB, secÈ›iunea %pA:\n"
+"  realocarea %s nu este validÄƒ Ã®ntr-un obiect partajat; de obicei, o confuzie de opÈ›iuni, recompilaÈ›i cu â€ž-fPICâ€�"
+
+#: elf32-cris.c:3320
+#, c-format
+msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
+msgstr "%pB, secÈ›iunea %pA: realocarea %s nu trebuie utilizatÄƒ Ã®ntr-un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�"
 
-#: elf32-cris.c:2978
+#: elf32-cris.c:3701
+#, 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È›iunea â€ž%pAâ€�, la simbolul â€ž%sâ€�: realocarea %s nu trebuie utilizatÄƒ Ã®ntr-un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�"
+
+#: elf32-cris.c:3813
+msgid "unexpected machine number"
+msgstr "numÄƒr de maÈ™inÄƒ neaÈ™teptat"
+
+#: elf32-cris.c:3865
+#, c-format
 msgid " [symbols have a _ prefix]"
-msgstr " [simbolurile au un _prefix]"
+msgstr " [simbolurile au un prefix â€ž_â€�]"
 
-#: elf32-cris.c:3017
+#: elf32-cris.c:3868
 #, c-format
-msgid "%s: uses _-prefixed symbols, but writing file with non-prefixed symbols"
-msgstr "%s: se folosesc simbolurile _-prefixate, dar se scrie fiºierul cu simboluri neprefixate"
+msgid " [v10 and v32]"
+msgstr " [v10 È™i v32]"
 
-#: elf32-cris.c:3018
+#: elf32-cris.c:3871
 #, c-format
-msgid "%s: uses non-prefixed symbols, but writing file with _-prefixed symbols"
-msgstr "%s: se folosesc simboluri neprefixate, dar se scrie fiºierul cu simboluri _-prefixate"
+msgid " [v32]"
+msgstr " [v32]"
 
-#: elf32-frv.c:1223
+#: elf32-cris.c:3915
 #, c-format
-msgid "%s: compiled with %s and linked with modules that use non-pic relocations"
-msgstr "%s: compilat cu %s ºi linkuit cu module care folosesc relocaþii non-pic"
+msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
+msgstr "%pB: utilizeazÄƒ simboluri prefixate cu â€ž_â€�, dar scrie fiÈ™ierul cu simboluri fÄƒrÄƒ prefix"
 
-#: elf32-frv.c:1273 elf32-iq2000.c:895
+#: elf32-cris.c:3916
 #, c-format
-msgid "%s: compiled with %s and linked with modules compiled with %s"
-msgstr "%s: compilat cu %s ºi linkuit cu module compilate cu %s"
+msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
+msgstr "%pB: utilizeazÄƒ simboluri fÄƒrÄƒ prefix, dar se scrie fiÈ™ierul cu simboluri prefixate cu â€ž_â€�"
 
-#: elf32-frv.c:1285
+#: elf32-cris.c:3935
 #, c-format
-msgid "%s: uses different unknown e_flags (0x%lx) fields than previous modules (0x%lx)"
-msgstr "%s: foloseºte câmpuri marcaje e_flags (0x%lx) diferite de modulele anterioare (0x%lx)"
+msgid "%pB contains CRIS v32 code, incompatible with previous objects"
+msgstr "%pB conÈ›ine cod CRIS v32, incompatibil cu obiectele anterioare"
 
-#: elf32-frv.c:1321 elf32-iq2000.c:933
+#: elf32-cris.c:3937
 #, c-format
-msgid "private flags = 0x%lx:"
-msgstr "marcaje(flags) private = 0x%lx"
+msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
+msgstr "%pB conÈ›ine cod non-CRIS-v32, incompatibil cu obiectele anterioare"
+
+#: elf32-csky.c:2017
+msgid "GOT table size out of range"
+msgstr "dimensiunea tabelului GOT Ã®n afara limitei"
+
+#: elf32-csky.c:2828
+#, c-format
+msgid "warning: unrecognized arch eflag '%#lx'"
+msgstr "avertisment: eflag de arhitecturÄƒ nerecunoscut â€ž%#lxâ€�"
+
+#: elf32-csky.c:2851
+#, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr "avertisment: nume de arhitecturÄƒ nerecunoscut â€ž%#xâ€�"
+
+#: elf32-csky.c:2916 elf32-csky.c:3076
+#, c-format
+msgid "%pB: machine flag conflict with target"
+msgstr "%pB: fanionul de maÈ™inÄƒ Ã®n conflict cu È›inta"
+
+#: elf32-csky.c:2929
+#, c-format
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr "avertisment: fanionul arhitecturii â€ž%2$sâ€� al fiÈ™ierului â€ž%1$pBâ€� intrÄƒ Ã®n conflict cu È›inta â€ž%3$sâ€�, definiÈ›i fanionul arhitecturii È›intÄƒ la â€ž%4$sâ€�"
+
+#: elf32-csky.c:2958
+#, c-format
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr "Eroare: %pB È™i %pB au versiuni VDSP diferite"
+
+#: elf32-csky.c:2975
+#, c-format
+msgid "Error: %pB and %pB has different DSP version"
+msgstr "Eroare: %pB È™i %pB au versiuni DSP diferite"
+
+#: elf32-csky.c:2993
+#, c-format
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr "Eroare: %pB È™i %pB au ABI FPU diferit"
+
+#: elf32-csky.c:3090
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr "avertisment: fanionul arhitecturii %2$s al fiÈ™ierului %1$pB intrÄƒ Ã®n conflict cu È›inta ck%3$s, folosind %4$s"
+
+#. The r_type is error, not support it.
+#: elf32-csky.c:4330 elf32-i386.c:344
+#, c-format
+msgid "%pB: unsupported relocation type: %#x"
+msgstr "%pB: tip de realocare neacceptat: %#x"
+
+#: elf32-dlx.c:141
+#, c-format
+msgid "branch (PC rel16) to section (%s) not supported"
+msgstr "ramura (PC rel16) la secÈ›iunea (%s) nu este acceptatÄƒ"
+
+#: elf32-dlx.c:204
+#, c-format
+msgid "jump (PC rel26) to section (%s) not supported"
+msgstr "saltul (PC rel26) la secÈ›iunea (%s) nu este acceptat"
+
+#. Only if it's not an unresolved symbol.
+#: elf32-epiphany.c:570 elf32-ip2k.c:1485
+msgid "unsupported relocation between data/insn address spaces"
+msgstr "realocarea nu este acceptatÄƒ Ã®ntre spaÈ›iile de adrese date/insn"
+
+#: elf32-frv.c:1452 elf32-frv.c:1603
+msgid "relocation requires zero addend"
+msgstr "realocarea necesitÄƒ adÄƒugarea de zero"
+
+#: elf32-frv.c:2832
+#, c-format
+msgid "%H: relocation to `%s+%v' may have caused the error above\n"
+msgstr "%H: realocarea Ã®n â€ž%s+%vâ€� poate fi cauzat eroarea de mai sus\n"
+
+#: elf32-frv.c:2849
+msgid "%H: relocation references symbol not defined in the module\n"
+msgstr "%H: simbolul referinÈ›elor de realocare nu este definit Ã®n modul\n"
+
+#: elf32-frv.c:2925
+msgid "%H: R_FRV_GETTLSOFF not applied to a call instruction\n"
+msgstr "%H: R_FRV_GETTLSOFF nu este aplicat unei instrucÈ›iuni de apel\n"
+
+#: elf32-frv.c:2966
+msgid "%H: R_FRV_GOTTLSDESC12 not applied to an lddi instruction\n"
+msgstr "%H: R_FRV_GOTTLSDESC12 nu este aplicat unei instrucÈ›iuni lddi\n"
+
+#: elf32-frv.c:3037
+msgid "%H: R_FRV_GOTTLSDESCHI not applied to a sethi instruction\n"
+msgstr "%H: R_FRV_GOTTLSDESCHI nu este aplicat unei instrucÈ›iuni sethi\n"
+
+#: elf32-frv.c:3074
+msgid "%H: R_FRV_GOTTLSDESCLO not applied to a setlo or setlos instruction\n"
+msgstr "%H: R_FRV_GOTTLSDESCLO nu este aplicat unei instrucÈ›iuni setlo sau setlos\n"
+
+#: elf32-frv.c:3121
+msgid "%H: R_FRV_TLSDESC_RELAX not applied to an ldd instruction\n"
+msgstr "%H: R_FRV_TLSDESC_RELAX nu este aplicat unei instrucÈ›iuni ldd\n"
+
+#: elf32-frv.c:3205
+msgid "%H: R_FRV_GETTLSOFF_RELAX not applied to a calll instruction\n"
+msgstr "%H: R_FRV_GETTLSOFF_RELAX nu este aplicat unei instrucÈ›iuni de apel\n"
+
+#: elf32-frv.c:3259
+msgid "%H: R_FRV_GOTTLSOFF12 not applied to an ldi instruction\n"
+msgstr "%H: R_FRV_GOTTLSOFF12 nu este aplicat unei instrucÈ›iuni ldi\n"
+
+#: elf32-frv.c:3289
+msgid "%H: R_FRV_GOTTLSOFFHI not applied to a sethi instruction\n"
+msgstr "%H: R_FRV_GOTTLSOFFHI nu este aplicat unei instrucÈ›iuni sethi\n"
 
-#: elf32-gen.c:83 elf64-gen.c:82
+#: elf32-frv.c:3318
+msgid "%H: R_FRV_GOTTLSOFFLO not applied to a setlo or setlos instruction\n"
+msgstr "%H: R_FRV_GOTTLSOFFLO nu este aplicat unei instrucÈ›iuni setlo sau setlos\n"
+
+#: elf32-frv.c:3348
+msgid "%H: R_FRV_TLSOFF_RELAX not applied to an ld instruction\n"
+msgstr "%H: R_FRV_TLSOFF_RELAX nu este aplicat unei instrucÈ›iuni ld\n"
+
+#: elf32-frv.c:3393
+msgid "%H: R_FRV_TLSMOFFHI not applied to a sethi instruction\n"
+msgstr "%H: R_FRV_TLSMOFFHI nu este aplicat unei instrucÈ›iuni sethi\n"
+
+#: elf32-frv.c:3420
+msgid "R_FRV_TLSMOFFLO not applied to a setlo or setlos instruction\n"
+msgstr "R_FRV_TLSMOFFLO nu este aplicat unei instrucÈ›iuni setlo sau setlos\n"
+
+#: elf32-frv.c:3541 elf32-frv.c:3661
+msgid "%H: %s references dynamic symbol with nonzero addend\n"
+msgstr "%H: %s face referire la simbolul dinamic cu adaos diferit de zero\n"
+
+#: elf32-frv.c:3582 elf32-frv.c:3703
+msgid "%H: cannot emit fixups in read-only section\n"
+msgstr "%H: nu se pot emite remedieri Ã®n secÈ›iunea numai-pentru-citire\n"
+
+#: elf32-frv.c:3612 elf32-frv.c:3745
+msgid "%H: cannot emit dynamic relocations in read-only section\n"
+msgstr "%H: nu se pot emite realocÄƒri dinamice Ã®n secÈ›iunea numai-pentru-citire\n"
+
+#: elf32-frv.c:3917
+#, c-format
+msgid "%H: reloc against `%s' references a different segment\n"
+msgstr "%H: realocarea faÈ›Äƒ de â€ž%sâ€� face referire la un segment diferit\n"
+
+#: elf32-frv.c:4068
+#, c-format
+msgid "%H: reloc against `%s': %s\n"
+msgstr "%H: realocare faÈ›Äƒ de â€ž%sâ€�: %s\n"
+
+#: elf32-frv.c:6502
 #, c-format
-msgid "%s: Relocations in generic ELF (EM: %d)"
-msgstr "%s: Relocãri în ELF generic (EM: %d)"
+msgid "%pB: compiled with %s and linked with modules that use non-pic relocations"
+msgstr "%pB: compilat cu %s È™i vinculat cu module care folosesc realocÄƒri non-pic"
 
-#: elf32-hppa.c:672 elf32-m68hc1x.c:176 elf64-ppc.c:3118
+#: elf32-frv.c:6556 elf32-iq2000.c:830 elf32-m32c.c:877
 #, c-format
-msgid "%s: cannot create stub entry %s"
-msgstr "%s: nu se poate crea intrarea trunchiatã %s"
+msgid "%pB: compiled with %s and linked with modules compiled with %s"
+msgstr "%pB: compilat cu %s È™i vinculat cu module compilate cu %s"
 
-#: elf32-hppa.c:957 elf32-hppa.c:3538
+#: elf32-frv.c:6569
 #, c-format
-msgid "%s(%s+0x%lx): cannot reach %s, recompile with -ffunction-sections"
-msgstr "%s(%s+0x%lx): nu se poate gãsi %s, recompilaþi cu -ffunction-sections"
+msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
+msgstr "%pB: foloseÈ™te cÃ¢mpuri e_flags necunoscute (%#x) diferite faÈ›Äƒ de modulele anterioare (%#x)"
 
-#: elf32-hppa.c:1340 elf64-x86-64.c:672 elf64-x86-64.c:797
+#: elf32-gen.c:71
 #, c-format
-msgid "%s: relocation %s can not be used when making a shared object; recompile with -fPIC"
-msgstr "%s: relocarea %s nu poate fi utilizatã când se face un shared object, recompilaþicu -fPIC"
+msgid "%pB: relocations in generic ELF (EM: %d)"
+msgstr "%pB: realocÄƒri Ã®n ELF generic (EM: %d)"
 
-#: elf32-hppa.c:1360
+#: elf32-hppa.c:862 elf32-hppa.c:3403
 #, c-format
-msgid "%s: relocation %s should not be used when making a shared object; recompile with -fPIC"
-msgstr "%s: relocarea %s nu ar trebui utilizatã când se face un shared object, recompilaþicu -fPIC"
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections"
+msgstr "%pB(%pA+%#<PRIx64>): nu se poate ajunge la %s, recompilaÈ›i cu â€ž-ffunction-sectionsâ€�"
 
-#: elf32-hppa.c:1553
+#: elf32-hppa.c:1240
 #, c-format
-msgid "Could not find relocation section for %s"
-msgstr "Nu se poate gãsi secþiunea de relocare pentru %s"
+msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
+msgstr "%pB: realocarea %s nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�"
 
-#: elf32-hppa.c:2828
+#: elf32-hppa.c:2579
 #, c-format
-msgid "%s: duplicate export stub %s"
-msgstr "%s: exportare de ciot(stub) duplicatã %s"
+msgid "%pB: duplicate export stub %s"
+msgstr "%pB: ciot(stub) de exportare duplicat %s"
 
-#: elf32-hppa.c:3416
+#: elf32-hppa.c:3236
 #, c-format
-msgid "%s(%s+0x%lx): fixing %s"
-msgstr "%s(%s+0x%lx): se fixeazã %s"
+msgid "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared link"
+msgstr "%pB(%pA+%#<PRIx64>): remedierea %s pentru insn %#x nu este acceptatÄƒ Ã®ntr-o legÄƒturÄƒ nepartajatÄƒ"
 
-#: elf32-hppa.c:4039
+#: elf32-hppa.c:3456
 #, c-format
-msgid "%s(%s+0x%lx): cannot handle %s for %s"
-msgstr "%s(%s+0x%lx): nu pot manipula %s pentru %s"
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): deplasarea %#x pentru insn %#x nu este un multiplu de 8 (gp %#x)"
 
-#: elf32-hppa.c:4357
+#: elf32-hppa.c:3475
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): deplasarea %#x pentru insn %#x nu este un multiplu de 4 (gp %#x)"
+
+#: elf32-hppa.c:4090
+#, c-format
+msgid "%s has both normal and TLS relocs"
+msgstr "%s are atÃ¢t realocÄƒri normale, cÃ¢t È™i realocÄƒri TLS"
+
+#: elf32-hppa.c:4108
+#, c-format
+msgid "%pB:%s has both normal and TLS relocs"
+msgstr "%pB:%s are atÃ¢t realocÄƒri normale, cÃ¢t È™i realocÄƒri TLS"
+
+#: elf32-hppa.c:4167
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
+msgstr "%pB(%pA+%#<PRIx64>): nu se poate gestiona %s pentru %s"
+
+#: elf32-hppa.c:4471
 msgid ".got section not immediately after .plt section"
-msgstr "secþiunea .got nu urmeazã imediat dupã secþiunea .plt"
+msgstr "secÈ›iunea .got nu urmeazÄƒ imediat dupÄƒ secÈ›iunea .plt"
 
-#: elf32-i386.c:326
+#: elf32-i386.c:1300
 #, c-format
-msgid "%s: invalid relocation type %d"
-msgstr "%s: tip de relocare invalid %d"
+msgid "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register can not be used when making a shared object"
+msgstr "%pB: realocarea GOT directÄƒ, R_386_GOT32X faÈ›Äƒ de â€ž%sâ€� fÄƒrÄƒ registru de bazÄƒ nu poate fi utilizatÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat"
 
-#: elf32-i386.c:841 elf32-s390.c:990 elf32-sparc.c:887 elf32-xtensa.c:637
-#: elf64-s390.c:943 elf64-x86-64.c:650
+#: elf32-i386.c:1586
 #, c-format
-msgid "%s: bad symbol index: %d"
-msgstr "%s:index de simboluri invalid: %d"
+msgid "%pB: bad reloc offset (%#<PRIx32> > %#<PRIx32>) for section `%pA'"
+msgstr "%pB: decalaj de realocare greÈ™it (%#<PRIx32> > %#<PRIx32>) pentru secÈ›iunea â€ž%pAâ€�"
 
-#: elf32-i386.c:949 elf32-s390.c:1168 elf32-sh.c:6426 elf32-sparc.c:1011
-#: elf64-s390.c:1129
+#: elf32-i386.c:1771 elf32-s390.c:1149 elf32-sh.c:5500 elf32-tilepro.c:1546
+#: elf32-xtensa.c:1261 elf64-s390.c:1162 elfxx-sparc.c:1565 elfxx-tilegx.c:1766
+#: elfnn-loongarch.c:750 elfnn-riscv.c:866
 #, c-format
-msgid "%s: `%s' accessed both as normal and thread local symbol"
-msgstr "%s: `%s' accesate ºi ca simboluri locale normale ºi ca simboluri locale pe fire (thread)"
+msgid "%pB: `%s' accessed both as normal and thread local symbol"
+msgstr "%pB: %s a fost accesat atÃ¢t ca simbol local normal, cÃ¢t È™i ca simbol local al firului de execuÈ›ie"
 
-#: elf32-i386.c:1064 elf32-s390.c:1279 elf64-ppc.c:3929 elf64-s390.c:1243
-#: elf64-x86-64.c:886
+#: elf32-i386.c:1843
 #, c-format
-msgid "%s: bad relocation section name `%s'"
-msgstr "%s: nume secþiune relocare invalid `%s'"
+msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
+msgstr "%pB: apel non-PIC neacceptat cÄƒtre IFUNC â€ž%sâ€�"
 
-#: elf32-i386.c:2908 elf32-m68k.c:1757 elf32-s390.c:3022 elf32-sparc.c:2879
-#: elf32-xtensa.c:2193 elf64-s390.c:3018 elf64-sparc.c:2664
-#: elf64-x86-64.c:2452
+#: elf32-i386.c:1898 elf64-x86-64.c:2964
 #, c-format
-msgid "%s(%s+0x%lx): unresolvable relocation against symbol `%s'"
-msgstr "%s(%s+0x%lx): relocare nerezolvabilã pe simbolul `%s'"
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr "%pB: referinÈ›Äƒ necanonicÄƒ la funcÈ›ia protejatÄƒ canonicÄƒ â€ž%sâ€� Ã®n %pB"
 
-#: elf32-i386.c:2947 elf32-m68k.c:1796 elf32-s390.c:3072 elf64-s390.c:3068
-#: elf64-x86-64.c:2490
+#: elf32-i386.c:2461 elf64-x86-64.c:3446 elfnn-riscv.c:2742
 #, c-format
-msgid "%s(%s+0x%lx): reloc against `%s': error %d"
-msgstr "%s(%s+0x%lx): relocare pe `%s': eroare %d"
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported"
+msgstr "%pB: realocarea %s faÈ›Äƒ de simbolul STT_GNU_IFUNC â€ž%sâ€� nu este acceptatÄƒ"
 
-#: elf32-ip2k.c:565 elf32-ip2k.c:571 elf32-ip2k.c:734 elf32-ip2k.c:740
+#: elf32-i386.c:2494 elf32-i386.c:3794 elf32-i386.c:3942 elf64-x86-64.c:3503
+#: elf64-x86-64.c:5254 elf64-x86-64.c:5425 elfnn-riscv.c:2604
+#: elfnn-riscv.c:3511 elfnn-riscv.c:3585
+#, c-format
+msgid "Local IFUNC function `%s' in %pB\n"
+msgstr "FuncÈ›ia IFUNC localÄƒ â€ž%sâ€� Ã®n %pB\n"
+
+#: elf32-i386.c:2672
+#, c-format
+msgid "%pB: direct GOT relocation %s against `%s' without base register can not be used when making a shared object"
+msgstr "%pB: realocarea GOT directÄƒ %s faÈ›Äƒ de â€ž%sâ€� fÄƒrÄƒ registrul de bazÄƒ nu poate fi utilizatÄƒ cÃ¢nd se creeazÄƒ un obiect partajat"
+
+#: elf32-i386.c:2707 elf64-x86-64.c:3726
+msgid "hidden symbol"
+msgstr "simbol ascuns"
+
+#: elf32-i386.c:2710 elf64-x86-64.c:3729
+msgid "internal symbol"
+msgstr "simbol intern"
+
+#: elf32-i386.c:2713 elf64-x86-64.c:3732
+msgid "protected symbol"
+msgstr "simbol protejat"
+
+#: elf32-i386.c:2716 elf64-x86-64.c:3735
+msgid "symbol"
+msgstr "simbol"
+
+#: elf32-i386.c:2722
+#, c-format
+msgid "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when making a shared object"
+msgstr "%pB: realocarea R_386_GOTOFF faÈ›Äƒ de %s nedefinit â€ž%sâ€� nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat"
+
+#: elf32-i386.c:2735
+#, c-format
+msgid "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when making a shared object"
+msgstr "%pB: realocarea R_386_GOTOFF faÈ›Äƒ de %s protejat â€ž%sâ€� nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat"
+
+#: elf32-i386.c:4145 elf64-x86-64.c:5645
+msgid "%P: discarded output section: `%pA'\n"
+msgstr "%P: secÈ›iune de ieÈ™ire Ã®nlÄƒturatÄƒ: â€ž%pAâ€�\n"
+
+#: 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: schimbare de tabel fãrã potrivirea completã a informaþiei de relocare."
+msgstr "relaxer ip2k: tabel de comutare fÄƒrÄƒ potrivire completÄƒ a informaÈ›iilor de realocare."
 
-#: elf32-ip2k.c:588 elf32-ip2k.c:767
+#: elf32-ip2k.c:878 elf32-ip2k.c:961
 msgid "ip2k relaxer: switch table header corrupt."
-msgstr "ip2k relaxer: headerul tablelului de schimbare este corupt."
+msgstr "relaxer ip2k: antetul tabelului de comutare corupt."
 
-#: elf32-ip2k.c:1395
+#: elf32-ip2k.c:1298
 #, c-format
-msgid "ip2k linker: missing page instruction at 0x%08lx (dest = 0x%08lx)."
-msgstr "ip2k linker: lipseºte instrucþiunea de paginã la 0x%08lx (dest = 0x%08lx)."
+msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr "editor de legÄƒturii ip2k: lipseÈ™te instrucÈ›iunea de paginÄƒ la %#<PRIx64> (dest = %#<PRIx64>)"
 
-#: elf32-ip2k.c:1409
+#: elf32-ip2k.c:1317
 #, c-format
-msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)."
-msgstr "ip2k linker: instrucþiune redundantã de paginã la 0x%08lx (dest = 0x%08lx)."
+msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr "editor de legÄƒturii ip2k: instrucÈ›iune redundantÄƒ de paginÄƒ la %#<PRIx64> (dest = %#<PRIx64>)"
 
-#. Only if it's not an unresolved symbol.
-#: elf32-ip2k.c:1593
-msgid "unsupported relocation between data/insn address spaces"
-msgstr "relocare nesuportatã între datã/spaþiu adresã insn"
+#: elf32-lm32.c:608
+msgid "global pointer relative relocation when _gp not defined"
+msgstr "realocare relativÄƒ a indicatorului global atunci cÃ¢nd _gp nu este definit"
+
+#: elf32-lm32.c:663
+msgid "global pointer relative address out of range"
+msgstr "adresÄƒ relativÄƒ a indicatorului global Ã®n afara intervalului"
 
-#: elf32-iq2000.c:907 elf32-m68hc1x.c:1431 elf32-ppc.c:2175 elf64-sparc.c:3072
-#: elfxx-mips.c:9195
+#: elf32-lm32.c:959
 #, c-format
-msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
-msgstr "%s: foloseºte câmpuri de marcaje e_flags (0x%lx) diferite de modulele anterioare (0x%lx)"
+msgid "internal error: addend should be zero for %s"
+msgstr "eroare internÄƒ: adÄƒugarea trebuie sÄƒ fie zero pentru %s"
 
-#: elf32-m32r.c:930
+#: elf32-m32r.c:1461
 msgid "SDA relocation when _SDA_BASE_ not defined"
-msgstr "Relocare SDA când _SDA_BASE_ nu este definit"
+msgstr "realocare SDA cÃ¢nd _SDA_BASE_ nu este definit"
 
-#: elf32-m32r.c:1018 elf64-alpha.c:4279 elf64-alpha.c:4407 elf32-ia64.c:3958
-#: elf64-ia64.c:3958
+#: elf32-m32r.c:2778 elf32-microblaze.c:1147 elf32-microblaze.c:1195
 #, c-format
-msgid "%s: unknown relocation type %d"
-msgstr "%s: tip necunoscut de relocare %d"
+msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)"
+msgstr "%pB: È›inta (%s) unei realocÄƒri %s este Ã®n secÈ›iunea greÈ™itÄƒ (%pA)"
 
-#: elf32-m32r.c:1226
+#: elf32-m32r.c:3279
 #, c-format
-msgid "%s: The target (%s) of an %s relocation is in the wrong section (%s)"
-msgstr "%s: Þinta (%s) unei relocãri %s este în secþiunea nepotrivitã (%s)"
+msgid "%pB: instruction set mismatch with previous modules"
+msgstr "%pB: setul de instrucÈ›iuni nu se potriveÈ™te cu modulele anterioare"
 
-#: elf32-m32r.c:1952
-#, c-format
-msgid "%s: Instruction set mismatch with previous modules"
-msgstr "%s: Setul de instrucþiuni nu se potriveºte cu modulele anterioare"
-
-#: elf32-m32r.c:1975
+#: elf32-m32r.c:3300 elf32-nds32.c:6906
 #, c-format
 msgid "private flags = %lx"
-msgstr "marcaje (flags) private = %lx"
+msgstr "fanioane private = %lx"
 
-#: elf32-m32r.c:1980
+#: elf32-m32r.c:3305
+#, c-format
 msgid ": m32r instructions"
-msgstr ": instrucþiuni m32r"
+msgstr ": instrucÈ›iuni m32r"
 
-#: elf32-m32r.c:1981
+#: elf32-m32r.c:3306
+#, c-format
 msgid ": m32rx instructions"
-msgstr ": instrucþiuni m32rx"
+msgstr ": instrucÈ›iuni m32rx"
+
+#: elf32-m32r.c:3307
+#, c-format
+msgid ": m32r2 instructions"
+msgstr ": instrucÈ›iuni m32r2"
+
+#: elf32-m68hc1x.c:1135
+#, c-format
+msgid "reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
+msgstr "referirea la simbolul Ã®ndepÄƒrtat â€ž%sâ€� folosind o realocare greÈ™itÄƒ poate avea ca rezultat o execuÈ›ie incorectÄƒ"
 
-#: elf32-m68hc1x.c:1217
+#: elf32-m68hc1x.c:1166
 #, c-format
-msgid "Reference to the far symbol `%s' using a wrong relocation may result in incorrect execution"
-msgstr "Referinþa la simbolul depãrtat `%s' folosind o relocare invalidã poate duce la execuþie incorectã"
+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 "adresa XGATE (%lx) nu se aflÄƒ Ã®n memoria RAM partajatÄƒ (0xE000-0xFFFF), prin urmare trebuie sÄƒ poziÈ›ionaÈ›i manual adresa È™i, eventual, sÄƒ gestionaÈ›i pagina, Ã®n codul dvs."
 
-#: elf32-m68hc1x.c:1240
+#: elf32-m68hc1x.c:1182
 #, c-format
 msgid "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked address [%lx:%04lx] (%lx)"
-msgstr "adresa banked [%lx:%04lx] (%lx) nu este în acelaºi bank precum adresa banked curentã [%lx:%04lx] (%lx)"
+msgstr "adresa grupatÄƒ [%lx:%04lx] (%lx) nu este Ã®n acelaÈ™i grup cu adresa curentÄƒ grupatÄƒ [%lx:%04lx] (%lx)"
 
-#: elf32-m68hc1x.c:1259
+#: elf32-m68hc1x.c:1197
 #, c-format
 msgid "reference to a banked address [%lx:%04lx] in the normal address space at %04lx"
-msgstr "referinþã la adresa banked [%lx:%04lx] în spaþiul normal de adresã la %04lx"
+msgstr "referinÈ›Äƒ la o adresÄƒ grupatÄƒ [%lx:%04lx] Ã®n spaÈ›iul de adrese normal la %04lx"
 
-#: elf32-m68hc1x.c:1396
+#: elf32-m68hc1x.c:1233
 #, c-format
-msgid "%s: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
-msgstr "%s: linkuire a fiºierelor compilate pentru întregi(integers)  pe 16-biþi (-mshort) ºi a celorlalte pentru întregi(integers) pe 32-biþi"
+msgid "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you must manually offset the address in your code"
+msgstr "adresa S12 (%lx) nu se aflÄƒ Ã®n memoria RAM partajatÄƒ (0x2000-0x4000), prin urmare trebuie sÄƒ poziÈ›ionaÈ›i manual adresa Ã®n codul dvs."
 
-#: elf32-m68hc1x.c:1404
+#: elf32-m68hc1x.c:1357
 #, c-format
-msgid "%s: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
-msgstr "%s: linkuire a fiºierelor compilate pentru double pe 32-biþi (-fshort-double) ºi a celorlalte pentru double pe 64-biþi"
+msgid "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-bit integers"
+msgstr "%pB: se vinculeazÄƒ fiÈ™iere compilate pentru numere Ã®ntregi pe 16 biÈ›i (-mshort) È™i altele pentru numere Ã®ntregi pe 32 de biÈ›i"
 
-#: elf32-m68hc1x.c:1414
+#: elf32-m68hc1x.c:1364
 #, c-format
-msgid "%s: linking files compiled for HCS12 with others compiled for HC12"
-msgstr "%s:linkuire a fiºierelor compilate pentru HCS12 cu celelalte compilate pentru HC12"
+msgid "%pB: linking files compiled for 32-bit double (-fshort-double) and others for 64-bit double"
+msgstr "%pB: se vinculeazÄƒ fiÈ™iere compilate pentru double pe 32-biÈ›i (-fshort-double) È™i altele pentru double pe 64-biÈ›i"
 
-#: elf32-m68hc1x.c:1462
+#: elf32-m68hc1x.c:1373
+#, c-format
+msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
+msgstr "%pB: se vinculeazÄƒ fiÈ™iere compilate pentru HCS12 cu altele compilate pentru HC12"
+
+#: elf32-m68hc1x.c:1418 elf32-xgate.c:497
+#, c-format
 msgid "[abi=32-bit int, "
-msgstr "[abi=32-bit int, "
+msgstr "[abi=int pe 32-biÈ›i, "
 
-#: elf32-m68hc1x.c:1464
+#: elf32-m68hc1x.c:1420 elf32-xgate.c:499
+#, c-format
 msgid "[abi=16-bit int, "
-msgstr "[abi=16-bit int, "
+msgstr "[abi=int pe 16-biÈ›i, "
 
-#: elf32-m68hc1x.c:1467
+#: elf32-m68hc1x.c:1423 elf32-xgate.c:502
+#, c-format
 msgid "64-bit double, "
-msgstr "double pe 64-biþi, "
+msgstr "double pe 64-biÈ›i, "
 
-#: elf32-m68hc1x.c:1469
+#: elf32-m68hc1x.c:1425 elf32-xgate.c:504
+#, c-format
 msgid "32-bit double, "
-msgstr "double pe 32-biþi, "
+msgstr "double pe 32-biÈ›i, "
 
-#: elf32-m68hc1x.c:1472
+#: elf32-m68hc1x.c:1428
+#, c-format
 msgid "cpu=HC11]"
 msgstr "cpu=HC11]"
 
-#: elf32-m68hc1x.c:1474
+#: elf32-m68hc1x.c:1430
+#, c-format
 msgid "cpu=HCS12]"
 msgstr "cpu=HCS12]"
 
-#: elf32-m68hc1x.c:1476
+#: elf32-m68hc1x.c:1432
+#, c-format
 msgid "cpu=HC12]"
 msgstr "cpu=HC12]"
 
-#: elf32-m68hc1x.c:1479
+#: elf32-m68hc1x.c:1435
+#, c-format
 msgid " [memory=bank-model]"
-msgstr " [memorie=mod-bank]"
+msgstr " [memorie=model-bank]"
 
-#: elf32-m68hc1x.c:1481
+#: elf32-m68hc1x.c:1437
+#, c-format
 msgid " [memory=flat]"
-msgstr " [memorie=întinsã(flat)]"
+msgstr " [memorie=planÄƒ(flat)]"
 
-#: elf32-m68k.c:400
-msgid " [cpu32]"
-msgstr " [cpu32]"
+#: elf32-m68hc1x.c:1440
+#, c-format
+msgid " [XGATE RAM offsetting]"
+msgstr " [poziÈ›ionare RAM XGATE]"
+
+#: elf32-m68k.c:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "%pB foloseÈ™te virgulÄƒ mobilÄƒ hardware, %pB foloseÈ™te virgulÄƒ mobilÄƒ software"
+
+#: elf32-m68k.c:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105
+msgid "unknown"
+msgstr "necunoscut"
+
+#: elf32-m68k.c:1730
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
+msgstr "%pB: depÄƒÈ™ire GOT: numÄƒr de realocÄƒri cu decalaj pe 8 biÈ›i > %d"
 
-#: elf32-m68k.c:403
-msgid " [m68000]"
-msgstr " [m68000]"
+#: elf32-m68k.c:1737
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
+msgstr "%pB: depÄƒÈ™ire GOT: numÄƒrul de realocÄƒri cu decalaj de 8 sau 16 biÈ›i > %d"
+
+#. Pacify gcc -Wall.
+#: elf32-mep.c:139
+#, c-format
+msgid "mep: no reloc for code %d"
+msgstr "mep: nici o realocare pentru codul %d"
+
+#: elf32-mep.c:146
+#, c-format
+msgid "MeP: howto %d has type %d"
+msgstr "MeP: â€žhowtoâ€� %d are tipul %d"
 
-#: elf32-mcore.c:353 elf32-mcore.c:456
+#: elf32-mep.c:618
 #, c-format
-msgid "%s: Relocation %s (%d) is not currently supported.\n"
-msgstr "%s: Relocarea %s (%d) nu este încã suportatã.\n"
+msgid "%pB and %pB are for different cores"
+msgstr "%pB È™i %pB sunt pentru nuclee diferite"
 
-#: elf32-mcore.c:441
+#: elf32-mep.c:637
 #, c-format
-msgid "%s: Unknown relocation type %d\n"
-msgstr "%s: Tip necunoscut de relocare %d\n"
+msgid "%pB and %pB are for different configurations"
+msgstr "%pB È™i %pB sunt pentru configuraÈ›ii diferite"
 
-#: elf32-mips.c:1170 elf64-mips.c:1717 elfn32-mips.c:1664
+#: elf32-mep.c:675
+#, c-format
+msgid "private flags = 0x%lx"
+msgstr "fanioane private = 0x%lx"
+
+#: elf32-metag.c:1856
+#, c-format
+msgid "%pB(%pA): multiple TLS models are not supported"
+msgstr "%pB(%pA): nu sunt acceptate multiple modele TLS"
+
+#: elf32-metag.c:1859
+#, c-format
+msgid "%pB(%pA): shared library symbol %s encountered whilst performing a static link"
+msgstr "%pB(%pA): simbolul bibliotecii partajate %s Ã®ntÃ¢lnit Ã®n timpul efectuÄƒrii unei vinculÄƒri statice"
+
+#: elf32-microblaze.c:1590 elf32-tilepro.c:3020 elfxx-sparc.c:3452
+#: elfxx-tilegx.c:3417
+#, c-format
+msgid "%pB: probably compiled without -fPIC?"
+msgstr "%pB: probabil compilat fÄƒrÄƒ â€ž-fPICâ€�?"
+
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334
+msgid "literal relocation occurs for an external symbol"
+msgstr "realocarea literalÄƒ are loc pentru un simbol extern"
+
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
 msgid "32bits gp relative relocation occurs for an external symbol"
-msgstr "relocarea relativã gp 32bits are loc pe un simbol extern"
+msgstr "realocarea relativÄƒ gp 32bits are loc pe un simbol extern"
+
+#: elf32-msp430.c:914
+#, c-format
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "eroare: dimensiunea finalÄƒ a valorii uleb128 la poziÈ›ia 0x%lx Ã®n %pA din %pB depÄƒÈ™eÈ™te spaÈ›iul disponibil"
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
+msgid "try enabling relaxation to avoid relocation truncations"
+msgstr "Ã®ncercaÈ›i sÄƒ activaÈ›i relaxarea pentru a evita trunchierea realocÄƒrii"
+
+#: elf32-msp430.c:1506
+msgid "internal error: branch/jump to an odd address detected"
+msgstr "eroare internÄƒ: a fost detectatÄƒ o ramurÄƒ/salt la o adresÄƒ imparÄƒ"
+
+#: elf32-msp430.c:2673
+#, c-format
+msgid "warning: %pB: unknown MSPABI object attribute %d"
+msgstr "avertizare: %pB: atribut necunoscut al obiectului MSPABI %d"
+
+#: elf32-msp430.c:2774
+#, c-format
+msgid "error: %pB uses %s instructions but %pB uses %s"
+msgstr "eroare: %pB foloseÈ™te %s instrucÈ›iuni, dar %pB foloseÈ™te %s"
+
+#: elf32-msp430.c:2786
+#, c-format
+msgid "error: %pB uses the %s code model whereas %pB uses the %s code model"
+msgstr "eroare: %pB foloseÈ™te modelul de cod %s, Ã®n timp ce %pB foloseÈ™te modelul de cod %s"
+
+#: elf32-msp430.c:2799
+#, c-format
+msgid "error: %pB uses the large code model but %pB uses MSP430 instructions"
+msgstr "eroare: %pB utilizeazÄƒ modelul de cod mare, dar %pB utilizeazÄƒ instrucÈ›iuni MSP430"
 
-#: elf32-mips.c:1314 elf64-mips.c:1830 elfn32-mips.c:1783
+#: elf32-msp430.c:2810
 #, c-format
-msgid "Linking mips16 objects into %s format is not supported"
-msgstr "Linkuirea obiectelor mips16 în formatul %s nu este suportatã"
+msgid "error: %pB uses the %s data model whereas %pB uses the %s data model"
+msgstr "eroare: %pB utilizeazÄƒ modelul de date %s, Ã®n timp ce %pB utilizeazÄƒ modelul de date %s"
 
-#: elf32-ppc.c:2056
+#: elf32-msp430.c:2823
+#, c-format
+msgid "error: %pB uses the small code model but %pB uses the %s data model"
+msgstr "eroare: %pB utilizeazÄƒ modelul de cod mic, dar %pB utilizeazÄƒ modelul de date %s"
+
+#: elf32-msp430.c:2835
+#, c-format
+msgid "error: %pB uses the %s data model but %pB only uses MSP430 instructions"
+msgstr "eroare: %pB utilizeazÄƒ modelul de date %s, dar %pB utilizeazÄƒ doar instrucÈ›iuni MSP430"
+
+#: elf32-msp430.c:2860
+#, c-format
+msgid "error: %pB can use the upper region for data, but %pB assumes data is exclusively in lower memory"
+msgstr "eroare: %pB poate utiliza regiunea superioarÄƒ pentru date, dar %pB presupune cÄƒ datele se aflÄƒ exclusiv Ã®n memoria inferioarÄƒ"
+
+#: elf32-nds32.c:3680
+#, c-format
+msgid "error: can't find symbol: %s"
+msgstr "eroare: nu se poate gÄƒsi simbolul: %s"
+
+#: elf32-nds32.c:5579
+#, c-format
+msgid "%pB: warning: %s unsupported in shared mode"
+msgstr "%pB: avertisment: %s nu este acceptat Ã®n modul partajat"
+
+#: elf32-nds32.c:5705
+#, c-format
+msgid "%pB: warning: unaligned access to GOT entry"
+msgstr "%pB: avertisment: acces nealiniat la intrarea GOT"
+
+#: elf32-nds32.c:5746
+#, c-format
+msgid "%pB: warning: relocate SDA_BASE failed"
+msgstr "%pB: avertisment: realocarea SDA_BASE a eÈ™uat"
+
+#: elf32-nds32.c:5768
+#, c-format
+msgid "%pB(%pA): warning: unaligned small data access of type %d"
+msgstr "%pB(%pA): avertisment: acces la date mici nealiniate de tip %d"
+
+#: elf32-nds32.c:6694
+#, c-format
+msgid "%pB: ISR vector size mismatch with previous modules, previous %u-byte, current %u-byte"
+msgstr "%pB: dimensiunea vectorului ISR nu se potriveÈ™te cu modulele anterioare, %u-octeÈ›i cel anterior, %u-octeÈ›i cel actual"
+
+#: elf32-nds32.c:6742
+#, c-format
+msgid "%pB: warning: endian mismatch with previous modules"
+msgstr "%pB: avertisment: tipul de endianess nu se potriveÈ™te cu modulele anterioare"
+
+#: elf32-nds32.c:6756
+#, c-format
+msgid "%pB: warning: older version of object file encountered, please recompile with current tool chain"
+msgstr "%pB: avertisment: s-a Ã®ntÃ¢lnit o versiune mai veche a fiÈ™ierului obiect, se recomandÄƒ sÄƒ se recompileze cu lanÈ›ul de instrumente curent"
+
+#: elf32-nds32.c:6844
+#, c-format
+msgid "%pB: error: ABI mismatch with previous modules"
+msgstr "%pB: eroare: ABI nu se potriveÈ™te cu modulele anterioare"
+
+#: elf32-nds32.c:6854
+#, c-format
+msgid "%pB: error: instruction set mismatch with previous modules"
+msgstr "%pB: eroare: setul de instrucÈ›iuni nu se potriveÈ™te cu modulele anterioare"
+
+#: elf32-nds32.c:6881
+#, c-format
+msgid "%pB: warning: incompatible elf-versions %s and %s"
+msgstr "%pB: avertisment: versiuni elf incompatibile %s È™i %s"
+
+#: elf32-nds32.c:6912
+#, c-format
+msgid ": n1 instructions"
+msgstr ": instrucÈ›iuni n1"
+
+#: elf32-nds32.c:6915
+#, c-format
+msgid ": n1h instructions"
+msgstr ": instrucÈ›iuni n1h"
+
+#: elf32-nds32.c:9364
+#, c-format
+msgid "%pB: error: search_nds32_elf_blank reports wrong node"
+msgstr "%pB: eroare: search_nds32_elf_blank raporteazÄƒ nodul greÈ™it"
+
+#: elf32-nds32.c:9628
+#, c-format
+msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
+msgstr "%pB: avertisment: %s indicÄƒ o realocare nerecunoscutÄƒ la %#<PRIx64>"
+
+#: elf32-nds32.c:12893
+#, c-format
+msgid "%pB: nested OMIT_FP in %pA"
+msgstr "%pB: OMIT_FP imbricat Ã®n %pA"
+
+#: elf32-nds32.c:12912
+#, c-format
+msgid "%pB: unmatched OMIT_FP in %pA"
+msgstr "%pB: OMIT_FP fÄƒrÄƒ pereche Ã®n %pA"
+
+#: elf32-or1k.c:1256
+#, c-format
+msgid "%pB: Cannot handle relocation value size of %d"
+msgstr "%pB: nu se poate gestiona dimensiunea valorii de realocare de %d"
+
+#: elf32-or1k.c:1375
+#, c-format
+msgid "%pB: unknown relocation type %d"
+msgstr "%pB tip necunoscut de realocare %d"
+
+#: elf32-or1k.c:1429
+#, c-format
+msgid "%pB: addend should be zero for plt relocations"
+msgstr "%pB: adaosul trebuie sÄƒ fie zero pentru realocÄƒri plt"
+
+#: elf32-or1k.c:1542
+#, c-format
+msgid "%pB: addend should be zero for got relocations"
+msgstr "%pB: adaosul trebuie sÄƒ fie zero pentru realocÄƒri got"
+
+#: elf32-or1k.c:1559
+#, c-format
+msgid "%pB: gotoff relocation against dynamic symbol %s"
+msgstr "%pB: realocare gotoff faÈ›Äƒ de simbolul dinamic %s"
+
+#: elf32-or1k.c:1573 elf32-or1k.c:1588 elf64-alpha.c:4412 elf64-alpha.c:4556
+#, c-format
+msgid "%pB: pc-relative relocation against dynamic symbol %s"
+msgstr "%pB: realocare relativÄƒ-pc faÈ›Äƒ de simbolul dinamic %s"
+
+#: elf32-or1k.c:1602
+#, c-format
+msgid "%pB: non-pic relocation against symbol %s"
+msgstr "%pB: realocare non-pic faÈ›Äƒ de simbolul %s"
+
+#: elf32-or1k.c:1686
+#, c-format
+msgid "%pB: support for local dynamic not implemented"
+msgstr "%pB: suportul pentru dinamic local nu este implementat"
+
+#: elf32-or1k.c:1865
+#, c-format
+msgid "%pB: will not resolve runtime TLS relocation"
+msgstr "%pB: nu se va rezolva realocarea TLS Ã®n timpul de execuÈ›ie"
+
+#: elf32-or1k.c:2199
+#, c-format
+msgid "%pB: bad relocation section name `%s'"
+msgstr "%pB: nume de secÈ›iune de realocare incorect â€ž%sâ€�"
+
+#: elf32-or1k.c:3313
+#, c-format
+msgid "%pB: %s flag mismatch with previous modules"
+msgstr "%pB: nepotrivire a fanionului %s cu modulele anterioare"
+
+#: elf32-ppc.c:990 elf64-ppc.c:1753
 #, c-format
 msgid "generic linker can't handle %s"
-msgstr "linkerul generic nu poate manipula(handle) %s"
+msgstr "editorul de legÄƒturi generic nu poate manipula %s"
 
-#: elf32-ppc.c:2138
+#: elf32-ppc.c:1627
 #, c-format
-msgid "%s: compiled with -mrelocatable and linked with modules compiled normally"
-msgstr "%s: compilat cu -mrelocatable ºi linkuit cu module compilate normal"
+msgid "corrupt %s section in %pB"
+msgstr "secÈ›iune %s coruptÄƒ Ã®n %pB"
 
-#: elf32-ppc.c:2147
+#: elf32-ppc.c:1646
 #, c-format
-msgid "%s: compiled normally and linked with modules compiled with -mrelocatable"
-msgstr "%s: compilat normal ºi linkuite cu module compilate cu -mrelocatable"
+msgid "unable to read in %s section from %pB"
+msgstr "nu se poate citi Ã®n secÈ›iunea %s din %pB"
 
-#: elf32-ppc.c:3413
+#: elf32-ppc.c:1688
 #, c-format
-msgid "%s: relocation %s cannot be used when making a shared object"
-msgstr "%s: relocarea %s nu poate fi folositã când se creazã un shared object"
+msgid "warning: unable to set size of %s section in %pB"
+msgstr "avertisment: nu se poate stabilii dimensiunea secÈ›iunii %s Ã®n %pB"
+
+#: elf32-ppc.c:1737
+msgid "failed to allocate space for new APUinfo section"
+msgstr "nu s-a putut aloca spaÈ›iu pentru secÈ›iunea nouÄƒ APUinfo"
+
+#: elf32-ppc.c:1756
+msgid "failed to compute new APUinfo section"
+msgstr "nu s-a putut calcula noua secÈ›iune APUinfo"
 
-#. It does not make sense to have a procedure linkage
-#. table entry for a local symbol.
-#: elf32-ppc.c:3619
+#: elf32-ppc.c:1759
+msgid "failed to install new APUinfo section"
+msgstr "nu s-a putut instala noua secÈ›iune APUinfo"
+
+#: elf32-ppc.c:2867
 #, c-format
-msgid "%s(%s+0x%lx): %s reloc against local symbol"
-msgstr "relocare %s(%s+0x%lx): %s pe simbol local"
+msgid "%pB: relocation %s cannot be used when making a shared object"
+msgstr "%pB: realocarea %s nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat"
 
-#: elf32-ppc.c:4862 elf64-ppc.c:7789
+#: elf32-ppc.c:3586 elf32-ppc.c:3594
 #, c-format
-msgid "%s: unknown relocation type %d for symbol %s"
-msgstr "%s: tip de relocare %d necunoscut pentru simbolul %s"
+msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
+msgstr "%pB foloseÈ™te virgulÄƒ mobilÄƒ hardware cu precizie dublÄƒ, %pB foloseÈ™te virgulÄƒ mobilÄƒ hardware cu precizie simplÄƒ"
 
-#: elf32-ppc.c:5113
+#: elf32-ppc.c:3616 elf32-ppc.c:3624
 #, c-format
-msgid "%s(%s+0x%lx): non-zero addend on %s reloc against `%s'"
-msgstr "%s(%s+0x%lx): adãugare non-zero în relocarea %s pentru `%s'"
+msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
+msgstr "%pB foloseÈ™te numere Ã®ntregi lungi cu precizie dublÄƒ de 64 de biÈ›i, %pB foloseÈ™te numere Ã®ntregi lungi cu precizie dublÄƒ de 128 de biÈ›i"
 
-#: elf32-ppc.c:5399 elf32-ppc.c:5425 elf32-ppc.c:5484
+#: elf32-ppc.c:3632 elf32-ppc.c:3640
 #, c-format
-msgid "%s: the target (%s) of a %s relocation is in the wrong output section (%s)"
-msgstr "%s: þinta (%s) unei relocãri %s este într-o secþiune invalidã de output (%s)"
+msgid "%pB uses IBM long double, %pB uses IEEE long double"
+msgstr "%pB utilizeazÄƒ IBM long double, %pB utilizeazÄƒ IEEE long double"
 
-#: elf32-ppc.c:5539
+#: elf32-ppc.c:3707 elf32-ppc.c:3716
 #, c-format
-msgid "%s: relocation %s is not yet supported for symbol %s."
-msgstr "%s: relocarea %s nu este încã suportatã pentru simbolul %s."
+msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
+msgstr "%pB utilizeazÄƒ ABI de vector AltiVec, iar %pB utilizeazÄƒ ABI de vector SPE"
 
-#: elf32-ppc.c:5594 elf64-ppc.c:8461
+#: elf32-ppc.c:3745 elf32-ppc.c:3754
 #, c-format
-msgid "%s(%s+0x%lx): unresolvable %s relocation against symbol `%s'"
-msgstr "%s(%s+0x%lx): relocare nerezolvabilã %s pe simbolul `%s'"
+msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
+msgstr "%pB utilizeazÄƒ r3/r4 pentru returnÄƒri de structuri mici, iar %pB utilizeazÄƒ memoria"
 
-#: elf32-ppc.c:5644 elf64-ppc.c:8507
+#: elf32-ppc.c:3818
 #, c-format
-msgid "%s(%s+0x%lx): %s reloc against `%s': error %d"
-msgstr "%s(%s+0x%lx):relocarea %s pe `%s': eroare %d"
+msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr "%pB: compilat cu â€ž-mrelocatableâ€� È™i vinculat cu module compilate normal"
 
-#: elf32-ppc.c:5888
+#: elf32-ppc.c:3826
 #, c-format
-msgid "corrupt or empty %s section in %s"
-msgstr "secþiune %s coruptã sau vidã în %s"
+msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr "%pB: compilat normal È™i vinculat cu module compilate cu â€ž-mrelocatableâ€�"
 
-#: elf32-ppc.c:5895
+#: elf32-ppc.c:3897
 #, c-format
-msgid "unable to read in %s section from %s"
-msgstr "nu se poate citi în secþiunea %s din %s"
+msgid "%pB(%pA+0x%lx): expected 16A style relocation on 0x%08x insn"
+msgstr "%pB(%pA+0x%lx): se aÈ™tepta o realocare de tip 16A la instrucÈ›iunea 0x%08x"
 
-#: elf32-ppc.c:5901
+#: elf32-ppc.c:3916
 #, c-format
-msgid "corrupt %s section in %s"
-msgstr "secþiune coruptã %s în %s"
+msgid "%pB(%pA+0x%lx): expected 16D style relocation on 0x%08x insn"
+msgstr "%pB(%pA+0x%lx): se aÈ™tepta o realocare de tip 16D la instrucÈ›iunea 0x%08x"
 
-#: elf32-ppc.c:5944
+#: elf32-ppc.c:4026
 #, c-format
-msgid "warning: unable to set size of %s section in %s"
-msgstr "avertisment: nu se poate seta mãrimea secþiunii %s în %s"
+msgid "bss-plt forced due to %pB"
+msgstr "bss-plt forÈ›at din cauza %pB"
 
-#: elf32-ppc.c:5994
-msgid "failed to allocate space for new APUinfo section."
-msgstr "nu s-a putut aloca spaþiu pentru secþiunea nouã APUinfo."
+#: elf32-ppc.c:4028
+msgid "bss-plt forced by profiling"
+msgstr "bss-plt forÈ›at de profilare"
 
-#: elf32-ppc.c:6013
-msgid "failed to compute new APUinfo section."
-msgstr "nu s-a putut calcula(compute) secþiunea nouã APUinfo."
+#: elf32-ppc.c:4606 elf64-ppc.c:8517
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr "%H: avertisment: %s insn neaÈ™teptat %#x.\n"
 
-#: elf32-ppc.c:6016
-msgid "failed to install new APUinfo section."
-msgstr "nu s-a putut instala secþiunea APUinfo nouã."
+#. 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:4636 elf64-ppc.c:8582
+#, c-format
+msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n"
+msgstr "%H argument a pierdut __tls_get_addr, optimizarea TLS dezactivatÄƒ\n"
 
-#: elf32-s390.c:2256 elf64-s390.c:2226
+#: elf32-ppc.c:5565 elf32-sh.c:3019 elf32-tilepro.c:2246 elfxx-sparc.c:2464
+#: elfxx-tilegx.c:2495
 #, c-format
-msgid "%s(%s+0x%lx): invalid instruction for TLS relocation %s"
-msgstr "%s(%s+0x%lx): instrucþiune invalidã pentur relocarea TLS %s"
+msgid "%pB: dynamic relocation in read-only section `%pA'\n"
+msgstr "%pB: realocare dinamicÄƒ Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�\n"
 
-#: elf32-sh.c:2103
+#: elf32-ppc.c:6512
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr "%pB: Ajustarea ramurii de la 0x%V cÄƒtre â€ž%sâ€� Ã®n secÈ›iunea %s\n"
+
+#: elf32-ppc.c:7454
+msgid "%P: %H: error: %s with unexpected instruction %x\n"
+msgstr "%P: %H: eroare: %s cu instrucÈ›iunea neaÈ™teptatÄƒ %x\n"
+
+#: elf32-ppc.c:7492
+msgid "%H: fixup branch overflow\n"
+msgstr "%H: remediatÄƒ supraÃ®ncÄƒrcarea ramurii\n"
+
+#: elf32-ppc.c:7532 elf32-ppc.c:7570
 #, c-format
-msgid "%s: 0x%lx: warning: bad R_SH_USES offset"
-msgstr "%s: 0x%lx: avertisment: offset R_SH_USES invalid"
+msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
+msgstr "%pB(%pA+%#<PRIx64>): eroare: %s cu instrucÈ›iunea neaÈ™teptatÄƒ %#x"
 
-#: elf32-sh.c:2115
+#: elf32-ppc.c:7634
 #, c-format
-msgid "%s: 0x%lx: warning: R_SH_USES points to unrecognized insn 0x%x"
-msgstr "%s: 0x%lx: avertisment: R_SH_USES trimite cãtre insn necunoscut 0x%x"
+msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
+msgstr "%X%H: neacceptat bss-plt -fPIC ifunc %s\n"
 
-#: elf32-sh.c:2132
+#: elf32-ppc.c:7670
 #, c-format
-msgid "%s: 0x%lx: warning: bad R_SH_USES load offset"
-msgstr "%s: 0x%lx: avertisment:offset de încãrcare R_SH_USES invalid"
+msgid "%pB: reloc %#x unsupported"
+msgstr "%pB: realocarea %#x nu este acceptatÄƒ"
 
-#: elf32-sh.c:2147
+#: elf32-ppc.c:7953
 #, c-format
-msgid "%s: 0x%lx: warning: could not find expected reloc"
-msgstr "%s: 0x%lx: avertismetn: nu s-a putut gãsi relocarea aºteptatã"
+msgid "%H: non-zero addend on %s reloc against `%s'\n"
+msgstr "%H: adÄƒugare non-zero Ã®n realocarea %s faÈ›Äƒ de â€ž%sâ€�\n"
 
-#: elf32-sh.c:2175
+#. @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:7985
 #, c-format
-msgid "%s: 0x%lx: warning: symbol in unexpected section"
-msgstr "%s: 0x%lx: avertisment: simbol în secþiune neaºteptatã"
+msgid "%X%H: @local call to ifunc %s\n"
+msgstr "%X%H: apel @local la ifunc %s\n"
 
-#: elf32-sh.c:2300
+#: elf32-ppc.c:8163
 #, c-format
-msgid "%s: 0x%lx: warning: could not find expected COUNT reloc"
-msgstr "%s: 0x%lx: avertisment: nu s-a putut gãsi relocarea COUNT aºteptatã"
+msgid "%H: relocation %s for indirect function %s unsupported\n"
+msgstr "%H: realocarea %s pentru funcÈ›ia indirectÄƒ %s nu este acceptatÄƒ\n"
 
-#: elf32-sh.c:2309
+#: elf32-ppc.c:8501 elf32-ppc.c:8532 elf32-ppc.c:8635 elf32-ppc.c:8735
 #, c-format
-msgid "%s: 0x%lx: warning: bad count"
-msgstr "%s: 0x%lx: avertisment: numãrãtoare(count) invalidã"
+msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
+msgstr "%pB: È›inta (%s) a unei realocÄƒri %s este Ã®n secÈ›iunea de ieÈ™ire greÈ™itÄƒ (%s)"
 
-#: elf32-sh.c:2712 elf32-sh.c:3088
+#: elf32-ppc.c:8913 elf32-ppc.c:8934
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr "%X%P: %H: realocarea %s nu este acceptatÄƒ pentru bss-plt\n"
+
+#: elf32-ppc.c:9016
 #, c-format
-msgid "%s: 0x%lx: fatal: reloc overflow while relaxing"
-msgstr "%s: 0x%lx: fatal: relocare depãºitã(overflow) în timpul relaxãrii"
+msgid "%H: error: %s against `%s' not a multiple of %u\n"
+msgstr "%H: eroare: %s faÈ›Äƒ de â€ž%sâ€� nu este un multiplu de %u\n"
 
-#: elf32-sh.c:4654 elf64-sh64.c:1585
-msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr "STO_SH5_ISA32 neaºteptat pe simbol local ce nu poate fi manipulat"
+#: elf32-ppc.c:9045
+#, c-format
+msgid "%H: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%H: realocare %s nerezolvabilÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�\n"
 
-#: elf32-sh.c:4809
+#: elf32-ppc.c:9127
 #, c-format
-msgid "%s: unresolvable relocation against symbol `%s' from %s section"
-msgstr "%s: relocare nerezolvabilã pe simbolul '%s' din secþiunea `%s'"
+msgid "%H: %s reloc against `%s': error %d\n"
+msgstr "%H: %s realocarea faÈ›Äƒ de â€ž%sâ€�: eroare %d\n"
+
+#: elf32-ppc.c:10009
+msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
+msgstr "%X%P: realocÄƒrile de text È™i funcÈ›iile indirecte GNU vor avea ca rezultat o eroare de segmentare Ã®n timpul execuÈ›iei\n"
 
-#: elf32-sh.c:4881
+#: elf32-ppc.c:10013 elf64-ppc.c:18330
+msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
+msgstr "%P: avertisment: realocÄƒrile de text È™i funcÈ›iile indirecte GNU pot avea ca rezultat o eroare de segmentare Ã®n timpul execuÈ›iei\n"
+
+#: elf32-ppc.c:10058
 #, c-format
-msgid "%s: 0x%lx: fatal: unaligned branch target for relax-support relocation"
-msgstr "%s: 0x%lx: fatal: ramurã þintã nealiniatã pentru relocare cu suport de relaxare"
+msgid "%s not defined in linker created %pA"
+msgstr "%s nu este definit Ã®n editorul de legÄƒturi creat %pA"
 
-#: elf32-sh.c:6627 elf64-alpha.c:4848
+#: elf32-pru.c:582 elf32-pru.c:1477
 #, c-format
-msgid "%s: TLS local exec code cannot be linked into shared objects"
-msgstr "%s: codul local executabil TLS nu poate fi linkuit în shared objects"
+msgid "error: %pB: old incompatible object file detected"
+msgstr "eroare: %pB: a fost detectat un fiÈ™ier obiect vechi incompatibil"
+
+#: elf32-pru.c:931
+msgid "relocation out of range"
+msgstr "realocare Ã®n afara intervalului"
+
+#: elf32-pru.c:941 elf32-tic6x.c:2649
+msgid "dangerous relocation"
+msgstr "realocare periculoasÄƒ"
+
+# R-GC, scrie:
+# am Ã®n vedere o traducere alternativÄƒ, a acestui
+# mesaj:
+# â€ždepÄƒÈ™ire/epuizare a stivei de realocare RL78â€�
+# ***
+# la acest moment, amÃ®ndouÄƒ sunt plauzibile, dar
+# cea prezentÄƒ Ã®n acest comentariu, mi se pare
+# mai puÈ›in plauzibilÄƒ decÃ®t cea adoptatÄƒ:
+# â€ždepÄƒÈ™ire (de jos sau de sus) a stivei de realocare RL78â€�.
+# ====
+# la actualizarea la versiunea â€ž2.40.90â€�,
+# am modificat traducerea la:
+# Â«depÄƒÈ™ire a limitei superioare/inferioare a stivei de realocare RL78Â»
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
+msgstr "depÄƒÈ™ire a limitei superioare/inferioare a stivei de realocare RL78"
+
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
+msgstr "realocare R78 Ã®mpÄƒrÈ›itÄƒ la zero"
 
-#: elf32-sh64.c:221 elf64-sh64.c:2407
+#: elf32-rl78.c:1069
+msgid "warning: RL78_SYM reloc with an unknown symbol"
+msgstr "avertizare: relocare RL78_SYM cu un simbol necunoscut"
+
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr "%H: %s Ã®n afara intervalului\n"
+
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
+msgstr "%H: tipul de realocare %u nu este acceptat\n"
+
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr "%H: realocarea %s returneazÄƒ o valoare nerecunoscutÄƒ %x\n"
+
+#: elf32-rl78.c:1220
 #, c-format
-msgid "%s: compiled as 32-bit object and %s is 64-bit"
-msgstr "%s: compilat ca obiect pe 32-biþi ºi %s este pe 64-biþi"
+msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
+msgstr "Conflict ABI RL78: fiÈ™ierul G10 %pB nu poate fi vinculat cu fiÈ™ierul %s %pB"
 
-#: elf32-sh64.c:224 elf64-sh64.c:2410
+#: elf32-rl78.c:1237
 #, c-format
-msgid "%s: compiled as 64-bit object and %s is 32-bit"
-msgstr "%s: compilat ca obiect pe 64-biþi ºi %s este pe 32-biþi"
+msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
+msgstr "Conflict ABI RL78: nu se poate realiza legÄƒtura %s Ã®ntre fiÈ™ierul %pB È™i %s fiÈ™ierul %pB"
+
+#: elf32-rl78.c:1246
+msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
+msgstr "Conflict de fuziune RL78: nu se pot lega Ã®ntre ele obiecte pe 32 È™i 64 de biÈ›i"
 
-#: elf32-sh64.c:226 elf64-sh64.c:2412
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
 #, c-format
-msgid "%s: object size does not match that of target %s"
-msgstr "%s: mãrimea obiectului nu se potriveºte cu cea a þintei %s"
+msgid "- %pB is 64-bit, %pB is not"
+msgstr "- %pB este pe 64 de biÈ›i, iar %pB nu"
 
-#: elf32-sh64.c:461 elf64-sh64.c:2990
+#: elf32-rl78.c:1281
 #, c-format
-msgid "%s: encountered datalabel symbol in input"
-msgstr "%s: s-a întâlnit un simbol etichetãdate(datalabel) în intrare(input)"
+msgid " [64-bit doubles]"
+msgstr " [double pe 64-biÈ›i]"
 
-#: elf32-sh64.c:544
-msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
-msgstr "nepotrivire PTB: o adresã SHmedia (bit 0 == 1)"
+#: elf32-rx.c:618
+#, c-format
+msgid "%pB:%pA: table entry %s outside table"
+msgstr "%pB:%pA: intrare Ã®n tabel %s Ã®n afara tabelului"
 
-#: elf32-sh64.c:547
-msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
-msgstr "nepotrivire PTA: o adresã SHcompact (bit 0 == 0)"
+#: elf32-rx.c:625
+#, c-format
+msgid "%pB:%pA: table entry %s not word-aligned within table"
+msgstr "%pB:%pA: intrarea %s din tabel nu este aliniatÄƒ cu cuvÃ¢ntul Ã®n cadrul tabelului"
 
-#: elf32-sh64.c:565
+#: elf32-rx.c:700
 #, c-format
-msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
-msgstr "%s: eroare GASr:  PTB insn neaºteptat cu R_SH_PT_16"
+msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
+msgstr "%pB:%pA: avertisment: realocarea Red Hat depreciatÄƒ %s a fost detectatÄƒ asupra lui: %s"
 
-#: elf32-sh64.c:614 elf64-sh64.c:1748
+#. 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:720
 #, c-format
-msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
-msgstr "%s: eroare: tip de reloare nealiniat %d la %08x relocarea %08x\n"
+msgid "%pB(%pA): unsafe PID relocation %s at %#<PRIx64> (against %s in %s)"
+msgstr "%pB(%pA): realocare nesigurÄƒ a PID-ului %s la %#<PRIx64> ( pentru %s Ã®n %s)"
 
-#: elf32-sh64.c:698
+#: elf32-rx.c:1304
+msgid "warning: RX_SYM reloc with an unknown symbol"
+msgstr "avertizare: realocare RX_SYM cu un simbol necunoscut"
+
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr "%pB(%pA): eroare: apel la funcÈ›ia nedefinitÄƒ â€ž%sâ€�"
+
+#: elf32-rx.c:3185
+#, c-format
+msgid "there is a conflict merging the ELF header flags from %pB"
+msgstr "existÄƒ un conflict la fuzionarea fanioanelor de antet ELF din %pB"
+
+#: elf32-rx.c:3188
+#, c-format
+msgid "  the input  file's flags: %s"
+msgstr "  fanioanele  fiÈ™ierului de intrare: %s"
+
+#: elf32-rx.c:3190
+#, c-format
+msgid "  the output file's flags: %s"
+msgstr "  fanioanele  fiÈ™ierului de ieÈ™ire: %s"
+
+#: elf32-rx.c:3797
+#, c-format
+msgid "%pB:%pA: table %s missing corresponding %s"
+msgstr "%pB:%pA: tabelul %s lipseÈ™te %s corespunzÄƒtor"
+
+#: elf32-rx.c:3805
+#, c-format
+msgid "%pB:%pA: %s and %s must be in the same input section"
+msgstr "%pB:%pA: %s È™i %s trebuie sÄƒ se afle Ã®n aceeaÈ™i secÈ›iune de intrare"
+
+#: elf32-s390.c:2007 elf64-s390.c:2242
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune nevalidÄƒ pentru realocarea TLS %s"
+
+#: elf32-score.c:1505 elf32-score7.c:1368 elfxx-mips.c:3914
+msgid "not enough GOT space for local GOT entries"
+msgstr "nu existÄƒ destul spaÈ›iu GOT pentru intrÄƒrile GOT locale"
+
+#: elf32-score.c:2737
+msgid "address not word aligned"
+msgstr "adresa nu este aliniatÄƒ cu cuvintele"
+
+#: elf32-score.c:2818 elf32-score7.c:2625
+#, c-format
+msgid "%pB: malformed reloc detected for section %pA"
+msgstr "%pB: realocare incorect formatÄƒ detectatÄƒ pentru secÈ›iunea %pA"
+
+#: elf32-score.c:2872 elf32-score7.c:2679
+#, c-format
+msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
+msgstr "%pB: realocarea CALL15 la %#<PRIx64> nu faÈ›Äƒ de simbolul global"
+
+#: elf32-score.c:3483 elf32-score7.c:3294 elfxx-mips.c:11260
+#, c-format
+msgid "%pB: cannot handle more than %d dynamic symbols"
+msgstr "%pB: nu se pot gestiona mai mult de %d simboluri dinamice"
+
+#: elf32-score.c:3989 elf32-score7.c:3796
+#, c-format
+msgid " [pic]"
+msgstr " [pic]"
+
+#: elf32-score.c:3993 elf32-score7.c:3800
+#, c-format
+msgid " [fix dep]"
+msgstr " [remediazÄƒ dependenÈ›ele]"
+
+#: elf32-score.c:4040 elf32-score7.c:3847
+#, c-format
+msgid "%pB: warning: linking PIC files with non-PIC files"
+msgstr "%pB: avertisment: se vinculeazÄƒ fiÈ™ierele PIC cu fiÈ™iere non-PIC"
+
+#: elf32-sh.c:533
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
+msgstr "%pB: %#<PRIx64>: avertisment: R_SH_USES indicÄƒ cÄƒtre insn nerecunoscut 0x%x"
+
+#: elf32-sh.c:3755
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
+msgstr "%pB: %#<PRIx64>: fatal: È›intÄƒ de ramurÄƒ nealiniatÄƒ pentru realocarea suportului-relax"
+
+#: elf32-sh.c:3785 elf32-sh.c:3801
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
+msgstr "%pB: %#<PRIx64>: fatal: realocare %s nealiniatÄƒ %#<PRIx64>"
+
+#: elf32-sh.c:3817
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32"
+msgstr "%pB: %#<PRIx64>: fatal: realocarea R_SH_PSHA %<PRId64> nu se aflÄƒ Ã®n intervalul -32..32"
+
+#: elf32-sh.c:3833
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32"
+msgstr "%pB: %#<PRIx64>: fatal: realocarea R_SH_PSHL %<PRId64> nu se aflÄƒ Ã®n intervalul -32..32"
+
+#: elf32-sh.c:3963 elf32-sh.c:4358
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
+msgstr "%pB(%pA+%#<PRIx64>): nu poate emite remediere la â€ž%sâ€� Ã®n secÈ›iunea numai-pentru-citire"
+
+#: elf32-sh.c:4461
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
+msgstr "%pB(%pA+%#<PRIx64>): realocare %s faÈ›Äƒ de simbolul extern â€ž%sâ€�"
+
+#: elf32-sh.c:4580
+#, c-format
+msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): decalajul Ã®n realocarea pentru conversia GD->LE este prea mic: %#<PRIx64>"
+
+#. The backslash is to prevent bogus trigraph detection.
+#: elf32-sh.c:4598
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0xd4??)"
+
+#: elf32-sh.c:4606
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0xc7??)"
+
+#: elf32-sh.c:4613
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0xd1??)"
+
+#: elf32-sh.c:4620
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x310c)"
+
+#: elf32-sh.c:4627
 #, c-format
-msgid "%s: could not write out added .cranges entries"
-msgstr "%s: nu am putut scrie intrãrile .cranges adãugate"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x410b)"
 
-#: elf32-sh64.c:760
+#: elf32-sh.c:4634
 #, c-format
-msgid "%s: could not write out sorted .cranges entries"
-msgstr "%s: nu am putut scrie intrãrile .cranges sortate"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x34cc)"
 
-#: elf32-sparc.c:2521 elf64-sparc.c:2314
+#: elf32-sh.c:4669
 #, c-format
-msgid "%s: probably compiled without -fPIC?"
-msgstr "%s: probabil compilat fãrã -fPIC?"
+msgid "%pB(%pA): offset in relocation for IE->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): decalajul Ã®n realocarea pentru conversia IE->LE este prea mic: %#<PRIx64>"
 
-#: elf32-sparc.c:3348
+#: elf32-sh.c:4687
 #, c-format
-msgid "%s: compiled for a 64 bit system and target is 32 bit"
-msgstr "%s: compilat pentru un sistem 64 biþi ºi þinta fiind pe 32 biþi"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0xd0??: mov.l)"
 
-#: elf32-sparc.c:3362
+#: elf32-sh.c:4696
 #, c-format
-msgid "%s: linking little endian files with big endian files"
-msgstr "%s: linkuire fiºiere little endian files cu fiºiere big endian"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x0?12: stc)"
 
-#: elf32-v850.c:753
+#: elf32-sh.c:4703
 #, c-format
-msgid "Variable `%s' cannot occupy in multiple small data regions"
-msgstr "Variabila `%s' nu poate ocupa regiuni multiple de date mici"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)"
+msgstr "%pB(%pA+%#<PRIx64>): instrucÈ›iune neaÈ™teptatÄƒ %#04X (aÈ™teptatÄƒ 0x0?ce: mov.l)"
 
-#: elf32-v850.c:756
+#: elf32-sh.c:4818
 #, c-format
-msgid "Variable `%s' can only be in one of the small, zero, and tiny data regions"
-msgstr "Variabila `%s' nu poate sã fie în una din regiunile mici, zero sau micuþe"
+msgid "%pB(%pA): offset in relocation for GD->IE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): decalajul Ã®n realocarea pentru conversia GD->IE este prea mic: %#<PRIx64>"
 
-#: elf32-v850.c:759
+#: elf32-sh.c:4886
 #, c-format
-msgid "Variable `%s' cannot be in both small and zero data regions simultaneously"
-msgstr "Variabila `%s' nu poate fi simultan ºi în regiuni de date mici ºi de date zero"
+msgid "%pB(%pA): offset in relocation for LD->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): decalajul Ã®n realocarea pentru conversia LD->LE este prea mic: %#<PRIx64>"
 
-#: elf32-v850.c:762
+#: elf32-sh.c:5014
 #, c-format
-msgid "Variable `%s' cannot be in both small and tiny data regions simultaneously"
-msgstr "Variabila `%s' nu poate fi simultan ºi în regiuni de date mici ºi de date micuþe"
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
+msgstr "%X%H: realocarea din â€ž%sâ€� face referire la un segment diferit\n"
 
-#: elf32-v850.c:765
+#: elf32-sh.c:5021
 #, c-format
-msgid "Variable `%s' cannot be in both zero and tiny data regions simultaneously"
-msgstr "Variabila `%s' nu poate fi simultan ºi în regiuni de date zero ºi de date micuþe"
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
+msgstr "%H: avertisment: realocarea din â€ž%sâ€� face referire la un segment diferit\n"
 
-#: elf32-v850.c:1144
-msgid "FAILED to find previous HI16 reloc\n"
-msgstr "EªUARE în gãsirea relocãrii anterioare HI16\n"
+#: elf32-sh.c:5489 elf32-sh.c:5571
+#, c-format
+msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
+msgstr "%pB: â€ž%sâ€� accesat atÃ¢t ca simbol normal, cÃ¢t È™i ca simbol FDPIC"
+
+#: elf32-sh.c:5495 elf32-sh.c:5576
+#, c-format
+msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
+msgstr "%pB: â€ž%sâ€� a fost accesat atÃ¢t ca simbol FDPIC, cÃ¢t È™i ca simbol local al firului de execuÈ›ie"
+
+#: elf32-sh.c:5526
+#, c-format
+msgid "%pB: Function descriptor relocation with non-zero addend"
+msgstr "%pB: Realocarea descriptorului de funcÈ›ie cu adaos non-zero"
+
+#: elf32-sh.c:5733 elf64-alpha.c:4648
+#, c-format
+msgid "%pB: TLS local exec code cannot be linked into shared objects"
+msgstr "%pB: Codul executabil local TLS nu poate fi vinculat Ã®n obiecte partajate"
+
+#: elf32-sh.c:5848
+#, c-format
+msgid "%pB: uses %s instructions while previous modules use %s instructions"
+msgstr "%pB: utilizeazÄƒ %s instrucÈ›iuni Ã®n timp ce modulele anterioare utilizeazÄƒ %s instrucÈ›iuni"
+
+#: elf32-sh.c:5860
+#, c-format
+msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
+msgstr "eroare internÄƒ: Ã®mbinarea arhitecturii â€ž%sâ€� cu arhitectura â€ž%sâ€� a produs o arhitecturÄƒ necunoscutÄƒ"
+
+#: elf32-sh.c:5901
+#, c-format
+msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
+msgstr "%pB: utilizeazÄƒ instrucÈ›iuni care sunt incompatibile cu instrucÈ›iunile utilizate Ã®n modulele anterioare"
+
+#: elf32-sh.c:5914
+#, c-format
+msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
+msgstr "%pB: Ã®ncercare de a amesteca obiecte FDPIC È™i non-FDPIC"
+
+#: elf32-sparc.c:89
+#, c-format
+msgid "%pB: compiled for a 64 bit system and target is 32 bit"
+msgstr "%pB: compilat pentru un sistem pe 64 de biÈ›i È™i È›inta este pe 32 de biÈ›i"
+
+#: elf32-sparc.c:102
+#, c-format
+msgid "%pB: linking little endian files with big endian files"
+msgstr "%pB: se vinculeazÄƒ fiÈ™iere little-endian cu fiÈ™iere big-endian"
+
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr "%pB: valoarea maÈ™inii sparc negestionatÄƒ â€ž%luâ€� a fost detectatÄƒ Ã®n timpul procesÄƒrii de scriere"
+
+#: elf32-spu.c:734
+msgid "%X%P: overlay section %pA does not start on a cache line\n"
+msgstr "%X%P: secÈ›iunea de suprapunere %pA nu Ã®ncepe pe o linie de prestocare(cache)\n"
+
+#: elf32-spu.c:742
+msgid "%X%P: overlay section %pA is larger than a cache line\n"
+msgstr "%X%P: secÈ›iunea de suprapunere %pA este mai mare decÃ¢t o linie de prestocare(cache)\n"
+
+#: elf32-spu.c:762
+msgid "%X%P: overlay section %pA is not in cache area\n"
+msgstr "%X%P: secÈ›iunea de suprapunere %pA nu se aflÄƒ Ã®n zona de prestocare\n"
+
+#: elf32-spu.c:803
+#, c-format
+msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n"
+msgstr "%X%P: secÈ›iunile de suprapunere %pA È™i %pA nu Ã®ncep la aceeaÈ™i adresÄƒ\n"
+
+#: elf32-spu.c:1029
+#, c-format
+msgid "warning: call to non-function symbol %s defined in %pB"
+msgstr "avertisment: apel la simbolul non-funcÈ›ional %s definit Ã®n %pB"
+
+#: elf32-spu.c:1379
+#, c-format
+msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
+msgstr "%pA:0x%v .brinfo lrlive (%u) este diferit de ceea ce a fost determinat prin analizare (%u)\n"
+
+#: elf32-spu.c:1909
+#, c-format
+msgid "%pB is not allowed to define %s"
+msgstr "%pB nu este autorizat sÄƒ defineascÄƒ %s"
 
-#: elf32-v850.c:1789
+#: elf32-spu.c:1917
+#, c-format
+msgid "you are not allowed to define %s in a script"
+msgstr "nu aveÈ›i voie sÄƒ definiÈ›i %s Ã®ntr-un script"
+
+#: elf32-spu.c:1951
+#, c-format
+msgid "%s in overlay section"
+msgstr "%s Ã®n secÈ›iunea de suprapunere"
+
+#: elf32-spu.c:1981
+msgid "overlay stub relocation overflow"
+msgstr "depÄƒÈ™ire a realocÄƒrii ciotului(stub) de suprapunere"
+
+#: elf32-spu.c:1990 elf64-ppc.c:15372
+msgid "stubs don't match calculated size"
+msgstr "cioturile(stubs) sunt Ã®n neconcordanÈ›Äƒ cu mÄƒrimea calculatÄƒ"
+
+#: elf32-spu.c:2575
+#, c-format
+msgid "warning: %s overlaps %s\n"
+msgstr "avertisment: %s se suprapune pe %s\n"
+
+#: elf32-spu.c:2591
+#, c-format
+msgid "warning: %s exceeds section size\n"
+msgstr "avertisment: %s depÄƒÈ™eÈ™te dimensiunea secÈ›iunii\n"
+
+#: elf32-spu.c:2623
+#, c-format
+msgid "%pA:0x%v not found in function table\n"
+msgstr "%pA:0x%v nu a fost gÄƒsitÄƒ Ã®n tabelul de funcÈ›ii\n"
+
+#: elf32-spu.c:2764
+#, c-format
+msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n"
+msgstr "%pB(%pA+0x%v): apel la secÈ›iunea non-cod %pB(%pA), analizÄƒ incompletÄƒ\n"
+
+#: elf32-spu.c:3330
+#, c-format
+msgid "stack analysis will ignore the call from %s to %s\n"
+msgstr "analiza stivei va ignora apelul de la %s la %s\n"
+
+#: elf32-spu.c:4027
+msgid "  calls:\n"
+msgstr "  apelÄƒri:\n"
+
+#: elf32-spu.c:4342
+#, c-format
+msgid "%s duplicated in %s\n"
+msgstr "%s duplicat Ã®n %s\n"
+
+#: elf32-spu.c:4346
+#, c-format
+msgid "%s duplicated\n"
+msgstr "%s duplicat\n"
+
+#: elf32-spu.c:4353
+msgid "sorry, no support for duplicate object files in auto-overlay script\n"
+msgstr "scuze, nu existÄƒ suport pentru fiÈ™ierele obiect duplicate Ã®n scriptul de suprapunere automatÄƒ\n"
+
+#: elf32-spu.c:4395
+#, c-format
+msgid "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local store\n"
+msgstr "dimensiunea fÄƒrÄƒ suprapunere de 0x%v plus dimensiunea maximÄƒ a suprapunerii de 0x%v depÄƒÈ™eÈ™te spaÈ›iul de stocare local\n"
+
+#: elf32-spu.c:4551
+#, c-format
+msgid "%pB:%pA%s exceeds overlay size\n"
+msgstr "%pB:%pA%s depÄƒÈ™eÈ™te dimensiunea suprapunerii\n"
+
+#: elf32-spu.c:4692
+msgid "%P: auto overlay error: %E\n"
+msgstr "%P: eroare de suprapunere automatÄƒ: %E\n"
+
+#: elf32-spu.c:4712
+msgid "Stack size for call graph root nodes.\n"
+msgstr "Dimensiunea stivei pentru nodurile rÄƒdÄƒcinÄƒ ale graficului de apeluri.\n"
+
+#: elf32-spu.c:4713
+msgid ""
+"\n"
+"Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
+msgstr ""
+"\n"
+"Dimensiunea stivei pentru funcÈ›ii.  AdnotÄƒri: â€ž*â€� stivÄƒ maximÄƒ, â€žtâ€� apel la coadÄƒ(tail)\n"
+
+#: elf32-spu.c:4723
+msgid "Maximum stack required is 0x%v\n"
+msgstr "Stiva maximÄƒ necesarÄƒ este 0x%v\n"
+
+#: elf32-spu.c:4742
+msgid "%X%P: stack/lrlive analysis error: %E\n"
+msgstr "%X%P: eroare de analizÄƒ a stivei/lrlive: %E\n"
+
+#: elf32-spu.c:4745
+msgid "%P: can not build overlay stubs: %E\n"
+msgstr "%P: nu se pot construi cioturi(stubs) de suprapunere: %E\n"
+
+#: elf32-spu.c:4814
+msgid "fatal error while creating .fixup"
+msgstr "eroare fatalÄƒ la crearea .fixup"
+
+#: elf32-spu.c:5050
+#, c-format
+msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr "%pB(%s+%#<PRIx64>): realocare %s nerezolvabilÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�"
+
+#: elf32-tic6x.c:1587
+msgid "warning: generating a shared library containing non-PIC code"
+msgstr "avertisment: se genereazÄƒ o bibliotecÄƒ partajatÄƒ care conÈ›ine cod non-PIC"
+
+#: elf32-tic6x.c:1592
+msgid "warning: generating a shared library containing non-PID code"
+msgstr "avertisment: se genereazÄƒ o bibliotecÄƒ partajatÄƒ care conÈ›ine cod non-PID"
+
+#: elf32-tic6x.c:2426
+#, c-format
+msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
+msgstr "%pB: realocare relativÄƒ SB, dar __c6xabi_DSBT_BASE nu este definit"
+
+# R-GC, scrie:
+# traducere alternativÄƒ:
+# â€ž%pB: eroare: atributul %d obligatoriu al obiectului EABI nu este cunoscutâ€�
+#: elf32-tic6x.c:3492
+#, c-format
+msgid "%pB: error: unknown mandatory EABI object attribute %d"
+msgstr "%pB: eroare: atribut de obiect EABI obligatoriu necunoscut %d"
+
+#: elf32-tic6x.c:3501
+#, c-format
+msgid "%pB: warning: unknown EABI object attribute %d"
+msgstr "%pB: avertisment: atribut de obiect EABI necunoscut %d"
+
+#: elf32-tic6x.c:3619 elf32-tic6x.c:3628
+#, c-format
+msgid "error: %pB requires more stack alignment than %pB preserves"
+msgstr "eroare: %pB necesitÄƒ o aliniere a stivei mai mare decÃ¢t cea pÄƒstratÄƒ de %pB"
+
+#: elf32-tic6x.c:3638 elf32-tic6x.c:3647
+#, c-format
+msgid "error: unknown Tag_ABI_array_object_alignment value in %pB"
+msgstr "eroare: valoare Tag_ABI_array_object_alignment necunoscutÄƒ Ã®n %pB"
+
+#: elf32-tic6x.c:3656 elf32-tic6x.c:3665
+#, c-format
+msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB"
+msgstr "eroare: valoare Tag_ABI_array_object_align_expected necunoscutÄƒ Ã®n %pB"
+
+#: elf32-tic6x.c:3674 elf32-tic6x.c:3682
+#, c-format
+msgid "error: %pB requires more array alignment than %pB preserves"
+msgstr "eroare: %pB necesitÄƒ o aliniere a matricei mai mare decÃ¢t cea pÄƒstratÄƒ de %pB"
+
+#: elf32-tic6x.c:3705
+#, c-format
+msgid "warning: %pB and %pB differ in wchar_t size"
+msgstr "avertisment: %pB È™i %pB diferÄƒ Ã®n dimensiunea wchar_t"
+
+#: elf32-tic6x.c:3724
+#, c-format
+msgid "warning: %pB and %pB differ in whether code is compiled for DSBT"
+msgstr "avertisment: %pB È™i %pB diferÄƒ dacÄƒ codul este compilat pentru DSBT"
+
+#: elf32-tilepro.c:3626 elfxx-tilegx.c:4019 elfxx-x86.c:2762
+#: elfnn-aarch64.c:10375 elfnn-kvx.c:4631 elfnn-loongarch.c:6379
+#: elfnn-riscv.c:3801
+#, c-format
+msgid "discarded output section: `%pA'"
+msgstr "secÈ›iune de ieÈ™ire Ã®nlÄƒturatÄƒ: â€ž%pAâ€�"
+
+#: elf32-v850.c:152
+#, c-format
+msgid "variable `%s' cannot occupy in multiple small data regions"
+msgstr "variabila â€ž%sâ€� nu poate ocupa regiuni multiple de date mici"
+
+#: elf32-v850.c:155
+#, c-format
+msgid "variable `%s' can only be in one of the small, zero, and tiny data regions"
+msgstr "variabila â€ž%sâ€� poate fi doar Ã®ntr-una dintre regiunile de date mici, zero È™i minuscule"
+
+#: elf32-v850.c:158
+#, c-format
+msgid "variable `%s' cannot be in both small and zero data regions simultaneously"
+msgstr "variabila â€ž%sâ€� nu poate fi simultan È™i Ã®n regiunea de date mici È™i Ã®n cea de date zero"
+
+#: elf32-v850.c:161
+#, c-format
+msgid "variable `%s' cannot be in both small and tiny data regions simultaneously"
+msgstr "variabila â€ž%sâ€� nu poate fi simultan È™i Ã®n regiunea de date mici È™i Ã®n cea de date minuscule"
+
+#: elf32-v850.c:164
+#, c-format
+msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously"
+msgstr "variabila â€ž%sâ€� nu poate fi simultan È™i Ã®n regiunea de date zero È™i Ã®n cea de date minuscule"
+
+#: elf32-v850.c:466
+msgid "failed to find previous HI16 reloc"
+msgstr "nu s-a putut gÄƒsi realocarea anterioarÄƒ HI16"
+
+#: elf32-v850.c:2309
 msgid "could not locate special linker symbol __gp"
-msgstr "nu am putut localiza simbolul special de linker __gp"
+msgstr "nu s-a putut localiza simbolul special de editare de legÄƒturi __gp"
 
-#: elf32-v850.c:1793
+#: elf32-v850.c:2313
 msgid "could not locate special linker symbol __ep"
-msgstr "nu am putut localiza simbolul special de linker __ep"
+msgstr "nu s-a putut localiza simbolul special de editare de legÄƒturi __ep"
 
-#: elf32-v850.c:1797
+#: elf32-v850.c:2317
 msgid "could not locate special linker symbol __ctbp"
-msgstr "nu am putut localiza simbolul special de linker __ctbp"
+msgstr "nu s-a putut localiza simbolul special de editare de legÄƒturi __ctbp"
+
+#: elf32-v850.c:2539
+#, c-format
+msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment"
+msgstr "eroare: %pB necesitÄƒ aliniere pe 8 octeÈ›i, dar %pB este configurat pentru aliniere pe 4 octeÈ›i"
+
+#: elf32-v850.c:2555
+#, c-format
+msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
+msgstr "eroare: %pB utilizeazÄƒ numere reale de precizie dublÄƒ pe 64 de biÈ›i, dar %pB utilizeazÄƒ numere reale de precizie dublÄƒ pe 32 de biÈ›i"
+
+#: elf32-v850.c:2570
+#, c-format
+msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0"
+msgstr "eroare: %pB utilizeazÄƒ FPU-3.0, dar %pB suportÄƒ doar FPU-2.0"
+
+#: elf32-v850.c:2602
+#, c-format
+msgid " alignment of 8-byte entities: "
+msgstr " alinierea entitÄƒÈ›ilor de 8 octeÈ›i: "
+
+#: elf32-v850.c:2605
+#, c-format
+msgid "4-byte"
+msgstr "4-octeÈ›i"
+
+#: elf32-v850.c:2606
+#, c-format
+msgid "8-byte"
+msgstr "8-octeÈ›i"
+
+#: elf32-v850.c:2607 elf32-v850.c:2619
+#, c-format
+msgid "not set"
+msgstr "nu este definit"
+
+#: elf32-v850.c:2608 elf32-v850.c:2620 elf32-v850.c:2632 elf32-v850.c:2643
+#: elf32-v850.c:2654 elf32-v850.c:2665
+#, c-format
+msgid "unknown: %x"
+msgstr "necunoscut: %x"
+
+#: elf32-v850.c:2614
+#, c-format
+msgid " size of doubles: "
+msgstr " dimensiunea de doubles: "
+
+#: elf32-v850.c:2617
+#, c-format
+msgid "4-bytes"
+msgstr "4-octeÈ›i"
+
+#: elf32-v850.c:2618
+#, c-format
+msgid "8-bytes"
+msgstr "8-octeÈ›i"
+
+#: elf32-v850.c:2626
+#, c-format
+msgid " FPU support required: "
+msgstr " Suport FPU necesar: "
 
-#: elf32-v850.c:1963
+#: elf32-v850.c:2629
 #, c-format
-msgid "%s: Architecture mismatch with previous modules"
-msgstr "%s: Arhitectura nu se potriveºte cu modulele anterioare"
+msgid "FPU-2.0"
+msgstr "FPU-2.0"
 
-#: elf32-v850.c:1983
+#: elf32-v850.c:2630
+#, c-format
+msgid "FPU-3.0"
+msgstr "FPU-3.0"
+
+#: elf32-v850.c:2631
+#, c-format
+msgid "none"
+msgstr "niciunul"
+
+#: elf32-v850.c:2638
+#, c-format
+msgid "SIMD use: "
+msgstr "Utilizare SIMD: "
+
+#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663
+#, c-format
+msgid "yes"
+msgstr "da"
+
+#: elf32-v850.c:2642 elf32-v850.c:2653 elf32-v850.c:2664
+#, c-format
+msgid "no"
+msgstr "nu"
+
+#: elf32-v850.c:2649
+#, c-format
+msgid "CACHE use: "
+msgstr "Utilizare â€žCACHEâ€�: "
+
+#: elf32-v850.c:2660
+#, c-format
+msgid "MMU use: "
+msgstr "Utilizare MMU: "
+
+#: elf32-v850.c:2827 elf32-v850.c:2883
+#, c-format
+msgid "%pB: architecture mismatch with previous modules"
+msgstr "%pB: arhitectura nu se potriveÈ™te cu modulele anterioare"
+
+#. xgettext:c-format.
+#: elf32-v850.c:2901
 #, c-format
 msgid "private flags = %lx: "
-msgstr "marcaje(flags) private=- %lx: "
+msgstr "fanioane private = %lx: "
 
-#: elf32-v850.c:1988
+#: elf32-v850.c:2906
+#, c-format
+msgid "unknown v850 architecture"
+msgstr "arhitecturÄƒ v850 necunoscutÄƒ"
+
+#: elf32-v850.c:2908
+#, c-format
+msgid "v850 E3 architecture"
+msgstr "arhitecturÄƒ v850 E3"
+
+#: elf32-v850.c:2910 elf32-v850.c:2917
+#, c-format
 msgid "v850 architecture"
-msgstr "arhitecturã v850"
+msgstr "arhitecturÄƒ v850"
 
-#: elf32-v850.c:1989
+#: elf32-v850.c:2918
+#, c-format
 msgid "v850e architecture"
-msgstr "arhitecturã v850e"
+msgstr "arhitecturÄƒ v850e"
+
+#: elf32-v850.c:2919
+#, c-format
+msgid "v850e1 architecture"
+msgstr "arhitecturÄƒ v850e1"
+
+#: elf32-v850.c:2920
+#, c-format
+msgid "v850e2 architecture"
+msgstr "arhitecturÄƒ v850e2"
+
+#: elf32-v850.c:2921
+#, c-format
+msgid "v850e2v3 architecture"
+msgstr "arhitecturÄƒ v850e2v3"
+
+#: elf32-v850.c:2922
+#, c-format
+msgid "v850e3v5 architecture"
+msgstr "arhitecturÄƒ v850e3v5"
+
+#: elf32-v850.c:3596 elf32-v850.c:3835
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
+msgstr "%pB: %#<PRIx64>: avertisment: %s indicÄƒ cÄƒtre insns nerecunoscut"
 
-#: elf32-vax.c:549
+#: elf32-v850.c:3606 elf32-v850.c:3845
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
+msgstr "%pB: %#<PRIx64>: avertisment: %s indicÄƒ cÄƒtre insn nerecunoscut %#x"
+
+#: elf32-v850.c:3652 elf32-v850.c:3880
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
+msgstr "%pB: %#<PRIx64>: avertisment: %s indicÄƒ cÄƒtre realocare nerecunoscutÄƒ"
+
+#: elf32-v850.c:3692
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
+msgstr "%pB: %#<PRIx64>: avertisment: %s indicÄƒ cÄƒtre realocare nerecunoscutÄƒ %#<PRIx64>"
+
+#: elf32-vax.c:537
+#, c-format
 msgid " [nonpic]"
 msgstr " [nonpic]"
 
-#: elf32-vax.c:552
+#: elf32-vax.c:540
+#, c-format
 msgid " [d-float]"
 msgstr " [d-float]"
 
-#: elf32-vax.c:555
+#: elf32-vax.c:543
+#, c-format
 msgid " [g-float]"
 msgstr " [g-float]"
 
-#: elf32-vax.c:663
+#: elf32-vax.c:629
+#, c-format
+msgid "%pB: warning: GOT addend of %<PRId64> to `%s' does not match previous GOT addend of %<PRId64>"
+msgstr "%pB: avertisment: adÄƒugarea GOT de %<PRId64> la â€ž%sâ€� nu se potriveÈ™te cu adÄƒugarea GOT anterioarÄƒ de %<PRId64>"
+
+#: elf32-vax.c:1389
 #, c-format
-msgid "%s: warning: GOT addend of %ld to `%s' does not match previous GOT addend of %ld"
-msgstr "%s: avertisment: adãugarea GOT a %ld în `%s' nu se potriveºte adãugãrii GOT anterioare a %ld"
+msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored"
+msgstr "%pB: avertisment: adÄƒugarea PLT de %<PRId64> la â€ž%sâ€� din secÈ›iunea %pA a fost ignoratÄƒ"
 
-#: elf32-vax.c:1667
+#: elf32-vax.c:1515
 #, c-format
-msgid "%s: warning: PLT addend of %d to `%s' from %s section ignored"
-msgstr "%s: avertisment: adãugarea PLT a %d în `%s' din secþiunea %s ignoratã"
+msgid "%pB: warning: %s relocation against symbol `%s' from %pA section"
+msgstr "%pB: avertisment: realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€� din secÈ›iunea %pA"
 
-#: elf32-vax.c:1802
+#: elf32-vax.c:1522
 #, c-format
-msgid "%s: warning: %s relocation against symbol `%s' from %s section"
-msgstr "%s: avertisment: relocare %s pentru simbolul `%s' din secþiunea %s"
+msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section"
+msgstr "%pB: avertisment: realocarea %s Ã®n %#<PRIx64> din secÈ›iunea %pA"
 
-#: elf32-vax.c:1808
+#: elf32-visium.c:824
 #, c-format
-msgid "%s: warning: %s relocation to 0x%x from %s section"
-msgstr "%s: avertisment: relocare %s spre 0x%x din secþiunea %s"
+msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s"
+msgstr "%pB: compilat %s -mtune=%s È™i vinculat cu modulele compilate %s -mtune=%s"
 
-#: elf32-xstormy16.c:462 elf32-ia64.c:2450 elf64-ia64.c:2450
+#: elf32-xgate.c:506
+#, c-format
+msgid "cpu=XGATE]"
+msgstr "cpu=XGATE]"
+
+#: elf32-xgate.c:508
+#, c-format
+msgid "error reading cpu type from elf private data"
+msgstr "eroare la citirea tipului de procesor din datele private elf"
+
+#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2077 elfnn-ia64.c:2345
 msgid "non-zero addend in @fptr reloc"
-msgstr "adãugare non-zero în relocare @fptr"
+msgstr "adÄƒugare non-zero Ã®n realocare @fptr"
+
+#: elf32-xtensa.c:996
+#, c-format
+msgid "%pB(%pA): invalid property table"
+msgstr "%pB(%pA): tabel de proprietÄƒÈ›i nevalid"
+
+#: elf32-xtensa.c:2732
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): decalaj de realocare Ã®n afara intervalului (dimensiune=%#<PRIx64>)"
+
+#: elf32-xtensa.c:2815 elf32-xtensa.c:2938
+msgid "dynamic relocation in read-only section"
+msgstr "realocare dinamicÄƒ Ã®n secÈ›iunea numai-pentru-citire"
+
+#: elf32-xtensa.c:2915
+msgid "TLS relocation invalid without dynamic sections"
+msgstr "realocarea TLS nu este validÄƒ fÄƒrÄƒ secÈ›iuni dinamice"
+
+#: elf32-xtensa.c:3128
+msgid "internal inconsistency in size of .got.loc section"
+msgstr "inconsistenÈ›Äƒ internÄƒ Ã®n dimensiunea secÈ›iunii .got.loc"
 
-#: elf64-alpha.c:1108
+#: elf32-xtensa.c:3434
+#, c-format
+msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x"
+msgstr "%pB: tip de maÈ™inÄƒ incompatibil; ieÈ™irea este 0x%x; intrarea este 0x%x"
+
+#: elf32-xtensa.c:4733 elf32-xtensa.c:4741
+msgid "attempt to convert L32R/CALLX to CALL failed"
+msgstr "Ã®ncercarea de a converti L32R/CALLX Ã®n CALL a eÈ™uat"
+
+#: elf32-xtensa.c:6569 elf32-xtensa.c:6648 elf32-xtensa.c:8074
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
+msgstr "%pB(%pA+%#<PRIx64>): nu a putut decodifica instrucÈ›iunea; posibilÄƒ neconcordanÈ›Äƒ de configurare"
+
+#: elf32-xtensa.c:7815
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY relocation; possible configuration mismatch"
+msgstr "%pB(%pA+%#<PRIx64>): nu s-a putut decodifica instrucÈ›iunea pentru realocarea XTENSA_ASM_SIMPLIFY; posibilÄƒ neconcordanÈ›Äƒ de configurare"
+
+#: elf32-xtensa.c:9673
+msgid "invalid relocation address"
+msgstr "adresÄƒ de realocare nevalidÄƒ"
+
+#: elf32-xtensa.c:9764
+msgid "overflow after relaxation"
+msgstr "debordare dupÄƒ relaxare"
+
+#: elf32-xtensa.c:10910
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
+msgstr "%pB(%pA+%#<PRIx64>): remediere neaÈ™teptatÄƒ pentru realocarea %s"
+
+#: elf32-z80.c:473
+#, c-format
+msgid "%pB: unsupported bfd mach %#lx"
+msgstr "%pB: mach bfd neacceptat %#lx"
+
+#: elf32-z80.c:518
+#, c-format
+msgid "%pB: unsupported mach %#x"
+msgstr "%pB: mach neacceptat %#x"
+
+#: elf32-z80.c:546
+#, c-format
+msgid "%pB: unsupported arch %#x"
+msgstr "%pB: arhitecturÄƒ neacceptatÄƒ %#x"
+
+#: elf64-alpha.c:472
 msgid "GPDISP relocation did not find ldah and lda instructions"
-msgstr "relocarea GPDISP nu a gãsit instrucþiuni ldah ºi lda"
+msgstr "relocarea GPDISP nu a gÄƒsit instrucÈ›iuni ldah È™i lda"
+
+#: elf64-alpha.c:1983
+#, c-format
+msgid "%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr "%pB: realocare dinamicÄƒ faÈ›Äƒ de un simbol local Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�\n"
+
+#: elf64-alpha.c:2435
+#, c-format
+msgid "%pB: .got subsegment exceeds 64K (size %d)"
+msgstr "%pB: subsegmentul .got depÄƒÈ™eÈ™te 64K (dimensiunea %d)"
 
-#: elf64-alpha.c:3731
+#: elf64-alpha.c:2679 elflink.c:15752 elfnn-kvx.c:4016 elfnn-loongarch.c:2016
 #, c-format
-msgid "%s: .got subsegment exceeds 64K (size %d)"
-msgstr "%s: .subsegmentul got depãseºte 64K (size %d)"
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: realocare dinamicÄƒ faÈ›Äƒ de â€ž%pTâ€� Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�\n"
 
-#: elf64-alpha.c:4602 elf64-alpha.c:4614
+#: elf64-alpha.c:2977 elf64-alpha.c:3172
 #, c-format
-msgid "%s: gp-relative relocation against dynamic symbol %s"
-msgstr "%s: relocare relativã-gp pentru simbolul %s"
+msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
+msgstr "%pB: %pA+%#<PRIx64>: avertisment: realocare %s faÈ›Äƒ de insn neaÈ™teptatÄƒ"
 
-#: elf64-alpha.c:4640 elf64-alpha.c:4773
+#: elf64-alpha.c:4372 elf64-alpha.c:4385
 #, c-format
-msgid "%s: pc-relative relocation against dynamic symbol %s"
-msgstr "%s: relocare relativã pc pentru simbolul dinamic %s"
+msgid "%pB: gp-relative relocation against dynamic symbol %s"
+msgstr "%pB: realocare relativÄƒ-gp faÈ›Äƒ de simbolul dinamic %s"
 
-#: elf64-alpha.c:4668
+#: elf64-alpha.c:4441
 #, c-format
-msgid "%s: change in gp: BRSGP %s"
-msgstr "%s: schimbare în gp: BRSGP %s"
+msgid "%pB: change in gp: BRSGP %s"
+msgstr "%pB: schimbare Ã®n gp: BRSGP %s"
 
-#: elf64-alpha.c:4693
+#: elf64-alpha.c:4466 mach-o.c:627 elfnn-loongarch.c:917 elfnn-riscv.c:917
+#: elfnn-riscv.c:1122 elfnn-riscv.c:1164
 msgid "<unknown>"
 msgstr "<necunoscut>"
 
-#: elf64-alpha.c:4698
+#: elf64-alpha.c:4472
 #, c-format
-msgid "%s: !samegp reloc against symbol without .prologue: %s"
-msgstr "%s: !samegp reloc apentru simbol fãrã .prologue: %s"
+msgid "%pB: !samegp reloc against symbol without .prologue: %s"
+msgstr "%pB: realocare !samegp cÄƒtre simbol fÄƒrÄƒ .prolog: %s"
 
-#: elf64-alpha.c:4749
+#: elf64-alpha.c:4530
 #, c-format
-msgid "%s: unhandled dynamic relocation against %s"
-msgstr "%s: relocare dinamicã nemanipulabilã pentru %s"
+msgid "%pB: unhandled dynamic relocation against %s"
+msgstr "%pB: realocare dinamicÄƒ negestionatÄƒ faÈ›Äƒ de %s"
 
-#: elf64-alpha.c:4832
+#: elf64-alpha.c:4565
 #, c-format
-msgid "%s: dtp-relative relocation against dynamic symbol %s"
-msgstr "%s: relocare relativã-dtp pentru simbolul dinamic %s"
+msgid "%pB: pc-relative relocation against undefined weak symbol %s"
+msgstr "%pB: realocare relativÄƒ la pc faÈ™Äƒ de simbolul slab nedefinit %s"
 
-#: elf64-alpha.c:4855
+#: elf64-alpha.c:4631
 #, c-format
-msgid "%s: tp-relative relocation against dynamic symbol %s"
-msgstr "%s: relocare relativã-tp pentru simbolul dinamic %s"
+msgid "%pB: dtp-relative relocation against dynamic symbol %s"
+msgstr "%pB: realocare relativÄƒ-dtp faÈ›Äƒ de simbolul dinamic %s"
 
-#: elf64-hppa.c:2086
+#: elf64-alpha.c:4656
 #, c-format
-msgid "stub entry for %s cannot load .plt, dp offset = %ld"
-msgstr "intrarea trunchiatã pentru %s nu poate încãrca .plt, offset dp = %ld"
+msgid "%pB: tp-relative relocation against dynamic symbol %s"
+msgstr "%pB: realocare relativÄƒ-tp faÈ›Äƒ de simbolul dinamic %s"
 
-#: elf64-mmix.c:1032
+#. Only if it's not an unresolved symbol.
+#: elf64-bpf.c:344
+msgid "internal error: relocation not supported"
+msgstr "eroare internÄƒ: realocarea nu este acceptatÄƒ"
+
+#: elf64-gen.c:71
 #, c-format
-msgid ""
-"%s: Internal inconsistency error for value for\n"
-" linker-allocated global register: linked: 0x%lx%08lx != relaxed: 0x%lx%08lx\n"
-msgstr ""
-"%s: eroare internã de inconsistenþã pentru valoarea\n"
-"registrului global alocat de linker: linkuit: 0x%lx%08lx != relaxat: 0x%lx%08lx\n"
+msgid "%pB: Relocations in generic ELF (EM: %d)"
+msgstr "%pB: RealocÄƒri Ã®n ELF generic (EM: %d)"
+
+#: elf64-hppa.c:2037
+#, c-format
+msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>"
+msgstr "intrarea ciot(stub) pentru %s nu poate Ã®ncÄƒrca .plt, decalaj dp = %<PRId64>"
+
+#: elf64-hppa.c:3241
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot reach %s"
+msgstr "%pB(%pA+%#<PRIx64>): nu se poate atinge %s"
+
+#: elf64-ia64-vms.c:600 elfnn-ia64.c:641
+#, c-format
+msgid "%pB: can't relax br at %#<PRIx64> in section `%pA'; please use brl or indirect branch"
+msgstr "%pB: nu se poate relaxa br la %#<PRIx64> Ã®n secÈ›iunea â€ž%pAâ€�; vÄƒ rugÄƒm sÄƒ folosiÈ›i brl sau ramura indirectÄƒ"
+
+#: elf64-ia64-vms.c:2032 elfnn-ia64.c:2293
+msgid "@pltoff reloc against local symbol"
+msgstr "realocare @pltoff faÈ›Äƒ de simbol local"
+
+#: elf64-ia64-vms.c:3280 elfnn-ia64.c:3673
+#, c-format
+msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)"
+msgstr "%pB: segment de date scurt depÄƒÈ™it (%#<PRIx64> >= 0x400000)"
+
+#: elf64-ia64-vms.c:3290 elfnn-ia64.c:3683
+#, c-format
+msgid "%pB: __gp does not cover short data segment"
+msgstr "%pB: __gp nu acoperÄƒ segmentul de date scurt"
+
+#: elf64-ia64-vms.c:3560 elfnn-ia64.c:3956
+#, c-format
+msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'"
+msgstr "%pB: cod non-pic cu realocare imm faÈ›Äƒ de simbolul dinamic â€ž%sâ€�"
+
+#: elf64-ia64-vms.c:3624 elfnn-ia64.c:4024
+#, c-format
+msgid "%pB: @gprel relocation against dynamic symbol %s"
+msgstr "%pB: realocare @gprel faÈ›Äƒ de simbolul dinamic %s"
+
+#: elf64-ia64-vms.c:3683 elfnn-ia64.c:4087
+#, c-format
+msgid "%pB: linking non-pic code in a position independent executable"
+msgstr "%pB: se vinculeazÄƒ codul non-pic Ã®ntr-un executabil independent de poziÈ›ie"
 
-#: elf64-mmix.c:1416
+#: elf64-ia64-vms.c:3785 elfnn-ia64.c:4225
 #, c-format
-msgid "%s: base-plus-offset relocation against register symbol: (unknown) in %s"
-msgstr "%s:relocare-offset-bazã-plus pentru simbolul registru: (necunoscut) în %s"
+msgid "%pB: @internal branch to dynamic symbol %s"
+msgstr "%pB: ramurÄƒ @internal cÄƒtre simbolul dinamic %s"
 
-#: elf64-mmix.c:1421
+#: elf64-ia64-vms.c:3788 elfnn-ia64.c:4228
 #, c-format
-msgid "%s: base-plus-offset relocation against register symbol: %s in %s"
-msgstr "%s:relocare-offset-bazã-plus pentru simbolul registru: %s în %s"
+msgid "%pB: speculation fixup to dynamic symbol %s"
+msgstr "%pB: remedierea speculaÈ›iei la simbolul dinamic %s"
 
-#: elf64-mmix.c:1465
+#: elf64-ia64-vms.c:3791 elfnn-ia64.c:4231
 #, c-format
-msgid "%s: register relocation against non-register symbol: (unknown) in %s"
-msgstr "%s:relocare registru pentru simbolul non-registru: (necunoscut) în %s"
+msgid "%pB: @pcrel relocation against dynamic symbol %s"
+msgstr "%pB: realocare @pcrell faÈ›Äƒ de simbolul dinamic %s"
 
-#: elf64-mmix.c:1470
+#: elf64-ia64-vms.c:3915 elfnn-ia64.c:4428
+msgid "unsupported reloc"
+msgstr "realocare neacceptatÄƒ"
+
+#: elf64-ia64-vms.c:3952 elfnn-ia64.c:4466
+#, c-format
+msgid "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in section `%pA'."
+msgstr "%pB: lipseÈ™te secÈ›iunea TLS pentru realocarea %s faÈ›Äƒ de â€ž%sâ€� la %#<PRIx64> Ã®n secÈ›iunea â€ž%pAâ€�."
+
+#: elf64-ia64-vms.c:3969 elfnn-ia64.c:4483
+#, c-format
+msgid "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size %#<PRIx64> (> 0x1000000)."
+msgstr "%pB: Nu se poate relaxa br (%s) la â€ž%sâ€� la %#<PRIx64> Ã®n secÈ›iunea â€ž%pAâ€� cu dimensiunea %#<PRIx64> (> 0x1000000)."
+
+#: elf64-ia64-vms.c:4263 elfnn-ia64.c:4742
+#, c-format
+msgid "%pB: linking trap-on-NULL-dereference with non-trapping files"
+msgstr "%pB: vinculare trap-on-NULL-dereference cu fiÈ™iere non-trapping"
+
+#: elf64-ia64-vms.c:4272 elfnn-ia64.c:4751
+#, c-format
+msgid "%pB: linking big-endian files with little-endian files"
+msgstr "%pB: vinculare fiÈ™iere big-endian cu fiÈ™iere little-endian"
+
+#: elf64-ia64-vms.c:4281 elfnn-ia64.c:4760
+#, c-format
+msgid "%pB: linking 64-bit files with 32-bit files"
+msgstr "%pB: vinculare fiÈ™iere pe 64-biÈ›i cu fiÈ™iere pe 32-biÈ›i"
+
+#: elf64-ia64-vms.c:4290 elfnn-ia64.c:4769
+#, c-format
+msgid "%pB: linking constant-gp files with non-constant-gp files"
+msgstr "%pB: vinculare fiÈ™iere constant-gp cu fiÈ™iere non-constant-gp"
+
+#: elf64-ia64-vms.c:4300 elfnn-ia64.c:4779
 #, c-format
-msgid "%s: register relocation against non-register symbol: %s in %s"
-msgstr "%s:relocare registru pentru simbolul non-registru: %s în %s"
+msgid "%pB: linking auto-pic files with non-auto-pic files"
+msgstr "%pB: vinculare fiÈ™iere auto-pic cu fiÈ™iere non-auto-pic"
 
-#: elf64-mmix.c:1507
+#: elf64-ia64-vms.c:5150 elflink.c:5518
 #, c-format
-msgid "%s: directive LOCAL valid only with a register or absolute value"
-msgstr "%s: directiva LOCAL este validã doar cu un registru sau o valoare absolutã"
+msgid "warning: alignment %u of common symbol `%s' in %pB is greater than the alignment (%u) of its section %pA"
+msgstr "avertisment: alinierea %u a simbolului comun â€ž%sâ€� Ã®n %pB este mai mare decÃ¢t alinierea (%u) a secÈ›iunii sale %pA"
 
-#: elf64-mmix.c:1535
+#: elf64-ia64-vms.c:5157
 #, c-format
-msgid "%s: LOCAL directive: Register $%ld is not a local register.  First global register is $%ld."
-msgstr "%s: directivã LOCAL: Registrulr $%ld nu este un registru local.  Primul registru global $%ld."
+msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB"
+msgstr "avertisment: alinierea %u a simbolului â€ž%sâ€� Ã®n %pB este mai micÄƒ decÃ¢t %u Ã®n %pBs"
 
-#: elf64-mmix.c:1994
+#: elf64-ia64-vms.c:5173 elflink.c:5547
 #, c-format
-msgid "%s: Error: multiple definition of `%s'; start of %s is set in a earlier linked file\n"
-msgstr "%s: Eroare: definiþii multiple ale `%s'; începutul lui %s este setat într-un fiºierlinkuit anterior\n"
+msgid "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %pB"
+msgstr "avertisment: dimensiunea simbolului â€ž%sâ€� s-a schimbat de la %<PRIu64> Ã®n %pB la %<PRIu64> Ã®n %pB"
+
+#: elf64-mips.c:4102
+#, c-format
+msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
+msgstr "%pB(%pA): realocarea %<PRIu64> are index de simbol nevalid %ld"
+
+#: elf64-mmix.c:980
+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 "realocare nevalidÄƒ a intrÄƒrii atunci cÃ¢nd se produce o ieÈ™ire Ã®n format non-ELF, non-mmo; vÄƒ rugÄƒm sÄƒ utilizaÈ›i programul Â«objcopyÂ» pentru a converti din ELF sau mmo sau asamblaÈ›i folosind â€ž-no-expandâ€� (pentru gcc, â€ž-Wa,-no-expandâ€�)"
 
-#: elf64-mmix.c:2053
-msgid "Register section has contents\n"
-msgstr "Secþiunea registru nu are conþinut\n"
+#: elf64-mmix.c:1164
+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 "realocare nevalidÄƒ a intrÄƒrii atunci cÃ¢nd se produce o ieÈ™ire Ã®n format non-ELF, non-mmo; vÄƒ rugÄƒm sÄƒ utilizaÈ›i programul Â«objcopyÂ» pentru a converti din ELF sau mmo, sau compilaÈ›i folosind opÈ›iunea gcc â€ž-mno-base-addressesâ€�."
 
-#: elf64-mmix.c:2216
+#: elf64-mmix.c:1191
 #, c-format
 msgid ""
-"Internal inconsistency: remaining %u != max %u.\n"
-"  Please report this bug."
+"%pB: Internal inconsistency error for value for\n"
+" linker-allocated global register: linked: %#<PRIx64> != relaxed: %#<PRIx64>"
 msgstr ""
-"Inconsistenþã internã: rãmâne %u ! = max %u\n"
-"  Vã rugãm raportaþi acest bug."
+"%pB: Eroare internÄƒ de inconsistenÈ›Äƒ pentru valoarea pentru registrul global\n"
+"alocat editorului de legÄƒturi: vinculat: %#<PRIx64> != relaxat: %#<PRIx64>"
 
-#: elf64-ppc.c:2388 libbfd.c:831
+#: elf64-mmix.c:1615
 #, c-format
-msgid "%s: compiled for a big endian system and target is little endian"
-msgstr "%s: compilat pentru un sistem big endiat iar þinta este little endian"
+msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
+msgstr "%pB: realocare base-plus-offset faÈ›Äƒ de simbolul de registru: (necunoscut) Ã®n %pA"
 
-#: elf64-ppc.c:2391 libbfd.c:833
+#: elf64-mmix.c:1621
 #, c-format
-msgid "%s: compiled for a little endian system and target is big endian"
-msgstr "%s: compilat pentru un sistem little endiat iar þinta este big endian"
+msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
+msgstr "%pB: realocare base-plus-offset faÈ›Äƒ de simbolul de registru: %s Ã®n %pA"
 
-#: elf64-ppc.c:4857
+#: elf64-mmix.c:1666
 #, c-format
-msgid "%s: unexpected reloc type %u in .opd section"
-msgstr "%s: tip de relocare neaºteptat %u în secþiune .opd"
+msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
+msgstr "%pB: realocare de registru faÈ›Äƒ de simbolul non-registru: (necunoscut) Ã®n %pA"
 
-#: elf64-ppc.c:4877
+#: elf64-mmix.c:1672
 #, c-format
-msgid "%s: .opd is not a regular array of opd entries"
-msgstr "%s: .opd nu este un domeniu(array) de intrãri opd"
+msgid "%pB: register relocation against non-register symbol: %s in %pA"
+msgstr "%pB:realocare de registru pentru simbolul non-registru: %s Ã®n %pA"
 
-#: elf64-ppc.c:4897
+#: elf64-mmix.c:1709
 #, c-format
-msgid "%s: undefined sym `%s' in .opd section"
-msgstr "%s: sym nedefinit `%s' în secþiune .opd"
+msgid "%pB: directive LOCAL valid only with a register or absolute value"
+msgstr "%pB: directiva LOCAL este validÄƒ doar cu un registru sau o valoare absolutÄƒ"
+
+#: elf64-mmix.c:1738
+#, c-format
+msgid "%pB: LOCAL directive: register $%<PRId64> is not a local register; first global register is $%<PRId64>"
+msgstr "%pB: directiva LOCAL: registrul $%<PRId64> nu este un registru local; primul registru global este $%<PRId64>"
+
+#: elf64-mmix.c:2153
+#, c-format
+msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier linked file"
+msgstr "%pB: eroare: multiple definiÈ›ii pentru â€ž%sâ€�; Ã®nceputul lui %s este stabilit Ã®ntr-un fiÈ™ier vinculat anterior"
+
+#: elf64-mmix.c:2208
+msgid "register section has contents\n"
+msgstr "secÈ›iunea de registru are conÈ›inut\n"
 
-#: elf64-ppc.c:6136
+#: elf64-mmix.c:2399
+#, c-format
+msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
+msgstr "inconsistenÈ›Äƒ internÄƒ: rÄƒmÃ¢ne %lu ! = max %lu\\; raportaÈ›i aceastÄƒ eroare"
+
+#: elf64-ppc.c:1361
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "avertisment: %s ar trebui sÄƒ fie folosit Ã®n loc de %s"
+
+#: elf64-ppc.c:4302
+#, c-format
+msgid "symbol '%s' has invalid st_other for ABI version 1"
+msgstr "simbolul â€ž%sâ€� are st_other nevalid pentru versiunea 1 a ABI"
+
+#: elf64-ppc.c:4485
+#, c-format
+msgid "%pB .opd not allowed in ABI version %d"
+msgstr "%pB .opd nu este permis Ã®n versiunea ABI %d"
+
+#: elf64-ppc.c:5107
+#, c-format
+msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
+msgstr "%H: realocarea %s nu este acceptatÄƒ Ã®n bibliotecile partajate È™i PIE-uri\n"
+
+#: elf64-ppc.c:5277
+msgid "%H: %s reloc unsupported here\n"
+msgstr "%H: realocarea %s nu este acceptatÄƒ aici\n"
+
+#: elf64-ppc.c:5500
+#, c-format
+msgid "%pB uses unknown e_flags 0x%lx"
+msgstr "%pB utilizeazÄƒ e_flags necunoscut 0x%lx"
+
+#: elf64-ppc.c:5508
+#, c-format
+msgid "%pB: ABI version %ld is not compatible with ABI version %ld output"
+msgstr "%pB: versiunea ABI %ld nu este compatibilÄƒ cu versiunea ABI %ld de ieÈ™ire"
+
+#: elf64-ppc.c:5535
+#, c-format
+msgid " [abiv%ld]"
+msgstr " [abiv%ld]"
+
+#: elf64-ppc.c:6845
+msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n"
+msgstr "%P: realocarea copiei faÈ›Äƒ de â€ž%pTâ€� necesitÄƒ o legÄƒturÄƒ plt leneÈ™Äƒ; evitaÈ›i configurarea LD_BIND_NOW=1 sau actualizaÈ›i gcc\n"
+
+#: elf64-ppc.c:7112
+#, c-format
+msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
+msgstr "%pB: simbol nedefinit la realocarea R_PPC64_TOCSAVE"
+
+#: elf64-ppc.c:7363
+#, c-format
+msgid "dynreloc miscount for %pB, section %pA"
+msgstr "numÄƒr greÈ™it de realocÄƒri dinamice pentru %pB, secÈ›iunea %pA"
+
+#: elf64-ppc.c:7454
+#, c-format
+msgid "%pB: .opd is not a regular array of opd entries"
+msgstr "%pB: .opd nu este o matrice obiÈ™nuitÄƒ de intrÄƒri opd"
+
+#: elf64-ppc.c:7464
+#, c-format
+msgid "%pB: unexpected reloc type %u in .opd section"
+msgstr "%pB: tip de realocare neaÈ™teptat %u Ã®n secÈ›iunea .opd"
+
+#: elf64-ppc.c:7486
+#, c-format
+msgid "%pB: undefined sym `%s' in .opd section"
+msgstr "%pB: simbol nedefinit â€ž%sâ€� Ã®n secÈ›iunea .opd"
+
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7987
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr "avertisment: opÈ›iunea â€ž--plt-localentryâ€� este incompatibilÄƒ cu codul pc-relative power10"
+
+#: elf64-ppc.c:7995
+msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
+msgstr "avertisment: opÈ›iunea â€ž--plt-localentryâ€� este deosebit de periculoasÄƒ fÄƒrÄƒ suportul ld.so pentru a detecta Ã®ncÄƒlcÄƒrile ABI"
+
+#: elf64-ppc.c:8311
+msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n"
+msgstr "%H __tls_get_addr lost arg, optimizare TLS dezactivatÄƒ\n"
+
+#: elf64-ppc.c:8746 elf64-ppc.c:9462
+#, c-format
+msgid "%s defined on removed toc entry"
+msgstr "%s definitÄƒ Ã®n intrarea toc eliminatÄƒ"
+
+#: elf64-ppc.c:9419
+#, c-format
+msgid "%H: %s references optimized away TOC entry\n"
+msgstr "%H: %s referinÈ›e optimizate departe de intrarea TOC\n"
+
+#: elf64-ppc.c:9640
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: optimizarea got/toc nu este acceptatÄƒ pentru instrucÈ›iunea %s\n"
+
+#: elf64-ppc.c:10536
+#, c-format
+msgid "warning: discarding dynamic section %s"
+msgstr "avertisment: se eliminÄƒ secÈ›iunea dinamicÄƒ %s"
+
+#: elf64-ppc.c:11692
+msgid "%P: cannot find opd entry toc for `%pT'\n"
+msgstr "%P: nu se poate gÄƒsi intrarea opd toc pentru â€ž%pTâ€�\n"
+
+#: elf64-ppc.c:11842
+#, c-format
+msgid "long branch stub `%s' offset overflow"
+msgstr "depÄƒÈ™ire de decalaj pentru ramura lungÄƒ a ciotului(stub) â€ž%sâ€�"
+
+#: elf64-ppc.c:11869
 #, c-format
 msgid "can't find branch stub `%s'"
-msgstr "nu pot gãsi ramura trunchiatã `%s'"
+msgstr "nu se gÄƒseÈ™te ciotul(stub) de ramurÄƒ â€ž%sâ€�"
 
-#: elf64-ppc.c:6175 elf64-ppc.c:6250
+#: elf64-ppc.c:11930 elf64-ppc.c:12182 elf64-ppc.c:14748
 #, c-format
-msgid "linkage table error against `%s'"
-msgstr "eroare tabel de linkuire pentru `%s'"
+msgid "%P: linkage table error against `%pT'\n"
+msgstr "%P: eroare de tabel de legÄƒturi faÈ›Äƒ de â€ž%pTâ€�\n"
 
-#: elf64-ppc.c:6340
+#: elf64-ppc.c:12381
 #, c-format
 msgid "can't build branch stub `%s'"
-msgstr "nu se poate construi ramura trunchiatã `%s'"
+msgstr "nu se poate construi ciotul(stub) de ramurÄƒ â€ž%sâ€�"
 
-#: elf64-ppc.c:7047
-msgid ".glink and .plt too far apart"
-msgstr ".glink ºi .plt prea departe unul de altul"
+#: elf64-ppc.c:13412
+#, c-format
+msgid "%pB section %pA exceeds stub group size"
+msgstr "%pB secÈ›iunea %pA depÄƒÈ™eÈ™te dimensiunea grupului ciotului(stub)"
 
-#: elf64-ppc.c:7135
-msgid "stubs don't match calculated size"
-msgstr "trunchierile(stubs) sunt în neconcordanþã cu mãrimea calculatã"
+#: elf64-ppc.c:14929
+msgid "__tls_get_addr call offset overflow"
+msgstr "depÄƒÈ™ire a decalajului de apel __tls_get_addr"
+
+#: elf64-ppc.c:15272 elf64-ppc.c:15291
+#, c-format
+msgid "%s offset too large for .eh_frame sdata4 encoding"
+msgstr "%s decalaj prea mare pentru codificarea sdata4 .eh_frame"
 
-#: elf64-ppc.c:7147
+#: elf64-ppc.c:15380
+#, c-format
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
+msgstr[0] "cioturi(stubs) de editor de legÄƒturi Ã®ntr-un grup"
+msgstr[1] "cioturi(stubs) de editor de legÄƒturi Ã®n %u grupuri"
+msgstr[2] "cioturi(stubs) de editor de legÄƒturi Ã®n %u de grupuri"
+
+#: elf64-ppc.c:15387
 #, c-format
 msgid ""
-"linker stubs in %u groups\n"
-"  branch       %lu\n"
-"  toc adjust   %lu\n"
-"  long branch  %lu\n"
-"  long toc adj %lu\n"
-"  plt call     %lu"
+"%s, iter %u\n"
+"  branch         %lu\n"
+"  long branch    %lu\n"
+"  plt call       %lu\n"
+"  global entry   %lu"
 msgstr ""
-"trunchieri(stubs) de linker în grupurile %u\n"
-"  ramurã       %lu\n"
-"  ajustare toc   %lu\n"
-"  ramurã lungã  %lu\n"
-"  ajust. lungã toc %lu\n"
-"  apelare plt     %lu"
+"%s, iteraÈ›ii %u\n"
+"  ramura           %lu\n"
+"  ramura lungÄƒ     %lu\n"
+"  apel plt         %lu\n"
+"  intrare globalÄƒ  %lu"
+
+#: elf64-ppc.c:15769
+#, c-format
+msgid "%H: %s used with TLS symbol `%pT'\n"
+msgstr "%H: %s utilizat cu simbolul TLS â€ž%pTâ€�\n"
+
+#: elf64-ppc.c:15771
+#, c-format
+msgid "%H: %s used with non-TLS symbol `%pT'\n"
+msgstr "%H: %s utilizat cu simbolul non-TLS â€ž%pTâ€�\n"
+
+#: elf64-ppc.c:16555
+#, c-format
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n"
+msgstr "%H: apelul la â€ž%pTâ€� este lipsit de nop, nu se poate restabili toc; (ciot(stub) de apel plt)\n"
+
+#: elf64-ppc.c:16561
+#, c-format
+msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n"
+msgstr "%H: apelul la â€ž%pTâ€� este lipsit de nop, nu se poate restabili toc; (ciot(stub) de salvare/ajustare toc)\n"
+
+#: elf64-ppc.c:17212
+#, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr "%H: %s faÈ›Äƒ de %pT nu este acceptat\n"
+
+#: elf64-ppc.c:17488
+#, c-format
+msgid "%H: %s for indirect function `%pT' unsupported\n"
+msgstr "%H: %s pentru funcÈ›ia indirectÄƒ â€ž%pTâ€� neacceptatÄƒ\n"
+
+#: elf64-ppc.c:17575
+#, c-format
+msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n"
+msgstr "%X%P: %pB: %s faÈ›Äƒ de %pT nu este acceptatÄƒ de â€žglibcâ€� ca realocare dinamicÄƒ\n"
+
+#: elf64-ppc.c:17630
+#, c-format
+msgid "%P: %pB: %s is not supported for `%pT'\n"
+msgstr "%P: %pB: %s nu este acceptat pentru â€ž%pTâ€�\n"
+
+#: elf64-ppc.c:17899
+#, c-format
+msgid "%H: error: %s not a multiple of %u\n"
+msgstr "%H: eroare: %s nu este un multiplu de %u\n"
+
+#: elf64-ppc.c:17922
+#, c-format
+msgid "%H: unresolvable %s against `%pT'\n"
+msgstr "%H: %s nerezolvabil faÈ›Äƒ de â€ž%pTâ€�\n"
+
+#: elf64-ppc.c:18067
+#, c-format
+msgid "%H: %s against `%pT': error %d\n"
+msgstr "%H: %s faÈ›Äƒ de â€ž%pTâ€�: eroare %d\n"
+
+#: elf64-s390.c:2752
+#, c-format
+msgid "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed from executable (rebuild file with -fPIC ?)"
+msgstr "%pB: realocare non-PLT â€ž%sâ€� pentru simbolul definit Ã®n biblioteca partajatÄƒ È™i accesat din executabil (reconstruiÈ›i fiÈ™ierul cu â€ž-fPICâ€�?)"
+
+#: elf64-s390.c:3415
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation %s against misaligned symbol `%s' (%#<PRIx64>) in %pB"
+msgstr "%pB(%pA+%#<PRIx64>): realocarea %s faÈ›Äƒ de simbolul nealiniat â€ž%sâ€� (%#<PRIx64>) Ã®n %pB"
+
+#: elf64-sparc.c:134 elfcode.h:1601
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr "%pB(%pA): realocarea %d are indexul de simbol nevalid %ld"
+
+#: elf64-sparc.c:493
+#, c-format
+msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
+msgstr "%pB: numai registrele %%g[2367] pot fi declarate utilizÃ¢nd STT_REGISTER"
+
+#: elf64-sparc.c:514
+#, c-format
+msgid "register %%g%d used incompatibly: %s in %pB, previously %s in %pB"
+msgstr "registrul %%g%d utilizat de formÄƒ incompatibilÄƒ: %s Ã®n %pB, anterior %s Ã®n %pB"
+
+#: elf64-sparc.c:538
+#, c-format
+msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
+msgstr "simbolul â€ž%sâ€� are tipuri diferite: REGISTER Ã®n %pB, anterior %s Ã®n %pB"
+
+#: elf64-sparc.c:585
+#, c-format
+msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
+msgstr "Simbolul â€ž%sâ€� are tipuri diferite: %s Ã®n %pB, anterior REGISTER Ã®n %pB"
+
+#: elf64-sparc.c:717
+#, c-format
+msgid "%pB: linking UltraSPARC specific with HAL specific code"
+msgstr "%pB: se vinculeazÄƒ cod specific UltraSPARC cu cod specific HAL"
 
-#: elf64-ppc.c:7723
+#: elf64-x86-64.c:1690
+msgid "hidden symbol "
+msgstr "simbol ascuns "
+
+#: elf64-x86-64.c:1693
+msgid "internal symbol "
+msgstr "simbol intern "
+
+#: elf64-x86-64.c:1696 elf64-x86-64.c:1700
+msgid "protected symbol "
+msgstr "simbol protejat "
+
+#: elf64-x86-64.c:1702
+msgid "symbol "
+msgstr "simbol "
+
+#: elf64-x86-64.c:1708
+msgid "undefined "
+msgstr "nedefinit "
+
+#: elf64-x86-64.c:1718 elfnn-loongarch.c:901
+msgid "a shared object"
+msgstr "un obiect partajat"
+
+#: elf64-x86-64.c:1720
+msgid "; recompile with -fPIC"
+msgstr "; recompilaÈ›i cu â€ž-fPICâ€�"
+
+#: elf64-x86-64.c:1725 elfnn-loongarch.c:907
+msgid "a PIE object"
+msgstr "un obiect PIE"
+
+#: elf64-x86-64.c:1727 elfnn-loongarch.c:909
+msgid "a PDE object"
+msgstr "un obiect PDE"
+
+#: elf64-x86-64.c:1729
+msgid "; recompile with -fPIE"
+msgstr "; recompilaÈ›i cu â€ž-fPIEâ€�"
+
+#: elf64-x86-64.c:1733
+#, c-format
+msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s"
+msgstr "%pB: realocarea %s faÈ›Äƒ de %s%sâ€ž%sâ€� nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ %s%s"
+
+#: elf64-x86-64.c:2566
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx64> > %#<PRIx64>) for section `%pA'"
+msgstr "%pB: decalaj de realocare greÈ™it (%#<PRIx64> > %#<PRIx64>) pentru secÈ›iunea â€ž%pAâ€�"
+
+#: elf64-x86-64.c:2630
 #, c-format
-msgid "%s(%s+0x%lx): automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc"
-msgstr "%s(%s+0x%lx): TOCuri multiple nu sunt suportateîn folosirea fiºierelor voastre crt; recompilaþi cu  -mminimal-toc sau upgradaþi gcc"
+msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
+msgstr "%pB: realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€� nu este acceptatÄƒ Ã®n modul x32"
 
-#: elf64-ppc.c:7731
+#: elf64-x86-64.c:2791
 #, c-format
-msgid "%s(%s+0x%lx): sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern"
-msgstr "%s(%s+0 x%lx): optimizare apelare sibling pentru `%s' nu permite automatTOCuri multiple; recompilaþi cu -mminimal-toc sau -fno-optimize-sibling-calls, sau faceþi(make) `%s' extern"
+msgid "%pB: '%s' accessed both as normal and thread local symbol"
+msgstr "%pB: â€ž%sâ€� a fost accesat atÃ¢t ca simbol local normal, cÃ¢t È™i ca simbol local al firului de execuÈ›ie"
 
-#: elf64-ppc.c:8329
+#: elf64-x86-64.c:3046
 #, c-format
-msgid "%s: relocation %s is not supported for symbol %s."
-msgstr "%s: relocarea %s nu este suportatã pentru simbolul %s."
+msgid "%pB: unsupported relocation %s against symbol `%s'"
+msgstr "%pB: realocare %s neacceptatÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�"
 
-#: elf64-ppc.c:8408
+#: elf64-x86-64.c:3472 elfnn-aarch64.c:5784 elfnn-riscv.c:2572
 #, c-format
-msgid "%s: error: relocation %s not a multiple of %d"
-msgstr "%s: eroare: relocarea %s nu este multiplu de %d"
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %<PRId64>"
+msgstr "%pB: realocarea %s faÈ›Äƒ de simbolul STT_GNU_IFUNC â€ž%sâ€� are o adÄƒugare non-zero: %<PRId64>"
 
-#: elf64-sparc.c:1370
+#: elf64-x86-64.c:3741
 #, c-format
-msgid "%s: check_relocs: unhandled reloc type %d"
-msgstr "%s: check_relocs: tip de relocare nemanipulabil %d"
+msgid "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used when making a shared object"
+msgstr "%pB: realocarea R_X86_64_GOTOFF64 faÈ›Äƒ de %s nedefinit â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat"
 
-#: elf64-sparc.c:1407
+#: elf64-x86-64.c:3755
 #, c-format
-msgid "%s: Only registers %%g[2367] can be declared using STT_REGISTER"
-msgstr "%s: Doar regiºtrii %%g[2367] pot fi declaraþi folosind STT_REGISTER"
+msgid "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used when making a shared object"
+msgstr "%pB: realocarea R_X86_64_GOTOFF64 faÈ›Äƒ de %s protejait â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat"
+
+#: elf64-x86-64.c:4045
+#, c-format
+msgid "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in section `%pA' is out of range"
+msgstr "%pB: adÄƒugarea %s%#x Ã®n realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€� la %#<PRIx64> din secÈ›iunea â€ž%pAâ€� este Ã®n afara intervalului"
+
+#: elf64-x86-64.c:4197
+msgid "%P: corrupt input: %pB\n"
+msgstr "%P: intrare coruptÄƒ: %pB\n"
 
-#: elf64-sparc.c:1427
+#: elf64-x86-64.c:5066
 #, c-format
-msgid "Register %%g%d used incompatibly: %s in %s, previously %s in %s"
-msgstr "Registrul %%g%d a folosit incompatibilitãþi: %s în %s, anterior %s în %s"
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr " nu s-a putut converti realocarea GOTPCREL faÈ›Äƒ de â€ž%sâ€�; editaÈ›i din nou legÄƒturile cu â€ž--no-relaxâ€�\n"
 
-#: elf64-sparc.c:1450
+#: elf64-x86-64.c:5225
 #, c-format
-msgid "Symbol `%s' has differing types: REGISTER in %s, previously %s in %s"
-msgstr "Simbolul `%s' are tipuri diferenþiate: REGISTER în %s, anterior %s în %s"
+msgid "%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr "%pB: depÄƒÈ™ire de decalaj relativ la PC Ã®n intrarea PLT pentru â€ž%sâ€�\n"
 
-#: elf64-sparc.c:1496
+#: elf64-x86-64.c:5301
 #, c-format
-msgid "Symbol `%s' has differing types: %s in %s, previously REGISTER in %s"
-msgstr "Simbolul `%s' are tipuri diferenþiate: %s în %s, anterior REGISTER în %s"
+msgid "%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr "%pB: depÄƒÈ™ire de deplasare a ramurii Ã®n intrarea PLT pentru â€ž%sâ€�\n"
 
-#: elf64-sparc.c:3053
+#: elf64-x86-64.c:5354
 #, c-format
-msgid "%s: linking UltraSPARC specific with HAL specific code"
-msgstr "%s: linkuire cod specific UltraSPARC cu cod specific HAL"
+msgid "%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr "%pB: depÄƒÈ™ire de decalaj relativ la PC Ã®n intrarea GOT PLT pentru â€ž%sâ€�\n"
 
-#: elf64-x86-64.c:739
+#: elf64-x86-64.c:5505
 #, c-format
-msgid "%s: %s' accessed both as normal and thread local symbol"
-msgstr "%s: `%s' accesate ºi ca simboluri locale normale ºi ca simboluri locale pe fire (thread)"
+msgid "%pB: Unable to generate dynamic relocs because a suitable section does not exist\n"
+msgstr "%pB: Nu se pot genera realocÄƒri dinamice deoarece nu existÄƒ o secÈ›iune adecvatÄƒ\n"
 
-#: elfcode.h:1113
+#: elfcode.h:342
 #, c-format
-msgid "%s: version count (%ld) does not match symbol count (%ld)"
-msgstr "%s: numãrul versiunii(%ld) nu se potriveºte cu numãrul simbolului (%ld)"
+msgid "warning: %pB has a section extending past end of file"
+msgstr "avertisment: %pB are o secÈ›iune care se extinde dincolo de sfÃ¢rÈ™itul fiÈ™ierului"
 
-#: elfcode.h:1342
+#: elfcode.h:790
 #, c-format
-msgid "%s(%s): relocation %d has invalid symbol index %ld"
-msgstr "%s(%s): relocarea %d are indexul de simbol invalid %ld"
+msgid "warning: %pB has a corrupt string table index"
+msgstr "avertisment: %pB are un index de tabel de È™iruri corupt"
 
-#: elflink.c:1456
+#: elfcode.h:838
 #, c-format
-msgid "%s: warning: unexpected redefinition of indirect versioned symbol `%s'"
-msgstr "%s: avertisment: redefinire neaºteptatã a simbolului indirect cu versiune(versioned) `%s'"
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr "avertisment: %pB are un antet de program cu aliniere nevalidÄƒ"
 
-#: elflink.c:1807
+#: elfcode.h:1056
 #, c-format
-msgid "%s: undefined versioned symbol name %s"
-msgstr "%s: nume de simbol versiune %s nedefinit"
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr "%pB: %pA+%<PRIx64>: adaos de realocare %<PRIx64> prea mare"
 
-#: elflink.c:2142
+#: elfcode.h:1321
 #, c-format
-msgid "%s: relocation size mismatch in %s section %s"
-msgstr "%s: nepotrivire a mãrimii de relocare în %s secþiunea %s"
+msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
+msgstr "%pB: numÄƒrul de versiuni (%<PRId64>) nu se potriveÈ™te cu numÄƒrul de simboluri (%ld)"
 
-#: elflink.c:2434
+#: elfcore.h:280
+#, c-format
+msgid "warning: %pB has a segment extending past end of file"
+msgstr "avertisment: %pB are un segment care se extinde dincolo de sfÃ¢rÈ™itul fiÈ™ierului"
+
+#: elflink.c:1477
+#, c-format
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB section %pA"
+msgstr "%s: definiÈ›ia TLS din secÈ›iunea %pB %pA nu se potriveÈ™te cu definiÈ›ia non-TLS din secÈ›iunea %pB %pA"
+
+#: elflink.c:1483
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
+msgstr "%s: referinÈ›a TLS din %pB nu se potriveÈ™te cu referinÈ›a non-TLS din %pB"
+
+#: elflink.c:1489
+#, c-format
+msgid "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB"
+msgstr "%s: definiÈ›ia TLS din secÈ›iunea %pB %pA nu se potriveÈ™te cu referinÈ›a non-TLS din %pB"
+
+#: elflink.c:1495
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA"
+msgstr "%s: referinÈ›a TLS din %pB nu se potriveÈ™te cu definiÈ›ia non-TLS din secÈ›iunea %pB %pA"
+
+#: elflink.c:2207
+#, c-format
+msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
+msgstr "%pB: redefinire neaÈ™teptatÄƒ a simbolului cu versiune indirectÄƒ â€ž%sâ€�"
+
+#: elflink.c:2720
+#, c-format
+msgid "%pB: version node not found for symbol %s"
+msgstr "%pB: nodul de versiune nu a fost gÄƒsit pentru simbolul %s"
+
+#: elflink.c:2819
+#, c-format
+msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
+msgstr "%pB: index de simbol al realocÄƒrii incorect (%#<PRIx64> >= %#lx) pentru poziÈ›ia %#<PRIx64> din secÈ›iunea â€ž%pAâ€�"
+
+#: elflink.c:2831
+#, 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 simbol diferit de zero (%#<PRIx64>) pentru poziÈ›ia %#<PRIx64> din secÈ›iunea â€ž%pAâ€� cÃ¢nd fiÈ™ierul obiect nu are tabel de simboluri"
+
+#: elflink.c:3017
+#, c-format
+msgid "%pB: relocation size mismatch in %pB section %pA"
+msgstr "%pB: nepotrivire a dimensiunii realocÄƒrii din %pB secÈ›iunea %pA"
+
+#: elflink.c:3350
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
-msgstr "avertisment: tipul ºi mãrimea simbolului dinamic `%s' nu sunt definite"
+msgstr "avertisment: tipul È™i dimensiunea simbolului dinamic â€ž%sâ€� nu sunt definite"
+
+#: elflink.c:3407
+msgid "%P: copy reloc against protected `%pT' is dangerous\n"
+msgstr "%P: copierea realocÄƒrii faÈ›Äƒ de â€ž%pTâ€� protejat este periculoasÄƒ\n"
 
-#: elflink.h:1022
+#: elflink.c:4363
+msgid "%P: %pB: failed to add %s to first hash\n"
+msgstr "%P: %pB: nu s-a reuÈ™it sÄƒ se adauge %s la first_hash\n"
+
+#: elflink.c:4431
+msgid "%P: first_hash failed to create: %E\n"
+msgstr "%P: first_hash nu a reuÈ™it sÄƒ creeze: %E\n"
+
+#: elflink.c:4462
 #, c-format
-msgid "%s: %s: invalid version %u (max %d)"
-msgstr "%s: %s: versiune invalidã %u (max %d)"
+msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
+msgstr "s-a gÄƒsit codul de maÈ™inÄƒ ELF alternativ (%d) Ã®n %pB, se aÈ™tepta %d"
 
-#: elflink.h:1063
+#: elflink.c:4945
 #, c-format
-msgid "%s: %s: invalid needed version %d"
-msgstr "%s: %s: versiune necesarã %d invalidã"
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: decalaj de versiune nevalid %lx (maxim %lx)"
 
-#: elflink.h:1238
+#: elflink.c:5015
 #, c-format
-msgid "Warning: alignment %u of symbol `%s' in %s is smaller than %u in %s"
-msgstr "Avertisment: alinierea %u al simbolului `%s' din %s este mai micã decât %u în %s"
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: simbolul local %s la indexul %lu (>= sh_info din %lu)"
 
-#: elflink.h:1252
+#: elflink.c:5164
 #, c-format
-msgid "Warning: size of symbol `%s' changed from %lu in %s to %lu in %s"
-msgstr "Avertisment: mãrimea simbolului `%s' a fost schimbatã din %lu din %s în %lu din %s"
+msgid "%pB: not enough version information"
+msgstr "%pB: nu sunt suficiente informaÈ›ii despre versiune"
 
-#: elflink.h:2160
+#: elflink.c:5202
+#, c-format
+msgid "%pB: %s: invalid version %u (max %d)"
+msgstr "%pB: %s: versiune nevalidÄƒ %u (max %d)"
+
+#: elflink.c:5239
+#, c-format
+msgid "%pB: %s: invalid needed version %d"
+msgstr "%pB: %s: versiune necesarÄƒ nevalidÄƒ %d"
+
+#: elflink.c:5525
+#, c-format
+msgid "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used by the common definition in %pB"
+msgstr "avertisment: alinierea %u a simbolului normal â€ž%sâ€� Ã®n %pB este mai micÄƒ decÃ¢t %u folositÄƒ de definiÈ›ia comunÄƒ Ã®n %pB"
+
+#: elflink.c:5532
+msgid "warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."
+msgstr "avertizare: NOTÄ‚: discrepanÈ›ele de aliniere pot cauza probleme reale.  Se recomandÄƒ efectuarea de investigaÈ›ii."
+
+#: elflink.c:5554
+msgid "warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."
+msgstr "avertizare: NOTÄ‚: discrepanÈ›ele de dimensiuni pot cauza probleme reale.  Se recomandÄƒ efectuarea de investigaÈ›ii."
+
+#: elflink.c:5697
+#, c-format
+msgid "%pB: undefined reference to symbol '%s'"
+msgstr "%pB: referinÈ›Äƒ nedefinitÄƒ la simbolul â€ž%sâ€�"
+
+#: elflink.c:6812
+#, c-format
+msgid "%pB: stack size specified and %s set"
+msgstr "%pB: dimensiunea stivei specificatÄƒ È™i %s definitÄƒ"
+
+#: elflink.c:6816
+#, c-format
+msgid "%pB: %s not absolute"
+msgstr "%pB: %s nu este absolut"
+
+#: elflink.c:7028
 #, c-format
 msgid "%s: undefined version: %s"
-msgstr "%s:versiune %s nedefinitã"
+msgstr "%s: versiune nedefinitÄƒ: %s"
+
+#: elflink.c:7419
+msgid "error: creating an executable stack because of -z execstack command line option"
+msgstr "eroare: se creeazÄƒ o stivÄƒ executabilÄƒ datoritÄƒ opÈ›iunii din linia de comandÄƒ â€ž-z execstackâ€�"
+
+#: elflink.c:7425
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr "avertisment: activarea unei stive executabile datoritÄƒ opÈ›iunii din linia de comandÄƒ â€ž-z execstackâ€�"
+
+#: elflink.c:7487
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"
+msgstr "eroare: %s: declanÈ™eazÄƒ generarea unei stive executabile (deoarece are o secÈ›iune executabilÄƒ .note.GNU-stack)"
+
+#: elflink.c:7493
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr "avertisment: %s: necesitÄƒ stivÄƒ executabilÄƒ (deoarece secÈ›iunea .note.GNU-stack este executabilÄƒ)"
+
+#: elflink.c:7501
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"
+msgstr "eroare: %s: declanÈ™eazÄƒ generarea unei stive executabile deoarece nu are o secÈ›iune .note.GNU-stack"
+
+#: elflink.c:7507
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr "avertisment: %s: lipsa secÈ›iunii .note.GNU-stack implicÄƒ stivÄƒ executabilÄƒ"
+
+#: elflink.c:7510
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr "NOTÄ‚: Acest comportament este depreciat È™i va fi eliminat Ã®ntr-o versiune viitoare a editorului de legÄƒturi."
+
+#: elflink.c:7664
+#, c-format
+msgid "%pB: .preinit_array section is not allowed in DSO"
+msgstr "%pB: secÈ›iunea .preinit_array section nu este permisÄƒ Ã®n DSO"
+
+#: elflink.c:9284
+#, c-format
+msgid "undefined %s reference in complex symbol: %s"
+msgstr "referinÈ›Äƒ %s nedefinitÄƒ Ã®n simbolul complex: %s"
+
+#: elflink.c:9447 elflink.c:9455
+msgid "division by zero"
+msgstr "Ã®mpÄƒrÈ›ire la zero"
+
+#: elflink.c:9469
+#, c-format
+msgid "unknown operator '%c' in complex symbol"
+msgstr "operator necunoscut â€ž%câ€� Ã®n simbolul complex"
+
+#. PR 21524: Let the user know if a symbol was removed by garbage collection.
+#: elflink.c:9805
+#, c-format
+msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
+msgstr "%pB:%pA: eroare: realocarea face referire la simbolul %s care a fost eliminat de colectarea deÈ™eurilor (garbage collection)"
+
+#: elflink.c:9808
+#, c-format
+msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
+msgstr "%pB:%pA: eroare: Ã®ncercaÈ›i sÄƒ reeditaÈ›i legÄƒturile cu â€ž--gc-keep-exportedâ€� activat"
+
+#: elflink.c:10059 elflink.c:10077 elflink.c:10116 elflink.c:10134
+#, c-format
+msgid "%pB: unable to sort relocs - they are in more than one size"
+msgstr "%pB: nu se pot sorta realocÄƒrile - acestea au mai multe dimensiuni"
+
+#. The section size is not divisible by either -
+#. something is wrong.
+#: elflink.c:10093 elflink.c:10150
+#, c-format
+msgid "%pB: unable to sort relocs - they are of an unknown size"
+msgstr "%pB: nu se pot sorta realocÄƒrile - acestea au o dimensiune necunoscutÄƒ"
+
+#: elflink.c:10202
+msgid "not enough memory to sort relocations"
+msgstr "memorie insuficientÄƒ pentru a sorta realocÄƒrile"
+
+#: elflink.c:10536
+#, c-format
+msgid "%pB: too many sections: %d (>= %d)"
+msgstr "%pB: prea multe secÈ›iuni: %d (>= %d)"
+
+#: elflink.c:10812
+#, c-format
+msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: simbolul intern â€ž%sâ€� din %pB este referit de cÄƒtre DSO"
+
+#: elflink.c:10815
+#, c-format
+msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: simbolul ascuns â€ž%sâ€� din %pB este referit de cÄƒtre DSO"
+
+#: elflink.c:10818
+#, c-format
+msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: simbolul local â€ž%sâ€� din %pB este referit de cÄƒtre DSO"
+
+#: elflink.c:10911
+#, c-format
+msgid "%pB: could not find output section %pA for input section %pA"
+msgstr "%pB: nu s-a putut gÄƒsi secÈ›iunea de ieÈ™ire %pA pentru secÈ›iunea de intrare %pA"
+
+#: elflink.c:11069
+#, c-format
+msgid "%pB: protected symbol `%s' isn't defined"
+msgstr "%pB: simbolul protejat â€ž%sâ€� nu este definit"
+
+#: elflink.c:11072
+#, c-format
+msgid "%pB: internal symbol `%s' isn't defined"
+msgstr "%pB: simbolul intern â€ž%sâ€� nu este definit"
+
+#: elflink.c:11075
+#, c-format
+msgid "%pB: hidden symbol `%s' isn't defined"
+msgstr "%pB: simbolul ascuns â€ž%sâ€� nu este definit"
 
-#: elflink.h:2226
+#: elflink.c:11107
 #, c-format
-msgid "%s: .preinit_array section is not allowed in DSO"
-msgstr "%s: secþiunea .preinit_array section nu este permisã în DSO"
+msgid "%pB: no symbol version section for versioned symbol `%s'"
+msgstr "%pB: nicio secÈ›iune de versiune a simbolului pentru simbolul cu versiunea â€ž%sâ€�"
 
-#: elflink.h:3078
-msgid "Not enough memory to sort relocations"
-msgstr "Nu existã memorie suficientã pentru a sorta relocãrile"
+#: elflink.c:11649
+#, c-format
+msgid "error: %pB: unable to create group section symbol"
+msgstr "eroare: %pB: nu s-a putut crea simbolul secÈ›iunii grupului"
+
+#: elflink.c:11798
+#, c-format
+msgid "error: %pB contains a reloc (%#<PRIx64>) for section '%pA' that references a non-existent global symbol"
+msgstr "eroare: %pB conÈ›ine o realocare (%#<PRIx64>) pentru secÈ›iunea â€ž%pAâ€� care face referire la un simbol global inexistent"
 
-#: elflink.h:3958 elflink.h:4001
+#: elflink.c:12264
 #, c-format
-msgid "%s: could not find output section %s"
-msgstr "%s: nu s-a putut gãsi secþiunea de output %s"
+msgid "error: %pB: size of section %pA is not multiple of address size"
+msgstr "eroare: %pB: dimensiunea secÈ›iunii %pA nu este multiplu al dimensiunii adresei"
+
+#: elflink.c:12544
+#, c-format
+msgid "%pB: no symbol found for import library"
+msgstr "%pB: nu a fost gÄƒsit niciun simbol pentru biblioteca de import"
+
+#: elflink.c:13150
+msgid "%P: %pB: failed to finish relative relocations\n"
+msgstr "%P: %pB: eÈ™ec la finalizarea realocÄƒrilor relative\n"
 
-#: elflink.h:3964
+#: elflink.c:13227
+#, c-format
+msgid "%pB: file class %s incompatible with %s"
+msgstr "%pB: clasa de fiÈ™iere %s este incompatibilÄƒ cu %s"
+
+#: elflink.c:13449
+#, c-format
+msgid "%pB: failed to generate import library"
+msgstr "%pB: eÈ™ec la generarea bibliotecii de import"
+
+#: elflink.c:13610
 #, c-format
 msgid "warning: %s section has zero size"
-msgstr "avertisment: secþiunea %s are mãrime zero"
+msgstr "avertisment: secÈ›iunea %s are dimensiunea zero"
+
+#: elflink.c:13658
+#, c-format
+msgid "warning: section '%s' is being made into a note"
+msgstr "avertisment: secÈ›iunea â€ž%sâ€� este transformatÄƒ Ã®ntr-o notÄƒ"
+
+#: elflink.c:13752
+msgid "%P%X: read-only segment has dynamic relocations\n"
+msgstr "%P%X: segmentul numai-pentru-citire are realocÄƒri dinamice\n"
+
+#: elflink.c:13755
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr "%P: avertisment: se creeazÄƒ DT_TEXTREL Ã®ntr-un obiect partajat\n"
+
+#: elflink.c:13758
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr "%P: avertisment: se creeazÄƒ DT_TEXTREL Ã®ntr-un PDE\n"
+
+#: elflink.c:13761
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: avertisment: se creeazÄƒ DT_TEXTREL Ã®ntr-un PIE\n"
+
+#: elflink.c:13890
+msgid "%P%X: can not read symbols: %E\n"
+msgstr "%P%X: nu se poate citi simbolurile: %E\n"
+
+#: elflink.c:14312
+msgid "%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%P: %pB(%pA): eroare: opÈ›iunea â€ž--gc-sectionsâ€� necesitÄƒ o secÈ›iune ataÈ™atÄƒ ca argument\n"
+
+#: elflink.c:14793
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
+msgstr "%pB: %pA+%#<PRIx64>: nu a fost gÄƒsit niciun simbol pentru INHERIT"
+
+#: elflink.c:14834
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: secÈ›iunea â€ž%pAâ€�: intrarea VTENTRY coruptÄƒ"
+
+#: elflink.c:14977
+#, c-format
+msgid "unrecognized INPUT_SECTION_FLAG %s\n"
+msgstr "INPUT_SECTION_FLAG nerecunoscut %s\n"
+
+#: elflink.c:15758
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: avertisment: realocare faÈ›Äƒ de â€ž%sâ€� Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�\n"
+
+#: elflink.c:15847
+msgid "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault at runtime; recompile with %s\n"
+msgstr "%P: avertisment: FuncÈ›iile indirecte GNU cu DT_TEXTREL pot avea ca rezultat o eroare de segmentare Ã®n timpul execuÈ›iei; recompilaÈ›i cu %s\n"
+
+#: elfxx-aarch64.c:478
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: avertisment: TLS slab este definit de implementare È™i este posibil sÄƒ nu funcÈ›ioneze conform aÈ™teptÄƒrilor"
+
+#: elfxx-aarch64.c:786
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "%Xerror: a fost gÄƒsit un total de %d intrÄƒri incompatibile cu cerinÈ›ele BTI.\n"
+
+#: elfxx-aarch64.c:788
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "avertisment: a fost gÄƒsit un total de %d intrÄƒri incompatibile cu cerinÈ›ele BTI.\n"
+
+#: elfxx-aarch64.c:798
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "%Xerror: a gÄƒsit un total de %d intrÄƒri incompatibile cu cerinÈ›ele GCS.\n"
+
+#: elfxx-aarch64.c:800
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "avertisment: a gÄƒsit un total de %d intrÄƒri incompatibile cu cerinÈ›ele GCS.\n"
+
+#: elfxx-aarch64.c:810
+#, c-format
+msgid "%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "%Xerror: a fost gÄƒsit un total de %d obiecte legate dinamic incompatibile cu cerinÈ›ele GCS.\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "warning: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "avertisment: a gÄƒsit un total de %d obiecte legate dinamic incompatibile cu cerinÈ›ele GCS.\n"
+
+#: elfxx-aarch64.c:971
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "eroare: %pB: <dimensiunea utilizatÄƒ de AArch64 este coruptÄƒ: 0x%x>"
 
-#: elflink.h:4483
+#: elfxx-aarch64.c:1115
 #, c-format
-msgid "%s: %s symbol `%s' in %s is referenced by DSO"
-msgstr "%s: %s simbolul `%s' în %s este referit de DSO"
+msgid "%pB: warning: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: avertisment: BTI este solicitat de â€ž-z force-btiâ€�, dar acest fiÈ™ier obiect de intrare nu are nota de proprietate necesarÄƒ.\n"
 
-#: elflink.h:4564
+#: elfxx-aarch64.c:1117
 #, c-format
-msgid "%s: could not find output section %s for input section %s"
-msgstr "%s: nu am putut gãsi secþiunea de output %s pentru secþiunea de input %s"
+msgid "%X%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: eroare: BTI este solicitat de â€ž-z force-btiâ€�, dar acest fiÈ™ier obiect de intrare nu are nota de proprietate necesarÄƒ.\n"
 
-#: elflink.h:4666
+#: elfxx-aarch64.c:1149
 #, c-format
-msgid "%s: %s symbol `%s' isn't defined"
-msgstr "%s: %s simbolul `%s' nu este definit"
+msgid "%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%pB: avertisment: GCS este solicitat de â€ž-z gcsâ€�, dar aceastÄƒ bibliotecÄƒ partajatÄƒ nu are nota de proprietate necesarÄƒ. Este posibil ca Ã®ncÄƒrcÄƒtorul dinamic sÄƒ nu activeze GCS sau sÄƒ refuze sÄƒ Ã®ncarce programul cu excepÈ›ia cazului Ã®n care toate dependenÈ›ele bibliotecii partajate au marcajul GCS.\n"
 
-#: elflink.h:5053 elflink.h:5095
-msgid "%T: discarded in section `%s' from %s\n"
-msgstr "%T: abandonat(discarded) în secþiunea `%s' din %s\n"
+#: elfxx-aarch64.c:1153
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%X%pB: eroare: GCS este cerut de â€ž-z gcsâ€�, dar aceastÄƒ bibliotecÄƒ partajatÄƒ nu are nota de proprietate necesarÄƒ. Este posibil ca Ã®ncÄƒrcÄƒtorul dinamic sÄƒ nu activeze GCS sau sÄƒ refuze sÄƒ Ã®ncarce programul cu excepÈ›ia cazului Ã®n care toate dependenÈ›ele bibliotecii partajate au marcajul GCS.\n"
+
+#: elfxx-aarch64.c:1159
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: avertisment: GCS este solicitat de â€ž-z gcsâ€�, dar acest fiÈ™ier obiect de intrare nu are nota de proprietate necesarÄƒ.\n"
+
+#: elfxx-aarch64.c:1161
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: eroare: GCS este solicitat de â€ž-z gcsâ€�, dar acest fiÈ™ier obiect de intrare nu are nota de proprietate necesarÄƒ.\n"
+
+#: elfxx-loongarch.c:1911
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr "%pB: tip de relocare neacceptat %s"
+
+#: elfxx-loongarch.c:1939
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr "%pB: tip de realocare bfd neacceptat %#x"
+
+#: elfxx-loongarch.c:2013
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr "%pB: realocare %s deplasare dreapta %d eroare 0x%lx"
 
-#: elfxx-mips.c:887
+#: elfxx-loongarch.c:2032
+#, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr "%pB: realocare %s depÄƒÈ™ire 0x%lx"
+
+#: elfxx-mips.c:1534
 msgid "static procedure (no name)"
-msgstr "procedurã staticã (fãrã nume)"
+msgstr "procedurÄƒ staticÄƒ (fÄƒrÄƒ nume)"
 
-#: elfxx-mips.c:1897
-msgid "not enough GOT space for local GOT entries"
-msgstr "nu existã destul spaþiu GOT pentru intrãrile GOT locale"
+#: elfxx-mips.c:5895
+msgid "MIPS16 and microMIPS functions cannot call each other"
+msgstr "FuncÈ›iile MIPS16 È™i microMIPS nu se pot apela Ã®ntre ele"
+
+#: elfxx-mips.c:6665
+msgid "%X%H: unsupported JALX to the same ISA mode\n"
+msgstr "%X%H: JALX neacceptat pentru acelaÈ™i mod ISA\n"
+
+#: elfxx-mips.c:6698
+msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
+msgstr "%X%H: salt nesuportat Ã®ntre modurile ISA; luaÈ›i Ã®n considerare recompilarea cu inter-vincularea (interlinking) activatÄƒ\n"
+
+#: elfxx-mips.c:6743
+msgid "%X%H: cannot convert branch between ISA modes to JALX: relocation out of range\n"
+msgstr "%X%H: nu se poate converti ramura dintre modurile ISA Ã®n JALX: realocare Ã®n afara intervalului\n"
+
+#: elfxx-mips.c:6755
+msgid "%X%H: unsupported branch between ISA modes\n"
+msgstr "%X%H: ramurÄƒ neacceptatÄƒ Ã®ntre modurile ISA\n"
+
+#: elfxx-mips.c:7401
+#, c-format
+msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
+msgstr "%pB: dimensiunea secÈ›iunii â€ž.reginfoâ€� este incorectÄƒ; se aÈ™tepta %<PRIu64>, s-a primit %<PRIu64>"
+
+#: elfxx-mips.c:7445
+#, c-format
+msgid "%pB: warning: bad `%s' option size %u smaller than its header"
+msgstr "%pB: avertisment: opÈ›iunea â€ž%sâ€� greÈ™itÄƒ, dimensiunea %u mai micÄƒ decÃ¢t antetul sÄƒu"
+
+#: elfxx-mips.c:7681
+#, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr "%pB: avertisment: opÈ›iunea â€ž%sâ€� este trunchiatÄƒ"
+
+#: elfxx-mips.c:8533 elfxx-mips.c:8659
+#, c-format
+msgid "%pB: warning: cannot determine the target function for stub section `%s'"
+msgstr "%pB: avertisment: nu se poate determina funcÈ›ia È›intÄƒ pentru secÈ›iunea ciot(stub) â€ž%sâ€�"
+
+#: elfxx-mips.c:8791
+#, c-format
+msgid "%pB: malformed reloc detected for section %s"
+msgstr "%pB: realocare incorect formatÄƒ detectatÄƒ pentru secÈ›iunea %s"
+
+#: elfxx-mips.c:8891
+#, c-format
+msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
+msgstr "%pB: realocarea GOT la %#<PRIx64> nu se aÈ™teaptÄƒ Ã®n executabile"
+
+#: elfxx-mips.c:9031
+#, c-format
+msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
+msgstr "%pB: realocarea CALL16 la %#<PRIx64> nu este faÈ›Äƒ de simbol global"
+
+#: elfxx-mips.c:9334
+#, c-format
+msgid "%X%H: relocation %s against `%s' cannot be used when making a shared object; recompile with -fPIC\n"
+msgstr "%X%H: realocarea %s faÈ›Äƒ de â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�\n"
+
+#: elfxx-mips.c:9460
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "Simbol IFUNC %s Ã®n tabelul dinamic de simboluri - simbolurile IFUNCS nu sunt acceptate"
+
+#: elfxx-mips.c:9463
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "simbol non-dinamic %s Ã®n tabelul de simboluri dinamice"
+
+#: elfxx-mips.c:9683
+#, c-format
+msgid "non-dynamic relocations refer to dynamic symbol %s"
+msgstr "realocÄƒri non-dinamice se referÄƒ la simbolul dinamic %s"
+
+#: elfxx-mips.c:10606
+#, c-format
+msgid "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in section `%pA'"
+msgstr "%pB: nu se poate gÄƒsi realocarea LO16 care se potriveÈ™te cu â€ž%sâ€� pentru %s la %#<PRIx64> Ã®n secÈ›iunea â€ž%pAâ€�"
+
+#: elfxx-mips.c:10748
+msgid "small-data section too large; lower small-data size limit (see option -G)"
+msgstr "secÈ›iunea de date de mici dimensiuni este prea mare; reduceÈ›i limita dimensiunii datelor de mici dimensiuni (consultaÈ›i opÈ›iunea â€ž-Gâ€�)"
+
+#: elfxx-mips.c:10767
+msgid "cannot convert a jump to JALX for a non-word-aligned address"
+msgstr "nu se poate converti un salt Ã®n JALX pentru o adresÄƒ nealiniatÄƒ la cuvinte"
+
+#: elfxx-mips.c:10770
+msgid "jump to a non-word-aligned address"
+msgstr "salt la o adresÄƒ nealiniatÄƒ la cuvinte"
+
+#: elfxx-mips.c:10771
+msgid "jump to a non-instruction-aligned address"
+msgstr "salt la o adresÄƒ nealiniatÄƒ la instrucÈ›iuni"
+
+#: elfxx-mips.c:10774
+msgid "cannot convert a branch to JALX for a non-word-aligned address"
+msgstr "nu se poate converti o ramurÄƒ Ã®n JALX pentru o adresÄƒ nealiniatÄƒ la cuvinte"
+
+#: elfxx-mips.c:10776
+msgid "branch to a non-instruction-aligned address"
+msgstr "ramura la o adresÄƒ nealiniatÄƒ la instrucÈ›iuni"
+
+#: elfxx-mips.c:10778
+msgid "PC-relative load from unaligned address"
+msgstr "Ã®ncÄƒrcare relativÄƒ la PC de la o adresÄƒ nealiniatÄƒ"
+
+#: elfxx-mips.c:11078
+#, c-format
+msgid "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr "%pB: intrarea â€ž%pAâ€� VMA de %#<PRIx64> Ã®n afara intervalului de 32 de biÈ›i acceptat; luaÈ›i Ã®n considerare utilizarea â€ž-Ttext-segment=...â€�"
+
+#: elfxx-mips.c:11193 elfxx-mips.c:11786
+#, c-format
+msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
+msgstr "%pB: â€ž%pAâ€� decalajul lui %<PRId64> de la â€ž%pAâ€� dincolo de intervalul ADDIUPC"
+
+#: elfxx-mips.c:11758
+#, c-format
+msgid "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; consider using `-Ttext-segment=...'"
+msgstr "%pB: Ã®nceputul lui â€ž%pAâ€� â€‹â€‹VMA din %#<PRIx64> se aflÄƒ Ã®n afara intervalului de 32 de biÈ›i acceptat; Ã®ncercaÈ›i sÄƒ utilizaÈ›i â€ž-Ttext-segment=...â€�"
+
+#: elfxx-mips.c:13503 reloc.c:8524
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr "%X%P: %pB(%pA): eroare: realocarea pentru poziÈ›ia %V nu are nicio valoare\n"
+
+#: elfxx-mips.c:14814
+#, c-format
+msgid "%pB: unknown architecture %s"
+msgstr "%pB: arhitecturÄƒ necunoscutÄƒ %s"
+
+#: elfxx-mips.c:15342
+#, c-format
+msgid "%pB: illegal section name `%pA'"
+msgstr "%pB: nume de secÈ›iune ilegal â€ž%pAâ€�"
+
+#: elfxx-mips.c:15620
+#, c-format
+msgid "%pB: warning: linking abicalls files with non-abicalls files"
+msgstr "%pB: avertisment: se vinculeazÄƒ fiÈ™iere abicals cu fiÈ™iere non-abicals"
+
+#: elfxx-mips.c:15637
+#, c-format
+msgid "%pB: linking 32-bit code with 64-bit code"
+msgstr "%pB: se vinculeazÄƒ cod pe 32 de biÈ›i cu un cod pe 64 de biÈ›i"
+
+#: elfxx-mips.c:15669 elfxx-mips.c:15735 elfxx-mips.c:15750
+#, c-format
+msgid "%pB: linking %s module with previous %s modules"
+msgstr "%pB: se vinculeazÄƒ modulul %s cu modulele %s anterioare"
+
+#: elfxx-mips.c:15693
+#, c-format
+msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
+msgstr "%pB: nepotrivire ABI: se vinculeazÄƒ modulul %s cu modulele %s anterioare"
+
+#: elfxx-mips.c:15718
+#, c-format
+msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
+msgstr "%pB: nepotrivire ASE: se vinculeazÄƒ modulul %s cu modulele %s anterioare"
+
+#: elfxx-mips.c:15852
+#, c-format
+msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses unknown floating point ABI %d"
+msgstr "avertisment: %pB foloseÈ™te ABI Ã®n virgulÄƒ mobilÄƒ necunoscutÄƒ %d (definitÄƒ de %pB), %pB utilizeazÄƒ ABI Ã®n virgulÄƒ mobilÄƒ necunoscutÄƒ %d"
+
+#: elfxx-mips.c:15858
+#, c-format
+msgid "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s"
+msgstr "avertisment: %pB foloseÈ™te ABI Ã®n virgulÄƒ mobilÄƒ necunoscutÄƒ %d (definitÄƒ de %pB), %pB foloseÈ™te %s"
 
-#: elfxx-mips.c:3691
+#: elfxx-mips.c:15864
 #, c-format
-msgid "%s: %s+0x%lx: jump to stub routine which is not jal"
-msgstr "%s: %s+0x%lx: salt la rutinã ciot(stub) ce nu este jal"
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d"
+msgstr "avertisment: %pB foloseÈ™te %s (definitÄƒ de %pB), %pB foloseÈ™te ABI Ã®n virgulÄƒ mobilÄƒ necunoscutÄƒ %d"
 
-#: elfxx-mips.c:5192
+#: elfxx-mips.c:15878
 #, c-format
-msgid "%s: Malformed reloc detected for section %s"
-msgstr "%s: Relocare malformatã detectatã pentru secþiunea %s"
+msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
+msgstr "avertisment: %pB foloseÈ™te %s (definitÄƒ de %pB), %pB foloseÈ™te %s"
 
-#: elfxx-mips.c:5266
+#: elfxx-mips.c:15897
 #, c-format
-msgid "%s: CALL16 reloc at 0x%lx not against global symbol"
-msgstr "%s: relocarea CALL16 la 0x%lx nu este pe simbolul global"
+msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr "avertisment: %pB foloseÈ™te %s (definit de %pB), %pB foloseÈ™te ABI MSA necunoscut %d"
 
-#: elfxx-mips.c:8692
+#: elfxx-mips.c:15909
 #, c-format
-msgid "%s: illegal section name `%s'"
-msgstr "%s: nume ilegal de secþiune `%s'"
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s"
+msgstr "avertisment: %pB foloseÈ™te ABI MSA necunoscut %d (definit de %pB), %pB foloseÈ™te %s"
 
-#: elfxx-mips.c:9025
+#: elfxx-mips.c:15918
 #, c-format
-msgid "%s: endianness incompatible with that of the selected emulation"
-msgstr "%s: endianness incompatibilã cu aceea a emulaþiei selectate"
+msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %d"
+msgstr "avertisment: %pB foloseÈ™te ABI MSA necunoscut %d (definit de %pB) È™i %pB foloseÈ™te ABI MSA necunoscut %d"
 
-#: elfxx-mips.c:9037
+#: elfxx-mips.c:15980
 #, c-format
-msgid "%s: ABI is incompatible with that of the selected emulation"
-msgstr "%s: ABI este incompatibil cu cel al emulaþiei selectate"
+msgid "%pB: endianness incompatible with that of the selected emulation"
+msgstr "%pB: tip de endianness incompatibil cu cel al emulaÈ›iei selectate"
 
-#: elfxx-mips.c:9104
+#: elfxx-mips.c:15994
 #, c-format
-msgid "%s: warning: linking PIC files with non-PIC files"
-msgstr "%s: avertisment: linkuire de fiºiere PIC cu fiºiere non-PIC"
+msgid "%pB: ABI is incompatible with that of the selected emulation"
+msgstr "%pB: ABI este incompatibil cu cel al emulaÈ›iei selectate"
 
-#: elfxx-mips.c:9121
+#: elfxx-mips.c:16047
 #, c-format
-msgid "%s: linking 32-bit code with 64-bit code"
-msgstr "%s: linkuire cod 32-biþi cu cod 64-biþi"
+msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
+msgstr "%pB: avertisment: ISA inconsistent Ã®ntre e_flags È™i .MIPS.abiflags"
 
-#: elfxx-mips.c:9149
+#: elfxx-mips.c:16052
 #, c-format
-msgid "%s: linking %s module with previous %s modules"
-msgstr "%s: linkuire a modulului %s cu modulele%s anterioare"
+msgid "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags"
+msgstr "%pB: warning: ABI FP inconsistent Ã®ntre .gnu.attributes È™i .MIPS.abiflags"
 
-#: elfxx-mips.c:9172
+#: elfxx-mips.c:16056
 #, c-format
-msgid "%s: ABI mismatch: linking %s module with previous %s modules"
-msgstr "%s: nepotrivire ABI: linkuire modul %s cu module %s anterioare"
+msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
+msgstr "%pB: avertisment: ASE-uri inconsistente Ã®ntre e_flags È™i .MIPS.abiflags"
 
-#: elfxx-mips.c:9241
+#: elfxx-mips.c:16063
+#, c-format
+msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
+msgstr "%pB: avertisment: extensii ISA inconsistente Ã®ntre e_flags È™i .MIPS.abiflags"
+
+#: elfxx-mips.c:16067
+#, c-format
+msgid "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)"
+msgstr "%pB: warning: fanion neaÈ™teptat Ã®n cÃ¢mpul flags2 din .MIPS.abiflags (0x%lx)"
+
+#: elfxx-mips.c:16258
+msgid "-mips32r2 -mfp64 (12 callee-saved)"
+msgstr "-mips32r2 -mfp64 (12 apeluri salvate)"
+
+#: elfxx-mips.c:16320 elfxx-mips.c:16331
+msgid "None"
+msgstr "Niciunul"
+
+#: elfxx-mips.c:16322 elfxx-mips.c:16391
+msgid "Unknown"
+msgstr "Necunoscut"
+
+#: elfxx-mips.c:16402
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "VirgulÄƒ mobilÄƒ hardware sau software\n"
+
+#: elfxx-mips.c:16405
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "VirgulÄƒ mobilÄƒ hardware (de precizie dublÄƒ)\n"
+
+#: elfxx-mips.c:16408
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "VirgulÄƒ flotantÄƒ hardware (de precizie simplÄƒ)\n"
+
+#: elfxx-mips.c:16411
+#, c-format
+msgid "Soft float\n"
+msgstr "VirgulÄƒ mobilÄƒ software\n"
+
+#: elfxx-mips.c:16414
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
+msgstr "VirgulÄƒ mobilÄƒ hardware (MIPS32r2 pe 64 de biÈ›i, FPU 12 callee-saved)\n"
+
+#: elfxx-mips.c:16417
+#, c-format
+msgid "Hard float (32-bit CPU, Any FPU)\n"
+msgstr "VirgulÄƒ mobilÄƒ hardware (procesor pe 32 de biÈ›i, orice FPU)\n"
+
+#: elfxx-mips.c:16420
+#, c-format
+msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
+msgstr "VirgulÄƒ mobilÄƒ hardware (procesor pe 32 de biÈ›i, FPU pe 64 biÈ›i)\n"
+
+#: elfxx-mips.c:16423
+#, c-format
+msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
+msgstr "VirgulÄƒ mobilÄƒ de compatibilitate hardware (procesor pe 32 de biÈ›i, FPU pe 64 biÈ›i)\n"
+
+#: elfxx-mips.c:16455
+#, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:9243
+#: elfxx-mips.c:16457
+#, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:9245
+#: elfxx-mips.c:16459
+#, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:9247
+#: elfxx-mips.c:16461
+#, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:9249
+#: elfxx-mips.c:16463
+#, c-format
 msgid " [abi unknown]"
 msgstr " [abi necunoscut]"
 
-#: elfxx-mips.c:9251
+#: elfxx-mips.c:16465
+#, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:9253
+#: elfxx-mips.c:16467
+#, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:9255
+#: elfxx-mips.c:16469
+#, c-format
 msgid " [no abi set]"
-msgstr " [abi nesetat]"
+msgstr " [abi nedefinit]"
 
-#: elfxx-mips.c:9258
-msgid " [mips1]"
-msgstr " [mips1]"
+#: elfxx-mips.c:16494
+#, c-format
+msgid " [unknown ISA]"
+msgstr " [ISA necunoscut]"
 
-#: elfxx-mips.c:9260
-msgid " [mips2]"
-msgstr " [mips2]"
+#: elfxx-mips.c:16514
+#, c-format
+msgid " [not 32bitmode]"
+msgstr " [nu este modul pe 32 de biÈ›i]"
 
-#: elfxx-mips.c:9262
-msgid " [mips3]"
-msgstr " [mips3]"
+#: elfxx-riscv.c:1950
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr "extensia x ISA â€ž%s'â€� trebuie definitÄƒ cu versiunile"
 
-#: elfxx-mips.c:9264
-msgid " [mips4]"
-msgstr " [mips4]"
+#: elfxx-riscv.c:1956
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr "nu se pot gÄƒsi versiunile implicite ale extensiei ISA â€ž%sâ€�"
 
-#: elfxx-mips.c:9266
-msgid " [mips5]"
-msgstr " [mips5]"
+#: elfxx-riscv.c:2063
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr "%s: prima extensie ISA trebuie sÄƒ fie â€žeâ€�, â€žiâ€� sau â€žgâ€�"
 
-#: elfxx-mips.c:9268
-msgid " [mips32]"
-msgstr " [mips32]"
+#: elfxx-riscv.c:2087
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr "%s: extensie ISA standard sau clasÄƒ de prefix â€ž%câ€� necunoscutÄƒ"
 
-#: elfxx-mips.c:9270
-msgid " [mips64]"
-msgstr " [mips64]"
+#: elfxx-riscv.c:2123
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr "%s: extensia ISA cu prefix nevalid â€ž%sâ€� se terminÄƒ cu <numÄƒr>p"
 
-#: elfxx-mips.c:9272
-msgid " [mips32r2]"
-msgstr " [mips32r2]"
+#: elfxx-riscv.c:2147
+#, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr "%s: extensie ISA cu prefix necunoscut â€ž%sâ€�"
 
-#: elfxx-mips.c:9274
-msgid " [unknown ISA]"
-msgstr " [ISA necunoscut]"
+#: elfxx-riscv.c:2171
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr "%s: extensia ISA cu prefix trebuie separatÄƒ cu _"
 
-#: elfxx-mips.c:9277
-msgid " [mdmx]"
-msgstr " [mdmx]"
-
-#: elfxx-mips.c:9280
-msgid " [mips16]"
-msgstr " [mips16]"
-
-#: elfxx-mips.c:9283
-msgid " [32bitmode]"
-msgstr " [mod32biþi]"
+#: elfxx-riscv.c:2211
+#, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr "rv%de nu acceptÄƒ extensia â€žhâ€�"
 
-#: elfxx-mips.c:9285
-msgid " [not 32bitmode]"
-msgstr " [non-mod32biþi]"
+#: elfxx-riscv.c:2219
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr "rv%d nu acceptÄƒ extensia â€žqâ€�"
+
+#: elfxx-riscv.c:2226
+msgid "zcmp' is incompatible with `d' and `c', or `zcd' extension"
+msgstr "zcmpâ€� este incompatibil cu extensia â€ždâ€�, â€žcâ€�, sau â€žzcdâ€�"
 
-#: i386linux.c:457 m68klinux.c:461 sparclinux.c:458
+#: elfxx-riscv.c:2233
 #, c-format
-msgid "Output file requires shared library `%s'\n"
-msgstr "Fiºierul de output necesitã biblioteca globalã(shared) `%s'\n"
+msgid "rv%d does not support the `zcf' extension"
+msgstr "rv%d nu acceptÄƒ extensia â€žzcfâ€�"
+
+#: elfxx-riscv.c:2240
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr "â€žzfinxâ€� este Ã®n conflict cu extensia â€žf/d/q/zfh/zfhminâ€�"
 
-#: i386linux.c:465 m68klinux.c:469 sparclinux.c:466
+#: elfxx-riscv.c:2247
+msgid "`xtheadvector' is conflict with the `v/zve32x' extension"
+msgstr "â€žxtheadvectorâ€� este Ã®n conflict cu extensia â€žv/zve32xâ€�"
+
+#: elfxx-riscv.c:2256
+msgid "`zclsd' is conflict with the `c+f'/ `zcf' extension"
+msgstr "â€žzfinxâ€� este Ã®n conflict cu extensia â€žc+fâ€�/ â€žzcfâ€�"
+
+#: elfxx-riscv.c:2261
 #, c-format
-msgid "Output file requires shared library `%s.so.%s'\n"
-msgstr "Fiºierul de output necesitã biblioteca globalã(shared) `%s'.so.`%s'\n"
+msgid "rv%d does not support the `ssnpm' extension"
+msgstr "rv%d nu acceptÄƒ extensia â€žssnpmâ€�"
 
-#: i386linux.c:654 i386linux.c:704 m68klinux.c:661 m68klinux.c:709
-#: sparclinux.c:656 sparclinux.c:706
+#: elfxx-riscv.c:2267
 #, c-format
-msgid "Symbol %s not defined for fixups\n"
-msgstr "Simbolul %s nu este definit pentru acceptare(fixups)\n"
+msgid "rv%d does not support the `smnpm' extension"
+msgstr "rv%d nu acceptÄƒ extensia â€žsmnpmâ€�"
 
-#: i386linux.c:728 m68klinux.c:733 sparclinux.c:730
-msgid "Warning: fixup count mismatch\n"
-msgstr "Avertisment: nepotrivire numãrãtori acceptare(fixup)\n"
+#: elfxx-riscv.c:2273
+#, c-format
+msgid "rv%d does not support the `smmpm' extension"
+msgstr "rv%d nu acceptÄƒ extensia â€žsmmpmâ€�"
 
-#: ieee.c:293
+#: elfxx-riscv.c:2279
 #, c-format
-msgid "%s: string too long (%d chars, max 65535)"
-msgstr "%s: ºir prea lung (%d caractere, max 65535)"
+msgid "rv%d does not support the `sspm' extension"
+msgstr "rv%d nu acceptÄƒ extensia â€žsspmâ€�"
 
-#: ieee.c:428
+#: elfxx-riscv.c:2285
 #, c-format
-msgid "%s: unrecognized symbol `%s' flags 0x%x"
-msgstr "%s: simbol necunoscut `%s' marcaje(flags) 0x%x"
+msgid "rv%d does not support the `supm' extension"
+msgstr "rv%d nu acceptÄƒ extensia â€žsupmâ€�"
+
+#: elfxx-riscv.c:2307
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr "extensiile zvl*b trebuie sÄƒ activeze fie extensia â€žvâ€� fie extensia â€žzveâ€�"
+
+#: elfxx-riscv.c:2364
+msgid "Warning: should use \"_\" to contact Profiles with other extensions"
+msgstr "AtenÈ›ie: trebuie sÄƒ utilizaÈ›i â€ž_â€� pentru a contacta Profiles cu alte extensii"
 
-#: ieee.c:938
+#: elfxx-riscv.c:2405
 #, c-format
-msgid "%s: unimplemented ATI record %u for symbol %u"
-msgstr "%s: înregistrare ATI neimplementatã %u pe simbolul %u"
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr "%s: È™irul ISA nu poate conÈ›ine litere mari"
 
-#: ieee.c:963
+#: elfxx-riscv.c:2439
 #, c-format
-msgid "%s: unexpected ATN type %d in external part"
-msgstr "%s: tip ATN neaºteptat %d în parte externã"
+msgid "%s: ISA string must begin with rv32, rv64 or Profiles"
+msgstr "%s: È™irul ISA trebuie sÄƒ Ã®nceapÄƒ cu rv32, rv64 sau Profiles"
 
-#: ieee.c:985
+#: elfxx-riscv.c:2629
+msgid "internal: "
+msgstr "intern: "
+
+#: elfxx-riscv.c:2683
 #, c-format
-msgid "%s: unexpected type after ATN"
-msgstr "%s: tip neaºteptat dupã ATN"
+msgid "%sinvalid ISA extension ends with <number>p in %s `%s'"
+msgstr "extensia ISA %snevalidÄƒ se terminÄƒ cu <numÄƒr>p Ã®n %s â€ž%sâ€�"
 
-#: ihex.c:264
+#: elfxx-riscv.c:2706
 #, c-format
-msgid "%s:%d: unexpected character `%s' in Intel Hex file\n"
-msgstr "%s:%d: caracter neaºteptat `%s' în fiºier Intel Hex\n"
+msgid "%sunknown ISA extension `%s' in %s `%s'"
+msgstr "extensie ISA %snecunoscutÄƒ â€ž%sâ€� Ã®n %s â€ž%sâ€�"
 
-#: ihex.c:372
+#: elfxx-riscv.c:2717
 #, c-format
-msgid "%s:%u: bad checksum in Intel Hex file (expected %u, found %u)"
-msgstr "%s:%u: checksum invalid în fiºier Intel Hex (se aºtepta %u, s-a gãsit %u)"
+msgid "%sdeprecated - extension `%s' in %s `%s'"
+msgstr "%sdepreciat - extensia â€ž%sâ€� Ã®n %s â€ž%sâ€�."
 
-#: ihex.c:426
+#: elfxx-riscv.c:2727
 #, c-format
-msgid "%s:%u: bad extended address record length in Intel Hex file"
-msgstr "%s: %u: mãrime înregistrare a adresei extinse invalidã în fiºier Intel Hex"
+msgid "%scannot + base extension `%s' in %s `%s'"
+msgstr "%snu se poate + extensia de bazÄƒ â€ž%sâ€� Ã®n %s â€ž%sâ€�"
+
+#: elfxx-riscv.c:3059 elfxx-riscv.c:3343
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr "intern: inaccesibilÄƒ INSN_CLASS_*"
+
+#: elfxx-riscv.c:3093
+msgid "zicfiss' and `zcmop"
+msgstr "zicfissâ€œ È™i â€žzcmop"
+
+#: elfxx-riscv.c:3106
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr "zihintntlâ€œ È™i â€žcâ€œ, sau â€žzihintntlâ€œ È™i â€žzca"
+
+#: elfxx-riscv.c:3111 elfxx-riscv.c:3137
+msgid "c' or `zca"
+msgstr "câ€œ sau â€žzca"
+
+#: elfxx-riscv.c:3119
+msgid "m' or `zmmul"
+msgstr "mâ€œ sau â€žzmmul"
+
+#: elfxx-riscv.c:3139
+msgid "f' and `c', or `zcf"
+msgstr "fâ€œ È™i â€žcâ€œ, sau â€žzcf"
+
+#: elfxx-riscv.c:3141
+msgid "d' and `c', or `zcd"
+msgstr "dâ€œ È™i â€žcâ€œ, sau â€žzcd"
+
+#: elfxx-riscv.c:3143
+msgid "f' or `zfinx"
+msgstr "fâ€œ sau â€žzfinx"
+
+#: elfxx-riscv.c:3145
+msgid "d' or `zdinx"
+msgstr "dâ€œ sau â€žzdinx"
+
+#: elfxx-riscv.c:3147
+msgid "q' or `zqinx"
+msgstr "qâ€œ sau â€žzqinx"
+
+#: elfxx-riscv.c:3149
+msgid "zfh' or `zhinx"
+msgstr "zfhâ€œ sau â€žzhinx"
+
+#: elfxx-riscv.c:3153
+msgid "zfhmin' or `zhinxmin"
+msgstr "zfhminâ€œ sau â€žzhinxmin"
+
+#: elfxx-riscv.c:3164
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr "zfhminâ€œ È™i â€ždâ€œ, sau â€žzhinxminâ€œ È™i â€žzdinx"
+
+#: elfxx-riscv.c:3175
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr "zfhminâ€œ È™i â€žqâ€œ, sau â€žzhinxminâ€œ È™i â€žzqinx"
+
+#: elfxx-riscv.c:3183
+msgid "d' and `zfa"
+msgstr "dâ€œ È™i â€žzfa"
+
+#: elfxx-riscv.c:3191
+msgid "q' and `zfa"
+msgstr "qâ€œ È™i â€žzfa"
+
+#: elfxx-riscv.c:3199
+msgid "zfh' and `zfa"
+msgstr "zfhâ€œ È™i â€žzfa"
+
+#: elfxx-riscv.c:3209
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr "zfhâ€œ È™i â€žzfaâ€œ, sau â€žzvfhâ€œ È™i â€žzfa"
+
+#: elfxx-riscv.c:3214
+msgid "zfh' or `zvfh"
+msgstr "zfhâ€œ sau â€žzvfh"
+
+#: elfxx-riscv.c:3230
+msgid "zbb' or `zbkb"
+msgstr "zbbâ€œ sau â€žzbkb"
+
+#: elfxx-riscv.c:3232
+msgid "zbc' or `zbkc"
+msgstr "zbcâ€œ sau â€žzbkc"
+
+#: elfxx-riscv.c:3240
+msgid "zknd' or `zkne"
+msgstr "zkndâ€œ sau â€žzkne"
+
+#: elfxx-riscv.c:3246
+msgid "v' or `zve64x' or `zve32x"
+msgstr "vâ€œ sau â€žzve64xâ€œ sau â€žzve32x"
+
+#: elfxx-riscv.c:3248
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr "vâ€œ sau â€žzve64dâ€œ sau â€žzve64fâ€œ sau â€žzve32f"
+
+#: elfxx-riscv.c:3250
+msgid "zvbb"
+msgstr "zvbb"
+
+#: elfxx-riscv.c:3252
+msgid "zvbc"
+msgstr "zvbc"
+
+#: elfxx-riscv.c:3258
+msgid "zvkb"
+msgstr "zvkb"
+
+#: elfxx-riscv.c:3260
+msgid "zvkg"
+msgstr "zvkg"
+
+#: elfxx-riscv.c:3262
+msgid "zvkned"
+msgstr "zvkned"
+
+#: elfxx-riscv.c:3264
+msgid "zvknha' or `zvknhb"
+msgstr "zvknhaâ€œ sau â€žzvknhb"
+
+#: elfxx-riscv.c:3266
+msgid "zvksed"
+msgstr "zvksed"
 
-#: ihex.c:443
+#: elfxx-riscv.c:3268
+msgid "zvksh"
+msgstr "zvksh"
+
+#: elfxx-riscv.c:3272
+msgid "zcb' and `zba"
+msgstr "zcbâ€œ È™i â€žzba"
+
+#: elfxx-riscv.c:3274
+msgid "zcb' and `zbb"
+msgstr "zcbâ€œ È™i â€žzbb"
+
+#: elfxx-riscv.c:3276
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr "zcbâ€œ È™i â€žzmmulâ€œ, sau â€žzcbâ€œ È™i â€žm"
+
+#: elfxx-riscv.c:3284
+msgid "smctr' or `ssctr"
+msgstr "smctrâ€œ sau â€žssctr"
+
+#: elfxx-riscv.c:3294
+msgid "h"
+msgstr "h"
+
+#: elfxx-riscv.c:3441
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: nu s-a putut crea secÈ›iunea de proprietate GNU\n"
+
+#: elfxx-riscv.c:3485
+#, c-format
+msgid "error: %pB: <corrupt RISC-V used size: 0x%x>"
+msgstr "eroare: %pB: <dimensiunea utilizatÄƒ de RISC-V este coruptÄƒ: 0x%x>"
+
+#: elfxx-sparc.c:3028 elfnn-aarch64.c:5768
+#, c-format
+msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s"
+msgstr "%pB: realocarea %s faÈ›Äƒ de simbolul STT_GNU_IFUNC â€ž%sâ€� nu este gestionatÄƒ de %s"
+
+#: elfxx-tilegx.c:4128
+#, c-format
+msgid "%pB: cannot link together %s and %s objects"
+msgstr "%pB: nu se pot vincula Ã®mpreunÄƒ obiectele %s È™i %s"
+
+#: elfxx-x86.c:534 elfxx-x86.c:3586
+#, c-format
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr "%P: %pB: realocare copiere faÈ›Äƒ de simbolul protejat necopiabil â€ž%sâ€� din %pB\n"
+
+#: elfxx-x86.c:1027
+#, c-format
+msgid "%P: %pB: failed to allocate relative reloc record\n"
+msgstr "%P: %pB: a eÈ™uat alocarea Ã®nregistrÄƒrii realocÄƒrii relative\n"
+
+#: elfxx-x86.c:1388
+#, c-format
+msgid "%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: a eÈ™uat alocarea hÄƒrÈ›ii de biÈ›i DT_RELR pe 64 de biÈ›i\n"
+
+#: elfxx-x86.c:1424
+#, c-format
+msgid "%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: a eÈ™uat alocarea hÄƒrÈ›ii de biÈ›i DT_RELR pe 32 de biÈ›i\n"
+
+#: elfxx-x86.c:1563
+#, c-format
+msgid "%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr "%P: %pB: a eÈ™uat alocarea memoriei pentru secÈ›iunea â€ž%pAâ€�\n"
+
+#: elfxx-x86.c:1750
+#, c-format
+msgid "%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr "%P: %pB: dimensiunea secÈ›iunii de realocare relativÄƒ compactÄƒ este schimbatÄƒ: nouÄƒ (%lu) != veche (%lu)\n"
+
+#: elfxx-x86.c:1772
+#, c-format
+msgid "%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr "%P: %pB: a eÈ™uat alocarea secÈ›iunii de realocare relativÄƒ compactÄƒ\n"
+
+#: elfxx-x86.c:2243
+#, c-format
+msgid "%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%P: %pB: realocarea %s faÈ›Äƒ de simbolul absolut â€ž%sâ€� din secÈ›iunea â€ž%pAâ€� este interzisÄƒ\n"
+
+#: elfxx-x86.c:2325
+msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
+msgstr "%P: %pB: avertisment: realocare Ã®n secÈ›iunea numai-pentru-citire â€ž%pAâ€�\n"
+
+#: elfxx-x86.c:3254
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (poziÈ›oe: 0x%v, informaÈ›ii: 0x%v, adÄƒugare: 0x%v) faÈ›Äƒ de â€ž%sâ€� pentru secÈ›iunea â€ž%pAâ€� Ã®n %pB\n"
+
+#: elfxx-x86.c:3260
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (poziÈ›ie: 0x%v, informaÈ›ii: 0x%v) faÈ›Äƒ de â€ž%sâ€� pentru secÈ›iunea â€ž%pAâ€� Ã®n %pB\n"
+
+#: elfxx-x86.c:3296
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed\n"
+msgstr "%pB: tranziÈ›ia TLS de la %s la %s faÈ›Äƒ de â€ž%sâ€� la 0x%v din secÈ›iunea â€ž%pAâ€� a eÈ™uat\n"
+
+#: elfxx-x86.c:3305
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n"
+msgstr "%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie utilizatÄƒ numai Ã®n ADD sau MOV\n"
+
+#: elfxx-x86.c:3313
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only\n"
+msgstr "%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie utilizatÄƒ numai Ã®n ADD sau MOVRS\n"
+
+#: elfxx-x86.c:3321
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only\n"
+msgstr "%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie utilizatÄƒ numai Ã®n ADD, SUB sau MOV\n"
+
+#: elfxx-x86.c:3329
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only\n"
+msgstr "%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie sÄƒ fie utilizatÄƒ numai Ã®n CALL indirect cu registrul %s\n"
+
+#: elfxx-x86.c:3338
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n"
+msgstr "%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie sÄƒ fie utilizatÄƒ numai Ã®n LEA\n"
+
+#: elfxx-x86.c:3965
 #, c-format
-msgid "%s:%u: bad extended start address length in Intel Hex file"
-msgstr "%s: %u: mãrime adresã de start extinsã invalidã în fiºier Intel Hex"
+msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
+msgstr "eroare: %pB: <dimensiunea proprietÄƒÈ›ii x86 corupte (0x%x): 0x%x>"
 
-#: ihex.c:460
+#: elfxx-x86.c:4178
 #, c-format
-msgid "%s:%u: bad extended linear address record length in Intel Hex file"
-msgstr "%s: %u: mãrime înregistrare a adresei lineare extinse invalidã în fiºier Intel Hex"
+msgid "%pB: x86 ISA needed: "
+msgstr "%pB: este necesar x86 ISA: "
 
-#: ihex.c:477
+#: elfxx-x86.c:4180
 #, c-format
-msgid "%s:%u: bad extended linear start address length in Intel Hex file"
-msgstr "%s: %u: mãrime adresã linearã de start extinsã invalidã în fiºier Intel Hex"
+msgid "%pB: x86 ISA used: "
+msgstr "%pB: x86 ISA utilizat: "
 
-#: ihex.c:494
+#: elfxx-x86.c:4202
 #, c-format
-msgid "%s:%u: unrecognized ihex type %u in Intel Hex file\n"
-msgstr "%s: %u: tip ihex necunoscut %u în fiºier Intel Hex\n"
+msgid "<unknown: %x>"
+msgstr "<necunoscut: %x>"
+
+#: elfxx-x86.c:4338
+msgid "%P: failed to create %sn"
+msgstr "%P: nu s-a putut crea %sn"
+
+#: elfxx-x86.c:4352
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: avertisment: lipseÈ™te %s\n"
+
+#: elfxx-x86.c:4353
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: eroare: lipseÈ™te %s\n"
+
+#: elfxx-x86.c:4459
+msgid "IBT and SHSTK properties"
+msgstr "proprietÄƒÈ›i IBT È™i SHSTK"
+
+#: elfxx-x86.c:4461
+msgid "IBT property"
+msgstr "proprietatea IBT"
+
+#: elfxx-x86.c:4463
+msgid "SHSTK property"
+msgstr "proprietatea SHSTK"
+
+#: elfxx-x86.c:4468
+msgid "LAM_U48 property"
+msgstr "proprietatea LAM_U48"
+
+#: elfxx-x86.c:4473
+msgid "LAM_U57 property"
+msgstr "proprietatea LAM_U57"
+
+#: elfxx-x86.c:4651
+msgid "%P: failed to create VxWorks dynamic sections\n"
+msgstr "%P: nu s-au putut crea secÈ›iunile dinamice VxWorks\n"
+
+#: elfxx-x86.c:4660
+msgid "%P: failed to create GOT sections\n"
+msgstr "%P: nu s-au putut crea secÈ›iunile GOT\n"
 
-#: ihex.c:619
+#: elfxx-x86.c:4678
+msgid "%P: failed to create ifunc sections\n"
+msgstr "%P: nu s-au putut crea secÈ›iunile ifunc\n"
+
+#: elfxx-x86.c:4717
+msgid "%P: failed to create GOT PLT section\n"
+msgstr "%P: nu s-a putut crea secÈ›iunea GOT PLT\n"
+
+#: elfxx-x86.c:4734
+msgid "%P: failed to create IBT-enabled PLT section\n"
+msgstr "%P: nu s-a putut crea secÈ›iunea PLT cu IBT activat\n"
+
+#: elfxx-x86.c:4752
+msgid "%P: failed to create PLT .eh_frame section\n"
+msgstr "%P: nu s-a putut crea secÈ›iunea .eh_frame PLT\n"
+
+#: elfxx-x86.c:4763
+msgid "%P: failed to create GOT PLT .eh_frame section\n"
+msgstr "%P: nu s-a putut crea secÈ›iunea .eh_frame PLT GOT\n"
+
+#: elfxx-x86.c:4775
+msgid "%P: failed to create the second PLT .eh_frame section\n"
+msgstr "%P: nu s-a putut crea a doua secÈ›iune .eh_frame PLT\n"
+
+#: elfxx-x86.c:4790
+msgid "%P: failed to create PLT .sframe section\n"
+msgstr "%P: nu s-a putut crea secÈ›iunea .sframe PLT\n"
+
+#: elfxx-x86.c:4806
+msgid "%P: failed to create second PLT .sframe section\n"
+msgstr "%P: nu s-a putut crea a doua secÈ›iune .sframe PLT\n"
+
+#: elfxx-x86.c:4819
+msgid "%P: failed to create PLT GOT .sframe section\n"
+msgstr "%P: nu s-a putut crea secÈ›iunea .sframe PLT GOT\n"
+
+#: elfxx-x86.c:4859
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: Ã®ncercare de vinculare staticÄƒ a obiectului dinamic â€ž%pBâ€�\n"
+
+#: ihex.c:230
 #, c-format
-msgid "%s: internal error in ihex_read_section"
-msgstr "%s: eroare internã în ihex_read_section"
+msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
+msgstr "%pB:%d: caracter neaÈ™teptat â€ž%sâ€� Ã®n fiÈ™ierul Intel Hex"
 
-#: ihex.c:654
+#: ihex.c:338
 #, c-format
-msgid "%s: bad section length in ihex_read_section"
-msgstr "%s: mãrime secþiune invalidã în ihex_read_section"
+msgid "%pB:%u: bad checksum in Intel Hex file (expected %u, found %u)"
+msgstr "%pB:%u: sumÄƒ de verificare greÈ™itÄƒ Ã®n fiÈ™ierul Intel Hex (se aÈ™tepta %u, s-a gÄƒsit %u)"
 
-#: ihex.c:872
+#: ihex.c:393
 #, c-format
-msgid "%s: address 0x%s out of range for Intel Hex file"
-msgstr "%s: adresa 0x%s este în afara domeniului(range) pentru fiºierul Intel Hex"
+msgid "%pB:%u: bad extended address record length in Intel Hex file"
+msgstr "%pB:%u: lungime incorectÄƒ a Ã®nregistrÄƒrii adresei extinse Ã®n fiÈ™ierul Intel Hex"
 
-#: libbfd.c:861
+#: ihex.c:411
 #, c-format
-msgid "Deprecated %s called at %s line %d in %s\n"
-msgstr "%s învechitã apelatã la %s linia %d în %s\n"
+msgid "%pB:%u: bad extended start address length in Intel Hex file"
+msgstr "%pB:%u: lungime incorectÄƒ a adresei de Ã®nceput extinse Ã®n fiÈ™ierul Intel Hex"
 
-#: libbfd.c:864
+#: ihex.c:429
 #, c-format
-msgid "Deprecated %s called\n"
-msgstr "%s învechitã apelatã\n"
+msgid "%pB:%u: bad extended linear address record length in Intel Hex file"
+msgstr "%pB:%u: lungime incorectÄƒ a Ã®nregistrÄƒrii adresei liniare extinse Ã®n fiÈ™ierul Intel Hex"
+
+#: ihex.c:447
+#, c-format
+msgid "%pB:%u: bad extended linear start address length in Intel Hex file"
+msgstr "%pB:%u: lungime incorectÄƒ a adresei de Ã®nceput liniarÄƒ extinsÄƒ Ã®n fiÈ™ierul Intel Hex"
+
+#: ihex.c:465
+#, c-format
+msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
+msgstr "%pB:%u: tip ihex nerecunoscut %u Ã®n fiÈ™ierul Intel Hex"
+
+#: ihex.c:580
+#, c-format
+msgid "%pB: internal error in ihex_read_section"
+msgstr "%pB: eroare internÄƒ Ã®n ihex_read_section"
+
+#: ihex.c:613
+#, c-format
+msgid "%pB: bad section length in ihex_read_section"
+msgstr "%pB: lungime incorectÄƒ a secÈ›iunii Ã®n ihex_read_section"
+
+#: ihex.c:784
+#, c-format
+msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
+msgstr "%pB adresa pe 64 de biÈ›i %#<PRIx64> este Ã®n afara intervalului pentru fiÈ™ierul Intel Hex"
+
+#: ihex.c:842
+#, c-format
+msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
+msgstr "%pB: adresa %#<PRIx64> Ã®n afara intervalului pentru fiÈ™ierul Intel Hex"
+
+#: libbfd.c:1260
+#, c-format
+msgid "%pB: unable to get decompressed section %pA"
+msgstr "%pB: nu se poate obÈ›ine secÈ›iunea decomprimatÄƒ %pA"
+
+#: libbfd.c:1272
+#, c-format
+msgid "%pB: mapped section %pA has non-NULL buffer"
+msgstr "%pB: secÈ›iunea cartografiatÄƒ %pA are un tampon non-NULL"
+
+#: linker.c:1749
+#, c-format
+msgid "%pB: indirect symbol `%s' to `%s' is a loop"
+msgstr "%pB: simbolul indirect â€ž%sâ€� pentru â€ž%sâ€� este o buclÄƒ"
 
 #: linker.c:1829
+msgid "%P: %pB: note: the message above does not take linker garbage collection into account\n"
+msgstr "%P: %pB: notÄƒ: mesajul de mai sus nu ia Ã®n considerare colectarea gunoiului din editorul de legÄƒturi\n"
+
+#: linker.c:2663
 #, c-format
-msgid "%s: indirect symbol `%s' to `%s' is a loop"
-msgstr "%s: simbolul indirect `%s' pentru `%s' este o buclã"
+msgid "attempt to do relocatable link with %s input and %s output"
+msgstr "Ã®ncercare de a crea o legÄƒturÄƒ realocabilÄƒ cu intrarea %s È™i ieÈ™irea %s"
 
-#: linker.c:2697
+#: linker.c:2942
 #, c-format
-msgid "Attempt to do relocatable link with %s input and %s output"
-msgstr "Încercare de a crea un link relocabil cu input %s ºi output %s"
+msgid "%pB: ignoring duplicate section `%pA'\n"
+msgstr "%pB: se ignorÄƒ secÈ›iunea duplicatÄƒ â€ž%pAâ€�\n"
 
-#: merge.c:896
+#: linker.c:2952 linker.c:2962
 #, c-format
-msgid "%s: access beyond end of merged section (%ld + %ld)"
-msgstr "%s: acces dincolo de sfârºitul secþiunii concatenate(merged) (%ld + %ld)"
+msgid "%pB: duplicate section `%pA' has different size\n"
+msgstr "%pB: secÈ›iunea duplicatÄƒ â€ž%pAâ€� are dimensiune diferitÄƒ\n"
 
-#: mmo.c:503
+#: linker.c:2976 linker.c:2984
 #, c-format
-msgid "%s: No core to allocate section name %s\n"
-msgstr "%s:Nu existã nucleu(core) pentru a aloca numele de secþiune %s\n"
+msgid "%pB: could not read contents of section `%pA'\n"
+msgstr "%pB: nu s-a putut citi conÈ›inutul secÈ›iunii â€ž%pAâ€�\n"
 
-#: mmo.c:579
+#: linker.c:2993
 #, c-format
-msgid "%s: No core to allocate a symbol %d bytes long\n"
-msgstr "%s: Nu existã nucleu(core) pentru a aloca un simbol lung de %d octeþi\n"
+msgid "%pB: duplicate section `%pA' has different contents\n"
+msgstr "%pB: secÈ›iunea duplicatÄƒ â€ž%pAâ€� are conÈ›inut diferit\n"
 
-#: mmo.c:1287
+#: linker.c:3517
 #, c-format
-msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n"
-msgstr "%s: fiºier mmo invalid: valoare de iniþializare pentru $255 nu este 'Main'\n"
+msgid "%pB: compiled for a big endian system and target is little endian"
+msgstr "%pB: compilat pentru un sistem big-endian iar È›inta este little-endian"
 
-#: mmo.c:1433
+#: linker.c:3520
 #, c-format
-msgid "%s: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
-msgstr "%s: secvenþã mare(wide) de caractere 0x%02X 0x%02X nesuportatã dupã numele de simbol care începe cu `%s'\n"
+msgid "%pB: compiled for a little endian system and target is big endian"
+msgstr "%pB: compilat pentru un sistem little-endian iar È›inta este big-endian"
+
+#: mach-o-arm.c:169 mach-o-arm.c:301
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "pereche de realocare ARM mach-o incorect formatÄƒ: realocarea este prima realocare"
 
-#: mmo.c:1674
+#: mach-o-arm.c:185
 #, c-format
-msgid "%s: invalid mmo file: unsupported lopcode `%d'\n"
-msgstr "%s: fiºier mmo invalid: lopcode `%d' nesuportat\n"
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "pereche de realocare ARM mach-o incorect formatÄƒ: lungime nevalidÄƒ: %d"
 
-#: mmo.c:1684
+#: mach-o-arm.c:200
 #, c-format
-msgid "%s: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
-msgstr "%s: fiºier mmo invalid: pentru lop_quote se aºtepta YZ = 1 s-a primit YZ= %d\n"
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "realocare sectdiff ARM mach-o prost formatÄƒ: lungime nevalidÄƒ: %d"
 
-#: mmo.c:1720
+#: mach-o-arm.c:215
 #, c-format
-msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
-msgstr "%s: fiºier mmo invalid: pentru lop_loc se aºtepta z =1 sau z =  2 s-a primit z = %d\n"
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "realocare sectdiff local ARM mach-o prost formatÄƒ: lungime nevalidÄƒ: %d"
 
-#: mmo.c:1766
+#: mach-o-arm.c:230
 #, c-format
-msgid "%s: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
-msgstr "%s: fiºier mmo invalid: pentru lop_fixo se aºtepta z =1 sau z =  2 s-a primit z = %d\n"
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "realocare sectdiff half ARM mach-o prost formatÄƒ: lungime nevalidÄƒ: %d"
 
-#: mmo.c:1805
+#: mach-o-arm.c:262
 #, c-format
-msgid "%s: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
-msgstr "%s: fiºier mmo invalid: pentru lop_fixrx se aºtepta y =0 s-a primit y = %d\n"
+msgid "malformed mach-o ARM vanilla reloc: invalid length: %d (pcrel: %d)"
+msgstr "realocare sectdiff vanilla ARM mach-o prost formatÄƒ: lungime nevalidÄƒ: %d (pcrel: %d)"
 
-#: mmo.c:1814
+#: mach-o-arm.c:332
 #, c-format
-msgid "%s: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
-msgstr "%s: fiºier mmo invalid: pentru lop_fixrx se aºtepta z =16 sau z = 24 s-a primit z = %d\n"
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "realocare mach-o ARM incorect formatÄƒ: tip de realocare necunoscut: %d"
 
-#: mmo.c:1837
+#: mach-o.c:642
 #, 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: fiºier mmo invalid: pentru lop_fixrx octetul de înceout al operandului word trebuie sã fie 0 sau 1, s-a primit %d\n"
+msgid "<unknown mask flags>"
+msgstr "<fanioane de mascÄƒ necunoscute>"
 
-#: mmo.c:1860
+#: mach-o.c:697
+msgid " (<unknown>)"
+msgstr " (<necunoscut>)"
+
+# R-GC, scrie:
+# acest mesaj are un spaÈ›iu adiÈ›ional la
+# Ã®nceput faÈ›Äƒ de mesajul original,
+# pentru a se â€žaliniaâ€� cu mesajele
+# urmÄƒtoare.
+#: mach-o.c:709
 #, c-format
-msgid "%s: cannot allocate file name for file number %d, %d bytes\n"
-msgstr "%s: nu se poate aloca nume fiºier pentru fiºierul numãrul %d, %d octeþi\n"
+msgid " MACH-O header:\n"
+msgstr "  antet MACH-O:\n"
+
+#: mach-o.c:710
+#, c-format
+msgid "   magic:      %#lx\n"
+msgstr "   magic:      %#lx\n"
+
+#: mach-o.c:711
+#, c-format
+msgid "   cputype:    %#lx (%s)\n"
+msgstr "   tip cpu:    %#lx (%s)\n"
+
+#: mach-o.c:713
+#, c-format
+msgid "   cpusubtype: %#lx%s\n"
+msgstr "   subtip cpu: %#lx%s\n"
+
+#: mach-o.c:715
+#, c-format
+msgid "   filetype:   %#lx\n"
+msgstr "   tip fiÈ™ier: %#lx\n"
+
+#: mach-o.c:716
+#, c-format
+msgid "   ncmds:      %#lx\n"
+msgstr "   nr. cmds:   %#lx\n"
+
+#: mach-o.c:717
+#, c-format
+msgid "   sizeocmds:  %#lx\n"
+msgstr "   dim. cmds:  %#lx\n"
+
+#: mach-o.c:718
+#, c-format
+msgid "   flags:      %#lx\n"
+msgstr "   fanioane:   %#lx\n"
+
+#: mach-o.c:719
+#, c-format
+msgid "   version:    %x\n"
+msgstr "   versiune:   %x\n"
+
+#. Urg - what has happened ?
+#: mach-o.c:754
+#, c-format
+msgid "incompatible cputypes in mach-o files: %ld vs %ld"
+msgstr "tipuri de procesoare incompatibile Ã®n fiÈ™ierele mach-o: %ld vs %ld"
+
+#: mach-o.c:923
+msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
+msgstr "bfd_mach_o_canonicalize_symtab: nu se pot Ã®ncÄƒrca simboluri"
+
+#: mach-o.c:1515
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "realocare mach-o incorect formatÄƒ: indexul secÈ›iunii este mai mare decÃ¢t numÄƒrul de secÈ›iuni"
+
+#: mach-o.c:2157
+msgid "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab commands."
+msgstr "scuze: modtab, toc È™i extrefsyms nu sunt Ã®ncÄƒ implementate pentru comenzile dysymtab."
+
+#: mach-o.c:2605
+#, c-format
+msgid "mach-o: there are too many sections (%u) maximum is 255,\n"
+msgstr "mach-o: existÄƒ prea multe secÈ›iuni (%u) maximul este 255,\n"
+
+#: mach-o.c:2697
+#, c-format
+msgid "unable to allocate data for load command %#x"
+msgstr "nu se pot aloca date pentru comanda de Ã®ncÄƒrcare %#x"
+
+#: mach-o.c:2802
+#, c-format
+msgid "unable to write unknown load command %#x"
+msgstr "nu se poate scrie comanda de Ã®ncÄƒrcare necunoscutÄƒ %#x"
+
+#: mach-o.c:2986
+#, c-format
+msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
+msgstr "adresa secÈ›iunii (%#<PRIx64>) sub Ã®nceputul segmentului (%#<PRIx64>)"
+
+#: mach-o.c:3128
+#, c-format
+msgid "unable to layout unknown load command %#x"
+msgstr "nu se poate dispune comanda de Ã®ncÄƒrcare necunoscutÄƒ %#x"
+
+#: mach-o.c:3654
+#, c-format
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_32: valoare de aliniere peste mÄƒsurÄƒ de mare: %#lx"
+
+#: mach-o.c:3697
+#, c-format
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_64: valoare de aliniere peste mÄƒsurÄƒ de mare: %#lx"
+
+#: mach-o.c:3748
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u"
+msgstr "bfd_mach_o_read_symtab_symbol: nu se pot citi %d octeÈ›i la %u"
+
+#: mach-o.c:3767
+#, c-format
+msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)"
+msgstr "bfd_mach_o_read_symtab_symbol: nume Ã®n afara intervalului (%lu >= %u)"
+
+#: mach-o.c:3850
+#, 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: simbolul â€ž%sâ€� specificÄƒ secÈ›iunea nevalidÄƒ %d (max. %lu): se lasÄƒ nedefinit"
+
+#: mach-o.c:3869
+#, 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: simbolul â€ž%sâ€� specificÄƒ cÃ¢mpul de tip nevalid 0x%x: se lasÄƒ nedefinit"
+
+#: mach-o.c:5068
+#, c-format
+msgid "%pB: unknown load command %#x"
+msgstr "%pB: comandÄƒ de Ã®ncÄƒrcare necunoscutÄƒ %#x"
+
+#: mach-o.c:5266
+#, c-format
+msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx"
+msgstr "bfd_mach_o_scan: arhitecturÄƒ necunoscutÄƒ 0x%lx/0x%lx"
+
+#: mach-o.c:5391
+#, c-format
+msgid "unknown header byte-order value %#x"
+msgstr "valoare necunoscutÄƒ a ordinii octeÈ›ilor antetului %#x"
+
+#: merge.c:1126
+#, c-format
+msgid "%pB: access beyond end of merged section (%<PRId64>)"
+msgstr "%pB: acces dincolo de sfÃ¢rÈ™itul secÈ›iunii concatenate (%<PRId64>)"
+
+#: mmo.c:535
+#, c-format
+msgid "%pB: no core to allocate a symbol %d bytes long"
+msgstr "%pB: nu existÄƒ un nucleu pentru a aloca un simbol lungime %d octeÈ›i"
+
+#: mmo.c:951
+#, c-format
+msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
+msgstr "%pB: Ã®ncercare de a emite conÈ›inut la o adresÄƒ ce nu este multiplu de 4 %#<PRIx64>"
+
+#: mmo.c:1246
+#, c-format
+msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: valoarea de iniÈ›ializare pentru $255 nu este â€žMainâ€�\n"
+
+#: mmo.c:1393
+#, c-format
+msgid "%pB: unsupported wide character sequence 0x%02X 0x%02X after symbol name starting with `%s'\n"
+msgstr "%pB: secvenÈ›Äƒ de caractere largÄƒ neacceptatÄƒ 0x%02X 0x%02X dupÄƒ numele simbolului care Ã®ncepe cu â€ž%sâ€�\n"
+
+#: mmo.c:1409
+#, c-format
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr "%pB: numele simbolului depÄƒÈ™eÈ™te lungimea maximÄƒ datÄƒ de %d"
+
+#: mmo.c:1638
+#, c-format
+msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: lopcode neacceptat â€ž%dâ€�\n"
+
+#: mmo.c:1649
+#, c-format
+msgid "%pB: invalid mmo file: expected YZ = 1 got YZ = %d for lop_quote\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: pentru lop_quote se aÈ™tepta YZ = 1 s-a primit YZ= %d\n"
+
+#: mmo.c:1693
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_loc\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: pentru lop_loc se aÈ™tepta z =1 sau z = 2, s-a primit z = %d\n"
+
+#: mmo.c:1744
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 1 or z = 2, got z = %d for lop_fixo\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: pentru lop_fixo se aÈ™tepta z =1 sau z = 2, s-a primit z = %d\n"
+
+#: mmo.c:1793
+#, c-format
+msgid "%pB: invalid mmo file: expected y = 0, got y = %d for lop_fixrx\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: pentru lop_fixrx se aÈ™tepta y =0, s-a primit y = %d\n"
+
+#: mmo.c:1804
+#, c-format
+msgid "%pB: invalid mmo file: expected z = 16 or z = 24, got z = %d for lop_fixrx\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: pentru lop_fixrx se aÈ™tepta z =16 sau z = 24, s-a primit z = %d\n"
+
+#: mmo.c:1829
+#, 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: fiÈ™ier mmo nevalid: pentru lop_fixrx octetul de Ã®nceput al operandului word trebuie sÄƒ fie 0 sau 1, s-a primit %d\n"
+
+#: mmo.c:1858
+#, c-format
+msgid "%pB: cannot allocate file name for file number %d, %d bytes\n"
+msgstr "%pB: nu se poate aloca nume de fiÈ™ier pentru fiÈ™ierul numÄƒrul %d, %d octeÈ›i\n"
 
 #: mmo.c:1880
 #, c-format
-msgid "%s: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
-msgstr "%s: fiºier mmo invalid: fiºierul numãrul %d `%s' a fost deja introdus ca `%s'\n"
+msgid "%pB: invalid mmo file: file number %d `%s', was already entered as `%s'\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: numÄƒrul fiÈ™ierului %d â€ž%sâ€�, a fost deja introdus ca â€ž%sâ€�\n"
 
-#: mmo.c:1893
+#: mmo.c:1895
 #, c-format
-msgid "%s: invalid mmo file: file name for number %d was not specified before use\n"
-msgstr "%s: fiºier mmo invalid: numele de fiºier pentru numãrul %d nu a fost specificat înainte de folosire\n"
+msgid "%pB: invalid mmo file: file name for number %d was not specified before use\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: numele de fiÈ™ier pentru numÄƒrul %d nu a fost specificat Ã®nainte de folosire\n"
 
-#: mmo.c:1999
+#: mmo.c:2007
 #, c-format
-msgid "%s: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
-msgstr "%s: fiºier mmo invalid: câmpurile y ºi z ale lop_stab sunt non-zero: y: %d, z: %d\n"
+msgid "%pB: invalid mmo file: fields y and z of lop_stab non-zero, y: %d, z: %d\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: cÃ¢mpurile y È™i z ale lop_stab sunt non-zero: y: %d, z: %d\n"
 
-#: mmo.c:2035
+#: mmo.c:2044
 #, c-format
-msgid "%s: invalid mmo file: lop_end not last item in file\n"
-msgstr "%s: fiºier mmo invalid: lop_end nu este ultimul element în fiºier\n"
+msgid "%pB: invalid mmo file: lop_end not last item in file\n"
+msgstr "%pB: fiÈ™ier mmo nevalid: lop_end nu este ultimul element din fiÈ™ier\n"
 
-#: mmo.c:2048
+#: mmo.c:2058
 #, 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: fiºier mmo invalid: YZ al lop_end (%ld) nu este egal cu numerele tetras ale lop_stab precedent (%ld)\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: fiÈ™ier mmo nevalid: YZ al lop_end (%ld) nu este egal cu numÄƒrul de tetras ale lop_stab precedent (%ld)\n"
 
-#: mmo.c:2698
+#: mmo.c:2768
 #, c-format
-msgid "%s: invalid symbol table: duplicate symbol `%s'\n"
-msgstr "%s: tabelã de simboluri invalidã: simbol `%s' duplicat\n"
+msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
+msgstr "%pB: tabel de simboluri nevalid: simbol duplicat â€ž%sâ€�\n"
 
-#: mmo.c:2949
+#: mmo.c:3007
 #, c-format
-msgid "%s: Bad symbol definition: `Main' set to %s rather than the start address %s\n"
-msgstr "%s: Definire invalidã de simbol: `Main' setat la %s în loc de adresa de start %s\n"
+msgid "%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr "%pB: definiÈ›ie greÈ™itÄƒ a simbolului: â€žMainâ€� iniÈ›ializat la %<PRIx64> Ã®n loc de adresa de pornire %<PRIx64>\n"
 
-#: mmo.c:3039
+#: mmo.c:3106
 #, 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: avertisment: tabela de simboluri prea mare pentru mmo, mai mare decâd 65535 cuvinte pe 32 de biþi: %d.  Doar 'Main' va fi emis.\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: avertisment: tabelul de simboluri este prea mare pentru mmo, mai mare de 65535 de cuvinte pe 32 de biÈ›i: %d.  Doar â€žMainâ€� va fi emis.\n"
 
-#: mmo.c:3084
+#: mmo.c:3152
 #, c-format
-msgid "%s: internal error, symbol table changed size from %d to %d words\n"
-msgstr "%s: eroare internã, tabela de simboluri ºi-a schimbat mãrimea din %d în %d cuvinte\n"
+msgid "%pB: internal error, symbol table changed size from %d to %d words\n"
+msgstr "%pB: eroare internÄƒ, tabelul de simboluri È™i-a schimbat dimensiunea de la %d la %d cuvinte\n"
 
-#: mmo.c:3139
+#: mmo.c:3205
 #, c-format
-msgid "%s: internal error, internal register section %s had contents\n"
-msgstr "%s: eroare internã, secþiunea de regiºtri internã %s nu are conþinut\n"
+msgid "%pB: internal error, internal register section %pA had contents\n"
+msgstr "%pB: eroare internÄƒ, secÈ›iunea de registru internÄƒ %pA nu are conÈ›inut\n"
 
-#: mmo.c:3191
+#: mmo.c:3256
 #, c-format
-msgid "%s: no initialized registers; section length 0\n"
-msgstr "%s: nu existã regiºtri iniþializaþi; lungime secþiune 0\n"
+msgid "%pB: no initialized registers; section length 0\n"
+msgstr "%pB: nu existÄƒ registre iniÈ›ializate; lungimea secÈ›iunii 0\n"
 
-#: mmo.c:3197
+#: mmo.c:3263
 #, c-format
-msgid "%s: too many initialized registers; section length %ld\n"
-msgstr "%s: prea mulþi regiºtri iniþializaþi; lungime secþiune %ld\n"
+msgid "%pB: too many initialized registers; section length %<PRId64>"
+msgstr "%pB: prea multe registre iniÈ›ializate; lungimea secÈ›iunii %<PRId64>"
 
-#: mmo.c:3202
+#: mmo.c:3268
 #, c-format
-msgid "%s: invalid start address for initialized registers of length %ld: 0x%lx%08lx\n"
-msgstr "%s: adresã de start invalidã pentru regiºtrii iniþializaþi de lungime %ld: 0x%lx%08lx\n"
+msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
+msgstr "%pB: adresÄƒ de pornire nevalidÄƒ pentru registrele iniÈ›ializate de lungime %<PRId64>: %#<PRIx64>"
 
-#: oasys.c:1052
+#: osf-core.c:128
 #, c-format
-msgid "%s: can not represent section `%s' in oasys"
-msgstr "%s: nu se poate reprezenta secþiune `%s' în oasys"
+msgid "unhandled OSF/1 core file section type %d"
+msgstr "tipul de secÈ›iune de fiÈ™ier core OSF/1 %d negestionat"
 
-#: osf-core.c:137
+#: pdp11.c:1573
 #, c-format
-msgid "Unhandled OSF/1 core file section type %d\n"
-msgstr "Tip nemanipulabil %d de fiºier nucleu(core) OSF/1\n"
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: simbolul indicÄƒ suprapunerea (nu este acceptat)"
 
-#: pe-mips.c:659
+#: pef.c:534
 #, c-format
-msgid "%s: `ld -r' not supported with PE MIPS objects\n"
-msgstr "%s: `ld -r' nu este suportat cu obiecte PE MIPS\n"
+msgid "bfd_pef_scan: unknown architecture 0x%lx"
+msgstr "bfd_pef_scan: arhitecturÄƒ necunoscutÄƒ 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:795
+#: pei-x86_64.c:176 pei-x86_64.c:230 pei-x86_64.c:240 pei-x86_64.c:265
+#: pei-x86_64.c:277 pei-x86_64.c:291 pei-x86_64.c:309 pei-x86_64.c:321
+#: pei-x86_64.c:333
+#, c-format
+msgid "warning: corrupt unwind data\n"
+msgstr "avertisment: date de desfÄƒÈ™urare corupte\n"
+
+#. PR 17512: file: 2245-7442-0.004.
+#: pei-x86_64.c:354
+#, c-format
+msgid "Unknown: %x"
+msgstr "Necunoscut: %x"
+
+#: pei-x86_64.c:405 pei-x86_64.c:415 pei-x86_64.c:424
+#, c-format
+msgid "warning: xdata section corrupt\n"
+msgstr "avertisment: secÈ›iunea xdata coruptÄƒ\n"
+
+#: pei-x86_64.c:479
+#, c-format
+msgid "Too many unwind codes (%ld)\n"
+msgstr "Prea multe coduri de desfÄƒÈ™urare (%ld)\n"
+
+#: pei-x86_64.c:565
+#, c-format
+msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
+msgstr "Avertisment: dimensiunea secÈ›iunii %s (%ld) nu este multiplu de %dn\n"
+
+#: pei-x86_64.c:572
+#, c-format
+msgid "Warning: %s section size is zero\n"
+msgstr "Avertisment: dimensiunea secÈ›iunii %s este zero\n"
+
+#: pei-x86_64.c:587
+#, c-format
+msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n"
+msgstr "Avertisment: dimensiunea secÈ›iunii %s (%ld) este mai micÄƒ decÃ¢t dimensiunea virtualÄƒ (%ld)\n"
+
+#: pei-x86_64.c:596
+#, c-format
+msgid ""
+"\n"
+"The Function Table (interpreted %s section contents)\n"
+msgstr ""
+"\n"
+"Tabelul cu funcÈ›ii (interpretat conÈ›inutul secÈ›iunii %s)\n"
+
+#: pei-x86_64.c:599
 #, c-format
-msgid "%s: unimplemented %s\n"
-msgstr "%s: %s neimplementat\n"
+msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
+msgstr "vma:\t\t\tAdresÄƒ ÃŽnceput\t AdresÄƒ SfÃ¢rÈ™it\t  DateDesf[;urate\n"
 
-#: pe-mips.c:821
+#: pei-x86_64.c:724
 #, c-format
-msgid "%s: jump too far away\n"
-msgstr "%s: salt prea departe(far away)\n"
+msgid ""
+"\n"
+"Dump of %s\n"
+msgstr ""
+"\n"
+"DescÄƒrcare din %s\n"
+
+#: peicode.h:823
+#, c-format
+msgid "%pB: unrecognized import type; %x"
+msgstr "%pB: tip de import nerecunoscut; %x"
 
-#: pe-mips.c:848
+#: peicode.h:840
 #, c-format
-msgid "%s: bad pair/reflo after refhi\n"
-msgstr "%s: pair/reflo invalid dupã refhi\n"
+msgid "%pB: missing import name for IMPORT_NAME_EXPORTAS for %s"
+msgstr "%pB: nume de import lipsÄƒ pentru IMPORT_NAME_EXPORTAS pentru %s"
 
-#. XXX code yet to be written.
-#: peicode.h:787
+#: peicode.h:849
 #, c-format
-msgid "%s: Unhandled import type; %x"
-msgstr "%s: Tip import nemanipulabil; %x"
+msgid "%pB: unrecognized import name type; %x"
+msgstr "%pB: tip de nume de import nerecunoscut; %x"
 
-#: peicode.h:792
+#: peicode.h:1299
 #, c-format
-msgid "%s: Unrecognised import type; %x"
-msgstr "%s: Tip import necunoscut; %x"
+msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
+msgstr "%pB: tip de maÈ™inÄƒ nerecunoscut (0x%x) Ã®n arhiva Format de bibliotecÄƒ de import"
 
-#: peicode.h:806
+#: peicode.h:1312
 #, c-format
-msgid "%s: Unrecognised import name type; %x"
-msgstr "%s: Tip nume import necunoscut; %x"
+msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
+msgstr "%pB: tip de maÈ™inÄƒ recunoscut, dar negestionat (0x%x) Ã®n arhiva Format de bibliotecÄƒ de import"
 
-#: peicode.h:1164
+#: peicode.h:1330
 #, c-format
-msgid "%s: Unrecognised machine type (0x%x) in Import Library Format archive"
-msgstr "%s: Tip maºinã necunoscut (0x%x) în arhiva Import Library Format"
+msgid "%pB: size field is zero in Import Library Format header"
+msgstr "%pB: cÃ¢mpul de dimensiune este zero Ã®n antetul Format de bibliotecÄƒ de import"
 
-#: peicode.h:1176
+#: peicode.h:1356
 #, c-format
-msgid "%s: Recognised but unhandled machine type (0x%x) in Import Library Format archive"
-msgstr "%s: Tip de maºinã recunoscut dar nemanipulabil (0x%x) în arhiva Import Library Format"
+msgid "%pB: string not null terminated in ILF object file"
+msgstr "%pB: È™irul nu este terminat cu nul Ã®n fiÈ™ierul obiect ILF"
 
-#: peicode.h:1193
+#: peicode.h:1427
 #, c-format
-msgid "%s: size field is zero in Import Library Format header"
-msgstr "%s: mãrimea câmpului din headerul Import Library Format este zero"
+msgid "%pB: error: debug data ends beyond end of debug directory"
+msgstr "%pB: eroare: datele de depanare se terminÄƒ dincolo de sfÃ¢rÈ™itul directorului de depanare"
 
-#: peicode.h:1224
+#: peicode.h:1599
 #, c-format
-msgid "%s: string not null terminated in ILF object file."
-msgstr "%s: ºirul nenul terminat în fiºier obiect ILF."
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr "%pB: se ajusteazÄƒ SectionAlignment nevalidÄƒ"
 
-#: ppcboot.c:416
+#: peicode.h:1609
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr "%pB: se ajusteazÄƒ FileAlignment nevalidÄƒ"
+
+#: peicode.h:1617
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr "%pB: NumberOfRvaAndSizes nevalid"
+
+#: plugin.c:195
+#, c-format
+msgid "%s: failed to open to extract object only section: %s"
+msgstr "%s: nu s-a putut deschide pentru a extrage doar secÈ›iunea obiectului: %s"
+
+#: plugin.c:212
+#, c-format
+msgid "%pB: invalid file to extract object only section: %s"
+msgstr "%pB: fiÈ™ier nevalid pentru a extrage doar secÈ›iunea obiectului: %s"
+
+#: plugin.c:225
+#, c-format
+msgid "%pB: failed to extract object only section: %s"
+msgstr "%pB: a eÈ™uat extragerea doar a secÈ›iunii obiectului: %s"
+
+#: plugin.c:245
+#, c-format
+msgid "%pB: failed to open object only section: %s"
+msgstr "%pB: a eÈ™uat deschiderea doar a secÈ›iunii obiectului: %s"
+
+#: plugin.c:255
+#, c-format
+msgid "%pB: failed to get symbol table in object only section: %s"
+msgstr "%pB: nu s-a reuÈ™it obÈ›inerea tabelului de simboluri Ã®n secÈ›iunea cu obiect unic: %s"
+
+#: plugin.c:411
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr "spaÈ›iu de lucru pentru modul: nu mai sunt descriptori de fiÈ™iere. ÃŽncercaÈ›i sÄƒ utilizaÈ›i mai puÈ›ine obiecte/arhive\n"
+
+#: ppcboot.c:392
+#, c-format
 msgid ""
 "\n"
 "ppcboot header:\n"
 msgstr ""
 "\n"
-"header ppcboot:\n"
+"Antet ppcboot:\n"
 
-#: ppcboot.c:417
+#: ppcboot.c:393
 #, c-format
 msgid "Entry offset        = 0x%.8lx (%ld)\n"
-msgstr "Offset intrare        = 0x%.8lx (%ld)\n"
+msgstr "Decalaj intrare     = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:418
+#: ppcboot.c:395
 #, c-format
 msgid "Length              = 0x%.8lx (%ld)\n"
-msgstr "Lungime              = 0x%.8lx (%ld)\n"
+msgstr "Lungime             = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:421
+#: ppcboot.c:399
 #, c-format
 msgid "Flag field          = 0x%.2x\n"
-msgstr "Câmp Marcaj(Flag)      = 0x%.2x\n"
+msgstr "CÃ¢mp fanion         = 0x%.2x\n"
 
-#: ppcboot.c:427
+#: ppcboot.c:405
 #, c-format
 msgid "Partition name      = \"%s\"\n"
-msgstr "Nume Partiþie      = \"%s\"\n"
+msgstr "Nume partiÈ›ie       = \"%s\"\n"
 
-#: ppcboot.c:446
+#: ppcboot.c:425
 #, c-format
 msgid ""
 "\n"
 "Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 msgstr ""
 "\n"
-"Start Partiþie[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+"ÃŽnceput PartiÈ›ie[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:452
+#: ppcboot.c:432
 #, c-format
 msgid "Partition[%d] end    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
-msgstr "Sfârºit Partiþie[%d]    = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
+msgstr "SfÃ¢rÈ™it PartiÈ›ie[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }\n"
 
-#: ppcboot.c:458
+#: ppcboot.c:439
 #, c-format
 msgid "Partition[%d] sector = 0x%.8lx (%ld)\n"
-msgstr "Sector Partiþie[%d] sector = 0x%.8lx (%ld)\n"
+msgstr "Sector PartiÈ›ie[%d]  = 0x%.8lx (%ld)\n"
 
-#: ppcboot.c:459
+#: ppcboot.c:443
 #, c-format
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
-msgstr "Mãrime Partiþie[%d] = 0x%.8lx (%ld)\n"
+msgstr "Lungime PartiÈ›ie[%d] = 0x%.8lx (%ld)\n"
 
-#: som.c:5422
-msgid "som_sizeof_headers unimplemented"
-msgstr "som_sizeof_headers neimplementatã"
+#: reloc.c:8423
+msgid "INPUT_SECTION_FLAGS are not supported"
+msgstr "INPUT_SECTION_FLAGS nu sunt acceptatÄƒ"
 
-#: srec.c:302
+#: reloc.c:8689
 #, c-format
-msgid "%s:%d: Unexpected character `%s' in S-record file\n"
-msgstr "%s:%d: Caracter neaºteptat `%s'în fiºier S-record\n"
+msgid "%pB: unrecognized relocation type %#x in section `%pA'"
+msgstr "%pB: tip de realocare nerecunoscut %#x Ã®n secÈ›iunea â€ž%pAâ€�"
 
-#: stabs.c:319
+#. PR 21803: Suggest the most likely cause of this error.
+#: reloc.c:8693
 #, c-format
-msgid "%s(%s+0x%lx): Stabs entry has invalid string index."
-msgstr "%s(%s+0x%lx): Intrarea bruscã(stab) are index ºir invalid."
+msgid "is this version of the linker - %s - out of date ?"
+msgstr "este aceastÄƒ versiune a editorului de legÄƒturi - %s - depÄƒÈ™itÄƒ?"
 
-#: syms.c:1019
-msgid "Unsupported .stab relocation"
-msgstr "Relocare .stab nesuportatã"
+#: rs6000-core.c:471
+#, c-format
+msgid "%pB: warning core file truncated"
+msgstr "%pB: avertisment: fiÈ™ierul core a fost trunchiat"
 
-#: vms-gsd.c:356
+#: som.c:3002
 #, c-format
-msgid "bfd_make_section (%s) failed"
-msgstr "bfd_make_section (%s) eºuatã"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr "%pB(%pA+%#<PRIx64>): decalajul realocÄƒrii %s nu este Ã®n ordinea corectÄƒ"
 
-#: vms-gsd.c:371
+#: som.c:3015
 #, c-format
-msgid "bfd_set_section_flags (%s, %x) failed"
-msgstr "bfd_set_section_flags (%s, %x) eºuatã"
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr "%pB(%pA+%#<PRIx64>): decalaj realocare %s Ã®n afara intervalului"
 
-#: vms-gsd.c:407
+#. User has specified a subspace without its containing space.
+#: som.c:5403
 #, c-format
-msgid "Size mismatch section %s=%lx, %s=%lx"
-msgstr "Mãrime nepotrivitã secþiune %s=%lx, %s=%lx"
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr "%pB[%pA]: nicio secÈ›iune de ieÈ™ire pentru spaÈ›iul %pA"
 
-#: vms-gsd.c:704
+#: som.c:5450
 #, c-format
-msgid "unknown gsd/egsd subtype %d"
-msgstr "subtip %d gsd/egsd necunoscut"
+msgid ""
+"\n"
+"Exec Auxiliary Header\n"
+msgstr ""
+"\n"
+"Antetul auxiliar al executabilului\n"
 
-#: vms-hdr.c:408
-msgid "Object module NOT error-free !\n"
-msgstr "Modul obiect CU erori !\n"
+#: som.c:5759
+msgid "som_sizeof_headers unimplemented"
+msgstr "som_sizeof_headers neimplementatÄƒ"
 
-#: vms-misc.c:541
+#: srec.c:260
 #, c-format
-msgid "Stack overflow (%d) in _bfd_vms_push"
-msgstr "Depãºire(overflow) de stivã(%d) în bfd_vms_push"
+msgid "%pB:%d: unexpected character `%s' in S-record file"
+msgstr "%pB:%d: caracter neaÈ™teptat â€ž%sâ€� Ã®n fiÈ™ierul S-record"
 
-#: vms-misc.c:559
-msgid "Stack underflow in _bfd_vms_pop"
-msgstr "Subfolosire(underflow) a stivei _bfd_vms_pop"
+#: srec.c:488
+#, c-format
+msgid "%pB:%d: byte count %d too small"
+msgstr "%pB:%d: numÄƒrul de octeÈ›i %d este prea mic"
 
-#: vms-misc.c:918
-msgid "_bfd_vms_output_counted called with zero bytes"
-msgstr "_bfd_vms_output_counted apelat cu zero octeþi"
+#: srec.c:580 srec.c:614
+#, c-format
+msgid "%pB:%d: bad checksum in S-record file"
+msgstr "%pB:%d: sumÄƒ de verificare greÈ™itÄƒ Ã®n fiÈ™ierul S-record"
 
-#: vms-misc.c:923
-msgid "_bfd_vms_output_counted called with too many bytes"
-msgstr "_bfd_vms_output_counted apelat cu prea mulþi octeþi"
+#: stabs.c:308
+#, c-format
+msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
+msgstr "%pB(%pA+%#lx): intrarea stabs are un index de È™ir nevalid"
+
+#: syms.c:1121
+msgid "unsupported .stab relocation"
+msgstr "realocare .stab neacceptatÄƒ"
 
-#: vms-misc.c:1054
+#: vms-alpha.c:479
+msgid "corrupt EIHD record - size is too small"
+msgstr "Ã®nregistrare EIHD coruptÄƒ - dimensiunea este prea micÄƒ"
+
+#: vms-alpha.c:665
 #, c-format
-msgid "Symbol %s replaced by %s\n"
-msgstr "Simbolul %s înlocuit de %s\n"
+msgid "unable to read EIHS record at offset %#x"
+msgstr "nu se poate citi Ã®nregistrarea EIHS la poziÈ›ia %#x"
+
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr "Ã®nregistrarea este prea micÄƒ pentru lungimea numelui simbolului"
 
-#: vms-misc.c:1117
+#: vms-alpha.c:1190
 #, c-format
-msgid "failed to enter %s"
-msgstr "Eºec în introducerea %s"
+msgid "corrupt EGSD record: its size (%#x) is too small"
+msgstr "Ã®nregistrare EGSD coruptÄƒ: dimensiunea acesteia (%#x) este prea micÄƒ"
 
-#: vms-tir.c:102
-msgid "No Mem !"
-msgstr "Nu mai existã Mem !"
+#: vms-alpha.c:1214
+#, c-format
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr "tip de Ã®nregistrare EGSD coruptÄƒ %d: dimensiunea (%#x) este mai mare decÃ¢t spaÈ›iul rÄƒmas (%#x)"
 
-#: vms-tir.c:383
+#: vms-alpha.c:1224
 #, c-format
-msgid "bad section index in %s"
-msgstr "index de secþiune invalid în %s"
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr "tip de Ã®nregistrare EGSD corupt %d: dimensiunea (%#x) este prea micÄƒ"
 
-#: vms-tir.c:396
+#: vms-alpha.c:1366
 #, c-format
-msgid "unsupported STA cmd %s"
-msgstr "cmd STA %s nesuportatã"
+msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
+msgstr "Ã®nregistrare EGSD coruptÄƒ: cÃ¢mpul psindx este prea mare (%#lx)"
+
+#: vms-alpha.c:1441
+#, c-format
+msgid "unknown EGSD subtype %d"
+msgstr "subtip EGSD necunoscut %d"
+
+#: vms-alpha.c:1474
+#, c-format
+msgid "stack overflow (%d) in _bfd_vms_push"
+msgstr "depÄƒÈ™ire a stivei Ã®n partea de sus (%d) Ã®n _bfd_vms_push"
+
+#: vms-alpha.c:1488
+msgid "stack underflow in _bfd_vms_pop"
+msgstr "depÄƒÈ™ire a stivei Ã®n partea de jos _bfd_vms_pop"
 
-#: vms-tir.c:401 vms-tir.c:1261
+#: vms-alpha.c:1562
 #, c-format
-msgid "reserved STA cmd %d"
-msgstr "cmd STA %d rezervatã"
+msgid "dst_define_location %u too large"
+msgstr "dst_define_location %u prea mare"
 
-#: vms-tir.c:512 vms-tir.c:535
+#. These names have not yet been added to this switch statement.
+#: vms-alpha.c:1765
 #, c-format
-msgid "%s: no symbol \"%s\""
-msgstr "%s: nu existã simbolul \"%s\""
+msgid "unknown ETIR command %d"
+msgstr "comandÄƒ ETIR necunoscutÄƒ %d"
+
+#: vms-alpha.c:1796
+msgid "corrupt vms value"
+msgstr "valoarea vms coruptÄƒ"
 
-#. unsigned shift
-#. rotate
+#: vms-alpha.c:1927
+msgid "corrupt ETIR record encountered"
+msgstr "Ã®nregistrare ETIR coruptÄƒ Ã®ntÃ¢lnitÄƒ"
+
+#: vms-alpha.c:1989
+#, c-format
+msgid "bad section index in %s"
+msgstr "index de secÈ›iune incorect Ã®n %s"
+
+#: vms-alpha.c:2003
+#, c-format
+msgid "unsupported STA cmd %s"
+msgstr "comanda STA %s nu este acceptatÄƒ"
+
+#. Insert field.
+#. Unsigned shift.
+#. Rotate.
 #. Redefine symbol to current location.
 #. Define a literal.
-#: vms-tir.c:602 vms-tir.c:714 vms-tir.c:824 vms-tir.c:842 vms-tir.c:850
-#: vms-tir.c:859 vms-tir.c:1584
+#: vms-alpha.c:2211 vms-alpha.c:2242 vms-alpha.c:2337 vms-alpha.c:2557
 #, c-format
 msgid "%s: not supported"
-msgstr "%s: nesuportat"
+msgstr "%s: nu este acceptat"
 
-#: vms-tir.c:607 vms-tir.c:1439
+#: vms-alpha.c:2217
 #, c-format
 msgid "%s: not implemented"
 msgstr "%s: neimplementat"
 
-#: vms-tir.c:611 vms-tir.c:1443
+#: vms-alpha.c:2382 vms-alpha.c:2397
 #, c-format
-msgid "reserved STO cmd %d"
-msgstr "cmd STO %d rezervatã"
+msgid "invalid %s"
+msgstr "%s nevalid"
 
-#: vms-tir.c:729 vms-tir.c:1589
+#. Divide by zero is supposed to give a result of zero,
+#. and a non-fatal warning message.
+#: vms-alpha.c:2457
 #, c-format
-msgid "reserved OPR cmd %d"
-msgstr "cmd OPR %d rezervatã"
+msgid "%s divide by zero"
+msgstr "%s Ã®mpÄƒrÈ›it la zero"
 
-#: vms-tir.c:797 vms-tir.c:1653
+#: vms-alpha.c:2523
 #, c-format
-msgid "reserved CTL cmd %d"
-msgstr "cmd CTL %d rezervatã"
+msgid "invalid use of %s with contexts"
+msgstr "utilizare nevalidÄƒ a lui %s cu contexte"
 
-#. stack byte from image
-#. arg: none.
-#: vms-tir.c:1169
-msgid "stack-from-image not implemented"
-msgstr "stack-from-image neimplementatã"
+#: vms-alpha.c:2581
+#, c-format
+msgid "reserved cmd %d"
+msgstr "comandÄƒ STA %d rezervatÄƒ"
 
-#: vms-tir.c:1187
-msgid "stack-entry-mask not fully implemented"
-msgstr "stack-entry-mask neimplementatã complet"
+#: vms-alpha.c:2665
+msgid "corrupt EEOM record - size is too small"
+msgstr "Ã®nregistrare coruptÄƒ EEOM - dimensiunea este prea micÄƒ"
 
-#. compare procedure argument
-#. arg: cs	symbol name
-#. by	argument index
-#. da	argument descriptor
-#.
-#. compare argument descriptor with symbol argument (ARG$V_PASSMECH)
-#. and stack TRUE (args match) or FALSE (args dont match) value.
-#: vms-tir.c:1201
-msgid "PASSMECH not fully implemented"
-msgstr "PASSMECH neimplementatã complet"
+#: vms-alpha.c:2674
+msgid "object module not error-free !"
+msgstr "modulul obiect nu este lipsit de erori!"
+
+#: vms-alpha.c:4006
+#, c-format
+msgid "SEC_RELOC with no relocs in section %pA"
+msgstr "SEC_RELOC fÄƒrÄƒ realocÄƒri Ã®n secÈ›iunea %pA"
+
+#: vms-alpha.c:4058 vms-alpha.c:4286
+#, c-format
+msgid "size error in section %pA"
+msgstr "eroare de dimensiune Ã®n secÈ›iunea %pA"
+
+#: vms-alpha.c:4229
+msgid "spurious ALPHA_R_BSR reloc"
+msgstr "realocare ALPHA_R_BSR falsÄƒ"
+
+#: vms-alpha.c:4272
+#, c-format
+msgid "unhandled relocation %s"
+msgstr "realocare negestionatÄƒ %s"
+
+#: vms-alpha.c:4637
+#, c-format
+msgid "unknown source command %d"
+msgstr "comanda sursÄƒ necunoscutÄƒ %d"
+
+#: vms-alpha.c:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804
+#: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842
+#: vms-alpha.c:4847
+#, c-format
+msgid "%s not implemented"
+msgstr "%s neimplementat"
+
+#: vms-alpha.c:4883
+#, c-format
+msgid "unknown line command %d"
+msgstr "comandÄƒ de linie necunoscutÄƒ %d"
+
+#: vms-alpha.c:5322
+msgid "corrupt reloc record"
+msgstr "Ã®nregistrare de realocare coruptÄƒ"
+
+#: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405
+#: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443
+#, c-format
+msgid "unknown reloc %s + %s"
+msgstr "realocare necunoscutÄƒ %s + %s"
+
+#: vms-alpha.c:5502
+#, c-format
+msgid "unknown reloc %s"
+msgstr "realocare necunoscutÄƒ %s"
+
+#: vms-alpha.c:5516
+msgid "invalid section index in ETIR"
+msgstr "index de secÈ›iune nevalid Ã®n ETIR"
+
+#: vms-alpha.c:5525
+msgid "relocation for non-REL psect"
+msgstr "realocare pentru psect non-REL"
+
+#: vms-alpha.c:5578
+#, c-format
+msgid "unknown symbol in command %s"
+msgstr "simbol necunoscut Ã®n comanda %s"
+
+#: vms-alpha.c:5996
+#, c-format
+msgid "reloc (%d) is *UNKNOWN*"
+msgstr "realocarea (%d) este *NECUNOSCUTÄ‚*"
+
+#: vms-alpha.c:6113
+#, c-format
+msgid "  EMH %d (len=%u): "
+msgstr "  EMH %d (lung=%u): "
+
+#: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216
+#, c-format
+msgid "   Error: %s min length is %u\n"
+msgstr "   Eroare: %s lungimea minimÄƒ este %u\n"
+
+#: vms-alpha.c:6141
+#, c-format
+msgid "Module header\n"
+msgstr "Antetul modulului\n"
+
+#: vms-alpha.c:6142
+#, c-format
+msgid "   structure level: %u\n"
+msgstr "   nivelul structurii       : %u\n"
+
+#: vms-alpha.c:6143
+#, c-format
+msgid "   max record size: %u\n"
+msgstr "   dim. max. a Ã®nregistrÄƒrii: %u\n"
+
+#: vms-alpha.c:6149
+#, c-format
+msgid "   Error: The module name is missing\n"
+msgstr "   Eroare: numele modulului lipseÈ™te\n"
+
+#: vms-alpha.c:6155
+#, c-format
+msgid "   Error: The module name is too long\n"
+msgstr "   Eroare: numele modulului este prea lung\n"
+
+#: vms-alpha.c:6158
+#, c-format
+msgid "   module name    : %.*s\n"
+msgstr "   numele modulului         : %.*s\n"
+
+#: vms-alpha.c:6162
+#, c-format
+msgid "   Error: The module version is missing\n"
+msgstr "   Eroare: versiunea modulului lipseÈ™te\n"
+
+#: vms-alpha.c:6168
+#, c-format
+msgid "   Error: The module version is too long\n"
+msgstr "   Eroare: versiunea modulului este prea lungÄƒ\n"
+
+#: vms-alpha.c:6171
+#, c-format
+msgid "   module version : %.*s\n"
+msgstr "   versiunea modulului      : %.*s\n"
+
+#: vms-alpha.c:6174
+#, c-format
+msgid "   Error: The compile date is truncated\n"
+msgstr "   Eroare: data de compilare este trunchiatÄƒ\n"
+
+#: vms-alpha.c:6176
+#, c-format
+msgid "   compile date   : %.17s\n"
+msgstr "   data compilÄƒrii          : %.17s\n"
+
+#: vms-alpha.c:6181
+#, c-format
+msgid "Language Processor Name\n"
+msgstr "Numele procesorului de limbaj\n"
+
+#: vms-alpha.c:6182
+#, c-format
+msgid "   language name: %.*s\n"
+msgstr "   numele limbajului: %.*s\n"
+
+#: vms-alpha.c:6186
+#, c-format
+msgid "Source Files Header\n"
+msgstr "Antetul fiÈ™ierelor sursÄƒ\n"
+
+#: vms-alpha.c:6187
+#, c-format
+msgid "   file: %.*s\n"
+msgstr "   fiÈ™ier: %.*s\n"
+
+#: vms-alpha.c:6191
+#, c-format
+msgid "Title Text Header\n"
+msgstr "Antetul textului titlului\n"
+
+#: vms-alpha.c:6192
+#, c-format
+msgid "   title: %.*s\n"
+msgstr "   titlu: %.*s\n"
+
+#: vms-alpha.c:6196
+#, c-format
+msgid "Copyright Header\n"
+msgstr "Antet pentru drepturi de autor\n"
+
+#: vms-alpha.c:6197
+#, c-format
+msgid "   copyright: %.*s\n"
+msgstr "   drepturi de autor: %.*s\n"
+
+#: vms-alpha.c:6201
+#, c-format
+msgid "unhandled emh subtype %u\n"
+msgstr "subtip emh negestionat %u\n"
+
+#: vms-alpha.c:6211
+#, c-format
+msgid "  EEOM (len=%u):\n"
+msgstr "  EEOM (lung=%u):\n"
+
+#: vms-alpha.c:6221
+#, c-format
+msgid "   number of cond linkage pairs: %u\n"
+msgstr "   numÄƒrul de perechi de legÄƒturÄƒ cond: %u\n"
+
+#: vms-alpha.c:6223
+#, c-format
+msgid "   completion code: %u\n"
+msgstr "   cod de completare: %u\n"
+
+#: vms-alpha.c:6228
+#, c-format
+msgid "   transfer addr flags: 0x%02x\n"
+msgstr "   fanioane de adresÄƒ de transfer: 0x%02x\n"
+
+#: vms-alpha.c:6229
+#, c-format
+msgid "   transfer addr psect: %u\n"
+msgstr "   psect de adresÄƒ de transfer   : %u\n"
+
+#: vms-alpha.c:6231
+#, c-format
+msgid "   transfer address   : 0x%08x\n"
+msgstr "   adresÄƒ de transfer            : 0x%08x\n"
+
+#: vms-alpha.c:6240
+msgid " WEAK"
+msgstr " WEAK"
+
+#: vms-alpha.c:6242
+msgid " DEF"
+msgstr " DEF"
+
+#: vms-alpha.c:6244
+msgid " UNI"
+msgstr " UNI"
+
+#: vms-alpha.c:6246 vms-alpha.c:6267
+msgid " REL"
+msgstr " REL"
+
+#: vms-alpha.c:6248
+msgid " COMM"
+msgstr " COMM"
+
+#: vms-alpha.c:6250
+msgid " VECEP"
+msgstr " VECEP"
+
+#: vms-alpha.c:6252
+msgid " NORM"
+msgstr " NORM"
+
+#: vms-alpha.c:6254
+msgid " QVAL"
+msgstr " QVAL"
+
+#: vms-alpha.c:6261
+msgid " PIC"
+msgstr " PIC"
+
+#: vms-alpha.c:6263
+msgid " LIB"
+msgstr " LIB"
+
+#: vms-alpha.c:6265
+msgid " OVR"
+msgstr " OVR"
+
+#: vms-alpha.c:6269
+msgid " GBL"
+msgstr " GBL"
+
+#: vms-alpha.c:6271
+msgid " SHR"
+msgstr " SHR"
+
+#: vms-alpha.c:6273
+msgid " EXE"
+msgstr " EXE"
+
+#: vms-alpha.c:6275
+msgid " RD"
+msgstr " RD"
+
+#: vms-alpha.c:6277
+msgid " WRT"
+msgstr " WRT"
+
+#: vms-alpha.c:6279
+msgid " VEC"
+msgstr " VEC"
+
+#: vms-alpha.c:6281
+msgid " NOMOD"
+msgstr " NOMOD"
+
+#: vms-alpha.c:6283
+msgid " COM"
+msgstr " COM"
+
+#: vms-alpha.c:6285
+msgid " 64B"
+msgstr " 64B"
+
+#: vms-alpha.c:6294
+#, c-format
+msgid "  EGSD (len=%u):\n"
+msgstr "  EGSD (lung=%u):\n"
+
+#: vms-alpha.c:6309
+#, c-format
+msgid "  EGSD entry %2u (type: %u, len: %u): "
+msgstr "  intrarea EGSD %2u (tip: %u, lung: %u): "
+
+#: vms-alpha.c:6315 vms-alpha.c:6610
+#, c-format
+msgid "   Erroneous length\n"
+msgstr "   Lungime eronatÄƒ\n"
+
+#: vms-alpha.c:6328
+#, c-format
+msgid "PSC - Program section definition\n"
+msgstr "PSC - Definirea secÈ›iunii programului\n"
+
+#: vms-alpha.c:6329 vms-alpha.c:6349
+#, c-format
+msgid "   alignment  : 2**%u\n"
+msgstr "   alinierea  : 2**%u\n"
+
+#: vms-alpha.c:6330 vms-alpha.c:6350
+#, c-format
+msgid "   flags      : 0x%04x"
+msgstr "   fanioane   : 0x%04x"
+
+#: vms-alpha.c:6334
+#, c-format
+msgid "   alloc (len): %u (0x%08x)\n"
+msgstr "   aloc (lung): %u (0x%08x)\n"
+
+#: vms-alpha.c:6336 vms-alpha.c:6402 vms-alpha.c:6470
+#, c-format
+msgid "   name       : %.*s\n"
+msgstr "   nume       : %.*s\n"
+
+#: vms-alpha.c:6348
+#, c-format
+msgid "SPSC - Shared Image Program section def\n"
+msgstr "SPSC - Definirea secÈ›iunii programului de imagine partajatÄƒ\n"
+
+#: vms-alpha.c:6354
+#, c-format
+msgid "   alloc (len)   : %u (0x%08x)\n"
+msgstr "   aloc (lung)     : %u (0x%08x)\n"
+
+#: vms-alpha.c:6355
+#, c-format
+msgid "   image offset  : 0x%08x\n"
+msgstr "   poziÈ›ie imagine : 0x%08x\n"
+
+#: vms-alpha.c:6357
+#, c-format
+msgid "   symvec offset : 0x%08x\n"
+msgstr "   poziÈ›ie symvec  : 0x%08x\n"
+
+#: vms-alpha.c:6360
+#, c-format
+msgid "   name          : %.*s\n"
+msgstr "   nume            : %.*s\n"
+
+#: vms-alpha.c:6376
+#, c-format
+msgid "SYM - Global symbol definition\n"
+msgstr "SYM - Definirea simbolului global\n"
+
+#: vms-alpha.c:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505
+#, c-format
+msgid "   flags: 0x%04x"
+msgstr "   fanioane: 0x%04x"
+
+#: vms-alpha.c:6380
+#, c-format
+msgid "   psect offset: 0x%08x\n"
+msgstr "   poziÈ›ie psect : 0x%08x\n"
+
+#: vms-alpha.c:6384
+#, c-format
+msgid "   code address: 0x%08x\n"
+msgstr "   adresa codului: 0x%08x\n"
+
+#: vms-alpha.c:6386
+#, c-format
+msgid "   psect index for entry point : %u\n"
+msgstr "   index psect pentru punctul de intrare : %u\n"
+
+#: vms-alpha.c:6389 vms-alpha.c:6489 vms-alpha.c:6512
+#, c-format
+msgid "   psect index : %u\n"
+msgstr "   index psect   : %u\n"
+
+#: vms-alpha.c:6392 vms-alpha.c:6492 vms-alpha.c:6515
+#, c-format
+msgid "   name        : %.*s\n"
+msgstr "   nume          : %.*s\n"
+
+#: vms-alpha.c:6400
+#, c-format
+msgid "SYM - Global symbol reference\n"
+msgstr "SYM - ReferinÈ›Äƒ de simbol global\n"
+
+#: vms-alpha.c:6415
+#, c-format
+msgid "IDC - Ident Consistency check\n"
+msgstr "IDC - Verificarea consistenÈ›ei identificÄƒrii\n"
+
+#: vms-alpha.c:6416
+#, c-format
+msgid "   flags         : 0x%08x"
+msgstr "   fanioane         : 0x%08x"
+
+#: vms-alpha.c:6420
+#, c-format
+msgid "   id match      : %x\n"
+msgstr "   potrivire id     : %x\n"
+
+#: vms-alpha.c:6422
+#, c-format
+msgid "   error severity: %x\n"
+msgstr "   gravitatea erorii: %x\n"
+
+#: vms-alpha.c:6426
+#, c-format
+msgid "   entity name   : %.*s\n"
+msgstr "   numele entitÄƒÈ›ii : %.*s\n"
+
+#: vms-alpha.c:6432
+#, c-format
+msgid "   object name   : %.*s\n"
+msgstr "   numele obiectului: %.*s\n"
+
+#: vms-alpha.c:6441
+#, c-format
+msgid "   binary ident  : 0x%08x\n"
+msgstr "   ident binar      : 0x%08x\n"
+
+#: vms-alpha.c:6445
+#, c-format
+msgid "   ascii ident   : %.*s\n"
+msgstr "   ascii ident      : %.*s\n"
+
+#: vms-alpha.c:6457
+#, c-format
+msgid "SYMG - Universal symbol definition\n"
+msgstr "SYMG - Definirea simbolului universal\n"
+
+#: vms-alpha.c:6461
+#, c-format
+msgid "   symbol vector offset: 0x%08x\n"
+msgstr "   decalaj vector simbol: 0x%08x\n"
+
+#: vms-alpha.c:6463
+#, c-format
+msgid "   entry point: 0x%08x\n"
+msgstr "   punct de intrare: 0x%08x\n"
+
+#: vms-alpha.c:6465
+#, c-format
+msgid "   proc descr : 0x%08x\n"
+msgstr "   descr proc      : 0x%08x\n"
+
+#: vms-alpha.c:6467
+#, c-format
+msgid "   psect index: %u\n"
+msgstr "   index psect     : %u\n"
+
+#: vms-alpha.c:6481
+#, c-format
+msgid "SYMV - Vectored symbol definition\n"
+msgstr "SYMV - Definirea simbolului vectorizat\n"
+
+#: vms-alpha.c:6485
+#, c-format
+msgid "   vector      : 0x%08x\n"
+msgstr "   vector       : 0x%08x\n"
+
+#: vms-alpha.c:6487 vms-alpha.c:6510
+#, c-format
+msgid "   psect offset: %u\n"
+msgstr "   poziÈ›ie psect: %u\n"
+
+#: vms-alpha.c:6504
+#, c-format
+msgid "SYMM - Global symbol definition with version\n"
+msgstr "SYMM - Definirea simbolului global cu versiunea\n"
+
+#: vms-alpha.c:6508
+#, c-format
+msgid "   version mask: 0x%08x\n"
+msgstr "   masca vers  : 0x%08x\n"
+
+#: vms-alpha.c:6521
+#, c-format
+msgid "unhandled egsd entry type %u\n"
+msgstr "tip de intrare egsd negestionat %u\n"
+
+#: vms-alpha.c:6560
+#, c-format
+msgid "    linkage index: %u, replacement insn: 0x%08x\n"
+msgstr "    index legÄƒturÄƒ: %u, insn Ã®nlocuire: 0x%08x\n"
+
+#: vms-alpha.c:6564
+#, c-format
+msgid "    psect idx 1: %u, offset 1: 0x%08x %08x\n"
+msgstr "    ind psect1 : %u, decalaj1 : 0x%08x %08x\n"
+
+#: vms-alpha.c:6569
+#, c-format
+msgid "    psect idx 2: %u, offset 2: 0x%08x %08x\n"
+msgstr "    ind psect 2: %u, decalaj 2: 0x%08x %08x\n"
+
+#: vms-alpha.c:6575
+#, c-format
+msgid "    psect idx 3: %u, offset 3: 0x%08x %08x\n"
+msgstr "    ind psect 3: %u, decalaj 3: 0x%08x %08x\n"
+
+#: vms-alpha.c:6580
+#, c-format
+msgid "    global name: %.*s\n"
+msgstr "    nume global: %.*s\n"
+
+#: vms-alpha.c:6592
+#, c-format
+msgid "  %s (len=%u):\n"
+msgstr "  %s (lung=%u):\n"
+
+#: vms-alpha.c:6615
+#, c-format
+msgid "   (type: %3u, size: %3u): "
+msgstr "   (tip: %3u, dim.: %3u): "
+
+#: vms-alpha.c:6621
+#, c-format
+msgid "STA_GBL (stack global) %.*s\n"
+msgstr "STA_GBL (stivÄƒ globalÄƒ) %.*s\n"
+
+#: vms-alpha.c:6625
+#, c-format
+msgid "STA_LW (stack longword)"
+msgstr "STA_LW (stivÄƒ de cuvinte lungi)"
+
+#: vms-alpha.c:6631
+#, c-format
+msgid "STA_QW (stack quadword)"
+msgstr "STA_QW (stivÄƒ de cuvinte Ã®n catren)"
+
+#: vms-alpha.c:6638
+#, c-format
+msgid "STA_PQ (stack psect base + offset)\n"
+msgstr "STA_PQ (stivÄƒ de bazÄƒ psect + deplasarea)\n"
+
+#: vms-alpha.c:6641
+#, c-format
+msgid "    psect: %u, offset: 0x%08x %08x\n"
+msgstr "    psect: %u, decalaj: 0x%08x %08x\n"
+
+#: vms-alpha.c:6647
+#, c-format
+msgid "STA_LI (stack literal)\n"
+msgstr "STA_LI (stivÄƒ literalÄƒ)\n"
+
+#: vms-alpha.c:6650
+#, c-format
+msgid "STA_MOD (stack module)\n"
+msgstr "STA_MOD (stivÄƒ modul)\n"
+
+#: vms-alpha.c:6653
+#, c-format
+msgid "STA_CKARG (compare procedure argument)\n"
+msgstr "STA_CKARG (argumentul procedurii de comparare)\n"
+
+#: vms-alpha.c:6657
+#, c-format
+msgid "STO_B (store byte)\n"
+msgstr "STO_B (stocare octet)\n"
+
+#: vms-alpha.c:6660
+#, c-format
+msgid "STO_W (store word)\n"
+msgstr "STO_B (stocare cuvinte)\n"
+
+#: vms-alpha.c:6663
+#, c-format
+msgid "STO_LW (store longword)\n"
+msgstr "STO_LW (stocare cuvinte lungi)\n"
+
+#: vms-alpha.c:6666
+#, c-format
+msgid "STO_QW (store quadword)\n"
+msgstr "STA_QW (stocare de cuvinte Ã®n catren)\n"
+
+#: vms-alpha.c:6673
+#, c-format
+msgid "STO_IMMR (store immediate repeat) %u bytes\n"
+msgstr "STO_IMMR (stocare imediatÄƒ repetatÄƒ) %u octeÈ›i\n"
+
+#: vms-alpha.c:6682
+#, c-format
+msgid "STO_GBL (store global) %.*s\n"
+msgstr "STO_GBL (stocare globalÄƒ) %.*s\n"
+
+#: vms-alpha.c:6687
+#, c-format
+msgid "STO_CA (store code address) %.*s\n"
+msgstr "STO_CA (stocare adresÄƒ cod) %.*s\n"
+
+#: vms-alpha.c:6691
+#, c-format
+msgid "STO_RB (store relative branch)\n"
+msgstr "STO_RB (stocarea ramurii relative)\n"
+
+#: vms-alpha.c:6694
+#, c-format
+msgid "STO_AB (store absolute branch)\n"
+msgstr "STO_RB (stocarea ramurii absolute)\n"
+
+#: vms-alpha.c:6697
+#, c-format
+msgid "STO_OFF (store offset to psect)\n"
+msgstr "STO_OFF (stocheazÄƒ deplasarea Ã®n psect)\n"
+
+#: vms-alpha.c:6704
+#, c-format
+msgid "STO_IMM (store immediate) %u bytes\n"
+msgstr "STO_IMM (stocare imediatÄƒ) %u octeÈ›i\n"
+
+#: vms-alpha.c:6713
+#, c-format
+msgid "STO_GBL_LW (store global longword) %.*s\n"
+msgstr "STO_GBL_LW (stocare globalÄƒ de cuvinte lungi) %.*s\n"
+
+#: vms-alpha.c:6717
+#, c-format
+msgid "STO_OFF (store LP with procedure signature)\n"
+msgstr "STO_OFF (stocare LP cu semnÄƒtura procedurii)\n"
+
+#: vms-alpha.c:6720
+#, c-format
+msgid "STO_BR_GBL (store branch global) *todo*\n"
+msgstr "STO_BR_GBL (stocarea ramurii globale) *neimplementatÄƒ Ã®ncÄƒ*\n"
+
+#: vms-alpha.c:6723
+#, c-format
+msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
+msgstr "STO_BR_PS (stocarea ramurii psect + deplasarea) *neimplementatÄƒ Ã®ncÄƒ*\n"
+
+#: vms-alpha.c:6727
+#, c-format
+msgid "OPR_NOP (no-operation)\n"
+msgstr "OPR_NOP (fÄƒrÄƒ operaÈ›ie)\n"
+
+#: vms-alpha.c:6730
+#, c-format
+msgid "OPR_ADD (add)\n"
+msgstr "OPR_ADD (adunare)\n"
+
+#: vms-alpha.c:6733
+#, c-format
+msgid "OPR_SUB (subtract)\n"
+msgstr "OPR_SUB (scÄƒdere)\n"
+
+#: vms-alpha.c:6736
+#, c-format
+msgid "OPR_MUL (multiply)\n"
+msgstr "OPR_MUL (multiplicare)\n"
+
+#: vms-alpha.c:6739
+#, c-format
+msgid "OPR_DIV (divide)\n"
+msgstr "OPR_DIV (Ã®mpÄƒrÈ›ire)\n"
+
+#: vms-alpha.c:6742
+#, c-format
+msgid "OPR_AND (logical and)\n"
+msgstr "OPR_AND (â€žÈ™iâ€� logic)\n"
+
+#: vms-alpha.c:6745
+#, c-format
+msgid "OPR_IOR (logical inclusive or)\n"
+msgstr "OPR_IOR (â€žsauâ€� inclusiv logic)\n"
+
+#: vms-alpha.c:6748
+#, c-format
+msgid "OPR_EOR (logical exclusive or)\n"
+msgstr "OPR_IOR (â€žsauâ€� exclusiv logic)\n"
+
+#: vms-alpha.c:6751
+#, c-format
+msgid "OPR_NEG (negate)\n"
+msgstr "OPR_NEG (negaÈ›ie)\n"
+
+#: vms-alpha.c:6754
+#, c-format
+msgid "OPR_COM (complement)\n"
+msgstr "OPR_COM (complement)\n"
+
+#: vms-alpha.c:6757
+#, c-format
+msgid "OPR_INSV (insert field)\n"
+msgstr "OPR_INSV (inserare cÃ¢mp)\n"
+
+#: vms-alpha.c:6760
+#, c-format
+msgid "OPR_ASH (arithmetic shift)\n"
+msgstr "OPR_ASH (deplasare aritmeticÄƒ)\n"
+
+#: vms-alpha.c:6763
+#, c-format
+msgid "OPR_USH (unsigned shift)\n"
+msgstr "OPR_USH (deplasare fÄƒrÄƒ semn)\n"
+
+#: vms-alpha.c:6766
+#, c-format
+msgid "OPR_ROT (rotate)\n"
+msgstr "OPR_ROT (rotire)\n"
+
+#: vms-alpha.c:6769
+#, c-format
+msgid "OPR_SEL (select)\n"
+msgstr "OPR_SEL (selectare)\n"
+
+#: vms-alpha.c:6772
+#, c-format
+msgid "OPR_REDEF (redefine symbol to curr location)\n"
+msgstr "OPR_REDEF (redefineÈ™te simbolul la locaÈ›ia actualÄƒ)\n"
+
+#: vms-alpha.c:6775
+#, c-format
+msgid "OPR_REDEF (define a literal)\n"
+msgstr "OPR_REDEF (defineÈ™te un literal)\n"
+
+#: vms-alpha.c:6779
+#, c-format
+msgid "STC_LP (store cond linkage pair)\n"
+msgstr "STC_LP (stocare pereche de legÄƒturi condiÈ›ionale)\n"
+
+#: vms-alpha.c:6783
+#, c-format
+msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
+msgstr "STC_LP_PSB (stocare pereche de legÄƒturi condiÈ›ionale + semnÄƒturÄƒ)\n"
+
+#: vms-alpha.c:6787
+#, c-format
+msgid "   linkage index: %u, procedure: %.*s\n"
+msgstr "   index de legÄƒturÄƒ: %u, procedura: %.*s\n"
+
+#: vms-alpha.c:6794
+#, c-format
+msgid "   signature: %.*s\n"
+msgstr "   semnÄƒtura: %.*s\n"
+
+#: vms-alpha.c:6800
+#, c-format
+msgid "STC_GBL (store cond global)\n"
+msgstr "STC_GBL (stocare condiÈ›ionalÄƒ globalÄƒ)\n"
+
+#: vms-alpha.c:6803
+#, c-format
+msgid "   linkage index: %u, global: %.*s\n"
+msgstr "   index de legÄƒturÄƒ: %u, global: %.*s\n"
+
+#: vms-alpha.c:6808
+#, c-format
+msgid "STC_GCA (store cond code address)\n"
+msgstr "STC_GCA (adresa codului condiÈ›ional de stocare)\n"
+
+#: vms-alpha.c:6811
+#, c-format
+msgid "   linkage index: %u, procedure name: %.*s\n"
+msgstr "   index de legÄƒturÄƒ: %u, nume procedurÄƒ: %.*s\n"
+
+#: vms-alpha.c:6816
+#, c-format
+msgid "STC_PS (store cond psect + offset)\n"
+msgstr "STC_PS (stocare condiÈ›ionalÄƒ psect + deplasare)\n"
+
+#: vms-alpha.c:6820
+#, c-format
+msgid "   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"
+msgstr "   index de legÄƒturÄƒ: %u, psect: %u, decalaj: 0x%08x %08x\n"
+
+#: vms-alpha.c:6827
+#, c-format
+msgid "STC_NOP_GBL (store cond NOP at global addr)\n"
+msgstr "STC_NOP_GBL (stocare condiÈ›ionalÄƒ NOP la adresa globalÄƒ)\n"
+
+#: vms-alpha.c:6831
+#, c-format
+msgid "STC_NOP_PS (store cond NOP at psect + offset)\n"
+msgstr "STC_NOP_PS (stocare condiÈ›ionalÄƒ NOP la psect + deplasarea)\n"
+
+#: vms-alpha.c:6835
+#, c-format
+msgid "STC_BSR_GBL (store cond BSR at global addr)\n"
+msgstr "STC_BSR_GBL (stocare condiÈ›ionalÄƒ BSR la adresa globalÄƒ)\n"
+
+#: vms-alpha.c:6839
+#, c-format
+msgid "STC_BSR_PS (store cond BSR at psect + offset)\n"
+msgstr "STC_BSR_PS (stocare condiÈ›ionalÄƒ BSR la psect + deplasarea)\n"
+
+#: vms-alpha.c:6843
+#, c-format
+msgid "STC_LDA_GBL (store cond LDA at global addr)\n"
+msgstr "STC_LDA_GBL (stocare condiÈ›ionalÄƒ LDA la adresa globalÄƒ)\n"
+
+#: vms-alpha.c:6847
+#, c-format
+msgid "STC_LDA_PS (store cond LDA at psect + offset)\n"
+msgstr "STC_LDA_PS (stocare condiÈ›ionalÄƒ LDA la psect + deplasarea)\n"
+
+#: vms-alpha.c:6851
+#, c-format
+msgid "STC_BOH_GBL (store cond BOH at global addr)\n"
+msgstr "STC_BOH_GBL (stocare condiÈ›ionalÄƒ BOH la adresa globalÄƒ)\n"
+
+#: vms-alpha.c:6855
+#, c-format
+msgid "STC_BOH_PS (store cond BOH at psect + offset)\n"
+msgstr "STC_BOH_PS (stocare condiÈ›ionalÄƒ BOH la psect + deplasarea)\n"
+
+#: vms-alpha.c:6860
+#, c-format
+msgid "STC_NBH_GBL (store cond or hint at global addr)\n"
+msgstr "STC_NBH_GBL (stocare condiÈ›ionalÄƒ sau indiciu la adresa globalÄƒ)\n"
+
+#: vms-alpha.c:6864
+#, c-format
+msgid "STC_NBH_PS (store cond or hint at psect + offset)\n"
+msgstr "STC_NBH_PS (stocare condiÈ›ionalÄƒ sau indiciu la psect + deplasarea)\n"
+
+#: vms-alpha.c:6868
+#, c-format
+msgid "CTL_SETRB (set relocation base)\n"
+msgstr "CTL_SETRB (stabileÈ™te baza de realocare)\n"
+
+#: vms-alpha.c:6874
+#, c-format
+msgid "CTL_AUGRB (augment relocation base) %u\n"
+msgstr "CTL_AUGRB ( mÄƒreÈ™te baza de realocare) %u\n"
+
+#: vms-alpha.c:6879
+#, c-format
+msgid "CTL_DFLOC (define location)\n"
+msgstr "CTL_DFLOC (defineÈ™te locaÈ›ia)\n"
+
+#: vms-alpha.c:6882
+#, c-format
+msgid "CTL_STLOC (set location)\n"
+msgstr "CTL_STLOC (stabileÈ™te locaÈ›ia)\n"
+
+#: vms-alpha.c:6885
+#, c-format
+msgid "CTL_STKDL (stack defined location)\n"
+msgstr "CTL_STKDL (locaÈ›ia definitÄƒ Ã®n stivÄƒ)\n"
+
+#: vms-alpha.c:6888 vms-alpha.c:7316 vms-alpha.c:7477
+#, c-format
+msgid "*unhandled*\n"
+msgstr "*negestionat*\n"
+
+#: vms-alpha.c:6913
+#, c-format
+msgid "cannot read GST record header\n"
+msgstr "nu se poate citi antetul Ã®nregistrÄƒrii GST\n"
+
+#. Ill-formed.
+#: vms-alpha.c:6936
+#, c-format
+msgid "cannot find EMH in first GST record\n"
+msgstr "nu se poate gÄƒsi EMH Ã®n prima Ã®nregistrare GST\n"
+
+#: vms-alpha.c:6960
+#, c-format
+msgid "corrupted GST\n"
+msgstr "GST corupt\n"
+
+#: vms-alpha.c:6973
+#, c-format
+msgid "cannot read GST record\n"
+msgstr "nu se poate citi Ã®nregistrarea GST\n"
+
+#: vms-alpha.c:7000
+#, c-format
+msgid " unhandled EOBJ record type %u\n"
+msgstr " tip de Ã®nregistrare EOBJ negestionat %u\n"
+
+#: vms-alpha.c:7025
+#, c-format
+msgid "  bitcount: %u, base addr: 0x%08x\n"
+msgstr "  numÄƒr de biÈ›i: %u, adresa de bazÄƒ: 0x%08x\n"
+
+#: vms-alpha.c:7039
+#, c-format
+msgid "   bitmap: 0x%08x (count: %u):\n"
+msgstr "   hartÄƒ de biÈ›i: 0x%08x (contor: %u):\n"
+
+#: vms-alpha.c:7046
+#, c-format
+msgid " %08x"
+msgstr " %08x"
+
+#: vms-alpha.c:7073
+#, c-format
+msgid "  image %u (%u entries)\n"
+msgstr "  imagine %u (%u intrÄƒri)\n"
+
+#: vms-alpha.c:7079
+#, c-format
+msgid "   offset: 0x%08x, val: 0x%08x\n"
+msgstr "   decalaj: 0x%08x, val: 0x%08x\\\n"
+
+#: vms-alpha.c:7102
+#, c-format
+msgid "  image %u (%u entries), offsets:\n"
+msgstr "  imagine %u (%u intrÄƒri), decalaje:\n"
+
+#: vms-alpha.c:7109
+#, c-format
+msgid " 0x%08x"
+msgstr " 0x%08x"
+
+#. 64 bits.
+#: vms-alpha.c:7235
+#, c-format
+msgid "64 bits *unhandled*\n"
+msgstr "64 de biÈ›i *nu este gestionat*\n"
+
+#: vms-alpha.c:7240
+#, c-format
+msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n"
+msgstr "clasa: %u, dtype: %u, lungime: %u, indicator: 0x%08x\n"
+
+#: vms-alpha.c:7251
+#, c-format
+msgid "non-contiguous array of %s\n"
+msgstr "matrice non-contiguÄƒ de %s\n"
+
+#: vms-alpha.c:7258
+#, c-format
+msgid "dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"
+msgstr "dimct: %u, aflags: 0x%02x, digiÈ›i: %u, scarÄƒ: %u\n"
+
+#: vms-alpha.c:7263
+#, c-format
+msgid "arsize: %u, a0: 0x%08x\n"
+msgstr "arsize: %u, a0: 0x%08x\n"
+
+#: vms-alpha.c:7267
+#, c-format
+msgid "Strides:\n"
+msgstr "PaÈ™i largi:\n"
+
+#: vms-alpha.c:7281
+#, c-format
+msgid "Bounds:\n"
+msgstr "Limite:\n"
+
+#: vms-alpha.c:7288
+#, c-format
+msgid "[%u]: Lower: %u, upper: %u\n"
+msgstr "[%u]: InferioarÄƒ: %u, superioarÄƒ: %u\n"
+
+#: vms-alpha.c:7302
+#, c-format
+msgid "unaligned bit-string of %s\n"
+msgstr "È™ir de biÈ›i nealiniaÈ›i de %s\n"
+
+#: vms-alpha.c:7309
+#, c-format
+msgid "base: %u, pos: %u\n"
+msgstr "bazÄƒ: %u, poziÈ›ie: %u\n"
+
+#: vms-alpha.c:7335
+#, c-format
+msgid "vflags: 0x%02x, value: 0x%08x "
+msgstr "vflags: 0x%02x, valoare: 0x%08x "
+
+#: vms-alpha.c:7342
+#, c-format
+msgid "(no value)\n"
+msgstr "(nicio valoare)\n"
+
+#: vms-alpha.c:7345
+#, c-format
+msgid "(not active)\n"
+msgstr "(nu este activ)\n"
+
+#: vms-alpha.c:7348
+#, c-format
+msgid "(not allocated)\n"
+msgstr "(nu este alocat)\n"
+
+#: vms-alpha.c:7351
+#, c-format
+msgid "(descriptor)\n"
+msgstr "(descriptor)\n"
+
+#: vms-alpha.c:7356
+#, c-format
+msgid "(trailing value)\n"
+msgstr "(valoare finalÄƒ)\n"
+
+#: vms-alpha.c:7359
+#, c-format
+msgid "(value spec follows)\n"
+msgstr "(urmeazÄƒ specificaÈ›iile valorii)\n"
+
+#: vms-alpha.c:7362
+#, c-format
+msgid "(at bit offset %u)\n"
+msgstr "(la decalajul de biÈ›i %u)\n"
+
+#: vms-alpha.c:7366
+#, c-format
+msgid "(reg: %u, disp: %u, indir: %u, kind: "
+msgstr "(reg: %u, disp: %u, indir: %u, gen: "
+
+#: vms-alpha.c:7373
+msgid "literal"
+msgstr "literal"
+
+#: vms-alpha.c:7376
+msgid "address"
+msgstr "adresa"
+
+#: vms-alpha.c:7379
+msgid "desc"
+msgstr "desc"
+
+#: vms-alpha.c:7382
+msgid "reg"
+msgstr "reg"
+
+#: vms-alpha.c:7403
+#, c-format
+msgid "len: %2u, kind: %2u "
+msgstr "lung: %2u, gen: %2u "
+
+#: vms-alpha.c:7411
+#, c-format
+msgid "atomic, type=0x%02x %s\n"
+msgstr "atomic, tip=0x%02x %s\n"
+
+#: vms-alpha.c:7416
+#, c-format
+msgid "indirect, defined at 0x%08x\n"
+msgstr "indirect, definit la 0x%08x\n"
+
+#: vms-alpha.c:7420
+#, c-format
+msgid "typed pointer\n"
+msgstr "indicator tastat\n"
+
+#: vms-alpha.c:7424
+#, c-format
+msgid "pointer\n"
+msgstr "indicator\n"
+
+#: vms-alpha.c:7435
+#, c-format
+msgid "array, dim: %u, bitmap: "
+msgstr "matrice, dim: %u, bitmap: "
+
+#: vms-alpha.c:7450
+#, c-format
+msgid "array descriptor:\n"
+msgstr "descriptor matrice:\n"
+
+#: vms-alpha.c:7461
+#, c-format
+msgid "type spec for element:\n"
+msgstr "spec de tip pentru element:\n"
+
+#: vms-alpha.c:7463
+#, c-format
+msgid "type spec for subscript %u:\n"
+msgstr "spec de tip pentru indice %u:\n"
+
+#: vms-alpha.c:7488
+#, c-format
+msgid "Debug symbol table:\n"
+msgstr "Tabel cu simboluri de depanare:\n"
+
+#: vms-alpha.c:7499
+#, c-format
+msgid "cannot read DST header\n"
+msgstr "nu se poate citi antetul DST\n"
+
+#: vms-alpha.c:7505
+#, c-format
+msgid " type: %3u, len: %3u (at 0x%08x): "
+msgstr " tip: %3u, lung: %3u (la 0x%08x): "
+
+#: vms-alpha.c:7524
+#, c-format
+msgid "cannot read DST symbol\n"
+msgstr "nu se poate citi simbolul DST\n"
+
+#: vms-alpha.c:7568
+#, c-format
+msgid "standard data: %s\n"
+msgstr "date standard: %s\n"
+
+#: vms-alpha.c:7572 vms-alpha.c:7696
+#, c-format
+msgid "    name: %.*s\n"
+msgstr "    nume: %.*s\n"
+
+#: vms-alpha.c:7580
+#, c-format
+msgid "modbeg\n"
+msgstr "Ã®nceput_modul\n"
+
+#: vms-alpha.c:7584
+#, c-format
+msgid "   flags: %d, language: %u, major: %u, minor: %u\n"
+msgstr "   fanioane: %d, limbaj: %u, major: %u, minor: %u\n"
+
+#: vms-alpha.c:7594 vms-alpha.c:7963
+#, c-format
+msgid "   module name: %.*s\n"
+msgstr "   nume modul: %.*s\n"
+
+#: vms-alpha.c:7601
+#, c-format
+msgid "   compiler   : %.*s\n"
+msgstr "   compilator   : %.*s\n"
+
+#: vms-alpha.c:7608
+#, c-format
+msgid "modend\n"
+msgstr "sfÃ¢rÈ™it_modul\n"
+
+#: vms-alpha.c:7615
+msgid "rtnbeg\n"
+msgstr "Ã®nceputul rutinei\n"
+
+#: vms-alpha.c:7619
+#, c-format
+msgid "    flags: %u, address: 0x%08x, pd-address: 0x%08x\n"
+msgstr "    fanioane: %u, adresa: 0x%08x, adresa-pd: 0x%08x\n"
+
+#: vms-alpha.c:7628
+#, c-format
+msgid "    routine name: %.*s\n"
+msgstr "    nume rutinÄƒ: %.*s\n"
+
+#: vms-alpha.c:7639
+#, c-format
+msgid "rtnend: size 0x%08x\n"
+msgstr "sfÃ¢rÈ™it rutinÄƒ: dimens. 0x%08x\n"
+
+#: vms-alpha.c:7649
+#, c-format
+msgid "prolog: bkpt address 0x%08x\n"
+msgstr "prolog: adresa bkpt 0x%08x\n"
+
+#: vms-alpha.c:7659
+#, c-format
+msgid "epilog: flags: %u, count: %u\n"
+msgstr "epilog: fanioane: %u, numÄƒr: %u\n"
+
+#: vms-alpha.c:7674
+#, c-format
+msgid "blkbeg: address: 0x%08x, name: %.*s\n"
+msgstr "Ã®nceputul blk: adresa: 0x%08x, nume: %.*s\n"
+
+#: vms-alpha.c:7686
+#, c-format
+msgid "blkend: size: 0x%08x\n"
+msgstr "sfÃ¢rÈ™it blk: dimens.: 0x%08x\n"
+
+#: vms-alpha.c:7692
+#, c-format
+msgid "typspec (len: %u)\n"
+msgstr "specificaÈ›ie tip (lungime: %u)\n"
+
+#: vms-alpha.c:7708
+#, c-format
+msgid "septyp, name: %.*s\n"
+msgstr "tip sep, nume: %.*s\n"
+
+#: vms-alpha.c:7725
+#, c-format
+msgid "recbeg: name: %.*s\n"
+msgstr "Ã®nceput Ã®nreg.: nume: %.*s\n"
+
+#: vms-alpha.c:7731
+#, c-format
+msgid "    len: %u bits\n"
+msgstr "    lungime: %u biÈ›i\n"
+
+#: vms-alpha.c:7737
+#, c-format
+msgid "recend\n"
+msgstr "sfÃ¢rÈ™it Ã®nreg.\n"
+
+#: vms-alpha.c:7742
+#, c-format
+msgid "enumbeg, len: %u, name: %.*s\n"
+msgstr "Ã®nceput enumerare, lungime: %u, nume: %.*s\n"
+
+#: vms-alpha.c:7748
+#, c-format
+msgid "enumelt, name: %.*s\n"
+msgstr "enumerare lelemente, nume: %.*s\n"
+
+#: vms-alpha.c:7754
+#, c-format
+msgid "enumend\n"
+msgstr "sfÃ¢rÈ™it enumerare\n"
+
+#: vms-alpha.c:7761
+#, c-format
+msgid "label, name: %.*s\n"
+msgstr "etichetÄƒ, nume: %.*s\n"
+
+#: vms-alpha.c:7764
+#, c-format
+msgid "    address: 0x%08x\n"
+msgstr "    adresa: 0x%08x\n"
+
+#: vms-alpha.c:7776
+#, c-format
+msgid "discontiguous range (nbr: %u)\n"
+msgstr "interval de Ã®ntrerupere (nbr: %u)\n"
+
+#: vms-alpha.c:7783
+#, c-format
+msgid "    address: 0x%08x, size: %u\n"
+msgstr "    adresa: 0x%08x, dimens.: %u\n"
+
+#: vms-alpha.c:7794
+#, c-format
+msgid "line num  (len: %u)\n"
+msgstr "numÄƒr linie  (lungime: %u)\n"
+
+#: vms-alpha.c:7813
+#, c-format
+msgid "delta_pc_w %u\n"
+msgstr "delta_pc_w %u\n"
+
+#: vms-alpha.c:7822
+#, c-format
+msgid "incr_linum(b): +%u\n"
+msgstr "incr_linum(b): +%u\n"
+
+#: vms-alpha.c:7830
+#, c-format
+msgid "incr_linum_w: +%u\n"
+msgstr "incr_linum_w: +%u\n"
+
+#: vms-alpha.c:7838
+#, c-format
+msgid "incr_linum_l: +%u\n"
+msgstr "incr_linum_l: +%u\n"
+
+#: vms-alpha.c:7846
+#, c-format
+msgid "set_line_num(w) %u\n"
+msgstr "set_line_num(w) %u\n"
+
+#: vms-alpha.c:7853
+#, c-format
+msgid "set_line_num_b %u\n"
+msgstr "set_line_num_b %u\n"
+
+#: vms-alpha.c:7860
+#, c-format
+msgid "set_line_num_l %u\n"
+msgstr "set_line_num_l %u\n"
+
+#: vms-alpha.c:7867
+#, c-format
+msgid "set_abs_pc: 0x%08x\n"
+msgstr "set_abs_pc: 0x%08x\n"
+
+#: vms-alpha.c:7873
+#, c-format
+msgid "delta_pc_l: +0x%08x\n"
+msgstr "delta_pc_l: +0x%08x\n"
+
+#: vms-alpha.c:7880
+#, c-format
+msgid "term(b): 0x%02x"
+msgstr "term(b): 0x%02x"
+
+#: vms-alpha.c:7882
+#, c-format
+msgid "        pc: 0x%08x\n"
+msgstr "        pc: 0x%08x\n"
+
+#: vms-alpha.c:7889
+#, c-format
+msgid "term_w: 0x%04x"
+msgstr "term_w: 0x%04x"
+
+#: vms-alpha.c:7891
+#, c-format
+msgid "    pc: 0x%08x\n"
+msgstr "    pc: 0x%08x\n"
+
+#: vms-alpha.c:7897
+#, c-format
+msgid "delta pc +%-4d"
+msgstr "delta pc +%-4d"
+
+#: vms-alpha.c:7901
+#, c-format
+msgid "    pc: 0x%08x line: %5u\n"
+msgstr "    pc: 0x%08x line: %5u\n"
+
+#: vms-alpha.c:7906
+#, c-format
+msgid "    *unhandled* cmd %u\n"
+msgstr "    cmd *negestionatÄƒ* %u\n"
+
+#: vms-alpha.c:7921
+#, c-format
+msgid "source (len: %u)\n"
+msgstr "sursÄƒ (lungime: %u)\n"
+
+#: vms-alpha.c:7940
+#, c-format
+msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
+msgstr "   declfile: lungime: %u, fanioane: %u, id fiÈ™ier: %u\n"
+
+#: vms-alpha.c:7945
+#, 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:7957
+#, c-format
+msgid "   filename   : %.*s\n"
+msgstr "   nume fiÈ™ier   : %.*s\n"
+
+#: vms-alpha.c:7973
+#, c-format
+msgid "   setfile %u\n"
+msgstr "   setfile %u\n"
+
+#: vms-alpha.c:7980 vms-alpha.c:7987
+#, c-format
+msgid "   setrec %u\n"
+msgstr "   setrec %u\n"
+
+#: vms-alpha.c:7994 vms-alpha.c:8001
+#, c-format
+msgid "   setlnum %u\n"
+msgstr "   setlnum %u\n"
+
+#: vms-alpha.c:8008 vms-alpha.c:8015
+#, c-format
+msgid "   deflines %u\n"
+msgstr "   deflines %u\n"
+
+#: vms-alpha.c:8019
+#, c-format
+msgid "   formfeed\n"
+msgstr "   formfeed\n"
+
+#: vms-alpha.c:8023
+#, c-format
+msgid "   *unhandled* cmd %u\n"
+msgstr "   cmd *negestionatÄƒ* %u\n"
+
+#: vms-alpha.c:8035
+#, c-format
+msgid "*unhandled* dst type %u\n"
+msgstr "tip dst *negestionat* %u\n"
+
+#: vms-alpha.c:8067
+#, c-format
+msgid "cannot read EIHD\n"
+msgstr "nu se poate citi EIHD\n"
+
+#: vms-alpha.c:8071
+#, c-format
+msgid "EIHD: (size: %u, nbr blocks: %u)\n"
+msgstr "EIHD: (dim.: %u, nr. blocuri: %u)\n"
+
+#: vms-alpha.c:8075
+#, c-format
+msgid " majorid: %u, minorid: %u\n"
+msgstr " id-major: %u, id-minor: %u\n"
+
+#: vms-alpha.c:8083
+msgid "executable"
+msgstr "executabil"
+
+#: vms-alpha.c:8086
+msgid "linkable image"
+msgstr "imagine vinculabilÄƒ"
+
+#: vms-alpha.c:8093
+#, c-format
+msgid " image type: %u (%s)"
+msgstr " tip imagine: %u (%s)"
+
+#: vms-alpha.c:8099
+msgid "native"
+msgstr "nativ"
+
+#: vms-alpha.c:8102
+msgid "CLI"
+msgstr "CLI"
+
+#: vms-alpha.c:8109
+#, c-format
+msgid ", subtype: %u (%s)\n"
+msgstr ", subtype: %u (%s)\n"
+
+#: vms-alpha.c:8116
+#, c-format
+msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n"
+msgstr " decalaje: isd: %u, activ: %u, simboluri depanare: %u, id imagine: %u, plasture: %u\n"
+
+#: vms-alpha.c:8120
+#, c-format
+msgid " fixup info rva: "
+msgstr " reparare informaÈ›ii rva: "
+
+#: vms-alpha.c:8122
+#, c-format
+msgid ", symbol vector rva: "
+msgstr ", vector de simboluri rva: "
+
+#: vms-alpha.c:8125
+#, c-format
+msgid ""
+"\n"
+" version array off: %u\n"
+msgstr ""
+"\n"
+" decalajul matricei de versiuni: %u\n"
+
+#: vms-alpha.c:8130
+#, c-format
+msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n"
+msgstr " contor de In/IeÈ™ a imaginii: %u, numÄƒrul de canale: %u, prioritate: %08x%08x\n"
+
+#: vms-alpha.c:8136
+#, c-format
+msgid " linker flags: %08x:"
+msgstr " fanioane vinculator: %08x:"
+
+#: vms-alpha.c:8167
+#, c-format
+msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n"
+msgstr " ident: 0x%08x, versiune sistem: 0x%08x, ctrl potriviri: %u, dimens-vect-simbol: %u\n"
+
+#: vms-alpha.c:8173
+#, c-format
+msgid " BPAGE: %u"
+msgstr " BPAGE: %u"
+
+#: vms-alpha.c:8180
+#, c-format
+msgid ", ext fixup offset: %u, no_opt psect off: %u"
+msgstr ", decalaj remediere extensie: %u, decalaj psect no_opt: %u"
+
+#: vms-alpha.c:8183
+#, c-format
+msgid ", alias: %u\n"
+msgstr ", alias: %u\n"
+
+#: vms-alpha.c:8191
+#, c-format
+msgid "system version array information:\n"
+msgstr "informaÈ›ii despre matricea versiunii sistemului:\n"
+
+#: vms-alpha.c:8195
+#, c-format
+msgid "cannot read EIHVN header\n"
+msgstr "nu se poate citi antetul EIHVN\n"
+
+#: vms-alpha.c:8205
+#, c-format
+msgid "cannot read EIHVN version\n"
+msgstr "nu se poate citi versiunea EIHVN\n"
+
+#: vms-alpha.c:8208
+#, c-format
+msgid "   %02u "
+msgstr "   %02u "
+
+#: vms-alpha.c:8212
+msgid "BASE_IMAGE       "
+msgstr "BASE_IMAGE       "
+
+#: vms-alpha.c:8215
+msgid "MEMORY_MANAGEMENT"
+msgstr "MEMORY_MANAGEMENT"
+
+#: vms-alpha.c:8218
+msgid "IO               "
+msgstr "In/IeÈ™           "
+
+#: vms-alpha.c:8221
+msgid "FILES_VOLUMES    "
+msgstr "FILES_VOLUMES    "
+
+#: vms-alpha.c:8224
+msgid "PROCESS_SCHED    "
+msgstr "PROCESS_SCHED    "
+
+#: vms-alpha.c:8227
+msgid "SYSGEN           "
+msgstr "SYSGEN           "
+
+#: vms-alpha.c:8230
+msgid "CLUSTERS_LOCKMGR "
+msgstr "CLUSTERS_LOCKMGR "
+
+#: vms-alpha.c:8233
+msgid "LOGICAL_NAMES    "
+msgstr "LOGICAL_NAMES    "
+
+#: vms-alpha.c:8236
+msgid "SECURITY         "
+msgstr "SECURITY         "
+
+#: vms-alpha.c:8239
+msgid "IMAGE_ACTIVATOR  "
+msgstr "IMAGE_ACTIVATOR  "
+
+#: vms-alpha.c:8242
+msgid "NETWORKS         "
+msgstr "NETWORKS         "
+
+#: vms-alpha.c:8245
+msgid "COUNTERS         "
+msgstr "COUNTERS         "
+
+#: vms-alpha.c:8248
+msgid "STABLE           "
+msgstr "STABLE           "
+
+#: vms-alpha.c:8251
+msgid "MISC             "
+msgstr "MISC             "
+
+#: vms-alpha.c:8254
+msgid "CPU              "
+msgstr "CPU              "
+
+#: vms-alpha.c:8257
+msgid "VOLATILE         "
+msgstr "VOLATILE         "
+
+#: vms-alpha.c:8260
+msgid "SHELL            "
+msgstr "SHELL            "
+
+#: vms-alpha.c:8263
+msgid "POSIX            "
+msgstr "POSIX            "
+
+#: vms-alpha.c:8266
+msgid "MULTI_PROCESSING "
+msgstr "MULTI_PROCESSING "
+
+#: vms-alpha.c:8269
+msgid "GALAXY           "
+msgstr "GALAXY           "
+
+#: vms-alpha.c:8272
+msgid "*unknown*        "
+msgstr "*necunoscut*        "
+
+#: vms-alpha.c:8288 vms-alpha.c:8575
+#, c-format
+msgid "cannot read EIHA\n"
+msgstr "nu se poate citi EIHA\n"
+
+#: vms-alpha.c:8291
+#, c-format
+msgid "Image activation:  (size=%u)\n"
+msgstr "Activare imagine:  (dim.=%u)\n"
+
+#: vms-alpha.c:8294
+#, c-format
+msgid " First address : 0x%08x 0x%08x\n"
+msgstr " Prima adresÄƒ     : 0x%08x 0x%08x\n"
+
+#: vms-alpha.c:8298
+#, c-format
+msgid " Second address: 0x%08x 0x%08x\n"
+msgstr " A doua adresÄƒ    : 0x%08x 0x%08x\n"
+
+#: vms-alpha.c:8302
+#, c-format
+msgid " Third address : 0x%08x 0x%08x\n"
+msgstr " A treia adresÄƒ   : 0x%08x 0x%08x\n"
+
+#: vms-alpha.c:8306
+#, c-format
+msgid " Fourth address: 0x%08x 0x%08x\n"
+msgstr " A patra adresÄƒ    : 0x%08x 0x%08x\n"
+
+#: vms-alpha.c:8310
+#, c-format
+msgid " Shared image  : 0x%08x 0x%08x\n"
+msgstr " Imagine partajatÄƒ: 0x%08x 0x%08x\n"
+
+#: vms-alpha.c:8321
+#, c-format
+msgid "cannot read EIHI\n"
+msgstr "nu se poate citi EIHI\n"
+
+#: vms-alpha.c:8325
+#, c-format
+msgid "Image identification: (major: %u, minor: %u)\n"
+msgstr "Identificare imagine: (major: %u, minor: %u)\n"
+
+#: vms-alpha.c:8331
+#, c-format
+msgid " image name       : %.*s\n"
+msgstr " nume imagine            : %.*s\n"
+
+#: vms-alpha.c:8332
+#, c-format
+msgid " link time        : %s\n"
+msgstr " ora vinculÄƒrii          : %s\n"
+
+#: vms-alpha.c:8337
+#, c-format
+msgid " image ident      : %.*s\n"
+msgstr " ora vinculÄƒrii          : %.*s\n"
+
+#: vms-alpha.c:8341
+#, c-format
+msgid " linker ident     : %.*s\n"
+msgstr " identificator vinculator: %.*s\n"
+
+#: vms-alpha.c:8345
+#, c-format
+msgid " image build ident: %.*s\n"
+msgstr " ident. constr. imagine  : %.*s\n"
+
+#: vms-alpha.c:8354
+#, c-format
+msgid "cannot read EIHS\n"
+msgstr "nu se poate citi EIHS\n"
+
+#: vms-alpha.c:8358
+#, c-format
+msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
+msgstr "Simbol de imagine È™i tabel de depanare: (major: %u, minor: %u)\n"
+
+#: vms-alpha.c:8364
+#, c-format
+msgid " debug symbol table : vbn: %u, size: %u (0x%x)\n"
+msgstr " tabelul de simboluri de depanare : vbn: %u, dimensiune: %u (0x%x)\n"
+
+#: vms-alpha.c:8369
+#, c-format
+msgid " global symbol table: vbn: %u, records: %u\n"
+msgstr " tabelul global de simboluri: vbn: %u, Ã®nregistrÄƒri: %u\n"
+
+#: vms-alpha.c:8374
+#, c-format
+msgid " debug module table : vbn: %u, size: %u\n"
+msgstr " tabelul de module de depanare : vbn: %u, dimensiune: %u\n"
+
+#: vms-alpha.c:8387
+#, c-format
+msgid "cannot read EISD\n"
+msgstr "nu se poate citi EISD\n"
+
+#: vms-alpha.c:8398
+#, c-format
+msgid "Image section descriptor: (major: %u, minor: %u, size: %u, offset: %u)\n"
+msgstr "Descriptorul secÈ›iunii de imagine: (major: %u, minor: %u, size: %u, decalaj: %u)\n"
+
+#: vms-alpha.c:8406
+#, c-format
+msgid " section: base: 0x%08x%08x size: 0x%08x\n"
+msgstr "  secÈ›iune: bazÄƒ: 0x%08x%08x dimensiune: 0x%08x\n"
+
+#: vms-alpha.c:8411
+#, c-format
+msgid " flags: 0x%04x"
+msgstr " fanioane: 0x%04x"
+
+#: vms-alpha.c:8449
+#, c-format
+msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
+msgstr " vbn: %u, pfc: %u, potrivire ctl: %u tip: %u ("
+
+#: vms-alpha.c:8455
+msgid "NORMAL"
+msgstr "NORMAL"
+
+#: vms-alpha.c:8458
+msgid "SHRFXD"
+msgstr "SHRFXD"
+
+#: vms-alpha.c:8461
+msgid "PRVFXD"
+msgstr "PRVFXD"
+
+#: vms-alpha.c:8464
+msgid "SHRPIC"
+msgstr "SHRPIC"
+
+#: vms-alpha.c:8467
+msgid "PRVPIC"
+msgstr "PRVPIC"
+
+#: vms-alpha.c:8470
+msgid "USRSTACK"
+msgstr "USRSTACK"
+
+#: vms-alpha.c:8476
+msgid ")\n"
+msgstr ")\n"
+
+#: vms-alpha.c:8483
+#, c-format
+msgid " ident: 0x%08x, name: %.*s\n"
+msgstr " ident: 0x%08x, nume: %.*s\n"
+
+#: vms-alpha.c:8494
+#, c-format
+msgid "cannot read DMT\n"
+msgstr "nu se poate citi DMT\n"
+
+#: vms-alpha.c:8498
+#, c-format
+msgid "Debug module table:\n"
+msgstr "Tabel cu module de depanare:\n"
+
+#: vms-alpha.c:8507
+#, c-format
+msgid "cannot read DMT header\n"
+msgstr "nu se poate citi antetul DMT\n"
+
+#: vms-alpha.c:8513
+#, c-format
+msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n"
+msgstr " decalaj modul: 0x%08x, dimensiune: 0x%08x, (%u psects)\n"
+
+#: vms-alpha.c:8523
+#, c-format
+msgid "cannot read DMT psect\n"
+msgstr "nu se poate citi psect DMT\n"
+
+#: vms-alpha.c:8527
+#, c-format
+msgid "  psect start: 0x%08x, length: %u\n"
+msgstr "  Ã®ncepe psect: 0x%08x, lungime: %u\n"
+
+#: vms-alpha.c:8540
+#, c-format
+msgid "cannot read DST\n"
+msgstr "nu se poate citi DST\n"
+
+#: vms-alpha.c:8550
+#, c-format
+msgid "cannot read GST\n"
+msgstr "nu se poate citi GST\n"
+
+#: vms-alpha.c:8554
+#, c-format
+msgid "Global symbol table:\n"
+msgstr "Tabel cu simboluri globale:\n"
+
+#: vms-alpha.c:8581
+#, c-format
+msgid "Image activator fixup: (major: %u, minor: %u)\n"
+msgstr "Fixarea activatorului de imagine: (major: %u, minor: %u)\n"
+
+#: vms-alpha.c:8585
+#, c-format
+msgid "  iaflink : 0x%08x %08x\n"
+msgstr "  iaflink : 0x%08x %08x\n"
+
+#: vms-alpha.c:8589
+#, c-format
+msgid "  fixuplnk: 0x%08x %08x\n"
+msgstr "  fixuplnk: 0x%08x %08x\n"
+
+#: vms-alpha.c:8592
+#, c-format
+msgid "  size : %u\n"
+msgstr "  dimens.: %u\n"
+
+#: vms-alpha.c:8594
+#, c-format
+msgid "  flags: 0x%08x\n"
+msgstr "  fanioane: 0x%08x\n"
+
+#: vms-alpha.c:8599
+#, c-format
+msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
+msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
+
+#: vms-alpha.c:8604
+#, c-format
+msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
+msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
+
+#: vms-alpha.c:8609
+#, c-format
+msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
+msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
+
+#: vms-alpha.c:8612
+#, c-format
+msgid "  chgprtoff : %5u\n"
+msgstr "  chgprtoff : %5u\n"
+
+#: vms-alpha.c:8616
+#, c-format
+msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
+msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
+
+#: vms-alpha.c:8619
+#, c-format
+msgid "  shlextra  : %5u, permctx   : %5u\n"
+msgstr "  shlextra  : %5u, permctx   : %5u\n"
+
+#: vms-alpha.c:8622
+#, c-format
+msgid "  base_va : 0x%08x\n"
+msgstr "  base_va : 0x%08x\n"
+
+#: vms-alpha.c:8624
+#, c-format
+msgid "  lppsbfixoff: %5u\n"
+msgstr "  lppsbfixoff: %5u\n"
+
+#: vms-alpha.c:8631
+#, c-format
+msgid " Shareable images:\n"
+msgstr " Imagini partajabile:\n"
+
+#: vms-alpha.c:8642
+#, c-format
+msgid "  %u: size: %u, flags: 0x%02x, name: %.*s\n"
+msgstr "  %u: dimensiune: %u, fanioane: 0x%02x, nume: %.*s\n"
+
+#: vms-alpha.c:8649
+#, c-format
+msgid " quad-word relocation fixups:\n"
+msgstr " remedieri de realocare de patru cuvinte:\n"
+
+#: vms-alpha.c:8655
+#, c-format
+msgid " long-word relocation fixups:\n"
+msgstr " remedieri de realocare de cuvinte lungi:\n"
+
+#: vms-alpha.c:8661
+#, c-format
+msgid " quad-word .address reference fixups:\n"
+msgstr " remedieri ale referinÈ›elor .address de patru cuvinte:\n"
+
+#: vms-alpha.c:8666
+#, c-format
+msgid " long-word .address reference fixups:\n"
+msgstr " remedieri ale referinÈ›elor .address de cuvinte lungi:\n"
+
+#: vms-alpha.c:8671
+#, c-format
+msgid " Code Address Reference Fixups:\n"
+msgstr " Remedieri de referinÈ›e pentru adresa codului:\n"
+
+#: vms-alpha.c:8676
+#, c-format
+msgid " Linkage Pairs Reference Fixups:\n"
+msgstr " CorecÈ›ii de referinÈ›Äƒ pentru perechi de legÄƒturi:\n"
 
-#: vms-tir.c:1220
-msgid "stack-local-symbol not fully implemented"
-msgstr "stack-local-symbol neimplementatã complet"
+#: vms-alpha.c:8684
+#, c-format
+msgid " Change Protection (%u entries):\n"
+msgstr " Modificarea protecÈ›iei (%u intrÄƒri):\n"
 
-#: vms-tir.c:1233
-msgid "stack-literal not fully implemented"
-msgstr "stack-literal neimplementatã complet"
+#: vms-alpha.c:8693
+#, c-format
+msgid "  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "
+msgstr "  baza: 0x%08x %08x, dimens.: 0x%08x, protecÈ›ia: 0x%08x "
 
-#: vms-tir.c:1254
-msgid "stack-local-symbol-entry-point-mask not fully implemented"
-msgstr "stack-local-symbol-entry-point-mask neimplementatã complet"
+#. FIXME: we do not yet support relocatable link.  It is not obvious
+#. how to do it for debug infos.
+#: vms-alpha.c:9571
+msgid "%P: relocatable link is not supported\n"
+msgstr "%P: legÄƒtura realocabilÄƒ nu este acceptatÄƒ\n"
 
-#: vms-tir.c:1531 vms-tir.c:1543 vms-tir.c:1555 vms-tir.c:1567 vms-tir.c:1632
-#: vms-tir.c:1640 vms-tir.c:1648
+#: vms-alpha.c:9642
 #, c-format
-msgid "%s: not fully implemented"
-msgstr "%s: neimplementatã complet"
+msgid "%P: multiple entry points: in modules %pB and %pB\n"
+msgstr "%P: puncte de acces multiple: Ã®n modulele %pB È™i %pB\n"
 
-#: vms-tir.c:1705
+#: vms-lib.c:1530
 #, c-format
-msgid "obj code %d not found"
-msgstr "codul abj %d nu a fost gãsit"
+msgid "could not open shared image '%s' from '%s'"
+msgstr "nu s-a putut deschide imaginea partajatÄƒ â€ž%sâ€� din â€ž%sâ€�"
 
-#: vms-tir.c:2043
+#: vms-misc.c:374
+msgid "_bfd_vms_output_counted called with zero bytes"
+msgstr "_bfd_vms_output_counted apelat cu zero octeÈ›i"
+
+#: vms-misc.c:379
+msgid "_bfd_vms_output_counted called with too many bytes"
+msgstr "_bfd_vms_output_counted apelat cu prea mulÈ›i octeÈ›i"
+
+#: xcofflink.c:505
+#, c-format
+msgid "%pB: warning: illegal symbol index %lu in relocs"
+msgstr "%pB: avertisment: index de simbol ilegal %lu Ã®n realocÄƒri"
+
+#: xcofflink.c:924
 #, c-format
-msgid "SEC_RELOC with no relocs in section %s"
-msgstr "SEC_RELOC fãrã relocãri în secþiunea %s"
+msgid "%pB: XCOFF shared object when not producing XCOFF output"
+msgstr "%pB: obiect partajat XCOFF cÃ¢nd nu se produce ieÈ™ire XCOFF"
 
-#: vms-tir.c:2331
+#: xcofflink.c:945
 #, c-format
-msgid "Unhandled relocation %s"
-msgstr "Relocare nemanipulabilã %s"
+msgid "%pB: dynamic object with no .loader section"
+msgstr "%pB: obiect dinamic fÄƒrÄƒ secÈ›iune .loader"
 
-#: xcofflink.c:1244
+#: xcofflink.c:1527
 #, c-format
-msgid "%s: `%s' has line numbers but no enclosing section"
-msgstr "%s: `%s' are numere de linii dar nici o secþiune de închidere"
+msgid "%pB: `%s' has line numbers but no enclosing section"
+msgstr "%pB: â€ž%sâ€� are numere de linie, dar nu o secÈ›iune de Ã®nchidere"
 
-#: xcofflink.c:1297
+#: xcofflink.c:1583
 #, c-format
-msgid "%s: class %d symbol `%s' has no aux entries"
-msgstr "%s: clasa %d simbolul `%s' nu are intrãri aux"
+msgid "%pB: class %d symbol `%s' has no aux entries"
+msgstr "%pB: clasa %d simbolul â€ž%s'â€� nu are intrÄƒri auxiliare"
 
-#: xcofflink.c:1320
+#: xcofflink.c:1606
 #, c-format
-msgid "%s: symbol `%s' has unrecognized csect type %d"
-msgstr "%s: simbolul `%s' are tip necunoscut csect %d"
+msgid "%pB: symbol `%s' has unrecognized csect type %d"
+msgstr "%pB: simbolul â€ž%sâ€� are tipul de csect nerecunoscut %d"
 
-#: xcofflink.c:1332
+#: xcofflink.c:1619
 #, c-format
-msgid "%s: bad XTY_ER symbol `%s': class %d scnum %d scnlen %d"
-msgstr "%s: simbol XTY_ER invalid `%s': clasa %d scnum %d scnlen %d"
+msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>"
+msgstr "%pB: simbol XTY_ER defectuos â€ž%sâ€�: clasa %d scnum %d scnlen %<PRId64>"
 
-#: xcofflink.c:1368
+#: xcofflink.c:1650
 #, c-format
-msgid "%s: XMC_TC0 symbol `%s' is class %d scnlen %d"
-msgstr "%s: simblul XMC_TC0 `%s' este clasa %d scnlen %d"
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
+msgstr "%pB: simbolul XMC_TC0 â€ž%sâ€� este clasa %d scnlen %<PRIu64>"
 
-#: xcofflink.c:1520
+#: xcofflink.c:1785
 #, c-format
-msgid "%s: csect `%s' not in enclosing section"
-msgstr "%s: csect `%s' nu este în secþiunea de închidere"
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr "%pB: intrarea TOC â€ž%sâ€� are o realocare R_TLSML care nu È›inteÈ™te spre sine"
 
-#: xcofflink.c:1627
+#: xcofflink.c:1819
 #, c-format
-msgid "%s: misplaced XTY_LD `%s'"
-msgstr "%s:XTY_LD `%s' rãtãcit"
+msgid "%pB: csect `%s' not in enclosing section"
+msgstr "%pB: csect â€ž%sâ€� nu este Ã®n secÈ›iunea de Ã®nchidere"
 
-#: xcofflink.c:1958
+#: xcofflink.c:1928
 #, c-format
-msgid "%s: reloc %s:%d not in csect"
-msgstr "%s: relocarea %s:%d nu este în csect"
+msgid "%pB: misplaced XTY_LD `%s'"
+msgstr "%pB: XTY_LD â€ž%sâ€� plasat greÈ™it"
 
-#: xcofflink.c:2095
+#: xcofflink.c:2271
 #, c-format
-msgid "%s: XCOFF shared object when not producing XCOFF output"
-msgstr "%s: XCOFF shared object neproducând output XCOFF"
+msgid "%pB: reloc %s:%<PRId64> not in csect"
+msgstr "%pB: realocarea %s:%<PRId64> nu Ã®n csect"
 
-#: xcofflink.c:2116
+#: xcofflink.c:3380
 #, c-format
-msgid "%s: dynamic object with no .loader section"
-msgstr "%s: obiect dinamic fãrã secþiune .loader"
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr "%pB: nu se poate exporta simbolul intern â€ž%sâ€�."
 
-#: xcofflink.c:2761
+#: xcofflink.c:3428
 #, c-format
 msgid "%s: no such symbol"
-msgstr "%s: nu existã acest simbol"
+msgstr "%s: nu existÄƒ acest simbol"
+
+#: xcofflink.c:3537
+#, c-format
+msgid "warning: attempt to export undefined symbol `%s'"
+msgstr "avertisment: Ã®ncercare de exportare a simbolului nedefinit `%s'"
 
-#: xcofflink.c:2894
+#: xcofflink.c:3885
 msgid "error: undefined symbol __rtinit"
 msgstr "eroare: simbol __rtinit nedefinit"
 
-#: xcofflink.c:3455
+#: xcofflink.c:4902
 #, c-format
-msgid "warning: attempt to export undefined symbol `%s'"
-msgstr "avertisment: încercare de exportare a simbolului nedefinit `%s'"
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr "%pB: Nu s-a putut gÄƒsi un ciot(stub) csect Ã®n intervalul de realocare de la %#<PRIx64> care È›inteÈ™te â€ž%sâ€�"
 
-#: xcofflink.c:4448
+#: xcofflink.c:4931
 #, c-format
-msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
-msgstr "suprasolicitare(overflow) TOC: 0x%lx > 0x10000; încercaþi -mminimal-toc la compilare"
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr "%pB: Nu se poate crea intrarea ciot(stub) â€ž%sâ€�"
+
+#: xcofflink.c:5051
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr "Debordare a tabelului de intrÄƒri(TOC) Ã®n timpul generÄƒrii ciotului(stub); Ã®ncercaÈ›i â€ž-mminimal-tocâ€� la compilare"
 
-#: xcofflink.c:5288 xcofflink.c:5755 xcofflink.c:5817 xcofflink.c:6119
+#: xcofflink.c:5119
 #, c-format
-msgid "%s: loader reloc in unrecognized section `%s'"
-msgstr "%s: relocare loader în secþiune necunoscutã `%s'"
+msgid "%pB: loader reloc in unrecognized section `%s'"
+msgstr "%pB: realocarea Ã®ncÄƒrcÄƒtorului Ã®n secÈ›iunea nerecunoscutÄƒ â€ž%sâ€�"
 
-#: xcofflink.c:5310 xcofflink.c:6130
+#: xcofflink.c:5131
 #, c-format
-msgid "%s: `%s' in loader reloc but not loader sym"
-msgstr "%s: `%s' în relocare loader dar nu în loader sym"
+msgid "%pB: `%s' in loader reloc but not loader sym"
+msgstr "%pB: â€ž%sâ€� Ã®n realocarea Ã®ncÄƒrcÄƒtorului, dar nu Ã®n simbolul Ã®ncÄƒrcÄƒtorului"
 
-#: xcofflink.c:5325
+#: xcofflink.c:5148
 #, c-format
-msgid "%s: loader reloc in read-only section %s"
-msgstr "%s: relocare loader în secþiunea doar-în-citire %s"
+msgid "%pB: loader reloc in read-only section %pA"
+msgstr "%pB: realocarea Ã®ncÄƒrcÄƒtorului Ã®n secÈ›iunea numai-pentru-citire %pA"
 
-#: elf32-ia64.c:2392 elf64-ia64.c:2392
-msgid "@pltoff reloc against local symbol"
-msgstr "relocare @pltoff pe simbol local"
+#: xcofflink.c:6227
+#, c-format
+msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
+msgstr "Debordare a tabelului de intrÄƒri(TOC): %#<PRIx64> > 0x10000; Ã®ncercaÈ›i â€ž-mminimal-tocâ€� la compilare"
 
-#: elf32-ia64.c:3804 elf64-ia64.c:3804
+#: xcofflink.c:7343
 #, c-format
-msgid "%s: short data segment overflowed (0x%lx >= 0x400000)"
-msgstr "%s: segment de date scurt depãºit(overflowed) (0x%lx >= 0x400000)"
+msgid "Unable to link input file: %s"
+msgstr "Nu se poate vincula fiÈ™ierul de intrare: %s"
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr "Nu se poate Ã®ncÄƒrca DLL."
 
-#: elf32-ia64.c:3815 elf64-ia64.c:3815
+#: xtensa-dynconfig.c:86
 #, c-format
-msgid "%s: __gp does not cover short data segment"
-msgstr "%s: __gp nu acoperã segmentul de date scurte"
+msgid "%s is defined but could not be loaded: %s"
+msgstr "%s este definit, dar nu a putut fi Ã®ncÄƒrcat: %s"
 
-#: elf32-ia64.c:4131 elf64-ia64.c:4131
+#: xtensa-dynconfig.c:102
 #, c-format
-msgid "%s: linking non-pic code in a shared library"
-msgstr "%s: linkuire cod non-pic într-o bibliotecã globalã(shared)"
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr "%s este Ã®ncÄƒrcat, dar simbolul â€ž%sâ€� nu a fost gÄƒsit: %s"
 
-#: elf32-ia64.c:4164 elf64-ia64.c:4164
+#: xtensa-dynconfig.c:115
 #, c-format
-msgid "%s: @gprel relocation against dynamic symbol %s"
-msgstr "%s: relocare @gprel pe simbolul dinamic %s"
+msgid "%s is defined but plugin support is disabled"
+msgstr "%s este definit, dar suportul pentru module este dezactivat"
 
-#: elf32-ia64.c:4224 elf64-ia64.c:4224
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2889 elfnn-riscv.c:5940
 #, c-format
-msgid "%s: linking non-pic code in a position independent executable"
-msgstr "%s: linkuire cod non-pic într-un executabil independent de poziþie"
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "atribut necunoscut pentru simbolul â€ž%sâ€�: 0x%02x"
 
-#: elf32-ia64.c:4363 elf64-ia64.c:4363
+#: elfnn-aarch64.c:5486
 #, c-format
-msgid "%s: @internal branch to dynamic symbol %s"
-msgstr "%s: ramurã @internal cãtre simbolul dinamic %s"
+msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
+msgstr "%pB: eroare: Â«erratum 835769Â» ciot(stub) Ã®n afara intervalului (fiÈ™ierul de intrare este prea mare)"
 
-#: elf32-ia64.c:4365 elf64-ia64.c:4365
+#: elfnn-aarch64.c:5578
 #, c-format
-msgid "%s: speculation fixup to dynamic symbol %s"
-msgstr "%s: rezolvare de speculaþie cãtre simbolul dinamic %s"
+msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
+msgstr "%pB: eroare: Â«erratum 843419Â» ciot(stub) Ã®n afara intervalului (fiÈ™ierul de intrare este prea mare)"
 
-#: elf32-ia64.c:4367 elf64-ia64.c:4367
+#: elfnn-aarch64.c:5591
 #, c-format
-msgid "%s: @pcrel relocation against dynamic symbol %s"
-msgstr "%s: relocare @pcrell pe simbolul dinamic %s"
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr "%pB: eroare: Â«erratum 843419Â» imediat 0x%<PRIx64> Ã®n afara intervalului pentru ADR (fiÈ™ier de intrare prea mare) È™i â€ž--fix-cortex-a53-843419=adrâ€�, utilizatÄƒ.  RulaÈ›i editorul de legÄƒturi cu â€ž--fix-cortex-a53-843419=fullâ€� Ã®n loc"
 
-#: elf32-ia64.c:4579 elf64-ia64.c:4579
-msgid "unsupported reloc"
-msgstr "relocare nesuportatã"
+#: elfnn-aarch64.c:6134
+#, 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: realocarea %s faÈ›Äƒ de simbolul â€ž%sâ€� care se poate asocia extern nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�"
+
+#: elfnn-aarch64.c:6154
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr "%pB: ramura condiÈ›ionatÄƒ la simbolul nedefinit â€ž%sâ€� nu este permisÄƒ"
+
+# R-GC, scrie:
+# trebuie vÄƒzut dacÄƒ corect este:
+# â€ž... poate fi/poate sÄƒ fie...â€�
+# â€ž... trebuie sÄƒ fie...â€�
+# â€ž... este ...â€�
+#: elfnn-aarch64.c:6242 elfnn-kvx.c:2382
+#, c-format
+msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
+msgstr "%pB: tabelul de descriptori de simbol local poate sÄƒ fie NULL atunci cÃ¢nd se aplicÄƒ realocarea %s faÈ›Äƒ de simbolul local"
+
+#: elfnn-aarch64.c:6356 elfnn-aarch64.c:6393
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: realocare TLS %s faÈ›Äƒ de simbolul nedefinit â€ž%sâ€�"
+
+#: elfnn-aarch64.c:7384
+msgid "too many GOT entries for -fpic, please recompile with -fPIC"
+msgstr "prea multe intrÄƒri GOT pentru â€ž-fpicâ€�, recompilaÈ›i cu â€ž-fPICâ€�"
+
+#: elfnn-aarch64.c:7412
+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 "o posibilÄƒ cauzÄƒ a acestei erori este cÄƒ simbolul este referit Ã®n codul indicat ca È™i cum ar avea o aliniere mai mare decÃ¢t a fost declaratÄƒ acolo unde a fost definit"
+
+#: elfnn-aarch64.c:7979
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
+msgstr "%pB: relocarea %s faÈ›Äƒ de â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat"
+
+#: elfnn-aarch64.c:8940
+#, c-format
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr "%P: %pB: copiere realocare faÈ›Äƒ de simbolul protejat necopiabil â€ž%sâ€�\n"
+
+#: elfnn-kvx.c:929
+msgid "%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: Nu s-a putut atribui â€ž%pAâ€� unei secÈ›iuni de ieÈ™ire. ReÃ®ncercaÈ›i fÄƒrÄƒ opÈ›iunea â€ž--enable-non-contiguous-regionsâ€�.\n"
+
+#: elfnn-kvx.c:2127
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): realocare %s nerezolvatÄƒ Ã®n secÈ›iunea â€ž%sâ€�"
+
+#: elfnn-kvx.c:2851
+#, c-format
+msgid "%s: Bad ELF id: `%d'"
+msgstr "%s: id ELF greÈ™it: â€ž%dâ€�"
+
+#: elfnn-kvx.c:2906
+#, c-format
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: compilat ca obiect pe 32 de biÈ›i È™i %s este pe 64 de biÈ›i"
+
+#: elfnn-kvx.c:2909
+#, c-format
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: compilat ca obiect pe 64 de biÈ›i È™i %s este pe 32 de biÈ›i"
+
+#: elfnn-kvx.c:2911
+#, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: dimensiunea obiectului nu se potriveÈ™te cu cea a È›intei %s"
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:2999
+#, c-format
+msgid "Private flags = 0x%lx : "
+msgstr "fanioane private = 0x%lx: "
+
+#: elfnn-kvx.c:3003
+#, c-format
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr "Coolidge (kv3) V1 64 biÈ›i"
+
+#: elfnn-kvx.c:3005
+#, c-format
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr "Coolidge (kv3) V2 64 biÈ›i"
+
+#: elfnn-kvx.c:3007
+#, c-format
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr "Coolidge (kv4) V1 64 biÈ›i"
+
+#: elfnn-kvx.c:3012
+#, c-format
+msgid "Coolidge (kv3) V1 32 bits"
+msgstr "Coolidge (kv3) V1 32 biÈ›i"
+
+#: elfnn-kvx.c:3014
+#, c-format
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr "Coolidge (kv3) V2 32 biÈ›i"
+
+#: elfnn-kvx.c:3016
+#, c-format
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr "Coolidge (kv4) V1 32 biÈ›i"
+
+#: elfnn-kvx.c:3848
+#, c-format
+msgid "relocation against `%s' has faulty GOT type "
+msgstr "realocarea faÈ›Äƒ de â€ž%sâ€� are un tip GOT defect "
+
+# R-Gc, scrie:
+# dezvoltatori, typo!!!
+#: elfnn-loongarch.c:303 elfnn-loongarch.c:355
+#, c-format
+msgid "%#<PRIx64> invaild imm"
+msgstr "%#<PRIx64> imm nevalid"
+
+#: elfnn-loongarch.c:537 elfnn-riscv.c:4383
+#, c-format
+msgid ""
+"%pB: ABI is incompatible with that of the selected emulation:\n"
+"  target emulation `%s' does not match `%s'"
+msgstr ""
+"%pB: ABI este incompatibil cu cel al emulaÈ›iei selectate:\n"
+"  emulaÈ›ia È›intÄƒ â€ž%sâ€� nu se potriveÈ™te cu â€ž%sâ€�"
+
+#: elfnn-loongarch.c:592
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr "%pB: nu se poate vincula un obiect ABI diferit."
+
+#: elfnn-loongarch.c:735
+msgid "Internal error: unreachable."
+msgstr "Eroare internÄƒ: inaccesibil."
+
+#: elfnn-loongarch.c:915
+#, c-format
+msgid "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s"
+msgstr "%pB:(%pA+%#lx): realocarea %s faÈ›Äƒ de â€ž%sâ€� nu poate fi utilizatÄƒ cÃ¢nd se creeazÄƒ %s; recompilaÈ›i cu %s%s"
+
+#: elfnn-loongarch.c:919
+msgid " and check the symbol visibility"
+msgstr " È™i verificaÈ›i vizibilitatea simbolului"
+
+#: elfnn-loongarch.c:1045
+#, c-format
+msgid "%pB: stack based reloc type (%u) is not supported with -z pack-relative-relocs"
+msgstr "%pB: tipul de realocare bazat pe stivÄƒ (%u) nu este acceptat cu â€ž-z pack-relative-relocsâ€�"
+
+#: elfnn-loongarch.c:1240
+#, c-format
+msgid "%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE"
+msgstr "%pB: realocarea R_LARCH_32 faÈ›Äƒ de simbolul non-absolut â€ž%sâ€� nu poate fi folositÄƒ Ã®n ELFCLASS64 cÃ¢nd se creeazÄƒ un obiect partajat sau PIE"
+
+#: elfnn-loongarch.c:1305
+#, c-format
+msgid "%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary"
+msgstr "%pB: R_LARCH_ALIGN cu decalajul %<PRId64> nu este aliniat la limita instrucÈ›iunii"
+
+#: elfnn-loongarch.c:4196
+msgid "cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)"
+msgstr "nu se poate rezolva R_LARCH_PCREL20_S2 Ã®n raport cu un simbol slab nedefinit cu operand Ã®n afara intervalului [-2048, 2048)"
+
+#: elfnn-loongarch.c:4706
+msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'"
+msgstr "recompilaÈ›i cu â€žgcc -mno-relaxâ€� sau â€žas -mno-relaxâ€� sau â€žld --no-relaxâ€�"
+
+#: elfnn-loongarch.c:5584 elfnn-riscv.c:5168
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-byte boundary, but only %<PRId64> present"
+msgstr "%pB(%pA+%#<PRIx64>): %<PRId64> octeÈ›i sunt necesari pentru alinierea la limita %<PRId64>-octeÈ›i, dar numai %<PRId64> sunt prezenÈ›i"
+
+#: elfnn-riscv.c:385 elfnn-riscv.c:436 elfnn-riscv.c:484 elfnn-riscv.c:520
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr "%pB: avertisment: generarea PLT RVE nu este acceptatÄƒ"
 
-#: elf32-ia64.c:4858 elf64-ia64.c:4858
+#: elfnn-riscv.c:675
 #, c-format
-msgid "%s: linking trap-on-NULL-dereference with non-trapping files"
-msgstr "%s: linkuire trap-on-NULL-dereference cu fiºiere non-trapping"
+msgid "%pB: error: unsupported PLT type: %u"
+msgstr "%pB: eroare: tip de PLT neacceptat: %u"
 
-#: elf32-ia64.c:4867 elf64-ia64.c:4867
+#: elfnn-riscv.c:1120
 #, c-format
-msgid "%s: linking big-endian files with little-endian files"
-msgstr "%s: linkuire fiºiere big-endiancu fiºiere little-endian"
+msgid "%pB: relocation %s against absolute symbol `%s' can not be used when making a shared object"
+msgstr "%pB: realocarea %s faÈ›Äƒ de simbolul absolut â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat"
 
-#: elf32-ia64.c:4876 elf64-ia64.c:4876
+#: elfnn-riscv.c:1162
 #, c-format
-msgid "%s: linking 64-bit files with 32-bit files"
-msgstr "%s: linkuire fiºiere pe 64-biþi cu fiºiere pe 32-biþi"
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object"
+msgstr "%pB: realocarea %s faÈ›Äƒ de simbolul non-absolut â€ž%sâ€� nu poate fi folositÄƒ cÃ¢nd se creeazÄƒ un obiect partajat"
 
-#: elf32-ia64.c:4885 elf64-ia64.c:4885
+#: elfnn-riscv.c:2095
 #, c-format
-msgid "%s: linking constant-gp files with non-constant-gp files"
-msgstr "%s: linkuire fiºiere constant-gp cu fiºiere non-constant-gp"
+msgid "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "dimensiunea finalÄƒ a valorii uleb128 la poziÈ›ia 0x%lx Ã®n %pA din %pB depÄƒÈ™eÈ™te spaÈ›iul disponibil"
 
-#: elf32-ia64.c:4895 elf64-ia64.c:4895
+#: elfnn-riscv.c:2337
 #, c-format
-msgid "%s: linking auto-pic files with non-auto-pic files"
-msgstr "%s: linkuire fiºiere auto-pic cu fiºiere non-auto-pic"
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr "%pcrel_lo lipseÈ™te potrivirea cu %pcrel_hi"
 
-#: peigen.c:985 pepigen.c:985
+#: elfnn-riscv.c:2340
 #, c-format
-msgid "%s: line number overflow: 0x%lx > 0xffff"
-msgstr "%s: depãºire(overflow) numãr linii: 0x%lx > 0xffff"
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "%pcrel_lo cu adaos nu este permis pentru R_RISCV_GOT_HI20"
 
-#: peigen.c:1002 pepigen.c:1002
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2345
 #, c-format
-msgid "%s: reloc overflow 1: 0x%lx > 0xffff"
-msgstr "%s: depãºire(overflow) relocare 1: 0x%lx > 0xffff"
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr "%%pcrel_lo depÄƒÈ™ire cu un adaos, valoarea lui %%pcrel_hi este 0x%<PRIx64> fÄƒrÄƒ nici un adaos, dar poate fi 0x%<PRIx64> dupÄƒ adÄƒugarea adaosului %%pcrel_lo"
 
-#: peigen.c:1016 pepigen.c:1016
+#: elfnn-riscv.c:2353
+#, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr "%pcrel_lo depÄƒÈ™ire cu un adaos"
+
+#: elfnn-riscv.c:2843
+#, c-format
+msgid "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up"
+msgstr "%pB: avertisment: R_R_RISCV_SUB_ULEB128 cu adaos diferit de zero, vÄƒ rugÄƒm sÄƒ reconstruiÈ›i cu binutils versiunea 2.42 sau mai recentÄƒ"
+
+#: elfnn-riscv.c:2923
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "Adaosul nu este permis pentru R_RISCV_GOT_HI20"
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:3022
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: realocarea %s faÈ›Äƒ de â€ž%sâ€� care se poate asocia extern nu poate fi folositÄƒ atunci cÃ¢nd se creeazÄƒ un obiect partajat; recompilaÈ›i cu â€ž-fPICâ€�\n"
+
+#: elfnn-riscv.c:3103
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "simbol de secÈ›iune %pcrel_lo cu un adaos"
+
+#: elfnn-riscv.c:3124
+#, c-format
+msgid "%tlsdesc_lo with addend"
+msgstr "%tlsdesc_lo cu un adaos"
+
+#: elfnn-riscv.c:3357
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: realocare %s nerezolvabilÄƒ faÈ›Äƒ de simbolul â€ž%sâ€�\n"
+
+#: elfnn-riscv.c:3392
+msgid "%X%P: internal error: out of range error\n"
+msgstr "%X%P: eroare internÄƒ: eroare Ã®n afara intervalului\n"
+
+#: elfnn-riscv.c:3397
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "%X%P: eroare internÄƒ: eroare de realocare neacceptatÄƒ\n"
+
+#: elfnn-riscv.c:3403
+msgid "dangerous relocation error"
+msgstr "eroare de realocare periculoasÄƒ"
+
+#: elfnn-riscv.c:3409
+msgid "%X%P: internal error: unknown error\n"
+msgstr "%X%P: eroare internÄƒ: eroare necunoscutÄƒ\n"
+
+#: elfnn-riscv.c:3982
+#, c-format
+msgid "error: %pB: corrupted ISA string '%s'.  First letter should be 'i' or 'e' but got '%s'"
+msgstr "eroare: %pB: È™ir ISA corupt â€ž%sâ€�.  Prima litera ar trebui sÄƒ fie â€žiâ€� sau â€žeâ€�, dar a primit â€ž%sâ€�"
+
+#: elfnn-riscv.c:4025
+#, c-format
+msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'"
+msgstr "eroare: %pB: È™ir ISA nepotrivit pentru a fuziona â€ž%sâ€� È™i â€ž%sâ€�"
+
+#: elfnn-riscv.c:4162
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)"
+msgstr "eroare: %pB: È™irul ISA de intrare (%s) nu se potriveÈ™te cu ieÈ™irea (%s)"
+
+#: elfnn-riscv.c:4182
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)"
+msgstr "eroare: %pB: XLEN de intrare (%u) nu se potriveÈ™te cu ieÈ™irea (%u)"
+
+#: elfnn-riscv.c:4190
+#, c-format
+msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation"
+msgstr "eroare: %pB: XLEN neacceptat (%u), este posibil sÄƒ utilizaÈ›i o emulare greÈ™itÄƒ"
+
+#: elfnn-riscv.c:4314
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr "avertisment: versiunea cu specificaÈ›ii privilegiate 1.9.1 nu poate fi conectatÄƒ cu alte versiuni cu specificaÈ›ii"
+
+#: elfnn-riscv.c:4342
+#, c-format
+msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned"
+msgstr "eroare: %pB foloseÈ™te stiva aliniatÄƒ la %u-octeÈ›i, dar ieÈ™irea foloseÈ™te stiva aliniatÄƒ la %u-octeÈ›i"
+
+#: elfnn-riscv.c:4439
+#, c-format
+msgid "%pB: can't link %s modules with %s modules"
+msgstr "%pB: nu se pot vincula %s module cu %s module"
+
+#: elfnn-riscv.c:4449
+#, c-format
+msgid "%pB: can't link RVE with other target"
+msgstr "%pB: nu se poate vincula RVE cu altÄƒ È›intÄƒ"
+
+#: elfnn-riscv.c:4473
+#, c-format
+msgid "warning: %pB: unknown RISCV ABI object attribute %d"
+msgstr "avertizare: %pB: atribut necunoscut al obiectului RISCV ABI %d"
+
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object"
+msgstr "%pB: realocarea %s faÈ›Äƒ de simbolul non-absolut â€ž%sâ€� nu poate fi folositÄƒ Ã®n RV64 cÃ¢nd se creeazÄƒ un obiect partajat"
+
+#: peXXigen.c:161
+#, c-format
+msgid "%pB: unable to find name for empty section"
+msgstr "%pB: nu se poate gÄƒsi numele pentru secÈ›iunea goalÄƒ"
+
+#: peXXigen.c:188
+#, c-format
+msgid "%pB: out of memory creating name for empty section"
+msgstr "%pB: memorie insuficientÄƒ pentru crearea numelui pentru secÈ›iunea goalÄƒ"
+
+#: peXXigen.c:199
+#, c-format
+msgid "%pB: unable to create fake empty section"
+msgstr "%pB: nu se poate crea o secÈ›iune goalÄƒ falsÄƒ"
+
+#: peXXigen.c:928
+#, c-format
+msgid "%pB:%.8s: section below image base"
+msgstr "%pB:%.8s: secÈ›iune de sub baza imaginii"
+
+#: peXXigen.c:933
+#, c-format
+msgid "%pB:%.8s: RVA truncated"
+msgstr "%pB:%.8s: RVA trunchiat"
+
+#: peXXigen.c:1066
+#, c-format
+msgid "%pB: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: depÄƒÈ™ire a numÄƒrului de linii: 0x%lx > 0xffff"
+
+#: peXXigen.c:1232
 msgid "Export Directory [.edata (or where ever we found it)]"
-msgstr "Director Exportare [.edata (sau oriunde se gãseºte)]"
+msgstr "Director Exportare [.edata (sau oriunde se gÄƒseÈ™te)]"
 
-#: peigen.c:1017 pepigen.c:1017
+#: peXXigen.c:1233
 msgid "Import Directory [parts of .idata]"
-msgstr "Director Importare [ pãrþi ale .idata]"
+msgstr "Director Importare [ pÄƒrÈ›i ale .idata]"
 
-#: peigen.c:1018 pepigen.c:1018
+#: peXXigen.c:1234
 msgid "Resource Directory [.rsrc]"
-msgstr "Director Resursã [.rsrc]"
+msgstr "Director ResursÄƒ [.rsrc]"
 
-#: peigen.c:1019 pepigen.c:1019
+#: peXXigen.c:1235
 msgid "Exception Directory [.pdata]"
-msgstr "Director Excepþie [.pdata]"
+msgstr "Director ExcepÈ›ii [.pdata]"
 
-#: peigen.c:1020 pepigen.c:1020
+#: peXXigen.c:1236
 msgid "Security Directory"
 msgstr "Director Securitate"
 
-#: peigen.c:1021 pepigen.c:1021
+#: peXXigen.c:1237
 msgid "Base Relocation Directory [.reloc]"
-msgstr "Director Relocare de Bazã [.reloc]"
+msgstr "Director Realocare de BazÄƒ [.reloc]"
 
-#: peigen.c:1022 pepigen.c:1022
+#: peXXigen.c:1238
 msgid "Debug Directory"
-msgstr "Director Debug"
+msgstr "Director Depanare"
 
-#: peigen.c:1023 pepigen.c:1023
+#: peXXigen.c:1239
 msgid "Description Directory"
 msgstr "Director Descriere"
 
-#: peigen.c:1024 pepigen.c:1024
+#: peXXigen.c:1240
 msgid "Special Directory"
 msgstr "Director Special"
 
-#: peigen.c:1025 pepigen.c:1025
+#: peXXigen.c:1241
 msgid "Thread Storage Directory [.tls]"
-msgstr "Director Depozitare Fire(Thread) [.tls]"
+msgstr "Director Stocare fire de execuÈ›ie [.tls]"
 
-#: peigen.c:1026 pepigen.c:1026
+#: peXXigen.c:1242
 msgid "Load Configuration Directory"
-msgstr "Director Încãrcare Configuraþie"
+msgstr "Director ÃŽncÄƒrcare ConfiguraÈ›ie"
 
-#: peigen.c:1027 pepigen.c:1027
+#: peXXigen.c:1243
 msgid "Bound Import Directory"
-msgstr "Director Importare de Graniþã(Bound)"
+msgstr "Director Importare de LimitÄƒ"
 
-#: peigen.c:1028 pepigen.c:1028
+#: peXXigen.c:1244
 msgid "Import Address Table Directory"
-msgstr "Director Importare Tabelã de Adrese"
+msgstr "Director Importare Tabel de Adrese"
 
-#: peigen.c:1029 pepigen.c:1029
+#: peXXigen.c:1245
 msgid "Delay Import Directory"
-msgstr "Director Importare Întârziere"
+msgstr "Director Importare ÃŽntÃ¢rziere"
 
-#: peigen.c:1030 peigen.c:1031 pepigen.c:1030 pepigen.c:1031
+#: peXXigen.c:1246
+msgid "CLR Runtime Header"
+msgstr "Antet de rulare CLR"
+
+#: peXXigen.c:1247
 msgid "Reserved"
 msgstr "Rezervat"
 
-#: peigen.c:1094 pepigen.c:1094
-msgid ""
-"\n"
-"There is an import table, but the section containing it could not be found\n"
-msgstr ""
-"\n"
-"Existã o tabelã de importare, dar secþiunea care o conþine n-a putut fi gãsitã\n"
-
-#: peigen.c:1099 pepigen.c:1099
+#: peXXigen.c:1312
 #, c-format
 msgid ""
 "\n"
-"There is an import table in %s at 0x%lx\n"
+"There is an import table, but the section containing it could not be found\n"
 msgstr ""
 "\n"
-"Existã o tabelã de importare în %s la 0x%lx\n"
+"ExistÄƒ un tabel de importare, dar secÈ›iunea care Ã®l conÈ›ine n-a putut fi gÄƒsitÄƒ\n"
 
-#: peigen.c:1136 pepigen.c:1136
+#: peXXigen.c:1318
 #, c-format
 msgid ""
 "\n"
-"Function descriptor located at the start address: %04lx\n"
+"There is an import table in %s, but that section has no contents\n"
 msgstr ""
 "\n"
-"Descriptorul de funcþie localizat la adresa de start: %04lx\n"
+"ExistÄƒ un tabel de import Ã®n %s, dar acea secÈ›iune nu are conÈ›inut\n"
 
-#: peigen.c:1139 pepigen.c:1139
+#: peXXigen.c:1325
 #, c-format
-msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
-msgstr "\tcode-base %08lx toc (încãrcabil/actual) %08lx/%08lx\n"
-
-#: peigen.c:1145 pepigen.c:1145
 msgid ""
 "\n"
-"No reldata section! Function descriptor not decoded.\n"
+"There is an import table in %s at 0x%lx\n"
 msgstr ""
 "\n"
-"Nu existã secþiune reldata! Descriptorul de funcþie nu este decodat.\n"
+"ExistÄƒ o tabelÄƒ de importare Ã®n %s la 0x%lx\n"
 
-#: peigen.c:1150 pepigen.c:1150
+#: peXXigen.c:1331
 #, c-format
 msgid ""
 "\n"
 "The Import Tables (interpreted %s section contents)\n"
 msgstr ""
 "\n"
-"Tabelele de Importare (interpretat conþinutul secþiunii %s)\n"
+"Tabelele de Importare (interpretat conÈ›inutul secÈ›iunii %s)\n"
 
-#: peigen.c:1153 pepigen.c:1153
+# R-GC, scrie:
+# â€žthunkâ€� = â€žsubrutinÄƒâ€�,
+# conform paginii web:
+# https://en.wikipedia.org/wiki/Thunk
+#: peXXigen.c:1334
+#, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
 "                 Table   Stamp     Chain    Name      Thunk\n"
 msgstr ""
-" vma:          Sugestie   Timp      Înaintare  DLL     Primul\n"
-"                 Tabel   Marcaj     Lanþ    Nume      Thunk\n"
+" vma:          Sugestie  Timp      ÃŽnainte  DLL      Primul\n"
+"                 Tabel   Marcaj    LanÈ›     Nume      Thunk\n"
 
-#: peigen.c:1204 pepigen.c:1204
+#: peXXigen.c:1383
 #, c-format
 msgid ""
 "\n"
-"\tDLL Name: %s\n"
+"\tDLL Name: %.*s\n"
 msgstr ""
 "\n"
-"\tNume DLL: %s\n"
+"\tNume DLL: %.*s\n"
 
-#: peigen.c:1215 pepigen.c:1215
-msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
-msgstr "\tvma:  Sugestie/Ord Membru-Nume Salt-La\n"
+#: peXXigen.c:1399
+#, c-format
+msgid "\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"
+msgstr "\tvma:     Nr-ordinal  Sugestie  Nume-Membru  Legat-de\n"
 
-#: peigen.c:1240 pepigen.c:1240
+# R-GC, scrie:
+# â€žthunkâ€� = â€žsubrutinÄƒâ€�,
+# conform paginii web:
+# https://en.wikipedia.org/wiki/Thunk
+#: peXXigen.c:1424
+#, c-format
 msgid ""
 "\n"
 "There is a first thunk, but the section containing it could not be found\n"
 msgstr ""
 "\n"
-"Existã un prim thunk, dar secþiunea care îl conþine nu poate fi gãsitã\n"
+"ExistÄƒ o primÄƒ subrutinÄƒ( thunk), dar secÈ›iunea care o conÈ›ine nu poate fi gÄƒsitÄƒ\n"
+
+#: peXXigen.c:1474 peXXigen.c:1519
+#, c-format
+msgid "\t<corrupt: 0x%08lx>"
+msgstr "\t<corupt: 0x%08lx>"
 
-#: peigen.c:1380 pepigen.c:1380
+#: peXXigen.c:1613
+#, c-format
 msgid ""
 "\n"
 "There is an export table, but the section containing it could not be found\n"
 msgstr ""
 "\n"
-"Existã o tabelã de export, dar secþiunea ce o conþine nu poate fi gãsitã\n"
+"ExistÄƒ un tabel de export, dar secÈ›iunea care Ã®l conÈ›ine nu poate fi gÄƒsitÄƒ\n"
 
-#: peigen.c:1385 pepigen.c:1385
+#: peXXigen.c:1626
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but it is too small (%d)\n"
+msgstr ""
+"\n"
+"ExistÄƒ un tabel de export Ã®n %s, dar este prea mic (%d)\n"
+
+#: peXXigen.c:1634
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but contents cannot be read\n"
+msgstr ""
+"\n"
+"ExistÄƒ un tabel de export Ã®n %s, dar conÈ›inutul acestuia nu poate fi citit\n"
+
+#: peXXigen.c:1640
 #, c-format
 msgid ""
 "\n"
 "There is an export table in %s at 0x%lx\n"
 msgstr ""
 "\n"
-"Existã o tabelã de exportare în %s la 0x%lx\n"
+"ExistÄƒ un tabel de export Ã®n %s la 0x%lx\n"
 
-#: peigen.c:1416 pepigen.c:1416
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -2835,126 +9635,159 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"Tabelele de Exportare (interpretare conþinut secþiune %s)\n"
+"Tabelele de Exportare (s-a interpretat conÈ›inutul secÈ›iunii %s)\n"
 "\n"
 
-#: peigen.c:1420 pepigen.c:1420
+#: peXXigen.c:1675
 #, c-format
 msgid "Export Flags \t\t\t%lx\n"
-msgstr "Marcaje(Flags) Exportare \t\t\t%lx\n"
+msgstr "Export fanioane \t\t\t%lx\n"
 
-#: peigen.c:1423 pepigen.c:1423
+#: peXXigen.c:1678
 #, c-format
 msgid "Time/Date stamp \t\t%lx\n"
-msgstr "Marcaj(stamp) Orã/Datã \t\t%lx\n"
+msgstr "Marcaj orÄƒ/datÄƒ \t\t%lx\n"
 
-#: peigen.c:1426 pepigen.c:1426
+#: peXXigen.c:1682
 #, c-format
 msgid "Major/Minor \t\t\t%d/%d\n"
 msgstr "Major/Minor \t\t\t%d/%d\n"
 
-#: peigen.c:1429 pepigen.c:1429
+#: peXXigen.c:1685
+#, c-format
 msgid "Name \t\t\t\t"
 msgstr "Nume \t\t\t\t"
 
-#: peigen.c:1435 pepigen.c:1435
+#: peXXigen.c:1696
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
-msgstr "Bazã Ordinalã \t\t\t%ld\n"
+msgstr "BazÄƒ ordinalÄƒ \t\t\t%ld\n"
 
-#: peigen.c:1438 pepigen.c:1438
+#: peXXigen.c:1699
+#, c-format
 msgid "Number in:\n"
-msgstr "Numãr în:\n"
+msgstr "NumÄƒr Ã®n:\n"
 
-#: peigen.c:1441 pepigen.c:1441
+#: peXXigen.c:1702
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
-msgstr "\t Tabelã Exportare Adrese \t\t%08lx\n"
+msgstr "\tTabel de adrese exportate \t\t%08lx\n"
 
-#: peigen.c:1445 pepigen.c:1445
+#: peXXigen.c:1706
 #, c-format
 msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n"
-msgstr "\tTabelã [Nume Pointer/Ordinal]\t%08lx\n"
+msgstr "\tTabel [nume indicator/ordinal]\t%08lx\n"
 
-#: peigen.c:1448 pepigen.c:1448
+#: peXXigen.c:1709
+#, c-format
 msgid "Table Addresses\n"
-msgstr "Adrese Tabelã\n"
+msgstr "Tabel de adrese\n"
 
-#: peigen.c:1451 pepigen.c:1451
+#: peXXigen.c:1712
+#, c-format
 msgid "\tExport Address Table \t\t"
-msgstr "\tTabelã Exportare de Adrese \t\t"
+msgstr "\tTabel de adrese exportate \t\t"
 
-#: peigen.c:1456 pepigen.c:1456
+#: peXXigen.c:1717
+#, c-format
 msgid "\tName Pointer Table \t\t"
-msgstr "\tNume Pointer Tabelã \t\t"
+msgstr "\tTabel cu indicatori de nume \t\t"
 
-#: peigen.c:1461 pepigen.c:1461
+#: peXXigen.c:1722
+#, c-format
 msgid "\tOrdinal Table \t\t\t"
-msgstr "\tOrdinal Tabelã \t\t\t"
+msgstr "\tTabel ordinal \t\t\t"
 
-#: peigen.c:1476 pepigen.c:1476
+#: peXXigen.c:1736
 #, c-format
 msgid ""
 "\n"
 "Export Address Table -- Ordinal Base %ld\n"
 msgstr ""
 "\n"
-"Tabelã Exportare de Adrese -- Bazã Ordinalã %ld\n"
+"Tabel de adrese exportate -- BazÄƒ OrdinalÄƒ %ld\n"
+
+#: peXXigen.c:1746
+#, c-format
+msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr "\tTabel de adrese de export rva (0x%lx) sau numÄƒr de intrÄƒri (0x%lx), nevalid\n"
 
-#: peigen.c:1495 pepigen.c:1495
+#: peXXigen.c:1765
 msgid "Forwarder RVA"
-msgstr "Trimiþãtor(Forwarder) RVA"
+msgstr "Expeditor RVA"
 
-#: peigen.c:1506 pepigen.c:1506
+#: peXXigen.c:1777
 msgid "Export RVA"
 msgstr "Exportare RVA"
 
-#: peigen.c:1513 pepigen.c:1513
+#: peXXigen.c:1784
+#, c-format
 msgid ""
 "\n"
-"[Ordinal/Name Pointer] Table\n"
+"[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"
 msgstr ""
 "\n"
-"[Ordinal/Nume Pointer] Tabelã\n"
+"Tabel [ordinal/nume indicator] -- BazÄƒ ordinalÄƒ %ld\n"
+
+#: peXXigen.c:1794
+#, c-format
+msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr "\tTabel cu indicatori de nume rva (0x%lx) sau numÄƒr de intrÄƒri (0x%lx), nevalid\n"
 
-#: peigen.c:1568 pepigen.c:1568
+#: peXXigen.c:1801
 #, c-format
-msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
-msgstr "Avertisment, mãrimea secþiunii .pdata (%ld) nu este multiplu de %d\n"
+msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n"
+msgstr "\tTabelul ordinal rva (0x%lx) sau numÄƒrul de intrÄƒri (0x%lx) nevalid\n"
 
-#: peigen.c:1572 pepigen.c:1572
+#: peXXigen.c:1815
+#, c-format
+msgid "\t[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>\n"
+msgstr "\t[%4ld] +base[%4ld]  %04lx <decalaj corupt: %lx>\n"
+
+#: peXXigen.c:1872 peXXigen.c:2042
+#, c-format
+msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
+msgstr "avertisment, dimensiunea secÈ›iunii .pdata (%ld) nu este un multiplu de %d\n"
+
+#: peXXigen.c:1876 peXXigen.c:2046
+#, c-format
 msgid ""
 "\n"
 "The Function Table (interpreted .pdata section contents)\n"
 msgstr ""
 "\n"
-"Tabela de Funcþii (interpretare conþinut secþiune .pdata)\n"
+"Tabelul de funcÈ›ii (conÈ›inutul secÈ›iunii .pdata interpretat)\n"
 
-#: peigen.c:1575 pepigen.c:1575
+#: peXXigen.c:1879
+#, c-format
 msgid " vma:\t\t\tBegin Address    End Address      Unwind Info\n"
-msgstr " vma:\t\t\tAdresã Început    Adresã Sfârºit      Info Unwind\n"
+msgstr " vma:\t\t\tAdresÄƒ ÃŽnceput  AdresÄƒ SfÃ¢rÈ™it   Info Unwind\n"
 
-#: peigen.c:1577 pepigen.c:1577
+#: peXXigen.c:1881
+#, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
 "     \t\tAddress  Address  Handler  Data     Address    Mask\n"
 msgstr ""
-" vma:\t\tÎnceput    Sfârºit    EH     EH     PrologSfârºit  Excepþii\n"
-"     \t\tAdresã  Adresã  Manipulant  Date   Adresã    Mascã\n"
+" vma:\t\tÃŽnceput  SfÃ¢rÈ™it  EH       EH       PrologFin. ExcepÈ›ii\n"
+"     \t\tAdresÄƒ   AdresÄƒ  Manipulant Date    AdresÄƒ     MascÄƒ\n"
 
-#: peigen.c:1647 pepigen.c:1647
-msgid " Register save millicode"
-msgstr " Registrul salveazã millicode "
-
-#: peigen.c:1650 pepigen.c:1650
-msgid " Register restore millicode"
-msgstr "Registrul reface millicode"
-
-#: peigen.c:1653 pepigen.c:1653
-msgid " Glue code sequence"
-msgstr "Secvenþã de cod lipitã(glue)"
+#: peXXigen.c:1894
+#, c-format
+msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
+msgstr "Dimensiunea virtualÄƒ a secÈ›iunii .pdata (%ld) mai mare decÃ¢t dimensiunea realÄƒ (%ld)\n"
 
-#: peigen.c:1705 pepigen.c:1705
+#: peXXigen.c:2048
+#, c-format
+msgid ""
+" vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
+"     \t\tAddress  Length   Length   32b exc  Handler   Data\n"
+msgstr ""
+" vma:\t\tÃŽnceput  Prolog   FuncÈ›ia  Fanioane ExcepÈ›ie  EH\n"
+"     \t\tAdresa   Lungime  Lungime  32b exc  Gestionar Date\n"
+
+#: peXXigen.c:2173
+#, c-format
 msgid ""
 "\n"
 "\n"
@@ -2962,26 +9795,152 @@ msgid ""
 msgstr ""
 "\n"
 "\n"
-"Relocãri Bazã Fiºier PE (interpretare conþinut secþiune .reloc)\n"
+"RealocÄƒri bazÄƒ de fiÈ™iere PE (interpretare conÈ›inut secÈ›iune .reloc)\n"
 
-#: peigen.c:1735 pepigen.c:1735
+#: peXXigen.c:2202
 #, c-format
 msgid ""
 "\n"
 "Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n"
 msgstr ""
 "\n"
-"Adresã Virtualã: %08lx Mãrime Trunchiere %ld (0x%lx) Numãr acceptãri %ld\n"
+"AdresÄƒ virtualÄƒ: %08lx Dimensiunea fragmentului %ld (0x%lx) NumÄƒrul de remedieri %ld\n"
 
-#: peigen.c:1748 pepigen.c:1748
+#: peXXigen.c:2220
 #, c-format
 msgid "\treloc %4d offset %4x [%4lx] %s"
-msgstr "\trelocarea %4d offset %4x [%4lx] %s"
+msgstr "\trealocarea %4d decalaj %4x [%4lx] %s"
+
+#: peXXigen.c:2281
+#, c-format
+msgid "%03x %*.s Entry: "
+msgstr "%03x %*.s Intrare: "
+
+#: peXXigen.c:2305
+#, c-format
+msgid "name: [val: %08lx len %d]: "
+msgstr "nume: [val: %08lx lung %d]: "
+
+#: peXXigen.c:2325
+#, c-format
+msgid "<corrupt string length: %#x>\n"
+msgstr "<lungimea È™irului coruptÄƒ: %#x>\n"
+
+#: peXXigen.c:2335
+#, c-format
+msgid "<corrupt string offset: %#lx>\n"
+msgstr "<decalajul È™irului corupt: %#lx>\n"
+
+#: peXXigen.c:2340
+#, c-format
+msgid "ID: %#08lx"
+msgstr "ID: %#08lx"
+
+#: peXXigen.c:2343
+#, c-format
+msgid ", Value: %#08lx\n"
+msgstr ", Valoare: %#08lx\n"
+
+#: peXXigen.c:2365
+#, c-format
+msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
+msgstr "%03x %*.s  Foaie: Adr: %#08lx, Dim.: %#08lx, Pag.cod: %d\n"
+
+#: peXXigen.c:2407
+#, c-format
+msgid "<unknown directory type: %d>\n"
+msgstr "<tip de director necunoscut: %d>\n"
+
+#: peXXigen.c:2415
+#, c-format
+msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n"
+msgstr " Tabel: Caracter: %d, Ora: %08lx, Ver: %d/%d, Num Nume: %d, ID-uri: %d\n"
+
+#: peXXigen.c:2503
+#, c-format
+msgid "Corrupt .rsrc section detected!\n"
+msgstr "SecÈ›iune .rsrc coruptÄƒ a fost detectatÄƒ!\n"
+
+#: peXXigen.c:2527
+#, c-format
+msgid ""
+"\n"
+"WARNING: Extra data in .rsrc section - it will be ignored by Windows:\n"
+msgstr ""
+"\n"
+"AVERTISMENT: Date suplimentare Ã®n secÈ›iunea .rsrc - acestea vor fi ignorate de Windows:\n"
+
+#: peXXigen.c:2533
+#, c-format
+msgid " String table starts at offset: %#03x\n"
+msgstr " Tabelul de È™iruri Ã®ncepe la poziÈ›ia: %#03x\n"
+
+#: peXXigen.c:2536
+#, c-format
+msgid " Resources start at offset: %#03x\n"
+msgstr " Resursele Ã®ncep de la poziÈ›ia: %#03x\n"
+
+#: peXXigen.c:2593
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"ExistÄƒ un director de depanare, dar secÈ›iunea care Ã®l conÈ›ine nu a putut fi gÄƒsitÄƒ\n"
+
+#: peXXigen.c:2599
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s, but that section has no contents\n"
+msgstr ""
+"\n"
+"ExistÄƒ un director de depanare Ã®n %s, dar acea secÈ›iune nu are conÈ›inut\n"
+
+#: peXXigen.c:2606
+#, c-format
+msgid ""
+"\n"
+"Error: section %s contains the debug data starting address but it is too small\n"
+msgstr ""
+"\n"
+"Eroare: secÈ›iunea %s conÈ›ine adresa de pornire a datelor de depanare, dar este prea micÄƒ\n"
+
+#: peXXigen.c:2611
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s at 0x%lx\n"
+"\n"
+msgstr ""
+"\n"
+"ExistÄƒ un director de depanare Ã®n %s la 0x%lx\n"
+
+#: peXXigen.c:2618
+#, c-format
+msgid "The debug data size field in the data directory is too big for the section"
+msgstr "CÃ¢mpul pentru dimensiunea datelor de depanare din directorul de date este prea mare pentru secÈ›iune"
+
+#: peXXigen.c:2623
+#, c-format
+msgid "Type                Size     Rva      Offset\n"
+msgstr "Tip                 Dim.     Rva      Decalaj\n"
+
+#: peXXigen.c:2671
+#, c-format
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr "(format %c%c%c%c semnÄƒturÄƒ %s vÃ¢rstÄƒ %ld pdb %s)\n"
+
+#: peXXigen.c:2683
+#, c-format
+msgid "The debug directory size is not a multiple of the debug directory entry size\n"
+msgstr "Dimensiunea directorului de depanare nu este un multiplu al dimensiunii intrÄƒrii directorului de depanare\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:1788 pepigen.c:1788
+#: peXXigen.c:2767
 #, c-format
 msgid ""
 "\n"
@@ -2990,38 +9949,263 @@ msgstr ""
 "\n"
 "Caracteristici 0x%x\n"
 
-#~ msgid "%s: Unknown special linker type %d"
-#~ msgstr "%s: Tip special necunoscut de linker %d"
+#: peXXigen.c:3052
+#, c-format
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr "%pB: Directorul de date (%lx octeÈ›i la %<PRIx64>) se extinde peste limita secÈ›iunii la %<PRIx64>"
+
+#: peXXigen.c:3093
+msgid "failed to update file offsets in debug directory"
+msgstr "nu s-a reuÈ™it actualizarea decalajelor fiÈ™ierelor din directorul de depanare"
+
+#: peXXigen.c:3102
+#, c-format
+msgid "%pB: failed to read debug data section"
+msgstr "%pB: nu s-a putut citi secÈ›iunea de date de depanare"
+
+#: peXXigen.c:3907
+#, c-format
+msgid ".rsrc merge failure: duplicate string resource: %d"
+msgstr "fuziunea .rsrc a eÈ™uat: resursÄƒ È™ir duplicat: %d"
+
+#: peXXigen.c:4042
+msgid ".rsrc merge failure: multiple non-default manifests"
+msgstr "fuziunea .rsrc a eÈ™uat: multiple manifeste non-implicite"
+
+#: peXXigen.c:4060
+msgid ".rsrc merge failure: a directory matches a leaf"
+msgstr "fuziunea .rsrc a eÈ™uat: un director se potriveÈ™te cu o foaie"
+
+#: peXXigen.c:4102
+msgid ".rsrc merge failure: duplicate leaf"
+msgstr "fuziunea .rsrc a eÈ™uat: foaie duplicat"
+
+#: peXXigen.c:4107
+#, c-format
+msgid ".rsrc merge failure: duplicate leaf: %s"
+msgstr "fuziunea .rsrc a eÈ™uat: foaie duplicat: %s"
+
+#: peXXigen.c:4174
+msgid ".rsrc merge failure: dirs with differing characteristics"
+msgstr "fuziunea .rsrc a eÈ™uat: directoare cu caracteristici diferite"
+
+#: peXXigen.c:4181
+msgid ".rsrc merge failure: differing directory versions"
+msgstr "fuziunea .rsrc a eÈ™uat: versiuni diferite de directoare"
+
+#. Corrupted .rsrc section - cannot merge.
+#: peXXigen.c:4293
+#, c-format
+msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
+msgstr "%pB: fuziunea .rsrc a eÈ™uat: secÈ›iunea .rsrc coruptÄƒ"
+
+#: peXXigen.c:4301
+#, c-format
+msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
+msgstr "%pB: fuziunea .rsrc a eÈ™uat: dimensiune .rsrc neaÈ™teptatÄƒ"
+
+#: peXXigen.c:4441 peXXigen.c:4461 peXXigen.c:4482 peXXigen.c:4502
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: %s is missing"
+msgstr "%pB: nu se poate completa DataDictionary[%d]: %s lipseÈ™te"
+
+#: peXXigen.c:4544 peXXigen.c:4590 peXXigen.c:4614 peXXigen.c:4698
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"
+msgstr "%pB: nu se poate completa DataDictionary[%d]: %s nu este definit corect"
+
+#: peXXigen.c:4651
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not properly aligned"
+msgstr "%pB: nu se poate completa DataDictionary[%d]: %s nu este aliniat corespunzÄƒtor"
+
+#: peXXigen.c:4682
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: size too large for the containing section"
+msgstr "%pB: nu se poate completa DataDictionary[%d]: dimensiune prea mare pentru secÈ›iunea de conÈ›inut"
+
+#: peXXigen.c:4690
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: size can't be read from %s"
+msgstr "%pB: nu se poate completa DataDictionary[%d]: dimensiunea nu poate fi cititÄƒ din %s"
+
+#, c-format
+#~ msgid "%F%pA: failed to align section\n"
+#~ msgstr "%F%pA: nu s-a putut alinia secÈ›iunea\n"
+
+#~ msgid "c' or `zcf"
+#~ msgstr "câ€œ sau â€žzcf"
+
+#~ msgid "c' or `zcd"
+#~ msgstr "câ€œ sau â€žzcd"
+
+#, c-format
+#~ msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD only\n"
+#~ msgstr "%pB(%pA+0x%v): realocarea %s faÈ›Äƒ de â€ž%sâ€� trebuie sÄƒ fie utilizatÄƒ numai Ã®n ADD\n"
+
+#, c-format
+#~ msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+#~ msgstr "%pB: nu se poate completa DataDictionary[1] deoarece .data$4 lipseÈ™te"
+
+#, c-format
+#~ msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
+#~ msgstr "%pB: nu se poate completa DataDictionary[12] deoarece .data$5 lipseÈ™te"
+
+#, c-format
+#~ msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"
+#~ msgstr "%pB: nu se poate completa DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] deoarece .idata$6 lipseÈ™te"
+
+#, c-format
+#~ msgid "%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because .idata$6 is missing"
+#~ msgstr "%pB: nu se poate completa DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] deoarece .idata$6 lipseÈ™te"
+
+#, c-format
+#~ msgid "error: %pB: big-endian R2 is not supported"
+#~ msgstr "eroare: %pB: R2 big-endian nu este acceptat"
+
+#, c-format
+#~ msgid "error: %pB: conflicting CPU architectures %d/%d"
+#~ msgstr "eroare: %pB: arhitecturi CPU aflate Ã®n conflict %d/%d"
+
+#, c-format
+#~ msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+#~ msgstr "realocare relativÄƒ a indicatorului global la adresa %#<PRIx64> atunci cÃ¢nd _gp nu este definit\n"
+
+#, 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 "nu se poate ajunge la %s (la %#<PRIx64>) de la indicatorul global (la %#<PRIx64>) deoarece decalajul (%<PRId64>) este Ã®n afara intervalului permis, de la -32678 la 32767\n"
+
+#, c-format
+#~ msgid "dynamic variable `%s' is zero size"
+#~ msgstr "variabila dinamicÄƒ â€ž%sâ€� are dimensiunea zero"
+
+#, c-format
+#~ msgid "%pB: warning: BTI turned on by -z force-bti when all inputs do not have BTI in NOTE section."
+#~ msgstr "%pB: avertisment: BTI activat prin â€ž-z force-btiâ€� atunci cÃ¢nd toate intrÄƒrile nu au BTI Ã®n secÈ›iunea NOTE."
+
+#, c-format
+#~ msgid "%pB: unhandled import type; %x"
+#~ msgstr "%pB: tip de import negestionat; %x"
+
+#, c-format
+#~ msgid "warning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%u"
+#~ msgstr "avertisment: %pB foloseÈ™te versiunea cu specificaÈ›ii privilegiate %u.%u.%u, dar rezultatul foloseÈ™te versiunea %u.%u.%u"
+
+#, c-format
+#~ msgid "not mapping: data=%lx mapped=%d\n"
+#~ msgstr "nu se cartografiazÄƒ: date=%lx cartografiate =%d\n"
+
+#, c-format
+#~ msgid "not mapping: env var not set\n"
+#~ msgstr "nu se cartografiazÄƒ: variabila env nu este definitÄƒ\n"
+
+#, c-format
+#~ msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
+#~ msgstr "eroare: %pB este compilat pentru EP9312, pe cÃ¢nd %pB este compilat pentru XScale"
+
+#, c-format
+#~ msgid "%pB: invalid size field in group section header: %#<PRIx64>"
+#~ msgstr "%pB: cÃ¢mp de dimensiune nevalid din antetul secÈ›iunii de grup: %#<PRIx64>"
+
+#, c-format
+#~ msgid "%pB: no valid group sections found"
+#~ msgstr "%pB: nu au fost gÄƒsite secÈ›iuni de grup valide"
+
+#, c-format
+#~ msgid "%pB: no group info for section '%pA'"
+#~ msgstr "%pB: nu existÄƒ informaÈ›ii de grup pentru secÈ›iunea â€ž%pAâ€�"
+
+#, c-format
+#~ msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
+#~ msgstr "%pB: secÈ›iunea SHT_GROUP [index %d] nu are secÈ›iuni SHF_GROUP"
+
+#, c-format
+#~ msgid " [Maverick float format]"
+#~ msgstr " [format float Maverick]"
+
+#, c-format
+#~ msgid "error: %pB does not use %s instructions, whereas %pB does"
+#~ msgstr "eroare: %pB nu foloseÈ™te instrucÈ›iuni %s, Ã®n timp ce %pB le foloseÈ™te"
+
+#, c-format
+#~ msgid "   Error: The length is less than the length of an EMH record\n"
+#~ msgstr "   Eroare: lungimea este mai micÄƒ decÃ¢t lungimea unei Ã®nregistrÄƒri EMH\n"
+
+#, c-format
+#~ msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
+#~ msgstr "   Eroare: lungimea Ã®nregistrÄƒrii este mai micÄƒ decÃ¢t dimensiunea unei Ã®nregistrÄƒri EMH_MHD\n"
+
+#, c-format
+#~ msgid "   Error: The length is less than the length of an EEOM record\n"
+#~ msgstr "   Eroare: lungimea este mai micÄƒ decÃ¢t lungimea unei Ã®nregistrÄƒri EEOM\n"
+
+#, c-format
+#~ msgid "%pB: unsupported relocation type name %s"
+#~ msgstr "%pB: nume de tip de realocare neacceptat %s"
+
+#~ msgid "d' and `c"
+#~ msgstr "dâ€œ È™i â€žc"
+
+#~ msgid "zvknha"
+#~ msgstr "zvknha"
+
+#~ msgid "zvknhb"
+#~ msgstr "zvknhb"
+
+#~ msgid "Deprecated %s called at %s line %d in %s\n"
+#~ msgstr "%s Ã®nvechitÄƒ apelatÄƒ la %s linia %d Ã®n %s\n"
+
+#~ msgid "Deprecated %s called\n"
+#~ msgstr "%s Ã®nvechitÄƒ apelatÄƒ\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but that section has no contents\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ExistÄƒ un tabel de export Ã®n %s, dar acea secÈ›iune nu are conÈ›inut\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but it does not fit into that section\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ExistÄƒ un tabel de export Ã®n %s, dar nu se Ã®ncadreazÄƒ Ã®n acea secÈ›iune\n"
 
-#~ msgid "v850ea architecture"
-#~ msgstr "arhitecturã v850ea"
+#~ msgid "%pB: unable to initialize compress status for section %s"
+#~ msgstr "%pB: nu se poate iniÈ›ializa starea de comprimare pentru secÈ›iunea %s"
 
-#~ msgid "%s: Section %s is too large to add hole of %ld bytes"
-#~ msgstr "%s: Secþiunea %s este prea mare pentru a adãuga o gaurã de %ld octeþi"
+#~ msgid "%pB: unable to initialize decompress status for section %s"
+#~ msgstr "%pB: nu se poate iniÈ›ializa starea de decomprimare pentru secÈ›iunea %s"
 
-#~ msgid "Error: out of memory"
-#~ msgstr "Eroare: memorie plinã"
+#~ msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+#~ msgstr "eroare: dimensiunea secÈ›iunii %pB(%pA) (%#<PRIx64> octeÈ›i) este mai mare decÃ¢t dimensiunea fiÈ™ierului (%#<PRIx64> octeÈ›i)"
 
-#~ msgid "warning: relocation against removed section; zeroing"
-#~ msgstr "avertisment: relocare pe secþiune eliminatã; se umple cu zero(zeroing)"
+#~ msgid "DWARF error: section %s is larger than 10x its filesize! (0x%lx vs 0x%lx)"
+#~ msgstr "eroare DWARF: secÈ›iunea %s este mai mare de 10 ori decÃ¢t dimensiunea fiÈ™ierului sÄƒu! (0x%lx vs 0x%lx)"
 
-#~ msgid "warning: relocation against removed section"
-#~ msgstr "avertisment: relocare pe secþiune eliminatã"
+#~ msgid "%pB:%pA: error: attempting to write into an unallocated compressed section"
+#~ msgstr "%pB:%pA: eroare: Ã®ncercare de a scrie Ã®ntr-o secÈ›iune comprimatÄƒ nealocatÄƒ"
 
-#~ msgid "local symbols in discarded section %s"
-#~ msgstr "simboluri locale în secþiunea îndepãrtatã(discarded) %s"
+#~ msgid "%F%P: Could not assign %pA to an output section. Retry without --enable-non-contiguous-regions.\n"
+#~ msgstr "%F%P: Nu s-a putut atribui %pA unei secÈ›iuni de ieÈ™ire. ReÃ®ncercaÈ›i fÄƒrÄƒ opÈ›iunea â€ž--enable-non-contiguous-regionsâ€�.\n"
 
-#~ msgid "%s: linking abicalls files with non-abicalls files"
-#~ msgstr "%s: linkuire fiºiere abicalls cu fiºiere non-abicalls"
+#, fuzzy
+#~ msgid "%F%P: failed to create BND PLT section\n"
+#~ msgstr "nu s-a putut calcula(compute) secÈ›iunea nouÄƒ APUinfo."
 
-#~ msgid "%s: ISA mismatch (-mips%d) with previous modules (-mips%d)"
-#~ msgstr "%s: nepotrivire ISA (-mips%d) cu modulele anterioare (-mips%d)"
+#, fuzzy
+#~ msgid "%pB: no core to allocate section name %s"
+#~ msgstr "%s:Nu existÄƒ nucleu(core) pentru a aloca numele de secÈ›iune %s\n"
 
-#~ msgid "%s: ISA mismatch (%d) with previous modules (%d)"
-#~ msgstr "%s: nepotrivire ISA (%d) cu modulele anterioare (%d)"
+#, fuzzy
+#~ msgid "%%X%%P: relocation %s against `%s' can not be used when making a shared object; recompile with -fPIC\n"
+#~ msgstr "%s: relocarea %s nu poate fi utilizatÄƒ cÃ¢nd se face un shared object, recompilaÈ›icu -fPIC"
 
-#~ msgid "%s: dynamic relocation against speculation fixup"
-#~ msgstr "%s: relocare dinamicã pe acceptare(fixup) speculativã"
+#, fuzzy
+#~ msgid "%s: duplicate prefixed ISA extension `%s'"
+#~ msgstr "%s: exportare de ciot(stub) duplicatÄƒ %s"
 
-#~ msgid "%s: speculation fixup against undefined weak symbol"
-#~ msgstr "%s: speculaþie acceptare(fixup) pe simbol ambiguu(weak) nedefinit"
+#, fuzzy
+#~ msgid "internal error: RL78 reloc stack overflow"
+#~ msgstr "eroare internÄƒ: eroare depÄƒÈ™ire de domeniu(out of range)"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ru.gmo ./bfd/po/ru.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ru.gmo	2020-03-03 02:13:28.000000000 +0000
+++ ./bfd/po/ru.gmo	2026-03-05 02:15:54.000000000 +0000
@@ -1,150 +1,164 @@
-Þ•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
+Þ•>0 :o
+tÌ��ì�, ,»
-»;»O»h»A‡»?É»:	¼D¼[¼1n¼$ ¼
Å¼Ó¼/ó¼#½%½A7½&y½ ½¹½Ò½ë½û½ ¾;¾[¾t¾‹¾˜¾P«¾ü¾*¿;?¿{¿F�¿6Ô¿6À:BÀ5}À,³ÀDàÀN%ÁJtÁ)¿Á=éÁ:'ÂLbÂ)¯ÂBÙÂLÃiÃÃD–ÃGÛÃ2#ÄVÄhÄ|Ä”Ä©Ä3ÈÄüÄÅ0%ÅVÅfÅvÅ+�Å+¼Å+èÅ#Æ8ÆPÆYÆuÆŒÆ¡Æ(ÀÆ%éÆ&Ç(6Ç)_Ç‰Ç ÇÀÇÝÇöÇÈ1ÈJÈeÈ{È“È§È¾È,ØÈÉÉ.ÉFÉ]ÉlÉ‚É—É±ÉÈÉ1ÝÉÊ Ê-ÊDÊ_Ê#wÊ+›Ê&ÇÊ5îÊ$Ë9ËQËkË�Ë›Ë´ËËËáË$öËÌ4ÌTÌlÌ$�Ì¦ÌºÌÏÌ<èÌ%Í4Í
CÍQÍeÍzÍ ’Í³ÍÎÍÞÍþÍÎ:ÎSÎlÎÎ*�ÎºÎÌÎ&ÞÎÏ0ÏJÏ"^Ï	�Ï‹Ï#žÏÂÏÛÏìÏÐ"ÐAÐ"UÐ#xÐ#œÐÀÐ#ÕÐ#ùÐÑ*ÑHÑfÑlÑyÑ�Ñ†Ñ£Ñ
+ÁÑÌÑÑÑ!×Ñ ùÑÒÒ$Ò<Ò\Ò|Ò�Ò!†Ò¨Ò¹ÒÀÒÆÒËÒÐÒÖÒÚÒ"ßÒÓÓ'Ó;Ó&[ÓB‚ÓÅÓåÓêÓïÓöÓüÓÔÔÔ2ÔFÔMÔaÔrÔƒÔ”Ô¥Ô¶ÔÎÔ	ÝÔ
çÔ
õÔ
+Õ
+Õ
+Õ
+$Õ
+/Õ$:Õ
+_Õ#jÕ
+ŽÕ™Õ«Õ!ÃÕåÕúÕ
+	Ö
Ö	"Ö,Ö
+=ÖHÖOÖgÖ�Ö“Ö¢Ö¹ÖÔÖãÖüÖ×× 2×(S×/|×L¬×ù×Ø+ØFØAbØ¤Ø¾ØØØòØ8Ù@ÙXÙmÙ&‡Ù®ÙÍÙ2èÙ?Ú&[Ú‚Ú(¡ÚÊÚ"ÝÚÛ* Û6KÛ{‚ÛrþÛxqÜêÜÝ7€Ý:¸ÝóÝ,Þ62Þ6iÞ$ ÞÅÞ/åÞß5*ß+`ß$Œß±ß6Ðß"à&*à6Qà=ˆà:Æà:áD<á8�á9ºáCôá:8â7sâ8«â@äâG%ã9mã,§ã0Ôã#ä)ä=Dä-‚ä6°äçä7å3;å;oå:«å(æå"æ32æ%fæ?ŒæÌæ0ìæ1ç>Oç3Žç'ÂçDêçK/è({è2¤è2×è;
+é5Fé2|é/¯éVßéS6êSŠêÞêEüê8Bë,{ë`¨ë`	ìjìˆì$¤ì(Éìcòì4Ví‹í$£íšÈícî|î/•î%Åî"ëî-ï+<ï)hï-’ï.Àï$ïï0ð6Eð(|ð$¥ð&Êð2ñð&$ñkKñ*·ñ*âñ4
ò]BòA ò?âòG"ójóO‰óbÙó8<ô,uô+¢ô)ÎôYøô0Rõ=ƒõ3Áõ2õõB(ö,kö(˜öLÁö÷4,÷)a÷$‹÷3°÷9ä÷6ø/UøD…ø&ÊøWñømIùg·ùëúUû\aûH¾ûHü8Pü%‰ü(¯ü&Øü,ÿü#,ý>PýB�ýBÒýþ'5þE]þ4£þ1Øþ9
+ÿ4Dÿ3yÿJ­ÿ(øÿ;!]0|D­/ò:"@]@žGß?'2g8šSÓ''.O,~'«6Ó 
+Y+/…4µ5êN ªoI9d3ž¾Ò<‘<ÎFJRL�OêC:	^~	4Ý	P
+oc
+>Ó
+F`Y~ºF9‚€[
3_
@“
MÔ
m"7�#Èì(&+IRWœ+ô5 Vk8"¸$Û'9(Cb!¦!È*ê/1E/w/§0×*03<di¡=BI=Œ9Ê-&2"Y.|«8Ë:F??†VÆB;`7œ(Ô>ý=<4z#¯OÓ@#LdQ±I8M+†8²2ë9:X3“,Çuô j.‹.º$é'06Bg/ª,Ú'%/,U‚CœJà8+@dJ¥*ð% %A <g 1¤  Ö (÷ l !/�!<½!<ú!+7"c","H¬"6õ"A,#An#J°#>û#J:$J…$<Ð$#
%<1%*n%.™%(È%lñ%v^&AÕ&6'N'4l'0¡'+Ò'Aþ'J@(3‹(@¿(!)#").F)Bu)F¸)4ÿ)%4*:Z*2•*3È**ü*9'+Ca+C¥+:é+T$,Jy,5Ä,4ú,@/-6p-$§-PÌ-../L./|.&¬.:Ó.+/&:/5a/'—/0¿/5ð/3&0%Z0&€0§0'Ç0=ï0#-1+Q13}1(±1@Ú1C25_2'•2 ½2&Þ243g:34¢3m×3AE4@‡4HÈ4G5KY5I¥5Lï5H<6C…6YÉ65#70Y74Š7M¿7N
81\8)Ž8)¸8/â8)9+<97h93 96Ô99:XE:[ž:Cú:6>;>u;=´;*ò;.<2L<[<&Û<-=,0=+]=‰=8¤=Ý=/ø=0(>'Y>8�>Hº>A?)E?=o?#­?@Ñ?2@+E@#q@5•@<Ë@'A%0A(VARA?ÒAFBYB3tB1¨BDÚBHCDhCK­CaùC[[Ds·Dg+Eg“EBûE‚>FTÁF=G!TG-vGb¤GbH{jHgæHgNI0¶I(çI4J5EJO{J)ËJ3õJ-)K/WKH‡KFÐK7LGOL+—LNÃL$M27M!jM.ŒM/»M+ëM)N-AN/oN^ŸNKþNFJO‘O"­OÐO5ëO"!P(DP$mP7’PBÊPA
QDOQS”Q"èQ*R+6R'bR;ŠR8ÆR'ÿR''S3OS>ƒS-ÂS5ðS,&TIST�TºT.ØT/U7U$WU|UFšU&áU!V6*V5aV)—VÁVÛV(úV#W+=W2iW œW$½W#âW.X.5X%dX2ŠX3½X)ñX\YDxYH½YDZLKZX˜ZHñZ):[*d[ �[5°[9æ[@ \+a\6�\mÄ\A2]gt]ëÜ].È^]÷^MU_3£_=×_H`<^`8›`3Ô`4a4=a0ra0£a@Ôa1bBGbLŠbA×bLc8fc+Ÿc2Ëc<þc3;dXodPÈd.e`He&©ePÐe\!fX~fp×fAHg#ŠgE®g+ôgK h.lh<›h,ØhXi,^i‹i¡iµi"Íi%ðij36j2jj�j4½j?òj@2kWsk=Ëk*	l54l%jlB�l%Ól4ùl>.m<mmCªmBîm;1n3mn^¡n)o$*o!Oo'qo8™oÒoòopp!(pJp)`p,Šp-·p$åp
+q1q_Oq-¯q3Ýqr/&r5VrVŒrIãrI-s<ws.´s.ãs5t/Ht;xt´tÇtÛt0ít/uNu'hu7�u)Èu(òu6v'Rvzv1’vÄv
Øv.ævw
!w/w%@w\fw;Ãwÿwx'x*xGxTx	mxwx‰xšx,§xÔxèxþx"y=y(Zy/ƒy/³y1ãy8z#Nz'rz2šz3Íz{;{M{T{\{q{�{ˆ{�{¤{¹{Î{à{ó{
+|!|3|Q|	p|z|˜|
­|	»|"Å|è|ú|"}9}P}Y}e}i}|}Ž} }'²}Ú} ÷}#~<~V~p~Š~¤~¾~Ø~ò~ %HC1Œ#¾,âB€XR€a«€:
�.H�7w�1¯�;á�(‚:F‚,�‚-®‚'Ü‚"ƒ-'ƒUƒ2tƒ§ƒ·ƒÌƒáƒøƒ!„$0„,U„(‚„-«„IÙ„#…5@…v…
+‹…C–…IÚ…$†6†>†F†
d†r†>„†?Ã†A‡E‡/a‡+‘‡8½‡ö‡$ˆ!1ˆ1Sˆ…ˆ¤ˆ+Ãˆïˆ‰‰
+)‰4‰BS‰–‰%¨‰Î‰à‰.þ‰--ŠG[Š3£Š×Š"öŠ‹6‹G‹X‹j‹$ƒ‹¨‹!Å‹ç‹5ù‹/Œ	AŒKŒ]ŒsŒ“Œ­ŒÉŒØŒêŒXñŒ	J�T�Y�e�t�‹�§�½�Ï�ï�Ž(Ž<ŽNŽfŽ-„Ž²ŽÄŽÖŽêŽ�'�A�P�b�t�{�!‚�¤�:À�%û�%!�G�`�Ay�;»�C÷�;‘#U‘,y‘=¦‘Cä‘=(’"f’7‰’<Á’<þ’);“5e“›“¤“v¿“*6”a”'s”H›”ä”ö”ý”•
+•(•G•'Y•�•ž•¶•Î•#æ•
+–,"–.O–,~–.«–Ú–"÷–,—.G—!v—1˜—0Ê—2û—,.˜.[˜#Š˜®˜Î˜(â˜/™!;™]™(z™#£™+Ç™ó™,š 9šZšsš“š§šÇš#æš-
+›"8›[›m›€›Œ›¡›&³›	Ú›Fä›/+œE[œ¡œ-²œJàœM+�y�™�°�Ã�-à�ž*žBž`žtž|žAˆž>Êž	ŸAŸ7]ŸB•Ÿ!ØŸAúŸ< ˜\ õ ¡#¡5¡:J¡#…¡2©¡.Ü¡#¢8/¢3h¢9œ¢Ö¢ã¢ð¢££:!£+\£#ˆ£¬£¿£Ø£ð£,¤:5¤p¤	ˆ¤d’¤÷¤6
+¥;A¥;}¥<¹¥gö¥b^¦<Á¦1þ¦(0§$Y§~§/”§+Ä§ð§¨
+&¨1¨N¨>j¨<©¨æ¨4©'7©$_©6„©»©Ì©ä©û©ª$ª<ªNª`ªrª„ªžª¹ªËªÜªôª`«2t«§«'Á«Lé«46¬7k¬0£¬'Ô¬ü¬­1­C­R­-l­+š­+Æ­*ò­	®	'®
+1®
+<®G®[®g®t®‰®¤®³®È®×®1Ü®¯/.¯^¯}¯ Ž¯'¯¯'×¯&ÿ¯0&°W°u°Š°“°±°9È°-±10±b±,w±a¤±2²49²)n²C˜²EÜ²Y"³Y|³;Ö³;´MN´/œ´5Ì´:µ5=µ4sµ9¨µ7âµ9¶DT¶G™¶Dá¶E&·Cl·-°·,Þ·0¸4<¸>q¸;°¸8ì¸6%¹;\¹3˜¹%Ì¹1ò¹!$ºVFº9�º\×ºA4»1v»?¨»1è»:¼7U¼>�¼$Ì¼Eñ¼u7½q­½I¾i¾4†¾O»¾Z¿/f¿O–¿Pæ¿37À kÀ?ŒÀ:ÌÀ&Á
+.Á9ÁMÁ0ZÁ%‹Á"±Á%ÔÁ0úÁ!+ÂMÂfÂ�Â–Â£ÂS²ÂOÃVÃ,uÃ7¢ÃÚÃ
ÜÃêÃ1ùÃ+Ä?ÄRÄeÄC‚ÄOÆÄ,Å6CÅzÅ$šÅ_¿Å"Æ(BÆAkÆ­Æ,ËÆ2øÆH+ÇtÇ„Ç
+•Ç" Ç
+ÃÇ$ÎÇóÇÈ&È¼<È¹ùÈ³É/ÅÉõÉÊ.Ê*NÊLyÊ2ÆÊ-ùÊ)'Ë"QËtË‡ËœË±Ë2ÀËóË0ûË,Ì%GÌmÌ9zÌ´Ì<ÆÌ=Í3AÍ5uÍ2«Í7ÞÍBÎLYÎ¦Î·ÎÑÎÙÎáÎýÎHÏMÏ4PÏ&…Ï¬ÏµÏ
+ÌÏ×Ï2óÏ-&ÐOTÐ¤ÐÃÐ"ÈÐ*ëÐ%Ñ<ÑDÑCcÑ¤§ÑLÒYÒ sÒL”ÒáÒêÒþÒÓ)Ó?ÓVÓsÓ„Ó–Ó¢Ó¯ÓÃÓEËÓ*ÔN<Ô[‹ÔçÔAëÔ-ÕLÕ,dÕ‘Õ®Õ6ÆÕýÕ Ö8>Ö+wÖ£ÖµÖÅÖÍÖ'âÖ+
+×+6×+b×*Ž×*¹×)ä×(Ø7ØOØcØwØ‹ØžØ
±Ø¿ØIÙØ#Ù 4ÙUÙDtÙP¹Ù
+ÚÚ27Ú$jÚ�Ú¯Ú5ÂÚøÚ!Û5Û<Û2DÛFwÛJ¾Û/	ÜF9Ü€Ü"’ÜµÜÅÜMÔÜ9"Ý;\Ý7˜ÝÐÝèÝÞÞ,'Þ$TÞJyÞ)ÄÞ(îÞ%ß(=ßfß
+‚ß,�ßºß)Ôßþßà6àNàVànà)†à°à
Æà#Ôàøà'á8áIá_áyá–á°á#¼á%àáâ#â:âLâ7câ›â·â%Ðâöâã%ã7ãJã^ãrãˆãJžãJéãJ4äIä:Éäå-#å;Qå+�å@¹å<úå47æ6læ-£æ8Ñæ5
+ç5@ç8vç.¯ç>ÞçIèhgèyÐè>JéN‰éIØéd"êY‡ê0áê;ë8NëF‡ë/Îë5þë&4ì.[ì-Šì.¸ì0çì3í<Lí!‰í«í!Äí)æíEîZVîV±î`ïGiïZ±ïUð.bð,‘ðh¾ðj'ñE’ñ0Øñ6	òk@òE¬òòò&óQ7óS‰óEÝó\#ôH€ôHÉô#õ<6õ<sõe°õQö2hö/›ö/Ëö4ûö=0÷9n÷0¨÷7Ù÷%ø'7ø=_ø6�ø@Ôøù25ùhù,lù
™ù
§ù
µù
Ãù!Ñù:óù
.ú"<ú_ú
nú)|ú)¦úÐúåú+ùú%û4û9û>ûCûHûOûbûiû=oû9­û
çý õý>þDUþ’šþ„-ÿu²ÿ0(7YL‘ZÞ9:IE„ÊÌ`à.Ap%�+µá$ó&%?3e#™
½(Ë˜ô8�vÆG=(…®G.]vHÔDSbz¶Œ1~¾T=	„’	p
+Šˆ
+Lt`ˆÕ^${z ˜
“´
Hf5z°)Ç>ñ&0WMrÀÒ!âDDIDŽ-Ó$&%/4U!ŠD¬@ñ<2CoB³Iö%@f†*£7Î(/,O!|%ž'Ä ì 
8.g-w!¥+Çó%DcH›äú$*,*WE‚JÈCSW«+Ê&ö);e€™±@Í6.e}7˜Ðë"
+<-jy
ˆ–³+ÒBþ#Ae/�)±*Û#%Ii9€ºÌ6Þ<)f?zºË#Þ1(J;s¯-Ã#ñ# 9 #X #|   ,´ .á !!.!6!1;!@m!
+®!¹!¾!:Ä!Hÿ!H"M",R"(".¨"×"Ü"Pá"2#O#V#\#a#f#l#p#Bu#¸#(½#æ#&$M($lv$(ã$%%%%#%(%A%)H%1r%¤%1«%Ý%ó%	&&5&&K&r&	Ž&
˜&
¦&
+´&
+¿&
+Ê&
+Õ&
+à&aë&
+M'~X'
+×'â'5ô'N*(.y(¨(Ç(Ù(ð("ü()3).:)2i)œ)®)AË)3
*A*A_*
¡*¯*A¶*:ø*O3+Xƒ+…Ü+b,t,Sˆ,#Ü,A-/B-(r-"›-¾-8Ü-&.+<..h.U—.Rí.@/J[/H¦/Yï/VI09 0Ú0-ñ0:1,Z1s‡1Üû1ÁØ2¼š3'W4ý4X}5cÖ5:6IU6[Ÿ6Wû64S7'ˆ7e°7!8r88`«8=9KJ9l–9@:ED:MŠ:TØ:O-;Q};_Ï;N/<P~<^Ï<P.=N=NÎ=Ž>¯¬>—\?„ô?4y@*®@EÙ@dAW„AgÜA>DBwƒB^ûBmZCoÈCN8D>‡DTÆDJE…fEAìE•.FMÄF[G]nG=ÌG
+H†ŠHHIdZId¿I†$JY«JsKbyK†ÜK}cL¥áLA‡MšÉMydNEÞN’$O’·OJPChPL¬PNùP»HQ_R+dRB�RVÓR**T*UTF€T<ÇT:UT?UB”U@×UDVW]V<µVMòVO@WW�W6èWGXKgXL³XêYGëYG3Z]{ZáÙZf»[j"\�\!
]®/]³Þ]i’^Rü^ZO_>ª_´é_Už`xô`SmaQÁaubI‰bLÓbw c3˜csÌc[@dMœdpêd[[eI·eFfrHf?»f»ûfÎ·gÈ†hàOi‹0kÁ¼kž~lžmY¼m>nDUn2šn7Ín'oy-o~§oz&p3¡pZÕp{0qt¬qj!rkŒrhørwasÜÙsš¶tƒQuNÕuU$vœzvYwgqw}Ùw…WxœÝx�zyXzndzŸÓzSs{RÇ{^|Py|sÊ|@>}œ}Q~gn~nÖ~”EGÚ’"�{µ�a1‚o“‚m„mq„fß„€F…‚Ç……J†uÐ†žF‡Nå‡›4ˆàÐˆ[±‰i
Š«wŠç#‹}ŒÝ‰Œ§g�PŽb`Ž‚ÃŽÅF�N�Y[�$µ�GÚ�G"‘_j‘|Ê‘SG’S›’2ï’)"“eL“H²“?û“H;”l„”rñ”;d•; •EÜ•V"–Cy–T½–f—Vy—QÐ—V"˜Iy˜�Ã˜uT™]Ê™u(šižšP›8Y›O’›fâ›2Iœn|œdëœ‡P�xØ�¡QžpóždŸ{äŸF` j§ Œ¡^Ÿ¡;þ¡‰:¢xÄ¢m=£´«£”`¤Mõ¤NC¥\’¥Oï¥l?¦m¬¦c§i~§è§Fë¨\2©\�©Dì©G1ªzyªqôªEf«Y¬«c¬Uj¬LÀ¬C
­xQ­ŒÊ­hW®uÀ®Š6¯lÁ¯Q.°^€°€ß°h`±KÉ±_²áu²fW³�¾³�O´Wà´'8µO`µ‘°µbB¶œ¥¶œB·®ß·}Ž¸Ÿ¹¯¬¹q\º>Îºq
»S»wÓ»?K¼Â‹¼ÌN½‚¾nž¾:
¿€H¿ZÉ¿H$À{mÀ™éÀpƒÁ]ôÁ4RÂP‡ÂuØÂNÃ¦ÎÃZuÄAÐÄtÅ_‡Å\çÅODÆ�”Æ£Ç£ºÇ‘^È§ðÈ¨˜ÉWAÊV™ÊrðÊhcËBÌË›Ì[«ÌfÍVnÍcÅÍ‚)Î[¬ÎZÏacÏ@ÅÏVÐm]ÐQËÐ?ÑN]Ñ;¬Ñ_èÑcHÒ@¬Ò_íÒuMÓ;ÃÓÿÓ‚ÔWÕEZÕB ÕGãÕx+Öç¤ÖoŒ×˜ü×q•ØoÙ{wÙzóÙ~nÚoíÚ‘]ÛuïÛ…eÜ¶ëÜi¢Ý\ÞUiÞ«¿Þ«kßnàN†àKÕàW!áRyáZÌád'âOŒâ�ÜâUmãÍÃãÌ‘ä˜^å©÷åq¡æRç{fçfâçUIèÅŸèCeé[©éZêR`êD³ê\øê&UëE|ëlÂëS/ìzƒì~þìl}í=êí£(îBÌîmïf}ïCäï](ðm†ð€ôðQuñ9ÇñEòzGòpÂò„3óA¸ójúóZeôzÀôy;õiµõ�ö¸­ö¬f÷åø¹ùø¹³ùqmúùßúªÙû„ü=ýkBý¯®ý¹^þÒÿ¶ëÿ¾¢ZaF¼gcklÏJ<X‡TàD5tzpïZ`�»]=–›:2am8ÏrQ{JÍM	\f	rÃ	³6
+qê
+W\4´;é3%mY4ÇUü8R
Z‹
sæ
uZ}Ð–N=åH#KlI¸t~wGöL>Z‹|æScS·[˜g5?6YvZÐ<+>h,§fÔJ;;†VÂ_Ry@Ì?
KM6™FÐ\CtG¸FcGa«I
ZW[²B¸Q›
+˜¦œ?´Ü¶‘ ˜H!Gá!B)"=l"hª"o#qƒ#bõ#iX$ÜÂ$~Ÿ%Ö&îõ&_ä( D)¡å)^‡*}æ*žd+‹,}�,}
-k‹-Ž÷-}†.}/”‚/W0no0yÞ0nX1ƒÇ1RK2rž2z3mŒ3}ú3¾x4¥75^Ý5Ê<6i7ªq7œ8˜¹8ÔR9|':G¤:Œì:by;oÜ;_L<e¬<`=‚s=Rö=(I>#r>–>N±>Q?8R?J‹?IÖ?9 @SZ@Q®@\A™]Au÷ATmBpÂBR3C}†C[DR`DŠ³Dv>E“µE›IF~åFKdG¢°GVSHPªH<ûH?8ILxIBÅIJ(J CJWdJ%¼JIâJP,KA}KP¿KLa/Lª‘LH<MN…MCÔMeNT~N�ÓNrcOrÖOUIP]ŸP]ýPx[QYÔQy.R&¨RÏR%ïReSg{S1ãSPTtfTBÛT7UYVUE°U%öUKV,hV•VD­VòV
W$W%=W¼cW’ X$³X7ØXY7YKY>hY§Y¾YÝYùY,Z@Z)YZ5ƒZA¹Z7ûZH3[X|[[Õ[^1\k�\Mü\QJ]\œ]nù]h^�^__('_P_i_|_�_«_È_å_ÿ_@`@[`3œ`4Ð`;aAa5Xa.Ža½aØaIïa9bNKb?šb8Úbc"$cGc:Kc†c˜cªcD¼c6d?8dExd.¾d!íd!e!1e!Se!ue!—e3¹e@íe8.figfjÑf8<g[ugvÑgÀHh£	ix­ij&j€‘jnk•�kLl{dldàlWEmM�mDëmR0nHƒnQÌno4<o0qo4¢o×o/÷o5'p9]p0—p:Èpˆq,ŒqL¹q#r *rlKr›¸rTsfsns'vs žs¿s\Ñs].t�ŒtBup]uXÎuY'v6�vc¸v^w|{wYøw]Rxz°xU+y�yŸy
+´yK¿y~zŠz5œzÒz4äzg{R�{ƒÔ{hX|;Á|1ý|@/}p}‰}¢}7´})ì}8~6O~†~W˜~ð~ #'5E]"£=Æ €%€7€“>€Ò€Þ€õ€�"!�2D�w�—�@±�#ò�;‚R‚p‚"Œ‚4¯‚[ä‚,@ƒmƒƒƒ,¡ƒ:Îƒ\	„f„�„“„¥„¬„E³„%ù„E…0e…1–…CÈ…+†x8†y±†š+‡8Æ‡Tÿ‡8Tˆz�ˆ€‰X‰‰Wâ‰Z:Ši•ŠiÿŠLi‹b¶‹Œ'8ŒÙ`ŒE:�€�=’�†Ð�WŽiŽpŽwŽ!ŽŽb°Ž�C%�-i�#—�)»�"å�4�3=�[q�OÍ�[‘Oy‘?É‘B	’[L’O¨’Iø’bB“o¥“c”[y”OÕ”B%•Bh•"«•MÎ•P–3m–5¡–R×–F*—Vq—4È—Iý—7G˜>˜H¾˜$™C,™9p™Jª™Võ™BLš�š'¡š9Éš1›%5›T[›
+°›a»›bœ‹€œ�?+�Žk��ú�3Šž)¾ž1èžDŸA_Ÿ¡ŸQªŸIüŸ,F s ˆ r¡ e¡z¡xŒ¡X¢~^¢QÝ¢{/£C«£ï£+¥4¥O¥ j¥p‹¥Eü¥eB¦T¨¦Ný¦NL§J›§Oæ§6¨G¨X¨
+p¨?{¨n»¨S*©W~©#Ö©(ú©#ª#;ªf_ªkÆª22«)e«¤�«!4¬VV¬i­¬i­K�­ÉÍ­ž—®g6¯Jž¯Aé¯)+°U°Ts°kÈ°b4±I—±á±Nò±>A²›€²•³F²³’ù³Œ´DµkQµ+½µ>éµ1(¶+Z¶>†¶8Å¶,þ¶,+·,X·,…·@²·:ó·,.¸+[¸8‡¸KÀ¸£¹F°¹/÷¹M'ºŽuºa»_f»UÆ»M¼?j¼<ª¼)ç¼½//½e_½cÅ½c)¾K�¾
+Ù¾
+ä¾ï¾û¾¿/¿<¿%O¿4u¿ª¿¹¿Î¿Ý¿8æ¿=ÀW]À.µÀäÀ4ÁF6Áb}ÁCàÁX$Â&}Â¤Â»Â1ÄÂ2öÂU)ÃKÃMËÃ Ä^:Äë™ÄL…ÅaÒÅ?4Æ€tÆ¡õÆï—ÇÌ‡È„TÉ€ÙÉÔZÊu/Ëd¥Ë}
+Ì‚ˆÌcÍŒoÍfüÍŒcÎŒðÎ }Ï”Ð�³ÐœQÑcîÑbRÒXµÒ\ÓukÓ�áÓkcÔfÏÔe6Õ_œÕEüÕOBÖM’ÖŸàÖk€×Ùì×gÆØi.Ù`˜ÙgùÙkaÚhÍÚn6ÛY¥Û“ÿÛ¬“Ü²@Ý~óÝ>rÞj±Þ�ß¡¬ßBNà†‘à€áX™á@òá`3â[”âJðâ;ãRãlãZãFÚãO!äHqäoºäD*å0oå/ å3Ðå&æ+æ“Aæ¶ÕæWŒçgäç{LèÈèÊèæèKéOécévé@‰éuÊé�@êbÞê|Aë>¾ëHýë·FìTþì[Sí€¯íF0îiwî^áî‚@ï!Ãï"åïð7ðSðEgð­ðCËð6ñHFñK�ò!ÛóRýó:Pô4‹ôPÀô]õ�oõOöNPöeŸö[÷a÷{÷)�÷!º÷ºÜ÷—øi¦øNùe_ùÅùdØù=úm]ú{ËúhGûŽ°ûp?üh°üsý‚�ý#þ54þjþrþ1zþ¬þ“¹þMÿWTÿF¬ÿóÿ2:#Ruviì¨VGÿG>_fžX^1sj¥$58OUˆÈÞ§'»(ã))6*`%‹!±"Óö,b4P—“èÁ|	>
+mE
+M³
+2J4,;¬hèTQW¦mþZl
&Ç
)î
 ==A{A½Aÿ@A@‚?Ã>3BvŒ ´ÇÚ1ò”$¹,Ð;ýŒ9nÆ"57X^�9ïF)(p`™=úX8‘
ž`¬a
zoqêo\.Ì?û;K€ZaÛ}=�»;=7y0±â\üEY„Ÿj$S�?ã`#2„·QÒ2$TW=¬1ê6S+h-”CÂ3 #: Y^ 5¸ Mî 0<!5m!9£!8Ý!2"I"3b"Q–"=è"+&#7R#7Š#�Â#>S$?’$7Ò$%
+%0%O%k%ˆ%¦%Ä%ä%¦&—«&“C'“×'€k()ì(K)\b)W¿)m*™…*\+q|+dî+oS,`Ã,b$-‚‡-m
+.Œx.¦/ñ¬/ž0Œ»1«H2¦ô2ß›3¶{4e25n˜5f6�n6rÿ6©r7Y8hv8^ß8_>9až9d:he:PÎ:B;Tb;P·;�<˜™<³2=�æ=y„>æþ>Üå?hÂ@f+A°’AÌCBuCz†CoDÉqD�;EQÌEaFž€FÉGšéGÏ„H¬TI¬JS®JuKuxKÐîKÚ¿LhšMdNXhN~ÁN}@O^¾OdPq‚P`ôP`UQ¨¶Q‡_R¼çRD¤SYéSCTJHT“T§T»TÊT)ÙTZU^U*mU˜U­U1ÁU1óU%V@V3UV‰VžV£V¨V­V²V¹VÒVÙVqßVjÖ¼ÂW8åì‰³-âtÏ›•áÁ*˜lUCÔVÚõè_Tˆù*Ê�­�KÊ¬D~<Ýt
+¼…€Ö¾‹ ¤ËŸ¤æ'™Ã®Ñ#ˆ&dŒê´œt%"o*ùsUò±Æl¨„ñu¹
/è;øÒçoÙæz·çCôë ú�#o%Ö&é;g!î±
ówÙ±’yRñH1 ¢<¡Y…�ŽrkÜèÓ«Š‘Êþÿ‰„á–ûÝ	[Žq„fsæ ®ˆsØ_•ÎÌ"žÕÉÅä€œn çùÔYC¿4ÃiW"²�5àß*¥íæö2?U–ƒ{k9QšPEÚµÑ·D:Å¶—@ùhê9´2·Or‡C¶(íy3™þ|>ö5P	lZÇ0Ð®rC¡œ‹càZöh6¥�Zû¥ïÃm¤ÑêwOk‚…¦™‘y›Ó0ï=³wáˆI’câ�Ý»¢çI°žäË}•U»M”»ÿ!×É@S657=�ÅWy¶Š(
+÷¢Ê^²—:r%Sô¦Šñ[¥¦§š“‡ß;ùŒñ©ôëãÕ[“«Ïý¨Œs4Ížìñ³ÆRO€Ä¬%mi×(í\v'uF¿<‹eÀO3q`alHš˜×ê�ÃÆãÓ§3Å9ëÍNí6ªˆ'Hœî\z®ï½Ve÷S4"°9a¡h$KÇ_ôÔA6š‚Ó£•vI8EØ#5?ó0G°-�Ü­Q/Æ«�¯Q B%[šYÉë/]!8\Ãð+÷'9§�
+A
óÍÁ^vzæBüTÕ~ÎÏÔWNL{5V,~$.E²7Vx/Þ³!±Úx
+Òú?<Ûû}Þß[oœ(Ç¥s6‰m¯Ñ G†náòÎnÚïGå+õ°ƒJËTC|Hd] `AµÇV”-µÕiï0ËG‚
îÓ8Í²@›p¸p&å–sÙ.-=¯f‡!|Ê©R"Ô¸îz¨Á£ŒçIàmÀÒ™R¼ŸðdÿgÚj>	u]$ðªŸ€ìÀÿ¯
+ú.ÛNµÛ¼‘DÄ	f­=uM3q™n5óºù­wx�
+Y.[j�õ1�h` ZÞ¾DöçÙbYKeÉBî¨òQ¨!ÏäP}àûùaÈx}ß,òLìgý¸ÒÁ6Šb�¡ÔãN\ü9÷Ä&Àée½ÔØD¦¾åé�Ü´´”á˜Io+ˆJÈÍ÷Ï‡Y�uOK©/m“¸|VM�§®Ù'`ë4`:˜môB!Ÿ±Û”Ü°‚;£52#fàO+,$1¤Ö©iTUî¡F)x¼â¨v'üÜ
Ä²ú¨;»�Õtÿ^üï|>=a%Jåê70l’=GŽ„ÕT9žŽ+>)>8ì”Ðvâ—?�±Z¿?nÂŸ­H¶x¼‚Fcó*.ÎYå<^-db®Ï	Ûã>×Ñ†õ¢Q]	áÌ¶Îz¹Œñ_L³{_N!þ¤ÌÈø.Ÿ{:<4—ÐÙ•fâvd>…ô–@ûÃXÒ#2#BQ¾XuÆà­[�†žuÒ%4�>õD£;BF“AW¬ñõbJNÎ�^'’Ð�ú82¬�Ð¦4bÙ»;…oX„6X�¬ƒ gÅ#{ûays&mÌÂR&w<SýÛ
+ø®L„]½‡^¾{¿KF8:|bš7
e¸†)JÍ‰÷G€7È7äŽU„Xëˆ´@€äy˜¹Éöhìõ+tD�È~†_˜i1+øÞºÝ¿è(zè©ÿ‹úUÈúüÞrÖž57zSk‘1Æ¾÷¥8)d](äé°þºI¼,qÞðŒ-š]EÄ
,ªM‘e×iËý‡0K:¬�XlÌµ¶ûøò×ìƒgô Š¾‚ëkp¹ÇM2¹$Ì)"‰Cf·\œêÇÉ,}–ƒ–åóLé›LÁLâÌÃ�HpI´�¤3&:f ð}"™3Qµeó
+²Ñ½G“¯*¿—FÐéoýt%&Ž·‰d$×q-ÜÂÀØ)ªŽqî•ß;ÊÝ¢pZÄV½Rh“
+ƒ`€$º?Sj‹p«<£~Á›)§”aJ ¤í°áxíAtSüÂ9ËÓµ´í\ªWJ¯,ã…P{Ó	}6/TgØ•‡OÈ™BâÛ$›ø³§RF“æ�cŠ‚1¹*øàb³ÒÄl”¬c¦cA˜c?’£þã¢­œ–ðr‹½»MZèêAj†#pÆq›é¶—Ð‰ÎË‹ü‘k—ä'�,Ÿ~Šþ·/ÊØ†_P`n§~ÇÀ¡jÝj«º@¯«(Ú/WHTÚÍi|Þ½’aÀ©rƒwÏÿÕ·ý¸�:"^±E\E0’3Ø*²þÅÖkª7ðÅ-¥yòžÝ1ãï»ç(ß ‘ö.	2©0ÂEPÖN2)Üè¿¹Âgwh£ªß=v…nÑ¡M¢ö4�Pæ¸ÁÉ=òŒKºý.º« X13@¦QWXW_WfWl¢€¢œ¢°¢Ä¢Ø¢ì¢££(£<£P£d£x£Œ£ £´£È£Ü£ð£¤ ¤4¤H¤\¤p¤„¤˜¤¬¤À¤Ü¤ð¤¥ ¥D¥`¥t¥ˆ¥œ¥°¥Ì¥à¥ô¥¦$¦8¦L¦`¦t¦ˆ¦œ¦°¦Ä¦Ø¦ì¦§$§@§T§h§|§�§¤§¸§Ì§è§¨ ¨4¨H¨\¨p¨„¨˜¨¬¨À¨Ô¨è¨ü¨©$©8©L©`©t©ˆ©œ©¸©Ô©è©ü©ª,ª@ªTªhª|ª�ª¤ª¸ªÌªèª««4«P«l«ˆ«œ«°«Ì«à«ü«¬,¬@¬\¬p¬„¬˜¬¬¬À¬Ô¬è¬ü¬­,­@­\­p­Œ­ ­´­È­Ü­ð­®®,®@®T®h®”®°®Ì®à®ü®¯$¯8¯L¯`¯t¯ˆ¯œ¯°¯Ä¯Ø¯ì¯°°(°<°P°d°€°”°¨°¼°Ð°ä°ø°± ±<±P±d±€±¤±À±Ô±è±ü±²,²@²T²h²„²˜²¬²À²Ô²è²ü²³$³8³L³h³„³ ³´³È³Ü³ð³´´,´H´d´€´”´¨´¼´Ð´ä´ø´µ µ4µHµ\µpµ„µ˜µ¬µÀµÔµèµüµ¶4¶H¶\¶x¶Œ¶ ¶´¶È¶Ü¶ð¶··,·H·d·x·”·°·Ì·è·ü·¸,¸@¸\¸x¸Œ¸ ¸¼¸Ð¸ä¸ø¸¹ ¹4¹H¹\¹x¹Œ¹ ¹¼¹Ð¹ì¹ºº(º<ºPºdºxºŒº º´ºÈºôº»mWÿÿÿÿ�Wÿÿÿÿ±W"ÿÿÿÿçW ÿÿÿÿ!X ÿÿÿÿ[Xÿÿÿÿ‘X ÿÿÿÿ¸X5ÿÿÿÿôX%ÿÿÿÿ Y)ÿÿÿÿPY(ÿÿÿÿY/ÿÿÿÿµYÿÿÿÿÑY'ÿÿÿÿÿYÿÿÿÿ7Z-ÿÿÿÿeZÿÿÿÿ‚Z7ÿÿÿÿ»ZÿÿÿÿæZ ÿÿÿÿ[%ÿÿÿÿK[ÿÿÿÿ[*ÿÿÿÿª[.ÿÿÿÿÚ[)1ÿÿÿÿ4\%ÿÿÿÿZ\9ÿÿÿÿ”\
+2ÿÿÿÿÐ\"ÿÿÿÿ]ÿÿÿÿ+]9ÿÿÿÿ{]%ÿÿÿÿ®]
+Hÿÿÿÿ^
+/ÿÿÿÿY^)ÿÿÿÿš^
+6ÿÿÿÿÚ^
+>ÿÿÿÿ"_
+0ÿÿÿÿ\_
+Fÿÿÿÿ¬_
+ÿÿÿÿî_
++ÿÿÿÿ#`
+ÿÿÿÿK`
+"ÿÿÿÿw`@)ÿÿÿÿæ`
+/ÿÿÿÿa
+ ÿÿÿÿIa-ÿÿÿÿ�a6ÿÿÿÿÜa6ÿÿÿÿ'b
+7ÿÿÿÿhb
+?ÿÿÿÿ±b
+Aÿÿÿÿüb
+AÿÿÿÿGc
+ÿÿÿÿlcÿÿÿÿžc+ÿÿÿÿÖc-ÿÿÿÿd3ÿÿÿÿDd
+-ÿÿÿÿ{d(ÿÿÿÿ·d
+-ÿÿÿÿîdÿÿÿÿ e6ÿÿÿÿ]e>ÿÿÿÿ¢e#ÿÿÿÿÍeÿÿÿÿ	fÿÿÿÿEf
+2ÿÿÿÿ�f
+.ÿÿÿÿ¹fFÿÿÿÿg
+2ÿÿÿÿ<g
+2ÿÿÿÿxg
+2ÿÿÿÿ´g
+2ÿÿÿÿðg
+2ÿÿÿÿ,h
+2ÿÿÿÿhhFÿÿÿÿ¯h
+9ÿÿÿÿòh
+7ÿÿÿÿ3i
+9ÿÿÿÿviFÿÿÿÿ½iFÿÿÿÿj	2ÿÿÿÿ?j+ÿÿÿÿqj.ÿÿÿÿ¦j+ÿÿÿÿØj-ÿÿÿÿ
k0ÿÿÿÿ[k"ÿÿÿÿšk!ÿÿÿÿÍk
+*ÿÿÿÿl
+AÿÿÿÿNl
+dÿÿÿÿ¼l
+$ÿÿÿÿêl1ÿÿÿÿ&m1ÿÿÿÿXm
+ÿÿÿÿum5ÿÿÿÿÃm&ÿÿÿÿ÷m=ÿÿÿÿGn&ÿÿÿÿ›n+ÿÿÿÿÚnÿÿÿÿo]ÿÿÿÿ{o!5ÿÿÿÿÒo
+3	ÿÿÿÿpÿÿÿÿJpKÿÿÿÿ–p<"ÿÿÿÿôp
+ÿÿÿÿq$ÿÿÿÿWqÿÿÿÿŸq;ÿÿÿÿrAÿÿÿÿgrÿÿÿÿ�r2ÿÿÿÿÊrÿÿÿÿûrÿÿÿÿ-s=ÿÿÿÿ|sIÿÿÿÿßs(ÿÿÿÿtIÿÿÿÿ€t!ÿÿÿÿ¶t!ÿÿÿÿætÿÿÿÿu+ÿÿÿÿDu=ÿÿÿÿ‚u+ ÿÿÿÿÏu5ÿÿÿÿv@ÿÿÿÿJv
+%ÿÿÿÿyv
+%ÿÿÿÿ¨v7ÿÿÿÿàv-ÿÿÿÿwÿÿÿÿ+w<ÿÿÿÿvw-ÿÿÿÿ³w(�ÿÿÿÿhx
+.ÿÿÿÿ x
ÿÿÿÿ¯x %ÿÿÿÿôx
+"	ÿÿÿÿGyB#$ÿÿÿÿÐy#&ÿÿÿÿz=ÿÿÿÿ^z=ÿÿÿÿ¡z46ÿÿÿÿ{5-ÿÿÿÿm{H<ÿÿÿÿñ{65ÿÿÿÿ\|Tÿÿÿÿ·|xÿÿÿÿ6}kÿÿÿÿ¨}jÿÿÿÿ~Vÿÿÿÿv~pÿÿÿÿí~Hÿÿÿÿ<^ÿÿÿÿ¡76ÿÿÿÿ€Sÿÿÿÿb€Gÿÿÿÿª€^ÿÿÿÿ
+�Bÿÿÿÿg�6ÿÿÿÿ¨�+6ÿÿÿÿ‚6+ÿÿÿÿl‚]ÿÿÿÿÊ‚cÿÿÿÿ/ƒZQÿÿÿÿÚƒjÿÿÿÿE„sÿÿÿÿ¹„
+eÿÿÿÿ(…Cÿÿÿÿ‰…!ÿÿÿÿÄ…v*ÿÿÿÿd†mÿÿÿÿÒ†
+ƒÿÿÿÿa‡
+BDÿÿÿÿó‡Uÿÿÿÿiˆ
+UÿÿÿÿÈˆ
+oÿÿÿÿA‰
+Rÿÿÿÿ�‰
+rÿÿÿÿŠ
+C/ÿÿÿÿ•Š
+9ÿÿÿÿØŠ
+:ÿÿÿÿ‹
+?ÿÿÿÿe‹‚aÿÿÿÿNŒ
+Nÿÿÿÿ¦Œ
+5ÿÿÿÿåŒ6\ÿÿÿÿw�_(ÿÿÿÿþ�_ÿÿÿÿwŽ
+cÿÿÿÿäŽ
+…ÿÿÿÿs�
+VÿÿÿÿÓ�
+Vÿÿÿÿ3�
+:ÿÿÿÿw�? ÿÿÿÿÛ�nÿÿÿÿ^‘rÿÿÿÿå‘†ÿÿÿÿl’
+Iÿÿÿÿ¿’Uÿÿÿÿ'“
+Vÿÿÿÿ‡“73ÿÿÿÿñ“yÿÿÿÿq” ÿÿÿÿ•Jÿÿÿÿk•5#ÿÿÿÿÊ•5#ÿÿÿÿ)–
+�ÿÿÿÿÀ–
+Kÿÿÿÿ—sÿÿÿÿ‰—
+Qÿÿÿÿä—
+Qÿÿÿÿ?˜
+Qÿÿÿÿš˜
+Qÿÿÿÿõ˜
+QÿÿÿÿP™
+Qÿÿÿÿ«™sÿÿÿÿš
+Xÿÿÿÿ�š
+Vÿÿÿÿáš
+XÿÿÿÿC›sÿÿÿÿ·›sÿÿÿÿ+œ	Sÿÿÿÿ‡œmÿÿÿÿûœqÿÿÿÿs�oÿÿÿÿé�ƒÿÿÿÿtžB\ÿÿÿÿŸB<ÿÿÿÿ‘ŸAÿÿÿÿëŸ	TÿÿÿÿJ 
+ŠÿÿÿÿÞ 
+¼ÿÿÿÿ¤¡
+Pÿÿÿÿþ¡kÿÿÿÿt¢kÿÿÿÿà¢
+3ÿÿÿÿ£BdÿÿÿÿÃ£Rÿÿÿÿ#¤pÿÿÿÿ¯¤S1ÿÿÿÿC¥Xÿÿÿÿ±¥"Eÿÿÿÿ¦Õÿÿÿÿ§0rÿÿÿÿ¨§
+X	ÿÿÿÿ¨I ÿÿÿÿ�¨Šÿÿÿÿ©nÿÿÿÿ“©
+2ÿÿÿÿì©#GÿÿÿÿVªX$ÿÿÿÿíª7~ÿÿÿÿ¾«=‡ÿÿÿÿ‚¬0ÿÿÿÿ½¬Zÿÿÿÿ*­4@ÿÿÿÿž­73ÿÿÿÿ®~ÿÿÿÿ¡®4¬ÿÿÿÿ�¯&0ÿÿÿÿ×¯G¬ÿÿÿÿÊ°"0ÿÿÿÿ±0ÿÿÿÿ^±0ÿÿÿÿ­±Nÿÿÿÿý±iÿÿÿÿh²R-ÿÿÿÿé²~ÿÿÿÿh³‡ÿÿÿÿô³
+DÿÿÿÿB´
+Hÿÿÿÿ”´Qÿÿÿÿæ´Lÿÿÿÿ3µ ÿÿÿÿbµr'ÿÿÿÿûµOÿÿÿÿi¶Xÿÿÿÿà·
+Mÿÿÿÿ7¸Lÿÿÿÿ…¸,Bÿÿÿÿó¸
+0<ÿÿÿÿ�¹i<CÿÿÿÿiºBOÿÿÿÿ	    TLS: %pA	<corrupt: 0x%08lx>	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 Table 			Ordinal Table 				[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>
 	[Name Pointer/Ordinal] Table	%08lx
-	code-base %08lx toc (loadable/actual) %08lx/%08lx
-	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:  Hint/Ord Member-Name Bound-To
+	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:     Ordinal  Hint  Member-Name  Bound-To
 
 
 	DLL Name: %.*s
@@ -174,10 +188,6 @@ Exec Auxiliary Header
 
 Export Address Table -- Ordinal Base %ld
 
-Function descriptor located at the start address: %04lx
-
-No reldata section! Function descriptor not decoded.
-
 Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Program Header:
@@ -204,12 +214,10 @@ There is a first thunk, but the section
 
 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 contents cannot be read
 
 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
@@ -226,7 +234,7 @@ Virtual Address: %08lx Chunk size %ld (0
 
 WARNING: Extra data in .rsrc section - it will be ignored by Windows:
 
-[Ordinal/Name Pointer] Table
+[Ordinal/Name Pointer] Table -- Ordinal Base %ld
 
 ppcboot header:
         pc: 0x%08x
@@ -245,16 +253,14 @@ ppcboot header:
     psect idx 3: %u, offset 3: 0x%08x %08x
     psect: %u, offset: 0x%08x %08x
     routine name: %.*s
-   %02u    (type: %3u, size: 4+%3u):    *unhandled* cmd %u
+   %02u    (type: %3u, size: %3u):    *unhandled* cmd %u
+   Erroneous length
+   Error: %s min length is %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)
@@ -320,25 +326,13 @@ ppcboot header:
    vector      : 0x%08x
    version mask: 0x%08x
    version:    %x
-  %s (len=%u+%u):
+  %s (len=%u):
   %u: size: %u, flags: 0x%02x, name: %.*s
   EEOM (len=%u):
   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
+  EGSD entry %2u (type: %u, len: %u):   EMH %d (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
@@ -354,22 +348,22 @@ ppcboot header:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   size : %u
-  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):
+  the input  file's flags: %s  the output file's flags: %s %08x (<unknown>) 0x%08x 64B <EABI version unrecognised> <Unrecognised flag bits set> BPAGE: %u COM COMM Change Protection (%u entries):
  Code Address Reference Fixups:
  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:
+ GBL LIB Linkage Pairs Reference Fixups:
  MACH-O header:
- NOMOD NORM OVR PIC QVAL RD REL Register restore millicode Register save millicode Resources start at offset: %#03x
+ NOMOD NORM OVR PIC QVAL RD REL 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 [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
+ UNI VEC VECEP WEAK WRT [64-bit doubles] [BE8] [FDPIC ABI supplement] [FPA float format] [LE8] [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:  and check the symbol visibility debug module table : vbn: %u, size: %u
  debug symbol table : vbn: %u, size: %u (0x%x)
+ failed to convert GOTPCREL relocation against '%s'; relink with --no-relax
  fixup info rva:  flags: 0x%04x global symbol table: vbn: %u, records: %u
  ident: 0x%08x, name: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -395,35 +389,20 @@ 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
-%03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
-%F%P: already_linked_table: %E
-%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'
+#<invalid error code>%%X%%P: relocation %s against `%s' which may bind externally 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: %F%P: failed to create GNU property section
 %H __tls_get_addr lost arg, TLS optimization disabled
 %H arg lost __tls_get_addr, TLS optimization disabled
+%H: %s against %pT is not supported
 %H: %s against `%pT': error %d
 %H: %s for indirect function `%pT' unsupported
+%H: %s out of range
 %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 here
 %H: %s reloc unsupported in shared libraries and PIEs
 %H: %s used with TLS symbol `%pT'
 %H: %s used with non-TLS symbol `%pT'
@@ -445,45 +424,95 @@ 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 %s returns an unrecognized value %x
 %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: relocation type %u is not supported
 %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
+%H: warning: relocation to "%s" references a different segment
 %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(%pA): error: need linked-to section for --gc-sections
+%P: %pB(%s): error opening thin archive member: %E
 %P: %pB: %s is not supported for `%pT'
+%P: %pB: copy relocation against non-copyable protected symbol `%s'
+%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB
+%P: %pB: failed to add %s to first hash
+%P: %pB: failed to allocate 32-bit DT_RELR bitmap
+%P: %pB: failed to allocate 64-bit DT_RELR bitmap
+%P: %pB: failed to allocate compact relative reloc section
+%P: %pB: failed to allocate memory for section `%pA'
+%P: %pB: failed to allocate relative reloc record
+%P: %pB: failed to finish relative relocations
+%P: %pB: note: the message above does not take linker garbage collection into account
+%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)
+%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: --relax and -r may not be used together
+%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: auto overlay error: %E
+%P: can not build overlay stubs: %E
 %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: corrupt input: %pB
+%P: discarded output section: `%pA'
+%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
+%P: failed to create %s
+%P: failed to create %sn%P: failed to create GOT PLT .eh_frame section
+%P: failed to create GOT PLT section
+%P: failed to create GOT sections
+%P: failed to create IBT-enabled PLT section
+%P: failed to create PLT .eh_frame section
+%P: failed to create PLT .sframe section
+%P: failed to create PLT GOT .sframe section
+%P: failed to create VxWorks dynamic sections
+%P: failed to create ifunc sections
+%P: failed to create second PLT .sframe section
+%P: failed to create the second PLT .eh_frame section
+%P: failed to size relative relocations
+%P: first_hash failed to create: %E
 %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 PDE
+%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: %s against `%s': error: relocation applies outside section
+%X%H: %s against `%s': error: relocation target address is odd
+%X%H: %s against `%s': internal error: unexpected relocation result %d
 %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: relocation to "%s" references a different segment
 %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(%pA): relocation is not supported
+%X%P: %pB(%pA): relocation out of range
+%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
@@ -493,23 +522,44 @@ ppcboot header:
 %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%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
 %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)
+%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+%Xerror: found a total of %d inputs incompatible with BTI requirements.
+%Xerror: found a total of %d inputs incompatible with GCS requirements.
+%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): 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
-%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 (%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 symbol number %lu uses unsupported binding of %u%pB symbol number %lu uses unsupported type of %u%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 %zu is empty%pB(%pA): error: secondary reloc %zu is of an unknown type%pB(%pA): error: secondary reloc %zu references a deleted symbol%pB(%pA): error: secondary reloc %zu references a missing symbol%pB(%pA): error: secondary reloc section has non-standard sized entries%pB(%pA): error: secondary reloc section has zero sized entries%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): relocation %zu has invalid symbol index %lu%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(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only
+%pB(%s): Unknown destination type (ARM/Thumb) in %pB%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 (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB
+%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB
+%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: Adjusting branch at 0x%V towards "%s" in section %s
+%pB: BE8 images only valid in big-endian mode%pB: C_STAT isn't supported by XCOFF64%pB: Cannot create stub entry '%s'%pB: Cannot handle relocation value size of %d%pB: DT_STRTAB table is corrupt%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: Number of symbols in input file has increased from %lu to %u
+%pB: PC-relative offset overflow in GOT PLT entry for `%s'
+%pB: PC-relative offset overflow in PLT entry for `%s'
+%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%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: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed
+%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to generate dynamic relocs because a suitable section does not exist
+%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: adjusting invalid FileAlignment%pB: adjusting invalid SectionAlignment%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 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: branch displacement overflow in PLT entry for `%s'
+%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: can't link different ABI object.%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 export internal symbol `%s`.%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot handle more than %d dynamic symbols%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: conditional branch to undefined symbol `%s' not allowed%pB: corrupted group section: `%pA'%pB: could not find output section %pA for input section %pA%pB: could not read contents of group [%u]%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 against a local symbol 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: attribute section length too small: %ld%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 attributes version '%c'(%d) - expecting 'A'
+%pB: error: unknown mandatory EABI object attribute %d%pB: error: unsupported PLT type: %u%pB: expected symbol index in range 0..%lu but found local symbol with index %lu%pB: failed to extract object only section: %s%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 get symbol table in object only section: %s%pB: failed to open object only section: %s%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: 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: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid NumberOfRvaAndSizes%pB: invalid entry (%#x) in group [%u]%pB: invalid file to extract object only section: %s%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
@@ -523,15 +573,24 @@ 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: 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: 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: mapped section %pA has non-NULL buffer%pB: misplaced XTY_LD `%s'%pB: missing import name for IMPORT_NAME_EXPORTAS for %s%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: non-canonical reference to canonical protected function `%s' in %pB%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: overflow reloc count too small%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 %#x unsupported%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 absolute symbol `%s' can not be used when making a shared object%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object%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 %s overflow 0x%lx%pB: relocation %s right shift %d error 0x%lx%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_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE%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 %s is compressed with zstd, but BFD is not built with zstd support%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %u%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 based reloc type (%u) is not supported with -z pack-relative-relocs%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: string table [%u] is corrupt%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: symbol name exceeds given max length of %d%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 compress section %s%pB: unable to create fake empty section%pB: unable to decompress section %s%pB: unable to fill in DataDirectory[%d]: %s is missing%pB: unable to fill in DataDirectory[%d]: %s not defined correctly%pB: unable to fill in DataDirectory[%d]: %s not properly aligned%pB: unable to fill in DataDirectory[%d]: size can't be read from %s%pB: unable to fill in DataDirectory[%d]: size too large for the containing section%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 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: unexpected type (%#x) section `%s' in group [%u]%pB: unhandled dynamic relocation against %s%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: 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 bfd relocation type %#x%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation %s against symbol `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type %s%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported swap_aux_in for storage class %#x%pB: unsupported swap_aux_out for storage class %#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 is required by -z force-bti, but this input object file lacks the necessary property note.
+%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
+%pB: warning: RVE PLT generation not supported%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up%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 %lu 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 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: 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: truncated `%s' option%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment%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: warning: win32pstatus %s of size %lu bytes is too small%pB: will not resolve runtime TLS relocation%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u%pB: wrong auxtype %#x for storage class %#x%pB: x86 ISA needed: %pB: x86 ISA used: %pB:%.8s: RVA truncated%pB:%.8s: section below image base%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 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%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s%pB[%pA]: no output section for space %pA%pcrel_lo missing matching %pcrel_hi%pcrel_lo overflow with an addend%pcrel_lo section symbol with an addend%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20%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)
+%s has both normal and TLS relocs%s in overlay section%s is defined but could not be loaded: %s%s is defined but plugin support is disabled%s is loaded but symbol "%s" is not found: %s%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s, iter %u
+  branch         %lu
+  long branch    %lu
+  plt call       %lu
+  global entry   %lu%s: BFD %s internal error, aborting at %s:%d
+%s: BFD %s internal error, aborting at %s:%d in %s
+%s: Bad ELF id: `%d'%s: ISA string cannot contain uppercase letters%s: ISA string must begin with rv32, rv64 or Profiles%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: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: failed to open to extract object only section: %s%s: first ISA extension must be `e', `i' or `g'%s: invalid prefixed ISA extension `%s' ends with <number>p%s: no such symbol%s: not implemented%s: not supported%s: object size does not match that of target %s%s: prefixed ISA extension must separate with _%s: undefined version: %s%s: unknown prefixed ISA extension `%s'%s: unknown standard ISA extension or prefix class `%c'%scannot + base extension `%s' in %s `%s'%sdeprecated - extension `%s' in %s `%s'%sinvalid ISA extension ends with <number>p in %s `%s'%sunknown ISA extension `%s' in %s `%s'%tlsdesc_lo with addend(%s): Unknown destination type (ARM/Thumb) in %pB(at bit offset %u)
 (descriptor)
-(format %c%c%c%c signature %s age %ld)
+(format %c%c%c%c signature %s age %ld pdb %s)
 (no value)
 (not active)
 (not allocated)
@@ -544,28 +603,24 @@ ppcboot header:
 , 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>
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<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:
+<unknown mask flags><unknown: %x><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBase 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
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsCopyright 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 0x%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: section %s has no contentsDWARF error: section %s is too bigDWARF 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 DirectoryEIHD: (size: %u, nbr blocks: %u)
+Delay Import DirectoryDescription DirectoryEIHD: (size: %u, nbr blocks: %u)
 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
+Error: %pB and %pB has different DSP versionError: %pB and %pB has different FPU ABIError: %pB and %pB has different VDSP versionError: %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 supported only by GNU and FreeBSD targetsGNU_RETAIN section is supported only by GNU and FreeBSD targetsGOT 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,20 +628,20 @@ 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)
 Image symbol & debug table: (major: %u, minor: %u)
-Import Address Table DirectoryImport Directory [parts of .idata]LOGICAL_NAMES    Language Processor Name
+Import Address Table DirectoryImport Directory [parts of .idata]Internal error: unreachable.LAM_U48 propertyLAM_U57 propertyLOGICAL_NAMES    Language Processor Name
 Length              = 0x%.8lx (%ld)
 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:
+NETWORKS         NORMALNOTE: This behaviour is deprecated and will be removed in a future version of the linkerName 				NoneNumber in:
 OPR_ADD (add)
 OPR_AND (logical and)
 OPR_ASH (arithmetic shift)
@@ -611,21 +666,19 @@ ppcboot header:
 Partition[%d] length = 0x%.8lx (%ld)
 Partition[%d] sector = 0x%.8lx (%ld)
 Please report this bug.
-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
+Private flags = 0x%lx : 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 togetherRL78 reloc divide by zeroRL78 reloc stack overflow/underflowR_AMD64_IMAGEBASE with __ImageBase undefinedR_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            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 %pASFrame sections with unexpected data encoding prevent .sframe generationSHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
-STA_LW (stack longword) 0x%08x
-STA_MOD (stack module)
+STA_LW (stack longword)STA_MOD (stack module)
 STA_PQ (stack psect base + offset)
-STA_QW (stack quadword) 0x%08x %08x
-STC_BOH_GBL (store cond BOH at global addr)
+STA_QW (stack quadword)STC_BOH_GBL (store cond BOH at global addr)
 STC_BOH_PS (store cond BOH at psect + offset)
 STC_BSR_GBL (store cond BSR at global addr)
 STC_BSR_PS (store cond BSR at psect + offset)
@@ -664,27 +717,27 @@ ppcboot header:
 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
+Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pBTLS relocation invalid without dynamic sectionsTOC overflow during stub generation; try -mminimal-toc when compilingTable Addresses
+The addend isn't allowed for R_RISCV_GOT_HI20The 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
 Too many unwind codes (%ld)
 Type                Size     Rva      Offset
-USRSTACKUnknownUnknown: %xUpdated property %W (%v) to merge %pB (0x%v) and %pB (not found)
+USRSTACKUnable to find the stub entry targeting %sUnable to link input file: %sUnable to load DLL.UnknownUnknown: %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]_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:
+Warning: should use "_" to contact Profiles with other extensionsWriting 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]\%pB: warning: %s BLX instruction targets %s function '%s'__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 function`xtheadvector' is conflict with the `v/zve32x' extension`zclsd' is conflict with the `c+f'/ `zcf' extension`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extensiona 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: %#lxbfd_mach_o_read_section_64: overlarge alignment value: %#lxbfd_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
+branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBc' or `zcacan'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 find default versions of the ISA extension `%s'cannot read DMT
 cannot read DMT header
 cannot read DMT psect
 cannot read DST
@@ -700,70 +753,67 @@ ppcboot header:
 cannot read GST
 cannot read GST record
 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
+cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)class: %u, dtype: %u, length: %u, pointer: 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 reloc recordcorrupt vms valuecorrupted GST
+could 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]d' and `c', or `zcdd' and `zfad' or `zdinxdangerous 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
+division by zerodst_define_location %u too largedynamic index information not availabledynamic relocation in read-only sectiondynreloc 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 adding attributeerror in %pB(%pA); no .eh_frame_hdr table will be createderror in %pB(%pA); no .sframe will be createderror in %pB(%pA); unexpected SFrame section typeerror 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 has a LOAD segment with RWX permissionserror: %pB has a TLS segment with execute permissionerror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %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 alignederror: %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 RISC-V used size: 0x%x>error: %pB: <corrupt property (0x%x) 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: SB relative addressing conflicts with use of R9error: %pB: XLEN of input (%u) doesn't match output (%u)error: %pB: cannot mix rf16 with full register set %pBerror: %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: mis-matched ISA string to merge '%s' and '%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 create group section symbolerror: %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: %pB: unsupported XLEN (%u), you might be using wrong emulationerror: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack sectionerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: conflicting CPU architectures %s vs %s in %pBerror: creating an executable stack because of -z execstack command line optionerror: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spaceerror: 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 %pBexecutablef' and `c', or `zcff' or `zfinxfailed 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 truncatedfinal size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spacefurther 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 definedhhidden 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
+input SFrame sections with different abi prevent .sframe generationinput SFrame sections with different format versions prevent .sframe generationinternal 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 internal: internal: unreachable INSN_CLASS_*invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid dynamic indexinvalid 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
+linkable imagelinker stubs in %u grouplinker stubs in %u groupsliteralliteral relocation occurs for an external symbollocal symbol index too biglong branch stub `%s' offset overflowm' or `zmmulmach-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]: 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-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
+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 dynamic index information availableno 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 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 overflowplugin framework: out of file descriptors. Try using fewer objects/archives
+pointer
 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
+protected symbolprotected symbol q' and `zfaq' or `zqinxrecbeg: 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
-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
+recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'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 against `%s' has faulty GOT type 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: %sreserved cmd %drtnbeg
 rtnend: size 0x%08x
-section has no contentsseptyp, name: %.*s
+rv%d does not support the `q' extensionrv%d does not support the `smmpm' extensionrv%d does not support the `smnpm' extensionrv%d does not support the `ssnpm' extensionrv%d does not support the `sspm' extensionrv%d does not support the `supm' extensionrv%d does not support the `zcf' extensionrv%de does not support the `h' extensionsection 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
-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 too large; lower small-data size limit (see option -G)smctr' or `ssctrsom_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 supported only by GNU and FreeBSD targetssymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targetssystem 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 valuesv' or `zve64d' or `zve64f' or `zve32fv' or `zve64x' or `zve32xv850 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 LOAD segment with RWX permissionswarning: %pB has a TLS segment with execute permissionwarning: %pB has a corrupt string table indexwarning: %pB has a program header with invalid alignmentwarning: %pB has a section extending past end of filewarning: %pB has a segment extending past end of filewarning: %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(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: %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 memory sealing size: 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: unknown RISCV ABI 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
-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
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: %s: missing .note.GNU-stack section implies executable stackwarning: %s: requires executable stack (because the .note.GNU-stack section is executable)warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: --plt-localentry is incompatible with power10 pc-relative codewarning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised.warning: NOTE: size discrepancies can cause real problems.  Investigation is advised.warning: 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 normal symbol `%s' in %pB is smaller than %u used by the common definition in %pBwarning: 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: enabling an executable stack because of -z execstack command line optionwarning: file %pB's arch flag %s conflict with target %s,set target arch flag to %swarning: file %pB's arch flag %s conflicts with target ck%s, using %swarning: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+warning: found a total of %d inputs incompatible with BTI requirements.
+warning: found a total of %d inputs incompatible with GCS requirements.
+warning: 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: privileged spec version 1.9.1 can not be linked with other spec versionswarning: 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: unrecognised arch name '%#x'warning: 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
+x ISA extension `%s' must be set with the versionsyesyou are not allowed to define %s in a scriptzbb' or `zbkbzbc' or `zbkczcb' and `zbazcb' and `zbbzcb' and `zmmul', or `zcb' and `mzcmp' is incompatible with `d' and `c', or `zcd' extensionzfh' and `zfazfh' and `zfa', or `zvfh' and `zfazfh' or `zhinxzfh' or `zvfhzfhmin' and `d', or `zhinxmin' and `zdinxzfhmin' and `q', or `zhinxmin' and `zqinxzfhmin' or `zhinxminzicfiss' and `zcmopzihintntl' and `c', or `zihintntl' and `zcazknd' or `zknezvbbzvbczvkbzvkgzvknedzvknha' or `zvknhbzvksedzvkshzvl*b extensions need to enable either `v' or `zve' extensionProject-Id-Version: bfd 2.44.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2025-07-13 08:44+0100
+PO-Revision-Date: 2025-07-18 09:05+0300
 Last-Translator: Yuri Kozlov <yuray@komyakino.ru>
 Language-Team: Russian <gnu@d07.ru>
 Language: ru
@@ -771,16 +821,15 @@ 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.
-X-Generator: Lokalize 2.0
+X-Generator: Lokalize 25.04.0
 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);
-	    TLS: %pA	<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾: 0x%04lx>	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² 		%08lx
+	    TLS: %pA	<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾: 0x%08lx>	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² 		%08lx
 	Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² rva (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)
-	Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)
+	Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ rva (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)
 	Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð¾Ð±Ñ‹Ñ‡Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° rva (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)
-	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² 				[%4ld] <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: %lx>
+	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² 				[%4ld] +base[%4ld]  %04lx <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: %lx>
 	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° [ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½/Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð²]	%08lx
-	code-base %08lx toc (Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹/Ñ€ÐµÐ°Ð»ÑŒÐ½Ñ‹Ð¹) %08lx/%08lx
-	 Ð½Ðµ-TLS: %pA	Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %4d Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %4x [%4lx] %s	vma:  Hint/Ord Ð˜Ð¼Ñ�-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²Ñ�Ð·Ð°Ð½-Ðº
+	 Ð½Ðµ-TLS: %pA	Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %4d Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %4x [%4lx] %s	vma:     Ordinal  Hint  Ð˜Ð¼Ñ�-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²Ñ�Ð·Ð°Ð½-Ðº
 
 
 	Ð˜Ð¼Ñ� DLL: %.*s
@@ -810,10 +859,6 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 
 Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² -- Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %ld
 
-Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %04lx
-
-Ð�ÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° reldata! ÐžÐ¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ð½Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½.
-
 Ð�Ð°Ñ‡Ð°Ð»Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹:
@@ -840,12 +885,10 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 
 Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%lx
 
-Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ð¾Ð½Ð° Ð½Ðµ Ð¿Ð¾Ð¼ÐµÑ‰Ð°ÐµÑ‚Ñ�Ñ� Ð² Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ»
+Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ ÐµÑ‘ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ
 
 Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ð¾Ð½Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ°Ñ� (%d)
 
-Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð±ÐµÐ· Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾
-
 Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð°, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�
 
 Ð’ %s Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%lx
@@ -862,7 +905,7 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 
 ÐŸÐ Ð•Ð”Ð£ÐŸÐ Ð•Ð–Ð”Ð•Ð�Ð˜Ð•: Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .rsrc â€” Ð±ÑƒÐ´ÑƒÑ‚ Ð¿Ñ€Ð¾Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ñ‹ Windows:
 
-Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð²/ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½]
+Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð²/ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½] â€” Ð¾Ñ�Ð½Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² %ld
 
 Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº ppcboot:
         pc: 0x%08x
@@ -881,16 +924,14 @@ Plural-Forms:  nplurals=3; plural=(n%10=
     3-Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� psect: %u, 3-Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x %08x
     psect: %u, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x %08x
     Ð¸Ð¼Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹: %.*s
-   %02u    (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð°Ð·Ð¼ÐµÑ€: 4+%3u):    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ�* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u
+   %02u    (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %3u):    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ�* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u
+   ÐžÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°
+   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° %s Ñ€Ð°Ð²Ð½Ð° %u
    ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ñ€ÐµÐ·Ð°Ð½Ð° Ð´Ð°Ñ‚Ð° ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ð¸
-   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð¼ÐµÐ½ÑŒÑˆÐµ Ð´Ð»Ð¸Ð½Ñ‹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EEOM
-   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð¼ÐµÐ½ÑŒÑˆÐµ Ð´Ð»Ð¸Ð½Ñ‹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EMH
    ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�
    ÐžÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�
    ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�
    ÐžÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð»Ð¸Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�
-   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð¼ÐµÐ½ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EMH_MHD
-   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° Ð² Ð·Ð°Ð¿Ð¸Ñ�Ð¸
    Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ  : 2**%u
    alloc (len)   : %u (0x%08x)
    alloc (len): %u (0x%08x)
@@ -956,25 +997,13 @@ Plural-Forms:  nplurals=3; plural=(n%10=
    Ð²ÐµÐºÑ‚Ð¾Ñ€      : 0x%08x
    Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ð¸Ð¸: 0x%08x
    Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ð¸Ð¸: %x
-  %s (len=%u+%u):
+  %s (Ð´Ð»Ð¸Ð½Ð°=%u):
   %u: Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, Ñ„Ð»Ð°Ð³Ð¸: 0x%02x, Ð¸Ð¼Ñ�: %.*s
   EEOM (len=%u):
   EGSD (len=%u):
-  Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD %2u (Ñ‚Ð¸Ð¿: %u, Ð´Ð»Ð¸Ð½Ð°: %u):   EMH %u (len=%u):   Ð±Ð°Ð·Ð°: 0x%08x %08x, Ñ€Ð°Ð·Ð¼ÐµÑ€: 0x%08x, prot: 0x%08x   base_va : 0x%08x
+  Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD %2u (Ñ‚Ð¸Ð¿: %u, Ð´Ð»Ð¸Ð½Ð°: %u):   EMH %d (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
@@ -990,22 +1019,22 @@ Plural-Forms:  nplurals=3; plural=(n%10=
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   Ñ€Ð°Ð·Ð¼ÐµÑ€: %u
-  Ñ„Ð»Ð°Ð³Ð¸ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°: %s  Ñ„Ð»Ð°Ð³Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°: %s %08x (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) 0x%08x 64B <Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� EABI> BPAGE: %u COM COMM Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ (%u Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²):
+  Ñ„Ð»Ð°Ð³Ð¸ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°: %s  Ñ„Ð»Ð°Ð³Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°: %s %08x (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) 0x%08x 64B <Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� EABI> <Ð�ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð½Ð°Ð±Ð¾Ñ€ Ð±Ð¸Ñ‚Ð¾Ð² Ñ„Ð»Ð°Ð³Ð°> BPAGE: %u COM COMM Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ (%u Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²):
  Ð¡Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ð°:
  DEF EXE Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð°Ñ� Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° FPU:  ÐŸÐµÑ€Ð²Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x
  Ð§ÐµÑ‚Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x
- GBL ÐŸÐ¾Ñ�Ð»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð²Ñ�Ð·ÑƒÑŽÑ‰ÐµÐ³Ð¾ ÐºÐ¾Ð´Ð° LIB Ð¡Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¿Ð°Ñ€:
+ GBL LIB Ð¡Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¿Ð°Ñ€:
  Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Mach-O:
- NOMOD NORM OVR PIC QVAL RD REL ÐœÐ¸Ð»Ð»Ð¸ÐºÐ¾Ð´ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° ÐœÐ¸Ð»Ð»Ð¸ÐºÐ¾Ð´ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð ÐµÑ�ÑƒÑ€Ñ�Ñ‹ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#03x
+ NOMOD NORM OVR PIC QVAL RD REL Ð ÐµÑ�ÑƒÑ€Ñ�Ñ‹ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#03x
  SHR Ð’Ñ‚Ð¾Ñ€Ð¾Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x
  ÐžÐ±Ñ‰Ð¸Ðµ Ð¾Ð±Ñ€Ð°Ð·Ñ‹:
  ÐžÐ±Ñ‰Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·: 0x%08x 0x%08x
  Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ñ‚Ñ€Ð¾Ðº Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚Ñ�Ñ� Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#03x
  Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð°: Ð¡Ð¸Ð¼Ð²Ð¾Ð»: %d, Ð’Ñ€ÐµÐ¼Ñ�: %08lx, Ð’ÐµÑ€Ñ�Ð¸Ñ�: %d/%d, ÐšÐ¾Ð»-Ð²Ð¾ Ð¸Ð¼Ñ‘Ð½: %d, ID: %d
  Ð¢Ñ€ÐµÑ‚Ð¸Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x
- UNI VEC VECEP WEAK WRT[64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ double] [BE8] [Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ FDPIC ABI] [FPA Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸] [LE8] [Maverick Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸] [VFP Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸] [Ð’ÐµÑ€Ñ�Ð¸Ñ�1 EABI] [Ð’ÐµÑ€Ñ�Ð¸Ñ�2 EABI] [Ð’ÐµÑ€Ñ�Ð¸Ñ�3 EABI] [Ð’ÐµÑ€Ñ�Ð¸Ñ�4 EABI] [Ð’ÐµÑ€Ñ�Ð¸Ñ�5 EABI] [Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ XGATE Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸] [abi Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚ÐµÐ½] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [d-float] [Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�] [fix dep] [Ñ‡Ð¸Ñ�Ð»Ð° Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ð¿ÐµÑ€ÐµÐ´Ð°ÑŽÑ‚Ñ�Ñ� Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹] [g-float] [hard-float ABI] [Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°] [Ð¿Ñ€Ð¾ÐµÑ†Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ€Ð°Ð½ÑŒÑˆÐµ] [Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ=Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ñ� Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸] [Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ=Ð¿Ð»Ð¾Ñ�ÐºÐ°Ñ�] [Ð½Ð¾Ð²Ñ‹Ð¹ ABI] [abi Ð½Ðµ Ð·Ð°Ð´Ð°Ð½] [Ð½Ðµ-pic] [Ð½Ðµ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ñ€ÐµÐ¶Ð¸Ð¼] [Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ ABI] [pic] [Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ñ‹Ð¹] [Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹] [soft-float ABI] [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� FP] [Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²] [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ� _] [Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ISA] [Ð½ÐµÑ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²] [v10 Ð¸ v32] [v32] Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²:  Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ GST
- Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹: vbn: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u
+ UNI VEC VECEP WEAK WRT[64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ double] [BE8] [Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ FDPIC ABI] [FPA Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸] [LE8] [VFP Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸] [Ð’ÐµÑ€Ñ�Ð¸Ñ�1 EABI] [Ð’ÐµÑ€Ñ�Ð¸Ñ�2 EABI] [Ð’ÐµÑ€Ñ�Ð¸Ñ�3 EABI] [Ð’ÐµÑ€Ñ�Ð¸Ñ�4 EABI] [Ð’ÐµÑ€Ñ�Ð¸Ñ�5 EABI] [Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ XGATE Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸] [abi Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚ÐµÐ½] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [d-float] [Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�] [fix dep] [Ñ‡Ð¸Ñ�Ð»Ð° Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ð¿ÐµÑ€ÐµÐ´Ð°ÑŽÑ‚Ñ�Ñ� Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹] [g-float] [hard-float ABI] [Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°] [Ð¿Ñ€Ð¾ÐµÑ†Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ€Ð°Ð½ÑŒÑˆÐµ] [Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ=Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ñ� Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸] [Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ=Ð¿Ð»Ð¾Ñ�ÐºÐ°Ñ�] [Ð½Ð¾Ð²Ñ‹Ð¹ ABI] [abi Ð½Ðµ Ð·Ð°Ð´Ð°Ð½] [Ð½Ðµ-pic] [Ð½Ðµ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ñ€ÐµÐ¶Ð¸Ð¼] [Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ ABI] [pic] [Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ñ‹Ð¹] [Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹] [soft-float ABI] [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� FP] [Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²] [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ� _] [Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ISA] [Ð½ÐµÑ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²] [v10 Ð¸ v32] [v32] Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²:  Ð¸ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÑŒÑ‚Ðµ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹: vbn: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u
  Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: vbn: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u (0x%x)
+Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GOTPCREL Ð² Â«%sÂ»; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ñ� --no-relax
  fixup info rva:  Ñ„Ð»Ð°Ð³Ð¸: 0x%04x Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: vbn: %u, Ð·Ð°Ð¿Ð¸Ñ�ÐµÐ¹: %u
  Ð¸Ð´ÐµÐ½-Ñ€: 0x%08x, Ð¸Ð¼Ñ�: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -1031,35 +1060,20 @@ Plural-Forms:  nplurals=3; plural=(n%10=
      		Ð�Ð´Ñ€ÐµÑ�     ÐŸÑ€Ð¾Ð»Ð¾Ð³Ð°  Ð¤ÑƒÐ½ÐºÑ†Ð¸Ð¸ 32b exc     Ð˜Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð”Ð°Ð½Ð½Ñ‹Ðµ
  vma:            Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð°    ÐžÑ‚Ð¼ÐµÑ‚ÐºÐ°   Ð¦ÐµÐ¿Ð¾Ñ‡ÐºÐ°    Ð˜Ð¼Ñ�       ÐŸÐµÑ€Ð²Ñ‹Ð¹
                   Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹  Ð’Ñ€ÐµÐ¼ÐµÐ½Ð¸   ÐŸÐµÑ€ÐµÑ�Ñ‹Ð»ÐºÐ¸  DLL       Ð¨Ð»ÑŽÐ·
-#<Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸>%03x %*.s  Ð»Ð¸Ñ�Ñ‚: Ð°Ð´Ñ€ÐµÑ�: %#08lx, Ñ€Ð°Ð·Ð¼ÐµÑ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d
-%03x %*.s Ð­Ð»ÐµÐ¼ÐµÐ½Ñ‚: %C: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
-%F%P: already_linked_table: %E
-%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: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð² GNU
-%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT .eh_frame
-%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT
-%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ GOT
-%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ IBT
-%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Â»
+#<Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸>%%X%%P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ», ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ñ€Ð¸Ð²Ñ�Ð·Ð°Ð½ Ð¸Ð·Ð²Ð½Ðµ, Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC
+%%X%%P: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»
+%03x %*.s  Ð»Ð¸Ñ�Ñ‚: Ð°Ð´Ñ€ÐµÑ�: %#08lx, Ñ€Ð°Ð·Ð¼ÐµÑ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð°Ñ� Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d
+%03x %*.s Ð­Ð»ÐµÐ¼ÐµÐ½Ñ‚: %F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð² GNU
 %H __tls_get_addr Ð±ÐµÐ· Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð°, Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� TLS Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°
 %H Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ lost __tls_get_addr, Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� TLS Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°
+%H: %s Ð´Ð»Ñ� %pT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
 %H: %s Ð´Ð»Ñ� Â«%pTÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d
 %H: %s Ð´Ð»Ñ� Ð½ÐµÑ�Ð²Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%pTÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
+%H: %s Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°
 %H: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼
 %H: %s Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ TOC
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d
+%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð·Ð´ÐµÑ�ÑŒ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¾Ð±Ñ‰Ð¸Ñ… Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°Ñ… Ð¸ PIE
 %H: %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%pTÂ»
 %H: %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� Ð½Ðµ TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%pTÂ»
@@ -1081,45 +1095,95 @@ 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: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð²ÐµÑ€Ð½ÑƒÐ»Ð¾ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %x
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð¼Ð¾Ð´ÑƒÐ»Ðµ
 %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Â«%s+%vÂ» Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð·Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ¹ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹
-%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� toc Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s
+%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %u Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
 %H: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%pTÂ»
 %H: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»
 %H: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %s Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ insn %#x.
-%P%F: --relax Ð¸ -r Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ð¼ÐµÑ�Ñ‚Ðµ
+%H: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
 %P%X: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹: %E
-%P%X: Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�, Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� IFUNC; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC
 %P%X: Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�, Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�
-%P: %H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� bss-plt
 %P: %H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ %x
+%P: %pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� --gc-sections Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ» linked-to
+%P: %pB(%s): Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ð¸ Ñ‡Ð»ÐµÐ½Ð° Ñ‚Ð¾Ð½ÐºÐ¾Ð³Ð¾ Ð°Ñ€Ñ…Ð¸Ð²Ð°: %E
 %P: %pB: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Â«%pTÂ»
+%P: %pB: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½ÐµÐºÐ¾Ð¿Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»
+%P: %pB: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½ÐµÐºÐ¾Ð¿Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB
+%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ %s Ð² Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ñ…Ñ�Ñˆ
+%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ 32-Ð±Ð¸Ñ‚Ð½ÑƒÑŽ Ð±Ð¸Ñ‚Ð¾Ð²ÑƒÑŽ ÐºÐ°Ñ€Ñ‚Ñƒ DT_RELR
+%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ 64-Ð±Ð¸Ñ‚Ð½ÑƒÑŽ Ð±Ð¸Ñ‚Ð¾Ð²ÑƒÑŽ ÐºÐ°Ñ€Ñ‚Ñƒ DT_RELR
+%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ñ‹Ñ… Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹
+%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»
+%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�
+%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�
+%P: %pB: Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ðµ: Ñ�Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹ÑˆÐµ Ð½Ðµ ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÐµÑ‚ Ñ�Ð±Ð¾Ñ€ÐºÑƒ Ð¼ÑƒÑ�Ð¾Ñ€Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ°
+%P: %pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾
+%P: %pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ñ‹Ñ… Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½: Ð½Ð¾Ð²Ñ‹Ð¹ (%lu) != Ñ�Ñ‚Ð°Ñ€Ð¾Ð¼Ñƒ (%lu)
+%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s
 %P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»
 %P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»
+%P: --relax Ð¸ -r Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ð¼ÐµÑ�Ñ‚Ðµ
+%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ Â«%pAÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.
+%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ Â«%pAÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E
+%P: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E
 %P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ opd Ñƒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° toc Ð´Ð»Ñ� Â«%pTÂ»
 %P: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Â«%pTÂ» Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ Ð»ÐµÐ½Ð¸Ð²Ð¾Ð¹ plt-ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸; Ð½Ðµ Ð·Ð°Ð´Ð°Ð²Ð°Ð¹Ñ‚Ðµ LD_BIND_NOW=1 Ð¸Ð»Ð¸ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚Ðµ gcc
 %P: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¼ Â«%pTÂ» Ð¾Ð¿Ð°Ñ�Ð½Ð¾
+%P: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ð²Ð²Ð¾Ð´: %pB
+%P: Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»: Â«%pAÂ»
+%P: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¼ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¼ Ð² Â«%pBÂ» Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIE Ð¸ Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -pie
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ %s
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ %sn%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT .eh_frame
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ GOT
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ IBT
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .eh_frame
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .sframe
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT GOT .sframe
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ VxWorks
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ ifunc
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .sframe
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .eh_frame
+%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹
+%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ first_hash: %E
 %P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð´Ð»Ñ� Â«%pTÂ»
 %P: Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ñ‚Ð¾Ñ‡ÐµÐº Ð²Ñ…Ð¾Ð´Ð°: Ð² Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… %pB Ð¸ %pB
 %P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
+%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð²Ð½Ñ‹Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ GNU Ñ� DT_TEXTREL Ð¼Ð¾Ð³ÑƒÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� %s
+%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² PDE
+%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² PIE
 %P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ
 %P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð½ÐµÑ�Ð²Ð½Ñ‹Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ GNU Ð¼Ð¾Ð³ÑƒÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�
-%X%C: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
+%X%H: %s Ð´Ð»Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¾ Ð²Ð½Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°
+%X%H: %s Ð´Ð»Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÑ‡Ñ‘Ñ‚Ð½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�
+%X%H: %s Ð´Ð»Ñ� Â«%sÂ»: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d
 %X%H: @local Ð²Ñ‹Ð·Ð¾Ð² ifunc %s
 %X%H: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA Ð² JALX: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½
 %X%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC
+%X%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
 %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): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%RÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½
 %X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
 %X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð¸Ð»Ð¾ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %x
+%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�
+%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½
+%X%P: %pB: %s Ñ� %pT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² glibc ÐºÐ°Ðº Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ
+%X%P: %pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s
+%X%P: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Â«%pBÂ»
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�
@@ -1129,22 +1193,43 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 %X%P: Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ Ð¾Ð²ÐµÑ€Ð»ÐµÐµÐ² %pA Ð¸ %pA Ð½Ðµ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÑŽÑ‚Ñ�Ñ� Ñ� Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð°
 %X%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ Ñ�Ñ‚ÐµÐºÐ°/lrlive: %E
 %X%P:  Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð½ÐµÑ�Ð²Ð½Ñ‹Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ GNU Ð¿Ñ€Ð¸Ð²ÐµÐ´ÑƒÑ‚ Ðº Ð¾ÑˆÐ¸Ð±ÐºÐµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�
+%X%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: BTI Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z force-bti, Ð½Ð¾ Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�.
+%X%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: GCS Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z gcs, Ð½Ð¾ Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�.
+%X%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: GCS Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z gcs, Ð½Ð¾ Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�. Ð’ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½ GCS Ð¸Ð»Ð¸ Ð¾Ð½ Ð½Ðµ Ñ�Ñ‚Ð°Ð½ÐµÑ‚ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñƒ, ÐµÑ�Ð»Ð¸ Ð²Ð¾ Ð²Ñ�ÐµÑ… Ð·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ð¾Ñ�Ñ‚Ñ�Ñ… Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚ Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ GCS.
 %XÂ«%sÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð² Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð· %pB: Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½ Ð² Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð¸Ð· %pB
-%pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ [Â«%pAÂ» Ð² %pB] Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ [Â«%pAÂ» Ð² %pB] Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹%pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹%pA:0x%v lrlive .brinfo (%u) Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ (%u)
+%XÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ GCS.
+%XÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ BTI.
+%XÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ GCS.
+%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: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�: %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 (%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 Ð² Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %lu Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð¿Ñ€Ð¸Ð²Ñ�Ð·ÐºÐ° %u%pB Ð² Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %lu Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ %u%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): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %zu Ð¿ÑƒÑ�Ñ‚%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %zu Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ð°%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %zu Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %zu Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹ Ð½ÐµÑ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°%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): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %zu Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %lu%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(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² ADD Ð¸Ð»Ð¸ MOV
+%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² ADD Ð¸Ð»Ð¸ MOVRS
+%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² ADD, SUB Ð¸Ð»Ð¸ MOV
+%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² LEA
+%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ð½ÐµÑ�Ð²Ð½Ð¾Ð¼ CALL Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ %s
+%pB(%s): Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� (ARM/Thumb) Ð² %pB%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 (Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: x%v, Ð¸Ð½Ñ„Ð¾: 0x%v) Ð² Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð² %pB
+%pB: %s (Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%v, Ð¸Ð½Ñ„Ð¾: 0x%v, Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ: 0x%v) Ð² Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð² %pB
+%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: Ð¿Ð¾Ð´Ñ�Ñ‚Ñ€Ð°Ð¸Ð²Ð°ÐµÐ¼ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%V Ð´Ð»Ñ� "%s" Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s
+%pB: Ð¾Ð±Ñ€Ð°Ð·Ñ‹ BE8 Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ñ‹ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ big-endian%pB: C_STAT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² XCOFF64%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Â«%sÂ»%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° DT_STRTAB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼%pB: GNU_MBIND Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð¼Ð¸ Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° ISR Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð±Ñ‹Ð» %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹, Ñ�Ñ‚Ð°Ð» %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ð¹%pB: ÐšÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ ÑƒÐ²ÐµÐ»Ð¸Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ñ� %lu Ð´Ð¾ %u
+%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ PC Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ GOT PLT Ð´Ð»Ñ� Â«%sÂ»
+%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ PC Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ PLT Ð´Ð»Ñ� Â«%sÂ»
+%pB: ÐŸÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ð¾Ð¼ ELF (EM: %d)%pB: Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SB, Ð½Ð¾ __c6xabi_DSBT_BASE Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ ÐºÐ¾Ð´ TLS Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¾Ð±Ñ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS %s Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ TLS Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð½Ðµ Ñ€Ñ�Ð´Ð¾Ð¼:%pB: TLS-Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s Ð´Ð»Ñ� Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%v Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹
+%pB: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ TOC Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_TLSML Ð½Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‰ÐµÐµ Ð½Ð° Ñ�ÐµÐ±Ñ�%pB: Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ PT_DYNAMIC Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð¼ .dynamic%pB: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�, Ñ‚Ð°Ðº ÐºÐ°Ðº Ð½Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰ÐµÐ³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°
+%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: Ð¿Ð¾Ð´Ñ�Ñ‚Ñ€Ð°Ð¸Ð²Ð°ÐµÐ¼ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ FileAlignment%pB: Ð¿Ð¾Ð´Ñ�Ñ‚Ñ€Ð°Ð¸Ð²Ð°ÐµÐ¼ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ SectionAlignment%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð¸Ð· Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (Ð½Ð¾Ð¼ÐµÑ€ %d)%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ð¼ÐµÑˆÐ°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ FDPIC Ð¸ Ð½Ðµ FDPIC%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB: Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸: %d%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ð¼Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ihex_read_section%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�: %d%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ð°-Ð¿Ð»ÑŽÑ�-Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: %s Ð² %pA%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ð°-Ð¿Ð»ÑŽÑ�-Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) Ð² %pA%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ¸ Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ PLT Ð´Ð»Ñ� Â«%sÂ»
+%pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° a.out%pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° a.out%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð°%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ RVE Ñ� Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ†ÐµÐ»ÑŒÑŽ%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ Ñ� Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ ABI.%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð´Ð»Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ñ„Ð°Ð¹Ð»Ð° Ñ„Ð°Ð¹Ð»Ñƒ Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d, %d Ð±Ð°Ð¹Ñ‚
+%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOT%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¶Ð°Ñ‚Ñ‹Ðµ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Alpha; Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð½ÐµÑ�Ð¶Ð°Ñ‚Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ‚Ð¾Ñ€Ð° Ð¸Ð»Ð¸ objZ.%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ð±Ð¾Ð»ÐµÐµ %d Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²%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: Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾ ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð³Ñ€ÑƒÐ¿Ð¿: Â«%pAÂ»%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA Ð´Ð»Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ [%u]%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: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%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: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %ld Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…%pB: Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿; Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ 0x%x; Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ 0x%x%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ðº Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ%pB: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñƒ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² ihex_read_section%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: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð°: %ld%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÐ¾Ð½ÐµÑ† Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð·Ð° Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸ÐµÐ¼ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 835769 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»)%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¼Ð½Ð¾Ð¶ÐµÑ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»; Ð½Ð°Ñ‡Ð°Ð»Ð¾ %s ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð² Ñ€Ð°Ð½ÐµÐµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %d Ð²ÐºÐ»ÑŽÑ‡Ð°ÐµÑ‚ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¸/Ð¸Ð»Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: search_nds32_elf_blank Ñ�Ð¾Ð¾Ð±Ñ‰Ð°ÐµÑ‚ Ð¾ Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ð¼ ÑƒÐ·Ð»Ðµ%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ COMDAT%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Â«%cÂ»(%d) â€” Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Â«AÂ»
+%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ PLT: %u%pB: Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð² Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ðµ 0..%lu, Ð½Ð¾ Ð½Ð°Ð¹Ð´ÐµÐ½ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¸Ð·Ð²Ð»ÐµÑ‡ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ñ�Ñ‹Ð»Ð¾Ðº Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼ÑƒÑŽ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ…%pB: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ´ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ñ‹ Ð¾Ð±Ñ‰Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹%pB: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� %s Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� %s%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ gotoff Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: gp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%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)
+%pB: Ð½Ð° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ NumberOfRvaAndSizes%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ (%#x) Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ [%u]%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸: Â«%sÂ»; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼, Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¼ Ð¸Ð»Ð¸ Ñ�Ñ�Ñ‹Ð»Ð°Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Thumb%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° %u Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %s (Ð¸Ð½Ð´ÐµÐºÑ� %u)%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: YZ Ð² lop_end (%ld) Ð½Ðµ Ñ€Ð°Ð²Ð½Ð¾ Ñ‡Ð¸Ñ�Ð»Ñƒ Ñ‚ÐµÑ‚Ñ€Ð°Ð´ Ð² ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ Ñ€Ð°Ð½ÐµÐµ lop_stab (%ld)
 %pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_quote Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ YZ = 1, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ YZ = %d
 %pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_fixrx Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ y = 0, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ y = %d
 %pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð´Ð»Ñ� lop_fixo Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ z = 1 Ð¸Ð»Ð¸ z = 2, Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¾ z = %d
@@ -1158,15 +1243,24 @@ 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: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� 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: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ %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: Ñ�Ð¾Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA Ð¸Ð¼ÐµÐµÑ‚ Ð±ÑƒÑ„ÐµÑ€ Ð½Ðµ-NULL%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¹ XTY_LD Â«%sÂ»%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ðµ Ð¸Ð¼Ñ� IMPORT_NAME_EXPORTAS Ð´Ð»Ñ� %s%pB: Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ðµ OMIT_FP Ð² %pA%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� %d Ð±Ð°Ð¹Ñ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%pB: Ð½ÐµÑ‚ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° 0
+%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð²ÐµÑ€Ñ�Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð´Ð»Ñ� Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%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: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸ÐºÐ° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° lto Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð¾Ð´ÑƒÐ»ÑŒ%pB: Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ñ� Ð±ÐµÐ· -fPIC?%pB: Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½%pB: Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½, Ð½Ð¾ Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ (0x%x) Ð² Ð°Ñ€Ñ…Ð¸Ð²Ðµ Import Library Format%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÑ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: %s Ð² %pA%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÑ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) Ð² %pA%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %#x Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%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Â» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² RV32 Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² RV64 Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ x32%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ», ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ñ€Ð¸Ð²Ñ�Ð·Ð°Ð½ Ð¸Ð·Ð²Ð½Ðµ, Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s 0x%lx%pB: Ð¿Ñ€Ð¸ Ñ�Ð´Ð²Ð¸Ð³Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð²Ð¿Ñ€Ð°Ð²Ð¾ Ð½Ð° %d Ð²Ð¾Ð·Ð½Ð¸ÐºÐ»Ð° Ð¾ÑˆÐ¸Ð±ÐºÐ° 0x%lx%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOTOFF Ð´Ð»Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_386_GOTOFF Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ %s Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_LARCH_32 Ð½Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² ELFCLASS64 Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ð¸Ð»Ð¸ PIE%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: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ñ�Ð¶Ð°Ñ‚ Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ zstd, Ð½Ð¾ BFD Ñ�Ð¾Ð±Ñ€Ð°Ð½Ð° Ð±ÐµÐ· Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ zstd%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pA:Â» Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ VTENTRY%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ %u%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: Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½Ð° Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ñ�Ñ‚ÐµÐºÐ° (%u) Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð¿Ñ€Ð¸ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ð¸ -z pack-relative-relocs%pB: ÑƒÐºÐ°Ð·Ð°Ð½ Ð¸ Ð·Ð°Ð´Ð°Ð½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ° %s%pB: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð½Ðµ Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»Ñ‘Ð¼ Ð² Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ ILF%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ñ‚Ñ€Ð¾Ðº [%u] Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°%pB: Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð°%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ csect: %d%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ smclas %d%pB: Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð½Ð¾ Ð¾Ð½ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹ (Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�)%pB: Ð¸Ð¼Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð·Ð°Ð´Ð°Ð½Ð½ÑƒÑŽ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½ÑƒÑŽ Ð´Ð»Ð¸Ð½Ñƒ Ñ€Ð°Ð²Ð½ÑƒÑŽ %d%pB: Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¾ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸%pB: Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð² Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» (%s)%pB: Ñ†ÐµÐ»ÑŒ (%s) Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð² Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%pA)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² (%d)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %d (>= %d)%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %u%pB: tp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¶Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ„Ð¸ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ€Ð°Ñ�Ð¶Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¸Ð· %s%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ð´Ð»Ñ� Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ»%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð¼Ñ� Ð¿ÑƒÑ�Ñ‚Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ€Ð°Ñ�Ð¶Ð°Ñ‚Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° COMDAT%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð²%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ R_PPC64_TOCSAVE%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %u Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ» Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ [%u]%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� %s%pB: Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ sparc Â«%luÂ»%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%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: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� bfd %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð¼Ð°ÑˆÐ¸Ð½Ð° %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð½Ðµ PIC Ð²Ñ‹Ð·Ð¾Ð² IFUNC Â«%sÂ»%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s%pB: Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x%pB: Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� : %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ swap_aux_in Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð° Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ swap_aux_out Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð° Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %#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, Ð½Ð¾ Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�.
+%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² COMDAT Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: GCS Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z gcs, Ð½Ð¾ Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�.
+%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: GCS Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z gcs, Ð½Ð¾ Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�. Ð’ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½ GCS Ð¸Ð»Ð¸ Ð¾Ð½ Ð½Ðµ Ñ�Ñ‚Ð°Ð½ÐµÑ‚ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñƒ, ÐµÑ�Ð»Ð¸ Ð²Ð¾ Ð²Ñ�ÐµÑ… Ð·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ð¾Ñ�Ñ‚Ñ�Ñ… Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚ Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ GCS.
+%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� RVE PLT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_RISCV_SUB_ULEB128 Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼, Ð¿ÐµÑ€ÐµÑ�Ð¾Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ñ� binutils 2.42 Ð¸Ð»Ð¸ Ð½Ð¾Ð²ÐµÐµ%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð»Ð°Ð±Ñ‹Ð¹ TLS Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�ÐµÑ‚Ñ�Ñ� Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸ÐµÐ¹ Ð¸ Ð¼Ð¾Ð¶ÐµÑ‚ Ð½Ðµ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ ÐºÐ°Ðº Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð½Ðµ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° Â«%sÂ» (%u) Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ ÐµÐ³Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´Ð°ÐµÑ‚Ñ�Ñ�, Ñ‡Ñ‚Ð¾ ÐµÑ�Ñ‚ÑŒ 0xffff Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹, Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð´Ð»Ñ� Â«%sÂ»%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %d Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %ld Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %lu Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…%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: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº%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: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ� Ð´Ð»Ñ� mmo, Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ‡ÐµÐ¼ 65535 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²: %d. Ð‘ÑƒÐ´ÐµÑ‚ Ð²Ñ‹Ð´Ð°Ð½Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Â«MainÂ».
+%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� PLT Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ thumb-1 Ð¿Ð¾ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ Â«%sÂ» ÑƒÑ�ÐµÑ‡Ñ‘Ð½%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ ÐºÐ°ÐºÐ¸Ðµ-Ð»Ð¸Ð±Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ PT_GNU_RELRO%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ GOT%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ Ð² Ð¿Ð¾Ð»Ðµ flags2 Ñƒ .MIPS.abiflags (0x%lx)%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ win32pstatus %s Ð² %lu Ð±Ð°Ð¹Ñ‚ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚ Ñ€ÐµÑˆÐµÐ½Ð¾%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ win32pstatus NOTE_INFO_MODULE Ð² %lu Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð», Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ %u%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ auxtype %#x Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð° Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %#x%pB: Ð´Ð»Ñ� x86 ISA Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ�: %pB: x86 ISA Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚: %pB:%.8s: RVA ÑƒÑ�ÐµÑ‡Ñ‘Ð½%pB:%.8s: Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¸Ð¶Ðµ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°%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: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ð·Ð´ÐµÐ»Ð°%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 Ñ„Ð°Ð¹Ð»Ðµ%pB:(%pA+%#lx): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� %s%s%pB[%pA]: Ð½ÐµÑ‚ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð´Ð»Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° %pAÐ´Ð»Ñ� %pcrel_lo Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ %pcrel_hiÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ %pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼%pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð·Ð°Ð¿Ñ€ÐµÑ‰Ñ‘Ð½ Ð´Ð»Ñ� R_RISCV_GOT_HI20%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)
+%s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� TLS%s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐµÐ²%s Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½, Ð½Ð¾ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½: %s%s Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½, Ð½Ð¾ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°%s Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½, Ð½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "%s" Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½: %s%s Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ Ð² ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐµ, Ñ�Ð¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð¼ %pA%s Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐµ Ð´Ð»Ñ� ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� sdata4 Ð² .eh_frame%s, Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ� %u
+  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ          %lu
+  Ð´Ð°Ð»ÑŒÐ½ÐµÐµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ  %lu
+  Ð²Ñ‹Ð·Ð¾Ð² plt          %lu
+  Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ %lu%s: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d
+%s: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d Ð² %s
+%s: Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ ELF: Â«%dÂ»%s: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð±ÑƒÐºÐ²Ñ‹ Ð² Ð²ÐµÑ€Ñ…Ð½ÐµÐ¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ñ‹%s: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð´Ð¾Ð»Ð¶Ð½Ð° Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ‚ÑŒÑ�Ñ� Ñ� rv32, rv64 Ð¸Ð»Ð¸ Profiles%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: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ°Ðº 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚, Ð° %s â€” 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹%s: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ°Ðº 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚, Ð° %s â€” 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹%s: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð´Ð»Ñ� Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s%s: Ð¿ÐµÑ€Ð²Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Â«eÂ», Â«iÂ» Ð¸Ð»Ð¸ Â«gÂ»%s: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA Â«%sÂ» Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° <Ð½Ð¾Ð¼ÐµÑ€>p%s: Ð½ÐµÑ‚ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°%s: Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾%s: Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�%s: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ð¼ÐµÑŽÑ‰Ð¸Ð¼Ñ�Ñ� Ñƒ Ñ�Ñ‚Ð¾Ð¹ Ñ†ÐµÐ»Ð¸ %s%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¾Ñ‚Ð´ÐµÐ»Ñ�Ñ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ _%s: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ�: %s%s: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ Â«%sÂ»%s: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ð¸Ð»Ð¸ ÐºÐ»Ð°Ñ�Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° Â«%cÂ»%scannot + Ð±Ð°Ð·Ð¾Ð²Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«%sÂ» Ð² %s Â«%sÂ»%sdeprecated - Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«%sÂ» Ð² %s Â«%sÂ»%sÐ½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA <Ð½Ð¾Ð¼ÐµÑ€>p Ð² %s Â«%sÂ»%sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Â«%sÂ» Ð² %s Â«%sÂ»%tlsdesc_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼(%s): Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� (ARM/Thumb) Ð² %pB(Ð¿Ð¾ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð¼Ñƒ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %u)
 (Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€)
-(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ð¾Ð´Ð¿Ð¸Ñ�ÑŒ %s Ð²Ð¾Ð·Ñ€Ð°Ñ�Ñ‚ %ld)
+(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ð¾Ð´Ð¿Ð¸Ñ�ÑŒ %s Ð²Ð¾Ð·Ñ€Ð°Ñ�Ñ‚ %ld pdb %s)
 (Ð½ÐµÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�)
 (Ð½Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾)
 (Ð½Ðµ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¾)
@@ -1179,28 +1273,24 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 , Ð¿Ñ�ÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼: %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>
+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
-Ð’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d Ð² %s
-ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� [.reloc]ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°Ð“Ñ€Ð°Ð½Ð¸Ñ†Ñ‹:
+<Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³Ð¸ Ð¼Ð°Ñ�ÐºÐ¸><Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %x><Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾>Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @pltoff Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°BASE_IMAGE       ÐžÐ¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ� BFD %s Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶Ð¸Ð» Ð¾ÑˆÐ¸Ð±ÐºÑƒ %s:%dÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� [.reloc]ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°Ð“Ñ€Ð°Ð½Ð¸Ñ†Ñ‹:
 Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ CACHE: CLIÐ—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� CLRCLUSTERS_LOCKMGR COUNTERS         CPU              CTL_AUGRB (Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�) %u
 CTL_DFLOC (Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ�)
 CTL_SETRB (ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ° Ð±Ð°Ð·Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�)
 CTL_STKDL (Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�ÐµÐ¼Ð¾Ðµ Ñ�Ñ‚ÐµÐºÐ¾Ð¼)
 CTL_STLOC (Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ�)
-Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÐºÐ¾Ð³Ð¾ Ð¿Ñ€Ð°Ð²Ð°
+Coolidge (kv3) V1 32-Ð±Ð¸Ñ‚Ð½Ð°Ñ�Coolidge (kv3) V1 64-Ð±Ð¸Ñ‚Ð½Ð°Ñ�Coolidge (kv3) V2 32-Ð±Ð¸Ñ‚Ð½Ð°Ñ�Coolidge (kv3) V2 64-Ð±Ð¸Ñ‚Ð½Ð°Ñ�Coolidge (kv4) V1 32-Ð±Ð¸Ñ‚Ð½Ð°Ñ�Coolidge (kv4) V1 64-Ð±Ð¸Ñ‚Ð½Ð°Ñ�Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÐºÐ¾Ð³Ð¾ Ð¿Ñ€Ð°Ð²Ð°
 ÐžÐ±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» .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: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ 0x%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: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d Ð² .debug_lineÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽDW_EH_PE_datarel Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ñ‚Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹:
 Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸:
-ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s
-Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s Ñ€Ñ�Ð´Ð¾Ð¼ Ñ� %s Ð² Ñ�Ñ‚Ñ€Ð¾ÐºÐµ %d Ð² %s
-ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ð¹EIHD: (Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, nbr Ð±Ð»Ð¾ÐºÐ¾Ð²: %u)
+ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ð¹EIHD: (Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, nbr Ð±Ð»Ð¾ÐºÐ¾Ð²: %u)
 Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ  = 0x%.8lx (%ld)
-Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ Ð¸ Ñ‚ÐµÐºÑƒÑ‰Ð¸Ð¹ Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐ¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Tag_MPextension_useÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¸Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ [.pdata]ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° [.edata (Ð¸Ð»Ð¸ Ð³Ð´Ðµ Ð¾Ð½ Ð½Ð°ÑˆÑ‘Ð»Ñ�Ñ�)]Ð¤Ð»Ð°Ð³Ð¸ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° 			%lx
+ÐžÑˆÐ¸Ð±ÐºÐ°: Ñƒ %pB Ð¸ %pB Ñ€Ð°Ð·Ð½Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ DSPÐžÑˆÐ¸Ð±ÐºÐ°: Ñƒ %pB Ð¸ %pB Ñ€Ð°Ð·Ð½Ñ‹Ðµ FPU ABIÐžÑˆÐ¸Ð±ÐºÐ°: Ñƒ %pB Ð¸ %pB Ñ€Ð°Ð·Ð½Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ VDSPÐ¾ÑˆÐ¸Ð±ÐºÐ°: %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 Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ†ÐµÐ»Ñ�Ð¼Ð¸ GNU Ð¸ FreeBSDÑ€Ð°Ð·Ð´ÐµÐ» GNU_RETAIN Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ†ÐµÐ»Ñ�Ð¼Ð¸ GNU Ð¸ FreeBSDÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GOT Ð¸ PLT Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ GOT Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¾ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ GP Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°ÐžÑ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°Ð�Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ñ‹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ldah Ð¸ lda Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GPDISPÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²:
 Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ FPU)
 Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, Ð»ÑŽÐ±Ð¾Ð¹ FPU)
 Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (MIPS32r2 64-bit FPU 12 Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ�ÑŽÑ‚Ñ�Ñ� Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ñ‹Ð¼)
@@ -1208,20 +1298,20 @@ 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)
 Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² & Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)
-ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾Ð²ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° [Ñ‡Ð°Ñ�Ñ‚ÑŒ .idata]LOGICAL_NAMES    Ð�Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð¾Ð³Ð¾ Ñ�Ð·Ñ‹ÐºÐ°
+ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾Ð²ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° [Ñ‡Ð°Ñ�Ñ‚ÑŒ .idata]Ð’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð¸Ð¶Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒ.Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ LAM_U48Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ LAM_U57LOGICAL_NAMES    Ð�Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð¾Ð³Ð¾ Ñ�Ð·Ñ‹ÐºÐ°
 Ð”Ð»Ð¸Ð½Ð°               = 0x%.8lx (%ld)
 ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� IFUNC Â«%sÂ» Ð² %pB
 MEMORY_MANAGEMENTÐ¤ÑƒÐ½ÐºÑ†Ð¸Ð¸ MIPS16 Ð¸ microMIPS Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð´Ñ€ÑƒÐ³ Ð´Ñ€ÑƒÐ³Ð°MISC             Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ MMU: MULTI_PROCESSING Ð¡Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹/ÐœÐ»Ð°Ð´ÑˆÐ¸Ð¹ 			%d/%d
 Ð”Ð»Ñ� Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� 0x%v
 MeP: howto %d Ð¸Ð¼ÐµÐµÑ‚ Ñ‚Ð¸Ð¿ %dÐžÐ±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ñ… Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¼Ð¾Ð´ÑƒÐ»Ñ�
-NETWORKS         NORMALÐ˜Ð¼Ñ� 				ÐžÑ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚Ð�Ð¾Ð¼ÐµÑ€ Ð²:
+NETWORKS         NORMALÐ—Ð�ÐœÐ•Ð§Ð�Ð�Ð˜Ð•: Ñ�Ñ‚Ð° Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ Ð¸ Ð±ÑƒÐ´ÐµÑ‚ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¾ Ð² Ð±ÑƒÐ´ÑƒÑ‰ÐµÐ¹ Ð²ÐµÑ€Ñ�Ð¸Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ°Ð˜Ð¼Ñ� 				ÐžÑ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚Ð�Ð¾Ð¼ÐµÑ€ Ð²:
 OPR_ADD (Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ)
 OPR_AND (Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¸)
 OPR_ASH (Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð´Ð²Ð¸Ð³)
@@ -1246,21 +1336,19 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 Ð”Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð°[%d]   = 0x%.8lx (%ld)
 Ð¡ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°[%d]  = 0x%.8lx (%ld)
 ÐŸÐ¾Ð¶Ð°Ð»ÑƒÐ¹Ñ�Ñ‚Ð°, Ñ�Ð¾Ð¾Ð±Ñ‰Ð¸Ñ‚Ðµ Ð¾Ð± Ñ�Ñ‚Ð¾Ð¹ Ð¾ÑˆÐ¸Ð±ÐºÐµ.
-ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ RL78 ABI: G10 Ð² Ñ„Ð°Ð¹Ð»Ðµ %pB Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pBÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ RL78 ABI: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pB Ñ� %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pBÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� RL78: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ Ð²Ð¼ÐµÑ�Ñ‚ÐµR_BFIN_FUNCDESC ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼R_BFIN_FUNCDESC_VALUE ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼R_FRV_TLSMOFFLO Ð½Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ð¼Ð¾ Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ setlo Ð¸Ð»Ð¸ setlos
+CÐ¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lx : ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ RL78 ABI: G10 Ð² Ñ„Ð°Ð¹Ð»Ðµ %pB Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pBÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ RL78 ABI: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pB Ñ� %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pBÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� RL78: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ Ð²Ð¼ÐµÑ�Ñ‚ÐµÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð´ÐµÐ»Ð¸Ñ‚Ñ�Ñ� Ð½Ð° Ð½Ð¾Ð»ÑŒÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð²Ñ‹Ñ…Ð¾Ð´ Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ Ñ�Ñ‚ÐµÐºÐ°R_AMD64_IMAGEBASE Ñ� __ImageBase Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½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_ Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°SECURITY         SEC_RELOC Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pASHELL            SHRFXDSHRPICÐ˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ SIMD: SPSC â€” Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ð°
+Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð¾Ð² [.rsrc]Ð�Ð´Ñ€ÐµÑ� S12 (%lx) Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð¹ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ (0x2000-0x4000), Ð¿Ð¾Ñ�Ñ‚Ð¾Ð¼Ñƒ Ð²Ñ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² ÐºÐ¾Ð´ÐµÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SDA, Ð½Ð¾ _SDA_BASE_ Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°SECURITY         SEC_RELOC Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pAÐ Ð°Ð·Ð´ÐµÐ»Ñ‹ SFrame Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñ‹Ð¼ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð½Ðµ Ð´Ð°ÑŽÑ‚ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ .sframeSHELL            SHRFXDSHRPICÐ¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ SHSTKÐ˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ SIMD: SPSC â€” Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ð°
 STABLE           STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹ Ñ�Ñ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ�)
 STA_GBL (Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ñ‚ÐµÐº) %.*s
 STA_LI (Ñ�Ñ‚ÐµÐº Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð°)
-STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²) 0x%08x
-STA_MOD (Ñ�Ñ‚ÐµÐº Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹)
+STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²)STA_MOD (Ñ�Ñ‚ÐµÐº Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹)
 STA_PQ (Ñ�Ñ‚ÐµÐº psect Ð±Ð°Ð·Ð° + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)
-STA_QW (Ñ�Ñ‚ÐµÐº Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²) 0x%08x %08x
-STC_BOH_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BOH Ð¿Ð¾ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ)
+STO_QW (Ñ�Ñ‚ÐµÐº ÑƒÑ‡ÐµÑ‚Ð²ÐµÑ€Ñ‘Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²)STC_BOH_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BOH Ð¿Ð¾ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ)
 STC_BOH_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BOH Ð¿Ð¾ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)
 STC_BSR_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BSR Ð¿Ð¾ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ)
 STC_BSR_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ BSR Ð¿Ð¾ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)
@@ -1299,27 +1387,27 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¸Ñ�Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð²
 Ð¡Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ° Ð´Ð»Ñ� Ð²Ñ‹Ð·Ð¾Ð²Ð° Ð³Ñ€Ð°Ñ„Ð° ÐºÐ¾Ñ€Ð½ÐµÐ²Ñ‹Ñ… ÑƒÐ·Ð»Ð¾Ð².
 Ð¨Ð°Ð³Ð¸:
-Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹: %s Ð² %pB, Ñ€Ð°Ð½ÐµÐµ REGISTER Ð² %pBTLS-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾Ð²
-ÐŸÐ¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ðµ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ð Ð°Ð·Ð¼ÐµÑ€ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°
+Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹: %s Ð² %pB, Ñ€Ð°Ð½ÐµÐµ REGISTER Ð² %pBTLS-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ TOC Ð¿Ñ€Ð¸ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� -mminimal-tocÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾Ð²
+Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾ Ð´Ð»Ñ� R_RISCV_GOT_HI20ÐŸÐ¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ðµ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ð Ð°Ð·Ð¼ÐµÑ€ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°
 ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ð° Ð½Ð¸Ñ‚ÐµÐ¹ [.tls]ÐœÐµÑ‚ÐºÐ° Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸/Ð´Ð°Ñ‚Ñ‹ 		%lx
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ� Ñ‚ÐµÐºÑ�Ñ‚Ð°
 Ð¡Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ñ�ÐºÑ€Ñ‹Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð° (%ld)
 Ð¢Ð¸Ð¿                Ð Ð°Ð·Ð¼ÐµÑ€     Rva      Ð¡Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ
-USRSTACKÐ�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %xÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W (%v) Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (0x%v) Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)
+USRSTACKÐ�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚-Ð·Ð°Ð³Ð»ÑƒÑˆÐºÑƒ %sÐ�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»: %sÐ�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ DLL.Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %xÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W (%v) Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (0x%v) Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)
 ÐžÐ±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W (0x%v) Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (0x%v) Ð¸ %pB (0x%v)
 VOLATILE         Ð’Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .pdata (%ld) Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ‡ÐµÐ¼ Ñ€ÐµÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ (%ld)
 ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s (%ld) Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ %d
 ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %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 Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ�Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÐµÐ¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°:
+ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð´Ð»Ñ� Ñ�Ð²Ñ�Ð·Ð¸ Profiles Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ�Ð¼Ð¸ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ "_"Ð—Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ‘Ð½Ð½Ð¾Ð¹ Ð¼ÐµÑ‚ÐºÐ¸ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ armapÐ�Ð´Ñ€ÐµÑ� XGATE (%lx) Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ð¾Ð±Ñ‰ÐµÐ¹ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð¹ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ (0xE000-0xFFFF), Ð¿Ð¾Ñ�Ñ‚Ð¾Ð¼Ñƒ Ð²Ñ‹ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð°Ð´Ñ€ÐµÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸, Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ�Ñ‚ÑŒ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†ÐµÐ¹ Ð² ÐºÐ¾Ð´Ðµ.[%u]: Ð½Ð¸Ð¶Ð½Ñ�Ñ�: %u, Ð²ÐµÑ€Ñ…Ð½Ñ�Ñ�: %u
+[abi=16-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ int, [abi=32-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ int, [Ñ‡ÑŒÑ‘ Ð¸Ð¼Ñ� Ð¿Ð¾Ñ‚ÐµÑ€Ñ�Ð½Ð¾]\%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� BLX %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ %s Â«%sÂ»__tls_get_addr Ð²Ñ‹Ð·Ð²Ð°Ð»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ�Ð¾ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ� Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚Â«%sÂ» Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½Ðµ Ð¿ÑƒÑ�Ñ‚ÑƒÑŽ Ð²Ñ…Ð¾Ð´Ð½ÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽÂ«xtheadvectorÂ» ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÐµÐ¼ Â«v/zve32xÂ»Â«zclsdÂ» ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÐµÐ¼ Â«c+fÂ»/Â«zcfÂ»Â«zfinxÂ» ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÐµÐ¼ Â«f/d/q/zfh/zfhminÂ»Ð¾Ð±ÑŠÐµÐºÑ‚ 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: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lxbfd_mach_o_read_section_64: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lxbfd_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
+Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ (PC rel16) Ð² Ñ€Ð°Ð·Ð´ÐµÐ» (%s) Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð°Ð´Ñ€ÐµÑ�ÑƒÐ¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� bss-plt Ð¸Ð·-Ð·Ð° Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� bss-plt Ð¸Ð·-Ð·Ð° %pBcÂ» Ð¸Ð»Ð¸ Â«zcaÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÑƒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº JALX Ð´Ð»Ñ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ðº JALX Ð´Ð»Ñ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %sÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ EMH Ð² Ð¿ÐµÑ€Ð²Ð¾Ð¹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST
+Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ð¸ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ Ð´Ð»Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA Â«%sÂ»Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DMT
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DMT
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DMT psect
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DST
@@ -1335,67 +1423,73 @@ Plural-Forms:  nplurals=3; plural=(n%10=
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ GST
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ GST
 Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð¸ 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
+Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ R_LARCH_PCREL20_S2 Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð¸Ð· [-2048, 2048)ÐºÐ»Ð°Ñ�Ñ�: %u, dtype: %u, Ð´Ð»Ð¸Ð½Ð°: %u, ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ: 0x%08x
+Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð² %pBÐ·Ð°Ð¿Ð¸Ñ�ÑŒ EEOM Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° (%#x)Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ð¿Ð¾Ð»Ðµ psindx Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ ETIRÐ¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ vms Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ GST
+Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» %sÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __ctbpÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __epÐ½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __gpÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð· Â«%sÂ» Ð¸Ð· Â«%sÂ»Ð¦ÐŸ=HC11]Ð¦ÐŸ=HC12]Ð¦ÐŸ=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€=XGATE]dÂ» Ð¸ Â«cÂ» Ð¸Ð»Ð¸ Â«zcddÂ» Ð¸ Â«zfadÂ» Ð¸Ð»Ð¸ Â«zdinxÐ¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¾ÑˆÐ¸Ð±ÐºÐ° Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�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 Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾ÐµÐ½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼ Ð¸Ð½Ð´ÐµÐºÑ�ÐµÐ´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¸Ð¸ 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 Ñ�Ð¾Ð·Ð´Ð°Ð½Ð° Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² %pB(%pA); Ñ€Ð°Ð·Ð´ÐµÐ» .sframe Ñ�Ð¾Ð·Ð´Ð°Ð½ Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² %pB(%pA): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° SFrameÐ¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� %s: %sÐ¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð° Ð¸Ð· Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… elfÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ€Ñ…Ð½ÑŽÑŽ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð´Ð°Ð½Ð½Ñ‹Ñ…, Ð½Ð¾ %pB Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð°Ð³Ð°ÐµÑ‚, Ñ‡Ñ‚Ð¾ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ð½Ð¸Ð¶Ð½ÐµÐ¹ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ LOAD Ñ� Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ RWXÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ TLS Ñ� Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð½Ð° Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB ÑƒÐ¶Ðµ Ð² ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ BE8Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� APCS-%d, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº Ñ†ÐµÐ»ÑŒ %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ APCS-%dÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %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: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° RISC-V: 0x%x>Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° (0x%x): 0x%x>Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° x86 (0x%x): 0x%x>Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… (%s) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ (%s)Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ð¸Ð¸ SB Ð¸ R9Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: XLEN Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… (%u) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ð¼Ð¸ (%u)error: %pB: Ð½ÐµÐ»ÑŒÐ·Ñ� Ñ�Ð¼ÐµÑˆÐ¸Ð²Ð°Ñ‚ÑŒ rf16 Ñ� Ð¿Ð¾Ð»Ð½Ñ‹Ð¼ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ Ñ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ� %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISAÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %c/%cÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s: %s Ñ� %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ R9Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Â«%sÂ». ÐŸÐµÑ€Ð²Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð±Ñ‹Ñ‚ÑŒ Â«iÂ» Ð¸Ð»Ð¸ Â«eÂ», Ð½Ð¾ Ð¸Ð¼ÐµÐµÐ¼ Â«%sÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ ISA Ð´Ð»Ñ� Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Â«%sÂ» Ð¸ Â«%sÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±ÑŠÐµÐºÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ðµ, Ð·Ð°Ð´Ð°Ð²Ð°ÐµÐ¼Ñ‹Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÐµÐ¼, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð°Ñ‚Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ñ�Ð±Ð¾Ñ€ÐºÐ¸ Â«%sÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ‚ÐµÐ³ Â«%d, %sÂ» Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚ÐµÐ³Ð¾Ð¼ Â«%d, %sÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ñ‹Ðµ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð¦ÐŸ %s Ñ� %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISAÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ñ� %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ XLEN (%u), Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ñ�Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s: Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸ÑŽ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° (Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» .note.GNU-stack)Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s: Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸ÑŽ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» .note.GNU-stackÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ %pB Ñ� Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ %pB Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %sÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ñ‹Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %s Ð¸ %s Ð² %pBÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° Ð¸Ð·-Ð·Ð° Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -z execstack Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð¾ÐºÐµÐ¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÐ¾Ð½ÐµÑ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� uleb128 Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ 0x%lx Ð² %pA Ð¸Ð· %pB Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ 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 Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ñ‹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹fÂ» Ð¸ Â«cÂ» Ð¸Ð»Ð¸ Â«zcffÂ» Ð¸Ð»Ð¸ Â«zfinxÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð´Ð»Ñ� Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ HI16Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfoÐ½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð¼ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ÐµÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ .fixupÑ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÐµÑ„Ð°Ð¹Ð» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹Ñ„Ð°Ð¹Ð» ÑƒÑ�ÐµÑ‡Ñ‘Ð½ÐºÐ¾Ð½ÐµÑ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� uleb128 Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ 0x%lx Ð² %pA Ð¸Ð· %pB Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð² Ð´Ð°Ð»ÑŒÐ½ÐµÐ¹ÑˆÐµÐ¼, Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ� Ð¾ Ð½Ðµ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ .eh_frame_hdr Ð¸Ð·-Ð·Ð° ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� FDE Ð±ÑƒÐ´ÑƒÑ‚ Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ�ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº Ð½Ðµ Ñ�Ð¼Ð¾Ð³ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %sÐ³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð° Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°hÑ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹ Ð¦ÐŸ Ð² Ñ„Ð°Ð¹Ð»Ð°Ñ… 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
+Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ SFrame Ñ� Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸Ð¼Ñ�Ñ� abi Ð½Ðµ Ð´Ð°Ñ‘Ñ‚ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ .sframeÐ²Ñ…Ð¾Ð´Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ SFrame Ñ� Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸Ð¼Ð¸Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼Ð¸ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ð½Ðµ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ�ÑŽÑ‚ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ .sframeÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� %sÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ/Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ñ�Ñ‚Ñ€Ð°Ð½Ð½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�ÑƒÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Â«%sÂ» Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾Ð¹ Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð´Ð¾Ð·Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .got.locÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐµ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ðµ: Ð¾Ñ�Ñ‚Ð°Ñ‘Ñ‚Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ� %lu; Ñ�Ð¾Ð¾Ð±Ñ‰Ð¸Ñ‚Ðµ Ð¾Ð± Ñ�Ñ‚Ð¾Ð¼ Ð´ÐµÑ„ÐµÐºÑ‚ÐµÐ²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÑƒÑ‚Ñ€Ñ�Ð½ÐºÐ°: Ð½ÑƒÑ‚Ñ€Ñ�Ð½ÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð¸Ð¶Ð¸Ð¼Ñ‹Ð¹ INSN_CLASS_*Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ %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
+ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ð¹ Ð¾Ð±Ñ€Ð°Ð·Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿ÐµÐ·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ñ…Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ñ…Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ ÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¸Ð½Ð´ÐµÐºÑ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»mÂ» Ð¸Ð»Ð¸ Â«zmmulmach-o: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² (%u), Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½Ðµ Ð±Ð¾Ð»ÐµÐµ 255,
+Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ 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 Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ
-Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @fptrÐ½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ�Ñ€Ð°Ð·Ð´ÐµÐ», Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ñ‹Ð¹ Ð´Ð»Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð°Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOTÐ½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²ÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ð½Ñ‹Ðµ=%lx Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d
-Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� env Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð°
- [Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð¾]Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ Ð�Ð• error-free !Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�ÐºÐ»ÐµÐ¹ÐºÐ¸ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€ÑƒÐ¾Ð´Ð½Ð¾Ð¹ Ð¸Ð· Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ñ… Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ Ñ�Ñ‚Ð¾Ð¹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾, Ñ‡Ñ‚Ð¾ Ð² ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼ ÐºÐ¾Ð´Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ñ� Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸ÐµÐ¼, Ñ‡ÐµÐ¼ Ð±Ñ‹Ð»Ð¾ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¾ Ð² ÐµÐ³Ð¾ Ð¼ÐµÑ�Ñ‚Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ�Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ�Ð»Ðµ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ�Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹Ð½Ð¾Ð¹ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ
+Ð¸Ð¼Ñ�: [Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: %08lx Ð´Ð»Ð¸Ð½Ð° %d]: Ñ€Ð¾Ð´Ð½Ð¾Ð¹Ð¿Ð¾Ñ�Ð²Ð¸Ð»Ð°Ñ�ÑŒ Ð½Ð¾Ð²Ð°Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ�(Ð¸), Ð½Ð¾ Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ Ð²Ñ‹Ð²Ð¾Ð´ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸:Ð½ÐµÑ‚Ð½Ðµ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½ Ð°Ð´Ñ€ÐµÑ� Ñ�ÐºÐ»ÐµÐ¹ÐºÐ°Ð¼ Ð² Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %sÐ½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼ Ð¸Ð½Ð´ÐµÐºÑ�ÐµÐ½ÐµÑ‚ Ð¾ÑˆÐ¸Ð±ÐºÐ¸Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¸Ñ�ÑŒÐ½ÐµÑ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²Ð½ÐµÑ�Ð²Ñ�Ð·Ð½Ñ‹Ð¹ Ð¼Ð°Ñ�Ñ�Ð¸Ð² %s
+Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %sÐ½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²Ð½Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ 0x%v Ð¿Ð»ÑŽÑ� Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð²ÐµÑ€Ð»ÐµÑ� 0x%v Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ðµ
+Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @fptrÐ½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ�Ñ€Ð°Ð·Ð´ÐµÐ», Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ñ‹Ð¹ Ð´Ð»Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð°Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOTÐ½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²ÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ [Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð¾]Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ Ð�Ð• error-free !Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�ÐºÐ»ÐµÐ¹ÐºÐ¸ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€ÑƒÐ¾Ð´Ð½Ð¾Ð¹ Ð¸Ð· Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ñ‹Ñ… Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ Ñ�Ñ‚Ð¾Ð¹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾, Ñ‡Ñ‚Ð¾ Ð² ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼ ÐºÐ¾Ð´Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ñ� Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸ÐµÐ¼, Ñ‡ÐµÐ¼ Ð±Ñ‹Ð»Ð¾ Ð¾Ð±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¾ Ð² ÐµÐ³Ð¾ Ð¼ÐµÑ�Ñ‚Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ�Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ�Ð»Ðµ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ�Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹Ð½Ð¾Ð¹ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð¼Ð¾Ð´ÑƒÐ»ÑŒÐ½Ð°Ñ� Ð¸Ð½Ñ„Ñ€Ð°Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ð°: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¸Ñ�ÑŒ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ðµ Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ñ‹. ÐŸÐ¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÐ½ÑŒÑˆÐµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð²/Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð²
+ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ
 Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lxÑ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx:Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx: Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lxÑ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lx:Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð°Ð´Ñ€ÐµÑ� bkpt 0x%08x
-Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» recbeg: Ð¸Ð¼Ñ�: %.*s
+Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» qÂ» Ð¸ Â«zfaqÂ» Ð¸Ð»Ð¸ Â«zqinxrecbeg: Ð¸Ð¼Ñ�: %.*s
 recend
-Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� [%lx:%04lx] Ð² Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %04lxÑ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð´Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÑŽÑ€ÐµÐ³Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° %%g%d: %s Ð² %pB, Ñ€Ð°Ð½ÐµÐµ %s Ð² %pBÐ² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ
-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) *Ð�Ð•Ð˜Ð—Ð’Ð•Ð¡Ð¢Ð�Ðž*Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½Ðµ-REL psectÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ñ‡Ñ‘Ñ‚Ð½Ñ‹Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼ÐµÐ¶Ð´Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚Ñ�Ñ�ÑƒÐ´Ð°Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð² Ñ„Ð°Ð¹Ð»Ðµ Â«%pBÂ»Ð¿ÐµÑ€ÐµÐ¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %pB: %s
-Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹ cmd %drtnbeg
+Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Â«gcc -mno-relaxÂ», Â«as -mno-relaxÂ» Ð¸Ð»Ð¸ Â«ld --no-relaxÂ»Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð° Ð´Ð»Ñ� Ð´Ð»Ð¸Ð½Ñ‹ Ð¸Ð¼ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð±Ð°Ð½ÐºÐ¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� [%lx:%04lx] Ð² Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %04lxÑ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ð´Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼Ð¾Ð¶ÐµÑ‚ Ð¿Ñ€Ð¸Ð²ÐµÑ�Ñ‚Ð¸ Ðº Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÑŽÑ€ÐµÐ³Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° %%g%d: %s Ð² %pB, Ñ€Ð°Ð½ÐµÐµ %s Ð² %pBÐ² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ
+Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) *Ð�Ð•Ð˜Ð—Ð’Ð•Ð¡Ð¢Ð�Ðž*Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ GOT Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½Ðµ-REL psectÐ¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ñ‡Ñ‘Ñ‚Ð½Ñ‹Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼ÐµÐ¶Ð´Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚Ñ�Ñ�ÑƒÐ´Ð°Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð² Ñ„Ð°Ð¹Ð»Ðµ Â«%pBÂ»Ð¿ÐµÑ€ÐµÐ¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %pB: %sÐ·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹ cmd %drtnbeg
 rtnend: Ñ€Ð°Ð·Ð¼ÐµÑ€ 0x%08x
-Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾septyp, Ð¸Ð¼Ñ�: %.*s
+rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«qÂ»rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«smmpmÂ»rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«smnpmÂ»rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«ssnpmÂ»rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«sspmÂ»rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«supmÂ»rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«zcfÂ»rv%de Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«hÂ»Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾septyp, Ð¸Ð¼Ñ�: %.*s
 set_abs_pc: 0x%08x
 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 Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹; ÑƒÐ¼ÐµÐ½ÑŒÑˆÐ¸Ñ‚Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ� small-data (Ñ�Ð¼. Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)smctrÂ» Ð¸Ð»Ð¸ Â«ssctrsom_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 Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ†ÐµÐ»Ñ�Ð¼Ð¸ GNU Ð¸ FreeBSDÐ´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ», Ð½Ð¾ ÐµÐ³Ð¾ Ð½Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ STT_GNU_IFUNC Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ†ÐµÐ»Ñ�Ð¼Ð¸ GNU Ð¸ FreeBSDÐ¾ÑˆÐ¸Ð±ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð°Ð¼Ð°Ñ�Ñ�Ð¸Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹:
 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Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð½Ñ‹Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ñ…/Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ gpvÂ» Ð¸Ð»Ð¸ Â«zve64dÂ» Ð¸Ð»Ð¸ Â«zve64fÂ» Ð¸Ð»Ð¸ Â«zve32fvÂ« Ð¸Ð»Ð¸ Â«zve64xÂ» Ð¸Ð»Ð¸ Â«zve32xÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 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 Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ LOAD Ñ� Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ RWXÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ TLS Ñ� Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð½Ð° Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %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(%s): ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ Thumb (Ð¦ÐŸ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Thumb) Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %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: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ°: 0x%xÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ MSPABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %dÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ ABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° RISCV %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: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ Ð½ÐµÑ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�
- Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼: Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½: % != Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½: %%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
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÑƒÐ¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ %s, Ð° Ð½Ðµ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²Ð¸Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .note.GNU-stack Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°ÐµÑ‚ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ñ�Ñ‚ÐµÐºÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ñ�Ñ‚ÐµÐº (Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ€Ð°Ð·Ð´ÐµÐ» .note.GNU-stack Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹)Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: (%s): ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ Thumb (Ð¦ÐŸ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Thumb) Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --plt-localentry Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð½Ð¾ Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð±ÐµÐ· Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ Ð² ld.so Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð½Ð°Ñ€ÑƒÑˆÐµÐ½Ð¸Ð¹ ABIÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --plt-localentry Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼ power10Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÐŸÐ Ð˜ÐœÐ•Ð§Ð�Ð�Ð˜Ð•: Ð¿Ñ€Ð¸ Ñ€Ð°Ñ�Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ�Ñ… Ð² Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ð¸ Ð¼Ð¾Ð³ÑƒÑ‚ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°Ñ‚ÑŒ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñ‹. Ð ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð¾Ð±Ñ€Ð°Ñ‚ÑŒÑ�Ñ� Ñ� Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¾Ð¹.Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÐŸÐ Ð˜ÐœÐ•Ð§Ð�Ð�Ð˜Ð•: Ð¿Ñ€Ð¸ Ñ€Ð°Ñ�Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ�Ñ… Ð² Ñ€Ð°Ð·Ð¼ÐµÑ€Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°Ñ‚ÑŒ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñ‹. Ð ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð¾Ð±Ñ€Ð°Ñ‚ÑŒÑ�Ñ� Ñ� Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¾Ð¹.Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RX_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð±Ð¾Ð»ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ (%u) ÐµÐ³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pAÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ %u, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ð¾Ð±Ñ‰Ð¸Ð¼ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ %u Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð·Ð¾Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð±Ñ€Ð¾Ñ� Ñ„Ð»Ð°Ð³Ð° Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ %pB, Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ� Ð½Ð¸Ð¼ Ð±Ñ‹Ð» Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð±ÐµÐ· Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð¸Ð· %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‡Ð¸Ñ‰Ð°ÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð¸Ð·-Ð·Ð° Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð·Ð°Ð¿Ñ€Ð¾Ñ�Ð°Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚ÐºÐ¸
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° Ð¸Ð·-Ð·Ð° Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ -z execstackÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ %pB Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %s ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼ %s, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ Ñ„Ð»Ð°Ð³ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ %pB Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %s ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼ %s, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ %sÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ GCS.
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ BTI.
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ GCS.
+Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PIC ÐºÐ¾Ð´Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PID ÐºÐ¾Ð´Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð½Ðµ ÑƒÑ�Ñ‚Ð°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�, Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ð½ ÑƒÐ¶Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚ÑƒÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ 1.9.1 Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ� Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·ÑƒÐµÑ‚Ñ�Ñ� Ð² Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸ÐµÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ð½Ð° PROGBITSÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸ Ð½Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ð¸ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ñ� %d Ð½Ð° %d Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pBÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¸Ð¼Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Â«%#xÂ»Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ eflag Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Â«%#lxÂ»Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ñ‹ Ð¸Ð»Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð¸ Ñ„Ð»Ð°Ð³Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð°ÑˆÐ¸Ð½Ð° Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð² Ð°Ñ€Ñ…Ð¸Ð²: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð¼ÐµÑ‚ÐºÐ° Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¿Ð¾ Ð¾Ð³Ñ€Ð¾Ð¼Ð½Ð¾Ð¼Ñƒ (Ñ‚. Ðµ., Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¼Ñƒ) Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð¼Ñƒ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽÐ¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» xdata
+Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ x ISA Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼Ð¸Ð´Ð°Ð²Ð°Ð¼ Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�Ñ‚ÑŒ %s Ð² Ñ�Ñ†ÐµÐ½Ð°Ñ€Ð¸Ð¸zbbÂ» Ð¸Ð»Ð¸ Â«zbkbzbcÂ» Ð¸Ð»Ð¸ Â«zbkczcbÂ» Ð¸ Â«zbazcbÂ» Ð¸ Â«zbbzcbÂ» Ð¸ Â«zmmulÂ», Ð¸Ð»Ð¸ Â«zcbÂ» Ð¸ Â«mzcmpÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð° Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÐµÐ¼ Â«dÂ» Ð¸ Â«cÂ» Ð¸Ð»Ð¸ Â«d/zcdÂ»zfhÂ» Ð¸ Â«zfazfhÂ» Ð¸ Â«zfaÂ», Ð¸Ð»Ð¸ Â«zvfhÂ» Ð¸ Â«zfazfhÂ» Ð¸Ð»Ð¸ Â«zhinxzfhÂ» Ð¸Ð»Ð¸ Â«zvfhzfhminÂ» Ð¸ Â«dÂ», Ð¸Ð»Ð¸ Â«zhinxminÂ» Ð¸ Â«zdinxzfhminÂ» Ð¸ Â«qÂ», Ð¸Ð»Ð¸ Â«zhinxminÂ» Ð¸ Â«zqinxzfhminÂ» Ð¸Ð»Ð¸ Â«zhinxminzicfissÂ» Ð¸ Â«zcmopzihintntlÂ» Ð¸ Â«cÂ», Ð¸Ð»Ð¸ Â«zihintntlÂ» Ð¸ Â«zcazkndÂ» Ð¸Ð»Ð¸ Â«zknezvbbzvbczvkbzvkgzvknedzvknhaÂ» Ð¸Ð»Ð¸ Â«zvknhbzvksedzvkshÐ´Ð»Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ð¹ zvl*b Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«vÂ» Ð¸Ð»Ð¸ Â«zveÂ»PRIx64PRIu64PRId64PRIx32%pB: %# overflows header %s field%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: TLS relocation at 0x% over non-TLS symbol %s (0x%x)
+%pB: TLS local relocation at 0x% over imported symbol %s
+%pB: relocation (%d) at 0x% has wrong r_rsize (0x%x)
+%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: relocation (%d) at (0x%) has wrong r_rsize (0x%x)
+%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: stripping non-representable symbol '%s' (value 0x%)%pB: bad reloc address %# in section `%pA'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(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%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+%#): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)%pB(%pA+%#): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)%pB(%pA+%#): cannot handle %s for %s%pB: bad reloc offset (%# > %#) for section `%pA'ip2k 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(%pA+%#): relocation %s against misaligned symbol `%s' (%#) in %pB%pB: bad reloc offset (%# > %#) for section `%pA'%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: %pA+%: relocation addend % too large%pB: version count (%) does not match symbol count (%ld)%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: bad symbol definition: `Main' set to % rather than the start address %
+%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB(%pA+%#): %s relocation offset out of order%pB(%pA+%#): %s relocation offset out of range%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 csect%pB: Unable to find a stub csect in rangeof relocation at %# targeting'%s'TOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB: error: erratum 843419 immediate 0x% out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead%pB(%pA+%#): unresolvable %s relocation in section `%s'%# invaild imm%pB: R_LARCH_ALIGN with offset % not aligned to instruction boundary%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x% without any addend, but may be 0x% after adding the %%pcrel_lo addend%pB: Data Directory (%lx bytes at %) extends across section boundary at %%pB: %#: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ð»Ñ� %s Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ % >= %%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TOC Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð±ÐµÐ· Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° TOC%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x% Ð½Ð°Ð´ Ð½Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ TLS %s (0x%x)
+%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x% Ð½Ð°Ð´ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ %s
+%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x% Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ r_rsize (0x%x)
+%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_USES%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_SH_USES ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½ÑƒÑŽ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ %#x%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ñ‡Ð½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_SH_USES%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ COUNT%pB: %#: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº%pB: %#: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ñ€Ð¸ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ð¸%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ (0x%) Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ r_rsize (0x%x)
+%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ñ€Ð¾Ðº %#%pB: ÑƒÐ´Ð°Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ 0x%)%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %# Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB(%pA) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%# Ð±Ð°Ð¹Ñ‚)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%#) Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¸Ð»Ð¸ Ñ€Ð°Ð²Ð½Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ %s (%#)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð´Ð°Ð½Ð½Ñ‹Ñ… (%#) Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð±ÑƒÑ„ÐµÑ€Ð°Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ‚Ð¸Ð¿Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾ %#Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð» (%)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ð±Ð¾Ð»ÑŒÑˆÐµ (%) Ñ‡ÐµÐ¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾, Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐµÑ�Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%#lx)Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ %Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ñ‹Ð¹ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ DIE %%pB(%pA+%#): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %u >= % Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»%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+%#): Ð¿ÐµÑ€ÐµÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ° %#x Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %#x Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð° 8 (gp %#x)%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ° %#x Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %#x Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð° 4 (gp %#x)%pB(%pA+%#): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %s Ð´Ð»Ñ� %s%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� (%# > %#) Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%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: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ Ð½ÐµÑ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�
+ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼: Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½: % != Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½: %%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€ $% Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼; Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€: $%%pB(%pA+%#): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¿Ð¾ Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» (%#) Ð² %pB%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� (%# > %#) Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð²Ð¼ÐµÑ�Ñ‚Ðµ Ñ� STT_GNU_IFUNC Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ: %%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ %s%#x Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %# Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ».%pB: %pA+%: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ % Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾%pB: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð²ÐµÑ€Ñ�Ð¸Ð¸ (%) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ�Ð¾ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° (%ld)%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: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«MainÂ» Ñ€Ð°Ð²ÐµÐ½ %, Ð° Ð½Ðµ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %
+%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° %%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð´Ð»Ñ� Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² Ð´Ð»Ð¸Ð½Ñ‹ %: %#%pB(%pA+%#): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð²Ð½Ðµ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ°%pB(%pA+%#): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°%pB: Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» XTY_ER Â«%sÂ»: ÐºÐ»Ð°Ñ�Ñ� %d scnum %d scnlen %%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð¾Ð¼ %d scnlen %%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s:% Ð½Ðµ Ð² csect%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÑƒ csect Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ rangeof Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#, ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‰ÐµÐ¼Ñƒ Ð½Ð° Â«%sÂ»Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ TOC: % > 0x10000; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� -mminimal-toc%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ñ…Ð¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ 0x% Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð°Ð¼Ð¸ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Ð´Ð»Ñ� ADR (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð») Ð¸ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� --fix-cortex-a53-843419=adr. Ð’Ð¼ÐµÑ�Ñ‚Ð¾ Ñ�Ñ‚Ð¾Ð³Ð¾ Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --fix-cortex-a53-843419=full%pB(%pA+%#): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ»%# Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ%pB: R_LARCH_ALIGN Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ % Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸%pB(%pA+%#): Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� % Ð±Ð°Ð¹Ñ‚ Ð´Ð»Ñ� Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ� Ð¿Ð¾ %-Ð±Ð°Ð¹Ñ‚Ð½Ð¾Ð¹ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ, Ð½Ð¾ ÐµÑ�Ñ‚ÑŒ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ %Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ %%pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %%pcrel_hi Ñ€Ð°Ð²Ð½Ð¾ 0x% Ð±ÐµÐ· Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ð¹, Ð½Ð¾ Ð¼Ð¾Ð¶ÐµÑ‚ Ñ�Ñ‚Ð°Ñ‚ÑŒ 0x% Ð¿Ð¾Ñ�Ð»Ðµ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ� %%pcrel_lo%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.20200303/bfd/po/ru.po ./bfd/po/ru.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/ru.po	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/ru.po	2026-03-05 02:07:20.000000000 +0000
@@ -2,13 +2,14 @@
 # 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, 2021, 2023, 2024.
+# SPDX-FileCopyrightText: 2009, 2010, 2011, 2012, 2018, 2019, 2020, 2021, 2023, 2024, 2025 Yuri Kozlov <yuray@komyakino.ru>
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.31.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"
+"Project-Id-Version: bfd 2.44.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2025-07-13 08:44+0100\n"
+"PO-Revision-Date: 2025-07-18 09:05+0300\n"
 "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
 "Language-Team: Russian <gnu@d07.ru>\n"
 "Language: ru\n"
@@ -16,668 +17,751 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Lokalize 2.0\n"
+"X-Generator: Lokalize 25.04.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:444 pdp11.c:481
+#, c-format
+msgid "%pB: %#<PRIx64> overflows header %s field"
+msgstr "%pB: %#<PRIx64>: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ð»Ñ� %s Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ"
+
+#: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495
 #, 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:1562 pdp11.c:1467
 #, 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:1565 vms-alpha.c:8473
 msgid "*unknown*"
 msgstr "*Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾*"
 
-#: aoutx.h:1721
+#: aoutx.h:1701 pdp11.c:1563
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ %<PRIu64> >= %<PRIu64>"
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1945
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� AOUT: %d"
+
+#: aoutx.h:2389 aoutx.h:2407 pdp11.c:2040
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr "%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#: aoutx.h:4086
+#: aoutx.h:4040 pdp11.c:3402
 #, 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
-#: 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
+#: aoutx.h:4360 coff-alpha.c:604 coff-mips.c:356 coff-rs6000.c:3037
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531
+#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4692
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6246 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2211 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3294
+#: elf32-nds32.c:3315 elf32-nds32.c:5084 elf32-or1k.c:1085 elf32-pj.c:326
+#: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291
+#: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347
+#: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163
+#: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537
+#: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924
+#: elf32-v850.c:4254 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510
+#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4058
+#: elf64-alpha.c:4206 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3428 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:331 elf64-s390.c:381 elf64-x86-64.c:305 elf64-x86-64.c:2558
+#: elfn32-mips.c:3799 elfxx-ia64.c:324 elfxx-loongarch.c:1897
+#: elfxx-riscv.c:1068 elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:907
+#: elfxx-tilegx.c:947 elfnn-aarch64.c:2215 elfnn-aarch64.c:2316
+#: elfnn-ia64.c:214 elfnn-ia64.c:3823 elfnn-kvx.c:259
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#x"
 
-#: aoutx.h:5434 pdp11.c:3694
+#: aoutx.h:5380 pdp11.c:3818
 #, 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:748
+msgid "%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr "%P: %pB(%s): Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ð¸ Ñ‡Ð»ÐµÐ½Ð° Ñ‚Ð¾Ð½ÐºÐ¾Ð³Ð¾ Ð°Ñ€Ñ…Ð¸Ð²Ð°: %E\n"
+
+#: archive.c:2282
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð² Ð°Ñ€Ñ…Ð¸Ð²: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð¼ÐµÑ‚ÐºÐ° Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸"
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2351 archive.c:2408 elflink.c:4956 linker.c:1470
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr "%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° lto Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð¾Ð´ÑƒÐ»ÑŒ"
 
-#: archive.c:2559
+#: archive.c:2640
 msgid "Reading archive file mod timestamp"
 msgstr "Ð§Ñ‚ÐµÐ½Ð¸Ðµ Ð¼ÐµÑ‚ÐºÐ¸ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ� Ð°Ñ€Ñ…Ð¸Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°"
 
-#: archive.c:2583
+#: archive.c:2671
 msgid "Writing updated armap timestamp"
 msgstr "Ð—Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ‘Ð½Ð½Ð¾Ð¹ Ð¼ÐµÑ‚ÐºÐ¸ Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ armap"
 
-#: bfd.c:449
+#: bfd.c:793
 msgid "no error"
 msgstr "Ð½ÐµÑ‚ Ð¾ÑˆÐ¸Ð±ÐºÐ¸"
 
-#: bfd.c:450
+#: bfd.c:794
 msgid "system call error"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð°"
 
-#: bfd.c:451
+#: bfd.c:795
 msgid "invalid bfd target"
 msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ñ†ÐµÐ»ÑŒ bfd"
 
-#: bfd.c:452
+#: bfd.c:796
 msgid "file in wrong format"
 msgstr "Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ"
 
-#: bfd.c:453
+#: bfd.c:797
 msgid "archive object file in wrong format"
 msgstr "Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð² Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ"
 
-#: bfd.c:454
+#: bfd.c:798
 msgid "invalid operation"
 msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ� Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ�"
 
-#: bfd.c:455
+#: bfd.c:799
 msgid "memory exhausted"
 msgstr "Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð°Ñ�ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ"
 
-#: bfd.c:456
+#: bfd.c:800
 msgid "no symbols"
 msgstr "Ð½ÐµÑ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
 
-#: bfd.c:457
+#: bfd.c:801
 msgid "archive has no index; run ranlib to add one"
 msgstr "Ð°Ñ€Ñ…Ð¸Ð² Ð±ÐµÐ· Ð¸Ð½Ð´ÐµÐºÑ�Ð°; Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ðµ ranlib Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ�"
 
-#: bfd.c:458
+#: bfd.c:802
 msgid "no more archived files"
 msgstr "Ð°Ñ€Ñ…Ð¸Ð²Ð½Ñ‹Ðµ Ñ„Ð°Ð¹Ð»Ñ‹ Ð·Ð°ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¸Ñ�ÑŒ"
 
-#: bfd.c:459
+#: bfd.c:803
 msgid "malformed archive"
 msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ð²"
 
-#: bfd.c:460
+#: bfd.c:804
 msgid "DSO missing from command line"
 msgstr "Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð¾ÐºÐµ Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ DSO"
 
-#: bfd.c:461
+#: bfd.c:805
 msgid "file format not recognized"
 msgstr "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½"
 
-#: bfd.c:462
+#: bfd.c:806
 msgid "file format is ambiguous"
 msgstr "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½"
 
-#: bfd.c:463
+#: bfd.c:807
 msgid "section has no contents"
 msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾"
 
-#: bfd.c:464
+#: bfd.c:808
 msgid "nonrepresentable section on output"
 msgstr "Ñ€Ð°Ð·Ð´ÐµÐ», Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ñ‹Ð¹ Ð´Ð»Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð°"
 
-#: bfd.c:465
+#: bfd.c:809
 msgid "symbol needs debug section which does not exist"
 msgstr "Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ», Ð½Ð¾ ÐµÐ³Ð¾ Ð½Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚"
 
-#: bfd.c:466
+#: bfd.c:810
 msgid "bad value"
 msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ"
 
-#: bfd.c:467
+#: bfd.c:811
 msgid "file truncated"
 msgstr "Ñ„Ð°Ð¹Ð» ÑƒÑ�ÐµÑ‡Ñ‘Ð½"
 
-#: bfd.c:468
+#: bfd.c:812
 msgid "file too big"
 msgstr "Ñ„Ð°Ð¹Ð» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹"
 
-#: bfd.c:469
+#: bfd.c:813
+msgid "sorry, cannot handle this file"
+msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ�Ñ‚Ð¾Ñ‚ Ñ„Ð°Ð¹Ð»"
+
+#: bfd.c:814
 #, c-format
 msgid "error reading %s: %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� %s: %s"
 
-#: bfd.c:470
+#: bfd.c:815
 msgid "#<invalid error code>"
 msgstr "#<Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸>"
 
-#: bfd.c:1429
+#: bfd.c:2266
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ� BFD %s Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶Ð¸Ð» Ð¾ÑˆÐ¸Ð±ÐºÑƒ %s:%d"
 
-#: bfd.c:1442
+#: bfd.c:2279
 #, c-format
-msgid "BFD %s internal error, aborting at %s:%d in %s\n"
-msgstr "Ð’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d Ð² %s\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr "%s: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d Ð² %s\n"
 
-#: bfd.c:1447
+#: bfd.c:2283
 #, c-format
-msgid "BFD %s internal error, aborting at %s:%d\n"
-msgstr "Ð’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d\n"
+msgstr "%s: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° BFD %s, Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð² Ð½Ð° %s:%d\n"
 
-#: bfd.c:1449
+#: bfd.c:2286
+#, c-format
 msgid "Please report this bug.\n"
 msgstr "ÐŸÐ¾Ð¶Ð°Ð»ÑƒÐ¹Ñ�Ñ‚Ð°, Ñ�Ð¾Ð¾Ð±Ñ‰Ð¸Ñ‚Ðµ Ð¾Ð± Ñ�Ñ‚Ð¾Ð¹ Ð¾ÑˆÐ¸Ð±ÐºÐµ.\n"
 
-#: bfdwin.c:206
-#, c-format
-msgid "not mapping: data=%lx mapped=%d\n"
-msgstr "Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ð½Ñ‹Ðµ=%lx Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d\n"
-
-#: bfdwin.c:209
-#, c-format
-msgid "not mapping: env var not set\n"
-msgstr "Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� env Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð°\n"
-
-#: binary.c:276
+#: binary.c:277
 #, c-format
 msgid "warning: writing section `%pA' at huge (ie negative) file offset"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¿Ð¾ Ð¾Ð³Ñ€Ð¾Ð¼Ð½Ð¾Ð¼Ñƒ (Ñ‚. Ðµ., Ð¾Ñ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¼Ñƒ) Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð¼Ñƒ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ"
 
-#: cache.c:271
+#: cache.c:290
 #, c-format
-msgid "reopening %pB: %s\n"
-msgstr "Ð¿ÐµÑ€ÐµÐ¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %pB: %s\n"
+msgid "reopening %pB: %s"
+msgstr "Ð¿ÐµÑ€ÐµÐ¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� %pB: %s"
 
 #: coff-alpha.c:450
 #, c-format
 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:914 coff-alpha.c:941 coff-alpha.c:2009 coff-mips.c:948
 msgid "GP relative relocation used when GP not defined"
 msgstr "Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¾ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ GP Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: coff-alpha.c:1443
+#: coff-alpha.c:1177 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13195
+#: elfxx-mips.c:13594 reloc.c:8602 reloc16.c:314
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%RÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½\n"
+
+#: coff-alpha.c:1183 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13604
+#: reloc.c:8612
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
+
+#: coff-alpha.c:1189 elfxx-mips.c:13613 reloc.c:8621
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð¸Ð»Ð¾ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %x\n"
+
+#: coff-alpha.c:1515
 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:1992
 #, c-format
-msgid "%pB: %s unsupported"
-msgstr "%pB: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½\n"
+
+#: coff-alpha.c:2004
+#, c-format
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
+
+#: coff-go32.c:167 coffswap.h:812
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: 0x%lx > 0xffff"
 
-#: coff-mips.c:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
-#: elf64-mips.c:3451 elfn32-mips.c:3276
+#: coff-mips.c:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
 msgid "GP relative relocation when _gp not defined"
 msgstr "ÐžÑ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GP, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: coff-rs6000.c:2858
+#: coff-rs6000.c:484 coff64-rs6000.c:377
+#, c-format
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ swap_aux_in Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð° Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %#x"
+
+#: coff-rs6000.c:571 coff64-rs6000.c:497
+#, c-format
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ swap_aux_out Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð° Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %#x"
+
+#: coff-rs6000.c:3127
 #, 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:3251 coff64-rs6000.c:848
+#, c-format
+msgid "Unable to find the stub entry targeting %s"
+msgstr "Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚-Ð·Ð°Ð³Ð»ÑƒÑˆÐºÑƒ %s"
+
+#: coff-rs6000.c:3366
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%<PRIx64> Ð½Ð°Ð´ Ð½Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ TLS %s (0x%x)\n"
+
+#: coff-rs6000.c:3379
+#, c-format
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%<PRIx64> Ð½Ð°Ð´ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ %s\n"
+
+#: coff-rs6000.c:3785
+#, c-format
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%<PRIx64> Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ r_rsize (0x%x)\n"
+
+#: coff-rs6000.c:4047 coff64-rs6000.c:2021
 #, 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:781 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:792
 #, 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:810 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:835 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:852 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:973 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:983 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:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
 msgstr "%pB: %#<PRIx64>: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ñ€Ð¸ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ð¸"
 
-#: coff-sh.c:1454
+#: coff-sh.c:1443
 #, c-format
 msgid "%pB: fatal: generic symbols retrieved before relaxing"
 msgstr "%pB: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð¿ÐµÑ€ÐµÐ´ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ñ‹ Ð¾Ð±Ñ‰Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹"
 
-#: coff-sh.c:2785 cofflink.c:2965
+#: coff-sh.c:2773 cofflink.c:2986
 #, 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-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5305
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %ld Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…"
 
-#: coff-tic80.c:441
+#: coff-x86_64.c:147
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr "R_AMD64_IMAGEBASE Ñ� __ImageBase Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
+
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
 #, c-format
-msgid "unsupported relocation type %#x"
-msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#x"
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr "%pB: C_STAT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² XCOFF64"
 
-#: coff-tic80.c:672 cofflink.c:3127
+#: coff64-rs6000.c:477
 #, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %#<PRIx64> Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»"
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ auxtype %#x Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð° Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %#x"
+
+#: coff64-rs6000.c:1598
+#, c-format
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ (0x%<PRIx64>) Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ r_rsize (0x%x)\n"
 
-#: coffcode.h:954
+#: coffcode.h:951
 #, 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:976
+#, c-format
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
+
+#: coffcode.h:1148
 #, c-format
 msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ COMDAT"
 
-#: coffcode.h:1001
+#: coffcode.h:1159
 #, c-format
 msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² COMDAT Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ð¼ÐµÐ½ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: coffcode.h:1011
-#, c-format
-msgid "%pB: warning: no symbol for section '%s' found"
-msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
-
 #. 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:1267
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s"
 
-#: coffcode.h:1306
+#: coffcode.h:1337
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr "%pB (%s): Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s (%#lx)"
 
-#: coffcode.h:1917
+#: coffcode.h:1945
+#, c-format
+msgid "%pB: overflow reloc count too small"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸ÐºÐ° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð¾"
+
+#: coffcode.h:1954 coffcode.h:2019
 #, c-format
 msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´Ð°ÐµÑ‚Ñ�Ñ�, Ñ‡Ñ‚Ð¾ ÐµÑ�Ñ‚ÑŒ 0xffff Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹, Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ�"
 
-#: coffcode.h:2315
+#: coffcode.h:2402
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
 msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ Ñ†ÐµÐ»Ð¸ TI COFF Â«0x%xÂ»"
 
-#: coffcode.h:2599
+#: coffcode.h:2681
 #, c-format
 msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰ÐµÐ¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¸Ð½Ð´ÐµÐºÑ�Ñƒ: %ld"
 
-#: coffcode.h:2910
-#, c-format
-msgid "%pB: page size is too large (0x%x)"
-msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ (0x%x)"
-
-#: coffcode.h:3070
+#: coffcode.h:3153
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² (%d)"
 
-#: coffcode.h:3489
+#: coffcode.h:3681
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�Ñ‚Ñ€Ð¾Ðº Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %ld"
 
-#: coffcode.h:3589
+#: coffcode.h:3782
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr "%pB:%s Ñ€Ð°Ð·Ð´ÐµÐ» %s: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ 2**%u Ð½Ðµ Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ð¾"
 
-#: coffcode.h:4276
-#, c-format
-msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
-msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ñ�Ñ‚Ñ€Ð¾Ðº (%#lx) Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%#lx)"
-
-#: coffcode.h:4291
+#: coffcode.h:4523
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº"
 
-#: coffcode.h:4325 coffcode.h:4339
+#: coffcode.h:4569 coffcode.h:4583
 #, 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:4597
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %d Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸"
 
-#: coffcode.h:4366
+#: coffcode.h:4610
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð´Ð»Ñ� Â«%sÂ»"
 
-#: coffcode.h:4774
+#: coffcode.h:5034
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr "%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� %d Ð´Ð»Ñ� %s, Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: coffcode.h:4904
+#: coffcode.h:5174
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: coffcode.h:5050
+#: coffcode.h:5345
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>"
 
-#: coffgen.c:178 elf.c:1216
-#, c-format
-msgid "%pB: unable to initialize compress status for section %s"
-msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ�Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
-
-#: coffgen.c:202 elf.c:1227
+#: coffgen.c:257 elf.c:1060
 #, c-format
-msgid "%pB: unable to initialize decompress status for section %s"
-msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ€Ð°Ð·Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
+msgid "%pB: unable to compress section %s"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¶Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» %s"
 
-#: coffgen.c:1657
+#: coffgen.c:267 elf.c:1070
 #, c-format
-msgid "%pB: corrupt symbol count: %#<PRIx64>"
-msgstr "%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: %#<PRIx64>"
+msgid "%pB: unable to decompress section %s"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ€Ð°Ñ�Ð¶Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» %s"
 
-#. 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:1795
 #, 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:2179 coffgen.c:2318 cofflink.c:2051 ecoff.c:1444 elf.c:2313
+#: elf.c:2345 pef.c:214 syms.c:789 xcofflink.c:384 xcofflink.c:5577
 msgid "<corrupt>"
 msgstr "<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾>"
 
-#: coffgen.c:2114
+#: coffgen.c:2208
 #, c-format
 msgid "<corrupt info> %s"
 msgstr "<Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ� Ð¾ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ð¸> %s"
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
-msgid "%F%P: already_linked_table: %E\n"
-msgstr "%F%P: already_linked_table: %E\n"
+#: coffgen.c:2818 elflink.c:15490 linker.c:3061
+msgid "%P: already_linked_table: %E\n"
+msgstr "%P: already_linked_table: %E\n"
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3175 elflink.c:14430
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr "ÑƒÐ´Ð°Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð² Ñ„Ð°Ð¹Ð»Ðµ Â«%pBÂ»"
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3252 elflink.c:14661
 msgid "warning: gc-sections option ignored"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�"
 
-#: cofflink.c:352
+#: cofflink.c:399
 #, 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:504 elf64-ia64-vms.c:5200 elflink.c:5587
 #, 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:2379
 #, c-format
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ», Ð½Ð¾ Ð¾Ð½ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾"
 
-#: cofflink.c:2436 elflink.c:10810
+#: cofflink.c:2442 elflink.c:11880
 #, 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:2637
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr "%pB: ÑƒÐ´Ð°Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ 0x%<PRIx64>)"
+
+#: cofflink.c:2755
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr "%pB: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#x > 0xffff"
 
-#: cofflink.c:2742
+#: cofflink.c:2763
 #, c-format
 msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#x > 0xffff"
 
-#: coffswap.h:789
+#: cofflink.c:3157
 #, 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:826
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%pB: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: 0x%lx > 0xffff"
 
-#: compress.c:260
+#: compress.c:732 compress.c:749 libbfd.c:1322
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB(%pA) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%#<PRIx64> Ð±Ð°Ð¹Ñ‚)"
 
-#: cpu-arm.c:298 cpu-arm.c:310
-#, 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:438
 #, c-format
 msgid "warning: unable to update contents of %s section in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pB"
 
-#: dwarf2.c:544
+#: dwarf2.c:702
 #, c-format
 msgid "DWARF error: can't find %s section."
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½"
 
-#: dwarf2.c:579
+#: dwarf2.c:710
+#, c-format
+msgid "DWARF error: section %s has no contents"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾"
+
+#. PR 26946
+#: dwarf2.c:719
+#, c-format
+msgid "DWARF error: section %s is too big"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹"
+
+#: dwarf2.c:754
 #, 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:1501
 msgid "DWARF error: info pointer extends beyond end of attributes"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð²"
 
-#: dwarf2.c:1275
+#: dwarf2.c:1693
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ FORM: %#x"
 
-#: dwarf2.c:1581
+#: dwarf2.c:2050
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº (Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)"
 
-#: dwarf2.c:1926
+#: dwarf2.c:2614
 msgid "DWARF error: zero format count"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ"
 
-#: dwarf2.c:1936
+#: dwarf2.c:2624
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð´Ð°Ð½Ð½Ñ‹Ñ… (%#<PRIx64>) Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð±ÑƒÑ„ÐµÑ€Ð°"
 
-#: dwarf2.c:1977
+#: dwarf2.c:2663
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ‚Ð¸Ð¿Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾ %#<PRIu64>"
 
-#: dwarf2.c:2057
+#: dwarf2.c:2736
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ… Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð» (%<PRId64>)"
 
-#: dwarf2.c:2087
+#: dwarf2.c:2763
 #, 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:2776
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d Ð² .debug_line"
 
-#: dwarf2.c:2110
+#: dwarf2.c:2785
 msgid "DWARF error: ran out of room reading prologue"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð¿Ñ€Ð¸ Ñ‡Ñ‚ÐµÐ½Ð¸Ð¸ Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ð°"
 
-#: dwarf2.c:2128
+#: dwarf2.c:2801
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ %u Ñ�ÐµÐ»ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ñ�Ñ‚Ñ€Ð¾ÐºÐ°Ñ…"
 
-#: dwarf2.c:2155
+#: dwarf2.c:2823
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ðµ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹ Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ"
 
-#: dwarf2.c:2174
+#: dwarf2.c:2835
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð¿Ñ€Ð¸ Ñ‡Ñ‚ÐµÐ½Ð¸Ð¸ ÐºÐ¾Ð´Ð¾Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¹"
 
-#: dwarf2.c:2347
+#: dwarf2.c:3012
 msgid "DWARF error: mangled line number section"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½"
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:3483
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ñ€ÐµÐºÑƒÑ€Ñ�Ð¸Ñ� Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð°"
+
+#: dwarf2.c:3517 dwarf2.c:3607
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ñ‹Ð¹ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ DIE"
 
-#: dwarf2.c:2889
+#: dwarf2.c:3533
 #, 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:3585
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ñ‹Ð¹ Ñ�ÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ DIE %<PRIu64>"
+
+#: dwarf2.c:3622 dwarf2.c:3938 dwarf2.c:4511
 #, 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:4211
+#, c-format
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ 0x%lx"
+
+#: dwarf2.c:4357 dwarf2.c:4611
+msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ð²Ñ�Ñ‚Ñ€ÐµÑ‡ÐµÐ½ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ DW_AT_comp_dir Ð² Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð¼ Ð²Ð¸Ð´Ðµ"
 
-#: dwarf2.c:3376
+#: dwarf2.c:4428
 #, 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:4475
 #, 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
-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:1005
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: isymMax (%ld) Ð±Ð¾Ð»ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ ifdMax (%ld)"
 
-#: ecoff.c:1268
+#: ecoff.c:1301
 #, c-format
 msgid "unknown basic type %d"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ %d"
 
-#: ecoff.c:1525
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -686,7 +770,7 @@ msgstr ""
 "\n"
 "      Ð¡Ð¸Ð¼Ð²Ð¾Ð» End+1: %ld"
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1566 ecoff.c:1569
 #, c-format
 msgid ""
 "\n"
@@ -695,7 +779,7 @@ msgstr ""
 "\n"
 "      ÐŸÐµÑ€Ð²Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %ld"
 
-#: ecoff.c:1548
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -704,7 +788,7 @@ msgstr ""
 "\n"
 "      Ð¡Ð¸Ð¼Ð²Ð¾Ð» End+1: %-7ld   Ð¢Ð¸Ð¿:  %s"
 
-#: ecoff.c:1555
+#: ecoff.c:1592
 #, c-format
 msgid ""
 "\n"
@@ -713,7 +797,7 @@ msgstr ""
 "\n"
 "      Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %ld"
 
-#: ecoff.c:1563
+#: ecoff.c:1600
 #, c-format
 msgid ""
 "\n"
@@ -722,7 +806,7 @@ msgstr ""
 "\n"
 "      struct; Ñ�Ð¸Ð¼Ð²Ð¾Ð» End+1: %ld"
 
-#: ecoff.c:1568
+#: ecoff.c:1605
 #, c-format
 msgid ""
 "\n"
@@ -731,7 +815,7 @@ msgstr ""
 "\n"
 "      union; Ñ�Ð¸Ð¼Ð²Ð¾Ð» End+1: %ld"
 
-#: ecoff.c:1573
+#: ecoff.c:1610
 #, c-format
 msgid ""
 "\n"
@@ -740,7 +824,7 @@ msgstr ""
 "\n"
 "      enum; Ñ�Ð¸Ð¼Ð²Ð¾Ð» End+1: %ld"
 
-#: ecoff.c:1579
+#: ecoff.c:1618
 #, c-format
 msgid ""
 "\n"
@@ -749,328 +833,358 @@ msgstr ""
 "\n"
 "      Ð¢Ð¸Ð¿: %s"
 
-#: elf-attrs.c:446
+#: elf-attrs.c:424 elf-attrs.c:454 elf-attrs.c:596
+msgid "error adding attribute"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°"
+
+#: elf-attrs.c:513
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð°: %ld"
+
+#: elf-attrs.c:623
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Â«%pAÂ»: %#llx"
 
-#: elf-attrs.c:487
+#: elf-attrs.c:642
 #, c-format
-msgid "%pB: error: attribute section length too small: %<PRId64>"
-msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð°: %<PRId64>"
+msgid "%pB: error: unknown attributes version '%c'(%d) - expecting 'A'\n"
+msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² Â«%cÂ»(%d) â€” Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Â«AÂ»\n"
 
-#: elf-attrs.c:615
+#: elf-attrs.c:688
 #, 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:698
 #, 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
+#: elf-eh-frame.c:952
 #, c-format
 msgid "discarding zero address range FDE in %pB(%pA).\n"
 msgstr "Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÐ¼ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² FDE Ð² %pB(%pA).\n"
 
-#: elf-eh-frame.c:1049
+#: elf-eh-frame.c:1057
 #, 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
+#: elf-eh-frame.c:1548
 #, 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
+#: elf-eh-frame.c:1555
 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:1878
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr "%pB: %pA Ð½Ðµ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð¾"
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1892
 #, c-format
 msgid "%pB: %pA invalid input section size"
 msgstr "%pB: %pA Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: elf-eh-frame.c:1890
+#: elf-eh-frame.c:1900
 #, c-format
 msgid "%pB: %pA points past end of text section"
 msgstr "%pB: %pA ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚ÐµÐºÑ�Ñ‚Ð°"
 
-#: elf-eh-frame.c:2139
+#: elf-eh-frame.c:2153
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr "DW_EH_PE_datarel Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ñ‚Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹"
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2323
 #, 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:2346
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr "Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA"
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2500
 msgid ".eh_frame_hdr entry overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° .eh_frame_hdr"
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2502
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ".eh_frame_hdr Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð¿ÐµÑ€ÐµÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð¸ÐµÑ�Ñ� FDE"
 
-#: elf-ifunc.c:149
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1713
 #, 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"
+msgid "%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: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ 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:2146 elf32-bfin.c:3132 elf32-cr16.c:1429
+#: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624
+#: elf32-m32r.c:2839 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1983
+#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6099
+#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5084
+#: elf32-tilepro.c:3371 elf32-v850.c:2297 elf32-visium.c:680
+#: elf32-xstormy16.c:931 elf64-bpf.c:339 elf64-mmix.c:1537 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:2150 elf32-bfin.c:3136 elf32-cr16.c:1433
+#: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2843 elf32-m68hc1x.c:1275
+#: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681 elf32-moxie.c:292
+#: elf32-msp430.c:1510 elf32-nds32.c:6103 elf32-or1k.c:1899 elf32-score.c:2728
+#: elf32-score7.c:2539 elf32-spu.c:5088 elf32-tilepro.c:3375 elf32-v850.c:2301
+#: elf32-visium.c:684 elf32-xstormy16.c:935 elf64-mmix.c:1541
+#: elfxx-mips.c:10727 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:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2847 elf32-m68hc1x.c:1279
+#: elf32-microblaze.c:1685 elf32-nds32.c:6107 elf32-score.c:2732
+#: elf32-score7.c:2543 elf32-spu.c:5092
 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:2167 elf32-bfin.c:3144 elf32-cr16.c:1441
+#: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636
+#: elf32-m32r.c:2851 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1995
+#: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518 elf32-mt.c:410
+#: elf32-nds32.c:6111 elf32-or1k.c:1907 elf32-score.c:2741 elf32-score7.c:2547
+#: elf32-spu.c:5096 elf32-tilepro.c:3383 elf32-v850.c:2321 elf32-visium.c:692
+#: elf32-xstormy16.c:943 elf64-bpf.c:352 elf64-mmix.c:1549 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°"
 
-#: elf-m10300.c:1029
+#: elf-m10300.c:1030
 #, c-format
 msgid "%pB: unsupported transition from %s to %s"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s"
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1197
 #, 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:2093 elf32-arm.c:13476 elf32-i386.c:3545 elf32-m32r.c:2333
+#: elf32-m68k.c:3931 elf32-s390.c:3074 elf32-sh.c:3674 elf32-tilepro.c:3274
+#: elf32-xtensa.c:3022 elf64-s390.c:3391 elf64-x86-64.c:5025 elfxx-sparc.c:2924
+#: elfxx-sparc.c:3820 elfxx-tilegx.c:3667 elfnn-aarch64.c:5743
+#: elfnn-aarch64.c:7361 elfnn-kvx.c:2773
 #, 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:2155
 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ (Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ -fpic?)"
 
-#: elf-m10300.c:2160
+#: elf-m10300.c:2159
 #, 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:2162
 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
-msgid "%P%F: --relax and -r may not be used together\n"
-msgstr "%P%F: --relax Ð¸ -r Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ð¼ÐµÑ�Ñ‚Ðµ\n"
+#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5627 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2691 reloc.c:8376 reloc16.c:155 elfnn-ia64.c:365
+msgid "%P: --relax and -r may not be used together\n"
+msgstr "%P: --relax Ð¸ -r Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ð¼ÐµÑ�Ñ‚Ðµ\n"
 
-#: elf-properties.c:65
+#: elf-properties.c:121
 #, c-format
 msgid "%pB: out of memory in _bfd_elf_get_property"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð² _bfd_elf_get_property"
 
-#: elf-properties.c:91
+#: elf-properties.c:150
 #, c-format
 msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ GNU_PROPERTY_TYPE (%ld): %#lx"
 
-#: elf-properties.c:112
+#: elf-properties.c:171
 #, 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
+#: elf-properties.c:210
 #, c-format
 msgid "warning: %pB: corrupt stack size: 0x%x"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ°: 0x%x"
 
-#: elf-properties.c:169
+#: elf-properties.c:228
 #, c-format
 msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñƒ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ� ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹: 0x%x"
 
-#: elf-properties.c:186
+#: elf-properties.c:243
+#, c-format
+msgid "warning: %pB: corrupt memory sealing size: 0x%x"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð³ÐµÑ€Ð¼ÐµÑ‚Ð¸Ñ‡Ð½Ð¾Ð¹ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸: 0x%x"
+
+#: elf-properties.c:262
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° (0x%x): 0x%x>"
+
+#: elf-properties.c:287
 #, 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
+#: elf-properties.c:467
 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
+#: elf-properties.c:473
 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:482 elf-properties.c:560
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB Ð¸ %pB\n"
 
-#: elf-properties.c:320
+#: elf-properties.c:486
 msgid "Removed property %W to merge %pB and %pB (not found)\n"
 msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)\n"
 
-#: elf-properties.c:339
+#: elf-properties.c:503
 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:512
 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:554
 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
 msgstr "Ð£Ð´Ð°Ð»ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ %W Ð¿Ñ€Ð¸ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ð¸ %pB (Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾) Ð¸ %pB (0x%v)\n"
 
+#: elf-properties.c:693 elfxx-aarch64.c:765
+msgid "%P: failed to create %s\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ %s\n"
+
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:798 elf-properties.c:800
 msgid "\n"
 msgstr "\n"
 
-#: elf-properties.c:553
+#: elf-properties.c:799
 msgid "Merging program properties\n"
 msgstr "ÐžÐ±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ñ‹Ñ… Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²\n"
 
+#: elf-sframe.c:201
+#, c-format
+msgid "error in %pB(%pA); unexpected SFrame section type"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² %pB(%pA): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° SFrame"
+
+#: elf-sframe.c:252
+#, c-format
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² %pB(%pA); Ñ€Ð°Ð·Ð´ÐµÐ» .sframe Ñ�Ð¾Ð·Ð´Ð°Ð½ Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚"
+
+#: elf-sframe.c:426
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr "Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ SFrame Ñ� Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸Ð¼Ñ�Ñ� abi Ð½Ðµ Ð´Ð°Ñ‘Ñ‚ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ .sframe"
+
+#: elf-sframe.c:437
+msgid "input SFrame sections with different format versions prevent .sframe generation"
+msgstr "Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ SFrame Ñ� Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸Ð¼Ð¸Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼Ð¸ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ð½Ðµ Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ�ÑŽÑ‚ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ .sframe"
+
+#: elf-sframe.c:450
+msgid "SFrame sections with unexpected data encoding prevent .sframe generation"
+msgstr "Ð Ð°Ð·Ð´ÐµÐ»Ñ‹ SFrame Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñ‹Ð¼ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð½Ðµ Ð´Ð°ÑŽÑ‚ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ .sframe"
+
+#: elf.c:299
+#, c-format
+msgid "%pB: string table [%u] is corrupt"
+msgstr "%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ñ‚Ñ€Ð¾Ðº [%u] Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°"
+
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:328
 #, c-format
 msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr "%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ Ð¸Ð· Ð½Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (Ð½Ð¾Ð¼ÐµÑ€ %d)"
 
-#: elf.c:360
+#: elf.c:353
 #, 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:512 elf32-arm.c:17779 elfnn-aarch64.c:8361 elfnn-loongarch.c:6449
+#: elfnn-riscv.c:3885
 #, 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
-#, c-format
-msgid "%pB: invalid size field in group section header: %#<PRIx64>"
-msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð³Ñ€ÑƒÐ¿Ð¿: %#<PRIx64>"
-
-#: elf.c:728
+#: elf.c:526
 #, c-format
-msgid "%pB: invalid entry in SHT_GROUP section [%u]"
-msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ SHT_GROUP [%u]"
+msgid "%pB symbol number %lu uses unsupported binding of %u"
+msgstr "%pB Ð² Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %lu Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ� Ð¿Ñ€Ð¸Ð²Ñ�Ð·ÐºÐ° %u"
 
-#: elf.c:747
+#: elf.c:538
 #, c-format
-msgid "%pB: no valid group sections found"
-msgstr "%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² Ð³Ñ€ÑƒÐ¿Ð¿"
+msgid "%pB symbol number %lu uses unsupported type of %u"
+msgstr "%pB Ð² Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %lu Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ %u"
 
-#. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:641
 #, c-format
-msgid "%pB: group section '%pA' has no contents"
-msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Ð³Ñ€ÑƒÐ¿Ð¿ Â«%pAÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾"
+msgid "%pB: could not read contents of group [%u]"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ [%u]"
 
-#: elf.c:837
+#: elf.c:672
 #, c-format
-msgid "%pB: no group info for section '%pA'"
-msgstr "%pB: Ð½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð³Ñ€ÑƒÐ¿Ð¿Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
+msgid "%pB: invalid entry (%#x) in group [%u]"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ (%#x) Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ [%u]"
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:691
 #, c-format
-msgid "%pB: warning: sh_link not set for section `%pA'"
-msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½ sh_link Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
+msgid "%pB: unexpected type (%#x) section `%s' in group [%u]"
+msgstr "%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ» Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ [%u]"
 
-#: elf.c:888
+#: elf.c:767
 #, c-format
 msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ sh_link [%d] Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ»"
 
-#: elf.c:901
-#, 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:796
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr "%pB: Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð³Ñ€ÑƒÐ¿Ð¿Ñ‹ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² %u Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½"
 
-#: elf.c:945
+#: elf.c:1078
 #, c-format
-msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
-msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ» Ð² Ð³Ñ€ÑƒÐ¿Ð¿Ðµ [%pA]"
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ñ�Ð¶Ð°Ñ‚ Ñ� Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ zstd, Ð½Ð¾ BFD Ñ�Ð¾Ð±Ñ€Ð°Ð½Ð° Ð±ÐµÐ· Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¸ zstd"
 
-#: elf.c:1408
+#: elf.c:1264
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ sh_link (%d) Ð² Ð½Ð¾Ð¼ÐµÑ€Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d"
 
-#: elf.c:1424
+#: elf.c:1280
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ñ�Ñ‹Ð»Ð¾Ðº Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d"
 
-#: elf.c:1451
+#: elf.c:1307
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %d"
 
-#: elf.c:1623
+#: elf.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -1079,7 +1193,7 @@ msgstr ""
 "\n"
 "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹:\n"
 
-#: elf.c:1665
+#: elf.c:1526
 #, c-format
 msgid ""
 "\n"
@@ -1088,7 +1202,7 @@ msgstr ""
 "\n"
 "Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»:\n"
 
-#: elf.c:1806
+#: elf.c:1665
 #, c-format
 msgid ""
 "\n"
@@ -1097,7 +1211,7 @@ msgstr ""
 "\n"
 "ÐžÐ±ÑŠÑ�Ð²Ð»ÐµÐ½Ð¸Ñ� Ð²ÐµÑ€Ñ�Ð¸Ð¹:\n"
 
-#: elf.c:1831
+#: elf.c:1690
 #, c-format
 msgid ""
 "\n"
@@ -1106,925 +1220,1128 @@ msgstr ""
 "\n"
 "Ð’ÐµÑ€Ñ�Ð¸Ð¸ Ñ�Ñ�Ñ‹Ð»Ð¾Ðº:\n"
 
-#: elf.c:1836
+#: elf.c:1695
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð· %s:\n"
 
-#: elf.c:2037
+#: elf.c:1944
+#, c-format
+msgid "%pB: DT_STRTAB table is corrupt"
+msgstr "%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° DT_STRTAB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°"
+
+#: elf.c:2451
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ Ð² Ð·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ð¾Ñ�Ñ‚Ñ�Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²"
 
-#: elf.c:2145
+#: elf.c:2559
 #, c-format
 msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %u"
 
-#: elf.c:2229
+#: elf.c:2644
 #, c-format
 msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð° Ð¿ÑƒÑ�Ñ‚Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %u"
 
-#: elf.c:2342
+#: elf.c:2763
 #, 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:2820
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�"
+
+#: elf.c:2905 elf.c:2919 elf.c:2930 elf.c:2943
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ [%#x] Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: elf.c:3248
+#: elf.c:3614
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÑ€Ð°Ñ‚Ð½Ð¾Ñ�Ñ‚ÑŒ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ� %d Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ°"
 
-#: elf.c:3278
+#: elf.c:3649
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½ Ð½Ð° PROGBITS"
 
-#: elf.c:3754
+#: elf.c:3981
+#, c-format
+msgid "%pB: corrupted group section: `%pA'"
+msgstr "%pB: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð³Ñ€ÑƒÐ¿Ð¿: Â«%pAÂ»"
+
+#: elf.c:4156
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %u"
 
-#: elf.c:3839
+#: elf.c:4242
 #, 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:4260
 #, 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:4860
 #, 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:5043
+msgid "%P: failed to size relative relocations\n"
+msgstr "%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹\n"
+
+#: elf.c:5470
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ TLS Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð½Ðµ Ñ€Ñ�Ð´Ð¾Ð¼:"
 
-#: elf.c:5020
+#: elf.c:5477
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr "\t    TLS: %pA"
 
-#: elf.c:5024
+#: elf.c:5481
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr "\t Ð½Ðµ-TLS: %pA"
 
-#: elf.c:5538
+#: elf.c:6103
 #, 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:6129
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð´Ð»Ñ� Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ¾Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹, Ð¿Ð¾Ð¿Ñ‹Ñ‚Ð°Ð¹Ñ‚ÐµÑ�ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -N"
 
-#: elf.c:5654
+#: elf.c:6256
 #, 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:6397
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD"
+
+#: elf.c:6437
 #, c-format
-msgid "%pB: section `%pA' can't be allocated in segment %d"
-msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ %d"
+msgid "%pB: section `%pA' can't be allocated in segment %u"
+msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ %u"
 
-#: elf.c:5839
+#: elf.c:6575
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½ Ð½Ðµ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ"
 
-#: elf.c:6072
+#: elf.c:6710
+#, c-format
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ ÐºÐ°ÐºÐ¸Ðµ-Ð»Ð¸Ð±Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ Ð² Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ðµ PT_GNU_RELRO"
+
+#: elf.c:6741
 #, 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
+#: elf.c:6894
 #, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD"
+msgid "error: %pB has a TLS segment with execute permission"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ TLS Ñ� Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð½Ð° Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ"
 
-#: elf.c:6606
+#: elf.c:6900
+#, c-format
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ TLS Ñ� Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð½Ð° Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ"
+
+#: elf.c:6915
+#, c-format
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ LOAD Ñ� Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ RWX"
+
+#: elf.c:6921
+#, c-format
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ LOAD Ñ� Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ RWX"
+
+#: elf.c:7316
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr "%pB: Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð½Ð¾ Ð¾Ð½ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚"
 
-#: elf.c:6949
+#: elf.c:7693
 #, c-format
 msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð¿Ð¾ vaddr=%#<PRIx64>, Ñ�Ñ‚Ð¾ Ñ‚Ð°Ðº Ð·Ð°Ð´ÑƒÐ¼Ñ‹Ð²Ð°Ð»Ð¾Ñ�ÑŒ?"
 
-#: elf.c:7574
+#: elf.c:8366
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° %#<PRIx64>"
 
-#: elf.c:8073
+#: elf.c:8848
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %x Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ ELF. Ð’Ð¼ÐµÑ�Ñ‚Ð¾ Ð½ÐµÐ³Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ ABS."
+
+#: elf.c:8878
 #, c-format
 msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰ÐµÐµ Ð¼ÐµÑ�Ñ‚Ð¾ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: elf.c:8421
+#: elf.c:9311
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ .gnu.version_r"
 
-#: elf.c:8548
+#: elf.c:9489
 #, 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:9992
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
+
+#: elf.c:10004
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ð±ÑƒÑ„ÐµÑ€"
+
+#: elf.c:10119 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7666
+#: elf32-ppc.c:8854 elf64-ppc.c:16870
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elf.c:10966
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ win32pstatus %s Ð² %lu Ð±Ð°Ð¹Ñ‚ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
+
+#: elf.c:11045
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr "%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ win32pstatus NOTE_INFO_MODULE Ð² %lu Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð», Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ñ…Ñ€Ð°Ð½Ð¸Ñ‚ÑŒ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ %u"
+
+#: elf.c:13726
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» GNU_MBIND Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ†ÐµÐ»Ñ�Ð¼Ð¸ GNU Ð¸ FreeBSD"
+
+#: elf.c:13729
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ STT_GNU_IFUNC Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ†ÐµÐ»Ñ�Ð¼Ð¸ GNU Ð¸ FreeBSD"
+
+#: elf.c:13732
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð°Ñ� Ð¿Ñ€Ð¸Ð²Ñ�Ð·ÐºÐ° STB_GNU_UNIQUE Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ†ÐµÐ»Ñ�Ð¼Ð¸ GNU Ð¸ FreeBSD"
+
+#: elf.c:13735
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» GNU_RETAIN Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ†ÐµÐ»Ñ�Ð¼Ð¸ GNU Ð¸ FreeBSD"
+
+#: elf.c:13952
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %zu Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %lu"
+
+#: elf.c:14027
+#, 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:14041
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸"
+
+#: elf.c:14055
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): Ð½ÐµÐ»ÑŒÐ·Ñ� Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸, Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð² Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ðµ"
+
+#: elf.c:14131
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ð´Ð²Ð°Ð¶Ð´Ñ‹"
+
+#: elf.c:14143
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°"
+
+#: elf.c:14155
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñ‹ Ð½ÐµÑ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°"
+
+#: elf.c:14169
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð¿ÑƒÑ�Ñ‚!"
+
+#: elf.c:14193
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‚ Ð´Ð»Ñ� Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹"
+
+#: elf.c:14213
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ %zu Ð¿ÑƒÑ�Ñ‚"
+
+#: elf.c:14238
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %zu Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
+
+#: elf.c:14256
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %zu Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
+
+#: elf.c:14270
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %zu Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ð°"
+
+#. 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-arc.c:454 elf32-arm.c:15198 elf32-frv.c:6618 elf32-iq2000.c:868
+#: elf32-m32c.c:915 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5531 elfnn-aarch64.c:7591
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lx:"
 
-#: elf32-arc.c:627
+#: elf32-arc.c:641
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ð²Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹ %s Ñ� %s"
 
-#: elf32-arc.c:646
+#: elf32-arc.c:660
 #, 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:697
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA"
 
-#: elf32-arc.c:707
+#: elf32-arc.c:721
 #, c-format
 msgid "error: %pB: conflicting ISA extension attributes %s with %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ Ñ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s Ñ� %s Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA"
 
-#: elf32-arc.c:747
+#: elf32-arc.c:761
 #, 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:789
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s: %s Ñ� %s"
 
-#: elf32-arc.c:802
+#: elf32-arc.c:816
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ %s"
 
-#: elf32-arc.c:907
+#: elf32-arc.c:921
 #, 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:937 elf32-iq2000.c:844 elf32-m32c.c:890 elf32-m68hc1x.c:1390
+#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15766
 #, 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:1026
 msgid "error: the ARC4 architecture is no longer supported"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° ARC4 Ð±Ð¾Ð»ÑŒÑˆÐµ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1032
 msgid "warning: unset or old architecture flags; use default machine"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ñ‹ Ð¸Ð»Ð¸ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð¸ Ñ„Ð»Ð°Ð³Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹; Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð¼Ð°ÑˆÐ¸Ð½Ð° Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ"
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1158
 #, 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:1169
 #, 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:1897
 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:1921 elf32-rx.c:1486
 #, 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:1926 elf32-rx.c:1491
 #, 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:1931 elf32-rx.c:1496
 #, 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:1936 elf32-rx.c:1501
 #, 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:1941 elf32-rx.c:1506
 #, 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:2035 elf32-arc.c:2103 elf32-arm.c:15641 elf32-metag.c:2250
+#: elf32-nds32.c:5549 elfnn-aarch64.c:7998 elfnn-riscv.c:915
 #, 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:2922
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° ARC %d"
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2930
 #, 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:4367 elf32-arm.c:4401 elf32-arm.c:4420 elf32-arm.c:4472
 #, 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:4432 elf32-arm.c:4486 elf32-arm.c:9185 elf32-arm.c:9275
 #, 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:4612
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "ÐžÐ¨Ð˜Ð‘ÐšÐ�: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° CMSE (Ñ€Ð°Ð·Ð´ÐµÐ» %s) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð°Ð»ÐµÐºÐ¾ (%#<PRIx64>) Ð¾Ñ‚ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� (%#<PRIx64>)"
+
+#: elf32-arm.c:4781
 #, 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:4856 elf32-arm.c:7005 elf32-csky.c:3387 elf32-hppa.c:581
+#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14180
+#: elfnn-aarch64.c:3200 elfnn-kvx.c:894
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s"
 
-#: elf32-arm.c:5957
+#: elf32-arm.c:5077 elf32-csky.c:3729 elf32-hppa.c:731 elf32-hppa.c:760
+#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3346
+#: elf64-ppc.c:12297 elf64-ppc.c:12305 xcofflink.c:4723 elfnn-aarch64.c:3272
+msgid "%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ Â«%pAÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
+
+#: elf32-arm.c:6048
 #, 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:6057
 #, 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:6096
 #, 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:6102
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr "%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6114
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr "%pB: Â«%sÂ» Ð¸ ÐµÐ³Ð¾ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð°Ñ…Ð¾Ð´Ñ�Ñ‚Ñ�Ñ� Ð² Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð°Ñ…"
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6126
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr "%pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð² Ð²Ñ‹Ð²Ð¾Ð´Ðµ"
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6133
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr "%pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¿ÑƒÑ�Ñ‚Ð°"
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6262
 #, 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:6311
 #, 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:6333
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr "Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� Â«%sÂ» Ð¸Ñ�Ñ‡ÐµÐ·Ð»Ð° Ð¸Ð· Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð°"
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6357
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr "Â«%sÂ» Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½Ðµ Ð¿ÑƒÑ�Ñ‚ÑƒÑŽ Ð²Ñ…Ð¾Ð´Ð½ÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ"
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6372
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr "%pB: Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»Ð°Ñ�ÑŒ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6381
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6400
 #, 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:6420
 msgid "new entry function(s) introduced but no output import library specified:"
 msgstr "Ð¿Ð¾Ñ�Ð²Ð¸Ð»Ð°Ñ�ÑŒ Ð½Ð¾Ð²Ð°Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ�(Ð¸), Ð½Ð¾ Ð½Ðµ ÑƒÐºÐ°Ð·Ð°Ð½ Ð²Ñ‹Ð²Ð¾Ð´ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸:"
 
-#: elf32-arm.c:6334
+#: elf32-arm.c:6428
 #, 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:7140 elf32-arm.c:7178
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ»"
 
-#: elf32-arm.c:7793
+#: elf32-arm.c:7890
 #, 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:8118
 #, 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:8145
 #, 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:8681 elf32-arm.c:8701 elf32-arm.c:8768 elf32-arm.c:8787
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ»"
 
-#: elf32-arm.c:8900
+#: elf32-arm.c:8994
 #, 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:9092
 #, 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:9861
 #, 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:10170 elf32-arm.c:10212
 #, 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:10493
+#, c-format
+msgid "warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB(%s): ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ Thumb (Ð¦ÐŸ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Thumb) Ð² %pB"
+
+#: elf32-arm.c:10498
+#, c-format
+msgid "warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: (%s): ÐŸÑ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð² Ñ€ÐµÐ¶Ð¸Ð¼Ðµ Thumb (Ð¦ÐŸ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Thumb) Ð² %pB"
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "%pB(%s): Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� (ARM/Thumb) Ð² %pB"
+
+#: elf32-arm.c:10531
+#, c-format
+msgid "(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "(%s): Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� (ARM/Thumb) Ð² %pB"
+
+#: elf32-arm.c:10619
 msgid "shared object"
 msgstr "Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚"
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10622
 msgid "PIE executable"
 msgstr "Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ PIE"
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10625
 #, 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:10727
+#, c-format
+msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "\\%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� BLX %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ %s Â«%sÂ»"
+
+#: elf32-arm.c:11144
 #, 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:11778
+#, c-format
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr "%pB: Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð² Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ðµ 0..%lu, Ð½Ð¾ Ð½Ð°Ð¹Ð´ÐµÐ½ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu"
+
+#: elf32-arm.c:12053 elf32-arm.c:12079
 #, 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:12125 elf32-csky.c:4958 elf32-m68k.c:3735 elf32-metag.c:1912
 #, 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:12339
 #, 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:12380 elf32-arm.c:12472 elf32-arm.c:12560 elf32-arm.c:12650
 #, 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:12708 elf32-arm.c:12867
+msgid "local symbol index too big"
+msgstr "Ð¸Ð½Ð´ÐµÐºÑ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹"
+
+#: elf32-arm.c:12718 elf32-arm.c:12752
+msgid "no dynamic index information available"
+msgstr "Ð½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼ Ð¸Ð½Ð´ÐµÐºÑ�Ðµ"
+
+#: elf32-arm.c:12760
+msgid "invalid dynamic index"
+msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�"
+
+#: elf32-arm.c:12877
+msgid "dynamic index information not available"
+msgstr "Ð½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼ Ð¸Ð½Ð´ÐµÐºÑ�Ðµ"
+
+#: elf32-arm.c:13308 elf32-sh.c:3568
 #, 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:13421 elf32-m68k.c:3968 elf32-xtensa.c:2760 elfnn-aarch64.c:7088
+#: elfnn-kvx.c:2569
 #, 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:13423 elf32-m68k.c:3970 elf32-xtensa.c:2762 elfnn-aarch64.c:7090
+#: elfnn-kvx.c:2571
 #, 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:13506 elf32-tic6x.c:2641 elfnn-aarch64.c:7425 elfnn-kvx.c:2798
 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:13510 elf32-pru.c:936 elf32-tic6x.c:2645 elfnn-aarch64.c:7429
+#: elfnn-kvx.c:2802
 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:13518 elf32-pru.c:946 elf32-tic6x.c:2653 elfnn-aarch64.c:7437
+#: elfnn-kvx.c:2810
 msgid "unknown error"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°"
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13995
 #, 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:13999
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‡Ð¸Ñ‰Ð°ÐµÑ‚Ñ�Ñ� Ñ„Ð»Ð°Ð³ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð¾Ð¹ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ð´Ð»Ñ� %pB Ð¸Ð·-Ð·Ð° Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ð·Ð°Ð¿Ñ€Ð¾Ñ�Ð°"
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:14044
 #, 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:14131
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-arm.c:13908
+#: elf32-arm.c:14139
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14474
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð°"
 
-#: elf32-arm.c:14213 elf32-nios2.c:2946
+#: elf32-arm.c:14512
 #, c-format
-msgid "error: %pB: conflicting CPU architectures %d/%d"
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %d/%d"
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ñ‹Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %s Ð¸ %s Ð² %pB"
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14609
 #, 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:14646
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ñ‹Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ VFP, Ð° %pB Ð½ÐµÑ‚"
 
-#: elf32-arm.c:14497
+#: elf32-arm.c:14816
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ð¸Ñ‚ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ‹ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ñ� %pB"
 
-#: elf32-arm.c:14523
+#: elf32-arm.c:14842
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %c/%c"
 
-#: elf32-arm.c:14662
+#: elf32-arm.c:14981
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ð²Ñ‹Ðµ Ð½Ð°Ñ�Ñ‚Ñ€Ð¾Ð¹ÐºÐ¸ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ñ‹"
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14990
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ R9"
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:15002
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰ÐµÐµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ð¸Ð¸ SB Ð¸ R9"
 
-#: elf32-arm.c:14696
+#: elf32-arm.c:15015
 #, 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:15046
 #, 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:15058
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ñ‹Ðµ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ‹ iWMMXt, Ð° %pB Ð½ÐµÑ‚"
 
-#: elf32-arm.c:14756
+#: elf32-arm.c:15075
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ fp16 Ñ€Ð°Ñ�Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð² %pB Ð¸ %pB"
 
-#: elf32-arm.c:14792
+#: elf32-arm.c:15111
 #, 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: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
-#, c-format
-msgid "private flags = %lx:"
-msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx:"
-
-#: elf32-arm.c:14888
+#: elf32-arm.c:15207
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½Ð°Ñ� Ñ€Ð°Ð±Ð¾Ñ‚Ð° Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°]"
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15215
 #, c-format
 msgid " [VFP float format]"
 msgstr " [VFP Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸]"
 
-#: elf32-arm.c:14898
-#, c-format
-msgid " [Maverick float format]"
-msgstr " [Maverick Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸]"
-
-#: elf32-arm.c:14900
+#: elf32-arm.c:15217
 #, c-format
 msgid " [FPA float format]"
 msgstr " [FPA Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸]"
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15220
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr " [Ñ‡Ð¸Ñ�Ð»Ð° Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ð¿ÐµÑ€ÐµÐ´Ð°ÑŽÑ‚Ñ�Ñ� Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°Ñ… Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹]"
 
-#: elf32-arm.c:14906 elf32-arm.c:14992
+#: elf32-arm.c:15223 elf32-arm.c:15308
 #, c-format
 msgid " [position independent]"
 msgstr " [Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¾Ð½Ð½Ð¾-Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ñ‹Ð¹]"
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15226
 #, c-format
 msgid " [new ABI]"
 msgstr " [Ð½Ð¾Ð²Ñ‹Ð¹ ABI]"
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15229
 #, c-format
 msgid " [old ABI]"
 msgstr " [Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ ABI]"
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15232
 #, c-format
 msgid " [software FP]"
 msgstr " [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� FP]"
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15240
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�1 EABI]"
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15243 elf32-arm.c:15254
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²]"
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15245 elf32-arm.c:15256
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [Ð½ÐµÑ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²]"
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15251
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�2 EABI]"
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15259
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�]"
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15262
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [Ð¿Ñ€Ð¾ÐµÑ†Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ€Ð°Ð½ÑŒÑˆÐµ]"
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15269
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�3 EABI]"
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15273
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�4 EABI]"
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15277
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ð¸Ñ�5 EABI]"
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15280
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [soft-float ABI]"
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15283
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [hard-float ABI]"
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15289
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15292
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15298
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� EABI>"
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15305
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹]"
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15311
 #, 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:15316 elfnn-aarch64.c:7594
 #, c-format
-msgid "<Unrecognised flag bits set>"
-msgstr "<Ð�ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð½Ð°Ð±Ð¾Ñ€ Ð±Ð¸Ñ‚Ð¾Ð² Ñ„Ð»Ð°Ð³Ð°>"
+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:15424 elf32-arm.c:15558 elf32-i386.c:1576 elf32-s390.c:921
+#: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 elf64-s390.c:924
+#: elf64-x86-64.c:2550 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 elfxx-x86.c:962
+#: elfnn-aarch64.c:7865 elfnn-kvx.c:3248 elfnn-loongarch.c:961
+#: elfnn-riscv.c:959
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ�: %d"
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15814
 #, 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:17077
 #, c-format
 msgid "errors encountered processing file %pB"
 msgstr "Ð¿Ñ€Ð¸ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐµ Ñ„Ð°Ð¹Ð»Ð° %pB Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ñ‹ Ð¾ÑˆÐ¸Ð±ÐºÐ¸"
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:17448 elflink.c:13605 elflink.c:13652
 #, c-format
 msgid "could not find section %s"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ» %s"
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18406
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr "%pB: ÐšÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ ÑƒÐ²ÐµÐ»Ð¸Ñ‡Ð¸Ð»Ð¾Ñ�ÑŒ Ñ� %lu Ð´Ð¾ %u\n"
+
+#: elf32-arm.c:18664
 #, 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:18691
 #, 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:19518 elf32-arm.c:19540
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�ÐºÐ»ÐµÐ¹ÐºÐ° VFP11 Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19591
 #, 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:19630
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ STM32L4XX"
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20713
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB ÑƒÐ¶Ðµ Ð² ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ðµ BE8"
 
-#: elf32-arm.c:20643
+#: elf32-arm.c:20790
 #, 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:20805
 #, 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:20815
 #, 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:20819
 #, 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:20829 elf32-arm.c:20833
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð½ÐµÑ‚"
 
-#: elf32-arm.c:20700
-#, c-format
-msgid "error: %pB does not use %s instructions, whereas %pB does"
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð½Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚"
-
-#: elf32-arm.c:20719
+#: elf32-arm.c:20852
 #, 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:20856
 #, 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:20870
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð½ÑƒÑŽ Ñ€Ð°Ð±Ð¾Ñ‚Ñƒ, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð½ÐµÑ‚"
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20876
 #, 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
-msgid "internal error: dangerous relocation"
-msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
+#: elf32-avr.c:1503
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr "%X%H: %s Ð´Ð»Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¾ Ð²Ð½Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°\n"
+
+#: elf32-avr.c:1511
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr "%X%H: %s Ð´Ð»Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÑ‡Ñ‘Ñ‚Ð½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ñ†ÐµÐ»ÐµÐ²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�\n"
+
+#: elf32-avr.c:1519
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr "%X%H: %s Ð´Ð»Ñ� Â«%sÂ»: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d\n"
 
-#: elf32-avr.c:3327
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3335 elfnn-aarch64.c:3231
 #, 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:364
 msgid "relocation should be even number"
 msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ñ‡Ñ‘Ñ‚Ð½Ñ‹Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼"
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1589
 #, 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:1621 elf32-i386.c:3585 elf32-m68k.c:4008 elf32-s390.c:3132
+#: elf64-s390.c:3468 elf64-x86-64.c:5080
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Â«%sÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d"
 
-#: elf32-bfin.c:2638
+#: elf32-bfin.c:2646
 #, 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:2663
 msgid "relocation references symbol not defined in the module"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² Ð¼Ð¾Ð´ÑƒÐ»Ðµ"
 
-#: elf32-bfin.c:2752
+#: elf32-bfin.c:2761
 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:2801 elf32-bfin.c:2922
 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:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4386
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�"
 
-#: elf32-bfin.c:2874
+#: elf32-bfin.c:2881
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC_VALUE ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
 
-#: elf32-bfin.c:3039
+#: elf32-bfin.c:3044
 msgid "relocations between different segments are not supported"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¼ÐµÐ¶Ð´Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÑŽÑ‚Ñ�Ñ�"
 
-#: elf32-bfin.c:3040
+#: elf32-bfin.c:3045
 msgid "warning: relocation references a different segment"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚"
 
-#: elf32-bfin.c:4787 elf32-frv.c:6603
+#: elf32-bfin.c:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3379
+#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:939 elf64-bpf.c:348
+#: elf64-mmix.c:1545 elfxx-tilegx.c:3752
+msgid "internal error: dangerous relocation"
+msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
+
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4734 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1264
+#: elf32-score.c:3986 elf32-score7.c:3793 elf32-vax.c:534 elf32-xgate.c:494
+#: elfxx-mips.c:16452
+#, c-format
+msgid "private flags = %lx:"
+msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx:"
+
+#: elf32-bfin.c:4785 elf32-frv.c:6591
 #, 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:4789 elf32-frv.c:6595
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð», Ñ�Ð²Ð»Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� fdpic, Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ð½Ðµ fdpic"
 
-#: elf32-bfin.c:4941
+#: elf32-bfin.c:4925
 #, 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:5335 elf32-cr16.c:2723 elf32-m68k.c:4423
 msgid "unsupported relocation type"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
@@ -2044,16 +2361,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:2552
 msgid "[whose name is lost]"
 msgstr "[Ñ‡ÑŒÑ‘ Ð¸Ð¼Ñ� Ð¿Ð¾Ñ‚ÐµÑ€Ñ�Ð½Ð¾]"
 
-#: elf32-cris.c:1311 elf32-tic6x.c:2603
+#: elf32-cris.c:1311 elf32-tic6x.c:2536
 #, 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:2545
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
 msgstr "%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ %<PRId64> Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
@@ -2092,88 +2409,113 @@ msgstr "(Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ð³Ð»Ð
 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:3050
+#: elf32-cris.c:3048
 #, 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:3104
+#: elf32-cris.c:3102
 #, c-format
 msgid ""
 "%pB, section %pA:\n"
 "  relocation %s not valid in a shared object; typically an option mixup, recompile with -fPIC"
 msgstr "%pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾, Ñ�Ð¼ÐµÑˆÐµÐ½Ð¸Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð², Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC"
 
-#: elf32-cris.c:3322
+#: elf32-cris.c:3320
 #, 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:3747
+#: elf32-cris.c:3701
 #, 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:3813
 msgid "unexpected machine number"
 msgstr "Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ Ñ‡Ð¸Ñ�Ð»Ð¾"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3865
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ� _]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3868
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 Ð¸ v32]"
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3871
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3915
 #, c-format
 msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ _, Ð½Ð¾ Ð² Ñ„Ð°Ð¹Ð» Ð·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð²"
 
-#: elf32-cris.c:3962
+#: elf32-cris.c:3916
 #, c-format
 msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° _, Ð½Ð¾ Ð² Ñ„Ð°Ð¹Ð» Ð·Ð°Ð¿Ð¸Ñ�Ñ‹Ð²Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ _"
 
-#: elf32-cris.c:3981
+#: elf32-cris.c:3935
 #, c-format
 msgid "%pB contains CRIS v32 code, incompatible with previous objects"
 msgstr "%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÐºÐ¾Ð´ CRIS v32, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-cris.c:3983
+#: elf32-cris.c:3937
 #, c-format
 msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr "%pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÐºÐ¾Ð´ Ð½Ðµ CRIS v32, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-csky.c:2066
+#: elf32-csky.c:2017
 msgid "GOT table size out of range"
 msgstr "Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ GOT Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹"
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2828
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
-msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ð¹ eflag Â«%#lxÂ»"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ eflag Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Â«%#lxÂ»"
+
+#: elf32-csky.c:2851
+#, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¸Ð¼Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ Â«%#xÂ»"
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2916 elf32-csky.c:3076
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr "%pB: Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ†ÐµÐ»ÑŒÑŽ"
 
-#: elf32-csky.c:2990
+#: elf32-csky.c:2929
+#, c-format
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ %pB Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %s ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼ %s, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ Ñ„Ð»Ð°Ð³ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %s"
+
+#: elf32-csky.c:2958
+#, c-format
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr "ÐžÑˆÐ¸Ð±ÐºÐ°: Ñƒ %pB Ð¸ %pB Ñ€Ð°Ð·Ð½Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ VDSP"
+
+#: elf32-csky.c:2975
 #, 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"
+msgid "Error: %pB and %pB has different DSP version"
+msgstr "ÐžÑˆÐ¸Ð±ÐºÐ°: Ñƒ %pB Ð¸ %pB Ñ€Ð°Ð·Ð½Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ DSP"
+
+#: elf32-csky.c:2993
+#, c-format
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr "ÐžÑˆÐ¸Ð±ÐºÐ°: Ñƒ %pB Ð¸ %pB Ñ€Ð°Ð·Ð½Ñ‹Ðµ FPU ABI"
+
+#: elf32-csky.c:3090
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ Ñ„Ð»Ð°Ð³ %pB Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñ‹ %s ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ†ÐµÐ»ÐµÐ²Ñ‹Ð¼ %s, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼ %s"
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4330 elf32-i386.c:344
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� : %#x"
@@ -2189,7 +2531,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:570 elf32-ip2k.c:1485
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð½Ñ‹Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð¾Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ñ…/Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹"
 
@@ -2197,96 +2539,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:6502
 #, 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:6556 elf32-iq2000.c:830 elf32-m32c.c:877
 #, 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:6569
 #, c-format
 msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ðµ Ð¿Ð¾Ð»Ñ� e_flags (%#x), Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÑŽÑ‰Ð¸ÐµÑ�Ñ� Ð¾Ñ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)"
@@ -2296,275 +2638,299 @@ 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:862 elf32-hppa.c:3403
 #, 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:1240
 #, 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:2579
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr "%pB: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñ‹Ð¹ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ %s"
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3236
 #, 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:3456
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ° %#x Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %#x Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð° 8 (gp %#x)"
+
+#: elf32-hppa.c:3475
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ° %#x Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %#x Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð° 4 (gp %#x)"
+
+#: elf32-hppa.c:4090
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr "%s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� TLS"
 
-#: elf32-hppa.c:4158
+#: elf32-hppa.c:4108
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr "%pB:%s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� TLS"
 
-#: elf32-hppa.c:4217
+#: elf32-hppa.c:4167
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %s Ð´Ð»Ñ� %s"
 
-#: elf32-hppa.c:4521
+#: elf32-hppa.c:4471
 msgid ".got section not immediately after .plt section"
 msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» .got Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ñ�Ñ‚Ð¾Ñ�Ñ‚ÑŒ Ñ�Ñ€Ð°Ð·Ñƒ Ð¿Ð¾Ñ�Ð»Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .plt"
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
-#, 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:1300
 #, 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:1586
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx32> > %#<PRIx32>) for section `%pA'"
+msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� (%#<PRIx32> > %#<PRIx32>) Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
+
+#: elf32-i386.c:1771 elf32-s390.c:1149 elf32-sh.c:5500 elf32-tilepro.c:1546
+#: elf32-xtensa.c:1261 elf64-s390.c:1162 elfxx-sparc.c:1565 elfxx-tilegx.c:1766
+#: elfnn-loongarch.c:750 elfnn-riscv.c:866
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr "%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¹ Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð´Ð»Ñ� Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:1798
+#: elf32-i386.c:1843
 #, 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:1898 elf64-x86-64.c:2964
+#, c-format
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr "%pB: Ð½ÐµÐºÐ°Ð½Ð¾Ð½Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° ÐºÐ°Ð½Ð¾Ð½Ð¸Ñ‡ÐµÑ�ÐºÑƒÑŽ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½ÑƒÑŽ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ Â«%sÂ» Ð² %pB"
+
+#: elf32-i386.c:2461 elf64-x86-64.c:3446 elfnn-riscv.c:2742
 #, 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:2494 elf32-i386.c:3794 elf32-i386.c:3942 elf64-x86-64.c:3503
+#: elf64-x86-64.c:5254 elf64-x86-64.c:5425 elfnn-riscv.c:2604
+#: elfnn-riscv.c:3511 elfnn-riscv.c:3585
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr "Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ� IFUNC Â«%sÂ» Ð² %pB\n"
 
-#: elf32-i386.c:2569
+#: elf32-i386.c:2672
 #, 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:2707 elf64-x86-64.c:3726
 msgid "hidden symbol"
 msgstr "Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2710 elf64-x86-64.c:3729
 msgid "internal symbol"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2713 elf64-x86-64.c:3732
 msgid "protected symbol"
 msgstr "Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2716 elf64-x86-64.c:3735
 msgid "symbol"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2722
 #, 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:2735
 #, 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-i386.c:4145 elf64-x86-64.c:5645
+msgid "%P: discarded output section: `%pA'\n"
+msgstr "%P: Ð¾Ñ‚Ð±Ñ€Ð¾ÑˆÐµÐ½Ð½Ñ‹Ð¹ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»: Â«%pAÂ»\n"
+
+#: 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:1298
 #, c-format
 msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº ip2k: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> (Ð½Ð°Ð·Ð½Ð°Ñ‡ = %#<PRIx64>)"
 
-#: elf32-ip2k.c:1321
+#: elf32-ip2k.c:1317
 #, 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
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°"
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:663
 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"
 
-#: elf32-m32r.c:1471
+#: elf32-m32r.c:1461
 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:2778 elf32-microblaze.c:1147 elf32-microblaze.c:1195
 #, 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:3279
 #, c-format
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr "%pB: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñƒ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹"
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6992
+#: elf32-m32r.c:3300 elf32-nds32.c:6906
 #, c-format
 msgid "private flags = %lx"
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx"
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3305
 #, c-format
 msgid ": m32r instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32r"
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3306
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32rx"
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3307
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ m32r2"
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1135
 #, 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:1166
 #, 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:1182
 #, 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:1197
 #, 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:1233
 #, 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:1357
 #, 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:1364
 #, 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:1373
 #, 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:1418 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:1420 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:1423 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr "64-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ double, "
 
-#: elf32-m68hc1x.c:1420 elf32-xgate.c:504
+#: elf32-m68hc1x.c:1425 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "32-Ð±Ð¸Ñ‚Ð½Ð¾Ðµ double, "
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1428
 #, c-format
 msgid "cpu=HC11]"
 msgstr "Ð¦ÐŸ=HC11]"
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1430
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "Ð¦ÐŸ=HCS12]"
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1432
 #, c-format
 msgid "cpu=HC12]"
 msgstr "Ð¦ÐŸ=HC12]"
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1435
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ=Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ñ� Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸]"
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1437
 #, c-format
 msgid " [memory=flat]"
 msgstr " [Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ=Ð¿Ð»Ð¾Ñ�ÐºÐ°Ñ�]"
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1440
 #, 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:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ, %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ"
+
+#: elf32-m68k.c:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105
 msgid "unknown"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾"
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1730
 #, 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:1737
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ GOT: ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ñ� 8-Ð¼Ð¸ Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ > %d"
@@ -2580,387 +2946,362 @@ msgstr "mep: Ð½ÐµÑ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸
 msgid "MeP: howto %d has type %d"
 msgstr "MeP: howto %d Ð¸Ð¼ÐµÐµÑ‚ Ñ‚Ð¸Ð¿ %d"
 
-#: elf32-mep.c:622
+#: elf32-mep.c:618
 #, c-format
 msgid "%pB and %pB are for different cores"
 msgstr "%pB Ð¸ %pB Ð´Ð»Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ñ… Ñ�Ð´ÐµÑ€"
 
-#: elf32-mep.c:641
+#: elf32-mep.c:637
 #, c-format
 msgid "%pB and %pB are for different configurations"
 msgstr "%pB Ð¸ %pB Ð´Ð»Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ñ… ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¹"
 
-#: elf32-mep.c:679
+#: elf32-mep.c:675
 #, c-format
 msgid "private flags = 0x%lx"
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lx"
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1856
 #, c-format
 msgid "%pB(%pA): multiple TLS models are not supported"
 msgstr "%pB(%pA): Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ TLS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: elf32-metag.c:1866
+#: elf32-metag.c:1859
 #, 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:1590 elf32-tilepro.c:3020 elfxx-sparc.c:3452
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr "%pB: Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ñ� Ð±ÐµÐ· -fPIC?"
 
-#: elf32-mips.c:1775 elf64-mips.c:3516 elfn32-mips.c:3332
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334
 msgid "literal relocation occurs for an external symbol"
 msgstr "Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ ÐºÐ¾Ð½Ñ�Ñ‚Ð°Ð½Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-mips.c:1822 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:3559
-#: elfn32-mips.c:3373
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr "Ð´Ð»Ñ� Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ 32â€”Ð±Ð¸Ñ‚Ð½Ð¾Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-msp430.c:837 elf32-msp430.c:1151
+#: elf32-msp430.c:914
+#, c-format
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÐ¾Ð½ÐµÑ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� uleb128 Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ 0x%lx Ð² %pA Ð¸Ð· %pB Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ðµ Ð¼ÐµÑ�Ñ‚Ð¾"
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr "Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ðµ, Ñ‡Ñ‚Ð¾Ð±Ñ‹ Ð¸Ð·Ð±ÐµÐ¶Ð°Ñ‚ÑŒ Ð¾Ð±Ñ€ÐµÐ·Ð°Ð½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹"
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1506
 msgid "internal error: branch/jump to an odd address detected"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ/Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ñ�Ñ‚Ñ€Ð°Ð½Ð½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elf32-msp430.c:2357
+#: elf32-msp430.c:2673
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ MSPABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2774
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ %s"
 
-#: elf32-msp430.c:2468
+#: elf32-msp430.c:2786
 #, 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:2799
 #, 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:2810
 #, 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:2823
 #, 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:2835
 #, 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:2860
 #, 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:3680
 #, 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:5579
 #, c-format
 msgid "%pB: warning: %s unsupported in shared mode"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ñ€ÐµÐ¶Ð¸Ð¼Ðµ"
 
-#: elf32-nds32.c:5795
+#: elf32-nds32.c:5705
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ñƒ GOT"
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5746
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ SDA_BASE"
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5768
 #, c-format
 msgid "%pB(%pA): warning: unaligned small data access of type %d"
 msgstr "%pB(%pA): Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ñ‹Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ðº Ð¼Ð°Ð»Ñ‹Ð¼ Ð´Ð°Ð½Ð½Ñ‹Ð¼ Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d"
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6694
 #, 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:6742
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6756
 #, 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:6844
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6854
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½Ð°Ð±Ð¾Ñ€ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¹ Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6881
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ elf %s Ð¸ %s"
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6912
 #, c-format
 msgid ": n1 instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ n1"
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6915
 #, c-format
 msgid ": n1h instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ n1h"
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9364
 #, 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:9628
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>"
 
-#: elf32-nds32.c:12975
+#: elf32-nds32.c:12893
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr "%pB: Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ðµ OMIT_FP Ð² %pA"
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12912
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr "%pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ OMIT_FP Ð² %pA"
 
-#: elf32-nds32.c:13275 reloc.c:8410
-#, 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
-#, c-format
-msgid "error: %pB: big-endian R2 is not supported"
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð¾Ñ‚ Ñ�Ñ‚Ð°Ñ€ÑˆÐµÐ³Ð¾ Ðº Ð¼Ð»Ð°Ð´ÑˆÐµÐ¼Ñƒ R2 Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
-
-#: elf32-nios2.c:3822
-#, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°\n"
-
-#: elf32-nios2.c:3842
-#, 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"
-
-#: elf32-nios2.c:4495 elf32-pru.c:928
-msgid "relocation out of range"
-msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
-msgid "dangerous relocation"
-msgstr "Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
-
-#: elf32-nios2.c:5378
-#, c-format
-msgid "dynamic variable `%s' is zero size"
-msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€"
-
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1256
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d"
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1375
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d"
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1429
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr "%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ plt"
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1542
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr "%pB: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð½ÑƒÐ»Ñ‘Ð¼ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ got"
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1559
 #, 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:1573 elf32-or1k.c:1588 elf64-alpha.c:4412 elf64-alpha.c:4556
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr "%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1602
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr "%pB: Ð½Ðµ-pic Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1686
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr "%pB: Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð°"
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1865
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚ Ñ€ÐµÑˆÐµÐ½Ð¾"
 
-#: elf32-or1k.c:2074
+#: elf32-or1k.c:2199
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ð¼Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%sÂ»"
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3313
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr "%pB: Ñ„Ð»Ð°Ð³ %s Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-ppc.c:986
+#: elf32-ppc.c:990 elf64-ppc.c:1753
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº Ð½Ðµ Ñ�Ð¼Ð¾Ð³ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ %s"
 
-#: elf32-ppc.c:1617
+#: elf32-ppc.c:1627
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr "Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð² %pB"
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1646
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð· %pB"
 
-#: elf32-ppc.c:1679
+#: elf32-ppc.c:1688
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð·Ð°Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ð² %pB"
 
-#: elf32-ppc.c:1729
+#: elf32-ppc.c:1737
 msgid "failed to allocate space for new APUinfo section"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¼ÐµÑ�Ñ‚Ð¾ Ð´Ð»Ñ� Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° APUinfo"
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1756
 msgid "failed to compute new APUinfo section"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfo"
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1759
 msgid "failed to install new APUinfo section"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ð½Ð¾Ð²Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» APUinfo"
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2867
 #, 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:3586 elf32-ppc.c:3594
 #, 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:3616 elf32-ppc.c:3624
 #, 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:3632 elf32-ppc.c:3640
 #, 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:3707 elf32-ppc.c:3716
 #, 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:3745 elf32-ppc.c:3754
 #, 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:3818
 #, c-format
 msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr "%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ�Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-ppc.c:3837
+#: elf32-ppc.c:3826
 #, c-format
 msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr "%pB: Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð° Ð¸ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¼Ð¸ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -mrelocatable"
 
-#: elf32-ppc.c:3906
+#: elf32-ppc.c:3897
 #, 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:3916
 #, 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:4026
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr "Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� bss-plt Ð¸Ð·-Ð·Ð° %pB"
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4028
 msgid "bss-plt forced by profiling"
 msgstr "Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� bss-plt Ð¸Ð·-Ð·Ð° Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ�"
 
+#: elf32-ppc.c:4606 elf64-ppc.c:8517
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr "%H: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %s Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ insn %#x.\n"
+
 #. 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:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4636 elf64-ppc.c:8582
 #, 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:5565 elf32-sh.c:3019 elf32-tilepro.c:2246 elfxx-sparc.c:2464
+#: elfxx-tilegx.c:2495
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
 
-#: elf32-ppc.c:7457
+#: elf32-ppc.c:6512
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr "%pB: Ð¿Ð¾Ð´Ñ�Ñ‚Ñ€Ð°Ð¸Ð²Ð°ÐµÐ¼ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%V Ð´Ð»Ñ� \"%s\" Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s\n"
+
+#: elf32-ppc.c:7454
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr "%P: %H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ %x\n"
 
-#: elf32-ppc.c:7494
+#: elf32-ppc.c:7492
 msgid "%H: fixup branch overflow\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð¸ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹\n"
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7532 elf32-ppc.c:7570
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ñ� Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÐµÐ¹ %#x"
@@ -2970,11 +3311,12 @@ msgstr "%pB(%pA+%#<PRIx64>): Ð¾ÑˆÐ¸Ð±ÐºÐ
 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
-msgid "%H: warning: %s unexpected insn %#x.\n"
-msgstr "%H: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %s Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð¾Ñ�ÑŒ insn %#x.\n"
+#: elf32-ppc.c:7670
+#, c-format
+msgid "%pB: reloc %#x unsupported"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %#x Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7953
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr "%H: Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ %s Ð´Ð»Ñ� Â«%sÂ»\n"
@@ -2987,110 +3329,125 @@ 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:7985
 #, 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:8163
 #, 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:8501 elf32-ppc.c:8532 elf32-ppc.c:8635 elf32-ppc.c:8735
 #, 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:8913 elf32-ppc.c:8934
+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:9016
 #, 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:9045
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr "%H: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»\n"
 
-#: elf32-ppc.c:9064
+#: elf32-ppc.c:9127
 #, 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:10009
 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:10013 elf64-ppc.c:18330
 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:10058
 #, 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:1477
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ñ‚Ð°Ñ€Ñ‹Ð¹ Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð»"
 
-#: elf32-rl78.c:372
-msgid "internal error: RL78 reloc stack overflow"
-msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°"
-
-#: elf32-rl78.c:383
-msgid "internal error: RL78 reloc stack underflow"
-msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð²Ñ‹Ñ…Ð¾Ð´ Ð·Ð° Ð½Ð¸Ð¶Ð½ÑŽÑŽ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ñ�Ñ‚ÐµÐºÐ°"
+#: elf32-pru.c:931
+msgid "relocation out of range"
+msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ…Ð¾Ð´Ð¸Ñ‚ Ð·Ð° Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
+
+#: elf32-pru.c:941 elf32-tic6x.c:2649
+msgid "dangerous relocation"
+msgstr "Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-rl78.c:1053
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
+msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð²Ñ‹Ñ…Ð¾Ð´ Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ Ñ�Ñ‚ÐµÐºÐ°"
+
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
+msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð´ÐµÐ»Ð¸Ñ‚Ñ�Ñ� Ð½Ð° Ð½Ð¾Ð»ÑŒ"
+
+#: elf32-rl78.c:1069
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
-#, c-format
-msgid "%pB(%pA): error: call to undefined function '%s'"
-msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‹Ð·Ð¾Ð² Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ»"
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr "%H: %s Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°\n"
+
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
+msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %u Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
+
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð²ÐµÑ€Ð½ÑƒÐ»Ð¾ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %x\n"
 
-#: elf32-rl78.c:1205
+#: elf32-rl78.c:1220
 #, c-format
 msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
 msgstr "ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ RL78 ABI: G10 Ð² Ñ„Ð°Ð¹Ð»Ðµ %pB Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pB"
 
-#: elf32-rl78.c:1222
+#: elf32-rl78.c:1237
 #, c-format
 msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
 msgstr "ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ RL78 ABI: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pB Ñ� %s Ð¸Ð· Ñ„Ð°Ð¹Ð»Ð° %pB"
 
-#: elf32-rl78.c:1231
+#: elf32-rl78.c:1246
 msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
 msgstr "ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� RL78: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ Ð²Ð¼ÐµÑ�Ñ‚Ðµ"
 
-#: elf32-rl78.c:1235 elf32-rl78.c:1239
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
 #, c-format
 msgid "- %pB is 64-bit, %pB is not"
 msgstr "- %pB Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¼, Ð° %pB Ð½ÐµÑ‚"
 
-#: elf32-rl78.c:1266
+#: elf32-rl78.c:1281
 #, c-format
 msgid " [64-bit doubles]"
 msgstr "[64-Ð±Ð¸Ñ‚Ð½Ñ‹Ðµ double]"
 
-#: elf32-rx.c:605
+#: elf32-rx.c:618
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr "%pB:%pA: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s Ð½Ð°Ñ…Ð¾Ð´Ð¸Ñ‚Ñ�Ñ� Ð²Ð½Ðµ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹"
 
-#: elf32-rx.c:612
+#: elf32-rx.c:625
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr "%pB:%pA: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ %s Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½ Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elf32-rx.c:684
+#: elf32-rx.c:700
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr "%pB:%pA: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ²ÑˆÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Red Hat %s Ð´Ð»Ñ�: %s"
@@ -3099,74 +3456,84 @@ 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:720
 #, 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:1304
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RX_SYM Ñ� Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr "%pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð²Ñ‹Ð·Ð¾Ð² Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%sÂ»"
+
+#: elf32-rx.c:3185
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr "Ð²Ð¾Ð·Ð½Ð¸Ðº ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Ñ„Ð»Ð°Ð³Ð¾Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF Ð¸Ð· %pB"
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3188
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr "  Ñ„Ð»Ð°Ð³Ð¸ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°: %s"
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3190
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  Ñ„Ð»Ð°Ð³Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°: %s"
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3797
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr "%pB:%pA: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° %s, Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð°Ñ� %s"
 
-#: elf32-rx.c:3800
+#: elf32-rx.c:3805
 #, 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:2007 elf64-s390.c:2242
 #, 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:1505 elf32-score7.c:1368 elfxx-mips.c:3914
 msgid "not enough GOT space for local GOT entries"
 msgstr "Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² GOT"
 
-#: elf32-score.c:2746
+#: elf32-score.c:2737
 msgid "address not word aligned"
 msgstr "Ð°Ð´Ñ€ÐµÑ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2818 elf32-score7.c:2625
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr "%pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA"
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2872 elf32-score7.c:2679
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CALL15 Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð½Ðµ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: elf32-score.c:4003 elf32-score7.c:3808
+#: elf32-score.c:3483 elf32-score7.c:3294 elfxx-mips.c:11260
+#, c-format
+msgid "%pB: cannot handle more than %d dynamic symbols"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ Ð±Ð¾Ð»ÐµÐµ %d Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
+
+#: elf32-score.c:3989 elf32-score7.c:3796
 #, c-format
 msgid " [pic]"
 msgstr " [pic]"
 
-#: elf32-score.c:4007 elf32-score7.c:3812
+#: elf32-score.c:3993 elf32-score7.c:3800
 #, c-format
 msgid " [fix dep]"
 msgstr " [fix dep]"
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4040 elf32-score7.c:3847
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° PIC-Ñ„Ð°Ð¹Ð»Ð¾Ð² Ñ� Ð½Ðµ-PIC Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸"
@@ -3176,152 +3543,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:3755
 #, 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:3785 elf32-sh.c:3801
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: Ð¾Ñ�Ñ‚Ð°Ð½Ð¾Ð²: Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s (%#<PRIx64>)"
 
-#: elf32-sh.c:3942
+#: elf32-sh.c:3817
 #, 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:3833
 #, 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:3963 elf32-sh.c:4358
 #, 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:4461
 #, 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:4580
 #, 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:4598
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd4??)"
 
-#: elf32-sh.c:4731
+#: elf32-sh.c:4606
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xc7??)"
 
-#: elf32-sh.c:4738
+#: elf32-sh.c:4613
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0xd1??)"
 
-#: elf32-sh.c:4745
+#: elf32-sh.c:4620
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x310c)"
 
-#: elf32-sh.c:4752
+#: elf32-sh.c:4627
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x410b)"
 
-#: elf32-sh.c:4759
+#: elf32-sh.c:4634
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ� %#04X (Ð¾Ð¶Ð¸Ð´Ð°Ð»Ð°Ñ�ÑŒ 0x34cc)"
 
-#: elf32-sh.c:4794
+#: elf32-sh.c:4669
 #, 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:4687
 #, 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:4696
 #, 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:4703
 #, 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:4818
 #, 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:4886
 #, 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:5014
 #, c-format
-msgid "%X%C: relocation to \"%s\" references a different segment\n"
-msgstr "%X%C: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
+msgstr "%X%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5021
 #, c-format
-msgid "%C: warning: relocation to \"%s\" references a different segment\n"
-msgstr "%C: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
+msgstr "%H: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Â«%sÂ» Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5489 elf32-sh.c:5571
 #, 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:5495 elf32-sh.c:5576
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr "%pB: Â«%sÂ» Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ÐµÐ½ ÐºÐ°Ðº FDPIC Ð¸ ÐºÐ°Ðº Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½Ð¸Ñ‚Ð¸"
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5526
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
 
-#: elf32-sh.c:5895 elf64-alpha.c:4691
+#: elf32-sh.c:5733 elf64-alpha.c:4648
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ ÐºÐ¾Ð´ TLS Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½ Ñ� Ð¾Ð±Ñ‰Ð¸Ð¼Ð¸ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-sh.c:6010
+#: elf32-sh.c:5848
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ñ…Ð¾Ñ‚Ñ� Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð»Ð¸Ñ�ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s"
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:5860
 #, 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:5901
 #, c-format
 msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
 msgstr "%pB: Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‚Ñ�Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸, Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ�Ð¼Ð¸, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð²ÑˆÐ¸Ð¼Ð¸Ñ�Ñ� Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:5914
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr "%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ð¼ÐµÑˆÐ°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ FDPIC Ð¸ Ð½Ðµ FDPIC"
@@ -3336,29 +3699,34 @@ 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:734
 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:742
 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:762
 msgid "%X%P: overlay section %pA is not in cache area\n"
 msgstr "%X%P: Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ð²ÐµÑ€Ð»ÐµÑ� %pA Ð½Ðµ Ð² Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ ÐºÑ�ÑˆÐ°\n"
 
-#: elf32-spu.c:801
+#: elf32-spu.c:803
 #, 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:1029
 #, c-format
 msgid "warning: call to non-function symbol %s defined in %pB"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ð·Ð¾Ð² Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ %s, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ Ð² %pB"
 
-#: elf32-spu.c:1377
+#: elf32-spu.c:1379
 #, c-format
 msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
 msgstr "%pA:0x%v lrlive .brinfo (%u) Ð¾Ñ‚Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ð¾Ñ‚ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ (%u)\n"
@@ -3378,30 +3746,30 @@ msgstr "Ð²Ð°Ð¼ Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¾ Ð
 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:15372
 msgid "stubs don't match calculated size"
 msgstr "Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð½Ðµ Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ"
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2575
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð¿ÐµÑ€ÐµÐºÑ€Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ñ� %s\n"
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2591
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°\n"
 
-#: elf32-spu.c:2620
+#: elf32-spu.c:2623
 #, c-format
 msgid "%pA:0x%v not found in function table\n"
 msgstr "%pA:0x%v Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹\n"
 
-#: elf32-spu.c:2761
+#: elf32-spu.c:2764
 #, 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"
@@ -3415,33 +3783,33 @@ msgstr "Ð² Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ Ñ�Ñ‚ÐµÐºÐ° Ð±Ñ
 msgid "  calls:\n"
 msgstr "  Ð²Ñ‹Ð·Ð¾Ð²Ñ‹:\n"
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4342
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÐµÑ‚Ñ�Ñ� Ð² %s\n"
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4346
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÐµÑ‚Ñ�Ñ�\n"
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4353
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr "Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ñ…Ñ�Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð² Ð² Ñ�Ñ†ÐµÐ½Ð°Ñ€Ð¸Ð¸ auto-overlay Ð¿Ð¾ÐºÐ° Ð½Ðµ Ñ�Ð´ÐµÐ»Ð°Ð½Ð°\n"
 
-#: elf32-spu.c:4394
+#: elf32-spu.c:4395
 #, 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:4551
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr "%pB:%pA%s Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�\n"
 
-#: elf32-spu.c:4691
-msgid "%F%P: auto overlay error: %E\n"
-msgstr "%F%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E\n"
+#: elf32-spu.c:4692
+msgid "%P: auto overlay error: %E\n"
+msgstr "%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E\n"
 
 #: elf32-spu.c:4712
 msgid "Stack size for call graph root nodes.\n"
@@ -3464,327 +3832,327 @@ msgid "%X%P: stack/lrlive analysis error
 msgstr "%X%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ Ñ�Ñ‚ÐµÐºÐ°/lrlive: %E\n"
 
 #: elf32-spu.c:4745
-msgid "%F%P: can not build overlay stubs: %E\n"
-msgstr "%F%P: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E\n"
+msgid "%P: can not build overlay stubs: %E\n"
+msgstr "%P: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð¾Ð²ÐµÑ€Ð»ÐµÑ�: %E\n"
 
 #: elf32-spu.c:4814
 msgid "fatal error while creating .fixup"
 msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð¸Ð¼Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ .fixup"
 
-#: elf32-spu.c:5049
+#: elf32-spu.c:5050
 #, c-format
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%s+%#<PRIx64>): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elf32-tic6x.c:1628
+#: elf32-tic6x.c:1587
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PIC ÐºÐ¾Ð´"
 
-#: elf32-tic6x.c:1633
+#: elf32-tic6x.c:1592
 msgid "warning: generating a shared library containing non-PID code"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ¹ Ð½Ðµ-PID ÐºÐ¾Ð´"
 
-#: elf32-tic6x.c:2493
+#: elf32-tic6x.c:2426
 #, 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:3492
 #, c-format
 msgid "%pB: error: unknown mandatory EABI object attribute %d"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ EABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %d"
 
-#: elf32-tic6x.c:3638
+#: elf32-tic6x.c:3501
 #, 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:3619 elf32-tic6x.c:3628
 #, 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:3638 elf32-tic6x.c:3647
 #, 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:3656 elf32-tic6x.c:3665
 #, 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:3674 elf32-tic6x.c:3682
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð±Ð¾Ð»ÑŒÑˆÐµÐµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°, Ñ‡ÐµÐ¼ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¾ Ð² %pB"
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3705
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð² %pB Ð¸ %pB Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð°ÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ wchar_t"
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3724
 #, 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:3626 elfxx-tilegx.c:4019 elfxx-x86.c:2762
+#: elfnn-aarch64.c:10375 elfnn-kvx.c:4631 elfnn-loongarch.c:6379
+#: elfnn-riscv.c:3801
 #, 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:466
 msgid "failed to find previous HI16 reloc"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ HI16"
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2309
 msgid "could not locate special linker symbol __gp"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __gp"
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2313
 msgid "could not locate special linker symbol __ep"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __ep"
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2317
 msgid "could not locate special linker symbol __ctbp"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ‹Ñ�ÐºÐ°Ñ‚ÑŒ Ñ�Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ __ctbp"
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2539
 #, 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:2555
 #, 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:2570
 #, 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:2602
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr " Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ñ… Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²: "
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2605
 #, c-format
 msgid "4-byte"
 msgstr "4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2606
 #, c-format
 msgid "8-byte"
 msgstr "8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ"
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2607 elf32-v850.c:2619
 #, 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:2608 elf32-v850.c:2620 elf32-v850.c:2632 elf32-v850.c:2643
+#: elf32-v850.c:2654 elf32-v850.c:2665
 #, c-format
 msgid "unknown: %x"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %x"
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2614
 #, c-format
 msgid " size of doubles: "
 msgstr " Ñ€Ð°Ð·Ð¼ÐµÑ€ double: "
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2617
 #, c-format
 msgid "4-bytes"
 msgstr "4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ðµ"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2618
 #, c-format
 msgid "8-bytes"
 msgstr "8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ‹Ðµ"
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2626
 #, c-format
 msgid " FPU support required: "
 msgstr " Ñ‚Ñ€ÐµÐ±ÑƒÐµÐ¼Ð°Ñ� Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° FPU: "
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2629
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2630
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2631
 #, c-format
 msgid "none"
 msgstr "Ð½Ðµ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ�"
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2638
 #, c-format
 msgid "SIMD use: "
 msgstr "Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ SIMD: "
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663
 #, c-format
 msgid "yes"
 msgstr "Ð´Ð°"
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2642 elf32-v850.c:2653 elf32-v850.c:2664
 #, c-format
 msgid "no"
 msgstr "Ð½ÐµÑ‚"
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2649
 #, c-format
 msgid "CACHE use: "
 msgstr "Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ CACHE: "
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2660
 #, c-format
 msgid "MMU use: "
 msgstr "Ð˜Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ðµ MMU: "
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2827 elf32-v850.c:2883
 #, c-format
 msgid "%pB: architecture mismatch with previous modules"
 msgstr "%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð½Ð¾Ð¹ Ð² Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2894
+#: elf32-v850.c:2901
 #, c-format
 msgid "private flags = %lx: "
 msgstr "Ñ�Ð¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = %lx: "
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2906
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850"
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2908
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850 E3"
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2910 elf32-v850.c:2917
 #, c-format
 msgid "v850 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850"
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2918
 #, c-format
 msgid "v850e architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e"
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2919
 #, c-format
 msgid "v850e1 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e1"
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2920
 #, c-format
 msgid "v850e2 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2"
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2921
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2v3"
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2922
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e3v5"
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3596 elf32-v850.c:3835
 #, 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:3606 elf32-v850.c:3845
 #, 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:3652 elf32-v850.c:3880
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf32-v850.c:3705
+#: elf32-v850.c:3692
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>"
 
-#: elf32-vax.c:540
+#: elf32-vax.c:537
 #, c-format
 msgid " [nonpic]"
 msgstr " [Ð½Ðµ-pic]"
 
-#: elf32-vax.c:543
+#: elf32-vax.c:540
 #, c-format
 msgid " [d-float]"
 msgstr " [d-float]"
 
-#: elf32-vax.c:546
+#: elf32-vax.c:543
 #, c-format
 msgid " [g-float]"
 msgstr " [g-float]"
 
-#: elf32-vax.c:632
+#: elf32-vax.c:629
 #, c-format
 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,251 +4167,280 @@ 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:2077 elfnn-ia64.c:2345
 msgid "non-zero addend in @fptr reloc"
 msgstr "Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ð¾Ðµ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ @fptr"
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:996
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr "%pB(%pA): Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²"
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2732
 #, 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:2815 elf32-xtensa.c:2938
 msgid "dynamic relocation in read-only section"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�"
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2915
 msgid "TLS relocation invalid without dynamic sections"
 msgstr "TLS-Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²"
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3128
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�Ð¾Ð²Ð°Ð½Ð½Ð¾Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .got.loc"
 
-#: elf32-xtensa.c:3377
+#: elf32-xtensa.c:3434
 #, 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:4733 elf32-xtensa.c:4741
 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:6569 elf32-xtensa.c:6648 elf32-xtensa.c:8074
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸ÑŽ; Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸"
 
-#: elf32-xtensa.c:7638
+#: elf32-xtensa.c:7815
 #, 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:9673
 msgid "invalid relocation address"
 msgstr "Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9764
 msgid "overflow after relaxation"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ�Ð»Ðµ Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½Ð¸Ñ�"
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10910
 #, 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: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ðµ 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:472
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "Ð�Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ñ‹ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ ldah Ð¸ lda Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� GPDISP"
 
-#: elf64-alpha.c:2463
+#: elf64-alpha.c:1983
+#, c-format
+msgid "%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
+
+#: elf64-alpha.c:2435
 #, 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:2679 elflink.c:15752 elfnn-kvx.c:4016 elfnn-loongarch.c:2016
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ� Â«%pTÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
+
+#: elf64-alpha.c:2977 elf64-alpha.c:3172
 #, 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:4372 elf64-alpha.c:4385
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr "%pB: gp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-alpha.c:4484
+#: elf64-alpha.c:4441
 #, 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:4466 mach-o.c:627 elfnn-loongarch.c:917 elfnn-riscv.c:917
+#: elfnn-riscv.c:1122 elfnn-riscv.c:1164
 msgid "<unknown>"
 msgstr "<Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾>"
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4472
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ !samegp Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð±ÐµÐ· .prologue: %s"
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4530
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� %s"
 
-#: elf64-alpha.c:4608
+#: elf64-alpha.c:4565
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr "%pB: pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-alpha.c:4674
+#: elf64-alpha.c:4631
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr "%pB: dtp-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elf64-alpha.c:4699
+#: elf64-alpha.c:4656
 #, 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:344
+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:2037
 #, 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:3241
 #, 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:600 elfnn-ia64.c:641
 #, 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:2032 elfnn-ia64.c:2293
 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:3280 elfnn-ia64.c:3673
 #, 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:3290 elfnn-ia64.c:3683
 #, 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:3560 elfnn-ia64.c:3956
 #, 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:3624 elfnn-ia64.c:4024
 #, 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:3683 elfnn-ia64.c:4087
 #, 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:3785 elfnn-ia64.c:4225
 #, 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:3788 elfnn-ia64.c:4228
 #, 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:3791 elfnn-ia64.c:4231
 #, 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:3915 elfnn-ia64.c:4428
 msgid "unsupported reloc"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ"
 
-#: elf64-ia64-vms.c:3964 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3952 elfnn-ia64.c:4466
 #, 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:3969 elfnn-ia64.c:4483
 #, 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:4263 elfnn-ia64.c:4742
 #, 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:4272 elfnn-ia64.c:4751
 #, 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:4281 elfnn-ia64.c:4760
 #, 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:4290 elfnn-ia64.c:4769
 #, 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:4300 elfnn-ia64.c:4779
 #, 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:5518
 #, 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
 #, 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:5547
 #, 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:4102
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %<PRIu64> Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld"
 
-#: elf64-mmix.c:984
+#: elf64-mmix.c:980
 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Â» (Ð´Ð»Ñ� gcc, Â«-Wa,-no-expandÂ»"
 
-#: elf64-mmix.c:1168
+#: elf64-mmix.c:1164
 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, Ð¸Ð»Ð¸ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ gcc Â«-mno-base-addressesÂ»."
 
-#: elf64-mmix.c:1195
+#: elf64-mmix.c:1191
 #, c-format
 msgid ""
 "%pB: Internal inconsistency error for value for\n"
@@ -4052,1039 +4449,1707 @@ msgstr ""
 "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ Ð½ÐµÑ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�\n"
 " Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ð·Ð½Ð°Ñ‡Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ¾Ð¼: Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½: %<PRIx64> != Ð¾Ñ�Ð»Ð°Ð±Ð»ÐµÐ½: %<PRIx64>"
 
-#: elf64-mmix.c:1619
+#: elf64-mmix.c:1615
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ð°-Ð¿Ð»ÑŽÑ�-Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) Ð² %pA"
 
-#: elf64-mmix.c:1625
+#: elf64-mmix.c:1621
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ð°-Ð¿Ð»ÑŽÑ�-Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: %s Ð² %pA"
 
-#: elf64-mmix.c:1670
+#: elf64-mmix.c:1666
 #, c-format
 msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
 msgstr "%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÑ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾) Ð² %pA"
 
-#: elf64-mmix.c:1676
+#: elf64-mmix.c:1672
 #, c-format
 msgid "%pB: register relocation against non-register symbol: %s in %pA"
 msgstr "%pB: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½ÐµÑ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: %s Ð² %pA"
 
-#: elf64-mmix.c:1713
+#: elf64-mmix.c:1709
 #, c-format
 msgid "%pB: directive LOCAL valid only with a register or absolute value"
 msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ Ð¸Ð»Ð¸ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸ÐµÐ¼"
 
-#: elf64-mmix.c:1744
+#: elf64-mmix.c:1738
 #, 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:2153
 #, 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:2208
 msgid "register section has contents\n"
 msgstr "Ð² Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ\n"
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2399
 #, c-format
 msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐµ Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð¸Ðµ: Ð¾Ñ�Ñ‚Ð°Ñ‘Ñ‚Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ� %lu; Ñ�Ð¾Ð¾Ð±Ñ‰Ð¸Ñ‚Ðµ Ð¾Ð± Ñ�Ñ‚Ð¾Ð¼ Ð´ÐµÑ„ÐµÐºÑ‚Ðµ"
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:1361
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÑƒÐ¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ %s, Ð° Ð½Ðµ %s"
+
+#: elf64-ppc.c:4302
 #, 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:4485
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr "%pB .opd Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾ Ð² ABI Ð²ÐµÑ€Ñ�Ð¸Ð¸ %d"
 
-#: elf64-ppc.c:4523
+#: elf64-ppc.c:5107
 #, 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:5277
+msgid "%H: %s reloc unsupported here\n"
+msgstr "%H: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð·Ð´ÐµÑ�ÑŒ Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
+
+#: elf64-ppc.c:5500
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr "%pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ e_flags 0x%lx"
 
-#: elf64-ppc.c:4927
+#: elf64-ppc.c:5508
 #, 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:5535
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld]"
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6845
 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:7112
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr "%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ R_PPC64_TOCSAVE"
 
-#: elf64-ppc.c:6644
+#: elf64-ppc.c:7363
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ð²Ñ‹Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¸Ð¸ dynreloc %pB, Ñ€Ð°Ð·Ð´ÐµÐ» %pA"
 
-#: elf64-ppc.c:6733
+#: elf64-ppc.c:7454
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr "%pB: .opd Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² opd"
 
-#: elf64-ppc.c:6743
+#: elf64-ppc.c:7464
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr "%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %u Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd"
 
-#: elf64-ppc.c:6765
+#: elf64-ppc.c:7486
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr "%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .opd"
 
-#: elf64-ppc.c:7249
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7987
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --plt-localentry Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� pc-Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼ power10"
+
+#: elf64-ppc.c:7995
 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:8311
 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:8746 elf64-ppc.c:9462
 #, 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:9419
 #, c-format
 msgid "%H: %s references optimized away TOC entry\n"
 msgstr "%H: %s Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ñ‹Ð¹ Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ TOC\n"
 
-#: elf64-ppc.c:9301
+#: elf64-ppc.c:9640
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ� got/toc Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð»Ñ� Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s\n"
+
+#: elf64-ppc.c:10536
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %s"
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11692
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ opd Ñƒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° toc Ð´Ð»Ñ� Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10303
+#: elf64-ppc.c:11842
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»"
 
-#: elf64-ppc.c:10330
+#: elf64-ppc.c:11869
 #, 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:11930 elf64-ppc.c:12182 elf64-ppc.c:14748
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr "%P: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð´Ð»Ñ� Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:12381
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÑƒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� Â«%sÂ»"
 
-#: elf64-ppc.c:11779
+#: elf64-ppc.c:13412
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr "%pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸"
 
-#: elf64-ppc.c:13189 elf64-ppc.c:13208
+#: elf64-ppc.c:14929
+msgid "__tls_get_addr call offset overflow"
+msgstr "__tls_get_addr Ð²Ñ‹Ð·Ð²Ð°Ð»Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
+
+#: elf64-ppc.c:15272 elf64-ppc.c:15291
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr "Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐµ Ð´Ð»Ñ� ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ� sdata4 Ð² .eh_frame"
 
-#: elf64-ppc.c:13244
+#: elf64-ppc.c:15380
 #, 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"
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
+msgstr[0] "Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ðµ"
+msgstr[1] "Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ñ…"
+msgstr[2] "Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° Ð² %u Ð³Ñ€ÑƒÐ¿Ð¿Ð°Ñ…"
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:15387
 #, c-format
 msgid ""
+"%s, iter %u\n"
 "  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 ""
-"  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                            %lu\n"
-"  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc            %lu\n"
-"  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc                     %lu\n"
-"  Ð¾Ð±Ð° Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                        %lu\n"
-"  Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                    %lu\n"
-"  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc   %lu\n"
-"  Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc             %lu\n"
-"  Ð¾Ð±Ð° Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                %lu\n"
-"  plt-Ð²Ñ‹Ð·Ð¾Ð²                            %lu\n"
-"  Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ‘Ð½Ð½Ñ‹Ð¹ plt-Ð²Ñ‹Ð·Ð¾Ð²                %lu\n"
-"  plt-Ð²Ñ‹Ð·Ð¾Ð² Ð½Ðµ toc                     %lu\n"
-"  Ð¾Ð±Ð° plt-Ð²Ñ‹Ð·Ð¾Ð²Ð°                       %lu\n"
-"  Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚                   %lu"
+"%s, Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ� %u\n"
+"  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ          %lu\n"
+"  Ð´Ð°Ð»ÑŒÐ½ÐµÐµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ  %lu\n"
+"  Ð²Ñ‹Ð·Ð¾Ð² plt          %lu\n"
+"  Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ %lu"
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:15769
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr "%H: %s Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ñ� TLS-Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Â«%pTÂ»\n"
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:15771
 #, 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:16555
 #, 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:16561
 #, 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:17212
+#, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr "%H: %s Ð´Ð»Ñ� %pT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
+
+#: elf64-ppc.c:17488
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr "%H: %s Ð´Ð»Ñ� Ð½ÐµÑ�Ð²Ð½Ð¾Ð³Ð¾ Ð²Ñ‹Ð·Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Â«%pTÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:17575
+#, 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:17630
 #, 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:17899
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr "%H: Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾ %u\n"
 
-#: elf64-ppc.c:15349
+#: elf64-ppc.c:17922
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr "%H: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%pTÂ»\n"
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:18067
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr "%H: %s Ð´Ð»Ñ� Â«%pTÂ»: Ð¾ÑˆÐ¸Ð±ÐºÐ° %d\n"
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2752
 #, 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
+#: elf64-s390.c:3415
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation %s against misaligned symbol `%s' (%#<PRIx64>) in %pB"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð¿Ð¾ Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» (%#<PRIx64>) Ð² %pB"
+
+#: elf64-sparc.c:134 elfcode.h:1601
 #, c-format
 msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
 msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %d Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %ld"
 
-#: elf64-sparc.c:467
+#: elf64-sparc.c:493
 #, 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:514
 #, 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:538
 #, 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:585
 #, 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:717
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr "%pB: UltraSPARC-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ� HAL-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ñ‹Ð¼ ÐºÐ¾Ð´Ð¾Ð¼"
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1690
 msgid "hidden symbol "
 msgstr "Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1693
 msgid "internal symbol "
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1696 elf64-x86-64.c:1700
 msgid "protected symbol "
 msgstr "Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1702
 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:1708
 msgid "undefined "
 msgstr "Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ "
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1718 elfnn-loongarch.c:901
 msgid "a shared object"
 msgstr "Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚"
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1720
+msgid "; recompile with -fPIC"
+msgstr "; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIC"
+
+#: elf64-x86-64.c:1725 elfnn-loongarch.c:907
 msgid "a PIE object"
 msgstr "Ð¾Ð±ÑŠÐµÐºÑ‚ PIE"
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1727 elfnn-loongarch.c:909
 msgid "a PDE object"
 msgstr "Ð¾Ð±ÑŠÐµÐºÑ‚ PDE"
 
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1729
+msgid "; recompile with -fPIE"
+msgstr "; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -fPIE"
+
+#: elf64-x86-64.c:1733
 #, 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:2566
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx64> > %#<PRIx64>) for section `%pA'"
+msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� (%#<PRIx64> > %#<PRIx64>) Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
+
+#: elf64-x86-64.c:2630
 #, 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:2791
 #, 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:3046
+#, c-format
+msgid "%pB: unsupported relocation %s against symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
+
+#: elf64-x86-64.c:3472 elfnn-aarch64.c:5784 elfnn-riscv.c:2572
 #, 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:3741
 #, 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:3755
 #, 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:4045
 #, 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
-msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GOTPCREL; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ñ� --no-relax\n"
+#: elf64-x86-64.c:4197
+msgid "%P: corrupt input: %pB\n"
+msgstr "%P: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ð²Ð²Ð¾Ð´: %pB\n"
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:5066
 #, c-format
-msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
-msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ PC Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ PLT Ð´Ð»Ñ� Â«%sÂ»\n"
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GOTPCREL Ð² Â«%sÂ»; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ñ� --no-relax\n"
 
-#: elf64-x86-64.c:4106
+#: elf64-x86-64.c:5225
 #, c-format
-msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
-msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ¸ Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ PLT Ð´Ð»Ñ� Â«%sÂ»\n"
+msgid "%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ PC Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ PLT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elf64-x86-64.c:4159
+#: elf64-x86-64.c:5301
 #, c-format
-msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
-msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ PC Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ GOT PLT Ð´Ð»Ñ� Â«%sÂ»\n"
+msgid "%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ¸ Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ PLT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elfcode.h:323
-msgid "warning: %pB has a corrupt section with a size (%"
-msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¾Ð¼ (%"
+#: elf64-x86-64.c:5354
+#, c-format
+msgid "%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ PC Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ðµ GOT PLT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elfcode.h:768
+#: elf64-x86-64.c:5505
 #, c-format
-msgid "warning: %pB has a corrupt string table index - ignoring"
-msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº â€” Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ�"
+msgid "%pB: Unable to generate dynamic relocs because a suitable section does not exist\n"
+msgstr "%pB: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�, Ñ‚Ð°Ðº ÐºÐ°Ðº Ð½Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñ�Ñ‰ÐµÐ³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°\n"
 
-#: elfcode.h:1212
+#: elfcode.h:342
+#, c-format
+msgid "warning: %pB has a section extending past end of file"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» %pB Ñ€Ð°Ñ�ÑˆÐ¸Ñ€Ñ�ÐµÑ‚Ñ�Ñ� Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ„Ð°Ð¹Ð»Ð°"
+
+#: elfcode.h:790
+#, c-format
+msgid "warning: %pB has a corrupt string table index"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñƒ %pB Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð² Ñ�Ñ‚Ñ€Ð¾Ðº"
+
+#: elfcode.h:838
+#, c-format
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ %pB Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½"
+
+#: elfcode.h:1056
+#, c-format
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr "%pB: %pA+%<PRIx64>: Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %<PRIx64> Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾"
+
+#: elfcode.h:1321
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr "%pB: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð²ÐµÑ€Ñ�Ð¸Ð¸ (%<PRId64>) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ�Ð¾ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° (%ld)"
 
-#: elfcore.h:300
+#: elfcore.h:280
 #, c-format
-msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
-msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB ÑƒÑ�ÐµÑ‡Ñ‘Ð½: Ð¾Ð¶Ð¸Ð´Ð°Ð»Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð° core >= %<PRIu64>, Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾: %<PRIu64>"
+msgid "warning: %pB has a segment extending past end of file"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %pB Ñ€Ð°Ñ�ÑˆÐ¸Ñ€Ñ�ÐµÑ‚Ñ�Ñ� Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ñ„Ð°Ð¹Ð»Ð°"
 
-#: elflink.c:1367
+#: elflink.c:1477
 #, 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:1483
 #, 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:1489
 #, 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:1495
 #, 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:2207
 #, c-format
 msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elflink.c:2452
+#: elflink.c:2720
 #, c-format
 msgid "%pB: version node not found for symbol %s"
 msgstr "%pB: Ð²ÐµÑ€Ñ�Ð¸Ñ� ÑƒÐ·Ð»Ð° Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð° Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° %s"
 
-#: elflink.c:2541
+#: elflink.c:2819
 #, 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:2831
 #, 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:3017
 #, c-format
 msgid "%pB: relocation size mismatch in %pB section %pA"
 msgstr "%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ð² %pB Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elflink.c:3066
+#: elflink.c:3350
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ‚Ð¸Ð¿ Ð¸ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elflink.c:3128
+#: elflink.c:3407
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr "%P: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ñ� Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¼ Â«%pTÂ» Ð¾Ð¿Ð°Ñ�Ð½Ð¾\n"
 
-#: elflink.c:3932
+#: elflink.c:4363
+msgid "%P: %pB: failed to add %s to first hash\n"
+msgstr "%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ‚ÑŒ %s Ð² Ð¿ÐµÑ€Ð²Ñ‹Ð¹ Ñ…Ñ�Ñˆ\n"
+
+#: elflink.c:4431
+msgid "%P: first_hash failed to create: %E\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ first_hash: %E\n"
+
+#: elflink.c:4462
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr "Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ñ‹Ð¹ ÐºÐ¾Ð´ ELF (%d) Ð² %pB, Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� %d"
 
-#: elflink.c:4598
+#: elflink.c:4945
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ %lx (Ð¼Ð°ÐºÑ� %lx)"
+
+#: elflink.c:5015
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñ� Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu (>= sh_info Ñ� %lu)"
+
+#: elflink.c:5164
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð²ÐµÑ€Ñ�Ð¸Ð¸"
+
+#: elflink.c:5202
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr "%pB: %s: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %u (Ð¼Ð°ÐºÑ� %d)"
 
-#: elflink.c:4635
+#: elflink.c:5239
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr "%pB: %s: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð°Ñ� Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d"
 
-#: elflink.c:5054
+#: elflink.c:5525
+#, c-format
+msgid "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used by the common definition in %pB"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %u Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB Ð¼ÐµÐ½ÑŒÑˆÐµ, Ñ‡ÐµÐ¼ %u, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ð¾Ð±Ñ‰Ð¸Ð¼ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸ÐµÐ¼ Ð² %pB"
+
+#: elflink.c:5532
+msgid "warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÐŸÐ Ð˜ÐœÐ•Ð§Ð�Ð�Ð˜Ð•: Ð¿Ñ€Ð¸ Ñ€Ð°Ñ�Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ�Ñ… Ð² Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ð¸ Ð¼Ð¾Ð³ÑƒÑ‚ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°Ñ‚ÑŒ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñ‹. Ð ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð¾Ð±Ñ€Ð°Ñ‚ÑŒÑ�Ñ� Ñ� Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¾Ð¹."
+
+#: elflink.c:5554
+msgid "warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÐŸÐ Ð˜ÐœÐ•Ð§Ð�Ð�Ð˜Ð•: Ð¿Ñ€Ð¸ Ñ€Ð°Ñ�Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ�Ñ… Ð² Ñ€Ð°Ð·Ð¼ÐµÑ€Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°Ñ‚ÑŒ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ñ‹. Ð ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÑ‚Ñ�Ñ� Ñ€Ð°Ð·Ð¾Ð±Ñ€Ð°Ñ‚ÑŒÑ�Ñ� Ñ� Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¾Ð¹."
+
+#: elflink.c:5697
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr "%pB: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: elflink.c:6130
+#: elflink.c:6812
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr "%pB: ÑƒÐºÐ°Ð·Ð°Ð½ Ð¸ Ð·Ð°Ð´Ð°Ð½ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚ÐµÐºÐ° %s"
 
-#: elflink.c:6134
+#: elflink.c:6816
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr "%pB: %s Ð½Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ñ‹Ð¼"
 
-#: elflink.c:6331
+#: elflink.c:7028
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ�: %s"
 
-#: elflink.c:6902
+#: elflink.c:7419
+msgid "error: creating an executable stack because of -z execstack command line option"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° Ð¸Ð·-Ð·Ð° Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° -z execstack Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð¾ÐºÐµ"
+
+#: elflink.c:7425
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° Ð¸Ð·-Ð·Ð° Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¹ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ -z execstack"
+
+#: elflink.c:7487
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s: Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸ÑŽ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° (Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» .note.GNU-stack)"
+
+#: elflink.c:7493
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ñ�Ñ‚ÐµÐº (Ñ‚Ð°Ðº ÐºÐ°Ðº Ñ€Ð°Ð·Ð´ÐµÐ» .note.GNU-stack Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹)"
+
+#: elflink.c:7501
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s: Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸ÑŽ Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» .note.GNU-stack"
+
+#: elflink.c:7507
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %s: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²Ð¸Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .note.GNU-stack Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°ÐµÑ‚ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹ Ñ�Ñ‚ÐµÐº"
+
+#: elflink.c:7510
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr "Ð—Ð�ÐœÐ•Ð§Ð�Ð�Ð˜Ð•: Ñ�Ñ‚Ð° Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ Ð¸ Ð±ÑƒÐ´ÐµÑ‚ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¾ Ð² Ð±ÑƒÐ´ÑƒÑ‰ÐµÐ¹ Ð²ÐµÑ€Ñ�Ð¸Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ°"
+
+#: elflink.c:7664
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» .preinit_array Ð½Ðµ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ°ÐµÑ‚Ñ�Ñ� Ð² DSO"
 
-#: elflink.c:8359
+#: elflink.c:9284
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° %s Ð² Ñ�Ð»Ð¾Ð¶Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ: %s"
 
-#: elflink.c:8514
+#: elflink.c:9447 elflink.c:9455
+msgid "division by zero"
+msgstr "Ð´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð½Ð° Ð½Ð¾Ð»ÑŒ"
+
+#: elflink.c:9469
 #, 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:9805
 #, 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:9808
 #, 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:10059 elflink.c:10077 elflink.c:10116 elflink.c:10134
 #, 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:10093 elflink.c:10150
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ñ‚Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� â€” Ð¾Ð½Ð¸ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð°"
 
-#: elflink.c:9234
+#: elflink.c:10202
 msgid "not enough memory to sort relocations"
 msgstr "Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾ Ð¿Ð°Ð¼Ñ�Ñ‚Ð¸ Ð´Ð»Ñ� Ñ�Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²ÐºÐ¸ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹"
 
-#: elflink.c:9502
+#: elflink.c:10536
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²: %d (>= %d)"
 
-#: elflink.c:9782
+#: elflink.c:10812
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO"
 
-#: elflink.c:9785
+#: elflink.c:10815
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO"
 
-#: elflink.c:9788
+#: elflink.c:10818
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð· %pB Ñ�Ñ�Ñ‹Ð»Ð°ÑŽÑ‚Ñ�Ñ� Ð¸Ð· DSO"
 
-#: elflink.c:9874
+#: elflink.c:10911
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA Ð´Ð»Ñ� Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA"
 
-#: elflink.c:10028
+#: elflink.c:11069
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr "%pB: Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elflink.c:10031
+#: elflink.c:11072
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elflink.c:10034
+#: elflink.c:11075
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr "%pB: Ñ�ÐºÑ€Ñ‹Ñ‚Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½"
 
-#: elflink.c:10066
+#: elflink.c:11107
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr "%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð²ÐµÑ€Ñ�Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð´Ð»Ñ� Ð²ÐµÑ€Ñ�Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
 
-#: elflink.c:10679
+#: elflink.c:11649
 #, c-format
-msgid "error: %pB: size of section %pA is not multiple of address size"
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð°"
+msgid "error: %pB: unable to create group section symbol"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: elflink.c:10724
+#: elflink.c:11798
 #, c-format
-msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%#<PRIx64>) Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ñ�Ñ�Ñ‹Ð»Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° Ð½ÐµÑ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»"
+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:12264
 #, 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
-#, c-format
-msgid "%pA has both ordered and unordered sections"
-msgstr "%pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹"
+msgid "error: %pB: size of section %pA is not multiple of address size"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pA Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: elflink.c:11592
+#: elflink.c:12544
 #, c-format
 msgid "%pB: no symbol found for import library"
 msgstr "%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸"
 
-#: elflink.c:12225
+#: elflink.c:13150
+msgid "%P: %pB: failed to finish relative relocations\n"
+msgstr "%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�\n"
+
+#: elflink.c:13227
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr "%pB: Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� %s Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� %s"
 
-#: elflink.c:12442
+#: elflink.c:13449
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð³ÐµÐ½ÐµÑ€Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼ÑƒÑŽ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ"
 
-#: elflink.c:12561
+#: elflink.c:13610
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€"
 
-#: elflink.c:12609
+#: elflink.c:13658
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·ÑƒÐµÑ‚Ñ�Ñ� Ð² Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ðµ"
 
-#: elflink.c:12701
+#: elflink.c:13752
 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:13755
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
 msgstr "%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² Ð¾Ð±Ñ‰ÐµÐ¼ Ð¾Ð±ÑŠÐµÐºÑ‚Ðµ\n"
 
-#: elflink.c:12829
+#: elflink.c:13758
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr "%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² PDE\n"
+
+#: elflink.c:13761
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚Ñ�Ñ� DT_TEXTREL Ð² PIE\n"
+
+#: elflink.c:13890
 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:14312
+msgid "%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%P: %pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� --gc-sections Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ» linked-to\n"
 
-#: elflink.c:13668
+#: elflink.c:14793
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr "%pB: %pA+%#<PRIx64>: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð´Ð»Ñ� INHERIT"
 
-#: elflink.c:13844
+#: elflink.c:14834
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pA:Â» Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ VTENTRY"
+
+#: elflink.c:14977
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr "Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ INPUT_SECTION_FLAG %s\n"
 
-#: elfxx-mips.c:1450
+#: elflink.c:15758
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
+
+#: elflink.c:15847
+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:478
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ð»Ð°Ð±Ñ‹Ð¹ TLS Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ�ÐµÑ‚Ñ�Ñ� Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸ÐµÐ¹ Ð¸ Ð¼Ð¾Ð¶ÐµÑ‚ Ð½Ðµ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ ÐºÐ°Ðº Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elfxx-aarch64.c:786
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "%XÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ BTI.\n"
+
+#: elfxx-aarch64.c:788
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ BTI.\n"
+
+#: elfxx-aarch64.c:798
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "%XÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ GCS.\n"
+
+#: elfxx-aarch64.c:800
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ GCS.\n"
+
+#: elfxx-aarch64.c:810
+#, c-format
+msgid "%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "%XÐ¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ GCS.\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "warning: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾, Ñ‡Ñ‚Ð¾ Ð¿Ð¾Ð»Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² %d Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ñ‚Ñ€ÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ�Ð¼Ð¸ GCS.\n"
+
+#: elfxx-aarch64.c:971
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° AArch64: 0x%x>"
+
+#: elfxx-aarch64.c:1115
+#, c-format
+msgid "%pB: warning: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: BTI Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z force-bti, Ð½Ð¾ Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�.\n"
+
+#: elfxx-aarch64.c:1117
+#, c-format
+msgid "%X%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: BTI Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z force-bti, Ð½Ð¾ Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�.\n"
+
+#: elfxx-aarch64.c:1149
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: GCS Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z gcs, Ð½Ð¾ Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�. Ð’ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½ GCS Ð¸Ð»Ð¸ Ð¾Ð½ Ð½Ðµ Ñ�Ñ‚Ð°Ð½ÐµÑ‚ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñƒ, ÐµÑ�Ð»Ð¸ Ð²Ð¾ Ð²Ñ�ÐµÑ… Ð·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ð¾Ñ�Ñ‚Ñ�Ñ… Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚ Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ GCS.\n"
+
+#: elfxx-aarch64.c:1153
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%X%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: GCS Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z gcs, Ð½Ð¾ Ð² Ñ�Ñ‚Ð¾Ð¹ Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�. Ð’ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¼ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½ GCS Ð¸Ð»Ð¸ Ð¾Ð½ Ð½Ðµ Ñ�Ñ‚Ð°Ð½ÐµÑ‚ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñƒ, ÐµÑ�Ð»Ð¸ Ð²Ð¾ Ð²Ñ�ÐµÑ… Ð·Ð°Ð²Ð¸Ñ�Ð¸Ð¼Ð¾Ñ�Ñ‚Ñ�Ñ… Ð¾Ð±Ñ‰ÐµÐ¹ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ¸ Ð½Ðµ Ð±ÑƒÐ´ÐµÑ‚ Ð¼Ð°Ñ€ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ GCS.\n"
+
+#: elfxx-aarch64.c:1159
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: GCS Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z gcs, Ð½Ð¾ Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�.\n"
+
+#: elfxx-aarch64.c:1161
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: GCS Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� Ð¸Ð·-Ð·Ð° -z gcs, Ð½Ð¾ Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ðµ Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ñ�.\n"
+
+#: elfxx-loongarch.c:1911
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s"
+
+#: elfxx-loongarch.c:1939
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� bfd %#x"
+
+#: elfxx-loongarch.c:2013
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr "%pB: Ð¿Ñ€Ð¸ Ñ�Ð´Ð²Ð¸Ð³Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð²Ð¿Ñ€Ð°Ð²Ð¾ Ð½Ð° %d Ð²Ð¾Ð·Ð½Ð¸ÐºÐ»Ð° Ð¾ÑˆÐ¸Ð±ÐºÐ° 0x%lx"
+
+#: elfxx-loongarch.c:2032
+#, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s 0x%lx"
+
+#: elfxx-mips.c:1534
 msgid "static procedure (no name)"
 msgstr "Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (Ð±ÐµÐ· Ð¸Ð¼ÐµÐ½Ð¸)"
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5895
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr "Ð¤ÑƒÐ½ÐºÑ†Ð¸Ð¸ MIPS16 Ð¸ microMIPS Ð½Ðµ Ð¼Ð¾Ð³ÑƒÑ‚ Ð²Ñ‹Ð·Ñ‹Ð²Ð°Ñ‚ÑŒ Ð´Ñ€ÑƒÐ³ Ð´Ñ€ÑƒÐ³Ð°"
 
-#: elfxx-mips.c:6485
+#: elfxx-mips.c:6665
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ JALX Ð´Ð»Ñ� Ñ‚Ð¾Ð³Ð¾ Ð¶Ðµ Ñ€ÐµÐ¶Ð¸Ð¼Ð° ISA\n"
 
-#: elfxx-mips.c:6518
+#: elfxx-mips.c:6698
 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:6743
 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:6755
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¼ÐµÐ¶Ð´Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA\n"
 
-#: elfxx-mips.c:7223
+#: elfxx-mips.c:7401
 #, 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:7445
 #, 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:7681
+#, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ Â«%sÂ» ÑƒÑ�ÐµÑ‡Ñ‘Ð½"
+
+#: elfxx-mips.c:8533 elfxx-mips.c:8659
 #, c-format
 msgid "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÑŽ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Â«%sÂ»"
 
-#: elfxx-mips.c:8558
+#: elfxx-mips.c:8791
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr "%pB: Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½Ð¾ Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %s"
 
-#: elfxx-mips.c:8658
+#: elfxx-mips.c:8891
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ GOT Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð½Ðµ Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ð² Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñ…"
 
-#: elfxx-mips.c:8796
+#: elfxx-mips.c:9031
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ CALL16 Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64> Ð½Ðµ Ð´Ð»Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: elfxx-mips.c:9086
+#: elfxx-mips.c:9334
 #, 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:9460
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "Ð¡Ð¸Ð¼Ð²Ð¾Ð» IFUNC %s Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² â€” IFUNCS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elfxx-mips.c:9463
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ð² Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
+
+#: elfxx-mips.c:9683
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr "Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s"
 
-#: elfxx-mips.c:10350
+#: elfxx-mips.c:10606
 #, 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
-msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
-msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» small-data Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ 64ÐšÐ‘ â€” Ð½Ð¸Ð¶Ð½Ð¸Ð¹ Ð¿Ñ€ÐµÐ´ÐµÐ» small-data (Ñ�Ð¼. Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)"
+#: elfxx-mips.c:10748
+msgid "small-data section too large; lower small-data size limit (see option -G)"
+msgstr "Ñ€Ð°Ð·Ð´ÐµÐ» small-data Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹; ÑƒÐ¼ÐµÐ½ÑŒÑˆÐ¸Ñ‚Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ� small-data (Ñ�Ð¼. Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)"
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10767
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ðº JALX Ð´Ð»Ñ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10770
 msgid "jump to a non-word-aligned address"
 msgstr "Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10771
 msgid "jump to a non-instruction-aligned address"
 msgstr "Ð¿Ñ€Ñ‹Ð¶Ð¾Ðº Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10774
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ðº JALX Ð´Ð»Ñ� Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ�Ð»Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10776
 msgid "branch to a non-instruction-aligned address"
 msgstr "Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ Ð°Ð´Ñ€ÐµÑ�Ñƒ"
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10778
 msgid "PC-relative load from unaligned address"
 msgstr "Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ PC Ð¸Ð· Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:11078
 #, 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:11193 elfxx-mips.c:11786
 #, 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:11758
 #, 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:13503 reloc.c:8524
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr "%X%P: %pB(%pA): Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð´Ð»Ñ� Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %V\n"
+
+#: elfxx-mips.c:14814
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s"
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15342
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ðµ Ð¸Ð¼Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15620
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ñ„Ð°Ð¹Ð»Ð¾Ð² abicalls Ñ� Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð½Ðµ-abicalls"
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15637
 #, 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:15669 elfxx-mips.c:15735 elfxx-mips.c:15750
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»Ñ� %s Ñ� Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: elfxx-mips.c:15281
+#: elfxx-mips.c:15693
 #, 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:15718
 #, 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:15852
 #, 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:15858
 #, 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:15864
 #, 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:15878
 #, 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:15897
 #, 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:15909
 #, 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:15918
 #, 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:15980
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr "%pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚ Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸ÐµÐ¹"
 
-#: elfxx-mips.c:15582
+#: elfxx-mips.c:15994
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr "%pB: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸ÐµÐ¹"
 
-#: elfxx-mips.c:15634
+#: elfxx-mips.c:16047
 #, 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:16052
 #, 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:16056
 #, 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:16063
 #, 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:16067
 #, 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:16258
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr "-mips32r2 -mfp64 (12 Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ�ÑŽÑ‚Ñ�Ñ� Ð²Ñ‹Ð·Ñ‹Ð²Ð°ÐµÐ¼Ñ‹Ð¼)"
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16320 elfxx-mips.c:16331
 msgid "None"
 msgstr "ÐžÑ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚"
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16322 elfxx-mips.c:16391
 msgid "Unknown"
 msgstr "Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾"
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16402
 #, c-format
 msgid "Hard or soft float\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¸Ð»Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ�\n"
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16405
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (Ð´Ð²Ð¾Ð¹Ð½Ð°Ñ� Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚ÑŒ)\n"
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16408
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð°Ñ� Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ�Ñ‚ÑŒ)\n"
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16411
 #, c-format
 msgid "Soft float\n"
 msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ�\n"
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16414
 #, 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:16417
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, Ð»ÑŽÐ±Ð¾Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16005
+#: elfxx-mips.c:16420
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr "Ð�Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð°Ñ� Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ� Ð·Ð°Ð¿Ñ�Ñ‚Ð°Ñ� (32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¦ÐŸ, 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16008
+#: elfxx-mips.c:16423
 #, 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:16455
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16457
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16459
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16461
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16463
 #, c-format
 msgid " [abi unknown]"
 msgstr " [abi Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚ÐµÐ½]"
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16465
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16467
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16469
 #, c-format
 msgid " [no abi set]"
 msgstr " [abi Ð½Ðµ Ð·Ð°Ð´Ð°Ð½]"
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16494
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ISA]"
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16514
 #, 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:1950
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr "Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ x ISA Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼Ð¸"
+
+#: elfxx-riscv.c:1956
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ð¸ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ Ð´Ð»Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA Â«%sÂ»"
+
+#: elfxx-riscv.c:2063
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr "%s: Ð¿ÐµÑ€Ð²Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Â«eÂ», Â«iÂ» Ð¸Ð»Ð¸ Â«gÂ»"
+
+#: elfxx-riscv.c:2087
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr "%s: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ð¸Ð»Ð¸ ÐºÐ»Ð°Ñ�Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° Â«%cÂ»"
+
+#: elfxx-riscv.c:2123
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr "%s: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA Â«%sÂ» Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð½Ð° <Ð½Ð¾Ð¼ÐµÑ€>p"
+
+#: elfxx-riscv.c:2147
+#, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr "%s: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ Â«%sÂ»"
+
+#: elfxx-riscv.c:2171
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr "%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¾Ñ‚Ð´ÐµÐ»Ñ�Ñ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ _"
+
+#: elfxx-riscv.c:2211
+#, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr "rv%de Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«hÂ»"
+
+#: elfxx-riscv.c:2219
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr "rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«qÂ»"
+
+#: elfxx-riscv.c:2226
+msgid "zcmp' is incompatible with `d' and `c', or `zcd' extension"
+msgstr "zcmpÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ð° Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÐµÐ¼ Â«dÂ» Ð¸ Â«cÂ» Ð¸Ð»Ð¸ Â«d/zcdÂ»"
+
+#: elfxx-riscv.c:2233
+#, c-format
+msgid "rv%d does not support the `zcf' extension"
+msgstr "rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«zcfÂ»"
+
+#: elfxx-riscv.c:2240
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr "Â«zfinxÂ» ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÐµÐ¼ Â«f/d/q/zfh/zfhminÂ»"
+
+#: elfxx-riscv.c:2247
+msgid "`xtheadvector' is conflict with the `v/zve32x' extension"
+msgstr "Â«xtheadvectorÂ» ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÐµÐ¼ Â«v/zve32xÂ»"
+
+#: elfxx-riscv.c:2256
+msgid "`zclsd' is conflict with the `c+f'/ `zcf' extension"
+msgstr "Â«zclsdÂ» ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚ÑƒÐµÑ‚ Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÐµÐ¼ Â«c+fÂ»/Â«zcfÂ»"
+
+#: elfxx-riscv.c:2261
+#, c-format
+msgid "rv%d does not support the `ssnpm' extension"
+msgstr "rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«ssnpmÂ»"
+
+#: elfxx-riscv.c:2267
+#, c-format
+msgid "rv%d does not support the `smnpm' extension"
+msgstr "rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«smnpmÂ»"
+
+#: elfxx-riscv.c:2273
+#, c-format
+msgid "rv%d does not support the `smmpm' extension"
+msgstr "rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«smmpmÂ»"
+
+#: elfxx-riscv.c:2279
+#, c-format
+msgid "rv%d does not support the `sspm' extension"
+msgstr "rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«sspmÂ»"
+
+#: elfxx-riscv.c:2285
+#, c-format
+msgid "rv%d does not support the `supm' extension"
+msgstr "rv%d Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«supmÂ»"
+
+#: elfxx-riscv.c:2307
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr "Ð´Ð»Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ð¹ zvl*b Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ð²ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«vÂ» Ð¸Ð»Ð¸ Â«zveÂ»"
+
+#: elfxx-riscv.c:2364
+msgid "Warning: should use \"_\" to contact Profiles with other extensions"
+msgstr "ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð´Ð»Ñ� Ñ�Ð²Ñ�Ð·Ð¸ Profiles Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ�Ð¼Ð¸ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐ¹Ñ‚Ðµ \"_\""
+
+#: elfxx-riscv.c:2405
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr "%s: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ð±ÑƒÐºÐ²Ñ‹ Ð² Ð²ÐµÑ€Ñ…Ð½ÐµÐ¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ñ‹"
+
+#: elfxx-riscv.c:2439
+#, c-format
+msgid "%s: ISA string must begin with rv32, rv64 or Profiles"
+msgstr "%s: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð´Ð¾Ð»Ð¶Ð½Ð° Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ‚ÑŒÑ�Ñ� Ñ� rv32, rv64 Ð¸Ð»Ð¸ Profiles"
+
+#: elfxx-riscv.c:2629
+msgid "internal: "
+msgstr "Ð½ÑƒÑ‚Ñ€Ñ�Ð½ÐºÐ°: "
+
+#: elfxx-riscv.c:2683
+#, c-format
+msgid "%sinvalid ISA extension ends with <number>p in %s `%s'"
+msgstr "%sÐ½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ ÐºÐ¾Ð½ÐµÑ† Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA <Ð½Ð¾Ð¼ÐµÑ€>p Ð² %s Â«%sÂ»"
+
+#: elfxx-riscv.c:2706
+#, c-format
+msgid "%sunknown ISA extension `%s' in %s `%s'"
+msgstr "%sÐ½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Â«%sÂ» Ð² %s Â«%sÂ»"
+
+#: elfxx-riscv.c:2717
+#, c-format
+msgid "%sdeprecated - extension `%s' in %s `%s'"
+msgstr "%sdeprecated - Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«%sÂ» Ð² %s Â«%sÂ»"
+
+#: elfxx-riscv.c:2727
+#, c-format
+msgid "%scannot + base extension `%s' in %s `%s'"
+msgstr "%scannot + Ð±Ð°Ð·Ð¾Ð²Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«%sÂ» Ð² %s Â«%sÂ»"
+
+#: elfxx-riscv.c:3059 elfxx-riscv.c:3343
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr "Ð½ÑƒÑ‚Ñ€Ñ�Ð½ÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð¸Ð¶Ð¸Ð¼Ñ‹Ð¹ INSN_CLASS_*"
+
+#: elfxx-riscv.c:3093
+msgid "zicfiss' and `zcmop"
+msgstr "zicfissÂ» Ð¸ Â«zcmop"
+
+#: elfxx-riscv.c:3106
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr "zihintntlÂ» Ð¸ Â«cÂ», Ð¸Ð»Ð¸ Â«zihintntlÂ» Ð¸ Â«zca"
+
+#: elfxx-riscv.c:3111 elfxx-riscv.c:3137
+msgid "c' or `zca"
+msgstr "cÂ» Ð¸Ð»Ð¸ Â«zca"
+
+#: elfxx-riscv.c:3119
+msgid "m' or `zmmul"
+msgstr "mÂ» Ð¸Ð»Ð¸ Â«zmmul"
+
+#: elfxx-riscv.c:3139
+msgid "f' and `c', or `zcf"
+msgstr "fÂ» Ð¸ Â«cÂ» Ð¸Ð»Ð¸ Â«zcf"
+
+#: elfxx-riscv.c:3141
+msgid "d' and `c', or `zcd"
+msgstr "dÂ» Ð¸ Â«cÂ» Ð¸Ð»Ð¸ Â«zcd"
+
+#: elfxx-riscv.c:3143
+msgid "f' or `zfinx"
+msgstr "fÂ» Ð¸Ð»Ð¸ Â«zfinx"
+
+#: elfxx-riscv.c:3145
+msgid "d' or `zdinx"
+msgstr "dÂ» Ð¸Ð»Ð¸ Â«zdinx"
+
+#: elfxx-riscv.c:3147
+msgid "q' or `zqinx"
+msgstr "qÂ» Ð¸Ð»Ð¸ Â«zqinx"
+
+#: elfxx-riscv.c:3149
+msgid "zfh' or `zhinx"
+msgstr "zfhÂ» Ð¸Ð»Ð¸ Â«zhinx"
+
+#: elfxx-riscv.c:3153
+msgid "zfhmin' or `zhinxmin"
+msgstr "zfhminÂ» Ð¸Ð»Ð¸ Â«zhinxmin"
+
+#: elfxx-riscv.c:3164
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr "zfhminÂ» Ð¸ Â«dÂ», Ð¸Ð»Ð¸ Â«zhinxminÂ» Ð¸ Â«zdinx"
+
+#: elfxx-riscv.c:3175
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr "zfhminÂ» Ð¸ Â«qÂ», Ð¸Ð»Ð¸ Â«zhinxminÂ» Ð¸ Â«zqinx"
+
+#: elfxx-riscv.c:3183
+msgid "d' and `zfa"
+msgstr "dÂ» Ð¸ Â«zfa"
+
+#: elfxx-riscv.c:3191
+msgid "q' and `zfa"
+msgstr "qÂ» Ð¸ Â«zfa"
+
+#: elfxx-riscv.c:3199
+msgid "zfh' and `zfa"
+msgstr "zfhÂ» Ð¸ Â«zfa"
+
+#: elfxx-riscv.c:3209
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr "zfhÂ» Ð¸ Â«zfaÂ», Ð¸Ð»Ð¸ Â«zvfhÂ» Ð¸ Â«zfa"
+
+#: elfxx-riscv.c:3214
+msgid "zfh' or `zvfh"
+msgstr "zfhÂ» Ð¸Ð»Ð¸ Â«zvfh"
+
+#: elfxx-riscv.c:3230
+msgid "zbb' or `zbkb"
+msgstr "zbbÂ» Ð¸Ð»Ð¸ Â«zbkb"
+
+#: elfxx-riscv.c:3232
+msgid "zbc' or `zbkc"
+msgstr "zbcÂ» Ð¸Ð»Ð¸ Â«zbkc"
+
+#: elfxx-riscv.c:3240
+msgid "zknd' or `zkne"
+msgstr "zkndÂ» Ð¸Ð»Ð¸ Â«zkne"
+
+#: elfxx-riscv.c:3246
+msgid "v' or `zve64x' or `zve32x"
+msgstr "vÂ« Ð¸Ð»Ð¸ Â«zve64xÂ» Ð¸Ð»Ð¸ Â«zve32x"
+
+#: elfxx-riscv.c:3248
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr "vÂ» Ð¸Ð»Ð¸ Â«zve64dÂ» Ð¸Ð»Ð¸ Â«zve64fÂ» Ð¸Ð»Ð¸ Â«zve32f"
+
+#: elfxx-riscv.c:3250
+msgid "zvbb"
+msgstr "zvbb"
+
+#: elfxx-riscv.c:3252
+msgid "zvbc"
+msgstr "zvbc"
+
+#: elfxx-riscv.c:3258
+msgid "zvkb"
+msgstr "zvkb"
+
+#: elfxx-riscv.c:3260
+msgid "zvkg"
+msgstr "zvkg"
+
+#: elfxx-riscv.c:3262
+msgid "zvkned"
+msgstr "zvkned"
+
+#: elfxx-riscv.c:3264
+msgid "zvknha' or `zvknhb"
+msgstr "zvknhaÂ» Ð¸Ð»Ð¸ Â«zvknhb"
+
+#: elfxx-riscv.c:3266
+msgid "zvksed"
+msgstr "zvksed"
+
+#: elfxx-riscv.c:3268
+msgid "zvksh"
+msgstr "zvksh"
+
+#: elfxx-riscv.c:3272
+msgid "zcb' and `zba"
+msgstr "zcbÂ» Ð¸ Â«zba"
+
+#: elfxx-riscv.c:3274
+msgid "zcb' and `zbb"
+msgstr "zcbÂ» Ð¸ Â«zbb"
+
+#: elfxx-riscv.c:3276
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr "zcbÂ» Ð¸ Â«zmmulÂ», Ð¸Ð»Ð¸ Â«zcbÂ» Ð¸ Â«m"
+
+#: elfxx-riscv.c:3284
+msgid "smctr' or `ssctr"
+msgstr "smctrÂ» Ð¸Ð»Ð¸ Â«ssctr"
+
+#: elfxx-riscv.c:3294
+msgid "h"
+msgstr "h"
+
+#: elfxx-riscv.c:3441
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ�Ð²Ð¾Ð¹Ñ�Ñ‚Ð² GNU\n"
+
+#: elfxx-riscv.c:3485
+#, c-format
+msgid "error: %pB: <corrupt RISC-V used size: 0x%x>"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° RISC-V: 0x%x>"
+
+#: elfxx-sparc.c:3028 elfnn-aarch64.c:5768
 #, 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:534 elfxx-x86.c:3586
 #, c-format
-msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
-msgstr "%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Â«%sÂ» Ð¸Ð· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ� Â«%pAÂ»\n"
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr "%P: %pB: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½ÐµÐºÐ¾Ð¿Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² %pB\n"
 
 #: elfxx-x86.c:1027
+#, c-format
+msgid "%P: %pB: failed to allocate relative reloc record\n"
+msgstr "%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�\n"
+
+#: elfxx-x86.c:1388
+#, c-format
+msgid "%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ 64-Ð±Ð¸Ñ‚Ð½ÑƒÑŽ Ð±Ð¸Ñ‚Ð¾Ð²ÑƒÑŽ ÐºÐ°Ñ€Ñ‚Ñƒ DT_RELR\n"
+
+#: elfxx-x86.c:1424
+#, c-format
+msgid "%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ 32-Ð±Ð¸Ñ‚Ð½ÑƒÑŽ Ð±Ð¸Ñ‚Ð¾Ð²ÑƒÑŽ ÐºÐ°Ñ€Ñ‚Ñƒ DT_RELR\n"
+
+#: elfxx-x86.c:1563
+#, c-format
+msgid "%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr "%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð¿Ð°Ð¼Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»\n"
+
+#: elfxx-x86.c:1750
+#, c-format
+msgid "%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr "%P: %pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ñ‹Ñ… Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð¸Ð·Ð¼ÐµÐ½Ñ‘Ð½: Ð½Ð¾Ð²Ñ‹Ð¹ (%lu) != Ñ�Ñ‚Ð°Ñ€Ð¾Ð¼Ñƒ (%lu)\n"
+
+#: elfxx-x86.c:1772
+#, c-format
+msgid "%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr "%P: %pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ñ‹Ñ… Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹\n"
+
+#: elfxx-x86.c:2243
+#, c-format
+msgid "%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%P: %pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾\n"
+
+#: elfxx-x86.c:2325
 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:3254
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%v, Ð¸Ð½Ñ„Ð¾: 0x%v, Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ: 0x%v) Ð² Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð² %pB\n"
+
+#: elfxx-x86.c:3260
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: x%v, Ð¸Ð½Ñ„Ð¾: 0x%v) Ð² Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ» Ð² %pB\n"
+
+#: elfxx-x86.c:3296
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed\n"
+msgstr "%pB: TLS-Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´ Ð¸Ð· %s Ð² %s Ð´Ð»Ñ� Â«%sÂ» Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%v Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%pAÂ» Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹\n"
+
+#: elfxx-x86.c:3305
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² ADD Ð¸Ð»Ð¸ MOV\n"
+
+#: elfxx-x86.c:3313
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² ADD Ð¸Ð»Ð¸ MOVRS\n"
+
+#: elfxx-x86.c:3321
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² ADD, SUB Ð¸Ð»Ð¸ MOV\n"
+
+#: elfxx-x86.c:3329
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² Ð½ÐµÑ�Ð²Ð½Ð¾Ð¼ CALL Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼ %s\n"
+
+#: elfxx-x86.c:3338
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð´Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð² LEA\n"
 
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:3965
 #, 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:4178
+#, c-format
+msgid "%pB: x86 ISA needed: "
+msgstr "%pB: Ð´Ð»Ñ� x86 ISA Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ�: "
+
+#: elfxx-x86.c:4180
+#, c-format
+msgid "%pB: x86 ISA used: "
+msgstr "%pB: x86 ISA Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚: "
 
-#: elfxx-x86.c:2614
+#: elfxx-x86.c:4202
 #, c-format
-msgid "%F%pA: failed to align section\n"
-msgstr "%F%pA: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ€Ð¾Ð²Ð½Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»\n"
+msgid "<unknown: %x>"
+msgstr "<Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾: %x>"
+
+#: elfxx-x86.c:4338
+msgid "%P: failed to create %sn"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ %sn"
+
+#: elfxx-x86.c:4352
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s\n"
+
+#: elfxx-x86.c:4353
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s\n"
+
+#: elfxx-x86.c:4459
+msgid "IBT and SHSTK properties"
+msgstr "Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð° IBT Ð¸ SHSTK"
+
+#: elfxx-x86.c:4461
+msgid "IBT property"
+msgstr "Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ IBT"
+
+#: elfxx-x86.c:4463
+msgid "SHSTK property"
+msgstr "Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ SHSTK"
+
+#: elfxx-x86.c:4468
+msgid "LAM_U48 property"
+msgstr "Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ LAM_U48"
+
+#: elfxx-x86.c:4473
+msgid "LAM_U57 property"
+msgstr "Ð¡Ð²Ð¾Ð¹Ñ�Ñ‚Ð²Ð¾ LAM_U57"
+
+#: elfxx-x86.c:4651
+msgid "%P: failed to create VxWorks dynamic sections\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ VxWorks\n"
+
+#: elfxx-x86.c:4660
+msgid "%P: failed to create GOT sections\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ GOT\n"
+
+#: elfxx-x86.c:4678
+msgid "%P: failed to create ifunc sections\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ ifunc\n"
+
+#: elfxx-x86.c:4717
+msgid "%P: failed to create GOT PLT section\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT\n"
 
-#: elfxx-x86.c:2760
-msgid "%F%P: failed to create VxWorks dynamic sections\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ VxWorks\n"
-
-#: elfxx-x86.c:2769
-msgid "%F%P: failed to create GOT sections\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ GOT\n"
-
-#: elfxx-x86.c:2787
-msgid "%F%P: failed to create ifunc sections\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹ ifunc\n"
-
-#: elfxx-x86.c:2828
-msgid "%F%P: failed to create GOT PLT section\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT\n"
-
-#: elfxx-x86.c:2849
-msgid "%F%P: failed to create IBT-enabled PLT section\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ IBT\n"
-
-#: elfxx-x86.c:2864
-msgid "%F%P: failed to create BND PLT section\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» BND PLT\n"
-
-#: elfxx-x86.c:2885
-msgid "%F%P: failed to create PLT .eh_frame section\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .eh_frame\n"
-
-#: elfxx-x86.c:2898
-msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT .eh_frame\n"
-
-#: elfxx-x86.c:2912
-msgid "%F%P: failed to create the second PLT .eh_frame section\n"
-msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .eh_frame\n"
+#: elfxx-x86.c:4734
+msgid "%P: failed to create IBT-enabled PLT section\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT Ñ� Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ð¼ IBT\n"
+
+#: elfxx-x86.c:4752
+msgid "%P: failed to create PLT .eh_frame section\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .eh_frame\n"
+
+#: elfxx-x86.c:4763
+msgid "%P: failed to create GOT PLT .eh_frame section\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» GOT PLT .eh_frame\n"
+
+#: elfxx-x86.c:4775
+msgid "%P: failed to create the second PLT .eh_frame section\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .eh_frame\n"
+
+#: elfxx-x86.c:4790
+msgid "%P: failed to create PLT .sframe section\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .sframe\n"
+
+#: elfxx-x86.c:4806
+msgid "%P: failed to create second PLT .sframe section\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ð²Ñ‚Ð¾Ñ€Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» PLT .sframe\n"
+
+#: elfxx-x86.c:4819
+msgid "%P: failed to create PLT GOT .sframe section\n"
+msgstr "%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» PLT GOT .sframe\n"
+
+#: elfxx-x86.c:4859
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ð³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Â«%pBÂ»\n"
 
 #: ihex.c:230
 #, c-format
@@ -5096,430 +6161,470 @@ 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:580
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² ihex_read_section"
 
-#: ihex.c:619
+#: ihex.c:613
 #, c-format
 msgid "%pB: bad section length in ihex_read_section"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ihex_read_section"
 
-#: ihex.c:793
+#: ihex.c:784
 #, 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:842
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: Ð°Ð´Ñ€ÐµÑ� %#<PRIx64> Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Intel Hex Ñ„Ð°Ð¹Ð»Ð°"
 
-#: libbfd.c:937
+#: libbfd.c:1260
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ€Ð°Ñ�Ð¶Ð°Ñ‚Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA"
 
-#: libbfd.c:1101
-#, c-format
-msgid "Deprecated %s called at %s line %d in %s\n"
-msgstr "Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s Ñ€Ñ�Ð´Ð¾Ð¼ Ñ� %s Ð² Ñ�Ñ‚Ñ€Ð¾ÐºÐµ %d Ð² %s\n"
-
-#: libbfd.c:1104
+#: libbfd.c:1272
 #, c-format
-msgid "Deprecated %s called\n"
-msgstr "Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s\n"
+msgid "%pB: mapped section %pA has non-NULL buffer"
+msgstr "%pB: Ñ�Ð¾Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» %pA Ð¸Ð¼ÐµÐµÑ‚ Ð±ÑƒÑ„ÐµÑ€ Ð½Ðµ-NULL"
 
-#: linker.c:1697
+#: linker.c:1749
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
-msgstr "%pB: ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ðº Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ"
+msgstr "%pB: ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð° Â«%sÂ» Ñ�Ð¾Ð·Ð´Ð°Ñ‘Ñ‚ Ð·Ð°Ñ†Ð¸ÐºÐ»Ð¸Ð²Ð°Ð½Ð¸Ðµ"
+
+#: linker.c:1829
+msgid "%P: %pB: note: the message above does not take linker garbage collection into account\n"
+msgstr "%P: %pB: Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸Ðµ: Ñ�Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ðµ Ð²Ñ‹ÑˆÐµ Ð½Ðµ ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÐµÑ‚ Ñ�Ð±Ð¾Ñ€ÐºÑƒ Ð¼ÑƒÑ�Ð¾Ñ€Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ°\n"
 
-#: linker.c:2567
+#: linker.c:2663
 #, c-format
 msgid "attempt to do relocatable link with %s input and %s output"
 msgstr "Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�Ð´ÐµÐ»Ð°Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼ÑƒÑŽ Ñ�Ñ�Ñ‹Ð»ÐºÑƒ Ñ� Ð²Ñ…Ð¾Ð´Ð¾Ð¼ %s Ð¸ Ð²Ñ‹Ñ…Ð¾Ð´Ð¾Ð¼ %s"
 
-#: linker.c:2853
+#: linker.c:2942
 #, c-format
 msgid "%pB: ignoring duplicate section `%pA'\n"
 msgstr "%pB: Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€ÑƒÐµÑ‚Ñ�Ñ� Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ»\n"
 
-#: linker.c:2863 linker.c:2873
+#: linker.c:2952 linker.c:2962
 #, c-format
 msgid "%pB: duplicate section `%pA' has different size\n"
 msgstr "%pB: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð´Ñ€ÑƒÐ³Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€\n"
 
-#: linker.c:2882 linker.c:2888
+#: linker.c:2976 linker.c:2984
 #, c-format
 msgid "%pB: could not read contents of section `%pA'\n"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»\n"
 
-#: linker.c:2893
+#: linker.c:2993
 #, c-format
 msgid "%pB: duplicate section `%pA' has different contents\n"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ€Ð°Ð·Ð´ÐµÐ» Â«%pAÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð´Ñ€ÑƒÐ³Ð¾Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ\n"
 
-#: linker.c:3407
+#: linker.c:3517
 #, c-format
 msgid "%pB: compiled for a big endian system and target is little endian"
 msgstr "%pB: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹ Ñ� Ð¿Ñ€Ñ�Ð¼Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚, Ð° Ñ†ÐµÐ»ÑŒ Ñ� Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ñ‹Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
-#: linker.c:3410
+#: linker.c:3520
 #, 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:169 mach-o-arm.c:301
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ� Ð¿Ð°Ñ€Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� mach-o ARM: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� Ð¿ÐµÑ€Ð²Ñ‹Ð¼ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼"
+
+#: mach-o-arm.c:185
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð°Ñ� Ð¿Ð°Ñ€Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:200
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:215
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:230
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ half sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:262
+#, 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:332
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ mach-o ARM: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %d"
+
+#: mach-o.c:642
 #, c-format
 msgid "<unknown mask flags>"
 msgstr "<Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ„Ð»Ð°Ð³Ð¸ Ð¼Ð°Ñ�ÐºÐ¸>"
 
-#: mach-o.c:687
+#: mach-o.c:697
 msgid " (<unknown>)"
 msgstr " (Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾)"
 
-#: mach-o.c:698
+#: mach-o.c:709
 #, c-format
 msgid " MACH-O header:\n"
 msgstr " Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Mach-O:\n"
 
-#: mach-o.c:699
+#: mach-o.c:710
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr "   Ð¾Ñ‚Ð».Ð¿Ñ€Ð¸Ð·Ð½:    %#lx\n"
 
-#: mach-o.c:700
+#: mach-o.c:711
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr "   Ñ‚Ð¸Ð¿ Ð¦ÐŸ:       %#lx (%s)\n"
 
-#: mach-o.c:702
+#: mach-o.c:713
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr "   Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ Ð¦ÐŸ:    %#lx%s\n"
 
-#: mach-o.c:704
+#: mach-o.c:715
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr "   Ñ‚Ð¸Ð¿ Ñ„Ð°Ð¹Ð»Ð°:    %#lx\n"
 
-#: mach-o.c:705
+#: mach-o.c:716
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr "   Ñ‡_ÐºÐ¼Ð½Ð´:       %#lx\n"
 
-#: mach-o.c:706
+#: mach-o.c:717
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr "   Ñ€Ð°Ð·Ð¼_ÐºÐ¼Ð½Ð´:    %#lx\n"
 
-#: mach-o.c:707
+#: mach-o.c:718
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸:        %#lx\n"
 
-#: mach-o.c:708
+#: mach-o.c:719
 #, c-format
 msgid "   version:    %x\n"
 msgstr "   Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ð¸Ð¸: %x\n"
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:754
 #, c-format
 msgid "incompatible cputypes in mach-o files: %ld vs %ld"
 msgstr "Ð½ÐµÑ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼Ñ‹Ðµ Ñ‚Ð¸Ð¿Ñ‹ Ð¦ÐŸ Ð² Ñ„Ð°Ð¹Ð»Ð°Ñ… mach-o: %ld Ð¸ %ld"
 
-#: mach-o.c:912
+#: mach-o.c:923
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr "bfd_mach_o_canonicalize_symtab: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ‹"
 
-#: mach-o.c:2108
+#: mach-o.c:1515
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "Ð¸Ñ�ÐºÐ°Ð¶Ñ‘Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ mach-o: Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð±Ð¾Ð»ÑŒÑˆÐµ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²"
+
+#: mach-o.c:2157
 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:2605
 #, 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:2697
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x"
 
-#: mach-o.c:2766
+#: mach-o.c:2802
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x"
 
-#: mach-o.c:2950
+#: mach-o.c:2986
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr "Ð°Ð´Ñ€ÐµÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%#<PRIx64>) Ð¼ÐµÐ½ÑŒÑˆÐµ Ð½Ð°Ñ‡Ð°Ð»Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° (%#<PRIx64>)"
 
-#: mach-o.c:3092
+#: mach-o.c:3128
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð»Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½ÑƒÑŽ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x"
 
-#: mach-o.c:3628
+#: mach-o.c:3654
 #, 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"
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_32: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lx"
 
-#: mach-o.c:3671
+#: mach-o.c:3697
 #, 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"
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_64: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ñ�: %#lx"
 
-#: mach-o.c:3722
+#: mach-o.c:3748
 #, 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:3767
 #, 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:3850
 #, 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:3869
 #, 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:5068
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr "%pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ %#x"
 
-#: mach-o.c:5122
+#: mach-o.c:5266
 #, 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:5391
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ° Ð±Ð°Ð¹Ñ‚ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ %#x"
 
-#: merge.c:878
+#: merge.c:1126
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð° ÐºÐ¾Ð½ÐµÑ† Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%<PRId64>)"
 
-#: mmo.c:476
-#, c-format
-msgid "%pB: no core to allocate section name %s"
-msgstr "%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
-
-#: mmo.c:541
+#: mmo.c:535
 #, c-format
 msgid "%pB: no core to allocate a symbol %d bytes long"
 msgstr "%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� %d Ð±Ð°Ð¹Ñ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: mmo.c:955
+#: mmo.c:951
 #, c-format
 msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
 msgstr "%pB: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ð²Ñ‹Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð½Ðµ ÐºÑ€Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ 4 (%#<PRIx64>)"
 
-#: mmo.c:1252
+#: mmo.c:1246
 #, 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:1393
 #, 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:1409
+#, c-format
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr "%pB: Ð¸Ð¼Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð·Ð°Ð´Ð°Ð½Ð½ÑƒÑŽ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½ÑƒÑŽ Ð´Ð»Ð¸Ð½Ñƒ Ñ€Ð°Ð²Ð½ÑƒÑŽ %d"
+
+#: mmo.c:1638
 #, c-format
 msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ mmo-Ñ„Ð°Ð¹Ð»: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ lopcode Â«%dÂ»\n"
 
-#: mmo.c:1644
+#: mmo.c:1649
 #, 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:1693
 #, 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:1744
 #, 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:1793
 #, 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:1804
 #, 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:1829
 #, 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:1858
 #, 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:1880
 #, 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:1895
 #, 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:2007
 #, 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:2044
 #, 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:2058
 #, 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:2768
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»\n"
 
-#: mmo.c:2983
+#: mmo.c:3007
 #, c-format
-msgid "%pB: bad symbol definition: `Main' set to %s rather than the start address %s\n"
-msgstr "%pB: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«MainÂ» Ñ€Ð°Ð²ÐµÐ½ %s, Ð° Ð½Ðµ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %s\n"
+msgid "%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr "%pB: Ð½ÐµÐ²ÐµÑ€Ð½Ð¾Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°: Â«MainÂ» Ñ€Ð°Ð²ÐµÐ½ %<PRIx64>, Ð° Ð½Ðµ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %<PRIx64>\n"
 
-#: mmo.c:3082
+#: mmo.c:3106
 #, 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:3152
 #, 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:3205
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°, Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² %pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð´Ð°Ð½Ð½Ñ‹Ðµ\n"
 
-#: mmo.c:3232
+#: mmo.c:3256
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr "%pB: Ð½ÐµÑ‚ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° 0\n"
 
-#: mmo.c:3239
+#: mmo.c:3263
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð²; Ð´Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ€Ð°Ð²Ð½Ð° %<PRId64>"
 
-#: mmo.c:3244
+#: mmo.c:3268
 #, c-format
 msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð´Ð»Ñ� Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð² Ð´Ð»Ð¸Ð½Ñ‹ %<PRId64>: %#<PRIx64>"
 
-#: osf-core.c:127
+#: osf-core.c:128
 #, c-format
 msgid "unhandled OSF/1 core file section type %d"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ñ�Ð´Ñ€Ð° OSF/1 Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ� Ñ‚Ð¸Ð¿Ð¾Ð¼ %d"
 
-#: pef.c:527
+#: pdp11.c:1573
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð¾Ð²ÐµÑ€Ð»ÐµÐ¹ (Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�)"
+
+#: pef.c:534
 #, 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:176 pei-x86_64.c:230 pei-x86_64.c:240 pei-x86_64.c:265
+#: pei-x86_64.c:277 pei-x86_64.c:291 pei-x86_64.c:309 pei-x86_64.c:321
+#: pei-x86_64.c:333
 #, 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:354
 #, 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:405 pei-x86_64.c:415 pei-x86_64.c:424
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» xdata\n"
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:479
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
 msgstr "Ð¡Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ñ�ÐºÑ€Ñ‹Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð° (%ld)\n"
 
-#: pei-x86_64.c:529
+#: pei-x86_64.c:565
 #, 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:572
 #, c-format
 msgid "Warning: %s section size is zero\n"
 msgstr "ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ\n"
 
-#: pei-x86_64.c:551
+#: pei-x86_64.c:587
 #, 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:596
 #, c-format
 msgid ""
 "\n"
@@ -5528,12 +6633,12 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð¾ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s)\n"
 
-#: pei-x86_64.c:563
+#: pei-x86_64.c:599
 #, 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:724
 #, c-format
 msgid ""
 "\n"
@@ -5542,47 +6647,90 @@ msgstr ""
 "\n"
 "Ð”Ð°Ð¼Ð¿ %s\n"
 
-#. XXX code yet to be written.
-#: peicode.h:775
-#, c-format
-msgid "%pB: unhandled import type; %x"
-msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x"
-
-#: peicode.h:781
+#: peicode.h:823
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr "%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x"
 
-#: peicode.h:796
+#: peicode.h:840
+#, c-format
+msgid "%pB: missing import name for IMPORT_NAME_EXPORTAS for %s"
+msgstr "%pB: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ðµ Ð¸Ð¼Ñ� IMPORT_NAME_EXPORTAS Ð´Ð»Ñ� %s"
+
+#: peicode.h:849
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr "%pB: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð¸Ð¼ÐµÐ½Ð½Ð¾Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x"
 
-#: peicode.h:1211
+#: peicode.h:1299
 #, 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:1312
 #, 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:1330
 #, c-format
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr "%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¿Ð¾Ð»Ñ� Ñ€Ð°Ð²ÐµÐ½ Ð½ÑƒÐ»ÑŽ Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Import Library Format"
 
-#: peicode.h:1274
+#: peicode.h:1356
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr "%pB: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð½Ðµ Ð·Ð°ÐºÐ°Ð½Ñ‡Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð½ÑƒÐ»Ñ‘Ð¼ Ð² Ð¾Ð±ÑŠÐµÐºÑ‚Ð½Ð¾Ð¼ Ñ„Ð°Ð¹Ð»Ðµ ILF"
 
-#: peicode.h:1330
+#: peicode.h:1427
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: ÐºÐ¾Ð½ÐµÑ† Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð·Ð° Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸ÐµÐ¼ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°"
 
+#: peicode.h:1599
+#, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr "%pB: Ð¿Ð¾Ð´Ñ�Ñ‚Ñ€Ð°Ð¸Ð²Ð°ÐµÐ¼ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ SectionAlignment"
+
+#: peicode.h:1609
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr "%pB: Ð¿Ð¾Ð´Ñ�Ñ‚Ñ€Ð°Ð¸Ð²Ð°ÐµÐ¼ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ FileAlignment"
+
+#: peicode.h:1617
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ NumberOfRvaAndSizes"
+
+#: plugin.c:195
+#, c-format
+msgid "%s: failed to open to extract object only section: %s"
+msgstr "%s: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð´Ð»Ñ� Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s"
+
+#: plugin.c:212
+#, c-format
+msgid "%pB: invalid file to extract object only section: %s"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ñ„Ð°Ð¹Ð» Ð´Ð»Ñ� Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ� Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s"
+
+#: plugin.c:225
+#, c-format
+msgid "%pB: failed to extract object only section: %s"
+msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¸Ð·Ð²Ð»ÐµÑ‡ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s"
+
+#: plugin.c:245
+#, c-format
+msgid "%pB: failed to open object only section: %s"
+msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s"
+
+#: plugin.c:255
+#, c-format
+msgid "%pB: failed to get symbol table in object only section: %s"
+msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸: %s"
+
+#: plugin.c:411
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr "Ð¼Ð¾Ð´ÑƒÐ»ÑŒÐ½Ð°Ñ� Ð¸Ð½Ñ„Ñ€Ð°Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ð°: ÐºÐ¾Ð½Ñ‡Ð¸Ð»Ð¸Ñ�ÑŒ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ðµ Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ñ‹. ÐŸÐ¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼ÐµÐ½ÑŒÑˆÐµ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð²/Ð°Ñ€Ñ…Ð¸Ð²Ð¾Ð²\n"
+
 #: ppcboot.c:392
 #, c-format
 msgid ""
@@ -5636,32 +6784,17 @@ msgstr "Ð¡ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°[%d]
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Ð”Ð»Ð¸Ð½Ð° Ñ€Ð°Ð·Ð´ÐµÐ»Ð°[%d]   = 0x%.8lx (%ld)\n"
 
-#: reloc.c:8232
+#: reloc.c:8423
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr "INPUT_SECTION_FLAGS Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
 
-#: reloc.c:8333
-#, 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
-#, c-format
-msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
-msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Â«%pRÂ» Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
-
-#: reloc.c:8429
-#, 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:8689
 #, 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:8693
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
 msgstr "Ð´Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ° â€” %s â€” ÑƒÑ�Ñ‚Ð°Ñ€ÐµÐ»Ð°?"
@@ -5671,7 +6804,23 @@ msgstr "Ð´Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� ÐºÐ¾Ð¼
 msgid "%pB: warning core file truncated"
 msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ„Ð°Ð¹Ð» core ÑƒÑ�ÐµÑ‡Ñ‘Ð½"
 
-#: som.c:5478
+#: som.c:3002
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr "%pB(%pA+%#<PRIx64>): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð²Ð½Ðµ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ°"
+
+#: som.c:3015
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr "%pB(%pA+%#<PRIx64>): Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s Ð²Ð½Ðµ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°"
+
+#. User has specified a subspace without its containing space.
+#: som.c:5403
+#, c-format
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr "%pB[%pA]: Ð½ÐµÑ‚ Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð´Ð»Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° %pA"
+
+#: som.c:5450
 #, c-format
 msgid ""
 "\n"
@@ -5680,7 +6829,7 @@ msgstr ""
 "\n"
 "Ð’Ñ�Ð¿Ð¾Ð¼Ð¾Ð³Ð°Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Exec\n"
 
-#: som.c:5787
+#: som.c:5759
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½"
 
@@ -5694,17 +6843,17 @@ 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"
 
-#: stabs.c:279
+#: stabs.c:308
 #, c-format
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr "%pB(%pA+%#lx): Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ stabs Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸"
 
-#: syms.c:1091
+#: syms.c:1121
 msgid "unsupported .stab relocation"
 msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ .stab"
 
@@ -5712,65 +6861,74 @@ msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ
 msgid "corrupt EIHD record - size is too small"
 msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° â€” Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:665
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr "Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EIHS Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %#x"
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»Ð° Ð´Ð»Ñ� Ð´Ð»Ð¸Ð½Ñ‹ Ð¸Ð¼ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
+
+#: vms-alpha.c:1190
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ñ€Ð°Ð·Ð¼ÐµÑ€ (%#x) Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»"
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1214
 #, 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:1224
 #, 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:1366
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr "Ð·Ð°Ð¿Ð¸Ñ�ÑŒ EGSD Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð°: ÐµÑ‘ Ð¿Ð¾Ð»Ðµ psindx Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)"
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1441
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ EGSD %d"
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1474
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ° (%d) Ð² _bfd_vms_push"
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1488
 msgid "stack underflow in _bfd_vms_pop"
 msgstr "Ð²Ñ‹Ñ…Ð¾Ð´ Ð·Ð° Ð½Ð¸Ð¶Ð½ÑŽÑŽ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ñ�Ñ‚ÐµÐºÐ° Ð² _bfd_vms_pop"
 
+#: vms-alpha.c:1562
+#, 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 +6938,1469 @@ 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:4006
 #, 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:4058 vms-alpha.c:4286
 #, c-format
 msgid "size error in section %pA"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA"
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4229
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr "Ð½ÐµÑ‚Ð¸Ð¿Ð¸Ñ‡Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ ALPHA_R_BSR"
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4272
 #, c-format
 msgid "unhandled relocation %s"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s"
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4637
 #, 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:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804
+#: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842
+#: vms-alpha.c:4847
 #, c-format
 msgid "%s not implemented"
 msgstr "%s Ð½Ðµ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4883
 #, 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:5322
+msgid "corrupt reloc record"
+msgstr "Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑŒ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
+
+#: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405
+#: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s + %s"
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5502
 #, c-format
 msgid "unknown reloc %s"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s"
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5516
 msgid "invalid section index in ETIR"
 msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð² ETIR"
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5525
 msgid "relocation for non-REL psect"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð´Ð»Ñ� Ð½Ðµ-REL psect"
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5578
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð² ÐºÐ¾Ð¼Ð°Ð½Ð´Ðµ %s"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5996
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ (%d) *Ð�Ð•Ð˜Ð—Ð’Ð•Ð¡Ð¢Ð�Ðž*"
 
-#: vms-alpha.c:5752
-#, c-format
-msgid "  EMH %u (len=%u): "
-msgstr "  EMH %u (len=%u): "
-
-#: vms-alpha.c:5757
+#: vms-alpha.c:6113
 #, c-format
-msgid "   Error: The length is less than the length of an EMH record\n"
-msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð¼ÐµÐ½ÑŒÑˆÐµ Ð´Ð»Ð¸Ð½Ñ‹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EMH\n"
+msgid "  EMH %d (len=%u): "
+msgstr "  EMH %d (len=%u): "
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216
 #, c-format
-msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
-msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð¼ÐµÐ½ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EMH_MHD\n"
+msgid "   Error: %s min length is %u\n"
+msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð° %s Ñ€Ð°Ð²Ð½Ð° %u\n"
 
-#: vms-alpha.c:5777
+#: vms-alpha.c:6141
 #, c-format
 msgid "Module header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:6142
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   ÑƒÑ€Ð¾Ð²ÐµÐ½ÑŒ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ñ‹  : %u\n"
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:6143
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   Ð¼Ð°ÐºÑ�. Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð°Ð¿Ð¸Ñ�Ð¸: %u\n"
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:6149
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:6155
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5794
+#: vms-alpha.c:6158
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�         : %.*s\n"
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:6162
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5804
+#: vms-alpha.c:6168
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð´Ð»Ð¸Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:6171
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   Ð²ÐµÑ€Ñ�Ð¸Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�      : %.*s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:6174
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ñ€ÐµÐ·Ð°Ð½Ð° Ð´Ð°Ñ‚Ð° ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ð¸\n"
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:6176
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   Ð´Ð°Ñ‚Ð° ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ†Ð¸Ð¸    : %.17s\n"
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:6181
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Ð�Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñ�Ð¾Ñ€Ð½Ð¾Ð³Ð¾ Ñ�Ð·Ñ‹ÐºÐ°\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:6182
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñ�Ð·Ñ‹ÐºÐ°     : %.*s\n"
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6186
 #, c-format
 msgid "Source Files Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¸Ñ�Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ñ„Ð°Ð¹Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6187
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   Ñ„Ð°Ð¹Ð»: %.*s\n"
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6191
 #, c-format
 msgid "Title Text Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ� Ñ‚ÐµÐºÑ�Ñ‚Ð°\n"
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6192
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ : %.*s\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6196
 #, c-format
 msgid "Copyright Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÐºÐ¾Ð³Ð¾ Ð¿Ñ€Ð°Ð²Ð°\n"
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6197
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÐºÐ¾Ðµ Ð¿Ñ€Ð°Ð²Ð¾: %.*s\n"
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6201
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿ emh %u\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6211
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (len=%u):\n"
 
-#: vms-alpha.c:5852
-#, 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:6221
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   ÐºÐ¾Ð»-Ð²Ð¾ ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¿Ð°Ñ€: %u\n"
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6223
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   Ð·Ð°Ð²ÐµÑ€ÑˆÑ‘Ð½Ð½Ñ‹Ð¹ ÐºÐ¾Ð´: %u\n"
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6228
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ flags: 0x%02x\n"
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6229
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ psect: %u\n"
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6231
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ� Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸   : 0x%08x\n"
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6240
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6242
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6244
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6246 vms-alpha.c:6267
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6248
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6250
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6252
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6254
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6261
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6263
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6265
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6269
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6271
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6273
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6275
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6277
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6279
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6281
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6283
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6285
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6294
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (len=%u):\n"
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6309
 #, 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:6315 vms-alpha.c:6610
 #, c-format
-msgid "   Error: length larger than remaining space in record\n"
-msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° Ð² Ð·Ð°Ð¿Ð¸Ñ�Ð¸\n"
+msgid "   Erroneous length\n"
+msgstr "   ÐžÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð°Ñ� Ð´Ð»Ð¸Ð½Ð°\n"
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6328
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr "PSC - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°\n"
 
-#: vms-alpha.c:5960 vms-alpha.c:5977
+#: vms-alpha.c:6329 vms-alpha.c:6349
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ  : 2**%u\n"
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6330 vms-alpha.c:6350
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸      : 0x%04x"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6334
 #, 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:6336 vms-alpha.c:6402 vms-alpha.c:6470
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ�       : %.*s\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6348
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr "SPSC â€” Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ð°\n"
 
-#: vms-alpha.c:5982
+#: vms-alpha.c:6354
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   alloc (len)   : %u (0x%08x)\n"
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6355
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¾Ð±Ñ€Ð°Ð·Ð° : 0x%08x\n"
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6357
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ symvec: 0x%08x\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6360
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ�          : %.*s\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6376
 #, 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:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸: 0x%04x"
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6380
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ psect: 0x%08x\n"
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6384
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ� ÐºÐ¾Ð´Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6386
 #, 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:6389 vms-alpha.c:6489 vms-alpha.c:6512
 #, 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:6392 vms-alpha.c:6492 vms-alpha.c:6515
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ�        : %.*s\n"
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6400
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM - Ñ�Ñ�Ñ‹Ð»ÐºÐ¸ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6415
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC - Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ° Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° Ñ†ÐµÐ»Ð¾Ñ�Ñ‚Ð½Ð¾Ñ�Ñ‚Ð¸\n"
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6416
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   Ñ„Ð»Ð°Ð³Ð¸         : 0x%08x"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6420
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   id Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²Ð¸Ñ� : %x\n"
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6422
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   Ñ�ÐµÑ€ÑŒÑ‘Ð·Ð½Ð¾Ñ�Ñ‚ÑŒ Ð¾ÑˆÐ¸Ð±ÐºÐ¸: %x\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6426
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ð¸: %.*s\n"
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6432
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ� Ð¾Ð±ÑŠÐµÐºÑ‚Ð°: %.*s\n"
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6441
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ð¹ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€: 0x%08x\n"
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6445
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   ascii-Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€: %.*s\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6457
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ ÑƒÐ½Ð¸Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6461
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6463
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   Ñ‚Ð¾Ñ‡ÐºÐ° Ð²Ñ…Ð¾Ð´Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6465
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   proc descr : 0x%08x\n"
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6467
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� psect: %u\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6481
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²\n"
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6485
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   Ð²ÐµÐºÑ‚Ð¾Ñ€      : 0x%08x\n"
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6487 vms-alpha.c:6510
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ psect: %u\n"
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6504
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM - Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ñ� Ð²ÐµÑ€Ñ�Ð¸ÐµÐ¹\n"
 
-#: vms-alpha.c:6104
+#: vms-alpha.c:6508
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ð¸Ð¸: 0x%08x\n"
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6521
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ egsd-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð¸Ð¿Ð° %u\n"
 
-#: vms-alpha.c:6150
+#: vms-alpha.c:6560
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr "    Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð·Ð°Ð¼ÐµÐ½Ð¸Ñ‚ÐµÐ»ÑŒ insn: 0x%08x\n"
 
-#: vms-alpha.c:6154
+#: vms-alpha.c:6564
 #, 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:6569
 #, 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:6575
 #, 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:6580
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6592
 #, c-format
-msgid "  %s (len=%u+%u):\n"
-msgstr "  %s (len=%u+%u):\n"
+msgid "  %s (len=%u):\n"
+msgstr "  %s (Ð´Ð»Ð¸Ð½Ð°=%u):\n"
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6615
 #, c-format
-msgid "   (type: %3u, size: 4+%3u): "
-msgstr "   (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð°Ð·Ð¼ÐµÑ€: 4+%3u): "
+msgid "   (type: %3u, size: %3u): "
+msgstr "   (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %3u): "
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6621
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ñ‚ÐµÐº) %.*s\n"
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6625
 #, c-format
-msgid "STA_LW (stack longword) 0x%08x\n"
-msgstr "STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²) 0x%08x\n"
+msgid "STA_LW (stack longword)"
+msgstr "STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²)"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6631
 #, c-format
-msgid "STA_QW (stack quadword) 0x%08x %08x\n"
-msgstr "STA_QW (Ñ�Ñ‚ÐµÐº Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²) 0x%08x %08x\n"
+msgid "STA_QW (stack quadword)"
+msgstr "STO_QW (Ñ�Ñ‚ÐµÐº ÑƒÑ‡ÐµÑ‚Ð²ÐµÑ€Ñ‘Ð½Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²)"
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6638
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (Ñ�Ñ‚ÐµÐº psect Ð±Ð°Ð·Ð° + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6641
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "    psect: %u, Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x %08x\n"
 
-#: vms-alpha.c:6228
+#: vms-alpha.c:6647
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (Ñ�Ñ‚ÐµÐº Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð°)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6650
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (Ñ�Ñ‚ÐµÐº Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6653
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹ Ñ�Ñ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6657
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ Ð±Ð°Ð¹Ñ‚)\n"
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6660
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾)\n"
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6663
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾)\n"
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6666
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ‡ÐµÑ‚Ð²ÐµÑ€Ñ‘Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾)\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6673
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ð¹ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€) %u Ð±Ð°Ð¹Ñ‚\n"
 
-#: vms-alpha.c:6260
+#: vms-alpha.c:6682
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ�) %.*s\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6687
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr "STO_CA (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� ÐºÐ¾Ð´Ð°) %.*s\n"
 
-#: vms-alpha.c:6268
+#: vms-alpha.c:6691
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6694
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6697
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð½Ð° psect)\n"
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6704
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾) %u Ð±Ð°Ð¹Ñ‚\n"
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6713
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr "STO_GBL_LW (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾) %.*s\n"
 
-#: vms-alpha.c:6291
+#: vms-alpha.c:6717
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ LP Ñ� Ñ�Ð¸Ð³Ð½Ð°Ñ‚ÑƒÑ€Ð¾Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹)\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6720
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr "STO_BR_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ) *todo*\n"
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6723
 #, 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:6727
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (Ð½ÐµÑ‚ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ð¸)\n"
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6730
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6733
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (Ð²Ñ‹Ñ‡Ð¸Ñ‚Ð°Ð½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6736
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (ÑƒÐ¼Ð½Ð¾Ð¶ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6739
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (Ð´ÐµÐ»ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6742
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð¸)\n"
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6745
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‰ÐµÐµ Ð¸Ð»Ð¸)\n"
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6748
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑ�ÐºÐ¾Ðµ Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð°ÑŽÑ‰ÐµÐµ Ð¸Ð»Ð¸)\n"
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6751
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (Ð¸Ð½Ð²ÐµÑ€Ñ�Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6754
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6757
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (Ð¿Ð¾Ð»Ðµ Ð²Ñ�Ñ‚Ð°Ð²ÐºÐ¸)\n"
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6760
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð´Ð²Ð¸Ð³)\n"
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6763
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (Ð±ÐµÐ·Ð·Ð½Ð°ÐºÐ¾Ð²Ñ‹Ð¹ Ñ�Ð´Ð²Ð¸Ð³)\n"
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6766
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (Ñ†Ð¸ÐºÐ»Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ñ�Ð´Ð²Ð¸Ð³)\n"
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6769
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (Ð²Ñ‹Ð±Ð¾Ñ€)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6772
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (Ð¿ÐµÑ€ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ð² Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ð¸)\n"
 
-#: vms-alpha.c:6349
+#: vms-alpha.c:6775
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»Ð°)\n"
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6779
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ð°Ñ� Ð¿Ð°Ñ€Ð°)\n"
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6783
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ð°Ñ� Ð¿Ð°Ñ€Ð° + Ñ�Ð¸Ð³Ð½Ð°Ñ‚ÑƒÑ€Ð°)\n"
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6787
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°: %.*s\n"
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6794
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   Ñ�Ð¸Ð³Ð½Ð°Ñ‚ÑƒÑ€Ð°: %.*s\n"
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6800
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ� Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6803
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹: %.*s\n"
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6808
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ð°)\n"
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6811
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸: %u, Ð¸Ð¼Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹: %.*s\n"
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6816
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð¾Ðµ ÑƒÑ�Ð»Ð¾Ð²Ð¸Ðµ psect + Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6820
 #, 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:6827
 #, 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:6831
 #, 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:6835
 #, 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:6839
 #, 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:6843
 #, 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:6847
 #, 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:6851
 #, 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:6855
 #, 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:6860
 #, 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:6864
 #, 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:6868
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr "CTL_SETRB (ÑƒÑ�Ñ‚Ð°Ð½Ð¾Ð²ÐºÐ° Ð±Ð°Ð·Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6874
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr "CTL_AUGRB (Ð´Ð¾Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ð±Ð°Ð·Ñ‹ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�) %u\n"
 
-#: vms-alpha.c:6438
+#: vms-alpha.c:6879
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6882
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (Ð·Ð°Ð´Ð°Ð½Ð¸Ðµ Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6885
 #, 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:6888 vms-alpha.c:7316 vms-alpha.c:7477
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6913
 #, c-format
-msgid "cannot read GST record length\n"
-msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð´Ð»Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST\n"
+msgid "cannot read GST record header\n"
+msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6936
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ EMH Ð² Ð¿ÐµÑ€Ð²Ð¾Ð¹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST\n"
 
-#: vms-alpha.c:6524
-#, c-format
-msgid "cannot read GST record header\n"
-msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST\n"
-
-#: vms-alpha.c:6537
+#: vms-alpha.c:6960
 #, c-format
-msgid " corrupted GST\n"
-msgstr " Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ GST\n"
+msgid "corrupted GST\n"
+msgstr "Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ GST\n"
 
-#: vms-alpha.c:6545
+#: vms-alpha.c:6973
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�ÑŒ GST\n"
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:7000
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EOBJ %u\n"
 
-#: vms-alpha.c:6598
+#: vms-alpha.c:7025
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr "  Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ð±Ð¸Ñ‚: %u, Ð±Ð°Ð·Ð¾Ð²Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x\n"
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:7039
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   bitmap: 0x%08x (Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº: %u):\n"
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:7046
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:7073
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  Ð¾Ð±Ñ€Ð°Ð· %u (%u Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²)\n"
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:7079
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: 0x%08x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: 0x%08x\n"
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:7102
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  Ð¾Ð±Ñ€Ð°Ð· %u (%u Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²), Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�:\n"
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:7109
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:7235
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 Ð±Ð¸Ñ‚Ð° *Ð½Ðµ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:7240
 #, 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:7251
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "Ð½ÐµÑ�Ð²Ñ�Ð·Ð½Ñ‹Ð¹ Ð¼Ð°Ñ�Ñ�Ð¸Ð² %s\n"
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7258
 #, 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:7263
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "arsize: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7267
 #, c-format
 msgid "Strides:\n"
 msgstr "Ð¨Ð°Ð³Ð¸:\n"
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7281
 #, c-format
 msgid "Bounds:\n"
 msgstr "Ð“Ñ€Ð°Ð½Ð¸Ñ†Ñ‹:\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7288
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: Ð½Ð¸Ð¶Ð½Ñ�Ñ�: %u, Ð²ÐµÑ€Ñ…Ð½Ñ�Ñ�: %u\n"
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7302
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr "Ð½ÐµÐ²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ð±Ð¸Ñ‚ %s\n"
 
-#: vms-alpha.c:6865
+#: vms-alpha.c:7309
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "Ð±Ð°Ð·Ð°: %u, Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ�: %u\n"
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7335
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "vflags: 0x%02x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: 0x%08x "
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7342
 #, c-format
 msgid "(no value)\n"
 msgstr "(Ð½ÐµÑ‚ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7345
 #, c-format
 msgid "(not active)\n"
 msgstr "(Ð½Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7348
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(Ð½Ðµ Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¾)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7351
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€)\n"
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7356
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(ÐºÐ¾Ð½ÐµÑ‡Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7359
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(Ð´Ð°Ð»ÐµÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸)\n"
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7362
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(Ð¿Ð¾ Ð±Ð¸Ñ‚Ð¾Ð²Ð¾Ð¼Ñƒ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ %u)\n"
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7366
 #, 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:7373
 msgid "literal"
 msgstr "Ð»Ð¸Ñ‚ÐµÑ€Ð°Ð»"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7376
 msgid "address"
 msgstr "Ð°Ð´Ñ€ÐµÑ�"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7379
 msgid "desc"
 msgstr "Ð¾Ð¿Ð¸Ñ�"
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7382
 msgid "reg"
 msgstr "Ñ€ÐµÐ³"
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7403
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "len: %2u, kind: %2u "
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7411
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "Ð°Ñ‚Ð¾Ð¼Ð°Ñ€Ð½Ð¾, Ñ‚Ð¸Ð¿=0x%02x %s\n"
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7416
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "ÐºÐ¾Ñ�Ð²ÐµÐ½Ð½Ð¾, Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¾ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%08x\n"
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7420
 #, c-format
 msgid "typed pointer\n"
 msgstr "Ñ‚Ð¸Ð¿Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ\n"
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7424
 #, c-format
 msgid "pointer\n"
 msgstr "ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ\n"
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7435
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr "Ð¼Ð°Ñ�Ñ�Ð¸Ð², Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, bitmap: "
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7450
 #, c-format
 msgid "array descriptor:\n"
 msgstr "Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð°:\n"
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7461
 #, c-format
 msgid "type spec for element:\n"
 msgstr "Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð´Ð»Ñ� Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð°:\n"
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7463
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr "Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ñ‚Ð¸Ð¿Ð° Ð´Ð»Ñ� subscript %u:\n"
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7488
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸:\n"
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7499
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DST\n"
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7505
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " Ñ‚Ð¸Ð¿: %3u, Ð´Ð»Ð¸Ð½Ð°: %3u (Ð¿Ð¾ 0x%08x): "
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7524
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð» DST\n"
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7568
 #, c-format
 msgid "standard data: %s\n"
 msgstr "Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ: %s\n"
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7572 vms-alpha.c:7696
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7580
 #, c-format
 msgid "modbeg\n"
 msgstr "modbeg\n"
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7584
 #, 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:7594 vms-alpha.c:7963
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   Ð¸Ð¼Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�: %.*s\n"
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7601
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñ�Ñ‚Ð¾Ñ€   : %.*s\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7608
 #, c-format
 msgid "modend\n"
 msgstr "modend\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7615
 msgid "rtnbeg\n"
 msgstr "rtnbeg\n"
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7619
 #, 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:7628
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    Ð¸Ð¼Ñ� Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ñ‹: %.*s\n"
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7639
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "rtnend: Ñ€Ð°Ð·Ð¼ÐµÑ€ 0x%08x\n"
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7649
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð°Ð´Ñ€ÐµÑ� bkpt 0x%08x\n"
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7659
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "Ñ�Ð¿Ð¸Ð»Ð¾Ð³: Ñ„Ð»Ð°Ð³Ð¸: %u, Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº: %u\n"
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7674
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr "blkbeg: Ð°Ð´Ñ€ÐµÑ�: 0x%08x, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7166
+#: vms-alpha.c:7686
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "blkend: Ñ€Ð°Ð·Ð¼ÐµÑ€: 0x%08x\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7692
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "typspec (Ð´Ð»Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7708
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "septyp, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7725
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "recbeg: Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7731
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "    Ð´Ð»Ð¸Ð½Ð°: %u Ð±Ð¸Ñ‚\n"
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7737
 #, c-format
 msgid "recend\n"
 msgstr "recend\n"
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7742
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "enumbeg, Ð´Ð»Ð¸Ð½Ð°: %u, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7748
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "enumelt, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7754
 #, c-format
 msgid "enumend\n"
 msgstr "enumend\n"
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7761
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "Ð¼ÐµÑ‚ÐºÐ°, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7764
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�: 0x%08x\n"
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7776
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "Ð½ÐµÑ�Ð¼ÐµÐ¶Ð½Ñ‹Ð¹ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½ (nbr: %u)\n"
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7783
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    Ð°Ð´Ñ€ÐµÑ�: 0x%08x, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u\n"
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7794
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ (Ð´Ð»Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7813
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7822
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7830
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7838
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7846
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7853
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7860
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7867
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7873
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7880
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7882
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7889
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7891
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7897
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7901
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x Ñ�Ñ‚Ñ€Ð¾ÐºÐ°: %5u\n"
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7906
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ�* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u\n"
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7921
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "Ð¸Ñ�Ñ‚Ð¾Ñ‡Ð½Ð¸Ðº (Ð´Ð»Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7940
 #, 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:7945
 #, 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:7957
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   Ð¸Ð¼Ñ� Ñ„Ð°Ð¹Ð»Ð°   : %.*s\n"
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7973
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7980 vms-alpha.c:7987
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7994 vms-alpha.c:8001
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:8008 vms-alpha.c:8015
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:8019
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:8023
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ð°Ñ�* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u\n"
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:8035
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "*Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹* Ñ‚Ð¸Ð¿ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� %u\n"
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:8067
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EIHD\n"
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:8071
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (Ñ€Ð°Ð·Ð¼ÐµÑ€: %u, nbr Ð±Ð»Ð¾ÐºÐ¾Ð²: %u)\n"
 
-#: vms-alpha.c:7470
+#: vms-alpha.c:8075
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " majorid: %u, minorid: %u\n"
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:8083
 msgid "executable"
 msgstr "Ð¸Ñ�Ð¿Ð¾Ð»Ð½Ñ�ÐµÐ¼Ñ‹Ð¹"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:8086
 msgid "linkable image"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ð¹ Ð¾Ð±Ñ€Ð°Ð·"
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:8093
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " Ñ‚Ð¸Ð¿ Ð¾Ð±Ñ€Ð°Ð·Ð°: %u (%s)"
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:8099
 msgid "native"
 msgstr "Ñ€Ð¾Ð´Ð½Ð¾Ð¹"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:8102
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:8109
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", Ð¿Ð¾Ð´Ñ‚Ð¸Ð¿: %u (%s)\n"
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:8116
 #, 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:8120
 #, c-format
 msgid " fixup info rva: "
 msgstr " fixup info rva: "
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:8122
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð²ÐµÐºÑ‚Ð¾Ñ€ rva: "
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:8125
 #, c-format
 msgid ""
 "\n"
@@ -7250,653 +8409,750 @@ msgstr ""
 "\n"
 " Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð¼Ð°Ñ�Ñ�Ð¸Ð²Ð° Ð²ÐµÑ€Ñ�Ð¸Ð¹: %u\n"
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:8130
 #, 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:8136
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " Ñ„Ð»Ð°Ð³Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ°: %08x:"
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:8167
 #, 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:8173
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:8180
 #, 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:8183
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", Ð¿Ñ�ÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼: %u\n"
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:8191
 #, c-format
 msgid "system version array information:\n"
 msgstr "Ð¼Ð°Ñ�Ñ�Ð¸Ð² Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ‹:\n"
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:8195
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº EIHVN\n"
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:8205
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð²ÐµÑ€Ñ�Ð¸ÑŽ EIHVN\n"
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:8208
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:8212
 msgid "BASE_IMAGE       "
 msgstr "BASE_IMAGE       "
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:8215
 msgid "MEMORY_MANAGEMENT"
 msgstr "MEMORY_MANAGEMENT"
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:8218
 msgid "IO               "
 msgstr "IO               "
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:8221
 msgid "FILES_VOLUMES    "
 msgstr "FILES_VOLUMES    "
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:8224
 msgid "PROCESS_SCHED    "
 msgstr "PROCESS_SCHED    "
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:8227
 msgid "SYSGEN           "
 msgstr "SYSGEN           "
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:8230
 msgid "CLUSTERS_LOCKMGR "
 msgstr "CLUSTERS_LOCKMGR "
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:8233
 msgid "LOGICAL_NAMES    "
 msgstr "LOGICAL_NAMES    "
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:8236
 msgid "SECURITY         "
 msgstr "SECURITY         "
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:8239
 msgid "IMAGE_ACTIVATOR  "
 msgstr "IMAGE_ACTIVATOR  "
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:8242
 msgid "NETWORKS         "
 msgstr "NETWORKS         "
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:8245
 msgid "COUNTERS         "
 msgstr "COUNTERS         "
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:8248
 msgid "STABLE           "
 msgstr "STABLE           "
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:8251
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:8254
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:8257
 msgid "VOLATILE         "
 msgstr "VOLATILE         "
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:8260
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:8263
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:8266
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESSING "
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:8269
 msgid "GALAXY           "
 msgstr "GALAXY           "
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:8272
 msgid "*unknown*        "
 msgstr "*Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð¾*        "
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:8288 vms-alpha.c:8575
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EIHA\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:8291
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°:  (Ñ€Ð°Ð·Ð¼ÐµÑ€=%u)\n"
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:8294
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " ÐŸÐµÑ€Ð²Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7693
+#: vms-alpha.c:8298
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr " Ð’Ñ‚Ð¾Ñ€Ð¾Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:8302
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " Ð¢Ñ€ÐµÑ‚Ð¸Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:8306
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr " Ð§ÐµÑ‚Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7705
+#: vms-alpha.c:8310
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr " ÐžÐ±Ñ‰Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:8321
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EIHI\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:8325
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)\n"
 
-#: vms-alpha.c:7723
+#: vms-alpha.c:8331
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " Ð¸Ð¼Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°       : %.*s\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:8332
 #, c-format
 msgid " link time        : %s\n"
 msgstr " Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²ÐºÐ¸ : %s\n"
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:8337
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " Ð¸Ð´ÐµÐ½Ñ‚-Ñ€ Ð¾Ð±Ñ€Ð°Ð·Ð°      : %.*s\n"
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:8341
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " Ð¸Ð´ÐµÐ½Ñ‚-Ñ€ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸ÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:8345
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " Ð¸Ð´ÐµÐ½Ñ‚-Ñ€ Ñ�Ð±Ð¾Ñ€ÐºÐ¸ Ð¾Ð±Ñ€Ð°Ð·Ð°: %.*s\n"
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:8354
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EIHS\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:8358
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð² & Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)\n"
 
-#: vms-alpha.c:7751
+#: vms-alpha.c:8364
 #, 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:8369
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr " Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²: vbn: %u, Ð·Ð°Ð¿Ð¸Ñ�ÐµÐ¹: %u\n"
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:8374
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹: vbn: %u, Ñ€Ð°Ð·Ð¼ÐµÑ€: %u\n"
 
-#: vms-alpha.c:7774
+#: vms-alpha.c:8387
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ EISD\n"
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:8398
 #, 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:8406
 #, 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:8411
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " Ñ„Ð»Ð°Ð³Ð¸: 0x%04x"
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8449
 #, 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:8455
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8458
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8461
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8464
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8467
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8470
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8476
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8483
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " Ð¸Ð´ÐµÐ½-Ñ€: 0x%08x, Ð¸Ð¼Ñ�: %.*s\n"
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8494
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DMT\n"
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8498
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹:\n"
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8507
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DMT\n"
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8513
 #, 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:8523
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DMT psect\n"
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8527
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr "  Ð½Ð°Ñ‡Ð°Ð»Ð¾ psect: 0x%08x, Ð´Ð»Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:7922
+#: vms-alpha.c:8540
 #, c-format
 msgid "cannot read DST\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ DST\n"
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8550
 #, c-format
 msgid "cannot read GST\n"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ GST\n"
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8554
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²:\n"
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8581
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ‚Ð¾Ñ€ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð»Ð°Ð´ÑˆÐ¸Ð¹: %u)\n"
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8585
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  iaflink : 0x%08x %08x\n"
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8589
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  fixuplnk: 0x%08x %08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8592
 #, c-format
 msgid "  size : %u\n"
 msgstr "  Ñ€Ð°Ð·Ð¼ÐµÑ€: %u\n"
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8594
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  Ñ„Ð»Ð°Ð³Ð¸: 0x%08x\n"
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8599
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8604
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8609
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8612
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8616
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8619
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8622
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8624
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8631
 #, c-format
 msgid " Shareable images:\n"
 msgstr " ÐžÐ±Ñ‰Ð¸Ðµ Ð¾Ð±Ñ€Ð°Ð·Ñ‹:\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8642
 #, 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:8649
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ñ‹Ñ… Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹:\n"
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8655
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ñ‹Ñ… Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹:\n"
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8661
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr " Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾ Ñ�Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ .address:\n"
 
-#: vms-alpha.c:8043
+#: vms-alpha.c:8666
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr " Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ñ�Ð»Ð¾Ð²Ð¾ Ñ�Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ñ… Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ .address:\n"
 
-#: vms-alpha.c:8048
+#: vms-alpha.c:8671
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr " Ð¡Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ð°:\n"
 
-#: vms-alpha.c:8053
+#: vms-alpha.c:8676
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr " Ð¡Ñ�Ñ‹Ð»Ð¾Ñ‡Ð½Ñ‹Ðµ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐµÐ¼Ñ‹Ñ… Ð¿Ð°Ñ€:\n"
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8684
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ (%u Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð²):\n"
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8693
 #, 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:9571
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÐ¼Ð°Ñ� Ñ�Ñ�Ñ‹Ð»ÐºÐ° Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�\n"
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9642
 #, 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:1530
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð· Â«%sÂ» Ð¸Ð· Â«%sÂ»"
 
-#: vms-misc.c:361
+#: vms-misc.c:374
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ� Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
-#: vms-misc.c:366
+#: vms-misc.c:379
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "Ð’Ñ‹Ð·Ð¾Ð² _bfd_vms_output_counted Ñ�Ð¾ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð¾Ð¼ Ð±Ð°Ð¹Ñ‚"
 
-#: xcofflink.c:832
+#: xcofflink.c:505
+#, c-format
+msgid "%pB: warning: illegal symbol index %lu in relocs"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½ÐµÐ´Ð¾Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ð¹ Ð¸Ð½Ð´ÐµÐºÑ� %lu Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�Ñ…"
+
+#: xcofflink.c:924
 #, c-format
 msgid "%pB: XCOFF shared object when not producing XCOFF output"
 msgstr "%pB: Ð¾Ð±Ñ‰Ð¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ XCOFF Ð±ÐµÐ· Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð° XCOFF"
 
-#: xcofflink.c:853
+#: xcofflink.c:945
 #, c-format
 msgid "%pB: dynamic object with no .loader section"
 msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ¸Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚ Ð±ÐµÐ· Ñ€Ð°Ð·Ð´ÐµÐ»Ð° .loader"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1527
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr "%pB: Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ�Ñ‚Ñ€Ð¾Ðº, Ð½Ð¾ Ð² Ð¾Ð±Ñ€Ð°Ð¼Ð»Ñ�ÑŽÑ‰ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ"
 
-#: xcofflink.c:1466
+#: xcofflink.c:1583
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr "%pB: ÐºÐ»Ð°Ñ�Ñ� %d Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¸Ð¼ÐµÐµÑ‚ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² aux"
 
-#: xcofflink.c:1489
+#: xcofflink.c:1606
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ csect: %d"
 
-#: xcofflink.c:1502
+#: xcofflink.c:1619
 #, 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:1650
+#, c-format
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð¾Ð¼ %d scnlen %<PRIu64>"
+
+#: xcofflink.c:1785
 #, c-format
-msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
-msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ�Ð²Ð»Ñ�ÐµÑ‚Ñ�Ñ� ÐºÐ»Ð°Ñ�Ñ�Ð¾Ð¼ %d scnlen %<PRId64>"
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr "%pB: Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ TOC Â«%sÂ» Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_TLSML Ð½Ðµ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‰ÐµÐµ Ð½Ð° Ñ�ÐµÐ±Ñ�"
 
-#: xcofflink.c:1680
+#: xcofflink.c:1819
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr "%pB: csect Â«%sÂ» Ð½Ðµ Ð² Ð¾Ð±Ñ€Ð°Ð¼Ð»Ñ�ÑŽÑ‰ÐµÐ¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ"
 
-#: xcofflink.c:1788
+#: xcofflink.c:1928
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¹ XTY_LD Â«%sÂ»"
 
-#: xcofflink.c:2109
+#: xcofflink.c:2271
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s:%<PRId64> Ð½Ðµ Ð² csect"
 
-#: xcofflink.c:3196
+#: xcofflink.c:3380
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
+
+#: xcofflink.c:3428
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: Ð½ÐµÑ‚ Ñ‚Ð°ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°"
 
-#: xcofflink.c:3301
+#: xcofflink.c:3537
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: xcofflink.c:3680
+#: xcofflink.c:3885
 msgid "error: undefined symbol __rtinit"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» __rtinit"
 
-#: xcofflink.c:4060
+#: xcofflink.c:4902
+#, c-format
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÑƒ csect Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ rangeof Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>, ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‰ÐµÐ¼Ñƒ Ð½Ð° Â«%sÂ»"
+
+#: xcofflink.c:4931
+#, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸ Â«%sÂ»"
+
+#: xcofflink.c:5051
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ TOC Ð¿Ñ€Ð¸ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ð¸ Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ¸; Ð¿Ð¾Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ� -mminimal-toc"
+
+#: xcofflink.c:5119
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ° Ð² Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð¾Ð¼ Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ Â«%sÂ»"
 
-#: xcofflink.c:4072
+#: xcofflink.c:5131
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr "%pB: Â«%sÂ» Ð² Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¸ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°, Ð½Ð¾ Ð½Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ°"
 
-#: xcofflink.c:4089
+#: xcofflink.c:5148
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ‡Ð¸ÐºÐ° Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ %pA, Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð¼ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ‡Ñ‚ÐµÐ½Ð¸Ñ�"
 
-#: xcofflink.c:5113
+#: xcofflink.c:6227
 #, 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
+#: xcofflink.c:7343
+#, c-format
+msgid "Unable to link input file: %s"
+msgstr "Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð»: %s"
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr "Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ DLL."
+
+#: xtensa-dynconfig.c:86
+#, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr "%s Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½, Ð½Ð¾ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½: %s"
+
+#: xtensa-dynconfig.c:102
+#, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr "%s Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½, Ð½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð» \"%s\" Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½: %s"
+
+#: xtensa-dynconfig.c:115
+#, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr "%s Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½, Ð½Ð¾ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¹ Ð²Ñ‹ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°"
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2889 elfnn-riscv.c:5940
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»: 0x%02x"
+
+#: elfnn-aarch64.c:5486
 #, 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:5578
 #, 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:5591
+#, c-format
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾Ð±Ñ…Ð¾Ð´ Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ð³Ð¾ 0x%<PRIx64> Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð°Ð¼Ð¸ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð° Ð´Ð»Ñ� ADR (Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ð²Ñ…Ð¾Ð´Ð½Ð¾Ð¹ Ñ„Ð°Ð¹Ð») Ð¸ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� --fix-cortex-a53-843419=adr. Ð’Ð¼ÐµÑ�Ñ‚Ð¾ Ñ�Ñ‚Ð¾Ð³Ð¾ Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ñ‰Ð¸Ðº Ñ� Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --fix-cortex-a53-843419=full"
+
+#: elfnn-aarch64.c:6134
 #, 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:6154
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr "%pB: Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾ ÑƒÑ�Ð»Ð¾Ð²Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ð° Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
+
+#: elfnn-aarch64.c:6242 elfnn-kvx.c:2382
 #, 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:6356 elfnn-aarch64.c:6393
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS %s Ð´Ð»Ñ� Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»"
+
+#: elfnn-aarch64.c:7384
 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:7412
 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:7979
 #, 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-aarch64.c:8940
 #, c-format
-msgid "%pB: warning: RVE PLT generation not supported"
-msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� RVE PLT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr "%P: %pB: ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½ÐµÐºÐ¾Ð¿Ð¸Ñ€ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ð·Ð°Ñ‰Ð¸Ñ‰Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2311
-msgid "%X%P: internal error: out of range error\n"
-msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°\n"
+#: elfnn-kvx.c:929
+msgid "%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: Ð�ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð½Ð°Ð·Ð½Ð°Ñ‡Ð¸Ñ‚ÑŒ Â«%pAÂ» Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ñƒ. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‚Ðµ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2315
-msgid "%X%P: internal error: unsupported relocation error\n"
-msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�\n"
+#: elfnn-kvx.c:2127
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð² Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2325
-msgid "%X%P: internal error: unknown error\n"
-msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°\n"
+#: elfnn-kvx.c:2851
+#, c-format
+msgid "%s: Bad ELF id: `%d'"
+msgstr "%s: Ð�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ ELF: Â«%dÂ»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2711
+#: elfnn-kvx.c:2906
 #, 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 "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ°Ðº 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚, Ð° %s â€” 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2729
+#: elfnn-kvx.c:2909
 #, 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Â»."
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ°Ðº 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚, Ð° %s â€” 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2773
+#: elfnn-kvx.c:2911
+#, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ð¼ÐµÑŽÑ‰Ð¸Ð¼Ñ�Ñ� Ñƒ Ñ�Ñ‚Ð¾Ð¹ Ñ†ÐµÐ»Ð¸ %s"
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:2999
 #, c-format
-msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ ISA Ð´Ð»Ñ� Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Â«%sÂ» Ð¸ Â«%sÂ»."
+msgid "Private flags = 0x%lx : "
+msgstr "CÐ¾Ð±Ñ�Ñ‚Ð²ÐµÐ½Ð½Ñ‹Ðµ Ñ„Ð»Ð°Ð³Ð¸ = 0x%lx : "
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2921
+#: elfnn-kvx.c:3003
 #, c-format
-msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð²Ñ…Ð¾Ð´Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA (%s) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ (%s)."
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr "Coolidge (kv3) V1 64-Ð±Ð¸Ñ‚Ð½Ð°Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2946
+#: elfnn-kvx.c:3005
 #, c-format
-msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: XLEN Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… (%u) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ð¼Ð¸ (%u)."
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr "Coolidge (kv3) V2 64-Ð±Ð¸Ñ‚Ð½Ð°Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2954
+#: elfnn-kvx.c:3007
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ XLEN (%u), Ð²Ñ‹Ñ€Ð¾Ñ�Ñ‚Ð½Ð¾, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ñ�."
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr "Coolidge (kv4) V1 64-Ð±Ð¸Ñ‚Ð½Ð°Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3039
+#: elfnn-kvx.c:3012
 #, c-format
-msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð³Ð»Ð°Ñ�ÑƒÑŽÑ‰Ð°Ñ�Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� priv spec (Ñ�Ñ‚Ð°Ñ€ÑˆÐ°Ñ�/Ð¼Ð»Ð°Ð´ÑˆÐ°Ñ�/Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ðµ)."
+msgid "Coolidge (kv3) V1 32 bits"
+msgstr "Coolidge (kv3) V1 32-Ð±Ð¸Ñ‚Ð½Ð°Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3055
+#: elfnn-kvx.c:3014
 #, c-format
-msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned."
-msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ñ� %pB Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°, Ð½Ð¾ Ð´Ð»Ñ� Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ð° Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°."
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr "Coolidge (kv3) V2 32-Ð±Ð¸Ñ‚Ð½Ð°Ñ�"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3096
+#: elfnn-kvx.c:3016
+#, c-format
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr "Coolidge (kv4) V1 32-Ð±Ð¸Ñ‚Ð½Ð°Ñ�"
+
+#: elfnn-kvx.c:3848
+#, c-format
+msgid "relocation against `%s' has faulty GOT type "
+msgstr "Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ð² Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ GOT "
+
+#: elfnn-loongarch.c:303 elfnn-loongarch.c:355
+#, c-format
+msgid "%#<PRIx64> invaild imm"
+msgstr "%#<PRIx64> Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ñ�Ñ‚Ð²ÐµÐ½Ð½Ð¾Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ"
+
+#: elfnn-loongarch.c:537 elfnn-riscv.c:4383
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
@@ -7905,111 +9161,306 @@ msgstr ""
 "%pB: ABI Ð½Ðµ Ñ�Ð¾Ð²Ð¼ÐµÑ�Ñ‚Ð¸Ð¼ Ñ� Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ Ð² Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ð¸:\n"
 "  Ñ†ÐµÐ»ÑŒ Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ð¸ Â«%sÂ» Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Â«%sÂ»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3119
+#: elfnn-loongarch.c:592
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¾Ð±ÑŠÐµÐºÑ‚Ñ‹ Ñ� Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ð¼Ð¸ ABI."
+
+#: elfnn-loongarch.c:735
+msgid "Internal error: unreachable."
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð¸Ð¶Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒ."
+
+#: elfnn-loongarch.c:915
+#, c-format
+msgid "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s"
+msgstr "%pB:(%pA+%#lx): Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ» Ð½ÐµÐ»ÑŒÐ·Ñ� Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ %s; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� %s%s"
+
+#: elfnn-loongarch.c:919
+msgid " and check the symbol visibility"
+msgstr " Ð¸ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÑŒÑ‚Ðµ Ð²Ð¸Ð´Ð¸Ð¼Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð²"
+
+#: elfnn-loongarch.c:1045
+#, c-format
+msgid "%pB: stack based reloc type (%u) is not supported with -z pack-relative-relocs"
+msgstr "%pB: Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð½Ð° Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ñ�Ñ‚ÐµÐºÐ° (%u) Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ� Ð¿Ñ€Ð¸ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ð¸ -z pack-relative-relocs"
+
+#: elfnn-loongarch.c:1240
+#, c-format
+msgid "%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ R_LARCH_32 Ð½Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² ELFCLASS64 Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ð¸Ð»Ð¸ PIE"
+
+#: elfnn-loongarch.c:1305
+#, c-format
+msgid "%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary"
+msgstr "%pB: R_LARCH_ALIGN Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼ %<PRId64> Ð½Ðµ Ð²Ñ‹Ñ€Ð¾Ð²Ð½ÐµÐ½Ð¾ Ð¿Ð¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸"
+
+#: elfnn-loongarch.c:4196
+msgid "cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)"
+msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ñ‚ÑŒ R_LARCH_PCREL20_S2 Ð½ÐµÐ¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð¸Ð· [-2048, 2048)"
+
+#: elfnn-loongarch.c:4706
+msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'"
+msgstr "Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� Â«gcc -mno-relaxÂ», Â«as -mno-relaxÂ» Ð¸Ð»Ð¸ Â«ld --no-relaxÂ»"
+
+#: elfnn-loongarch.c:5584 elfnn-riscv.c:5168
+#, 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>"
+
+#: elfnn-riscv.c:385 elfnn-riscv.c:436 elfnn-riscv.c:484 elfnn-riscv.c:520
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ� RVE PLT Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#: elfnn-riscv.c:675
+#, c-format
+msgid "%pB: error: unsupported PLT type: %u"
+msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ PLT: %u"
+
+#: elfnn-riscv.c:1120
+#, c-format
+msgid "%pB: relocation %s against absolute symbol `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
+
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² RV32 Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
+
+#: elfnn-riscv.c:2095
+#, c-format
+msgid "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "ÐºÐ¾Ð½ÐµÑ‡Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� uleb128 Ð¿Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸ÑŽ 0x%lx Ð² %pA Ð¸Ð· %pB Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ðµ Ð¼ÐµÑ�Ñ‚Ð¾"
+
+#: elfnn-riscv.c:2337
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr "Ð´Ð»Ñ� %pcrel_lo Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ�Ð¾Ð¾Ñ‚Ð²ÐµÑ‚Ñ�Ñ‚Ð²ÑƒÑŽÑ‰Ð¸Ð¹ %pcrel_hi"
+
+#: elfnn-riscv.c:2340
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "%pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ Ð·Ð°Ð¿Ñ€ÐµÑ‰Ñ‘Ð½ Ð´Ð»Ñ� R_RISCV_GOT_HI20"
+
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2345
+#, c-format
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ %%pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ %%pcrel_hi Ñ€Ð°Ð²Ð½Ð¾ 0x%<PRIx64> Ð±ÐµÐ· Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ð¹, Ð½Ð¾ Ð¼Ð¾Ð¶ÐµÑ‚ Ñ�Ñ‚Ð°Ñ‚ÑŒ 0x%<PRIx64> Ð¿Ð¾Ñ�Ð»Ðµ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ� %%pcrel_lo"
+
+#: elfnn-riscv.c:2353
+#, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ %pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
+
+#: elfnn-riscv.c:2843
+#, c-format
+msgid "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up"
+msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: R_RISCV_SUB_ULEB128 Ñ� Ð½ÐµÐ½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼, Ð¿ÐµÑ€ÐµÑ�Ð¾Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ñ� binutils 2.42 Ð¸Ð»Ð¸ Ð½Ð¾Ð²ÐµÐµ"
+
+#: elfnn-riscv.c:2923
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "Ð”Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¾ Ð´Ð»Ñ� R_RISCV_GOT_HI20"
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:3022
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Â«%sÂ», ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ð¿Ñ€Ð¸Ð²Ñ�Ð·Ð°Ð½ Ð¸Ð·Ð²Ð½Ðµ, Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC\n"
+
+#: elfnn-riscv.c:3103
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pcrel_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
+
+#: elfnn-riscv.c:3124
+#, c-format
+msgid "%tlsdesc_lo with addend"
+msgstr "%tlsdesc_lo Ñ� Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼"
+
+#: elfnn-riscv.c:3357
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: Ð½ÐµÑ€Ð°Ð·Ñ€ÐµÑˆÐ¸Ð¼Ð¾Ðµ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ»\n"
+
+#: elfnn-riscv.c:3392
+msgid "%X%P: internal error: out of range error\n"
+msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð²Ñ‹Ñ…Ð¾Ð´Ð° Ð¸Ð· Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð°\n"
+
+#: elfnn-riscv.c:3397
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�\n"
+
+#: elfnn-riscv.c:3403
+msgid "dangerous relocation error"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�"
+
+#: elfnn-riscv.c:3409
+msgid "%X%P: internal error: unknown error\n"
+msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ð°Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°\n"
+
+#: elfnn-riscv.c:3982
+#, 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:4025
+#, c-format
+msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸ ISA Ð´Ð»Ñ� Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ� Â«%sÂ» Ð¸ Â«%sÂ»"
+
+#: elfnn-riscv.c:4162
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… (%s) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð¾Ð¹ (%s)"
+
+#: elfnn-riscv.c:4182
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: XLEN Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… (%u) Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ñ‹Ð¼Ð¸ (%u)"
+
+#: elfnn-riscv.c:4190
+#, c-format
+msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation"
+msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ XLEN (%u), Ð²ÐµÑ€Ð¾Ñ�Ñ‚Ð½Ð¾, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ñ�Ð¼ÑƒÐ»Ñ�Ñ†Ð¸Ñ�"
+
+#: elfnn-riscv.c:4314
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ 1.9.1 Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð±Ñ‹Ñ‚ÑŒ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð° Ñ� Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ð¸Ñ�Ð¼Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸"
+
+#: elfnn-riscv.c:4342
+#, 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:4439
 #, 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:4449
 #, 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:4473
 #, 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>"
+msgid "warning: %pB: unknown RISCV ABI object attribute %d"
+msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ ABI-Ð¾Ð±ÑŠÐµÐºÑ‚Ð° RISCV %d"
+
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ %s Ð½Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð° Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ‚ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÑŒÑ�Ñ� Ð² RV64 Ð¿Ñ€Ð¸ Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ð¸ Ð¾Ð±Ñ‰ÐµÐ³Ð¾ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: peXXigen.c:161
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð½Ð°Ð¹Ñ‚Ð¸ Ð¸Ð¼Ñ� Ð¿ÑƒÑ�Ñ‚Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
+#: peXXigen.c:188
 #, 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:199
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ„Ð¸ÐºÑ‚Ð¸Ð²Ð½Ñ‹Ð¹ Ð¿ÑƒÑ�Ñ‚Ð¾Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ»"
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
+#: peXXigen.c:928
 #, c-format
-msgid "%pB: aout header specifies an invalid number of data-directory entries: %ld"
-msgstr "%pB: Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ aout ÑƒÐºÐ°Ð·Ð°Ð½ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ…: %ld"
+msgid "%pB:%.8s: section below image base"
+msgstr "%pB:%.8s: Ñ€Ð°Ð·Ð´ÐµÐ» Ð½Ð¸Ð¶Ðµ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ� Ð¾Ð±Ñ€Ð°Ð·Ð°"
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:933
+#, c-format
+msgid "%pB:%.8s: RVA truncated"
+msgstr "%pB:%.8s: RVA ÑƒÑ�ÐµÑ‡Ñ‘Ð½"
+
+#: peXXigen.c:1066
 #, 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:1232
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° [.edata (Ð¸Ð»Ð¸ Ð³Ð´Ðµ Ð¾Ð½ Ð½Ð°ÑˆÑ‘Ð»Ñ�Ñ�)]"
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1233
 msgid "Import Directory [parts of .idata]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° [Ñ‡Ð°Ñ�Ñ‚ÑŒ .idata]"
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1234
 msgid "Resource Directory [.rsrc]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð¾Ð² [.rsrc]"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1235
 msgid "Exception Directory [.pdata]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¸Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ [.pdata]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1236
 msgid "Security Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1237
 msgid "Base Relocation Directory [.reloc]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� [.reloc]"
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1238
 msgid "Debug Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1239
 msgid "Description Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð¿Ð¸Ñ�Ð°Ð½Ð¸Ð¹"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1240
 msgid "Special Directory"
 msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1241
 msgid "Thread Storage Directory [.tls]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ…Ñ€Ð°Ð½Ð¸Ð»Ð¸Ñ‰Ð° Ð½Ð¸Ñ‚ÐµÐ¹ [.tls]"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1242
 msgid "Load Configuration Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1243
 msgid "Bound Import Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð±Ñ�Ð·Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1244
 msgid "Import Address Table Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾Ð²"
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1245
 msgid "Delay Import Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ñ‚Ð»Ð¾Ð¶ÐµÐ½Ð½Ð¾Ð³Ð¾ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°"
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1246
 msgid "CLR Runtime Header"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¸ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ� CLR"
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1247
 msgid "Reserved"
 msgstr "Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¾"
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1312
 #, c-format
 msgid ""
 "\n"
@@ -8018,7 +9469,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�\n"
 
-#: peigen.c:1316 pepigen.c:1316 pex64igen.c:1316
+#: peXXigen.c:1318
 #, c-format
 msgid ""
 "\n"
@@ -8027,7 +9478,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð±ÐµÐ· Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾\n"
 
-#: peigen.c:1323 pepigen.c:1323 pex64igen.c:1323
+#: peXXigen.c:1325
 #, c-format
 msgid ""
 "\n"
@@ -8036,30 +9487,7 @@ msgstr ""
 "\n"
 "Ð’ %s Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%lx\n"
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
-#, c-format
-msgid ""
-"\n"
-"Function descriptor located at the start address: %04lx\n"
-msgstr ""
-"\n"
-"Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %04lx\n"
-
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
-#, 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
-#, c-format
-msgid ""
-"\n"
-"No reldata section! Function descriptor not decoded.\n"
-msgstr ""
-"\n"
-"Ð�ÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° reldata! ÐžÐ¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ð½Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½.\n"
-
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1331
 #, c-format
 msgid ""
 "\n"
@@ -8068,7 +9496,7 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» %s)\n"
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1334
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -8077,7 +9505,7 @@ msgstr ""
 " vma:            Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð°    ÐžÑ‚Ð¼ÐµÑ‚ÐºÐ°   Ð¦ÐµÐ¿Ð¾Ñ‡ÐºÐ°    Ð˜Ð¼Ñ�       ÐŸÐµÑ€Ð²Ñ‹Ð¹\n"
 "                  Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ð¹  Ð’Ñ€ÐµÐ¼ÐµÐ½Ð¸   ÐŸÐµÑ€ÐµÑ�Ñ‹Ð»ÐºÐ¸  DLL       Ð¨Ð»ÑŽÐ·\n"
 
-#: peigen.c:1435 pepigen.c:1435 pex64igen.c:1435
+#: peXXigen.c:1383
 #, c-format
 msgid ""
 "\n"
@@ -8086,12 +9514,12 @@ msgstr ""
 "\n"
 "\tÐ˜Ð¼Ñ� DLL: %.*s\n"
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1399
 #, c-format
-msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
-msgstr "\tvma:  Hint/Ord Ð˜Ð¼Ñ�-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²Ñ�Ð·Ð°Ð½-Ðº\n"
+msgid "\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"
+msgstr "\tvma:     Ordinal  Hint  Ð˜Ð¼Ñ�-Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²Ñ�Ð·Ð°Ð½-Ðº\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1424
 #, c-format
 msgid ""
 "\n"
@@ -8100,13 +9528,12 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¿ÐµÑ€Ð²Ñ‹Ð¹ ÑˆÐ»ÑŽÐ·, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�\n"
 
-#: peigen.c:1520 peigen.c:1559 pepigen.c:1520 pepigen.c:1559 pex64igen.c:1520
-#: pex64igen.c:1559
+#: peXXigen.c:1474 peXXigen.c:1519
 #, c-format
-msgid "\t<corrupt: 0x%04lx>"
-msgstr "\t<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾: 0x%04lx>"
+msgid "\t<corrupt: 0x%08lx>"
+msgstr "\t<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾: 0x%08lx>"
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1613
 #, c-format
 msgid ""
 "\n"
@@ -8115,34 +9542,25 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð°, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½Ð° Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�\n"
 
-#: peigen.c:1658 pepigen.c:1658 pex64igen.c:1658
+#: peXXigen.c:1626
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but that section has no contents\n"
-msgstr ""
-"\n"
-"Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð±ÐµÐ· Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾\n"
-
-#: peigen.c:1669 pepigen.c:1669 pex64igen.c:1669
-#, c-format
-msgid ""
-"\n"
-"There is an export table in %s, but it does not fit into that section\n"
+"There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 "\n"
-"Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ð¾Ð½Ð° Ð½Ðµ Ð¿Ð¾Ð¼ÐµÑ‰Ð°ÐµÑ‚Ñ�Ñ� Ð² Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ»\n"
+"Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ð¾Ð½Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ°Ñ� (%d)\n"
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1634
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it is too small (%d)\n"
+"There is an export table in %s, but contents cannot be read\n"
 msgstr ""
 "\n"
-"Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ð¾Ð½Ð° Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»ÐµÐ½ÑŒÐºÐ°Ñ� (%d)\n"
+"Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ ÐµÑ‘ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ðµ Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ\n"
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1640
 #, c-format
 msgid ""
 "\n"
@@ -8151,7 +9569,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%lx\n"
 
-#: peigen.c:1714 pepigen.c:1714 pex64igen.c:1714
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -8162,67 +9580,67 @@ msgstr ""
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ‹ Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» %s)\n"
 "\n"
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1675
 #, 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:1678
 #, 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:1682
 #, 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:1685
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Ð˜Ð¼Ñ� \t\t\t\t"
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1696
 #, 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:1699
 #, c-format
 msgid "Number in:\n"
 msgstr "Ð�Ð¾Ð¼ÐµÑ€ Ð²:\n"
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1702
 #, 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:1706
 #, 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:1709
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾Ð²\n"
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1712
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² \t\t"
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1717
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ \t\t"
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1722
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² \t\t\t"
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1736
 #, c-format
 msgid ""
 "\n"
@@ -8231,51 +9649,49 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ñ… Ð°Ð´Ñ€ÐµÑ�Ð¾Ð² -- Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ %ld\n"
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1746
 #, 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:1765
 msgid "Forwarder RVA"
 msgstr "ÐŸÐµÑ€ÐµÐ°Ð´Ñ€ÐµÑ�ÑƒÐµÐ¼Ñ‹Ð¹ RVA"
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1777
 msgid "Export RVA"
 msgstr "Ð­ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€ÑƒÐµÐ¼Ñ‹Ð¹ RVA"
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1784
 #, c-format
 msgid ""
 "\n"
-"[Ordinal/Name Pointer] Table\n"
+"[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"
 msgstr ""
 "\n"
-"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð²/ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½]\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð²/ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½] â€” Ð¾Ñ�Ð½Ð¾Ð²Ð°Ð½Ð¸Ðµ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ñ‹Ñ… Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð² %ld\n"
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1794
 #, c-format
 msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n"
-msgstr "\tÐ�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)\n"
+msgstr "\tÐ�ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð°Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÐµÐ¹ Ð¸Ð¼Ñ‘Ð½ rva (0x%lx) Ð¸Ð»Ð¸ Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² (0x%lx)\n"
 
-#: peigen.c:1841 pepigen.c:1841 pex64igen.c:1841
+#: peXXigen.c:1801
 #, 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:1815
 #, c-format
-msgid "\t[%4ld] <corrupt offset: %lx>\n"
-msgstr "\t[%4ld] <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: %lx>\n"
+msgid "\t[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>\n"
+msgstr "\t[%4ld] +base[%4ld]  %04lx <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð¾Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ: %lx>\n"
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1872 peXXigen.c:2042
 #, 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:1876 peXXigen.c:2046
 #, c-format
 msgid ""
 "\n"
@@ -8284,12 +9700,12 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹ (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» .pdata)\n"
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1879
 #, 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:1881
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -8298,27 +9714,12 @@ msgstr ""
 " vma:\t\tÐ�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹  ÐšÐ¾Ð½ÐµÑ‡Ð½Ñ‹Ð¹   EH          EH       Ð�Ð´Ñ€ÐµÑ�         ÐœÐ°Ñ�ÐºÐ°\n"
 "     \t\tÐ�Ð´Ñ€ÐµÑ�      Ð�Ð´Ñ€ÐµÑ�      ÐžÐ±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº  Ð”Ð°Ð½Ð½Ñ‹Ðµ   ÐšÐ¾Ð½Ñ†Ð°ÐŸÑ€Ð¾Ð»Ð¾Ð³Ð°  Ð˜Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ�\n"
 
-#: peigen.c:1931 pepigen.c:1931 pex64igen.c:1931
+#: peXXigen.c:1894
 #, 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
-#, c-format
-msgid " Register save millicode"
-msgstr " ÐœÐ¸Ð»Ð»Ð¸ÐºÐ¾Ð´ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°"
-
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
-#, c-format
-msgid " Register restore millicode"
-msgstr " ÐœÐ¸Ð»Ð»Ð¸ÐºÐ¾Ð´ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°"
-
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
-#, c-format
-msgid " Glue code sequence"
-msgstr " ÐŸÐ¾Ñ�Ð»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð²Ñ�Ð·ÑƒÑŽÑ‰ÐµÐ³Ð¾ ÐºÐ¾Ð´Ð°"
-
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2048
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -8327,7 +9728,7 @@ msgstr ""
 " vma:\t\tÐ�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð”Ð»Ð¸Ð½Ð°    Ð”Ð»Ð¸Ð½Ð°   Ð¤Ð»Ð°Ð³Ð¸       ÐžÐ±Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ðº EH\n"
 "     \t\tÐ�Ð´Ñ€ÐµÑ�     ÐŸÑ€Ð¾Ð»Ð¾Ð³Ð°  Ð¤ÑƒÐ½ÐºÑ†Ð¸Ð¸ 32b exc     Ð˜Ñ�ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ð¹ Ð”Ð°Ð½Ð½Ñ‹Ðµ\n"
 
-#: peigen.c:2234 pepigen.c:2234 pex64igen.c:2234
+#: peXXigen.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -8338,7 +9739,7 @@ msgstr ""
 "\n"
 "Ð�Ð°Ñ‡Ð°Ð»Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ð¹ Ð² PE-Ñ„Ð°Ð¹Ð»Ðµ (Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½ Ñ€Ð°Ð·Ð´ÐµÐ» .reloc)\n"
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2202
 #, c-format
 msgid ""
 "\n"
@@ -8347,62 +9748,62 @@ msgstr ""
 "\n"
 "Ð’Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ�: %08lx Ð Ð°Ð·Ð¼ÐµÑ€ Ð±Ð»Ð¾ÐºÐ° %ld (0x%lx) Ð§Ð¸Ñ�Ð»Ð¾ Ð¼ÐµÑ�Ñ‚Ð¾Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ð¹ %ld\n"
 
-#: peigen.c:2282 pepigen.c:2282 pex64igen.c:2282
+#: peXXigen.c:2220
 #, 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:2281
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "%03x %*.s Ð­Ð»ÐµÐ¼ÐµÐ½Ñ‚: "
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2305
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr "Ð¸Ð¼Ñ�: [Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: %08lx Ð´Ð»Ð¸Ð½Ð° %d]: "
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2325
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr "<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð° Ð´Ð»Ð¸Ð½Ð° Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#x>\n"
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2335
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr "<Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ Ñ�Ñ‚Ñ€Ð¾ÐºÐ¸: %#lx>\n"
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2340
 #, c-format
 msgid "ID: %#08lx"
 msgstr "ID: %#08lx"
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2343
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ: %#08lx\n"
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2365
 #, 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:2407
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr "<Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°: %d>\n"
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2415
 #, 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:2503
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr "ÐžÐ±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¹ Ñ€Ð°Ð·Ð´ÐµÐ» .rsrc!\n"
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2527
 #, c-format
 msgid ""
 "\n"
@@ -8411,17 +9812,17 @@ msgstr ""
 "\n"
 "ÐŸÐ Ð•Ð”Ð£ÐŸÐ Ð•Ð–Ð”Ð•Ð�Ð˜Ð•: Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ .rsrc â€” Ð±ÑƒÐ´ÑƒÑ‚ Ð¿Ñ€Ð¾Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ñ‹ Windows:\n"
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2533
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�Ñ‚Ñ€Ð¾Ðº Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚Ñ�Ñ� Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#03x\n"
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2536
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr " Ð ÐµÑ�ÑƒÑ€Ñ�Ñ‹ Ð½Ð°Ñ‡Ð¸Ð½Ð°ÑŽÑ‚Ñ�Ñ� Ñ�Ð¾ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %#03x\n"
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2593
 #, c-format
 msgid ""
 "\n"
@@ -8430,7 +9831,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³, Ð½Ð¾ Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½ Ñ€Ð°Ð·Ð´ÐµÐ», Ð² ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¼ Ð¾Ð½ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚Ñ�Ñ�\n"
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2599
 #, c-format
 msgid ""
 "\n"
@@ -8439,7 +9840,7 @@ msgstr ""
 "\n"
 "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð² %s, Ð½Ð¾ Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð±ÐµÐ· Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾\n"
 
-#: peigen.c:2664 pepigen.c:2664 pex64igen.c:2664
+#: peXXigen.c:2606
 #, c-format
 msgid ""
 "\n"
@@ -8448,7 +9849,7 @@ msgstr ""
 "\n"
 "ÐžÑˆÐ¸Ð±ÐºÐ°: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ðµ Ð´Ð°Ð½Ð½Ñ‹Ðµ, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ� Ñ� Ð°Ð´Ñ€ÐµÑ�Ð°, ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¹ Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð¼Ð°Ð»\n"
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2611
 #, c-format
 msgid ""
 "\n"
@@ -8459,22 +9860,22 @@ msgstr ""
 "Ð’ %s Ð¸Ð¼ÐµÐµÑ‚Ñ�Ñ� Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ 0x%lx\n"
 "\n"
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2618
 #, 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:2623
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr "Ð¢Ð¸Ð¿                Ð Ð°Ð·Ð¼ÐµÑ€     Rva      Ð¡Ð¼ÐµÑ‰ÐµÐ½Ð¸Ðµ\n"
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2671
 #, c-format
-msgid "(format %c%c%c%c signature %s age %ld)\n"
-msgstr "(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ð¾Ð´Ð¿Ð¸Ñ�ÑŒ %s Ð²Ð¾Ð·Ñ€Ð°Ñ�Ñ‚ %ld)\n"
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr "(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ð¾Ð´Ð¿Ð¸Ñ�ÑŒ %s Ð²Ð¾Ð·Ñ€Ð°Ñ�Ñ‚ %ld pdb %s)\n"
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2683
 #, c-format
 msgid "The debug directory size is not a multiple of the debug directory entry size\n"
 msgstr "Ð Ð°Ð·Ð¼ÐµÑ€ Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð½Ðµ ÐºÑ€Ð°Ñ‚ÐµÐ½ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð° Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð°\n"
@@ -8482,7 +9883,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:2767
 #, c-format
 msgid ""
 "\n"
@@ -8491,99 +9892,417 @@ msgstr ""
 "\n"
 "Ð¥Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ¸ 0x%x\n"
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3052
 #, c-format
-msgid "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
-msgstr "%pB: Ñ€Ð°Ð·Ð¼ÐµÑ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ… (%lx) Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐµÑ�Ñ� Ð¼ÐµÑ�Ñ‚Ð¾ Ð² Ñ€Ð°Ð·Ð´ÐµÐ»Ðµ (%<PRIx64>)"
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr "%pB: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ð°Ð½Ð½Ñ‹Ñ… (%lx Ð±Ð°Ð¹Ñ‚ Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %<PRIx64>) Ñ€Ð°Ñ�ÑˆÐ¸Ñ€Ñ�ÐµÑ‚Ñ�Ñ� Ð·Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %<PRIx64>"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3093
 msgid "failed to update file offsets in debug directory"
 msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ñ‹Ðµ Ñ�Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð² Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ð¾Ð¼ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ðµ"
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3102
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr "%pB: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» Ð¾Ñ‚Ð»Ð°Ð´Ð¾Ñ‡Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ…"
 
-#: peigen.c:3849 pepigen.c:3849 pex64igen.c:3849
+#: peXXigen.c:3907
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° Ñ€ÐµÑ�ÑƒÑ€Ñ�Ð°: %d"
 
-#: peigen.c:3984 pepigen.c:3984 pex64igen.c:3984
+#: peXXigen.c:4042
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð½ÐµÑ�ÐºÐ¾Ð»ÑŒÐºÐ¾ Ð¼Ð°Ð½Ð¸Ñ„ÐµÑ�Ñ‚Ð¾Ð² Ð½Ðµ Ð¿Ð¾ ÑƒÐ¼Ð¾Ð»Ñ‡Ð°Ð½Ð¸ÑŽ"
 
-#: peigen.c:4002 pepigen.c:4002 pex64igen.c:4002
+#: peXXigen.c:4060
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð»Ð¸Ñ�Ñ‚Ð¾Ð¼"
 
-#: peigen.c:4044 pepigen.c:4044 pex64igen.c:4044
+#: peXXigen.c:4102
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ð»Ð¸Ñ�Ñ‚"
 
-#: peigen.c:4046 pepigen.c:4046 pex64igen.c:4046
+#: peXXigen.c:4107
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñ�ÑŽÑ‰Ð¸Ð¹Ñ�Ñ� Ð»Ð¸Ñ�Ñ‚: %s"
 
-#: peigen.c:4112 pepigen.c:4112 pex64igen.c:4112
+#: peXXigen.c:4174
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð¿Ñ€Ð¸ Ñ�Ð»Ð¸Ñ�Ð½Ð¸Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ñ� Ñ€Ð°Ð·Ð½Ñ‹Ð¼ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ°Ð¼Ð¸"
 
-#: peigen.c:4119 pepigen.c:4119 pex64igen.c:4119
+#: peXXigen.c:4181
 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:4293
 #, 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:4301
 #, 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:4441 peXXigen.c:4461 peXXigen.c:4482 peXXigen.c:4502
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
-msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$2"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s is missing"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ %s"
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
+#: peXXigen.c:4544 peXXigen.c:4590 peXXigen.c:4614 peXXigen.c:4698
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
-msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$4"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ðµ %s"
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
+#: peXXigen.c:4651
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
-msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[12], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$5"
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not properly aligned"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð²Ñ‹Ñ€Ð°Ð²Ð½Ð¸Ð²Ð°Ð½Ð¸Ðµ %s"
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
+#: peXXigen.c:4682
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: size too large for the containing section"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐµÐ½Ð¸Ðµ Ð¿Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ñƒ Ð´Ð»Ñ� Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð°Ñ‰ÐµÐ³Ð¾ Ñ€Ð°Ð·Ð´ÐµÐ»Ð°"
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
+#: peXXigen.c:4690
 #, 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"
+msgid "%pB: unable to fill in DataDirectory[%d]: size can't be read from %s"
+msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[%d]: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¸Ð· %s"
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
-msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[9], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ __tls_used"
+#~ msgid "%F%pA: failed to align section\n"
+#~ msgstr "%F%pA: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð²Ñ‹Ñ€Ð¾Ð²Ð½Ñ�Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ»\n"
 
-#~ msgid "%H: call to `%pT' lacks nop, can't restore toc; recompile with -fPIC\n"
-#~ msgstr "%H: Ð²Ñ‹Ð·Ð¾Ð² Â«%pTÂ» ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚ Ð½Ð° Ð½Ðµ nop, Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ toc; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐ¹Ñ‚Ðµ Ñ� -fPIC\n"
+#, c-format
+#~ msgid "error: %pB: big-endian R2 is not supported"
+#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð¾Ñ‚ Ñ�Ñ‚Ð°Ñ€ÑˆÐµÐ³Ð¾ Ðº Ð¼Ð»Ð°Ð´ÑˆÐµÐ¼Ñƒ R2 Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚Ñ�Ñ�"
+
+#, c-format
+#~ msgid "error: %pB: conflicting CPU architectures %d/%d"
+#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: Ð¿Ñ€Ð¾Ñ‚Ð¸Ð²Ð¾Ñ€ÐµÑ‡Ð°Ñ‰Ð¸Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð½Ñ‹Ðµ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ %d/%d"
+
+#, c-format
+#~ msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+#~ msgstr "Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»ÑŒ Ð¾Ñ‚Ð½Ð¾Ñ�Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>, Ð½Ð¾ _gp Ð½Ðµ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð°\n"
+
+#, 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"
+
+#, c-format
+#~ msgid "dynamic variable `%s' is zero size"
+#~ msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑ�ÐºÐ°Ñ� Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� Â«%sÂ» Ð¸Ð¼ÐµÐµÑ‚ Ð½ÑƒÐ»ÐµÐ²Ð¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€"
+
+#, 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."
+
+#~ msgid "c' or `zcf"
+#~ msgstr "cÂ» Ð¸Ð»Ð¸ Â«zcf"
+
+#~ msgid "c' or `zcd"
+#~ msgstr "cÂ» Ð¸Ð»Ð¸ Â«zcd"
+
+#, c-format
+#~ msgid "%pB: unhandled import type; %x"
+#~ msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°; %x"
+
+#, c-format
+#~ msgid "warning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%u"
+#~ msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½ÑƒÑŽ Ð²ÐµÑ€Ñ�Ð¸ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸ %u.%u.%u, Ð½Ð¾ Ð´Ð»Ñ� Ð²Ñ‹Ð²Ð¾Ð´Ð° Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚Ñ�Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %u.%u.%u"
+
+#, c-format
+#~ msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+#~ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[1], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$4"
+
+#, c-format
+#~ msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
+#~ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ DataDictionary[12], Ñ‚Ð°Ðº ÐºÐ°Ðº Ð¾Ñ‚Ñ�ÑƒÑ‚Ñ�Ñ‚Ð²ÑƒÐµÑ‚ .idata$5"
+
+#, 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"
+
+#, 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"
+
+#, c-format
+#~ msgid "not mapping: data=%lx mapped=%d\n"
+#~ msgstr "Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ð½Ñ‹Ðµ=%lx Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d\n"
+
+#, c-format
+#~ msgid "not mapping: env var not set\n"
+#~ msgstr "Ð½Ðµ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ� env Ð½Ðµ Ð·Ð°Ð´Ð°Ð½Ð°\n"
+
+#, c-format
+#~ msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
+#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� EP9312, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð´Ð»Ñ� XScale"
+
+#, c-format
+#~ msgid "%pB: invalid size field in group section header: %#<PRIx64>"
+#~ msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ðµ Ð¿Ð¾Ð»Ðµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Ð³Ñ€ÑƒÐ¿Ð¿: %#<PRIx64>"
+
+#, c-format
+#~ msgid "%pB: no valid group sections found"
+#~ msgstr "%pB: Ð½Ðµ Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ñ… Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² Ð³Ñ€ÑƒÐ¿Ð¿"
+
+#, c-format
+#~ msgid "%pB: no group info for section '%pA'"
+#~ msgstr "%pB: Ð½ÐµÑ‚ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð³Ñ€ÑƒÐ¿Ð¿Ðµ Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
+
+#, c-format
+#~ msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
+#~ msgstr "%pB: Ñ€Ð°Ð·Ð´ÐµÐ» SHT_GROUP [Ð¸Ð½Ð´ÐµÐºÑ� %d] Ð½Ðµ Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð² SHF_GROUP"
+
+#, c-format
+#~ msgid " [Maverick float format]"
+#~ msgstr " [Maverick Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¸]"
+
+#, c-format
+#~ msgid "error: %pB does not use %s instructions, whereas %pB does"
+#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB Ð½Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ð¸ %s, Ð² Ñ‚Ð¾ Ð²Ñ€ÐµÐ¼Ñ� ÐºÐ°Ðº %pB Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÑ‚"
+
+#, c-format
+#~ msgid "   Error: The length is less than the length of an EMH record\n"
+#~ msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð¼ÐµÐ½ÑŒÑˆÐµ Ð´Ð»Ð¸Ð½Ñ‹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EMH\n"
+
+#, c-format
+#~ msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
+#~ msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð¼ÐµÐ½ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EMH_MHD\n"
+
+#, c-format
+#~ msgid "   Error: The length is less than the length of an EEOM record\n"
+#~ msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð¼ÐµÐ½ÑŒÑˆÐµ Ð´Ð»Ð¸Ð½Ñ‹ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ EEOM\n"
+
+#, c-format
+#~ msgid "%pB: unsupported relocation type name %s"
+#~ msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ðµ Ð¸Ð¼Ñ� Ñ‚Ð¸Ð¿Ð° Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %s"
+
+#~ msgid "d' and `c"
+#~ msgstr "dÂ» Ð¸ Â«c"
+
+#~ msgid "zvknha"
+#~ msgstr "zvknha"
+
+#~ msgid "zvknhb"
+#~ msgstr "zvknhb"
+
+#~ msgid "Deprecated %s called at %s line %d in %s\n"
+#~ msgstr "Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s Ñ€Ñ�Ð´Ð¾Ð¼ Ñ� %s Ð² Ñ�Ñ‚Ñ€Ð¾ÐºÐµ %d Ð² %s\n"
+
+#~ msgid "Deprecated %s called\n"
+#~ msgstr "Ð’Ñ‹Ð·Ð²Ð°Ð½ Ð½ÐµÑ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÐµÐ¼Ñ‹Ð¹ %s\n"
+
+#~ msgid "cannot read GST record length\n"
+#~ msgstr "Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ Ð´Ð»Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GST\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but that section has no contents\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Ð±ÐµÐ· Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ð¼Ð¾Ð³Ð¾\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but it does not fit into that section\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð¡ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð° Ñ�ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð° Ð² %s, Ð½Ð¾ Ð¾Ð½Ð° Ð½Ðµ Ð¿Ð¾Ð¼ÐµÑ‰Ð°ÐµÑ‚Ñ�Ñ� Ð² Ñ�Ñ‚Ð¾Ñ‚ Ñ€Ð°Ð·Ð´ÐµÐ»\n"
+
+#~ msgid "%pB: TLS relocation at (0x%"
+#~ msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ TLS Ð¿Ð¾ Ð°Ð´Ñ€ÐµÑ�Ñƒ (0x%"
+
+#~ msgid "%pB: page size is too large (0x%x)"
+#~ msgstr "%pB: Ñ�Ð»Ð¸ÑˆÐºÐ¾Ð¼ Ð±Ð¾Ð»ÑŒÑˆÐ¾Ð¹ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ñ‹ (0x%x)"
 
-#~ msgid "error: %pB: <corrupt x86 ISA used size: 0x%x>"
-#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° x86 ISA: 0x%x>"
+#~ msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
+#~ msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ñ�Ñ‡Ñ‘Ñ‚Ñ‡Ð¸Ðº ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑ�Ñ‚Ð²Ð° Ñ�Ñ‚Ñ€Ð¾Ðº (%#lx) Ð¿Ñ€ÐµÐ²Ñ‹ÑˆÐ°ÐµÑ‚ Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (%#lx)"
 
-#~ msgid "error: %pB: <corrupt x86 ISA needed size: 0x%x>"
-#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: %pB: <Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾Ð³Ð¾ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° x86 ISA: 0x%x>"
+#~ msgid "%pB: unable to initialize compress status for section %s"
+#~ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ�Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
+
+#~ msgid "%pB: unable to initialize decompress status for section %s"
+#~ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñ�Ð¾Ñ�Ñ‚Ð¾Ñ�Ð½Ð¸Ðµ Ñ€Ð°Ð·Ð¶Ð°Ñ‚Ð¸Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
+
+#~ msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %pB(%pA) Ñ€Ð°Ð²ÐµÐ½ %#<PRIx64>, Ñ�Ñ‚Ð¾ Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° Ñ„Ð°Ð¹Ð»Ð° (%#<PRIx64> Ð±Ð°Ð¹Ñ‚)"
+
+#~ msgid "DWARF error: section %s is larger than its filesize! (0x%lx vs 0x%lx)"
+#~ msgstr "Ð¾ÑˆÐ¸Ð±ÐºÐ° Ð² DWARF: Ñ€Ð°Ð·Ð´ÐµÐ» %s Ð±Ð¾Ð»ÑŒÑˆÐµ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð° ÐµÐ³Ð¾ Ñ„Ð°Ð¹Ð»Ð°! (0x%lx Ð¸ 0x%lx)"
+
+#~ 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"
+
+#~ msgid "internal error: RL78 reloc stack overflow"
+#~ msgstr "Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½Ñ�Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ðµ RL78 Ð²Ñ‹Ð·Ð²Ð°Ð»Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ðµ Ñ�Ñ‚ÐµÐºÐ°"
+
+#~ 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"
+
+#~ 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"
+#~ "  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc            %lu\n"
+#~ "  Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc                     %lu\n"
+#~ "  Ð¾Ð±Ð° Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                        %lu\n"
+#~ "  Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ                    %lu\n"
+#~ "  Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ðµ Ð´Ð»Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ� toc   %lu\n"
+#~ "  Ð´Ð»Ð¸Ð½Ð½Ð¾Ðµ Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ðµ Ð½Ðµ toc             %lu\n"
+#~ "  Ð¾Ð±Ð° Ð´Ð»Ð¸Ð½Ð½Ñ‹Ñ… Ð²ÐµÑ‚Ð²Ð»ÐµÐ½Ð¸Ñ�                %lu\n"
+#~ "  plt-Ð²Ñ‹Ð·Ð¾Ð²                            %lu\n"
+#~ "  Ñ�Ð¾Ñ…Ñ€Ð°Ð½Ñ‘Ð½Ð½Ñ‹Ð¹ plt-Ð²Ñ‹Ð·Ð¾Ð²                %lu\n"
+#~ "  plt-Ð²Ñ‹Ð·Ð¾Ð² Ð½Ðµ toc                     %lu\n"
+#~ "  Ð¾Ð±Ð° plt-Ð²Ñ‹Ð·Ð¾Ð²Ð°                       %lu\n"
+#~ "  Ð³Ð»Ð¾Ð±Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚                   %lu"
+
+#~ msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
+#~ msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB ÑƒÑ�ÐµÑ‡Ñ‘Ð½: Ð¾Ð¶Ð¸Ð´Ð°Ð»Ñ�Ñ� Ñ€Ð°Ð·Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð° core >= %<PRIu64>, Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾: %<PRIu64>"
+
+#~ msgid "warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+#~ msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: --enable-non-contiguous-regions Ð¾Ñ‚Ð±Ñ€Ð°Ñ�Ñ‹Ð²Ð°ÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ» Â«%sÂ» Ð¸Ð· Â«%sÂ»\n"
+
+#~ msgid "-march=%s: expect number after `%dp'"
+#~ msgstr "-march=%s: Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ‚Ñ�Ñ� Ñ‡Ð¸Ñ�Ð»Ð¾ Ð¿Ð¾Ñ�Ð»Ðµ Â«%dpÂ»"
+
+#~ msgid "-march=%s: rv%de is not a valid base ISA"
+#~ msgstr "-march=%s: rv%de Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ� Ð±Ð°Ð·Ð° ISA"
+
+#~ msgid "-march=%s: standard ISA extension `%c' is not in canonical order"
+#~ msgstr "-march=%s: Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ ISA Â«%cÂ» Ð½Ðµ Ð² ÐºÐ°Ð½Ð¾Ð½Ð¸Ñ‡Ð½Ð¾Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐµ"
+
+#~ msgid "-march=%s: unknown prefix class for the ISA extension `%s'"
+#~ msgstr "-march=%s: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ ÐºÐ»Ð°Ñ�Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð² Ð´Ð»Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� ISA Â«%sÂ»"
+
+#~ msgid "-march=%s: duplicate prefixed ISA extension `%s'"
+#~ msgstr "-march=%s: Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Â«%sÂ»"
+
+#~ msgid "-march=%s: prefixed ISA extension `%s' is not in expected order.  It must come before `%s'"
+#~ msgstr "-march=%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Ñ� Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Â«%sÂ» Ð½Ðµ Ð² Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð¾Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐµ. Ð”Ð¾Ð»Ð¶Ð½Ð¾ Ð¸Ð´Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÐ´ Â«%sÂ»"
+
+#~ msgid "-march=%s: rv32e does not support the `f' extension"
+#~ msgstr "-march=%s: rv32e Ð½Ðµ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÑ‚ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«fÂ»"
+
+#~ msgid "%F%P: failed to create BND PLT section\n"
+#~ msgstr "%F%P: Ð½Ðµ ÑƒÐ´Ð°Ð»Ð¾Ñ�ÑŒ Ñ�Ð¾Ð·Ð´Ð°Ñ‚ÑŒ Ñ€Ð°Ð·Ð´ÐµÐ» BND PLT\n"
+
+#~ msgid "%pB: no core to allocate section name %s"
+#~ msgstr "%pB: Ð½ÐµÑ‚ core Ð´Ð»Ñ� Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ� Ð¸Ð¼ÐµÐ½Ð¸ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° %s"
+
+#~ msgid "   Error: length larger than remaining space in record\n"
+#~ msgstr "   ÐžÑˆÐ¸Ð±ÐºÐ°: Ð´Ð»Ð¸Ð½Ð° Ð±Ð¾Ð»ÑŒÑˆÐµ Ð¾Ñ�Ñ‚Ð°Ð²ÑˆÐµÐ³Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ñ€Ð°Ð½Ñ�Ñ‚Ð²Ð° Ð² Ð·Ð°Ð¿Ð¸Ñ�Ð¸\n"
+
+#~ msgid "STA_QW (stack quadword) 0x%08x %08x\n"
+#~ msgstr "STA_QW (Ñ�Ñ‚ÐµÐº Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ñ‹Ñ… Ñ�Ð»Ð¾Ð²) 0x%08x %08x\n"
+
+#~ msgid "%pB: error: erratum 843419 immediate 0x%"
+#~ msgstr "%pB: Ð¾ÑˆÐ¸Ð±ÐºÐ°: Ð·Ð°Ð³Ð»ÑƒÑˆÐºÐ° Ð´Ð»Ñ� Ð¾ÑˆÐ¸Ð±ÐºÐ¸ 843419 Ð² 0x%"
+
+#~ 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"
+
+#~ msgid "warning: %pB: mis-matched ISA version %d.%d for '%s' extension, the output version is %d.%d"
+#~ msgstr "Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: %pB: Ð½ÐµÑ�Ð¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ðµ Ð²ÐµÑ€Ñ�Ð¸Ð¸ ISA %d.%d Ð´Ð»Ñ� Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ� Â«%sÂ», Ð²Ñ‹Ñ…Ð¾Ð´Ð½Ð°Ñ� Ð²ÐµÑ€Ñ�Ð¸Ñ� %d.%d"
+
+#~ msgid "%pB: aout header specifies an invalid number of data-directory entries: %u"
+#~ msgstr "%pB: Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐµ aout ÑƒÐºÐ°Ð·Ð°Ð½ Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ�Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð¾Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ð´Ð°Ð½Ð½Ñ‹Ñ…: %u"
+
+#~ msgid "%pB: warning: sh_link not set for section `%pA'"
+#~ msgstr "%pB: Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ðµ: Ð½Ðµ Ð·Ð°Ð´Ð°Ð½ sh_link Ð´Ð»Ñ� Ñ€Ð°Ð·Ð´ÐµÐ»Ð° Â«%pAÂ»"
+
+#~ msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
+#~ msgstr "%pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ [Â«%pAÂ» Ð² %pB] Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ [Â«%pAÂ» Ð² %pB] Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹"
+
+#~ msgid "%pA has both ordered and unordered sections"
+#~ msgstr "%pA Ñ�Ð¾Ð´ÐµÑ€Ð¶Ð¸Ñ‚ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ð¸ Ð½ÐµÑƒÐ¿Ð¾Ñ€Ñ�Ð´Ð¾Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ñ€Ð°Ð·Ð´ÐµÐ»Ñ‹"
+
+#~ msgid "-march=%s: unsupported ISA subset `%c'"
+#~ msgstr "-march=%s: Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ð¿Ð¾Ð´Ð½Ð°Ð±Ð¾Ñ€ ISA Â«%cÂ»"
+
+#~ msgid "-march=%s: unexpected ISA string at end: %s"
+#~ msgstr "-march=%s: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ� Ñ�Ñ‚Ñ€Ð¾ÐºÐ° ISA Ð² ÐºÐ¾Ð½Ñ†Ðµ: %s"
+
+#~ msgid "-march=%s: `d' extension requires `f' extension"
+#~ msgstr "-march=%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÑŽ Â«dÂ» Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«fÂ»"
+
+#~ msgid "-march=%s: `q' extension requires `d' extension"
+#~ msgstr "-march=%s: Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸ÑŽ Â«qÂ» Ð½ÐµÐ¾Ð±Ñ…Ð¾Ð´Ð¸Ð¼Ð¾ Ñ€Ð°Ñ�ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ðµ Â«dÂ»"
+
+#~ msgid ""
+#~ "\n"
+#~ "Function descriptor located at the start address: %04lx\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð�Ð°Ñ‡Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð°Ð´Ñ€ÐµÑ� Ð¾Ð¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»Ñ� Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸: %04lx\n"
+
+#~ msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
+#~ msgstr "\tcode-base %08lx toc (Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ñ‹Ð¹/Ñ€ÐµÐ°Ð»ÑŒÐ½Ñ‹Ð¹) %08lx/%08lx\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "No reldata section! Function descriptor not decoded.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð�ÐµÑ‚ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° reldata! ÐžÐ¿Ð¸Ñ�Ð°Ñ‚ÐµÐ»ÑŒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ð½Ðµ Ñ€Ð°Ñ�ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½.\n"
+
+#~ msgid " Register save millicode"
+#~ msgstr " ÐœÐ¸Ð»Ð»Ð¸ÐºÐ¾Ð´ Ñ�Ð¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°"
+
+#~ msgid " Register restore millicode"
+#~ msgstr " ÐœÐ¸Ð»Ð»Ð¸ÐºÐ¾Ð´ Ð²Ð¾Ñ�Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ� Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°"
+
+#~ msgid " Glue code sequence"
+#~ msgstr " ÐŸÐ¾Ñ�Ð»ÐµÐ´Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñ�Ñ‚ÑŒ Ñ�Ð²Ñ�Ð·ÑƒÑŽÑ‰ÐµÐ³Ð¾ ÐºÐ¾Ð´Ð°"
+
+#~ 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 "%pB: can't link hard-float modules with soft-float modules"
 #~ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ñ‚ÑŒ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ Ñ� Ð°Ð¿Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ Ñ‚Ð¾Ñ‡ÐºÐ¾Ð¹ Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð¸Ñ�Ð¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ‰Ð¸Ð¼Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½ÑƒÑŽ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÑƒÑŽ Ñ‚Ð¾Ñ‡ÐºÑƒ"
@@ -8603,9 +10322,6 @@ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿
 #~ msgid "%B: Invalid relocation type imported: %d"
 #~ msgstr "%B: Ð˜Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½ Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�: %d"
 
-#~ msgid "%P: %B: unexpected relocation type\n"
-#~ msgstr "%P: %B: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ�\n"
-
 #~ msgid "%B: unknown/unsupported relocation type %d"
 #~ msgstr "%B: Ð½ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹/Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d"
 
@@ -8672,9 +10388,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 +10444,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,15 +10486,9 @@ 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."
 
-#~ msgid "%B: invalid relocation type %d"
-#~ msgstr "%B: Ð½ÐµÐ²ÐµÑ€Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d"
-
 #~ msgid "%B: invalid i960 reloc number: %d"
 #~ msgstr "%B: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� i960: %d"
 
@@ -8818,9 +10522,6 @@ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿
 #~ msgid "%B: unrecognised MCore reloc number: %d"
 #~ msgstr "%B: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� MCore: %d"
 
-#~ msgid "%B: Unknown relocation type %d\n"
-#~ msgstr "%B: Ð�ÐµÐ¸Ð·Ð²ÐµÑ�Ñ‚Ð½Ñ‹Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� %d\n"
-
 #~ msgid "%B: invalid MEP reloc number: %d"
 #~ msgstr "%B: Ð½ÐµÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� MEP: %d"
 
@@ -8911,15 +10612,6 @@ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿
 #~ msgid "%B: unrecognised SH reloc number: %d"
 #~ msgstr "%B: Ð½ÐµÑ€Ð°Ñ�Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ñ‹Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ� SH: %d"
 
-#~ msgid "%B: compiled as 32-bit object and %B is 64-bit"
-#~ msgstr "%B: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ°Ðº 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚, Ð° %B â€” 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹"
-
-#~ msgid "%B: compiled as 64-bit object and %B is 32-bit"
-#~ msgstr "%B: Ñ�ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½ ÐºÐ°Ðº 64-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹ Ð¾Ð±ÑŠÐµÐºÑ‚, Ð° %B â€” 32-Ð±Ð¸Ñ‚Ð½Ñ‹Ð¹"
-
-#~ msgid "%B: object size does not match that of target %B"
-#~ msgstr "%B: Ñ€Ð°Ð·Ð¼ÐµÑ€ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° Ð½Ðµ Ñ�Ð¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ‚ Ñ� Ð¸Ð¼ÐµÑŽÑ‰Ð¸Ð¼Ñ�Ñ� Ñƒ Ñ�Ñ‚Ð¾Ð¹ Ñ†ÐµÐ»Ð¸ %B"
-
 #~ msgid "%B: encountered datalabel symbol in input"
 #~ msgstr "%B: Ð²Ð¾ Ð²Ñ…Ð¾Ð´Ð½Ñ‹Ñ… Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð¾Ð±Ð½Ð°Ñ€ÑƒÐ¶ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¼ÐµÑ‚ÐºÐ¸ Ð´Ð°Ð½Ð½Ñ‹Ñ…"
 
@@ -9134,9 +10826,6 @@ msgstr "%pB: Ð½ÐµÐ²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ Ð·Ð°Ð¿
 #~ 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 "%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)"
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/SRC-POTFILES.in ./bfd/po/SRC-POTFILES.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/SRC-POTFILES.in	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/SRC-POTFILES.in	2026-03-05 02:07:20.000000000 +0000
@@ -1,9 +1,7 @@
-aix386-core.c
 aix5ppc-core.c
 aout-cris.c
 aout-ns32k.c
 aout-target.h
-aout-tic30.c
 aout32.c
 aout64.c
 aoutx.h
@@ -14,7 +12,6 @@ archive64.c
 archures.c
 bfd.c
 bfdio.c
-bfdwin.c
 binary.c
 cache.c
 cf-i386lynx.c
@@ -32,7 +29,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
@@ -46,6 +42,7 @@ corefile.c
 cpu-aarch64.c
 cpu-aarch64.h
 cpu-alpha.c
+cpu-amdgcn.c
 cpu-arc.c
 cpu-arm.c
 cpu-arm.h
@@ -71,9 +68,9 @@ cpu-ia64.c
 cpu-iamcu.c
 cpu-ip2k.c
 cpu-iq2000.c
-cpu-k1om.c
-cpu-l1om.c
+cpu-kvx.c
 cpu-lm32.c
+cpu-loongarch.c
 cpu-m10200.c
 cpu-m10300.c
 cpu-m32c.c
@@ -95,15 +92,14 @@ cpu-msp430.c
 cpu-mt.c
 cpu-nds32.c
 cpu-nfp.c
-cpu-nios2.c
 cpu-ns32k.c
 cpu-or1k.c
 cpu-pdp11.c
 cpu-pj.c
-cpu-plugin.c
 cpu-powerpc.c
 cpu-pru.c
 cpu-riscv.c
+cpu-riscv.h
 cpu-rl78.c
 cpu-rs6000.c
 cpu-rx.c
@@ -117,7 +113,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
@@ -125,7 +120,6 @@ cpu-v850_rh850.c
 cpu-vax.c
 cpu-visium.c
 cpu-wasm32.c
-cpu-xc16x.c
 cpu-xgate.c
 cpu-xstormy16.c
 cpu-xtensa.c
@@ -146,10 +140,9 @@ elf-linker-x86.h
 elf-linux-core.h
 elf-m10200.c
 elf-m10300.c
-elf-nacl.c
-elf-nacl.h
 elf-properties.c
 elf-s390.h
+elf-sframe.c
 elf-strtab.c
 elf-vxworks.c
 elf-vxworks.h
@@ -203,8 +196,6 @@ elf32-msp430.c
 elf32-mt.c
 elf32-nds32.c
 elf32-nds32.h
-elf32-nios2.c
-elf32-nios2.h
 elf32-or1k.c
 elf32-pj.c
 elf32-ppc.c
@@ -234,12 +225,13 @@ elf32-v850.h
 elf32-vax.c
 elf32-visium.c
 elf32-wasm32.c
-elf32-xc16x.c
 elf32-xgate.c
 elf32-xstormy16.c
 elf32-xtensa.c
+elf32-z80.c
 elf32.c
 elf64-alpha.c
+elf64-amdgcn.c
 elf64-bpf.c
 elf64-gen.c
 elf64-hppa.c
@@ -264,6 +256,9 @@ elfxx-aarch64.c
 elfxx-aarch64.h
 elfxx-ia64.c
 elfxx-ia64.h
+elfxx-kvx.c
+elfxx-loongarch.c
+elfxx-loongarch.h
 elfxx-mips.c
 elfxx-mips.h
 elfxx-riscv.c
@@ -273,7 +268,6 @@ elfxx-sparc.h
 elfxx-tilegx.c
 elfxx-tilegx.h
 elfxx-x86.c
-elfxx-x86.c
 elfxx-x86.h
 format.c
 genlink.h
@@ -285,7 +279,6 @@ i386bsd.c
 i386lynx.c
 i386msdos.c
 ihex.c
-init.c
 irix-core.c
 libaout.h
 libbfd.c
@@ -312,23 +305,26 @@ ns32knetbsd.c
 opncls.c
 osf-core.c
 pc532-mach.c
+pdb.c
 pdp11.c
+pe-aarch64.c
 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
 pef.c
 pef.h
+pei-aarch64.c
 pei-arm-wince.c
 pei-arm.c
 pei-i386.c
 pei-ia64.c
+pei-loongarch64.c
 pei-mcore.c
-pei-ppc.c
+pei-riscv64.c
 pei-sh.c
 pei-x86_64.c
 peicode.h
@@ -338,7 +334,6 @@ ppcboot.c
 reloc.c
 reloc16.c
 rs6000-core.c
-sco5-core.c
 section.c
 simple.c
 som.c
@@ -365,5 +360,6 @@ xcofflink.c
 xcofflink.h
 xsym.c
 xsym.h
+xtensa-dynconfig.c
 xtensa-isa.c
 xtensa-modules.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.20200303/bfd/po/sr.gmo ./bfd/po/sr.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/sr.gmo	2020-03-03 02:13:28.000000000 +0000
+++ ./bfd/po/sr.gmo	2026-03-05 02:15:55.000000000 +0000
@@ -1,65 +1,161 @@
-Þ•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
-	code-base %08lx toc (loadable/actual) %08lx/%08lx
-	non-TLS: %A	reloc %4d offset %4x [%4lx] %s	vma:  Hint/Ord Member-Name Bound-To
+Þ•.0 9W
+slœŽ„œ¼žD¹
E¹S¹g¹€¹AŸ¹?á¹:!º\ºsº1†º$¸º
Ýºëº/»;»=»AO»&‘»¸»Ñ»ê»¼¼ 2¼S¼s¼Œ¼£¼°¼PÃ¼½*,½;W½“½F¥½6ì½6#¾:Z¾5•¾,Ë¾Dø¾N=¿JŒ¿)×¿=À:?ÀLzÀ)ÇÀBñÀL4Á�Á—ÁD®ÁGóÁ2;ÂnÂ€Â”Â¬ÂÁÂ3àÂÃ+Ã0=ÃnÃ~ÃŽÃ+¨Ã+ÔÃ+Ä#,ÄPÄhÄqÄ�Ä¤Ä¹Ä(ØÄ%Å&'Å(NÅ)wÅ¡Å¸ÅØÅõÅÆ)ÆIÆbÆ}Æ“Æ«Æ¿ÆÖÆ,ðÆÇ-ÇFÇ^ÇuÇ„ÇšÇ¯ÇÉÇàÇ1õÇ'È8ÈEÈ\ÈwÈ#�È+³È&ßÈ5É<ÉQÉiÉƒÉ™É³ÉÌÉãÉùÉ$Ê3ÊLÊlÊ„Ê$™Ê¾ÊÒÊçÊ<Ë=ËLË
[ËiË}Ë’Ë ªËËËæËöËÌ2ÌRÌkÌ„Ì—Ì*§ÌÒÌäÌ&öÌÍ01ÍbÍ"vÍ	™Í£Í#¶ÍÚÍóÍÎÎ"6ÎYÎ"mÎ#�Î#´ÎØÎ#íÎ#Ï5ÏBÏ`Ï~Ï„Ï‘Ï™ÏžÏ»Ï
+ÙÏäÏéÏ!ïÏ Ð2Ð7Ð<ÐTÐtÐ”Ð™Ð!žÐÀÐÑÐØÐÞÐãÐèÐîÐòÐ"÷ÐÑÑ?ÑSÑ&sÑBšÑÝÑýÑÒÒÒÒÒ+Ò2ÒJÒ^ÒeÒyÒŠÒ›Ò¬Ò½ÒÎÒæÒ	õÒ
ÿÒ

Ó
+Ó
+&Ó
+1Ó
+<Ó
+GÓ$RÓ
+wÓ#‚Ó
+¦Ó±ÓÃÓ!ÛÓýÓÔ
+!Ô
,Ô	:ÔDÔ
+UÔ`ÔgÔÔ™Ô«ÔºÔÑÔìÔûÔÕ#Õ*Õ JÕ(kÕ/”ÕLÄÕÖ#Ö+2Ö^ÖAzÖ¼ÖÖÖðÖ
+×8×X×p×…×&Ÿ×Æ×å×2Ø?3Ø&sØšØ(¹ØâØ"õØÙ*8Ù6cÙ{šÙrÚx‰ÚÛÛ7˜Û:ÐÛÜ@Ü5^ÜF”ÜMÛÜ*)Ý4TÝ4‰Ý=¾Ý7üÝ44Þ1iÞU›ÞUñÞbGßbªß
à-à&Kàrà&Œàœ³à,Pá1}á'¯á$×á/üá-,â+Zâ/†â0¶â&çâ2ã8Aã*zã&¥ãÌã=ìã9*ä:dä6Ÿä6Öä$
å2å/Rå‚å5—å+Íå$ùåæ6=æ"tæ&—æ6¾æ=õæ:3ç:nçD©ç8îç9'èCaè:¥è7àè8é@QéG’é9Úé,ê0Aê#rê–ê=±ê-ïê6ëTë7pë3¨ë;Üë:ì(Sì"|ì3Ÿì%Óì?ùì.9íhí0ˆí1¹í'ëíVîjîEˆî8Îî(ïc0ï4”ï&Éï2ðï&#ðkJð*¶ð*áð4ñ]AñAŸñ?áñG!òiòOˆòbØò8;ó,tó+¡ó)ÍóY÷ó0Qô=‚ô3Àô2ôôB'õ,jõ(—õLÀõ
ö4+ö)`ö$Šö3¯ö9ãö6÷/T÷D„÷&É÷Wð÷mHøg¶øëùU
+ú\`úH½úHû8Oû%ˆû(®û&×û,þû#+ü>OüBŽüBÑüý'4ýE\ý9¢ý4Üý3þJEþ(�þ;¹þõþ0ÿDEÿ/Šÿ:ºÿ@õÿ@6Gw?¿2ÿ82Sk'¿.ç,'C6k ¢YÃ/4M5‚N¸ªI²9ü36¾j<)<fF£CêJ.OyCÉ^
4lP¡oò>b	F¡	`è	~I
+FÈ
+‚[’3î@"Mcm±7
#W
{
(‘
&º
Iá
W++ƒ5¯åú8"G$j'�9·Cñ!5!W*y/¤1Ô//60f*—0Â<ói0=šBØ=9Y-“&Á"è.:8Z:“FÎ?VUB¬(ï>=W4•#ÊOî@>LIÌ8+O8{2´9ç:!3\,�u½ 3.T.ƒ$²'×0ÿB0/s,£'Ð%ø,KCeJ©@ôJ5*€%«%Ñ<÷14 f(‡l°/<M<Š+Çó, H< 6… A¼ Aþ J@!>‹!JÊ!J"<`"<�"*Ú".#(4#l]#vÊ#AA$6ƒ$º$4Ø$0
%+>%Aj%J¬%3÷%@+&!l&#Ž&.²&Bá&F$'4k'% ':Æ'2(34(*h(9“(CÍ(C):U)T�)Jå)50*4f*6›*PÒ*.#+/R+/‚+&²+:Ù++,&@,5g,'�,0Å,5ö,3,-%`-&†-­-'Í-=õ-#3.+W.3ƒ.(·.@à.C!/5e/'›/ Ã/&ä/40g@04¨0mÝ0AK1@�1HÎ1G2K_2I«2Lõ2HB3C‹3YÏ35)40_44�4MÅ4N51b5)”5)¾5/è5)6+B67n63¦66Ú697XK7[¤7C86D8>{8=º8*ø8.#92R9[…9&á9-:,6:+c:�:8ª:ã:/þ:0.;'_;8‡;HÀ;A	<)K<=u<#³<@×<2=+K=#w=5›=<Ñ='>%6>(\>R…>?Ø>F?_?3z?1®?Dà?H%@Dn@K³@aÿ@[aAs½Ag1Bg™BBC‚DCTÇC=D!ZD-|DbªDb
E{pEgìEgTF0¼F(íF4G5KGO�G)ÑG3ûG-/H/]HH�HFÖH7IGUI+�INÉI$J2=J!pJ.’J/ÁJ+ñJ)K-GK/uK^¥KKLFPL—L"³LÖL5ñL"'M(JM$sME˜MDÞMD#NFhN_¯N^O"nO*‘O+¼O'èO;P8LP'…P'­P3ÕP>	Q-HQ5vQ,¬QIÙQ#R@R.^R/�R½R$ÝRSF S&gS!ŽS6°S5çS)TGTaT(€T©T+ÃT2ïT "U$CU#hU.ŒU.»U%êU2V3CV)wV\¡VDþVHCWDŒWLÑWXXHwX)ÀX*êX Y56Y9lY@¦Y+çY6ZmJZA¸ZgúZëb[.N\]}\MÛ\3)]=]]H›]<ä]8!^3Z^4Ž^4Ã^0ø^0)_@Z_1›_BÍ_L`A]`LŸ`8ì`+%a2Qa<„a3ÁaXõaPNb.Ÿb`Îb&/cPVc\§cXdp]dAÎd#eE4e+zeK¦e.òe<!f,^fX‹f,äfg'g;g"Sg%vgœg3¼g2ðg#h4Ch?xh@¸hWùh=Qi*�i5ºi%ðiBj%Yj4j>´j<ójC0kBtk;·k3ók^'l)†l$°l!Õl'÷l8mXmxmŠm™m!®mÐm)æm,n-=n$kn�n1£n_Õn-5o3co—o/¬o+ÜoVpI_pI©p<óp.0q._q5Žq/Äq;ôq0rCrWr0ir/šrÊr'är7s.Ds6ss'ªsÒs1êst
0t.>tmt
yt‡t%˜t\¾t;uWuiuu‚uŸu¬u	ÅuÏuáuòu,ÿu,v@vVv"rv•v(²v/Ûv/w1;w8mw#¦w'Êw2òw3%xYx;ix¥x¬x´xÉxÙxàxèxüxy&y8yKybyyy‹y©y	ÈyÒyðy
z	z"z@zRz"nz‘z¨z±z½zÁzÔzæzøz'
+{2{ O{#p{”{®{È{â{ü{|0|J| \|}|H›|1ä|#},:}Bg}Xª}a~:e~. ~7Ï~1;9(u:ž,Ù-€'4€"\€-€­€2Ì€ÿ€�$�9�P�!f�$ˆ�,­�(Ú�-‚I1‚{‚5˜‚Î‚
+ã‚Cî‚I2ƒ|ƒŽƒ–ƒžƒ
¼ƒÊƒ>Üƒ?„A[„�„/¹„+é„8…N…$d…!‰…1«…Ý…ü…+†G†[†t†
+�†Œ†B«†î†%‡&‡8‡.V‡-…‡G³‡3û‡/ˆ"NˆqˆŽˆŸˆ°ˆÂˆ$Ûˆ‰!‰?‰5Q‰‡‰	™‰£‰µ‰Ë‰ë‰Š!Š0ŠBŠXIŠ	¢Š¬Š±Š½ŠÌŠãŠÿŠ‹'‹G‹`‹€‹”‹¦‹¾‹-Ü‹
+ŒŒ.ŒBŒ\Œ'qŒ™Œ¨ŒºŒÌŒÓŒ!ÚŒüŒ:�%S�%y�Ÿ�¸�AÑ�;ŽCOŽ“Ž#­Ž,ÑŽ=þŽC<�=€�"¾�7á�<�<V�)“�5½�ó�ü�v‘*Ž‘¹‘'Ë‘ó‘’’’
+"’(-’V’'h’�’­’Å’Ý’#õ’“,1“.^“,�“.º“é“"”,)”.V”!…”1§”0Ù”2
+•,=•.j•#™•½•Ý•(ñ•/–!J–l–(‰–#²–+Ö–—,— H—i—‚—¢—¶—Ö—#õ—-˜"G˜j˜|˜�˜›˜°˜&Â˜	é˜Fó˜/:™Ej™°™-Á™Jï™M:šˆš¨š¿šÒš-ïš›*&›Q›o›ƒ›‹›A—›>Ù›œA*œ7lœB¤œ!çœ	�˜)�Â�Þ�ð�ž:ž#Rž2vž.©ž#Øž1üž9.ŸhŸuŸ‚Ÿ’ŸšŸ:³Ÿ+îŸ# > Q j ‚ ,š :Ç ¡	¡d$¡‰¡6œ¡;Ó¡;¢<K¢gˆ¢bð¢<S£1�£(Â£$ë£¤/&¤+V¤‚¤ž¤
+¸¤
+Ã¤
+Î¤Ù¤ö¤>¥<Q¥Ž¥4ª¥'ß¥$¦6,¦c¦t¦Œ¦£¦´¦Ì¦ä¦ö¦§§,§F§a§s§„§œ§`»§2¨O¨'i¨L‘¨4Þ¨7©0K©'|©¤©Ä©Ù©ë©ú©-ª+Bª+nª*šª	Åª	Ïª
+Ùª
+äªïª««$«9«T«c«x«‡«1Œ«¾«/Þ«¬-¬ >¬'_¬'‡¬&¯¬0Ö¬­%­:­C­a­9x­-²­à­,õ­a"®2„®4·®)ì®C¯EZ¯Y ¯Yú¯;T°;�°MÌ°/±5J±:€±5»±4ñ±9&²7`²9˜²DÒ²G³D_³E¤³Cê³-.´0\´4�´>Â´;µ8=µ6vµ;­µ3éµ%¶1C¶!u¶V—¶9î¶\(·A…·1Ç·?ù·:9¸7t¸>¬¸$ë¸E¹uV¹qÌ¹I>ºˆº4¥ºOÚºZ*»/…»Oµ»P¼3V¼ Š¼?«¼:ë¼&&½
+M½X½t½0�½%²½"Ø½%û½0!¾!R¾t¾�¾¨¾½¾Ê¾SÙ¾O-¿}¿,œ¿7É¿À
ÀÀ1 ÀRÀfÀyÀŒÀC©ÀOíÀ,=Á6jÁ¡Á$ÁÁ_æÁ"FÂ(iÂA’ÂÔÂ,òÂ2ÃHRÃ›Ã«Ã
+¼Ã"ÇÃ
+êÃ$õÃÄ-ÄMÄ¼cÄ¹ ÅÚÅ/ìÅÆ7ÆUÆ*uÆL Æ2íÆ- Ç)NÇ"xÇ›Ç®ÇÃÇØÇ2çÇÈ0"ÈSÈ%nÈ”È9¡ÈÛÈ<íÈ=*É3hÉ5œÉ2ÒÉ7ÊB=ÊL€ÊÍÊÞÊøÊËË$ËH+ËtË4wË&¬ËÓËÜË
+óËþË2Ì-MÌO{ÌËÌêÌ"ïÌ*Í%=ÍcÍkÍCŠÍ¤ÎÍsÎ€Î šÎL»ÎÏÏ%Ï:ÏPÏfÏ}ÏšÏ«Ï½ÏÉÏÖÏêÏEòÏ*8ÐNcÐ[²ÐÑAÑTÑsÑ,‹Ñ¸ÑÕÑ6íÑ$Ò DÒ8eÒ+žÒÊÒÜÒìÒôÒ'	Ó)1Ó([Ó„ÓœÓ°ÓÄÓØÓëÓ
þÓÔI&ÔpÔ �Ô¢ÔDÁÔPÕWÕiÕ2„Õ$·ÕÜÕüÕ5ÖEÖ!`Ö‚Ö‰Ö2‘ÖFÄÖJ×/V×F†×Í×"ß×ØØM!Ø9oØ;©Ø7åØÙ5ÙRÙaÙ,tÙ$¡ÙJÆÙ)Ú(;Ú%dÚ(ŠÚ³Ú
+ÏÚ,ÚÚÛ)!ÛKÛiÛƒÛ›Û£Û»Û)ÓÛýÛ
Ü#!ÜEÜ']Ü…Ü–Ü¬ÜÆÜãÜýÜ#	Ý%-ÝSÝpÝ‡Ý™Ý7°ÝèÝÞ%ÞCÞ]ÞrÞ„Þ—Þ«Þ¿ÞÕÞJëÞJ6ßJ�ßIÌß:àQà-pà;žà+Úà@á<Gá4„á6¹á-ðá8â5Wâ5�â8Ãâ.üâ>+ãIjãh´ãyä>—äNÖäI%ådoåYÔå0.æ;_æ8›æFÔæ/ç5Kç&�ç.¨ç-×ç.è04è3eè<™è!Öèøè!é)3éE]éZ£éVþé`UêG¶êZþêUYë.¯ë,ÞëhìjtìEßì0%í6Vík�íEùí?î&]îQ„îSÖîE*ï\pïHÍïHð#_ð<ƒð<ÀðeýðQcñ2µñ/èñ/ò4Hò=}ò9»ò0õò7&ó%^ó'„ó=¬ó6êó@!ôbô2‚ôµô,¹ô
æô
ôô
õ
õ!õ,@õ
mõ"{õžõ
­õ)»õ)åõö$ö+8ödösöxö}ö‚ö‡öŽö¡ö¨ö=®öQìö>ùOù*lù?—ùr×ùzJúeÅú2+û-^û@ŒûNÍûü6.üMeü³üµü|Óü?Pý+�ý!¼ý'Þýþ1þ3Nþ2‚þ-µþãþÿþ"ÿ“=ÿ0Ñÿ\M_$­šÒZm]Èa&WˆZà„;�À|QAÎsW„xÜ?Ua•v÷n$‰r®€!Y¢!ü	32	f	/€	L°	 ý	
+_=
+�
+³
+Ã
+Fß
+F&Fm5´#ê-2E!x3šCÎ<
;O
>‹
?Ê

+.),X(….®1Ý!01 b%ƒ%©%Ï%õIe'u!�'¿ç%%(Nn!ŽF°÷%$%J!p;’LÎA[]¹3Ø,,9-f”´Ò!ï=%O4u*ª%Õ?û$;&`*‡<²ïþ

"2,U8‚+»ç:þ491n %¾äIdDšßNüK=_�®#Á)å / P1q£;·#ó#$;#`#„¨6Á8ø17OW-\<ŠÇßä0ê4PU1Z'Œ-´âç@ì -NU[`eko>t³)¸â+ýC) jm )Ø !!!!!!4!!;!7]!•!7œ!Ô!ð!"("D"`"!|"ž"«"¼"
Í"
Û"
é"
+÷" #Q##u#~ˆ# $C($/l$Bœ$)ß$ 	%*%#@%d%$s%˜%	°%-º%&è%C&-S&/�&9±&ë&3'
<'J'5Q'8‡'VÀ'`(–x(#)3)HP),™)�Æ)4V**‹*!¶*Ø*Pø*#I+/m+4�+?Ò+:,&M,Wt,pÌ,E=-@ƒ-AÄ-".5).6_.A–.\Ø.Æ5/Æü/·Ã0+{1§1^¯2d3s3nŽ3Zý3rX4Ë4MK5`™5`ú5y[6bÕ6j87]£7“8œ•8Ÿ29ŸÒ9/r:4¢:W×:%/;<U;9’;WÌ<S$=Mx=IÆ=g>Sx>QÌ>U?^t?KÓ?\@^|@ZÛ@H6A@AsÀAo4Bd¤B|	C†C@D7GD\D&ÜDqExuEKîEE:F{€FOüFTLG_¡GdH`fHaÇHu)I^ŸI`þIt_J`ÔJ^5K^”K�óK”�LyMp�MVN>XN2—NzÊN^EOg¤O5PpBPX³PrQnQEîQ<4RZqRYÌRo&SU–S5ìS]"T_€T;àT~U9›U�ÕUucVkÙVäEWf*XL‘XOÞX<.YkYElZE²ZYøZàR[q3\o¥\ƒ]?™]’Ù]Ôl^]A_EŸ_Då_J*`¯u`U%aj{aJæaI1bp{b?ìb>,c‡kc5óc])d?‡dGÇdVe]fe[ÄeT fnuf9äfÊgÙégÓÃhÏ—i�gk�lh–lhÿlThmF½mSnFXnHŸn@èn|)o�¦oe(p@ŽpbÏpr2qs¥qxrk’rÔþr”Ósƒht?ìtZ,uŽ‡uXvfovqÖvyHwŠÂw|MxaÊxr,yŽŸyN.zL}zBÊzJ
{YX{@²{˜ó{CŒ|cÐ|d4}Ž™}((~‹QuÝZS€€®€a/‚a‘‚pó‚|dƒ�áƒ˜o„|…¯……R5†“ˆ†Ù‡ö‡“vˆÅ
+‰ûÐ‰ƒÌŠûP‹¼LŒd	�xn�‡ç�ÚoŽcJ�L®�)û�M%�Cs�f·�|‘_›‘Pû‘)L’'v’už’>“<S“D�“uÕ“oK”7»”7ó”Y+•N…•PÔ•[%–[�–bÝ–Q@—b’—Zõ—²P˜€™Y„™€Þ™Z_šhºš>#›Gb›jª›1œcGœb«œ{�pŠ�«û�e§ž?
ŸwMŸzÅŸn@ 1¯ Šá Žl¡bû¡…^¢iä¢RN£q¡£i¤u}¤gó¤c[¥u¿¥5¦B:§Y}§Y×§P1¨L‚¨ZÏ¨d*©Z�©^ê©CIªA�ªOÏª+«„K«�Ð«a¬�á¬[r­MÎ­S®tp®`å®GF¯PŽ¯üß¯\Ü°u9±u¯±Y%²*²Oª²’ú²T�³râ³rU´�È´~fµ‹åµ�q¶n·q~·Að·O2¸O‚¸×Ò¸áª¹‰Œºn»B…»^È»`'¼Hˆ¼vÑ¼ƒH½\Ì½a)¾9‹¾;Å¾[¿]¿”Ý¿`rÀHÓÀbÁUÁXÕÁU.Âœ„Â†!Ã†¨Ãq/Ä§¡Ä™IÅcãÅ\GÆk¤Æ�ÇW¡Ç]ùÇUWÈR­ÈvÉWwÉaÏÉZ1ÊQŒÊbÞÊmAËV¯ËGÌLNÌ;›ÌU×ÌY-ÍE‡ÍMÍÍcÎLÎwÌÎ€DÏXÅÏIÐ=hÐ;¦ÐkâÐÎNÑsÒ»‘ÒvMÓtÄÓ�9Ô€»Ô„<ÕxÁÕ“:Ö†ÎÖxU×§Î×vØdöØS[Ù’¯Ù’BÚfÕÚI<ÛC†Û_ÊÛL*Ü`wÜ{ØÜpTÝ~ÅÝ‘DÞ´ÖÞ»‹ßŠGà~ÒàlQá…¾áeDâ^ªâT	ãÃ^ãI"äVläUÃä^å8xå[±å2
æ\@æS�æ]ñæjOçpºç|+èN¨è‚÷è=zé¸éq8êFªêVñêmHë€¶ë^7ìC–ìIÚì‹$íu°í�&î=¨îdæîXKï˜¤ï†=ðwÄð <ñÒÝñÄ°òùuóÖoôÖFõwö•öº¨÷ˆcø;ìøN(ù¹wù¿1úàñú¾ÒûÄ‘üdVý?»ýfûýebþ‰ÈþBRÿT•ÿGêÿK2t~tómhŒÖUc‹¹[Eb¡8V=Y”WîQFU˜^î¹Mn^v'Õ.ý&,mS@ÁM	BP	z“	y
+yˆ
+{”~“E§LíT:
I�
tÙ
hNE·JýVH‡Ÿ_'U‡YÝ—77ÏCYK]¥@>D<ƒsÀ:41oU¡`÷NX:§>âJ!6lM£Oñ>AH€GÉTRf>¹XøYQD«�ð‰�œr¨…«¡œMKêE6F|5ÃmùygZá[< ß˜ €x!Äù!Ñ¾"Q�$ â$œƒ%Z &j{&€æ&hg'eÐ'h6(qŸ(n)i€)iê)tT*OÉ*j+u„+dú+w_,R×,\*-o‡-�÷-dy.¥Þ.�„/e0º{0R61š‰1–$2’»2ÀN3|4?Œ4{Ì4QH5{š5`6kw6Wã6”;7UÐ7$&8"K8)n89˜8KÒ889vW9SÎ9M":]p:\Î:q+;‰�;~'<S¦<kú<@f=|§=J$>Zo>“Ê>�^?¡ï?°‘@ŸBAâA»bBLCNkC<ºC?÷C]7Dc•DùD'E38EElE-²EOàEc0FS”F[èF$DGZiG�ÄGURH`¨H	II'IJqI¤¼IƒaJƒåJbiK\ÌK\)Ll†LUóLwIM(ÁMêM
+N\(Nb…N-èNNOneOWÔOc,PC�P'ÔPMüPJQhQCzQ¾QÛQöQUR¶iRw S"˜S?»SûS;þS:T2RT…T!šT¼TØTfìTSU&pU4—U9ÌU5VQ<VNŽVaÝVl?Wz¬WN'XRvXgÉXt1Y ¦YqÇY
+9ZDZ(QZ zZ
+›Z¦Z#³Z$×Z$üZ!!["C[2f[2™["Ì[0ï[1 \R\?e\2¥\Ø\ñ\Q]#X]A|]C¾].^1^ B^c^,g^.”^Ã^ã^Bÿ^(B_?k_A«_(í_`4`R`p`Ž`¬`/Ê`Aú`=<aszajîaNYbT¨bxýb¯vc�&ddÄdi)eu“ei	f|sfLðfo=ga­g]hLmhEºhPi:QiSŒi1ài4j6Gj2~j#±j:Õj,kY=kP—kZèksCl4·ldìl&Qmxmo�m�ÿm(�n¶n¾n&Æn"ín!o]2o^�o…ïo@upŠ¶pzAqd¼q*!rkLro¸rh(sU‘sYçs€AtMÂt)u:uUu?bu€¢u%#v3Iv}v8˜vMÑvBwobw_Òw=2x9px6ªxáxøx&y+>y&jy@‘yBÒy%zj;z¦zÄz#ãz{;#{4_{/”{Ä{ã{|’|›|
+«|¶|Ì|ä|,}.}N}3b}–}1¶}è}þ}~27~Uj~À~Ø~ì~',.M[©Â'á	€€;€)S€I}€6Ç€6þ€(5�-^�ŒŒ�‹‚„¥‚3*ƒ^^ƒ@½ƒyþƒx„kø„@d…d¥…u
+†u€†Vö†nM‡¼‡3Ó‡¾ˆVÆˆ"‰J@‰‹‰ª‰±‰¸‰Õ‰Tõ‰ JŠ?kŠ1«Š1ÝŠ+‹(;‹Jd‹=¯‹Qí‹W?ŒQ—ŒWéŒ3A�:u�Q°�WŽ?ZŽRšŽYíŽ_G�Q§�Wù�DQ�4–�Ë�Eê�V0‘1‡‘'¹‘:á‘:’NW’&¦’CÍ’9“+K“4w“¬“9É“/”F3”Nz”FÉ”'•/8•1h•/š•-Ê•`ø•Y–�h–`ê–³K—ÿ—D˜œ_˜¯ü˜9¬™/æ™-š5DšEzšÀš]ÉšC'›$k›�›£›zº›k5œ"¡œ}ÄœcB�~¦�I%ž9ož©ž#±Ÿ'ÕŸ'ýŸ+% nQ IÀ T
+¡N_¡?®¡Iî¡Q8¢Š¢£¢¼¢Ø¢6å¢j£Z‡£Tâ£7¤.Q¤&€¤%§¤VÍ¤z$¥,Ÿ¥!Ì¥�î¥%Œ¦R²¦V§V\§N³§±¨¤´¨XY©F²©=ù©>7ª*vªH¡ªMêª>8«8w«°«Ã«Ö«Fé«@0¬sq¬qå¬BW­tš­]®Mm®^»®(¯9C¯8}¯(¶¯9ß¯5°)O°)y°)£°)Í°;÷°73±)k±(•±3¾±Lò±‘?²PÑ²1"³OT³�¤³b2´k•´_µOaµ:±µ2ìµ+¶K¶3g¶[›¶Y÷¶YQ·P«·ü·¸*¸B¸)Z¸„¸“¸!¨¸!Ê¸ì¸û¸¹¹R(¹5{¹S±¹,º2º4JºJºRÊºl»YŠ»Bä»2'¼Z¼3s¼.§¼vÖ¼TM½&¢½dÉ½Ò.¾s¿au¿N×¿z&À~¡ÀÙ ÁÙúÁrÔÂ|GÃ«ÄÃopÄ]àÄq>Åm°ÅgÆ�†ÆjÇ�Ç€
È�ŽÈ�É‹¯Éˆ;Ê]ÄÊT"ËXwËYÐË{*Ì`¦ÌwÍfÍYæÍ7@ÎOxÎCÈÎœÏg©Ï¬Ðv¾Ðj5Ñr Ñ|Òc�ÒoôÒOdÓz´Ó“/Ô„ÃÔ†HÕ<ÏÕlÖƒyÖ½ýÖQ»×«
Øœ¹ØRVÙE©ÙhïÙcXÚQ¼ÚÛ)ÛGÛa\ÛQ¾ÛXÜSiÜ‚½ÜI@Ý/ŠÝ7ºÝ8òÝ(+Þ$TÞ¯yÞŒ)ßG¶ßZþßzYàÔàÖàôà{á�á£á¶á3Éáƒýá”�â_ãqvã@èãB)ä®lä8åOTåŽ¤å@3æOtæ[Äæv ç—ç ·çØç;íç)èKGè%“è=¹è4÷è_,éYŒê'æëNì6]ì?”ìHÔìhí—†í_îJ~îKÉî=ïSï#sï&—ï¾ïžÚïyðZŽðBéðU,ñ‚ñK—ñãñwùñ~qòZðòlKóf¸óoôn�ôrþô(qõ7šõÒõïõ7ö>ö�MöÝöiâöPL÷�÷9³÷í÷.øi4øažø¬ùB­ù
+ðùRûùWNúO¦úöú:ûrKû¾ûÅü2ÝüOý±`ýþ)&þ*Pþ+{þ+§þ,Óþ+ÿ,ÿ Lÿmÿ|ÿ.‘ÿÀÿo×ÿNGv–¸
ÆˆÍ4V3‹J¿8
+-Cjq=Ü<cWZ»).@o/Œ;¼=ø<6&s.šÉÝñ73©k4.Pc˜´„M	Ò	7ñ	c)
+H�
+BÖ
+&b@7£PÛ,
9[G�£q%
s—
p.|7«ãósVvfÍ‚4/·>ç"&-IawHÙ†"b©UEb`¨9	CSY,­cÚ5>3t2¨Û1î/ BP5“ÉXé5BMx0Æ5÷7-:e4 Õ/ì75T6Š)Á)ëg4}V²=	)G$q!–"¸#Û#ÿ%#%I›o‘��“+y¿89\rgÏV7 ‡Ž r!y‰!g"Xk"wÄ"o<#o¬#r$z�$›
+%Â¦%øi&b'›f(¶)Â¹)
+|*¦‡+U.,l„,^ñ,�P-dÒ-p7.S¨.Sü.ZP/`«/b0eo0\Õ0R217…1J½1U2ˆ^2†ç2£n3¢4nµ4Æ$5Äë5b°6`7²t7Å'8}í8bk9wÎ9¼F:€;C„;OÈ;�<é¦<±�=”B>l×>lD?R±?m@mr@³à@š”A^/BSŽB]âBW@C}˜CuDkŒDaøDPZEi«E’Fd¨F–
GD¤G^éGHHUMH£H¹HÏHàH/ñHE!IgI0xI©IÀI7ÖI7JFJcJ9zJ´JËJÐJÕJÚJßJæJKKnK<ÑKÚ?ÓsÝJ»V!™Ï¹äðœ·rÆÆ«–õkW6‘KÄ¾¢Îê¤Pò
3üÛKÞ¯¡?Î	éÞÇèµïIßbPò~LÝü²vš„;C0ò;Q—ñõHÊ&d¦ç
XQp�ìŸ7…·ãC0š¡<FÝÄÜŠ×E½gí8š(­›:.T­ß¾ð«‡e¸óq€—!JtÛ/7H|È®„bçRA1&ôµÐk² ×Éb|î'¢j@¿áo5u8åä$¤[$4wZ¥hÜÖewŒ#z'1�	/êYÀO~«q0<Ã¸:‰=qþ/Þ�=­‘È73ç“âcœ•
½öÑE.%
+v�‚Ø÷À”J°Â,üSÓ+t‹Ö8p£IlnjËútº"•‚I<{Òk$0�9yY§3ç“`¥dBDµ«oeOÝæ¸v¡	ŠxËvRæbÔt§ªaÏtõÎ¶˜†Ð¶fé`èº\±�e>¯.ãjS1éžóBÇÀÑåWŒÐL2¡´´9«ý-ž³a:›Ôî*-ps[U^¹:‰MD›ä™¬
+˜5AyŸ\]M�%z‚/>ÆšÙ€ÕûgÂøBåæãôù
+íÆ‚öDmÝQà‘{Z0ó¨uN
Ã³.Âwa,!£¬•U×ÁÛÿô
ìK1A›ó†
+èéùŠ& ñ@R*ª`Sü¯IG@ìŠ©ªt6	Ô‹µ†þ§€rn+¯üERŽVzÇþa~~Ÿ¡±z3®uP©RLÓ¦Êw ¤G}¼.p¡Y¥—×“ðÄXÐñVÍTÝA}6‘÷¶ã¢=csî ”8GFÌ‰øUÑ@,A1BoÞY…Sù¼¬Pƒ½—bËz·<T§Á�OŽPY²NÍ-P:mº?…(.Çþ©ÔÝÆ¾ ˜—â¶ämÎh±™˜ØàeeÁì( ¸ÒèCÌ¾'`’3�C5x:éb7-ÈÊdŠË-áS2Jà&žBÅúÅ’„%på!ÚŸcrL&µaO�hÓÛ[Ä+œ\îçôÚG„D¿®ùZkâ�iuZHiE¦’]cï?(îNW\xÔ^¹XyCkJ2ÒÒVï!Úý É†o=¦€põ;ÜùàV×ŽO›û‡*
+"nAŽíÀ§)”qJ¦Ùúè<
+Á,Ññ9,fò»Ù/ˆ–ë%‡È!ì àu¡ožë�ï~$9•ºSU§ ov¨°+;žÆøÿð­¬²œ¯6Š8
Öw®GxÞý9LP±Ï7vIü|qþÕöýÿ'@›i.�Ü˜“¾+74fä4áƒ†£¢ŒI?=ž•±™CQ"Ú$V*i+Â_…#³n>F%R]D…Ã¨qø‘Hê’»;¿:&ëí“5¸Q"úT’@ öY±‘Ô´¤˜NÞ“‡ïy
+¼¥ãí¾Á‡àÍÉœM¯(94é¼�Ž"|û™¬±º`pôdSØÊ�$�%¼Ü'Ç“j�©Ÿæñ)ƒŽ»æÌ/½s=F»¿x7~K5»Ã¼ª€öE„ò6-‰#Í’ø¿†™T½ær�+·ÓÏ(}›Eâ&lQ¬F–Ç1–³ª«I2m_xÈÑ°Ûàjƒdºw(ÅWêÕ ÍÌ@,Ë€MUn#üˆöN¦ìFXû¢çÜôË![óÅÅ^´Äˆc*ä‹,ÓM�´fFÅÖTí;Ÿiáì–3Dý)a
+K6Àš*Öÿñƒ©”¨Ï}UþUHÄ	¶ŒÕ–O#Ê]À®áß­#)ÊMõl\Â¼™ó£j1h)8º"”Nëø‰"–ðlå�¥CðŒûÙi}‹°g¿ï´lèN|÷%5³s‹0"ÕúWÉ'K¥Zƒg‚ØXÇÏ•ˆ?ågxïÂ[·ÌJ_ÚgŠÌ.cØ^ç¿—‰b|]V·ùÛ³*ý”cžÀÒþ'\v}÷{)l¢mÄ&o4Mdó[ æ¤�ålîÍ°²Ãß	°XÉÃÁ2,!e­}#4|Ð�û©fzTÿ£-~÷hDá¢ÞÏÙÌ«¨ÙÒ_˜n—ò8_��RÐªë‹É/•”ä¯ÖrÜÔn‡®‹‚kW‚ˆÈ¶ý)§\�ÁâˆÃ
 Ž„Hmœõ{ð+_È;r‡Z<�)B'…y°Ûø€`×HŒ½‰3?Î…„�Íáß²©>¸{ë¾��µA{�íƒô`¦÷ËÂÉ5>†š>uÐ[^-ù¤ß6QœL�>¬t×Õÿß­muÓ�£
îÕz#¹2¤Å0õ�£»G¸®$ãdÊYÆë%éy·ªyBê(h2ˆ´4_^ÎñâG¶ê Ø*qØ¹òússi]è’j¥{�¹]= O¹f÷Öµh	rfa½Œ	²âÒgöúWÚ�Îk¨ûZãšŸÑ^EêÙL¨‘ÿwX9$³}K„K‹Kô ¡$¡8¡L¡`¡t¡ˆ¡œ¡°¡Ä¡Ø¡ì¡¢¢(¢<¢P¢d¢x¢Œ¢¨¢¼¢Ð¢ä¢ø¢£ £4£H£d£x£Œ£¨£Ì£è£ü£¤$¤8¤T¤h¤|¤�¤¬¤À¤Ô¤è¤ü¤¥$¥8¥L¥`¥t¥�¥¬¥À¥Ô¥è¥ü¥¦$¦8¦T¦p¦Œ¦ ¦´¦È¦Ü¦ð¦§§,§@§T§h§|§�§¤§¸§Ì§à§ô§¨$¨@¨T¨h¨„¨˜¨¬¨À¨Ô¨è¨ü¨©$©8©T©p©„© ©¼©Ø©ì©ªª0ªLªhª|ª�ª¬ªÀªÔªèªüª«$«8«L«h«|«�«¬«À«Ü«ð«¬¬,¬@¬T¬h¬|¬�¬¤¬¸¬ä¬­­0­L­`­t­ˆ­œ­°­Ä­Ø­ì­®®(®<®P®d®x®Œ® ®´®Ð®ä®ø®¯ ¯4¯H¯\¯p¯Œ¯ ¯´¯Ð¯ô¯°$°8°L°`°|°�°¤°¸°Ô°è°ü°±$±8±L±`±t±ˆ±œ±¸±Ô±è±ü±²$²8²L²`²|²˜²´²È²Ü²ð²³³,³@³T³h³|³�³¤³¸³Ì³à³ô³´´0´L´h´|´�´¬´À´Ô´è´ü´µ$µ8µLµ`µ|µ˜µ¬µÈµäµ¶¶(¶D¶X¶t¶�¶¤¶¸¶Ô¶è¶ü¶·$·8·L·`·t·�·¤·¸·Ô·è·¸¸,¸@¸T¸h¸|¸�¸¤¸¸¸Ì¸à¸¹(¹’Kÿÿÿÿ´KÿÿÿÿÖK"ÿÿÿÿL ÿÿÿÿFL ÿÿÿÿ€Lÿÿÿÿ¶L ÿÿÿÿÝL5ÿÿÿÿM%ÿÿÿÿEM)ÿÿÿÿuM(ÿÿÿÿ¤M/ÿÿÿÿÚMÿÿÿÿöM'ÿÿÿÿ$Nÿÿÿÿ\N-ÿÿÿÿŠNÿÿÿÿ§N7ÿÿÿÿàNÿÿÿÿO ÿÿÿÿ3O%ÿÿÿÿpOÿÿÿÿ¤O*ÿÿÿÿÏO.ÿÿÿÿÿO)1ÿÿÿÿYP%ÿÿÿÿP9ÿÿÿÿ¹P
+2ÿÿÿÿõP"ÿÿÿÿ)QÿÿÿÿPQ9ÿÿÿÿ Q%ÿÿÿÿÓQ
+Hÿÿÿÿ'R
+/ÿÿÿÿ~R)ÿÿÿÿ¿R
+6ÿÿÿÿÿR
+>ÿÿÿÿGS
+0ÿÿÿÿ�S
+FÿÿÿÿÑS
+ÿÿÿÿT
++ÿÿÿÿHT
+ÿÿÿÿpT
+"ÿÿÿÿœT@)ÿÿÿÿU
+/ÿÿÿÿDU
+ ÿÿÿÿnU-ÿÿÿÿµU6ÿÿÿÿV6ÿÿÿÿLV
+7ÿÿÿÿ�V
+?ÿÿÿÿÖV
+Aÿÿÿÿ!W
+AÿÿÿÿlW
+ÿÿÿÿ‘W+ÿÿÿÿÉW-ÿÿÿÿX3ÿÿÿÿ7X
+-ÿÿÿÿnX(ÿÿÿÿªX
+-ÿÿÿÿáXÿÿÿÿY6ÿÿÿÿPY>ÿÿÿÿ•Y#ÿÿÿÿÀYÿÿÿÿüYÿÿÿÿ8Z
+2ÿÿÿÿtZ
+.ÿÿÿÿ¬ZFÿÿÿÿóZ
+2ÿÿÿÿ/[
+2ÿÿÿÿk[
+2ÿÿÿÿ§[
+2ÿÿÿÿã[
+2ÿÿÿÿ\
+2ÿÿÿÿ[\Fÿÿÿÿ¢\
+9ÿÿÿÿå\
+7ÿÿÿÿ&]
+9ÿÿÿÿi]Fÿÿÿÿ°]Fÿÿÿÿ÷]	2ÿÿÿÿ2^+ÿÿÿÿd^.ÿÿÿÿ™^+ÿÿÿÿË^-ÿÿÿÿ_0ÿÿÿÿN_"ÿÿÿÿ�_!ÿÿÿÿÀ_
+*ÿÿÿÿö_
+AÿÿÿÿA`
+dÿÿÿÿ¯`
+$ÿÿÿÿÝ`1ÿÿÿÿa1ÿÿÿÿKa
+ÿÿÿÿha5ÿÿÿÿ¶a&ÿÿÿÿêa=ÿÿÿÿ:b&ÿÿÿÿŽb+ÿÿÿÿÍbÿÿÿÿc]ÿÿÿÿnc!5ÿÿÿÿÅc
+ÿÿÿÿdKÿÿÿÿLd<"ÿÿÿÿªd
+ÿÿÿÿÔd$ÿÿÿÿ
eÿÿÿÿUe;ÿÿÿÿ½e?ÿÿÿÿfÿÿÿÿDf2ÿÿÿÿ~fÿÿÿÿ¯fÿÿÿÿáf=ÿÿÿÿ0gIÿÿÿÿ“g(ÿÿÿÿÑgIÿÿÿÿ4h!ÿÿÿÿjh!ÿÿÿÿšhÿÿÿÿËh+ÿÿÿÿøh=ÿÿÿÿ6i+ ÿÿÿÿƒi5ÿÿÿÿ¹i@ÿÿÿÿþi
+%ÿÿÿÿ-j
+%ÿÿÿÿ\j7ÿÿÿÿ”j-ÿÿÿÿÂjÿÿÿÿßj<ÿÿÿÿ*k-ÿÿÿÿgk(�ÿÿÿÿl
+.ÿÿÿÿTl
ÿÿÿÿcl %ÿÿÿÿ¨l
+"	ÿÿÿÿûlB#$ÿÿÿÿ„m#&ÿÿÿÿÎm;ÿÿÿÿn8ÿÿÿÿQnBOÿÿÿÿân)8ÿÿÿÿCo86ÿÿÿÿ±o'6ÿÿÿÿp<ÿÿÿÿQp\ÿÿÿÿ´pOÿÿÿÿ
+q\ÿÿÿÿmqQÿÿÿÿÅqhÿÿÿÿ4r&ÿÿÿÿariÿÿÿÿÑr(7ÿÿÿÿ0sQÿÿÿÿ‚s6ÿÿÿÿ¹s`ÿÿÿÿt:ÿÿÿÿpt2
ÿÿÿÿ¯t+:ÿÿÿÿu6?ÿÿÿÿ‹uZÿÿÿÿéuWÿÿÿÿBvRDÿÿÿÿØvTÿÿÿÿ-wzÿÿÿÿ¨w
+Yÿÿÿÿx>ÿÿÿÿhxÿÿÿÿ§x/ÿÿÿÿUyEÿÿÿÿ¶y
+•ÿÿÿÿWz
+0hÿÿÿÿûzdÿÿÿÿ~{
+gÿÿÿÿï{
+tÿÿÿÿm|
+bÿÿÿÿÙ|
+…ÿÿÿÿh}
+9/ÿÿÿÿÚ}
+Mÿÿÿÿ1~
+QÿÿÿÿŒ~
+Vÿÿÿÿì~|UÿÿÿÿÃ
+Pÿÿÿÿ€
+Aÿÿÿÿh€(\ÿÿÿÿì€j0ÿÿÿÿ†�j(ÿÿÿÿ‚
+rÿÿÿÿ”‚
+kÿÿÿÿ	ƒ
+^ÿÿÿÿqƒ
+^ÿÿÿÿÙƒ
+=ÿÿÿÿ „_
ÿÿÿÿŽ„[
ÿÿÿÿø„gÿÿÿÿ`…
+[ÿÿÿÿÅ…L'ÿÿÿÿ8†
+\ÿÿÿÿž†.5ÿÿÿÿ‡hÿÿÿÿp‡|ÿÿÿÿó‡RÿÿÿÿMˆE%ÿÿÿÿ¾ˆE%ÿÿÿÿ/‰
+kÿÿÿÿ¤‰
+WÿÿÿÿŠgÿÿÿÿmŠ
+WÿÿÿÿÎŠ
+Wÿÿÿÿ/‹
+Wÿÿÿÿ�‹
+Yÿÿÿÿó‹
+YÿÿÿÿVŒ
+Yÿÿÿÿ¹Œgÿÿÿÿ!�
+^ÿÿÿÿ‰�
+\ÿÿÿÿï�
+^ÿÿÿÿWŽgÿÿÿÿ¿Žgÿÿÿÿ'�	Yÿÿÿÿ‰�\ÿÿÿÿì�fÿÿÿÿY�]ÿÿÿÿ½�bÿÿÿÿ*‘6]ÿÿÿÿÄ‘6IÿÿÿÿC’<ÿÿÿÿœ’
+Tÿÿÿÿü’
+ÿÿÿÿ…“
+³ÿÿÿÿB”
+Nÿÿÿÿš”gÿÿÿÿ•kÿÿÿÿx•
+)ÿÿÿÿ«•7`ÿÿÿÿB–Pÿÿÿÿ –qÿÿÿÿ-—H5ÿÿÿÿº—\ÿÿÿÿ?˜#@ÿÿÿÿ¢˜³ÿÿÿÿn™;Yÿÿÿÿš
+6%ÿÿÿÿkš†ÿÿÿÿòši4ÿÿÿÿ�›
+'ÿÿÿÿ×›8ÿÿÿÿ,œ@ ÿÿÿÿ§œ4iÿÿÿÿ\�=kÿÿÿÿžGÿÿÿÿVžTÿÿÿÿÀž+1ÿÿÿÿŸ.5ÿÿÿÿŸ‡ÿÿÿÿ! )hÿÿÿÿ² 2ÿÿÿÿ¡/hÿÿÿÿš¡!^ÿÿÿÿ¢^ÿÿÿÿ‹¢3ÿÿÿÿß¢Hÿÿÿÿ)£uÿÿÿÿ¢£a1ÿÿÿÿ9¤Xÿÿÿÿ’¤mÿÿÿÿ¥
+IÿÿÿÿW¥
+Iÿÿÿÿª¥bÿÿÿÿ
¦Nÿÿÿÿ\¦! ÿÿÿÿ�¦n)ÿÿÿÿ4§8ZÿÿÿÿÆ§Cüÿÿÿÿ©
+KÿÿÿÿZ© ÿÿÿÿ|©,Hÿÿÿÿð©
+@/ÿÿÿÿ„ªnC=ÿÿÿÿr«ECÿÿÿÿ	    TLS: %pA	<corrupt: 0x%08lx>	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] +base[%4ld]  %04lx <corrupt offset: %lx>
+	[Name Pointer/Ordinal] Table	%08lx
+	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:     Ordinal  Hint  Member-Name  Bound-To
+
 
-	DLL Name: %s
+	DLL Name: %.*s
 
 
 PE File Base Relocations (interpreted .reloc section contents)
@@ -76,16 +172,16 @@ 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
 
-Function descriptor located at the start address: %04lx
-
-No reldata section! Function descriptor not decoded.
-
 Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Program Header:
@@ -95,20 +191,33 @@ 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 contents cannot be read
+
+There is an export table in %s, but it is too small (%d)
 
 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:
@@ -119,14 +228,16 @@ Virtual Address: %08lx Chunk size %ld (0
 
 WARNING: Extra data in .rsrc section - it will be ignored by Windows:
 
-[Ordinal/Name Pointer] Table
+[Ordinal/Name Pointer] Table -- Ordinal Base %ld
 
 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 +247,14 @@ 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: %3u):    *unhandled* cmd %u
+   Erroneous length
+   Error: %s min length is %u
+   Error: The compile date is truncated
+   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
    alignment  : 2**%u
    alloc (len)   : %u (0x%08x)
    alloc (len): %u (0x%08x)
@@ -149,6 +266,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 +275,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 +286,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 +294,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 +309,7 @@ ppcboot header:
    setlnum %u
    setrec %u
    signature: %.*s
+   sizeocmds:  %#lx
    structure level: %u
    symbol vector offset: 0x%08x
    symvec offset : 0x%08x
@@ -195,12 +319,12 @@ ppcboot header:
    transfer address   : 0x%08x
    vector      : 0x%08x
    version mask: 0x%08x
-  %s (len=%u+%u):
-  %s: 0x%v
+   version:    %x
+  %s (len=%u):
   %u: size: %u, flags: 0x%02x, name: %.*s
   EEOM (len=%u):
   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
+  EGSD entry %2u (type: %u, len: %u):   EMH %d (len=%u):   base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x   base_va : 0x%08x
   bitcount: %u, base addr: 0x%08x
   calls:
   chgprtoff : %5u
@@ -218,19 +342,22 @@ 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> <Unrecognised flag bits set> 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
+ GBL LIB Linkage Pairs Reference Fixups:
+ MACH-O header:
+ NOMOD NORM OVR PIC QVAL RD REL 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
- debug module table : vbn: %u, size: %u
+ UNI VEC VECEP WEAK WRT [64-bit doubles] [BE8] [FDPIC ABI supplement] [FPA float format] [LE8] [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:  and check the symbol visibility debug module table : vbn: %u, size: %u
  debug symbol table : vbn: %u, size: %u (0x%x)
+ failed to convert GOTPCREL relocation against '%s'; relink with --no-relax
  fixup info rva:  flags: 0x%04x global symbol table: vbn: %u, records: %u
  ident: 0x%08x, name: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -248,7 +375,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 +383,61 @@ 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' which may bind externally 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: %F%P: %pB(%pA): error: need linked-to section for --gc-sections
+%F%P: %pB(%s): error opening thin archive member: %E
+%F%P: %pB: copy relocation against non-copyable protected symbol `%s'
+%F%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB
+%F%P: %pB: failed to add %s to first hash
+%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap
+%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap
+%F%P: %pB: failed to allocate compact relative reloc section
+%F%P: %pB: failed to allocate memory for section `%pA'
+%F%P: %pB: failed to allocate relative reloc record
+%F%P: %pB: failed to finish relative relocations
+%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%F%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)
+%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: 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: discarded output section: `%pA'
+%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 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 PLT .sframe section
+%F%P: failed to create PLT GOT .sframe section
+%F%P: failed to create VxWorks dynamic sections
+%F%P: failed to create ifunc sections
+%F%P: failed to create second PLT .sframe section
+%F%P: failed to create the second PLT .eh_frame section
+%F%P: failed to size relative relocations
+%F%P: first_hash failed to create: %E
+%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 is not supported
+%H: %s against `%pT': error %d
+%H: %s for indirect function `%pT' unsupported
+%H: %s out of range
+%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 here
+%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 +449,140 @@ 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 %s returns an unrecognized value %x
 %H: relocation references symbol not defined in the module
 %H: relocation to `%s+%v' may have caused the error above
+%H: relocation type %u is not supported
+%H: unresolvable %s against `%pT'
+%H: unresolvable %s relocation against symbol `%s'
+%H: warning: %s unexpected insn %#x.
+%H: warning: relocation to "%s" references a different segment
 %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: note: the message above does not take linker garbage collection into account
+%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.
-%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
+%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 PDE
+%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%H: %s against `%s': error: relocation applies outside section
+%X%H: %s against `%s': error: relocation target address is odd
+%X%H: %s against `%s': internal error: unexpected relocation result %d
+%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: relocation to "%s" references a different segment
+%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(%pA): relocation is not supported
+%X%P: %pB(%pA): relocation out of range
+%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%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
+%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%pA' of %pB
+%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+%Xerror: found a total of %d inputs incompatible with BTI requirements.
+%Xerror: found a total of %d inputs incompatible with GCS requirements.
+%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 %zu is empty%pB(%pA): error: secondary reloc %zu is of an unknown type%pB(%pA): error: secondary reloc %zu references a deleted symbol%pB(%pA): error: secondary reloc %zu references a missing symbol%pB(%pA): error: secondary reloc section has non-standard sized entries%pB(%pA): error: secondary reloc section has zero sized entries%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): relocation %zu has invalid symbol index %lu%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(%pA+0x%v): relocation %s against `%s' must be used in ADD only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only
+%pB(%s): Unknown destination type (ARM/Thumb) in %pB%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 (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB
+%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB
+%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: Adjusting branch at 0x%V towards "%s" in section %s
+%pB: BE8 images only valid in big-endian mode%pB: C_STAT isn't supported by XCOFF64%pB: Cannot create stub entry '%s'%pB: Cannot handle relocation value size of %d%pB: DT_STRTAB table is corrupt%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: Number of symbols in input file has increased from %lu to %u
+%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%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: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed
+%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself%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: adjusting invalid FileAlignment%pB: adjusting invalid SectionAlignment%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 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: can't link different ABI object.%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 export internal symbol `%s`.%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot handle more than %d dynamic symbols%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: conditional branch to undefined symbol `%s' not allowed%pB: could not find output section %pA for input section %pA%pB: could not read contents of group [%u]%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 against a local symbol 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: attribute section length too small: %ld%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: expected symbol index in range 0..%lu but found local symbol with index %lu%pB: failed to extract object only section: %s%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 get symbol table in object only section: %s%pB: failed to open object only section: %s%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: 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 NumberOfRvaAndSizes%pB: invalid entry (%#x) in group [%u]%pB: invalid file to extract object only section: %s%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: mapped section %pA has non-NULL buffer%pB: misplaced XTY_LD `%s'%pB: missing import name for IMPORT_NAME_EXPORTAS for %s%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: non-canonical reference to canonical protected function `%s' in %pB%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: overflow reloc count too small%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 %#x unsupported%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 absolute symbol `%s' can not be used when making a shared object%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object%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 %s overflow 0x%lx%pB: relocation %s right shift %d error 0x%lx%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_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE%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 %s is compressed with zstd, but BFD is not built with zstd support%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %u%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 based reloc type (%u) is not supported with -z pack-relative-relocs%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: string table [%u] is corrupt%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: symbol name exceeds given max length of %d%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 compress section %s%pB: unable to create fake empty section%pB: unable to decompress section %s%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 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: unexpected type (%#x) section `%s' in group [%u]%pB: unhandled dynamic relocation against %s%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: 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 bfd relocation type %#x%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation %s against symbol `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type %s%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported swap_aux_in for storage class %#x%pB: unsupported swap_aux_out for storage class %#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 is required by -z force-bti, but this input object file lacks the necessary property note.
+%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
+%pB: warning: RVE PLT generation not supported%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up%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 %lu 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 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: 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: truncated `%s' option%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment%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: warning: win32pstatus %s of size %lu bytes is too small%pB: will not resolve runtime TLS relocation%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u%pB: wrong auxtype %#x for storage class %#x%pB: x86 ISA needed: %pB: x86 ISA used: %pB:%.8s: RVA truncated%pB:%.8s: section below image base%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 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%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s%pB[%pA]: no output section for space %pA%pcrel_lo missing matching %pcrel_hi%pcrel_lo overflow with an addend%pcrel_lo section symbol with an addend%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20%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 is defined but could not be loaded: %s%s is defined but plugin support is disabled%s is loaded but symbol "%s" is not found: %s%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s, iter %u
+  branch         %lu
+  long branch    %lu
+  plt call       %lu
+  global entry   %lu%s: BFD %s internal error, aborting at %s:%d
+%s: BFD %s internal error, aborting at %s:%d in %s
+%s: Bad ELF id: `%d'%s: ISA string cannot contain uppercase letters%s: ISA string must begin with rv32 or rv64%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: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: failed to open to extract object only section: %s%s: first ISA extension must be `e', `i' or `g'%s: invalid prefixed ISA extension `%s' ends with <number>p%s: no such symbol%s: not implemented%s: not supported%s: object size does not match that of target %s%s: prefixed ISA extension must separate with _%s: undefined version: %s%s: unknown prefixed ISA extension `%s'%s: unknown standard ISA extension or prefix class `%c'%scannot + or - base extension `%s' in %s `%s'%sinvalid ISA extension ends with <number>p in %s `%s'%sunknown ISA extension `%s' in %s `%s'%tlsdesc_lo with addend(%s): Unknown destination type (ARM/Thumb) in %pB(at bit offset %u)
 (descriptor)
+(format %c%c%c%c signature %s age %ld pdb %s)
 (no value)
 (not active)
 (not allocated)
@@ -410,48 +591,49 @@ 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-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<corrupt info> %s<corrupt string length: %#x>
+<corrupt string offset: %#lx>
+<corrupt><unknown directory type: %d>
+<unknown mask flags><unknown: %x><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBase 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
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsCopyright 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 0x%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: section %s has no contentsDWARF error: section %s is too bigDWARF 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)
+Delay Import DirectoryDescription 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 and %pB has different DSP versionError: %pB and %pB has different FPU ABIError: %pB and %pB has different VDSP versionError: %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 supported only by GNU and FreeBSD targetsGNU_RETAIN section is supported only by GNU and FreeBSD targetsGOT 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]Internal error: unreachable.LAM_U48 propertyLAM_U57 propertyLOGICAL_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         NORMALNOTE: This behaviour is deprecated and will be removed in a future version of the linkerName 				NoneNumber in:
 OPR_ADD (add)
 OPR_AND (logical and)
 OPR_ASH (arithmetic shift)
@@ -467,29 +649,28 @@ 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
+Private flags = 0x%lx : 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 togetherRL78 reloc divide by zeroRL78 reloc stack overflow/underflowR_AMD64_IMAGEBASE with __ImageBase undefinedR_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)
-STA_LW (stack longword) 0x%08x
-STA_MOD (stack module)
+STA_LW (stack longword)STA_MOD (stack module)
 STA_PQ (stack psect base + offset)
-STA_QW (stack quadword) 0x%08x %08x
-STC_BOH_GBL (store cond BOH at global addr)
+STA_QW (stack quadword)STC_BOH_GBL (store cond BOH at global addr)
 STC_BOH_PS (store cond BOH at psect + offset)
 STC_BSR_GBL (store cond BSR at global addr)
 STC_BSR_PS (store cond BSR at psect + offset)
@@ -524,28 +705,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 sectionsTOC overflow during stub generation; try -mminimal-toc when compilingTable Addresses
+The addend isn't allowed for R_RISCV_GOT_HI20The 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
+USRSTACKUnable to find the stub entry targeting %sUnable to link input file: %sUnable to load DLL.UnknownUnknown: %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]\%pB: warning: %s BLX instruction targets %s function '%s'__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 function`xtheadvector' is conflict with the `v' extension`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extensiona 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: %#lxbfd_mach_o_read_section_64: overlarge alignment value: %#lxbfd_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 %pBc' or `zcac' or `zcdc' or `zcfcan'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 find default versions of the ISA extension `%s'cannot read DMT
 cannot read DMT header
 cannot read DMT psect
 cannot read DST
@@ -561,80 +745,86 @@ ppcboot header:
 cannot read GST
 cannot read GST record
 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
+cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)class: %u, dtype: %u, length: %u, pointer: 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 reloc recordcorrupt vms valuecorrupted GST
+could 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]d' and `c', or `d' and `zcdd' and `zfad' or `zdinxdangerous 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)
+division by zerodst_define_location %u too largedynamic index information not availabledynamic relocation in read-only sectiondynreloc 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 adding attributeerror in %pB(%pA); no .eh_frame_hdr table will be createderror in %pB(%pA); no .sframe 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 has a LOAD segment with RWX permissionserror: %pB has a TLS segment with execute permissionerror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %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 alignederror: %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 property (0x%x) 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: SB relative addressing conflicts with use of R9error: %pB: XLEN of input (%u) doesn't match output (%u)error: %pB: cannot mix rf16 with full register set %pBerror: %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: mis-matched ISA string to merge '%s' and '%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: %pB: unsupported XLEN (%u), you might be using wrong emulationerror: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack sectionerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: conflicting CPU architectures %s vs %s in %pBerror: creating an executable stack because of -z execstack command line optionerror: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spaceerror: 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 %pBexecutablef' and `c', or `f' and `zcff' or `zfinxfailed 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 truncatedfinal size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spacefurther 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 definedhhidden 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
+input SFrame sections with different abi prevent .sframe generationinput SFrame sections with different format versions prevent .sframe generationinternal 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 internal: internal: unreachable INSN_CLASS_*invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid dynamic indexinvalid 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 grouplinker stubs in %u groupsliteralliteral relocation occurs for an external symbollocal symbol index too biglong branch stub `%s' offset overflowm' or `zmmulmach-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
-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
+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 dynamic index information availableno 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 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 overflowplugin framework: out of file descriptors. Try using fewer objects/archives
+pointer
+private flags = %lxprivate flags = %lx:private flags = %lx: private flags = 0x%lxprivate flags = 0x%lx:prolog: bkpt address 0x%08x
+protected symbolprotected symbol q' and `zfaq' or `zqinxrecbeg: 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
-reserved cmd %drtnbeg
+recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'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 against `%s' has faulty GOT type 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: %sreserved cmd %drtnbeg
 rtnend: size 0x%08x
-septyp, name: %.*s
+rv%d does not support the `q' extensionrv%d does not support the `zcf' extensionrv%de does not support the `h' extensionsection 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 too large; lower small-data size limit (see option -G)smctr' or `ssctrsom_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 supported only by GNU and FreeBSD targetssymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targetssystem 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
-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
+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 valuesv' or `zve64d' or `zve64f' or `zve32fv' or `zve64x' or `zve32xv850 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 LOAD segment with RWX permissionswarning: %pB has a TLS segment with execute permissionwarning: %pB has a corrupt string table indexwarning: %pB has a program header with invalid alignmentwarning: %pB has a section extending past end of filewarning: %pB has a segment extending past end of filewarning: %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(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: %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 memory sealing size: 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: unknown RISCV ABI 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: %s: missing .note.GNU-stack section implies executable stackwarning: %s: requires executable stack (because the .note.GNU-stack section is executable)warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: --plt-localentry is incompatible with power10 pc-relative codewarning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised.warning: NOTE: size discrepancies can cause real problems.  Investigation is advised.warning: 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 normal symbol `%s' in %pB is smaller than %u used by the common definition in %pBwarning: 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: enabling an executable stack because of -z execstack command line optionwarning: file %pB's arch flag %s conflict with target %s,set target arch flag to %swarning: file %pB's arch flag %s conflicts with target ck%s, using %swarning: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+warning: found a total of %d inputs incompatible with BTI requirements.
+warning: found a total of %d inputs incompatible with GCS requirements.
+warning: 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: privileged spec version 1.9.1 can not be linked with other spec versionswarning: 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: unrecognised arch name '%#x'warning: 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
+x ISA extension `%s' must be set with the versionsyesyou are not allowed to define %s in a scriptzbb' or `zbkbzbc' or `zbkczcb' and `zbazcb' and `zbbzcb' and `zmmul', or `zcb' and `mzcmp' is incompatible with `d/zcd' extensionzfh' and `zfazfh' and `zfa', or `zvfh' and `zfazfh' or `zhinxzfh' or `zvfhzfhmin' and `d', or `zhinxmin' and `zdinxzfhmin' and `q', or `zhinxmin' and `zqinxzfhmin' or `zhinxminzicfiss' and `zcmopzihintntl' and `c', or `zihintntl' and `zcazknd' or `zknezvbbzvbczvkbzvkgzvknedzvknha' or `zvknhbzvksedzvkshzvl*b extensions need to enable either `v' or `zve' extensionProject-Id-Version: bfd-2.43.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2025-01-19 12:19+0000
+PO-Revision-Date: 2025-03-02 16:32+0100
 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
-	Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° %08lx ÐºÐ¾Ð´Ð½Ðµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ (ÑƒÑ‡Ð¸Ñ‚Ñ™Ð¸Ð²Ð°/Ð°ÐºÑ‚ÑƒÐµÐ»Ð½Ð°) %08lx/%08lx
-	Ð½Ðµ-Ð¢Ð›Ð¡: %A	Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %4d Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %4x [%4lx] %s	vma:  Ð�Ð°Ñ˜Ð°Ð²Ð°/Ð ÐµÐ´Ð½Ð¸ Ð�Ð°Ð·Ð¸Ð² Ñ‡Ð»Ð°Ð½Ð° Ð¡Ð²ÐµÐ·Ð°Ð½-Ð·Ð°
+X-Bugs: Report translation errors to the Language-Team address.
+X-Generator: Poedit 3.5
+	    Ð¢Ð›Ð¡: %pA	<Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ: 0x%08lx>	Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° 			Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° 	                %08lx
+	Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)
+	Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½Ð°Ð·Ð¸Ð²Ð° Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)
+	Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ€ÐµÐ´Ð½Ð¾Ð³ â€žrvaâ€œ (0x%lx) Ð¸Ð»Ð¸ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° (0x%lx)
+	Ð¢Ð°Ð±ÐµÐ»Ð° Ð½Ð°Ð·Ð¸Ð²Ð° Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° 			Ð¢Ð°Ð±ÐµÐ»Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° 				[%4ld] +base[%4ld]  %04lx <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: %lx>
+	Ð¢Ð°Ð±ÐµÐ»Ð° [Ð�Ð°Ð·Ð¸Ð² Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°/Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]	%08lx
+	Ð½Ðµ-Ð¢Ð›Ð¡: %pA	Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %4d Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %4x [%4lx] %s	vma:     Ð ÐµÐ´Ð½Ð¸  Ð�Ð°Ñ˜Ð°Ð²Ð°  Ð�Ð°Ð·Ð¸Ð²_Ñ‡Ð»Ð°Ð½Ð°  Ð¡Ð²ÐµÐ·Ð°Ð½-Ð·Ð°
+
 
-	Ð”Ð›Ð› Ð½Ð°Ð·Ð¸Ð²: %s
+	â€žDLLâ€œ Ð½Ð°Ð·Ð¸Ð²: %.*s
 
 
 ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ ÐŸÐ• Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž.relocâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°)
@@ -651,17 +841,17 @@ Plural-Forms: nplurals=3; plural=(n%10==
 
 ÐžÑ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸ 0x%x
 
+Ð˜Ð·Ð»Ð°Ð· Ð·Ð° â€ž%sâ€œ
+
 Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº:
 
+Ð“Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸
+
 ÐŸÐ¾Ð¼Ð¾Ñ›Ð½Ð¾ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ
 
 Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° â€”â€” ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° %ld
 
-ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸: %04lx
-
-Ð�ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°! ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½.
-
-ÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
+ÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°:
 
@@ -670,20 +860,33 @@ Plural-Forms: nplurals=3; plural=(n%10==
 Ð¢Ð°Ð±ÐµÐ»Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)
 
 
+Ð¢Ð°Ð±ÐµÐ»Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)
+
 Ð¢Ð°Ð±ÐµÐ»Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ)
 
 Ð¢Ð°Ð±ÐµÐ»Ðµ ÑƒÐ²Ð¾Ð·Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)
 
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx
+
+
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°
+
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð³Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸
+
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð¿Ñ€Ð²Ð¸ Ð¿Ð¾Ñ‚Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð³Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸
 
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx
 
-ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ñ‚Ð°Ð½Ðµ Ñƒ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸
+
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð° (%d)
 
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸
 
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx
 
+ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
+
 ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸
 
 Ð£Ð¿ÑƒÑ‚Ð° Ð¸Ð·Ð´Ð°ÑšÐ°:
@@ -694,14 +897,16 @@ Plural-Forms: nplurals=3; plural=(n%10==
 
 Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: Ð’Ð¸ÑˆÐ°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñƒ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ â€“ Ð’Ð¸Ð½Ð´Ð¾ÑƒÐ· Ñ›Ðµ Ð¸Ñ… Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€Ð¸Ñ‚Ð¸:
 
-Ð¢Ð°Ð±ÐµÐ»Ð° [Ð ÐµÐ´Ð½Ð¸/Ð�Ð°Ð·Ð¸Ð² Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°]
+[Ð ÐµÐ´Ð½Ð¸/Ð�Ð°Ð·Ð¸Ð² ÐŸÐ¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡] Ð¢Ð°Ð±ÐµÐ»Ð° â€“ Ð ÐµÐ´Ð½Ð¸ ÐžÑ�Ð½Ð¾Ð²Ð° %ld
 
 Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€ž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 +916,14 @@ 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, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %3u):    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%uâ€œ
+   ÐŸÐ¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°
+   Ð“Ñ€ÐµÑˆÐºÐ°: %s Ð½Ð°Ñ˜Ð¼. Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ %u
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð”Ð°Ñ‚ÑƒÐ¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ° Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ
+   Ð“Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð¾
    Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ : 2**%u
    Ð´Ð¾Ð´ÐµÐ»Ð° (Ð´ÑƒÐ¶Ð¸Ð½Ð°)  : %u (0x%08x)
    Ð´Ð¾Ð´ÐµÐ»Ð° (Ð´ÑƒÐ¶Ð¸Ð½Ð°): %u (0x%08x)
@@ -724,6 +935,8 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð»Ð°Ñ†  : %.*s
    Ð´Ð¾Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐµ ÐºÐ¾Ð´Ð°: %u
    Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ° Ð¿Ñ€Ð°Ð²Ð°: %.*s
+   Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° Ñ†Ð¿Ñ˜:   %#lx%s
+   Ð²Ñ€Ñ�Ñ‚Ð° Ñ†Ð¿Ñ˜:      %#lx (%s)
    declfile: Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð¸Ð´ Ð¿Ð¾Ñ™Ð°: %u
    deflines %u
    Ð½Ð°Ð·Ð¸Ð² ÐµÐ½Ñ‚Ð¸Ñ‚ÐµÑ‚Ð°  : %.*s
@@ -731,7 +944,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 +955,7 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð½Ð°Ð·Ð¸Ð² Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ°: %.*s
    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°Ðº: %.*s
    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x %08x
+   Ð¼Ð°Ð³Ð¸Ñ˜Ð°:         %#lx
    Ð½Ð°Ñ˜Ð². Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð±ÐµÐ»ÐµÐ¶ÐµÑšÐ°: %u
    Ð½Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð°           : %.*s
    Ð½Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð°           : %.*s
@@ -747,6 +963,7 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð½Ð°Ð·Ð¸Ð²           : %.*s
    Ð½Ð°Ð·Ð¸Ð²         : %.*s
    Ð½Ð°Ð·Ð¸Ð²        : %.*s
+   Ð±Ñ€Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸:      %#lx
    Ð±Ñ€Ð¾Ñ˜ â€žcondâ€œ Ð¿Ð°Ñ€Ð¾Ð²Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u
    Ð½Ð°Ð·Ð¸Ð² Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°  : %.*s
    Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: 0x%08x
@@ -761,6 +978,7 @@ Plural-Forms: nplurals=3; plural=(n%10==
    setlnum %u
    setrec %u
    Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ�: %.*s
+   Ð²ÐµÐ»Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸:     %#lx
    Ð½Ð¸Ð²Ð¾ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ         : %u
    Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: 0x%08x
    Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð¸Ð¼Ð²ÐµÐº-Ð° : 0x%08x
@@ -770,12 +988,12 @@ Plural-Forms: nplurals=3; plural=(n%10==
    Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð°          : 0x%08x
    Ð²ÐµÐºÑ‚Ð¾Ñ€     : 0x%08x
    Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ: 0x%08x
-  %s (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u+%u):
-  %s: 0x%v
+   Ð¸Ð·Ð´Ð°ÑšÐµ:         %x
+  %s (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):
   %u: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ð½Ð°Ð·Ð¸Ð²: %.*s
   EEOM (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):
   EGSD (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):
-  â€žEGSDâ€œ ÑƒÐ½Ð¾Ñ� â€ž%2uâ€œ (Ð²Ñ€Ñ�Ñ‚Ð°ype: %u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u):   EMH %u (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):   Ð¾Ñ�Ð½Ð¾Ð²Ð°: 0x%08x %08x, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x, Ð·Ð°ÑˆÑ‚Ð¸Ñ‚Ð°: 0x%08x   base_va : 0x%08x
+  â€žEGSDâ€œ ÑƒÐ½Ð¾Ñ� â€ž%2uâ€œ (Ð²Ñ€Ñ�Ñ‚Ð°: %u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u):   EMH %d (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):   Ð¾Ñ�Ð½Ð¾Ð²Ð°: 0x%08x %08x, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x, Ð·Ð°ÑˆÑ‚Ð¸Ñ‚Ð°: 0x%08x   base_va : 0x%08x
   Ð±Ñ€Ð¾Ñ˜ Ð±Ð¸Ñ‚Ð°: %u, Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x
   Ð¿Ð¾Ð·Ð¸Ð²Ð¸:
   chgprtoff : %5u
@@ -793,19 +1011,22 @@ 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
+ GBL LIB Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ ÑƒÐ¿ÑƒÑ‚Ðµ Ð¿Ð°Ñ€Ð¾Ð²Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°:
+ â€ž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â€œ
- Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°: Ð²Ð±Ð½: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u
+ UNI VEC VECEP WEAK WRT [doubles de 64 bits] [BE8] [â€žFDPIC ABIâ€œ Ð´Ð¾Ð´Ð°Ñ‚Ð°Ðº] [â€žFPAâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°] [LE8] [â€ž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-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… ÐµÐ½Ñ‚Ð¸Ñ‚ÐµÑ‚Ð°:  Ð¸ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð°Ð²Ð° Ð²Ð¸Ð´Ñ™Ð¸Ð²Ð¾Ñ�Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°: Ð²Ð±Ð½: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u
  Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° : Ð²Ð±Ð½: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u (0x%x)
+ Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žGOTPCRELâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° â€ž%sâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ñ�Ð° â€ž--no-relaxâ€œ
  Ð¿Ð¾Ð¿Ñ€Ð°Ð²ÐºÐ° Ð¸Ð½Ñ„Ð¾ Ñ€Ð²Ð°:  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ : 0x%04x Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: Ð²Ð±Ð½: %u, Ð·Ð°Ð¿Ð¸Ñ�Ð¸: %u
  ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ: 0x%08x, Ð½Ð°Ð·Ð¸Ð²: %.*s
  ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ: 0x%08x, Ð²ÐµÑ€Ð·Ð¸Ñ˜Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð°: 0x%08x, Ð¿Ð¾ÐºÐ»Ð¾Ð¿Ñ™ÐµÐ½Ð¾ ÐºÑ‚Ñ€Ð»: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¸Ð¼Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°: %u
@@ -823,7 +1044,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 +1052,61 @@ 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â€œ ÑƒÐ½Ð¾Ñ�: %F%P: %pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½-Ð½Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° â€ž--gc-sectionsâ€œ
+%F%P: %pB(%s): Ð³Ñ€ÐµÑˆÐºÐ° Ð¾Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¾Ð³ Ñ‡Ð»Ð°Ð½Ð° Ð°Ñ€Ñ…Ð¸Ð²Ðµ: %E
+%F%P: %pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¼Ð½Ð¾ÑˆÐºÐ° Ð·Ð° Ð½ÐµÑƒÐ¼Ð½Ð¾Ð¶Ð¸Ð²Ð¸ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ
+%F%P: %pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¼Ð½Ð¾ÑˆÐºÐ° Ð·Ð° Ð½ÐµÑƒÐ¼Ð½Ð¾Ð¶Ð¸Ð²Ð¸ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ
+%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´Ð°Ð¼ â€ž%sâ€œ Ñƒ Ð¿Ñ€Ð²Ð¸ Ñ…ÐµÑˆ
+%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ 32-Ð±Ð¸Ñ‚Ð½Ñƒ â€žDT_RELRâ€œ Ð±Ð¸Ñ‚Ð¼Ð°Ð¿Ñƒ
+%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ 64-Ð±Ð¸Ñ‚Ð½Ñƒ â€žDT_RELRâ€œ Ð±Ð¸Ñ‚Ð¼Ð°Ð¿Ñƒ
+%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ñ�Ð°Ð¶ÐµÑ‚Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°
+%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ
+%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð·Ð°Ð¿Ð¸Ñ� Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°
+%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð²Ñ€ÑˆÐ¸Ð¼ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°
+%F%P: %pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ˜Ðµ Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½
+%F%P: %pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð°Ð¶ÐµÑ‚Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð¾: Ð½Ð¾Ð²Ð° (%lu) != Ñ�Ñ‚Ð°Ñ€Ð° (%lu)
+%F%P: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ â€ž%pAâ€œ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð±ÐµÐ· â€ž--enable-non-contiguous-regionsâ€œ.
+%F%P: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ â€ž%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: Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð°: â€ž%pAâ€œ
+%F%P: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ð° Ñ˜ÐµÐ´Ð½Ð°ÐºÐ¾ÑˆÑ›Ñƒ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ â€ž%pBâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ; Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-fPIEâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° â€ž-pieâ€œ
+%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: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ PLT â€ž.sframeâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ PLT GOT â€ž.sframeâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žVxWorksâ€œ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐµ Ð¾Ð´ÐµÑ™ÐºÐµ
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žifuncâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð´Ñ€ÑƒÐ³Ð¸ PLT â€ž.sframeâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð´Ñ€ÑƒÐ³Ð¸ â€žPLT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº
+%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°
+%F%P: â€žfirst_hashâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ�Ðµ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸: %E
+%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â€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
+%H: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d
+%H: â€ž%sâ€œ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%pTâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
+%H: â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°
+%H: â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼
+%H: â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð¾Ð¼ Ð¾Ð´Ñ�Ñ‚Ñ€Ð°ÑšÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°
+%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d
+%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¾Ð²Ð´Ðµ
+%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 +1118,140 @@ 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: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð´Ð°Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%xâ€œ
 %H: â€žÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñƒ
 %H: â€žÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%s+%vâ€œ Ñ˜Ðµ Ð¼Ð¾Ð¶Ð´Ð° Ð¿Ñ€Ð¾ÑƒÐ·Ñ€Ð¾ÐºÐ¾Ð²Ð°Ð»Ð¾ Ð³Ð¾Ñ€ÑšÑƒ Ð³Ñ€ÐµÑˆÐºÑƒ
+%H: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%uâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°
+%H: â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ
+%H: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ
+%H: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%#xâ€œ.
+%H: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
 %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: Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð°: Ð¿Ð¾Ñ€ÑƒÐºÐ° Ð¸Ð·Ð½Ð°Ð´ Ð½Ðµ ÑƒÐ·Ð¸Ð¼Ð° Ð·Ð±Ð¸Ñ€ÐºÑƒ Ñ’ÑƒÐ±Ñ€Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð½Ð°Ð»Ð¾Ð³
+%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â€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ.
-%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â€œ Ñ˜Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¾
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° â€žDT_TEXTRELâ€œ Ð¼Ð¾Ð³Ñƒ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž%sâ€œ
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ â€žPDEâ€œ
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ â€žPIEâ€œ
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ
+%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð¸ Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð¼Ð¾Ð³Ñƒ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°
+%X%H: %s Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÑƒÑ˜Ðµ Ð²Ð°Ð½ Ð¾Ð´ÐµÑ™ÐºÐ°
+%X%H: %s Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ°: Ð°Ð´Ñ€ÐµÑ�Ð° Ð¼ÐµÑ‚Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð°
+%X%H: %s Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d
+%X%H: Ð¿Ð¾Ð·Ð¸Ð² â€ž@localâ€œ Ð·Ð° i-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ
+%X%H: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð³Ñ€Ð°Ð½Ðµ Ð¸Ð·Ð¼ÐµÑ’Ñƒ ISA Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ñƒ â€žJALXâ€œ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°
+%X%H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ
+%X%H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°
+%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(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾
+%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°
+%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%pB: Ð³Ñ€ÐµÑˆÐºÐ°: BTI Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z force-btiâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°.
+%X%pB: Ð³Ñ€ÐµÑˆÐºÐ°: GCS Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z gcsâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°.
+%X%pB: Ð³Ñ€ÐµÑˆÐºÐ°: GCS Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z gcsâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°. Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°Ñ‡ Ð½ÐµÑ›Ðµ Ð¼Ð¾Ñ›Ð¸ Ð´Ð° Ð¾Ð¼Ð¾Ð³ÑƒÑ›Ð¸ GCS Ð¸Ð»Ð¸ Ñ›Ðµ Ð¾Ð´Ð±Ð¸Ñ‚Ð¸ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ Ð¾Ñ�Ð¸Ð¼ Ð°ÐºÐ¾ Ñ�Ð²Ðµ Ð·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ Ð½Ðµ Ð±ÑƒÐ´Ñƒ Ð¸Ð¼Ð°Ð»Ðµ GCS Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð°ÑšÐµ.
+%Xâ€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿ÑƒÑ‚Ð½Ð¾ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ: Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñ˜Ðµ Ñƒ Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ
+%XÐ³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° GCS Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.
+%XÐ³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d ÑƒÐ»Ð°Ð·Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° BTI Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.
+%XÐ³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d ÑƒÐ»Ð°Ð·Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° GCS Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.
+%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): Ð³Ñ€ÐµÑˆÐºÐ°: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° %zu Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ %zu Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÑˆÑ‚Ð°Ñ˜ %zu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð±Ñ€Ð¸Ñ�Ð°Ð½ Ñ�Ð¸Ð¼Ð±Ð¾Ð»%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÑˆÑ‚Ð°Ñ˜ %zu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð¸Ð¼Ð° ÑƒÐ½Ð¾Ñ�Ðµ Ð½ÐµÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð¸Ð¼Ð° ÑƒÐ½Ð¾Ñ�Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ%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): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%zuâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %lu%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(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ â€žADDâ€œ
+%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ â€žADDâ€œ Ð¸Ð»Ð¸ â€žMOVâ€œ
+%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ â€žADDâ€œ, â€žSUBâ€œ Ð¸Ð»Ð¸ â€žMOVâ€œ
+%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ â€žLEAâ€œ
+%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¼ CALL Ñ�Ð° â€ž%sâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼
+%pB(%s): Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¾Ð´Ñ€ÐµÐ´Ð¸ÑˆÑ‚Ð° (ARM/Thumb) Ñƒ â€ž%pBâ€œ%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 (Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%v, Ð¸Ð½Ñ„Ð¾: 0x%v) Ð·Ð° â€ž%sâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ
+%pB: %s (Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%v, Ð¸Ð½Ñ„Ð¾: 0x%v, Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº: 0x%v) Ð·Ð° â€ž%sâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ
+%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: Ð”Ð¾Ñ‚ÐµÑ€ÑƒÑ˜ÐµÐ¼ Ð³Ñ€Ð°Ð½Ñƒ Ð½Ð° 0x%V Ð¿Ñ€ÐµÐ¼Ð° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ
+%pB: â€žBE8â€œ Ñ�Ð»Ð¸ÐºÐµ Ñ�Ñƒ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸%pB: â€žC_STATâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žXCOFF64â€œ-Ð¾Ð¼%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ð´ %d%pB: DT_STRTAB Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð°%pB: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼%pB: â€žGNU_MBINDâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žsh_infoâ€œ Ð¿Ð¾Ñ™Ðµ: %d%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8- Ð¸Ð»Ð¸ 16-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° â€žISRâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°: Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°; Ñ‚ÐµÐºÑƒÑ›Ð° %u Ð±Ð°Ñ˜Ñ‚Ð°%pB: Ð‘Ñ€Ð¾Ñ˜ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ ÑƒÐ»Ð°Ð·Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ñ�Ðµ Ð¿Ð¾Ð²ÐµÑ›Ð°Ð¾ Ñ�Ð° %lu Ð½Ð° %u
+%pB: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð¿ÑˆÑ‚ÐµÐ¼ â€žELFâ€œ-Ñƒ (EM: %d)%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ðµ Ð¾Ð´Ð½Ð¾Ñ�Ð¸ Ð½Ð° â€žSBâ€œ Ð°Ð»Ð¸ â€ž__c6xabi_DSBT_BASEâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾%pB: â€žTLSâ€œ Ð¼ÐµÑ�Ð½Ð¸ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ ÐºÐ¾Ð´ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°%pB: â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð½Ð¸Ñ�Ñƒ Ñ�ÑƒÑ�ÐµÐ´Ð½Ð¸:%pB: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾ â€žTLSâ€œ Ð¿Ñ€ÐµÐ»Ð°Ð· Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð¿Ñ€Ð¸ 0x%v Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ
+%pB: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° â€ž%sâ€œ Ð¸Ð¼Ð° â€žR_TLSMLâ€œ-Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÐºÐ¾Ñ˜Ðµ Ð½Ðµ Ñ†Ð¸Ñ™Ð° Ð½Ð° Ñ�ÐµÐ±Ðµ Ñ�Ð°Ð¼Ð¾Ð³%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: Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ñ™Ð°Ð¼ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ%pB: Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ñ™Ð°Ð¼ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð´ÐµÑ™ÐºÐ°%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ Ð½Ð¸Ñ�ÐºÐµ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° Ð½Ðµ-Ð½Ð¸Ñ�ÐºÐµ (Ð±Ñ€Ð¾Ñ˜ %d)%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑˆÐ°Ð¼ â€žFDPICâ€œ Ð¸ Ð½Ðµ-â€žFDPICâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°%pB: ÑƒÐ²ÐµÐ·ÐµÐ½ Ñ˜Ðµ Ð»Ð¾Ñˆ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d%pB: Ð»Ð¾Ñˆ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ%pB: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ%pB: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %d%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%pAâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ð¿Ð»ÑƒÑ� Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%pAâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ža.outâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ðµ Ñ�Ð° â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€žRVEâ€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¼ Ð¼ÐµÑ‚Ð¾Ð¼%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ â€žABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚.%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð·Ð° Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ %d, %d Ð±Ð°Ñ˜Ñ‚Ð°
+%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ â€žGOTâ€œ ÑƒÐ½Ð¾Ñ�Ðµ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð²ÐµÐ·ÐµÐ¼ ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ.%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ñ�Ð°Ð¶ÐµÑ‚Ð¸Ð¼ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¸Ð¼ Ð�Ð»Ñ„Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð¾Ñ†Ð°, Ð¸Ð»Ð¸ â€žobjZâ€œ, Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð½ÐµÑ�Ð°Ð¶ÐµÑ‚Ðµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²Ð¸ÑˆÐµ Ð¾Ð´ %d Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%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: ÑƒÑ�Ð»Ð¾Ð²Ð½Ð° Ð³Ñ€Ð°Ð½Ð° Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð·Ð° ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð³Ñ€ÑƒÐ¿Ðµ [%u]%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: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ %pA
+%pB: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ%pB: Ñ„ÑƒÐ½ÐºÑ†Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð½Ð°%pB: Ñ„ÑƒÐ½ÐºÑ†Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ð·Ð»Ð°Ð·%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žABIâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð½ÐµÐ±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ˜ Ð»Ð¾ÐºÐ°Ñ†Ð¸Ñ˜Ð¸%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žPHDRâ€œ Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²ÐµÐ½ â€žLOADâ€œ Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ¾Ð¼%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð½Ð°Ð³Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° %d Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ðµ â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº: %#llx%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°: %ld%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žSTM32L4XXâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñ�Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð°Ñ˜Ñƒ Ð¸Ð·Ð²Ð°Ð½ ÐºÑ€Ð°Ñ˜Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ 835769 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ 843419 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð·Ð° â€ž%sâ€œ; Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½ Ñƒ Ñ€Ð°Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð½Ðµ-ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° %d ÑƒÐºÑ™ÑƒÑ‡ÑƒÑ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¸/Ð¸Ð»Ð¸ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žsearch_nds32_elf_blankâ€œ Ð¸Ð·Ð²ÐµÑˆÑ‚Ð°Ð²Ð° Ð¾ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ñ‡Ð²Ð¾Ñ€Ñƒ%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€žCOMDATâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚%pB: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ 0..%lu Ð°Ð»Ð¸ Ð½Ð°Ñ’Ð¾Ñ… Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð·Ð²ÑƒÑ‡ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº %d%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð²ÐµÐ·Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº %d%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ ÑƒÐ²Ð¾Ð·Ð½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°%pB: ÐºÐ¾Ð±Ð½Ð¾: Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ½Ð¸ Ð¿Ñ€Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°%pB: ÐºÐ»Ð°Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° â€ž%sâ€œ%pB: â€žgotoffâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: â€žgpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%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: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð±Ñ€Ð¾Ñ˜ Ð Ð²Ð° Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ� (%#x) Ñƒ Ð³Ñ€ÑƒÐ¿Ð¸ [%u]%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð° Ð¸Ð·Ð²Ð»Ð°Ñ‡ÐµÑšÐµ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s%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: Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð½Ðµ-ÐŸÐ Ð�Ð—Ð�Ð£ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ%pB: Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ â€žXTY_LDâ€œ â€ž%sâ€œ%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð°Ð·Ð¸Ð² ÑƒÐ²Ð¾Ð·Ð° Ð·Ð° â€žIMPORT_NAME_EXPORTASâ€œ Ð·Ð° â€ž%sâ€œ%pB: ÑƒÐ³Ð½ÐµÐ¶Ñ’ÐµÐ½Ð¾ â€žOMIT_FPâ€œ Ñƒ â€ž%pAâ€œ%pB: Ð½ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð´ÑƒÐ³Ð¾Ð³ %d Ð±Ð°Ñ˜Ñ‚Ð°%pB: Ð½ÐµÐ¼Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° 0
+%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° ÑƒÐ²Ð¾Ð·Ð½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ%pB: Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¸Ð·Ð´Ð°ÑšÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%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: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¼Ð°Ð»Ð¸%pB: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð»Ð°Ð±Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ˜Ðµ Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡Ð°Ðº Ð·Ð° Ñ€ÑƒÐºÐ¾Ð²Ð°ÑšÐµ â€žltoâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¾Ð¼%pB: Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð±ÐµÐ· â€ž-fPICâ€œ?%pB: Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½%pB: Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: â€ž%sâ€œ Ñƒ â€ž%pAâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð½Ðµ-Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°: (Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾) Ñƒ â€ž%pAâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%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â€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ð¸Ð»Ð¸ Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž%sâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ â€žRV32â€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ â€žRV64â€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ x32%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ ÐºÐ¾Ñ˜Ð° Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ð²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð¿Ð¾Ñ™Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¿ÑƒÑšÐ°Ð²Ð° 0x%lx%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð´ÐµÑ�Ð½Ð¸ Ð¿Ð¾Ð¼Ð°Ðº %d Ð³Ñ€ÐµÑˆÐºÐ° 0x%lx%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žR_386_GOTOFFâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ %s â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€žR_LARCH_32â€œ Ð·Ð° Ð½Ðµ-Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ â€žELFCLASS64â€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð¸Ð»Ð¸ IPE%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: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð·Ð°Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½ Ñ�Ð° â€žzstdâ€œ, Ð°Ð»Ð¸ BFD Ð½Ð¸Ñ˜Ðµ Ð¸Ð·Ð³Ñ€Ð°Ñ’ÐµÐ½ Ñ�Ð° â€žzstdâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ¾Ð¼%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žVTENTRYâ€œ ÑƒÐ½Ð¾Ñ�%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð´ÐµÐ»Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ %u%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: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð½Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (%u) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð° â€ž-z pack-relative-relocsâ€œ%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸ â€ž%sâ€œ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð°%pB: Ð½Ð¸Ñ�ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ð½ÑƒÐ»Ð¾Ð¼ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€žILFâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB(: Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½Ð¸Ñ�ÐºÐµ [%u] Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð°%pB: Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð°%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ñ†Ñ�ÐµÐºÑ‚Ð¾Ñ€Ð° â€ž%dâ€œ%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ ÐºÐ»Ð°Ñ�Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%dâ€œ%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð°Ð½%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ (Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾)%pB: Ð½Ð°Ð·Ð¸Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ¼Ð°ÑˆÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ñƒ Ð½Ð°Ñ˜Ð²ÐµÑ›Ñƒ Ð´ÑƒÐ¶Ð¸Ð½Ñƒ Ð¾Ð´ %d%pB: ÑƒÐ·Ð¸Ð¼Ð°ÑšÐµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ â€ž%sâ€œ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ%pB: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)%pB: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%pA)%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d)%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %d (>= %d)%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %u%pB: â€žtpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð°ÐºÑƒÑ˜ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð»Ð°Ð¶Ð½Ð¸ Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ñ�Ð¿Ð°ÐºÑƒÑ˜ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%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: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ â€žCOMDATâ€œ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ°%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð¸Ð¼Ð°Ñ˜Ñƒ Ð²Ð¸ÑˆÐµ Ð¾Ð´ Ñ˜ÐµÐ´Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ñ�Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ%pB: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° ÑƒÐ¿ÑƒÑ‚Ð° ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ%pB: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð° â€žR_PPC64_TOCSAVEâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°ÑšÐµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%uâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° [%#x] Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ð³Ñ€ÑƒÐ¿Ð¸ [%u]%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žsparcâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ðµ â€ž%luâ€œ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð° Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð¾Ð±Ñ€Ð°Ñ’Ð¸Ð²Ð°ÑšÐ° Ð¿Ð¸Ñ�Ð°ÑšÐ°%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ð°Ð²ÐµÐ·Ð½Ð¾Ð³ â€žARCâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°%pB: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° [%#x] Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%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: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ð¾ÐºÐ»Ð°Ð¿Ð°ÑšÐµ â€ž%#xâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¸ Ð½Ðµ-â€žPICâ€œ Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° â€žIFUNCâ€œ â€ž%sâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€ž%s â€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€ž%#xâ€œ%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð¸Ð·Ð²ÐµÐ·ÐµÐ½Ð°: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ ÑƒÐ²ÐµÐ·ÐµÐ½Ð°: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %#x%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žswap_aux_inâ€œ Ð·Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð½Ñƒ ÐºÐ»Ð°Ñ�Ñƒ â€ž%#xâ€œ%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žswap_aux_outâ€œ Ð·Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð½Ñƒ ÐºÐ»Ð°Ñ�Ñƒ â€ž%#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: warning: %pA: line number overflow: %#x > 0xffff%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%s BLXâ€œ Ñ†Ð¸Ñ™Ð° Ð½Ð° â€ž%sâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: BTI Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z force-btiâ€œ, Ð°Ð»Ð¸ Ð¾Ð²Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°.
+%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žCOMDATâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: GCS Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z gcsâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°.
+%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: GCS Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z gcsâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°. Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°Ñ‡ Ð½ÐµÑ›Ðµ Ð¼Ð¾Ñ› Ð´Ð° Ð¾Ð¼Ð¾Ð³ÑƒÑ›Ð¸ GCS Ð¸Ð»Ð¸ Ñ›Ðµ Ð¾Ð´Ð±Ð¸Ñ‚Ð¸ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ Ð¾Ñ�Ð¸Ð¼ Ð°ÐºÐ¾ Ñ�Ð²Ðµ Ð·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ Ð½Ðµ Ð±ÑƒÐ´Ñƒ Ð¸Ð¼Ð°Ð»Ðµ GCS Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð°ÑšÐµ.
+%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRVE PLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_RISCV_SUB_ULEB128â€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð¼, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ñ‚Ðµ binutils-Ð¾Ð¼ 2.42 Ð¸Ð»Ð¸ Ð²ÐµÑ›Ð¸Ð¼%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð»Ð°Ð±Ð¾ â€žTLSâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð° Ð¸ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ Ñ€Ð°Ð´Ð¸Ñ‚Ð¸ ÐºÐ°Ð¾ ÑˆÑ‚Ð¾ Ñ�Ðµ Ð¾Ñ‡ÐµÐºÑƒÑ˜Ðµ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ â€ž%sâ€œ %u Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð´Ñ€ÐµÐ´Ð¸Ð¼ Ñ†Ð¸Ñ™Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ñ‚Ð²Ñ€Ñ’ÑƒÑ˜ÐµÐ¼ 0xffff Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°, Ð±ÐµÐ· Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐ°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¾ Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ€ÐµÐ´Ð° Ð·Ð° â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ ÑƒÐ½Ð¾Ñ�Ñƒ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° %d%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %lu Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°%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: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° Ð½Ðµ-â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð½Ðµ-Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿ÐµÑ‚Ñ™Ð° Ñƒ Ð·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð²Ð¸ÑˆÐµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ %u%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð²Ð¸ÑˆÐµ Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ %u%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ñ‚Ð°Ñ€Ð¸Ñ˜Ðµ Ð¸Ð·Ð´Ð°ÑšÐµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°, Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ñ�Ð° Ñ‚ÐµÐºÑƒÑ›Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ Ð°Ð»Ð°Ñ‚Ð°%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žSDA_BASEâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žSTM32L4XXâ€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žVFP11â€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð²ÐµÐ»Ð¸ÐºÐ° Ð·Ð° â€žmmoâ€œ, Ð²ÐµÑ›Ð° Ð¾Ð´ 65535 32-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… Ñ€ÐµÑ‡Ð¸: %d.  Ð¡Ð°Ð¼Ð¾ â€žMainâ€œ Ð±Ð¸Ñ›Ðµ Ð´Ð°Ñ‚Ð¾.
+%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ñƒ â€žthumb-1â€œ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð° Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€ž%sâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð½Ð¸Ñ˜ÐµÐ´Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½Ð° â€žPT_GNU_RELROâ€œ Ð¿Ð¾Ð´ÐµÐ¾Ðº%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÑƒÐ½Ð¾Ñ�Ñƒ â€žGOTâ€œ%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ñƒ â€žflags2â€œ Ð¿Ð¾Ñ™Ñƒ â€ž.MIPS.abiflagsâ€œ-Ð° (0x%lx)%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žwin32pstatus %sâ€œ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ %lu Ð±Ð°Ñ˜Ñ‚Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¼Ð°Ð»Ð¾%pB: Ð½ÐµÑ›Ñƒ Ñ€ÐµÑˆÐ¸Ñ‚Ð¸ Ð²Ñ€ÐµÐ¼Ðµ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°%pB: â€žwin32pstatus NOTE_INFO_MODULEâ€œ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ %lu Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¼Ð°Ð»Ð¾ Ð´Ð° Ð±Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ð»Ð¾ Ð½Ð°Ð·Ð¸Ð² Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ %u%pB: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° â€žauxâ€œ Ð²Ñ€Ñ�Ñ‚Ð° %#x Ð·Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð½Ñƒ ÐºÐ»Ð°Ñ�Ñƒ %#x%pB: x86 ISA Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾: %pB: x86 ISA Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸: %pB:%.8s: â€žRVAâ€œ Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¾%pB:%.8s: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ñ�Ð¿Ð¾Ð´ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ñ�Ð»Ð¸ÐºÐµ%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: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ¿ÑƒÑ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%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â€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸%pB:(%pA+%#lx): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž%sâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž%s%sâ€œ%pB[%pA]: Ð½ÐµÐ¼Ð° Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° Ð·Ð° Ñ€Ð°Ð·Ð¼Ð°Ðº â€ž%pAâ€œâ€ž%pcrel_loâ€œ-Ñƒ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€ž%pcrel_hiâ€œâ€ž%pcrel_loâ€œ Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%pcrel_loâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼â€ž%pcrel_loâ€œ Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° â€žR_RISCV_GOT_HI20â€œâ€ž%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â€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð°Ð»Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸: %sâ€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡ÐºÐ° Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½Ð°â€ž%sâ€œ Ñ˜Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ð½Ð¾ Ð°Ð»Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾: %sâ€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñƒ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ñƒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼ â€ž%pAâ€œâ€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾â€ž%sâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº Ð·Ð° â€ž.eh_frame sdata4â€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ%s, Ð¿Ð¾Ð½Ð°Ð²Ñ™Ð°ÑšÐµ %u
+  Ð³Ñ€Ð°Ð½Ð°          %lu
+  Ð´ÑƒÐ³Ð° Ð³Ñ€Ð°Ð½Ð°     %lu
+  â€žpltâ€œ Ð¿Ð¾Ð·Ð¸Ð²    %lu
+  Ð¾Ð¿ÑˆÑ‚Ð¸ ÑƒÐ½Ð¾Ñ�     %lu%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° â€žBFD %s â€œ Ð³Ñ€ÐµÑˆÐºÐ°, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð½Ð° â€ž%s:%dâ€œ
+%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° â€žBFD %sâ€œ Ð³Ñ€ÐµÑˆÐºÐ°, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð½Ð° â€ž%s:%dâ€œ Ñƒ â€ž%sâ€œ
+%s: Ð›Ð¾Ñˆ ELF Ð¸Ð´: â€ž%dâ€œ%s: ISA Ð½Ð¸Ñ�ÐºÐ° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ‚Ð¸ Ð²ÐµÐ»Ð¸ÐºÐ° Ñ�Ð»Ð¾Ð²Ð°%s: ISA Ð½Ð¸Ñ�ÐºÐ° Ð¼Ð¾Ñ€Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð¸ Ñ�Ð° â€žrv32â€œ Ð¸Ð»Ð¸ â€žrv64â€œ%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: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¸%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸%s: Ð½Ð¸Ñ�Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð´Ð° Ð¸Ð·Ð²ÑƒÑ‡ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s%s: Ð¿Ñ€Ð²Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ â€žeâ€œ, â€žiâ€œ Ð¸Ð»Ð¸ â€žgâ€œ%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ñ�Ð° <Ð±Ñ€Ð¾Ñ˜>p%s: Ð½ÐµÐ¼Ð° Ñ‚Ð°ÐºÐ²Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°%s: Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾%s: Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾%s: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ñ†Ð¸Ñ™Ð° â€ž%sâ€œ%s: Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° Ñ€Ð°Ð·Ð´Ð²Ð¾Ñ˜Ð¸Ñ‚Ð¸ Ñ�Ð° â€ž_â€œ%s: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ: %s%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð¸Ð»Ð¸ ÐºÐ»Ð°Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° â€ž%câ€œ%sÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° + Ð¸Ð»Ð¸ - Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ â€ž%sâ€œ Ñƒ %s â€ž%sâ€œ%sÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ñ�Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ñ�Ð° <Ð±Ñ€Ð¾Ñ˜>p Ñƒ %s â€ž%sâ€œ%sÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ Ñƒ %s â€ž%sâ€œâ€ž%tlsdesc_loâ€œ Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼(%s): Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¾Ð´Ñ€Ð´Ð¸ÑˆÑ‚Ð° (ARM/Thumb) Ñƒ â€ž%pBâ€œ(Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð±Ð¸Ñ‚Ð° %u)
 (Ð¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº)
+(Ð·Ð°Ð¿Ð¸Ñ� %c%c%c%c Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ� %s Ñ�Ñ‚Ð°Ñ€Ð¾Ñ�Ñ‚ %ld Ð¿Ð´Ð± %s)
 (Ð±ÐµÐ· Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸)
 (Ð½Ð¸Ñ˜Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾)
 (Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¾)
@@ -985,48 +1260,49 @@ 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â€œ Ð½Ð¸Ñ˜Ðµ-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>
+<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¼Ð°Ñ�ÐºÐµ><Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %x><Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾>â€ž@pltoffâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð¡Ð›Ð˜ÐšÐ�_ÐžÐ¡Ð�ÐžÐ’Ð•            â€žBFDâ€œ â€ž%sâ€œ Ñ‚Ð²Ñ€Ð´ÑšÐ° Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð° â€ž%sâ€œ:%dÐ”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ñ�Ð½Ð¾Ð²Ðµ [.reloc]Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° Ñ�Ð²ÐµÐ·Ð°Ð“Ñ€Ð°Ð½Ð¸Ñ†Ðµ:
+â€žCACHEâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: CLIÐ—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¦Ð›Ð  Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°ÐœÐ“Ð Ð—Ð�ÐšÐ‰Ð£Ð§Ð�Ð’Ð�ÐŠÐ•_ÐšÐ›Ð�Ð¡Ð¢Ð•Ð Ð� Ð‘Ð ÐžÐˆÐ�Ð§Ð˜                 Ð¦ÐŸÐˆ                     CTL_AUGRB (Ð¿Ð¾Ð²ÐµÑ›Ð°Ð²Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°) %u
 CTL_DFLOC (Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ Ð¼ÐµÑ�Ñ‚Ð¾)
 CTL_SETRB (Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°)
 CTL_STKDL (Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ¾Ð¼ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð¾)
 CTL_STLOC (Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð° Ð¼ÐµÑ�Ñ‚Ð¾)
-Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²Ð°
+Coolidge (kv3) V1 32 Ð±Ð¸Ñ‚Ð°Coolidge (kv3) V1 64 Ð±Ð¸Ñ‚Ð°Coolidge (kv3) V2 32 Ð±Ð¸Ñ‚Ð°Coolidge (kv3) V2 64 Ð±Ð¸Ñ‚Ð°Coolidge (kv4) V1 32 Ð±Ð¸Ñ‚Ð°Coolidge (kv4) V1 64 Ð±Ð¸Ñ‚Ð°Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²Ð°
 ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.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â€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´Ñ€ÐµÐ´Ð±Ñƒ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ðµ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ 0Ã—%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â€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ð¸ÑˆÑ‚Ð°â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðºâ€ž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â€œ Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° â€žDSPâ€œ Ð¸Ð·Ð´Ð°ÑšÐ°Ð“Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ðµ â€žFPU ABIâ€œÐ“Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° â€žVDSPâ€œ Ð¸Ð·Ð´Ð°ÑšÐ°Ð“Ñ€ÐµÑˆÐºÐ°: â€ž%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â€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�Ð°Ð¼Ð¾ Ð“Ð½Ñƒ Ð¸ Ð¤Ñ€Ð¸Ð‘Ð¡Ð” Ð¼ÐµÑ‚Ð°Ð¼Ð°â€žGNU_RETAINâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�Ð°Ð¼Ð¾ Ð“Ð½Ñƒ Ð¸ Ð¤Ñ€Ð¸Ð‘Ð¡Ð” Ð¼ÐµÑ‚Ð°Ð¼Ð°â€ž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â€œ]Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð¸Ð¶Ð½Ð¾.â€žLAM_U48â€œ propertyâ€žLAM_U57â€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾Ð›ÐžÐ“Ð˜Ð§ÐšÐ˜_Ð�Ð�Ð—Ð˜Ð’Ð˜           Ð�Ð°Ð·Ð¸Ð² Ñ˜ÐµÐ·Ð¸ÐºÐ° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°
+Ð”ÑƒÐ¶Ð¸Ð½Ð°          = 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,27 +1320,26 @@ 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â€œ
-ÐšÑ€Ð°Ñ˜ Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d]   = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
-Ð”ÑƒÐ¶Ð¸Ð½Ð° Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = 0x%.8lx (%ld)
-ÐžÐ´ÐµÑ™Ð°Ðº Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d] = 0x%.8lx (%ld)
+ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð° 			%ld
+â€ž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 â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ð´ÐµÑ™ÐµÐ½Ðµ Ñ�Ð»Ð¸ÐºÐµ
-Ð¡Ð¢Ð�Ð‘Ð˜Ð›Ð�Ðž           STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ° Ð¿Ð¾Ñ€ÐµÑ’ÐµÑšÐ°)
+ÐŸÑ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx: â€žRL78 ABIâ€œ Ñ�ÑƒÐºÐ¾Ð±: â€žG10â€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° â€ž%pBâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÐ²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð° â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼ â€ž%pBâ€œâ€žABI RL78â€œ Ñ�ÑƒÐºÐ¾Ð±: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ â€ž%pBâ€œ Ñ�Ð° â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼ â€ž%pBâ€œâ€žRL78â€œ Ñ�ÑƒÐºÐ¾Ð± Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ðµ Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµâ€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð´ÐµÐ»Ð¸ Ð½ÑƒÐ»Ð¾Ð¼Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ/Ð¿Ð¾Ñ‚ÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° â€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°R_AMD64_IMAGEBASE Ñ�Ð° __ImageBase Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾â€ž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 (Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)
-STA_LW (Ð´ÑƒÐ³Ð° Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) 0x%08x
-STA_MOD (Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)
+STA_LW (Ð´ÑƒÐ³Ð° Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)STA_MOD (Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)
 STA_PQ (Ð¾Ñ�Ð½Ð¾Ð²Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)
-STA_QW (Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) 0x%08x %08x
-STC_BOH_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBOHâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸)
+STA_QW (Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ° Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)STC_BOH_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBOHâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸)
 STC_BOH_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBOHâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÑƒ + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)
 STC_BSR_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBSRâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸)
 STC_BSR_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° â€žBSRâ€œ ÑƒÑ�Ð»Ð¾Ð²Ð° Ð½Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÑƒ + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)
@@ -1099,28 +1374,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â€œÐ¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ð¾Ð´ÐµÑ™Ð°ÐºÐ°ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ°; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð°
+Ð¡Ð°Ð±Ð¸Ñ€Ð°Ðº Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ð·Ð° â€žR_RISCV_GOT_HI20â€œÐŸÐ¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ñƒ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°ÐºÐ’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ ÑƒÐ½Ð¾Ñ�Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°
 Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð½Ð¸Ñ‚Ð¸ [.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Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° â€ž%sâ€œÐ�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ ÑƒÐ»Ð°Ð·Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ: %sÐ�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ DLL.Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %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-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, [Ñ‡Ð¸Ñ˜Ð¸ Ð½Ð°Ð·Ð¸Ð² Ñ˜Ðµ Ð¸Ð·Ð³ÑƒÐ±Ñ™ÐµÐ½]\%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%s BLXâ€œ Ñ†Ð¸Ñ™Ð° Ð½Ð° â€ž%sâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œÐ¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° â€ž__tls_get_addrâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð°â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð½ÑƒÐ»Ð° Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½Ðµ ÑƒÐ»Ð°Ð·Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒâ€žxtheadvectorâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµÐ¼ â€žvâ€œâ€žzfinxâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµÐ¼ â€žf/d/q/zfh/zfhminâ€œâ€ž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: Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€Ð°Ð²Ð°ÑšÐ°: %#lxbfd_mach_o_read_section_64: Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€Ð°Ð²Ð°ÑšÐ°: %#lxbfd_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â€œcâ€œ Ð¸Ð»Ð¸ â€žzcacâ€œ Ð¸Ð»Ð¸ â€žzcdcâ€œ Ð¸Ð»Ð¸ â€žzcfÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð³Ñ€Ð°Ð½Ñƒ Ñƒ â€žJALXâ€œ Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜ÑƒÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ñ�ÐºÐ¾Ðº Ñƒ â€žJALXâ€œ Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜ÑƒÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€žEMHâ€œ Ñƒ Ð¿Ñ€Ð²Ð¾Ð¼ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ
+Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð¸Ð·Ð´Ð°ÑšÐ° Ð·Ð° ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDSTâ€œ
@@ -1136,60 +1414,73 @@ Plural-Forms: nplurals=3; plural=(n%10==
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žGSTâ€œ
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�
 Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€ž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
+Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€ÐµÑˆÐ¸Ð¼ â€žR_LARCH_PCREL20_S2â€œ Ð·Ð° Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ñ�Ð»Ð°Ð± Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ Ð²Ð°Ð½ [-2048, 2048)ÐºÐ»Ð°Ñ�Ð°: %u, Ð´-Ð²Ñ€Ñ�Ñ‚Ð°: %u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡: 0x%08x
+Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€ž%sâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ â€ž%pBâ€œÐ¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEEOMâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº â€“ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ° %d: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° (%#x)Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ° %d: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº: ÑšÐµÐ³Ð¾Ð²Ð¾ â€žpsindxâ€œ Ð¿Ð¾Ñ™Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº: ÑšÐµÐ³Ð¾Ð²Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEIHDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº â€“ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°Ð½Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€žETIRâ€œ Ñ�Ð½Ð¸Ð¼Ð°ÐºÐ¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° â€žvmsâ€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGSTâ€œ
+Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__ctbpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__epâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__gpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ñ�Ð»Ð¸ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%sâ€œÐ¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=XGATE]dâ€œ Ð¸ â€žcâ€œ, Ð¸Ð»Ð¸ â€ždâ€œ Ð¸ â€žzcddâ€œ Ð¸ â€žzfadâ€œ Ð¸Ð»Ð¸ â€žzdinxÐ¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ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â€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¸Ð½Ð´ÐµÐºÑ�Ð° Ð½Ð¸Ñ�Ñƒ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµÐ³Ñ€ÐµÑˆÐºÐ° Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° â€ž%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â€œ Ñ‚Ð°Ð±ÐµÐ»Ð°Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€ž%pB(%pA)â€œ; Ð½ÐµÑ›Ðµ Ð±Ð¸Ñ‚Ð¸ Ð½Ð°Ð¿Ñ€Ð°Ð²Ñ™ÐµÐ½Ð¾ â€ž.sframeâ€œÐ³Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° â€ž%sâ€œ: %sÐ³Ñ€ÐµÑˆÐºÐ° Ñ‡Ð¸Ñ‚Ð°ÑšÐ° Ð²Ñ€Ñ�Ñ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ð¸Ð· Ð»Ð¸Ñ‡Ð½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° ÐµÐ»Ñ„-Ð°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¼Ð¾Ð¶Ðµ Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð³Ð¾Ñ€ÑšÑƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚ Ð·Ð° Ð¿Ð¾Ð´Ð°Ñ‚ÐºÐµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð° Ð´Ð° Ñ�Ñƒ Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð¸Ñ�ÐºÑ™ÑƒÑ‡Ð¸Ð²Ð¾ Ñƒ Ð´Ð¾ÑšÐ¾Ñ˜ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð£Ð§Ð˜Ð¢Ð�Ðˆ Ñ�Ð° Ð¾Ð²Ð»Ð°ÑˆÑ›ÐµÑšÐ¸Ð¼Ð° Ð¿Ð¸Ñ�Ð°ÑšÐ° Ð¸ Ð±Ñ€Ð¸Ñ�Ð°ÑšÐ°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¢Ð›Ð¡ Ð¿Ð¾Ð´ÐµÐ¾Ðº Ñ�Ð° Ð¾Ð²Ð»Ð°ÑˆÑ›ÐµÑšÐµÐ¼ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ˜Ðµ Ð²ÐµÑ› Ñƒ Ð·Ð°Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ â€žBE8â€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žAPCS-%dâ€œ, Ð´Ð¾Ðº Ñ†Ð¸Ñ™Ð½Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žAPCS-%dâ€œÐ³Ñ€ÐµÑˆÐºÐ°: â€ž%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: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ (0x%x) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: 0x%x>Ð³Ñ€ÐµÑˆÐºÐ°: %pB: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ x86 Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ (0x%x) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: 0x%x>Ð³Ñ€ÐµÑˆÐºÐ°: %pB: ISA Ð½Ð¸Ñ�ÐºÐ° ÑƒÐ»Ð°Ð·Ð° (%s) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ (%s)Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ â€žSBâ€œ Ð°Ð´Ñ€ÐµÑ�Ð¸Ñ€Ð°ÑšÐµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žR9â€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: â€žXLENâ€œ Ð½Ð¸Ñ�ÐºÐ° ÑƒÐ»Ð°Ð·Ð° (%u) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ (%u)Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑˆÐ°Ð¼ â€žrf16â€œ Ñ�Ð° Ð¿ÑƒÐ½Ð¸Ð¼ Ñ�ÐºÑƒÐ¿Ð¾Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° â€ž%pBâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð£ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%c/%câ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð± Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð± Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° â€ž%sâ€œ: â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žR9â€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° ISA Ð½Ð¸Ñ�ÐºÐ° â€ž%sâ€œ.  ÐŸÑ€Ð²Ð¾ Ñ�Ð»Ð¾Ð²Ð¾ Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ â€žiâ€œ Ð¸Ð»Ð¸ â€žeâ€œ Ð°Ð»Ð¸ Ð´Ð¾Ð±Ð¸Ñ… â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð° ISA Ð½Ð¸Ñ�ÐºÐ° Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%sâ€œ Ð¸ â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¿Ñ€Ð¾Ð´Ð°Ð²Ñ†Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ ÐºÐ¾Ñ˜Ð¸ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð°Ð»Ð°Ñ‚Ð½Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾Ð·Ð½Ð°ÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€ž%d, %sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð·Ð½Ð°ÐºÐ¾Ð¼ â€ž%d, %sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�Ñ‚Ð°Ñ€Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð°Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�ÐµÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ðµ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° â€ž%sâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ðµ Ñ�Ð° â€ž%pBâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žXLENâ€œ (%u), Ð¼Ð¾Ð¶Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜ÑƒÐ³Ñ€ÐµÑˆÐºÐ°: %s: Ð¾ÐºÐ¸Ð´Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð³ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (Ñ˜ÐµÑ€ Ð¸Ð¼Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ¸Ð² â€ž.note.GNU-stackâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº)Ð³Ñ€ÐµÑˆÐºÐ°: %s: Ð¾ÐºÐ¸Ð´Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð³ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ˜ÐµÑ€ Ð½ÐµÐ¼Ð° â€ž.note.GNU-stackâ€œ Ð¾Ð´ÐµÑ™Ð°ÐºÐ³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÐ²ÐµÐ¶ÐµÐ¼ â€ž%pBâ€œ Ñ�Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð¼ â€ž%pBâ€œ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€ÐµÐ³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %sÐ³Ñ€ÐµÑˆÐºÐ°: Ñ�ÑƒÐºÐ¾Ð±Ñ™ÐµÐ½Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° â€ž%sâ€œ Ð¸ â€ž%sâ€œ Ñƒ â€ž%pBâ€œÐ³Ñ€ÐµÑˆÐºÐ°: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð¸Ð·Ð²Ñ€ÑˆÐ¸Ð²Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ð·Ð±Ð¾Ð³ â€ž-z execstackâ€œ Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ Ð»Ð¸Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸Ð³Ñ€ÐµÑˆÐºÐ°: ÐºÑ€Ð°Ñ˜ÑšÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žuleb128â€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ 0x%lx Ñƒ â€ž%pAâ€œ Ð¸Ð· â€ž%pBâ€œ Ð¿Ñ€ÐµÐ¼Ð°ÑˆÑƒÑ˜Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ð²Ð¸ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð³Ñ€ÐµÑˆÐºÐ°: â€ž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â€œÐ¸Ð·Ð²Ñ€ÑˆÐ½Ð°fâ€œ Ð¸ â€žcâ€œ, Ð¸Ð»Ð¸ â€žfâ€œ Ð¸ â€žzcffâ€œ Ð¸Ð»Ð¸ â€žzfinxÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ Ð·Ð° Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žHI16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð½Ñ�Ñ‚Ð°Ð»Ð¸Ñ€Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œÐ½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ñƒ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž.fixupâ€œ-Ð°Ð·Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜Ðµ Ð½ÐµÑ˜Ð°Ñ�Ð°Ð½Ð·Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¾ÐºÑ€ÑšÐµÐ½Ð°ÐºÑ€Ð°Ñ˜ÑšÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žuleb128â€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ 0x%lx Ñƒ â€ž%pAâ€œ Ð¸Ð· â€ž%pBâ€œ Ð¿Ñ€ÐµÐ¼Ð°ÑˆÑƒÑ˜Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ð²Ð¸ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð±ÑƒÐ´ÑƒÑ›Ð° ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐ° Ð¾ â€žFDEâ€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÑƒ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð° Ð¾Ð´Ð±Ð°Ñ†Ð¸Ð²Ð°ÑšÐµ â€ž.eh_frame_hdrâ€œ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ˜ÐµÐ¾Ð¿ÑˆÑ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° â€ž%sâ€œÑ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾hÑ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ñƒ â€ž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
+ÑƒÐ»Ð°Ð·Ð½Ð¸ â€žSFrameâ€œ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ â€žabiâ€œ-ÐµÐ¼ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð°Ñ˜Ñƒ â€ž.sframeâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµÑƒÐ»Ð°Ð·Ð½Ð¸ â€žSFrameâ€œ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¸Ð·Ð´Ð°ÑšÐ¸Ð¼Ð° Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð°Ñ˜Ñƒ â€ž.sframeâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€ž%sâ€œÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð³Ñ€Ð°Ð½Ð°ÑšÐµ/Ñ�ÐºÐ¾Ðº Ð½Ð° Ð½ÐµÐ¿Ð°Ñ€Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�ÑƒÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð³Ñ€ÐµÑˆÐºÐ° Ð¾Ð¿Ð°Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%sâ€œ Ñ�Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾Ð¼ â€ž%sâ€œ Ñ˜Ðµ Ð´Ð°Ð»Ð¾ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÑƒÐ¼ÑšÐ¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð° Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.got.locâ€œÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚: Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ñ˜Ðµ %lu != max %lu; Ð¿Ñ€Ð¸Ñ˜Ð°Ð²Ð¸Ñ‚Ðµ Ð¾Ð²Ñƒ Ð³Ñ€ÐµÑˆÐºÑƒÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐµ: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð¸Ð¶Ð½Ð° â€žINSN_CLASS_*â€œÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€ž%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â€œmâ€œ Ð¸Ð»Ð¸ â€žzmmulmach-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
-Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° Ð¾ÐºÑ€ÑƒÐ¶ÐµÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð°
-Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð½Ð°ÐºÐ¾Ð½ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð¿Ñ€ÐµÐºÑ€Ð¸Ð²Ð°ÑšÐ°Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lxÐ¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx:Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx: Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ =%x:Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lxÐ¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx:Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð±ÐºÐ¿Ñ‚ Ð°Ð´Ñ€ÐµÑ�Ð° 0x%08x
-Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð°: Ð½Ð°Ð·Ð¸Ð²: %.*s
+Ð½Ð°Ð·Ð¸Ð²: [Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %08lx Ð´ÑƒÐ¶Ð¸Ð½Ð° %d]: Ð¸Ð·Ð²Ð¾Ñ€Ð½Ð°Ð½Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚Ð¸Ð³Ð»Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾ ÑƒÐ»Ð°Ð·Ð½Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°:Ð½ÐµÐ½Ð¸Ñ˜ÐµÐ´Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œÐ½ÐµÐ¼Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¸Ð½Ð´ÐµÐºÑ�Ð°Ð½ÐµÐ¼Ð° Ð³Ñ€ÐµÑˆÐºÐµÐ½ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð½Ð¸Ñ… Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð½ÐµÐ¼Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð½Ð¸Ð· â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð½
+Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ñƒ Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œÐ½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°Ð½Ðµ-Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°Ñ˜ÑƒÑ›Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° 0x%v Ð¿Ð»ÑƒÑ� Ð½Ð°Ñ˜Ð²ÐµÑ›Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° 0x%v Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ðµ Ð¼ÐµÑ�Ð½Ð¾ Ñ�Ð¿Ñ€ÐµÐ¼Ð¸ÑˆÑ‚Ðµ
+Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñƒ â€ž@fptrâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒÐ½Ð¸ÑˆÑ‚Ð°Ð½Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸ÐºÐ°Ð·Ð°Ñ‚Ð¸Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð·Ð° Ð¼ÐµÑ�Ð½Ðµ ÑƒÐ½Ð¾Ñ�Ðµ â€žGOTâ€œÐ½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð·Ð° Ñ€ÐµÑ’Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾Ð¼Ð¾Ð´ÑƒÐ» Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð±ÐµÐ· Ð³Ñ€ÐµÑˆÐ°ÐºÐ° !Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð·Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ðº Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½ÐµÑ˜ÐµÐ´Ð°Ð½ Ð¾Ð´ Ð¼Ð¾Ð³ÑƒÑ›Ð¸Ñ… Ñ€Ð°Ð·Ð»Ð¾Ð³Ð° Ð¾Ð²Ðµ Ð³Ñ€ÐµÑˆÐºÐµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð´Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ¿ÑƒÑ‚Ð°Ð½ Ñƒ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼ ÐºÐ¾Ð´Ñƒ Ð¸Ð¼Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð¾Ð±Ñ˜Ð°Ð²Ñ™ÐµÐ½Ð¾ Ñ‚Ð°Ð¼Ð¾ Ð³Ð´Ðµ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð½Ð°ÐºÐ¾Ð½ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð¿Ñ€ÐµÐºÑ€Ð¸Ð²Ð°ÑšÐ°Ñ€Ð°Ð´Ð½Ð¸ Ð¾ÐºÐ²Ð¸Ñ€ Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡ÐºÐ°: Ð½ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚Ð°/Ð°Ñ€Ñ…Ð¸Ð²Ð°
+Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡
+Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lxÐ¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx:Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx: Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lxÐ¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx:Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð±ÐºÐ¿Ñ‚ Ð°Ð´Ñ€ÐµÑ�Ð° 0x%08x
+Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» qâ€œ Ð¸ â€žzfaqâ€œ Ð¸Ð»Ð¸ â€žzqinxÐ¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð°: Ð½Ð°Ð·Ð¸Ð²: %.*s
 ÐºÑ€Ð°Ñ˜ Ð·Ð°Ð¿Ð¸Ñ�Ð°
-ÑƒÐ¿ÑƒÑ‚Ð° Ð½Ð° Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð¾Ð±Ð¸Ñ‡Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð½Ð° %04lxÑ€ÐµÐ³Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»ÑƒÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°ÐºÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ñ€ÐµÐ±Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ð°Ñ€Ð°Ð½ Ð±Ñ€Ð¾Ñ˜Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ñ… Ñ�ÐµÐ³Ð¼ÐµÐ½Ð°Ñ‚Ð° Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€ž%Bâ€œ: %s
-Ñ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ�Ð°Ð½Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%dâ€œÐ¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ñ€ÑƒÑ‚Ð¸Ð½Ðµ
+Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€žgcc -mno-relaxâ€œ Ð¸Ð»Ð¸ â€žas -mno-relaxâ€œ Ð¸Ð»Ð¸ â€žld --no-relaxâ€œÑ�Ð½Ð¸Ð¼Ð°Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸ Ð·Ð° Ð´ÑƒÐ¶Ð¸Ð½Ñƒ Ð½Ð°Ð·Ð¸Ð²Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°ÑƒÐ¿ÑƒÑ‚Ð° Ð½Ð° Ð³Ñ€ÑƒÐ¿Ð¸Ñ�Ð°Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð¾Ð±Ð¸Ñ‡Ð½Ð¾Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð½Ð° %04lxÑƒÐ¿ÑƒÑ›Ð¸Ð²Ð°ÑšÐµ Ð½Ð° Ð´Ð°Ð»ÐµÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¾Ð¼ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð¾Ð³ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°Ñ€ÐµÐ³Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž%%g%dâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½ Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾: â€ž%sâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%pBâ€œÐ¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜
+Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%d) Ñ˜Ðµ *Ð�Ð•ÐŸÐžÐ—Ð�Ð�Ð¢Ðž*Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ GOT Ð²Ñ€Ñ�Ñ‚Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð½Ðµ-â€žRELâ€œ Ð¿-Ð¾Ð´ÐµÑ™Ð°ÐºÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»ÑƒÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°ÐºÐ¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ñ€ÐµÐ±Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ð°Ñ€Ð°Ð½ Ð±Ñ€Ð¾Ñ˜Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ñ… Ñ�ÐµÐ³Ð¼ÐµÐ½Ð°Ñ‚Ð° Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð½ÐµÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ž%pBâ€œÐ¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€ž%pBâ€œ: %sÑ€ÐµÐ·ÐµÑ€Ð²Ð¸Ñ�Ð°Ð½Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%dâ€œÐ¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ñ€ÑƒÑ‚Ð¸Ð½Ðµ
 ÐºÑ€Ð°Ñ˜ Ñ€ÑƒÑ‚Ð¸Ð½Ðµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° 0x%08x
-Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²ÐºÐµ, Ð½Ð°Ð·Ð¸Ð²: %.*s
+â€žrv%dâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žqâ€œâ€žrv%dâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žzcfâ€œâ€žrv%deâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žhâ€œÐ¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ÐµÐ²Ñ€Ñ�Ñ‚Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²ÐºÐµ, Ð½Ð°Ð·Ð¸Ð²: %.*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â€œÐ¾Ð´ÐµÑ™Ð°Ðº Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº; Ð´Ð¾ÑšÐ° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (Ð²Ð¸Ð´Ð¸Ñ‚Ðµ Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-Gâ€œ)smctrâ€œ Ð¸Ð»Ð¸ â€žssctrâ€ž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â€œÐ½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°vâ€œ Ð¸Ð»Ð¸ â€žzve64dâ€œ Ð¸Ð»Ð¸ â€žzve64fâ€œ Ð¸Ð»Ð¸ â€žzve32fvâ€œ Ð¸Ð»Ð¸ â€žzve64xâ€œ Ð¸Ð»Ð¸ â€žzve32xÐ°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€ž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â€œ Ð¸Ð¼Ð° Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ ÑˆÐ¸Ñ€Ð¸ Ð¿Ñ€ÐµÐºÐ¾ ÐºÑ€Ð°Ñ˜Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¿Ð¾Ð´ÐµÐ¾Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ ÑˆÐ¸Ñ€Ð¸ Ð¿Ñ€ÐµÐºÐ¾ ÐºÑ€Ð°Ñ˜Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%pBâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%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(%s): ÐŸÑ€Ð¸Ð¼Ð¾Ñ€Ð°Ð²Ð°Ð¼ Ð³Ñ€Ð°Ð½Ñƒ Ð½Ð° Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Thumb Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ (Thumb-Ñ�Ð°Ð¼Ð¾ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€) Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %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: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°: 0x%xÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™Ð°ÐºÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€žARCâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žMSPABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€žRISCV ABIâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žGNU_PROPERTY_TYPEâ€œ (%ld) Ð²Ñ€Ñ�Ñ‚Ð°: 0x%xÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ°
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð° â€ž%sâ€œ
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½ÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ñ�Ðµ Ñ‚Ñ€ÐµÐ±Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.note.GNU-stackâ€œ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº (Ñ˜ÐµÑ€ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.note.GNU-stackâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ¸Ð²)ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: (%s): ÐŸÑ€Ð¸Ð¼Ð¾Ñ€Ð°Ð²Ð°Ð¼ Ð³Ñ€Ð°Ð½Ñƒ Ð½Ð° Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Thumb Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ (Thumb-Ñ�Ð°Ð¼Ð¾ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€) Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--plt-localentryâ€œ Ñ˜Ðµ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð¾ Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð±ÐµÐ· â€žld.soâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð·Ð° Ð¾Ñ‚ÐºÑ€Ð¸Ð²Ð°ÑšÐµ â€žABIâ€œ Ð¿Ñ€ÐµÑ�Ñ‚ÑƒÐ¿Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--plt-localentryâ€œ Ñ˜Ðµ Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° â€žpower10 pc-relativeâ€œ ÐºÐ¾Ð´Ð¾Ð¼ÑƒÐ¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð�ÐŸÐžÐœÐ•Ð�Ð�: Ð½ÐµÐ¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° Ð¼Ð¾Ð³Ñƒ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¾Ð·Ð±Ð¸Ñ™Ð½Ð¸Ñ… Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°.  Ð˜Ñ�Ð¿Ð¸Ñ‚Ð¸Ð²Ð°ÑšÐµ Ñ�Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ñ€ÑƒÑ‡ÑƒÑ˜Ðµ.ÑƒÐ¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð�ÐŸÐžÐœÐ•Ð�Ð�: Ð½ÐµÐ¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð½Ð¾Ñ�Ñ‚Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¾Ð·Ð±Ð¸Ñ™Ð½Ð¸Ñ… Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°.  Ð˜Ñ�Ð¿Ð¸Ñ‚Ð¸Ð²Ð°ÑšÐµ Ñ�Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ñ€ÑƒÑ‡ÑƒÑ˜Ðµ.ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRL78_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRX_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ðµ Ð¾Ð´ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° (%u) ÑšÐµÐ³Ð¾Ð²Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð±Ð¸Ñ‡Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ Ñ˜Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð´ â€ž%uâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾Ð³ Ð¾Ð¿ÑˆÑ‚Ð¾Ð¼ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¾Ð¼ Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ Ñ˜Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð´ â€ž%uâ€œ Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜ Ð¸Ð·Ð²Ð¾Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñ�ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ‡Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð½ÐµÐ¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¸ ÐºÐ¾Ð´ Ñƒ â€ž%pBâ€œ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñ�Ð° ÑšÐ¸Ð¼ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ ÑƒÑ�Ð»ÐµÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ñ�Ð¿Ð¾Ñ™Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐºÑ™ÑƒÑ‡ÑƒÑ˜ÐµÐ¼ Ð¸Ð·Ð²Ñ€ÑˆÐ¸Ð²Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ð·Ð±Ð¾Ð³ â€ž-z execstackâ€œ Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ Ð»Ð¸Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€œ%pBâ€œ-Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™Ð½Ð¸Ð¼ â€ž%sâ€œ, Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¼ÐµÑ‚Ðµ Ð½Ð° â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€œ%pBâ€œ-Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™Ð½Ð¸Ð¼ â€žck%sâ€œ, ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ â€ž%sâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° GCS Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d ÑƒÐ»Ð°Ð·Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° BTI Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d ÑƒÐ»Ð°Ð·Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° GCS Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.
+ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€žgcâ€œ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð¦ ÐºÐ¾Ð´ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð” ÐºÐ¾Ð´ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ�Ð°Ð¼ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ Ð¿Ð¾ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð²ÐµÑ› Ð½Ð°Ð²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ Ð½Ðµ-Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¾ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¾Ð²Ð°Ð½Ð¾ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐµ 1.9.1 Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐ¸Ð¼Ð°ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½ Ñƒ Ð±ÐµÐ»ÐµÑˆÐºÑƒÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° â€ž%pAâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ñƒ â€žPROGBITSâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°ÐºÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ�Ñƒ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%dâ€œ Ñƒ â€ž%dâ€œ Ð·Ð° â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ â€ž%pBâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž%sâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ %pBÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð½Ð°Ð·Ð¸Ð² Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%#xâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žeâ€œ-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%#lxâ€œÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ð´ÐµÑˆÐµÐ½Ðµ Ð¸Ð»Ð¸ Ñ�Ñ‚Ð°Ñ€Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ñƒ Ð¼Ð°ÑˆÐ¸Ð½ÑƒÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ¿Ð¸Ñ� Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ñƒ Ñ˜Ðµ Ñ�Ð¿Ð¾Ñ€: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÑƒÐ¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð²Ñ€ÐµÐ¼ÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº ÑƒÐ¿Ð¸Ñ�Ð¸Ð²Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ð° Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾Ð¼ (Ð½Ð¿Ñ€. Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð°Ð½) Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ…-Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°
+x ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ñ�Ð° Ð¸Ð·Ð´Ð°ÑšÐ¸Ð¼Ð°Ð´Ð°Ð²Ð¸ Ð½ÐµÐ¼Ð°Ñ‚Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµÑ‚Ðµ â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸zbbâ€œ Ð¸Ð»Ð¸ â€žzbkbzbcâ€œ Ð¸Ð»Ð¸ â€žzbkczcbâ€œ Ð¸ â€žzbazcbâ€œ Ð¸ â€žzbbzcbâ€œ Ð¸ â€žzmmulâ€œ, Ð¸Ð»Ð¸ â€žzcbâ€œ Ð¸ â€žmzcmp' Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° â€žd/zcdâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµÐ¼zfhâ€œ Ð¸ â€žzfazfhâ€œ Ð¸ â€žzfaâ€œ, Ð¸Ð»Ð¸ â€žzvfhâ€œ Ð¸ â€žzfazfhâ€œ Ð¸Ð»Ð¸ â€žzhinxzfhâ€œ Ð¸Ð»Ð¸ â€žzvfhzfhminâ€œ Ð¸ â€ždâ€œ, Ð¸Ð»Ð¸ â€žzhinxminâ€œ Ð¸ â€žzdinxzfhminâ€œ Ð¸ â€žqâ€œ, Ð¸Ð»Ð¸ â€žzhinxminâ€œ Ð¸ â€žzqinxzfhminâ€œ Ð¸Ð»Ð¸ â€žzhinxminzicfissâ€œ Ð¸ â€žzcmopzihintntlâ€œ Ð¸ â€žcâ€œ, Ð¸Ð»Ð¸ â€žzihintntlâ€œ Ð¸ â€žzcazkndâ€œ Ð¸Ð»Ð¸ â€žzknezvbbzvbczvkbzvkgzvknedzvknhaâ€œ Ð¸Ð»Ð¸ â€žzvknhbzvksedzvkshâ€žzvl*bâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° ÑƒÐºÑ™ÑƒÑ‡Ðµ Ð¸Ð»Ð¸ â€žvâ€œ Ð¸Ð»Ð¸ â€žzveâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµPRIx64PRIu64PRId64%pB: %# overflows header %s field%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: TLS relocation at 0x% over non-TLS symbol %s (0x%x)
+%pB: TLS local relocation at 0x% over imported symbol %s
+%pB: relocation (%d) at 0x% has wrong r_rsize (0x%x)
+%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: relocation (%d) at (0x%) has wrong r_rsize (0x%x)
+%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: stripping non-representable symbol '%s' (value 0x%)%pB: bad reloc address %# in section `%pA'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(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%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+%#): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)%pB(%pA+%#): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)%pB(%pA+%#): cannot handle %s for %sip2k 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(%pA+%#): misaligned symbol `%s' (%#) for relocation %s%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: %pA+%: relocation addend % too large%pB: version count (%) does not match symbol count (%ld)%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: bad symbol definition: `Main' set to % rather than the start address %
+%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB(%pA+%#): %s relocation offset out of order%pB(%pA+%#): %s relocation offset out of range%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 csect%pB: Unable to find a stub csect in rangeof relocation at %# targeting'%s'TOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB: error: erratum 843419 immediate 0x% out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead%pB(%pA+%#): unresolvable %s relocation in section `%s'%# invaild imm%pB: R_LARCH_ALIGN with offset % not aligned to instruction boundary%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x% without any addend, but may be 0x% after adding the %%pcrel_lo addend%pB: Data Directory (%lx bytes at %) extends across section boundary at %%pB: %# Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÑƒÑ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€ž%sâ€œ Ð¿Ð¾Ñ™Ð°%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž% >= %â€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ñ�Ð° â€ž%#â€œ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð±ÐµÐ· ÑƒÐ½Ð¾Ñ�Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°%pB: Ð¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x% Ð¿Ñ€ÐµÐºÐ¾ Ð½Ðµ-Ð¢Ð›Ð¡ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ (0x%x)
+%pB: Ð¢Ð›Ð¡ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x% Ð¿Ñ€ÐµÐºÐ¾ ÑƒÐ²ÐµÐ·ÐµÐ½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ
+%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%d) Ð½Ð° 0x% Ð¸Ð¼Ð° Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ r_r-Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ (0x%x)
+%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ â€žR_SH_USESâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ â€žinsnâ€œ %#x%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€žR_SH_USESâ€œ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ˜Ðµ Ñƒ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žCOUNTâ€œ%pB: %#: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜%pB: %#: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%d) Ð½Ð° (0x%) Ð¸Ð¼Ð° Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ r_r-Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ (0x%x)
+%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ %#%pB: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ð·Ð° %%pB: ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ñ™Ð°Ñ˜ÑƒÑ›Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ (Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ 0x%)%pB: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œÐ³Ñ€ÐµÑˆÐºÐ°: %pB(%pA) Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ (%# Ð±Ð°Ñ˜Ñ‚Ð°)â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ (%) Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¸Ð»Ð¸ Ñ˜ÐµÐ´Ð½Ð°Ðº Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ %s (%)â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%) Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° â€ž%â€œâ€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸ (%)â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° Ñ˜Ðµ Ð²ÐµÑ›Ð¸ (%#) Ð¾Ð´ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ (%#lx)â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žaltâ€œ ÑƒÐ¿ÑƒÑ‚Ñƒ %â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð°Ðº â€žDIEâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ %%pB(%pA+%#): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž%u >= %â€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ%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+%#): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ %#x Ð·Ð° â€œinsn %#xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð±Ñ€Ð¾Ñ˜Ð° 8 (gp %#x)%pB(%pA+%#): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ %#x Ð·Ð° â€žinsn %#xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð±Ñ€Ð¾Ñ˜Ð° 4 (gp %#x)%pB(%pA+%#): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€ž%sâ€œ Ð·Ð° â€ž%sâ€œÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€ž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: Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð·Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð·Ð°
+ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡ÐµÐ¼: Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾: %# != Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾: %#%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° â€žLOCALâ€œ: Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ â€ž$%â€œ Ð½Ð¸Ñ˜Ðµ Ð¼ÐµÑ�Ð½Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€; Ð¿Ñ€Ð²Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ˜Ðµ â€ž$%â€œ%pB(%pA+%#): Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ (%#) Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSTT_GNU_IFUNCâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº: %%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº %s%#x Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð° %# Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%pB: %pA+%: Ð´Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° % Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº%pB: Ð±Ñ€Ð¾Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° (%) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%ld)%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: Ð»Ð¾ÑˆÐ° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: â€žMainâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð½Ð° â€ž%â€œ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%â€œ
+%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð¸Ñ… Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€Ð°; Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° %%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð° Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ðµ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÑƒÐ¶Ð¸Ð½Ðµ %: %#%pB(%pA+%#): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%pB(%pA+%#): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°%pB: Ð»Ð¾Ñˆ â€žXTY_ERâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð±Ñ€Ð¾Ñ˜ %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %%pB: â€žXMC_TC0â€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ ÐºÐ»Ð°Ñ�Ð° %d scn-Ð´ÑƒÐ¶Ð¸Ð½Ðµ %%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s:%â€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ†-Ð¾Ð´ÐµÑ™ÐºÑƒ%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ñ†-Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð½Ð° %# ÐºÐ¾Ñ˜Ð¸ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° â€ž%sâ€œÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°: %# > 0x10000; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐºÐ° 843419 Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ð½Ð¾ 0x% Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð�Ð”Ð  (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°) Ð¸ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ˜Ðµ â€ž--fix-cortex-a53-843419=Ð°Ð´Ñ€â€œ.  Ð¢Ð°ÐºÐ¾ Ð´Ð° Ð¿Ð¾ÐºÑ€ÐµÑ›ÐµÐ¼ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñ�Ð° â€ž--fix-cortex-a53-843419=fullâ€œ%pB(%pA+%#): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ%# Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žimmâ€œ%pB: R_LARCH_ALIGN Ñ�Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ % Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¾ Ð½Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ%pB(%pA+%#): % Ð±Ð°Ñ˜Ñ‚Ð° Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½Ð° %-Ð±Ð°Ñ˜Ñ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ, Ð°Ð»Ð¸ Ñ�Ð°Ð¼Ð¾ % Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð½Ð¾â€ž%%pcrel_loâ€œ Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð·Ð° â€ž%%pcrel_hiâ€œ Ñ˜Ðµ 0x% Ð±ÐµÐ· Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ°, Ð°Ð»Ð¸ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ 0x% Ð½Ð°ÐºÐ¾Ð½ Ð´Ð¾Ð´Ð°Ð²Ð°ÑšÐ° â€ž%%pcrel_loâ€œ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ°%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.20200303/bfd/po/sr.po ./bfd/po/sr.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/sr.po	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/sr.po	2026-03-05 02:07:20.000000000 +0000
@@ -1,594 +1,765 @@
-# 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-2025.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd-2.24.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"
+"Project-Id-Version: bfd-2.43.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2025-01-19 12:19+0000\n"
+"PO-Revision-Date: 2025-03-02 16:32+0100\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-Bugs: Report translation errors to the Language-Team address.\n"
+"X-Generator: Poedit 3.5\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:444 pdp11.c:481
+#, c-format
+msgid "%pB: %#<PRIx64> overflows header %s field"
+msgstr "%pB: %#<PRIx64> Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÑƒÑ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€ž%sâ€œ Ð¿Ð¾Ñ™Ð°"
 
-#: aoutx.h:1273 aoutx.h:1611
+#: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495
 #, 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:1562 pdp11.c:1467
 #, 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:1565 vms-alpha.c:8473
 msgid "*unknown*"
 msgstr "*Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾*"
 
-#: aoutx.h:4018 aoutx.h:4344
-msgid "%P: %B: unexpected relocation type\n"
-msgstr "%P: %B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
+#: aoutx.h:1701 pdp11.c:1563
+#, c-format
+msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž%<PRIu64> >= %<PRIu64>â€œ"
 
-#: aoutx.h:5375
+#: aoutx.h:1945
 #, c-format
-msgid "%s: relocatable link from %s to %s not supported"
-msgstr "%s: Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð²ÐµÐ·Ð° Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žAOUTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
 
-#: archive.c:2249
-msgid "Warning: writing archive was slow: rewriting timestamp\n"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ¿Ð¸Ñ� Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ñƒ Ñ˜Ðµ Ñ�Ð¿Ð¾Ñ€: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÑƒÐ¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð²Ñ€ÐµÐ¼Ðµ\n"
+#: aoutx.h:2389 aoutx.h:2407 pdp11.c:2040
+#, c-format
+msgid "%pB: attempt to write out unknown reloc type"
+msgstr "%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#: aoutx.h:4047 pdp11.c:3409
+#, c-format
+msgid "%pB: unsupported relocation type"
+msgstr "%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+
+#. Unknown relocation.
+#: aoutx.h:4367 coff-alpha.c:601 coff-mips.c:356 coff-rs6000.c:3037
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531
+#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4686
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6240 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2209 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3287
+#: elf32-nds32.c:3308 elf32-nds32.c:5077 elf32-or1k.c:1085 elf32-pj.c:326
+#: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291
+#: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347
+#: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163
+#: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537
+#: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924
+#: elf32-v850.c:4253 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510
+#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4055
+#: elf64-alpha.c:4203 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3426 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:305 elfn32-mips.c:3799
+#: elfxx-ia64.c:324 elfxx-loongarch.c:1897 elfxx-riscv.c:1062 elfxx-sparc.c:589
+#: elfxx-sparc.c:639 elfxx-tilegx.c:907 elfxx-tilegx.c:947 elfnn-aarch64.c:2215
+#: elfnn-aarch64.c:2313 elfnn-ia64.c:214 elfnn-ia64.c:3821 elfnn-kvx.c:259
+#, c-format
+msgid "%pB: unsupported relocation type %#x"
+msgstr "%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€ž%#xâ€œ"
+
+#: aoutx.h:5387 pdp11.c:3825
+#, c-format
+msgid "%pB: relocatable link from %s to %s not supported"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð²ÐµÐ·Ð° Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+
+#: arc-got.h:69
+#, c-format
+msgid "%pB: cannot allocate memory for local GOT entries"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ â€žGOTâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
+
+#: archive.c:748
+msgid "%F%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr "%F%P: %pB(%s): Ð³Ñ€ÐµÑˆÐºÐ° Ð¾Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¼Ð°Ñ˜ÑƒÑˆÐ½Ð¾Ð³ Ñ‡Ð»Ð°Ð½Ð° Ð°Ñ€Ñ…Ð¸Ð²Ðµ: %E\n"
+
+#: archive.c:2282
+msgid "warning: writing archive was slow: rewriting timestamp"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ¿Ð¸Ñ� Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ñƒ Ñ˜Ðµ Ñ�Ð¿Ð¾Ñ€: Ð¿Ð¾Ð½Ð¾Ð²Ð¾ ÑƒÐ¿Ð¸Ñ�ÑƒÑ˜ÐµÐ¼ Ð²Ñ€ÐµÐ¼Ðµ"
+
+#: archive.c:2351 archive.c:2412 elflink.c:4931 linker.c:1452
+#, c-format
+msgid "%pB: plugin needed to handle lto object"
+msgstr "%pB: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ˜Ðµ Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡Ð°Ðº Ð·Ð° Ñ€ÑƒÐºÐ¾Ð²Ð°ÑšÐµ â€žltoâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¾Ð¼"
 
-#: archive.c:2549
+#: archive.c:2644
 msgid "Reading archive file mod timestamp"
 msgstr "Ð§Ð¸Ñ‚Ð°Ð¼ Ð²Ñ€ÐµÐ¼Ðµ Ñ€ÐµÐ¶Ð¸Ð¼Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ñ€Ñ…Ð¸Ð²Ðµ"
 
-#: archive.c:2573
+#: archive.c:2675
 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:777
+msgid "no error"
+msgstr "Ð½ÐµÐ¼Ð° Ð³Ñ€ÐµÑˆÐºÐµ"
+
+#: bfd.c:778
+msgid "system call error"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ñ�ÐºÐ¾Ð³ Ð¿Ð¾Ð·Ð¸Ð²Ð°"
+
+#: bfd.c:779
+msgid "invalid bfd target"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ†Ð¸Ñ™ Ð±Ñ„Ð´-Ð°"
+
+#: bfd.c:780
+msgid "file in wrong format"
+msgstr "Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
+
+#: bfd.c:781
+msgid "archive object file in wrong format"
+msgstr "Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð°Ñ€Ñ…Ð¸Ð²Ðµ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ"
+
+#: bfd.c:782
+msgid "invalid operation"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð°"
+
+#: bfd.c:783
+msgid "memory exhausted"
+msgstr "Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð° Ñ˜Ðµ Ð¸Ñ�Ñ†Ñ€Ð¿Ñ™ÐµÐ½Ð°"
+
+#: bfd.c:784
+msgid "no symbols"
+msgstr "Ð½ÐµÐ¼Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: bfd.c:785
+msgid "archive has no index; run ranlib to add one"
+msgstr "Ð°Ñ€Ñ…Ð¸Ð²Ð° Ð½ÐµÐ¼Ð° Ð¸Ð½Ð´ÐµÐºÑ�; Ð¿Ð¾ÐºÑ€ÐµÐ½Ð¸Ñ‚Ðµ â€žranlibâ€œ Ð´Ð° Ð³Ð° Ð´Ð¾Ð´Ð°Ñ‚Ðµ"
+
+#: bfd.c:786
+msgid "no more archived files"
+msgstr "Ð½ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð°Ñ€Ñ…Ð¸Ð²Ð¸Ñ€Ð°Ð½Ð¸Ñ… Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°"
+
+#: bfd.c:787
+msgid "malformed archive"
+msgstr "Ð»Ð¾ÑˆÐ° Ð°Ñ€Ñ…Ð¸Ð²Ð°"
 
-#: bfd.c:422
+#: bfd.c:788
 msgid "DSO missing from command line"
-msgstr "Ð”Ð¡Ðž Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð° Ð»Ð¸Ð½Ð¸Ñ˜Ð¸ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸"
+msgstr "â€žDSOâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð° Ð»Ð¸Ð½Ð¸Ñ˜Ð¸ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸"
+
+#: bfd.c:789
+msgid "file format not recognized"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚"
 
-#: bfd.c:423
-msgid "File format not recognized"
-msgstr "Ð—Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚"
+#: bfd.c:790
+msgid "file format is ambiguous"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜Ðµ Ð½ÐµÑ˜Ð°Ñ�Ð°Ð½"
 
-#: bfd.c:424
-msgid "File format is ambiguous"
-msgstr "Ð—Ð°Ð¿Ð¸Ñ� Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜Ðµ Ð½ÐµÑ˜Ð°Ñ�Ð°Ð½"
+#: bfd.c:791
+msgid "section has no contents"
+msgstr "Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ðµ"
 
-#: bfd.c:425
-msgid "Section has no contents"
-msgstr "ÐžÐ´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ðµ"
+#: bfd.c:792
+msgid "nonrepresentable section on output"
+msgstr "Ð½Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸ÐºÐ°Ð·Ð°Ñ‚Ð¸"
 
-#: bfd.c:426
-msgid "Nonrepresentable section on output"
-msgstr "Ð�Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸ÐºÐ°Ð·Ð°Ñ‚Ð¸"
+#: bfd.c:793
+msgid "symbol needs debug section which does not exist"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° ÑƒÐºÐ»Ð°ÑšÐ°ÑšÐµ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜Ð¸"
 
-#: bfd.c:427
-msgid "Symbol needs debug section which does not exist"
-msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° ÑƒÐºÐ»Ð°ÑšÐ°ÑšÐµ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ð¿Ð¾Ñ�Ñ‚Ð¾Ñ˜Ð¸"
+#: bfd.c:794
+msgid "bad value"
+msgstr "Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚"
 
-#: bfd.c:428
-msgid "Bad value"
-msgstr "ÐŸÐ¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚"
+#: bfd.c:795
+msgid "file truncated"
+msgstr "Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¾ÐºÑ€ÑšÐµÐ½Ð°"
 
-#: bfd.c:429
-msgid "File truncated"
-msgstr "Ð”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¾ÐºÑ€ÑšÐµÐ½Ð°"
+#: bfd.c:796
+msgid "file too big"
+msgstr "Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°"
 
-#: bfd.c:430
-msgid "File too big"
-msgstr "Ð”Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°"
+#: bfd.c:797
+msgid "sorry, cannot handle this file"
+msgstr "Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ, Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð¾Ð²Ð¾Ð¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼"
 
-#: bfd.c:431
+#: bfd.c:798
 #, 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:799
+msgid "#<invalid error code>"
+msgstr "#<Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÐºÐ¾Ð´ Ð³Ñ€ÐµÑˆÐºÐµ>"
 
-#: bfd.c:1046
+#: bfd.c:2242
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "â€žBFDâ€œ â€ž%sâ€œ Ñ‚Ð²Ñ€Ð´ÑšÐ° Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð° â€ž%sâ€œ:%d"
 
-#: bfd.c:1058
+#: bfd.c:2255
 #, c-format
-msgid "BFD %s internal error, aborting at %s line %d in %s\n"
-msgstr "Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð”-Ð° %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð¿Ñ€Ð¸ â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ Ñƒ â€ž%sâ€œ\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr "%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° â€žBFD %sâ€œ Ð³Ñ€ÐµÑˆÐºÐ°, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð½Ð° â€ž%s:%dâ€œ Ñƒ â€ž%sâ€œ\n"
 
-#: bfd.c:1062
+#: bfd.c:2259
 #, c-format
-msgid "BFD %s internal error, aborting at %s line %d\n"
-msgstr "Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð”-Ð° %s, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð¿Ñ€Ð¸ â€ž%sâ€œ %d. Ñ€ÐµÐ´Ñƒ\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d\n"
+msgstr "%s: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° â€žBFD %s â€œ Ð³Ñ€ÐµÑˆÐºÐ°, Ð¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð¼ Ð½Ð° â€ž%s:%dâ€œ\n"
 
-#: bfd.c:1064
+#: bfd.c:2262
+#, c-format
 msgid "Please report this bug.\n"
 msgstr "ÐŸÑ€Ð¸Ñ˜Ð°Ð²Ð¸Ñ‚Ðµ Ð¾Ð²Ñƒ Ð³Ñ€ÐµÑˆÐºÑƒ.\n"
 
-#: bfdwin.c:206
+#: binary.c:277
 #, c-format
-msgid "not mapping: data=%lx mapped=%d\n"
-msgstr "Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº=%lx  Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð½=%d\n"
+msgid "warning: writing section `%pA' at huge (ie negative) file offset"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº ÑƒÐ¿Ð¸Ñ�Ð¸Ð²Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ð° Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾Ð¼ (Ð½Ð¿Ñ€. Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð°Ð½) Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ"
 
-#: bfdwin.c:209
+#: cache.c:290
 #, c-format
-msgid "not mapping: env var not set\n"
-msgstr "Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° Ð¾ÐºÑ€ÑƒÐ¶ÐµÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð°\n"
+msgid "reopening %pB: %s"
+msgstr "Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€ž%pBâ€œ: %s"
 
-#: binary.c:271
+#: coff-alpha.c:450
 #, 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"
+msgid "%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ñ�Ð°Ð¶ÐµÑ‚Ð¸Ð¼ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¸Ð¼ Ð�Ð»Ñ„Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð¾Ñ†Ð°, Ð¸Ð»Ð¸ â€žobjZâ€œ, Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð½ÐµÑ�Ð°Ð¶ÐµÑ‚Ðµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ"
 
-#: cache.c:253
-msgid "reopening %B: %s\n"
-msgstr "Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¾Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€ž%Bâ€œ: %s\n"
+#: coff-alpha.c:867 coff-alpha.c:894 coff-alpha.c:2004 coff-mips.c:948
+msgid "GP relative relocation used when GP not defined"
+msgstr "ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ˜Ðµ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: 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â€œ, Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ðµ Ð½ÐµÑ�Ð°Ð¶ÐµÑ‚Ðµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ."
+#: coff-alpha.c:1151 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13188
+#: elfxx-mips.c:13509 reloc.c:8596 reloc16.c:314
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ð¸Ð´Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°\n"
 
-#: coff-alpha.c:603
-msgid "%B: unknown/unsupported relocation type %d"
-msgstr "%B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð°/Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+#: coff-alpha.c:1157 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13519
+#: reloc.c:8606
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
 
-#: coff-alpha.c:852 coff-alpha.c:889 coff-alpha.c:1973 coff-mips.c:946
-msgid "GP relative relocation used when GP not defined"
-msgstr "Ð£Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ˜Ðµ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+#: coff-alpha.c:1163 elfxx-mips.c:13528 reloc.c:8615
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%pRâ€œ Ñ˜Ðµ Ð²Ñ€Ð°Ñ‚Ð¸Ð»Ð¾ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%xâ€œ\n"
 
-#: coff-alpha.c:1450
+#: coff-alpha.c:1489
 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:1987
+#, c-format
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°\n"
+
+#: coff-alpha.c:1999
+#, c-format
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
 
-#: coff-alpha.c:1516
-msgid "%B: unsupported relocation: ALPHA_R_GPRELLOW"
-msgstr "%B: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: â€žALPHA_R_GRELLOWâ€œ"
+#: coff-go32.c:167 coffswap.h:812
+#, 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:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
+msgid "GP relative relocation when _gp not defined"
+msgstr "Ð ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: coff-arm.c:1034
+#: coff-rs6000.c:484 coff64-rs6000.c:377
 #, c-format
-msgid "%B: unable to find THUMB glue '%s' for `%s'"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žTHUMBâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žswap_aux_inâ€œ Ð·Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð½Ñƒ ÐºÐ»Ð°Ñ�Ñƒ â€ž%#xâ€œ"
 
-#: coff-arm.c:1063
+#: coff-rs6000.c:571 coff64-rs6000.c:497
 #, c-format
-msgid "%B: unable to find ARM glue '%s' for `%s'"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žARMâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žswap_aux_outâ€œ Ð·Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð½Ñƒ ÐºÐ»Ð°Ñ�Ñƒ â€ž%#xâ€œ"
 
-#: coff-arm.c:1365 elf32-arm.c:7141
+#: coff-rs6000.c:3127
 #, 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: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ñ�Ð° â€ž%#<PRIx64>â€œ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð±ÐµÐ· ÑƒÐ½Ð¾Ñ�Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°"
 
-#: coff-arm.c:1455
+#: coff-rs6000.c:3251 coff64-rs6000.c:848
 #, 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 "Unable to find the stub entry targeting %s"
+msgstr "Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° â€ž%sâ€œ"
 
-#: 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-rs6000.c:3366
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr "%pB: Ð¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x%<PRIx64> Ð¿Ñ€ÐµÐºÐ¾ Ð½Ðµ-Ð¢Ð›Ð¡ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ (0x%x)\n"
 
-#: coff-arm.c:2075
-msgid "%B: illegal symbol index in reloc: %d"
-msgstr "%B: Ð½ÐµÐ´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ: %d"
+#: coff-rs6000.c:3379
+#, c-format
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr "%pB: Ð¢Ð›Ð¡ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° 0x%<PRIx64> Ð¿Ñ€ÐµÐºÐ¾ ÑƒÐ²ÐµÐ·ÐµÐ½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ\n"
 
-#: coff-arm.c:2206
+#: coff-rs6000.c:3785
 #, c-format
-msgid "error: %B is compiled for APCS-%d, whereas %B is compiled for APCS-%d"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° Ð�ÐŸÐ¦Ð¡-%d, Ð´Ð¾Ðº Ñ˜Ðµ â€ž%Bâ€œ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° Ð�ÐŸÐ¦Ð¡-%d"
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%d) Ð½Ð° 0x%<PRIx64> Ð¸Ð¼Ð° Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ r_r-Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ (0x%x)\n"
 
-#: coff-arm.c:2222 elf32-arm.c:16123
+#: coff-rs6000.c:4047 coff64-rs6000.c:2021
 #, c-format
-msgid "error: %B passes floats in float registers, whereas %B passes them in integer registers"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%Bâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
+msgid "%pB: symbol `%s' has unrecognized smclas %d"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ ÐºÐ»Ð°Ñ�Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%dâ€œ"
 
-#: coff-arm.c:2225 elf32-arm.c:16127
+#: coff-sh.c:781 elf32-sh.c:521
 #, 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 R_SH_USES offset"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ â€žR_SH_USESâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜"
 
-#: coff-arm.c:2239
+#: coff-sh.c:792
 #, c-format
-msgid "error: %B is compiled as position independent code, whereas target %B is absolute position"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ ÐºÐ¾Ð´ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°, Ð´Ð¾Ðº Ñ˜Ðµ Ñ†Ð¸Ñ™ â€ž%Bâ€œ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜"
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn %#x"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ â€žinsnâ€œ %#x"
 
-#: coff-arm.c:2242
+#: coff-sh.c:810 elf32-sh.c:552
 #, c-format
-msgid "error: %B is compiled as absolute position code, whereas target %B is position independent"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%Bâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ ÐºÐ¾Ð´ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°, Ð´Ð¾Ðº Ñ˜Ðµ Ñ†Ð¸Ñ™ â€ž%Bâ€œ Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°"
+msgid "%pB: %#<PRIx64>: warning: bad R_SH_USES load offset"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€žR_SH_USESâ€œ"
 
-#: coff-arm.c:2270 elf32-arm.c:16192
+#: coff-sh.c:835 elf32-sh.c:568
 #, c-format
-msgid "Warning: %B supports interworking, whereas %B does not"
-msgstr "Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: â€ž%Bâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%Bâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°"
+msgid "%pB: %#<PRIx64>: warning: could not find expected reloc"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: coff-arm.c:2273 elf32-arm.c:16198
+#: coff-sh.c:852 elf32-sh.c:597
 #, c-format
-msgid "Warning: %B does not support interworking, whereas %B does"
-msgstr "Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: â€ž%Bâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%Bâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°"
+msgid "%pB: %#<PRIx64>: warning: symbol in unexpected section"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ˜Ðµ Ñƒ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
 
-#: coff-arm.c:2297
+#: coff-sh.c:973 elf32-sh.c:727
 #, c-format
-msgid "private flags = %x:"
-msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ =%x:"
+msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žCOUNTâ€œ"
 
-#: coff-arm.c:2305 elf32-arm.c:12119
+#: coff-sh.c:983 elf32-sh.c:738
 #, c-format
-msgid " [floats passed in float registers]"
-msgstr " [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸]"
+msgid "%pB: %#<PRIx64>: warning: bad count"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜"
 
-#: coff-arm.c:2307
+#: coff-sh.c:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
 #, c-format
-msgid " [floats passed in integer registers]"
-msgstr " [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸]"
+msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
+msgstr "%pB: %#<PRIx64>: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
 
-#: coff-arm.c:2310 elf32-arm.c:12122
+#: coff-sh.c:1443
 #, c-format
-msgid " [position independent]"
-msgstr " [Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°]"
+msgid "%pB: fatal: generic symbols retrieved before relaxing"
+msgstr "%pB: ÐºÐ¾Ð±Ð½Ð¾: Ð¾Ð¿ÑˆÑ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ½Ð¸ Ð¿Ñ€Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
 
-#: coff-arm.c:2312
+#: coff-sh.c:2773 cofflink.c:2947
 #, c-format
-msgid " [absolute position]"
-msgstr " [Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜]"
+msgid "%pB: illegal symbol index %ld in relocs"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
 
-#: coff-arm.c:2316
+#: coff-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5314
 #, c-format
-msgid " [interworking flag not initialised]"
-msgstr " [Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾ÐºÑ€ÐµÐ½ÑƒÑ‚Ð°]"
+msgid "%pB: warning: illegal symbol index %ld in relocs"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
+
+#: coff-x86_64.c:147
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr "R_AMD64_IMAGEBASE Ñ�Ð° __ImageBase Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: coff-arm.c:2318
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
 #, c-format
-msgid " [interworking supported]"
-msgstr " [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾]"
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr "%pB: â€žC_STATâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žXCOFF64â€œ-Ð¾Ð¼"
 
-#: coff-arm.c:2320
+#: coff64-rs6000.c:477
 #, c-format
-msgid " [interworking not supported]"
-msgstr " [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾]"
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr "%pB: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° â€žauxâ€œ Ð²Ñ€Ñ�Ñ‚Ð° %#x Ð·Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð½Ñƒ ÐºÐ»Ð°Ñ�Ñƒ %#x"
 
-#: coff-arm.c:2366 elf32-arm.c:11104
+#: coff64-rs6000.c:1598
 #, c-format
-msgid "Warning: Not setting interworking flag of %B since it has already been specified as non-interworking"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð¸Ñ�Ð°Ð¼ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%Bâ€œ Ð¿Ð¾ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð²ÐµÑ› Ð½Ð°Ð²ÐµÐ´ÐµÐ½ ÐºÐ°Ð¾ Ð½ÐµÐ¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²ÐµÐ½Ð¾"
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%d) Ð½Ð° (0x%<PRIx64>) Ð¸Ð¼Ð° Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ r_r-Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ (0x%x)\n"
 
-#: coff-arm.c:2370 elf32-arm.c:11108
+#: coffcode.h:951
 #, c-format
-msgid "Warning: Clearing the interworking flag of %B due to outside request"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð£ÐºÐ»Ð°ÑšÐ°Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%Bâ€œ ÑƒÑ�Ð»ÐµÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ñ�Ð¿Ð¾Ñ™Ð°"
+msgid "%pB: unable to load COMDAT section name"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ â€žCOMDATâ€œ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ°"
 
-#: coff-h8300.c:1096
+#: coffcode.h:976
 #, c-format
-msgid "cannot handle R_MEM_INDIRECT reloc when using %s output"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€žR_MEM_INDIRECTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµÐ¼ ÐºÐ°Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·"
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: coff-i860.c:147
+#: coffcode.h:1148
 #, c-format
-msgid "relocation `%s' not yet implemented"
-msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ˜Ð¾Ñˆ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
+msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€žCOMDATâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ"
 
-#: 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:1159
+#, c-format
+msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žCOMDATâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
 
-#: coff-i960.c:124 coff-i960.c:480
-msgid "uncertain calling convention for non-COFF symbol"
-msgstr "Ð½ÐµÑ�Ð¸Ð³ÑƒÑ€Ð°Ð½ Ð´Ð¾Ð³Ð¾Ð²Ð¾Ñ€ Ð¿Ð¾Ð·Ð¸Ð²Ð° Ð·Ð° Ð½Ðµ-â€žCOFFâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
+#. 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:1267
+#, c-format
+msgid "%pB: warning: ignoring section flag %s in section %s"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
 
-#: coff-m68k.c:484 elf32-bfin.c:5556 elf32-cr16.c:2853 elf32-m68k.c:4632
-msgid "unsupported reloc type"
-msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+#: coffcode.h:1337
+#, c-format
+msgid "%pB (%s): section flag %s (%#lx) ignored"
+msgstr "%pB (%s): Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%#lx) Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°"
 
-#: 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:1954
+#, c-format
+msgid "%pB: overflow reloc count too small"
+msgstr "%pB: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¼Ð°Ð»Ð¸"
 
-#: coff-or32.c:216
-msgid "Unrecognized reloc"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: coffcode.h:1963 coffcode.h:2028
+#, c-format
+msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ñ‚Ð²Ñ€Ñ’ÑƒÑ˜ÐµÐ¼ 0xffff Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°, Ð±ÐµÐ· Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐ°"
 
-#: coff-rs6000.c:2802
+#: coffcode.h:2411
 #, c-format
-msgid "%s: unsupported relocation type 0x%02x"
-msgstr "%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%02x"
+msgid "unrecognized TI COFF target id '0x%x'"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¸Ð´ â€žTI COFFâ€œ Ñ†Ð¸Ñ™Ð° â€ž0x%xâ€œ"
 
-#: coff-rs6000.c:2887
+#: coffcode.h:2690
 #, c-format
-msgid "%s: TOC reloc at 0x%x to symbol `%s' with no TOC entry"
-msgstr "%s: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð½Ð° 0x%x Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ¾Ñ˜Ð¸ Ð½Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² ÑƒÐ½Ð¾Ñ�"
+msgid "%pB: reloc against a non-existent symbol index: %ld"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›ÐµÐ³ Ð¸Ð½Ð´ÐµÐºÑ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %ld"
 
-#: coff-rs6000.c:3638 coff64-rs6000.c:2117
-msgid "%B: symbol `%s' has unrecognized smclas %d"
-msgstr "%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ ÐºÐ»Ð°Ñ�Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%dâ€œ"
+#: coffcode.h:3162
+#, c-format
+msgid "%pB: too many sections (%d)"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d)"
 
-#: coff-sh.c:506
+#: coffcode.h:3690
 #, c-format
-msgid "SH Error: unknown reloc type %d"
-msgstr "Ð“Ñ€ÐµÑˆÐºÐ° ÑˆÐºÐ¾Ñ™ÐºÐµ: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+msgid "%pB: section %pA: string table overflow at offset %ld"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐ¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ %ld"
 
-#: coff-tic4x.c:184 coff-tic54x.c:279 coff-tic80.c:440
+#: coffcode.h:3791
 #, c-format
-msgid "Unrecognized reloc type 0x%x"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° 0x%x"
+msgid "%pB:%s section %s: alignment 2**%u not representable"
+msgstr "%pB:%s Ð¾Ð´ÐµÑ™Ð°Ðº %s: Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ 2**%u Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ð¸"
 
-#: coff-tic4x.c:227
+#: coffcode.h:4532
 #, c-format
-msgid "%s: warning: illegal symbol index %ld in relocs"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
+msgid "%pB: warning: line number table read failed"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ"
 
-#: coff-w65.c:355
+#: coffcode.h:4578 coffcode.h:4592
 #, c-format
-msgid "ignoring reloc %s\n"
-msgstr "Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ\n"
+msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° 0x%lx Ñƒ ÑƒÐ½Ð¾Ñ�Ñƒ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° %d"
 
-#: coffcode.h:1005
-msgid "%B: warning: COMDAT symbol '%s' does not match section name '%s'"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žCOMDATâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð° Ñ�Ð° Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+#: coffcode.h:4606
+#, c-format
+msgid "%pB: warning: illegal symbol in line number entry %d"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ ÑƒÐ½Ð¾Ñ�Ñƒ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° %d"
 
-#. 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â€œ"
+#: coffcode.h:4619
+#, c-format
+msgid "%pB: warning: duplicate line number information for `%s'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¾ Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ€ÐµÐ´Ð° Ð·Ð° â€ž%sâ€œ"
 
-#: coffcode.h:1297
-msgid "%B (%s): Section flag %s (0x%x) ignored"
-msgstr "%B (%s): Ð—Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (0x%x) Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°"
+#: coffcode.h:5043
+#, c-format
+msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° ÐºÐ»Ð°Ñ�Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° â€ž%dâ€œ Ð·Ð° â€ž%sâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
 
-#: coffcode.h:2439
+#: coffcode.h:5183
 #, c-format
-msgid "Unrecognized TI COFF target id '0x%x'"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð¸Ð´ â€žTI COFFâ€œ Ñ†Ð¸Ñ™Ð° â€ž0x%xâ€œ"
+msgid "warning: %pB: local symbol `%s' has no section"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: coffcode.h:2753
-msgid "%B: reloc against a non-existant symbol index: %ld"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›ÐµÐ³ Ð¸Ð½Ð´ÐµÐºÑ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %ld"
+#: coffcode.h:5354
+#, c-format
+msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ %#<PRIx64>"
 
-#: coffcode.h:3311
-msgid "%B: too many sections (%d)"
-msgstr "%B: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%d)"
+#: coffgen.c:255 elf.c:1033
+#, c-format
+msgid "%pB: unable to compress section %s"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð°ÐºÑƒÑ˜ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: coffcode.h:3729
-msgid "%B: section %s: string table overflow at offset %ld"
-msgstr "%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐ¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ %ld"
+#: coffgen.c:265 elf.c:1043
+#, c-format
+msgid "%pB: unable to decompress section %s"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ñ�Ð¿Ð°ÐºÑƒÑ˜ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: coffcode.h:4534
-msgid "%B: warning: line number table read failed"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ"
+#: coffgen.c:1778
+#, c-format
+msgid "%pB: bad string table size %<PRIu64>"
+msgstr "%pB: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ð·Ð° %<PRIu64>"
 
-#: coffcode.h:4564
-msgid "%B: warning: illegal symbol index %ld in line numbers"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld Ñƒ Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð¸Ð¼Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°"
+#: coffgen.c:2162 coffgen.c:2301 cofflink.c:2012 ecoff.c:1456 elf.c:2288
+#: elf.c:2320 pef.c:214 syms.c:788 xcofflink.c:5530
+msgid "<corrupt>"
+msgstr "<Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ>"
 
-#: coffcode.h:4578
-msgid "%B: warning: duplicate line number information for `%s'"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¾ Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ€ÐµÐ´Ð° Ð·Ð° â€ž%sâ€œ"
+#: coffgen.c:2191
+#, c-format
+msgid "<corrupt info> %s"
+msgstr "<Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸> %s"
 
-#: coffcode.h:4978
-msgid "%B: Unrecognized storage class %d for %s symbol `%s'"
-msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° ÐºÐ»Ð°Ñ�Ð° Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° â€ž%dâ€œ Ð·Ð° â€ž%sâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+#: coffgen.c:2797 elflink.c:15435 linker.c:3011
+msgid "%F%P: already_linked_table: %E\n"
+msgstr "%F%P: Ð²ÐµÑ›_Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð°_Ñ‚Ð°Ð±ÐµÐ»Ð°: %E\n"
 
-#: coffcode.h:5104
-msgid "warning: %B: local symbol `%s' has no section"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %B: Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: coffgen.c:3139 elflink.c:14375
+#, c-format
+msgid "removing unused section '%pA' in file '%pB'"
+msgstr "ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð½ÐµÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€ž%pBâ€œ"
 
-#: coffcode.h:5248
-msgid "%B: illegal relocation type %d at address 0x%lx"
-msgstr "%B: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ 0x%lx"
+#: coffgen.c:3216 elflink.c:14606
+msgid "warning: gc-sections option ignored"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€žgcâ€œ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°"
 
-#: coffgen.c:179 elf.c:1030
-msgid "%B: unable to initialize compress status for section %s"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ�Ð°Ð¶Ð¸Ð¼Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+#: cofflink.c:398
+#, c-format
+msgid "warning: symbol `%s' is both section and non-section"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: coffgen.c:199 elf.c:1050
-msgid "%B: unable to initialize decompress status for section %s"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¸Ð²Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+#: cofflink.c:503 elf64-ia64-vms.c:5198 elflink.c:5560
+#, c-format
+msgid "warning: type of symbol `%s' changed from %d to %d in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ð¸Ð· â€ž%dâ€œ Ñƒ â€ž%dâ€œ Ð·Ð° â€ž%pBâ€œ"
 
-#: coffgen.c:1685
-msgid "%B: bad string table size %lu"
-msgstr "%B: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ð·Ð° %lu"
+#: cofflink.c:2340
+#, c-format
+msgid "%pB: relocs in section `%pA', but it has no contents"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ, Ð°Ð»Ð¸ Ð½ÐµÐ¼Ð° Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°"
 
-#: coffgen.c:2608 elflink.c:12906 linker.c:3136
-msgid "%F%P: already_linked_table: %E\n"
-msgstr "%F%P: Ð²ÐµÑ›_Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð°_Ñ‚Ð°Ð±ÐµÐ»Ð°: %E\n"
+#: cofflink.c:2403 elflink.c:11809
+#, 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: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â€œ"
+#: cofflink.c:2598
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr "%pB: ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð½ÐµÐ¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ñ™Ð°Ñ˜ÑƒÑ›Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ (Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ 0x%<PRIx64>)"
 
-#: cofflink.c:2416
-msgid "%B: relocs in section `%A', but it has no contents"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%Aâ€œ, Ð°Ð»Ð¸ Ð½ÐµÐ¼Ð° Ð½Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°"
+#: cofflink.c:2716
+#, c-format
+msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
+msgstr "%pB: %pA: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %#x > 0xffff"
 
-#: 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"
+#: cofflink.c:2724
+#, c-format
+msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
+msgstr "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 
-#: cofflink.c:2777 coffswap.h:826
+#: cofflink.c:3118
 #, c-format
-msgid "%s: %s: reloc overflow: 0x%lx > 0xffff"
-msgstr "%s: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%lx > 0xffff"
+msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
+msgstr "%pB: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
 
-#: cofflink.c:2786 coffswap.h:812
+#: coffswap.h:826
 #, c-format
-msgid "%s: warning: %s: line number overflow: 0x%lx > 0xffff"
-msgstr "%s: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff"
+msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
+msgstr "%pB: %s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%lx > 0xffff"
 
-#: 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"
+#: compress.c:748 compress.c:765 libbfd.c:1322
+#, c-format
+msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB(%pA) Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ (%#<PRIx64> Ð±Ð°Ñ˜Ñ‚Ð°)"
 
-#: cpu-arm.c:334
+#: cpu-arm.c:438
 #, c-format
-msgid "warning: unable to update contents of %s section in %s"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž%sâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€ž%sâ€œ"
+msgid "warning: unable to update contents of %s section in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž%sâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ %pB"
 
-#: dwarf2.c:514
+#: dwarf2.c:702
 #, c-format
-msgid "Dwarf Error: Can't find %s section."
+msgid "DWARF error: can't find %s section."
 msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ."
 
-#: dwarf2.c:543
+#: dwarf2.c:710
 #, c-format
-msgid "Dwarf Error: Offset (%lu) greater than or equal to %s size (%lu)."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜ (%lu) Ñ˜Ðµ >= Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ %s (%lu)."
+msgid "DWARF error: section %s has no contents"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ð¸ÑˆÑ‚Ð°"
 
-#: dwarf2.c:1071
+#. PR 26946
+#: dwarf2.c:719
 #, c-format
-msgid "Dwarf Error: Invalid or unhandled FORM value: %#x."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žFORMâ€œ: %#x."
+msgid "DWARF error: section %s is too big"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº"
 
-#: dwarf2.c:1332
-msgid "Dwarf Error: mangled line number section (bad file number)."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð‘Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½ (Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ)."
+#: dwarf2.c:754
+#, c-format
+msgid "DWARF error: offset (%<PRIu64>) greater than or equal to %s size (%<PRIu64>)"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ (%<PRIu64>) Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¸Ð»Ð¸ Ñ˜ÐµÐ´Ð½Ð°Ðº Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ %s (%<PRIu64>)"
+
+#: dwarf2.c:1501
+msgid "DWARF error: info pointer extends beyond end of attributes"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð½Ñ„Ð¾ ÑƒÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ ÐºÑ€Ð°Ñ˜ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°"
 
-#: dwarf2.c:1590
+#: dwarf2.c:1693
 #, c-format
-msgid "Dwarf Error: Unhandled .debug_line version %d."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ â€ž.debug_lineâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d."
+msgid "DWARF error: invalid or unhandled FORM value: %#x"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žFORMâ€œ: %#x"
+
+#: dwarf2.c:2050
+msgid "DWARF error: mangled line number section (bad file number)"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½ (Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ)"
+
+#: dwarf2.c:2614
+msgid "DWARF error: zero format count"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÑƒÐ»Ñ‚Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð·Ð°Ð¿Ð¸Ñ�Ð°"
+
+#: dwarf2.c:2624
+#, c-format
+msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%<PRIx64>) Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ"
+
+#: dwarf2.c:2663
+#, c-format
+msgid "DWARF error: unknown format content type %<PRIu64>"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° â€ž%<PRIu64>â€œ"
+
+#: dwarf2.c:2736
+#, c-format
+msgid "DWARF error: line info section is too small (%<PRId64>)"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸ (%<PRId64>)"
+
+#: dwarf2.c:2763
+#, 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:2776
+#, c-format
+msgid "DWARF error: unhandled .debug_line version %d"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ â€ž.debug_lineâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
+
+#: dwarf2.c:2785
+msgid "DWARF error: ran out of room reading prologue"
+msgstr "â€žDWARFÐ´ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñ‡Ð¸Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ð¿Ñ€Ð¾Ð»Ð¾Ð³"
+
+#: dwarf2.c:2801
+#, c-format
+msgid "DWARF error: line info unsupported segment selector size %u"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¸Ð·Ð±Ð¸Ñ€Ð°Ñ‡Ð° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ€ÐµÐ´Ð° %u"
+
+#: dwarf2.c:2823
+msgid "DWARF error: invalid maximum operations per instruction"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð° Ð¿Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¸"
+
+#: dwarf2.c:2835
+msgid "DWARF error: ran out of room reading opcodes"
+msgstr "â€žDWARFÐ´ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñ‡Ð¸Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð¿ÐºÐ¾Ð´Ð¾Ð²Ðµ"
+
+#: dwarf2.c:3012
+msgid "DWARF error: mangled line number section"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½"
 
-#: dwarf2.c:1612
-msgid "Dwarf Error: Invalid maximum operations per instruction."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ð° Ð¿Ð¾ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¸."
+#: dwarf2.c:3483
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ±Ð°Ñ‡ÐµÑšÐµ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¾Ð³ Ð¿Ñ€Ð¸Ð¼ÐµÑ€ÐºÐ° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾"
 
-#: dwarf2.c:1807
-msgid "Dwarf Error: mangled line number section."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð‘Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ð´Ñ�ÐµÑ‡ÐµÐ½."
+#: dwarf2.c:3517 dwarf2.c:3607
+msgid "DWARF error: invalid abstract instance DIE ref"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð°Ð¿Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð°Ð½ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð°Ðº â€žDIEâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ"
 
-#: dwarf2.c:2160
+#: dwarf2.c:3533
 #, 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:3585
 #, 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:3622 dwarf2.c:3938 dwarf2.c:4511
 #, 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:4211
 #, 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 0x%lx"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´Ñ€ÐµÐ´Ð±Ñƒ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ðµ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ 0Ã—%lx"
 
-#: dwarf2.c:2586
+#: dwarf2.c:4357 dwarf2.c:4611
+msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ð° â€žDW_AT_comp_dirâ€œ Ñ˜Ðµ Ð½Ð°Ñ’ÐµÐ½Ð° Ñ�Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð¾Ð¼ Ð½Ðµ-Ð½Ð¸Ñ�ÐºÐµ"
+
+#: dwarf2.c:4428
+#, 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:4475
+#, c-format
+msgid "DWARF error: found address size '%u', this reader can not handle sizes greater than '%u'"
+msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%uâ€œ, Ð¾Ð²Ð°Ñ˜ Ñ‡Ð¸Ñ‚Ð°Ñ‡ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ€Ð°Ð´Ð¸ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°Ð¼Ð° Ð²ÐµÑ›Ð¸Ð¼ Ð¾Ð´ â€ž%uâ€œ"
+
+#: ecoff.c:1017
 #, c-format
-msgid "Dwarf Error: Bad abbrev number: %u."
-msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð›Ð¾Ñˆ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¸ Ð±Ñ€Ð¾Ñ˜: %u."
+msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žisymMaxâ€œ (%ld) Ñ˜Ðµ Ð²ÐµÑ›Ðµ Ð¾Ð´ â€žifdMaxâ€œ (%ld)"
 
-#: ecoff.c:1233
+#: ecoff.c:1313
 #, c-format
-msgid "Unknown basic type %d"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ"
+msgid "unknown basic type %d"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ"
 
-#: ecoff.c:1490
+#: ecoff.c:1571
 #, c-format
 msgid ""
 "\n"
@@ -597,7 +768,7 @@ msgstr ""
 "\n"
 "      ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1497 ecoff.c:1500
+#: ecoff.c:1578 ecoff.c:1581
 #, c-format
 msgid ""
 "\n"
@@ -606,7 +777,7 @@ msgstr ""
 "\n"
 "      ÐŸÑ€Ð²Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1512
+#: ecoff.c:1596
 #, c-format
 msgid ""
 "\n"
@@ -615,7 +786,7 @@ msgstr ""
 "\n"
 "      ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %-7ld   Ð’Ñ€Ñ�Ñ‚Ð°:  %s"
 
-#: ecoff.c:1519
+#: ecoff.c:1604
 #, c-format
 msgid ""
 "\n"
@@ -624,7 +795,7 @@ msgstr ""
 "\n"
 "      Ð›Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1527
+#: ecoff.c:1612
 #, c-format
 msgid ""
 "\n"
@@ -633,7 +804,7 @@ msgstr ""
 "\n"
 "      struct; ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1532
+#: ecoff.c:1617
 #, c-format
 msgid ""
 "\n"
@@ -642,7 +813,7 @@ msgstr ""
 "\n"
 "      union; ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1537
+#: ecoff.c:1622
 #, c-format
 msgid ""
 "\n"
@@ -651,7 +822,7 @@ msgstr ""
 "\n"
 "      enum; ÐŸÐ¾Ñ�Ð»ÐµÐ´ÑšÐ¸+1 Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %ld"
 
-#: ecoff.c:1543
+#: ecoff.c:1630
 #, c-format
 msgid ""
 "\n"
@@ -660,138 +831,339 @@ 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:417 elf-attrs.c:447 elf-attrs.c:623
+msgid "error adding attribute"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ð´Ð¾Ð´Ð°Ð²Ð°ÑšÐ° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð°"
+
+#: elf-attrs.c:503
+#, c-format
+msgid "%pB: error: attribute section '%pA' too big: %#llx"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ðµ â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº: %#llx"
+
+#: elf-attrs.c:540
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¾Ñ�Ð¾Ð±Ð¸Ð½Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°: %ld"
+
+#: elf-attrs.c:673
+#, c-format
+msgid "error: %pB: object has vendor-specific contents that must be processed by the '%s' toolchain"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¿Ñ€Ð¾Ð´Ð°Ð²Ñ†Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ ÐºÐ¾Ñ˜Ð¸ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð°Ð»Ð°Ñ‚Ð½Ð¸Ð¼ Ð»Ð°Ð½Ñ†ÐµÐ¼ â€ž%sâ€œ"
+
+#: elf-attrs.c:683
+#, 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:946
+#, c-format
+msgid "discarding zero address range FDE in %pB(%pA).\n"
+msgstr "Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜ÐµÐ¼ Ð½ÑƒÐ»Ñ‚Ð¸ Ð¾Ð¿Ñ�ÐµÐ³ Ð°Ð´Ñ€ÐµÑ�Ðµ â€žFDEâ€œ Ñƒ â€ž%pB(%pA)â€œ.\n"
+
+#: elf-eh-frame.c:1051
+#, 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:1542
+#, 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:1549
+msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation dropped"
+msgstr "Ð±ÑƒÐ´ÑƒÑ›Ð° ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐ° Ð¾ â€žFDEâ€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÑƒ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð° Ð¾Ð´Ð±Ð°Ñ†Ð¸Ð²Ð°ÑšÐµ â€ž.eh_frame_hdrâ€œ Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ˜Ðµ"
+
+#: elf-eh-frame.c:1872
+#, c-format
+msgid "%pB: %pA not in order"
+msgstr "%pB: â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÑƒ"
+
+#: elf-eh-frame.c:1886
+#, c-format
+msgid "%pB: %pA invalid input section size"
+msgstr "%pB: â€ž%pAâ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™Ð°Ðº ÑƒÐ»Ð°Ð·Ð°"
+
+#: elf-eh-frame.c:1894
+#, c-format
+msgid "%pB: %pA points past end of text section"
+msgstr "%pB: â€ž%pAâ€œ Ñ‚Ð°Ñ‡Ð°ÐºÐ° Ð¿Ñ€ÐµÐ»Ð°Ð·Ð¸ ÐºÑ€Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ‚ÐµÐºÑ�Ñ‚Ð°"
+
+#: elf-eh-frame.c:2147
+msgid "DW_EH_PE_datarel unspecified for this architecture"
+msgstr "â€žDW_EH_PE_datarelâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
+
+#: elf-eh-frame.c:2317
+#, c-format
+msgid "invalid output section for .eh_frame_entry: %pA"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° â€ž.eh_frame_entryâ€œ: %pA"
+
+#: elf-eh-frame.c:2340
+#, c-format
+msgid "invalid contents in %pA section"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
+
+#: elf-eh-frame.c:2496
+msgid ".eh_frame_hdr entry overflow"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€ž.eh_frame_hdrâ€œ ÑƒÐ½Ð¾Ñ�Ð°"
+
+#: elf-eh-frame.c:2498
+msgid ".eh_frame_hdr refers to overlapping FDEs"
+msgstr "â€ž.eh_frame_hdrâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°Ñ˜ÑƒÑ›Ðµ â€žFDEâ€œ-Ð¾Ð²Ðµ"
+
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1704
+#, 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:2146 elf32-bfin.c:3132 elf32-cr16.c:1429
+#: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624
+#: elf32-m32r.c:2837 elf32-m68hc1x.c:1270 elf32-mep.c:522 elf32-metag.c:1983
+#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6092
+#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5081
+#: elf32-tilepro.c:3369 elf32-v850.c:2297 elf32-visium.c:680
+#: elf32-xstormy16.c:930 elf64-bpf.c:339 elf64-mmix.c:1537 elfxx-tilegx.c:3742
 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:2150 elf32-bfin.c:3136 elf32-cr16.c:1433
+#: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2841 elf32-m68hc1x.c:1274
+#: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681 elf32-moxie.c:292
+#: elf32-msp430.c:1510 elf32-nds32.c:6096 elf32-or1k.c:1899 elf32-score.c:2728
+#: elf32-score7.c:2539 elf32-spu.c:5085 elf32-tilepro.c:3373 elf32-v850.c:2301
+#: elf32-visium.c:684 elf32-xstormy16.c:934 elf64-mmix.c:1541
+#: elfxx-mips.c:10642 elfxx-tilegx.c:3746
 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:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2845 elf32-m68hc1x.c:1278
+#: elf32-microblaze.c:1685 elf32-nds32.c:6100 elf32-score.c:2732
+#: elf32-score7.c:2543 elf32-spu.c:5089
 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:2167 elf32-bfin.c:3144 elf32-cr16.c:1441
+#: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636
+#: elf32-m32r.c:2849 elf32-m68hc1x.c:1282 elf32-mep.c:534 elf32-metag.c:1995
+#: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518 elf32-mt.c:410
+#: elf32-nds32.c:6104 elf32-or1k.c:1907 elf32-score.c:2741 elf32-score7.c:2547
+#: elf32-spu.c:5093 elf32-tilepro.c:3381 elf32-v850.c:2321 elf32-visium.c:692
+#: elf32-xstormy16.c:942 elf64-bpf.c:352 elf64-mmix.c:1549 elfxx-tilegx.c:3754
 msgid "internal error: unknown error"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°"
 
-#: elf-m10300.c:1021
+#: elf-m10300.c:1030
 #, 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:1197
+#, c-format
+msgid "%pB: %s' accessed both as normal and thread local symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
 
-#: elf-m10300.c:2173
+#: elf-m10300.c:2093 elf32-arm.c:13472 elf32-i386.c:3503 elf32-m32r.c:2331
+#: elf32-m68k.c:3929 elf32-s390.c:3072 elf32-sh.c:3672 elf32-tilepro.c:3272
+#: elf32-xtensa.c:3020 elf64-s390.c:3129 elf64-x86-64.c:4564 elfxx-sparc.c:2913
+#: elfxx-sparc.c:3810 elfxx-tilegx.c:3665 elfnn-aarch64.c:5725
+#: elfnn-aarch64.c:7343 elfnn-kvx.c:2772
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf-m10300.c:2155
 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:2159
+#, 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:2162
 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:2650 elf32-avr.c:2483 elf32-frv.c:5621 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2680 reloc.c:8370 reloc16.c:155 elfnn-ia64.c:365
+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:184
+#, c-format
+msgid "warning: %pB: corrupt memory sealing size: 0x%x"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ: 0x%x"
+
+#: elf-properties.c:203
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ (0x%x) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: 0x%x>"
+
+#: elf-properties.c:228
+#, c-format
+msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žGNU_PROPERTY_TYPEâ€œ (%ld) Ð²Ñ€Ñ�Ñ‚Ð°: 0x%x"
+
+#: elf-properties.c:415
+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:421
+msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (0x%v) Ð¸ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾)\n"
+
+#: elf-properties.c:430 elf-properties.c:508
+msgid "Removed property %W to merge %pB and %pB\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ\n"
+
+#: elf-properties.c:434
+msgid "Removed property %W to merge %pB and %pB (not found)\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾)\n"
+
+#: elf-properties.c:451
+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:460
+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:502
+msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
+msgstr "Ð£ÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ â€ž%Wâ€œ Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%pBâ€œ (Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾) Ð¸ â€ž%pBâ€œ (0x%v)\n"
+
+#: elf-properties.c:640 elfxx-aarch64.c:748 elfxx-x86.c:4348
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð“Ð�Ð£ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°\n"
+
+#: elf-properties.c:644 elfxx-aarch64.c:752 elfxx-x86.c:4353
+#, c-format
+msgid "%F%pA: failed to align section\n"
+msgstr "%F%pA: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#. Merge .note.gnu.property sections.
+#: elf-properties.c:749 elf-properties.c:751
+msgid "\n"
+msgstr "\n"
+
+#: elf-properties.c:750
+msgid "Merging program properties\n"
+msgstr "Ð¡Ñ‚Ð°Ð¿Ð°Ð¼ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°\n"
+
+#: elf-sframe.c:239
+#, c-format
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€ž%pB(%pA)â€œ; Ð½ÐµÑ›Ðµ Ð±Ð¸Ñ‚Ð¸ Ð½Ð°Ð¿Ñ€Ð°Ð²Ñ™ÐµÐ½Ð¾ â€ž.sframeâ€œ"
+
+#: elf-sframe.c:399
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr "ÑƒÐ»Ð°Ð·Ð½Ð¸ â€žSFrameâ€œ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ â€žabiâ€œ-ÐµÐ¼ Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð°Ñ˜Ñƒ â€ž.sframeâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ"
+
+#: elf-sframe.c:410
+msgid "input SFrame sections with different format versions prevent .sframe generation"
+msgstr "ÑƒÐ»Ð°Ð·Ð½Ð¸ â€žSFrameâ€œ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¸Ð·Ð´Ð°ÑšÐ¸Ð¼Ð° Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° Ñ�Ð¿Ñ€ÐµÑ‡Ð°Ð²Ð°Ñ˜Ñƒ â€ž.sframeâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ"
+
+#: elf.c:299
+#, c-format
+msgid "%pB: string table [%u] is corrupt"
+msgstr "%pB(: Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½Ð¸Ñ�ÐºÐµ [%u] Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð°"
+
+#. PR 17512: file: f057ec89.
+#: elf.c:328
+#, c-format
+msgid "%pB: attempt to load strings from a non-string section (number %d)"
+msgstr "%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ Ð½Ð¸Ñ�ÐºÐµ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° Ð½Ðµ-Ð½Ð¸Ñ�ÐºÐµ (Ð±Ñ€Ð¾Ñ˜ %d)"
+
+#: elf.c:353
+#, c-format
+msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ñ�ÐºÐµ â€ž%u >= %<PRIu64>â€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#: elf.c:511 elf32-arm.c:17773 elfnn-aarch64.c:8343 elfnn-loongarch.c:6132
+#: elfnn-riscv.c:3688
+#, c-format
+msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section"
+msgstr "â€ž%pBâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð±Ñ€Ð¾Ñ˜ %lu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ñ�Ñ‚Ð¾Ñ˜ÐµÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žSHT_SYMTAB_SHNDXâ€œ"
+
+#: elf.c:614
+#, c-format
+msgid "%pB: could not read contents of group [%u]"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð³Ñ€ÑƒÐ¿Ðµ [%u]"
+
+#: elf.c:645
+#, c-format
+msgid "%pB: invalid entry (%#x) in group [%u]"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ� (%#x) Ñƒ Ð³Ñ€ÑƒÐ¿Ð¸ [%u]"
+
+#: elf.c:664
+#, c-format
+msgid "%pB: unexpected type (%#x) section `%s' in group [%u]"
+msgstr "%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° [%#x] Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ð³Ñ€ÑƒÐ¿Ð¸ [%u]"
+
+#: elf.c:740
+#, c-format
+msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
+msgstr "%pB: â€žsh_link [%d]â€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾"
+
+#: elf.c:769
+#, c-format
+msgid "%pB: section group entry number %u is corrupt"
+msgstr "%pB: Ð±Ñ€Ð¾Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° ÑƒÐ½Ð¾Ñ�Ð° Ð³Ñ€ÑƒÐ¿Ðµ %u Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½"
+
+#: elf.c:1051
+#, c-format
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð·Ð°Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½ Ñ�Ð° â€žzstdâ€œ, Ð°Ð»Ð¸ BFD Ð½Ð¸Ñ˜Ðµ Ð¸Ð·Ð³Ñ€Ð°Ñ’ÐµÐ½ Ñ�Ð° â€žzstdâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ¾Ð¼"
+
+#: elf.c:1237
+#, c-format
+msgid "%pB: invalid sh_link field (%d) in section number %d"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žsh_linkâ€œ Ð¿Ð¾Ñ™Ðµ (%d) Ñƒ Ð±Ñ€Ð¾Ñ˜Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° %d"
+
+#: elf.c:1253
+#, c-format
+msgid "%pB: failed to find link section for section %d"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð²ÐµÐ·Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº %d"
 
-#: elf.c:1174
+#: elf.c:1280
+#, c-format
+msgid "%pB: failed to find info section for section %d"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº %d"
+
+#: elf.c:1457
 #, c-format
 msgid ""
 "\n"
@@ -800,7 +1172,7 @@ msgstr ""
 "\n"
 "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°:\n"
 
-#: elf.c:1216
+#: elf.c:1499
 #, c-format
 msgid ""
 "\n"
@@ -809,7 +1181,7 @@ msgstr ""
 "\n"
 "Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº:\n"
 
-#: elf.c:1352
+#: elf.c:1638
 #, c-format
 msgid ""
 "\n"
@@ -818,7 +1190,7 @@ msgstr ""
 "\n"
 "Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¸Ð·Ð´Ð°ÑšÐ°:\n"
 
-#: elf.c:1377
+#: elf.c:1663
 #, c-format
 msgid ""
 "\n"
@@ -827,1797 +1199,2594 @@ msgstr ""
 "\n"
 "Ð£Ð¿ÑƒÑ‚Ð° Ð¸Ð·Ð´Ð°ÑšÐ°:\n"
 
-#: elf.c:1382
+#: elf.c:1668
 #, 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:1917
+#, c-format
+msgid "%pB: DT_STRTAB table is corrupt"
+msgstr "%pB: DT_STRTAB Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð°"
 
-#: 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:2426
+#, c-format
+msgid "%pB: warning: loop in section dependencies detected"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿ÐµÑ‚Ñ™Ð° Ñƒ Ð·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð°"
 
-#: elf.c:1989
-msgid "%B: don't know how to handle processor specific section `%s' [0x%8x]"
-msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+#: elf.c:2533
+#, c-format
+msgid "%pB: warning: multiple 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:2618
+#, c-format
+msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð²Ð¸ÑˆÐµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ %u"
 
-#: elf.c:2010
-msgid "%B: don't know how to handle section `%s' [0x%8x]"
-msgstr "%B: Ð½Ðµ Ð·Ð½Ð°Ð¼ ÐºÐ°ÐºÐ¾ Ð´Ð° Ð¾Ð±Ñ€Ð°Ð´Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ [0x%8x]"
+#: elf.c:2737
+#, c-format
+msgid "%pB: invalid link %u for reloc section %s (index %u)"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ·Ð° â€ž%uâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ (Ð¸Ð½Ð´ÐµÐºÑ� â€ž%uâ€œ)"
 
-#: elf.c:2648
+#: elf.c:2794
 #, c-format
-msgid "warning: section `%A' type changed to PROGBITS"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° â€ž%Aâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ñƒ â€žPROGBITSâ€œ"
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ â€“ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼"
 
-#: elf.c:3015
-msgid "%B: too many sections: %u"
-msgstr "%B: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %u"
+#: elf.c:2879 elf.c:2893 elf.c:2904 elf.c:2917
+#, c-format
+msgid "%pB: unknown type [%#x] section `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° [%#x] Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: 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:3586
+#, c-format
+msgid "%pB: error: alignment power %d of section `%pA' is too big"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð½Ð°Ð³Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° %d Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°"
 
-#: 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:3621
+#, c-format
+msgid "warning: section `%pA' type changed to PROGBITS"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²Ñ€Ñ�Ñ‚Ð° â€ž%pAâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð° Ñƒ â€žPROGBITSâ€œ"
 
-#: elf.c:4126
-msgid "%B: TLS sections are not adjacent:"
-msgstr "%B: Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð½Ð¸Ñ�Ñƒ Ñ�ÑƒÑ�ÐµÐ´Ð½Ð¸:"
+#: elf.c:4130
+#, c-format
+msgid "%pB: too many sections: %u"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %u"
 
-#: elf.c:4133
+#: elf.c:4216
 #, c-format
-msgid "\t    TLS: %A"
-msgstr "\t    Ð¢Ð›Ð¡: %A"
+msgid "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'"
+msgstr "%pB: â€žsh_linkâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ ÑƒÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¾Ð´ â€ž%pBâ€œ"
 
-#: elf.c:4137
+#: elf.c:4234
 #, c-format
-msgid "\tnon-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:4596
-msgid "%B: The first section in the PT_DYNAMIC segment is not the .dynamic section"
-msgstr "%B: ÐŸÑ€Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ â€žPT_DYNAMICâ€œ Ð½Ð¸Ñ˜Ðµ â€ž.dynamicâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: elf.c:4830
+#, c-format
+msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d"
+msgstr "%pB: â€žGNU_MBINDâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žsh_infoâ€œ Ð¿Ð¾Ñ™Ðµ: %d"
 
-#: elf.c:4621
-msgid "%B: Not enough room for program headers, try linking with -N"
-msgstr "%B: Ð�ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð·Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÑ‚Ðµ Ñ�Ð° â€ž-Nâ€œ"
+#: elf.c:5013
+msgid "%F%P: failed to size relative relocations\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
 
-#: elf.c:4707
-msgid "%B: section %A lma %#lx adjusted to %#lx"
-msgstr "%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%A lma %#lxâ€œ Ñ˜Ðµ Ð´Ð¾Ñ‚ÐµÑ€Ð°Ð½ Ð½Ð° %#lx"
+#: elf.c:5440
+#, c-format
+msgid "%pB: TLS sections are not adjacent:"
+msgstr "%pB: Ð¢Ð›Ð¡ Ð¾Ð´ÐµÑ™Ñ†Ð¸ Ð½Ð¸Ñ�Ñƒ Ñ�ÑƒÑ�ÐµÐ´Ð½Ð¸:"
 
-#: elf.c:4843
-msgid "%B: section `%A' can't be allocated in segment %d"
-msgstr "%B: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð´ÐµÐ»Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ %d"
+#: elf.c:5447
+#, c-format
+msgid "\t    TLS: %pA"
+msgstr "\t    Ð¢Ð›Ð¡: %pA"
 
-#: elf.c:4892
-msgid "%B: warning: allocated section `%s' not in segment"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ"
+#: elf.c:5451
+#, c-format
+msgid "\tnon-TLS: %pA"
+msgstr "\tÐ½Ðµ-Ð¢Ð›Ð¡: %pA"
 
-#: elf.c:5473
-msgid "%B: symbol `%s' required but not present"
-msgstr "%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð°Ð½"
+#: elf.c:6075
+#, c-format
+msgid "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section"
+msgstr "%pB: ÐŸÑ€Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ â€žPT_DYNAMICâ€œ Ð½Ð¸Ñ˜Ðµ â€ž.dynamicâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: elf.c:5811
-msgid "%B: warning: Empty loadable segment detected, is this intentional ?\n"
-msgstr "%B: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¿Ð¾Ð´ÐµÐ¾Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸, Ð´Ð° Ð»Ð¸ Ñ˜Ðµ Ñ‚Ð¾ Ð½Ð°Ð¼ÐµÑ€Ð°Ð²Ð°Ð½Ð¾ ?\n"
+#: elf.c:6101
+#, c-format
+msgid "%pB: not enough room for program headers, try linking with -N"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð° Ð·Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÑ‚Ðµ Ñ�Ð° â€ž-Nâ€œ"
 
-#: elf.c:6867
+#: elf.c:6222
 #, c-format
-msgid "Unable to find equivalent output section for symbol '%s' from section '%s'"
-msgstr "Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÐµÐºÐ²Ð¸Ð²Ð°Ð»ÐµÐ½Ñ‚Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pA lma %#<PRIx64>â€œ Ñ˜Ðµ Ð´Ð¾Ñ‚ÐµÑ€Ð°Ð½ Ð½Ð° %#<PRIx64>"
 
-#: elf.c:7915
-msgid "%B: unsupported relocation type %s"
-msgstr "%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %s Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+#. 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:6362
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žPHDRâ€œ Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²ÐµÐ½ â€žLOADâ€œ Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ¾Ð¼"
 
-#: 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:6402
+#, c-format
+msgid "%pB: section `%pA' can't be allocated in segment %u"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð¾Ð´ÐµÐ»Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ %u"
 
-#: 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:6543
+#, c-format
+msgid "%pB: warning: allocated section `%s' not in segment"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð´ÐµÐ¾ÐºÑƒ"
+
+#: elf.c:6678
+#, c-format
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð½Ð¸Ñ˜ÐµÐ´Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½Ð° â€žPT_GNU_RELROâ€œ Ð¿Ð¾Ð´ÐµÐ¾Ðº"
+
+#: elf.c:6709
+#, c-format
+msgid "%pB: error: non-load segment %d includes file header and/or program header"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð½Ðµ-ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° %d ÑƒÐºÑ™ÑƒÑ‡ÑƒÑ˜Ðµ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¸/Ð¸Ð»Ð¸ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°"
+
+#: elf.c:6862
+#, c-format
+msgid "error: %pB has a TLS segment with execute permission"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¢Ð›Ð¡ Ð¿Ð¾Ð´ÐµÐ¾Ðº Ñ�Ð° Ð¾Ð²Ð»Ð°ÑˆÑ›ÐµÑšÐµÐ¼ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°"
+
+#: elf.c:6868
+#, c-format
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¢Ð›Ð¡ Ð¿Ð¾Ð´ÐµÐ¾Ðº Ñ�Ð° Ð¾Ð²Ð»Ð°ÑˆÑ›ÐµÑšÐµÐ¼ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°"
 
-#: elf32-arm.c:3988 elf32-arm.c:5433
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:2324
+#: elf.c:6883
 #, c-format
-msgid "%s: cannot create stub entry %s"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð¿Ñ€Ð¸Ð²Ð¸Ð´Ð½Ð¸ ÑƒÐ½Ð¾Ñ� â€ž%sâ€œ"
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð£Ð§Ð˜Ð¢Ð�Ðˆ Ñ�Ð° Ð¾Ð²Ð»Ð°ÑˆÑ›ÐµÑšÐ¸Ð¼Ð° Ð¿Ð¸Ñ�Ð°ÑšÐ° Ð¸ Ð±Ñ€Ð¸Ñ�Ð°ÑšÐ°"
 
-#: elf32-arm.c:5549
+#: elf.c:6889
 #, c-format
-msgid "unable to find THUMB glue '%s' for '%s'"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žTHUMBâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¿Ð¾Ð´ÐµÐ¾Ðº Ð£Ð§Ð˜Ð¢Ð�Ðˆ Ñ�Ð° Ð¾Ð²Ð»Ð°ÑˆÑ›ÐµÑšÐ¸Ð¼Ð° Ð¿Ð¸Ñ�Ð°ÑšÐ° Ð¸ Ð±Ñ€Ð¸Ñ�Ð°ÑšÐ°"
 
-#: elf32-arm.c:5585
+#: elf.c:7284
 #, c-format
-msgid "unable to find ARM glue '%s' for '%s'"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ð½Ð°Ñ’ÐµÐ¼ â€žARMâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+msgid "%pB: symbol `%s' required but not present"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð°Ð½"
 
-#: elf32-arm.c:6123
-msgid "%B: BE8 images only valid in big-endian mode."
-msgstr "%B: â€žBE8â€œ Ñ�Ð»Ð¸ÐºÐµ Ñ�Ñƒ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ñ�Ð°Ð¼Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸."
+#: elf.c:7661
+#, c-format
+msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¿Ð¾Ð´ÐµÐ¾Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð½Ð° â€žvaddr=%#<PRIx64>â€œ, Ð´Ð° Ð»Ð¸ Ñ˜Ðµ Ñ‚Ð¾ Ð½Ð°Ð¼ÐµÑ€Ð°Ð²Ð°Ð½Ð¾?"
+
+#: elf.c:8334
+#, c-format
+msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° Ð·Ð° â€ž%#<PRIx64>â€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾"
+
+#: elf.c:8837
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€ÑƒÐºÑƒÑ˜ÐµÐ¼ Ñ�Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÐ° %x Ñƒ Ð•Ð›Ð¤ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ.  ÐšÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ›Ñƒ â€žABSâ€œ."
+
+#: elf.c:8867
+#, c-format
+msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ ÐµÐºÐ²Ð¸Ð²Ð°Ð»ÐµÐ½Ñ‚Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð· Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+
+#: elf.c:9300
+#, c-format
+msgid "%pB: .gnu.version_r invalid entry"
+msgstr "%pB: â€ž.gnu.version_râ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ�"
+
+#: elf.c:9478
+#, c-format
+msgid "%pB: .gnu.version_d invalid entry"
+msgstr "%pB: â€ž.gnu.version_dâ€œ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ ÑƒÐ½Ð¾Ñ�"
+
+#: elf.c:9981
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¸ÑˆÐµÐ¼ Ð¿Ñ€ÐµÐºÐ¾ ÐºÑ€Ð°Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ°"
+
+#: elf.c:9993
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÐ¿Ð¸ÑˆÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ Ð¿Ñ€Ð°Ð·Ð½Ñƒ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ"
+
+#: elf.c:10108 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7675
+#: elf32-ppc.c:8863 elf64-ppc.c:16860
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elf.c:10923
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žwin32pstatus %sâ€œ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ %lu Ð±Ð°Ñ˜Ñ‚Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¼Ð°Ð»Ð¾"
+
+#: elf.c:11002
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr "%pB: â€žwin32pstatus NOTE_INFO_MODULEâ€œ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ %lu Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¼Ð°Ð»Ð¾ Ð´Ð° Ð±Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ð»Ð¾ Ð½Ð°Ð·Ð¸Ð² Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ %u"
+
+#: elf.c:13640
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr "â€žGNU_MBINDâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�Ð°Ð¼Ð¾ Ð“Ð½Ñƒ Ð¸ Ð¤Ñ€Ð¸Ð‘Ð¡Ð” Ð¼ÐµÑ‚Ð°Ð¼Ð°"
+
+#: elf.c:13643
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr "Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€žSTT_GNU_IFUNCâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ð“Ð½Ñƒ Ð¸ Ð¤Ñ€Ð¸Ð‘Ð¡Ð” Ð¼ÐµÑ‚Ð°Ð¼Ð°"
+
+#: elf.c:13646
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr "Ñ�Ð²ÐµÐ·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€žSTB_GNU_UNIQUEâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ð“Ð½Ñƒ Ð¸ Ð¤Ñ€Ð¸Ð‘Ð¡Ð” Ð¼ÐµÑ‚Ð°Ð¼Ð°"
+
+#: elf.c:13649
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr "â€žGNU_RETAINâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�Ð°Ð¼Ð¾ Ð“Ð½Ñƒ Ð¸ Ð¤Ñ€Ð¸Ð‘Ð¡Ð” Ð¼ÐµÑ‚Ð°Ð¼Ð°"
+
+#: elf.c:13866
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr "%pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%zuâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %lu"
+
+#: elf.c:13941
+#, 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:13955
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½"
+
+#: elf.c:13969
+#, c-format
+msgid "%pB(%pA): info section index cannot be set because the section is not in the output"
+msgstr "%pB(%pA): Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð´ÐµÑ�Ð¸Ñ‚Ð¸ Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¸Ð·Ð»Ð°Ð·Ñƒ"
+
+#: elf.c:14045
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ñ˜Ðµ Ð¾Ð±Ñ€Ð°Ñ’ÐµÐ½ Ð´Ð²Ð° Ð¿ÑƒÑ‚Ð°"
+
+#: elf.c:14057
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð¸Ð¼Ð° ÑƒÐ½Ð¾Ñ�Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+
+#: elf.c:14069
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð¸Ð¼Ð° ÑƒÐ½Ð¾Ñ�Ðµ Ð½ÐµÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+
+#: elf.c:14083
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½!"
+
+#: elf.c:14106
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð¸ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ñƒ Ð·Ð° Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð°"
+
+#: elf.c:14126
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° %zu Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð°Ð½"
+
+#: elf.c:14151
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÑˆÑ‚Ð°Ñ˜ %zu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
+
+#: elf.c:14169
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÑˆÑ‚Ð°Ñ˜ %zu ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð±Ñ€Ð¸Ñ�Ð°Ð½ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
+
+#: elf.c:14183
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÐµÐºÑƒÐ½Ð´Ð°Ñ€Ð½Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ %zu Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ"
+
+#. 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-arc.c:454 elf32-arm.c:15194 elf32-frv.c:6612 elf32-iq2000.c:868
+#: elf32-m32c.c:914 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5531 elfnn-aarch64.c:7573
+#, c-format
+msgid "private flags = 0x%lx:"
+msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx:"
+
+#: elf32-arc.c:641
+#, c-format
+msgid "warning: %pB: conflicting platform configuration %s with %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ðµ â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:660
+#, c-format
+msgid "error: %pB: unable to merge CPU base attributes %s with %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ðµ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:697
+#, c-format
+msgid "error: %pB: unable to merge ISA extension attributes %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° â€ž%sâ€œ"
+
+#: elf32-arc.c:721
+#, c-format
+msgid "error: %pB: conflicting ISA extension attributes %s with %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:761
+#, c-format
+msgid "error: %pB: cannot mix rf16 with full register set %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑˆÐ°Ð¼ â€žrf16â€œ Ñ�Ð° Ð¿ÑƒÐ½Ð¸Ð¼ Ñ�ÐºÑƒÐ¿Ð¾Ð¼ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° â€ž%pBâ€œ"
+
+#: elf32-arc.c:789
+#, c-format
+msgid "error: %pB: conflicting attributes %s: %s with %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð± Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° â€ž%sâ€œ: â€ž%sâ€œ Ñ�Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:816
+#, c-format
+msgid "error: %pB: conflicting attributes %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�ÑƒÐºÐ¾Ð± Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° â€ž%sâ€œ"
+
+#: elf32-arc.c:921
+#, c-format
+msgid "error: attempting to link %pB with a binary %pB of different architecture"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° ÑƒÐ²ÐµÐ¶ÐµÐ¼ â€ž%pBâ€œ Ñ�Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð¼ â€ž%pBâ€œ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ"
+
+#: elf32-arc.c:937 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1389
+#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15680
+#, c-format
+msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (%#x) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (%#x)"
+
+#: elf32-arc.c:1026
+msgid "error: the ARC4 architecture is no longer supported"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€žARC4â€œ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð²Ð¸ÑˆÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+
+#: elf32-arc.c:1032
+msgid "warning: unset or old architecture flags; use default machine"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ð´ÐµÑˆÐµÐ½Ðµ Ð¸Ð»Ð¸ Ñ�Ñ‚Ð°Ñ€Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ; ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ñƒ Ð¼Ð°ÑˆÐ¸Ð½Ñƒ"
+
+#: elf32-arc.c:1158
+#, 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:1169
+#, 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:1897
+msgid "GOT and PLT relocations cannot be fixed with a non dynamic linker"
+msgstr "â€žGOTâ€œ Ð¸ â€žPLTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ Ñ�Ð° Ð½Ðµ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ð¼ ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ÐµÐ¼"
+
+#: elf32-arc.c:1921 elf32-rx.c:1486
+#, c-format
+msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area"
+msgstr "%pB(%pA): ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿ ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ð¸ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
+
+#: elf32-arc.c:1926 elf32-rx.c:1491
+#, c-format
+msgid "%pB(%pA): internal error: out of range error"
+msgstr "%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+
+#: elf32-arc.c:1931 elf32-rx.c:1496
+#, c-format
+msgid "%pB(%pA): internal error: unsupported relocation error"
+msgstr "%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elf32-arc.c:1936 elf32-rx.c:1501
+#, c-format
+msgid "%pB(%pA): internal error: dangerous relocation"
+msgstr "%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-arc.c:1941 elf32-rx.c:1506
+#, c-format
+msgid "%pB(%pA): internal error: unknown error"
+msgstr "%pB(%pA): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°"
+
+#: elf32-arc.c:2035 elf32-arc.c:2103 elf32-arm.c:15637 elf32-metag.c:2250
+#: elf32-nds32.c:5542 elfnn-aarch64.c:7980 elfnn-riscv.c:722
+#, 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:2920
+#, c-format
+msgid "%pB: unknown mandatory ARC object attribute %d"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ð°Ð²ÐµÐ·Ð½Ð¾Ð³ â€žARCâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: elf32-arc.c:2928
+#, c-format
+msgid "warning: %pB: unknown ARC object attribute %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€žARCâ€œ"
+
+#: elf32-arm.c:4365 elf32-arm.c:4399 elf32-arm.c:4418 elf32-arm.c:4470
+#, 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:4430 elf32-arm.c:4484 elf32-arm.c:9181 elf32-arm.c:9271
+#, 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:4610
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "Ð“Ð Ð•Ð¨ÐšÐ�: â€žCMSEâ€œ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº (Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ) Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð´Ð°Ð»ÐµÐºÐ¾ (%#<PRIx64>) Ð¾Ð´ Ð¿Ð´Ñ€ÐµÐ´Ð¸ÑˆÑ‚Ð° (%#<PRIx64>)"
+
+#: elf32-arm.c:4779
+#, c-format
+msgid "no address assigned to the veneers output section %s"
+msgstr "Ð½Ð¸Ñ˜ÐµÐ´Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+
+#: elf32-arm.c:4854 elf32-arm.c:7003 elf32-csky.c:3385 elf32-hppa.c:581
+#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14175
+#: elfnn-aarch64.c:3188 elfnn-kvx.c:894
+#, c-format
+msgid "%pB: cannot create stub entry %s"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
+
+#: elf32-arm.c:5075 elf32-csky.c:3727 elf32-hppa.c:731 elf32-hppa.c:760
+#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3344
+#: elf64-ppc.c:12292 elf64-ppc.c:12300 xcofflink.c:4676 elfnn-aarch64.c:3260
+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:6046
+#, c-format
+msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later"
+msgstr "%pB: Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ñ�Ð°Ð¼Ð¾ Ð·Ð° â€žARMv8-Mâ€œ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ Ð¸Ð»Ð¸ Ð½Ð¾Ð²Ð¸Ñ˜Ñƒ"
+
+#: elf32-arm.c:6055
+#, c-format
+msgid "%pB: invalid special symbol `%s'; it must be a global or weak function symbol"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ; Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¸Ð»Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð°Ð±Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ"
+
+#: elf32-arm.c:6094
+#, c-format
+msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function symbol"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ; Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¾Ð¿ÑˆÑ‚Ð¸ Ð¸Ð»Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð°Ð±Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ"
+
+#: elf32-arm.c:6100
+#, c-format
+msgid "%pB: absent standard symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+
+#: elf32-arm.c:6112
+#, c-format
+msgid "%pB: `%s' and its special symbol are in different sections"
+msgstr "%pB: â€ž%sâ€œ Ð¸ ÑšÐµÐ½ Ñ�Ð¿ÐµÑ†Ð¸Ñ˜Ð°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ñƒ Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ñ†Ð¸Ð¼Ð°"
+
+#: elf32-arm.c:6124
+#, c-format
+msgid "%pB: entry function `%s' not output"
+msgstr "%pB: Ñ„ÑƒÐ½ÐºÑ†Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ð·Ð»Ð°Ð·"
+
+#: elf32-arm.c:6131
+#, c-format
+msgid "%pB: entry function `%s' is empty"
+msgstr "%pB: Ñ„ÑƒÐ½ÐºÑ†Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¿Ñ€Ð°Ð·Ð½Ð°"
+
+#: elf32-arm.c:6260
+#, c-format
+msgid "%pB: --in-implib only supported for Secure Gateway import libraries"
+msgstr "%pB: â€ž--in-implibâ€œ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð°Ð¼Ð¾ Ð·Ð° â€žSecure Gatewayâ€œ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ½Ð¾Ñ�Ð°"
+
+#: elf32-arm.c:6309
+#, 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:6331
+#, c-format
+msgid "entry function `%s' disappeared from secure code"
+msgstr "Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ�Ñ‚Ð°Ð»Ð° Ð¸Ð· Ð±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ð³ ÐºÐ¾Ð´Ð°"
+
+#: elf32-arm.c:6355
+#, c-format
+msgid "`%s' refers to a non entry function"
+msgstr "â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð½Ðµ ÑƒÐ»Ð°Ð·Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ"
+
+#: elf32-arm.c:6370
+#, c-format
+msgid "%pB: visibility of symbol `%s' has changed"
+msgstr "%pB: Ð²Ð¸Ð´Ñ™Ð¸Ð²Ð¾Ñ�Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð°"
+
+#: elf32-arm.c:6379
+#, c-format
+msgid "%pB: incorrect size for symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+
+#: elf32-arm.c:6398
+#, c-format
+msgid "offset of veneer for entry function `%s' not a multiple of its size"
+msgstr "Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐµ Ð·Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ ÑƒÐ½Ð¾Ñ�Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ðº Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+
+#: elf32-arm.c:6418
+msgid "new entry function(s) introduced but no output import library specified:"
+msgstr "Ð½Ð¾Ð²Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚Ð¸Ð³Ð»Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾ ÑƒÐ»Ð°Ð·Ð½Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°:"
+
+#: elf32-arm.c:6426
+#, c-format
+msgid "start address of `%s' is different from previous link"
+msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð° â€ž%sâ€œ Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ðµ Ð²ÐµÐ·Ðµ"
+
+#: elf32-arm.c:7137 elf32-arm.c:7175
+#, c-format
+msgid "unable to find %s glue '%s' for '%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€ž%sâ€œ Ð»ÐµÐ¿Ð°Ðº â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+
+#: elf32-arm.c:7886
+#, 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:8114
+#, c-format
+msgid "%pB: warning: selected VFP11 erratum workaround is not necessary for target architecture"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žVFP11â€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
+
+#: elf32-arm.c:8141
+#, c-format
+msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for target architecture"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ð¾ Ñ€ÐµÑˆÐµÑšÐµ â€žSTM32L4XXâ€œ Ð³Ñ€ÐµÑˆÐ°ÐºÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð·Ð° Ñ†Ð¸Ñ™Ð½Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
 
-#: elf32-arm.c:6897 elf32-arm.c:6917
-msgid "%B: unable to find VFP11 veneer `%s'"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ â€ž%sâ€œ"
+#: elf32-arm.c:8677 elf32-arm.c:8697 elf32-arm.c:8764 elf32-arm.c:8783
+#, c-format
+msgid "%pB: unable to find %s veneer `%s'"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€ž%sâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ â€ž%sâ€œ"
 
-#: elf32-arm.c:6966
+#: elf32-arm.c:8990
 #, c-format
-msgid "Invalid TARGET2 relocation type '%s'."
-msgstr "Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žTARGET2â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ."
+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â€œ Ð±Ð»Ð¾ÐºÑƒ"
 
-#. 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:9088
+#, 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:9857
+#, c-format
+msgid "%pB: warning: thumb-1 mode PLT generation not currently supported"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žPLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ñƒ â€žthumb-1â€œ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elf32-arm.c:10166 elf32-arm.c:10208
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#lxâ€œ Ñƒ â€žTLSâ€œ Ñ‚Ñ€Ð°Ð¼Ð±ÑƒÐ»Ð¸Ð½Ð¸"
+
+#: elf32-arm.c:10489
+#, c-format
+msgid "warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB(%s): ÐŸÑ€Ð¸Ð¼Ð¾Ñ€Ð°Ð²Ð°Ð¼ Ð³Ñ€Ð°Ð½Ñƒ Ð½Ð° Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Thumb Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ (Thumb-Ñ�Ð°Ð¼Ð¾ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€) Ñƒ â€ž%pBâ€œ"
+
+#: elf32-arm.c:10494
+#, c-format
+msgid "warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: (%s): ÐŸÑ€Ð¸Ð¼Ð¾Ñ€Ð°Ð²Ð°Ð¼ Ð³Ñ€Ð°Ð½Ñƒ Ð½Ð° Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Thumb Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ (Thumb-Ñ�Ð°Ð¼Ð¾ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€) Ñƒ â€ž%pBâ€œ"
+
+#: elf32-arm.c:10523
+#, c-format
+msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "%pB(%s): Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¾Ð´Ñ€ÐµÐ´Ð¸ÑˆÑ‚Ð° (ARM/Thumb) Ñƒ â€ž%pBâ€œ"
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "(%s): Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¾Ð´Ñ€Ð´Ð¸ÑˆÑ‚Ð° (ARM/Thumb) Ñƒ â€ž%pBâ€œ"
 
-#: elf32-arm.c:10666 elf32-tic6x.c:2736
-#: /src/binutils-gdb/bfd/elfnn-aarch64.c:4481
+#: elf32-arm.c:10615
+msgid "shared object"
+msgstr "Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf32-arm.c:10618
+msgid "PIE executable"
+msgstr "â€žPIEâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°"
+
+#: elf32-arm.c:10621
+#, 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:10723
+#, c-format
+msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "\\%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%s BLXâ€œ Ñ†Ð¸Ñ™Ð° Ð½Ð° â€ž%sâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ"
+
+#: elf32-arm.c:11140
+#, c-format
+msgid "%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%s BLXâ€œ Ñ†Ð¸Ñ™Ð° Ð½Ð° â€ž%sâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ"
+
+#: elf32-arm.c:11774
+#, c-format
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr "%pB: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ñƒ 0..%lu Ð°Ð»Ð¸ Ð½Ð°Ñ’Ð¾Ñ… Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð° Ð¸Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu"
+
+#: elf32-arm.c:12049 elf32-arm.c:12075
+#, 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:12121 elf32-csky.c:4955 elf32-m68k.c:3733 elf32-metag.c:1912
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object"
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#: elf32-arm.c:12335
+#, 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:12376 elf32-arm.c:12468 elf32-arm.c:12556 elf32-arm.c:12646
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð´ÐµÑ™ÐµÑšÐ° %#<PRIx64> Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð³Ñ€ÑƒÐ¿Ðµ â€ž%sâ€œ"
+
+#: elf32-arm.c:12704 elf32-arm.c:12863
+msgid "local symbol index too big"
+msgstr "Ð¸Ð½Ð´ÐµÐºÑ� Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº"
+
+#: elf32-arm.c:12714 elf32-arm.c:12748
+msgid "no dynamic index information available"
+msgstr "Ð½ÐµÐ¼Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¸Ð½Ð´ÐµÐºÑ�Ð°"
+
+#: elf32-arm.c:12756
+msgid "invalid dynamic index"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¸Ð½Ð´ÐµÐºÑ�"
+
+#: elf32-arm.c:12873
+msgid "dynamic index information not available"
+msgstr "Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¸Ð½Ð´ÐµÐºÑ�Ð° Ð½Ð¸Ñ�Ñƒ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸"
+
+#: elf32-arm.c:13304 elf32-sh.c:3566
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section"
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€žSEC_MERGEâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°"
+
+#: elf32-arm.c:13417 elf32-m68k.c:3966 elf32-xtensa.c:2758 elfnn-aarch64.c:7070
+#: elfnn-kvx.c:2568
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s"
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ"
+
+#: elf32-arm.c:13419 elf32-m68k.c:3968 elf32-xtensa.c:2760 elfnn-aarch64.c:7072
+#: elfnn-kvx.c:2570
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s"
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ¿Ð¾Ñ‚Ñ€ÐµÐ±Ñ™ÐµÐ½Ð¾ Ñ�Ð° â€žÐ½Ðµ-TLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%sâ€œ"
+
+#: elf32-arm.c:13502 elf32-tic6x.c:2641 elfnn-aarch64.c:7407 elfnn-kvx.c:2797
 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:13506 elf32-pru.c:936 elf32-tic6x.c:2645 elfnn-aarch64.c:7411
+#: elfnn-kvx.c:2801
 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:13514 elf32-pru.c:946 elf32-tic6x.c:2653 elfnn-aarch64.c:7419
+#: elfnn-kvx.c:2809
 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:13991
+#, c-format
+msgid "warning: not setting interworking flag of %pB since it has already been specified as non-interworking"
+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.
-#. 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:13995
 #, c-format
-msgid "private flags = %lx:"
-msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx:"
+msgid "warning: clearing the interworking flag of %pB due to outside request"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐºÐ»Ð°ÑšÐ°Ð¼ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð° Ð·Ð° â€ž%pBâ€œ ÑƒÑ�Ð»ÐµÐ´ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ñ�Ð¿Ð¾Ñ™Ð°"
+
+#: elf32-arm.c:14040
+#, 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:14127
+#, c-format
+msgid "%pB: unknown mandatory EABI object attribute %d"
+msgstr "%pB: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+
+#: elf32-arm.c:14135
+#, c-format
+msgid "warning: %pB: unknown EABI object attribute %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+
+#: elf32-arm.c:14470
+#, c-format
+msgid "error: %pB: unknown CPU architecture"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°"
+
+#: elf32-arm.c:14508
+#, c-format
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�ÑƒÐºÐ¾Ð±Ñ™ÐµÐ½Ðµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° â€ž%sâ€œ Ð¸ â€ž%sâ€œ Ñƒ â€ž%pBâ€œ"
+
+#: elf32-arm.c:14605
+#, c-format
+msgid "Error: %pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr "Ð“Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚"
+
+#: elf32-arm.c:14642
+#, c-format
+msgid "error: %pB uses VFP register arguments, %pB does not"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žVFPâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%pBâ€œ Ð½Ðµ"
+
+#: elf32-arm.c:14812
+#, c-format
+msgid "error: %pB: unable to merge virtualization attributes with %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ð¿Ð¾Ñ˜Ð¸Ð¼ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ðµ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ðµ Ñ�Ð° â€ž%pBâ€œ"
+
+#: elf32-arm.c:14838
+#, c-format
+msgid "error: %pB: conflicting architecture profiles %c/%c"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð£ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%c/%câ€œ"
+
+#: elf32-arm.c:14977
+#, c-format
+msgid "warning: %pB: conflicting platform configuration"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼Ðµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ"
+
+#: elf32-arm.c:14986
+#, c-format
+msgid "error: %pB: conflicting use of R9"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ â€žR9â€œ"
+
+#: elf32-arm.c:14998
+#, c-format
+msgid "error: %pB: SB relative addressing conflicts with use of R9"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ â€žSBâ€œ Ð°Ð´Ñ€ÐµÑ�Ð¸Ñ€Ð°ÑšÐµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žR9â€œ"
+
+#: elf32-arm.c:15011
+#, 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:15042
+#, 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:15054
+#, c-format
+msgid "error: %pB uses iWMMXt register arguments, %pB does not"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ðµ â€žiWMMXtâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð°, Ð° â€ž%pBâ€œ Ð½Ðµ"
 
-#: elf32-arm.c:12104
+#: elf32-arm.c:15071
+#, c-format
+msgid "error: fp16 format mismatch between %pB and %pB"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€žfp16â€œ Ð·Ð°Ð¿Ð¸Ñ� Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ñ‚Ð¸ Ð·Ð° â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ"
+
+#: elf32-arm.c:15107
+#, c-format
+msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
+msgstr "â€ž%pBâ€œ Ð¿Ð¾Ñ�ÐµÐ´ÑƒÑ˜Ðµ Ð¸ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸ Ð¸ Ñ�Ñ‚Ð°Ñ€Ð¸ â€žTag_MPextension_useâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚"
+
+#: elf32-arm.c:15203
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾ Ñ˜Ðµ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾]"
 
-#: elf32-arm.c:12112
+#: elf32-arm.c:15211
 #, c-format
 msgid " [VFP float format]"
 msgstr " [â€žVFPâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]"
 
-#: elf32-arm.c:12114
-#, c-format
-msgid " [Maverick float format]"
-msgstr " [â€žMaverickâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]"
-
-#: elf32-arm.c:12116
+#: elf32-arm.c:15213
 #, c-format
 msgid " [FPA float format]"
 msgstr " [â€žFPAâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]"
 
-#: elf32-arm.c:12125
+#: elf32-arm.c:15216
+#, c-format
+msgid " [floats passed in float registers]"
+msgstr " [Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñ�Ñƒ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÐµÐ½Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸]"
+
+#: elf32-arm.c:15219 elf32-arm.c:15304
+#, c-format
+msgid " [position independent]"
+msgstr " [Ð½ÐµÐ·Ð°Ð²Ð¸Ñ�Ñ‚Ð°Ð½ Ð¾Ð´ Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜Ð°]"
+
+#: elf32-arm.c:15222
 #, c-format
 msgid " [new ABI]"
 msgstr " [Ð½Ð¾Ð²Ð¸ â€žABIâ€œ]"
 
-#: elf32-arm.c:12128
+#: elf32-arm.c:15225
 #, c-format
 msgid " [old ABI]"
 msgstr " [Ñ�Ñ‚Ð°Ñ€Ð¸ â€žABIâ€œ]"
 
-#: elf32-arm.c:12131
+#: elf32-arm.c:15228
 #, c-format
 msgid " [software FP]"
 msgstr " [Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·]"
 
-#: elf32-arm.c:12140
+#: elf32-arm.c:15236
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ1 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12143 elf32-arm.c:12154
+#: elf32-arm.c:15239 elf32-arm.c:15250
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [Ñ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ñ€ÐµÑ’ÐµÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°]"
 
-#: elf32-arm.c:12145 elf32-arm.c:12156
+#: elf32-arm.c:15241 elf32-arm.c:15252
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [Ñ‚Ð°Ð±ÐµÐ»Ð° Ð½ÐµÑ�Ñ€ÐµÑ’ÐµÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°]"
 
-#: elf32-arm.c:12151
+#: elf32-arm.c:15247
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ2 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12159
+#: elf32-arm.c:15255
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°]"
 
-#: elf32-arm.c:12162
+#: elf32-arm.c:15258
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [Ð¼Ð°Ð¿Ð¸Ñ€Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð°]"
 
-#: elf32-arm.c:12169
+#: elf32-arm.c:15265
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ3 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12173
+#: elf32-arm.c:15269
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ4 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12177
+#: elf32-arm.c:15273
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Ð˜Ð·Ð´Ð°ÑšÐµ5 â€žEABIâ€œ]"
 
-#: elf32-arm.c:12180
+#: elf32-arm.c:15276
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [â€žABIâ€œ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¾Ð³ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°]"
 
-#: elf32-arm.c:12183
+#: elf32-arm.c:15279
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [â€žABIâ€œ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¾Ð³ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°]"
 
-#: elf32-arm.c:12189
+#: elf32-arm.c:15285
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:12192
+#: elf32-arm.c:15288
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:12198
+#: elf32-arm.c:15294
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žEABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ>"
 
-#: elf32-arm.c:12205
+#: elf32-arm.c:15301
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°]"
 
-#: elf32-arm.c:12208
+#: elf32-arm.c:15307
 #, 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:15312 elfnn-aarch64.c:7576
 #, c-format
-msgid "<Unrecognised flag bits set>"
-msgstr "<Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�ÐºÑƒÐ¿ Ð±Ð¸Ñ‚Ð¾Ð²Ð° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ>"
+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:15420 elf32-arm.c:15554 elf32-i386.c:1545 elf32-s390.c:921
+#: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 elf64-s390.c:843
+#: elf64-x86-64.c:2173 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 elfxx-x86.c:971
+#: elfnn-aarch64.c:7847 elfnn-kvx.c:3247 elfnn-loongarch.c:952
+#: elfnn-riscv.c:766
+#, c-format
+msgid "%pB: bad symbol index: %d"
+msgstr "%pB: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: %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:15810
+#, c-format
+msgid "FDPIC does not yet support %s relocation to become dynamic for executable"
+msgstr "â€žFDPICâ€œ Ñ˜Ð¾Ñˆ ÑƒÐ²ÐµÐº Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð´Ð° Ð±Ð¸ Ð¿Ð¾Ñ�Ñ‚Ð°Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð·Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ"
 
-#: elf32-arm.c:13796
+#: elf32-arm.c:17072
 #, c-format
-msgid "Errors encountered processing file %s"
-msgstr "Ð�Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐµ Ñ‚Ð¾ÐºÐ¾Ð¼ Ð¾Ð±Ñ€Ð°Ð´Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ"
+msgid "errors encountered processing file %pB"
+msgstr "Ð½Ð°Ð¸Ñ’Ð¾Ñ… Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐµ Ñ‚Ð¾ÐºÐ¾Ð¼ Ð¾Ð±Ñ€Ð°Ð´Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%pBâ€œ"
 
-#: elf32-arm.c:14230
+#: elf32-arm.c:17442 elflink.c:13533 elflink.c:13580
 #, c-format
-msgid "error: required section '%s' not found in the linker script"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‚Ñ€Ð°Ð¶ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
+msgid "could not find section %s"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#: elf32-arm.c:15252
-msgid "%B: error: Cortex-A8 erratum stub is allocated in unsafe location"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: ÐžÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�8 Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½ Ð½ÐµÐ±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ˜ Ð»Ð¾ÐºÐ°Ñ†Ð¸Ñ˜Ð¸"
+#: elf32-arm.c:18397
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr "%pB: Ð‘Ñ€Ð¾Ñ˜ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ ÑƒÐ»Ð°Ð·Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ñ�Ðµ Ð¿Ð¾Ð²ÐµÑ›Ð°Ð¾ Ñ�Ð° %lu Ð½Ð° %u\n"
+
+#: elf32-arm.c:18655
+#, 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:18682
+#, c-format
+msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ ÐšÐ¾Ñ€Ñ‚ÐµÐºÑ�Ð° Ð�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
-msgid "internal error: dangerous relocation"
-msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: elf32-arm.c:19509 elf32-arm.c:19531
+#, c-format
+msgid "%pB: error: VFP11 veneer out of range"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žVFP11â€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
 
-#: 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-arm.c:19582
+#, 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:19621
+#, c-format
+msgid "%pB: error: cannot create STM32L4XX veneer"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žSTM32L4XXâ€œ Ð¿Ñ€ÐµÐ²Ð»Ð°ÐºÑƒ"
+
+#: elf32-arm.c:20704
+#, c-format
+msgid "error: %pB is already in final BE8 format"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ñ˜Ðµ Ð²ÐµÑ› Ñƒ Ð·Ð°Ð²Ñ€ÑˆÐ½Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ â€žBE8â€œ"
+
+#: elf32-arm.c:20781
+#, 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-bfin.c:107 elf32-bfin.c:363
+#: elf32-arm.c:20796
+#, 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:20806
+#, c-format
+msgid "error: %pB passes floats in float registers, whereas %pB passes them in integer registers"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
+
+#: elf32-arm.c:20810
+#, c-format
+msgid "error: %pB passes floats in integer registers, whereas %pB passes them in float registers"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ñ†ÐµÐ»Ð¸Ñ…, Ð´Ð¾Ðº Ð¸Ñ… â€ž%pBâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’ÑƒÑ˜Ðµ Ñƒ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ðµ Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¸Ñ… Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
+
+#: elf32-arm.c:20820 elf32-arm.c:20824
+#, c-format
+msgid "error: %pB uses %s instructions, whereas %pB does not"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð½Ðµ"
+
+#: elf32-arm.c:20843
+#, c-format
+msgid "error: %pB uses software FP, whereas %pB uses hardware FP"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸"
+
+#: elf32-arm.c:20847
+#, c-format
+msgid "error: %pB uses hardware FP, whereas %pB uses software FP"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, Ð´Ð¾Ðº â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸"
+
+#: elf32-arm.c:20861
+#, c-format
+msgid "warning: %pB supports interworking, whereas %pB does not"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%pBâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°"
+
+#: elf32-arm.c:20867
+#, c-format
+msgid "warning: %pB does not support interworking, whereas %pB does"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¼ÐµÑ’ÑƒÐ´ÐµÑ˜Ñ�Ñ‚Ð²Ð¾, Ð´Ð¾Ðº Ð³Ð° â€ž%pBâ€œ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð°"
+
+#: elf32-avr.c:1503
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr "%X%H: %s Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÑƒÑ˜Ðµ Ð²Ð°Ð½ Ð¾Ð´ÐµÑ™ÐºÐ°\n"
+
+#: elf32-avr.c:1511
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr "%X%H: %s Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ°: Ð°Ð´Ñ€ÐµÑ�Ð° Ð¼ÐµÑ‚Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð°\n"
+
+#: elf32-avr.c:1519
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr "%X%H: %s Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %d\n"
+
+#: elf32-avr.c:3335 elfnn-aarch64.c:3219
+#, c-format
+msgid "cannot create stub entry %s"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
+
+#: elf32-bfin.c:107 elf32-bfin.c:364
 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:1589
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf32-bfin.c:1621 elf32-i386.c:3543 elf32-m68k.c:4006 elf32-s390.c:3130
+#: elf64-s390.c:3205 elf64-x86-64.c:4619
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d"
+
+#: elf32-bfin.c:2646
+#, 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:2663
 msgid "relocation references symbol not defined in the module"
 msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñƒ"
 
-#: elf32-bfin.c:2845
+#: elf32-bfin.c:2761
 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:2801 elf32-bfin.c:2922
 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:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4384
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾ÑˆÐ°Ñ™ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ"
 
-#: elf32-bfin.c:2967
+#: elf32-bfin.c:2881
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr "â€žR_BFIN_FUNCDESC_VALUEâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
 
-#: elf32-bfin.c:3132
+#: elf32-bfin.c:3044
 msgid "relocations between different segments are not supported"
 msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ñ… Ñ�ÐµÐ³Ð¼ÐµÐ½Ð°Ñ‚Ð° Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
 
-#: elf32-bfin.c:3133
+#: elf32-bfin.c:3045
 msgid "warning: relocation references a different segment"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚"
 
-#: elf32-bfin.c:4907
-msgid "%B: unsupported relocation type %i"
-msgstr "%B: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%iâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+#: elf32-bfin.c:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3377
+#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:938 elf64-bpf.c:348
+#: elf64-mmix.c:1545 elfxx-tilegx.c:3750
+msgid "internal error: dangerous relocation"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4728 elf32-cris.c:3860 elf32-m68hc1x.c:1414 elf32-m68k.c:1264
+#: elf32-score.c:3984 elf32-score7.c:3791 elf32-vax.c:534 elf32-xgate.c:494
+#: elfxx-mips.c:16366
+#, c-format
+msgid "private flags = %lx:"
+msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx:"
 
-#: elf32-bfin.c:4995 elf32-frv.c:6600
+#: elf32-bfin.c:4779 elf32-frv.c:6585
 #, 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:4783 elf32-frv.c:6589
 #, 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:4919
 #, 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:5034
+msgid "the bfin target does not currently support the generation of copy relocations"
+msgstr "â€žbfinâ€œ Ñ†Ð¸Ñ™ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¾ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° ÑƒÐ¼Ð½Ð¾Ð¶Ð°Ð²Ð°ÑšÐ°"
 
-#: 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-bfin.c:5329 elf32-cr16.c:2720 elf32-m68k.c:4420
+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:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674
+#: elf32-cris.c:1827 elf32-tic6x.c:2552
 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:2536
+#, 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:2545
+#, 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:1990
+#: 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: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:3048
+#, 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:3102
+#, 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:3320
+#, 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:3699
+#, 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:3811
+msgid "unexpected machine number"
+msgstr "Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð±Ñ€Ð¾Ñ˜ Ð¼Ð°ÑˆÐ¸Ð½Ðµ"
 
-#: elf32-cris.c:4142
+#: elf32-cris.c:3863
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ðµ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ðµ â€ž _ â€œ]"
 
-#: elf32-cris.c:4145
+#: elf32-cris.c:3866
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 Ð¸ v32]"
 
-#: elf32-cris.c:4148
+#: elf32-cris.c:3869
 #, 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:3913
+#, c-format
+msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°"
+
+#: elf32-cris.c:3914
+#, c-format
+msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð°, Ð°Ð»Ð¸ Ð·Ð°Ð¿Ð¸Ñ�ÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ Ñ�Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¸Ð¼Ð° Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ â€ž_â€œ"
+
+#: elf32-cris.c:3933
+#, c-format
+msgid "%pB contains CRIS v32 code, incompatible with previous objects"
+msgstr "â€ž%pBâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ â€žCRIS v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#: elf32-cris.c:3935
+#, c-format
+msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
+msgstr "â€ž%pBâ€ž Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-â€žCRIS-v32â€œ ÐºÐ¾Ð´ ÐºÐ¾Ñ˜Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð°Ð½ Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+
+#: elf32-csky.c:2016
+msgid "GOT table size out of range"
+msgstr "Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žGOTâ€œ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+
+#: elf32-csky.c:2826
+#, c-format
+msgid "warning: unrecognized arch eflag '%#lx'"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ñ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žeâ€œ-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%#lxâ€œ"
+
+#: elf32-csky.c:2849
+#, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð½Ð°Ð·Ð¸Ð² Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%#xâ€œ"
+
+#: elf32-csky.c:2914 elf32-csky.c:3074
+#, c-format
+msgid "%pB: machine flag conflict with target"
+msgstr "%pB: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™ÐµÐ¼"
+
+#: elf32-csky.c:2927
+#, c-format
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€œ%pBâ€œ-Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™Ð½Ð¸Ð¼ â€ž%sâ€œ, Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð¸Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¼ÐµÑ‚Ðµ Ð½Ð° â€ž%sâ€œ"
+
+#: elf32-csky.c:2956
+#, c-format
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr "Ð“Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° â€žVDSPâ€œ Ð¸Ð·Ð´Ð°ÑšÐ°"
+
+#: elf32-csky.c:2973
+#, c-format
+msgid "Error: %pB and %pB has different DSP version"
+msgstr "Ð“Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° â€žDSPâ€œ Ð¸Ð·Ð´Ð°ÑšÐ°"
 
-#: elf32-dlx.c:142
+#: elf32-csky.c:2991
 #, c-format
-msgid "BFD Link Error: branch (PC rel16) to section (%s) not supported"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ð‘Ð¤Ð” Ð²ÐµÐ·Ðµ: Ð³Ñ€Ð°Ð½Ð°ÑšÐµ (PC rel16) Ñƒ Ð¾Ð´ÐµÑ™Ð°Ðº (%s) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr "Ð“Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ð¸Ð¼Ð°Ñ˜Ñƒ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ðµ â€žFPU ABIâ€œ"
+
+#: elf32-csky.c:3088
+#, c-format
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€œ%pBâ€œ-Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ñ†Ð¸Ñ™Ð½Ð¸Ð¼ â€žck%sâ€œ, ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ð¼ â€ž%sâ€œ"
+
+#. The r_type is error, not support it.
+#: elf32-csky.c:4327 elf32-i386.c:344
+#, c-format
+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:570 elf32-ip2k.c:1485
 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:6496
+#, 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:6550 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:6563
 #, 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-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:862 elf32-hppa.c:3402
 #, 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:1240
+#, c-format
+msgid "%pB: relocation %s can not be used when making a shared object; recompile with -fPIC"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
 
-#: 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:2579
+#, c-format
+msgid "%pB: duplicate export stub %s"
+msgstr "%pB: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð¸Ð·Ð²Ð¾Ð·Ð° â€ž%sâ€œ"
 
-#: elf32-hppa.c:4598
+#: elf32-hppa.c:3235
+#, 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:3455
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ %#x Ð·Ð° â€œinsn %#xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð±Ñ€Ð¾Ñ˜Ð° 8 (gp %#x)"
+
+#: elf32-hppa.c:3474
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ %#x Ð·Ð° â€žinsn %#xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð±Ñ€Ð¾Ñ˜Ð° 4 (gp %#x)"
+
+#: elf32-hppa.c:4089
+#, c-format
+msgid "%s has both normal and TLS relocs"
+msgstr "â€ž%sâ€œ Ð¸Ð¼Ð° Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾ Ð¸ â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-hppa.c:4107
+#, c-format
+msgid "%pB:%s has both normal and TLS relocs"
+msgstr "%pB: â€ž%sâ€œ Ð¸Ð¼Ð° Ð¸ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾ Ð¸ â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-hppa.c:4166
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ"
+
+#: elf32-hppa.c:4470
 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:1296
+#, 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:1729 elf32-s390.c:1149 elf32-sh.c:5498 elf32-tilepro.c:1546
+#: elf32-xtensa.c:1261 elf64-s390.c:1081 elfxx-sparc.c:1555 elfxx-tilegx.c:1766
+#: elfnn-loongarch.c:741 elfnn-riscv.c:673
+#, c-format
+msgid "%pB: `%s' accessed both as normal and thread local symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
 
-#: elf32-i386.c:3610 elf64-x86-64.c:3777
+#: elf32-i386.c:1801
+#, c-format
+msgid "%pB: unsupported non-PIC call to IFUNC `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¸ Ð½Ðµ-â€žPICâ€œ Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° â€žIFUNCâ€œ â€ž%sâ€œ"
+
+#: elf32-i386.c:1856 elf64-x86-64.c:2567
+#, c-format
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr "%pB: Ð½Ðµ-ÐºÐ°Ð½Ð¾Ð½Ñ�ÐºÐ° ÑƒÐ¿ÑƒÑ‚Ð° ÐºÐ° ÐºÐ°Ð½Ð¾Ð½Ñ�ÐºÐ¾Ñ˜ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ñ˜ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð¸ â€ž%sâ€œ %pB"
+
+#: elf32-i386.c:2419 elf64-x86-64.c:3050 elfnn-riscv.c:2544
+#, 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:2452 elf32-i386.c:3752 elf32-i386.c:3900 elf64-x86-64.c:3107
+#: elf64-x86-64.c:4790 elf64-x86-64.c:4958 elfnn-riscv.c:2406
+#: elfnn-riscv.c:3318 elfnn-riscv.c:3392
+#, c-format
+msgid "Local IFUNC function `%s' in %pB\n"
+msgstr "Ð›Ð¾ÐºÐ°Ð»Ð½Ð° â€žIFUNCâ€œ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ\n"
+
+#: elf32-i386.c:2630
+#, 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:2665 elf64-x86-64.c:3324
 msgid "hidden symbol"
 msgstr "Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
 
-#: elf32-i386.c:3613 elf64-x86-64.c:3780
+#: elf32-i386.c:2668 elf64-x86-64.c:3327
 msgid "internal symbol"
 msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
 
-#: elf32-i386.c:3616 elf64-x86-64.c:3783
+#: elf32-i386.c:2671 elf64-x86-64.c:3330
 msgid "protected symbol"
 msgstr "Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð»"
 
-#: elf32-i386.c:3619 elf64-x86-64.c:3786
+#: elf32-i386.c:2674 elf64-x86-64.c:3333
 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:2680
+#, 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:2693
 #, 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-i386.c:4103 elf64-x86-64.c:5169
+msgid "%F%P: discarded output section: `%pA'\n"
+msgstr "%F%P: Ð¾Ð´Ð±Ð°Ñ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ð·Ð»Ð°Ð·Ð°: â€ž%pAâ€œ\n"
 
-#: 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
+#: elf32-ip2k.c:1298
 #, c-format
-msgid "ip2k linker: missing 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-ip2k.c:1308
+#: elf32-ip2k.c:1317
 #, c-format
-msgid "ip2k linker: redundant page instruction at 0x%08lx (dest = 0x%08lx)."
-msgstr "ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ñ�ÑƒÐ²Ð¸ÑˆÐ½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° 0x%08lx (Ñ†Ð¸Ñ™ = 0x%08lx)."
+msgid "ip2k linker: redundant page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
+msgstr "ÑƒÐ²ÐµÐ·Ð¸Ð²Ð°Ñ‡ â€žip2kâ€œ: Ñ�ÑƒÐ²Ð¸ÑˆÐ½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð½Ð° %#<PRIx64> (Ñ†Ð¸Ñ™ = %#<PRIx64>)"
 
-#: elf32-iq2000.c:841 elf32-m32c.c:824
-#, c-format
-msgid "%s: uses different e_flags (0x%lx) fields than previous modules (0x%lx)"
-msgstr "%s: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð° Ð¿Ð¾Ñ™Ð° â€že_flagsâ€œ (0x%lx) Ð½ÐµÐ³Ð¾ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ (0x%lx)"
-
-#: elf32-lm32.c:698 elf32-nios2.c:2191
+#: elf32-lm32.c:608
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: elf32-lm32.c:753 elf32-nios2.c:2623
+#: elf32-lm32.c:663
 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:1461
 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:2776 elf32-microblaze.c:1147 elf32-microblaze.c:1195
+#, 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:3277
+#, c-format
+msgid "%pB: instruction set mismatch with previous modules"
+msgstr "%pB: Ñ�ÐºÑƒÐ¿ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
 
-#: elf32-m32r.c:3550 elf32-nds32.c:5636
+#: elf32-m32r.c:3298 elf32-nds32.c:6899
 #, c-format
 msgid "private flags = %lx"
 msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx"
 
-#: elf32-m32r.c:3555
+#: elf32-m32r.c:3303
 #, c-format
 msgid ": m32r instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32râ€œ"
 
-#: elf32-m32r.c:3556
+#: elf32-m32r.c:3304
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32rxâ€œ"
 
-#: elf32-m32r.c:3557
+#: elf32-m32r.c:3305
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žm32r2â€œ"
 
-#: elf32-m68hc1x.c:1114
+#: elf32-m68hc1x.c:1134
 #, 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:1165
 #, 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:1181
 #, 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:1196
 #, 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:1232
 #, 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:1356
+#, 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:1363
+#, 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:1372
+#, c-format
+msgid "%pB: linking files compiled for HCS12 with others compiled for HC12"
+msgstr "%pB: Ñ�Ð²ÐµÐ·ÑƒÑ˜ÑƒÑ›Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ðµ Ð·Ð° â€žHCS12â€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸Ð¼ Ð·Ð° â€žHC12â€œ"
 
-#: elf32-m68hc1x.c:1430 elf32-xgate.c:677
+#: elf32-m68hc1x.c:1417 elf32-xgate.c:497
 #, c-format
 msgid "[abi=32-bit int, "
 msgstr "[Ð°Ð±Ð¸=32-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, "
 
-#: elf32-m68hc1x.c:1432 elf32-xgate.c:679
+#: elf32-m68hc1x.c:1419 elf32-xgate.c:499
 #, c-format
 msgid "[abi=16-bit int, "
 msgstr "[Ð°Ð±Ð¸=16-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ†ÐµÐ¾ Ð±Ñ€Ð¾Ñ˜, "
 
-#: elf32-m68hc1x.c:1435 elf32-xgate.c:682
+#: elf32-m68hc1x.c:1422 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr "64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¼ÐµÑˆÐ¾Ð²Ð¸Ñ‚Ð¸, "
 
-#: elf32-m68hc1x.c:1437 elf32-xgate.c:684
+#: elf32-m68hc1x.c:1424 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¼ÐµÑˆÐ¾Ð²Ð¸Ñ‚Ð¸, "
 
-#: elf32-m68hc1x.c:1440
+#: elf32-m68hc1x.c:1427
 #, c-format
 msgid "cpu=HC11]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]"
 
-#: elf32-m68hc1x.c:1442
+#: elf32-m68hc1x.c:1429
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]"
 
-#: elf32-m68hc1x.c:1444
+#: elf32-m68hc1x.c:1431
 #, c-format
 msgid "cpu=HC12]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]"
 
-#: elf32-m68hc1x.c:1447
+#: elf32-m68hc1x.c:1434
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð°=Ð¼Ð¾Ð´ÐµÐ»-Ð³Ñ€ÑƒÐ¿Ðµ]"
 
-#: elf32-m68hc1x.c:1449
+#: elf32-m68hc1x.c:1436
 #, c-format
 msgid " [memory=flat]"
 msgstr " [Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ð°=Ð¾Ð±Ð¸Ñ‡Ð½Ð¾]"
 
-#: elf32-m68hc1x.c:1452
+#: elf32-m68hc1x.c:1439
 #, 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:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·"
+
+#: elf32-m68k.c:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105
 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:1730
+#, c-format
+msgid "%pB: GOT overflow: number of relocations with 8-bit offset > %d"
+msgstr "%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žGOTâ€œ: Ð±Ñ€Ð¾Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð° 8-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ > %d"
+
+#: elf32-m68k.c:1737
+#, 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:618
+#, c-format
+msgid "%pB and %pB are for different cores"
+msgstr "â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð°"
+
+#: elf32-mep.c:637
+#, c-format
+msgid "%pB and %pB are for different configurations"
+msgstr "â€ž%pBâ€œ Ð¸ â€ž%pBâ€œ Ñ�Ñƒ Ð·Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð° Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ°"
 
-#: elf32-mep.c:686
+#: elf32-mep.c:675
 #, 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:1856
 #, 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:1859
 #, 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:1590 elf32-tilepro.c:3018 elfxx-sparc.c:3442
+#: elfxx-tilegx.c:3415
+#, 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:1776 elf64-mips.c:3515 elfn32-mips.c:3334
 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:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
 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:914
+#, c-format
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: ÐºÑ€Ð°Ñ˜ÑšÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žuleb128â€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ 0x%lx Ñƒ â€ž%pAâ€œ Ð¸Ð· â€ž%pBâ€œ Ð¿Ñ€ÐµÐ¼Ð°ÑˆÑƒÑ˜Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ð²Ð¸ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€"
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
+msgid "try enabling relaxation to avoid relocation truncations"
+msgstr "Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð´Ð° ÑƒÐºÑ™ÑƒÑ‡Ð¸Ñ‚Ðµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐµ Ð´Ð° Ð±Ð¸Ñ�Ñ‚Ðµ Ð¸Ð·Ð±ÐµÐ³Ð»Ð¸ Ñ�ÐºÑ€Ð°Ñ›Ð¸Ð²Ð°ÑšÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elf32-msp430.c:1317
+#: elf32-msp430.c:1506
 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:2673
+#, 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:2774
+#, 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:2786
+#, 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:2799
+#, 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:2810
+#, 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:2823
+#, 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:2835
+#, 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:2860
+#, 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:3673
+#, c-format
+msgid "error: can't find symbol: %s"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»: %s"
 
-#: elf32-nds32.c:4584
+#: elf32-nds32.c:5572
 #, 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:5698
+#, 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:5739
+#, 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:5761
+#, 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:6687
+#, 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:6735
+#, 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:6749
+#, 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:6837
+#, 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:6847
+#, 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:6874
+#, c-format
+msgid "%pB: warning: incompatible elf-versions %s and %s"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÐµÐ»Ñ„ Ð¸Ð·Ð´Ð°ÑšÐ° %s Ð¸ %s Ð½Ð¸Ñ�Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð°"
 
-#: elf32-nds32.c:5642
+#: elf32-nds32.c:6905
 #, c-format
 msgid ": n1 instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žn1â€œ"
 
-#: elf32-nds32.c:5645
+#: elf32-nds32.c:6908
 #, c-format
 msgid ": n1h instructions"
 msgstr ": Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ â€žn1hâ€œ"
 
-#: elf32-nds32.c:8147
-msgid "%B: %s\n"
-msgstr "%B: %s\n"
+#: elf32-nds32.c:9357
+#, c-format
+msgid "%pB: error: search_nds32_elf_blank reports wrong node"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: â€žsearch_nds32_elf_blankâ€œ Ð¸Ð·Ð²ÐµÑˆÑ‚Ð°Ð²Ð° Ð¾ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ñ‡Ð²Ð¾Ñ€Ñƒ"
 
-#: 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:9621
+#, c-format
+msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#<PRIx64>"
 
-#: elf32-nds32.c:8502
-msgid "%B: error: Cannot set _ITB_BASE_"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð´ÐµÑ�Ð¸Ð¼ â€ž_ITB_BASE_â€œ"
+#: elf32-nds32.c:12886
+#, c-format
+msgid "%pB: nested OMIT_FP in %pA"
+msgstr "%pB: ÑƒÐ³Ð½ÐµÐ¶Ñ’ÐµÐ½Ð¾ â€žOMIT_FPâ€œ Ñƒ â€ž%pAâ€œ"
 
-#: elf32-nds32.c:11384
-msgid "%B: Nested OMIT_FP in %A."
-msgstr "%B: Ð£Ð³Ð½ÐµÐ¶Ñ’ÐµÐ½Ð¾ â€žOMIT_FPâ€œ Ñƒ â€ž%Aâ€œ."
+#: elf32-nds32.c:12905
+#, c-format
+msgid "%pB: unmatched OMIT_FP in %pA"
+msgstr "%pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€žOMIT_FPâ€œ Ñƒ â€ž%pAâ€œ"
 
-#: elf32-nds32.c:11401
-msgid "%B: Unmatched OMIT_FP in %A."
-msgstr "%B: Ð�ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€žOMIT_FPâ€œ Ñƒ â€ž%Aâ€œ."
+#: elf32-or1k.c:1256
+#, c-format
+msgid "%pB: Cannot handle relocation value size of %d"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¾Ð¼ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ð´ %d"
 
-#: elf32-nds32.c:13357
-msgid "Linker: cannot init ex9 hash table error \n"
-msgstr "ÐŸÐ¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ð³Ñ€ÐµÑˆÐºÑƒ â€žex9â€œ Ñ…ÐµÑˆ Ñ‚Ð°Ð±ÐµÐ»Ðµ \n"
+#: elf32-or1k.c:1375
+#, c-format
+msgid "%pB: unknown relocation type %d"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
 
-#: elf32-nds32.c:13790 elf32-nds32.c:13804
-msgid "Linker: error cannot fixed ex9 relocation \n"
-msgstr "ÐŸÐ¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡: Ð³Ñ€ÐµÑˆÐºÐ° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸ â€žex9â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ \n"
+#: elf32-or1k.c:1429
+#, c-format
+msgid "%pB: addend should be zero for plt relocations"
+msgstr "%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€žpltâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elf32-nds32.c:14015
+#: elf32-or1k.c:1542
 #, 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: addend should be zero for got relocations"
+msgstr "%pB: Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° Ð±ÑƒÐ´Ðµ Ð½ÑƒÐ»Ð° Ð·Ð° â€žgotâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: 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-or1k.c:1559
+#, c-format
+msgid "%pB: gotoff relocation against dynamic symbol %s"
+msgstr "%pB: â€žgotoffâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf32-nios2.c:2861
+#: elf32-or1k.c:1573 elf32-or1k.c:1588 elf64-alpha.c:4409 elf64-alpha.c:4553
 #, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ 0x%08x ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾\n"
+msgid "%pB: pc-relative relocation against dynamic symbol %s"
+msgstr "%pB: â€žpcâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf32-nios2.c:2878
+#: elf32-or1k.c:1602
 #, 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 "%pB: non-pic relocation against symbol %s"
+msgstr "%pB: â€žnon-picâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: 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-or1k.c:1686
+#, c-format
+msgid "%pB: support for local dynamic not implemented"
+msgstr "%pB: Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð°"
 
-#: elf32-nios2.c:3520
-msgid "relocation out of range"
-msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+#: elf32-or1k.c:1865
+#, c-format
+msgid "%pB: will not resolve runtime TLS relocation"
+msgstr "%pB: Ð½ÐµÑ›Ñƒ Ñ€ÐµÑˆÐ¸Ñ‚Ð¸ Ð²Ñ€ÐµÐ¼Ðµ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elf32-nios2.c:3530 elf32-tic6x.c:2744
-msgid "dangerous relocation"
-msgstr "Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: elf32-or1k.c:2199
+#, c-format
+msgid "%pB: bad relocation section name `%s'"
+msgstr "%pB: Ð»Ð¾Ñˆ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ"
 
-#: elf32-nios2.c:4529
+#: elf32-or1k.c:3312
 #, c-format
-msgid "dynamic variable `%s' is zero size"
-msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+msgid "%pB: %s flag mismatch with previous modules"
+msgstr "%pB: â€ž%sâ€œ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
 
-#: elf32-ppc.c:2100
+#: elf32-ppc.c:990 elf64-ppc.c:1753
 #, 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:1627
+#, c-format
+msgid "corrupt %s section in %pB"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€ž%sâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº Ñƒ â€ž%pBâ€œ"
+
+#: elf32-ppc.c:1646
+#, c-format
+msgid "unable to read in %s section from %pB"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%pBâ€œ"
+
+#: elf32-ppc.c:1688
+#, c-format
+msgid "warning: unable to set size of %s section in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ"
+
+#: elf32-ppc.c:1737
+msgid "failed to allocate space for new APUinfo section"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ Ð·Ð° Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ"
+
+#: elf32-ppc.c:1756
+msgid "failed to compute new APUinfo section"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ"
+
+#: elf32-ppc.c:1759
+msgid "failed to install new APUinfo section"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð½Ñ�Ñ‚Ð°Ð»Ð¸Ñ€Ð°Ð¼ Ð½Ð¾Ð²Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€žAPUinfoâ€œ"
+
+#: elf32-ppc.c:2867
+#, c-format
+msgid "%pB: relocation %s cannot be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: elf32-ppc.c:3586 elf32-ppc.c:3594
+#, c-format
+msgid "%pB uses double-precision hard float, %pB uses single-precision hard float"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸"
+
+#: elf32-ppc.c:3616 elf32-ppc.c:3624
+#, c-format
+msgid "%pB uses 64-bit long double, %pB uses 128-bit long double"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð», â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 128-Ð±Ð¸Ñ‚Ð½Ð¸ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð»"
+
+#: elf32-ppc.c:3632 elf32-ppc.c:3640
+#, c-format
+msgid "%pB uses IBM long double, %pB uses IEEE long double"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žIBMâ€œ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð», â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žIEEEâ€œ Ð´ÑƒÐ³Ð¸ Ð´ÑƒÐ±Ð»"
+
+#: elf32-ppc.c:3707 elf32-ppc.c:3716
+#, c-format
+msgid "%pB uses AltiVec vector ABI, %pB uses SPE vector ABI"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žAltiVecâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€ â€žABIâ€œ, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žSPEâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€ â€žABIâ€œ"
+
+#: elf32-ppc.c:3745 elf32-ppc.c:3754
+#, c-format
+msgid "%pB uses r3/r4 for small structure returns, %pB uses memory"
+msgstr "â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€žr3/r4â€œ Ð·Ð° Ð¼Ð°Ð»Ðµ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ðµ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ, â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ"
+
+#: elf32-ppc.c:3818
+#, c-format
+msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ñ�Ð° â€ž-mrelocatableâ€œ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼"
+
+#: elf32-ppc.c:3826
+#, c-format
+msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ ÑƒÐ¾Ð±Ð¸Ñ‡Ð°Ñ˜ÐµÐ½Ð¸Ð¼ Ð¿ÑƒÑ‚ÐµÐ¼ Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð¾ Ñ�Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð° ÐºÐ¾Ñ˜Ð¸ Ñ�Ñƒ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¸ Ñ�Ð° â€ž-mrelocatableâ€œ"
+
+#: elf32-ppc.c:3897
+#, 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:3916
+#, 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:4026
+#, c-format
+msgid "bss-plt forced due to %pB"
+msgstr "â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð·Ð±Ð¾Ð³ â€ž%pBâ€œ"
+
+#: elf32-ppc.c:4028
+msgid "bss-plt forced by profiling"
+msgstr "â€žbss-pltâ€œ Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�Ð¸Ñ™ÐµÐ½Ð¾ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ð¸Ñ�Ð°ÑšÐµÐ¼"
+
+#: elf32-ppc.c:4606 elf64-ppc.c:8516
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr "%H: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%#xâ€œ.\n"
 
 #. 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:4636 elf64-ppc.c:8581
+#, 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:5564 elf32-sh.c:3018 elf32-tilepro.c:2245 elfxx-sparc.c:2454
+#: elfxx-tilegx.c:2494
+#, 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:6510
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr "%pB: Ð”Ð¾Ñ‚ÐµÑ€ÑƒÑ˜ÐµÐ¼ Ð³Ñ€Ð°Ð½Ñƒ Ð½Ð° 0x%V Ð¿Ñ€ÐµÐ¼Ð° â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ\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:7463
+msgid "%P: %H: error: %s with unexpected instruction %x\n"
+msgstr "%P: %H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ñ�Ð° Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼ â€ž%xâ€œ\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:7501
+msgid "%H: fixup branch overflow\n"
+msgstr "%H: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žfixupâ€œ Ð³Ñ€Ð°Ð½Ðµ\n"
 
-#: 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:7541 elf32-ppc.c:7579
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
+msgstr "%pB(%pA+%#<PRIx64>): Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ñ�Ð° Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼ â€ž%#xâ€œ"
 
-#: 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:7643
+#, c-format
+msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n"
+msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žbss-pltâ€œ â€ž-fPICâ€œ â€žifuncâ€œ â€ž%sâ€œ\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:7679
+#, c-format
+msgid "%pB: reloc %#x unsupported"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#xâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
-#: elf32-ppc.c:9067
-msgid "%P: %H: unresolvable %s relocation against symbol `%s'\n"
-msgstr "%P: %H: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ\n"
+#: elf32-ppc.c:7962
+#, c-format
+msgid "%H: non-zero addend on %s reloc against `%s'\n"
+msgstr "%H: Ð½Ðµ Ð½ÑƒÐ»Ñ‚Ð¸ Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº Ð½Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ\n"
 
-#: elf32-ppc.c:9114
-msgid "%P: %H: %s reloc against `%s': error %d\n"
-msgstr "%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d\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:7994
+#, c-format
+msgid "%X%H: @local call to ifunc %s\n"
+msgstr "%X%H: Ð¿Ð¾Ð·Ð¸Ð² â€ž@localâ€œ Ð·Ð° i-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ\n"
 
-#: elf32-ppc.c:9750
-msgid "%P: %s not defined in linker created %s\n"
-msgstr "%P: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñƒ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ñƒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼ â€ž%sâ€œ\n"
+#: elf32-ppc.c:8172
+#, c-format
+msgid "%H: relocation %s for indirect function %s unsupported\n"
+msgstr "%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
 
-#: elf32-rl78.c:784
-msgid "Warning: RL78_SYM reloc with an unknown symbol"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRL78_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼"
+#: elf32-ppc.c:8510 elf32-ppc.c:8541 elf32-ppc.c:8644 elf32-ppc.c:8744
+#, c-format
+msgid "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)"
+msgstr "%pB: Ð¼ÐµÑ‚Ð° (%s) Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾Ð¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ (%s)"
 
-#: elf32-rl78.c:952 elf32-rx.c:1324
-msgid "%B(%A): error: call to undefined function '%s'"
-msgstr "%B(%A): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ"
+#: elf32-ppc.c:8922 elf32-ppc.c:8943
+msgid "%X%P: %H: %s relocation unsupported for bss-plt\n"
+msgstr "%X%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° â€žbss-pltâ€œ\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:9025
+#, c-format
+msgid "%H: error: %s against `%s' not a multiple of %u\n"
+msgstr "%H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ\n"
 
-#: elf32-rl78.c:970 elf32-rx.c:1342
-msgid "%B(%A): internal error: out of range error"
-msgstr "%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+#: elf32-ppc.c:9054
+#, c-format
+msgid "%H: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%H: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ\n"
 
-#: elf32-rl78.c:974 elf32-rx.c:1346
-msgid "%B(%A): internal error: unsupported relocation error"
-msgstr "%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+#: elf32-ppc.c:9136
+#, c-format
+msgid "%H: %s reloc against `%s': error %d\n"
+msgstr "%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d\n"
 
-#: elf32-rl78.c:978 elf32-rx.c:1350
-msgid "%B(%A): internal error: dangerous relocation"
-msgstr "%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: elf32-ppc.c:10018
+msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n"
+msgstr "%X%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð¸ Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ›Ðµ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°\n"
 
-#: elf32-rl78.c:982 elf32-rx.c:1354
-msgid "%B(%A): internal error: unknown error"
-msgstr "%B(%A): ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°"
+#: elf32-ppc.c:10022 elf64-ppc.c:18320
+msgid "%P: warning: text relocations and GNU indirect functions may result in a segfault at runtime\n"
+msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð¸ Ð“Ð�Ð£-Ð¾Ð²Ðµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð¼Ð¾Ð³Ñƒ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð¸Ñ€Ð°Ñ‚Ð¸ Ð½ÐµÑƒÑ�Ð¿ÐµÑ…Ð¾Ð¼ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ˜Ðµ Ñƒ Ð²Ñ€ÐµÐ¼Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°\n"
 
-#: elf32-rl78.c:1043
-msgid "RL78/G10 ABI conflict: cannot link G10 and non-G10 objects together"
-msgstr "â€žABI RL78/G10â€œ Ñ�ÑƒÐºÐ¾Ð±: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð“10 Ð¸ Ð½Ðµ-Ð“10 Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ"
+#: elf32-ppc.c:10067
+#, c-format
+msgid "%s not defined in linker created %pA"
+msgstr "â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ñƒ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ñƒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼ â€ž%pAâ€œ"
 
-#: elf32-rl78.c:1046 elf32-rl78.c:1049
+#: elf32-pru.c:582 elf32-pru.c:1477
 #, c-format
-msgid "- %s is G10, %s is not"
-msgstr "â€” â€ž%sâ€œ Ñ˜Ðµ Ð“10, â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ"
+msgid "error: %pB: old incompatible object file detected"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ñ�Ñ‚Ð°Ñ€Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð°"
 
-#: elf32-rl78.c:1072
+#: elf32-pru.c:931
+msgid "relocation out of range"
+msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+
+#: elf32-pru.c:941 elf32-tic6x.c:2649
+msgid "dangerous relocation"
+msgstr "Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ/Ð¿Ð¾Ñ‚ÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° â€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
+msgstr "â€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð´ÐµÐ»Ð¸ Ð½ÑƒÐ»Ð¾Ð¼"
+
+#: elf32-rl78.c:1069
+msgid "warning: RL78_SYM reloc with an unknown symbol"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRL78_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼"
+
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr "%H: â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°\n"
+
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
+msgstr "%H: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%uâ€œ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°\n"
+
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr "%H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð´Ð°Ñ˜Ðµ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€ž%xâ€œ\n"
+
+#: elf32-rl78.c:1220
+#, c-format
+msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
+msgstr "â€žRL78 ABIâ€œ Ñ�ÑƒÐºÐ¾Ð±: â€žG10â€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° â€ž%pBâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÐ²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð° â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼ â€ž%pBâ€œ"
+
+#: elf32-rl78.c:1237
+#, c-format
+msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
+msgstr "â€žABI RL78â€œ Ñ�ÑƒÐºÐ¾Ð±: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ â€ž%pBâ€œ Ñ�Ð° â€ž%sâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ¾Ð¼ â€ž%pBâ€œ"
+
+#: elf32-rl78.c:1246
+msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
+msgstr "â€žRL78â€œ Ñ�ÑƒÐºÐ¾Ð± Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐ°: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ðµ Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ"
+
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
 #, c-format
-msgid " [G10]"
-msgstr " [Ð“10]"
+msgid "- %pB is 64-bit, %pB is not"
+msgstr "â€” â€ž%pBâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¾, â€ž%pBâ€œ Ð½Ð¸Ñ˜Ðµ"
 
-#: elf32-rx.c:563
-msgid "%B:%A: Warning: deprecated Red Hat reloc "
-msgstr "%B:%A: Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð·Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð ÐµÐ´ Ð¥ÐµÑ‚Ð° "
+#: elf32-rl78.c:1281
+#, c-format
+msgid " [64-bit doubles]"
+msgstr " [doubles de 64 bits]"
+
+#: elf32-rx.c:618
+#, c-format
+msgid "%pB:%pA: table entry %s outside table"
+msgstr "%pB:%pA: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ñ‚Ð°Ð±ÐµÐ»Ðµ"
+
+#: elf32-rx.c:625
+#, c-format
+msgid "%pB:%pA: table entry %s not word-aligned within table"
+msgstr "%pB:%pA: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð° Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ¼ Ñ€ÐµÑ‡Ð¸ ÑƒÐ½ÑƒÑ‚Ð°Ñ€ Ñ‚Ð°Ð±ÐµÐ»Ðµ"
+
+#: elf32-rx.c:700
+#, 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:720
+#, 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:1304
+msgid "warning: RX_SYM reloc with an unknown symbol"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRX_SYMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼"
+
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr "%pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð·Ð¸Ð² Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ"
+
+#: elf32-rx.c:3185
+#, c-format
+msgid "there is a conflict merging the ELF header flags from %pB"
+msgstr "Ñ�ÑƒÐºÐ¾Ð± Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐ° Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ð° â€žELFâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð° Ð¸Ð· â€ž%pBâ€œ"
+
+#: elf32-rx.c:3188
+#, c-format
+msgid "  the input  file's flags: %s"
+msgstr "  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ ÑƒÐ»Ð°Ð·Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %s"
+
+#: elf32-rx.c:3190
+#, c-format
+msgid "  the output file's flags: %s"
+msgstr "  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¸Ð·Ð»Ð°Ð·Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %s"
 
-#: elf32-score.c:1520 elf32-score7.c:1379 elfxx-mips.c:3642
+#: elf32-rx.c:3797
+#, c-format
+msgid "%pB:%pA: table %s missing corresponding %s"
+msgstr "%pB:%pA: Ñ‚Ð°Ð±ÐµÐ»Ð¸ â€ž%sâ€œ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€ž%sâ€œ"
+
+#: elf32-rx.c:3805
+#, c-format
+msgid "%pB:%pA: %s and %s must be in the same input section"
+msgstr "%pB:%pA: â€ž%sâ€œ Ð¸ â€ž%sâ€œ Ð¼Ð¾Ñ€Ð°Ñ˜Ñƒ Ð±Ð¸Ñ‚Ð¸ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ð¼ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#: elf32-s390.c:2005 elf64-s390.c:1974
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ð·Ð° â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+
+#: elf32-score.c:1505 elf32-score7.c:1368 elfxx-mips.c:3868
 msgid "not enough GOT space for local GOT entries"
 msgstr "Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ â€žGOTâ€œ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ð·Ð° Ð¼ÐµÑ�Ð½Ðµ ÑƒÐ½Ð¾Ñ�Ðµ â€žGOTâ€œ"
 
-#: elf32-score.c:2742
-msgid "address not word align"
+#: elf32-score.c:2737
+msgid "address not word aligned"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð¿Ð¾ Ñ€ÐµÑ‡Ð¸"
 
-#: elf32-score.c:2827 elf32-score7.c:2631
+#: elf32-score.c:2818 elf32-score7.c:2625
+#, c-format
+msgid "%pB: malformed reloc detected for section %pA"
+msgstr "%pB: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#: elf32-score.c:2872 elf32-score7.c:2679
 #, c-format
-msgid "%s: Malformed reloc detected for section %s"
-msgstr "%s: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
+msgstr "%pB: â€žCALL15â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#<PRIx64> Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: 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:3481 elf32-score7.c:3292 elfxx-mips.c:11175
+#, c-format
+msgid "%pB: cannot handle more than %d dynamic symbols"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€Ð°Ð´Ð¸Ð¼ Ñ�Ð° Ð²Ð¸ÑˆÐµ Ð¾Ð´ %d Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: elf32-score.c:4007 elf32-score7.c:3811
+#: elf32-score.c:3987 elf32-score7.c:3794
 #, c-format
 msgid " [pic]"
 msgstr " [Ð¿Ð¸Ðº]"
 
-#: elf32-score.c:4011 elf32-score7.c:3815
+#: elf32-score.c:3991 elf32-score7.c:3798
 #, 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-score.c:4038 elf32-score7.c:3845
+#, c-format
+msgid "%pB: warning: linking PIC files with non-PIC files"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ�Ð° Ð½Ðµ-â€žPICâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°"
 
-#: elf32-sh.c:569
-msgid "%B: 0x%lx: warning: bad R_SH_USES offset"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€žR_SH_USESâ€œ"
+#: elf32-sh.c:533
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_SH_USESâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð»Ð°Ðº 0x%x"
 
-#: 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:3753
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation"
+msgstr "%pB: %#<PRIx64>: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ñ†Ð¸Ñ™ Ð³Ñ€Ð°Ð½Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
 
-#: 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:3783 elf32-sh.c:3799
+#, c-format
+msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
+msgstr "%pB: %#<PRIx64>: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ %#<PRIx64>"
 
-#: elf32-sh.c:613
-msgid "%B: 0x%lx: warning: could not find expected reloc"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+#: elf32-sh.c:3815
+#, 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:641
-msgid "%B: 0x%lx: warning: symbol in unexpected section"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ˜Ðµ Ñƒ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+#: elf32-sh.c:3831
+#, 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:767
-msgid "%B: 0x%lx: warning: could not find expected COUNT reloc"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€žCOUNTâ€œ"
+#: elf32-sh.c:3961 elf32-sh.c:4356
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÐ½ÐµÑ�ÐµÐ¼ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ñƒ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ"
 
-#: elf32-sh.c:776
-msgid "%B: 0x%lx: warning: bad count"
-msgstr "%B: 0x%lx: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾Ñˆ Ð±Ñ€Ð¾Ñ˜"
+#: elf32-sh.c:4459
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\""
+msgstr "%pB(%pA+%#<PRIx64>): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: elf32-sh.c:1180 elf32-sh.c:1550
-msgid "%B: 0x%lx: fatal: reloc overflow while relaxing"
-msgstr "%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
+#: elf32-sh.c:4578
+#, c-format
+msgid "%pB(%pA): offset in relocation for GD->LE translation is too small: %#<PRIx64>"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ Ð·Ð° â€žGD->LEâ€œ Ð¿Ñ€ÐµÐ²Ð¾Ð´ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸: %#<PRIx64>"
 
-#: elf32-sh.c:3939 elf64-sh64.c:1514
-msgid "Unexpected STO_SH5_ISA32 on local symbol is not handled"
-msgstr "Ð�ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ â€žSTO_SH5_ISA32â€œ Ð½Ð° Ð¼ÐµÑ�Ð½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð½Ð¸Ñ˜Ðµ Ð¾Ð´Ñ€Ð°Ñ’ÐµÐ½Ð¾"
+#. The backslash is to prevent bogus trigraph detection.
+#: elf32-sh.c:4596
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd4??)"
 
-#: elf32-sh.c:4190
-msgid "%B: 0x%lx: fatal: unaligned branch target for relax-support relocation"
-msgstr "%B: 0x%lx: ÐºÐ¾Ð±Ð½Ð° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ñ†Ð¸Ñ™ Ð³Ñ€Ð°Ð½Ðµ Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð¾Ð¿ÑƒÑˆÑ‚Ð°ÑšÐ°"
+#: elf32-sh.c:4604
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xc7??)"
 
-#: 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:4611
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd1??)"
 
-#: 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:4618
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x310c??)"
 
-#: 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:4625
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x410b??)"
 
-#: 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:4632
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x34cc??)"
 
-#: elf32-sh.c:4993
-msgid "%B(%A+0x%lx): %s relocation against external symbol \"%s\""
-msgstr "%B(%A+0x%lx): â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elf32-sh.c:4667
+#, 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:5466
+#: elf32-sh.c:4685
 #, c-format
-msgid "%X%C: relocation to \"%s\" references a different segment\n"
-msgstr "%X%C: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0xd0??: mov.l)"
 
-#: elf32-sh.c:5472
+#: elf32-sh.c:4694
 #, c-format
-msgid "%C: warning: relocation to \"%s\" references a different segment\n"
-msgstr "%C: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
+msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° â€ž%#04Xâ€œ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… 0x0?12: stc)"
 
-#: 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:4701
+#, 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:6259 elf32-sh.c:6341
-msgid "%B: `%s' accessed both as FDPIC and thread local symbol"
-msgstr "%B: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ â€žFDPICâ€œ-Ñƒ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
+#: elf32-sh.c:4816
+#, 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:6289
-msgid "%B: Function descriptor relocation with non-zero addend"
-msgstr "%B: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
+#: elf32-sh.c:4884
+#, 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:6525 elf64-alpha.c:4661
-msgid "%B: TLS local exec code cannot be linked into shared objects"
-msgstr "%B: Ð¢Ð›Ð¡ Ð¼ÐµÑ�Ð½Ð¸ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ ÐºÐ¾Ð´ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
+#: elf32-sh.c:5012
+#, c-format
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
+msgstr "%X%H: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-sh64.c:224 elf64-sh64.c:2318
+#: elf32-sh.c:5019
 #, c-format
-msgid "%s: compiled as 32-bit object and %s is 64-bit"
-msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¸"
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
+msgstr "%H: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ â€ž%sâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð° ÑƒÐ¿ÑƒÑ‚Ñƒ Ð´Ñ€ÑƒÐ³Ð¾Ð³ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°\n"
 
-#: elf32-sh64.c:227 elf64-sh64.c:2321
+#: elf32-sh.c:5487 elf32-sh.c:5569
 #, c-format
-msgid "%s: compiled as 64-bit object and %s is 32-bit"
-msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸"
+msgid "%pB: `%s' accessed both as normal and FDPIC symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð½Ð¾Ð¼ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€žFDPICâ€œ"
 
-#: elf32-sh64.c:229 elf64-sh64.c:2323
+#: elf32-sh.c:5493 elf32-sh.c:5574
 #, c-format
-msgid "%s: object size does not match that of target %s"
-msgstr "%s: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ñ†Ð¸Ñ™Ð° â€ž%sâ€œ"
+msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
+msgstr "%pB: â€ž%sâ€œ Ñ�Ðµ Ð¿Ñ€Ð¸Ñ�Ñ‚ÑƒÐ¿Ð¸Ð»Ð¾ Ð¸ ÐºÐ°Ð¾ â€žFDPICâ€œ-Ñƒ Ð¸ ÐºÐ°Ð¾ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ Ð»Ð¾ÐºÐ°Ð»Ð½Ðµ Ð½Ð¸Ñ‚Ð¸"
 
-#: elf32-sh64.c:452 elf64-sh64.c:2839
+#: elf32-sh.c:5524
 #, c-format
-msgid "%s: encountered datalabel symbol in input"
-msgstr "%s: Ð½Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð°Ñ‚Ð¿Ð¸Ñ�Ð° Ð´Ð°Ñ‚ÑƒÐ¼Ð° Ñƒ ÑƒÐ»Ð°Ð·Ñƒ"
+msgid "%pB: Function descriptor relocation with non-zero addend"
+msgstr "%pB: ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
 
-#: elf32-sh64.c:529
-msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
-msgstr "ÐŸÐ¢Ð‘ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHmediaâ€œ (Ð±Ð¸Ñ‚ 0 == 1)"
+#: elf32-sh.c:5731 elf64-alpha.c:4645
+#, c-format
+msgid "%pB: TLS local exec code cannot be linked into shared objects"
+msgstr "%pB: â€žTLSâ€œ Ð¼ÐµÑ�Ð½Ð¸ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ ÐºÐ¾Ð´ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð°"
 
-#: elf32-sh64.c:532
-msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
-msgstr "ÐŸÐ¢Ð� Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHcompactâ€œ (Ð±Ð¸Ñ‚ 0 == 0)"
+#: elf32-sh.c:5846
+#, c-format
+msgid "%pB: uses %s instructions while previous modules use %s instructions"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ Ð´Ð¾Ðº Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ð¸ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ðµ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ"
 
-#: elf32-sh64.c:550
+#: elf32-sh.c:5858
 #, c-format
-msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
-msgstr "%s: Ð“Ð�Ð¡ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ ÐŸÐ¢Ð‘ â€žinsnâ€œ Ñ�Ð° â€žR_SH_PT_16â€œ"
+msgid "internal error: merge of architecture '%s' with architecture '%s' produced unknown architecture"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ â€ž%sâ€œ Ñ�Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾Ð¼ â€ž%sâ€œ Ñ˜Ðµ Ð´Ð°Ð»Ð¾ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
 
-#: 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:5899
+#, c-format
+msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ ÐºÐ¾Ñ˜Ðµ Ð½Ð¸Ñ�Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ðµ Ñ�Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð°Ð¼Ð° ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¸Ð¼ Ñƒ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
 
-#: elf32-sh64.c:675
+#: elf32-sh.c:5912
 #, c-format
-msgid "%s: could not write out added .cranges entries"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð´Ð¾Ð´Ð°Ñ‚Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
+msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
+msgstr "%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¾Ð¼ÐµÑˆÐ°Ð¼ â€žFDPICâ€œ Ð¸ Ð½Ðµ-â€žFDPICâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ"
 
-#: elf32-sh64.c:735
+#: elf32-sparc.c:89
 #, c-format
-msgid "%s: could not write out sorted .cranges entries"
-msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð½Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
+msgid "%pB: compiled for a 64 bit system and target is 32 bit"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸"
 
-#: elf32-sparc.c:90
-msgid "%B: compiled for a 64 bit system and target is 32 bit"
-msgstr "%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸"
+#: elf32-sparc.c:102
+#, c-format
+msgid "%pB: linking little endian files with big endian files"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸"
 
-#: elf32-sparc.c:103
-msgid "%B: linking little endian files with big endian files"
-msgstr "%B: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸ Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚Ð¸"
+#: elf32-sparc.c:157
+#, c-format
+msgid "%pB: unhandled sparc machine value '%lu' detected during write processing"
+msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ â€žsparcâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ðµ â€ž%luâ€œ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð° Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ð¾Ð±Ñ€Ð°Ñ’Ð¸Ð²Ð°ÑšÐ° Ð¿Ð¸Ñ�Ð°ÑšÐ°"
 
-#: elf32-spu.c:716
-msgid "%X%P: overlay section %A does not start on a cache line.\n"
-msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.\n"
+#: elf32-spu.c:733
+msgid "%X%P: overlay section %pA does not start on a cache line\n"
+msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ\n"
 
-#: elf32-spu.c:724
-msgid "%X%P: overlay section %A is larger than a cache line.\n"
-msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ñ€ÐµÐ´Ð° Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.\n"
+#: elf32-spu.c:741
+msgid "%X%P: overlay section %pA is larger than a cache line\n"
+msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ñ€ÐµÐ´Ð° Ð¾Ñ�Ñ‚Ð°Ð²Ðµ\n"
 
-#: elf32-spu.c:744
-msgid "%X%P: overlay section %A is not in cache area.\n"
-msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Aâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ.\n"
+#: elf32-spu.c:761
+msgid "%X%P: overlay section %pA is not in cache area\n"
+msgstr "%X%P: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ€ÐµÐ´Ñƒ Ð¾Ñ�Ñ‚Ð°Ð²Ðµ\n"
 
-#: 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:802
+#, 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:1008
-msgid "warning: call to non-function symbol %s defined in %B"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñ�ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ â€ž%Bâ€œ"
+#: elf32-spu.c:1028
+#, c-format
+msgid "warning: call to non-function symbol %s defined in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð·Ð¸Ð² Ð½Ðµ-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñ�ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ñƒ â€ž%pBâ€œ"
 
-#: 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:1378
+#, 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:1877
-msgid "%B is not allowed to define %s"
-msgstr "â€ž%Bâ€œ Ð½ÐµÐ¼Ð° Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ â€ž%sâ€œ"
+#: elf32-spu.c:1908
+#, c-format
+msgid "%pB is not allowed to define %s"
+msgstr "â€ž%pBâ€œ Ð½ÐµÐ¼Ð° Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ â€ž%sâ€œ"
 
-#: elf32-spu.c:1885
+#: elf32-spu.c:1916
 #, c-format
 msgid "you are not allowed to define %s in a script"
 msgstr "Ð²Ð¸ Ð½ÐµÐ¼Ð°Ñ‚Ðµ Ð´Ð¾Ð·Ð²Ð¾Ð»Ñƒ Ð´Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµÑ‚Ðµ â€ž%sâ€œ Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸"
 
-#: elf32-spu.c:1919
+#: elf32-spu.c:1950
 #, c-format
 msgid "%s in overlay section"
 msgstr "â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°"
 
-#: elf32-spu.c:1948
+#: elf32-spu.c:1979
 msgid "overlay stub relocation overflow"
 msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð¿Ñ€ÐµÐºÑ€Ð¸Ð²Ð°ÑšÐ°"
 
-#: elf32-spu.c:1957
+#: elf32-spu.c:1988 elf64-ppc.c:15362
 msgid "stubs don't match calculated size"
 msgstr "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜Ñƒ Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ñ‚Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸"
 
-#: elf32-spu.c:2539
+#: elf32-spu.c:2571
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð° â€ž%sâ€œ\n"
 
-#: elf32-spu.c:2555
+#: elf32-spu.c:2587
 #, 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:2619
 #, 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:2760
+#, 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:3326
+#, 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:4023
 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:4338
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¾ Ñƒ â€ž%sâ€œ\n"
 
-#: elf32-spu.c:4308
+#: elf32-spu.c:4342
 #, c-format
 msgid "%s duplicated\n"
 msgstr "â€ž%sâ€œ Ñ˜Ðµ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¾\n"
 
-#: elf32-spu.c:4315
+#: elf32-spu.c:4349
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr "Ð¸Ð·Ð²Ð¸Ð½Ð¸Ñ‚Ðµ, Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð·Ð° ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾-Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°\n"
 
-#: elf32-spu.c:4356
+#: elf32-spu.c:4391
+#, 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:4547
+#, c-format
+msgid "%pB:%pA%s exceeds overlay size\n"
+msgstr "â€ž%pB:%pA%sâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°\n"
+
+#: elf32-spu.c:4688
+msgid "%F%P: auto overlay error: %E\n"
+msgstr "%F%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñ�Ð°Ð¼Ð¾Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ°: %E\n"
 
-#: elf32-spu.c:4673
+#: elf32-spu.c:4709
 msgid "Stack size for call graph root nodes.\n"
 msgstr "Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð·Ð° Ð¿Ð¾Ð·Ð¸Ð² Ñ‡Ð²Ð¾Ñ€Ð¾Ð²Ð° ÐºÐ¾Ñ€ÐµÐ½Ð° Ð³Ñ€Ð°Ñ„Ð¸ÐºÐ°.\n"
 
-#: elf32-spu.c:4674
+#: elf32-spu.c:4710
 msgid ""
 "\n"
 "Stack size for functions.  Annotations: '*' max stack, 't' tail call\n"
@@ -2625,1477 +3794,2857 @@ msgstr ""
 "\n"
 "Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ð·Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ.  Ð�Ð°Ð¿Ð¾Ð¼ÐµÐ½Ðµ: â€ž*â€œ Ð½Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº, â€žtâ€œ Ð¿Ð¾Ð·Ð¸Ð² Ð¾Ñ�Ñ‚Ð°Ñ‚ÐºÐ°\n"
 
-#: elf32-spu.c:4684
+#: elf32-spu.c:4720
 msgid "Maximum stack required is 0x%v\n"
 msgstr "Ð�Ð°Ñ˜Ð²ÐµÑ›Ð¸ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ñ˜Ðµ 0x%v\n"
 
-#: elf32-spu.c:4775
+#: elf32-spu.c:4739
+msgid "%X%P: stack/lrlive analysis error: %E\n"
+msgstr "%X%P: Ð³Ñ€ÐµÑˆÐºÐ° â€žstack/lrliveâ€œ Ð°Ð½Ð°Ð»Ð¸Ð·Ðµ: %E\n"
+
+#: elf32-spu.c:4742
+msgid "%F%P: can not build overlay stubs: %E\n"
+msgstr "%F%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐµ Ð¿Ñ€ÐµÐºÐ»Ð°Ð¿Ð°ÑšÐ° â€ž%Eâ€œ\n"
+
+#: elf32-spu.c:4811
 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:5047
+#, 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:1587
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ ÐºÐ¾Ñ˜Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸ Ð½Ðµ-ÐŸÐ˜Ð¦ ÐºÐ¾Ð´"
 
-#: elf32-tic6x.c:1605
+#: elf32-tic6x.c:1592
 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:2426
+#, c-format
+msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ�Ðµ Ð¾Ð´Ð½Ð¾Ñ�Ð¸ Ð½Ð° â€žSBâ€œ Ð°Ð»Ð¸ â€ž__c6xabi_DSBT_BASEâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾"
+
+#: elf32-tic6x.c:3490
+#, c-format
+msgid "%pB: error: unknown mandatory EABI object attribute %d"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
 
-#: elf32-tic6x.c:3648
-msgid "%B: error: unknown mandatory EABI object attribute %d"
-msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð±Ð°Ð²ÐµÐ·Ð°Ð½ â€ž%dâ€œ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€žEABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+#: elf32-tic6x.c:3499
+#, 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:3617 elf32-tic6x.c:3626
+#, 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:3636 elf32-tic6x.c:3645
+#, 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:3654 elf32-tic6x.c:3663
+#, 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:3672 elf32-tic6x.c:3680
+#, 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:3703
+#, 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:3722
+#, 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:3624 elfxx-tilegx.c:4017 elfxx-x86.c:2773
+#: elfnn-aarch64.c:10343 elfnn-kvx.c:4628 elfnn-loongarch.c:6062
+#: elfnn-riscv.c:3615
+#, 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:466
+msgid "failed to find previous HI16 reloc"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žHI16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf32-v850.c:2293
+#: elf32-v850.c:2309
 msgid "could not locate special linker symbol __gp"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__gpâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
 
-#: elf32-v850.c:2297
+#: elf32-v850.c:2313
 msgid "could not locate special linker symbol __ep"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚ â€ž__epâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
 
-#: elf32-v850.c:2301
+#: elf32-v850.c:2317
 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:2538
+#, 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:2554
+#, c-format
+msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 64-Ð±Ð¸Ñ‚Ð½Ðµ Ð´ÑƒÐ±Ð»ÐµÑ€Ðµ Ð°Ð»Ð¸ â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ 32-Ð±Ð¸Ñ‚Ð½Ðµ"
+
+#: elf32-v850.c:2569
+#, 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:2601
+#, c-format
+msgid " alignment of 8-byte entities: "
+msgstr " Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ 8-Ð±Ð¸Ñ‚Ð½Ð¸Ñ… ÐµÐ½Ñ‚Ð¸Ñ‚ÐµÑ‚Ð°: "
+
+#: elf32-v850.c:2604
+#, c-format
+msgid "4-byte"
+msgstr "4-Ð±Ð¸Ñ‚Ð°"
+
+#: elf32-v850.c:2605
+#, c-format
+msgid "8-byte"
+msgstr "8-Ð±Ð¸Ñ‚Ð°"
+
+#: elf32-v850.c:2606 elf32-v850.c:2618
+#, c-format
+msgid "not set"
+msgstr "Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾"
+
+#: elf32-v850.c:2607 elf32-v850.c:2619 elf32-v850.c:2631 elf32-v850.c:2642
+#: elf32-v850.c:2653 elf32-v850.c:2664
+#, c-format
+msgid "unknown: %x"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %x"
+
+#: elf32-v850.c:2613
+#, c-format
+msgid " size of doubles: "
+msgstr " Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð´ÑƒÐ±Ð»ÐµÑ€Ð°: "
+
+#: elf32-v850.c:2616
+#, c-format
+msgid "4-bytes"
+msgstr "4-Ð±Ð°Ñ˜Ñ‚Ð°"
+
+#: elf32-v850.c:2617
+#, c-format
+msgid "8-bytes"
+msgstr "8-Ð±Ð°Ñ˜Ñ‚Ð°"
+
+#: elf32-v850.c:2625
+#, c-format
+msgid " FPU support required: "
+msgstr " â€žFPUâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð°: "
+
+#: elf32-v850.c:2628
+#, c-format
+msgid "FPU-2.0"
+msgstr "FPU-2.0"
+
+#: elf32-v850.c:2629
+#, c-format
+msgid "FPU-3.0"
+msgstr "FPU-3.0"
+
+#: elf32-v850.c:2630
+#, c-format
+msgid "none"
+msgstr "Ð½Ð¸ÑˆÑ‚Ð°"
+
+#: elf32-v850.c:2637
+#, c-format
+msgid "SIMD use: "
+msgstr "â€žSIMDâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: "
+
+#: elf32-v850.c:2640 elf32-v850.c:2651 elf32-v850.c:2662
+#, c-format
+msgid "yes"
+msgstr "Ð´Ð°"
+
+#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663
+#, c-format
+msgid "no"
+msgstr "Ð½Ðµ"
+
+#: elf32-v850.c:2648
+#, c-format
+msgid "CACHE use: "
+msgstr "â€žCACHEâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: "
+
+#: elf32-v850.c:2659
+#, c-format
+msgid "MMU use: "
+msgstr "â€žMMUâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµ: "
+
+#: elf32-v850.c:2826 elf32-v850.c:2882
+#, c-format
+msgid "%pB: architecture mismatch with previous modules"
+msgstr "%pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ñ�Ðµ Ñ€Ð°Ð·Ð»Ð¸ÐºÑƒÑ˜Ðµ Ð¾Ð´ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ð°"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2553
+#: elf32-v850.c:2900
 #, c-format
 msgid "private flags = %lx: "
 msgstr "Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = %lx: "
 
-#: elf32-v850.c:2558
+#: elf32-v850.c:2905
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850â€œ"
 
-#: elf32-v850.c:2560
+#: elf32-v850.c:2907
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850 E3â€œ"
 
-#: elf32-v850.c:2562 elf32-v850.c:2572
+#: elf32-v850.c:2909 elf32-v850.c:2916
 #, 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:2917
 #, c-format
 msgid "v850e architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850eâ€œ"
 
-#: elf32-v850.c:2574
+#: elf32-v850.c:2918
 #, c-format
 msgid "v850e1 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e1â€œ"
 
-#: elf32-v850.c:2575
+#: elf32-v850.c:2919
 #, c-format
 msgid "v850e2 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e2â€œ"
 
-#: elf32-v850.c:2576
+#: elf32-v850.c:2920
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e2v3â€œ"
 
-#: elf32-v850.c:2577
+#: elf32-v850.c:2921
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€žv850e3v5â€œ"
 
-#: elf32-vax.c:532
+#: elf32-v850.c:3595 elf32-v850.c:3834
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº"
+
+#: elf32-v850.c:3605 elf32-v850.c:3844
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%#xâ€œ"
+
+#: elf32-v850.c:3651 elf32-v850.c:3879
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elf32-v850.c:3691
+#, c-format
+msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
+msgstr "%pB: %#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%#<PRIx64>â€œ"
+
+#: elf32-vax.c:537
 #, c-format
 msgid " [nonpic]"
 msgstr " [Ð½Ðµ-Ð¿Ð¸Ñ†]"
 
-#: elf32-vax.c:535
+#: elf32-vax.c:540
 #, c-format
 msgid " [d-float]"
 msgstr " [d-Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·]"
 
-#: elf32-vax.c:538
+#: elf32-vax.c:543
 #, c-format
 msgid " [g-float]"
 msgstr " [g-Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·]"
 
-#: elf32-vax.c:656
+#: elf32-vax.c:629
 #, 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:1387
 #, 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:1513
 #, 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:1520
 #, 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:2076 elfnn-ia64.c:2345
 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:996
+#, c-format
+msgid "%pB(%pA): invalid property table"
+msgstr "%pB(%pA): Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ñ‚Ð°Ð±ÐµÐ»Ð° Ð²Ð»Ð°Ñ�Ð½Ð¸ÑˆÑ‚Ð²Ð°"
+
+#: elf32-xtensa.c:2730
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=%#<PRIx64>)"
 
-#: elf32-xtensa.c:2853 elf32-xtensa.c:2974
+#: elf32-xtensa.c:2813 elf32-xtensa.c:2936
 msgid "dynamic relocation in read-only section"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ"
 
-#: elf32-xtensa.c:2950
+#: elf32-xtensa.c:2913
 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:4731 elf32-xtensa.c:4739
+msgid "attempt to convert L32R/CALLX to CALL failed"
+msgstr "Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜ Ð¿Ñ€ÐµÑ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€žL32R/CALLXâ€œ Ñƒ â€žCALLâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾"
+
+#: elf32-xtensa.c:6567 elf32-xtensa.c:6646 elf32-xtensa.c:8072
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð¼ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ; Ð²ÐµÑ€Ð¾Ð²Ð°Ñ‚Ð½Ð¾ Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ð¾"
+
+#: elf32-xtensa.c:7813
+#, 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:9671
 msgid "invalid relocation address"
 msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elf32-xtensa.c:9071
+#: elf32-xtensa.c:9762
 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:10908
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° Ð·Ð° â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: elf64-alpha.c:474
+#: 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:472
 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:1983
+#, c-format
+msgid "%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
+
+#: elf64-alpha.c:2435
+#, c-format
+msgid "%pB: .got subsegment exceeds 64K (size %d)"
+msgstr "%pB: Ð¿Ð¾Ð´-Ð¿Ð¾Ð´ÐµÐ¾Ðº â€ž.gotâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ 64K (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ %d)"
+
+#: elf64-alpha.c:2678 elflink.c:15697 elfnn-kvx.c:4015 elfnn-loongarch.c:2007
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
+
+#: elf64-alpha.c:2974 elf64-alpha.c:3169
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn"
+msgstr "%pB: %pA+%#<PRIx64>: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð³ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð·Ð½Ð°ÐºÐ°"
+
+#: elf64-alpha.c:4369 elf64-alpha.c:4382
+#, c-format
+msgid "%pB: gp-relative relocation against dynamic symbol %s"
+msgstr "%pB: â€žgpâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elf64-alpha.c:4438
+#, c-format
+msgid "%pB: change in gp: BRSGP %s"
+msgstr "%pB: Ð¸Ð·Ð¼ÐµÐ½Ð° Ñƒ â€žgpâ€œ-Ñƒ: BRSGP %s"
 
-#: elf64-alpha.c:4487
+#: elf64-alpha.c:4463 mach-o.c:625 elfnn-loongarch.c:908 elfnn-riscv.c:724
+#: elfnn-riscv.c:929 elfnn-riscv.c:971
 msgid "<unknown>"
 msgstr "<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾>"
 
-#: elf64-alpha.c:4492
-msgid "%B: !samegp reloc against symbol without .prologue: %s"
-msgstr "%B: â€ž!samegpâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±ÐµÐ· â€ž.prologueâ€œ-Ð°: %s"
+#: elf64-alpha.c:4469
+#, c-format
+msgid "%pB: !samegp reloc against symbol without .prologue: %s"
+msgstr "%pB: â€ž!samegpâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±ÐµÐ· â€ž.prologueâ€œ-Ð°: %s"
+
+#: elf64-alpha.c:4527
+#, c-format
+msgid "%pB: unhandled dynamic relocation against %s"
+msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ñ’ÐµÐ½Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ"
+
+#: elf64-alpha.c:4562
+#, 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:4628
+#, 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:4653
+#, 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:344
+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:2035
 #, 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:3239
+#, 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:600 elfnn-ia64.c:641
+#, 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:2031 elfnn-ia64.c:2293
 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:3278 elfnn-ia64.c:3671
 #, 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:3288 elfnn-ia64.c:3681
 #, 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:3558 elfnn-ia64.c:3954
+#, 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:3622 elfnn-ia64.c:4022
+#, 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:3681 elfnn-ia64.c:4085
+#, 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:3783 elfnn-ia64.c:4223
+#, 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:3786 elfnn-ia64.c:4226
+#, 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:3789 elfnn-ia64.c:4229
+#, 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:3913 elfnn-ia64.c:4426
 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:3950 elfnn-ia64.c:4464
+#, 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:3967 elfnn-ia64.c:4481
+#, 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:4261 elfnn-ia64.c:4740
+#, 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:4270 elfnn-ia64.c:4749
+#, 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:4279 elfnn-ia64.c:4758
+#, 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:4288 elfnn-ia64.c:4767
+#, 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:4298 elfnn-ia64.c:4777
+#, 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:5148 elflink.c:5491
+#, 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:5155
+#, 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:5171 elflink.c:5520
+#, 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:4102
+#, 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:980
+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:1164
+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:1191
 #, 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:1615
 #, 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:1621
 #, 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:1666
 #, 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
 #, 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
 #, 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:1738
 #, 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:2153
 #, 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:2208
+msgid "register section has contents\n"
+msgstr "Ð¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð° Ð¸Ð¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
 
-#: elf64-mmix.c:2441
+#: elf64-mmix.c:2398
 #, 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:1361
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ñ�Ðµ Ñ‚Ñ€ÐµÐ±Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ â€ž%sâ€œ"
+
+#: elf64-ppc.c:4302
+#, c-format
+msgid "symbol '%s' has invalid st_other for ABI version 1"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ â€žst_otherâ€œ Ð·Ð° Ð�Ð‘Ð˜ Ð¸Ð·Ð´Ð°ÑšÐµ 1"
 
-#: elf64-ppc.c:4463
-msgid "%P: %B: cannot create stub entry %s\n"
-msgstr "%P: %B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ\n"
+#: elf64-ppc.c:4485
+#, c-format
+msgid "%pB .opd not allowed in ABI version %d"
+msgstr "%pB: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½ Ñƒ â€žABIâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
 
-#: 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:5107
+#, c-format
+msgid "%H: %s reloc unsupported in shared libraries and PIEs\n"
+msgstr "%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¸Ð¼ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð¸ â€žPIEâ€œ-Ð¸Ð¼Ð°\n"
 
-#: elf64-ppc.c:5170
-msgid "%P: .opd not allowed in ABI version %d\n"
-msgstr "%P: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð¿ÑƒÑˆÑ‚ÐµÐ½ Ñƒ Ð�Ð‘Ð˜-Ñ˜Ñƒ Ð¸Ð·Ð´Ð°ÑšÐµ %d\n"
+#: elf64-ppc.c:5277
+msgid "%H: %s reloc unsupported here\n"
+msgstr "%H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð¾Ð²Ð´Ðµ\n"
 
-#: elf64-ppc.c:5809
-msgid "%B uses unknown e_flags 0x%lx"
-msgstr "â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€že_flagsâ€œ 0x%lx"
+#: elf64-ppc.c:5500
+#, 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:5508
+#, 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:5535
 #, 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:6844
+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:7111
+#, c-format
+msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
+msgstr "%pB: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð° â€žR_PPC64_TOCSAVEâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ"
+
+#: elf64-ppc.c:7362
+#, c-format
+msgid "dynreloc miscount for %pB, section %pA"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ° Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð·Ð° â€ž%pBâ€œ, Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#: elf64-ppc.c:7453
+#, c-format
+msgid "%pB: .opd is not a regular array of opd entries"
+msgstr "%pB: â€ž.opdâ€œ Ð½Ð¸Ñ˜Ðµ Ñ€ÐµÐ³ÑƒÐ»Ð°Ñ€Ð°Ð½ Ð½Ð¸Ð· ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð°"
 
-#: elf64-ppc.c:8177
+#: elf64-ppc.c:7463
+#, c-format
+msgid "%pB: unexpected reloc type %u in .opd section"
+msgstr "%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%uâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#: elf64-ppc.c:7485
+#, c-format
+msgid "%pB: undefined sym `%s' in .opd section"
+msgstr "%pB: Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž.opdâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7986
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--plt-localentryâ€œ Ñ˜Ðµ Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° â€žpower10 pc-relativeâ€œ ÐºÐ¾Ð´Ð¾Ð¼"
+
+#: elf64-ppc.c:7994
+msgid "warning: --plt-localentry is especially dangerous without ld.so support to detect ABI violations"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--plt-localentryâ€œ Ñ˜Ðµ Ð½Ð°Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð¾ Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð±ÐµÐ· â€žld.soâ€œ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐµ Ð·Ð° Ð¾Ñ‚ÐºÑ€Ð¸Ð²Ð°ÑšÐµ â€žABIâ€œ Ð¿Ñ€ÐµÑ�Ñ‚ÑƒÐ¿Ð°"
+
+#: elf64-ppc.c:8310
 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:8745 elf64-ppc.c:9461
 #, 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:9418
+#, c-format
+msgid "%H: %s references optimized away TOC entry\n"
+msgstr "%H: â€ž%sâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ Ð½Ð° Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð¾Ð¼ Ð¾Ð´Ñ�Ñ‚Ñ€Ð°ÑšÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°\n"
+
+#: elf64-ppc.c:9639
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: Ð¾Ð¿Ñ‚Ð¸Ð¼Ð¸Ð·Ð°Ñ†Ð¸Ñ˜Ð° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð·Ð° Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ñƒ â€ž%sâ€œ\n"
+
+#: elf64-ppc.c:10534
+#, c-format
+msgid "warning: discarding dynamic section %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜ÐµÐ¼ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#: elf64-ppc.c:11687
+msgid "%P: cannot find opd entry toc for `%pT'\n"
+msgstr "%P: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° ÑƒÐ½Ð¾Ñ�Ð° Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´Ð° Ð·Ð° â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:11837
+#, c-format
+msgid "long branch stub `%s' offset overflow"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ð´ÑƒÐ³Ð¾Ð³ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ"
+
+#: elf64-ppc.c:11864
+#, c-format
+msgid "can't find branch stub `%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ"
+
+#: elf64-ppc.c:11925 elf64-ppc.c:12177 elf64-ppc.c:14742
+#, c-format
+msgid "%P: linkage table error against `%pT'\n"
+msgstr "%P: Ð³Ñ€ÐµÑˆÐºÐ° Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:12376
+#, c-format
+msgid "can't build branch stub `%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ð¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€Ð°Ð½Ðµ â€ž%sâ€œ"
+
+#: elf64-ppc.c:13407
+#, c-format
+msgid "%pB section %pA exceeds stub group size"
+msgstr "â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð³Ñ€ÑƒÐ¿Ðµ Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ°"
+
+#: elf64-ppc.c:14923
+msgid "__tls_get_addr call offset overflow"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° â€ž__tls_get_addrâ€œ Ð¿Ð¾Ð·Ð¸Ð²Ð°"
+
+#: elf64-ppc.c:15263 elf64-ppc.c:15282
+#, c-format
+msgid "%s offset too large for .eh_frame sdata4 encoding"
+msgstr "â€ž%sâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº Ð·Ð° â€ž.eh_frame sdata4â€œ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ"
+
+#: elf64-ppc.c:15370
+#, c-format
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
+msgstr[0] "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð¸"
+msgstr[1] "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ðµ"
+msgstr[2] "Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°"
+
+#: elf64-ppc.c:15377
+#, c-format
+msgid ""
+"%s, iter %u\n"
+"  branch         %lu\n"
+"  long branch    %lu\n"
+"  plt call       %lu\n"
+"  global entry   %lu"
+msgstr ""
+"%s, Ð¿Ð¾Ð½Ð°Ð²Ñ™Ð°ÑšÐµ %u\n"
+"  Ð³Ñ€Ð°Ð½Ð°          %lu\n"
+"  Ð´ÑƒÐ³Ð° Ð³Ñ€Ð°Ð½Ð°     %lu\n"
+"  â€žpltâ€œ Ð¿Ð¾Ð·Ð¸Ð²    %lu\n"
+"  Ð¾Ð¿ÑˆÑ‚Ð¸ ÑƒÐ½Ð¾Ñ�     %lu"
 
-#: elf64-x86-64.c:3787
+#: elf64-ppc.c:15759
+#, c-format
+msgid "%H: %s used with TLS symbol `%pT'\n"
+msgstr "%H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:15761
+#, c-format
+msgid "%H: %s used with non-TLS symbol `%pT'\n"
+msgstr "%H: â€ž%sâ€œ Ñ˜Ðµ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ�Ð° Ð½Ðµ-â€žTLSâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð¾Ð¼ â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:16545
+#, 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:16551
+#, 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:17202
+#, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr "%H: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
+
+#: elf64-ppc.c:17478
+#, c-format
+msgid "%H: %s for indirect function `%pT' unsupported\n"
+msgstr "%H: â€ž%sâ€œ Ð·Ð° Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ â€ž%pTâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
+
+#: elf64-ppc.c:17565
+#, 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:17620
+#, c-format
+msgid "%P: %pB: %s is not supported for `%pT'\n"
+msgstr "%P: %pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ð·Ð° â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:17889
+#, c-format
+msgid "%H: error: %s not a multiple of %u\n"
+msgstr "%H: Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ â€ž%uâ€œ\n"
+
+#: elf64-ppc.c:17912
+#, c-format
+msgid "%H: unresolvable %s against `%pT'\n"
+msgstr "%H: â€ž%sâ€œ Ñ˜Ðµ Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ\n"
+
+#: elf64-ppc.c:18057
+#, c-format
+msgid "%H: %s against `%pT': error %d\n"
+msgstr "%H: â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%pTâ€œ: Ð³Ñ€ÐµÑˆÐºÐ° %d\n"
+
+#: elf64-s390.c:2490
+#, 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-s390.c:3153
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): misaligned symbol `%s' (%#<PRIx64>) for relocation %s"
+msgstr "%pB(%pA+%#<PRIx64>): Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ (%#<PRIx64>) Ð·Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+
+#: elf64-sparc.c:134 elfcode.h:1601
+#, c-format
+msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
+msgstr "%pB(%pA): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld"
+
+#: elf64-sparc.c:493
+#, c-format
+msgid "%pB: only registers %%g[2367] can be declared using STT_REGISTER"
+msgstr "%pB: Ñ�Ð°Ð¼Ð¾ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¸ â€ž%%g[2367]â€œ Ð¼Ð¾Ð³Ñƒ Ð±Ð¸Ñ‚Ð¸ Ð´ÐµÐºÐ»Ð°Ñ€Ð¸Ñ�Ð°Ð½Ð¸ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÑšÐµÐ¼ â€žSTT_REGISTERâ€œ"
+
+#: elf64-sparc.c:514
+#, 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:538
+#, c-format
+msgid "symbol `%s' has differing types: REGISTER in %pB, previously %s in %pB"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€žREGISTERâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€ž%sâ€œ Ñƒ â€ž%pBâ€œ"
+
+#: elf64-sparc.c:585
+#, c-format
+msgid "Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pB"
+msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ: â€ž%sâ€œ Ñƒ â€ž%pBâ€œ, Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ â€žREGISTERâ€œ Ñƒ â€ž%pBâ€œ"
+
+#: elf64-sparc.c:717
+#, c-format
+msgid "%pB: linking UltraSPARC specific with HAL specific code"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ ÐºÐ¾Ð´ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð°Ð½ â€žUltraSPARCâ€œ-Ñƒ Ñ�Ð° ÐºÐ¾Ð´Ð¾Ð¼ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸Ñ‡Ð½Ð¸Ð¼ â€žHALâ€œ-Ñƒ"
+
+#: elf64-x86-64.c:1660
+msgid "hidden symbol "
+msgstr "Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» "
+
+#: elf64-x86-64.c:1663
+msgid "internal symbol "
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» "
+
+#: elf64-x86-64.c:1666 elf64-x86-64.c:1670
+msgid "protected symbol "
+msgstr "Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» "
+
+#: elf64-x86-64.c:1672
+msgid "symbol "
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» "
+
+#: elf64-x86-64.c:1678
+msgid "undefined "
+msgstr "Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ "
+
+#: elf64-x86-64.c:1688 elfnn-loongarch.c:892
+msgid "a shared object"
+msgstr "Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf64-x86-64.c:1690
 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:1695 elfnn-loongarch.c:898
+msgid "a PIE object"
+msgstr "â€žPIEâ€œ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf64-x86-64.c:1697 elfnn-loongarch.c:900
+msgid "a PDE object"
+msgstr "â€žPDEâ€œ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
+
+#: elf64-x86-64.c:1699
+msgid "; recompile with -fPIE"
+msgstr "; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPIEâ€œ"
+
+#: elf64-x86-64.c:1703
+#, 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:2239
+#, c-format
+msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode"
+msgstr "%pB: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ x32"
+
+#: elf64-x86-64.c:2394
+#, c-format
+msgid "%pB: '%s' accessed both as normal and thread local symbol"
+msgstr "%pB: â€ž%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:2652
+#, c-format
+msgid "%pB: unsupported relocation %s against symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€ž%s â€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
 
-#: 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:3076 elfnn-aarch64.c:5766 elfnn-riscv.c:2374
+#, 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: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:3339
+#, 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â€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
 
-#: elfcode.h:760
+#: elf64-x86-64.c:3353
 #, c-format
-msgid "warning: %s has a corrupt string table index - ignoring"
-msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%sâ€œ Ð¸Ð¼Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐµ â€” Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼"
+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â€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ°Ð´Ð° Ñ�Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð° Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚"
 
-#: elfcode.h:1186
+#: elf64-x86-64.c:3643
 #, c-format
-msgid "%s: version count (%ld) does not match symbol count (%ld)"
-msgstr "%s: Ð±Ñ€Ð¾Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° (%ld) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%ld)"
+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â€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
 
-#: elfcode.h:1440
+#: elf64-x86-64.c:3794 elflink.c:14005
+msgid "%F%P: corrupt input: %pB\n"
+msgstr "%F%P: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ ÑƒÐ½Ð¾Ñ�: %pB\n"
+
+#: elf64-x86-64.c:4605
 #, c-format
-msgid "%s(%s): relocation %d has invalid symbol index %ld"
-msgstr "%s(%s): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%dâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %ld"
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr " Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žGOTPCRELâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° â€ž%sâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ð¾Ð²ÐµÐ¶Ð¸Ñ‚Ðµ Ñ�Ð° â€ž--no-relaxâ€œ\n"
 
-#: elfcore.h:305
-msgid "Warning: %B is truncated: expected core file size >= %lu, found: %lu."
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¾: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð° >= %lu, Ð½Ð°Ñ’Ð¾Ñ…: %lu."
+#: elf64-x86-64.c:4764
+#, c-format
+msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr "%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ñƒ â€žPLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ\n"
 
-#: 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â€œ"
+#: elf64-x86-64.c:4837
+#, c-format
+msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr "%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ€Ð°Ð·Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð³Ñ€Ð°Ð½Ðµ Ñƒ â€žPLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ\n"
 
-#: elflink.c:1148
-msgid "%s: TLS reference in %B mismatches non-TLS reference in %B"
-msgstr "%s: Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%Bâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%Bâ€œ"
+#: elf64-x86-64.c:4890
+#, c-format
+msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr "%F%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ð° Ñƒ â€žGOT PLTâ€œ ÑƒÐ½Ð¾Ñ�Ñƒ Ð·Ð° â€ž%sâ€œ\n"
 
-#: elflink.c:1153
-msgid "%s: TLS definition in %B section %A mismatches non-TLS reference in %B"
-msgstr "%s: Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%Bâ€œ"
+#: elfcode.h:342
+#, c-format
+msgid "warning: %pB has a section extending past end of file"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ ÑˆÐ¸Ñ€Ð¸ Ð¿Ñ€ÐµÐºÐ¾ ÐºÑ€Ð°Ñ˜Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ"
 
-#: elflink.c:1158
-msgid "%s: TLS reference in %B mismatches non-TLS definition in %B section %A"
-msgstr "%s: Ð¢Ð›Ð¡ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%Bâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-Ð¢Ð›Ð¡ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¸ Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: elfcode.h:790
+#, c-format
+msgid "warning: %pB has a corrupt string table index"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ð½Ð¸Ñ�ÐºÐµ"
 
-#: elflink.c:1763
-msgid "%B: unexpected redefinition of indirect versioned symbol `%s'"
-msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°ÑšÐµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+#: elfcode.h:838
+#, c-format
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ñ�Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµÐ¼"
 
-#: elflink.c:2066
-msgid "%B: version node not found for symbol %s"
-msgstr "%B: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‡Ð²Ð¾Ñ€ Ð¸Ð·Ð´Ð°ÑšÐ° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+#: elfcode.h:1056
+#, c-format
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr "%pB: %pA+%<PRIx64>: Ð´Ð¾Ð´Ð°Ñ‚Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° %<PRIx64> Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº"
 
-#: 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â€œ"
+#: elfcode.h:1321
+#, c-format
+msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
+msgstr "%pB: Ð±Ñ€Ð¾Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° (%<PRId64>) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð±Ñ€Ð¾Ñ˜Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° (%ld)"
+
+#: elfcore.h:280
+#, c-format
+msgid "warning: %pB has a segment extending past end of file"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ð¸Ð¼Ð° Ð¿Ð¾Ð´ÐµÐ¾Ðº ÐºÐ¾Ñ˜Ð¸ Ñ�Ðµ ÑˆÐ¸Ñ€Ð¸ Ð¿Ñ€ÐµÐºÐ¾ ÐºÑ€Ð°Ñ˜Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ"
+
+#: elflink.c:1438
+#, 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:1444
+#, c-format
+msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB"
+msgstr "%s: â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ â€ž%pBâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð½Ðµ-â€žTLSâ€œ ÑƒÐ¿ÑƒÑ‚Ð¸ Ñƒ â€ž%pBâ€œ"
+
+#: elflink.c:1450
+#, 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:1456
+#, 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â€œ ÐºÐ°Ð´Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ¼Ð° Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+#, c-format
+msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°ÑšÐµ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾ Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elflink.c:2681
+#, c-format
+msgid "%pB: version node not found for symbol %s"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ñ‡Ð²Ð¾Ñ€ Ð¸Ð·Ð´Ð°ÑšÐ° Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+
+#: elflink.c:2780
+#, c-format
+msgid "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in section `%pA'"
+msgstr "%pB: Ð»Ð¾Ñˆ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° (%#<PRIx64> >= %#lx) Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %#<PRIx64> Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ"
+
+#: elflink.c:2792
+#, 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:2358
-msgid "%B: relocation size mismatch in %B section %A"
-msgstr "%B: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ñƒ â€ž%Bâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: elflink.c:2989
+#, c-format
+msgid "%pB: relocation size mismatch in %pB section %pA"
+msgstr "%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ñƒ â€ž%pBâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
 
-#: elflink.c:2640
+#: elflink.c:3322
 #, 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:3382
+msgid "%P: copy reloc against protected `%pT' is dangerous\n"
+msgstr "%P: ÑƒÐ¼Ð½Ð¾Ð¶Ð¸ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¾Ð³ â€ž%pTâ€œ Ñ˜Ðµ Ð¾Ð¿Ð°Ñ�Ð½Ð¾\n"
+
+#: elflink.c:4338
+msgid "%F%P: %pB: failed to add %s to first hash\n"
+msgstr "%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´Ð°Ð¼ â€ž%sâ€œ Ñƒ Ð¿Ñ€Ð²Ð¸ Ñ…ÐµÑˆ\n"
+
+#: elflink.c:4406
+msgid "%F%P: first_hash failed to create: %E\n"
+msgstr "%F%P: â€žfirst_hashâ€œ Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ�Ðµ Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸: %E\n"
+
+#: elflink.c:4437
+#, c-format
+msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
+msgstr "Ð½Ð°Ñ’Ð¾Ñ… Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð¸ â€žELFâ€œ Ð¼Ð°ÑˆÐ¸Ð½Ñ�ÐºÐ¸ ÐºÐ¾Ð´ (%d) Ñƒ â€ž%pBâ€œ, Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… â€ž%dâ€œ"
+
+#: elflink.c:4920
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¸Ð·Ð´Ð°ÑšÐ° %lx (Ð½Ð°Ñ˜Ð². %lx)"
+
+#: elflink.c:4989
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: â€ž%sâ€œ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð¸Ð½Ð´ÐµÐºÑ�Ñƒ %lu (>= sh_info %lu)"
+
+#: elflink.c:5137
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¾ Ð¸Ð·Ð´Ð°ÑšÑƒ"
+
+#: elflink.c:5175
+#, c-format
+msgid "%pB: %s: invalid version %u (max %d)"
+msgstr "%pB: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %u (Ð½Ð°Ñ˜Ð². %d)"
+
+#: elflink.c:5212
+#, c-format
+msgid "%pB: %s: invalid needed version %d"
+msgstr "%pB: %s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ %d"
+
+#: elflink.c:5498
+#, c-format
+msgid "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used by the common definition in %pB"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%uâ€œ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð±Ð¸Ñ‡Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñƒ â€ž%pBâ€œ Ñ˜Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð´ â€ž%uâ€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾Ð³ Ð¾Ð¿ÑˆÑ‚Ð¾Ð¼ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð¾Ð¼ Ñƒ â€ž%pBâ€œ"
+
+#: elflink.c:5505
+msgid "warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."
+msgstr "ÑƒÐ¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð�ÐŸÐžÐœÐ•Ð�Ð�: Ð½ÐµÐ¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð½Ð¾Ñ�Ñ‚Ð¸ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐ° Ð¼Ð¾Ð³Ñƒ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¾Ð·Ð±Ð¸Ñ™Ð½Ð¸Ñ… Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°.  Ð˜Ñ�Ð¿Ð¸Ñ‚Ð¸Ð²Ð°ÑšÐµ Ñ�Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ñ€ÑƒÑ‡ÑƒÑ˜Ðµ."
+
+#: elflink.c:5527
+msgid "warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."
+msgstr "ÑƒÐ¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð�Ð�ÐŸÐžÐœÐ•Ð�Ð�: Ð½ÐµÐ¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð½Ð¾Ñ�Ñ‚Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð¾Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¾Ð·Ð±Ð¸Ñ™Ð½Ð¸Ñ… Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð°.  Ð˜Ñ�Ð¿Ð¸Ñ‚Ð¸Ð²Ð°ÑšÐµ Ñ�Ðµ Ð¿Ñ€ÐµÐ¿Ð¾Ñ€ÑƒÑ‡ÑƒÑ˜Ðµ."
 
-#: elflink.c:5824
+#: elflink.c:5670
+#, c-format
+msgid "%pB: undefined reference to symbol '%s'"
+msgstr "%pB: Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° ÑƒÐ¿ÑƒÑ‚Ð° ÐºÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ â€ž%sâ€œ"
+
+#: elflink.c:6759
+#, c-format
+msgid "%pB: stack size specified and %s set"
+msgstr "%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ˜Ðµ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð° Ð¸ â€ž%sâ€œ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð°"
+
+#: elflink.c:6763
+#, c-format
+msgid "%pB: %s not absolute"
+msgstr "%pB: â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾"
+
+#: elflink.c:6975
 #, 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:7364
+msgid "error: creating an executable stack because of -z execstack command line option"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ Ð¸Ð·Ð²Ñ€ÑˆÐ¸Ð²Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ð·Ð±Ð¾Ð³ â€ž-z execstackâ€œ Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ Ð»Ð¸Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸"
+
+#: elflink.c:7370
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: ÑƒÐºÑ™ÑƒÑ‡ÑƒÑ˜ÐµÐ¼ Ð¸Ð·Ð²Ñ€ÑˆÐ¸Ð²Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº Ð·Ð±Ð¾Ð³ â€ž-z execstackâ€œ Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ Ð»Ð¸Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸"
 
-#: elflink.c:7657
+#: elflink.c:7432
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %s: Ð¾ÐºÐ¸Ð´Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð³ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (Ñ˜ÐµÑ€ Ð¸Ð¼Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ¸Ð² â€ž.note.GNU-stackâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº)"
+
+#: elflink.c:7438
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº (Ñ˜ÐµÑ€ Ñ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.note.GNU-stackâ€œ Ð¸Ð·Ð²Ñ€ÑˆÐ¸Ð²)"
+
+#: elflink.c:7446
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %s: Ð¾ÐºÐ¸Ð´Ð° Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¾Ð³ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñ˜ÐµÑ€ Ð½ÐµÐ¼Ð° â€ž.note.GNU-stackâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: elflink.c:7452
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %s: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.note.GNU-stackâ€œ Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð° Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸Ðº"
+
+#: elflink.c:7455
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr "Ð�Ð�ÐŸÐžÐœÐ•Ð�Ð�: ÐžÐ²Ð¾ Ð¿Ð¾Ð½Ð°ÑˆÐ°ÑšÐµ Ñ˜Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ Ð¸ Ð±Ð¸Ñ›Ðµ ÑƒÐºÐ»Ð¾ÑšÐµÐ½Ð¾ Ñƒ Ð±ÑƒÐ´ÑƒÑ›ÐµÐ¼ Ð¸Ð·Ð´Ð°ÑšÑƒ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°"
+
+#: elflink.c:7609
+#, c-format
+msgid "%pB: .preinit_array section is not allowed in DSO"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž.preinit_arrayâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ñƒ â€žDSOâ€œ-Ñƒ"
+
+#: elflink.c:9218
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° â€ž%sâ€œ ÑƒÐ¿ÑƒÑ‚Ð° Ñƒ Ñ�Ð»Ð¾Ð¶ÐµÐ½Ð¾Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ñƒ: %s"
 
-#: elflink.c:7811
+#: elflink.c:9381 elflink.c:9389
+msgid "division by zero"
+msgstr "Ð´ÐµÑ™ÐµÑšÐµ Ð½ÑƒÐ»Ð¾Ð¼"
+
+#: elflink.c:9403
 #, 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:9739
+#, c-format
+msgid "%pB:%pA: error: relocation references symbol %s which was removed by garbage collection"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ¿ÑƒÑ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ ÑƒÐºÐ»Ð¾ÑšÐµÐ½ Ñ�ÐºÑƒÐ¿Ñ™Ð°ÑšÐµÐ¼ Ð¾Ñ‚Ð¿Ð°Ð´Ð°"
 
-#: elflink.c:8196 elflink.c:8250
-msgid "%B: Unable to sort relocs - they are of an unknown size"
-msgstr "%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ñ�Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+#: elflink.c:9742
+#, c-format
+msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled"
+msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ â€ž--gc-keep-exportedâ€œ"
 
-#: elflink.c:8301
-msgid "Not enough memory to sort relocations"
-msgstr "Ð�ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð·Ð° Ñ€ÐµÑ’Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+#: elflink.c:9993 elflink.c:10011 elflink.c:10050 elflink.c:10068
+#, c-format
+msgid "%pB: unable to sort relocs - they are in more than one size"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð¸Ð¼Ð°Ñ˜Ñƒ Ð²Ð¸ÑˆÐµ Ð¾Ð´ Ñ˜ÐµÐ´Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
 
-#: elflink.c:8494
-msgid "%B: Too many sections: %d (>= %d)"
-msgstr "%B: ÐŸÑ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %d (>= %d)"
+#. The section size is not divisible by either -
+#. something is wrong.
+#: elflink.c:10027 elflink.c:10084
+#, c-format
+msgid "%pB: unable to sort relocs - they are of an unknown size"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€” Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ñ�Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
 
-#: elflink.c:8775
-msgid "%B: internal symbol `%s' in %B is referenced by DSO"
-msgstr "%B: Ð½Ð° ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
+#: elflink.c:10136
+msgid "not enough memory to sort relocations"
+msgstr "Ð½ÐµÐ¼Ð° Ð´Ð¾Ð²Ð¾Ñ™Ð½Ð¾ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð·Ð° Ñ€ÐµÑ’Ð°ÑšÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
 
-#: elflink.c:8777
-msgid "%B: hidden symbol `%s' in %B is referenced by DSO"
-msgstr "%B: Ð½Ð° Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
+#: elflink.c:10470
+#, c-format
+msgid "%pB: too many sections: %d (>= %d)"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ°: %d (>= %d)"
 
-#: elflink.c:8779
-msgid "%B: local symbol `%s' in %B is referenced by DSO"
-msgstr "%B: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%Bâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
+#: elflink.c:10746
+#, c-format
+msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: Ð½Ð° ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
 
-#: elflink.c:8890
-msgid "%B: could not find output section %A for input section %A"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð·Ð° ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: elflink.c:10749
+#, c-format
+msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: Ð½Ð° Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
 
-#: elflink.c:9013
-msgid "%B: protected symbol `%s' isn't defined"
-msgstr "%B: Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+#: elflink.c:10752
+#, c-format
+msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
+msgstr "%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ ÑƒÐ¿ÑƒÑ›ÑƒÑ˜Ðµ â€žDSOâ€œ"
 
-#: elflink.c:9015
-msgid "%B: internal symbol `%s' isn't defined"
-msgstr "%B: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+#: elflink.c:10845
+#, c-format
+msgid "%pB: could not find output section %pA for input section %pA"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð·Ð° ÑƒÐ»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
 
-#: elflink.c:9017
-msgid "%B: hidden symbol `%s' isn't defined"
-msgstr "%B: Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
+#: elflink.c:11003
+#, c-format
+msgid "%pB: protected symbol `%s' isn't defined"
+msgstr "%pB: Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: elflink.c:9043
-msgid "%B: No symbol version section for versioned symbol `%s'"
-msgstr "%B: Ð�ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¸Ð·Ð´Ð°ÑšÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
+#: elflink.c:11006
+#, c-format
+msgid "%pB: internal symbol `%s' isn't defined"
+msgstr "%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: elflink.c:9598
-msgid "error: %B: size of section %A is not multiple of address size"
-msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %B: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%Aâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ"
+#: elflink.c:11009
+#, c-format
+msgid "%pB: hidden symbol `%s' isn't defined"
+msgstr "%pB: Ñ�ÐºÑ€Ð¸Ð²ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: 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:11041
+#, c-format
+msgid "%pB: no symbol version section for versioned symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¸Ð·Ð´Ð°ÑšÐ° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ð¾Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ"
 
-#: 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:11723
+#, 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:10374
+#: elflink.c:12193
 #, c-format
-msgid "%A has both ordered and unordered sections"
-msgstr "â€ž%Aâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº"
+msgid "error: %pB: size of section %pA is not multiple of address size"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ"
 
-#: elflink.c:10982
-msgid "%B: file class %s incompatible with %s"
-msgstr "%B: ÐºÐ»Ð°Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° â€ž%sâ€œ"
+#: elflink.c:12473
+#, c-format
+msgid "%pB: no symbol found for import library"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° ÑƒÐ²Ð¾Ð·Ð½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ"
 
-#: elflink.c:11303 elflink.c:11347
-msgid "%B: could not find output section %s"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¸Ð·Ð»Ð°Ð·Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+#: elflink.c:13078
+msgid "%F%P: %pB: failed to finish relative relocations\n"
+msgstr "%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð²Ñ€ÑˆÐ¸Ð¼ Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
+
+#: elflink.c:13155
+#, c-format
+msgid "%pB: file class %s incompatible with %s"
+msgstr "%pB: ÐºÐ»Ð°Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° â€ž%sâ€œ"
 
-#: elflink.c:11308
+#: elflink.c:13377
+#, c-format
+msgid "%pB: failed to generate import library"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ ÑƒÐ²Ð¾Ð·Ð½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ"
+
+#: elflink.c:13538
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
 
-#: elflink.c:11353
+#: elflink.c:13586
 #, 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:13680
+msgid "%P%X: read-only segment has dynamic relocations\n"
+msgstr "%P%X: Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ Ð¸Ð¼Ð° Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
+
+#: elflink.c:13683
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
+msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ñƒ\n"
+
+#: elflink.c:13686
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ â€žPDEâ€œ\n"
+
+#: elflink.c:13689
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ñ‚Ð²Ð°Ñ€Ð°Ð¼ â€žDT_TEXTRELâ€œ Ñƒ â€žPIEâ€œ\n"
 
-#: elflink.c:11545
+#: elflink.c:13825
 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:14258
+msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%F%P: %pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð°Ð½ Ñ˜Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½-Ð½Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð·Ð° â€ž--gc-sectionsâ€œ\n"
+
+#: elflink.c:14738
+#, c-format
+msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
+msgstr "%pB: %pA+%#<PRIx64>: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð½Ð¸ÐºÐ°ÐºÐ°Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð·Ð° â€žINHERITâ€œ"
 
-#: elflink.c:12200
-msgid "Warning: gc-sections option ignored"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€žgcâ€œ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° Ñ˜Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÐµÐ½Ð°"
+#: elflink.c:14779
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žVTENTRYâ€œ ÑƒÐ½Ð¾Ñ�"
+
+#: elflink.c:14922
+#, c-format
+msgid "unrecognized INPUT_SECTION_FLAG %s\n"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ â€žINPUT_SECTION_FLAG %sâ€œ\n"
+
+#: elflink.c:15703
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
+
+#: elflink.c:15792
+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:478
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�Ð»Ð°Ð±Ð¾ â€žTLSâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð° Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð° Ð¸ Ð¼Ð¾Ð¶Ð´Ð° Ð½ÐµÑ›Ðµ Ñ€Ð°Ð´Ð¸Ñ‚Ð¸ ÐºÐ°Ð¾ ÑˆÑ‚Ð¾ Ñ�Ðµ Ð¾Ñ‡ÐµÐºÑƒÑ˜Ðµ"
+
+#: elfxx-aarch64.c:773
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "%XÐ³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d ÑƒÐ»Ð°Ð·Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° BTI Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.\n"
+
+#: elfxx-aarch64.c:775
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d ÑƒÐ»Ð°Ð·Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° BTI Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.\n"
+
+#: elfxx-aarch64.c:785
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "%XÐ³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d ÑƒÐ»Ð°Ð·Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° GCS Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.\n"
+
+#: elfxx-aarch64.c:787
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d ÑƒÐ»Ð°Ð·Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° GCS Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.\n"
+
+#: elfxx-aarch64.c:797
+#, c-format
+msgid "%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "%XÐ³Ñ€ÐµÑˆÐºÐ°: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° GCS Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.\n"
+
+#: elfxx-aarch64.c:799
+#, c-format
+msgid "warning: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ð°Ñ’Ð¾Ñ… ÑƒÐºÑƒÐ¿Ð½Ð¾ %d Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ð²ÐµÐ·Ð°Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° GCS Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð¸Ð¼Ð°.\n"
+
+#: elfxx-aarch64.c:960
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° â€žAArch64â€œ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%x>"
+
+#: elfxx-aarch64.c:1104
+#, c-format
+msgid "%pB: warning: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: BTI Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z force-btiâ€œ, Ð°Ð»Ð¸ Ð¾Ð²Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°.\n"
 
-#: elflink.c:12489
+#: elfxx-aarch64.c:1106
 #, c-format
-msgid "Unrecognized INPUT_SECTION_FLAG %s\n"
-msgstr "â€žINPUT_SECTION_FLAG %sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾\n"
+msgid "%X%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: Ð³Ñ€ÐµÑˆÐºÐ°: BTI Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z force-btiâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°.\n"
 
-#: elfxx-mips.c:1419
+#: elfxx-aarch64.c:1138
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: GCS Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z gcsâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°. Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°Ñ‡ Ð½ÐµÑ›Ðµ Ð¼Ð¾Ñ› Ð´Ð° Ð¾Ð¼Ð¾Ð³ÑƒÑ›Ð¸ GCS Ð¸Ð»Ð¸ Ñ›Ðµ Ð¾Ð´Ð±Ð¸Ñ‚Ð¸ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ Ð¾Ñ�Ð¸Ð¼ Ð°ÐºÐ¾ Ñ�Ð²Ðµ Ð·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ Ð½Ðµ Ð±ÑƒÐ´Ñƒ Ð¸Ð¼Ð°Ð»Ðµ GCS Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð°ÑšÐµ.\n"
+
+#: elfxx-aarch64.c:1142
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%X%pB: Ð³Ñ€ÐµÑˆÐºÐ°: GCS Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z gcsâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´ÐµÑ™ÐµÐ½Ð¾Ñ˜ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÑ†Ð¸ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°. Ð”Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°Ñ‡ Ð½ÐµÑ›Ðµ Ð¼Ð¾Ñ›Ð¸ Ð´Ð° Ð¾Ð¼Ð¾Ð³ÑƒÑ›Ð¸ GCS Ð¸Ð»Ð¸ Ñ›Ðµ Ð¾Ð´Ð±Ð¸Ñ‚Ð¸ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ Ð¾Ñ�Ð¸Ð¼ Ð°ÐºÐ¾ Ñ�Ð²Ðµ Ð·Ð°Ð²Ð¸Ñ�Ð½Ð¾Ñ�Ñ‚Ð¸ Ð´ÐµÑ™ÐµÐ½Ðµ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ Ð½Ðµ Ð±ÑƒÐ´Ñƒ Ð¸Ð¼Ð°Ð»Ðµ GCS Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð°ÑšÐµ.\n"
+
+#: elfxx-aarch64.c:1148
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: GCS Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z gcsâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°.\n"
+
+#: elfxx-aarch64.c:1150
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: Ð³Ñ€ÐµÑˆÐºÐ°: GCS Ñ�Ðµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¾Ð´ Ñ�Ñ‚Ñ€Ð°Ð½Ðµ â€ž-z gcsâ€œ, Ð°Ð»Ð¸ Ñ‚Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ ÑƒÐ»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½ÐµÐ¾Ð¿Ñ…Ð¾Ð´Ð½Ð° Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð° Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°.\n"
+
+#: elfxx-loongarch.c:1911
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr "%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° â€ž%sâ€œ"
+
+#: elfxx-loongarch.c:1939
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð±Ñ„Ð´ Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%#xâ€œ"
+
+#: elfxx-loongarch.c:2013
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð´ÐµÑ�Ð½Ð¸ Ð¿Ð¾Ð¼Ð°Ðº %d Ð³Ñ€ÐµÑˆÐºÐ° 0x%lx"
+
+#: elfxx-loongarch.c:2032
+#, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¿ÑƒÑšÐ°Ð²Ð° 0x%lx"
+
+#: elfxx-mips.c:1534
 msgid "static procedure (no name)"
 msgstr "Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°Ðº (Ð±ÐµÐ· Ð½Ð°Ð·Ð¸Ð²Ð°)"
 
-#: elfxx-mips.c:5476
+#: elfxx-mips.c:5849
 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:6619
+msgid "%X%H: unsupported JALX to the same ISA mode\n"
+msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žJALXâ€œ Ñƒ Ð¸Ñ�Ñ‚Ð¾Ð¼ ISA Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ\n"
+
+#: elfxx-mips.c:6652
+msgid "%X%H: unsupported jump between ISA modes; consider recompiling with interlinking enabled\n"
+msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�ÐºÐ¾Ðº Ð¸Ð·Ð¼ÐµÑ’Ñƒ ISA Ñ€ÐµÐ¶Ð¸Ð¼Ð°; Ñ€Ð°Ð·Ð¼Ð¾Ñ‚Ñ€Ð¸Ñ‚Ðµ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐµ Ñ�Ð° ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¸Ð¼ Ð¼ÐµÑ’ÑƒÐ¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐµÐ¼\n"
+
+#: elfxx-mips.c:6697
+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:6709
+msgid "%X%H: unsupported branch between ISA modes\n"
+msgstr "%X%H: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð³Ñ€Ð°Ð½Ð° Ð¸Ð·Ð¼ÐµÑ’Ñƒ ISA Ñ€ÐµÐ¶Ð¸Ð¼Ð°\n"
+
+#: elfxx-mips.c:7355
+#, c-format
+msgid "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>"
+msgstr "%pB: Ð½ÐµÑ‚Ð°Ñ‡Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€ž.reginfoâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°; Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… %<PRIu64>, Ð°Ð»Ð¸ Ð´Ð¾Ð±Ð¸Ñ… %<PRIu64>"
+
+#: elfxx-mips.c:7399
+#, c-format
+msgid "%pB: warning: bad `%s' option size %u smaller than its header"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð»Ð¾ÑˆÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð¿Ñ†Ð¸Ñ˜Ðµ â€ž%sâ€œ %u Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ð°"
+
+#: elfxx-mips.c:7635
+#, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð° Ð¾Ð¿Ñ†Ð¸Ñ˜Ð° â€ž%sâ€œ"
+
+#: elfxx-mips.c:8453 elfxx-mips.c:8579
+#, c-format
+msgid "%pB: warning: cannot determine the target function for stub section `%s'"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ð´Ñ€ÐµÐ´Ð¸Ð¼ Ñ†Ð¸Ñ™Ð½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ñƒ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
+
+#: elfxx-mips.c:8711
+#, c-format
+msgid "%pB: malformed reloc detected for section %s"
+msgstr "%pB: Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#: elfxx-mips.c:8811
+#, c-format
+msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
+msgstr "%pB: â€žGOTâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#<PRIx64> Ð½Ð¸Ñ˜Ðµ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ Ñƒ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð¸Ð¼"
+
+#: elfxx-mips.c:8951
+#, c-format
+msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
+msgstr "%pB: â€žCALL16â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° %#<PRIx64> Ð½Ð¸Ñ˜Ðµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elfxx-mips.c:9254
+#, 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:9380
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "â€žIFUNCâ€ž Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€“ â€žIFUNCSâ€œ Ð½Ð¸Ñ�Ñƒ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ðµ"
 
-#: elfxx-mips.c:8977
+#: elfxx-mips.c:9383
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "Ð½Ðµ-Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ Ñ‚Ð°Ð±ÐµÐ»Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elfxx-mips.c:9603
 #, 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:10016
-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:10523
+#, 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:10663
+msgid "small-data section too large; lower small-data size limit (see option -G)"
+msgstr "Ð¾Ð´ÐµÑ™Ð°Ðº Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸Ðº; Ð´Ð¾ÑšÐ° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¼Ð°Ð»Ð¸Ñ… Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (Ð²Ð¸Ð´Ð¸Ñ‚Ðµ Ð¾Ð¿Ñ†Ð¸Ñ˜Ñƒ â€ž-Gâ€œ)"
+
+#: elfxx-mips.c:10682
+msgid "cannot convert a jump to JALX for a non-word-aligned address"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ñ�ÐºÐ¾Ðº Ñƒ â€žJALXâ€œ Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜Ñƒ"
+
+#: elfxx-mips.c:10685
+msgid "jump to a non-word-aligned address"
+msgstr "Ñ�ÐºÐ¾Ðº Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜Ñƒ"
+
+#: elfxx-mips.c:10686
+msgid "jump to a non-instruction-aligned address"
+msgstr "Ñ�ÐºÐ¾Ðº Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼"
+
+#: elfxx-mips.c:10689
+msgid "cannot convert a branch to JALX for a non-word-aligned address"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð³Ñ€Ð°Ð½Ñƒ Ñƒ â€žJALXâ€œ Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ñ€ÐµÑ‡Ñ˜Ñƒ"
+
+#: elfxx-mips.c:10691
+msgid "branch to a non-instruction-aligned address"
+msgstr "Ð³Ñ€Ð°Ð½Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ñƒ Ð½Ðµ-Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð¾Ð¼"
+
+#: elfxx-mips.c:10693
+msgid "PC-relative load from unaligned address"
+msgstr "â€žPCâ€œ-Ð¾Ð´Ð½Ð¾Ñ�Ð½Ð¸ ÑƒÑ‚Ð¾Ð²Ð°Ñ€ Ð¸Ð· Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ"
+
+#: elfxx-mips.c:10993
+#, 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:11108 elfxx-mips.c:11701
+#, c-format
+msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC"
+msgstr "%pB: â€ž%pAâ€œ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ %<PRId64> Ð¸Ð· â€ž%pAâ€œ Ð¸Ð·Ð° Ð¾Ð¿Ñ�ÐµÐ³Ð° â€žADDIUPCâ€œ"
+
+#: elfxx-mips.c:11673
+#, 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:13418 reloc.c:8518
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr "%X%P: %pB(%pA): Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ â€ž%Vâ€œ Ð½ÐµÐ¼Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚\n"
+
+#: elfxx-mips.c:14729
+#, c-format
+msgid "%pB: unknown architecture %s"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° â€ž%sâ€œ"
+
+#: elfxx-mips.c:15257
+#, c-format
+msgid "%pB: illegal section name `%pA'"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð½Ð°Ð·Ð¸Ð² Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%pAâ€œ"
+
+#: elfxx-mips.c:15534
+#, c-format
+msgid "%pB: warning: linking abicalls files with non-abicalls files"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð° Ñ�Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð° Ð½Ðµ-Ð°Ð±Ð¸Ð¿Ð¾Ð·Ð¸Ð²Ð°"
+
+#: elfxx-mips.c:15551
+#, c-format
+msgid "%pB: linking 32-bit code with 64-bit code"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ 32-Ð±Ð¸Ñ‚Ð½Ð¸ ÐºÐ¾Ð´ Ñ�Ð° 64-Ð±Ð¸Ñ‚Ð½Ð¸Ð¼ ÐºÐ¾Ð´Ð¾Ð¼"
+
+#: elfxx-mips.c:15583 elfxx-mips.c:15649 elfxx-mips.c:15664
+#, c-format
+msgid "%pB: linking %s module with previous %s modules"
+msgstr "%pB: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
+
+#: elfxx-mips.c:15607
+#, c-format
+msgid "%pB: ABI mismatch: linking %s module with previous %s modules"
+msgstr "%pB: â€žABIâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
 
-#: elfxx-mips.c:14958
+#: elfxx-mips.c:15632
+#, c-format
+msgid "%pB: ASE mismatch: linking %s module with previous %s modules"
+msgstr "%pB: â€žASEâ€œ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð¿Ð¾Ð²ÐµÐ·ÑƒÑ˜ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð° Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¸Ð¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
+
+#: elfxx-mips.c:15766
+#, 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:15772
+#, 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:15778
+#, 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:15792
+#, c-format
+msgid "warning: %pB uses %s (set by %pB), %pB uses %s"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ (Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾ Ñ�Ð° â€ž%pBâ€œ), â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
+
+#: elfxx-mips.c:15811
+#, 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:15823
+#, 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:15832
+#, 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:15894
+#, c-format
+msgid "%pB: endianness incompatible with that of the selected emulation"
+msgstr "%pB: ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ"
+
+#: elfxx-mips.c:15908
+#, c-format
+msgid "%pB: ABI is incompatible with that of the selected emulation"
+msgstr "%pB: â€žABIâ€œ Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð° Ñ�Ð° Ð¾Ð½Ð¾Ð¼ Ð¸Ð·Ð°Ð±Ñ€Ð°Ð½Ðµ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ðµ"
+
+#: elfxx-mips.c:15961
+#, c-format
+msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾ ISA Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ"
+
+#: elfxx-mips.c:15966
+#, 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:15970
+#, c-format
+msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾ â€žASEâ€œ Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ"
+
+#: elfxx-mips.c:15977
+#, c-format
+msgid "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð° ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° Ð¸Ð·Ð¼ÐµÑ’Ñƒ â€že_flagsâ€œ Ð¸ â€ž.MIPS.abiflagsâ€œ"
+
+#: elfxx-mips.c:15981
+#, 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:16172
+msgid "-mips32r2 -mfp64 (12 callee-saved)"
+msgstr "-mips32r2 -mfp64 (12 Ð¿Ð¾Ð·Ð¸Ð²Ð°Ð¾Ñ†Ð°-Ñ�Ð°Ñ‡ÑƒÐ²Ð°Ð½Ð¾)"
+
+#: elfxx-mips.c:16234 elfxx-mips.c:16245
+msgid "None"
+msgstr "Ð�Ð¸ÑˆÑ‚Ð°"
+
+#: elfxx-mips.c:16236 elfxx-mips.c:16305
+msgid "Unknown"
+msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾"
+
+#: elfxx-mips.c:16316
+#, c-format
+msgid "Hard or soft float\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¸Ð»Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·\n"
+
+#: elfxx-mips.c:16319
+#, c-format
+msgid "Hard float (double precision)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ° Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚)\n"
+
+#: elfxx-mips.c:16322
+#, c-format
+msgid "Hard float (single precision)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (Ñ˜ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ° Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚)\n"
+
+#: elfxx-mips.c:16325
+#, c-format
+msgid "Soft float\n"
+msgstr "Ð¡Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·\n"
+
+#: elfxx-mips.c:16328
+#, c-format
+msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (â€žMIPS32r2â€œ 64-Ð±Ð¸Ñ‚Ð° â€žFPU 12 callee-savedâ€œ)\n"
+
+#: elfxx-mips.c:16331
+#, c-format
+msgid "Hard float (32-bit CPU, Any FPU)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, Ð±Ð¸Ð»Ð¾ ÐºÐ¾Ñ˜Ð¸ â€žFPUâ€œ)\n"
+
+#: elfxx-mips.c:16334
+#, c-format
+msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ð¸Ñ‚Ð½Ð¸ â€žFPUâ€œ)\n"
+
+#: elfxx-mips.c:16337
+#, c-format
+msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n"
+msgstr "Ð¥Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¾ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð¼ Ð·Ð°Ñ€ÐµÐ·Ñƒ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ (32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ð¸Ñ‚Ð½Ð¸ â€žFPUâ€œ)\n"
+
+#: elfxx-mips.c:16369
 #, c-format
 msgid " [abi=O32]"
 msgstr " [Ð°Ð±Ð¸=O32]"
 
-#: elfxx-mips.c:14960
+#: elfxx-mips.c:16371
 #, c-format
 msgid " [abi=O64]"
 msgstr " [Ð°Ð±Ð¸=O64]"
 
-#: elfxx-mips.c:14962
+#: elfxx-mips.c:16373
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [Ð°Ð±Ð¸=EABI32]"
 
-#: elfxx-mips.c:14964
+#: elfxx-mips.c:16375
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [Ð°Ð±Ð¸=EABI64]"
 
-#: elfxx-mips.c:14966
+#: elfxx-mips.c:16377
 #, c-format
 msgid " [abi unknown]"
 msgstr " [Ð°Ð±Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾]"
 
-#: elfxx-mips.c:14968
+#: elfxx-mips.c:16379
 #, c-format
 msgid " [abi=N32]"
 msgstr " [Ð°Ð±Ð¸=N32]"
 
-#: elfxx-mips.c:14970
+#: elfxx-mips.c:16381
 #, c-format
 msgid " [abi=64]"
 msgstr " [Ð°Ð±Ð¸=64]"
 
-#: elfxx-mips.c:14972
+#: elfxx-mips.c:16383
 #, c-format
 msgid " [no abi set]"
 msgstr " [Ð°Ð±Ð¸ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´ÐµÑˆÐµÐ½Ð¾]"
 
-#: elfxx-mips.c:14993
+#: elfxx-mips.c:16408
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð˜Ð¡Ð�]"
 
-#: elfxx-mips.c:15013
+#: elfxx-mips.c:16428
 #, c-format
 msgid " [not 32bitmode]"
 msgstr " [Ð½Ð¸Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ñ€ÐµÐ¶Ð¸Ð¼]"
 
-#: elfxx-sparc.c:640
+#: elfxx-riscv.c:1827
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr "x ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ñ�Ð° Ð¸Ð·Ð´Ð°ÑšÐ¸Ð¼Ð°"
+
+#: elfxx-riscv.c:1833
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð¸Ð·Ð´Ð°ÑšÐ° Ð·Ð° ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ"
+
+#: elfxx-riscv.c:1939
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr "%s: Ð¿Ñ€Ð²Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð¼Ð¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ â€žeâ€œ, â€žiâ€œ Ð¸Ð»Ð¸ â€žgâ€œ"
+
+#: elfxx-riscv.c:1963
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð¸Ð»Ð¸ ÐºÐ»Ð°Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° â€ž%câ€œ"
+
+#: elfxx-riscv.c:1999
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ Ñ�Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ñ�Ð° <Ð±Ñ€Ð¾Ñ˜>p"
+
+#: elfxx-riscv.c:2023
+#, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ"
+
+#: elfxx-riscv.c:2047
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr "%s: Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° Ñ€Ð°Ð·Ð´Ð²Ð¾Ñ˜Ð¸Ñ‚Ð¸ Ñ�Ð° â€ž_â€œ"
+
+#: elfxx-riscv.c:2087
+#, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr "â€žrv%deâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žhâ€œ"
+
+#: elfxx-riscv.c:2095
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr "â€žrv%dâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žqâ€œ"
+
+#: elfxx-riscv.c:2102
+msgid "zcmp' is incompatible with `d/zcd' extension"
+msgstr "zcmp' Ð½Ð¸Ñ˜Ðµ Ñ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¾ Ñ�Ð° â€žd/zcdâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµÐ¼"
+
+#: elfxx-riscv.c:2109
+#, c-format
+msgid "rv%d does not support the `zcf' extension"
+msgstr "â€žrv%dâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žzcfâ€œ"
+
+#: elfxx-riscv.c:2116
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr "â€žzfinxâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµÐ¼ â€žf/d/q/zfh/zfhminâ€œ"
+
+#: elfxx-riscv.c:2123
+msgid "`xtheadvector' is conflict with the `v' extension"
+msgstr "â€žxtheadvectorâ€œ Ñ˜Ðµ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµÐ¼ â€žvâ€œ"
+
+#: elfxx-riscv.c:2144
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr "â€žzvl*bâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐ° Ñ‚Ñ€ÐµÐ±Ð° Ð´Ð° ÑƒÐºÑ™ÑƒÑ‡Ðµ Ð¸Ð»Ð¸ â€žvâ€œ Ð¸Ð»Ð¸ â€žzveâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ"
+
+#: elfxx-riscv.c:2206
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr "%s: ISA Ð½Ð¸Ñ�ÐºÐ° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ‚Ð¸ Ð²ÐµÐ»Ð¸ÐºÐ° Ñ�Ð»Ð¾Ð²Ð°"
+
+#: elfxx-riscv.c:2234
+#, c-format
+msgid "%s: ISA string must begin with rv32 or rv64"
+msgstr "%s: ISA Ð½Ð¸Ñ�ÐºÐ° Ð¼Ð¾Ñ€Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð¸ Ñ�Ð° â€žrv32â€œ Ð¸Ð»Ð¸ â€žrv64â€œ"
+
+#: elfxx-riscv.c:2417
+msgid "internal: "
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐµ: "
+
+#: elfxx-riscv.c:2471
+#, c-format
+msgid "%sinvalid ISA extension ends with <number>p in %s `%s'"
+msgstr "%sÐ½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ñ�Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ñ�Ð° <Ð±Ñ€Ð¾Ñ˜>p Ñƒ %s â€ž%sâ€œ"
+
+#: elfxx-riscv.c:2494
+#, c-format
+msgid "%sunknown ISA extension `%s' in %s `%s'"
+msgstr "%sÐ½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ Ñƒ %s â€ž%sâ€œ"
+
+#: elfxx-riscv.c:2506
+#, c-format
+msgid "%scannot + or - base extension `%s' in %s `%s'"
+msgstr "%sÐ½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° + Ð¸Ð»Ð¸ - Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ â€ž%sâ€œ Ñƒ %s â€ž%sâ€œ"
+
+#: elfxx-riscv.c:2817 elfxx-riscv.c:3112
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð¸Ð¶Ð½Ð° â€žINSN_CLASS_*â€œ"
+
+#: elfxx-riscv.c:2851
+msgid "zicfiss' and `zcmop"
+msgstr "zicfissâ€œ Ð¸ â€žzcmop"
+
+#: elfxx-riscv.c:2865
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr "zihintntlâ€œ Ð¸ â€žcâ€œ, Ð¸Ð»Ð¸ â€žzihintntlâ€œ Ð¸ â€žzca"
+
+#: elfxx-riscv.c:2870 elfxx-riscv.c:2896
+msgid "c' or `zca"
+msgstr "câ€œ Ð¸Ð»Ð¸ â€žzca"
+
+#: elfxx-riscv.c:2878
+msgid "m' or `zmmul"
+msgstr "mâ€œ Ð¸Ð»Ð¸ â€žzmmul"
+
+#: elfxx-riscv.c:2902
+msgid "f' and `c', or `f' and `zcf"
+msgstr "fâ€œ Ð¸ â€žcâ€œ, Ð¸Ð»Ð¸ â€žfâ€œ Ð¸ â€žzcf"
+
+#: elfxx-riscv.c:2907
+msgid "c' or `zcf"
+msgstr "câ€œ Ð¸Ð»Ð¸ â€žzcf"
+
+#: elfxx-riscv.c:2913
+msgid "d' and `c', or `d' and `zcd"
+msgstr "dâ€œ Ð¸ â€žcâ€œ, Ð¸Ð»Ð¸ â€ždâ€œ Ð¸ â€žzcd"
+
+#: elfxx-riscv.c:2918
+msgid "c' or `zcd"
+msgstr "câ€œ Ð¸Ð»Ð¸ â€žzcd"
+
+#: elfxx-riscv.c:2920
+msgid "f' or `zfinx"
+msgstr "fâ€œ Ð¸Ð»Ð¸ â€žzfinx"
+
+#: elfxx-riscv.c:2922
+msgid "d' or `zdinx"
+msgstr "dâ€œ Ð¸Ð»Ð¸ â€žzdinx"
+
+#: elfxx-riscv.c:2924
+msgid "q' or `zqinx"
+msgstr "qâ€œ Ð¸Ð»Ð¸ â€žzqinx"
+
+#: elfxx-riscv.c:2926
+msgid "zfh' or `zhinx"
+msgstr "zfhâ€œ Ð¸Ð»Ð¸ â€žzhinx"
+
+#: elfxx-riscv.c:2930
+msgid "zfhmin' or `zhinxmin"
+msgstr "zfhminâ€œ Ð¸Ð»Ð¸ â€žzhinxmin"
+
+#: elfxx-riscv.c:2941
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr "zfhminâ€œ Ð¸ â€ždâ€œ, Ð¸Ð»Ð¸ â€žzhinxminâ€œ Ð¸ â€žzdinx"
+
+#: elfxx-riscv.c:2952
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr "zfhminâ€œ Ð¸ â€žqâ€œ, Ð¸Ð»Ð¸ â€žzhinxminâ€œ Ð¸ â€žzqinx"
+
+#: elfxx-riscv.c:2960
+msgid "d' and `zfa"
+msgstr "dâ€œ Ð¸ â€žzfa"
+
+#: elfxx-riscv.c:2968
+msgid "q' and `zfa"
+msgstr "qâ€œ Ð¸ â€žzfa"
+
+#: elfxx-riscv.c:2976
+msgid "zfh' and `zfa"
+msgstr "zfhâ€œ Ð¸ â€žzfa"
+
+#: elfxx-riscv.c:2986
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr "zfhâ€œ Ð¸ â€žzfaâ€œ, Ð¸Ð»Ð¸ â€žzvfhâ€œ Ð¸ â€žzfa"
+
+#: elfxx-riscv.c:2991
+msgid "zfh' or `zvfh"
+msgstr "zfhâ€œ Ð¸Ð»Ð¸ â€žzvfh"
+
+#: elfxx-riscv.c:3007
+msgid "zbb' or `zbkb"
+msgstr "zbbâ€œ Ð¸Ð»Ð¸ â€žzbkb"
+
+#: elfxx-riscv.c:3009
+msgid "zbc' or `zbkc"
+msgstr "zbcâ€œ Ð¸Ð»Ð¸ â€žzbkc"
+
+#: elfxx-riscv.c:3017
+msgid "zknd' or `zkne"
+msgstr "zkndâ€œ Ð¸Ð»Ð¸ â€žzkne"
+
+#: elfxx-riscv.c:3023
+msgid "v' or `zve64x' or `zve32x"
+msgstr "vâ€œ Ð¸Ð»Ð¸ â€žzve64xâ€œ Ð¸Ð»Ð¸ â€žzve32x"
+
+#: elfxx-riscv.c:3025
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr "vâ€œ Ð¸Ð»Ð¸ â€žzve64dâ€œ Ð¸Ð»Ð¸ â€žzve64fâ€œ Ð¸Ð»Ð¸ â€žzve32f"
+
+#: elfxx-riscv.c:3027
+msgid "zvbb"
+msgstr "zvbb"
+
+#: elfxx-riscv.c:3029
+msgid "zvbc"
+msgstr "zvbc"
+
+#: elfxx-riscv.c:3035
+msgid "zvkb"
+msgstr "zvkb"
+
+#: elfxx-riscv.c:3037
+msgid "zvkg"
+msgstr "zvkg"
+
+#: elfxx-riscv.c:3039
+msgid "zvkned"
+msgstr "zvkned"
+
+#: elfxx-riscv.c:3041
+msgid "zvknha' or `zvknhb"
+msgstr "zvknhaâ€œ Ð¸Ð»Ð¸ â€žzvknhb"
+
+#: elfxx-riscv.c:3043
+msgid "zvksed"
+msgstr "zvksed"
+
+#: elfxx-riscv.c:3045
+msgid "zvksh"
+msgstr "zvksh"
+
+#: elfxx-riscv.c:3049
+msgid "zcb' and `zba"
+msgstr "zcbâ€œ Ð¸ â€žzba"
+
+#: elfxx-riscv.c:3051
+msgid "zcb' and `zbb"
+msgstr "zcbâ€œ Ð¸ â€žzbb"
+
+#: elfxx-riscv.c:3053
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr "zcbâ€œ Ð¸ â€žzmmulâ€œ, Ð¸Ð»Ð¸ â€žzcbâ€œ Ð¸ â€žm"
+
+#: elfxx-riscv.c:3061
+msgid "smctr' or `ssctr"
+msgstr "smctrâ€œ Ð¸Ð»Ð¸ â€žssctr"
+
+#: elfxx-riscv.c:3065
+msgid "h"
+msgstr "h"
+
+#: elfxx-sparc.c:3017 elfnn-aarch64.c:5750
+#, 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:4126
+#, c-format
+msgid "%pB: cannot link together %s and %s objects"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ"
+
+#: elfxx-x86.c:534 elfxx-x86.c:3597
+#, c-format
+msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr "%F%P: %pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¼Ð½Ð¾ÑˆÐºÐ° Ð·Ð° Ð½ÐµÑƒÐ¼Ð½Ð¾Ð¶Ð¸Ð²Ð¸ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñƒ â€ž%pBâ€œ\n"
+
+#: elfxx-x86.c:1044
 #, c-format
-msgid "invalid relocation type %d"
-msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
+msgid "%F%P: %pB: failed to allocate relative reloc record\n"
+msgstr "%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð·Ð°Ð¿Ð¸Ñ� Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
 
-#: elfxx-tilegx.c:4433
-msgid "%B: Cannot link together %s and %s objects."
-msgstr "%B: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð·Ð°Ñ˜ÐµÐ´Ð½Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ðµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ."
+#: elfxx-x86.c:1403
+#, c-format
+msgid "%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr "%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ 64-Ð±Ð¸Ñ‚Ð½Ñƒ â€žDT_RELRâ€œ Ð±Ð¸Ñ‚Ð¼Ð°Ð¿Ñƒ\n"
+
+#: elfxx-x86.c:1439
+#, c-format
+msgid "%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr "%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ 32-Ð±Ð¸Ñ‚Ð½Ñƒ â€žDT_RELRâ€œ Ð±Ð¸Ñ‚Ð¼Ð°Ð¿Ñƒ\n"
+
+#: elfxx-x86.c:1578
+#, c-format
+msgid "%F%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr "%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ\n"
 
-#: i386linux.c:418 m68klinux.c:421 sparclinux.c:414
+#: elfxx-x86.c:1765
 #, c-format
-msgid "Output file requires shared library `%s'\n"
-msgstr "Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%sâ€œ\n"
+msgid "%F%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr "%F%P: %pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ð°Ð¶ÐµÑ‚Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ˜Ðµ Ð¸Ð·Ð¼ÐµÑšÐµÐ½Ð¾: Ð½Ð¾Ð²Ð° (%lu) != Ñ�Ñ‚Ð°Ñ€Ð° (%lu)\n"
 
-#: i386linux.c:426 m68klinux.c:429 sparclinux.c:422
+#: elfxx-x86.c:1787
 #, c-format
-msgid "Output file requires shared library `%s.so.%s'\n"
-msgstr "Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%s.so.%sâ€œ\n"
+msgid "%F%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr "%F%P: %pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ñ�Ð°Ð¶ÐµÑ‚Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ð³ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°\n"
 
-#: i386linux.c:613 i386linux.c:663 m68klinux.c:618 m68klinux.c:666
-#: sparclinux.c:609 sparclinux.c:659
+#: elfxx-x86.c:2256
 #, c-format
-msgid "Symbol %s not defined for fixups\n"
-msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð·Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ\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"
 
-#: i386linux.c:687 m68klinux.c:690 sparclinux.c:683
-msgid "Warning: fixup count mismatch\n"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð±Ñ€Ð¾Ñ˜ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°\n"
+#: elfxx-x86.c:2338
+msgid "%P: %pB: warning: relocation in read-only section `%pA'\n"
+msgstr "%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ\n"
+
+#: elfxx-x86.c:3265
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%v, Ð¸Ð½Ñ„Ð¾: 0x%v, Ñ�Ð°Ð±Ð¸Ñ€Ð°Ðº: 0x%v) Ð·Ð° â€ž%sâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ\n"
+
+#: elfxx-x86.c:3271
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%v, Ð¸Ð½Ñ„Ð¾: 0x%v) Ð·Ð° â€ž%sâ€œ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ\n"
+
+#: elfxx-x86.c:3307
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed\n"
+msgstr "%pB: Ð½Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ¾ â€žTLSâ€œ Ð¿Ñ€ÐµÐ»Ð°Ð· Ñ�Ð° â€ž%sâ€œ Ð½Ð° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ð¿Ñ€Ð¸ 0x%v Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%pAâ€œ\n"
+
+#: elfxx-x86.c:3316
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD only\n"
+msgstr "%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ â€žADDâ€œ\n"
+
+#: elfxx-x86.c:3324
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n"
+msgstr "%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ â€žADDâ€œ Ð¸Ð»Ð¸ â€žMOVâ€œ\n"
+
+#: elfxx-x86.c:3332
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only\n"
+msgstr "%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ â€žADDâ€œ, â€žSUBâ€œ Ð¸Ð»Ð¸ â€žMOVâ€œ\n"
+
+#: elfxx-x86.c:3340
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only\n"
+msgstr "%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¼ CALL Ñ�Ð° â€ž%sâ€œ Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ñ€Ð¾Ð¼\n"
 
-#: ieee.c:158
+#: elfxx-x86.c:3349
 #, c-format
-msgid "%s: string too long (%d chars, max 65535)"
-msgstr "%s: Ð½Ð¸Ñ�ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð° (%d Ð·Ð½Ð°ÐºÐ°, Ð½Ð°Ñ˜Ð². 65535)"
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n"
+msgstr "%pB(%pA+0x%v): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð¼Ð¾Ñ€Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ�Ð°Ð¼Ð¾ Ñƒ â€žLEAâ€œ\n"
 
-#: ieee.c:285
+#: elfxx-x86.c:3976
 #, c-format
-msgid "%s: unrecognized symbol `%s' flags 0x%x"
-msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ 0x%x"
+msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ x86 Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾ (0x%x) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ: 0x%x>"
+
+#: elfxx-x86.c:4189
+#, c-format
+msgid "%pB: x86 ISA needed: "
+msgstr "%pB: x86 ISA Ñ˜Ðµ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð½Ð¾: "
+
+#: elfxx-x86.c:4191
+#, c-format
+msgid "%pB: x86 ISA used: "
+msgstr "%pB: x86 ISA Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸: "
+
+#: elfxx-x86.c:4213
+#, c-format
+msgid "<unknown: %x>"
+msgstr "<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %x>"
+
+#: elfxx-x86.c:4368
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž%sâ€œ\n"
+
+#: elfxx-x86.c:4369
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž%sâ€œ\n"
+
+#: elfxx-x86.c:4475
+msgid "IBT and SHSTK properties"
+msgstr "â€žIBTâ€œ Ð¸ â€žSHSTKâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð°"
+
+#: elfxx-x86.c:4477
+msgid "IBT property"
+msgstr "â€žIBTâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾"
+
+#: elfxx-x86.c:4479
+msgid "SHSTK property"
+msgstr "â€žSHSTKâ€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾"
+
+#: elfxx-x86.c:4484
+msgid "LAM_U48 property"
+msgstr "â€žLAM_U48â€œ property"
+
+#: elfxx-x86.c:4489
+msgid "LAM_U57 property"
+msgstr "â€žLAM_U57â€œ Ñ�Ð²Ð¾Ñ˜Ñ�Ñ‚Ð²Ð¾"
+
+#: elfxx-x86.c:4667
+msgid "%F%P: failed to create VxWorks dynamic sections\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ â€žVxWorksâ€œ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐµ Ð¾Ð´ÐµÑ™ÐºÐµ\n"
+
+#: elfxx-x86.c:4676
+msgid "%F%P: failed to create GOT sections\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOTâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ\n"
+
+#: elfxx-x86.c:4694
+msgid "%F%P: failed to create ifunc sections\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žifuncâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ\n"
 
-#: ieee.c:791
-msgid "%B: unimplemented ATI record %u for symbol %u"
-msgstr "%B: Ð½ÐµÐ¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¸ Ð�Ð¢Ð˜ Ð·Ð°Ð¿Ð¸Ñ� â€ž%uâ€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%uâ€œ"
+#: elfxx-x86.c:4731
+msgid "%F%P: failed to create GOT PLT section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOT PLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
 
-#: ieee.c:815
-msgid "%B: unexpected ATN type %d in external part"
-msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð�Ð¢Ð� Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ Ñƒ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð¼ Ð´ÐµÐ»Ñƒ"
+#: elfxx-x86.c:4750
+msgid "%F%P: failed to create IBT-enabled PLT section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žIBTâ€œ-Ð¾Ð¼ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½ â€žPLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
 
-#: ieee.c:837
-msgid "%B: unexpected type after ATN"
-msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð½Ð°ÐºÐ¾Ð½ Ð�Ð¢Ð�-Ð°"
+#: elfxx-x86.c:4770
+msgid "%F%P: failed to create PLT .eh_frame section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žPLT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:4783
+msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žGOT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:4797
+msgid "%F%P: failed to create the second PLT .eh_frame section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð´Ñ€ÑƒÐ³Ð¸ â€žPLT .eh_frameâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:4817
+msgid "%F%P: failed to create PLT .sframe section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ PLT â€ž.sframeâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:4832
+msgid "%F%P: failed to create second PLT .sframe section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð´Ñ€ÑƒÐ³Ð¸ PLT â€ž.sframeâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:4844
+msgid "%F%P: failed to create PLT GOT .sframe section\n"
+msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ PLT GOT â€ž.sframeâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#: elfxx-x86.c:4883
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ… Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡ÐºÑƒ Ð²ÐµÐ·Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€ž%pBâ€œ\n"
 
 #: ihex.c:230
-msgid "%B:%d: unexpected character `%s' in Intel Hex file"
-msgstr "%B:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+#, c-format
+msgid "%pB:%d: unexpected character `%s' in Intel Hex file"
+msgstr "%pB:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
 
-#: ihex.c:337
-msgid "%B:%u: bad checksum in Intel Hex file (expected %u, found %u)"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ (Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… %u, Ð½Ð°Ñ’Ð¾Ñ… %u)"
-
-#: ihex.c:392
-msgid "%B:%u: bad extended address record length in Intel Hex file"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
-
-#: ihex.c:409
-msgid "%B:%u: bad extended start address length in Intel Hex file"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
-
-#: ihex.c:426
-msgid "%B:%u: bad extended linear address record length in Intel Hex file"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
-
-#: ihex.c:443
-msgid "%B:%u: bad extended linear start address length in Intel Hex file"
-msgstr "%B:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
-
-#: ihex.c:460
-msgid "%B:%u: unrecognized ihex type %u in Intel Hex file"
-msgstr "%B:%u: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žihexâ€œ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
-
-#: ihex.c:579
-msgid "%B: internal error in ihex_read_section"
-msgstr "%B: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ"
+#: 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: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+
+#: ihex.c:411
+#, c-format
+msgid "%pB:%u: bad extended start address length in Intel Hex file"
+msgstr "%pB:%u: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+
+#: 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: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÐ½Ðµ Ð»Ð¸Ð½ÐµÐ°Ñ€Ð½Ðµ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+
+#: ihex.c:465
+#, c-format
+msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file"
+msgstr "%pB:%u: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žihexâ€œ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ Ñƒ Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ð¾Ñ˜ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ñ˜ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸"
+
+#: ihex.c:580
+#, c-format
+msgid "%pB: internal error in ihex_read_section"
+msgstr "%pB: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ"
 
 #: ihex.c:613
-msgid "%B: bad section length in ihex_read_section"
-msgstr "%B: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ"
+#, c-format
+msgid "%pB: bad section length in ihex_read_section"
+msgstr "%pB: Ð»Ð¾ÑˆÐ° Ð´ÑƒÐ¶Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žihex_Ð¾Ð´ÐµÑ™Ð°Ðº_Ñ‡Ð¸Ñ‚Ð°ÑšÐ°â€œ"
 
-#: ihex.c:826
+#: ihex.c:784
 #, c-format
-msgid "%s: address 0x%s out of range for Intel Hex file"
-msgstr "%s: Ð°Ð´Ñ€ÐµÑ�Ð° 0x%s Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ"
+msgid "%pB 64-bit address %#<PRIx64> out of range for Intel Hex file"
+msgstr "%pB 64-Ð±Ð¸Ñ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° %#<PRIx64> Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ"
 
-#: libbfd.c:863
-msgid "%B: unable to get decompressed section %A"
-msgstr "%B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ"
+#: ihex.c:842
+#, c-format
+msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
+msgstr "%pB: Ð°Ð´Ñ€ÐµÑ�Ð° %#<PRIx64> Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð˜Ð½Ñ‚ÐµÐ»Ð¾Ð²Ñƒ Ñ…ÐµÐºÑ�Ð°Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ"
 
-#: libbfd.c:1012
-msgid "%B: compiled for a big endian system and target is little endian"
-msgstr "%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð¼Ð°Ð»Ð° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚"
+#: libbfd.c:1260
+#, c-format
+msgid "%pB: unable to get decompressed section %pA"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
 
-#: libbfd.c:1014
-msgid "%B: compiled for a little endian system and target is big endian"
-msgstr "%B: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚"
+#: libbfd.c:1272
+#, c-format
+msgid "%pB: mapped section %pA has non-NULL buffer"
+msgstr "%pB: Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð½Ðµ-ÐŸÐ Ð�Ð—Ð�Ð£ Ð¼ÐµÑ’ÑƒÐ¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ñƒ"
 
-#: libbfd.c:1043
+#: linker.c:1731
 #, c-format
-msgid "Deprecated %s called at %s line %d in %s\n"
-msgstr "Ð—Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñƒ â€ž%sâ€œ %d. Ñ€ÐµÐ´ Ñƒ â€ž%sâ€œ\n"
+msgid "%pB: indirect symbol `%s' to `%s' is a loop"
+msgstr "%pB: Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð¿ÐµÑ‚Ñ™Ð°"
+
+#: linker.c:1811
+msgid "%P: %pB: note: the message above does not take linker garbage collection into account\n"
+msgstr "%P: %pB: Ð½Ð°Ð¿Ð¾Ð¼ÐµÐ½Ð°: Ð¿Ð¾Ñ€ÑƒÐºÐ° Ð¸Ð·Ð½Ð°Ð´ Ð½Ðµ ÑƒÐ·Ð¸Ð¼Ð° Ð·Ð±Ð¸Ñ€ÐºÑƒ Ñ’ÑƒÐ±Ñ€Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð½Ð°Ð»Ð¾Ð³\n"
 
-#: libbfd.c:1046
+#: linker.c:2617
 #, c-format
-msgid "Deprecated %s called\n"
-msgstr "Ð—Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾\n"
+msgid "attempt to do relocatable link with %s input and %s output"
+msgstr "Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ñƒ Ð²ÐµÐ·Ñƒ Ñ�Ð° â€ž%sâ€œ ÑƒÐ»Ð°Ð·Ð¾Ð¼ Ð¸ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·Ð¾Ð¼"
 
-#: linker.c:1873
-msgid "%B: indirect symbol `%s' to `%s' is a loop"
-msgstr "%B: Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð¿ÐµÑ‚Ñ™Ð°"
+#: linker.c:2896
+#, c-format
+msgid "%pB: ignoring duplicate section `%pA'\n"
+msgstr "%pB: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ\n"
 
-#: linker.c:2750
+#: linker.c:2906 linker.c:2916
 #, c-format
-msgid "Attempt to do relocatable link with %s input and %s output"
-msgstr "ÐŸÐ¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¾Ð´Ñ€Ð°Ð´Ð¸Ð¼ Ð¿Ñ€ÐµÐ¼ÐµÑ�Ñ‚Ð¸Ð²Ñƒ Ð²ÐµÐ·Ñƒ Ñ�Ð° â€ž%sâ€œ ÑƒÐ»Ð°Ð·Ð¾Ð¼ Ð¸ â€ž%sâ€œ Ð¸Ð·Ð»Ð°Ð·Ð¾Ð¼"
+msgid "%pB: duplicate section `%pA' has different size\n"
+msgstr "%pB: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ñƒ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ\n"
 
-#: linker.c:3035
-msgid "%B: ignoring duplicate section `%A'\n"
-msgstr "%B: Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€ÑƒÑ˜ÐµÐ¼ ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ\n"
+#: linker.c:2930 linker.c:2938
+#, c-format
+msgid "%pB: could not read contents of section `%pA'\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:2947
+#, c-format
+msgid "%pB: duplicate section `%pA' has different contents\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:3466
+#, c-format
+msgid "%pB: compiled for a big endian system and target is little endian"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð²ÐµÐ»Ð¸ÐºÐµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð¼Ð°Ð»Ð° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚"
 
-#: linker.c:3070
-msgid "%B: duplicate section `%A' has different contents\n"
-msgstr "%B: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%Aâ€œ Ð¸Ð¼Ð° Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
+#: linker.c:3469
+#, c-format
+msgid "%pB: compiled for a little endian system and target is big endian"
+msgstr "%pB: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½Ð¾ Ð·Ð° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼ Ð¼Ð°Ð»Ðµ ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚Ð¸ Ð° Ñ†Ð¸Ñ™ Ñ˜Ðµ Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜Ð½Ð¾Ñ�Ñ‚"
 
-#: mach-o.c:648
-msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
-msgstr "bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ"
+#: mach-o-arm.c:169 mach-o-arm.c:301
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð°Ñ€ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñ˜Ðµ Ð¿Ñ€Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: mach-o.c:1918
+#: mach-o-arm.c:185
 #, 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 reloc pair: invalid length: %d"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð°Ñ€ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d"
 
-#: mach-o.c:2017
+#: mach-o-arm.c:200
 #, c-format
-msgid "unable to write unknown load command 0x%lx"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° 0x%lx"
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ñ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:215
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¸ Ñ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:230
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "Ð»Ð¾Ñˆ â€žmach-o ARMâ€œ Ð¿Ð¾Ð»ÑƒÑ�ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð°Ð·Ð»Ð¸ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:262
+#, 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:332
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "Ð»Ð¾ÑˆÐµ â€žmach-o ARMâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: %d"
+
+#: mach-o.c:640
+#, c-format
+msgid "<unknown mask flags>"
+msgstr "<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¼Ð°Ñ�ÐºÐµ>"
+
+#: mach-o.c:695
+msgid " (<unknown>)"
+msgstr " (<Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾>)"
+
+#: mach-o.c:707
+#, c-format
+msgid " MACH-O header:\n"
+msgstr " â€žMACH-Oâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ:\n"
+
+#: mach-o.c:708
+#, c-format
+msgid "   magic:      %#lx\n"
+msgstr "   Ð¼Ð°Ð³Ð¸Ñ˜Ð°:         %#lx\n"
+
+#: mach-o.c:709
+#, c-format
+msgid "   cputype:    %#lx (%s)\n"
+msgstr "   Ð²Ñ€Ñ�Ñ‚Ð° Ñ†Ð¿Ñ˜:      %#lx (%s)\n"
+
+#: mach-o.c:711
+#, c-format
+msgid "   cpusubtype: %#lx%s\n"
+msgstr "   Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° Ñ†Ð¿Ñ˜:   %#lx%s\n"
+
+#: mach-o.c:713
+#, c-format
+msgid "   filetype:   %#lx\n"
+msgstr "   Ð²Ñ€Ñ�Ñ‚Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %#lx\n"
+
+#: mach-o.c:714
+#, c-format
+msgid "   ncmds:      %#lx\n"
+msgstr "   Ð±Ñ€Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸:      %#lx\n"
+
+#: mach-o.c:715
+#, c-format
+msgid "   sizeocmds:  %#lx\n"
+msgstr "   Ð²ÐµÐ»Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸:     %#lx\n"
+
+#: mach-o.c:716
+#, c-format
+msgid "   flags:      %#lx\n"
+msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ:      %#lx\n"
+
+#: mach-o.c:717
+#, c-format
+msgid "   version:    %x\n"
+msgstr "   Ð¸Ð·Ð´Ð°ÑšÐµ:         %x\n"
+
+#. Urg - what has happened ?
+#: mach-o.c:752
+#, c-format
+msgid "incompatible cputypes in mach-o files: %ld vs %ld"
+msgstr "Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ðµ Ð²Ñ€Ñ�Ñ‚Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ñƒ â€žmach-oâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°Ð¼Ð°: â€ž%ldâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%ldâ€œ"
+
+#: mach-o.c:921
+msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
+msgstr "bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ðµ"
+
+#: mach-o.c:1513
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "Ð»Ð¾ÑˆÐµ â€žmach-oâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ: Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñ˜Ðµ Ð²ÐµÑ›Ð¸ Ð¾Ð´ Ð±Ñ€Ð¾Ñ˜Ð° Ð¾Ð´ÐµÑ™Ð°ÐºÐ°"
 
-#: mach-o.c:2272
+#: mach-o.c:2155
 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:2603
 #, 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 "mach-o: there are too many sections (%u) maximum is 255,\n"
+msgstr "mach-o: Ð¸Ð¼Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð¾Ð´ÐµÑ™Ð°ÐºÐ° (%u) Ð½Ð°Ñ˜Ð²Ð¸ÑˆÐµ Ñ˜Ðµ 255,\n"
 
-#: mach-o.c:2916
+#: mach-o.c:2695
 #, 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 "unable to allocate data for load command %#x"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð´Ð¾Ð´ÐµÐ»Ð¸Ð¼ Ð¿Ð¾Ð´Ð°Ñ‚ÐºÐµ Ð·Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ"
 
-#: mach-o.c:2997
+#: mach-o.c:2800
+#, c-format
+msgid "unable to write unknown load command %#x"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ"
+
+#: mach-o.c:2984
+#, c-format
+msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
+msgstr "Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° (%#<PRIx64>) Ñ˜Ðµ Ð¸Ñ�Ð¿Ð¾Ð´ Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ° Ð¿Ð¾Ð´ÐµÐ¾ÐºÐ° (%#<PRIx64>)"
+
+#: mach-o.c:3126
+#, c-format
+msgid "unable to layout unknown load command %#x"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¸ÐºÐ°Ð¶ÐµÐ¼ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ñƒ ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ"
+
+#: mach-o.c:3652
+#, c-format
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_32: Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€Ð°Ð²Ð°ÑšÐ°: %#lx"
+
+#: mach-o.c:3695
+#, c-format
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_64: Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾Ñ€Ð°Ð²Ð°ÑšÐ°: %#lx"
+
+#: mach-o.c:3746
+#, 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:3765
+#, 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:3848
 #, 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:3867
 #, 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:5066
+#, c-format
+msgid "%pB: unknown load command %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ° â€ž%#xâ€œ"
 
-#: mach-o.c:4107
+#: mach-o.c:5264
 #, 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:5389
 #, 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:1126
 #, 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:535
 #, c-format
-msgid "%s: No core to allocate section name %s\n"
-msgstr "%s: Ð�ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ð½Ð°Ð·Ð¸Ð²Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ\n"
+msgid "%pB: no core to allocate a symbol %d bytes long"
+msgstr "%pB: Ð½ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð´ÑƒÐ³Ð¾Ð³ %d Ð±Ð°Ñ˜Ñ‚Ð°"
 
-#: mmo.c:530
+#: mmo.c:951
 #, c-format
-msgid "%s: No core to allocate a symbol %d bytes long\n"
-msgstr "%s: Ð�ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð´ÑƒÐ³Ð¾Ð³ %d Ð±Ð°Ñ˜Ñ‚Ð°\n"
+msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
+msgstr "%pB: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ… Ð´Ð° ÐµÐ¼Ð¸Ñ‚ÑƒÑ˜ÐµÐ¼ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ ÐºÐ¾Ñ˜Ð° Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ 4 â€ž%#<PRIx64>â€œ"
 
-#: mmo.c:1189
+#: mmo.c:1246
 #, c-format
-msgid "%s: invalid mmo file: initialization value for $255 is not `Main'\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° Ð·Ð° $255 Ð½Ð¸Ñ˜Ðµ â€žMainâ€œ\n"
+msgid "%pB: invalid mmo file: initialization value for $255 is not `Main'\n"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°ÑšÐ° Ð·Ð° $255 Ð½Ð¸Ñ˜Ðµ â€žMainâ€œ\n"
 
-#: mmo.c:1334
+#: mmo.c:1393
 #, 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: 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:1568
+#: mmo.c:1409
 #, c-format
-msgid "%s: invalid mmo file: unsupported lopcode `%d'\n"
-msgstr "%s: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° â€žmmoâ€œ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: Ð»Ð¾Ð¿ÐºÐ¾Ð´ â€ž%dâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½\n"
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr "%pB: Ð½Ð°Ð·Ð¸Ð² Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€ÐµÐ¼Ð°ÑˆÑƒÑ˜Ðµ Ð´Ð°Ñ‚Ñƒ Ð½Ð°Ñ˜Ð²ÐµÑ›Ñƒ Ð´ÑƒÐ¶Ð¸Ð½Ñƒ Ð¾Ð´ %d"
 
-#: mmo.c:1578
+#: mmo.c:1638
 #, 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:1649
 #, 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:1693
 #, 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:1744
 #, 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:1793
 #, 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:1804
 #, 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:1829
 #, 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:1858
 #, 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:1880
 #, 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:1895
 #, 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:2007
 #, 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:2044
 #, 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:2058
 #, 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:2768
 #, 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:3007
 #, 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 %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr "%pB: Ð»Ð¾ÑˆÐ° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: â€žMainâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð½Ð° â€ž%<PRIx64>â€œ ÑƒÐ¼ÐµÑ�Ñ‚Ð¾ Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ â€ž%<PRIx64>â€œ\n"
 
-#: mmo.c:3029
+#: mmo.c:3106
 #, 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:3152
 #, 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:3205
 #, 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:3256
 #, 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:3263
 #, 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:3268
 #, 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
 #, 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"
-
-#. 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"
-
-#: pe-mips.c:745
-msgid "%B: jump too far away\n"
-msgstr "%B: Ñ�ÐºÐ¾Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð´Ð°Ð»ÐµÐºÐ¾\n"
-
-#: pe-mips.c:771
-msgid "%B: bad pair/reflo after refhi\n"
-msgstr "%B: Ð»Ð¾ÑˆÐµ â€žpair/refloâ€œ Ð½Ð°ÐºÐ¾Ð½ â€žrefhiâ€œ\n"
+#: pdp11.c:1573
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ (Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾)"
 
-#: pef.c:522
+#: pef.c:534
 #, c-format
 msgid "bfd_pef_scan: unknown architecture 0x%lx"
 msgstr "bfd_pef_scan: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 0x%lx"
 
-#: pei-x86_64.c:469
+#: pei-x86_64.c:174 pei-x86_64.c:228 pei-x86_64.c:238 pei-x86_64.c:263
+#: pei-x86_64.c:275 pei-x86_64.c:289 pei-x86_64.c:307 pei-x86_64.c:319
+#: pei-x86_64.c:331
+#, c-format
+msgid "warning: corrupt unwind data\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸\n"
+
+#. PR 17512: file: 2245-7442-0.004.
+#: pei-x86_64.c:352
+#, c-format
+msgid "Unknown: %x"
+msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾: %x"
+
+#: pei-x86_64.c:403 pei-x86_64.c:413 pei-x86_64.c:422
+#, c-format
+msgid "warning: xdata section corrupt\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ…-Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°\n"
+
+#: pei-x86_64.c:477
+#, c-format
+msgid "Too many unwind codes (%ld)\n"
+msgstr "ÐŸÑ€ÐµÐ²Ð¸ÑˆÐµ Ð¸Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ… ÐºÐ¾Ð´Ð¾Ð²Ð° (%ld)\n"
+
+#: pei-x86_64.c:563
+#, c-format
+msgid "Warning: %s section size (%ld) is not a multiple of %d\n"
+msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d\n"
+
+#: pei-x86_64.c:570
+#, c-format
+msgid "Warning: %s section size is zero\n"
+msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ð°\n"
+
+#: pei-x86_64.c:585
 #, 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 smaller than virtual size (%ld)\n"
+msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ (%ld) Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð²Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ (%ld)\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:594
 #, 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:597
 #, c-format
 msgid "vma:\t\t\tBeginAddress\t EndAddress\t  UnwindData\n"
 msgstr "vma:\t\t\tÐ�Ð´Ñ€ÐµÑ�Ð° Ð¿Ð¾Ñ‡ÐµÑ‚ÐºÐ°\t Ð�Ð´Ñ€ÐµÑ�Ð° ÐºÑ€Ð°Ñ˜Ð°\t  Ð˜Ð·Ð»Ð¾Ð¶ÐµÐ½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸\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: Ð½Ð¸Ñ�ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ð½ÑƒÐ»Ð¾Ð¼ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ð˜Ð›Ð¤ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°."
+#: pei-x86_64.c:722
+#, c-format
+msgid ""
+"\n"
+"Dump of %s\n"
+msgstr ""
+"\n"
+"Ð˜Ð·Ð»Ð°Ð· Ð·Ð° â€ž%sâ€œ\n"
+
+#: peicode.h:823
+#, c-format
+msgid "%pB: unrecognized import type; %x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x"
+
+#: peicode.h:840
+#, c-format
+msgid "%pB: missing import name for IMPORT_NAME_EXPORTAS for %s"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð½Ð°Ð·Ð¸Ð² ÑƒÐ²Ð¾Ð·Ð° Ð·Ð° â€žIMPORT_NAME_EXPORTASâ€œ Ð·Ð° â€ž%sâ€œ"
 
-#: ppcboot.c:391
+#: peicode.h:849
+#, c-format
+msgid "%pB: unrecognized import name type; %x"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð½Ð°Ð·Ð¸Ð² Ð²Ñ€Ñ�Ñ‚Ðµ ÑƒÐ²Ð¾Ð·Ð°; %x"
+
+#: peicode.h:1298
+#, c-format
+msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive"
+msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
+
+#: peicode.h:1311
+#, c-format
+msgid "%pB: recognised but unhandled machine type (0x%x) in Import Library Format archive"
+msgstr "%pB: Ð¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð°Ð»Ð¸ Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¼Ð°ÑˆÐ¸Ð½Ðµ (0x%x) Ñƒ Ð°Ñ€Ñ…Ð¸Ð²Ð¸ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
+
+#: peicode.h:1329
+#, c-format
+msgid "%pB: size field is zero in Import Library Format header"
+msgstr "%pB: Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñ˜Ðµ Ð½ÑƒÐ»Ð° Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ð° Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐµ ÑƒÐ²Ð¾Ð·Ð°"
+
+#: peicode.h:1355
+#, c-format
+msgid "%pB: string not null terminated in ILF object file"
+msgstr "%pB: Ð½Ð¸Ñ�ÐºÐ° Ñ�Ðµ Ð½Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð° Ð½ÑƒÐ»Ð¾Ð¼ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ â€žILFâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: peicode.h:1426
+#, c-format
+msgid "%pB: error: debug data ends beyond end of debug directory"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð´Ð°Ñ†Ð¸ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñ�Ðµ Ð·Ð°Ð²Ñ€ÑˆÐ°Ð²Ð°Ñ˜Ñƒ Ð¸Ð·Ð²Ð°Ð½ ÐºÑ€Ð°Ñ˜Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°"
+
+#: peicode.h:1598
+#, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr "%pB: Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ñ™Ð°Ð¼ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¾Ð´ÐµÑ™ÐºÐ°"
+
+#: peicode.h:1608
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr "%pB: Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ñ™Ð°Ð¼ Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ"
+
+#: peicode.h:1616
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð±Ñ€Ð¾Ñ˜ Ð Ð²Ð° Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°"
+
+#: plugin.c:197
+#, c-format
+msgid "%s: failed to open to extract object only section: %s"
+msgstr "%s: Ð½Ð¸Ñ�Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð´Ð° Ð¸Ð·Ð²ÑƒÑ‡ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s"
+
+#: plugin.c:214
+#, c-format
+msgid "%pB: invalid file to extract object only section: %s"
+msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð° Ð¸Ð·Ð²Ð»Ð°Ñ‡ÐµÑšÐµ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s"
+
+#: plugin.c:227
+#, c-format
+msgid "%pB: failed to extract object only section: %s"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¸Ð·Ð²ÑƒÑ‡ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s"
+
+#: plugin.c:247
+#, c-format
+msgid "%pB: failed to open object only section: %s"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s"
+
+#: plugin.c:257
+#, c-format
+msgid "%pB: failed to get symbol table in object only section: %s"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð´Ð¾Ð±Ð°Ð²Ð¸Ð¼ Ñ‚Ð°Ð±ÐµÐ»Ñƒ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°: %s"
+
+#: plugin.c:413
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr "Ñ€Ð°Ð´Ð½Ð¸ Ð¾ÐºÐ²Ð¸Ñ€ Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡ÐºÐ°: Ð½ÐµÐ¼Ð° Ð²Ð¸ÑˆÐµ Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°. ÐŸÐ¾ÐºÑƒÑˆÐ°Ñ˜Ñ‚Ðµ Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¼Ð°ÑšÐµ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚Ð°/Ð°Ñ€Ñ…Ð¸Ð²Ð°\n"
+
+#: ppcboot.c:392
 #, c-format
 msgid ""
 "\n"
@@ -4104,64 +6653,87 @@ 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"
+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"
+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"
+msgstr "Ð”ÑƒÐ¶Ð¸Ð½Ð° Ð¿Ð°Ñ€Ñ‚Ð¸Ñ†Ð¸Ñ˜Ðµ[%d]   = 0x%.8lx (%ld)\n"
+
+#: reloc.c:8417
+msgid "INPUT_SECTION_FLAGS are not supported"
+msgstr "â€žINPUT_SECTION_FLAGSâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
 
-#: reloc.c:7371
-msgid "INPUT_SECTION_FLAGS are not supported.\n"
-msgstr "â€žINPUT_SECTION_FLAGSâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾.\n"
+#: reloc.c:8683
+#, 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:8687
+#, 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:3002
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+
+#: som.c:3015
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°"
+
+#. User has specified a subspace without its containing space.
+#: som.c:5403
+#, c-format
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr "%pB[%pA]: Ð½ÐµÐ¼Ð° Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾Ð³ Ð¾Ð´ÐµÑ™ÐºÐ° Ð·Ð° Ñ€Ð°Ð·Ð¼Ð°Ðº â€ž%pAâ€œ"
+
+#: som.c:5449
 #, c-format
 msgid ""
 "\n"
@@ -4170,52 +6742,106 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ð¼Ð¾Ñ›Ð½Ð¾ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¸Ð·Ð²Ñ€ÑˆÐ½Ðµ\n"
 
-#: som.c:5776
+#: som.c:5758
 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:260
+#, c-format
+msgid "%pB:%d: unexpected character `%s' in S-record file"
+msgstr "%pB:%d: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¸ Ð·Ð½Ð°Ðº â€ž%sâ€œ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ S-Ð·Ð°Ð¿Ð¸Ñ�Ð°"
 
-#: srec.c:567 srec.c:600
-msgid "%B:%d: Bad checksum in S-record file\n"
-msgstr "%B:%d: Ð›Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ Ð¡-Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
+#: srec.c:488
+#, c-format
+msgid "%pB:%d: byte count %d too small"
+msgstr "%pB:%d: Ð±Ñ€Ð¾Ñ˜ Ð±Ð°Ñ˜Ñ‚Ð° â€ž%dâ€œ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸"
 
-#: stabs.c:279
-msgid "%B(%A+0x%lx): Stabs entry has invalid string index."
-msgstr "%B(%A+0x%lx): Ð£Ð½Ð¾Ñ� Ð¾ÐºÑ€ÑšÐ°ÐºÐ° Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð½Ð¸Ñ�ÐºÐµ."
+#: srec.c:580 srec.c:614
+#, c-format
+msgid "%pB:%d: bad checksum in S-record file"
+msgstr "%pB:%d: Ð»Ð¾ÑˆÐ° Ñ�ÑƒÐ¼Ð° Ð¿Ñ€Ð¾Ð²ÐµÑ€Ðµ Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÑ†Ð¸ S-Ð·Ð°Ð¿Ð¸Ñ�Ð°"
+
+#: stabs.c:308
+#, c-format
+msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
+msgstr "%pB(%pA+%#lx): ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€ÑšÐ°ÐºÐ° Ð¸Ð¼Ð° Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð½Ð¸Ñ�ÐºÐµ"
+
+#: syms.c:1120
+msgid "unsupported .stab relocation"
+msgstr "Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€ž.stabâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: vms-alpha.c:479
+msgid "corrupt EIHD record - size is too small"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEIHDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº â€“ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°"
+
+#: vms-alpha.c:665
+#, c-format
+msgid "unable to read EIHS record at offset %#x"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHSâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ â€ž%#xâ€œ"
+
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr "Ñ�Ð½Ð¸Ð¼Ð°Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð¸ Ð·Ð° Ð´ÑƒÐ¶Ð¸Ð½Ñƒ Ð½Ð°Ð·Ð¸Ð²Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: syms.c:1079
-msgid "Unsupported .stab relocation"
-msgstr "ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž.stabâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+#: vms-alpha.c:1190
+#, c-format
+msgid "corrupt EGSD record: its size (%#x) is too small"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº: ÑšÐµÐ³Ð¾Ð²Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°"
+
+#: vms-alpha.c:1214
+#, c-format
+msgid "corrupt EGSD record type %d: size (%#x) is larger than remaining space (%#x)"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ° %d: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° (%#x)"
+
+#: vms-alpha.c:1224
+#, c-format
+msgid "corrupt EGSD record type %d: size (%#x) is too small"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð° Ð²Ñ€Ñ�Ñ‚Ð° â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ° %d: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° (%#x) Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð°"
+
+#: vms-alpha.c:1366
+#, c-format
+msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€žEGSDâ€œ Ñ�Ð½Ð¸Ð¼Ð°Ðº: ÑšÐµÐ³Ð¾Ð²Ð¾ â€žpsindxâ€œ Ð¿Ð¾Ñ™Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ (%#lx)"
 
-#: vms-alpha.c:1294
+#: vms-alpha.c:1441
 #, c-format
-msgid "Unknown EGSD subtype %d"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° EGSD Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° %d"
+msgid "unknown EGSD subtype %d"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° â€žEGSDâ€œ Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° %d"
 
-#: vms-alpha.c:1325
+#: vms-alpha.c:1474
 #, c-format
-msgid "Stack overflow (%d) in _bfd_vms_push"
-msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (%d) Ñƒ â€ž_bfd_vms_pushâ€œ-Ñƒ"
+msgid "stack overflow (%d) in _bfd_vms_push"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (%d) Ñƒ â€ž_bfd_vms_pushâ€œ-Ñƒ"
 
-#: vms-alpha.c:1338
-msgid "Stack underflow in _bfd_vms_pop"
-msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñƒ â€ž_bfd_vms_popâ€œ-Ñƒ"
+#: vms-alpha.c:1488
+msgid "stack underflow in _bfd_vms_pop"
+msgstr "Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° Ñƒ â€ž_bfd_vms_popâ€œ-Ñƒ"
+
+#: vms-alpha.c:1562
+#, 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 +6851,1469 @@ 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:3657
+#: vms-alpha.c:2674
+msgid "object module not error-free !"
+msgstr "Ð¼Ð¾Ð´ÑƒÐ» Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ð¸Ñ˜Ðµ Ð±ÐµÐ· Ð³Ñ€ÐµÑˆÐ°ÐºÐ° !"
+
+#: vms-alpha.c:4006
 #, 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:4058 vms-alpha.c:4286
 #, 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:4229
+msgid "spurious ALPHA_R_BSR reloc"
+msgstr "Ð¿Ñ€Ð¸Ð²Ð¸Ð´Ð½Ð¾ â€žALPHA_R_BSRâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
 
-#: vms-alpha.c:3909
+#: vms-alpha.c:4272
 #, c-format
-msgid "Unhandled relocation %s"
-msgstr "Ð�ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+msgid "unhandled relocation %s"
+msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
 
-#: vms-alpha.c:4199
+#: vms-alpha.c:4637
 #, 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:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804
+#: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842
+#: vms-alpha.c:4847
+#, c-format
+msgid "%s not implemented"
+msgstr "â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#: vms-alpha.c:4372
+#: vms-alpha.c:4883
 #, 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:5322
+msgid "corrupt reloc record"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ Ñ�Ð½Ð¸Ð¼Ð°Ðº Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°"
+
+#: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405
+#: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443
 #, 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:5502
 #, c-format
-msgid "Unknown reloc %s"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+msgid "unknown reloc %s"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ"
+
+#: vms-alpha.c:5516
+msgid "invalid section index in ETIR"
+msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žETIRâ€œ-Ñƒ"
 
-#: vms-alpha.c:4995
-msgid "Invalid section index in ETIR"
-msgstr "Ð�ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ â€žETIRâ€œ-Ñƒ"
+#: vms-alpha.c:5525
+msgid "relocation for non-REL psect"
+msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð½Ðµ-â€žRELâ€œ Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: vms-alpha.c:5578
+#, c-format
+msgid "unknown symbol in command %s"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸ â€ž%sâ€œ"
 
-#: vms-alpha.c:5002
-msgid "Relocation for non-REL psect"
-msgstr "ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð½Ðµ-Ð Ð•Ð› Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: vms-alpha.c:5996
+#, c-format
+msgid "reloc (%d) is *UNKNOWN*"
+msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ (%d) Ñ˜Ðµ *Ð�Ð•ÐŸÐžÐ—Ð�Ð�Ð¢Ðž*"
 
-#: vms-alpha.c:5049
+#: vms-alpha.c:6113
 #, c-format
-msgid "Unknown symbol in command %s"
-msgstr "Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñƒ Ð½Ð°Ñ€ÐµÐ´Ð±Ð¸ â€ž%sâ€œ"
+msgid "  EMH %d (len=%u): "
+msgstr "  EMH %d (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u): "
 
-#: vms-alpha.c:5564
+#: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216
 #, c-format
-msgid "  EMH %u (len=%u): "
-msgstr "  EMH %u (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u): "
+msgid "   Error: %s min length is %u\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: %s Ð½Ð°Ñ˜Ð¼. Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ %u\n"
 
-#: vms-alpha.c:5573
+#: vms-alpha.c:6141
 #, c-format
 msgid "Module header\n"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¼Ð¾Ð´ÑƒÐ»Ð°\n"
 
-#: vms-alpha.c:5574
+#: vms-alpha.c:6142
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   Ð½Ð¸Ð²Ð¾ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ         : %u\n"
 
-#: vms-alpha.c:5575
+#: vms-alpha.c:6143
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   Ð½Ð°Ñ˜Ð². Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð±ÐµÐ»ÐµÐ¶ÐµÑšÐ°: %u\n"
 
-#: vms-alpha.c:5578
+#: vms-alpha.c:6149
+#, c-format
+msgid "   Error: The module name is missing\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ\n"
+
+#: vms-alpha.c:6155
+#, c-format
+msgid "   Error: The module name is too long\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð�Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³\n"
+
+#: vms-alpha.c:6158
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð°           : %.*s\n"
 
-#: vms-alpha.c:5580
+#: vms-alpha.c:6162
+#, c-format
+msgid "   Error: The module version is missing\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ\n"
+
+#: vms-alpha.c:6168
+#, c-format
+msgid "   Error: The module version is too long\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð˜Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð¾\n"
+
+#: vms-alpha.c:6171
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   Ð¸Ð·Ð´Ð°ÑšÐµ Ð¼Ð¾Ð´ÑƒÐ»Ð°          : %.*s\n"
 
-#: vms-alpha.c:5582
+#: vms-alpha.c:6174
+#, c-format
+msgid "   Error: The compile date is truncated\n"
+msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð”Ð°Ñ‚ÑƒÐ¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ° Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½\n"
+
+#: vms-alpha.c:6176
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   Ð´Ð°Ñ‚ÑƒÐ¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°        : %.17s\n"
 
-#: vms-alpha.c:5587
+#: vms-alpha.c:6181
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Ð�Ð°Ð·Ð¸Ð² Ñ˜ÐµÐ·Ð¸ÐºÐ° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°\n"
 
-#: vms-alpha.c:5588
+#: vms-alpha.c:6182
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ñ˜ÐµÐ·Ð¸ÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:5595
+#: vms-alpha.c:6186
 #, c-format
 msgid "Source Files Header\n"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð¸Ð·Ð²Ð¾Ñ€Ð°\n"
 
-#: vms-alpha.c:5596
+#: vms-alpha.c:6187
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:5603
+#: vms-alpha.c:6191
 #, c-format
 msgid "Title Text Header\n"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ñ‚ÐµÐºÑ�Ñ‚Ð° Ð½Ð°Ñ�Ð»Ð¾Ð²Ð°\n"
 
-#: vms-alpha.c:5604
+#: vms-alpha.c:6192
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   Ð½Ð°Ñ�Ð»Ð¾Ð²: %.*s\n"
 
-#: vms-alpha.c:5611
+#: vms-alpha.c:6196
 #, c-format
 msgid "Copyright Header\n"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²Ð°\n"
 
-#: vms-alpha.c:5612
+#: vms-alpha.c:6197
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   Ð°ÑƒÑ‚Ð¾Ñ€Ñ�ÐºÐ° Ð¿Ñ€Ð°Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:5618
+#: vms-alpha.c:6201
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° emh Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ\n"
 
-#: vms-alpha.c:5628
+#: vms-alpha.c:6211
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):\n"
 
-#: vms-alpha.c:5629
+#: vms-alpha.c:6221
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   Ð±Ñ€Ð¾Ñ˜ â€žcondâ€œ Ð¿Ð°Ñ€Ð¾Ð²Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u\n"
 
-#: vms-alpha.c:5631
+#: vms-alpha.c:6223
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   Ð´Ð¾Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐµ ÐºÐ¾Ð´Ð°: %u\n"
 
-#: vms-alpha.c:5635
+#: vms-alpha.c:6228
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð°: 0x%02x\n"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:6229
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð° : %u\n"
 
-#: vms-alpha.c:5638
+#: vms-alpha.c:6231
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð°          : 0x%08x\n"
 
-#: vms-alpha.c:5647
+#: vms-alpha.c:6240
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5649
+#: vms-alpha.c:6242
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5651
+#: vms-alpha.c:6244
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5653 vms-alpha.c:5674
+#: vms-alpha.c:6246 vms-alpha.c:6267
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5655
+#: vms-alpha.c:6248
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5657
+#: vms-alpha.c:6250
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5659
+#: vms-alpha.c:6252
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5661
+#: vms-alpha.c:6254
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5668
+#: vms-alpha.c:6261
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5670
+#: vms-alpha.c:6263
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5672
+#: vms-alpha.c:6265
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5676
+#: vms-alpha.c:6269
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5678
+#: vms-alpha.c:6271
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5680
+#: vms-alpha.c:6273
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5682
+#: vms-alpha.c:6275
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5684
+#: vms-alpha.c:6277
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5686
+#: vms-alpha.c:6279
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5688
+#: vms-alpha.c:6281
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5690
+#: vms-alpha.c:6283
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5692
+#: vms-alpha.c:6285
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5701
+#: vms-alpha.c:6294
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):\n"
 
-#: vms-alpha.c:5713
+#: vms-alpha.c:6309
 #, c-format
 msgid "  EGSD entry %2u (type: %u, len: %u): "
-msgstr "  â€žEGSDâ€œ ÑƒÐ½Ð¾Ñ� â€ž%2uâ€œ (Ð²Ñ€Ñ�Ñ‚Ð°ype: %u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u): "
+msgstr "  â€žEGSDâ€œ ÑƒÐ½Ð¾Ñ� â€ž%2uâ€œ (Ð²Ñ€Ñ�Ñ‚Ð°: %u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u): "
 
-#: vms-alpha.c:5725
+#: vms-alpha.c:6315 vms-alpha.c:6610
+#, c-format
+msgid "   Erroneous length\n"
+msgstr "   ÐŸÐ¾Ð³Ñ€ÐµÑˆÐ½Ð° Ð´ÑƒÐ¶Ð¸Ð½Ð°\n"
+
+#: vms-alpha.c:6328
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr "PSC â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð°\n"
 
-#: vms-alpha.c:5726 vms-alpha.c:5743
+#: vms-alpha.c:6329 vms-alpha.c:6349
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ : 2**%u\n"
 
-#: vms-alpha.c:5727 vms-alpha.c:5744
+#: vms-alpha.c:6330 vms-alpha.c:6350
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%04x"
 
-#: vms-alpha.c:5731
+#: vms-alpha.c:6334
 #, 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:6336 vms-alpha.c:6402 vms-alpha.c:6470
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð²        : %.*s\n"
 
-#: vms-alpha.c:5742
+#: vms-alpha.c:6348
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr "SPSC â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ð´ÐµÑ™ÐµÐ½Ðµ Ñ�Ð»Ð¸ÐºÐµ\n"
 
-#: vms-alpha.c:5748
+#: vms-alpha.c:6354
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   Ð´Ð¾Ð´ÐµÐ»Ð° (Ð´ÑƒÐ¶Ð¸Ð½Ð°)  : %u (0x%08x)\n"
 
-#: vms-alpha.c:5749
+#: vms-alpha.c:6355
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð»Ð¸ÐºÐµ: 0x%08x\n"
 
-#: vms-alpha.c:5751
+#: vms-alpha.c:6357
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð¸Ð¼Ð²ÐµÐº-Ð° : 0x%08x\n"
 
-#: vms-alpha.c:5753
+#: vms-alpha.c:6360
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð²           : %.*s\n"
 
-#: vms-alpha.c:5766
+#: vms-alpha.c:6376
 #, 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:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%04x"
 
-#: vms-alpha.c:5770
+#: vms-alpha.c:6380
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ°: 0x%08x\n"
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:6384
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ð°: 0x%08x\n"
 
-#: vms-alpha.c:5776
+#: vms-alpha.c:6386
 #, 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:6389 vms-alpha.c:6489 vms-alpha.c:6512
 #, 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:6392 vms-alpha.c:6492 vms-alpha.c:6515
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð²         : %.*s\n"
 
-#: vms-alpha.c:5788
+#: vms-alpha.c:6400
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM â€” Ð£Ð¿ÑƒÑ‚Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
 
-#: vms-alpha.c:5800
+#: vms-alpha.c:6415
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC â€” ÐŸÑ€Ð¾Ð²ÐµÑ€Ð° Ð´Ð¾Ñ�Ð»ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐ°\n"
 
-#: vms-alpha.c:5801
+#: vms-alpha.c:6416
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%08x"
 
-#: vms-alpha.c:5805
+#: vms-alpha.c:6420
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð°ÑšÐµ Ð¸Ð´-Ð° : %x\n"
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:6422
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   Ð¾Ð·Ð±Ð¸Ñ™Ð½Ð¾Ñ�Ñ‚ Ð³Ñ€ÐµÑˆÐºÐµ: %x\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:6426
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² ÐµÐ½Ñ‚Ð¸Ñ‚ÐµÑ‚Ð°  : %.*s\n"
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:6432
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°  : %.*s\n"
 
-#: vms-alpha.c:5815
+#: vms-alpha.c:6441
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ Ð±Ð¸Ð½Ð°Ñ€Ð½Ð¾Ð³ : 0x%08x\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:6445
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   Ð°Ñ�ÐºÑ€Ð¸ ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ   : %.*s\n"
 
-#: vms-alpha.c:5826
+#: vms-alpha.c:6457
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° ÑƒÐ½Ð¸Ð²ÐµÑ€Ð·Ð°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
 
-#: vms-alpha.c:5830
+#: vms-alpha.c:6461
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: 0x%08x\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6463
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   Ñ‚Ð°Ñ‡ÐºÐ° ÑƒÐ½Ð¾Ñ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:5834
+#: vms-alpha.c:6465
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   Ð¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð° : 0x%08x\n"
 
-#: vms-alpha.c:5836
+#: vms-alpha.c:6467
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ°: %u\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6481
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV â€” Ð”ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
 
-#: vms-alpha.c:5851
+#: vms-alpha.c:6485
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   Ð²ÐµÐºÑ‚Ð¾Ñ€     : 0x%08x\n"
 
-#: vms-alpha.c:5853 vms-alpha.c:5872
+#: vms-alpha.c:6487 vms-alpha.c:6510
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ°: %u\n"
 
-#: vms-alpha.c:5866
+#: vms-alpha.c:6504
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM â€” ÐžÐ¿ÑˆÑ‚Ð° Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ†Ð¸Ñ˜Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ�Ð° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ð¾Ð¼\n"
 
-#: vms-alpha.c:5870
+#: vms-alpha.c:6508
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ: 0x%08x\n"
 
-#: vms-alpha.c:5881
+#: vms-alpha.c:6521
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr "Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð² â€žegsdâ€œ ÑƒÐ½Ð¾Ñ� Ð²Ñ€Ñ�Ñ‚Ðµ %u\n"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6560
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr "    Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°: 0x%08x\n"
 
-#: vms-alpha.c:5918
+#: vms-alpha.c:6564
 #, 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:6569
 #, 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:6575
 #, 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:6580
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    Ð¾Ð¿ÑˆÑ‚Ð¸ Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:5942
+#: vms-alpha.c:6592
 #, c-format
-msgid "  %s (len=%u+%u):\n"
-msgstr "  %s (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u+%u):\n"
+msgid "  %s (len=%u):\n"
+msgstr "  %s (Ð´ÑƒÐ¶Ð¸Ð½Ð°=%u):\n"
 
-#: vms-alpha.c:5957
+#: vms-alpha.c:6615
 #, c-format
-msgid "   (type: %3u, size: 4+%3u): "
-msgstr "   (Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 4+%3u): "
+msgid "   (type: %3u, size: %3u): "
+msgstr "   (Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %3u): "
 
-#: vms-alpha.c:5961
+#: vms-alpha.c:6621
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (Ð¾Ð¿ÑˆÑ‚Ð¾Ñ�Ñ‚ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) %.*s\n"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6625
 #, c-format
-msgid "STA_LW (stack longword) 0x%08x\n"
-msgstr "STA_LW (Ð´ÑƒÐ³Ð° Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) 0x%08x\n"
+msgid "STA_LW (stack longword)"
+msgstr "STA_LW (Ð´ÑƒÐ³Ð° Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)"
 
-#: vms-alpha.c:5969
+#: vms-alpha.c:6631
 #, c-format
-msgid "STA_QW (stack quadword) 0x%08x %08x\n"
-msgstr "STA_QW (Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) 0x%08x %08x\n"
+msgid "STA_QW (stack quadword)"
+msgstr "STA_QW (Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ° Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)"
 
-#: vms-alpha.c:5974
+#: vms-alpha.c:6638
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (Ð¾Ñ�Ð½Ð¾Ð²Ð° Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜)\n"
 
-#: vms-alpha.c:5975
+#: vms-alpha.c:6641
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "    Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x %08x\n"
 
-#: vms-alpha.c:5981
+#: vms-alpha.c:6647
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)\n"
 
-#: vms-alpha.c:5984
+#: vms-alpha.c:6650
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (Ð¼Ð¾Ð´ÑƒÐ» Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°)\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6653
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ° Ð¿Ð¾Ñ€ÐµÑ’ÐµÑšÐ°)\n"
 
-#: vms-alpha.c:5991
+#: vms-alpha.c:6657
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð±Ð°Ñ˜Ñ‚)\n"
 
-#: vms-alpha.c:5994
+#: vms-alpha.c:6660
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ñ€ÐµÑ‡)\n"
 
-#: vms-alpha.c:5997
+#: vms-alpha.c:6663
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð´ÑƒÐ³Ñƒ Ñ€ÐµÑ‡)\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6666
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾Ñ€ÐµÑ‡)\n"
 
-#: vms-alpha.c:6006
+#: vms-alpha.c:6673
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð°Ð»Ð½Ð¾ Ð¿Ð¾Ð½Ð°Ð²Ñ™Ð°ÑšÐµ) %u Ð±Ð°Ñ˜Ñ‚Ð°\n"
 
-#: vms-alpha.c:6013
+#: vms-alpha.c:6682
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¾Ð¿ÑˆÑ‚Ðµ) %.*s\n"
 
-#: vms-alpha.c:6017
+#: vms-alpha.c:6687
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr "STO_CA (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ ÐºÐ¾Ð´Ð°) %.*s\n"
 
-#: vms-alpha.c:6021
+#: vms-alpha.c:6691
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ñƒ Ð³Ñ€Ð°Ð½Ñƒ)\n"
 
-#: vms-alpha.c:6024
+#: vms-alpha.c:6694
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ñƒ Ð³Ñ€Ð°Ð½Ñƒ)\n"
 
-#: vms-alpha.c:6027
+#: vms-alpha.c:6697
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñƒ Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº)\n"
 
-#: vms-alpha.c:6033
+#: vms-alpha.c:6704
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð°Ð»Ð½Ð¾) %u Ð±Ð°Ñ˜Ñ‚Ð°\n"
 
-#: vms-alpha.c:6040
+#: vms-alpha.c:6713
 #, c-format
 msgid "STO_GBL_LW (store global longword) %.*s\n"
 msgstr "STO_GBL_LW (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¾Ð¿ÑˆÑ‚Ñƒ Ð´ÑƒÐ³Ñƒ Ñ€ÐµÑ‡) %.*s\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6717
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð›ÐŸ Ñ�Ð° Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ�Ð¾Ð¼ Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ°)\n"
 
-#: vms-alpha.c:6047
+#: vms-alpha.c:6720
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr "STO_BR_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ�Ñ‚ Ð³Ñ€Ð°Ð½Ðµ) *ÑƒÑ€Ð°Ð´Ð¸Ñ‚Ð¸*\n"
 
-#: vms-alpha.c:6050
+#: vms-alpha.c:6723
 #, c-format
 msgid "STO_BR_PS (store branch psect + offset) *todo*\n"
 msgstr "STO_BR_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð³Ñ€Ð°Ð½Ðµ) *ÑƒÑ€Ð°Ð´Ð¸Ñ‚Ð¸*\n"
 
-#: vms-alpha.c:6054
+#: vms-alpha.c:6727
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (Ð±ÐµÐ· Ñ€Ð°Ð´ÑšÐµ)\n"
 
-#: vms-alpha.c:6057
+#: vms-alpha.c:6730
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (Ð·Ð±Ñ€Ð°Ñ˜Ð°)\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6733
 #, c-format
-msgid "OPR_SUB (substract)\n"
+msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (Ð¾Ð´ÑƒÐ·Ð¸Ð¼Ð°)\n"
 
-#: vms-alpha.c:6063
+#: vms-alpha.c:6736
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (Ð¼Ð½Ð¾Ð¶Ð¸)\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6739
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (Ð´ÐµÐ»Ð¸)\n"
 
-#: vms-alpha.c:6069
+#: vms-alpha.c:6742
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¾ Ð˜)\n"
 
-#: vms-alpha.c:6072
+#: vms-alpha.c:6745
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¾ ÑƒÐºÑ™ÑƒÑ‡Ð¸Ð²Ð¾ Ð˜Ð›Ð˜)\n"
 
-#: vms-alpha.c:6075
+#: vms-alpha.c:6748
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¾ Ð¸Ñ�ÐºÑ™ÑƒÑ‡Ð¸Ð²Ð¾ Ð˜Ð›Ð˜)\n"
 
-#: vms-alpha.c:6078
+#: vms-alpha.c:6751
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (Ð½ÐµÐ³Ð°Ñ†Ð¸Ñ˜Ð°)\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6754
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (ÐºÐ¾Ð¼Ð¿Ð»ÐµÐ¼ÐµÐ½Ñ‚)\n"
 
-#: vms-alpha.c:6084
+#: vms-alpha.c:6757
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (ÑƒÐ¼ÐµÑ›Ðµ Ð¿Ð¾Ñ™Ðµ)\n"
 
-#: vms-alpha.c:6087
+#: vms-alpha.c:6760
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (Ð°Ñ€Ð¸Ñ‚Ð¼ÐµÑ‚Ð¸Ñ‡ÐºÐ¸ Ð¿Ð¾Ð¼Ð°Ðº)\n"
 
-#: vms-alpha.c:6090
+#: vms-alpha.c:6763
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (Ð¿Ð¾Ð¼Ð°Ðº Ð±ÐµÐ· Ð·Ð½Ð°ÐºÐ°)\n"
 
-#: vms-alpha.c:6093
+#: vms-alpha.c:6766
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (Ð¾ÐºÑ€ÐµÑ›Ðµ)\n"
 
-#: vms-alpha.c:6096
+#: vms-alpha.c:6769
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (Ð±Ð¸Ñ€Ð°)\n"
 
-#: vms-alpha.c:6099
+#: vms-alpha.c:6772
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ‚ÐµÐºÑƒÑ›Ðµ Ð»Ð¾ÐºÐ°Ñ†Ð¸Ñ˜Ðµ)\n"
 
-#: vms-alpha.c:6102
+#: vms-alpha.c:6775
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚)\n"
 
-#: vms-alpha.c:6106
+#: vms-alpha.c:6779
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿Ð°Ñ€ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° ÑƒÑ�Ð»Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6110
+#: vms-alpha.c:6783
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿Ð°Ñ€ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ° ÑƒÑ�Ð»Ð¾Ð²Ð° + Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6111
+#: vms-alpha.c:6787
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿Ð°Ðº: %.*s\n"
 
-#: vms-alpha.c:6114
+#: vms-alpha.c:6794
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ�: %.*s\n"
 
-#: vms-alpha.c:6117
+#: vms-alpha.c:6800
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¾Ð¿ÑˆÑ‚Ð¾Ñ�Ñ‚ ÑƒÑ�Ð»Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6118
+#: vms-alpha.c:6803
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð¾Ð¿ÑˆÑ‚Ðµ: %.*s\n"
 
-#: vms-alpha.c:6122
+#: vms-alpha.c:6808
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ ÐºÐ¾Ð´Ð° ÑƒÑ�Ð»Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6123
+#: vms-alpha.c:6811
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   Ð¸Ð½Ð´ÐµÐºÑ� Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°: %u, Ð½Ð°Ð·Ð¸Ð² Ð¿Ð¾Ñ�Ñ‚ÑƒÐ¿ÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:6127
+#: vms-alpha.c:6816
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (Ñ�Ð¼ÐµÑˆÑ‚Ð° Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº + Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ ÑƒÑ�Ð»Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6129
+#: vms-alpha.c:6820
 #, 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:6827
 #, 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:6831
 #, 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:6835
 #, 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:6839
 #, 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:6843
 #, 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:6847
 #, 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:6851
 #, 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:6855
 #, 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:6860
 #, 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:6864
 #, 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:6868
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr "CTL_SETRB (Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°)\n"
 
-#: vms-alpha.c:6183
+#: vms-alpha.c:6874
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr "CTL_AUGRB (Ð¿Ð¾Ð²ÐµÑ›Ð°Ð²Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°) %u\n"
 
-#: vms-alpha.c:6187
+#: vms-alpha.c:6879
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (Ð´ÐµÑ„Ð¸Ð½Ð¸ÑˆÐµ Ð¼ÐµÑ�Ñ‚Ð¾)\n"
 
-#: vms-alpha.c:6190
+#: vms-alpha.c:6882
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™Ð° Ð¼ÐµÑ�Ñ‚Ð¾)\n"
 
-#: vms-alpha.c:6193
+#: vms-alpha.c:6885
 #, c-format
 msgid "CTL_STKDL (stack defined location)\n"
 msgstr "CTL_STKDL (Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ¾Ð¼ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð¼ÐµÑ�Ñ‚Ð¾)\n"
 
-#: vms-alpha.c:6196 vms-alpha.c:6610
+#: vms-alpha.c:6888 vms-alpha.c:7316 vms-alpha.c:7477
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð¾*\n"
 
-#: vms-alpha.c:6226 vms-alpha.c:6265
+#: vms-alpha.c:6913
 #, c-format
-msgid "cannot read GST record length\n"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð´ÑƒÐ¶Ð¸Ð½Ñƒ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
+msgid "cannot read GST record header\n"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6247
+#: vms-alpha.c:6936
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ â€žEMHâ€œ Ñƒ Ð¿Ñ€Ð²Ð¾Ð¼ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ\n"
 
-#: vms-alpha.c:6273
-#, c-format
-msgid "cannot read GST record header\n"
-msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
-
-#: vms-alpha.c:6286
+#: vms-alpha.c:6960
 #, c-format
-msgid " corrupted GST\n"
-msgstr " Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGSTâ€œ\n"
+msgid "corrupted GST\n"
+msgstr "Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¾ â€žGSTâ€œ\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6973
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�\n"
 
-#: vms-alpha.c:6323
+#: vms-alpha.c:7000
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð² â€žEOBJâ€œ ÑƒÐ½Ð¾Ñ� Ð²Ñ€Ñ�Ñ‚Ðµ %u\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:7025
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr "  Ð±Ñ€Ð¾Ñ˜ Ð±Ð¸Ñ‚Ð°: %u, Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:7039
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   Ð¼Ð°Ð¿Ð° Ð±Ð¸Ñ‚Ð°: 0x%08x (ÑƒÐºÑƒÐ¿Ð½Ð¾: %u):\n"
 
-#: vms-alpha.c:6366
+#: vms-alpha.c:7046
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6391
+#: vms-alpha.c:7073
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  Ñ�Ð»Ð¸ÐºÐ° %u (%u ÑƒÐ½Ð¾Ñ�Ð°)\n"
 
-#: vms-alpha.c:6396
+#: vms-alpha.c:7079
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: 0x%08x, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: 0x%08x\n"
 
-#: vms-alpha.c:6417
+#: vms-alpha.c:7102
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  Ñ�Ð»Ð¸ÐºÐ° %u (%u ÑƒÐ½Ð¾Ñ�Ð°), Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜:\n"
 
-#: vms-alpha.c:6424
+#: vms-alpha.c:7109
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6546
+#: vms-alpha.c:7235
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 Ð±Ð¸Ñ‚Ð° *Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6550
+#: vms-alpha.c:7240
 #, 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:7251
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "Ð½Ð¸Ð· â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð°Ð½\n"
 
-#: vms-alpha.c:6565
+#: vms-alpha.c:7258
 #, 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:7263
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "Ð°Ñ€-Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6573
+#: vms-alpha.c:7267
 #, 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:7281
 #, c-format
 msgid "Bounds:\n"
 msgstr "Ð“Ñ€Ð°Ð½Ð¸Ñ†Ðµ:\n"
 
-#: vms-alpha.c:6588
+#: vms-alpha.c:7288
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: Ð”Ð¾ÑšÐ°: %u, Ð³Ð¾Ñ€ÑšÐ°: %u\n"
 
-#: vms-alpha.c:6600
+#: vms-alpha.c:7302
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr "Ð½Ð¸Ñ�ÐºÐ° Ð±Ð¸Ñ‚Ð° â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð°\n"
 
-#: vms-alpha.c:6604
+#: vms-alpha.c:7309
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "Ð¾Ñ�Ð½Ð¾Ð²Ð°: %u, Ð¿Ð¾Ð»Ð¾Ð¶Ð°Ñ˜: %u\n"
 
-#: vms-alpha.c:6624
+#: vms-alpha.c:7335
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "Ð²-Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: 0x%02x, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: 0x%08x "
 
-#: vms-alpha.c:6630
+#: vms-alpha.c:7342
 #, c-format
 msgid "(no value)\n"
 msgstr "(Ð±ÐµÐ· Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸)\n"
 
-#: vms-alpha.c:6633
+#: vms-alpha.c:7345
 #, c-format
 msgid "(not active)\n"
 msgstr "(Ð½Ð¸Ñ˜Ðµ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾)\n"
 
-#: vms-alpha.c:6636
+#: vms-alpha.c:7348
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¾)\n"
 
-#: vms-alpha.c:6639
+#: vms-alpha.c:7351
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(Ð¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº)\n"
 
-#: vms-alpha.c:6643
+#: vms-alpha.c:7356
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(Ð¿Ñ€Ð°Ñ‚ÐµÑ›Ð° Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚)\n"
 
-#: vms-alpha.c:6646
+#: vms-alpha.c:7359
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ˜Ð° Ñ�Ð»ÐµÐ´ÐµÑ›Ðµ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸)\n"
 
-#: vms-alpha.c:6649
+#: vms-alpha.c:7362
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð±Ð¸Ñ‚Ð° %u)\n"
 
-#: vms-alpha.c:6652
+#: vms-alpha.c:7366
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr "(Ñ€ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€: %u, Ñ€Ð°Ð·Ð¼ÐµÑˆÑ‚Ð°Ñ˜: %u, Ð¸Ð½Ð´Ð¸Ñ€ÐµÐºÑ‚Ð½Ð¾: %u, Ð²Ñ€Ñ�Ñ‚Ð°: "
 
-#: vms-alpha.c:6659
+#: vms-alpha.c:7373
 msgid "literal"
 msgstr "Ð´Ð¾Ñ�Ð»Ð¾Ð²Ð½Ð¾Ñ�Ñ‚"
 
-#: vms-alpha.c:6662
+#: vms-alpha.c:7376
 msgid "address"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: vms-alpha.c:6665
+#: vms-alpha.c:7379
 msgid "desc"
 msgstr "Ð¾Ð¿Ð¸Ñ�"
 
-#: vms-alpha.c:6668
+#: vms-alpha.c:7382
 msgid "reg"
 msgstr "Ñ€ÐµÐ³"
 
-#: vms-alpha.c:6743
+#: vms-alpha.c:7403
+#, c-format
+msgid "len: %2u, kind: %2u "
+msgstr "Ð´ÑƒÐ¶Ð¸Ð½Ð°: %2u, Ð²Ñ€Ñ�Ñ‚Ð°: %2u "
+
+#: vms-alpha.c:7411
+#, c-format
+msgid "atomic, type=0x%02x %s\n"
+msgstr "Ð°Ñ‚Ð¾Ð¼Ñ�ÐºÐ¸, Ð²Ñ€Ñ�Ñ‚Ð°=0x%02x %s\n"
+
+#: vms-alpha.c:7416
+#, c-format
+msgid "indirect, defined at 0x%08x\n"
+msgstr "Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ð½Ð¾, Ð¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ð½Ð° 0x%08x\n"
+
+#: vms-alpha.c:7420
+#, c-format
+msgid "typed pointer\n"
+msgstr "ÑƒÐºÑƒÑ†Ð°Ð½Ð¸ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡\n"
+
+#: vms-alpha.c:7424
+#, c-format
+msgid "pointer\n"
+msgstr "Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡\n"
+
+#: vms-alpha.c:7435
+#, c-format
+msgid "array, dim: %u, bitmap: "
+msgstr "Ð½Ð¸Ð·, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð±Ð¸Ñ‚Ð¼Ð°Ð¿Ð°: "
+
+#: vms-alpha.c:7450
+#, c-format
+msgid "array descriptor:\n"
+msgstr "Ð¾Ð¿Ð¸Ñ�Ð½Ð¸Ðº Ð½Ð¸Ð·Ð°:\n"
+
+#: vms-alpha.c:7461
+#, c-format
+msgid "type spec for element:\n"
+msgstr "Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ Ð·Ð° ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚:\n"
+
+#: vms-alpha.c:7463
+#, c-format
+msgid "type spec for subscript %u:\n"
+msgstr "Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ Ð·Ð° Ð¿Ð¾Ð´Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñƒ â€ž%uâ€œ:\n"
+
+#: vms-alpha.c:7488
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Ð¢Ð°Ð±ÐµÐ»Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°:\n"
 
-#: vms-alpha.c:6754
+#: vms-alpha.c:7499
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žGSTâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ\n"
 
-#: vms-alpha.c:6759
+#: vms-alpha.c:7505
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " Ð²Ñ€Ñ�Ñ‚Ð°: %3u, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %3u (Ð¿Ñ€Ð¸ 0x%08x): "
 
-#: vms-alpha.c:6773
+#: vms-alpha.c:7524
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDSTâ€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð»\n"
 
-#: vms-alpha.c:6816
+#: vms-alpha.c:7568
 #, c-format
 msgid "standard data: %s\n"
 msgstr "Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¸ Ð¿Ð¾Ð´Ð°Ñ†Ð¸: %s\n"
 
-#: vms-alpha.c:6819 vms-alpha.c:6903
+#: vms-alpha.c:7572 vms-alpha.c:7696
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6826
+#: vms-alpha.c:7580
 #, c-format
 msgid "modbeg\n"
 msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð¼Ð¾Ð´ÑƒÐ»Ð°\n"
 
-#: vms-alpha.c:6827
+#: vms-alpha.c:7584
 #, 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:7594 vms-alpha.c:7963
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ð¼Ð¾Ð´ÑƒÐ»Ð°           : %.*s\n"
 
-#: vms-alpha.c:6836
+#: vms-alpha.c:7601
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   Ð¿Ñ€ÐµÐ²Ð¾Ð´Ð¸Ð»Ð°Ñ†  : %.*s\n"
 
-#: vms-alpha.c:6841
+#: vms-alpha.c:7608
 #, c-format
 msgid "modend\n"
 msgstr "ÐºÑ€Ð°Ñ˜ Ð¼Ð¾Ð´ÑƒÐ»Ð°\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7615
 msgid "rtnbeg\n"
 msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ñ€ÑƒÑ‚Ð¸Ð½Ðµ\n"
 
-#: vms-alpha.c:6849
+#: vms-alpha.c:7619
 #, 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:7628
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    Ð½Ð°Ð·Ð¸Ð² Ñ€ÑƒÑ‚Ð¸Ð½Ðµ : %.*s\n"
 
-#: vms-alpha.c:6862
+#: vms-alpha.c:7639
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "ÐºÑ€Ð°Ñ˜ Ñ€ÑƒÑ‚Ð¸Ð½Ðµ: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° 0x%08x\n"
 
-#: vms-alpha.c:6870
+#: vms-alpha.c:7649
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð±ÐºÐ¿Ñ‚ Ð°Ð´Ñ€ÐµÑ�Ð° 0x%08x\n"
 
-#: vms-alpha.c:6878
+#: vms-alpha.c:7659
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "ÐµÐ¿Ð¸Ð»Ð¾Ð³: Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð±Ñ€Ð¾Ñ˜: %u\n"
 
-#: vms-alpha.c:6887
+#: vms-alpha.c:7674
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr "Ð±Ð»Ðº Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº: Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6896
+#: vms-alpha.c:7686
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "Ð±Ð»Ðº ÐºÑ€Ð°Ñ˜: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6902
+#: vms-alpha.c:7692
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "Ð¾Ð´Ñ€ÐµÐ´Ð±Ð° Ð²Ñ€Ñ�Ñ‚Ðµ (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:6909
+#: vms-alpha.c:7708
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ð¾Ñ�Ñ‚Ð°Ð²ÐºÐµ, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6918
+#: vms-alpha.c:7725
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð·Ð°Ð¿Ð¸Ñ�Ð°: Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7731
+#, c-format
+msgid "    len: %u bits\n"
+msgstr "    Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u Ð±Ð¸Ñ‚Ð°\n"
+
+#: vms-alpha.c:7737
 #, c-format
 msgid "recend\n"
 msgstr "ÐºÑ€Ð°Ñ˜ Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7742
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6932
+#: vms-alpha.c:7748
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð¸ Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:6936
+#: vms-alpha.c:7754
 #, c-format
 msgid "enumend\n"
 msgstr "ÐºÑ€Ð°Ñ˜ Ð±Ñ€Ð¾Ñ˜Ð°ÑšÐ°\n"
 
-#: vms-alpha.c:6953
+#: vms-alpha.c:7761
+#, c-format
+msgid "label, name: %.*s\n"
+msgstr "Ð½Ð°Ñ‚Ð¿Ð¸Ñ�, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
+
+#: vms-alpha.c:7764
+#, c-format
+msgid "    address: 0x%08x\n"
+msgstr "    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
+
+#: vms-alpha.c:7776
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "Ð½ÐµÐ¿Ñ€ÐµÐºÐ¸Ð´Ð½Ð¸ Ð¾Ð¿Ñ�ÐµÐ³ (Ð±Ñ€.: %u)\n"
 
-#: vms-alpha.c:6955
+#: vms-alpha.c:7783
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:6965
+#: vms-alpha.c:7794
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð°  (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:6982
+#: vms-alpha.c:7813
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:6989
+#: vms-alpha.c:7822
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:6995
+#: vms-alpha.c:7830
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7001
+#: vms-alpha.c:7838
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7007
+#: vms-alpha.c:7846
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7012
+#: vms-alpha.c:7853
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7017
+#: vms-alpha.c:7860
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7022
+#: vms-alpha.c:7867
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7026
+#: vms-alpha.c:7873
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7031
+#: vms-alpha.c:7880
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7033
+#: vms-alpha.c:7882
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7038
+#: vms-alpha.c:7889
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7040
+#: vms-alpha.c:7891
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7046
+#: vms-alpha.c:7897
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "delta pc +%-4d"
 
-#: vms-alpha.c:7049
+#: vms-alpha.c:7901
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x Ñ€ÐµÐ´: %5u\n"
 
-#: vms-alpha.c:7054
+#: vms-alpha.c:7906
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%uâ€œ\n"
 
-#: vms-alpha.c:7069
+#: vms-alpha.c:7921
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "Ð¸Ð·Ð²Ð¾Ñ€ (Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7083
+#: vms-alpha.c:7940
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr "   declfile: Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u, Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ: %u, Ð¸Ð´ Ð¿Ð¾Ñ™Ð°: %u\n"
 
-#: vms-alpha.c:7087
+#: vms-alpha.c:7945
 #, 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:7957
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð¸Ð² Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ: %.*s\n"
 
-#: vms-alpha.c:7105
+#: vms-alpha.c:7973
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7110 vms-alpha.c:7115
+#: vms-alpha.c:7980 vms-alpha.c:7987
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7120 vms-alpha.c:7125
+#: vms-alpha.c:7994 vms-alpha.c:8001
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7130 vms-alpha.c:7135
+#: vms-alpha.c:8008 vms-alpha.c:8015
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7139
+#: vms-alpha.c:8019
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7143
+#: vms-alpha.c:8023
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   *Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž%uâ€œ\n"
 
-#: vms-alpha.c:7155
+#: vms-alpha.c:8035
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "*Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð°* Ð´Ñ�Ñ‚ Ð²Ñ€Ñ�Ñ‚Ð° â€ž%uâ€œ\n"
 
-#: vms-alpha.c:7187
+#: vms-alpha.c:8067
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHDâ€œ\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:8071
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u, Ð±Ñ€Ð¾Ñ˜ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°: %u)\n"
 
-#: vms-alpha.c:7193
+#: vms-alpha.c:8075
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " Ð²ÐµÑ›Ð¸ Ð¸Ð´: %u, Ð¼Ð°ÑšÐ¸ Ð¸Ð´: %u\n"
 
-#: vms-alpha.c:7201
+#: vms-alpha.c:8083
 msgid "executable"
 msgstr "Ð¸Ð·Ð²Ñ€ÑˆÐ½Ð°"
 
-#: vms-alpha.c:7204
+#: vms-alpha.c:8086
 msgid "linkable image"
 msgstr "Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð° Ñ�Ð»Ð¸ÐºÐ°"
 
-#: vms-alpha.c:7210
+#: vms-alpha.c:8093
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " Ð²Ñ€Ñ�Ñ‚Ð° Ñ�Ð»Ð¸ÐºÐµ: %u (%s)"
 
-#: vms-alpha.c:7216
+#: vms-alpha.c:8099
 msgid "native"
 msgstr "Ð¸Ð·Ð²Ð¾Ñ€Ð½Ð°"
 
-#: vms-alpha.c:7219
+#: vms-alpha.c:8102
 msgid "CLI"
-msgstr "ÐšÐ›Ð˜"
+msgstr "CLI"
 
-#: vms-alpha.c:7225
+#: vms-alpha.c:8109
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", Ð¿Ð¾Ð´Ð²Ñ€Ñ�Ñ‚Ð°: %u (%s)\n"
 
-#: vms-alpha.c:7231
+#: vms-alpha.c:8116
 #, 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:8120
 #, c-format
 msgid " fixup info rva: "
 msgstr " Ð¿Ð¾Ð¿Ñ€Ð°Ð²ÐºÐ° Ð¸Ð½Ñ„Ð¾ Ñ€Ð²Ð°: "
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:8122
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", Ð²ÐµÐºÑ‚Ð¾Ñ€ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ñ€Ð²Ð°: "
 
-#: vms-alpha.c:7240
+#: vms-alpha.c:8125
 #, c-format
 msgid ""
 "\n"
@@ -5615,624 +8322,1053 @@ msgstr ""
 "\n"
 " Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð½Ð¸Ð·Ð° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ: %u\n"
 
-#: vms-alpha.c:7244
+#: vms-alpha.c:8130
 #, 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:8136
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°: %08x:"
 
-#: vms-alpha.c:7280
+#: vms-alpha.c:8167
 #, 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:8173
 #, c-format
 msgid " BPAGE: %u"
 msgstr " Ð‘Ð¡Ð¢Ð Ð�Ð�Ð˜Ð¦Ð�: %u"
 
-#: vms-alpha.c:7292
+#: vms-alpha.c:8180
 #, c-format
 msgid ", ext fixup offset: %u, no_opt psect off: %u"
 msgstr ", Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ñ�Ð¿Ð¾Ñ™Ð½Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ: %u, Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ° â€žno_optâ€œ-Ð°: %u"
 
-#: vms-alpha.c:7295
+#: vms-alpha.c:8183
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", Ð°Ð»Ð¸Ñ˜Ð°Ñ�: %u\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:8191
 #, c-format
 msgid "system version array information:\n"
 msgstr "Ð½Ð¸Ð· Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð²ÐµÑ€Ð·Ð¸Ñ˜Ðµ Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð°:\n"
 
-#: vms-alpha.c:7307
+#: vms-alpha.c:8195
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHVNâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ\n"
 
-#: vms-alpha.c:7317
+#: vms-alpha.c:8205
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHVNâ€œ Ð¸Ð·Ð´Ð°ÑšÐµ\n"
 
-#: vms-alpha.c:7320
+#: vms-alpha.c:8208
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7324
+#: vms-alpha.c:8212
 msgid "BASE_IMAGE       "
-msgstr "Ð¡Ð›Ð˜ÐšÐ�_ÐžÐ¡Ð�ÐžÐ’Ð•       "
+msgstr "Ð¡Ð›Ð˜ÐšÐ�_ÐžÐ¡Ð�ÐžÐ’Ð•            "
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:8215
 msgid "MEMORY_MANAGEMENT"
 msgstr "Ð£ÐŸÐ Ð�Ð’Ð‰Ð�ÐŠÐ•_ÐœÐ•ÐœÐžÐ Ð˜ÐˆÐžÐœ"
 
-#: vms-alpha.c:7330
+#: vms-alpha.c:8218
 msgid "IO               "
-msgstr "Ð£Ð˜               "
+msgstr "Ð£Ð˜                      "
 
-#: vms-alpha.c:7333
+#: vms-alpha.c:8221
 msgid "FILES_VOLUMES    "
-msgstr "Ð’ÐžÐ›Ð£ÐœÐ•Ð�Ð˜_Ð”Ð�Ð¢ÐžÐ¢Ð•ÐšÐ�    "
+msgstr "Ð’ÐžÐ›Ð£ÐœÐ•Ð�Ð˜_Ð”Ð�Ð¢ÐžÐ¢Ð•ÐšÐ�       "
 
-#: vms-alpha.c:7336
+#: vms-alpha.c:8224
 msgid "PROCESS_SCHED    "
-msgstr "Ð—Ð�ÐšÐ�Ð—Ð�Ð�Ð˜_ÐŸÐ ÐžÐ¦Ð•Ð¡Ð˜    "
+msgstr "Ð—Ð�ÐšÐ�Ð—Ð�Ð�Ð˜_ÐŸÐ ÐžÐ¦Ð•Ð¡Ð˜        "
 
-#: vms-alpha.c:7339
+#: vms-alpha.c:8227
 msgid "SYSGEN           "
-msgstr "Ð¡Ð¢Ð’Ð�Ð Ð�ÐŠÐ•_Ð¡Ð˜Ð¡Ð¢Ð•ÐœÐ�           "
+msgstr "Ð¡Ð¢Ð’Ð�Ð Ð�ÐŠÐ•_Ð¡Ð˜Ð¡Ð¢Ð•ÐœÐ�        "
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:8230
 msgid "CLUSTERS_LOCKMGR "
 msgstr "ÐœÐ“Ð Ð—Ð�ÐšÐ‰Ð£Ð§Ð�Ð’Ð�ÐŠÐ•_ÐšÐ›Ð�Ð¡Ð¢Ð•Ð Ð� "
 
-#: vms-alpha.c:7345
+#: vms-alpha.c:8233
 msgid "LOGICAL_NAMES    "
-msgstr "Ð›ÐžÐ“Ð˜Ð§ÐšÐ˜_Ð�Ð�Ð—Ð˜Ð’Ð˜    "
+msgstr "Ð›ÐžÐ“Ð˜Ð§ÐšÐ˜_Ð�Ð�Ð—Ð˜Ð’Ð˜           "
 
-#: vms-alpha.c:7348
+#: vms-alpha.c:8236
 msgid "SECURITY         "
-msgstr "Ð‘Ð•Ð—Ð‘Ð•Ð”Ð�ÐžÐ¡Ð¢         "
+msgstr "Ð‘Ð•Ð—Ð‘Ð•Ð”Ð�ÐžÐ¡Ð¢              "
 
-#: vms-alpha.c:7351
+#: vms-alpha.c:8239
 msgid "IMAGE_ACTIVATOR  "
-msgstr "ÐŸÐžÐšÐ Ð•Ð¢Ð�Ð§_Ð¡Ð›Ð˜ÐšÐ•  "
+msgstr "ÐŸÐžÐšÐ Ð•Ð¢Ð�Ð§_Ð¡Ð›Ð˜ÐšÐ•          "
 
-#: vms-alpha.c:7354
+#: vms-alpha.c:8242
 msgid "NETWORKS         "
-msgstr "ÐœÐ Ð•Ð–Ð•         "
+msgstr "ÐœÐ Ð•Ð–Ð•                   "
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:8245
 msgid "COUNTERS         "
-msgstr "Ð‘Ð ÐžÐˆÐ�Ð§Ð˜         "
+msgstr "Ð‘Ð ÐžÐˆÐ�Ð§Ð˜                 "
 
-#: vms-alpha.c:7360
+#: vms-alpha.c:8248
 msgid "STABLE           "
-msgstr "Ð¡Ð¢Ð�Ð‘Ð˜Ð›Ð�Ðž           "
+msgstr "Ð¡Ð¢Ð�Ð‘Ð˜Ð›Ð�Ðž                "
 
-#: vms-alpha.c:7363
+#: vms-alpha.c:8251
 msgid "MISC             "
-msgstr "Ð Ð�Ð—Ð�Ðž             "
+msgstr "Ð Ð�Ð—Ð�Ðž                   "
 
-#: vms-alpha.c:7366
+#: vms-alpha.c:8254
 msgid "CPU              "
-msgstr "Ð¦ÐŸÐ£              "
+msgstr "Ð¦ÐŸÐˆ                     "
 
-#: vms-alpha.c:7369
+#: vms-alpha.c:8257
 msgid "VOLATILE         "
-msgstr "ÐŸÐ ÐžÐœÐ•Ð�Ð‰Ð˜Ð’Ðž         "
+msgstr "ÐŸÐ ÐžÐœÐ•Ð�Ð‰Ð˜Ð’Ðž              "
 
-#: vms-alpha.c:7372
+#: vms-alpha.c:8260
 msgid "SHELL            "
-msgstr "Ð¨ÐšÐžÐ‰ÐšÐ�            "
+msgstr "Ð¨ÐšÐžÐ‰ÐšÐ�                  "
 
-#: vms-alpha.c:7375
+#: vms-alpha.c:8263
 msgid "POSIX            "
-msgstr "ÐŸÐžÐ¡Ð˜ÐšÐ¡            "
+msgstr "ÐŸÐžÐ¡Ð˜ÐšÐ¡                  "
 
-#: vms-alpha.c:7378
+#: vms-alpha.c:8266
 msgid "MULTI_PROCESSING "
-msgstr "Ð’Ð˜Ð¨Ð•_ÐžÐ‘Ð Ð�Ð”Ð�Ðž "
+msgstr "Ð’Ð˜Ð¨Ð•_ÐžÐ‘Ð Ð�Ð”Ð�Ðž            "
 
-#: vms-alpha.c:7381
+#: vms-alpha.c:8269
 msgid "GALAXY           "
-msgstr "Ð“Ð�Ð›Ð�ÐšÐ¡Ð˜ÐˆÐ�           "
+msgstr "Ð“Ð�Ð›Ð�ÐšÐ¡Ð˜ÐˆÐ�               "
 
-#: vms-alpha.c:7384
+#: vms-alpha.c:8272
 msgid "*unknown*        "
-msgstr "*Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾*        "
+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:8288 vms-alpha.c:8575
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHAâ€œ\n"
 
-#: vms-alpha.c:7403
+#: vms-alpha.c:8291
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð°ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ:  (Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°=%u)\n"
 
-#: vms-alpha.c:7405
+#: vms-alpha.c:8294
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " ÐŸÑ€Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7408
+#: vms-alpha.c:8298
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr " Ð”Ñ€ÑƒÐ³Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7411
+#: vms-alpha.c:8302
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " Ð¢Ñ€ÐµÑ›Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:8306
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr " Ð§ÐµÑ‚Ð²Ñ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð° : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7417
+#: vms-alpha.c:8310
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr " Ð”ÐµÑ™ÐµÐ½Ð° Ñ�Ð»Ð¸ÐºÐ°   : 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7428
+#: vms-alpha.c:8321
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHIâ€œ\n"
 
-#: vms-alpha.c:7431
+#: vms-alpha.c:8325
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "ÐŸÑ€ÐµÐ¿Ð¾Ð·Ð½Ð°Ð²Ð°ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ: (Ð²ÐµÑ›Ðµ: %u, Ð¼Ð°ÑšÐµ: %u)\n"
 
-#: vms-alpha.c:7434
+#: vms-alpha.c:8331
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " Ð½Ð°Ð·Ð¸Ð² Ñ�Ð»Ð¸ÐºÐµ    : %.*s\n"
 
-#: vms-alpha.c:7436
+#: vms-alpha.c:8332
 #, c-format
 msgid " link time        : %s\n"
 msgstr " Ð²Ñ€ÐµÐ¼Ðµ Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°  : %s\n"
 
-#: vms-alpha.c:7438
+#: vms-alpha.c:8337
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ Ñ�Ð»Ð¸ÐºÐµ       : %.*s\n"
 
-#: vms-alpha.c:7440
+#: vms-alpha.c:8341
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð°       : %.*s\n"
 
-#: vms-alpha.c:7442
+#: vms-alpha.c:8345
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ Ð¸Ð·Ð³Ñ€Ð°Ð´ÑšÐµ Ñ�Ð»Ð¸ÐºÐµ: %.*s\n"
 
-#: vms-alpha.c:7452
+#: vms-alpha.c:8354
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEIHSâ€œ\n"
 
-#: vms-alpha.c:7455
+#: vms-alpha.c:8358
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð»Ð¸ÐºÐµ Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°: (Ð²ÐµÑ›Ðµ: %u, Ð¼Ð°ÑšÐµ: %u)\n"
 
-#: vms-alpha.c:7460
+#: vms-alpha.c:8364
 #, 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:8369
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr " Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°: Ð²Ð±Ð½: %u, Ð·Ð°Ð¿Ð¸Ñ�Ð¸: %u\n"
 
-#: vms-alpha.c:7468
+#: vms-alpha.c:8374
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr " Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°: Ð²Ð±Ð½: %u, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:8387
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žEISDâ€œ\n"
 
-#: vms-alpha.c:7491
+#: vms-alpha.c:8398
 #, 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:8406
 #, 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:8411
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ : 0x%04x"
 
-#: vms-alpha.c:7540
+#: vms-alpha.c:8449
 #, c-format
 msgid " vbn: %u, pfc: %u, matchctl: %u type: %u ("
 msgstr " Ð²Ð±Ð½: %u, Ð¿Ñ„Ñ†: %u, Ð¿Ð¾Ñ€ÐµÐ´Ð¸_Ñ†Ñ‚Ð»: %u Ð²Ñ€Ñ�Ñ‚Ð°: %u ("
 
-#: vms-alpha.c:7546
+#: vms-alpha.c:8455
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7549
+#: vms-alpha.c:8458
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7552
+#: vms-alpha.c:8461
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7555
+#: vms-alpha.c:8464
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7558
+#: vms-alpha.c:8467
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7561
+#: vms-alpha.c:8470
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7567
+#: vms-alpha.c:8476
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7569
+#: vms-alpha.c:8483
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " ÑƒÐ²Ð»Ð°Ñ‡ÐµÑšÐµ: 0x%08x, Ð½Ð°Ð·Ð¸Ð²: %.*s\n"
 
-#: vms-alpha.c:7579
+#: vms-alpha.c:8494
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ\n"
 
-#: vms-alpha.c:7583
+#: vms-alpha.c:8498
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Ð¢Ð°Ð±ÐµÐ»Ð° Ð¼Ð¾Ð´ÑƒÐ»Ð° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°:\n"
 
-#: vms-alpha.c:7592
+#: vms-alpha.c:8507
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ\n"
 
-#: vms-alpha.c:7597
+#: vms-alpha.c:8513
 #, 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:8523
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDMTâ€œ Ð¿-Ð¾Ð´ÐµÑ™Ð°Ðº\n"
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:8527
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr "  Ð¿Ð¾Ñ‡ÐµÑ‚Ð°Ðº Ð¿-Ð¾Ð´ÐµÑ™ÐºÐ°: 0x%08x, Ð´ÑƒÐ¶Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:7623
+#: vms-alpha.c:8540
 #, c-format
 msgid "cannot read DST\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žDSTâ€œ\n"
 
-#: vms-alpha.c:7633
+#: vms-alpha.c:8550
 #, c-format
 msgid "cannot read GST\n"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ â€žGSTâ€œ\n"
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:8554
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Ð¢Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿ÑˆÑ‚Ð¸Ñ… Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°:\n"
 
-#: vms-alpha.c:7665
+#: vms-alpha.c:8581
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr "Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ° Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð°Ñ‡Ð° Ñ�Ð»Ð¸ÐºÐµ: (Ð²ÐµÑ›Ð¸: %u, Ð¼Ð°ÑšÐ¸: %u)\n"
 
-#: vms-alpha.c:7668
+#: vms-alpha.c:8585
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  Ð¸Ð°Ñ„ Ð²ÐµÐ·Ð° : 0x%08x %08x\n"
 
-#: vms-alpha.c:7671
+#: vms-alpha.c:8589
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  Ð²ÐµÐ·Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ: 0x%08x %08x\n"
 
-#: vms-alpha.c:7674
+#: vms-alpha.c:8592
 #, c-format
 msgid "  size : %u\n"
 msgstr "  Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° : %u\n"
 
-#: vms-alpha.c:7676
+#: vms-alpha.c:8594
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ  : 0x%08x\n"
 
-#: vms-alpha.c:7680
+#: vms-alpha.c:8599
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7684
+#: vms-alpha.c:8604
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7688
+#: vms-alpha.c:8609
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7691
+#: vms-alpha.c:8612
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:7694
+#: vms-alpha.c:8616
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:7696
+#: vms-alpha.c:8619
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:7699
+#: vms-alpha.c:8622
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:8624
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:7709
+#: vms-alpha.c:8631
 #, c-format
 msgid " Shareable images:\n"
 msgstr " Ð”ÐµÑ™Ð¸Ð²Ðµ Ñ�Ð»Ð¸ÐºÐµ:\n"
 
-#: vms-alpha.c:7713
+#: vms-alpha.c:8642
 #, 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:8649
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾-Ñ€ÐµÑ‡Ð¸:\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:8655
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð´ÑƒÐ³Ðµ-Ñ€ÐµÑ‡Ð¸:\n"
 
-#: vms-alpha.c:7730
+#: vms-alpha.c:8661
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr " Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ â€ž.addressâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾-Ñ€ÐµÑ‡Ð¸:\n"
 
-#: vms-alpha.c:7735
+#: vms-alpha.c:8666
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr " Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ â€ž.addressâ€œ ÑƒÐ¿ÑƒÑ‚Ðµ Ð´ÑƒÐ³Ðµ-Ñ€ÐµÑ‡Ð¸:\n"
 
-#: vms-alpha.c:7740
+#: vms-alpha.c:8671
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr " Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ ÑƒÐ¿ÑƒÑ‚Ðµ Ð°Ð´Ñ€ÐµÑ�Ðµ ÐºÐ¾Ð´Ð°:\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:8676
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr " Ð˜Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ ÑƒÐ¿ÑƒÑ‚Ðµ Ð¿Ð°Ñ€Ð¾Ð²Ð° Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°ÑšÐ°:\n"
 
-#: vms-alpha.c:7754
+#: vms-alpha.c:8684
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " ÐŸÑ€Ð¾Ð¼ÐµÐ½Ð° Ð·Ð°ÑˆÑ‚Ð¸Ñ‚Ðµ (%u ÑƒÐ½Ð¾Ñ�Ð°):\n"
 
-#: vms-alpha.c:7759
+#: vms-alpha.c:8693
 #, 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:9570
 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:9641
+#, 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:1530
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¾Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ Ð´ÐµÑ™ÐµÐ½Ñƒ Ñ�Ð»Ð¸ÐºÑƒ â€ž%sâ€œ Ð¸Ð· â€ž%sâ€œ"
 
-#: vms-misc.c:360
+#: vms-misc.c:374
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð½ÑƒÐ»Ð° Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°"
 
-#: vms-misc.c:365
+#: vms-misc.c:379
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "â€ž_bfd_vms_output_countedâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñ�Ð° Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°"
 
-#: xcofflink.c:824
+#: xcofflink.c:462
 #, c-format
-msgid "%s: XCOFF shared object when not producing XCOFF output"
-msgstr "%s: â€žXCOFFâ€œ Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ ÐºÐ°Ð´Ð° Ñ�Ðµ Ð½Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ â€žXCOFFâ€œ Ð¸Ð·Ð»Ð°Ð·"
+msgid "%pB: warning: illegal symbol index %lu in relocs"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð°Ð½ Ð¸Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° %lu Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ¸Ð¼Ð°"
 
-#: xcofflink.c:845
+#: xcofflink.c:881
 #, c-format
-msgid "%s: dynamic object with no .loader section"
-msgstr "%s: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð±ÐµÐ· â€ž.loaderâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°"
+msgid "%pB: XCOFF shared object when not producing XCOFF output"
+msgstr "%pB: â€žXCOFFâ€œ Ð´ÐµÑ™ÐµÐ½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ ÐºÐ°Ð´Ð° Ñ�Ðµ Ð½Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸ â€žXCOFFâ€œ Ð¸Ð·Ð»Ð°Ð·"
 
-#: xcofflink.c:1404
-msgid "%B: `%s' has line numbers but no enclosing section"
-msgstr "%B: â€ž%sâ€œ Ð¸Ð¼Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ñ€ÐµÐ´Ð¾Ð²Ð° Ð°Ð»Ð¸ Ð½Ðµ Ð¸ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº"
+#: xcofflink.c:902
+#, c-format
+msgid "%pB: dynamic object with no .loader section"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð±ÐµÐ· â€ž.loaderâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°"
 
-#: xcofflink.c:1456
-msgid "%B: class %d symbol `%s' has no aux entries"
-msgstr "%B: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð¼Ð¾Ñ›Ð½Ð¸Ñ… ÑƒÐ½Ð¾Ñ�Ð°"
+#: xcofflink.c:1484
+#, c-format
+msgid "%pB: `%s' has line numbers but no enclosing section"
+msgstr "%pB: â€ž%sâ€œ Ð¸Ð¼Ð° Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ðµ Ñ€ÐµÐ´Ð¾Ð²Ð° Ð°Ð»Ð¸ Ð½Ðµ Ð¸ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº"
 
-#: xcofflink.c:1478
-msgid "%B: symbol `%s' has unrecognized csect type %d"
-msgstr "%B: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ñ†Ñ�ÐµÐºÑ‚Ð¾Ñ€Ð° â€ž%dâ€œ"
+#: xcofflink.c:1540
+#, c-format
+msgid "%pB: class %d symbol `%s' has no aux entries"
+msgstr "%pB: ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð¼Ð¾Ñ›Ð½Ð¸Ñ… ÑƒÐ½Ð¾Ñ�Ð°"
 
-#: 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:1563
+#, c-format
+msgid "%pB: symbol `%s' has unrecognized csect type %d"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð¸Ð¼Ð° Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ñƒ Ð²Ñ€Ñ�Ñ‚Ñƒ Ñ†Ñ�ÐµÐºÑ‚Ð¾Ñ€Ð° â€ž%dâ€œ"
 
-#: xcofflink.c:1519
-msgid "%B: XMC_TC0 symbol `%s' is class %d scnlen %d"
-msgstr "%B: â€žXMC_TC0â€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ ÐºÐ»Ð°Ñ�Ð° %d Ñ�Ñ†Ð½Ð´ÑƒÐ¶Ð¸Ð½Ðµ %d"
+#: xcofflink.c:1576
+#, 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:1665
-msgid "%B: csect `%s' not in enclosing section"
-msgstr "%B: Ñ†-Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›ÐµÐ¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+#: xcofflink.c:1607
+#, c-format
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
+msgstr "%pB: â€žXMC_TC0â€œ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ˜Ðµ ÐºÐ»Ð°Ñ�Ð° %d scn-Ð´ÑƒÐ¶Ð¸Ð½Ðµ %<PRIu64>"
+
+#: xcofflink.c:1742
+#, c-format
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr "%pB: ÑƒÐ½Ð¾Ñ� Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° â€ž%sâ€œ Ð¸Ð¼Ð° â€žR_TLSMLâ€œ-Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÐºÐ¾Ñ˜Ðµ Ð½Ðµ Ñ†Ð¸Ñ™Ð° Ð½Ð° Ñ�ÐµÐ±Ðµ Ñ�Ð°Ð¼Ð¾Ð³"
+
+#: xcofflink.c:1776
+#, c-format
+msgid "%pB: csect `%s' not in enclosing section"
+msgstr "%pB: Ñ†-Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð·Ð°Ñ‚Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›ÐµÐ¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#: xcofflink.c:1885
+#, c-format
+msgid "%pB: misplaced XTY_LD `%s'"
+msgstr "%pB: Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ â€žXTY_LDâ€œ â€ž%sâ€œ"
 
-#: xcofflink.c:1772
-msgid "%B: misplaced XTY_LD `%s'"
-msgstr "%B: Ð»Ð¾ÑˆÐµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ â€žXTY_LDâ€œ â€ž%sâ€œ"
+#: xcofflink.c:2228
+#, c-format
+msgid "%pB: reloc %s:%<PRId64> not in csect"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s:%<PRId64>â€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ†-Ð¾Ð´ÐµÑ™ÐºÑƒ"
 
-#: xcofflink.c:2091
-msgid "%B: reloc %s:%d not in csect"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%s:%dâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ñ†-Ð¾Ð´ÐµÑ™ÐºÑƒ"
+#: xcofflink.c:3337
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¸Ð·Ð²ÐµÐ·ÐµÐ¼ ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ."
 
-#: xcofflink.c:3182
+#: xcofflink.c:3385
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: Ð½ÐµÐ¼Ð° Ñ‚Ð°ÐºÐ²Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
 
-#: xcofflink.c:3287
+#: xcofflink.c:3494
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ð¾ÐºÑƒÑˆÐ°Ñ˜ Ð¸Ð·Ð²Ð¾Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
 
-#: xcofflink.c:3666
+#: xcofflink.c:3842
 msgid "error: undefined symbol __rtinit"
 msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž__rtinitâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: xcofflink.c:4045
-msgid "%B: loader reloc in unrecognized section `%s'"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
+#: xcofflink.c:4855
+#, c-format
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr "%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ñ†-Ð¾Ð´ÐµÑ™ÐºÐ° Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ñƒ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð½Ð° %#<PRIx64> ÐºÐ¾Ñ˜Ð¸ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑ˜Ðµ Ð½Ð° â€ž%sâ€œ"
+
+#: xcofflink.c:4884
+#, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr "%pB: Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ"
+
+#: xcofflink.c:5004
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° Ð·Ð° Ð²Ñ€ÐµÐ¼Ðµ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ°; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°"
+
+#: xcofflink.c:5072
+#, c-format
+msgid "%pB: loader reloc in unrecognized section `%s'"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
+
+#: xcofflink.c:5084
+#, c-format
+msgid "%pB: `%s' in loader reloc but not loader sym"
+msgstr "%pB: â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð°"
+
+#: xcofflink.c:5101
+#, c-format
+msgid "%pB: loader reloc in read-only section %pA"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ â€ž%pAâ€œ"
+
+#: xcofflink.c:6180
+#, c-format
+msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling"
+msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°: %#<PRIx64> > 0x10000; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°"
+
+#: xcofflink.c:7296
+#, c-format
+msgid "Unable to link input file: %s"
+msgstr "Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ ÑƒÐ»Ð°Ð·Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÑƒ: %s"
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr "Ð�Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° ÑƒÑ‡Ð¸Ñ‚Ð°Ð¼ DLL."
+
+#: xtensa-dynconfig.c:86
+#, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr "â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð°Ð»Ð¸ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ñ‚Ð¸: %s"
+
+#: xtensa-dynconfig.c:102
+#, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr "â€ž%sâ€œ Ñ˜Ðµ ÑƒÑ‡Ð¸Ñ‚Ð°Ð½Ð¾ Ð°Ð»Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾: %s"
+
+#: xtensa-dynconfig.c:115
+#, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr "â€ž%sâ€œ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾ Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ° Ð¿Ñ€Ð¸ÐºÑ™ÑƒÑ‡ÐºÐ° Ð¸Ñ�ÐºÑ™ÑƒÑ‡ÐµÐ½Ð°"
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2878 elfnn-riscv.c:5739
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ: 0x%02x"
+
+#: elfnn-aarch64.c:5468
+#, c-format
+msgid "%pB: error: erratum 835769 stub out of range (input file too large)"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ 835769 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)"
+
+#: elfnn-aarch64.c:5560
+#, c-format
+msgid "%pB: error: erratum 843419 stub out of range (input file too large)"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾ÐºÑ€Ð°Ñ˜Ð°Ðº Ð³Ñ€ÐµÑˆÐºÐµ 843419 Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°)"
+
+#: elfnn-aarch64.c:5573
+#, c-format
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾Ð³Ñ€ÐµÑˆÐºÐ° 843419 Ð½ÐµÐ¿Ð¾Ñ�Ñ€ÐµÐ´Ð½Ð¾ 0x%<PRIx64> Ñ˜Ðµ Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð° Ð·Ð° Ð�Ð”Ð  (ÑƒÐ»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ°) Ð¸ ÐºÐ¾Ñ€Ð¸ÑˆÑ›ÐµÐ½Ð¾ Ñ˜Ðµ â€ž--fix-cortex-a53-843419=Ð°Ð´Ñ€â€œ.  Ð¢Ð°ÐºÐ¾ Ð´Ð° Ð¿Ð¾ÐºÑ€ÐµÑ›ÐµÐ¼ Ð¿Ð¾Ð²ÐµÐ·Ð¸Ð²Ð°Ñ‡Ð° Ñ�Ð° â€ž--fix-cortex-a53-843419=fullâ€œ"
+
+#: elfnn-aarch64.c:6116
+#, 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:6136
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr "%pB: ÑƒÑ�Ð»Ð¾Ð²Ð½Ð° Ð³Ñ€Ð°Ð½Ð° Ð·Ð° Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð°"
+
+#: elfnn-aarch64.c:6224 elfnn-kvx.c:2381
+#, c-format
+msgid "%pB: local symbol descriptor table be NULL when applying relocation %s against local symbol"
+msgstr "%pB: Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¾Ð¿Ð¸Ñ�Ð½Ð¸ÐºÐ° Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° Ð±Ð¸Ñ›Ðµ â€žNULLâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ðµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elfnn-aarch64.c:6338 elfnn-aarch64.c:6375
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: â€žTLSâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ"
+
+#: elfnn-aarch64.c:7366
+msgid "too many GOT entries for -fpic, please recompile with -fPIC"
+msgstr "Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ â€žGOTâ€œ ÑƒÐ½Ð¾Ñ�Ð° Ð·Ð° â€ž-fpicâ€œ, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ"
+
+#: elfnn-aarch64.c:7394
+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 "Ñ˜ÐµÐ´Ð°Ð½ Ð¾Ð´ Ð¼Ð¾Ð³ÑƒÑ›Ð¸Ñ… Ñ€Ð°Ð·Ð»Ð¾Ð³Ð° Ð¾Ð²Ðµ Ð³Ñ€ÐµÑˆÐºÐµ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ Ð´Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÐ¿ÑƒÑ‚Ð°Ð½ Ñƒ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼ ÐºÐ¾Ð´Ñƒ Ð¸Ð¼Ð° Ð²ÐµÑ›Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð½ÐµÐ³Ð¾ ÑˆÑ‚Ð¾ Ñ˜Ðµ Ð¾Ð±Ñ˜Ð°Ð²Ñ™ÐµÐ½Ð¾ Ñ‚Ð°Ð¼Ð¾ Ð³Ð´Ðµ Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½"
 
-#: xcofflink.c:4056
-msgid "%B: `%s' in loader reloc but not loader sym"
-msgstr "%B: â€ž%sâ€œ Ñ˜Ðµ Ñƒ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÑƒ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ð°Ð»Ð¸ Ð½Ð¸Ñ˜Ðµ Ñ�Ð¸Ð¼Ð±Ð¾Ð» ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð°"
+#: elfnn-aarch64.c:7961
+#, c-format
+msgid "%pB: relocation %s against `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: elfnn-aarch64.c:8922
+#, c-format
+msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr "%F%P: %pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÐ¼Ð½Ð¾ÑˆÐºÐ° Ð·Ð° Ð½ÐµÑƒÐ¼Ð½Ð¾Ð¶Ð¸Ð²Ð¸ Ð·Ð°ÑˆÑ‚Ð¸Ñ›ÐµÐ½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ\n"
+
+#: elfnn-kvx.c:929
+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"
+
+#: elfnn-kvx.c:2126
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ â€ž%sâ€œ"
+
+#: elfnn-kvx.c:2850
+#, c-format
+msgid "%s: Bad ELF id: `%d'"
+msgstr "%s: Ð›Ð¾Ñˆ ELF Ð¸Ð´: â€ž%dâ€œ"
+
+#: elfnn-kvx.c:2905
+#, c-format
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 32-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 64-Ð±Ð¸Ñ‚Ð½Ð¸"
+
+#: elfnn-kvx.c:2908
+#, c-format
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ñ˜Ðµ ÐºÐ°Ð¾ 64-Ð±Ð¸Ñ‚Ð½Ð¸ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚ Ð° â€ž%sâ€œ Ñ˜Ðµ 32-Ð±Ð¸Ñ‚Ð½Ð¸"
+
+#: elfnn-kvx.c:2910
+#, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸ Ñ†Ð¸Ñ™Ð° â€ž%sâ€œ"
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:2998
+#, c-format
+msgid "Private flags = 0x%lx : "
+msgstr "ÐŸÑ€Ð¸Ð²Ð°Ñ‚Ð½Ðµ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ = 0x%lx: "
+
+#: elfnn-kvx.c:3002
+#, c-format
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr "Coolidge (kv3) V1 64 Ð±Ð¸Ñ‚Ð°"
+
+#: elfnn-kvx.c:3004
+#, c-format
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr "Coolidge (kv3) V2 64 Ð±Ð¸Ñ‚Ð°"
+
+#: elfnn-kvx.c:3006
+#, c-format
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr "Coolidge (kv4) V1 64 Ð±Ð¸Ñ‚Ð°"
+
+#: elfnn-kvx.c:3011
+#, c-format
+msgid "Coolidge (kv3) V1 32 bits"
+msgstr "Coolidge (kv3) V1 32 Ð±Ð¸Ñ‚Ð°"
+
+#: elfnn-kvx.c:3013
+#, c-format
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr "Coolidge (kv3) V2 32 Ð±Ð¸Ñ‚Ð°"
 
-#: xcofflink.c:4072
-msgid "%B: loader reloc in read-only section %A"
-msgstr "%B: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ ÑƒÑ‚Ð¾Ð²Ð°Ñ€Ð¸Ð²Ð°Ñ‡Ð° Ñƒ Ð¾Ð´ÐµÑ™ÐºÑƒ Ñ�Ð°Ð¼Ð¾ Ð·Ð° Ñ‡Ð¸Ñ‚Ð°ÑšÐµ â€ž%Aâ€œ"
+#: elfnn-kvx.c:3015
+#, c-format
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr "Coolidge (kv4) V1 32 Ð±Ð¸Ñ‚Ð°"
 
-#: xcofflink.c:5094
+#: elfnn-kvx.c:3847
 #, c-format
-msgid "TOC overflow: 0x%lx > 0x10000; try -mminimal-toc when compiling"
-msgstr "ÐŸÑ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ‚Ð°Ð±ÐµÐ»Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°: 0x%lx > 0x10000; Ð¿Ñ€Ð¾Ð±Ð°Ñ˜Ñ‚Ðµ Ñ�Ð° â€ž-mminimal-tocâ€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ð¿Ñ€ÐµÐ²Ð¾Ñ’ÐµÑšÐ°"
+msgid "relocation against `%s' has faulty GOT type "
+msgstr "Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° â€ž%sâ€œ Ð¸Ð¼Ð° Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ GOT Ð²Ñ€Ñ�Ñ‚Ñƒ "
 
-#: peigen.c:1009 pepigen.c:1009 pex64igen.c:1009
+#: elfnn-loongarch.c:294 elfnn-loongarch.c:346
 #, c-format
-msgid "%s: line number overflow: 0x%lx > 0xffff"
-msgstr "%s: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff"
+msgid "%#<PRIx64> invaild imm"
+msgstr "%#<PRIx64> Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ â€žimmâ€œ"
+
+#: elfnn-loongarch.c:528 elfnn-riscv.c:4182
+#, 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-loongarch.c:583
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ Ð´Ñ€ÑƒÐ³Ð°Ñ‡Ð¸Ñ˜Ð¸ â€žABIâ€œ Ð¾Ð±Ñ˜ÐµÐºÐ°Ñ‚."
+
+#: elfnn-loongarch.c:726
+msgid "Internal error: unreachable."
+msgstr "Ð£Ð½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð¸Ð¶Ð½Ð¾."
 
-#: peigen.c:1036 pepigen.c:1036 pex64igen.c:1036
+#: elfnn-loongarch.c:906
+#, c-format
+msgid "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s"
+msgstr "%pB:(%pA+%#lx): Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€ž%sâ€œ Ð·Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° â€ž%sâ€œ; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž%s%sâ€œ"
+
+#: elfnn-loongarch.c:910
+msgid " and check the symbol visibility"
+msgstr " Ð¸ Ð¿Ñ€Ð¾Ð²ÐµÑ€Ð°Ð²Ð° Ð²Ð¸Ð´Ñ™Ð¸Ð²Ð¾Ñ�Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°"
+
+#: elfnn-loongarch.c:1036
+#, c-format
+msgid "%pB: stack based reloc type (%u) is not supported with -z pack-relative-relocs"
+msgstr "%pB: Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð½Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñƒ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ° (%u) Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ñ�Ð° â€ž-z pack-relative-relocsâ€œ"
+
+#: elfnn-loongarch.c:1231
+#, c-format
+msgid "%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°Ñ˜ â€žR_LARCH_32â€œ Ð·Ð° Ð½Ðµ-Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¸ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ â€žELFCLASS64â€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° Ð¸Ð»Ð¸ IPE"
+
+#: elfnn-loongarch.c:1296
+#, c-format
+msgid "%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary"
+msgstr "%pB: R_LARCH_ALIGN Ñ�Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜ÐµÐ¼ %<PRId64> Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð¾ Ð½Ð° Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ"
+
+#: elfnn-loongarch.c:4174
+msgid "cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)"
+msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ€ÐµÑˆÐ¸Ð¼ â€žR_LARCH_PCREL20_S2â€œ Ð·Ð° Ð½ÐµÐ¾Ð´Ñ€ÐµÑ’ÐµÐ½Ð¾ Ñ�Ð»Ð°Ð± Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ Ð²Ð°Ð½ [-2048, 2048)"
+
+#: elfnn-loongarch.c:4684
+msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'"
+msgstr "Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€žgcc -mno-relaxâ€œ Ð¸Ð»Ð¸ â€žas -mno-relaxâ€œ Ð¸Ð»Ð¸ â€žld --no-relaxâ€œ"
+
+#: elfnn-loongarch.c:5301 elfnn-riscv.c:4967
+#, 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> Ñ˜Ðµ Ð¿Ñ€Ð¸Ñ�ÑƒÑ‚Ð½Ð¾"
+
+#: elfnn-riscv.c:329 elfnn-riscv.c:364
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žRVE PLTâ€œ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾"
+
+#: elfnn-riscv.c:927
+#, c-format
+msgid "%pB: relocation %s against absolute symbol `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: elfnn-riscv.c:969
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ â€žRV32â€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: elfnn-riscv.c:1898
+#, c-format
+msgid "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "ÐºÑ€Ð°Ñ˜ÑšÐ° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€žuleb128â€œ Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ 0x%lx Ñƒ â€ž%pAâ€œ Ð¸Ð· â€ž%pBâ€œ Ð¿Ñ€ÐµÐ¼Ð°ÑˆÑƒÑ˜Ðµ Ñ€Ð°Ñ�Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ð²Ð¸ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€"
+
+#: elfnn-riscv.c:2140
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr "â€ž%pcrel_loâ€œ-Ñƒ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ Ð¿Ð¾Ð´ÑƒÐ´Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ â€ž%pcrel_hiâ€œ"
+
+#: elfnn-riscv.c:2143
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "â€ž%pcrel_loâ€œ Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼ Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½Ð¾ Ð·Ð° â€žR_RISCV_GOT_HI20â€œ"
+
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2148
+#, c-format
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr "â€ž%%pcrel_loâ€œ Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼, Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚ Ð·Ð° â€ž%%pcrel_hiâ€œ Ñ˜Ðµ 0x%<PRIx64> Ð±ÐµÐ· Ð¸ÐºÐ°ÐºÐ²Ð¾Ð³ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ°, Ð°Ð»Ð¸ Ð¼Ð¾Ð¶Ðµ Ð±Ð¸Ñ‚Ð¸ 0x%<PRIx64> Ð½Ð°ÐºÐ¾Ð½ Ð´Ð¾Ð´Ð°Ð²Ð°ÑšÐ° â€ž%%pcrel_loâ€œ Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ°"
+
+#: elfnn-riscv.c:2156
+#, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr "â€ž%pcrel_loâ€œ Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
+
+#: elfnn-riscv.c:2639
+#, c-format
+msgid "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up"
+msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žR_RISCV_SUB_ULEB128â€œ Ñ�Ð° Ð½Ðµ-Ð½ÑƒÐ»Ñ‚Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð¼, Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¸Ð·Ð³Ñ€Ð°Ð´Ð¸Ñ‚Ðµ binutils-Ð¾Ð¼ 2.42 Ð¸Ð»Ð¸ Ð²ÐµÑ›Ð¸Ð¼"
+
+#: elfnn-riscv.c:2719
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "Ð¡Ð°Ð±Ð¸Ñ€Ð°Ðº Ð½Ð¸Ñ˜Ðµ Ð´Ð¾Ð·Ð²Ð¾Ñ™ÐµÐ½ Ð·Ð° â€žR_RISCV_GOT_HI20â€œ"
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:2820
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ â€ž%sâ€œ ÐºÐ¾Ñ˜Ð° Ñ�Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ð²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð¿Ð¾Ñ™Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ñ�Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°; Ð¿Ð¾Ð½Ð¾Ð²Ð¾ Ð¿Ñ€ÐµÐ²ÐµÐ´Ð¸Ñ‚Ðµ Ñ�Ð° â€ž-fPICâ€œ\n"
+
+#: elfnn-riscv.c:2902
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%pcrel_loâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
+
+#: elfnn-riscv.c:2923
+#, c-format
+msgid "%tlsdesc_lo with addend"
+msgstr "â€ž%tlsdesc_loâ€œ Ñ�Ð° Ñ�Ð°Ð±Ð¸Ñ€ÐºÐ¾Ð¼"
+
+#: elfnn-riscv.c:3156
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: Ð½ÐµÑ€ÐµÑˆÐ¸Ð²Ð¾ â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ\n"
+
+#: elfnn-riscv.c:3191
+msgid "%X%P: internal error: out of range error\n"
+msgstr "%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¸Ð·Ð²Ð°Ð½ Ð¾Ð¿Ñ�ÐµÐ³Ð°\n"
+
+#: elfnn-riscv.c:3196
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾\n"
+
+#: elfnn-riscv.c:3202
+msgid "dangerous relocation error"
+msgstr "Ð¾Ð¿Ð°Ñ�Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ"
+
+#: elfnn-riscv.c:3208
+msgid "%X%P: internal error: unknown error\n"
+msgstr "%X%P: ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð³Ñ€ÐµÑˆÐºÐ°\n"
+
+#: elfnn-riscv.c:3785
+#, 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:3828
+#, c-format
+msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ð° ISA Ð½Ð¸Ñ�ÐºÐ° Ð·Ð° Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ â€ž%sâ€œ Ð¸ â€ž%sâ€œ"
+
+#: elfnn-riscv.c:3965
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: ISA Ð½Ð¸Ñ�ÐºÐ° ÑƒÐ»Ð°Ð·Ð° (%s) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ (%s)"
+
+#: elfnn-riscv.c:3985
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: â€žXLENâ€œ Ð½Ð¸Ñ�ÐºÐ° ÑƒÐ»Ð°Ð·Ð° (%u) Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð¸Ð·Ð»Ð°Ð·Ñƒ (%u)"
+
+#: elfnn-riscv.c:3993
+#, c-format
+msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation"
+msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð¾ â€žXLENâ€œ (%u), Ð¼Ð¾Ð¶Ð´Ð° ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ðµ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ½Ñƒ ÐµÐ¼ÑƒÐ»Ð°Ñ†Ð¸Ñ˜Ñƒ"
+
+#: elfnn-riscv.c:4113
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¾Ð²Ð°Ð½Ð¾ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐµ 1.9.1 Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ð¾Ð²ÐµÐ·Ð°Ñ‚Ð¸ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¸Ð¼ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐ¸Ð¼Ð°"
+
+#: elfnn-riscv.c:4141
+#, 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:4238
+#, c-format
+msgid "%pB: can't link %s modules with %s modules"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ðµ Ñ�Ð° â€ž%sâ€œ Ð¼Ð¾Ð´ÑƒÐ»Ð¸Ð¼Ð°"
+
+#: elfnn-riscv.c:4248
+#, c-format
+msgid "%pB: can't link RVE with other target"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð²ÐµÐ¶ÐµÐ¼ â€žRVEâ€œ Ñ�Ð° Ð´Ñ€ÑƒÐ³Ð¾Ð¼ Ð¼ÐµÑ‚Ð¾Ð¼"
+
+#: elfnn-riscv.c:4272
+#, c-format
+msgid "warning: %pB: unknown RISCV ABI object attribute %d"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ â€ž%dâ€œ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð° â€žRISCV ABIâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð·Ð½Ð°Ñ‚"
+
+#: elfnn-riscv.c:969
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object"
+msgstr "%pB: Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ â€ž%sâ€œ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð½ÐµÐ°Ð¿Ñ�Ð¾Ð»ÑƒÑ‚Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð° â€ž%sâ€œ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ â€žRV64â€œ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÐ° Ð´ÐµÑ™ÐµÐ½Ð¾Ð³ Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð°"
+
+#: peXXigen.c:161
+#, c-format
+msgid "%pB: unable to find name for empty section"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð½Ð°Ð·Ð¸Ð² Ð·Ð° Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:188
+#, c-format
+msgid "%pB: out of memory creating name for empty section"
+msgstr "%pB: Ð¿Ð¾Ð½ÐµÑ�Ñ‚Ð°Ð»Ð¾ Ñ˜Ðµ Ð¼ÐµÐ¼Ð¾Ñ€Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸ Ñ�Ñ‚Ð²Ð°Ñ€Ð°ÑšÑƒ Ð½Ð°Ð·Ð¸Ð²Ð° Ð·Ð° Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:199
+#, c-format
+msgid "%pB: unable to create fake empty section"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ Ð»Ð°Ð¶Ð½Ð¸ Ð¿Ñ€Ð°Ð·Ð°Ð½ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:924
+#, c-format
+msgid "%pB:%.8s: section below image base"
+msgstr "%pB:%.8s: Ð¾Ð´ÐµÑ™Ð°Ðº Ð¸Ñ�Ð¿Ð¾Ð´ Ð¾Ñ�Ð½Ð¾Ð²Ðµ Ñ�Ð»Ð¸ÐºÐµ"
+
+#: peXXigen.c:929
+#, c-format
+msgid "%pB:%.8s: RVA truncated"
+msgstr "%pB:%.8s: â€žRVAâ€œ Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¾"
+
+#: peXXigen.c:1061
+#, c-format
+msgid "%pB: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ Ð±Ñ€Ð¾Ñ˜Ð° Ñ€ÐµÐ´Ð¾Ð²Ð°: 0x%lx > 0xffff"
+
+#: peXXigen.c:1227
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·Ð²Ð¾Ð·Ð° [â€ž.edataâ€œ (Ð¸Ð»Ð¸ Ñ‚Ð°Ð¼Ð¾ Ð³Ð´Ðµ Ñ�Ð¼Ð¾ Ð³Ð° Ð½Ð°ÑˆÐ»Ð¸)]"
 
-#: peigen.c:1037 pepigen.c:1037 pex64igen.c:1037
+#: peXXigen.c:1228
 msgid "Import Directory [parts of .idata]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° [Ð´ÐµÐ¾ â€ž.idataâ€œ]"
 
-#: peigen.c:1038 pepigen.c:1038 pex64igen.c:1038
+#: peXXigen.c:1229
 msgid "Resource Directory [.rsrc]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ð° [.rsrc]"
 
-#: peigen.c:1039 pepigen.c:1039 pex64igen.c:1039
+#: peXXigen.c:1230
 msgid "Exception Directory [.pdata]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¸Ð·ÑƒÐ·ÐµÑ‚Ð°ÐºÐ° [.pdata]"
 
-#: peigen.c:1040 pepigen.c:1040 pex64igen.c:1040
+#: peXXigen.c:1231
 msgid "Security Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð±ÐµÐ·Ð±ÐµÐ´Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#: peigen.c:1041 pepigen.c:1041 pex64igen.c:1041
+#: peXXigen.c:1232
 msgid "Base Relocation Directory [.reloc]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¾Ñ�Ð½Ð¾Ð²Ðµ [.reloc]"
 
-#: peigen.c:1042 pepigen.c:1042 pex64igen.c:1042
+#: peXXigen.c:1233
 msgid "Debug Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°"
 
-#: peigen.c:1043 pepigen.c:1043 pex64igen.c:1043
+#: peXXigen.c:1234
 msgid "Description Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð¿Ð¸Ñ�Ð°"
 
-#: peigen.c:1044 pepigen.c:1044 pex64igen.c:1044
+#: peXXigen.c:1235
 msgid "Special Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ñ�ÐµÐ±Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#: peigen.c:1045 pepigen.c:1045 pex64igen.c:1045
+#: peXXigen.c:1236
 msgid "Thread Storage Directory [.tls]"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ñ�Ð¼ÐµÑˆÑ‚Ð°Ñ˜Ð° Ð½Ð¸Ñ‚Ð¸ [.tls]"
 
-#: peigen.c:1046 pepigen.c:1046 pex64igen.c:1046
+#: peXXigen.c:1237
 msgid "Load Configuration Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ð´ÐµÑˆÐ°Ð²Ð°ÑšÐ° ÑƒÑ‡Ð¸Ñ‚Ð°Ð²Ð°ÑšÐ°"
 
-#: peigen.c:1047 pepigen.c:1047 pex64igen.c:1047
+#: peXXigen.c:1238
 msgid "Bound Import Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ ÑƒÐ²Ð¾Ð·Ð° Ñ�Ð²ÐµÐ·Ð°"
 
-#: peigen.c:1048 pepigen.c:1048 pex64igen.c:1048
+#: peXXigen.c:1239
 msgid "Import Address Table Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ñ‚Ð°Ð±ÐµÐ»Ðµ ÑƒÐ²Ð¾Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ"
 
-#: peigen.c:1049 pepigen.c:1049 pex64igen.c:1049
+#: peXXigen.c:1240
 msgid "Delay Import Directory"
 msgstr "Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð·Ð°Ñ�Ñ‚Ð¾Ñ˜Ð° ÑƒÐ²Ð¾Ð·Ð°"
 
-#: peigen.c:1050 pepigen.c:1050 pex64igen.c:1050
+#: peXXigen.c:1241
 msgid "CLR Runtime Header"
 msgstr "Ð—Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð¦Ð›Ð  Ð¸Ð·Ð²Ñ€ÑˆÐ°Ð²Ð°ÑšÐ°"
 
-#: peigen.c:1051 pepigen.c:1051 pex64igen.c:1051
+#: peXXigen.c:1242
 msgid "Reserved"
 msgstr "Ð ÐµÐ·ÐµÑ€Ð²Ð¸Ñ�Ð°Ð½Ð¾"
 
-#: peigen.c:1111 pepigen.c:1111 pex64igen.c:1111
+#: peXXigen.c:1307
 #, c-format
 msgid ""
 "\n"
@@ -6241,39 +9377,25 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸\n"
 
-#: peigen.c:1116 pepigen.c:1116 pex64igen.c:1116
-#, c-format
-msgid ""
-"\n"
-"There is an import table in %s at 0x%lx\n"
-msgstr ""
-"\n"
-"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx\n"
-
-#: peigen.c:1158 pepigen.c:1158 pex64igen.c:1158
+#: peXXigen.c:1313
 #, c-format
 msgid ""
 "\n"
-"Function descriptor located at the start address: %04lx\n"
+"There is an import table in %s, but that section has no contents\n"
 msgstr ""
 "\n"
-"ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸: %04lx\n"
-
-#: peigen.c:1161 pepigen.c:1161 pex64igen.c:1161
-#, c-format
-msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
-msgstr "\tÑ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° %08lx ÐºÐ¾Ð´Ð½Ðµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ (ÑƒÑ‡Ð¸Ñ‚Ñ™Ð¸Ð²Ð°/Ð°ÐºÑ‚ÑƒÐµÐ»Ð½Ð°) %08lx/%08lx\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
 
-#: peigen.c:1169 pepigen.c:1169 pex64igen.c:1169
+#: peXXigen.c:1320
 #, c-format
 msgid ""
 "\n"
-"No reldata section! Function descriptor not decoded.\n"
+"There is an import table in %s at 0x%lx\n"
 msgstr ""
 "\n"
-"Ð�ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°! ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½.\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° ÑƒÐ²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx\n"
 
-#: peigen.c:1174 pepigen.c:1174 pex64igen.c:1174
+#: peXXigen.c:1326
 #, c-format
 msgid ""
 "\n"
@@ -6282,7 +9404,7 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±ÐµÐ»Ðµ ÑƒÐ²Ð¾Ð·Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)\n"
 
-#: peigen.c:1177 pepigen.c:1177 pex64igen.c:1177
+#: peXXigen.c:1329
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -6291,21 +9413,21 @@ msgstr ""
 " vma:            Ð�Ð°Ñ˜Ð°Ð²Ð°    Ð’Ñ€ÐµÐ¼Ðµ     Ð�Ð°Ð¿Ñ€ÐµÐ´    Ð”Ð›Ð›       ÐŸÑ€Ð²Ð¸\n"
 "                 Ð¢Ð°Ð±ÐµÐ»Ð°   ÐžÑ‚Ð¸Ñ�Ð°Ðº  Ð›Ð°Ð½Ð°Ñ†   Ð�Ð°Ð·Ð¸Ð²       ÐŸÐ¾Ñ‚Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼\n"
 
-#: peigen.c:1225 pepigen.c:1225 pex64igen.c:1225
+#: peXXigen.c:1378
 #, 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:1394
 #, c-format
-msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
-msgstr "\tvma:  Ð�Ð°Ñ˜Ð°Ð²Ð°/Ð ÐµÐ´Ð½Ð¸ Ð�Ð°Ð·Ð¸Ð² Ñ‡Ð»Ð°Ð½Ð° Ð¡Ð²ÐµÐ·Ð°Ð½-Ð·Ð°\n"
+msgid "\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"
+msgstr "\tvma:     Ð ÐµÐ´Ð½Ð¸  Ð�Ð°Ñ˜Ð°Ð²Ð°  Ð�Ð°Ð·Ð¸Ð²_Ñ‡Ð»Ð°Ð½Ð°  Ð¡Ð²ÐµÐ·Ð°Ð½-Ð·Ð°\n"
 
-#: peigen.c:1261 pepigen.c:1261 pex64igen.c:1261
+#: peXXigen.c:1419
 #, c-format
 msgid ""
 "\n"
@@ -6314,7 +9436,12 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð¿Ñ€Ð²Ð¸ Ð¿Ð¾Ñ‚Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð³Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸\n"
 
-#: peigen.c:1423 pepigen.c:1423 pex64igen.c:1423
+#: peXXigen.c:1469 peXXigen.c:1514
+#, c-format
+msgid "\t<corrupt: 0x%08lx>"
+msgstr "\t<Ð¾ÑˆÑ‚ÐµÑ›ÐµÑšÐµ: 0x%08lx>"
+
+#: peXXigen.c:1608
 #, c-format
 msgid ""
 "\n"
@@ -6323,16 +9450,25 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ñ˜Ðµ Ñ�Ð°Ð´Ñ€Ð¶Ð¸\n"
 
-#: peigen.c:1432 pepigen.c:1432 pex64igen.c:1432
+#: peXXigen.c:1621
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it does not fit into that section\n"
+"There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 "\n"
-"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ñ‚Ð°Ð½Ðµ Ñƒ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ˜Ðµ Ð¿Ñ€ÐµÐ¼Ð°Ð»Ð° (%d)\n"
 
-#: peigen.c:1438 pepigen.c:1438 pex64igen.c:1438
+#: peXXigen.c:1629
+#, c-format
+msgid ""
+"\n"
+"There is an export table in %s, but contents cannot be read\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ñ�Ðµ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸\n"
+
+#: peXXigen.c:1635
 #, c-format
 msgid ""
 "\n"
@@ -6341,7 +9477,7 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ Ð½Ð° 0x%lx\n"
 
-#: peigen.c:1466 pepigen.c:1466 pex64igen.c:1466
+#: peXXigen.c:1666
 #, c-format
 msgid ""
 "\n"
@@ -6352,67 +9488,67 @@ msgstr ""
 "Ð¢Ð°Ð±ÐµÐ»Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ)\n"
 "\n"
 
-#: peigen.c:1470 pepigen.c:1470 pex64igen.c:1470
+#: peXXigen.c:1670
 #, 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:1673
 #, 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:1677
 #, 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:1680
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Ð�Ð°Ð·Ð¸Ð² \t\t\t\t"
 
-#: peigen.c:1485 pepigen.c:1485 pex64igen.c:1485
+#: peXXigen.c:1691
 #, c-format
 msgid "Ordinal Base \t\t\t%ld\n"
-msgstr "Ñ�ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°\t\t%ld\n"
+msgstr "ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð° \t\t\t%ld\n"
 
-#: peigen.c:1488 pepigen.c:1488 pex64igen.c:1488
+#: peXXigen.c:1694
 #, c-format
 msgid "Number in:\n"
 msgstr "Ð‘Ñ€Ð¾Ñ˜ ÑƒÐ»Ð°Ð·Ð°:\n"
 
-#: peigen.c:1491 pepigen.c:1491 pex64igen.c:1491
+#: peXXigen.c:1697
 #, c-format
 msgid "\tExport Address Table \t\t%08lx\n"
-msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° \t\t%08lx\n"
+msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° \t                %08lx\n"
 
-#: peigen.c:1495 pepigen.c:1495 pex64igen.c:1495
+#: peXXigen.c:1701
 #, 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:1704
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð°\n"
 
-#: peigen.c:1501 pepigen.c:1501 pex64igen.c:1501
+#: peXXigen.c:1707
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° \t\t"
 
-#: peigen.c:1506 pepigen.c:1506 pex64igen.c:1506
+#: peXXigen.c:1712
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ð½Ð°Ð·Ð¸Ð²Ð° Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° \t\t"
 
-#: peigen.c:1511 pepigen.c:1511 pex64igen.c:1511
+#: peXXigen.c:1717
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tÐ¢Ð°Ð±ÐµÐ»Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° \t\t\t"
 
-#: peigen.c:1525 pepigen.c:1525 pex64igen.c:1525
+#: peXXigen.c:1731
 #, c-format
 msgid ""
 "\n"
@@ -6421,35 +9557,63 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±ÐµÐ»Ð° Ð°Ð´Ñ€ÐµÑ�Ðµ Ð¸Ð·Ð²Ð¾Ð·Ð° â€”â€” ÐžÑ�Ð½Ð¾Ð²Ð° Ñ€ÐµÐ´Ð½Ð¸Ñ… Ð±Ñ€Ð¾Ñ˜ÐµÐ²Ð° %ld\n"
 
-#: peigen.c:1544 pepigen.c:1544 pex64igen.c:1544
+#: peXXigen.c:1741
+#, 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:1760
 msgid "Forwarder RVA"
-msgstr "RVA Ð¿Ñ€ÐµÐ¾Ñ�Ð»ÐµÑ’Ð¸Ð²Ð°Ñ‡Ð°"
+msgstr "â€žRVAâ€œ Ð¿Ñ€Ð¾Ñ�Ð»ÐµÑ’Ð¸Ð²Ð°Ñ‡Ð°"
 
-#: peigen.c:1555 pepigen.c:1555 pex64igen.c:1555
+#: peXXigen.c:1772
 msgid "Export RVA"
-msgstr "RVA Ð¸Ð·Ð²Ð¾Ð·Ð°"
+msgstr "â€žRVAâ€œ Ð¸Ð·Ð²Ð¾Ð·Ð°"
 
-#: peigen.c:1562 pepigen.c:1562 pex64igen.c:1562
+#: peXXigen.c:1779
 #, c-format
 msgid ""
 "\n"
-"[Ordinal/Name Pointer] Table\n"
+"[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"
 msgstr ""
 "\n"
-"Ð¢Ð°Ð±ÐµÐ»Ð° [Ð ÐµÐ´Ð½Ð¸/Ð�Ð°Ð·Ð¸Ð² Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð°]\n"
+"[Ð ÐµÐ´Ð½Ð¸/Ð�Ð°Ð·Ð¸Ð² ÐŸÐ¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡] Ð¢Ð°Ð±ÐµÐ»Ð° â€“ Ð ÐµÐ´Ð½Ð¸ ÐžÑ�Ð½Ð¾Ð²Ð° %ld\n"
+
+#: peXXigen.c:1789
+#, 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:1796
+#, 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:1622 peigen.c:1805 pepigen.c:1622 pepigen.c:1805 pex64igen.c:1622
-#: pex64igen.c:1805
+#: peXXigen.c:1810
 #, c-format
-msgid "Warning, .pdata section size (%ld) is not a multiple of %d\n"
-msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d\n"
+msgid "\t[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>\n"
+msgstr "\t[%4ld] +base[%4ld]  %04lx <Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜: %lx>\n"
 
-#: peigen.c:1629 pepigen.c:1629 pex64igen.c:1629
+#: peXXigen.c:1867 peXXigen.c:2037
+#, c-format
+msgid "warning, .pdata section size (%ld) is not a multiple of %d\n"
+msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ, Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ (%ld) Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´ Ð¾Ð´ %d\n"
+
+#: peXXigen.c:1871 peXXigen.c:2041
+#, c-format
+msgid ""
+"\n"
+"The Function Table (interpreted .pdata section contents)\n"
+msgstr ""
+"\n"
+"Ð¢Ð°Ð±ÐµÐ»Ð° Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ Ð¾Ð´ÐµÑ™ÐºÐ° â€ž.pdataâ€œ)\n"
+
+#: peXXigen.c:1874
 #, 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:1876
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -6458,22 +9622,12 @@ msgstr ""
 " vma:\t\tÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº    ÐšÑ€Ð°Ñ˜      EH       EH       ÐšÑ€Ð°Ñ˜ Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ð°  Ð˜Ð·ÑƒÐ·ÐµÑ‚Ð°Ðº\n"
 "     \t\tÐ�Ð´Ñ€ÐµÑ�Ð°  Ð�Ð´Ñ€ÐµÑ�Ð°  Ð ÑƒÐºÐ¾Ð²Ð°Ð»Ð°Ñ†  ÐŸÐ¾Ð´Ð°Ñ†Ð¸     Ð�Ð´Ñ€ÐµÑ�Ð°    ÐœÐ°Ñ�ÐºÐ°\n"
 
-#: peigen.c:1705 pepigen.c:1705 pex64igen.c:1705
-#, c-format
-msgid " Register save millicode"
-msgstr " Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ‡ÑƒÐ²Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´"
-
-#: peigen.c:1708 pepigen.c:1708 pex64igen.c:1708
+#: peXXigen.c:1889
 #, c-format
-msgid " Register restore millicode"
-msgstr " Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð²Ñ€Ð°Ñ›Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´"
+msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n"
+msgstr "Ð’Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð½Ð° Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° â€ž.pdataâ€œ Ð¾Ð´ÐµÑ™ÐºÐ° (%ld) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ñ�Ñ‚Ð²Ð°Ñ€Ð½Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ (%ld)\n"
 
-#: peigen.c:1711 pepigen.c:1711 pex64igen.c:1711
-#, c-format
-msgid " Glue code sequence"
-msgstr " Ð�Ð¸Ð· ÐºÐ¾Ð´Ð° Ð»ÐµÐ¿ÐºÐ°"
-
-#: peigen.c:1811 pepigen.c:1811 pex64igen.c:1811
+#: peXXigen.c:2043
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -6482,7 +9636,7 @@ msgstr ""
 " vma:\t\tÐŸÐ¾Ñ‡ÐµÑ‚Ð°Ðº    ÐŸÑ€Ð¾Ð»Ð¾Ð³   Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ð° Ð—Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ    Ð˜Ð·ÑƒÐ·ÐµÑ‚Ð°Ðº Ð•Ð¥\n"
 "     \t\tÐ�Ð´Ñ€ÐµÑ�Ð°  Ð”ÑƒÐ¶Ð¸Ð½Ð°   Ð”ÑƒÐ¶Ð¸Ð½Ð°   32b Ð¸Ð·Ð²Ñ€  Ð ÑƒÐºÐ¾Ð²Ð»Ð°Ñ†   ÐŸÐ¾Ð´Ð°Ñ†Ð¸\n"
 
-#: peigen.c:1937 pepigen.c:1937 pex64igen.c:1937
+#: peXXigen.c:2168
 #, c-format
 msgid ""
 "\n"
@@ -6493,7 +9647,7 @@ msgstr ""
 "\n"
 "ÐŸÑ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ ÐŸÐ• Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ (Ð¿Ñ€Ð¾Ñ‚ÑƒÐ¼Ð°Ñ‡ÐµÐ½Ð¸ Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜ â€ž.relocâ€œ Ð¾Ð´ÐµÑ™ÐºÐ°)\n"
 
-#: peigen.c:1966 pepigen.c:1966 pex64igen.c:1966
+#: peXXigen.c:2197
 #, c-format
 msgid ""
 "\n"
@@ -6502,57 +9656,62 @@ msgstr ""
 "\n"
 "Ð’Ð¸Ñ€Ñ‚ÑƒÐµÐ»Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: %08lx Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´Ð»Ð¾Ð¼ÐºÐ° %ld (0x%lx) Ð‘Ñ€Ð¾Ñ˜ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ¸ %ld\n"
 
-#: peigen.c:1979 pepigen.c:1979 pex64igen.c:1979
+#: peXXigen.c:2215
 #, 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:2276
 #, 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:2300
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr "Ð½Ð°Ð·Ð¸Ð²: [Ð²Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %08lx Ð´ÑƒÐ¶Ð¸Ð½Ð° %d]: "
 
-#: peigen.c:2054 pepigen.c:2054 pex64igen.c:2054
+#: peXXigen.c:2320
 #, 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:2330
 #, 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:2335
 #, c-format
 msgid "ID: %#08lx"
 msgstr "Ð˜Ð”: %#08lx"
 
-#: peigen.c:2063 pepigen.c:2063 pex64igen.c:2063
+#: peXXigen.c:2338
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Ð’Ñ€ÐµÐ´Ð½Ð¾Ñ�Ñ‚: %#08lx\n"
 
-#: peigen.c:2074 pepigen.c:2074 pex64igen.c:2074
+#: peXXigen.c:2360
+#, c-format
+msgid "%03x %*.s  Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n"
+msgstr "%03x%*.s  Ð›Ð¸Ñ�Ñ‚: Ð�Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°: %#08lx, ÐšÐ¾Ð´Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ð°: %d\n"
+
+#: peXXigen.c:2402
 #, 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:2410
 #, 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:2498
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr "ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ñ˜Ðµ Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº!\n"
 
-#: peigen.c:2220 pepigen.c:2220 pex64igen.c:2220
+#: peXXigen.c:2522
 #, c-format
 msgid ""
 "\n"
@@ -6561,10 +9720,78 @@ msgstr ""
 "\n"
 "Ð£ÐŸÐžÐ—ÐžÐ Ð•ÐŠÐ•: Ð’Ð¸ÑˆÐ°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñƒ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™ÐºÑƒ â€“ Ð’Ð¸Ð½Ð´Ð¾ÑƒÐ· Ñ›Ðµ Ð¸Ñ… Ð·Ð°Ð½ÐµÐ¼Ð°Ñ€Ð¸Ñ‚Ð¸:\n"
 
+#: peXXigen.c:2528
+#, c-format
+msgid " String table starts at offset: %#03x\n"
+msgstr " Ð¢Ð°Ð±ÐµÐ»Ð° Ð½Ð¸Ñ�ÐºÐµ Ð¿Ð¾Ñ‡Ð¸ÑšÐµ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ: %#03x\n"
+
+#: peXXigen.c:2531
+#, c-format
+msgid " Resources start at offset: %#03x\n"
+msgstr " Ð˜Ð·Ð²Ð¾Ñ€Ð¸ÑˆÑ‚Ð° Ð¿Ð¾Ñ‡Ð¸ÑšÑƒ Ð½Ð° Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ñƒ: %#03x\n"
+
+#: peXXigen.c:2588
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory, but the section containing it could not be found\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð½Ð°Ñ’ÐµÐ¼ Ð¾Ð´ÐµÑ™Ð°Ðº ÐºÐ¾Ñ˜Ð¸ Ð³Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð¸\n"
+
+#: peXXigen.c:2594
+#, c-format
+msgid ""
+"\n"
+"There is a debug directory in %s, but that section has no contents\n"
+msgstr ""
+"\n"
+"ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð°\n"
+
+#: peXXigen.c:2601
+#, 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:2606
+#, 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:2613
+#, c-format
+msgid "The debug data size field in the data directory is too big for the section"
+msgstr "ÐŸÐ¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ° Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ñƒ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:2618
+#, c-format
+msgid "Type                Size     Rva      Offset\n"
+msgstr "Ð’Ñ€Ñ�Ñ‚Ð°              Ð’ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð°     Rva      ÐŸÐ¾Ð¼ÐµÑ€Ð°Ñ˜\n"
+
+#: peXXigen.c:2666
+#, c-format
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr "(Ð·Ð°Ð¿Ð¸Ñ� %c%c%c%c Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ� %s Ñ�Ñ‚Ð°Ñ€Ð¾Ñ�Ñ‚ %ld Ð¿Ð´Ð± %s)\n"
+
+#: peXXigen.c:2678
+#, 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:2762
 #, c-format
 msgid ""
 "\n"
@@ -6573,240 +9800,746 @@ msgstr ""
 "\n"
 "ÐžÑ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸ 0x%x\n"
 
-#: peigen.c:3194 pepigen.c:3194 pex64igen.c:3194
+#: peXXigen.c:3047
+#, c-format
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr "%pB: Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° (%lx Ð±Ð°Ñ˜Ñ‚Ð° Ð½Ð° %<PRIx64>) Ñ�Ðµ Ð¿Ñ€ÐµÐ½Ð¾Ñ�Ð¸ Ð¿Ñ€ÐµÐºÐ¾ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ð¾Ð´ÐµÑ™ÐºÐ° Ð½Ð° %<PRIx64>"
+
+#: peXXigen.c:3088
+msgid "failed to update file offsets in debug directory"
+msgstr "Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð¾Ñ�Ð²ÐµÐ¶Ð¸Ð¼ Ð¿Ð¾Ð¼ÐµÑ€Ð°Ñ˜Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñƒ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ñƒ Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°"
+
+#: peXXigen.c:3097
+#, c-format
+msgid "%pB: failed to read debug data section"
+msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€Ð¾Ñ‡Ð¸ÑˆÑ›Ð°Ð²Ð°ÑšÐ°"
+
+#: peXXigen.c:3900
 #, 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:4035
 msgid ".rsrc merge failure: multiple non-default manifests"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð½Ðµ-Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°Ð½Ð¸Ñ… Ð¸Ñ�Ð¿Ð¾Ñ™Ð°Ð²Ð°ÑšÐ°"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð½ÐµÐºÐ¾Ð»Ð¸ÐºÐ¾ Ð½Ðµ-Ð¿Ð¾Ð´Ñ€Ð°Ð·ÑƒÐ¼ÐµÐ²Ð°Ð½Ð¸Ñ… Ð¸Ñ�Ð¿Ð¾Ñ™Ð°Ð²Ð°ÑšÐ°"
 
-#: peigen.c:3347 pepigen.c:3347 pex64igen.c:3347
+#: peXXigen.c:4053
 msgid ".rsrc merge failure: a directory matches a leaf"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð»Ð¸Ñ�Ñ‚Ñƒ"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð° Ð»Ð¸Ñ�Ñ‚Ñƒ"
 
-#: peigen.c:3389 pepigen.c:3389 pex64igen.c:3389
+#: peXXigen.c:4095
 msgid ".rsrc merge failure: duplicate leaf"
-msgstr "Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: ÑƒÐ´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÑ‡ÐµÐ½Ð¸ Ð»Ð¸Ñ�Ñ‚"
 
-#: peigen.c:3391 pepigen.c:3391 pex64igen.c:3391
+#: peXXigen.c:4100
 #, 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:4167
+msgid ".rsrc merge failure: dirs with differing characteristics"
+msgstr "Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð¸ Ñ�Ð° Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ‚Ð¸Ð¼ Ð¾Ñ�Ð¾Ð±ÐµÐ½Ð¾Ñ�Ñ‚Ð¸Ð¼Ð°"
+
+#: peXXigen.c:4174
+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:4286
+#, c-format
+msgid "%pB: .rsrc merge failure: corrupt .rsrc section"
+msgstr "%pB: Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:4294
+#, c-format
+msgid "%pB: .rsrc merge failure: unexpected .rsrc size"
+msgstr "%pB: Ð½ÐµÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#: peXXigen.c:4433
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$2â€œ"
+
+#: peXXigen.c:4453
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[1] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$4â€œ"
+
+#: peXXigen.c:4474
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[12] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž.idata$5â€œ"
+
+#: peXXigen.c:4494
+#, 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:4536
+#, 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:4561
+#, c-format
+msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ð¾Ð¿ÑƒÐ½Ð¸Ð¼ Ñ€ÐµÑ‡Ð½Ð¸Ðº Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°[9] Ð·Ð°Ñ‚Ð¾ ÑˆÑ‚Ð¾ Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ˜Ðµ â€ž__tls_usedâ€œ"
+
+#, c-format
+#~ msgid "error: %pB: big-endian R2 is not supported"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð²ÐµÐ»Ð¸ÐºÐ° ÐºÑ€Ð°Ñ˜ÑšÐ¾Ñ�Ñ‚ â€žR2â€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð°"
+
+#, c-format
+#~ msgid "error: %pB: conflicting CPU architectures %d/%d"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB: Ð°Ñ€Ñ…Ð¸Ñ‚ÐµÐºÑ‚ÑƒÑ€Ðµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %d/%d Ñ�Ñƒ Ñƒ Ñ�ÑƒÐºÐ¾Ð±Ñƒ"
+
+#, c-format
+#~ msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+#~ msgstr "Ñ€ÐµÐ»Ð°Ñ‚Ð¸Ð²Ð½Ð¾ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð¾Ð¿ÑˆÑ‚ÐµÐ³ Ð¿Ð¾ÐºÐ°Ð·Ð¸Ð²Ð°Ñ‡Ð° Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð¸ %#<PRIx64> ÐºÐ°Ð´Ð° â€ž_gpâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½Ð¾\n"
+
+#, 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"
+
+#, c-format
+#~ msgid "dynamic variable `%s' is zero size"
+#~ msgstr "Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐºÐ° Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° â€ž%sâ€œ Ñ˜Ðµ Ð½ÑƒÐ»Ñ‚Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ"
+
+#, 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â€œ Ð¾Ð´ÐµÑ™ÐºÑƒ."
+
+#, c-format
+#~ msgid "%pB: unhandled import type; %x"
+#~ msgstr "%pB: Ð½ÐµÐ¾Ð±Ñ€Ð°Ð´Ð¸Ð²Ð° Ð²Ñ€Ñ�Ñ‚Ð° ÑƒÐ²Ð¾Ð·Ð°; %x"
+
+#, c-format
+#~ msgid "warning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%u"
+#~ msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¾Ð²Ð°Ð½Ð¾ Ñ�Ð¿ÐµÑ† Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%u.%u.%uâ€œ Ð°Ð»Ð¸ Ð¸Ð·Ð»Ð°Ð· ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð¸Ð·Ð´Ð°ÑšÐµ â€ž%u.%u.%uâ€œ"
+
+#, c-format
+#~ msgid "not mapping: data=%lx mapped=%d\n"
+#~ msgstr "Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ð¾Ð´Ð°Ñ‚Ð°Ðº=%lx Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð½=%d\n"
+
+#, c-format
+#~ msgid "not mapping: env var not set\n"
+#~ msgstr "Ð½Ðµ Ð¼Ð°Ð¿Ð¸Ñ€Ð°Ð¼: Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ™Ð¸Ð²Ð° Ð¾ÐºÑ€ÑƒÐ¶ÐµÑšÐ° Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð°\n"
+
+#, c-format
+#~ msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° EP9312, Ð´Ð¾Ðº Ñ˜Ðµ %pB Ð¿Ñ€ÐµÐ²ÐµÐ´ÐµÐ½ Ð·Ð° â€žXScaleâ€œ"
+
+#, c-format
+#~ msgid "%pB: invalid size field in group section header: %#<PRIx64>"
+#~ msgstr "%pB: Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð¾ Ð¿Ð¾Ñ™Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ñƒ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ: %#<PRIx64>"
+
+#, c-format
+#~ msgid "%pB: no valid group sections found"
+#~ msgstr "%pB: Ð½Ð¸Ñ�Ð°Ð¼ Ð½Ð°ÑˆÐ°Ð¾ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ðµ Ð¾Ð´ÐµÑ™ÐºÐµ Ð³Ñ€ÑƒÐ¿Ðµ"
+
+#, c-format
+#~ msgid "%pB: no group info for section '%pA'"
+#~ msgstr "%pB: Ð½ÐµÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð³Ñ€ÑƒÐ¿Ðµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#, c-format
+#~ msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
+#~ msgstr "%pB: â€žSHT_GROUPâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº [Ð¸Ð½Ð´ÐµÐºÑ� %d] Ð½ÐµÐ¼Ð° â€žSHF_GROUPâ€œ Ð¾Ð´ÐµÑ™ÐºÐµ"
+
+#, c-format
+#~ msgid " [Maverick float format]"
+#~ msgstr " [â€žMaverickâ€œ Ð·Ð°Ð¿Ð¸Ñ� Ð´ÐµÑ†Ð¸Ð¼Ð°Ð»Ð½Ð¾Ð³ Ð±Ñ€Ð¾Ñ˜Ð°]"
+
+#, c-format
+#~ msgid "error: %pB does not use %s instructions, whereas %pB does"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: â€ž%pBâ€œ Ð½Ðµ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ Ð¸Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ð¸Ñ˜Ðµ, Ð°Ð»Ð¸ â€ž%pBâ€œ Ð´Ð°"
+
+#, c-format
+#~ msgid "   Error: The length is less than the length of an EMH record\n"
+#~ msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð´ÑƒÐ¶Ð¸Ð½Ðµ â€žEMHâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°\n"
+
+#, c-format
+#~ msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
+#~ msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ�Ð½Ð¸Ð¼ÐºÐ° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ â€žEMH_MHDâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°\n"
+
+#, c-format
+#~ msgid "   Error: The length is less than the length of an EEOM record\n"
+#~ msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð¼Ð°ÑšÐ° Ð¾Ð´ Ð´ÑƒÐ¶Ð¸Ð½Ðµ â€žEEOMâ€œ Ñ�Ð½Ð¸Ð¼ÐºÐ°\n"
+
 #, c-format
-msgid "%s: .rsrc merge failure: corrupt .rsrc section"
-msgstr "%s: Ð�Ð¸Ñ˜Ðµ ÑƒÑ�Ð¿ÐµÐ»Ð¾ â€ž.rsrcâ€œ Ñ�Ñ‚Ð°Ð¿Ð°ÑšÐµ: Ð¾ÑˆÑ‚ÐµÑ›ÐµÐ½Ð¸ â€ž.rsrcâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº"
+#~ msgid "%pB: unsupported relocation type name %s"
+#~ msgstr "%pB: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ð¸Ð¼ÐµÐ½Ð° â€ž%sâ€œ"
+
+#~ msgid "d' and `c"
+#~ msgstr "dâ€œ Ð¸ â€žc"
+
+#~ msgid "zvknha"
+#~ msgstr "zvknha"
+
+#~ msgid "zvknhb"
+#~ msgstr "zvknhb"
+
+#~ msgid "Deprecated %s called at %s line %d in %s\n"
+#~ msgstr "Ð—Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾ Ñƒ â€ž%sâ€œ %d. Ñ€ÐµÐ´ Ñƒ â€ž%sâ€œ\n"
+
+#~ msgid "Deprecated %s called\n"
+#~ msgstr "Ð—Ð°Ñ�Ñ‚Ð°Ñ€ÐµÐ»Ð¾ â€ž%sâ€œ Ñ˜Ðµ Ð¿Ð¾Ð·Ð²Ð°Ð½Ð¾\n"
+
+#~ msgid "cannot read GST record length\n"
+#~ msgstr "Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ‡Ð¸Ñ‚Ð°Ð¼ Ð´ÑƒÐ¶Ð¸Ð½Ñƒ â€žGSTâ€œ Ð·Ð°Ð¿Ð¸Ñ�Ð°\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but that section has no contents\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº Ð½ÐµÐ¼Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but it does not fit into that section\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÐŸÐ¾Ñ�Ñ‚Ð¾Ñ˜Ð¸ Ñ‚Ð°Ð±ÐµÐ»Ð° Ð¸Ð·Ð²Ð¾Ð·Ð° Ñƒ â€ž%sâ€œ, Ð°Ð»Ð¸ Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ�Ñ‚Ð°Ð½Ðµ Ñƒ Ñ‚Ð°Ñ˜ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#~ msgid "%pB: unable to initialize compress status for section %s"
+#~ msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ�Ð°Ð¶Ð¸Ð¼Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#~ msgid "%pB: unable to initialize decompress status for section %s"
+#~ msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ‡Ð½ÐµÐ¼ Ñ�Ñ‚Ð°ÑšÐµ Ñ€Ð°Ñ�Ð¿Ð°ÐºÐ¸Ð²Ð°ÑšÐ° Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
+
+#~ msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+#~ msgstr "Ð³Ñ€ÐµÑˆÐºÐ°: %pB(%pA) Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ð¾Ð´ÐµÑ™ÐºÐ° (%#<PRIx64> Ð±Ð°Ñ˜Ñ‚Ð¾Ð²Ð°) Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ (%#<PRIx64> Ð±Ð°Ñ˜Ñ‚Ð°)"
+
+#~ msgid "DWARF error: section %s is larger than 10x its filesize! (0x%lx vs 0x%lx)"
+#~ msgstr "â€žDWARFâ€œ Ð³Ñ€ÐµÑˆÐºÐ°: Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñ˜Ðµ Ð²ÐµÑ›Ð¸ 10x Ð¾Ð´ Ñ�Ð²Ð¾Ñ˜Ðµ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ðµ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ! (0x%lx vs 0x%lx)"
+
+#~ msgid "%pB:%pA: error: attempting to write into an unallocated compressed section"
+#~ msgstr "%pB:%pA: Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ð¾ÐºÑƒÑˆÐ°Ð²Ð°Ð¼ Ð´Ð° Ð¿Ð¸ÑˆÐµÐ¼ Ñƒ Ð½ÐµÐ´Ð¾Ð´ÐµÑ™ÐµÐ½Ð¾Ð¼ Ñ�Ð°Ð¶ÐµÑ‚Ð¾Ð¼ Ð¾Ð´ÐµÑ™ÐºÑƒ"
+
+#~ 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"
+
+#~ 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"
+
+#~ msgid "%pB: %pA+%"
+#~ msgstr "%pB: %pA+%"
+
+#~ msgid "warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+#~ msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž--enable-non-contiguous-regionsâ€œ Ð¾Ð´Ð±Ð°Ñ†ÑƒÑ˜Ðµ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ð¸Ð· â€ž%sâ€œ\n"
+
+#~ msgid "%s: standard ISA extension `%c' is not in canonical order"
+#~ msgstr "%s: Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ð´Ð½Ð¾ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%câ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ ÐºÐ°Ð½Ð¾Ð½Ñ�ÐºÐ¾Ð¼ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÑƒ"
+
+#~ msgid "%s: unknown prefix class for the ISA extension `%s'"
+#~ msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° ÐºÐ»Ð°Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð° Ð·Ð° ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ"
+
+#~ msgid "rv32e does not support the `f' extension"
+#~ msgstr "â€žrv32eâ€œ Ð½Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žfâ€œ"
+
+#~ msgid "%F%P: failed to create BND PLT section\n"
+#~ msgstr "%F%P: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žBND PLTâ€œ Ð¾Ð´ÐµÑ™Ð°Ðº\n"
+
+#~ msgid "%pB: no core to allocate section name %s"
+#~ msgstr "%pB: Ð½ÐµÐ¼Ð° Ñ˜ÐµÐ·Ð³Ñ€Ð° Ð·Ð° Ð´Ð¾Ð´ÐµÑ™Ð¸Ð²Ð°ÑšÐµ Ð½Ð°Ð·Ð¸Ð²Ð° Ð¾Ð´ÐµÑ™ÐºÐ° â€ž%sâ€œ"
+
+#~ 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"
+
+#~ msgid "%pB: aout header specifies an invalid number of data-directory entries: %u"
+#~ msgstr "%pB: â€žaoutâ€œ Ð·Ð°Ð³Ð»Ð°Ð²Ñ™Ðµ Ð½Ð°Ð²Ð¾Ð´Ð¸ Ð¿Ð¾Ð³Ñ€ÐµÑˆÐ°Ð½ Ð±Ñ€Ð¾Ñ˜ ÑƒÐ½Ð¾Ñ�Ð° Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ˜ÑƒÐ¼Ð° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°: %u"
+
+#~ msgid "%pB: page size is too large (0x%x)"
+#~ msgstr "%pB: Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð° Ñ�Ñ‚Ñ€Ð°Ð½Ð¸Ñ†Ðµ Ñ˜Ðµ Ð¿Ñ€ÐµÐ²ÐµÐ»Ð¸ÐºÐ° (0x%x)"
+
+#~ msgid "%s: duplicate prefixed ISA extension `%s'"
+#~ msgstr "%s: Ð´Ð²Ð¾Ñ�Ñ‚Ñ€ÑƒÐºÐ¾ Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ"
+
+#~ msgid "%s: prefixed ISA extension `%s' is not in expected order.  It must come before `%s'"
+#~ msgstr "%s: Ñ�Ð° Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ�Ð¾Ð¼ ISA Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ñƒ Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾Ð¼ Ð¿Ð¾Ñ€ÐµÑ‚ÐºÑƒ.  ÐœÐ¾Ñ€Ð° Ð±Ð¸Ñ‚Ð¸ Ð¿Ñ€Ðµ â€ž%sâ€œ"
+
+#~ msgid "warning: %pB: mis-matched ISA version %d.%d for '%s' extension, the output version is %d.%d"
+#~ msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: %pB: Ð½ÐµÐ¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜ÑƒÑ›Ðµ ISA Ð¸Ð·Ð´Ð°ÑšÐµ %d.%d Ð·Ð° â€ž%sâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ, Ð¸Ð·Ð»Ð°Ð·Ð½Ð¾ Ð¸Ð·Ð´Ð°ÑšÐµ Ñ˜Ðµ %d.%d"
 
-#: 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 "%pB: TLS relocation at (0x%"
+#~ msgstr "%pB: Ð¢Ð›Ð¡ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð° (0x%"
+
+#~ msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
+#~ msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð±Ñ€Ð¾Ñ˜ Ñ€ÐµÐ´Ð¾Ð²Ð° (%#lx) Ð¿Ñ€ÐµÐ²Ð°Ð·Ð¸Ð»Ð°Ð·Ð¸ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð¾Ð´ÐµÑ™ÐºÐ° (%#lx)"
+
+#~ msgid "internal error: RL78 reloc stack overflow"
+#~ msgstr "ÑƒÐ½ÑƒÑ‚Ñ€Ð°ÑˆÑšÐ° Ð³Ñ€ÐµÑˆÐºÐ°: Ð¿Ñ€ÐµÐºÐ¾Ñ€Ð°Ñ‡ÐµÑšÐµ â€žRL78â€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°"
+
+#~ 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"
+
+#~ msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
+#~ msgstr "ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%pBâ€œ Ñ˜Ðµ Ñ�ÐºÑ€Ð°Ñ›ÐµÐ½Ð¾: Ð¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ñ… Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ñƒ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐµ Ñ˜ÐµÐ·Ð³Ñ€Ð° >= %<PRIx64>, Ð½Ð°Ñ’Ð¾Ñ…: %<PRIx64>"
+
+#~ msgid "-march=%s: expect number after `%dp'"
+#~ msgstr "-march=%s: Ð¾Ñ‡ÐµÐºÑƒÑ˜ÐµÐ¼ Ð±Ñ€Ð¾Ñ˜ Ð½Ð°ÐºÐ¾Ð½ â€ž%dpâ€œ"
+
+#~ msgid "-march=%s: rv%de is not a valid base ISA"
+#~ msgstr "-march=%s: â€žrv%deâ€œ Ð½Ð¸Ñ˜Ðµ Ð¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð±Ð°Ð·Ð° ISA"
+
+#~ msgid "   Error: length larger than remaining space in record\n"
+#~ msgstr "   Ð“Ñ€ÐµÑˆÐºÐ°: Ð´ÑƒÐ¶Ð¸Ð½Ð° Ñ˜Ðµ Ð²ÐµÑ›Ð° Ð¾Ð´ Ð¿Ñ€ÐµÐ¾Ñ�Ñ‚Ð°Ð»Ð¾Ð³ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð° Ñƒ Ñ�Ð½Ð¸Ð¼ÐºÑƒ\n"
+
+#~ msgid "STA_QW (stack quadword) 0x%08x %08x\n"
+#~ msgstr "STA_QW (Ñ‡ÐµÑ‚Ð²Ð¾Ñ€Ð¾Ñ€ÐµÑ‡ Ñ�Ð¿Ñ€ÐµÐ¼Ð½Ð¸ÐºÐ°) 0x%08x %08x\n"
+
+#~ msgid "%pB: error: erratum 843419 immediate 0x%"
+#~ msgstr "%pB: Ð³Ñ€ÐµÑˆÐºÐ°: Ð³Ñ€ÐµÑˆÐºÐ° 843419 Ð¸Ð·Ñ€Ð°Ð²Ð½Ð¾ 0x%"
+
+#~ msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
+#~ msgstr "â€ž%pAâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ] Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ [â€ž%pAâ€œ Ñƒ â€ž%pBâ€œ] Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#~ msgid "%pA has both ordered and unordered sections"
+#~ msgstr "â€ž%pAâ€œ Ð¸Ð¼Ð° Ð¸ ÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¸ Ð½ÐµÑƒÑ€ÐµÑ’ÐµÐ½Ð¸ Ð¾Ð´ÐµÑ™Ð°Ðº"
+
+#~ msgid "%F%P: %pA has ordered sections with incompatible alignments\n"
+#~ msgstr "%F%P: â€ž%pAâ€œ Ñ˜Ðµ Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð¾ Ð¾Ð´ÐµÑ™ÐºÐµ Ñ�Ð° Ð½ÐµÑ�Ð°Ð³Ð»Ð°Ñ�Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµÐ¼\n"
+
+#~ msgid "-march=%s: unexpected ISA string at end: %s"
+#~ msgstr "-march=%s: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° ISA Ð½Ð¸Ñ�ÐºÐ° Ð½Ð° ÐºÑ€Ð°Ñ˜Ñƒ: %s"
+
+#~ msgid "%pB: warning: sh_link not set for section `%pA'"
+#~ msgstr "%pB: ÑƒÐ¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€žsh_linkâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ñ�Ñ‚Ð°Ð²Ñ™ÐµÐ½Ð¾ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%pAâ€œ"
+
+#~ msgid "-march=%s: unsupported ISA subset `%c'"
+#~ msgstr "-march=%s: Ð½ÐµÐ¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ â€žISAâ€œ Ð¿Ð¾Ð´Ñ�ÐºÑƒÐ¿ â€ž%câ€œ"
+
+#~ msgid "-march=%s: `d' extension requires `f' extension"
+#~ msgstr "-march=%s: â€ždâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€žfâ€œ"
+
+#~ msgid "-march=%s: `q' extension requires `d' extension"
+#~ msgstr "-march=%s: â€žqâ€œ Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð¿Ñ€Ð¾ÑˆÐ¸Ñ€ÐµÑšÐµ â€ždâ€œ"
+
+#~ msgid ""
+#~ "\n"
+#~ "Function descriptor located at the start address: %04lx\n"
+#~ msgstr ""
+#~ "\n"
+#~ "ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ñ˜Ðµ Ð¾Ñ‚ÐºÑ€Ð¸Ð²ÐµÐ½ Ð½Ð° Ð¿Ð¾Ñ‡ÐµÑ‚Ð½Ð¾Ñ˜ Ð°Ð´Ñ€ÐµÑ�Ð¸: %04lx\n"
+
+#~ msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
+#~ msgstr "\tÑ‚Ð°Ð±ÐµÐ»Ð° Ñ�Ð°Ð´Ñ€Ð¶Ð°Ñ˜Ð° %08lx ÐºÐ¾Ð´Ð½Ðµ Ð¾Ñ�Ð½Ð¾Ð²Ðµ (ÑƒÑ‡Ð¸Ñ‚Ñ™Ð¸Ð²Ð°/Ð°ÐºÑ‚ÑƒÐµÐ»Ð½Ð°) %08lx/%08lx\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "No reldata section! Function descriptor not decoded.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð�ÐµÐ¼Ð° Ð¾Ð´ÐµÑ™ÐºÐ° Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ°! ÐžÐ¿Ð¸Ñ�Ð½Ð¸Ðº Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ˜Ðµ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð°Ð½.\n"
+
+#~ msgid " Register save millicode"
+#~ msgstr " Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ñ‡ÑƒÐ²Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´"
+
+#~ msgid " Register restore millicode"
+#~ msgstr " Ð ÐµÐ³Ð¸Ñ�Ñ‚Ð°Ñ€ Ð²Ñ€Ð°Ñ›Ð° Ð¼Ð¸Ð»Ð¸ÐºÐ¾Ð´"
+
+#~ msgid " Glue code sequence"
+#~ msgstr " Ð�Ð¸Ð· ÐºÐ¾Ð´Ð° Ð»ÐµÐ¿ÐºÐ°"
+
+#~ 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"
+
+#~ 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"
+#~ "  first occurrence: %B: thumb call to arm\n"
+#~ "  consider relinking with --support-old-code enabled"
 #~ msgstr ""
-#~ "%B(%s): attention: l'inter-rÃ©seautage n'est pas activÃ©.\n"
-#~ "  premiÃ¨re occurrence: %B: appel de repÃ¨re vers arm"
+#~ "%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 "%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(%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: 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 "DIV usage mismatch between %B and %B"
-#~ msgstr "incohÃ©rence d'utilisation de DIV entre %B et %B"
+#~ 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 "%B: bad relocation section name `%s'"
-#~ msgstr "%B: nom de section de rÃ©adressage erronÃ© Â«Â %sÂ Â»"
+#~ msgid "%P%F: failed creating ex9.it %s hash table: %E\n"
+#~ msgstr "%P%F: Ð½Ð¸Ñ�Ð°Ð¼ ÑƒÑ�Ð¿ÐµÐ¾ Ð´Ð° Ð½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ð¼ â€žex9.it %sâ€œ Ñ…ÐµÑˆ Ñ‚Ð°Ð±ÐµÐ»Ñƒ: %E\n"
 
-#~ msgid "%P: dynamic variable `%s' is zero size\n"
-#~ msgstr "%P: la variable dynamique Â«Â %sÂ Â» a une taille nulle\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 " [64-bit doubles]"
-#~ msgstr " [doubles de 64 bits]"
+#~ msgid "%P: %H: %s reloc against local symbol\n"
+#~ msgstr "%P: %H: â€ž%sâ€œ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð½Ð°Ñ�Ð¿Ñ€Ð°Ð¼ Ð»Ð¾ÐºÐ°Ð»Ð½Ð¾Ð³ Ñ�Ð¸Ð¼Ð±Ð¾Ð»Ð°\n"
 
-#~ msgid " [dsp]"
-#~ msgstr " [dsp]"
+#~ msgid "Warning: %B uses soft float, %B uses single-precision hard float"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ�Ð¾Ñ„Ñ‚Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ·, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ñ…Ð°Ñ€Ð´Ð²ÐµÑ€Ñ�ÐºÐ¸ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¸ Ð·Ð°Ñ€ÐµÐ· Ñ˜ÐµÐ´Ð½Ðµ Ñ‚Ð°Ñ‡Ð½Ð¾Ñ�Ñ‚Ð¸"
 
-#~ msgid "%P: %H: automatic multiple TOCs not supported using your crt files; recompile with -mminimal-toc or upgrade gcc\n"
-#~ msgstr "%P: %H: TOC multiples et automatiques non supportÃ©es utilisant votre fichier crt; recompilez avec -mminimal-toc ou mettez Ã  jour gcc\n"
+#~ msgid "Warning: %B uses unknown floating point ABI %d"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%dâ€œ Ð¿Ð¾ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³ Ð·Ð°Ñ€ÐµÐ·Ð°"
 
-#~ msgid "%P: %H: sibling call optimization to `%s' does not allow automatic multiple TOCs; recompile with -mminimal-toc or -fno-optimize-sibling-calls, or make `%s' extern\n"
-#~ msgstr "%P: %H: l'optimisation sÅ“urs des appels vers Â«Â %sÂ Â» n'autorise pas de TOC multiples et automatiques; recompilez avec -mminimal-toc ou -fno-optimize-sibling-calls, ou rendez Â«Â %sÂ Â» externe\n"
+#~ msgid "Warning: %B uses unknown vector ABI %d"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%dâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°"
 
-#~ msgid "note: '%s' is defined in DSO %B so try adding it to the linker command line"
-#~ msgstr "note: Â«%sÂ» est dÃ©fini dans le DSO %B donc essayez de l'ajouter Ã  la ligne de commande du lieur"
+#~ msgid "Warning: %B uses vector ABI \"%s\", %B uses \"%s\""
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð�Ð‘Ð˜ â€ž%sâ€œ Ð²ÐµÐºÑ‚Ð¾Ñ€Ð°, â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ â€ž%sâ€œ"
 
-#~ msgid "Warning: %B uses -msingle-float, %B uses -mdouble-float"
-#~ msgstr "Attention: %B utilise -msingle-float, %B utilise -mdouble-float"
+#~ msgid "Warning: %B uses unknown small structure return convention %d"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: â€ž%Bâ€œ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¸ Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð¸ Ð¾Ð´Ð³Ð¾Ð²Ð¾Ñ€ Ð¼Ð°Ð»Ð¾Ð³ Ñ€ÐµÐ·ÑƒÐ»Ñ‚Ð°Ñ‚Ð° Ñ�Ñ‚Ñ€ÑƒÐºÑ‚ÑƒÑ€Ðµ â€ž%dâ€œ"
 
-#~ msgid "Warning: %B uses -msingle-float, %B uses -mips32r2 -mfp64"
-#~ msgstr "Attention: %B utilise -msingle-float, %B utilise -mips32r2 -mfp64"
+#~ 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 "Warning: %B uses -mdouble-float, %B uses -mips32r2 -mfp64"
-#~ msgstr "Attention: %B utilise -mdouble-float, %B utilise -mips32r2 -mfp64"
+#~ msgid " [G10]"
+#~ msgstr " [Ð“10]"
 
-#~ msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" is unsupported 'indirect' reference: setting to undefined"
-#~ msgstr "bfd_mach_o_read_symtab_symbol: symbole Â«Â %sÂ Â» a la rÃ©fÃ©rence non supportÃ©e Â«Â indirectÂ Â»: laissÃ© non dÃ©fini"
+#~ msgid "%s: Malformed reloc detected for section %s"
+#~ msgstr "%s: ÐžÑ‚ÐºÑ€Ð¸Ð²ÐµÐ½Ð¾ Ñ˜Ðµ Ð»Ð¾ÑˆÐµ Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ Ð·Ð° Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ"
 
-#~ 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 "%B: IMPORT AS directive for %s conceals previous IMPORT AS"
+#~ msgstr "%B: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° Ð£Ð’Ð•Ð—Ð˜ ÐšÐ�Ðž Ð·Ð° â€ž%sâ€œ Ð·Ð°Ñ�ÐµÑšÑƒÑ˜Ðµ Ð¿Ñ€ÐµÑ‚Ñ…Ð¾Ð´Ð½Ð¾ Ð£Ð’Ð•Ð—Ð˜ ÐšÐ�Ðž"
 
-#~ msgid "Mach-O header:\n"
-#~ msgstr "En-tÃªte Mach-O:\n"
+#~ msgid "%B: Unrecognised .directive command: %s"
+#~ msgstr "%B: Ð�ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð½Ð°Ñ€ÐµÐ´Ð±Ð° â€ž.directiveâ€œ: %s"
 
-#~ msgid " magic     : %08lx\n"
-#~ msgstr " magique    : %08lx\n"
+#~ msgid "%s: encountered datalabel symbol in input"
+#~ msgstr "%s: Ð½Ð°Ð¸ÑˆÐ°Ð¾ Ñ�Ð°Ð¼ Ð½Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» Ð½Ð°Ñ‚Ð¿Ð¸Ñ�Ð° Ð´Ð°Ñ‚ÑƒÐ¼Ð° Ñƒ ÑƒÐ»Ð°Ð·Ñƒ"
 
-#~ msgid " cputype   : %08lx (%s)\n"
-#~ msgstr " typecpu    : %08lx (%s)\n"
+#~ msgid "PTB mismatch: a SHmedia address (bit 0 == 1)"
+#~ msgstr "ÐŸÐ¢Ð‘ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHmediaâ€œ (Ð±Ð¸Ñ‚ 0 == 1)"
 
-#~ msgid " filetype  : %08lx (%s)\n"
-#~ msgstr " typefichier: %08lx (%s)\n"
+#~ msgid "PTA mismatch: a SHcompact address (bit 0 == 0)"
+#~ msgstr "ÐŸÐ¢Ð� Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°: Ð°Ð´Ñ€ÐµÑ�Ð° â€žSHcompactâ€œ (Ð±Ð¸Ñ‚ 0 == 0)"
 
-#~ msgid " ncmds     : %08lx (%lu)\n"
-#~ msgstr " ncmds     : %08lx (%lu)\n"
+#~ msgid "%s: GAS error: unexpected PTB insn with R_SH_PT_16"
+#~ msgstr "%s: Ð“Ð�Ð¡ Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð¾ ÐŸÐ¢Ð‘ â€žinsnâ€œ Ñ�Ð° â€žR_SH_PT_16â€œ"
 
-#~ msgid " sizeofcmds: %08lx\n"
-#~ msgstr " taillecmds: %08lx\n"
+#~ msgid "%B: error: unaligned relocation type %d at %08x reloc %p\n"
+#~ msgstr "%B: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð½Ð° %08x Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%pâ€œ\n"
 
-#~ msgid " flags     : %08lx ("
-#~ msgstr " fanions   : %08lx ("
+#~ msgid "%s: could not write out added .cranges entries"
+#~ msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð´Ð¾Ð´Ð°Ñ‚Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
 
-#~ msgid " reserved  : %08x\n"
-#~ msgstr " rÃ©servÃ©   : %08x\n"
+#~ msgid "%s: could not write out sorted .cranges entries"
+#~ msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð·Ð°Ð¿Ð¸ÑˆÐµÐ¼ Ð¿Ð¾Ñ€ÐµÑ’Ð°Ð½Ðµ â€ž.crangesâ€œ ÑƒÐ½Ð¾Ñ�Ðµ"
 
-#~ msgid "Segments and Sections:\n"
-#~ msgstr "Segments et Sections:\n"
+#~ msgid "  %s: 0x%v\n"
+#~ msgstr "  %s: 0x%v\n"
 
-#~ msgid " #: Segment name     Section name     Address\n"
-#~ msgstr " #: Nom segment      Nom section      Adresse\n"
+#~ msgid "%s: 0x%v 0x%v\n"
+#~ msgstr "%s: 0x%v 0x%v\n"
 
-#~ msgid "Symbol %s replaced by %s\n"
-#~ msgstr "Symbole %s remplacÃ© par %s\n"
+#~ msgid "   %s%s %s\n"
+#~ msgstr "   %s%s %s\n"
 
-#~ msgid "%B(%A+0x%lx): cannot reach %s"
-#~ msgstr "%B(%A+0x%lx): ne peut atteindre %s"
+#~ msgid ", 8-byte data alignment"
+#~ msgstr ", 8-Ð±Ð¸Ñ‚Ð½Ð¾ Ð¿Ð¾Ñ€Ð°Ð²Ð½Ð°ÑšÐµ Ð¿Ð¾Ð´Ð°Ñ‚Ð°ÐºÐ°"
 
-#~ msgid "%B: warning: ignoring duplicate section `%A'\n"
-#~ msgstr "%B: attention: ignore la section dupliquÃ©e Â«%AÂ»\n"
+#~ msgid "%B(%A+0x%"
+#~ msgstr "%B(%A+0x%"
 
-#~ msgid "%B: warning: duplicate section `%A' has different size\n"
-#~ msgstr "%B: attention: section dupliquÃ©e Â«%AÂ» avec des tailles diffÃ©rentes\n"
+#~ msgid "%P: %B: cannot create stub entry %s\n"
+#~ msgstr "%P: %B: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ð¼ ÑƒÐ½Ð¾Ñ� Ð¾ÐºÑ€Ð°Ñ˜ÐºÐ° â€ž%sâ€œ\n"
 
-#~ msgid "relocation references a different segment"
-#~ msgstr "la relocalisation fait rÃ©fÃ©rence Ã  un segment diffÃ©rent"
+#~ msgid "%P: stubs don't match calculated size\n"
+#~ msgstr "%P: Ð¾ÐºÑ€Ð°Ñ˜Ñ†Ð¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°Ñ˜Ñƒ Ð¸Ð·Ñ€Ð°Ñ‡ÑƒÐ½Ð°Ñ‚Ð¾Ñ˜ Ð²ÐµÐ»Ð¸Ñ‡Ð¸Ð½Ð¸\n"
 
-#~ msgid "%B: relocation type %d not implemented"
-#~ msgstr "%B: relocalisation de type %d pas implÃ©mentÃ©e"
+#~ msgid "%P: %B: unknown relocation type %d for `%T'\n"
+#~ msgstr "%P: %B: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð·Ð° â€ž%Tâ€œ\n"
 
-#~ 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"
+#~ msgid "%s: error: unaligned relocation type %d at %08x reloc %08x\n"
+#~ msgstr "%s: Ð³Ñ€ÐµÑˆÐºÐ°: Ð½ÐµÐ¿Ð¾Ñ€Ð°Ð²Ð½Ð°Ñ‚Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ Ð½Ð° %08x Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐµ %08x\n"
 
-#~ msgid "warning: %B and %B differ in position-dependence of code addressing"
-#~ msgstr "attention: %B et %B divergent sur la dÃ©pendance de la position de l'adressage du code"
+#~ 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 "Can't Make it a Short Jump"
-#~ msgstr "Impossible d'en faire un Saut Court"
+#~ msgid "invalid relocation type %d"
+#~ msgstr "Ð½ÐµÐ¸Ñ�Ð¿Ñ€Ð°Ð²Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð¿Ñ€ÐµÐ¼ÐµÑˆÑ‚Ð°ÑšÐ° â€ž%dâ€œ"
 
-#~ msgid "Exceeds Long Jump Range"
-#~ msgstr "PortÃ©e dÃ©passÃ©e pour le Saut Long"
+#~ msgid "Output file requires shared library `%s'\n"
+#~ msgstr "Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%sâ€œ\n"
 
-#~ msgid "Absolute address Exceeds 16 bit Range"
-#~ msgstr "L'adresse absolue dÃ©borde sur 16 bits"
+#~ msgid "Output file requires shared library `%s.so.%s'\n"
+#~ msgstr "Ð˜Ð·Ð»Ð°Ð·Ð½Ð° Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ° Ð·Ð°Ñ…Ñ‚ÐµÐ²Ð° Ð´ÐµÑ™ÐµÐ½Ñƒ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÑƒ â€ž%s.so.%sâ€œ\n"
 
-#~ msgid "Absolute address Exceeds 8 bit Range"
-#~ msgstr "L'adresse absolue dÃ©borde sur 8 bits"
+#~ msgid "Symbol %s not defined for fixups\n"
+#~ msgstr "Ð¡Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð½Ð¸Ñ˜Ðµ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ�Ð°Ð½ Ð·Ð° Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐµ\n"
 
-#~ msgid "Unrecognized Reloc Type"
-#~ msgstr "Type de relocalisation non reconnu"
+#~ msgid "Warning: fixup count mismatch\n"
+#~ msgstr "Ð£Ð¿Ð¾Ð·Ð¾Ñ€ÐµÑšÐµ: Ð±Ñ€Ð¾Ñ˜ Ð¸Ñ�Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ð½Ðµ Ð¾Ð´Ð³Ð¾Ð²Ð°Ñ€Ð°\n"
 
-#~ msgid "corrupt or empty %s section in %B"
-#~ msgstr "section %s vide ou corrompue dans %B"
+#~ msgid "%s: string too long (%d chars, max 65535)"
+#~ msgstr "%s: Ð½Ð¸Ñ�ÐºÐ° Ñ˜Ðµ Ð¿Ñ€ÐµÐ´ÑƒÐ³Ð° (%d Ð·Ð½Ð°ÐºÐ°, Ð½Ð°Ñ˜Ð². 65535)"
 
-#~ msgid "%s: invalid DSO for symbol `%s' definition"
-#~ msgstr "%s: DSO incorrect pour la dÃ©finition du symbole Â«%sÂ»"
+#~ msgid "%s: unrecognized symbol `%s' flags 0x%x"
+#~ msgstr "%s: Ð½ÐµÐ¿Ð¾Ð·Ð½Ð°Ñ‚ Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%sâ€œ Ð·Ð°Ñ�Ñ‚Ð°Ð²Ð¸Ñ†Ðµ 0x%x"
 
-#~ msgid "%B: %A+0x%lx: jump to stub routine which is not jal"
-#~ msgstr "%B: %A+0x%lx: saut vers la routine dans la partie de l'Ã©bauche (stub) qui n'est pas jal"
+#~ msgid "%B: unimplemented ATI record %u for symbol %u"
+#~ msgstr "%B: Ð½ÐµÐ¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¸ Ð�Ð¢Ð˜ Ð·Ð°Ð¿Ð¸Ñ� â€ž%uâ€œ Ð·Ð° Ñ�Ð¸Ð¼Ð±Ð¾Ð» â€ž%uâ€œ"
 
-#~ msgid "bfd_make_section (%s) failed"
-#~ msgstr "Ã‰chec de bfd_make_section (%s)"
+#~ msgid "%B: unexpected ATN type %d in external part"
+#~ msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð�Ð¢Ð� Ð²Ñ€Ñ�Ñ‚Ð° â€ž%dâ€œ Ñƒ Ñ�Ð¿Ð¾Ñ™Ð½Ð¾Ð¼ Ð´ÐµÐ»Ñƒ"
 
-#~ msgid "bfd_set_section_flags (%s, %x) failed"
-#~ msgstr "bfd_set_section_flags (%s, %x) a Ã©chouÃ©"
+#~ msgid "%B: unexpected type after ATN"
+#~ msgstr "%B: Ð½ÐµÐ¾Ñ‡ÐµÐºÐ¸Ð²Ð°Ð½Ð° Ð²Ñ€Ñ�Ñ‚Ð° Ð½Ð°ÐºÐ¾Ð½ Ð�Ð¢Ð�-Ð°"
 
-#~ msgid "Size mismatch section %s=%lx, %s=%lx"
-#~ msgstr "Taille de section ne concorde pas %s=%lx, %s=%lx"
+#~ msgid "%s: can not represent section `%s' in oasys"
+#~ msgstr "%s: Ð½Ðµ Ð¼Ð¾Ð³Ñƒ Ð´Ð° Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð¸Ð¼ Ð¾Ð´ÐµÑ™Ð°Ðº â€ž%sâ€œ Ñƒ â€žoasysâ€œ"
 
-#~ msgid "failed to enter %s"
-#~ msgstr "Ã©chec d'insertion de %s"
+#~ msgid "%B: `ld -r' not supported with PE MIPS objects\n"
+#~ msgstr "%B: â€žld -râ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ð¾Ð´Ñ€Ð¶Ð°Ð½ Ñ�Ð° Ð¾Ð±Ñ˜ÐµÐºÑ‚Ð¸Ð¼Ð° â€žPE MIPSâ€œ\n"
 
-#~ msgid "No Mem !"
-#~ msgstr "MÃ©moire Ã©puisÃ©e!"
+#~ msgid "%B: unimplemented %s\n"
+#~ msgstr "%B: Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾ â€ž%sâ€œ\n"
 
-#~ msgid "reserved STO cmd %d"
-#~ msgstr "commande STO %d rÃ©servÃ©e"
+#~ msgid "%B: jump too far away\n"
+#~ msgstr "%B: Ñ�ÐºÐ¾Ðº Ñ˜Ðµ Ð¿Ñ€ÐµÐ²Ð¸ÑˆÐµ Ð´Ð°Ð»ÐµÐºÐ¾\n"
 
-#~ msgid "reserved OPR cmd %d"
-#~ msgstr "commande OPR %d rÃ©servÃ©e"
+#~ msgid "%B: bad pair/reflo after refhi\n"
+#~ msgstr "%B: Ð»Ð¾ÑˆÐµ â€žpair/refloâ€œ Ð½Ð°ÐºÐ¾Ð½ â€žrefhiâ€œ\n"
 
-#~ msgid "reserved CTL cmd %d"
-#~ msgstr "commande CTL %d rÃ©servÃ©e"
+#~ msgid "DST__K_SET_LINUM_INCR not implemented"
+#~ msgstr "â€žDST__K_SET_LINUM_INCRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "reserved STC cmd %d"
-#~ msgstr "commande STC %d rÃ©servÃ©e"
+#~ msgid "DST__K_SET_LINUM_INCR_W not implemented"
+#~ msgstr "â€žDST__K_SET_LINUM_INCR_Wâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "stack-from-image not implemented"
-#~ msgstr "pile depuis l'image non implÃ©mentÃ©e"
+#~ msgid "DST__K_RESET_LINUM_INCR not implemented"
+#~ msgstr "â€žDST__K_RESET_LINUM_INCRâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "stack-entry-mask not fully implemented"
-#~ msgstr "masque de pile d'entrÃ©e pas complÃ¨tement implÃ©mentÃ©"
+#~ msgid "DST__K_BEG_STMT_MODE not implemented"
+#~ msgstr "â€žDST__K_BEG_STMT_MODEâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "PASSMECH not fully implemented"
-#~ msgstr "PASSMECH pas complÃ¨tement implÃ©mentÃ©"
+#~ msgid "DST__K_END_STMT_MODE not implemented"
+#~ msgstr "â€žDST__K_END_STMT_MODEâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "stack-local-symbol not fully implemented"
-#~ msgstr "symbole local de pile pas complÃ¨tement implÃ©mentÃ©"
+#~ msgid "DST__K_SET_PC not implemented"
+#~ msgstr "â€žDST__K_SET_PCâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "stack-literal not fully implemented"
-#~ msgstr "litÃ©ral de pile pas complÃ¨tement implÃ©mentÃ©"
+#~ msgid "DST__K_SET_PC_W not implemented"
+#~ msgstr "â€žDST__K_SET_PC_Wâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "stack-local-symbol-entry-point-mask not fully implemented"
-#~ msgstr "masque du symbole local de point d'entrÃ©e de pile pas complÃ¨tement implÃ©mentÃ©"
+#~ msgid "DST__K_SET_PC_L not implemented"
+#~ msgstr "â€žDST__K_SET_PC_Lâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "%s: not fully implemented"
-#~ msgstr "%s: pas complÃ¨tement implÃ©mentÃ©"
+#~ msgid "DST__K_SET_STMTNUM not implemented"
+#~ msgstr "â€žDST__K_SET_STMTNUMâ€œ Ð½Ð¸Ñ˜Ðµ Ð¿Ñ€Ð¸Ð¼ÐµÑšÐµÐ½Ð¾"
 
-#~ msgid "obj code %d not found"
-#~ msgstr "code objet %d non repÃ©rÃ©"
+#~ msgid "[%u]: %u\n"
+#~ msgstr "[%u]: %u\n"
 
-#~ msgid "Reloc size error in section %s"
-#~ msgstr "Erreur de taille de relocalisation dans la section %s"
+#~ msgid ": %u.%u\n"
+#~ msgstr ": %u.%u\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.20200303/bfd/po/uk.gmo ./bfd/po/uk.gmo
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/uk.gmo	2020-03-03 02:13:28.000000000 +0000
+++ ./bfd/po/uk.gmo	2026-03-05 02:15:55.000000000 +0000
@@ -1,141 +1,169 @@
-Þ•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
+Þ•>0 :o
+tÌ��ì�, ,»
-»;»O»h»A‡»?É»:	¼D¼[¼1n¼$ ¼
Å¼Ó¼/ó¼#½%½A7½&y½ ½¹½Ò½ë½û½ ¾;¾[¾t¾‹¾˜¾P«¾ü¾*¿;?¿{¿F�¿6Ô¿6À:BÀ5}À,³ÀDàÀN%ÁJtÁ)¿Á=éÁ:'ÂLbÂ)¯ÂBÙÂLÃiÃÃD–ÃGÛÃ2#ÄVÄhÄ|Ä”Ä©Ä3ÈÄüÄÅ0%ÅVÅfÅvÅ+�Å+¼Å+èÅ#Æ8ÆPÆYÆuÆŒÆ¡Æ(ÀÆ%éÆ&Ç(6Ç)_Ç‰Ç ÇÀÇÝÇöÇÈ1ÈJÈeÈ{È“È§È¾È,ØÈÉÉ.ÉFÉ]ÉlÉ‚É—É±ÉÈÉ1ÝÉÊ Ê-ÊDÊ_Ê#wÊ+›Ê&ÇÊ5îÊ$Ë9ËQËkË�Ë›Ë´ËËËáË$öËÌ4ÌTÌlÌ$�Ì¦ÌºÌÏÌ<èÌ%Í4Í
CÍQÍeÍzÍ ’Í³ÍÎÍÞÍþÍÎ:ÎSÎlÎÎ*�ÎºÎÌÎ&ÞÎÏ0ÏJÏ"^Ï	�Ï‹Ï#žÏÂÏÛÏìÏÐ"ÐAÐ"UÐ#xÐ#œÐÀÐ#ÕÐ#ùÐÑ*ÑHÑfÑlÑyÑ�Ñ†Ñ£Ñ
+ÁÑÌÑÑÑ!×Ñ ùÑÒÒ$Ò<Ò\Ò|Ò�Ò!†Ò¨Ò¹ÒÀÒÆÒËÒÐÒÖÒÚÒ"ßÒÓÓ'Ó;Ó&[ÓB‚ÓÅÓåÓêÓïÓöÓüÓÔÔÔ2ÔFÔMÔaÔrÔƒÔ”Ô¥Ô¶ÔÎÔ	ÝÔ
çÔ
õÔ
+Õ
+Õ
+Õ
+$Õ
+/Õ$:Õ
+_Õ#jÕ
+ŽÕ™Õ«Õ!ÃÕåÕúÕ
+	Ö
Ö	"Ö,Ö
+=ÖHÖOÖgÖ�Ö“Ö¢Ö¹ÖÔÖãÖüÖ×× 2×(S×/|×L¬×ù×Ø+ØFØAbØ¤Ø¾ØØØòØ8Ù@ÙXÙmÙ&‡Ù®ÙÍÙ2èÙ?Ú&[Ú‚Ú(¡ÚÊÚ"ÝÚÛ* Û6KÛ{‚ÛrþÛxqÜêÜÝ7€Ý:¸ÝóÝ,Þ62Þ6iÞ$ ÞÅÞ/åÞß5*ß+`ß$Œß±ß6Ðß"à&*à6Qà=ˆà:Æà:áD<á8�á9ºáCôá:8â7sâ8«â@äâG%ã9mã,§ã0Ôã#ä)ä=Dä-‚ä6°äçä7å3;å;oå:«å(æå"æ32æ%fæ?ŒæÌæ0ìæ1ç>Oç3Žç'ÂçDêçK/è({è2¤è2×è;
+é5Fé2|é/¯éVßéS6êSŠêÞêEüê8Bë,{ë`¨ë`	ìjìˆì$¤ì(Éìcòì4Ví‹í$£íšÈícî|î/•î%Åî"ëî-ï+<ï)hï-’ï.Àï$ïï0ð6Eð(|ð$¥ð&Êð2ñð&$ñkKñ*·ñ*âñ4
ò]BòA ò?âòG"ójóO‰óbÙó8<ô,uô+¢ô)ÎôYøô0Rõ=ƒõ3Áõ2õõB(ö,kö(˜öLÁö÷4,÷)a÷$‹÷3°÷9ä÷6ø/UøD…ø&ÊøWñømIùg·ùëúUû\aûH¾ûHü8Pü%‰ü(¯ü&Øü,ÿü#,ý>PýB�ýBÒýþ'5þE]þ4£þ1Øþ9
+ÿ4Dÿ3yÿJ­ÿ(øÿ;!]0|D­/ò:"@]@žGß?'2g8šSÓ''.O,~'«6Ó 
+Y+/…4µ5êN ªoI9d3ž¾Ò<‘<ÎFJRL�OêC:	^~	4Ý	P
+oc
+>Ó
+F`Y~ºF9‚€[
3_
@“
MÔ
m"7�#Èì(&+IRWœ+ô5 Vk8"¸$Û'9(Cb!¦!È*ê/1E/w/§0×*03<di¡=BI=Œ9Ê-&2"Y.|«8Ë:F??†VÆB;`7œ(Ô>ý=<4z#¯OÓ@#LdQ±I8M+†8²2ë9:X3“,Çuô j.‹.º$é'06Bg/ª,Ú'%/,U‚CœJà8+@dJ¥*ð% %A <g 1¤  Ö (÷ l !/�!<½!<ú!+7"c","H¬"6õ"A,#An#J°#>û#J:$J…$<Ð$#
%<1%*n%.™%(È%lñ%v^&AÕ&6'N'4l'0¡'+Ò'Aþ'J@(3‹(@¿(!)#").F)Bu)F¸)4ÿ)%4*:Z*2•*3È**ü*9'+Ca+C¥+:é+T$,Jy,5Ä,4ú,@/-6p-$§-PÌ-../L./|.&¬.:Ó.+/&:/5a/'—/0¿/5ð/3&0%Z0&€0§0'Ç0=ï0#-1+Q13}1(±1@Ú1C25_2'•2 ½2&Þ243g:34¢3m×3AE4@‡4HÈ4G5KY5I¥5Lï5H<6C…6YÉ65#70Y74Š7M¿7N
81\8)Ž8)¸8/â8)9+<97h93 96Ô99:XE:[ž:Cú:6>;>u;=´;*ò;.<2L<[<&Û<-=,0=+]=‰=8¤=Ý=/ø=0(>'Y>8�>Hº>A?)E?=o?#­?@Ñ?2@+E@#q@5•@<Ë@'A%0A(VARA?ÒAFBYB3tB1¨BDÚBHCDhCK­CaùC[[Ds·Dg+Eg“EBûE‚>FTÁF=G!TG-vGb¤GbH{jHgæHgNI0¶I(çI4J5EJO{J)ËJ3õJ-)K/WKH‡KFÐK7LGOL+—LNÃL$M27M!jM.ŒM/»M+ëM)N-AN/oN^ŸNKþNFJO‘O"­OÐO5ëO"!P(DP$mP7’PBÊPA
QDOQS”Q"èQ*R+6R'bR;ŠR8ÆR'ÿR''S3OS>ƒS-ÂS5ðS,&TIST�TºT.ØT/U7U$WU|UFšU&áU!V6*V5aV)—VÁVÛV(úV#W+=W2iW œW$½W#âW.X.5X%dX2ŠX3½X)ñX\YDxYH½YDZLKZX˜ZHñZ):[*d[ �[5°[9æ[@ \+a\6�\mÄ\A2]gt]ëÜ].È^]÷^MU_3£_=×_H`<^`8›`3Ô`4a4=a0ra0£a@Ôa1bBGbLŠbA×bLc8fc+Ÿc2Ëc<þc3;dXodPÈd.e`He&©ePÐe\!fX~fp×fAHg#ŠgE®g+ôgK h.lh<›h,ØhXi,^i‹i¡iµi"Íi%ðij36j2jj�j4½j?òj@2kWsk=Ëk*	l54l%jlB�l%Ól4ùl>.m<mmCªmBîm;1n3mn^¡n)o$*o!Oo'qo8™oÒoòopp!(pJp)`p,Šp-·p$åp
+q1q_Oq-¯q3Ýqr/&r5VrVŒrIãrI-s<ws.´s.ãs5t/Ht;xt´tÇtÛt0ít/uNu'hu7�u)Èu(òu6v'Rvzv1’vÄv
Øv.ævw
!w/w%@w\fw;Ãwÿwx'x*xGxTx	mxwx‰xšx,§xÔxèxþx"y=y(Zy/ƒy/³y1ãy8z#Nz'rz2šz3Íz{;{M{T{\{q{�{ˆ{�{¤{¹{Î{à{ó{
+|!|3|Q|	p|z|˜|
­|	»|"Å|è|ú|"}9}P}Y}e}i}|}Ž} }'²}Ú} ÷}#~<~V~p~Š~¤~¾~Ø~ò~ %HC1Œ#¾,âB€XR€a«€:
�.H�7w�1¯�;á�(‚:F‚,�‚-®‚'Ü‚"ƒ-'ƒUƒ2tƒ§ƒ·ƒÌƒáƒøƒ!„$0„,U„(‚„-«„IÙ„#…5@…v…
+‹…C–…IÚ…$†6†>†F†
d†r†>„†?Ã†A‡E‡/a‡+‘‡8½‡ö‡$ˆ!1ˆ1Sˆ…ˆ¤ˆ+Ãˆïˆ‰‰
+)‰4‰BS‰–‰%¨‰Î‰à‰.þ‰--ŠG[Š3£Š×Š"öŠ‹6‹G‹X‹j‹$ƒ‹¨‹!Å‹ç‹5ù‹/Œ	AŒKŒ]ŒsŒ“Œ­ŒÉŒØŒêŒXñŒ	J�T�Y�e�t�‹�§�½�Ï�ï�Ž(Ž<ŽNŽfŽ-„Ž²ŽÄŽÖŽêŽ�'�A�P�b�t�{�!‚�¤�:À�%û�%!�G�`�Ay�;»�C÷�;‘#U‘,y‘=¦‘Cä‘=(’"f’7‰’<Á’<þ’);“5e“›“¤“v¿“*6”a”'s”H›”ä”ö”ý”•
+•(•G•'Y•�•ž•¶•Î•#æ•
+–,"–.O–,~–.«–Ú–"÷–,—.G—!v—1˜—0Ê—2û—,.˜.[˜#Š˜®˜Î˜(â˜/™!;™]™(z™#£™+Ç™ó™,š 9šZšsš“š§šÇš#æš-
+›"8›[›m›€›Œ›¡›&³›	Ú›Fä›/+œE[œ¡œ-²œJàœM+�y�™�°�Ã�-à�ž*žBž`žtž|žAˆž>Êž	ŸAŸ7]ŸB•Ÿ!ØŸAúŸ< ˜\ õ ¡#¡5¡:J¡#…¡2©¡.Ü¡#¢8/¢3h¢9œ¢Ö¢ã¢ð¢££:!£+\£#ˆ£¬£¿£Ø£ð£,¤:5¤p¤	ˆ¤d’¤÷¤6
+¥;A¥;}¥<¹¥gö¥b^¦<Á¦1þ¦(0§$Y§~§/”§+Ä§ð§¨
+&¨1¨N¨>j¨<©¨æ¨4©'7©$_©6„©»©Ì©ä©û©ª$ª<ªNª`ªrª„ªžª¹ªËªÜªôª`«2t«§«'Á«Lé«46¬7k¬0£¬'Ô¬ü¬­1­C­R­-l­+š­+Æ­*ò­	®	'®
+1®
+<®G®[®g®t®‰®¤®³®È®×®1Ü®¯/.¯^¯}¯ Ž¯'¯¯'×¯&ÿ¯0&°W°u°Š°“°±°9È°-±10±b±,w±a¤±2²49²)n²C˜²EÜ²Y"³Y|³;Ö³;´MN´/œ´5Ì´:µ5=µ4sµ9¨µ7âµ9¶DT¶G™¶Dá¶E&·Cl·-°·,Þ·0¸4<¸>q¸;°¸8ì¸6%¹;\¹3˜¹%Ì¹1ò¹!$ºVFº9�º\×ºA4»1v»?¨»1è»:¼7U¼>�¼$Ì¼Eñ¼u7½q­½I¾i¾4†¾O»¾Z¿/f¿O–¿Pæ¿37À kÀ?ŒÀ:ÌÀ&Á
+.Á9ÁMÁ0ZÁ%‹Á"±Á%ÔÁ0úÁ!+ÂMÂfÂ�Â–Â£ÂS²ÂOÃVÃ,uÃ7¢ÃÚÃ
ÜÃêÃ1ùÃ+Ä?ÄRÄeÄC‚ÄOÆÄ,Å6CÅzÅ$šÅ_¿Å"Æ(BÆAkÆ­Æ,ËÆ2øÆH+ÇtÇ„Ç
+•Ç" Ç
+ÃÇ$ÎÇóÇÈ&È¼<È¹ùÈ³É/ÅÉõÉÊ.Ê*NÊLyÊ2ÆÊ-ùÊ)'Ë"QËtË‡ËœË±Ë2ÀËóË0ûË,Ì%GÌmÌ9zÌ´Ì<ÆÌ=Í3AÍ5uÍ2«Í7ÞÍBÎLYÎ¦Î·ÎÑÎÙÎáÎýÎHÏMÏ4PÏ&…Ï¬ÏµÏ
+ÌÏ×Ï2óÏ-&ÐOTÐ¤ÐÃÐ"ÈÐ*ëÐ%Ñ<ÑDÑCcÑ¤§ÑLÒYÒ sÒL”ÒáÒêÒþÒÓ)Ó?ÓVÓsÓ„Ó–Ó¢Ó¯ÓÃÓEËÓ*ÔN<Ô[‹ÔçÔAëÔ-ÕLÕ,dÕ‘Õ®Õ6ÆÕýÕ Ö8>Ö+wÖ£ÖµÖÅÖÍÖ'âÖ+
+×+6×+b×*Ž×*¹×)ä×(Ø7ØOØcØwØ‹ØžØ
±Ø¿ØIÙØ#Ù 4ÙUÙDtÙP¹Ù
+ÚÚ27Ú$jÚ�Ú¯Ú5ÂÚøÚ!Û5Û<Û2DÛFwÛJ¾Û/	ÜF9Ü€Ü"’ÜµÜÅÜMÔÜ9"Ý;\Ý7˜ÝÐÝèÝÞÞ,'Þ$TÞJyÞ)ÄÞ(îÞ%ß(=ßfß
+‚ß,�ßºß)Ôßþßà6àNàVànà)†à°à
Æà#Ôàøà'á8áIá_áyá–á°á#¼á%àáâ#â:âLâ7câ›â·â%Ðâöâã%ã7ãJã^ãrãˆãJžãJéãJ4äIä:Éäå-#å;Qå+�å@¹å<úå47æ6læ-£æ8Ñæ5
+ç5@ç8vç.¯ç>ÞçIèhgèyÐè>JéN‰éIØéd"êY‡ê0áê;ë8NëF‡ë/Îë5þë&4ì.[ì-Šì.¸ì0çì3í<Lí!‰í«í!Äí)æíEîZVîV±î`ïGiïZ±ïUð.bð,‘ðh¾ðj'ñE’ñ0Øñ6	òk@òE¬òòò&óQ7óS‰óEÝó\#ôH€ôHÉô#õ<6õ<sõe°õQö2hö/›ö/Ëö4ûö=0÷9n÷0¨÷7Ù÷%ø'7ø=_ø6�ø@Ôøù25ùhù,lù
™ù
§ù
µù
Ãù!Ñù:óù
.ú"<ú_ú
nú)|ú)¦úÐúåú+ùú%û4û9û>ûCûHûOûbûiû=oûZ­û
þ þ87þ>pþˆ¯þ‰8ÿ‚Âÿ9E"B¢\åB8QZŠåçuÿ:u*°%Û+-0?2p1£/Õ#
)$7©\<pCI´&þ§%_ÍS-W�]ÙY7k‘}ý‚{	Sþ	„R
+y×
+ˆQQÚm,{š'
$>
…c
}é
„gì
+-L+fH’&Û"]%ƒ™©7É779%q(—À%É,ï%NB>‘?ÐFAWH™#â''.V$t?™!Ù&û"#B'f#Ž²LÑ%.!T-v¤·×!ò4PNŸ»(È'ñ G:V‚GÙO!q(†$¯!Ô%ö:VqK�%Ù4ÿ&4[?v¶Ñ î<L[
jx�#«4Ï#@@1�0³ä#'@CU™°2Çú;MGa©¼#Ïó ( $A 7f ž 3² #æ #
+!.!#F!#j!Ž!;¢!8Þ!""3";"-@"Fn"
+µ"À"Å".Ë"*ú"%#*#*/#(Z#.ƒ#²#·#N¼#$'$.$4$9$>$D$H$IM$—$(œ$;Å$,%V.%k…%(ñ%&&$&+&1&6&P&!W&y&“&š&´&Ê&à&ö&'6"'Y'	s'
}'
‹'
+™'
+¤'
+¯'
+º'
+Å'_Ð'0({G(
+Ã(5Î(1)H6)1),±)Þ)"ð)**<*P*-W*Q…*7×*+;(+1d+–+?°+ð+,=,8E,Q~,^Ð,“/-,Ã-ð-Q
+.6\.A“.@Õ.#/$:/_/�}/&0720,j0I—0Dá0&1GA1B‰1KÌ1F2=_2�21´2Iæ2,03P]3¹®3¸h4­!5/Ï5'ÿ5Y'7f�7è7U8aX8oº8C*9+n9sš9<:nK:rº:A-;To;šÄ;H_<Q¨<\ú<RW=Nª=Où=]I>L§>Nô>\C?N ?Lï?L<@‘‰@ŽA¨ªA�SBDñB66CbmCqÐCWBDašD/üD~,E\«EvF›FVG0rGU£GSùGwMH@ÅH†IS�IráIwTJJÌJ£Kª»KJfLU±LUM‚]MXàMi9NX£N¶üNˆ³OŸ<P9ÜP˜Q‰¯QT9R—ŽR—&S¾S4ÜSKTK]TÏ©TuyU4ïUK$VZpV,ËW;øWH4X>}X<¼XXùXDRYB—YFÚYS!Z>uZO´ZQ[QV[8¨[Oá[Q1\{ƒ\þÿ\Cþ]CB^{†^î_xñ_kj`ƒÖ`#ZaÂ~aæAb_(cVˆcXßc:8dÈsdb<eiŸez	f^„fmãfVQgr¨g†h1¢hnÔhUCiI™ilãiePj]¶jek|zk:÷kË2lÝþl×Ümð´n‡¥p©-q…×q…]rwãr@[sPœsNísL<t<‰tmÆtŠ4uo¿u'/vTWvw¬vs$wj˜w›xtŸxƒy˜y‡ z³({LÜ{U)|”|`}yu}‰ï}…y~–ÿ~Œ–c#€l‡€¢ô€H—�Xà�X9‚L’‚oß‚FOƒ¼–ƒ^S„j²„k…º‰…:D†Œ‡pˆl}ˆoêˆmZŠmÈŠ|6‹|³‹~0Œ�¯Œq1�®£�LRŽ�ŸŽä-�e�tx�¶í�÷¤‘ˆœ’ä%“¬
+”P·”g•up•Éæ•P°–U—*W—]‚—Uà—h6˜~Ÿ˜[™Rz™$Í™6ò™²)šMÜšH*›Vs›³Ê›…~œ5�5:�]p�FÎ�Vž]lž_ÊžT*ŸUŸTÕŸI* �t ¡`…¡æ¡Nf¢Kµ¢E£JG£c’£2ö£j)¤e”¤�ú¤v|¥Ìó¥sÀ¦c4§_˜§<ø§b5¨¡˜¨m:©3¨©~Ü©Š[ª_æªžF«›å«^�¬Là¬®-­|Ü­½Y®p¯zˆ¯z°~°?�±TÝ±T2²:‡²=Â²c³rd³S×³S+´V´VÖ´J-µ9xµt²µ„'¶b¬¶~·“Ž·U"¸Jx¸IÃ¸|
¹`Š¹Jë¹W6ºŽºZ”»‚ï»‚r¼Lõ¼B½Ub½q¸½z*¾¼¥¾¾b¿�!Àc¯À—Á�«Á�9Â:»ÂŠöÂF�ÃNÈÃCÄü[Ä
+XÅ³cÆbÇFzÇJÁÇLÈEYÈ“ŸÈ¯3É‚ãÉ{fÊ=âÊH ËbiËšÌËÞgÌ^FÍI¥ÍsïÍqcÎcÕÎT9Ï�ŽÏÛÐÛúÐ§ÖÑ�~Ò¢Óg¿ÓZ'Ôk‚ÔkîÔBZÕÇ�ÕSeÖS¹Ö]
×Wk×xÃ×S<Ø^�Ø�ïØ;qÙT­ÙaÚ^dÚEÃÚ@	Û<JÛW‡ÛrßÛ>RÜU‘Ü—çÜ;Ýy»Ý{5Þ^±ÞEß-Vß?„ßnÄßÖ3àq
+áž|ásâo�â}ÿâ|}ã€úãk{ä’çä~zå�ùå®{æh*çh“çVüç¡Sè²õèf¨égêIwêWÁêZëbtël×ë‚Dì¢Çìhjí²Óí†î_“ï óï‰”ðoñ†Žñlò\‚òÄßò[¤óqôprôRãô>6õauõ%×õfýõtdö`Ùök:÷t¦÷jøV†ø—ÝøBuùo¸ùž(úSÇúsûa�ûvñûLhü2µüCèü™,ý‡Æý—Nþ<æþ\#ÿ�€ÿˆl‹zø»sä/áïöíæíÔ€Â2CÔvªK	=ö	R4
+Ú‡
+äbGßN
é.c<|r¹g,|”D^VWµE
gSe»\!¯~q.� J1w|:ô^/]ŽUìEBeˆjîÔYŽ.|½6:2q4¤aÙ9;Zu?ÐRucuÙxO¢È@kT¬SPU~¦r% G˜ Ià T*!‡!W"U_"cµ"™#/³#Bã#Y&$Z€$8Û$=%4R%j‡%Eò%C8&[|&cØ&P<'<�'@Ê'I(;U(H‘(ZÚ(A5)Ew)D½)_*]b*EÀ*i+jp+@Û+¬,ŸÉ,µi-y.Š™.¶$/»Û/K—0<ã0= 1b^1`Á1u"2s˜2c3åp3tV4ßË4ø«5h¤7Â
8ÌÐ8��9z:˜š:p3;q¤;†<k�<m	=qw=qé=‚[>NÞ>\-?gŠ?\ò?oO@L¿@jA}wAoõAneB°ÔB›…C`!Dô‚DMwEœÅEºbF¶GâÔG�·HIUI†ŸIZ&Jt�JYöJjPKg»K‚#Ld¦LM%+MQM9pMWªMCNiFNS°N;Oj@OS«OhÿO¬hP‘QD§QxìQ?eR‚¥Rh(Sn‘SžT�ŸTž-U¦ÌU•sV^	WµhWTX:sXC®X;òXf.Y>•YÔYôY"
Zd0Z%•ZL»ZR[Q[[V­[\Y#\Š}\[]ad]?Æ]a^Lh^�µ^xC_x¼_c5`Q™`Që`r=aU°azb*�b¬b2Ìbhÿbohc+ØcGdjLdW·dPeh`e?Ée	fI)f+sfŸf:·fòfg%g*@g«kg€h$˜h3½hñh6ôh+i;Fi‚i•i¯iËiKåi1j%Jj+pjSœj3ðjR$kQwkaÉkj+lr–lR	mV\mf³mgn‚n€›no/o,@omo†o™oªoÀo×oîop?#p?cp"£p:Æp;q=q1Tq8†q¿qØqKëq7rRIr?œr<Ür
+s $sEs+Isus‡s™sH«s8ôsI-tFwt4¾tótu/uMuku‰u1§u<Ùu9vkPve¼vG"wYjwvÄwÆ;xÁylÄyp1zo¢zu{Šˆ{U|‚i|vì|gc}>Ë}B
+~[M~H©~Oò~%B<h<¥@â#€>?€0~€=¯€ªí€>˜�×�*W‚o‚‚1ò‚$ƒiCƒ²­ƒ`„r„z„*‚„ ­„Î„là„mM…�»…aL†g®†N‡Ve‡4¼‡gñ‡gYˆ£ÁˆOe‰Oµ‰€ŠE†Š#ÌŠðŠ
‹Q‹‡k‹ó‹BŒHŒ4ZŒu�ŒT�‰Z�xä�A]Ž?ŸŽ>ßŽ�=�\�'n�+–�>Â�4�6�YH�¢�´�Ó�/å�M‘/c‘<“‘ Ð‘ñ‘’¹
+’Ä’
+Ó’Þ’î’ “,-“Z“z“5”“)Ê“3ô“(”!D”"f”2‰”]¼”&•A•W•*w•1¢•UÔ•#*–N–`–r–y–=€–'¾–Gæ–2.—2a—>”—*Ó—fþ—fe˜†Ì˜;S™Y�™9é™v#š|ššV›Pn›_¿›pœp�œQ�iS�½�'Ø�æžAçž)Ÿ;;Ÿ�wŸùŸ   6 dV » EÍ +¡%?¡'e¡"�¡0°¡&á¡]¢Kf¢]²¢K£9\£D–£]Û£G9¤O�¤bÑ¤k4¥Y ¥]ú¥KX¦>¤¦Hã¦&,§mS§nÁ§70¨5h¨?ž¨:Þ¨R©%l©M’©7à©%ªF>ª&…ªA¬ª@îªH/«Tx«LÍ«¬,¬+J¬)v¬! ¬\Â¬­l,­a™­­û­©®UÈ®¦¯•Å¯9[°(•°5¾°9ô°6.±e±Yn±SÈ±/²L²_²uv²fì²S³we³^Ý³~<´M»´˜	µO¢µ4òµ''·O·o·$�·a´·Y¸op¸bà¸CC¹N‡¹KÖ¹O"ºrº‚º’º¯º?¼ºpüºfm»VÔ»#+¼AO¼‘¼%©¼XÏ¼r(½4›½#Ð½Ìô½%Á¾Yç¾cA¿c¥¿o	À¹yÀ´3Á[èÁEDÂ<ŠÂ/ÇÂ÷Â\Ã`rÃHÓÃ@Ä]ÄUnÄMÄÄ™Å�¬ÅE<Æ£‚Æ˜&ÇH¿ÇZÈ+cÈ>�È1ÎÈ+É>,É8kÉ,¤É,ÑÉ,þÉ,+Ê@XÊ:™Ê,ÔÊ+Ë6-ËKdË¾°ËHoÌ-¸ÌMæÌ}4Í_²ÍoÎ\‚ÎMßÎ7-Ï8eÏ)žÏÈÏ0äÏjÐh€ÐhéÐlRÑ¿ÑÖÑíÑÒÒ7ÒDÒ+WÒ:ƒÒ¾ÒÖÒëÒúÒ8ÓF<ÓWƒÓ.ÛÓ
+Ô3'ÔG[Ôt£ÔqÕPŠÕ.ÛÕ
+Ö%Ö;.ÖEjÖX°ÖR	×R\×2¯×€â×ácØ]EÙn£Ù`ÚesÚ¤ÙÚ«~Û¦*Ü}ÑÜ{OÝØËÝl¤Þ]ß˜oßvàsàpóàvdápÛáŠLâ˜×âŽpã�ÿã‹�äcåb€å\ãå`@æ�¡æŒ1ç’¾ç�Qè[ßèR;é;ŽéEÊéDê—UêsíêÏaëh1ìjšìlí^rívÑíiHîr²îO%ï¥uï¬ðšÈðˆcñAìñ`.ò»�òÀKópô¦}ô¯$õQÔõ>&ö\eöWÂöJ÷e÷|÷–÷H©÷Fò÷O9øH‰øeÒøT8ù5�ù1Ãù1õù%'úMú°gú•ûO®û�þûq�üý%ý")ýSLý ý´ýÇýBÚýdþ„‚þ\ÿ…dÿFêÿN1Ì€NMhœ�B£eæ]L˜ª'C"kŽ7£ÛGõ/=7m8¥§Þ¨†/	_K	8«	8ä	J
+wh
+¨à
+`‰cêVNL¥ò
,-
#Z
k~
êoùMiX·ˆ!?ª–ê”�}q”ƒŠ“
+�ž <9]—Ÿ9§á«ø¤`©R
+];s¯!Ëoí`]Ï¾CŽ
+ÒIÝX'a€âHþuG>½üI]d½Â€%”&º'á'	(1'Z#‚ ¦ÇÔç x	 S‚ ŒÖ Ñc!5"|<"A¹"3û"M/#9}#7·#qï#Na$O°$p%bq%+Ô%,&-&5&QR&U¤&Uú&UP'T¦'Tû'SP(R¤(%÷()7)K)_)r)…)6¢)²Ù)Œ*.£*DÒ*¸+‹Ð+$\,3�,gµ,9-3W-"‹-c®-7.RJ.�.
¬.cº.l/€‹/_0‡l02ô0<'1d1t1Žƒ1}2o�2�34Ž3KÃ3*4:4dS4G¸4˜5h™5L6=O6b�66ð6'7YA70›7ZÌ7H'8@p8B±8ô8(9(.9AW9-™9Ç9Xç91@:Sr:*Æ:/ñ:5!;4W;,Œ;¹;2Î;^<9`<3š<3Î<3=i6=< =CÝ=:!>'\>„>£>¿>Ü>ú>?8?žX?�÷?‡…@“
Ah¡A)
+BH4Bb}B]àBz>C|¹Cg6DxžD_E‡wExÿEzxFzóFznG–éGÙ€H(ZI-ƒJ—±K±ILÓûLÏMÃîNW²Oa
+P_lPwÌPoDQt´QQ)R`{RWÜRX4SZ�S]èSbFTL©T5öTL,UPyU ÊUœkVÀW¼ÉWœ†XØ#YÎüY`ËZ^,[´‹[Ò@\q]r…]{ø]ät^�Y_Oé_S9`Ã�`âQa¿4b±ôb�¦c�4dQÂd¬e¬ÁeðnfÛ_gv;hX²hTi_`iuÀiZ6j‘j`kTrkjÇkÐ2l“m³—mBKn^Žnín7ôn,o@oToco(roV›oòo)p+p@p0Tp0…p¶pÑp2æpq.q3q8q=qBqIqbqiq^oqjÖ¼ÂW8åì‰³-âtÏ›•áÁ*˜lUCÔVÚõè_Tˆù*Ê�­�KÊ¬D~<Ýt
+¼…€Ö¾‹ ¤ËŸ¤æ'™Ã®Ñ#ˆ&dŒê´œt%"o*ùsUò±Æl¨„ñu¹
/è;øÒçoÙæz·çCôë ú�#o%Ö&é;g!î±
ówÙ±’yRñH1 ¢<¡Y…�ŽrkÜèÓ«Š‘Êþÿ‰„á–ûÝ	[Žq„fsæ ®ˆsØ_•ÎÌ"žÕÉÅä€œn çùÔYC¿4ÃiW"²�5àß*¥íæö2?U–ƒ{k9QšPEÚµÑ·D:Å¶—@ùhê9´2·Or‡C¶(íy3™þ|>ö5P	lZÇ0Ð®rC¡œ‹càZöh6¥�Zû¥ïÃm¤ÑêwOk‚…¦™‘y›Ó0ï=³wáˆI’câ�Ý»¢çI°žäË}•U»M”»ÿ!×É@S657=�ÅWy¶Š(
+÷¢Ê^²—:r%Sô¦Šñ[¥¦§š“‡ß;ùŒñ©ôëãÕ[“«Ïý¨Œs4Ížìñ³ÆRO€Ä¬%mi×(í\v'uF¿<‹eÀO3q`alHš˜×ê�ÃÆãÓ§3Å9ëÍNí6ªˆ'Hœî\z®ï½Ve÷S4"°9a¡h$KÇ_ôÔA6š‚Ó£•vI8EØ#5?ó0G°-�Ü­Q/Æ«�¯Q B%[šYÉë/]!8\Ãð+÷'9§�
+A
óÍÁ^vzæBüTÕ~ÎÏÔWNL{5V,~$.E²7Vx/Þ³!±Úx
+Òú?<Ûû}Þß[oœ(Ç¥s6‰m¯Ñ G†náòÎnÚïGå+õ°ƒJËTC|Hd] `AµÇV”-µÕiï0ËG‚
îÓ8Í²@›p¸p&å–sÙ.-=¯f‡!|Ê©R"Ô¸îz¨Á£ŒçIàmÀÒ™R¼ŸðdÿgÚj>	u]$ðªŸ€ìÀÿ¯
+ú.ÛNµÛ¼‘DÄ	f­=uM3q™n5óºù­wx�
+Y.[j�õ1�h` ZÞ¾DöçÙbYKeÉBî¨òQ¨!ÏäP}àûùaÈx}ß,òLìgý¸ÒÁ6Šb�¡ÔãN\ü9÷Ä&Àée½ÔØD¦¾åé�Ü´´”á˜Io+ˆJÈÍ÷Ï‡Y�uOK©/m“¸|VM�§®Ù'`ë4`:˜môB!Ÿ±Û”Ü°‚;£52#fàO+,$1¤Ö©iTUî¡F)x¼â¨v'üÜ
Ä²ú¨;»�Õtÿ^üï|>=a%Jåê70l’=GŽ„ÕT9žŽ+>)>8ì”Ðvâ—?�±Z¿?nÂŸ­H¶x¼‚Fcó*.ÎYå<^-db®Ï	Ûã>×Ñ†õ¢Q]	áÌ¶Îz¹Œñ_L³{_N!þ¤ÌÈø.Ÿ{:<4—ÐÙ•fâvd>…ô–@ûÃXÒ#2#BQ¾XuÆà­[�†žuÒ%4�>õD£;BF“AW¬ñõbJNÎ�^'’Ð�ú82¬�Ð¦4bÙ»;…oX„6X�¬ƒ gÅ#{ûays&mÌÂR&w<SýÛ
+ø®L„]½‡^¾{¿KF8:|bš7
e¸†)JÍ‰÷G€7È7äŽU„Xëˆ´@€äy˜¹Éöhìõ+tD�È~†_˜i1+øÞºÝ¿è(zè©ÿ‹úUÈúüÞrÖž57zSk‘1Æ¾÷¥8)d](äé°þºI¼,qÞðŒ-š]EÄ
,ªM‘e×iËý‡0K:¬�XlÌµ¶ûøò×ìƒgô Š¾‚ëkp¹ÇM2¹$Ì)"‰Cf·\œêÇÉ,}–ƒ–åóLé›LÁLâÌÃ�HpI´�¤3&:f ð}"™3Qµeó
+²Ñ½G“¯*¿—FÐéoýt%&Ž·‰d$×q-ÜÂÀØ)ªŽqî•ß;ÊÝ¢pZÄV½Rh“
+ƒ`€$º?Sj‹p«<£~Á›)§”aJ ¤í°áxíAtSüÂ9ËÓµ´í\ªWJ¯,ã…P{Ó	}6/TgØ•‡OÈ™BâÛ$›ø³§RF“æ�cŠ‚1¹*øàb³ÒÄl”¬c¦cA˜c?’£þã¢­œ–ðr‹½»MZèêAj†#pÆq›é¶—Ð‰ÎË‹ü‘k—ä'�,Ÿ~Šþ·/ÊØ†_P`n§~ÇÀ¡jÝj«º@¯«(Ú/WHTÚÍi|Þ½’aÀ©rƒwÏÿÕ·ý¸�:"^±E\E0’3Ø*²þÅÖkª7ðÅ-¥yòžÝ1ãï»ç(ß ‘ö.	2©0ÂEPÖN2)Üè¿¹Âgwh£ªß=v…nÑ¡M¢ö4�Pæ¸ÁÉ=òŒKºý.º« X13@¦ÎqÕqÜqãql¢€¢œ¢°¢Ä¢Ø¢ì¢££(£<£P£d£x£Œ£ £´£È£Ü£ð£¤ ¤4¤H¤\¤p¤„¤˜¤¬¤À¤Ü¤ð¤¥ ¥D¥`¥t¥ˆ¥œ¥°¥Ì¥à¥ô¥¦$¦8¦L¦`¦t¦ˆ¦œ¦°¦Ä¦Ø¦ì¦§$§@§T§h§|§�§¤§¸§Ì§è§¨ ¨4¨H¨\¨p¨„¨˜¨¬¨À¨Ô¨è¨ü¨©$©8©L©`©t©ˆ©œ©¸©Ô©è©ü©ª,ª@ªTªhª|ª�ª¤ª¸ªÌªèª««4«P«l«ˆ«œ«°«Ì«à«ü«¬,¬@¬\¬p¬„¬˜¬¬¬À¬Ô¬è¬ü¬­,­@­\­p­Œ­ ­´­È­Ü­ð­®®,®@®T®h®”®°®Ì®à®ü®¯$¯8¯L¯`¯t¯ˆ¯œ¯°¯Ä¯Ø¯ì¯°°(°<°P°d°€°”°¨°¼°Ð°ä°ø°± ±<±P±d±€±¤±À±Ô±è±ü±²,²@²T²h²„²˜²¬²À²Ô²è²ü²³$³8³L³h³„³ ³´³È³Ü³ð³´´,´H´d´€´”´¨´¼´Ð´ä´ø´µ µ4µHµ\µpµ„µ˜µ¬µÀµÔµèµüµ¶4¶H¶\¶x¶Œ¶ ¶´¶È¶Ü¶ð¶··,·H·d·x·”·°·Ì·è·ü·¸,¸@¸\¸x¸Œ¸ ¸¼¸Ð¸ä¸ø¸¹ ¹4¹H¹\¹x¹Œ¹ ¹¼¹Ð¹ì¹ºº(º<ºPºdºxºŒº º´ºÈºôº»êqÿÿÿÿrÿÿÿÿ.r"ÿÿÿÿdr ÿÿÿÿžr ÿÿÿÿØrÿÿÿÿs ÿÿÿÿ5s5ÿÿÿÿqs%ÿÿÿÿ�s)ÿÿÿÿÍs(ÿÿÿÿüs/ÿÿÿÿ2tÿÿÿÿNt'ÿÿÿÿ|tÿÿÿÿ´t-ÿÿÿÿâtÿÿÿÿÿt7ÿÿÿÿ8uÿÿÿÿcu ÿÿÿÿ‹u%ÿÿÿÿÈuÿÿÿÿüu*ÿÿÿÿ'v.ÿÿÿÿWv)1ÿÿÿÿ±v%ÿÿÿÿ×v9ÿÿÿÿw
+2ÿÿÿÿMw"ÿÿÿÿ�wÿÿÿÿ¨w9ÿÿÿÿøw%ÿÿÿÿ+x
+Hÿÿÿÿx
+/ÿÿÿÿÖx)ÿÿÿÿy
+6ÿÿÿÿWy
+>ÿÿÿÿŸy
+0ÿÿÿÿÙy
+Fÿÿÿÿ)z
+ÿÿÿÿkz
++ÿÿÿÿ z
+ÿÿÿÿÈz
+"ÿÿÿÿôz@)ÿÿÿÿc{
+/ÿÿÿÿœ{
+ ÿÿÿÿÆ{-ÿÿÿÿ
|6ÿÿÿÿY|6ÿÿÿÿ¤|
+7ÿÿÿÿå|
+?ÿÿÿÿ.}
+Aÿÿÿÿy}
+AÿÿÿÿÄ}
+ÿÿÿÿé}ÿÿÿÿ~+ÿÿÿÿS~-ÿÿÿÿ�~3ÿÿÿÿÁ~
+-ÿÿÿÿø~(ÿÿÿÿ4
+-ÿÿÿÿkÿÿÿÿ�6ÿÿÿÿÚ>ÿÿÿÿ€#ÿÿÿÿJ€ÿÿÿÿ†€ÿÿÿÿÂ€
+2ÿÿÿÿþ€
+.ÿÿÿÿ6�Fÿÿÿÿ}�
+2ÿÿÿÿ¹�
+2ÿÿÿÿõ�
+2ÿÿÿÿ1‚
+2ÿÿÿÿm‚
+2ÿÿÿÿ©‚
+2ÿÿÿÿå‚Fÿÿÿÿ,ƒ
+9ÿÿÿÿoƒ
+7ÿÿÿÿ°ƒ
+9ÿÿÿÿóƒFÿÿÿÿ:„Fÿÿÿÿ�„	2ÿÿÿÿ¼„+ÿÿÿÿî„.ÿÿÿÿ#…+ÿÿÿÿU…-ÿÿÿÿŠ…0ÿÿÿÿØ…"ÿÿÿÿ†!ÿÿÿÿJ†
+*ÿÿÿÿ€†
+AÿÿÿÿË†
+dÿÿÿÿ9‡
+$ÿÿÿÿg‡1ÿÿÿÿ£‡1ÿÿÿÿÕ‡
+ÿÿÿÿò‡5ÿÿÿÿ@ˆ&ÿÿÿÿtˆ=ÿÿÿÿÄˆ&ÿÿÿÿ‰+ÿÿÿÿW‰ÿÿÿÿ‹‰]ÿÿÿÿø‰!5ÿÿÿÿOŠ
+3	ÿÿÿÿ•ŠÿÿÿÿÇŠKÿÿÿÿ‹<"ÿÿÿÿq‹
+ÿÿÿÿ›‹$ÿÿÿÿÔ‹ÿÿÿÿŒ;ÿÿÿÿ„ŒAÿÿÿÿäŒÿÿÿÿ
�2ÿÿÿÿG�ÿÿÿÿx�ÿÿÿÿª�=ÿÿÿÿù�Iÿÿÿÿ\Ž(ÿÿÿÿšŽIÿÿÿÿýŽ!ÿÿÿÿ3�!ÿÿÿÿc�ÿÿÿÿ”�+ÿÿÿÿÁ�=ÿÿÿÿÿ�+ ÿÿÿÿL�5ÿÿÿÿ‚�@ÿÿÿÿÇ�
+%ÿÿÿÿö�
+%ÿÿÿÿ%‘7ÿÿÿÿ]‘-ÿÿÿÿ‹‘ÿÿÿÿ¨‘<ÿÿÿÿó‘-ÿÿÿÿ0’(�ÿÿÿÿå’
+.ÿÿÿÿ“
ÿÿÿÿ,“ %ÿÿÿÿq“
+"	ÿÿÿÿÄ“B#$ÿÿÿÿM”#&ÿÿÿÿ—”5ÿÿÿÿÓ”2ÿÿÿÿ•6Eÿÿÿÿ†•&+ÿÿÿÿ×•70ÿÿÿÿ>–*&ÿÿÿÿŽ–Jÿÿÿÿß–jÿÿÿÿP—cÿÿÿÿº—gÿÿÿÿ(˜Vÿÿÿÿ…˜mÿÿÿÿù˜DÿÿÿÿD™‡ÿÿÿÿÒ™+'ÿÿÿÿ$šSÿÿÿÿxšDÿÿÿÿ½švÿÿÿÿ5›>ÿÿÿÿŽ›9ÿÿÿÿÖ›'?ÿÿÿÿ?œI/ÿÿÿÿ·œMÿÿÿÿ�_ÿÿÿÿf�LDÿÿÿÿö�lÿÿÿÿcž�ÿÿÿÿŸ
+Tÿÿÿÿ_Ÿ>ÿÿÿÿ¼ŸÿÿÿÿúŸ~ÿÿÿÿ� Kÿÿÿÿù 
+uÿÿÿÿz¡
++Mÿÿÿÿþ¡X#ÿÿÿÿ{¢
+Rÿÿÿÿ×¢
+fÿÿÿÿG£
+qÿÿÿÿÂ£
+}ÿÿÿÿI¤
+F<ÿÿÿÿÕ¤
+?ÿÿÿÿ¥
+Bÿÿÿÿj¥
+Kÿÿÿÿ¿¥£dÿÿÿÿÌ¦
+Qÿÿÿÿ'§
+=ÿÿÿÿn§'\ÿÿÿÿñ§\/ÿÿÿÿ|¨\!ÿÿÿÿù¨
+aÿÿÿÿd©
+Àÿÿÿÿ.ª
+_ÿÿÿÿ—ª
+_ÿÿÿÿ«
+5ÿÿÿÿ?«= ÿÿÿÿ¡«mÿÿÿÿ.¬bÿÿÿÿ°¬cÿÿÿÿ­
+Oÿÿÿÿn­DÿÿÿÿÇ­
+Rÿÿÿÿ#®(;ÿÿÿÿ†®kÿÿÿÿø®ÄÿÿÿÿÃ¯Wÿÿÿÿ"°E$ÿÿÿÿ’°E$ÿÿÿÿ±
+¨ÿÿÿÿ´±
+Mÿÿÿÿ²rÿÿÿÿ~²
+PÿÿÿÿØ²
+Pÿÿÿÿ2³
+PÿÿÿÿŒ³
+Pÿÿÿÿæ³
+Pÿÿÿÿ@´
+Pÿÿÿÿš´rÿÿÿÿ
µ
+Wÿÿÿÿnµ
+UÿÿÿÿÍµ
+Wÿÿÿÿ.¶rÿÿÿÿ¡¶rÿÿÿÿ·	Tÿÿÿÿq·_ÿÿÿÿ×·cÿÿÿÿA¸Yÿÿÿÿ¡¸`ÿÿÿÿ	¹3Tÿÿÿÿ‘¹3>ÿÿÿÿº@ÿÿÿÿYº
+Wÿÿÿÿ¼º
+‰ÿÿÿÿO»
+»ÿÿÿÿ¼
+Rÿÿÿÿp¼mÿÿÿÿè¼jÿÿÿÿS½
+)ÿÿÿÿ†½K„ÿÿÿÿU¾Jÿÿÿÿ­¾uÿÿÿÿ>¿\1ÿÿÿÿÛ¿PÿÿÿÿAÀ"Hÿÿÿÿ«Àã ÿÿÿÿ¯Á0hÿÿÿÿIÂ
+m	ÿÿÿÿÉÂ= ÿÿÿÿ+Ãƒÿÿÿÿ¯Ãlpÿÿÿÿ‹Ä
+)ÿÿÿÿÜÄ'KÿÿÿÿNÅP$ÿÿÿÿÝÅ9rÿÿÿÿ¤Æ=€ÿÿÿÿaÇ6ÿÿÿÿ¢ÇUÿÿÿÿÈ%DÿÿÿÿoÈ(;ÿÿÿÿÒÈvÿÿÿÿcÉ�ÿÿÿÿÊPÿÿÿÿ�Ê"�ÿÿÿÿLË$XÿÿÿÿÈËXÿÿÿÿ4Ì4ÿÿÿÿˆÌMÿÿÿÿ×ÌZÿÿÿÿ2Ía.ÿÿÿÿÃÍwÿÿÿÿ;ÎƒÿÿÿÿÃÎ
+@ÿÿÿÿ
Ï
+[ÿÿÿÿrÏ€ÿÿÿÿóÏTÿÿÿÿHÐ ÿÿÿÿwÐw ÿÿÿÿÑ ]ÿÿÿÿ‹Ñ‹ìÿÿÿÿÓ
+NÿÿÿÿZÓÿÿÿÿxÓ&<ÿÿÿÿÚÓ
+49ÿÿÿÿgÔvA*ÿÿÿÿHÕF4ÿÿÿÿ	    TLS: %pA	<corrupt: 0x%08lx>	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 Table 			Ordinal Table 				[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>
 	[Name Pointer/Ordinal] Table	%08lx
-	code-base %08lx toc (loadable/actual) %08lx/%08lx
-	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:  Hint/Ord Member-Name Bound-To
+	non-TLS: %pA	reloc %4d offset %4x [%4lx] %s	vma:     Ordinal  Hint  Member-Name  Bound-To
 
 
 	DLL Name: %.*s
@@ -165,10 +193,6 @@ Exec Auxiliary Header
 
 Export Address Table -- Ordinal Base %ld
 
-Function descriptor located at the start address: %04lx
-
-No reldata section! Function descriptor not decoded.
-
 Partition[%d] start  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Program Header:
@@ -195,12 +219,10 @@ There is a first thunk, but the section
 
 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 contents cannot be read
 
 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
@@ -217,7 +239,7 @@ Virtual Address: %08lx Chunk size %ld (0
 
 WARNING: Extra data in .rsrc section - it will be ignored by Windows:
 
-[Ordinal/Name Pointer] Table
+[Ordinal/Name Pointer] Table -- Ordinal Base %ld
 
 ppcboot header:
         pc: 0x%08x
@@ -236,16 +258,14 @@ ppcboot header:
     psect idx 3: %u, offset 3: 0x%08x %08x
     psect: %u, offset: 0x%08x %08x
     routine name: %.*s
-   %02u    (type: %3u, size: 4+%3u):    *unhandled* cmd %u
+   %02u    (type: %3u, size: %3u):    *unhandled* cmd %u
+   Erroneous length
+   Error: %s min length is %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)
@@ -311,25 +331,13 @@ ppcboot header:
    vector      : 0x%08x
    version mask: 0x%08x
    version:    %x
-  %s (len=%u+%u):
+  %s (len=%u):
   %u: size: %u, flags: 0x%02x, name: %.*s
   EEOM (len=%u):
   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
+  EGSD entry %2u (type: %u, len: %u):   EMH %d (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
@@ -345,22 +353,22 @@ ppcboot header:
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   size : %u
-  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):
+  the input  file's flags: %s  the output file's flags: %s %08x (<unknown>) 0x%08x 64B <EABI version unrecognised> <Unrecognised flag bits set> BPAGE: %u COM COMM Change Protection (%u entries):
  Code Address Reference Fixups:
  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:
+ GBL LIB Linkage Pairs Reference Fixups:
  MACH-O header:
- NOMOD NORM OVR PIC QVAL RD REL Register restore millicode Register save millicode Resources start at offset: %#03x
+ NOMOD NORM OVR PIC QVAL RD REL 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 [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
+ UNI VEC VECEP WEAK WRT [64-bit doubles] [BE8] [FDPIC ABI supplement] [FPA float format] [LE8] [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:  and check the symbol visibility debug module table : vbn: %u, size: %u
  debug symbol table : vbn: %u, size: %u (0x%x)
+ failed to convert GOTPCREL relocation against '%s'; relink with --no-relax
  fixup info rva:  flags: 0x%04x global symbol table: vbn: %u, records: %u
  ident: 0x%08x, name: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -386,35 +394,20 @@ 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
-%03x %*.s Entry: %C: warning: relocation to "%s" references a different segment
-%F%P: already_linked_table: %E
-%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'
+#<invalid error code>%%X%%P: relocation %s against `%s' which may bind externally 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: %F%P: failed to create GNU property section
 %H __tls_get_addr lost arg, TLS optimization disabled
 %H arg lost __tls_get_addr, TLS optimization disabled
+%H: %s against %pT is not supported
 %H: %s against `%pT': error %d
 %H: %s for indirect function `%pT' unsupported
+%H: %s out of range
 %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 here
 %H: %s reloc unsupported in shared libraries and PIEs
 %H: %s used with TLS symbol `%pT'
 %H: %s used with non-TLS symbol `%pT'
@@ -436,45 +429,95 @@ 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 %s returns an unrecognized value %x
 %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: relocation type %u is not supported
 %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
+%H: warning: relocation to "%s" references a different segment
 %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(%pA): error: need linked-to section for --gc-sections
+%P: %pB(%s): error opening thin archive member: %E
 %P: %pB: %s is not supported for `%pT'
+%P: %pB: copy relocation against non-copyable protected symbol `%s'
+%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB
+%P: %pB: failed to add %s to first hash
+%P: %pB: failed to allocate 32-bit DT_RELR bitmap
+%P: %pB: failed to allocate 64-bit DT_RELR bitmap
+%P: %pB: failed to allocate compact relative reloc section
+%P: %pB: failed to allocate memory for section `%pA'
+%P: %pB: failed to allocate relative reloc record
+%P: %pB: failed to finish relative relocations
+%P: %pB: note: the message above does not take linker garbage collection into account
+%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed
+%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)
+%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: --relax and -r may not be used together
+%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: auto overlay error: %E
+%P: can not build overlay stubs: %E
 %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: corrupt input: %pB
+%P: discarded output section: `%pA'
+%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
+%P: failed to create %s
+%P: failed to create %sn%P: failed to create GOT PLT .eh_frame section
+%P: failed to create GOT PLT section
+%P: failed to create GOT sections
+%P: failed to create IBT-enabled PLT section
+%P: failed to create PLT .eh_frame section
+%P: failed to create PLT .sframe section
+%P: failed to create PLT GOT .sframe section
+%P: failed to create VxWorks dynamic sections
+%P: failed to create ifunc sections
+%P: failed to create second PLT .sframe section
+%P: failed to create the second PLT .eh_frame section
+%P: failed to size relative relocations
+%P: first_hash failed to create: %E
 %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 PDE
+%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: %s against `%s': error: relocation applies outside section
+%X%H: %s against `%s': error: relocation target address is odd
+%X%H: %s against `%s': internal error: unexpected relocation result %d
 %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: relocation to "%s" references a different segment
 %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(%pA): relocation is not supported
+%X%P: %pB(%pA): relocation out of range
+%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
@@ -484,23 +527,44 @@ ppcboot header:
 %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%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
 %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)
+%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+%Xerror: found a total of %d inputs incompatible with BTI requirements.
+%Xerror: found a total of %d inputs incompatible with GCS requirements.
+%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): 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
-%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 (%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 symbol number %lu uses unsupported binding of %u%pB symbol number %lu uses unsupported type of %u%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 %zu is empty%pB(%pA): error: secondary reloc %zu is of an unknown type%pB(%pA): error: secondary reloc %zu references a deleted symbol%pB(%pA): error: secondary reloc %zu references a missing symbol%pB(%pA): error: secondary reloc section has non-standard sized entries%pB(%pA): error: secondary reloc section has zero sized entries%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): relocation %zu has invalid symbol index %lu%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(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only
+%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only
+%pB(%s): Unknown destination type (ARM/Thumb) in %pB%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 (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB
+%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB
+%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: Adjusting branch at 0x%V towards "%s" in section %s
+%pB: BE8 images only valid in big-endian mode%pB: C_STAT isn't supported by XCOFF64%pB: Cannot create stub entry '%s'%pB: Cannot handle relocation value size of %d%pB: DT_STRTAB table is corrupt%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: Number of symbols in input file has increased from %lu to %u
+%pB: PC-relative offset overflow in GOT PLT entry for `%s'
+%pB: PC-relative offset overflow in PLT entry for `%s'
+%pB: Relocations in generic ELF (EM: %d)%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined%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: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed
+%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section%pB: Unable to generate dynamic relocs because a suitable section does not exist
+%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: adjusting invalid FileAlignment%pB: adjusting invalid SectionAlignment%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 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: branch displacement overflow in PLT entry for `%s'
+%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: can't link different ABI object.%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 export internal symbol `%s`.%pB: cannot handle compressed Alpha binaries; use compiler flags, or objZ, to generate uncompressed binaries%pB: cannot handle more than %d dynamic symbols%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: conditional branch to undefined symbol `%s' not allowed%pB: corrupted group section: `%pA'%pB: could not find output section %pA for input section %pA%pB: could not read contents of group [%u]%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 against a local symbol 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: attribute section length too small: %ld%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 attributes version '%c'(%d) - expecting 'A'
+%pB: error: unknown mandatory EABI object attribute %d%pB: error: unsupported PLT type: %u%pB: expected symbol index in range 0..%lu but found local symbol with index %lu%pB: failed to extract object only section: %s%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 get symbol table in object only section: %s%pB: failed to open object only section: %s%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: 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: internal symbol `%s' in %pB is referenced by DSO%pB: internal symbol `%s' isn't defined%pB: invalid NumberOfRvaAndSizes%pB: invalid entry (%#x) in group [%u]%pB: invalid file to extract object only section: %s%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
@@ -514,15 +578,24 @@ 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: 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: 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: mapped section %pA has non-NULL buffer%pB: misplaced XTY_LD `%s'%pB: missing import name for IMPORT_NAME_EXPORTAS for %s%pB: nested OMIT_FP in %pA%pB: no core to allocate a symbol %d bytes long%pB: no initialized registers; section length 0
+%pB: no symbol found for import library%pB: no symbol version section for versioned symbol `%s'%pB: non-canonical reference to canonical protected function `%s' in %pB%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: overflow reloc count too small%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 %#x unsupported%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 absolute symbol `%s' can not be used when making a shared object%pB: relocation %s against external or undefined symbol `%s' can not be used when making a %s; recompile with -fPIC%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object%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 %s overflow 0x%lx%pB: relocation %s right shift %d error 0x%lx%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_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE%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 %s is compressed with zstd, but BFD is not built with zstd support%pB: section '%pA': corrupt VTENTRY entry%pB: section `%pA' can't be allocated in segment %u%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 based reloc type (%u) is not supported with -z pack-relative-relocs%pB: stack size specified and %s set%pB: string not null terminated in ILF object file%pB: string table [%u] is corrupt%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: symbol name exceeds given max length of %d%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 compress section %s%pB: unable to create fake empty section%pB: unable to decompress section %s%pB: unable to fill in DataDirectory[%d]: %s is missing%pB: unable to fill in DataDirectory[%d]: %s not defined correctly%pB: unable to fill in DataDirectory[%d]: %s not properly aligned%pB: unable to fill in DataDirectory[%d]: size can't be read from %s%pB: unable to fill in DataDirectory[%d]: size too large for the containing section%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 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: unexpected type (%#x) section `%s' in group [%u]%pB: unhandled dynamic relocation against %s%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: 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 bfd relocation type %#x%pB: unsupported mach %#x%pB: unsupported non-PIC call to IFUNC `%s'%pB: unsupported relocation %s against symbol `%s'%pB: unsupported relocation type%pB: unsupported relocation type %#x%pB: unsupported relocation type %s%pB: unsupported relocation type exported: %#x%pB: unsupported relocation type imported: %#x%pB: unsupported relocation type: %#x%pB: unsupported swap_aux_in for storage class %#x%pB: unsupported swap_aux_out for storage class %#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 is required by -z force-bti, but this input object file lacks the necessary property note.
+%pB: warning: COMDAT symbol '%s' does not match section name '%s'%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.
+%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.
+%pB: warning: RVE PLT generation not supported%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up%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 %lu 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 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: 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: truncated `%s' option%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment%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: warning: win32pstatus %s of size %lu bytes is too small%pB: will not resolve runtime TLS relocation%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u%pB: wrong auxtype %#x for storage class %#x%pB: x86 ISA needed: %pB: x86 ISA used: %pB:%.8s: RVA truncated%pB:%.8s: section below image base%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 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%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s%pB[%pA]: no output section for space %pA%pcrel_lo missing matching %pcrel_hi%pcrel_lo overflow with an addend%pcrel_lo section symbol with an addend%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20%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)
+%s has both normal and TLS relocs%s in overlay section%s is defined but could not be loaded: %s%s is defined but plugin support is disabled%s is loaded but symbol "%s" is not found: %s%s not defined in linker created %pA%s not implemented%s offset too large for .eh_frame sdata4 encoding%s, iter %u
+  branch         %lu
+  long branch    %lu
+  plt call       %lu
+  global entry   %lu%s: BFD %s internal error, aborting at %s:%d
+%s: BFD %s internal error, aborting at %s:%d in %s
+%s: Bad ELF id: `%d'%s: ISA string cannot contain uppercase letters%s: ISA string must begin with rv32, rv64 or Profiles%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: compiled as 32-bit object and %s is 64-bit%s: compiled as 64-bit object and %s is 32-bit%s: failed to open to extract object only section: %s%s: first ISA extension must be `e', `i' or `g'%s: invalid prefixed ISA extension `%s' ends with <number>p%s: no such symbol%s: not implemented%s: not supported%s: object size does not match that of target %s%s: prefixed ISA extension must separate with _%s: undefined version: %s%s: unknown prefixed ISA extension `%s'%s: unknown standard ISA extension or prefix class `%c'%scannot + base extension `%s' in %s `%s'%sdeprecated - extension `%s' in %s `%s'%sinvalid ISA extension ends with <number>p in %s `%s'%sunknown ISA extension `%s' in %s `%s'%tlsdesc_lo with addend(%s): Unknown destination type (ARM/Thumb) in %pB(at bit offset %u)
 (descriptor)
-(format %c%c%c%c signature %s age %ld)
+(format %c%c%c%c signature %s age %ld pdb %s)
 (no value)
 (not active)
 (not allocated)
@@ -535,28 +608,24 @@ ppcboot header:
 , 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>
+64-bit double, 8-byte8-bytes: m32r instructions: m32r2 instructions: m32rx instructions: n1 instructions: n1h instructions; recompile with -fPIC; recompile with -fPIE<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:
+<unknown mask flags><unknown: %x><unknown>@pltoff reloc against local symbolBASE_IMAGE       BFD %s assertion fail %s:%dBase 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
+Coolidge (kv3) V1 32 bitsCoolidge (kv3) V1 64 bitsCoolidge (kv3) V2 32 bitsCoolidge (kv3) V2 64 bitsCoolidge (kv4) V1 32 bitsCoolidge (kv4) V1 64 bitsCopyright 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 0x%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: section %s has no contentsDWARF error: section %s is too bigDWARF 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 DirectoryEIHD: (size: %u, nbr blocks: %u)
+Delay Import DirectoryDescription DirectoryEIHD: (size: %u, nbr blocks: %u)
 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
+Error: %pB and %pB has different DSP versionError: %pB and %pB has different FPU ABIError: %pB and %pB has different VDSP versionError: %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 supported only by GNU and FreeBSD targetsGNU_RETAIN section is supported only by GNU and FreeBSD targetsGOT 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,20 +633,20 @@ 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)
 Image symbol & debug table: (major: %u, minor: %u)
-Import Address Table DirectoryImport Directory [parts of .idata]LOGICAL_NAMES    Language Processor Name
+Import Address Table DirectoryImport Directory [parts of .idata]Internal error: unreachable.LAM_U48 propertyLAM_U57 propertyLOGICAL_NAMES    Language Processor Name
 Length              = 0x%.8lx (%ld)
 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:
+NETWORKS         NORMALNOTE: This behaviour is deprecated and will be removed in a future version of the linkerName 				NoneNumber in:
 OPR_ADD (add)
 OPR_AND (logical and)
 OPR_ASH (arithmetic shift)
@@ -602,21 +671,19 @@ ppcboot header:
 Partition[%d] length = 0x%.8lx (%ld)
 Partition[%d] sector = 0x%.8lx (%ld)
 Please report this bug.
-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
+Private flags = 0x%lx : 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 togetherRL78 reloc divide by zeroRL78 reloc stack overflow/underflowR_AMD64_IMAGEBASE with __ImageBase undefinedR_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            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 %pASFrame sections with unexpected data encoding prevent .sframe generationSHELL            SHRFXDSHRPICSHSTK propertySIMD use: SPSC - Shared Image Program section def
 STABLE           STA_CKARG (compare procedure argument)
 STA_GBL (stack global) %.*s
 STA_LI (stack literal)
-STA_LW (stack longword) 0x%08x
-STA_MOD (stack module)
+STA_LW (stack longword)STA_MOD (stack module)
 STA_PQ (stack psect base + offset)
-STA_QW (stack quadword) 0x%08x %08x
-STC_BOH_GBL (store cond BOH at global addr)
+STA_QW (stack quadword)STC_BOH_GBL (store cond BOH at global addr)
 STC_BOH_PS (store cond BOH at psect + offset)
 STC_BSR_GBL (store cond BSR at global addr)
 STC_BSR_PS (store cond BSR at psect + offset)
@@ -655,27 +722,27 @@ ppcboot header:
 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
+Symbol `%s' has differing types: %s in %pB, previously REGISTER in %pBTLS relocation invalid without dynamic sectionsTOC overflow during stub generation; try -mminimal-toc when compilingTable Addresses
+The addend isn't allowed for R_RISCV_GOT_HI20The 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
 Too many unwind codes (%ld)
 Type                Size     Rva      Offset
-USRSTACKUnknownUnknown: %xUpdated property %W (%v) to merge %pB (0x%v) and %pB (not found)
+USRSTACKUnable to find the stub entry targeting %sUnable to link input file: %sUnable to load DLL.UnknownUnknown: %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]_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:
+Warning: should use "_" to contact Profiles with other extensionsWriting 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]\%pB: warning: %s BLX instruction targets %s function '%s'__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 function`xtheadvector' is conflict with the `v/zve32x' extension`zclsd' is conflict with the `c+f'/ `zcf' extension`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extensiona 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: %#lxbfd_mach_o_read_section_64: overlarge alignment value: %#lxbfd_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
+branch (PC rel16) to section (%s) not supportedbranch to a non-instruction-aligned addressbss-plt forced by profilingbss-plt forced due to %pBc' or `zcacan'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 find default versions of the ISA extension `%s'cannot read DMT
 cannot read DMT header
 cannot read DMT psect
 cannot read DST
@@ -691,87 +758,83 @@ ppcboot header:
 cannot read GST
 cannot read GST record
 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
+cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)class: %u, dtype: %u, length: %u, pointer: 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 reloc recordcorrupt vms valuecorrupted GST
+could 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]d' and `c', or `zcdd' and `zfad' or `zdinxdangerous 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
+division by zerodst_define_location %u too largedynamic index information not availabledynamic relocation in read-only sectiondynreloc 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 adding attributeerror in %pB(%pA); no .eh_frame_hdr table will be createderror in %pB(%pA); no .sframe will be createderror in %pB(%pA); unexpected SFrame section typeerror 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 has a LOAD segment with RWX permissionserror: %pB has a TLS segment with execute permissionerror: %pB is already in final BE8 formaterror: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%derror: %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 alignederror: %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 RISC-V used size: 0x%x>error: %pB: <corrupt property (0x%x) 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: SB relative addressing conflicts with use of R9error: %pB: XLEN of input (%u) doesn't match output (%u)error: %pB: cannot mix rf16 with full register set %pBerror: %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: mis-matched ISA string to merge '%s' and '%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 create group section symbolerror: %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: %pB: unsupported XLEN (%u), you might be using wrong emulationerror: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack sectionerror: attempting to link %pB with a binary %pB of different architectureerror: can't find symbol: %serror: conflicting CPU architectures %s vs %s in %pBerror: creating an executable stack because of -z execstack command line optionerror: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spaceerror: 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 %pBexecutablef' and `c', or `zcff' or `zfinxfailed 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 truncatedfinal size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available spacefurther 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 definedhhidden 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
+input SFrame sections with different abi prevent .sframe generationinput SFrame sections with different format versions prevent .sframe generationinternal 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 internal: internal: unreachable INSN_CLASS_*invalid %sinvalid TARGET2 relocation type '%s'invalid bfd targetinvalid contents in %pA sectioninvalid dynamic indexinvalid 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
+linkable imagelinker stubs in %u grouplinker stubs in %u groupsliteralliteral relocation occurs for an external symbollocal symbol index too biglong branch stub `%s' offset overflowm' or `zmmulmach-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]: 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-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
+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 dynamic index information availableno 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 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 overflowplugin framework: out of file descriptors. Try using fewer objects/archives
+pointer
 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
+protected symbolprotected symbol q' and `zfaq' or `zqinxrecbeg: 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
-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
+recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'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 against `%s' has faulty GOT type 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: %sreserved cmd %drtnbeg
 rtnend: size 0x%08x
-section has no contentsseptyp, name: %.*s
+rv%d does not support the `q' extensionrv%d does not support the `smmpm' extensionrv%d does not support the `smnpm' extensionrv%d does not support the `ssnpm' extensionrv%d does not support the `sspm' extensionrv%d does not support the `supm' extensionrv%d does not support the `zcf' extensionrv%de does not support the `h' extensionsection 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
-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 too large; lower small-data size limit (see option -G)smctr' or `ssctrsom_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 supported only by GNU and FreeBSD targetssymbol needs debug section which does not existsymbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targetssystem 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 valuesv' or `zve64d' or `zve64f' or `zve32fv' or `zve64x' or `zve32xv850 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 LOAD segment with RWX permissionswarning: %pB has a TLS segment with execute permissionwarning: %pB has a corrupt string table indexwarning: %pB has a program header with invalid alignmentwarning: %pB has a section extending past end of filewarning: %pB has a segment extending past end of filewarning: %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(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: %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 memory sealing size: 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: unknown RISCV ABI 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
-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
+warning: %s section has zero sizewarning: %s should be used rather than %swarning: %s: missing .note.GNU-stack section implies executable stackwarning: %s: requires executable stack (because the .note.GNU-stack section is executable)warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pBwarning: --plt-localentry is especially dangerous without ld.so support to detect ABI violationswarning: --plt-localentry is incompatible with power10 pc-relative codewarning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised.warning: NOTE: size discrepancies can cause real problems.  Investigation is advised.warning: 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 normal symbol `%s' in %pB is smaller than %u used by the common definition in %pBwarning: 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: enabling an executable stack because of -z execstack command line optionwarning: file %pB's arch flag %s conflict with target %s,set target arch flag to %swarning: file %pB's arch flag %s conflicts with target ck%s, using %swarning: found a total of %d dynamically-linked objects incompatible with GCS requirements.
+warning: found a total of %d inputs incompatible with BTI requirements.
+warning: found a total of %d inputs incompatible with GCS requirements.
+warning: 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: privileged spec version 1.9.1 can not be linked with other spec versionswarning: 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: unrecognised arch name '%#x'warning: 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
+x ISA extension `%s' must be set with the versionsyesyou are not allowed to define %s in a scriptzbb' or `zbkbzbc' or `zbkczcb' and `zbazcb' and `zbbzcb' and `zmmul', or `zcb' and `mzcmp' is incompatible with `d' and `c', or `zcd' extensionzfh' and `zfazfh' and `zfa', or `zvfh' and `zfazfh' or `zhinxzfh' or `zvfhzfhmin' and `d', or `zhinxmin' and `zdinxzfhmin' and `q', or `zhinxmin' and `zqinxzfhmin' or `zhinxminzicfiss' and `zcmopzihintntl' and `c', or `zihintntl' and `zcazknd' or `zknezvbbzvbczvkbzvkgzvknedzvknha' or `zvknhbzvksedzvkshzvl*b extensions need to enable either `v' or `zve' extensionProject-Id-Version: bfd 2.44.90
+Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/
+POT-Creation-Date: 2025-07-13 08:44+0100
+PO-Revision-Date: 2025-07-14 22:19+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
-	    TLS: %pA	<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾: 0x%04lx>	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� 		%08lx
+X-Generator: Lokalize 23.04.3
+	    TLS: %pA	<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾: 0x%08lx>	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� 		%08lx
 	Ð�ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ rva (0x%lx) Ð°Ð±Ð¾ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² (0x%lx) Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð°Ð´Ñ€ÐµÑ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�
 	Ð�ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ rva (0x%lx) Ð°Ð±Ð¾ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² (0x%lx) Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸
 	Ð�ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ rva (0x%lx) Ð°Ð±Ð¾ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² (0x%lx) Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…
-	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸ 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² 				[%4ld] <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²: %lx>
+	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸ 			Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² 				[%4ld] +base[%4ld]  %04lx <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²: %lx>
 	Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� [Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð°Ð·Ð²/Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²]	%08lx
-	toc Ð¾Ñ�Ð½Ð¾Ð²Ð¸ ÐºÐ¾Ð´Ñƒ %08lx (Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð½Ð¸Ð¹/Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ð¹) %08lx/%08lx
-	Ð½Ðµ-TLS: %pA	Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %4d Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ %4x [%4lx] %s	vma:  Ð’ÐºÐ°Ð·/ÐŸÐ¾Ñ€ Ð�Ð°Ð·Ð²Ð°-ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·Ð°Ð½Ð¾-Ð´Ð¾
+	Ð½Ðµ-TLS: %pA	Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %4d Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ %4x [%4lx] %s	vma:     ÐŸÐ¾Ñ€Ñ�Ð´Ðº   Ð’ÐºÐ°Ð·  Ð�Ð°Ð·Ð²Ð°-ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·Ð°Ð½Ð¾-Ð´Ð¾
 
 
 	Ð�Ð°Ð·Ð²Ð° DLL: %.*s
@@ -801,10 +864,6 @@ X-Generator: Lokalize 2.0
 
 Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� â€” Ð¾Ñ�Ð½Ð¾Ð²Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²: %ld
 
-Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð·Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %04lx
-
-Ð�ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ reldata! Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¾.
-
 ÐŸÐ¾Ñ‡Ð°Ñ‚Ð¾Ðº Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ[%d]  = { 0x%.2x, 0x%.2x, 0x%.2x, 0x%.2x }
 
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸:
@@ -830,12 +889,10 @@ X-Generator: Lokalize 2.0
 
 Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ 0x%lx
 
-Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ—Ñ— Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–
+Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ð²Ð¼Ñ–Ñ�Ñ‚ Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸
 
 Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ð²Ð¾Ð½Ð° Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ (%d)
 
-Ð£ %s Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ…
-
 Ð†Ñ�Ð½ÑƒÑ” Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ñ—Ñ— Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾
 
 Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ 0x%lx
@@ -852,7 +909,7 @@ X-Generator: Lokalize 2.0
 
 ÐŸÐžÐŸÐ•Ð Ð•Ð”Ð–Ð•Ð�Ð�Ð¯: Ð·Ð°Ð¹Ð²Ñ– Ð´Ð°Ð½Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .rsrc â€” Ñ—Ñ… Ð±ÑƒÐ´Ðµ Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾ Windows:
 
-Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²/Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸]
+Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²/Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸] -- Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð° %ld
 
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº ppcboot:
         pc: 0x%08x
@@ -871,16 +928,14 @@ X-Generator: Lokalize 2.0
     Ñ–Ð½Ð´. psect 3: %u, Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ 3: 0x%08x %08x
     psect: %u, Ð·Ñ�ÑƒÐ²: 0x%08x %08x
     Ð½Ð°Ð·Ð²Ð° Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸: %.*s
-   %02u    (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 4+%3u):    *Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð°* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u
+   %02u    (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %3u):    *Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð°* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u
+   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°
+   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð¼Ñ–Ð½Ñ–Ð¼Ð°Ð»ÑŒÐ½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° %s Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” %u
    ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð°Ñ‚Ñƒ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾
-   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EEOM
-   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EMH
    ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð½Ð°Ð·Ð²Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�
    ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð¾Ð²Ð³Ð¾ÑŽ
    ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ð¼Ð¾Ð´ÑƒÐ»Ñ�
    ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð¾Ð²Ð³Ð¾ÑŽ
-   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EMH_MHD
-   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð¼Ñ–Ñ�Ñ†Ðµ, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–
    Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: 2**%u
    alloc (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°): %u (0x%08x)
    alloc (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°): %u (0x%08x)
@@ -946,25 +1001,13 @@ X-Generator: Lokalize 2.0
    Ð²ÐµÐºÑ‚Ð¾Ñ€      : 0x%08x
    Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ñ–Ñ—: 0x%08x
   Ð²ÐµÑ€Ñ�Ñ–Ñ�:      %x
-  %s (Ð´Ð¾Ð²Ð¶=%u+%u):
+  %s (Ð´Ð¾Ð²Ð¶=%u):
   %u: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u, Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%02x, Ð½Ð°Ð·Ð²Ð°: %.*s
   EEOM (Ð´Ð¾Ð²Ð¶=%u):
   EGSD (Ð´Ð¾Ð²Ð¶=%u):
-  Ð·Ð°Ð¿Ð¸Ñ� EGSD %2u (Ñ‚Ð¸Ð¿: %u, Ð´Ð¾Ð²Ð¶: %u):   EMH %u (Ð´Ð¾Ð²Ð¶=%u):   Ð¾Ñ�Ð½.: 0x%08x %08x, Ñ€Ð¾Ð·Ð¼: 0x%08x,  Ð·Ð°Ñ….: 0x%08x   base_va : 0x%08x
+  Ð·Ð°Ð¿Ð¸Ñ� EGSD %2u (Ñ‚Ð¸Ð¿: %u, Ð´Ð¾Ð²Ð¶: %u):   EMH %d (Ð´Ð¾Ð²=%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
@@ -980,22 +1023,22 @@ X-Generator: Lokalize 2.0
   shlextra  : %5u, permctx   : %5u
   shlstoff  : %5u, shrimgcnt : %5u
   Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u
-  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ñ„Ð°Ð¹Ð»Ð° Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…: %s  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ñ„Ð°Ð¹Ð»Ð° Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð²: %s %08x (<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾>) 0x%08x 64B <Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ� EABI> BPAGE: %u COM COMM Ð—Ð¼Ñ–Ð½Ð° Ð·Ð°Ñ…Ð¸Ñ�Ñ‚Ñƒ (%u Ð·Ð°Ð¿Ð¸Ñ�Ð¸):
+  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ñ„Ð°Ð¹Ð»Ð° Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…: %s  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ñ„Ð°Ð¹Ð»Ð° Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð²: %s %08x (<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾>) 0x%08x 64B <Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ� EABI> <Ð�ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ð±Ñ–Ñ‚Ñ–Ð² Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð²> BPAGE: %u COM COMM Ð—Ð¼Ñ–Ð½Ð° Ð·Ð°Ñ…Ð¸Ñ�Ñ‚Ñƒ (%u Ð·Ð°Ð¿Ð¸Ñ�Ð¸):
  ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð°Ð´Ñ€ÐµÑ� ÐºÐ¾Ð´Ñƒ:
  DEF EXE ÐŸÐ¾Ñ‚Ñ€Ñ–Ð±Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° FPU:  ÐŸÐµÑ€ÑˆÐ° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x
  Ð§ÐµÑ‚Ð²ÐµÑ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x
- GBL ÐŸÐ¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ð·â€™Ñ”Ð´Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ LIB ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ Ð½Ð° Ð¿Ð°Ñ€Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�:
+ GBL LIB ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ Ð½Ð° Ð¿Ð°Ñ€Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�:
 Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº MACH-O:
- NOMOD NORM OVR PIC QVAL RD REL ÐœÑ–Ð»Ñ–ÐºÐ¾Ð´ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð° ÐœÑ–Ð»Ñ–ÐºÐ¾Ð´ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð° Ð ÐµÑ�ÑƒÑ€Ñ�Ð¸ Ð¿Ð¾Ñ‡Ð¸Ð½Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð· Ñ‚Ð°ÐºÐ¸Ð¼ Ð·Ñ�ÑƒÐ²Ð¾Ð¼: %#03x
+ 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 [64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– double] [BE8] [Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� ABI FDPIC] [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float FPA] [LE8] [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float Maverick] [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float VFP] [Ð’ÐµÑ€Ñ�Ñ–Ñ�1 EABI] [Ð’ÐµÑ€Ñ�Ñ–Ñ�2 EABI] [Ð’ÐµÑ€Ñ�Ñ–Ñ�3 EABI] [Ð’ÐµÑ€Ñ�Ñ–Ñ�4 EABI] [Ð’ÐµÑ€Ñ�Ñ–Ñ�5 EABI] [Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ RAM XGATE] [Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ abi] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [d-float] [Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°] [Ñ„Ñ–ÐºÑ�. Ñ€Ð¾Ð·Ñ‚.] [Ñ‡Ð¸Ñ�Ð»Ð° Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ Ð¿ÐµÑ€ÐµÐ´Ð°Ð½Ð¾ Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ] [g-float] [ABI Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸] [ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ] [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ´ÑƒÑŽÑ‚ÑŒ Ñ–Ð½ÑˆÐ¸Ð¼] [Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ=Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð· Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸] [Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ=Ð¿Ð»Ð¾Ñ�ÐºÐ° Ð¼Ð¾Ð´ÐµÐ»ÑŒ] [Ð½Ð¾Ð²Ð¸Ð¹ ABI] [Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ abi] [Ð½Ðµ-pic] [Ð½Ðµ 32-Ð±Ñ–Ñ‚.Ñ€ÐµÐ¶Ð¸Ð¼] [Ñ�Ñ‚Ð°Ñ€Ð¸Ð¹ ABI] [pic] [Ð½ÐµÐ·Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¹ Ð²Ñ–Ð´ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—] [Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»] [ABI Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸] [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð° FP] [Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²] [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ� _] [Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ISA] [Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²] [v10 Ñ‚Ð° v32] [v32] Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²:  Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ GST
- Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²: vbn: %u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u
+ UNI VEC VECEP WEAK WRT [64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– double] [BE8] [Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� ABI FDPIC] [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float FPA] [LE8] [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float VFP] [Ð’ÐµÑ€Ñ�Ñ–Ñ�1 EABI] [Ð’ÐµÑ€Ñ�Ñ–Ñ�2 EABI] [Ð’ÐµÑ€Ñ�Ñ–Ñ�3 EABI] [Ð’ÐµÑ€Ñ�Ñ–Ñ�4 EABI] [Ð’ÐµÑ€Ñ�Ñ–Ñ�5 EABI] [Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ RAM XGATE] [Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ abi] [abi=64] [abi=EABI32] [abi=EABI64] [abi=N32] [abi=O32] [abi=O64] [abiv%ld] [d-float] [Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°] [Ñ„Ñ–ÐºÑ�. Ñ€Ð¾Ð·Ñ‚.] [Ñ‡Ð¸Ñ�Ð»Ð° Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ Ð¿ÐµÑ€ÐµÐ´Ð°Ð½Ð¾ Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ] [g-float] [ABI Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸] [ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ] [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ´ÑƒÑŽÑ‚ÑŒ Ñ–Ð½ÑˆÐ¸Ð¼] [Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ=Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð· Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸] [Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ=Ð¿Ð»Ð¾Ñ�ÐºÐ° Ð¼Ð¾Ð´ÐµÐ»ÑŒ] [Ð½Ð¾Ð²Ð¸Ð¹ ABI] [Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ abi] [Ð½Ðµ-pic] [Ð½Ðµ 32-Ð±Ñ–Ñ‚.Ñ€ÐµÐ¶Ð¸Ð¼] [Ñ�Ñ‚Ð°Ñ€Ð¸Ð¹ ABI] [pic] [Ð½ÐµÐ·Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¹ Ð²Ñ–Ð´ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—] [Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»] [ABI Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸] [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð° FP] [Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²] [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ� _] [Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ISA] [Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²] [v10 Ñ‚Ð° v32] [v32] Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²:  Ñ– Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ñ‚Ðµ Ð²Ð¸Ð´Ð¸Ð¼Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²: vbn: %u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u
  Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: vbn: %u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u (0x%x)
+ Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOTPCREL Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ð· --no-relax
  Ð´Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ rva:  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%04x Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: vbn: %u, Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²: %u
  Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€: 0x%08x, Ð½Ð°Ð·Ð²Ð°: %.*s
  ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u
@@ -1021,35 +1064,20 @@ X-Generator: Lokalize 2.0
      		Ð°Ð´Ñ€ÐµÑ�Ð°   Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ñƒ  Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—  32Ð± Ð²Ð¸Ðº. Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ EH
  vma:            Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð§Ð°Ñ�Ð¾Ð²Ð°    Ð›Ð°Ð½Ñ†ÑŽÐ¶Ð¾Ðº Ð�Ð°Ð·Ð²Ð°     ÐŸÐµÑ€ÑˆÐ¸Ð¹
                  Ð²ÐºÐ°Ð·.   ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐºÐ°  Ñ�Ð¿Ñ€Ñ�Ð¼.   DLL       ÑˆÐ»ÑŽÐ·
-#<Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸>%03x Ð›Ð¸Ñ�Ñ‚Ð¾Ðº %*.s: Ð°Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð° Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ°: %d
-Ð’Ñ…Ñ–Ð´ Ð´Ð¾ %03x %*.s: %C: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚
-%F%P: already_linked_table: %E
-%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: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT BND
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹ GNU
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT GOT
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT GOT
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ GOT
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT Ñ–Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ IBT
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ VxWorks
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ ifunc
-%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT
-%F%pA: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€
-%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT GOT Ð´Ð»Ñ� Â«%sÂ»
-%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»
-%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� Ð³Ñ–Ð»Ð¾Ðº Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»
+#<Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸>%%X%%P: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÑƒÐ²Ð°Ñ‚Ð¸Ñ�Ñ� Ð·Ð·Ð¾Ð²Ð½Ñ–, Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC
+%%X%%P: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»
+%03x Ð›Ð¸Ñ�Ñ‚Ð¾Ðº %*.s: Ð°Ð´Ñ€ÐµÑ�Ð°: %#08lx, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %#08lx, ÐºÐ¾Ð´Ð¾Ð²Ð° Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ°: %d
+Ð’Ñ…Ñ–Ð´ Ð´Ð¾ %03x %*.s: %F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹ GNU
 %H __tls_get_addr Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚, Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–ÑŽ TLS Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾
 %H: Ñƒ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” __tls_get_addr, Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–ÑŽ TLS Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾.
+%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñ‰Ð¾Ð´Ð¾ %pT Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
 %H: %s Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d
 %H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð´Ð»Ñ� Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%pTÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
+%H: %s Ð¿Ð¾Ð·Ð° Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼
 %H: %s Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼
 %H: %s Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° ÑƒÑ�ÑƒÐ½ÑƒÑ‚Ð¸Ð¹ Ñƒ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ– Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð·Ð°Ð¿Ð¸Ñ� TOC
 %H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d
+%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‚ÑƒÑ‚ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
 %H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ°Ñ… Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– PIE
 %H: %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ TLS Â«%pTÂ»
 %H: %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ Ð¿Ð¾Ð·Ð° TLS Â«%pTÂ»
@@ -1071,45 +1099,95 @@ 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: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %x
 %H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ–
 %H: Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ� Ð¿Ñ€Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ, Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ðµ Ð²Ð¸Ñ‰Ðµ, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ñ�Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ÐµÐ½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð´Ð¾ Â«%s+%vÂ»
-%H: Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— toc
+%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ‚Ð¸Ð¿Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %u Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
 %H: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ %s Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»
 %H: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»
 %H: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s, Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#x.
-%P%F: --relax Ñ– -r Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾
+%H: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚
 %P%X: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸: %E
-%P%X: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� IFUNC. Ð¡Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð· -fPIC
 %P%X: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�
-%P: %H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð´Ð»Ñ� bss-plt Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
 %P: %H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾ÑŽ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ %x
+%P: %pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� --gc-sections Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð¿Ñ€Ð¸Ñ”Ð´Ð½Ð°Ð½Ð¸Ð¹ (linked-to) Ñ€Ð¾Ð·Ð´Ñ–Ð»
+%P: %pB(%s): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð¾Ð½ÐºÐ¾Ð³Ð¾ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ: %E
 %P: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð´Ð»Ñ� Â«%pTÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
+%P: %pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»
+%P: %pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB
+%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´Ð¾Ð´Ð°Ñ‚Ð¸ %s Ð´Ð¾ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ Ñ…ÐµÑˆÑƒ
+%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ 32-Ð±Ñ–Ñ‚Ð¾Ð²Ñƒ ÐºÐ°Ñ€Ñ‚Ñƒ DT_RELR
+%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñƒ ÐºÐ°Ñ€Ñ‚Ñƒ DT_RELR
+%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�
+%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ»
+%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�
+%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚Ð¸ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�
+%P: %pB: Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ�: Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ðµ Ð²Ð¸Ñ‰Ðµ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ� Ð½Ðµ Ð±ÐµÑ€Ðµ Ð´Ð¾ ÑƒÐ²Ð°Ð³Ð¸ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ñ�Ð¼Ñ–Ñ‚Ñ‚Ñ� Ð·Ð°Ñ�Ð¾Ð±Ð¾Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�
+%P: %pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾
+%P: %pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾: Ð½Ð¾Ð²Ð¸Ð¹ (%lu) != Ñ�Ñ‚Ð°Ñ€Ð¸Ð¹ (%lu)
+%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ %s
 %P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»
 %P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Â«%pAÂ»
+%P: --relax Ñ– -r Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ Â«%pAÂ» Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ Â«%pAÂ» Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.
+%P: already_linked_table: %E
+%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ�: %E
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð½Ñ– ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸: %E
 `%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� opd Ñƒ toc Ð´Ð»Ñ� Â«%pTÂ»
 %P: ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� plt; Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÑŽÐ¹Ñ‚Ðµ LD_BIND_NOW=1 Ð°Ð±Ð¾ Ð¾Ð½Ð¾Ð²Ñ–Ñ‚ÑŒ gcc
 %P: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Â«%pTÂ» Ñ” Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ð¼
+%P: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ð´Ð°Ð½Ñ–: %pB
+%P: Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…: Â«%pAÂ»
+%P: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» STT_GNU_IFUNC Â«%sÂ» Ð· Ñ€Ñ–Ð²Ð½Ñ–Ñ�Ñ‚ÑŽ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ñƒ Â«%pBÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ñƒ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñ�Ñ†Ñ–ÑŽ Ð· -fPIE Ñ– Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� -pie
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ %s
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ %sn%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT GOT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT GOT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ GOT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT Ñ–Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ IBT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .sframe PLT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .sframe PLT GOT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ VxWorks
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ ifunc
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .sframe PLT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT
+%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð¼Ñ–Ñ€Ñ�Ñ‚Ð¸ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�
+%P: first_hash Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸: %E
 %P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»
 %P: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð¾Ñ‡Ð¾Ðº Ð²Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… %pB Ñ– %pB
 %P: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñ�Ñ‚ÑŽ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
+%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ GNU Ñ–Ð· DT_TEXTREL Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ— Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿ÑƒÑ�ÐºÑƒ; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· %s
+%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ PDE
+%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ PIE
 %P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�
 %P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚ÐµÐºÑ�Ñ‚Ñƒ Ñ– Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ GNU Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ— Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿ÑƒÑ�ÐºÑƒ
-%X%C: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚
+%X%H: %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼
+%X%H: %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð°Ð´Ñ€ÐµÑ�Ð° Ñ†Ñ–Ð»Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ” Ð½ÐµÐ¿Ð°Ñ€Ð½Ð¾ÑŽ
+%X%H: %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� %d
 %X%H: Ð²Ð¸ÐºÐ»Ð¸Ðº @local ifunc %s
 %X%H: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÑŽÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA Ð½Ð° JALX: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ
 %X%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC
+%X%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚
 %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(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾
+%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ
+%X%P: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñ‰Ð¾Ð´Ð¾ %pT Ñ�Ðº Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ glibc
+%X%P: %pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ %s
+%X%P: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¾Ð±'Ñ”ÐºÑ‚Ð° Â«%pBÂ»
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°
 %X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�
@@ -1119,24 +1197,45 @@ X-Generator: Lokalize 2.0
 %X%P: Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸, Ñ‰Ð¾ Ð½Ð°ÐºÐ»Ð°Ð´Ð°ÑŽÑ‚ÑŒÑ�Ñ�, %pA Ñ– %pA, Ð½Ðµ Ð¿Ð¾Ñ‡Ð¸Ð½Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ð¾Ð´Ð½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ
 %X%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ Ñ�Ñ‚ÐµÐºÐ°/lrlive: %E
 %X%P: Ð¿Ð¾Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚ÐµÐºÑ�Ñ‚Ñƒ Ñ– Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ñ… Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ GNU Ð¿Ñ€Ð¸Ð·Ð²ÐµÐ´Ðµ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ— Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿ÑƒÑ�ÐºÑƒ
+%X%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ BTI Ð´Ð»Ñ� -z force-bti, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹.
+%X%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ GCS Ð´Ð»Ñ� -z gcs, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹.
+%X%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� -z gcs Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ GCS, Ð°Ð»Ðµ Ñƒ Ñ†Ñ–Ð¹ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ñ–Ð¹ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹. Ð”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð¼Ð¾Ð¶Ðµ Ð²Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¸ GCS Ð°Ð±Ð¾ Ð²Ñ–Ð´Ð¼Ð¾Ð²Ð¸Ñ‚Ð¸Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ, Ñ�ÐºÑ‰Ð¾ Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ GCS ÑƒÑ�Ñ– Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ñ— Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸.
 Ð�Ð° %XÂ«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» %pB: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» %pB
-%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸%pA:0x%v .brinfo lrlive (%u) Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�Ñ”Ñ‚ÑŒÑ�Ñ� Ð²Ñ–Ð´ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ ÑˆÐ»Ñ�Ñ…Ð¾Ð¼ Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ (%u)
+%XÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð², Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ GCS.
+%XÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ BTI.
+%XÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ GCS.
+%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): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ð½Ðµ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾; Ð¿ÐµÑ€ÑˆÐ° Ð·Ð³Ð°Ð´ÐºÐ°: %pB: Ð²Ð¸ÐºÐ»Ð¸Ðº %s Ð´Ð¾ %s%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 Ñ–Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %lu Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ñƒ Ð¿Ñ€Ð¸Ð²'Ñ�Ð·ÐºÑƒ %uÑ�Ð¸Ð¼Ð²Ð¾Ð» %pB Ñ–Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %lu Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ %uÑƒ %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): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ %zu Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¼%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %zu Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %zu Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %zu Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð½ÐµÑ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%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): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %zu Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %lu%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(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² ADD Ð°Ð±Ð¾ MOV
+%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² ADD Ð°Ð±Ð¾ MOVRS
+%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² ADD, SUB Ð°Ð±Ð¾ MOV
+%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² LEA
+%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¾Ð¼Ñƒ CALL Ð·Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¾Ð¼ %s
+%pB(%s): Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (ARM/Thumb) Ñƒ %pB%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
-%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Â»
+  Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %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 (Ð·Ñ�ÑƒÐ²: 0x%v, Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñ�Ñ‚Ñ–: 0x%v) Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñƒ %pB
+%pB: %s (Ð·Ñ�ÑƒÐ²: 0x%v, Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñ�Ñ‚Ñ–: 0x%v, Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº: 0x%v) Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñƒ %pB
+%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: ÐºÐ¾Ñ€Ð¸Ð³ÑƒÑ”Ð¼Ð¾ Ð³Ñ–Ð»ÐºÑƒ Ð½Ð° 0x%V Ð´Ð¾ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s
+%pB: Ð¾Ð±Ñ€Ð°Ð·Ð¸ BE8 Ñ” Ñ‡Ð¸Ð½Ð½Ð¸Ð¼Ð¸ Ð»Ð¸ÑˆÐµ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– big-endian%pB: Ñƒ XCOFF64 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ C_STAT%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %s%pB: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ %d%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ DT_STRTAB Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼%pB: Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– GNU_MBIND Â«%pAÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ð»Ðµ sh_info: %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8- Ð°Ð±Ð¾ 16-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ð²ÐµÐºÑ‚Ð¾Ñ€Ñ–Ð² ISR Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ– Ñ” %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸, Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ– Ñ” %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¼Ð¸%pB: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð¾ Ð· %lu Ð´Ð¾ %u
+%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT GOT Ð´Ð»Ñ� Â«%sÂ»
+%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»
+%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾Ð¼Ñƒ ELF (EM: %d)%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ SB, Ð°Ð»Ðµ __c6xabi_DSBT_BASE Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ TLS Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ TLS Ð½Ðµ Ñ” Ñ�ÑƒÑ�Ñ–Ð´Ð½Ñ–Ð¼Ð¸:%pB: Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� TLS Ð· %s Ð´Ð¾ %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ 0x%v Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð·Ð½Ð°Ð»Ð¾ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–
+%pB: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð·Ð¼Ñ–Ñ�Ñ‚Ñƒ Â«%sÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_TLSML, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ�ÐµÐ±Ðµ%pB: Ð¿ÐµÑ€ÑˆÐ¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– PT_DYNAMIC Ð½Ðµ Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ .dynamic%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”
+%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: ÐºÐ¾Ñ€Ð¸Ð³ÑƒÑ”Ð¼Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ FileAlignment%pB: ÐºÐ¾Ñ€Ð¸Ð³ÑƒÑ”Ð¼Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñƒ SectionAlignment%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (Ð½Ð¾Ð¼ÐµÑ€ %d)%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ�ÑƒÐ¼Ñ–Ñˆ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–Ð² FDPIC Ñ– Ð½Ðµ-FDPIC%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð²Ð¸Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %d%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð½Ð°Ð·Ð²Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%sÂ»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ihex_read_section%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: %d%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð°-Ð¿Ð»ÑŽÑ�-Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ: %s Ñƒ %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð°-Ð¿Ð»ÑŽÑ�-Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ: (Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ) Ñƒ %pA%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� Ð³Ñ–Ð»Ð¾Ðº Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»
+%pB: Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² a.out Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ%pB: Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² a.out Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ%pB: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ– %s Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ RVE Ñ–Ð· Ñ–Ð½ÑˆÐ¾ÑŽ Ñ†Ñ–Ð»Ð»ÑŽ%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±'Ñ”ÐºÑ‚ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ ABI.%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d, %d Ð±Ð°Ð¹Ñ‚Ñ–Ð²
+%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ– Ð·Ð°Ð¿Ð¸Ñ�Ð¸ GOT%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %s%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ».%pB: Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° Ñ�Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¸Ñ… Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Alpha Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°. Ð¡ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð¹Ñ‚ÐµÑ�Ñ� Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ�Ð¼Ð¸ ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñ�Ñ‚Ð¾Ñ€Ð° Ð°Ð±Ð¾ objZ Ð´Ð»Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð½ÐµÑ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¸Ñ… Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð².%pB: Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° Ð¿Ð¾Ð½Ð°Ð´ %d Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°%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: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ ÑƒÐ¼Ð¾Ð²Ð½Ñƒ Ð³Ñ–Ð»ÐºÑƒ Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð³Ñ€ÑƒÐ¿: Â«%pAÂ»%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²Ð¼Ñ–Ñ�Ñ‚ Ð³Ñ€ÑƒÐ¿Ð¸ [%u]%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: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%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: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ: %ld%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ñ– Ð´Ð°Ð½Ñ– Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 835769 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 843419 Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ (Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð½Ð°Ð±Ð¾Ñ€Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð°Ð¼ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ Â«%sÂ»; Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº %s Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ %d Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ” Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ„Ð°Ð¹Ð»Ð° Ñ–/Ð°Ð±Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: search_nds32_elf_blank Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»Ñ�Ñ” Ð¿Ñ€Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²ÑƒÐ·Ð¾Ð»%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– COMDAT%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Â«%cÂ»(%d) - Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Â«AÂ»
+%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI, %d%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ PLT: %u%pB: Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñƒ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ– Ð²Ñ–Ð´ 0 Ð´Ð¾ %lu, Ð²Ñ‚Ñ–Ð¼, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ–Ð· Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð»Ð¸ÑˆÐµ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð·Ð²â€™Ñ�Ð·ÐºÑ–Ð² Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÑƒ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð»Ð¸ÑˆÐµ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð»Ð¸ÑˆÐµ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…%pB: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð´Ð¾ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB: ÐºÐ»Ð°Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² %s Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· %s%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� gotoff Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: gp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%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)
+%pB: Ð½Ð° Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ NumberOfRvaAndSizes%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� (%#x) Ñƒ Ð³Ñ€ÑƒÐ¿Ñ– [%u]%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s%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
@@ -1150,15 +1249,24 @@ 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: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� 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: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ð²ÐµÑ€Ñ�Ñ–Ñ— %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: Ð¿Ñ€Ð¸Ð²'Ñ�Ð·Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA Ð¼Ð°Ñ” Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð±ÑƒÑ„ÐµÑ€%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� XTY_LD Â«%sÂ»%pB: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð½Ð°Ð·Ð²Ñƒ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� IMPORT_NAME_EXPORTAS Ð´Ð»Ñ� %s%pB: Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ðµ OMIT_FP Ñƒ %pA.%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¾ÑŽ %d Ð±Ð°Ð¹Ñ‚Ñ–Ð²%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 0
+%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ Â«%sÂ»%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: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¾Ð±'Ñ”ÐºÑ‚Ð° lto Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº%pB: Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð±ÐµÐ· -fPIC?%pB: Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾%pB: Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹, Ð°Ð»Ðµ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ (0x%x) Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Import Library Format%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–: %s Ñƒ %pA%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–: (Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ) Ñƒ %pA%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x%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Â», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ð°Ð±Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ RV32 Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ RV64 Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– x32 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÑƒÐ²Ð°Ñ‚Ð¸Ñ�Ñ� Ð·Ð·Ð¾Ð²Ð½Ñ–, Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s 0x%lx%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s, Ð·Ñ�ÑƒÐ² Ð¿Ñ€Ð°Ð²Ð¾Ñ€ÑƒÑ‡ %d, Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° 0x%lx%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ R_386_GOTOFF Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— %s Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_386_GOTOFF Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ %s, Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_LARCH_32 Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ ELFCLASS64 Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð°Ð±Ð¾ PIE%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: Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¾ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ zstd, Ð°Ð±Ð¾ BFD Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð±ÐµÐ· Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ zstd%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ»: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� VTENTRY%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾ Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– %u%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: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ñ‚Ð¸Ð¿Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñ– Ñ�Ñ‚ÐµÐºÐ° (%u) Ð· -z pack-relative-relocs Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ñ�Ñ‚ÐµÐºÐ° Ñ– Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %s%pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– ILF Ñ€Ñ�Ð´Ð¾Ðº Ð½Ðµ Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñ€Ñ�Ð´ÐºÑ–Ð² [%u] Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ñ— Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ csect %d%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ smclas %d%pB: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð°Ð»Ðµ Ð¹Ð¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½Ð°ÐºÐ»Ð°Ð´ÐºÑƒ (Ð½ÐµÐ¼Ð°Ñ” Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð¾Ðº)%pB: Ð½Ð°Ð·Ð²Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð·Ð°Ð´Ð°Ð½Ñƒ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ñƒ %d%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ» Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�%pB: Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%s) Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� (%s)%pB: Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%s) Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%pA)%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² (%d)%pB: Ð·Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²: %d (>= %d)%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² %u%pB: tp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¿Ð°ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: %s Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð½Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: %s Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð· %s%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ñƒ Ð½ÑŒÐ¾Ð¼Ñƒ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ�%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ %s Â«%sÂ»%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ COMDAT%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½Ðµ Ñ” Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¼Ð¸%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ–%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– R_PPC64_TOCSAVE%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð½ÐµÐ¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð²ÐµÑ€Ñ�Ñ–Ñ—, Â«%sÂ»%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, %u, Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ (%#x) Â«%sÂ» Ñƒ Ð³Ñ€ÑƒÐ¿Ñ– [%u]%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ %s%pB: Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ sparc Â«%luÂ»%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %d%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ [%#x], Â«%sÂ»%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: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ bfd Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x%pB: Ð½Ð°Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� mach %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð²Ð¸ÐºÐ»Ð¸Ðº Ð±ÐµÐ· PIC IFUNC Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s%pB: ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x%pB: Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¾ Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� swap_aux_in Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñƒ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� %#x%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� swap_aux_out Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñƒ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� %#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, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹.
+%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» COMDAT Â«%sÂ» Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð½Ð°Ð·Ð²Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ GCS Ð´Ð»Ñ� -z gcs, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹.
+%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´Ð»Ñ� -z gcs Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ GCS, Ð°Ð»Ðµ Ñƒ Ñ†Ñ–Ð¹ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ñ–Ð¹ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹. Ð”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð¼Ð¾Ð¶Ðµ Ð²Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¸ GCS Ð°Ð±Ð¾ Ð²Ñ–Ð´Ð¼Ð¾Ð²Ð¸Ñ‚Ð¸Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ, Ñ�ÐºÑ‰Ð¾ Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ GCS ÑƒÑ�Ñ– Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ñ— Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸.
+%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT RVE Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_RISCV_SUB_ULEB128 Ñ–Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð¼, Ð±ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿ÐµÑ€ÐµÐ·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ñ–Ð· binutils 2.42 Ð°Ð±Ð¾ Ð½Ð¾Ð²Ñ–ÑˆÐ¾ÑŽ Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð»Ð°Ð±ÐºÐ¸Ñ… TLS Ð·Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð²Ñ–Ð´ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ– Ð¼Ð¾Ð¶Ðµ Ð½Ðµ Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ñ‚Ð¸ Ñ‚Ð°Ðº, Ñ�Ðº Ð²Ð¸ Ð½Ð° Ñ‚Ðµ Ñ�Ð¿Ð¾Ð´Ñ–Ð²Ð°Ñ”Ñ‚ÐµÑ�Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Â«%sÂ», %u, Ð¼ÐµÐ½ÑˆÐ¸Ð¹ Ð·Ð° Ð¹Ð¾Ð³Ð¾ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°, Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð¼Ð¾Ð³Ð° Ñ‰Ð¾Ð´Ð¾ 0xffff Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ�%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² Ð´Ð»Ñ� Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ° %d%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %ld Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %lu Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…%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: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð· Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²%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: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ Ð´Ð»Ñ� mmo, Ñ—Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 65535 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ñ… Ñ�Ð»Ð¾Ð²Ð°: %d. Ð‘ÑƒÐ´Ðµ Ð²Ð¸Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Â«MainÂ».
+%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– thumb-1%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¸Ð¹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ Â«%sÂ»%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¶Ð¾Ð´Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– PT_GNU_RELRO%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GOT%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñƒ Ð¿Ð¾Ð»Ñ– flags2 .MIPS.abiflags (0x%lx)%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI, %d%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: win32pstatus %s Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ %lu Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼%pB: Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–%pB: win32pstatus NOTE_INFO_MODULE Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ %lu Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼, Ñ‰Ð¾Ð± Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ %u%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ %#x Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñƒ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� %#x%pB: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ ISA x86: %pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ðµ ISA x86: %pB:%.8s: RVA Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾%pB:%.8s: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð¿Ñ–Ð´ Ð¾Ñ�Ð½Ð¾Ð²Ð¾ÑŽ Ð¾Ð±Ñ€Ð°Ð·Ñƒ%pB:%d: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð° Ñ�ÑƒÐ¼Ð° Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² S%pB:%d: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² %d Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ%pB:%d: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Intel%pB:%d: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² S%pB:%pA%s Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸
+%pB:%pA: %s Ñ– %s Ð¼Ð°ÑŽÑ‚ÑŒ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…%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%pB:(%pA+%#lx): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· %s%s%pB[%pA]: Ð½ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñƒ Ð´Ð»Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ %pAÐ£ %pcrel_lo Ð½ÐµÐ¼Ð°Ñ” Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ %pcrel_hiÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� %pcrel_lo Ñ€Ð°Ð·Ð¾Ð¼ Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pcrel_lo Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼%pcrel_lo Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼ Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð»Ñ� R_RISCV_GOT_HI20%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)
+%s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS%s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸%s Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾, Ð°Ð»Ðµ Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸: %s%s Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾, Ð°Ð»Ðµ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð´Ð¾Ð´Ð°Ñ‚ÐºÑ–Ð² Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾%s Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð¾, Ð°Ð»Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾: %s%s Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÑƒ, Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾Ð¼Ñƒ %pA%s Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ %s Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ Ð´Ð»Ñ� ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� sdata4 .eh_frame%s, Ñ–Ñ‚ÐµÑ€ %u
+  Ð³Ñ–Ð»ÐºÐ°           %lu
+  Ð´Ð¾Ð²Ð³Ð° Ð³Ñ–Ð»ÐºÐ°     %lu
+  Ð²Ð¸ÐºÐ»Ð¸Ðº plt      %lu
+  Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %lu%s: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d
+%s: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d Ñƒ %s
+%s: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ ELF: Â«%dÂ»%s: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð»Ñ–Ñ‚ÐµÑ€ Ñƒ Ð²ÐµÑ€Ñ…Ð½ÑŒÐ¾Ð¼Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–%s: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð¼Ð°Ñ” Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ‚Ð¸Ñ�Ñ� Ð· rv32, rv64 Ð°Ð±Ð¾ Profiles%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: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ñ�Ðº 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚, Ð° %s Ñ” 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼%s: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ñ�Ðº 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚, Ð° %s Ñ” 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼%s: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s%s: Ð¿ÐµÑ€ÑˆÐ¸Ð¼ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ ISA Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Â«eÂ», Â«iÂ» Ð°Ð±Ð¾ Â«gÂ»%s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð¾Ð¼ ISA Â«%sÂ» Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° <Ñ‡Ð¸Ñ�Ð»Ð¾>p%s: Ð½ÐµÐ¼Ð°Ñ” Ñ‚Ð°ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ%s: Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾%s: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾%s: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %s%s: Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Ñ�Ð»Ñ–Ð´ Ð²Ñ–Ð´Ð¾ÐºÑ€ÐµÐ¼Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ _%s: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ�: %s%s: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%sÂ»%s: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Ð°Ð±Ð¾ ÐºÐ»Ð°Ñ� Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð° Â«%cÂ»%sÐ½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ + Ð´Ð»Ñ� Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ» Ñƒ %s Â«%sÂ»%sÐ·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¾ - Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ» Ñƒ %s Â«%sÂ»%sÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° <Ñ‡Ð¸Ñ�Ð»Ð¾>p Ñƒ %s Â«%sÂ»%sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%sÂ» Ñƒ %s Â«%sÂ»%tlsdesc_lo Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼(%s): Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (ARM/Thumb) Ñƒ %pB(Ð·Ð° Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ Ñƒ Ð±Ñ–Ñ‚Ð°Ñ… %u)
 (Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€)
-(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ñ–Ð´Ð¿Ð¸Ñ� %s Ð²Ñ–Ðº %ld)
+(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ñ–Ð´Ð¿Ð¸Ñ� %s Ð²Ñ–Ðº %ld pdb %s)
 (Ð½ÐµÐ¼Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�)
 (Ð½ÐµÐ°ÐºÑ‚Ð¸Ð²Ð½Ðµ)
 (Ð½Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð¾)
@@ -1171,28 +1279,24 @@ X-Generator: Lokalize 2.0
 , Ð¿Ñ�ÐµÐ²Ð´Ð¾Ð½Ñ–Ð¼: %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>
+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
-Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d Ñƒ %s
-ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� [.reloc]ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ð¸Ð¼ÑƒÑˆÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�ÐœÐµÐ¶Ñ–:
+<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð¼Ð°Ñ�ÐºÑƒÐ²Ð°Ð½Ð½Ñ�><Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹: %x><Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð°>Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� @pltoff Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒBASE_IMAGE       ÐžÐ¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ BFD %s Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ %s:%dÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� [.reloc]ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ð¸Ð¼ÑƒÑˆÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�ÐœÐµÐ¶Ñ–:
 Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� CACHE: CLIÐ”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº CLRCLUSTERS_LOCKMGR COUNTERS         CPU              CTL_AUGRB (Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�) %u
 CTL_DFLOC (Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�)
 CTL_SETRB (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�)
 CTL_STKDL (Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ñ�Ñ‚ÐµÐºÐ¾Ð¼)
 CTL_STLOC (Ð²ÐºÐ°Ð·Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�)
-Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÑŒÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²
+Coolidge (kv3) V1 32 Ð±Ñ–Ñ‚Ð¸Coolidge (kv3) V1 64 Ð±Ñ–Ñ‚Ð¸Coolidge (kv3) V2 32 Ð±Ñ–Ñ‚Ð¸Coolidge (kv3) V2 64 Ð±Ñ–Ñ‚Ð¸Coolidge (kv4) V1 32 Ð±Ñ–Ñ‚Ð¸Coolidge (kv4) V1 64 Ð±Ñ–Ñ‚Ð¸Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÑŒÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²
 Ð’Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .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: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–ÑŽ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ 0x%lxÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð°Ð´Ñ€ÐµÑ�Ð¸ Â«%uÂ», Ð²Ñ‚Ñ–Ð¼ Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð², Ñ‰Ð¾ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Â«%uÂ»ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²ÐµÑ€Ñ�Ñ–ÑŽ DWARF Â«%uÂ», Ð°Ð»Ðµ Ñƒ Ñ†Ñ–Ð¹ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÑƒ Ð»Ð¸ÑˆÐµ Ð²ÐµÑ€Ñ�Ñ–Ð¹ Ð´Ð°Ð½Ð¸Ñ… 2, 3 Ñ– 4ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº Ð½Ð° Ð´Ð°Ð½Ñ– Ð²Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° ÐºÑ–Ð½ÐµÑ†ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð²ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIEÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð´Ñ–Ð¹ Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð°Ð±Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� FORM: %#xÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð°Ñ€Ñ–Ð°Ð½Ñ‚Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ–Ð² %u Ñƒ Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÐ°ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² (Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� ÐºÐ¾Ð´Ñ–Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ�Ñ‚ÑƒÐ¿ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ð½Ðµ Ð¼Ð°Ñ” Ð²Ð¼Ñ–Ñ�Ñ‚ÑƒÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð° Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð²ÐµÑ€Ñ�Ñ–Ñ� .debug_line, %dÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒDW_EH_PE_datarel Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ†Ñ–Ñ”Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:
 Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ�:
-ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s
-Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s Ñƒ %s, Ñ€Ñ�Ð´Ð¾Ðº %d Ñƒ %s
-ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð¿Ð¸Ñ�Ñ–Ð²EIHD: (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u, ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ð»Ð¾ÐºÑ–Ð²: %u)
+ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð¿Ð¸Ñ�Ñ–Ð²EIHD: (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u, ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ð»Ð¾ÐºÑ–Ð²: %u)
 Ð’Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð²Ñ…Ð¾Ð´Ñƒ       = 0x%.8lx (%ld)
-ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� %pB Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð¾Ð±Ð¸Ð´Ð²Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Tag_MPextension_use, current Ñ– legacyÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ [.pdata]ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� [.edata (Ð°Ð±Ð¾ Ñ–Ð½ÑˆÐµ Ð¼Ñ–Ñ�Ñ†Ðµ, Ð´Ðµ Ð¹Ð¾Ð³Ð¾ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)]ÐŸÑ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�		%lx
+ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð²ÐµÑ€Ñ�Ñ–Ñ— DSP %pB Ñ– %pB Ñ” Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ñ– %pB Ð¼Ð°ÑŽÑ‚ÑŒ Ñ€Ñ–Ð·Ð½Ñ– Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ñ– Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ�Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°-Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ñ‡Ð¸Ñ�ÐµÐ» Ñ–Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð²ÐµÑ€Ñ�Ñ–Ñ— VDSP %pB Ñ– %pB Ñ” Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� %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 Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ†Ñ–Ð»ÐµÐ¹ GNU Ñ– FreeBSDÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ GNU_RETAIN Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ†Ñ–Ð»ÐµÐ¹ GNU Ñ– FreeBSDÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT Ñ– PLT Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ð²Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¾, Ñ�ÐºÑ‰Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ñ” Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¼Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– GOT Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð²Ñ‚Ñ–Ð¼, GP Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð°Ð»Ðµ _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ GPDISP Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— ldah Ñ– ldaÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:
 Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ FPU)
 Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, Ð±ÑƒÐ´ÑŒ-Ñ�ÐºÐ¸Ð¹ FPU)
 Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ñ�Ð¿Ñ–Ð²Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€ MIPS32r2, 12 Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ñ… Ð´Ð»Ñ� Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð² Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²)
@@ -1200,20 +1304,20 @@ 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)
 Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð¾Ð±Ñ€Ð°Ð·Ñƒ (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°: %u, Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�: %u)
-ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð°Ð´Ñ€ÐµÑ�ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� [Ñ‡Ð°Ñ�Ñ‚Ð¸Ð½Ð¸ .idata]LOGICAL_NAMES    Ð�Ð°Ð·Ð²Ð° Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¼Ð¾Ð²Ð¸
+ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð°Ð´Ñ€ÐµÑ�ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� [Ñ‡Ð°Ñ�Ñ‚Ð¸Ð½Ð¸ .idata]Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ñ–Ñ�Ñ‚ÑŒ.Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ LAM_U48Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ LAM_U57LOGICAL_NAMES    Ð�Ð°Ð·Ð²Ð° Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¼Ð¾Ð²Ð¸
 Ð”Ð¾Ð²Ð¶Ð¸Ð½Ð°             = 0x%.8lx (%ld)
 ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒÐ›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� IFUNC Â«%sÂ» Ñƒ %pB
 MEMORY_MANAGEMENTÐ¤ÑƒÐ½ÐºÑ†Ñ–Ñ— MIPS16 Ñ– microMIPS Ð½Ðµ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ñ‚Ð¸ Ð¾Ð´Ð½Ð° Ð¾Ð´Ð½ÑƒMISC             Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� MMU: MULTI_PROCESSING ÐžÑ�Ð½Ð¾Ð²Ð½Ð°/ÐœÐ¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� 			%d/%d
 ÐœÐ°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ° â€” 0x%v
 MeP: howto %d Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ñ‚Ð¸Ð¿Ñƒ %dÐ’Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ�
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¼Ð¾Ð´ÑƒÐ»Ñ�
-NETWORKS         NORMALÐ�Ð°Ð·Ð²Ð°				Ð�ÐµÐ¼Ð°Ñ”Ð�Ð¾Ð¼ÐµÑ€ Ñƒ:
+NETWORKS         NORMALÐ—Ð�Ð£Ð’Ð�Ð–Ð•Ð�Ð�Ð¯: Ñ†Ñ� Ð¿Ð¾Ð²ÐµÐ´Ñ–Ð½ÐºÐ° Ð²Ð²Ð°Ð¶Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¾ÑŽ, Ñ—Ñ— Ð±ÑƒÐ´Ðµ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ñƒ Ð½Ð°Ñ�Ñ‚ÑƒÐ¿Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ°Ð�Ð°Ð·Ð²Ð°				Ð�ÐµÐ¼Ð°Ñ”Ð�Ð¾Ð¼ÐµÑ€ Ñƒ:
 OPR_ADD (Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ�)
 OPR_AND (Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ðµ Â«Ð†Â»)
 OPR_ASH (Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²)
@@ -1238,21 +1342,19 @@ X-Generator: Lokalize 2.0
 Ð”Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ[%d] = 0x%.8lx (%ld)
 Ð¡ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ[%d]   = 0x%.8lx (%ld)
 Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ñ‚Ðµ Ð¿Ñ€Ð¾ Ñ†ÑŽ Ð²Ð°Ð´Ñƒ.
-ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ ABI RL78: Ñ„Ð°Ð¹Ð» 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
+Ð—Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lx : ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ ABI RL78: Ñ„Ð°Ð¹Ð» G10 %pB Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð· %s, Ñ„Ð°Ð¹Ð» %pBÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ ABI RL78: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ %s, Ñ„Ð°Ð¹Ð» %pB Ð· %s, Ñ„Ð°Ð¹Ð» %pBÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� RL78: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ 32-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ñ– 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸Ð”Ñ–Ð»ÐµÐ½Ð½Ñ� Ð½Ð° Ð½ÑƒÐ»ÑŒ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– RL78Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð°Ð±Ð¾ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78R_AMD64_IMAGEBASE Ð· Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¼ __ImageBaseR_BFIN_FUNCDESC Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼R_BFIN_FUNCDESC_VALUE Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼R_FRV_TLSMOFFLO Ñ” Ð½ÐµÐ·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²Ð½Ð¸Ð¼ Ð´Ð¾ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ setlo Ð°Ð±Ð¾ setlos
 Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ñ— Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ mod Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %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) Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð° Ð¿Ð¾Ð·Ð° 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 Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pAÑ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ SFrame Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¼ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð´Ð°Ð½Ð¸Ñ… Ð·Ð°Ð²Ð°Ð¶Ð°ÑŽÑ‚ÑŒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .sframeSHELL            SHRFXDSHRPICÐ²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ SHSTKÐ’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� SIMD: SPSC â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ñƒ
 STABLE           STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð½Ñ�)
 STA_GBL (Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ñ‚ÐµÐº) %.*s
 STA_LI (Ñ�Ñ‚ÐµÐº Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»Ñ–Ð²)
-STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð¾Ð²Ð³Ð¸Ñ… Ñ�Ð»Ñ–Ð²) 0x%08x
-STA_MOD (Ñ�Ñ‚ÐµÐº Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²)
+STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð¾Ð²Ð³Ð¸Ñ… Ñ�Ð»Ñ–Ð²)STA_MOD (Ñ�Ñ‚ÐµÐº Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²)
 STA_PQ (Ñ�Ñ‚ÐµÐº Ð¾Ñ�Ð½Ð¾Ð²Ð¸ psect + Ð·Ñ�ÑƒÐ²)
-STA_QW (Ñ�Ñ‚ÐµÐº Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ð¸Ñ… Ñ�Ð»Ñ–Ð²) 0x%08x %08x
-STC_BOH_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BOH Ð·Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ)
+STA_QW (Ñ�Ñ‚ÐµÐº ÐºÐ²Ð°Ð´Ñ€Ð¾Ñ�Ð»Ñ–Ð²)STC_BOH_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BOH Ð·Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ)
 STC_BOH_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BOH Ð·Ð° psect + Ð·Ñ�ÑƒÐ²)
 STC_BSR_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BSR Ð·Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ)
 STC_BSR_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ BSR Ð·Ð° psect + Ð·Ñ�ÑƒÐ²)
@@ -1291,27 +1393,27 @@ X-Generator: Lokalize 2.0
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ„Ð°Ð¹Ð»Ñ–Ð² ÐºÐ¾Ð´Ñƒ
 ÐžÑ�Ð¾Ð±Ð»Ð¸Ð²Ð¸Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ° Ð´Ð»Ñ� ÐºÐ¾Ñ€ÐµÐ½ÐµÐ²Ð¸Ñ… Ð²ÑƒÐ·Ð»Ñ–Ð² Ð³Ñ€Ð°Ñ„Ñƒ Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð².
 ÐšÑ€Ð¾ÐºÐ¸:
-Ð¡Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñ–Ð²: %s Ñƒ %pB Ñ– REGISTER Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñƒ %pBÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²Ð¢Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ– Ð°Ð´Ñ€ÐµÑ�Ð¸
-ÐŸÐ¾Ð»Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð·Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ Ð´Ð»Ñ� Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑƒÐ Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸
+Ð¡Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñ–Ð²: %s Ñƒ %pB Ñ– REGISTER Ñ€Ð°Ð½Ñ–ÑˆÐµ Ñƒ %pBÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� TOC Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -mminimal-toc Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ�Ð¢Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ– Ð°Ð´Ñ€ÐµÑ�Ð¸
+Ð�Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¸ Ð´Ð»Ñ� R_RISCV_GOT_HI20ÐŸÐ¾Ð»Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð·Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ Ð´Ð»Ñ� Ñ†ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑƒÐ Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸
 ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑ–Ð² [.tls]ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐºÐ° Ñ‡Ð°Ñ�Ñƒ/Ð´Ð°Ñ‚Ð¸		%lx
 Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ‚Ð¸Ñ‚ÑƒÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ñ‚ÐµÐºÑ�Ñ‚Ñƒ
 Ð—Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ ÐºÐ¾Ð´Ñ–Ð² Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ� (%ld)
 Ð¢Ð¸Ð¿                 Ð Ð¾Ð·Ð¼     Rva      Ð—Ñ�ÑƒÐ²
-USRSTACKÐ�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹: %xÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W (%v) Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (0x%v) Ð· %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)
+USRSTACKÐ�Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ�, Ñ‰Ð¾ Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° %sÐ�Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…: %sÐ�Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ DLL.Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹: %xÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W (%v) Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (0x%v) Ð· %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)
 ÐžÐ½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W (0x%v) Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (0x%v) Ð· %pB (0x%v)
 VOLATILE         Ð’Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .pdata (%ld) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€ÐµÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%ld)
 ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s (%ld) Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %d
 ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %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, Ñ‰Ð¾Ð± Ð¹Ð¾Ð³Ð¾ Ð´Ð¾Ð´Ð°Ñ‚Ð¸Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ð¼Ð°Ñ�Ð¸Ð²Ñƒ:
+ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Â«_Â» Ð´Ð»Ñ� Ð·Ð²'Ñ�Ð·ÐºÑƒ ÐŸÑ€Ð¾Ñ„Ñ–Ð»Ñ–Ð² Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼Ð¸Ð—Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾Ñ— Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ñ— Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ armapÐ�Ð´Ñ€ÐµÑ�Ð° XGATE (%lx) Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð° Ð¿Ð¾Ð·Ð° RAM Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (0xE000-0xFFFF), Ñ‚Ð¾Ð¼Ñƒ Ð²Ð°Ð¼ Ñ�Ð»Ñ–Ð´ Ð²Ñ€ÑƒÑ‡Ð½Ñƒ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð°Ð´Ñ€ÐµÑ�Ð¸ Ñ–, Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, ÐºÐµÑ€ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¾ÑŽ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ñƒ Ð²Ð°ÑˆÐ¾Ð¼Ñƒ ÐºÐ¾Ð´Ñ–.[%u]: Ð½Ð¸Ð¶Ð½Ñ�: %u, Ð²ÐµÑ€Ñ…Ð½Ñ�: %u
+[abi=16-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ñ†Ñ–Ð»Ðµ, [abi=32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ñ†Ñ–Ð»Ðµ, [Ñ‡Ð¸ÑŽ Ð½Ð°Ð·Ð²Ñƒ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾]\%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s BLX Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ %s Â«%sÂ».Ð²Ð¸ÐºÐ»Ð¸Ðº __tls_get_addr Ð¿Ñ€Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð±ÐµÐ· Ð²Ñ…Ð¾Ð´ÑƒÂ«xtheadvectorÂ» ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ Â«v/zve32xÂ»Â«zclsdÂ» ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ Â«c+fÂ»/ Â«zcfÂ»Â«zfinxÂ» ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ Â«f/d/q/zfh/zfhminÂ»Ð¾Ð±'Ñ”ÐºÑ‚ 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: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lxbfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lxbfd_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
+Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� (PC rel16) Ð´Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%s) Ð½Ðµ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ”Ñ‚ÑŒÑ�Ñ�Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ bss-pltÐ¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ bss-plt Ñ‡ÐµÑ€ÐµÐ· %pBcÂ» Ð°Ð±Ð¾ Â«zcaÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð±ÑƒÐ´ÑƒÐ²Ð°Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Â«%sÂ»Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Â«%sÂ»Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð½Ð° JALX Ð´Ð»Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸, Ñ�ÐºÑƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð°Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð½Ð° JALX Ð´Ð»Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸, Ñ�ÐºÑƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð°Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %sÐ½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð°Ð´Ñ€ÐµÑ�Ð½Ñƒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÑƒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ EMH Ñƒ Ð¿ÐµÑ€ÑˆÐ¾Ð¼Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– GST
+Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ‚Ð¸Ð¿Ð¾Ð²Ñ– Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%sÂ»Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ DMT
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DMT
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ psect DMT
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ DST
@@ -1327,68 +1429,73 @@ X-Generator: Lokalize 2.0
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ GST
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� GST
 Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ñƒ 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
+Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ R_LARCH_PCREL20_S2 Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼ Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ [-2048, 2048)ÐºÐ»Ð°Ñ�: %u, dtype: %u, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº: 0x%08x
+Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñƒ %pBÐ¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EEOM: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð¸Ð¿Ñƒ %d EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð·Ð° Ð·Ð°Ð»Ð¸ÑˆÐ¾Ðº Ð¼Ñ–Ñ�Ñ†Ñ� (%#x)Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð¸Ð¿Ñƒ %d EGSD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð²Ð¼Ñ–Ñ�Ñ‚ Ð¹Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ� psindx Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%#lx)Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EIHD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� ETIRÐ¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� vmsÐ¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ GST
+Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %sÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __ctbpÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __epÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __gpÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ð· Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Â«%sÂ» Ð· Â«%sÂ»Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=XGATE]dÂ» Ñ– Â«cÂ» Ð°Ð±Ð¾ Â«zcddÂ» Ñ– Â«zfadÂ» Ð°Ð±Ð¾ Â«zdinxÐ½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¿Ñ€Ð¸Ñ€Ñ–Ñ�Ñ‚ 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 Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ð´Ð°Ð½Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ñ–Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñƒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� %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 Ð½Ðµ Ð±ÑƒÐ´Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ %pB(%pA); Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ .sframe Ð½Ðµ Ð±ÑƒÐ´Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ %pB(%pA); Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SFrameÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� %s: %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ‚Ð¸Ð¿Ñƒ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° Ð· Ð¿Ñ€Ð¸Ð²Ð°Ñ‚Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… elfÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ð¾Ð¶Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð²ÐµÑ€Ñ…Ð½ÑŽ Ð´Ñ–Ð»Ñ�Ð½ÐºÑƒ Ð´Ð°Ð½Ð¸Ñ…, Ð°Ð»Ðµ %pB Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ‚Ðµ, Ñ‰Ð¾ Ð´Ð°Ð½Ñ– Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð»Ð¸ÑˆÐµ Ñƒ Ð½Ð¸Ð¶Ð½Ñ–Ð¹ Ð´Ñ–Ð»Ñ�Ð½Ñ†Ñ– Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ–Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ LOAD Ñ–Ð· Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ RWXÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ TLS Ð· Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñƒ Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– BE8Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� APCS-%d, Ñ‚Ð¾Ð´Ñ– Ñ�Ðº %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” APCS-%dÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %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: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾Ð³Ð¾ RISC-V: 0x%x>Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– (0x%x): 0x%x>Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– (0x%x) x86: 0x%x>Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ–Ð· Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s)Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ñ–Ñ— SB ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ R9Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: XLEN Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð´Ð»Ñ� Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u)Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ rf16 Ñ– Ð¿Ð¾Ð²Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA, %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»Ñ–Ð² Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€, %c/%cÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %s: %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ñƒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ– R9Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº ISA Â«%sÂ». ÐŸÐµÑ€ÑˆÐ¾ÑŽ Ð»Ñ–Ñ‚ÐµÑ€Ð¾ÑŽ Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Â«iÂ» Ð°Ð±Ð¾ Â«eÂ», Ð° Ð¼Ð°Ñ”Ð¼Ð¾ Â«%sÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ñ�Ð´ÐºÐ°Ñ… ISA Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½ÑŽ Â«%sÂ» Ð· Â«%sÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ– Ñƒ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–, Ñ†Ñ– Ð´Ð°Ð½Ñ– Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Â«%sÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¼Ñ–Ñ‚ÐºÐ° Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Â«%d, %sÂ» Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð° Ð· Ð¼Ñ–Ñ‚ÐºÐ¾ÑŽ Â«%d, %sÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð±Ð°Ð·Ð¾Ð²Ñ– Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð° %s Ð· %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð· %pB Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²ÐµÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� XLEN (%u). Ð™Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, Ð²Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚Ðµ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ñƒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–ÑŽÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð²Ð¼Ð¸ÐºÐ°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° (Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .note.GNU-stack)Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð²Ð¼Ð¸ÐºÐ°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ°, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ note.GNU-stackÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� %pB Ð·Ñ– Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¼ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ %pB Ñ–Ð½ÑˆÐ¾Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %sÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð², %s Ð°Ð±Ð¾ %s, Ñƒ %pBÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ñ‚ÐµÐº, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ° -z Ñ�Ñ‚ÐµÐº Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� uleb128 Ð· Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ 0x%lx Ñƒ %pA Ð· %pB Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ÑƒÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñƒ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ– Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� 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Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹fÂ» Ñ– Â«cÂ» Ð°Ð±Ð¾ Â«zcffÂ» Ð°Ð±Ð¾ Â«zfinxÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� HI16Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfoÐ½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ñ�ÑƒÐ²Ð¸ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð·Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� .fixupÑ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ñ” Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¸Ð¼Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–Ñ„Ð°Ð¹Ð» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ñ„Ð°Ð¹Ð» Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� uleb128 Ð· Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ 0x%lx Ñƒ %pA Ð· %pB Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€ÑƒÐ¿Ð¾Ð´Ð°Ð»ÑŒÑˆÑ– Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� FDE, Ñ�ÐºÐµ Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .eh_frame_hdr, Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ‚Ð¸ %sÐ²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð±ÐµÐ· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� _gphÐ¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ‚Ð¸Ð¿Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² Ñƒ Ñ„Ð°Ð¹Ð»Ð°Ñ… 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
+Ð²Ñ…Ñ–Ð´Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ SFrame Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼ abi Ð·Ð°Ð²Ð°Ð¶Ð°ÑŽÑ‚ÑŒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .sframeÐ²Ñ…Ñ–Ð´Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ SFrame Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ð¼Ð¸ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–Ð² Ð·Ð°Ð²Ð°Ð¶Ð°ÑŽÑ‚ÑŒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .sframeÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð»Ñ� %sÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð°Ð±Ð¾ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½ÐµÐ¿Ð°Ñ€Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Â«%sÂ» Ð· Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¾ÑŽ Â«%sÂ» Ð¿Ñ€Ð¸Ð·Ð²ÐµÐ»Ð¾ Ð´Ð¾ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ð¾Ð·Ñ€Ñ–Ð»Ð¸Ð²Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð°Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .got.locÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ: Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ�. %lu; Ð±ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ñ‚Ðµ Ð¿Ñ€Ð¾ Ñ†ÑŽ Ð²Ð°Ð´ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ�: Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¹ INSN_CLASS_*Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ %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
+ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ñ–ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°Ñ…ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°Ñ…ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ñ–Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð±ÑƒÐºÐ²Ð°Ð»ÑŒÐ½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÑ–Ð½Ð´ÐµÐºÑ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ð´Ð¾Ð²Ð³Ð¾Ñ— Ð³Ñ–Ð»ÐºÐ¸, Â«%sÂ»m' Ð°Ð±Ð¾ `zmmulmach-o: Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² (%u), Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 255,
+Ð°Ñ€Ñ…Ñ–Ð² Ð· Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� 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 Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Ð¼Ñ–Ñ�Ñ‚ÐºÑ–Ñ�Ñ‚ÑŒ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ñ…Ð¾Ð²Ð¸Ñ‰Ð° Ð´Ð°Ð½Ð¸Ñ…
-Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– @fptrÐ½ÐµÐ¼Ð°Ñ”Ñ€Ð¾Ð·Ð´Ñ–Ð», Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² GOTÐ½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒÐ½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ñ–=%lx Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d
-Ð½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð¼Ñ–Ð½Ð½Ñƒ Ñ�ÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰Ð° var
-Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ– Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸!Ð·Ñ�ÑƒÐ² Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÐ¸ Ð´Ð»Ñ� Ð²Ñ…Ñ–Ð´Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ» Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ—Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ÑƒÐ¾Ð´Ð½Ñ–Ñ”ÑŽ Ñ–Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ñ… Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ Ñ†Ñ–Ñ”Ñ— Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ” Ñ‚Ðµ, Ñ‰Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ ÐºÐ¾Ð´Ñ– Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ðº, Ð½Ð°Ñ‡Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¼Ð°Ñ” Ð±Ñ–Ð»ÑŒÑˆÐµ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�, Ð½Ñ–Ð¶ Ð±ÑƒÐ»Ð¾ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð¾ Ñ‚Ð°Ð¼, Ð´Ðµ Ð¹Ð¾Ð³Ð¾ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ñ�Ð»Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ÑƒÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº
+Ð½Ð°Ð·Ð²Ð°: [Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: %08lx Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° %d]: Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ð¹Ð²Ð¿Ñ€Ð¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð¾ Ð½Ð¾Ð²Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—, Ð°Ð»Ðµ Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…:Ð½Ñ–Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð½Ð°Ð·Ð¾Ð²Ð½Ñ– %s Ð½Ðµ Ð¿Ð¾Ð²â€™Ñ�Ð·Ð°Ð½Ð¾ Ð°Ð´Ñ€ÐµÑ�Ð¸Ð½ÐµÐ¼Ð°Ñ” Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ°Ð±ÐµÐ· Ð¿Ð¾Ð¼Ð¸Ð»Ð¾ÐºÐ±Ñ–Ð»ÑŒÑˆÐµ Ð°Ñ€Ñ…Ñ–Ð²Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð½ÐµÐ¼Ð°Ñ”Ð½ÐµÐ¼Ð°Ñ” Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ð½Ð¸Ð¹ Ð¼Ð°Ñ�Ð¸Ð² %s
+Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», %sÐ½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²Ñ�ÑƒÐ¼Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ 0x%v Ð±ÐµÐ· Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ Ñ‚Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¾Ð²ÐµÑ€Ð»ÐµÑŽ 0x%v Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑŽÑ‚ÑŒ Ð¼Ñ–Ñ�Ñ‚ÐºÑ–Ñ�Ñ‚ÑŒ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ñ…Ð¾Ð²Ð¸Ñ‰Ð° Ð´Ð°Ð½Ð¸Ñ…
+Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– @fptrÐ½ÐµÐ¼Ð°Ñ”Ñ€Ð¾Ð·Ð´Ñ–Ð», Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² GOTÐ½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒÐ½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ– Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸!Ð·Ñ�ÑƒÐ² Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÐ¸ Ð´Ð»Ñ� Ð²Ñ…Ñ–Ð´Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ» Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ—Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ÑƒÐ¾Ð´Ð½Ñ–Ñ”ÑŽ Ñ–Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ñ… Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½ Ñ†Ñ–Ñ”Ñ— Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñ” Ñ‚Ðµ, Ñ‰Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ ÐºÐ¾Ð´Ñ– Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ðº, Ð½Ð°Ñ‡Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¼Ð°Ñ” Ð±Ñ–Ð»ÑŒÑˆÐµ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�, Ð½Ñ–Ð¶ Ð±ÑƒÐ»Ð¾ Ð¾Ð³Ð¾Ð»Ð¾ÑˆÐµÐ½Ð¾ Ñ‚Ð°Ð¼, Ð´Ðµ Ð¹Ð¾Ð³Ð¾ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ñ�Ð»Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ÑƒÐ¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ð´Ð¾Ð´Ð°Ñ‚ÐºÑ–Ð²: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ñ–Ð² Ñ„Ð°Ð¹Ð»Ñ–Ð². Ð¡Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð·Ð¼ÐµÐ½ÑˆÐ¸Ñ‚Ð¸ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²/Ð°Ñ€Ñ…Ñ–Ð²Ñ–Ð²
+Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº
 Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lxÐ·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx:Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx: Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lxÐ·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lx:Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð°Ð´Ñ€ÐµÑ�Ð° bkpt 0x%08x
-Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» recbeg: Ð½Ð°Ð·Ð²Ð°: %.*s
+Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» qÂ» Ñ– Â«zfaqÂ» Ð°Ð±Ð¾ Â«zqinxrecbeg: Ð½Ð°Ð·Ð²Ð°: %.*s
 recend
-Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ñƒ Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñ– Ð°Ð´Ñ€ÐµÑ�, %04lxÐ¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº Ñƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ–.Ñ€ÐµÐ³Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ %%g%d: %s Ñƒ %pB, Ñ€Ð°Ð½Ñ–ÑˆÐµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %s Ñƒ %pBÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ–
-Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñ” *Ð�Ð•Ð’Ð†Ð”ÐžÐœÐ˜Ðœ*Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� psect, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” RELÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾ÐºÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð½Ð¸Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð²Ð¸Ð»ÑƒÑ‡Ð°Ñ”Ð¼Ð¾ Ð½ÐµÐ²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Â«%pBÂ»Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ� %pB: %s
-Ð·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %drtnbeg
+Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ 'gcc -mno-relax', Ð°Ð±Ð¾ 'as -mno-relax', Ð°Ð±Ð¾ 'ld --no-relax'Ð·Ð°Ð¿Ð¸Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ Ð´Ð»Ñ� Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ Ð½Ð°Ð·Ð²Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»ÑƒÐ¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð·Ð°Ð½ÐµÑ�ÐµÐ½Ñƒ Ð´Ð¾ Ð±Ð°Ð½ÐºÑƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ [%lx:%04lx] Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñ– Ð°Ð´Ñ€ÐµÑ�, %04lxÐ¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð²Ñ–Ð´Ð´Ð°Ð»ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð·Ð²ÐµÑ�Ñ‚Ð¸ Ð´Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº Ñƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ–.Ñ€ÐµÐ³Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ %%g%d: %s Ñƒ %pB, Ñ€Ð°Ð½Ñ–ÑˆÐµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %s Ñƒ %pBÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ–
+Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñ” *Ð�Ð•Ð’Ð†Ð”ÐžÐœÐ˜Ðœ*Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð¼Ð°Ñ” Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ‚Ð¸Ð¿ GOTÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� psect, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” RELÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ÑƒÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾ÐºÐ¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð½Ð¸Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾Ð²Ð¸Ð»ÑƒÑ‡Ð°Ñ”Ð¼Ð¾ Ð½ÐµÐ²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Â«%pBÂ»Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ� %pB: %sÐ·Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %drtnbeg
 rtnend: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ 0x%08x
-Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ðµ Ð¼Ð°Ñ” Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒseptyp, Ð½Ð°Ð·Ð²Ð°: %.*s
+Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«qÂ»Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«smmpmÂ»Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«smnpmÂ»Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«ssnpmÂ»Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«sspmÂ»Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«supmÂ»Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«zcfÂ»Ñƒ rv%de Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«hÂ»Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ðµ Ð¼Ð°Ñ” Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒseptyp, Ð½Ð°Ð·Ð²Ð°: %.*s
 set_abs_pc: 0x%08x
 set_line_num(w) %u
 set_line_num_b %u
 set_line_num_l %u
-Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pAÑ€Ð¾Ð·Ð´Ñ–Ð» Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 64 ÐºÐ‘; Ð½Ð¸Ð¶Ñ‡Ð¸Ð¹ Ð·Ð° Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (Ð´Ð¸Ð². Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾Ð²Ð¸Ð±Ð°Ñ‡Ñ‚Ðµ, Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ– Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð².
+Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pAÑ€Ð¾Ð·Ð´Ñ–Ð» Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼; Ð·Ñ€Ð¾Ð±Ñ–Ñ‚ÑŒ Ð½Ð¸Ð¶Ñ‡Ð¸Ð¼ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (Ð´Ð¸Ð². Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)smctrÂ» Ð°Ð±Ð¾ Â«ssctrsom_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 Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ GNU Ñ‚Ð° FreeBSDÑ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ñ‚Ð¸Ð¿Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² STT_GNU_IFUNC Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ GNU Ñ‚Ð° FreeBSDÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒÐ¼Ð°Ñ�Ð¸Ð² Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸:
 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Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ gpvÂ», Ð°Ð±Ð¾ Â«zve64dÂ», Ð°Ð±Ð¾ Â«zve64fÂ», Ð°Ð±Ð¾ Â«zve32fvÂ», Ð°Ð±Ð¾ Â«zve64xÂ», Ð°Ð±Ð¾ Â«zve32xÐ°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° 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 Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ LOAD Ñ–Ð· Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ RWXÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ TLS Ð· Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %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(%s): Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ñ”Ð¼Ð¾ Ð³Ñ–Ð»ÐºÑƒ Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Thumb (Ð»Ð¸ÑˆÐµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð¸ Thumb) Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %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: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ°: 0x%xÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° MSPABI %dÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ABI RISCV %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: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡ÐµÑ€ÐµÐ· Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŽ Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�
- Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ¾Ð¼ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾: %# != Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾: %#%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
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ %s, Ð° Ð½Ðµ %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .note.GNU-stack Ð½ÐµÑ�Ð²Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ�Ñ‚ÐµÐºÐ°Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° (Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .note.GNU-stack Ñ” Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¼)Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: (%s): Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ñ”Ð¼Ð¾ Ð³Ñ–Ð»ÐºÑƒ Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Thumb (Ð»Ð¸ÑˆÐµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð¸ Thumb) Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --plt-localentry Ð¾Ñ�Ð¾Ð±Ð»Ð¸Ð²Ð¾ Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ð¹, Ñ�ÐºÑ‰Ð¾ Ñƒ ld.so Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ€ÑƒÑˆÐµÐ½ÑŒ ABIÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --plt-localentry Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ñ–Ð· Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¸Ð¼ Ñ‰Ð¾Ð´Ð¾ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ ÐºÐ¾Ð´Ð¾Ð¼ power10Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ� Ñƒ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ– Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ñ�Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¿Ñ€Ð°Ð²Ð¶Ð½Ñ– Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸. Ð Ð°Ð´Ð¸Ð¼Ð¾ Ð²Ð¸Ð²Ñ‡Ð¸Ñ‚Ð¸ Ñ†Ðµ Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ�.Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ– Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ñ�Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¿Ñ€Ð°Ð²Ð¶Ð½Ñ– Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸. Ð Ð°Ð´Ð¸Ð¼Ð¾ Ð²Ð¸Ð²Ñ‡Ð¸Ñ‚Ð¸ Ñ†Ðµ Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ�.Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RL78_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RX_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� (%u) Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pAÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ñ” Ð¼ÐµÐ½ÑˆÐ¸Ð¼ Ð·Ð° %u, Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ñƒ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ– Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ñ” Ð¼ÐµÐ½ÑˆÐ¸Ð¼ Ð·Ð° %u Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÑ„ÑƒÐ½ÐºÑ†Ñ–Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %s, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð· Ð½Ð¸Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´, Ñ�ÐºÐ¸Ð¹ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸, Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚ Ð·Ð·Ð¾Ð²Ð½Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ð´Ð°Ð½Ñ– Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ�
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ”Ð¼Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¼Ð¸ÐºÐ°Ñ”Ð¼Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ñ‚ÐµÐº, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ° -z Ñ�Ñ‚ÐµÐº Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð° %pB %s ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ %s, Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ñ–Ñ‚ÑŒ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñƒ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð° %pB %s ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†ÐµÐ¼ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� ck%s, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ %sÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð², Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ GCS.
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ BTI.
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ GCS.
+Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PICÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PIDÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð¹Ð¾Ð³Ð¾ Ð²Ð¶Ðµ Ð±ÑƒÐ»Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ‚Ð°Ðº, Ñ‰Ð¾Ð± Ð²Ñ–Ð½ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½Ñ�Ð² Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð¸Ð²Ñ–Ð»ÐµÐ¹Ð¾Ð²Ð°Ð½Ñƒ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— Ð¿Ñ€Ð°Ð² Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ 1.9.1 Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ð¼Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ð¹Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾ Ð½Ð° Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð½Ð° PROGBITSÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñ” Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ– Ð¿Ð¾Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð· %d Ð½Ð° %d Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ %pBÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð½Ð°Ð·Ð²Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Â«%#xÂ»Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ e-Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸, Â«%#lxÂ»Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð°Ð±Ð¾ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñ–; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ñ‚Ð¸Ð¿Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ð²Ñƒ Ð±ÑƒÐ»Ð¾ Ð¿Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¸Ð¼: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�ÑƒÑ”Ð¼Ð¾ Ñ‡Ð°Ñ�Ð¾Ð²Ñƒ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÑƒÐ¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð° Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (Ñ‚Ð¾Ð±Ñ‚Ð¾ Ð²Ñ–Ð´â€™Ñ”Ð¼Ð½Ð¸Ð¼) Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ Ñƒ Ñ„Ð°Ð¹Ð»Ñ–Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» xdata
+Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� x ISA Â«%sÂ» Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñ–Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ�Ð¼Ð¸Ñ‚Ð°ÐºÐ½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ‚Ð¸ %s Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ–zbbÂ» Ð°Ð±Ð¾ Â«zbkbzbcÂ» Ð°Ð±Ð¾ Â«zbkczcbÂ» Ñ– Â«zbazcbÂ» Ñ– Â«zbbzcbÂ» Ñ– Â«zmmulÂ» Ð°Ð±Ð¾ Â«zcbÂ» Ñ– Â«mzcmp Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ñ–Ð· Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ Â«dÂ» Ñ– Â«cÂ» Ð°Ð±Ð¾ Â«zcdÂ»zfhÂ» Ñ– Â«zfazfhÂ» Ñ– Â«zfaÂ» Ð°Ð±Ð¾ Â«zvfhÂ» Ñ– Â«zfazfhÂ» Ð°Ð±Ð¾ Â«zhinxzfhÂ» Ð°Ð±Ð¾ Â«zvfhzfhminÂ» Ñ– Â«dÂ» Ð°Ð±Ð¾ Â«zhinxminÂ» Ñ– Â«zdinxzfhminÂ» Ñ– Â«qÂ» Ð°Ð±Ð¾ Â«zhinxminÂ» Ñ– Â«zqinxzfhminÂ» Ð°Ð±Ð¾ Â«zhinxminzicfissÂ» Ñ– Â«zcmopzihintntlÂ» Ñ– Â«cÂ» Ð°Ð±Ð¾ Â«zihintntlÂ» Ñ– Â«zcazkndÂ» Ð°Ð±Ð¾ Â«zknezvbbzvbczvkbzvkgzvknedzvknhaÂ» Ð°Ð±Ð¾ Â«zvknhbzvksedzvkshÐ Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� zvl*b Ð¼Ð°ÑŽÑ‚ÑŒ Ð²Ð¼Ð¸ÐºÐ°Ñ‚Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«vÂ» Ð°Ð±Ð¾ Â«zveÂ»PRIx64PRIu64PRId64PRIx32%pB: %# overflows header %s field%pB: invalid string offset % >= %%pB: TOC reloc at %# to symbol `%s' with no TOC entry%pB: TLS relocation at 0x% over non-TLS symbol %s (0x%x)
+%pB: TLS local relocation at 0x% over imported symbol %s
+%pB: relocation (%d) at 0x% has wrong r_rsize (0x%x)
+%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: relocation (%d) at (0x%) has wrong r_rsize (0x%x)
+%pB: illegal relocation type %d at address %#%pB: bad string table size %%pB: stripping non-representable symbol '%s' (value 0x%)%pB: bad reloc address %# in section `%pA'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(%pA+%#): unresolvable %s relocation against symbol `%s'%pB: invalid string offset %u >= % for section `%s'%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+%#): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)%pB(%pA+%#): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)%pB(%pA+%#): cannot handle %s for %s%pB: bad reloc offset (%# > %#) for section `%pA'ip2k 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(%pA+%#): relocation %s against misaligned symbol `%s' (%#) in %pB%pB: bad reloc offset (%# > %#) for section `%pA'%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: %pA+%: relocation addend % too large%pB: version count (%) does not match symbol count (%ld)%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: bad symbol definition: `Main' set to % rather than the start address %
+%pB: too many initialized registers; section length %%pB: invalid start address for initialized registers of length %: %#%pB(%pA+%#): %s relocation offset out of order%pB(%pA+%#): %s relocation offset out of range%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 csect%pB: Unable to find a stub csect in rangeof relocation at %# targeting'%s'TOC overflow: %# > 0x10000; try -mminimal-toc when compiling%pB: error: erratum 843419 immediate 0x% out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead%pB(%pA+%#): unresolvable %s relocation in section `%s'%# invaild imm%pB: R_LARCH_ALIGN with offset % not aligned to instruction boundary%pB(%pA+%#): % bytes required for alignment to %-byte boundary, but only % present%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x% without any addend, but may be 0x% after adding the %%pcrel_lo addend%pB: Data Directory (%lx bytes at %) extends across section boundary at %%pB: %# Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÑŽÑ” Ð¿Ð¾Ð»Ðµ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° %s%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ñ€Ñ�Ð´ÐºÐ°, % >= %%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TOC Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð½ÐµÐ¼Ð°Ñ” Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñƒ TOC%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ 0x% Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾Ð·Ð° TLS %s (0x%x)
+%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ 0x% Ð½Ð° Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s
+%pB: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñƒ 0x% Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ r_rsize (0x%x)
+%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ R_SH_USES%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_SH_USES Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ %#x%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� R_SH_USES%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� COUNT%pB: %#: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº%pB: %#: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ%pB: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñƒ (0x%) Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ r_rsize (0x%x)
+%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %%pB: Ð¿Ñ€Ð¸Ð±Ð¸Ñ€Ð°Ñ”Ð¼Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� 0x%)%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB(%pA) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%# Ð±Ð°Ð¹Ñ‚Ñ–Ð²)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ (%) Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ð°Ð±Ð¾ Ñ€Ñ–Ð²Ð½Ð¸Ð¼ Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ %s (%).ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° Ð´Ð°Ð½Ð¸Ñ… (%) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð±ÑƒÑ„ÐµÑ€Ð°ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ %ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ (%)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð´Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼Ð¸ (%#) Ð·Ð° Ð¼Ñ–Ñ�Ñ†Ðµ, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%#lx)ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� %ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIE %%pB(%pA+%#): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ€Ñ�Ð´ÐºÐ°, %u >= %, Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»%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+%#): Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� %#x Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %#x Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ 8 (gp %#x)%pB(%pA+%#): Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� %#x Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %#x Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ 4 (gp %#x)%pB(%pA+%#): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ %s Ð´Ð»Ñ� %s%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%# > %#) Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%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: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡ÐµÑ€ÐµÐ· Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŽ Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�
+ Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ¾Ð¼ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾: %# != Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾: %#%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ð° LOCAL: Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€ $% Ð½Ðµ Ñ” Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¼ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¾Ð¼. ÐŸÐµÑ€ÑˆÐ¸Ð¼ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¼ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¾Ð¼ Ñ” $%.%pB(%pA+%#): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» (%#) Ñƒ %pB%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%# > %#) Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ STT_GNU_IFUNC, Â«%sÂ», Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº: %%pB: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº %s%#x Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %# Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ%pB: %pA+%: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� % Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼%pB: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ð²ÐµÑ€Ñ�Ñ–Ñ— (%) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ (%ld)%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: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: Â«MainÂ» Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ %, Ð° Ð½Ðµ Ñƒ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %
+%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²; Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ â€” %%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ð»Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ %: %#%pB(%pA+%#): %s Ð·Ñ�ÑƒÐ² Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð·Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼%pB(%pA+%#): Ð·Ñ�ÑƒÐ² Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿Ð¾Ð·Ð° Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» XTY_ER Â«%sÂ»: ÐºÐ»Ð°Ñ� %d, Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ” ÐºÐ»Ð°Ñ�Ð¾Ð¼ %d, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s:% Ð½Ðµ Ñƒ csect%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ csect Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– rangeof Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#, Ñ‰Ð¾ Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Â«%sÂ»ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� TOC: %# > 0x10000; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -mminimal-toc Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ�%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€ Ð½ÐµÐ³Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ Ð·Ñ– Ð·Ð²Ñ–Ñ‚Ñƒ 843419 Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ 0x% Ð´Ð»Ñ� ADR (Ð²Ñ…Ñ–Ð´Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼) Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ --fix-cortex-a53-843419=adr. Ð’Ð°Ñ€Ñ‚Ð¾ Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ñ–Ð· Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --fix-cortex-a53-843419=full%pB(%pA+%#): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%sÂ»%# Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ imm%pB: R_LARCH_ALIGN Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ % Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—%pB(%pA+%#): Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ñ– % Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð´Ð»Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ð½Ð° %-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ð¼ÐµÐ¶Ñƒ, Ð²Ñ‚Ñ–Ð¼, Ð¼Ð°Ñ”Ð¼Ð¾ Ð»Ð¸ÑˆÐµ %Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� %%pcrel_lo Ñ€Ð°Ð·Ð¾Ð¼ Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %%pcrel_hi Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 0x% Ð±ÐµÐ· Ð´Ð¾Ð´Ð°Ð½ÐºÐ°, Ð°Ð»Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ€Ñ–Ð²Ð½Ð¸Ð¼ 0x% Ð¿Ñ–Ñ�Ð»Ñ� Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ� %%pcrel_lo%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.20200303/bfd/po/uk.po ./bfd/po/uk.po
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/po/uk.po	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/po/uk.po	2026-03-05 02:07:20.000000000 +0000
@@ -2,682 +2,765 @@
 # 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-2025.
 msgid ""
 msgstr ""
-"Project-Id-Version: bfd 2.31.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"
+"Project-Id-Version: bfd 2.44.90\n"
+"Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n"
+"POT-Creation-Date: 2025-07-13 08:44+0100\n"
+"PO-Revision-Date: 2025-07-14 22:19+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 23.04.3\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:444 pdp11.c:481
+#, c-format
+msgid "%pB: %#<PRIx64> overflows header %s field"
+msgstr "%pB: %#<PRIx64> Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÑŽÑ” Ð¿Ð¾Ð»Ðµ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° %s"
+
+#: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495
 #, 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:1562 pdp11.c:1467
 #, 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:1565 vms-alpha.c:8473
 msgid "*unknown*"
 msgstr "*Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾*"
 
-#: aoutx.h:1721
+#: aoutx.h:1701 pdp11.c:1563
 #, c-format
 msgid "%pB: invalid string offset %<PRIu64> >= %<PRIu64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ñ€Ñ�Ð´ÐºÐ°, %<PRIu64> >= %<PRIu64>"
 
-#: aoutx.h:2412 aoutx.h:2430
+#: aoutx.h:1945
+#, c-format
+msgid "%pB: unsupported AOUT relocation size: %d"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� AOUT: %d"
+
+#: aoutx.h:2389 aoutx.h:2407 pdp11.c:2040
 #, c-format
 msgid "%pB: attempt to write out unknown reloc type"
 msgstr "%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð²Ð¸Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: aoutx.h:4086
+#: aoutx.h:4040 pdp11.c:3402
 #, 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
-#: 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
+#: aoutx.h:4360 coff-alpha.c:604 coff-mips.c:356 coff-rs6000.c:3037
+#: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798
+#: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531
+#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4692
+#: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429
+#: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544
+#: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558
+#: elf32-frv.c:6246 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394
+#: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305
+#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2211 elf32-m68hc11.c:390
+#: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440
+#: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708
+#: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137
+#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3294
+#: elf32-nds32.c:3315 elf32-nds32.c:5084 elf32-or1k.c:1085 elf32-pj.c:326
+#: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291
+#: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347
+#: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163
+#: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537
+#: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924
+#: elf32-v850.c:4254 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105
+#: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510
+#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4058
+#: elf64-alpha.c:4206 elf64-bpf.c:132 elf64-ia64-vms.c:255
+#: elf64-ia64-vms.c:3428 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260
+#: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394
+#: elf64-s390.c:331 elf64-s390.c:381 elf64-x86-64.c:305 elf64-x86-64.c:2558
+#: elfn32-mips.c:3799 elfxx-ia64.c:324 elfxx-loongarch.c:1897
+#: elfxx-riscv.c:1068 elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:907
+#: elfxx-tilegx.c:947 elfnn-aarch64.c:2215 elfnn-aarch64.c:2316
+#: elfnn-ia64.c:214 elfnn-ia64.c:3823 elfnn-kvx.c:259
 #, c-format
 msgid "%pB: unsupported relocation type %#x"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x"
 
-#: aoutx.h:5434 pdp11.c:3694
+#: aoutx.h:5380 pdp11.c:3818
 #, 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:748
+msgid "%P: %pB(%s): error opening thin archive member: %E\n"
+msgstr "%P: %pB(%s): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ Ñ‚Ð¾Ð½ÐºÐ¾Ð³Ð¾ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ: %E\n"
+
+#: archive.c:2282
 msgid "warning: writing archive was slow: rewriting timestamp"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð°Ñ€Ñ…Ñ–Ð²Ñƒ Ð±ÑƒÐ»Ð¾ Ð¿Ð¾Ð²Ñ–Ð»ÑŒÐ½Ð¸Ð¼: Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñ�ÑƒÑ”Ð¼Ð¾ Ñ‡Ð°Ñ�Ð¾Ð²Ñƒ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÑƒ"
 
-#: archive.c:2330 linker.c:1429
+#: archive.c:2351 archive.c:2408 elflink.c:4956 linker.c:1470
 #, c-format
 msgid "%pB: plugin needed to handle lto object"
 msgstr "%pB: Ð´Ð»Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¾Ð±'Ñ”ÐºÑ‚Ð° lto Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº"
 
-#: archive.c:2559
+#: archive.c:2640
 msgid "Reading archive file mod timestamp"
 msgstr "Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ñ— Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ mod Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°"
 
-#: archive.c:2583
+#: archive.c:2671
 msgid "Writing updated armap timestamp"
 msgstr "Ð—Ð°Ð¿Ð¸Ñ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾Ñ— Ñ‡Ð°Ñ�Ð¾Ð²Ð¾Ñ— Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐºÐ¸ armap"
 
-#: bfd.c:449
+#: bfd.c:793
 msgid "no error"
 msgstr "Ð±ÐµÐ· Ð¿Ð¾Ð¼Ð¸Ð»Ð¾Ðº"
 
-#: bfd.c:450
+#: bfd.c:794
 msgid "system call error"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ"
 
-#: bfd.c:451
+#: bfd.c:795
 msgid "invalid bfd target"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� bfd"
 
-#: bfd.c:452
+#: bfd.c:796
 msgid "file in wrong format"
 msgstr "Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–"
 
-#: bfd.c:453
+#: bfd.c:797
 msgid "archive object file in wrong format"
 msgstr "Ð°Ñ€Ñ…Ñ–Ð²Ð½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ñƒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–"
 
-#: bfd.c:454
+#: bfd.c:798
 msgid "invalid operation"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ñ–Ñ�"
 
-#: bfd.c:455
+#: bfd.c:799
 msgid "memory exhausted"
 msgstr "Ð¿Ð°Ð¼'Ñ�Ñ‚ÑŒ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð¾"
 
-#: bfd.c:456
+#: bfd.c:800
 msgid "no symbols"
 msgstr "Ð½ÐµÐ¼Ð°Ñ” Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"
 
-#: bfd.c:457
+#: bfd.c:801
 msgid "archive has no index; run ranlib to add one"
 msgstr "Ñƒ Ð°Ñ€Ñ…Ñ–Ð²Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ°; Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ñ–Ñ‚ÑŒ ranlib, Ñ‰Ð¾Ð± Ð¹Ð¾Ð³Ð¾ Ð´Ð¾Ð´Ð°Ñ‚Ð¸"
 
-#: bfd.c:458
+#: bfd.c:802
 msgid "no more archived files"
 msgstr "Ð±Ñ–Ð»ÑŒÑˆÐµ Ð°Ñ€Ñ…Ñ–Ð²Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð² Ð½ÐµÐ¼Ð°Ñ”"
 
-#: bfd.c:459
+#: bfd.c:803
 msgid "malformed archive"
 msgstr "Ð°Ñ€Ñ…Ñ–Ð² Ð· Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¼ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼"
 
-#: bfd.c:460
+#: bfd.c:804
 msgid "DSO missing from command line"
 msgstr "Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð¼Ñƒ Ñ€Ñ�Ð´ÐºÑƒ Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ DSO"
 
-#: bfd.c:461
+#: bfd.c:805
 msgid "file format not recognized"
 msgstr "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ Ñ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾"
 
-#: bfd.c:462
+#: bfd.c:806
 msgid "file format is ambiguous"
 msgstr "Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ñ„Ð°Ð¹Ð»Ð° Ñ” Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¸Ð¼"
 
-#: bfd.c:463
+#: bfd.c:807
 msgid "section has no contents"
 msgstr "Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ðµ Ð¼Ð°Ñ” Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ"
 
-#: bfd.c:464
+#: bfd.c:808
 msgid "nonrepresentable section on output"
 msgstr "Ñ€Ð¾Ð·Ð´Ñ–Ð», Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…"
 
-#: bfd.c:465
+#: bfd.c:809
 msgid "symbol needs debug section which does not exist"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”"
 
-#: bfd.c:466
+#: bfd.c:810
 msgid "bad value"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�"
 
-#: bfd.c:467
+#: bfd.c:811
 msgid "file truncated"
 msgstr "Ñ„Ð°Ð¹Ð» Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾"
 
-#: bfd.c:468
+#: bfd.c:812
 msgid "file too big"
 msgstr "Ñ„Ð°Ð¹Ð» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"
 
-#: bfd.c:469
+#: bfd.c:813
+msgid "sorry, cannot handle this file"
+msgstr "Ð²Ð¸Ð±Ð°Ñ‡Ñ‚Ðµ, Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ†ÐµÐ¹ Ñ„Ð°Ð¹Ð»"
+
+#: bfd.c:814
 #, c-format
 msgid "error reading %s: %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� %s: %s"
 
-#: bfd.c:470
+#: bfd.c:815
 msgid "#<invalid error code>"
 msgstr "#<Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸>"
 
-#: bfd.c:1429
+#: bfd.c:2266
 #, c-format
 msgid "BFD %s assertion fail %s:%d"
 msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ BFD %s Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ %s:%d"
 
-#: bfd.c:1442
+#: bfd.c:2279
 #, c-format
-msgid "BFD %s internal error, aborting at %s:%d in %s\n"
-msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d Ñƒ %s\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n"
+msgstr "%s: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d Ñƒ %s\n"
 
-#: bfd.c:1447
+#: bfd.c:2283
 #, c-format
-msgid "BFD %s internal error, aborting at %s:%d\n"
-msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d\n"
+msgid "%s: BFD %s internal error, aborting at %s:%d\n"
+msgstr "%s: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° BFD %s, Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ñ”Ð¼Ð¾ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %s:%d\n"
 
-#: bfd.c:1449
+#: bfd.c:2286
+#, c-format
 msgid "Please report this bug.\n"
 msgstr "Ð‘ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ñ‚Ðµ Ð¿Ñ€Ð¾ Ñ†ÑŽ Ð²Ð°Ð´Ñƒ.\n"
 
-#: bfdwin.c:206
-#, c-format
-msgid "not mapping: data=%lx mapped=%d\n"
-msgstr "Ð½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ñ–=%lx Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d\n"
-
-#: bfdwin.c:209
-#, c-format
-msgid "not mapping: env var not set\n"
-msgstr "Ð½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð¼Ñ–Ð½Ð½Ñƒ Ñ�ÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰Ð° var\n"
-
-#: binary.c:276
+#: binary.c:277
 #, c-format
 msgid "warning: writing section `%pA' at huge (ie negative) file offset"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð° Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (Ñ‚Ð¾Ð±Ñ‚Ð¾ Ð²Ñ–Ð´â€™Ñ”Ð¼Ð½Ð¸Ð¼) Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ Ñƒ Ñ„Ð°Ð¹Ð»Ñ–"
 
-#: cache.c:271
+#: cache.c:290
 #, c-format
-msgid "reopening %pB: %s\n"
-msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ� %pB: %s\n"
+msgid "reopening %pB: %s"
+msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ñ‚Ñ� %pB: %s"
 
 #: coff-alpha.c:450
 #, c-format
 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:914 coff-alpha.c:941 coff-alpha.c:2009 coff-mips.c:948
 msgid "GP relative relocation used when GP not defined"
 msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð²Ñ‚Ñ–Ð¼, GP Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: coff-alpha.c:1443
+#: coff-alpha.c:1177 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13195
+#: elfxx-mips.c:13594 reloc.c:8602 reloc16.c:314
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"
+msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ\n"
+
+#: coff-alpha.c:1183 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13604
+#: reloc.c:8612
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
+
+#: coff-alpha.c:1189 elfxx-mips.c:13613 reloc.c:8621
+#, c-format
+msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n"
+msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %x\n"
+
+#: coff-alpha.c:1515
 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:1992
 #, c-format
-msgid "%pB: %s unsupported"
-msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+msgid "%X%P: %pB(%pA): relocation out of range\n"
+msgstr "%X%P: %pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ\n"
+
+#: coff-alpha.c:2004
+#, c-format
+msgid "%X%P: %pB(%pA): relocation is not supported\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
+
+#: coff-go32.c:167 coffswap.h:812
+#, c-format
+msgid "%pB: warning: %s: line number overflow: 0x%lx > 0xffff"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: 0x%lx > 0xffff"
 
-#: coff-mips.c:640 elf32-mips.c:1742 elf32-score.c:430 elf32-score7.c:330
-#: elf64-mips.c:3451 elfn32-mips.c:3276
+#: coff-mips.c:638 elf32-mips.c:1743 elf32-score.c:433 elf32-score7.c:333
+#: elf64-mips.c:3450 elfn32-mips.c:3277
 msgid "GP relative relocation when _gp not defined"
 msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GP, Ð°Ð»Ðµ _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: coff-rs6000.c:2858
+#: coff-rs6000.c:484 coff64-rs6000.c:377
+#, c-format
+msgid "%pB: unsupported swap_aux_in for storage class %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� swap_aux_in Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñƒ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� %#x"
+
+#: coff-rs6000.c:571 coff64-rs6000.c:497
+#, c-format
+msgid "%pB: unsupported swap_aux_out for storage class %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� swap_aux_out Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñƒ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� %#x"
+
+#: coff-rs6000.c:3127
 #, 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:3251 coff64-rs6000.c:848
+#, c-format
+msgid "Unable to find the stub entry targeting %s"
+msgstr "Ð�Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ�, Ñ‰Ð¾ Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° %s"
+
+#: coff-rs6000.c:3366
+#, c-format
+msgid "%pB: TLS relocation at 0x%<PRIx64> over non-TLS symbol %s (0x%x)\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ 0x%<PRIx64> Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿Ð¾Ð·Ð° TLS %s (0x%x)\n"
+
+#: coff-rs6000.c:3379
+#, c-format
+msgid "%pB: TLS local relocation at 0x%<PRIx64> over imported symbol %s\n"
+msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ 0x%<PRIx64> Ð½Ð° Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s\n"
+
+#: coff-rs6000.c:3785
+#, c-format
+msgid "%pB: relocation (%d) at 0x%<PRIx64> has wrong r_rsize (0x%x)\n"
+msgstr "%pB: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñƒ 0x%<PRIx64> Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ r_rsize (0x%x)\n"
+
+#: coff-rs6000.c:4047 coff64-rs6000.c:2021
 #, 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:781 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:792
 #, 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:810 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:835 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:852 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:973 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:983 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:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: reloc overflow while relaxing"
 msgstr "%pB: %#<PRIx64>: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: coff-sh.c:1454
+#: coff-sh.c:1443
 #, c-format
 msgid "%pB: fatal: generic symbols retrieved before relaxing"
 msgstr "%pB: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð´Ð¾ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: coff-sh.c:2785 cofflink.c:2965
+#: coff-sh.c:2773 cofflink.c:2986
 #, 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-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325
+#: coff-z8k.c:188 coffcode.h:5305
 #, c-format
 msgid "%pB: warning: illegal symbol index %ld in relocs"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %ld Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…"
 
-#: coff-tic80.c:441
+#: coff-x86_64.c:147
+msgid "R_AMD64_IMAGEBASE with __ImageBase undefined"
+msgstr "R_AMD64_IMAGEBASE Ð· Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¼ __ImageBase"
+
+#: coff64-rs6000.c:447 coff64-rs6000.c:554
 #, c-format
-msgid "unsupported relocation type %#x"
-msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x"
+msgid "%pB: C_STAT isn't supported by XCOFF64"
+msgstr "%pB: Ñƒ XCOFF64 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ C_STAT"
 
-#: coff-tic80.c:672 cofflink.c:3127
+#: coff64-rs6000.c:477
 #, c-format
-msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'"
-msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#<PRIx64> Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»"
+msgid "%pB: wrong auxtype %#x for storage class %#x"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ %#x Ð´Ð»Ñ� ÐºÐ»Ð°Ñ�Ñƒ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� %#x"
+
+#: coff64-rs6000.c:1598
+#, c-format
+msgid "%pB: relocation (%d) at (0x%<PRIx64>) has wrong r_rsize (0x%x)\n"
+msgstr "%pB: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñƒ (0x%<PRIx64>) Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ r_rsize (0x%x)\n"
 
-#: coffcode.h:954
+#: coffcode.h:951
 #, 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:976
+#, c-format
+msgid "%pB: warning: no symbol for section '%s' found"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»"
+
+#: coffcode.h:1148
 #, c-format
 msgid "%pB: error: unexpected symbol '%s' in COMDAT section"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– COMDAT"
 
-#: coffcode.h:1001
+#: coffcode.h:1159
 #, c-format
 msgid "%pB: warning: COMDAT symbol '%s' does not match section name '%s'"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¸Ð¼Ð²Ð¾Ð» COMDAT Â«%sÂ» Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð½Ð°Ð·Ð²Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»"
 
-#: coffcode.h:1011
-#, c-format
-msgid "%pB: warning: no symbol for section '%s' found"
-msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»"
-
 #. 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:1267
 #, c-format
 msgid "%pB: warning: ignoring section flag %s in section %s"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s"
 
-#: coffcode.h:1306
+#: coffcode.h:1337
 #, c-format
 msgid "%pB (%s): section flag %s (%#lx) ignored"
 msgstr "%pB (%s): Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s (%#lx) Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾"
 
-#: coffcode.h:1917
+#: coffcode.h:1945
+#, c-format
+msgid "%pB: overflow reloc count too small"
+msgstr "%pB: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�"
+
+#: coffcode.h:1954 coffcode.h:2019
 #, c-format
 msgid "%pB: warning: claims to have 0xffff relocs, without overflow"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð¼Ð¾Ð³Ð° Ñ‰Ð¾Ð´Ð¾ 0xffff Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð±ÐµÐ· Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ�"
 
-#: coffcode.h:2315
+#: coffcode.h:2402
 #, c-format
 msgid "unrecognized TI COFF target id '0x%x'"
 msgstr "Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� TI COFF, Â«0x%xÂ»"
 
-#: coffcode.h:2599
+#: coffcode.h:2681
 #, c-format
 msgid "%pB: reloc against a non-existent symbol index: %ld"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð½ÐµÑ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¸Ð¼ Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: %ld"
 
-#: coffcode.h:2910
-#, c-format
-msgid "%pB: page size is too large (0x%x)"
-msgstr "%pB: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ (0x%x)"
-
-#: coffcode.h:3070
+#: coffcode.h:3153
 #, c-format
 msgid "%pB: too many sections (%d)"
 msgstr "%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² (%d)"
 
-#: coffcode.h:3489
+#: coffcode.h:3681
 #, c-format
 msgid "%pB: section %pA: string table overflow at offset %ld"
 msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² Ð·Ð° Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ %ld"
 
-#: coffcode.h:3589
+#: coffcode.h:3782
 #, c-format
 msgid "%pB:%s section %s: alignment 2**%u not representable"
 msgstr "%pB:%s Ñ€Ð¾Ð·Ð´Ñ–Ð» %s: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� 2**%u Ð½Ðµ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð»Ñ� Ð¿Ñ€ÐµÐ´Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ�"
 
-#: coffcode.h:4276
-#, c-format
-msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
-msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² (%#lx) Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð¼Ñ–Ñ�Ñ†Ðµ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%#lx)"
-
-#: coffcode.h:4291
+#: coffcode.h:4523
 #, c-format
 msgid "%pB: warning: line number table read failed"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð· Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²"
 
-#: coffcode.h:4325 coffcode.h:4339
+#: coffcode.h:4569 coffcode.h:4583
 #, 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:4597
 #, c-format
 msgid "%pB: warning: illegal symbol in line number entry %d"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ° %d"
 
-#: coffcode.h:4366
+#: coffcode.h:4610
 #, c-format
 msgid "%pB: warning: duplicate line number information for `%s'"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² Ð´Ð»Ñ� Â«%sÂ»"
 
-#: coffcode.h:4774
+#: coffcode.h:5034
 #, c-format
 msgid "%pB: unrecognized storage class %d for %s symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ÐºÐ»Ð°Ñ� Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %d Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s Â«%sÂ»"
 
-#: coffcode.h:4904
+#: coffcode.h:5174
 #, c-format
 msgid "warning: %pB: local symbol `%s' has no section"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: coffcode.h:5050
+#: coffcode.h:5345
 #, c-format
 msgid "%pB: illegal relocation type %d at address %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64>"
 
-#: coffgen.c:178 elf.c:1216
+#: coffgen.c:257 elf.c:1060
 #, c-format
-msgid "%pB: unable to initialize compress status for section %s"
-msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ�Ñ‚Ð¸Ñ�ÐºÐ°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
+msgid "%pB: unable to compress section %s"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð¸Ñ�Ð½ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s"
 
-#: coffgen.c:202 elf.c:1227
+#: coffgen.c:267 elf.c:1070
 #, c-format
-msgid "%pB: unable to initialize decompress status for section %s"
-msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
+msgid "%pB: unable to decompress 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:1795
 #, 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:2179 coffgen.c:2318 cofflink.c:2051 ecoff.c:1444 elf.c:2313
+#: elf.c:2345 pef.c:214 syms.c:789 xcofflink.c:384 xcofflink.c:5577
 msgid "<corrupt>"
 msgstr "<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾>"
 
-#: coffgen.c:2114
+#: coffgen.c:2208
 #, c-format
 msgid "<corrupt info> %s"
 msgstr "<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð´Ð°Ð½Ñ–> %s"
 
-#: coffgen.c:2693 elflink.c:14322 linker.c:2959
-msgid "%F%P: already_linked_table: %E\n"
-msgstr "%F%P: already_linked_table: %E\n"
+#: coffgen.c:2818 elflink.c:15490 linker.c:3061
+msgid "%P: already_linked_table: %E\n"
+msgstr "%P: already_linked_table: %E\n"
 
-#: coffgen.c:3034 elflink.c:13324
+#: coffgen.c:3175 elflink.c:14430
 #, c-format
 msgid "removing unused section '%pA' in file '%pB'"
 msgstr "Ð²Ð¸Ð»ÑƒÑ‡Ð°Ñ”Ð¼Ð¾ Ð½ÐµÐ²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Â«%pBÂ»"
 
-#: coffgen.c:3111 elflink.c:13542
+#: coffgen.c:3252 elflink.c:14661
 msgid "warning: gc-sections option ignored"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ gc-sections Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾"
 
-#: cofflink.c:352
+#: cofflink.c:399
 #, 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:504 elf64-ia64-vms.c:5200 elflink.c:5587
 #, 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:2379
 #, c-format
 msgid "%pB: relocs in section `%pA', but it has no contents"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð·Ð¼Ñ–Ñ�Ñ‚Ñƒ"
 
-#: cofflink.c:2436 elflink.c:10810
+#: cofflink.c:2442 elflink.c:11880
 #, 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:2637
+#, c-format
+msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)"
+msgstr "%pB: Ð¿Ñ€Ð¸Ð±Ð¸Ñ€Ð°Ñ”Ð¼Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð²Ñ–Ð´Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» (Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� 0x%<PRIx64>)"
+
+#: cofflink.c:2755
 #, c-format
 msgid "%pB: %pA: reloc overflow: %#x > 0xffff"
 msgstr "%pB: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %#x > 0xffff"
 
-#: cofflink.c:2742
+#: cofflink.c:2763
 #, c-format
 msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pA: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð½Ð¾Ð¼ÐµÑ€Ð° Ñ€Ñ�Ð´ÐºÐ°: %#x > 0xffff"
 
-#: coffswap.h:789
+#: cofflink.c:3157
 #, 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:826
 #, c-format
 msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff"
 msgstr "%pB: %s: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: 0x%lx > 0xffff"
 
-#: compress.c:260
+#: compress.c:732 compress.c:749 libbfd.c:1322
 #, c-format
 msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB(%pA) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%#<PRIx64> Ð±Ð°Ð¹Ñ‚Ñ–Ð²)"
 
-#: cpu-arm.c:298 cpu-arm.c:310
-#, 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:438
 #, c-format
 msgid "warning: unable to update contents of %s section in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñƒ %pB"
 
-#: dwarf2.c:544
+#: dwarf2.c:702
 #, c-format
 msgid "DWARF error: can't find %s section."
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s."
 
-#: dwarf2.c:579
+#: dwarf2.c:710
+#, c-format
+msgid "DWARF error: section %s has no contents"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ð½Ðµ Ð¼Ð°Ñ” Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ"
+
+#. PR 26946
+#: dwarf2.c:719
+#, c-format
+msgid "DWARF error: section %s is too big"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"
+
+#: dwarf2.c:754
 #, 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:1501
 msgid "DWARF error: info pointer extends beyond end of attributes"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº Ð½Ð° Ð´Ð°Ð½Ñ– Ð²Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° ÐºÑ–Ð½ÐµÑ†ÑŒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð²"
 
-#: dwarf2.c:1275
+#: dwarf2.c:1693
 #, c-format
 msgid "DWARF error: invalid or unhandled FORM value: %#x"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð°Ð±Ð¾ Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� FORM: %#x"
 
-#: dwarf2.c:1581
+#: dwarf2.c:2050
 msgid "DWARF error: mangled line number section (bad file number)"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð² (Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ„Ð°Ð¹Ð»Ð°)"
 
-#: dwarf2.c:1926
+#: dwarf2.c:2614
 msgid "DWARF error: zero format count"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ"
 
-#: dwarf2.c:1936
+#: dwarf2.c:2624
 #, c-format
 msgid "DWARF error: data count (%<PRIx64>) larger than buffer size"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° Ð´Ð°Ð½Ð¸Ñ… (%<PRIx64>) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð±ÑƒÑ„ÐµÑ€Ð°"
 
-#: dwarf2.c:1977
+#: dwarf2.c:2663
 #, c-format
 msgid "DWARF error: unknown format content type %<PRIu64>"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð²Ð¼Ñ–Ñ�Ñ‚Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ %<PRIu64>"
 
-#: dwarf2.c:2057
+#: dwarf2.c:2736
 #, c-format
 msgid "DWARF error: line info section is too small (%<PRId64>)"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ (%<PRId64>)"
 
-#: dwarf2.c:2087
+#: dwarf2.c:2763
 #, 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:2776
 #, c-format
 msgid "DWARF error: unhandled .debug_line version %d"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð° Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð²ÐµÑ€Ñ�Ñ–Ñ� .debug_line, %d"
 
-#: dwarf2.c:2110
+#: dwarf2.c:2785
 msgid "DWARF error: ran out of room reading prologue"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ�Ñ‚ÑƒÐ¿Ñƒ"
 
-#: dwarf2.c:2128
+#: dwarf2.c:2801
 #, c-format
 msgid "DWARF error: line info unsupported segment selector size %u"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð°Ñ€Ñ–Ð°Ð½Ñ‚Ð° Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ–Ð² %u Ñƒ Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ñ€Ñ�Ð´ÐºÐ°"
 
-#: dwarf2.c:2155
+#: dwarf2.c:2823
 msgid "DWARF error: invalid maximum operations per instruction"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð° ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð´Ñ–Ð¹ Ð½Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ"
 
-#: dwarf2.c:2174
+#: dwarf2.c:2835
 msgid "DWARF error: ran out of room reading opcodes"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� ÐºÐ¾Ð´Ñ–Ð² Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ð¹"
 
-#: dwarf2.c:2347
+#: dwarf2.c:3012
 msgid "DWARF error: mangled line number section"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² Ñ€Ñ�Ð´ÐºÑ–Ð²"
 
-#: dwarf2.c:2852 dwarf2.c:2913
+#: dwarf2.c:3483
+msgid "DWARF error: abstract instance recursion detected"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ñ€ÐµÐºÑƒÑ€Ñ�Ñ–ÑŽ Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¼ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€Ð¾Ð¼"
+
+#: dwarf2.c:3517 dwarf2.c:3607
 msgid "DWARF error: invalid abstract instance DIE ref"
 msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIE"
 
-#: dwarf2.c:2889
+#: dwarf2.c:3533
 #, 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:3585
+#, c-format
+msgid "DWARF error: unable to locate abstract instance DIE ref %<PRIu64>"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð°Ð±Ñ�Ñ‚Ñ€Ð°ÐºÑ‚Ð½Ð¸Ð¹ ÐµÐºÐ·ÐµÐ¼Ð¿Ð»Ñ�Ñ€ DIE %<PRIu64>"
+
+#: dwarf2.c:3622 dwarf2.c:3938 dwarf2.c:4511
 #, 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:4211
+#, c-format
+msgid "DWARF error: could not find variable specification at offset 0x%lx"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–ÑŽ Ð·Ð¼Ñ–Ð½Ð½Ð¸Ñ… Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ 0x%lx"
+
+#: dwarf2.c:4357 dwarf2.c:4611
+msgid "DWARF error: DW_AT_comp_dir attribute encountered with a non-string form"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ DW_AT_comp_dir Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾ÑŽ Ñ„Ð¾Ñ€Ð¼Ð¾ÑŽ"
 
-#: dwarf2.c:3376
+#: dwarf2.c:4428
 #, 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:4475
 #, 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
-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:1005
 #, c-format
 msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: isymMax (%ld) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” ifdMax (%ld)"
 
-#: ecoff.c:1268
+#: ecoff.c:1301
 #, c-format
 msgid "unknown basic type %d"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ %d"
 
-#: ecoff.c:1525
+#: ecoff.c:1559
 #, c-format
 msgid ""
 "\n"
@@ -686,7 +769,7 @@ msgstr ""
 "\n"
 "      Ð¡Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %ld"
 
-#: ecoff.c:1532 ecoff.c:1535
+#: ecoff.c:1566 ecoff.c:1569
 #, c-format
 msgid ""
 "\n"
@@ -695,7 +778,7 @@ msgstr ""
 "\n"
 "      ÐŸÐµÑ€ÑˆÐ¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %ld"
 
-#: ecoff.c:1548
+#: ecoff.c:1584
 #, c-format
 msgid ""
 "\n"
@@ -704,7 +787,7 @@ msgstr ""
 "\n"
 "      Ð¡Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %-7ld   Ð¢Ð¸Ð¿:  %s"
 
-#: ecoff.c:1555
+#: ecoff.c:1592
 #, c-format
 msgid ""
 "\n"
@@ -713,7 +796,7 @@ msgstr ""
 "\n"
 "      Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð»: %ld"
 
-#: ecoff.c:1563
+#: ecoff.c:1600
 #, c-format
 msgid ""
 "\n"
@@ -722,7 +805,7 @@ msgstr ""
 "\n"
 "      struct; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %ld"
 
-#: ecoff.c:1568
+#: ecoff.c:1605
 #, c-format
 msgid ""
 "\n"
@@ -731,7 +814,7 @@ msgstr ""
 "\n"
 "      union; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %ld"
 
-#: ecoff.c:1573
+#: ecoff.c:1610
 #, c-format
 msgid ""
 "\n"
@@ -740,7 +823,7 @@ msgstr ""
 "\n"
 "      enum; Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼: %ld"
 
-#: ecoff.c:1579
+#: ecoff.c:1618
 #, c-format
 msgid ""
 "\n"
@@ -749,328 +832,358 @@ msgstr ""
 "\n"
 "      Ð¢Ð¸Ð¿: %s"
 
-#: elf-attrs.c:446
+#: elf-attrs.c:424 elf-attrs.c:454 elf-attrs.c:596
+msgid "error adding attribute"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚"
+
+#: elf-attrs.c:513
+#, c-format
+msgid "%pB: error: attribute section length too small: %ld"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ: %ld"
+
+#: elf-attrs.c:623
 #, c-format
 msgid "%pB: error: attribute section '%pA' too big: %#llx"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Â«%pAÂ» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ: %#llx"
 
-#: elf-attrs.c:487
+#: elf-attrs.c:642
 #, c-format
-msgid "%pB: error: attribute section length too small: %<PRId64>"
-msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ: %<PRId64>"
+msgid "%pB: error: unknown attributes version '%c'(%d) - expecting 'A'\n"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Â«%cÂ»(%d) - Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Â«AÂ»\n"
 
-#: elf-attrs.c:615
+#: elf-attrs.c:688
 #, 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:698
 #, 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
+#: elf-eh-frame.c:952
 #, c-format
 msgid "discarding zero address range FDE in %pB(%pA).\n"
 msgstr "Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ”Ð¼Ð¾ FDE Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ Ð°Ð´Ñ€ÐµÑ� Ñƒ %pB(%pA).\n"
 
-#: elf-eh-frame.c:1049
+#: elf-eh-frame.c:1057
 #, 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
+#: elf-eh-frame.c:1548
 #, 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
+#: elf-eh-frame.c:1555
 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:1878
 #, c-format
 msgid "%pB: %pA not in order"
 msgstr "%pB: %pA Ñ” Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¼"
 
-#: elf-eh-frame.c:1882
+#: elf-eh-frame.c:1892
 #, c-format
 msgid "%pB: %pA invalid input section size"
 msgstr "%pB: %pA Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf-eh-frame.c:1890
+#: elf-eh-frame.c:1900
 #, c-format
 msgid "%pB: %pA points past end of text section"
 msgstr "%pB: %pA Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ñ‚ÐµÐºÑ�Ñ‚Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: elf-eh-frame.c:2139
+#: elf-eh-frame.c:2153
 msgid "DW_EH_PE_datarel unspecified for this architecture"
 msgstr "DW_EH_PE_datarel Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ†Ñ–Ñ”Ñ— Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸"
 
-#: elf-eh-frame.c:2309
+#: elf-eh-frame.c:2323
 #, 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:2346
 #, c-format
 msgid "invalid contents in %pA section"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pA"
 
-#: elf-eh-frame.c:2488
+#: elf-eh-frame.c:2500
 msgid ".eh_frame_hdr entry overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ñƒ .eh_frame_hdr"
 
-#: elf-eh-frame.c:2490
+#: elf-eh-frame.c:2502
 msgid ".eh_frame_hdr refers to overlapping FDEs"
 msgstr ".eh_frame_hdr Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° FDE, Ñ�ÐºÑ– Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ð²Ð°ÑŽÑ‚ÑŒÑ�Ñ�"
 
-#: elf-ifunc.c:149
+#. xgettext:c-format.
+#: elf-ifunc.c:144 elfnn-loongarch.c:1713
 #, 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"
+msgid "%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: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» 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:2146 elf32-bfin.c:3132 elf32-cr16.c:1429
+#: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563
+#: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523
+#: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624
+#: elf32-m32r.c:2839 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1983
+#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6099
+#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5084
+#: elf32-tilepro.c:3371 elf32-v850.c:2297 elf32-visium.c:680
+#: elf32-xstormy16.c:931 elf64-bpf.c:339 elf64-mmix.c:1537 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:2150 elf32-bfin.c:3136 elf32-cr16.c:1433
+#: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598
+#: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695
+#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2843 elf32-m68hc1x.c:1275
+#: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681 elf32-moxie.c:292
+#: elf32-msp430.c:1510 elf32-nds32.c:6103 elf32-or1k.c:1899 elf32-score.c:2728
+#: elf32-score7.c:2539 elf32-spu.c:5088 elf32-tilepro.c:3375 elf32-v850.c:2301
+#: elf32-visium.c:684 elf32-xstormy16.c:935 elf64-mmix.c:1541
+#: elfxx-mips.c:10727 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:1437 elf32-crx.c:930 elf32-d10v.c:518
+#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2847 elf32-m68hc1x.c:1279
+#: elf32-microblaze.c:1685 elf32-nds32.c:6107 elf32-score.c:2732
+#: elf32-score7.c:2543 elf32-spu.c:5092
 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:2167 elf32-bfin.c:3144 elf32-cr16.c:1441
+#: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578
+#: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535
+#: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636
+#: elf32-m32r.c:2851 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1995
+#: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518 elf32-mt.c:410
+#: elf32-nds32.c:6111 elf32-or1k.c:1907 elf32-score.c:2741 elf32-score7.c:2547
+#: elf32-spu.c:5096 elf32-tilepro.c:3383 elf32-v850.c:2321 elf32-visium.c:692
+#: elf32-xstormy16.c:943 elf64-bpf.c:352 elf64-mmix.c:1549 elfxx-tilegx.c:3756
 msgid "internal error: unknown error"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°"
 
-#: elf-m10300.c:1029
+#: elf-m10300.c:1030
 #, c-format
 msgid "%pB: unsupported transition from %s to %s"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð· %s Ð´Ð¾ %s"
 
-#: elf-m10300.c:1198
+#: elf-m10300.c:1197
 #, 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:2093 elf32-arm.c:13476 elf32-i386.c:3545 elf32-m32r.c:2333
+#: elf32-m68k.c:3931 elf32-s390.c:3074 elf32-sh.c:3674 elf32-tilepro.c:3274
+#: elf32-xtensa.c:3022 elf64-s390.c:3391 elf64-x86-64.c:5025 elfxx-sparc.c:2924
+#: elfxx-sparc.c:3820 elfxx-tilegx.c:3667 elfnn-aarch64.c:5743
+#: elfnn-aarch64.c:7361 elfnn-kvx.c:2773
 #, 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:2155
 msgid "error: inappropriate relocation type for shared library (did you forget -fpic?)"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� (Ð·Ð°Ð±ÑƒÐ»Ð¸ -fpic?)"
 
-#: elf-m10300.c:2160
+#: elf-m10300.c:2159
 #, 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:2162
 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
-msgid "%P%F: --relax and -r may not be used together\n"
-msgstr "%P%F: --relax Ñ– -r Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾\n"
+#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5627 elf64-ia64-vms.c:365
+#: elfxx-sparc.c:2691 reloc.c:8376 reloc16.c:155 elfnn-ia64.c:365
+msgid "%P: --relax and -r may not be used together\n"
+msgstr "%P: --relax Ñ– -r Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾\n"
 
-#: elf-properties.c:65
+#: elf-properties.c:121
 #, c-format
 msgid "%pB: out of memory in _bfd_elf_get_property"
 msgstr "%pB: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð»Ñ�Ð½ÐºÐ¸ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ñƒ _bfd_elf_get_property"
 
-#: elf-properties.c:91
+#: elf-properties.c:150
 #, c-format
 msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ GNU_PROPERTY_TYPE (%ld), Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %#lx"
 
-#: elf-properties.c:112
+#: elf-properties.c:171
 #, 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
+#: elf-properties.c:210
 #, c-format
 msgid "warning: %pB: corrupt stack size: 0x%x"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚ÐµÐºÐ°: 0x%x"
 
-#: elf-properties.c:169
+#: elf-properties.c:228
 #, c-format
 msgid "warning: %pB: corrupt no copy on protected size: 0x%x"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Â«Ð½Ðµ ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½ÐµÂ», Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 0x%x"
 
-#: elf-properties.c:186
+#: elf-properties.c:243
+#, c-format
+msgid "warning: %pB: corrupt memory sealing size: 0x%x"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð°Ð¿ÐµÑ‡Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ–: 0x%x"
+
+#: elf-properties.c:262
+#, c-format
+msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– (0x%x): 0x%x>"
+
+#: elf-properties.c:287
 #, 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
+#: elf-properties.c:467
 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
+#: elf-properties.c:473
 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:482 elf-properties.c:560
 msgid "Removed property %W to merge %pB and %pB\n"
 msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB Ð· %pB\n"
 
-#: elf-properties.c:320
+#: elf-properties.c:486
 msgid "Removed property %W to merge %pB and %pB (not found)\n"
 msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB Ð· %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)\n"
 
-#: elf-properties.c:339
+#: elf-properties.c:503
 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:512
 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:554
 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n"
 msgstr "Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ %W Ð´Ð»Ñ� Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� %pB (Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾) Ð· %pB (0x%v)\n"
 
+#: elf-properties.c:693 elfxx-aarch64.c:765
+msgid "%P: failed to create %s\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ %s\n"
+
 #. Merge .note.gnu.property sections.
-#: elf-properties.c:552 elf-properties.c:554
+#: elf-properties.c:798 elf-properties.c:800
 msgid "\n"
 msgstr "\n"
 
-#: elf-properties.c:553
+#: elf-properties.c:799
 msgid "Merging program properties\n"
 msgstr "Ð’Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ�\n"
 
+#: elf-sframe.c:201
+#, c-format
+msgid "error in %pB(%pA); unexpected SFrame section type"
+msgstr " Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ %pB(%pA); Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ SFrame"
+
+#: elf-sframe.c:252
+#, c-format
+msgid "error in %pB(%pA); no .sframe will be created"
+msgstr " Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ %pB(%pA); Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ .sframe Ð½Ðµ Ð±ÑƒÐ´Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾"
+
+#: elf-sframe.c:426
+msgid "input SFrame sections with different abi prevent .sframe generation"
+msgstr "Ð²Ñ…Ñ–Ð´Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ SFrame Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼ abi Ð·Ð°Ð²Ð°Ð¶Ð°ÑŽÑ‚ÑŒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .sframe"
+
+#: elf-sframe.c:437
+msgid "input SFrame sections with different format versions prevent .sframe generation"
+msgstr "Ð²Ñ…Ñ–Ð´Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ SFrame Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ð¼Ð¸ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ–Ð² Ð·Ð°Ð²Ð°Ð¶Ð°ÑŽÑ‚ÑŒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .sframe"
+
+#: elf-sframe.c:450
+msgid "SFrame sections with unexpected data encoding prevent .sframe generation"
+msgstr "Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ SFrame Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¼ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð´Ð°Ð½Ð¸Ñ… Ð·Ð°Ð²Ð°Ð¶Ð°ÑŽÑ‚ÑŒ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½ÑŽ .sframe"
+
+#: elf.c:299
+#, c-format
+msgid "%pB: string table [%u] is corrupt"
+msgstr "%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñ€Ñ�Ð´ÐºÑ–Ð² [%u] Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾"
+
 #. PR 17512: file: f057ec89.
-#: elf.c:345
+#: elf.c:328
 #, c-format
 msgid "%pB: attempt to load strings from a non-string section (number %d)"
 msgstr "%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ñ€Ñ�Ð´ÐºÑ–Ð² Ñ–Ð· Ð½ÐµÑ€Ñ�Ð´ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (Ð½Ð¾Ð¼ÐµÑ€ %d)"
 
-#: elf.c:360
+#: elf.c:353
 #, 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:512 elf32-arm.c:17779 elfnn-aarch64.c:8361 elfnn-loongarch.c:6449
+#: elfnn-riscv.c:3885
 #, 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
-#, c-format
-msgid "%pB: invalid size field in group section header: %#<PRIx64>"
-msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– Ð´Ð°Ð½Ñ– Ð¿Ð¾Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿: %#<PRIx64>"
-
-#: elf.c:728
+#: elf.c:526
 #, c-format
-msgid "%pB: invalid entry in SHT_GROUP section [%u]"
-msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– SHT_GROUP [%u]"
+msgid "%pB symbol number %lu uses unsupported binding of %u"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» %pB Ñ–Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %lu Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ñƒ Ð¿Ñ€Ð¸Ð²'Ñ�Ð·ÐºÑƒ %u"
 
-#: elf.c:747
+#: elf.c:538
 #, c-format
-msgid "%pB: no valid group sections found"
-msgstr "%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ð³Ñ€ÑƒÐ¿Ð¸"
+msgid "%pB symbol number %lu uses unsupported type of %u"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» %pB Ñ–Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %lu Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ %u"
 
-#. See PR 21957 for a reproducer.
-#: elf.c:776
+#: elf.c:641
 #, c-format
-msgid "%pB: group section '%pA' has no contents"
-msgstr "%pB: Ð³Ñ€ÑƒÐ¿Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð¸Ñ…"
+msgid "%pB: could not read contents of group [%u]"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²Ð¼Ñ–Ñ�Ñ‚ Ð³Ñ€ÑƒÐ¿Ð¸ [%u]"
 
-#: elf.c:837
+#: elf.c:672
 #, c-format
-msgid "%pB: no group info for section '%pA'"
-msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð³Ñ€ÑƒÐ¿Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»"
+msgid "%pB: invalid entry (%#x) in group [%u]"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� (%#x) Ñƒ Ð³Ñ€ÑƒÐ¿Ñ– [%u]"
 
-#: elf.c:868 elf.c:3886 elflink.c:11403
+#: elf.c:691
 #, c-format
-msgid "%pB: warning: sh_link not set for section `%pA'"
-msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ sh_link Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»"
+msgid "%pB: unexpected type (%#x) section `%s' in group [%u]"
+msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ (%#x) Â«%sÂ» Ñƒ Ð³Ñ€ÑƒÐ¿Ñ– [%u]"
 
-#: elf.c:888
+#: elf.c:767
 #, c-format
 msgid "%pB: sh_link [%d] in section `%pA' is incorrect"
 msgstr "%pB: sh_link [%d] Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼"
 
-#: elf.c:901
-#, 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:796
 #, c-format
 msgid "%pB: section group entry number %u is corrupt"
 msgstr "%pB: Ð·Ð°Ð¿Ð¸Ñ� Ð³Ñ€ÑƒÐ¿Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ñ–Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %u Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾"
 
-#: elf.c:945
+#: elf.c:1078
 #, c-format
-msgid "%pB: unknown type [%#x] section `%s' in group [%pA]"
-msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿, [%#x], Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ» Ñƒ Ð³Ñ€ÑƒÐ¿Ñ– [%pA]"
+msgid "%pB: section %s is compressed with zstd, but BFD is not built with zstd support"
+msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¾ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ zstd, Ð°Ð±Ð¾ BFD Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð±ÐµÐ· Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ zstd"
 
-#: elf.c:1408
+#: elf.c:1264
 #, c-format
 msgid "%pB: invalid sh_link field (%d) in section number %d"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ð¿Ð¾Ð»Ðµ sh_link (%d) Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð· Ð½Ð¾Ð¼ÐµÑ€Ð¾Ð¼ %d"
 
-#: elf.c:1424
+#: elf.c:1280
 #, c-format
 msgid "%pB: failed to find link section for section %d"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð·Ð²â€™Ñ�Ð·ÐºÑ–Ð² Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d"
 
-#: elf.c:1451
+#: elf.c:1307
 #, c-format
 msgid "%pB: failed to find info section for section %d"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ— Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %d"
 
-#: elf.c:1623
+#: elf.c:1484
 #, c-format
 msgid ""
 "\n"
@@ -1079,7 +1192,7 @@ msgstr ""
 "\n"
 "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸:\n"
 
-#: elf.c:1665
+#: elf.c:1526
 #, c-format
 msgid ""
 "\n"
@@ -1088,7 +1201,7 @@ msgstr ""
 "\n"
 "Ð”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»:\n"
 
-#: elf.c:1806
+#: elf.c:1665
 #, c-format
 msgid ""
 "\n"
@@ -1097,7 +1210,7 @@ msgstr ""
 "\n"
 "Ð’Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²ÐµÑ€Ñ�Ñ–Ð¹:\n"
 
-#: elf.c:1831
+#: elf.c:1690
 #, c-format
 msgid ""
 "\n"
@@ -1106,925 +1219,1128 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ—:\n"
 
-#: elf.c:1836
+#: elf.c:1695
 #, c-format
 msgid "  required from %s:\n"
 msgstr "  Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ñ– %s:\n"
 
-#: elf.c:2037
+#: elf.c:1944
+#, c-format
+msgid "%pB: DT_STRTAB table is corrupt"
+msgstr "%pB: Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ DT_STRTAB Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾"
+
+#: elf.c:2451
 #, c-format
 msgid "%pB: warning: loop in section dependencies detected"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ†Ð¸ÐºÐ»ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ�Ñ‚ÐµÐ¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: elf.c:2145
+#: elf.c:2559
 #, c-format
 msgid "%pB: warning: multiple symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %u"
 
-#: elf.c:2229
+#: elf.c:2644
 #, c-format
 msgid "%pB: warning: multiple dynamic symbol tables detected - ignoring the table in section %u"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %u"
 
-#: elf.c:2342
+#: elf.c:2763
 #, 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:2820
+#, c-format
+msgid "%pB: warning: secondary relocation section '%s' for section %pA found - ignoring"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾"
+
+#: elf.c:2905 elf.c:2919 elf.c:2930 elf.c:2943
 #, c-format
 msgid "%pB: unknown type [%#x] section `%s'"
 msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ [%#x], Â«%sÂ»"
 
-#: elf.c:3248
+#: elf.c:3614
 #, c-format
 msgid "%pB: error: alignment power %d of section `%pA' is too big"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ñ‚ÐµÐ¿Ñ–Ð½ÑŒ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %d Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾ÑŽ"
 
-#: elf.c:3278
+#: elf.c:3649
 #, c-format
 msgid "warning: section `%pA' type changed to PROGBITS"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð½Ð° PROGBITS"
 
-#: elf.c:3754
+#: elf.c:3981
+#, c-format
+msgid "%pB: corrupted group section: `%pA'"
+msgstr "%pB: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð³Ñ€ÑƒÐ¿: Â«%pAÂ»"
+
+#: elf.c:4156
 #, c-format
 msgid "%pB: too many sections: %u"
 msgstr "%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² %u"
 
-#: elf.c:3839
+#: elf.c:4242
 #, 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:4260
 #, 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:4860
 #, 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:5043
+msgid "%P: failed to size relative relocations\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð¼Ñ–Ñ€Ñ�Ñ‚Ð¸ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
 
-#: elf.c:5013
+#: elf.c:5470
 #, c-format
 msgid "%pB: TLS sections are not adjacent:"
 msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ TLS Ð½Ðµ Ñ” Ñ�ÑƒÑ�Ñ–Ð´Ð½Ñ–Ð¼Ð¸:"
 
-#: elf.c:5020
+#: elf.c:5477
 #, c-format
 msgid "\t    TLS: %pA"
 msgstr "\t    TLS: %pA"
 
-#: elf.c:5024
+#: elf.c:5481
 #, c-format
 msgid "\tnon-TLS: %pA"
 msgstr "\tÐ½Ðµ-TLS: %pA"
 
-#: elf.c:5538
+#: elf.c:6103
 #, 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:6129
 #, c-format
 msgid "%pB: not enough room for program headers, try linking with -N"
 msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¼Ñ–Ñ�Ñ†Ñ� Ð´Ð»Ñ� Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð² Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸, Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· -N"
 
-#: elf.c:5654
+#: elf.c:6256
 #, 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:6397
+#, c-format
+msgid "%pB: error: PHDR segment not covered by LOAD segment"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD"
+
+#: elf.c:6437
 #, c-format
-msgid "%pB: section `%pA' can't be allocated in segment %d"
-msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾ Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– %d"
+msgid "%pB: section `%pA' can't be allocated in segment %u"
+msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾ Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– %u"
 
-#: elf.c:5839
+#: elf.c:6575
 #, c-format
 msgid "%pB: warning: allocated section `%s' not in segment"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°"
 
-#: elf.c:6072
+#: elf.c:6710
+#, c-format
+msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¶Ð¾Ð´Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ñƒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ñ– PT_GNU_RELRO"
+
+#: elf.c:6741
 #, 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
+#: elf.c:6894
 #, c-format
-msgid "%pB: error: PHDR segment not covered by LOAD segment"
-msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ PHDR Ð½Ðµ Ð¿Ð¾ÐºÑ€Ð¸Ð²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ LOAD"
+msgid "error: %pB has a TLS segment with execute permission"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ TLS Ð· Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�"
+
+#: elf.c:6900
+#, c-format
+msgid "warning: %pB has a TLS segment with execute permission"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ TLS Ð· Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ Ð½Ð° Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�"
+
+#: elf.c:6915
+#, c-format
+msgid "error: %pB has a LOAD segment with RWX permissions"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ LOAD Ñ–Ð· Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ RWX"
 
-#: elf.c:6606
+#: elf.c:6921
+#, c-format
+msgid "warning: %pB has a LOAD segment with RWX permissions"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ LOAD Ñ–Ð· Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ RWX"
+
+#: elf.c:7316
 #, c-format
 msgid "%pB: symbol `%s' required but not present"
 msgstr "%pB: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ», Ð°Ð»Ðµ Ð¹Ð¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”"
 
-#: elf.c:6949
+#: elf.c:7693
 #, c-format
 msgid "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this intentional?"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚ Ð·Ð° vaddr=%#<PRIx64>, Ñ‚Ð°Ðº Ñ– Ñ‚Ñ€ÐµÐ±Ð°?"
 
-#: elf.c:7574
+#: elf.c:8366
 #, c-format
 msgid "%pB: warning: segment alignment of %#<PRIx64> is too large"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° %#<PRIx64> Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"
 
-#: elf.c:8073
+#: elf.c:8848
+#, c-format
+msgid "%pB: Unable to handle section index %x in ELF symbol.  Using ABS instead."
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %x Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ– ELF. Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ Ð½ÑŒÐ¾Ð³Ð¾ ABS."
+
+#: elf.c:8878
 #, c-format
 msgid "unable to find equivalent output section for symbol '%s' from section '%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ñ–Ð²Ð½Ð¾Ñ†Ñ–Ð½Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%sÂ»"
 
-#: elf.c:8421
+#: elf.c:9311
 #, c-format
 msgid "%pB: .gnu.version_r invalid entry"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� .gnu.version_r"
 
-#: elf.c:8548
+#: elf.c:9489
 #, 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:9992
+#, c-format
+msgid "%pB:%pA: error: attempting to write over the end of the section"
+msgstr "%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
+
+#: elf.c:10004
+#, c-format
+msgid "%pB:%pA: error: attempting to write section into an empty buffer"
+msgstr "%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð¾ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ð±ÑƒÑ„ÐµÑ€Ð°"
+
+#: elf.c:10119 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7666
+#: elf32-ppc.c:8854 elf64-ppc.c:16870
+#, c-format
+msgid "%pB: %s unsupported"
+msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#: elf.c:10966
+#, c-format
+msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: win32pstatus %s Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ %lu Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼"
+
+#: elf.c:11045
+#, c-format
+msgid "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a name of size %u"
+msgstr "%pB: win32pstatus NOTE_INFO_MODULE Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ %lu Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼, Ñ‰Ð¾Ð± Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ %u"
+
+#: elf.c:13726
+msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets"
+msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ GNU_MBIND Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ†Ñ–Ð»ÐµÐ¹ GNU Ñ– FreeBSD"
+
+#: elf.c:13729
+msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets"
+msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ñ‚Ð¸Ð¿Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² STT_GNU_IFUNC Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ GNU Ñ‚Ð° FreeBSD"
+
+#: elf.c:13732
+msgid "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets"
+msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð¿Ñ€Ð¸Ð²'Ñ�Ð·ÐºÐ¸ STB_GNU_UNIQUE Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ GNU Ñ‚Ð° FreeBSD"
+
+#: elf.c:13735
+msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets"
+msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ GNU_RETAIN Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ†Ñ–Ð»ÐµÐ¹ GNU Ñ– FreeBSD"
+
+#: elf.c:13952
+#, c-format
+msgid "%pB(%pA): relocation %zu has invalid symbol index %lu"
+msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %zu Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %lu"
+
+#: elf.c:14027
+#, 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:14041
+#, c-format
+msgid "%pB(%pA): info section index is invalid"
+msgstr "%pB(%pA): Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ info Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼"
+
+#: elf.c:14055
+#, 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:14131
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section processed twice"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾ Ð´Ð²Ñ–Ñ‡Ñ–"
+
+#: elf.c:14143
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has zero sized entries"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
+
+#: elf.c:14155
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ð¸ Ð½ÐµÑ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
+
+#: elf.c:14169
+#, c-format
+msgid "%pB(%pA): error: secondary reloc section is empty!"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¼!"
+
+#: elf.c:14193
+#, c-format
+msgid "%pB(%pA): error: internal relocs missing for secondary reloc section"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ"
+
+#: elf.c:14213
+#, c-format
+msgid "%pB(%pA): error: reloc table entry %zu is empty"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ %zu Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¼"
+
+#: elf.c:14238
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %zu Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¾Ð³Ð¾ Ð½ÐµÐ¼Ð°Ñ”"
+
+#: elf.c:14256
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %zu Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾"
+
+#: elf.c:14270
+#, c-format
+msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ñ‚Ð¾Ñ€Ð¸Ð½Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %zu Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ"
+
+#. 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-arc.c:454 elf32-arm.c:15198 elf32-frv.c:6618 elf32-iq2000.c:868
+#: elf32-m32c.c:915 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218
+#: elf32-visium.c:844 elf64-ppc.c:5531 elfnn-aarch64.c:7591
 #, c-format
 msgid "private flags = 0x%lx:"
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lx:"
 
-#: elf32-arc.c:627
+#: elf32-arc.c:641
 #, c-format
 msgid "warning: %pB: conflicting platform configuration %s with %s"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼, %s Ð· %s"
 
-#: elf32-arc.c:646
+#: elf32-arc.c:660
 #, 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:697
 #, c-format
 msgid "error: %pB: unable to merge ISA extension attributes %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA %s"
 
-#: elf32-arc.c:707
+#: elf32-arc.c:721
 #, c-format
 msgid "error: %pB: conflicting ISA extension attributes %s with %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA, %s Ð· %s"
 
-#: elf32-arc.c:747
+#: elf32-arc.c:761
 #, c-format
 msgid "error: %pB: cannot mix rf16 with full register set %pB"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð¾Ð´Ð½Ð¾Ñ‡Ð°Ñ�Ð½Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ rf16 Ñ– Ð¿Ð¾Ð²Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² %pB"
 
-#: elf32-arc.c:775
+#: elf32-arc.c:789
 #, c-format
 msgid "error: %pB: conflicting attributes %s: %s with %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %s: %s Ð· %s"
 
-#: elf32-arc.c:802
+#: elf32-arc.c:816
 #, c-format
 msgid "error: %pB: conflicting attributes %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² %s"
 
-#: elf32-arc.c:907
+#: elf32-arc.c:921
 #, 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:937 elf32-iq2000.c:844 elf32-m32c.c:890 elf32-m68hc1x.c:1390
+#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15766
 #, 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:1026
 msgid "error: the ARC4 architecture is no longer supported"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ ARC4 Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð¾"
 
-#: elf32-arc.c:1018
+#: elf32-arc.c:1032
 msgid "warning: unset or old architecture flags; use default machine"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ð°Ð±Ð¾ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñ–; Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ Ñ‚Ð¸Ð¿Ð¾Ð²Ñƒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ñƒ"
 
-#: elf32-arc.c:1151
+#: elf32-arc.c:1158
 #, 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:1169
 #, 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:1897
 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:1921 elf32-rx.c:1486
 #, 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:1926 elf32-rx.c:1491
 #, 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:1931 elf32-rx.c:1496
 #, 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:1936 elf32-rx.c:1501
 #, 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:1941 elf32-rx.c:1506
 #, 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:2035 elf32-arc.c:2103 elf32-arm.c:15641 elf32-metag.c:2250
+#: elf32-nds32.c:5549 elfnn-aarch64.c:7998 elfnn-riscv.c:915
 #, 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:2922
 #, c-format
 msgid "%pB: unknown mandatory ARC object attribute %d"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ARC %d"
 
-#: elf32-arc.c:2957
+#: elf32-arc.c:2930
 #, 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:4367 elf32-arm.c:4401 elf32-arm.c:4420 elf32-arm.c:4472
 #, 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:4432 elf32-arm.c:4486 elf32-arm.c:9185 elf32-arm.c:9275
 #, 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:4612
+#, c-format
+msgid "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%#<PRIx64>)"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº CMSE (Ñ€Ð¾Ð·Ð´Ñ–Ð» %s) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð°Ð»ÐµÐºÐ¸Ð¼ (%#<PRIx64>) Ð²Ñ–Ð´ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (%#<PRIx64>)"
+
+#: elf32-arm.c:4781
 #, 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:4856 elf32-arm.c:7005 elf32-csky.c:3387 elf32-hppa.c:581
+#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14180
+#: elfnn-aarch64.c:3200 elfnn-kvx.c:894
 #, c-format
 msgid "%pB: cannot create stub entry %s"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %s"
 
-#: elf32-arm.c:5957
+#: elf32-arm.c:5077 elf32-csky.c:3729 elf32-hppa.c:731 elf32-hppa.c:760
+#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3346
+#: elf64-ppc.c:12297 elf64-ppc.c:12305 xcofflink.c:4723 elfnn-aarch64.c:3272
+msgid "%P: Could not assign `%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ Â«%pAÂ» Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
+
+#: elf32-arm.c:6048
 #, 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:6057
 #, 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:6096
 #, 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:6102
 #, c-format
 msgid "%pB: absent standard symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»."
 
-#: elf32-arm.c:6023
+#: elf32-arm.c:6114
 #, c-format
 msgid "%pB: `%s' and its special symbol are in different sections"
 msgstr "%pB: Â«%sÂ» Ñ– Ñ—Ñ— Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°ÑŽÑ‚ÑŒ Ñƒ Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð°Ñ…."
 
-#: elf32-arm.c:6035
+#: elf32-arm.c:6126
 #, c-format
 msgid "%pB: entry function `%s' not output"
 msgstr "%pB: Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð´Ð°Ð½Ð¸Ñ…"
 
-#: elf32-arm.c:6042
+#: elf32-arm.c:6133
 #, c-format
 msgid "%pB: entry function `%s' is empty"
 msgstr "%pB: Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ñ” Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾ÑŽ"
 
-#: elf32-arm.c:6171
+#: elf32-arm.c:6262
 #, 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:6311
 #, 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:6333
 #, c-format
 msgid "entry function `%s' disappeared from secure code"
 msgstr "Ð²Ñ…Ñ–Ð´Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� Â«%sÂ» Ð·Ð½Ð¸ÐºÐ»Ð° Ð· Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ"
 
-#: elf32-arm.c:6263
+#: elf32-arm.c:6357
 #, c-format
 msgid "`%s' refers to a non entry function"
 msgstr "Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð±ÐµÐ· Ð²Ñ…Ð¾Ð´Ñƒ"
 
-#: elf32-arm.c:6278
+#: elf32-arm.c:6372
 #, c-format
 msgid "%pB: visibility of symbol `%s' has changed"
 msgstr "%pB: Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾ Ð²Ð¸Ð´Ð¸Ð¼Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf32-arm.c:6287
+#: elf32-arm.c:6381
 #, c-format
 msgid "%pB: incorrect size for symbol `%s'"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf32-arm.c:6306
+#: elf32-arm.c:6400
 #, 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:6420
 msgid "new entry function(s) introduced but no output import library specified:"
 msgstr "Ð²Ð¿Ñ€Ð¾Ð²Ð°Ð´Ð¶ÐµÐ½Ð¾ Ð½Ð¾Ð²Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—, Ð°Ð»Ðµ Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…:"
 
-#: elf32-arm.c:6334
+#: elf32-arm.c:6428
 #, 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:7140 elf32-arm.c:7178
 #, c-format
 msgid "unable to find %s glue '%s' for '%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�ÐºÐ»ÐµÐ¹ÐºÑƒ %s Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ»"
 
-#: elf32-arm.c:7793
+#: elf32-arm.c:7890
 #, 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:8118
 #, 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:8145
 #, 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:8681 elf32-arm.c:8701 elf32-arm.c:8768 elf32-arm.c:8787
 #, c-format
 msgid "%pB: unable to find %s veneer `%s'"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ %s Â«%sÂ»"
 
-#: elf32-arm.c:8900
+#: elf32-arm.c:8994
 #, 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:9092
 #, 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:9861
 #, 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:10170 elf32-arm.c:10212
 #, 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:10493
+#, c-format
+msgid "warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB(%s): Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ñ”Ð¼Ð¾ Ð³Ñ–Ð»ÐºÑƒ Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Thumb (Ð»Ð¸ÑˆÐµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð¸ Thumb) Ñƒ %pB"
+
+#: elf32-arm.c:10498
+#, c-format
+msgid "warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only CPU) in %pB"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: (%s): Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ñ”Ð¼Ð¾ Ð³Ñ–Ð»ÐºÑƒ Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Thumb (Ð»Ð¸ÑˆÐµ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð¸ Thumb) Ñƒ %pB"
+
+#: elf32-arm.c:10527
+#, c-format
+msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "%pB(%s): Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (ARM/Thumb) Ñƒ %pB"
+
+#: elf32-arm.c:10531
+#, c-format
+msgid "(%s): Unknown destination type (ARM/Thumb) in %pB"
+msgstr "(%s): Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� (ARM/Thumb) Ñƒ %pB"
+
+#: elf32-arm.c:10619
 msgid "shared object"
 msgstr "Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚"
 
-#: elf32-arm.c:10495
+#: elf32-arm.c:10622
 msgid "PIE executable"
 msgstr "Ð’Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» PIE"
 
-#: elf32-arm.c:10498
+#: elf32-arm.c:10625
 #, 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:10727
+#, c-format
+msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'"
+msgstr "\\%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %s BLX Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ %s Â«%sÂ»."
+
+#: elf32-arm.c:11144
 #, 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:11778
+#, c-format
+msgid "%pB: expected symbol index in range 0..%lu but found local symbol with index %lu"
+msgstr "%pB: Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñƒ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñ– Ð²Ñ–Ð´ 0 Ð´Ð¾ %lu, Ð²Ñ‚Ñ–Ð¼, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ–Ð· Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu"
+
+#: elf32-arm.c:12053 elf32-arm.c:12079
 #, 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:12125 elf32-csky.c:4958 elf32-m68k.c:3735 elf32-metag.c:1912
 #, 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:12339
 #, 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:12380 elf32-arm.c:12472 elf32-arm.c:12560 elf32-arm.c:12650
 #, 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:12708 elf32-arm.c:12867
+msgid "local symbol index too big"
+msgstr "Ñ–Ð½Ð´ÐµÐºÑ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"
+
+#: elf32-arm.c:12718 elf32-arm.c:12752
+msgid "no dynamic index information available"
+msgstr "Ð½ÐµÐ¼Ð°Ñ” Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ°"
+
+#: elf32-arm.c:12760
+msgid "invalid dynamic index"
+msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ�"
+
+#: elf32-arm.c:12877
+msgid "dynamic index information not available"
+msgstr "Ð´Ð°Ð½Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸ÐºÐ° Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ñ–"
+
+#: elf32-arm.c:13308 elf32-sh.c:3568
 #, 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:13421 elf32-m68k.c:3968 elf32-xtensa.c:2760 elfnn-aarch64.c:7088
+#: elfnn-kvx.c:2569
 #, 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:13423 elf32-m68k.c:3970 elf32-xtensa.c:2762 elfnn-aarch64.c:7090
+#: elfnn-kvx.c:2571
 #, 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:13506 elf32-tic6x.c:2641 elfnn-aarch64.c:7425 elfnn-kvx.c:2798
 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:13510 elf32-pru.c:936 elf32-tic6x.c:2645 elfnn-aarch64.c:7429
+#: elfnn-kvx.c:2802
 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:13518 elf32-pru.c:946 elf32-tic6x.c:2653 elfnn-aarch64.c:7437
+#: elfnn-kvx.c:2810
 msgid "unknown error"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°"
 
-#: elf32-arm.c:13764
+#: elf32-arm.c:13995
 #, 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:13999
 #, c-format
 msgid "warning: clearing the interworking flag of %pB due to outside request"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð½Ñ�Ñ‚Ð¾ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¾Ñ— Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ Ñƒ %pB Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´ÑŒ Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ‚ Ð·Ð·Ð¾Ð²Ð½Ñ–"
 
-#: elf32-arm.c:13813
+#: elf32-arm.c:14044
 #, 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:14131
 #, c-format
 msgid "%pB: unknown mandatory EABI object attribute %d"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %d"
 
-#: elf32-arm.c:13908
+#: elf32-arm.c:14139
 #, c-format
 msgid "warning: %pB: unknown EABI object attribute %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI %d"
 
-#: elf32-arm.c:14175
+#: elf32-arm.c:14474
 #, c-format
 msgid "error: %pB: unknown CPU architecture"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°"
 
-#: elf32-arm.c:14213 elf32-nios2.c:2946
+#: elf32-arm.c:14512
 #, c-format
-msgid "error: %pB: conflicting CPU architectures %d/%d"
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² %d/%d"
+msgid "error: conflicting CPU architectures %s vs %s in %pB"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð², %s Ð°Ð±Ð¾ %s, Ñƒ %pB"
 
-#: elf32-arm.c:14310
+#: elf32-arm.c:14609
 #, 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:14646
 #, c-format
 msgid "error: %pB uses VFP register arguments, %pB does not"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ VFP, Ð° Ñƒ %pB â€” Ð½Ñ–"
 
-#: elf32-arm.c:14497
+#: elf32-arm.c:14816
 #, c-format
 msgid "error: %pB: unable to merge virtualization attributes with %pB"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð· %pB Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ"
 
-#: elf32-arm.c:14523
+#: elf32-arm.c:14842
 #, c-format
 msgid "error: %pB: conflicting architecture profiles %c/%c"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»Ñ–Ð² Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€, %c/%c"
 
-#: elf32-arm.c:14662
+#: elf32-arm.c:14981
 #, c-format
 msgid "warning: %pB: conflicting platform configuration"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ Ð¿Ð»Ð°Ñ‚Ñ„Ð¾Ñ€Ð¼"
 
-#: elf32-arm.c:14671
+#: elf32-arm.c:14990
 #, c-format
 msgid "error: %pB: conflicting use of R9"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ñƒ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ– R9"
 
-#: elf32-arm.c:14683
+#: elf32-arm.c:15002
 #, c-format
 msgid "error: %pB: SB relative addressing conflicts with use of R9"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð°Ñ†Ñ–Ñ— SB ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ R9"
 
-#: elf32-arm.c:14696
+#: elf32-arm.c:15015
 #, 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:15046
 #, 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:15058
 #, c-format
 msgid "error: %pB uses iWMMXt register arguments, %pB does not"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¸-Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¸ iWMMXt, Ð° Ñƒ %pB â€” Ð½Ñ–"
 
-#: elf32-arm.c:14756
+#: elf32-arm.c:15075
 #, c-format
 msgid "error: fp16 format mismatch between %pB and %pB"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñƒ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ– Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� fp16 Ð¼Ñ–Ð¶ %pB Ñ‚Ð° %pB"
 
-#: elf32-arm.c:14792
+#: elf32-arm.c:15111
 #, c-format
 msgid "%pB has both the current and legacy Tag_MPextension_use attributes"
 msgstr "Ð´Ð»Ñ� %pB Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð¾Ð±Ð¸Ð´Ð²Ð° Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Tag_MPextension_use, current Ñ– legacy"
 
-#. 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: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
-#, c-format
-msgid "private flags = %lx:"
-msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx:"
-
-#: elf32-arm.c:14888
+#: elf32-arm.c:15207
 #, c-format
 msgid " [interworking enabled]"
 msgstr " [ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ]"
 
-#: elf32-arm.c:14896
+#: elf32-arm.c:15215
 #, c-format
 msgid " [VFP float format]"
 msgstr " [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float VFP]"
 
-#: elf32-arm.c:14898
-#, c-format
-msgid " [Maverick float format]"
-msgstr " [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float Maverick]"
-
-#: elf32-arm.c:14900
+#: elf32-arm.c:15217
 #, c-format
 msgid " [FPA float format]"
 msgstr " [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float FPA]"
 
-#: elf32-arm.c:14903
+#: elf32-arm.c:15220
 #, c-format
 msgid " [floats passed in float registers]"
 msgstr " [Ñ‡Ð¸Ñ�Ð»Ð° Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ Ð¿ÐµÑ€ÐµÐ´Ð°Ð½Ð¾ Ð´Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‡Ð¸Ñ�ÐµÐ» Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÐ¾Ð¼Ð¾ÑŽ]"
 
-#: elf32-arm.c:14906 elf32-arm.c:14992
+#: elf32-arm.c:15223 elf32-arm.c:15308
 #, c-format
 msgid " [position independent]"
 msgstr " [Ð½ÐµÐ·Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¹ Ð²Ñ–Ð´ Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—]"
 
-#: elf32-arm.c:14909
+#: elf32-arm.c:15226
 #, c-format
 msgid " [new ABI]"
 msgstr " [Ð½Ð¾Ð²Ð¸Ð¹ ABI]"
 
-#: elf32-arm.c:14912
+#: elf32-arm.c:15229
 #, c-format
 msgid " [old ABI]"
 msgstr " [Ñ�Ñ‚Ð°Ñ€Ð¸Ð¹ ABI]"
 
-#: elf32-arm.c:14915
+#: elf32-arm.c:15232
 #, c-format
 msgid " [software FP]"
 msgstr " [Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð° FP]"
 
-#: elf32-arm.c:14924
+#: elf32-arm.c:15240
 #, c-format
 msgid " [Version1 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�1 EABI]"
 
-#: elf32-arm.c:14927 elf32-arm.c:14938
+#: elf32-arm.c:15243 elf32-arm.c:15254
 #, c-format
 msgid " [sorted symbol table]"
 msgstr " [Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²]"
 
-#: elf32-arm.c:14929 elf32-arm.c:14940
+#: elf32-arm.c:15245 elf32-arm.c:15256
 #, c-format
 msgid " [unsorted symbol table]"
 msgstr " [Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²]"
 
-#: elf32-arm.c:14935
+#: elf32-arm.c:15251
 #, c-format
 msgid " [Version2 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�2 EABI]"
 
-#: elf32-arm.c:14943
+#: elf32-arm.c:15259
 #, c-format
 msgid " [dynamic symbols use segment index]"
 msgstr " [Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°]"
 
-#: elf32-arm.c:14946
+#: elf32-arm.c:15262
 #, c-format
 msgid " [mapping symbols precede others]"
 msgstr " [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ´ÑƒÑŽÑ‚ÑŒ Ñ–Ð½ÑˆÐ¸Ð¼]"
 
-#: elf32-arm.c:14953
+#: elf32-arm.c:15269
 #, c-format
 msgid " [Version3 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�3 EABI]"
 
-#: elf32-arm.c:14957
+#: elf32-arm.c:15273
 #, c-format
 msgid " [Version4 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�4 EABI]"
 
-#: elf32-arm.c:14961
+#: elf32-arm.c:15277
 #, c-format
 msgid " [Version5 EABI]"
 msgstr " [Ð’ÐµÑ€Ñ�Ñ–Ñ�5 EABI]"
 
-#: elf32-arm.c:14964
+#: elf32-arm.c:15280
 #, c-format
 msgid " [soft-float ABI]"
 msgstr " [ABI Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸]"
 
-#: elf32-arm.c:14967
+#: elf32-arm.c:15283
 #, c-format
 msgid " [hard-float ABI]"
 msgstr " [ABI Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾Ñ— Ñ€ÑƒÑ…Ð¾Ð¼Ð¾Ñ— ÐºÑ€Ð°Ð¿ÐºÐ¸]"
 
-#: elf32-arm.c:14973
+#: elf32-arm.c:15289
 #, c-format
 msgid " [BE8]"
 msgstr " [BE8]"
 
-#: elf32-arm.c:14976
+#: elf32-arm.c:15292
 #, c-format
 msgid " [LE8]"
 msgstr " [LE8]"
 
-#: elf32-arm.c:14982
+#: elf32-arm.c:15298
 #, c-format
 msgid " <EABI version unrecognised>"
 msgstr " <Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ� EABI>"
 
-#: elf32-arm.c:14989
+#: elf32-arm.c:15305
 #, c-format
 msgid " [relocatable executable]"
 msgstr " [Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»]"
 
-#: elf32-arm.c:14995
+#: elf32-arm.c:15311
 #, 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:15316 elfnn-aarch64.c:7594
 #, c-format
-msgid "<Unrecognised flag bits set>"
-msgstr "<Ð�ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ð½Ð°Ð±Ñ–Ñ€ Ð±Ñ–Ñ‚Ñ–Ð² Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð²>"
+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:15424 elf32-arm.c:15558 elf32-i386.c:1576 elf32-s390.c:921
+#: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 elf64-s390.c:924
+#: elf64-x86-64.c:2550 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 elfxx-x86.c:962
+#: elfnn-aarch64.c:7865 elfnn-kvx.c:3248 elfnn-loongarch.c:961
+#: elfnn-riscv.c:959
 #, c-format
 msgid "%pB: bad symbol index: %d"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: %d"
 
-#: elf32-arm.c:15508
+#: elf32-arm.c:15814
 #, 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:17077
 #, c-format
 msgid "errors encountered processing file %pB"
 msgstr "Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ„Ð°Ð¹Ð»Ð° Ñ�Ñ‚Ð°Ð»Ð¸Ñ�Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸, %pB"
 
-#: elf32-arm.c:17301 elflink.c:12556 elflink.c:12603
+#: elf32-arm.c:17448 elflink.c:13605 elflink.c:13652
 #, c-format
 msgid "could not find section %s"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s"
 
-#: elf32-arm.c:18512
+#: elf32-arm.c:18406
+#, c-format
+msgid "%pB: Number of symbols in input file has increased from %lu to %u\n"
+msgstr "%pB: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð¾ Ð· %lu Ð´Ð¾ %u\n"
+
+#: elf32-arm.c:18664
 #, 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:18691
 #, 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:19518 elf32-arm.c:19540
 #, c-format
 msgid "%pB: error: VFP11 veneer out of range"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÐ° VFP11 Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼"
 
-#: elf32-arm.c:19439
+#: elf32-arm.c:19591
 #, 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:19630
 #, c-format
 msgid "%pB: error: cannot create STM32L4XX veneer"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ð³Ð¾Ñ€Ñ‚ÐºÑƒ STM32L4XX"
 
-#: elf32-arm.c:20567
+#: elf32-arm.c:20713
 #, c-format
 msgid "error: %pB is already in final BE8 format"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¶Ðµ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñƒ Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ– BE8"
 
-#: elf32-arm.c:20643
+#: elf32-arm.c:20790
 #, 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:20805
 #, 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:20815
 #, 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:20819
 #, 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:20829 elf32-arm.c:20833
 #, c-format
 msgid "error: %pB uses %s instructions, whereas %pB does not"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ð½Ñ–"
 
-#: elf32-arm.c:20700
-#, c-format
-msgid "error: %pB does not use %s instructions, whereas %pB does"
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ñ‚Ð°Ðº"
-
-#: elf32-arm.c:20719
+#: elf32-arm.c:20852
 #, 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:20856
 #, 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:20870
 #, c-format
 msgid "warning: %pB supports interworking, whereas %pB does not"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ %pB Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ñ�ÑƒÐ¼Ñ–Ñ�Ð½Ñƒ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ, Ð° Ñƒ %pB Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-arm.c:20743
+#: elf32-arm.c:20876
 #, 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
-msgid "internal error: dangerous relocation"
-msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
+#: elf32-avr.c:1503
+msgid "%X%H: %s against `%s': error: relocation applies outside section\n"
+msgstr "%X%H: %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ñ�Ñ‚Ð¾Ñ�Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼\n"
+
+#: elf32-avr.c:1511
+msgid "%X%H: %s against `%s': error: relocation target address is odd\n"
+msgstr "%X%H: %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð°Ð´Ñ€ÐµÑ�Ð° Ñ†Ñ–Ð»Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ” Ð½ÐµÐ¿Ð°Ñ€Ð½Ð¾ÑŽ\n"
+
+#: elf32-avr.c:1519
+msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n"
+msgstr "%X%H: %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� %d\n"
 
-#: elf32-avr.c:3327
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-aarch64.c:3126
+#: elf32-avr.c:3335 elfnn-aarch64.c:3231
 #, 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:364
 msgid "relocation should be even number"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð½Ð¸Ð¼ Ñ‡Ð¸Ñ�Ð»Ð¾Ð¼"
 
-#: elf32-bfin.c:1585
+#: elf32-bfin.c:1589
 #, 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:1621 elf32-i386.c:3585 elf32-m68k.c:4008 elf32-s390.c:3132
+#: elf64-s390.c:3468 elf64-x86-64.c:5080
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d"
 
-#: elf32-bfin.c:2638
+#: elf32-bfin.c:2646
 #, 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:2663
 msgid "relocation references symbol not defined in the module"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñƒ Ð¼Ð¾Ð´ÑƒÐ»Ñ–"
 
-#: elf32-bfin.c:2752
+#: elf32-bfin.c:2761
 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:2801 elf32-bfin.c:2922
 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:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4386
 msgid "cannot emit dynamic relocations in read-only section"
 msgstr "Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-bfin.c:2874
+#: elf32-bfin.c:2881
 msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend"
 msgstr "R_BFIN_FUNCDESC_VALUE Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
 
-#: elf32-bfin.c:3039
+#: elf32-bfin.c:3044
 msgid "relocations between different segments are not supported"
 msgstr "Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð°Ð¼Ð¸ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-bfin.c:3040
+#: elf32-bfin.c:3045
 msgid "warning: relocation references a different segment"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚"
 
-#: elf32-bfin.c:4787 elf32-frv.c:6603
+#: elf32-bfin.c:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602
+#: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699
+#: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296
+#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3379
+#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:939 elf64-bpf.c:348
+#: elf64-mmix.c:1545 elfxx-tilegx.c:3752
+msgid "internal error: dangerous relocation"
+msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
+
+#. Ignore init flag - it may not be set, despite the flags field containing valid data.
+#: elf32-bfin.c:4734 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1264
+#: elf32-score.c:3986 elf32-score7.c:3793 elf32-vax.c:534 elf32-xgate.c:494
+#: elfxx-mips.c:16452
+#, c-format
+msgid "private flags = %lx:"
+msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx:"
+
+#: elf32-bfin.c:4785 elf32-frv.c:6591
 #, 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:4789 elf32-frv.c:6595
 #, c-format
 msgid "%pB: cannot link fdpic object file into non-fdpic executable"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» fdpic Ð´Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° Ð½Ðµ-fdpic"
 
-#: elf32-bfin.c:4941
+#: elf32-bfin.c:4925
 #, 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:5335 elf32-cr16.c:2723 elf32-m68k.c:4423
 msgid "unsupported relocation type"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
@@ -2044,16 +2360,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:2552
 msgid "[whose name is lost]"
 msgstr "[Ñ‡Ð¸ÑŽ Ð½Ð°Ð·Ð²Ñƒ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾]"
 
-#: elf32-cris.c:1311 elf32-tic6x.c:2603
+#: elf32-cris.c:1311 elf32-tic6x.c:2536
 #, 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:2545
 #, c-format
 msgid "%pB, section %pA: relocation %s with non-zero addend %<PRId64> against symbol `%s'"
 msgstr "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, %<PRId64>, Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
@@ -2092,12 +2408,12 @@ msgstr "(Ð·Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½
 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:3050
+#: elf32-cris.c:3048
 #, c-format
 msgid "%pB, section %pA: v10/v32 compatible object must not contain a PIC relocation"
 msgstr "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA: Ð¾Ð±â€™Ñ”ÐºÑ‚ Ð²ÐµÑ€Ñ�Ñ–Ñ— 10/32 Ð½Ðµ Ð¿Ð¾Ð²Ð¸Ð½ÐµÐ½ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� PIC"
 
-#: elf32-cris.c:3104
+#: elf32-cris.c:3102
 #, c-format
 msgid ""
 "%pB, section %pA:\n"
@@ -2106,78 +2422,103 @@ msgstr ""
 "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA:\n"
 "  Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ” ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ñ‚Ð¸Ð¿Ð¾Ð²Ð¾ÑŽ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¾ÑŽ Ñ” ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð², Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC"
 
-#: elf32-cris.c:3322
+#: elf32-cris.c:3320
 #, c-format
 msgid "%pB, section %pA: relocation %s should not be used in a shared object; recompile with -fPIC"
 msgstr ""
 "%pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA:\n"
 "  Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð½Ðµ Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–; Ð¿ÐµÑ€ÐµÐºÐ¾Ð¼Ð¿Ñ–Ð»ÑŽÐ¹Ñ‚Ðµ Ð· -fPIC"
 
-#: elf32-cris.c:3747
+#: elf32-cris.c:3701
 #, 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:3813
 msgid "unexpected machine number"
 msgstr "Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ð¼Ð°ÑˆÐ¸Ð½Ð¸"
 
-#: elf32-cris.c:3911
+#: elf32-cris.c:3865
 #, c-format
 msgid " [symbols have a _ prefix]"
 msgstr " [Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ� _]"
 
-#: elf32-cris.c:3914
+#: elf32-cris.c:3868
 #, c-format
 msgid " [v10 and v32]"
 msgstr " [v10 Ñ‚Ð° v32]"
 
-#: elf32-cris.c:3917
+#: elf32-cris.c:3871
 #, c-format
 msgid " [v32]"
 msgstr " [v32]"
 
-#: elf32-cris.c:3961
+#: elf32-cris.c:3915
 #, c-format
 msgid "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð¾Ð¼ Â«_Â», Ð°Ð»Ðµ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ñ–Ð²"
 
-#: elf32-cris.c:3962
+#: elf32-cris.c:3916
 #, c-format
 msgid "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸ Ð±ÐµÐ· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð° Â«_Â», Ð°Ð»Ðµ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ð¿Ð¸Ñ� Ñ„Ð°Ð¹Ð»Ð° Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ð¼Ð¸ Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð°Ð¼Ð¸ Â«_Â»"
 
-#: elf32-cris.c:3981
+#: elf32-cris.c:3935
 #, c-format
 msgid "%pB contains CRIS v32 code, incompatible with previous objects"
 msgstr "Ñƒ %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´ v32 CRIS, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-cris.c:3983
+#: elf32-cris.c:3937
 #, c-format
 msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects"
 msgstr "Ñƒ %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� ÐºÐ¾Ð´, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” ÐºÐ¾Ð´Ð¾Ð¼ v32 CRIS, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð°Ð¼Ð¸"
 
-#: elf32-csky.c:2066
+#: elf32-csky.c:2017
 msgid "GOT table size out of range"
 msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ€ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– GOT Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¾Ð³Ð¾ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
 
-#: elf32-csky.c:2917
+#: elf32-csky.c:2828
 #, c-format
 msgid "warning: unrecognized arch eflag '%#lx'"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ e-Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸, Â«%#lxÂ»"
 
-#: elf32-csky.c:2977
+#: elf32-csky.c:2851
+#, c-format
+msgid "warning: unrecognised arch name '%#x'"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð½Ð°Ð·Ð²Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Â«%#xÂ»"
+
+#: elf32-csky.c:2916 elf32-csky.c:3076
 #, c-format
 msgid "%pB: machine flag conflict with target"
 msgstr "%pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ� Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ–Ð· Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼"
 
-#: elf32-csky.c:2990
+#: elf32-csky.c:2929
+#, c-format
+msgid "warning: file %pB's arch flag %s conflict with target %s,set target arch flag to %s"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð° %pB %s ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ %s, Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ñ–Ñ‚ÑŒ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñƒ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %s"
+
+#: elf32-csky.c:2958
+#, c-format
+msgid "Error: %pB and %pB has different VDSP version"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð²ÐµÑ€Ñ�Ñ–Ñ— VDSP %pB Ñ– %pB Ñ” Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸"
+
+#: elf32-csky.c:2975
+#, c-format
+msgid "Error: %pB and %pB has different DSP version"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð²ÐµÑ€Ñ�Ñ–Ñ— DSP %pB Ñ– %pB Ñ” Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸"
+
+#: elf32-csky.c:2993
+#, c-format
+msgid "Error: %pB and %pB has different FPU ABI"
+msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ñ– %pB Ð¼Ð°ÑŽÑ‚ÑŒ Ñ€Ñ–Ð·Ð½Ñ– Ð´Ð²Ñ–Ð¹ÐºÐ¾Ð²Ñ– Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ�Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ð°-Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ñ‡Ð¸Ñ�ÐµÐ» Ñ–Ð· Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ"
+
+#: elf32-csky.c:3090
 #, 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"
+msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€ÐµÑ†ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð¸ Ñ„Ð°Ð¹Ð»Ð° %pB %s ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†ÐµÐ¼ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� ck%s, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ð¼Ð¾ %s"
 
 #. The r_type is error, not support it.
-#: elf32-csky.c:4225 elf32-i386.c:351
+#: elf32-csky.c:4330 elf32-i386.c:344
 #, c-format
 msgid "%pB: unsupported relocation type: %#x"
 msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x"
@@ -2193,7 +2534,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:570 elf32-ip2k.c:1485
 msgid "unsupported relocation between data/insn address spaces"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¼Ñ–Ð¶ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ð°Ð¼Ð¸ Ð°Ð´Ñ€ÐµÑ� data Ñ‚Ð° insn"
 
@@ -2201,96 +2542,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:6502
 #, 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:6556 elf32-iq2000.c:830 elf32-m32c.c:877
 #, 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:6569
 #, c-format
 msgid "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½ÑˆÑ– Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– Ð¿Ð¾Ð»Ñ� e_flags (%#x) Ð½Ñ–Ð¶ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… (%#x)"
@@ -2300,275 +2641,299 @@ 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:862 elf32-hppa.c:3403
 #, 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:1240
 #, 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:2579
 #, c-format
 msgid "%pB: duplicate export stub %s"
 msgstr "%pB: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
 
-#: elf32-hppa.c:3344
+#: elf32-hppa.c:3236
 #, 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:3456
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� %#x Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %#x Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ 8 (gp %#x)"
+
+#: elf32-hppa.c:3475
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 (gp %#x)"
+msgstr "%pB(%pA+%#<PRIx64>): Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� %#x Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %#x Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ 4 (gp %#x)"
+
+#: elf32-hppa.c:4090
 #, c-format
 msgid "%s has both normal and TLS relocs"
 msgstr "%s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS"
 
-#: elf32-hppa.c:4158
+#: elf32-hppa.c:4108
 #, c-format
 msgid "%pB:%s has both normal and TLS relocs"
 msgstr "%pB:%s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS"
 
-#: elf32-hppa.c:4217
+#: elf32-hppa.c:4167
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ %s Ð´Ð»Ñ� %s"
 
-#: elf32-hppa.c:4521
+#: elf32-hppa.c:4471
 msgid ".got section not immediately after .plt section"
 msgstr "Ð Ð¾Ð·Ð´Ñ–Ð» .got Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð·Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ .plt"
 
-#: elf32-i386.c:1178 elf64-x86-64.c:1377
-#, 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:1300
 #, 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:1586
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx32> > %#<PRIx32>) for section `%pA'"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%#<PRIx32> > %#<PRIx32>) Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»"
+
+#: elf32-i386.c:1771 elf32-s390.c:1149 elf32-sh.c:5500 elf32-tilepro.c:1546
+#: elf32-xtensa.c:1261 elf64-s390.c:1162 elfxx-sparc.c:1565 elfxx-tilegx.c:1766
+#: elfnn-loongarch.c:750 elfnn-riscv.c:866
 #, c-format
 msgid "%pB: `%s' accessed both as normal and thread local symbol"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ‚Ð°Ðº Ñ– Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:1798
+#: elf32-i386.c:1843
 #, 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:1898 elf64-x86-64.c:2964
+#, c-format
+msgid "%pB: non-canonical reference to canonical protected function `%s' in %pB"
+msgstr "%pB: Ð½ÐµÐºÐ°Ð½Ð¾Ð½Ñ–Ñ‡Ð½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° ÐºÐ°Ð½Ð¾Ð½Ñ–Ñ‡Ð½Ñƒ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ñƒ Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Â«%sÂ» Ñƒ %pB"
+
+#: elf32-i386.c:2461 elf64-x86-64.c:3446 elfnn-riscv.c:2742
 #, 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:2494 elf32-i386.c:3794 elf32-i386.c:3942 elf64-x86-64.c:3503
+#: elf64-x86-64.c:5254 elf64-x86-64.c:5425 elfnn-riscv.c:2604
+#: elfnn-riscv.c:3511 elfnn-riscv.c:3585
 #, c-format
 msgid "Local IFUNC function `%s' in %pB\n"
 msgstr "Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ� IFUNC Â«%sÂ» Ñƒ %pB\n"
 
-#: elf32-i386.c:2569
+#: elf32-i386.c:2672
 #, 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:2707 elf64-x86-64.c:3726
 msgid "hidden symbol"
 msgstr "Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:2607 elf64-x86-64.c:2922
+#: elf32-i386.c:2710 elf64-x86-64.c:3729
 msgid "internal symbol"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:2610 elf64-x86-64.c:2925
+#: elf32-i386.c:2713 elf64-x86-64.c:3732
 msgid "protected symbol"
 msgstr "Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:2613 elf64-x86-64.c:2928
+#: elf32-i386.c:2716 elf64-x86-64.c:3735
 msgid "symbol"
 msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-i386.c:2619
+#: elf32-i386.c:2722
 #, 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:2735
 #, 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-i386.c:4145 elf64-x86-64.c:5645
+msgid "%P: discarded output section: `%pA'\n"
+msgstr "%P: Ð²Ñ–Ð´ÐºÐ¸Ð½ÑƒÑ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ…: Â«%pAÂ»\n"
+
+#: 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:1298
 #, c-format
 msgid "ip2k linker: missing page instruction at %#<PRIx64> (dest = %#<PRIx64>)"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº ip2k: Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— Ñ‰Ð¾Ð´Ð¾ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ Ñƒ %#<PRIx64> (Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� = %#<PRIx64>)."
 
-#: elf32-ip2k.c:1321
+#: elf32-ip2k.c:1317
 #, 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
 msgid "global pointer relative relocation when _gp not defined"
 msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð±ÐµÐ· Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� _gp"
 
-#: elf32-lm32.c:706 elf32-nios2.c:3578
+#: elf32-lm32.c:663
 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"
 
-#: elf32-m32r.c:1471
+#: elf32-m32r.c:1461
 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:2778 elf32-microblaze.c:1147 elf32-microblaze.c:1195
 #, 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:3279
 #, c-format
 msgid "%pB: instruction set mismatch with previous modules"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð½Ð°Ð±Ð¾Ñ€Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð°Ð¼ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²"
 
-#: elf32-m32r.c:3508 elf32-nds32.c:6992
+#: elf32-m32r.c:3300 elf32-nds32.c:6906
 #, c-format
 msgid "private flags = %lx"
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx"
 
-#: elf32-m32r.c:3513
+#: elf32-m32r.c:3305
 #, c-format
 msgid ": m32r instructions"
 msgstr ": ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32r"
 
-#: elf32-m32r.c:3514
+#: elf32-m32r.c:3306
 #, c-format
 msgid ": m32rx instructions"
 msgstr ": ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32rx"
 
-#: elf32-m32r.c:3515
+#: elf32-m32r.c:3307
 #, c-format
 msgid ": m32r2 instructions"
 msgstr ": ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ m32r2"
 
-#: elf32-m68hc1x.c:1116
+#: elf32-m68hc1x.c:1135
 #, 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:1166
 #, 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:1182
 #, 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:1197
 #, 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:1233
 #, 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:1357
 #, 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:1364
 #, 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:1373
 #, 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:1418 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:1420 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:1423 elf32-xgate.c:502
 #, c-format
 msgid "64-bit double, "
 msgstr "64-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ double, "
 
-#: elf32-m68hc1x.c:1420 elf32-xgate.c:504
+#: elf32-m68hc1x.c:1425 elf32-xgate.c:504
 #, c-format
 msgid "32-bit double, "
 msgstr "32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ double, "
 
-#: elf32-m68hc1x.c:1423
+#: elf32-m68hc1x.c:1428
 #, c-format
 msgid "cpu=HC11]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC11]"
 
-#: elf32-m68hc1x.c:1425
+#: elf32-m68hc1x.c:1430
 #, c-format
 msgid "cpu=HCS12]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HCS12]"
 
-#: elf32-m68hc1x.c:1427
+#: elf32-m68hc1x.c:1432
 #, c-format
 msgid "cpu=HC12]"
 msgstr "Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€=HC12]"
 
-#: elf32-m68hc1x.c:1430
+#: elf32-m68hc1x.c:1435
 #, c-format
 msgid " [memory=bank-model]"
 msgstr " [Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ=Ð¼Ð¾Ð´ÐµÐ»ÑŒ Ð· Ð±Ð°Ð½ÐºÐ°Ð¼Ð¸]"
 
-#: elf32-m68hc1x.c:1432
+#: elf32-m68hc1x.c:1437
 #, c-format
 msgid " [memory=flat]"
 msgstr " [Ð¿Ð°Ð¼â€™Ñ�Ñ‚ÑŒ=Ð¿Ð»Ð¾Ñ�ÐºÐ° Ð¼Ð¾Ð´ÐµÐ»ÑŒ]"
 
-#: elf32-m68hc1x.c:1435
+#: elf32-m68hc1x.c:1440
 #, 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:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578
+#, c-format
+msgid "%pB uses hard float, %pB uses soft float"
+msgstr "Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ñ… Ñ‡Ð¸Ñ�ÐµÐ», Ð° Ñƒ %pB â€” Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð°"
+
+#: elf32-m68k.c:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105
 msgid "unknown"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾"
 
-#: elf32-m68k.c:1660
+#: elf32-m68k.c:1730
 #, 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:1737
 #, c-format
 msgid "%pB: GOT overflow: number of relocations with 8- or 16-bit offset > %d"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� GOT: ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ð· 8- Ð°Ð±Ð¾ 16-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼ Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ > %d"
@@ -2584,387 +2949,362 @@ msgstr "mep: Ð½ÐµÐ¼Ð°Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°
 msgid "MeP: howto %d has type %d"
 msgstr "MeP: howto %d Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ñ‚Ð¸Ð¿Ñƒ %d"
 
-#: elf32-mep.c:622
+#: elf32-mep.c:618
 #, c-format
 msgid "%pB and %pB are for different cores"
 msgstr "%pB Ñ– %pB Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ€Ñ–Ð·Ð½Ð¸Ñ… Ñ�Ð´ÐµÑ€"
 
-#: elf32-mep.c:641
+#: elf32-mep.c:637
 #, c-format
 msgid "%pB and %pB are for different configurations"
 msgstr "%pB Ñ– %pB Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð´Ð»Ñ� Ñ€Ñ–Ð·Ð½Ð¸Ñ… ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹"
 
-#: elf32-mep.c:679
+#: elf32-mep.c:675
 #, c-format
 msgid "private flags = 0x%lx"
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lx"
 
-#: elf32-metag.c:1863
+#: elf32-metag.c:1856
 #, c-format
 msgid "%pB(%pA): multiple TLS models are not supported"
 msgstr "%pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ¾Ñ… Ð¼Ð¾Ð´ÐµÐ»ÐµÐ¹ TLS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-metag.c:1866
+#: elf32-metag.c:1859
 #, 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:1590 elf32-tilepro.c:3020 elfxx-sparc.c:3452
+#: elfxx-tilegx.c:3417
 #, c-format
 msgid "%pB: probably compiled without -fPIC?"
 msgstr "%pB: Ð¹Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾ Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð±ÐµÐ· -fPIC?"
 
-#: elf32-mips.c:1775 elf64-mips.c:3516 elfn32-mips.c:3332
+#: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334
 msgid "literal relocation occurs for an external symbol"
 msgstr "Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð±ÑƒÐºÐ²Ð°Ð»ÑŒÐ½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-mips.c:1822 elf32-score.c:569 elf32-score7.c:469 elf64-mips.c:3559
-#: elfn32-mips.c:3373
+#: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558
+#: elfn32-mips.c:3376
 msgid "32bits gp relative relocation occurs for an external symbol"
 msgstr "Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑ�Ñ� 32-Ð±Ñ–Ñ‚Ð¾Ð²Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ gp-Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½ÑŒÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-msp430.c:837 elf32-msp430.c:1151
+#: elf32-msp430.c:914
+#, c-format
+msgid "error: final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� uleb128 Ð· Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ 0x%lx Ñƒ %pA Ð· %pB Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ"
+
+#: elf32-msp430.c:983 elf32-msp430.c:1297
 msgid "try enabling relaxation to avoid relocation truncations"
 msgstr "Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ ÑƒÐ²Ñ–Ð¼ÐºÐ½ÑƒÑ‚Ð¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–ÑŽ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð´Ð»Ñ� ÑƒÐ½Ð¸ÐºÐ½ÐµÐ½Ð½Ñ� Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ"
 
-#: elf32-msp430.c:1358
+#: elf32-msp430.c:1506
 msgid "internal error: branch/jump to an odd address detected"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð°Ð±Ð¾ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½ÐµÐ¿Ð°Ñ€Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elf32-msp430.c:2357
+#: elf32-msp430.c:2673
 #, c-format
 msgid "warning: %pB: unknown MSPABI object attribute %d"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° MSPABI %d"
 
-#: elf32-msp430.c:2456
+#: elf32-msp430.c:2774
 #, c-format
 msgid "error: %pB uses %s instructions but %pB uses %s"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s, Ð°Ð»Ðµ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” %s"
 
-#: elf32-msp430.c:2468
+#: elf32-msp430.c:2786
 #, 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:2799
 #, 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:2810
 #, 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:2823
 #, 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:2835
 #, 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:2860
 #, 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:3680
 #, 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:5579
 #, c-format
 msgid "%pB: warning: %s unsupported in shared mode"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elf32-nds32.c:5795
+#: elf32-nds32.c:5705
 #, c-format
 msgid "%pB: warning: unaligned access to GOT entry"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GOT"
 
-#: elf32-nds32.c:5836
+#: elf32-nds32.c:5746
 #, c-format
 msgid "%pB: warning: relocate SDA_BASE failed"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� SDA_BASE"
 
-#: elf32-nds32.c:5858
+#: elf32-nds32.c:5768
 #, c-format
 msgid "%pB(%pA): warning: unaligned small data access of type %d"
 msgstr "%pB(%pA): Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ‚Ð¸Ð¿Ñƒ %d"
 
-#: elf32-nds32.c:6784
+#: elf32-nds32.c:6694
 #, 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:6742
 #, c-format
 msgid "%pB: warning: endian mismatch with previous modules"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ–Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-nds32.c:6842
+#: elf32-nds32.c:6756
 #, 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:6844
 #, c-format
 msgid "%pB: error: ABI mismatch with previous modules"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ABI Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
-#: elf32-nds32.c:6940
+#: elf32-nds32.c:6854
 #, c-format
 msgid "%pB: error: instruction set mismatch with previous modules"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð½Ð°Ð±Ð¾Ñ€Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ñ†ÑŒÐ¾Ð³Ð¾ Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ð½Ð°Ð±Ð¾Ñ€Ð°Ð¼ ÐºÐ¾Ð¼Ð°Ð½Ð´ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²"
 
-#: elf32-nds32.c:6967
+#: elf32-nds32.c:6881
 #, c-format
 msgid "%pB: warning: incompatible elf-versions %s and %s"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ð²ÐµÑ€Ñ�Ñ–Ñ— elf, %s Ñ‚Ð° %s"
 
-#: elf32-nds32.c:6998
+#: elf32-nds32.c:6912
 #, c-format
 msgid ": n1 instructions"
 msgstr ": Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— n1"
 
-#: elf32-nds32.c:7001
+#: elf32-nds32.c:6915
 #, c-format
 msgid ": n1h instructions"
 msgstr ": Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— n1h"
 
-#: elf32-nds32.c:9462
+#: elf32-nds32.c:9364
 #, 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:9628
 #, c-format
 msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¾ %#<PRIx64>."
 
-#: elf32-nds32.c:12975
+#: elf32-nds32.c:12893
 #, c-format
 msgid "%pB: nested OMIT_FP in %pA"
 msgstr "%pB: Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ðµ OMIT_FP Ñƒ %pA."
 
-#: elf32-nds32.c:12994
+#: elf32-nds32.c:12912
 #, c-format
 msgid "%pB: unmatched OMIT_FP in %pA"
 msgstr "%pB: OMIT_FP Ð±ÐµÐ· Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸ÐºÐ° Ñƒ %pA."
 
-#: elf32-nds32.c:13275 reloc.c:8410
-#, 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
-#, c-format
-msgid "error: %pB: big-endian R2 is not supported"
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² R2 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
-
-#: elf32-nios2.c:3822
-#, c-format
-msgid "global pointer relative relocation at address 0x%08x when _gp not defined\n"
-msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%08x, Ð²Ñ‚Ñ–Ð¼, _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾\n"
-
-#: elf32-nios2.c:3842
-#, 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"
-
-#: elf32-nios2.c:4495 elf32-pru.c:928
-msgid "relocation out of range"
-msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
-
-#: elf32-nios2.c:4505 elf32-pru.c:938 elf32-tic6x.c:2716
-msgid "dangerous relocation"
-msgstr "Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
-
-#: elf32-nios2.c:5378
-#, c-format
-msgid "dynamic variable `%s' is zero size"
-msgstr "Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð° Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð¼Ð°Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€"
-
-#: elf32-or1k.c:1177
+#: elf32-or1k.c:1256
 #, c-format
 msgid "%pB: Cannot handle relocation value size of %d"
 msgstr "%pB: Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ %d"
 
-#: elf32-or1k.c:1286
+#: elf32-or1k.c:1375
 #, c-format
 msgid "%pB: unknown relocation type %d"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d"
 
-#: elf32-or1k.c:1340
+#: elf32-or1k.c:1429
 #, c-format
 msgid "%pB: addend should be zero for plt relocations"
 msgstr "%pB: Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ plt Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼"
 
-#: elf32-or1k.c:1445
+#: elf32-or1k.c:1542
 #, c-format
 msgid "%pB: addend should be zero for got relocations"
 msgstr "%pB: Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ got Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼"
 
-#: elf32-or1k.c:1462
+#: elf32-or1k.c:1559
 #, 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:1573 elf32-or1k.c:1588 elf64-alpha.c:4412 elf64-alpha.c:4556
 #, c-format
 msgid "%pB: pc-relative relocation against dynamic symbol %s"
 msgstr "%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf32-or1k.c:1493
+#: elf32-or1k.c:1602
 #, c-format
 msgid "%pB: non-pic relocation against symbol %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ-pic Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf32-or1k.c:1577
+#: elf32-or1k.c:1686
 #, c-format
 msgid "%pB: support for local dynamic not implemented"
 msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ñ— Ð´Ð¸Ð½Ð°Ð¼Ñ–ÐºÐ¸ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
-#: elf32-or1k.c:1729
+#: elf32-or1k.c:1865
 #, c-format
 msgid "%pB: will not resolve runtime TLS relocation"
 msgstr "%pB: Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–"
 
-#: elf32-or1k.c:2074
+#: elf32-or1k.c:2199
 #, c-format
 msgid "%pB: bad relocation section name `%s'"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð½Ð°Ð·Ð²Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð»Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%sÂ»"
 
-#: elf32-or1k.c:3218
+#: elf32-or1k.c:3313
 #, c-format
 msgid "%pB: %s flag mismatch with previous modules"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ� %s Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼"
 
-#: elf32-ppc.c:986
+#: elf32-ppc.c:990 elf64-ppc.c:1753
 #, c-format
 msgid "generic linker can't handle %s"
 msgstr "Ñ‚Ð¸Ð¿Ð¾Ð²Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ‚Ð¸ %s"
 
-#: elf32-ppc.c:1617
+#: elf32-ppc.c:1627
 #, c-format
 msgid "corrupt %s section in %pB"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñƒ %pB"
 
-#: elf32-ppc.c:1637
+#: elf32-ppc.c:1646
 #, c-format
 msgid "unable to read in %s section from %pB"
 msgstr "Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ Ð· %pB"
 
-#: elf32-ppc.c:1679
+#: elf32-ppc.c:1688
 #, c-format
 msgid "warning: unable to set size of %s section in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %pB"
 
-#: elf32-ppc.c:1729
+#: elf32-ppc.c:1737
 msgid "failed to allocate space for new APUinfo section"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfo"
 
-#: elf32-ppc.c:1748
+#: elf32-ppc.c:1756
 msgid "failed to compute new APUinfo section"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±Ñ‡Ð¸Ñ�Ð»Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfo"
 
-#: elf32-ppc.c:1751
+#: elf32-ppc.c:1759
 msgid "failed to install new APUinfo section"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð½Ð¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» APUinfo"
 
-#: elf32-ppc.c:2853
+#: elf32-ppc.c:2867
 #, 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:3586 elf32-ppc.c:3594
 #, 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:3616 elf32-ppc.c:3624
 #, 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:3632 elf32-ppc.c:3640
 #, 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:3707 elf32-ppc.c:3716
 #, 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:3745 elf32-ppc.c:3754
 #, 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:3818
 #, c-format
 msgid "%pB: compiled with -mrelocatable and linked with modules compiled normally"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð· -mrelocatable Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ–"
 
-#: elf32-ppc.c:3837
+#: elf32-ppc.c:3826
 #, c-format
 msgid "%pB: compiled normally and linked with modules compiled with -mrelocatable"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ñƒ Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¾Ð¼Ñƒ Ñ€ÐµÐ¶Ð¸Ð¼Ñ– Ñ– Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾ Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸, Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¸Ð¼Ð¸ Ð· -mrelocatable"
 
-#: elf32-ppc.c:3906
+#: elf32-ppc.c:3897
 #, 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:3916
 #, 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:4026
 #, c-format
 msgid "bss-plt forced due to %pB"
 msgstr "Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ bss-plt Ñ‡ÐµÑ€ÐµÐ· %pB"
 
-#: elf32-ppc.c:4030
+#: elf32-ppc.c:4028
 msgid "bss-plt forced by profiling"
 msgstr "Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ð¿Ñ€Ð¸Ð¼ÑƒÑ�Ð¾Ð²Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ bss-plt"
 
+#: elf32-ppc.c:4606 elf64-ppc.c:8517
+msgid "%H: warning: %s unexpected insn %#x.\n"
+msgstr "%H: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s, Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#x.\n"
+
 #. 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:4606 elf64-ppc.c:7724
+#: elf32-ppc.c:4636 elf64-ppc.c:8582
 #, 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:5565 elf32-sh.c:3019 elf32-tilepro.c:2246 elfxx-sparc.c:2464
+#: elfxx-tilegx.c:2495
 #, c-format
 msgid "%pB: dynamic relocation in read-only section `%pA'\n"
 msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�\n"
 
-#: elf32-ppc.c:7457
+#: elf32-ppc.c:6512
+msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ð³ÑƒÑ”Ð¼Ð¾ Ð³Ñ–Ð»ÐºÑƒ Ð½Ð° 0x%V Ð´Ð¾ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s\n"
+
+#: elf32-ppc.c:7454
 msgid "%P: %H: error: %s with unexpected instruction %x\n"
 msgstr "%P: %H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾ÑŽ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ %x\n"
 
-#: elf32-ppc.c:7494
+#: elf32-ppc.c:7492
 msgid "%H: fixup branch overflow\n"
 msgstr "%H: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ñ–Ð· Ð°Ð´Ñ€ÐµÑ�Ð½Ð¾ÑŽ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¾ÑŽ\n"
 
-#: elf32-ppc.c:7534 elf32-ppc.c:7570
+#: elf32-ppc.c:7532 elf32-ppc.c:7570
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x"
 msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ñ–Ð· Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾ÑŽ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ %#x"
@@ -2974,11 +3314,12 @@ msgstr "%pB(%pA+%#<PRIx64>): Ð¿Ð¾Ð¼Ð¸Ð»Ð
 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
-msgid "%H: warning: %s unexpected insn %#x.\n"
-msgstr "%H: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s, Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#x.\n"
+#: elf32-ppc.c:7670
+#, c-format
+msgid "%pB: reloc %#x unsupported"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x"
 
-#: elf32-ppc.c:7985
+#: elf32-ppc.c:7953
 #, c-format
 msgid "%H: non-zero addend on %s reloc against `%s'\n"
 msgstr "%H: Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ñ‚Ð¾Ðº Ð´Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»\n"
@@ -2991,110 +3332,125 @@ 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:7985
 #, 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:8163
 #, 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:8501 elf32-ppc.c:8532 elf32-ppc.c:8635 elf32-ppc.c:8735
 #, 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:8913 elf32-ppc.c:8934
+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:9016
 #, 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:9045
 #, c-format
 msgid "%H: unresolvable %s relocation against symbol `%s'\n"
 msgstr "%H: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»\n"
 
-#: elf32-ppc.c:9064
+#: elf32-ppc.c:9127
 #, 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:10009
 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:10013 elf64-ppc.c:18330
 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:10058
 #, 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:1477
 #, c-format
 msgid "error: %pB: old incompatible object file detected"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð»"
 
-#: elf32-rl78.c:372
-msgid "internal error: RL78 reloc stack overflow"
-msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78"
-
-#: elf32-rl78.c:383
-msgid "internal error: RL78 reloc stack underflow"
-msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78"
+#: elf32-pru.c:931
+msgid "relocation out of range"
+msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ"
+
+#: elf32-pru.c:941 elf32-tic6x.c:2649
+msgid "dangerous relocation"
+msgstr "Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
+
+#: elf32-rl78.c:551
+msgid "RL78 reloc stack overflow/underflow"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð°Ð±Ð¾ Ð²Ð¸Ñ‡ÐµÑ€Ð¿Ð°Ð½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78"
+
+#: elf32-rl78.c:555
+msgid "RL78 reloc divide by zero"
+msgstr "Ð”Ñ–Ð»ÐµÐ½Ð½Ñ� Ð½Ð° Ð½ÑƒÐ»ÑŒ Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– RL78"
 
-#: elf32-rl78.c:1053
+#: elf32-rl78.c:1069
 msgid "warning: RL78_SYM reloc with an unknown symbol"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RL78_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rl78.c:1084 elf32-rx.c:1456
-#, c-format
-msgid "%pB(%pA): error: call to undefined function '%s'"
-msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ»"
+#: elf32-rl78.c:1115
+msgid "%H: %s out of range\n"
+msgstr "%H: %s Ð¿Ð¾Ð·Ð° Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼\n"
+
+#: elf32-rl78.c:1122
+msgid "%H: relocation type %u is not supported\n"
+msgstr "%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ‚Ð¸Ð¿Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %u Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
+
+#: elf32-rl78.c:1134
+msgid "%H: relocation %s returns an unrecognized value %x\n"
+msgstr "%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %x\n"
 
-#: elf32-rl78.c:1205
+#: elf32-rl78.c:1220
 #, c-format
 msgid "RL78 ABI conflict: G10 file %pB cannot be linked with %s file %pB"
 msgstr "ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ ABI RL78: Ñ„Ð°Ð¹Ð» G10 %pB Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð· %s, Ñ„Ð°Ð¹Ð» %pB"
 
-#: elf32-rl78.c:1222
+#: elf32-rl78.c:1237
 #, c-format
 msgid "RL78 ABI conflict: cannot link %s file %pB with %s file %pB"
 msgstr "ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ ABI RL78: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ %s, Ñ„Ð°Ð¹Ð» %pB Ð· %s, Ñ„Ð°Ð¹Ð» %pB"
 
-#: elf32-rl78.c:1231
+#: elf32-rl78.c:1246
 msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together"
 msgstr "ÐšÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� RL78: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ 32-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ñ– 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸"
 
-#: elf32-rl78.c:1235 elf32-rl78.c:1239
+#: elf32-rl78.c:1250 elf32-rl78.c:1254
 #, c-format
 msgid "- %pB is 64-bit, %pB is not"
 msgstr "- %pB Ñ” 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼, Ð° %pB â€” Ð½Ñ–"
 
-#: elf32-rl78.c:1266
+#: elf32-rl78.c:1281
 #, c-format
 msgid " [64-bit doubles]"
 msgstr " [64-Ð±Ñ–Ñ‚Ð¾Ð²Ñ– double]"
 
-#: elf32-rx.c:605
+#: elf32-rx.c:618
 #, c-format
 msgid "%pB:%pA: table entry %s outside table"
 msgstr "%pB:%pA: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð¿Ð¾Ð·Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÐµÑŽ"
 
-#: elf32-rx.c:612
+#: elf32-rx.c:625
 #, c-format
 msgid "%pB:%pA: table entry %s not word-aligned within table"
 msgstr "%pB:%pA: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð° Ð²Ñ�ÐµÑ€ÐµÐ´Ð¸Ð½Ñ– Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ–"
 
-#: elf32-rx.c:684
+#: elf32-rx.c:700
 #, c-format
 msgid "%pB:%pA: warning: deprecated Red Hat reloc %s detected against: %s"
 msgstr "%pB:%pA: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¸Ð¹ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Red Hat %s, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð´Ð»Ñ� %s"
@@ -3103,74 +3459,84 @@ 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:720
 #, 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:1304
 msgid "warning: RX_SYM reloc with an unknown symbol"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� RX_SYM Ð· Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: elf32-rx.c:3167
+#: elf32-rx.c:1472
+#, c-format
+msgid "%pB(%pA): error: call to undefined function '%s'"
+msgstr "%pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%sÂ»"
+
+#: elf32-rx.c:3185
 #, c-format
 msgid "there is a conflict merging the ELF header flags from %pB"
 msgstr "Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ� Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–Ð² Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° ELF Ð· %pB Ð²Ð¸Ð½Ð¸Ðº ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚"
 
-#: elf32-rx.c:3170
+#: elf32-rx.c:3188
 #, c-format
 msgid "  the input  file's flags: %s"
 msgstr "  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ñ„Ð°Ð¹Ð»Ð° Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…: %s"
 
-#: elf32-rx.c:3172
+#: elf32-rx.c:3190
 #, c-format
 msgid "  the output file's flags: %s"
 msgstr "  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ñ„Ð°Ð¹Ð»Ð° Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ–Ð²: %s"
 
-#: elf32-rx.c:3792
+#: elf32-rx.c:3797
 #, c-format
 msgid "%pB:%pA: table %s missing corresponding %s"
 msgstr "%pB:%pA: Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– %s Ð½ÐµÐ¼Ð°Ñ” Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ %s"
 
-#: elf32-rx.c:3800
+#: elf32-rx.c:3805
 #, 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:2007 elf64-s390.c:2242
 #, 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:1505 elf32-score7.c:1368 elfxx-mips.c:3914
 msgid "not enough GOT space for local GOT entries"
 msgstr "Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ GOT Ð´Ð»Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² GOT"
 
-#: elf32-score.c:2746
+#: elf32-score.c:2737
 msgid "address not word aligned"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ñƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð·Ð° Ð¼ÐµÐ¶ÐµÑŽ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elf32-score.c:2827 elf32-score7.c:2632
+#: elf32-score.c:2818 elf32-score7.c:2625
 #, c-format
 msgid "%pB: malformed reloc detected for section %pA"
 msgstr "%pB: Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ– Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ�"
 
-#: elf32-score.c:2881 elf32-score7.c:2686
+#: elf32-score.c:2872 elf32-score7.c:2679
 #, c-format
 msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CALL15 Ñƒ %#<PRIx64> Ð½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-score.c:4003 elf32-score7.c:3808
+#: elf32-score.c:3483 elf32-score7.c:3294 elfxx-mips.c:11260
+#, c-format
+msgid "%pB: cannot handle more than %d dynamic symbols"
+msgstr "%pB: Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ° Ð¿Ð¾Ð½Ð°Ð´ %d Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð°"
+
+#: elf32-score.c:3989 elf32-score7.c:3796
 #, c-format
 msgid " [pic]"
 msgstr " [pic]"
 
-#: elf32-score.c:4007 elf32-score7.c:3812
+#: elf32-score.c:3993 elf32-score7.c:3800
 #, c-format
 msgid " [fix dep]"
 msgstr " [Ñ„Ñ–ÐºÑ�. Ñ€Ð¾Ð·Ñ‚.]"
 
-#: elf32-score.c:4050 elf32-score7.c:3855
+#: elf32-score.c:4040 elf32-score7.c:3847
 #, c-format
 msgid "%pB: warning: linking PIC files with non-PIC files"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² PIC Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸, Ñ�ÐºÑ– Ð½Ðµ Ñ” Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ PIC"
@@ -3180,152 +3546,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:3755
 #, 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:3785 elf32-sh.c:3801
 #, c-format
 msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s, %#<PRIx64>"
 
-#: elf32-sh.c:3942
+#: elf32-sh.c:3817
 #, 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:3833
 #, 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:3963 elf32-sh.c:4358
 #, 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:4461
 #, 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:4580
 #, 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:4598
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd4??)"
 
-#: elf32-sh.c:4731
+#: elf32-sh.c:4606
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xc7??)"
 
-#: elf32-sh.c:4738
+#: elf32-sh.c:4613
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0xd1??)"
 
-#: elf32-sh.c:4745
+#: elf32-sh.c:4620
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x310c)"
 
-#: elf32-sh.c:4752
+#: elf32-sh.c:4627
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x410b)"
 
-#: elf32-sh.c:4759
+#: elf32-sh.c:4634
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ� %#04X (Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ 0x34cc)"
 
-#: elf32-sh.c:4794
+#: elf32-sh.c:4669
 #, 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:4687
 #, 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:4696
 #, 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:4703
 #, 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:4818
 #, 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:4886
 #, 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:5014
 #, c-format
-msgid "%X%C: relocation to \"%s\" references a different segment\n"
-msgstr "%X%C: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚\n"
+msgid "%X%H: relocation to \"%s\" references a different segment\n"
+msgstr "%X%H: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚\n"
 
-#: elf32-sh.c:5146
+#: elf32-sh.c:5021
 #, c-format
-msgid "%C: warning: relocation to \"%s\" references a different segment\n"
-msgstr "%C: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚\n"
+msgid "%H: warning: relocation to \"%s\" references a different segment\n"
+msgstr "%H: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð° Â«%sÂ» Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ñ–Ð½ÑˆÐ¸Ð¹ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚\n"
 
-#: elf32-sh.c:5651 elf32-sh.c:5733
+#: elf32-sh.c:5489 elf32-sh.c:5571
 #, 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:5495 elf32-sh.c:5576
 #, c-format
 msgid "%pB: `%s' accessed both as FDPIC and thread local symbol"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð´Ð¾ Â«%sÂ» Ð²Ð¸ÐºÐ¾Ð½ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ñ�Ðº Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ FDPIC, Ñ‚Ð°Ðº Ñ– Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑƒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elf32-sh.c:5688
+#: elf32-sh.c:5526
 #, c-format
 msgid "%pB: Function descriptor relocation with non-zero addend"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ð° Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
 
-#: elf32-sh.c:5895 elf64-alpha.c:4691
+#: elf32-sh.c:5733 elf64-alpha.c:4648
 #, c-format
 msgid "%pB: TLS local exec code cannot be linked into shared objects"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ ÐºÐ¾Ð´ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ TLS Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-sh.c:6010
+#: elf32-sh.c:5848
 #, c-format
 msgid "%pB: uses %s instructions while previous modules use %s instructions"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s, Ñ…Ð¾Ñ‡Ð° Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s"
 
-#: elf32-sh.c:6022
+#: elf32-sh.c:5860
 #, 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:5901
 #, c-format
 msgid "%pB: uses instructions which are incompatible with instructions used in previous modules"
 msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ�Ð¼Ð¸, Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¸Ð¼Ð¸ Ñƒ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ñ… Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ñ…"
 
-#: elf32-sh.c:6072
+#: elf32-sh.c:5914
 #, c-format
 msgid "%pB: attempt to mix FDPIC and non-FDPIC objects"
 msgstr "%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ�ÑƒÐ¼Ñ–Ñˆ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ–Ð² FDPIC Ñ– Ð½Ðµ-FDPIC"
@@ -3340,29 +3702,34 @@ 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:734
 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:742
 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:762
 msgid "%X%P: overlay section %pA is not in cache area\n"
 msgstr "%X%P: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸ %pA Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ð¾Ð±Ð»Ð°Ñ�Ñ‚Ñ– ÐºÐµÑˆÑƒÐ²Ð°Ð½Ð½Ñ�\n"
 
-#: elf32-spu.c:801
+#: elf32-spu.c:803
 #, 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:1029
 #, c-format
 msgid "warning: call to non-function symbol %s defined in %pB"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸ÐºÐ»Ð¸Ðº Ð½ÐµÑ„ÑƒÐ½ÐºÑ†Ñ–Ð¾Ð½Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %s, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñƒ %pB"
 
-#: elf32-spu.c:1377
+#: elf32-spu.c:1379
 #, c-format
 msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n"
 msgstr "%pA:0x%v .brinfo lrlive (%u) Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�Ñ”Ñ‚ÑŒÑ�Ñ� Ð²Ñ–Ð´ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ ÑˆÐ»Ñ�Ñ…Ð¾Ð¼ Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ (%u)\n"
@@ -3382,30 +3749,30 @@ msgstr "Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ‚
 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:15372
 msgid "stubs don't match calculated size"
 msgstr "ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸ Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°ÑŽÑ‚ÑŒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: elf32-spu.c:2572
+#: elf32-spu.c:2575
 #, c-format
 msgid "warning: %s overlaps %s\n"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð¿ÐµÑ€ÐµÐºÑ€Ð¸Ð²Ð°Ñ” %s\n"
 
-#: elf32-spu.c:2588
+#: elf32-spu.c:2591
 #, c-format
 msgid "warning: %s exceeds section size\n"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ\n"
 
-#: elf32-spu.c:2620
+#: elf32-spu.c:2623
 #, c-format
 msgid "%pA:0x%v not found in function table\n"
 msgstr "%pA:0x%v Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹\n"
 
-#: elf32-spu.c:2761
+#: elf32-spu.c:2764
 #, 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"
@@ -3419,33 +3786,33 @@ msgstr "Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ Ñ�Ñ
 msgid "  calls:\n"
 msgstr "  Ð²Ð¸ÐºÐ»Ð¸ÐºÐ¸:\n"
 
-#: elf32-spu.c:4341
+#: elf32-spu.c:4342
 #, c-format
 msgid "%s duplicated in %s\n"
 msgstr "%s Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ñƒ %s\n"
 
-#: elf32-spu.c:4345
+#: elf32-spu.c:4346
 #, c-format
 msgid "%s duplicated\n"
 msgstr "%s Ð´ÑƒÐ±Ð»ÑŒÐ¾Ð²Ð°Ð½Ð¾\n"
 
-#: elf32-spu.c:4352
+#: elf32-spu.c:4353
 msgid "sorry, no support for duplicate object files in auto-overlay script\n"
 msgstr "Ð²Ð¸Ð±Ð°Ñ‡Ñ‚Ðµ, Ñƒ Ñ�ÐºÑ€Ð¸Ð¿Ñ‚Ñ– Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ñ–Ð².\n"
 
-#: elf32-spu.c:4394
+#: elf32-spu.c:4395
 #, 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:4551
 #, c-format
 msgid "%pB:%pA%s exceeds overlay size\n"
 msgstr "%pB:%pA%s Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð½Ð°ÐºÐ»Ð°Ð´ÐºÐ¸\n"
 
-#: elf32-spu.c:4691
-msgid "%F%P: auto overlay error: %E\n"
-msgstr "%F%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ�: %E\n"
+#: elf32-spu.c:4692
+msgid "%P: auto overlay error: %E\n"
+msgstr "%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð°Ð²Ñ‚Ð¾Ð½Ð°ÐºÐ»Ð°Ð´Ð°Ð½Ð½Ñ�: %E\n"
 
 #: elf32-spu.c:4712
 msgid "Stack size for call graph root nodes.\n"
@@ -3468,327 +3835,327 @@ msgid "%X%P: stack/lrlive analysis error
 msgstr "%X%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð°Ð½Ð°Ð»Ñ–Ð·Ñƒ Ñ�Ñ‚ÐµÐºÐ°/lrlive: %E\n"
 
 #: elf32-spu.c:4745
-msgid "%F%P: can not build overlay stubs: %E\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð½Ñ– ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸: %E\n"
+msgid "%P: can not build overlay stubs: %E\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð½Ñ– ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¸: %E\n"
 
 #: elf32-spu.c:4814
 msgid "fatal error while creating .fixup"
 msgstr "ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ð¿Ñ€Ð¾Ð±Ð¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� .fixup"
 
-#: elf32-spu.c:5049
+#: elf32-spu.c:5050
 #, c-format
 msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'"
 msgstr "%pB(%s+%#<PRIx64>): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: elf32-tic6x.c:1628
+#: elf32-tic6x.c:1587
 msgid "warning: generating a shared library containing non-PIC code"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PIC"
 
-#: elf32-tic6x.c:1633
+#: elf32-tic6x.c:1592
 msgid "warning: generating a shared library containing non-PID code"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ñ‚ÑŒÑ�Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�, Ñ�ÐºÐ° Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÐºÐ¾Ð´, Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¹ Ð· PID"
 
-#: elf32-tic6x.c:2493
+#: elf32-tic6x.c:2426
 #, 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:3492
 #, c-format
 msgid "%pB: error: unknown mandatory EABI object attribute %d"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¾Ð±Ð¾Ð²â€™Ñ�Ð·ÐºÐ¾Ð²Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° EABI, %d"
 
-#: elf32-tic6x.c:3638
+#: elf32-tic6x.c:3501
 #, 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:3619 elf32-tic6x.c:3628
 #, 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:3638 elf32-tic6x.c:3647
 #, 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:3656 elf32-tic6x.c:3665
 #, 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:3674 elf32-tic6x.c:3682
 #, c-format
 msgid "error: %pB requires more array alignment than %pB preserves"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð±Ñ–Ð»ÑŒÑˆÐ¾Ð³Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¼Ð°Ñ�Ð¸Ð²Ñƒ, Ð½Ñ–Ð¶ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾ Ñƒ %pB"
 
-#: elf32-tic6x.c:3838
+#: elf32-tic6x.c:3705
 #, c-format
 msgid "warning: %pB and %pB differ in wchar_t size"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ñ– %pB Ð²Ñ–Ð´Ñ€Ñ–Ð·Ð½Ñ�ÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ wchar_t"
 
-#: elf32-tic6x.c:3857
+#: elf32-tic6x.c:3724
 #, 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:3626 elfxx-tilegx.c:4019 elfxx-x86.c:2762
+#: elfnn-aarch64.c:10375 elfnn-kvx.c:4631 elfnn-loongarch.c:6379
+#: elfnn-riscv.c:3801
 #, 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:466
 msgid "failed to find previous HI16 reloc"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ” Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� HI16"
 
-#: elf32-v850.c:2303
+#: elf32-v850.c:2309
 msgid "could not locate special linker symbol __gp"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __gp"
 
-#: elf32-v850.c:2307
+#: elf32-v850.c:2313
 msgid "could not locate special linker symbol __ep"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __ep"
 
-#: elf32-v850.c:2311
+#: elf32-v850.c:2317
 msgid "could not locate special linker symbol __ctbp"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ�Ð¿ÐµÑ†Ñ–Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° __ctbp"
 
-#: elf32-v850.c:2532
+#: elf32-v850.c:2539
 #, 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:2555
 #, 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:2570
 #, 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:2602
 #, c-format
 msgid " alignment of 8-byte entities: "
 msgstr " Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� 8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²: "
 
-#: elf32-v850.c:2598
+#: elf32-v850.c:2605
 #, c-format
 msgid "4-byte"
 msgstr "4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹"
 
-#: elf32-v850.c:2599
+#: elf32-v850.c:2606
 #, c-format
 msgid "8-byte"
 msgstr "8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ð¸Ð¹"
 
-#: elf32-v850.c:2600 elf32-v850.c:2612
+#: elf32-v850.c:2607 elf32-v850.c:2619
 #, 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:2608 elf32-v850.c:2620 elf32-v850.c:2632 elf32-v850.c:2643
+#: elf32-v850.c:2654 elf32-v850.c:2665
 #, c-format
 msgid "unknown: %x"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾: %x"
 
-#: elf32-v850.c:2607
+#: elf32-v850.c:2614
 #, c-format
 msgid " size of doubles: "
 msgstr " Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ double: "
 
-#: elf32-v850.c:2610
+#: elf32-v850.c:2617
 #, c-format
 msgid "4-bytes"
 msgstr "4-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ–"
 
-#: elf32-v850.c:2611
+#: elf32-v850.c:2618
 #, c-format
 msgid "8-bytes"
 msgstr "8-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñ–"
 
-#: elf32-v850.c:2619
+#: elf32-v850.c:2626
 #, c-format
 msgid " FPU support required: "
 msgstr " ÐŸÐ¾Ñ‚Ñ€Ñ–Ð±Ð½Ð° Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ° FPU: "
 
-#: elf32-v850.c:2622
+#: elf32-v850.c:2629
 #, c-format
 msgid "FPU-2.0"
 msgstr "FPU-2.0"
 
-#: elf32-v850.c:2623
+#: elf32-v850.c:2630
 #, c-format
 msgid "FPU-3.0"
 msgstr "FPU-3.0"
 
-#: elf32-v850.c:2624
+#: elf32-v850.c:2631
 #, c-format
 msgid "none"
 msgstr "Ð½ÐµÐ¼Ð°Ñ”"
 
-#: elf32-v850.c:2631
+#: elf32-v850.c:2638
 #, c-format
 msgid "SIMD use: "
 msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� SIMD: "
 
-#: elf32-v850.c:2634 elf32-v850.c:2645 elf32-v850.c:2656
+#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663
 #, c-format
 msgid "yes"
 msgstr "Ñ‚Ð°Ðº"
 
-#: elf32-v850.c:2635 elf32-v850.c:2646 elf32-v850.c:2657
+#: elf32-v850.c:2642 elf32-v850.c:2653 elf32-v850.c:2664
 #, c-format
 msgid "no"
 msgstr "Ð½Ñ–"
 
-#: elf32-v850.c:2642
+#: elf32-v850.c:2649
 #, c-format
 msgid "CACHE use: "
 msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� CACHE: "
 
-#: elf32-v850.c:2653
+#: elf32-v850.c:2660
 #, c-format
 msgid "MMU use: "
 msgstr "Ð’Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� MMU: "
 
-#: elf32-v850.c:2820 elf32-v850.c:2876
+#: elf32-v850.c:2827 elf32-v850.c:2883
 #, c-format
 msgid "%pB: architecture mismatch with previous modules"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸"
 
 #. xgettext:c-format.
-#: elf32-v850.c:2894
+#: elf32-v850.c:2901
 #, c-format
 msgid "private flags = %lx: "
 msgstr "Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = %lx: "
 
-#: elf32-v850.c:2899
+#: elf32-v850.c:2906
 #, c-format
 msgid "unknown v850 architecture"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850"
 
-#: elf32-v850.c:2901
+#: elf32-v850.c:2908
 #, c-format
 msgid "v850 E3 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850 E3"
 
-#: elf32-v850.c:2903 elf32-v850.c:2910
+#: elf32-v850.c:2910 elf32-v850.c:2917
 #, c-format
 msgid "v850 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850"
 
-#: elf32-v850.c:2911
+#: elf32-v850.c:2918
 #, c-format
 msgid "v850e architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e"
 
-#: elf32-v850.c:2912
+#: elf32-v850.c:2919
 #, c-format
 msgid "v850e1 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e1"
 
-#: elf32-v850.c:2913
+#: elf32-v850.c:2920
 #, c-format
 msgid "v850e2 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2"
 
-#: elf32-v850.c:2914
+#: elf32-v850.c:2921
 #, c-format
 msgid "v850e2v3 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e2v3"
 
-#: elf32-v850.c:2915
+#: elf32-v850.c:2922
 #, c-format
 msgid "v850e3v5 architecture"
 msgstr "Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° v850e3v5"
 
-#: elf32-v850.c:3609 elf32-v850.c:3848
+#: elf32-v850.c:3596 elf32-v850.c:3835
 #, 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:3606 elf32-v850.c:3845
 #, 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:3652 elf32-v850.c:3880
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-v850.c:3705
+#: elf32-v850.c:3692
 #, c-format
 msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>"
 msgstr "%pB: %#<PRIx64>: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¾ %#<PRIx64>"
 
-#: elf32-vax.c:540
+#: elf32-vax.c:537
 #, c-format
 msgid " [nonpic]"
 msgstr " [Ð½Ðµ-pic]"
 
-#: elf32-vax.c:543
+#: elf32-vax.c:540
 #, c-format
 msgid " [d-float]"
 msgstr " [d-float]"
 
-#: elf32-vax.c:546
+#: elf32-vax.c:543
 #, c-format
 msgid " [g-float]"
 msgstr " [g-float]"
 
-#: elf32-vax.c:632
+#: elf32-vax.c:629
 #, c-format
 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,251 +4170,280 @@ 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:2077 elfnn-ia64.c:2345
 msgid "non-zero addend in @fptr reloc"
 msgstr "Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– @fptr"
 
-#: elf32-xtensa.c:937
+#: elf32-xtensa.c:996
 #, c-format
 msgid "%pB(%pA): invalid property table"
 msgstr "%pB(%pA): Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹"
 
-#: elf32-xtensa.c:2675
+#: elf32-xtensa.c:2732
 #, 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:2815 elf32-xtensa.c:2938
 msgid "dynamic relocation in read-only section"
 msgstr "Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: elf32-xtensa.c:2858
+#: elf32-xtensa.c:2915
 msgid "TLS relocation invalid without dynamic sections"
 msgstr "ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ð±ÐµÐ· Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²"
 
-#: elf32-xtensa.c:3070
+#: elf32-xtensa.c:3128
 msgid "internal inconsistency in size of .got.loc section"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð°Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .got.loc"
 
-#: elf32-xtensa.c:3377
+#: elf32-xtensa.c:3434
 #, 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:4733 elf32-xtensa.c:4741
 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:6569 elf32-xtensa.c:6648 elf32-xtensa.c:8074
 #, c-format
 msgid "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration mismatch"
 msgstr "%pB(%pA+%#<PRIx64>): Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´ÐµÐºÐ¾Ð´ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–ÑŽ, Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð° Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ð¹"
 
-#: elf32-xtensa.c:7638
+#: elf32-xtensa.c:7815
 #, 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:9673
 msgid "invalid relocation address"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf32-xtensa.c:9543
+#: elf32-xtensa.c:9764
 msgid "overflow after relaxation"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿Ñ–Ñ�Ð»Ñ� Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ"
 
-#: elf32-xtensa.c:10689
+#: elf32-xtensa.c:10910
 #, 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: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� 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:472
 msgid "GPDISP relocation did not find ldah and lda instructions"
 msgstr "ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ð¼ GPDISP Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— ldah Ñ– lda"
 
-#: elf64-alpha.c:2463
+#: elf64-alpha.c:1983
+#, c-format
+msgid "%pB: dynamic relocation against a local symbol in read-only section `%pA'\n"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�\n"
+
+#: elf64-alpha.c:2435
 #, 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:2679 elflink.c:15752 elfnn-kvx.c:4016 elfnn-loongarch.c:2016
+#, c-format
+msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n"
+msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ», Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�\n"
+
+#: elf64-alpha.c:2977 elf64-alpha.c:3172
 #, 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:4372 elf64-alpha.c:4385
 #, c-format
 msgid "%pB: gp-relative relocation against dynamic symbol %s"
 msgstr "%pB: gp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-alpha.c:4484
+#: elf64-alpha.c:4441
 #, 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:4466 mach-o.c:627 elfnn-loongarch.c:917 elfnn-riscv.c:917
+#: elfnn-riscv.c:1122 elfnn-riscv.c:1164
 msgid "<unknown>"
 msgstr "<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð°>"
 
-#: elf64-alpha.c:4515
+#: elf64-alpha.c:4472
 #, c-format
 msgid "%pB: !samegp reloc against symbol without .prologue: %s"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� !samegp Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð±ÐµÐ· .prologue: %s"
 
-#: elf64-alpha.c:4573
+#: elf64-alpha.c:4530
 #, c-format
 msgid "%pB: unhandled dynamic relocation against %s"
 msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ %s"
 
-#: elf64-alpha.c:4608
+#: elf64-alpha.c:4565
 #, c-format
 msgid "%pB: pc-relative relocation against undefined weak symbol %s"
 msgstr "%pB: pc-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-alpha.c:4674
+#: elf64-alpha.c:4631
 #, c-format
 msgid "%pB: dtp-relative relocation against dynamic symbol %s"
 msgstr "%pB: dtp-Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elf64-alpha.c:4699
+#: elf64-alpha.c:4656
 #, 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:344
+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:2037
 #, 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:3241
 #, 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:600 elfnn-ia64.c:641
 #, 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:2032 elfnn-ia64.c:2293
 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:3280 elfnn-ia64.c:3673
 #, 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:3290 elfnn-ia64.c:3683
 #, 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:3560 elfnn-ia64.c:3956
 #, 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:3624 elfnn-ia64.c:4024
 #, 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:3683 elfnn-ia64.c:4087
 #, 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:3785 elfnn-ia64.c:4225
 #, 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:3788 elfnn-ia64.c:4228
 #, 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:3791 elfnn-ia64.c:4231
 #, 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:3915 elfnn-ia64.c:4428
 msgid "unsupported reloc"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elf64-ia64-vms.c:3964 elf32-ia64.c:4506 elf64-ia64.c:4506
+#: elf64-ia64-vms.c:3952 elfnn-ia64.c:4466
 #, 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:3969 elfnn-ia64.c:4483
 #, 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:4263 elfnn-ia64.c:4742
 #, 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:4272 elfnn-ia64.c:4751
 #, 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:4281 elfnn-ia64.c:4760
 #, 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:4290 elfnn-ia64.c:4769
 #, 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:4300 elfnn-ia64.c:4779
 #, 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:5518
 #, 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
 #, 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:5547
 #, 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:4102
 #, c-format
 msgid "%pB(%pA): relocation %<PRIu64> has invalid symbol index %ld"
 msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %<PRIu64> Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld"
 
-#: elf64-mmix.c:984
+#: elf64-mmix.c:980
 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Â» (Ð´Ð»Ñ� gcc Â«-Wa,-no-expandÂ»)"
 
-#: elf64-mmix.c:1168
+#: elf64-mmix.c:1164
 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 Ð°Ð±Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�Ð¼ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° gcc Â«-mno-base-addressesÂ»."
 
-#: elf64-mmix.c:1195
+#: elf64-mmix.c:1191
 #, c-format
 msgid ""
 "%pB: Internal inconsistency error for value for\n"
@@ -4056,1040 +4452,1708 @@ msgstr ""
 "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñ‡ÐµÑ€ÐµÐ· Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½ÑŽ Ð½ÐµÐ¿Ð¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ð´Ð»Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�\n"
 " Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ¾Ð¼ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°: ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¾: %#<PRIx64> != Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾: %#<PRIx64>"
 
-#: elf64-mmix.c:1619
+#: elf64-mmix.c:1615
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: (unknown) in %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð°-Ð¿Ð»ÑŽÑ�-Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ: (Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ) Ñƒ %pA"
 
-#: elf64-mmix.c:1625
+#: elf64-mmix.c:1621
 #, c-format
 msgid "%pB: base-plus-offset relocation against register symbol: %s in %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð°-Ð¿Ð»ÑŽÑ�-Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñƒ: %s Ñƒ %pA"
 
-#: elf64-mmix.c:1670
+#: elf64-mmix.c:1666
 #, c-format
 msgid "%pB: register relocation against non-register symbol: (unknown) in %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–: (Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ) Ñƒ %pA"
 
-#: elf64-mmix.c:1676
+#: elf64-mmix.c:1672
 #, c-format
 msgid "%pB: register relocation against non-register symbol: %s in %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–: %s Ñƒ %pA"
 
-#: elf64-mmix.c:1713
+#: elf64-mmix.c:1709
 #, c-format
 msgid "%pB: directive LOCAL valid only with a register or absolute value"
 msgstr "%pB: Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¸Ð²Ñƒ LOCAL Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼Ð¸ Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°Ñ… Ð°Ð±Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼Ð¸"
 
-#: elf64-mmix.c:1744
+#: elf64-mmix.c:1738
 #, 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:2153
 #, 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:2208
 msgid "register section has contents\n"
 msgstr "Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð¼Ñ–Ñ�Ñ‚Ñ�Ñ‚ÑŒÑ�Ñ� Ð´Ð°Ð½Ñ–\n"
 
-#: elf64-mmix.c:2418
+#: elf64-mmix.c:2399
 #, c-format
 msgid "internal inconsistency: remaining %lu != max %lu; please report this bug"
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð½ÐµÑƒÐ·Ð³Ð¾Ð´Ð¶ÐµÐ½Ñ–Ñ�Ñ‚ÑŒ: Ð·Ð°Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� %lu != Ð¼Ð°ÐºÑ�. %lu; Ð±ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ñ‚Ðµ Ð¿Ñ€Ð¾ Ñ†ÑŽ Ð²Ð°Ð´Ñƒ"
 
-#: elf64-ppc.c:3827
+#: elf64-ppc.c:1361
+#, c-format
+msgid "warning: %s should be used rather than %s"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ %s, Ð° Ð½Ðµ %s"
+
+#: elf64-ppc.c:4302
 #, 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:4485
 #, c-format
 msgid "%pB .opd not allowed in ABI version %d"
 msgstr ".opd %pB Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— ABI %d"
 
-#: elf64-ppc.c:4523
+#: elf64-ppc.c:5107
 #, 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:5277
+msgid "%H: %s reloc unsupported here\n"
+msgstr "%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‚ÑƒÑ‚ Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
+
+#: elf64-ppc.c:5500
 #, c-format
 msgid "%pB uses unknown e_flags 0x%lx"
 msgstr "%pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� e_flags 0x%lx"
 
-#: elf64-ppc.c:4927
+#: elf64-ppc.c:5508
 #, 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:5535
 #, c-format
 msgid " [abiv%ld]"
 msgstr " [abiv%ld]"
 
-#: elf64-ppc.c:6145
+#: elf64-ppc.c:6845
 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:7112
 #, c-format
 msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation"
 msgstr "%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– R_PPC64_TOCSAVE"
 
-#: elf64-ppc.c:6644
+#: elf64-ppc.c:7363
 #, c-format
 msgid "dynreloc miscount for %pB, section %pA"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ Ñƒ Ð¾Ð±Ñ‡Ð¸Ñ�Ð»ÐµÐ½Ð½Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� %pB, Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA"
 
-#: elf64-ppc.c:6733
+#: elf64-ppc.c:7454
 #, c-format
 msgid "%pB: .opd is not a regular array of opd entries"
 msgstr "%pB: .opd Ð½Ðµ Ñ” Ð·Ð²Ð¸Ñ‡Ð°Ð¹Ð½Ð¸Ð¼ Ð¼Ð°Ñ�Ð¸Ð²Ð¾Ð¼ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² opd"
 
-#: elf64-ppc.c:6743
+#: elf64-ppc.c:7464
 #, c-format
 msgid "%pB: unexpected reloc type %u in .opd section"
 msgstr "%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, %u, Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd"
 
-#: elf64-ppc.c:6765
+#: elf64-ppc.c:7486
 #, c-format
 msgid "%pB: undefined sym `%s' in .opd section"
 msgstr "%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .opd"
 
-#: elf64-ppc.c:7249
+#. The issue is that __glink_PLTresolve saves r2, which is done
+#. because glibc ld.so _dl_runtime_resolve restores r2 to support
+#. a glibc plt call optimisation where global entry code is
+#. skipped on calls that resolve to the same binary.  The
+#. __glink_PLTresolve save of r2 is incompatible with code
+#. making tail calls, because the tail call might go via the
+#. resolver and thus overwrite the proper saved r2.
+#: elf64-ppc.c:7987
+msgid "warning: --plt-localentry is incompatible with power10 pc-relative code"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --plt-localentry Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ñ–Ð· Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¸Ð¼ Ñ‰Ð¾Ð´Ð¾ Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ° Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ ÐºÐ¾Ð´Ð¾Ð¼ power10"
+
+#: elf64-ppc.c:7995
 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:8311
 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:8746 elf64-ppc.c:9462
 #, 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:9419
 #, c-format
 msgid "%H: %s references optimized away TOC entry\n"
 msgstr "%H: %s Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° ÑƒÑ�ÑƒÐ½ÑƒÑ‚Ð¸Ð¹ Ñƒ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñ– Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ð·Ð°Ð¿Ð¸Ñ� TOC\n"
 
-#: elf64-ppc.c:9301
+#: elf64-ppc.c:9640
+#, c-format
+msgid "%H: got/toc optimization is not supported for %s instruction\n"
+msgstr "%H: Ð´Ð»Ñ� Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ— %s Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¾Ð¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ— got/toc\n"
+
+#: elf64-ppc.c:10536
 #, c-format
 msgid "warning: discarding dynamic section %s"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ”Ð¼Ð¾ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %s"
 
-#: elf64-ppc.c:10215
+#: elf64-ppc.c:11692
 msgid "%P: cannot find opd entry toc for `%pT'\n"
 msgstr "`%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� opd Ñƒ toc Ð´Ð»Ñ� Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10303
+#: elf64-ppc.c:11842
 #, c-format
 msgid "long branch stub `%s' offset overflow"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° Ð´Ð¾Ð²Ð³Ð¾Ñ— Ð³Ñ–Ð»ÐºÐ¸, Â«%sÂ»"
 
-#: elf64-ppc.c:10330
+#: elf64-ppc.c:11869
 #, 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:11930 elf64-ppc.c:12182 elf64-ppc.c:14748
 #, c-format
 msgid "%P: linkage table error against `%pT'\n"
 msgstr "%P: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»\n"
 
-#: elf64-ppc.c:10820
+#: elf64-ppc.c:12381
 #, c-format
 msgid "can't build branch stub `%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð±ÑƒÐ´ÑƒÐ²Ð°Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Â«%sÂ»"
 
-#: elf64-ppc.c:11779
+#: elf64-ppc.c:13412
 #, c-format
 msgid "%pB section %pA exceeds stub group size"
 msgstr "Ð Ð¾Ð·Ð´Ñ–Ð» %pB, %pA, Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð³Ñ€ÑƒÐ¿Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²"
 
-#: elf64-ppc.c:13189 elf64-ppc.c:13208
+#: elf64-ppc.c:14929
+msgid "__tls_get_addr call offset overflow"
+msgstr "Ð²Ð¸ÐºÐ»Ð¸Ðº __tls_get_addr Ð¿Ñ€Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ"
+
+#: elf64-ppc.c:15272 elf64-ppc.c:15291
 #, c-format
 msgid "%s offset too large for .eh_frame sdata4 encoding"
 msgstr "Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ %s Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ Ð´Ð»Ñ� ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ� sdata4 .eh_frame"
 
-#: elf64-ppc.c:13244
+#: elf64-ppc.c:15380
 #, 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"
-msgstr[3] "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ñ–\n"
+msgid "linker stubs in %u group"
+msgid_plural "linker stubs in %u groups"
+msgstr[0] "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ñ–"
+msgstr[1] "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°Ñ…"
+msgstr[2] "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ð°Ñ…"
+msgstr[3] "ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð½Ðµ Ð·Ð¼Ñ–Ð³ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ Ñ€Ð¾Ð±Ð¾Ñ‚Ñƒ Ñƒ %u Ð³Ñ€ÑƒÐ¿Ñ–"
 
-#: elf64-ppc.c:13248
+#: elf64-ppc.c:15387
 #, c-format
 msgid ""
+"%s, iter %u\n"
 "  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 ""
-"  Ð³Ñ–Ð»ÐºÐ°          %lu\n"
-"  toc adj Ð³Ñ–Ð»ÐºÐ¸  %lu\n"
-"  notoc Ð³Ñ–Ð»ÐºÐ¸    %lu\n"
-"  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"
-"  Ð·Ð°Ð³. Ð·Ð°Ð¿Ð¸Ñ�     %lu"
+"%s, Ñ–Ñ‚ÐµÑ€ %u\n"
+"  Ð³Ñ–Ð»ÐºÐ°           %lu\n"
+"  Ð´Ð¾Ð²Ð³Ð° Ð³Ñ–Ð»ÐºÐ°     %lu\n"
+"  Ð²Ð¸ÐºÐ»Ð¸Ðº plt      %lu\n"
+"  Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %lu"
 
-#: elf64-ppc.c:13583
+#: elf64-ppc.c:15769
 #, c-format
 msgid "%H: %s used with TLS symbol `%pT'\n"
 msgstr "%H: %s Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼ TLS Â«%pTÂ»\n"
 
-#: elf64-ppc.c:13585
+#: elf64-ppc.c:15771
 #, 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:16555
 #, 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:16561
 #, 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:17212
+#, c-format
+msgid "%H: %s against %pT is not supported\n"
+msgstr "%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ñ‰Ð¾Ð´Ð¾ %pT Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
+
+#: elf64-ppc.c:17488
 #, c-format
 msgid "%H: %s for indirect function `%pT' unsupported\n"
 msgstr "%H: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ %s Ð´Ð»Ñ� Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¾Ñ— Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Â«%pTÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: elf64-ppc.c:15097
+#: elf64-ppc.c:17575
+#, 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:17630
 #, 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:17899
 #, c-format
 msgid "%H: error: %s not a multiple of %u\n"
 msgstr "%H: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ %u\n"
 
-#: elf64-ppc.c:15349
+#: elf64-ppc.c:17922
 #, c-format
 msgid "%H: unresolvable %s against `%pT'\n"
 msgstr "%H: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ %s Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»\n"
 
-#: elf64-ppc.c:15446
+#: elf64-ppc.c:18067
 #, c-format
 msgid "%H: %s against `%pT': error %d\n"
 msgstr "%H: %s Ñ‰Ð¾Ð´Ð¾ Â«%pTÂ»: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° %d\n"
 
-#: elf64-s390.c:2576
+#: elf64-s390.c:2752
 #, 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
+#: elf64-s390.c:3415
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): relocation %s against misaligned symbol `%s' (%#<PRIx64>) in %pB"
+msgstr "%pB(%pA+%#<PRIx64>): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» (%#<PRIx64>) Ñƒ %pB"
+
+#: elf64-sparc.c:134 elfcode.h:1601
 #, c-format
 msgid "%pB(%pA): relocation %d has invalid symbol index %ld"
 msgstr "%pB(%pA): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %d Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ, %ld"
 
-#: elf64-sparc.c:467
+#: elf64-sparc.c:493
 #, 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:514
 #, 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:538
 #, 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:585
 #, 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:717
 #, c-format
 msgid "%pB: linking UltraSPARC specific with HAL specific code"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� UltraSPARC-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ‚Ð° HAL-Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ"
 
-#: elf64-x86-64.c:1412
+#: elf64-x86-64.c:1690
 msgid "hidden symbol "
 msgstr "Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1415
+#: elf64-x86-64.c:1693
 msgid "internal symbol "
 msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1418 elf64-x86-64.c:1422
+#: elf64-x86-64.c:1696 elf64-x86-64.c:1700
 msgid "protected symbol "
 msgstr "Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» "
 
-#: elf64-x86-64.c:1424
+#: elf64-x86-64.c:1702
 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:1708
 msgid "undefined "
 msgstr "Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ "
 
-#: elf64-x86-64.c:1439
+#: elf64-x86-64.c:1718 elfnn-loongarch.c:901
 msgid "a shared object"
 msgstr "Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚"
 
-#: elf64-x86-64.c:1441
+#: elf64-x86-64.c:1720
+msgid "; recompile with -fPIC"
+msgstr "; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· -fPIC"
+
+#: elf64-x86-64.c:1725 elfnn-loongarch.c:907
 msgid "a PIE object"
 msgstr "Ð¾Ð±'Ñ”ÐºÑ‚ PIE"
 
-#: elf64-x86-64.c:1443
+#: elf64-x86-64.c:1727 elfnn-loongarch.c:909
 msgid "a PDE object"
 msgstr "Ð¾Ð±'Ñ”ÐºÑ‚ PDE"
 
-#: elf64-x86-64.c:1446
+#: elf64-x86-64.c:1729
+msgid "; recompile with -fPIE"
+msgstr "; Ð²Ð¸ÐºÐ¾Ð½Ð°Ð¹Ñ‚Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ðµ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð· -fPIE"
+
+#: elf64-x86-64.c:1733
 #, 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:2566
+#, c-format
+msgid "%pB: bad reloc offset (%#<PRIx64> > %#<PRIx64>) for section `%pA'"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%#<PRIx64> > %#<PRIx64>) Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»"
+
+#: elf64-x86-64.c:2630
 #, 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:2791
 #, 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:3046
+#, c-format
+msgid "%pB: unsupported relocation %s against symbol `%s'"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
+
+#: elf64-x86-64.c:3472 elfnn-aarch64.c:5784 elfnn-riscv.c:2572
 #, 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:3741
 #, 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:3755
 #, 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:4045
 #, 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
-msgid "%F%P: failed to convert GOTPCREL relocation; relink with --no-relax\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOTPCREL; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ð· --no-relax\n"
+#: elf64-x86-64.c:4197
+msgid "%P: corrupt input: %pB\n"
+msgstr "%P: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ñ– Ð²Ñ…Ñ–Ð´Ð½Ñ– Ð´Ð°Ð½Ñ–: %pB\n"
+
+#: elf64-x86-64.c:5066
+#, c-format
+msgid " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n"
+msgstr " Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOTPCREL Ñ‰Ð¾Ð´Ð¾ Â«%sÂ»; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ¹Ñ‚Ðµ Ð· --no-relax\n"
+
+#: elf64-x86-64.c:5225
+#, c-format
+msgid "%pB: PC-relative offset overflow in PLT entry for `%s'\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»\n"
+
+#: elf64-x86-64.c:5301
+#, c-format
+msgid "%pB: branch displacement overflow in PLT entry for `%s'\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� Ð³Ñ–Ð»Ð¾Ðº Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»\n"
+
+#: elf64-x86-64.c:5354
+#, c-format
+msgid "%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT GOT Ð´Ð»Ñ� Â«%sÂ»\n"
 
-#: elf64-x86-64.c:4043
+#: elf64-x86-64.c:5505
 #, c-format
-msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n"
-msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»\n"
+msgid "%pB: Unable to generate dynamic relocs because a suitable section does not exist\n"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”\n"
 
-#: elf64-x86-64.c:4106
+#: elfcode.h:342
 #, c-format
-msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n"
-msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ� Ð³Ñ–Ð»Ð¾Ðº Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT Ð´Ð»Ñ� Â«%sÂ»\n"
+msgid "warning: %pB has a section extending past end of file"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð», Ñ�ÐºÐ¸Ð¹ Ð²Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ñ– ÐºÑ–Ð½Ñ†Ñ� Ñ„Ð°Ð¹Ð»Ð°"
 
-#: elf64-x86-64.c:4159
+#: elfcode.h:790
 #, c-format
-msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n"
-msgstr "%F%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð·Ñ�ÑƒÐ²Ñƒ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– PLT GOT Ð´Ð»Ñ� Â«%sÂ»\n"
+msgid "warning: %pB has a corrupt string table index"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %pB Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾"
 
-#: elfcode.h:323
-msgid "warning: %pB has a corrupt section with a size (%"
-msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ (%"
+#: elfcode.h:838
+#, c-format
+msgid "warning: %pB has a program header with invalid alignment"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ Ñ–Ð· Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼"
 
-#: elfcode.h:768
+#: elfcode.h:1056
 #, c-format
-msgid "warning: %pB has a corrupt string table index - ignoring"
-msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÐºÐ°Ð¶Ñ‡Ð¸Ðº Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² %pB Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ â€” Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ñ‚ÑŒÑ�Ñ�"
+msgid "%pB: %pA+%<PRIx64>: relocation addend %<PRIx64> too large"
+msgstr "%pB: %pA+%<PRIx64>: Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %<PRIx64> Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼"
 
-#: elfcode.h:1212
+#: elfcode.h:1321
 #, c-format
 msgid "%pB: version count (%<PRId64>) does not match symbol count (%ld)"
 msgstr "%pB: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº Ð²ÐµÑ€Ñ�Ñ–Ñ— (%<PRId64>) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸ÐºÐ¾Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ (%ld)"
 
-#: elfcore.h:300
+#: elfcore.h:280
 #, c-format
-msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
-msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° >= %<PRIu64>, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾: %<PRIu64>."
+msgid "warning: %pB has a segment extending past end of file"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚, Ñ�ÐºÐ¸Ð¹ Ð²Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ñ– ÐºÑ–Ð½Ñ†Ñ� Ñ„Ð°Ð¹Ð»Ð°"
 
-#: elflink.c:1367
+#: elflink.c:1477
 #, 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:1483
 #, 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:1489
 #, 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:1495
 #, 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:2207
 #, c-format
 msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð½ÐµÐ¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð²ÐµÑ€Ñ�Ñ–Ñ—, Â«%sÂ»"
 
-#: elflink.c:2452
+#: elflink.c:2720
 #, c-format
 msgid "%pB: version node not found for symbol %s"
 msgstr "%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ð²ÑƒÐ·Ð»Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ— Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %s"
 
-#: elflink.c:2541
+#: elflink.c:2819
 #, 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:2831
 #, 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:3017
 #, c-format
 msgid "%pB: relocation size mismatch in %pB section %pA"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pB %pA"
 
-#: elflink.c:3066
+#: elflink.c:3350
 #, c-format
 msgid "warning: type and size of dynamic symbol `%s' are not defined"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ‚Ð¸Ð¿ Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elflink.c:3128
+#: elflink.c:3407
 msgid "%P: copy reloc against protected `%pT' is dangerous\n"
 msgstr "%P: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ‰Ð¾Ð´Ð¾ Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Â«%pTÂ» Ñ” Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ð¼\n"
 
-#: elflink.c:3932
+#: elflink.c:4363
+msgid "%P: %pB: failed to add %s to first hash\n"
+msgstr "%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð´Ð¾Ð´Ð°Ñ‚Ð¸ %s Ð´Ð¾ Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ Ñ…ÐµÑˆÑƒ\n"
+
+#: elflink.c:4431
+msgid "%P: first_hash failed to create: %E\n"
+msgstr "%P: first_hash Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸: %E\n"
+
+#: elflink.c:4462
 #, c-format
 msgid "alternate ELF machine code found (%d) in %pB, expecting %d"
 msgstr "Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð°Ð»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¸Ð¹ ÐºÐ¾Ð´ ELF (%d) Ñƒ %pB, Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð»Ð¾Ñ�Ñ� %d"
 
-#: elflink.c:4598
+#: elflink.c:4945
+#, c-format
+msgid "%pB: invalid version offset %lx (max %lx)"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ð²ÐµÑ€Ñ�Ñ–Ñ— %lx (Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¸Ð¹ â€” %lx)"
+
+#: elflink.c:5015
+#, c-format
+msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)"
+msgstr "%pB: Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñ–Ð· Ñ–Ð½Ð´ÐµÐºÑ�Ð¾Ð¼ %lu (>= sh_info %lu)"
+
+#: elflink.c:5164
+#, c-format
+msgid "%pB: not enough version information"
+msgstr "%pB: Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½Ñ– Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñ�Ñ‚Ñ– Ñ‰Ð¾Ð´Ð¾ Ð²ÐµÑ€Ñ�Ñ–Ñ—"
+
+#: elflink.c:5202
 #, c-format
 msgid "%pB: %s: invalid version %u (max %d)"
 msgstr "%pB: %s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ�, %u (Ð¼Ð°ÐºÑ�Ð¸Ð¼ÑƒÐ¼ â€” %d)"
 
-#: elflink.c:4635
+#: elflink.c:5239
 #, c-format
 msgid "%pB: %s: invalid needed version %d"
 msgstr "%pB: %s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð²ÐµÑ€Ñ�Ñ–Ñ— %d"
 
-#: elflink.c:5054
+#: elflink.c:5525
+#, c-format
+msgid "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used by the common definition in %pB"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ� %u Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB Ñ” Ð¼ÐµÐ½ÑˆÐ¸Ð¼ Ð·Ð° %u, Ñ‰Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ñƒ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ– Ñƒ %pB"
+
+#: elflink.c:5532
+msgid "warning: NOTE: alignment discrepancies can cause real problems.  Investigation is advised."
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ� Ñƒ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ– Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ñ�Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¿Ñ€Ð°Ð²Ð¶Ð½Ñ– Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸. Ð Ð°Ð´Ð¸Ð¼Ð¾ Ð²Ð¸Ð²Ñ‡Ð¸Ñ‚Ð¸ Ñ†Ðµ Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ�."
+
+#: elflink.c:5554
+msgid "warning: NOTE: size discrepancies can cause real problems.  Investigation is advised."
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ� Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ– Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ñ�Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð¸Ñ‚Ð¸ Ñ�Ð¿Ñ€Ð°Ð²Ð¶Ð½Ñ– Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð¸. Ð Ð°Ð´Ð¸Ð¼Ð¾ Ð²Ð¸Ð²Ñ‡Ð¸Ñ‚Ð¸ Ñ†Ðµ Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ�."
+
+#: elflink.c:5697
 #, c-format
 msgid "%pB: undefined reference to symbol '%s'"
 msgstr "%pB: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»"
 
-#: elflink.c:6130
+#: elflink.c:6812
 #, c-format
 msgid "%pB: stack size specified and %s set"
 msgstr "%pB: Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ñ�Ñ‚ÐµÐºÐ° Ñ– Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ %s"
 
-#: elflink.c:6134
+#: elflink.c:6816
 #, c-format
 msgid "%pB: %s not absolute"
 msgstr "%pB: %s Ð½Ðµ Ñ” Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¸Ð¼"
 
-#: elflink.c:6331
+#: elflink.c:7028
 #, c-format
 msgid "%s: undefined version: %s"
 msgstr "%s: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ�: %s"
 
-#: elflink.c:6902
+#: elflink.c:7419
+msgid "error: creating an executable stack because of -z execstack command line option"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ñ‚ÐµÐº, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ° -z Ñ�Ñ‚ÐµÐº Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�"
+
+#: elflink.c:7425
+msgid "warning: enabling an executable stack because of -z execstack command line option"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¼Ð¸ÐºÐ°Ñ”Ð¼Ð¾ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ�Ñ‚ÐµÐº, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ° -z Ñ�Ñ‚ÐµÐº Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�"
+
+#: elflink.c:7487
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack (because it has an executable .note.GNU-stack section)"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð²Ð¼Ð¸ÐºÐ°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° (Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .note.GNU-stack)"
+
+#: elflink.c:7493
+#, c-format
+msgid "warning: %s: requires executable stack (because the .note.GNU-stack section is executable)"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ° (Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .note.GNU-stack Ñ” Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¼)"
+
+#: elflink.c:7501
+#, c-format
+msgid "error: %s: is triggering the generation of an executable stack because it does not have a .note.GNU-stack section"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %s Ð²Ð¼Ð¸ÐºÐ°Ñ” Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ñ‚ÐµÐºÐ°, Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ note.GNU-stack"
+
+#: elflink.c:7507
+#, c-format
+msgid "warning: %s: missing .note.GNU-stack section implies executable stack"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %s: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .note.GNU-stack Ð½ÐµÑ�Ð²Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð°Ñ” Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ñ–Ñ�Ñ‚ÑŒ Ñ�Ñ‚ÐµÐºÐ°"
+
+#: elflink.c:7510
+msgid "NOTE: This behaviour is deprecated and will be removed in a future version of the linker"
+msgstr "Ð—Ð�Ð£Ð’Ð�Ð–Ð•Ð�Ð�Ð¯: Ñ†Ñ� Ð¿Ð¾Ð²ÐµÐ´Ñ–Ð½ÐºÐ° Ð²Ð²Ð°Ð¶Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¾ÑŽ, Ñ—Ñ— Ð±ÑƒÐ´Ðµ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¾ Ñƒ Ð½Ð°Ñ�Ñ‚ÑƒÐ¿Ð½Ñ–Ð¹ Ð²ÐµÑ€Ñ�Ñ–Ñ— ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ°"
+
+#: elflink.c:7664
 #, c-format
 msgid "%pB: .preinit_array section is not allowed in DSO"
 msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .preinit_array Ñƒ DSO"
 
-#: elflink.c:8359
+#: elflink.c:9284
 #, c-format
 msgid "undefined %s reference in complex symbol: %s"
 msgstr "Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ðµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ�, %s, Ñƒ Ñ�ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð¼Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–: %s"
 
-#: elflink.c:8514
+#: elflink.c:9447 elflink.c:9455
+msgid "division by zero"
+msgstr "Ð´Ñ–Ð»ÐµÐ½Ð½Ñ� Ð½Ð° Ð½ÑƒÐ»ÑŒ"
+
+#: elflink.c:9469
 #, 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:9805
 #, 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:9808
 #, 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:10059 elflink.c:10077 elflink.c:10116 elflink.c:10134
 #, 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:10093 elflink.c:10150
 #, c-format
 msgid "%pB: unable to sort relocs - they are of an unknown size"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: Ñ—Ñ…Ð½Ñ– Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ–"
 
-#: elflink.c:9234
+#: elflink.c:10202
 msgid "not enough memory to sort relocations"
 msgstr "Ð½ÐµÐ´Ð¾Ñ�Ñ‚Ð°Ñ‚Ð½ÑŒÐ¾ Ð¿Ð°Ð¼â€™Ñ�Ñ‚Ñ– Ð´Ð»Ñ� Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ"
 
-#: elflink.c:9502
+#: elflink.c:10536
 #, c-format
 msgid "%pB: too many sections: %d (>= %d)"
 msgstr "%pB: Ð·Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²: %d (>= %d)"
 
-#: elflink.c:9782
+#: elflink.c:10812
 #, c-format
 msgid "%pB: internal symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO"
 
-#: elflink.c:9785
+#: elflink.c:10815
 #, c-format
 msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO"
 
-#: elflink.c:9788
+#: elflink.c:10818
 #, c-format
 msgid "%pB: local symbol `%s' in %pB is referenced by DSO"
 msgstr "%pB: Ð½Ð° Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ñƒ %pB Ñ–Ñ�Ð½ÑƒÑ” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð· DSO"
 
-#: elflink.c:9874
+#: elflink.c:10911
 #, c-format
 msgid "%pB: could not find output section %pA for input section %pA"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ñ� Ð´Ð°Ð½Ð¸Ñ… %pA"
 
-#: elflink.c:10028
+#: elflink.c:11069
 #, c-format
 msgid "%pB: protected symbol `%s' isn't defined"
 msgstr "%pB: Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elflink.c:10031
+#: elflink.c:11072
 #, c-format
 msgid "%pB: internal symbol `%s' isn't defined"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elflink.c:10034
+#: elflink.c:11075
 #, c-format
 msgid "%pB: hidden symbol `%s' isn't defined"
 msgstr "%pB: Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: elflink.c:10066
+#: elflink.c:11107
 #, c-format
 msgid "%pB: no symbol version section for versioned symbol `%s'"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ Â«%sÂ»"
 
-#: elflink.c:10679
-#, c-format
-msgid "error: %pB: size of section %pA is not multiple of address size"
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð¸"
-
-#: elflink.c:10724
+#: elflink.c:11649
 #, c-format
-msgid "error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a non-existent global symbol"
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%#<PRIx64>) Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA, Ñ�ÐºÐµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”"
+msgid "error: %pB: unable to create group section symbol"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿"
 
-#: elflink.c:11484
+#: elflink.c:11798
 #, c-format
-msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
-msgstr "%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸"
+msgid "error: %pB contains a reloc (%#<PRIx64>) for section '%pA' that references a non-existent global symbol"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%#<PRIx64>) Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ», Ñ�ÐºÐµ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», Ñ�ÐºÐ¾Ð³Ð¾ Ð½Ðµ Ñ–Ñ�Ð½ÑƒÑ”"
 
-#: elflink.c:11490
+#: elflink.c:12264
 #, c-format
-msgid "%pA has both ordered and unordered sections"
-msgstr "%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸"
+msgid "error: %pB: size of section %pA is not multiple of address size"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pA Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elflink.c:11592
+#: elflink.c:12544
 #, c-format
 msgid "%pB: no symbol found for import library"
 msgstr "%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð´Ð»Ñ� Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elflink.c:12225
+#: elflink.c:13150
+msgid "%P: %pB: failed to finish relative relocations\n"
+msgstr "%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚Ð¸ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
+
+#: elflink.c:13227
 #, c-format
 msgid "%pB: file class %s incompatible with %s"
 msgstr "%pB: ÐºÐ»Ð°Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² %s Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· %s"
 
-#: elflink.c:12442
+#: elflink.c:13449
 #, c-format
 msgid "%pB: failed to generate import library"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÑƒ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: elflink.c:12561
+#: elflink.c:13610
 #, c-format
 msgid "warning: %s section has zero size"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼"
 
-#: elflink.c:12609
+#: elflink.c:13658
 #, c-format
 msgid "warning: section '%s' is being made into a note"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð¾ Ð½Ð° Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÑƒ"
 
-#: elflink.c:12701
+#: elflink.c:13752
 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:13755
+msgid "%P: warning: creating DT_TEXTREL in a shared object\n"
 msgstr "%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�\n"
 
-#: elflink.c:12829
+#: elflink.c:13758
+msgid "%P: warning: creating DT_TEXTREL in a PDE\n"
+msgstr "%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ PDE\n"
+
+#: elflink.c:13761
+msgid "%P: warning: creating DT_TEXTREL in a PIE\n"
+msgstr "%P: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑ”Ð¼Ð¾ DT_TEXTREL Ñƒ PIE\n"
+
+#: elflink.c:13890
 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:14312
+msgid "%P: %pB(%pA): error: need linked-to section for --gc-sections\n"
+msgstr "%P: %pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� --gc-sections Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ Ð¿Ñ€Ð¸Ñ”Ð´Ð½Ð°Ð½Ð¸Ð¹ (linked-to) Ñ€Ð¾Ð·Ð´Ñ–Ð»\n"
 
-#: elflink.c:13668
+#: elflink.c:14793
 #, c-format
 msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT"
 msgstr "%pB: %pA+%#<PRIx64>: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð»Ñ� INHERIT"
 
-#: elflink.c:13844
+#: elflink.c:14834
+#, c-format
+msgid "%pB: section '%pA': corrupt VTENTRY entry"
+msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ»: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� VTENTRY"
+
+#: elflink.c:14977
 #, c-format
 msgid "unrecognized INPUT_SECTION_FLAG %s\n"
 msgstr "Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ INPUT_SECTION_FLAG, %s\n"
 
-#: elfxx-mips.c:1450
+#: elflink.c:15758
+#, c-format
+msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
+msgstr "%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»\n"
+
+#: elflink.c:15847
+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:478
+#, c-format
+msgid "%pB: warning: Weak TLS is implementation defined and may not work as expected"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð»Ð°Ð±ÐºÐ¸Ñ… TLS Ð·Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð²Ñ–Ð´ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Ñ– Ð¼Ð¾Ð¶Ðµ Ð½Ðµ Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ñ‚Ð¸ Ñ‚Ð°Ðº, Ñ�Ðº Ð²Ð¸ Ð½Ð° Ñ‚Ðµ Ñ�Ð¿Ð¾Ð´Ñ–Ð²Ð°Ñ”Ñ‚ÐµÑ�Ñ�"
+
+#: elfxx-aarch64.c:786
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "%XÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ BTI.\n"
+
+#: elfxx-aarch64.c:788
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with BTI requirements.\n"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ BTI.\n"
+
+#: elfxx-aarch64.c:798
+#, c-format
+msgid "%Xerror: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "%XÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ GCS.\n"
+
+#: elfxx-aarch64.c:800
+#, c-format
+msgid "warning: found a total of %d inputs incompatible with GCS requirements.\n"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ GCS.\n"
+
+#: elfxx-aarch64.c:810
+#, c-format
+msgid "%Xerror: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "%XÐ¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð², Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ GCS.\n"
+
+#: elfxx-aarch64.c:812
+#, c-format
+msgid "warning: found a total of %d dynamically-linked objects incompatible with GCS requirements.\n"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼ Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ %d Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾ Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð², Ñ�ÐºÑ– Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ–Ð· Ð²Ð¸Ð¼Ð¾Ð³Ð°Ð¼Ð¸ GCS.\n"
+
+#: elfxx-aarch64.c:971
+#, c-format
+msgid "error: %pB: <corrupt AArch64 used size: 0x%x>"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾Ð³Ð¾ AArch64: 0x%x>"
+
+#: elfxx-aarch64.c:1115
+#, c-format
+msgid "%pB: warning: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ BTI Ð´Ð»Ñ� -z force-bti, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹.\n"
+
+#: elfxx-aarch64.c:1117
+#, c-format
+msgid "%X%pB: error: BTI is required by -z force-bti, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ BTI Ð´Ð»Ñ� -z force-bti, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹.\n"
+
+#: elfxx-aarch64.c:1149
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð´Ð»Ñ� -z gcs Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ GCS, Ð°Ð»Ðµ Ñƒ Ñ†Ñ–Ð¹ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ñ–Ð¹ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹. Ð”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð¼Ð¾Ð¶Ðµ Ð²Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¸ GCS Ð°Ð±Ð¾ Ð²Ñ–Ð´Ð¼Ð¾Ð²Ð¸Ñ‚Ð¸Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ, Ñ�ÐºÑ‰Ð¾ Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ GCS ÑƒÑ�Ñ– Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ñ— Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸.\n"
+
+#: elfxx-aarch64.c:1153
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this shared library lacks the necessary property note. The dynamic loader might not enable GCS or refuse to load the program unless all the shared library dependencies have the GCS marking.\n"
+msgstr "%X%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð»Ñ� -z gcs Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±ÐµÐ½ GCS, Ð°Ð»Ðµ Ñƒ Ñ†Ñ–Ð¹ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ñ–Ð¹ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÑ†Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹. Ð”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ð¼Ð¾Ð¶Ðµ Ð²Ð¸Ð¼ÐºÐ½ÑƒÑ‚Ð¸ GCS Ð°Ð±Ð¾ Ð²Ñ–Ð´Ð¼Ð¾Ð²Ð¸Ñ‚Ð¸Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ñƒ, Ñ�ÐºÑ‰Ð¾ Ð½Ðµ Ð±ÑƒÐ´Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼ Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ GCS ÑƒÑ�Ñ– Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾Ñ�Ñ‚Ñ– Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ñ— Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸.\n"
+
+#: elfxx-aarch64.c:1159
+#, c-format
+msgid "%pB: warning: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ GCS Ð´Ð»Ñ� -z gcs, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹.\n"
+
+#: elfxx-aarch64.c:1161
+#, c-format
+msgid "%X%pB: error: GCS is required by -z gcs, but this input object file lacks the necessary property note.\n"
+msgstr "%X%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ GCS Ð´Ð»Ñ� -z gcs, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð² Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ñ— Ð½Ð¾Ñ‚Ð°Ñ‚ÐºÐ¸ Ñ‰Ð¾Ð´Ð¾ Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹.\n"
+
+#: elfxx-loongarch.c:1911
+#, c-format
+msgid "%pB: unsupported relocation type %s"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
+
+#: elfxx-loongarch.c:1939
+#, c-format
+msgid "%pB: unsupported bfd relocation type %#x"
+msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ bfd Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %#x"
+
+#: elfxx-loongarch.c:2013
+#, c-format
+msgid "%pB: relocation %s right shift %d error 0x%lx"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s, Ð·Ñ�ÑƒÐ² Ð¿Ñ€Ð°Ð²Ð¾Ñ€ÑƒÑ‡ %d, Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° 0x%lx"
+
+#: elfxx-loongarch.c:2032
+#, c-format
+msgid "%pB: relocation %s overflow 0x%lx"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s 0x%lx"
+
+#: elfxx-mips.c:1534
 msgid "static procedure (no name)"
 msgstr "Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð° Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð° (Ð±ÐµÐ· Ð½Ð°Ð·Ð²Ð¸)"
 
-#: elfxx-mips.c:5718
+#: elfxx-mips.c:5895
 msgid "MIPS16 and microMIPS functions cannot call each other"
 msgstr "Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ— MIPS16 Ñ– microMIPS Ð½Ðµ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ñ‚Ð¸ Ð¾Ð´Ð½Ð° Ð¾Ð´Ð½Ñƒ"
 
-#: elfxx-mips.c:6485
+#: elfxx-mips.c:6665
 msgid "%X%H: unsupported JALX to the same ISA mode\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ JALX Ð´Ð¾ Ñ‚Ð¾Ð³Ð¾ Ñ�Ð°Ð¼Ð¾Ð³Ð¾ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ ISA\n"
 
-#: elfxx-mips.c:6518
+#: elfxx-mips.c:6698
 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:6743
 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:6755
 msgid "%X%H: unsupported branch between ISA modes\n"
 msgstr "%X%H: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð¼Ñ–Ð¶ Ñ€ÐµÐ¶Ð¸Ð¼Ð°Ð¼Ð¸ ISA\n"
 
-#: elfxx-mips.c:7223
+#: elfxx-mips.c:7401
 #, 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:7445
 #, 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:7681
+#, c-format
+msgid "%pB: warning: truncated `%s' option"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¸Ð¹ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ Â«%sÂ»"
+
+#: elfxx-mips.c:8533 elfxx-mips.c:8659
 #, c-format
 msgid "%pB: warning: cannot determine the target function for stub section `%s'"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°, Â«%sÂ»"
 
-#: elfxx-mips.c:8558
+#: elfxx-mips.c:8791
 #, c-format
 msgid "%pB: malformed reloc detected for section %s"
 msgstr "%pB: Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÑƒ Ñƒ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ– Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ�"
 
-#: elfxx-mips.c:8658
+#: elfxx-mips.c:8891
 #, c-format
 msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� GOT Ñƒ %#<PRIx64> Ñ” Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¼ Ñƒ Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ñ… Ñ„Ð°Ð¹Ð»Ð°Ñ…"
 
-#: elfxx-mips.c:8796
+#: elfxx-mips.c:9031
 #, c-format
 msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� CALL16 Ñƒ %#<PRIx64> Ð½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: elfxx-mips.c:9086
+#: elfxx-mips.c:9334
 #, 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:9460
+#, c-format
+msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported"
+msgstr "Ð¡Ð¸Ð¼Ð²Ð¾Ð» IFUNC %s Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² â€” Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ IFUNCS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#: elfxx-mips.c:9463
+#, c-format
+msgid "non-dynamic symbol %s in dynamic symbol table"
+msgstr "Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» %s Ñƒ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²"
+
+#: elfxx-mips.c:9683
 #, c-format
 msgid "non-dynamic relocations refer to dynamic symbol %s"
 msgstr "Ð½ÐµÐ´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ�Ð¸Ð»Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð½Ð° Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð», %s"
 
-#: elfxx-mips.c:10350
+#: elfxx-mips.c:10606
 #, 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
-msgid "small-data section exceeds 64KB; lower small-data size limit (see option -G)"
-msgstr "Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” 64 ÐºÐ‘; Ð½Ð¸Ð¶Ñ‡Ð¸Ð¹ Ð·Ð° Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (Ð´Ð¸Ð². Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)"
+#: elfxx-mips.c:10748
+msgid "small-data section too large; lower small-data size limit (see option -G)"
+msgstr "Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼; Ð·Ñ€Ð¾Ð±Ñ–Ñ‚ÑŒ Ð½Ð¸Ð¶Ñ‡Ð¸Ð¼ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð¼Ð°Ð»Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (Ð´Ð¸Ð². Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -G)"
 
-#: elfxx-mips.c:10509
+#: elfxx-mips.c:10767
 msgid "cannot convert a jump to JALX for a non-word-aligned address"
 msgstr "Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð½Ð° JALX Ð´Ð»Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸, Ñ�ÐºÑƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elfxx-mips.c:10512
+#: elfxx-mips.c:10770
 msgid "jump to a non-word-aligned address"
 msgstr "Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ�Ð»Ð¾Ð²Ð¾Ð¼ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elfxx-mips.c:10513
+#: elfxx-mips.c:10771
 msgid "jump to a non-instruction-aligned address"
 msgstr "Ð¿ÐµÑ€ÐµÑ…Ñ–Ð´ Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elfxx-mips.c:10516
+#: elfxx-mips.c:10774
 msgid "cannot convert a branch to JALX for a non-word-aligned address"
 msgstr "Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð½Ð° JALX Ð´Ð»Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸, Ñ�ÐºÑƒ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ�Ð»Ð¾Ð²Ð°"
 
-#: elfxx-mips.c:10518
+#: elfxx-mips.c:10776
 msgid "branch to a non-instruction-aligned address"
 msgstr "Ñ€Ð¾Ð·Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ� Ð´Ð¾ Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð·Ð° Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ”ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elfxx-mips.c:10520
+#: elfxx-mips.c:10778
 msgid "PC-relative load from unaligned address"
 msgstr "Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾ PC Ð· Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾Ñ— Ð°Ð´Ñ€ÐµÑ�Ð¸"
 
-#: elfxx-mips.c:10798
+#: elfxx-mips.c:11078
 #, 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:11193 elfxx-mips.c:11786
 #, 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:11758
 #, 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:13503 reloc.c:8524
+#, c-format
+msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n"
+msgstr "%X%P: %pB(%pA): Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ð·Ñ�ÑƒÐ²Ñƒ %V Ð½Ðµ Ð¼Ð°Ñ” Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�\n"
+
+#: elfxx-mips.c:14814
 #, c-format
 msgid "%pB: unknown architecture %s"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€Ð° %s"
 
-#: elfxx-mips.c:14931
+#: elfxx-mips.c:15342
 #, c-format
 msgid "%pB: illegal section name `%pA'"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Â«%pAÂ»"
 
-#: elfxx-mips.c:15208
+#: elfxx-mips.c:15620
 #, c-format
 msgid "%pB: warning: linking abicalls files with non-abicalls files"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ„Ð°Ð¹Ð»Ñ–Ð² abicalls Ð· Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ð±ÐµÐ· abicalls"
 
-#: elfxx-mips.c:15225
+#: elfxx-mips.c:15637
 #, 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:15669 elfxx-mips.c:15735 elfxx-mips.c:15750
 #, c-format
 msgid "%pB: linking %s module with previous %s modules"
 msgstr "%pB: ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÑ”Ð¼Ð¾ Ð¼Ð¾Ð´ÑƒÐ»ÑŒ %s Ð· Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ–Ð¼Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ %s"
 
-#: elfxx-mips.c:15281
+#: elfxx-mips.c:15693
 #, 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:15718
 #, 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:15852
 #, 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:15858
 #, 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:15864
 #, 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:15878
 #, 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:15897
 #, 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:15909
 #, 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:15918
 #, 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:15980
 #, c-format
 msgid "%pB: endianness incompatible with that of the selected emulation"
 msgstr "%pB: Ð¿Ð¾Ñ€Ñ�Ð´Ð¾Ðº Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾Ñ— ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—"
 
-#: elfxx-mips.c:15582
+#: elfxx-mips.c:15994
 #, c-format
 msgid "%pB: ABI is incompatible with that of the selected emulation"
 msgstr "%pB: ABI Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ð· ABI Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾Ñ— ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—"
 
-#: elfxx-mips.c:15634
+#: elfxx-mips.c:16047
 #, 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:16052
 #, 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:16056
 #, 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:16063
 #, 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:16067
 #, 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:16258
 msgid "-mips32r2 -mfp64 (12 callee-saved)"
 msgstr "-mips32r2 -mfp64 (12 Ð±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð¸Ñ… Ð´Ð»Ñ� Ð²Ð¸ÐºÐ»Ð¸ÐºÑ–Ð² Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²)"
 
-#: elfxx-mips.c:15905 elfxx-mips.c:15916
+#: elfxx-mips.c:16320 elfxx-mips.c:16331
 msgid "None"
 msgstr "Ð�ÐµÐ¼Ð°Ñ”"
 
-#: elfxx-mips.c:15907 elfxx-mips.c:15976
+#: elfxx-mips.c:16322 elfxx-mips.c:16391
 msgid "Unknown"
 msgstr "Ð�ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹"
 
-#: elfxx-mips.c:15987
+#: elfxx-mips.c:16402
 #, c-format
 msgid "Hard or soft float\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ð°Ð±Ð¾ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ°\n"
 
-#: elfxx-mips.c:15990
+#: elfxx-mips.c:16405
 #, c-format
 msgid "Hard float (double precision)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð° Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŒ)\n"
 
-#: elfxx-mips.c:15993
+#: elfxx-mips.c:16408
 #, c-format
 msgid "Hard float (single precision)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (Ð¾Ð´Ð¸Ð½Ð°Ñ€Ð½Ð° Ñ‚Ð¾Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŒ)\n"
 
-#: elfxx-mips.c:15996
+#: elfxx-mips.c:16411
 #, c-format
 msgid "Soft float\n"
 msgstr "ÐŸÑ€Ð¾Ð³Ñ€Ð°Ð¼Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ°\n"
 
-#: elfxx-mips.c:15999
+#: elfxx-mips.c:16414
 #, 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:16417
 #, c-format
 msgid "Hard float (32-bit CPU, Any FPU)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, Ð±ÑƒÐ´ÑŒ-Ñ�ÐºÐ¸Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16005
+#: elfxx-mips.c:16420
 #, c-format
 msgid "Hard float (32-bit CPU, 64-bit FPU)\n"
 msgstr "Ð�Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð° Ñ€ÑƒÑ…Ð¾Ð¼Ð° ÐºÑ€Ð°Ð¿ÐºÐ° (32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€, 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ FPU)\n"
 
-#: elfxx-mips.c:16008
+#: elfxx-mips.c:16423
 #, 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:16455
 #, c-format
 msgid " [abi=O32]"
 msgstr " [abi=O32]"
 
-#: elfxx-mips.c:16042
+#: elfxx-mips.c:16457
 #, c-format
 msgid " [abi=O64]"
 msgstr " [abi=O64]"
 
-#: elfxx-mips.c:16044
+#: elfxx-mips.c:16459
 #, c-format
 msgid " [abi=EABI32]"
 msgstr " [abi=EABI32]"
 
-#: elfxx-mips.c:16046
+#: elfxx-mips.c:16461
 #, c-format
 msgid " [abi=EABI64]"
 msgstr " [abi=EABI64]"
 
-#: elfxx-mips.c:16048
+#: elfxx-mips.c:16463
 #, c-format
 msgid " [abi unknown]"
 msgstr " [Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ abi]"
 
-#: elfxx-mips.c:16050
+#: elfxx-mips.c:16465
 #, c-format
 msgid " [abi=N32]"
 msgstr " [abi=N32]"
 
-#: elfxx-mips.c:16052
+#: elfxx-mips.c:16467
 #, c-format
 msgid " [abi=64]"
 msgstr " [abi=64]"
 
-#: elfxx-mips.c:16054
+#: elfxx-mips.c:16469
 #, c-format
 msgid " [no abi set]"
 msgstr " [Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ abi]"
 
-#: elfxx-mips.c:16079
+#: elfxx-mips.c:16494
 #, c-format
 msgid " [unknown ISA]"
 msgstr " [Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ ISA]"
 
-#: elfxx-mips.c:16099
+#: elfxx-mips.c:16514
 #, 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:1950
+#, c-format
+msgid "x ISA extension `%s' must be set with the versions"
+msgstr "Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� x ISA Â«%sÂ» Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñ–Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ�Ð¼Ð¸"
+
+#: elfxx-riscv.c:1956
+#, c-format
+msgid "cannot find default versions of the ISA extension `%s'"
+msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ‚Ð¸Ð¿Ð¾Ð²Ñ– Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%sÂ»"
+
+#: elfxx-riscv.c:2063
+#, c-format
+msgid "%s: first ISA extension must be `e', `i' or `g'"
+msgstr "%s: Ð¿ÐµÑ€ÑˆÐ¸Ð¼ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ ISA Ð¼Ð°Ñ” Ð±ÑƒÑ‚Ð¸ Â«eÂ», Â«iÂ» Ð°Ð±Ð¾ Â«gÂ»"
+
+#: elfxx-riscv.c:2087
+#, c-format
+msgid "%s: unknown standard ISA extension or prefix class `%c'"
+msgstr "%s: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Ð°Ð±Ð¾ ÐºÐ»Ð°Ñ� Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð° Â«%cÂ»"
+
+#: elfxx-riscv.c:2123
+#, c-format
+msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p"
+msgstr "%s: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Ð· Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð¾Ð¼ ISA Â«%sÂ» Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° <Ñ‡Ð¸Ñ�Ð»Ð¾>p"
+
+#: elfxx-riscv.c:2147
+#, c-format
+msgid "%s: unknown prefixed ISA extension `%s'"
+msgstr "%s: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%sÂ»"
+
+#: elfxx-riscv.c:2171
+#, c-format
+msgid "%s: prefixed ISA extension must separate with _"
+msgstr "%s: Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Ñ�Ð»Ñ–Ð´ Ð²Ñ–Ð´Ð¾ÐºÑ€ÐµÐ¼Ð»ÑŽÐ²Ð°Ñ‚Ð¸ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ _"
+
+#: elfxx-riscv.c:2211
+#, c-format
+msgid "rv%de does not support the `h' extension"
+msgstr "Ñƒ rv%de Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«hÂ»"
+
+#: elfxx-riscv.c:2219
+#, c-format
+msgid "rv%d does not support the `q' extension"
+msgstr "Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«qÂ»"
+
+#: elfxx-riscv.c:2226
+msgid "zcmp' is incompatible with `d' and `c', or `zcd' extension"
+msgstr "zcmp Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ñ–Ð· Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ Â«dÂ» Ñ– Â«cÂ» Ð°Ð±Ð¾ Â«zcdÂ»"
+
+#: elfxx-riscv.c:2233
+#, c-format
+msgid "rv%d does not support the `zcf' extension"
+msgstr "Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«zcfÂ»"
+
+#: elfxx-riscv.c:2240
+msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension"
+msgstr "Â«zfinxÂ» ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ Â«f/d/q/zfh/zfhminÂ»"
+
+#: elfxx-riscv.c:2247
+msgid "`xtheadvector' is conflict with the `v/zve32x' extension"
+msgstr "Â«xtheadvectorÂ» ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ Â«v/zve32xÂ»"
+
+#: elfxx-riscv.c:2256
+msgid "`zclsd' is conflict with the `c+f'/ `zcf' extension"
+msgstr "Â«zclsdÂ» ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑ” Ñ–Ð· Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼ Â«c+fÂ»/ Â«zcfÂ»"
+
+#: elfxx-riscv.c:2261
+#, c-format
+msgid "rv%d does not support the `ssnpm' extension"
+msgstr "Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«ssnpmÂ»"
+
+#: elfxx-riscv.c:2267
+#, c-format
+msgid "rv%d does not support the `smnpm' extension"
+msgstr "Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«smnpmÂ»"
+
+#: elfxx-riscv.c:2273
+#, c-format
+msgid "rv%d does not support the `smmpm' extension"
+msgstr "Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«smmpmÂ»"
+
+#: elfxx-riscv.c:2279
+#, c-format
+msgid "rv%d does not support the `sspm' extension"
+msgstr "Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«sspmÂ»"
+
+#: elfxx-riscv.c:2285
+#, c-format
+msgid "rv%d does not support the `supm' extension"
+msgstr "Ñƒ rv%d Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«supmÂ»"
+
+#: elfxx-riscv.c:2307
+msgid "zvl*b extensions need to enable either `v' or `zve' extension"
+msgstr "Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� zvl*b Ð¼Ð°ÑŽÑ‚ÑŒ Ð²Ð¼Ð¸ÐºÐ°Ñ‚Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«vÂ» Ð°Ð±Ð¾ Â«zveÂ»"
+
+#: elfxx-riscv.c:2364
+msgid "Warning: should use \"_\" to contact Profiles with other extensions"
+msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Â«_Â» Ð´Ð»Ñ� Ð·Ð²'Ñ�Ð·ÐºÑƒ ÐŸÑ€Ð¾Ñ„Ñ–Ð»Ñ–Ð² Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ�Ð¼Ð¸"
+
+#: elfxx-riscv.c:2405
+#, c-format
+msgid "%s: ISA string cannot contain uppercase letters"
+msgstr "%s: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð»Ñ–Ñ‚ÐµÑ€ Ñƒ Ð²ÐµÑ€Ñ…Ð½ÑŒÐ¾Ð¼Ñƒ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–"
+
+#: elfxx-riscv.c:2439
+#, c-format
+msgid "%s: ISA string must begin with rv32, rv64 or Profiles"
+msgstr "%s: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð¼Ð°Ñ” Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ‚Ð¸Ñ�Ñ� Ð· rv32, rv64 Ð°Ð±Ð¾ Profiles"
+
+#: elfxx-riscv.c:2629
+msgid "internal: "
+msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–: "
+
+#: elfxx-riscv.c:2683
+#, c-format
+msgid "%sinvalid ISA extension ends with <number>p in %s `%s'"
+msgstr "%sÐ½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½Ð° <Ñ‡Ð¸Ñ�Ð»Ð¾>p Ñƒ %s Â«%sÂ»"
+
+#: elfxx-riscv.c:2706
+#, c-format
+msgid "%sunknown ISA extension `%s' in %s `%s'"
+msgstr "%sÐ½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%sÂ» Ñƒ %s Â«%sÂ»"
+
+#: elfxx-riscv.c:2717
+#, c-format
+msgid "%sdeprecated - extension `%s' in %s `%s'"
+msgstr "%sÐ·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¾ - Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ» Ñƒ %s Â«%sÂ»"
+
+#: elfxx-riscv.c:2727
+#, c-format
+msgid "%scannot + base extension `%s' in %s `%s'"
+msgstr "%sÐ½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ + Ð´Ð»Ñ� Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ» Ñƒ %s Â«%sÂ»"
+
+#: elfxx-riscv.c:3059 elfxx-riscv.c:3343
+msgid "internal: unreachable INSN_CLASS_*"
+msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ�: Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¸Ð¹ INSN_CLASS_*"
+
+#: elfxx-riscv.c:3093
+msgid "zicfiss' and `zcmop"
+msgstr "zicfissÂ» Ñ– Â«zcmop"
+
+#: elfxx-riscv.c:3106
+msgid "zihintntl' and `c', or `zihintntl' and `zca"
+msgstr "zihintntlÂ» Ñ– Â«cÂ» Ð°Ð±Ð¾ Â«zihintntlÂ» Ñ– Â«zca"
+
+#: elfxx-riscv.c:3111 elfxx-riscv.c:3137
+msgid "c' or `zca"
+msgstr "cÂ» Ð°Ð±Ð¾ Â«zca"
+
+#: elfxx-riscv.c:3119
+msgid "m' or `zmmul"
+msgstr "m' Ð°Ð±Ð¾ `zmmul"
+
+#: elfxx-riscv.c:3139
+msgid "f' and `c', or `zcf"
+msgstr "fÂ» Ñ– Â«cÂ» Ð°Ð±Ð¾ Â«zcf"
+
+#: elfxx-riscv.c:3141
+msgid "d' and `c', or `zcd"
+msgstr "dÂ» Ñ– Â«cÂ» Ð°Ð±Ð¾ Â«zcd"
+
+#: elfxx-riscv.c:3143
+msgid "f' or `zfinx"
+msgstr "fÂ» Ð°Ð±Ð¾ Â«zfinx"
+
+#: elfxx-riscv.c:3145
+msgid "d' or `zdinx"
+msgstr "dÂ» Ð°Ð±Ð¾ Â«zdinx"
+
+#: elfxx-riscv.c:3147
+msgid "q' or `zqinx"
+msgstr "qÂ» Ð°Ð±Ð¾ Â«zqinx"
+
+#: elfxx-riscv.c:3149
+msgid "zfh' or `zhinx"
+msgstr "zfhÂ» Ð°Ð±Ð¾ Â«zhinx"
+
+#: elfxx-riscv.c:3153
+msgid "zfhmin' or `zhinxmin"
+msgstr "zfhminÂ» Ð°Ð±Ð¾ Â«zhinxmin"
+
+#: elfxx-riscv.c:3164
+msgid "zfhmin' and `d', or `zhinxmin' and `zdinx"
+msgstr "zfhminÂ» Ñ– Â«dÂ» Ð°Ð±Ð¾ Â«zhinxminÂ» Ñ– Â«zdinx"
+
+#: elfxx-riscv.c:3175
+msgid "zfhmin' and `q', or `zhinxmin' and `zqinx"
+msgstr "zfhminÂ» Ñ– Â«qÂ» Ð°Ð±Ð¾ Â«zhinxminÂ» Ñ– Â«zqinx"
+
+#: elfxx-riscv.c:3183
+msgid "d' and `zfa"
+msgstr "dÂ» Ñ– Â«zfa"
+
+#: elfxx-riscv.c:3191
+msgid "q' and `zfa"
+msgstr "qÂ» Ñ– Â«zfa"
+
+#: elfxx-riscv.c:3199
+msgid "zfh' and `zfa"
+msgstr "zfhÂ» Ñ– Â«zfa"
+
+#: elfxx-riscv.c:3209
+msgid "zfh' and `zfa', or `zvfh' and `zfa"
+msgstr "zfhÂ» Ñ– Â«zfaÂ» Ð°Ð±Ð¾ Â«zvfhÂ» Ñ– Â«zfa"
+
+#: elfxx-riscv.c:3214
+msgid "zfh' or `zvfh"
+msgstr "zfhÂ» Ð°Ð±Ð¾ Â«zvfh"
+
+#: elfxx-riscv.c:3230
+msgid "zbb' or `zbkb"
+msgstr "zbbÂ» Ð°Ð±Ð¾ Â«zbkb"
+
+#: elfxx-riscv.c:3232
+msgid "zbc' or `zbkc"
+msgstr "zbcÂ» Ð°Ð±Ð¾ Â«zbkc"
+
+#: elfxx-riscv.c:3240
+msgid "zknd' or `zkne"
+msgstr "zkndÂ» Ð°Ð±Ð¾ Â«zkne"
+
+#: elfxx-riscv.c:3246
+msgid "v' or `zve64x' or `zve32x"
+msgstr "vÂ», Ð°Ð±Ð¾ Â«zve64xÂ», Ð°Ð±Ð¾ Â«zve32x"
+
+#: elfxx-riscv.c:3248
+msgid "v' or `zve64d' or `zve64f' or `zve32f"
+msgstr "vÂ», Ð°Ð±Ð¾ Â«zve64dÂ», Ð°Ð±Ð¾ Â«zve64fÂ», Ð°Ð±Ð¾ Â«zve32f"
+
+#: elfxx-riscv.c:3250
+msgid "zvbb"
+msgstr "zvbb"
+
+#: elfxx-riscv.c:3252
+msgid "zvbc"
+msgstr "zvbc"
+
+#: elfxx-riscv.c:3258
+msgid "zvkb"
+msgstr "zvkb"
+
+#: elfxx-riscv.c:3260
+msgid "zvkg"
+msgstr "zvkg"
+
+#: elfxx-riscv.c:3262
+msgid "zvkned"
+msgstr "zvkned"
+
+#: elfxx-riscv.c:3264
+msgid "zvknha' or `zvknhb"
+msgstr "zvknhaÂ» Ð°Ð±Ð¾ Â«zvknhb"
+
+#: elfxx-riscv.c:3266
+msgid "zvksed"
+msgstr "zvksed"
+
+#: elfxx-riscv.c:3268
+msgid "zvksh"
+msgstr "zvksh"
+
+#: elfxx-riscv.c:3272
+msgid "zcb' and `zba"
+msgstr "zcbÂ» Ñ– Â«zba"
+
+#: elfxx-riscv.c:3274
+msgid "zcb' and `zbb"
+msgstr "zcbÂ» Ñ– Â«zbb"
+
+#: elfxx-riscv.c:3276
+msgid "zcb' and `zmmul', or `zcb' and `m"
+msgstr "zcbÂ» Ñ– Â«zmmulÂ» Ð°Ð±Ð¾ Â«zcbÂ» Ñ– Â«m"
+
+#: elfxx-riscv.c:3284
+msgid "smctr' or `ssctr"
+msgstr "smctrÂ» Ð°Ð±Ð¾ Â«ssctr"
+
+#: elfxx-riscv.c:3294
+msgid "h"
+msgstr "h"
+
+#: elfxx-riscv.c:3441
+msgid "%F%P: failed to create GNU property section\n"
+msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚ÐµÐ¹ GNU\n"
+
+#: elfxx-riscv.c:3485
+#, c-format
+msgid "error: %pB: <corrupt RISC-V used size: 0x%x>"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾Ð³Ð¾ RISC-V: 0x%x>"
+
+#: elfxx-sparc.c:3028 elfnn-aarch64.c:5768
 #, 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:534 elfxx-x86.c:3586
 #, c-format
-msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n"
-msgstr "%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ Ð¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ»\n"
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n"
+msgstr "%P: %pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ %pB\n"
 
 #: elfxx-x86.c:1027
+#, c-format
+msgid "%P: %pB: failed to allocate relative reloc record\n"
+msgstr "%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
+
+#: elfxx-x86.c:1388
+#, c-format
+msgid "%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ 64-Ð±Ñ–Ñ‚Ð¾Ð²Ñƒ ÐºÐ°Ñ€Ñ‚Ñƒ DT_RELR\n"
+
+#: elfxx-x86.c:1424
+#, c-format
+msgid "%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n"
+msgstr "%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ 32-Ð±Ñ–Ñ‚Ð¾Ð²Ñƒ ÐºÐ°Ñ€Ñ‚Ñƒ DT_RELR\n"
+
+#: elfxx-x86.c:1563
+#, c-format
+msgid "%P: %pB: failed to allocate memory for section `%pA'\n"
+msgstr "%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ð¿Ð°Ð¼'Ñ�Ñ‚Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%pAÂ»\n"
+
+#: elfxx-x86.c:1750
+#, c-format
+msgid "%P: %pB: size of compact relative reloc section is changed: new (%lu) != old (%lu)\n"
+msgstr "%P: %pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð¼Ñ–Ð½ÐµÐ½Ð¾: Ð½Ð¾Ð²Ð¸Ð¹ (%lu) != Ñ�Ñ‚Ð°Ñ€Ð¸Ð¹ (%lu)\n"
+
+#: elfxx-x86.c:1772
+#, c-format
+msgid "%P: %pB: failed to allocate compact relative reloc section\n"
+msgstr "%P: %pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» ÐºÐ¾Ð¼Ð¿Ð°ÐºÑ‚Ð½Ð¾Ð³Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
+
+#: elfxx-x86.c:2243
+#, c-format
+msgid "%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is disallowed\n"
+msgstr "%P: %pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð¾\n"
+
+#: elfxx-x86.c:2325
 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:3254
+msgid "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (Ð·Ñ�ÑƒÐ²: 0x%v, Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñ�Ñ‚Ñ–: 0x%v, Ð´Ð¾Ð´Ð°Ð½Ð¾Ðº: 0x%v) Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñƒ %pB\n"
+
+#: elfxx-x86.c:3260
+msgid "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n"
+msgstr "%pB: %s (Ð·Ñ�ÑƒÐ²: 0x%v, Ð²Ñ–Ð´Ð¾Ð¼Ð¾Ñ�Ñ‚Ñ–: 0x%v) Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ñƒ %pB\n"
+
+#: elfxx-x86.c:3296
+#, c-format
+msgid "%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' failed\n"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� TLS Ð· %s Ð´Ð¾ %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñƒ 0x%v Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%pAÂ» Ð·Ð°Ð·Ð½Ð°Ð»Ð¾ Ð½ÐµÐ²Ð´Ð°Ñ‡Ñ–\n"
+
+#: elfxx-x86.c:3305
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² ADD Ð°Ð±Ð¾ MOV\n"
+
+#: elfxx-x86.c:3313
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² ADD Ð°Ð±Ð¾ MOVRS\n"
+
+#: elfxx-x86.c:3321
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² ADD, SUB Ð°Ð±Ð¾ MOV\n"
+
+#: elfxx-x86.c:3329
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with %s register only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¾Ð¼Ñƒ CALL Ð·Ñ– Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð¾Ð¼ %s\n"
+
+#: elfxx-x86.c:3338
+#, c-format
+msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n"
+msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² LEA\n"
 
-#: elfxx-x86.c:2384
+#: elfxx-x86.c:3965
 #, 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:4178
+#, c-format
+msgid "%pB: x86 ISA needed: "
+msgstr "%pB: Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ðµ ISA x86: "
+
+#: elfxx-x86.c:4180
+#, c-format
+msgid "%pB: x86 ISA used: "
+msgstr "%pB: Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ðµ ISA x86: "
 
-#: elfxx-x86.c:2614
+#: elfxx-x86.c:4202
 #, c-format
-msgid "%F%pA: failed to align section\n"
-msgstr "%F%pA: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€\n"
+msgid "<unknown: %x>"
+msgstr "<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹: %x>"
+
+#: elfxx-x86.c:4338
+msgid "%P: failed to create %sn"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ %sn"
+
+#: elfxx-x86.c:4352
+msgid "%P: %pB: warning: missing %s\n"
+msgstr "%P: %pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ %s\n"
+
+#: elfxx-x86.c:4353
+msgid "%X%P: %pB: error: missing %s\n"
+msgstr "%X%P: %pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ %s\n"
+
+#: elfxx-x86.c:4459
+msgid "IBT and SHSTK properties"
+msgstr "Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ð¾Ñ�Ñ‚Ñ– IBT Ñ– SHSTK"
+
+#: elfxx-x86.c:4461
+msgid "IBT property"
+msgstr "Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ IBT"
+
+#: elfxx-x86.c:4463
+msgid "SHSTK property"
+msgstr "Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ SHSTK"
+
+#: elfxx-x86.c:4468
+msgid "LAM_U48 property"
+msgstr "Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ LAM_U48"
+
+#: elfxx-x86.c:4473
+msgid "LAM_U57 property"
+msgstr "Ð²Ð»Ð°Ñ�Ñ‚Ð¸Ð²Ñ–Ñ�Ñ‚ÑŒ LAM_U57"
+
+#: elfxx-x86.c:4651
+msgid "%P: failed to create VxWorks dynamic sections\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ VxWorks\n"
 
-#: elfxx-x86.c:2760
-msgid "%F%P: failed to create VxWorks dynamic sections\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ VxWorks\n"
-
-#: elfxx-x86.c:2769
-msgid "%F%P: failed to create GOT sections\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ GOT\n"
-
-#: elfxx-x86.c:2787
-msgid "%F%P: failed to create ifunc sections\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ ifunc\n"
-
-#: elfxx-x86.c:2828
-msgid "%F%P: failed to create GOT PLT section\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT GOT\n"
-
-#: elfxx-x86.c:2849
-msgid "%F%P: failed to create IBT-enabled PLT section\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT Ñ–Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ IBT\n"
-
-#: elfxx-x86.c:2864
-msgid "%F%P: failed to create BND PLT section\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT BND\n"
-
-#: elfxx-x86.c:2885
-msgid "%F%P: failed to create PLT .eh_frame section\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT\n"
-
-#: elfxx-x86.c:2898
-msgid "%F%P: failed to create GOT PLT .eh_frame section\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT GOT\n"
-
-#: elfxx-x86.c:2912
-msgid "%F%P: failed to create the second PLT .eh_frame section\n"
-msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT\n"
+#: elfxx-x86.c:4660
+msgid "%P: failed to create GOT sections\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ GOT\n"
+
+#: elfxx-x86.c:4678
+msgid "%P: failed to create ifunc sections\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ ifunc\n"
+
+#: elfxx-x86.c:4717
+msgid "%P: failed to create GOT PLT section\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT GOT\n"
+
+#: elfxx-x86.c:4734
+msgid "%P: failed to create IBT-enabled PLT section\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT Ñ–Ð· ÑƒÐ²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¸Ð¼ IBT\n"
+
+#: elfxx-x86.c:4752
+msgid "%P: failed to create PLT .eh_frame section\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT\n"
+
+#: elfxx-x86.c:4763
+msgid "%P: failed to create GOT PLT .eh_frame section\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT GOT\n"
+
+#: elfxx-x86.c:4775
+msgid "%P: failed to create the second PLT .eh_frame section\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .eh_frame PLT\n"
+
+#: elfxx-x86.c:4790
+msgid "%P: failed to create PLT .sframe section\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .sframe PLT\n"
+
+#: elfxx-x86.c:4806
+msgid "%P: failed to create second PLT .sframe section\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ð´Ñ€ÑƒÐ³Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .sframe PLT\n"
+
+#: elfxx-x86.c:4819
+msgid "%P: failed to create PLT GOT .sframe section\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» .sframe PLT GOT\n"
+
+#: elfxx-x86.c:4859
+msgid "%X%P: attempted static link of dynamic object `%pB'\n"
+msgstr "%X%P: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ Ð¾Ð±'Ñ”ÐºÑ‚Ð° Â«%pBÂ»\n"
 
 #: ihex.c:230
 #, c-format
@@ -5101,430 +6165,470 @@ 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:580
 #, c-format
 msgid "%pB: internal error in ihex_read_section"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ ihex_read_section"
 
-#: ihex.c:619
+#: ihex.c:613
 #, c-format
 msgid "%pB: bad section length in ihex_read_section"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ihex_read_section"
 
-#: ihex.c:793
+#: ihex.c:784
 #, 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:842
 #, c-format
 msgid "%pB: address %#<PRIx64> out of range for Intel Hex file"
 msgstr "%pB: Ð°Ð´Ñ€ÐµÑ�Ð° %#<PRIx64> Ð¿ÐµÑ€ÐµÐ±ÑƒÐ²Ð°Ñ” Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ ÑˆÑ–Ñ�Ñ‚Ð½Ð°Ð´Ñ†Ñ�Ñ‚ÐºÐ¾Ð²Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° Intel"
 
-#: libbfd.c:937
+#: libbfd.c:1260
 #, c-format
 msgid "%pB: unable to get decompressed section %pA"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA"
 
-#: libbfd.c:1101
-#, c-format
-msgid "Deprecated %s called at %s line %d in %s\n"
-msgstr "Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s Ñƒ %s, Ñ€Ñ�Ð´Ð¾Ðº %d Ñƒ %s\n"
-
-#: libbfd.c:1104
+#: libbfd.c:1272
 #, c-format
-msgid "Deprecated %s called\n"
-msgstr "Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s\n"
+msgid "%pB: mapped section %pA has non-NULL buffer"
+msgstr "%pB: Ð¿Ñ€Ð¸Ð²'Ñ�Ð·Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» %pA Ð¼Ð°Ñ” Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ð±ÑƒÑ„ÐµÑ€"
 
-#: linker.c:1697
+#: linker.c:1749
 #, c-format
 msgid "%pB: indirect symbol `%s' to `%s' is a loop"
 msgstr "%pB: Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð´Ð»Ñ� Â«%sÂ» Ñ” Ñ†Ð¸ÐºÐ»Ð¾Ð¼"
 
-#: linker.c:2567
+#: linker.c:1829
+msgid "%P: %pB: note: the message above does not take linker garbage collection into account\n"
+msgstr "%P: %pB: Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ�: Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ðµ Ð²Ð¸Ñ‰Ðµ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ� Ð½Ðµ Ð±ÐµÑ€Ðµ Ð´Ð¾ ÑƒÐ²Ð°Ð³Ð¸ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ñ�Ð¼Ñ–Ñ‚Ñ‚Ñ� Ð·Ð°Ñ�Ð¾Ð±Ð¾Ð¼ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
+
+#: linker.c:2663
 #, c-format
 msgid "attempt to do relocatable link with %s input and %s output"
 msgstr "Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð·Ð²â€™Ñ�Ð·ÐºÑƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð²Ñ…Ñ–Ð´Ð½Ð¸Ð¼ %s Ñ– Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ð¼ %s"
 
-#: linker.c:2853
+#: linker.c:2942
 #, c-format
 msgid "%pB: ignoring duplicate section `%pA'\n"
 msgstr "%pB: Ñ–Ð³Ð½Ð¾Ñ€ÑƒÑ”Ð¼Ð¾ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»\n"
 
-#: linker.c:2863 linker.c:2873
+#: linker.c:2952 linker.c:2962
 #, c-format
 msgid "%pB: duplicate section `%pA' has different size\n"
 msgstr "%pB: Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð¼Ð°Ñ” Ñ–Ð½ÑˆÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€\n"
 
-#: linker.c:2882 linker.c:2888
+#: linker.c:2976 linker.c:2984
 #, c-format
 msgid "%pB: could not read contents of section `%pA'\n"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»\n"
 
-#: linker.c:2893
+#: linker.c:2993
 #, c-format
 msgid "%pB: duplicate section `%pA' has different contents\n"
 msgstr "%pB: Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ» Ð¼Ð°Ñ” Ñ–Ð½ÑˆÐ¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚\n"
 
-#: linker.c:3407
+#: linker.c:3517
 #, c-format
 msgid "%pB: compiled for a big endian system and target is little endian"
 msgstr "%pB: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸ Ð· Ð¿Ñ€Ñ�Ð¼Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð², Ð° Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ñ” Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð° Ð·Ñ– Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¸Ð¼ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: linker.c:3410
+#: linker.c:3520
 #, 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:169 mach-o-arm.c:301
+msgid "malformed mach-o ARM reloc pair: reloc is first reloc"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð°Ñ€Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ mach-o ARM: reloc Ñ” Ð¿ÐµÑ€ÑˆÐ¸Ð¼ reloc"
+
+#: mach-o-arm.c:185
+#, c-format
+msgid "malformed mach-o ARM reloc pair: invalid length: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð°Ñ€Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:200
+#, c-format
+msgid "malformed mach-o ARM sectdiff reloc: invalid length: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:215
+#, c-format
+msgid "malformed mach-o ARM local sectdiff reloc: invalid length: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:230
+#, c-format
+msgid "malformed mach-o ARM half sectdiff reloc: invalid length: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð»Ð¾Ð²Ð¸Ð½Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� sectdiff mach-o ARM: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %d"
+
+#: mach-o-arm.c:262
+#, 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:332
+#, c-format
+msgid "malformed mach-o ARM reloc: unknown reloc type: %d"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� mach-o ARM: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�: %d"
+
+#: mach-o.c:642
 #, c-format
 msgid "<unknown mask flags>"
 msgstr "<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð¼Ð°Ñ�ÐºÑƒÐ²Ð°Ð½Ð½Ñ�>"
 
-#: mach-o.c:687
+#: mach-o.c:697
 msgid " (<unknown>)"
 msgstr " (<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾>)"
 
-#: mach-o.c:698
+#: mach-o.c:709
 #, c-format
 msgid " MACH-O header:\n"
 msgstr "Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº MACH-O:\n"
 
-#: mach-o.c:699
+#: mach-o.c:710
 #, c-format
 msgid "   magic:      %#lx\n"
 msgstr "  magic:       %#lx\n"
 
-#: mach-o.c:700
+#: mach-o.c:711
 #, c-format
 msgid "   cputype:    %#lx (%s)\n"
 msgstr " Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¾Ñ†. : %#lx (%s)\n"
 
-#: mach-o.c:702
+#: mach-o.c:713
 #, c-format
 msgid "   cpusubtype: %#lx%s\n"
 msgstr " Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¾Ñ†.: %#lx (%s)\n"
 
-#: mach-o.c:704
+#: mach-o.c:715
 #, c-format
 msgid "   filetype:   %#lx\n"
 msgstr " Ñ‚Ð¸Ð¿ Ñ„Ð°Ð¹Ð»Ð° : %#lx\n"
 
-#: mach-o.c:705
+#: mach-o.c:716
 #, c-format
 msgid "   ncmds:      %#lx\n"
 msgstr " ÐºÑ‚ÑŒ_ÐºÐ¾Ð¼Ð°Ð½Ð´: %#lx\n"
 
-#: mach-o.c:706
+#: mach-o.c:717
 #, c-format
 msgid "   sizeocmds:  %#lx\n"
 msgstr " Ñ€Ð¾Ð·Ð¼Ñ–Ñ€_ÐºÐ¼Ð´: %#lx\n"
 
-#: mach-o.c:707
+#: mach-o.c:718
 #, c-format
 msgid "   flags:      %#lx\n"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %lx\n"
 
-#: mach-o.c:708
+#: mach-o.c:719
 #, c-format
 msgid "   version:    %x\n"
 msgstr "  Ð²ÐµÑ€Ñ�Ñ–Ñ�:      %x\n"
 
 #. Urg - what has happened ?
-#: mach-o.c:743
+#: mach-o.c:754
 #, c-format
 msgid "incompatible cputypes in mach-o files: %ld vs %ld"
 msgstr "Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ñ– Ñ‚Ð¸Ð¿Ð¸ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² Ñƒ Ñ„Ð°Ð¹Ð»Ð°Ñ… mach-o: %ld Ñ– %ld"
 
-#: mach-o.c:912
+#: mach-o.c:923
 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols"
 msgstr "bfd_mach_o_canonicalize_symtab: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸"
 
-#: mach-o.c:2108
+#: mach-o.c:1515
+msgid "malformed mach-o reloc: section index is greater than the number of sections"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� mach-o: Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð²"
+
+#: mach-o.c:2157
 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:2605
 #, 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:2697
 #, c-format
 msgid "unable to allocate data for load command %#x"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ð´Ð°Ð½Ñ– Ð´Ð»Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� %#x"
 
-#: mach-o.c:2766
+#: mach-o.c:2802
 #, c-format
 msgid "unable to write unknown load command %#x"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¸Ñ�Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x"
 
-#: mach-o.c:2950
+#: mach-o.c:2986
 #, c-format
 msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%<PRIx64>) Ð½Ð¸Ð¶Ñ‡Ðµ Ð·Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº Ñ�ÐµÐ³Ð¼ÐµÐ½Ñ‚Ð° (%<PRIx64>)"
 
-#: mach-o.c:3092
+#: mach-o.c:3128
 #, c-format
 msgid "unable to layout unknown load command %#x"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ñ‚Ð¸ Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñƒ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x"
 
-#: mach-o.c:3628
+#: mach-o.c:3654
 #, 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"
+msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lx"
 
-#: mach-o.c:3671
+#: mach-o.c:3697
 #, 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"
+msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx"
+msgstr "bfd_mach_o_read_section_32: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: %#lx"
 
-#: mach-o.c:3722
+#: mach-o.c:3748
 #, 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:3767
 #, 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:3850
 #, 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:3869
 #, 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:5068
 #, c-format
 msgid "%pB: unknown load command %#x"
 msgstr "%pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�, %#x"
 
-#: mach-o.c:5122
+#: mach-o.c:5266
 #, 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:5391
 #, c-format
 msgid "unknown header byte-order value %#x"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ, %#x"
 
-#: merge.c:878
+#: merge.c:1126
 #, c-format
 msgid "%pB: access beyond end of merged section (%<PRId64>)"
 msgstr "%pB: Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿ Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%<PRId64>)"
 
-#: mmo.c:476
-#, c-format
-msgid "%pB: no core to allocate section name %s"
-msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð½Ð°Ð·Ð²Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
-
-#: mmo.c:541
+#: mmo.c:535
 #, c-format
 msgid "%pB: no core to allocate a symbol %d bytes long"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¾ÑŽ %d Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: mmo.c:955
+#: mmo.c:951
 #, c-format
 msgid "%pB: attempt to emit contents at non-multiple-of-4 address %#<PRIx64>"
 msgstr "%pB: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð½Ð°Ð´Ñ–Ñ�Ð»Ð°Ñ‚Ð¸ Ð´Ð°Ð½Ñ– Ð½Ð° Ð½ÐµÐºÑ€Ð°Ñ‚Ð½Ñƒ Ð´Ð¾ 4 Ð°Ð´Ñ€ÐµÑ�Ñƒ %#<PRIx64>"
 
-#: mmo.c:1252
+#: mmo.c:1246
 #, 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:1393
 #, 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:1409
+#, c-format
+msgid "%pB: symbol name exceeds given max length of %d"
+msgstr "%pB: Ð½Ð°Ð·Ð²Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð·Ð°Ð´Ð°Ð½Ñƒ Ð¼Ð°ÐºÑ�Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñƒ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ñƒ %d"
+
+#: mmo.c:1638
 #, c-format
 msgid "%pB: invalid mmo file: unsupported lopcode `%d'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» mmo: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� lopcode, Â«%dÂ»\n"
 
-#: mmo.c:1644
+#: mmo.c:1649
 #, 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:1693
 #, 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:1744
 #, 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:1793
 #, 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:1804
 #, 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:1829
 #, 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:1858
 #, 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:1880
 #, 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:1895
 #, 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:2007
 #, 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:2044
 #, 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:2058
 #, 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:2768
 #, c-format
 msgid "%pB: invalid symbol table: duplicate symbol `%s'\n"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»\n"
 
-#: mmo.c:2983
+#: mmo.c:3007
 #, c-format
-msgid "%pB: bad symbol definition: `Main' set to %s rather than the start address %s\n"
-msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: Â«MainÂ» Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ %s, Ð° Ð½Ðµ Ñƒ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %s\n"
+msgid "%pB: bad symbol definition: `Main' set to %<PRIx64> rather than the start address %<PRIx64>\n"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ: Â«MainÂ» Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ñƒ %<PRIx64>, Ð° Ð½Ðµ Ñƒ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ñƒ Ð°Ð´Ñ€ÐµÑ�Ñƒ %<PRIx64>\n"
 
-#: mmo.c:3082
+#: mmo.c:3106
 #, 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:3152
 #, 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:3205
 #, c-format
 msgid "%pB: internal error, internal register section %pA had contents\n"
 msgstr "%pB: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², %pA, Ð¼Ñ–Ñ�Ñ‚Ð¸Ð² Ð´Ð°Ð½Ñ–\n"
 
-#: mmo.c:3232
+#: mmo.c:3256
 #, c-format
 msgid "%pB: no initialized registers; section length 0\n"
 msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð², Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 0\n"
 
-#: mmo.c:3239
+#: mmo.c:3263
 #, c-format
 msgid "%pB: too many initialized registers; section length %<PRId64>"
 msgstr "%pB: Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð±Ð°Ð³Ð°Ñ‚Ð¾ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð²; Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ â€” %<PRId64>"
 
-#: mmo.c:3244
+#: mmo.c:3268
 #, c-format
 msgid "%pB: invalid start address for initialized registers of length %<PRId64>: %#<PRIx64>"
 msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ð»Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ… Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ñ–Ð² Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ %<PRId64>: %#<PRIx64>"
 
-#: osf-core.c:127
+#: osf-core.c:128
 #, c-format
 msgid "unhandled OSF/1 core file section type %d"
 msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ„Ð°Ð¹Ð»Ð° core OSF/1, %d"
 
-#: pef.c:527
+#: pdp11.c:1573
+#, c-format
+msgid "%pB: symbol indicates overlay (not supported)"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð½Ð°ÐºÐ»Ð°Ð´ÐºÑƒ (Ð½ÐµÐ¼Ð°Ñ” Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð½Ð°ÐºÐ»Ð°Ð´Ð¾Ðº)"
+
+#: pef.c:534
 #, 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:176 pei-x86_64.c:230 pei-x86_64.c:240 pei-x86_64.c:265
+#: pei-x86_64.c:277 pei-x86_64.c:291 pei-x86_64.c:309 pei-x86_64.c:321
+#: pei-x86_64.c:333
 #, 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:354
 #, 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:405 pei-x86_64.c:415 pei-x86_64.c:424
 #, c-format
 msgid "warning: xdata section corrupt\n"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð» xdata\n"
 
-#: pei-x86_64.c:439
+#: pei-x86_64.c:479
 #, c-format
 msgid "Too many unwind codes (%ld)\n"
 msgstr "Ð—Ð°Ð±Ð°Ð³Ð°Ñ‚Ð¾ ÐºÐ¾Ð´Ñ–Ð² Ñ€Ð¾Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ� (%ld)\n"
 
-#: pei-x86_64.c:529
+#: pei-x86_64.c:565
 #, 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:572
 #, c-format
 msgid "Warning: %s section size is zero\n"
 msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼\n"
 
-#: pei-x86_64.c:551
+#: pei-x86_64.c:587
 #, 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:596
 #, c-format
 msgid ""
 "\n"
@@ -5533,12 +6637,12 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s)\n"
 
-#: pei-x86_64.c:563
+#: pei-x86_64.c:599
 #, 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:724
 #, c-format
 msgid ""
 "\n"
@@ -5547,47 +6651,90 @@ msgstr ""
 "\n"
 "Ð”Ð°Ð¼Ð¿ %s\n"
 
-#. XXX code yet to be written.
-#: peicode.h:775
-#, c-format
-msgid "%pB: unhandled import type; %x"
-msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x"
-
-#: peicode.h:781
+#: peicode.h:823
 #, c-format
 msgid "%pB: unrecognized import type; %x"
 msgstr "%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x"
 
-#: peicode.h:796
+#: peicode.h:840
+#, c-format
+msgid "%pB: missing import name for IMPORT_NAME_EXPORTAS for %s"
+msgstr "%pB: Ð¿Ñ€Ð¾Ð¿ÑƒÑ‰ÐµÐ½Ð¾ Ð½Ð°Ð·Ð²Ñƒ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� IMPORT_NAME_EXPORTAS Ð´Ð»Ñ� %s"
+
+#: peicode.h:849
 #, c-format
 msgid "%pB: unrecognized import name type; %x"
 msgstr "%pB: Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x"
 
-#: peicode.h:1211
+#: peicode.h:1299
 #, 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:1312
 #, 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:1330
 #, c-format
 msgid "%pB: size field is zero in Import Library Format header"
 msgstr "%pB: Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Import Library Format Ð¿Ð¾Ð»Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼"
 
-#: peicode.h:1274
+#: peicode.h:1356
 #, c-format
 msgid "%pB: string not null terminated in ILF object file"
 msgstr "%pB: Ñƒ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð½Ð¾Ð¼Ñƒ Ñ„Ð°Ð¹Ð»Ñ– ILF Ñ€Ñ�Ð´Ð¾Ðº Ð½Ðµ Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¾Ð¼"
 
-#: peicode.h:1330
+#: peicode.h:1427
 #, c-format
 msgid "%pB: error: debug data ends beyond end of debug directory"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ñ– Ð´Ð°Ð½Ñ– Ð·Ð°Ð²ÐµÑ€ÑˆÑƒÑŽÑ‚ÑŒÑ�Ñ� Ð·Ð° ÐºÑ–Ð½Ñ†ÐµÐ¼ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ"
 
+#: peicode.h:1599
+#, c-format
+msgid "%pB: adjusting invalid SectionAlignment"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ð³ÑƒÑ”Ð¼Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñƒ SectionAlignment"
+
+#: peicode.h:1609
+#, c-format
+msgid "%pB: adjusting invalid FileAlignment"
+msgstr "%pB: ÐºÐ¾Ñ€Ð¸Ð³ÑƒÑ”Ð¼Ð¾ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ FileAlignment"
+
+#: peicode.h:1617
+#, c-format
+msgid "%pB: invalid NumberOfRvaAndSizes"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ðµ NumberOfRvaAndSizes"
+
+#: plugin.c:195
+#, c-format
+msgid "%s: failed to open to extract object only section: %s"
+msgstr "%s: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s"
+
+#: plugin.c:212
+#, c-format
+msgid "%pB: invalid file to extract object only section: %s"
+msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ð²Ð¸Ð´Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s"
+
+#: plugin.c:225
+#, c-format
+msgid "%pB: failed to extract object only section: %s"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ð´Ð¾Ð±ÑƒÑ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð»Ð¸ÑˆÐµ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s"
+
+#: plugin.c:245
+#, c-format
+msgid "%pB: failed to open object only section: %s"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð»Ð¸ÑˆÐµ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s"
+
+#: plugin.c:255
+#, c-format
+msgid "%pB: failed to get symbol table in object only section: %s"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŽ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð»Ð¸ÑˆÐµ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²: %s"
+
+#: plugin.c:411
+msgid "plugin framework: out of file descriptors. Try using fewer objects/archives\n"
+msgstr "Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ° Ð´Ð¾Ð´Ð°Ñ‚ÐºÑ–Ð²: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€Ñ–Ð² Ñ„Ð°Ð¹Ð»Ñ–Ð². Ð¡Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð·Ð¼ÐµÐ½ÑˆÐ¸Ñ‚Ð¸ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¾Ð±'Ñ”ÐºÑ‚Ñ–Ð²/Ð°Ñ€Ñ…Ñ–Ð²Ñ–Ð²\n"
+
 #: ppcboot.c:392
 #, c-format
 msgid ""
@@ -5641,32 +6788,17 @@ msgstr "Ð¡ÐµÐºÑ‚Ð¾Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ[%d]
 msgid "Partition[%d] length = 0x%.8lx (%ld)\n"
 msgstr "Ð”Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ[%d] = 0x%.8lx (%ld)\n"
 
-#: reloc.c:8232
+#: reloc.c:8423
 msgid "INPUT_SECTION_FLAGS are not supported"
 msgstr "ÐŸÑ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ INPUT_SECTION_FLAGS Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
 
-#: reloc.c:8333
-#, 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
-#, c-format
-msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n"
-msgstr "%X%P: %pB(%pA): Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Â«%pRÂ» Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
-
-#: reloc.c:8429
-#, 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:8689
 #, 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:8693
 #, c-format
 msgid "is this version of the linker - %s - out of date ?"
 msgstr "Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ñ†Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ° - %s - Ñ” Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ð¾ÑŽ?"
@@ -5676,7 +6808,23 @@ msgstr "Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾, Ñ†Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ
 msgid "%pB: warning core file truncated"
 msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ„Ð°Ð¹Ð» core Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾"
 
-#: som.c:5478
+#: som.c:3002
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of order"
+msgstr "%pB(%pA+%#<PRIx64>): %s Ð·Ñ�ÑƒÐ² Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð¿Ð¾Ð·Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð¼"
+
+#: som.c:3015
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): %s relocation offset out of range"
+msgstr "%pB(%pA+%#<PRIx64>): Ð·Ñ�ÑƒÐ² Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ð¿Ð¾Ð·Ð° Ð¿Ñ€Ð¸Ð¿ÑƒÑ�Ñ‚Ð¸Ð¼Ð¸Ð¼ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼"
+
+#. User has specified a subspace without its containing space.
+#: som.c:5403
+#, c-format
+msgid "%pB[%pA]: no output section for space %pA"
+msgstr "%pB[%pA]: Ð½ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñƒ Ð´Ð»Ñ� Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ %pA"
+
+#: som.c:5450
 #, c-format
 msgid ""
 "\n"
@@ -5685,7 +6833,7 @@ msgstr ""
 "\n"
 "Ð”Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ�\n"
 
-#: som.c:5787
+#: som.c:5759
 msgid "som_sizeof_headers unimplemented"
 msgstr "som_sizeof_headers Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
@@ -5699,17 +6847,17 @@ 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"
 
-#: stabs.c:279
+#: stabs.c:308
 #, c-format
 msgid "%pB(%pA+%#lx): stabs entry has invalid string index"
 msgstr "%pB(%pA+%#lx): Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– stabs Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ€Ñ�Ð´ÐºÐ°"
 
-#: syms.c:1091
+#: syms.c:1121
 msgid "unsupported .stab relocation"
 msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� .stab"
 
@@ -5717,65 +6865,74 @@ msgstr "Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð¿Ð
 msgid "corrupt EIHD record - size is too small"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EIHD: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼"
 
-#: vms-alpha.c:660
+#: vms-alpha.c:665
 #, c-format
 msgid "unable to read EIHS record at offset %#x"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� EIHS Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ %#x"
 
-#: vms-alpha.c:1173
+#: vms-alpha.c:1157
+msgid "record is too small for symbol name length"
+msgstr "Ð·Ð°Ð¿Ð¸Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼ Ð´Ð»Ñ� Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð¸ Ð½Ð°Ð·Ð²Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
+
+#: vms-alpha.c:1190
 #, c-format
 msgid "corrupt EGSD record: its size (%#x) is too small"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð¹Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ (%#x) Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¸Ð¼"
 
-#: vms-alpha.c:1197
+#: vms-alpha.c:1214
 #, 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:1224
 #, 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:1366
 #, c-format
 msgid "corrupt EGSD record: its psindx field is too big (%#lx)"
 msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� EGSD: Ð²Ð¼Ñ–Ñ�Ñ‚ Ð¹Ð¾Ð³Ð¾ Ð¿Ð¾Ð»Ñ� psindx Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ (%#lx)"
 
-#: vms-alpha.c:1419
+#: vms-alpha.c:1441
 #, c-format
 msgid "unknown EGSD subtype %d"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ EGSD, %d"
 
-#: vms-alpha.c:1452
+#: vms-alpha.c:1474
 #, c-format
 msgid "stack overflow (%d) in _bfd_vms_push"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° (%d) Ñƒ _bfd_vms_push"
 
-#: vms-alpha.c:1465
+#: vms-alpha.c:1488
 msgid "stack underflow in _bfd_vms_pop"
 msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ñƒ _bfd_vms_pop"
 
+#: vms-alpha.c:1562
+#, 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 +6942,1469 @@ 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:4006
 #, 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:4058 vms-alpha.c:4286
 #, c-format
 msgid "size error in section %pA"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ñƒ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %pA"
 
-#: vms-alpha.c:4043
+#: vms-alpha.c:4229
 msgid "spurious ALPHA_R_BSR reloc"
 msgstr "Ñ„Ð°Ð»ÑŒÑˆÐ¸Ð²Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ALPHA_R_BSR"
 
-#: vms-alpha.c:4084
+#: vms-alpha.c:4272
 #, c-format
 msgid "unhandled relocation %s"
 msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ðµ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
 
-#: vms-alpha.c:4377
+#: vms-alpha.c:4637
 #, 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:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804
+#: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842
+#: vms-alpha.c:4847
 #, c-format
 msgid "%s not implemented"
 msgstr "%s Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾"
 
-#: vms-alpha.c:4550
+#: vms-alpha.c:4883
 #, 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:5322
+msgid "corrupt reloc record"
+msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
+
+#: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405
+#: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443
 #, c-format
 msgid "unknown reloc %s + %s"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s + %s"
 
-#: vms-alpha.c:5152
+#: vms-alpha.c:5502
 #, c-format
 msgid "unknown reloc %s"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
 
-#: vms-alpha.c:5166
+#: vms-alpha.c:5516
 msgid "invalid section index in ETIR"
 msgstr "Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ ETIR"
 
-#: vms-alpha.c:5175
+#: vms-alpha.c:5525
 msgid "relocation for non-REL psect"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� psect, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ñ” REL"
 
-#: vms-alpha.c:5222
+#: vms-alpha.c:5578
 #, c-format
 msgid "unknown symbol in command %s"
 msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñƒ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ– %s"
 
-#: vms-alpha.c:5636
+#: vms-alpha.c:5996
 #, c-format
 msgid "reloc (%d) is *UNKNOWN*"
 msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� (%d) Ñ” *Ð�Ð•Ð’Ð†Ð”ÐžÐœÐ˜Ðœ*"
 
-#: vms-alpha.c:5752
-#, c-format
-msgid "  EMH %u (len=%u): "
-msgstr "  EMH %u (Ð´Ð¾Ð²Ð¶=%u): "
-
-#: vms-alpha.c:5757
+#: vms-alpha.c:6113
 #, c-format
-msgid "   Error: The length is less than the length of an EMH record\n"
-msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EMH\n"
+msgid "  EMH %d (len=%u): "
+msgstr "  EMH %d (Ð´Ð¾Ð²=%u): "
 
-#: vms-alpha.c:5774
+#: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216
 #, c-format
-msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
-msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EMH_MHD\n"
+msgid "   Error: %s min length is %u\n"
+msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð¼Ñ–Ð½Ñ–Ð¼Ð°Ð»ÑŒÐ½Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° %s Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” %u\n"
 
-#: vms-alpha.c:5777
+#: vms-alpha.c:6141
 #, c-format
 msgid "Module header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5778
+#: vms-alpha.c:6142
 #, c-format
 msgid "   structure level: %u\n"
 msgstr "   Ñ€Ñ–Ð²ÐµÐ½ÑŒ Ñ�Ñ‚Ñ€ÑƒÐºÑ‚. : %u\n"
 
-#: vms-alpha.c:5779
+#: vms-alpha.c:6143
 #, c-format
 msgid "   max record size: %u\n"
 msgstr "   Ð¼Ð°ÐºÑ�. Ñ€Ð¾Ð·Ð¼. Ð·Ð°Ð¿Ð¸Ñ�Ñƒ: %u\n"
 
-#: vms-alpha.c:5785
+#: vms-alpha.c:6149
 #, c-format
 msgid "   Error: The module name is missing\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð½Ð°Ð·Ð²Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5791
+#: vms-alpha.c:6155
 #, c-format
 msgid "   Error: The module name is too long\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð¾Ð²Ð³Ð¾ÑŽ\n"
 
-#: vms-alpha.c:5794
+#: vms-alpha.c:6158
 #, c-format
 msgid "   module name    : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð´ÑƒÐ»Ñ�   : %.*s\n"
 
-#: vms-alpha.c:5798
+#: vms-alpha.c:6162
 #, c-format
 msgid "   Error: The module version is missing\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð½Ðµ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ð¼Ð¾Ð´ÑƒÐ»Ñ�\n"
 
-#: vms-alpha.c:5804
+#: vms-alpha.c:6168
 #, c-format
 msgid "   Error: The module version is too long\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ� Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð´Ð¾Ð²Ð³Ð¾ÑŽ\n"
 
-#: vms-alpha.c:5807
+#: vms-alpha.c:6171
 #, c-format
 msgid "   module version : %.*s\n"
 msgstr "   Ð²ÐµÑ€Ñ�Ñ–Ñ� Ð¼Ð¾Ð´ÑƒÐ»Ñ�  : %.*s\n"
 
-#: vms-alpha.c:5810
+#: vms-alpha.c:6174
 #, c-format
 msgid "   Error: The compile date is truncated\n"
 msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð°Ñ‚Ñƒ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾\n"
 
-#: vms-alpha.c:5812
+#: vms-alpha.c:6176
 #, c-format
 msgid "   compile date   : %.17s\n"
 msgstr "   Ð´Ð°Ñ‚Ð° Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ�  : %.17s\n"
 
-#: vms-alpha.c:5817
+#: vms-alpha.c:6181
 #, c-format
 msgid "Language Processor Name\n"
 msgstr "Ð�Ð°Ð·Ð²Ð° Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° Ð¼Ð¾Ð²Ð¸\n"
 
-#: vms-alpha.c:5818
+#: vms-alpha.c:6182
 #, c-format
 msgid "   language name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð²Ð¸   : %.*s\n"
 
-#: vms-alpha.c:5822
+#: vms-alpha.c:6186
 #, c-format
 msgid "Source Files Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ„Ð°Ð¹Ð»Ñ–Ð² ÐºÐ¾Ð´Ñƒ\n"
 
-#: vms-alpha.c:5823
+#: vms-alpha.c:6187
 #, c-format
 msgid "   file: %.*s\n"
 msgstr "   Ñ„Ð°Ð¹Ð»: %.*s\n"
 
-#: vms-alpha.c:5827
+#: vms-alpha.c:6191
 #, c-format
 msgid "Title Text Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ñ‚Ð¸Ñ‚ÑƒÐ»ÑŒÐ½Ð¾Ð³Ð¾ Ñ‚ÐµÐºÑ�Ñ‚Ñƒ\n"
 
-#: vms-alpha.c:5828
+#: vms-alpha.c:6192
 #, c-format
 msgid "   title: %.*s\n"
 msgstr "   Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº: %.*s\n"
 
-#: vms-alpha.c:5832
+#: vms-alpha.c:6196
 #, c-format
 msgid "Copyright Header\n"
 msgstr "Ð—Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÑŒÐºÐ¸Ñ… Ð¿Ñ€Ð°Ð²\n"
 
-#: vms-alpha.c:5833
+#: vms-alpha.c:6197
 #, c-format
 msgid "   copyright: %.*s\n"
 msgstr "   Ð°Ð²Ñ‚Ð¾Ñ€Ñ�ÑŒÐºÑ– Ð¿Ñ€Ð°Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:5837
+#: vms-alpha.c:6201
 #, c-format
 msgid "unhandled emh subtype %u\n"
 msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿ emh, %u\n"
 
-#: vms-alpha.c:5847
+#: vms-alpha.c:6211
 #, c-format
 msgid "  EEOM (len=%u):\n"
 msgstr "  EEOM (Ð´Ð¾Ð²Ð¶=%u):\n"
 
-#: vms-alpha.c:5852
-#, 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:6221
 #, c-format
 msgid "   number of cond linkage pairs: %u\n"
 msgstr "   ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿Ð°Ñ€ ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u\n"
 
-#: vms-alpha.c:5858
+#: vms-alpha.c:6223
 #, c-format
 msgid "   completion code: %u\n"
 msgstr "   ÐºÐ¾Ð´ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ�: %u\n"
 
-#: vms-alpha.c:5862
+#: vms-alpha.c:6228
 #, c-format
 msgid "   transfer addr flags: 0x%02x\n"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸: 0x%02x\n"
 
-#: vms-alpha.c:5863
+#: vms-alpha.c:6229
 #, c-format
 msgid "   transfer addr psect: %u\n"
 msgstr "   psect Ð¿ÐµÑ€ÐµÐ´Ð°Ð²Ð°Ð½Ð½Ñ� Ð°Ð´Ñ€ÐµÑ�Ð¸: %u\n"
 
-#: vms-alpha.c:5865
+#: vms-alpha.c:6231
 #, c-format
 msgid "   transfer address   : 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° Ð¿ÐµÑ€ÐµÐ½ÐµÑ�ÐµÐ½Ð½Ñ� : 0x%08x\n"
 
-#: vms-alpha.c:5874
+#: vms-alpha.c:6240
 msgid " WEAK"
 msgstr " WEAK"
 
-#: vms-alpha.c:5876
+#: vms-alpha.c:6242
 msgid " DEF"
 msgstr " DEF"
 
-#: vms-alpha.c:5878
+#: vms-alpha.c:6244
 msgid " UNI"
 msgstr " UNI"
 
-#: vms-alpha.c:5880 vms-alpha.c:5901
+#: vms-alpha.c:6246 vms-alpha.c:6267
 msgid " REL"
 msgstr " REL"
 
-#: vms-alpha.c:5882
+#: vms-alpha.c:6248
 msgid " COMM"
 msgstr " COMM"
 
-#: vms-alpha.c:5884
+#: vms-alpha.c:6250
 msgid " VECEP"
 msgstr " VECEP"
 
-#: vms-alpha.c:5886
+#: vms-alpha.c:6252
 msgid " NORM"
 msgstr " NORM"
 
-#: vms-alpha.c:5888
+#: vms-alpha.c:6254
 msgid " QVAL"
 msgstr " QVAL"
 
-#: vms-alpha.c:5895
+#: vms-alpha.c:6261
 msgid " PIC"
 msgstr " PIC"
 
-#: vms-alpha.c:5897
+#: vms-alpha.c:6263
 msgid " LIB"
 msgstr " LIB"
 
-#: vms-alpha.c:5899
+#: vms-alpha.c:6265
 msgid " OVR"
 msgstr " OVR"
 
-#: vms-alpha.c:5903
+#: vms-alpha.c:6269
 msgid " GBL"
 msgstr " GBL"
 
-#: vms-alpha.c:5905
+#: vms-alpha.c:6271
 msgid " SHR"
 msgstr " SHR"
 
-#: vms-alpha.c:5907
+#: vms-alpha.c:6273
 msgid " EXE"
 msgstr " EXE"
 
-#: vms-alpha.c:5909
+#: vms-alpha.c:6275
 msgid " RD"
 msgstr " RD"
 
-#: vms-alpha.c:5911
+#: vms-alpha.c:6277
 msgid " WRT"
 msgstr " WRT"
 
-#: vms-alpha.c:5913
+#: vms-alpha.c:6279
 msgid " VEC"
 msgstr " VEC"
 
-#: vms-alpha.c:5915
+#: vms-alpha.c:6281
 msgid " NOMOD"
 msgstr " NOMOD"
 
-#: vms-alpha.c:5917
+#: vms-alpha.c:6283
 msgid " COM"
 msgstr " COM"
 
-#: vms-alpha.c:5919
+#: vms-alpha.c:6285
 msgid " 64B"
 msgstr " 64B"
 
-#: vms-alpha.c:5928
+#: vms-alpha.c:6294
 #, c-format
 msgid "  EGSD (len=%u):\n"
 msgstr "  EGSD (Ð´Ð¾Ð²Ð¶=%u):\n"
 
-#: vms-alpha.c:5941
+#: vms-alpha.c:6309
 #, 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:6315 vms-alpha.c:6610
 #, c-format
-msgid "   Error: length larger than remaining space in record\n"
-msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð¼Ñ–Ñ�Ñ†Ðµ, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–\n"
+msgid "   Erroneous length\n"
+msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°\n"
 
-#: vms-alpha.c:5959
+#: vms-alpha.c:6328
 #, c-format
 msgid "PSC - Program section definition\n"
 msgstr "PSC â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸\n"
 
-#: vms-alpha.c:5960 vms-alpha.c:5977
+#: vms-alpha.c:6329 vms-alpha.c:6349
 #, c-format
 msgid "   alignment  : 2**%u\n"
 msgstr "   Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�: 2**%u\n"
 
-#: vms-alpha.c:5961 vms-alpha.c:5978
+#: vms-alpha.c:6330 vms-alpha.c:6350
 #, c-format
 msgid "   flags      : 0x%04x"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–    : 0x%04x"
 
-#: vms-alpha.c:5965
+#: vms-alpha.c:6334
 #, 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:6336 vms-alpha.c:6402 vms-alpha.c:6470
 #, c-format
 msgid "   name       : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°      : %.*s\n"
 
-#: vms-alpha.c:5976
+#: vms-alpha.c:6348
 #, c-format
 msgid "SPSC - Shared Image Program section def\n"
 msgstr "SPSC â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð¾Ð±Ñ€Ð°Ð·Ñƒ\n"
 
-#: vms-alpha.c:5982
+#: vms-alpha.c:6354
 #, c-format
 msgid "   alloc (len)   : %u (0x%08x)\n"
 msgstr "   alloc (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°): %u (0x%08x)\n"
 
-#: vms-alpha.c:5983
+#: vms-alpha.c:6355
 #, c-format
 msgid "   image offset  : 0x%08x\n"
 msgstr "   Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¾Ð±Ñ€Ð°Ð·Ñƒ: 0x%08x\n"
 
-#: vms-alpha.c:5985
+#: vms-alpha.c:6357
 #, c-format
 msgid "   symvec offset : 0x%08x\n"
 msgstr "   Ð·Ñ�ÑƒÐ² symvec   : 0x%08x\n"
 
-#: vms-alpha.c:5987
+#: vms-alpha.c:6360
 #, c-format
 msgid "   name          : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°         : %.*s\n"
 
-#: vms-alpha.c:6000
+#: vms-alpha.c:6376
 #, 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:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505
 #, c-format
 msgid "   flags: 0x%04x"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%04x"
 
-#: vms-alpha.c:6004
+#: vms-alpha.c:6380
 #, c-format
 msgid "   psect offset: 0x%08x\n"
 msgstr "   Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ psect: 0x%08x\n"
 
-#: vms-alpha.c:6008
+#: vms-alpha.c:6384
 #, c-format
 msgid "   code address: 0x%08x\n"
 msgstr "   Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ñƒ: 0x%08x\n"
 
-#: vms-alpha.c:6010
+#: vms-alpha.c:6386
 #, 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:6389 vms-alpha.c:6489 vms-alpha.c:6512
 #, 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:6392 vms-alpha.c:6492 vms-alpha.c:6515
 #, c-format
 msgid "   name        : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð°       : %.*s\n"
 
-#: vms-alpha.c:6022
+#: vms-alpha.c:6400
 #, c-format
 msgid "SYM - Global symbol reference\n"
 msgstr "SYM â€” Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½Ð½Ñ� Ð½Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ñ– Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð¸\n"
 
-#: vms-alpha.c:6034
+#: vms-alpha.c:6415
 #, c-format
 msgid "IDC - Ident Consistency check\n"
 msgstr "IDC â€” Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ñ�Ñ‚Ñ– Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€Ñ–Ð²\n"
 
-#: vms-alpha.c:6035
+#: vms-alpha.c:6416
 #, c-format
 msgid "   flags         : 0x%08x"
 msgstr "   Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–      : 0x%08x"
 
-#: vms-alpha.c:6039
+#: vms-alpha.c:6420
 #, c-format
 msgid "   id match      : %x\n"
 msgstr "   Ñ–Ð´. Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñ�Ñ‚Ñ–: %x\n"
 
-#: vms-alpha.c:6041
+#: vms-alpha.c:6422
 #, c-format
 msgid "   error severity: %x\n"
 msgstr "   ÐºÑ€Ð¸Ñ‚Ð¸Ñ‡Ð½Ñ–Ñ�Ñ‚ÑŒ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸: %x\n"
 
-#: vms-alpha.c:6044
+#: vms-alpha.c:6426
 #, c-format
 msgid "   entity name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°: %.*s\n"
 
-#: vms-alpha.c:6046
+#: vms-alpha.c:6432
 #, c-format
 msgid "   object name   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° : %.*s\n"
 
-#: vms-alpha.c:6049
+#: vms-alpha.c:6441
 #, c-format
 msgid "   binary ident  : 0x%08x\n"
 msgstr "   Ð´Ð²Ñ–Ð¹Ðº. Ñ–Ð´ÐµÐ½Ñ‚. : 0x%08x\n"
 
-#: vms-alpha.c:6052
+#: vms-alpha.c:6445
 #, c-format
 msgid "   ascii ident   : %.*s\n"
 msgstr "   Ñ–Ð´ÐµÐ½Ñ‚. ascii  : %.*s\n"
 
-#: vms-alpha.c:6060
+#: vms-alpha.c:6457
 #, c-format
 msgid "SYMG - Universal symbol definition\n"
 msgstr "SYMG â€” Ð£Ð½Ñ–Ð²ÐµÑ€Ñ�Ð°Ð»ÑŒÐ½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²\n"
 
-#: vms-alpha.c:6064
+#: vms-alpha.c:6461
 #, c-format
 msgid "   symbol vector offset: 0x%08x\n"
 msgstr "   Ð·Ñ�ÑƒÐ² Ð²ÐµÐºÑ‚Ð¾Ñ€Ð° Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: 0x%08x\n"
 
-#: vms-alpha.c:6066
+#: vms-alpha.c:6463
 #, c-format
 msgid "   entry point: 0x%08x\n"
 msgstr "   Ñ‚Ð¾Ñ‡ÐºÐ° Ð²Ñ…Ð¾Ð´Ñƒ: 0x%08x\n"
 
-#: vms-alpha.c:6068
+#: vms-alpha.c:6465
 #, c-format
 msgid "   proc descr : 0x%08x\n"
 msgstr "   Ð´ÐµÑ�ÐºÑ€. Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ñƒ: 0x%08x\n"
 
-#: vms-alpha.c:6070
+#: vms-alpha.c:6467
 #, c-format
 msgid "   psect index: %u\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� psect: %u\n"
 
-#: vms-alpha.c:6081
+#: vms-alpha.c:6481
 #, c-format
 msgid "SYMV - Vectored symbol definition\n"
 msgstr "SYMV â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð²ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð·Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ\n"
 
-#: vms-alpha.c:6085
+#: vms-alpha.c:6485
 #, c-format
 msgid "   vector      : 0x%08x\n"
 msgstr "   Ð²ÐµÐºÑ‚Ð¾Ñ€      : 0x%08x\n"
 
-#: vms-alpha.c:6087 vms-alpha.c:6106
+#: vms-alpha.c:6487 vms-alpha.c:6510
 #, c-format
 msgid "   psect offset: %u\n"
 msgstr "   Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ psect: %u\n"
 
-#: vms-alpha.c:6100
+#: vms-alpha.c:6504
 #, c-format
 msgid "SYMM - Global symbol definition with version\n"
 msgstr "SYMM â€” Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð· Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ\n"
 
-#: vms-alpha.c:6104
+#: vms-alpha.c:6508
 #, c-format
 msgid "   version mask: 0x%08x\n"
 msgstr "   Ð¼Ð°Ñ�ÐºÐ° Ð²ÐµÑ€Ñ�Ñ–Ñ—: 0x%08x\n"
 
-#: vms-alpha.c:6115
+#: vms-alpha.c:6521
 #, c-format
 msgid "unhandled egsd entry type %u\n"
 msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ egsd, %u\n"
 
-#: vms-alpha.c:6150
+#: vms-alpha.c:6560
 #, c-format
 msgid "    linkage index: %u, replacement insn: 0x%08x\n"
 msgstr "    Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ�-Ð·Ð°Ð¼Ñ–Ð½Ð½Ð¸Ðº: 0x%08x\n"
 
-#: vms-alpha.c:6154
+#: vms-alpha.c:6564
 #, 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:6569
 #, 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:6575
 #, 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:6580
 #, c-format
 msgid "    global name: %.*s\n"
 msgstr "    Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð° Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:6181
+#: vms-alpha.c:6592
 #, c-format
-msgid "  %s (len=%u+%u):\n"
-msgstr "  %s (Ð´Ð¾Ð²Ð¶=%u+%u):\n"
+msgid "  %s (len=%u):\n"
+msgstr "  %s (Ð´Ð¾Ð²Ð¶=%u):\n"
 
-#: vms-alpha.c:6203
+#: vms-alpha.c:6615
 #, c-format
-msgid "   (type: %3u, size: 4+%3u): "
-msgstr "   (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 4+%3u): "
+msgid "   (type: %3u, size: %3u): "
+msgstr "   (Ñ‚Ð¸Ð¿: %3u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %3u): "
 
-#: vms-alpha.c:6207
+#: vms-alpha.c:6621
 #, c-format
 msgid "STA_GBL (stack global) %.*s\n"
 msgstr "STA_GBL (Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹ Ñ�Ñ‚ÐµÐº) %.*s\n"
 
-#: vms-alpha.c:6211
+#: vms-alpha.c:6625
 #, c-format
-msgid "STA_LW (stack longword) 0x%08x\n"
-msgstr "STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð¾Ð²Ð³Ð¸Ñ… Ñ�Ð»Ñ–Ð²) 0x%08x\n"
+msgid "STA_LW (stack longword)"
+msgstr "STA_LW (Ñ�Ñ‚ÐµÐº Ð´Ð¾Ð²Ð³Ð¸Ñ… Ñ�Ð»Ñ–Ð²)"
 
-#: vms-alpha.c:6215
+#: vms-alpha.c:6631
 #, c-format
-msgid "STA_QW (stack quadword) 0x%08x %08x\n"
-msgstr "STA_QW (Ñ�Ñ‚ÐµÐº Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ð¸Ñ… Ñ�Ð»Ñ–Ð²) 0x%08x %08x\n"
+msgid "STA_QW (stack quadword)"
+msgstr "STA_QW (Ñ�Ñ‚ÐµÐº ÐºÐ²Ð°Ð´Ñ€Ð¾Ñ�Ð»Ñ–Ð²)"
 
-#: vms-alpha.c:6220
+#: vms-alpha.c:6638
 #, c-format
 msgid "STA_PQ (stack psect base + offset)\n"
 msgstr "STA_PQ (Ñ�Ñ‚ÐµÐº Ð¾Ñ�Ð½Ð¾Ð²Ð¸ psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6222
+#: vms-alpha.c:6641
 #, c-format
 msgid "    psect: %u, offset: 0x%08x %08x\n"
 msgstr "    psect: %u, Ð·Ñ�ÑƒÐ²: 0x%08x %08x\n"
 
-#: vms-alpha.c:6228
+#: vms-alpha.c:6647
 #, c-format
 msgid "STA_LI (stack literal)\n"
 msgstr "STA_LI (Ñ�Ñ‚ÐµÐº Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»Ñ–Ð²)\n"
 
-#: vms-alpha.c:6231
+#: vms-alpha.c:6650
 #, c-format
 msgid "STA_MOD (stack module)\n"
 msgstr "STA_MOD (Ñ�Ñ‚ÐµÐº Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²)\n"
 
-#: vms-alpha.c:6234
+#: vms-alpha.c:6653
 #, c-format
 msgid "STA_CKARG (compare procedure argument)\n"
 msgstr "STA_CKARG (Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6238
+#: vms-alpha.c:6657
 #, c-format
 msgid "STO_B (store byte)\n"
 msgstr "STO_B (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ Ð±Ð°Ð¹Ñ‚)\n"
 
-#: vms-alpha.c:6241
+#: vms-alpha.c:6660
 #, c-format
 msgid "STO_W (store word)\n"
 msgstr "STO_W (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ñ�Ð»Ð¾Ð²Ð¾)\n"
 
-#: vms-alpha.c:6244
+#: vms-alpha.c:6663
 #, c-format
 msgid "STO_LW (store longword)\n"
 msgstr "STO_LW (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ longword)\n"
 
-#: vms-alpha.c:6247
+#: vms-alpha.c:6666
 #, c-format
 msgid "STO_QW (store quadword)\n"
 msgstr "STO_QW (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ quadword)\n"
 
-#: vms-alpha.c:6253
+#: vms-alpha.c:6673
 #, c-format
 msgid "STO_IMMR (store immediate repeat) %u bytes\n"
 msgstr "STO_IMMR (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð½ÐµÐ³Ð°Ð¹Ð½Ðµ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÐµÐ½Ð½Ñ�) %u Ð±Ð°Ð¹Ñ‚Ñ–Ð²\n"
 
-#: vms-alpha.c:6260
+#: vms-alpha.c:6682
 #, c-format
 msgid "STO_GBL (store global) %.*s\n"
 msgstr "STO_GBL (Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ðµ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ�) %.*s\n"
 
-#: vms-alpha.c:6264
+#: vms-alpha.c:6687
 #, c-format
 msgid "STO_CA (store code address) %.*s\n"
 msgstr "STO_CA (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° ÐºÐ¾Ð´Ñƒ) %.*s\n"
 
-#: vms-alpha.c:6268
+#: vms-alpha.c:6691
 #, c-format
 msgid "STO_RB (store relative branch)\n"
 msgstr "STO_RB (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6271
+#: vms-alpha.c:6694
 #, c-format
 msgid "STO_AB (store absolute branch)\n"
 msgstr "STO_AB (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ðµ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6274
+#: vms-alpha.c:6697
 #, c-format
 msgid "STO_OFF (store offset to psect)\n"
 msgstr "STO_OFF (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ Ð·Ñ�ÑƒÐ² Ñ‰Ð¾Ð´Ð¾ psect)\n"
 
-#: vms-alpha.c:6280
+#: vms-alpha.c:6704
 #, c-format
 msgid "STO_IMM (store immediate) %u bytes\n"
 msgstr "STO_IMM (Ð½ÐµÐ³Ð°Ð¹Ð½Ðµ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ�) %u Ð±Ð°Ð¹Ñ‚\n"
 
-#: vms-alpha.c:6287
+#: vms-alpha.c:6713
 #, 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:6717
 #, c-format
 msgid "STO_OFF (store LP with procedure signature)\n"
 msgstr "STO_OFF (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ� LP Ð· Ð¿Ñ–Ð´Ð¿Ð¸Ñ�Ð¾Ð¼ Ð¿Ñ–Ð´Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸)\n"
 
-#: vms-alpha.c:6294
+#: vms-alpha.c:6720
 #, c-format
 msgid "STO_BR_GBL (store branch global) *todo*\n"
 msgstr "STO_BR_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ðµ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ðµ Ð²Ñ–Ð´Ð³Ð°Ð»ÑƒÐ¶ÐµÐ½Ð½Ñ�) *Ñ‰Ðµ Ð½Ðµ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¾*\n"
 
-#: vms-alpha.c:6297
+#: vms-alpha.c:6723
 #, 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:6727
 #, c-format
 msgid "OPR_NOP (no-operation)\n"
 msgstr "OPR_NOP (Ð±ÐµÐ· Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ—)\n"
 
-#: vms-alpha.c:6304
+#: vms-alpha.c:6730
 #, c-format
 msgid "OPR_ADD (add)\n"
 msgstr "OPR_ADD (Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6307
+#: vms-alpha.c:6733
 #, c-format
 msgid "OPR_SUB (subtract)\n"
 msgstr "OPR_SUB (Ð²Ñ–Ð´Ð½Ñ–Ð¼Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6310
+#: vms-alpha.c:6736
 #, c-format
 msgid "OPR_MUL (multiply)\n"
 msgstr "OPR_MUL (Ð¼Ð½Ð¾Ð¶ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6313
+#: vms-alpha.c:6739
 #, c-format
 msgid "OPR_DIV (divide)\n"
 msgstr "OPR_DIV (Ð´Ñ–Ð»ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6316
+#: vms-alpha.c:6742
 #, c-format
 msgid "OPR_AND (logical and)\n"
 msgstr "OPR_AND (Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ðµ Â«Ð†Â»)\n"
 
-#: vms-alpha.c:6319
+#: vms-alpha.c:6745
 #, c-format
 msgid "OPR_IOR (logical inclusive or)\n"
 msgstr "OPR_IOR (Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ðµ Ð²ÐºÐ»ÑŽÑ‡Ð½Ðµ Â«Ð�Ð‘ÐžÂ»)\n"
 
-#: vms-alpha.c:6322
+#: vms-alpha.c:6748
 #, c-format
 msgid "OPR_EOR (logical exclusive or)\n"
 msgstr "OPR_EOR (Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ðµ Ð²Ð¸ÐºÐ»ÑŽÑ‡Ð½Ðµ Â«Ð�Ð‘ÐžÂ»)\n"
 
-#: vms-alpha.c:6325
+#: vms-alpha.c:6751
 #, c-format
 msgid "OPR_NEG (negate)\n"
 msgstr "OPR_NEG (Ð·Ð°Ð¿ÐµÑ€ÐµÑ‡ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6328
+#: vms-alpha.c:6754
 #, c-format
 msgid "OPR_COM (complement)\n"
 msgstr "OPR_COM (Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6331
+#: vms-alpha.c:6757
 #, c-format
 msgid "OPR_INSV (insert field)\n"
 msgstr "OPR_INSV (Ð²Ñ�Ñ‚Ð°Ð²Ð»ÐµÐ½Ð½Ñ� Ð¿Ð¾Ð»Ñ�)\n"
 
-#: vms-alpha.c:6334
+#: vms-alpha.c:6760
 #, c-format
 msgid "OPR_ASH (arithmetic shift)\n"
 msgstr "OPR_ASH (Ð°Ñ€Ð¸Ñ„Ð¼ÐµÑ‚Ð¸Ñ‡Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6337
+#: vms-alpha.c:6763
 #, c-format
 msgid "OPR_USH (unsigned shift)\n"
 msgstr "OPR_USH (Ð±ÐµÐ·Ð·Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¹ Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6340
+#: vms-alpha.c:6766
 #, c-format
 msgid "OPR_ROT (rotate)\n"
 msgstr "OPR_ROT (Ñ†Ð¸ÐºÐ»Ñ–Ñ‡Ð½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6343
+#: vms-alpha.c:6769
 #, c-format
 msgid "OPR_SEL (select)\n"
 msgstr "OPR_SEL (Ð²Ð¸Ð±Ñ–Ñ€)\n"
 
-#: vms-alpha.c:6346
+#: vms-alpha.c:6772
 #, c-format
 msgid "OPR_REDEF (redefine symbol to curr location)\n"
 msgstr "OPR_REDEF (Ð¿ÐµÑ€ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ð´Ð¾ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ—)\n"
 
-#: vms-alpha.c:6349
+#: vms-alpha.c:6775
 #, c-format
 msgid "OPR_REDEF (define a literal)\n"
 msgstr "OPR_REDEF (Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»Ð°)\n"
 
-#: vms-alpha.c:6353
+#: vms-alpha.c:6779
 #, c-format
 msgid "STC_LP (store cond linkage pair)\n"
 msgstr "STC_LP (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð¿Ð°Ñ€Ð° ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6357
+#: vms-alpha.c:6783
 #, c-format
 msgid "STC_LP_PSB (store cond linkage pair + signature)\n"
 msgstr "STC_LP_PSB (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð¿Ð°Ñ€Ð° ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� + Ð¿Ñ–Ð´Ð¿Ð¸Ñ�)\n"
 
-#: vms-alpha.c:6359
+#: vms-alpha.c:6787
 #, c-format
 msgid "   linkage index: %u, procedure: %.*s\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°: %.*s\n"
 
-#: vms-alpha.c:6362
+#: vms-alpha.c:6794
 #, c-format
 msgid "   signature: %.*s\n"
 msgstr "   Ð¿Ñ–Ð´Ð¿Ð¸Ñ�: %.*s\n"
 
-#: vms-alpha.c:6365
+#: vms-alpha.c:6800
 #, c-format
 msgid "STC_GBL (store cond global)\n"
 msgstr "STC_GBL (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð° ÑƒÐ¼Ð¾Ð²Ð°)\n"
 
-#: vms-alpha.c:6367
+#: vms-alpha.c:6803
 #, c-format
 msgid "   linkage index: %u, global: %.*s\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ð¹: %.*s\n"
 
-#: vms-alpha.c:6371
+#: vms-alpha.c:6808
 #, c-format
 msgid "STC_GCA (store cond code address)\n"
 msgstr "STC_GCA (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° ÑƒÐ¼Ð¾Ð²Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ)\n"
 
-#: vms-alpha.c:6373
+#: vms-alpha.c:6811
 #, c-format
 msgid "   linkage index: %u, procedure name: %.*s\n"
 msgstr "   Ñ–Ð½Ð´ÐµÐºÑ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�: %u, Ð½Ð°Ð·Ð²Ð° Ð¿Ñ–Ð´Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸: %.*s\n"
 
-#: vms-alpha.c:6377
+#: vms-alpha.c:6816
 #, c-format
 msgid "STC_PS (store cond psect + offset)\n"
 msgstr "STC_PS (Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹ ÑƒÐ¼Ð¾Ð²Ð½Ð¸Ð¹ psect + Ð·Ñ�ÑƒÐ²)\n"
 
-#: vms-alpha.c:6380
+#: vms-alpha.c:6820
 #, 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:6827
 #, 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:6831
 #, 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:6835
 #, 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:6839
 #, 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:6843
 #, 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:6847
 #, 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:6851
 #, 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:6855
 #, 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:6860
 #, 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:6864
 #, 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:6868
 #, c-format
 msgid "CTL_SETRB (set relocation base)\n"
 msgstr "CTL_SETRB (Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6434
+#: vms-alpha.c:6874
 #, c-format
 msgid "CTL_AUGRB (augment relocation base) %u\n"
 msgstr "CTL_AUGRB (Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�) %u\n"
 
-#: vms-alpha.c:6438
+#: vms-alpha.c:6879
 #, c-format
 msgid "CTL_DFLOC (define location)\n"
 msgstr "CTL_DFLOC (Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6441
+#: vms-alpha.c:6882
 #, c-format
 msgid "CTL_STLOC (set location)\n"
 msgstr "CTL_STLOC (Ð²ÐºÐ°Ð·Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6444
+#: vms-alpha.c:6885
 #, 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:6888 vms-alpha.c:7316 vms-alpha.c:7477
 #, c-format
 msgid "*unhandled*\n"
 msgstr "*Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¾*\n"
 
-#: vms-alpha.c:6477 vms-alpha.c:6516
+#: vms-alpha.c:6913
 #, c-format
-msgid "cannot read GST record length\n"
-msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GST\n"
+msgid "cannot read GST record header\n"
+msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GST\n"
 
 #. Ill-formed.
-#: vms-alpha.c:6498
+#: vms-alpha.c:6936
 #, c-format
 msgid "cannot find EMH in first GST record\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ EMH Ñƒ Ð¿ÐµÑ€ÑˆÐ¾Ð¼Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ– GST\n"
 
-#: vms-alpha.c:6524
-#, c-format
-msgid "cannot read GST record header\n"
-msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GST\n"
-
-#: vms-alpha.c:6537
+#: vms-alpha.c:6960
 #, c-format
-msgid " corrupted GST\n"
-msgstr " Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ GST\n"
+msgid "corrupted GST\n"
+msgstr "Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ GST\n"
 
-#: vms-alpha.c:6545
+#: vms-alpha.c:6973
 #, c-format
 msgid "cannot read GST record\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð¿Ð¸Ñ� GST\n"
 
-#: vms-alpha.c:6574
+#: vms-alpha.c:7000
 #, c-format
 msgid " unhandled EOBJ record type %u\n"
 msgstr " Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EOBJ, %u\n"
 
-#: vms-alpha.c:6598
+#: vms-alpha.c:7025
 #, c-format
 msgid "  bitcount: %u, base addr: 0x%08x\n"
 msgstr "  ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ñ–Ñ‚Ñ–Ð²: %u, Ð±Ð°Ð·Ð¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:6612
+#: vms-alpha.c:7039
 #, c-format
 msgid "   bitmap: 0x%08x (count: %u):\n"
 msgstr "   Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·: 0x%08x (Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº: %u):\n"
 
-#: vms-alpha.c:6619
+#: vms-alpha.c:7046
 #, c-format
 msgid " %08x"
 msgstr " %08x"
 
-#: vms-alpha.c:6645
+#: vms-alpha.c:7073
 #, c-format
 msgid "  image %u (%u entries)\n"
 msgstr "  Ð¾Ð±Ñ€Ð°Ð· %u (%u Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²)\n"
 
-#: vms-alpha.c:6651
+#: vms-alpha.c:7079
 #, c-format
 msgid "   offset: 0x%08x, val: 0x%08x\n"
 msgstr "   Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿: 0x%08x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: 0x%08x\n"
 
-#: vms-alpha.c:6673
+#: vms-alpha.c:7102
 #, c-format
 msgid "  image %u (%u entries), offsets:\n"
 msgstr "  Ð¾Ð±Ñ€Ð°Ð· %u (%u Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²), Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¸:\n"
 
-#: vms-alpha.c:6680
+#: vms-alpha.c:7109
 #, c-format
 msgid " 0x%08x"
 msgstr " 0x%08x"
 
 #. 64 bits.
-#: vms-alpha.c:6802
+#: vms-alpha.c:7235
 #, c-format
 msgid "64 bits *unhandled*\n"
 msgstr "64 Ð±Ñ–Ñ‚Ð¸ *Ð½Ðµ Ð¾Ð±Ñ€Ð¾Ð±Ð»Ñ�Ñ”Ñ‚ÑŒÑ�Ñ�*\n"
 
-#: vms-alpha.c:6807
+#: vms-alpha.c:7240
 #, 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:7251
 #, c-format
 msgid "non-contiguous array of %s\n"
 msgstr "Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ð½Ð¸Ð¹ Ð¼Ð°Ñ�Ð¸Ð² %s\n"
 
-#: vms-alpha.c:6823
+#: vms-alpha.c:7258
 #, 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:7263
 #, c-format
 msgid "arsize: %u, a0: 0x%08x\n"
 msgstr "arsize: %u, a0: 0x%08x\n"
 
-#: vms-alpha.c:6832
+#: vms-alpha.c:7267
 #, c-format
 msgid "Strides:\n"
 msgstr "ÐšÑ€Ð¾ÐºÐ¸:\n"
 
-#: vms-alpha.c:6842
+#: vms-alpha.c:7281
 #, c-format
 msgid "Bounds:\n"
 msgstr "ÐœÐµÐ¶Ñ–:\n"
 
-#: vms-alpha.c:6848
+#: vms-alpha.c:7288
 #, c-format
 msgid "[%u]: Lower: %u, upper: %u\n"
 msgstr "[%u]: Ð½Ð¸Ð¶Ð½Ñ�: %u, Ð²ÐµÑ€Ñ…Ð½Ñ�: %u\n"
 
-#: vms-alpha.c:6860
+#: vms-alpha.c:7302
 #, c-format
 msgid "unaligned bit-string of %s\n"
 msgstr "Ð½ÐµÐ²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¸Ð¹ Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº %s\n"
 
-#: vms-alpha.c:6865
+#: vms-alpha.c:7309
 #, c-format
 msgid "base: %u, pos: %u\n"
 msgstr "Ð¾Ñ�Ð½Ð¾Ð²Ð°: %u, Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ�: %u\n"
 
-#: vms-alpha.c:6886
+#: vms-alpha.c:7335
 #, c-format
 msgid "vflags: 0x%02x, value: 0x%08x "
 msgstr "vflags: 0x%02x, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: 0x%08x "
 
-#: vms-alpha.c:6892
+#: vms-alpha.c:7342
 #, c-format
 msgid "(no value)\n"
 msgstr "(Ð½ÐµÐ¼Ð° Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6895
+#: vms-alpha.c:7345
 #, c-format
 msgid "(not active)\n"
 msgstr "(Ð½ÐµÐ°ÐºÑ‚Ð¸Ð²Ð½Ðµ)\n"
 
-#: vms-alpha.c:6898
+#: vms-alpha.c:7348
 #, c-format
 msgid "(not allocated)\n"
 msgstr "(Ð½Ðµ Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð¾)\n"
 
-#: vms-alpha.c:6901
+#: vms-alpha.c:7351
 #, c-format
 msgid "(descriptor)\n"
 msgstr "(Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€)\n"
 
-#: vms-alpha.c:6905
+#: vms-alpha.c:7356
 #, c-format
 msgid "(trailing value)\n"
 msgstr "(Ñ…Ð²Ð¾Ñ�Ñ‚Ð¾Ð²Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�)\n"
 
-#: vms-alpha.c:6908
+#: vms-alpha.c:7359
 #, c-format
 msgid "(value spec follows)\n"
 msgstr "(Ð´Ð°Ð»Ñ– Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ)\n"
 
-#: vms-alpha.c:6911
+#: vms-alpha.c:7362
 #, c-format
 msgid "(at bit offset %u)\n"
 msgstr "(Ð·Ð° Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ Ñƒ Ð±Ñ–Ñ‚Ð°Ñ… %u)\n"
 
-#: vms-alpha.c:6915
+#: vms-alpha.c:7366
 #, c-format
 msgid "(reg: %u, disp: %u, indir: %u, kind: "
 msgstr "(Ñ€ÐµÐ³: %u, disp: %u, indir: %u, Ñ‚Ð¸Ð¿: "
 
-#: vms-alpha.c:6922
+#: vms-alpha.c:7373
 msgid "literal"
 msgstr "Ð»Ñ–Ñ‚ÐµÑ€Ð°Ð»"
 
-#: vms-alpha.c:6925
+#: vms-alpha.c:7376
 msgid "address"
 msgstr "Ð°Ð´Ñ€ÐµÑ�Ð°"
 
-#: vms-alpha.c:6928
+#: vms-alpha.c:7379
 msgid "desc"
 msgstr "Ð´ÐµÑ�Ðº"
 
-#: vms-alpha.c:6931
+#: vms-alpha.c:7382
 msgid "reg"
 msgstr "Ñ€ÐµÐ³"
 
-#: vms-alpha.c:6948
+#: vms-alpha.c:7403
 #, c-format
 msgid "len: %2u, kind: %2u "
 msgstr "Ð´Ð¾Ð²Ð¶.: %2u, Ñ‚Ð¸Ð¿: %2u "
 
-#: vms-alpha.c:6954
+#: vms-alpha.c:7411
 #, c-format
 msgid "atomic, type=0x%02x %s\n"
 msgstr "Ð°Ñ‚Ð¾Ð¼Ð°Ñ€Ð½Ð¸Ð¹, Ñ‚Ð¸Ð¿=0x%02x %s\n"
 
-#: vms-alpha.c:6958
+#: vms-alpha.c:7416
 #, c-format
 msgid "indirect, defined at 0x%08x\n"
 msgstr "Ð¾Ð¿Ð¾Ñ�ÐµÑ€ÐµÐ´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹, Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ñ‚ÑƒÑ‚: 0x%08x\n"
 
-#: vms-alpha.c:6962
+#: vms-alpha.c:7420
 #, c-format
 msgid "typed pointer\n"
 msgstr "Ñ‚Ð¸Ð¿Ñ–Ð·Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº\n"
 
-#: vms-alpha.c:6966
+#: vms-alpha.c:7424
 #, c-format
 msgid "pointer\n"
 msgstr "Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸Ðº\n"
 
-#: vms-alpha.c:6974
+#: vms-alpha.c:7435
 #, c-format
 msgid "array, dim: %u, bitmap: "
 msgstr "Ð¼Ð°Ñ�Ð¸Ð², Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð½Ñ–Ñ�Ñ‚ÑŒ: %u, Ð±Ñ–Ñ‚Ð¾Ð²Ð° ÐºÐ°Ñ€Ñ‚Ð°: "
 
-#: vms-alpha.c:6981
+#: vms-alpha.c:7450
 #, c-format
 msgid "array descriptor:\n"
 msgstr "Ð´ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ð¼Ð°Ñ�Ð¸Ð²Ñƒ:\n"
 
-#: vms-alpha.c:6988
+#: vms-alpha.c:7461
 #, c-format
 msgid "type spec for element:\n"
 msgstr "Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ñ‚Ð¸Ð¿Ñƒ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð°:\n"
 
-#: vms-alpha.c:6990
+#: vms-alpha.c:7463
 #, c-format
 msgid "type spec for subscript %u:\n"
 msgstr "Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ñ‚Ð¸Ð¿Ñƒ Ð´Ð»Ñ� Ñ�Ð¿Ð¸Ñ�ÐºÑƒ Ñ–Ð½Ð´ÐµÐºÑ�Ñ–Ð² %u:\n"
 
-#: vms-alpha.c:7008
+#: vms-alpha.c:7488
 #, c-format
 msgid "Debug symbol table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ð·Ð½ÐµÐ²Ð°Ð´Ð¶ÑƒÐ²Ð°Ð½Ð½Ñ�:\n"
 
-#: vms-alpha.c:7019
+#: vms-alpha.c:7499
 #, c-format
 msgid "cannot read DST header\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DST\n"
 
-#: vms-alpha.c:7025
+#: vms-alpha.c:7505
 #, c-format
 msgid " type: %3u, len: %3u (at 0x%08x): "
 msgstr " Ñ‚Ð¸Ð¿: %3u, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %3u (Ð·Ð° 0x%08x): "
 
-#: vms-alpha.c:7039
+#: vms-alpha.c:7524
 #, c-format
 msgid "cannot read DST symbol\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð» DST\n"
 
-#: vms-alpha.c:7082
+#: vms-alpha.c:7568
 #, c-format
 msgid "standard data: %s\n"
 msgstr "Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ– Ð´Ð°Ð½Ñ–: %s\n"
 
-#: vms-alpha.c:7085 vms-alpha.c:7173
+#: vms-alpha.c:7572 vms-alpha.c:7696
 #, c-format
 msgid "    name: %.*s\n"
 msgstr "    Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7092
+#: vms-alpha.c:7580
 #, c-format
 msgid "modbeg\n"
 msgstr "modbeg\n"
 
-#: vms-alpha.c:7094
+#: vms-alpha.c:7584
 #, 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:7594 vms-alpha.c:7963
 #, c-format
 msgid "   module name: %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ð¼Ð¾Ð´ÑƒÐ»Ñ�: %.*s\n"
 
-#: vms-alpha.c:7103
+#: vms-alpha.c:7601
 #, c-format
 msgid "   compiler   : %.*s\n"
 msgstr "   ÐºÐ¾Ð¼Ð¿Ñ–Ð»Ñ�Ñ‚Ð¾Ñ€ : %.*s\n"
 
-#: vms-alpha.c:7108
+#: vms-alpha.c:7608
 #, c-format
 msgid "modend\n"
 msgstr "modend\n"
 
-#: vms-alpha.c:7115
+#: vms-alpha.c:7615
 msgid "rtnbeg\n"
 msgstr "rtnbeg\n"
 
-#: vms-alpha.c:7117
+#: vms-alpha.c:7619
 #, 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:7628
 #, c-format
 msgid "    routine name: %.*s\n"
 msgstr "    Ð½Ð°Ð·Ð²Ð° Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸: %.*s\n"
 
-#: vms-alpha.c:7130
+#: vms-alpha.c:7639
 #, c-format
 msgid "rtnend: size 0x%08x\n"
 msgstr "rtnend: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ 0x%08x\n"
 
-#: vms-alpha.c:7138
+#: vms-alpha.c:7649
 #, c-format
 msgid "prolog: bkpt address 0x%08x\n"
 msgstr "Ð¿Ñ€Ð¾Ð»Ð¾Ð³: Ð°Ð´Ñ€ÐµÑ�Ð° bkpt 0x%08x\n"
 
-#: vms-alpha.c:7147
+#: vms-alpha.c:7659
 #, c-format
 msgid "epilog: flags: %u, count: %u\n"
 msgstr "ÐµÐ¿Ñ–Ð»Ð¾Ð³: Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %u, Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº: %u\n"
 
-#: vms-alpha.c:7157
+#: vms-alpha.c:7674
 #, c-format
 msgid "blkbeg: address: 0x%08x, name: %.*s\n"
 msgstr "blkbeg: Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7166
+#: vms-alpha.c:7686
 #, c-format
 msgid "blkend: size: 0x%08x\n"
 msgstr "blkend: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: 0x%08x\n"
 
-#: vms-alpha.c:7172
+#: vms-alpha.c:7692
 #, c-format
 msgid "typspec (len: %u)\n"
 msgstr "typspec (Ð´Ð¾Ð²Ð¶.: %u)\n"
 
-#: vms-alpha.c:7179
+#: vms-alpha.c:7708
 #, c-format
 msgid "septyp, name: %.*s\n"
 msgstr "septyp, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7188
+#: vms-alpha.c:7725
 #, c-format
 msgid "recbeg: name: %.*s\n"
 msgstr "recbeg: Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7190
+#: vms-alpha.c:7731
 #, c-format
 msgid "    len: %u bits\n"
 msgstr "    Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u Ð±Ñ–Ñ‚Ñ–Ð²\n"
 
-#: vms-alpha.c:7195
+#: vms-alpha.c:7737
 #, c-format
 msgid "recend\n"
 msgstr "recend\n"
 
-#: vms-alpha.c:7199
+#: vms-alpha.c:7742
 #, c-format
 msgid "enumbeg, len: %u, name: %.*s\n"
 msgstr "enumbeg, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7203
+#: vms-alpha.c:7748
 #, c-format
 msgid "enumelt, name: %.*s\n"
 msgstr "enumelt, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7207
+#: vms-alpha.c:7754
 #, c-format
 msgid "enumend\n"
 msgstr "enumend\n"
 
-#: vms-alpha.c:7212
+#: vms-alpha.c:7761
 #, c-format
 msgid "label, name: %.*s\n"
 msgstr "Ð¼Ñ–Ñ‚ÐºÐ°, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7214
+#: vms-alpha.c:7764
 #, c-format
 msgid "    address: 0x%08x\n"
 msgstr "    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x\n"
 
-#: vms-alpha.c:7224
+#: vms-alpha.c:7776
 #, c-format
 msgid "discontiguous range (nbr: %u)\n"
 msgstr "Ñ€Ð¾Ð·Ñ€Ð¸Ð²Ð½Ð¸Ð¹ Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½ (nbr: %u)\n"
 
-#: vms-alpha.c:7227
+#: vms-alpha.c:7783
 #, c-format
 msgid "    address: 0x%08x, size: %u\n"
 msgstr "    Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u\n"
 
-#: vms-alpha.c:7237
+#: vms-alpha.c:7794
 #, c-format
 msgid "line num  (len: %u)\n"
 msgstr "Ð½Ð¾Ð¼ÐµÑ€ Ñ€Ñ�Ð´ÐºÐ°  (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7254
+#: vms-alpha.c:7813
 #, c-format
 msgid "delta_pc_w %u\n"
 msgstr "delta_pc_w %u\n"
 
-#: vms-alpha.c:7261
+#: vms-alpha.c:7822
 #, c-format
 msgid "incr_linum(b): +%u\n"
 msgstr "incr_linum(b): +%u\n"
 
-#: vms-alpha.c:7267
+#: vms-alpha.c:7830
 #, c-format
 msgid "incr_linum_w: +%u\n"
 msgstr "incr_linum_w: +%u\n"
 
-#: vms-alpha.c:7273
+#: vms-alpha.c:7838
 #, c-format
 msgid "incr_linum_l: +%u\n"
 msgstr "incr_linum_l: +%u\n"
 
-#: vms-alpha.c:7279
+#: vms-alpha.c:7846
 #, c-format
 msgid "set_line_num(w) %u\n"
 msgstr "set_line_num(w) %u\n"
 
-#: vms-alpha.c:7284
+#: vms-alpha.c:7853
 #, c-format
 msgid "set_line_num_b %u\n"
 msgstr "set_line_num_b %u\n"
 
-#: vms-alpha.c:7289
+#: vms-alpha.c:7860
 #, c-format
 msgid "set_line_num_l %u\n"
 msgstr "set_line_num_l %u\n"
 
-#: vms-alpha.c:7294
+#: vms-alpha.c:7867
 #, c-format
 msgid "set_abs_pc: 0x%08x\n"
 msgstr "set_abs_pc: 0x%08x\n"
 
-#: vms-alpha.c:7298
+#: vms-alpha.c:7873
 #, c-format
 msgid "delta_pc_l: +0x%08x\n"
 msgstr "delta_pc_l: +0x%08x\n"
 
-#: vms-alpha.c:7303
+#: vms-alpha.c:7880
 #, c-format
 msgid "term(b): 0x%02x"
 msgstr "term(b): 0x%02x"
 
-#: vms-alpha.c:7305
+#: vms-alpha.c:7882
 #, c-format
 msgid "        pc: 0x%08x\n"
 msgstr "        pc: 0x%08x\n"
 
-#: vms-alpha.c:7310
+#: vms-alpha.c:7889
 #, c-format
 msgid "term_w: 0x%04x"
 msgstr "term_w: 0x%04x"
 
-#: vms-alpha.c:7312
+#: vms-alpha.c:7891
 #, c-format
 msgid "    pc: 0x%08x\n"
 msgstr "    pc: 0x%08x\n"
 
-#: vms-alpha.c:7318
+#: vms-alpha.c:7897
 #, c-format
 msgid "delta pc +%-4d"
 msgstr "Ð¿Ñ€Ð¸Ñ€Ñ–Ñ�Ñ‚ pc +%-4d"
 
-#: vms-alpha.c:7322
+#: vms-alpha.c:7901
 #, c-format
 msgid "    pc: 0x%08x line: %5u\n"
 msgstr "    pc: 0x%08x Ñ€Ñ�Ð´Ð¾Ðº: %5u\n"
 
-#: vms-alpha.c:7327
+#: vms-alpha.c:7906
 #, c-format
 msgid "    *unhandled* cmd %u\n"
 msgstr "    *Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð°* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u\n"
 
-#: vms-alpha.c:7342
+#: vms-alpha.c:7921
 #, c-format
 msgid "source (len: %u)\n"
 msgstr "Ð´Ð¶ÐµÑ€ÐµÐ»Ð¾ (Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u)\n"
 
-#: vms-alpha.c:7357
+#: vms-alpha.c:7940
 #, c-format
 msgid "   declfile: len: %u, flags: %u, fileid: %u\n"
 msgstr "   declfile: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u, Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: %u, Ñ–Ð´. Ñ„Ð°Ð¹Ð»Ð°: %u\n"
 
-#: vms-alpha.c:7362
+#: vms-alpha.c:7945
 #, 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:7957
 #, c-format
 msgid "   filename   : %.*s\n"
 msgstr "   Ð½Ð°Ð·Ð²Ð° Ñ„Ð°Ð¹Ð»Ð°: %.*s\n"
 
-#: vms-alpha.c:7380
+#: vms-alpha.c:7973
 #, c-format
 msgid "   setfile %u\n"
 msgstr "   setfile %u\n"
 
-#: vms-alpha.c:7385 vms-alpha.c:7390
+#: vms-alpha.c:7980 vms-alpha.c:7987
 #, c-format
 msgid "   setrec %u\n"
 msgstr "   setrec %u\n"
 
-#: vms-alpha.c:7395 vms-alpha.c:7400
+#: vms-alpha.c:7994 vms-alpha.c:8001
 #, c-format
 msgid "   setlnum %u\n"
 msgstr "   setlnum %u\n"
 
-#: vms-alpha.c:7405 vms-alpha.c:7410
+#: vms-alpha.c:8008 vms-alpha.c:8015
 #, c-format
 msgid "   deflines %u\n"
 msgstr "   deflines %u\n"
 
-#: vms-alpha.c:7414
+#: vms-alpha.c:8019
 #, c-format
 msgid "   formfeed\n"
 msgstr "   formfeed\n"
 
-#: vms-alpha.c:7418
+#: vms-alpha.c:8023
 #, c-format
 msgid "   *unhandled* cmd %u\n"
 msgstr "   *Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð°* ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° %u\n"
 
-#: vms-alpha.c:7430
+#: vms-alpha.c:8035
 #, c-format
 msgid "*unhandled* dst type %u\n"
 msgstr "*Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹* Ñ‚Ð¸Ð¿ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�, %u\n"
 
-#: vms-alpha.c:7462
+#: vms-alpha.c:8067
 #, c-format
 msgid "cannot read EIHD\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EIHD\n"
 
-#: vms-alpha.c:7466
+#: vms-alpha.c:8071
 #, c-format
 msgid "EIHD: (size: %u, nbr blocks: %u)\n"
 msgstr "EIHD: (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u, ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð±Ð»Ð¾ÐºÑ–Ð²: %u)\n"
 
-#: vms-alpha.c:7470
+#: vms-alpha.c:8075
 #, c-format
 msgid " majorid: %u, minorid: %u\n"
 msgstr " majorid: %u, minorid: %u\n"
 
-#: vms-alpha.c:7478
+#: vms-alpha.c:8083
 msgid "executable"
 msgstr "Ð²Ð¸ÐºÐ¾Ð½ÑƒÐ²Ð°Ð½Ð¸Ð¹"
 
-#: vms-alpha.c:7481
+#: vms-alpha.c:8086
 msgid "linkable image"
 msgstr "ÐºÐ¾Ð¼Ð¿Ð¾Ð½Ð¾Ð²Ð°Ð½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·"
 
-#: vms-alpha.c:7488
+#: vms-alpha.c:8093
 #, c-format
 msgid " image type: %u (%s)"
 msgstr " Ñ‚Ð¸Ð¿ Ð¾Ð±Ñ€Ð°Ð·Ñƒ: %u (%s)"
 
-#: vms-alpha.c:7494
+#: vms-alpha.c:8099
 msgid "native"
 msgstr "Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ð¹"
 
-#: vms-alpha.c:7497
+#: vms-alpha.c:8102
 msgid "CLI"
 msgstr "CLI"
 
-#: vms-alpha.c:7504
+#: vms-alpha.c:8109
 #, c-format
 msgid ", subtype: %u (%s)\n"
 msgstr ", Ð¿Ñ–Ð´Ñ‚Ð¸Ð¿: %u (%s)\n"
 
-#: vms-alpha.c:7511
+#: vms-alpha.c:8116
 #, 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:8120
 #, c-format
 msgid " fixup info rva: "
 msgstr " Ð´Ð°Ð½Ñ– Ñ‰Ð¾Ð´Ð¾ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ rva: "
 
-#: vms-alpha.c:7517
+#: vms-alpha.c:8122
 #, c-format
 msgid ", symbol vector rva: "
 msgstr ", Ð²ÐµÐºÑ‚Ð¾Ñ€ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² rva: "
 
-#: vms-alpha.c:7520
+#: vms-alpha.c:8125
 #, c-format
 msgid ""
 "\n"
@@ -7255,653 +8413,750 @@ msgstr ""
 "\n"
 " Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¼Ð°Ñ�Ð¸Ð²Ñƒ Ð²ÐµÑ€Ñ�Ñ–Ñ—: %u\n"
 
-#: vms-alpha.c:7525
+#: vms-alpha.c:8130
 #, 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:8136
 #, c-format
 msgid " linker flags: %08x:"
 msgstr " Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ°: %08x:"
 
-#: vms-alpha.c:7562
+#: vms-alpha.c:8167
 #, 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:8173
 #, c-format
 msgid " BPAGE: %u"
 msgstr " BPAGE: %u"
 
-#: vms-alpha.c:7575
+#: vms-alpha.c:8180
 #, 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:8183
 #, c-format
 msgid ", alias: %u\n"
 msgstr ", Ð¿Ñ�ÐµÐ²Ð´Ð¾Ð½Ñ–Ð¼: %u\n"
 
-#: vms-alpha.c:7586
+#: vms-alpha.c:8191
 #, c-format
 msgid "system version array information:\n"
 msgstr "Ð¼Ð°Ñ�Ð¸Ð² Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð²ÐµÑ€Ñ�Ñ–Ñ— Ñ�Ð¸Ñ�Ñ‚ÐµÐ¼Ð¸:\n"
 
-#: vms-alpha.c:7590
+#: vms-alpha.c:8195
 #, c-format
 msgid "cannot read EIHVN header\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº EIHVN\n"
 
-#: vms-alpha.c:7600
+#: vms-alpha.c:8205
 #, c-format
 msgid "cannot read EIHVN version\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð²ÐµÑ€Ñ�Ñ–ÑŽ EIHVN\n"
 
-#: vms-alpha.c:7603
+#: vms-alpha.c:8208
 #, c-format
 msgid "   %02u "
 msgstr "   %02u "
 
-#: vms-alpha.c:7607
+#: vms-alpha.c:8212
 msgid "BASE_IMAGE       "
 msgstr "BASE_IMAGE       "
 
-#: vms-alpha.c:7610
+#: vms-alpha.c:8215
 msgid "MEMORY_MANAGEMENT"
 msgstr "MEMORY_MANAGEMENT"
 
-#: vms-alpha.c:7613
+#: vms-alpha.c:8218
 msgid "IO               "
 msgstr "IO               "
 
-#: vms-alpha.c:7616
+#: vms-alpha.c:8221
 msgid "FILES_VOLUMES    "
 msgstr "FILES_VOLUMES    "
 
-#: vms-alpha.c:7619
+#: vms-alpha.c:8224
 msgid "PROCESS_SCHED    "
 msgstr "PROCESS_SCHED    "
 
-#: vms-alpha.c:7622
+#: vms-alpha.c:8227
 msgid "SYSGEN           "
 msgstr "SYSGEN           "
 
-#: vms-alpha.c:7625
+#: vms-alpha.c:8230
 msgid "CLUSTERS_LOCKMGR "
 msgstr "CLUSTERS_LOCKMGR "
 
-#: vms-alpha.c:7628
+#: vms-alpha.c:8233
 msgid "LOGICAL_NAMES    "
 msgstr "LOGICAL_NAMES    "
 
-#: vms-alpha.c:7631
+#: vms-alpha.c:8236
 msgid "SECURITY         "
 msgstr "SECURITY         "
 
-#: vms-alpha.c:7634
+#: vms-alpha.c:8239
 msgid "IMAGE_ACTIVATOR  "
 msgstr "IMAGE_ACTIVATOR  "
 
-#: vms-alpha.c:7637
+#: vms-alpha.c:8242
 msgid "NETWORKS         "
 msgstr "NETWORKS         "
 
-#: vms-alpha.c:7640
+#: vms-alpha.c:8245
 msgid "COUNTERS         "
 msgstr "COUNTERS         "
 
-#: vms-alpha.c:7643
+#: vms-alpha.c:8248
 msgid "STABLE           "
 msgstr "STABLE           "
 
-#: vms-alpha.c:7646
+#: vms-alpha.c:8251
 msgid "MISC             "
 msgstr "MISC             "
 
-#: vms-alpha.c:7649
+#: vms-alpha.c:8254
 msgid "CPU              "
 msgstr "CPU              "
 
-#: vms-alpha.c:7652
+#: vms-alpha.c:8257
 msgid "VOLATILE         "
 msgstr "VOLATILE         "
 
-#: vms-alpha.c:7655
+#: vms-alpha.c:8260
 msgid "SHELL            "
 msgstr "SHELL            "
 
-#: vms-alpha.c:7658
+#: vms-alpha.c:8263
 msgid "POSIX            "
 msgstr "POSIX            "
 
-#: vms-alpha.c:7661
+#: vms-alpha.c:8266
 msgid "MULTI_PROCESSING "
 msgstr "MULTI_PROCESSING "
 
-#: vms-alpha.c:7664
+#: vms-alpha.c:8269
 msgid "GALAXY           "
 msgstr "GALAXY           "
 
-#: vms-alpha.c:7667
+#: vms-alpha.c:8272
 msgid "*unknown*        "
 msgstr "*Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¾*       "
 
-#: vms-alpha.c:7683 vms-alpha.c:7958
+#: vms-alpha.c:8288 vms-alpha.c:8575
 #, c-format
 msgid "cannot read EIHA\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EIHA\n"
 
-#: vms-alpha.c:7686
+#: vms-alpha.c:8291
 #, c-format
 msgid "Image activation:  (size=%u)\n"
 msgstr "Ð�ÐºÑ‚Ð¸Ð²Ð°Ñ†Ñ–Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ:  (Ñ€Ð¾Ð·Ð¼Ñ–Ñ€=%u)\n"
 
-#: vms-alpha.c:7689
+#: vms-alpha.c:8294
 #, c-format
 msgid " First address : 0x%08x 0x%08x\n"
 msgstr " ÐŸÐµÑ€ÑˆÐ° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7693
+#: vms-alpha.c:8298
 #, c-format
 msgid " Second address: 0x%08x 0x%08x\n"
 msgstr " Ð”Ñ€ÑƒÐ³Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7697
+#: vms-alpha.c:8302
 #, c-format
 msgid " Third address : 0x%08x 0x%08x\n"
 msgstr " Ð¢Ñ€ÐµÑ‚Ñ� Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7701
+#: vms-alpha.c:8306
 #, c-format
 msgid " Fourth address: 0x%08x 0x%08x\n"
 msgstr " Ð§ÐµÑ‚Ð²ÐµÑ€Ñ‚Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7705
+#: vms-alpha.c:8310
 #, c-format
 msgid " Shared image  : 0x%08x 0x%08x\n"
 msgstr " Ð¡Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±Ñ€Ð°Ð·: 0x%08x 0x%08x\n"
 
-#: vms-alpha.c:7716
+#: vms-alpha.c:8321
 #, c-format
 msgid "cannot read EIHI\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EIHI\n"
 
-#: vms-alpha.c:7720
+#: vms-alpha.c:8325
 #, c-format
 msgid "Image identification: (major: %u, minor: %u)\n"
 msgstr "Ð†Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ: (Ñ�Ñ‚Ð°Ñ€ÑˆÐ¸Ð¹: %u, Ð¼Ð¾Ð»Ð¾Ð´ÑˆÐ¸Ð¹: %u)\n"
 
-#: vms-alpha.c:7723
+#: vms-alpha.c:8331
 #, c-format
 msgid " image name       : %.*s\n"
 msgstr " Ð½Ð°Ð·Ð²Ð° Ð¾Ð±Ñ€Ð°Ð·Ñƒ     : %.*s\n"
 
-#: vms-alpha.c:7725
+#: vms-alpha.c:8332
 #, c-format
 msgid " link time        : %s\n"
 msgstr " Ñ‡Ð°Ñ� ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� : %s\n"
 
-#: vms-alpha.c:7727
+#: vms-alpha.c:8337
 #, c-format
 msgid " image ident      : %.*s\n"
 msgstr " Ñ–Ð´. Ð¾Ð±Ñ€Ð°Ð·Ñƒ         : %.*s\n"
 
-#: vms-alpha.c:7729
+#: vms-alpha.c:8341
 #, c-format
 msgid " linker ident     : %.*s\n"
 msgstr " Ñ–Ð´. ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸ÐºÐ°: %.*s\n"
 
-#: vms-alpha.c:7731
+#: vms-alpha.c:8345
 #, c-format
 msgid " image build ident: %.*s\n"
 msgstr " Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ� Ð¾Ð±Ñ€Ð°Ð·Ñƒ: %.*s\n"
 
-#: vms-alpha.c:7741
+#: vms-alpha.c:8354
 #, c-format
 msgid "cannot read EIHS\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EIHS\n"
 
-#: vms-alpha.c:7745
+#: vms-alpha.c:8358
 #, c-format
 msgid "Image symbol & debug table: (major: %u, minor: %u)\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð² Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð¾Ð±Ñ€Ð°Ð·Ñƒ (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°: %u, Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�: %u)\n"
 
-#: vms-alpha.c:7751
+#: vms-alpha.c:8364
 #, 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:8369
 #, c-format
 msgid " global symbol table: vbn: %u, records: %u\n"
 msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²: vbn: %u, Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²: %u\n"
 
-#: vms-alpha.c:7761
+#: vms-alpha.c:8374
 #, c-format
 msgid " debug module table : vbn: %u, size: %u\n"
 msgstr " Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ–Ð²: vbn: %u, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u\n"
 
-#: vms-alpha.c:7774
+#: vms-alpha.c:8387
 #, c-format
 msgid "cannot read EISD\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ EISD\n"
 
-#: vms-alpha.c:7785
+#: vms-alpha.c:8398
 #, 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:8406
 #, 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:8411
 #, c-format
 msgid " flags: 0x%04x"
 msgstr " Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%04x"
 
-#: vms-alpha.c:7836
+#: vms-alpha.c:8449
 #, 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:8455
 msgid "NORMAL"
 msgstr "NORMAL"
 
-#: vms-alpha.c:7845
+#: vms-alpha.c:8458
 msgid "SHRFXD"
 msgstr "SHRFXD"
 
-#: vms-alpha.c:7848
+#: vms-alpha.c:8461
 msgid "PRVFXD"
 msgstr "PRVFXD"
 
-#: vms-alpha.c:7851
+#: vms-alpha.c:8464
 msgid "SHRPIC"
 msgstr "SHRPIC"
 
-#: vms-alpha.c:7854
+#: vms-alpha.c:8467
 msgid "PRVPIC"
 msgstr "PRVPIC"
 
-#: vms-alpha.c:7857
+#: vms-alpha.c:8470
 msgid "USRSTACK"
 msgstr "USRSTACK"
 
-#: vms-alpha.c:7863
+#: vms-alpha.c:8476
 msgid ")\n"
 msgstr ")\n"
 
-#: vms-alpha.c:7866
+#: vms-alpha.c:8483
 #, c-format
 msgid " ident: 0x%08x, name: %.*s\n"
 msgstr " Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€: 0x%08x, Ð½Ð°Ð·Ð²Ð°: %.*s\n"
 
-#: vms-alpha.c:7876
+#: vms-alpha.c:8494
 #, c-format
 msgid "cannot read DMT\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ DMT\n"
 
-#: vms-alpha.c:7880
+#: vms-alpha.c:8498
 #, c-format
 msgid "Debug module table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:\n"
 
-#: vms-alpha.c:7889
+#: vms-alpha.c:8507
 #, c-format
 msgid "cannot read DMT header\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº DMT\n"
 
-#: vms-alpha.c:7895
+#: vms-alpha.c:8513
 #, 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:8523
 #, c-format
 msgid "cannot read DMT psect\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ psect DMT\n"
 
-#: vms-alpha.c:7909
+#: vms-alpha.c:8527
 #, c-format
 msgid "  psect start: 0x%08x, length: %u\n"
 msgstr "  Ð¿Ð¾Ñ‡Ð°Ñ‚Ð¾Ðº psect: 0x%08x, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð°: %u\n"
 
-#: vms-alpha.c:7922
+#: vms-alpha.c:8540
 #, c-format
 msgid "cannot read DST\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ DST\n"
 
-#: vms-alpha.c:7932
+#: vms-alpha.c:8550
 #, c-format
 msgid "cannot read GST\n"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ GST\n"
 
-#: vms-alpha.c:7936
+#: vms-alpha.c:8554
 #, c-format
 msgid "Global symbol table:\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¸Ñ… Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñ–Ð²:\n"
 
-#: vms-alpha.c:7965
+#: vms-alpha.c:8581
 #, c-format
 msgid "Image activator fixup: (major: %u, minor: %u)\n"
 msgstr "ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ° Ð°Ð´Ñ€ÐµÑ�Ð¸ Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ‚Ð¾Ñ€Ð° Ð¾Ð±Ñ€Ð°Ð·Ñƒ: (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°: %u, Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�: %u)\n"
 
-#: vms-alpha.c:7969
+#: vms-alpha.c:8585
 #, c-format
 msgid "  iaflink : 0x%08x %08x\n"
 msgstr "  iaflink : 0x%08x %08x\n"
 
-#: vms-alpha.c:7973
+#: vms-alpha.c:8589
 #, c-format
 msgid "  fixuplnk: 0x%08x %08x\n"
 msgstr "  fixuplnk: 0x%08x %08x\n"
 
-#: vms-alpha.c:7976
+#: vms-alpha.c:8592
 #, c-format
 msgid "  size : %u\n"
 msgstr "  Ñ€Ð¾Ð·Ð¼Ñ–Ñ€: %u\n"
 
-#: vms-alpha.c:7978
+#: vms-alpha.c:8594
 #, c-format
 msgid "  flags: 0x%08x\n"
 msgstr "  Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ–: 0x%08x\n"
 
-#: vms-alpha.c:7983
+#: vms-alpha.c:8599
 #, c-format
 msgid "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 msgstr "  qrelfixoff: %5u, lrelfixoff: %5u\n"
 
-#: vms-alpha.c:7988
+#: vms-alpha.c:8604
 #, c-format
 msgid "  qdotadroff: %5u, ldotadroff: %5u\n"
 msgstr "  qdotadroff: %5u, ldotadroff: %5u\n"
 
-#: vms-alpha.c:7993
+#: vms-alpha.c:8609
 #, c-format
 msgid "  codeadroff: %5u, lpfixoff  : %5u\n"
 msgstr "  codeadroff: %5u, lpfixoff  : %5u\n"
 
-#: vms-alpha.c:7996
+#: vms-alpha.c:8612
 #, c-format
 msgid "  chgprtoff : %5u\n"
 msgstr "  chgprtoff : %5u\n"
 
-#: vms-alpha.c:8000
+#: vms-alpha.c:8616
 #, c-format
 msgid "  shlstoff  : %5u, shrimgcnt : %5u\n"
 msgstr "  shlstoff  : %5u, shrimgcnt : %5u\n"
 
-#: vms-alpha.c:8003
+#: vms-alpha.c:8619
 #, c-format
 msgid "  shlextra  : %5u, permctx   : %5u\n"
 msgstr "  shlextra  : %5u, permctx   : %5u\n"
 
-#: vms-alpha.c:8006
+#: vms-alpha.c:8622
 #, c-format
 msgid "  base_va : 0x%08x\n"
 msgstr "  base_va : 0x%08x\n"
 
-#: vms-alpha.c:8008
+#: vms-alpha.c:8624
 #, c-format
 msgid "  lppsbfixoff: %5u\n"
 msgstr "  lppsbfixoff: %5u\n"
 
-#: vms-alpha.c:8016
+#: vms-alpha.c:8631
 #, c-format
 msgid " Shareable images:\n"
 msgstr " ÐžÐ±Ñ€Ð°Ð·Ð¸ Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�:\n"
 
-#: vms-alpha.c:8021
+#: vms-alpha.c:8642
 #, 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:8649
 #, c-format
 msgid " quad-word relocation fixups:\n"
 msgstr " Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñƒ Ñ‡Ð¾Ñ‚Ð¸Ñ€Ð¸ Ñ�Ð»Ð¾Ð²Ð°:\n"
 
-#: vms-alpha.c:8033
+#: vms-alpha.c:8655
 #, c-format
 msgid " long-word relocation fixups:\n"
 msgstr " Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ Ñƒ Ð´Ð¾Ð²Ð³Ðµ Ñ�Ð»Ð¾Ð²Ð¾:\n"
 
-#: vms-alpha.c:8038
+#: vms-alpha.c:8661
 #, c-format
 msgid " quad-word .address reference fixups:\n"
 msgstr " Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ .address Ñƒ Ñ‡Ð¾Ñ‚Ð¸Ñ€Ð¸ Ñ�Ð»Ð¾Ð²Ð°:\n"
 
-#: vms-alpha.c:8043
+#: vms-alpha.c:8666
 #, c-format
 msgid " long-word .address reference fixups:\n"
 msgstr " Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ .address Ñƒ Ð´Ð¾Ð²Ð³Ðµ Ñ�Ð»Ð¾Ð²Ð¾:\n"
 
-#: vms-alpha.c:8048
+#: vms-alpha.c:8671
 #, c-format
 msgid " Code Address Reference Fixups:\n"
 msgstr " ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð°Ð´Ñ€ÐµÑ� ÐºÐ¾Ð´Ñƒ:\n"
 
-#: vms-alpha.c:8053
+#: vms-alpha.c:8676
 #, c-format
 msgid " Linkage Pairs Reference Fixups:\n"
 msgstr " ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·ÐºÐ¸ Ð¿Ð¾Ñ�Ð¸Ð»Ð°Ð½ÑŒ Ð½Ð° Ð¿Ð°Ñ€Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ�:\n"
 
-#: vms-alpha.c:8062
+#: vms-alpha.c:8684
 #, c-format
 msgid " Change Protection (%u entries):\n"
 msgstr " Ð—Ð¼Ñ–Ð½Ð° Ð·Ð°Ñ…Ð¸Ñ�Ñ‚Ñƒ (%u Ð·Ð°Ð¿Ð¸Ñ�Ð¸):\n"
 
-#: vms-alpha.c:8068
+#: vms-alpha.c:8693
 #, 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:9571
 msgid "%P: relocatable link is not supported\n"
 msgstr "%P: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð½Ð½Ñ� Ð· Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñ�Ñ‚ÑŽ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾\n"
 
-#: vms-alpha.c:8979
+#: vms-alpha.c:9642
 #, 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:1530
 #, c-format
 msgid "could not open shared image '%s' from '%s'"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ Ð¾Ð±Ñ€Ð°Ð· Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Â«%sÂ» Ð· Â«%sÂ»"
 
-#: vms-misc.c:361
+#: vms-misc.c:374
 msgid "_bfd_vms_output_counted called with zero bytes"
 msgstr "_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: vms-misc.c:366
+#: vms-misc.c:379
 msgid "_bfd_vms_output_counted called with too many bytes"
 msgstr "_bfd_vms_output_counted Ð²Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð´Ð»Ñ� Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¾Ñ— ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ð±Ð°Ð¹Ñ‚Ñ–Ð²"
 
-#: xcofflink.c:832
+#: xcofflink.c:505
+#, c-format
+msgid "%pB: warning: illegal symbol index %lu in relocs"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ Ñ–Ð½Ð´ÐµÐºÑ� Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ %lu Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�Ñ…"
+
+#: xcofflink.c:924
 #, c-format
 msgid "%pB: XCOFF shared object when not producing XCOFF output"
 msgstr "%pB: Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚ XCOFF, Ñ…Ð¾Ñ‡Ð° Ð´Ð°Ð½Ñ– XCOFF Ð½Ðµ Ñ�Ñ‚Ð²Ð¾Ñ€ÑŽÑŽÑ‚ÑŒÑ�Ñ�"
 
-#: xcofflink.c:853
+#: xcofflink.c:945
 #, c-format
 msgid "%pB: dynamic object with no .loader section"
 msgstr "%pB: Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ð¾Ð±â€™Ñ”ÐºÑ‚ Ð±ÐµÐ· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .loader"
 
-#: xcofflink.c:1413
+#: xcofflink.c:1527
 #, c-format
 msgid "%pB: `%s' has line numbers but no enclosing section"
 msgstr "%pB: Â«%sÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ð¾Ð¼ÐµÑ€Ð¸ Ñ€Ñ�Ð´ÐºÑ–Ð², Ð°Ð»Ðµ Ð½Ðµ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: xcofflink.c:1466
+#: xcofflink.c:1583
 #, c-format
 msgid "%pB: class %d symbol `%s' has no aux entries"
 msgstr "%pB: ÐºÐ»Ð°Ñ� %d, Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ðµ Ð¼Ð°Ñ” Ð´Ð¾Ð¿Ð¾Ð¼Ñ–Ð¶Ð½Ð¸Ñ… Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð²"
 
-#: xcofflink.c:1489
+#: xcofflink.c:1606
 #, c-format
 msgid "%pB: symbol `%s' has unrecognized csect type %d"
 msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ» Ð½Ð°Ð»ÐµÐ¶Ð¸Ñ‚ÑŒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð³Ð¾ Ñ‚Ð¸Ð¿Ñƒ csect %d"
 
-#: xcofflink.c:1502
+#: xcofflink.c:1619
 #, 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:1650
+#, c-format
+msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>"
+msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ” ÐºÐ»Ð°Ñ�Ð¾Ð¼ %d, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %<PRIu64>"
+
+#: xcofflink.c:1785
 #, c-format
-msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRId64>"
-msgstr "%pB: Ñ�Ð¸Ð¼Ð²Ð¾Ð» XMC_TC0 Â«%sÂ» Ñ” ÐºÐ»Ð°Ñ�Ð¾Ð¼ %d, Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %<PRId64>"
+msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself"
+msgstr "%pB: Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð·Ð¼Ñ–Ñ�Ñ‚Ñƒ Â«%sÂ» Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_TLSML, Ñ�ÐºÐ¸Ð¹ Ð½Ðµ Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ñ�ÐµÐ±Ðµ"
 
-#: xcofflink.c:1680
+#: xcofflink.c:1819
 #, c-format
 msgid "%pB: csect `%s' not in enclosing section"
 msgstr "%pB: csect Â«%sÂ» Ð½Ðµ Ñƒ Ð·Ð°Ð²ÐµÑ€ÑˆÐ°Ð»ÑŒÐ½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–"
 
-#: xcofflink.c:1788
+#: xcofflink.c:1928
 #, c-format
 msgid "%pB: misplaced XTY_LD `%s'"
 msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ðµ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ� XTY_LD Â«%sÂ»"
 
-#: xcofflink.c:2109
+#: xcofflink.c:2271
 #, c-format
 msgid "%pB: reloc %s:%<PRId64> not in csect"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s:%<PRId64> Ð½Ðµ Ñƒ csect"
 
-#: xcofflink.c:3196
+#: xcofflink.c:3380
+#, c-format
+msgid "%pB: cannot export internal symbol `%s`."
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ñ‚Ð¸ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» Â«%sÂ»."
+
+#: xcofflink.c:3428
 #, c-format
 msgid "%s: no such symbol"
 msgstr "%s: Ð½ÐµÐ¼Ð°Ñ” Ñ‚Ð°ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
 
-#: xcofflink.c:3301
+#: xcofflink.c:3537
 #, c-format
 msgid "warning: attempt to export undefined symbol `%s'"
 msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ñ�Ð¿Ñ€Ð¾Ð±Ð° ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
 
-#: xcofflink.c:3680
+#: xcofflink.c:3885
 msgid "error: undefined symbol __rtinit"
 msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ð¹ Ñ�Ð¸Ð¼Ð²Ð¾Ð» __rtinit"
 
-#: xcofflink.c:4060
+#: xcofflink.c:4902
+#, c-format
+msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targeting'%s'"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ csect Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– rangeof Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64>, Ñ‰Ð¾ Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Â«%sÂ»"
+
+#: xcofflink.c:4931
+#, c-format
+msgid "%pB: Cannot create stub entry '%s'"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ð¸Ð¹ Ð·Ð°Ð¿Ð¸Ñ� %s"
+
+#: xcofflink.c:5051
+msgid "TOC overflow during stub generation; try -mminimal-toc when compiling"
+msgstr "ÐŸÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� TOC Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…; Ñ�Ð¿Ñ€Ð¾Ð±ÑƒÐ¹Ñ‚Ðµ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€ -mminimal-toc Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ�"
+
+#: xcofflink.c:5119
 #, c-format
 msgid "%pB: loader reloc in unrecognized section `%s'"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð° Ñƒ Ð½ÐµÑ€Ð¾Ð·Ð¿Ñ–Ð·Ð½Ð°Ð½Ð¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%sÂ»"
 
-#: xcofflink.c:4072
+#: xcofflink.c:5131
 #, c-format
 msgid "%pB: `%s' in loader reloc but not loader sym"
 msgstr "%pB: Â«%sÂ» Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ– Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð°, Ð°Ð»Ðµ Ð½Ðµ Ñƒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ð°Ñ… Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ�"
 
-#: xcofflink.c:4089
+#: xcofflink.c:5148
 #, c-format
 msgid "%pB: loader reloc in read-only section %pA"
 msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ñ‡Ð° Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–, Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð¼Ñƒ Ð»Ð¸ÑˆÐµ Ð´Ð»Ñ� Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ�, %pA"
 
-#: xcofflink.c:5113
+#: xcofflink.c:6227
 #, 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
+#: xcofflink.c:7343
+#, c-format
+msgid "Unable to link input file: %s"
+msgstr "Ð�Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ„Ð°Ð¹Ð» Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…: %s"
+
+#: xtensa-dynconfig.c:60
+msgid "Unable to load DLL."
+msgstr "Ð�Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ DLL."
+
+#: xtensa-dynconfig.c:86
+#, c-format
+msgid "%s is defined but could not be loaded: %s"
+msgstr "%s Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾, Ð°Ð»Ðµ Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸: %s"
+
+#: xtensa-dynconfig.c:102
+#, c-format
+msgid "%s is loaded but symbol \"%s\" is not found: %s"
+msgstr "%s Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð¾, Ð°Ð»Ðµ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ» Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾: %s"
+
+#: xtensa-dynconfig.c:115
+#, c-format
+msgid "%s is defined but plugin support is disabled"
+msgstr "%s Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾, Ð°Ð»Ðµ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ð´Ð¾Ð´Ð°Ñ‚ÐºÑ–Ð² Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾"
+
+#. Not fatal, this callback cannot fail.
+#: elfnn-aarch64.c:2889 elfnn-riscv.c:5940
+#, c-format
+msgid "unknown attribute for symbol `%s': 0x%02x"
+msgstr "Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¸ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»: 0x%02x"
+
+#: elfnn-aarch64.c:5486
 #, 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:5578
 #, 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:5591
+#, c-format
+msgid "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input file too large) and --fix-cortex-a53-843419=adr used.  Run the linker with --fix-cortex-a53-843419=full instead"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€ Ð½ÐµÐ³Ð°Ð¹Ð½Ð¾Ð³Ð¾ Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ Ð·Ñ– Ð·Ð²Ñ–Ñ‚Ñƒ 843419 Ð¿Ð¾Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ 0x%<PRIx64> Ð´Ð»Ñ� ADR (Ð²Ñ…Ñ–Ð´Ð½Ð¸Ð¹ Ñ„Ð°Ð¹Ð» Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼) Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ --fix-cortex-a53-843419=adr. Ð’Ð°Ñ€Ñ‚Ð¾ Ð·Ð°Ð¿ÑƒÑ�Ñ‚Ð¸Ñ‚Ð¸ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¸Ðº Ñ–Ð· Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --fix-cortex-a53-843419=full"
+
+#: elfnn-aarch64.c:6134
 #, 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:6154
+#, c-format
+msgid "%pB: conditional branch to undefined symbol `%s' not allowed"
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ ÑƒÐ¼Ð¾Ð²Ð½Ñƒ Ð³Ñ–Ð»ÐºÑƒ Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
+
+#: elfnn-aarch64.c:6242 elfnn-kvx.c:2382
 #, 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:6356 elfnn-aarch64.c:6393
+#, c-format
+msgid "%pB: TLS relocation %s against undefined symbol `%s'"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»"
+
+#: elfnn-aarch64.c:7384
 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:7412
 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:7979
 #, 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-aarch64.c:8940
 #, c-format
-msgid "%pB: warning: RVE PLT generation not supported"
-msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT RVE Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s'\n"
+msgstr "%P: %pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð½Ðµ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ð´Ð»Ñ� ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ñ…Ð¸Ñ‰ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2311
-msgid "%X%P: internal error: out of range error\n"
-msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ\n"
+#: elfnn-kvx.c:929
+msgid "%P: Could not assign '%pA' to an output section. Retry without --enable-non-contiguous-regions.\n"
+msgstr "%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ð¾Ð²'Ñ�Ð·Ð°Ñ‚Ð¸ Â«%pAÂ» Ñ–Ð· Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¾Ð¼ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ�. ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ñ–Ñ‚ÑŒ Ð±ÐµÐ· --enable-non-contiguous-regions.\n"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2315
-msgid "%X%P: internal error: unsupported relocation error\n"
-msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
+#: elfnn-kvx.c:2127
+#, c-format
+msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'"
+msgstr "%pB(%pA+%#<PRIx64>): Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Â«%sÂ»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2325
-msgid "%X%P: internal error: unknown error\n"
-msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°\n"
+#: elfnn-kvx.c:2851
+#, c-format
+msgid "%s: Bad ELF id: `%d'"
+msgstr "%s: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ–Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ñ–ÐºÐ°Ñ‚Ð¾Ñ€ ELF: Â«%dÂ»"
+
+#: elfnn-kvx.c:2906
+#, c-format
+msgid "%s: compiled as 32-bit object and %s is 64-bit"
+msgstr "%s: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ñ�Ðº 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚, Ð° %s Ñ” 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼"
+
+#: elfnn-kvx.c:2909
+#, c-format
+msgid "%s: compiled as 64-bit object and %s is 32-bit"
+msgstr "%s: Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ñ�Ðº 64-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¹ Ð¾Ð±'Ñ”ÐºÑ‚, Ð° %s Ñ” 32-Ð±Ñ–Ñ‚Ð¾Ð²Ð¸Ð¼"
+
+#: elfnn-kvx.c:2911
+#, c-format
+msgid "%s: object size does not match that of target %s"
+msgstr "%s: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ð¾Ð¼ Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %s"
+
+#. Ignore init flag - it may not be set, despite the flags field
+#. containing valid data.
+#: elfnn-kvx.c:2999
+#, c-format
+msgid "Private flags = 0x%lx : "
+msgstr "Ð—Ð°ÐºÑ€Ð¸Ñ‚Ñ– Ð¿Ñ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– = 0x%lx : "
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2711
+#: elfnn-kvx.c:3003
 #, c-format
-msgid "error: %pB: Mis-matched ISA version for '%s' exetension. %d.%d vs %d.%d"
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ñ–Ñ�Ñ‚ÑŒ Ð²ÐµÑ€Ñ�Ñ–Ñ— ISA Ð´Ð»Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ». %d.%d, Ð° Ð½Ðµ %d.%d"
+msgid "Coolidge (kv3) V1 64 bits"
+msgstr "Coolidge (kv3) V1 64 Ð±Ñ–Ñ‚Ð¸"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2729
+#: elfnn-kvx.c:3005
 #, 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Â»."
+msgid "Coolidge (kv3) V2 64 bits"
+msgstr "Coolidge (kv3) V2 64 Ð±Ñ–Ñ‚Ð¸"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2773
+#: elfnn-kvx.c:3007
 #, c-format
-msgid "error: %pB: Mis-matched ISA string to merge '%s' and '%s'."
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ñ�Ð´ÐºÐ°Ñ… ISA Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½ÑŽ Â«%sÂ» Ð· Â«%sÂ»."
+msgid "Coolidge (kv4) V1 64 bits"
+msgstr "Coolidge (kv4) V1 64 Ð±Ñ–Ñ‚Ð¸"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2921
+#: elfnn-kvx.c:3012
 #, c-format
-msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)."
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ–Ð· Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s)."
+msgid "Coolidge (kv3) V1 32 bits"
+msgstr "Coolidge (kv3) V1 32 Ð±Ñ–Ñ‚Ð¸"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2946
+#: elfnn-kvx.c:3014
 #, c-format
-msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)."
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: XLEN Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð´Ð»Ñ� Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u)."
+msgid "Coolidge (kv3) V2 32 bits"
+msgstr "Coolidge (kv3) V2 32 Ð±Ñ–Ñ‚Ð¸"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:2954
+#: elfnn-kvx.c:3016
 #, c-format
-msgid "error: %pB: Unspported XLEN (%u), you mightusing wrong emulation."
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� XLEN (%u). Ð™Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, Ð²Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚Ðµ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ñƒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–ÑŽ."
+msgid "Coolidge (kv4) V1 32 bits"
+msgstr "Coolidge (kv4) V1 32 Ð±Ñ–Ñ‚Ð¸"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3039
+#: elfnn-kvx.c:3848
 #, c-format
-msgid "error: %pB: conflicting priv spec version (major/minor/revision)."
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð²ÐµÑ€Ñ�Ñ–Ð¹ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— priv (Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð°/Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶Ð½Ð°/Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ�)."
+msgid "relocation against `%s' has faulty GOT type "
+msgstr "Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð¼Ð°Ñ” Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ð¸Ð¹ Ñ‚Ð¸Ð¿ GOT"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3055
+#: elfnn-loongarch.c:303 elfnn-loongarch.c:355
 #, c-format
-msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned."
-msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ñ–Ð· Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ�Ñ‚ÐµÐºÐ°, Ð° Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ– Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾ %u-Ð±Ð°Ð¹Ñ‚Ð¾Ð²Ñƒ Ñ–Ð· Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ�Ñ‚ÐµÐºÐ°."
+msgid "%#<PRIx64> invaild imm"
+msgstr "%#<PRIx64> Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¹ imm"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3096
+#: elfnn-loongarch.c:537 elfnn-riscv.c:4383
 #, c-format
 msgid ""
 "%pB: ABI is incompatible with that of the selected emulation:\n"
@@ -7910,111 +9165,306 @@ msgstr ""
 "%pB: ABI Ñ” Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼ Ñ–Ð· Ð²Ð¸Ð±Ñ€Ð°Ð½Ð¾ÑŽ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ”ÑŽ:\n"
 "  Ñ†Ñ–Ð»ÑŒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–Ñ—, Â«%sÂ», Ð½Ðµ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Â«%sÂ»"
 
-#: /work/sources/binutils/branches//2.32/bfd/elfnn-riscv.c:3119
+#: elfnn-loongarch.c:592
+#, c-format
+msgid "%pB: can't link different ABI object."
+msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¾Ð±'Ñ”ÐºÑ‚ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ ABI."
+
+#: elfnn-loongarch.c:735
+msgid "Internal error: unreachable."
+msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ñ–Ñ�Ñ‚ÑŒ."
+
+#: elfnn-loongarch.c:915
+#, c-format
+msgid "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; recompile with %s%s"
+msgstr "%pB:(%pA+%#lx): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� %s; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· %s%s"
+
+#: elfnn-loongarch.c:919
+msgid " and check the symbol visibility"
+msgstr " Ñ– Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ñ‚Ðµ Ð²Ð¸Ð´Ð¸Ð¼Ñ–Ñ�Ñ‚ÑŒ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ"
+
+#: elfnn-loongarch.c:1045
+#, c-format
+msgid "%pB: stack based reloc type (%u) is not supported with -z pack-relative-relocs"
+msgstr "%pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÑƒ Ñ‚Ð¸Ð¿Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð½Ð° Ð¾Ñ�Ð½Ð¾Ð²Ñ– Ñ�Ñ‚ÐµÐºÐ° (%u) Ð· -z pack-relative-relocs Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#: elfnn-loongarch.c:1240
+#, c-format
+msgid "%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used in ELFCLASS64 when making a shared object or PIE"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� R_LARCH_32 Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ ELFCLASS64 Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ� Ð°Ð±Ð¾ PIE"
+
+#: elfnn-loongarch.c:1305
+#, c-format
+msgid "%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary"
+msgstr "%pB: R_LARCH_ALIGN Ð·Ñ– Ð·Ñ�ÑƒÐ²Ð¾Ð¼ %<PRId64> Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð° Ð¼ÐµÐ¶Ñƒ Ñ–Ð½Ñ�Ñ‚Ñ€ÑƒÐºÑ†Ñ–Ñ—"
+
+#: elfnn-loongarch.c:4196
+msgid "cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend out of [-2048, 2048)"
+msgstr "Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾ Ð²Ð¸Ð·Ð½Ð°Ñ‡Ð¸Ñ‚Ð¸ R_LARCH_PCREL20_S2 Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ð»Ð°Ð±ÐºÐ¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼ Ð¿Ð¾Ð·Ð° Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ [-2048, 2048)"
+
+#: elfnn-loongarch.c:4706
+msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'"
+msgstr "Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð·Ð° Ð´Ð¾Ð¿Ð¾Ð¼Ð¾Ð³Ð¾ÑŽ 'gcc -mno-relax', Ð°Ð±Ð¾ 'as -mno-relax', Ð°Ð±Ð¾ 'ld --no-relax'"
+
+#: elfnn-loongarch.c:5584 elfnn-riscv.c:5168
+#, 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>"
+
+#: elfnn-riscv.c:385 elfnn-riscv.c:436 elfnn-riscv.c:484 elfnn-riscv.c:520
+#, c-format
+msgid "%pB: warning: RVE PLT generation not supported"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� PLT RVE Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#: elfnn-riscv.c:675
+#, c-format
+msgid "%pB: error: unsupported PLT type: %u"
+msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ‚Ð¸Ð¿ PLT: %u"
+
+#: elfnn-riscv.c:1120
+#, c-format
+msgid "%pB: relocation %s against absolute symbol `%s' can not be used when making a shared object"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
+
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 when making a shared object"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ RV32 Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
+
+#: elfnn-riscv.c:2095
+#, c-format
+msgid "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds available space"
+msgstr "Ð¾Ñ�Ñ‚Ð°Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� uleb128 Ð· Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿Ð¾Ð¼ 0x%lx Ñƒ %pA Ð· %pB Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ� Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ð½Ð¾Ð³Ð¾ Ð¿Ñ€Ð¾Ñ�Ñ‚Ð¾Ñ€Ñƒ"
+
+#: elfnn-riscv.c:2337
+#, c-format
+msgid "%pcrel_lo missing matching %pcrel_hi"
+msgstr "Ð£ %pcrel_lo Ð½ÐµÐ¼Ð°Ñ” Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ð³Ð¾ %pcrel_hi"
+
+#: elfnn-riscv.c:2340
+#, c-format
+msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "%pcrel_lo Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼ Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð»Ñ� R_RISCV_GOT_HI20"
+
+#. Check the overflow when adding reloc addend.
+#: elfnn-riscv.c:2345
+#, c-format
+msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� %%pcrel_lo Ñ€Ð°Ð·Ð¾Ð¼ Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� %%pcrel_hi Ð´Ð¾Ñ€Ñ–Ð²Ð½ÑŽÑ” 0x%<PRIx64> Ð±ÐµÐ· Ð´Ð¾Ð´Ð°Ð½ÐºÐ°, Ð°Ð»Ðµ Ð¼Ð¾Ð¶Ðµ Ð±ÑƒÑ‚Ð¸ Ñ€Ñ–Ð²Ð½Ð¸Ð¼ 0x%<PRIx64> Ð¿Ñ–Ñ�Ð»Ñ� Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ� %%pcrel_lo"
+
+#: elfnn-riscv.c:2353
+#, c-format
+msgid "%pcrel_lo overflow with an addend"
+msgstr "Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� %pcrel_lo Ñ€Ð°Ð·Ð¾Ð¼ Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
+
+#: elfnn-riscv.c:2843
+#, c-format
+msgid "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by binutils 2.42 or up"
+msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: R_RISCV_SUB_ULEB128 Ñ–Ð· Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¼ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð¼, Ð±ÑƒÐ´ÑŒ Ð»Ð°Ñ�ÐºÐ°, Ð¿ÐµÑ€ÐµÐ·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ñ–Ð· binutils 2.42 Ð°Ð±Ð¾ Ð½Ð¾Ð²Ñ–ÑˆÐ¾ÑŽ Ð²ÐµÑ€Ñ�Ñ–Ñ”ÑŽ"
+
+#: elfnn-riscv.c:2923
+msgid "The addend isn't allowed for R_RISCV_GOT_HI20"
+msgstr "Ð�Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð´Ð¾Ð´Ð°Ð½ÐºÐ¸ Ð´Ð»Ñ� R_RISCV_GOT_HI20"
+
+#. PR 28509, when generating the shared object, these
+#. referenced symbols may bind externally, which means
+#. they will be exported to the dynamic symbol table,
+#. and are preemptible by default.  These symbols cannot
+#. be referenced by the non-pic relocations, like
+#. R_RISCV_JAL and R_RISCV_RVC_JUMP relocations.
+#.
+#. However, consider that linker may relax the R_RISCV_CALL
+#. relocations to R_RISCV_JAL or R_RISCV_RVC_JUMP, if
+#. these relocations are relocated to the plt entries,
+#. then we won't report error for them.
+#.
+#. Perhaps we also need the similar checks for the
+#. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations.
+#: elfnn-riscv.c:3022
+#, c-format
+msgid "%%X%%P: relocation %s against `%s' which may bind externally can not be used when making a shared object; recompile with -fPIC\n"
+msgstr "%%X%%P: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ», Ñ�ÐºÐ¸Ð¹ Ð¼Ð¾Ð¶Ðµ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·ÑƒÐ²Ð°Ñ‚Ð¸Ñ�Ñ� Ð·Ð·Ð¾Ð²Ð½Ñ–, Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð· -fPIC\n"
+
+#: elfnn-riscv.c:3103
+#, c-format
+msgid "%pcrel_lo section symbol with an addend"
+msgstr "Ñ�Ð¸Ð¼Ð²Ð¾Ð» Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pcrel_lo Ñ–Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
+
+#: elfnn-riscv.c:3124
+#, c-format
+msgid "%tlsdesc_lo with addend"
+msgstr "%tlsdesc_lo Ð· Ð´Ð¾Ð´Ð°Ð½ÐºÐ¾Ð¼"
+
+#: elfnn-riscv.c:3357
+#, c-format
+msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n"
+msgstr "%%X%%P: Ð½ÐµÑ€Ð¾Ð·Ð²â€™Ñ�Ð·Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ»\n"
+
+#: elfnn-riscv.c:3392
+msgid "%X%P: internal error: out of range error\n"
+msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð²Ð¸Ñ…Ñ–Ð´ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ð´Ñ–Ð°Ð¿Ð°Ð·Ð¾Ð½Ñƒ\n"
+
+#: elfnn-riscv.c:3397
+msgid "%X%P: internal error: unsupported relocation error\n"
+msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�\n"
+
+#: elfnn-riscv.c:3403
+msgid "dangerous relocation error"
+msgstr "Ð½ÐµÐ±ÐµÐ·Ð¿ÐµÑ‡Ð½Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ�"
+
+#: elfnn-riscv.c:3409
+msgid "%X%P: internal error: unknown error\n"
+msgstr "%X%P: Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð° Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°\n"
+
+#: elfnn-riscv.c:3982
+#, 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:4025
+#, c-format
+msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ð¾Ð·Ð±Ñ–Ð¶Ð½Ñ–Ñ�Ñ‚ÑŒ Ñƒ Ñ€Ñ�Ð´ÐºÐ°Ñ… ISA Ð·Ð°Ð²Ð°Ð¶Ð°Ñ” Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½ÑŽ Â«%sÂ» Ð· Â«%sÂ»"
+
+#: elfnn-riscv.c:4162
+#, c-format
+msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ñ€Ñ�Ð´Ð¾Ðº ISA Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ–Ð· Ñ€Ñ�Ð´ÐºÐ¾Ð¼ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%s)"
+
+#: elfnn-riscv.c:4182
+#, c-format
+msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: XLEN Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u) Ð½Ðµ Ð·Ð±Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð·Ñ– Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�Ð¼ Ð´Ð»Ñ� Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… (%u)"
+
+#: elfnn-riscv.c:4190
+#, c-format
+msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation"
+msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ðµ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ� XLEN (%u). Ð™Ð¼Ð¾Ð²Ñ–Ñ€Ð½Ð¾, Ð²Ð¸ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚Ðµ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¾Ð²Ñƒ ÐµÐ¼ÑƒÐ»Ñ�Ñ†Ñ–ÑŽ"
+
+#: elfnn-riscv.c:4314
+msgid "warning: privileged spec version 1.9.1 can not be linked with other spec versions"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð¿Ñ€Ð¸Ð²Ñ–Ð»ÐµÐ¹Ð¾Ð²Ð°Ð½Ñƒ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— Ð¿Ñ€Ð°Ð² Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ 1.9.1 Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ñ–Ð· Ñ–Ð½ÑˆÐ¸Ð¼Ð¸ Ð²ÐµÑ€Ñ�Ñ–Ñ�Ð¼Ð¸ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ð¹"
+
+#: elfnn-riscv.c:4342
+#, 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:4439
 #, 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:4449
 #, 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:4473
 #, 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>"
+msgid "warning: %pB: unknown RISCV ABI object attribute %d"
+msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° ABI RISCV %d"
+
+#: elfnn-riscv.c:1162
+#, c-format
+msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 when making a shared object"
+msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Ð½ÐµÐ°Ð±Ñ�Ð¾Ð»ÑŽÑ‚Ð½Ð¾Ð³Ð¾ Ñ�Ð¸Ð¼Ð²Ð¾Ð»Ñƒ Â«%sÂ», Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ñƒ RV64 Ð¿Ñ–Ð´ Ñ‡Ð°Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ� Ð¾Ð±â€™Ñ”ÐºÑ‚Ð° Ñ�Ð¿Ñ–Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð½Ñ�"
 
-#: peigen.c:157 pepigen.c:157 pex64igen.c:157
+#: peXXigen.c:161
 #, c-format
 msgid "%pB: unable to find name for empty section"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð½Ð°Ð¹Ñ‚Ð¸ Ð½Ð°Ð·Ð²Ñƒ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½ÑŒÐ¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
 
-#: peigen.c:183 pepigen.c:183 pex64igen.c:183
+#: peXXigen.c:188
 #, 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:199
 #, c-format
 msgid "%pB: unable to create fake empty section"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ„Ñ–ÐºÑ‚Ð¸Ð²Ð½Ð¸Ð¹ Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ–Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»"
 
-#: peigen.c:532 pepigen.c:532 pex64igen.c:532
+#: peXXigen.c:928
 #, c-format
-msgid "%pB: aout header specifies an invalid number of data-directory entries: %ld"
-msgstr "%pB: Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº aout Ð²ÐºÐ°Ð·ÑƒÑ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñƒ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ…: %ld"
+msgid "%pB:%.8s: section below image base"
+msgstr "%pB:%.8s: Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð¿Ñ–Ð´ Ð¾Ñ�Ð½Ð¾Ð²Ð¾ÑŽ Ð¾Ð±Ñ€Ð°Ð·Ñƒ"
 
-#: peigen.c:1091 pepigen.c:1091 pex64igen.c:1091
+#: peXXigen.c:933
+#, c-format
+msgid "%pB:%.8s: RVA truncated"
+msgstr "%pB:%.8s: RVA Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾"
+
+#: peXXigen.c:1066
 #, 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:1232
 msgid "Export Directory [.edata (or where ever we found it)]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� [.edata (Ð°Ð±Ð¾ Ñ–Ð½ÑˆÐµ Ð¼Ñ–Ñ�Ñ†Ðµ, Ð´Ðµ Ð¹Ð¾Ð³Ð¾ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾)]"
 
-#: peigen.c:1236 pepigen.c:1236 pex64igen.c:1236
+#: peXXigen.c:1233
 msgid "Import Directory [parts of .idata]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� [Ñ‡Ð°Ñ�Ñ‚Ð¸Ð½Ð¸ .idata]"
 
-#: peigen.c:1237 pepigen.c:1237 pex64igen.c:1237
+#: peXXigen.c:1234
 msgid "Resource Directory [.rsrc]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ€ÐµÑ�ÑƒÑ€Ñ�Ñ–Ð² [.rsrc]"
 
-#: peigen.c:1238 pepigen.c:1238 pex64igen.c:1238
+#: peXXigen.c:1235
 msgid "Exception Directory [.pdata]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ [.pdata]"
 
-#: peigen.c:1239 pepigen.c:1239 pex64igen.c:1239
+#: peXXigen.c:1236
 msgid "Security Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð°Ñ…Ð¸Ñ�Ñ‚Ñƒ"
 
-#: peigen.c:1240 pepigen.c:1240 pex64igen.c:1240
+#: peXXigen.c:1237
 msgid "Base Relocation Directory [.reloc]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� [.reloc]"
 
-#: peigen.c:1241 pepigen.c:1241 pex64igen.c:1241
+#: peXXigen.c:1238
 msgid "Debug Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸"
 
-#: peigen.c:1242 pepigen.c:1242 pex64igen.c:1242
+#: peXXigen.c:1239
 msgid "Description Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð¾Ð¿Ð¸Ñ�Ñ–Ð²"
 
-#: peigen.c:1243 pepigen.c:1243 pex64igen.c:1243
+#: peXXigen.c:1240
 msgid "Special Directory"
 msgstr "ÐžÑ�Ð¾Ð±Ð»Ð¸Ð²Ð¸Ð¹ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³"
 
-#: peigen.c:1244 pepigen.c:1244 pex64igen.c:1244
+#: peXXigen.c:1241
 msgid "Thread Storage Directory [.tls]"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ð½Ð½Ñ� Ð¿Ð¾Ñ‚Ð¾ÐºÑ–Ð² [.tls]"
 
-#: peigen.c:1245 pepigen.c:1245 pex64igen.c:1245
+#: peXXigen.c:1242
 msgid "Load Configuration Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ� Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ"
 
-#: peigen.c:1246 pepigen.c:1246 pex64igen.c:1246
+#: peXXigen.c:1243
 msgid "Bound Import Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ð¸Ð¼ÑƒÑˆÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: peigen.c:1247 pepigen.c:1247 pex64igen.c:1247
+#: peXXigen.c:1244
 msgid "Import Address Table Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð°Ð´Ñ€ÐµÑ�"
 
-#: peigen.c:1248 pepigen.c:1248 pex64igen.c:1248
+#: peXXigen.c:1245
 msgid "Delay Import Directory"
 msgstr "ÐšÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð²Ñ–Ð´ÐºÐ»Ð°Ð´ÐµÐ½Ð¾Ð³Ð¾ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�"
 
-#: peigen.c:1249 pepigen.c:1249 pex64igen.c:1249
+#: peXXigen.c:1246
 msgid "CLR Runtime Header"
 msgstr "Ð”Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ð¹ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº CLR"
 
-#: peigen.c:1250 pepigen.c:1250 pex64igen.c:1250
+#: peXXigen.c:1247
 msgid "Reserved"
 msgstr "Ð—Ð°Ñ€ÐµÐ·ÐµÑ€Ð²Ð¾Ð²Ð°Ð½Ð¾"
 
-#: peigen.c:1310 pepigen.c:1310 pex64igen.c:1310
+#: peXXigen.c:1312
 #, c-format
 msgid ""
 "\n"
@@ -8023,7 +9473,7 @@ msgstr ""
 "\n"
 "Ð†Ñ�Ð½ÑƒÑ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ñ—Ñ— Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾\n"
 
-#: peigen.c:1316 pepigen.c:1316 pex64igen.c:1316
+#: peXXigen.c:1318
 #, c-format
 msgid ""
 "\n"
@@ -8032,7 +9482,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ…\n"
 
-#: peigen.c:1323 pepigen.c:1323 pex64igen.c:1323
+#: peXXigen.c:1325
 #, c-format
 msgid ""
 "\n"
@@ -8041,30 +9491,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ 0x%lx\n"
 
-#: peigen.c:1365 pepigen.c:1365 pex64igen.c:1365
-#, c-format
-msgid ""
-"\n"
-"Function descriptor located at the start address: %04lx\n"
-msgstr ""
-"\n"
-"Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð·Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %04lx\n"
-
-#: peigen.c:1369 pepigen.c:1369 pex64igen.c:1369
-#, 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
-#, c-format
-msgid ""
-"\n"
-"No reldata section! Function descriptor not decoded.\n"
-msgstr ""
-"\n"
-"Ð�ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ reldata! Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¾.\n"
-
-#: peigen.c:1382 pepigen.c:1382 pex64igen.c:1382
+#: peXXigen.c:1331
 #, c-format
 msgid ""
 "\n"
@@ -8073,7 +9500,7 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ– Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s)\n"
 
-#: peigen.c:1385 pepigen.c:1385 pex64igen.c:1385
+#: peXXigen.c:1334
 #, c-format
 msgid ""
 " vma:            Hint    Time      Forward  DLL       First\n"
@@ -8082,7 +9509,7 @@ msgstr ""
 " vma:            Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð§Ð°Ñ�Ð¾Ð²Ð°    Ð›Ð°Ð½Ñ†ÑŽÐ¶Ð¾Ðº Ð�Ð°Ð·Ð²Ð°     ÐŸÐµÑ€ÑˆÐ¸Ð¹\n"
 "                 Ð²ÐºÐ°Ð·.   ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐºÐ°  Ñ�Ð¿Ñ€Ñ�Ð¼.   DLL       ÑˆÐ»ÑŽÐ·\n"
 
-#: peigen.c:1435 pepigen.c:1435 pex64igen.c:1435
+#: peXXigen.c:1383
 #, c-format
 msgid ""
 "\n"
@@ -8091,12 +9518,12 @@ msgstr ""
 "\n"
 "\tÐ�Ð°Ð·Ð²Ð° DLL: %.*s\n"
 
-#: peigen.c:1451 pepigen.c:1451 pex64igen.c:1451
+#: peXXigen.c:1399
 #, c-format
-msgid "\tvma:  Hint/Ord Member-Name Bound-To\n"
-msgstr "\tvma:  Ð’ÐºÐ°Ð·/ÐŸÐ¾Ñ€ Ð�Ð°Ð·Ð²Ð°-ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·Ð°Ð½Ð¾-Ð´Ð¾\n"
+msgid "\tvma:     Ordinal  Hint  Member-Name  Bound-To\n"
+msgstr "\tvma:     ÐŸÐ¾Ñ€Ñ�Ð´Ðº   Ð’ÐºÐ°Ð·  Ð�Ð°Ð·Ð²Ð°-ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚Ð° ÐŸÑ€Ð¸Ð²â€™Ñ�Ð·Ð°Ð½Ð¾-Ð´Ð¾\n"
 
-#: peigen.c:1476 pepigen.c:1476 pex64igen.c:1476
+#: peXXigen.c:1424
 #, c-format
 msgid ""
 "\n"
@@ -8105,13 +9532,12 @@ msgstr ""
 "\n"
 "Ð†Ñ�Ð½ÑƒÑ” Ð·Ð°Ð¿Ð¸Ñ� Ð¿ÐµÑ€ÑˆÐ¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ñƒ, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ð¹Ð¾Ð³Ð¾ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾\n"
 
-#: peigen.c:1520 peigen.c:1559 pepigen.c:1520 pepigen.c:1559 pex64igen.c:1520
-#: pex64igen.c:1559
+#: peXXigen.c:1474 peXXigen.c:1519
 #, c-format
-msgid "\t<corrupt: 0x%04lx>"
-msgstr "\t<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾: 0x%04lx>"
+msgid "\t<corrupt: 0x%08lx>"
+msgstr "\t<Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾: 0x%08lx>"
 
-#: peigen.c:1652 pepigen.c:1652 pex64igen.c:1652
+#: peXXigen.c:1613
 #, c-format
 msgid ""
 "\n"
@@ -8120,34 +9546,25 @@ msgstr ""
 "\n"
 "Ð†Ñ�Ð½ÑƒÑ” Ð·Ð°Ð¿Ð¸Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ñ—Ñ— Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾\n"
 
-#: peigen.c:1658 pepigen.c:1658 pex64igen.c:1658
-#, c-format
-msgid ""
-"\n"
-"There is an export table in %s, but that section has no contents\n"
-msgstr ""
-"\n"
-"Ð£ %s Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ…\n"
-
-#: peigen.c:1669 pepigen.c:1669 pex64igen.c:1669
+#: peXXigen.c:1626
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it does not fit into that section\n"
+"There is an export table in %s, but it is too small (%d)\n"
 msgstr ""
 "\n"
-"Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ—Ñ— Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–\n"
+"Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ð²Ð¾Ð½Ð° Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ (%d)\n"
 
-#: peigen.c:1680 pepigen.c:1680 pex64igen.c:1680
+#: peXXigen.c:1634
 #, c-format
 msgid ""
 "\n"
-"There is an export table in %s, but it is too small (%d)\n"
+"There is an export table in %s, but contents cannot be read\n"
 msgstr ""
 "\n"
-"Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ð²Ð¾Ð½Ð° Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ (%d)\n"
+"Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ð²Ð¼Ñ–Ñ�Ñ‚ Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸\n"
 
-#: peigen.c:1686 pepigen.c:1686 pex64igen.c:1686
+#: peXXigen.c:1640
 #, c-format
 msgid ""
 "\n"
@@ -8156,7 +9573,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� Ñƒ 0x%lx\n"
 
-#: peigen.c:1714 pepigen.c:1714 pex64igen.c:1714
+#: peXXigen.c:1671
 #, c-format
 msgid ""
 "\n"
@@ -8166,67 +9583,67 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ– ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ� (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s)\n"
 
-#: peigen.c:1718 pepigen.c:1718 pex64igen.c:1718
+#: peXXigen.c:1675
 #, 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:1678
 #, 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:1682
 #, 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:1685
 #, c-format
 msgid "Name \t\t\t\t"
 msgstr "Ð�Ð°Ð·Ð²Ð°\t\t\t\t"
 
-#: peigen.c:1739 pepigen.c:1739 pex64igen.c:1739
+#: peXXigen.c:1696
 #, 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:1699
 #, c-format
 msgid "Number in:\n"
 msgstr "Ð�Ð¾Ð¼ÐµÑ€ Ñƒ:\n"
 
-#: peigen.c:1745 pepigen.c:1745 pex64igen.c:1745
+#: peXXigen.c:1702
 #, 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:1706
 #, 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:1709
 #, c-format
 msgid "Table Addresses\n"
 msgstr "Ð¢Ð°Ð±Ð»Ð¸Ñ‡Ð½Ñ– Ð°Ð´Ñ€ÐµÑ�Ð¸\n"
 
-#: peigen.c:1755 pepigen.c:1755 pex64igen.c:1755
+#: peXXigen.c:1712
 #, c-format
 msgid "\tExport Address Table \t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� \t\t"
 
-#: peigen.c:1760 pepigen.c:1760 pex64igen.c:1760
+#: peXXigen.c:1717
 #, c-format
 msgid "\tName Pointer Table \t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸ \t\t"
 
-#: peigen.c:1765 pepigen.c:1765 pex64igen.c:1765
+#: peXXigen.c:1722
 #, c-format
 msgid "\tOrdinal Table \t\t\t"
 msgstr "\tÐ¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð² \t\t\t"
 
-#: peigen.c:1779 pepigen.c:1779 pex64igen.c:1779
+#: peXXigen.c:1736
 #, c-format
 msgid ""
 "\n"
@@ -8235,51 +9652,49 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ñ… Ð°Ð´Ñ€ÐµÑ� â€” Ð¾Ñ�Ð½Ð¾Ð²Ð° Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²: %ld\n"
 
-#: peigen.c:1788 pepigen.c:1788 pex64igen.c:1788
+#: peXXigen.c:1746
 #, 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:1765
 msgid "Forwarder RVA"
 msgstr "ÐŸÐµÑ€ÐµÑ�Ð¿Ñ€Ñ�Ð¼Ð¾Ð²Ð½Ð¸Ð¹ RVA"
 
-#: peigen.c:1819 pepigen.c:1819 pex64igen.c:1819
+#: peXXigen.c:1777
 msgid "Export RVA"
 msgstr "Ð•ÐºÑ�Ð¿Ð¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ð¸Ð¹ RVA"
 
-#: peigen.c:1826 pepigen.c:1826 pex64igen.c:1826
+#: peXXigen.c:1784
 #, c-format
 msgid ""
 "\n"
-"[Ordinal/Name Pointer] Table\n"
+"[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n"
 msgstr ""
 "\n"
-"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²/Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸]\n"
+"Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� [Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð¸Ñ… Ð½Ð¾Ð¼ÐµÑ€Ñ–Ð²/Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÑ–Ð² Ð½Ð° Ð½Ð°Ð·Ð²Ð¸] -- Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð° Ð¾Ñ�Ð½Ð¾Ð²Ð° %ld\n"
 
-#: peigen.c:1834 pepigen.c:1834 pex64igen.c:1834
+#: peXXigen.c:1794
 #, 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:1801
 #, 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:1815
 #, c-format
-msgid "\t[%4ld] <corrupt offset: %lx>\n"
-msgstr "\t[%4ld] <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²: %lx>\n"
+msgid "\t[%4ld] +base[%4ld]  %04lx <corrupt offset: %lx>\n"
+msgstr "\t[%4ld] +base[%4ld]  %04lx <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ð·Ñ�ÑƒÐ²: %lx>\n"
 
-#: peigen.c:1909 peigen.c:2106 pepigen.c:1909 pepigen.c:2106 pex64igen.c:1909
-#: pex64igen.c:2106
+#: peXXigen.c:1872 peXXigen.c:2042
 #, 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:1876 peXXigen.c:2046
 #, c-format
 msgid ""
 "\n"
@@ -8288,12 +9703,12 @@ msgstr ""
 "\n"
 "Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .pdata)\n"
 
-#: peigen.c:1916 pepigen.c:1916 pex64igen.c:1916
+#: peXXigen.c:1879
 #, 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:1881
 #, c-format
 msgid ""
 " vma:\t\tBegin    End      EH       EH       PrologEnd  Exception\n"
@@ -8302,27 +9717,12 @@ msgstr ""
 " vma:\t\tÐŸÐ¾Ñ‡.     ÐšÑ–Ð½Ñ†.    ÐžÐ±Ñ€Ð¾Ð±Ð½Ð¸Ðº Ð”Ð°Ð½Ñ–     Ð�Ð´Ñ€ÐµÑ�Ð°     ÐœÐ°Ñ�ÐºÐ°\n"
 "     \t\tÐ°Ð´Ñ€ÐµÑ�Ð°   Ð°Ð´Ñ€ÐµÑ�Ð°   EH       EH       ÐºÑ–Ð½Ñ†. Ð¿Ñ€Ð¾Ð».Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ�\n"
 
-#: peigen.c:1931 pepigen.c:1931 pex64igen.c:1931
+#: peXXigen.c:1894
 #, 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
-#, c-format
-msgid " Register save millicode"
-msgstr " ÐœÑ–Ð»Ñ–ÐºÐ¾Ð´ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°"
-
-#: peigen.c:2004 pepigen.c:2004 pex64igen.c:2004
-#, c-format
-msgid " Register restore millicode"
-msgstr " ÐœÑ–Ð»Ñ–ÐºÐ¾Ð´ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°"
-
-#: peigen.c:2007 pepigen.c:2007 pex64igen.c:2007
-#, c-format
-msgid " Glue code sequence"
-msgstr " ÐŸÐ¾Ñ�Ð»Ñ–Ð´Ð¾Ð²Ð½Ñ–Ñ�Ñ‚ÑŒ Ð·â€™Ñ”Ð´Ð½ÑƒÐ²Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ ÐºÐ¾Ð´Ñƒ"
-
-#: peigen.c:2112 pepigen.c:2112 pex64igen.c:2112
+#: peXXigen.c:2048
 #, c-format
 msgid ""
 " vma:\t\tBegin    Prolog   Function Flags    Exception EH\n"
@@ -8331,7 +9731,7 @@ msgstr ""
 " vma:\t\tÐŸÐ¾Ñ‡.     Ð”Ð¾Ð²Ð¶Ð¸Ð½Ð°  Ð”Ð¾Ð²Ð¶Ð¸Ð½Ð°  ÐŸÑ€Ð°Ð¿Ð¾Ñ€Ñ†Ñ– ÐžÐ±Ñ€Ð¾Ð±Ð½Ð¸Ðº  Ð”Ð°Ð½Ñ–\n"
 "     \t\tÐ°Ð´Ñ€ÐµÑ�Ð°   Ð¿Ñ€Ð¾Ð»Ð¾Ð³Ñƒ  Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—  32Ð± Ð²Ð¸Ðº. Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½ÑŒ EH\n"
 
-#: peigen.c:2234 pepigen.c:2234 pex64igen.c:2234
+#: peXXigen.c:2173
 #, c-format
 msgid ""
 "\n"
@@ -8342,7 +9742,7 @@ msgstr ""
 "\n"
 "ÐŸÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ñ‰Ð¾Ð´Ð¾ Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ñ„Ð°Ð¹Ð»Ð° PE (Ð¾Ð±Ñ€Ð¾Ð±Ð»ÐµÐ½Ð¸Ð¹ Ð²Ð¼Ñ–Ñ�Ñ‚ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ .reloc)\n"
 
-#: peigen.c:2264 pepigen.c:2264 pex64igen.c:2264
+#: peXXigen.c:2202
 #, c-format
 msgid ""
 "\n"
@@ -8351,62 +9751,62 @@ msgstr ""
 "\n"
 "Ð’Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð° Ð°Ð´Ñ€ÐµÑ�Ð°: %08lx, Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð°: %ld (0x%lx), ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð¿Ñ€Ð¸Ð²â€™Ñ�Ð·Ð¾Ðº: %ld\n"
 
-#: peigen.c:2282 pepigen.c:2282 pex64igen.c:2282
+#: peXXigen.c:2220
 #, 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:2281
 #, c-format
 msgid "%03x %*.s Entry: "
 msgstr "Ð’Ñ…Ñ–Ð´ Ð´Ð¾ %03x %*.s: "
 
-#: peigen.c:2367 pepigen.c:2367 pex64igen.c:2367
+#: peXXigen.c:2305
 #, c-format
 msgid "name: [val: %08lx len %d]: "
 msgstr "Ð½Ð°Ð·Ð²Ð°: [Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: %08lx Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° %d]: "
 
-#: peigen.c:2387 pepigen.c:2387 pex64igen.c:2387
+#: peXXigen.c:2325
 #, c-format
 msgid "<corrupt string length: %#x>\n"
 msgstr "<Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ°: %#x>\n"
 
-#: peigen.c:2397 pepigen.c:2397 pex64igen.c:2397
+#: peXXigen.c:2335
 #, c-format
 msgid "<corrupt string offset: %#lx>\n"
 msgstr "<Ð²Ñ–Ð´Ñ�Ñ‚ÑƒÐ¿ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ñ�Ð´ÐºÐ°: %#lx>\n"
 
-#: peigen.c:2402 pepigen.c:2402 pex64igen.c:2402
+#: peXXigen.c:2340
 #, c-format
 msgid "ID: %#08lx"
 msgstr "Ð†Ð´.: %#08lx"
 
-#: peigen.c:2405 pepigen.c:2405 pex64igen.c:2405
+#: peXXigen.c:2343
 #, c-format
 msgid ", Value: %#08lx\n"
 msgstr ", Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ�: %#08lx\n"
 
-#: peigen.c:2427 pepigen.c:2427 pex64igen.c:2427
+#: peXXigen.c:2365
 #, 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:2407
 #, c-format
 msgid "<unknown directory type: %d>\n"
 msgstr "<Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ñ‚Ð¸Ð¿ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ: %d>\n"
 
-#: peigen.c:2477 pepigen.c:2477 pex64igen.c:2477
+#: peXXigen.c:2415
 #, 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:2503
 #, c-format
 msgid "Corrupt .rsrc section detected!\n"
 msgstr "Ð’Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð» .rsrc!\n"
 
-#: peigen.c:2590 pepigen.c:2590 pex64igen.c:2590
+#: peXXigen.c:2527
 #, c-format
 msgid ""
 "\n"
@@ -8415,17 +9815,17 @@ msgstr ""
 "\n"
 "ÐŸÐžÐŸÐ•Ð Ð•Ð”Ð–Ð•Ð�Ð�Ð¯: Ð·Ð°Ð¹Ð²Ñ– Ð´Ð°Ð½Ñ– Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– .rsrc â€” Ñ—Ñ… Ð±ÑƒÐ´Ðµ Ð¿Ñ€Ð¾Ñ–Ð³Ð½Ð¾Ñ€Ð¾Ð²Ð°Ð½Ð¾ Windows:\n"
 
-#: peigen.c:2596 pepigen.c:2596 pex64igen.c:2596
+#: peXXigen.c:2533
 #, c-format
 msgid " String table starts at offset: %#03x\n"
 msgstr " Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ� Ñ€Ñ�Ð´ÐºÑ–Ð² Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ð· Ñ‚Ð°ÐºÐ¸Ð¼ Ð·Ñ�ÑƒÐ²Ð¾Ð¼: %#03x\n"
 
-#: peigen.c:2599 pepigen.c:2599 pex64igen.c:2599
+#: peXXigen.c:2536
 #, c-format
 msgid " Resources start at offset: %#03x\n"
 msgstr " Ð ÐµÑ�ÑƒÑ€Ñ�Ð¸ Ð¿Ð¾Ñ‡Ð¸Ð½Ð°ÑŽÑ‚ÑŒÑ�Ñ� Ð· Ñ‚Ð°ÐºÐ¸Ð¼ Ð·Ñ�ÑƒÐ²Ð¾Ð¼: %#03x\n"
 
-#: peigen.c:2651 pepigen.c:2651 pex64igen.c:2651
+#: peXXigen.c:2593
 #, c-format
 msgid ""
 "\n"
@@ -8434,7 +9834,7 @@ msgstr ""
 "\n"
 "Ð†Ñ�Ð½ÑƒÑ” ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ð°Ð»Ðµ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ð¹Ð¾Ð³Ð¾ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾\n"
 
-#: peigen.c:2657 pepigen.c:2657 pex64igen.c:2657
+#: peXXigen.c:2599
 #, c-format
 msgid ""
 "\n"
@@ -8443,7 +9843,7 @@ msgstr ""
 "\n"
 "Ð£ %s Ñ” ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ…\n"
 
-#: peigen.c:2664 pepigen.c:2664 pex64igen.c:2664
+#: peXXigen.c:2606
 #, c-format
 msgid ""
 "\n"
@@ -8452,7 +9852,7 @@ msgstr ""
 "\n"
 "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– %s Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ� Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…, Ð°Ð»Ðµ Ð²Ð¾Ð½Ð° Ñ” Ð½Ð°Ð´Ñ‚Ð¾ Ð¼Ð°Ð»Ð¾ÑŽ\n"
 
-#: peigen.c:2669 pepigen.c:2669 pex64igen.c:2669
+#: peXXigen.c:2611
 #, c-format
 msgid ""
 "\n"
@@ -8463,22 +9863,22 @@ msgstr ""
 "Ð’Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ñƒ %s Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ 0x%lx\n"
 "\n"
 
-#: peigen.c:2676 pepigen.c:2676 pex64igen.c:2676
+#: peXXigen.c:2618
 #, 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:2623
 #, c-format
 msgid "Type                Size     Rva      Offset\n"
 msgstr "Ð¢Ð¸Ð¿                 Ð Ð¾Ð·Ð¼     Rva      Ð—Ñ�ÑƒÐ²\n"
 
-#: peigen.c:2729 pepigen.c:2729 pex64igen.c:2729
+#: peXXigen.c:2671
 #, c-format
-msgid "(format %c%c%c%c signature %s age %ld)\n"
-msgstr "(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ñ–Ð´Ð¿Ð¸Ñ� %s Ð²Ñ–Ðº %ld)\n"
+msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n"
+msgstr "(Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ %c%c%c%c Ð¿Ñ–Ð´Ð¿Ð¸Ñ� %s Ð²Ñ–Ðº %ld pdb %s)\n"
 
-#: peigen.c:2737 pepigen.c:2737 pex64igen.c:2737
+#: peXXigen.c:2683
 #, c-format
 msgid "The debug directory size is not a multiple of the debug directory entry size\n"
 msgstr "Ð Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸ Ð½Ðµ Ñ” ÐºÑ€Ð°Ñ‚Ð½Ð¸Ð¼ Ð´Ð¾ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸\n"
@@ -8486,7 +9886,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:2767
 #, c-format
 msgid ""
 "\n"
@@ -8495,105 +9895,394 @@ msgstr ""
 "\n"
 "Ð¥Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ¸ 0x%x\n"
 
-#: peigen.c:2993 pepigen.c:2993 pex64igen.c:2993
+#: peXXigen.c:3052
 #, c-format
-msgid "%pB: Data Directory size (%lx) exceeds space left in section (%<PRIx64>)"
-msgstr "%pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ… (%lx) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¼Ñ–Ñ�Ñ†Ñ�, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– (%<PRIx64>)"
+msgid "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary at %<PRIx64>"
+msgstr "%pB: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³ Ð´Ð°Ð½Ð¸Ñ… (%lx Ð±Ð°Ð¹Ñ‚Ñ–Ð² Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %<PRIx64>) Ð²Ð¸Ñ…Ð¾Ð´Ð¸Ñ‚ÑŒ Ð·Ð° Ð¼ÐµÐ¶Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ñƒ %<PRIx64>"
 
-#: peigen.c:3025 pepigen.c:3025 pex64igen.c:3025
+#: peXXigen.c:3093
 msgid "failed to update file offsets in debug directory"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ Ð·Ñ�ÑƒÐ²Ð¸ Ñ„Ð°Ð¹Ð»Ñ–Ð² Ñƒ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð·Ñ– Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸ÐºÐ¸"
 
-#: peigen.c:3033 pepigen.c:3033 pex64igen.c:3033
+#: peXXigen.c:3102
 #, c-format
 msgid "%pB: failed to read debug data section"
 msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» Ð´Ñ–Ð°Ð³Ð½Ð¾Ñ�Ñ‚Ð¸Ñ‡Ð½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ…"
 
-#: peigen.c:3849 pepigen.c:3849 pex64igen.c:3849
+#: peXXigen.c:3907
 #, c-format
 msgid ".rsrc merge failure: duplicate string resource: %d"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ñ€ÐµÑ�ÑƒÑ€Ñ� Ð· Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼ Ñ€Ñ�Ð´ÐºÑ–Ð²: %d"
 
-#: peigen.c:3984 pepigen.c:3984 pex64igen.c:3984
+#: peXXigen.c:4042
 msgid ".rsrc merge failure: multiple non-default manifests"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° Ð½ÐµÑ‚Ð¸Ð¿Ð¾Ð²Ð¸Ñ… Ð¼Ð°Ð½Ñ–Ñ„ÐµÑ�Ñ‚Ñ–Ð²"
 
-#: peigen.c:4002 pepigen.c:4002 pex64igen.c:4002
+#: peXXigen.c:4060
 msgid ".rsrc merge failure: a directory matches a leaf"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð°Ñ” Ð»Ð¸Ñ�Ñ‚Ð¾Ðº"
 
-#: peigen.c:4044 pepigen.c:4044 pex64igen.c:4044
+#: peXXigen.c:4102
 msgid ".rsrc merge failure: duplicate leaf"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð»Ð¸Ñ�Ñ‚ÐºÑ–Ð²"
 
-#: peigen.c:4046 pepigen.c:4046 pex64igen.c:4046
+#: peXXigen.c:4107
 #, c-format
 msgid ".rsrc merge failure: duplicate leaf: %s"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð»Ð¸Ñ�Ñ‚ÐºÑ–Ð²: %s"
 
-#: peigen.c:4112 pepigen.c:4112 pex64igen.c:4112
+#: peXXigen.c:4174
 msgid ".rsrc merge failure: dirs with differing characteristics"
 msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ .rsrc: ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¸ Ð· Ñ€Ñ–Ð·Ð½Ð¸Ð¼Ð¸ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñ�Ñ‚Ð¸ÐºÐ°Ð¼Ð¸"
 
-#: peigen.c:4119 pepigen.c:4119 pex64igen.c:4119
+#: peXXigen.c:4181
 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:4293
 #, 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:4301
 #, 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:4441 peXXigen.c:4461 peXXigen.c:4482 peXXigen.c:4502
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: %s is missing"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” %s"
+
+#: peXXigen.c:4544 peXXigen.c:4590 peXXigen.c:4614 peXXigen.c:4698
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: %s Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾ Ð½Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼"
+
+#: peXXigen.c:4651
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: %s not properly aligned"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: %s Ð½Ðµ Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ð½Ð¾ Ð½Ð°Ð»ÐµÐ¶Ð½Ð¸Ð¼ Ñ‡Ð¸Ð½Ð¾Ð¼"
+
+#: peXXigen.c:4682
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: size too large for the containing section"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ, Ñ‰Ð¾ Ñƒ Ð½ÑŒÐ¾Ð¼Ñƒ Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒÑ�Ñ�"
+
+#: peXXigen.c:4690
+#, c-format
+msgid "%pB: unable to fill in DataDirectory[%d]: size can't be read from %s"
+msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDirectory[%d]: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð· %s"
+
+#, c-format
+#~ msgid "%F%pA: failed to align section\n"
+#~ msgstr "%F%pA: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð²Ð¸Ñ€Ñ–Ð²Ð½Ñ�Ñ‚Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€\n"
+
+#~ msgid "c' or `zcf"
+#~ msgstr "cÂ» Ð°Ð±Ð¾ Â«zcf"
+
+#~ msgid "c' or `zcd"
+#~ msgstr "cÂ» Ð°Ð±Ð¾ Â«zcd"
+
+#, c-format
+#~ msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD only\n"
+#~ msgstr "%pB(%pA+0x%v): Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s Ñ‰Ð¾Ð´Ð¾ Â«%sÂ» Ñ�Ð»Ñ–Ð´ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ Ð»Ð¸ÑˆÐµ Ð² ADD\n"
+
+#, c-format
+#~ msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
+#~ msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$4"
+
+#, c-format
+#~ msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
+#~ msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[12], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$5"
+
+#, 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"
+
+#, 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 Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ”"
+
+#, c-format
+#~ msgid "error: %pB: big-endian R2 is not supported"
+#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ð³Ð¾ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ Ð±Ð°Ð¹Ñ‚Ñ–Ð² R2 Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾"
+
+#, c-format
+#~ msgid "error: %pB: conflicting CPU architectures %d/%d"
+#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ Ð°Ñ€Ñ…Ñ–Ñ‚ÐµÐºÑ‚ÑƒÑ€ Ð¿Ñ€Ð¾Ñ†ÐµÑ�Ð¾Ñ€Ñ–Ð² %d/%d"
+
+#, c-format
+#~ msgid "global pointer relative relocation at address %#<PRIx64> when _gp not defined\n"
+#~ msgstr "Ð²Ñ–Ð´Ð½Ð¾Ñ�Ð½Ðµ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ð²ÐºÐ°Ð·Ñ–Ð²Ð½Ð¸ÐºÐ° Ð·Ð° Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %#<PRIx64>, Ð²Ñ‚Ñ–Ð¼, _gp Ð½Ðµ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾\n"
+
+#, 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"
+
+#, c-format
+#~ msgid "dynamic variable `%s' is zero size"
+#~ msgstr "Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð° Ð·Ð¼Ñ–Ð½Ð½Ð° Â«%sÂ» Ð¼Ð°Ñ” Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€"
+
+#, 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."
+
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"
-msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$2"
+#~ msgid "%pB: unhandled import type; %x"
+#~ msgstr "%pB: Ð½ÐµÐ¿Ñ€Ð¸Ð´Ð°Ñ‚Ð½Ð¸Ð¹ Ð´Ð¾ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ Ñ‚Ð¸Ð¿ Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�; %x"
 
-#: peigen.c:4403 pepigen.c:4403 pex64igen.c:4403
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"
-msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[1], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$4"
+#~ msgid "warning: %pB use privileged spec version %u.%u.%u but the output use version %u.%u.%u"
+#~ msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ” Ð¿Ñ€Ð¸Ð²Ñ–Ð»ÐµÐ¹Ð¾Ð²Ð°Ð½Ñƒ Ð²ÐµÑ€Ñ�Ñ–ÑŽ Ñ�Ð¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ— Ð¿Ñ€Ð°Ð² Ð´Ð¾Ñ�Ñ‚ÑƒÐ¿Ñƒ %u.%u.%u, Ð°Ð»Ðµ Ñƒ Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð¸Ñ… Ð´Ð°Ð½Ð¸Ñ… Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑ”Ñ‚ÑŒÑ�Ñ� Ð²ÐµÑ€Ñ�Ñ–Ñ� %u.%u.%u"
 
-#: peigen.c:4424 pepigen.c:4424 pex64igen.c:4424
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"
-msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[12], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” .idata$5"
+#~ msgid "not mapping: data=%lx mapped=%d\n"
+#~ msgstr "Ð½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð´Ð°Ð½Ñ–=%lx Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾=%d\n"
 
-#: peigen.c:4444 pepigen.c:4444 pex64igen.c:4444
 #, 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"
+#~ msgid "not mapping: env var not set\n"
+#~ msgstr "Ð½Ðµ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¾: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ Ð·Ð¼Ñ–Ð½Ð½Ñƒ Ñ�ÐµÑ€ÐµÐ´Ð¾Ð²Ð¸Ñ‰Ð° var\n"
 
-#: peigen.c:4486 pepigen.c:4486 pex64igen.c:4486
 #, 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 Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ”"
+#~ msgid "error: %pB is compiled for the EP9312, whereas %pB is compiled for XScale"
+#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� EP9312, Ð° %pB Ð·Ñ–Ð±Ñ€Ð°Ð½Ð¾ Ð´Ð»Ñ� XScale"
 
-#: peigen.c:4511 pepigen.c:4511 pex64igen.c:4511
 #, c-format
-msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing"
-msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð·Ð°Ð¿Ð¾Ð²Ð½Ð¸Ñ‚Ð¸ DataDictionary[9], Ð¾Ñ�ÐºÑ–Ð»ÑŒÐºÐ¸ Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” __tls_used"
+#~ msgid "%pB: invalid size field in group section header: %#<PRIx64>"
+#~ msgstr "%pB: Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñ– Ð´Ð°Ð½Ñ– Ð¿Ð¾Ð»Ñ� Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ Ñƒ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Ð³Ñ€ÑƒÐ¿: %#<PRIx64>"
+
+#, c-format
+#~ msgid "%pB: no valid group sections found"
+#~ msgstr "%pB: Ð½Ðµ Ð·Ð½Ð°Ð¹Ð´ÐµÐ½Ð¾ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ… Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² Ð³Ñ€ÑƒÐ¿Ð¸"
+
+#, c-format
+#~ msgid "%pB: no group info for section '%pA'"
+#~ msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ… Ñ‰Ð¾Ð´Ð¾ Ð³Ñ€ÑƒÐ¿Ð¸ Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»"
+
+#, c-format
+#~ msgid "%pB: SHT_GROUP section [index %d] has no SHF_GROUP sections"
+#~ msgstr "%pB: Ñ€Ð¾Ð·Ð´Ñ–Ð» SHT_GROUP [Ñ–Ð½Ð´ÐµÐºÑ� %d] Ð½Ðµ Ð¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–Ð² SHF_GROUP"
+
+#, c-format
+#~ msgid " [Maverick float format]"
+#~ msgstr " [Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ float Maverick]"
+
+#, c-format
+#~ msgid "error: %pB does not use %s instructions, whereas %pB does"
+#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñƒ %pB Ð½Ðµ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð¾Ð²ÑƒÑŽÑ‚ÑŒÑ�Ñ� ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ %s, Ð° Ñƒ %pB â€” Ñ‚Ð°Ðº"
+
+#, c-format
+#~ msgid "   Error: The length is less than the length of an EMH record\n"
+#~ msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EMH\n"
+
+#, c-format
+#~ msgid "   Error: The record length is less than the size of an EMH_MHD record\n"
+#~ msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EMH_MHD\n"
+
+#, c-format
+#~ msgid "   Error: The length is less than the length of an EEOM record\n"
+#~ msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ñ” Ð¼ÐµÐ½ÑˆÐ¾ÑŽ Ð·Ð° Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ EEOM\n"
+
+#, c-format
+#~ msgid "%pB: unsupported relocation type name %s"
+#~ msgstr "%pB: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð½Ð°Ð·Ð²Ð° Ñ‚Ð¸Ð¿Ñƒ Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� %s"
+
+#~ msgid "d' and `c"
+#~ msgstr "dÂ» Ñ– Â«c"
+
+#~ msgid "zvknha"
+#~ msgstr "zvknha"
+
+#~ msgid "zvknhb"
+#~ msgstr "zvknhb"
+
+#~ msgid "Deprecated %s called at %s line %d in %s\n"
+#~ msgstr "Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s Ñƒ %s, Ñ€Ñ�Ð´Ð¾Ðº %d Ñƒ %s\n"
+
+#~ msgid "Deprecated %s called\n"
+#~ msgstr "Ð’Ð¸ÐºÐ»Ð¸ÐºÐ°Ð½Ð¾ Ð·Ð°Ñ�Ñ‚Ð°Ñ€Ñ–Ð»Ñƒ %s\n"
+
+#~ msgid "cannot read GST record length\n"
+#~ msgstr "Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ Ð´Ð¾Ð²Ð¶Ð¸Ð½Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñƒ GST\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but that section has no contents\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð£ %s Ñ” Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ– Ð½ÐµÐ¼Ð°Ñ” Ð´Ð°Ð½Ð¸Ñ…\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "There is an export table in %s, but it does not fit into that section\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð£ %s Ð·Ð±ÐµÑ€Ñ–Ð³Ð°Ñ”Ñ‚ÑŒÑ�Ñ� Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ� ÐµÐºÑ�Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ�, Ð°Ð»Ðµ Ñ—Ñ— Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° Ð²Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚Ð¸ Ñƒ Ñ†ÑŒÐ¾Ð¼Ñƒ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñ–\n"
+
+#~ msgid "%pB: unable to initialize compress status for section %s"
+#~ msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ�Ñ‚Ð¸Ñ�ÐºÐ°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
+
+#~ msgid "%pB: unable to initialize decompress status for section %s"
+#~ msgstr "%pB: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ Ñ�Ñ‚Ð°Ð½ Ñ€Ð¾Ð·Ð¿Ð°ÐºÐ¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ� Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
+
+#~ msgid "error: %pB(%pA) section size (%#<PRIx64> bytes) is larger than file size (%#<PRIx64> bytes)"
+#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %pB(%pA) (%#<PRIx64> Ð±Ð°Ð¹Ñ‚Ñ–Ð²) Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ„Ð°Ð¹Ð»Ð° (%#<PRIx64> Ð±Ð°Ð¹Ñ‚Ñ–Ð²)"
+
+#~ msgid "DWARF error: section %s is larger than 10x its filesize! (0x%lx vs 0x%lx)"
+#~ msgstr "ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ° DWARF: Ñ€Ð¾Ð·Ð´Ñ–Ð» %s Ñ” Ð±Ñ–Ð»ÑŒÑˆÐ¸Ð¼ Ñƒ Ð¿Ð¾Ð½Ð°Ð´ 10 Ñ€Ð°Ð·Ñ–Ð² Ð·Ð° Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¹Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð°! (0x%lx Ð·Ð°Ð¼Ñ–Ñ�Ñ‚ÑŒ 0x%lx)"
+
+#~ msgid "%pB:%pA: error: attempting to write into an unallocated compressed section"
+#~ msgstr "%pB:%pA: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ñ�Ð¿Ñ€Ð¾Ð±Ð° Ð·Ð°Ð¿Ð¸Ñ�Ñƒ Ð´Ð¾ Ð½ÐµÑ€Ð¾Ð·Ð¿Ð¾Ð´Ñ–Ð»ÐµÐ½Ð¾Ð³Ð¾ Ñ�Ñ‚Ð¸Ñ�Ð½ÐµÐ½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ"
+
+#~ 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"
+
+#~ 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"
+
+#~ msgid "%pB: %pA+%"
+#~ msgstr "%pB: %pA+%"
+
+#~ msgid "warning: --enable-non-contiguous-regions discards section `%s' from '%s'\n"
+#~ msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: --enable-non-contiguous-regions Ð²Ñ–Ð´ÐºÐ¸Ð´Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð» Â«%sÂ» Ð· Â«%sÂ»\n"
+
+#~ msgid "%s: standard ISA extension `%c' is not in canonical order"
+#~ msgstr "%s: Ñ�Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%cÂ» Ð½Ðµ Ñƒ ÐºÐ°Ð½Ð¾Ð½Ñ–Ñ‡Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ"
+
+#~ msgid "%s: unknown prefix class for the ISA extension `%s'"
+#~ msgstr "%s: Ð½ÐµÐ²Ñ–Ð´Ð¾Ð¼Ð¸Ð¹ Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð½Ð¸Ð¹ ÐºÐ»Ð°Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA: Â«%sÂ»"
+
+#~ msgid "rv32e does not support the `f' extension"
+#~ msgstr "Ñƒ rv32e Ð½Ðµ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡ÐµÐ½Ð¾ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«fÂ»"
+
+#~ msgid "%F%P: failed to create BND PLT section\n"
+#~ msgstr "%F%P: Ð½Ðµ Ð²Ð´Ð°Ð»Ð¾Ñ�Ñ� Ñ�Ñ‚Ð²Ð¾Ñ€Ð¸Ñ‚Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð» PLT BND\n"
+
+#~ msgid "%pB: no core to allocate section name %s"
+#~ msgstr "%pB: Ð½ÐµÐ¼Ð°Ñ” Ð¾Ñ�Ð½Ð¾Ð²Ð¸ Ð´Ð»Ñ� Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ� Ð½Ð°Ð·Ð²Ð¸ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ %s"
+
+#~ 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"
+
+#~ msgid "%pB: aout header specifies an invalid number of data-directory entries: %u"
+#~ msgstr "%pB: Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²Ð¾Ðº aout Ð²ÐºÐ°Ð·ÑƒÑ” Ð½ÐµÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ñƒ ÐºÑ–Ð»ÑŒÐºÑ–Ñ�Ñ‚ÑŒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–Ð² ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ…: %u"
+
+#~ msgid "%pB: page size is too large (0x%x)"
+#~ msgstr "%pB: Ð½Ð°Ð´Ñ‚Ð¾ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ñ�Ñ‚Ð¾Ñ€Ñ–Ð½ÐºÐ¸ (0x%x)"
+
+#~ msgid "%s: duplicate prefixed ISA extension `%s'"
+#~ msgstr "%s: Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð½Ð½Ñ� Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð½Ð¾Ð³Ð¾ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%sÂ»"
+
+#~ msgid "%s: prefixed ISA extension `%s' is not in expected order.  It must come before `%s'"
+#~ msgstr "%s: Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ�Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� ISA Â«%sÂ» Ð½Ðµ Ñƒ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¾Ð¼Ñƒ Ð¿Ð¾Ñ€Ñ�Ð´ÐºÑƒ. Ð’Ð¾Ð½Ð¾ Ð¼Ð°Ñ” Ð¿ÐµÑ€ÐµÐ´ÑƒÐ²Ð°Ñ‚Ð¸ Â«%sÂ»"
+
+#~ msgid "warning: %pB: mis-matched ISA version %d.%d for '%s' extension, the output version is %d.%d"
+#~ msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB: Ð½ÐµÐ²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð° Ð²ÐµÑ€Ñ�Ñ–Ñ� ISA %d.%d Ð´Ð»Ñ� Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«%sÂ», Ð²ÐµÑ€Ñ�Ñ–Ñ� Ñ€ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð°Ñ‚Ñƒ â€” %d.%d"
+
+#~ msgid "%pB: TLS relocation at (0x%"
+#~ msgstr "%pB: Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½Ð½Ñ� TLS Ñƒ (0x%"
+
+#~ msgid "%pB: warning: line number count (%#lx) exceeds section size (%#lx)"
+#~ msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð»Ñ–Ñ‡Ð¸Ð»ÑŒÐ½Ð¸Ðº ÐºÑ–Ð»ÑŒÐºÐ¾Ñ�Ñ‚Ñ– Ñ€Ñ�Ð´ÐºÑ–Ð² (%#lx) Ð²ÐºÐ°Ð·ÑƒÑ” Ð½Ð° Ð¼Ñ–Ñ�Ñ†Ðµ Ð·Ð° Ð¼ÐµÐ¶Ð°Ð¼Ð¸ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñ–Ð² Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ (%#lx)"
+
+#~ msgid "internal error: RL78 reloc stack overflow"
+#~ msgstr "Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ� Ñ�Ñ‚ÐµÐºÐ° Ð¿ÐµÑ€ÐµÑ�ÑƒÐ²Ð°Ð½ÑŒ RL78"
+
+#~ 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"
+#~ "  toc adj Ð³Ñ–Ð»ÐºÐ¸  %lu\n"
+#~ "  notoc Ð³Ñ–Ð»ÐºÐ¸    %lu\n"
+#~ "  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"
+#~ "  Ð·Ð°Ð³. Ð·Ð°Ð¿Ð¸Ñ�     %lu"
+
+#~ msgid "warning: %pB is truncated: expected core file size >= %<PRIu64>, found: %<PRIu64>"
+#~ msgstr "Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: %pB Ð¾Ð±Ñ€Ñ–Ð·Ð°Ð½Ð¾: Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¾Ñ�Ð½Ð¾Ð²Ð½Ð¾Ð³Ð¾ Ñ„Ð°Ð¹Ð»Ð° >= %<PRIu64>, Ð²Ð¸Ñ�Ð²Ð»ÐµÐ½Ð¾: %<PRIu64>."
+
+#~ msgid "-march=%s: expect number after `%dp'"
+#~ msgstr "-march=%s: Ð¼Ð°Ð»Ð¾ Ð±ÑƒÑ‚Ð¸ Ñ‡Ð¸Ñ�Ð»Ð¾ Ð¿Ñ–Ñ�Ð»Ñ� Â«%dpÂ»"
+
+#~ msgid "-march=%s: rv%de is not a valid base ISA"
+#~ msgstr "-march=%s: rv%de Ð½Ðµ Ñ” ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ð¼ ISA Ð¾Ñ�Ð½Ð¾Ð²Ð¸"
+
+#~ msgid "   Error: length larger than remaining space in record\n"
+#~ msgstr "   ÐŸÐ¾Ð¼Ð¸Ð»ÐºÐ°: Ð´Ð¾Ð²Ð¶Ð¸Ð½Ð° Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÑƒÑ” Ð¼Ñ–Ñ�Ñ†Ðµ, Ñ�ÐºÐµ Ð»Ð¸ÑˆÐ¸Ð»Ð¾Ñ�Ñ� Ñƒ Ð·Ð°Ð¿Ð¸Ñ�Ñ–\n"
+
+#~ msgid "STA_QW (stack quadword) 0x%08x %08x\n"
+#~ msgstr "STA_QW (Ñ�Ñ‚ÐµÐº Ñ‡ÐµÑ‚Ð²ÐµÑ€Ð½Ð¸Ñ… Ñ�Ð»Ñ–Ð²) 0x%08x %08x\n"
+
+#~ msgid "%pB: error: erratum 843419 immediate 0x%"
+#~ msgstr "%pB: Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: Ð¿Ñ€Ð¾Ð¼Ñ–Ð¶Ð½Ð° Ð°Ð´Ñ€ÐµÑ�Ð° Ð´Ð»Ñ� Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ 843419 0x%"
+
+#~ msgid "%pA has both ordered [`%pA' in %pB] and unordered [`%pA' in %pB] sections"
+#~ msgstr "%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ [Â«%pAÂ» Ñƒ %pB] Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸"
+
+#~ msgid "%pA has both ordered and unordered sections"
+#~ msgstr "%pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ Ð¾Ð´Ñ€Ð°Ð·Ñƒ Ð²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ– Ð½ÐµÐ²Ð¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹ Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸"
+
+#~ msgid "%F%P: %pA has ordered sections with incompatible alignments\n"
+#~ msgstr "%F%P: %pA Ð¼Ñ–Ñ�Ñ‚Ð¸Ñ‚ÑŒ ÑƒÐ¿Ð¾Ñ€Ñ�Ð´ÐºÐ¾Ð²Ð°Ð½Ñ– Ñ€Ð¾Ð·Ð´Ñ–Ð»Ð¸ Ñ–Ð· Ð½ÐµÑ�ÑƒÐ¼Ñ–Ñ�Ð½Ð¸Ð¼Ð¸ Ð²Ð¸Ñ€Ñ–Ð²Ð½ÑŽÐ²Ð°Ð½Ð½Ñ�Ð¼Ð¸\n"
+
+#~ msgid "-march=%s: unexpected ISA string at end: %s"
+#~ msgstr "-march=%s: Ð½ÐµÐ¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð¸Ð¹ Ñ€Ñ�Ð´Ð¾Ðº ISA Ð½Ð°Ð¿Ñ€Ð¸ÐºÑ–Ð½Ñ†Ñ–: %s"
+
+#~ msgid "%pB: warning: sh_link not set for section `%pA'"
+#~ msgstr "%pB: Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ�: Ð½Ðµ Ð²Ñ�Ñ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¾ sh_link Ð´Ð»Ñ� Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ Â«%pAÂ»"
+
+#~ msgid "-march=%s: unsupported ISA subset `%c'"
+#~ msgstr "-march=%s: Ð½ÐµÐ¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÐ²Ð°Ð½Ð° Ð¿Ñ–Ð´Ð¼Ð½Ð¾Ð¶Ð¸Ð½Ð° ISA Â«%cÂ»"
+
+#~ msgid "-march=%s: `d' extension requires `f' extension"
+#~ msgstr "-march=%s: Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«dÂ» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«fÂ»"
+
+#~ msgid "-march=%s: `q' extension requires `d' extension"
+#~ msgstr "-march=%s: Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«qÂ» Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ� Â«dÂ»"
 
-#~ msgid "%H: call to `%pT' lacks nop, can't restore toc; recompile with -fPIC\n"
-#~ msgstr "%H: Ñƒ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ Â«%pTÂ» Ð½Ðµ Ð²Ð¸Ñ�Ñ‚Ð°Ñ‡Ð°Ñ” nop, Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� toc Ð½ÐµÐ¼Ð¾Ð¶Ð»Ð¸Ð²Ðµ; Ð·Ð±ÐµÑ€Ñ–Ñ‚ÑŒ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾ Ð· -fPIC\n"
+#~ msgid ""
+#~ "\n"
+#~ "Function descriptor located at the start address: %04lx\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÐ¾Ð²Ð°Ð½Ð¾ Ð·Ð° Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð¾ÑŽ Ð°Ð´Ñ€ÐµÑ�Ð¾ÑŽ %04lx\n"
 
-#~ msgid "error: %pB: <corrupt x86 ISA used size: 0x%x>"
-#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñ�Ñ‚Ð°Ð½Ð¾Ð³Ð¾ ISA x86: 0x%x>"
+#~ msgid "\tcode-base %08lx toc (loadable/actual) %08lx/%08lx\n"
+#~ msgstr "\ttoc Ð¾Ñ�Ð½Ð¾Ð²Ð¸ ÐºÐ¾Ð´Ñƒ %08lx (Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÑƒÐ²Ð°Ð½Ð¸Ð¹/Ð´Ñ–Ð¹Ñ�Ð½Ð¸Ð¹) %08lx/%08lx\n"
 
-#~ msgid "error: %pB: <corrupt x86 ISA needed size: 0x%x>"
-#~ msgstr "Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: %pB: <Ð¿Ð¾ÑˆÐºÐ¾Ð´Ð¶ÐµÐ½Ð¸Ð¹ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ Ð¿Ð¾Ñ‚Ñ€Ñ–Ð±Ð½Ð¾Ð³Ð¾ ISA x86: 0x%x>"
+#~ msgid ""
+#~ "\n"
+#~ "No reldata section! Function descriptor not decoded.\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Ð�ÐµÐ¼Ð°Ñ” Ñ€Ð¾Ð·Ð´Ñ–Ð»Ñƒ reldata! Ð”ÐµÑ�ÐºÑ€Ð¸Ð¿Ñ‚Ð¾Ñ€ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— Ð½Ðµ Ñ€Ð¾Ð·ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¾.\n"
 
-#~ msgid "%pB: can't link hard-float modules with soft-float modules"
-#~ msgstr "%pB: Ð½Ðµ Ð¼Ð¾Ð¶Ð½Ð° ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÑƒÐ²Ð°Ñ‚Ð¸ Ð¼Ð¾Ð´ÑƒÐ»Ñ– Ñ–Ð· Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ð½Ð¾ÑŽ Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ Ñ–Ð· Ð¼Ð¾Ð´ÑƒÐ»Ñ�Ð¼Ð¸ Ñ–Ð· Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾ÑŽ Ñ€ÑƒÑ…Ð¾Ð¼Ð¾ÑŽ ÐºÑ€Ð°Ð¿ÐºÐ¾ÑŽ"
+#~ msgid " Register save millicode"
+#~ msgstr " ÐœÑ–Ð»Ñ–ÐºÐ¾Ð´ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°"
 
-#~ 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 " Register restore millicode"
+#~ msgstr " ÐœÑ–Ð»Ñ–ÐºÐ¾Ð´ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ� Ñ€ÐµÐ³Ñ–Ñ�Ñ‚Ñ€Ð°"
 
-#~ msgid "%pB: Data Directory size (%#lx) is negative"
-#~ msgstr "%pB: Ñ€Ð¾Ð·Ð¼Ñ–Ñ€ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ñƒ Ð´Ð°Ð½Ð¸Ñ… (%#lx) Ñ” Ð²Ñ–Ð´'Ñ”Ð¼Ð½Ð¸Ð¼"
+#~ msgid " Glue code sequence"
+#~ 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.20200303/bfd/PORTING ./bfd/PORTING
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/PORTING	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/PORTING	2026-03-05 02:07:20.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-2025 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.20200303/bfd/ppcboot.c ./bfd/ppcboot.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ppcboot.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ppcboot.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for PPCbug boot records.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
    Written by Michael Meissner, Cygnus Support, <meissner@cygnus.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -97,21 +97,21 @@ typedef struct ppcboot_data
 
 /* Create a ppcboot object.  Invoked via bfd_set_format.  */
 
-static bfd_boolean
+static bool
 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));
     }
 
-  return TRUE;
+  return true;
 }
 
 
 /* Set the architecture to PowerPC */
-static bfd_boolean
+static bool
 ppcboot_set_arch_mach (bfd *abfd,
 		       enum bfd_architecture arch,
 		       unsigned long machine)
@@ -120,7 +120,7 @@ ppcboot_set_arch_mach (bfd *abfd,
     arch = bfd_arch_powerpc;
 
   else if (arch != bfd_arch_powerpc)
-    return FALSE;
+    return false;
 
   return bfd_default_set_arch_mach (abfd, arch, machine);
 }
@@ -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;
@@ -161,8 +161,7 @@ ppcboot_object_p (bfd *abfd)
       return NULL;
     }
 
-  if (bfd_bread (&hdr, (bfd_size_type) sizeof (hdr), abfd)
-      != sizeof (hdr))
+  if (bfd_read (&hdr, sizeof (hdr), abfd) != sizeof (hdr))
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -207,7 +206,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
@@ -217,17 +216,17 @@ ppcboot_object_p (bfd *abfd)
 
 /* Get contents of the only section.  */
 
-static bfd_boolean
+static bool
 ppcboot_get_section_contents (bfd *abfd,
 			      asection *section ATTRIBUTE_UNUSED,
 			      void * location,
 			      file_ptr offset,
 			      bfd_size_type count)
 {
-  if (bfd_seek (abfd, offset + (file_ptr) sizeof (ppcboot_hdr_t), SEEK_SET) != 0
-      || bfd_bread (location, count, abfd) != count)
-    return FALSE;
-  return TRUE;
+  if (bfd_seek (abfd, offset + sizeof (ppcboot_hdr_t), SEEK_SET) != 0
+      || bfd_read (location, count, abfd) != count)
+    return false;
+  return true;
 }
 
 
@@ -276,11 +275,11 @@ 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)
-    return FALSE;
+    return false;
 
   /* Start symbol.  */
   syms[0].the_bfd = abfd;
@@ -332,6 +331,7 @@ ppcboot_get_symbol_info (bfd *ignore_abf
 #define ppcboot_bfd_is_local_label_name bfd_generic_is_local_label_name
 #define ppcboot_get_lineno _bfd_nosymbols_get_lineno
 #define ppcboot_find_nearest_line _bfd_nosymbols_find_nearest_line
+#define ppcboot_find_nearest_line_with_alt _bfd_nosymbols_find_nearest_line_with_alt
 #define ppcboot_find_line _bfd_nosymbols_find_line
 #define ppcboot_find_inliner_info _bfd_nosymbols_find_inliner_info
 #define ppcboot_bfd_make_debug_symbol _bfd_nosymbols_bfd_make_debug_symbol
@@ -340,7 +340,7 @@ ppcboot_get_symbol_info (bfd *ignore_abf
 
 /* Write section contents of a ppcboot file.  */
 
-static bfd_boolean
+static bool
 ppcboot_set_section_contents (bfd *abfd,
 			      asection *sec,
 			      const void * data,
@@ -363,7 +363,7 @@ ppcboot_set_section_contents (bfd *abfd,
       for (s = abfd->sections; s != NULL; s = s->next)
 	s->filepos = s->vma - low;
 
-      abfd->output_has_begun = TRUE;
+      abfd->output_has_begun = true;
     }
 
   return _bfd_generic_set_section_contents (abfd, sec, data, offset, size);
@@ -380,7 +380,7 @@ ppcboot_sizeof_headers (bfd *abfd ATTRIB
 
 /* Print out the program headers.  */
 
-static bfd_boolean
+static bool
 ppcboot_bfd_print_private_bfd_data (bfd *abfd, void * farg)
 {
   FILE *f = (FILE *)farg;
@@ -445,7 +445,7 @@ ppcboot_bfd_print_private_bfd_data (bfd
     }
 
   fprintf (f, "\n");
-  return TRUE;
+  return true;
 }
 
 
@@ -470,8 +470,6 @@ ppcboot_bfd_print_private_bfd_data (bfd
   _bfd_generic_copy_link_hash_symbol_type
 #define ppcboot_bfd_final_link _bfd_generic_final_link
 #define ppcboot_bfd_link_split_section _bfd_generic_link_split_section
-#define ppcboot_get_section_contents_in_window \
-  _bfd_generic_get_section_contents_in_window
 #define ppcboot_bfd_link_check_relocs _bfd_generic_link_check_relocs
 
 #define ppcboot_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data
@@ -495,6 +493,7 @@ const bfd_target powerpc_boot_vec =
   ' ',				/* ar_pad_char */
   16,				/* ar_max_namelen */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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 */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ptrace-core.c ./bfd/ptrace-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/ptrace-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/ptrace-core.c	2026-03-05 02:07:20.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-2025 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.
@@ -48,23 +48,22 @@ struct trad_core_struct
 
 /* forward declarations */
 
-const bfd_target *ptrace_unix_core_file_p (bfd *abfd);
+bfd_cleanup ptrace_unix_core_file_p (bfd *abfd);
 char * ptrace_unix_core_file_failing_command (bfd *abfd);
 int ptrace_unix_core_file_failing_signal (bfd *abfd);
 #define ptrace_unix_core_file_matches_executable_p generic_core_file_matches_executable_p
 #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;
   flagword flags;
 
-  val = bfd_bread ((void *)&u, (bfd_size_type) sizeof u, abfd);
+  val = bfd_read (&u, sizeof u, abfd);
   if (val != sizeof u || u.pt_magic != _BCS_PTRACE_MAGIC
       || u.pt_rev != _BCS_PTRACE_REV)
     {
@@ -77,8 +76,7 @@ ptrace_unix_core_file_p (bfd *abfd)
 
   /* Allocate both the upage and the struct core_data at once, so
      a single free() will free them both.  */
-  amt = sizeof (struct trad_core_struct);
-  rawptr = (struct trad_core_struct *) bfd_zalloc (abfd, amt);
+  rawptr = bfd_alloc (abfd, sizeof (*rawptr) + 1);
 
   if (rawptr == NULL)
     return 0;
@@ -87,6 +85,10 @@ ptrace_unix_core_file_p (bfd *abfd)
 
   rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */
 
+  /* Ensure core_file_failing_command string is terminated.  This is
+     just to stop buffer overflows on fuzzed files.  */
+  ((char *) rawptr)[sizeof (*rawptr)] = 0;
+
   /* Create the sections.  */
 
   flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
@@ -124,7 +126,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);
@@ -160,9 +162,9 @@ swap_abort (void)
 #define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
 #define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
 #define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
+#define	NO_GET64 ((uint64_t (*) (const void *)) swap_abort)
+#define	NO_PUT64 ((void (*) (uint64_t, void *)) swap_abort)
+#define	NO_GETS64 ((int64_t (*) (const void *)) swap_abort)
 
 const bfd_target core_ptrace_vec =
   {
@@ -177,6 +179,7 @@ const bfd_target core_ptrace_vec =
     0,							   /* symbol prefix */
     ' ',						   /* ar_pad_char */
     16,							   /* ar_max_namelen */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 16 bit data */
@@ -191,12 +194,16 @@ const bfd_target core_ptrace_vec =
       ptrace_unix_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.20200303/bfd/README ./bfd/README
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/README	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/README	2026-03-05 02:07:20.000000000 +0000
@@ -34,7 +34,7 @@ BFD supports the following configure opt
 	Use mmap when accessing files.  This is faster on some hosts,
 	but slower on others.  It may not work on all hosts.
 
-Report bugs with BFD to bug-binutils@gnu.org.
+Report bugs in BFD to https://sourceware.org/bugzilla/
 
 Patches are encouraged.  When sending patches, always send the output
 of diff -u or diff -c from the original file to the new file.  Do not
@@ -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-2025 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.20200303/bfd/reloc16.c ./bfd/reloc16.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/reloc16.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/reloc16.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -63,7 +63,7 @@ bfd_coff_reloc16_get_value (arelent *rel
 	 the generic symbols.  */
       h = bfd_wrapped_link_hash_lookup (input_section->owner, link_info,
 					bfd_asymbol_name (symbol),
-					FALSE, FALSE, TRUE);
+					false, false, true);
       if (h != (struct bfd_link_hash_entry *) NULL
 	  && (h->type == bfd_link_hash_defined
 	      || h->type == bfd_link_hash_defweak))
@@ -81,7 +81,7 @@ bfd_coff_reloc16_get_value (arelent *rel
 	{
 	  (*link_info->callbacks->undefined_symbol)
 	    (link_info, bfd_asymbol_name (symbol),
-	     input_section->owner, input_section, reloc->address, TRUE);
+	     input_section->owner, input_section, reloc->address, true);
 	  value = 0;
 	}
     }
@@ -136,11 +136,11 @@ bfd_perform_slip (bfd *abfd,
     }
 }
 
-bfd_boolean
+bool
 bfd_coff_reloc16_relax_section (bfd *abfd,
 				asection *input_section,
 				struct bfd_link_info *link_info,
-				bfd_boolean *again)
+				bool *again)
 {
   /* Get enough memory to hold the stuff.  */
   bfd *input_bfd = input_section->owner;
@@ -151,19 +151,19 @@ bfd_coff_reloc16_relax_section (bfd *abf
   long reloc_count;
 
   if (bfd_link_relocatable (link_info))
-    (*link_info->callbacks->einfo)
-      (_("%P%F: --relax and -r may not be used together\n"));
+    link_info->callbacks->fatal
+      (_("%P: --relax and -r may not be used together\n"));
 
   /* We only do global relaxation once.  It is not safe to do it multiple
      times (see discussion of the "shrinks" array below).  */
-  *again = FALSE;
+  *again = false;
 
   if (reloc_size < 0)
-    return FALSE;
+    return false;
 
   reloc_vector = (arelent **) bfd_malloc ((bfd_size_type) reloc_size);
   if (!reloc_vector && reloc_size > 0)
-    return FALSE;
+    return false;
 
   /* Get the relocs and think about them.  */
   reloc_count =
@@ -172,7 +172,7 @@ bfd_coff_reloc16_relax_section (bfd *abf
   if (reloc_count < 0)
     {
       free (reloc_vector);
-      return FALSE;
+      return false;
     }
 
   /* The reloc16.c and related relaxing code is very simple, the price
@@ -236,7 +236,7 @@ bfd_coff_reloc16_relax_section (bfd *abf
   input_section->rawsize = input_section->size;
   input_section->size -= shrink;
   free ((char *) reloc_vector);
-  return TRUE;
+  return true;
 }
 
 bfd_byte *
@@ -245,17 +245,17 @@ bfd_coff_reloc16_get_relocated_section_c
    struct bfd_link_info *link_info,
    struct bfd_link_order *link_order,
    bfd_byte *data,
-   bfd_boolean relocatable,
+   bool relocatable,
    asymbol **symbols)
 {
   /* Get enough memory to hold the stuff.  */
   bfd *input_bfd = link_order->u.indirect.section->owner;
   asection *input_section = link_order->u.indirect.section;
-  long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
+  long reloc_size;
   arelent **reloc_vector;
   long reloc_count;
-  bfd_size_type sz;
 
+  reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
   if (reloc_size < 0)
     return NULL;
 
@@ -267,32 +267,35 @@ bfd_coff_reloc16_get_relocated_section_c
 						       symbols);
 
   /* Read in the section.  */
-  sz = input_section->rawsize ? input_section->rawsize : input_section->size;
-  if (!bfd_get_section_contents (input_bfd, input_section, data, 0, sz))
+  bfd_byte *orig_data = data;
+  if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
     return NULL;
 
-  reloc_vector = (arelent **) bfd_malloc ((bfd_size_type) reloc_size);
-  if (!reloc_vector && reloc_size != 0)
+  if (data == NULL)
     return NULL;
 
+  if (reloc_size == 0)
+    return data;
+
+  reloc_vector = (arelent **) bfd_malloc (reloc_size);
+  if (reloc_vector == NULL)
+    goto error_return;
+
   reloc_count = bfd_canonicalize_reloc (input_bfd,
 					input_section,
 					reloc_vector,
 					symbols);
   if (reloc_count < 0)
-    {
-      free (reloc_vector);
-      return NULL;
-    }
+    goto error_return;
 
   if (reloc_count > 0)
     {
       arelent **parent = reloc_vector;
       arelent *reloc;
-      unsigned int dst_address = 0;
-      unsigned int src_address = 0;
-      unsigned int run;
-      unsigned int idx;
+      size_t dst_address = 0;
+      size_t src_address = 0;
+      size_t run;
+      size_t idx;
 
       /* Find how long a run we can do.  */
       while (dst_address < link_order->size)
@@ -303,6 +306,15 @@ bfd_coff_reloc16_get_relocated_section_c
 	      /* Note that the relaxing didn't tie up the addresses in the
 		 relocation, so we use the original address to work out the
 		 run of non-relocated data.  */
+	      if (reloc->address > link_order->size
+		  || reloc->address < src_address)
+		{
+		  link_info->callbacks->einfo
+		    /* xgettext:c-format */
+		    (_("%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n"),
+		     input_bfd, input_section, reloc);
+		  goto error_return;
+		}
 	      run = reloc->address - src_address;
 	      parent++;
 	    }
@@ -316,14 +328,19 @@ bfd_coff_reloc16_get_relocated_section_c
 	    data[dst_address++] = data[src_address++];
 
 	  /* Now do the relocation.  */
-	  if (reloc)
-	    {
-	      bfd_coff_reloc16_extra_cases (input_bfd, link_info, link_order,
-					    reloc, data, &src_address,
-					    &dst_address);
-	    }
+	  if (reloc
+	      && !bfd_coff_reloc16_extra_cases (input_bfd, link_info,
+						link_order, reloc, data,
+						&src_address, &dst_address))
+	    goto error_return;
 	}
     }
-  free ((char *) reloc_vector);
+  free (reloc_vector);
   return data;
+
+ error_return:
+  free (reloc_vector);
+  if (orig_data == NULL)
+    free (data);
+  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.20200303/bfd/reloc.c ./bfd/reloc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/reloc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/reloc.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD support for handling relocation entries.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -51,6 +51,7 @@ SECTION
 #include "bfdlink.h"
 #include "libbfd.h"
 #include "bfdver.h"
+
 /*
 DOCDD
 INODE
@@ -61,8 +62,7 @@ SUBSECTION
 
 	This is the structure of a relocation entry:
 
-CODE_FRAGMENT
-.
+EXTERNAL
 .typedef enum bfd_reloc_status
 .{
 .  {* No errors detected.  Note - the value 2 is used so that it
@@ -81,7 +81,7 @@ CODE_FRAGMENT
 .  {* Unsupported relocation size requested.  *}
 .  bfd_reloc_notsupported,
 .
-.  {* Unused.  *}
+.  {* Target specific meaning.  *}
 .  bfd_reloc_other,
 .
 .  {* The symbol to relocate against was undefined.  *}
@@ -96,7 +96,9 @@ CODE_FRAGMENT
 .
 .typedef const struct reloc_howto_struct reloc_howto_type;
 .
-.typedef struct reloc_cache_entry
+
+CODE_FRAGMENT
+.struct reloc_cache_entry
 .{
 .  {* A pointer into the canonical table of pointers.  *}
 .  struct bfd_symbol **sym_ptr_ptr;
@@ -110,8 +112,7 @@ CODE_FRAGMENT
 .  {* Pointer to how to perform the required relocation.  *}
 .  reloc_howto_type *howto;
 .
-.}
-.arelent;
+.};
 .
 */
 
@@ -250,7 +251,6 @@ SUBSUBSECTION
 	performing a relocation.
 
 CODE_FRAGMENT
-.
 .enum complain_overflow
 .{
 .  {* Do not complain on overflow.  *}
@@ -269,7 +269,7 @@ CODE_FRAGMENT
 .     unsigned number.  *}
 .  complain_overflow_unsigned
 .};
-
+.
 */
 
 /*
@@ -287,10 +287,8 @@ CODE_FRAGMENT
 .     an external reloc number is stored in this field.  *}
 .  unsigned int type;
 .
-.  {* The encoded size of the item to be relocated.  This is *not* a
-.     power-of-two measure.  Use bfd_get_reloc_size to find the size
-.     of the item in bytes.  *}
-.  unsigned int size:3;
+.  {* The size of the item to be relocated in bytes.  *}
+.  unsigned int size:4;
 .
 .  {* The number of bits in the field to be relocated.  This is used
 .     when doing overflow checking.  *}
@@ -339,6 +337,11 @@ CODE_FRAGMENT
 .     empty (e.g., ELF); this flag signals the fact.  *}
 .  unsigned int pcrel_offset:1;
 .
+.  {* Whether bfd_install_relocation should just install the addend,
+.     or should follow the practice of some older object formats and
+.     install a value including the symbol.  *}
+.  unsigned int install_addend:1;
+.
 .  {* src_mask selects the part of the instruction (or data) to be used
 .     in the relocation sum.  If the target relocations don't have an
 .     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
@@ -374,53 +377,34 @@ DESCRIPTION
 	The HOWTO macro fills in a reloc_howto_type (a typedef for
 	const struct reloc_howto_struct).
 
+.#define HOWTO_INSTALL_ADDEND 0
+.#define HOWTO_RSIZE(sz) ((sz) < 0 ? -(sz) : (sz))
 .#define HOWTO(type, right, size, bits, pcrel, left, ovf, func, name,	\
 .              inplace, src_mask, dst_mask, pcrel_off)			\
-.  { (unsigned) type, size < 0 ? -size : size, bits, right, left, ovf,	\
-.    size < 0, pcrel, inplace, pcrel_off, src_mask, dst_mask, func, name }
+.  { (unsigned) type, HOWTO_RSIZE (size), bits, right, left, ovf,	\
+.    size < 0, pcrel, inplace, pcrel_off, HOWTO_INSTALL_ADDEND,		\
+.    src_mask, dst_mask, func, name }
 
 DESCRIPTION
 	This is used to fill in an empty howto entry in an array.
 
 .#define EMPTY_HOWTO(C) \
-.  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
-.	  NULL, FALSE, 0, 0, FALSE)
+.  HOWTO ((C), 0, 1, 0, false, 0, complain_overflow_dont, NULL, \
+.	  NULL, false, 0, 0, false)
+.
+.static inline unsigned int
+.bfd_get_reloc_size (reloc_howto_type *howto)
+.{
+.  return howto->size;
+.}
 .
 */
 
 /*
-FUNCTION
-	bfd_get_reloc_size
-
-SYNOPSIS
-	unsigned int bfd_get_reloc_size (reloc_howto_type *);
-
-DESCRIPTION
-	For a reloc_howto_type that operates on a fixed number of bytes,
-	this returns the number of bytes operated on.
- */
-
-unsigned int
-bfd_get_reloc_size (reloc_howto_type *howto)
-{
-  switch (howto->size)
-    {
-    case 0: return 1;
-    case 1: return 2;
-    case 2: return 4;
-    case 3: return 0;
-    case 4: return 8;
-    case 5: return 3;
-    default: abort ();
-    }
-}
-
-/*
-TYPEDEF
+DEFINITION
 	arelent_chain
 
 DESCRIPTION
-
 	How relocs are tied together in an <<asection>>:
 
 .typedef struct relent_chain
@@ -432,8 +416,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 +451,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
@@ -515,7 +503,7 @@ FUNCTION
 	bfd_reloc_offset_in_range
 
 SYNOPSIS
-	bfd_boolean bfd_reloc_offset_in_range
+	bool bfd_reloc_offset_in_range
 	  (reloc_howto_type *howto,
 	   bfd *abfd,
 	   asection *section,
@@ -530,7 +518,7 @@ DESCRIPTION
 /* HOWTO describes a relocation, at offset OCTET.  Return whether the
    relocation field is within SECTION of ABFD.  */
 
-bfd_boolean
+bool
 bfd_reloc_offset_in_range (reloc_howto_type *howto,
 			   bfd *abfd,
 			   asection *section,
@@ -542,7 +530,7 @@ bfd_reloc_offset_in_range (reloc_howto_t
   /* The reloc field must be contained entirely within the section.
      Allow zero length fields (marker relocs or NONE relocs where no
      relocation will be performed) at the end of the section.  */
-  return octet <= octet_end && octet + reloc_size <= octet_end;
+  return octet <= octet_end && reloc_size <= octet_end - octet;
 }
 
 /* Read and return the section contents at DATA converted to a host
@@ -551,28 +539,28 @@ bfd_reloc_offset_in_range (reloc_howto_t
 static bfd_vma
 read_reloc (bfd *abfd, bfd_byte *data, reloc_howto_type *howto)
 {
-  switch (howto->size)
+  switch (bfd_get_reloc_size (howto))
     {
     case 0:
-      return bfd_get_8 (abfd, data);
+      break;
 
     case 1:
-      return bfd_get_16 (abfd, data);
+      return bfd_get_8 (abfd, data);
 
     case 2:
-      return bfd_get_32 (abfd, data);
+      return bfd_get_16 (abfd, data);
 
     case 3:
-      break;
+      return bfd_get_24 (abfd, data);
 
-#ifdef BFD64
     case 4:
+      return bfd_get_32 (abfd, data);
+
+#ifdef BFD64
+    case 8:
       return bfd_get_64 (abfd, data);
 #endif
 
-    case 5:
-      return bfd_get_24 (abfd, data);
-
     default:
       abort ();
     }
@@ -585,32 +573,32 @@ read_reloc (bfd *abfd, bfd_byte *data, r
 static void
 write_reloc (bfd *abfd, bfd_vma val, bfd_byte *data, reloc_howto_type *howto)
 {
-  switch (howto->size)
+  switch (bfd_get_reloc_size (howto))
     {
     case 0:
-      bfd_put_8 (abfd, val, data);
       break;
 
     case 1:
-      bfd_put_16 (abfd, val, data);
+      bfd_put_8 (abfd, val, data);
       break;
 
     case 2:
-      bfd_put_32 (abfd, val, data);
+      bfd_put_16 (abfd, val, data);
       break;
 
     case 3:
+      bfd_put_24 (abfd, val, data);
       break;
 
-#ifdef BFD64
     case 4:
-      bfd_put_64 (abfd, val, data);
+      bfd_put_32 (abfd, val, data);
       break;
-#endif
 
-    case 5:
-      bfd_put_24 (abfd, val, data);
+#ifdef BFD64
+    case 8:
+      bfd_put_64 (abfd, val, data);
       break;
+#endif
 
     default:
       abort ();
@@ -818,9 +806,7 @@ bfd_perform_relocation (bfd *abfd,
 	  reloc_entry->address += input_section->output_offset;
 
 	  /* WTF?? */
-	  if (abfd->xvec->flavour == bfd_target_coff_flavour
-	      && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
-	      && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
+	  if (abfd->xvec->flavour == bfd_target_coff_flavour)
 	    {
 	      /* For m68k-coff, the addend was being subtracted twice during
 		 relocation with -r.  Removing the line below this comment
@@ -1038,8 +1024,6 @@ bfd_install_relocation (bfd *abfd,
 	 reloc_entry->address field might actually be valid for the
 	 backend concerned.  It is up to the special_function itself
 	 to call bfd_reloc_offset_in_range if needed.  */
-      /* XXX - The special_function calls haven't been fixed up to deal
-	 with creating new relocations and section contents.  */
       cont = howto->special_function (abfd, reloc_entry, symbol,
 				      /* XXX - Non-portable! */
 				      ((bfd_byte *) data_start
@@ -1049,199 +1033,81 @@ bfd_install_relocation (bfd *abfd,
 	return cont;
     }
 
-  if (bfd_is_abs_section (symbol->section))
-    {
-      reloc_entry->address += input_section->output_offset;
-      return bfd_reloc_ok;
-    }
-
-  /* No need to check for howto != NULL if !bfd_is_abs_section as
-     it will have been checked in `bfd_perform_relocation already'.  */
-
-  /* Is the address of the relocation really within the section?  */
-  octets = reloc_entry->address * bfd_octets_per_byte (abfd, input_section);
-  if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
-    return bfd_reloc_outofrange;
-
-  /* Work out which section the relocation is targeted at and the
-     initial relocation command value.  */
-
-  /* Get symbol value.  (Common symbols are special.)  */
-  if (bfd_is_com_section (symbol->section))
-    relocation = 0;
-  else
-    relocation = symbol->value;
-
-  reloc_target_output_section = symbol->section->output_section;
-
-  /* Convert input-section-relative symbol value to absolute.  */
-  if (! howto->partial_inplace)
-    output_base = 0;
+  if (howto->install_addend)
+    relocation = reloc_entry->addend;
   else
-    output_base = reloc_target_output_section->vma;
-
-  output_base += symbol->section->output_offset;
+    {
+      if (bfd_is_abs_section (symbol->section))
+	return bfd_reloc_ok;
 
-  /* If symbol addresses are in octets, convert to bytes.  */
-  if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
-      && (symbol->section->flags & SEC_ELF_OCTETS))
-    output_base *= bfd_octets_per_byte (abfd, input_section);
+      /* Work out which section the relocation is targeted at and the
+	 initial relocation command value.  */
 
-  relocation += output_base;
-
-  /* Add in supplied addend.  */
-  relocation += reloc_entry->addend;
+      /* Get symbol value.  (Common symbols are special.)  */
+      if (bfd_is_com_section (symbol->section))
+	relocation = 0;
+      else
+	relocation = symbol->value;
 
-  /* Here the variable relocation holds the final address of the
-     symbol we are relocating against, plus any addend.  */
+      reloc_target_output_section = symbol->section;
 
-  if (howto->pc_relative)
-    {
-      /* This is a PC relative relocation.  We want to set RELOCATION
-	 to the distance between the address of the symbol and the
-	 location.  RELOCATION is already the address of the symbol.
+      /* Convert input-section-relative symbol value to absolute.  */
+      if (! howto->partial_inplace)
+	output_base = 0;
+      else
+	output_base = reloc_target_output_section->vma;
 
-	 We start by subtracting the address of the section containing
-	 the location.
+      /* If symbol addresses are in octets, convert to bytes.  */
+      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
+	  && (symbol->section->flags & SEC_ELF_OCTETS))
+	output_base *= bfd_octets_per_byte (abfd, input_section);
 
-	 If pcrel_offset is set, we must further subtract the position
-	 of the location within the section.  Some targets arrange for
-	 the addend to be the negative of the position of the location
-	 within the section; for example, i386-aout does this.  For
-	 i386-aout, pcrel_offset is FALSE.  Some other targets do not
-	 include the position of the location; for example, ELF.
-	 For those targets, pcrel_offset is TRUE.
+      relocation += output_base;
 
-	 If we are producing relocatable output, then we must ensure
-	 that this reloc will be correctly computed when the final
-	 relocation is done.  If pcrel_offset is FALSE we want to wind
-	 up with the negative of the location within the section,
-	 which means we must adjust the existing addend by the change
-	 in the location within the section.  If pcrel_offset is TRUE
-	 we do not want to adjust the existing addend at all.
+      /* Add in supplied addend.  */
+      relocation += reloc_entry->addend;
 
-	 FIXME: This seems logical to me, but for the case of
-	 producing relocatable output it is not what the code
-	 actually does.  I don't want to change it, because it seems
-	 far too likely that something will break.  */
+      /* Here the variable relocation holds the final address of the
+	 symbol we are relocating against, plus any addend.  */
 
-      relocation -=
-	input_section->output_section->vma + input_section->output_offset;
+      if (howto->pc_relative)
+	{
+	  relocation -= input_section->vma;
 
-      if (howto->pcrel_offset && howto->partial_inplace)
-	relocation -= reloc_entry->address;
+	  if (howto->pcrel_offset && howto->partial_inplace)
+	    relocation -= reloc_entry->address;
+	}
     }
 
-  if (! howto->partial_inplace)
+  if (!howto->partial_inplace)
     {
-      /* This is a partial relocation, and we want to apply the relocation
-	 to the reloc entry rather than the raw data. Modify the reloc
-	 inplace to reflect what we now know.  */
       reloc_entry->addend = relocation;
-      reloc_entry->address += input_section->output_offset;
       return flag;
     }
-  else
-    {
-      /* This is a partial relocation, but inplace, so modify the
-	 reloc record a bit.
-
-	 If we've relocated with a symbol with a section, change
-	 into a ref to the section belonging to the symbol.  */
-      reloc_entry->address += input_section->output_offset;
-
-      /* WTF?? */
-      if (abfd->xvec->flavour == bfd_target_coff_flavour
-	  && strcmp (abfd->xvec->name, "coff-Intel-little") != 0
-	  && strcmp (abfd->xvec->name, "coff-Intel-big") != 0)
-	{
-
-	  /* For m68k-coff, the addend was being subtracted twice during
-	     relocation with -r.  Removing the line below this comment
-	     fixes that problem; see PR 2953.
-
-However, Ian wrote the following, regarding removing the line below,
-which explains why it is still enabled:  --djm
-
-If you put a patch like that into BFD you need to check all the COFF
-linkers.  I am fairly certain that patch will break coff-i386 (e.g.,
-SCO); see coff_i386_reloc in coff-i386.c where I worked around the
-problem in a different way.  There may very well be a reason that the
-code works as it does.
-
-Hmmm.  The first obvious point is that bfd_install_relocation should
-not have any tests that depend upon the flavour.  It's seem like
-entirely the wrong place for such a thing.  The second obvious point
-is that the current code ignores the reloc addend when producing
-relocatable output for COFF.  That's peculiar.  In fact, I really
-have no idea what the point of the line you want to remove is.
-
-A typical COFF reloc subtracts the old value of the symbol and adds in
-the new value to the location in the object file (if it's a pc
-relative reloc it adds the difference between the symbol value and the
-location).  When relocating we need to preserve that property.
-
-BFD handles this by setting the addend to the negative of the old
-value of the symbol.  Unfortunately it handles common symbols in a
-non-standard way (it doesn't subtract the old value) but that's a
-different story (we can't change it without losing backward
-compatibility with old object files) (coff-i386 does subtract the old
-value, to be compatible with existing coff-i386 targets, like SCO).
 
-So everything works fine when not producing relocatable output.  When
-we are producing relocatable output, logically we should do exactly
-what we do when not producing relocatable output.  Therefore, your
-patch is correct.  In fact, it should probably always just set
-reloc_entry->addend to 0 for all cases, since it is, in fact, going to
-add the value into the object file.  This won't hurt the COFF code,
-which doesn't use the addend; I'm not sure what it will do to other
-formats (the thing to check for would be whether any formats both use
-the addend and set partial_inplace).
-
-When I wanted to make coff-i386 produce relocatable output, I ran
-into the problem that you are running into: I wanted to remove that
-line.  Rather than risk it, I made the coff-i386 relocs use a special
-function; it's coff_i386_reloc in coff-i386.c.  The function
-specifically adds the addend field into the object file, knowing that
-bfd_install_relocation is not going to.  If you remove that line, then
-coff-i386.c will wind up adding the addend field in twice.  It's
-trivial to fix; it just needs to be done.
-
-The problem with removing the line is just that it may break some
-working code.  With BFD it's hard to be sure of anything.  The right
-way to deal with this is simply to build and test at least all the
-supported COFF targets.  It should be straightforward if time and disk
-space consuming.  For each target:
-    1) build the linker
-    2) generate some executable, and link it using -r (I would
-       probably use paranoia.o and link against newlib/libc.a, which
-       for all the supported targets would be available in
-       /usr/cygnus/progressive/H-host/target/lib/libc.a).
-    3) make the change to reloc.c
-    4) rebuild the linker
-    5) repeat step 2
-    6) if the resulting object files are the same, you have at least
-       made it no worse
-    7) if they are different you have to figure out which version is
-       right.  */
-	  relocation -= reloc_entry->addend;
-	  /* FIXME: There should be no target specific code here...  */
-	  if (strcmp (abfd->xvec->name, "coff-z8k") != 0)
-	    reloc_entry->addend = 0;
-	}
-      else
-	{
-	  reloc_entry->addend = relocation;
-	}
+  if (!howto->install_addend
+      && abfd->xvec->flavour == bfd_target_coff_flavour)
+    {
+      /* This is just weird.  We're subtracting out the original
+	 addend, so that for COFF the addend is ignored???  */
+      relocation -= reloc_entry->addend;
+      /* FIXME: There should be no target specific code here...  */
+      if (strcmp (abfd->xvec->name, "coff-z8k") != 0)
+	reloc_entry->addend = 0;
     }
+  else
+    reloc_entry->addend = relocation;
+
+  /* Is the address of the relocation really within the section?  */
+  octets = reloc_entry->address * bfd_octets_per_byte (abfd, input_section);
+  if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octets))
+    return bfd_reloc_outofrange;
 
   /* FIXME: This overflow checking is incomplete, because the value
      might have overflowed before we get here.  For a correct check we
      need to compute the value in a size larger than bitsize, but we
      can't reasonably do that for a reloc the same size as a host
-     machine word.
-     FIXME: We should also do overflow checking on the result after
-     adding in the value contained in the object file.  */
+     machine word.  */
   if (howto->complain_on_overflow != complain_overflow_dont)
     flag = bfd_check_overflow (howto->complain_on_overflow,
 			       howto->bitsize,
@@ -1249,71 +1115,11 @@ space consuming.  For each target:
 			       bfd_arch_bits_per_address (abfd),
 			       relocation);
 
-  /* Either we are relocating all the way, or we don't want to apply
-     the relocation to the reloc entry (probably because there isn't
-     any room in the output format to describe addends to relocs).  */
-
-  /* The cast to bfd_vma avoids a bug in the Alpha OSF/1 C compiler
-     (OSF version 1.3, compiler version 3.11).  It miscompiles the
-     following program:
-
-     struct str
-     {
-       unsigned int i0;
-     } s = { 0 };
-
-     int
-     main ()
-     {
-       unsigned long x;
-
-       x = 0x100000000;
-       x <<= (unsigned long) s.i0;
-       if (x == 0)
-	 printf ("failed\n");
-       else
-	 printf ("succeeded (%lx)\n", x);
-     }
-     */
-
   relocation >>= (bfd_vma) howto->rightshift;
 
   /* Shift everything up to where it's going to be used.  */
   relocation <<= (bfd_vma) howto->bitpos;
 
-  /* Wait for the day when all have the mask in them.  */
-
-  /* What we do:
-     i instruction to be left alone
-     o offset within instruction
-     r relocation offset to apply
-     S src mask
-     D dst mask
-     N ~dst mask
-     A part 1
-     B part 2
-     R result
-
-     Do this:
-     ((	 i i i i i o o o o o  from bfd_get<size>
-     and	   S S S S S) to get the size offset we want
-     +	 r r r r r r r r r r) to get the final value to place
-     and	   D D D D D  to chop to right size
-     -----------------------
-     =		   A A A A A
-     And this:
-     (	 i i i i i o o o o o  from bfd_get<size>
-     and N N N N N	    ) get instruction
-     -----------------------
-     =	 B B B B B
-
-     And then:
-     (	 B B B B B
-     or		   A A A A A)
-     -----------------------
-     =	 R R R R R R R R R R  put into bfd_put<size>
-     */
-
   data = (bfd_byte *) data_start + (octets - data_start_offset);
   apply_reloc (abfd, data, howto, relocation);
   return flag;
@@ -1564,8 +1370,8 @@ SUBSECTION
 */
 
 /*
-TYPEDEF
-	bfd_reloc_code_type
+DEFINITION
+	bfd_reloc_code_real_type
 
 DESCRIPTION
 	The insides of a reloc code.  The idea is that, eventually, there
@@ -1578,7 +1384,7 @@ DESCRIPTION
 	of attributes.
 
 SENUM
-   bfd_reloc_code_real
+  bfd_reloc_code_real
 
 ENUM
   BFD_RELOC_64
@@ -1610,12 +1416,15 @@ ENUMX
 ENUMX
   BFD_RELOC_8_PCREL
 ENUMDOC
-  PC-relative relocations.  Sometimes these are relative to the address
-of the relocation itself; sometimes they are relative to the start of
-the section containing the relocation.  It depends on the specific target.
+  PC-relative relocations.  Sometimes these are relative to the
+  address of the relocation itself; sometimes they are relative to the
+  start of the section containing the relocation.  It depends on the
+  specific target.
 
 ENUM
   BFD_RELOC_32_SECREL
+ENUMX
+  BFD_RELOC_16_SECIDX
 ENUMDOC
   Section relative relocations.  Some targets need this for DWARF2.
 
@@ -1740,19 +1549,19 @@ ENUMX
   BFD_RELOC_23_PCREL_S2
 ENUMDOC
   These PC-relative relocations are stored as word displacements --
-i.e., byte displacements shifted right two bits.  The 30-bit word
-displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
-SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
-signed 16-bit displacement is used on the MIPS, and the 23-bit
-displacement is used on the Alpha.
+  i.e., byte displacements shifted right two bits.  The 30-bit word
+  displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
+  SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
+  signed 16-bit displacement is used on the MIPS, and the 23-bit
+  displacement is used on the Alpha.
 
 ENUM
   BFD_RELOC_HI22
 ENUMX
   BFD_RELOC_LO10
 ENUMDOC
-  High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
-the target word.  These are used on the SPARC.
+  High 22 bits and low 10 bits of 32-bit value, placed into lower bits
+  of the target word.  These are used on the SPARC.
 
 ENUM
   BFD_RELOC_GPREL16
@@ -1760,9 +1569,9 @@ ENUMX
   BFD_RELOC_GPREL32
 ENUMDOC
   For systems that allocate a Global Pointer register, these are
-displacements off that register.  These relocation types are
-handled specially, because the value the register will have is
-decided relatively late.
+  displacements off that register.  These relocation types are
+  handled specially, because the value the register will have is
+  decided relatively late.
 
 ENUM
   BFD_RELOC_NONE
@@ -1882,12 +1691,12 @@ ENUMX
 ENUMX
   BFD_RELOC_SPARC_WDISP10
 ENUMDOC
-  SPARC64 relocations
+  SPARC64 relocations.
 
 ENUM
   BFD_RELOC_SPARC_REV32
 ENUMDOC
-  SPARC little endian relocation
+  SPARC little endian relocation.
 ENUM
   BFD_RELOC_SPARC_TLS_GD_HI22
 ENUMX
@@ -1937,7 +1746,7 @@ ENUMX
 ENUMX
   BFD_RELOC_SPARC_TLS_TPOFF64
 ENUMDOC
-  SPARC TLS relocations
+  SPARC TLS relocations.
 
 ENUM
   BFD_RELOC_SPU_IMM7
@@ -1976,25 +1785,25 @@ ENUM
   BFD_RELOC_ALPHA_GPDISP_HI16
 ENUMDOC
   Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
-     "addend" in some special way.
+  "addend" in some special way.
   For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
-     writing; when reading, it will be the absolute section symbol.  The
-     addend is the displacement in bytes of the "lda" instruction from
-     the "ldah" instruction (which is at the address of this reloc).
+  writing; when reading, it will be the absolute section symbol.  The
+  addend is the displacement in bytes of the "lda" instruction from
+  the "ldah" instruction (which is at the address of this reloc).
 ENUM
   BFD_RELOC_ALPHA_GPDISP_LO16
 ENUMDOC
   For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
-     with GPDISP_HI16 relocs.  The addend is ignored when writing the
-     relocations out, and is filled in with the file's GP value on
-     reading, for convenience.
+  with GPDISP_HI16 relocs.  The addend is ignored when writing the
+  relocations out, and is filled in with the file's GP value on
+  reading, for convenience.
 
 ENUM
   BFD_RELOC_ALPHA_GPDISP
 ENUMDOC
   The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
-     relocation except that there is no accompanying GPDISP_LO16
-     relocation.
+  relocation except that there is no accompanying GPDISP_LO16
+  relocation.
 
 ENUM
   BFD_RELOC_ALPHA_LITERAL
@@ -2004,47 +1813,47 @@ ENUMX
   BFD_RELOC_ALPHA_LITUSE
 ENUMDOC
   The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
-     the assembler turns it into a LDQ instruction to load the address of
-     the symbol, and then fills in a register in the real instruction.
+  the assembler turns it into a LDQ instruction to load the address of
+  the symbol, and then fills in a register in the real instruction.
 
-     The LITERAL reloc, at the LDQ instruction, refers to the .lita
-     section symbol.  The addend is ignored when writing, but is filled
-     in with the file's GP value on reading, for convenience, as with the
-     GPDISP_LO16 reloc.
-
-     The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
-     It should refer to the symbol to be referenced, as with 16_GOTOFF,
-     but it generates output not based on the position within the .got
-     section, but relative to the GP value chosen for the file during the
-     final link stage.
-
-     The LITUSE reloc, on the instruction using the loaded address, gives
-     information to the linker that it might be able to use to optimize
-     away some literal section references.  The symbol is ignored (read
-     as the absolute section symbol), and the "addend" indicates the type
-     of instruction using the register:
-	      1 - "memory" fmt insn
-	      2 - byte-manipulation (byte offset reg)
-	      3 - jsr (target of branch)
+  The LITERAL reloc, at the LDQ instruction, refers to the .lita
+  section symbol.  The addend is ignored when writing, but is filled
+  in with the file's GP value on reading, for convenience, as with the
+  GPDISP_LO16 reloc.
+
+  The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
+  It should refer to the symbol to be referenced, as with 16_GOTOFF,
+  but it generates output not based on the position within the .got
+  section, but relative to the GP value chosen for the file during the
+  final link stage.
+
+  The LITUSE reloc, on the instruction using the loaded address, gives
+  information to the linker that it might be able to use to optimize
+  away some literal section references.  The symbol is ignored (read
+  as the absolute section symbol), and the "addend" indicates the type
+  of instruction using the register:
+	1 - "memory" fmt insn
+	2 - byte-manipulation (byte offset reg)
+	3 - jsr (target of branch)
 
 ENUM
   BFD_RELOC_ALPHA_HINT
 ENUMDOC
   The HINT relocation indicates a value that should be filled into the
-     "hint" field of a jmp/jsr/ret instruction, for possible branch-
-     prediction logic which may be provided on some processors.
+  "hint" field of a jmp/jsr/ret instruction, for possible branch-
+  prediction logic which may be provided on some processors.
 
 ENUM
   BFD_RELOC_ALPHA_LINKAGE
 ENUMDOC
   The LINKAGE relocation outputs a linkage pair in the object file,
-     which is filled by the linker.
+  which is filled by the linker.
 
 ENUM
   BFD_RELOC_ALPHA_CODEADDR
 ENUMDOC
   The CODEADDR relocation outputs a STO_CA in the object file,
-     which is filled by the linker.
+  which is filled by the linker.
 
 ENUM
   BFD_RELOC_ALPHA_GPREL_HI16
@@ -2052,7 +1861,7 @@ ENUMX
   BFD_RELOC_ALPHA_GPREL_LO16
 ENUMDOC
   The GPREL_HI/LO relocations together form a 32-bit offset from the
-     GP register.
+  GP register.
 
 ENUM
   BFD_RELOC_ALPHA_BRSGP
@@ -2065,25 +1874,25 @@ ENUM
   BFD_RELOC_ALPHA_NOP
 ENUMDOC
   The NOP relocation outputs a NOP if the longword displacement
-     between two procedure entry points is < 2^21.
+  between two procedure entry points is < 2^21.
 
 ENUM
   BFD_RELOC_ALPHA_BSR
 ENUMDOC
   The BSR relocation outputs a BSR if the longword displacement
-     between two procedure entry points is < 2^21.
+  between two procedure entry points is < 2^21.
 
 ENUM
   BFD_RELOC_ALPHA_LDA
 ENUMDOC
   The LDA relocation outputs a LDA if the longword displacement
-     between two procedure entry points is < 2^16.
+  between two procedure entry points is < 2^16.
 
 ENUM
   BFD_RELOC_ALPHA_BOH
 ENUMDOC
   The BOH relocation outputs a BSR if the longword displacement
-     between two procedure entry points is < 2^21, or else a hint.
+  between two procedure entry points is < 2^21, or else a hint.
 
 ENUM
   BFD_RELOC_ALPHA_TLSGD
@@ -2140,9 +1949,9 @@ ENUM
   BFD_RELOC_HI16_S
 ENUMDOC
   High 16 bits of 32-bit value but the low 16 bits will be sign
-     extended and added to form the final result.  If the low 16
-     bits form a negative number, we need to add one to the high value
-     to compensate for the borrow when the low bits are added.
+  extended and added to form the final result.  If the low 16
+  bits form a negative number, we need to add one to the high value
+  to compensate for the borrow when the low bits are added.
 
 ENUM
   BFD_RELOC_LO16
@@ -2152,15 +1961,15 @@ ENUMDOC
 ENUM
   BFD_RELOC_HI16_PCREL
 ENUMDOC
-  High 16 bits of 32-bit pc-relative value
+  High 16 bits of 32-bit pc-relative value.
 ENUM
   BFD_RELOC_HI16_S_PCREL
 ENUMDOC
-  High 16 bits of 32-bit pc-relative value, adjusted
+  High 16 bits of 32-bit pc-relative value, adjusted.
 ENUM
   BFD_RELOC_LO16_PCREL
 ENUMDOC
-  Low 16 bits of pc-relative value
+  Low 16 bits of pc-relative value.
 
 ENUM
   BFD_RELOC_MIPS16_GOT16
@@ -2168,7 +1977,7 @@ ENUMX
   BFD_RELOC_MIPS16_CALL16
 ENUMDOC
   Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
-     16-bit immediate fields
+  16-bit immediate fields.
 ENUM
   BFD_RELOC_MIPS16_HI16
 ENUMDOC
@@ -2177,9 +1986,9 @@ ENUM
   BFD_RELOC_MIPS16_HI16_S
 ENUMDOC
   MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
-     extended and added to form the final result.  If the low 16
-     bits form a negative number, we need to add one to the high value
-     to compensate for the borrow when the low bits are added.
+  extended and added to form the final result.  If the low 16
+  bits form a negative number, we need to add one to the high value
+  to compensate for the borrow when the low bits are added.
 ENUM
   BFD_RELOC_MIPS16_LO16
 ENUMDOC
@@ -2200,7 +2009,7 @@ ENUMX
 ENUMX
   BFD_RELOC_MIPS16_TLS_TPREL_LO16
 ENUMDOC
-  MIPS16 TLS relocations
+  MIPS16 TLS relocations.
 
 ENUM
   BFD_RELOC_MIPS_LITERAL
@@ -2308,7 +2117,7 @@ ENUMX
 ENUMX
   BFD_RELOC_MICROMIPS_SCN_DISP
 ENUMX
-  BFD_RELOC_MIPS_REL16
+  BFD_RELOC_MIPS_16
 ENUMX
   BFD_RELOC_MIPS_RELGOT
 ENUMX
@@ -2359,7 +2168,6 @@ ENUMX
   BFD_RELOC_MIPS_EH
 ENUMDOC
   MIPS ELF relocations.
-COMMENT
 
 ENUM
   BFD_RELOC_MIPS_COPY
@@ -2367,13 +2175,11 @@ ENUMX
   BFD_RELOC_MIPS_JUMP_SLOT
 ENUMDOC
   MIPS ELF relocations (VxWorks and PLT extensions).
-COMMENT
 
 ENUM
   BFD_RELOC_MOXIE_10_PCREL
 ENUMDOC
   Moxie ELF relocations.
-COMMENT
 
 ENUM
   BFD_RELOC_FT32_10
@@ -2395,7 +2201,6 @@ ENUMX
   BFD_RELOC_FT32_DIFF32
 ENUMDOC
   FT32 ELF relocations.
-COMMENT
 
 ENUM
   BFD_RELOC_FRV_LABEL16
@@ -2477,7 +2282,6 @@ ENUMX
   BFD_RELOC_FRV_TLSMOFF
 ENUMDOC
   Fujitsu Frv Relocations.
-COMMENT
 
 ENUM
   BFD_RELOC_MN10300_GOTOFF24
@@ -2486,18 +2290,18 @@ ENUMDOC
 ENUM
   BFD_RELOC_MN10300_GOT32
 ENUMDOC
-  This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
-  in the instruction.
+  This is a 32bit GOT-relative reloc for the mn10300, offset by two
+  bytes in the instruction.
 ENUM
   BFD_RELOC_MN10300_GOT24
 ENUMDOC
-  This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
-  in the instruction.
+  This is a 24bit GOT-relative reloc for the mn10300, offset by two
+  bytes in the instruction.
 ENUM
   BFD_RELOC_MN10300_GOT16
 ENUMDOC
-  This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
-  in the instruction.
+  This is a 16bit GOT-relative reloc for the mn10300, offset by two
+  bytes in the instruction.
 ENUM
   BFD_RELOC_MN10300_COPY
 ENUMDOC
@@ -2517,15 +2321,14 @@ ENUMDOC
 ENUM
   BFD_RELOC_MN10300_SYM_DIFF
 ENUMDOC
-  Together with another reloc targeted at the same location,
-  allows for a value that is the difference of two symbols
-  in the same section.
+  Together with another reloc targeted at the same location, allows
+  for a value that is the difference of two symbols in the same
+  section.
 ENUM
   BFD_RELOC_MN10300_ALIGN
 ENUMDOC
-  The addend of this reloc is an alignment power that must
-  be honoured at the offset's location, regardless of linker
-  relaxation.
+  The addend of this reloc is an alignment power that must be honoured
+  at the offset's location, regardless of linker relaxation.
 ENUM
   BFD_RELOC_MN10300_TLS_GD
 ENUMX
@@ -2549,14 +2352,13 @@ ENUMDOC
 ENUM
   BFD_RELOC_MN10300_32_PCREL
 ENUMDOC
-  This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
-  instruction.
+  This is a 32bit pcrel reloc for the mn10300, offset by two bytes in
+  the instruction.
 ENUM
   BFD_RELOC_MN10300_16_PCREL
 ENUMDOC
-  This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
-  instruction.
-COMMENT
+  This is a 16bit pcrel reloc for the mn10300, offset by two bytes in
+  the instruction.
 
 ENUM
   BFD_RELOC_386_GOT32
@@ -2609,7 +2411,7 @@ ENUMX
 ENUMX
   BFD_RELOC_386_GOT32X
 ENUMDOC
-  i386/elf relocations
+  i386/elf relocations.
 
 ENUM
   BFD_RELOC_X86_64_GOT32
@@ -2673,8 +2475,26 @@ ENUMX
   BFD_RELOC_X86_64_GOTPCRELX
 ENUMX
   BFD_RELOC_X86_64_REX_GOTPCRELX
+ENUMX
+  BFD_RELOC_X86_64_CODE_4_GOTPCRELX
+ENUMX
+  BFD_RELOC_X86_64_CODE_4_GOTTPOFF
+ENUMX
+  BFD_RELOC_X86_64_CODE_4_GOTPC32_TLSDESC
+ENUMX
+  BFD_RELOC_X86_64_CODE_5_GOTPCRELX
+ENUMX
+  BFD_RELOC_X86_64_CODE_5_GOTTPOFF
+ENUMX
+  BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC
+ENUMX
+  BFD_RELOC_X86_64_CODE_6_GOTPCRELX
+ENUMX
+  BFD_RELOC_X86_64_CODE_6_GOTTPOFF
+ENUMX
+  BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC
 ENUMDOC
-  x86-64/elf relocations
+  x86-64/elf relocations.
 
 ENUM
   BFD_RELOC_NS32K_IMM_8
@@ -2701,14 +2521,14 @@ ENUMX
 ENUMX
   BFD_RELOC_NS32K_DISP_32_PCREL
 ENUMDOC
-  ns32k relocations
+  ns32k relocations.
 
 ENUM
   BFD_RELOC_PDP11_DISP_8_PCREL
 ENUMX
   BFD_RELOC_PDP11_DISP_6_PCREL
 ENUMDOC
-  PDP11 relocations
+  PDP11 relocations.
 
 ENUM
   BFD_RELOC_PJ_CODE_HI16
@@ -2732,6 +2552,10 @@ ENUMX
 ENUMX
   BFD_RELOC_PPC_TOC16
 ENUMX
+  BFD_RELOC_PPC_TOC16_LO
+ENUMX
+  BFD_RELOC_PPC_TOC16_HI
+ENUMX
   BFD_RELOC_PPC_B16
 ENUMX
   BFD_RELOC_PPC_B16_BRTAKEN
@@ -2824,6 +2648,8 @@ ENUMX
 ENUMX
   BFD_RELOC_PPC_REL16DX_HA
 ENUMX
+  BFD_RELOC_PPC_NEG
+ENUMX
   BFD_RELOC_PPC64_HIGHER
 ENUMX
   BFD_RELOC_PPC64_HIGHER_S
@@ -2892,6 +2718,8 @@ ENUMX
 ENUMX
   BFD_RELOC_PPC64_REL24_NOTOC
 ENUMX
+  BFD_RELOC_PPC64_REL24_P9NOTOC
+ENUMX
   BFD_RELOC_PPC64_D34
 ENUMX
   BFD_RELOC_PPC64_D34_LO
@@ -2935,6 +2763,14 @@ ENUMX
 ENUMX
   BFD_RELOC_PPC_TLSLD
 ENUMX
+  BFD_RELOC_PPC_TLSLE
+ENUMX
+  BFD_RELOC_PPC_TLSIE
+ENUMX
+  BFD_RELOC_PPC_TLSM
+ENUMX
+  BFD_RELOC_PPC_TLSML
+ENUMX
   BFD_RELOC_PPC_DTPMOD
 ENUMX
   BFD_RELOC_PPC_TPREL16
@@ -2989,6 +2825,18 @@ ENUMX
 ENUMX
   BFD_RELOC_PPC_GOT_DTPREL16_HA
 ENUMX
+  BFD_RELOC_PPC64_TLSGD
+ENUMX
+  BFD_RELOC_PPC64_TLSLD
+ENUMX
+  BFD_RELOC_PPC64_TLSLE
+ENUMX
+  BFD_RELOC_PPC64_TLSIE
+ENUMX
+  BFD_RELOC_PPC64_TLSM
+ENUMX
+  BFD_RELOC_PPC64_TLSML
+ENUMX
   BFD_RELOC_PPC64_TPREL16_DS
 ENUMX
   BFD_RELOC_PPC64_TPREL16_LO_DS
@@ -3025,13 +2873,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
@@ -3040,7 +2888,7 @@ ENUMDOC
 ENUM
   BFD_RELOC_I370_D12
 ENUMDOC
-  IBM 370/390 relocations
+  IBM 370/390 relocations.
 
 ENUM
   BFD_RELOC_CTOR
@@ -3052,8 +2900,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_ARM_PCREL_BRANCH
 ENUMDOC
-  ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
-  not stored in the instruction.
+  ARM 26 bit pc-relative branch.  The lowest two bits must be zero and
+  are not stored in the instruction.
 ENUM
   BFD_RELOC_ARM_PCREL_BLX
 ENUMDOC
@@ -3069,7 +2917,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_ARM_PCREL_CALL
 ENUMDOC
-  ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.
+  ARM 26-bit pc-relative branch for an unconditional BL or BLX
+  instruction.
 ENUM
   BFD_RELOC_ARM_PCREL_JUMP
 ENUMDOC
@@ -3150,9 +2999,9 @@ ENUMDOC
 ENUM
   BFD_RELOC_ARM_TARGET2
 ENUMDOC
-  This reloc is used for references to RTTI data from exception handling
-  tables.  The actual definition depends on the target.  It may be a
-  pc-relative or some form of GOT-indirect relocation.
+  This reloc is used for references to RTTI data from exception
+  handling tables.  The actual definition depends on the target.  It
+  may be a pc-relative or some form of GOT-indirect relocation.
 ENUM
   BFD_RELOC_ARM_PREL31
 ENUMDOC
@@ -3886,26 +3735,22 @@ ENUM
   BFD_RELOC_D10V_10_PCREL_R
 ENUMDOC
   Mitsubishi D10V relocs.
-  This is a 10-bit reloc with the right 2 bits
-  assumed to be 0.
+  This is a 10-bit reloc with the right 2 bits assumed to be 0.
 ENUM
   BFD_RELOC_D10V_10_PCREL_L
 ENUMDOC
   Mitsubishi D10V relocs.
-  This is a 10-bit reloc with the right 2 bits
-  assumed to be 0.  This is the same as the previous reloc
-  except it is in the left container, i.e.,
-  shifted left 15 bits.
+  This is a 10-bit reloc with the right 2 bits assumed to be 0.  This
+  is the same as the previous reloc except it is in the left
+  container, i.e., shifted left 15 bits.
 ENUM
   BFD_RELOC_D10V_18
 ENUMDOC
-  This is an 18-bit reloc with the right 2 bits
-  assumed to be 0.
+  This is an 18-bit reloc with the right 2 bits assumed to be 0.
 ENUM
   BFD_RELOC_D10V_18_PCREL
 ENUMDOC
-  This is an 18-bit reloc with the right 2 bits
-  assumed to be 0.
+  This is an 18-bit reloc with the right 2 bits assumed to be 0.
 
 ENUM
   BFD_RELOC_D30V_6
@@ -3915,49 +3760,46 @@ ENUMDOC
 ENUM
   BFD_RELOC_D30V_9_PCREL
 ENUMDOC
-  This is a 6-bit pc-relative reloc with
-  the right 3 bits assumed to be 0.
+  This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+  be 0.
 ENUM
   BFD_RELOC_D30V_9_PCREL_R
 ENUMDOC
-  This is a 6-bit pc-relative reloc with
-  the right 3 bits assumed to be 0. Same
-  as the previous reloc but on the right side
-  of the container.
+  This is a 6-bit pc-relative reloc with the right 3 bits assumed to
+  be 0.  Same as the previous reloc but on the right side of the
+  container.
 ENUM
   BFD_RELOC_D30V_15
 ENUMDOC
-  This is a 12-bit absolute reloc with the
-  right 3 bitsassumed to be 0.
+  This is a 12-bit absolute reloc with the right 3 bitsassumed to
+  be 0.
 ENUM
   BFD_RELOC_D30V_15_PCREL
 ENUMDOC
-  This is a 12-bit pc-relative reloc with
-  the right 3 bits assumed to be 0.
+  This is a 12-bit pc-relative reloc with the right 3 bits assumed to
+  be 0.
 ENUM
   BFD_RELOC_D30V_15_PCREL_R
 ENUMDOC
-  This is a 12-bit pc-relative reloc with
-  the right 3 bits assumed to be 0. Same
-  as the previous reloc but on the right side
-  of the container.
+  This is a 12-bit pc-relative reloc with the right 3 bits assumed to
+  be 0.  Same as the previous reloc but on the right side of the
+  container.
 ENUM
   BFD_RELOC_D30V_21
 ENUMDOC
-  This is an 18-bit absolute reloc with
-  the right 3 bits assumed to be 0.
+  This is an 18-bit absolute reloc with the right 3 bits assumed to
+  be 0.
 ENUM
   BFD_RELOC_D30V_21_PCREL
 ENUMDOC
-  This is an 18-bit pc-relative reloc with
-  the right 3 bits assumed to be 0.
+  This is an 18-bit pc-relative reloc with the right 3 bits assumed to
+  be 0.
 ENUM
   BFD_RELOC_D30V_21_PCREL_R
 ENUMDOC
-  This is an 18-bit pc-relative reloc with
-  the right 3 bits assumed to be 0. Same
-  as the previous reloc but on the right side
-  of the container.
+  This is an 18-bit pc-relative reloc with the right 3 bits assumed to
+  be 0.  Same as the previous reloc but on the right side of the
+  container.
 ENUM
   BFD_RELOC_D30V_32
 ENUMDOC
@@ -3969,16 +3811,12 @@ ENUMDOC
 
 ENUM
   BFD_RELOC_DLX_HI16_S
-ENUMDOC
-  DLX relocs
-ENUM
+ENUMX
   BFD_RELOC_DLX_LO16
-ENUMDOC
-  DLX relocs
-ENUM
+ENUMX
   BFD_RELOC_DLX_JMP26
 ENUMDOC
-  DLX relocs
+  DLX relocs.
 
 ENUM
   BFD_RELOC_M32C_HI8
@@ -3999,7 +3837,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_M32R_10_PCREL
 ENUMDOC
-  This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.
+  This is a 10-bit pc-relative reloc with the right 2 bits assumed to
+  be 0.
 ENUM
   BFD_RELOC_M32R_18_PCREL
 ENUMDOC
@@ -4025,8 +3864,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_M32R_SDA16
 ENUMDOC
-  This is a 16-bit reloc containing the small data area offset for use in
-  add3, load, and store instructions.
+  This is a 16-bit reloc containing the small data area offset for use
+  in add3, load, and store instructions.
 ENUM
   BFD_RELOC_M32R_GOT24
 ENUMX
@@ -4073,11 +3912,13 @@ ENUMDOC
 ENUM
   BFD_RELOC_NDS32_9_PCREL
 ENUMDOC
-  This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
+  This is a 9-bit pc-relative reloc with the right 1 bit assumed to
+  be 0.
 ENUM
   BFD_RELOC_NDS32_WORD_9_PCREL
 ENUMDOC
-  This is a 9-bit pc-relative reloc with the right 1 bit assumed to be 0.
+  This is a 9-bit pc-relative reloc with the right 1 bit assumed to
+  be 0.
 ENUM
   BFD_RELOC_NDS32_15_PCREL
 ENUMDOC
@@ -4094,72 +3935,72 @@ ENUM
   BFD_RELOC_NDS32_HI20
 ENUMDOC
   This is a 20-bit reloc containing the high 20 bits of an address
-  used with the lower 12 bits
+  used with the lower 12 bits.
 ENUM
   BFD_RELOC_NDS32_LO12S3
 ENUMDOC
   This is a 12-bit reloc containing the lower 12 bits of an address
-  then shift right by 3. This is used with ldi,sdi...
+  then shift right by 3.  This is used with ldi,sdi.
 ENUM
   BFD_RELOC_NDS32_LO12S2
 ENUMDOC
   This is a 12-bit reloc containing the lower 12 bits of an address
-  then shift left by 2. This is used with lwi,swi...
+  then shift left by 2.  This is used with lwi,swi.
 ENUM
   BFD_RELOC_NDS32_LO12S1
 ENUMDOC
   This is a 12-bit reloc containing the lower 12 bits of an address
-  then shift left by 1. This is used with lhi,shi...
+  then shift left by 1.  This is used with lhi,shi.
 ENUM
   BFD_RELOC_NDS32_LO12S0
 ENUMDOC
   This is a 12-bit reloc containing the lower 12 bits of an address
-  then shift left by 0. This is used with lbisbi...
+  then shift left by 0.  This is used with lbisbi.
 ENUM
   BFD_RELOC_NDS32_LO12S0_ORI
 ENUMDOC
   This is a 12-bit reloc containing the lower 12 bits of an address
-  then shift left by 0. This is only used with branch relaxations
+  then shift left by 0.  This is only used with branch relaxations.
 ENUM
   BFD_RELOC_NDS32_SDA15S3
 ENUMDOC
-  This is a 15-bit reloc containing the small data area 18-bit signed offset
-  and shift left by 3 for use in ldi, sdi...
+  This is a 15-bit reloc containing the small data area 18-bit signed
+  offset and shift left by 3 for use in ldi, sdi.
 ENUM
   BFD_RELOC_NDS32_SDA15S2
 ENUMDOC
-  This is a 15-bit reloc containing the small data area 17-bit signed offset
-  and shift left by 2 for use in lwi, swi...
+  This is a 15-bit reloc containing the small data area 17-bit signed
+  offset and shift left by 2 for use in lwi, swi.
 ENUM
   BFD_RELOC_NDS32_SDA15S1
 ENUMDOC
-  This is a 15-bit reloc containing the small data area 16-bit signed offset
-  and shift left by 1 for use in lhi, shi...
+  This is a 15-bit reloc containing the small data area 16-bit signed
+  offset and shift left by 1 for use in lhi, shi.
 ENUM
   BFD_RELOC_NDS32_SDA15S0
 ENUMDOC
-  This is a 15-bit reloc containing the small data area 15-bit signed offset
-  and shift left by 0 for use in lbi, sbi...
+  This is a 15-bit reloc containing the small data area 15-bit signed
+  offset and shift left by 0 for use in lbi, sbi.
 ENUM
   BFD_RELOC_NDS32_SDA16S3
 ENUMDOC
-  This is a 16-bit reloc containing the small data area 16-bit signed offset
-  and shift left by 3
+  This is a 16-bit reloc containing the small data area 16-bit signed
+  offset and shift left by 3.
 ENUM
   BFD_RELOC_NDS32_SDA17S2
 ENUMDOC
-  This is a 17-bit reloc containing the small data area 17-bit signed offset
-  and shift left by 2 for use in lwi.gp, swi.gp...
+  This is a 17-bit reloc containing the small data area 17-bit signed
+  offset and shift left by 2 for use in lwi.gp, swi.gp.
 ENUM
   BFD_RELOC_NDS32_SDA18S1
 ENUMDOC
-  This is a 18-bit reloc containing the small data area 18-bit signed offset
-  and shift left by 1 for use in lhi.gp, shi.gp...
+  This is a 18-bit reloc containing the small data area 18-bit signed
+  offset and shift left by 1 for use in lhi.gp, shi.gp.
 ENUM
   BFD_RELOC_NDS32_SDA19S0
 ENUMDOC
-  This is a 19-bit reloc containing the small data area 19-bit signed offset
-  and shift left by 0 for use in lbi.gp, sbi.gp...
+  This is a 19-bit reloc containing the small data area 19-bit signed
+  offset and shift left by 0 for use in lbi.gp, sbi.gp.
 ENUM
   BFD_RELOC_NDS32_GOT20
 ENUMX
@@ -4191,7 +4032,7 @@ ENUMX
 ENUMX
   BFD_RELOC_NDS32_GOTPC_LO12
 ENUMDOC
-  for PIC
+  For PIC.
 ENUM
   BFD_RELOC_NDS32_INSN16
 ENUMX
@@ -4233,7 +4074,7 @@ ENUMX
 ENUMX
   BFD_RELOC_NDS32_LONGJUMP7
 ENUMDOC
-  for relax
+  For relax.
 ENUM
   BFD_RELOC_NDS32_PLTREL_HI20
 ENUMX
@@ -4243,7 +4084,7 @@ ENUMX
 ENUMX
   BFD_RELOC_NDS32_PLT_GOTREL_LO12
 ENUMDOC
-  for PIC
+  For PIC.
 ENUM
   BFD_RELOC_NDS32_SDA12S2_DP
 ENUMX
@@ -4253,7 +4094,7 @@ ENUMX
 ENUMX
   BFD_RELOC_NDS32_LO12S2_SP
 ENUMDOC
-  for floating point
+  For floating point.
 ENUM
   BFD_RELOC_NDS32_DWARF2_OP1
 ENUMX
@@ -4261,11 +4102,11 @@ ENUMX
 ENUMX
   BFD_RELOC_NDS32_DWARF2_LEB
 ENUMDOC
-  for dwarf2 debug_line.
+  For dwarf2 debug_line.
 ENUM
   BFD_RELOC_NDS32_UPDATE_TA
 ENUMDOC
-  for eliminate 16-bit instructions
+  For eliminating 16-bit instructions.
 ENUM
   BFD_RELOC_NDS32_PLT_GOTREL_LO20
 ENUMX
@@ -4285,7 +4126,7 @@ ENUMX
 ENUMX
   BFD_RELOC_NDS32_GOT17S2
 ENUMDOC
-  for PIC object relaxation
+  For PIC object relaxation.
 ENUM
   BFD_RELOC_NDS32_5
 ENUMDOC
@@ -4294,7 +4135,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_NDS32_10_UPCREL
 ENUMDOC
-  This is a 10-bit unsigned pc-relative reloc with the right 1 bit assumed to be 0.
+  This is a 10-bit unsigned pc-relative reloc with the right 1 bit
+  assumed to be 0.
 ENUM
   BFD_RELOC_NDS32_SDA_FP7U2_RELA
 ENUMDOC
@@ -4336,7 +4178,7 @@ ENUMX
 ENUMX
   BFD_RELOC_NDS32_EMPTY
 ENUMDOC
-  relaxation relative relocation types
+  Relaxation relative relocation types.
 ENUM
   BFD_RELOC_NDS32_25_ABS
 ENUMDOC
@@ -4418,11 +4260,11 @@ ENUMDOC
 ENUM
   BFD_RELOC_V850_9_PCREL
 ENUMDOC
-  This is a 9-bit reloc
+  This is a 9-bit reloc.
 ENUM
   BFD_RELOC_V850_22_PCREL
 ENUMDOC
-  This is a 22-bit reloc
+  This is a 22-bit reloc.
 
 ENUM
   BFD_RELOC_V850_SDA_16_16_OFFSET
@@ -4460,7 +4302,6 @@ ENUM
   BFD_RELOC_V850_TDA_16_16_OFFSET
 ENUMDOC
   This is a 16 bit offset from the tiny data area pointer.
-COMMENT
 ENUM
   BFD_RELOC_V850_TDA_4_5_OFFSET
 ENUMDOC
@@ -4503,8 +4344,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_V850_LO16_SPLIT_OFFSET
 ENUMDOC
-  This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
-  instructions.
+  This is a variation of BFD_RELOC_LO16 that can be used in v850e
+  ld.bu instructions.
 ENUM
   BFD_RELOC_V850_16_PCREL
 ENUMDOC
@@ -4536,63 +4377,43 @@ ENUMDOC
 ENUM
   BFD_RELOC_V850_LO16_S1
 ENUMDOC
-  Low 16 bits. 16 bit shifted by 1.
+  Low 16 bits.  16 bit shifted by 1.
 ENUM
   BFD_RELOC_V850_CALLT_15_16_OFFSET
 ENUMDOC
   This is a 16 bit offset from the call table base pointer.
 ENUM
   BFD_RELOC_V850_32_GOTPCREL
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_16_GOT
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_32_GOT
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_22_PLT_PCREL
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_32_PLT_PCREL
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_COPY
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_GLOB_DAT
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_JMP_SLOT
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_RELATIVE
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_16_GOTOFF
-ENUMDOC
-  DSO relocations.
-ENUM
+ENUMX
   BFD_RELOC_V850_32_GOTOFF
 ENUMDOC
   DSO relocations.
 ENUM
   BFD_RELOC_V850_CODE
 ENUMDOC
-  start code.
+  Start code.
 ENUM
   BFD_RELOC_V850_DATA
 ENUMDOC
-  start data in text.
+  Start data in text.
 
 ENUM
   BFD_RELOC_TIC30_LDP
@@ -4704,13 +4525,13 @@ ENUMDOC
 ENUM
   BFD_RELOC_FR30_20
 ENUMDOC
-  This is a 32 bit reloc for the FR30 that stores 20 bits split up into
-  two sections.
+  This is a 32 bit reloc for the FR30 that stores 20 bits split up
+  into two sections.
 ENUM
   BFD_RELOC_FR30_6_IN_4
 ENUMDOC
-  This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
-  4 bits.
+  This is a 16 bit reloc for the FR30 that stores a 6 bit word offset
+  in 4 bits.
 ENUM
   BFD_RELOC_FR30_8_IN_8
 ENUMDOC
@@ -4794,7 +4615,6 @@ ENUMX
   BFD_RELOC_MEP_GNU_VTENTRY
 ENUMDOC
   Toshiba Media Processor Relocations.
-COMMENT
 
 ENUM
   BFD_RELOC_METAG_HIADDR16
@@ -4922,8 +4742,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_MMIX_ADDR19
 ENUMDOC
-  This is a relocation for a relative address as in a GETA instruction or
-  a branch.
+  This is a relocation for a relative address as in a GETA instruction
+  or a branch.
 ENUM
   BFD_RELOC_MMIX_ADDR27
 ENUMDOC
@@ -4941,13 +4761,13 @@ ENUMDOC
 ENUM
   BFD_RELOC_MMIX_BASE_PLUS_OFFSET
 ENUMDOC
-  This is a relocation for two instruction fields holding a register and
-  an offset, the equivalent of the relocation.
+  This is a relocation for two instruction fields holding a register
+  and an offset, the equivalent of the relocation.
 ENUM
   BFD_RELOC_MMIX_LOCAL
 ENUMDOC
-  This relocation is an assertion that the expression is not allocated as
-  a global register.  It does not modify contents.
+  This relocation is an assertion that the expression is not allocated
+  as a global register.  It does not modify contents.
 
 ENUM
   BFD_RELOC_AVR_7_PCREL
@@ -4977,13 +4797,14 @@ ENUMDOC
 ENUM
   BFD_RELOC_AVR_HH8_LDI
 ENUMDOC
-  This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-  of program memory address) into 8 bit immediate value of LDI insn.
+  This is a 16 bit reloc for the AVR that stores 8 bit value (most
+  high 8 bit of program memory address) into 8 bit immediate value of
+  LDI insn.
 ENUM
   BFD_RELOC_AVR_MS8_LDI
 ENUMDOC
-  This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-  of 32 bit value) into 8 bit immediate value of LDI insn.
+  This is a 16 bit reloc for the AVR that stores 8 bit value (most
+  high 8 bit of 32 bit value) into 8 bit immediate value of LDI insn.
 ENUM
   BFD_RELOC_AVR_LO8_LDI_NEG
 ENUMDOC
@@ -4999,13 +4820,13 @@ ENUM
   BFD_RELOC_AVR_HH8_LDI_NEG
 ENUMDOC
   This is a 16 bit reloc for the AVR that stores negated 8 bit value
-  (most high 8 bit of program memory address) into 8 bit immediate value
-  of LDI or SUBI insn.
+  (most high 8 bit of program memory address) into 8 bit immediate
+  value of LDI or SUBI insn.
 ENUM
   BFD_RELOC_AVR_MS8_LDI_NEG
 ENUMDOC
-  This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
-  of 32 bit value) into 8 bit immediate value of LDI insn.
+  This is a 16 bit reloc for the AVR that stores negated 8 bit value
+  (msb of 32 bit value) into 8 bit immediate value of LDI insn.
 ENUM
   BFD_RELOC_AVR_LO8_LDI_PM
 ENUMDOC
@@ -5015,9 +4836,9 @@ ENUM
   BFD_RELOC_AVR_LO8_LDI_GS
 ENUMDOC
   This is a 16 bit reloc for the AVR that stores 8 bit value
-  (command address) into 8 bit immediate value of LDI insn. If the address
-  is beyond the 128k boundary, the linker inserts a jump stub for this reloc
-  in the lower 128k.
+  (command address) into 8 bit immediate value of LDI insn. If the
+  address is beyond the 128k boundary, the linker inserts a jump stub
+  for this reloc in the lower 128k.
 ENUM
   BFD_RELOC_AVR_HI8_LDI_PM
 ENUMDOC
@@ -5027,14 +4848,15 @@ ENUM
   BFD_RELOC_AVR_HI8_LDI_GS
 ENUMDOC
   This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
-  of command address) into 8 bit immediate value of LDI insn.  If the address
-  is beyond the 128k boundary, the linker inserts a jump stub for this reloc
-  below 128k.
+  of command address) into 8 bit immediate value of LDI insn.  If the
+  address is beyond the 128k boundary, the linker inserts a jump stub
+  for this reloc below 128k.
 ENUM
   BFD_RELOC_AVR_HH8_LDI_PM
 ENUMDOC
-  This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
-  of command address) into 8 bit immediate value of LDI insn.
+  This is a 16 bit reloc for the AVR that stores 8 bit value (most
+  high 8 bit of command address) into 8 bit immediate value of LDI
+  insn.
 ENUM
   BFD_RELOC_AVR_LO8_LDI_PM_NEG
 ENUMDOC
@@ -5061,32 +4883,32 @@ ENUM
   BFD_RELOC_AVR_LDI
 ENUMDOC
   This is a 16 bit reloc for the AVR that stores all needed bits
-  for absolute addressing with ldi with overflow check to linktime
+  for absolute addressing with ldi with overflow check to linktime.
 ENUM
   BFD_RELOC_AVR_6
 ENUMDOC
   This is a 6 bit reloc for the AVR that stores offset for ldd/std
-  instructions
+  instructions.
 ENUM
   BFD_RELOC_AVR_6_ADIW
 ENUMDOC
   This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
-  instructions
+  instructions.
 ENUM
   BFD_RELOC_AVR_8_LO
 ENUMDOC
   This is a 8 bit reloc for the AVR that stores bits 0..7 of a symbol
-  in .byte lo8(symbol)
+  in .byte lo8(symbol).
 ENUM
   BFD_RELOC_AVR_8_HI
 ENUMDOC
   This is a 8 bit reloc for the AVR that stores bits 8..15 of a symbol
-  in .byte hi8(symbol)
+  in .byte hi8(symbol).
 ENUM
   BFD_RELOC_AVR_8_HLO
 ENUMDOC
   This is a 8 bit reloc for the AVR that stores bits 16..23 of a symbol
-  in .byte hlo8(symbol)
+  in .byte hlo8(symbol).
 ENUM
   BFD_RELOC_AVR_DIFF8
 ENUMX
@@ -5109,12 +4931,12 @@ ENUM
   BFD_RELOC_AVR_PORT6
 ENUMDOC
   This is a 6 bit reloc for the AVR that stores an I/O register
-  number for the IN and OUT instructions
+  number for the IN and OUT instructions.
 ENUM
   BFD_RELOC_AVR_PORT5
 ENUMDOC
   This is a 5 bit reloc for the AVR that stores an I/O register
-  number for the SBIC, SBIS, SBI and CBI instructions
+  number for the SBIC, SBIS, SBI and CBI instructions.
 
 ENUM
   BFD_RELOC_RISCV_HI20
@@ -5181,21 +5003,19 @@ ENUMX
 ENUMX
   BFD_RELOC_RISCV_TLS_TPREL64
 ENUMX
-  BFD_RELOC_RISCV_ALIGN
-ENUMX
-  BFD_RELOC_RISCV_RVC_BRANCH
+  BFD_RELOC_RISCV_TLSDESC_HI20
 ENUMX
-  BFD_RELOC_RISCV_RVC_JUMP
+  BFD_RELOC_RISCV_TLSDESC_LOAD_LO12
 ENUMX
-  BFD_RELOC_RISCV_RVC_LUI
+  BFD_RELOC_RISCV_TLSDESC_ADD_LO12
 ENUMX
-  BFD_RELOC_RISCV_GPREL_I
+  BFD_RELOC_RISCV_TLSDESC_CALL
 ENUMX
-  BFD_RELOC_RISCV_GPREL_S
+  BFD_RELOC_RISCV_ALIGN
 ENUMX
-  BFD_RELOC_RISCV_TPREL_I
+  BFD_RELOC_RISCV_RVC_BRANCH
 ENUMX
-  BFD_RELOC_RISCV_TPREL_S
+  BFD_RELOC_RISCV_RVC_JUMP
 ENUMX
   BFD_RELOC_RISCV_RELAX
 ENUMX
@@ -5212,6 +5032,10 @@ ENUMX
   BFD_RELOC_RISCV_SET32
 ENUMX
   BFD_RELOC_RISCV_32_PCREL
+ENUMX
+  BFD_RELOC_RISCV_SET_ULEB128
+ENUMX
+  BFD_RELOC_RISCV_SUB_ULEB128
 ENUMDOC
   RISC-V relocations.
 
@@ -5346,7 +5170,7 @@ ENUMDOC
 ENUM
   BFD_RELOC_390_12
 ENUMDOC
-   Direct 12 bit.
+  Direct 12 bit.
 ENUM
   BFD_RELOC_390_GOT12
 ENUMDOC
@@ -5526,18 +5350,18 @@ ENUMDOC
 ENUM
   BFD_RELOC_SCORE_GPREL15
 ENUMDOC
-  Score relocations
-  Low 16 bit for load/store
+  Score relocations.
+  Low 16 bit for load/store.
 ENUM
   BFD_RELOC_SCORE_DUMMY2
 ENUMX
   BFD_RELOC_SCORE_JMP
 ENUMDOC
-  This is a 24-bit reloc with the right 1 bit assumed to be 0
+  This is a 24-bit reloc with the right 1 bit assumed to be 0.
 ENUM
   BFD_RELOC_SCORE_BRANCH
 ENUMDOC
-  This is a 19-bit reloc with the right 1 bit assumed to be 0
+  This is a 19-bit reloc with the right 1 bit assumed to be 0.
 ENUM
   BFD_RELOC_SCORE_IMM30
 ENUMDOC
@@ -5549,15 +5373,15 @@ ENUMDOC
 ENUM
   BFD_RELOC_SCORE16_JMP
 ENUMDOC
-  This is a 11-bit reloc with the right 1 bit assumed to be 0
+  This is a 11-bit reloc with the right 1 bit assumed to be 0.
 ENUM
   BFD_RELOC_SCORE16_BRANCH
 ENUMDOC
-  This is a 8-bit reloc with the right 1 bit assumed to be 0
+  This is a 8-bit reloc with the right 1 bit assumed to be 0.
 ENUM
   BFD_RELOC_SCORE_BCMP
 ENUMDOC
-   This is a 9-bit reloc with the right 1 bit assumed to be 0
+  This is a 9-bit reloc with the right 1 bit assumed to be 0.
 ENUM
   BFD_RELOC_SCORE_GOT15
 ENUMX
@@ -5567,24 +5391,24 @@ ENUMX
 ENUMX
   BFD_RELOC_SCORE_DUMMY_HI16
 ENUMDOC
-  Undocumented Score relocs
+  Undocumented Score relocs.
 
 ENUM
   BFD_RELOC_IP2K_FR9
 ENUMDOC
-  Scenix IP2K - 9-bit register number / data address
+  Scenix IP2K - 9-bit register number / data address.
 ENUM
   BFD_RELOC_IP2K_BANK
 ENUMDOC
-  Scenix IP2K - 4-bit register/data bank number
+  Scenix IP2K - 4-bit register/data bank number.
 ENUM
   BFD_RELOC_IP2K_ADDR16CJP
 ENUMDOC
-  Scenix IP2K - low 13 bits of instruction word address
+  Scenix IP2K - low 13 bits of instruction word address.
 ENUM
   BFD_RELOC_IP2K_PAGE3
 ENUMDOC
-  Scenix IP2K - high 3 bits of instruction word address
+  Scenix IP2K - high 3 bits of instruction word address.
 ENUM
   BFD_RELOC_IP2K_LO8DATA
 ENUMX
@@ -5592,17 +5416,17 @@ ENUMX
 ENUMX
   BFD_RELOC_IP2K_EX8DATA
 ENUMDOC
-  Scenix IP2K - ext/low/high 8 bits of data address
+  Scenix IP2K - ext/low/high 8 bits of data address.
 ENUM
   BFD_RELOC_IP2K_LO8INSN
 ENUMX
   BFD_RELOC_IP2K_HI8INSN
 ENUMDOC
-  Scenix IP2K - low/high 8 bits of instruction word address
+  Scenix IP2K - low/high 8 bits of instruction word address.
 ENUM
   BFD_RELOC_IP2K_PC_SKIP
 ENUMDOC
-  Scenix IP2K - even/odd PC modifier to modify snb pcl.0
+  Scenix IP2K - even/odd PC modifier to modify snb pcl.0.
 ENUM
   BFD_RELOC_IP2K_TEXT
 ENUMDOC
@@ -5610,13 +5434,13 @@ ENUMDOC
 ENUM
   BFD_RELOC_IP2K_FR_OFFSET
 ENUMDOC
-  Scenix IP2K - 7-bit sp or dp offset
+  Scenix IP2K - 7-bit sp or dp offset.
 ENUM
   BFD_RELOC_VPE4KMATH_DATA
 ENUMX
   BFD_RELOC_VPE4KMATH_INSN
 ENUMDOC
-  Scenix VPE4K coprocessor - data/insn-space addressing
+  Scenix VPE4K coprocessor - data/insn-space addressing.
 
 ENUM
   BFD_RELOC_VTABLE_INHERIT
@@ -5625,9 +5449,9 @@ ENUMX
 ENUMDOC
   These two relocations are used by the linker to determine which of
   the entries in a C++ virtual function table are actually used.  When
-  the --gc-sections option is given, the linker will zero out the entries
-  that are not used, so that the code for those functions need not be
-  included in the output.
+  the --gc-sections option is given, the linker will zero out the
+  entries that are not used, so that the code for those functions need
+  not be included in the output.
 
   VTABLE_INHERIT is a zero-space relocation used to describe to the
   linker the inheritance tree of a C++ virtual function table.  The
@@ -5635,11 +5459,11 @@ ENUMDOC
   relocation should be located at the child vtable.
 
   VTABLE_ENTRY is a zero-space relocation that describes the use of a
-  virtual function table entry.  The reloc's symbol should refer to the
-  table of the class mentioned in the code.  Off of that base, an offset
-  describes the entry that is being used.  For Rela hosts, this offset
-  is stored in the reloc's addend.  For Rel hosts, we are forced to put
-  this offset in the reloc's section offset.
+  virtual function table entry.  The reloc's symbol should refer to
+  the table of the class mentioned in the code.  Off of that base, an
+  offset describes the entry that is being used.  For Rela hosts, this
+  offset is stored in the reloc's addend.  For Rel hosts, we are
+  forced to put this offset in the reloc's section offset.
 
 ENUM
   BFD_RELOC_IA64_IMM14
@@ -5852,7 +5676,8 @@ ENUMDOC
   Motorola 68HC11 reloc.
   This is a 24-bit reloc that represents the address with a 16-bit
   value and a 8-bit page number.  The symbol address is transformed
-  to follow the 16K memory bank of 68HC12 (seen as mapped in the window).
+  to follow the 16K memory bank of 68HC12 (seen as mapped in the
+  window).
 ENUM
   BFD_RELOC_M68HC12_5B
 ENUMDOC
@@ -5874,8 +5699,8 @@ ENUM
   BFD_RELOC_XGATE_LO16
 ENUMDOC
   Freescale XGATE reloc.
-  This is the 16-bit lower part of an address.  It is used for the '16-bit'
-  instructions.
+  This is the 16-bit lower part of an address.  It is used for the
+  '16-bit' instructions.
 ENUM
   BFD_RELOC_XGATE_GPAGE
 ENUMDOC
@@ -5898,14 +5723,14 @@ ENUM
   BFD_RELOC_XGATE_IMM8_LO
 ENUMDOC
   Freescale XGATE reloc.
-  This is the 16-bit lower part of an address.  It is used for the '16-bit'
-  instructions.
+  This is the 16-bit lower part of an address.  It is used for the
+  '16-bit' instructions.
 ENUM
   BFD_RELOC_XGATE_IMM8_HI
 ENUMDOC
   Freescale XGATE reloc.
-  This is the 16-bit higher part of an address.  It is used for the '16-bit'
-  instructions.
+  This is the 16-bit higher part of an address.  It is used for the
+  '16-bit' instructions.
 ENUM
   BFD_RELOC_XGATE_IMM3
 ENUMDOC
@@ -5945,20 +5770,20 @@ ENUM
   BFD_RELOC_M68HC12_LO8XG
 ENUMDOC
   Motorola 68HC12/XGATE reloc.
-  This is the 8 bit low part of an absolute address and immediately precedes
-  a matching HI8XG part.
+  This is the 8 bit low part of an absolute address and immediately
+  precedes a matching HI8XG part.
 ENUM
   BFD_RELOC_M68HC12_HI8XG
 ENUMDOC
   Motorola 68HC12/XGATE reloc.
-  This is the 8 bit high part of an absolute address and immediately follows
-  a matching LO8XG part.
+  This is the 8 bit high part of an absolute address and immediately
+  follows a matching LO8XG part.
 ENUM
   BFD_RELOC_S12Z_15_PCREL
 ENUMDOC
   Freescale S12Z reloc.
-  This is a 15 bit relative address.  If the most significant bits are all zero
-  then it may be truncated to 8 bits.
+  This is a 15 bit relative address.  If the most significant bits are
+  all zero then it may be truncated to 8 bits.
 
 ENUM
   BFD_RELOC_CR16_NUM8
@@ -6132,7 +5957,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_CRIS_32_PLT_PCREL
 ENUMDOC
-  32-bit offset to symbol with PLT entry, relative to this relocation.
+  32-bit offset to symbol with PLT entry, relative to this
+  relocation.
 
 ENUM
   BFD_RELOC_CRIS_32_GOT_GD
@@ -6176,6 +6002,8 @@ ENUMX
 ENUMX
   BFD_RELOC_OR1K_GOTPC_LO16
 ENUMX
+  BFD_RELOC_OR1K_GOT_AHI16
+ENUMX
   BFD_RELOC_OR1K_GOT16
 ENUMX
   BFD_RELOC_OR1K_GOT_PG21
@@ -6272,18 +6100,6 @@ ENUM
   BFD_RELOC_RELC
 ENUMDOC
   Self-describing complex relocations.
-COMMENT
-
-ENUM
-  BFD_RELOC_XC16X_PAG
-ENUMX
-  BFD_RELOC_XC16X_POF
-ENUMX
-  BFD_RELOC_XC16X_SEG
-ENUMX
-  BFD_RELOC_XC16X_SOF
-ENUMDOC
-  Infineon Relocations.
 
 ENUM
   BFD_RELOC_VAX_GLOB_DAT
@@ -6363,115 +6179,12 @@ ENUMX
   BFD_RELOC_MSP430_PREL31
 ENUMX
   BFD_RELOC_MSP430_SYM_DIFF
-ENUMDOC
-  msp430 specific relocation codes
-
-ENUM
-  BFD_RELOC_NIOS2_S16
-ENUMX
-  BFD_RELOC_NIOS2_U16
-ENUMX
-  BFD_RELOC_NIOS2_CALL26
-ENUMX
-  BFD_RELOC_NIOS2_IMM5
-ENUMX
-  BFD_RELOC_NIOS2_CACHE_OPX
-ENUMX
-  BFD_RELOC_NIOS2_IMM6
-ENUMX
-  BFD_RELOC_NIOS2_IMM8
-ENUMX
-  BFD_RELOC_NIOS2_HI16
-ENUMX
-  BFD_RELOC_NIOS2_LO16
-ENUMX
-  BFD_RELOC_NIOS2_HIADJ16
-ENUMX
-  BFD_RELOC_NIOS2_GPREL
-ENUMX
-  BFD_RELOC_NIOS2_UJMP
-ENUMX
-  BFD_RELOC_NIOS2_CJMP
-ENUMX
-  BFD_RELOC_NIOS2_CALLR
-ENUMX
-  BFD_RELOC_NIOS2_ALIGN
-ENUMX
-  BFD_RELOC_NIOS2_GOT16
-ENUMX
-  BFD_RELOC_NIOS2_CALL16
-ENUMX
-  BFD_RELOC_NIOS2_GOTOFF_LO
-ENUMX
-  BFD_RELOC_NIOS2_GOTOFF_HA
-ENUMX
-  BFD_RELOC_NIOS2_PCREL_LO
-ENUMX
-  BFD_RELOC_NIOS2_PCREL_HA
-ENUMX
-  BFD_RELOC_NIOS2_TLS_GD16
-ENUMX
-  BFD_RELOC_NIOS2_TLS_LDM16
-ENUMX
-  BFD_RELOC_NIOS2_TLS_LDO16
-ENUMX
-  BFD_RELOC_NIOS2_TLS_IE16
-ENUMX
-  BFD_RELOC_NIOS2_TLS_LE16
-ENUMX
-  BFD_RELOC_NIOS2_TLS_DTPMOD
-ENUMX
-  BFD_RELOC_NIOS2_TLS_DTPREL
-ENUMX
-  BFD_RELOC_NIOS2_TLS_TPREL
-ENUMX
-  BFD_RELOC_NIOS2_COPY
-ENUMX
-  BFD_RELOC_NIOS2_GLOB_DAT
-ENUMX
-  BFD_RELOC_NIOS2_JUMP_SLOT
-ENUMX
-  BFD_RELOC_NIOS2_RELATIVE
-ENUMX
-  BFD_RELOC_NIOS2_GOTOFF
-ENUMX
-  BFD_RELOC_NIOS2_CALL26_NOAT
-ENUMX
-  BFD_RELOC_NIOS2_GOT_LO
-ENUMX
-  BFD_RELOC_NIOS2_GOT_HA
-ENUMX
-  BFD_RELOC_NIOS2_CALL_LO
-ENUMX
-  BFD_RELOC_NIOS2_CALL_HA
-ENUMX
-  BFD_RELOC_NIOS2_R2_S12
-ENUMX
-  BFD_RELOC_NIOS2_R2_I10_1_PCREL
-ENUMX
-  BFD_RELOC_NIOS2_R2_T1I7_1_PCREL
-ENUMX
-  BFD_RELOC_NIOS2_R2_T1I7_2
-ENUMX
-  BFD_RELOC_NIOS2_R2_T2I4
-ENUMX
-  BFD_RELOC_NIOS2_R2_T2I4_1
 ENUMX
-  BFD_RELOC_NIOS2_R2_T2I4_2
+  BFD_RELOC_MSP430_SET_ULEB128
 ENUMX
-  BFD_RELOC_NIOS2_R2_X1I7_2
-ENUMX
-  BFD_RELOC_NIOS2_R2_X2L5
-ENUMX
-  BFD_RELOC_NIOS2_R2_F1I5_2
-ENUMX
-  BFD_RELOC_NIOS2_R2_L5I4X1
-ENUMX
-  BFD_RELOC_NIOS2_R2_T1X1I6
-ENUMX
-  BFD_RELOC_NIOS2_R2_T1X1I6_2
+  BFD_RELOC_MSP430_SUB_ULEB128
 ENUMDOC
-  Relocations used by the Altera Nios II core.
+  msp430 specific relocation codes.
 
 ENUM
   BFD_RELOC_PRU_U16
@@ -6500,8 +6213,8 @@ ENUM
 ENUMX
   BFD_RELOC_PRU_16_PMEM
 ENUMDOC
-  PRU Program Memory relocations.  Used to convert from byte addressing to
-  32-bit word addressing.
+  PRU Program Memory relocations.  Used to convert from byte
+  addressing to 32-bit word addressing.
 ENUM
   BFD_RELOC_PRU_GNU_DIFF8
 ENUMX
@@ -6514,12 +6227,12 @@ ENUMX
   BFD_RELOC_PRU_GNU_DIFF32_PMEM
 ENUMDOC
   PRU 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
-  second symbol so the linker can determine whether to adjust the field
-  value. The PMEM variants encode the word difference, instead of byte
-  difference between 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 second symbol so the linker can determine whether to
+  adjust the field value.  The PMEM variants encode the word
+  difference, instead of byte difference between symbols.
 
 ENUM
   BFD_RELOC_IQ2000_OFFSET_16
@@ -6547,8 +6260,9 @@ ENUMDOC
 ENUM
   BFD_RELOC_XTENSA_PLT
 ENUMDOC
-  Xtensa relocation used in ELF object files for symbols that may require
-  PLT entries.  Otherwise, this is just a generic 32-bit relocation.
+  Xtensa relocation used in ELF object files for symbols that may
+  require PLT entries.  Otherwise, this is just a generic 32-bit
+  relocation.
 ENUM
   BFD_RELOC_XTENSA_DIFF8
 ENUMX
@@ -6556,12 +6270,14 @@ 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
-  assuming no relaxation.  The relocation encodes the position of the
-  first symbol so the linker can determine whether to adjust the field
-  value.
+  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 first symbol so the linker can determine whether to
+  adjust the field value.
 ENUM
   BFD_RELOC_XTENSA_SLOT0_OP
 ENUMX
@@ -6668,11 +6384,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
@@ -6688,25 +6454,25 @@ ENUMDOC
   4 bit value.
 
 ENUM
-   BFD_RELOC_LM32_CALL
+  BFD_RELOC_LM32_CALL
 ENUMX
-   BFD_RELOC_LM32_BRANCH
+  BFD_RELOC_LM32_BRANCH
 ENUMX
-   BFD_RELOC_LM32_16_GOT
+  BFD_RELOC_LM32_16_GOT
 ENUMX
-   BFD_RELOC_LM32_GOTOFF_HI16
+  BFD_RELOC_LM32_GOTOFF_HI16
 ENUMX
-   BFD_RELOC_LM32_GOTOFF_LO16
+  BFD_RELOC_LM32_GOTOFF_LO16
 ENUMX
-   BFD_RELOC_LM32_COPY
+  BFD_RELOC_LM32_COPY
 ENUMX
-   BFD_RELOC_LM32_GLOB_DAT
+  BFD_RELOC_LM32_GLOB_DAT
 ENUMX
-   BFD_RELOC_LM32_JMP_SLOT
+  BFD_RELOC_LM32_JMP_SLOT
 ENUMX
-   BFD_RELOC_LM32_RELATIVE
+  BFD_RELOC_LM32_RELATIVE
 ENUMDOC
- Lattice Mico32 relocations.
+  Lattice Mico32 relocations.
 
 ENUM
   BFD_RELOC_MACH_O_SECTDIFF
@@ -6744,8 +6510,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_MACH_O_X86_64_GOT_LOAD
 ENUMDOC
-  Used when loading a GOT entry with movq.  It is specially marked so that
-  the linker could optimize the movq to a leaq if possible.
+  Used when loading a GOT entry with movq.  It is specially marked so
+  that the linker could optimize the movq to a leaq if possible.
 ENUM
   BFD_RELOC_MACH_O_X86_64_PCREL32_1
 ENUMDOC
@@ -6784,64 +6550,69 @@ ENUMDOC
 ENUM
   BFD_RELOC_MICROBLAZE_32_LO
 ENUMDOC
-  This is a 32 bit reloc for the microblaze that stores the
-  low 16 bits of a value
+  This is a 32 bit reloc for the microblaze that stores the low 16
+  bits of a value.
 ENUM
   BFD_RELOC_MICROBLAZE_32_LO_PCREL
 ENUMDOC
-  This is a 32 bit pc-relative reloc for the microblaze that
-  stores the low 16 bits of a value
+  This is a 32 bit pc-relative reloc for the microblaze that stores
+  the low 16 bits of a value.
 ENUM
   BFD_RELOC_MICROBLAZE_32_ROSDA
 ENUMDOC
-  This is a 32 bit reloc for the microblaze that stores a
-  value relative to the read-only small data area anchor
+  This is a 32 bit reloc for the microblaze that stores a value
+  relative to the read-only small data area anchor.
 ENUM
   BFD_RELOC_MICROBLAZE_32_RWSDA
 ENUMDOC
-  This is a 32 bit reloc for the microblaze that stores a
-  value relative to the read-write small data area anchor
+  This is a 32 bit reloc for the microblaze that stores a value
+  relative to the read-write small data area anchor.
 ENUM
   BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM
 ENUMDOC
-  This is a 32 bit reloc for the microblaze to handle
-  expressions of the form "Symbol Op Symbol"
+  This is a 32 bit reloc for the microblaze to handle expressions of
+  the form "Symbol Op Symbol".
+ENUM
+  BFD_RELOC_MICROBLAZE_32_NONE
+ENUMDOC
+  This is a 32 bit reloc that stores the 32 bit pc relative value in
+  two words (with an imm instruction).  No relocation is done here -
+  only used for relaxing.
 ENUM
   BFD_RELOC_MICROBLAZE_64_NONE
 ENUMDOC
-  This is a 64 bit reloc that stores the 32 bit pc relative
-  value in two words (with an imm instruction).  No relocation is
-  done here - only used for relaxing
+  This is a 64 bit reloc that stores the 32 bit pc relative value in
+  two words (with an imm instruction).  No relocation is done here -
+  only used for relaxing.
 ENUM
   BFD_RELOC_MICROBLAZE_64_GOTPC
 ENUMDOC
-  This is a 64 bit reloc that stores the 32 bit pc relative
-  value in two words (with an imm instruction).  The relocation is
-  PC-relative GOT offset
+  This is a 64 bit reloc that stores the 32 bit pc relative value in
+  two words (with an imm instruction).  The relocation is PC-relative
+  GOT offset.
 ENUM
   BFD_RELOC_MICROBLAZE_64_GOT
 ENUMDOC
-  This is a 64 bit reloc that stores the 32 bit pc relative
-  value in two words (with an imm instruction).  The relocation is
-  GOT offset
+  This is a 64 bit reloc that stores the 32 bit pc relative value in
+  two words (with an imm instruction).  The relocation is GOT offset.
 ENUM
   BFD_RELOC_MICROBLAZE_64_PLT
 ENUMDOC
-  This is a 64 bit reloc that stores the 32 bit pc relative
-  value in two words (with an imm instruction).  The relocation is
-  PC-relative offset into PLT
+  This is a 64 bit reloc that stores the 32 bit pc relative value in
+  two words (with an imm instruction).  The relocation is PC-relative
+  offset into PLT.
 ENUM
   BFD_RELOC_MICROBLAZE_64_GOTOFF
 ENUMDOC
-  This is a 64 bit reloc that stores the 32 bit GOT relative
-  value in two words (with an imm instruction).  The relocation is
-  relative offset from _GLOBAL_OFFSET_TABLE_
+  This is a 64 bit reloc that stores the 32 bit GOT relative value in
+  two words (with an imm instruction).  The relocation is relative
+  offset from _GLOBAL_OFFSET_TABLE_.
 ENUM
   BFD_RELOC_MICROBLAZE_32_GOTOFF
 ENUMDOC
-  This is a 32 bit reloc that stores the 32 bit GOT relative
-  value in a word.  The relocation is relative offset from
-  _GLOBAL_OFFSET_TABLE_
+  This is a 32 bit reloc that stores the 32 bit GOT relative value in
+  a word.  The relocation is relative offset from
+  _GLOBAL_OFFSET_TABLE_.
 ENUM
   BFD_RELOC_MICROBLAZE_COPY
 ENUMDOC
@@ -6850,19 +6621,19 @@ ENUMDOC
 ENUM
   BFD_RELOC_MICROBLAZE_64_TLS
 ENUMDOC
-  Unused Reloc
+  Unused Reloc.
 ENUM
   BFD_RELOC_MICROBLAZE_64_TLSGD
 ENUMDOC
   This is a 64 bit reloc that stores the 32 bit GOT relative value
-  of the GOT TLS GD info entry in two words (with an imm instruction). The
-  relocation is GOT offset.
+  of the GOT TLS GD info entry in two words (with an imm instruction).
+  The relocation is GOT offset.
 ENUM
   BFD_RELOC_MICROBLAZE_64_TLSLD
 ENUMDOC
   This is a 64 bit reloc that stores the 32 bit GOT relative value
-  of the GOT TLS LD info entry in two words (with an imm instruction). The
-  relocation is GOT offset.
+  of the GOT TLS LD info entry in two words (with an imm instruction).
+  The relocation is GOT offset.
 ENUM
   BFD_RELOC_MICROBLAZE_32_TLSDTPMOD
 ENUMDOC
@@ -6875,30 +6646,214 @@ ENUM
   BFD_RELOC_MICROBLAZE_64_TLSDTPREL
 ENUMDOC
   This is a 32 bit reloc for storing TLS offset to two words (uses imm
-  instruction)
+  instruction).
 ENUM
   BFD_RELOC_MICROBLAZE_64_TLSGOTTPREL
 ENUMDOC
-  This is a 64 bit reloc that stores 32-bit thread pointer relative offset
-  to two words (uses imm instruction).
+  This is a 64 bit reloc that stores 32-bit thread pointer relative
+  offset to two words (uses imm instruction).
 ENUM
   BFD_RELOC_MICROBLAZE_64_TLSTPREL
 ENUMDOC
-  This is a 64 bit reloc that stores 32-bit thread pointer relative offset
-  to two words (uses imm instruction).
+  This is a 64 bit reloc that stores 32-bit thread pointer relative
+  offset to two words (uses imm instruction).
 ENUM
   BFD_RELOC_MICROBLAZE_64_TEXTPCREL
 ENUMDOC
-  This is a 64 bit reloc that stores the 32 bit pc relative
-  value in two words (with an imm instruction).  The relocation is
-  PC-relative offset from start of TEXT.
+  This is a 64 bit reloc that stores the 32 bit pc relative value in
+  two words (with an imm instruction).  The relocation is PC-relative
+  offset from start of TEXT.
 ENUM
   BFD_RELOC_MICROBLAZE_64_TEXTREL
 ENUMDOC
-  This is a 64 bit reloc that stores the 32 bit offset
-  value in two words (with an imm instruction).  The relocation is
-  relative offset from start of TEXT.
-
+  This is a 64 bit reloc that stores the 32 bit offset value in two
+  words (with an imm instruction).  The relocation is relative offset
+  from start of TEXT.
+ENUM
+  BFD_RELOC_KVX_RELOC_START
+ENUMDOC
+  KVX pseudo relocation code to mark the start of the KVX relocation
+  enumerators.  N.B. the order of the enumerators is important as
+  several tables in the KVX bfd backend are indexed by these
+  enumerators; make sure they are all synced.
+ENUM
+  BFD_RELOC_KVX_NONE
+ENUMDOC
+  KVX null relocation code.
+ENUM
+BFD_RELOC_KVX_16
+ENUMX
+BFD_RELOC_KVX_32
+ENUMX
+BFD_RELOC_KVX_64
+ENUMX
+BFD_RELOC_KVX_S16_PCREL
+ENUMX
+BFD_RELOC_KVX_PCREL17
+ENUMX
+BFD_RELOC_KVX_PCREL27
+ENUMX
+BFD_RELOC_KVX_32_PCREL
+ENUMX
+BFD_RELOC_KVX_S37_PCREL_LO10
+ENUMX
+BFD_RELOC_KVX_S37_PCREL_UP27
+ENUMX
+BFD_RELOC_KVX_S43_PCREL_LO10
+ENUMX
+BFD_RELOC_KVX_S43_PCREL_UP27
+ENUMX
+BFD_RELOC_KVX_S43_PCREL_EX6
+ENUMX
+BFD_RELOC_KVX_S64_PCREL_LO10
+ENUMX
+BFD_RELOC_KVX_S64_PCREL_UP27
+ENUMX
+BFD_RELOC_KVX_S64_PCREL_EX27
+ENUMX
+BFD_RELOC_KVX_64_PCREL
+ENUMX
+BFD_RELOC_KVX_S16
+ENUMX
+BFD_RELOC_KVX_S32_LO5
+ENUMX
+BFD_RELOC_KVX_S32_UP27
+ENUMX
+BFD_RELOC_KVX_S37_LO10
+ENUMX
+BFD_RELOC_KVX_S37_UP27
+ENUMX
+BFD_RELOC_KVX_S37_GOTOFF_LO10
+ENUMX
+BFD_RELOC_KVX_S37_GOTOFF_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOTOFF_LO10
+ENUMX
+BFD_RELOC_KVX_S43_GOTOFF_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOTOFF_EX6
+ENUMX
+BFD_RELOC_KVX_32_GOTOFF
+ENUMX
+BFD_RELOC_KVX_64_GOTOFF
+ENUMX
+BFD_RELOC_KVX_32_GOT
+ENUMX
+BFD_RELOC_KVX_S37_GOT_LO10
+ENUMX
+BFD_RELOC_KVX_S37_GOT_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOT_LO10
+ENUMX
+BFD_RELOC_KVX_S43_GOT_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOT_EX6
+ENUMX
+BFD_RELOC_KVX_64_GOT
+ENUMX
+BFD_RELOC_KVX_GLOB_DAT
+ENUMX
+BFD_RELOC_KVX_COPY
+ENUMX
+BFD_RELOC_KVX_JMP_SLOT
+ENUMX
+BFD_RELOC_KVX_RELATIVE
+ENUMX
+BFD_RELOC_KVX_S43_LO10
+ENUMX
+BFD_RELOC_KVX_S43_UP27
+ENUMX
+BFD_RELOC_KVX_S43_EX6
+ENUMX
+BFD_RELOC_KVX_S64_LO10
+ENUMX
+BFD_RELOC_KVX_S64_UP27
+ENUMX
+BFD_RELOC_KVX_S64_EX27
+ENUMX
+BFD_RELOC_KVX_S37_GOTADDR_LO10
+ENUMX
+BFD_RELOC_KVX_S37_GOTADDR_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOTADDR_LO10
+ENUMX
+BFD_RELOC_KVX_S43_GOTADDR_UP27
+ENUMX
+BFD_RELOC_KVX_S43_GOTADDR_EX6
+ENUMX
+BFD_RELOC_KVX_S64_GOTADDR_LO10
+ENUMX
+BFD_RELOC_KVX_S64_GOTADDR_UP27
+ENUMX
+BFD_RELOC_KVX_S64_GOTADDR_EX27
+ENUMX
+BFD_RELOC_KVX_64_DTPMOD
+ENUMX
+BFD_RELOC_KVX_64_DTPOFF
+ENUMX
+BFD_RELOC_KVX_S37_TLS_DTPOFF_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_DTPOFF_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_DTPOFF_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_DTPOFF_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_DTPOFF_EX6
+ENUMX
+BFD_RELOC_KVX_S37_TLS_GD_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_GD_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_GD_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_GD_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_GD_EX6
+ENUMX
+BFD_RELOC_KVX_S37_TLS_LD_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_LD_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LD_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LD_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LD_EX6
+ENUMX
+BFD_RELOC_KVX_64_TPOFF
+ENUMX
+BFD_RELOC_KVX_S37_TLS_IE_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_IE_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_IE_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_IE_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_IE_EX6
+ENUMX
+BFD_RELOC_KVX_S37_TLS_LE_LO10
+ENUMX
+BFD_RELOC_KVX_S37_TLS_LE_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LE_LO10
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LE_UP27
+ENUMX
+BFD_RELOC_KVX_S43_TLS_LE_EX6
+ENUMX
+BFD_RELOC_KVX_8
+ENUMDOC
+  KVX Relocations.
+ENUM
+  BFD_RELOC_KVX_RELOC_END
+ENUMDOC
+  KVX pseudo relocation code to mark the end of the KVX relocation
+  enumerators that have direct mapping to ELF reloc codes.  There are
+  a few more enumerators after this one; those are mainly used by the
+  KVX assembler for the internal fixup or to select one of the above
+  enumerators.
 ENUM
   BFD_RELOC_AARCH64_RELOC_START
 ENUMDOC
@@ -6922,8 +6877,8 @@ ENUMX
   BFD_RELOC_AARCH64_16
 ENUMDOC
   Basic absolute relocations of N bits.  These are equivalent to
-BFD_RELOC_N and they were added to assist the indexing of the howto
-table.
+  BFD_RELOC_N and they were added to assist the indexing of the howto
+  table.
 ENUM
   BFD_RELOC_AARCH64_64_PCREL
 ENUMX
@@ -6932,12 +6887,12 @@ ENUMX
   BFD_RELOC_AARCH64_16_PCREL
 ENUMDOC
   PC-relative relocations.  These are equivalent to BFD_RELOC_N_PCREL
-and they were added to assist the indexing of the howto table.
+  and they were added to assist the indexing of the howto table.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G0
 ENUMDOC
-  AArch64 MOV[NZK] instruction with most significant bits 0 to 15
-  of an unsigned address/value.
+  AArch64 MOV[NZK] instruction with most significant bits 0 to 15 of
+  an unsigned address/value.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G0_NC
 ENUMDOC
@@ -6946,83 +6901,83 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_MOVW_G1
 ENUMDOC
-  AArch64 MOV[NZK] instruction with most significant bits 16 to 31
-  of an unsigned address/value.
+  AArch64 MOV[NZK] instruction with most significant bits 16 to 31 of
+  an unsigned address/value.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G1_NC
 ENUMDOC
-  AArch64 MOV[NZK] instruction with less significant bits 16 to 31
-  of an address/value.  No overflow checking.
+  AArch64 MOV[NZK] instruction with less significant bits 16 to 31 of
+  an address/value.  No overflow checking.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G2
 ENUMDOC
-  AArch64 MOV[NZK] instruction with most significant bits 32 to 47
-  of an unsigned address/value.
+  AArch64 MOV[NZK] instruction with most significant bits 32 to 47 of
+  an unsigned address/value.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G2_NC
 ENUMDOC
-  AArch64 MOV[NZK] instruction with less significant bits 32 to 47
-  of an address/value.  No overflow checking.
+  AArch64 MOV[NZK] instruction with less significant bits 32 to 47 of
+  an address/value.  No overflow checking.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G3
 ENUMDOC
-  AArch64 MOV[NZK] instruction with most signficant bits 48 to 64
-  of a signed or unsigned address/value.
+  AArch64 MOV[NZK] instruction with most signficant bits 48 to 64 of a
+  signed or unsigned address/value.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G0_S
 ENUMDOC
-  AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-  of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+  AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+  signed value.  Changes instruction to MOVZ or MOVN depending on the
   value's sign.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G1_S
 ENUMDOC
-  AArch64 MOV[NZ] instruction with most significant bits 16 to 31
-  of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+  AArch64 MOV[NZ] instruction with most significant bits 16 to 31 of a
+  signed value.  Changes instruction to MOVZ or MOVN depending on the
   value's sign.
 ENUM
   BFD_RELOC_AARCH64_MOVW_G2_S
 ENUMDOC
-  AArch64 MOV[NZ] instruction with most significant bits 32 to 47
-  of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+  AArch64 MOV[NZ] instruction with most significant bits 32 to 47 of a
+  signed value.  Changes instruction to MOVZ or MOVN depending on the
   value's sign.
 ENUM
   BFD_RELOC_AARCH64_MOVW_PREL_G0
 ENUMDOC
-  AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-  of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+  AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+  signed value.  Changes instruction to MOVZ or MOVN depending on the
   value's sign.
 ENUM
   BFD_RELOC_AARCH64_MOVW_PREL_G0_NC
 ENUMDOC
-  AArch64 MOV[NZ] instruction with most significant bits 0 to 15
-  of a signed value.  Changes instruction to MOVZ or MOVN depending on the
+  AArch64 MOV[NZ] instruction with most significant bits 0 to 15 of a
+  signed value.  Changes instruction to MOVZ or MOVN depending on the
   value's sign.
 ENUM
   BFD_RELOC_AARCH64_MOVW_PREL_G1
 ENUMDOC
-  AArch64 MOVK instruction with most significant bits 16 to 31
-  of a signed value.
+  AArch64 MOVK instruction with most significant bits 16 to 31 of a
+  signed value.
 ENUM
   BFD_RELOC_AARCH64_MOVW_PREL_G1_NC
 ENUMDOC
-  AArch64 MOVK instruction with most significant bits 16 to 31
-  of a signed value.
+  AArch64 MOVK instruction with most significant bits 16 to 31 of a
+  signed value.
 ENUM
   BFD_RELOC_AARCH64_MOVW_PREL_G2
 ENUMDOC
-  AArch64 MOVK instruction with most significant bits 32 to 47
-  of a signed value.
+  AArch64 MOVK instruction with most significant bits 32 to 47 of a
+  signed value.
 ENUM
   BFD_RELOC_AARCH64_MOVW_PREL_G2_NC
 ENUMDOC
-  AArch64 MOVK instruction with most significant bits 32 to 47
-  of a signed value.
+  AArch64 MOVK instruction with most significant bits 32 to 47 of a
+  signed value.
 ENUM
   BFD_RELOC_AARCH64_MOVW_PREL_G3
 ENUMDOC
-  AArch64 MOVK instruction with most significant bits 47 to 63
-  of a signed value.
+  AArch64 MOVK instruction with most significant bits 47 to 63 of a
+  signed value.
 ENUM
   BFD_RELOC_AARCH64_LD_LO19_PCREL
 ENUMDOC
@@ -7032,7 +6987,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_ADR_LO21_PCREL
 ENUMDOC
-  AArch64 ADR instruction, holding a simple 21 bit pc-relative byte offset.
+  AArch64 ADR instruction, holding a simple 21 bit pc-relative byte
+  offset.
 ENUM
   BFD_RELOC_AARCH64_ADR_HI21_PCREL
 ENUMDOC
@@ -7047,8 +7003,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_ADD_LO12
 ENUMDOC
-  AArch64 ADD immediate instruction, holding bits 0 to 11 of the address.
-  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
+  AArch64 ADD immediate instruction, holding bits 0 to 11 of the
+  address.  Used in conjunction with BFD_RELOC_AARCH64_ADR_HI21_PCREL.
 ENUM
   BFD_RELOC_AARCH64_LDST8_LO12
 ENUMDOC
@@ -7058,26 +7014,26 @@ ENUM
   BFD_RELOC_AARCH64_TSTBR14
 ENUMDOC
   AArch64 14 bit pc-relative test bit and branch.
-  The lowest two bits must be zero and are not stored in the instruction,
-  giving a 16 bit signed byte offset.
+  The lowest two bits must be zero and are not stored in the
+  instruction, giving a 16 bit signed byte offset.
 ENUM
   BFD_RELOC_AARCH64_BRANCH19
 ENUMDOC
   AArch64 19 bit pc-relative conditional branch and compare & branch.
-  The lowest two bits must be zero and are not stored in the instruction,
-  giving a 21 bit signed byte offset.
+  The lowest two bits must be zero and are not stored in the
+  instruction, giving a 21 bit signed byte offset.
 ENUM
   BFD_RELOC_AARCH64_JUMP26
 ENUMDOC
   AArch64 26 bit pc-relative unconditional branch.
-  The lowest two bits must be zero and are not stored in the instruction,
-  giving a 28 bit signed byte offset.
+  The lowest two bits must be zero and are not stored in the
+  instruction, giving a 28 bit signed byte offset.
 ENUM
   BFD_RELOC_AARCH64_CALL26
 ENUMDOC
   AArch64 26 bit pc-relative unconditional branch and link.
-  The lowest two bits must be zero and are not stored in the instruction,
-  giving a 28 bit signed byte offset.
+  The lowest two bits must be zero and are not stored in the
+  instruction, giving a 28 bit signed byte offset.
 ENUM
   BFD_RELOC_AARCH64_LDST16_LO12
 ENUMDOC
@@ -7102,16 +7058,16 @@ ENUM
   BFD_RELOC_AARCH64_GOT_LD_PREL19
 ENUMDOC
   AArch64 Load Literal instruction, holding a 19 bit PC relative word
-  offset of the global offset table entry for a symbol.  The lowest two
-  bits must be zero and are not stored in the instruction, giving a 21
-  bit signed byte offset.  This relocation type requires signed overflow
-  checking.
+  offset of the global offset table entry for a symbol.  The lowest
+  two bits must be zero and are not stored in the instruction, giving
+  a 21 bit signed byte offset.  This relocation type requires signed
+  overflow checking.
 ENUM
   BFD_RELOC_AARCH64_ADR_GOT_PAGE
 ENUMDOC
-  Get to the page base of the global offset table entry for a symbol as
-  part of an ADRP instruction using a 21 bit PC relative value.Used in
-  conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
+  Get to the page base of the global offset table entry for a symbol
+  as part of an ADRP instruction using a 21 bit PC relative value.
+  Used in conjunction with BFD_RELOC_AARCH64_LD64_GOT_LO12_NC.
 ENUM
   BFD_RELOC_AARCH64_LD64_GOT_LO12_NC
 ENUMDOC
@@ -7132,8 +7088,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
 ENUMDOC
-  Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
-  for this symbol.  Valid in LP64 ABI only.
+  Unsigned 16 bit byte higher offset for 64 bit load/store from the
+  GOT entry for this symbol.  Valid in LP64 ABI only.
 ENUM
   BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
 ENUMDOC
@@ -7142,11 +7098,13 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14
 ENUMDOC
-  Scaled 14 bit byte offset to the page base of the global offset table.
+  Scaled 14 bit byte offset to the page base of the global offset
+  table.
 ENUM
   BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
 ENUMDOC
-  Scaled 15 bit byte offset to the page base of the global offset table.
+  Scaled 15 bit byte offset to the page base of the global offset
+  table.
 ENUM
   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21
 ENUMDOC
@@ -7157,12 +7115,12 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSGD_ADR_PREL21
 ENUMDOC
-  AArch64 TLS General Dynamic
+  AArch64 TLS General Dynamic.
 ENUM
   BFD_RELOC_AARCH64_TLSGD_ADD_LO12_NC
 ENUMDOC
-  Unsigned 12 bit byte offset to global offset table entry for a symbols
-  tls_index structure.  Used in conjunction with
+  Unsigned 12 bit byte offset to global offset table entry for a
+  symbol's tls_index structure.  Used in conjunction with
   BFD_RELOC_AARCH64_TLSGD_ADR_PAGE21.
 ENUM
   BFD_RELOC_AARCH64_TLSGD_MOVW_G0_NC
@@ -7207,12 +7165,13 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12_NC
 ENUMDOC
-  No overflow check version of BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
+  No overflow check version of
+  BFD_RELOC_AARCH64_TLSLD_ADD_DTPREL_LO12.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_ADD_LO12_NC
 ENUMDOC
-  Unsigned 12 bit byte offset to global offset table entry for a symbols
-  tls_index structure.  Used in conjunction with
+  Unsigned 12 bit byte offset to global offset table entry for a
+  symbol's tls_index structure.  Used in conjunction with
   BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_ADR_PAGE21
@@ -7222,7 +7181,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_ADR_PREL21
 ENUMDOC
-  GOT entry address for AArch64 TLS Local Dynamic, used with ADR instruction.
+  GOT entry address for AArch64 TLS Local Dynamic, used with ADR
+  instruction.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12
 ENUMDOC
@@ -7231,7 +7191,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLD_LDST16_DTPREL_LO12, but no
+  overflow check.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12
 ENUMDOC
@@ -7240,7 +7201,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLD_LDST32_DTPREL_LO12, but no
+  overflow check. 
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12
 ENUMDOC
@@ -7249,7 +7211,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLD_LDST64_DTPREL_LO12, but no
+  overflow check.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12
 ENUMDOC
@@ -7258,7 +7221,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLD_LDST8_DTPREL_LO12, but no
+  overflow check.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
 ENUMDOC
@@ -7266,7 +7230,7 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0_NC
 ENUMDOC
-  No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0
+  No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G0.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
 ENUMDOC
@@ -7274,7 +7238,7 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC
 ENUMDOC
-  No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1
+  No overflow check version of BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G2
 ENUMDOC
@@ -7319,7 +7283,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLE_LDST16_TPREL_LO12, but no
+  overflow check.
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12
 ENUMDOC
@@ -7328,7 +7293,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLE_LDST32_TPREL_LO12, but no
+  overflow check.
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12
 ENUMDOC
@@ -7337,7 +7303,8 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLE_LDST64_TPREL_LO12, but no
+  overflow check.
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12
 ENUMDOC
@@ -7346,83 +7313,52 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLE_LDST8_TPREL_LO12, but no overflow
+  check.
 ENUM
   BFD_RELOC_AARCH64_TLSDESC_LD_PREL19
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_ADR_PREL21
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_ADR_PAGE21
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_LD64_LO12
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_LD32_LO12_NC
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_ADD_LO12
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_OFF_G1
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_OFF_G0_NC
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_LDR
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_ADD
-ENUMDOC
-  AArch64 TLS DESC relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC_CALL
 ENUMDOC
-  AArch64 TLS DESC relocation.
+  AArch64 TLS DESC relocations.
 ENUM
   BFD_RELOC_AARCH64_COPY
-ENUMDOC
-  AArch64 TLS relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_GLOB_DAT
-ENUMDOC
-  AArch64 TLS relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_JUMP_SLOT
-ENUMDOC
-  AArch64 TLS relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_RELATIVE
 ENUMDOC
-  AArch64 TLS relocation.
+  AArch64 DSO relocations.
 ENUM
   BFD_RELOC_AARCH64_TLS_DTPMOD
-ENUMDOC
-  AArch64 TLS relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLS_DTPREL
-ENUMDOC
-  AArch64 TLS relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLS_TPREL
-ENUMDOC
-  AArch64 TLS relocation.
-ENUM
+ENUMX
   BFD_RELOC_AARCH64_TLSDESC
 ENUMDOC
-  AArch64 TLS relocation.
+  AArch64 TLS relocations.
 ENUM
   BFD_RELOC_AARCH64_IRELATIVE
 ENUMDOC
@@ -7448,23 +7384,25 @@ ENUMDOC
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12
 ENUMDOC
-  AArch64 pseudo relocation code for TLS local dynamic mode.  It's to be
-  used internally by the AArch64 assembler and not (currently) written to
-  any object files.
+  AArch64 pseudo relocation code for TLS local dynamic mode.  It's to
+  be used internally by the AArch64 assembler and not (currently)
+  written to any object files.
 ENUM
   BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLD_LDST_DTPREL_LO12, but no overflow
+  check.
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12
 ENUMDOC
   AArch64 pseudo relocation code for TLS local exec mode.  It's to be
-  used internally by the AArch64 assembler and not (currently) written to
-  any object files.
+  used internally by the AArch64 assembler and not (currently) written
+  to any object files.
 ENUM
   BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12_NC
 ENUMDOC
-  Similar as BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow check.
+  Similar to BFD_RELOC_AARCH64_TLSLE_LDST_TPREL_LO12, but no overflow
+  check.
 ENUM
   BFD_RELOC_AARCH64_LD_GOT_LO12_NC
 ENUMDOC
@@ -7481,6 +7419,12 @@ ENUMDOC
   AArch64 pseudo relocation code to be used internally by the AArch64
   assembler and not (currently) written to any object files.
 ENUM
+  BFD_RELOC_AARCH64_BRANCH9
+ENUMDOC
+  AArch64 9 bit pc-relative conditional branch and compare & branch.
+  The lowest two bits must be zero and are not stored in the
+  instruction, giving an 11 bit signed byte offset.
+ENUM
   BFD_RELOC_TILEPRO_COPY
 ENUMX
   BFD_RELOC_TILEPRO_GLOB_DAT
@@ -7864,40 +7808,39 @@ ENUMDOC
 ENUM
   BFD_RELOC_BPF_64
 ENUMX
-  BFD_RELOC_BPF_32
+  BFD_RELOC_BPF_DISP32
 ENUMX
-  BFD_RELOC_BPF_16
+  BFD_RELOC_BPF_DISPCALL32
 ENUMX
   BFD_RELOC_BPF_DISP16
-ENUMX
-  BFD_RELOC_BPF_DISP32
 ENUMDOC
   Linux eBPF relocations.
 
 ENUM
   BFD_RELOC_EPIPHANY_SIMM8
 ENUMDOC
-  Adapteva EPIPHANY - 8 bit signed pc-relative displacement
+  Adapteva EPIPHANY - 8 bit signed pc-relative displacement.
 ENUM
   BFD_RELOC_EPIPHANY_SIMM24
 ENUMDOC
-  Adapteva EPIPHANY - 24 bit signed pc-relative displacement
+  Adapteva EPIPHANY - 24 bit signed pc-relative displacement.
 ENUM
   BFD_RELOC_EPIPHANY_HIGH
 ENUMDOC
-  Adapteva EPIPHANY - 16 most-significant bits of absolute address
+  Adapteva EPIPHANY - 16 most-significant bits of absolute address.
 ENUM
   BFD_RELOC_EPIPHANY_LOW
 ENUMDOC
-  Adapteva EPIPHANY - 16 least-significant bits of absolute address
+  Adapteva EPIPHANY - 16 least-significant bits of absolute address.
 ENUM
   BFD_RELOC_EPIPHANY_SIMM11
 ENUMDOC
-  Adapteva EPIPHANY - 11 bit signed number - add/sub immediate
+  Adapteva EPIPHANY - 11 bit signed number - add/sub immediate.
 ENUM
   BFD_RELOC_EPIPHANY_IMM11
 ENUMDOC
-  Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st displacement)
+  Adapteva EPIPHANY - 11 bit sign-magnitude number (ld/st
+  displacement).
 ENUM
   BFD_RELOC_EPIPHANY_IMM8
 ENUMDOC
@@ -8081,11 +8024,254 @@ ENUM
 ENUMDOC
   S12Z relocations.
 
+ENUM
+  BFD_RELOC_LARCH_TLS_DTPMOD32
+ENUMX
+  BFD_RELOC_LARCH_TLS_DTPREL32
+ENUMX
+  BFD_RELOC_LARCH_TLS_DTPMOD64
+ENUMX
+  BFD_RELOC_LARCH_TLS_DTPREL64
+ENUMX
+  BFD_RELOC_LARCH_TLS_TPREL32
+ENUMX
+  BFD_RELOC_LARCH_TLS_TPREL64
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC32
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC64
+ENUMX
+  BFD_RELOC_LARCH_MARK_LA
+ENUMX
+  BFD_RELOC_LARCH_MARK_PCREL
+ENUMX
+  BFD_RELOC_LARCH_SOP_PUSH_PCREL
+ENUMX
+  BFD_RELOC_LARCH_SOP_PUSH_ABSOLUTE
+ENUMX
+  BFD_RELOC_LARCH_SOP_PUSH_DUP
+ENUMX
+  BFD_RELOC_LARCH_SOP_PUSH_GPREL
+ENUMX
+  BFD_RELOC_LARCH_SOP_PUSH_TLS_TPREL
+ENUMX
+  BFD_RELOC_LARCH_SOP_PUSH_TLS_GOT
+ENUMX
+  BFD_RELOC_LARCH_SOP_PUSH_TLS_GD
+ENUMX
+  BFD_RELOC_LARCH_SOP_PUSH_PLT_PCREL
+ENUMX
+  BFD_RELOC_LARCH_SOP_ASSERT
+ENUMX
+  BFD_RELOC_LARCH_SOP_NOT
+ENUMX
+  BFD_RELOC_LARCH_SOP_SUB
+ENUMX
+  BFD_RELOC_LARCH_SOP_SL
+ENUMX
+  BFD_RELOC_LARCH_SOP_SR
+ENUMX
+  BFD_RELOC_LARCH_SOP_ADD
+ENUMX
+  BFD_RELOC_LARCH_SOP_AND
+ENUMX
+  BFD_RELOC_LARCH_SOP_IF_ELSE
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_S_10_5
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_U_10_12
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_S_10_12
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_S_10_16
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_S_10_16_S2
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_S_5_20
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_S_0_5_10_16_S2
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_S_0_10_10_16_S2
+ENUMX
+  BFD_RELOC_LARCH_SOP_POP_32_U
+ENUMX
+  BFD_RELOC_LARCH_ADD8
+ENUMX
+  BFD_RELOC_LARCH_ADD16
+ENUMX
+  BFD_RELOC_LARCH_ADD24
+ENUMX
+  BFD_RELOC_LARCH_ADD32
+ENUMX
+  BFD_RELOC_LARCH_ADD64
+ENUMX
+  BFD_RELOC_LARCH_SUB8
+ENUMX
+  BFD_RELOC_LARCH_SUB16
+ENUMX
+  BFD_RELOC_LARCH_SUB24
+ENUMX
+  BFD_RELOC_LARCH_SUB32
+ENUMX
+  BFD_RELOC_LARCH_SUB64
+
+ENUMX
+  BFD_RELOC_LARCH_B16
+ENUMX
+  BFD_RELOC_LARCH_B21
+ENUMX
+  BFD_RELOC_LARCH_B26
+
+ENUMX
+  BFD_RELOC_LARCH_ABS_HI20
+ENUMX
+  BFD_RELOC_LARCH_ABS_LO12
+ENUMX
+  BFD_RELOC_LARCH_ABS64_LO20
+ENUMX
+  BFD_RELOC_LARCH_ABS64_HI12
+
+ENUMX
+  BFD_RELOC_LARCH_PCALA_HI20
+ENUMX
+  BFD_RELOC_LARCH_PCALA_LO12
+ENUMX
+  BFD_RELOC_LARCH_PCALA64_LO20
+ENUMX
+  BFD_RELOC_LARCH_PCALA64_HI12
+
+ENUMX
+  BFD_RELOC_LARCH_GOT_PC_HI20
+ENUMX
+  BFD_RELOC_LARCH_GOT_PC_LO12
+ENUMX
+  BFD_RELOC_LARCH_GOT64_PC_LO20
+ENUMX
+  BFD_RELOC_LARCH_GOT64_PC_HI12
+ENUMX
+  BFD_RELOC_LARCH_GOT_HI20
+ENUMX
+  BFD_RELOC_LARCH_GOT_LO12
+ENUMX
+  BFD_RELOC_LARCH_GOT64_LO20
+ENUMX
+  BFD_RELOC_LARCH_GOT64_HI12
+
+ENUMX
+  BFD_RELOC_LARCH_TLS_LE_HI20
+ENUMX
+  BFD_RELOC_LARCH_TLS_LE_LO12
+ENUMX
+  BFD_RELOC_LARCH_TLS_LE64_LO20
+ENUMX
+  BFD_RELOC_LARCH_TLS_LE64_HI12
+ENUMX
+  BFD_RELOC_LARCH_TLS_IE_PC_HI20
+ENUMX
+  BFD_RELOC_LARCH_TLS_IE_PC_LO12
+ENUMX
+  BFD_RELOC_LARCH_TLS_IE64_PC_LO20
+ENUMX
+  BFD_RELOC_LARCH_TLS_IE64_PC_HI12
+ENUMX
+  BFD_RELOC_LARCH_TLS_IE_HI20
+ENUMX
+  BFD_RELOC_LARCH_TLS_IE_LO12
+ENUMX
+  BFD_RELOC_LARCH_TLS_IE64_LO20
+ENUMX
+  BFD_RELOC_LARCH_TLS_IE64_HI12
+ENUMX
+  BFD_RELOC_LARCH_TLS_LD_PC_HI20
+ENUMX
+  BFD_RELOC_LARCH_TLS_LD_HI20
+ENUMX
+  BFD_RELOC_LARCH_TLS_GD_PC_HI20
+ENUMX
+  BFD_RELOC_LARCH_TLS_GD_HI20
+
+ENUMX
+  BFD_RELOC_LARCH_32_PCREL
+
+ENUMX
+  BFD_RELOC_LARCH_RELAX
+
+ENUMX
+  BFD_RELOC_LARCH_DELETE
+
+ENUMX
+  BFD_RELOC_LARCH_ALIGN
+
+ENUMX
+  BFD_RELOC_LARCH_PCREL20_S2
+
+ENUMX
+  BFD_RELOC_LARCH_CFA
+
+ENUMX
+  BFD_RELOC_LARCH_ADD6
+ENUMX
+  BFD_RELOC_LARCH_SUB6
+
+ENUMX
+  BFD_RELOC_LARCH_ADD_ULEB128
+ENUMX
+  BFD_RELOC_LARCH_SUB_ULEB128
+
+ENUMX
+  BFD_RELOC_LARCH_64_PCREL
+
+ENUMX
+  BFD_RELOC_LARCH_CALL36
+
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC_PC_HI20
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC_PC_LO12
+
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC64_PC_LO20
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC64_PC_HI12
+
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC_HI20
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC_LO12
+
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC64_LO20
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC64_HI12
+
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC_LD
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC_CALL
+
+ENUMX
+  BFD_RELOC_LARCH_TLS_LE_HI20_R
+ENUMX
+  BFD_RELOC_LARCH_TLS_LE_ADD_R
+ENUMX
+  BFD_RELOC_LARCH_TLS_LE_LO12_R
+
+ENUMX
+  BFD_RELOC_LARCH_TLS_LD_PCREL20_S2
+ENUMX
+  BFD_RELOC_LARCH_TLS_GD_PCREL20_S2
+ENUMX
+  BFD_RELOC_LARCH_TLS_DESC_PCREL20_S2
+
+ENUMDOC
+  LARCH relocations.
+
 ENDSENUM
   BFD_RELOC_UNUSED
+
 CODE_FRAGMENT
-.
 .typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
+.
 */
 
 /*
@@ -8103,7 +8289,6 @@ DESCRIPTION
 	Return a pointer to a howto structure which, when
 	invoked, will perform the relocation @var{code} on data from the
 	architecture noted.
-
 */
 
 reloc_howto_type *
@@ -8119,7 +8304,7 @@ bfd_reloc_name_lookup (bfd *abfd, const
 }
 
 static reloc_howto_type bfd_howto_32 =
-HOWTO (0, 00, 2, 32, FALSE, 0, complain_overflow_dont, 0, "VRT32", FALSE, 0xffffffff, 0xffffffff, TRUE);
+HOWTO (0, 00, 4, 32, false, 0, complain_overflow_dont, 0, "VRT32", false, 0xffffffff, 0xffffffff, true);
 
 /*
 INTERNAL_FUNCTION
@@ -8131,7 +8316,6 @@ SYNOPSIS
 
 DESCRIPTION
 	Provides a default relocation lookup routine for any architecture.
-
 */
 
 reloc_howto_type *
@@ -8170,29 +8354,29 @@ INTERNAL_FUNCTION
 	bfd_generic_relax_section
 
 SYNOPSIS
-	bfd_boolean bfd_generic_relax_section
+	bool bfd_generic_relax_section
 	  (bfd *abfd,
 	   asection *section,
 	   struct bfd_link_info *,
-	   bfd_boolean *);
+	   bool *);
 
 DESCRIPTION
 	Provides default handling for relaxing for back ends which
 	don't do relaxing.
 */
 
-bfd_boolean
+bool
 bfd_generic_relax_section (bfd *abfd ATTRIBUTE_UNUSED,
 			   asection *section ATTRIBUTE_UNUSED,
 			   struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
-			   bfd_boolean *again)
+			   bool *again)
 {
   if (bfd_link_relocatable (link_info))
-    (*link_info->callbacks->einfo)
-      (_("%P%F: --relax and -r may not be used together\n"));
+    link_info->callbacks->fatal
+      (_("%P: --relax and -r may not be used together\n"));
 
-  *again = FALSE;
-  return TRUE;
+  *again = false;
+  return true;
 }
 
 /*
@@ -8200,7 +8384,7 @@ INTERNAL_FUNCTION
 	bfd_generic_gc_sections
 
 SYNOPSIS
-	bfd_boolean bfd_generic_gc_sections
+	bool bfd_generic_gc_sections
 	  (bfd *, struct bfd_link_info *);
 
 DESCRIPTION
@@ -8208,11 +8392,11 @@ DESCRIPTION
 	don't do section gc -- i.e., does nothing.
 */
 
-bfd_boolean
+bool
 bfd_generic_gc_sections (bfd *abfd ATTRIBUTE_UNUSED,
 			 struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /*
@@ -8220,7 +8404,7 @@ INTERNAL_FUNCTION
 	bfd_generic_lookup_section_flags
 
 SYNOPSIS
-	bfd_boolean bfd_generic_lookup_section_flags
+	bool bfd_generic_lookup_section_flags
 	  (struct bfd_link_info *, struct flag_info *, asection *);
 
 DESCRIPTION
@@ -8229,7 +8413,7 @@ DESCRIPTION
 	Returns FALSE if the section should be omitted, otherwise TRUE.
 */
 
-bfd_boolean
+bool
 bfd_generic_lookup_section_flags (struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				  struct flag_info *flaginfo,
 				  asection *section ATTRIBUTE_UNUSED)
@@ -8237,9 +8421,9 @@ bfd_generic_lookup_section_flags (struct
   if (flaginfo != NULL)
     {
       _bfd_error_handler (_("INPUT_SECTION_FLAGS are not supported"));
-      return FALSE;
+      return false;
     }
-  return TRUE;
+  return true;
 }
 
 /*
@@ -8247,7 +8431,7 @@ INTERNAL_FUNCTION
 	bfd_generic_merge_sections
 
 SYNOPSIS
-	bfd_boolean bfd_generic_merge_sections
+	bool bfd_generic_merge_sections
 	  (bfd *, struct bfd_link_info *);
 
 DESCRIPTION
@@ -8255,11 +8439,11 @@ DESCRIPTION
 	which don't have SEC_MERGE support -- i.e., does nothing.
 */
 
-bfd_boolean
+bool
 bfd_generic_merge_sections (bfd *abfd ATTRIBUTE_UNUSED,
 			    struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
 /*
@@ -8272,13 +8456,12 @@ SYNOPSIS
 	   struct bfd_link_info *link_info,
 	   struct bfd_link_order *link_order,
 	   bfd_byte *data,
-	   bfd_boolean relocatable,
+	   bool relocatable,
 	   asymbol **symbols);
 
 DESCRIPTION
 	Provides default handling of relocation effort for back ends
 	which can't be bothered to do it efficiently.
-
 */
 
 bfd_byte *
@@ -8286,7 +8469,7 @@ bfd_generic_get_relocated_section_conten
 					    struct bfd_link_info *link_info,
 					    struct bfd_link_order *link_order,
 					    bfd_byte *data,
-					    bfd_boolean relocatable,
+					    bool relocatable,
 					    asymbol **symbols)
 {
   bfd *input_bfd = link_order->u.indirect.section->owner;
@@ -8300,6 +8483,7 @@ bfd_generic_get_relocated_section_conten
     return NULL;
 
   /* Read in the section.  */
+  bfd_byte *orig_data = data;
   if (!bfd_get_full_section_contents (input_bfd, input_section, &data))
     return NULL;
 
@@ -8311,7 +8495,7 @@ bfd_generic_get_relocated_section_conten
 
   reloc_vector = (arelent **) bfd_malloc (reloc_size);
   if (reloc_vector == NULL)
-    return NULL;
+    goto error_return;
 
   reloc_count = bfd_canonicalize_reloc (input_bfd,
 					input_section,
@@ -8357,14 +8541,14 @@ bfd_generic_get_relocated_section_conten
 	    {
 	      bfd_vma off;
 	      static reloc_howto_type none_howto
-		= HOWTO (0, 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL,
-			 "unused", FALSE, 0, 0, FALSE);
+		= HOWTO (0, 0, 0, 0, false, 0, complain_overflow_dont, NULL,
+			 "unused", false, 0, 0, false);
 
 	      off = ((*parent)->address
 		     * bfd_octets_per_byte (input_bfd, input_section));
 	      _bfd_clear_contents ((*parent)->howto, input_bfd,
 				   input_section, data, off);
-	      (*parent)->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	      (*parent)->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	      (*parent)->addend = 0;
 	      (*parent)->howto = &none_howto;
 	      r = bfd_reloc_ok;
@@ -8393,7 +8577,7 @@ bfd_generic_get_relocated_section_conten
 		case bfd_reloc_undefined:
 		  (*link_info->callbacks->undefined_symbol)
 		    (link_info, bfd_asymbol_name (*(*parent)->sym_ptr_ptr),
-		     input_bfd, input_section, (*parent)->address, TRUE);
+		     input_bfd, input_section, (*parent)->address, true);
 		  break;
 		case bfd_reloc_dangerous:
 		  BFD_ASSERT (error_message != NULL);
@@ -8446,8 +8630,10 @@ bfd_generic_get_relocated_section_conten
   free (reloc_vector);
   return data;
 
-error_return:
+ error_return:
   free (reloc_vector);
+  if (orig_data == NULL)
+    free (data);
   return NULL;
 }
 
@@ -8474,6 +8660,10 @@ _bfd_generic_set_reloc (bfd *abfd ATTRIB
 {
   section->orelocation = relptr;
   section->reloc_count = count;
+  if (count != 0)
+    section->flags |= SEC_RELOC;
+  else
+    section->flags &= ~SEC_RELOC;
 }
 
 /*
@@ -8481,7 +8671,7 @@ INTERNAL_FUNCTION
 	_bfd_unrecognized_reloc
 
 SYNOPSIS
-	bfd_boolean _bfd_unrecognized_reloc
+	bool _bfd_unrecognized_reloc
 	  (bfd * abfd,
 	   sec_ptr section,
 	   unsigned int r_type);
@@ -8492,7 +8682,7 @@ DESCRIPTION
 	Returns FALSE so that it can be called from a return statement.
 */
 
-bfd_boolean
+bool
 _bfd_unrecognized_reloc (bfd * abfd, sec_ptr section, unsigned int r_type)
 {
    /* xgettext:c-format */
@@ -8504,7 +8694,7 @@ _bfd_unrecognized_reloc (bfd * abfd, sec
 		      BFD_VERSION_STRING);
 
   bfd_set_error (bfd_error_bad_value);
-  return FALSE;
+  return false;
 }
 
 reloc_howto_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.20200303/bfd/rs6000-core.c ./bfd/rs6000-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/rs6000-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/rs6000-core.c	2026-03-05 02:07:20.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-2025 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,28 +277,27 @@ 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);
-bfd_boolean rs6000coff_core_file_matches_executable_p (bfd *core_bfd,
-						       bfd *exec_bfd);
+bfd_cleanup rs6000coff_core_p (bfd *abfd);
+bool rs6000coff_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd);
 char * rs6000coff_core_file_failing_command (bfd *abfd);
 int rs6000coff_core_file_failing_signal (bfd *abfd);
 
 /* Try to read into CORE the header from the core file associated with ABFD.
    Return success.  */
 
-static bfd_boolean
+static bool
 read_hdr (bfd *abfd, CoreHdr *core)
 {
   bfd_size_type size;
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    return false;
 
   /* Read the leading portion that old and new core dump structures have in
      common.  */
   size = CORE_COMMONSZ;
-  if (bfd_bread (core, size, abfd) != size)
-    return FALSE;
+  if (bfd_read (core, size, abfd) != size)
+    return false;
 
   /* Read the trailing portion of the structure.  */
   if (CORE_NEW (*core))
@@ -308,7 +307,7 @@ read_hdr (bfd *abfd, CoreHdr *core)
     size = sizeof (core->old);
 #endif
   size -= CORE_COMMONSZ;
-  return bfd_bread ((char *) core + CORE_COMMONSZ, size, abfd) == size;
+  return bfd_read ((char *) core + CORE_COMMONSZ, size, abfd) == size;
 }
 
 static asection *
@@ -332,7 +331,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;
@@ -343,7 +342,7 @@ rs6000coff_core_p (bfd *abfd)
   /* Values from new and old core structures.  */
   int c_flag;
   file_ptr c_stack, c_regoff, c_loader;
-  bfd_size_type c_size, c_regsize, c_lsize;
+  bfd_size_type c_size, c_regsize, c_lsize, c_extoff;
   bfd_vma c_stackend;
   void *c_regptr;
   int proc64;
@@ -371,6 +370,7 @@ rs6000coff_core_p (bfd *abfd)
       c_stackend = CNEW_STACKORG (core.new_dump) + c_size;
       c_lsize = CNEW_LSIZE (core.new_dump);
       c_loader = CNEW_LOADER (core.new_dump);
+      c_extoff = core.new_dump.c_extctx;
 #ifndef BFD64
       proc64 = CNEW_PROC64 (core.new_dump);
     }
@@ -476,12 +476,15 @@ rs6000coff_core_p (bfd *abfd)
 #else
   size =  sizeof (core.new_dump);
 #endif
-  tmpptr = (char *) bfd_zalloc (abfd, (bfd_size_type) size);
+  tmpptr = bfd_alloc (abfd, size + 1);
   if (!tmpptr)
     return NULL;
 
   /* Copy core file header.  */
   memcpy (tmpptr, &core, size);
+  /* Ensure core_file_failing_command string is terminated.  This is
+     just to stop buffer overflows on fuzzed files.  */
+  tmpptr[size] = 0;
   set_tdata (abfd, tmpptr);
 
   /* Set architecture.  */
@@ -518,6 +521,19 @@ rs6000coff_core_p (bfd *abfd)
 			  c_regsize, (bfd_vma) 0, c_regoff))
     goto fail;
 
+  if (c_extoff)
+    {
+      if (!make_bfd_asection (abfd, ".aix-vmx",
+			      SEC_HAS_CONTENTS,
+			      560, (bfd_vma) 0, c_extoff))
+	goto fail;
+
+      if (!make_bfd_asection (abfd, ".aix-vsx",
+			      SEC_HAS_CONTENTS,
+			      256, (bfd_vma) 0, c_extoff + 584))
+	goto fail;
+    }
+
   /* .ldinfo section.
      To actually find out how long this section is in this particular
      core dump would require going down the whole list of struct ld_info's.
@@ -608,7 +624,7 @@ rs6000coff_core_p (bfd *abfd)
       {
 	if (bfd_seek (abfd, c_loader, SEEK_SET) != 0)
 	  goto fail;
-	if (bfd_bread (&ldinfo, size, abfd) != size)
+	if (bfd_read (&ldinfo, size, abfd) != size)
 	  goto fail;
 
 	if (proc64)
@@ -657,7 +673,7 @@ rs6000coff_core_p (bfd *abfd)
 #else
 	    size = sizeof (vminfo.new_dump);
 #endif
-	    if (bfd_bread (&vminfo, size, abfd) != size)
+	    if (bfd_read (&vminfo, size, abfd) != size)
 	      goto fail;
 
 	    if (CORE_NEW (core))
@@ -686,7 +702,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);
@@ -697,7 +713,7 @@ rs6000coff_core_p (bfd *abfd)
 
 /* Return `TRUE' if given core is from the given executable.  */
 
-bfd_boolean
+bool
 rs6000coff_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
 {
   CoreHdr core;
@@ -705,11 +721,11 @@ rs6000coff_core_file_matches_executable_
   char *path, *s;
   size_t alloc;
   const char *str1, *str2;
-  bfd_boolean ret;
+  bool ret;
   file_ptr c_loader;
 
   if (!read_hdr (core_bfd, &core))
-    return FALSE;
+    return false;
 
   if (CORE_NEW (core))
     c_loader = CNEW_LOADER (core.new_dump);
@@ -724,20 +740,20 @@ rs6000coff_core_file_matches_executable_
     size = (int) ((LdInfo *) 0)->l32.ldinfo_filename;
 
   if (bfd_seek (core_bfd, c_loader + size, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   alloc = 100;
   path = bfd_malloc ((bfd_size_type) alloc);
   if (path == NULL)
-    return FALSE;
+    return false;
   s = path;
 
   while (1)
     {
-      if (bfd_bread (s, (bfd_size_type) 1, core_bfd) != 1)
+      if (bfd_read (s, 1, core_bfd) != 1)
 	{
 	  free (path);
-	  return FALSE;
+	  return false;
 	}
       if (*s == '\0')
 	break;
@@ -751,7 +767,7 @@ rs6000coff_core_file_matches_executable_
 	  if (n == NULL)
 	    {
 	      free (path);
-	      return FALSE;
+	      return false;
 	    }
 	  s = n + (path - s);
 	  path = n;
@@ -759,16 +775,16 @@ 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;
+    ret = true;
   else
-    ret = FALSE;
+    ret = false;
 
   free (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.20200303/bfd/sco5-core.c ./bfd/sco5-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/sco5-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/sco5-core.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,396 +0,0 @@
-/* BFD back end for SCO5 core files (U-area and raw sections)
-   Copyright (C) 1998-2019 Free Software Foundation, Inc.
-   Written by Jouke Numan <jnuman@hiscom.nl>
-
-   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"
-#include "libaout.h"		/* BFD a.out internal data structures */
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/dir.h>
-#include <signal.h>
-
-#include <sys/user.h>		/* After a.out.h  */
-#ifdef SCO5_CORE
-#include <sys/paccess.h>
-#include <sys/region.h>
-#endif
-
-struct sco5_core_struct
-{
-  struct user u;
-};
-
-/* forward declarations */
-
-#define sco5_core_file_matches_executable_p generic_core_file_matches_executable_p
-#define sco5_core_file_pid _bfd_nocore_core_file_pid
-
-static asection *
-make_bfd_asection (bfd *abfd,
-		   const char *name,
-		   flagword flags,
-		   bfd_size_type size,
-		   bfd_vma vma,
-		   file_ptr filepos)
-{
-  asection *asect;
-
-  asect = bfd_make_section_anyway_with_flags (abfd, name, flags);
-  if (!asect)
-    return NULL;
-  asect->size = size;
-  asect->vma = vma;
-  asect->filepos = filepos;
-  asect->alignment_power = 2;
-
-  return asect;
-}
-
-static struct user *
-read_uarea (bfd *abfd, int filepos)
-{
-  struct sco5_core_struct *rawptr;
-  bfd_size_type amt = sizeof (struct sco5_core_struct);
-
-  rawptr = (struct sco5_core_struct *) bfd_zmalloc (amt);
-  if (rawptr == NULL)
-    return NULL;
-
-  abfd->tdata.sco5_core_data = rawptr;
-
-  if (bfd_seek (abfd, (file_ptr) filepos, SEEK_SET) != 0
-      || bfd_bread ((void *) &rawptr->u, (bfd_size_type) sizeof rawptr->u,
-		   abfd) != sizeof rawptr->u)
-    {
-      bfd_set_error (bfd_error_wrong_format);
-      return NULL;
-    }
-
-  /* Sanity check perhaps??? */
-  if (rawptr->u.u_dsize > 0x1000000)    /* Remember, it's in pages...  */
-    {
-      bfd_set_error (bfd_error_wrong_format);
-      return NULL;
-    }
-  if (rawptr->u.u_ssize > 0x1000000)
-    {
-      bfd_set_error (bfd_error_wrong_format);
-      return NULL;
-    }
-  return &rawptr->u;
-}
-
-const bfd_target *
-sco5_core_file_p (bfd *abfd)
-{
-  int coffset_siz, val, nsecs, cheadoffs;
-  int coresize;
-  struct user *u;
-  struct coreoffsets coffsets;
-  struct coresecthead chead;
-  char *secname;
-  flagword flags;
-
-  /* Read coreoffsets region at end of core (see core(FP)).  */
-
-  {
-    struct stat statbuf;
-
-    if (bfd_stat (abfd, &statbuf) < 0)
-      return NULL;
-
-    coresize = statbuf.st_size;
-  }
-  /* Last long in core is sizeof struct coreoffsets, read it */
-  if ((bfd_seek (abfd, (file_ptr) (coresize - sizeof coffset_siz),
-		 SEEK_SET) != 0)
-      || bfd_bread ((void *) &coffset_siz, (bfd_size_type) sizeof coffset_siz,
-		   abfd) != sizeof coffset_siz)
-    {
-      bfd_set_error (bfd_error_wrong_format);
-      return NULL;
-    }
-
-  /* Use it to seek start of coreoffsets region, read it and determine
-     validity */
-  if ((bfd_seek (abfd, (file_ptr) (coresize - coffset_siz), SEEK_SET) != 0)
-      || (bfd_bread ((void *) &coffsets, (bfd_size_type) sizeof coffsets, abfd)
-	  != sizeof coffsets)
-      || ((coffsets.u_info != 1) && (coffsets.u_info != C_VERSION)))
-    {
-      bfd_set_error (bfd_error_wrong_format);
-      return NULL;
-    }
-
-  if (coffsets.u_info == 1)
-    {
-      /* Old version, no section heads, read info from user struct */
-
-      u = read_uarea (abfd, coffsets.u_user);
-      if (! u)
-	goto fail;
-
-      if (!make_bfd_asection (abfd, ".reg", SEC_HAS_CONTENTS,
-			      (bfd_size_type) coffsets.u_usize,
-			      0 - (bfd_vma) u->u_ar0,
-			      (file_ptr) coffsets.u_user))
-	goto fail;
-
-      if (!make_bfd_asection (abfd, ".data",
-			      SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
-			      ((bfd_size_type) u->u_exdata.ux_dsize
-			       + u->u_exdata.ux_bsize),
-			      (bfd_vma) u->u_exdata.ux_datorg,
-			      (file_ptr) coffsets.u_data))
-	goto fail;
-
-      if (!make_bfd_asection (abfd, ".stack",
-			      SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS,
-			      (bfd_size_type) u->u_ssize * NBPC,
-			      (bfd_vma) u->u_sub,
-			      (file_ptr) coffsets.u_stack))
-	goto fail;
-
-      return abfd->xvec;		/* Done for version 1 */
-    }
-
-  /* Immediately before coreoffsets region is a long with offset in core
-     to first coresecthead (CORES_OFFSETS), the long before this is the
-     number of section heads in the list. Read both longs and read the
-     coresecthead and check its validity */
-
-  if ((bfd_seek (abfd,
-		 (file_ptr) (coresize - coffset_siz - 2 * sizeof coffset_siz),
-		 SEEK_SET) != 0)
-      || (bfd_bread ((void *) &nsecs, (bfd_size_type) sizeof nsecs, abfd)
-	  != sizeof nsecs)
-      || (bfd_bread ((void *) &cheadoffs, (bfd_size_type) sizeof cheadoffs,
-		    abfd) != sizeof cheadoffs)
-      || (bfd_seek (abfd, (file_ptr) cheadoffs, SEEK_SET) != 0)
-      || (bfd_bread ((void *) &chead, (bfd_size_type) sizeof chead, abfd)
-	  != sizeof chead)
-      || (chead.cs_stype != CORES_OFFSETS)
-      || (chead.cs_x.csx_magic != COREMAGIC_NUMBER))
-    {
-      bfd_set_error (bfd_error_wrong_format);
-      goto fail;
-    }
-
-  /* OK, we believe you.  You're a core file (sure, sure).  */
-
-  /* Now loop over all regions and map them */
-  nsecs--;				/* We've seen CORES_OFFSETS already */
-  for (; nsecs; nsecs--)
-    {
-      if ((bfd_seek (abfd, (file_ptr) chead.cs_hseek, SEEK_SET) != 0)
-	  || (bfd_bread ((void *) &chead, (bfd_size_type) sizeof chead, abfd)
-	      != sizeof chead))
-	{
-	  bfd_set_error (bfd_error_wrong_format);
-	  goto fail;
-	}
-
-      switch (chead.cs_stype)
-	{
-	case CORES_MAGIC:			/* Core header, check magic */
-	  if (chead.cs_x.csx_magic != COREMAGIC_NUMBER)
-	    {
-	      bfd_set_error (bfd_error_wrong_format);
-	      goto fail;
-	    }
-	  secname = NULL;
-	  nsecs++;				/* MAGIC not in section cnt!*/
-	  break;
-	case CORES_UAREA:			/* U-area, read in tdata */
-	  u = read_uarea (abfd, chead.cs_sseek);
-	  if (! u)
-	    goto fail;
-
-	  /* This is tricky.  As the "register section", we give them
-	     the entire upage and stack.  u.u_ar0 points to where
-	     "register 0" is stored.  There are two tricks with this,
-	     though.  One is that the rest of the registers might be
-	     at positive or negative (or both) displacements from
-	     *u_ar0.  The other is that u_ar0 is sometimes an absolute
-	     address in kernel memory, and on other systems it is an
-	     offset from the beginning of the `struct user'.
-
-	     As a practical matter, we don't know where the registers
-	     actually are, so we have to pass the whole area to GDB.
-	     We encode the value of u_ar0 by setting the .regs section
-	     up so that its virtual memory address 0 is at the place
-	     pointed to by u_ar0 (by setting the vma of the start of
-	     the section to -u_ar0).  GDB uses this info to locate the
-	     regs, using minor trickery to get around the
-	     offset-or-absolute-addr problem.  */
-
-	  chead.cs_vaddr = 0 - (bfd_vma) u->u_ar0;
-
-	  secname = ".reg";
-	  flags = SEC_HAS_CONTENTS;
-
-	  break;
-	case CORES_PREGION:			/* A program region, map it */
-	  switch (chead.cs_x.csx_preg.csxp_rtyp)
-	    {
-	    case PT_DATA:
-	      secname = ".data";	/* Data region.		 */
-	      break;
-	    case PT_STACK:
-	      secname = ".stack";	/* Stack region.	 */
-	      break;
-	    case PT_SHMEM:
-	      secname = ".shmem";	/* Shared memory	 */
-	      break;
-	    case PT_LIBDAT:
-	      secname = ".libdat";	/* Shared library data	 */
-	      break;
-	    case PT_V86:
-	      secname = ".virt86";	/* Virtual 8086 mode	 */
-	      break;
-	    case PT_SHFIL:
-	      secname = ".mmfile";	/* Memory mapped file	 */
-	      break;
-	    case PT_XDATA0:
-	      secname = ".Xdat0";	/* XENIX data region, virtual 0 */
-	      break;
-	    default:
-	      secname = "";
-	    }
-	  flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
-	  break;
-	case CORES_PROC:			/* struct proc */
-	case CORES_ITIMER:			/* interval timers */
-	case CORES_SCOUTSNAME:			/* struct scoutsname */
-	  secname = NULL;	/* Ignore these */
-	  break;
-	default:
-	  _bfd_error_handler ("Unhandled SCO core file section type %d\n",
-			      chead.cs_stype);
-	  continue;
-	}
-
-      if (secname
-	  && !make_bfd_asection (abfd, secname, flags,
-				 (bfd_size_type) chead.cs_vsize,
-				 (bfd_vma) chead.cs_vaddr,
-				 (file_ptr) chead.cs_sseek))
-	goto fail;
-
-    }
-
-  return abfd->xvec;
-
- fail:
-  if (abfd->tdata.any)
-    {
-      bfd_release (abfd, abfd->tdata.any);
-      abfd->tdata.any = NULL;
-    }
-  bfd_section_list_clear (abfd);
-  return NULL;
-}
-
-char *
-sco5_core_file_failing_command (bfd *abfd)
-{
-  char *com = abfd->tdata.sco5_core_data->u.u_comm;
-  if (*com)
-    return com;
-  else
-    return NULL;
-}
-
-int
-sco5_core_file_failing_signal (bfd *ignore_abfd)
-{
-  return ((ignore_abfd->tdata.sco5_core_data->u.u_sysabort != 0)
-	  ? ignore_abfd->tdata.sco5_core_data->u.u_sysabort
-	  : -1);
-}
-
-/* If somebody calls any byte-swapping routines, shoot them.  */
-static void
-swap_abort (void)
-{
-  abort (); /* This way doesn't require any declaration for ANSI to fuck up */
-}
-
-#define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
-#define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
-#define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
-
-const bfd_target core_sco5_vec =
-  {
-    "sco5-core",
-    bfd_target_unknown_flavour,
-    BFD_ENDIAN_LITTLE,	       /* target byte order */
-    BFD_ENDIAN_LITTLE,	       /* target headers byte order */
-    (HAS_RELOC | EXEC_P |	/* object flags */
-     HAS_LINENO | HAS_DEBUG |
-     HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
-    (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC), /* section flags */
-    0,				/* symbol prefix */
-    ' ',			/* ar_pad_char */
-    16,				/* ar_max_namelen */
-    0,				/* match priority.  */
-    NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit data */
-    NO_GET, NO_GETS, NO_PUT,		/* 32 bit data */
-    NO_GET, NO_GETS, NO_PUT,		/* 16 bit data */
-    NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit hdrs */
-    NO_GET, NO_GETS, NO_PUT,		/* 32 bit hdrs */
-    NO_GET, NO_GETS, NO_PUT,		/* 16 bit hdrs */
-
-    {				/* bfd_check_format */
-      _bfd_dummy_target,		/* unknown format */
-      _bfd_dummy_target,		/* object file */
-      _bfd_dummy_target,		/* archive */
-      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_write_contents */
-      _bfd_bool_bfd_false_error, bfd_false,
-      _bfd_bool_bfd_false_error, bfd_false
-    },
-
-    BFD_JUMP_TABLE_GENERIC (_bfd_generic),
-    BFD_JUMP_TABLE_COPY (_bfd_generic),
-    BFD_JUMP_TABLE_CORE (sco5),
-    BFD_JUMP_TABLE_ARCHIVE (_bfd_noarchive),
-    BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols),
-    BFD_JUMP_TABLE_RELOCS (_bfd_norelocs),
-    BFD_JUMP_TABLE_WRITE (_bfd_generic),
-    BFD_JUMP_TABLE_LINK (_bfd_nolink),
-    BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic),
-
-    NULL,
-
-    NULL			/* backend_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.20200303/bfd/section.c ./bfd/section.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/section.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/section.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -137,32 +137,49 @@ SUBSECTION
 /*
 DOCDD
 INODE
-typedef asection, section prototypes, Section Output, Sections
+	typedef asection, section prototypes, Section Output, Sections
 SUBSECTION
 	typedef asection
 
 	Here is the section structure:
 
-CODE_FRAGMENT
+EXTERNAL
+.{* Linenumber stuff.  *}
+.typedef struct lineno_cache_entry
+.{
+.  unsigned int line_number;	{* Linenumber from start of function.  *}
+.  union
+.  {
+.    struct bfd_symbol *sym;	{* Function name.  *}
+.    bfd_vma offset;		{* Offset into section.  *}
+.  } u;
+.}
+.alent;
 .
+
+CODE_FRAGMENT
 .typedef struct bfd_section
 .{
 .  {* The name of the section; the name isn't a copy, the pointer is
 .     the same as that passed to bfd_make_section.  *}
 .  const char *name;
 .
-.  {* A unique sequence number.  *}
-.  unsigned int id;
-.
-.  {* Which section in the bfd; 0..n-1 as sections are created in a bfd.  *}
-.  unsigned int index;
-.
 .  {* The next section in the list belonging to the BFD, or NULL.  *}
 .  struct bfd_section *next;
 .
 .  {* The previous section in the list belonging to the BFD, or NULL.  *}
 .  struct bfd_section *prev;
 .
+.  {* 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;
+.
 .  {* The field flags contains attributes of the section. Some
 .     flags are read in from the object file, and some are
 .     synthesized from other information.  *}
@@ -287,6 +304,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.  *}
@@ -328,9 +349,8 @@ CODE_FRAGMENT
 .     executables or shared objects. This is for COFF only.  *}
 .#define SEC_COFF_SHARED             0x8000000
 .
-.  {* This section should be compressed.  This is for ELF linker
-.     internal use only.  *}
-.#define SEC_ELF_COMPRESS            0x8000000
+.  {* Indicate that section has the purecode flag set.  *}
+.#define SEC_ELF_PURECODE            0x8000000
 .
 .  {* When a section with this flag is being linked, then if the size of
 .     the input section is less than a page, it should not cross a page
@@ -339,9 +359,8 @@ CODE_FRAGMENT
 .     TMS320C54X only.  *}
 .#define SEC_TIC54X_BLOCK           0x10000000
 .
-.  {* This section should be renamed.  This is for ELF linker
-.     internal use only.  *}
-.#define SEC_ELF_RENAME             0x10000000
+.  {* This section has the SHF_X86_64_LARGE flag.  This is ELF x86-64 only.  *}
+.#define SEC_ELF_LARGE              0x10000000
 .
 .  {* Conditionally link this section; do not link if there are no
 .     references found to any symbol in the section.  This is for TI
@@ -360,9 +379,6 @@ CODE_FRAGMENT
 .     when memory read flag isn't set. *}
 .#define SEC_COFF_NOREAD            0x40000000
 .
-.  {* Indicate that section has the purecode flag set.  *}
-.#define SEC_ELF_PURECODE           0x80000000
-.
 .  {*  End of section flags.  *}
 .
 .  {* Some internal packed boolean fields.  *}
@@ -384,7 +400,8 @@ CODE_FRAGMENT
 .  unsigned int compress_status : 2;
 .#define COMPRESS_SECTION_NONE    0
 .#define COMPRESS_SECTION_DONE    1
-.#define DECOMPRESS_SECTION_SIZED 2
+.#define DECOMPRESS_SECTION_ZLIB  2
+.#define DECOMPRESS_SECTION_ZSTD  3
 .
 .  {* The following flags are used by the ELF linker. *}
 .
@@ -400,10 +417,17 @@ CODE_FRAGMENT
 .#define SEC_INFO_TYPE_JUST_SYMS 4
 .#define SEC_INFO_TYPE_TARGET    5
 .#define SEC_INFO_TYPE_EH_FRAME_ENTRY 6
+.#define SEC_INFO_TYPE_SFRAME  7
 .
 .  {* Nonzero if this section uses RELA relocations, rather than REL.  *}
 .  unsigned int use_rela_p:1;
 .
+.  {* Nonzero if section contents are mmapped.  *}
+.  unsigned int mmapped_p:1;
+.
+.  {* Nonzero if section contents should not be freed.  *}
+.  unsigned int alloced:1;
+.
 .  {* Bits used by various backends.  The generic code doesn't touch
 .     these fields.  *}
 .
@@ -447,13 +471,6 @@ CODE_FRAGMENT
 .  {* The compressed size of the section in octets.  *}
 .  bfd_size_type compressed_size;
 .
-.  {* Relaxation table. *}
-.  struct relax_table *relax;
-.
-.  {* Count of used relaxation table entries. *}
-.  int relax_count;
-.
-.
 .  {* If this section is going to be output, then this value is the
 .     offset in *bytes* into the output section of the first byte in the
 .     input section (byte ==> smallest addressable unit on the
@@ -466,10 +483,6 @@ CODE_FRAGMENT
 .  {* The output section through which to map on output.  *}
 .  struct bfd_section *output_section;
 .
-.  {* The alignment requirement of the section, as an exponent of 2 -
-.     e.g., 3 aligns to 2^3 (or 8).  *}
-.  unsigned int alignment_power;
-.
 .  {* If an input section, a pointer to a vector of relocation
 .     records for the data in this section.  *}
 .  struct reloc_cache_entry *relocation;
@@ -481,6 +494,10 @@ CODE_FRAGMENT
 .  {* The number of relocation records in one of the above.  *}
 .  unsigned reloc_count;
 .
+.  {* The alignment requirement of the section, as an exponent of 2 -
+.     e.g., 3 aligns to 2^3 (or 8).  *}
+.  unsigned int alignment_power;
+.
 .  {* Information below is back end specific - and not always used
 .     or updated.  *}
 .
@@ -498,7 +515,7 @@ CODE_FRAGMENT
 .
 .  {* If the SEC_IN_MEMORY flag is set, this points to the actual
 .     contents.  *}
-.  unsigned char *contents;
+.  bfd_byte *contents;
 .
 .  {* Attached line number information.  *}
 .  alent *lineno;
@@ -531,29 +548,30 @@ CODE_FRAGMENT
 .
 .  {* A symbol which points at this section only.  *}
 .  struct bfd_symbol *symbol;
-.  struct bfd_symbol **symbol_ptr_ptr;
 .
 .  {* 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;
-.} asection;
 .
-.{* Relax table contains information about instructions which can
-.   be removed by relaxation -- replacing a long address with a
-.   short address.  *}
-.struct relax_table {
-.  {* Address where bytes may be deleted. *}
-.  bfd_vma addr;
-.
-.  {* Number of bytes to be deleted.  *}
-.  int size;
-.};
+.  {* 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;
+.
+.  {* Explicitly specified section type, if non-zero.  *}
+.  unsigned int type;
 .
+.} asection;
+.
+
+EXTERNAL
 .static inline const char *
 .bfd_section_name (const asection *sec)
 .{
@@ -595,7 +613,7 @@ CODE_FRAGMENT
 .{
 .  return sec->userdata;
 .}
-.static inline bfd_boolean
+.static inline bool
 .bfd_is_com_section (const asection *sec)
 .{
 .  return (sec->flags & SEC_IS_COMMON) != 0;
@@ -605,33 +623,35 @@ CODE_FRAGMENT
 .   because not all callers use the return value.  A macro implementation
 .   would use a comma expression, eg: "((ptr)->foo = val, TRUE)" and some
 .   compilers will complain about comma expressions that have no effect.  *}
-.static inline bfd_boolean
+.static inline bool
 .bfd_set_section_userdata (asection *sec, void *val)
 .{
 .  sec->userdata = val;
-.  return TRUE;
+.  return true;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_set_section_vma (asection *sec, bfd_vma val)
 .{
 .  sec->vma = sec->lma = val;
-.  sec->user_set_vma = TRUE;
-.  return TRUE;
+.  sec->user_set_vma = true;
+.  return true;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_set_section_lma (asection *sec, bfd_vma val)
 .{
 .  sec->lma = val;
-.  return TRUE;
+.  return true;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_set_section_alignment (asection *sec, unsigned int val)
 .{
+.  if (val >= sizeof (bfd_vma) * 8 - 1)
+.    return false;
 .  sec->alignment_power = val;
-.  return TRUE;
+.  return true;
 .}
 .
 .{* These sections are global, and are managed by BFD.  The application
@@ -644,6 +664,9 @@ CODE_FRAGMENT
 .#define BFD_COM_SECTION_NAME "*COM*"
 .#define BFD_IND_SECTION_NAME "*IND*"
 .
+.{* GNU object-only section name.  *}
+.#define GNU_OBJECT_ONLY_SECTION_NAME ".gnu_object_only"
+.
 .{* Pointer to the common section.  *}
 .#define bfd_com_section_ptr (&_bfd_std_section[0])
 .{* Pointer to the undefined section.  *}
@@ -653,32 +676,34 @@ CODE_FRAGMENT
 .{* Pointer to the indirect section.  *}
 .#define bfd_ind_section_ptr (&_bfd_std_section[3])
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_is_und_section (const asection *sec)
 .{
 .  return sec == bfd_und_section_ptr;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_is_abs_section (const asection *sec)
 .{
 .  return sec == bfd_abs_section_ptr;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_is_ind_section (const asection *sec)
 .{
 .  return sec == bfd_ind_section_ptr;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .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.  *}
-.static inline bfd_boolean
+.static inline bool
 .discarded_section (const asection *sec)
 .{
 .  return (!bfd_is_abs_section (sec)
@@ -687,55 +712,49 @@ CODE_FRAGMENT
 .          && sec->sec_info_type != SEC_INFO_TYPE_JUST_SYMS);
 .}
 .
+INTERNAL
 .#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, next, prev, id,  section_id, index, flags, user_set_vma, *}	\
+.  {  NAME, NULL, NULL, IDX, 0,          0,     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,                      *}	\
-.     0,            0,             0,					\
+.  {* segment_mark, sec_info_type, use_rela_p, mmapped_p, alloced,   *}	\
+.     0,            0,             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, *}	\
-.     0,   0,   0,    0,       0,               0,     0,		\
+.  {* vma, lma, size, rawsize, compressed_size,                      *}	\
+.     0,   0,   0,    0,       0,					\
 .									\
-.  {* output_offset, output_section, alignment_power,               *}	\
-.     0,             &SEC,           0,					\
+.  {* output_offset, output_section, relocation, orelocation,        *}	\
+.     0,             &SEC,           NULL,       NULL,			\
 .									\
-.  {* relocation, orelocation, reloc_count, filepos, rel_filepos,   *}	\
-.     NULL,       NULL,        0,           0,       0,			\
+.  {* reloc_count, alignment_power, filepos, rel_filepos,            *}	\
+.     0,           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,                    *}	\
-.     (struct bfd_symbol *) SYM, &SEC.symbol,				\
+.  {* symbol,                                                        *}	\
+.     (struct bfd_symbol *) SYM,					\
 .									\
-.  {* map_head, map_tail                                            *}	\
-.     { NULL }, { NULL }						\
-.    }
-.
-.{* We use a macro to initialize the static asymbol structures because
-.   traditional C does not permit us to initialize a union member while
-.   gcc warns if we don't initialize it.
-.   the_bfd, name, value, attr, section [, udata]  *}
-.#ifdef __STDC__
-.#define GLOBAL_SYM_INIT(NAME, SECTION) \
-.  { 0, NAME, 0, BSF_SECTION_SYM, SECTION, { 0 }}
-.#else
-.#define GLOBAL_SYM_INIT(NAME, SECTION) \
-.  { 0, NAME, 0, BSF_SECTION_SYM, SECTION }
-.#endif
+.  {* map_head, map_tail, already_assigned, type                     *}	\
+.     { NULL }, { NULL }, NULL,             0				\
+.									\
+.  }
+.
+.#define GLOBAL_SYM_INIT(NAME, SECTION)					\
+.  {* the_bfd, name, value, attr,            section, udata  *}		\
+.  {  0,       NAME, 0,     BSF_SECTION_SYM, SECTION, { 0 } }
 .
 */
 
@@ -795,20 +814,19 @@ bfd_section_hash_newfunc (struct bfd_has
    is useful for things like relocs which are relative to the base
    of a section.  */
 
-bfd_boolean
+bool
 _bfd_generic_new_section_hook (bfd *abfd, asection *newsect)
 {
   newsect->symbol = bfd_make_empty_symbol (abfd);
   if (newsect->symbol == NULL)
-    return FALSE;
+    return false;
 
   newsect->symbol->name = newsect->name;
   newsect->symbol->value = 0;
   newsect->symbol->section = newsect;
   newsect->symbol->flags = BSF_SECTION_SYM;
 
-  newsect->symbol_ptr_ptr = &newsect->symbol;
-  return TRUE;
+  return true;
 }
 
 unsigned int _bfd_section_id = 0x10;  /* id 0 to 3 used by STD_SECTION.  */
@@ -818,6 +836,10 @@ unsigned int _bfd_section_id = 0x10;  /*
 static asection *
 bfd_section_init (bfd *abfd, asection *newsect)
 {
+  /* Locking needed for the _bfd_section_id access.  */
+  if (!bfd_lock ())
+    return NULL;
+
   newsect->id = _bfd_section_id;
   newsect->index = abfd->section_count;
   newsect->owner = abfd;
@@ -828,6 +850,10 @@ bfd_section_init (bfd *abfd, asection *n
   _bfd_section_id++;
   abfd->section_count++;
   bfd_section_list_append (abfd, newsect);
+
+  if (!bfd_unlock ())
+    return NULL;
+
   return newsect;
 }
 
@@ -881,7 +907,10 @@ bfd_get_section_by_name (bfd *abfd, cons
 {
   struct section_hash_entry *sh;
 
-  sh = section_hash_lookup (&abfd->section_htab, name, FALSE, FALSE);
+  if (name == NULL)
+    return NULL;
+
+  sh = section_hash_lookup (&abfd->section_htab, name, false, false);
   if (sh != NULL)
     return &sh->section;
 
@@ -965,7 +994,7 @@ SYNOPSIS
 	asection *bfd_get_section_by_name_if
 	  (bfd *abfd,
 	   const char *name,
-	   bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
+	   bool (*func) (bfd *abfd, asection *sect, void *obj),
 	   void *obj);
 
 DESCRIPTION
@@ -983,15 +1012,16 @@ DESCRIPTION
 
 asection *
 bfd_get_section_by_name_if (bfd *abfd, const char *name,
-			    bfd_boolean (*operation) (bfd *,
-						      asection *,
-						      void *),
+			    bool (*operation) (bfd *, asection *, void *),
 			    void *user_storage)
 {
   struct section_hash_entry *sh;
   unsigned long hash;
 
-  sh = section_hash_lookup (&abfd->section_htab, name, FALSE, FALSE);
+  if (name == NULL)
+    return NULL;
+
+  sh = section_hash_lookup (&abfd->section_htab, name, false, false);
   if (sh == NULL)
     return NULL;
 
@@ -1029,7 +1059,7 @@ bfd_get_unique_section_name (bfd *abfd,
   char *sname;
 
   len = strlen (templat);
-  sname = (char *) bfd_malloc (len + 8);
+  sname = bfd_alloc (abfd, len + 8);
   if (sname == NULL)
     return NULL;
   memcpy (sname, templat, len);
@@ -1044,7 +1074,7 @@ bfd_get_unique_section_name (bfd *abfd,
 	abort ();
       sprintf (sname + len, ".%d", num++);
     }
-  while (section_hash_lookup (&abfd->section_htab, sname, FALSE, FALSE));
+  while (section_hash_lookup (&abfd->section_htab, sname, false, false));
 
   if (count != NULL)
     *count = num;
@@ -1099,7 +1129,7 @@ bfd_make_section_old_way (bfd *abfd, con
     {
       struct section_hash_entry *sh;
 
-      sh = section_hash_lookup (&abfd->section_htab, name, TRUE, FALSE);
+      sh = section_hash_lookup (&abfd->section_htab, name, true, false);
       if (sh == NULL)
 	return NULL;
 
@@ -1114,11 +1144,6 @@ bfd_make_section_old_way (bfd *abfd, con
       return bfd_section_init (abfd, newsect);
     }
 
-  /* Call new_section_hook when "creating" the standard abs, com, und
-     and ind sections to tack on format specific section data.
-     Also, create a proper section symbol.  */
-  if (! BFD_SEND (abfd, _new_section_hook, (abfd, newsect)))
-    return NULL;
   return newsect;
 }
 
@@ -1154,7 +1179,7 @@ bfd_make_section_anyway_with_flags (bfd
       return NULL;
     }
 
-  sh = section_hash_lookup (&abfd->section_htab, name, TRUE, FALSE);
+  sh = section_hash_lookup (&abfd->section_htab, name, true, false);
   if (sh == NULL)
     return NULL;
 
@@ -1239,7 +1264,7 @@ bfd_make_section_with_flags (bfd *abfd,
       || strcmp (name, BFD_IND_SECTION_NAME) == 0)
     return NULL;
 
-  sh = section_hash_lookup (&abfd->section_htab, name, TRUE, FALSE);
+  sh = section_hash_lookup (&abfd->section_htab, name, true, false);
   if (sh == NULL)
     return NULL;
 
@@ -1280,7 +1305,7 @@ FUNCTION
 	bfd_set_section_flags
 
 SYNOPSIS
-	bfd_boolean bfd_set_section_flags (asection *sec, flagword flags);
+	bool bfd_set_section_flags (asection *sec, flagword flags);
 
 DESCRIPTION
 	Set the attributes of the section @var{sec} to the value @var{flags}.
@@ -1294,11 +1319,11 @@ DESCRIPTION
 
 */
 
-bfd_boolean
+bool
 bfd_set_section_flags (asection *section, flagword flags)
 {
   section->flags = flags;
-  return TRUE;
+  return true;
 }
 
 /*
@@ -1372,7 +1397,7 @@ FUNCTION
 SYNOPSIS
 	asection *bfd_sections_find_if
 	  (bfd *abfd,
-	   bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
+	   bool (*operation) (bfd *abfd, asection *sect, void *obj),
 	   void *obj);
 
 DESCRIPTION
@@ -1388,7 +1413,7 @@ DESCRIPTION
 
 asection *
 bfd_sections_find_if (bfd *abfd,
-		      bfd_boolean (*operation) (bfd *, asection *, void *),
+		      bool (*operation) (bfd *, asection *, void *),
 		      void *user_storage)
 {
   asection *sect;
@@ -1405,7 +1430,7 @@ FUNCTION
 	bfd_set_section_size
 
 SYNOPSIS
-	bfd_boolean bfd_set_section_size (asection *sec, bfd_size_type val);
+	bool bfd_set_section_size (asection *sec, bfd_size_type val);
 
 DESCRIPTION
 	Set @var{sec} to the size @var{val}. If the operation is
@@ -1417,7 +1442,7 @@ DESCRIPTION
 
 */
 
-bfd_boolean
+bool
 bfd_set_section_size (asection *sec, bfd_size_type val)
 {
   /* Once you've started writing to any section you cannot create or change
@@ -1426,11 +1451,11 @@ bfd_set_section_size (asection *sec, bfd
   if (sec->owner == NULL || sec->owner->output_has_begun)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   sec->size = val;
-  return TRUE;
+  return true;
 }
 
 /*
@@ -1438,7 +1463,7 @@ FUNCTION
 	bfd_set_section_contents
 
 SYNOPSIS
-	bfd_boolean bfd_set_section_contents
+	bool bfd_set_section_contents
 	  (bfd *abfd, asection *section, const void *data,
 	   file_ptr offset, bfd_size_type count);
 
@@ -1464,7 +1489,7 @@ DESCRIPTION
 
 */
 
-bfd_boolean
+bool
 bfd_set_section_contents (bfd *abfd,
 			  sec_ptr section,
 			  const void *location,
@@ -1476,23 +1501,22 @@ bfd_set_section_contents (bfd *abfd,
   if (!(bfd_section_flags (section) & SEC_HAS_CONTENTS))
     {
       bfd_set_error (bfd_error_no_contents);
-      return FALSE;
+      return false;
     }
 
   sz = section->size;
   if ((bfd_size_type) offset > sz
-      || count > sz
-      || offset + count > sz
+      || count > sz - offset
       || count != (size_t) count)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   if (!bfd_write_p (abfd))
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   /* Record a copy of the data in memory if desired.  */
@@ -1503,11 +1527,11 @@ bfd_set_section_contents (bfd *abfd,
   if (BFD_SEND (abfd, _bfd_set_section_contents,
 		(abfd, section, location, offset, count)))
     {
-      abfd->output_has_begun = TRUE;
-      return TRUE;
+      abfd->output_has_begun = true;
+      return true;
     }
 
-  return FALSE;
+  return false;
 }
 
 /*
@@ -1515,7 +1539,7 @@ FUNCTION
 	bfd_get_section_contents
 
 SYNOPSIS
-	bfd_boolean bfd_get_section_contents
+	bool bfd_get_section_contents
 	  (bfd *abfd, asection *section, void *location, file_ptr offset,
 	   bfd_size_type count);
 
@@ -1532,7 +1556,7 @@ DESCRIPTION
 	<<FALSE>>.
 
 */
-bfd_boolean
+bool
 bfd_get_section_contents (bfd *abfd,
 			  sec_ptr section,
 			  void *location,
@@ -1541,33 +1565,53 @@ bfd_get_section_contents (bfd *abfd,
 {
   bfd_size_type sz;
 
-  if (section->flags & SEC_CONSTRUCTOR)
+  if (count == 0)
+    /* Don't bother.  */
+    return true;
+
+  if (section == NULL)
     {
-      memset (location, 0, (size_t) count);
-      return TRUE;
+      bfd_set_error (bfd_error_bad_value);
+      return false;
     }
 
-  if (abfd->direction != write_direction && section->rawsize != 0)
-    sz = section->rawsize;
-  else
-    sz = section->size;
-  if ((bfd_size_type) offset > sz
-      || count > sz
-      || offset + count > sz
-      || count != (size_t) count)
+  if (location == NULL)
     {
+      if (section->mmapped_p)
+	{
+	  /* Pass this request straight on to the target's function.
+	     All of the code below assumes that location != NULL.
+	     FIXME: Should we still check that count is sane ?  */
+	  return BFD_SEND (abfd, _bfd_get_section_contents,
+			   (abfd, section, location, offset, count));
+	}
+
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  if (count == 0)
-    /* Don't bother.  */
-    return TRUE;
+  if (section->flags & SEC_CONSTRUCTOR)
+    {
+      memset (location, 0, (size_t) count);
+      return true;
+    }
 
   if ((section->flags & SEC_HAS_CONTENTS) == 0)
     {
       memset (location, 0, (size_t) count);
-      return TRUE;
+      return true;
+    }
+
+  if (abfd == NULL)
+    return false;
+
+  sz = bfd_get_section_limit_octets (abfd, section);
+  if ((bfd_size_type) offset > sz
+      || count > sz - offset
+      || count != (size_t) count)
+    {
+      bfd_set_error (bfd_error_bad_value);
+      return false;
     }
 
   if ((section->flags & SEC_IN_MEMORY) != 0)
@@ -1579,11 +1623,11 @@ bfd_get_section_contents (bfd *abfd,
 	     error code.  */
 	  section->flags &= ~ SEC_IN_MEMORY;
 	  bfd_set_error (bfd_error_invalid_operation);
-	  return FALSE;
+	  return false;
 	}
 
       memmove (location, section->contents + offset, (size_t) count);
-      return TRUE;
+      return true;
     }
 
   return BFD_SEND (abfd, _bfd_get_section_contents,
@@ -1595,17 +1639,25 @@ FUNCTION
 	bfd_malloc_and_get_section
 
 SYNOPSIS
-	bfd_boolean bfd_malloc_and_get_section
+	bool bfd_malloc_and_get_section
 	  (bfd *abfd, asection *section, bfd_byte **buf);
 
 DESCRIPTION
 	Read all data from @var{section} in BFD @var{abfd}
 	into a buffer, *@var{buf}, malloc'd by this function.
+	Return @code{true} on success, @code{false} on failure in which
+	case *@var{buf} will be NULL.
 */
 
-bfd_boolean
+bool
 bfd_malloc_and_get_section (bfd *abfd, sec_ptr sec, bfd_byte **buf)
 {
+  /* FIXME: We sometimes get here when sec->alloced is set.
+     arm, aarch64, and xtensa targets all abort on some ld tests
+     if we also test sec->alloced here.  We really should not ever be
+     mallocing a buffer if we already have an alloced one.  */
+  if (sec->mmapped_p)
+    abort ();
   *buf = NULL;
   return bfd_get_full_section_contents (abfd, sec, buf);
 }
@@ -1614,8 +1666,9 @@ FUNCTION
 	bfd_copy_private_section_data
 
 SYNOPSIS
-	bfd_boolean bfd_copy_private_section_data
-	  (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
+	bool bfd_copy_private_section_data
+	  (bfd *ibfd, asection *isec, bfd *obfd, asection *osec,
+	   struct bfd_link_info *link_info);
 
 DESCRIPTION
 	Copy private section information from @var{isec} in the BFD
@@ -1626,9 +1679,9 @@ DESCRIPTION
 	o <<bfd_error_no_memory>> -
 	Not enough memory exists to create private data for @var{osec}.
 
-.#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
+.#define bfd_copy_private_section_data(ibfd, isec, obfd, osec, link_info) \
 .	BFD_SEND (obfd, _bfd_copy_private_section_data, \
-.		  (ibfd, isection, obfd, osection))
+.		  (ibfd, isec, obfd, osec, link_info))
 */
 
 /*
@@ -1636,17 +1689,17 @@ FUNCTION
 	bfd_generic_is_group_section
 
 SYNOPSIS
-	bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
+	bool bfd_generic_is_group_section (bfd *, const asection *sec);
 
 DESCRIPTION
 	Returns TRUE if @var{sec} is a member of a group.
 */
 
-bfd_boolean
+bool
 bfd_generic_is_group_section (bfd *abfd ATTRIBUTE_UNUSED,
 			      const asection *sec ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
 /*
@@ -1672,20 +1725,20 @@ FUNCTION
 	bfd_generic_discard_group
 
 SYNOPSIS
-	bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
+	bool bfd_generic_discard_group (bfd *abfd, asection *group);
 
 DESCRIPTION
 	Remove all members of @var{group} from the output.
 */
 
-bfd_boolean
+bool
 bfd_generic_discard_group (bfd *abfd ATTRIBUTE_UNUSED,
 			   asection *group ATTRIBUTE_UNUSED)
 {
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_nowrite_set_section_contents (bfd *abfd,
 				   sec_ptr section ATTRIBUTE_UNUSED,
 				   const void *location ATTRIBUTE_UNUSED,
@@ -1694,3 +1747,69 @@ _bfd_nowrite_set_section_contents (bfd *
 {
   return _bfd_bool_bfd_false_error (abfd);
 }
+
+/*
+FUNCTION
+	bfd_section_size_insane
+
+SYNOPSIS
+	bool bfd_section_size_insane (bfd *abfd, asection *sec);
+
+DESCRIPTION
+	Returns true if the given section has a size that indicates
+	it cannot be read from file.  Return false if the size is OK
+	*or* this function can't say one way or the other.
+
+*/
+
+bool
+bfd_section_size_insane (bfd *abfd, asection *sec)
+{
+  bfd_size_type size = bfd_get_section_limit_octets (abfd, sec);
+  if (size == 0)
+    return false;
+
+  if ((bfd_section_flags (sec) & SEC_IN_MEMORY) != 0
+      /* 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.  */
+      || bfd_get_flavour (abfd) == bfd_target_mmo_flavour)
+    return false;
+
+  ufile_ptr filesize = bfd_get_file_size (abfd);
+  if (filesize == 0)
+    return false;
+
+  if (sec->compress_status == DECOMPRESS_SECTION_ZSTD
+      || sec->compress_status == DECOMPRESS_SECTION_ZLIB)
+    {
+      /* PR26946, PR28834: Sanity check compress header uncompressed
+	 size against the original file size, and check that the
+	 compressed section can be read from file.  We choose an
+	 arbitrary uncompressed size of 10x the file size, rather than
+	 a compress ratio.  The reason being that compiling
+	 "int aaa..a;" with "a" repeated enough times can result in
+	 compression ratios without limit for .debug_str, whereas such
+	 a file will usually also have the enormous symbol
+	 uncompressed in .symtab.  */
+     if (size / 10 > filesize)
+       {
+	 bfd_set_error (bfd_error_bad_value);
+	 return true;
+       }
+     size = sec->compressed_size;
+    }
+
+  if ((ufile_ptr) sec->filepos > filesize || size > filesize - sec->filepos)
+    {
+      bfd_set_error (bfd_error_file_truncated);
+      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.20200303/bfd/simple.c ./bfd/simple.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/simple.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/simple.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* simple.c -- BFD simple client routines
-   Copyright (C) 2002-2019 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
    Contributed by MontaVista Software, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -23,6 +23,36 @@
 #include "bfd.h"
 #include "libbfd.h"
 #include "bfdlink.h"
+#include "genlink.h"
+
+static void
+simple_dummy_add_to_set (struct bfd_link_info * info ATTRIBUTE_UNUSED,
+			 struct bfd_link_hash_entry *entry ATTRIBUTE_UNUSED,
+			 bfd_reloc_code_real_type reloc ATTRIBUTE_UNUSED,
+			 bfd *abfd ATTRIBUTE_UNUSED,
+			 asection *sec ATTRIBUTE_UNUSED,
+			 bfd_vma value ATTRIBUTE_UNUSED)
+{
+}
+
+static  void
+simple_dummy_constructor (struct bfd_link_info * info ATTRIBUTE_UNUSED,
+			  bool constructor ATTRIBUTE_UNUSED,
+			  const char *name ATTRIBUTE_UNUSED,
+			  bfd *abfd ATTRIBUTE_UNUSED,
+			  asection *sec ATTRIBUTE_UNUSED,
+			  bfd_vma value ATTRIBUTE_UNUSED)
+{
+}
+
+static void
+simple_dummy_multiple_common (struct bfd_link_info * info ATTRIBUTE_UNUSED,
+			      struct bfd_link_hash_entry * entry ATTRIBUTE_UNUSED,
+			      bfd * abfd ATTRIBUTE_UNUSED,
+			      enum bfd_link_hash_type type ATTRIBUTE_UNUSED,
+			      bfd_vma size ATTRIBUTE_UNUSED)
+{
+}
 
 static void
 simple_dummy_warning (struct bfd_link_info *link_info ATTRIBUTE_UNUSED,
@@ -40,7 +70,7 @@ simple_dummy_undefined_symbol (struct bf
 			       bfd *abfd ATTRIBUTE_UNUSED,
 			       asection *section ATTRIBUTE_UNUSED,
 			       bfd_vma address ATTRIBUTE_UNUSED,
-			       bfd_boolean fatal ATTRIBUTE_UNUSED)
+			       bool fatal ATTRIBUTE_UNUSED)
 {
 }
 
@@ -179,8 +209,7 @@ bfd_simple_get_relocated_section_content
   struct bfd_link_info link_info;
   struct bfd_link_order link_order;
   struct bfd_link_callbacks callbacks;
-  bfd_byte *contents, *data;
-  int storage_needed;
+  bfd_byte *contents;
   struct saved_offsets saved_offsets;
   bfd *link_next;
 
@@ -189,10 +218,9 @@ bfd_simple_get_relocated_section_content
   if ((abfd->flags & (HAS_RELOC | EXEC_P | DYNAMIC)) != HAS_RELOC
       || ! (sec->flags & SEC_RELOC))
     {
-      contents = outbuf;
-      if (!bfd_get_full_section_contents (abfd, sec, &contents))
+      if (!bfd_get_full_section_contents (abfd, sec, &outbuf))
 	return NULL;
-      return contents;
+      return outbuf;
     }
 
   /* In order to use bfd_get_relocated_section_contents, we need
@@ -208,6 +236,9 @@ bfd_simple_get_relocated_section_content
   abfd->link.next = NULL;
   link_info.hash = _bfd_generic_link_hash_table_create (abfd);
   link_info.callbacks = &callbacks;
+  /* Make sure that any fields not initialised below do not
+     result in a potential indirection via a random address.  */
+  memset (&callbacks, 0, sizeof callbacks);
   callbacks.warning = simple_dummy_warning;
   callbacks.undefined_symbol = simple_dummy_undefined_symbol;
   callbacks.reloc_overflow = simple_dummy_reloc_overflow;
@@ -215,6 +246,9 @@ bfd_simple_get_relocated_section_content
   callbacks.unattached_reloc = simple_dummy_unattached_reloc;
   callbacks.multiple_definition = simple_dummy_multiple_definition;
   callbacks.einfo = simple_dummy_einfo;
+  callbacks.multiple_common = simple_dummy_multiple_common;
+  callbacks.constructor = simple_dummy_constructor;
+  callbacks.add_to_set = simple_dummy_add_to_set;
 
   memset (&link_order, 0, sizeof (link_order));
   link_order.next = NULL;
@@ -223,56 +257,32 @@ bfd_simple_get_relocated_section_content
   link_order.size = sec->size;
   link_order.u.indirect.section = sec;
 
-  data = NULL;
-  if (outbuf == NULL)
-    {
-      bfd_size_type amt = sec->rawsize > sec->size ? sec->rawsize : sec->size;
-      data = (bfd_byte *) bfd_malloc (amt);
-      if (data == NULL)
-	{
-	  _bfd_generic_link_hash_table_free (abfd);
-	  abfd->link.next = link_next;
-	  return NULL;
-	}
-      outbuf = data;
-    }
+  contents = NULL;
 
   saved_offsets.section_count = abfd->section_count;
   saved_offsets.sections = malloc (sizeof (*saved_offsets.sections)
 				   * saved_offsets.section_count);
   if (saved_offsets.sections == NULL)
-    {
-      if (data)
-	free (data);
-      _bfd_generic_link_hash_table_free (abfd);
-      abfd->link.next = link_next;
-      return NULL;
-    }
+    goto out1;
   bfd_map_over_sections (abfd, simple_save_output_info, &saved_offsets);
 
   if (symbol_table == NULL)
     {
-      _bfd_generic_link_add_symbols (abfd, &link_info);
-
-      storage_needed = bfd_get_symtab_upper_bound (abfd);
-      symbol_table = (asymbol **) bfd_malloc (storage_needed);
-      bfd_canonicalize_symtab (abfd, symbol_table);
+      if (!bfd_generic_link_read_symbols (abfd))
+	goto out2;
+      symbol_table = _bfd_generic_link_get_symbols (abfd);
     }
-  else
-    storage_needed = 0;
 
   contents = bfd_get_relocated_section_contents (abfd,
 						 &link_info,
 						 &link_order,
 						 outbuf,
-						 0,
+						 false,
 						 symbol_table);
-  if (contents == NULL && data != NULL)
-    free (data);
-
+ out2:
   bfd_map_over_sections (abfd, simple_restore_output_info, &saved_offsets);
   free (saved_offsets.sections);
-
+ out1:
   _bfd_generic_link_hash_table_free (abfd);
   abfd->link.next = link_next;
   return 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.20200303/bfd/som.c ./bfd/som.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/som.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/som.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah.
@@ -22,7 +22,6 @@
    02110-1301, USA.  */
 
 #include "sysdep.h"
-#include "alloca-conf.h"
 #include "bfd.h"
 #include "libiberty.h"
 #include "libbfd.h"
@@ -33,12 +32,12 @@
 
 static bfd_reloc_status_type hppa_som_reloc
   (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-static bfd_boolean som_mkobject (bfd *);
-static bfd_boolean som_is_space (asection *);
-static bfd_boolean som_is_subspace (asection *);
+static bool som_mkobject (bfd *);
+static bool som_is_space (asection *);
+static bool som_is_subspace (asection *);
 static int compare_subspaces (const void *, const void *);
-static unsigned long som_compute_checksum (struct som_external_header *);
-static bfd_boolean som_build_and_write_symbol_table (bfd *);
+static uint32_t som_compute_checksum (struct som_external_header *);
+static bool som_build_and_write_symbol_table (bfd *);
 static unsigned int som_slurp_symbol_table (bfd *);
 
 /* Magic not defined in standard HP-UX header files until 8.0.  */
@@ -114,7 +113,7 @@ static unsigned int som_slurp_symbol_tab
 
    Note one side effect of using a R_PREV_FIXUP is the relocation that
    is being repeated moves to the front of the queue.  */
-struct reloc_queue
+static struct reloc_queue
 {
   unsigned char *reloc;
   unsigned int size;
@@ -636,267 +635,268 @@ static const int comp3_opcodes[] =
 #define R_SHORT_PCREL_MODE 0x3e
 #endif
 
-#define SOM_HOWTO(TYPE, NAME)	\
-  HOWTO(TYPE, 0, 0, 32, FALSE, 0, 0, hppa_som_reloc, NAME, FALSE, 0, 0, FALSE)
+#define SOM_HOWTO(SIZE, TYPE)	\
+  HOWTO(TYPE, 0, SIZE, 32, false, 0, 0, hppa_som_reloc, \
+	#TYPE, false, 0, 0, false)
 
 static reloc_howto_type som_hppa_howto_table[] =
 {
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
-  SOM_HOWTO (R_ZEROES, "R_ZEROES"),
-  SOM_HOWTO (R_ZEROES, "R_ZEROES"),
-  SOM_HOWTO (R_UNINIT, "R_UNINIT"),
-  SOM_HOWTO (R_UNINIT, "R_UNINIT"),
-  SOM_HOWTO (R_RELOCATION, "R_RELOCATION"),
-  SOM_HOWTO (R_DATA_ONE_SYMBOL, "R_DATA_ONE_SYMBOL"),
-  SOM_HOWTO (R_DATA_ONE_SYMBOL, "R_DATA_ONE_SYMBOL"),
-  SOM_HOWTO (R_DATA_PLABEL, "R_DATA_PLABEL"),
-  SOM_HOWTO (R_DATA_PLABEL, "R_DATA_PLABEL"),
-  SOM_HOWTO (R_SPACE_REF, "R_SPACE_REF"),
-  SOM_HOWTO (R_REPEATED_INIT, "REPEATED_INIT"),
-  SOM_HOWTO (R_REPEATED_INIT, "REPEATED_INIT"),
-  SOM_HOWTO (R_REPEATED_INIT, "REPEATED_INIT"),
-  SOM_HOWTO (R_REPEATED_INIT, "REPEATED_INIT"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_PCREL_CALL, "R_PCREL_CALL"),
-  SOM_HOWTO (R_SHORT_PCREL_MODE, "R_SHORT_PCREL_MODE"),
-  SOM_HOWTO (R_LONG_PCREL_MODE, "R_LONG_PCREL_MODE"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_ABS_CALL, "R_ABS_CALL"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DP_RELATIVE, "R_DP_RELATIVE"),
-  SOM_HOWTO (R_DATA_GPREL, "R_DATA_GPREL"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_DLT_REL, "R_DLT_REL"),
-  SOM_HOWTO (R_DLT_REL, "R_DLT_REL"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_CODE_ONE_SYMBOL, "R_CODE_ONE_SYMBOL"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_MILLI_REL, "R_MILLI_REL"),
-  SOM_HOWTO (R_MILLI_REL, "R_MILLI_REL"),
-  SOM_HOWTO (R_CODE_PLABEL, "R_CODE_PLABEL"),
-  SOM_HOWTO (R_CODE_PLABEL, "R_CODE_PLABEL"),
-  SOM_HOWTO (R_BREAKPOINT, "R_BREAKPOINT"),
-  SOM_HOWTO (R_ENTRY, "R_ENTRY"),
-  SOM_HOWTO (R_ENTRY, "R_ENTRY"),
-  SOM_HOWTO (R_ALT_ENTRY, "R_ALT_ENTRY"),
-  SOM_HOWTO (R_EXIT, "R_EXIT"),
-  SOM_HOWTO (R_BEGIN_TRY, "R_BEGIN_TRY"),
-  SOM_HOWTO (R_END_TRY, "R_END_TRY"),
-  SOM_HOWTO (R_END_TRY, "R_END_TRY"),
-  SOM_HOWTO (R_END_TRY, "R_END_TRY"),
-  SOM_HOWTO (R_BEGIN_BRTAB, "R_BEGIN_BRTAB"),
-  SOM_HOWTO (R_END_BRTAB, "R_END_BRTAB"),
-  SOM_HOWTO (R_STATEMENT, "R_STATEMENT"),
-  SOM_HOWTO (R_STATEMENT, "R_STATEMENT"),
-  SOM_HOWTO (R_STATEMENT, "R_STATEMENT"),
-  SOM_HOWTO (R_DATA_EXPR, "R_DATA_EXPR"),
-  SOM_HOWTO (R_CODE_EXPR, "R_CODE_EXPR"),
-  SOM_HOWTO (R_FSEL, "R_FSEL"),
-  SOM_HOWTO (R_LSEL, "R_LSEL"),
-  SOM_HOWTO (R_RSEL, "R_RSEL"),
-  SOM_HOWTO (R_N_MODE, "R_N_MODE"),
-  SOM_HOWTO (R_S_MODE, "R_S_MODE"),
-  SOM_HOWTO (R_D_MODE, "R_D_MODE"),
-  SOM_HOWTO (R_R_MODE, "R_R_MODE"),
-  SOM_HOWTO (R_DATA_OVERRIDE, "R_DATA_OVERRIDE"),
-  SOM_HOWTO (R_DATA_OVERRIDE, "R_DATA_OVERRIDE"),
-  SOM_HOWTO (R_DATA_OVERRIDE, "R_DATA_OVERRIDE"),
-  SOM_HOWTO (R_DATA_OVERRIDE, "R_DATA_OVERRIDE"),
-  SOM_HOWTO (R_DATA_OVERRIDE, "R_DATA_OVERRIDE"),
-  SOM_HOWTO (R_TRANSLATED, "R_TRANSLATED"),
-  SOM_HOWTO (R_AUX_UNWIND, "R_AUX_UNWIND"),
-  SOM_HOWTO (R_COMP1, "R_COMP1"),
-  SOM_HOWTO (R_COMP2, "R_COMP2"),
-  SOM_HOWTO (R_COMP3, "R_COMP3"),
-  SOM_HOWTO (R_PREV_FIXUP, "R_PREV_FIXUP"),
-  SOM_HOWTO (R_PREV_FIXUP, "R_PREV_FIXUP"),
-  SOM_HOWTO (R_PREV_FIXUP, "R_PREV_FIXUP"),
-  SOM_HOWTO (R_PREV_FIXUP, "R_PREV_FIXUP"),
-  SOM_HOWTO (R_SEC_STMT, "R_SEC_STMT"),
-  SOM_HOWTO (R_N0SEL, "R_N0SEL"),
-  SOM_HOWTO (R_N1SEL, "R_N1SEL"),
-  SOM_HOWTO (R_LINETAB, "R_LINETAB"),
-  SOM_HOWTO (R_LINETAB_ESC, "R_LINETAB_ESC"),
-  SOM_HOWTO (R_LTP_OVERRIDE, "R_LTP_OVERRIDE"),
-  SOM_HOWTO (R_COMMENT, "R_COMMENT"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED"),
-  SOM_HOWTO (R_RESERVED, "R_RESERVED")
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_NO_RELOCATION),
+  SOM_HOWTO (0, R_ZEROES),
+  SOM_HOWTO (0, R_ZEROES),
+  SOM_HOWTO (0, R_UNINIT),
+  SOM_HOWTO (0, R_UNINIT),
+  SOM_HOWTO (4, R_RELOCATION),
+  SOM_HOWTO (4, R_DATA_ONE_SYMBOL),
+  SOM_HOWTO (4, R_DATA_ONE_SYMBOL),
+  SOM_HOWTO (4, R_DATA_PLABEL),
+  SOM_HOWTO (4, R_DATA_PLABEL),
+  SOM_HOWTO (4, R_SPACE_REF),
+  SOM_HOWTO (0, R_REPEATED_INIT),
+  SOM_HOWTO (0, R_REPEATED_INIT),
+  SOM_HOWTO (0, R_REPEATED_INIT),
+  SOM_HOWTO (0, R_REPEATED_INIT),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (4, R_PCREL_CALL),
+  SOM_HOWTO (0, R_SHORT_PCREL_MODE),
+  SOM_HOWTO (0, R_LONG_PCREL_MODE),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (4, R_ABS_CALL),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DP_RELATIVE),
+  SOM_HOWTO (4, R_DATA_GPREL),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (4, R_DLT_REL),
+  SOM_HOWTO (4, R_DLT_REL),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (4, R_CODE_ONE_SYMBOL),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (4, R_MILLI_REL),
+  SOM_HOWTO (4, R_MILLI_REL),
+  SOM_HOWTO (4, R_CODE_PLABEL),
+  SOM_HOWTO (4, R_CODE_PLABEL),
+  SOM_HOWTO (4, R_BREAKPOINT),
+  SOM_HOWTO (0, R_ENTRY),
+  SOM_HOWTO (0, R_ENTRY),
+  SOM_HOWTO (0, R_ALT_ENTRY),
+  SOM_HOWTO (0, R_EXIT),
+  SOM_HOWTO (0, R_BEGIN_TRY),
+  SOM_HOWTO (0, R_END_TRY),
+  SOM_HOWTO (0, R_END_TRY),
+  SOM_HOWTO (0, R_END_TRY),
+  SOM_HOWTO (0, R_BEGIN_BRTAB),
+  SOM_HOWTO (0, R_END_BRTAB),
+  SOM_HOWTO (0, R_STATEMENT),
+  SOM_HOWTO (0, R_STATEMENT),
+  SOM_HOWTO (0, R_STATEMENT),
+  SOM_HOWTO (4, R_DATA_EXPR),
+  SOM_HOWTO (4, R_CODE_EXPR),
+  SOM_HOWTO (0, R_FSEL),
+  SOM_HOWTO (0, R_LSEL),
+  SOM_HOWTO (0, R_RSEL),
+  SOM_HOWTO (0, R_N_MODE),
+  SOM_HOWTO (0, R_S_MODE),
+  SOM_HOWTO (0, R_D_MODE),
+  SOM_HOWTO (0, R_R_MODE),
+  SOM_HOWTO (0, R_DATA_OVERRIDE),
+  SOM_HOWTO (0, R_DATA_OVERRIDE),
+  SOM_HOWTO (0, R_DATA_OVERRIDE),
+  SOM_HOWTO (0, R_DATA_OVERRIDE),
+  SOM_HOWTO (0, R_DATA_OVERRIDE),
+  SOM_HOWTO (0, R_TRANSLATED),
+  SOM_HOWTO (0, R_AUX_UNWIND),
+  SOM_HOWTO (0, R_COMP1),
+  SOM_HOWTO (0, R_COMP2),
+  SOM_HOWTO (0, R_COMP3),
+  SOM_HOWTO (0, R_PREV_FIXUP),
+  SOM_HOWTO (0, R_PREV_FIXUP),
+  SOM_HOWTO (0, R_PREV_FIXUP),
+  SOM_HOWTO (0, R_PREV_FIXUP),
+  SOM_HOWTO (0, R_SEC_STMT),
+  SOM_HOWTO (0, R_N0SEL),
+  SOM_HOWTO (0, R_N1SEL),
+  SOM_HOWTO (0, R_LINETAB),
+  SOM_HOWTO (0, R_LINETAB_ESC),
+  SOM_HOWTO (0, R_LTP_OVERRIDE),
+  SOM_HOWTO (0, R_COMMENT),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED),
+  SOM_HOWTO (0, R_RESERVED)
 };
 
 /* Initialize the SOM relocation queue.  By definition the queue holds
@@ -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
@@ -2069,28 +2069,30 @@ som_object_setup (bfd *abfd,
    BFD sections which correspond to spaces will overlap the sections for the
    associated subspaces.  */
 
-static bfd_boolean
+static bool
 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;
@@ -2115,7 +2117,7 @@ setup_sections (bfd *abfd,
 		    SEEK_SET) != 0)
 	goto error_return;
       amt = sizeof ext_space;
-      if (bfd_bread (&ext_space, amt, abfd) != amt)
+      if (bfd_read (&ext_space, amt, abfd) != amt)
 	goto error_return;
 
       som_swap_space_dictionary_in (&ext_space, &space);
@@ -2157,7 +2159,7 @@ setup_sections (bfd *abfd,
 		    SEEK_SET) != 0)
 	goto error_return;
       amt = sizeof ext_subspace;
-      if (bfd_bread (&ext_subspace, amt, abfd) != amt)
+      if (bfd_read (&ext_subspace, amt, abfd) != amt)
 	goto error_return;
       /* Seek back to the start of the subspaces for loop below.  */
       if (bfd_seek (abfd,
@@ -2189,12 +2191,15 @@ setup_sections (bfd *abfd,
 
 	  /* Read in the next subspace.  */
 	  amt = sizeof ext_subspace;
-	  if (bfd_bread (&ext_subspace, amt, abfd) != amt)
+	  if (bfd_read (&ext_subspace, amt, abfd) != amt)
 	    goto error_return;
 
 	  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);
-
-  return TRUE;
+  free (space_strings);
+  free (subspace_sections);
+  return true;
 
  error_return:
-  if (space_strings != NULL)
-    free (space_strings);
-
-  if (subspace_sections != NULL)
-    free (subspace_sections);
-  return FALSE;
+  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,12 +2391,12 @@ 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)
 
   amt = sizeof (struct som_external_header);
-  if (bfd_bread (&ext_file_hdr, amt, abfd) != amt)
+  if (bfd_read (&ext_file_hdr, amt, abfd) != amt)
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -2426,7 +2427,7 @@ som_object_p (bfd *abfd)
     case EXECLIBMAGIC:
       /* Read the lst header and determine where the SOM directory begins.  */
 
-      if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+      if (bfd_seek (abfd, 0, SEEK_SET) != 0)
 	{
 	  if (bfd_get_error () != bfd_error_system_call)
 	    bfd_set_error (bfd_error_wrong_format);
@@ -2434,7 +2435,7 @@ som_object_p (bfd *abfd)
 	}
 
       amt = sizeof (struct som_external_lst_header);
-      if (bfd_bread (&ext_lst_header, amt, abfd) != amt)
+      if (bfd_read (&ext_lst_header, amt, abfd) != amt)
 	{
 	  if (bfd_get_error () != bfd_error_system_call)
 	    bfd_set_error (bfd_error_wrong_format);
@@ -2451,7 +2452,7 @@ som_object_p (bfd *abfd)
 	}
 
       amt = ENTRY_SIZE;
-      if (bfd_bread (&ext_som_entry, amt, abfd) != amt)
+      if (bfd_read (&ext_som_entry, amt, abfd) != amt)
 	{
 	  if (bfd_get_error () != bfd_error_system_call)
 	    bfd_set_error (bfd_error_wrong_format);
@@ -2469,7 +2470,7 @@ som_object_p (bfd *abfd)
 
       /* And finally, re-read the som header.  */
       amt = sizeof (struct som_external_header);
-      if (bfd_bread (&ext_file_hdr, amt, abfd) != amt)
+      if (bfd_read (&ext_file_hdr, amt, abfd) != amt)
 	{
 	  if (bfd_get_error () != bfd_error_system_call)
 	    bfd_set_error (bfd_error_wrong_format);
@@ -2504,7 +2505,7 @@ som_object_p (bfd *abfd)
       if (aux_hdr_ptr == NULL)
 	return NULL;
       amt = sizeof (struct som_external_exec_auxhdr);
-      if (bfd_bread (&ext_exec_auxhdr, amt, abfd) != amt)
+      if (bfd_read (&ext_exec_auxhdr, amt, abfd) != amt)
 	{
 	  if (bfd_get_error () != bfd_error_system_call)
 	    bfd_set_error (bfd_error_wrong_format);
@@ -2526,31 +2527,31 @@ som_object_p (bfd *abfd)
 
 /* Create a SOM object.  */
 
-static bfd_boolean
+static bool
 som_mkobject (bfd *abfd)
 {
   /* Allocate memory to hold backend information.  */
   abfd->tdata.som_data = bfd_zalloc (abfd, (bfd_size_type) sizeof (struct som_data_struct));
   if (abfd->tdata.som_data == NULL)
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 
 /* Initialize some information in the file header.  This routine makes
    not attempt at doing the right thing for a full executable; it
    is only meant to handle relocatable objects.  */
 
-static bfd_boolean
+static bool
 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);
   if (file_hdr == NULL)
-    return FALSE;
+    return false;
   obj_som_file_hdr (abfd) = file_hdr;
 
   if (abfd->flags & (EXEC_P | DYNAMIC))
@@ -2559,7 +2560,7 @@ som_prep_headers (bfd *abfd)
       amt = sizeof (struct som_exec_auxhdr);
       obj_som_exec_hdr (abfd) = bfd_zalloc (abfd, amt);
       if (obj_som_exec_hdr (abfd) == NULL)
-	return FALSE;
+	return false;
 
       if (abfd->flags & D_PAGED)
 	file_hdr->a_magic = DEMAND_MAGIC;
@@ -2601,7 +2602,7 @@ som_prep_headers (bfd *abfd)
 	  amt = sizeof (struct som_space_dictionary_record);
 	  som_section_data (section)->space_dict = bfd_zalloc (abfd, amt);
 	  if (som_section_data (section)->space_dict == NULL)
-	    return FALSE;
+	    return false;
 	  /* Set space attributes.  Note most attributes of SOM spaces
 	     are set based on the subspaces it contains.  */
 	  som_section_data (section)->space_dict->loader_fix_index = -1;
@@ -2623,7 +2624,7 @@ som_prep_headers (bfd *abfd)
 	  amt = sizeof (struct som_subspace_dictionary_record);
 	  som_section_data (section)->subspace_dict = bfd_zalloc (abfd, amt);
 	  if (som_section_data (section)->subspace_dict == NULL)
-	    return FALSE;
+	    return false;
 
 	  /* Set subspace attributes.  Basic stuff is done here, additional
 	     attributes are filled in later as more information becomes
@@ -2658,56 +2659,56 @@ som_prep_headers (bfd *abfd)
 	    som_section_data (section)->copy_data->dup_common;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if the given section is a SOM space, FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 som_is_space (asection *section)
 {
   /* If no copy data is available, then it's neither a space nor a
      subspace.  */
   if (som_section_data (section)->copy_data == NULL)
-    return FALSE;
+    return false;
 
   /* If the containing space isn't the same as the given section,
      then this isn't a space.  */
   if (som_section_data (section)->copy_data->container != section
       && (som_section_data (section)->copy_data->container->output_section
 	  != section))
-    return FALSE;
+    return false;
 
   /* OK.  Must be a space.  */
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if the given section is a SOM subspace, FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 som_is_subspace (asection *section)
 {
   /* If no copy data is available, then it's neither a space nor a
      subspace.  */
   if (som_section_data (section)->copy_data == NULL)
-    return FALSE;
+    return false;
 
   /* If the containing space is the same as the given section,
      then this isn't a subspace.  */
   if (som_section_data (section)->copy_data->container == section
       || (som_section_data (section)->copy_data->container->output_section
 	  == section))
-    return FALSE;
+    return false;
 
   /* OK.  Must be a subspace.  */
-  return TRUE;
+  return true;
 }
 
 /* Return TRUE if the given space contains the given subspace.  It
    is safe to assume space really is a space, and subspace really
    is a subspace.  */
 
-static bfd_boolean
+static bool
 som_is_container (asection *space, asection *subspace)
 {
   return (som_section_data (subspace)->copy_data->container == space)
@@ -2795,13 +2796,16 @@ compare_subspaces (const void *arg1, con
 
 /* Perform various work in preparation for emitting the fixup stream.  */
 
-static void
+static bool
 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,9 +2900,10 @@ som_prep_for_fixups (bfd *abfd, asymbol
       else
 	som_symbol_data (sorted_syms[i])->index = i;
     }
+  return true;
 }
 
-static bfd_boolean
+static bool
 som_write_fixups (bfd *abfd,
 		  unsigned long current_offset,
 		  unsigned int *total_reloc_sizep)
@@ -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;
@@ -2924,15 +2934,17 @@ som_write_fixups (bfd *abfd,
       asection *subsection;
 
       /* Find a space.  */
-      while (!som_is_space (section))
+      while (section && !som_is_space (section))
 	section = section->next;
+      if (!section)
+	break;
 
       /* Now iterate through each of its subspaces.  */
       for (subsection = abfd->sections;
 	   subsection != NULL;
 	   subsection = subsection->next)
 	{
-	  int reloc_offset;
+	  unsigned int reloc_offset;
 	  unsigned int current_rounding_mode;
 #ifndef NO_PCREL_MODES
 	  unsigned int current_call_mode;
@@ -2962,7 +2974,7 @@ som_write_fixups (bfd *abfd,
 	     for this subspace in preparation for writing out its fixup
 	     stream.  */
 	  if (bfd_seek (abfd, current_offset + total_reloc_size, SEEK_SET) != 0)
-	    return FALSE;
+	    return false;
 
 	  /* Buffer space has already been allocated.  Just perform some
 	     initialization here.  */
@@ -2983,6 +2995,31 @@ som_write_fixups (bfd *abfd,
 	      unsigned int skip;
 	      int sym_num;
 
+	      if (bfd_reloc->address < reloc_offset)
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB(%pA+%#" PRIx64 "): "
+		       "%s relocation offset out of order"),
+		     abfd, subsection, (uint64_t) bfd_reloc->address,
+		     bfd_reloc->howto->name);
+		  bfd_set_error (bfd_error_bad_value);
+		  return false;
+		}
+	      if (!bfd_reloc_offset_in_range (bfd_reloc->howto,
+					      abfd, subsection,
+					      bfd_reloc->address))
+		{
+		  _bfd_error_handler
+		    /* xgettext:c-format */
+		    (_("%pB(%pA+%#" PRIx64 "): "
+		       "%s relocation offset out of range"),
+		     abfd, subsection, (uint64_t) bfd_reloc->address,
+		     bfd_reloc->howto->name);
+		  bfd_set_error (bfd_error_bad_value);
+		  return false;
+		}
+
 	      /* Get the symbol number.  Remember it's stored in a
 		 special place for section symbols.  */
 	      if ((*bfd_reloc->sym_ptr_ptr)->flags & BSF_SECTION_SYM)
@@ -2994,14 +3031,16 @@ som_write_fixups (bfd *abfd,
 		 then dump the current buffer contents now.  Also reinitialize
 		 the relocation queue.
 
-		 No single BFD relocation could ever translate into more
-		 than 100 bytes of SOM relocations (20bytes is probably the
-		 upper limit, but leave lots of space for growth).  */
-	      if (p - tmp_space + 100 > SOM_TMP_BUFSIZE)
+		 A single BFD relocation would probably only ever
+		 translate into at most 20 bytes of SOM relocations.
+		 However with fuzzed object files and resulting silly
+		 values for "skip" below, som_reloc_skip can emit 262
+		 bytes.  Leave lots of space for growth.  */
+	      if (p - tmp_space + 512 > SOM_TMP_BUFSIZE)
 		{
 		  amt = p - tmp_space;
-		  if (bfd_bwrite ((void *) tmp_space, amt, abfd) != amt)
-		    return FALSE;
+		  if (bfd_write (tmp_space, amt, abfd) != amt)
+		    return false;
 
 		  p = tmp_space;
 		  som_initialize_reloc_queue (reloc_queue);
@@ -3013,42 +3052,8 @@ som_write_fixups (bfd *abfd,
 	      p = som_reloc_skip (abfd, skip, p,
 				  &subspace_reloc_size, reloc_queue);
 
-	      /* Update reloc_offset for the next iteration.
-
-		 Many relocations do not consume input bytes.  They
-		 are markers, or set state necessary to perform some
-		 later relocation.  */
-	      switch (bfd_reloc->howto->type)
-		{
-		case R_ENTRY:
-		case R_ALT_ENTRY:
-		case R_EXIT:
-		case R_N_MODE:
-		case R_S_MODE:
-		case R_D_MODE:
-		case R_R_MODE:
-		case R_FSEL:
-		case R_LSEL:
-		case R_RSEL:
-		case R_COMP1:
-		case R_COMP2:
-		case R_BEGIN_BRTAB:
-		case R_END_BRTAB:
-		case R_BEGIN_TRY:
-		case R_END_TRY:
-		case R_N0SEL:
-		case R_N1SEL:
-#ifndef NO_PCREL_MODES
-		case R_SHORT_PCREL_MODE:
-		case R_LONG_PCREL_MODE:
-#endif
-		  reloc_offset = bfd_reloc->address;
-		  break;
-
-		default:
-		  reloc_offset = bfd_reloc->address + 4;
-		  break;
-		}
+	      /* Update reloc_offset for the next iteration.  */
+	      reloc_offset = bfd_reloc->address + bfd_reloc->howto->size;
 
 	      /* Now the actual relocation we care about.  */
 	      switch (bfd_reloc->howto->type)
@@ -3285,8 +3290,8 @@ som_write_fixups (bfd *abfd,
 
 	  /* Scribble out the relocations.  */
 	  amt = p - tmp_space;
-	  if (bfd_bwrite ((void *) tmp_space, amt, abfd) != amt)
-	    return FALSE;
+	  if (bfd_write (tmp_space, amt, abfd) != amt)
+	    return false;
 	  p = tmp_space;
 
 	  total_reloc_size += subspace_reloc_size;
@@ -3296,126 +3301,139 @@ som_write_fixups (bfd *abfd,
       section = section->next;
     }
   *total_reloc_sizep = total_reloc_size;
-  return TRUE;
+  return true;
+}
+
+/* Write the length of STR followed by STR to P which points into
+   *BUF, a buffer of *BUFLEN size.  Track total size in *STRINGS_SIZE,
+   setting *STRX to the current offset for STR.  When STR can't fit in
+   *BUF, flush the buffer to ABFD, possibly reallocating.  Return the
+   next available location in *BUF, or NULL on error.  */
+
+static char *
+add_string (char *p, const char *str, bfd *abfd, char **buf, size_t *buflen,
+	    unsigned int *strings_size, unsigned int *strx)
+{
+  size_t length = strlen (str) + 1;
+  /* Each entry will take 4 bytes to hold the string length + the
+     string itself + null terminator + padding to a 4 byte boundary.  */
+  size_t needed = (4 + length + 3) & ~3;
+
+  /* If there is not enough room for the next entry, then dump the
+     current buffer contents now and maybe allocate a larger buffer.  */
+  if (p - *buf + needed > *buflen)
+    {
+      /* Flush buffer before refilling or reallocating.  */
+      size_t amt = p - *buf;
+      if (bfd_write (*buf, amt, abfd) != amt)
+	return NULL;
+
+      /* Reallocate if now empty buffer still too small.  */
+      if (needed > *buflen)
+	{
+	  /* Ensure a minimum growth factor to avoid O(n**2) space
+	     consumption for n strings.  The optimal minimum factor
+	     seems to be 2.  */
+	  if (*buflen * 2 < needed)
+	    *buflen = needed;
+	  else
+	    *buflen = *buflen * 2;
+	  free (*buf);
+	  *buf = bfd_malloc (*buflen);
+	  if (*buf == NULL)
+	    return NULL;
+	}
+
+      /* Reset to beginning of the (possibly new) buffer space.  */
+      p = *buf;
+    }
+
+  /* First element in a string table entry is the length of
+     the string.  This must always be 4 byte aligned.  This is
+     also an appropriate time to fill in the string index
+     field in the symbol table entry.  */
+  bfd_put_32 (abfd, length - 1, p);
+  *strings_size += 4;
+  p += 4;
+
+  *strx = *strings_size;
+
+  /* Next comes the string itself + a null terminator.  */
+  memcpy (p, str, length);
+  p += length;
+  *strings_size += length;
+
+  /* Always align up to the next word boundary.  */
+  if (length & 3)
+    {
+      length = 4 - (length & 3);
+      memset (p, 0, length);
+      *strings_size += length;
+      p += length;
+    }
+  return p;
 }
 
 /* Write out the space/subspace string table.  */
 
-static bfd_boolean
+static bool
 som_write_space_strings (bfd *abfd,
 			 unsigned long current_offset,
-			 unsigned int *string_sizep)
+			 unsigned int *strings_size)
 {
   /* Chunk of memory that we can use as buffer space, then throw
      away.  */
   size_t tmp_space_size = SOM_TMP_BUFSIZE;
   char *tmp_space = bfd_malloc (tmp_space_size);
   char *p = tmp_space;
-  unsigned int strings_size = 0;
   asection *section;
-  bfd_size_type amt;
-  bfd_size_type res;
 
   if (tmp_space == NULL)
-    return FALSE;
+    return false;
 
   /* Seek to the start of the space strings in preparation for writing
      them out.  */
-  if (bfd_seek (abfd, (file_ptr) current_offset, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, current_offset, SEEK_SET) != 0)
+    return false;
 
   /* Walk through all the spaces and subspaces (order is not important)
      building up and writing string table entries for their names.  */
+  *strings_size = 0;
   for (section = abfd->sections; section != NULL; section = section->next)
     {
-      size_t length;
+      unsigned int *strx;
 
       /* Only work with space/subspaces; avoid any other sections
 	 which might have been made (.text for example).  */
-      if (!som_is_space (section) && !som_is_subspace (section))
-	continue;
-
-      /* Get the length of the space/subspace name.  */
-      length = strlen (section->name);
-
-      /* If there is not enough room for the next entry, then dump the
-	 current buffer contents now and maybe allocate a larger
-	 buffer.  Each entry will take 4 bytes to hold the string
-	 length + the string itself + null terminator.  */
-      if (p - tmp_space + 5 + length > tmp_space_size)
-	{
-	  /* Flush buffer before refilling or reallocating.  */
-	  amt = p - tmp_space;
-	  if (bfd_bwrite ((void *) &tmp_space[0], amt, abfd) != amt)
-	    return FALSE;
-
-	  /* Reallocate if now empty buffer still too small.  */
-	  if (5 + length > tmp_space_size)
-	    {
-	      /* Ensure a minimum growth factor to avoid O(n**2) space
-		 consumption for n strings.  The optimal minimum
-		 factor seems to be 2, as no other value can guarantee
-		 wasting less than 50% space.  (Note that we cannot
-		 deallocate space allocated by `alloca' without
-		 returning from this function.)  The same technique is
-		 used a few more times below when a buffer is
-		 reallocated.  */
-	      if (2 * tmp_space_size < length + 5)
-		tmp_space_size = length + 5;
-	      else
-		tmp_space_size = 2 * tmp_space_size;
-	      tmp_space = xrealloc (tmp_space, tmp_space_size);
-	    }
-
-	  /* Reset to beginning of the (possibly new) buffer space.  */
-	  p = tmp_space;
-	}
-
-      /* First element in a string table entry is the length of the
-	 string.  Alignment issues are already handled.  */
-      bfd_put_32 (abfd, (bfd_vma) length, p);
-      p += 4;
-      strings_size += 4;
-
-      /* Record the index in the space/subspace records.  */
       if (som_is_space (section))
-	som_section_data (section)->space_dict->name = strings_size;
+	strx = &som_section_data (section)->space_dict->name;
+      else if (som_is_subspace (section))
+	strx = &som_section_data (section)->subspace_dict->name;
       else
-	som_section_data (section)->subspace_dict->name = strings_size;
-
-      /* Next comes the string itself + a null terminator.  */
-      strcpy (p, section->name);
-      p += length + 1;
-      strings_size += length + 1;
+	continue;
 
-      /* Always align up to the next word boundary.  */
-      while (strings_size % 4)
-	{
-	  bfd_put_8 (abfd, 0, p);
-	  p++;
-	  strings_size++;
-	}
+      p = add_string (p, section->name, abfd, &tmp_space, &tmp_space_size,
+		      strings_size, strx);
+      if (p == NULL)
+	return false;
     }
 
   /* Done with the space/subspace strings.  Write out any information
      contained in a partial block.  */
-  amt = p - tmp_space;
-  res = bfd_bwrite ((void *) &tmp_space[0], amt, abfd);
+  size_t amt = p - tmp_space;
+  bool ok = amt ? bfd_write (tmp_space, amt, abfd) == amt : true;
   free (tmp_space);
-  if (res != amt)
-    return FALSE;
-  *string_sizep = strings_size;
-  return TRUE;
+  return ok;
 }
 
 /* Write out the symbol string table.  */
 
-static bfd_boolean
+static bool
 som_write_symbol_strings (bfd *abfd,
 			  unsigned long current_offset,
 			  asymbol **syms,
 			  unsigned int num_syms,
-			  unsigned int *string_sizep,
+			  unsigned int *strings_size,
 			  struct som_compilation_unit *compilation_unit)
 {
   unsigned int i;
@@ -3424,12 +3442,9 @@ som_write_symbol_strings (bfd *abfd,
   size_t tmp_space_size = SOM_TMP_BUFSIZE;
   char *tmp_space = bfd_malloc (tmp_space_size);
   char *p = tmp_space;
-  unsigned int strings_size = 0;
-  bfd_size_type amt;
-  bfd_size_type res;
 
   if (tmp_space == NULL)
-    return FALSE;
+    return false;
 
   /* This gets a bit gruesome because of the compilation unit.  The
      strings within the compilation unit are part of the symbol
@@ -3440,15 +3455,15 @@ som_write_symbol_strings (bfd *abfd,
 
   /* Seek to the start of the space strings in preparation for writing
      them out.  */
-  if (bfd_seek (abfd, (file_ptr) current_offset, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, current_offset, SEEK_SET) != 0)
+    return false;
 
+  *strings_size = 0;
   if (compilation_unit)
     {
       for (i = 0; i < 4; i++)
 	{
 	  struct som_name_pt *name;
-	  size_t length;
 
 	  switch (i)
 	    {
@@ -3468,128 +3483,35 @@ som_write_symbol_strings (bfd *abfd,
 	      abort ();
 	    }
 
-	  length = strlen (name->name);
-
-	  /* If there is not enough room for the next entry, then dump
-	     the current buffer contents now and maybe allocate a
-	     larger buffer.  */
-	  if (p - tmp_space + 5 + length > tmp_space_size)
-	    {
-	      /* Flush buffer before refilling or reallocating.  */
-	      amt = p - tmp_space;
-	      if (bfd_bwrite ((void *) &tmp_space[0], amt, abfd) != amt)
-		return FALSE;
-
-	      /* Reallocate if now empty buffer still too small.  */
-	      if (5 + length > tmp_space_size)
-		{
-		  /* See alloca above for discussion of new size.  */
-		  if (2 * tmp_space_size < 5 + length)
-		    tmp_space_size = 5 + length;
-		  else
-		    tmp_space_size = 2 * tmp_space_size;
-		  tmp_space = xrealloc (tmp_space, tmp_space_size);
-		}
-
-	      /* Reset to beginning of the (possibly new) buffer
-		 space.  */
-	      p = tmp_space;
-	    }
-
-	  /* First element in a string table entry is the length of
-	     the string.  This must always be 4 byte aligned.  This is
-	     also an appropriate time to fill in the string index
-	     field in the symbol table entry.  */
-	  bfd_put_32 (abfd, (bfd_vma) length, p);
-	  strings_size += 4;
-	  p += 4;
-
-	  /* Next comes the string itself + a null terminator.  */
-	  strcpy (p, name->name);
-
-	  name->strx = strings_size;
+	  p = add_string (p, name->name, abfd, &tmp_space, &tmp_space_size,
+			  strings_size, &name->strx);
 
-	  p += length + 1;
-	  strings_size += length + 1;
-
-	  /* Always align up to the next word boundary.  */
-	  while (strings_size % 4)
-	    {
-	      bfd_put_8 (abfd, 0, p);
-	      strings_size++;
-	      p++;
-	    }
+	  if (p == NULL)
+	    return false;
 	}
     }
 
   for (i = 0; i < num_syms; i++)
     {
-      size_t length = strlen (syms[i]->name);
-
-      /* If there is not enough room for the next entry, then dump the
-	 current buffer contents now and maybe allocate a larger buffer.  */
-     if (p - tmp_space + 5 + length > tmp_space_size)
-	{
-	  /* Flush buffer before refilling or reallocating.  */
-	  amt = p - tmp_space;
-	  if (bfd_bwrite ((void *) &tmp_space[0], amt, abfd) != amt)
-	    return FALSE;
-
-	  /* Reallocate if now empty buffer still too small.  */
-	  if (5 + length > tmp_space_size)
-	    {
-	      /* See alloca above for discussion of new size.  */
-	      if (2 * tmp_space_size < 5 + length)
-		tmp_space_size = 5 + length;
-	      else
-		tmp_space_size = 2 * tmp_space_size;
-	      tmp_space = xrealloc (tmp_space, tmp_space_size);
-	    }
-
-	  /* Reset to beginning of the (possibly new) buffer space.  */
-	  p = tmp_space;
-	}
-
-      /* First element in a string table entry is the length of the
-	 string.  This must always be 4 byte aligned.  This is also
-	 an appropriate time to fill in the string index field in the
-	 symbol table entry.  */
-      bfd_put_32 (abfd, (bfd_vma) length, p);
-      strings_size += 4;
-      p += 4;
-
-      /* Next comes the string itself + a null terminator.  */
-      strcpy (p, syms[i]->name);
-
-      som_symbol_data (syms[i])->stringtab_offset = strings_size;
-      p += length + 1;
-      strings_size += length + 1;
-
-      /* Always align up to the next word boundary.  */
-      while (strings_size % 4)
-	{
-	  bfd_put_8 (abfd, 0, p);
-	  strings_size++;
-	  p++;
-	}
+      p = add_string (p, syms[i]->name, abfd, &tmp_space, &tmp_space_size,
+		      strings_size,
+		      &som_symbol_data (syms[i])->stringtab_offset);
+      if (p == NULL)
+	return false;
     }
 
   /* Scribble out any partial block.  */
-  amt = p - tmp_space;
-  res = bfd_bwrite ((void *) &tmp_space[0], amt, abfd);
+  size_t amt = p - tmp_space;
+  bool ok = amt ? bfd_write (tmp_space, amt, abfd) == amt : true;
   free (tmp_space);
-  if (res != amt)
-    return FALSE;
-
-  *string_sizep = strings_size;
-  return TRUE;
+  return ok;
 }
 
 /* Compute variable information to be placed in the SOM headers,
    space/subspace dictionaries, relocation streams, etc.  Begin
    writing parts of the object file.  */
 
-static bfd_boolean
+static bool
 som_begin_writing (bfd *abfd)
 {
   unsigned long current_offset = 0;
@@ -3634,8 +3556,8 @@ som_begin_writing (bfd *abfd)
       struct som_external_string_auxhdr ext_string_auxhdr;
       bfd_size_type len;
 
-      if (bfd_seek (abfd, (file_ptr) current_offset, SEEK_SET) != 0)
-	return FALSE;
+      if (bfd_seek (abfd, current_offset, SEEK_SET) != 0)
+	return false;
 
       /* Write the aux_id structure and the string length.  */
       len = sizeof (struct som_external_string_auxhdr);
@@ -3643,16 +3565,15 @@ som_begin_writing (bfd *abfd)
       current_offset += len;
       som_swap_string_auxhdr_out
 	(obj_som_version_hdr (abfd), &ext_string_auxhdr);
-      if (bfd_bwrite (&ext_string_auxhdr, len, abfd) != len)
-	return FALSE;
+      if (bfd_write (&ext_string_auxhdr, len, abfd) != len)
+	return false;
 
       /* Write the version string.  */
       len = obj_som_version_hdr (abfd)->header_id.length - 4;
       obj_som_file_hdr (abfd)->aux_header_size += len;
       current_offset += len;
-      if (bfd_bwrite ((void *) obj_som_version_hdr (abfd)->string, len, abfd)
-	  != len)
-	return FALSE;
+      if (bfd_write (obj_som_version_hdr (abfd)->string, len, abfd) != len)
+	return false;
     }
 
   if (obj_som_copyright_hdr (abfd) != NULL)
@@ -3660,8 +3581,8 @@ som_begin_writing (bfd *abfd)
       struct som_external_string_auxhdr ext_string_auxhdr;
       bfd_size_type len;
 
-      if (bfd_seek (abfd, (file_ptr) current_offset, SEEK_SET) != 0)
-	return FALSE;
+      if (bfd_seek (abfd, current_offset, SEEK_SET) != 0)
+	return false;
 
       /* Write the aux_id structure and the string length.  */
       len = sizeof (struct som_external_string_auxhdr);
@@ -3669,16 +3590,15 @@ som_begin_writing (bfd *abfd)
       current_offset += len;
       som_swap_string_auxhdr_out
 	(obj_som_copyright_hdr (abfd), &ext_string_auxhdr);
-      if (bfd_bwrite (&ext_string_auxhdr, len, abfd) != len)
-	return FALSE;
+      if (bfd_write (&ext_string_auxhdr, len, abfd) != len)
+	return false;
 
       /* Write the copyright string.  */
       len = obj_som_copyright_hdr (abfd)->header_id.length - 4;
       obj_som_file_hdr (abfd)->aux_header_size += len;
       current_offset += len;
-      if (bfd_bwrite ((void *) obj_som_copyright_hdr (abfd)->string, len, abfd)
-	  != len)
-	return FALSE;
+      if (bfd_write (obj_som_copyright_hdr (abfd)->string, len, abfd) != len)
+	return false;
     }
 
   /* Next comes the initialization pointers; we have no initialization
@@ -3728,7 +3648,7 @@ som_begin_writing (bfd *abfd)
 
   /* Scribble out the space strings.  */
   if (! som_write_space_strings (abfd, current_offset, &strings_size))
-    return FALSE;
+    return false;
 
   /* Record total string table size in the header and update the
      current offset.  */
@@ -3924,10 +3844,10 @@ som_begin_writing (bfd *abfd)
      zeros are filled in.  Ugh.  */
   if (abfd->flags & (EXEC_P | DYNAMIC))
     current_offset = SOM_ALIGN (current_offset, PA_PAGESIZE);
-  if (bfd_seek (abfd, (file_ptr) current_offset - 1, SEEK_SET) != 0)
-    return FALSE;
-  if (bfd_bwrite ((void *) "", (bfd_size_type) 1, abfd) != 1)
-    return FALSE;
+  if (bfd_seek (abfd, current_offset - 1, SEEK_SET) != 0)
+    return false;
+  if (bfd_write ("", 1, abfd) != 1)
+    return false;
 
   obj_som_file_hdr (abfd)->unloadable_sp_size
     = current_offset - obj_som_file_hdr (abfd)->unloadable_sp_location;
@@ -3939,12 +3859,12 @@ som_begin_writing (bfd *abfd)
   /* Done.  Store the total size of the SOM so far.  */
   obj_som_file_hdr (abfd)->som_length = current_offset;
 
-  return TRUE;
+  return true;
 }
 
 /* Finally, scribble out the various headers to the disk.  */
 
-static bfd_boolean
+static bool
 som_finish_writing (bfd *abfd)
 {
   int num_spaces = som_count_spaces (abfd);
@@ -3955,7 +3875,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
@@ -4001,7 +3921,7 @@ som_finish_writing (bfd *abfd)
   if (! som_write_symbol_strings (abfd, current_offset, syms,
 				  num_syms, &strings_size,
 				  obj_som_compilation_unit (abfd)))
-    return FALSE;
+    return false;
 
   /* Record total string table size in header and update the
      current offset.  */
@@ -4009,9 +3929,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.  */
@@ -4022,7 +3943,7 @@ som_finish_writing (bfd *abfd)
   /* Write the fixups and update fields in subspace headers which
      relate to the fixup stream.  */
   if (! som_write_fixups (abfd, current_offset, &total_reloc_size))
-    return FALSE;
+    return false;
 
   /* Record the total size of the fixup stream in the file header.  */
   obj_som_file_hdr (abfd)->fixup_request_total = total_reloc_size;
@@ -4033,7 +3954,7 @@ som_finish_writing (bfd *abfd)
   /* Now that the symbol table information is complete, build and
      write the symbol table.  */
   if (! som_build_and_write_symbol_table (abfd))
-    return FALSE;
+    return false;
 
   /* Subspaces are written first so that we can set up information
      about them in their containing spaces as the subspace is written.  */
@@ -4041,7 +3962,7 @@ som_finish_writing (bfd *abfd)
   /* Seek to the start of the subspace dictionary records.  */
   location = obj_som_file_hdr (abfd)->subspace_location;
   if (bfd_seek (abfd, location, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   section = abfd->sections;
   /* Now for each loadable space write out records for its subspaces.  */
@@ -4092,8 +4013,8 @@ som_finish_writing (bfd *abfd)
 	  som_swap_subspace_dictionary_record_out
 	    (som_section_data (subsection)->subspace_dict, &ext_subspace_dict);
 	  amt = sizeof (struct som_subspace_dictionary_record);
-	  if (bfd_bwrite (&ext_subspace_dict, amt, abfd) != amt)
-	    return FALSE;
+	  if (bfd_write (&ext_subspace_dict, amt, abfd) != amt)
+	    return false;
 	}
       /* Goto the next section.  */
       section = section->next;
@@ -4150,8 +4071,8 @@ som_finish_writing (bfd *abfd)
 	  som_swap_subspace_dictionary_record_out
 	    (som_section_data (subsection)->subspace_dict, &ext_subspace_dict);
 	  amt = sizeof (struct som_subspace_dictionary_record);
-	  if (bfd_bwrite (&ext_subspace_dict, amt, abfd) != amt)
-	    return FALSE;
+	  if (bfd_write (&ext_subspace_dict, amt, abfd) != amt)
+	    return false;
 	}
       /* Goto the next section.  */
       section = section->next;
@@ -4164,7 +4085,7 @@ som_finish_writing (bfd *abfd)
      dictionary records.  */
   location = obj_som_file_hdr (abfd)->space_location;
   if (bfd_seek (abfd, location, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   section = abfd->sections;
   for (i = 0; i < num_spaces; i++)
@@ -4179,8 +4100,8 @@ som_finish_writing (bfd *abfd)
       som_swap_space_dictionary_out (som_section_data (section)->space_dict,
 				     &ext_space_dict);
       amt = sizeof (struct som_external_space_dictionary_record);
-      if (bfd_bwrite (&ext_space_dict, amt, abfd) != amt)
-	return FALSE;
+      if (bfd_write (&ext_space_dict, amt, abfd) != amt)
+	return false;
 
       /* Goto the next section.  */
       section = section->next;
@@ -4193,19 +4114,19 @@ som_finish_writing (bfd *abfd)
 
       location = obj_som_file_hdr (abfd)->compiler_location;
       if (bfd_seek (abfd, location, SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       som_swap_compilation_unit_out
 	(obj_som_compilation_unit (abfd), &ext_comp_unit);
 
       amt = sizeof (struct som_external_compilation_unit);
-      if (bfd_bwrite (&ext_comp_unit, amt, abfd) != amt)
-	return FALSE;
+      if (bfd_write (&ext_comp_unit, amt, abfd) != amt)
+	return false;
     }
 
   /* Setting of the system_id has to happen very late now that copying of
      BFD private data happens *after* section contents are set.  */
-  if (abfd->flags & (EXEC_P | DYNAMIC))
+  if ((abfd->flags & (EXEC_P | DYNAMIC)) && obj_som_exec_data (abfd))
     obj_som_file_hdr (abfd)->system_id = obj_som_exec_data (abfd)->system_id;
   else if (bfd_get_mach (abfd) == pa20)
     obj_som_file_hdr (abfd)->system_id = CPU_PA_RISC2_0;
@@ -4221,11 +4142,11 @@ som_finish_writing (bfd *abfd)
 
   /* Only thing left to do is write out the file header.  It is always
      at location zero.  Seek there and write it.  */
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    return false;
   amt = sizeof (struct som_external_header);
-  if (bfd_bwrite (&ext_header, amt, abfd) != amt)
-    return FALSE;
+  if (bfd_write (&ext_header, amt, abfd) != amt)
+    return false;
 
   /* Now write the exec header.  */
   if (abfd->flags & (EXEC_P | DYNAMIC))
@@ -4236,7 +4157,8 @@ som_finish_writing (bfd *abfd)
 
       exec_header = obj_som_exec_hdr (abfd);
       exec_header->exec_entry = bfd_get_start_address (abfd);
-      exec_header->exec_flags = obj_som_exec_data (abfd)->exec_flags;
+      if (obj_som_exec_data (abfd))
+	exec_header->exec_flags = obj_som_exec_data (abfd)->exec_flags;
 
       /* Oh joys.  Ram some of the BSS data into the DATA section
 	 to be compatible with how the hp linker makes objects
@@ -4255,32 +4177,33 @@ som_finish_writing (bfd *abfd)
 	  || exec_header->exec_dfile + exec_header->exec_dsize > som_length)
 	{
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       som_swap_exec_auxhdr_out (exec_header, &ext_exec_header);
 
       if (bfd_seek (abfd, obj_som_file_hdr (abfd)->aux_header_location,
 		    SEEK_SET) != 0)
-	return FALSE;
+	return false;
 
       amt = sizeof (ext_exec_header);
-      if (bfd_bwrite (&ext_exec_header, amt, abfd) != amt)
-	return FALSE;
+      if (bfd_write (&ext_exec_header, amt, abfd) != amt)
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* 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);
 
@@ -4401,9 +4324,9 @@ som_bfd_derive_misc_symbol_info (bfd *ab
 
   /* The secondary_def field is for "weak" symbols.  */
   if (sym->flags & BSF_WEAK)
-    info->secondary_def = TRUE;
+    info->secondary_def = true;
   else
-    info->secondary_def = FALSE;
+    info->secondary_def = false;
 
   /* The is_comdat, is_common and dup_common fields provide various
      flavors of common.
@@ -4447,7 +4370,7 @@ som_bfd_derive_misc_symbol_info (bfd *ab
 /* Build and write, in one big chunk, the entire symbol table for
    this BFD.  */
 
-static bfd_boolean
+static bool
 som_build_and_write_symbol_table (bfd *abfd)
 {
   unsigned int num_syms = bfd_get_symcount (abfd);
@@ -4456,13 +4379,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,23 +4429,24 @@ 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;
 
-  if (bfd_bwrite ((void *) som_symtab, symtab_size, abfd) != symtab_size)
+  symtab_size = num_syms;
+  symtab_size *= sizeof (struct som_external_symbol_dictionary_record);
+  if (bfd_write (som_symtab, symtab_size, abfd) != symtab_size)
     goto error_return;
 
-  if (som_symtab != NULL)
-    free (som_symtab);
-  return TRUE;
+  free (som_symtab);
+  return true;
+
  error_return:
-  if (som_symtab != NULL)
-    free (som_symtab);
-  return FALSE;
+  free (som_symtab);
+  return false;
 }
 
 /* Write an object in SOM format.  */
 
-static bfd_boolean
+static bool
 som_write_object_contents (bfd *abfd)
 {
   if (! abfd->output_has_begun)
@@ -4524,7 +4454,7 @@ som_write_object_contents (bfd *abfd)
       /* Set up fixed parts of the file, space, and subspace headers.
 	 Notify the world that output has begun.  */
       som_prep_headers (abfd);
-      abfd->output_has_begun = TRUE;
+      abfd->output_has_begun = true;
       /* Start writing the object file.  This include all the string
 	 tables, fixup streams, and other portions of the object file.  */
       som_begin_writing (abfd);
@@ -4535,7 +4465,7 @@ som_write_object_contents (bfd *abfd)
 
 /* Read and save the string table associated with the given BFD.  */
 
-static bfd_boolean
+static bool
 som_slurp_string_table (bfd *abfd)
 {
   char *stringtab;
@@ -4543,7 +4473,7 @@ som_slurp_string_table (bfd *abfd)
 
   /* Use the saved version if its available.  */
   if (obj_som_stringtab (abfd) != NULL)
-    return TRUE;
+    return true;
 
   /* I don't think this can currently happen, and I'm not sure it should
      really be an error, but it's better than getting unpredictable results
@@ -4551,24 +4481,22 @@ som_slurp_string_table (bfd *abfd)
   if (obj_som_stringtab_size (abfd) == 0)
     {
       bfd_set_error (bfd_error_no_symbols);
-      return FALSE;
+      return false;
     }
 
   /* Allocate and read in the string table.  */
+  if (bfd_seek (abfd, obj_som_str_filepos (abfd), SEEK_SET) != 0)
+    return false;
   amt = obj_som_stringtab_size (abfd);
-  stringtab = bfd_zmalloc (amt);
+  stringtab = (char *) _bfd_malloc_and_read (abfd, amt + 1, 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)
-    return FALSE;
+    return false;
+  /* Make sure that the strings are zero-terminated.  */
+  stringtab[amt] = 0;
 
   /* Save our results and return success.  */
   obj_som_stringtab (abfd) = stringtab;
-  return TRUE;
+  return true;
 }
 
 /* Return the amount of data (in bytes) required to hold the symbol
@@ -4632,12 +4560,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 +4580,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.  */
@@ -4678,6 +4611,7 @@ som_slurp_symbol_table (bfd *abfd)
 	(flags >> SOM_SYMBOL_TYPE_SH) & SOM_SYMBOL_TYPE_MASK;
       unsigned int symbol_scope =
 	(flags >> SOM_SYMBOL_SCOPE_SH) & SOM_SYMBOL_SCOPE_MASK;
+      bfd_vma offset;
 
       /* I don't think we care about these.  */
       if (symbol_type == ST_SYM_EXT || symbol_type == ST_ARG_EXT)
@@ -4709,9 +4643,16 @@ som_slurp_symbol_table (bfd *abfd)
 
       /* Some reasonable defaults.  */
       sym->symbol.the_bfd = abfd;
-      sym->symbol.name = bfd_getb32 (bufp->name) + stringtab;
+      offset = bfd_getb32 (bufp->name);
+      if (offset < obj_som_stringtab_size (abfd))
+	sym->symbol.name = offset + stringtab;
+      else
+	{
+	  bfd_set_error (bfd_error_bad_value);
+	  goto error_return;
+	}
       sym->symbol.value = bfd_getb32 (bufp->symbol_value);
-      sym->symbol.section = 0;
+      sym->symbol.section = NULL;
       sym->symbol.flags = 0;
 
       switch (symbol_type)
@@ -4771,26 +4712,28 @@ som_slurp_symbol_table (bfd *abfd)
 	  sym->symbol.section = bfd_section_from_som_symbol (abfd, bufp);
 	  sym->symbol.value -= sym->symbol.section->vma;
 	  break;
+
+	default:
+	  sym->symbol.section = bfd_und_section_ptr;
+	  break;
 	}
 
       /* Check for a weak symbol.  */
       if (flags & SOM_SYMBOL_SECONDARY_DEF)
 	sym->symbol.flags |= BSF_WEAK;
-
       /* Mark section symbols and symbols used by the debugger.
 	 Note $START$ is a magic code symbol, NOT a section symbol.  */
       if (sym->symbol.name[0] == '$'
 	  && sym->symbol.name[strlen (sym->symbol.name) - 1] == '$'
 	  && !strcmp (sym->symbol.name, sym->symbol.section->name))
 	sym->symbol.flags |= BSF_SECTION_SYM;
-      else if (CONST_STRNEQ (sym->symbol.name, "L$0\002"))
+      else if (startswith (sym->symbol.name, "L$0\002"))
 	{
 	  sym->symbol.flags |= BSF_SECTION_SYM;
 	  sym->symbol.name = sym->symbol.section->name;
 	}
-      else if (CONST_STRNEQ (sym->symbol.name, "L$0\001"))
+      else if (startswith (sym->symbol.name, "L$0\001"))
 	sym->symbol.flags |= BSF_DEBUGGING;
-
       /* Note increment at bottom of loop, since we skip some symbols
 	 we can not include it as part of the for statement.  */
       sym++;
@@ -4803,14 +4746,13 @@ som_slurp_symbol_table (bfd *abfd)
   /* Save our results and return success.  */
   obj_som_symtab (abfd) = symbase;
  successful_return:
-  if (buf != NULL)
-    free (buf);
-  return (TRUE);
+  free (buf);
+  return true;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
-  return FALSE;
+  free (symbase);
+  free (buf);
+  return false;
 }
 
 /* Canonicalize a SOM symbol table.  Return the number of entries
@@ -4841,7 +4783,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)
@@ -4867,9 +4809,8 @@ som_print_symbol (bfd *abfd,
       fprintf (file, "%s", symbol->name);
       break;
     case bfd_print_symbol_more:
-      fprintf (file, "som ");
-      fprintf_vma (file, symbol->value);
-      fprintf (file, " %lx", (long) symbol->flags);
+      fprintf (file, "som %08" PRIx64 " %x",
+	       (uint64_t) symbol->value, symbol->flags);
       break;
     case bfd_print_symbol_all:
       {
@@ -4883,7 +4824,7 @@ som_print_symbol (bfd *abfd,
     }
 }
 
-static bfd_boolean
+static bool
 som_bfd_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 			     const char *name)
 {
@@ -4909,15 +4850,12 @@ som_set_reloc_info (unsigned char *fixup
 		    arelent *internal_relocs,
 		    asection *section,
 		    asymbol **symbols,
-		    bfd_boolean just_count)
+		    unsigned int symcount,
+		    bool just_count)
 {
-  unsigned int op, varname, deallocate_contents = 0;
+  unsigned int deallocate_contents = 0;
   unsigned char *end_fixups = &fixup[end];
-  const struct fixup_format *fp;
-  const char *cp;
-  unsigned char *save_fixup;
-  int variables[26], stack[20], c, v, count, prev_fixup, *sp, saved_unwind_bits;
-  const int *subop;
+  int variables[26], stack[20], count, prev_fixup, *sp, saved_unwind_bits;
   arelent *rptr = internal_relocs;
   unsigned int offset = 0;
 
@@ -4936,10 +4874,14 @@ som_set_reloc_info (unsigned char *fixup
 
   while (fixup < end_fixups)
     {
+      const char *cp;
+      unsigned int op;
+      const struct fixup_format *fp;
+
       /* Save pointer to the start of this fixup.  We'll use
 	 it later to determine if it is necessary to put this fixup
 	 on the queue.  */
-      save_fixup = fixup;
+      unsigned char *save_fixup = fixup;
 
       /* Get the fixup code and its associated format.  */
       op = *fixup++;
@@ -4948,6 +4890,11 @@ som_set_reloc_info (unsigned char *fixup
       /* Handle a request for a previous fixup.  */
       if (*fp->format == 'P')
 	{
+	  if (!reloc_queue[fp->D].reloc)
+	    /* The back-reference doesn't exist.  This is a broken
+	       object file, likely fuzzed.  Just ignore the fixup.  */
+	    continue;
+
 	  /* Get pointer to the beginning of the prev fixup, move
 	     the repeated fixup to the head of the queue.  */
 	  fixup = reloc_queue[fp->D].reloc;
@@ -4967,7 +4914,7 @@ som_set_reloc_info (unsigned char *fixup
 	  rptr->address = offset;
 	  rptr->howto = &som_hppa_howto_table[op];
 	  rptr->addend = 0;
-	  rptr->sym_ptr_ptr = bfd_abs_section_ptr->symbol_ptr_ptr;
+	  rptr->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	}
 
       /* Set default input length to 0.  Get the opcode class index
@@ -4985,11 +4932,15 @@ som_set_reloc_info (unsigned char *fixup
       while (*cp)
 	{
 	  /* The variable this pass is going to compute a value for.  */
-	  varname = *cp++;
+	  unsigned int varname = *cp++;
+	  const int *subop;
+	  int c;
 
 	  /* Start processing RHS.  Continue until a NULL or '=' is found.  */
 	  do
 	    {
+	      unsigned v;
+
 	      c = *cp++;
 
 	      /* If this is a variable, push it on the stack.  */
@@ -5002,7 +4953,7 @@ som_set_reloc_info (unsigned char *fixup
 	      else if (ISLOWER (c))
 		{
 		  int bits = (c - 'a') * 8;
-		  for (v = 0; c > 'a'; --c)
+		  for (v = 0; c > 'a' && fixup < end_fixups; --c)
 		    v = (v << 8) | *fixup++;
 		  if (varname == 'V')
 		    v = sign_extend (v, bits);
@@ -5063,7 +5014,7 @@ som_set_reloc_info (unsigned char *fixup
 	    /* A symbol to use in the relocation.  Make a note
 	       of this if we are not just counting.  */
 	    case 'S':
-	      if (! just_count)
+	      if (!just_count && symbols != NULL && (unsigned int) c < symcount)
 		rptr->sym_ptr_ptr = &symbols[c];
 	      break;
 	    /* Argument relocation bits for a function call.  */
@@ -5195,27 +5146,30 @@ som_set_reloc_info (unsigned char *fixup
 		     section contents.  */
 		  rptr->addend = var ('V');
 
-		  if (rptr->addend == 0 && !section->contents)
+		  if (rptr->addend == 0
+		      && (section->flags & SEC_HAS_CONTENTS) != 0)
 		    {
-		      /* Got to read the damn contents first.  We don't
-			 bother saving the contents (yet).  Add it one
-			 day if the need arises.  */
-		      bfd_byte *contents;
-		      if (!bfd_malloc_and_get_section (section->owner, section,
-						       &contents))
+		      if (!section->contents)
 			{
-			  if (contents != NULL)
-			    free (contents);
-			  return (unsigned) -1;
+			  /* Got to read the damn contents first.  We don't
+			     bother saving the contents (yet).  Add it one
+			     day if the need arises.  */
+			  bfd_byte *contents;
+			  if (!bfd_malloc_and_get_section (section->owner,
+							   section, &contents))
+			    {
+			      free (contents);
+			      return (unsigned) -1;
+			    }
+			  section->contents = contents;
+			  deallocate_contents = 1;
 			}
-		      section->contents = contents;
-		      deallocate_contents = 1;
+		      if (offset - var ('L') <= section->size
+			  && section->size - (offset - var ('L')) >= 4)
+			rptr->addend = bfd_get_32 (section->owner,
+						   (section->contents
+						    + offset - var ('L')));
 		    }
-		  else if (rptr->addend == 0)
-		    rptr->addend = bfd_get_32 (section->owner,
-					       (section->contents
-						+ offset - var ('L')));
-
 		}
 	      else
 		rptr->addend = var ('V');
@@ -5229,7 +5183,10 @@ som_set_reloc_info (unsigned char *fixup
 	}
     }
   if (deallocate_contents)
-    free (section->contents);
+    {
+      free (section->contents);
+      section->contents = NULL;
+    }
 
   return count;
 
@@ -5245,69 +5202,69 @@ som_set_reloc_info (unsigned char *fixup
    set to TRUE to indicate it only needs a count of the number
    of actual relocations.  */
 
-static bfd_boolean
+static bool
 som_slurp_reloc_table (bfd *abfd,
 		       asection *section,
 		       asymbol **symbols,
-		       bfd_boolean just_count)
+		       bool just_count)
 {
   unsigned char *external_relocs;
   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.  */
   if (section->reloc_count == 0)
-    return TRUE;
+    return true;
 
   /* If reloc_count is -1, then the relocation stream has not been
      parsed.  We must do so now to know how many relocations exist.  */
   if (section->reloc_count == (unsigned) -1)
     {
+      /* Read in the external forms.  */
+      if (bfd_seek (abfd, obj_som_reloc_filepos (abfd) + section->rel_filepos,
+		    SEEK_SET) != 0)
+	return false;
       amt = fixup_stream_size;
-      external_relocs = bfd_malloc (amt);
+      external_relocs = _bfd_malloc_and_read (abfd, amt, 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)
-	return FALSE;
-      if (bfd_bread (external_relocs, amt, abfd) != amt)
-	return FALSE;
+	return false;
 
       /* Let callers know how many relocations found.
 	 also save the relocation stream as we will
 	 need it again.  */
       section->reloc_count = som_set_reloc_info (external_relocs,
 						 fixup_stream_size,
-						 NULL, NULL, NULL, TRUE);
+						 NULL, NULL, NULL, 0, true);
 
       som_section_data (section)->reloc_stream = external_relocs;
     }
 
   /* If the caller only wanted a count, then return now.  */
   if (just_count)
-    return TRUE;
+    return true;
 
   num_relocs = section->reloc_count;
   external_relocs = som_section_data (section)->reloc_stream;
   /* Return saved information about the relocations if it is available.  */
   if (section->relocation != NULL)
-    return TRUE;
+    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;
+    return false;
 
   /* Process and internalize the relocations.  */
   som_set_reloc_info (external_relocs, fixup_stream_size,
-		      internal_relocs, section, symbols, FALSE);
+		      internal_relocs, section, symbols,
+		      bfd_get_symcount (abfd), false);
 
   /* We're done with the external relocations.  Free them.  */
   free (external_relocs);
@@ -5315,7 +5272,7 @@ som_slurp_reloc_table (bfd *abfd,
 
   /* Save our results and return success.  */
   section->relocation = internal_relocs;
-  return TRUE;
+  return true;
 }
 
 /* Return the number of bytes required to store the relocation
@@ -5328,7 +5285,7 @@ som_get_reloc_upper_bound (bfd *abfd, se
      and parse it to determine how many relocations exist.  */
   if (asect->flags & SEC_RELOC)
     {
-      if (! som_slurp_reloc_table (abfd, asect, NULL, TRUE))
+      if (! som_slurp_reloc_table (abfd, asect, NULL, true))
 	return -1;
       return (asect->reloc_count + 1) * sizeof (arelent *);
     }
@@ -5351,7 +5308,7 @@ som_canonicalize_reloc (bfd *abfd,
   arelent *tblptr;
   int count;
 
-  if (! som_slurp_reloc_table (abfd, section, symbols, FALSE))
+  if (! som_slurp_reloc_table (abfd, section, symbols, false))
     return -1;
 
   count = section->reloc_count;
@@ -5368,17 +5325,15 @@ extern const bfd_target hppa_som_vec;
 
 /* A hook to set up object file dependent section information.  */
 
-static bfd_boolean
+static bool
 som_new_section_hook (bfd *abfd, asection *newsect)
 {
+  size_t amt = sizeof (struct som_section_data_struct);
+
+  newsect->used_by_bfd = bfd_zalloc (abfd, amt);
   if (!newsect->used_by_bfd)
-    {
-      bfd_size_type amt = sizeof (struct som_section_data_struct);
+    return false;
 
-      newsect->used_by_bfd = bfd_zalloc (abfd, amt);
-      if (!newsect->used_by_bfd)
-	return FALSE;
-    }
   newsect->alignment_power = 3;
 
   /* We allow more than three sections internally.  */
@@ -5388,7 +5343,7 @@ som_new_section_hook (bfd *abfd, asectio
 /* Copy any private info we understand from the input symbol
    to the output symbol.  */
 
-static bfd_boolean
+static bool
 som_bfd_copy_private_symbol_data (bfd *ibfd,
 				  asymbol *isymbol,
 				  bfd *obfd,
@@ -5400,37 +5355,37 @@ som_bfd_copy_private_symbol_data (bfd *i
   /* One day we may try to grok other private data.  */
   if (ibfd->xvec->flavour != bfd_target_som_flavour
       || obfd->xvec->flavour != bfd_target_som_flavour)
-    return FALSE;
+    return false;
 
   /* The only private information we need to copy is the argument relocation
      bits.  */
   output_symbol->tc_data.ap.hppa_arg_reloc =
     input_symbol->tc_data.ap.hppa_arg_reloc;
 
-  return TRUE;
+  return true;
 }
 
 /* Copy any private info we understand from the input section
    to the output section.  */
 
-static bfd_boolean
+static bool
 som_bfd_copy_private_section_data (bfd *ibfd,
 				   asection *isection,
 				   bfd *obfd,
-				   asection *osection)
+				   asection *osection,
+				   struct bfd_link_info *link_info)
 {
-  bfd_size_type amt;
-
   /* One day we may try to grok other private data.  */
-  if (ibfd->xvec->flavour != bfd_target_som_flavour
+  if (link_info != NULL
+      || ibfd->xvec->flavour != bfd_target_som_flavour
       || obfd->xvec->flavour != bfd_target_som_flavour
       || (!som_is_space (isection) && !som_is_subspace (isection)))
-    return TRUE;
+    return true;
 
-  amt = sizeof (struct som_copyable_section_data_struct);
+  size_t amt = sizeof (struct som_copyable_section_data_struct);
   som_section_data (osection)->copy_data = bfd_zalloc (obfd, amt);
   if (som_section_data (osection)->copy_data == NULL)
-    return FALSE;
+    return false;
 
   memcpy (som_section_data (osection)->copy_data,
 	  som_section_data (isection)->copy_data,
@@ -5438,38 +5393,49 @@ 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;
+  return true;
 }
 
 /* Copy any private info we understand from the input bfd
    to the output bfd.  */
 
-static bfd_boolean
+static bool
 som_bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd)
 {
   /* One day we may try to grok other private data.  */
   if (ibfd->xvec->flavour != bfd_target_som_flavour
       || obfd->xvec->flavour != bfd_target_som_flavour)
-    return TRUE;
+    return true;
 
   /* Allocate some memory to hold the data we need.  */
   obj_som_exec_data (obfd) = bfd_zalloc (obfd, (bfd_size_type) sizeof (struct som_exec_data));
   if (obj_som_exec_data (obfd) == NULL)
-    return FALSE;
+    return false;
 
   /* Now copy the data.  */
   memcpy (obj_som_exec_data (obfd), obj_som_exec_data (ibfd),
 	  sizeof (struct som_exec_data));
 
-  return TRUE;
+  return true;
 }
 
 /* Display the SOM header.  */
 
-static bfd_boolean
+static bool
 som_bfd_print_private_bfd_data (bfd *abfd, void *farg)
 {
   struct som_exec_auxhdr *exec_header;
@@ -5511,13 +5477,13 @@ som_bfd_print_private_bfd_data (bfd *abf
       fprintf (f, "  bss initializer    %#lx\n", (long) exec_header->exec_bfill);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set backend info for sections which can not be described
    in the BFD data structures.  */
 
-bfd_boolean
+bool
 bfd_som_set_section_attributes (asection *section,
 				int defined,
 				int private,
@@ -5527,24 +5493,24 @@ 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)
-	return FALSE;
+	return false;
     }
   som_section_data (section)->copy_data->sort_key = sort_key;
   som_section_data (section)->copy_data->is_defined = defined;
   som_section_data (section)->copy_data->is_private = private;
   som_section_data (section)->copy_data->container = section;
   som_section_data (section)->copy_data->space_number = spnum;
-  return TRUE;
+  return true;
 }
 
 /* Set backend info for subsections which can not be described
    in the BFD data structures.  */
 
-bfd_boolean
+bool
 bfd_som_set_subsection_attributes (asection *section,
 				   asection *container,
 				   int access_ctr,
@@ -5557,11 +5523,11 @@ 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)
-	return FALSE;
+	return false;
     }
   som_section_data (section)->copy_data->sort_key = sort_key;
   som_section_data (section)->copy_data->access_control_bits = access_ctr;
@@ -5570,7 +5536,7 @@ bfd_som_set_subsection_attributes (asect
   som_section_data (section)->copy_data->is_comdat = comdat;
   som_section_data (section)->copy_data->is_common = common;
   som_section_data (section)->copy_data->dup_common = dup_common;
-  return TRUE;
+  return true;
 }
 
 /* Set the full SOM symbol type.  SOM needs far more symbol information
@@ -5588,10 +5554,10 @@ bfd_som_set_symbol_type (asymbol *symbol
 /* Attach an auxiliary header to the BFD backend so that it may be
    written into the object file.  */
 
-bfd_boolean
+bool
 bfd_som_attach_aux_hdr (bfd *abfd, int type, char *string)
 {
-  bfd_size_type amt;
+  size_t amt;
 
   if (type == VERSION_AUX_ID)
     {
@@ -5603,7 +5569,7 @@ bfd_som_attach_aux_hdr (bfd *abfd, int t
       amt = sizeof (struct som_string_auxhdr) + len + pad;
       obj_som_version_hdr (abfd) = bfd_zalloc (abfd, amt);
       if (!obj_som_version_hdr (abfd))
-	return FALSE;
+	return false;
       obj_som_version_hdr (abfd)->header_id.type = VERSION_AUX_ID;
       obj_som_version_hdr (abfd)->header_id.length = 4 + len + pad;
       obj_som_version_hdr (abfd)->string_length = len;
@@ -5612,7 +5578,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)
@@ -5620,20 +5586,20 @@ bfd_som_attach_aux_hdr (bfd *abfd, int t
       amt = sizeof (struct som_string_auxhdr) + len + pad;
       obj_som_copyright_hdr (abfd) = bfd_zalloc (abfd, amt);
       if (!obj_som_copyright_hdr (abfd))
-	return FALSE;
+	return false;
       obj_som_copyright_hdr (abfd)->header_id.type = COPYRIGHT_AUX_ID;
       obj_som_copyright_hdr (abfd)->header_id.length = len + pad + 4;
       obj_som_copyright_hdr (abfd)->string_length = len;
       memcpy (obj_som_copyright_hdr (abfd)->string, string, len);
       memset (obj_som_copyright_hdr (abfd)->string + len, 0, pad);
     }
-  return TRUE;
+  return true;
 }
 
 /* Attach a compilation unit header to the BFD backend so that it may be
    written into the object file.  */
 
-bfd_boolean
+bool
 bfd_som_attach_compilation_unit (bfd *abfd,
 				 const char *name,
 				 const char *language_name,
@@ -5645,14 +5611,14 @@ bfd_som_attach_compilation_unit (bfd *ab
   n = (struct som_compilation_unit *) bfd_zalloc
     (abfd, (bfd_size_type) sizeof (*n));
   if (n == NULL)
-    return FALSE;
+    return false;
 
 #define STRDUP(f) \
   if (f != NULL) \
     { \
       n->f.name = bfd_alloc (abfd, (bfd_size_type) strlen (f) + 1); \
       if (n->f.name == NULL) \
-	return FALSE; \
+	return false; \
       strcpy (n->f.name, f); \
     }
 
@@ -5665,10 +5631,10 @@ bfd_som_attach_compilation_unit (bfd *ab
 
   obj_som_compilation_unit (abfd) = n;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 som_get_section_contents (bfd *abfd,
 			  sec_ptr section,
 			  void *location,
@@ -5676,15 +5642,15 @@ som_get_section_contents (bfd *abfd,
 			  bfd_size_type count)
 {
   if (count == 0 || ((section->flags & SEC_HAS_CONTENTS) == 0))
-    return TRUE;
-  if ((bfd_size_type) (offset+count) > section->size
-      || bfd_seek (abfd, (file_ptr) (section->filepos + offset), SEEK_SET) != 0
-      || bfd_bread (location, count, abfd) != count)
-    return FALSE; /* On error.  */
-  return TRUE;
+    return true;
+  if ((bfd_size_type) (offset + count) > section->size
+      || bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
+      || bfd_read (location, count, abfd) != count)
+    return false; /* On error.  */
+  return true;
 }
 
-static bfd_boolean
+static bool
 som_set_section_contents (bfd *abfd,
 			  sec_ptr section,
 			  const void *location,
@@ -5696,7 +5662,7 @@ som_set_section_contents (bfd *abfd,
       /* Set up fixed parts of the file, space, and subspace headers.
 	 Notify the world that output has begun.  */
       som_prep_headers (abfd);
-      abfd->output_has_begun = TRUE;
+      abfd->output_has_begun = true;
       /* Start writing the object file.  This include all the string
 	 tables, fixup streams, and other portions of the object file.  */
       som_begin_writing (abfd);
@@ -5706,20 +5672,20 @@ som_set_section_contents (bfd *abfd,
      are not generated at run time by the OS).  */
   if (!som_is_subspace (section)
       || ((section->flags & SEC_HAS_CONTENTS) == 0))
-    return TRUE;
+    return true;
 
   /* Seek to the proper offset within the object file and write the
      data.  */
   offset += som_section_data (section)->subspace_dict->file_loc_init_value;
   if (bfd_seek (abfd, offset, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
-  if (bfd_bwrite (location, count, abfd) != count)
-    return FALSE;
-  return TRUE;
+  if (bfd_write (location, count, abfd) != count)
+    return false;
+  return true;
 }
 
-static bfd_boolean
+static bool
 som_set_arch_mach (bfd *abfd,
 		   enum bfd_architecture arch,
 		   unsigned long machine)
@@ -5728,7 +5694,7 @@ som_set_arch_mach (bfd *abfd,
   return bfd_default_set_arch_mach (abfd, arch, machine);
 }
 
-static bfd_boolean
+static bool
 som_find_nearest_line (bfd *abfd,
 		       asymbol **symbols,
 		       asection *section,
@@ -5738,7 +5704,7 @@ som_find_nearest_line (bfd *abfd,
 		       unsigned int *line_ptr,
 		       unsigned int *discriminator_ptr)
 {
-  bfd_boolean found;
+  bool found;
   asymbol *func;
   bfd_vma low_func;
   asymbol **p;
@@ -5750,13 +5716,13 @@ som_find_nearest_line (bfd *abfd,
 					     & found, filename_ptr,
 					     functionname_ptr, line_ptr,
 					     & somdata (abfd).line_info))
-    return FALSE;
+    return false;
 
   if (found)
-    return TRUE;
+    return true;
 
   if (symbols == NULL)
-    return FALSE;
+    return false;
 
   /* Fallback: find function name from symbols table.  */
   func = NULL;
@@ -5777,13 +5743,13 @@ som_find_nearest_line (bfd *abfd,
     }
 
   if (func == NULL)
-    return FALSE;
+    return false;
 
   *filename_ptr = NULL;
   *functionname_ptr = bfd_asymbol_name (func);
   *line_ptr = 0;
 
-  return TRUE;
+  return true;
 }
 
 static int
@@ -5814,6 +5780,11 @@ som_decode_symclass (asymbol *symbol)
 {
   char c;
 
+  /* If the symbol did not have a scope specified,
+     then it will not have associated section.  */
+  if (symbol == NULL || symbol->section == NULL)
+    return '?';
+
   if (bfd_is_com_section (symbol->section))
     return 'C';
   if (bfd_is_und_section (symbol->section))
@@ -5875,31 +5846,32 @@ som_get_symbol_info (bfd *ignore_abfd AT
 /* Count the number of symbols in the archive symbol table.  Necessary
    so that we can allocate space for all the carsyms at once.  */
 
-static bfd_boolean
+static bool
 som_bfd_count_ar_symbols (bfd *abfd,
 			  struct som_lst_header *lst_header,
 			  symindex *count)
 {
   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++)
@@ -5917,7 +5889,7 @@ som_bfd_count_ar_symbols (bfd *abfd,
 
       /* Read in this symbol and update the counter.  */
       amt = sizeof (ext_lst_symbol);
-      if (bfd_bread ((void *) &ext_lst_symbol, amt, abfd) != amt)
+      if (bfd_read (&ext_lst_symbol, amt, abfd) != amt)
 	goto error_return;
 
       (*count)++;
@@ -5930,32 +5902,39 @@ 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;
 
 	  /* Read the symbol in and update the counter.  */
 	  amt = sizeof (ext_lst_symbol);
-	  if (bfd_bread ((void *) &ext_lst_symbol, amt, abfd) != amt)
+	  if (bfd_read (&ext_lst_symbol, amt, abfd) != amt)
 	    goto error_return;
 
 	  (*count)++;
 	}
     }
-  if (hash_table != NULL)
-    free (hash_table);
-  return TRUE;
+  free (hash_table);
+  return true;
 
  error_return:
-  if (hash_table != NULL)
-    free (hash_table);
-  return FALSE;
+  free (hash_table);
+  return false;
 }
 
 /* Fill in the canonical archive symbols (SYMS) from the archive described
    by ABFD and LST_HEADER.  */
 
-static bfd_boolean
+static bool
 som_bfd_fill_in_ar_symbols (bfd *abfd,
 			    struct som_lst_header *lst_header,
 			    carsym **syms)
@@ -5964,19 +5943,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 +5965,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 +5983,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);
@@ -6013,7 +5998,7 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
 	goto error_return;
 
       amt = sizeof (lst_symbol);
-      if (bfd_bread ((void *) &lst_symbol, amt, abfd) != amt)
+      if (bfd_read (&lst_symbol, amt, abfd) != amt)
 	goto error_return;
 
       /* Get the name of the symbol, first get the length which is stored
@@ -6027,25 +6012,32 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
 			   + bfd_getb32 (lst_symbol.name) - 4), SEEK_SET) != 0)
 	goto error_return;
 
-      if (bfd_bread (&ext_len, (bfd_size_type) 4, abfd) != 4)
+      if (bfd_read (&ext_len, 4, abfd) != 4)
 	goto error_return;
       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++;
@@ -6063,7 +6055,7 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
 	    goto error_return;
 
 	  amt = sizeof (lst_symbol);
-	  if (bfd_bread ((void *) &lst_symbol, amt, abfd) != amt)
+	  if (bfd_read (&lst_symbol, amt, abfd) != amt)
 	    goto error_return;
 
 	  /* Seek to the name length & string and read them in.  */
@@ -6071,25 +6063,32 @@ som_bfd_fill_in_ar_symbols (bfd *abfd,
 			+ bfd_getb32 (lst_symbol.name) - 4, SEEK_SET) != 0)
 	    goto error_return;
 
-	  if (bfd_bread (&ext_len, (bfd_size_type) 4, abfd) != 4)
+	  if (bfd_read (&ext_len, 4, abfd) != 4)
 	    goto error_return;
 	  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,23 +6096,19 @@ 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);
-  return TRUE;
+  free (hash_table);
+  free (som_dict);
+  return true;
 
  error_return:
-  if (hash_table != NULL)
-    free (hash_table);
-  if (som_dict != NULL)
-    free (som_dict);
-  return FALSE;
+  free (hash_table);
+  free (som_dict);
+  return false;
 }
 
 /* Read in the LST from the archive.  */
 
-static bfd_boolean
+static bool
 som_slurp_armap (bfd *abfd)
 {
   struct som_external_lst_header ext_lst_header;
@@ -6122,34 +6117,34 @@ som_slurp_armap (bfd *abfd)
   unsigned int parsed_size;
   struct artdata *ardata = bfd_ardata (abfd);
   char nextname[17];
-  bfd_size_type amt = 16;
-  int i = bfd_bread ((void *) nextname, amt, abfd);
+  size_t amt = 16;
+  int i = bfd_read (nextname, amt, abfd);
 
   /* Special cases.  */
   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;
+  if (bfd_seek (abfd, -16, SEEK_CUR) != 0)
+    return false;
 
   /* For archives without .o files there is no symbol table.  */
-  if (! CONST_STRNEQ (nextname, "/               "))
+  if (! startswith (nextname, "/               "))
     {
-      abfd->has_armap = FALSE;
-      return TRUE;
+      abfd->has_armap = false;
+      return true;
     }
 
   /* Read in and sanity check the archive header.  */
   amt = sizeof (struct ar_hdr);
-  if (bfd_bread ((void *) &ar_header, amt, abfd) != amt)
-    return FALSE;
+  if (bfd_read (&ar_header, amt, abfd) != amt)
+    return false;
 
   if (strncmp (ar_header.ar_fmag, ARFMAG, 2))
     {
       bfd_set_error (bfd_error_malformed_archive);
-      return FALSE;
+      return false;
     }
 
   /* How big is the archive symbol table entry?  */
@@ -6158,7 +6153,7 @@ som_slurp_armap (bfd *abfd)
   if (errno != 0)
     {
       bfd_set_error (bfd_error_malformed_archive);
-      return FALSE;
+      return false;
     }
 
   /* Save off the file offset of the first real user data.  */
@@ -6167,8 +6162,8 @@ som_slurp_armap (bfd *abfd)
   /* Read in the library symbol table.  We'll make heavy use of this
      in just a minute.  */
   amt = sizeof (struct som_external_lst_header);
-  if (bfd_bread ((void *) &ext_lst_header, amt, abfd) != amt)
-    return FALSE;
+  if (bfd_read (&ext_lst_header, amt, abfd) != amt)
+    return false;
 
   som_swap_lst_header_in (&ext_lst_header, &lst_header);
 
@@ -6176,39 +6171,42 @@ som_slurp_armap (bfd *abfd)
   if (lst_header.a_magic != LIBMAGIC)
     {
       bfd_set_error (bfd_error_malformed_archive);
-      return FALSE;
+      return false;
     }
 
   /* Count the number of symbols in the library symbol table.  */
   if (! som_bfd_count_ar_symbols (abfd, &lst_header, &ardata->symdef_count))
-    return FALSE;
+    return false;
 
   /* Get back to the start of the library symbol table.  */
   if (bfd_seek (abfd, (ardata->first_file_filepos - parsed_size
 		       + sizeof (struct som_external_lst_header)),
 		SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   /* 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;
+    return false;
 
   /* Now fill in the canonical archive symbols.  */
   if (! som_bfd_fill_in_ar_symbols (abfd, &lst_header, &ardata->symdefs))
-    return FALSE;
+    return false;
 
   /* Seek back to the "first" file in the archive.  Note the "first"
      file may be the extended name table.  */
   if (bfd_seek (abfd, ardata->first_file_filepos, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   /* Notify the generic archive code that we have a symbol map.  */
-  abfd->has_armap = TRUE;
-  return TRUE;
+  abfd->has_armap = true;
+  return true;
 }
 
 /* Begin preparing to write a SOM library symbol table.
@@ -6216,7 +6214,7 @@ som_slurp_armap (bfd *abfd)
    As part of the prep work we need to determine the number of symbols
    and the size of the associated string section.  */
 
-static bfd_boolean
+static bool
 som_bfd_prep_for_ar_write (bfd *abfd,
 			   unsigned int *num_syms,
 			   unsigned int *stringsize)
@@ -6245,7 +6243,7 @@ som_bfd_prep_for_ar_write (bfd *abfd,
 	 to it.  It's a little slimey to grab the symbols via obj_som_symtab,
 	 but doing so avoids allocating lots of extra memory.  */
       if (! som_slurp_symbol_table (curr_bfd))
-	return FALSE;
+	return false;
 
       sym = obj_som_symtab (curr_bfd);
       curr_count = bfd_get_symcount (curr_bfd);
@@ -6284,7 +6282,7 @@ som_bfd_prep_for_ar_write (bfd *abfd,
 
       curr_bfd = curr_bfd->archive_next;
     }
-  return TRUE;
+  return true;
 }
 
 /* Hash a symbol name based on the hashing algorithm presented in the
@@ -6306,7 +6304,7 @@ som_bfd_ar_symbol_hash (asymbol *symbol)
 /* Do the bulk of the work required to write the SOM library
    symbol table.  */
 
-static bfd_boolean
+static bool
 som_bfd_ar_write_symbol_stuff (bfd *abfd,
 			       unsigned int nsyms,
 			       unsigned int string_size,
@@ -6320,23 +6318,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 +6378,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,57 +6532,47 @@ som_bfd_ar_write_symbol_stuff (bfd *abfd
     }
 
   /* Now scribble out the hash table.  */
-  amt = hash_size * 4;
-  if (bfd_bwrite ((void *) hash_table, amt, abfd) != amt)
+  amt = (size_t) hash_size * 4;
+  if (bfd_write (hash_table, amt, abfd) != amt)
     goto error_return;
 
   /* Then the SOM dictionary.  */
-  amt = module_count * sizeof (struct som_external_som_entry);
-  if (bfd_bwrite ((void *) som_dict, amt, abfd) != amt)
+  amt = (size_t) module_count * sizeof (struct som_external_som_entry);
+  if (bfd_write (som_dict, amt, abfd) != amt)
     goto error_return;
 
   /* The library symbols.  */
-  amt = nsyms * sizeof (struct som_external_lst_symbol_record);
-  if (bfd_bwrite ((void *) lst_syms, amt, abfd) != amt)
+  amt = (size_t) nsyms * sizeof (struct som_external_lst_symbol_record);
+  if (bfd_write (lst_syms, amt, abfd) != amt)
     goto error_return;
 
   /* And finally the strings.  */
   amt = string_size;
-  if (bfd_bwrite ((void *) strings, amt, abfd) != amt)
+  if (bfd_write (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);
-  return TRUE;
+  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;
+  return false;
 }
 
 /* Write out the LST for the archive.
 
    You'll never believe this is really how armaps are handled in SOM...  */
 
-static bfd_boolean
+static bool
 som_write_armap (bfd *abfd,
 		 unsigned int elength,
 		 struct orl *map ATTRIBUTE_UNUSED,
@@ -6578,15 +6585,15 @@ 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;
+      return false;
     }
   /* Fudge factor.  */
   bfd_ardata (abfd)->armap_timestamp = statbuf.st_mtime + 60;
@@ -6638,7 +6645,7 @@ som_write_armap (bfd *abfd,
   /* Count how many symbols we will have on the hash chains and the
      size of the associated string table.  */
   if (! som_bfd_prep_for_ar_write (abfd, &nsyms, &stringsize))
-    return FALSE;
+    return false;
 
   lst_size += sizeof (struct som_external_lst_symbol_record) * nsyms;
 
@@ -6682,33 +6689,33 @@ som_write_armap (bfd *abfd,
 
   /* Scribble out the ar header.  */
   amt = sizeof (struct ar_hdr);
-  if (bfd_bwrite ((void *) &hdr, amt, abfd) != amt)
-    return FALSE;
+  if (bfd_write (&hdr, amt, abfd) != amt)
+    return false;
 
   /* Now scribble out the lst header.  */
   amt = sizeof (struct som_external_lst_header);
-  if (bfd_bwrite ((void *) &lst, amt, abfd) != amt)
-    return FALSE;
+  if (bfd_write (&lst, amt, abfd) != amt)
+    return false;
 
   /* Build and write the armap.  */
   if (!som_bfd_ar_write_symbol_stuff (abfd, nsyms, stringsize, lst, elength))
-    return FALSE;
+    return false;
 
   /* Done.  */
-  return TRUE;
+  return true;
 }
 
-/* Free all information we have cached for this BFD.  We can always
-   read it again later if we need it.  */
+/* Throw away some malloc'd information for this BFD.  */
 
-static bfd_boolean
+static bool
 som_bfd_free_cached_info (bfd *abfd)
 {
-  if (bfd_get_format (abfd) == bfd_object)
+  if (bfd_get_format (abfd) == bfd_object
+      || bfd_get_format (abfd) == bfd_core)
     {
       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));
@@ -6722,14 +6729,16 @@ som_bfd_free_cached_info (bfd *abfd)
 #undef FREE
     }
 
-  return _bfd_generic_close_and_cleanup (abfd);
+  /* Do not call _bfd_generic_bfd_free_cached_info here.
+     som_write_armap needs to access the bfd objalloc memory.  */
+  return true;
 }
 
 /* End of miscellaneous support functions.  */
 
 /* Linker support functions.  */
 
-static bfd_boolean
+static bool
 som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec)
 {
   return som_is_subspace (sec) && sec->size > 240000;
@@ -6737,7 +6746,7 @@ som_bfd_link_split_section (bfd *abfd AT
 
 #define som_find_line				_bfd_nosymbols_find_line
 #define som_get_symbol_version_string		_bfd_nosymbols_get_symbol_version_string
-#define	som_close_and_cleanup			som_bfd_free_cached_info
+#define som_close_and_cleanup			_bfd_generic_close_and_cleanup
 #define som_read_ar_hdr				_bfd_generic_read_ar_hdr
 #define som_write_ar_hdr			_bfd_generic_write_ar_hdr
 #define som_openr_next_archived_file		bfd_generic_openr_next_archived_file
@@ -6752,7 +6761,6 @@ som_bfd_link_split_section (bfd *abfd AT
 #define som_bfd_make_debug_symbol		_bfd_nosymbols_bfd_make_debug_symbol
 #define som_read_minisymbols			_bfd_generic_read_minisymbols
 #define som_minisymbol_to_symbol		_bfd_generic_minisymbol_to_symbol
-#define som_get_section_contents_in_window	_bfd_generic_get_section_contents_in_window
 #define som_bfd_get_relocated_section_contents	bfd_generic_get_relocated_section_contents
 #define som_bfd_relax_section			bfd_generic_relax_section
 #define som_bfd_link_hash_table_create		_bfd_generic_link_hash_table_create
@@ -6796,6 +6804,7 @@ const bfd_target hppa_som_vec =
   '/',				/* AR_pad_char.  */
   14,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/som.h ./bfd/som.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/som.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/som.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
 
    Contributed by the Center for Software Science at the
    University of Utah (pa-gdb-bugs@cs.utah.edu).
@@ -81,7 +81,7 @@ typedef struct som_symbol
 
   /* During object file writing, the offset of the name of this symbol
      in the SOM string table.  */
-  int stringtab_offset;
+  unsigned int stringtab_offset;
 }
 som_symbol_type;
 
@@ -230,14 +230,24 @@ struct som_section_data_struct
 #define R_HPPA_BEGIN_TRY		R_BEGIN_TRY
 #define R_HPPA_END_TRY			R_END_TRY
 
+#define som_find_nearest_line_with_alt \
+  _bfd_nosymbols_find_nearest_line_with_alt
+
 /* Exported functions, mostly for use by GAS.  */
-bfd_boolean  bfd_som_set_section_attributes    (asection *, int, int, unsigned int, int);
-bfd_boolean  bfd_som_set_subsection_attributes (asection *, asection *, int, unsigned int, int, int, int, int);
-void	     bfd_som_set_symbol_type	       (asymbol *, unsigned int);
-bfd_boolean  bfd_som_attach_aux_hdr	       (bfd *, int, char *);
-int **	     hppa_som_gen_reloc_type	       (bfd *, int, int, enum hppa_reloc_field_selector_type_alt, int, asymbol *);
-bfd_boolean  bfd_som_attach_compilation_unit   (bfd *, const char *, const char *, const char *, const char *);
-asection *   bfd_section_from_som_symbol       (bfd *abfd, struct som_external_symbol_dictionary_record *symbol);
+bool bfd_som_set_section_attributes
+  (asection *, int, int, unsigned int, int);
+bool bfd_som_set_subsection_attributes
+  (asection *, asection *, int, unsigned int, int, int, int, int);
+void bfd_som_set_symbol_type
+  (asymbol *, unsigned int);
+bool bfd_som_attach_aux_hdr
+  (bfd *, int, char *);
+int **hppa_som_gen_reloc_type
+  (bfd *, int, int, enum hppa_reloc_field_selector_type_alt, int, asymbol *);
+bool bfd_som_attach_compilation_unit
+  (bfd *, const char *, const char *, const char *, const char *);
+asection *bfd_section_from_som_symbol
+  (bfd *abfd, struct som_external_symbol_dictionary_record *symbol);
 
 #ifdef __cplusplus
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/srec.c ./bfd/srec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/srec.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/srec.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for s-record objects.
-   Copyright (C) 1990-2019 Free Software Foundation, Inc.
+   Copyright (C) 1990-2025 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.
@@ -134,7 +134,7 @@ unsigned int _bfd_srec_len = DEFAULT_CHU
 /* The type of srec output (free or forced to S3).
    This variable can be modified by objcopy's --srec-forceS3
    parameter.  */
-bfd_boolean _bfd_srec_forceS3 = FALSE;
+bool _bfd_srec_forceS3 = false;
 
 /* When writing an S-record file, the S-records can not be output as
    they are seen.  This structure is used to hold them in memory.  */
@@ -178,18 +178,18 @@ tdata_type;
 static void
 srec_init (void)
 {
-  static bfd_boolean inited = FALSE;
+  static bool inited = false;
 
   if (! inited)
     {
-      inited = TRUE;
+      inited = true;
       hex_init ();
     }
 }
 
 /* Set up the S-record tdata information.  */
 
-static bfd_boolean
+static bool
 srec_mkobject (bfd *abfd)
 {
   tdata_type *tdata;
@@ -198,7 +198,7 @@ srec_mkobject (bfd *abfd)
 
   tdata = (tdata_type *) bfd_alloc (abfd, sizeof (tdata_type));
   if (tdata == NULL)
-    return FALSE;
+    return false;
 
   abfd->tdata.srec_data = tdata;
   tdata->type = 1;
@@ -208,21 +208,21 @@ srec_mkobject (bfd *abfd)
   tdata->symtail = NULL;
   tdata->csymbols = NULL;
 
-  return TRUE;
+  return true;
 }
 
 /* Read a byte from an S record file.  Set *ERRORPTR if an error
    occurred.  Return EOF on error or end of file.  */
 
 static int
-srec_get_byte (bfd *abfd, bfd_boolean *errorptr)
+srec_get_byte (bfd *abfd, bool *errorptr)
 {
   bfd_byte c;
 
-  if (bfd_bread (&c, (bfd_size_type) 1, abfd) != 1)
+  if (bfd_read (&c, 1, abfd) != 1)
     {
       if (bfd_get_error () != bfd_error_file_truncated)
-	*errorptr = TRUE;
+	*errorptr = true;
       return EOF;
     }
 
@@ -237,7 +237,7 @@ static void
 srec_bad_byte (bfd *abfd,
 	       unsigned int lineno,
 	       int c,
-	       bfd_boolean error)
+	       bool error)
 {
   if (c == EOF)
     {
@@ -265,14 +265,14 @@ srec_bad_byte (bfd *abfd,
 
 /* Add a new symbol found in an S-record file.  */
 
-static bfd_boolean
+static bool
 srec_new_symbol (bfd *abfd, const char *name, bfd_vma val)
 {
   struct srec_symbol *n;
 
   n = (struct srec_symbol *) bfd_alloc (abfd, sizeof (* n));
   if (n == NULL)
-    return FALSE;
+    return false;
 
   n->name = name;
   n->val = val;
@@ -286,24 +286,24 @@ srec_new_symbol (bfd *abfd, const char *
 
   ++abfd->symcount;
 
-  return TRUE;
+  return true;
 }
 
 /* Read the S record file and turn it into sections.  We create a new
    section for each contiguous set of bytes.  */
 
-static bfd_boolean
+static bool
 srec_scan (bfd *abfd)
 {
   int c;
   unsigned int lineno = 1;
-  bfd_boolean error = FALSE;
+  bool error = false;
   bfd_byte *buf = NULL;
   size_t bufsize = 0;
   asection *sec = NULL;
   char *symbuf = NULL;
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
     goto error_return;
 
   while ((c = srec_get_byte (abfd, &error)) != EOF)
@@ -463,7 +463,7 @@ srec_scan (bfd *abfd)
 
 	    pos = bfd_tell (abfd) - 1;
 
-	    if (bfd_bread (hdr, (bfd_size_type) 3, abfd) != 3)
+	    if (bfd_read (hdr, 3, abfd) != 3)
 	      goto error_return;
 
 	    if (! ISHEX (hdr[1]) || ! ISHEX (hdr[2]))
@@ -493,15 +493,14 @@ srec_scan (bfd *abfd)
 
 	    if (bytes * 2 > bufsize)
 	      {
-		if (buf != NULL)
-		  free (buf);
-		buf = (bfd_byte *) bfd_malloc ((bfd_size_type) bytes * 2);
+		free (buf);
+		buf = bfd_malloc (bytes * 2);
 		if (buf == NULL)
 		  goto error_return;
 		bufsize = bytes * 2;
 	      }
 
-	    if (bfd_bread (buf, (bfd_size_type) bytes * 2, abfd) != bytes * 2)
+	    if (bfd_read (buf, bytes * 2, abfd) != bytes * 2)
 	      goto error_return;
 
 	    /* Ignore the checksum byte.  */
@@ -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,10 +617,8 @@ srec_scan (bfd *abfd)
 		    goto error_return;
 		  }
 
-		if (buf != NULL)
-		  free (buf);
-
-		return TRUE;
+		free (buf);
+		return true;
 	      }
 	  }
 	  break;
@@ -631,31 +628,26 @@ srec_scan (bfd *abfd)
   if (error)
     goto error_return;
 
-  if (buf != NULL)
-    free (buf);
-
-  return TRUE;
+  free (buf);
+  return true;
 
  error_return:
-  if (symbuf != NULL)
-    free (symbuf);
-  if (buf != NULL)
-    free (buf);
-  return FALSE;
+  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;
   bfd_byte b[4];
 
   srec_init ();
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bread (b, (bfd_size_type) 4, abfd) != 4)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_read (b, 4, abfd) != 4)
     return NULL;
 
   if (b[0] != 'S' || !ISHEX (b[1]) || !ISHEX (b[2]) || !ISHEX (b[3]))
@@ -664,33 +656,32 @@ srec_object_p (bfd *abfd)
       return NULL;
     }
 
-  tdata_save = abfd->tdata.any;
-  if (! srec_mkobject (abfd) || ! srec_scan (abfd))
+  if (!srec_mkobject (abfd))
+    return NULL;
+
+  if (!srec_scan (abfd))
     {
-      if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
-	bfd_release (abfd, abfd->tdata.any);
-      abfd->tdata.any = tdata_save;
+      bfd_release (abfd, abfd->tdata.any);
       return NULL;
     }
 
   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;
   char b[2];
 
   srec_init ();
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bread (b, (bfd_size_type) 2, abfd) != 2)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_read (b, 2, abfd) != 2)
     return NULL;
 
   if (b[0] != '$' || b[1] != '$')
@@ -699,29 +690,29 @@ symbolsrec_object_p (bfd *abfd)
       return NULL;
     }
 
-  tdata_save = abfd->tdata.any;
-  if (! srec_mkobject (abfd) || ! srec_scan (abfd))
+  if (!srec_mkobject (abfd))
+    return NULL;
+
+  if (!srec_scan (abfd))
     {
-      if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
-	bfd_release (abfd, abfd->tdata.any);
-      abfd->tdata.any = tdata_save;
+      bfd_release (abfd, abfd->tdata.any);
       return NULL;
     }
 
   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.  */
 
-static bfd_boolean
+static bool
 srec_read_section (bfd *abfd, asection *section, bfd_byte *contents)
 {
   int c;
   bfd_size_type sofar = 0;
-  bfd_boolean error = FALSE;
+  bool error = false;
   bfd_byte *buf = NULL;
   size_t bufsize = 0;
 
@@ -740,9 +731,10 @@ srec_read_section (bfd *abfd, asection *
 
       /* This is called after srec_scan has already been called, so we
 	 ought to know the exact format.  */
-      BFD_ASSERT (c == 'S');
+      if (c != 'S')
+	goto error_return;
 
-      if (bfd_bread (hdr, (bfd_size_type) 3, abfd) != 3)
+      if (bfd_read (hdr, 3, abfd) != 3)
 	goto error_return;
 
       BFD_ASSERT (ISHEX (hdr[1]) && ISHEX (hdr[2]));
@@ -751,15 +743,14 @@ srec_read_section (bfd *abfd, asection *
 
       if (bytes * 2 > bufsize)
 	{
-	  if (buf != NULL)
-	    free (buf);
-	  buf = (bfd_byte *) bfd_malloc ((bfd_size_type) bytes * 2);
+	  free (buf);
+	  buf = bfd_malloc (bytes * 2);
 	  if (buf == NULL)
 	    goto error_return;
 	  bufsize = bytes * 2;
 	}
 
-      if (bfd_bread (buf, (bfd_size_type) bytes * 2, abfd) != bytes * 2)
+      if (bfd_read (buf, bytes * 2, abfd) != bytes * 2)
 	goto error_return;
 
       address = 0;
@@ -767,10 +758,10 @@ srec_read_section (bfd *abfd, asection *
       switch (hdr[0])
 	{
 	default:
-	  BFD_ASSERT (sofar == section->size);
-	  if (buf != NULL)
-	    free (buf);
-	  return TRUE;
+	  if (sofar != section->size)
+	    goto error_return;
+	  free (buf);
+	  return true;
 
 	case '3':
 	  address = HEX (data);
@@ -792,10 +783,10 @@ srec_read_section (bfd *abfd, asection *
 	  if (address != section->vma + sofar)
 	    {
 	      /* We've come to the end of this section.  */
-	      BFD_ASSERT (sofar == section->size);
-	      if (buf != NULL)
-		free (buf);
-	      return TRUE;
+	      if (sofar != section->size)
+		goto error_return;
+	      free (buf);
+	      return true;
 	    }
 
 	  /* Don't consider checksum.  */
@@ -815,22 +806,20 @@ srec_read_section (bfd *abfd, asection *
   if (error)
     goto error_return;
 
-  BFD_ASSERT (sofar == section->size);
-
-  if (buf != NULL)
-    free (buf);
+  if (sofar != section->size)
+    goto error_return;
 
-  return TRUE;
+  free (buf);
+  return true;
 
  error_return:
-  if (buf != NULL)
-    free (buf);
-  return FALSE;
+  free (buf);
+  return false;
 }
 
 /* Get the contents of a section in an S-record file.  */
 
-static bfd_boolean
+static bool
 srec_get_section_contents (bfd *abfd,
 			   asection *section,
 			   void * location,
@@ -838,47 +827,47 @@ srec_get_section_contents (bfd *abfd,
 			   bfd_size_type count)
 {
   if (count == 0)
-    return TRUE;
+    return true;
 
   if (offset + count < count
       || offset + count > section->size)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   if (section->used_by_bfd == NULL)
     {
       section->used_by_bfd = bfd_alloc (abfd, section->size);
       if (section->used_by_bfd == NULL)
-	return FALSE;
+	return false;
 
       if (! srec_read_section (abfd, section,
 			       (bfd_byte *) section->used_by_bfd))
-	return FALSE;
+	return false;
     }
 
   memcpy (location, (bfd_byte *) section->used_by_bfd + offset,
 	  (size_t) count);
 
-  return TRUE;
+  return true;
 }
 
 /* Set the architecture.  We accept an unknown architecture here.  */
 
-static bfd_boolean
+static bool
 srec_set_arch_mach (bfd *abfd, enum bfd_architecture arch, unsigned long mach)
 {
   if (arch != bfd_arch_unknown)
     return bfd_default_set_arch_mach (abfd, arch, mach);
 
   abfd->arch_info = & bfd_default_arch_struct;
-  return TRUE;
+  return true;
 }
 
 /* We have to save up all the Srecords for a splurge before output.  */
 
-static bfd_boolean
+static bool
 srec_set_section_contents (bfd *abfd,
 			   sec_ptr section,
 			   const void * location,
@@ -891,7 +880,7 @@ srec_set_section_contents (bfd *abfd,
 
   entry = (srec_data_list_type *) bfd_alloc (abfd, sizeof (* entry));
   if (entry == NULL)
-    return FALSE;
+    return false;
 
   if (bytes_to_do
       && (section->flags & SEC_ALLOC)
@@ -901,7 +890,7 @@ srec_set_section_contents (bfd *abfd,
 
       data = (bfd_byte *) bfd_alloc (abfd, bytes_to_do);
       if (data == NULL)
-	return FALSE;
+	return false;
       memcpy ((void *) data, location, (size_t) bytes_to_do);
 
       /* If _bfd_srec_forceS3 is TRUE then always select S3 records,
@@ -943,14 +932,14 @@ srec_set_section_contents (bfd *abfd,
 	    tdata->tail = entry;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Write a record of type, of the supplied number of bytes. The
    supplied bytes and length don't have a checksum. That's worked out
    here.  */
 
-static bfd_boolean
+static bool
 srec_write_record (bfd *abfd,
 		   unsigned int type,
 		   bfd_vma address,
@@ -1009,24 +998,24 @@ srec_write_record (bfd *abfd,
   *dst++ = '\n';
   wrlen = dst - buffer;
 
-  return bfd_bwrite ((void *) buffer, wrlen, abfd) == wrlen;
+  return bfd_write (buffer, wrlen, abfd) == wrlen;
 }
 
-static bfd_boolean
+static bool
 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
+static bool
 srec_write_section (bfd *abfd,
 		    tdata_type *tdata,
 		    srec_data_list_type *list)
@@ -1061,23 +1050,23 @@ srec_write_section (bfd *abfd,
 			       address,
 			       location,
 			       location + octets_this_chunk))
-	return FALSE;
+	return false;
 
       octets_written += octets_this_chunk;
       location += octets_this_chunk;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 srec_write_terminator (bfd *abfd, tdata_type *tdata)
 {
   return srec_write_record (abfd, 10 - tdata->type,
 			    abfd->start_address, NULL, NULL);
 }
 
-static bfd_boolean
+static bool
 srec_write_symbols (bfd *abfd)
 {
   /* Dump out the symbols of a bfd.  */
@@ -1089,50 +1078,49 @@ srec_write_symbols (bfd *abfd)
       bfd_size_type len;
       asymbol **table = bfd_get_outsymbols (abfd);
 
-      len = strlen (abfd->filename);
-      if (bfd_bwrite ("$$ ", (bfd_size_type) 3, abfd) != 3
-	  || bfd_bwrite (abfd->filename, len, abfd) != len
-	  || bfd_bwrite ("\r\n", (bfd_size_type) 2, abfd) != 2)
-	return FALSE;
+      len = strlen (bfd_get_filename (abfd));
+      if (bfd_write ("$$ ", 3, abfd) != 3
+	  || bfd_write (bfd_get_filename (abfd), len, abfd) != len
+	  || bfd_write ("\r\n", 2, abfd) != 2)
+	goto fail;
 
       for (i = 0; i < count; i++)
 	{
 	  asymbol *s = table[i];
+
 	  if (! bfd_is_local_label (abfd, s)
-	      && (s->flags & BSF_DEBUGGING) == 0)
+	      && (s->flags & BSF_DEBUGGING) == 0
+	      && s->section != NULL
+	      && s->section->output_section != NULL)
 	    {
 	      /* Just dump out non debug symbols.  */
-	      char buf[43], *p;
+	      char buf[43];
 
 	      len = strlen (s->name);
-	      if (bfd_bwrite ("  ", (bfd_size_type) 2, abfd) != 2
-		  || bfd_bwrite (s->name, len, abfd) != len)
-		return FALSE;
-
-	      sprintf_vma (buf + 2, (s->value
-				     + s->section->output_section->lma
-				     + s->section->output_offset));
-	      p = buf + 2;
-	      while (p[0] == '0' && p[1] != 0)
-		p++;
-	      len = strlen (p);
-	      p[len] = '\r';
-	      p[len + 1] = '\n';
-	      *--p = '$';
-	      *--p = ' ';
-	      len += 4;
-	      if (bfd_bwrite (p, len, abfd) != len)
-		return FALSE;
+	      if (bfd_write ("  ", 2, abfd) != 2
+		  || bfd_write (s->name, len, abfd) != len)
+		goto fail;
+
+	      sprintf (buf, " $%" PRIx64 "\r\n",
+		       (uint64_t) (s->value
+				   + s->section->output_section->lma
+				   + s->section->output_offset));
+	      len = strlen (buf);
+	      if (bfd_write (buf, len, abfd) != len)
+		goto fail;
 	    }
 	}
-      if (bfd_bwrite ("$$ \r\n", (bfd_size_type) 5, abfd) != 5)
-	return FALSE;
+      if (bfd_write ("$$ \r\n", 5, abfd) != 5)
+	goto fail;
     }
 
-  return TRUE;
+  return true;
+
+ fail:
+  return false;
 }
 
-static bfd_boolean
+static bool
 internal_srec_write_object_contents (bfd *abfd, int symbols)
 {
   tdata_type *tdata = abfd->tdata.srec_data;
@@ -1141,11 +1129,11 @@ internal_srec_write_object_contents (bfd
   if (symbols)
     {
       if (! srec_write_symbols (abfd))
-	return FALSE;
+	return false;
     }
 
   if (! srec_write_header (abfd))
-    return FALSE;
+    return false;
 
   /* Now wander though all the sections provided and output them.  */
   list = tdata->head;
@@ -1153,19 +1141,19 @@ internal_srec_write_object_contents (bfd
   while (list != (srec_data_list_type *) NULL)
     {
       if (! srec_write_section (abfd, tdata, list))
-	return FALSE;
+	return false;
       list = list->next;
     }
   return srec_write_terminator (abfd, tdata);
 }
 
-static bfd_boolean
+static bool
 srec_write_object_contents (bfd *abfd)
 {
   return internal_srec_write_object_contents (abfd, 0);
 }
 
-static bfd_boolean
+static bool
 symbolsrec_write_object_contents (bfd *abfd)
 {
   return internal_srec_write_object_contents (abfd, 1);
@@ -1262,6 +1250,7 @@ srec_print_symbol (bfd *abfd,
 #define srec_bfd_is_local_label_name		  bfd_generic_is_local_label_name
 #define srec_get_lineno				  _bfd_nosymbols_get_lineno
 #define srec_find_nearest_line			  _bfd_nosymbols_find_nearest_line
+#define srec_find_nearest_line_with_alt		  _bfd_nosymbols_find_nearest_line_with_alt
 #define srec_find_line				  _bfd_nosymbols_find_line
 #define srec_find_inliner_info			  _bfd_nosymbols_find_inliner_info
 #define srec_make_empty_symbol			  _bfd_generic_make_empty_symbol
@@ -1269,7 +1258,6 @@ srec_print_symbol (bfd *abfd,
 #define srec_bfd_make_debug_symbol		  _bfd_nosymbols_bfd_make_debug_symbol
 #define srec_read_minisymbols			  _bfd_generic_read_minisymbols
 #define srec_minisymbol_to_symbol		  _bfd_generic_minisymbol_to_symbol
-#define srec_get_section_contents_in_window	  _bfd_generic_get_section_contents_in_window
 #define srec_bfd_get_relocated_section_contents	  bfd_generic_get_relocated_section_contents
 #define srec_bfd_relax_section			  bfd_generic_relax_section
 #define srec_bfd_gc_sections			  bfd_generic_gc_sections
@@ -1296,15 +1284,14 @@ const bfd_target srec_vec =
   bfd_target_srec_flavour,
   BFD_ENDIAN_UNKNOWN,		/* Target byte order.  */
   BFD_ENDIAN_UNKNOWN,		/* Target headers byte order.  */
-  (HAS_RELOC | EXEC_P |		/* Object flags.  */
-   HAS_LINENO | HAS_DEBUG |
-   HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
+  EXEC_P,			/* Object flags.  */
   (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
-   | SEC_ALLOC | SEC_LOAD | SEC_RELOC),	/* Section flags.  */
+   | SEC_ALLOC | SEC_LOAD),	/* Section flags.  */
   0,				/* Leading underscore.  */
   ' ',				/* AR_pad_char.  */
   16,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
@@ -1321,13 +1308,13 @@ const bfd_target srec_vec =
   {
     _bfd_bool_bfd_false_error,
     srec_mkobject,
-    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
   {				/* bfd_write_contents.  */
     _bfd_bool_bfd_false_error,
     srec_write_object_contents,
-    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
 
@@ -1352,15 +1339,14 @@ const bfd_target symbolsrec_vec =
   bfd_target_srec_flavour,
   BFD_ENDIAN_UNKNOWN,		/* Target byte order.  */
   BFD_ENDIAN_UNKNOWN,		/* Target headers byte order.  */
-  (HAS_RELOC | EXEC_P |		/* Object flags.  */
-   HAS_LINENO | HAS_DEBUG |
-   HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
+  EXEC_P | HAS_SYMS,		/* Object flags.  */
   (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
-   | SEC_ALLOC | SEC_LOAD | SEC_RELOC),	/* Section flags.  */
+   | SEC_ALLOC | SEC_LOAD),	/* Section flags.  */
   0,				/* Leading underscore.  */
   ' ',				/* AR_pad_char.  */
   16,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
@@ -1377,13 +1363,13 @@ const bfd_target symbolsrec_vec =
   {
     _bfd_bool_bfd_false_error,
     srec_mkobject,
-    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
   {				/* bfd_write_contents.  */
     _bfd_bool_bfd_false_error,
     symbolsrec_write_object_contents,
-    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_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.20200303/bfd/stabs.c ./bfd/stabs.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/stabs.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/stabs.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Stabs in sections linking support.
-   Copyright (C) 1996-2019 Free Software Foundation, Inc.
+   Copyright (C) 1996-2025 Free Software Foundation, Inc.
    Written by Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -112,7 +112,23 @@ struct stab_section_info
   bfd_size_type stridxs[1];
 };
 
-
+/*
+EXTERNAL
+.{* This structure is used to keep track of stabs in sections
+.   information while linking.  *}
+.
+.struct stab_info
+.{
+.  {* A hash table used to hold stabs strings.  *}
+.  struct bfd_strtab_hash *strings;
+.  {* The header file hash table.  *}
+.  struct bfd_hash_table includes;
+.  {* The first .stabstr section.  *}
+.  struct bfd_section *stabstr;
+.};
+.
+*/
+
 /* The function to create a new entry in the header file hash table.  */
 
 static struct bfd_hash_entry *
@@ -140,11 +156,22 @@ stab_link_includes_newfunc (struct bfd_h
 
   return (struct bfd_hash_entry *) ret;
 }
-
-/* This function is called for each input file from the add_symbols
-   pass of the linker.  */
 
-bfd_boolean
+/*
+INTERNAL_FUNCTION
+	_bfd_link_section_stabs
+
+SYNOPSIS
+	bool _bfd_link_section_stabs
+	  (bfd *, struct stab_info *, asection *, asection *, void **,
+	   bfd_size_type *);
+
+DESCRIPTION
+	This function is called for each input file from the add_symbols
+	pass of the linker.
+*/
+
+bool
 _bfd_link_section_stabs (bfd *abfd,
 			 struct stab_info *sinfo,
 			 asection *stabsec,
@@ -152,7 +179,7 @@ _bfd_link_section_stabs (bfd *abfd,
 			 void * *psecinfo,
 			 bfd_size_type *pstring_offset)
 {
-  bfd_boolean first;
+  bool first;
   bfd_size_type count, amt;
   struct stab_section_info *secinfo;
   bfd_byte *stabbuf = NULL;
@@ -162,39 +189,41 @@ _bfd_link_section_stabs (bfd *abfd,
   bfd_size_type *pstridx;
 
   if (stabsec->size == 0
-      || stabstrsec->size == 0)
+      || stabstrsec->size == 0
+      || (stabsec->flags & SEC_HAS_CONTENTS) == 0
+      || (stabstrsec->flags & SEC_HAS_CONTENTS) == 0)
     /* This file does not contain stabs debugging information.  */
-    return TRUE;
+    return true;
 
   if (stabsec->size % STABSIZE != 0)
     /* Something is wrong with the format of these stab symbols.
        Don't try to optimize them.  */
-    return TRUE;
+    return true;
 
   if ((stabstrsec->flags & SEC_RELOC) != 0)
     /* We shouldn't see relocations in the strings, and we aren't
        prepared to handle them.  */
-    return TRUE;
+    return true;
 
   if (bfd_is_abs_section (stabsec->output_section)
       || bfd_is_abs_section (stabstrsec->output_section))
     /* At least one of the sections is being discarded from the
        link, so we should just ignore them.  */
-    return TRUE;
+    return true;
 
-  first = FALSE;
+  first = false;
 
   if (sinfo->stabstr == NULL)
     {
       flagword flags;
 
       /* Initialize the stabs information we need to keep track of.  */
-      first = TRUE;
+      first = true;
       sinfo->strings = _bfd_stringtab_init ();
       if (sinfo->strings == NULL)
 	goto error_return;
       /* Make sure the first byte is zero.  */
-      (void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE);
+      (void) _bfd_stringtab_add (sinfo->strings, "", true, true);
       if (! bfd_hash_table_init (&sinfo->includes,
 				 stab_link_includes_newfunc,
 				 sizeof (struct stab_link_includes_entry)))
@@ -267,7 +296,7 @@ _bfd_link_section_stabs (bfd *abfd,
 	      ++skip;
 	      continue;
 	    }
-	  first = FALSE;
+	  first = false;
 	}
 
       /* Store the string in the hash table, and record the index.  */
@@ -282,7 +311,7 @@ _bfd_link_section_stabs (bfd *abfd,
 	  goto error_return;
 	}
       string = (char *) stabstrbuf + symstroff;
-      *pstridx = _bfd_stringtab_add (sinfo->strings, string, TRUE, TRUE);
+      *pstridx = _bfd_stringtab_add (sinfo->strings, string, true, true);
 
       /* An N_BINCL symbol indicates the start of the stabs entries
 	 for a header file.  We need to scan ahead to the next N_EINCL
@@ -362,7 +391,7 @@ _bfd_link_section_stabs (bfd *abfd,
 	  /* If we have already included a header file with the same
 	     value, then replaced this one with an N_EXCL symbol.  */
 	  incl_entry = (struct stab_link_includes_entry * )
-	    bfd_hash_lookup (&sinfo->includes, string, TRUE, TRUE);
+	    bfd_hash_lookup (&sinfo->includes, string, true, true);
 	  if (incl_entry == NULL)
 	    goto error_return;
 
@@ -491,27 +520,34 @@ _bfd_link_section_stabs (bfd *abfd,
       BFD_ASSERT (offset != 0);
     }
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (stabbuf != NULL)
-    free (stabbuf);
-  if (stabstrbuf != NULL)
-    free (stabstrbuf);
-  return FALSE;
+  free (stabbuf);
+  free (stabstrbuf);
+  return false;
 }
-
-/* This function is called for each input file before the stab
-   section is relocated.  It discards stab entries for discarded
-   functions and variables.  The function returns TRUE iff
-   any entries have been deleted.
+
+/*
+INTERNAL_FUNCTION
+	_bfd_discard_section_stabs
+
+SYNOPSIS
+	bool _bfd_discard_section_stabs
+	  (bfd *, asection *, void *, bool (*) (bfd_vma, void *), void *);
+
+DESCRIPTION
+	This function is called for each input file before the stab
+	section is relocated.  It discards stab entries for discarded
+	functions and variables.  The function returns TRUE iff
+	any entries have been deleted.
 */
 
-bfd_boolean
+bool
 _bfd_discard_section_stabs (bfd *abfd,
 			    asection *stabsec,
 			    void * psecinfo,
-			    bfd_boolean (*reloc_symbol_deleted_p) (bfd_vma, void *),
+			    bool (*reloc_symbol_deleted_p) (bfd_vma, void *),
 			    void * cookie)
 {
   bfd_size_type count, amt;
@@ -522,26 +558,26 @@ _bfd_discard_section_stabs (bfd *abfd,
   bfd_size_type *pstridx;
   int deleting;
 
-  if (stabsec->size == 0)
+  if (stabsec->size == 0 || (stabsec->flags & SEC_HAS_CONTENTS) == 0)
     /* This file does not contain stabs debugging information.  */
-    return FALSE;
+    return false;
 
   if (stabsec->size % STABSIZE != 0)
     /* Something is wrong with the format of these stab symbols.
        Don't try to optimize them.  */
-    return FALSE;
+    return false;
 
   if ((stabsec->output_section != NULL
        && bfd_is_abs_section (stabsec->output_section)))
     /* At least one of the sections is being discarded from the
        link, so we should just ignore them.  */
-    return FALSE;
+    return false;
 
   /* We should have initialized our data in _bfd_link_section_stabs.
      If there was some bizarre error reading the string sections, though,
      we might not have.  Bail rather than asserting.  */
   if (psecinfo == NULL)
-    return FALSE;
+    return false;
 
   count = stabsec->rawsize / STABSIZE;
   secinfo = (struct stab_section_info *) psecinfo;
@@ -648,15 +684,24 @@ _bfd_discard_section_stabs (bfd *abfd,
   return skip > 0;
 
  error_return:
-  if (stabbuf != NULL)
-    free (stabbuf);
-  return FALSE;
+  free (stabbuf);
+  return false;
 }
 
-/* Write out the stab section.  This is called with the relocated
-   contents.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_write_section_stabs
+
+SYNOPSIS
+	bool _bfd_write_section_stabs
+	  (bfd *, struct stab_info *, asection *, void **, bfd_byte *);
+
+DESCRIPTION
+	Write out the stab section.  This is called with the relocated
+	contents.
+*/
 
-bfd_boolean
+bool
 _bfd_write_section_stabs (bfd *output_bfd,
 			  struct stab_info *sinfo,
 			  asection *stabsec,
@@ -725,14 +770,23 @@ _bfd_write_section_stabs (bfd *output_bf
 				   stabsec->size);
 }
 
-/* Write out the .stabstr section.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_write_stab_strings
+
+SYNOPSIS
+	bool _bfd_write_stab_strings (bfd *, struct stab_info *);
 
-bfd_boolean
+DESCRIPTION
+	Write out the .stabstr section.
+*/
+
+bool
 _bfd_write_stab_strings (bfd *output_bfd, struct stab_info *sinfo)
 {
   if (bfd_is_abs_section (sinfo->stabstr->output_section))
     /* The section was discarded from the link.  */
-    return TRUE;
+    return true;
 
   BFD_ASSERT ((sinfo->stabstr->output_offset
 	       + _bfd_stringtab_size (sinfo->strings))
@@ -742,21 +796,30 @@ _bfd_write_stab_strings (bfd *output_bfd
 		(file_ptr) (sinfo->stabstr->output_section->filepos
 			    + sinfo->stabstr->output_offset),
 		SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   if (! _bfd_stringtab_emit (output_bfd, sinfo->strings))
-    return FALSE;
+    return false;
 
   /* We no longer need the stabs information.  */
   _bfd_stringtab_free (sinfo->strings);
   bfd_hash_table_free (&sinfo->includes);
 
-  return TRUE;
+  return true;
 }
 
-/* Adjust an address in the .stab section.  Given OFFSET within
-   STABSEC, this returns the new offset in the adjusted stab section,
-   or -1 if the address refers to a stab which has been removed.  */
+/*
+INTERNAL_FUNCTION
+	_bfd_stab_section_offset
+
+SYNOPSIS
+	bfd_vma _bfd_stab_section_offset (asection *, void *, bfd_vma);
+
+DESCRIPTION
+	Adjust an address in the .stab section.  Given OFFSET within
+	STABSEC, this returns the new offset in the adjusted stab section,
+	or -1 if the address refers to a stab which has been removed.
+*/
 
 bfd_vma
 _bfd_stab_section_offset (asection *stabsec,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/stab-syms.c ./bfd/stab-syms.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/stab-syms.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/stab-syms.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -44,6 +44,17 @@
   __define_name (N_INDR, "INDR") \
   __define_name (N_WARNING, "WARNING")
 
+/*
+FUNCTION
+	bfd_get_stab_name
+
+SYNOPSIS
+	const char *bfd_get_stab_name (int);
+
+DESCRIPTION
+	Get the name of a stabs type code.
+*/
+
 const char *
 bfd_get_stab_name (int code)
 {
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/stamp-h.in ./bfd/stamp-h.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/stamp-h.in	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/stamp-h.in	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-timestamp
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/syms.c ./bfd/syms.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/syms.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/syms.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -168,19 +168,12 @@ DOCDD
 INODE
 typedef asymbol, symbol handling functions, Mini Symbols, Symbols
 
-*/
-/*
 SUBSECTION
 	typedef asymbol
 
 	An <<asymbol>> has the form:
 
-*/
-
-/*
 CODE_FRAGMENT
-
-.
 .typedef struct bfd_symbol
 .{
 .  {* A pointer to the BFD which owns the symbol. This information
@@ -307,6 +300,9 @@ CODE_FRAGMENT
 .     with this name and type in use.  BSF_OBJECT must also be set.  *}
 .#define BSF_GNU_UNIQUE          (1 << 23)
 .
+.  {* This section symbol should be included in the symbol table.  *}
+.#define BSF_SECTION_SYM_USED    (1 << 24)
+.
 .  flagword flags;
 .
 .  {* A pointer to the section to which this symbol is
@@ -324,6 +320,33 @@ CODE_FRAGMENT
 .}
 .asymbol;
 .
+
+EXTERNAL
+.typedef enum bfd_print_symbol
+.{
+.  bfd_print_symbol_name,
+.  bfd_print_symbol_more,
+.  bfd_print_symbol_all
+.} bfd_print_symbol_type;
+.
+.{* Information about a symbol that nm needs.  *}
+.
+.typedef struct _symbol_info
+.{
+.  symvalue value;
+.  char type;
+.  const char *name;		{* Symbol name.  *}
+.  unsigned char stab_type;	{* Stab type.  *}
+.  char stab_other;		{* Stab other.  *}
+.  short stab_desc;		{* Stab desc.  *}
+.  const char *stab_name;	{* String for stab type.  *}
+.} symbol_info;
+.
+.{* An empty string that will not match the address of any other
+.   symbol name, even unnamed local symbols which will also have empty
+.   string names.  This can be used to flag a symbol as corrupt if its
+.   name uses an out of range string table index.  *}
+.extern const char bfd_symbol_error_name[];
 */
 
 #include "sysdep.h"
@@ -333,6 +356,8 @@ CODE_FRAGMENT
 #include "bfdlink.h"
 #include "aout/stab_gnu.h"
 
+const char bfd_symbol_error_name[] = { 0 };
+
 /*
 DOCDD
 INODE
@@ -361,23 +386,23 @@ FUNCTION
 	bfd_is_local_label
 
 SYNOPSIS
-	bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
+	bool bfd_is_local_label (bfd *abfd, asymbol *sym);
 
 DESCRIPTION
 	Return TRUE if the given symbol @var{sym} in the BFD @var{abfd} is
 	a compiler generated local label, else return FALSE.
 */
 
-bfd_boolean
+bool
 bfd_is_local_label (bfd *abfd, asymbol *sym)
 {
   /* The BSF_SECTION_SYM check is needed for IA-64, where every label that
      starts with '.' is local.  This would accidentally catch section names
      if we didn't reject them here.  */
   if ((sym->flags & (BSF_GLOBAL | BSF_WEAK | BSF_FILE | BSF_SECTION_SYM)) != 0)
-    return FALSE;
-  if (sym->name == NULL)
-    return FALSE;
+    return false;
+  if (sym->name == NULL || sym->name == bfd_symbol_error_name)
+    return false;
   return bfd_is_local_label_name (abfd, sym->name);
 }
 
@@ -386,7 +411,7 @@ FUNCTION
 	bfd_is_local_label_name
 
 SYNOPSIS
-	bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
+	bool bfd_is_local_label_name (bfd *abfd, const char *name);
 
 DESCRIPTION
 	Return TRUE if a symbol with the name @var{name} in the BFD
@@ -404,7 +429,7 @@ FUNCTION
 	bfd_is_target_special_symbol
 
 SYNOPSIS
-	bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
+	bool bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
 
 DESCRIPTION
 	Return TRUE iff a symbol @var{sym} in the BFD @var{abfd} is something
@@ -437,7 +462,7 @@ FUNCTION
 	bfd_set_symtab
 
 SYNOPSIS
-	bfd_boolean bfd_set_symtab
+	bool bfd_set_symtab
 	  (bfd *abfd, asymbol **location, unsigned int count);
 
 DESCRIPTION
@@ -446,18 +471,18 @@ DESCRIPTION
 	will be written.
 */
 
-bfd_boolean
+bool
 bfd_set_symtab (bfd *abfd, asymbol **location, unsigned int symcount)
 {
   if (abfd->format != bfd_object || bfd_read_p (abfd))
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   abfd->outsymbols = location;
   abfd->symcount = symcount;
-  return TRUE;
+  return true;
 }
 
 /*
@@ -538,7 +563,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;
@@ -551,11 +576,10 @@ FUNCTION
 
 DESCRIPTION
 	Create a new <<asymbol>> structure for the BFD @var{abfd},
-	to be used as a debugging symbol.  Further details of its use have
-	yet to be worked out.
+	to be used as a debugging symbol.
 
-.#define bfd_make_debug_symbol(abfd,ptr,size) \
-.	BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
+.#define bfd_make_debug_symbol(abfd) \
+.	BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd))
 .
 */
 
@@ -565,30 +589,16 @@ 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) */
+  {".didat", 'i'},		/* MSVC's .didat (delay import) section */
   {".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 +606,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 +628,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
@@ -655,20 +664,29 @@ decode_section_type (const struct bfd_se
 FUNCTION
 	bfd_decode_symclass
 
+SYNOPSIS
+	int bfd_decode_symclass (asymbol *symbol);
+
 DESCRIPTION
 	Return a character corresponding to the symbol
 	class of @var{symbol}, or '?' for an unknown class.
-
-SYNOPSIS
-	int bfd_decode_symclass (asymbol *symbol);
 */
 int
 bfd_decode_symclass (asymbol *symbol)
 {
   char c;
 
+  /* Paranoia...  */
+  if (symbol == NULL || symbol->section == NULL)
+    return '?';
+
   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 +723,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 '?';
@@ -729,16 +747,16 @@ bfd_decode_symclass (asymbol *symbol)
 FUNCTION
 	bfd_is_undefined_symclass
 
+SYNOPSIS
+	bool bfd_is_undefined_symclass (int symclass);
+
 DESCRIPTION
 	Returns non-zero if the class symbol returned by
 	bfd_decode_symclass represents an undefined symbol.
 	Returns zero otherwise.
-
-SYNOPSIS
-	bfd_boolean bfd_is_undefined_symclass (int symclass);
 */
 
-bfd_boolean
+bool
 bfd_is_undefined_symclass (int symclass)
 {
   return symclass == 'U' || symclass == 'w' || symclass == 'v';
@@ -748,13 +766,13 @@ bfd_is_undefined_symclass (int symclass)
 FUNCTION
 	bfd_symbol_info
 
+SYNOPSIS
+	void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+
 DESCRIPTION
 	Fill in the basic info about symbol that nm needs.
 	Additional info may be added by the back-ends after
 	calling this function.
-
-SYNOPSIS
-	void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
 */
 
 void
@@ -767,7 +785,8 @@ bfd_symbol_info (asymbol *symbol, symbol
   else
     ret->value = symbol->value + symbol->section->vma;
 
-  ret->name = symbol->name;
+  ret->name = (symbol->name != bfd_symbol_error_name
+	       ? symbol->name : _("<corrupt>"));
 }
 
 /*
@@ -775,7 +794,7 @@ FUNCTION
 	bfd_copy_private_symbol_data
 
 SYNOPSIS
-	bfd_boolean bfd_copy_private_symbol_data
+	bool bfd_copy_private_symbol_data
 	  (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
 
 DESCRIPTION
@@ -799,7 +818,7 @@ DESCRIPTION
 
 long
 _bfd_generic_read_minisymbols (bfd *abfd,
-			       bfd_boolean dynamic,
+			       bool dynamic,
 			       void **minisymsp,
 			       unsigned int *sizep)
 {
@@ -841,8 +860,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;
 }
 
@@ -852,7 +870,7 @@ _bfd_generic_read_minisymbols (bfd *abfd
 
 asymbol *
 _bfd_generic_minisymbol_to_symbol (bfd *abfd ATTRIBUTE_UNUSED,
-				   bfd_boolean dynamic ATTRIBUTE_UNUSED,
+				   bool dynamic ATTRIBUTE_UNUSED,
 				   const void *minisym,
 				   asymbol *sym ATTRIBUTE_UNUSED)
 {
@@ -932,12 +950,12 @@ struct stab_find_info
   char *filename;
 };
 
-bfd_boolean
+bool
 _bfd_stab_section_find_nearest_line (bfd *abfd,
 				     asymbol **symbols,
 				     asection *section,
 				     bfd_vma offset,
-				     bfd_boolean *pfound,
+				     bool *pfound,
 				     const char **pfilename,
 				     const char **pfnname,
 				     unsigned int *pline,
@@ -951,9 +969,9 @@ _bfd_stab_section_find_nearest_line (bfd
   struct indexentry *indexentry;
   char *file_name;
   char *directory_name;
-  bfd_boolean saw_line, saw_func;
+  bool saw_line, saw_func;
 
-  *pfound = FALSE;
+  *pfound = false;
   *pfilename = bfd_get_filename (abfd);
   *pfnname = NULL;
   *pline = 0;
@@ -983,8 +1001,8 @@ _bfd_stab_section_find_nearest_line (bfd
     {
       if (info->stabsec == NULL || info->strsec == NULL)
 	{
-	  /* No stabs debugging information.  */
-	  return TRUE;
+	  /* No usable stabs debugging information.  */
+	  return true;
 	}
 
       stabsize = (info->stabsec->rawsize
@@ -1004,7 +1022,8 @@ _bfd_stab_section_find_nearest_line (bfd
 
       info = (struct stab_find_info *) bfd_zalloc (abfd, amt);
       if (info == NULL)
-	return FALSE;
+	return false;
+      *pinfo = info;
 
       /* FIXME: When using the linker --split-by-file or
 	 --split-by-reloc options, it is possible for the .stab and
@@ -1020,14 +1039,13 @@ _bfd_stab_section_find_nearest_line (bfd
 	  info->strsec  = bfd_get_section_by_name (abfd, "$GDB_STRINGS$");
 
 	  if (info->stabsec == NULL || info->strsec == NULL)
-	    {
-	      /* No stabs debugging information.  Set *pinfo so that we
-		 can return quickly in the info != NULL case above.  */
-	      *pinfo = info;
-	      return TRUE;
-	    }
+	    return true;
 	}
 
+      if ((info->stabsec->flags & SEC_HAS_CONTENTS) == 0
+	  || (info->strsec->flags & SEC_HAS_CONTENTS) == 0)
+	goto out;
+
       stabsize = (info->stabsec->rawsize
 		  ? info->stabsec->rawsize
 		  : info->stabsec->size);
@@ -1036,16 +1054,13 @@ _bfd_stab_section_find_nearest_line (bfd
 		 ? info->strsec->rawsize
 		 : info->strsec->size);
 
-      info->stabs = (bfd_byte *) bfd_alloc (abfd, stabsize);
-      info->strs = (bfd_byte *) bfd_alloc (abfd, strsize);
-      if (info->stabs == NULL || info->strs == NULL)
-	return FALSE;
-
-      if (! bfd_get_section_contents (abfd, info->stabsec, info->stabs,
-				      0, stabsize)
-	  || ! bfd_get_section_contents (abfd, info->strsec, info->strs,
-					 0, strsize))
-	return FALSE;
+      if (stabsize == 0 || strsize == 0)
+	goto out;
+
+      if (!bfd_malloc_and_get_section (abfd, info->stabsec, &info->stabs))
+	goto out;
+      if (!bfd_malloc_and_get_section (abfd, info->strsec, &info->strs))
+	goto out1;
 
       /* Stab strings ought to be nul terminated.  Ensure the last one
 	 is, to prevent running off the end of the buffer.  */
@@ -1057,17 +1072,25 @@ _bfd_stab_section_find_nearest_line (bfd
 	 this should be no big deal.  */
       reloc_size = bfd_get_reloc_upper_bound (abfd, info->stabsec);
       if (reloc_size < 0)
-	return FALSE;
+	goto out2;
       reloc_vector = (arelent **) bfd_malloc (reloc_size);
       if (reloc_vector == NULL && reloc_size != 0)
-	return FALSE;
+	goto out2;
       reloc_count = bfd_canonicalize_reloc (abfd, info->stabsec, reloc_vector,
 					    symbols);
       if (reloc_count < 0)
 	{
-	  if (reloc_vector != NULL)
-	    free (reloc_vector);
-	  return FALSE;
+	out3:
+	  free (reloc_vector);
+	out2:
+	  free (info->strs);
+	  info->strs = NULL;
+	out1:
+	  free (info->stabs);
+	  info->stabs = NULL;
+	out:
+	  info->stabsec = NULL;
+	  return false;
 	}
       if (reloc_count > 0)
 	{
@@ -1087,19 +1110,17 @@ _bfd_stab_section_find_nearest_line (bfd
 
 	      octets = r->address * bfd_octets_per_byte (abfd, NULL);
 	      if (r->howto->rightshift != 0
-		  || r->howto->size != 2
+		  || bfd_get_reloc_size (r->howto) != 4
 		  || r->howto->bitsize != 32
 		  || r->howto->pc_relative
 		  || r->howto->bitpos != 0
 		  || r->howto->dst_mask != 0xffffffff
-		  || octets + 4 > stabsize)
+		  || octets > stabsize - 4)
 		{
 		  _bfd_error_handler
 		    (_("unsupported .stab relocation"));
 		  bfd_set_error (bfd_error_invalid_operation);
-		  if (reloc_vector != NULL)
-		    free (reloc_vector);
-		  return FALSE;
+		  goto out3;
 		}
 
 	      val = bfd_get_32 (abfd, info->stabs + octets);
@@ -1110,8 +1131,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
@@ -1154,14 +1174,21 @@ _bfd_stab_section_find_nearest_line (bfd
 	++info->indextablesize;
 
       if (info->indextablesize == 0)
-	return TRUE;
+	{
+	  free (info->strs);
+	  info->strs = NULL;
+	  free (info->stabs);
+	  info->stabs = NULL;
+	  info->stabsec = NULL;
+	  return true;
+	}
       ++info->indextablesize;
 
       amt = info->indextablesize;
       amt *= sizeof (struct indexentry);
-      info->indextable = (struct indexentry *) bfd_alloc (abfd, amt);
+      info->indextable = (struct indexentry *) bfd_malloc (amt);
       if (info->indextable == NULL)
-	return FALSE;
+	goto out3;
 
       file_name = NULL;
       directory_name = NULL;
@@ -1288,8 +1315,6 @@ _bfd_stab_section_find_nearest_line (bfd
       info->indextablesize = i;
       qsort (info->indextable, (size_t) i, sizeof (struct indexentry),
 	     cmpindexentry);
-
-      *pinfo = info;
     }
 
   /* We are passed a section relative offset.  The offsets in the
@@ -1334,7 +1359,7 @@ _bfd_stab_section_find_nearest_line (bfd
 	}
 
       if (indexentry == NULL)
-	return TRUE;
+	return true;
 
       stab = indexentry->stab + STABSIZE;
       file_name = indexentry->file_name;
@@ -1343,14 +1368,14 @@ _bfd_stab_section_find_nearest_line (bfd
   directory_name = indexentry->directory_name;
   str = indexentry->str;
 
-  saw_line = FALSE;
-  saw_func = FALSE;
+  saw_line = false;
+  saw_func = false;
   for (; stab < (indexentry+1)->stab; stab += STABSIZE)
     {
-      bfd_boolean done;
+      bool done;
       bfd_vma val;
 
-      done = FALSE;
+      done = false;
 
       switch (stab[TYPEOFF])
 	{
@@ -1391,15 +1416,15 @@ _bfd_stab_section_find_nearest_line (bfd
 #endif
 	    }
 	  if (val > offset)
-	    done = TRUE;
-	  saw_line = TRUE;
+	    done = true;
+	  saw_line = true;
 	  break;
 
 	case N_FUN:
 	case N_SO:
 	  if (saw_func || saw_line)
-	    done = TRUE;
-	  saw_func = TRUE;
+	    done = true;
+	  saw_func = true;
 	  break;
 	}
 
@@ -1407,7 +1432,7 @@ _bfd_stab_section_find_nearest_line (bfd
 	break;
     }
 
-  *pfound = TRUE;
+  *pfound = true;
 
   if (file_name == NULL || IS_ABSOLUTE_PATH (file_name)
       || directory_name == NULL)
@@ -1429,7 +1454,7 @@ _bfd_stab_section_find_nearest_line (bfd
 	  len = strlen (file_name) + 1;
 	  info->filename = (char *) bfd_alloc (abfd, dirlen + len);
 	  if (info->filename == NULL)
-	    return FALSE;
+	    return false;
 	  memcpy (info->filename, directory_name, dirlen);
 	  memcpy (info->filename + dirlen, file_name, len);
 	}
@@ -1451,7 +1476,19 @@ _bfd_stab_section_find_nearest_line (bfd
       *pfnname = indexentry->function_name;
     }
 
-  return TRUE;
+  return true;
+}
+
+void
+_bfd_stab_cleanup (bfd *abfd ATTRIBUTE_UNUSED, void **pinfo)
+{
+  struct stab_find_info *info = (struct stab_find_info *) *pinfo;
+  if (info == NULL)
+    return;
+
+  free (info->indextable);
+  free (info->strs);
+  free (info->stabs);
 }
 
 long
@@ -1479,16 +1516,17 @@ _bfd_nosymbols_get_symbol_info (bfd *abf
 const char *
 _bfd_nosymbols_get_symbol_version_string (bfd *abfd,
 					  asymbol *symbol ATTRIBUTE_UNUSED,
-					  bfd_boolean *hidden ATTRIBUTE_UNUSED)
+					  bool base_p ATTRIBUTE_UNUSED,
+					  bool *hidden ATTRIBUTE_UNUSED)
 {
   return (const char *) _bfd_ptr_bfd_null_error (abfd);
 }
 
-bfd_boolean
+bool
 _bfd_nosymbols_bfd_is_local_label_name (bfd *abfd ATTRIBUTE_UNUSED,
 					const char *name ATTRIBUTE_UNUSED)
 {
-  return FALSE;
+  return false;
 }
 
 alent *
@@ -1497,7 +1535,7 @@ _bfd_nosymbols_get_lineno (bfd *abfd, as
   return (alent *) _bfd_ptr_bfd_null_error (abfd);
 }
 
-bfd_boolean
+bool
 _bfd_nosymbols_find_nearest_line
     (bfd *abfd,
      asymbol **symbols ATTRIBUTE_UNUSED,
@@ -1511,7 +1549,22 @@ _bfd_nosymbols_find_nearest_line
   return _bfd_bool_bfd_false_error (abfd);
 }
 
-bfd_boolean
+bool
+_bfd_nosymbols_find_nearest_line_with_alt
+    (bfd *abfd,
+     const char *alt_filename ATTRIBUTE_UNUSED,
+     asymbol **symbols ATTRIBUTE_UNUSED,
+     asection *section ATTRIBUTE_UNUSED,
+     bfd_vma offset ATTRIBUTE_UNUSED,
+     const char **filename_ptr ATTRIBUTE_UNUSED,
+     const char **functionname_ptr ATTRIBUTE_UNUSED,
+     unsigned int *line_ptr ATTRIBUTE_UNUSED,
+     unsigned int *discriminator_ptr ATTRIBUTE_UNUSED)
+{
+  return _bfd_bool_bfd_false_error (abfd);
+}
+
+bool
 _bfd_nosymbols_find_line (bfd *abfd,
 			  asymbol **symbols ATTRIBUTE_UNUSED,
 			  asymbol *symbol ATTRIBUTE_UNUSED,
@@ -1521,7 +1574,7 @@ _bfd_nosymbols_find_line (bfd *abfd,
   return _bfd_bool_bfd_false_error (abfd);
 }
 
-bfd_boolean
+bool
 _bfd_nosymbols_find_inliner_info
     (bfd *abfd,
      const char **filename_ptr ATTRIBUTE_UNUSED,
@@ -1532,16 +1585,14 @@ _bfd_nosymbols_find_inliner_info
 }
 
 asymbol *
-_bfd_nosymbols_bfd_make_debug_symbol (bfd *abfd,
-				      void *ptr ATTRIBUTE_UNUSED,
-				      unsigned long sz ATTRIBUTE_UNUSED)
+_bfd_nosymbols_bfd_make_debug_symbol (bfd *abfd)
 {
   return (asymbol *) _bfd_ptr_bfd_null_error (abfd);
 }
 
 long
 _bfd_nosymbols_read_minisymbols (bfd *abfd,
-				 bfd_boolean dynamic ATTRIBUTE_UNUSED,
+				 bool dynamic ATTRIBUTE_UNUSED,
 				 void **minisymsp ATTRIBUTE_UNUSED,
 				 unsigned int *sizep ATTRIBUTE_UNUSED)
 {
@@ -1550,7 +1601,7 @@ _bfd_nosymbols_read_minisymbols (bfd *ab
 
 asymbol *
 _bfd_nosymbols_minisymbol_to_symbol (bfd *abfd,
-				     bfd_boolean dynamic ATTRIBUTE_UNUSED,
+				     bool dynamic ATTRIBUTE_UNUSED,
 				     const void *minisym ATTRIBUTE_UNUSED,
 				     asymbol *sym 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.20200303/bfd/sysdep.h ./bfd/sysdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/sysdep.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/sysdep.h	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -27,54 +27,23 @@
 #endif
 
 #include "config.h"
-
-#ifdef HAVE_STDDEF_H
-#include <stddef.h>
-#endif
-
 #include <stdio.h>
-#include <sys/types.h>
-
-#include <errno.h>
-#if !(defined(errno) || defined(_MSC_VER) && defined(_INC_ERRNO))
-extern int errno;
-#endif
 
-#ifdef STRING_WITH_STRINGS
-#include <string.h>
-#include <strings.h>
-#else
-#ifdef HAVE_STRING_H
-#include <string.h>
-#else
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#else
-extern char *strchr ();
-extern char *strrchr ();
-#endif
-#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
 #endif
 
-#ifdef HAVE_STDLIB_H
 #include <stdlib.h>
-#endif
-
-#ifdef TIME_WITH_SYS_TIME
-#include <sys/time.h>
-#include <time.h>
-#else
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#else
-#include <time.h>
-#endif
-#endif
+#include <stddef.h>
+#include <string.h>
 
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
 
+#include <errno.h>
+#include <time.h>
+
 #ifdef HAVE_SYS_RESOURCE_H
 #include <sys/resource.h>
 #endif /* HAVE_SYS_RESOURCE_H */
@@ -117,36 +86,32 @@ extern char *strrchr ();
 #define SEEK_CUR 1
 #endif
 
-#include "filenames.h"
-
-#if !HAVE_DECL_FFS
-extern int ffs (int);
+#ifdef HAVE_MMAP
+#include <sys/mman.h>
 #endif
 
-#if !HAVE_DECL_FREE
-extern void free ();
+#ifndef MAP_FILE
+#define MAP_FILE 0
 #endif
 
-#if !HAVE_DECL_GETENV
-extern char *getenv ();
+#ifndef MAP_FAILED
+#define MAP_FAILED ((void *) -1)
 #endif
 
-#if !HAVE_DECL_MALLOC
-extern PTR malloc ();
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS  MAP_ANON
 #endif
 
-#if !HAVE_DECL_REALLOC
-extern PTR realloc ();
+#include "filenames.h"
+
+#if !HAVE_DECL_FFS
+extern int ffs (int);
 #endif
 
 #if !HAVE_DECL_STPCPY
 extern char *stpcpy (char *__dest, const char *__src);
 #endif
 
-#if !HAVE_DECL_STRSTR
-extern char *strstr ();
-#endif
-
 #ifdef HAVE_FTELLO
 #if !HAVE_DECL_FTELLO
 extern off_t ftello (FILE *stream);
@@ -171,23 +136,30 @@ extern int fseeko64 (FILE *stream, off64
 #endif
 #endif
 
-#if !HAVE_DECL_STRNLEN
-size_t strnlen (const char *, size_t);
-#endif
-
 /* Define offsetof for those systems which lack it */
 
 #ifndef offsetof
 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #endif
 
+#ifndef ENABLE_NLS
+  /* The Solaris version of locale.h always includes libintl.h.  If we have
+     been configured with --disable-nls then ENABLE_NLS will not be defined
+     and the dummy definitions of bindtextdomain (et al) below will conflict
+     with the defintions in libintl.h.  So we define these values to prevent
+     the bogus inclusion of libintl.h.  */
+# define _LIBINTL_H
+# define _LIBGETTEXT_H
+#endif
+#include <locale.h>
+
 #ifdef ENABLE_NLS
 # include <libintl.h>
 /* Note the redefinition of gettext and ngettext here to use PACKAGE.
 
    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.
@@ -223,4 +195,14 @@ size_t strnlen (const char *, size_t);
 # define N_(String) (String)
 #endif
 
+#ifndef HAVE_GETUID
+#define getuid() 0
+#endif
+
+#ifndef HAVE_GETGID
+#define getgid() 0
+#endif
+
+#define POISON_BFD_BOOLEAN 1
+
 #endif /* ! defined (BFD_SYSDEP_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.20200303/bfd/targets.c ./bfd/targets.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/targets.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/targets.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -20,6 +20,7 @@
    MA 02110-1301, USA.  */
 
 #include "sysdep.h"
+#include "libiberty.h"
 #include "bfd.h"
 #include "libbfd.h"
 #include "fnmatch.h"
@@ -133,6 +134,11 @@ DESCRIPTION
 .   (bfd_assert (__FILE__,__LINE__), NULL))
 .#endif
 .
+.{* Defined to TRUE if unused section symbol should be kept.  *}
+.#ifndef TARGET_KEEP_UNUSED_SECTION_SYMBOLS
+.#define TARGET_KEEP_UNUSED_SECTION_SYMBOLS true
+.#endif
+.
 	This is the structure which defines the type of BFD this is.  The
 	<<xvec>> member of the struct <<bfd>> itself points here.  Each
 	module that implements access to a different target under BFD,
@@ -142,6 +148,7 @@ DESCRIPTION
 	the entry points which call them. Too bad we can't have one
 	macro to define them both!
 
+EXTERNAL
 .enum bfd_flavour
 .{
 .  {* N.B. Update bfd_flavour_name if you change this.  *}
@@ -156,10 +163,7 @@ DESCRIPTION
 .  bfd_target_verilog_flavour,
 .  bfd_target_ihex_flavour,
 .  bfd_target_som_flavour,
-.  bfd_target_os9k_flavour,
-.  bfd_target_versados_flavour,
 .  bfd_target_msdos_flavour,
-.  bfd_target_ovax_flavour,
 .  bfd_target_evax_flavour,
 .  bfd_target_mmo_flavour,
 .  bfd_target_mach_o_flavour,
@@ -170,12 +174,12 @@ DESCRIPTION
 .
 .enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
 .
-.{* Forward declaration.  *}
-.typedef struct bfd_link_info _bfd_link_info;
-.
-.{* Forward declaration.  *}
-.typedef struct flag_info flag_info;
+.{* Forward declarations.  *}
+.struct flag_info;
+.typedef void (*bfd_cleanup) (bfd *);
 .
+
+CODE_FRAGMENT
 .typedef struct bfd_target
 .{
 .  {* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  *}
@@ -213,12 +217,15 @@ DESCRIPTION
 .     possible targets when more than one target matches.  *}
 .  unsigned char match_priority;
 .
+. {* TRUE if unused section symbols should be kept.  *}
+.  bool keep_unused_section_symbols;
+.
 .  {* Entries for byte swapping for data. These are different from the
 .     other entry points, since they don't take a BFD as the first argument.
 .     Certain other handlers could do the same.  *}
-.  bfd_uint64_t	  (*bfd_getx64) (const void *);
-.  bfd_int64_t	  (*bfd_getx_signed_64) (const void *);
-.  void		  (*bfd_putx64) (bfd_uint64_t, void *);
+.  uint64_t	  (*bfd_getx64) (const void *);
+.  int64_t	  (*bfd_getx_signed_64) (const void *);
+.  void		  (*bfd_putx64) (uint64_t, void *);
 .  bfd_vma	  (*bfd_getx32) (const void *);
 .  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
 .  void		  (*bfd_putx32) (bfd_vma, void *);
@@ -227,9 +234,9 @@ DESCRIPTION
 .  void		  (*bfd_putx16) (bfd_vma, void *);
 .
 .  {* Byte swapping for the headers.  *}
-.  bfd_uint64_t	  (*bfd_h_getx64) (const void *);
-.  bfd_int64_t	  (*bfd_h_getx_signed_64) (const void *);
-.  void		  (*bfd_h_putx64) (bfd_uint64_t, void *);
+.  uint64_t	  (*bfd_h_getx64) (const void *);
+.  int64_t	  (*bfd_h_getx_signed_64) (const void *);
+.  void		  (*bfd_h_putx64) (uint64_t, void *);
 .  bfd_vma	  (*bfd_h_getx32) (const void *);
 .  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
 .  void		  (*bfd_h_putx32) (bfd_vma, void *);
@@ -240,45 +247,41 @@ 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 *);
+.  bool (*_bfd_set_format[bfd_type_end]) (bfd *);
 .
 .  {* Write cached information into a file being written, at <<bfd_close>>.  *}
-.  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
+.  bool (*_bfd_write_contents[bfd_type_end]) (bfd *);
 .
+
 The general target vector.  These vectors are initialized using the
 BFD_JUMP_TABLE macros.
-.
+
 .  {* Generic entry points.  *}
 .#define BFD_JUMP_TABLE_GENERIC(NAME) \
 .  NAME##_close_and_cleanup, \
 .  NAME##_bfd_free_cached_info, \
 .  NAME##_new_section_hook, \
-.  NAME##_get_section_contents, \
-.  NAME##_get_section_contents_in_window
+.  NAME##_get_section_contents
 .
 .  {* Called when the BFD is being closed to do any necessary cleanup.  *}
-.  bfd_boolean (*_close_and_cleanup) (bfd *);
+.  bool (*_close_and_cleanup) (bfd *);
 .  {* Ask the BFD to free all cached information.  *}
-.  bfd_boolean (*_bfd_free_cached_info) (bfd *);
+.  bool (*_bfd_free_cached_info) (bfd *);
 .  {* Called when a new section is created.  *}
-.  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
+.  bool (*_new_section_hook) (bfd *, sec_ptr);
 .  {* Read the contents of a section.  *}
-.  bfd_boolean (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
-.					     bfd_size_type);
-.  bfd_boolean (*_bfd_get_section_contents_in_window) (bfd *, sec_ptr,
-.						       bfd_window *, file_ptr,
-.						       bfd_size_type);
+.  bool (*_bfd_get_section_contents) (bfd *, sec_ptr, void *, file_ptr,
+.				      bfd_size_type);
 .
 .  {* Entry points to copy private data.  *}
 .#define BFD_JUMP_TABLE_COPY(NAME) \
 .  NAME##_bfd_copy_private_bfd_data, \
 .  NAME##_bfd_merge_private_bfd_data, \
-.  _bfd_generic_init_private_section_data, \
 .  NAME##_bfd_copy_private_section_data, \
 .  NAME##_bfd_copy_private_symbol_data, \
 .  NAME##_bfd_copy_private_header_data, \
@@ -287,34 +290,26 @@ BFD_JUMP_TABLE macros.
 .
 .  {* Called to copy BFD general private data from one object file
 .     to another.  *}
-.  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
+.  bool (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
 .  {* Called to merge BFD general private data from one object file
 .     to a common output file when linking.  *}
-.  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
-.  {* Called to initialize BFD private section data from one object file
-.     to another.  *}
-.#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
-.	BFD_SEND (obfd, _bfd_init_private_section_data, \
-.		  (ibfd, isec, obfd, osec, link_info))
-.  bfd_boolean (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *,
-.						  sec_ptr,
-.						  struct bfd_link_info *);
+.  bool (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *);
 .  {* Called to copy BFD private section data from one object file
 .     to another.  *}
-.  bfd_boolean (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *,
-.						  sec_ptr);
+.  bool (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr,
+.					   struct bfd_link_info *);
 .  {* Called to copy BFD private symbol data from one symbol
 .     to another.  *}
-.  bfd_boolean (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, bfd *,
-.						 asymbol *);
+.  bool (*_bfd_copy_private_symbol_data) (bfd *, asymbol *,
+.					  bfd *, asymbol *);
 .  {* Called to copy BFD private header data from one object file
 .     to another.  *}
-.  bfd_boolean (*_bfd_copy_private_header_data) (bfd *, bfd *);
+.  bool (*_bfd_copy_private_header_data) (bfd *, bfd *);
 .  {* Called to set private backend flags.  *}
-.  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
+.  bool (*_bfd_set_private_flags) (bfd *, flagword);
 .
 .  {* Called to print private BFD data.  *}
-.  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
+.  bool (*_bfd_print_private_bfd_data) (bfd *, void *);
 .
 .  {* Core file entry points.  *}
 .#define BFD_JUMP_TABLE_CORE(NAME) \
@@ -323,10 +318,10 @@ BFD_JUMP_TABLE macros.
 .  NAME##_core_file_matches_executable_p, \
 .  NAME##_core_file_pid
 .
-.  char *      (*_core_file_failing_command) (bfd *);
-.  int	       (*_core_file_failing_signal) (bfd *);
-.  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
-.  int	       (*_core_file_pid) (bfd *);
+.  char *(*_core_file_failing_command) (bfd *);
+.  int   (*_core_file_failing_signal) (bfd *);
+.  bool  (*_core_file_matches_executable_p) (bfd *, bfd *);
+.  int   (*_core_file_pid) (bfd *);
 .
 .  {* Archive entry points.  *}
 .#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
@@ -342,22 +337,21 @@ BFD_JUMP_TABLE macros.
 .  NAME##_generic_stat_arch_elt, \
 .  NAME##_update_armap_timestamp
 .
-.  bfd_boolean (*_bfd_slurp_armap) (bfd *);
-.  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
-.  bfd_boolean (*_bfd_construct_extended_name_table) (bfd *, char **,
-.						      bfd_size_type *,
-.						      const char **);
-.  void	       (*_bfd_truncate_arname) (bfd *, const char *, char *);
-.  bfd_boolean (*write_armap) (bfd *, unsigned int, struct orl *,
-.			       unsigned int, int);
-.  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
-.  bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
-.  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
+.  bool (*_bfd_slurp_armap) (bfd *);
+.  bool (*_bfd_slurp_extended_name_table) (bfd *);
+.  bool (*_bfd_construct_extended_name_table) (bfd *, char **,
+.					       bfd_size_type *,
+.					       const char **);
+.  void (*_bfd_truncate_arname) (bfd *, const char *, char *);
+.  bool (*write_armap) (bfd *, unsigned, struct orl *, unsigned, int);
+.  void *(*_bfd_read_ar_hdr_fn) (bfd *);
+.  bool (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
+.  bfd *(*openr_next_archived_file) (bfd *, bfd *);
 .#define bfd_get_elt_at_index(b,i) \
 .	BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
-.  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
-.  int	       (*_bfd_stat_arch_elt) (bfd *, struct stat *);
-.  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
+.  bfd *(*_bfd_get_elt_at_index) (bfd *, symindex);
+.  int  (*_bfd_stat_arch_elt) (bfd *, struct stat *);
+.  bool (*_bfd_update_armap_timestamp) (bfd *);
 .
 .  {* Entry points used for symbols.  *}
 .#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
@@ -371,52 +365,59 @@ BFD_JUMP_TABLE macros.
 .  NAME##_bfd_is_target_special_symbol, \
 .  NAME##_get_lineno, \
 .  NAME##_find_nearest_line, \
+.  NAME##_find_nearest_line_with_alt, \
 .  NAME##_find_line, \
 .  NAME##_find_inliner_info, \
 .  NAME##_bfd_make_debug_symbol, \
 .  NAME##_read_minisymbols, \
 .  NAME##_minisymbol_to_symbol
 .
-.  long	       (*_bfd_get_symtab_upper_bound) (bfd *);
-.  long	       (*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
+.  long	(*_bfd_get_symtab_upper_bound) (bfd *);
+.  long	(*_bfd_canonicalize_symtab) (bfd *, struct bfd_symbol **);
 .  struct bfd_symbol *
-.	       (*_bfd_make_empty_symbol) (bfd *);
-.  void	       (*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
-.				     bfd_print_symbol_type);
+.	(*_bfd_make_empty_symbol) (bfd *);
+.  void	(*_bfd_print_symbol) (bfd *, void *, struct bfd_symbol *,
+.			      bfd_print_symbol_type);
 .#define bfd_print_symbol(b,p,s,e) \
 .	BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
-.  void	       (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *,
-.					symbol_info *);
+.  void	 (*_bfd_get_symbol_info) (bfd *, struct bfd_symbol *, symbol_info *);
 .#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 *);
-.#define bfd_get_symbol_version_string(b,s,h) \
-.	BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,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 *);
-.  bfd_boolean (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
-.					  struct bfd_section *, bfd_vma,
-.					  const char **, const char **,
-.					  unsigned int *, unsigned int *);
-.  bfd_boolean (*_bfd_find_line) (bfd *, struct bfd_symbol **,
-.				  struct bfd_symbol *, const char **,
-.				  unsigned int *);
-.  bfd_boolean (*_bfd_find_inliner_info)
+.  const char *
+.	(*_bfd_get_symbol_version_string) (bfd *, struct bfd_symbol *,
+.					   bool, bool *);
+.#define bfd_get_symbol_version_string(b,s,p,h) \
+.	BFD_SEND (b, _bfd_get_symbol_version_string, (b,s,p,h))
+.  bool (*_bfd_is_local_label_name) (bfd *, const char *);
+.  bool (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
+.  alent *
+.	(*_get_lineno) (bfd *, struct bfd_symbol *);
+.  bool (*_bfd_find_nearest_line) (bfd *, struct bfd_symbol **,
+.				   struct bfd_section *, bfd_vma,
+.				   const char **, const char **,
+.				   unsigned int *, unsigned int *);
+.  bool (*_bfd_find_nearest_line_with_alt) (bfd *, const char *,
+.					    struct bfd_symbol **,
+.					    struct bfd_section *, bfd_vma,
+.					    const char **, const char **,
+.					    unsigned int *, unsigned int *);
+.  bool (*_bfd_find_line) (bfd *, struct bfd_symbol **,
+.			   struct bfd_symbol *, const char **,
+.			   unsigned int *);
+.  bool (*_bfd_find_inliner_info)
 .    (bfd *, const char **, const char **, unsigned int *);
 . {* Back-door to allow format-aware applications to create debug symbols
 .    while using BFD for everything else.  Currently used by the assembler
 .    when creating COFF files.  *}
-.  asymbol *   (*_bfd_make_debug_symbol) (bfd *, void *, unsigned long size);
+.  asymbol *
+.	(*_bfd_make_debug_symbol) (bfd *);
 .#define bfd_read_minisymbols(b, d, m, s) \
 .	BFD_SEND (b, _read_minisymbols, (b, d, m, s))
-.  long	       (*_read_minisymbols) (bfd *, bfd_boolean, void **,
-.				     unsigned int *);
+.  long	(*_read_minisymbols) (bfd *, bool, void **, unsigned int *);
 .#define bfd_minisymbol_to_symbol(b, d, m, f) \
 .	BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
-.  asymbol *   (*_minisymbol_to_symbol) (bfd *, bfd_boolean, const void *,
-.					 asymbol *);
+.  asymbol *
+.       (*_minisymbol_to_symbol) (bfd *, bool, const void *, asymbol *);
 .
 .  {* Routines for relocs.  *}
 .#define BFD_JUMP_TABLE_RELOCS(NAME) \
@@ -426,25 +427,25 @@ BFD_JUMP_TABLE macros.
 .  NAME##_bfd_reloc_type_lookup, \
 .  NAME##_bfd_reloc_name_lookup
 .
-.  long	       (*_get_reloc_upper_bound) (bfd *, sec_ptr);
-.  long	       (*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
-.					   struct bfd_symbol **);
-.  void	       (*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
+.  long	(*_get_reloc_upper_bound) (bfd *, sec_ptr);
+.  long	(*_bfd_canonicalize_reloc) (bfd *, sec_ptr, arelent **,
+.				    struct bfd_symbol **);
+.  void	(*_bfd_set_reloc) (bfd *, sec_ptr, arelent **, unsigned int);
 .  {* See documentation on reloc types.  *}
 .  reloc_howto_type *
-.	       (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
+.	(*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
 .  reloc_howto_type *
-.	       (*reloc_name_lookup) (bfd *, const char *);
+.	(*reloc_name_lookup) (bfd *, const char *);
 .
 .  {* Routines used when writing an object file.  *}
 .#define BFD_JUMP_TABLE_WRITE(NAME) \
 .  NAME##_set_arch_mach, \
 .  NAME##_set_section_contents
 .
-.  bfd_boolean (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
+.  bool (*_bfd_set_arch_mach) (bfd *, enum bfd_architecture,
 .				      unsigned long);
-.  bfd_boolean (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
-.					     file_ptr, bfd_size_type);
+.  bool (*_bfd_set_section_contents) (bfd *, sec_ptr, const void *,
+.				      file_ptr, bfd_size_type);
 .
 .  {* Routines used by the linker.  *}
 .#define BFD_JUMP_TABLE_LINK(NAME) \
@@ -469,72 +470,73 @@ BFD_JUMP_TABLE macros.
 .  NAME##_bfd_link_hide_symbol, \
 .  NAME##_bfd_define_start_stop
 .
-.  int	       (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
-.  bfd_byte *  (*_bfd_get_relocated_section_contents) (bfd *,
-.						       struct bfd_link_info *,
-.						       struct bfd_link_order *,
-.						       bfd_byte *, bfd_boolean,
-.						       struct bfd_symbol **);
+.  int	(*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
+.  bfd_byte *
+.	(*_bfd_get_relocated_section_contents) (bfd *,
+.					        struct bfd_link_info *,
+.					        struct bfd_link_order *,
+.					        bfd_byte *, bool,
+.					        struct bfd_symbol **);
 .
-.  bfd_boolean (*_bfd_relax_section) (bfd *, struct bfd_section *,
-.				      struct bfd_link_info *, bfd_boolean *);
+.  bool (*_bfd_relax_section) (bfd *, struct bfd_section *,
+.			       struct bfd_link_info *, bool *);
 .
 .  {* Create a hash table for the linker.  Different backends store
 .     different information in this table.  *}
 .  struct bfd_link_hash_table *
-.	       (*_bfd_link_hash_table_create) (bfd *);
+.	(*_bfd_link_hash_table_create) (bfd *);
 .
 .  {* Add symbols from this object file into the hash table.  *}
-.  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
+.  bool (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
 .
 .  {* Indicate that we are only retrieving symbol values from this section.  *}
-.  void	       (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
+.  void (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
 .
 .  {* Copy the symbol type and other attributes for a linker script
 .     assignment of one symbol to another.  *}
 .#define bfd_copy_link_hash_symbol_type(b, t, f) \
 .	BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
-.  void	       (*_bfd_copy_link_hash_symbol_type) (bfd *,
-.						   struct bfd_link_hash_entry *,
-.						   struct bfd_link_hash_entry *);
+.  void (*_bfd_copy_link_hash_symbol_type) (bfd *,
+.					    struct bfd_link_hash_entry *,
+.					    struct bfd_link_hash_entry *);
 .
 .  {* Do a link based on the link_order structures attached to each
 .     section of the BFD.  *}
-.  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
+.  bool (*_bfd_final_link) (bfd *, struct bfd_link_info *);
 .
 .  {* Should this section be split up into smaller pieces during linking.  *}
-.  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
+.  bool (*_bfd_link_split_section) (bfd *, struct bfd_section *);
 .
 .  {* Check the relocations in the bfd for validity.  *}
-.  bfd_boolean (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
+.  bool (* _bfd_link_check_relocs)(bfd *, struct bfd_link_info *);
 .
 .  {* Remove sections that are not referenced from the output.  *}
-.  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
+.  bool (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
 .
 .  {* Sets the bitmask of allowed and disallowed section flags.  *}
-.  bfd_boolean (*_bfd_lookup_section_flags) (struct bfd_link_info *,
-.					     struct flag_info *, asection *);
+.  bool (*_bfd_lookup_section_flags) (struct bfd_link_info *,
+.				      struct flag_info *, asection *);
 .
 .  {* Attempt to merge SEC_MERGE sections.  *}
-.  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
+.  bool (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
 .
 .  {* Is this section a member of a group?  *}
-.  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
+.  bool (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
 .
 .  {* The group name, if section is a member of a group.  *}
 .  const char *(*_bfd_group_name) (bfd *, const struct bfd_section *);
 .
 .  {* Discard members of a group.  *}
-.  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
+.  bool (*_bfd_discard_group) (bfd *, struct bfd_section *);
 .
 .  {* Check if SEC has been already linked during a reloceatable or
 .     final link.  *}
-.  bfd_boolean (*_section_already_linked) (bfd *, asection *,
-.					   struct bfd_link_info *);
+.  bool (*_section_already_linked) (bfd *, asection *,
+.				    struct bfd_link_info *);
 .
 .  {* Define a common symbol.  *}
-.  bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
-.					     struct bfd_link_hash_entry *);
+.  bool (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
+.				      struct bfd_link_hash_entry *);
 .
 .  {* Hide a symbol.  *}
 .  void (*_bfd_link_hide_symbol) (bfd *, struct bfd_link_info *,
@@ -542,8 +544,8 @@ BFD_JUMP_TABLE macros.
 .
 .  {* Define a __start, __stop, .startof. or .sizeof. symbol.  *}
 .  struct bfd_link_hash_entry *
-.	       (*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
-.					  asection *);
+.	(*_bfd_define_start_stop) (struct bfd_link_info *, const char *,
+.				   asection *);
 .
 .  {* Routines to handle dynamic symbols and relocs.  *}
 .#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
@@ -554,18 +556,18 @@ BFD_JUMP_TABLE macros.
 .  NAME##_canonicalize_dynamic_reloc
 .
 .  {* Get the amount of memory required to hold the dynamic symbols.  *}
-.  long	       (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
+.  long (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
 .  {* Read in the dynamic symbols.  *}
-.  long	       (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
+.  long (*_bfd_canonicalize_dynamic_symtab) (bfd *, struct bfd_symbol **);
 .  {* Create synthetized symbols.  *}
-.  long	       (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
-.					     long, struct bfd_symbol **,
-.					     struct bfd_symbol **);
+.  long (*_bfd_get_synthetic_symtab) (bfd *, long, struct bfd_symbol **,
+.				      long, struct bfd_symbol **,
+.				      struct bfd_symbol **);
 .  {* Get the amount of memory required to hold the dynamic relocs.  *}
-.  long	       (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
+.  long (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
 .  {* Read in the dynamic relocs.  *}
-.  long	       (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
-.						   struct bfd_symbol **);
+.  long (*_bfd_canonicalize_dynamic_reloc) (bfd *, arelent **,
+.					    struct bfd_symbol **);
 .
 
 A pointer to an alternative bfd_target in case the current one is not
@@ -602,31 +604,31 @@ to find an alternative output format tha
 .  return abfd->xvec->object_flags;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_family_coff (const bfd *abfd)
 .{
 .  return (bfd_get_flavour (abfd) == bfd_target_coff_flavour
 .          || bfd_get_flavour (abfd) == bfd_target_xcoff_flavour);
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_big_endian (const bfd *abfd)
 .{
 .  return abfd->xvec->byteorder == BFD_ENDIAN_BIG;
 .}
-.static inline bfd_boolean
+.static inline bool
 .bfd_little_endian (const bfd *abfd)
 .{
 .  return abfd->xvec->byteorder == BFD_ENDIAN_LITTLE;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_header_big_endian (const bfd *abfd)
 .{
 .  return abfd->xvec->header_byteorder == BFD_ENDIAN_BIG;
 .}
 .
-.static inline bfd_boolean
+.static inline bool
 .bfd_header_little_endian (const bfd *abfd)
 .{
 .  return abfd->xvec->header_byteorder == BFD_ENDIAN_LITTLE;
@@ -652,6 +654,19 @@ to find an alternative output format tha
 .  return sy->the_bfd->xvec->flavour;
 .}
 .
+.static inline bool
+.bfd_keep_unused_section_symbols (const bfd *abfd)
+.{
+.  return abfd->xvec->keep_unused_section_symbols;
+.}
+.
+.static inline bool
+.bfd_target_supports_archives (const bfd *abfd)
+.{
+.  return (abfd->xvec->_bfd_check_format[bfd_archive]
+.	   != abfd->xvec->_bfd_check_format[bfd_unknown]);
+.}
+.
 */
 
 /* All known xvecs (even those that don't compile on all systems).
@@ -661,16 +676,17 @@ to find an alternative output format tha
 extern const bfd_target aarch64_elf32_be_vec;
 extern const bfd_target aarch64_elf32_le_vec;
 extern const bfd_target aarch64_elf64_be_vec;
-extern const bfd_target aarch64_elf64_be_cloudabi_vec;
 extern const bfd_target aarch64_elf64_le_vec;
-extern const bfd_target aarch64_elf64_le_cloudabi_vec;
 extern const bfd_target aarch64_mach_o_vec;
+extern const bfd_target aarch64_pei_le_vec;
+extern const bfd_target aarch64_pe_le_vec;
 extern const bfd_target alpha_ecoff_le_vec;
 extern const bfd_target alpha_elf64_vec;
 extern const bfd_target alpha_elf64_fbsd_vec;
 extern const bfd_target alpha_vms_vec;
 extern const bfd_target alpha_vms_lib_txt_vec;
 extern const bfd_target am33_elf32_linux_vec;
+extern const bfd_target amdgcn_elf64_le_vec;
 extern const bfd_target aout_vec;
 extern const bfd_target arc_elf32_be_vec;
 extern const bfd_target arc_elf32_le_vec;
@@ -678,10 +694,6 @@ extern const bfd_target arm_elf32_be_vec
 extern const bfd_target arm_elf32_le_vec;
 extern const bfd_target arm_elf32_fdpic_be_vec;
 extern const bfd_target arm_elf32_fdpic_le_vec;
-extern const bfd_target arm_elf32_nacl_be_vec;
-extern const bfd_target arm_elf32_nacl_le_vec;
-extern const bfd_target arm_elf32_symbian_be_vec;
-extern const bfd_target arm_elf32_symbian_le_vec;
 extern const bfd_target arm_elf32_vxworks_be_vec;
 extern const bfd_target arm_elf32_vxworks_le_vec;
 extern const bfd_target arm_mach_o_vec;
@@ -733,12 +745,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;
@@ -750,12 +762,13 @@ extern const bfd_target ia64_elf64_vms_v
 extern const bfd_target ia64_pei_vec;
 extern const bfd_target ip2k_elf32_vec;
 extern const bfd_target iq2000_elf32_vec;
-extern const bfd_target k1om_elf64_vec;
-extern const bfd_target k1om_elf64_fbsd_vec;
-extern const bfd_target l1om_elf64_vec;
-extern const bfd_target l1om_elf64_fbsd_vec;
+extern const bfd_target kvx_elf32_vec;
+extern const bfd_target kvx_elf64_vec;
 extern const bfd_target lm32_elf32_vec;
 extern const bfd_target lm32_elf32_fdpic_vec;
+extern const bfd_target loongarch_elf64_vec;
+extern const bfd_target loongarch_elf32_vec;
+extern const bfd_target loongarch64_pei_vec;
 extern const bfd_target m32c_elf32_vec;
 extern const bfd_target m32r_elf32_vec;
 extern const bfd_target m32r_elf32_le_vec;
@@ -816,11 +829,10 @@ extern const bfd_target nds32_elf32_le_v
 extern const bfd_target nds32_elf32_linux_be_vec;
 extern const bfd_target nds32_elf32_linux_le_vec;
 extern const bfd_target nfp_elf64_vec;
-extern const bfd_target nios2_elf32_be_vec;
-extern const bfd_target nios2_elf32_le_vec;
 extern const bfd_target ns32k_aout_pc532mach_vec;
 extern const bfd_target ns32k_aout_pc532nbsd_vec;
 extern const bfd_target or1k_elf32_vec;
+extern const bfd_target pdb_vec;
 extern const bfd_target pdp11_aout_vec;
 extern const bfd_target pef_vec;
 extern const bfd_target pef_xlib_vec;
@@ -835,14 +847,14 @@ 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_elf64_fbsd_le_vec;
 extern const bfd_target powerpc_xcoff_vec;
 extern const bfd_target pru_elf32_vec;
 extern const bfd_target riscv_elf32_vec;
 extern const bfd_target riscv_elf64_vec;
+extern const bfd_target riscv_elf32_be_vec;
+extern const bfd_target riscv_elf64_be_vec;
+extern const bfd_target riscv64_pei_vec;
 extern const bfd_target rl78_elf32_vec;
 extern const bfd_target rs6000_xcoff64_vec;
 extern const bfd_target rs6000_xcoff64_aix_vec;
@@ -879,7 +891,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 +910,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,22 +926,19 @@ 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;
 extern const bfd_target xstormy16_elf32_vec;
 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.  */
@@ -943,7 +950,6 @@ extern const bfd_target binary_vec;
 extern const bfd_target ihex_vec;
 
 /* All of the xvecs for core files.  */
-extern const bfd_target core_aix386_vec;
 extern const bfd_target core_cisco_be_vec;
 extern const bfd_target core_cisco_le_vec;
 extern const bfd_target core_hppabsd_vec;
@@ -952,7 +958,6 @@ extern const bfd_target core_irix_vec;
 extern const bfd_target core_netbsd_vec;
 extern const bfd_target core_osf_vec;
 extern const bfd_target core_ptrace_vec;
-extern const bfd_target core_sco5_vec;
 extern const bfd_target core_trad_vec;
 
 static const bfd_target * const _bfd_target_vector[] =
@@ -979,10 +984,14 @@ static const bfd_target * const _bfd_tar
 	&aarch64_elf32_be_vec,
 	&aarch64_elf32_le_vec,
 	&aarch64_elf64_be_vec,
-	&aarch64_elf64_be_cloudabi_vec,
 	&aarch64_elf64_le_vec,
-	&aarch64_elf64_le_cloudabi_vec,
 	&aarch64_mach_o_vec,
+	&aarch64_pe_le_vec,
+	&aarch64_pei_le_vec,
+#endif
+
+#ifdef BFD64
+	&amdgcn_elf64_le_vec,
 #endif
 
 #ifdef BFD64
@@ -1008,8 +1017,6 @@ static const bfd_target * const _bfd_tar
 	&arm_elf32_le_vec,
 	&arm_elf32_fdpic_be_vec,
 	&arm_elf32_fdpic_le_vec,
-	&arm_elf32_symbian_be_vec,
-	&arm_elf32_symbian_le_vec,
 	&arm_elf32_vxworks_be_vec,
 	&arm_elf32_vxworks_le_vec,
 	&arm_mach_o_vec,
@@ -1082,12 +1089,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,
@@ -1113,10 +1120,8 @@ static const bfd_target * const _bfd_tar
 	&iq2000_elf32_vec,
 
 #ifdef BFD64
-	&k1om_elf64_vec,
-	&k1om_elf64_fbsd_vec,
-	&l1om_elf64_vec,
-	&l1om_elf64_fbsd_vec,
+	&kvx_elf32_vec,
+	&kvx_elf64_vec,
 #endif
 
 	&lm32_elf32_vec,
@@ -1203,14 +1208,13 @@ static const bfd_target * const _bfd_tar
 	&nfp_elf64_vec,
 #endif
 
-	&nios2_elf32_be_vec,
-	&nios2_elf32_le_vec,
-
 	&ns32k_aout_pc532mach_vec,
 	&ns32k_aout_pc532nbsd_vec,
 
 	&or1k_elf32_vec,
 
+	&pdb_vec,
+
 	&pdp11_aout_vec,
 
 	&pef_vec,
@@ -1228,11 +1232,8 @@ static const bfd_target * const _bfd_tar
 	&powerpc_elf64_vec,
 	&powerpc_elf64_le_vec,
 	&powerpc_elf64_fbsd_vec,
+	&powerpc_elf64_fbsd_le_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,
@@ -1243,6 +1244,9 @@ static const bfd_target * const _bfd_tar
 #ifdef BFD64
 	&riscv_elf32_vec,
 	&riscv_elf64_vec,
+	&riscv_elf32_be_vec,
+	&riscv_elf64_be_vec,
+	&riscv64_pei_vec,
 #endif
 	&rl78_elf32_vec,
 
@@ -1296,7 +1300,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 +1309,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,20 +1335,15 @@ 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
 
-	&xc16x_elf32_vec,
-
 	&xgate_elf32_vec,
 
 	&xstormy16_elf32_vec,
@@ -1355,8 +1352,16 @@ static const bfd_target * const _bfd_tar
 	&xtensa_elf32_le_vec,
 
 	&z80_coff_vec,
+	&z80_elf32_vec,
 
 	&z8k_coff_vec,
+
+#ifdef BFD64
+	&loongarch_elf32_vec,
+	&loongarch_elf64_vec,
+	&loongarch64_pei_vec,
+#endif
+
 #endif /* not SELECT_VECS */
 
 /* Always support S-records, for convenience.  */
@@ -1377,9 +1382,6 @@ static const bfd_target * const _bfd_tar
 
 /* Add any required traditional-core-file-handler.  */
 
-#ifdef AIX386_CORE
-	&core_aix386_vec,
-#endif
 #if 0
 	/* We don't include cisco_core_*_vec.  Although it has a magic number,
 	   the magic number isn't at the beginning of the file, and thus
@@ -1405,16 +1407,13 @@ static const bfd_target * const _bfd_tar
 #ifdef PTRACE_CORE
 	&core_ptrace_vec,
 #endif
-#ifdef SCO5_CORE
-	&core_sco5_vec,
-#endif
 #ifdef TRAD_CORE
 	&core_trad_vec,
 #endif
 
 	NULL /* end of list marker */
 };
-const bfd_target * const *bfd_target_vector = _bfd_target_vector;
+const bfd_target *const *const bfd_target_vector = _bfd_target_vector;
 
 /* bfd_default_vector[0] contains either the address of the default vector,
    if there is one, or zero if there isn't.  */
@@ -1429,18 +1428,19 @@ const bfd_target *bfd_default_vector[] =
 /* bfd_associated_vector[] contains the associated target vectors used
    to reduce the ambiguity in bfd_check_format_matches.  */
 
-static const bfd_target *_bfd_associated_vector[] = {
+static const bfd_target *const _bfd_associated_vector[] = {
 #ifdef ASSOCIATED_VECS
 	ASSOCIATED_VECS,
 #endif
 	NULL
 };
-const bfd_target * const *bfd_associated_vector = _bfd_associated_vector;
+const bfd_target *const *const bfd_associated_vector = _bfd_associated_vector;
 
 /* When there is an ambiguous match, bfd_check_format_matches puts the
    names of the matching targets in an array.  This variable is the maximum
    number of entries that the array could possibly need.  */
-const size_t _bfd_target_vector_entries = sizeof (_bfd_target_vector)/sizeof (*_bfd_target_vector);
+const size_t _bfd_target_vector_entries = ARRAY_SIZE (_bfd_target_vector);
+
 
 /* This array maps configuration triplets onto BFD vectors.  */
 
@@ -1494,7 +1494,7 @@ FUNCTION
 	bfd_set_default_target
 
 SYNOPSIS
-	bfd_boolean bfd_set_default_target (const char *name);
+	bool bfd_set_default_target (const char *name);
 
 DESCRIPTION
 	Set the default target vector to use when recognizing a BFD.
@@ -1502,21 +1502,21 @@ DESCRIPTION
 	name or a configuration triplet.
 */
 
-bfd_boolean
+bool
 bfd_set_default_target (const char *name)
 {
   const bfd_target *target;
 
   if (bfd_default_vector[0] != NULL
       && strcmp (name, bfd_default_vector[0]->name) == 0)
-    return TRUE;
+    return true;
 
   target = find_target (name);
   if (target == NULL)
-    return FALSE;
+    return false;
 
   bfd_default_vector[0] = target;
-  return TRUE;
+  return true;
 }
 
 /*
@@ -1560,13 +1560,13 @@ bfd_find_target (const char *target_name
       if (abfd)
 	{
 	  abfd->xvec = target;
-	  abfd->target_defaulted = TRUE;
+	  abfd->target_defaulted = true;
 	}
       return target;
     }
 
   if (abfd)
-    abfd->target_defaulted = FALSE;
+    abfd->target_defaulted = false;
 
   target = find_target (targname);
   if (target == NULL)
@@ -1580,12 +1580,12 @@ bfd_find_target (const char *target_name
 /* Helper function for bfd_get_target_info to determine the target's
    architecture.  This method handles bfd internal target names as
    tuples and triplets.  */
-static bfd_boolean
+static bool
 _bfd_find_arch_match (const char *tname, const char **arch,
 		      const char **def_target_arch)
 {
   if (!arch)
-    return FALSE;
+    return false;
 
   while (*arch != NULL)
     {
@@ -1596,11 +1596,11 @@ _bfd_find_arch_match (const char *tname,
 	  && end_ch == 0)
 	{
 	  *def_target_arch = *arch;
-	  return TRUE;
+	  return true;
 	}
       arch++;
     }
-  return FALSE;
+  return false;
 }
 
 /*
@@ -1609,7 +1609,7 @@ FUNCTION
 SYNOPSIS
 	const bfd_target *bfd_get_target_info (const char *target_name,
 					       bfd *abfd,
-					       bfd_boolean *is_bigendian,
+					       bool *is_bigendian,
 					       int *underscoring,
 					       const char **def_target_arch);
 DESCRIPTION
@@ -1634,13 +1634,13 @@ DESCRIPTION
 */
 const bfd_target *
 bfd_get_target_info (const char *target_name, bfd *abfd,
-		     bfd_boolean *is_bigendian,
+		     bool *is_bigendian,
 		     int *underscoring, const char **def_target_arch)
 {
   const bfd_target *target_vec;
 
   if (is_bigendian)
-    *is_bigendian = FALSE;
+    *is_bigendian = false;
   if (underscoring)
     *underscoring = -1;
   if (def_target_arch)
@@ -1649,8 +1649,7 @@ bfd_get_target_info (const char *target_
   if (! target_vec)
     return NULL;
   if (is_bigendian)
-    *is_bigendian = ((target_vec->byteorder == BFD_ENDIAN_BIG) ? TRUE
-							       : FALSE);
+    *is_bigendian = target_vec->byteorder == BFD_ENDIAN_BIG;
   if (underscoring)
     *underscoring = ((int) target_vec->symbol_leading_char) & 0xff;
 
@@ -1687,8 +1686,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 +1709,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;
 
@@ -1789,10 +1787,7 @@ bfd_flavour_name (enum bfd_flavour flavo
     case bfd_target_verilog_flavour: return "Verilog";
     case bfd_target_ihex_flavour: return "Ihex";
     case bfd_target_som_flavour: return "SOM";
-    case bfd_target_os9k_flavour: return "OS9K";
-    case bfd_target_versados_flavour: return "Versados";
     case bfd_target_msdos_flavour: return "MSDOS";
-    case bfd_target_ovax_flavour: return "Ovax";
     case bfd_target_evax_flavour: return "Evax";
     case bfd_target_mmo_flavour: return "mmo";
     case bfd_target_mach_o_flavour: return "MACH_O";
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/tekhex.c ./bfd/tekhex.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/tekhex.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/tekhex.c	2026-03-05 02:07:20.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-2025 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.
@@ -204,12 +204,12 @@ static void
 tekhex_init (void)
 {
   unsigned int i;
-  static bfd_boolean inited = FALSE;
+  static bool inited = false;
   int val;
 
   if (! inited)
     {
-      inited = TRUE;
+      inited = true;
       hex_init ();
       val = 0;
       for (i = 0; i < 10; i++)
@@ -266,7 +266,7 @@ typedef struct tekhex_data_struct
 
 #define enda(x) (x->vma + x->size)
 
-static bfd_boolean
+static bool
 getvalue (char **srcp, bfd_vma *valuep, char * endp)
 {
   char *src = *srcp;
@@ -274,10 +274,10 @@ getvalue (char **srcp, bfd_vma *valuep,
   unsigned int len;
 
   if (src >= endp)
-    return FALSE;
+    return false;
 
   if (!ISHEX (*src))
-    return FALSE;
+    return false;
 
   len = hex_value (*src++);
   if (len == 0)
@@ -285,7 +285,7 @@ getvalue (char **srcp, bfd_vma *valuep,
   while (len-- && src < endp)
     {
       if (!ISHEX (*src))
-	return FALSE;
+	return false;
       value = value << 4 | hex_value (*src++);
     }
 
@@ -294,7 +294,7 @@ getvalue (char **srcp, bfd_vma *valuep,
   return len == -1U;
 }
 
-static bfd_boolean
+static bool
 getsym (char *dstp, char **srcp, unsigned int *lenp, char * endp)
 {
   char *src = *srcp;
@@ -302,7 +302,7 @@ getsym (char *dstp, char **srcp, unsigne
   unsigned int len;
 
   if (!ISHEX (*src))
-    return FALSE;
+    return false;
 
   len = hex_value (*src++);
   if (len == 0)
@@ -316,7 +316,7 @@ getsym (char *dstp, char **srcp, unsigne
 }
 
 static struct data_struct *
-find_chunk (bfd *abfd, bfd_vma vma, bfd_boolean create)
+find_chunk (bfd *abfd, bfd_vma vma, bool create)
 {
   struct data_struct *d = abfd->tdata.tekhex_data->data;
 
@@ -327,9 +327,7 @@ find_chunk (bfd *abfd, bfd_vma vma, bfd_
   if (!d && create)
     {
       /* No chunk for this address, so make one up.  */
-      d = (struct data_struct *)
-	  bfd_zalloc (abfd, (bfd_size_type) sizeof (struct data_struct));
-
+      d = bfd_zalloc (abfd, sizeof (struct data_struct));
       if (!d)
 	return NULL;
 
@@ -340,27 +338,31 @@ find_chunk (bfd *abfd, bfd_vma vma, bfd_
   return d;
 }
 
-static void
+static bool
 insert_byte (bfd *abfd, int value, bfd_vma addr)
 {
   if (value != 0)
     {
       /* Find the chunk that this byte needs and put it in.  */
-      struct data_struct *d = find_chunk (abfd, addr, TRUE);
+      struct data_struct *d = find_chunk (abfd, addr, true);
+      if (!d)
+	return false;
 
       d->chunk_data[addr & CHUNK_MASK] = value;
       d->chunk_init[(addr & CHUNK_MASK) / CHUNK_SPAN] = 1;
     }
+  return true;
 }
 
 /* The first pass is to find the names of all the sections, and see
   how big the data is.  */
 
-static bfd_boolean
+static bool
 first_phase (bfd *abfd, int type, char *src, char * src_end)
 {
   asection *section, *alt_section;
   unsigned int len;
+  bfd_vma addr;
   bfd_vma val;
   char sym[17];			/* A symbol can only be 16chars long.  */
 
@@ -368,36 +370,33 @@ first_phase (bfd *abfd, int type, char *
     {
     case '6':
       /* Data record - read it and store it.  */
-      {
-	bfd_vma addr;
+      if (!getvalue (&src, &addr, src_end))
+	return false;
 
-	if (!getvalue (&src, &addr, src_end))
-	  return FALSE;
-
-	while (*src && src < src_end - 1)
-	  {
-	    insert_byte (abfd, HEX (src), addr);
-	    src += 2;
-	    addr++;
-	  }
-	return TRUE;
-      }
+      while (*src && src < src_end - 1)
+	{
+	  if (!insert_byte (abfd, HEX (src), addr))
+	    return false;
+	  src += 2;
+	  addr++;
+	}
+      return true;
 
     case '3':
       /* Symbol record, read the segment.  */
       if (!getsym (sym, &src, &len, src_end))
-	return FALSE;
+	return false;
       section = bfd_get_section_by_name (abfd, sym);
       if (section == NULL)
 	{
 	  char *n = (char *) bfd_alloc (abfd, (bfd_size_type) len + 1);
 
 	  if (!n)
-	    return FALSE;
+	    return false;
 	  memcpy (n, sym, len + 1);
-	  section = bfd_make_section (abfd, n);
+	  section = bfd_make_section_old_way (abfd, n);
 	  if (section == NULL)
-	    return FALSE;
+	    return false;
 	}
       alt_section = NULL;
       while (src < src_end && *src)
@@ -406,17 +405,20 @@ first_phase (bfd *abfd, int type, char *
 	    {
 	    case '1':		/* Section range.  */
 	      src++;
-	      if (!getvalue (&src, &section->vma, src_end))
-		return FALSE;
+	      if (!getvalue (&src, &addr, src_end))
+		return false;
 	      if (!getvalue (&src, &val, src_end))
-		return FALSE;
-	      if (val < section->vma)
-		val = section->vma;
-	      section->size = val - section->vma;
+		return false;
+	      if (bfd_is_const_section (section))
+		break;
+	      section->vma = addr;
+	      if (val < addr)
+		val = addr;
+	      section->size = val - addr;
 	      /* PR 17512: file: objdump-s-endless-loop.tekhex.
 		 Check for overlarge section sizes.  */
 	      if (section->size & 0x80000000)
-		return FALSE;
+		return false;
 	      section->flags = SEC_HAS_CONTENTS | SEC_LOAD | SEC_ALLOC;
 	      break;
 	    case '0':
@@ -428,13 +430,13 @@ 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);
 
 		if (!new_symbol)
-		  return FALSE;
+		  return false;
 		new_symbol->symbol.the_bfd = abfd;
 		src++;
 		abfd->symcount++;
@@ -442,11 +444,11 @@ first_phase (bfd *abfd, int type, char *
 		new_symbol->prev = abfd->tdata.tekhex_data->symbols;
 		abfd->tdata.tekhex_data->symbols = new_symbol;
 		if (!getsym (sym, &src, &len, src_end))
-		  return FALSE;
+		  return false;
 		new_symbol->symbol.name = (const char *)
 		    bfd_alloc (abfd, (bfd_size_type) len + 1);
 		if (!new_symbol->symbol.name)
-		  return FALSE;
+		  return false;
 		memcpy ((char *) (new_symbol->symbol.name), sym, len + 1);
 		new_symbol->symbol.section = section;
 		if (stype <= '4')
@@ -455,6 +457,8 @@ first_phase (bfd *abfd, int type, char *
 		  new_symbol->symbol.flags = BSF_LOCAL;
 		if (stype == '2' || stype == '6')
 		  new_symbol->symbol.section = bfd_abs_section_ptr;
+		else if (bfd_is_const_section (section))
+		  ;
 		else if (stype == '3' || stype == '7')
 		  {
 		    if ((section->flags & SEC_DATA) == 0)
@@ -469,7 +473,7 @@ first_phase (bfd *abfd, int type, char *
 			    (abfd, section->name,
 			     (section->flags & ~SEC_DATA) | SEC_CODE);
 			if (alt_section == NULL)
-			  return FALSE;
+			  return false;
 			new_symbol->symbol.section = alt_section;
 		      }
 		  }
@@ -487,36 +491,36 @@ first_phase (bfd *abfd, int type, char *
 			    (abfd, section->name,
 			     (section->flags & ~SEC_CODE) | SEC_DATA);
 			if (alt_section == NULL)
-			  return FALSE;
+			  return false;
 			new_symbol->symbol.section = alt_section;
 		      }
 		  }
 		if (!getvalue (&src, &val, src_end))
-		  return FALSE;
+		  return false;
 		new_symbol->symbol.value = val - section->vma;
 		break;
 	      }
 	    default:
-	      return FALSE;
+	      return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Pass over a tekhex, calling one of the above functions on each
    record.  */
 
-static bfd_boolean
-pass_over (bfd *abfd, bfd_boolean (*func) (bfd *, int, char *, char *))
+static bool
+pass_over (bfd *abfd, bool (*func) (bfd *, int, char *, char *))
 {
   unsigned int chars_on_line;
-  bfd_boolean is_eof = FALSE;
+  bool is_eof = false;
 
   /* To the front of the file.  */
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
-    return FALSE;
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0)
+    return false;
 
   while (! is_eof)
     {
@@ -524,16 +528,16 @@ pass_over (bfd *abfd, bfd_boolean (*func
       char type;
 
       /* Find first '%'.  */
-      is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1);
-      while (*src != '%' && !is_eof)
-	is_eof = (bfd_boolean) (bfd_bread (src, (bfd_size_type) 1, abfd) != 1);
+      is_eof = bfd_read (src, 1, abfd) != 1;
+      while (!is_eof && *src != '%')
+	is_eof = bfd_read (src, 1, abfd) != 1;
 
       if (is_eof)
 	break;
 
       /* Fetch the type and the length and the checksum.  */
-      if (bfd_bread (src, (bfd_size_type) 5, abfd) != 5)
-	return FALSE;
+      if (bfd_read (src, 5, abfd) != 5)
+	return false;
 
       type = src[2];
 
@@ -544,18 +548,18 @@ pass_over (bfd *abfd, bfd_boolean (*func
       chars_on_line = HEX (src) - 5;
 
       if (chars_on_line >= MAXCHUNK)
-	return FALSE;
+	return false;
 
-      if (bfd_bread (src, (bfd_size_type) chars_on_line, abfd) != chars_on_line)
-	return FALSE;
+      if (bfd_read (src, chars_on_line, abfd) != chars_on_line)
+	return false;
 
       /* Put a null at the end.  */
       src[chars_on_line] = 0;
       if (!func (abfd, type, src, src + chars_on_line))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 static long
@@ -581,54 +585,58 @@ tekhex_get_symtab_upper_bound (bfd *abfd
 
 }
 
-static bfd_boolean
+static bool
 tekhex_mkobject (bfd *abfd)
 {
   tdata_type *tdata;
 
   tdata = (tdata_type *) bfd_alloc (abfd, (bfd_size_type) sizeof (tdata_type));
   if (!tdata)
-    return FALSE;
+    return false;
   abfd->tdata.tekhex_data = tdata;
   tdata->type = 1;
   tdata->head =  NULL;
   tdata->symbols = NULL;
   tdata->data = NULL;
-  return TRUE;
+  return true;
 }
 
 /* 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];
 
   tekhex_init ();
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0
-      || bfd_bread (b, (bfd_size_type) 4, abfd) != 4)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_read (b, 4, abfd) != 4)
     return NULL;
 
   if (b[0] != '%' || !ISHEX (b[1]) || !ISHEX (b[2]) || !ISHEX (b[3]))
     return NULL;
 
-  tekhex_mkobject (abfd);
+  if (!tekhex_mkobject (abfd))
+    return NULL;
 
   if (!pass_over (abfd, first_phase))
-    return NULL;
+    {
+      bfd_release (abfd, abfd->tdata.tekhex_data);
+      return NULL;
+    }
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 }
 
-static void
+static bool
 move_section_contents (bfd *abfd,
 		       asection *section,
 		       const void * locationp,
 		       file_ptr offset,
 		       bfd_size_type count,
-		       bfd_boolean get)
+		       bool get)
 {
   bfd_vma addr;
   char *location = (char *) locationp;
@@ -641,12 +649,14 @@ move_section_contents (bfd *abfd,
       /* Get high bits of address.  */
       bfd_vma chunk_number = addr & ~(bfd_vma) CHUNK_MASK;
       bfd_vma low_bits = addr & CHUNK_MASK;
-      bfd_boolean must_write = !get && *location != 0;
+      bool must_write = !get && *location != 0;
 
       if (chunk_number != prev_number || (!d && must_write))
 	{
 	  /* Different chunk, so move pointer. */
 	  d = find_chunk (abfd, chunk_number, must_write);
+	  if (!d && must_write)
+	    return false;
 	  prev_number = chunk_number;
 	}
 
@@ -665,25 +675,22 @@ move_section_contents (bfd *abfd,
 
       location++;
     }
+  return true;
 }
 
-static bfd_boolean
+static bool
 tekhex_get_section_contents (bfd *abfd,
 			     asection *section,
-			     void * locationp,
+			     void *location,
 			     file_ptr offset,
 			     bfd_size_type count)
 {
-  if (section->flags & (SEC_LOAD | SEC_ALLOC))
-    {
-      move_section_contents (abfd, section, locationp, offset, count, TRUE);
-      return TRUE;
-    }
-
-  return FALSE;
+  if ((section->flags & (SEC_LOAD | SEC_ALLOC)) == 0)
+    return false;
+  return move_section_contents (abfd, section, location, offset, count, true);
 }
 
-static bfd_boolean
+static bool
 tekhex_set_arch_mach (bfd *abfd,
 		      enum bfd_architecture arch,
 		      unsigned long machine)
@@ -695,21 +702,16 @@ tekhex_set_arch_mach (bfd *abfd,
 
 /* We have to save up all the Tekhexords for a splurge before output.  */
 
-static bfd_boolean
+static bool
 tekhex_set_section_contents (bfd *abfd,
 			     sec_ptr section,
-			     const void * locationp,
+			     const void *location,
 			     file_ptr offset,
-			     bfd_size_type bytes_to_do)
+			     bfd_size_type count)
 {
-  if (section->flags & (SEC_LOAD | SEC_ALLOC))
-    {
-      move_section_contents (abfd, section, locationp, offset, bytes_to_do,
-			     FALSE);
-      return TRUE;
-    }
-
-  return FALSE;
+  if ((section->flags & (SEC_LOAD | SEC_ALLOC)) == 0)
+    return false;
+  return move_section_contents (abfd, section, location, offset, count, false);
 }
 
 static void
@@ -719,24 +721,13 @@ writevalue (char **dst, bfd_vma value)
   int len;
   int shift;
 
-  for (len = 8, shift = 28; shift; shift -= 4, len--)
-    {
-      if ((value >> shift) & 0xf)
-	{
-	  *p++ = len + '0';
-	  while (len)
-	    {
-	      *p++ = digs[(value >> shift) & 0xf];
-	      shift -= 4;
-	      len--;
-	    }
-	  *dst = p;
-	  return;
+  for (len = BFD_ARCH_SIZE / 4, shift = len * 4 - 4; len > 1; shift -= 4, len--)
+    if ((value >> shift) & 0xf)
+      break;
 
-	}
-    }
-  *p++ = '1';
-  *p++ = '0';
+  *p++ = digs[len & 0xf];
+  for (; len; shift -= 4, len--)
+    *p++ = digs[(value >> shift) & 0xf];
   *dst = p;
 }
 
@@ -747,22 +738,14 @@ writesym (char **dst, const char *sym)
   int len = (sym ? strlen (sym) : 0);
 
   if (len >= 16)
+    len = 16;
+  else if (len == 0)
     {
-      *p++ = '0';
-      len = 16;
-    }
-  else
-    {
-      if (len == 0)
-	{
-	  *p++ = '1';
-	  sym = "$";
-	  len = 1;
-	}
-      else
-	*p++ = digs[len];
+      len = 1;
+      sym = "$";
     }
 
+  *p++ = digs[len & 0xf];
   while (len--)
     *p++ = *sym++;
 
@@ -788,15 +771,15 @@ out (bfd *abfd, int type, char *start, c
   sum += sum_block[(unsigned char) front[2]];
   sum += sum_block[(unsigned char) front[3]];	/* Type.  */
   TOHEX (front + 4, sum);
-  if (bfd_bwrite (front, (bfd_size_type) 6, abfd) != 6)
+  if (bfd_write (front, 6, abfd) != 6)
     abort ();
   end[0] = '\n';
   wrlen = end - start + 1;
-  if (bfd_bwrite (start, wrlen, abfd) != wrlen)
+  if (bfd_write (start, wrlen, abfd) != wrlen)
     abort ();
 }
 
-static bfd_boolean
+static bool
 tekhex_write_object_contents (bfd *abfd)
 {
   char buffer[100];
@@ -886,7 +869,7 @@ tekhex_write_object_contents (bfd *abfd)
 		case 'C':
 		case 'U':
 		  bfd_set_error (bfd_error_wrong_format);
-		  return FALSE;
+		  goto fail;
 		}
 
 	      writesym (&dst, sym->name);
@@ -897,9 +880,12 @@ tekhex_write_object_contents (bfd *abfd)
     }
 
   /* And the terminator.  */
-  if (bfd_bwrite ("%0781010\n", (bfd_size_type) 9, abfd) != 9)
-    abort ();
-  return TRUE;
+  if (bfd_write ("%0781010\n", 9, abfd) != 9)
+    goto fail;
+  return true;
+
+ fail:
+  return false;
 }
 
 static int
@@ -912,7 +898,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);
 
@@ -966,6 +952,7 @@ tekhex_print_symbol (bfd *abfd,
 #define tekhex_bfd_is_local_label_name		     bfd_generic_is_local_label_name
 #define tekhex_get_lineno			    _bfd_nosymbols_get_lineno
 #define tekhex_find_nearest_line		    _bfd_nosymbols_find_nearest_line
+#define tekhex_find_nearest_line_with_alt	    _bfd_nosymbols_find_nearest_line_with_alt
 #define tekhex_find_line			    _bfd_nosymbols_find_line
 #define tekhex_find_inliner_info		    _bfd_nosymbols_find_inliner_info
 #define tekhex_get_symbol_version_string	    _bfd_nosymbols_get_symbol_version_string
@@ -990,7 +977,6 @@ tekhex_print_symbol (bfd *abfd,
 #define tekhex_bfd_copy_link_hash_symbol_type	    _bfd_generic_copy_link_hash_symbol_type
 #define tekhex_bfd_final_link			    _bfd_generic_final_link
 #define tekhex_bfd_link_split_section		    _bfd_generic_link_split_section
-#define tekhex_get_section_contents_in_window	    _bfd_generic_get_section_contents_in_window
 #define tekhex_bfd_link_check_relocs		    _bfd_generic_link_check_relocs
 
 const bfd_target tekhex_vec =
@@ -999,15 +985,14 @@ const bfd_target tekhex_vec =
   bfd_target_tekhex_flavour,
   BFD_ENDIAN_UNKNOWN,		/* Target byte order.  */
   BFD_ENDIAN_UNKNOWN,		/* Target headers byte order.  */
-  (EXEC_P |			/* Object flags.  */
-   HAS_SYMS | HAS_LINENO | HAS_DEBUG |
-   HAS_RELOC | HAS_LOCALS | WP_TEXT | D_PAGED),
+  EXEC_P | HAS_SYMS,		/* Object flags.  */
   (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
-   | SEC_ALLOC | SEC_LOAD | SEC_RELOC),	/* Section flags.  */
+   | SEC_ALLOC | SEC_LOAD),	/* Section flags.  */
   0,				/* Leading underscore.  */
   ' ',				/* AR_pad_char.  */
   16,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
@@ -1024,13 +1009,13 @@ const bfd_target tekhex_vec =
   {
     _bfd_bool_bfd_false_error,
     tekhex_mkobject,
-    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
   {				/* bfd_write_contents.  */
     _bfd_bool_bfd_false_error,
     tekhex_write_object_contents,
-    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_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.20200303/bfd/TODO ./bfd/TODO
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/TODO	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/TODO	2026-03-05 02:07:20.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-2025 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.20200303/bfd/trad-core.c ./bfd/trad-core.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/trad-core.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/trad-core.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by John Gilmore of Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -25,19 +25,7 @@
 #include "libaout.h"	       /* BFD a.out internal data structures */
 
 #include <sys/param.h>
-#ifdef HAVE_DIRENT_H
-# include <dirent.h>
-#else
-# ifdef HAVE_SYS_NDIR_H
-#  include <sys/ndir.h>
-# endif
-# ifdef HAVE_SYS_DIR_H
-#  include <sys/dir.h>
-# endif
-# ifdef HAVE_NDIR_H
-#  include <ndir.h>
-# endif
-#endif
+#include <dirent.h>
 #include <signal.h>
 
 #include <sys/user.h>		/* After a.out.h  */
@@ -71,22 +59,21 @@ 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;
   flagword flags;
 
 #ifdef TRAD_CORE_USER_OFFSET
   /* If defined, this macro is the file position of the user struct.  */
-  if (bfd_seek (abfd, (file_ptr) TRAD_CORE_USER_OFFSET, SEEK_SET) != 0)
+  if (bfd_seek (abfd, TRAD_CORE_USER_OFFSET, SEEK_SET) != 0)
     return 0;
 #endif
 
-  val = bfd_bread ((void *) &u, (bfd_size_type) sizeof u, abfd);
+  val = bfd_read (&u, sizeof u, abfd);
   if (val != sizeof u)
     {
       /* Too small to be a core file */
@@ -144,8 +131,7 @@ trad_unix_core_file_p (bfd *abfd)
 
   /* Allocate both the upage and the struct core_data at once, so
      a single free() will free them both.  */
-  amt = sizeof (struct trad_core_struct);
-  rawptr = (struct trad_core_struct *) bfd_zmalloc (amt);
+  rawptr = bfd_alloc (abfd, sizeof (*rawptr) + 1);
   if (rawptr == NULL)
     return 0;
 
@@ -153,6 +139,10 @@ trad_unix_core_file_p (bfd *abfd)
 
   rawptr->u = u; /*Copy the uarea into the tdata part of the bfd */
 
+  /* Ensure core_file_failing_command string is terminated.  This is
+     just to stop buffer overflows on fuzzed files.  */
+  ((char *) rawptr)[sizeof (*rawptr)] = 0;
+
   /* Create the sections.  */
 
   flags = SEC_ALLOC + SEC_LOAD + SEC_HAS_CONTENTS;
@@ -220,7 +210,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);
@@ -261,9 +251,9 @@ swap_abort (void)
 #define	NO_GET ((bfd_vma (*) (const void *)) swap_abort)
 #define	NO_PUT ((void (*) (bfd_vma, void *)) swap_abort)
 #define	NO_GETS ((bfd_signed_vma (*) (const void *)) swap_abort)
-#define	NO_GET64 ((bfd_uint64_t (*) (const void *)) swap_abort)
-#define	NO_PUT64 ((void (*) (bfd_uint64_t, void *)) swap_abort)
-#define	NO_GETS64 ((bfd_int64_t (*) (const void *)) swap_abort)
+#define	NO_GET64 ((uint64_t (*) (const void *)) swap_abort)
+#define	NO_PUT64 ((void (*) (uint64_t, void *)) swap_abort)
+#define	NO_GETS64 ((int64_t (*) (const void *)) swap_abort)
 
 const bfd_target core_trad_vec =
   {
@@ -279,6 +269,7 @@ const bfd_target core_trad_vec =
     ' ',			/* ar_pad_char */
     16,				/* ar_max_namelen */
     0,				/* match priority.  */
+    TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
     NO_GET64, NO_GETS64, NO_PUT64,	/* 64 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 32 bit data */
     NO_GET, NO_GETS, NO_PUT,		/* 16 bit 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.20200303/bfd/vax1knetbsd.c ./bfd/vax1knetbsd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vax1knetbsd.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/vax1knetbsd.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/vaxnetbsd.c ./bfd/vaxnetbsd.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vaxnetbsd.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/vaxnetbsd.c	2026-03-05 02:07:20.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-2025 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.20200303/bfd/verilog.c ./bfd/verilog.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/verilog.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/verilog.c	2026-03-05 02:07:20.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-2025 Free Software Foundation, Inc.
    Written by Anthony Green <green@moxielogic.com>
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -62,6 +62,10 @@
    Data width in bytes.  */
 unsigned int VerilogDataWidth = 1;
 
+/* Modified by obcopy.c
+   Data endianness.  */
+enum bfd_endian VerilogDataEndianness = BFD_ENDIAN_UNKNOWN;
+
 /* Macros for converting between hex and binary.  */
 
 static const char digs[] = "0123456789ABCDEF";
@@ -95,19 +99,19 @@ typedef struct verilog_data_struct
 }
 tdata_type;
 
-static bfd_boolean
+static bool
 verilog_set_arch_mach (bfd *abfd, enum bfd_architecture arch, unsigned long mach)
 {
   if (arch != bfd_arch_unknown)
     return bfd_default_set_arch_mach (abfd, arch, mach);
 
   abfd->arch_info = & bfd_default_arch_struct;
-  return TRUE;
+  return true;
 }
 
-/* We have to save up all the outpu for a splurge before output.  */
+/* We have to save up all the output for a splurge before output.  */
 
-static bfd_boolean
+static bool
 verilog_set_section_contents (bfd *abfd,
 			      sec_ptr section,
 			      const void * location,
@@ -119,7 +123,7 @@ verilog_set_section_contents (bfd *abfd,
 
   entry = (verilog_data_list_type *) bfd_alloc (abfd, sizeof (* entry));
   if (entry == NULL)
-    return FALSE;
+    return false;
 
   if (bytes_to_do
       && (section->flags & SEC_ALLOC)
@@ -129,7 +133,7 @@ verilog_set_section_contents (bfd *abfd,
 
       data = (bfd_byte *) bfd_alloc (abfd, bytes_to_do);
       if (data == NULL)
-	return FALSE;
+	return false;
       memcpy ((void *) data, location, (size_t) bytes_to_do);
 
       entry->data = data;
@@ -159,18 +163,31 @@ verilog_set_section_contents (bfd *abfd,
 	    tdata->tail = entry;
 	}
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 verilog_write_address (bfd *abfd, bfd_vma address)
 {
-  char buffer[12];
+  char buffer[20];
   char *dst = buffer;
   bfd_size_type wrlen;
 
   /* Write the address.  */
   *dst++ = '@';
+#ifdef BFD64
+  if (address >= (bfd_vma)1 << 32)
+    {
+      TOHEX (dst, (address >> 56));
+      dst += 2;
+      TOHEX (dst, (address >> 48));
+      dst += 2;
+      TOHEX (dst, (address >> 40));
+      dst += 2;
+      TOHEX (dst, (address >> 32));
+      dst += 2;
+    }
+#endif
   TOHEX (dst, (address >> 24));
   dst += 2;
   TOHEX (dst, (address >> 16));
@@ -183,14 +200,14 @@ verilog_write_address (bfd *abfd, bfd_vm
   *dst++ = '\n';
   wrlen = dst - buffer;
 
-  return bfd_bwrite ((void *) buffer, wrlen, abfd) == wrlen;
+  return bfd_write (buffer, wrlen, abfd) == wrlen;
 }
 
 /* Write a record of type, of the supplied number of bytes. The
    supplied bytes and length don't have a checksum.  That's worked
    out here.  */
 
-static bfd_boolean
+static bool
 verilog_write_record (bfd *abfd,
 		      const bfd_byte *data,
 		      const bfd_byte *end)
@@ -207,7 +224,7 @@ verilog_write_record (bfd *abfd,
       > (long) sizeof (buffer))
     {
       /* FIXME: Should we generate an error message ?  */
-      return FALSE;
+      return false;
     }
 
   /* Write the data.
@@ -225,7 +242,8 @@ verilog_write_record (bfd *abfd,
 	    *dst++ = ' ';
 	}
     }
-  else if (bfd_little_endian (abfd))
+  else if ((VerilogDataEndianness == BFD_ENDIAN_UNKNOWN && bfd_little_endian (abfd)) /* FIXME: Can this happen ?  */
+	   || (VerilogDataEndianness == BFD_ENDIAN_LITTLE))
     {
       /* If the input byte stream contains:
 	   05 04 03 02 01 00
@@ -250,8 +268,10 @@ verilog_write_record (bfd *abfd,
 	  TOHEX (dst, *end);
 	  dst += 2;
 	}
+
+      /* FIXME: Should padding bytes be inserted here ?  */
     }
-  else
+  else /* Big endian output.  */
     {
       for (src = data; src < end;)
 	{
@@ -261,16 +281,17 @@ verilog_write_record (bfd *abfd,
 	  if ((src - data) % VerilogDataWidth == 0)
 	    *dst++ = ' ';
 	}
+      /* FIXME: Should padding bytes be inserted here ?  */
     }
 
   *dst++ = '\r';
   *dst++ = '\n';
   wrlen = dst - buffer;
 
-  return bfd_bwrite ((void *) buffer, wrlen, abfd) == wrlen;
+  return bfd_write (buffer, wrlen, abfd) == wrlen;
 }
 
-static bfd_boolean
+static bool
 verilog_write_section (bfd *abfd,
 		       tdata_type *tdata ATTRIBUTE_UNUSED,
 		       verilog_data_list_type *list)
@@ -278,7 +299,14 @@ verilog_write_section (bfd *abfd,
   unsigned int octets_written = 0;
   bfd_byte *location = list->data;
 
-  verilog_write_address (abfd, list->where);
+  /* Insist that the starting address is a multiple of the data width.  */
+  if (list->where % VerilogDataWidth)
+    {
+      bfd_set_error (bfd_error_invalid_operation);
+      return false;
+    }
+
+  verilog_write_address (abfd, list->where / VerilogDataWidth);
   while (octets_written < list->size)
     {
       unsigned int octets_this_chunk = list->size - octets_written;
@@ -289,16 +317,16 @@ verilog_write_section (bfd *abfd,
       if (! verilog_write_record (abfd,
 				  location,
 				  location + octets_this_chunk))
-	return FALSE;
+	return false;
 
       octets_written += octets_this_chunk;
       location += octets_this_chunk;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 verilog_write_object_contents (bfd *abfd)
 {
   tdata_type *tdata = abfd->tdata.verilog_data;
@@ -310,10 +338,10 @@ verilog_write_object_contents (bfd *abfd
   while (list != (verilog_data_list_type *) NULL)
     {
       if (! verilog_write_section (abfd, tdata, list))
-	return FALSE;
+	return false;
       list = list->next;
     }
-  return TRUE;
+  return true;
 }
 
 /* Initialize by filling in the hex conversion array.  */
@@ -321,18 +349,18 @@ verilog_write_object_contents (bfd *abfd
 static void
 verilog_init (void)
 {
-  static bfd_boolean inited = FALSE;
+  static bool inited = false;
 
   if (! inited)
     {
-      inited = TRUE;
+      inited = true;
       hex_init ();
     }
 }
 
 /* Set up the verilog tdata information.  */
 
-static bfd_boolean
+static bool
 verilog_mkobject (bfd *abfd)
 {
   tdata_type *tdata;
@@ -341,57 +369,29 @@ verilog_mkobject (bfd *abfd)
 
   tdata = (tdata_type *) bfd_alloc (abfd, sizeof (tdata_type));
   if (tdata == NULL)
-    return FALSE;
+    return false;
 
   abfd->tdata.verilog_data = tdata;
   tdata->head = NULL;
   tdata->tail = NULL;
 
-  return TRUE;
+  return true;
 }
 
-#define verilog_close_and_cleanup		     _bfd_generic_close_and_cleanup
-#define verilog_bfd_free_cached_info		     _bfd_generic_bfd_free_cached_info
-#define verilog_new_section_hook		     _bfd_generic_new_section_hook
-#define verilog_bfd_is_target_special_symbol	     _bfd_bool_bfd_asymbol_false
-#define verilog_bfd_is_local_label_name		     bfd_generic_is_local_label_name
-#define verilog_get_lineno			     _bfd_nosymbols_get_lineno
-#define verilog_find_nearest_line		     _bfd_nosymbols_find_nearest_line
-#define verilog_find_inliner_info		     _bfd_nosymbols_find_inliner_info
-#define verilog_make_empty_symbol		     _bfd_generic_make_empty_symbol
-#define verilog_bfd_make_debug_symbol		     _bfd_nosymbols_bfd_make_debug_symbol
-#define verilog_read_minisymbols		     _bfd_generic_read_minisymbols
-#define verilog_minisymbol_to_symbol		     _bfd_generic_minisymbol_to_symbol
-#define verilog_get_section_contents_in_window	     _bfd_generic_get_section_contents_in_window
-#define verilog_bfd_get_relocated_section_contents   bfd_generic_get_relocated_section_contents
-#define verilog_bfd_relax_section		     bfd_generic_relax_section
-#define verilog_bfd_gc_sections			     bfd_generic_gc_sections
-#define verilog_bfd_merge_sections		     bfd_generic_merge_sections
-#define verilog_bfd_is_group_section		     bfd_generic_is_group_section
-#define verilog_bfd_group_name			     bfd_generic_group_name
-#define verilog_bfd_discard_group		     bfd_generic_discard_group
-#define verilog_section_already_linked		     _bfd_generic_section_already_linked
-#define verilog_bfd_link_hash_table_create	     _bfd_generic_link_hash_table_create
-#define verilog_bfd_link_add_symbols		     _bfd_generic_link_add_symbols
-#define verilog_bfd_link_just_syms		     _bfd_generic_link_just_syms
-#define verilog_bfd_final_link			     _bfd_generic_final_link
-#define verilog_bfd_link_split_section		     _bfd_generic_link_split_section
-
 const bfd_target verilog_vec =
 {
   "verilog",			/* Name.  */
   bfd_target_verilog_flavour,
   BFD_ENDIAN_UNKNOWN,		/* Target byte order.  */
   BFD_ENDIAN_UNKNOWN,		/* Target headers byte order.  */
-  (HAS_RELOC | EXEC_P |		/* Object flags.  */
-   HAS_LINENO | HAS_DEBUG |
-   HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED),
+  EXEC_P,			/* Object flags.  */
   (SEC_CODE | SEC_DATA | SEC_ROM | SEC_HAS_CONTENTS
-   | SEC_ALLOC | SEC_LOAD | SEC_RELOC),	/* Section flags.  */
+   | SEC_ALLOC | SEC_LOAD),	/* Section flags.  */
   0,				/* Leading underscore.  */
   ' ',				/* AR_pad_char.  */
   16,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/version.h ./bfd/version.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/version.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/version.h	2026-03-05 02:07:20.000000000 +0000
@@ -16,7 +16,7 @@
 
    In releases, the date is not included in either version strings or
    sonames.  */
-#define BFD_VERSION_DATE 20200303
+#define BFD_VERSION_DATE 20260305
 #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.20200303/bfd/version.m4 ./bfd/version.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/version.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/version.m4	2026-03-05 02:07:20.000000000 +0000
@@ -1 +1 @@
-m4_define([BFD_VERSION], [2.33.50])
+m4_define([BFD_VERSION], [2.45.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.20200303/bfd/vms-alpha.c ./bfd/vms-alpha.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vms-alpha.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/vms-alpha.c	2026-03-05 02:07:20.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-2025 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
@@ -151,7 +155,7 @@ struct eom_struct
 {
   unsigned int eom_l_total_lps;
   unsigned short eom_w_comcod;
-  bfd_boolean eom_has_transfer;
+  bool eom_has_transfer;
   unsigned char eom_b_tfrflg;
   unsigned int eom_l_psindx;
   unsigned int eom_l_tfradr;
@@ -262,8 +266,9 @@ struct module
 
 struct vms_private_data_struct
 {
-  /* If true, relocs have been read.  */
-  bfd_boolean reloc_done;
+  /* If 1, relocs have been read successfully, if 0 they have yet to be
+     read, if -1 reading relocs failed.  */
+  int reloc_done;
 
   /* Record input buffer.  */
   struct vms_rec_rd recrd;
@@ -367,15 +372,15 @@ struct vms_section_data_struct
 struct vms_private_data_struct *bfd_vms_get_data (bfd *);
 
 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 *,
+static bool _bfd_vms_slurp_object_records (bfd * abfd);
+static bool alpha_vms_add_fixup_lp (struct bfd_link_info *, bfd *, bfd *);
+static bool alpha_vms_add_fixup_ca (struct bfd_link_info *, bfd *, bfd *);
+static bool 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,
+static bool 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 bool alpha_vms_add_lw_reloc (struct bfd_link_info *);
+static bool alpha_vms_add_qw_reloc (struct bfd_link_info *);
 
 struct vector_type
 {
@@ -401,17 +406,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
 {
@@ -422,7 +422,7 @@ struct alpha_vms_vma_ref
 struct alpha_vms_shlib_el
 {
   bfd *abfd;
-  bfd_boolean has_fixups;
+  bool has_fixups;
 
   struct vector_type lp;	/* Vector of bfd_vma.  */
   struct vector_type ca;	/* Vector of bfd_vma.  */
@@ -463,7 +463,7 @@ struct alpha_vms_link_hash_entry
 /* Read & process EIHD record.
    Return TRUE on success, FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_eihd (bfd *abfd, unsigned int *eisd_offset,
 		     unsigned int *eihs_offset)
 {
@@ -478,7 +478,7 @@ _bfd_vms_slurp_eihd (bfd *abfd, unsigned
     {
       _bfd_error_handler (_("corrupt EIHD record - size is too small"));
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   size = bfd_getl32 (eihd->size);
@@ -503,14 +503,15 @@ _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;
+  return true;
 }
 
 /* Read & process EISD record.
    Return TRUE on success, FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_eisd (bfd *abfd, unsigned int offset)
 {
   int section_count = 0;
@@ -522,19 +523,19 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned
       struct vms_eisd *eisd;
       unsigned int rec_size;
       unsigned int size;
-      bfd_uint64_t vaddr;
+      uint64_t vaddr;
       unsigned int flags;
       unsigned int vbn;
       char *name = NULL;
       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)
-	return FALSE;
-      eisd = (struct vms_eisd *)(PRIV (recrd.rec) + offset);
+      /* 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);
       rec_size = bfd_getl32 (eisd->eisdsize);
       if (rec_size == 0)
 	break;
@@ -547,12 +548,11 @@ _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)
-	return FALSE;
+      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))
-	return FALSE;
+      if (rec_size > PRIV (recrd.rec_size) - offset)
+	return false;
 
       offset += rec_size;
 
@@ -592,13 +592,16 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned
 
       if (flags & EISD__M_GBL)
 	{
-	  if (rec_size < offsetof (struct vms_eisd, gblnam))
-	    return FALSE;
+	  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 +613,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)
@@ -626,23 +631,23 @@ _bfd_vms_slurp_eisd (bfd *abfd, unsigned
       section = bfd_make_section (abfd, name);
 
       if (!section)
-	return FALSE;
+	return false;
 
       section->filepos = vbn ? VMS_BLOCK_SIZE * (vbn - 1) : 0;
       section->size = size;
       section->vma = vaddr;
 
       if (!bfd_set_section_flags (section, bfd_flags))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read & process EIHS record.
    Return TRUE on success, FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_eihs (bfd *abfd, unsigned int offset)
 {
   unsigned char *p = PRIV (recrd.rec) + offset;
@@ -660,7 +665,7 @@ _bfd_vms_slurp_eihs (bfd *abfd, unsigned
       _bfd_error_handler (_("unable to read EIHS record at offset %#x"),
 			  offset);
       bfd_set_error (bfd_error_file_truncated);
-      return FALSE;
+      return false;
     }
 
   gstvbn   = bfd_getl32 (p + EIHS__L_GSTVBN);
@@ -682,13 +687,13 @@ _bfd_vms_slurp_eihs (bfd *abfd, unsigned
 
       section = bfd_make_section (abfd, "$DST$");
       if (!section)
-	return FALSE;
+	return false;
 
       section->size = dstsize;
       section->filepos = VMS_BLOCK_SIZE * (dstvbn - 1);
 
       if (!bfd_set_section_flags (section, bfd_flags))
-	return FALSE;
+	return false;
 
       PRIV (dst_section) = section;
       abfd->flags |= (HAS_DEBUG | HAS_LINENO);
@@ -700,13 +705,13 @@ _bfd_vms_slurp_eihs (bfd *abfd, unsigned
 
       section = bfd_make_section (abfd, "$DMT$");
       if (!section)
-	return FALSE;
+	return false;
 
       section->size = dmtbytes;
       section->filepos = VMS_BLOCK_SIZE * (dmtvbn - 1);
 
       if (!bfd_set_section_flags (section, bfd_flags))
-	return FALSE;
+	return false;
     }
 
   if (gstvbn)
@@ -714,16 +719,16 @@ _bfd_vms_slurp_eihs (bfd *abfd, unsigned
       if (bfd_seek (abfd, VMS_BLOCK_SIZE * (gstvbn - 1), SEEK_SET))
 	{
 	  bfd_set_error (bfd_error_file_truncated);
-	  return FALSE;
+	  return false;
 	}
 
       if (!_bfd_vms_slurp_object_records (abfd))
-	return FALSE;
+	return false;
 
       abfd->flags |= HAS_SYMS;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Object file reading.  */
@@ -797,7 +802,7 @@ _bfd_vms_get_object_record (bfd *abfd)
   /* Skip alignment byte if the current position is odd.  */
   if (PRIV (recrd.file_format) == FF_FOREIGN && (bfd_tell (abfd) & 1))
     {
-      if (bfd_bread (PRIV (recrd.buf), 1, abfd) != 1)
+      if (bfd_read (PRIV (recrd.buf), 1, abfd) != 1)
 	{
 	  bfd_set_error (bfd_error_file_truncated);
 	  return -1;
@@ -805,7 +810,7 @@ _bfd_vms_get_object_record (bfd *abfd)
     }
 
   /* Read the record header  */
-  if (bfd_bread (PRIV (recrd.buf), test_len, abfd) != test_len)
+  if (bfd_read (PRIV (recrd.buf), test_len, abfd) != test_len)
     {
       bfd_set_error (bfd_error_file_truncated);
       return -1;
@@ -861,7 +866,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;
@@ -875,7 +880,7 @@ vms_get_remaining_object_record (bfd *ab
 
   vms_debug2 ((8, "vms_get_remaining_obj_record: to_read %d\n", to_read));
 
-  if (bfd_bread (PRIV (recrd.buf) + read_so_far, to_read, abfd) != to_read)
+  if (bfd_read (PRIV (recrd.buf) + read_so_far, to_read, abfd) != to_read)
     {
       bfd_set_error (bfd_error_file_truncated);
       return 0;
@@ -894,7 +899,7 @@ vms_get_remaining_object_record (bfd *ab
 /* Read and process emh record.
    Return TRUE on success, FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_ehdr (bfd *abfd)
 {
   unsigned char *ptr;
@@ -924,36 +929,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:
@@ -964,10 +972,10 @@ _bfd_vms_slurp_ehdr (bfd *abfd)
     default:
     fail:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Typical sections for evax object files.  */
@@ -1107,7 +1115,7 @@ vms_esecflag_by_name (const struct sec_f
 /* Add SYM to the symbol table of ABFD.
    Return FALSE in case of error.  */
 
-static bfd_boolean
+static bool
 add_symbol_entry (bfd *abfd, struct vms_symbol_entry *sym)
 {
   if (PRIV (gsd_sym_count) >= PRIV (max_sym_count))
@@ -1121,28 +1129,36 @@ 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 *)));
 	}
       if (PRIV (syms) == NULL)
-	return FALSE;
+	return false;
     }
 
   PRIV (syms)[PRIV (gsd_sym_count)++] = sym;
-  return TRUE;
+  return true;
 }
 
 /* Create a symbol whose name is ASCIC and add it to ABFD.
    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;
@@ -1158,13 +1174,14 @@ add_symbol (bfd *abfd, const unsigned ch
 
 /* Read and process EGSD.  Return FALSE on failure.  */
 
-static bfd_boolean
+static bool
 _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"));
 
@@ -1173,14 +1190,14 @@ _bfd_vms_slurp_egsd (bfd *abfd)
       _bfd_error_handler (_("corrupt EGSD record: its size (%#x) is too small"),
 			  PRIV (recrd.rec_size));
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   PRIV (recrd.rec) += 8;	/* Skip type, size, align pad.  */
   PRIV (recrd.rec_size) -= 8;
 
   /* Calculate base address for each section.  */
-  base_addr = 0L;
+  base_addr = 0;
 
   while (PRIV (recrd.rec_size) > 4)
     {
@@ -1194,18 +1211,21 @@ _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;
+	  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;
+	  return false;
 	}
 
       switch (gsd_type)
@@ -1213,10 +1233,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,22 +1250,29 @@ _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)
-		  return FALSE;
+		  return false;
 
 		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;
@@ -1262,13 +1291,12 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 		    new_flags &= ~SEC_DATA;
 		  }
 		if (!bfd_set_section_flags (section, new_flags))
-		  return FALSE;
+		  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;
 	      }
 
@@ -1282,7 +1310,7 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 		PRIV (sections) = bfd_realloc_or_free
 		  (PRIV (sections), PRIV (section_max) * sizeof (asection *));
 		if (PRIV (sections) == NULL)
-		  return FALSE;
+		  return false;
 	      }
 
 	    PRIV (sections)[PRIV (section_count)] = section;
@@ -1292,20 +1320,24 @@ _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;
+	      return false;
 
 	    /* Allow only duplicate reference.  */
 	    if ((entry->flags & EGSY__V_DEF) && (old_flags & EGSY__V_DEF))
@@ -1320,21 +1352,22 @@ _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)
-		  return FALSE;
+		  return false;
 
 		psindx = bfd_getl32 (esdf->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)"),
+		  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;
+		    return false;
 		  }
 		entry->section = PRIV (sections)[psindx];
 
@@ -1344,14 +1377,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,14 +1391,15 @@ _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;
+	      return false;
 
+	    old_flags = bfd_getl16 (egst->header.flags);
 	    entry->typ = gsd_type;
 	    entry->data_type = egst->header.datyp;
 	    entry->flags = old_flags;
@@ -1379,19 +1408,12 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 
 	    if (old_flags & EGSY__V_REL)
 	      {
-		long psindx;
-
 		if (PRIV (sections) == NULL)
-		  return FALSE;
+		  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
@@ -1418,7 +1440,7 @@ _bfd_vms_slurp_egsd (bfd *abfd)
 	default:
 	  _bfd_error_handler (_("unknown EGSD subtype %d"), gsd_type);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
 
       PRIV (recrd.rec_size) -= gsd_size;
@@ -1430,14 +1452,14 @@ _bfd_vms_slurp_egsd (bfd *abfd)
   if (PRIV (gsd_sym_count) > 0)
     abfd->flags |= HAS_SYMS;
 
-  return TRUE;
+  return true;
 }
 
 /* Stack routines for vms ETIR commands.  */
 
 /* Push value and section index.  */
 
-static void
+static bool
 _bfd_vms_push (bfd *abfd, bfd_vma val, unsigned int reloc)
 {
   vms_debug2 ((4, "<push %08lx (0x%08x) at %d>\n",
@@ -1450,26 +1472,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 bool
 _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,77 +1550,111 @@ image_inc_ptr (bfd *abfd, bfd_vma offset
 
 /* Save current DST location counter under specified index.  */
 
-static void
+static bool
 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;
+      memset (PRIV (dst_ptr_offsets) + PRIV (dst_ptr_offsets_count), 0,
+	      (loc - PRIV (dst_ptr_offsets_count)) * sizeof (unsigned int));
       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 bool
 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 bool
+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.  */
 
-static bfd_boolean
+static bool
 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;
+  return true;
 }
 
 /* Write byte to section image.  */
 
-static bfd_boolean
+static bool
 image_write_b (bfd * abfd, unsigned int value)
 {
   unsigned char data[1];
@@ -1610,7 +1668,7 @@ image_write_b (bfd * abfd, unsigned int
 
 /* Write 2-byte word to image.  */
 
-static bfd_boolean
+static bool
 image_write_w (bfd * abfd, unsigned int value)
 {
   unsigned char data[2];
@@ -1623,7 +1681,7 @@ image_write_w (bfd * abfd, unsigned int
 
 /* Write 4-byte long to image.  */
 
-static bfd_boolean
+static bool
 image_write_l (bfd * abfd, unsigned long value)
 {
   unsigned char data[4];
@@ -1636,7 +1694,7 @@ image_write_l (bfd * abfd, unsigned long
 
 /* Write 8-byte quad to image.  */
 
-static bfd_boolean
+static bool
 image_write_q (bfd * abfd, bfd_vma value)
 {
   unsigned char data[8];
@@ -1746,7 +1804,7 @@ _bfd_vms_get_value (bfd *abfd,
   name[i] = 0;
 
   h = (struct alpha_vms_link_hash_entry *)
-    bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
+    bfd_link_hash_lookup (info->hash, name, false, false, true);
 
   *hp = h;
 
@@ -1761,7 +1819,7 @@ _bfd_vms_get_value (bfd *abfd,
   else
     {
       (*info->callbacks->undefined_symbol)
-	(info, name, abfd, PRIV (image_section), PRIV (image_offset), TRUE);
+	(info, name, abfd, PRIV (image_section), PRIV (image_offset), true);
       *vma = 0;
     }
 }
@@ -1831,16 +1889,16 @@ alpha_vms_fix_sec_rel (bfd *abfd, struct
    the output section (used during linking).
    Return FALSE in case of error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_etir (bfd *abfd, struct bfd_link_info *info)
 {
   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;
+	  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))
@@ -1923,10 +1989,11 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 		_bfd_error_handler (_("bad section index in %s"),
 				    _bfd_vms_etir_name (cmd));
 		bfd_set_error (bfd_error_bad_value);
-		return FALSE;
+		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;
 
@@ -1935,31 +2002,36 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	case ETIR__C_STA_CKARG:
 	  _bfd_error_handler (_("unsupported STA cmd %s"),
 			      _bfd_vms_etir_name (cmd));
-	  return FALSE;
+	  return false;
 	  break;
 
 	  /* 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:
@@ -2115,13 +2210,13 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	case ETIR__C_STO_LP_PSB:
 	  _bfd_error_handler (_("%s: not supported"),
 			      _bfd_vms_etir_name (cmd));
-	  return FALSE;
+	  return false;
 	  break;
 	case ETIR__C_STO_HINT_GBL:
 	case ETIR__C_STO_HINT_PS:
 	  _bfd_error_handler (_("%s: not implemented"),
 			      _bfd_vms_etir_name (cmd));
-	  return FALSE;
+	  return false;
 	  break;
 
 	  /* 200 Store-conditional Linkage Pair
@@ -2146,7 +2241,7 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	case ETIR__C_STC_PS:
 	  _bfd_error_handler (_("%s: not supported"),
 			      _bfd_vms_etir_name (cmd));
-	  return FALSE;
+	  return false;
 	  break;
 
 	  /* 201 Store-conditional Linkage Pair with Procedure Signature
@@ -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
@@ -2237,13 +2336,14 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	case ETIR__C_STC_NBH_PS:
 	  _bfd_error_handler (_("%s: not supported"),
 			      _bfd_vms_etir_name (cmd));
-	  return FALSE;
+	  return false;
 	  break;
 
 	  /* 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,81 +2430,123 @@ _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:
 	      _bfd_error_handler (_("invalid use of %s with contexts"),
 				  _bfd_vms_etir_name (cmd));
-	      return FALSE;
+	      return false;
+	    }
+	  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 ((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_vms_push (abfd, op1, RELC_NONE)) /* FIXME: sym.  */
+	    return false;
 	  break;
 
 	case ETIR__C_OPR_INSV:      /* Insert field.   */
@@ -2395,37 +2556,43 @@ _bfd_vms_slurp_etir (bfd *abfd, struct b
 	case ETIR__C_OPR_DFLIT:     /* Define a literal.  */
 	  _bfd_error_handler (_("%s: not supported"),
 			      _bfd_vms_etir_name (cmd));
-	  return FALSE;
+	  return false;
 	  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;
 
 	default:
 	  _bfd_error_handler (_("reserved cmd %d"), cmd);
-	  return FALSE;
+	  return false;
 	  break;
 	}
 
-      ptr += cmd_length - 4;
+      ptr += cmd_length;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Process EDBG/ETBT record.
    Return TRUE on success, FALSE on error  */
 
-static bfd_boolean
+static bool
 vms_slurp_debug (bfd *abfd)
 {
   asection *section = PRIV (dst_section);
@@ -2440,9 +2607,9 @@ vms_slurp_debug (bfd *abfd)
 
       section = bfd_make_section (abfd, "$DST$");
       if (!section)
-	return FALSE;
+	return false;
       if (!bfd_set_section_flags (section, flags))
-	return FALSE;
+	return false;
       PRIV (dst_section) = section;
     }
 
@@ -2450,16 +2617,16 @@ vms_slurp_debug (bfd *abfd)
   PRIV (image_offset) = section->size;
 
   if (!_bfd_vms_slurp_etir (abfd, NULL))
-    return FALSE;
+    return false;
 
   section->size = PRIV (image_offset);
-  return TRUE;
+  return true;
 }
 
 /* Process EDBG record.
    Return TRUE on success, FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_edbg (bfd *abfd)
 {
   vms_debug2 ((2, "EDBG\n"));
@@ -2472,7 +2639,7 @@ _bfd_vms_slurp_edbg (bfd *abfd)
 /* Process ETBT record.
    Return TRUE on success, FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_etbt (bfd *abfd)
 {
   vms_debug2 ((2, "ETBT\n"));
@@ -2485,7 +2652,7 @@ _bfd_vms_slurp_etbt (bfd *abfd)
 /* Process EEOM record.
    Return TRUE on success, FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_eeom (bfd *abfd)
 {
   struct vms_eeom *eeom = (struct vms_eeom *) PRIV (recrd.rec);
@@ -2497,7 +2664,7 @@ _bfd_vms_slurp_eeom (bfd *abfd)
     {
       _bfd_error_handler (_("corrupt EEOM record - size is too small"));
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   PRIV (eom_data).eom_l_total_lps = bfd_getl32 (eeom->total_lps);
@@ -2506,28 +2673,28 @@ _bfd_vms_slurp_eeom (bfd *abfd)
     {
       _bfd_error_handler (_("object module not error-free !"));
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
-  PRIV (eom_data).eom_has_transfer = FALSE;
+  PRIV (eom_data).eom_has_transfer = false;
   if (PRIV (recrd.rec_size) > 10)
     {
-      PRIV (eom_data).eom_has_transfer = TRUE;
+      PRIV (eom_data).eom_has_transfer = true;
       PRIV (eom_data).eom_b_tfrflg = eeom->tfrflg;
       PRIV (eom_data).eom_l_psindx = bfd_getl32 (eeom->psindx);
       PRIV (eom_data).eom_l_tfradr = bfd_getl32 (eeom->tfradr);
 
       abfd->start_address = PRIV (eom_data).eom_l_tfradr;
     }
-  return TRUE;
+  return true;
 }
 
 /* Slurp an ordered set of VMS object records.  Return FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_slurp_object_records (bfd * abfd)
 {
-  bfd_boolean err;
+  bool ok;
   int type;
 
   do
@@ -2538,53 +2705,53 @@ _bfd_vms_slurp_object_records (bfd * abf
       if (type < 0)
 	{
 	  vms_debug2 ((2, "next_record failed\n"));
-	  return FALSE;
+	  return false;
 	}
 
       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;
+	  return false;
 	}
     }
   while (type != EOBJ__C_EEOM);
 
-  return TRUE;
+  return true;
 }
 
 /* Initialize private data  */
-static bfd_boolean
+static bool
 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);
   if (abfd->tdata.any == NULL)
-    return FALSE;
+    return false;
 
   PRIV (recrd.file_format) = FF_UNKNOWN;
 
@@ -2593,21 +2760,36 @@ vms_initialize (bfd * abfd)
   if (PRIV (stack) == NULL)
     goto error_ret1;
 
-  return TRUE;
+  return true;
 
  error_ret1:
   bfd_release (abfd, abfd->tdata.any);
   abfd->tdata.any = NULL;
-  return FALSE;
+  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;
   unsigned int test_len;
   unsigned char *buf;
 
@@ -2615,10 +2797,10 @@ alpha_vms_object_p (bfd *abfd)
 
   /* Allocate alpha-vms specific data.  */
   if (!vms_initialize (abfd))
-    goto error_ret;
+    return NULL;
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET))
-    goto err_wrong_format;
+  if (bfd_seek (abfd, 0, SEEK_SET))
+    goto error_ret;
 
   /* The first challenge with VMS is to discover the kind of the file.
 
@@ -2637,27 +2819,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 +2839,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, 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,17 +2902,14 @@ 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));
-  if (abfd->tdata.any != tdata_save && abfd->tdata.any != NULL)
-    bfd_release (abfd, abfd->tdata.any);
-  abfd->tdata.any = tdata_save;
+  alpha_vms_free_private (abfd);
+  bfd_release (abfd, abfd->tdata.any);
   return NULL;
 }
 
@@ -2767,10 +2917,11 @@ alpha_vms_object_p (bfd *abfd)
 
 /* Write an EMH/MHD record.  */
 
-static void
+static bool
 _bfd_vms_write_emh (bfd *abfd)
 {
   struct vms_rec_wr *recwr = &PRIV (recwr);
+  unsigned char tbuf[18];
 
   _bfd_vms_output_alignment (recwr, 2);
 
@@ -2785,7 +2936,7 @@ _bfd_vms_write_emh (bfd *abfd)
   /* Create module name from filename.  */
   if (bfd_get_filename (abfd) != 0)
     {
-      char *module = vms_get_module_name (bfd_get_filename (abfd), TRUE);
+      char *module = vms_get_module_name (bfd_get_filename (abfd), true);
       _bfd_vms_output_counted (recwr, module);
       free (module);
     }
@@ -2793,14 +2944,14 @@ _bfd_vms_write_emh (bfd *abfd)
     _bfd_vms_output_counted (recwr, "NONAME");
 
   _bfd_vms_output_counted (recwr, BFD_VERSION_STRING);
-  _bfd_vms_output_dump (recwr, get_vms_time_string (), EMH_DATE_LENGTH);
+  _bfd_vms_output_dump (recwr, get_vms_time_string (tbuf), EMH_DATE_LENGTH);
   _bfd_vms_output_fill (recwr, 0, EMH_DATE_LENGTH);
-  _bfd_vms_output_end (abfd, recwr);
+  return _bfd_vms_output_end (abfd, recwr);
 }
 
 /* Write an EMH/LMN record.  */
 
-static void
+static bool
 _bfd_vms_write_lmn (bfd *abfd, const char *name)
 {
   char version [64];
@@ -2813,13 +2964,13 @@ _bfd_vms_write_lmn (bfd *abfd, const cha
   snprintf (version, sizeof (version), "%s %d.%d.%d", name,
 	    ver / 10000, (ver / 100) % 100, ver % 100);
   _bfd_vms_output_dump (recwr, (unsigned char *)version, strlen (version));
-  _bfd_vms_output_end (abfd, recwr);
+  return _bfd_vms_output_end (abfd, recwr);
 }
 
 
 /* Write eom record for bfd abfd.  Return FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_write_eeom (bfd *abfd)
 {
   struct vms_rec_wr *recwr = &PRIV (recwr);
@@ -2842,7 +2993,7 @@ _bfd_vms_write_eeom (bfd *abfd)
       if (section == 0)
 	{
 	  bfd_set_error (bfd_error_nonrepresentable_section);
-	  return FALSE;
+	  return false;
 	}
       _bfd_vms_output_short (recwr, 0);
       _bfd_vms_output_long (recwr, (unsigned long) section->target_index);
@@ -2851,26 +3002,39 @@ _bfd_vms_write_eeom (bfd *abfd)
       _bfd_vms_output_long (recwr, 0);
     }
 
-  _bfd_vms_output_end (abfd, recwr);
-  return TRUE;
+  return _bfd_vms_output_end (abfd, recwr);
 }
 
-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.  */
@@ -2926,7 +3090,7 @@ alpha_vms_append_extra_eisd (bfd *abfd,
 /* Create an EISD for shared image SHRIMG.
    Return FALSE in case of error.  */
 
-static bfd_boolean
+static bool
 alpha_vms_create_eisd_for_shared (bfd *abfd, bfd *shrimg)
 {
   struct vms_internal_eisd_map *eisd;
@@ -2936,12 +3100,12 @@ alpha_vms_create_eisd_for_shared (bfd *a
   if (namlen + 5 > EISD__K_GBLNAMLEN)
     {
       /* Won't fit.  */
-      return FALSE;
+      return false;
     }
 
   eisd = bfd_alloc (abfd, sizeof (*eisd));
   if (eisd == NULL)
-    return FALSE;
+    return false;
 
   /* Fill the fields.  */
   eisd->u.gbl_eisd.common.majorid = EISD__K_MAJORID;
@@ -2964,25 +3128,25 @@ alpha_vms_create_eisd_for_shared (bfd *a
   /* Append it to the list.  */
   alpha_vms_append_extra_eisd (abfd, eisd);
 
-  return TRUE;
+  return true;
 }
 
 /* Create an EISD for section SEC.
    Return FALSE in case of failure.  */
 
-static bfd_boolean
+static bool
 alpha_vms_create_eisd_for_section (bfd *abfd, asection *sec)
 {
   struct vms_internal_eisd_map *eisd;
 
   /* Only for allocating section.  */
   if (!(sec->flags & SEC_ALLOC))
-    return TRUE;
+    return true;
 
   BFD_ASSERT (vms_section_data (sec)->eisd == NULL);
   eisd = bfd_alloc (abfd, sizeof (*eisd));
   if (eisd == NULL)
-    return FALSE;
+    return false;
   vms_section_data (sec)->eisd = eisd;
 
   /* Fill the fields.  */
@@ -3026,13 +3190,13 @@ alpha_vms_create_eisd_for_section (bfd *
     PRIV (eisd_tail)->next = eisd;
   PRIV (eisd_tail) = eisd;
 
-  return TRUE;
+  return true;
 }
 
 /* Layout executable ABFD and write it to the disk.
    Return FALSE in case of failure.  */
 
-static bfd_boolean
+static bool
 alpha_vms_write_exec (bfd *abfd)
 {
   struct vms_eihd eihd;
@@ -3082,7 +3246,7 @@ alpha_vms_write_exec (bfd *abfd)
   bfd_putl32 (16, eihd.virt_mem_block_size);
   bfd_putl32 (0, eihd.ext_fixup_off);
   bfd_putl32 (0, eihd.noopt_psect_off);
-  bfd_putl32 (-1, eihd.alias);
+  bfd_putl16 (-1, eihd.alias);
 
   /* Alloc EIHA.  */
   eiha = (struct vms_eiha *)((char *) &eihd + PRIV (file_pos));
@@ -3109,7 +3273,7 @@ alpha_vms_write_exec (bfd *abfd)
     unsigned int len;
 
     /* Set module name.  */
-    module = vms_get_module_name (bfd_get_filename (abfd), TRUE);
+    module = vms_get_module_name (bfd_get_filename (abfd), true);
     len = strlen (module);
     if (len > sizeof (eihi->imgnam) - 1)
       len = sizeof (eihi->imgnam) - 1;
@@ -3153,7 +3317,7 @@ alpha_vms_write_exec (bfd *abfd)
   for (sec = abfd->sections; sec; sec = sec->next)
     {
       if (!alpha_vms_create_eisd_for_section (abfd, sec))
-	return FALSE;
+	return false;
     }
 
   /* Merge section EIDS which extra ones.  */
@@ -3171,7 +3335,7 @@ alpha_vms_write_exec (bfd *abfd)
     {
       eisd = bfd_zalloc (abfd, sizeof (*eisd));
       if (eisd == NULL)
-	return FALSE;
+	return false;
       eisd->u.eisd.majorid = 0;
       eisd->u.eisd.minorid = 0;
       eisd->u.eisd.eisdsize = 0;
@@ -3210,7 +3374,8 @@ alpha_vms_write_exec (bfd *abfd)
   /* Place sections.  */
   for (sec = abfd->sections; sec; sec = sec->next)
     {
-      if (!(sec->flags & SEC_HAS_CONTENTS))
+      if (!(sec->flags & SEC_HAS_CONTENTS)
+	  || sec->contents == NULL)
 	continue;
 
       eisd = vms_section_data (sec)->eisd;
@@ -3254,8 +3419,8 @@ alpha_vms_write_exec (bfd *abfd)
 
   /* Write first block.  */
   bfd_putl32 (lnkflags, eihd.lnkflags);
-  if (bfd_bwrite (&eihd, sizeof (eihd), abfd) != sizeof (eihd))
-    return FALSE;
+  if (bfd_write (&eihd, sizeof (eihd), abfd) != sizeof (eihd))
+    return false;
 
   /* Write remaining eisd.  */
   if (eisd != NULL)
@@ -3275,8 +3440,8 @@ alpha_vms_write_exec (bfd *abfd)
 	      || (next_eisd->file_pos / VMS_BLOCK_SIZE
 		  != eisd->file_pos / VMS_BLOCK_SIZE))
 	    {
-	      if (bfd_bwrite (blk, sizeof (blk), abfd) != sizeof (blk))
-		return FALSE;
+	      if (bfd_write (blk, sizeof (blk), abfd) != sizeof (blk))
+		return false;
 
 	      memset (blk, 0xff, sizeof (blk));
 	    }
@@ -3290,18 +3455,19 @@ alpha_vms_write_exec (bfd *abfd)
       unsigned char blk[VMS_BLOCK_SIZE];
       bfd_size_type len;
 
-      if (sec->size == 0 || !(sec->flags & SEC_HAS_CONTENTS))
+      if (sec->size == 0 || !(sec->flags & SEC_HAS_CONTENTS)
+	  || sec->contents == NULL)
 	continue;
-      if (bfd_bwrite (sec->contents, sec->size, abfd) != sec->size)
-	return FALSE;
+      if (bfd_write (sec->contents, sec->size, abfd) != sec->size)
+	return false;
 
       /* Pad.  */
       len = VMS_BLOCK_SIZE - sec->size % VMS_BLOCK_SIZE;
       if (len != VMS_BLOCK_SIZE)
 	{
 	  memset (blk, 0, len);
-	  if (bfd_bwrite (blk, len, abfd) != len)
-	    return FALSE;
+	  if (bfd_write (blk, len, abfd) != len)
+	    return false;
 	}
     }
 
@@ -3311,8 +3477,9 @@ alpha_vms_write_exec (bfd *abfd)
       struct vms_rec_wr *recwr = &PRIV (recwr);
       unsigned int i;
 
-      _bfd_vms_write_emh (abfd);
-      _bfd_vms_write_lmn (abfd, "GNU LD");
+      if (!_bfd_vms_write_emh (abfd)
+	  || !_bfd_vms_write_lmn (abfd, "GNU LD"))
+	return false;
 
       /* PSC for the absolute section.  */
       _bfd_vms_output_begin (recwr, EOBJ__C_EGSD);
@@ -3323,7 +3490,8 @@ alpha_vms_write_exec (bfd *abfd)
       _bfd_vms_output_long (recwr, 0);
       _bfd_vms_output_counted (recwr, ".$$ABS$$.");
       _bfd_vms_output_end_subrec (recwr);
-      _bfd_vms_output_end (abfd, recwr);
+      if (!_bfd_vms_output_end (abfd, recwr))
+	return false;
 
       for (i = 0; i < PRIV (gsd_sym_count); i++)
 	{
@@ -3356,23 +3524,25 @@ alpha_vms_write_exec (bfd *abfd)
 	  _bfd_vms_output_long (recwr, 0);
 	  _bfd_vms_output_counted (recwr, sym->name);
 	  _bfd_vms_output_end_subrec (recwr);
-	  if ((i % 5) == 4)
-	    _bfd_vms_output_end (abfd, recwr);
-	}
-      if ((i % 5) != 0)
-	_bfd_vms_output_end (abfd, recwr);
+	  if ((i % 5) == 4
+	      && !_bfd_vms_output_end (abfd, recwr))
+	    return false;
+	}
+      if ((i % 5) != 0
+	  && !_bfd_vms_output_end (abfd, recwr))
+	return false;
 
       if (!_bfd_vms_write_eeom (abfd))
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Object write.  */
 
 /* Write section and symbol directory of bfd abfd.  Return FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_write_egsd (bfd *abfd)
 {
   asection *section;
@@ -3418,7 +3588,8 @@ _bfd_vms_write_egsd (bfd *abfd)
       /* 13 bytes egsd, max 31 chars name -> should be 44 bytes.  */
       if (_bfd_vms_output_check (recwr, 64) < 0)
 	{
-	  _bfd_vms_output_end (abfd, recwr);
+	  if (!_bfd_vms_output_end (abfd, recwr))
+	    return false;
 	  _bfd_vms_output_begin (recwr, EOBJ__C_EGSD);
 	  _bfd_vms_output_long (recwr, 0);
 	}
@@ -3514,7 +3685,8 @@ _bfd_vms_write_egsd (bfd *abfd)
 	 bytes for a possible ABS section.  */
       if (_bfd_vms_output_check (recwr, 80 + 16) < 0)
 	{
-	  _bfd_vms_output_end (abfd, recwr);
+	  if (!_bfd_vms_output_end (abfd, recwr))
+	    return false;
 	  _bfd_vms_output_begin (recwr, EOBJ__C_EGSD);
 	  _bfd_vms_output_long (recwr, 0);
 	}
@@ -3593,14 +3765,12 @@ _bfd_vms_write_egsd (bfd *abfd)
     }
 
   _bfd_vms_output_alignment (recwr, 8);
-  _bfd_vms_output_end (abfd, recwr);
-
-  return TRUE;
+  return _bfd_vms_output_end (abfd, recwr);
 }
 
 /* Write object header for bfd abfd.  Return FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_write_ehdr (bfd *abfd)
 {
   asymbol *symbol;
@@ -3611,8 +3781,9 @@ _bfd_vms_write_ehdr (bfd *abfd)
 
   _bfd_vms_output_alignment (recwr, 2);
 
-  _bfd_vms_write_emh (abfd);
-  _bfd_vms_write_lmn (abfd, "GNU AS");
+  if (!_bfd_vms_write_emh (abfd)
+      || !_bfd_vms_write_lmn (abfd, "GNU AS"))
+    return false;
 
   /* SRC.  */
   _bfd_vms_output_begin (recwr, EOBJ__C_EMH);
@@ -3633,13 +3804,15 @@ _bfd_vms_write_ehdr (bfd *abfd)
   if (symnum == abfd->symcount)
     _bfd_vms_output_dump (recwr, (unsigned char *) STRING_COMMA_LEN ("noname"));
 
-  _bfd_vms_output_end (abfd, recwr);
+  if (!_bfd_vms_output_end (abfd, recwr))
+    return false;
 
   /* TTL.  */
   _bfd_vms_output_begin (recwr, EOBJ__C_EMH);
   _bfd_vms_output_short (recwr, EMH__C_TTL);
   _bfd_vms_output_dump (recwr, (unsigned char *) STRING_COMMA_LEN ("TTL"));
-  _bfd_vms_output_end (abfd, recwr);
+  if (!_bfd_vms_output_end (abfd, recwr))
+    return false;
 
   /* CPR.  */
   _bfd_vms_output_begin (recwr, EOBJ__C_EMH);
@@ -3647,9 +3820,7 @@ _bfd_vms_write_ehdr (bfd *abfd)
   _bfd_vms_output_dump (recwr,
 			(unsigned char *)"GNU BFD ported by Klaus KÃ¤mpf 1994-1996",
 			 39);
-  _bfd_vms_output_end (abfd, recwr);
-
-  return TRUE;
+  return _bfd_vms_output_end (abfd, recwr);
 }
 
 /* Part 4.6, relocations.  */
@@ -3661,12 +3832,12 @@ _bfd_vms_write_ehdr (bfd *abfd)
 
 /* Close the etir/etbt record.  */
 
-static void
+static bool
 end_etir_record (bfd * abfd)
 {
   struct vms_rec_wr *recwr = &PRIV (recwr);
 
-  _bfd_vms_output_end (abfd, recwr);
+  return _bfd_vms_output_end (abfd, recwr);
 }
 
 static void
@@ -3712,7 +3883,7 @@ start_etir_or_etbt_record (bfd *abfd, as
 /* Output a STO_IMM command for SSIZE bytes of data from CPR at virtual
    address VADDR in section specified by SEC_INDEX and NAME.  */
 
-static void
+static bool
 sto_imm (bfd *abfd, asection *section,
 	 bfd_size_type ssize, unsigned char *cptr, bfd_vma vaddr)
 {
@@ -3732,7 +3903,8 @@ sto_imm (bfd *abfd, asection *section,
       if (_bfd_vms_output_check (recwr, size) < 0)
 	{
 	  /* Doesn't fit, split !  */
-	  end_etir_record (abfd);
+	  if (!end_etir_record (abfd))
+	    return false;
 
 	  start_etir_or_etbt_record (abfd, section, vaddr);
 
@@ -3755,22 +3927,25 @@ sto_imm (bfd *abfd, asection *section,
       cptr += size;
       ssize -= size;
     }
+  return true;
 }
 
-static void
+static bool
 etir_output_check (bfd *abfd, asection *section, bfd_vma vaddr, int checklen)
 {
   if (_bfd_vms_output_check (&PRIV (recwr), checklen) < 0)
     {
       /* Not enough room in this record.  Close it and open a new one.  */
-      end_etir_record (abfd);
+      if (!end_etir_record (abfd))
+	return false;
       start_etir_or_etbt_record (abfd, section, vaddr);
     }
+  return true;
 }
 
 /* Return whether RELOC must be deferred till the end.  */
 
-static bfd_boolean
+static bool
 defer_reloc_p (arelent *reloc)
 {
   switch (reloc->howto->type)
@@ -3779,16 +3954,16 @@ defer_reloc_p (arelent *reloc)
     case ALPHA_R_LDA:
     case ALPHA_R_BSR:
     case ALPHA_R_BOH:
-      return TRUE;
+      return true;
 
     default:
-      return FALSE;
+      return false;
     }
 }
 
 /* Write section contents for bfd abfd.  Return FALSE on error.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_write_etir (bfd * abfd, int objtype ATTRIBUTE_UNUSED)
 {
   asection *section;
@@ -3812,7 +3987,7 @@ _bfd_vms_write_etir (bfd * abfd, int obj
       if (!section->contents)
 	{
 	  bfd_set_error (bfd_error_no_contents);
-	  return FALSE;
+	  return false;
 	}
 
       start_etir_or_etbt_record (abfd, section, 0);
@@ -3860,7 +4035,7 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 	      bfd_vma addr = rptr->address;
 	      asymbol *sym = *rptr->sym_ptr_ptr;
 	      asection *sec = sym->section;
-	      bfd_boolean defer = defer_reloc_p (rptr);
+	      bool defer = defer_reloc_p (rptr);
 	      unsigned int slen;
 
 	      if (pass2_in_progress)
@@ -3883,7 +4058,8 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		    _bfd_error_handler (_("size error in section %pA"),
 					section);
 		  size = addr - curr_addr;
-		  sto_imm (abfd, section, size, curr_data, curr_addr);
+		  if (!sto_imm (abfd, section, size, curr_data, curr_addr))
+		    return false;
 		  curr_data += size;
 		  curr_addr += size;
 		}
@@ -3900,7 +4076,8 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		    {
 		      bfd_vma addend = rptr->addend;
 		      slen = strlen ((char *) sym->name);
-		      etir_output_check (abfd, section, curr_addr, slen);
+		      if (!etir_output_check (abfd, section, curr_addr, slen))
+			return false;
 		      if (addend)
 			{
 			  _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_GBL);
@@ -3924,7 +4101,8 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		    }
 		  else if (bfd_is_abs_section (sym->section))
 		    {
-		      etir_output_check (abfd, section, curr_addr, 16);
+		      if (!etir_output_check (abfd, section, curr_addr, 16))
+			return false;
 		      _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_LW);
 		      _bfd_vms_output_long (recwr, (unsigned long) sym->value);
 		      _bfd_vms_output_end_subrec (recwr);
@@ -3933,7 +4111,8 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		    }
 		  else
 		    {
-		      etir_output_check (abfd, section, curr_addr, 32);
+		      if (!etir_output_check (abfd, section, curr_addr, 32))
+			return false;
 		      _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_PQ);
 		      _bfd_vms_output_long (recwr,
 					    (unsigned long) sec->target_index);
@@ -3953,7 +4132,8 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		    {
 		      bfd_vma addend = rptr->addend;
 		      slen = strlen ((char *) sym->name);
-		      etir_output_check (abfd, section, curr_addr, slen);
+		      if (!etir_output_check (abfd, section, curr_addr, slen))
+			return false;
 		      if (addend)
 			{
 			  _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_GBL);
@@ -3976,7 +4156,8 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		    }
 		  else if (bfd_is_abs_section (sym->section))
 		    {
-		      etir_output_check (abfd, section, curr_addr, 16);
+		      if (!etir_output_check (abfd, section, curr_addr, 16))
+			return false;
 		      _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_QW);
 		      _bfd_vms_output_quad (recwr, sym->value);
 		      _bfd_vms_output_end_subrec (recwr);
@@ -3985,7 +4166,8 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		    }
 		  else
 		    {
-		      etir_output_check (abfd, section, curr_addr, 32);
+		      if (!etir_output_check (abfd, section, curr_addr, 32))
+			return false;
 		      _bfd_vms_output_begin_subrec (recwr, ETIR__C_STA_PQ);
 		      _bfd_vms_output_long (recwr,
 					    (unsigned long) sec->target_index);
@@ -3997,12 +4179,14 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		  break;
 
 		case ALPHA_R_HINT:
-		  sto_imm (abfd, section, size, curr_data, curr_addr);
+		  if (!sto_imm (abfd, section, size, curr_data, curr_addr))
+		    return false;
 		  break;
 
 		case ALPHA_R_LINKAGE:
 		  size = 16;
-		  etir_output_check (abfd, section, curr_addr, 64);
+		  if (!etir_output_check (abfd, section, curr_addr, 64))
+		    return false;
 		  _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_LP_PSB);
 		  _bfd_vms_output_long
 		    (recwr, (unsigned long) rptr->addend);
@@ -4015,7 +4199,8 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 
 		case ALPHA_R_CODEADDR:
 		  slen = strlen ((char *) sym->name);
-		  etir_output_check (abfd, section, curr_addr, slen);
+		  if (!etir_output_check (abfd, section, curr_addr, slen))
+		    return false;
 		  _bfd_vms_output_begin_subrec (recwr, ETIR__C_STO_CA);
 		  _bfd_vms_output_counted (recwr, sym->name);
 		  _bfd_vms_output_end_subrec (recwr);
@@ -4024,8 +4209,9 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		case ALPHA_R_NOP:
 		  udata
 		    = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr;
-		  etir_output_check (abfd, section, curr_addr,
-				     32 + 1 + strlen (udata->origname));
+		  if (!etir_output_check (abfd, section, curr_addr,
+					  32 + 1 + strlen (udata->origname)))
+		    return false;
 		  _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_NOP_GBL);
 		  _bfd_vms_output_long (recwr, (unsigned long) udata->lkindex);
 		  _bfd_vms_output_long
@@ -4046,8 +4232,9 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		case ALPHA_R_LDA:
 		  udata
 		    = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr;
-		  etir_output_check (abfd, section, curr_addr,
-				     32 + 1 + strlen (udata->origname));
+		  if (!etir_output_check (abfd, section, curr_addr,
+					  32 + 1 + strlen (udata->origname)))
+		    return false;
 		  _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_LDA_GBL);
 		  _bfd_vms_output_long
 		    (recwr, (unsigned long) udata->lkindex + 1);
@@ -4065,8 +4252,9 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 		case ALPHA_R_BOH:
 		  udata
 		    = (struct evax_private_udata_struct *) rptr->sym_ptr_ptr;
-		  etir_output_check (abfd, section, curr_addr,
-				       32 + 1 + strlen (udata->origname));
+		  if (!etir_output_check (abfd, section, curr_addr,
+					  32 + 1 + strlen (udata->origname)))
+		    return false;
 		  _bfd_vms_output_begin_subrec (recwr, ETIR__C_STC_BOH_GBL);
 		  _bfd_vms_output_long (recwr, (unsigned long) udata->lkindex);
 		  _bfd_vms_output_long
@@ -4096,10 +4284,11 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 	      if (curr_addr > section->size)
 		{
 		  _bfd_error_handler (_("size error in section %pA"), section);
-		  return FALSE;
+		  return false;
 		}
 	      size = section->size - curr_addr;
-	      sto_imm (abfd, section, size, curr_data, curr_addr);
+	      if (!sto_imm (abfd, section, size, curr_data, curr_addr))
+		return false;
 	      curr_data += size;
 	      curr_addr += size;
 
@@ -4112,18 +4301,20 @@ _bfd_vms_write_etir (bfd * abfd, int obj
 	}
 
       else /* (section->flags & SEC_RELOC) */
-	sto_imm (abfd, section, section->size, section->contents, 0);
+	if (!sto_imm (abfd, section, section->size, section->contents, 0))
+	  return false;
 
-      end_etir_record (abfd);
+      if (!end_etir_record (abfd))
+	return false;
     }
 
   _bfd_vms_output_alignment (recwr, 2);
-  return TRUE;
+  return true;
 }
 
 /* Write cached information into a file being written, at bfd_close.  */
 
-static bfd_boolean
+static bool
 alpha_vms_write_object_contents (bfd *abfd)
 {
   vms_debug2 ((1, "vms_write_object_contents (%p)\n", abfd));
@@ -4137,16 +4328,16 @@ alpha_vms_write_object_contents (bfd *ab
       if (abfd->section_count > 0)			/* we have sections */
 	{
 	  if (!_bfd_vms_write_ehdr (abfd))
-	    return FALSE;
+	    return false;
 	  if (!_bfd_vms_write_egsd (abfd))
-	    return FALSE;
+	    return false;
 	  if (!_bfd_vms_write_etir (abfd, EOBJ__C_ETIR))
-	    return FALSE;
+	    return false;
 	  if (!_bfd_vms_write_eeom (abfd))
-	    return FALSE;
+	    return false;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Debug stuff: nearest line.  */
@@ -4164,15 +4355,15 @@ new_module (bfd *abfd)
     = (struct module *) bfd_zalloc (abfd, sizeof (struct module));
   module->file_table_count = 16; /* Arbitrary.  */
   module->file_table
-    = bfd_malloc (module->file_table_count * sizeof (struct fileinfo));
+    = bfd_zmalloc (module->file_table_count * sizeof (struct fileinfo));
   return module;
 }
 
 /* Parse debug info for a module and internalize it.  */
 
-static void
+static bool
 parse_module (bfd *abfd, struct module *module, unsigned char *ptr,
-	      int length)
+	      bfd_size_type length)
 {
   unsigned char *maxptr = ptr + length;
   unsigned char *src_ptr, *pcl_ptr;
@@ -4184,12 +4375,16 @@ parse_module (bfd *abfd, struct module *
 
   /* Initialize tables with zero element.  */
   curr_srec = (struct srecinfo *) bfd_zalloc (abfd, sizeof (struct srecinfo));
+  if (!curr_srec)
+    return false;
   module->srec_table = curr_srec;
 
   curr_line = (struct lineinfo *) bfd_zalloc (abfd, sizeof (struct lineinfo));
+  if (!curr_line)
+    return false;
   module->line_table = curr_line;
 
-  while (length == -1 || ptr < maxptr)
+  while (ptr + 3 < maxptr)
     {
       /* The first byte is not counted in the recorded length.  */
       int rec_length = bfd_getl16 (ptr) + 1;
@@ -4197,15 +4392,19 @@ parse_module (bfd *abfd, struct module *
 
       vms_debug2 ((2, "DST record: leng %d, type %d\n", rec_length, rec_type));
 
-      if (length == -1 && rec_type == DST__K_MODEND)
+      if (rec_length > maxptr - ptr)
+	break;
+      if (rec_type == DST__K_MODEND)
 	break;
 
       switch (rec_type)
 	{
 	case DST__K_MODBEG:
+	  if (rec_length <= DST_S_B_MODBEG_NAME)
+	    break;
 	  module->name
-	    = _bfd_vms_save_counted_string (ptr + DST_S_B_MODBEG_NAME,
-					    maxptr - (ptr + DST_S_B_MODBEG_NAME));
+	    = _bfd_vms_save_counted_string (abfd, ptr + DST_S_B_MODBEG_NAME,
+					    rec_length - DST_S_B_MODBEG_NAME);
 
 	  curr_pc = 0;
 	  prev_pc = 0;
@@ -4219,11 +4418,15 @@ parse_module (bfd *abfd, struct module *
 	  break;
 
 	case DST__K_RTNBEG:
+	  if (rec_length <= DST_S_B_RTNBEG_NAME)
+	    break;
 	  funcinfo = (struct funcinfo *)
 	    bfd_zalloc (abfd, sizeof (struct funcinfo));
+	  if (!funcinfo)
+	    return false;
 	  funcinfo->name
-	    = _bfd_vms_save_counted_string (ptr + DST_S_B_RTNBEG_NAME,
-					    maxptr - (ptr + DST_S_B_RTNBEG_NAME));
+	    = _bfd_vms_save_counted_string (abfd, ptr + DST_S_B_RTNBEG_NAME,
+					    rec_length - DST_S_B_RTNBEG_NAME);
 	  funcinfo->low = bfd_getl32 (ptr + DST_S_L_RTNBEG_ADDRESS);
 	  funcinfo->next = module->func_table;
 	  module->func_table = funcinfo;
@@ -4233,6 +4436,10 @@ parse_module (bfd *abfd, struct module *
 	  break;
 
 	case DST__K_RTNEND:
+	  if (rec_length < DST_S_L_RTNEND_SIZE + 4)
+	    break;
+	  if (!module->func_table)
+	    return false;
 	  module->func_table->high = module->func_table->low
 	    + bfd_getl32 (ptr + DST_S_L_RTNEND_SIZE) - 1;
 
@@ -4263,34 +4470,90 @@ parse_module (bfd *abfd, struct module *
 
 	  vms_debug2 ((3, "source info\n"));
 
-	  while (src_ptr < ptr + rec_length)
+	  while (src_ptr - ptr < rec_length)
 	    {
 	      int cmd = src_ptr[0], cmd_length, data;
 
 	      switch (cmd)
 		{
 		case DST__K_SRC_DECLFILE:
+		  if (src_ptr - ptr + DST_S_B_SRC_DF_LENGTH >= rec_length)
+		    cmd_length = 0x10000;
+		  else
+		    cmd_length = src_ptr[DST_S_B_SRC_DF_LENGTH] + 2;
+		  break;
+
+		case DST__K_SRC_DEFLINES_B:
+		  cmd_length = 2;
+		  break;
+
+		case DST__K_SRC_DEFLINES_W:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_SRC_INCRLNUM_B:
+		  cmd_length = 2;
+		  break;
+
+		case DST__K_SRC_SETFILE:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_SRC_SETLNUM_L:
+		  cmd_length = 5;
+		  break;
+
+		case DST__K_SRC_SETLNUM_W:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_SRC_SETREC_L:
+		  cmd_length = 5;
+		  break;
+
+		case DST__K_SRC_SETREC_W:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_SRC_FORMFEED:
+		  cmd_length = 1;
+		  break;
+
+		default:
+		  cmd_length = 2;
+		  break;
+		}
+
+	      if (src_ptr - ptr + cmd_length > rec_length)
+		break;
+
+	      switch (cmd)
+		{
+		case DST__K_SRC_DECLFILE:
 		  {
 		    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)
+		    if (fileid >= module->file_table_count)
 		      {
-			module->file_table_count *= 2;
+			unsigned int old_count = module->file_table_count;
+			module->file_table_count += fileid;
 			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;
+			memset (module->file_table + old_count, 0,
+				fileid * sizeof (struct fileinfo));
 		      }
 
 		    module->file_table [fileid].name = filename;
 		    module->file_table [fileid].srec = 1;
-		    cmd_length = src_ptr[DST_S_B_SRC_DF_LENGTH] + 2;
 		    vms_debug2 ((4, "DST_S_C_SRC_DECLFILE: %d, %s\n",
 				 fileid, module->file_table [fileid].name));
 		  }
@@ -4307,7 +4570,6 @@ parse_module (bfd *abfd, struct module *
 		  srec->sfile = curr_srec->sfile;
 		  curr_srec->next = srec;
 		  curr_srec = srec;
-		  cmd_length = 2;
 		  vms_debug2 ((4, "DST_S_C_SRC_DEFLINES_B: %d\n", data));
 		  break;
 
@@ -4322,36 +4584,34 @@ parse_module (bfd *abfd, struct module *
 		  srec->sfile = curr_srec->sfile;
 		  curr_srec->next = srec;
 		  curr_srec = srec;
-		  cmd_length = 3;
 		  vms_debug2 ((4, "DST_S_C_SRC_DEFLINES_W: %d\n", data));
 		  break;
 
 		case DST__K_SRC_INCRLNUM_B:
 		  data = src_ptr[DST_S_B_SRC_UNSBYTE];
 		  curr_srec->line += data;
-		  cmd_length = 2;
 		  vms_debug2 ((4, "DST_S_C_SRC_INCRLNUM_B: %d\n", data));
 		  break;
 
 		case DST__K_SRC_SETFILE:
 		  data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD);
-		  curr_srec->sfile = data;
-		  curr_srec->srec = module->file_table[data].srec;
-		  cmd_length = 3;
+		  if ((unsigned int) data < module->file_table_count)
+		    {
+		      curr_srec->sfile = data;
+		      curr_srec->srec = module->file_table[data].srec;
+		    }
 		  vms_debug2 ((4, "DST_S_C_SRC_SETFILE: %d\n", data));
 		  break;
 
 		case DST__K_SRC_SETLNUM_L:
 		  data = bfd_getl32 (src_ptr + DST_S_L_SRC_UNSLONG);
 		  curr_srec->line = data;
-		  cmd_length = 5;
 		  vms_debug2 ((4, "DST_S_C_SRC_SETLNUM_L: %d\n", data));
 		  break;
 
 		case DST__K_SRC_SETLNUM_W:
 		  data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD);
 		  curr_srec->line = data;
-		  cmd_length = 3;
 		  vms_debug2 ((4, "DST_S_C_SRC_SETLNUM_W: %d\n", data));
 		  break;
 
@@ -4359,7 +4619,6 @@ parse_module (bfd *abfd, struct module *
 		  data = bfd_getl32 (src_ptr + DST_S_L_SRC_UNSLONG);
 		  curr_srec->srec = data;
 		  module->file_table[curr_srec->sfile].srec = data;
-		  cmd_length = 5;
 		  vms_debug2 ((4, "DST_S_C_SRC_SETREC_L: %d\n", data));
 		  break;
 
@@ -4367,19 +4626,16 @@ parse_module (bfd *abfd, struct module *
 		  data = bfd_getl16 (src_ptr + DST_S_W_SRC_UNSWORD);
 		  curr_srec->srec = data;
 		  module->file_table[curr_srec->sfile].srec = data;
-		  cmd_length = 3;
 		  vms_debug2 ((4, "DST_S_C_SRC_SETREC_W: %d\n", data));
 		  break;
 
 		case DST__K_SRC_FORMFEED:
-		  cmd_length = 1;
 		  vms_debug2 ((4, "DST_S_C_SRC_FORMFEED\n"));
 		  break;
 
 		default:
 		  _bfd_error_handler (_("unknown source command %d"),
 				      cmd);
-		  cmd_length = 2;
 		  break;
 		}
 
@@ -4392,7 +4648,7 @@ parse_module (bfd *abfd, struct module *
 
 	  vms_debug2 ((3, "line info\n"));
 
-	  while (pcl_ptr < ptr + rec_length)
+	  while (pcl_ptr - ptr < rec_length)
 	    {
 	      /* The command byte is signed so we must sign-extend it.  */
 	      int cmd = ((signed char *)pcl_ptr)[0], cmd_length, data;
@@ -4400,10 +4656,106 @@ parse_module (bfd *abfd, struct module *
 	      switch (cmd)
 		{
 		case DST__K_DELTA_PC_W:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_DELTA_PC_L:
+		  cmd_length = 5;
+		  break;
+
+		case DST__K_INCR_LINUM:
+		  cmd_length = 2;
+		  break;
+
+		case DST__K_INCR_LINUM_W:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_INCR_LINUM_L:
+		  cmd_length = 5;
+		  break;
+
+		case DST__K_SET_LINUM_INCR:
+		  cmd_length = 2;
+		  break;
+
+		case DST__K_SET_LINUM_INCR_W:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_RESET_LINUM_INCR:
+		  cmd_length = 1;
+		  break;
+
+		case DST__K_BEG_STMT_MODE:
+		  cmd_length = 1;
+		  break;
+
+		case DST__K_END_STMT_MODE:
+		  cmd_length = 1;
+		  break;
+
+		case DST__K_SET_LINUM_B:
+		  cmd_length = 2;
+		  break;
+
+		case DST__K_SET_LINUM:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_SET_LINUM_L:
+		  cmd_length = 5;
+		  break;
+
+		case DST__K_SET_PC:
+		  cmd_length = 2;
+		  break;
+
+		case DST__K_SET_PC_W:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_SET_PC_L:
+		  cmd_length = 5;
+		  break;
+
+		case DST__K_SET_STMTNUM:
+		  cmd_length = 2;
+		  break;
+
+		case DST__K_TERM:
+		  cmd_length = 2;
+		  break;
+
+		case DST__K_TERM_W:
+		  cmd_length = 3;
+		  break;
+
+		case DST__K_TERM_L:
+		  cmd_length = 5;
+		  break;
+
+		case DST__K_SET_ABS_PC:
+		  cmd_length = 5;
+		  break;
+
+		default:
+		  if (cmd <= 0)
+		    cmd_length = 1;
+		  else
+		    cmd_length = 2;
+		  break;
+		}
+
+	      if (pcl_ptr - ptr + cmd_length > rec_length)
+		break;
+
+	      switch (cmd)
+		{
+		case DST__K_DELTA_PC_W:
 		  data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD);
 		  curr_pc += data;
 		  curr_linenum += 1;
-		  cmd_length = 3;
 		  vms_debug2 ((4, "DST__K_DELTA_PC_W: %d\n", data));
 		  break;
 
@@ -4411,131 +4763,111 @@ parse_module (bfd *abfd, struct module *
 		  data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG);
 		  curr_pc += data;
 		  curr_linenum += 1;
-		  cmd_length = 5;
 		  vms_debug2 ((4, "DST__K_DELTA_PC_L: %d\n", data));
 		  break;
 
 		case DST__K_INCR_LINUM:
 		  data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE];
 		  curr_linenum += data;
-		  cmd_length = 2;
 		  vms_debug2 ((4, "DST__K_INCR_LINUM: %d\n", data));
 		  break;
 
 		case DST__K_INCR_LINUM_W:
 		  data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD);
 		  curr_linenum += data;
-		  cmd_length = 3;
 		  vms_debug2 ((4, "DST__K_INCR_LINUM_W: %d\n", data));
 		  break;
 
 		case DST__K_INCR_LINUM_L:
 		  data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG);
 		  curr_linenum += data;
-		  cmd_length = 5;
 		  vms_debug2 ((4, "DST__K_INCR_LINUM_L: %d\n", data));
 		  break;
 
 		case DST__K_SET_LINUM_INCR:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_SET_LINUM_INCR");
-		  cmd_length = 2;
 		  break;
 
 		case DST__K_SET_LINUM_INCR_W:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_SET_LINUM_INCR_W");
-		  cmd_length = 3;
 		  break;
 
 		case DST__K_RESET_LINUM_INCR:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_RESET_LINUM_INCR");
-		  cmd_length = 1;
 		  break;
 
 		case DST__K_BEG_STMT_MODE:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_BEG_STMT_MODE");
-		  cmd_length = 1;
 		  break;
 
 		case DST__K_END_STMT_MODE:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_END_STMT_MODE");
-		  cmd_length = 1;
 		  break;
 
 		case DST__K_SET_LINUM_B:
 		  data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE];
 		  curr_linenum = data;
-		  cmd_length = 2;
 		  vms_debug2 ((4, "DST__K_SET_LINUM_B: %d\n", data));
 		  break;
 
 		case DST__K_SET_LINUM:
 		  data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD);
 		  curr_linenum = data;
-		  cmd_length = 3;
 		  vms_debug2 ((4, "DST__K_SET_LINE_NUM: %d\n", data));
 		  break;
 
 		case DST__K_SET_LINUM_L:
 		  data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG);
 		  curr_linenum = data;
-		  cmd_length = 5;
 		  vms_debug2 ((4, "DST__K_SET_LINUM_L: %d\n", data));
 		  break;
 
 		case DST__K_SET_PC:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_SET_PC");
-		  cmd_length = 2;
 		  break;
 
 		case DST__K_SET_PC_W:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_SET_PC_W");
-		  cmd_length = 3;
 		  break;
 
 		case DST__K_SET_PC_L:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_SET_PC_L");
-		  cmd_length = 5;
 		  break;
 
 		case DST__K_SET_STMTNUM:
 		  _bfd_error_handler
 		    (_("%s not implemented"), "DST__K_SET_STMTNUM");
-		  cmd_length = 2;
 		  break;
 
 		case DST__K_TERM:
 		  data = pcl_ptr[DST_S_B_PCLINE_UNSBYTE];
 		  curr_pc += data;
-		  cmd_length = 2;
 		  vms_debug2 ((4, "DST__K_TERM: %d\n", data));
 		  break;
 
 		case DST__K_TERM_W:
 		  data = bfd_getl16 (pcl_ptr + DST_S_W_PCLINE_UNSWORD);
 		  curr_pc += data;
-		  cmd_length = 3;
 		  vms_debug2 ((4, "DST__K_TERM_W: %d\n", data));
 		  break;
 
 		case DST__K_TERM_L:
 		  data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG);
 		  curr_pc += data;
-		  cmd_length = 5;
 		  vms_debug2 ((4, "DST__K_TERM_L: %d\n", data));
 		  break;
 
 		case DST__K_SET_ABS_PC:
 		  data = bfd_getl32 (pcl_ptr + DST_S_L_PCLINE_UNSLONG);
 		  curr_pc = data;
-		  cmd_length = 5;
 		  vms_debug2 ((4, "DST__K_SET_ABS_PC: 0x%x\n", data));
 		  break;
 
@@ -4544,15 +4876,11 @@ parse_module (bfd *abfd, struct module *
 		    {
 		      curr_pc -= cmd;
 		      curr_linenum += 1;
-		      cmd_length = 1;
 		      vms_debug2 ((4, "bump pc to 0x%lx and line to %d\n",
 				   (unsigned long)curr_pc, curr_linenum));
 		    }
 		  else
-		    {
-		      _bfd_error_handler (_("unknown line command %d"), cmd);
-		      cmd_length = 2;
-		    }
+		    _bfd_error_handler (_("unknown line command %d"), cmd);
 		  break;
 		}
 
@@ -4607,6 +4935,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.  */
@@ -4624,30 +4953,26 @@ build_module_list (bfd *abfd)
 	 since we can compute the start address and the end address
 	 of every module from the section contents.  */
       bfd_size_type size = bfd_section_size (dmt);
-      unsigned char *ptr, *end;
+      unsigned char *buf, *ptr, *end;
 
-      ptr = (unsigned char *) bfd_alloc (abfd, size);
-      if (! ptr)
-	return NULL;
-
-      if (! bfd_get_section_contents (abfd, dmt, ptr, 0, size))
+      if (! bfd_malloc_and_get_section (abfd, dmt, &buf))
 	return NULL;
 
       vms_debug2 ((2, "DMT\n"));
 
+      ptr = buf;
       end = ptr + size;
-
-      while (ptr < end)
+      while (end - ptr >= DBG_S_C_DMT_HEADER_SIZE)
 	{
 	  /* Each header declares a module with its start offset and size
 	     of debug info in the DST section, as well as the count of
 	     program sections (i.e. address spans) it contains.  */
-	  int modbeg = bfd_getl32 (ptr + DBG_S_L_DMT_MODBEG);
-	  int msize = bfd_getl32 (ptr + DBG_S_L_DST_SIZE);
+	  unsigned int modbeg = bfd_getl32 (ptr + DBG_S_L_DMT_MODBEG);
+	  unsigned int msize = bfd_getl32 (ptr + DBG_S_L_DST_SIZE);
 	  int count = bfd_getl16 (ptr + DBG_S_W_DMT_PSECT_COUNT);
 	  ptr += DBG_S_C_DMT_HEADER_SIZE;
 
-	  vms_debug2 ((3, "module: modbeg = %d, size = %d, count = %d\n",
+	  vms_debug2 ((3, "module: modbeg = %u, size = %u, count = %d\n",
 		       modbeg, msize, count));
 
 	  /* We create a 'module' structure for each program section since
@@ -4655,10 +4980,10 @@ build_module_list (bfd *abfd)
 	     As a consequence, the actual debug info in the DST section is
 	     shared and can be parsed multiple times; that doesn't seem to
 	     cause problems in practice.  */
-	  while (count-- > 0)
+	  while (count-- > 0 && end - ptr >= DBG_S_C_DMT_PSECT_SIZE)
 	    {
-	      int start = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_START);
-	      int length = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_LENGTH);
+	      unsigned int start = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_START);
+	      unsigned int length = bfd_getl32 (ptr + DBG_S_L_DMT_PSECT_LENGTH);
 	      module = new_module (abfd);
 	      module->modbeg = modbeg;
 	      module->size = msize;
@@ -4668,10 +4993,11 @@ build_module_list (bfd *abfd)
 	      list = module;
 	      ptr += DBG_S_C_DMT_PSECT_SIZE;
 
-	      vms_debug2 ((4, "section: start = 0x%x, length = %d\n",
+	      vms_debug2 ((4, "section: start = 0x%x, length = %u\n",
 			   start, length));
 	    }
 	}
+      free (buf);
     }
   else
     {
@@ -4684,7 +5010,9 @@ 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,
+			 PRIV (dst_section)->size))
+	return NULL;
       list = module;
     }
 
@@ -4694,7 +5022,7 @@ build_module_list (bfd *abfd)
 /* Calculate and return the name of the source file and the line nearest
    to the wanted location in the specified module.  */
 
-static bfd_boolean
+static bool
 module_find_nearest_line (bfd *abfd, struct module *module, bfd_vma addr,
 			  const char **file, const char **func,
 			  unsigned int *line)
@@ -4702,24 +5030,26 @@ module_find_nearest_line (bfd *abfd, str
   struct funcinfo *funcinfo;
   struct lineinfo *lineinfo;
   struct srecinfo *srecinfo;
-  bfd_boolean ret = FALSE;
+  bool ret = false;
 
   /* Parse this module if that was not done at module creation.  */
   if (! IS_MODULE_PARSED (module))
     {
       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;
+	  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.  */
@@ -4727,7 +5057,7 @@ module_find_nearest_line (bfd *abfd, str
     if (addr >= funcinfo->low && addr <= funcinfo->high)
       {
 	*func = funcinfo->name;
-	ret = TRUE;
+	ret = true;
 	break;
       }
 
@@ -4748,7 +5078,7 @@ module_find_nearest_line (bfd *abfd, str
 		  *file = module->name;
 		  *line = lineinfo->line;
 		}
-	      return TRUE;
+	      return true;
 	    }
 
 	break;
@@ -4761,7 +5091,7 @@ module_find_nearest_line (bfd *abfd, str
    return the name of the source file and the line nearest to the wanted
    location.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_find_nearest_line (bfd *abfd,
 			    asymbol **symbols ATTRIBUTE_UNUSED,
 			    asection *section,
@@ -4784,27 +5114,27 @@ _bfd_vms_find_nearest_line (bfd *abfd,
 
   /* We can't do anything if there is no DST (debug symbol table).  */
   if (PRIV (dst_section) == NULL)
-    return FALSE;
+    return false;
 
   /* Create the module list - if not already done.  */
   if (PRIV (modules) == NULL)
     {
       PRIV (modules) = build_module_list (abfd);
       if (PRIV (modules) == NULL)
-	return FALSE;
+	return false;
     }
 
   for (module = PRIV (modules); module; module = module->next)
     if (addr >= module->low && addr <= module->high)
       return module_find_nearest_line (abfd, module, addr, file, func, line);
 
-  return FALSE;
+  return false;
 }
 
 /* Canonicalizations.  */
 /* Set name, value, section and flags of SYM from E.  */
 
-static bfd_boolean
+static bool
 alpha_vms_convert_symbol (bfd *abfd, struct vms_symbol_entry *e, asymbol *sym)
 {
   flagword flags;
@@ -4862,14 +5192,14 @@ alpha_vms_convert_symbol (bfd *abfd, str
       break;
 
     default:
-      return FALSE;
+      return false;
     }
 
   sym->name = name;
   sym->section = sec;
   sym->flags = flags;
   sym->value = value;
-  return TRUE;
+  return true;
 }
 
 
@@ -4934,7 +5264,7 @@ alpha_vms_canonicalize_symtab (bfd *abfd
 
 /* Read and convert relocations from ETIR.  We do it once for all sections.  */
 
-static bfd_boolean
+static bool
 alpha_vms_slurp_relocs (bfd *abfd)
 {
   int cur_psect = -1;
@@ -4942,15 +5272,14 @@ alpha_vms_slurp_relocs (bfd *abfd)
   vms_debug2 ((3, "alpha_vms_slurp_relocs\n"));
 
   /* We slurp relocs only once, for all sections.  */
-  if (PRIV (reloc_done))
-      return TRUE;
-  PRIV (reloc_done) = TRUE;
+  if (PRIV (reloc_done) != 0)
+    return PRIV (reloc_done) == 1;
 
   if (alpha_vms_canonicalize_symtab (abfd, NULL) < 0)
-    return FALSE;
+    goto fail;
 
   if (bfd_seek (abfd, 0, SEEK_SET) != 0)
-    return FALSE;
+    goto fail;
 
   while (1)
     {
@@ -4971,6 +5300,8 @@ alpha_vms_slurp_relocs (bfd *abfd)
 
       /* Skip non-ETIR records.  */
       type = _bfd_vms_get_object_record (abfd);
+      if (type < 0)
+	goto fail;
       if (type == EOBJ__C_EEOM)
 	break;
       if (type != EOBJ__C_ETIR)
@@ -4979,12 +5310,18 @@ alpha_vms_slurp_relocs (bfd *abfd)
       begin = PRIV (recrd.rec) + 4;
       end = PRIV (recrd.rec) + PRIV (recrd.rec_size);
 
-      for (ptr = begin; ptr < end; ptr += length)
+      for (ptr = begin; ptr + 4 <= end; ptr += length)
 	{
 	  int cmd;
 
 	  cmd = bfd_getl16 (ptr);
 	  length = bfd_getl16 (ptr + 2);
+	  if (length < 4 || length > end - ptr)
+	    {
+	    bad_rec:
+	      _bfd_error_handler (_("corrupt reloc record"));
+	      goto fail;
+	    }
 
 	  cur_address = vaddr;
 
@@ -5000,6 +5337,8 @@ alpha_vms_slurp_relocs (bfd *abfd)
 	      continue;
 
 	    case ETIR__C_STA_PQ: /* ALPHA_R_REF{LONG|QUAD}, others part 1 */
+	      if (length < 16)
+		goto bad_rec;
 	      cur_psidx = bfd_getl32 (ptr + 4);
 	      cur_addend = bfd_getl64 (ptr + 8);
 	      prev_cmd = cmd;
@@ -5012,7 +5351,7 @@ alpha_vms_slurp_relocs (bfd *abfd)
 		    /* xgettext:c-format */
 		    (_("unknown reloc %s + %s"), _bfd_vms_etir_name (prev_cmd),
 		     _bfd_vms_etir_name (cmd));
-		  return FALSE;
+		  goto fail;
 		}
 	      cur_psect = cur_psidx;
 	      vaddr = cur_addend;
@@ -5030,9 +5369,11 @@ alpha_vms_slurp_relocs (bfd *abfd)
 			/* xgettext:c-format */
 			(_("unknown reloc %s + %s"), _bfd_vms_etir_name (cmd),
 			 _bfd_vms_etir_name (ETIR__C_STA_LW));
-		      return FALSE;
+		      goto fail;
 		    }
 		}
+	      if (length < 8)
+		goto bad_rec;
 	      cur_addend = bfd_getl32 (ptr + 4);
 	      prev_cmd = cmd;
 	      continue;
@@ -5045,8 +5386,10 @@ alpha_vms_slurp_relocs (bfd *abfd)
 		    /* xgettext:c-format */
 		    (_("unknown reloc %s + %s"), _bfd_vms_etir_name (cmd),
 		     _bfd_vms_etir_name (ETIR__C_STA_QW));
-		  return FALSE;
+		  goto fail;
 		}
+	      if (length < 12)
+		goto bad_rec;
 	      cur_addend = bfd_getl64 (ptr + 4);
 	      prev_cmd = cmd;
 	      continue;
@@ -5062,7 +5405,7 @@ alpha_vms_slurp_relocs (bfd *abfd)
 		  _bfd_error_handler (_("unknown reloc %s + %s"),
 				      _bfd_vms_etir_name (prev_cmd),
 				      _bfd_vms_etir_name (ETIR__C_STO_LW));
-		  return FALSE;
+		  goto fail;
 		}
 	      reloc_code = BFD_RELOC_32;
 	      break;
@@ -5075,7 +5418,7 @@ alpha_vms_slurp_relocs (bfd *abfd)
 		  _bfd_error_handler (_("unknown reloc %s + %s"),
 				      _bfd_vms_etir_name (prev_cmd),
 				      _bfd_vms_etir_name (ETIR__C_STO_QW));
-		  return FALSE;
+		  goto fail;
 		}
 	      reloc_code = BFD_RELOC_64;
 	      break;
@@ -5087,7 +5430,7 @@ alpha_vms_slurp_relocs (bfd *abfd)
 		  _bfd_error_handler (_("unknown reloc %s + %s"),
 				      _bfd_vms_etir_name (prev_cmd),
 				      _bfd_vms_etir_name (ETIR__C_STO_OFF));
-		  return FALSE;
+		  goto fail;
 		}
 	      reloc_code = BFD_RELOC_64;
 	      break;
@@ -5100,7 +5443,7 @@ alpha_vms_slurp_relocs (bfd *abfd)
 		  _bfd_error_handler (_("unknown reloc %s + %s"),
 				      _bfd_vms_etir_name (prev_cmd),
 				      _bfd_vms_etir_name (ETIR__C_OPR_ADD));
-		  return FALSE;
+		  goto fail;
 		}
 	      prev_cmd = ETIR__C_OPR_ADD;
 	      continue;
@@ -5142,19 +5485,23 @@ alpha_vms_slurp_relocs (bfd *abfd)
 	      goto call_reloc;
 
 	    call_reloc:
+	      if (length < 36)
+		goto bad_rec;
 	      cur_sym = ptr + 4 + 32;
 	      cur_address = bfd_getl64 (ptr + 4 + 8);
 	      cur_addend = bfd_getl64 (ptr + 4 + 24);
 	      break;
 
 	    case ETIR__C_STO_IMM:
+	      if (length < 8)
+		goto bad_rec;
 	      vaddr += bfd_getl32 (ptr + 4);
 	      continue;
 
 	    default:
 	      _bfd_error_handler (_("unknown reloc %s"),
 				  _bfd_vms_etir_name (cmd));
-	      return FALSE;
+	      goto fail;
 	    }
 
 	  {
@@ -5167,16 +5514,16 @@ alpha_vms_slurp_relocs (bfd *abfd)
 	    if (cur_psect < 0 || cur_psect > (int)PRIV (section_count))
 	      {
 		_bfd_error_handler (_("invalid section index in ETIR"));
-		return FALSE;
+		goto fail;
 	      }
 
 	    if (PRIV (sections) == NULL)
-	      return FALSE;
+	      goto fail;
 	    sec = PRIV (sections)[cur_psect];
 	    if (sec == bfd_abs_section_ptr)
 	      {
 		_bfd_error_handler (_("relocation for non-REL psect"));
-		return FALSE;
+		goto fail;
 	      }
 
 	    vms_sec = vms_section_data (sec);
@@ -5193,8 +5540,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)
+		      goto fail;
 		  }
 	      }
 	    reloc = &sec->relocation[sec->reloc_count];
@@ -5205,12 +5554,16 @@ alpha_vms_slurp_relocs (bfd *abfd)
 	    if (cur_sym != NULL)
 	      {
 		unsigned int j;
-		unsigned int symlen = *cur_sym;
+		int symlen;
 		asymbol **sym;
 
 		/* Linear search.  */
+		if (end - cur_sym < 1)
+		  goto bad_rec;
 		symlen = *cur_sym;
 		cur_sym++;
+		if (end - cur_sym < symlen)
+		  goto bad_rec;
 		sym = NULL;
 
 		for (j = 0; j < PRIV (gsd_sym_count); j++)
@@ -5232,9 +5585,8 @@ alpha_vms_slurp_relocs (bfd *abfd)
 	    else if (cur_psidx >= 0)
 	      {
 		if (PRIV (sections) == NULL || cur_psidx >= (int) PRIV (section_count))
-		  return FALSE;
-		reloc->sym_ptr_ptr =
-		  PRIV (sections)[cur_psidx]->symbol_ptr_ptr;
+		  goto fail;
+		reloc->sym_ptr_ptr = &PRIV (sections)[cur_psidx]->symbol;
 	      }
 	    else
 	      reloc->sym_ptr_ptr = NULL;
@@ -5255,9 +5607,13 @@ alpha_vms_slurp_relocs (bfd *abfd)
 	  cur_psidx = -1;
 	}
     }
-  vms_debug2 ((3, "alpha_vms_slurp_relocs: result = TRUE\n"));
-
-  return TRUE;
+  vms_debug2 ((3, "alpha_vms_slurp_relocs: result = true\n"));
+  PRIV (reloc_done) = 1;
+  return true;
+
+fail:
+  PRIV (reloc_done) = -1;
+  return false;
 }
 
 /* Return the number of bytes required to store the relocation
@@ -5266,9 +5622,10 @@ alpha_vms_slurp_relocs (bfd *abfd)
 static long
 alpha_vms_get_reloc_upper_bound (bfd *abfd ATTRIBUTE_UNUSED, asection *section)
 {
-  alpha_vms_slurp_relocs (abfd);
+  if (!alpha_vms_slurp_relocs (abfd))
+    return -1;
 
-  return (section->reloc_count + 1) * sizeof (arelent *);
+  return (section->reloc_count + 1L) * sizeof (arelent *);
 }
 
 /* Convert relocations from VMS (external) form into BFD internal
@@ -5335,276 +5692,276 @@ static reloc_howto_type alpha_howto_tabl
 {
   HOWTO (ALPHA_R_IGNORE,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 0,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 1,			/* Size.  */
 	 8,			/* Bitsize.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "IGNORE",		/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0,			/* Source mask */
 	 0,			/* Dest mask.  */
-	 TRUE),			/* PC rel offset.  */
+	 true),			/* PC rel offset.  */
 
   /* A 64 bit reference to a symbol.  */
   HOWTO (ALPHA_R_REFQUAD,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 4,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 8,			/* Size.  */
 	 64,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_bitfield, /* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "REFQUAD",		/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 MINUS_ONE,		/* Source mask.  */
 	 MINUS_ONE,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* A 21 bit branch.  The native assembler generates these for
      branches within the text segment, and also fills in the PC
      relative offset in the instruction.  */
   HOWTO (ALPHA_R_BRADDR,	/* Type.  */
 	 2,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 21,			/* Bitsize.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "BRADDR",		/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0x1fffff,		/* Source mask.  */
 	 0x1fffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* A hint for a jump to a register.  */
   HOWTO (ALPHA_R_HINT,		/* Type.  */
 	 2,			/* Rightshift.  */
-	 1,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* Size.  */
 	 14,			/* Bitsize.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "HINT",		/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0x3fff,		/* Source mask.  */
 	 0x3fff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* 16 bit PC relative offset.  */
   HOWTO (ALPHA_R_SREL16,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 1,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 2,			/* Size.  */
 	 16,			/* Bitsize.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "SREL16",		/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xffff,		/* Source mask.  */
 	 0xffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* 32 bit PC relative offset.  */
   HOWTO (ALPHA_R_SREL32,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "SREL32",		/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xffffffff,		/* Source mask.  */
 	 0xffffffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* A 64 bit PC relative offset.  */
   HOWTO (ALPHA_R_SREL64,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 4,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 8,			/* Size.  */
 	 64,			/* Bitsize.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed, /* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "SREL64",		/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 MINUS_ONE,		/* Source mask.  */
 	 MINUS_ONE,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* Push a value on the reloc evaluation stack.  */
   HOWTO (ALPHA_R_OP_PUSH,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 0,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "OP_PUSH",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Source mask.  */
 	 0,			/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* Store the value from the stack at the given address.  Store it in
      a bitfield of size r_size starting at bit position r_offset.  */
   HOWTO (ALPHA_R_OP_STORE,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 4,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 8,			/* Size.  */
 	 64,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "OP_STORE",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Source mask.  */
 	 MINUS_ONE,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* Subtract the reloc address from the value on the top of the
      relocation stack.  */
   HOWTO (ALPHA_R_OP_PSUB,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 0,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "OP_PSUB",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Source mask.  */
 	 0,			/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* Shift the value on the top of the relocation stack right by the
      given value.  */
   HOWTO (ALPHA_R_OP_PRSHIFT,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 0,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "OP_PRSHIFT",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Source mask.  */
 	 0,			/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* Hack. Linkage is done by linker.  */
   HOWTO (ALPHA_R_LINKAGE,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 0,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "LINKAGE",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0,			/* Source mask.  */
 	 0,			/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* A 32 bit reference to a symbol.  */
   HOWTO (ALPHA_R_REFLONG,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 2,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 4,			/* Size.  */
 	 32,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_bitfield, /* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "REFLONG",		/* Name.  */
-	 TRUE,			/* Partial_inplace.  */
+	 true,			/* Partial_inplace.  */
 	 0xffffffff,		/* Source mask.  */
 	 0xffffffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   /* A 64 bit reference to a procedure, written as 32 bit value.  */
   HOWTO (ALPHA_R_CODEADDR,	/* Type.  */
 	 0,			/* Rightshift.  */
-	 4,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 8,			/* Size.  */
 	 64,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_signed,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "CODEADDR",		/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Source mask.  */
 	 0xffffffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   HOWTO (ALPHA_R_NOP,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 3,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
 	 /* The following value must match that of ALPHA_R_BSR/ALPHA_R_BOH
 	    because the calculations for the 3 relocations are the same.
 	    See B.4.5.2 of the OpenVMS Linker Utility Manual.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.   */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "NOP",			/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Source mask.  */
 	 0xffffffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   HOWTO (ALPHA_R_BSR,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 3,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "BSR",			/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Source mask.  */
 	 0xffffffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   HOWTO (ALPHA_R_LDA,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 3,			/* Size (0 = byte, 1 = short, 2 = long).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 FALSE,			/* PC relative.  */
+	 false,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "LDA",			/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Source mask.  */
 	 0xffffffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 
   HOWTO (ALPHA_R_BOH,		/* Type.  */
 	 0,			/* Rightshift.  */
-	 3,			/* Size (0 = byte, 1 = short, 2 = long, 3 = nil).  */
+	 0,			/* Size.  */
 	 0,			/* Bitsize.  */
-	 TRUE,			/* PC relative.  */
+	 true,			/* PC relative.  */
 	 0,			/* Bitpos.  */
 	 complain_overflow_dont,/* Complain_on_overflow.  */
 	 reloc_nil,		/* Special_function.  */
 	 "BOH",			/* Name.  */
-	 FALSE,			/* Partial_inplace.  */
+	 false,			/* Partial_inplace.  */
 	 0xffffffff,		/* Source mask.  */
 	 0xffffffff,		/* Dest mask.  */
-	 FALSE),		/* PC rel offset.  */
+	 false),		/* PC rel offset.  */
 };
 
 /* Return a pointer to a howto structure which, when invoked, will perform
@@ -5712,7 +6069,7 @@ alpha_vms_get_synthetic_symtab (bfd *abf
       l = strlen (name);
       sname = bfd_alloc (abfd, l + 5);
       if (sname == NULL)
-	return FALSE;
+	return false;
       memcpy (sname, name, l);
       memcpy (sname + l, "..en", 5);
 
@@ -5746,20 +6103,23 @@ static void
 evax_bfd_print_emh (FILE *file, unsigned char *rec, unsigned int rec_len)
 {
   struct vms_emh_common *emh = (struct vms_emh_common *)rec;
-  unsigned int subtype;
+  int subtype = -1;
   int extra;
 
-  subtype = (unsigned) bfd_getl16 (emh->subtyp);
+  if (rec_len >= sizeof (*emh))
+    subtype = bfd_getl16 (emh->subtyp);
 
   /* xgettext:c-format */
-  fprintf (file, _("  EMH %u (len=%u): "), subtype, rec_len);
+  fprintf (file, _("  EMH %d (len=%u): "), subtype, rec_len);
 
   /* PR 21618: Check for invalid lengths.  */
-  if (rec_len < sizeof (* emh))
+  if (rec_len < sizeof (*emh))
     {
-      fprintf (file, _("   Error: The length is less than the length of an EMH record\n"));
+      fprintf (file, _("   Error: %s min length is %u\n"),
+	       "EMH", (unsigned) sizeof (*emh));
       return;
     }
+
   extra = rec_len - sizeof (struct vms_emh_common);
 
   switch (subtype)
@@ -5767,22 +6127,23 @@ evax_bfd_print_emh (FILE *file, unsigned
     case EMH__C_MHD:
       {
 	struct vms_emh_mhd *mhd = (struct vms_emh_mhd *) rec;
-	const char * name;
-	const char * nextname;
-	const char * maxname;
+	unsigned char *name;
+	unsigned char *nextname;
+	unsigned char *maxname;
 
 	/* PR 21840: Check for invalid lengths.  */
 	if (rec_len < sizeof (* mhd))
 	  {
-	    fprintf (file, _("   Error: The record length is less than the size of an EMH_MHD record\n"));
+	    fprintf (file, _("   Error: %s min length is %u\n"),
+		     "EMH_MHD", (unsigned) sizeof (*mhd));
 	    return;
 	  }
 	fprintf (file, _("Module header\n"));
 	fprintf (file, _("   structure level: %u\n"), mhd->strlvl);
 	fprintf (file, _("   max record size: %u\n"),
 		 (unsigned) bfd_getl32 (mhd->recsiz));
-	name = (char *)(mhd + 1);
-	maxname = (char *) rec + rec_len;
+	name = (unsigned char *) (mhd + 1);
+	maxname = (unsigned char *) rec + rec_len;
 	if (name > maxname - 2)
 	  {
 	    fprintf (file, _("   Error: The module name is missing\n"));
@@ -5850,9 +6211,10 @@ evax_bfd_print_eeom (FILE *file, unsigne
   fprintf (file, _("  EEOM (len=%u):\n"), rec_len);
 
   /* PR 21618: Check for invalid lengths.  */
-  if (rec_len < sizeof (* eeom))
+  if (rec_len < 10)
     {
-      fprintf (file, _("   Error: The length is less than the length of an EEOM record\n"));
+      fprintf (file, _("   Error: %s min length is %u\n"),
+	       "EEOM", 10);
       return;
     }
 
@@ -5860,7 +6222,8 @@ evax_bfd_print_eeom (FILE *file, unsigne
 	   (unsigned)bfd_getl32 (eeom->total_lps));
   fprintf (file, _("   completion code: %u\n"),
 	   (unsigned)bfd_getl16 (eeom->comcod));
-  if (rec_len > 10)
+
+  if (rec_len >= sizeof (*eeom))
     {
       fprintf (file, _("   transfer addr flags: 0x%02x\n"), eeom->tfrflg);
       fprintf (file, _("   transfer addr psect: %u\n"),
@@ -5926,16 +6289,18 @@ static void
 evax_bfd_print_egsd (FILE *file, unsigned char *rec, unsigned int rec_len)
 {
   unsigned int off = sizeof (struct vms_egsd);
-  unsigned int n;
+  unsigned int n = 0;
 
   fprintf (file, _("  EGSD (len=%u):\n"), rec_len);
+  if (rec_len < sizeof (struct vms_egsd) + sizeof (struct vms_egsd_entry))
+    return;
 
-  n = 0;
-  for (off = sizeof (struct vms_egsd); off < rec_len; )
+  while (off <= rec_len - sizeof (struct vms_egsd_entry))
     {
       struct vms_egsd_entry *e = (struct vms_egsd_entry *)(rec + off);
       unsigned int type;
       unsigned int len;
+      unsigned int rest;
 
       type = (unsigned)bfd_getl16 (e->gsdtyp);
       len = (unsigned)bfd_getl16 (e->gsdsiz);
@@ -5945,174 +6310,212 @@ evax_bfd_print_egsd (FILE *file, unsigne
 	       n, type, len);
       n++;
 
-      if (off + len > rec_len || off + len < off)
+      if (len < sizeof (struct vms_egsd_entry) || len > rec_len - off)
 	{
-	  fprintf (file, _("   Error: length larger than remaining space in record\n"));
+	  fprintf (file, _("   Erroneous length\n"));
 	  return;
 	}
 
       switch (type)
 	{
 	case EGSD__C_PSC:
-	  {
-	    struct vms_egps *egps = (struct vms_egps *)e;
-	    unsigned int flags = bfd_getl16 (egps->flags);
-	    unsigned int l;
-
-	    fprintf (file, _("PSC - Program section definition\n"));
-	    fprintf (file, _("   alignment  : 2**%u\n"), egps->align);
-	    fprintf (file, _("   flags      : 0x%04x"), flags);
-	    evax_bfd_print_egsd_flags (file, flags);
-	    fputc ('\n', file);
-	    l = bfd_getl32 (egps->alloc);
-	    fprintf (file, _("   alloc (len): %u (0x%08x)\n"), l, l);
-	    fprintf (file, _("   name       : %.*s\n"),
-		     egps->namlng, egps->name);
-	  }
+	  if (len >= offsetof (struct vms_egps, name))
+	    {
+	      struct vms_egps *egps = (struct vms_egps *) e;
+	      unsigned int flags = bfd_getl16 (egps->flags);
+	      unsigned int l;
+
+	      fprintf (file, _("PSC - Program section definition\n"));
+	      fprintf (file, _("   alignment  : 2**%u\n"), egps->align);
+	      fprintf (file, _("   flags      : 0x%04x"), flags);
+	      evax_bfd_print_egsd_flags (file, flags);
+	      fputc ('\n', file);
+	      l = bfd_getl32 (egps->alloc);
+	      fprintf (file, _("   alloc (len): %u (0x%08x)\n"), l, l);
+	      rest = len - offsetof (struct vms_egps, name);
+	      fprintf (file, _("   name       : %.*s\n"),
+		       egps->namlng > rest ? rest : egps->namlng,
+		       egps->name);
+	    }
 	  break;
 	case EGSD__C_SPSC:
-	  {
-	    struct vms_esgps *esgps = (struct vms_esgps *)e;
-	    unsigned int flags = bfd_getl16 (esgps->flags);
-	    unsigned int l;
-
-	    fprintf (file, _("SPSC - Shared Image Program section def\n"));
-	    fprintf (file, _("   alignment  : 2**%u\n"), esgps->align);
-	    fprintf (file, _("   flags      : 0x%04x"), flags);
-	    evax_bfd_print_egsd_flags (file, flags);
-	    fputc ('\n', file);
-	    l = bfd_getl32 (esgps->alloc);
-	    fprintf (file, _("   alloc (len)   : %u (0x%08x)\n"), l, l);
-	    fprintf (file, _("   image offset  : 0x%08x\n"),
-		     (unsigned int)bfd_getl32 (esgps->base));
-	    fprintf (file, _("   symvec offset : 0x%08x\n"),
-		     (unsigned int)bfd_getl32 (esgps->value));
-	    fprintf (file, _("   name          : %.*s\n"),
-		     esgps->namlng, esgps->name);
-	  }
+	  if (len >= offsetof (struct vms_esgps, name))
+	    {
+	      struct vms_esgps *esgps = (struct vms_esgps *) e;
+	      unsigned int flags = bfd_getl16 (esgps->flags);
+	      unsigned int l;
+
+	      fprintf (file, _("SPSC - Shared Image Program section def\n"));
+	      fprintf (file, _("   alignment  : 2**%u\n"), esgps->align);
+	      fprintf (file, _("   flags      : 0x%04x"), flags);
+	      evax_bfd_print_egsd_flags (file, flags);
+	      fputc ('\n', file);
+	      l = bfd_getl32 (esgps->alloc);
+	      fprintf (file, _("   alloc (len)   : %u (0x%08x)\n"), l, l);
+	      fprintf (file, _("   image offset  : 0x%08x\n"),
+		       (unsigned int) bfd_getl32 (esgps->base));
+	      fprintf (file, _("   symvec offset : 0x%08x\n"),
+		       (unsigned int) bfd_getl32 (esgps->value));
+	      rest = len - offsetof (struct vms_esgps, name);
+	      fprintf (file, _("   name          : %.*s\n"),
+		       esgps->namlng > rest ? rest : esgps->namlng,
+		       esgps->name);
+	    }
 	  break;
 	case EGSD__C_SYM:
-	  {
-	    struct vms_egsy *egsy = (struct vms_egsy *)e;
-	    unsigned int flags = bfd_getl16 (egsy->flags);
+	  if (len >= sizeof (struct vms_egsy))
+	    {
+	      struct vms_egsy *egsy = (struct vms_egsy *) e;
+	      unsigned int flags = bfd_getl16 (egsy->flags);
 
-	    if (flags & EGSY__V_DEF)
-	      {
-		struct vms_esdf *esdf = (struct vms_esdf *)e;
+	      if ((flags & EGSY__V_DEF) != 0
+		  && len >= offsetof (struct vms_esdf, name))
+		{
+		  struct vms_esdf *esdf = (struct vms_esdf *) e;
 
-		fprintf (file, _("SYM - Global symbol definition\n"));
-		fprintf (file, _("   flags: 0x%04x"), flags);
-		exav_bfd_print_egsy_flags (flags, file);
-		fputc ('\n', file);
-		fprintf (file, _("   psect offset: 0x%08x\n"),
-			 (unsigned)bfd_getl32 (esdf->value));
-		if (flags & EGSY__V_NORM)
-		  {
-		    fprintf (file, _("   code address: 0x%08x\n"),
-			     (unsigned)bfd_getl32 (esdf->code_address));
-		    fprintf (file, _("   psect index for entry point : %u\n"),
-			     (unsigned)bfd_getl32 (esdf->ca_psindx));
-		  }
-		fprintf (file, _("   psect index : %u\n"),
-			 (unsigned)bfd_getl32 (esdf->psindx));
-		fprintf (file, _("   name        : %.*s\n"),
-			 esdf->namlng, esdf->name);
-	      }
-	    else
-	      {
-		struct vms_esrf *esrf = (struct vms_esrf *)e;
+		  fprintf (file, _("SYM - Global symbol definition\n"));
+		  fprintf (file, _("   flags: 0x%04x"), flags);
+		  exav_bfd_print_egsy_flags (flags, file);
+		  fputc ('\n', file);
+		  fprintf (file, _("   psect offset: 0x%08x\n"),
+			   (unsigned) bfd_getl32 (esdf->value));
+		  if (flags & EGSY__V_NORM)
+		    {
+		      fprintf (file, _("   code address: 0x%08x\n"),
+			       (unsigned) bfd_getl32 (esdf->code_address));
+		      fprintf (file, _("   psect index for entry point : %u\n"),
+			       (unsigned) bfd_getl32 (esdf->ca_psindx));
+		    }
+		  fprintf (file, _("   psect index : %u\n"),
+			   (unsigned) bfd_getl32 (esdf->psindx));
+		  rest = len - offsetof (struct vms_esdf, name);
+		  fprintf (file, _("   name        : %.*s\n"),
+			   esdf->namlng > rest ? rest : esdf->namlng,
+			   esdf->name);
+		}
+	      else if (len >= offsetof (struct vms_esrf, name))
+		{
+		  struct vms_esrf *esrf = (struct vms_esrf *)e;
 
-		fprintf (file, _("SYM - Global symbol reference\n"));
-		fprintf (file, _("   name       : %.*s\n"),
-			 esrf->namlng, esrf->name);
-	      }
-	  }
+		  fprintf (file, _("SYM - Global symbol reference\n"));
+		  rest = len - offsetof (struct vms_esrf, name);
+		  fprintf (file, _("   name       : %.*s\n"),
+			   esrf->namlng > rest ? rest : esrf->namlng,
+			   esrf->name);
+		}
+	    }
 	  break;
 	case EGSD__C_IDC:
-	  {
-	    struct vms_eidc *eidc = (struct vms_eidc *)e;
-	    unsigned int flags = bfd_getl32 (eidc->flags);
-	    unsigned char *p;
-
-	    fprintf (file, _("IDC - Ident Consistency check\n"));
-	    fprintf (file, _("   flags         : 0x%08x"), flags);
-	    if (flags & EIDC__V_BINIDENT)
-	      fputs (" BINDENT", file);
-	    fputc ('\n', file);
-	    fprintf (file, _("   id match      : %x\n"),
-		     (flags >> EIDC__V_IDMATCH_SH) & EIDC__V_IDMATCH_MASK);
-	    fprintf (file, _("   error severity: %x\n"),
-		     (flags >> EIDC__V_ERRSEV_SH) & EIDC__V_ERRSEV_MASK);
-	    p = eidc->name;
-	    fprintf (file, _("   entity name   : %.*s\n"), p[0], p + 1);
-	    p += 1 + p[0];
-	    fprintf (file, _("   object name   : %.*s\n"), p[0], p + 1);
-	    p += 1 + p[0];
-	    if (flags & EIDC__V_BINIDENT)
-	      fprintf (file, _("   binary ident  : 0x%08x\n"),
-		       (unsigned)bfd_getl32 (p + 1));
-	    else
-	      fprintf (file, _("   ascii ident   : %.*s\n"), p[0], p + 1);
-	  }
+	  if (len >= sizeof (struct vms_eidc))
+	    {
+	      struct vms_eidc *eidc = (struct vms_eidc *) e;
+	      unsigned int flags = bfd_getl32 (eidc->flags);
+	      unsigned char *p;
+
+	      fprintf (file, _("IDC - Ident Consistency check\n"));
+	      fprintf (file, _("   flags         : 0x%08x"), flags);
+	      if (flags & EIDC__V_BINIDENT)
+		fputs (" BINDENT", file);
+	      fputc ('\n', file);
+	      fprintf (file, _("   id match      : %x\n"),
+		       (flags >> EIDC__V_IDMATCH_SH) & EIDC__V_IDMATCH_MASK);
+	      fprintf (file, _("   error severity: %x\n"),
+		       (flags >> EIDC__V_ERRSEV_SH) & EIDC__V_ERRSEV_MASK);
+	      p = eidc->name;
+	      rest = len - (p - (unsigned char *) e);
+	      fprintf (file, _("   entity name   : %.*s\n"),
+		       p[0] > rest - 1 ? rest - 1 : p[0], p + 1);
+	      if (rest > 1u + p[0])
+		{
+		  rest -= 1 + p[0];
+		  p += 1 + p[0];
+		  fprintf (file, _("   object name   : %.*s\n"),
+			   p[0] > rest - 1 ? rest - 1 : p[0], p + 1);
+		  if (rest > 1u + p[0])
+		    {
+		      rest -= 1 + p[0];
+		      p += 1 + p[0];
+		      if (flags & EIDC__V_BINIDENT)
+			{
+			  if (rest >= 4)
+			    fprintf (file, _("   binary ident  : 0x%08x\n"),
+				     (unsigned) bfd_getl32 (p));
+			}
+		      else
+			fprintf (file, _("   ascii ident   : %.*s\n"),
+				 p[0] > rest - 1 ? rest - 1 : p[0], p + 1);
+		    }
+		}
+	    }
 	  break;
 	case EGSD__C_SYMG:
-	  {
-	    struct vms_egst *egst = (struct vms_egst *)e;
-	    unsigned int flags = bfd_getl16 (egst->header.flags);
+	  if (len >= offsetof (struct vms_egst, name))
+	    {
+	      struct vms_egst *egst = (struct vms_egst *) e;
+	      unsigned int flags = bfd_getl16 (egst->header.flags);
 
-	    fprintf (file, _("SYMG - Universal symbol definition\n"));
-	    fprintf (file, _("   flags: 0x%04x"), flags);
-	    exav_bfd_print_egsy_flags (flags, file);
-	    fputc ('\n', file);
-	    fprintf (file, _("   symbol vector offset: 0x%08x\n"),
-		     (unsigned)bfd_getl32 (egst->value));
-	    fprintf (file, _("   entry point: 0x%08x\n"),
-		     (unsigned)bfd_getl32 (egst->lp_1));
-	    fprintf (file, _("   proc descr : 0x%08x\n"),
-		     (unsigned)bfd_getl32 (egst->lp_2));
-	    fprintf (file, _("   psect index: %u\n"),
-		     (unsigned)bfd_getl32 (egst->psindx));
-	    fprintf (file, _("   name       : %.*s\n"),
-		     egst->namlng, egst->name);
-	  }
+	      fprintf (file, _("SYMG - Universal symbol definition\n"));
+	      fprintf (file, _("   flags: 0x%04x"), flags);
+	      exav_bfd_print_egsy_flags (flags, file);
+	      fputc ('\n', file);
+	      fprintf (file, _("   symbol vector offset: 0x%08x\n"),
+		       (unsigned) bfd_getl32 (egst->value));
+	      fprintf (file, _("   entry point: 0x%08x\n"),
+		       (unsigned) bfd_getl32 (egst->lp_1));
+	      fprintf (file, _("   proc descr : 0x%08x\n"),
+		       (unsigned) bfd_getl32 (egst->lp_2));
+	      fprintf (file, _("   psect index: %u\n"),
+		       (unsigned) bfd_getl32 (egst->psindx));
+	      rest = len - offsetof (struct vms_egst, name);
+	      fprintf (file, _("   name       : %.*s\n"),
+		       egst->namlng > rest ? rest : egst->namlng,
+		       egst->name);
+	    }
 	  break;
 	case EGSD__C_SYMV:
-	  {
-	    struct vms_esdfv *esdfv = (struct vms_esdfv *)e;
-	    unsigned int flags = bfd_getl16 (esdfv->flags);
+	  if (len >= offsetof (struct vms_esdfv, name))
+	    {
+	      struct vms_esdfv *esdfv = (struct vms_esdfv *) e;
+	      unsigned int flags = bfd_getl16 (esdfv->flags);
 
-	    fprintf (file, _("SYMV - Vectored symbol definition\n"));
-	    fprintf (file, _("   flags: 0x%04x"), flags);
-	    exav_bfd_print_egsy_flags (flags, file);
-	    fputc ('\n', file);
-	    fprintf (file, _("   vector      : 0x%08x\n"),
-		     (unsigned)bfd_getl32 (esdfv->vector));
-	    fprintf (file, _("   psect offset: %u\n"),
-		     (unsigned)bfd_getl32 (esdfv->value));
-	    fprintf (file, _("   psect index : %u\n"),
-		     (unsigned)bfd_getl32 (esdfv->psindx));
-	    fprintf (file, _("   name        : %.*s\n"),
-		     esdfv->namlng, esdfv->name);
-	  }
+	      fprintf (file, _("SYMV - Vectored symbol definition\n"));
+	      fprintf (file, _("   flags: 0x%04x"), flags);
+	      exav_bfd_print_egsy_flags (flags, file);
+	      fputc ('\n', file);
+	      fprintf (file, _("   vector      : 0x%08x\n"),
+		       (unsigned) bfd_getl32 (esdfv->vector));
+	      fprintf (file, _("   psect offset: %u\n"),
+		       (unsigned) bfd_getl32 (esdfv->value));
+	      fprintf (file, _("   psect index : %u\n"),
+		       (unsigned) bfd_getl32 (esdfv->psindx));
+	      rest = len - offsetof (struct vms_esdfv, name);
+	      fprintf (file, _("   name        : %.*s\n"),
+		       esdfv->namlng > rest ? rest : esdfv->namlng,
+		       esdfv->name);
+	    }
 	  break;
 	case EGSD__C_SYMM:
-	  {
-	    struct vms_esdfm *esdfm = (struct vms_esdfm *)e;
-	    unsigned int flags = bfd_getl16 (esdfm->flags);
+	  if (len >= offsetof (struct vms_esdfm, name))
+	    {
+	      struct vms_esdfm *esdfm = (struct vms_esdfm *) e;
+	      unsigned int flags = bfd_getl16 (esdfm->flags);
 
-	    fprintf (file, _("SYMM - Global symbol definition with version\n"));
-	    fprintf (file, _("   flags: 0x%04x"), flags);
-	    exav_bfd_print_egsy_flags (flags, file);
-	    fputc ('\n', file);
-	    fprintf (file, _("   version mask: 0x%08x\n"),
-		     (unsigned)bfd_getl32 (esdfm->version_mask));
-	    fprintf (file, _("   psect offset: %u\n"),
-		     (unsigned)bfd_getl32 (esdfm->value));
-	    fprintf (file, _("   psect index : %u\n"),
-		     (unsigned)bfd_getl32 (esdfm->psindx));
-	    fprintf (file, _("   name        : %.*s\n"),
-		     esdfm->namlng, esdfm->name);
-	  }
+	      fprintf (file,
+		       _("SYMM - Global symbol definition with version\n"));
+	      fprintf (file, _("   flags: 0x%04x"), flags);
+	      exav_bfd_print_egsy_flags (flags, file);
+	      fputc ('\n', file);
+	      fprintf (file, _("   version mask: 0x%08x\n"),
+		       (unsigned)bfd_getl32 (esdfm->version_mask));
+	      fprintf (file, _("   psect offset: %u\n"),
+		       (unsigned)bfd_getl32 (esdfm->value));
+	      fprintf (file, _("   psect index : %u\n"),
+		       (unsigned)bfd_getl32 (esdfm->psindx));
+	      rest = len - offsetof (struct vms_esdfm, name);
+	      fprintf (file, _("   name        : %.*s\n"),
+		       esdfm->namlng > rest ? rest : esdfm->namlng,
+		       esdfm->name);
+	    }
 	  break;
 	default:
 	  fprintf (file, _("unhandled egsd entry type %u\n"), type);
@@ -6147,8 +6550,12 @@ evax_bfd_print_hex (FILE *file, const ch
 }
 
 static void
-evax_bfd_print_etir_stc_ir (FILE *file, const unsigned char *buf, int is_ps)
+evax_bfd_print_etir_stc_ir (FILE *file, const unsigned char *buf,
+			    unsigned int len, int is_ps)
 {
+  if (is_ps ? len < 44 : len < 33)
+    return;
+
   /* xgettext:c-format */
   fprintf (file, _("    linkage index: %u, replacement insn: 0x%08x\n"),
 	   (unsigned)bfd_getl32 (buf),
@@ -6170,62 +6577,71 @@ evax_bfd_print_etir_stc_ir (FILE *file,
 	     (unsigned)bfd_getl32 (buf + 40),
 	     (unsigned)bfd_getl32 (buf + 36));
   else
-    fprintf (file, _("    global name: %.*s\n"), buf[32], buf + 33);
+    fprintf (file, _("    global name: %.*s\n"),
+	     buf[32] > len - 33 ? len - 33 : buf[32],
+	     buf + 33);
 }
 
 static void
 evax_bfd_print_etir (FILE *file, const char *name,
 		     unsigned char *rec, unsigned int rec_len)
 {
-  unsigned int off = sizeof (struct vms_egsd);
-  unsigned int sec_len = 0;
+  unsigned int off = sizeof (struct vms_eobjrec);
 
   /* xgettext:c-format */
-  fprintf (file, _("  %s (len=%u+%u):\n"), name,
-	   (unsigned)(rec_len - sizeof (struct vms_eobjrec)),
-	   (unsigned)sizeof (struct vms_eobjrec));
+  fprintf (file, _("  %s (len=%u):\n"), name, (unsigned) rec_len);
+  if (rec_len < sizeof (struct vms_eobjrec) + sizeof (struct vms_etir))
+    return;
 
-  for (off = sizeof (struct vms_eobjrec); off < rec_len; )
+  while (off <= rec_len - sizeof (struct vms_etir))
     {
       struct vms_etir *etir = (struct vms_etir *)(rec + off);
       unsigned char *buf;
       unsigned int type;
       unsigned int size;
+      unsigned int rest;
 
       type = bfd_getl16 (etir->rectyp);
       size = bfd_getl16 (etir->size);
       buf = rec + off + sizeof (struct vms_etir);
 
-      if (off + size > rec_len || off + size < off)
+      if (size < sizeof (struct vms_etir) || size > rec_len - off)
 	{
-	  fprintf (file, _("   Error: length larger than remaining space in record\n"));
+	  fprintf (file, _("   Erroneous length\n"));
 	  return;
 	}
 
       /* xgettext:c-format */
-      fprintf (file, _("   (type: %3u, size: 4+%3u): "), type, size - 4);
+      fprintf (file, _("   (type: %3u, size: %3u): "), type, size);
+      rest = size - sizeof (struct vms_etir);
       switch (type)
 	{
 	case ETIR__C_STA_GBL:
-	  fprintf (file, _("STA_GBL (stack global) %.*s\n"),
-		   buf[0], buf + 1);
+	  if (rest >= 1)
+	    fprintf (file, _("STA_GBL (stack global) %.*s\n"),
+		     buf[0] > rest - 1 ? rest - 1 : buf[0], buf + 1);
 	  break;
 	case ETIR__C_STA_LW:
-	  fprintf (file, _("STA_LW (stack longword) 0x%08x\n"),
-		   (unsigned)bfd_getl32 (buf));
+	  fprintf (file, _("STA_LW (stack longword)"));
+	  if (rest >= 4)
+	    fprintf (file, " 0x%08x\n",
+		     (unsigned) bfd_getl32 (buf));
 	  break;
 	case ETIR__C_STA_QW:
-	  fprintf (file, _("STA_QW (stack quadword) 0x%08x %08x\n"),
-		   (unsigned)bfd_getl32 (buf + 4),
-		   (unsigned)bfd_getl32 (buf + 0));
+	  fprintf (file, _("STA_QW (stack quadword)"));
+	  if (rest >= 8)
+	    fprintf (file, " 0x%08x %08x\n",
+		     (unsigned) bfd_getl32 (buf + 4),
+		     (unsigned) bfd_getl32 (buf + 0));
 	  break;
 	case ETIR__C_STA_PQ:
 	  fprintf (file, _("STA_PQ (stack psect base + offset)\n"));
-	  /* xgettext:c-format */
-	  fprintf (file, _("    psect: %u, offset: 0x%08x %08x\n"),
-		   (unsigned)bfd_getl32 (buf + 0),
-		   (unsigned)bfd_getl32 (buf + 8),
-		   (unsigned)bfd_getl32 (buf + 4));
+	  if (rest >= 12)
+	    /* xgettext:c-format */
+	    fprintf (file, _("    psect: %u, offset: 0x%08x %08x\n"),
+		     (unsigned) bfd_getl32 (buf + 0),
+		     (unsigned) bfd_getl32 (buf + 8),
+		     (unsigned) bfd_getl32 (buf + 4));
 	  break;
 	case ETIR__C_STA_LI:
 	  fprintf (file, _("STA_LI (stack literal)\n"));
@@ -6250,22 +6666,26 @@ evax_bfd_print_etir (FILE *file, const c
 	  fprintf (file, _("STO_QW (store quadword)\n"));
 	  break;
 	case ETIR__C_STO_IMMR:
-	  {
-	    unsigned int len = bfd_getl32 (buf);
-	    fprintf (file,
-		     _("STO_IMMR (store immediate repeat) %u bytes\n"),
-		     len);
-	    evax_bfd_print_hex (file, "   ", buf + 4, len);
-	    sec_len += len;
-	  }
+	  if (rest >= 4)
+	    {
+	      unsigned int rpt = bfd_getl32 (buf);
+	      fprintf (file,
+		       _("STO_IMMR (store immediate repeat) %u bytes\n"),
+		       rpt);
+	      if (rpt > rest - 4)
+		rpt = rest - 4;
+	      evax_bfd_print_hex (file, "   ", buf + 4, rpt);
+	    }
 	  break;
 	case ETIR__C_STO_GBL:
-	  fprintf (file, _("STO_GBL (store global) %.*s\n"),
-		   buf[0], buf + 1);
+	  if (rest >= 1)
+	    fprintf (file, _("STO_GBL (store global) %.*s\n"),
+		     buf[0] > rest - 1 ? rest - 1 : buf[0], buf + 1);
 	  break;
 	case ETIR__C_STO_CA:
-	  fprintf (file, _("STO_CA (store code address) %.*s\n"),
-		   buf[0], buf + 1);
+	  if (rest >= 1)
+	    fprintf (file, _("STO_CA (store code address) %.*s\n"),
+		     buf[0] > rest - 1 ? rest - 1 : buf[0], buf + 1);
 	  break;
 	case ETIR__C_STO_RB:
 	  fprintf (file, _("STO_RB (store relative branch)\n"));
@@ -6277,18 +6697,21 @@ evax_bfd_print_etir (FILE *file, const c
 	  fprintf (file, _("STO_OFF (store offset to psect)\n"));
 	  break;
 	case ETIR__C_STO_IMM:
-	  {
-	    unsigned int len = bfd_getl32 (buf);
-	    fprintf (file,
-		     _("STO_IMM (store immediate) %u bytes\n"),
-		     len);
-	    evax_bfd_print_hex (file, "   ", buf + 4, len);
-	    sec_len += len;
-	  }
+	  if (rest >= 4)
+	    {
+	      unsigned int rpt = bfd_getl32 (buf);
+	      fprintf (file,
+		       _("STO_IMM (store immediate) %u bytes\n"),
+		       rpt);
+	      if (rpt > rest - 4)
+		rpt = rest - 4;
+	      evax_bfd_print_hex (file, "   ", buf + 4, rpt);
+	    }
 	  break;
 	case ETIR__C_STO_GBL_LW:
-	  fprintf (file, _("STO_GBL_LW (store global longword) %.*s\n"),
-		   buf[0], buf + 1);
+	  if (rest >= 1)
+	    fprintf (file, _("STO_GBL_LW (store global longword) %.*s\n"),
+		     buf[0] > rest - 1 ? rest - 1 : buf[0], buf + 1);
 	  break;
 	case ETIR__C_STO_LP_PSB:
 	  fprintf (file, _("STO_OFF (store LP with procedure signature)\n"));
@@ -6358,65 +6781,79 @@ evax_bfd_print_etir (FILE *file, const c
 	case ETIR__C_STC_LP_PSB:
 	  fprintf (file,
 		   _("STC_LP_PSB (store cond linkage pair + signature)\n"));
-	  /* xgettext:c-format */
-	  fprintf (file, _("   linkage index: %u, procedure: %.*s\n"),
-		   (unsigned)bfd_getl32 (buf), buf[4], buf + 5);
-	  buf += 4 + 1 + buf[4];
-	  fprintf (file, _("   signature: %.*s\n"), buf[0], buf + 1);
+	  if (rest >= 5)
+	    {
+	      /* xgettext:c-format */
+	      fprintf (file, _("   linkage index: %u, procedure: %.*s\n"),
+		       (unsigned) bfd_getl32 (buf),
+		       buf[4] > rest - 5 ? rest - 5 : buf[4], buf + 5);
+	      if (rest > 4 + 1u + buf[4])
+		{
+		  rest -= 4 + 1 + buf[4];
+		  buf += 4 + 1 + buf[4];
+		  fprintf (file, _("   signature: %.*s\n"),
+			   buf[0] > rest - 1 ? rest - 1: buf[0], buf + 1);
+		}
+	    }
 	  break;
 	case ETIR__C_STC_GBL:
 	  fprintf (file, _("STC_GBL (store cond global)\n"));
-	  /* xgettext:c-format */
-	  fprintf (file, _("   linkage index: %u, global: %.*s\n"),
-		   (unsigned)bfd_getl32 (buf), buf[4], buf + 5);
+	  if (rest >= 5)
+	    /* xgettext:c-format */
+	    fprintf (file, _("   linkage index: %u, global: %.*s\n"),
+		     (unsigned) bfd_getl32 (buf),
+		     buf[4] > rest - 5 ? rest - 5 : buf[4], buf + 5);
 	  break;
 	case ETIR__C_STC_GCA:
 	  fprintf (file, _("STC_GCA (store cond code address)\n"));
-	  /* xgettext:c-format */
-	  fprintf (file, _("   linkage index: %u, procedure name: %.*s\n"),
-		   (unsigned)bfd_getl32 (buf), buf[4], buf + 5);
+	  if (rest >= 5)
+	    /* xgettext:c-format */
+	    fprintf (file, _("   linkage index: %u, procedure name: %.*s\n"),
+		     (unsigned) bfd_getl32 (buf),
+		     buf[4] > rest - 5 ? rest - 5 : buf[4], buf + 5);
 	  break;
 	case ETIR__C_STC_PS:
 	  fprintf (file, _("STC_PS (store cond psect + offset)\n"));
-	  fprintf (file,
-		   /* xgettext:c-format */
-		   _("   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"),
-		   (unsigned)bfd_getl32 (buf),
-		   (unsigned)bfd_getl32 (buf + 4),
-		   (unsigned)bfd_getl32 (buf + 12),
-		   (unsigned)bfd_getl32 (buf + 8));
+	  if (rest >= 16)
+	    fprintf (file,
+		     /* xgettext:c-format */
+		     _("   linkage index: %u, psect: %u, offset: 0x%08x %08x\n"),
+		     (unsigned)bfd_getl32 (buf),
+		     (unsigned)bfd_getl32 (buf + 4),
+		     (unsigned)bfd_getl32 (buf + 12),
+		     (unsigned)bfd_getl32 (buf + 8));
 	  break;
 	case ETIR__C_STC_NOP_GBL:
 	  fprintf (file, _("STC_NOP_GBL (store cond NOP at global addr)\n"));
-	  evax_bfd_print_etir_stc_ir (file, buf, 0);
+	  evax_bfd_print_etir_stc_ir (file, buf, rest, 0);
 	  break;
 	case ETIR__C_STC_NOP_PS:
 	  fprintf (file, _("STC_NOP_PS (store cond NOP at psect + offset)\n"));
-	  evax_bfd_print_etir_stc_ir (file, buf, 1);
+	  evax_bfd_print_etir_stc_ir (file, buf, rest, 1);
 	  break;
 	case ETIR__C_STC_BSR_GBL:
 	  fprintf (file, _("STC_BSR_GBL (store cond BSR at global addr)\n"));
-	  evax_bfd_print_etir_stc_ir (file, buf, 0);
+	  evax_bfd_print_etir_stc_ir (file, buf, rest, 0);
 	  break;
 	case ETIR__C_STC_BSR_PS:
 	  fprintf (file, _("STC_BSR_PS (store cond BSR at psect + offset)\n"));
-	  evax_bfd_print_etir_stc_ir (file, buf, 1);
+	  evax_bfd_print_etir_stc_ir (file, buf, rest, 1);
 	  break;
 	case ETIR__C_STC_LDA_GBL:
 	  fprintf (file, _("STC_LDA_GBL (store cond LDA at global addr)\n"));
-	  evax_bfd_print_etir_stc_ir (file, buf, 0);
+	  evax_bfd_print_etir_stc_ir (file, buf, rest, 0);
 	  break;
 	case ETIR__C_STC_LDA_PS:
 	  fprintf (file, _("STC_LDA_PS (store cond LDA at psect + offset)\n"));
-	  evax_bfd_print_etir_stc_ir (file, buf, 1);
+	  evax_bfd_print_etir_stc_ir (file, buf, rest, 1);
 	  break;
 	case ETIR__C_STC_BOH_GBL:
 	  fprintf (file, _("STC_BOH_GBL (store cond BOH at global addr)\n"));
-	  evax_bfd_print_etir_stc_ir (file, buf, 0);
+	  evax_bfd_print_etir_stc_ir (file, buf, rest, 0);
 	  break;
 	case ETIR__C_STC_BOH_PS:
 	  fprintf (file, _("STC_BOH_PS (store cond BOH at psect + offset)\n"));
-	  evax_bfd_print_etir_stc_ir (file, buf, 1);
+	  evax_bfd_print_etir_stc_ir (file, buf, rest, 1);
 	  break;
 	case ETIR__C_STC_NBH_GBL:
 	  fprintf (file,
@@ -6429,13 +6866,14 @@ evax_bfd_print_etir (FILE *file, const c
 
 	case ETIR__C_CTL_SETRB:
 	  fprintf (file, _("CTL_SETRB (set relocation base)\n"));
-	  sec_len += 4;
 	  break;
 	case ETIR__C_CTL_AUGRB:
-	  {
-	    unsigned int val = bfd_getl32 (buf);
-	    fprintf (file, _("CTL_AUGRB (augment relocation base) %u\n"), val);
-	  }
+	  if (rest >= 4)
+	    {
+	      unsigned int val = bfd_getl32 (buf);
+	      fprintf (file, _("CTL_AUGRB (augment relocation base) %u\n"),
+		       val);
+	    }
 	  break;
 	case ETIR__C_CTL_DFLOC:
 	  fprintf (file, _("CTL_DFLOC (define location)\n"));
@@ -6457,8 +6895,8 @@ evax_bfd_print_etir (FILE *file, const c
 static void
 evax_bfd_print_eobj (struct bfd *abfd, FILE *file)
 {
-  bfd_boolean is_first = TRUE;
-  bfd_boolean has_records = FALSE;
+  bool is_first = true;
+  bool has_records = true;
 
   while (1)
     {
@@ -6467,90 +6905,76 @@ evax_bfd_print_eobj (struct bfd *abfd, F
       unsigned char *rec;
       unsigned int hdr_size;
       unsigned int type;
+      unsigned char buf[6];
 
-      if (is_first)
+      hdr_size = has_records ? 6 : 4;
+      if (bfd_read (buf, hdr_size, abfd) != hdr_size)
 	{
-	  unsigned char buf[6];
-
-	  is_first = FALSE;
-
-	  /* Read 6 bytes.  */
-	  if (bfd_bread (buf, sizeof (buf), abfd) != sizeof (buf))
-	    {
-	      fprintf (file, _("cannot read GST record length\n"));
-	      return;
-	    }
-	  rec_len = bfd_getl16 (buf + 0);
-	  if (rec_len == bfd_getl16 (buf + 4)
-	      && bfd_getl16 (buf + 2) == EOBJ__C_EMH)
-	    {
-	      /* The format is raw: record-size, type, record-size.  */
-	      has_records = TRUE;
-	      pad_len = (rec_len + 1) & ~1U;
-	      hdr_size = 4;
-	    }
-	  else if (rec_len == EOBJ__C_EMH)
-	    {
-	      has_records = FALSE;
-	      pad_len = bfd_getl16 (buf + 2);
-	      hdr_size = 6;
-	    }
-	  else
-	    {
-	      /* Ill-formed.  */
-	      fprintf (file, _("cannot find EMH in first GST record\n"));
-	      return;
-	    }
-	  rec = bfd_malloc (pad_len);
-	  memcpy (rec, buf + sizeof (buf) - hdr_size, hdr_size);
+	  fprintf (file, _("cannot read GST record header\n"));
+	  return;
 	}
-      else
-	{
-	  unsigned int rec_len2 = 0;
-	  unsigned char hdr[4];
 
-	  if (has_records)
-	    {
-	      unsigned char buf_len[2];
-
-	      if (bfd_bread (buf_len, sizeof (buf_len), abfd)
-		  != sizeof (buf_len))
+      type = bfd_getl16 (buf);
+      rec_len = bfd_getl16 (buf + 2);
+      pad_len = rec_len;
+      if (has_records)
+	{
+	  unsigned int rec_len2 = bfd_getl16 (buf + 4);
+
+	  if (is_first)
+	    {
+	      is_first = false;
+	      if (type == rec_len2 && rec_len == EOBJ__C_EMH)
+		/* Matched a VMS record EMH.  */
+		;
+	      else
 		{
-		  fprintf (file, _("cannot read GST record length\n"));
-		  return;
+		  has_records = false;
+		  if (type != EOBJ__C_EMH)
+		    {
+		      /* Ill-formed.  */
+		      fprintf (file, _("cannot find EMH in first GST record\n"));
+		      return;
+		    }
 		}
-	      rec_len2 = (unsigned)bfd_getl16 (buf_len);
 	    }
 
-	  if (bfd_bread (hdr, sizeof (hdr), abfd) != sizeof (hdr))
-	    {
-	      fprintf (file, _("cannot read GST record header\n"));
-	      return;
-	    }
-	  rec_len = (unsigned)bfd_getl16 (hdr + 2);
 	  if (has_records)
-	    pad_len = (rec_len + 1) & ~1U;
-	  else
-	    pad_len = rec_len;
-	  rec = bfd_malloc (pad_len);
-	  memcpy (rec, hdr, sizeof (hdr));
-	  hdr_size = sizeof (hdr);
-	  if (has_records && rec_len2 != rec_len)
 	    {
-	      fprintf (file, _(" corrupted GST\n"));
-	      break;
+	      /* VMS record format is: record-size, type, record-size.
+		 See maybe_adjust_record_pointer_for_object comment.  */
+	      if (type == rec_len2)
+		{
+		  type = rec_len;
+		  rec_len = rec_len2;
+		}
+	      else
+		rec_len = 0;
+	      pad_len = (rec_len + 1) & ~1U;
+	      hdr_size = 4;
 	    }
 	}
 
-      if (bfd_bread (rec + hdr_size, pad_len - hdr_size, abfd)
+      if (rec_len < hdr_size)
+	{
+	  fprintf (file, _("corrupted GST\n"));
+	  return;
+	}
+
+      rec = bfd_malloc (pad_len);
+      if (rec == NULL)
+	return;
+
+      memcpy (rec, buf + (has_records ? 2 : 0), hdr_size);
+
+      if (bfd_read (rec + hdr_size, pad_len - hdr_size, abfd)
 	  != pad_len - hdr_size)
 	{
 	  fprintf (file, _("cannot read GST record\n"));
+	  free (rec);
 	  return;
 	}
 
-      type = (unsigned)bfd_getl16 (rec);
-
       switch (type)
 	{
 	case EOBJ__C_EMH:
@@ -6563,7 +6987,6 @@ evax_bfd_print_eobj (struct bfd *abfd, F
 	  evax_bfd_print_eeom (file, rec, rec_len);
 	  free (rec);
 	  return;
-	  break;
 	case EOBJ__C_ETIR:
 	  evax_bfd_print_etir (file, "ETIR", rec, rec_len);
 	  break;
@@ -6582,40 +7005,41 @@ evax_bfd_print_eobj (struct bfd *abfd, F
 }
 
 static void
-evax_bfd_print_relocation_records (FILE *file, const unsigned char *rel,
+evax_bfd_print_relocation_records (FILE *file, const unsigned char *buf,
+				   size_t buf_size, size_t off,
 				   unsigned int stride)
 {
-  while (1)
+  while (off <= buf_size - 8)
     {
       unsigned int base;
       unsigned int count;
       unsigned int j;
 
-      count = bfd_getl32 (rel + 0);
+      count = bfd_getl32 (buf + off + 0);
 
       if (count == 0)
 	break;
-      base = bfd_getl32 (rel + 4);
+      base = bfd_getl32 (buf + off + 4);
 
       /* xgettext:c-format */
       fprintf (file, _("  bitcount: %u, base addr: 0x%08x\n"),
 	       count, base);
 
-      rel += 8;
-      for (j = 0; count > 0; j += 4, count -= 32)
+      off += 8;
+      for (j = 0; count > 0 && off <= buf_size - 4; j += 4, count -= 32)
 	{
 	  unsigned int k;
 	  unsigned int n = 0;
 	  unsigned int val;
 
-	  val = bfd_getl32 (rel);
-	  rel += 4;
+	  val = bfd_getl32 (buf + off);
+	  off += 4;
 
 	  /* xgettext:c-format */
 	  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);
@@ -6634,60 +7058,62 @@ evax_bfd_print_relocation_records (FILE
 }
 
 static void
-evax_bfd_print_address_fixups (FILE *file, const unsigned char *rel)
+evax_bfd_print_address_fixups (FILE *file, const unsigned char *buf,
+			       size_t buf_size, size_t off)
 {
-  while (1)
+  while (off <= buf_size - 8)
     {
       unsigned int j;
       unsigned int count;
 
-      count = bfd_getl32 (rel + 0);
+      count = bfd_getl32 (buf + off + 0);
       if (count == 0)
 	return;
       /* xgettext:c-format */
       fprintf (file, _("  image %u (%u entries)\n"),
-	       (unsigned)bfd_getl32 (rel + 4), count);
-      rel += 8;
-      for (j = 0; j < count; j++)
+	       (unsigned) bfd_getl32 (buf + off + 4), count);
+      off += 8;
+      for (j = 0; j < count && off <= buf_size - 8; j++)
 	{
 	  /* xgettext:c-format */
 	  fprintf (file, _("   offset: 0x%08x, val: 0x%08x\n"),
-		   (unsigned)bfd_getl32 (rel + 0),
-		   (unsigned)bfd_getl32 (rel + 4));
-	  rel += 8;
+		   (unsigned) bfd_getl32 (buf + off + 0),
+		   (unsigned) bfd_getl32 (buf + off + 4));
+	  off += 8;
 	}
     }
 }
 
 static void
-evax_bfd_print_reference_fixups (FILE *file, const unsigned char *rel)
+evax_bfd_print_reference_fixups (FILE *file, const unsigned char *buf,
+				 size_t buf_size, size_t off)
 {
   unsigned int count;
 
-  while (1)
+  while (off <= buf_size - 8)
     {
       unsigned int j;
       unsigned int n = 0;
 
-      count = bfd_getl32 (rel + 0);
+      count = bfd_getl32 (buf + off + 0);
       if (count == 0)
 	break;
       /* xgettext:c-format */
       fprintf (file, _("  image %u (%u entries), offsets:\n"),
-	       (unsigned)bfd_getl32 (rel + 4), count);
-      rel += 8;
-      for (j = 0; j < count; j++)
+	       (unsigned) bfd_getl32 (buf + off + 4), count);
+      off += 8;
+      for (j = 0; j < count && off <= buf_size - 4; j++)
 	{
 	  if (n == 0)
 	    fputs ("   ", file);
-	  fprintf (file, _(" 0x%08x"), (unsigned)bfd_getl32 (rel));
+	  fprintf (file, _(" 0x%08x"), (unsigned) bfd_getl32 (buf + off));
 	  n++;
 	  if (n == 7)
 	    {
 	      fputs ("\n", file);
 	      n = 0;
 	    }
-	  rel += 4;
+	  off += 4;
 	}
       if (n)
 	fputs ("\n", file);
@@ -6790,8 +7216,12 @@ evax_bfd_get_dsc_name (unsigned int v)
 }
 
 static void
-evax_bfd_print_desc (const unsigned char *buf, int indent, FILE *file)
+evax_bfd_print_desc (const unsigned char *buf, unsigned int bufsize,
+		     int indent, FILE *file)
 {
+  if (bufsize < 8)
+    return;
+
   unsigned char bclass = buf[3];
   unsigned char dtype = buf[2];
   unsigned int len = (unsigned)bfd_getl16 (buf);
@@ -6820,38 +7250,47 @@ evax_bfd_print_desc (const unsigned char
 	    evax_bfd_print_indent (indent, file);
 	    fprintf (file, _("non-contiguous array of %s\n"),
 		     evax_bfd_get_dsc_name (dsc->dtype));
-	    evax_bfd_print_indent (indent + 1, file);
-	    fprintf (file,
-		     /* xgettext:c-format */
-		     _("dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"),
-		     dsc->dimct, dsc->aflags, dsc->digits, dsc->scale);
-	    evax_bfd_print_indent (indent + 1, file);
-	    fprintf (file,
-		     /* xgettext:c-format */
-		     _("arsize: %u, a0: 0x%08x\n"),
-		     (unsigned)bfd_getl32 (dsc->arsize),
-		     (unsigned)bfd_getl32 (dsc->a0));
-	    evax_bfd_print_indent (indent + 1, file);
-	    fprintf (file, _("Strides:\n"));
-	    b = buf + sizeof (*dsc);
-	    for (i = 0; i < dsc->dimct; i++)
-	      {
-		evax_bfd_print_indent (indent + 2, file);
-		fprintf (file, "[%u]: %u\n", i + 1,
-			 (unsigned)bfd_getl32 (b));
-		b += 4;
-	      }
-	    evax_bfd_print_indent (indent + 1, file);
-	    fprintf (file, _("Bounds:\n"));
-	    b = buf + sizeof (*dsc);
-	    for (i = 0; i < dsc->dimct; i++)
+	    if (bufsize >= sizeof (*dsc))
 	      {
-		evax_bfd_print_indent (indent + 2, file);
-		/* xgettext:c-format */
-		fprintf (file, _("[%u]: Lower: %u, upper: %u\n"), i + 1,
-			 (unsigned)bfd_getl32 (b + 0),
-			 (unsigned)bfd_getl32 (b + 4));
-		b += 8;
+		evax_bfd_print_indent (indent + 1, file);
+		fprintf (file,
+			 /* xgettext:c-format */
+			 _("dimct: %u, aflags: 0x%02x, digits: %u, scale: %u\n"),
+			 dsc->dimct, dsc->aflags, dsc->digits, dsc->scale);
+		evax_bfd_print_indent (indent + 1, file);
+		fprintf (file,
+			 /* xgettext:c-format */
+			 _("arsize: %u, a0: 0x%08x\n"),
+			 (unsigned) bfd_getl32 (dsc->arsize),
+			 (unsigned) bfd_getl32 (dsc->a0));
+		evax_bfd_print_indent (indent + 1, file);
+		fprintf (file, _("Strides:\n"));
+		b = buf + sizeof (*dsc);
+		bufsize -= sizeof (*dsc);
+		for (i = 0; i < dsc->dimct; i++)
+		  {
+		    if (bufsize < 4)
+		      break;
+		    evax_bfd_print_indent (indent + 2, file);
+		    fprintf (file, "[%u]: %u\n", i + 1,
+			     (unsigned) bfd_getl32 (b));
+		    b += 4;
+		    bufsize -= 4;
+		  }
+		evax_bfd_print_indent (indent + 1, file);
+		fprintf (file, _("Bounds:\n"));
+		for (i = 0; i < dsc->dimct; i++)
+		  {
+		    if (bufsize < 8)
+		      break;
+		    evax_bfd_print_indent (indent + 2, file);
+		    /* xgettext:c-format */
+		    fprintf (file, _("[%u]: Lower: %u, upper: %u\n"), i + 1,
+			     (unsigned) bfd_getl32 (b + 0),
+			     (unsigned) bfd_getl32 (b + 4));
+		    b += 8;
+		    bufsize -= 8;
+		  }
 	      }
 	  }
 	  break;
@@ -6862,12 +7301,15 @@ evax_bfd_print_desc (const unsigned char
 	    evax_bfd_print_indent (indent, file);
 	    fprintf (file, _("unaligned bit-string of %s\n"),
 		     evax_bfd_get_dsc_name (ubs->dtype));
-	    evax_bfd_print_indent (indent + 1, file);
-	    fprintf (file,
-		     /* xgettext:c-format */
-		     _("base: %u, pos: %u\n"),
-		     (unsigned)bfd_getl32 (ubs->base),
-		     (unsigned)bfd_getl32 (ubs->pos));
+	    if (bufsize >= sizeof (*ubs))
+	      {
+		evax_bfd_print_indent (indent + 1, file);
+		fprintf (file,
+			 /* xgettext:c-format */
+			 _("base: %u, pos: %u\n"),
+			 (unsigned) bfd_getl32 (ubs->base),
+			 (unsigned) bfd_getl32 (ubs->pos));
+	      }
 	  }
 	  break;
 	default:
@@ -6878,16 +7320,21 @@ evax_bfd_print_desc (const unsigned char
 }
 
 static unsigned int
-evax_bfd_print_valspec (const unsigned char *buf, int indent, FILE *file)
+evax_bfd_print_valspec (const unsigned char *buf, unsigned int bufsize,
+			int indent, FILE *file)
 {
+  if (bufsize < 5)
+    return bufsize;
+
   unsigned int vflags = buf[0];
-  unsigned int value = (unsigned)bfd_getl32 (buf + 1);
+  unsigned int value = (unsigned) bfd_getl32 (buf + 1);
   unsigned int len = 5;
 
   evax_bfd_print_indent (indent, file);
   /* xgettext:c-format */
   fprintf (file, _("vflags: 0x%02x, value: 0x%08x "), vflags, value);
   buf += 5;
+  bufsize -= 5;
 
   switch (vflags)
     {
@@ -6902,7 +7349,8 @@ evax_bfd_print_valspec (const unsigned c
       break;
     case DST__K_VFLAGS_DSC:
       fprintf (file, _("(descriptor)\n"));
-      evax_bfd_print_desc (buf + value, indent + 1, file);
+      if (value <= bufsize)
+	evax_bfd_print_desc (buf + value, bufsize - value, indent + 1, file);
       break;
     case DST__K_VFLAGS_TVS:
       fprintf (file, _("(trailing value)\n"));
@@ -6941,29 +7389,36 @@ evax_bfd_print_valspec (const unsigned c
 }
 
 static void
-evax_bfd_print_typspec (const unsigned char *buf, int indent, FILE *file)
+evax_bfd_print_typspec (const unsigned char *buf, unsigned int bufsize,
+			int indent, FILE *file)
 {
+  if (bufsize < 3)
+    return;
+
   unsigned char kind = buf[2];
-  unsigned int len = (unsigned)bfd_getl16 (buf);
+  unsigned int len = (unsigned) bfd_getl16 (buf);
 
   evax_bfd_print_indent (indent, file);
   /* xgettext:c-format */
   fprintf (file, _("len: %2u, kind: %2u "), len, kind);
   buf += 3;
+  bufsize -= 3;
   switch (kind)
     {
     case DST__K_TS_ATOM:
     /* xgettext:c-format */
-      fprintf (file, _("atomic, type=0x%02x %s\n"),
-	       buf[0], evax_bfd_get_dsc_name (buf[0]));
+      if (bufsize >= 1)
+	fprintf (file, _("atomic, type=0x%02x %s\n"),
+		 buf[0], evax_bfd_get_dsc_name (buf[0]));
       break;
     case DST__K_TS_IND:
-      fprintf (file, _("indirect, defined at 0x%08x\n"),
-	       (unsigned)bfd_getl32 (buf));
+      if (bufsize >= 4)
+	fprintf (file, _("indirect, defined at 0x%08x\n"),
+		 (unsigned) bfd_getl32 (buf));
       break;
     case DST__K_TS_TPTR:
       fprintf (file, _("typed pointer\n"));
-      evax_bfd_print_typspec (buf, indent + 1, file);
+      evax_bfd_print_typspec (buf, bufsize, indent + 1, file);
       break;
     case DST__K_TS_PTR:
       fprintf (file, _("pointer\n"));
@@ -6971,29 +7426,51 @@ evax_bfd_print_typspec (const unsigned c
     case DST__K_TS_ARRAY:
       {
 	const unsigned char *vs;
+	unsigned int vs_len;
 	unsigned int vec_len;
 	unsigned int i;
 
+	if (bufsize == 0)
+	  return;
 	fprintf (file, _("array, dim: %u, bitmap: "), buf[0]);
+	--bufsize;
 	vec_len = (buf[0] + 1 + 7) / 8;
 	for (i = 0; i < vec_len; i++)
-	  fprintf (file, " %02x", buf[i + 1]);
+	  {
+	    if (bufsize == 0)
+	      break;
+	    fprintf (file, " %02x", buf[i + 1]);
+	    --bufsize;
+	  }
 	fputc ('\n', file);
+	if (bufsize == 0)
+	  return;
 	vs = buf + 1 + vec_len;
 	evax_bfd_print_indent (indent, file);
 	fprintf (file, _("array descriptor:\n"));
-	vs += evax_bfd_print_valspec (vs, indent + 1, file);
-	for (i = 0; i < buf[0] + 1U; i++)
-	  if (buf[1 + i / 8] & (1 << (i % 8)))
-	    {
-	      evax_bfd_print_indent (indent, file);
-	      if (i == 0)
-		fprintf (file, _("type spec for element:\n"));
-	      else
-		fprintf (file, _("type spec for subscript %u:\n"), i);
-	      evax_bfd_print_typspec (vs, indent + 1, file);
-	      vs += bfd_getl16 (vs);
-	    }
+	vs_len = evax_bfd_print_valspec (vs, bufsize, indent + 1, file);
+	vs += vs_len;
+	if (bufsize > vs_len)
+	  {
+	    bufsize -= vs_len;
+	    for (i = 0; i < buf[0] + 1U; i++)
+	      if (buf[1 + i / 8] & (1 << (i % 8)))
+		{
+		  evax_bfd_print_indent (indent, file);
+		  if (i == 0)
+		    fprintf (file, _("type spec for element:\n"));
+		  else
+		    fprintf (file, _("type spec for subscript %u:\n"), i);
+		  evax_bfd_print_typspec (vs, bufsize, indent + 1, file);
+		  if (bufsize < 2)
+		    break;
+		  vs_len = bfd_getl16 (vs);
+		  if (bufsize <= vs_len)
+		    break;
+		  vs += vs_len;
+		  bufsize -= vs_len;
+		}
+	  }
       }
       break;
     default:
@@ -7017,7 +7494,7 @@ evax_bfd_print_dst (struct bfd *abfd, un
       unsigned int type;
       unsigned char *buf;
 
-      if (bfd_bread (&dsth, sizeof (dsth), abfd) != sizeof (dsth))
+      if (bfd_read (&dsth, sizeof (dsth), abfd) != sizeof (dsth))
 	{
 	  fprintf (file, _("cannot read DST header\n"));
 	  return;
@@ -7027,20 +7504,26 @@ evax_bfd_print_dst (struct bfd *abfd, un
       /* xgettext:c-format */
       fprintf (file, _(" type: %3u, len: %3u (at 0x%08x): "),
 	       type, len, off);
-      if (len == 0)
+      if (len > dst_size)
+	len = dst_size;
+      if (len < sizeof (dsth))
 	{
 	  fputc ('\n', file);
 	  break;
 	}
-      len++;
       dst_size -= len;
       off += len;
       len -= sizeof (dsth);
-      buf = bfd_malloc (len);
-      if (bfd_bread (buf, len, abfd) != len)
+      if (len == 0)
+	buf = NULL;
+      else
 	{
-	  fprintf (file, _("cannot read DST symbol\n"));
-	  return;
+	  buf = _bfd_malloc_and_read (abfd, len, len);
+	  if (buf == NULL)
+	    {
+	      fprintf (file, _("cannot read DST symbol\n"));
+	      return;
+	    }
 	}
       switch (type)
 	{
@@ -7084,15 +7567,19 @@ evax_bfd_print_dst (struct bfd *abfd, un
 	case DSC__K_DTYPE_VT2:
 	  fprintf (file, _("standard data: %s\n"),
 		   evax_bfd_get_dsc_name (type));
-	  evax_bfd_print_valspec (buf, 4, file);
-	  fprintf (file, _("    name: %.*s\n"), buf[5], buf + 6);
+	  evax_bfd_print_valspec (buf, len, 4, file);
+	  if (len > 6)
+	    fprintf (file, _("    name: %.*s\n"),
+		     buf[5] > len - 6 ? len - 6 : buf[5], buf + 6);
 	  break;
 	case DST__K_MODBEG:
 	  {
 	    struct vms_dst_modbeg *dst = (void *)buf;
-	    const char *name = (const char *)buf + sizeof (*dst);
+	    unsigned char *name = buf + sizeof (*dst);
 
 	    fprintf (file, _("modbeg\n"));
+	    if (len < sizeof (*dst))
+	      break;
 	    /* xgettext:c-format */
 	    fprintf (file, _("   flags: %d, language: %u, "
 			     "major: %u, minor: %u\n"),
@@ -7100,11 +7587,21 @@ evax_bfd_print_dst (struct bfd *abfd, un
 		     (unsigned)bfd_getl32 (dst->language),
 		     (unsigned)bfd_getl16 (dst->major),
 		     (unsigned)bfd_getl16 (dst->minor));
-	    fprintf (file, _("   module name: %.*s\n"),
-		     name[0], name + 1);
-	    name += name[0] + 1;
-	    fprintf (file, _("   compiler   : %.*s\n"),
-		     name[0], name + 1);
+	    len -= sizeof (*dst);
+	    if (len > 0)
+	      {
+		int nlen = len - 1;
+		fprintf (file, _("   module name: %.*s\n"),
+			 name[0] > nlen ? nlen : name[0], name + 1);
+		if (name[0] < nlen)
+		  {
+		    len -= name[0] + 1;
+		    name += name[0] + 1;
+		    nlen = len - 1;
+		    fprintf (file, _("   compiler   : %.*s\n"),
+			     name[0] > nlen ? nlen : name[0], name + 1);
+		  }
+	      }
 	  }
 	  break;
 	case DST__K_MODEND:
@@ -7113,98 +7610,145 @@ evax_bfd_print_dst (struct bfd *abfd, un
 	case DST__K_RTNBEG:
 	  {
 	    struct vms_dst_rtnbeg *dst = (void *)buf;
-	    const char *name = (const char *)buf + sizeof (*dst);
+	    unsigned char *name = buf + sizeof (*dst);
 
 	    fputs (_("rtnbeg\n"), file);
-	    /* xgettext:c-format */
-	    fprintf (file, _("    flags: %u, address: 0x%08x, "
-			     "pd-address: 0x%08x\n"),
-		     dst->flags,
-		     (unsigned)bfd_getl32 (dst->address),
-		     (unsigned)bfd_getl32 (dst->pd_address));
-	    fprintf (file, _("    routine name: %.*s\n"),
-		     name[0], name + 1);
+	    if (len >= sizeof (*dst))
+	      {
+		/* xgettext:c-format */
+		fprintf (file, _("    flags: %u, address: 0x%08x, "
+				 "pd-address: 0x%08x\n"),
+			 dst->flags,
+			 (unsigned) bfd_getl32 (dst->address),
+			 (unsigned) bfd_getl32 (dst->pd_address));
+		len -= sizeof (*dst);
+		if (len > 0)
+		  {
+		    int nlen = len - 1;
+		    fprintf (file, _("    routine name: %.*s\n"),
+			     name[0] > nlen ? nlen : name[0], name + 1);
+		  }
+	      }
 	  }
 	  break;
 	case DST__K_RTNEND:
 	  {
 	    struct vms_dst_rtnend *dst = (void *)buf;
 
-	    fprintf (file, _("rtnend: size 0x%08x\n"),
-		     (unsigned)bfd_getl32 (dst->size));
+	    if (len >= sizeof (*dst))
+	      fprintf (file, _("rtnend: size 0x%08x\n"),
+		       (unsigned) bfd_getl32 (dst->size));
 	  }
 	  break;
 	case DST__K_PROLOG:
 	  {
 	    struct vms_dst_prolog *dst = (void *)buf;
 
-	    fprintf (file, _("prolog: bkpt address 0x%08x\n"),
-		     (unsigned)bfd_getl32 (dst->bkpt_addr));
+	    if (len >= sizeof (*dst))
+	      /* xgettext:c-format */
+	      fprintf (file, _("prolog: bkpt address 0x%08x\n"),
+		       (unsigned) bfd_getl32 (dst->bkpt_addr));
 	  }
 	  break;
 	case DST__K_EPILOG:
 	  {
 	    struct vms_dst_epilog *dst = (void *)buf;
 
-	    /* xgettext:c-format */
-	    fprintf (file, _("epilog: flags: %u, count: %u\n"),
-		     dst->flags, (unsigned)bfd_getl32 (dst->count));
+	    if (len >= sizeof (*dst))
+	      /* xgettext:c-format */
+	      fprintf (file, _("epilog: flags: %u, count: %u\n"),
+		       dst->flags, (unsigned) bfd_getl32 (dst->count));
 	  }
 	  break;
 	case DST__K_BLKBEG:
 	  {
 	    struct vms_dst_blkbeg *dst = (void *)buf;
-	    const char *name = (const char *)buf + sizeof (*dst);
+	    unsigned char *name = buf + sizeof (*dst);
 
-	    /* xgettext:c-format */
-	    fprintf (file, _("blkbeg: address: 0x%08x, name: %.*s\n"),
-		     (unsigned)bfd_getl32 (dst->address),
-		     name[0], name + 1);
+	    if (len > sizeof (*dst))
+	      {
+		int nlen;
+		len -= sizeof (*dst);
+		nlen = len - 1;
+		/* xgettext:c-format */
+		fprintf (file, _("blkbeg: address: 0x%08x, name: %.*s\n"),
+			 (unsigned) bfd_getl32 (dst->address),
+			 name[0] > nlen ? nlen : name[0], name + 1);
+	      }
 	  }
 	  break;
 	case DST__K_BLKEND:
 	  {
 	    struct vms_dst_blkend *dst = (void *)buf;
 
-	    fprintf (file, _("blkend: size: 0x%08x\n"),
-		     (unsigned)bfd_getl32 (dst->size));
+	    if (len >= sizeof (*dst))
+	      /* xgettext:c-format */
+	      fprintf (file, _("blkend: size: 0x%08x\n"),
+		       (unsigned) bfd_getl32 (dst->size));
 	  }
 	  break;
 	case DST__K_TYPSPEC:
 	  {
 	    fprintf (file, _("typspec (len: %u)\n"), len);
-	    fprintf (file, _("    name: %.*s\n"), buf[0], buf + 1);
-	    evax_bfd_print_typspec (buf + 1 + buf[0], 5, file);
+	    if (len >= 1)
+	      {
+		int nlen = len - 1;
+		fprintf (file, _("    name: %.*s\n"),
+			 buf[0] > nlen ? nlen : buf[0], buf + 1);
+		if (nlen > buf[0])
+		  evax_bfd_print_typspec (buf + 1 + buf[0], len - (1 + buf[0]),
+					  5, file);
+	      }
 	  }
 	  break;
 	case DST__K_SEPTYP:
 	  {
-	    fprintf (file, _("septyp, name: %.*s\n"), buf[5], buf + 6);
-	    evax_bfd_print_valspec (buf, 4, file);
+	    if (len >= 6)
+	      {
+		fprintf (file, _("septyp, name: %.*s\n"),
+			 buf[5] > len - 6 ? len - 6 : buf[5], buf + 6);
+		evax_bfd_print_valspec (buf, len, 4, file);
+	      }
 	  }
 	  break;
 	case DST__K_RECBEG:
 	  {
 	    struct vms_dst_recbeg *recbeg = (void *)buf;
-	    const char *name = (const char *)buf + sizeof (*recbeg);
 
-	    fprintf (file, _("recbeg: name: %.*s\n"), name[0], name + 1);
-	    evax_bfd_print_valspec (buf, 4, file);
-	    fprintf (file, _("    len: %u bits\n"),
-		     (unsigned)bfd_getl32 (name + 1 + name[0]));
+	    if (len > sizeof (*recbeg))
+	      {
+		unsigned char *name = buf + sizeof (*recbeg);
+		int nlen = len - sizeof (*recbeg) - 1;
+
+		if (name[0] < nlen)
+		  nlen = name[0];
+		fprintf (file, _("recbeg: name: %.*s\n"), nlen, name + 1);
+
+		evax_bfd_print_valspec (buf, len, 4, file);
+
+		len -= sizeof (*recbeg) + 1 + nlen;
+		if (len >= 4)
+		  fprintf (file, _("    len: %u bits\n"),
+			   (unsigned) bfd_getl32 (name + 1 + nlen));
+	      }
 	  }
 	  break;
 	case DST__K_RECEND:
 	  fprintf (file, _("recend\n"));
 	  break;
 	case DST__K_ENUMBEG:
-	  /* xgettext:c-format */
-	  fprintf (file, _("enumbeg, len: %u, name: %.*s\n"),
-		   buf[0], buf[1], buf + 2);
+	  if (len >= 2)
+	    /* xgettext:c-format */
+	    fprintf (file, _("enumbeg, len: %u, name: %.*s\n"),
+		     buf[0], buf[1] > len - 2 ? len - 2 : buf[1], buf + 2);
 	  break;
 	case DST__K_ENUMELT:
-	  fprintf (file, _("enumelt, name: %.*s\n"), buf[5], buf + 6);
-	  evax_bfd_print_valspec (buf, 4, file);
+	  if (len >= 6)
+	    {
+	      fprintf (file, _("enumelt, name: %.*s\n"),
+		       buf[5] > len - 6 ? len - 6 : buf[5], buf + 6);
+	      evax_bfd_print_valspec (buf, len, 4, file);
+	    }
 	  break;
 	case DST__K_ENUMEND:
 	  fprintf (file, _("enumend\n"));
@@ -7212,26 +7756,36 @@ evax_bfd_print_dst (struct bfd *abfd, un
 	case DST__K_LABEL:
 	  {
 	    struct vms_dst_label *lab = (void *)buf;
-	    fprintf (file, _("label, name: %.*s\n"),
-		     lab->name[0], lab->name + 1);
-	    fprintf (file, _("    address: 0x%08x\n"),
-		     (unsigned)bfd_getl32 (lab->value));
+	    if (len >= sizeof (*lab))
+	      {
+		fprintf (file, _("label, name: %.*s\n"),
+			 lab->name[0] > len - 1 ? len - 1 : lab->name[0],
+			 lab->name + 1);
+		fprintf (file, _("    address: 0x%08x\n"),
+			 (unsigned) bfd_getl32 (lab->value));
+	      }
 	  }
 	  break;
 	case DST__K_DIS_RANGE:
-	  {
-	    unsigned int cnt = bfd_getl32 (buf);
-	    unsigned char *rng = buf + 4;
-	    unsigned int i;
-
-	    fprintf (file, _("discontiguous range (nbr: %u)\n"), cnt);
-	    for (i = 0; i < cnt; i++, rng += 8)
-	      /* xgettext:c-format */
-	      fprintf (file, _("    address: 0x%08x, size: %u\n"),
-		       (unsigned)bfd_getl32 (rng),
-		       (unsigned)bfd_getl32 (rng + 4));
-
-	  }
+	  if (len >= 4)
+	    {
+	      unsigned int cnt = bfd_getl32 (buf);
+	      unsigned char *rng = buf + 4;
+	      unsigned int i;
+
+	      fprintf (file, _("discontiguous range (nbr: %u)\n"), cnt);
+	      len -= 4;
+	      for (i = 0; i < cnt; i++, rng += 8)
+		{
+		  if (len < 8)
+		    break;
+		  /* xgettext:c-format */
+		  fprintf (file, _("    address: 0x%08x, size: %u\n"),
+			   (unsigned) bfd_getl32 (rng),
+			   (unsigned) bfd_getl32 (rng + 4));
+		  len -= 8;
+		}
+	    }
 	  break;
 	case DST__K_LINE_NUM:
 	  {
@@ -7241,79 +7795,101 @@ evax_bfd_print_dst (struct bfd *abfd, un
 
 	    while (len > 0)
 	      {
-		signed char cmd;
-		unsigned char cmdlen;
+		int cmd;
 		unsigned int val;
+		int cmdlen = -1;
 
-		cmd = buf[0];
-		cmdlen = 0;
+		cmd = *buf++;
+		len--;
 
 		fputs ("    ", file);
 
 		switch (cmd)
 		  {
 		  case DST__K_DELTA_PC_W:
-		    val = bfd_getl16 (buf + 1);
+		    if (len < 2)
+		      break;
+		    val = bfd_getl16 (buf);
 		    fprintf (file, _("delta_pc_w %u\n"), val);
 		    pc += val;
 		    line++;
-		    cmdlen = 3;
+		    cmdlen = 2;
 		    break;
 		  case DST__K_INCR_LINUM:
-		    val = buf[1];
+		    if (len < 1)
+		      break;
+		    val = *buf;
 		    fprintf (file, _("incr_linum(b): +%u\n"), val);
 		    line += val;
-		    cmdlen = 2;
+		    cmdlen = 1;
 		    break;
 		  case DST__K_INCR_LINUM_W:
-		    val = bfd_getl16 (buf + 1);
+		    if (len < 2)
+		      break;
+		    val = bfd_getl16 (buf);
 		    fprintf (file, _("incr_linum_w: +%u\n"), val);
 		    line += val;
-		    cmdlen = 3;
+		    cmdlen = 2;
 		    break;
 		  case DST__K_INCR_LINUM_L:
-		    val = bfd_getl32 (buf + 1);
+		    if (len < 4)
+		      break;
+		    val = bfd_getl32 (buf);
 		    fprintf (file, _("incr_linum_l: +%u\n"), val);
 		    line += val;
-		    cmdlen = 5;
+		    cmdlen = 4;
 		    break;
 		  case DST__K_SET_LINUM:
-		    line = bfd_getl16 (buf + 1);
+		    if (len < 2)
+		      break;
+		    line = bfd_getl16 (buf);
 		    fprintf (file, _("set_line_num(w) %u\n"), line);
-		    cmdlen = 3;
+		    cmdlen = 2;
 		    break;
 		  case DST__K_SET_LINUM_B:
-		    line = buf[1];
+		    if (len < 1)
+		      break;
+		    line = *buf;
 		    fprintf (file, _("set_line_num_b %u\n"), line);
-		    cmdlen = 2;
+		    cmdlen = 1;
 		    break;
 		  case DST__K_SET_LINUM_L:
-		    line = bfd_getl32 (buf + 1);
+		    if (len < 4)
+		      break;
+		    line = bfd_getl32 (buf);
 		    fprintf (file, _("set_line_num_l %u\n"), line);
-		    cmdlen = 5;
+		    cmdlen = 4;
 		    break;
 		  case DST__K_SET_ABS_PC:
-		    pc = bfd_getl32 (buf + 1);
+		    if (len < 4)
+		      break;
+		    pc = bfd_getl32 (buf);
 		    fprintf (file, _("set_abs_pc: 0x%08x\n"), pc);
-		    cmdlen = 5;
+		    cmdlen = 4;
 		    break;
 		  case DST__K_DELTA_PC_L:
+		    if (len < 4)
+		      break;
 		    fprintf (file, _("delta_pc_l: +0x%08x\n"),
-			     (unsigned)bfd_getl32 (buf + 1));
-		    cmdlen = 5;
+			     (unsigned) bfd_getl32 (buf));
+		    cmdlen = 4;
 		    break;
 		  case DST__K_TERM:
-		    fprintf (file, _("term(b): 0x%02x"), buf[1]);
-		    pc += buf[1];
+		    if (len < 1)
+		      break;
+		    fprintf (file, _("term(b): 0x%02x"), *buf);
+		    pc += *buf;
 		    fprintf (file, _("        pc: 0x%08x\n"), pc);
-		    cmdlen = 2;
+		    cmdlen = 1;
 		    break;
 		  case DST__K_TERM_W:
-		    val = bfd_getl16 (buf + 1);
+		    if (len < 2)
+		      break;
+		    val = bfd_getl16 (buf);
 		    fprintf (file, _("term_w: 0x%04x"), val);
 		    pc += val;
 		    fprintf (file, _("    pc: 0x%08x\n"), pc);
-		    cmdlen = 3;
+		    cmdlen = 2;
 		    break;
 		  default:
 		    if (cmd <= 0)
@@ -7324,13 +7900,13 @@ evax_bfd_print_dst (struct bfd *abfd, un
 			/* xgettext:c-format */
 			fprintf (file, _("    pc: 0x%08x line: %5u\n"),
 				 pc, line);
-			cmdlen = 1;
+			cmdlen = 0;
 		      }
 		    else
 		      fprintf (file, _("    *unhandled* cmd %u\n"), cmd);
 		    break;
 		  }
-		if (cmdlen == 0)
+		if (cmdlen < 0)
 		  break;
 		len -= cmdlen;
 		buf += cmdlen;
@@ -7346,16 +7922,20 @@ evax_bfd_print_dst (struct bfd *abfd, un
 
 	    while (len > 0)
 	      {
-		signed char cmd = buf[0];
-		unsigned char cmdlen = 0;
+		int cmd = *buf++;
+		int cmdlen = -1;
 
+		len--;
 		switch (cmd)
 		  {
 		  case DST__K_SRC_DECLFILE:
 		    {
-		      struct vms_dst_src_decl_src *src = (void *)(buf + 1);
-		      const char *name;
+		      struct vms_dst_src_decl_src *src = (void *) buf;
+		      unsigned char *name;
+		      int nlen;
 
+		      if (len < sizeof (*src))
+			break;
 		      /* xgettext:c-format */
 		      fprintf (file, _("   declfile: len: %u, flags: %u, "
 				       "fileid: %u\n"),
@@ -7370,58 +7950,80 @@ evax_bfd_print_dst (struct bfd *abfd, un
 			       (unsigned)bfd_getl32 (src->rms_ebk),
 			       (unsigned)bfd_getl16 (src->rms_ffb),
 			       src->rms_rfo);
-		      name = (const char *)buf + 1 + sizeof (*src);
+		      if (src->length > len || src->length <= sizeof (*src))
+			break;
+		      nlen = src->length - sizeof (*src) - 1;
+		      name = buf + sizeof (*src);
 		      fprintf (file, _("   filename   : %.*s\n"),
-			       name[0], name + 1);
+			       name[0] > nlen ? nlen : name[0], name + 1);
+		      if (name[0] >= nlen)
+			break;
+		      nlen -= name[0] + 1;
 		      name += name[0] + 1;
 		      fprintf (file, _("   module name: %.*s\n"),
-			       name[0], name + 1);
-		      cmdlen = 2 + src->length;
+			       name[0] > nlen ? nlen : name[0], name + 1);
+		      if (name[0] > nlen)
+			break;
+		      cmdlen = src->length;
 		    }
 		    break;
 		  case DST__K_SRC_SETFILE:
+		    if (len < 2)
+		      break;
 		    fprintf (file, _("   setfile %u\n"),
-			     (unsigned)bfd_getl16 (buf + 1));
-		    cmdlen = 3;
+			     (unsigned) bfd_getl16 (buf));
+		    cmdlen = 2;
 		    break;
 		  case DST__K_SRC_SETREC_W:
+		    if (len < 2)
+		      break;
 		    fprintf (file, _("   setrec %u\n"),
-			     (unsigned)bfd_getl16 (buf + 1));
-		    cmdlen = 3;
+			     (unsigned) bfd_getl16 (buf));
+		    cmdlen = 2;
 		    break;
 		  case DST__K_SRC_SETREC_L:
+		    if (len < 4)
+		      break;
 		    fprintf (file, _("   setrec %u\n"),
-			     (unsigned)bfd_getl32 (buf + 1));
-		    cmdlen = 5;
+			     (unsigned) bfd_getl32 (buf));
+		    cmdlen = 4;
 		    break;
 		  case DST__K_SRC_SETLNUM_W:
+		    if (len < 2)
+		      break;
 		    fprintf (file, _("   setlnum %u\n"),
-			     (unsigned)bfd_getl16 (buf + 1));
-		    cmdlen = 3;
+			     (unsigned) bfd_getl16 (buf));
+		    cmdlen = 2;
 		    break;
 		  case DST__K_SRC_SETLNUM_L:
+		    if (len < 4)
+		      break;
 		    fprintf (file, _("   setlnum %u\n"),
-			     (unsigned)bfd_getl32 (buf + 1));
-		    cmdlen = 5;
+			     (unsigned) bfd_getl32 (buf));
+		    cmdlen = 4;
 		    break;
 		  case DST__K_SRC_DEFLINES_W:
+		    if (len < 2)
+		      break;
 		    fprintf (file, _("   deflines %u\n"),
-			     (unsigned)bfd_getl16 (buf + 1));
-		    cmdlen = 3;
+			     (unsigned) bfd_getl16 (buf));
+		    cmdlen = 2;
 		    break;
 		  case DST__K_SRC_DEFLINES_B:
-		    fprintf (file, _("   deflines %u\n"), buf[1]);
-		    cmdlen = 2;
+		    if (len < 1)
+		      break;
+		    fprintf (file, _("   deflines %u\n"), *buf);
+		    cmdlen = 1;
 		    break;
 		  case DST__K_SRC_FORMFEED:
 		    fprintf (file, _("   formfeed\n"));
-		    cmdlen = 1;
+		    cmdlen = 0;
 		    break;
 		  default:
 		    fprintf (file, _("   *unhandled* cmd %u\n"), cmd);
 		    break;
 		  }
-		if (cmdlen == 0)
+		if (cmdlen < 0)
 		  break;
 		len -= cmdlen;
 		buf += cmdlen;
@@ -7459,8 +8061,8 @@ evax_bfd_print_image (bfd *abfd, FILE *f
   unsigned int eiaf_size = 0;
   unsigned int eihvn_off;
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET)
-      || bfd_bread (&eihd, sizeof (eihd), abfd) != sizeof (eihd))
+  if (bfd_seek (abfd, 0, SEEK_SET)
+      || bfd_read (&eihd, sizeof (eihd), abfd) != sizeof (eihd))
     {
       fprintf (file, _("cannot read EIHD\n"));
       return;
@@ -7587,18 +8189,18 @@ evax_bfd_print_image (bfd *abfd, FILE *f
       unsigned int j;
 
       fprintf (file, _("system version array information:\n"));
-      if (bfd_seek (abfd, (file_ptr) eihvn_off, SEEK_SET)
-	  || bfd_bread (&eihvn, sizeof (eihvn), abfd) != sizeof (eihvn))
+      if (bfd_seek (abfd, eihvn_off, SEEK_SET)
+	  || bfd_read (&eihvn, sizeof (eihvn), abfd) != sizeof (eihvn))
 	{
 	  fprintf (file, _("cannot read EIHVN header\n"));
 	  return;
 	}
       mask = bfd_getl32 (eihvn.subsystem_mask);
       for (j = 0; j < 32; j++)
-	if (mask & (1 << j))
+	if (mask & (1u << j))
 	  {
 	    struct vms_eihvn_subversion ver;
-	    if (bfd_bread (&ver, sizeof (ver), abfd) != sizeof (ver))
+	    if (bfd_read (&ver, sizeof (ver), abfd) != sizeof (ver))
 	      {
 		fprintf (file, _("cannot read EIHVN version\n"));
 		return;
@@ -7680,8 +8282,8 @@ evax_bfd_print_image (bfd *abfd, FILE *f
     {
       struct vms_eiha eiha;
 
-      if (bfd_seek (abfd, (file_ptr) eiha_off, SEEK_SET)
-	  || bfd_bread (&eiha, sizeof (eiha), abfd) != sizeof (eiha))
+      if (bfd_seek (abfd, eiha_off, SEEK_SET)
+	  || bfd_read (&eiha, sizeof (eiha), abfd) != sizeof (eiha))
 	{
 	  fprintf (file, _("cannot read EIHA\n"));
 	  return;
@@ -7713,33 +8315,41 @@ evax_bfd_print_image (bfd *abfd, FILE *f
     {
       struct vms_eihi eihi;
 
-      if (bfd_seek (abfd, (file_ptr) eihi_off, SEEK_SET)
-	  || bfd_bread (&eihi, sizeof (eihi), abfd) != sizeof (eihi))
+      if (bfd_seek (abfd, eihi_off, SEEK_SET)
+	  || bfd_read (&eihi, sizeof (eihi), abfd) != sizeof (eihi))
 	{
 	  fprintf (file, _("cannot read EIHI\n"));
 	  return;
 	}
       /* xgettext:c-format */
       fprintf (file, _("Image identification: (major: %u, minor: %u)\n"),
-	       (unsigned)bfd_getl32 (eihi.majorid),
-	       (unsigned)bfd_getl32 (eihi.minorid));
-      fprintf (file, _(" image name       : %.*s\n"),
-	       eihi.imgnam[0], eihi.imgnam + 1);
+	       (unsigned) bfd_getl32 (eihi.majorid),
+	       (unsigned) bfd_getl32 (eihi.minorid));
+      unsigned int nlen = eihi.imgnam[0];
+      if (nlen > sizeof (eihi.imgnam) - 1)
+	nlen = sizeof (eihi.imgnam) - 1;
+      fprintf (file, _(" image name       : %.*s\n"), nlen, eihi.imgnam + 1);
       fprintf (file, _(" link time        : %s\n"),
 	       vms_time_to_str (eihi.linktime));
-      fprintf (file, _(" image ident      : %.*s\n"),
-	       eihi.imgid[0], eihi.imgid + 1);
-      fprintf (file, _(" linker ident     : %.*s\n"),
-	       eihi.linkid[0], eihi.linkid + 1);
-      fprintf (file, _(" image build ident: %.*s\n"),
-	       eihi.imgbid[0], eihi.imgbid + 1);
+      nlen = eihi.imgid[0];
+      if (nlen > sizeof (eihi.imgid) - 1)
+	nlen = sizeof (eihi.imgid) - 1;
+      fprintf (file, _(" image ident      : %.*s\n"), nlen, eihi.imgid + 1);
+      nlen = eihi.linkid[0];
+      if (nlen > sizeof (eihi.linkid) - 1)
+	nlen = sizeof (eihi.linkid) - 1;
+      fprintf (file, _(" linker ident     : %.*s\n"), nlen, eihi.linkid + 1);
+      nlen = eihi.imgbid[0];
+      if (nlen > sizeof (eihi.imgbid) -1 )
+	nlen = sizeof (eihi.imgbid) - 1;
+      fprintf (file, _(" image build ident: %.*s\n"), nlen, eihi.imgbid + 1);
     }
   if (eihs_off != 0)
     {
       struct vms_eihs eihs;
 
-      if (bfd_seek (abfd, (file_ptr) eihs_off, SEEK_SET)
-	  || bfd_bread (&eihs, sizeof (eihs), abfd) != sizeof (eihs))
+      if (bfd_seek (abfd, eihs_off, SEEK_SET)
+	  || bfd_read (&eihs, sizeof (eihs), abfd) != sizeof (eihs))
 	{
 	  fprintf (file, _("cannot read EIHS\n"));
 	  return;
@@ -7771,8 +8381,8 @@ evax_bfd_print_image (bfd *abfd, FILE *f
 
       while (1)
 	{
-	  if (bfd_seek (abfd, (file_ptr) eisd_off, SEEK_SET)
-	      || bfd_bread (&eisd, sizeof (eisd), abfd) != sizeof (eisd))
+	  if (bfd_seek (abfd, eisd_off, SEEK_SET)
+	      || bfd_read (&eisd, sizeof (eisd), abfd) != sizeof (eisd))
 	    {
 	      fprintf (file, _("cannot read EISD\n"));
 	      return;
@@ -7865,10 +8475,15 @@ evax_bfd_print_image (bfd *abfd, FILE *f
 	}
       fputs (_(")\n"), file);
       if (val & EISD__M_GBL)
-	/* xgettext:c-format */
-	fprintf (file, _(" ident: 0x%08x, name: %.*s\n"),
-		 (unsigned)bfd_getl32 (eisd.ident),
-		 eisd.gblnam[0], eisd.gblnam + 1);
+	{
+	  unsigned int nlen = eisd.gblnam[0];
+	  if (nlen > sizeof (eisd.gblnam) - 1)
+	    nlen = sizeof (eisd.gblnam) - 1;
+	  /* xgettext:c-format */
+	  fprintf (file, _(" ident: 0x%08x, name: %.*s\n"),
+		   (unsigned) bfd_getl32 (eisd.ident),
+		   nlen, eisd.gblnam + 1);
+	}
       eisd_off += len;
     }
 
@@ -7887,7 +8502,7 @@ evax_bfd_print_image (bfd *abfd, FILE *f
 	  struct vms_dmt_header dmth;
 	  unsigned int count;
 
-	  if (bfd_bread (&dmth, sizeof (dmth), abfd) != sizeof (dmth))
+	  if (bfd_read (&dmth, sizeof (dmth), abfd) != sizeof (dmth))
 	    {
 	      fprintf (file, _("cannot read DMT header\n"));
 	      return;
@@ -7903,7 +8518,7 @@ evax_bfd_print_image (bfd *abfd, FILE *f
 	    {
 	      struct vms_dmt_psect dmtp;
 
-	      if (bfd_bread (&dmtp, sizeof (dmtp), abfd) != sizeof (dmtp))
+	      if (bfd_read (&dmtp, sizeof (dmtp), abfd) != sizeof (dmtp))
 		{
 		  fprintf (file, _("cannot read DMT psect\n"));
 		  return;
@@ -7939,7 +8554,7 @@ evax_bfd_print_image (bfd *abfd, FILE *f
       fprintf (file, _("Global symbol table:\n"));
       evax_bfd_print_eobj (abfd, file);
     }
-  if (eiaf_vbn != 0)
+  if (eiaf_vbn != 0 && eiaf_size >= sizeof (struct vms_eiaf))
     {
       unsigned char *buf;
       struct vms_eiaf *eiaf;
@@ -7952,14 +8567,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;
@@ -8013,66 +8626,75 @@ evax_bfd_print_image (bfd *abfd, FILE *f
 
       if (shlstoff)
 	{
-	  struct vms_shl *shl = (struct vms_shl *)(buf + shlstoff);
 	  unsigned int j;
 
 	  fprintf (file, _(" Shareable images:\n"));
-	  for (j = 0; j < shrimgcnt; j++, shl++)
-	    {
+	  for (j = 0;
+	       j < shrimgcnt && shlstoff <= eiaf_size - sizeof (struct vms_shl);
+	       j++, shlstoff += sizeof (struct vms_shl))
+	    {
+	      struct vms_shl *shl = (struct vms_shl *) (buf + shlstoff);
+	      unsigned int nlen = shl->imgnam[0];
+	      if (nlen > sizeof (shl->imgnam) - 1)
+		nlen = sizeof (shl->imgnam) - 1;
 	      fprintf (file,
 		       /* xgettext:c-format */
 		       _("  %u: size: %u, flags: 0x%02x, name: %.*s\n"),
 		       j, shl->size, shl->flags,
-		       shl->imgnam[0], shl->imgnam + 1);
+		       nlen, shl->imgnam + 1);
 	    }
 	}
       if (qrelfixoff != 0)
 	{
 	  fprintf (file, _(" quad-word relocation fixups:\n"));
-	  evax_bfd_print_relocation_records (file, buf + qrelfixoff, 8);
+	  evax_bfd_print_relocation_records (file, buf, eiaf_size,
+					     qrelfixoff, 8);
 	}
       if (lrelfixoff != 0)
 	{
 	  fprintf (file, _(" long-word relocation fixups:\n"));
-	  evax_bfd_print_relocation_records (file, buf + lrelfixoff, 4);
+	  evax_bfd_print_relocation_records (file, buf, eiaf_size,
+					     lrelfixoff, 4);
 	}
       if (qdotadroff != 0)
 	{
 	  fprintf (file, _(" quad-word .address reference fixups:\n"));
-	  evax_bfd_print_address_fixups (file, buf + qdotadroff);
+	  evax_bfd_print_address_fixups (file, buf, eiaf_size, qdotadroff);
 	}
       if (ldotadroff != 0)
 	{
 	  fprintf (file, _(" long-word .address reference fixups:\n"));
-	  evax_bfd_print_address_fixups (file, buf + ldotadroff);
+	  evax_bfd_print_address_fixups (file, buf, eiaf_size, ldotadroff);
 	}
       if (codeadroff != 0)
 	{
 	  fprintf (file, _(" Code Address Reference Fixups:\n"));
-	  evax_bfd_print_reference_fixups (file, buf + codeadroff);
+	  evax_bfd_print_reference_fixups (file, buf, eiaf_size, codeadroff);
 	}
       if (lpfixoff != 0)
 	{
 	  fprintf (file, _(" Linkage Pairs Reference Fixups:\n"));
-	  evax_bfd_print_reference_fixups (file, buf + lpfixoff);
+	  evax_bfd_print_reference_fixups (file, buf, eiaf_size, lpfixoff);
 	}
-      if (chgprtoff)
+      if (chgprtoff && chgprtoff <= eiaf_size - 4)
 	{
-	  unsigned int count = (unsigned)bfd_getl32 (buf + chgprtoff);
-	  struct vms_eicp *eicp = (struct vms_eicp *)(buf + chgprtoff + 4);
+	  unsigned int count = (unsigned) bfd_getl32 (buf + chgprtoff);
 	  unsigned int j;
 
 	  fprintf (file, _(" Change Protection (%u entries):\n"), count);
-	  for (j = 0; j < count; j++, eicp++)
+	  for (j = 0, chgprtoff += 4;
+	       j < count && chgprtoff <= eiaf_size - sizeof (struct vms_eicp);
+	       j++, chgprtoff += sizeof (struct vms_eicp))
 	    {
+	      struct vms_eicp *eicp = (struct vms_eicp *) (buf + chgprtoff);
 	      unsigned int prot = bfd_getl32 (eicp->newprt);
 	      fprintf (file,
 		       /* xgettext:c-format */
 		       _("  base: 0x%08x %08x, size: 0x%08x, prot: 0x%08x "),
-		       (unsigned)bfd_getl32 (eicp->baseva + 4),
-		       (unsigned)bfd_getl32 (eicp->baseva + 0),
-		       (unsigned)bfd_getl32 (eicp->size),
-		       (unsigned)bfd_getl32 (eicp->newprt));
+		       (unsigned) bfd_getl32 (eicp->baseva + 4),
+		       (unsigned) bfd_getl32 (eicp->baseva + 0),
+		       (unsigned) bfd_getl32 (eicp->size),
+		       (unsigned) bfd_getl32 (eicp->newprt));
 	      switch (prot)
 		{
 		case PRT__C_NA:
@@ -8134,7 +8756,7 @@ evax_bfd_print_image (bfd *abfd, FILE *f
     }
 }
 
-static bfd_boolean
+static bool
 vms_bfd_print_private_bfd_data (bfd *abfd, void *ptr)
 {
   FILE *file = (FILE *)ptr;
@@ -8144,17 +8766,17 @@ vms_bfd_print_private_bfd_data (bfd *abf
   else
     {
       if (bfd_seek (abfd, 0, SEEK_SET))
-	return FALSE;
+	return false;
       evax_bfd_print_eobj (abfd, file);
     }
-  return TRUE;
+  return true;
 }
 
 /* Linking.  */
 
 /* Slurp ETIR/EDBG/ETBT VMS object records.  */
 
-static bfd_boolean
+static bool
 alpha_vms_read_sections_content (bfd *abfd, struct bfd_link_info *info)
 {
   asection *cur_section;
@@ -8163,7 +8785,7 @@ alpha_vms_read_sections_content (bfd *ab
   file_ptr dst_offset;
 
   if (bfd_seek (abfd, 0, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   cur_section = NULL;
   cur_offset = 0;
@@ -8188,13 +8810,13 @@ alpha_vms_read_sections_content (bfd *ab
   while (1)
     {
       int type;
-      bfd_boolean res;
+      bool res;
 
       type = _bfd_vms_get_object_record (abfd);
       if (type < 0)
 	{
 	  vms_debug2 ((2, "next_record failed\n"));
-	  return FALSE;
+	  return false;
 	}
       switch (type)
 	{
@@ -8215,14 +8837,14 @@ alpha_vms_read_sections_content (bfd *ab
 	  dst_offset = PRIV (image_offset);
 	  break;
 	case EOBJ__C_EEOM:
-	  return TRUE;
+	  return true;
 	default:
 	  continue;
 	}
       if (!res)
 	{
 	  vms_debug2 ((2, "slurp eobj type %d failed\n", type));
-	  return FALSE;
+	  return false;
 	}
     }
 }
@@ -8236,41 +8858,49 @@ alpha_vms_sizeof_headers (bfd *abfd ATTR
 
 /* Add a linkage pair fixup at address SECT + OFFSET to SHLIB. */
 
-static void
+static bool
 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);
+  sl->has_fixups = true;
+  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 bool
 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);
+  sl->has_fixups = true;
+  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 bool
 alpha_vms_add_fixup_qr (struct bfd_link_info *info, bfd *src,
 			bfd *shlib, bfd_vma vec)
 {
@@ -8281,32 +8911,37 @@ alpha_vms_add_fixup_qr (struct bfd_link_
 
   sl = &VEC_EL (alpha_vms_link_hash (info)->shrlibs,
 		struct alpha_vms_shlib_el, PRIV2 (shlib, shr_index));
-  sl->has_fixups = TRUE;
+  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 bool
 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 bool
 alpha_vms_add_lw_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
+  return false;
 }
 
-static void
+static bool
 alpha_vms_add_qw_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED)
 {
+  return false;
 }
 
 static struct bfd_hash_entry *
@@ -8336,13 +8971,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,11 +9013,12 @@ 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;
 }
 
-static bfd_boolean
+static bool
 alpha_vms_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   unsigned int i;
@@ -8374,14 +9031,14 @@ alpha_vms_link_add_object_symbols (bfd *
       asymbol sym;
 
       if (!alpha_vms_convert_symbol (abfd, e, &sym))
-	return FALSE;
+	return false;
 
       if ((e->flags & EGSY__V_DEF) && abfd->selective_search)
 	{
 	  /* In selective_search mode, only add definition that are
 	     required.  */
 	  h = (struct alpha_vms_link_hash_entry *)bfd_link_hash_lookup
-	    (info->hash, sym.name, FALSE, FALSE, FALSE);
+	    (info->hash, sym.name, false, false, false);
 	  if (h == NULL || h->root.type != bfd_link_hash_undefined)
 	    continue;
 	}
@@ -8391,8 +9048,8 @@ alpha_vms_link_add_object_symbols (bfd *
       h_root = (struct bfd_link_hash_entry *) h;
       if (!_bfd_generic_link_add_one_symbol (info, abfd, sym.name, sym.flags,
 					     sym.section, sym.value, NULL,
-					     FALSE, FALSE, &h_root))
-	return FALSE;
+					     false, false, &h_root))
+	return false;
       h = (struct alpha_vms_link_hash_entry *) h_root;
 
       if ((e->flags & EGSY__V_DEF)
@@ -8411,6 +9068,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);
@@ -8418,10 +9077,10 @@ alpha_vms_link_add_object_symbols (bfd *
       PRIV (shr_index) = VEC_COUNT (alpha_vms_link_hash (info)->shrlibs) - 1;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 alpha_vms_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   int pass;
@@ -8432,7 +9091,7 @@ alpha_vms_link_add_archive_symbols (bfd
   if (info->output_bfd->xvec != abfd->xvec)
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   /* The archive_pass field in the archive itself is used to
@@ -8479,7 +9138,7 @@ alpha_vms_link_add_archive_symbols (bfd
 
       element = bfd_get_elt_at_index (abfd, symidx);
       if (element == NULL)
-	return FALSE;
+	return false;
 
       if (element->archive_pass == -1 || element->archive_pass == pass)
 	{
@@ -8490,7 +9149,7 @@ alpha_vms_link_add_archive_symbols (bfd
       if (! bfd_check_format (element, bfd_object))
 	{
 	  element->archive_pass = -1;
-	  return FALSE;
+	  return false;
 	}
 
       orig_element = element;
@@ -8500,7 +9159,7 @@ alpha_vms_link_add_archive_symbols (bfd
 	  if (element == NULL || !bfd_check_format (element, bfd_object))
 	    {
 	      orig_element->archive_pass = -1;
-	      return FALSE;
+	      return false;
 	    }
 	}
 
@@ -8511,15 +9170,15 @@ alpha_vms_link_add_archive_symbols (bfd
 	    ->add_archive_element) (info, element, h->root.string, &element))
 	continue;
       if (!alpha_vms_link_add_object_symbols (element, info))
-	return FALSE;
+	return false;
 
       orig_element->archive_pass = pass;
     }
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 alpha_vms_bfd_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   switch (bfd_get_format (abfd))
@@ -8536,11 +9195,11 @@ alpha_vms_bfd_link_add_symbols (bfd *abf
       break;
     default:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 }
 
-static bfd_boolean
+static bool
 alpha_vms_build_fixups (struct bfd_link_info *info)
 {
   struct alpha_vms_link_hash_table *t = alpha_vms_link_hash (info);
@@ -8598,7 +9257,7 @@ alpha_vms_build_fixups (struct bfd_link_
 
   /* Finish now if there is no content.  */
   if (ca_sz + lp_sz + qr_sz == 0)
-    return TRUE;
+    return true;
 
   /* Add an eicp entry for the fixup itself.  */
   chgprt_num = 1;
@@ -8617,10 +9276,11 @@ alpha_vms_build_fixups (struct bfd_link_
   sz = (sz + VMS_BLOCK_SIZE - 1) & ~(VMS_BLOCK_SIZE - 1);
   content = bfd_zalloc (info->output_bfd, sz);
   if (content == NULL)
-    return FALSE;
+    return false;
 
   sec = alpha_vms_link_hash (info)->fixup;
   sec->contents = content;
+  sec->alloced = 1;
   sec->size = sz;
 
   eiaf = (struct vms_eiaf *)content;
@@ -8805,13 +9465,13 @@ alpha_vms_build_fixups (struct bfd_link_
       off += sizeof (struct vms_eicp);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Called by bfd_hash_traverse to fill the symbol table.
    Return FALSE in case of failure.  */
 
-static bfd_boolean
+static bool
 alpha_vms_link_output_symbol (struct bfd_hash_entry *bh, void *infov)
 {
   struct bfd_link_hash_entry *hc = (struct bfd_link_hash_entry *) bh;
@@ -8823,19 +9483,19 @@ alpha_vms_link_output_symbol (struct bfd
     {
       hc = hc->u.i.link;
       if (hc->type == bfd_link_hash_new)
-	return TRUE;
+	return true;
     }
   h = (struct alpha_vms_link_hash_entry *) hc;
 
   switch (h->root.type)
     {
     case bfd_link_hash_undefined:
-      return TRUE;
+      return true;
     case bfd_link_hash_new:
     case bfd_link_hash_warning:
       abort ();
     case bfd_link_hash_undefweak:
-      return TRUE;
+      return true;
     case bfd_link_hash_defined:
     case bfd_link_hash_defweak:
       {
@@ -8843,23 +9503,23 @@ alpha_vms_link_output_symbol (struct bfd
 
 	/* FIXME: this is certainly a symbol from a dynamic library.  */
 	if (bfd_is_abs_section (sec))
-	  return TRUE;
+	  return true;
 
 	if (sec->owner->flags & DYNAMIC)
-	  return TRUE;
+	  return true;
       }
       break;
     case bfd_link_hash_common:
       break;
     case bfd_link_hash_indirect:
-      return TRUE;
+      return true;
     }
 
   /* Do not write not kept symbols.  */
   if (info->strip == strip_some
       && bfd_hash_lookup (info->keep_hash, h->root.root.string,
-			  FALSE, FALSE) != NULL)
-    return TRUE;
+			  false, false) != NULL)
+    return true;
 
   if (h->sym == NULL)
     {
@@ -8887,12 +9547,12 @@ alpha_vms_link_output_symbol (struct bfd
     sym = h->sym;
 
   if (!add_symbol_entry (info->output_bfd, sym))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 alpha_vms_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   asection *o;
@@ -8909,7 +9569,7 @@ alpha_vms_bfd_final_link (bfd *abfd, str
       /* FIXME: we do not yet support relocatable link.  It is not obvious
 	 how to do it for debug infos.  */
       (*info->callbacks->einfo)(_("%P: relocatable link is not supported\n"));
-      return FALSE;
+      return false;
     }
 
   abfd->outsymbols = NULL;
@@ -8919,7 +9579,7 @@ alpha_vms_bfd_final_link (bfd *abfd, str
   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)
-	p->u.indirect.section->linker_mark = TRUE;
+	p->u.indirect.section->linker_mark = true;
 
 #if 0
   /* Handle all the link order information for the sections.  */
@@ -9006,7 +9666,7 @@ alpha_vms_bfd_final_link (bfd *abfd, str
 
     i = 0;
     PRIV (transfer_address[i++]) = 0xffffffff00000340ULL;	/* SYS$IMGACT */
-    h = bfd_link_hash_lookup (info->hash, "LIB$INITIALIZE", FALSE, FALSE, TRUE);
+    h = bfd_link_hash_lookup (info->hash, "LIB$INITIALIZE", false, false, true);
     if (h != NULL && h->type == bfd_link_hash_defined)
       PRIV (transfer_address[i++]) =
 	alpha_vms_get_sym_value (h->u.def.section, h->u.def.value);
@@ -9025,7 +9685,8 @@ alpha_vms_bfd_final_link (bfd *abfd, str
 	{
 	  o->contents = bfd_alloc (abfd, o->size);
 	  if (o->contents == NULL)
-	    return FALSE;
+	    return false;
+	  o->alloced = 1;
 	}
       if (o->flags & SEC_LOAD)
 	{
@@ -9044,7 +9705,7 @@ alpha_vms_bfd_final_link (bfd *abfd, str
     (info->output_bfd, "$FIXUP$",
      SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_LINKER_CREATED);
   if (fixupsec == NULL)
-    return FALSE;
+    return false;
   last_addr = (last_addr + 0xffff) & ~0xffff;
   fixupsec->vma = last_addr;
 
@@ -9063,7 +9724,7 @@ alpha_vms_bfd_final_link (bfd *abfd, str
 	(info->output_bfd, "$DMT$",
 	 SEC_DEBUGGING | SEC_HAS_CONTENTS | SEC_LINKER_CREATED);
       if (dmt == NULL)
-	return FALSE;
+	return false;
     }
   else
     dmt = NULL;
@@ -9078,7 +9739,7 @@ alpha_vms_bfd_final_link (bfd *abfd, str
 	}
 
       if (!alpha_vms_read_sections_content (sub, info))
-	return FALSE;
+	return false;
     }
 
   /* Handle all the link order information for the sections.
@@ -9092,13 +9753,13 @@ alpha_vms_bfd_final_link (bfd *abfd, str
 	    case bfd_section_reloc_link_order:
 	    case bfd_symbol_reloc_link_order:
 	      abort ();
-	      return FALSE;
+	      return false;
 	    case bfd_indirect_link_order:
 	      /* Already done.  */
 	      break;
 	    default:
 	      if (! _bfd_default_link_order (abfd, info, o, p))
-		return FALSE;
+		return false;
 	      break;
 	    }
 	}
@@ -9106,7 +9767,7 @@ alpha_vms_bfd_final_link (bfd *abfd, str
 
   /* Compute fixups.  */
   if (!alpha_vms_build_fixups (info))
-    return FALSE;
+    return false;
 
   /* Compute the DMT.  */
   if (dmt != NULL)
@@ -9172,8 +9833,9 @@ alpha_vms_bfd_final_link (bfd *abfd, str
 	    {
 	      contents = bfd_zalloc (info->output_bfd, off);
 	      if (contents == NULL)
-		return FALSE;
+		return false;
 	      dmt->contents = contents;
+	      dmt->alloced = 1;
 	      dmt->size = off;
 	    }
 	  else
@@ -9183,68 +9845,71 @@ alpha_vms_bfd_final_link (bfd *abfd, str
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read the contents of a section.
    buf points to a buffer of buf_size bytes to be filled with
    section data (starting at offset into section)  */
 
-static bfd_boolean
+static bool
 alpha_vms_get_section_contents (bfd *abfd, asection *section,
 				void *buf, file_ptr offset,
 				bfd_size_type count)
 {
-  asection *sec;
-
-  /* Image are easy.  */
-  if (bfd_get_file_flags (abfd) & (EXEC_P | DYNAMIC))
+  /* Handle image sections.  */
+  if (section->filepos != 0
+      || (section->flags & SEC_HAS_CONTENTS) == 0)
     return _bfd_generic_get_section_contents (abfd, section,
 					      buf, offset, count);
 
+  /* A section with a zero filepos implies the section has no direct
+     file backing.  Its contents must be calculated by processing ETIR
+     records.  */
+
   /* Safety check.  */
   if (offset + count < count
       || offset + count > section->size)
     {
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
-  /* If the section is already in memory, just copy it.  */
-  if (section->flags & SEC_IN_MEMORY)
-    {
-      BFD_ASSERT (section->contents != NULL);
-      memcpy (buf, section->contents + offset, count);
-      return TRUE;
-    }
   if (section->size == 0)
-    return TRUE;
+    return true;
 
-  /* Alloc in memory and read ETIRs.  */
-  for (sec = abfd->sections; sec; sec = sec->next)
+  /* If we haven't yet read ETIR/EDBG/ETBT records, do so.  */
+  if ((section->flags & SEC_IN_MEMORY) == 0)
     {
-      BFD_ASSERT (sec->contents == NULL);
-
-      if (sec->size != 0 && (sec->flags & SEC_HAS_CONTENTS))
+      /* Alloc memory and read ETIRs.  */
+      for (asection *sec = abfd->sections; sec; sec = sec->next)
 	{
-	  sec->contents = bfd_alloc (abfd, sec->size);
-	  if (sec->contents == NULL)
-	    return FALSE;
+	  if (sec->size != 0
+	      && sec->filepos == 0
+	      && (sec->flags & SEC_HAS_CONTENTS) != 0)
+	    {
+	      BFD_ASSERT (sec->contents == NULL);
+
+	      sec->contents = bfd_zalloc (abfd, sec->size);
+	      sec->flags |= SEC_IN_MEMORY;
+	      if (sec->contents == NULL)
+		return false;
+	      sec->alloced = 1;
+	    }
 	}
+      if (!alpha_vms_read_sections_content (abfd, NULL))
+	return false;
     }
-  if (!alpha_vms_read_sections_content (abfd, NULL))
-    return FALSE;
-  for (sec = abfd->sections; sec; sec = sec->next)
-    if (sec->contents)
-      sec->flags |= SEC_IN_MEMORY;
+
+  BFD_ASSERT (section->contents != NULL);
   memcpy (buf, section->contents + offset, count);
-  return TRUE;
+  return true;
 }
 
 
 /* Set the format of a file being written.  */
 
-static bfd_boolean
+static bool
 alpha_vms_mkobject (bfd * abfd)
 {
   const bfd_arch_info_type *arch;
@@ -9252,22 +9917,22 @@ alpha_vms_mkobject (bfd * abfd)
   vms_debug2 ((1, "alpha_vms_mkobject (%p)\n", abfd));
 
   if (!vms_initialize (abfd))
-    return FALSE;
+    return false;
 
   PRIV (recwr.buf) = bfd_alloc (abfd, MAX_OUTREC_SIZE);
   if (PRIV (recwr.buf) == NULL)
-    return FALSE;
+    return false;
 
   arch = bfd_scan_arch ("alpha");
 
   if (arch == 0)
     {
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 
   abfd->arch_info = arch;
-  return TRUE;
+  return true;
 }
 
 
@@ -9275,64 +9940,53 @@ alpha_vms_mkobject (bfd * abfd)
 
 /* Called when the BFD is being closed to do any necessary cleanup.  */
 
-static bfd_boolean
+static bool
 vms_close_and_cleanup (bfd * abfd)
 {
   vms_debug2 ((1, "vms_close_and_cleanup (%p)\n", abfd));
 
   if (abfd == NULL || abfd->tdata.any == NULL)
-    return TRUE;
+    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.  */
 
-static bfd_boolean
+static bool
 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));
 
   if (!bfd_set_section_alignment (section, 0))
-    return FALSE;
+    return false;
 
   vms_debug2 ((7, "%u: %s\n", section->index, section->name));
 
   amt = sizeof (struct vms_section_data_struct);
   section->used_by_bfd = bfd_zalloc (abfd, amt);
   if (section->used_by_bfd == NULL)
-    return FALSE;
+    return false;
 
   /* Create the section symbol.  */
   return _bfd_generic_new_section_hook (abfd, section);
@@ -9431,7 +10085,7 @@ vms_get_symbol_info (bfd * abfd ATTRIBUT
 /* Return TRUE if the given symbol sym in the BFD abfd is
    a compiler generated local label, else return FALSE.  */
 
-static bfd_boolean
+static bool
 vms_bfd_is_local_label_name (bfd * abfd ATTRIBUTE_UNUSED,
 			     const char *name)
 {
@@ -9449,7 +10103,7 @@ vms_bfd_is_local_label_name (bfd * abfd
 	SEC_HAS_CONTENTS attribute, so nothing can be written to it.
    o and some more too  */
 
-static bfd_boolean
+static bool
 _bfd_vms_set_section_contents (bfd * abfd,
 			       asection *section,
 			       const void * location,
@@ -9460,25 +10114,26 @@ _bfd_vms_set_section_contents (bfd * abf
     {
       section->contents = bfd_alloc (abfd, section->size);
       if (section->contents == NULL)
-	return FALSE;
+	return false;
+      section->alloced = 1;
 
       memcpy (section->contents + offset, location, (size_t) count);
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Set the architecture and machine type in BFD abfd to arch and mach.
    Find the correct pointer to a structure and insert it into the arch_info
    pointer.  */
 
-static bfd_boolean
+static bool
 alpha_vms_set_arch_mach (bfd *abfd,
 			 enum bfd_architecture arch, unsigned long mach)
 {
   if (arch != bfd_arch_alpha
       && arch != bfd_arch_unknown)
-    return FALSE;
+    return false;
 
   return bfd_default_set_arch_mach (abfd, arch, mach);
 }
@@ -9499,25 +10154,12 @@ bfd_vms_get_data (bfd *abfd)
   return (struct vms_private_data_struct *)abfd->tdata.any;
 }
 
-#define vms_bfd_is_target_special_symbol  _bfd_bool_bfd_asymbol_false
-#define vms_bfd_link_just_syms		  _bfd_generic_link_just_syms
-#define vms_bfd_copy_link_hash_symbol_type \
-  _bfd_generic_copy_link_hash_symbol_type
-#define vms_bfd_is_group_section	  bfd_generic_is_group_section
-#define vms_bfd_group_name		  bfd_generic_group_name
-#define vms_bfd_discard_group		  bfd_generic_discard_group
-#define vms_section_already_linked	  _bfd_generic_section_already_linked
-#define vms_bfd_define_common_symbol	  bfd_generic_define_common_symbol
-#define vms_bfd_link_hide_symbol	  _bfd_generic_link_hide_symbol
-#define vms_bfd_define_start_stop         bfd_generic_define_start_stop
-#define vms_bfd_copy_private_header_data  _bfd_generic_bfd_copy_private_header_data
-
 #define vms_bfd_copy_private_bfd_data	  _bfd_generic_bfd_copy_private_bfd_data
-#define vms_bfd_free_cached_info	  _bfd_generic_bfd_free_cached_info
+#define vms_bfd_merge_private_bfd_data	  _bfd_generic_bfd_merge_private_bfd_data
 #define vms_bfd_copy_private_section_data _bfd_generic_bfd_copy_private_section_data
 #define vms_bfd_copy_private_symbol_data  _bfd_generic_bfd_copy_private_symbol_data
+#define vms_bfd_copy_private_header_data  _bfd_generic_bfd_copy_private_header_data
 #define vms_bfd_set_private_flags	  _bfd_generic_bfd_set_private_flags
-#define vms_bfd_merge_private_bfd_data	  _bfd_generic_bfd_merge_private_bfd_data
 
 /* Symbols table.  */
 #define alpha_vms_make_empty_symbol	   _bfd_generic_make_empty_symbol
@@ -9533,15 +10175,16 @@ bfd_vms_get_data (bfd *abfd)
 #define alpha_vms_find_inliner_info	   _bfd_nosymbols_find_inliner_info
 #define alpha_vms_bfd_make_debug_symbol	   _bfd_nosymbols_bfd_make_debug_symbol
 #define alpha_vms_find_nearest_line	   _bfd_vms_find_nearest_line
+#define alpha_vms_find_nearest_line_with_alt \
+   _bfd_nosymbols_find_nearest_line_with_alt
 #define alpha_vms_find_line		   _bfd_nosymbols_find_line
 #define alpha_vms_bfd_is_local_label_name  vms_bfd_is_local_label_name
 
 /* Generic table.  */
 #define alpha_vms_close_and_cleanup	   vms_close_and_cleanup
-#define alpha_vms_bfd_free_cached_info	   vms_bfd_free_cached_info
+#define alpha_vms_bfd_free_cached_info	   _bfd_bool_bfd_true
 #define alpha_vms_new_section_hook	   vms_new_section_hook
 #define alpha_vms_set_section_contents	   _bfd_vms_set_section_contents
-#define alpha_vms_get_section_contents_in_window _bfd_generic_get_section_contents_in_window
 
 #define alpha_vms_bfd_get_relocated_section_contents \
   bfd_generic_get_relocated_section_contents
@@ -9591,6 +10234,7 @@ const bfd_target alpha_vms_vec =
   ' ',				/* ar_pad_char.  */
   15,				/* ar_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vms.h ./bfd/vms.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vms.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/vms.h	2026-03-05 02:07:20.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-2025 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;
@@ -110,21 +110,21 @@ extern void _bfd_hexdump   (int, unsigne
 #define vms_debug2(X)
 #endif
 
-extern char * vms_get_module_name (const char *, bfd_boolean);
-extern unsigned char *get_vms_time_string (void);
+extern char * vms_get_module_name (const char *, bool);
+extern unsigned char *get_vms_time_string (unsigned char *);
 extern time_t vms_time_to_time_t (unsigned int hi, unsigned int lo);
 extern time_t vms_rawtime_to_time_t (unsigned char *);
 extern void vms_time_t_to_vms_time (time_t ut, unsigned int *hi, unsigned int *lo);
 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);
 extern void   _bfd_vms_output_end_subrec (struct vms_rec_wr *);
-extern void   _bfd_vms_output_end (bfd *, struct vms_rec_wr *);
+extern bool   _bfd_vms_output_end (bfd *, struct vms_rec_wr *);
 extern int    _bfd_vms_output_check (struct vms_rec_wr *, int);
 extern void   _bfd_vms_output_byte (struct vms_rec_wr *, unsigned);
 extern void   _bfd_vms_output_short (struct vms_rec_wr *, unsigned);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vms-lib.c ./bfd/vms-lib.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vms-lib.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/vms-lib.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 /* BFD back-end for VMS archive files.
 
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2025 Free Software Foundation, Inc.
    Written by Tristan Gingold <gingold@adacore.com>, AdaCore.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -120,50 +120,66 @@ 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;
+  bool realloced;
 };
 
 /* Simply add a name to the index.  */
 
-static bfd_boolean
+static bool
 vms_add_index (struct carsym_mem *cs, char *name,
 	       unsigned int idx_vbn, unsigned int idx_off)
 {
   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;
+	    return false;
 	  memcpy (n, cs->idx, cs->nbr * sizeof (struct carsym));
 	  /* And unfortunately we can't free cs->idx.  */
 	}
       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;
+	    return false;
 	}
       cs->idx = n;
-      cs->realloced = TRUE;
+      cs->realloced = true;
     }
   cs->idx[cs->nbr].file_offset = (idx_vbn - 1) * VMS_BLOCK_SIZE + idx_off;
   cs->idx[cs->nbr].name = name;
   cs->nbr++;
-  return TRUE;
+  return true;
 }
 
 /* Follow all member of a lns list (pointed by RFA) and add indexes for
    NAME.  Return FALSE in case of error.  */
 
-static bfd_boolean
+static bool
 vms_add_indexes_from_list (bfd *abfd, struct carsym_mem *cs, char *name,
 			   struct vms_rfa *rfa)
 {
@@ -175,18 +191,18 @@ vms_add_indexes_from_list (bfd *abfd, st
     {
       vbn = bfd_getl32 (rfa->vbn);
       if (vbn == 0)
-	return TRUE;
+	return true;
 
       /* Read the LHS.  */
       off = (vbn - 1) * VMS_BLOCK_SIZE + bfd_getl16 (rfa->offset);
       if (bfd_seek (abfd, off, SEEK_SET) != 0
-	  || bfd_bread (&lns, sizeof (lns), abfd) != sizeof (lns))
-	return FALSE;
+	  || bfd_read (&lns, sizeof (lns), abfd) != sizeof (lns))
+	return false;
 
       if (!vms_add_index (cs, name,
 			  bfd_getl32 (lns.modrfa.vbn),
 			  bfd_getl16 (lns.modrfa.offset)))
-	return FALSE;
+	return false;
 
       rfa = &lns.nxtrfa;
     }
@@ -194,53 +210,64 @@ vms_add_indexes_from_list (bfd *abfd, st
 
 /* Read block VBN from ABFD and store it into BLK.  Return FALSE in case of error.  */
 
-static bfd_boolean
+static bool
 vms_read_block (bfd *abfd, unsigned int vbn, void *blk)
 {
   file_ptr off;
 
   off = (vbn - 1) * VMS_BLOCK_SIZE;
   if (bfd_seek (abfd, off, SEEK_SET) != 0
-      || bfd_bread (blk, VMS_BLOCK_SIZE, abfd) != VMS_BLOCK_SIZE)
-    return FALSE;
+      || bfd_read (blk, VMS_BLOCK_SIZE, abfd) != VMS_BLOCK_SIZE)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Write the content of BLK to block VBN of ABFD.  Return FALSE in case of error.  */
 
-static bfd_boolean
+static bool
 vms_write_block (bfd *abfd, unsigned int vbn, void *blk)
 {
   file_ptr off;
 
   off = (vbn - 1) * VMS_BLOCK_SIZE;
   if (bfd_seek (abfd, off, SEEK_SET) != 0
-      || bfd_bwrite (blk, VMS_BLOCK_SIZE, abfd) != VMS_BLOCK_SIZE)
-    return FALSE;
+      || bfd_write (blk, VMS_BLOCK_SIZE, abfd) != VMS_BLOCK_SIZE)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Read index block VBN and put the entry in **IDX (which is updated).
    If the entry is indirect, recurse.  */
 
-static bfd_boolean
-vms_traverse_index (bfd *abfd, unsigned int vbn, struct carsym_mem *cs)
+static bool
+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);
   if (!vms_read_block (abfd, vbn, &indexdef))
-    return FALSE;
+    return false;
 
   /* 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;
 
@@ -273,20 +302,22 @@ vms_traverse_index (bfd *abfd, unsigned
 	  keyname = ridx->keyname;
 	}
       else
-	return FALSE;
+	return false;
 
       /* Illegal value.  */
       if (idx_vbn == 0)
-	return FALSE;
+	return false;
 
       /* 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))
-	    return FALSE;
+	  if (!vms_traverse_index (abfd, idx_vbn, cs, recur_count + 1))
+	    return false;
 	}
       else
 	{
@@ -304,14 +335,14 @@ vms_traverse_index (bfd *abfd, unsigned
 
 	      /* Sanity check.  */
 	      if (keylen != sizeof (struct vms_kbn))
-		return FALSE;
+		return false;
 
 	      kbn = (struct vms_kbn *)keyname;
 	      keylen = bfd_getl16 (kbn->keylen);
 
 	      name = bfd_alloc (abfd, keylen + 1);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 	      kvbn = bfd_getl32 (kbn->rfa.vbn);
 	      koff = bfd_getl16 (kbn->rfa.offset);
 
@@ -321,12 +352,18 @@ vms_traverse_index (bfd *abfd, unsigned
 		  unsigned int klen;
 
 		  if (!vms_read_block (abfd, kvbn, kblk))
-		    return FALSE;
+		    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) - sizeof (struct vms_kbn) - 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;
 		}
@@ -334,14 +371,14 @@ vms_traverse_index (bfd *abfd, unsigned
 
 	      /* Sanity check.  */
 	      if (noff != keylen)
-		return FALSE;
+		return false;
 	    }
 	  else
 	    {
 	      /* Usual key name.  */
 	      name = bfd_alloc (abfd, keylen + 1);
 	      if (name == NULL)
-		return FALSE;
+		return false;
 
 	      memcpy (name, keyname, keylen);
 	    }
@@ -354,28 +391,28 @@ vms_traverse_index (bfd *abfd, unsigned
 	      /* Read the LHS.  */
 	      off = (idx_vbn - 1) * VMS_BLOCK_SIZE + idx_off;
 	      if (bfd_seek (abfd, off, SEEK_SET) != 0
-		  || bfd_bread (&lhs, sizeof (lhs), abfd) != sizeof (lhs))
-		return FALSE;
+		  || bfd_read (&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;
+		return false;
 	      if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.ng_wk_rfa))
-		return FALSE;
+		return false;
 	      if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.g_g_rfa))
-		return FALSE;
+		return false;
 	      if (!vms_add_indexes_from_list (abfd, cs, name, &lhs.g_wk_rfa))
-		return FALSE;
+		return false;
 	    }
 	  else
 	    {
 	      if (!vms_add_index (cs, name, idx_vbn, idx_off))
-		return FALSE;
+		return false;
 	    }
 	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Read index #IDX, which must have NBREL entries.  */
@@ -386,12 +423,14 @@ 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;
 
   /* Read index desription.  */
   if (bfd_seek (abfd, LHD_IDXDESC + idx * IDD_LENGTH, SEEK_SET) != 0
-      || bfd_bread (&idd, sizeof (idd), abfd) != sizeof (idd))
+      || bfd_read (&idd, sizeof (idd), abfd) != sizeof (idd))
     return NULL;
 
   /* Sanity checks.  */
@@ -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.realloced = FALSE;
-  csm.idx = csbuf;
+  csm.max = *nbrel;
+  csm.limit = -1u;
+  csm.realloced = false;
+  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
@@ -428,17 +480,21 @@ vms_lib_read_index (bfd *abfd, int idx,
 	 the BFD's objalloc.  */
       csbuf = bfd_alloc (abfd, csm.nbr * sizeof (struct carsym));
       if (csbuf == NULL)
-	return NULL;
+	{
+	  free (csm.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;
@@ -450,7 +506,7 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum
   unsigned int nbr_ent;
 
   /* Read header.  */
-  if (bfd_bread (&lhd, sizeof (lhd), abfd) != sizeof (lhd))
+  if (bfd_read (&lhd, sizeof (lhd), abfd) != sizeof (lhd))
     {
       if (bfd_get_error () != bfd_error_system_call)
 	bfd_set_error (bfd_error_wrong_format);
@@ -553,18 +609,15 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum
       unsigned int i;
 
       if (bfd_seek (abfd, (dcxvbn - 1) * VMS_BLOCK_SIZE, SEEK_SET) != 0
-	  || bfd_bread (buf_reclen, sizeof (buf_reclen), abfd)
+	  || bfd_read (buf_reclen, sizeof (buf_reclen), abfd)
 	  != 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 +625,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);
 	    }
@@ -623,11 +694,11 @@ _bfd_vms_lib_archive_p (bfd *abfd, enum
     }
 
   /* The map is always present.  Also mark shared image library.  */
-  abfd->has_armap = TRUE;
+  abfd->has_armap = true;
   if (tdata->type == LBR__C_TYP_ESHSTB || tdata->type == LBR__C_TYP_ISHSTB)
-    abfd->is_thin_archive = TRUE;
+    abfd->is_thin_archive = true;
 
-  return abfd->xvec;
+  return _bfd_no_cleanup;
 
  err:
   bfd_release (abfd, tdata);
@@ -637,7 +708,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 +716,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 +724,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);
@@ -661,14 +732,14 @@ _bfd_vms_lib_txt_archive_p (bfd *abfd)
 
 /* Standard bfd function.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_lib_mkarchive (bfd *abfd, enum vms_lib_kind kind)
 {
   struct lib_tdata *tdata;
 
   tdata = (struct lib_tdata *) bfd_zalloc (abfd, sizeof (struct lib_tdata));
   if (tdata == NULL)
-    return FALSE;
+    return false;
 
   abfd->tdata.any = (void *)tdata;
   vms_get_time (&tdata->credat_hi, &tdata->credat_lo);
@@ -696,16 +767,16 @@ _bfd_vms_lib_mkarchive (bfd *abfd, enum
   tdata->artdata.symdefs = NULL;
   tdata->cache = NULL;
 
-  return TRUE;
+  return true;
 }
 
-bfd_boolean
+bool
 _bfd_vms_lib_alpha_mkarchive (bfd *abfd)
 {
   return _bfd_vms_lib_mkarchive (abfd, vms_lib_alpha);
 }
 
-bfd_boolean
+bool
 _bfd_vms_lib_ia64_mkarchive (bfd *abfd)
 {
   return _bfd_vms_lib_mkarchive (abfd, vms_lib_ia64);
@@ -753,7 +824,7 @@ struct vms_lib_iovec
   /* Length of the module, when known.  */
   ufile_ptr file_len;
 
-  /* Current position in the record from bfd_bread point of view (ie, after
+  /* Current position in the record from bfd_read point of view (ie, after
      decompression).  0 means that no data byte have been read, -2 and -1
      are reserved for the length word.  */
   int rec_pos;
@@ -810,7 +881,7 @@ vms_lib_btell (struct bfd *abfd)
 /* Read the header of the next data block if all bytes of the current block
    have been read.  */
 
-static bfd_boolean
+static bool
 vms_lib_read_block (struct bfd *abfd)
 {
   struct vms_lib_iovec *vec = (struct vms_lib_iovec *) abfd->iostream;
@@ -821,13 +892,13 @@ vms_lib_read_block (struct bfd *abfd)
 
       /* Read next block.  */
       if (bfd_seek (abfd->my_archive, vec->next_block, SEEK_SET) != 0)
-	return FALSE;
-      if (bfd_bread (hdr, sizeof (hdr), abfd->my_archive) != sizeof (hdr))
-	return FALSE;
+	return false;
+      if (bfd_read (hdr, sizeof (hdr), abfd->my_archive) != sizeof (hdr))
+	return false;
       vec->next_block = (bfd_getl32 (hdr + 2) - 1) * VMS_BLOCK_SIZE;
       vec->blk_off = sizeof (hdr);
     }
-  return TRUE;
+  return true;
 }
 
 /* Read NBYTES from ABFD into BUF if not NULL.  If BUF is NULL, bytes are
@@ -858,7 +929,7 @@ vms_lib_bread_raw (struct bfd *abfd, uns
       if (buf != NULL)
 	{
 	  /* Really read into BUF.  */
-	  if (bfd_bread (buf, l, abfd->my_archive) != l)
+	  if (bfd_read (buf, l, abfd->my_archive) != l)
 	    return -1;
 	}
       else
@@ -1199,14 +1270,14 @@ vms_lib_bstat (struct bfd *abfd ATTRIBUT
 static void *
 vms_lib_bmmap (struct bfd *abfd ATTRIBUTE_UNUSED,
 	       void *addr ATTRIBUTE_UNUSED,
-	       bfd_size_type len ATTRIBUTE_UNUSED,
+	       size_t len ATTRIBUTE_UNUSED,
 	       int prot ATTRIBUTE_UNUSED,
 	       int flags ATTRIBUTE_UNUSED,
 	       file_ptr offset ATTRIBUTE_UNUSED,
 	       void **map_addr ATTRIBUTE_UNUSED,
-	       bfd_size_type *map_len ATTRIBUTE_UNUSED)
+	       size_t *map_len ATTRIBUTE_UNUSED)
 {
-  return (void *) -1;
+  return MAP_FAILED;
 }
 
 static const struct bfd_iovec vms_lib_iovec = {
@@ -1216,7 +1287,7 @@ static const struct bfd_iovec vms_lib_io
 
 /* Open a library module.  FILEPOS is the position of the module header.  */
 
-static bfd_boolean
+static bool
 vms_lib_bopen (bfd *el, file_ptr filepos)
 {
   struct vms_lib_iovec *vec;
@@ -1228,7 +1299,7 @@ vms_lib_bopen (bfd *el, file_ptr filepos
   /* Allocate and initialized the iovec.  */
   vec = bfd_zalloc (el, sizeof (*vec));
   if (vec == NULL)
-    return FALSE;
+    return false;
 
   el->iostream = vec;
   el->iovec = &vms_lib_iovec;
@@ -1240,34 +1311,34 @@ vms_lib_bopen (bfd *el, file_ptr filepos
   vec->next_block = filepos & ~(VMS_BLOCK_SIZE - 1);
   vec->blk_off = DATA__LENGTH;
   if (!vms_lib_read_block (el))
-    return FALSE;
+    return false;
 
   /* Prepare to read the first record.  */
   vec->blk_off = filepos & (VMS_BLOCK_SIZE - 1);
   vec->rec_rem = 0;
   if (bfd_seek (el->my_archive, filepos, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
   /* Read Record length + MHD + align byte.  */
   len = tdata->mhd_size;
   if (vms_lib_bread_raw (el, buf, 2) != 2)
-    return FALSE;
+    return false;
   if (bfd_getl16 (buf) != len)
-    return FALSE;
+    return false;
   len = (len + 1) & ~1;
   BFD_ASSERT (len <= sizeof (buf));
   if (vms_lib_bread_raw (el, buf, len) != len)
-    return FALSE;
+    return false;
 
   /* Get info from mhd.  */
   mhd = (struct vms_mhd *)buf;
   /* Check id.  */
   if (mhd->id != MHD__C_MHDID)
-    return FALSE;
+    return false;
   if (len >= MHD__C_MHDLEN + 1)
     el->selective_search = (mhd->objstat & MHD__M_SELSRC) ? 1 : 0;
   el->mtime = vms_rawtime_to_time_t (mhd->datim);
-  el->mtime_set = TRUE;
+  el->mtime_set = true;
 
   /* Reinit the iovec so that seek() will point to the first record after
      the mhd.  */
@@ -1286,7 +1357,7 @@ vms_lib_bopen (bfd *el, file_ptr filepos
       if (vec->dcx_buf == NULL)
 	return -1;
     }
-  return TRUE;
+  return true;
 }
 
 /* Get member MODIDX.  Return NULL in case of error.  */
@@ -1334,7 +1405,7 @@ _bfd_vms_lib_get_module (bfd *abfd, unsi
       /* Read the MHD now.  */
       if (bfd_seek (abfd, file_off, SEEK_SET) != 0)
 	return NULL;
-      if (bfd_bread (buf, tdata->mhd_size, abfd) != tdata->mhd_size)
+      if (bfd_read (buf, tdata->mhd_size, abfd) != tdata->mhd_size)
 	return NULL;
 
       mhd = (struct vms_mhd *) buf;
@@ -1356,7 +1427,7 @@ _bfd_vms_lib_get_module (bfd *abfd, unsi
       if (tdata->mhd_size >= offsetof (struct vms_mhd, objstat) + 1)
 	res->selective_search = (mhd->objstat & MHD__M_SELSRC) ? 1 : 0;
       res->mtime = vms_rawtime_to_time_t (mhd->datim);
-      res->mtime_set = TRUE;
+      res->mtime_set = true;
 
       arelt->parsed_size = bfd_getl32 (mhd->modsize);
 
@@ -1386,6 +1457,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 +1502,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 +1528,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;
     }
@@ -1568,7 +1645,7 @@ lib_index_cmp (const void *lv, const voi
 /* Get the size of an index entry.  */
 
 static unsigned int
-get_idxlen (struct lib_index *idx, bfd_boolean is_elfidx)
+get_idxlen (struct lib_index *idx, bool is_elfidx)
 {
   if (is_elfidx)
     {
@@ -1592,10 +1669,10 @@ get_idxlen (struct lib_index *idx, bfd_b
    IS_ELFIDX is true for elfidx (ie ia64) indexes layout.
    Return TRUE on success.  */
 
-static bfd_boolean
+static bool
 vms_write_index (bfd *abfd,
 		 struct lib_index *idx, unsigned int nbr, unsigned int *vbn,
-		 unsigned int *topvbn, bfd_boolean is_elfidx)
+		 unsigned int *topvbn, bool is_elfidx)
 {
   /* The index is organized as a tree.  This function implements a naive
      algorithm to balance the tree: it fills the leaves, and create a new
@@ -1626,7 +1703,7 @@ vms_write_index (bfd *abfd,
       /* No entries.  Very easy to handle.  */
       if (topvbn != NULL)
 	*topvbn = 0;
-      return TRUE;
+      return true;
     }
 
   if (abfd == NULL)
@@ -1671,13 +1748,13 @@ vms_write_index (bfd *abfd,
 		      if (kbn_vbn != 0)
 			{
 			  if (!vms_write_block (abfd, kbn_vbn, kbn_blk))
-			    return FALSE;
+			    goto err;
 			}
 		      else
 			{
 			  kbn_blk = bfd_malloc (VMS_BLOCK_SIZE);
 			  if (kbn_blk == NULL)
-			    return FALSE;
+			    goto err;
 			}
 		      *(unsigned short *)kbn_blk = 0;
 		    }
@@ -1789,7 +1866,7 @@ vms_write_index (bfd *abfd,
 		{
 		  bfd_putl16 (blk[j].len + blk[j].lastlen, rblk[j]->used);
 		  if (!vms_write_block (abfd, blk[j].vbn, rblk[j]))
-		    return FALSE;
+		    goto err;
 		}
 
 	      /* Reset this block.  */
@@ -1858,7 +1935,7 @@ vms_write_index (bfd *abfd,
     *topvbn = blk[level - 1].vbn;
 
   if (abfd == NULL)
-    return TRUE;
+    return true;
 
   /* Flush.  */
   for (j = 1; j < level; j++)
@@ -1882,25 +1959,35 @@ vms_write_index (bfd *abfd,
       /* Write this block on the disk.  */
       bfd_putl16 (blk[j].len + blk[j].lastlen, rblk[j]->used);
       if (!vms_write_block (abfd, blk[j].vbn, rblk[j]))
-	return FALSE;
+	goto err;
 
       free (rblk[j]);
+      rblk[j] = NULL;
     }
 
   /* Write the last kbn (if any).  */
   if (kbn_vbn != 0)
     {
       if (!vms_write_block (abfd, kbn_vbn, kbn_blk))
-	return FALSE;
+	goto err;
       free (kbn_blk);
     }
 
-  return TRUE;
+  return true;
+
+ err:
+  if (abfd != NULL)
+    {
+      for (j = 0; j < level; j++)
+	free (rblk[j]);
+      free (kbn_blk);
+    }
+  return false;
 }
 
 /* Append data to the data block DATA.  Force write if PAD is true.  */
 
-static bfd_boolean
+static bool
 vms_write_data_block (bfd *arch, struct vms_datadef *data, file_ptr *off,
 		      const unsigned char *buf, unsigned int len, int pad)
 {
@@ -1923,8 +2010,8 @@ vms_write_data_block (bfd *arch, struct
 	  data->fill_1 = 0;
 	  bfd_putl32 ((*off / VMS_BLOCK_SIZE) + 2, data->link);
 
-	  if (bfd_bwrite (data, sizeof (*data), arch) != sizeof (*data))
-	    return FALSE;
+	  if (bfd_write (data, sizeof (*data), arch) != sizeof (*data))
+	    return false;
 
 	  *off += DATA__LENGTH - doff;
 
@@ -1932,12 +2019,12 @@ vms_write_data_block (bfd *arch, struct
 	    break;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Build the symbols index.  */
 
-static bfd_boolean
+static bool
 _bfd_vms_lib_build_map (unsigned int nbr_modules,
 			struct lib_index *modules,
 			unsigned int *res_cnt,
@@ -1973,8 +2060,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)
@@ -2022,26 +2108,25 @@ _bfd_vms_lib_build_map (unsigned int nbr
 
   *res_cnt = map_count;
   *res = map;
-  return TRUE;
+  free (syms);
+  return true;
 
  error_return:
-  if (syms_max > 0)
-    free (syms);
-  if (map != NULL)
-    free (map);
-  return FALSE;
+  free (syms);
+  free (map);
+  return false;
 }
 
 /* Do the hard work: write an archive on the disk.  */
 
-bfd_boolean
+bool
 _bfd_vms_lib_write_archive_contents (bfd *arch)
 {
   bfd *current;
   unsigned int nbr_modules;
   struct lib_index *modules;
   unsigned int nbr_symbols;
-  struct lib_index *symbols;
+  struct lib_index *symbols = NULL;
   struct lib_tdata *tdata = bfd_libdata (arch);
   unsigned int i;
   file_ptr off;
@@ -2050,7 +2135,7 @@ _bfd_vms_lib_write_archive_contents (bfd
   unsigned int vbn;
   unsigned int mod_idx_vbn;
   unsigned int sym_idx_vbn;
-  bfd_boolean is_elfidx = tdata->kind == vms_lib_ia64;
+  bool is_elfidx = tdata->kind == vms_lib_ia64;
   unsigned int max_keylen = is_elfidx ? MAX_EKEYLEN : MAX_KEYLEN;
 
   /* Count the number of modules (and do a first sanity check).  */
@@ -2077,7 +2162,7 @@ _bfd_vms_lib_write_archive_contents (bfd
   BFD_ASSERT (tdata->modules == NULL);
   modules = bfd_alloc (arch, nbr_modules * sizeof (struct lib_index));
   if (modules == NULL)
-    return FALSE;
+    return false;
 
   for (current = arch->archive_head, i = 0;
        current != NULL;
@@ -2086,7 +2171,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 ?  */
@@ -2097,23 +2182,23 @@ _bfd_vms_lib_write_archive_contents (bfd
   /* Create the module index.  */
   vbn = 0;
   if (!vms_write_index (NULL, modules, nbr_modules, &vbn, NULL, is_elfidx))
-    return FALSE;
+    return false;
   nbr_mod_iblk = vbn;
 
   /* Create symbol index.  */
   if (!_bfd_vms_lib_build_map (nbr_modules, modules, &nbr_symbols, &symbols))
-    return FALSE;
+    goto err;
 
   vbn = 0;
   if (!vms_write_index (NULL, symbols, nbr_symbols, &vbn, NULL, is_elfidx))
-    return FALSE;
+    goto err;
   nbr_sym_iblk = vbn;
 
   /* Write modules and remember their position.  */
   off = (1 + nbr_mod_iblk + nbr_sym_iblk) * VMS_BLOCK_SIZE;
 
   if (bfd_seek (arch, off, SEEK_SET) != 0)
-    return FALSE;
+    goto err;
 
   for (i = 0; i < nbr_modules; i++)
     {
@@ -2157,7 +2242,7 @@ _bfd_vms_lib_write_archive_contents (bfd
 	  file_ptr off_hdr = off;
 
 	  /* Read to complete the first block.  */
-	  amt = bfd_bread (blk + sz, VMS_BLOCK_SIZE - sz, current);
+	  amt = bfd_read (blk + sz, VMS_BLOCK_SIZE - sz, current);
 	  if (amt == (bfd_size_type)-1)
 	    goto input_err;
 	  modsize = amt;
@@ -2169,18 +2254,18 @@ _bfd_vms_lib_write_archive_contents (bfd
 	  bfd_putl32 (modsize, mhd->modsize);
 
 	  /* Write the first block (which contains an mhd).  */
-	  if (bfd_bwrite (blk, VMS_BLOCK_SIZE, arch) != VMS_BLOCK_SIZE)
+	  if (bfd_write (blk, VMS_BLOCK_SIZE, arch) != VMS_BLOCK_SIZE)
 	    goto input_err;
 	  off += VMS_BLOCK_SIZE;
 
 	  if (amt == VMS_BLOCK_SIZE - sz)
 	    {
 	      /* Copy the remaining.  */
-	      char buffer[DEFAULT_BUFFERSIZE];
+	      char buffer[8 * 1024];
 
 	      while (1)
 		{
-		  amt = bfd_bread (buffer, sizeof (buffer), current);
+		  amt = bfd_read (buffer, sizeof (buffer), current);
 		  if (amt == (bfd_size_type)-1)
 		    goto input_err;
 		  if (amt == 0)
@@ -2192,7 +2277,7 @@ _bfd_vms_lib_write_archive_contents (bfd
 		      memset (buffer + amt, 0, sizeof (buffer) - amt);
 		      amt = (amt + VMS_BLOCK_SIZE) & ~(VMS_BLOCK_SIZE - 1);
 		    }
-		  if (bfd_bwrite (buffer, amt, arch) != amt)
+		  if (bfd_write (buffer, amt, arch) != amt)
 		    goto input_err;
 		  off += amt;
 		}
@@ -2200,7 +2285,7 @@ _bfd_vms_lib_write_archive_contents (bfd
 	      /* Now that the size is known, write the first block (again).  */
 	      bfd_putl32 (modsize, mhd->modsize);
 	      if (bfd_seek (arch, off_hdr, SEEK_SET) != 0
-		  || bfd_bwrite (blk, VMS_BLOCK_SIZE, arch) != VMS_BLOCK_SIZE)
+		  || bfd_write (blk, VMS_BLOCK_SIZE, arch) != VMS_BLOCK_SIZE)
 		goto input_err;
 	      if (bfd_seek (arch, off, SEEK_SET) != 0)
 		goto input_err;
@@ -2209,22 +2294,22 @@ _bfd_vms_lib_write_archive_contents (bfd
       else
 	{
 	  /* Write the MHD.  */
-	  if (vms_write_data_block (arch, &data, &off, blk, sz, 0) < 0)
+	  if (!vms_write_data_block (arch, &data, &off, blk, sz, 0))
 	    goto input_err;
 
 	  /* Write the member.  */
 	  while (1)
 	    {
-	      sz = bfd_bread (blk, sizeof (blk), current);
+	      sz = bfd_read (blk, sizeof (blk), current);
 	      if (sz == 0)
 		break;
-	      if (vms_write_data_block (arch, &data, &off, blk, sz, 0) < 0)
+	      if (!vms_write_data_block (arch, &data, &off, blk, sz, 0))
 		goto input_err;
 	    }
 
 	  /* Write the end of module marker.  */
-	  if (vms_write_data_block (arch, &data, &off,
-				    eotdesc, sizeof (eotdesc), 1) < 0)
+	  if (!vms_write_data_block (arch, &data, &off,
+				     eotdesc, sizeof (eotdesc), 1))
 	    goto input_err;
 	}
     }
@@ -2233,10 +2318,10 @@ _bfd_vms_lib_write_archive_contents (bfd
   vbn = 2;
   if (!vms_write_index (arch, modules, nbr_modules, &vbn, &mod_idx_vbn,
 			is_elfidx))
-    return FALSE;
+    goto err;
   if (!vms_write_index (arch, symbols, nbr_symbols, &vbn, &sym_idx_vbn,
 			is_elfidx))
-    return FALSE;
+    goto err;
 
   /* Write libary header.  */
   {
@@ -2307,14 +2392,17 @@ _bfd_vms_lib_write_archive_contents (bfd
     idd++;
 
     if (!vms_write_block (arch, 1, blk))
-      return FALSE;
+      goto err;
   }
 
-  return TRUE;
+  free (symbols);
+  return true;
 
  input_err:
   bfd_set_input_error (current, bfd_get_error ());
-  return FALSE;
+ err:
+  free (symbols);
+  return false;
 }
 
 /* Add a target for text library.  This costs almost nothing and is useful to
@@ -2332,6 +2420,7 @@ const bfd_target alpha_vms_lib_txt_vec =
   ' ',				/* ar_pad_char.  */
   15,				/* ar_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
   bfd_getl16, bfd_getl_signed_16, bfd_putl16,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vms-misc.c ./bfd/vms-misc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/vms-misc.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/vms-misc.c	2026-03-05 02:07:20.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-2025 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,16 @@ _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++;
+  unsigned int len;
 
-  if (len > maxlen)
+  if (maxlen == 0)
+    return NULL;
+  len = *ptr++;
+  if (len >  maxlen - 1)
     return NULL;
-  return _bfd_vms_save_sized_string (ptr, len);
+  return _bfd_vms_save_sized_string (abfd, ptr, len);
 }
 
 /* Object output routines.   */
@@ -260,7 +269,7 @@ _bfd_vms_output_end_subrec (struct vms_r
 
 /* Ends current record (and write it).  */
 
-void
+bool
 _bfd_vms_output_end (bfd *abfd, struct vms_rec_wr *recwr)
 {
   vms_debug2 ((6, "_bfd_vms_output_end (size %u)\n", recwr->size));
@@ -269,7 +278,7 @@ _bfd_vms_output_end (bfd *abfd, struct v
   BFD_ASSERT (recwr->subrec_offset == 0);
 
   if (recwr->size == 0)
-    return;
+    return true;
 
   _bfd_vms_output_align (recwr, recwr->size);
 
@@ -280,16 +289,20 @@ _bfd_vms_output_end (bfd *abfd, struct v
      converted to variable length (VAR) format.  VAR format has a length
      word first which must be explicitly output in UDF format.  */
   /* So, first the length word.  */
-  bfd_bwrite (recwr->buf + 2, 2, abfd);
+  if (bfd_write (recwr->buf + 2, 2, abfd) != 2)
+    return false;
 
   /* Align.  */
   if (recwr->size & 1)
     recwr->buf[recwr->size++] = 0;
 
   /* Then the record.  */
-  bfd_bwrite (recwr->buf, (size_t) recwr->size, abfd);
+  if (bfd_write (recwr->buf, (size_t) recwr->size, abfd)
+      != (size_t) recwr->size)
+    return false;
 
   recwr->size = 0;
+  return true;
 }
 
 /* Check remaining buffer size.  Return what's left.  */
@@ -425,9 +438,9 @@ static int
 vms_convert_to_var_1 (char *filename, int type)
 {
   if (type != DECC$K_FILE)
-    return FALSE;
+    return false;
   vms_convert_to_var (filename);
-  return TRUE;
+  return true;
 }
 
 /* Convert the file to variable record length format. This is done
@@ -438,8 +451,8 @@ int
 _bfd_vms_convert_to_var_unix_filename (const char *unix_filename)
 {
   if (decc$to_vms (unix_filename, &vms_convert_to_var_1, 0, 1) != 1)
-    return FALSE;
-  return TRUE;
+    return false;
+  return true;
 }
 #endif /* VMS */
 
@@ -447,9 +460,8 @@ _bfd_vms_convert_to_var_unix_filename (c
    stolen from obj-vms.c.  */
 
 unsigned char *
-get_vms_time_string (void)
+get_vms_time_string (unsigned char *tbuf)
 {
-  static unsigned char tbuf[18];
 #ifndef VMS
   char *pnt;
   time_t timeb;
@@ -484,7 +496,7 @@ get_vms_time_string (void)
    The result has to be free().  */
 
 char *
-vms_get_module_name (const char *filename, bfd_boolean upcase)
+vms_get_module_name (const char *filename, bool upcase)
 {
   char *fname, *fptr;
   const char *fout;
@@ -586,8 +598,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.20200303/bfd/warning.m4 ./bfd/warning.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/warning.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/warning.m4	2026-03-05 02:07:20.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-2025 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
@@ -50,7 +50,8 @@ GCC_WARN_CFLAGS_FOR_BUILD="-W -Wall -Wst
 AC_EGREP_CPP([(^[0-3]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wshadow")
 
 # Add -Wstack-usage if the compiler is a sufficiently recent version of GCC.
-AC_EGREP_CPP([(^[0-4]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144")
+AC_EGREP_CPP([(^[0-4]$|^__GNUC__$)],[__GNUC__],,dnl
+[AC_EGREP_CPP([^__clang__$],[__clang__],[GCC_WARN_CFLAGS="$GCC_WARN_CFLAGS -Wstack-usage=262144"],)])
 
 # Set WARN_WRITE_STRINGS if the compiler supports -Wwrite-strings.
 WARN_WRITE_STRINGS=""
@@ -62,7 +63,8 @@ AC_EGREP_CPP([(^[0-3]$|^__GNUC__$)],[__G
 AC_EGREP_CPP_FOR_BUILD([(^[0-3]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wshadow")
 
 # Add -Wstack-usage if the compiler is a sufficiently recent version of GCC.
-AC_EGREP_CPP_FOR_BUILD([(^[0-4]$|^__GNUC__$)],[__GNUC__],,GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144")
+AC_EGREP_CPP_FOR_BUILD([(^[0-4]$|^__GNUC__$)],[__GNUC__],,dnl
+[AC_EGREP_CPP_FOR_BUILD([^__clang__$],[__clang__],[GCC_WARN_CFLAGS_FOR_BUILD="$GCC_WARN_CFLAGS_FOR_BUILD -Wstack-usage=262144"],)])
 
 AC_ARG_ENABLE(werror,
   [  --enable-werror         treat compile warnings as errors],
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/wasm-module.c ./bfd/wasm-module.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/wasm-module.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/wasm-module.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for WebAssembly modules.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    Based on srec.c, mmo.c, and binary.c
 
@@ -26,13 +26,16 @@
    https://github.com/WebAssembly/design/blob/master/BinaryEncoding.md. */
 
 #include "sysdep.h"
-#include "alloca-conf.h"
 #include "bfd.h"
-#include <limits.h>
 #include "libiberty.h"
 #include "libbfd.h"
 #include "wasm-module.h"
 
+#include <limits.h>
+#ifndef CHAR_BIT
+#define CHAR_BIT 8
+#endif
+
 typedef struct
 {
   asymbol *      symbols;
@@ -102,27 +105,44 @@ wasm_section_name_to_code (const char *n
    incomplete numbers).  SIGN means interpret the number as SLEB128. */
 
 static bfd_vma
-wasm_read_leb128 (bfd *		  abfd,
-		  bfd_boolean *	  error_return,
-		  unsigned int *  length_return,
-		  bfd_boolean	  sign)
+wasm_read_leb128 (bfd *abfd,
+		  bool *error_return,
+		  unsigned int *length_return,
+		  bool sign)
 {
   bfd_vma result = 0;
   unsigned int num_read = 0;
   unsigned int shift = 0;
   unsigned char byte = 0;
-  bfd_boolean success = FALSE;
+  unsigned char lost, mask;
+  int status = 1;
 
-  while (bfd_bread (&byte, 1, abfd) == 1)
+  while (bfd_read (&byte, 1, abfd) == 1)
     {
       num_read++;
 
-      result |= ((bfd_vma) (byte & 0x7f)) << shift;
+      if (shift < CHAR_BIT * sizeof (result))
+	{
+	  result |= ((bfd_vma) (byte & 0x7f)) << shift;
+	  /* These bits overflowed.  */
+	  lost = byte ^ (result >> shift);
+	  /* And this is the mask of possible overflow bits.  */
+	  mask = 0x7f ^ ((bfd_vma) 0x7f << shift >> shift);
+	  shift += 7;
+	}
+      else
+	{
+	  lost = byte;
+	  mask = 0x7f;
+	}
+      if ((lost & mask) != (sign && (bfd_signed_vma) result < 0 ? mask : 0))
+	status |= 2;
 
-      shift += 7;
       if ((byte & 0x80) == 0)
 	{
-	  success = TRUE;
+	  status &= ~1;
+	  if (sign && shift < CHAR_BIT * sizeof (result) && (byte & 0x40))
+	    result |= -((bfd_vma) 1 << shift);
 	  break;
 	}
     }
@@ -130,10 +150,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;
 }
@@ -141,7 +158,7 @@ wasm_read_leb128 (bfd *		  abfd,
 /* Encode an integer V as LEB128 and write it to ABFD, return TRUE on
    success.  */
 
-static bfd_boolean
+static bool
 wasm_write_uleb128 (bfd *abfd, bfd_vma v)
 {
   do
@@ -152,12 +169,12 @@ wasm_write_uleb128 (bfd *abfd, bfd_vma v
       if (v)
 	c |= 0x80;
 
-      if (bfd_bwrite (&c, 1, abfd) != 1)
-	return FALSE;
+      if (bfd_write (&c, 1, abfd) != 1)
+	return false;
     }
   while (v);
 
-  return TRUE;
+  return true;
 }
 
 /* Read the LEB128 integer at P, saving it to X; at end of buffer,
@@ -165,70 +182,67 @@ wasm_write_uleb128 (bfd *abfd, bfd_vma v
 #define READ_LEB128(x, p, end)						\
   do									\
     {									\
-      unsigned int length_read;						\
-      (x) = _bfd_safe_read_leb128 (abfd, (p), &length_read,		\
-				   FALSE, (end));			\
-      (p) += length_read;						\
-      if (length_read == 0)						\
+      if ((p) >= (end))							\
 	goto error_return;						\
+      (x) = _bfd_safe_read_leb128 (abfd, &(p), false, (end));		\
     }									\
   while (0)
 
 /* Verify the magic number at the beginning of a WebAssembly module
    ABFD, setting ERRORPTR if there's a mismatch.  */
 
-static bfd_boolean
-wasm_read_magic (bfd *abfd, bfd_boolean *errorptr)
+static bool
+wasm_read_magic (bfd *abfd, bool *errorptr)
 {
   bfd_byte magic_const[SIZEOF_WASM_MAGIC] = WASM_MAGIC;
   bfd_byte magic[SIZEOF_WASM_MAGIC];
 
-  if (bfd_bread (magic, sizeof (magic), abfd) == sizeof (magic)
+  if (bfd_read (magic, sizeof (magic), abfd) == sizeof (magic)
       && memcmp (magic, magic_const, sizeof (magic)) == 0)
-    return TRUE;
+    return true;
 
-  *errorptr = TRUE;
-  return FALSE;
+  *errorptr = true;
+  return false;
 }
 
 /* Read the version number from ABFD, returning TRUE if it's a supported
    version. Set ERRORPTR otherwise.  */
 
-static bfd_boolean
-wasm_read_version (bfd *abfd, bfd_boolean *errorptr)
+static bool
+wasm_read_version (bfd *abfd, bool *errorptr)
 {
   bfd_byte vers_const[SIZEOF_WASM_VERSION] = WASM_VERSION;
   bfd_byte vers[SIZEOF_WASM_VERSION];
 
-  if (bfd_bread (vers, sizeof (vers), abfd) == sizeof (vers)
+  if (bfd_read (vers, sizeof (vers), abfd) == sizeof (vers)
       /* Don't attempt to parse newer versions, which are likely to
 	 require code changes.  */
       && memcmp (vers, vers_const, sizeof (vers)) == 0)
-    return TRUE;
+    return true;
 
-  *errorptr = TRUE;
-  return FALSE;
+  *errorptr = true;
+  return false;
 }
 
 /* Read the WebAssembly header (magic number plus version number) from
    ABFD, setting ERRORPTR to TRUE if there is a mismatch.  */
 
-static bfd_boolean
-wasm_read_header (bfd *abfd, bfd_boolean *errorptr)
+static bool
+wasm_read_header (bfd *abfd, bool *errorptr)
 {
   if (! wasm_read_magic (abfd, errorptr))
-    return FALSE;
+    return false;
 
   if (! wasm_read_version (abfd, errorptr))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Scan the "function" subsection of the "name" section ASECT in the
    wasm module ABFD. Create symbols. Return TRUE on success.  */
 
-static bfd_boolean
+static bool
 wasm_scan_name_function_section (bfd *abfd, sec_ptr asect)
 {
   bfd_byte *p;
@@ -238,18 +252,13 @@ 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)
-    return FALSE;
+  if (!p)
+    return false;
 
   while (p < end)
     {
@@ -261,49 +270,53 @@ wasm_scan_name_function_section (bfd *ab
 	 it has to be a single byte in the 0 - 127 range.  If it isn't,
 	 the spec must have changed underneath us, so give up.  */
       if (subsection_code & 0x80)
-	return FALSE;
+	return false;
 
       READ_LEB128 (payload_size, p, end);
 
-      if (p > p + payload_size)
-	return FALSE;
+      if (payload_size > (size_t) (end - p))
+	return false;
 
       p += payload_size;
     }
 
   if (p >= end)
-    return FALSE;
+    return false;
 
   READ_LEB128 (payload_size, p, end);
 
-  if (p > p + payload_size)
-    return FALSE;
-
-  if (p + payload_size > end)
-    return FALSE;
+  if (payload_size > (size_t) (end - p))
+    return false;
 
   end = p + payload_size;
 
   READ_LEB128 (symcount, p, end);
 
   /* Sanity check: each symbol has at least two bytes.  */
-  if (symcount > payload_size/2)
-    return FALSE;
+  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)
-    return FALSE;
+  if (!space_function_index)
+    return false;
 
-  symbols = bfd_zalloc (abfd, tdata->symcount * sizeof (asymbol));
-  if (! symbols)
-    return FALSE;
+  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 +328,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];
@@ -340,27 +354,27 @@ wasm_scan_name_function_section (bfd *ab
   tdata->symbols = symbols;
   abfd->symcount = symcount;
 
-  return TRUE;
+  return true;
 
  error_return:
-  while (symcount)
-    bfd_release (abfd, (void *)symbols[--symcount].name);
-  bfd_release (abfd, symbols);
-  return FALSE;
+  if (symbols)
+    bfd_release (abfd, symbols);
+  tdata->symcount = 0;
+  return false;
 }
 
 /* Read a byte from ABFD and return it, or EOF for EOF or error.
    Set ERRORPTR on non-EOF error.  */
 
 static int
-wasm_read_byte (bfd *abfd, bfd_boolean *errorptr)
+wasm_read_byte (bfd *abfd, bool *errorptr)
 {
   bfd_byte byte;
 
-  if (bfd_bread (&byte, (bfd_size_type) 1, abfd) != 1)
+  if (bfd_read (&byte, 1, abfd) != 1)
     {
       if (bfd_get_error () != bfd_error_file_truncated)
-	*errorptr = TRUE;
+	*errorptr = true;
       return EOF;
     }
 
@@ -370,22 +384,21 @@ wasm_read_byte (bfd *abfd, bfd_boolean *
 /* Scan the wasm module ABFD, creating sections and symbols.
    Return TRUE on success.  */
 
-static bfd_boolean
+static bool
 wasm_scan (bfd *abfd)
 {
-  bfd_boolean error = FALSE;
+  bool error = false;
   /* Fake VMAs for now. Choose 0x80000000 as base to avoid clashes
      with actual data addresses.  */
   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)
+  if (bfd_seek (abfd, 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,70 +407,68 @@ 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);
+	  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);
+	  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)
+	  namelen = wasm_read_leb128 (abfd, &error, &bytes_read, false);
+	  if (error || bytes_read > payload_len
+	      || namelen > payload_len - bytes_read)
+	    goto error_return;
+	  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 = name;
-	  ret = sprintf (p, "%s", prefix);
-	  if (ret < 0 || (bfd_vma) ret != strlen (prefix))
-	    goto error_return;
-	  p += ret;
-	  if (bfd_bread (p, namelen, abfd) != namelen)
+	  memcpy (name, prefix, prefixlen);
+	  if (bfd_read (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;
+	  bfdsec->alloced = 1;
 	}
 
       vma += bfdsec->size;
@@ -468,16 +479,10 @@ wasm_scan (bfd *abfd)
   if (error)
     goto error_return;
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (name)
-    free (name);
-
-  for (bfdsec = abfd->sections; bfdsec; bfdsec = bfdsec->next)
-    free ((void *) bfdsec->name);
-
-  return FALSE;
+  return false;
 }
 
 /* Put a numbered section ASECT of ABFD into the table of numbered
@@ -500,7 +505,7 @@ wasm_register_section (bfd *abfd ATTRIBU
 struct compute_section_arg
 {
   bfd_vma pos;
-  bfd_boolean failed;
+  bool failed;
 };
 
 /* Compute the file position of ABFD's section ASECT.  FSARG is a
@@ -528,7 +533,7 @@ wasm_compute_custom_section_file_positio
   if (idx != 0)
     return;
 
-  if (CONST_STRNEQ (asect->name, WASM_SECTION_PREFIX))
+  if (startswith (asect->name, WASM_SECTION_PREFIX))
     {
       const char *name = asect->name + strlen (WASM_SECTION_PREFIX);
       bfd_size_type payload_len = asect->size;
@@ -544,11 +549,11 @@ wasm_compute_custom_section_file_positio
 	}
       while (nl);
 
-      bfd_seek (abfd, fs->pos, SEEK_SET);
-      if (! wasm_write_uleb128 (abfd, 0)
+      if (bfd_seek (abfd, fs->pos, SEEK_SET) != 0
+	  || ! wasm_write_uleb128 (abfd, 0)
 	  || ! wasm_write_uleb128 (abfd, payload_len)
 	  || ! wasm_write_uleb128 (abfd, name_len)
-	  || bfd_bwrite (name, name_len, abfd) != name_len)
+	  || bfd_write (name, name_len, abfd) != name_len)
 	goto error_return;
       fs->pos = asect->filepos = bfd_tell (abfd);
     }
@@ -562,7 +567,7 @@ wasm_compute_custom_section_file_positio
   return;
 
  error_return:
-  fs->failed = TRUE;
+  fs->failed = true;
 }
 
 /* Compute the file positions for the sections of ABFD.  Currently,
@@ -573,7 +578,7 @@ wasm_compute_custom_section_file_positio
    their ids, but custom sections can appear in any position and any
    order, and more than once. FIXME: support that.  */
 
-static bfd_boolean
+static bool
 wasm_compute_section_file_positions (bfd *abfd)
 {
   bfd_byte magic[SIZEOF_WASM_MAGIC] = WASM_MAGIC;
@@ -582,11 +587,10 @@ wasm_compute_section_file_positions (bfd
   struct compute_section_arg fs;
   unsigned int i;
 
-  bfd_seek (abfd, (bfd_vma) 0, SEEK_SET);
-
-  if (bfd_bwrite (magic, sizeof (magic), abfd) != (sizeof magic)
-      || bfd_bwrite (vers, sizeof (vers), abfd) != sizeof (vers))
-    return FALSE;
+  if (bfd_seek (abfd, (bfd_vma) 0, SEEK_SET) != 0
+      || bfd_write (magic, sizeof (magic), abfd) != (sizeof magic)
+      || bfd_write (vers, sizeof (vers), abfd) != sizeof (vers))
+    return false;
 
   for (i = 0; i < WASM_NUMBERED_SECTIONS; i++)
     numbered_sections[i] = NULL;
@@ -603,27 +607,27 @@ wasm_compute_section_file_positions (bfd
 	continue;
       size = sec->size;
       if (bfd_seek (abfd, fs.pos, SEEK_SET) != 0)
-	return FALSE;
+	return false;
       if (! wasm_write_uleb128 (abfd, i)
 	  || ! wasm_write_uleb128 (abfd, size))
-	return FALSE;
+	return false;
       fs.pos = sec->filepos = bfd_tell (abfd);
       fs.pos += size;
     }
 
-  fs.failed = FALSE;
+  fs.failed = false;
 
   bfd_map_over_sections (abfd, wasm_compute_custom_section_file_position, &fs);
 
   if (fs.failed)
-    return FALSE;
+    return false;
 
-  abfd->output_has_begun = TRUE;
+  abfd->output_has_begun = true;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 wasm_set_section_contents (bfd *abfd,
 			   sec_ptr section,
 			   const void *location,
@@ -631,49 +635,49 @@ wasm_set_section_contents (bfd *abfd,
 			   bfd_size_type count)
 {
   if (count == 0)
-    return TRUE;
+    return true;
 
   if (! abfd->output_has_begun
       && ! wasm_compute_section_file_positions (abfd))
-    return FALSE;
+    return false;
 
   if (bfd_seek (abfd, section->filepos + offset, SEEK_SET) != 0
-      || bfd_bwrite (location, count, abfd) != count)
-    return FALSE;
+      || bfd_write (location, count, abfd) != count)
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 wasm_write_object_contents (bfd* abfd)
 {
   bfd_byte magic[] = WASM_MAGIC;
   bfd_byte vers[] = WASM_VERSION;
 
   if (bfd_seek (abfd, 0, SEEK_SET) != 0)
-    return FALSE;
+    return false;
 
-  if (bfd_bwrite (magic, sizeof (magic), abfd) != sizeof (magic)
-      || bfd_bwrite (vers, sizeof (vers), abfd) != sizeof (vers))
-    return FALSE;
+  if (bfd_write (magic, sizeof (magic), abfd) != sizeof (magic)
+      || bfd_write (vers, sizeof (vers), abfd) != sizeof (vers))
+    return false;
 
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 wasm_mkobject (bfd *abfd)
 {
   tdata_type *tdata = (tdata_type *) bfd_alloc (abfd, sizeof (tdata_type));
 
   if (! tdata)
-    return FALSE;
+    return false;
 
   tdata->symbols = NULL;
   tdata->symcount = 0;
 
   abfd->tdata.any = tdata;
 
-  return TRUE;
+  return true;
 }
 
 static long
@@ -700,7 +704,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 +743,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;
+  bool error;
+  asection *s;
 
-  if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
+  if (bfd_seek (abfd, 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 */
@@ -774,6 +785,7 @@ wasm_object_p (bfd *abfd)
 #define wasm_bfd_is_target_special_symbol _bfd_bool_bfd_asymbol_false
 #define wasm_get_lineno			  _bfd_nosymbols_get_lineno
 #define wasm_find_nearest_line		  _bfd_nosymbols_find_nearest_line
+#define wasm_find_nearest_line_with_alt	  _bfd_nosymbols_find_nearest_line_with_alt
 #define wasm_find_line			  _bfd_nosymbols_find_line
 #define wasm_find_inliner_info		  _bfd_nosymbols_find_inliner_info
 #define wasm_bfd_make_debug_symbol	  _bfd_nosymbols_bfd_make_debug_symbol
@@ -792,6 +804,7 @@ const bfd_target wasm_vec =
   ' ',				/* AR_pad_char.  */
   255,				/* AR_max_namelen.  */
   0,				/* Match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   /* Routines to byte-swap various sized integers from the data sections.  */
   bfd_getl64, bfd_getl_signed_64, bfd_putl64,
   bfd_getl32, bfd_getl_signed_32, bfd_putl32,
@@ -811,13 +824,13 @@ const bfd_target wasm_vec =
   {
     _bfd_bool_bfd_false_error,
     wasm_mkobject,
-    _bfd_generic_mkarchive,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_error,
   },
   {				/* bfd_write_contents.  */
     _bfd_bool_bfd_false_error,
     wasm_write_object_contents,
-    _bfd_write_archive_contents,
+    _bfd_bool_bfd_false_error,
     _bfd_bool_bfd_false_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.20200303/bfd/wasm-module.h ./bfd/wasm-module.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/wasm-module.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/wasm-module.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* BFD back-end for WebAssembly modules.
-   Copyright (C) 2017-2019 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 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.20200303/bfd/xcofflink.c ./bfd/xcofflink.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/xcofflink.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/xcofflink.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* POWER/PowerPC XCOFF linker support.
-   Copyright (C) 1995-2019 Free Software Foundation, Inc.
+   Copyright (C) 1995-2025 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.
@@ -35,11 +35,6 @@
 #undef  STRING_SIZE_SIZE
 #define STRING_SIZE_SIZE 4
 
-/* We reuse the SEC_ROM flag as a mark flag for garbage collection.
-   This flag will only be used on input sections.  */
-
-#define SEC_MARK (SEC_ROM)
-
 /* The list of import files.  */
 
 struct xcoff_import_file
@@ -98,6 +93,12 @@ struct xcoff_link_hash_table
 {
   struct bfd_link_hash_table root;
 
+  /* The stub hash table.  */
+  struct bfd_hash_table stub_hash_table;
+
+  /* Info passed by the linker.  */
+  struct bfd_xcoff_link_params *params;
+
   /* The .debug string hash table.  We need to compute this while
      reading the input files, so that we know how large the .debug
      section will be before we assign section positions.  */
@@ -109,9 +110,8 @@ struct xcoff_link_hash_table
   /* The .loader section we will use for the final output.  */
   asection *loader_section;
 
-  /* A count of non TOC relative relocs which will need to be
-     allocated in the .loader section.  */
-  size_t ldrel_count;
+  /* The structure holding information about the .loader section.  */
+  struct xcoff_loader_info ldinfo;
 
   /* The .loader section header.  */
   struct internal_ldhdr ldhdr;
@@ -134,13 +134,13 @@ struct xcoff_link_hash_table
   unsigned long file_align;
 
   /* Whether the .text section must be read-only.  */
-  bfd_boolean textro;
+  bool textro;
 
   /* Whether -brtl was specified.  */
-  bfd_boolean rtld;
+  bool rtld;
 
   /* Whether garbage collection was done.  */
-  bfd_boolean gc;
+  bool gc;
 
   /* A linked list of symbols for which we have size information.  */
   struct xcoff_link_size_list
@@ -199,7 +199,14 @@ struct xcoff_final_link_info
   bfd_byte *external_relocs;
 };
 
-static bfd_boolean xcoff_mark (struct bfd_link_info *, asection *);
+#define xcoff_stub_hash_entry(ent)		\
+  ((struct xcoff_stub_hash_entry *)(ent))
+
+#define xcoff_stub_hash_lookup(table, string, create, copy)	\
+  ((struct xcoff_stub_hash_entry *)				\
+   bfd_hash_lookup ((table), (string), (create), (copy)))
+
+static bool xcoff_mark (struct bfd_link_info *, asection *);
 
 
 
@@ -209,32 +216,80 @@ static bfd_boolean xcoff_mark (struct bf
 
 /* Read the contents of a section.  */
 
-static bfd_boolean
+static bfd_byte *
 xcoff_get_section_contents (bfd *abfd, asection *sec)
 {
   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;
+       return NULL;
     }
 
-  if (coff_section_data (abfd, sec)->contents == NULL)
+  bfd_byte *contents = coff_section_data (abfd, sec)->contents;
+  if (contents == NULL)
     {
-      bfd_byte *contents;
+      if (bfd_malloc_and_get_section (abfd, sec, &contents))
+	coff_section_data (abfd, sec)->contents = contents;
+      else
+	{
+	  free (contents);
+	  contents = NULL;
+	}
+    }
+
+  return contents;
+}
+
+/* Read .loader and swap in the header.  Sanity check to prevent
+   buffer overflows.  Don't bother to check for overlap as that sort
+   of insanity shouldn't lead to incorrect program behaviour.  */
 
-      if (! bfd_malloc_and_get_section (abfd, sec, &contents))
+static bfd_byte *
+xcoff_get_ldhdr (bfd *abfd, asection *lsec, struct internal_ldhdr *ldhdr)
+{
+  bfd_byte *contents = xcoff_get_section_contents (abfd, lsec);
+  if (contents)
+    {
+      bfd_xcoff_swap_ldhdr_in (abfd, contents, ldhdr);
+      if (ldhdr->l_nsyms != 0)
+	{
+	  bfd_vma symoff = bfd_xcoff_loader_symbol_offset (abfd, ldhdr);
+	  if (symoff > lsec->size)
+	    goto fail;
+	  bfd_size_type onesym = bfd_xcoff_ldsymsz (abfd);
+	  bfd_size_type syms;
+	  if (_bfd_mul_overflow (ldhdr->l_nsyms, onesym, &syms)
+	      || syms > lsec->size - symoff)
+	    goto fail;
+	}
+      if (ldhdr->l_stlen != 0
+	  && (ldhdr->l_stoff > lsec->size
+	      || ldhdr->l_stlen > lsec->size - ldhdr->l_stoff))
+	goto fail;
+      if (ldhdr->l_nreloc != 0)
 	{
-	  if (contents != NULL)
-	    free (contents);
-	  return FALSE;
+	  bfd_vma reloff = bfd_xcoff_loader_reloc_offset (abfd, ldhdr);
+	  if (reloff > lsec->size)
+	    goto fail;
+	  bfd_size_type onerel = bfd_xcoff_ldrelsz (abfd);
+	  bfd_size_type rels;
+	  if (_bfd_mul_overflow (ldhdr->l_nreloc, onerel, &rels)
+	      || rels > lsec->size - reloff)
+	    goto fail;
 	}
-      coff_section_data (abfd, sec)->contents = contents;
+      if (ldhdr->l_nimpid != 0
+	  && (ldhdr->l_impoff > lsec->size
+	      || ldhdr->l_istlen > lsec->size - ldhdr->l_impoff))
+	goto fail;
     }
+  return contents;
 
-  return TRUE;
+ fail:
+  bfd_set_error (bfd_error_file_truncated);
+  return NULL;
 }
 
 /* Get the size required to hold the dynamic symbols.  */
@@ -253,17 +308,15 @@ _bfd_xcoff_get_dynamic_symtab_upper_boun
     }
 
   lsec = bfd_get_section_by_name (abfd, ".loader");
-  if (lsec == NULL)
+  if (lsec == NULL || (lsec->flags & SEC_HAS_CONTENTS) == 0)
     {
       bfd_set_error (bfd_error_no_symbols);
       return -1;
     }
 
-  if (! xcoff_get_section_contents (abfd, lsec))
+  contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr);
+  if (!contents)
     return -1;
-  contents = coff_section_data (abfd, lsec)->contents;
-
-  bfd_xcoff_swap_ldhdr_in (abfd, (void *) contents, &ldhdr);
 
   return (ldhdr.l_nsyms + 1) * sizeof (asymbol *);
 }
@@ -287,19 +340,15 @@ _bfd_xcoff_canonicalize_dynamic_symtab (
     }
 
   lsec = bfd_get_section_by_name (abfd, ".loader");
-  if (lsec == NULL)
+  if (lsec == NULL || (lsec->flags & SEC_HAS_CONTENTS) == 0)
     {
       bfd_set_error (bfd_error_no_symbols);
       return -1;
     }
 
-  if (! xcoff_get_section_contents (abfd, lsec))
+  contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr);
+  if (!contents)
     return -1;
-  contents = coff_section_data (abfd, lsec)->contents;
-
-  coff_section_data (abfd, lsec)->keep_contents = TRUE;
-
-  bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr);
 
   strings = (char *) contents + ldhdr.l_stoff;
 
@@ -318,9 +367,7 @@ _bfd_xcoff_canonicalize_dynamic_symtab (
 
       symbuf->symbol.the_bfd = abfd;
 
-      if (ldsym._l._l_l._l_zeroes == 0)
-	symbuf->symbol.name = strings + ldsym._l._l_l._l_offset;
-      else
+      if (ldsym._l._l_l._l_zeroes != 0)
 	{
 	  char *c;
 
@@ -331,6 +378,10 @@ _bfd_xcoff_canonicalize_dynamic_symtab (
 	  c[SYMNMLEN] = '\0';
 	  symbuf->symbol.name = c;
 	}
+      else if (ldsym._l._l_l._l_offset < ldhdr.l_stlen)
+	symbuf->symbol.name = strings + ldsym._l._l_l._l_offset;
+      else
+	symbuf->symbol.name = _("<corrupt>");
 
       if (ldsym.l_smclas == XMC_XO)
 	symbuf->symbol.section = bfd_abs_section_ptr;
@@ -374,17 +425,15 @@ _bfd_xcoff_get_dynamic_reloc_upper_bound
     }
 
   lsec = bfd_get_section_by_name (abfd, ".loader");
-  if (lsec == NULL)
+  if (lsec == NULL || (lsec->flags & SEC_HAS_CONTENTS) == 0)
     {
       bfd_set_error (bfd_error_no_symbols);
       return -1;
     }
 
-  if (! xcoff_get_section_contents (abfd, lsec))
+  contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr);
+  if (!contents)
     return -1;
-  contents = coff_section_data (abfd, lsec)->contents;
-
-  bfd_xcoff_swap_ldhdr_in (abfd, (struct external_ldhdr *) contents, &ldhdr);
 
   return (ldhdr.l_nreloc + 1) * sizeof (arelent *);
 }
@@ -409,17 +458,15 @@ _bfd_xcoff_canonicalize_dynamic_reloc (b
     }
 
   lsec = bfd_get_section_by_name (abfd, ".loader");
-  if (lsec == NULL)
+  if (lsec == NULL || (lsec->flags & SEC_HAS_CONTENTS) == 0)
     {
       bfd_set_error (bfd_error_no_symbols);
       return -1;
     }
 
-  if (! xcoff_get_section_contents (abfd, lsec))
+  contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr);
+  if (!contents)
     return -1;
-  contents = coff_section_data (abfd, lsec)->contents;
-
-  bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr);
 
   relbuf = bfd_alloc (abfd, ldhdr.l_nreloc * sizeof (arelent));
   if (relbuf == NULL)
@@ -435,37 +482,29 @@ _bfd_xcoff_canonicalize_dynamic_reloc (b
 
       bfd_xcoff_swap_ldrel_in (abfd, elrel, &ldrel);
 
-      if (ldrel.l_symndx >= 3)
-	relbuf->sym_ptr_ptr = syms + (ldrel.l_symndx - 3);
-      else
+      if (ldrel.l_symndx + 2 < 5)
 	{
-	  const char *name;
-	  asection *sec;
-
-	  switch (ldrel.l_symndx)
-	    {
-	    case 0:
-	      name = ".text";
-	      break;
-	    case 1:
-	      name = ".data";
-	      break;
-	    case 2:
-	      name = ".bss";
-	      break;
-	    default:
-	      abort ();
-	      break;
-	    }
-
-	  sec = bfd_get_section_by_name (abfd, name);
+	  static const char stdsec[5][8]
+	    = { ".tbss", ".tdata", ".text", ".data", ".bss" };
+	  const char *name = stdsec[ldrel.l_symndx + 2];
+	  asection *sec = bfd_get_section_by_name (abfd, name);
 	  if (sec == NULL)
 	    {
 	      bfd_set_error (bfd_error_bad_value);
 	      return -1;
 	    }
 
-	  relbuf->sym_ptr_ptr = sec->symbol_ptr_ptr;
+	  relbuf->sym_ptr_ptr = &sec->symbol;
+	}
+      else if (ldrel.l_symndx - 3 < ldhdr.l_nsyms)
+	relbuf->sym_ptr_ptr = syms + (ldrel.l_symndx - 3);
+      else
+	{
+	  _bfd_error_handler
+	    /* xgettext:c-format */
+	    (_("%pB: warning: illegal symbol index %lu in relocs"),
+	     abfd, (unsigned long) ldrel.l_symndx);
+	  relbuf->sym_ptr_ptr = &bfd_abs_section_ptr->symbol;
 	}
 
       relbuf->address = ldrel.l_vaddr;
@@ -526,7 +565,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;
 
@@ -536,6 +575,41 @@ xcoff_get_archive_info (struct bfd_link_
   return entryp;
 }
 
+
+/* Initialize an entry in the stub hash table.  */
+static struct bfd_hash_entry *
+stub_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 xcoff_stub_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 xcoff_stub_hash_entry *hsh;
+
+      /* Initialize the local fields.  */
+      hsh = (struct xcoff_stub_hash_entry *) entry;
+      hsh->stub_type = xcoff_stub_none;
+      hsh->hcsect = NULL;
+      hsh->stub_offset = 0;
+      hsh->target_section = NULL;
+      hsh->htarget = NULL;
+    }
+
+  return entry;
+}
+
 /* Routine to create an entry in an XCOFF link hash table.  */
 
 static struct bfd_hash_entry *
@@ -584,6 +658,8 @@ _bfd_xcoff_bfd_link_hash_table_free (bfd
     htab_delete (ret->archive_info);
   if (ret->debug_strtab)
     _bfd_stringtab_free (ret->debug_strtab);
+
+  bfd_hash_table_free (&ret->stub_hash_table);
   _bfd_generic_link_hash_table_free (obfd);
 }
 
@@ -593,7 +669,8 @@ 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);
+  bool isxcoff64 = false;
+  size_t amt = sizeof (* ret);
 
   ret = bfd_zmalloc (amt);
   if (ret == NULL)
@@ -605,7 +682,17 @@ _bfd_xcoff_bfd_link_hash_table_create (b
       return NULL;
     }
 
-  ret->debug_strtab = _bfd_xcoff_stringtab_init ();
+  /* Init the stub hash table too.  */
+  if (!bfd_hash_table_init (&ret->stub_hash_table, stub_hash_newfunc,
+			    sizeof (struct xcoff_stub_hash_entry)))
+    {
+      _bfd_xcoff_bfd_link_hash_table_free (abfd);
+      return NULL;
+    }
+
+  isxcoff64 = bfd_coff_debug_string_prefix_length (abfd) == 4;
+
+  ret->debug_strtab = _bfd_xcoff_stringtab_init (isxcoff64);
   ret->archive_info = htab_create (37, xcoff_archive_info_hash,
 				   xcoff_archive_info_eq, NULL);
   if (!ret->debug_strtab || !ret->archive_info)
@@ -618,7 +705,7 @@ _bfd_xcoff_bfd_link_hash_table_create (b
   /* The linker will always generate a full a.out header.  We need to
      record that fact now, before the sizeof_headers routine could be
      called.  */
-  xcoff_data (abfd)->full_aouthdr = TRUE;
+  xcoff_data (abfd)->full_aouthdr = true;
 
   return &ret->root;
 }
@@ -630,9 +717,9 @@ _bfd_xcoff_bfd_link_hash_table_create (b
 static struct internal_reloc *
 xcoff_read_internal_relocs (bfd *abfd,
 			    asection *sec,
-			    bfd_boolean cache,
+			    bool cache,
 			    bfd_byte *external_relocs,
-			    bfd_boolean require_internal,
+			    bool require_internal,
 			    struct internal_reloc *internal_relocs)
 {
   if (coff_section_data (abfd, sec) != NULL
@@ -649,8 +736,8 @@ xcoff_read_internal_relocs (bfd *abfd,
 	  && cache
 	  && enclosing->reloc_count > 0)
 	{
-	  if (_bfd_coff_read_internal_relocs (abfd, enclosing, TRUE,
-					      external_relocs, FALSE, NULL)
+	  if (_bfd_coff_read_internal_relocs (abfd, enclosing, true,
+					      external_relocs, false, NULL)
 	      == NULL)
 	    return NULL;
 	}
@@ -680,7 +767,7 @@ xcoff_read_internal_relocs (bfd *abfd,
 /* Split FILENAME into an import path and an import filename,
    storing them in *IMPPATH and *IMPFILE respectively.  */
 
-bfd_boolean
+bool
 bfd_xcoff_split_import_path (bfd *abfd, const char *filename,
 			     const char **imppath, const char **impfile)
 {
@@ -703,19 +790,19 @@ bfd_xcoff_split_import_path (bfd *abfd,
 	 of the string; the native linker doesn't do that either.  */
       path = bfd_alloc (abfd, length);
       if (path == NULL)
-	return FALSE;
+	return false;
       memcpy (path, filename, length - 1);
       path[length - 1] = 0;
       *imppath = path;
     }
   *impfile = base;
-  return TRUE;
+  return true;
 }
 
 /* Set ARCHIVE's import path as though its filename had been given
    as FILENAME.  */
 
-bfd_boolean
+bool
 bfd_xcoff_set_archive_import_path (struct bfd_link_info *info,
 				   bfd *archive, const char *filename)
 {
@@ -732,7 +819,7 @@ bfd_xcoff_set_archive_import_path (struc
    to IMPATH, IMPFILE and IMPMEMBER respectively.  All three are null if
    no specific import module is specified.  */
 
-static bfd_boolean
+static bool
 xcoff_set_import_path (struct bfd_link_info *info,
 		       struct xcoff_link_hash_entry *h,
 		       const char *imppath, const char *impfile,
@@ -764,11 +851,11 @@ 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)
-	    return FALSE;
+	    return false;
 	  n->next = NULL;
 	  n->path = imppath;
 	  n->file = impfile;
@@ -777,20 +864,20 @@ xcoff_set_import_path (struct bfd_link_i
 	}
       h->ldindx = c;
     }
-  return TRUE;
+  return true;
 }
 
 /* H is the bfd symbol associated with exported .loader symbol LDSYM.
    Return true if LDSYM defines H.  */
 
-static bfd_boolean
+static bool
 xcoff_dynamic_definition_p (struct xcoff_link_hash_entry *h,
 			    struct internal_ldsym *ldsym)
 {
   /* If we didn't know about H before processing LDSYM, LDSYM
      definitely defines H.  */
   if (h->root.type == bfd_link_hash_new)
-    return TRUE;
+    return true;
 
   /* If H is currently a weak dynamic symbol, and if LDSYM is a strong
      dynamic symbol, LDSYM trumps the current definition of H.  */
@@ -799,21 +886,25 @@ xcoff_dynamic_definition_p (struct xcoff
       && (h->flags & XCOFF_DEF_REGULAR) == 0
       && (h->root.type == bfd_link_hash_defweak
 	  || h->root.type == bfd_link_hash_undefweak))
-    return TRUE;
+    return true;
 
-  /* If H is currently undefined, LDSYM defines it.  */
+  /* If H is currently undefined, LDSYM defines it.
+     However, if H has a hidden visibility, LDSYM must not
+     define it.  */
   if ((h->flags & XCOFF_DEF_DYNAMIC) == 0
       && (h->root.type == bfd_link_hash_undefined
-	  || h->root.type == bfd_link_hash_undefweak))
-    return TRUE;
+	  || h->root.type == bfd_link_hash_undefweak)
+      && (h->visibility != SYM_V_HIDDEN
+	  && h->visibility != SYM_V_INTERNAL))
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* This function is used to add symbols from a dynamic object to the
    global symbol table.  */
 
-static bfd_boolean
+static bool
 xcoff_link_add_dynamic_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   asection *lsec;
@@ -833,7 +924,7 @@ xcoff_link_add_dynamic_symbols (bfd *abf
 	(_("%pB: XCOFF shared object when not producing XCOFF output"),
 	 abfd);
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
 
   /* The symbols we use from a dynamic object are not the symbols in
@@ -848,25 +939,23 @@ xcoff_link_add_dynamic_symbols (bfd *abf
      o_snloader field in the a.out header, rather than grabbing the
      section by name.  */
   lsec = bfd_get_section_by_name (abfd, ".loader");
-  if (lsec == NULL)
+  if (lsec == NULL || (lsec->flags & SEC_HAS_CONTENTS) == 0)
     {
       _bfd_error_handler
 	(_("%pB: dynamic object with no .loader section"),
 	 abfd);
       bfd_set_error (bfd_error_no_symbols);
-      return FALSE;
+      return false;
     }
 
-  if (! xcoff_get_section_contents (abfd, lsec))
-    return FALSE;
-  contents = coff_section_data (abfd, lsec)->contents;
+  contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr);
+  if (!contents)
+    return false;
 
   /* Remove the sections from this object, so that they do not get
      included in the link.  */
   bfd_section_list_clear (abfd);
 
-  bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr);
-
   strings = (char *) contents + ldhdr.l_stoff;
 
   elsym = contents + bfd_xcoff_loader_symbol_offset(abfd, &ldhdr);
@@ -886,24 +975,26 @@ xcoff_link_add_dynamic_symbols (bfd *abf
       if ((ldsym.l_smtype & L_EXPORT) == 0)
 	continue;
 
-      if (ldsym._l._l_l._l_zeroes == 0)
-	name = strings + ldsym._l._l_l._l_offset;
-      else
+      if (ldsym._l._l_l._l_zeroes != 0)
 	{
 	  memcpy (nambuf, ldsym._l._l_name, SYMNMLEN);
 	  nambuf[SYMNMLEN] = '\0';
 	  name = nambuf;
 	}
+      else if (ldsym._l._l_l._l_offset < ldhdr.l_stlen)
+	name = strings + ldsym._l._l_l._l_offset;
+      else
+	continue;
 
       /* Normally we could not call xcoff_link_hash_lookup in an add
 	 symbols routine, since we might not be using an XCOFF hash
 	 table.  However, we verified above that we are using an XCOFF
 	 hash table.  */
 
-      h = xcoff_link_hash_lookup (xcoff_hash_table (info), name, TRUE,
-				  TRUE, TRUE);
+      h = xcoff_link_hash_lookup (xcoff_hash_table (info), name, true,
+				  true, true);
       if (h == NULL)
-	return FALSE;
+	return false;
 
       if (!xcoff_dynamic_definition_p (h, &ldsym))
 	continue;
@@ -949,14 +1040,14 @@ xcoff_link_add_dynamic_symbols (bfd *abf
 
 	      dsnm = bfd_malloc ((bfd_size_type) strlen (name) + 2);
 	      if (dsnm == NULL)
-		return FALSE;
+		return false;
 	      dsnm[0] = '.';
 	      strcpy (dsnm + 1, name);
 	      hds = xcoff_link_hash_lookup (xcoff_hash_table (info), dsnm,
-					    TRUE, TRUE, TRUE);
+					    true, true, true);
 	      free (dsnm);
 	      if (hds == NULL)
-		return FALSE;
+		return false;
 
 	      hds->descriptor = h;
 	      h->descriptor = hds;
@@ -986,23 +1077,20 @@ xcoff_link_add_dynamic_symbols (bfd *abf
 	}
     }
 
-  if (contents != NULL && ! coff_section_data (abfd, lsec)->keep_contents)
-    {
-      free (coff_section_data (abfd, lsec)->contents);
-      coff_section_data (abfd, lsec)->contents = NULL;
-    }
+  free (contents);
+  coff_section_data (abfd, lsec)->contents = NULL;
 
   /* Record this file in the import files.  */
   n = bfd_alloc (abfd, (bfd_size_type) sizeof (struct xcoff_import_file));
   if (n == NULL)
-    return FALSE;
+    return false;
   n->next = NULL;
 
   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;
+	return false;
       n->member = "";
     }
   else
@@ -1013,10 +1101,11 @@ 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;
+	    return false;
 	}
       n->path = archive_info->imppath;
       n->file = archive_info->impfile;
@@ -1033,17 +1122,17 @@ xcoff_link_add_dynamic_symbols (bfd *abf
 
   xcoff_data (abfd)->import_file_id = c;
 
-  return TRUE;
+  return true;
 }
 
 /* xcoff_link_create_extra_sections
 
    Takes care of creating the .loader, .gl, .ds, .debug and sections.  */
 
-static bfd_boolean
+static bool
 xcoff_link_create_extra_sections (bfd * abfd, struct bfd_link_info *info)
 {
-  bfd_boolean return_value = FALSE;
+  bool return_value = false;
 
   if (info->output_bfd->xvec == abfd->xvec)
     {
@@ -1124,7 +1213,7 @@ xcoff_link_create_extra_sections (bfd *
 	}
     }
 
-  return_value = TRUE;
+  return_value = true;
 
  end_return:
 
@@ -1180,6 +1269,26 @@ xcoff_find_reloc (struct internal_reloc
   return min;
 }
 
+/* Return true if the symbol has to be added to the linker hash
+   table.  */
+static bool
+xcoff_link_add_symbols_to_hash_table (struct internal_syment sym,
+				      union internal_auxent aux)
+{
+  /* External symbols must be added.  */
+  if (EXTERN_SYM_P (sym.n_sclass))
+    return true;
+
+  /* Hidden TLS symbols must be added to verify TLS relocations
+     in xcoff_reloc_type_tls.  */
+  if (sym.n_sclass == C_HIDEXT
+      && ((aux.x_csect.x_smclas == XMC_TL
+	   || aux.x_csect.x_smclas == XMC_UL)))
+    return true;
+
+  return false;
+}
+
 /* Add all the symbols from an object file to the hash table.
 
    XCOFF is a weird format.  A normal XCOFF .o files will have three
@@ -1198,12 +1307,12 @@ xcoff_find_reloc (struct internal_reloc
    relocation entries carefully, since the only way to tell which
    csect they belong to is to examine the address.  */
 
-static bfd_boolean
+static bool
 xcoff_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   unsigned int n_tmask;
   unsigned int n_btshft;
-  bfd_boolean default_copy;
+  bool default_copy;
   bfd_size_type symcount;
   struct xcoff_link_hash_entry **sym_hash;
   asection **csect_cache;
@@ -1211,7 +1320,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
   bfd_size_type linesz;
   asection *o;
   asection *last_real;
-  bfd_boolean keep_syms;
+  bool keep_syms;
   asection *csect;
   unsigned int csect_index;
   asection *first_csect;
@@ -1225,6 +1334,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
     bfd_byte *linenos;
   } *reloc_info = NULL;
   bfd_size_type amt;
+  unsigned short visibility;
 
   keep_syms = obj_coff_keep_syms (abfd);
 
@@ -1232,7 +1342,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
       && ! info->static_link)
     {
       if (! xcoff_link_add_dynamic_symbols (abfd, info))
-	return FALSE;
+	return false;
     }
 
   /* Create the loader, toc, gl, ds and debug sections, if needed.  */
@@ -1241,7 +1351,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
 
   if ((abfd->flags & DYNAMIC) != 0
       && ! info->static_link)
-    return TRUE;
+    return true;
 
   n_tmask = coff_data (abfd)->local_n_tmask;
   n_btshft = coff_data (abfd)->local_n_btshft;
@@ -1251,9 +1361,9 @@ xcoff_link_add_symbols (bfd *abfd, struc
 #define N_BTSHFT n_btshft
 
   if (info->keep_memory)
-    default_copy = FALSE;
+    default_copy = false;
   else
-    default_copy = TRUE;
+    default_copy = true;
 
   symcount = obj_raw_syment_count (abfd);
 
@@ -1304,7 +1414,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
       if ((o->flags & SEC_RELOC) != 0)
 	{
 	  reloc_info[o->target_index].relocs =
-	    xcoff_read_internal_relocs (abfd, o, TRUE, NULL, FALSE, NULL);
+	    xcoff_read_internal_relocs (abfd, o, true, NULL, false, NULL);
 	  amt = o->reloc_count;
 	  amt *= sizeof (asection *);
 	  reloc_info[o->target_index].csects = bfd_zmalloc (amt);
@@ -1317,19 +1427,22 @@ 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;
 	}
     }
 
   /* Don't let the linker relocation routines discard the symbols.  */
-  obj_coff_keep_syms (abfd) = TRUE;
+  obj_coff_keep_syms (abfd) = true;
 
   csect = NULL;
   csect_index = 0;
@@ -1459,6 +1572,9 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	    }
 	}
 
+      /* Record visibility.  */
+      visibility = sym.n_type & SYM_V_MASK;
+
       /* Pick up the csect auxiliary information.  */
       if (sym.n_numaux == 0)
 	{
@@ -1496,14 +1612,14 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	  /* This is an external reference.  */
 	  if (sym.n_sclass == C_HIDEXT
 	      || sym.n_scnum != N_UNDEF
-	      || aux.x_csect.x_scnlen.l != 0)
+	      || aux.x_csect.x_scnlen.u64 != 0)
 	    {
 	      _bfd_error_handler
 		/* xgettext:c-format */
 		(_("%pB: bad XTY_ER symbol `%s': class %d scnum %d "
 		   "scnlen %" PRId64),
 		 abfd, name, sym.n_sclass, sym.n_scnum,
-		 (int64_t) aux.x_csect.x_scnlen.l);
+		 aux.x_csect.x_scnlen.u64);
 	      bfd_set_error (bfd_error_bad_value);
 	      goto error_return;
 	    }
@@ -1527,12 +1643,12 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	  if (aux.x_csect.x_smclas == XMC_TC0)
 	    {
 	      if (sym.n_sclass != C_HIDEXT
-		  || aux.x_csect.x_scnlen.l != 0)
+		  || aux.x_csect.x_scnlen.u64 != 0)
 		{
 		  _bfd_error_handler
 		    /* xgettext:c-format */
-		    (_("%pB: XMC_TC0 symbol `%s' is class %d scnlen %" PRId64),
-		     abfd, name, sym.n_sclass, (int64_t) aux.x_csect.x_scnlen.l);
+		    (_("%pB: XMC_TC0 symbol `%s' is class %d scnlen %" PRIu64),
+		     abfd, name, sym.n_sclass, aux.x_csect.x_scnlen.u64);
 		  bfd_set_error (bfd_error_bad_value);
 		  goto error_return;
 		}
@@ -1550,6 +1666,11 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	     32 bit has a csect length of 4 for TOC
 	     64 bit has a csect length of 8 for TOC
 
+	     An exception is made for TOC entries with a R_TLSML
+	     relocation.  This relocation is made for the loader.
+	     We must check that the referenced symbol is the TOC entry
+	     itself.
+
 	     The conditions to get past the if-check are not that bad.
 	     They are what is used to create the TOC csects in the first
 	     place.  */
@@ -1557,9 +1678,9 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	      && sym.n_sclass == C_HIDEXT
 	      && info->output_bfd->xvec == abfd->xvec
 	      && ((bfd_xcoff_is_xcoff32 (abfd)
-		   && aux.x_csect.x_scnlen.l == 4)
+		   && aux.x_csect.x_scnlen.u64 == 4)
 		  || (bfd_xcoff_is_xcoff64 (abfd)
-		      && aux.x_csect.x_scnlen.l == 8)))
+		      && aux.x_csect.x_scnlen.u64 == 8)))
 	    {
 	      asection *enclosing;
 	      struct internal_reloc *relocs;
@@ -1579,7 +1700,8 @@ xcoff_link_add_symbols (bfd *abfd, struc
 		 64 bit R_POS r_size is 63  */
 	      if (relindx < enclosing->reloc_count
 		  && rel->r_vaddr == (bfd_vma) sym.n_value
-		  && rel->r_type == R_POS
+		  && (rel->r_type == R_POS ||
+		      rel->r_type == R_TLSML)
 		  && ((bfd_xcoff_is_xcoff32 (abfd)
 		       && rel->r_size == 31)
 		      || (bfd_xcoff_is_xcoff64 (abfd)
@@ -1596,7 +1718,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
 		    {
 		      const char *relname;
 		      char relbuf[SYMNMLEN + 1];
-		      bfd_boolean copy;
+		      bool copy;
 		      struct xcoff_link_hash_entry *h;
 
 		      /* At this point we know that the TOC entry is
@@ -1617,8 +1739,8 @@ xcoff_link_add_symbols (bfd *abfd, struc
 				  || relsym._n._n_n._n_zeroes != 0
 				  || relsym._n._n_n._n_offset == 0);
 			  h = xcoff_link_hash_lookup (xcoff_hash_table (info),
-						      relname, TRUE, copy,
-						      FALSE);
+						      relname, true, copy,
+						      false);
 			  if (h == NULL)
 			    goto error_return;
 
@@ -1651,6 +1773,22 @@ xcoff_link_add_symbols (bfd *abfd, struc
 			  set_toc = h;
 			}
 		    }
+		  else if (rel->r_type == R_TLSML)
+		    {
+			csect_index = ((esym
+					- (bfd_byte *) obj_coff_external_syms (abfd))
+				       / symesz);
+			if (((unsigned long) rel->r_symndx) != csect_index)
+			  {
+			    _bfd_error_handler
+			      /* xgettext:c-format */
+			      (_("%pB: TOC entry `%s' has a R_TLSML"
+				 "relocation not targeting itself"),
+			       abfd, name);
+			    bfd_set_error (bfd_error_bad_value);
+			    goto error_return;
+			  }
+		    }
 		}
 	    }
 
@@ -1673,7 +1811,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
 
 	    if (! bfd_is_abs_section (enclosing)
 		&& ((bfd_vma) sym.n_value < enclosing->vma
-		    || ((bfd_vma) sym.n_value + aux.x_csect.x_scnlen.l
+		    || (sym.n_value + aux.x_csect.x_scnlen.u64
 			> enclosing->vma + enclosing->size)))
 	      {
 		_bfd_error_handler
@@ -1687,7 +1825,8 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	    csect->filepos = (enclosing->filepos
 			      + sym.n_value
 			      - enclosing->vma);
-	    csect->size = aux.x_csect.x_scnlen.l;
+	    csect->size = aux.x_csect.x_scnlen.u64;
+	    csect->rawsize = aux.x_csect.x_scnlen.u64;
 	    csect->flags |= SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS;
 	    csect->alignment_power = SMTYP_ALIGN (aux.x_csect.x_smtyp);
 
@@ -1748,9 +1887,10 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	    if (first_csect == NULL)
 	      first_csect = csect;
 
-	    /* If this symbol is external, we treat it as starting at the
-	       beginning of the newly created section.  */
-	    if (EXTERN_SYM_P (sym.n_sclass))
+	    /* If this symbol must be added to the linker hash table,
+	       we treat it as starting at the beginning of the newly
+	       created section.  */
+	    if (xcoff_link_add_symbols_to_hash_table (sym, aux))
 	      {
 		section = csect;
 		value = 0;
@@ -1768,19 +1908,18 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	     follow its appropriate XTY_SD symbol.  The .set pseudo op can
 	     cause the XTY_LD to not follow the XTY_SD symbol. */
 	  {
-	    bfd_boolean bad;
+	    bool bad;
 
-	    bad = FALSE;
-	    if (aux.x_csect.x_scnlen.l < 0
-		|| (aux.x_csect.x_scnlen.l
-		    >= esym - (bfd_byte *) obj_coff_external_syms (abfd)))
-	      bad = TRUE;
+	    bad = false;
+	    if (aux.x_csect.x_scnlen.u64
+		>= (size_t) (esym - (bfd_byte *) obj_coff_external_syms (abfd)))
+	      bad = true;
 	    if (! bad)
 	      {
-		section = xcoff_data (abfd)->csects[aux.x_csect.x_scnlen.l];
+		section = xcoff_data (abfd)->csects[aux.x_csect.x_scnlen.u64];
 		if (section == NULL
 		    || (section->flags & SEC_HAS_CONTENTS) == 0)
-		  bad = TRUE;
+		  bad = true;
 	      }
 	    if (bad)
 	      {
@@ -1811,6 +1950,12 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	      csect = bfd_make_section_anyway_with_flags (abfd, ".td",
 							  SEC_ALLOC);
 	    }
+	  else if (aux.x_csect.x_smclas == XMC_UL)
+	    {
+	      /* This is a thread-local unitialized csect.  */
+	      csect = bfd_make_section_anyway_with_flags (abfd, ".tbss",
+							  SEC_ALLOC | SEC_THREAD_LOCAL);
+	    }
 	  else
 	    csect = bfd_make_section_anyway_with_flags (abfd, ".bss",
 							SEC_ALLOC);
@@ -1818,7 +1963,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	  if (csect == NULL)
 	    goto error_return;
 	  csect->vma = sym.n_value;
-	  csect->size = aux.x_csect.x_scnlen.l;
+	  csect->size = aux.x_csect.x_scnlen.u64;
 	  csect->alignment_power = SMTYP_ALIGN (aux.x_csect.x_smtyp);
 	  /* There are a number of other fields and section flags
 	     which we do not bother to set.  */
@@ -1840,12 +1985,12 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	  if (first_csect == NULL)
 	    first_csect = csect;
 
-	  if (EXTERN_SYM_P (sym.n_sclass))
+	  if (xcoff_link_add_symbols_to_hash_table (sym, aux))
 	    {
 	      csect->flags |= SEC_IS_COMMON;
 	      csect->size = 0;
 	      section = csect;
-	      value = aux.x_csect.x_scnlen.l;
+	      value = aux.x_csect.x_scnlen.u64;
 	    }
 
 	  break;
@@ -1881,9 +2026,9 @@ xcoff_link_add_symbols (bfd *abfd, struc
       /* Now we have enough information to add the symbol to the
 	 linker hash table.  */
 
-      if (EXTERN_SYM_P (sym.n_sclass))
+      if (xcoff_link_add_symbols_to_hash_table (sym, aux))
 	{
-	  bfd_boolean copy, ok;
+	  bool copy, ok;
 	  flagword flags;
 
 	  BFD_ASSERT (section != NULL);
@@ -1893,7 +2038,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	  copy = default_copy;
 	  if (sym._n._n_n._n_zeroes != 0
 	      || sym._n._n_n._n_offset == 0)
-	    copy = TRUE;
+	    copy = true;
 
 	  /* Ignore global linkage code when linking statically.  */
 	  if (info->static_link
@@ -1932,13 +2077,13 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	    {
 	      if (! bfd_is_und_section (section))
 		*sym_hash = xcoff_link_hash_lookup (xcoff_hash_table (info),
-						    name, TRUE, copy, FALSE);
+						    name, true, copy, false);
 	      else
 		/* Make a copy of the symbol name to prevent problems with
 		   merging symbols.  */
 		*sym_hash = ((struct xcoff_link_hash_entry *)
 			     bfd_wrapped_link_hash_lookup (abfd, info, name,
-							   TRUE, TRUE, FALSE));
+							   true, true, false));
 
 	      if (*sym_hash == NULL)
 		goto error_return;
@@ -2008,6 +2153,22 @@ xcoff_link_add_symbols (bfd *abfd, struc
 		  /* Try not to give this error too many times.  */
 		  (*sym_hash)->flags &= ~XCOFF_MULTIPLY_DEFINED;
 		}
+
+
+	      /* If the symbol is hidden or internal, completely undo
+		 any dynamic link state.  */
+	      if ((*sym_hash)->flags & XCOFF_DEF_DYNAMIC
+		  && (visibility == SYM_V_HIDDEN
+		      || visibility == SYM_V_INTERNAL))
+		  (*sym_hash)->flags &= ~XCOFF_DEF_DYNAMIC;
+	      else
+		{
+		  /* Keep the most constraining visibility.  */
+		  unsigned short hvis = (*sym_hash)->visibility;
+		  if (visibility && ( !hvis || visibility < hvis))
+		    (*sym_hash)->visibility = visibility;
+		}
+
 	    }
 
 	  /* _bfd_generic_link_add_one_symbol may call the linker to
@@ -2024,7 +2185,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
 	  last_real->next = NULL;
 	  flags = (sym.n_sclass == C_EXT ? BSF_GLOBAL : BSF_WEAK);
 	  ok = (_bfd_generic_link_add_one_symbol
-		(info, abfd, name, flags, section, value, NULL, copy, TRUE,
+		(info, abfd, name, flags, section, value, NULL, copy, true,
 		 (struct bfd_link_hash_entry **) sym_hash));
 	  last_real->next = first_csect;
 	  if (!ok)
@@ -2140,7 +2301,7 @@ xcoff_link_add_symbols (bfd *abfd, struc
 
 		      hds = xcoff_link_hash_lookup (xcoff_hash_table (info),
 						    h->root.root.string + 1,
-						    TRUE, FALSE, TRUE);
+						    true, false, true);
 		      if (hds == NULL)
 			goto error_return;
 		      if (hds->root.type == bfd_link_hash_new)
@@ -2149,8 +2310,8 @@ xcoff_link_add_symbols (bfd *abfd, struc
 			  if (! (_bfd_generic_link_add_one_symbol
 				 (info, abfd, hds->root.root.string,
 				  (flagword) 0, bfd_und_section_ptr,
-				  (bfd_vma) 0, NULL, FALSE,
-				  TRUE, &bh)))
+				  (bfd_vma) 0, NULL, false,
+				  true, &bh)))
 			    goto error_return;
 			  hds = (struct xcoff_link_hash_entry *) bh;
 			}
@@ -2174,9 +2335,7 @@ 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)
+	      && coff_section_data (abfd, o) != NULL)
 	    {
 	      free (coff_section_data (abfd, o)->relocs);
 	      coff_section_data (abfd, o)->relocs = NULL;
@@ -2185,33 +2344,28 @@ 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);
 
   obj_coff_keep_syms (abfd) = keep_syms;
 
-  return TRUE;
+  return true;
 
  error_return:
   if (reloc_info != NULL)
     {
       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);
     }
   obj_coff_keep_syms (abfd) = keep_syms;
-  return FALSE;
+  return false;
 }
 
 #undef N_TMASK
@@ -2219,29 +2373,29 @@ xcoff_link_add_symbols (bfd *abfd, struc
 
 /* Add symbols from an XCOFF object file.  */
 
-static bfd_boolean
+static bool
 xcoff_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   if (! _bfd_coff_get_external_symbols (abfd))
-    return FALSE;
+    return false;
   if (! xcoff_link_add_symbols (abfd, info))
-    return FALSE;
+    return false;
   if (! info->keep_memory)
     {
       if (! _bfd_coff_free_symbols (abfd))
-	return FALSE;
+	return false;
     }
-  return TRUE;
+  return true;
 }
 
 /* Look through the loader symbols to see if this dynamic object
    should be included in the link.  The native linker uses the loader
    symbols, not the normal symbol table, so we do too.  */
 
-static bfd_boolean
+static bool
 xcoff_link_check_dynamic_ar_symbols (bfd *abfd,
 				     struct bfd_link_info *info,
-				     bfd_boolean *pneeded,
+				     bool *pneeded,
 				     bfd **subsbfd)
 {
   asection *lsec;
@@ -2250,18 +2404,16 @@ xcoff_link_check_dynamic_ar_symbols (bfd
   const char *strings;
   bfd_byte *elsym, *elsymend;
 
-  *pneeded = FALSE;
+  *pneeded = false;
 
   lsec = bfd_get_section_by_name (abfd, ".loader");
-  if (lsec == NULL)
+  if (lsec == NULL || (lsec->flags & SEC_HAS_CONTENTS) == 0)
     /* There are no symbols, so don't try to include it.  */
-    return TRUE;
+    return true;
 
-  if (! xcoff_get_section_contents (abfd, lsec))
-    return FALSE;
-  contents = coff_section_data (abfd, lsec)->contents;
-
-  bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr);
+  contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr);
+  if (!contents)
+    return false;
 
   strings = (char *) contents + ldhdr.l_stoff;
 
@@ -2281,16 +2433,18 @@ xcoff_link_check_dynamic_ar_symbols (bfd
       if ((ldsym.l_smtype & L_EXPORT) == 0)
 	continue;
 
-      if (ldsym._l._l_l._l_zeroes == 0)
-	name = strings + ldsym._l._l_l._l_offset;
-      else
+      if (ldsym._l._l_l._l_zeroes != 0)
 	{
 	  memcpy (nambuf, ldsym._l._l_name, SYMNMLEN);
 	  nambuf[SYMNMLEN] = '\0';
 	  name = nambuf;
 	}
+      else if (ldsym._l._l_l._l_offset < ldhdr.l_stlen)
+	name = strings + ldsym._l._l_l._l_offset;
+      else
+	continue;
 
-      h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
+      h = bfd_link_hash_lookup (info->hash, name, false, false, true);
 
       /* We are only interested in symbols that are currently
 	 undefined.  At this point we know that we are using an XCOFF
@@ -2303,35 +2457,32 @@ xcoff_link_check_dynamic_ar_symbols (bfd
 	  if (!(*info->callbacks
 		->add_archive_element) (info, abfd, name, subsbfd))
 	    continue;
-	  *pneeded = TRUE;
-	  return TRUE;
+	  *pneeded = true;
+	  return true;
 	}
     }
 
-  /* We do not need this shared object.  */
-  if (contents != NULL && ! coff_section_data (abfd, lsec)->keep_contents)
-    {
-      free (coff_section_data (abfd, lsec)->contents);
-      coff_section_data (abfd, lsec)->contents = NULL;
-    }
+  /* We do not need this shared object's .loader section.  */
+  free (contents);
+  coff_section_data (abfd, lsec)->contents = NULL;
 
-  return TRUE;
+  return true;
 }
 
 /* Look through the symbols to see if this object file should be
    included in the link.  */
 
-static bfd_boolean
+static bool
 xcoff_link_check_ar_symbols (bfd *abfd,
 			     struct bfd_link_info *info,
-			     bfd_boolean *pneeded,
+			     bool *pneeded,
 			     bfd **subsbfd)
 {
   bfd_size_type symesz;
   bfd_byte *esym;
   bfd_byte *esym_end;
 
-  *pneeded = FALSE;
+  *pneeded = false;
 
   if ((abfd->flags & DYNAMIC) != 0
       && ! info->static_link
@@ -2346,6 +2497,7 @@ xcoff_link_check_ar_symbols (bfd *abfd,
       struct internal_syment sym;
 
       bfd_coff_swap_sym_in (abfd, (void *) esym, (void *) &sym);
+      esym += (sym.n_numaux + 1) * symesz;
 
       if (EXTERN_SYM_P (sym.n_sclass) && sym.n_scnum != N_UNDEF)
 	{
@@ -2358,8 +2510,8 @@ xcoff_link_check_ar_symbols (bfd *abfd,
 	  name = _bfd_coff_internal_syment_name (abfd, &sym, buf);
 
 	  if (name == NULL)
-	    return FALSE;
-	  h = bfd_link_hash_lookup (info->hash, name, FALSE, FALSE, TRUE);
+	    return false;
+	  h = bfd_link_hash_lookup (info->hash, name, false, false, true);
 
 	  /* We are only interested in symbols that are currently
 	     undefined.  If a symbol is currently known to be common,
@@ -2375,16 +2527,14 @@ xcoff_link_check_ar_symbols (bfd *abfd,
 	      if (!(*info->callbacks
 		    ->add_archive_element) (info, abfd, name, subsbfd))
 		continue;
-	      *pneeded = TRUE;
-	      return TRUE;
+	      *pneeded = true;
+	      return true;
 	    }
 	}
-
-      esym += (sym.n_numaux + 1) * symesz;
     }
 
   /* We do not need this object file.  */
-  return TRUE;
+  return true;
 }
 
 /* Check a single archive element to see if we need to include it in
@@ -2392,23 +2542,23 @@ xcoff_link_check_ar_symbols (bfd *abfd,
    needed in the link or not.  This is called via
    _bfd_generic_link_add_archive_symbols.  */
 
-static bfd_boolean
+static bool
 xcoff_link_check_archive_element (bfd *abfd,
 				  struct bfd_link_info *info,
 				  struct bfd_link_hash_entry *h ATTRIBUTE_UNUSED,
 				  const char *name ATTRIBUTE_UNUSED,
-				  bfd_boolean *pneeded)
+				  bool *pneeded)
 {
-  bfd_boolean keep_syms_p;
+  bool keep_syms_p;
   bfd *oldbfd;
 
   keep_syms_p = (obj_coff_external_syms (abfd) != NULL);
   if (!_bfd_coff_get_external_symbols (abfd))
-    return FALSE;
+    return false;
 
   oldbfd = abfd;
   if (!xcoff_link_check_ar_symbols (abfd, info, pneeded, &abfd))
-    return FALSE;
+    return false;
 
   if (*pneeded)
     {
@@ -2418,30 +2568,30 @@ xcoff_link_check_archive_element (bfd *a
 	{
 	  if (!keep_syms_p
 	      && !_bfd_coff_free_symbols (oldbfd))
-	    return FALSE;
+	    return false;
 	  keep_syms_p = (obj_coff_external_syms (abfd) != NULL);
 	  if (!_bfd_coff_get_external_symbols (abfd))
-	    return FALSE;
+	    return false;
 	}
       if (!xcoff_link_add_symbols (abfd, info))
-	return FALSE;
+	return false;
       if (info->keep_memory)
-	keep_syms_p = TRUE;
+	keep_syms_p = true;
     }
 
   if (!keep_syms_p)
     {
       if (!_bfd_coff_free_symbols (abfd))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Given an XCOFF BFD, add symbols to the global hash table as
    appropriate.  */
 
-bfd_boolean
+bool
 _bfd_xcoff_bfd_link_add_symbols (bfd *abfd, struct bfd_link_info *info)
 {
   switch (bfd_get_format (abfd))
@@ -2460,7 +2610,7 @@ _bfd_xcoff_bfd_link_add_symbols (bfd *ab
 	{
 	  if (! (_bfd_generic_link_add_archive_symbols
 		 (abfd, info, xcoff_link_check_archive_element)))
-	    return FALSE;
+	    return false;
 	}
 
       {
@@ -2473,11 +2623,11 @@ _bfd_xcoff_bfd_link_add_symbols (bfd *ab
 		&& (info->output_bfd->xvec == member->xvec)
 		&& (! bfd_has_map (abfd) || (member->flags & DYNAMIC) != 0))
 	      {
-		bfd_boolean needed;
+		bool needed;
 
 		if (! xcoff_link_check_archive_element (member, info,
 							NULL, NULL, &needed))
-		  return FALSE;
+		  return false;
 		if (needed)
 		  member->archive_pass = -1;
 	      }
@@ -2485,15 +2635,15 @@ _bfd_xcoff_bfd_link_add_symbols (bfd *ab
 	  }
       }
 
-      return TRUE;
+      return true;
 
     default:
       bfd_set_error (bfd_error_wrong_format);
-      return FALSE;
+      return false;
     }
 }
 
-bfd_boolean
+bool
 _bfd_xcoff_define_common_symbol (bfd *output_bfd ATTRIBUTE_UNUSED,
 				 struct bfd_link_info *info ATTRIBUTE_UNUSED,
 				 struct bfd_link_hash_entry *harg)
@@ -2501,17 +2651,17 @@ _bfd_xcoff_define_common_symbol (bfd *ou
   struct xcoff_link_hash_entry *h;
 
   if (!bfd_generic_define_common_symbol (output_bfd, info, harg))
-    return FALSE;
+    return false;
 
   h = (struct xcoff_link_hash_entry *) harg;
   h->flags |= XCOFF_DEF_REGULAR;
-  return TRUE;
+  return true;
 }
 
 /* If symbol H has not been interpreted as a function descriptor,
    see whether it should be.  Set up its descriptor information if so.  */
 
-static bfd_boolean
+static bool
 xcoff_find_function (struct bfd_link_info *info,
 		     struct xcoff_link_hash_entry *h)
 {
@@ -2520,16 +2670,16 @@ 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);
       if (fnname == NULL)
-	return FALSE;
+	return false;
       fnname[0] = '.';
       strcpy (fnname + 1, h->root.root.string);
       hfn = xcoff_link_hash_lookup (xcoff_hash_table (info),
-				    fnname, FALSE, FALSE, TRUE);
+				    fnname, false, false, true);
       free (fnname);
       if (hfn != NULL
 	  && hfn->smclas == XMC_PR
@@ -2541,12 +2691,12 @@ xcoff_find_function (struct bfd_link_inf
 	  hfn->descriptor = h;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* Return true if the given bfd contains at least one shared object.  */
 
-static bfd_boolean
+static bool
 xcoff_archive_contains_shared_object_p (struct bfd_link_info *info,
 					bfd *archive)
 {
@@ -2569,12 +2719,12 @@ xcoff_archive_contains_shared_object_p (
 /* Symbol H qualifies for export by -bexpfull.  Return true if it also
    qualifies for export by -bexpall.  */
 
-static bfd_boolean
+static bool
 xcoff_covered_by_expall_p (struct xcoff_link_hash_entry *h)
 {
   /* Exclude symbols beginning with '_'.  */
   if (h->root.root.string[0] == '_')
-    return FALSE;
+    return false;
 
   /* Exclude archive members that would otherwise be unreferenced.  */
   if ((h->flags & XCOFF_MARK) == 0
@@ -2582,30 +2732,35 @@ xcoff_covered_by_expall_p (struct xcoff_
 	  || h->root.type == bfd_link_hash_defweak)
       && h->root.u.def.section->owner != NULL
       && h->root.u.def.section->owner->my_archive != NULL)
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Return true if symbol H qualifies for the forms of automatic export
    specified by AUTO_EXPORT_FLAGS.  */
 
-static bfd_boolean
+static bool
 xcoff_auto_export_p (struct bfd_link_info *info,
 		     struct xcoff_link_hash_entry *h,
 		     unsigned int auto_export_flags)
 {
   /* Don't automatically export things that were explicitly exported.  */
   if ((h->flags & XCOFF_EXPORT) != 0)
-    return FALSE;
+    return false;
 
   /* Don't export things that we don't define.  */
   if ((h->flags & XCOFF_DEF_REGULAR) == 0)
-    return FALSE;
+    return false;
 
   /* Don't export functions; export their descriptors instead.  */
   if (h->root.root.string[0] == '.')
-    return FALSE;
+    return false;
+
+  /* Don't export hidden or internal symbols.  */
+  if (h->visibility == SYM_V_HIDDEN
+      || h->visibility == SYM_V_INTERNAL)
+    return false;
 
   /* We don't export a symbol which is being defined by an object
      included from an archive which contains a shared object.  The
@@ -2630,31 +2785,31 @@ xcoff_auto_export_p (struct bfd_link_inf
       if (owner != NULL
 	  && owner->my_archive != NULL
 	  && xcoff_archive_contains_shared_object_p (info, owner->my_archive))
-	return FALSE;
+	return false;
     }
 
   /* Otherwise, all symbols are exported by -bexpfull.  */
   if ((auto_export_flags & XCOFF_EXPFULL) != 0)
-    return TRUE;
+    return true;
 
   /* Despite its name, -bexpall exports most but not all symbols.  */
   if ((auto_export_flags & XCOFF_EXPALL) != 0
       && xcoff_covered_by_expall_p (h))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Return true if relocation REL needs to be copied to the .loader section.
    If REL is against a global symbol, H is that symbol, otherwise it
    is null.  */
 
-static bfd_boolean
+static bool
 xcoff_need_ldrel_p (struct bfd_link_info *info, struct internal_reloc *rel,
-		    struct xcoff_link_hash_entry *h)
+		    struct xcoff_link_hash_entry *h, asection *ssec)
 {
   if (!xcoff_hash_table (info)->loader_section)
-    return FALSE;
+    return false;
 
   switch (rel->r_type)
     {
@@ -2664,7 +2819,7 @@ xcoff_need_ldrel_p (struct bfd_link_info
     case R_TRL:
     case R_TRLA:
       /* We should never need a .loader reloc for a TOC-relative reloc.  */
-      return FALSE;
+      return false;
 
     default:
       /* In this case, relocations against defined symbols can be resolved
@@ -2673,14 +2828,14 @@ xcoff_need_ldrel_p (struct bfd_link_info
 	  || h->root.type == bfd_link_hash_defined
 	  || h->root.type == bfd_link_hash_defweak
 	  || h->root.type == bfd_link_hash_common)
-	return FALSE;
+	return false;
 
       /* We will always provide a local definition of function symbols,
 	 even if we don't have one yet.  */
       if ((h->flags & XCOFF_CALLED) != 0)
-	return FALSE;
+	return false;
 
-      return TRUE;
+      return true;
 
     case R_POS:
     case R_NEG:
@@ -2688,21 +2843,45 @@ 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;
-
-      return TRUE;
+      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;
+	}
+
+      /* Absolute relocations from read-only sections are forbidden
+	 by AIX loader. However, they can appear in their section's
+         relocations.  */
+      if (ssec != NULL
+	  && (ssec->output_section->flags & SEC_READONLY) != 0)
+	return false;
+
+      return true;
+
+    case R_TLS:
+    case R_TLS_LE:
+    case R_TLS_IE:
+    case R_TLS_LD:
+    case R_TLSM:
+    case R_TLSML:
+      return true;
     }
 }
 
 /* Mark a symbol as not being garbage, including the section in which
    it is defined.  */
 
-static inline bfd_boolean
+static inline bool
 xcoff_mark_symbol (struct bfd_link_info *info, struct xcoff_link_hash_entry *h)
 {
   if ((h->flags & XCOFF_MARK) != 0)
-    return TRUE;
+    return true;
 
   h->flags |= XCOFF_MARK;
 
@@ -2717,7 +2896,7 @@ xcoff_mark_symbol (struct bfd_link_info
       /* First check whether this symbol can be interpreted as an
 	 undefined function descriptor for a defined function symbol.  */
       if (!xcoff_find_function (info, h))
-	return FALSE;
+	return false;
 
       if ((h->flags & XCOFF_DESCRIPTOR) != 0
 	  && (h->descriptor->root.type == bfd_link_hash_defined
@@ -2745,17 +2924,17 @@ xcoff_mark_symbol (struct bfd_link_info
 
 	  /* A function descriptor uses two relocs: one for the
 	     associated code, and one for the TOC address.  */
-	  xcoff_hash_table (info)->ldrel_count += 2;
+	  xcoff_hash_table (info)->ldinfo.ldrel_count += 2;
 	  sec->reloc_count += 2;
 
 	  /* Mark the function itself.  */
 	  if (!xcoff_mark_symbol (info, h->descriptor))
-	    return FALSE;
+	    return false;
 
 	  /* Mark the TOC section, so that we get an anchor
 	     to relocate against.  */
 	  if (!xcoff_mark (info, xcoff_hash_table (info)->toc_section))
-	    return FALSE;
+	    return false;
 
 	  /* We handle writing out the contents of the descriptor in
 	     xcoff_write_global_symbol.  */
@@ -2777,7 +2956,7 @@ xcoff_mark_symbol (struct bfd_link_info
 		       || hds->root.type == bfd_link_hash_undefweak)
 		      && (hds->flags & XCOFF_DEF_REGULAR) == 0);
 	  if (!xcoff_mark_symbol (info, hds))
-	    return FALSE;
+	    return false;
 
 	  /* Treat this symbol as undefined if the descriptor was.  */
 	  if ((hds->flags & XCOFF_WAS_UNDEFINED) != 0)
@@ -2806,18 +2985,18 @@ xcoff_mark_symbol (struct bfd_link_info
 	      else if (bfd_xcoff_is_xcoff32 (info->output_bfd))
 		byte_size = 4;
 	      else
-		return FALSE;
+		return false;
 
 	      /* Allocate room in the fallback TOC section.  */
 	      hds->toc_section = xcoff_hash_table (info)->toc_section;
 	      hds->u.toc_offset = hds->toc_section->size;
 	      hds->toc_section->size += byte_size;
 	      if (!xcoff_mark (info, hds->toc_section))
-		return FALSE;
+		return false;
 
 	      /* Allocate room for a static and dynamic R_TOC
 		 relocation.  */
-	      ++xcoff_hash_table (info)->ldrel_count;
+	      ++xcoff_hash_table (info)->ldinfo.ldrel_count;
 	      ++hds->toc_section->reloc_count;
 
 	      /* Set the index to -2 to force this symbol to
@@ -2834,12 +3013,12 @@ xcoff_mark_symbol (struct bfd_link_info
 	  if (xcoff_hash_table (info)->rtld)
 	    {
 	      if (!xcoff_set_import_path (info, h, "", "..", ""))
-		return FALSE;
+		return false;
 	    }
 	  else
 	    {
 	      if (!xcoff_set_import_path (info, h, NULL, NULL, NULL))
-		return FALSE;
+		return false;
 	    }
 	}
     }
@@ -2851,34 +3030,34 @@ xcoff_mark_symbol (struct bfd_link_info
 
       hsec = h->root.u.def.section;
       if (! bfd_is_abs_section (hsec)
-	  && (hsec->flags & SEC_MARK) == 0)
+	  && hsec->gc_mark == 0)
 	{
 	  if (! xcoff_mark (info, hsec))
-	    return FALSE;
+	    return false;
 	}
     }
 
   if (h->toc_section != NULL
-      && (h->toc_section->flags & SEC_MARK) == 0)
+      && h->toc_section->gc_mark == 0)
     {
       if (! xcoff_mark (info, h->toc_section))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Look for a symbol called NAME.  If the symbol is defined, mark it.
    If the symbol exists, set FLAGS.  */
 
-static bfd_boolean
+static bool
 xcoff_mark_symbol_by_name (struct bfd_link_info *info,
 			   const char *name, unsigned int flags)
 {
   struct xcoff_link_hash_entry *h;
 
   h = xcoff_link_hash_lookup (xcoff_hash_table (info), name,
-			      FALSE, FALSE, TRUE);
+			      false, false, true);
   if (h != NULL)
     {
       h->flags |= flags;
@@ -2886,10 +3065,10 @@ xcoff_mark_symbol_by_name (struct bfd_li
 	  || h->root.type == bfd_link_hash_defweak)
 	{
 	  if (!xcoff_mark (info, h->root.u.def.section))
-	    return FALSE;
+	    return false;
 	}
     }
-  return TRUE;
+  return true;
 }
 
 /* The mark phase of garbage collection.  For a given section, mark
@@ -2898,21 +3077,25 @@ xcoff_mark_symbol_by_name (struct bfd_li
    the number of relocs which need to be copied into the .loader
    section.  */
 
-static bfd_boolean
+static bool
 xcoff_mark (struct bfd_link_info *info, asection *sec)
 {
-  if (bfd_is_abs_section (sec)
-      || (sec->flags & SEC_MARK) != 0)
-    return TRUE;
-
-  sec->flags |= SEC_MARK;
-
-  if (sec->owner->xvec == info->output_bfd->xvec
-      && coff_section_data (sec->owner, sec) != NULL
-      && xcoff_section_data (sec->owner, sec) != NULL)
+  if (bfd_is_const_section (sec)
+      || sec->gc_mark != 0)
+    return true;
+
+  sec->gc_mark = 1;
+
+  if (sec->owner->xvec != info->output_bfd->xvec)
+    return true;
+
+  if (coff_section_data (sec->owner, sec) == NULL)
+    return true;
+
+
+  if (xcoff_section_data (sec->owner, sec) != NULL)
     {
       struct xcoff_link_hash_entry **syms;
-      struct internal_reloc *rel, *relend;
       asection **csects;
       unsigned long i, first, last;
 
@@ -2927,70 +3110,71 @@ xcoff_mark (struct bfd_link_info *info,
 	    && (syms[i]->flags & XCOFF_MARK) == 0)
 	  {
 	    if (!xcoff_mark_symbol (info, syms[i]))
-	      return FALSE;
+	      return false;
 	  }
+    }
 
-      /* Look through the section relocs.  */
-      if ((sec->flags & SEC_RELOC) != 0
-	  && sec->reloc_count > 0)
-	{
-	  rel = xcoff_read_internal_relocs (sec->owner, sec, TRUE,
-					    NULL, FALSE, NULL);
-	  if (rel == NULL)
-	    return FALSE;
-	  relend = rel + sec->reloc_count;
-	  for (; rel < relend; rel++)
-	    {
-	      struct xcoff_link_hash_entry *h;
+  /* Look through the section relocs.  */
+  if ((sec->flags & SEC_RELOC) != 0
+      && sec->reloc_count > 0)
+    {
+      struct internal_reloc *rel, *relend;
 
-	      if ((unsigned int) rel->r_symndx
-		  > obj_raw_syment_count (sec->owner))
-		continue;
+      rel = xcoff_read_internal_relocs (sec->owner, sec, true,
+					NULL, false, NULL);
+      if (rel == NULL)
+	return false;
+      relend = rel + sec->reloc_count;
+      for (; rel < relend; rel++)
+	{
+	  struct xcoff_link_hash_entry *h;
 
-	      h = obj_xcoff_sym_hashes (sec->owner)[rel->r_symndx];
-	      if (h != NULL)
-		{
-		  if ((h->flags & XCOFF_MARK) == 0)
-		    {
-		      if (!xcoff_mark_symbol (info, h))
-			return FALSE;
-		    }
-		}
-	      else
-		{
-		  asection *rsec;
+	  if ((unsigned int) rel->r_symndx
+	      > obj_raw_syment_count (sec->owner))
+	    continue;
 
-		  rsec = xcoff_data (sec->owner)->csects[rel->r_symndx];
-		  if (rsec != NULL
-		      && (rsec->flags & SEC_MARK) == 0)
-		    {
-		      if (!xcoff_mark (info, rsec))
-			return FALSE;
-		    }
+	  h = obj_xcoff_sym_hashes (sec->owner)[rel->r_symndx];
+	  if (h != NULL)
+	    {
+	      if ((h->flags & XCOFF_MARK) == 0)
+		{
+		  if (!xcoff_mark_symbol (info, h))
+		    return false;
 		}
+	    }
+	  else
+	    {
+	      asection *rsec;
 
-	      /* See if this reloc needs to be copied into the .loader
-		 section.  */
-	      if (xcoff_need_ldrel_p (info, rel, h))
+	      rsec = xcoff_data (sec->owner)->csects[rel->r_symndx];
+	      if (rsec != NULL
+		  && rsec->gc_mark == 0)
 		{
-		  ++xcoff_hash_table (info)->ldrel_count;
-		  if (h != NULL)
-		    h->flags |= XCOFF_LDREL;
+		  if (!xcoff_mark (info, rsec))
+		    return false;
 		}
 	    }
 
-	  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)
+	  /* See if this reloc needs to be copied into the .loader
+	     section.  */
+	  if ((sec->flags & SEC_DEBUGGING) == 0
+	      && xcoff_need_ldrel_p (info, rel, h, sec))
 	    {
-	      free (coff_section_data (sec->owner, sec)->relocs);
-	      coff_section_data (sec->owner, sec)->relocs = NULL;
+	      ++xcoff_hash_table (info)->ldinfo.ldrel_count;
+	      if (h != NULL)
+		h->flags |= XCOFF_LDREL;
 	    }
 	}
+
+      if (! info->keep_memory
+	  && coff_section_data (sec->owner, sec) != NULL)
+	{
+	  free (coff_section_data (sec->owner, sec)->relocs);
+	  coff_section_data (sec->owner, sec)->relocs = NULL;
+	}
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Routines that are called after all the input files have been
@@ -3007,36 +3191,72 @@ xcoff_sweep (struct bfd_link_info *info)
   for (sub = info->input_bfds; sub != NULL; sub = sub->link.next)
     {
       asection *o;
+      bool some_kept = false;
 
+      /* As says below keep all sections from non-XCOFF
+         input files.  */
+      if (sub->xvec != info->output_bfd->xvec)
+	some_kept = true;
+      else
+	{
+	  /* See whether any section is already marked.  */
+	  for (o = sub->sections; o != NULL; o = o->next)
+	    if (o->gc_mark)
+	      some_kept = true;
+	}
+
+      /* If no section in this file will be kept, then we can
+	 toss out debug sections.  */
+      if (!some_kept)
+	{
+	  for (o = sub->sections; o != NULL; o = o->next)
+	    {
+	      o->size = 0;
+	      o->reloc_count = 0;
+	    }
+	  continue;
+	}
+
+      /* Keep all sections from non-XCOFF input files.  Keep
+	 special sections.  Keep .debug sections for the
+	 moment.  */
       for (o = sub->sections; o != NULL; o = o->next)
 	{
-	  if ((o->flags & SEC_MARK) == 0)
+	  if (o->gc_mark == 1)
+	    continue;
+
+	  if (sub->xvec != info->output_bfd->xvec
+	      || o == xcoff_hash_table (info)->debug_section
+	      || o == xcoff_hash_table (info)->loader_section
+	      || o == xcoff_hash_table (info)->linkage_section
+	      || o == xcoff_hash_table (info)->descriptor_section
+	      || (bfd_section_flags (o) & SEC_DEBUGGING)
+	      || strcmp (o->name, ".debug") == 0)
+	    xcoff_mark (info, o);
+	  else
 	    {
-	      /* Keep all sections from non-XCOFF input files.  Keep
-		 special sections.  Keep .debug sections for the
-		 moment.  */
-	      if (sub->xvec != info->output_bfd->xvec
-		  || o == xcoff_hash_table (info)->debug_section
-		  || o == xcoff_hash_table (info)->loader_section
-		  || o == xcoff_hash_table (info)->linkage_section
-		  || o == xcoff_hash_table (info)->descriptor_section
-		  || (bfd_section_flags (o) & SEC_DEBUGGING)
-		  || strcmp (o->name, ".debug") == 0)
-		o->flags |= SEC_MARK;
-	      else
-		{
-		  o->size = 0;
-		  o->reloc_count = 0;
-		}
+	      o->size = 0;
+	      o->reloc_count = 0;
 	    }
 	}
     }
 }
 
+/* Initialize the back-end with linker infos.  */
+
+bool
+bfd_xcoff_link_init (struct bfd_link_info *info,
+		     struct bfd_xcoff_link_params *params)
+{
+  xcoff_hash_table (info)->params = params;
+
+  return true;
+}
+
 /* Record the number of elements in a set.  This is used to output the
    correct csect length.  */
 
-bfd_boolean
+bool
 bfd_xcoff_link_record_set (bfd *output_bfd,
 			   struct bfd_link_info *info,
 			   struct bfd_link_hash_entry *harg,
@@ -3044,10 +3264,10 @@ 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;
+    return true;
 
   /* This will hardly ever be called.  I don't want to burn four bytes
      per global symbol, so instead the size is kept on a linked list
@@ -3055,7 +3275,7 @@ bfd_xcoff_link_record_set (bfd *output_b
   amt = sizeof (* n);
   n = bfd_alloc (output_bfd, amt);
   if (n == NULL)
-    return FALSE;
+    return false;
   n->next = xcoff_hash_table (info)->size_list;
   n->h = h;
   n->size = size;
@@ -3063,12 +3283,12 @@ bfd_xcoff_link_record_set (bfd *output_b
 
   h->flags |= XCOFF_HAS_SIZE;
 
-  return TRUE;
+  return true;
 }
 
 /* Import a symbol.  */
 
-bfd_boolean
+bool
 bfd_xcoff_import_symbol (bfd *output_bfd,
 			 struct bfd_link_info *info,
 			 struct bfd_link_hash_entry *harg,
@@ -3081,7 +3301,7 @@ bfd_xcoff_import_symbol (bfd *output_bfd
   struct xcoff_link_hash_entry *h = (struct xcoff_link_hash_entry *) harg;
 
   if (bfd_get_flavour (output_bfd) != bfd_target_xcoff_flavour)
-    return TRUE;
+    return true;
 
   /* A symbol name which starts with a period is the code for a
      function.  If the symbol is undefined, then add an undefined
@@ -3097,9 +3317,9 @@ bfd_xcoff_import_symbol (bfd *output_bfd
 	{
 	  hds = xcoff_link_hash_lookup (xcoff_hash_table (info),
 					h->root.root.string + 1,
-					TRUE, FALSE, TRUE);
+					true, false, true);
 	  if (hds == NULL)
-	    return FALSE;
+	    return false;
 	  if (hds->root.type == bfd_link_hash_new)
 	    {
 	      hds->root.type = bfd_link_hash_undefined;
@@ -3122,9 +3342,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);
 
@@ -3135,14 +3353,14 @@ bfd_xcoff_import_symbol (bfd *output_bfd
     }
 
   if (!xcoff_set_import_path (info, h, imppath, impfile, impmember))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Export a symbol.  */
 
-bfd_boolean
+bool
 bfd_xcoff_export_symbol (bfd *output_bfd,
 			 struct bfd_link_info *info,
 			 struct bfd_link_hash_entry *harg)
@@ -3150,7 +3368,20 @@ bfd_xcoff_export_symbol (bfd *output_bfd
   struct xcoff_link_hash_entry *h = (struct xcoff_link_hash_entry *) harg;
 
   if (bfd_get_flavour (output_bfd) != bfd_target_xcoff_flavour)
-    return TRUE;
+    return true;
+
+  /* As AIX linker, symbols exported with hidden visibility are
+     silently ignored.  */
+  if (h->visibility == SYM_V_HIDDEN)
+    return true;
+
+  if (h->visibility == SYM_V_INTERNAL)
+    {
+      _bfd_error_handler (_("%pB: cannot export internal symbol `%s`."),
+			  output_bfd, h->root.root.string);
+      bfd_set_error (bfd_error_bad_value);
+      return false;
+    }
 
   h->flags |= XCOFF_EXPORT;
 
@@ -3159,7 +3390,7 @@ bfd_xcoff_export_symbol (bfd *output_bfd
 
   /* Make sure we don't garbage collect this symbol.  */
   if (! xcoff_mark_symbol (info, h))
-    return FALSE;
+    return false;
 
   /* If this is a function descriptor, make sure we don't garbage
      collect the associated function code.  We normally don't have to
@@ -3169,17 +3400,17 @@ bfd_xcoff_export_symbol (bfd *output_bfd
   if ((h->flags & XCOFF_DESCRIPTOR) != 0)
     {
       if (! xcoff_mark_symbol (info, h->descriptor))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Count a reloc against a symbol.  This is called for relocs
    generated by the linker script, typically for global constructors
    and destructors.  */
 
-bfd_boolean
+bool
 bfd_xcoff_link_count_reloc (bfd *output_bfd,
 			    struct bfd_link_info *info,
 			    const char *name)
@@ -3187,36 +3418,42 @@ bfd_xcoff_link_count_reloc (bfd *output_
   struct xcoff_link_hash_entry *h;
 
   if (bfd_get_flavour (output_bfd) != bfd_target_xcoff_flavour)
-    return TRUE;
+    return true;
 
   h = ((struct xcoff_link_hash_entry *)
-       bfd_wrapped_link_hash_lookup (output_bfd, info, name, FALSE, FALSE,
-				     FALSE));
+       bfd_wrapped_link_hash_lookup (output_bfd, info, name, false, false,
+				     false));
   if (h == NULL)
     {
       _bfd_error_handler (_("%s: no such symbol"), name);
       bfd_set_error (bfd_error_no_symbols);
-      return FALSE;
+      return false;
     }
 
   h->flags |= XCOFF_REF_REGULAR;
   if (xcoff_hash_table (info)->loader_section)
     {
       h->flags |= XCOFF_LDREL;
-      ++xcoff_hash_table (info)->ldrel_count;
+      ++xcoff_hash_table (info)->ldinfo.ldrel_count;
     }
 
   /* Mark the symbol to avoid garbage collection.  */
   if (! xcoff_mark_symbol (info, h))
-    return FALSE;
+    return false;
 
-  return TRUE;
+  return true;
 }
 
 /* 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
+bool
 bfd_xcoff_record_link_assignment (bfd *output_bfd,
 				  struct bfd_link_info *info,
 				  const char *name)
@@ -3224,23 +3461,23 @@ bfd_xcoff_record_link_assignment (bfd *o
   struct xcoff_link_hash_entry *h;
 
   if (bfd_get_flavour (output_bfd) != bfd_target_xcoff_flavour)
-    return TRUE;
+    return true;
 
-  h = xcoff_link_hash_lookup (xcoff_hash_table (info), name, TRUE, TRUE,
-			      FALSE);
+  h = xcoff_link_hash_lookup (xcoff_hash_table (info), name, true, true,
+			      false);
   if (h == NULL)
-    return FALSE;
+    return false;
 
   h->flags |= XCOFF_DEF_REGULAR;
 
-  return TRUE;
+  return true;
 }
 
 /* An xcoff_link_hash_traverse callback for which DATA points to an
    xcoff_loader_info.  Mark all symbols that should be automatically
    exported.  */
 
-static bfd_boolean
+static bool
 xcoff_mark_auto_exports (struct xcoff_link_hash_entry *h, void *data)
 {
   struct xcoff_loader_info *ldinfo;
@@ -3249,17 +3486,15 @@ xcoff_mark_auto_exports (struct xcoff_li
   if (xcoff_auto_export_p (ldinfo->info, h, ldinfo->auto_export_flags))
     {
       if (!xcoff_mark_symbol (ldinfo->info, h))
-	ldinfo->failed = TRUE;
+	ldinfo->failed = true;
     }
-  return TRUE;
+  return true;
 }
 
-/* Add a symbol to the .loader symbols, if necessary.  */
-
 /* INPUT_BFD has an external symbol associated with hash table entry H
    and csect CSECT.   Return true if INPUT_BFD defines H.  */
 
-static bfd_boolean
+static bool
 xcoff_final_definition_p (bfd *input_bfd, struct xcoff_link_hash_entry *h,
 			  asection *csect)
 {
@@ -3279,7 +3514,7 @@ xcoff_final_definition_p (bfd *input_bfd
     case bfd_link_hash_undefweak:
       /* We can't treat undef.abfd as the owner because that bfd
 	 might be a dynamic object.  Allow any bfd to claim it.  */
-      return TRUE;
+      return true;
 
     default:
       abort ();
@@ -3288,11 +3523,11 @@ xcoff_final_definition_p (bfd *input_bfd
 
 /* See if H should have a loader symbol associated with it.  */
 
-static bfd_boolean
+static bool
 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
@@ -3301,7 +3536,7 @@ xcoff_build_ldsym (struct xcoff_loader_i
       _bfd_error_handler
 	(_("warning: attempt to export undefined symbol `%s'"),
 	 h->root.root.string);
-      return TRUE;
+      return true;
     }
 
   /* We need to add a symbol to the .loader section if it is mentioned
@@ -3314,7 +3549,7 @@ xcoff_build_ldsym (struct xcoff_loader_i
        || h->root.type == bfd_link_hash_common)
       && (h->flags & XCOFF_ENTRY) == 0
       && (h->flags & XCOFF_EXPORT) == 0)
-    return TRUE;
+    return true;
 
   /* We need to add this symbol to the .loader symbols.  */
 
@@ -3323,8 +3558,8 @@ xcoff_build_ldsym (struct xcoff_loader_i
   h->ldsym = bfd_zalloc (ldinfo->output_bfd, amt);
   if (h->ldsym == NULL)
     {
-      ldinfo->failed = TRUE;
-      return FALSE;
+      ldinfo->failed = true;
+      return false;
     }
 
   if ((h->flags & XCOFF_IMPORT) != 0)
@@ -3343,23 +3578,23 @@ xcoff_build_ldsym (struct xcoff_loader_i
 
   if (! bfd_xcoff_put_ldsymbol_name (ldinfo->output_bfd, ldinfo,
 				     h->ldsym, h->root.root.string))
-    return FALSE;
+    return false;
 
   h->flags |= XCOFF_BUILT_LDSYM;
-  return TRUE;
+  return true;
 }
 
 /* An xcoff_htab_traverse callback that is called for each symbol
    once garbage collection is complete.  */
 
-static bfd_boolean
+static bool
 xcoff_post_gc_symbol (struct xcoff_link_hash_entry *h, void * p)
 {
   struct xcoff_loader_info *ldinfo = (struct xcoff_loader_info *) p;
 
   /* __rtinit, this symbol has special handling. */
   if (h->flags & XCOFF_RTINIT)
-    return TRUE;
+    return true;
 
   /* We don't want to garbage collect symbols which are not defined in
      XCOFF files.  This is a convenient place to mark them.  */
@@ -3375,7 +3610,7 @@ xcoff_post_gc_symbol (struct xcoff_link_
   /* Skip discarded symbols.  */
   if (xcoff_hash_table (ldinfo->info)->gc
       && (h->flags & XCOFF_MARK) == 0)
-    return TRUE;
+    return true;
 
   /* If this is still a common symbol, and it wasn't garbage
      collected, we need to actually allocate space for it in the .bss
@@ -3393,14 +3628,14 @@ xcoff_post_gc_symbol (struct xcoff_link_
 	h->flags |= XCOFF_EXPORT;
 
       if (!xcoff_build_ldsym (ldinfo, h))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* INPUT_BFD includes XCOFF symbol ISYM, which is associated with linker
-   hash table entry H and csect CSECT.  AUX contains ISYM's auxillary
+   hash table entry H and csect CSECT.  AUX contains ISYM's auxiliary
    csect information, if any.  NAME is the function's name if the name
    is stored in the .debug section, otherwise it is null.
 
@@ -3425,7 +3660,7 @@ xcoff_keep_symbol_p (struct bfd_link_inf
   if (xcoff_hash_table (info)->gc
       && !bfd_is_abs_section (csect)
       && !bfd_is_und_section (csect)
-      && (csect->flags & SEC_MARK) == 0)
+      && csect->gc_mark == 0)
     return 0;
 
   /* An XCOFF linker always removes C_STAT symbols.  */
@@ -3477,7 +3712,7 @@ xcoff_keep_symbol_p (struct bfd_link_inf
 	}
 
       if (info->strip == strip_some
-	  && bfd_hash_lookup (info->keep_hash, name, FALSE, FALSE) == NULL)
+	  && bfd_hash_lookup (info->keep_hash, name, false, false) == NULL)
 	return 0;
 
       if (info->discard == discard_l
@@ -3490,12 +3725,11 @@ xcoff_keep_symbol_p (struct bfd_link_inf
   return 1;
 }
 
-/* Lay out the .loader section, filling in the header and the import paths.
-   LIBPATH is as for bfd_xcoff_size_dynamic_sections.  */
+/* Compute the current size of the .loader section. Start filling
+   its header but it will be finalized in xcoff_build_loader_section.   */
 
-static bfd_boolean
-xcoff_build_loader_section (struct xcoff_loader_info *ldinfo,
-			    const char *libpath)
+static bool
+xcoff_size_loader_section (struct xcoff_loader_info *ldinfo)
 {
   bfd *output_bfd;
   struct xcoff_link_hash_table *htab;
@@ -3504,7 +3738,18 @@ xcoff_build_loader_section (struct xcoff
   bfd_size_type stoff;
   size_t impsize, impcount;
   asection *lsec;
-  char *out;
+
+  output_bfd = ldinfo->output_bfd;
+  htab = xcoff_hash_table (ldinfo->info);
+  ldhdr = &htab->ldhdr;
+
+  /* If this function has already been called (ie l_version is set)
+     and the number of symbols or relocations haven't changed since
+     last call, the size is already known.  */
+  if (ldhdr->l_version != 0
+      && ldhdr->l_nsyms == ldinfo->ldsym_count
+      && ldhdr->l_nreloc == ldinfo->ldrel_count)
+    return true;
 
   /* Work out the size of the import file names.  Each import file ID
      consists of three null terminated strings: the path, the file
@@ -3512,31 +3757,31 @@ xcoff_build_loader_section (struct xcoff
      of names is the path to use to find objects, which the linker has
      passed in as the libpath argument.  For some reason, the path
      entry in the other import file names appears to always be empty.  */
-  output_bfd = ldinfo->output_bfd;
-  htab = xcoff_hash_table (ldinfo->info);
-  impsize = strlen (libpath) + 3;
-  impcount = 1;
-  for (fl = htab->imports; fl != NULL; fl = fl->next)
+  if (ldhdr->l_nimpid == 0)
     {
-      ++impcount;
-      impsize += (strlen (fl->path)
-		  + strlen (fl->file)
-		  + strlen (fl->member)
-		  + 3);
+      impsize = strlen (ldinfo->libpath) + 3;
+      impcount = 1;
+      for (fl = htab->imports; fl != NULL; fl = fl->next)
+	{
+	  ++impcount;
+	  impsize += (strlen (fl->path)
+		      + strlen (fl->file)
+		      + strlen (fl->member)
+		      + 3);
+	}
+      ldhdr->l_istlen = impsize;
+      ldhdr->l_nimpid = impcount;
     }
 
   /* Set up the .loader section header.  */
-  ldhdr = &htab->ldhdr;
   ldhdr->l_version = bfd_xcoff_ldhdr_version(output_bfd);
   ldhdr->l_nsyms = ldinfo->ldsym_count;
-  ldhdr->l_nreloc = htab->ldrel_count;
-  ldhdr->l_istlen = impsize;
-  ldhdr->l_nimpid = impcount;
+  ldhdr->l_nreloc = ldinfo->ldrel_count;
   ldhdr->l_impoff = (bfd_xcoff_ldhdrsz (output_bfd)
 		     + ldhdr->l_nsyms * bfd_xcoff_ldsymsz (output_bfd)
 		     + ldhdr->l_nreloc * bfd_xcoff_ldrelsz (output_bfd));
   ldhdr->l_stlen = ldinfo->string_size;
-  stoff = ldhdr->l_impoff + impsize;
+  stoff = ldhdr->l_impoff + ldhdr->l_istlen;
   if (ldinfo->string_size == 0)
     ldhdr->l_stoff = 0;
   else
@@ -3550,62 +3795,19 @@ xcoff_build_loader_section (struct xcoff
   ldhdr->l_rldoff = (bfd_xcoff_ldhdrsz (output_bfd)
 		     + ldhdr->l_nsyms * bfd_xcoff_ldsymsz (output_bfd));
 
-  /* We now know the final size of the .loader section.  Allocate
-     space for it.  */
+  /* Save the size of the .loader section.  */
   lsec = htab->loader_section;
   lsec->size = stoff + ldhdr->l_stlen;
-  lsec->contents = bfd_zalloc (output_bfd, lsec->size);
-  if (lsec->contents == NULL)
-    return FALSE;
-
-  /* Set up the header.  */
-  bfd_xcoff_swap_ldhdr_out (output_bfd, ldhdr, lsec->contents);
-
-  /* Set up the import file names.  */
-  out = (char *) lsec->contents + ldhdr->l_impoff;
-  strcpy (out, libpath);
-  out += strlen (libpath) + 1;
-  *out++ = '\0';
-  *out++ = '\0';
-  for (fl = htab->imports; fl != NULL; fl = fl->next)
-    {
-      const char *s;
-
-      s = fl->path;
-      while ((*out++ = *s++) != '\0')
-	;
-      s = fl->file;
-      while ((*out++ = *s++) != '\0')
-	;
-      s = fl->member;
-      while ((*out++ = *s++) != '\0')
-	;
-    }
-
-  BFD_ASSERT ((bfd_size_type) ((bfd_byte *) out - lsec->contents) == stoff);
-
-  /* Set up the symbol string table.  */
-  if (ldinfo->string_size > 0)
-    {
-      memcpy (out, ldinfo->strings, ldinfo->string_size);
-      free (ldinfo->strings);
-      ldinfo->strings = NULL;
-    }
-
-  /* We can't set up the symbol table or the relocs yet, because we
-     don't yet know the final position of the various sections.  The
-     .loader symbols are written out when the corresponding normal
-     symbols are written out in xcoff_link_input_bfd or
-     xcoff_write_global_symbol.  The .loader relocs are written out
-     when the corresponding normal relocs are handled in
-     xcoff_link_input_bfd.  */
 
-  return TRUE;
+  return true;
 }
 
-/* Build the .loader section.  This is called by the XCOFF linker
+/* Prepare the .loader section.  This is called by the XCOFF linker
    emulation before_allocation routine.  We must set the size of the
-   .loader section before the linker lays out the output file.
+   .loader section before the linker lays out the output file.  However,
+   some symbols or relocations might be append to the .loader section
+   when processing the addresses, thus it's not layout right now and
+   its size might change.
    LIBPATH is the library path to search for shared objects; this is
    normally built from the -L arguments passed to the linker.  ENTRY
    is the name of the entry point symbol (the -e linker option).
@@ -3619,7 +3821,7 @@ xcoff_build_loader_section (struct xcoff
    is a mask of XCOFF_EXPALL and XCOFF_EXPFULL.  SPECIAL_SECTIONS
    is set by this routine to csects with magic names like _end.  */
 
-bfd_boolean
+bool
 bfd_xcoff_size_dynamic_sections (bfd *output_bfd,
 				 struct bfd_link_info *info,
 				 const char *libpath,
@@ -3627,36 +3829,38 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 				 unsigned long file_align,
 				 unsigned long maxstack,
 				 unsigned long maxdata,
-				 bfd_boolean gc,
+				 bool gc,
 				 int modtype,
-				 bfd_boolean textro,
+				 bool textro,
 				 unsigned int auto_export_flags,
 				 asection **special_sections,
-				 bfd_boolean rtld)
+				 bool rtld)
 {
-  struct xcoff_loader_info ldinfo;
+  struct xcoff_loader_info *ldinfo;
   int i;
   asection *sec;
   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)
     {
       for (i = 0; i < XCOFF_NUMBER_OF_SPECIAL_SECTIONS; i++)
 	special_sections[i] = NULL;
-      return TRUE;
+      return true;
     }
 
-  ldinfo.failed = FALSE;
-  ldinfo.output_bfd = output_bfd;
-  ldinfo.info = info;
-  ldinfo.auto_export_flags = auto_export_flags;
-  ldinfo.ldsym_count = 0;
-  ldinfo.string_size = 0;
-  ldinfo.strings = NULL;
-  ldinfo.string_alc = 0;
+  /* Setup ldinfo.  */
+  ldinfo = &(xcoff_hash_table (info)->ldinfo);
+
+  ldinfo->failed = false;
+  ldinfo->output_bfd = output_bfd;
+  ldinfo->info = info;
+  ldinfo->auto_export_flags = auto_export_flags;
+  ldinfo->ldsym_count = 0;
+  ldinfo->string_size = 0;
+  ldinfo->strings = NULL;
+  ldinfo->string_alc = 0;
+  ldinfo->libpath = libpath;
 
   xcoff_data (output_bfd)->maxstack = maxstack;
   xcoff_data (output_bfd)->maxdata = maxdata;
@@ -3674,12 +3878,12 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
       struct internal_ldsym *ldsym;
 
       hsym = xcoff_link_hash_lookup (xcoff_hash_table (info),
-				     "__rtinit", FALSE, FALSE, TRUE);
+				     "__rtinit", false, false, true);
       if (hsym == NULL)
 	{
 	  _bfd_error_handler
 	    (_("error: undefined symbol __rtinit"));
-	  return FALSE;
+	  return false;
 	}
 
       xcoff_mark_symbol (info, hsym);
@@ -3701,15 +3905,15 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 
 	 The first 3 symbol table indices are reserved to indicate the data,
 	 text and bss sections.  */
-      BFD_ASSERT (0 == ldinfo.ldsym_count);
+      BFD_ASSERT (0 == ldinfo->ldsym_count);
 
       hsym->ldindx = 3;
-      ldinfo.ldsym_count = 1;
+      ldinfo->ldsym_count = 1;
       hsym->ldsym = ldsym;
 
-      if (! bfd_xcoff_put_ldsymbol_name (ldinfo.output_bfd, &ldinfo,
+      if (! bfd_xcoff_put_ldsymbol_name (ldinfo->output_bfd, ldinfo,
 					 hsym->ldsym, hsym->root.root.string))
-	return FALSE;
+	return false;
 
       /* This symbol is written out by xcoff_write_global_symbol
 	 Set stuff up so xcoff_write_global_symbol logic works.  */
@@ -3721,8 +3925,8 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
   /* Garbage collect unused sections.  */
   if (bfd_link_relocatable (info) || !gc)
     {
-      gc = FALSE;
-      xcoff_hash_table (info)->gc = FALSE;
+      gc = false;
+      xcoff_hash_table (info)->gc = false;
 
       /* We still need to call xcoff_mark, in order to set ldrel_count
 	 correctly.  */
@@ -3737,7 +3941,7 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 		 (a) one of the input files did or (b) we end up
 		 creating TOC references as part of the link process.  */
 	      if (o != xcoff_hash_table (info)->toc_section
-		  && (o->flags & SEC_MARK) == 0)
+		  && o->gc_mark == 0)
 		{
 		  if (! xcoff_mark (info, o))
 		    goto error_return;
@@ -3759,12 +3963,12 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
       if (auto_export_flags != 0)
 	{
 	  xcoff_link_hash_traverse (xcoff_hash_table (info),
-				    xcoff_mark_auto_exports, &ldinfo);
-	  if (ldinfo.failed)
+				    xcoff_mark_auto_exports, ldinfo);
+	  if (ldinfo->failed)
 	    goto error_return;
 	}
       xcoff_sweep (info);
-      xcoff_hash_table (info)->gc = TRUE;
+      xcoff_hash_table (info)->gc = true;
     }
 
   /* Return special sections to the caller.  */
@@ -3774,7 +3978,7 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 
       if (sec != NULL
 	  && gc
-	  && (sec->flags & SEC_MARK) == 0)
+	  && sec->gc_mark == 0)
 	sec = NULL;
 
       special_sections[i] = sec;
@@ -3782,38 +3986,143 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 
   if (info->input_bfds == NULL)
     /* I'm not sure what to do in this bizarre case.  */
-    return TRUE;
+    return true;
 
   xcoff_link_hash_traverse (xcoff_hash_table (info), xcoff_post_gc_symbol,
-			    (void *) &ldinfo);
-  if (ldinfo.failed)
+			    (void *) ldinfo);
+  if (ldinfo->failed)
     goto error_return;
 
   if (xcoff_hash_table (info)->loader_section
-      && !xcoff_build_loader_section (&ldinfo, libpath))
+      && !xcoff_size_loader_section (ldinfo))
     goto error_return;
 
+  return true;
+
+ error_return:
+  free (ldinfo->strings);
+  return false;
+}
+
+/* Lay out the .loader section, finalizing its header and
+   filling the import paths  */
+static bool
+xcoff_build_loader_section (struct xcoff_loader_info *ldinfo)
+{
+  bfd *output_bfd;
+  asection *lsec;
+  struct xcoff_link_hash_table *htab;
+  struct internal_ldhdr *ldhdr;
+  struct xcoff_import_file *fl;
+  char *out;
+
+  output_bfd = ldinfo->output_bfd;
+  htab = xcoff_hash_table (ldinfo->info);
+  lsec = htab->loader_section;
+  ldhdr = &htab->ldhdr;
+
+  /* We could have called xcoff_size_loader_section one more time.
+     However, this function is called once all the addresses have
+     been layout thus the .loader section shouldn't be changed
+     anymore.  */
+  BFD_ASSERT (ldhdr->l_nsyms == ldinfo->ldsym_count);
+  BFD_ASSERT (ldhdr->l_nreloc == ldinfo->ldrel_count);
+
+  /* We now know the final size of the .loader section.  Allocate
+     space for it.  */
+  lsec->contents = bfd_zalloc (output_bfd, lsec->size);
+  if (lsec->contents == NULL)
+    return false;
+  lsec->alloced = 1;
+
+  /* Set up the header.  */
+  bfd_xcoff_swap_ldhdr_out (output_bfd, ldhdr, lsec->contents);
+
+  /* Set up the import file names.  */
+  out = (char *) lsec->contents + ldhdr->l_impoff;
+  strcpy (out, ldinfo->libpath);
+  out += strlen (ldinfo->libpath) + 1;
+  *out++ = '\0';
+  *out++ = '\0';
+  for (fl = htab->imports; fl != NULL; fl = fl->next)
+    {
+      const char *s;
+
+      s = fl->path;
+      while ((*out++ = *s++) != '\0')
+	;
+      s = fl->file;
+      while ((*out++ = *s++) != '\0')
+	;
+      s = fl->member;
+      while ((*out++ = *s++) != '\0')
+	;
+    }
+
+  BFD_ASSERT ((bfd_size_type) ((bfd_byte *) out - lsec->contents) == ldhdr->l_impoff + ldhdr->l_istlen);
+
+  /* Set up the symbol string table.  */
+  if (ldinfo->string_size > 0)
+    {
+      memcpy (out, ldinfo->strings, ldinfo->string_size);
+      free (ldinfo->strings);
+      ldinfo->strings = NULL;
+    }
+
+  /* We can't set up the symbol table or the relocs yet, because we
+     don't yet know the final position of the various sections.  The
+     .loader symbols are written out when the corresponding normal
+     symbols are written out in xcoff_link_input_bfd or
+     xcoff_write_global_symbol.  The .loader relocs are written out
+     when the corresponding normal relocs are handled in
+     xcoff_link_input_bfd.  */
+
+  return true;
+}
+
+
+/* Lay out the .loader section and allocate the space for
+   the other dynamic sections of XCOFF.  */
+bool
+bfd_xcoff_build_dynamic_sections (bfd *output_bfd,
+				  struct bfd_link_info *info)
+{
+  struct xcoff_loader_info *ldinfo;
+  struct bfd_strtab_hash *debug_strtab;
+  bfd_byte *debug_contents = NULL;
+  bfd *sub;
+  asection *sec;
+
+  ldinfo = &(xcoff_hash_table (info)->ldinfo);
+
+  if (xcoff_hash_table (info)->loader_section
+      && !xcoff_build_loader_section (ldinfo))
+    return false;
+
   /* Allocate space for the magic sections.  */
   sec = xcoff_hash_table (info)->linkage_section;
   if (sec->size > 0)
     {
       sec->contents = bfd_zalloc (output_bfd, sec->size);
       if (sec->contents == NULL)
-	goto error_return;
+	return false;
+      sec->alloced = 1;
     }
   sec = xcoff_hash_table (info)->toc_section;
   if (sec->size > 0)
     {
       sec->contents = bfd_zalloc (output_bfd, sec->size);
       if (sec->contents == NULL)
-	goto error_return;
+	return false;
+      sec->alloced = 1;
     }
   sec = xcoff_hash_table (info)->descriptor_section;
   if (sec->size > 0)
     {
       sec->contents = bfd_zalloc (output_bfd, sec->size);
       if (sec->contents == NULL)
-	goto error_return;
+	return false;
+      sec->alloced = 1;
     }
 
   /* Now that we've done garbage collection, decide which symbols to keep,
@@ -3857,7 +4166,9 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 	{
 	  /* Grab the contents of SUB's .debug section, if any.  */
 	  subdeb = bfd_get_section_by_name (sub, ".debug");
-	  if (subdeb != NULL && subdeb->size > 0)
+	  if (subdeb != NULL
+	      && subdeb->size != 0
+	      && (subdeb->flags & SEC_HAS_CONTENTS) != 0)
 	    {
 	      /* We use malloc and copy the names into the debug
 		 stringtab, rather than bfd_alloc, because I expect
@@ -3909,7 +4220,7 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 	  keep_p = xcoff_keep_symbol_p (info, sub, &sym, &aux,
 					*sym_hash, csect, name);
 	  if (keep_p < 0)
-	    return FALSE;
+	    goto error_return;
 
 	  if (!keep_p)
 	    /* Use a debug_index of -2 to record that a symbol should
@@ -3923,7 +4234,7 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 		{
 		  bfd_size_type indx;
 
-		  indx = _bfd_stringtab_add (debug_strtab, name, TRUE, TRUE);
+		  indx = _bfd_stringtab_add (debug_strtab, name, true, true);
 		  if (indx == (bfd_size_type) -1)
 		    goto error_return;
 		  *debug_index = indx;
@@ -3960,31 +4271,29 @@ bfd_xcoff_size_dynamic_sections (bfd *ou
 	}
     }
 
-  if (info->strip != strip_all)
+  if (info->strip != strip_all
+      && xcoff_hash_table (info)->debug_section != NULL)
     xcoff_hash_table (info)->debug_section->size =
       _bfd_stringtab_size (debug_strtab);
 
-  return TRUE;
+  return true;
 
  error_return:
-  if (ldinfo.strings != NULL)
-    free (ldinfo.strings);
-  if (debug_contents != NULL)
-    free (debug_contents);
-  return FALSE;
+  free (debug_contents);
+  return false;
 }
 
-bfd_boolean
+bool
 bfd_xcoff_link_generate_rtinit (bfd *abfd,
 				const char *init,
 				const char *fini,
-				bfd_boolean rtld)
+				bool rtld)
 {
   struct bfd_in_memory *bim;
 
   bim = bfd_malloc ((bfd_size_type) sizeof (* bim));
   if (bim == NULL)
-    return FALSE;
+    return false;
 
   bim->size = 0;
   bim->buffer = 0;
@@ -3999,16 +4308,761 @@ bfd_xcoff_link_generate_rtinit (bfd *abf
   abfd->where = 0;
 
   if (! bfd_xcoff_generate_rtinit (abfd, init, fini, rtld))
-    return FALSE;
+    return false;
 
   /* need to reset to unknown or it will not be read back in correctly */
   abfd->format = bfd_unknown;
   abfd->direction = read_direction;
   abfd->where = 0;
 
-  return TRUE;
+  return true;
 }
 
+
+/* Linker stubs.
+   The stubs will be gathered in stub csects named "@FIX'number'".
+   A new csect will be created by xcoff_stub_get_csect_in_range,
+   everytime a relocation cannot reach its target and its section
+   is too far from the others stub csects.
+   The stubs will simply be code generated inside these stub
+   csects.  In order to simplify the symbol table, only the symbols
+   for the stub csects are written.
+
+   As the code is dependent of the architecture, it's defined
+   in the backend.
+
+   xcoff_stub_indirect_call:
+   Used when a 24 bit branch cannot reach its destination and that
+   this destination isn't a global linkage symbol.
+
+   xcoff_stub_shared_call:
+   As above but when it's a global linkage symbol.
+   The main difference being that it doesn't branch to the global
+   linkage symbol which will then call the shared library.  It
+   directly call it saving the TOC.
+
+   TODO: -bbigtoc option should be able to be implemented using
+   this stubs.  */
+
+/* Get the name of a csect which will contain stubs.
+   It has the same pattern as AIX linker: @FIX"number".  */
+static char *
+xcoff_stub_csect_name (unsigned int n)
+{
+  char buf[8];
+  size_t len;
+  char *csect_name;
+
+  /* For now, allow "only" 1000000 stub csects.  */
+  if (n >= 1000000)
+    {
+      BFD_FAIL();
+      return NULL;
+    }
+
+  sprintf (buf, "%d", n);
+  len = 4 + strlen (buf) + 1;
+
+  csect_name = bfd_malloc (len);
+  if (csect_name == NULL)
+    return NULL;
+  sprintf (csect_name, "@FIX%d", n);
+
+  return csect_name;
+}
+
+/* Return a stub section which can be reach with a single branch
+   from SECTION.  CREATE means that creating a csect is allowed.  */
+static struct xcoff_link_hash_entry *
+xcoff_stub_get_csect_in_range (asection *section,
+			       struct bfd_link_info *info,
+			       bool create)
+{
+  struct xcoff_link_hash_table *htab = xcoff_hash_table (info);
+  struct xcoff_link_hash_entry *csect_entry;
+  struct bfd_link_hash_entry *bh = NULL;
+  asection *csect;
+  unsigned int it;
+  char *csect_name;
+
+  /* Search for a csect in range.  */
+  for (csect = htab->params->stub_bfd->sections, it = 0;
+       csect != NULL;
+       csect = csect->next, it++)
+    {
+      /* A csect is in range if everything instructions in SECTION
+	 can branch to every stubs in the stub csect.  This can
+	 be simplify by saying that the first entry of each sections
+	 (ie the vma of this section) can reach the last entry of the
+	 stub csect (ie the vma of the csect + its size).
+	 However, as the stub csect might be growing its size isn't
+	 fixed.  Thus, the last entry of SECTION might not be able
+	 to reach the first entry of the stub csect anymore.
+	 If this case happens, the following condition will be
+	 false during the next pass of bfd_xcoff_size_stubs and
+	 another csect will be used.
+	 This means we might create more stubs than needed.  */
+      bfd_vma csect_vma, section_vma;
+      bfd_vma csect_last_vma, section_last_vma;
+
+      csect_vma = (csect->output_section->vma
+		   + csect->output_offset);
+      csect_last_vma = (csect->output_section->vma
+			+ csect->output_offset
+			+ csect->size);
+      section_vma = (section->output_section->vma
+		     + section->output_offset);
+      section_last_vma = (section->output_section->vma
+			  + section->output_offset
+			  + section->size);
+
+      if (csect_last_vma - section_vma + (1 << 25) < 2 * (1 << 25)
+	  && section_last_vma - csect_vma + (1 << 25) < 2 * (1 << 25))
+	break;
+    }
+
+  if (!create && csect == NULL)
+    return NULL;
+
+  csect_name = xcoff_stub_csect_name (it);
+  if (!csect_name)
+    return NULL;
+
+  /* A stub csect already exists, get its entry.  */
+  if (csect != NULL)
+    {
+      csect_entry = xcoff_link_hash_lookup (htab, csect_name, false, false, true);
+      free(csect_name);
+      return csect_entry;
+    }
+
+  /* Create the csect and its symbol.  */
+  csect = (*htab->params->add_stub_section) (".pr", section);
+  if (!csect)
+    {
+      free(csect_name);
+      return NULL;
+    }
+
+  csect->alignment_power = 2;
+  csect->gc_mark = 1;
+  csect->reloc_count = 0;
+
+  /* We need to associate a VMA to this new csect.  Otherwise,
+     our "in range" algorithm won't find it for the next stub.
+     And as we will be adding this stub section just after the
+     SECTION, we know its address.  */
+  csect->output_offset = BFD_ALIGN (section->output_offset + section->size,
+				    4);
+
+  if (!_bfd_generic_link_add_one_symbol (info, htab->params->stub_bfd,
+					 csect_name, BSF_GLOBAL, csect, 0,
+					 NULL, true, true, &bh))
+    {
+      free(csect_name);
+      return NULL;
+    }
+
+  csect_entry = (struct xcoff_link_hash_entry *)bh;
+  csect_entry->smclas = XMC_PR;
+  csect_entry->flags = XCOFF_MARK | XCOFF_DEF_REGULAR;
+
+  free(csect_name);
+  return csect_entry;
+}
+
+
+/* Build a name for an entry in the stub hash table.  */
+static char *
+xcoff_stub_name (const struct xcoff_link_hash_entry *h,
+		 const struct xcoff_link_hash_entry *hcsect)
+{
+  char *stub_name;
+  size_t len;
+
+  if (h)
+    {
+      /* The name of a stub is based on its stub csect and the
+	 symbol it wants to reach.  It looks like: ".@FIX0.tramp.f".
+	 When the stub targets a function, the last dot of ".tramp."
+	 is removed to avoid having two dot.  */
+      len = (1 + 6
+	     + strlen (hcsect->root.root.string)
+	     + strlen (h->root.root.string)
+	     + 1);
+      if (h->root.root.string[0] != '.')
+	len++;
+
+      stub_name = bfd_malloc (len);
+      if (stub_name == NULL)
+	return stub_name;
+
+      if (h->root.root.string[0] == '.')
+	sprintf (stub_name, ".%s.tramp%s",
+		 hcsect->root.root.string,
+		 h->root.root.string);
+      else
+	sprintf (stub_name, ".%s.tramp.%s",
+		 hcsect->root.root.string,
+		 h->root.root.string);
+    }
+  else
+    {
+      BFD_FAIL();
+      return NULL;
+    }
+
+  return stub_name;
+}
+
+/* Look up an entry in the stub hash.  */
+struct xcoff_stub_hash_entry *
+bfd_xcoff_get_stub_entry (asection *section,
+			  struct xcoff_link_hash_entry *h,
+			  struct bfd_link_info *info)
+{
+  struct xcoff_link_hash_table *htab = xcoff_hash_table (info);
+  struct xcoff_link_hash_entry *hcsect;
+  struct xcoff_stub_hash_entry *hstub;
+  char *stub_name;
+
+  hcsect = xcoff_stub_get_csect_in_range (section, info, false);
+  if (!hcsect)
+    return NULL;
+
+  stub_name = xcoff_stub_name (h, hcsect);
+  if (stub_name == NULL)
+    return NULL;
+
+  hstub = xcoff_stub_hash_lookup (&htab->stub_hash_table,
+				  stub_name, false, false);
+
+  free (stub_name);
+  return hstub;
+}
+
+/* Check if the symbol targeted by IREL is reachable.
+   Return the type of stub needed otherwise.  */
+enum xcoff_stub_type
+bfd_xcoff_type_of_stub (asection *sec,
+			const struct internal_reloc *irel,
+			bfd_vma destination,
+			struct xcoff_link_hash_entry *h)
+{
+  bfd_vma location, offset, max_offset;
+
+  switch (irel->r_type)
+    {
+    default:
+      return xcoff_stub_none;
+
+    case R_BR:
+    case R_RBR:
+      location = (sec->output_section->vma
+		  + sec->output_offset
+		  + irel->r_vaddr
+		  - sec->vma);
+
+      max_offset = 1 << 25 ;
+
+      offset = destination - location;
+
+      if (offset + max_offset < 2 * max_offset)
+	return xcoff_stub_none;
+
+      /* A stub is needed.  Now, check that we can make one.  */
+      if (h != NULL
+	  && h->descriptor != NULL)
+	{
+	  /* Not sure how to handle this case. For now, skip it. */
+	  if (bfd_is_abs_section (h->root.u.def.section))
+	    return xcoff_stub_none;
+
+	  if (h->smclas == XMC_GL)
+	    return xcoff_stub_shared_call;
+	  else
+	    return xcoff_stub_indirect_call;
+	}
+      break;
+    }
+
+  return xcoff_stub_none;
+}
+
+/* Add a new stub entry to the stub hash.  Not all fields of the new
+   stub entry are initialised.  */
+static struct xcoff_stub_hash_entry *
+xcoff_add_stub (const char *stub_name,
+		struct xcoff_link_hash_entry *hstub_csect,
+		struct xcoff_link_hash_entry *htarget,
+		struct bfd_link_info *info,
+		enum xcoff_stub_type stub_type)
+{
+  struct xcoff_link_hash_table *htab = xcoff_hash_table (info);
+  struct xcoff_stub_hash_entry *hstub;
+  bfd_vma stub_offset;
+  asection *stub_csect;
+
+  stub_csect = hstub_csect->root.u.def.section;
+  stub_offset = stub_csect->size;
+
+  /* Update the relocation counter and the size of
+     the containing csect.  The size is needed for
+     the algorithm in xcoff_stub_get_csect_in_range.  */
+  switch (stub_type)
+    {
+    default:
+      BFD_FAIL ();
+      return NULL;
+
+    case xcoff_stub_indirect_call:
+      stub_csect->reloc_count++;
+      stub_csect->size += bfd_xcoff_stub_indirect_call_size (info->output_bfd);
+	break;
+
+    case xcoff_stub_shared_call:
+      stub_csect->reloc_count++;
+      stub_csect->size += bfd_xcoff_stub_shared_call_size (info->output_bfd);
+      break;
+    }
+
+  /* Create the stub entry.  */
+  hstub = xcoff_stub_hash_lookup (&htab->stub_hash_table, stub_name,
+				       true, true);
+  if (hstub == NULL)
+    return NULL;
+
+  hstub->htarget = htarget;
+  hstub->stub_offset = stub_offset;
+
+  /* For indirect call or shared call, the relocations are against
+     the target descriptor.  Its toc entry will be used.  */
+  if (stub_type == xcoff_stub_indirect_call
+      || stub_type == xcoff_stub_shared_call)
+    {
+      struct xcoff_link_hash_entry *hds = htarget->descriptor;
+      asection *hds_section = hds->root.u.def.section;
+
+      hstub->htarget = hds;
+
+      /* If the symbol haven't been marked, its section might have
+	 its size and its relocation count been deleted by xcoff_sweep.
+	 Restore it.  */
+      if ((hds->flags & XCOFF_MARK) == 0)
+	{
+	  if (hds_section->size == 0
+	      && hds_section->reloc_count == 0
+	      && hds_section->rawsize != 0)
+	    {
+	      hds_section->size = hds_section->rawsize;
+	      /* Always two relocations for a XMC_DS symbol.  */
+	      hds_section->reloc_count = 2;
+	    }
+
+	  /* Mark the section and the symbol.  */
+	  if (!xcoff_mark (info, hds_section))
+	    return NULL;
+	}
+
+      /* Add a TOC entry for the descriptor if non exists.  */
+      if (hds->toc_section == NULL)
+	{
+	  int byte_size;
+
+	  if (bfd_xcoff_is_xcoff64 (info->output_bfd))
+	    byte_size = 8;
+	  else if (bfd_xcoff_is_xcoff32 (info->output_bfd))
+	    byte_size = 4;
+	  else
+	    return NULL;
+
+	  /* Allocate room in the fallback TOC section.  */
+	  hds->toc_section = xcoff_hash_table (info)->toc_section;
+	  hds->u.toc_offset = hds->toc_section->size;
+	  hds->toc_section->size += byte_size;
+	  if (!xcoff_mark (info, hds->toc_section))
+	    return NULL;
+
+	  /* Update relocation counters for a static and dynamic
+	     R_TOC relocation.  */
+	  ++hds->toc_section->reloc_count;
+	  ++htab->ldinfo.ldrel_count;
+
+	  /* Set the index to -2 to force this symbol to
+	     get written out.  */
+	  hds->indx = -2;
+	  hds->flags |= XCOFF_SET_TOC;
+	}
+    }
+
+  return hstub;
+}
+
+static bool
+xcoff_build_one_stub (struct bfd_hash_entry *gen_entry, void *in_arg)
+{
+  struct xcoff_stub_hash_entry *hstub
+    = (struct xcoff_stub_hash_entry *) gen_entry;
+
+  bfd *stub_bfd;
+  bfd *output_bfd;
+  struct bfd_link_info *info;
+  bfd_byte *loc;
+  bfd_byte *p;
+  unsigned int i;
+
+  info = (struct bfd_link_info *) in_arg;
+  stub_bfd = xcoff_hash_table (info)->params->stub_bfd;
+  output_bfd = info->output_bfd;
+
+  /* Fail if the target section could not be assigned to an output
+     section.  The user should fix his linker script.  */
+  if (hstub->target_section != NULL
+      && hstub->target_section->output_section == NULL
+      && info->non_contiguous_regions)
+    info->callbacks->fatal (_("%P: Could not assign `%pA' to an output section. "
+			      "Retry without --enable-non-contiguous-regions.\n"),
+			    hstub->target_section);
+
+  loc = (hstub->hcsect->root.u.def.section->contents
+	 + hstub->stub_offset);
+  p = loc;
+
+  switch (hstub->stub_type)
+    {
+    case xcoff_stub_indirect_call:
+      BFD_ASSERT (hstub->htarget->toc_section != NULL);
+      /* The first instruction in the stub code needs to be
+	 cooked to hold the correct offset in the toc.  It will
+	 be filled by xcoff_stub_create_relocations.  */
+      for (i = 0; i < bfd_xcoff_stub_indirect_call_size(output_bfd) / 4; i++)
+	bfd_put_32 (stub_bfd,
+		    (bfd_vma) bfd_xcoff_stub_indirect_call_code(output_bfd, i),
+		    &p[4 * i]);
+      break;
+
+    case xcoff_stub_shared_call:
+      BFD_ASSERT (hstub->htarget->toc_section != NULL);
+      /* The first instruction in the glink code needs to be
+	 cooked to hold the correct offset in the toc.  It will
+	 be filled by xcoff_stub_create_relocations.  */
+      for (i = 0; i < bfd_xcoff_stub_shared_call_size(output_bfd) / 4; i++)
+	bfd_put_32 (stub_bfd,
+		    (bfd_vma) bfd_xcoff_stub_shared_call_code(output_bfd, i),
+		    &p[4 * i]);
+
+      break;
+
+    default:
+      BFD_FAIL ();
+      return false;
+    }
+  return true;
+}
+
+/* Check relocations and adds stubs if needed.  */
+
+bool
+bfd_xcoff_size_stubs (struct bfd_link_info *info)
+{
+  struct xcoff_link_hash_table *htab = xcoff_hash_table (info);
+  struct xcoff_loader_info *ldinfo = &(htab->ldinfo);
+
+  while (1)
+    {
+      bfd *input_bfd;
+      bool stub_changed = false;
+
+      for (input_bfd = info->input_bfds;
+	   input_bfd != NULL;
+	   input_bfd = input_bfd->link.next)
+	{
+	  asection *section;
+	  bfd_size_type symcount;
+	  bfd_size_type symesz;
+	  bfd_byte *esyms;
+
+	  if (bfd_get_flavour (input_bfd) != bfd_target_xcoff_flavour)
+	    continue;
+
+	  symcount = obj_raw_syment_count (input_bfd);
+	  if (!symcount)
+	    continue;
+	  symesz = bfd_coff_symesz (input_bfd);
+	  esyms = (bfd_byte *) obj_coff_external_syms (input_bfd);
+
+	  /* Walk over each section attached to the input bfd.  */
+	  for (section = input_bfd->sections;
+	       section != NULL;
+	       section = section->next)
+	    {
+	      struct internal_reloc *internal_relocs;
+	      struct internal_reloc *irel, *irelend;
+
+	      /* If there aren't any relocs, then there's nothing more
+		 to do.  */
+	      if ((section->flags & SEC_RELOC) == 0
+		  || section->reloc_count == 0)
+		continue;
+
+	      /* If this section is a link-once section that will be
+		 discarded, then don't create any stubs.  */
+	      if (section->output_section == NULL
+		  || section->output_section->owner != info->output_bfd)
+		continue;
+
+	      /* This section have been garbage-collected.  */
+	      if (section->gc_mark == 0)
+		continue;
+
+	      /* Read in the relocs.  */
+	      internal_relocs = (xcoff_read_internal_relocs
+				 (input_bfd, section, true, NULL,
+				  false, NULL));
+	      if (internal_relocs == NULL)
+		goto error_ret;
+
+	      irel = internal_relocs;
+	      irelend = irel + section->reloc_count;
+	      for (; irel < irelend; irel++)
+		{
+		  enum xcoff_stub_type stub_type;
+		  struct xcoff_link_hash_entry *hsym = NULL;
+		  struct xcoff_link_hash_entry *hstub_csect = NULL;
+		  struct xcoff_stub_hash_entry *hstub = NULL;
+		  asection *sym_sec;
+		  bfd_vma sym_value;
+		  bfd_vma destination;
+		  char *stub_name;
+
+		  if (irel->r_symndx == -1)
+		    continue;
+
+		  switch (irel->r_type)
+		    {
+		    default:
+		      continue;
+
+		    case R_BR:
+		    case R_RBR:
+		      break;
+		    }
+
+		  /* Retrieve targeted symbol address */
+		  hsym = obj_xcoff_sym_hashes (input_bfd)[irel->r_symndx];
+		  if (hsym == NULL)
+		    {
+		      struct internal_syment sym;
+		      if ((long unsigned int)irel->r_symndx > symcount)
+			{
+			  BFD_FAIL();
+			  goto error_ret;
+			}
+
+		      bfd_coff_swap_sym_in (input_bfd,
+					    (void *) esyms + irel->r_symndx * symesz,
+					    (void *) &sym);
+
+		      sym_sec = xcoff_data (input_bfd)->csects[irel->r_symndx];
+		      sym_value = sym.n_value - sym_sec->vma;
+
+		      destination = (sym_value
+				     + sym_sec->output_section->vma
+				     + sym_sec->output_offset);
+		    }
+		  else if (hsym->root.type == bfd_link_hash_defined
+			   || hsym->root.type == bfd_link_hash_defweak)
+		    {
+		      sym_sec = hsym->root.u.def.section;
+		      sym_value = hsym->root.u.def.value;
+		      destination = (sym_value
+				     + sym_sec->output_section->vma
+				     + sym_sec->output_offset);
+		    }
+		  else
+		    {
+		      bfd_set_error (bfd_error_bad_value);
+		      goto error_ret;
+		    }
+
+		  /* I'm not sure how to handle this case. Skip it for now.  */
+		  if (bfd_is_abs_section (sym_sec))
+		    continue;
+
+		  stub_type = bfd_xcoff_type_of_stub (section, irel, destination, hsym);
+
+		  if (stub_type == xcoff_stub_none)
+		    continue;
+
+		  /* Get a stub csect in ranch.  */
+		  hstub_csect = xcoff_stub_get_csect_in_range (section, info, true);
+		  if (!hstub_csect)
+		    {
+		      /* xgettext:c-format */
+		      _bfd_error_handler (_("%pB: Unable to find a stub csect in range"
+					    "of relocation at %#" PRIx64 " targeting"
+					    "'%s'"),
+					  section->owner, (uint64_t) irel->r_vaddr,
+					  hsym->root.root.string);
+		      goto error_ret;
+		    }
+
+		  /* Get the name of this stub.  */
+		  stub_name = xcoff_stub_name (hsym, hstub_csect);
+		  if (!stub_name)
+		    goto error_ret;
+
+		  hstub = xcoff_stub_hash_lookup (&(xcoff_hash_table (info)->stub_hash_table),
+						       stub_name, false, false);
+
+		  /* A stub entry inside the in range csect already exists.  */
+		  if (hstub != NULL)
+		    {
+		      free (stub_name);
+		      continue;
+		    }
+
+		  stub_changed = true;
+
+		  hstub = xcoff_add_stub (stub_name, hstub_csect, hsym, info, stub_type);
+		  if (hstub == NULL)
+		    {
+		      /* xgettext:c-format */
+		      _bfd_error_handler (_("%pB: Cannot create stub entry '%s'"),
+					  section->owner, stub_name);
+		      free (stub_name);
+		      goto error_ret;
+		    }
+
+		  hstub->stub_type = stub_type;
+		  hstub->hcsect = hstub_csect;
+		  hstub->target_section = sym_sec;
+		  free (stub_name);
+		}
+	    }
+	}
+
+      if (!stub_changed)
+	break;
+
+      /* Update the size of the loader.  */
+      if (xcoff_hash_table (info)->loader_section
+	  && !xcoff_size_loader_section (ldinfo))
+	goto error_ret;
+
+      /* Ask the linker to do its stuff.  */
+      (*htab->params->layout_sections_again) ();
+
+    }
+  return true;
+
+ error_ret:
+  bfd_set_error (bfd_error_bad_value);
+  return false;
+}
+
+bool
+bfd_xcoff_build_stubs (struct bfd_link_info *info)
+{
+  struct xcoff_link_hash_table *htab = xcoff_hash_table (info);
+  asection *stub_sec;
+
+  for (stub_sec = htab->params->stub_bfd->sections;
+       stub_sec != NULL;
+       stub_sec = stub_sec->next)
+    {
+      bfd_size_type size;
+
+      /* Allocate memory to hold the linker stubs.  */
+      size = stub_sec->size;
+      stub_sec->contents = bfd_zalloc (htab->params->stub_bfd, size);
+      if (stub_sec->contents == NULL && size != 0)
+	return false;
+      stub_sec->alloced = 1;
+    }
+
+  /* Build the stubs as directed by the stub hash table.  */
+  bfd_hash_traverse (&htab->stub_hash_table, xcoff_build_one_stub, info);
+  return true;
+}
+
+/* Create and apply relocations made by a stub entry.  */
+static bool
+xcoff_stub_create_relocations (struct bfd_hash_entry *bh, void * inf)
+{
+  struct xcoff_stub_hash_entry *hstub
+    = (struct xcoff_stub_hash_entry *) bh;
+  struct xcoff_final_link_info *flinfo
+    = (struct xcoff_final_link_info *) inf;
+
+  bfd *output_bfd;
+  struct internal_reloc *irel;
+  struct xcoff_link_hash_entry **rel_hash;
+  struct xcoff_link_hash_entry *htarget;
+  asection *sec, *osec;
+  bfd_vma off;
+  bfd_byte *p;
+
+  htarget = hstub->htarget;
+  sec = hstub->hcsect->root.u.def.section;
+  osec = sec->output_section;
+
+  irel = (flinfo->section_info[osec->target_index].relocs
+	  + osec->reloc_count);
+  rel_hash = (flinfo->section_info[osec->target_index].rel_hashes
+	      + osec->output_section->reloc_count);
+  *rel_hash = NULL;
+  output_bfd = flinfo->output_bfd;
+
+  irel->r_symndx = htarget->indx;
+  irel->r_vaddr = (osec->vma
+		   + sec->output_offset
+		   + hstub->hcsect->root.u.def.value
+		   + hstub->stub_offset);
+
+  p = (sec->contents
+       + hstub->stub_offset);
+
+  switch (hstub->stub_type)
+    {
+    default:
+      BFD_FAIL ();
+      return false;
+
+      /* The first instruction of this stub code need
+	 a R_TOC relocation.  */
+    case xcoff_stub_indirect_call:
+    case xcoff_stub_shared_call:
+      irel->r_size = 0xf;
+      irel->r_type = R_TOC;
+
+      /* Retrieve the toc offset of the target which is
+	 a function descriptor.  */
+      BFD_ASSERT (htarget->toc_section != NULL);
+      if ((htarget->flags & XCOFF_SET_TOC) != 0)
+	off = hstub->htarget->u.toc_offset;
+      else
+	off = (htarget->toc_section->output_section->vma
+	       + htarget->toc_section->output_offset
+	       - xcoff_data (flinfo->output_bfd)->toc);
+      if ((off & 0xffff) != off)
+	{
+	  _bfd_error_handler
+	    (_("TOC overflow during stub generation; try -mminimal-toc "
+	       "when compiling"));
+	  bfd_set_error (bfd_error_file_too_big);
+	  return false;
+	}
+
+      bfd_put_16 (output_bfd, off & 0xffff, p+2);
+      break;
+    }
+
+  ++osec->reloc_count;
+  return true;
+}
+
+
 /* Return the section that defines H.  Return null if no section does.  */
 
 static asection *
@@ -4034,7 +5088,7 @@ xcoff_symbol_section (struct xcoff_link_
    symbol that IREL is against, or null if it isn't against a global symbol.
    REFERENCE_BFD is the bfd to use in error messages about the relocation.  */
 
-static bfd_boolean
+static bool
 xcoff_create_ldrel (bfd *output_bfd, struct xcoff_final_link_info *flinfo,
 		    asection *output_section, bfd *reference_bfd,
 		    struct internal_reloc *irel, asection *hsec,
@@ -4054,6 +5108,10 @@ xcoff_create_ldrel (bfd *output_bfd, str
 	ldrel.l_symndx = 1;
       else if (strcmp (secname, ".bss") == 0)
 	ldrel.l_symndx = 2;
+      else if (strcmp (secname, ".tdata") == 0)
+	ldrel.l_symndx = -1;
+      else if (strcmp (secname, ".tbss") == 0)
+	ldrel.l_symndx = -2;
       else
 	{
 	  _bfd_error_handler
@@ -4061,7 +5119,7 @@ xcoff_create_ldrel (bfd *output_bfd, str
 	    (_("%pB: loader reloc in unrecognized section `%s'"),
 	     reference_bfd, secname);
 	  bfd_set_error (bfd_error_nonrepresentable_section);
-	  return FALSE;
+	  return false;
 	}
     }
   else if (h != NULL)
@@ -4073,12 +5131,12 @@ xcoff_create_ldrel (bfd *output_bfd, str
 	    (_("%pB: `%s' in loader reloc but not loader sym"),
 	     reference_bfd, h->root.root.string);
 	  bfd_set_error (bfd_error_bad_value);
-	  return FALSE;
+	  return false;
 	}
       ldrel.l_symndx = h->ldindx;
     }
   else
-    ldrel.l_symndx = -(bfd_size_type) 1;
+    abort ();
 
   ldrel.l_rtype = (irel->r_size << 8) | irel->r_type;
   ldrel.l_rsecnm = output_section->target_index;
@@ -4090,17 +5148,17 @@ xcoff_create_ldrel (bfd *output_bfd, str
 	(_("%pB: loader reloc in read-only section %pA"),
 	 reference_bfd, output_section);
       bfd_set_error (bfd_error_invalid_operation);
-      return FALSE;
+      return false;
     }
   bfd_xcoff_swap_ldrel_out (output_bfd, &ldrel, flinfo->ldrel);
   flinfo->ldrel += bfd_xcoff_ldrelsz (output_bfd);
-  return TRUE;
+  return true;
 }
 
 /* Link an input file into the linker output file.  This function
    handles all the sections and relocations of the input file at once.  */
 
-static bfd_boolean
+static bool
 xcoff_link_input_bfd (struct xcoff_final_link_info *flinfo,
 		      bfd *input_bfd)
 {
@@ -4109,7 +5167,7 @@ xcoff_link_input_bfd (struct xcoff_final
   bfd_size_type syment_base;
   unsigned int n_tmask;
   unsigned int n_btshft;
-  bfd_boolean copy, hash;
+  bool copy, hash;
   bfd_size_type isymesz;
   bfd_size_type osymesz;
   bfd_size_type linesz;
@@ -4125,13 +5183,13 @@ xcoff_link_input_bfd (struct xcoff_final
   bfd_byte *outsym;
   unsigned int incls;
   asection *oline;
-  bfd_boolean keep_syms;
+  bool keep_syms;
   asection *o;
 
   /* We can just skip DYNAMIC files, unless this is a static link.  */
   if ((input_bfd->flags & DYNAMIC) != 0
       && ! flinfo->info->static_link)
-    return TRUE;
+    return true;
 
   /* Move all the symbols to the output file.  */
   output_bfd = flinfo->output_bfd;
@@ -4149,15 +5207,15 @@ xcoff_link_input_bfd (struct xcoff_final
 #define N_TMASK n_tmask
 #define N_BTSHFT n_btshft
 
-  copy = FALSE;
+  copy = false;
   if (! flinfo->info->keep_memory)
-    copy = TRUE;
-  hash = TRUE;
+    copy = true;
+  hash = true;
   if (flinfo->info->traditional_format)
-    hash = FALSE;
+    hash = false;
 
   if (! _bfd_coff_get_external_symbols (input_bfd))
-    return FALSE;
+    return false;
 
   /* Make one pass over the symbols and assign indices to symbols that
      we have decided to keep.  Also use create .loader symbol information
@@ -4368,10 +5426,10 @@ xcoff_link_input_bfd (struct xcoff_final
 		  name = _bfd_coff_internal_syment_name (input_bfd, &isym, NULL);
 
 		  if (name == NULL)
-		    return FALSE;
+		    return false;
 		  indx = _bfd_stringtab_add (flinfo->strtab, name, hash, copy);
 		  if (indx == (bfd_size_type) -1)
-		    return FALSE;
+		    return false;
 		  isym._n._n_n._n_offset = STRING_SIZE_SIZE + indx;
 		}
 	    }
@@ -4422,9 +5480,9 @@ xcoff_link_input_bfd (struct xcoff_final
 		      pos = obj_sym_filepos (output_bfd);
 		      pos += flinfo->last_file_index * osymesz;
 		      if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-			  || (bfd_bwrite (outsym, osymesz, output_bfd)
+			  || (bfd_write (outsym, osymesz, output_bfd)
 			      != osymesz))
-			return FALSE;
+			return false;
 		    }
 		}
 
@@ -4463,12 +5521,25 @@ xcoff_link_input_bfd (struct xcoff_final
 		   && isym.n_sclass != C_DECL
 		   && isym.n_scnum > 0)
 	    {
-	      isym.n_scnum = (*csectpp)->output_section->target_index;
+	      if (*sym_hash != NULL
+		  && ((*sym_hash)->root.type == bfd_link_hash_defined
+		      || (*sym_hash)->root.type == bfd_link_hash_defweak)
+		  && (*sym_hash)->root.u.def.section == bfd_abs_section_ptr)
+		isym.n_scnum = N_ABS;
+	      else
+		isym.n_scnum = (*csectpp)->output_section->target_index;
 	      isym.n_value += ((*csectpp)->output_section->vma
 			       + (*csectpp)->output_offset
 			       - (*csectpp)->vma);
 	    }
 
+	  /* Update visibility.  */
+	  if (*sym_hash)
+	    {
+	      isym.n_type &= ~SYM_V_MASK;
+	      isym.n_type |= (*sym_hash)->visibility;
+	    }
+
 	  /* Output the symbol.  */
 	  bfd_coff_swap_sym_out (output_bfd, (void *) &isym, (void *) outsym);
 
@@ -4488,29 +5559,29 @@ xcoff_link_input_bfd (struct xcoff_final
 		  /* This is the file name (or some comment put in by
 		     the compiler).  If it is long, we must put it in
 		     the string table.  */
-		  if (aux.x_file.x_n.x_zeroes == 0
-		      && aux.x_file.x_n.x_offset != 0)
+		  if (aux.x_file.x_n.x_n.x_zeroes == 0
+		      && aux.x_file.x_n.x_n.x_offset != 0)
 		    {
 		      const char *filename;
 		      bfd_size_type indx;
 
-		      BFD_ASSERT (aux.x_file.x_n.x_offset
+		      BFD_ASSERT (aux.x_file.x_n.x_n.x_offset
 				  >= STRING_SIZE_SIZE);
 		      if (strings == NULL)
 			{
 			  strings = _bfd_coff_read_string_table (input_bfd);
 			  if (strings == NULL)
-			    return FALSE;
+			    return false;
 			}
-		      if ((bfd_size_type) aux.x_file.x_n.x_offset >= obj_coff_strings_len (input_bfd))
+		      if ((bfd_size_type) aux.x_file.x_n.x_n.x_offset >= obj_coff_strings_len (input_bfd))
 			filename = _("<corrupt>");
 		      else
-			filename = strings + aux.x_file.x_n.x_offset;
+			filename = strings + aux.x_file.x_n.x_n.x_offset;
 		      indx = _bfd_stringtab_add (flinfo->strtab, filename,
 						 hash, copy);
 		      if (indx == (bfd_size_type) -1)
-			return FALSE;
-		      aux.x_file.x_n.x_offset = STRING_SIZE_SIZE + indx;
+			return false;
+		      aux.x_file.x_n.x_n.x_offset = STRING_SIZE_SIZE + indx;
 		    }
 		}
 	      else if (CSECT_SYM_P (isymp->n_sclass)
@@ -4529,7 +5600,7 @@ xcoff_link_input_bfd (struct xcoff_final
 		    {
 		      unsigned long indx;
 
-		      indx = aux.x_csect.x_scnlen.l;
+		      indx = aux.x_csect.x_scnlen.u64;
 		      if (indx < obj_raw_syment_count (input_bfd))
 			{
 			  long symindx;
@@ -4537,11 +5608,11 @@ xcoff_link_input_bfd (struct xcoff_final
 			  symindx = flinfo->sym_indices[indx];
 			  if (symindx < 0)
 			    {
-			      aux.x_csect.x_scnlen.l = 0;
+			      aux.x_csect.x_scnlen.u64 = 0;
 			    }
 			  else
 			    {
-			      aux.x_csect.x_scnlen.l = symindx;
+			      aux.x_csect.x_scnlen.u64 = symindx;
 			    }
 			}
 		    }
@@ -4555,7 +5626,7 @@ xcoff_link_input_bfd (struct xcoff_final
 		      || isymp->n_sclass == C_BLOCK
 		      || isymp->n_sclass == C_FCN)
 		    {
-		      indx = aux.x_sym.x_fcnary.x_fcn.x_endndx.l;
+		      indx = aux.x_sym.x_fcnary.x_fcn.x_endndx.u32;
 		      if (indx > 0
 			  && indx < obj_raw_syment_count (input_bfd))
 			{
@@ -4570,21 +5641,21 @@ xcoff_link_input_bfd (struct xcoff_final
 			    indx = output_index;
 			  else
 			    indx = flinfo->sym_indices[indx];
-			  aux.x_sym.x_fcnary.x_fcn.x_endndx.l = indx;
+			  aux.x_sym.x_fcnary.x_fcn.x_endndx.u32 = indx;
 
 			}
 		    }
 
-		  indx = aux.x_sym.x_tagndx.l;
+		  indx = aux.x_sym.x_tagndx.u32;
 		  if (indx > 0 && indx < obj_raw_syment_count (input_bfd))
 		    {
 		      long symindx;
 
 		      symindx = flinfo->sym_indices[indx];
 		      if (symindx < 0)
-			aux.x_sym.x_tagndx.l = 0;
+			aux.x_sym.x_tagndx.u32 = 0;
 		      else
-			aux.x_sym.x_tagndx.l = symindx;
+			aux.x_sym.x_tagndx.u32 = symindx;
 		    }
 
 		}
@@ -4622,9 +5693,9 @@ xcoff_link_input_bfd (struct xcoff_final
 			  pos = enclosing->line_filepos;
 			  amt = linesz * enc_count;
 			  if (bfd_seek (input_bfd, pos, SEEK_SET) != 0
-			      || (bfd_bread (flinfo->linenos, amt, input_bfd)
+			      || (bfd_read (flinfo->linenos, amt, input_bfd)
 				  != amt))
-			    return FALSE;
+			    return false;
 			  oline = enclosing;
 			}
 
@@ -4654,9 +5725,9 @@ xcoff_link_input_bfd (struct xcoff_final
 			     + o->output_section->lineno_count * linesz);
 		      amt = linesz * *lineno_counts;
 		      if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-			  || bfd_bwrite (flinfo->linenos + linoff,
-					 amt, output_bfd) != amt)
-			return FALSE;
+			  || bfd_write (flinfo->linenos + linoff, amt,
+					output_bfd) != amt)
+			return false;
 		      o->output_section->lineno_count += *lineno_counts;
 
 		      /* Record the offset of the symbol's line numbers
@@ -4745,8 +5816,8 @@ xcoff_link_input_bfd (struct xcoff_final
       file_ptr pos = obj_sym_filepos (output_bfd) + syment_base * osymesz;
       bfd_size_type amt = outsym - flinfo->outsyms;
       if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-	  || bfd_bwrite (flinfo->outsyms, amt, output_bfd) != amt)
-	return FALSE;
+	  || bfd_write (flinfo->outsyms, amt, output_bfd) != amt)
+	return false;
 
       BFD_ASSERT ((obj_raw_syment_count (output_bfd)
 		   + (outsym - flinfo->outsyms) / osymesz)
@@ -4757,7 +5828,7 @@ xcoff_link_input_bfd (struct xcoff_final
 
   /* Don't let the linker relocation routines discard the symbols.  */
   keep_syms = obj_coff_keep_syms (input_bfd);
-  obj_coff_keep_syms (input_bfd) = TRUE;
+  obj_coff_keep_syms (input_bfd) = true;
 
   /* Relocate the contents of each section.  */
   for (o = input_bfd->sections; o != NULL; o = o->next)
@@ -4782,7 +5853,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;
 	}
 
@@ -4799,12 +5870,12 @@ xcoff_link_input_bfd (struct xcoff_final
 	  /* Read in the relocs.  */
 	  target_index = o->output_section->target_index;
 	  internal_relocs = (xcoff_read_internal_relocs
-			     (input_bfd, o, FALSE, flinfo->external_relocs,
-			      TRUE,
+			     (input_bfd, o, false, flinfo->external_relocs,
+			      true,
 			      (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 +5885,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;
@@ -4829,8 +5900,6 @@ xcoff_link_input_bfd (struct xcoff_final
 
 	      /* Adjust the reloc address and symbol index.  */
 
-	      irel->r_vaddr += offset;
-
 	      r_symndx = irel->r_symndx;
 
 	      if (r_symndx == -1)
@@ -4838,8 +5907,48 @@ xcoff_link_input_bfd (struct xcoff_final
 	      else
 		h = obj_xcoff_sym_hashes (input_bfd)[r_symndx];
 
+	      /* In case of a R_BR or R_RBR, change the target if
+		 a stub is being called.  */
+	      if (h != NULL
+		  && (irel->r_type == R_BR
+		      || irel->r_type == R_RBR))
+		{
+		  asection *sym_sec;
+		  bfd_vma dest;
+		  struct xcoff_stub_hash_entry *hstub = NULL;
+		  enum xcoff_stub_type stub_type;
+
+		  if (h->root.type == bfd_link_hash_defined
+		      || h->root.type == bfd_link_hash_defweak)
+		    {
+		      sym_sec = h->root.u.def.section;
+		      dest = (h->root.u.def.value
+			      + sym_sec->output_section->vma
+			      + sym_sec->output_offset);
+		    }
+		  else
+		    {
+		      BFD_FAIL ();
+		      goto err_out;
+		    }
+
+		  stub_type = bfd_xcoff_type_of_stub (o, irel, dest, h);
+		  if (stub_type != xcoff_stub_none)
+		    {
+		      hstub = bfd_xcoff_get_stub_entry (o, h, flinfo->info);
+		      if (hstub == NULL)
+			goto err_out;
+
+		      h = hstub->hcsect;
+		    }
+
+		}
+
+	      irel->r_vaddr += offset;
+
 	      if (r_symndx != -1 && flinfo->info->strip != strip_all)
 		{
+
 		  if (h != NULL
 		      && h->smclas != XMC_TD
 		      && (irel->r_type == R_TOC
@@ -4861,12 +5970,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 +6057,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,
@@ -4959,7 +6068,7 @@ xcoff_link_input_bfd (struct xcoff_final
 		}
 
 	      if ((o->flags & SEC_DEBUGGING) == 0
-		  && xcoff_need_ldrel_p (flinfo->info, irel, h))
+		  && xcoff_need_ldrel_p (flinfo->info, irel, h, o))
 		{
 		  asection *sec;
 
@@ -4972,7 +6081,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 +6092,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;
@@ -4991,10 +6100,14 @@ xcoff_link_input_bfd (struct xcoff_final
   if (! flinfo->info->keep_memory)
     {
       if (! _bfd_coff_free_symbols (input_bfd))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
+
+ err_out:
+  obj_coff_keep_syms (input_bfd) = keep_syms;
+  return false;
 }
 
 #undef N_TMASK
@@ -5018,7 +6131,7 @@ xcoff_sort_relocs (const void * p1, cons
 
 /* Return true if section SEC is a TOC section.  */
 
-static inline bfd_boolean
+static inline bool
 xcoff_toc_section_p (asection *sec)
 {
   const char *name;
@@ -5029,21 +6142,21 @@ xcoff_toc_section_p (asection *sec)
       if (name[2] == 'c')
 	{
 	  if (name[3] == '0' && name[4] == 0)
-	    return TRUE;
+	    return true;
 	  if (name[3] == 0)
-	    return TRUE;
+	    return true;
 	}
       if (name[2] == 'd' && name[3] == 0)
-	return TRUE;
+	return true;
     }
-  return FALSE;
+  return false;
 }
 
 /* See if the link requires a TOC (it usually does!).  If so, find a
    good place to put the TOC anchor csect, and write out the associated
    symbol.  */
 
-static bfd_boolean
+static bool
 xcoff_find_tc0 (bfd *output_bfd, struct xcoff_final_link_info *flinfo)
 {
   bfd_vma toc_start, toc_end, start, end, best_address;
@@ -5064,7 +6177,7 @@ xcoff_find_tc0 (bfd *output_bfd, struct
        input_bfd != NULL;
        input_bfd = input_bfd->link.next)
     for (sec = input_bfd->sections; sec != NULL; sec = sec->next)
-      if ((sec->flags & SEC_MARK) != 0 && xcoff_toc_section_p (sec))
+      if (sec->gc_mark != 0 && xcoff_toc_section_p (sec))
 	{
 	  start = sec->output_section->vma + sec->output_offset;
 	  if (toc_start > start)
@@ -5082,7 +6195,7 @@ xcoff_find_tc0 (bfd *output_bfd, struct
   if (toc_end < toc_start)
     {
       xcoff_data (output_bfd)->toc = toc_start;
-      return TRUE;
+      return true;
     }
 
   if (toc_end - toc_start < 0x8000)
@@ -5096,7 +6209,7 @@ xcoff_find_tc0 (bfd *output_bfd, struct
 	   input_bfd != NULL;
 	   input_bfd = input_bfd->link.next)
 	for (sec = input_bfd->sections; sec != NULL; sec = sec->next)
-	  if ((sec->flags & SEC_MARK) != 0 && xcoff_toc_section_p (sec))
+	  if (sec->gc_mark != 0 && xcoff_toc_section_p (sec))
 	    {
 	      start = sec->output_section->vma + sec->output_offset;
 	      if (start < best_address
@@ -5115,7 +6228,7 @@ xcoff_find_tc0 (bfd *output_bfd, struct
 	       "when compiling"),
 	     (uint64_t) (toc_end - toc_start));
 	  bfd_set_error (bfd_error_file_too_big);
-	  return FALSE;
+	  return false;
 	}
     }
 
@@ -5127,7 +6240,7 @@ xcoff_find_tc0 (bfd *output_bfd, struct
   /* Fill out the TC0 symbol.  */
   if (!bfd_xcoff_put_symbol_name (output_bfd, flinfo->info, flinfo->strtab,
 				  &irsym, "TOC"))
-    return FALSE;
+    return false;
   irsym.n_value = best_address;
   irsym.n_scnum = section_index;
   irsym.n_sclass = C_HIDEXT;
@@ -5135,11 +6248,11 @@ xcoff_find_tc0 (bfd *output_bfd, struct
   irsym.n_numaux = 1;
   bfd_coff_swap_sym_out (output_bfd, &irsym, flinfo->outsyms);
 
-  /* Fill out the auxillary csect information.  */
+  /* Fill out the auxiliary csect information.  */
   memset (&iraux, 0, sizeof iraux);
   iraux.x_csect.x_smtyp = XTY_SD;
   iraux.x_csect.x_smclas = XMC_TC0;
-  iraux.x_csect.x_scnlen.l = 0;
+  iraux.x_csect.x_scnlen.u64 = 0;
   bfd_coff_swap_aux_out (output_bfd, &iraux, T_NULL, C_HIDEXT, 0, 1,
 			 flinfo->outsyms + bfd_coff_symesz (output_bfd));
 
@@ -5148,16 +6261,16 @@ xcoff_find_tc0 (bfd *output_bfd, struct
   pos += obj_raw_syment_count (output_bfd) * bfd_coff_symesz (output_bfd);
   size = 2 * bfd_coff_symesz (output_bfd);
   if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-      || bfd_bwrite (flinfo->outsyms, size, output_bfd) != size)
-    return FALSE;
+      || bfd_write (flinfo->outsyms, size, output_bfd) != size)
+    return false;
   obj_raw_syment_count (output_bfd) += 2;
 
-  return TRUE;
+  return true;
 }
 
 /* Write out a non-XCOFF global symbol.  */
 
-static bfd_boolean
+static bool
 xcoff_write_global_symbol (struct bfd_hash_entry *bh, void * inf)
 {
   struct xcoff_link_hash_entry *h = (struct xcoff_link_hash_entry *) bh;
@@ -5166,7 +6279,7 @@ xcoff_write_global_symbol (struct bfd_ha
   bfd_byte *outsym;
   struct internal_syment isym;
   union internal_auxent aux;
-  bfd_boolean result;
+  bool result;
   file_ptr pos;
   bfd_size_type amt;
 
@@ -5177,13 +6290,13 @@ xcoff_write_global_symbol (struct bfd_ha
     {
       h = (struct xcoff_link_hash_entry *) h->root.u.i.link;
       if (h->root.type == bfd_link_hash_new)
-	return TRUE;
+	return true;
     }
 
   /* If this symbol was garbage collected, just skip it.  */
   if (xcoff_hash_table (flinfo->info)->gc
       && (h->flags & XCOFF_MARK) == 0)
-    return TRUE;
+    return true;
 
   /* If we need a .loader section entry, write it out.  */
   if (h->ldsym != NULL)
@@ -5350,14 +6463,12 @@ xcoff_write_global_symbol (struct bfd_ha
 	  irel->r_symndx = obj_raw_syment_count (output_bfd);
 	}
 
-      BFD_ASSERT (h->ldindx >= 0);
-
       /* Initialize the aux union here instead of closer to when it is
 	 written out below because the length of the csect depends on
 	 whether the output is 32 or 64 bit.  */
       memset (&iraux, 0, sizeof iraux);
       iraux.x_csect.x_smtyp = XTY_SD;
-      /* iraux.x_csect.x_scnlen.l = 4 or 8, see below.  */
+      /* iraux.x_csect.x_scnlen.u64 = 4 or 8, see below.  */
       iraux.x_csect.x_smclas = XMC_TC;
 
       /* 32 bit uses a 32 bit R_POS to do the relocations
@@ -5369,23 +6480,57 @@ xcoff_write_global_symbol (struct bfd_ha
       if (bfd_xcoff_is_xcoff64 (output_bfd))
 	{
 	  irel->r_size = 63;
-	  iraux.x_csect.x_scnlen.l = 8;
+	  iraux.x_csect.x_scnlen.u64 = 8;
 	}
       else if (bfd_xcoff_is_xcoff32 (output_bfd))
 	{
 	  irel->r_size = 31;
-	  iraux.x_csect.x_scnlen.l = 4;
+	  iraux.x_csect.x_scnlen.u64 = 4;
 	}
       else
-	return FALSE;
+	return false;
 
       irel->r_type = R_POS;
       flinfo->section_info[oindx].rel_hashes[osec->reloc_count] = NULL;
       ++osec->reloc_count;
 
-      if (!xcoff_create_ldrel (output_bfd, flinfo, osec,
-			       output_bfd, irel, NULL, h))
-	return FALSE;
+      /* There are two kind of linker-created TOC entry.
+	 The ones importing their symbols from outside, made for the
+	 global linkage.  These symbols have XCOFF_LDREL set and only
+	 requires a loader relocation on their imported symbol.
+	 On the other hand, symbols without XCOFF_LDREL are TOC entries
+	 of internal symbols (like function descriptors made for stubs).
+	 These symbols needs a loader relocation over .data and this
+	 relocation must be applied.  */
+
+      if ((h->flags & XCOFF_LDREL) != 0
+	  && h->ldindx >= 0)
+	{
+	  if (!xcoff_create_ldrel (output_bfd, flinfo, osec,
+				   output_bfd, irel, NULL, h))
+	    return false;
+	}
+      else
+	{
+	  bfd_byte *p;
+	  bfd_vma val;
+
+	  p = tocsec->contents + h->u.toc_offset;
+	  val = (h->root.u.def.value
+		 + h->root.u.def.section->output_section->vma
+		 + h->root.u.def.section->output_offset);
+
+	  if (bfd_xcoff_is_xcoff64 (output_bfd))
+	    bfd_put_64 (output_bfd, val, p);
+	  else if (bfd_xcoff_is_xcoff32 (output_bfd))
+	    bfd_put_32 (output_bfd, val, p);
+	  else
+	    return false;
+
+	  if (!xcoff_create_ldrel (output_bfd, flinfo, osec,
+				   output_bfd, irel, h->root.u.def.section, h))
+	    return false;
+	}
 
       /* We need to emit a symbol to define a csect which holds
 	 the reloc.  */
@@ -5395,7 +6540,7 @@ xcoff_write_global_symbol (struct bfd_ha
 					      flinfo->strtab,
 					      &irsym, h->root.root.string);
 	  if (!result)
-	    return FALSE;
+	    return false;
 
 	  irsym.n_value = irel->r_vaddr;
 	  irsym.n_scnum = osec->target_index;
@@ -5420,8 +6565,8 @@ xcoff_write_global_symbol (struct bfd_ha
 		      * bfd_coff_symesz (output_bfd));
 	      amt = outsym - flinfo->outsyms;
 	      if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-		  || bfd_bwrite (flinfo->outsyms, amt, output_bfd) != amt)
-		return FALSE;
+		  || bfd_write (flinfo->outsyms, amt, output_bfd) != amt)
+		return false;
 	      obj_raw_syment_count (output_bfd) +=
 		(outsym - flinfo->outsyms) / bfd_coff_symesz (output_bfd);
 
@@ -5466,7 +6611,7 @@ xcoff_write_global_symbol (struct bfd_ha
 	  byte_size = 4;
 	}
       else
-	return FALSE;
+	return false;
 
       sec = h->root.u.def.section;
       osec = sec->output_section;
@@ -5491,7 +6636,7 @@ xcoff_write_global_symbol (struct bfd_ha
 
       if (!xcoff_create_ldrel (output_bfd, flinfo, osec,
 			       output_bfd, irel, esec, NULL))
-	return FALSE;
+	return false;
 
       /* There are three items to write out,
 	 the address of the code
@@ -5536,30 +6681,30 @@ xcoff_write_global_symbol (struct bfd_ha
 
       if (!xcoff_create_ldrel (output_bfd, flinfo, osec,
 			       output_bfd, irel, tsec, NULL))
-	return FALSE;
+	return false;
     }
 
   if (h->indx >= 0 || flinfo->info->strip == strip_all)
     {
       BFD_ASSERT (outsym == flinfo->outsyms);
-      return TRUE;
+      return true;
     }
 
   if (h->indx != -2
       && (flinfo->info->strip == strip_all
 	  || (flinfo->info->strip == strip_some
 	      && bfd_hash_lookup (flinfo->info->keep_hash, h->root.root.string,
-				  FALSE, FALSE) == NULL)))
+				  false, false) == NULL)))
     {
       BFD_ASSERT (outsym == flinfo->outsyms);
-      return TRUE;
+      return true;
     }
 
   if (h->indx != -2
       && (h->flags & (XCOFF_REF_REGULAR | XCOFF_DEF_REGULAR)) == 0)
     {
       BFD_ASSERT (outsym == flinfo->outsyms);
-      return TRUE;
+      return true;
     }
 
   memset (&aux, 0, sizeof aux);
@@ -5569,7 +6714,7 @@ xcoff_write_global_symbol (struct bfd_ha
   result = bfd_xcoff_put_symbol_name (output_bfd, flinfo->info, flinfo->strtab,
 				      &isym, h->root.root.string);
   if (!result)
-    return FALSE;
+    return false;
 
   if (h->root.type == bfd_link_hash_undefined
       || h->root.type == bfd_link_hash_undefweak)
@@ -5612,7 +6757,12 @@ xcoff_write_global_symbol (struct bfd_ha
       isym.n_sclass = C_HIDEXT;
       aux.x_csect.x_smtyp = XTY_SD;
 
-      if ((h->flags & XCOFF_HAS_SIZE) != 0)
+      /* For stub symbols, the section already has its correct size.  */
+      if (h->root.u.def.section->owner == xcoff_hash_table (flinfo->info)->params->stub_bfd)
+	{
+	  aux.x_csect.x_scnlen.u64 = h->root.u.def.section->size;
+	}
+      else if ((h->flags & XCOFF_HAS_SIZE) != 0)
 	{
 	  for (l = xcoff_hash_table (flinfo->info)->size_list;
 	       l != NULL;
@@ -5620,7 +6770,7 @@ xcoff_write_global_symbol (struct bfd_ha
 	    {
 	      if (l->h == h)
 		{
-		  aux.x_csect.x_scnlen.l = l->size;
+		  aux.x_csect.x_scnlen.u64 = l->size;
 		  break;
 		}
 	    }
@@ -5633,7 +6783,7 @@ xcoff_write_global_symbol (struct bfd_ha
       isym.n_scnum = h->root.u.c.p->section->output_section->target_index;
       isym.n_sclass = C_EXT;
       aux.x_csect.x_smtyp = XTY_CM;
-      aux.x_csect.x_scnlen.l = h->root.u.c.size;
+      aux.x_csect.x_scnlen.u64 = h->root.u.c.size;
     }
   else
     abort ();
@@ -5665,7 +6815,7 @@ xcoff_write_global_symbol (struct bfd_ha
       outsym += bfd_coff_symesz (output_bfd);
 
       aux.x_csect.x_smtyp = XTY_LD;
-      aux.x_csect.x_scnlen.l = obj_raw_syment_count (output_bfd);
+      aux.x_csect.x_scnlen.u64 = obj_raw_syment_count (output_bfd);
       bfd_coff_swap_aux_out (output_bfd, (void *) &aux, T_NULL, C_EXT, 0, 1,
 			     (void *) outsym);
       outsym += bfd_coff_auxesz (output_bfd);
@@ -5675,17 +6825,17 @@ xcoff_write_global_symbol (struct bfd_ha
   pos += obj_raw_syment_count (output_bfd) * bfd_coff_symesz (output_bfd);
   amt = outsym - flinfo->outsyms;
   if (bfd_seek (output_bfd, pos, SEEK_SET) != 0
-      || bfd_bwrite (flinfo->outsyms, amt, output_bfd) != amt)
-    return FALSE;
+      || bfd_write (flinfo->outsyms, amt, output_bfd) != amt)
+    return false;
   obj_raw_syment_count (output_bfd) +=
     (outsym - flinfo->outsyms) / bfd_coff_symesz (output_bfd);
 
-  return TRUE;
+  return true;
 }
 
 /* Handle a link order which is supposed to generate a reloc.  */
 
-static bfd_boolean
+static bool
 xcoff_reloc_link_order (bfd *output_bfd,
 			struct xcoff_final_link_info *flinfo,
 			asection *output_section,
@@ -5710,18 +6860,18 @@ xcoff_reloc_link_order (bfd *output_bfd,
   if (howto == NULL)
     {
       bfd_set_error (bfd_error_bad_value);
-      return FALSE;
+      return false;
     }
 
   h = ((struct xcoff_link_hash_entry *)
        bfd_wrapped_link_hash_lookup (output_bfd, flinfo->info,
 				     link_order->u.reloc.p->u.name,
-				     FALSE, FALSE, TRUE));
+				     false, false, true));
   if (h == NULL)
     {
       (*flinfo->info->callbacks->unattached_reloc)
 	(flinfo->info, link_order->u.reloc.p->u.name, NULL, NULL, (bfd_vma) 0);
-      return TRUE;
+      return true;
     }
 
   hsec = xcoff_symbol_section (h);
@@ -5742,12 +6892,12 @@ xcoff_reloc_link_order (bfd *output_bfd,
       bfd_size_type size;
       bfd_byte *buf;
       bfd_reloc_status_type rstat;
-      bfd_boolean ok;
+      bool ok;
 
       size = bfd_get_reloc_size (howto);
       buf = bfd_zmalloc (size);
       if (buf == NULL && size != 0)
-	return FALSE;
+	return false;
 
       rstat = _bfd_relocate_contents (howto, output_bfd, addend, buf);
       switch (rstat)
@@ -5767,7 +6917,7 @@ xcoff_reloc_link_order (bfd *output_bfd,
 				     (file_ptr) link_order->offset, size);
       free (buf);
       if (! ok)
-	return FALSE;
+	return false;
     }
 
   /* Store the reloc information in the right place.  It will get
@@ -5804,15 +6954,15 @@ xcoff_reloc_link_order (bfd *output_bfd,
     {
       if (!xcoff_create_ldrel (output_bfd, flinfo, output_section,
 			       output_bfd, irel, hsec, h))
-	return FALSE;
+	return false;
     }
 
-  return TRUE;
+  return true;
 }
 
 /* Do the final link step.  */
 
-bfd_boolean
+bool
 _bfd_xcoff_bfd_final_link (bfd *abfd, struct bfd_link_info *info)
 {
   bfd_size_type symesz;
@@ -5894,7 +7044,7 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 		 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;
+	      sec->linker_mark = true;
 
 	      o->reloc_count += sec->reloc_count;
 
@@ -5933,23 +7083,23 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
       file_align = xcoff_hash_table (info)->file_align;
       if (file_align != 0)
 	{
-	  bfd_boolean saw_contents;
+	  bool saw_contents;
 	  int indx;
 	  file_ptr sofar;
 
 	  /* Insert .pad sections before every section which has
 	     contents and is loaded, if it is preceded by some other
 	     section which has contents and is loaded.  */
-	  saw_contents = TRUE;
+	  saw_contents = true;
 	  for (o = abfd->sections; o != NULL; o = o->next)
 	    {
 	      if (strcmp (o->name, ".pad") == 0)
-		saw_contents = FALSE;
+		saw_contents = false;
 	      else if ((o->flags & SEC_HAS_CONTENTS) != 0
 		       && (o->flags & SEC_LOAD) != 0)
 		{
 		  if (! saw_contents)
-		    saw_contents = TRUE;
+		    saw_contents = true;
 		  else
 		    {
 		      asection *n;
@@ -5964,13 +7114,15 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 
 		      bfd_section_list_remove (abfd, n);
 		      bfd_section_list_insert_before (abfd, o, n);
-		      saw_contents = FALSE;
+		      saw_contents = false;
 		    }
 		}
 	    }
 
 	  /* Reset the section indices after inserting the new
 	     sections.  */
+	  if (xcoff_data (abfd)->coff.section_by_target_index)
+	    htab_empty (xcoff_data (abfd)->coff.section_by_target_index);
 	  indx = 0;
 	  for (o = abfd->sections; o != NULL; o = o->next)
 	    {
@@ -6125,7 +7277,7 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
     {
       bfd_size_type sz;
 
-      sub->output_has_begun = FALSE;
+      sub->output_has_begun = false;
       sz = obj_raw_syment_count (sub);
       if (sz > max_sym_count)
 	max_sym_count = sz;
@@ -6179,9 +7331,21 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 	      sub = p->u.indirect.section->owner;
 	      if (! sub->output_has_begun)
 		{
-		  if (! xcoff_link_input_bfd (&flinfo, sub))
-		    goto error_return;
-		  sub->output_has_begun = TRUE;
+		  if (sub == xcoff_hash_table (info)->params->stub_bfd)
+		    {
+		      continue;
+		    }
+		  else
+		    {
+		      if (! xcoff_link_input_bfd (&flinfo, sub))
+			{
+			  _bfd_error_handler
+			    (_("Unable to link input file: %s"), sub->filename);
+			  bfd_set_error (bfd_error_sorry);
+			  goto error_return;
+			}
+		    }
+		  sub->output_has_begun = true;
 		}
 	    }
 	  else if (p->type == bfd_section_reloc_link_order
@@ -6199,31 +7363,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.  */
@@ -6234,7 +7383,7 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 			     (void *) flinfo.outsyms);
       pos = obj_sym_filepos (abfd) + flinfo.last_file_index * symesz;
       if (bfd_seek (abfd, pos, SEEK_SET) != 0
-	  || bfd_bwrite (flinfo.outsyms, symesz, abfd) != symesz)
+	  || bfd_write (flinfo.outsyms, symesz, abfd) != symesz)
 	goto error_return;
     }
 
@@ -6242,11 +7391,14 @@ _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;
-    }
+  /* Write out the relocations created by stub entries. The symbols
+     will have been already written by xcoff_write_global_symbol.  */
+  bfd_hash_traverse (&xcoff_hash_table(info)->stub_hash_table,
+		     xcoff_stub_create_relocations,
+		     &flinfo);
+
+  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
@@ -6324,15 +7476,12 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 
       rel_size = relsz * o->reloc_count;
       if (bfd_seek (abfd, o->rel_filepos, SEEK_SET) != 0
-	  || bfd_bwrite ((void *) external_relocs, rel_size, abfd) != rel_size)
+	  || bfd_write (external_relocs, rel_size, abfd) != rel_size)
 	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,18 +7490,31 @@ _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;
     }
 
+  /* Write out the stub sections.  */
+  for (o = xcoff_hash_table (info)->params->stub_bfd->sections;
+       o != NULL; o = o->next)
+    {
+      if ((o->flags & SEC_HAS_CONTENTS) == 0
+	  || o->size == 0)
+	continue;
+
+      if (!bfd_set_section_contents (abfd, o->output_section, o->contents,
+				     (file_ptr) o->output_offset, o->size))
+	goto error_return;
+    }
+
   /* 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 +7526,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))
@@ -6390,7 +7558,7 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
 	    _bfd_stringtab_size (flinfo.strtab) + STRING_SIZE_SIZE,
 	    strbuf);
   amt = STRING_SIZE_SIZE;
-  if (bfd_bwrite (strbuf, amt, abfd) != amt)
+  if (bfd_write (strbuf, amt, abfd) != amt)
     goto error_return;
   if (! _bfd_stringtab_emit (abfd, flinfo.strtab))
     goto error_return;
@@ -6399,7 +7567,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;
 
@@ -6417,7 +7587,7 @@ _bfd_xcoff_bfd_final_link (bfd *abfd, st
      not try to write out the symbols.  */
   abfd->symcount = 0;
 
-  return TRUE;
+  return true;
 
  error_return:
   if (flinfo.strtab != NULL)
@@ -6429,27 +7599,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);
-  return FALSE;
+  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.20200303/bfd/xcofflink.h ./bfd/xcofflink.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/xcofflink.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/xcofflink.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* POWER/PowerPC XCOFF linker support.
-   Copyright (C) 2019 Free Software Foundation, Inc.
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -18,24 +18,43 @@
    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
    MA 02110-1301, USA.  */
 
-extern bfd_boolean bfd_xcoff_split_import_path
+/* Used to pass info between ld and bfd.  */
+struct bfd_xcoff_link_params
+{
+  /* Linker stub bfd.  */
+  bfd *stub_bfd;
+
+  /* Linker call-backs.  */
+  asection * (*add_stub_section) (const char *, asection *);
+  void (*layout_sections_again) (void);
+};
+
+extern bool bfd_xcoff_split_import_path
   (bfd *, const char *, const char **, const char **);
-extern bfd_boolean bfd_xcoff_set_archive_import_path
+extern bool bfd_xcoff_set_archive_import_path
   (struct bfd_link_info *, bfd *, const char *);
-extern bfd_boolean bfd_xcoff_link_record_set
+extern bool bfd_xcoff_link_record_set
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
-extern bfd_boolean bfd_xcoff_import_symbol
+extern bool bfd_xcoff_import_symbol
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
    const char *, const char *, const char *, unsigned int);
-extern bfd_boolean bfd_xcoff_export_symbol
+extern bool bfd_xcoff_export_symbol
   (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
-extern bfd_boolean bfd_xcoff_link_count_reloc
+extern bool bfd_xcoff_link_count_reloc
   (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_xcoff_record_link_assignment
+extern bool bfd_xcoff_record_link_assignment
   (bfd *, struct bfd_link_info *, const char *);
-extern bfd_boolean bfd_xcoff_size_dynamic_sections
+extern bool bfd_xcoff_size_dynamic_sections
   (bfd *, struct bfd_link_info *, const char *, const char *,
-   unsigned long, unsigned long, unsigned long, bfd_boolean,
-   int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
-extern bfd_boolean bfd_xcoff_link_generate_rtinit
-  (bfd *, const char *, const char *, bfd_boolean);
+   unsigned long, unsigned long, unsigned long, bool,
+   int, bool, unsigned int, struct bfd_section **, bool);
+extern bool bfd_xcoff_build_dynamic_sections
+  (bfd *, struct bfd_link_info *);
+extern bool bfd_xcoff_link_generate_rtinit
+  (bfd *, const char *, const char *, bool);
+extern bool bfd_xcoff_link_init
+  (struct bfd_link_info *, struct bfd_xcoff_link_params *);
+extern bool bfd_xcoff_size_stubs
+  (struct bfd_link_info *info);
+extern bool bfd_xcoff_build_stubs
+  (struct bfd_link_info *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.20200303/bfd/xsym.c ./bfd/xsym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/xsym.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/xsym.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* xSYM symbol-file support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -21,7 +21,6 @@
 /* xSYM is the debugging format used by CodeWarrior on Mac OS classic.  */
 
 #include "sysdep.h"
-#include "alloca-conf.h"
 #include "xsym.h"
 #include "bfd.h"
 #include "libbfd.h"
@@ -33,6 +32,7 @@
 #define bfd_sym_bfd_is_target_special_symbol	    _bfd_bool_bfd_asymbol_false
 #define bfd_sym_get_lineno			    _bfd_nosymbols_get_lineno
 #define bfd_sym_find_nearest_line		    _bfd_nosymbols_find_nearest_line
+#define bfd_sym_find_nearest_line_with_alt	    _bfd_nosymbols_find_nearest_line_with_alt
 #define bfd_sym_find_line			    _bfd_nosymbols_find_line
 #define bfd_sym_find_inliner_info		    _bfd_nosymbols_find_inliner_info
 #define bfd_sym_get_symbol_version_string	    _bfd_nosymbols_get_symbol_version_string
@@ -61,7 +61,6 @@
   _bfd_generic_copy_link_hash_symbol_type
 #define bfd_sym_bfd_final_link			    _bfd_generic_final_link
 #define bfd_sym_bfd_link_split_section		    _bfd_generic_link_split_section
-#define bfd_sym_get_section_contents_in_window	    _bfd_generic_get_section_contents_in_window
 #define bfd_sym_bfd_link_check_relocs		    _bfd_generic_link_check_relocs
 
 extern const bfd_target sym_vec;
@@ -100,7 +99,7 @@ compute_offset (unsigned long first_page
   return (page_number * page_size) + page_offset;
 }
 
-bfd_boolean
+bool
 bfd_sym_mkobject (bfd *abfd ATTRIBUTE_UNUSED)
 {
   return 1;
@@ -115,7 +114,7 @@ bfd_sym_print_symbol (bfd *abfd ATTRIBUT
   return;
 }
 
-bfd_boolean
+bool
 bfd_sym_valid (bfd *abfd)
 {
   if (abfd == NULL || abfd->xvec == NULL)
@@ -127,24 +126,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 NULL;
+  return _bfd_alloc_and_read (abfd, table_size, table_size);
 }
 
 void
@@ -207,7 +194,7 @@ bfd_sym_read_header_v32 (bfd *abfd, bfd_
   unsigned char buf[154];
   long ret;
 
-  ret = bfd_bread (buf, 154, abfd);
+  ret = bfd_read (buf, 154, abfd);
   if (ret != 154)
     return -1;
 
@@ -248,7 +235,7 @@ bfd_sym_read_version (bfd *abfd, bfd_sym
   char version_string[32];
   long ret;
 
-  ret = bfd_bread (version_string, sizeof (version_string), abfd);
+  ret = bfd_read (version_string, sizeof (version_string), abfd);
   if (ret != sizeof (version_string))
     return -1;
 
@@ -577,7 +564,7 @@ bfd_sym_fetch_resources_table_entry (bfd
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -628,7 +615,7 @@ bfd_sym_fetch_modules_table_entry (bfd *
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -678,7 +665,7 @@ bfd_sym_fetch_file_references_table_entr
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -728,7 +715,7 @@ bfd_sym_fetch_contained_modules_table_en
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -778,7 +765,7 @@ bfd_sym_fetch_contained_variables_table_
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -828,7 +815,7 @@ bfd_sym_fetch_contained_statements_table
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -878,7 +865,7 @@ bfd_sym_fetch_contained_labels_table_ent
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -928,7 +915,7 @@ bfd_sym_fetch_contained_types_table_entr
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -978,7 +965,7 @@ bfd_sym_fetch_file_references_index_tabl
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -1028,7 +1015,7 @@ bfd_sym_fetch_constant_pool_entry (bfd *
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -1075,7 +1062,7 @@ bfd_sym_fetch_type_table_entry (bfd *abf
 
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
-  if (bfd_bread (buf, entry_size, abfd) != entry_size)
+  if (bfd_read (buf, entry_size, abfd) != entry_size)
     return -1;
 
   (*parser) (buf, entry_size, entry);
@@ -1098,17 +1085,17 @@ bfd_sym_fetch_type_information_table_ent
   if (bfd_seek (abfd, offset, SEEK_SET) < 0)
     return -1;
 
-  if (bfd_bread (buf, 4, abfd) != 4)
+  if (bfd_read (buf, 4, abfd) != 4)
     return -1;
   entry->nte_index = bfd_getb32 (buf);
 
-  if (bfd_bread (buf, 2, abfd) != 2)
+  if (bfd_read (buf, 2, abfd) != 2)
     return -1;
   entry->physical_size = bfd_getb16 (buf);
 
   if (entry->physical_size & 0x8000)
     {
-      if (bfd_bread (buf, 4, abfd) != 4)
+      if (bfd_read (buf, 4, abfd) != 4)
 	return -1;
       entry->physical_size &= 0x7fff;
       entry->logical_size = bfd_getb32 (buf);
@@ -1116,7 +1103,7 @@ bfd_sym_fetch_type_information_table_ent
     }
   else
     {
-      if (bfd_bread (buf, 2, abfd) != 2)
+      if (bfd_read (buf, 2, abfd) != 2)
 	return -1;
       entry->physical_size &= 0x7fff;
       entry->logical_size = bfd_getb16 (buf);
@@ -1808,22 +1795,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;
     }
 
@@ -2230,8 +2206,8 @@ bfd_sym_scan (bfd *abfd, bfd_sym_version
   mdata->sbfd = abfd;
   mdata->version = version;
 
-  bfd_seek (abfd, 0, SEEK_SET);
-  if (bfd_sym_read_header (abfd, &mdata->header, mdata->version) != 0)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_sym_read_header (abfd, &mdata->header, mdata->version) != 0)
     return -1;
 
   mdata->name_table = bfd_sym_read_name_table (abfd, &mdata->header);
@@ -2248,19 +2224,17 @@ bfd_sym_scan (bfd *abfd, bfd_sym_version
   bfdsec->filepos = 0;
   bfdsec->alignment_power = 0;
 
-  abfd->tdata.sym_data = mdata;
-
   return 0;
 }
 
-const bfd_target *
+bfd_cleanup
 bfd_sym_object_p (bfd *abfd)
 {
   bfd_sym_version version = -1;
-  bfd_sym_data_struct *mdata;
+  bfd_sym_data_struct *mdata = NULL;
 
-  bfd_seek (abfd, 0, SEEK_SET);
-  if (bfd_sym_read_version (abfd, &version) != 0)
+  if (bfd_seek (abfd, 0, SEEK_SET) != 0
+      || bfd_sym_read_version (abfd, &version) != 0)
     goto wrong;
 
   mdata = (bfd_sym_data_struct *) bfd_alloc (abfd, sizeof (*mdata));
@@ -2270,12 +2244,15 @@ bfd_sym_object_p (bfd *abfd)
   if (bfd_sym_scan (abfd, version, mdata) != 0)
     goto wrong;
 
-  return abfd->xvec;
+  abfd->tdata.sym_data = mdata;
+  return _bfd_no_cleanup;
 
  wrong:
   bfd_set_error (bfd_error_wrong_format);
 
  fail:
+  if (mdata)
+    bfd_release (abfd, mdata);
   return NULL;
 }
 
@@ -2321,6 +2298,7 @@ const bfd_target sym_vec =
   ' ',				/* AR_pad_char.  */
   16,				/* AR_max_namelen.  */
   0,				/* match priority.  */
+  TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols.  */
   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.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/xsym.h ./bfd/xsym.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/xsym.h	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/xsym.h	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* xSYM symbol-file support for BFD.
-   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -546,11 +546,11 @@ struct bfd_sym_data_struct
 };
 typedef struct bfd_sym_data_struct bfd_sym_data_struct;
 
-extern bfd_boolean bfd_sym_mkobject
+extern bool bfd_sym_mkobject
   (bfd *);
 extern void bfd_sym_print_symbol
   (bfd *, void *, asymbol *, bfd_print_symbol_type);
-extern bfd_boolean bfd_sym_valid
+extern bool bfd_sym_valid
   (bfd *);
 extern unsigned char * bfd_sym_read_name_table
   (bfd *, bfd_sym_header_block *);
@@ -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.20200303/bfd/xtensa-dynconfig.c ./bfd/xtensa-dynconfig.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/xtensa-dynconfig.c	1970-01-01 00:00:00.000000000 +0000
+++ ./bfd/xtensa-dynconfig.c	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,147 @@
+/* Xtensa configuration settings loader.
+   Copyright (C) 2022-2025 Free Software Foundation, Inc.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   GCC is free software; you can redistribute 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.
+
+   GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+   WARRANTY; without even the implied warranty of MERCHANTABILITY or
+   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+   for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with GCC; see the file COPYING3.  If not see
+   <http://www.gnu.org/licenses/>.  */
+
+#include "sysdep.h"
+#include "bfd.h"
+#include "libbfd.h"
+
+#define XTENSA_CONFIG_DEFINITION
+#include "xtensa-config.h"
+#include "xtensa-dynconfig.h"
+
+#if defined (HAVE_DLFCN_H)
+#include <dlfcn.h>
+#elif defined (HAVE_WINDOWS_H)
+#include <windows.h>
+#endif
+
+#if !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H)
+
+#define RTLD_LAZY 0      /* Dummy value.  */
+
+static void *
+dlopen (const char *file, int mode ATTRIBUTE_UNUSED)
+{
+  return LoadLibrary (file);
+}
+
+static void *
+dlsym (void *handle, const char *name)
+{
+  return (void *) GetProcAddress ((HMODULE) handle, name);
+}
+
+static int ATTRIBUTE_UNUSED
+dlclose (void *handle)
+{
+  FreeLibrary ((HMODULE) handle);
+  return 0;
+}
+
+static const char *
+dlerror (void)
+{
+  return _("Unable to load DLL.");
+}
+
+#endif /* !defined (HAVE_DLFCN_H) && defined (HAVE_WINDOWS_H)  */
+
+#define CONFIG_ENV_NAME "XTENSA_GNU_CONFIG"
+
+const void *xtensa_load_config (const char *name ATTRIBUTE_UNUSED,
+				const void *no_plugin_def,
+				const void *no_name_def ATTRIBUTE_UNUSED)
+{
+  static int init;
+  if (bfd_plugin_enabled ())
+    {
+      static void *handle;
+      void *p;
+
+      if (!init)
+	{
+	  const char *path = getenv (CONFIG_ENV_NAME);
+
+	  init = 1;
+	  if (!path)
+	    return no_plugin_def;
+	  handle = dlopen (path, RTLD_LAZY);
+	  if (!handle)
+	    {
+	      _bfd_error_handler (_("%s is defined but could not be loaded: %s"),
+				  CONFIG_ENV_NAME, dlerror ());
+	      abort ();
+	    }
+	}
+      else if (!handle)
+	{
+	  return no_plugin_def;
+	}
+
+      p = dlsym (handle, name);
+      if (!p)
+	{
+	  if (no_name_def)
+	    return no_name_def;
+
+	  _bfd_error_handler (_("%s is loaded but symbol \"%s\" is not found: %s"),
+			      CONFIG_ENV_NAME, name, dlerror ());
+	  abort ();
+	}
+      return p;
+    }
+  else if (!init)
+    {
+      const char *path = getenv (CONFIG_ENV_NAME);
+
+      init = 1;
+      if (path)
+	{
+	  _bfd_error_handler (_("%s is defined but plugin support is disabled"),
+			      CONFIG_ENV_NAME);
+	  abort ();
+	}
+    }
+  return no_plugin_def;
+}
+
+XTENSA_CONFIG_INSTANCE_LIST;
+
+const struct xtensa_config_v1 *xtensa_get_config_v1 (void)
+{
+  static const struct xtensa_config_v1 *config;
+
+  if (!config)
+    config = (const struct xtensa_config_v1 *) xtensa_load_config ("xtensa_config_v1",
+								   &xtensa_config_v1,
+								   NULL);
+  return config;
+}
+
+const struct xtensa_config_v2 *xtensa_get_config_v2 (void)
+{
+  static const struct xtensa_config_v2 *config;
+  static const struct xtensa_config_v2 def;
+
+  if (!config)
+    config = (const struct xtensa_config_v2 *) xtensa_load_config ("xtensa_config_v2",
+								   &xtensa_config_v2,
+								   &def);
+  return 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.20200303/bfd/xtensa-isa.c ./bfd/xtensa-isa.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/xtensa-isa.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/xtensa-isa.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Configurable Xtensa ISA support.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -23,9 +23,10 @@
 #include "libbfd.h"
 #include "xtensa-isa.h"
 #include "xtensa-isa-internal.h"
+#include "xtensa-dynconfig.h"
 
-xtensa_isa_status xtisa_errno;
-char xtisa_error_msg[1024];
+static xtensa_isa_status xtisa_errno;
+static char xtisa_error_msg[1024];
 
 
 xtensa_isa_status
@@ -223,20 +224,30 @@ 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;
     }
 }
 
-
 
 /* ISA information.  */
 
 extern xtensa_isa_internal xtensa_modules;
 
+static xtensa_isa_internal *xtensa_get_modules (void)
+{
+  static xtensa_isa_internal *modules;
+
+  if (!modules)
+    modules = (xtensa_isa_internal *) xtensa_load_config ("xtensa_modules",
+							  &xtensa_modules,
+							  NULL);
+  return modules;
+}
+
 xtensa_isa
 xtensa_isa_init (xtensa_isa_status *errno_p, char **error_msg_p)
 {
-  xtensa_isa_internal *isa = &xtensa_modules;
+  xtensa_isa_internal *isa = xtensa_get_modules ();
   int n, is_user;
 
   /* Set up the opcode name lookup table.  */
@@ -340,43 +351,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.20200303/bfd/xtensa-modules.c ./bfd/xtensa-modules.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/bfd/xtensa-modules.c	2020-03-03 02:08:51.000000000 +0000
+++ ./bfd/xtensa-modules.c	2026-03-05 02:07:20.000000000 +0000
@@ -1,5 +1,5 @@
 /* Xtensa configuration-specific ISA information.
-   Copyright (C) 2003-2019 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of BFD, the Binary File Descriptor library.
 
@@ -12852,2123 +12852,2123 @@ Opcode_bbs_w18_Slot_xt_flix64_slot3_enco
   slotbuf[1] = 0;
 }
 
-xtensa_opcode_encode_fn Opcode_excw_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_excw_encode_fns[] = {
   Opcode_excw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rfe_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rfe_encode_fns[] = {
   Opcode_rfe_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rfde_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rfde_encode_fns[] = {
   Opcode_rfde_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_syscall_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_syscall_encode_fns[] = {
   Opcode_syscall_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_simcall_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_simcall_encode_fns[] = {
   Opcode_simcall_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_call12_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_call12_encode_fns[] = {
   Opcode_call12_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_call8_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_call8_encode_fns[] = {
   Opcode_call8_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_call4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_call4_encode_fns[] = {
   Opcode_call4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_callx12_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_callx12_encode_fns[] = {
   Opcode_callx12_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_callx8_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_callx8_encode_fns[] = {
   Opcode_callx8_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_callx4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_callx4_encode_fns[] = {
   Opcode_callx4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_entry_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_entry_encode_fns[] = {
   Opcode_entry_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movsp_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movsp_encode_fns[] = {
   Opcode_movsp_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rotw_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rotw_encode_fns[] = {
   Opcode_rotw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_retw_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_retw_encode_fns[] = {
   Opcode_retw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_retw_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_retw_n_encode_fns[] = {
   0, 0, Opcode_retw_n_Slot_inst16b_encode, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rfwo_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rfwo_encode_fns[] = {
   Opcode_rfwo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rfwu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rfwu_encode_fns[] = {
   Opcode_rfwu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_l32e_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_l32e_encode_fns[] = {
   Opcode_l32e_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_s32e_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_s32e_encode_fns[] = {
   Opcode_s32e_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_windowbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_windowbase_encode_fns[] = {
   Opcode_rsr_windowbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_windowbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_windowbase_encode_fns[] = {
   Opcode_wsr_windowbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_windowbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_windowbase_encode_fns[] = {
   Opcode_xsr_windowbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_windowstart_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_windowstart_encode_fns[] = {
   Opcode_rsr_windowstart_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_windowstart_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_windowstart_encode_fns[] = {
   Opcode_wsr_windowstart_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_windowstart_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_windowstart_encode_fns[] = {
   Opcode_xsr_windowstart_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_add_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_add_n_encode_fns[] = {
   0, Opcode_add_n_Slot_inst16a_encode, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_addi_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_addi_n_encode_fns[] = {
   0, Opcode_addi_n_Slot_inst16a_encode, 0, 0, 0, 0, Opcode_addi_n_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_beqz_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_beqz_n_encode_fns[] = {
   0, 0, Opcode_beqz_n_Slot_inst16b_encode, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bnez_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnez_n_encode_fns[] = {
   0, 0, Opcode_bnez_n_Slot_inst16b_encode, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ill_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ill_n_encode_fns[] = {
   0, 0, Opcode_ill_n_Slot_inst16b_encode, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_l32i_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_l32i_n_encode_fns[] = {
   0, Opcode_l32i_n_Slot_inst16a_encode, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mov_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mov_n_encode_fns[] = {
   0, 0, Opcode_mov_n_Slot_inst16b_encode, Opcode_mov_n_Slot_xt_flix64_slot0_encode, Opcode_mov_n_Slot_xt_flix64_slot0_encode, Opcode_mov_n_Slot_xt_flix64_slot1_encode, Opcode_mov_n_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movi_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movi_n_encode_fns[] = {
   0, 0, Opcode_movi_n_Slot_inst16b_encode, 0, 0, 0, Opcode_movi_n_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_nop_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_nop_n_encode_fns[] = {
   0, 0, Opcode_nop_n_Slot_inst16b_encode, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ret_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ret_n_encode_fns[] = {
   0, 0, Opcode_ret_n_Slot_inst16b_encode, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_s32i_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_s32i_n_encode_fns[] = {
   0, Opcode_s32i_n_Slot_inst16a_encode, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rur_threadptr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rur_threadptr_encode_fns[] = {
   Opcode_rur_threadptr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wur_threadptr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wur_threadptr_encode_fns[] = {
   Opcode_wur_threadptr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_addi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_addi_encode_fns[] = {
   Opcode_addi_Slot_inst_encode, 0, 0, Opcode_addi_Slot_xt_flix64_slot0_encode, Opcode_addi_Slot_xt_flix64_slot0_encode, Opcode_addi_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_addmi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_addmi_encode_fns[] = {
   Opcode_addmi_Slot_inst_encode, 0, 0, Opcode_addmi_Slot_xt_flix64_slot0_encode, Opcode_addmi_Slot_xt_flix64_slot0_encode, Opcode_addmi_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_add_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_add_encode_fns[] = {
   Opcode_add_Slot_inst_encode, 0, 0, Opcode_add_Slot_xt_flix64_slot0_encode, Opcode_add_Slot_xt_flix64_slot0_encode, Opcode_add_Slot_xt_flix64_slot1_encode, Opcode_add_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_sub_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_sub_encode_fns[] = {
   Opcode_sub_Slot_inst_encode, 0, 0, Opcode_sub_Slot_xt_flix64_slot0_encode, Opcode_sub_Slot_xt_flix64_slot0_encode, Opcode_sub_Slot_xt_flix64_slot1_encode, Opcode_sub_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_addx2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_addx2_encode_fns[] = {
   Opcode_addx2_Slot_inst_encode, 0, 0, Opcode_addx2_Slot_xt_flix64_slot0_encode, Opcode_addx2_Slot_xt_flix64_slot0_encode, Opcode_addx2_Slot_xt_flix64_slot1_encode, Opcode_addx2_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_addx4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_addx4_encode_fns[] = {
   Opcode_addx4_Slot_inst_encode, 0, 0, Opcode_addx4_Slot_xt_flix64_slot0_encode, Opcode_addx4_Slot_xt_flix64_slot0_encode, Opcode_addx4_Slot_xt_flix64_slot1_encode, Opcode_addx4_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_addx8_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_addx8_encode_fns[] = {
   Opcode_addx8_Slot_inst_encode, 0, 0, Opcode_addx8_Slot_xt_flix64_slot0_encode, Opcode_addx8_Slot_xt_flix64_slot0_encode, Opcode_addx8_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_subx2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_subx2_encode_fns[] = {
   Opcode_subx2_Slot_inst_encode, 0, 0, Opcode_subx2_Slot_xt_flix64_slot0_encode, Opcode_subx2_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_subx4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_subx4_encode_fns[] = {
   Opcode_subx4_Slot_inst_encode, 0, 0, Opcode_subx4_Slot_xt_flix64_slot0_encode, Opcode_subx4_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_subx8_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_subx8_encode_fns[] = {
   Opcode_subx8_Slot_inst_encode, 0, 0, Opcode_subx8_Slot_xt_flix64_slot0_encode, Opcode_subx8_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_and_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_and_encode_fns[] = {
   Opcode_and_Slot_inst_encode, 0, 0, Opcode_and_Slot_xt_flix64_slot0_encode, Opcode_and_Slot_xt_flix64_slot0_encode, Opcode_and_Slot_xt_flix64_slot1_encode, Opcode_and_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_or_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_or_encode_fns[] = {
   Opcode_or_Slot_inst_encode, 0, 0, Opcode_or_Slot_xt_flix64_slot0_encode, Opcode_or_Slot_xt_flix64_slot0_encode, Opcode_or_Slot_xt_flix64_slot1_encode, Opcode_or_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xor_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xor_encode_fns[] = {
   Opcode_xor_Slot_inst_encode, 0, 0, Opcode_xor_Slot_xt_flix64_slot0_encode, Opcode_xor_Slot_xt_flix64_slot0_encode, Opcode_xor_Slot_xt_flix64_slot1_encode, Opcode_xor_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_beqi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_beqi_encode_fns[] = {
   Opcode_beqi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bnei_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnei_encode_fns[] = {
   Opcode_bnei_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bgei_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bgei_encode_fns[] = {
   Opcode_bgei_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_blti_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_blti_encode_fns[] = {
   Opcode_blti_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bbci_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bbci_encode_fns[] = {
   Opcode_bbci_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bbsi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bbsi_encode_fns[] = {
   Opcode_bbsi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bgeui_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bgeui_encode_fns[] = {
   Opcode_bgeui_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bltui_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bltui_encode_fns[] = {
   Opcode_bltui_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_beq_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_beq_encode_fns[] = {
   Opcode_beq_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bne_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bne_encode_fns[] = {
   Opcode_bne_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bge_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bge_encode_fns[] = {
   Opcode_bge_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_blt_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_blt_encode_fns[] = {
   Opcode_blt_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bgeu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bgeu_encode_fns[] = {
   Opcode_bgeu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bltu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bltu_encode_fns[] = {
   Opcode_bltu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bany_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bany_encode_fns[] = {
   Opcode_bany_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bnone_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnone_encode_fns[] = {
   Opcode_bnone_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ball_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ball_encode_fns[] = {
   Opcode_ball_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bnall_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnall_encode_fns[] = {
   Opcode_bnall_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bbc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bbc_encode_fns[] = {
   Opcode_bbc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bbs_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bbs_encode_fns[] = {
   Opcode_bbs_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_beqz_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_beqz_encode_fns[] = {
   Opcode_beqz_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bnez_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnez_encode_fns[] = {
   Opcode_bnez_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bgez_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bgez_encode_fns[] = {
   Opcode_bgez_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bltz_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bltz_encode_fns[] = {
   Opcode_bltz_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_call0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_call0_encode_fns[] = {
   Opcode_call0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_callx0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_callx0_encode_fns[] = {
   Opcode_callx0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_extui_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_extui_encode_fns[] = {
   Opcode_extui_Slot_inst_encode, 0, 0, Opcode_extui_Slot_xt_flix64_slot0_encode, Opcode_extui_Slot_xt_flix64_slot0_encode, Opcode_extui_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ill_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ill_encode_fns[] = {
   Opcode_ill_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_j_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_j_encode_fns[] = {
   Opcode_j_Slot_inst_encode, 0, 0, 0, 0, Opcode_j_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_jx_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_jx_encode_fns[] = {
   Opcode_jx_Slot_inst_encode, 0, 0, 0, 0, Opcode_jx_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_l16ui_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_l16ui_encode_fns[] = {
   Opcode_l16ui_Slot_inst_encode, 0, 0, Opcode_l16ui_Slot_xt_flix64_slot0_encode, Opcode_l16ui_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_l16si_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_l16si_encode_fns[] = {
   Opcode_l16si_Slot_inst_encode, 0, 0, Opcode_l16si_Slot_xt_flix64_slot0_encode, Opcode_l16si_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_l32i_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_l32i_encode_fns[] = {
   Opcode_l32i_Slot_inst_encode, 0, 0, Opcode_l32i_Slot_xt_flix64_slot0_encode, Opcode_l32i_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_l32r_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_l32r_encode_fns[] = {
   Opcode_l32r_Slot_inst_encode, 0, 0, Opcode_l32r_Slot_xt_flix64_slot0_encode, Opcode_l32r_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_l8ui_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_l8ui_encode_fns[] = {
   Opcode_l8ui_Slot_inst_encode, 0, 0, Opcode_l8ui_Slot_xt_flix64_slot0_encode, Opcode_l8ui_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_loop_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_loop_encode_fns[] = {
   Opcode_loop_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_loopnez_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_loopnez_encode_fns[] = {
   Opcode_loopnez_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_loopgtz_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_loopgtz_encode_fns[] = {
   Opcode_loopgtz_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movi_encode_fns[] = {
   Opcode_movi_Slot_inst_encode, 0, 0, Opcode_movi_Slot_xt_flix64_slot0_encode, Opcode_movi_Slot_xt_flix64_slot0_encode, Opcode_movi_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_moveqz_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_moveqz_encode_fns[] = {
   Opcode_moveqz_Slot_inst_encode, 0, 0, Opcode_moveqz_Slot_xt_flix64_slot0_encode, Opcode_moveqz_Slot_xt_flix64_slot0_encode, Opcode_moveqz_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movnez_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movnez_encode_fns[] = {
   Opcode_movnez_Slot_inst_encode, 0, 0, Opcode_movnez_Slot_xt_flix64_slot0_encode, Opcode_movnez_Slot_xt_flix64_slot0_encode, Opcode_movnez_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movltz_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movltz_encode_fns[] = {
   Opcode_movltz_Slot_inst_encode, 0, 0, Opcode_movltz_Slot_xt_flix64_slot0_encode, Opcode_movltz_Slot_xt_flix64_slot0_encode, Opcode_movltz_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movgez_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movgez_encode_fns[] = {
   Opcode_movgez_Slot_inst_encode, 0, 0, Opcode_movgez_Slot_xt_flix64_slot0_encode, Opcode_movgez_Slot_xt_flix64_slot0_encode, Opcode_movgez_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_neg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_neg_encode_fns[] = {
   Opcode_neg_Slot_inst_encode, 0, 0, Opcode_neg_Slot_xt_flix64_slot0_encode, Opcode_neg_Slot_xt_flix64_slot0_encode, Opcode_neg_Slot_xt_flix64_slot1_encode, Opcode_neg_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_abs_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_abs_encode_fns[] = {
   Opcode_abs_Slot_inst_encode, 0, 0, Opcode_abs_Slot_xt_flix64_slot0_encode, Opcode_abs_Slot_xt_flix64_slot0_encode, 0, Opcode_abs_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_nop_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_nop_encode_fns[] = {
   Opcode_nop_Slot_inst_encode, 0, 0, Opcode_nop_Slot_xt_flix64_slot0_encode, Opcode_nop_Slot_xt_flix64_slot0_encode, Opcode_nop_Slot_xt_flix64_slot1_encode, Opcode_nop_Slot_xt_flix64_slot2_encode, Opcode_nop_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_ret_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ret_encode_fns[] = {
   Opcode_ret_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_s16i_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_s16i_encode_fns[] = {
   Opcode_s16i_Slot_inst_encode, 0, 0, Opcode_s16i_Slot_xt_flix64_slot0_encode, Opcode_s16i_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_s32i_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_s32i_encode_fns[] = {
   Opcode_s32i_Slot_inst_encode, 0, 0, Opcode_s32i_Slot_xt_flix64_slot0_encode, Opcode_s32i_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_s8i_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_s8i_encode_fns[] = {
   Opcode_s8i_Slot_inst_encode, 0, 0, Opcode_s8i_Slot_xt_flix64_slot0_encode, Opcode_s8i_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssr_encode_fns[] = {
   Opcode_ssr_Slot_inst_encode, 0, 0, Opcode_ssr_Slot_xt_flix64_slot0_encode, Opcode_ssr_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssl_encode_fns[] = {
   Opcode_ssl_Slot_inst_encode, 0, 0, Opcode_ssl_Slot_xt_flix64_slot0_encode, Opcode_ssl_Slot_xt_flix64_slot0_encode, Opcode_ssl_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssa8l_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssa8l_encode_fns[] = {
   Opcode_ssa8l_Slot_inst_encode, 0, 0, Opcode_ssa8l_Slot_xt_flix64_slot0_encode, Opcode_ssa8l_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssa8b_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssa8b_encode_fns[] = {
   Opcode_ssa8b_Slot_inst_encode, 0, 0, Opcode_ssa8b_Slot_xt_flix64_slot0_encode, Opcode_ssa8b_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssai_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssai_encode_fns[] = {
   Opcode_ssai_Slot_inst_encode, 0, 0, Opcode_ssai_Slot_xt_flix64_slot0_encode, Opcode_ssai_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_sll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_sll_encode_fns[] = {
   Opcode_sll_Slot_inst_encode, 0, 0, Opcode_sll_Slot_xt_flix64_slot0_encode, Opcode_sll_Slot_xt_flix64_slot0_encode, Opcode_sll_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_src_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_src_encode_fns[] = {
   Opcode_src_Slot_inst_encode, 0, 0, Opcode_src_Slot_xt_flix64_slot0_encode, Opcode_src_Slot_xt_flix64_slot0_encode, Opcode_src_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_srl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_srl_encode_fns[] = {
   Opcode_srl_Slot_inst_encode, 0, 0, Opcode_srl_Slot_xt_flix64_slot0_encode, Opcode_srl_Slot_xt_flix64_slot0_encode, Opcode_srl_Slot_xt_flix64_slot1_encode, Opcode_srl_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_sra_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_sra_encode_fns[] = {
   Opcode_sra_Slot_inst_encode, 0, 0, Opcode_sra_Slot_xt_flix64_slot0_encode, Opcode_sra_Slot_xt_flix64_slot0_encode, Opcode_sra_Slot_xt_flix64_slot1_encode, Opcode_sra_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_slli_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_slli_encode_fns[] = {
   Opcode_slli_Slot_inst_encode, 0, 0, Opcode_slli_Slot_xt_flix64_slot0_encode, Opcode_slli_Slot_xt_flix64_slot0_encode, Opcode_slli_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_srai_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_srai_encode_fns[] = {
   Opcode_srai_Slot_inst_encode, 0, 0, Opcode_srai_Slot_xt_flix64_slot0_encode, Opcode_srai_Slot_xt_flix64_slot0_encode, Opcode_srai_Slot_xt_flix64_slot1_encode, Opcode_srai_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_srli_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_srli_encode_fns[] = {
   Opcode_srli_Slot_inst_encode, 0, 0, Opcode_srli_Slot_xt_flix64_slot0_encode, Opcode_srli_Slot_xt_flix64_slot0_encode, Opcode_srli_Slot_xt_flix64_slot1_encode, Opcode_srli_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_memw_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_memw_encode_fns[] = {
   Opcode_memw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_extw_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_extw_encode_fns[] = {
   Opcode_extw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_isync_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_isync_encode_fns[] = {
   Opcode_isync_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsync_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsync_encode_fns[] = {
   Opcode_rsync_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_esync_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_esync_encode_fns[] = {
   Opcode_esync_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dsync_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dsync_encode_fns[] = {
   Opcode_dsync_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsil_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsil_encode_fns[] = {
   Opcode_rsil_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_lend_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_lend_encode_fns[] = {
   Opcode_rsr_lend_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_lend_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_lend_encode_fns[] = {
   Opcode_wsr_lend_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_lend_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_lend_encode_fns[] = {
   Opcode_xsr_lend_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_lcount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_lcount_encode_fns[] = {
   Opcode_rsr_lcount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_lcount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_lcount_encode_fns[] = {
   Opcode_wsr_lcount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_lcount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_lcount_encode_fns[] = {
   Opcode_xsr_lcount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_lbeg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_lbeg_encode_fns[] = {
   Opcode_rsr_lbeg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_lbeg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_lbeg_encode_fns[] = {
   Opcode_wsr_lbeg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_lbeg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_lbeg_encode_fns[] = {
   Opcode_xsr_lbeg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_sar_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_sar_encode_fns[] = {
   Opcode_rsr_sar_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_sar_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_sar_encode_fns[] = {
   Opcode_wsr_sar_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_sar_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_sar_encode_fns[] = {
   Opcode_xsr_sar_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_litbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_litbase_encode_fns[] = {
   Opcode_rsr_litbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_litbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_litbase_encode_fns[] = {
   Opcode_wsr_litbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_litbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_litbase_encode_fns[] = {
   Opcode_xsr_litbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_176_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_176_encode_fns[] = {
   Opcode_rsr_176_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_208_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_208_encode_fns[] = {
   Opcode_rsr_208_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ps_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ps_encode_fns[] = {
   Opcode_rsr_ps_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ps_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ps_encode_fns[] = {
   Opcode_wsr_ps_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ps_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ps_encode_fns[] = {
   Opcode_xsr_ps_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_epc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_epc1_encode_fns[] = {
   Opcode_rsr_epc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_epc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_epc1_encode_fns[] = {
   Opcode_wsr_epc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_epc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_epc1_encode_fns[] = {
   Opcode_xsr_epc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_excsave1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_excsave1_encode_fns[] = {
   Opcode_rsr_excsave1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_excsave1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_excsave1_encode_fns[] = {
   Opcode_wsr_excsave1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_excsave1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_excsave1_encode_fns[] = {
   Opcode_xsr_excsave1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_epc2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_epc2_encode_fns[] = {
   Opcode_rsr_epc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_epc2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_epc2_encode_fns[] = {
   Opcode_wsr_epc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_epc2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_epc2_encode_fns[] = {
   Opcode_xsr_epc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_excsave2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_excsave2_encode_fns[] = {
   Opcode_rsr_excsave2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_excsave2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_excsave2_encode_fns[] = {
   Opcode_wsr_excsave2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_excsave2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_excsave2_encode_fns[] = {
   Opcode_xsr_excsave2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_epc3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_epc3_encode_fns[] = {
   Opcode_rsr_epc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_epc3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_epc3_encode_fns[] = {
   Opcode_wsr_epc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_epc3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_epc3_encode_fns[] = {
   Opcode_xsr_epc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_excsave3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_excsave3_encode_fns[] = {
   Opcode_rsr_excsave3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_excsave3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_excsave3_encode_fns[] = {
   Opcode_wsr_excsave3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_excsave3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_excsave3_encode_fns[] = {
   Opcode_xsr_excsave3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_epc4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_epc4_encode_fns[] = {
   Opcode_rsr_epc4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_epc4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_epc4_encode_fns[] = {
   Opcode_wsr_epc4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_epc4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_epc4_encode_fns[] = {
   Opcode_xsr_epc4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_excsave4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_excsave4_encode_fns[] = {
   Opcode_rsr_excsave4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_excsave4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_excsave4_encode_fns[] = {
   Opcode_wsr_excsave4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_excsave4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_excsave4_encode_fns[] = {
   Opcode_xsr_excsave4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_epc5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_epc5_encode_fns[] = {
   Opcode_rsr_epc5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_epc5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_epc5_encode_fns[] = {
   Opcode_wsr_epc5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_epc5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_epc5_encode_fns[] = {
   Opcode_xsr_epc5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_excsave5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_excsave5_encode_fns[] = {
   Opcode_rsr_excsave5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_excsave5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_excsave5_encode_fns[] = {
   Opcode_wsr_excsave5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_excsave5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_excsave5_encode_fns[] = {
   Opcode_xsr_excsave5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_epc6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_epc6_encode_fns[] = {
   Opcode_rsr_epc6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_epc6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_epc6_encode_fns[] = {
   Opcode_wsr_epc6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_epc6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_epc6_encode_fns[] = {
   Opcode_xsr_epc6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_excsave6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_excsave6_encode_fns[] = {
   Opcode_rsr_excsave6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_excsave6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_excsave6_encode_fns[] = {
   Opcode_wsr_excsave6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_excsave6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_excsave6_encode_fns[] = {
   Opcode_xsr_excsave6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_epc7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_epc7_encode_fns[] = {
   Opcode_rsr_epc7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_epc7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_epc7_encode_fns[] = {
   Opcode_wsr_epc7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_epc7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_epc7_encode_fns[] = {
   Opcode_xsr_epc7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_excsave7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_excsave7_encode_fns[] = {
   Opcode_rsr_excsave7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_excsave7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_excsave7_encode_fns[] = {
   Opcode_wsr_excsave7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_excsave7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_excsave7_encode_fns[] = {
   Opcode_xsr_excsave7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_eps2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_eps2_encode_fns[] = {
   Opcode_rsr_eps2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_eps2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_eps2_encode_fns[] = {
   Opcode_wsr_eps2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_eps2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_eps2_encode_fns[] = {
   Opcode_xsr_eps2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_eps3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_eps3_encode_fns[] = {
   Opcode_rsr_eps3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_eps3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_eps3_encode_fns[] = {
   Opcode_wsr_eps3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_eps3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_eps3_encode_fns[] = {
   Opcode_xsr_eps3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_eps4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_eps4_encode_fns[] = {
   Opcode_rsr_eps4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_eps4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_eps4_encode_fns[] = {
   Opcode_wsr_eps4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_eps4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_eps4_encode_fns[] = {
   Opcode_xsr_eps4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_eps5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_eps5_encode_fns[] = {
   Opcode_rsr_eps5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_eps5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_eps5_encode_fns[] = {
   Opcode_wsr_eps5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_eps5_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_eps5_encode_fns[] = {
   Opcode_xsr_eps5_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_eps6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_eps6_encode_fns[] = {
   Opcode_rsr_eps6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_eps6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_eps6_encode_fns[] = {
   Opcode_wsr_eps6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_eps6_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_eps6_encode_fns[] = {
   Opcode_xsr_eps6_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_eps7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_eps7_encode_fns[] = {
   Opcode_rsr_eps7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_eps7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_eps7_encode_fns[] = {
   Opcode_wsr_eps7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_eps7_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_eps7_encode_fns[] = {
   Opcode_xsr_eps7_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_excvaddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_excvaddr_encode_fns[] = {
   Opcode_rsr_excvaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_excvaddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_excvaddr_encode_fns[] = {
   Opcode_wsr_excvaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_excvaddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_excvaddr_encode_fns[] = {
   Opcode_xsr_excvaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_depc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_depc_encode_fns[] = {
   Opcode_rsr_depc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_depc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_depc_encode_fns[] = {
   Opcode_wsr_depc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_depc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_depc_encode_fns[] = {
   Opcode_xsr_depc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_exccause_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_exccause_encode_fns[] = {
   Opcode_rsr_exccause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_exccause_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_exccause_encode_fns[] = {
   Opcode_wsr_exccause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_exccause_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_exccause_encode_fns[] = {
   Opcode_xsr_exccause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_misc0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_misc0_encode_fns[] = {
   Opcode_rsr_misc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_misc0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_misc0_encode_fns[] = {
   Opcode_wsr_misc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_misc0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_misc0_encode_fns[] = {
   Opcode_xsr_misc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_misc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_misc1_encode_fns[] = {
   Opcode_rsr_misc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_misc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_misc1_encode_fns[] = {
   Opcode_wsr_misc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_misc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_misc1_encode_fns[] = {
   Opcode_xsr_misc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_misc2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_misc2_encode_fns[] = {
   Opcode_rsr_misc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_misc2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_misc2_encode_fns[] = {
   Opcode_wsr_misc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_misc2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_misc2_encode_fns[] = {
   Opcode_xsr_misc2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_misc3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_misc3_encode_fns[] = {
   Opcode_rsr_misc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_misc3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_misc3_encode_fns[] = {
   Opcode_wsr_misc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_misc3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_misc3_encode_fns[] = {
   Opcode_xsr_misc3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_prid_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_prid_encode_fns[] = {
   Opcode_rsr_prid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_vecbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_vecbase_encode_fns[] = {
   Opcode_rsr_vecbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_vecbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_vecbase_encode_fns[] = {
   Opcode_wsr_vecbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_vecbase_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_vecbase_encode_fns[] = {
   Opcode_xsr_vecbase_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_aa_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_aa_ll_encode_fns[] = {
   Opcode_mul_aa_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_aa_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_aa_hl_encode_fns[] = {
   Opcode_mul_aa_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_aa_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_aa_lh_encode_fns[] = {
   Opcode_mul_aa_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_aa_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_aa_hh_encode_fns[] = {
   Opcode_mul_aa_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_umul_aa_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_umul_aa_ll_encode_fns[] = {
   Opcode_umul_aa_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_umul_aa_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_umul_aa_hl_encode_fns[] = {
   Opcode_umul_aa_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_umul_aa_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_umul_aa_lh_encode_fns[] = {
   Opcode_umul_aa_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_umul_aa_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_umul_aa_hh_encode_fns[] = {
   Opcode_umul_aa_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_ad_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_ad_ll_encode_fns[] = {
   Opcode_mul_ad_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_ad_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_ad_hl_encode_fns[] = {
   Opcode_mul_ad_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_ad_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_ad_lh_encode_fns[] = {
   Opcode_mul_ad_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_ad_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_ad_hh_encode_fns[] = {
   Opcode_mul_ad_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_da_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_da_ll_encode_fns[] = {
   Opcode_mul_da_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_da_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_da_hl_encode_fns[] = {
   Opcode_mul_da_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_da_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_da_lh_encode_fns[] = {
   Opcode_mul_da_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_da_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_da_hh_encode_fns[] = {
   Opcode_mul_da_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_dd_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_dd_ll_encode_fns[] = {
   Opcode_mul_dd_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_dd_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_dd_hl_encode_fns[] = {
   Opcode_mul_dd_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_dd_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_dd_lh_encode_fns[] = {
   Opcode_mul_dd_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_dd_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_dd_hh_encode_fns[] = {
   Opcode_mul_dd_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_aa_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_aa_ll_encode_fns[] = {
   Opcode_mula_aa_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_aa_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_aa_hl_encode_fns[] = {
   Opcode_mula_aa_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_aa_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_aa_lh_encode_fns[] = {
   Opcode_mula_aa_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_aa_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_aa_hh_encode_fns[] = {
   Opcode_mula_aa_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_aa_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_aa_ll_encode_fns[] = {
   Opcode_muls_aa_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_aa_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_aa_hl_encode_fns[] = {
   Opcode_muls_aa_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_aa_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_aa_lh_encode_fns[] = {
   Opcode_muls_aa_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_aa_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_aa_hh_encode_fns[] = {
   Opcode_muls_aa_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_ad_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_ad_ll_encode_fns[] = {
   Opcode_mula_ad_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_ad_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_ad_hl_encode_fns[] = {
   Opcode_mula_ad_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_ad_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_ad_lh_encode_fns[] = {
   Opcode_mula_ad_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_ad_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_ad_hh_encode_fns[] = {
   Opcode_mula_ad_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_ad_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_ad_ll_encode_fns[] = {
   Opcode_muls_ad_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_ad_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_ad_hl_encode_fns[] = {
   Opcode_muls_ad_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_ad_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_ad_lh_encode_fns[] = {
   Opcode_muls_ad_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_ad_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_ad_hh_encode_fns[] = {
   Opcode_muls_ad_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_ll_encode_fns[] = {
   Opcode_mula_da_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_hl_encode_fns[] = {
   Opcode_mula_da_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_lh_encode_fns[] = {
   Opcode_mula_da_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_hh_encode_fns[] = {
   Opcode_mula_da_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_da_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_da_ll_encode_fns[] = {
   Opcode_muls_da_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_da_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_da_hl_encode_fns[] = {
   Opcode_muls_da_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_da_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_da_lh_encode_fns[] = {
   Opcode_muls_da_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_da_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_da_hh_encode_fns[] = {
   Opcode_muls_da_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_ll_encode_fns[] = {
   Opcode_mula_dd_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_hl_encode_fns[] = {
   Opcode_mula_dd_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_lh_encode_fns[] = {
   Opcode_mula_dd_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_hh_encode_fns[] = {
   Opcode_mula_dd_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_dd_ll_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_dd_ll_encode_fns[] = {
   Opcode_muls_dd_ll_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_dd_hl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_dd_hl_encode_fns[] = {
   Opcode_muls_dd_hl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_dd_lh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_dd_lh_encode_fns[] = {
   Opcode_muls_dd_lh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muls_dd_hh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muls_dd_hh_encode_fns[] = {
   Opcode_muls_dd_hh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_ll_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_ll_lddec_encode_fns[] = {
   Opcode_mula_da_ll_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_ll_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_ll_ldinc_encode_fns[] = {
   Opcode_mula_da_ll_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_hl_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_hl_lddec_encode_fns[] = {
   Opcode_mula_da_hl_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_hl_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_hl_ldinc_encode_fns[] = {
   Opcode_mula_da_hl_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_lh_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_lh_lddec_encode_fns[] = {
   Opcode_mula_da_lh_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_lh_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_lh_ldinc_encode_fns[] = {
   Opcode_mula_da_lh_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_hh_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_hh_lddec_encode_fns[] = {
   Opcode_mula_da_hh_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_da_hh_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_da_hh_ldinc_encode_fns[] = {
   Opcode_mula_da_hh_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_ll_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_ll_lddec_encode_fns[] = {
   Opcode_mula_dd_ll_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_ll_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_ll_ldinc_encode_fns[] = {
   Opcode_mula_dd_ll_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_hl_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_hl_lddec_encode_fns[] = {
   Opcode_mula_dd_hl_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_hl_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_hl_ldinc_encode_fns[] = {
   Opcode_mula_dd_hl_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_lh_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_lh_lddec_encode_fns[] = {
   Opcode_mula_dd_lh_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_lh_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_lh_ldinc_encode_fns[] = {
   Opcode_mula_dd_lh_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_hh_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_hh_lddec_encode_fns[] = {
   Opcode_mula_dd_hh_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mula_dd_hh_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mula_dd_hh_ldinc_encode_fns[] = {
   Opcode_mula_dd_hh_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_lddec_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_lddec_encode_fns[] = {
   Opcode_lddec_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ldinc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ldinc_encode_fns[] = {
   Opcode_ldinc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul16u_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul16u_encode_fns[] = {
   Opcode_mul16u_Slot_inst_encode, 0, 0, Opcode_mul16u_Slot_xt_flix64_slot0_encode, Opcode_mul16u_Slot_xt_flix64_slot0_encode, Opcode_mul16u_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul16s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul16s_encode_fns[] = {
   Opcode_mul16s_Slot_inst_encode, 0, 0, Opcode_mul16s_Slot_xt_flix64_slot0_encode, Opcode_mul16s_Slot_xt_flix64_slot0_encode, Opcode_mul16s_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_m0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_m0_encode_fns[] = {
   Opcode_rsr_m0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_m0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_m0_encode_fns[] = {
   Opcode_wsr_m0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_m0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_m0_encode_fns[] = {
   Opcode_xsr_m0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_m1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_m1_encode_fns[] = {
   Opcode_rsr_m1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_m1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_m1_encode_fns[] = {
   Opcode_wsr_m1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_m1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_m1_encode_fns[] = {
   Opcode_xsr_m1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_m2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_m2_encode_fns[] = {
   Opcode_rsr_m2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_m2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_m2_encode_fns[] = {
   Opcode_wsr_m2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_m2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_m2_encode_fns[] = {
   Opcode_xsr_m2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_m3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_m3_encode_fns[] = {
   Opcode_rsr_m3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_m3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_m3_encode_fns[] = {
   Opcode_wsr_m3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_m3_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_m3_encode_fns[] = {
   Opcode_xsr_m3_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_acclo_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_acclo_encode_fns[] = {
   Opcode_rsr_acclo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_acclo_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_acclo_encode_fns[] = {
   Opcode_wsr_acclo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_acclo_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_acclo_encode_fns[] = {
   Opcode_xsr_acclo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_acchi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_acchi_encode_fns[] = {
   Opcode_rsr_acchi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_acchi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_acchi_encode_fns[] = {
   Opcode_wsr_acchi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_acchi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_acchi_encode_fns[] = {
   Opcode_xsr_acchi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rfi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rfi_encode_fns[] = {
   Opcode_rfi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_waiti_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_waiti_encode_fns[] = {
   Opcode_waiti_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_interrupt_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_interrupt_encode_fns[] = {
   Opcode_rsr_interrupt_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_intset_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_intset_encode_fns[] = {
   Opcode_wsr_intset_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_intclear_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_intclear_encode_fns[] = {
   Opcode_wsr_intclear_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_intenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_intenable_encode_fns[] = {
   Opcode_rsr_intenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_intenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_intenable_encode_fns[] = {
   Opcode_wsr_intenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_intenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_intenable_encode_fns[] = {
   Opcode_xsr_intenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_break_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_break_encode_fns[] = {
   Opcode_break_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_break_n_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_break_n_encode_fns[] = {
   0, 0, Opcode_break_n_Slot_inst16b_encode, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_dbreaka0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_dbreaka0_encode_fns[] = {
   Opcode_rsr_dbreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_dbreaka0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_dbreaka0_encode_fns[] = {
   Opcode_wsr_dbreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_dbreaka0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_dbreaka0_encode_fns[] = {
   Opcode_xsr_dbreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_dbreakc0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_dbreakc0_encode_fns[] = {
   Opcode_rsr_dbreakc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_dbreakc0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_dbreakc0_encode_fns[] = {
   Opcode_wsr_dbreakc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_dbreakc0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_dbreakc0_encode_fns[] = {
   Opcode_xsr_dbreakc0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_dbreaka1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_dbreaka1_encode_fns[] = {
   Opcode_rsr_dbreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_dbreaka1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_dbreaka1_encode_fns[] = {
   Opcode_wsr_dbreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_dbreaka1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_dbreaka1_encode_fns[] = {
   Opcode_xsr_dbreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_dbreakc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_dbreakc1_encode_fns[] = {
   Opcode_rsr_dbreakc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_dbreakc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_dbreakc1_encode_fns[] = {
   Opcode_wsr_dbreakc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_dbreakc1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_dbreakc1_encode_fns[] = {
   Opcode_xsr_dbreakc1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ibreaka0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ibreaka0_encode_fns[] = {
   Opcode_rsr_ibreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ibreaka0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ibreaka0_encode_fns[] = {
   Opcode_wsr_ibreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ibreaka0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ibreaka0_encode_fns[] = {
   Opcode_xsr_ibreaka0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ibreaka1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ibreaka1_encode_fns[] = {
   Opcode_rsr_ibreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ibreaka1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ibreaka1_encode_fns[] = {
   Opcode_wsr_ibreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ibreaka1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ibreaka1_encode_fns[] = {
   Opcode_xsr_ibreaka1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ibreakenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ibreakenable_encode_fns[] = {
   Opcode_rsr_ibreakenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ibreakenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ibreakenable_encode_fns[] = {
   Opcode_wsr_ibreakenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ibreakenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ibreakenable_encode_fns[] = {
   Opcode_xsr_ibreakenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_debugcause_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_debugcause_encode_fns[] = {
   Opcode_rsr_debugcause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_debugcause_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_debugcause_encode_fns[] = {
   Opcode_wsr_debugcause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_debugcause_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_debugcause_encode_fns[] = {
   Opcode_xsr_debugcause_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_icount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_icount_encode_fns[] = {
   Opcode_rsr_icount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_icount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_icount_encode_fns[] = {
   Opcode_wsr_icount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_icount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_icount_encode_fns[] = {
   Opcode_xsr_icount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_icountlevel_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_icountlevel_encode_fns[] = {
   Opcode_rsr_icountlevel_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_icountlevel_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_icountlevel_encode_fns[] = {
   Opcode_wsr_icountlevel_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_icountlevel_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_icountlevel_encode_fns[] = {
   Opcode_xsr_icountlevel_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ddr_encode_fns[] = {
   Opcode_rsr_ddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ddr_encode_fns[] = {
   Opcode_wsr_ddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ddr_encode_fns[] = {
   Opcode_xsr_ddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rfdo_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rfdo_encode_fns[] = {
   Opcode_rfdo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rfdd_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rfdd_encode_fns[] = {
   Opcode_rfdd_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_mmid_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_mmid_encode_fns[] = {
   Opcode_wsr_mmid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_andb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_andb_encode_fns[] = {
   Opcode_andb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_andbc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_andbc_encode_fns[] = {
   Opcode_andbc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_orb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_orb_encode_fns[] = {
   Opcode_orb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_orbc_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_orbc_encode_fns[] = {
   Opcode_orbc_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xorb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xorb_encode_fns[] = {
   Opcode_xorb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_any4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_any4_encode_fns[] = {
   Opcode_any4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_all4_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_all4_encode_fns[] = {
   Opcode_all4_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_any8_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_any8_encode_fns[] = {
   Opcode_any8_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_all8_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_all8_encode_fns[] = {
   Opcode_all8_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bf_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bf_encode_fns[] = {
   Opcode_bf_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_bt_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bt_encode_fns[] = {
   Opcode_bt_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movf_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movf_encode_fns[] = {
   Opcode_movf_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movt_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movt_encode_fns[] = {
   Opcode_movt_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_br_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_br_encode_fns[] = {
   Opcode_rsr_br_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_br_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_br_encode_fns[] = {
   Opcode_wsr_br_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_br_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_br_encode_fns[] = {
   Opcode_xsr_br_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ccount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ccount_encode_fns[] = {
   Opcode_rsr_ccount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ccount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ccount_encode_fns[] = {
   Opcode_wsr_ccount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ccount_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ccount_encode_fns[] = {
   Opcode_xsr_ccount_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ccompare0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ccompare0_encode_fns[] = {
   Opcode_rsr_ccompare0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ccompare0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ccompare0_encode_fns[] = {
   Opcode_wsr_ccompare0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ccompare0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ccompare0_encode_fns[] = {
   Opcode_xsr_ccompare0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ccompare1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ccompare1_encode_fns[] = {
   Opcode_rsr_ccompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ccompare1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ccompare1_encode_fns[] = {
   Opcode_wsr_ccompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ccompare1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ccompare1_encode_fns[] = {
   Opcode_xsr_ccompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ccompare2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ccompare2_encode_fns[] = {
   Opcode_rsr_ccompare2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ccompare2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ccompare2_encode_fns[] = {
   Opcode_wsr_ccompare2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ccompare2_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ccompare2_encode_fns[] = {
   Opcode_xsr_ccompare2_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ipf_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ipf_encode_fns[] = {
   Opcode_ipf_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ihi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ihi_encode_fns[] = {
   Opcode_ihi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ipfl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ipfl_encode_fns[] = {
   Opcode_ipfl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ihu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ihu_encode_fns[] = {
   Opcode_ihu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_iiu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_iiu_encode_fns[] = {
   Opcode_iiu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_iii_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_iii_encode_fns[] = {
   Opcode_iii_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_lict_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_lict_encode_fns[] = {
   Opcode_lict_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_licw_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_licw_encode_fns[] = {
   Opcode_licw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_sict_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_sict_encode_fns[] = {
   Opcode_sict_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_sicw_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_sicw_encode_fns[] = {
   Opcode_sicw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dhwb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dhwb_encode_fns[] = {
   Opcode_dhwb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dhwbi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dhwbi_encode_fns[] = {
   Opcode_dhwbi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_diwb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_diwb_encode_fns[] = {
   Opcode_diwb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_diwbi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_diwbi_encode_fns[] = {
   Opcode_diwbi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dhi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dhi_encode_fns[] = {
   Opcode_dhi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dii_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dii_encode_fns[] = {
   Opcode_dii_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dpfr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dpfr_encode_fns[] = {
   Opcode_dpfr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dpfw_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dpfw_encode_fns[] = {
   Opcode_dpfw_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dpfro_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dpfro_encode_fns[] = {
   Opcode_dpfro_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dpfwo_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dpfwo_encode_fns[] = {
   Opcode_dpfwo_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dpfl_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dpfl_encode_fns[] = {
   Opcode_dpfl_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_dhu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_dhu_encode_fns[] = {
   Opcode_dhu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_diu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_diu_encode_fns[] = {
   Opcode_diu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_sdct_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_sdct_encode_fns[] = {
   Opcode_sdct_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ldct_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ldct_encode_fns[] = {
   Opcode_ldct_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_ptevaddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_ptevaddr_encode_fns[] = {
   Opcode_wsr_ptevaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_ptevaddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_ptevaddr_encode_fns[] = {
   Opcode_rsr_ptevaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_ptevaddr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_ptevaddr_encode_fns[] = {
   Opcode_xsr_ptevaddr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_rasid_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_rasid_encode_fns[] = {
   Opcode_rsr_rasid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_rasid_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_rasid_encode_fns[] = {
   Opcode_wsr_rasid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_rasid_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_rasid_encode_fns[] = {
   Opcode_xsr_rasid_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_itlbcfg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_itlbcfg_encode_fns[] = {
   Opcode_rsr_itlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_itlbcfg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_itlbcfg_encode_fns[] = {
   Opcode_wsr_itlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_itlbcfg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_itlbcfg_encode_fns[] = {
   Opcode_xsr_itlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_dtlbcfg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_dtlbcfg_encode_fns[] = {
   Opcode_rsr_dtlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_dtlbcfg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_dtlbcfg_encode_fns[] = {
   Opcode_wsr_dtlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_dtlbcfg_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_dtlbcfg_encode_fns[] = {
   Opcode_xsr_dtlbcfg_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_idtlb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_idtlb_encode_fns[] = {
   Opcode_idtlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_pdtlb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_pdtlb_encode_fns[] = {
   Opcode_pdtlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rdtlb0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rdtlb0_encode_fns[] = {
   Opcode_rdtlb0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rdtlb1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rdtlb1_encode_fns[] = {
   Opcode_rdtlb1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wdtlb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wdtlb_encode_fns[] = {
   Opcode_wdtlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_iitlb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_iitlb_encode_fns[] = {
   Opcode_iitlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_pitlb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_pitlb_encode_fns[] = {
   Opcode_pitlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ritlb0_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ritlb0_encode_fns[] = {
   Opcode_ritlb0_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ritlb1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ritlb1_encode_fns[] = {
   Opcode_ritlb1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_witlb_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_witlb_encode_fns[] = {
   Opcode_witlb_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ldpte_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ldpte_encode_fns[] = {
   Opcode_ldpte_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_hwwitlba_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_hwwitlba_encode_fns[] = {
   Opcode_hwwitlba_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_hwwdtlba_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_hwwdtlba_encode_fns[] = {
   Opcode_hwwdtlba_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_cpenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_cpenable_encode_fns[] = {
   Opcode_rsr_cpenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_cpenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_cpenable_encode_fns[] = {
   Opcode_wsr_cpenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_cpenable_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_cpenable_encode_fns[] = {
   Opcode_xsr_cpenable_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_clamps_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_clamps_encode_fns[] = {
   Opcode_clamps_Slot_inst_encode, 0, 0, Opcode_clamps_Slot_xt_flix64_slot0_encode, Opcode_clamps_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_min_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_min_encode_fns[] = {
   Opcode_min_Slot_inst_encode, 0, 0, Opcode_min_Slot_xt_flix64_slot0_encode, Opcode_min_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_max_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_max_encode_fns[] = {
   Opcode_max_Slot_inst_encode, 0, 0, Opcode_max_Slot_xt_flix64_slot0_encode, Opcode_max_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_minu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_minu_encode_fns[] = {
   Opcode_minu_Slot_inst_encode, 0, 0, Opcode_minu_Slot_xt_flix64_slot0_encode, Opcode_minu_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_maxu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_maxu_encode_fns[] = {
   Opcode_maxu_Slot_inst_encode, 0, 0, Opcode_maxu_Slot_xt_flix64_slot0_encode, Opcode_maxu_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_nsa_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_nsa_encode_fns[] = {
   Opcode_nsa_Slot_inst_encode, 0, 0, Opcode_nsa_Slot_xt_flix64_slot0_encode, Opcode_nsa_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_nsau_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_nsau_encode_fns[] = {
   Opcode_nsau_Slot_inst_encode, 0, 0, Opcode_nsau_Slot_xt_flix64_slot0_encode, Opcode_nsau_Slot_xt_flix64_slot0_encode, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_sext_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_sext_encode_fns[] = {
   Opcode_sext_Slot_inst_encode, 0, 0, Opcode_sext_Slot_xt_flix64_slot0_encode, Opcode_sext_Slot_xt_flix64_slot0_encode, Opcode_sext_Slot_xt_flix64_slot1_encode, Opcode_sext_Slot_xt_flix64_slot2_encode, 0
 };
 
-xtensa_opcode_encode_fn Opcode_l32ai_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_l32ai_encode_fns[] = {
   Opcode_l32ai_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_s32ri_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_s32ri_encode_fns[] = {
   Opcode_s32ri_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_s32c1i_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_s32c1i_encode_fns[] = {
   Opcode_s32c1i_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rsr_scompare1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rsr_scompare1_encode_fns[] = {
   Opcode_rsr_scompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wsr_scompare1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wsr_scompare1_encode_fns[] = {
   Opcode_wsr_scompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_xsr_scompare1_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_xsr_scompare1_encode_fns[] = {
   Opcode_xsr_scompare1_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_quou_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_quou_encode_fns[] = {
   Opcode_quou_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_quos_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_quos_encode_fns[] = {
   Opcode_quos_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_remu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_remu_encode_fns[] = {
   Opcode_remu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rems_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rems_encode_fns[] = {
   Opcode_rems_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mull_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mull_encode_fns[] = {
   Opcode_mull_Slot_inst_encode, 0, 0, Opcode_mull_Slot_xt_flix64_slot0_encode, Opcode_mull_Slot_xt_flix64_slot0_encode, Opcode_mull_Slot_xt_flix64_slot1_encode, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_muluh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_muluh_encode_fns[] = {
   Opcode_muluh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mulsh_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mulsh_encode_fns[] = {
   Opcode_mulsh_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rur_fcr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rur_fcr_encode_fns[] = {
   Opcode_rur_fcr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wur_fcr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wur_fcr_encode_fns[] = {
   Opcode_wur_fcr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rur_fsr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rur_fsr_encode_fns[] = {
   Opcode_rur_fsr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wur_fsr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wur_fsr_encode_fns[] = {
   Opcode_wur_fsr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_add_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_add_s_encode_fns[] = {
   Opcode_add_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_sub_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_sub_s_encode_fns[] = {
   Opcode_sub_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mul_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mul_s_encode_fns[] = {
   Opcode_mul_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_madd_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_madd_s_encode_fns[] = {
   Opcode_madd_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_msub_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_msub_s_encode_fns[] = {
   Opcode_msub_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movf_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movf_s_encode_fns[] = {
   Opcode_movf_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movt_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movt_s_encode_fns[] = {
   Opcode_movt_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_moveqz_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_moveqz_s_encode_fns[] = {
   Opcode_moveqz_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movnez_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movnez_s_encode_fns[] = {
   Opcode_movnez_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movltz_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movltz_s_encode_fns[] = {
   Opcode_movltz_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_movgez_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_movgez_s_encode_fns[] = {
   Opcode_movgez_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_abs_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_abs_s_encode_fns[] = {
   Opcode_abs_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_mov_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_mov_s_encode_fns[] = {
   Opcode_mov_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_neg_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_neg_s_encode_fns[] = {
   Opcode_neg_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_un_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_un_s_encode_fns[] = {
   Opcode_un_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_oeq_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_oeq_s_encode_fns[] = {
   Opcode_oeq_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ueq_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ueq_s_encode_fns[] = {
   Opcode_ueq_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_olt_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_olt_s_encode_fns[] = {
   Opcode_olt_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ult_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ult_s_encode_fns[] = {
   Opcode_ult_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ole_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ole_s_encode_fns[] = {
   Opcode_ole_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ule_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ule_s_encode_fns[] = {
   Opcode_ule_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_float_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_float_s_encode_fns[] = {
   Opcode_float_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ufloat_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ufloat_s_encode_fns[] = {
   Opcode_ufloat_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_round_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_round_s_encode_fns[] = {
   Opcode_round_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ceil_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ceil_s_encode_fns[] = {
   Opcode_ceil_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_floor_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_floor_s_encode_fns[] = {
   Opcode_floor_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_trunc_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_trunc_s_encode_fns[] = {
   Opcode_trunc_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_utrunc_s_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_utrunc_s_encode_fns[] = {
   Opcode_utrunc_s_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_rfr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_rfr_encode_fns[] = {
   Opcode_rfr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_wfr_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_wfr_encode_fns[] = {
   Opcode_wfr_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_lsi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_lsi_encode_fns[] = {
   Opcode_lsi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_lsiu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_lsiu_encode_fns[] = {
   Opcode_lsiu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_lsx_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_lsx_encode_fns[] = {
   Opcode_lsx_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_lsxu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_lsxu_encode_fns[] = {
   Opcode_lsxu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssi_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssi_encode_fns[] = {
   Opcode_ssi_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssiu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssiu_encode_fns[] = {
   Opcode_ssiu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssx_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssx_encode_fns[] = {
   Opcode_ssx_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_ssxu_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ssxu_encode_fns[] = {
   Opcode_ssxu_Slot_inst_encode, 0, 0, 0, 0, 0, 0, 0
 };
 
-xtensa_opcode_encode_fn Opcode_beqz_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_beqz_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_beqz_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bnez_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnez_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bnez_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bgez_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bgez_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bgez_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bltz_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bltz_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bltz_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_beqi_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_beqi_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_beqi_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bnei_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnei_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bnei_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bgei_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bgei_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bgei_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_blti_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_blti_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_blti_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bgeui_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bgeui_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bgeui_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bltui_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bltui_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bltui_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bbci_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bbci_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bbci_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bbsi_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bbsi_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bbsi_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_beq_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_beq_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_beq_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bne_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bne_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bne_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bge_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bge_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bge_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_blt_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_blt_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_blt_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bgeu_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bgeu_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bgeu_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bltu_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bltu_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bltu_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bany_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bany_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bany_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bnone_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnone_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bnone_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_ball_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_ball_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_ball_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bnall_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bnall_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bnall_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bbc_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bbc_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bbc_w18_Slot_xt_flix64_slot3_encode
 };
 
-xtensa_opcode_encode_fn Opcode_bbs_w18_encode_fns[] = {
+const xtensa_opcode_encode_fn Opcode_bbs_w18_encode_fns[] = {
   0, 0, 0, 0, 0, 0, 0, Opcode_bbs_w18_Slot_xt_flix64_slot3_encode
 };
 
@@ -18795,7 +18795,7 @@ Slot_xt_format2_Format_xt_flix64_slot3_2
   insn[1] = (insn[1] & ~0x70000000) | ((slotbuf[1] & 0x7) << 28);
 }
 
-static xtensa_get_field_fn
+static const xtensa_get_field_fn
 Slot_inst_get_field_fns[] = {
   Field_t_Slot_inst_get,
   Field_bbi4_Slot_inst_get,
@@ -18934,7 +18934,7 @@ Slot_inst_get_field_fns[] = {
   Implicit_Field_brall_get
 };
 
-static xtensa_set_field_fn
+static const xtensa_set_field_fn
 Slot_inst_set_field_fns[] = {
   Field_t_Slot_inst_set,
   Field_bbi4_Slot_inst_set,
@@ -19073,7 +19073,7 @@ Slot_inst_set_field_fns[] = {
   Implicit_Field_set
 };
 
-static xtensa_get_field_fn
+static const xtensa_get_field_fn
 Slot_inst16a_get_field_fns[] = {
   Field_t_Slot_inst16a_get,
   0,
@@ -19212,7 +19212,7 @@ Slot_inst16a_get_field_fns[] = {
   Implicit_Field_brall_get
 };
 
-static xtensa_set_field_fn
+static const xtensa_set_field_fn
 Slot_inst16a_set_field_fns[] = {
   Field_t_Slot_inst16a_set,
   0,
@@ -19351,7 +19351,7 @@ Slot_inst16a_set_field_fns[] = {
   Implicit_Field_set
 };
 
-static xtensa_get_field_fn
+static const xtensa_get_field_fn
 Slot_inst16b_get_field_fns[] = {
   Field_t_Slot_inst16b_get,
   0,
@@ -19490,7 +19490,7 @@ Slot_inst16b_get_field_fns[] = {
   Implicit_Field_brall_get
 };
 
-static xtensa_set_field_fn
+static const xtensa_set_field_fn
 Slot_inst16b_set_field_fns[] = {
   Field_t_Slot_inst16b_set,
   0,
@@ -19629,7 +19629,7 @@ Slot_inst16b_set_field_fns[] = {
   Implicit_Field_set
 };
 
-static xtensa_get_field_fn
+static const xtensa_get_field_fn
 Slot_xt_flix64_slot0_get_field_fns[] = {
   Field_t_Slot_xt_flix64_slot0_get,
   0,
@@ -19768,7 +19768,7 @@ Slot_xt_flix64_slot0_get_field_fns[] = {
   Implicit_Field_brall_get
 };
 
-static xtensa_set_field_fn
+static const xtensa_set_field_fn
 Slot_xt_flix64_slot0_set_field_fns[] = {
   Field_t_Slot_xt_flix64_slot0_set,
   0,
@@ -19907,7 +19907,7 @@ Slot_xt_flix64_slot0_set_field_fns[] = {
   Implicit_Field_set
 };
 
-static xtensa_get_field_fn
+static const xtensa_get_field_fn
 Slot_xt_flix64_slot1_get_field_fns[] = {
   Field_t_Slot_xt_flix64_slot1_get,
   0,
@@ -20046,7 +20046,7 @@ Slot_xt_flix64_slot1_get_field_fns[] = {
   Implicit_Field_brall_get
 };
 
-static xtensa_set_field_fn
+static const xtensa_set_field_fn
 Slot_xt_flix64_slot1_set_field_fns[] = {
   Field_t_Slot_xt_flix64_slot1_set,
   0,
@@ -20185,7 +20185,7 @@ Slot_xt_flix64_slot1_set_field_fns[] = {
   Implicit_Field_set
 };
 
-static xtensa_get_field_fn
+static const xtensa_get_field_fn
 Slot_xt_flix64_slot2_get_field_fns[] = {
   Field_t_Slot_xt_flix64_slot2_get,
   0,
@@ -20324,7 +20324,7 @@ Slot_xt_flix64_slot2_get_field_fns[] = {
   Implicit_Field_brall_get
 };
 
-static xtensa_set_field_fn
+static const xtensa_set_field_fn
 Slot_xt_flix64_slot2_set_field_fns[] = {
   Field_t_Slot_xt_flix64_slot2_set,
   0,
@@ -20463,7 +20463,7 @@ Slot_xt_flix64_slot2_set_field_fns[] = {
   Implicit_Field_set
 };
 
-static xtensa_get_field_fn
+static const xtensa_get_field_fn
 Slot_xt_flix64_slot3_get_field_fns[] = {
   Field_t_Slot_xt_flix64_slot3_get,
   0,
@@ -20602,7 +20602,7 @@ Slot_xt_flix64_slot3_get_field_fns[] = {
   Implicit_Field_brall_get
 };
 
-static xtensa_set_field_fn
+static const xtensa_set_field_fn
 Slot_xt_flix64_slot3_set_field_fns[] = {
   Field_t_Slot_xt_flix64_slot3_set,
   0,
@@ -20814,15 +20814,15 @@ Format_xt_format2_encode (xtensa_insnbuf
   insn[1] = 0;
 }
 
-static int Format_x24_slots[] = { 0 };
+static const int Format_x24_slots[] = { 0 };
 
-static int Format_x16a_slots[] = { 1 };
+static const int Format_x16a_slots[] = { 1 };
 
-static int Format_x16b_slots[] = { 2 };
+static const int Format_x16b_slots[] = { 2 };
 
-static int Format_xt_format1_slots[] = { 3, 5, 6 };
+static const int Format_xt_format1_slots[] = { 3, 5, 6 };
 
-static int Format_xt_format2_slots[] = { 4, 7 };
+static const int Format_xt_format2_slots[] = { 4, 7 };
 
 static xtensa_format_internal formats[] = {
   { "x24", 3, Format_x24_encode, 1, Format_x24_slots },
@@ -20849,7 +20849,7 @@ format_decoder (const xtensa_insnbuf ins
   return -1;
 }
 
-static int length_table[16] = {
+static const int length_table[16] = {
   3,
   3,
   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.20200303/ChangeLog ./ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/ChangeLog	2020-03-03 02:08:50.000000000 +0000
+++ ./ChangeLog	2026-03-05 02:07:20.000000000 +0000
@@ -1,17 +1,1077 @@
-2020-02-01  Sergio Durigan Junior  <sergiodj@redhat.com>
+2025-07-13  Nick Clifton  <nickc@redhat.com>
 
-	* configure.ac: Don't abort the build if trying to build GDB in tree
-	_and_ invoking with '--enable-src-release-build'.
+	* 2.45 Binutils Branch point.
+
+2025-01-19  Nick Clifton  <nickc@redhat.com>
+
+	* 2.44 Binutils Branch point.
+
+2024-07-20  Nick Clifton  <nickc@redhat.com>
+
+	* 2.43 Binutils Branch point.
+
+2024-07-15  Nick Clifton  <nickc@redhat.com>
+
+	Import the following upstream commits to the config files:
+	commit 948ae97ca5703224bd3eada06b7a69f40dd15a02
+	  Update copyright years
+	commit 471d8141d3a9fd845fe2ddd20b10569ab6437bc9
+	  config.sub: recognize nanoMIPS CPUs
+	commit ee6ea2f13ba4dc0836665d3c50099135bba36287
+	  config.guess: recognize ironclad OS
+	commit 5e2f254bcb505da063ba541b25df2c3f567b5517
+	  config.sub: recognize ironclad OS
+	commit 0e4a5b3a1ec551bf3cf4d432f4506ef02d1674c5
+	  config.sub: recognize *-*-uefi
+	commit d21518c6c819d285c6d9ec0c39c55615d0dde19c
+	  Recognize the VideoCore 4 processor
+	commit a9a369e97a39a49e675712aee4035ed662d24d71
+	  config.guess: detect LLVM-libc via features.h
+	commit 5b83c2ff5da15451cb566e1837253d0f60543dd7
+	  config.sub: add LLVM-libc support
+
+2024-03-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	* .pre-commit-config.yaml: Bump black hook to 24.3.0
+
+2024-03-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	* .pre-commit-config.yaml: New.
+
+2024-03-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.def: Add configure-gdbserver and all-gdbserver
+	dependencies on all-libiconv.
+	* Makefile.in: Re-generate.
+
+2024-01-15  Nick Clifton  <nickc@redhat.com>
+
+	* 2.42 branch point.
+
+2023-11-15  Arsen ArsenoviÄ‡  <arsen@aarsen.me>
+
+	* intl: Remove directory.  Replaced with out-of-tree GNU
+	gettext.
+	* .gitignore: Add '/gettext*'.
+	* configure.ac (host_libs): Replace intl with gettext.
+	(hbaseargs, bbaseargs, baseargs): Split baseargs into
+	{h,b}baseargs.
+	(skip_barg): New flag.  Skips appending current flag to
+	bbaseargs.
+	<library exemptions>: Exempt --with-libintl-{type,prefix} from
+	target and build machine argument passing.
+	* configure: Regenerate.
+	* Makefile.def (host_modules): Replace intl module with gettext
+	module.
+	(configure-ld): Depend on configure-gettext.
+	* Makefile.in: Regenerate.
+	* src-release.sh: Remove references to the intl/ directory.
+
+2023-07-03  Nick Clifton  <nickc@redhat.com>
+
+	2.41 Branch Point.
+
+2023-06-26  Nick Clifton  <nickc@redhat.com>
+
+	* Import these updates to the config scripts
+
+	commit 4ad4bb7c30aca1e705448ba8d51a210bbd47bb52
+	Author: Paul Eggert <eggert@cs.ucla.edu>
+	Date:   Fri Jun 23 09:55:10 2023 -0700
+
+		Quote 'like this', not `like this'.
+
+	commit 63acb96f92473ceb5e21d873d7c0aee266b3d6d3
+	Author: Paul Eggert <eggert@cs.ucla.edu>
+	Date:   Sat Jan 21 00:15:01 2023 -0600
+
+		Fix config.sub spelling typo for "athlon"
+
+	commit 4ce12a5c9125cedc0d0ba584444a6865396923ec
+	Author: Dmitry V. Levin <ldv@altlinux.org>
+	Date:   Sun Jan 1 08:00:00 2023 +0000
+
+		Update copyright years
+
+	commit c397e2c040bce50bcdccb131f90115ba7e8bfc19
+	Author: Arsen Arsenovi <arsen@aarsen.me>
+	Date:   Sat Sep 17 23:34:48 2022 +0200
+
+		config.sub: add linux-mlibc targets
+
+	commit 9f9f9b0b13197269848c76e3e057a3ed0680b4bf
+	Author: Arsen Arsenovi <arsen@aarsen.me>
+	Date:   Sat Sep 17 23:34:47 2022 +0200
+
+		config.guess: support running on Managarm systems
+
+	commit 87e6687749da7bb2ab158a79fa83721c19ed9246
+	Author: Arsen Arsenovi <arsen@aarsen.me>
+	Date:   Sat Sep 17 23:34:46 2022 +0200
+
+		config.sub: add managarm-{mlibc,kernel} targets
+
+	commit 20403c5701973a4cbd7e0b4bbeb627fcd424a0f1
+	Author: Xiaotian Wu <wuxiaotian@loongson.cn>
+	Date:   Mon Aug 1 16:05:29 2022 +0800
+
+		Remove loongarchx32
+
+	commit 02ba26b218d3d3db6c56e014655faf463cefa983
+	Author: Alexander von Gluck IV <kallisti5@unixzen.com>
+	Date:   Wed May 25 15:43:13 2022 -0500
+
+		config.guess: Update Haiku guesses
+
+	commit f56a7140386d08a531bcfd444d632b28c61a6329
+	Author: Bruno Haible <bruno@clisp.org>
+	Date:   Sun May 8 19:08:08 2022 +0200
+
+		config.guess (x86_64:Linux:*:*): Detect 32-bit ABI.
+
+2023-04-20  Nick Clifton  <nickc@redhat.com>
+
+	* SECURITY.txt: New file.
+	* src-release.sh (DEVO_SUPPORT): Add SECURITY.txt.
+
+2022-12-31  Nick Clifton  <nickc@redhat.com>
+
+	* 2.40 binutils branch created.
+
+2022-10-10  Nick Clifton  <nickc@redhat.com>
+
+	* src-release.sh: Add "-r <date>" option to create reproducible
+	tarballs based upon a fixed timestamp of <date>.
+	* binutils/README-how-to-make-a-release: Add a line showing how to
+	use -r <date> when creating a binutils release.
+
+2022-10-04  Nick Clifton  <nickc@redhat.com>
+
+	* README-maintainer-mode: Add a minimum version of dejagnu
+	requirement.
+
+2022-09-08  Nick Clifton  <nickc@redhat.com>
+
+	* README-maintainer-mode: Update minimum version  of gettext
+	required.
+
+2022-07-08  Nick Clifton  <nickc@redhat.com>
+
+	* 2.39 branch created.
+
+2022-07-04  Nick Clifton  <nickc@redhat.com>
+
+	* libiberty: Synchronize with GCC.  Bring in:
+	2022-07-01  Nick Clifton  <nickc@redhat.com>
+
+	PR demangler/105039
+	* rust-demangle.c (demangle_const): Add recursion limit.
+
+	2022-06-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure.ac: Add AC_CONFIG_MACRO_DIRS call.
+	* configure: Re-generate.
+
+2022-04-12  Nick Clifton  <nickc@redhat.com>
+
+	* zlib: Rebase to the 1.2.12 release.
+
+2022-04-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure.ac: Add AC_SUBST(PKG_CONFIG_PATH).
+	* configure: Re-generate.
+	* Makefile.tpl (HOST_EXPORTS): Pass PKG_CONFIG_PATH.
+	(PKG_CONFIG_PATH): New.
+	* Makefile.in: Re-generate.
+
+2022-03-15  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* gprofng/src/gp-collect-app.cc (collect::check_args): Use
+	fallthrough comment instead of attribute.
+
+2022-03-11  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
+
+	* Makefile.def: Add gprofng module.
+	* configure.ac: Add --enable-gprofng option.
+	* src-release.sh: Add gprofng.
+	* Makefile.in: Regenerate.
+	* configure: Regenerate.
+	* gprofng: New directory.
+
+2022-01-22  Nick Clifton  <nickc@redhat.com>
+
+	* 2.38 release branch created.
+
+2022-01-17  Nick Clifton  <nickc@redhat.com>
+
+	Update config.[guess|sub] from upstream:
+
+	2022-01-09  Idan Horowitz  <idan.horowitz@gmail.com>
+
+	config.guess: recognize SerenityOS
+	* config.guess (*:SerenityOS:*:*): Recognize.
+	(timestamp): Update.
+
+	2022-01-03  Bernhard Voelker  <mail@bernhard-voelker.de>
+
+	Fix GPLv3 license headers to use a comma instead of semicolon
+	See: https://www.gnu.org/licenses/gpl-3.0.html#howto
+
+	Update license headers automatically using the following script:
+
+	  $ git grep -l 'Foundation; either version 3' \
+	    | xargs sed -i '/Foundation; either version 3/ s/n; e/n, e/'
+
+	* config.guess: Adjust via the above command.
+	(timestamp): Update.
+	* config.sub: Likewise.
+	* doc/config.guess.1: Regenerate.
+	* doc/config.sub.1: Likewise.
+
+	2022-01-01  Dmitry V. Levin  <ldv@altlinux.org>
+
+	Update copyright years
+	* config.guess: Update copyright years.
+	* config.sub: Likewise.
+
+	2021-12-25  Dmitry V. Levin  <ldv@altlinux.org>
+
+	config.sub: alias armh to armv7l
+	ALT uses armh as an alias for armv7l-alt-linux-gnueabihf since 2012.
+
+	* config.sub (armh-unknown|armh-alt): Set cpu, vendor, and basic_os.
+	(timestamp): Update.
+
+	2021-12-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	config.sub: alias aarch64le to aarch64
+	Apparently, QNX reports aarch64 as aarch64le on little-endian machines.
+
+	* config.sub (aarch64le-*): Set cpu to aarch64.
+	(timestamp): Update.
+
+	2021-12-13  Dmitry V. Levin  <ldv@altlinux.org>
+
+	config.sub: fix typo in timestamp
+	* config.sub: Fix timestamp.
+
+	2021-11-30  Andreas F. Borchert  <github@andreas-borchert.de>
+
+	config.guess: x86_64-pc-solaris2.11 is not properly recognized
+	config.guess guesses Solaris 11 to run on a 32-bit platform
+	despite Solaris 11 no longer supporting any 32-bit platform.
+
+	See the following code at lines 434 to 445:
+
+	| SUN_ARCH=i386
+	| # If there is a compiler, see if it is configured for 64-bit objects.
+	| # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+	| # This test works for both compilers.
+	| if test "$CC_FOR_BUILD" != no_compiler_found; then
+	|     if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+	|         (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+	|         grep IS_64BIT_ARCH >/dev/null
+	|     then
+	|         SUN_ARCH=x86_64
+	|     fi
+	| fi
+
+	If "cc" is installed, i.e. the Oracle Studio compiler, this one is
+	chosen for $CC_FOR_BUILD.  This compiler, the gcc provided by Oracle
+	and also gcc bootstrapped from sources on that platform with a default
+	configuration will by default generate 32-bit binaries -- even on
+	a 64-bit platform.  And __amd64 will not be defined for compilations
+	targeting a 32-bit platform.  This is different from the corresponding
+	behaviour on GNU/Linux systems where the local platform is targeted by
+	default.
+
+	Thus, as long as you do not add "-m64" or if you have a custom-built
+	gcc which defaults to 64 bit, you will get 32-bit binaries on Solaris
+	despite living on a 64-bit platform.
+
+	* config.guess (i86pc:SunOS:5.*:* || i86xen:SunOS:5.*:*): Adapt the
+	test by adding the "-m64" flag.  This will work properly for Solaris
+	10 as well (the last Solaris release that supported x86 32-bit
+	platforms).
+
+	2021-10-27  Jordi Sanfeliu  <jordi@fibranet.cat>
+
+	Recognize Fiwix
+	$ make check
+	cd testsuite && bash config-guess.sh && rm uname
+	PASS: config.guess checks (137 tests)
+	cd testsuite && bash config-sub.sh
+	PASS: config.sub checks (882 tests)
+	PASS: config.sub idempotency checks (819 tests)
+	PASS: config.sub canonicalise each config.guess testcase (137 tests)
+
+	* config.guess (i*86:Fiwix:*:*): Recognize.
+	* config.sub (fiwix*): Likewise.
+
+	2021-10-18  Kinshuk Dua  <kinshukdua@gmail.com>
+
+	config.sub: Fix typo in comment
+	Fixes: 5e531d391852a54e7fab2d8ff55625fca514b305
+
+	2021-08-14  Nick Bowler  <nbowler@draconx.ca>
+
+	config.sub: work around command assignment bug in some shells
+	When combining variable assignments with a shell command, some older
+	shells (notably heirloom-sh and presumably also Solaris 10 /bin/sh)
+	have a bug which causes the assignment to alter the current execution
+	environment whenever the command is a shell built-in.  For example:
+
+	  % dash -c 'x=good; x=bad echo >/dev/null; echo $x'
+	  good
+
+	  % jsh -c 'x=good; x=bad echo >/dev/null; echo $x'
+	  bad
+
+	The config.sub script contains a few commands of the form:
+
+	  IFS=- read ...
+
+	which triggers this bug, causing the IFS assignment to persist for the
+	remainder of the script.  This can cause misbehaviour in certain cases,
+	for example:
+
+	  % jsh config.sub i386-linux-gnu
+	  config.sub: test: unknown operator gnu
+
+	  % jsh config.sub i386-gnu/linux
+	  sed: can't read s|gnu/linux|gnu|: No such file or directory
+	  Invalid configuration `i386-gnu/linux': OS `' not recognized
+
+	* config.sub: Save and restore IFS explicitly to avoid shell bugs.
+	* doc/config.sub.1: Regenerate.
+
+	2021-08-04  Jeremy Soller  <jackpot51@gmail.com>
+
+	config.sub: add Linux Relibc Target
+	$ make check
+	cd testsuite && bash config-guess.sh && rm uname
+	PASS: config.guess checks (136 tests)
+	cd testsuite && bash config-sub.sh
+	PASS: config.sub checks (881 tests)
+	PASS: config.sub idempotency checks (818 tests)
+	PASS: config.sub canonicalise each config.guess testcase (136 tests)
+
+	* config.sub (relibc*): Recognize.
+	* doc/config.sub.1: Regenerate.
+	* testsuite/config-sub.data (x86_64-linux-relibc): New test.
+
+	2021-07-06  Stephanos Ioannidis  <root@stephanos.io>
+
+	config.sub: add Zephyr RTOS support
+	This adds the Zephyr RTOS targets in preparation for implementing the
+	Zephyr RTOS-specific toolchain support.
+
+	$ make check
+	cd testsuite && bash config-guess.sh && rm uname
+	PASS: config.guess checks (136 tests)
+	cd testsuite && bash config-sub.sh
+	PASS: config.sub checks (880 tests)
+	PASS: config.sub idempotency checks (817 tests)
+	PASS: config.sub canonicalise each config.guess testcase (136 tests)
+
+	* config.sub (zephyr*): Recognize.
+	* doc/config.sub.1: Regenerate.
+	* testsuite/config-sub.data: Add testcases for *-zephyr.
+
+	2021-07-03  Ozkan Sezer  <sezero@users.sourceforge.net>
+
+	config.sub: disable shellcheck SC2006 / SC2268 warnings
+	This is in line with the recent config.guess change in commit
+	12fcf67c9108f4c4b581eaa302088782f0ee40ea
+
+	* config.sub (shellcheck disable): Add SC2006,SC2268.
+
+	Suggested-by: Jacob Bachmeyer <jcb@gnu.org>
+
+	2021-07-03  Ozkan Sezer  <sezero@users.sourceforge.net>
+
+	config.sub: normalize the quoting in the `echo FOO | sed ...`
+	Some cases quote the argument to echo and some do not.  At runtime
+	it probably does not matter because the substituted values will never
+	contain whitespace, but quoting them all would make shellcheck more
+	useful.
+
+	* config.sub: Consistently quote the argument of echo.
+	* doc/config.sub.1: Regenerate.
+
+	Suggested-by: Jacob Bachmeyer <jcb@gnu.org>
+
+	2021-07-02  Ozkan Sezer  <sezero@users.sourceforge.net>
+
+	config.sub: replace POSIX $( ) with classic ` ` throughout
+	This is in line with the recent config.guess change in commit
+	d70c4fa934de164178054c3a60aaa0024ed07c91.
+
+	The patch was generated using patch-6.gawk script introduced in that
+	commit.
+
+	* config.sub: Revert POSIX command substitutions to classic form.
+
+	2021-06-04  Vineet Gupta  <Vineet.Gupta1@synopsys.com>
+
+	Recognize arc32
+	This is the 32-bit variant of ARCv3 ISA (which is not compatible with the
+	32-bit ARCv2 ISA)
+
+	| make check
+	| cd testsuite && bash config-guess.sh && rm uname
+	| PASS: config.guess checks (136 tests)
+	| cd testsuite && bash config-sub.sh
+	| PASS: config.sub checks (864 tests)
+	| PASS: config.sub idempotency checks (801 tests)
+	| PASS: config.sub canonicalise each config.guess testcase (136 tests)
+
+	* config.guess (arc32:Linux:*:*): Recognize.
+	* config.sub (arc32): Likewise.
+
+	2021-05-27  Jacob Bachmeyer  <jcb@gnu.org>
+
+	Remove automatic patch generators
+	These tools have served their purposes and need not be kept outside of
+	the repository history any longer.  This patch as a diff also collects
+	the contents of the various tools in one convenient place.
+
+	* patch-1.gawk: Remove.
+	* patch-3.gawk: Likewise.
+	* patch-6.gawk: Likewise.
+
+	2021-05-26  Jacob Bachmeyer  <jcb@gnu.org>
+
+	config.guess: manual fixups after previous automatic patch
+	The tool could not handle command substitutions that span lines, but
+	fortunately there were only two such substitutions in the script.
+
+	The test for which universe is active on Pyramid is rewritten into a
+	case block because it was the only use of a command substitution as an
+	argument to the test command, which would require quoting.
+
+	* config.guess: Rewrite "if" for Pyramid systems to "case".
+
+	2021-05-26  Jacob Bachmeyer  <jcb@gnu.org>
+
+	config.guess: replace POSIX $( ) with classic ` ` throughout
+	The previous replacement of backticks with POSIX command substitutions
+	was ill-considered and illogical: this script recognizes many archaic
+	machine types that probably never had POSIX shells, therefore it needs
+	to be able to run successfully under pre-POSIX shells.
+
+	This patch was generated using the included GNU Awk program.
+
+	* config.guess: Revert POSIX command substitutions to classic form.
+	* patch-6.gawk: Store the tool that produced the automated patch.
+
+	2021-05-26  Jacob Bachmeyer  <jcb@gnu.org>
+
+	config.guess: manual fixup after previous automated patches
+	This patch provides the special handling for the GNU system.  As these
+	were two small and unique edits, they were not included in the scripts.
+
+	This patch also cleans up other minor issues that must be addressed
+	before reverting to classic command substitutions and updates
+	"shellcheck" directives to account for changes in this script and the
+	change in "shellcheck" towards reporting individual portability issues.
+
+	2021-05-26  Jacob Bachmeyer  <jcb@gnu.org>
+
+	config.guess: automatic fixups after previous automated patch
+	This patch was generated using the following command:
+
+	  sed -i config.guess \
+	      -e '/="[^"]\+"\(-\|$\)/s/="\([^"([:space:])]\+\)"/=\1/' \
+	      -e '/="[^"]\+"[[:alnum:]]/s/="\$\([^([:space:])]\+\)"/=${\1}/' \
+	      -e \
+	'/\$(echo[^|]\+|/s/\([^[:space:]]\)[[:space:]]*|[[:space:]]*sed/\1 | sed/g'
+
+	* config.guess: Remove unneeded quotes in other variable assignments,
+	standardize spacing for "echo ... | sed" substitutions.
+
+	2021-05-26  Jacob Bachmeyer  <jcb@gnu.org>
+
+	config.guess: remove unneeded quotes and factor command substitutions
+	This is further cleanup and simplifies some constructs that can confuse
+	Emacs' syntax highlighting while generally reducing required quoting.
+
+	This patch was generated using the included GNU Awk program.
+
+	* config.guess: Remove unneeded variable quotes and factor out command
+	substitutions when setting GUESS.
+	* patch-3.gawk: Store the tool that produced the automated patch.
+
+	2021-05-25  Jacob Bachmeyer  <jcb@gnu.org>
+
+	config.guess: manual fixups after previous automatic patch
+	* config.guess: Adjust a few "leftover" cases that the tool could not
+	easily recognize and fixes comment indentation in a few other special
+	cases.
+
+	2021-05-25  Jacob Bachmeyer  <jcb@gnu.org>
+
+	config.guess: use intermediate variable with uname results
+	This will allow quoting to be significantly simplified in another
+	pass through the file.
+
+	This patch was generated using the included GNU Awk program.
+
+	* config.guess: Use GUESS variable to hold results of uname analysis.
+	* patch-1.gawk: Store the tool that produced the automated patch.
+
+	2021-05-25  Jacob Bachmeyer  <jcb@gnu.org>
+
+	config.guess: introduce intermediate variable with uname results
+	This will allow quoting to be significantly simplified in another
+	pass through the file.
+
+	* config.guess: Introduce GUESS variable to hold results of uname analysis.
+
+	2021-05-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	config.guess: fix shellcheck warning SC2154
+	While, according to Plan 9 documentation, the environment variable
+	$cputype is set to the name of the kernel's CPU's architecture,
+	shellcheck warns that cputype is referenced but not assigned.
+	Be on the safe side and do not use cputype if it is not defined
+	or empty.
+
+	* config.guess (*:Plan9:*:*): Fix shellcheck warning SC2154.
+
+	2021-05-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	config.guess: remove redundant quotes in case commands
+	According to the GNU Autoconf Portable Shell Programming manual,
+	the Bourne shell does not systematically split variables and back-quoted
+	expressions, in particular on the right-hand side of assignments and in
+	the argument of 'case'.
+
+	The change is made automatically using the following command:
+	$ sed -E -i 's/(\<case )"(\$[^"]+)"( in\>)/\1\2\3/' config.guess
+
+	* config.guess: Simplify case commands by removing quotes around the
+	argument.
+
+	Suggested-by: Jacob Bachmeyer <jcb@gnu.org>
+
+	2021-05-24  Dmitry V. Levin  <ldv@altlinux.org>
+
+	config.guess: simplify exit status workaround on alphaev67-dec-osf5.1
+	Commit 29865ea8a5622cdd80b7a69a0afa78004b4cd311 introduced an exit trap
+	reset before exiting to avoid a spurious non-zero exit status on
+	alphaev67-dec-osf5.1.  Simplify that code a bit by moving the exit trap
+	reset around.
+
+	* config.guess (alpha:OSF1:*:*): Reset exit trap earlier.
+	* doc/config.guess.1: Regenerate.
+
+2021-10-29  Eli Zaretskii  <eliz@gnu.org>
+
+	* gdb/doc/gdb.texinfo (Command Options): (Data): Document
+	'-memory-tag-violations'.  Update the example.
+
+2021-09-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* src-release.sh (GDB_SUPPPORT_DIRS): Add libbacktrace.
+
+2021-09-27  Nick Alcock  <nick.alcock@oracle.com>
+
+	PR libctf/27967
+	* libtool.m4 (LT_PATH_NM): Try BSDization flags with a user-provided
+	NM, if there is one.  Run nm on itself, not on /dev/null, to avoid
+	errors from nms that refuse to work on non-regular files.  Remove
+	other workarounds for this problem.  Strip out blank lines from the
+	nm output.
+
+2021-09-27  Nick Alcock  <nick.alcock@oracle.com>
+
+	PR libctf/27967
+	* libtool.m4 (lt_cv_sys_global_symbol_pipe): Augment symcode for
+	Solaris 11.
+
+2021-07-03  Nick Clifton  <nickc@redhat.com>
+
+	* 2.37 release branch created.
+
+2021-07-03  Nick Clifton  <nickc@redhat.com>
+
+	* libiberty: Sync with gcc.  Bring in:
+	2021-06-30  Gerald Pfeifer  <gerald@pfeifer.com>
+
+	* make-temp-file.c (usrtmp): Remove.
+	(choose_tmpdir): Remove use of usrtmp.
+
+	2021-06-28  Indu Bhagat  <indu.bhagat@oracle.com>
+
+	* simple-object.c (handle_lto_debug_sections): Copy over .BTF section.
+
+	2021-06-28  Indu Bhagat  <indu.bhagat@oracle.com>
+	    David Faust  <david.faust@oracle.com>
+	    Jose E. Marchesi  <jose.marchesi@oracle.com>
+	    Weimin Pan  <weimin.pan@oracle.com>
+
+	* simple-object.c (handle_lto_debug_sections): Copy over .ctf
+	sections.
+
+	2021-06-05  John David Anglin  <danglin@gcc.gnu.org>
+
+	PR target/100734
+	* configure.ac: Use libiberty snprintf and vsnprintf on
+	hppa*-*-hpux*.
+	* configure: Regenerate.
+
+	2021-05-06  Tom Tromey  <tom@tromey.com>
+
+	* hashtab.c (htab_eq_string): New function.
+
+	2021-05-04  Eric Botcazou  <ebotcazou@adacore.com>
+
+	* configure.ac: Make test for variables more robust.
+	* configure: Regenerate.
+
+	2021-05-03  H.J. Lu  <hjl.tools@gmail.com>
+
+	PR bootstrap/99703
+	* configure: Regenerated.
+
+	2021-04-21  Andreas Schwab  <schwab@linux-m68k.org>
+
+	PR demangler/100177
+	* rust-demangle.c (demangle_const_char): Properly print the
+	character value.
+
+	2021-03-31  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/88115
+	* cp-demangle.c (d_dump, d_make_comp, d_expression_1)
+	(d_count_templates_scopes): Handle DEMANGLE_COMPONENT_VENDOR_EXPR.
+	(d_print_comp_inner): Likewise.
+	<case DEMANGLE_COMPONENT_EXTENDED_OPERATOR>: Revert r11-4926
+	change.
+	<case DEMANGLE_COMPONENT_UNARY>: Likewise.
+	* testsuite/demangle-expected: Adjust __alignof__ tests.
+
+	2021-03-16  Nick Clifton  <nickc@redhat.com>
+
+	* sha1.c (sha1_process_bytes): Use memmove in place of memcpy.
+
+	2021-02-20  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (ACLOCAL, ACLOCAL_AMFLAGS, $(srcdir)/aclocal.m4): Define.
+	(configure_deps): Rename to ...
+	(aclocal_deps): ... this.  Replace aclocal.m4 with acinclude.m4.
+	($(srcdir)/configure): Replace $(configure_deps) with
+	$(srcdir)/aclocal.m4.
+	* aclocal.m4: Move libiberty macros to acinclude.m4, then regenerate.
+	* acinclude.m4: New file.
+	* configure: Regenerate.
+
+	2021-02-19  Ayush Mittal  <ayush.m@samsung.com>
+
+	* argv.c (expandargv): free allocated buffer if read fails.
+
+	2021-02-01  Martin Sebor  <msebor@redhat.com>
+
+	* dyn-string.c (dyn_string_insert_cstr): Use memcpy instead of strncpy
+	to avoid -Wstringop-truncation.
+
+2021-05-29  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure.ac: Add gnulib to configdirs for sim.
 	* configure: Regenerate.
-	* src-release.sh (do_proto_toplev): Invoke 'configure' using
-	'--enable-src-release-build'.
 
-2020-01-17  Joel Brobecker  <brobecker@adacore.com>
+2021-05-24  Maciej W. Rozycki  <macro@orcam.me.uk>
+
+	* MAINTAINERS: Update path to readline config.{sub,guess} files.
+
+2021-05-24  Maciej W. Rozycki  <macro@orcam.me.uk>
+
+	* config.guess: Import from upstream.
+	* config.sub: Likewise.
+
+2021-05-18  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.def: Add configure-sim dependency on all-gnulib.
+	* Makefile.in: Regenerated.
+
+2021-05-04  Nick Clifton  <nickc@redhat.com>
+
+	* configure.ac (AC_PROG_CC): Replace with AC_PROG_CC_C99.
+	* configure: Regenerate.
+
+2021-03-18  Nick Alcock  <nick.alcock@oracle.com>
+
+	PR libctf/27482
+	* Makefile.def: Add install-bfd dependencies for install-libctf and
+	install-ld, and install-strip-bfd dependencies for
+	install-strip-libctf and install-strip-ld; move the install-ld
+	dependency on install-libctf to join it.
+	* Makefile.in: Regenerated.
 
-	* configure.ac: Abort the build with an error if trying to build
-	GDB in tree.
+2021-03-12  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.def: Remove all-sim dependency on configure-gdb.
+	* Makefile.in: Regenerated.
+
+2021-02-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/26766
+	* Makefile.tpl (PGO_BUILD_TRAINING_FLAGS_TO_PASS): Add
+	PGO_BUILD_TRAINING=yes.
+	(PGO_BUILD_TRAINING_MFLAGS): New.
+	(all): Pass $(PGO_BUILD_TRAINING_MFLAGS) to the PGO build.
+
+2021-02-09  Alan Modra  <amodra@gmail.com>
+
+	* configure.ac: Delete arm*-*-symbianelf* entry.
 	* configure: Regenerate.
 
+2021-01-26  Nick Alcock  <nick.alcock@oracle.com>
+
+	* Makefile.def: Add install-libctf dependency to install-ld.
+	* Makefile.in: Regenerated.
+
+2021-01-12  Mike Frysinger  <vapier@gentoo.org>
+
+	* src-release.sh (do_proto_toplev): Rewrite indentation.
+
+2021-01-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/26766
+	* configure.ac:
+	* configure: Regenerated.
+
+2021-01-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27173
+	* configure: Regenerated.
+	* libtool.m4 (_LT_CMD_OLD_ARCHIVE): Check if AR works with
+	--plugin and rc before enabling --plugin.
+
+2021-01-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/26766
+	* Makefile.tpl (BUILD_CFLAGS): New.
+	(CFLAGS): Append $(BUILD_CFLAGS).
+	(CXXFLAGS): Likewise.
+	(PGO_BUILD_GEN_FLAGS_TO_PASS): New.
+	(PGO_BUILD_TRAINING_CFLAGS): Likewise.
+	(PGO_BUILD_TRAINING_CXXFLAGS): Likewise.
+	(PGO_BUILD_TRAINING_FLAGS_TO_PASS): Likewise.
+	(PGO_BUILD_TRAINING_MFLAGS): Likewise.
+	(PGO_BUILD_USE_FLAGS_TO_PASS): Likewise.
+	(PGO-TRAINING-TARGETS): Likewise.
+	(PGO_BUILD_TRAINING): Likewise.
+	(all): Add '+' to the command line for recursive make.  Support
+	the PGO build.
+	* configure.ac: Add --enable-pgo-build[=lto].
+	AC_SUBST PGO_BUILD_GEN_CFLAGS, PGO_BUILD_USE_CFLAGS and
+	PGO_BUILD_LTO_CFLAGS.  Enable the PGO build in Makefile.
+	* Makefile.in: Regenerated.
+	* configure: Likewise.
+
+2021-01-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* Makefile.tpl (AR): Add @AR_PLUGIN_OPTION@
+	(RANLIB): Add @RANLIB_PLUGIN_OPTION@.
+	* configure.ac: Include config/gcc-plugin.m4.
+	AC_SUBST AR_PLUGIN_OPTION and RANLIB_PLUGIN_OPTION.
+	* libtool.m4 (_LT_CMD_OLD_ARCHIVE): Pass --plugin to AR and
+	RANLIB if possible.
+	* Makefile.in: Regenerated.
+	* configure: Likewise.
+
+2021-01-09  Nick Clifton  <nickc@redhat.com>
+
+	* 2.36 release branch crated.
+
+2021-01-07  Samuel Thibault  <samuel.thibault@gnu.org>
+
+	* libtool.m4: Match gnu* along with other GNU systems.
+
+2021-01-07  Alan Modra  <amodra@gmail.com>
+
+	* config.sub: Accept OS of eabi* and gnueabi*.
+
+2021-01-05  Nick Alcock  <nick.alcock@oracle.com>
+
+	* Makefile.def (libctf): No longer no_check.  Checking depends on
+	all-ld.
+	* Makefile.in: Regenerated.
+
+2021-01-05  Nick Clifton  <nickc@redhat.com>
+
+	* libiberty: Sync with gcc.  Bring in:
+	2021-01-04  Martin Liska  <mliska@suse.cz>
+
+	* strverscmp.c: Convert to utf8 from iso8859.
+
+	2020-12-22  Jason Merrill  <jason@redhat.com>
+
+	PR c++/67343
+	* cp-demangle.h (struct d_info): Add unresolved_name_state.
+	* cp-demangle.c (d_prefix): Add subst parm.
+	(d_nested_name): Pass it.
+	(d_unresolved_name): Split out from...
+	(d_expression_1): ...here.
+	(d_demangle_callback): Maybe retry with old sr mangling.
+	* testsuite/demangle-expected: Add test.
+
+	2020-12-21  Jason Merrill  <jason@redhat.com>
+
+	* cp-demangle.c (d_expression_1): Recognize qualified-id
+	on RHS of dt/pt.
+	* testsuite/demangle-expected: Add test.
+
+	2020-12-21  Jason Merrill  <jason@redhat.com>
+
+	* cp-demangle.c (d_unqualified_name): Clear is_expression.
+	* testsuite/demangle-expected: Add tests.
+
+	2020-11-25  Matthew Malcomson  <matthew.malcomson@arm.com>
+
+	* configure: Regenerate.
+	* configure.ac: Avoid using sanitizer.
+
+	2020-11-13  Eduard-Mihai Burtescu  <eddyb@lyken.rs>
+
+	* rust-demangle.c (struct rust_demangler): Add
+	skipping_printing and bound_lifetime_depth fields.
+	(eat): Add (v0-only).
+	(parse_integer_62): Add (v0-only).
+	(parse_opt_integer_62): Add (v0-only).
+	(parse_disambiguator): Add (v0-only).
+	(struct rust_mangled_ident): Add punycode{,_len} fields.
+	(parse_ident): Support v0 identifiers.
+	(print_str): Respect skipping_printing.
+	(print_uint64): Add (v0-only).
+	(print_uint64_hex): Add (v0-only).
+	(print_ident): Respect skipping_printing,
+	Support v0 identifiers.
+	(print_lifetime_from_index): Add (v0-only).
+	(demangle_binder): Add (v0-only).
+	(demangle_path): Add (v0-only).
+	(demangle_generic_arg): Add (v0-only).
+	(demangle_type): Add (v0-only).
+	(demangle_path_maybe_open_generics): Add (v0-only).
+	(demangle_dyn_trait): Add (v0-only).
+	(demangle_const): Add (v0-only).
+	(demangle_const_uint): Add (v0-only).
+	(basic_type): Add (v0-only).
+	(rust_demangle_callback): Support v0 symbols.
+	* testsuite/rust-demangle-expected: Add v0 testcases.
+
+	2020-11-13  Seija Kijin  <doremylover456@gmail.com>
+
+	* strstr.c (strstr): Make implementation ANSI/POSIX compliant.
+
+	2020-11-11  Patrick Palka  <ppalka@redhat.com>
+
+	PR c++/88115
+	* cp-demangle.c (d_print_comp_inner)
+	<case DEMANGLE_COMPONENT_EXTENDED_OPERATOR>: Don't print the
+	"operator " prefix for __alignof__.
+	<case DEMANGLE_COMPONENT_UNARY>: Always print parens around the
+	operand of __alignof__.
+	* testsuite/demangle-expected: Test demangling for __alignof__.
+
+	2020-11-09  Christophe Lyon  <christophe.lyon@linaro.org>
+
+	* pex-win32.c (pex_win32_exec_child): Initialize orig_err.
+
+	2020-10-06  Martin Liska  <mliska@suse.cz>
+
+	PR lto/97290
+	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
+	Use sh_link of a .symtab_shndx section.
+
+2021-01-05  Alan Modra  <amodra@gmail.com>
+
+	* config.guess: Import from upstream.
+	* config.sub: Likewise.
+
+2020-12-16  Martin Liska  <mliska@suse.cz>
+	    Tom de Vries  <tdevries@suse.de>
+
+	* gdb/debuginfod-support.c (struct user_data): Remove has_printed
+	field.  Add meter field.
+	(progressfn): Print progress using meter.
+
+2020-12-02  Enze Li  <lienze2010@hotmail.com>
+
+	* .gitignore: Add gnu global outputs.
+
+2020-12-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* .gitignore: Sync with gcc.
+
+2020-10-26  Andreas Rammhold <andreas@rammhold.de>
+
+	* src-release.sh: Use sha256sum instead of md5sum.
+
+2020-10-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in: Rebuild.
+	* Makefile.def: Make distclean-gnulib depend on distclean-gdb and
+	distclean-gdbserver.
+
+2020-07-24  Aaron Merey  <amerey@redhat.com>
+
+	* 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>
 
 	* src-release.sh (GDB_SUPPORT_DIRS): Add 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.20200303/config/acinclude.m4 ./config/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/acinclude.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/acinclude.m4	2026-03-05 02:07:20.000000000 +0000
@@ -374,88 +374,6 @@ AC_SUBST(INTLLIB)
 ])
 
 dnl ====================================================================
-dnl Find the simulator library.
-AC_DEFUN([CYG_AC_PATH_SIM], [
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.. ../../../../../../../../../.."
-case "$target_cpu" in
-    powerpc)	target_dir=ppc ;;
-    sparc*)	target_dir=erc32 ;;
-    mips*)	target_dir=mips ;;
-    *)		target_dir=$target_cpu ;;
-esac
-dnl First look for the header file
-AC_MSG_CHECKING(for the simulator header file)
-AC_CACHE_VAL(ac_cv_c_simh,[
-for i in $dirlist; do
-    if test -f "${srcdir}/$i/include/remote-sim.h" ; then
-	ac_cv_c_simh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})`
-	break
-    fi
-done
-])
-if test x"${ac_cv_c_simh}" != x; then
-    SIMHDIR="-I${ac_cv_c_simh}"
-    AC_MSG_RESULT(${ac_cv_c_simh})
-else
-    AC_MSG_RESULT(none)
-fi
-AC_SUBST(SIMHDIR)
-
-dnl See whether it's a devo or Foundry branch simulator
-AC_MSG_CHECKING(Whether this is a devo simulator )
-AC_CACHE_VAL(ac_cv_c_simdevo,[
-    CPPFLAGS="$CPPFLAGS $SIMHDIR"
-    AC_EGREP_HEADER([SIM_DESC sim_open.*struct _bfd], remote-sim.h,
-        ac_cv_c_simdevo=yes,
-        ac_cv_c_simdevo=no)
-])
-if test x"$ac_cv_c_simdevo" = x"yes" ; then
-    AC_DEFINE(HAVE_DEVO_SIM)
-fi
-AC_MSG_RESULT(${ac_cv_c_simdevo})
-AC_SUBST(HAVE_DEVO_SIM)
-
-dnl Next look for the library
-AC_MSG_CHECKING(for the simulator library)
-AC_CACHE_VAL(ac_cv_c_simlib,[
-for i in $dirlist; do
-    if test -f "$i/sim/$target_dir/Makefile" ; then
-	ac_cv_c_simlib=`(cd $i/sim/$target_dir; ${PWDCMD-pwd})`
-    fi
-done
-])
-if test x"${ac_cv_c_simlib}" != x; then
-    SIMLIB="-L${ac_cv_c_simlib}"
-else
-    AC_MSG_RESULT(none)
-    dnl FIXME: this is kinda bogus, cause umtimately the TM will build
-    dnl all the libraries for several architectures. But for now, this
-    dnl will work till then.
-dnl     AC_MSG_CHECKING(for the simulator installed with the compiler libraries)
-    dnl Transform the name of the compiler to it's cross variant, unless
-    dnl CXX is set. This is also what CXX gets set to in the generated
-    dnl Makefile.
-    CROSS_GCC=`echo gcc | sed -e "s/^/$target/"`
-
-    dnl Get G++'s full path to libgcc.a
-changequote(,)
-    gccpath=`${CROSS_GCC} --print-libgcc | sed -e 's:[a-z0-9A-Z\.\-]*/libgcc.a::' -e 's:lib/gcc-lib/::'`lib
-changequote([,])
-    if test -f $gccpath/libsim.a -o -f $gccpath/libsim.so ; then
-        ac_cv_c_simlib="$gccpath/"
-        SIMLIB="-L${ac_cv_c_simlib}"
-	AC_MSG_RESULT(${ac_cv_c_simlib})
-    else
-        AM_CONDITIONAL(PSIM, test x$psim = xno)
-	SIMLIB=""
-	AC_MSG_RESULT(none)
-dnl         ac_cv_c_simlib=none
-    fi
-fi
-AC_SUBST(SIMLIB)
-])
-
-dnl ====================================================================
 dnl Find the libiberty library.
 AC_DEFUN([CYG_AC_PATH_LIBIBERTY], [
 AC_MSG_CHECKING(for the libiberty library in the build tree)
@@ -477,26 +395,6 @@ AC_SUBST(LIBIBERTY)
 ])
 
 dnl ====================================================================
-AC_DEFUN([CYG_AC_PATH_DEVO], [
-AC_MSG_CHECKING(for devo headers in the source tree)
-dirlist=".. ../../ ../../../ ../../../../ ../../../../../ ../../../../../../ ../../../../../../.. ../../../../../../../.. ../../../../../../../../.. ../../../../../../../../../.."
-AC_CACHE_VAL(ac_cv_c_devoh,[
-for i in $dirlist; do
-    if test -f "${srcdir}/$i/include/remote-sim.h" ; then
-	ac_cv_c_devoh=`(cd ${srcdir}/$i/include; ${PWDCMD-pwd})`
-    fi
-done
-])
-if test x"${ac_cv_c_devoh}" != x; then
-    DEVOHDIR="-I${ac_cv_c_devoh}"
-    AC_MSG_RESULT(${ac_cv_c_devoh})
-else
-    AC_MSG_RESULT(none)
-fi
-AC_SUBST(DEVOHDIR)
-])
-
-dnl ====================================================================
 dnl Find all the ILU headers and libraries
 AC_DEFUN([CYG_AC_PATH_ILU], [
 AC_MSG_CHECKING(for ILU kernel headers in the source tree)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/acx.m4 ./config/acx.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/acx.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/acx.m4	2026-03-05 02:07:20.000000000 +0000
@@ -107,9 +107,9 @@ AC_SUBST([target_subdir]) []dnl
 
 
 ####
-# _NCN_TOOL_PREFIXES:  Some stuff that oughtta be done in AC_CANONICAL_SYSTEM 
+# _NCN_TOOL_PREFIXES:  Some stuff that oughtta be done in AC_CANONICAL_TARGET
 # or AC_INIT.
-# These demand that AC_CANONICAL_SYSTEM be called beforehand.
+# These demand that AC_CANONICAL_HOST and AC_CANONICAL_TARGET be called beforehand.
 AC_DEFUN([_NCN_TOOL_PREFIXES],
 [ncn_tool_prefix=
 test -n "$host_alias" && ncn_tool_prefix=$host_alias-
@@ -393,9 +393,13 @@ AC_DEFUN([ACX_PROG_GNAT],
 AC_REQUIRE([AC_PROG_CC])
 AC_CHECK_TOOL(GNATBIND, gnatbind, no)
 AC_CHECK_TOOL(GNATMAKE, gnatmake, no)
-AC_CACHE_CHECK([whether compiler driver understands Ada],
+AC_CACHE_CHECK([whether compiler driver understands Ada and is recent enough],
 		 acx_cv_cc_gcc_supports_ada,
 [cat >conftest.adb <<EOF
+pragma Warnings (Off);
+with System.CRTL;
+pragma Warnings (On);
+use type System.CRTL.int64;
 procedure conftest is begin null; end conftest;
 EOF
 acx_cv_cc_gcc_supports_ada=no
@@ -420,6 +424,41 @@ else
 fi
 ])
 
+# Test for Rust
+# We require cargo and rustc for some parts of the rust compiler.
+AC_DEFUN([ACX_PROG_CARGO],
+[AC_CHECK_PROGS(CARGO, cargo, no)
+if test "x$CARGO" != xno; then
+  have_cargo=yes
+else
+  have_cargo=no
+fi])
+
+# Test for D.
+AC_DEFUN([ACX_PROG_GDC],
+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])
+AC_REQUIRE([AC_PROG_CC])
+AC_CHECK_TOOL(GDC, gdc, no)
+AC_CACHE_CHECK([whether the D compiler works],
+		 acx_cv_d_compiler_works,
+[cat >conftest.d <<EOF
+module conftest; int main() { return 0; }
+EOF
+acx_cv_d_compiler_works=no
+if test "x$GDC" != xno; then
+  errors=`(${GDC} $1[]m4_ifval([$1], [ ])-c conftest.d) 2>&1 || echo failure`
+  if test x"$errors" = x && test -f conftest.$ac_objext; then
+    acx_cv_d_compiler_works=yes
+  fi
+  rm -f conftest.*
+fi])
+if test "x$GDC" != xno && test x$acx_cv_d_compiler_works != xno; then
+  have_gdc=yes
+else
+  have_gdc=no
+fi
+])
+
 dnl 'make compare' can be significantly faster, if cmp itself can
 dnl skip bytes instead of using tail.  The test being performed is
 dnl "if cmp --ignore-initial=2 t1 t2 && ! cmp --ignore-initial=1 t1 t2"
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/ax_count_cpus.m4 ./config/ax_count_cpus.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/ax_count_cpus.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/ax_count_cpus.m4	2026-03-05 02:07:20.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.20200303/config/ax_cxx_compile_stdcxx.m4 ./config/ax_cxx_compile_stdcxx.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/ax_cxx_compile_stdcxx.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/ax_cxx_compile_stdcxx.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,979 @@
+# ===========================================================================
+#  https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
+#
+# DESCRIPTION
+#
+#   Check for baseline language coverage in the compiler for the specified
+#   version of the C++ standard.  If necessary, add switches to CXX and
+#   CXXCPP to enable support.  VERSION may be '11' (for the C++11 standard)
+#   or '14' (for the C++14 standard).
+#
+#   The second argument, if specified, indicates whether you insist on an
+#   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
+#   -std=c++11).  If neither is specified, you get whatever works, with
+#   preference for no added switch, and then for an extended mode.
+#
+#   The third argument, if specified 'mandatory' or if left unspecified,
+#   indicates that baseline support for the specified C++ standard is
+#   required and that the macro should error out if no mode with that
+#   support is found.  If specified 'optional', then configuration proceeds
+#   regardless, after defining HAVE_CXX${VERSION} if and only if a
+#   supporting mode is found.
+#
+#   If the fourth argument is an optional CXX/CXXFLAG/CPPFLAG suffix, e.g.
+#   "_FOR_BUILD" or "_FOR_TARGET".
+#
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
+#   Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
+#   Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
+#   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
+#   Copyright (c) 2015 Paul Norman <penorman@mac.com>
+#   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
+#   Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
+#   Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
+#   Copyright (c) 2020 Jason Merrill <jason@redhat.com>
+#
+#   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 12
+
+dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
+dnl  (serial version number 13).
+
+AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
+  m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
+        [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
+        [$1], [17], [ax_cxx_compile_alternatives="17 1z"],
+        [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$2], [], [],
+        [$2], [ext], [],
+        [$2], [noext], [],
+        [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
+  m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
+        [$3], [optional], [ax_cxx_compile_cxx$1_required=false],
+        [m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
+  AC_LANG_PUSH([C++])dnl
+  ac_success=no
+  m4_ifnblank([$4], [dnl
+    ax_cv_cxx_compile_cxx$1_orig_cxx="$CXX"
+    ax_cv_cxx_compile_cxx$1_orig_cxxflags="$CXXFLAGS"
+    ax_cv_cxx_compile_cxx$1_orig_cppflags="$CPPFLAGS"
+    CXX="$CXX$4"
+    CXXFLAGS="$CXXFLAGS$4"
+    CPPFLAGS="$CPPFLAGS$4"])
+  m4_if([$2], [], [dnl
+    AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+		   ax_cv_cxx_compile_cxx$1$4,
+      [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+        [ax_cv_cxx_compile_cxx$1$4=yes],
+        [ax_cv_cxx_compile_cxx$1$4=no])])
+    if test x$ax_cv_cxx_compile_cxx$1$4 = xyes; then
+      ac_success=yes
+    fi])
+
+  m4_if([$2], [noext], [], [dnl
+  if test x$ac_success = xno; then
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      switch="-std=gnu++${alternative}"
+      cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1$4_$switch])
+      AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                     $cachevar,
+        [ac_save_CXX="$CXX"
+         CXX="$CXX $switch"
+         AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+          [eval $cachevar=yes],
+          [eval $cachevar=no])
+         CXX="$ac_save_CXX"])
+      if eval test x\$$cachevar = xyes; then
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        ac_success=yes
+        break
+      fi
+    done
+  fi])
+
+  m4_if([$2], [ext], [], [dnl
+  if test x$ac_success = xno; then
+    dnl HP's aCC needs +std=c++11 according to:
+    dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
+    dnl Cray's crayCC needs "-h std=c++11"
+    for alternative in ${ax_cxx_compile_alternatives}; do
+      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
+        cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1$4_$switch])
+        AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
+                       $cachevar,
+          [ac_save_CXX="$CXX"
+           CXX="$CXX $switch"
+           AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+            [eval $cachevar=yes],
+            [eval $cachevar=no])
+           CXX="$ac_save_CXX"])
+        if eval test x\$$cachevar = xyes; then
+          CXX="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          ac_success=yes
+          break
+        fi
+      done
+      if test x$ac_success = xyes; then
+        break
+      fi
+    done
+  fi])
+  m4_ifnblank([$4], [dnl
+    CXX$4="$CXX"
+    CXXFLAGS$4="$CXXFLAGS"
+    CPPFLAGS$4="$CPPFLAGS"
+    CXX="$ax_cv_cxx_compile_cxx$1_orig_cxx"
+    CXXFLAGS="$ax_cv_cxx_compile_cxx$1_orig_cxxflags"
+    CPPFLAGS="$ax_cv_cxx_compile_cxx$1_orig_cppflags"])
+  AC_LANG_POP([C++])
+  if test x$ax_cxx_compile_cxx$1_required = xtrue; then
+    if test x$ac_success = xno; then
+      AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX$1$4=0
+    AC_MSG_NOTICE([No compiler with C++$1 support was found])
+  else
+    HAVE_CXX$1$4=1
+    AC_DEFINE(HAVE_CXX$1$4,1,
+              [define if the compiler supports basic C++$1 syntax])
+  fi
+  AC_SUBST(HAVE_CXX$1$4)
+])
+
+
+dnl  Test body for checking C++11 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+)
+
+
+dnl  Test body for checking C++14 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+)
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
+)
+
+dnl  Tests for new features in C++11
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
+
+// 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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+]])
+
+
+dnl  Tests for new features in C++14
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+]])
+
+
+dnl  Tests for new features in C++17
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
+
+// If the compiler admits that it is not ready for C++17, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201703L
+
+#error "This is not a C++17 compiler"
+
+#else
+
+#include <initializer_list>
+#include <utility>
+#include <type_traits>
+
+namespace cxx17
+{
+
+  namespace test_constexpr_lambdas
+  {
+
+    constexpr int foo = [](){return 42;}();
+
+  }
+
+  namespace test::nested_namespace::definitions
+  {
+
+  }
+
+  namespace test_fold_expression
+  {
+
+    template<typename... Args>
+    int multiply(Args... args)
+    {
+      return (args * ... * 1);
+    }
+
+    template<typename... Args>
+    bool all(Args... args)
+    {
+      return (args && ...);
+    }
+
+  }
+
+  namespace test_extended_static_assert
+  {
+
+    static_assert (true);
+
+  }
+
+  namespace test_auto_brace_init_list
+  {
+
+    auto foo = {5};
+    auto bar {5};
+
+    static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+    static_assert(std::is_same<int, decltype(bar)>::value);
+  }
+
+  namespace test_typename_in_template_template_parameter
+  {
+
+    template<template<typename> typename X> struct D;
+
+  }
+
+  namespace test_fallthrough_nodiscard_maybe_unused_attributes
+  {
+
+    int f1()
+    {
+      return 42;
+    }
+
+    [[nodiscard]] int f2()
+    {
+      [[maybe_unused]] auto unused = f1();
+
+      switch (f1())
+      {
+      case 17:
+        f1();
+        [[fallthrough]];
+      case 42:
+        f1();
+      }
+      return f1();
+    }
+
+  }
+
+  namespace test_extended_aggregate_initialization
+  {
+
+    struct base1
+    {
+      int b1, b2 = 42;
+    };
+
+    struct base2
+    {
+      base2() {
+        b3 = 42;
+      }
+      int b3;
+    };
+
+    struct derived : base1, base2
+    {
+        int d;
+    };
+
+    derived d1 {{1, 2}, {}, 4};  // full initialization
+    derived d2 {{}, {}, 4};      // value-initialized bases
+
+  }
+
+  namespace test_general_range_based_for_loop
+  {
+
+    struct iter
+    {
+      int i;
+
+      int& operator* ()
+      {
+        return i;
+      }
+
+      const int& operator* () const
+      {
+        return i;
+      }
+
+      iter& operator++()
+      {
+        ++i;
+        return *this;
+      }
+    };
+
+    struct sentinel
+    {
+      int i;
+    };
+
+    bool operator== (const iter& i, const sentinel& s)
+    {
+      return i.i == s.i;
+    }
+
+    bool operator!= (const iter& i, const sentinel& s)
+    {
+      return !(i == s);
+    }
+
+    struct range
+    {
+      iter begin() const
+      {
+        return {0};
+      }
+
+      sentinel end() const
+      {
+        return {5};
+      }
+    };
+
+    void f()
+    {
+      range r {};
+
+      for (auto i : r)
+      {
+        [[maybe_unused]] auto v = i;
+      }
+    }
+
+  }
+
+  namespace test_lambda_capture_asterisk_this_by_value
+  {
+
+    struct t
+    {
+      int i;
+      int foo()
+      {
+        return [*this]()
+        {
+          return i;
+        }();
+      }
+    };
+
+  }
+
+  namespace test_enum_class_construction
+  {
+
+    enum class byte : unsigned char
+    {};
+
+    byte foo {42};
+
+  }
+
+  namespace test_constexpr_if
+  {
+
+    template <bool cond>
+    int f ()
+    {
+      if constexpr(cond)
+      {
+        return 13;
+      }
+      else
+      {
+        return 42;
+      }
+    }
+
+  }
+
+  namespace test_selection_statement_with_initializer
+  {
+
+    int f()
+    {
+      return 13;
+    }
+
+    int f2()
+    {
+      if (auto i = f(); i > 0)
+      {
+        return 3;
+      }
+
+      switch (auto i = f(); i + 4)
+      {
+      case 17:
+        return 2;
+
+      default:
+        return 1;
+      }
+    }
+
+  }
+
+  namespace test_template_argument_deduction_for_class_templates
+  {
+
+    template <typename T1, typename T2>
+    struct pair
+    {
+      pair (T1 p1, T2 p2)
+        : m1 {p1},
+          m2 {p2}
+      {}
+
+      T1 m1;
+      T2 m2;
+    };
+
+    void f()
+    {
+      [[maybe_unused]] auto p = pair{13, 42u};
+    }
+
+  }
+
+  namespace test_non_type_auto_template_parameters
+  {
+
+    template <auto n>
+    struct B
+    {};
+
+    B<5> b1;
+    B<'a'> b2;
+
+  }
+
+  namespace test_structured_bindings
+  {
+
+    int arr[2] = { 1, 2 };
+    std::pair<int, int> pr = { 1, 2 };
+
+    auto f1() -> int(&)[2]
+    {
+      return arr;
+    }
+
+    auto f2() -> std::pair<int, int>&
+    {
+      return pr;
+    }
+
+    struct S
+    {
+      int x1 : 2;
+      volatile double y1;
+    };
+
+    S f3()
+    {
+      return {};
+    }
+
+    auto [ x1, y1 ] = f1();
+    auto& [ xr1, yr1 ] = f1();
+    auto [ x2, y2 ] = f2();
+    auto& [ xr2, yr2 ] = f2();
+    const auto [ x3, y3 ] = f3();
+
+  }
+
+  namespace test_exception_spec_type_system
+  {
+
+    struct Good {};
+    struct Bad {};
+
+    void g1() noexcept;
+    void g2();
+
+    template<typename T>
+    Bad
+    f(T*, T*);
+
+    template<typename T1, typename T2>
+    Good
+    f(T1*, T2*);
+
+    static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+
+  }
+
+  namespace test_inline_variables
+  {
+
+    template<class T> void f(T)
+    {}
+
+    template<class T> inline T g(T)
+    {
+      return T{};
+    }
+
+    template<> inline void f<>(int)
+    {}
+
+    template<> int g<>(int)
+    {
+      return 5;
+    }
+
+  }
+
+}  // namespace cxx17
+
+#endif  // __cplusplus < 201703L
+
+]])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/bfd64.m4 ./config/bfd64.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/bfd64.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/bfd64.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,40 @@
+dnl
+dnl   Copyright (C) 2012-2022 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
+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; see the file COPYING3.  If not see
+dnl <http://www.gnu.org/licenses/>.
+dnl
+
+dnl Make sure your module depends on `all-bfd' when invoking this macro.
+AC_DEFUN([BFD_64_BIT], [dnl
+# See whether 64-bit bfd lib has been enabled.
+OLD_CPPFLAGS=$CPPFLAGS
+# Put the old CPPFLAGS last, in case the user's CPPFLAGS point somewhere
+# with bfd, with -I/foo/include.  We always want our bfd.
+CPPFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CPPFLAGS"
+# Note we cannot cache the result of this check because BFD64 may change
+# when a secondary target has been added or removed and we have no access
+# to this information here.
+AC_MSG_CHECKING([whether BFD is 64-bit])
+AC_EGREP_CPP([HAVE_BFD64],
+  AC_LANG_PROGRAM(
+    [#include "bfd.h"],
+    [dnl
+#ifdef BFD64
+HAVE_BFD64
+#endif]),
+  [have_64_bit_bfd=yes],
+  [have_64_bit_bfd=no])
+AC_MSG_RESULT([$have_64_bit_bfd])
+CPPFLAGS=$OLD_CPPFLAGS])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/bootstrap-lto-lean.mk ./config/bootstrap-lto-lean.mk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/bootstrap-lto-lean.mk	1970-01-01 00:00:00.000000000 +0000
+++ ./config/bootstrap-lto-lean.mk	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,19 @@
+# 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_NM = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-nm$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/
+
+LTO_EXPORTS = AR="$(LTO_AR)"; export AR; \
+	      RANLIB="$(LTO_RANLIB)"; export RANLIB; \
+	      NM="$(LTO_NM)"; export NM;
+LTO_FLAGS_TO_PASS = AR="$(LTO_AR)" RANLIB="$(LTO_RANLIB)" NM="$(LTO_NM)"
+
+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.20200303/config/bootstrap-lto.mk ./config/bootstrap-lto.mk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/bootstrap-lto.mk	2020-03-03 02:08:51.000000000 +0000
+++ ./config/bootstrap-lto.mk	2026-03-05 02:07:20.000000000 +0000
@@ -9,9 +9,12 @@ 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_NM = $$r/$(HOST_SUBDIR)/prev-gcc/gcc-nm$(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)"
+	      RANLIB="$(LTO_RANLIB)"; export RANLIB; \
+	      NM="$(LTO_NM)"; export NM;
+LTO_FLAGS_TO_PASS = AR="$(LTO_AR)" RANLIB="$(LTO_RANLIB)" NM="$(LTO_NM)"
 
 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.20200303/config/bootstrap-Og.mk ./config/bootstrap-Og.mk
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/bootstrap-Og.mk	1970-01-01 00:00:00.000000000 +0000
+++ ./config/bootstrap-Og.mk	2026-03-05 02:07:20.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.20200303/config/cet.m4 ./config/cet.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/cet.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/cet.m4	2026-03-05 02:07:20.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,140 @@ 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([
+int
+main ()
+{
+  asm ("endbr32");
+  return 0;
+}
+    ],
+    [have_multi_byte_nop=yes],
+    [have_multi_byte_nop=no])
+    have_cet=no
+    if test x$have_multi_byte_nop = xyes; 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])
+    fi
+    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.20200303/config/ChangeLog ./config/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/ChangeLog	2020-03-03 02:08:51.000000000 +0000
+++ ./config/ChangeLog	2026-03-05 02:07:20.000000000 +0000
@@ -1,3 +1,184 @@
+2023-11-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* hwcaps.m4 (GCC_CHECK_ASSEMBLER_HWCAP): Require
+	AC_CANONICAL_TARGET.
+
+2023-11-15  Arsen ArsenoviÄ‡  <arsen@aarsen.me>
+
+	* intlmacosx.m4: Import from gettext-0.22 (serial 8).
+	* gettext.m4: Sync with gettext-0.22 (serial 77).
+	* gettext-sister.m4 (ZW_GNU_GETTEXT_SISTER_DIR): Load gettexts
+	uninstalled-config.sh, or call AM_GNU_GETTEXT if missing.
+	* iconv.m4: Sync with gettext-0.22 (serial 26).
+
+2022-12-31  Nick Clifton  <nickc@redhat.com>
+
+	* 2.40 branch created.
+
+2022-07-08  Nick Clifton  <nickc@redhat.com>
+
+	* 2.39 branch created.
+
+2022-01-22  Nick Clifton  <nickc@redhat.com>
+
+	* 2.38 release branch created.
+
+2021-07-03  Nick Clifton  <nickc@redhat.com>
+
+	* 2.37 release branch created.
+
+2021-06-14  Michael Forney  <mforney@mforney.org>
+
+	* gettext.m4 (AM_GNU_GETTEXT): Skip checks for the internal
+	symbols _nl_msg_cat_cntr, _nl_domain_bindings, and
+	_nl_expand_alias, if __GNU_GETTEXT_SUPPORTED_REVISION is defined.
+	Backport of gettext serial 68 patch.
+
+2021-05-18  Mike Frysinger  <vapier@gentoo.org>
+
+	* acinclude.m4 (CYG_AC_PATH_SIM, CYG_AC_PATH_DEVO): Delete.
+
+2021-03-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/27397
+	* cet.m4 (GCC_CET_HOST_FLAGS): Check if host supports multi-byte
+	NOPs.
+
+2021-02-13  Mike Frysinger  <vapier@gentoo.org>
+
+	* debuginfod.m4: Delete m4_include(../config/pkg.m4).
+
+2021-01-12  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/26792
+	* jobserver.m4: New file.
+
+2021-01-11  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR ld/27173
+	* gcc-plugin.m4 (GCC_PLUGIN_OPTION): Check if AR works with
+	--plugin and rc before enabling --plugin.
+
+2021-01-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* gcc-plugin.m4 (GCC_PLUGIN_OPTION): New.
+
+2021-01-09  Nick Clifton  <nickc@redhat.com>
+
+	* 2.36 release branch crated.
+
+2021-01-01  Nicolas Boulenguez  <nicolas@debian.org>
+
+	* override.m4: Correct comment grammar.
+
+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.
@@ -2162,4 +2343,3 @@ Thu Jan 30 16:17:30 1992  Stu Grossman
 Tue Dec 10 00:10:55 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
 
 	* ChangeLog: fresh changelog.
-
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/debuginfod.m4 ./config/debuginfod.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/debuginfod.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/debuginfod.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,39 @@
+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.
+
+AC_DEFUN([AC_DEBUGINFOD],
+[
+# Handle optional debuginfod support as well as optional section
+# downloading support.
+#
+# Define HAVE_LIBDEBUGINFOD if libdebuginfod is found with version >= 0.179.
+#
+# Define HAVE_LIBDEBUGINFOD_FIND_SECTION if libdebuginfod is found with
+# version >= 0.188.
+AC_ARG_WITH([debuginfod],
+  AS_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.188],
+    [AC_DEFINE([HAVE_LIBDEBUGINFOD_FIND_SECTION], [1],
+               [Define to 1 if debuginfod section downloading is supported.])],
+    [AC_MSG_WARN([libdebuginfod is missing or some features may be unavailable.])])
+
+  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.20200303/config/dejagnu.m4 ./config/dejagnu.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/dejagnu.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/dejagnu.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,22 @@
+# DEJAGNU_CHECK_VERSION DEJAGNU_CHECK_VERSION
+# --------------------------------------------------------------
+# Test whether there is an incompatibility between DejaGnu and GCC versions.
+# Older versions ( <= 1.5.1 ) of dejagnu.h use GNU inline semantics improperly.
+# The issue presents itself as link-time errors complaining about undefined
+# references to 'pass' and 'fail'.
+AC_DEFUN([DEJAGNU_CHECK_VERSION],
+[
+  AC_MSG_CHECKING([for incompatibility between DejaGnu and GCC])
+  AC_MSG_RESULT([$ac_cv_dejagnu_compat])
+
+  AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <dejagnu.h>]],
+				  [[pass ("test foo");
+	       return 0;]])],
+	      [ac_cv_dejagnu_compat=yes],
+	      [ac_cv_dejagnu_compat=no])
+  AC_MSG_RESULT([$ac_cv_dejagnu_compat])
+
+  if test "$ac_cv_dejagnu_compat}" = no ; then
+    AC_MSG_RESULT([detected incompatibility between dejagnu version and gcc])
+  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.20200303/config/dfp.m4 ./config/dfp.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/dfp.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/dfp.m4	2026-03-05 02:07:20.000000000 +0000
@@ -1,3 +1,21 @@
+# Copyright (C) 2010-2022 Free Software Foundation, Inc.
+
+# This file is part of GCC.
+
+# GCC is free software; you can redistribute 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.
+
+# GCC is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+# License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
 dnl @synopsis GCC_AC_ENABLE_DECIMAL_FLOAT([target triplet])
 dnl
 dnl Enable C extension for decimal float if target supports it.
@@ -20,6 +38,7 @@ Valid choices are 'yes', 'bid', 'dpd', a
 ],
 [
   case $1 in
+    aarch64* | \
     powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \
     i?86*-*-elfiamcu | i?86*-*-gnu* | x86_64*-*-gnu* | \
     i?86*-*-mingw* | x86_64*-*-mingw* | \
@@ -37,7 +56,7 @@ Valid choices are 'yes', 'bid', 'dpd', a
 case x$enable_decimal_float in
   xyes)
     case $1 in
-      i?86*-*-* | x86_64*-*-*)
+      aarch64* | i?86*-*-* | x86_64*-*-*)
 	enable_decimal_float=bid
 	;;
       *)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/enable.m4 ./config/enable.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/enable.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/enable.m4	2026-03-05 02:07:20.000000000 +0000
@@ -11,7 +11,7 @@ dnl See docs/html/17_intro/configury.htm
 dnl
 AC_DEFUN([GCC_ENABLE],[dnl
 m4_define([_g_switch],[--enable-$1])dnl
-m4_define([_g_help],[AC_HELP_STRING(_g_switch$3,[$4 @<:@default=$2@:>@])])dnl
+m4_define([_g_help],[AS_HELP_STRING([_g_switch$3],[$4 @<:@default=$2@:>@])])dnl
  AC_ARG_ENABLE($1,_g_help,
   m4_bmatch([$5],
    [^permit ],
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/futex.m4 ./config/futex.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/futex.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/futex.m4	2026-03-05 02:07:20.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.20200303/config/gcc-plugin.m4 ./config/gcc-plugin.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/gcc-plugin.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/gcc-plugin.m4	2026-03-05 02:07:20.000000000 +0000
@@ -45,11 +45,11 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
      ;;
      *)
        if test x$build = x$host; then
-	 export_sym_check="objdump${exeext} -T"
+	 export_sym_check="$ac_cv_prog_OBJDUMP -T"
        elif test x$host = x$target; then
 	 export_sym_check="$gcc_cv_objdump -T"
        else
-	 export_sym_check=
+	 export_sym_check="$ac_cv_prog_OBJDUMP -T"
        fi
      ;;
    esac
@@ -91,14 +91,18 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
      # Check that we can build shared objects with -fPIC -shared
      saved_LDFLAGS="$LDFLAGS"
      saved_CFLAGS="$CFLAGS"
+     saved_CXXFLAGS="$CXXFLAGS"
      case "${host}" in
        *-*-darwin*)
 	 CFLAGS=`echo $CFLAGS | sed s/-mdynamic-no-pic//g`
 	 CFLAGS="$CFLAGS -fPIC"
+	 CXXFLAGS=`echo $CXXFLAGS | sed s/-mdynamic-no-pic//g`
+	 CXXFLAGS="$CXXFLAGS -fPIC"
 	 LDFLAGS="$LDFLAGS -shared -undefined dynamic_lookup"
        ;;
        *)
 	 CFLAGS="$CFLAGS -fPIC"
+	 CXXFLAGS="$CXXFLAGS -fPIC"
 	 LDFLAGS="$LDFLAGS -fPIC -shared"
        ;;
      esac
@@ -113,6 +117,7 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
      fi
      LDFLAGS="$saved_LDFLAGS"
      CFLAGS="$saved_CFLAGS"
+     CXXFLAGS="$saved_CXXFLAGS"
 
      # If plugin support had been requested but not available, fail.
      if test x"$enable_plugin" = x"no" ; then
@@ -124,3 +129,43 @@ AC_DEFUN([GCC_ENABLE_PLUGINS],
      fi
    fi
 ])
+
+dnl
+dnl
+dnl GCC_PLUGIN_OPTION
+dnl    (SHELL-CODE_HANDLER)
+dnl
+AC_DEFUN([GCC_PLUGIN_OPTION],[dnl
+AC_MSG_CHECKING([for -plugin option])
+
+plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+plugin_option=
+for plugin in $plugin_names; do
+  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
+  if test x$plugin_so = x$plugin; then
+    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
+  fi
+  if test x$plugin_so != x$plugin; then
+    plugin_option="--plugin $plugin_so"
+    break
+  fi
+done
+dnl Check if ${AR} $plugin_option rc works.
+AC_CHECK_TOOL(AR, ar)
+if test "${AR}" = "" ; then
+  AC_MSG_ERROR([Required archive tool 'ar' not found on PATH.])
+fi
+touch conftest.c
+${AR} $plugin_option rc conftest.a conftest.c
+if test "$?" != 0; then
+  AC_MSG_WARN([Failed: $AR $plugin_option rc])
+  plugin_option=
+fi
+rm -f conftest.*
+if test -n "$plugin_option"; then
+  $1="$plugin_option"
+  AC_MSG_RESULT($plugin_option)
+else
+  AC_MSG_RESULT([no])
+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.20200303/config/gettext.m4 ./config/gettext.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/gettext.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/gettext.m4	2026-03-05 02:07:20.000000000 +0000
@@ -1,43 +1,39 @@
-# gettext.m4 serial 20 (gettext-0.12)
-dnl Copyright (C) 1995-2003 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.
+# gettext.m4 serial 72 (gettext-0.21.1)
+dnl Copyright (C) 1995-2014, 2016, 2018-2020 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
 dnl License but which still want to provide support for the GNU gettext
 dnl functionality.
 dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
 dnl They are *not* in the public domain.
 
 dnl Authors:
 dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
 
 dnl Macro to add for using GNU gettext.
 
 dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-dnl    default (if it is not specified or empty) is 'no-libtool'.
-dnl    INTLSYMBOL should be 'external' for packages with no intl directory,
-dnl    and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl INTLSYMBOL must be one of 'external', 'use-libtool'.
+dnl    INTLSYMBOL should be 'external' for packages other than GNU gettext, and
+dnl    'use-libtool' for the packages 'gettext-runtime' and 'gettext-tools'.
 dnl    If INTLSYMBOL is 'use-libtool', then a libtool library
 dnl    $(top_builddir)/intl/libintl.la will be created (shared and/or static,
 dnl    depending on --{enable,disable}-{shared,static} and on the presence of
-dnl    AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-dnl    $(top_builddir)/intl/libintl.a will be created.
+dnl    AM-DISABLE-SHARED).
 dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
 dnl    implementations (in libc or libintl) without the ngettext() function
 dnl    will be ignored.  If NEEDSYMBOL is specified and is
 dnl    'need-formatstring-macros', then GNU gettext implementations that don't
 dnl    support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
 dnl INTLDIR is used to find the intl libraries.  If empty,
-dnl    the value `$(top_builddir)/intl/' is used.
+dnl    the value '$(top_builddir)/intl/' is used.
 dnl
 dnl The result of the configuration is one of three cases:
 dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
@@ -59,17 +55,22 @@ dnl
 AC_DEFUN([AM_GNU_GETTEXT],
 [
   dnl Argument checking.
-  ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+  m4_if([$1], [], , [m4_if([$1], [external], , [m4_if([$1], [use-libtool], ,
     [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
-  ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+])])])])
+  m4_if(m4_if([$1], [], [old])[]m4_if([$1], [no-libtool], [old]), [old],
+    [errprint([ERROR: Use of AM_GNU_GETTEXT without [external] argument is no longer supported.
+])])
+  m4_if([$2], [], , [m4_if([$2], [need-ngettext], , [m4_if([$2], [need-formatstring-macros], ,
     [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
 ])])])])
-  define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
-  define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
+  define([gt_included_intl],
+    m4_if([$1], [external], [no], [yes]))
+  gt_NEEDS_INIT
+  AM_GNU_GETTEXT_NEED([$2])
 
   AC_REQUIRE([AM_PO_SUBDIRS])dnl
-  ifelse(gt_included_intl, yes, [
+  m4_if(gt_included_intl, yes, [
     AC_REQUIRE([AM_INTL_SUBDIR])dnl
   ])
 
@@ -80,22 +81,24 @@ AC_DEFUN([AM_GNU_GETTEXT],
   dnl Sometimes libintl requires libiconv, so first search for libiconv.
   dnl Ideally we would do this search only after the
   dnl      if test "$USE_NLS" = "yes"; then
-  dnl        if test "$gt_cv_func_gnugettext_libc" != "yes"; then
-  dnl tests. But if configure.ac invokes AM_ICONV after AM_GNU_GETTEXT
+  dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+  dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
   dnl the configure script would need to contain the same shell code
   dnl again, outside any 'if'. There are two solutions:
   dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
   dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
-  dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
-  dnl documented, we avoid it.
-  ifelse(gt_included_intl, yes, , [
+  dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it.
+  m4_if(gt_included_intl, yes, , [
     AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
   ])
 
+  dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
+  gt_INTL_MACOSX
+
   dnl Set USE_NLS.
-  AM_NLS
+  AC_REQUIRE([AM_NLS])
 
-  ifelse(gt_included_intl, yes, [
+  m4_if(gt_included_intl, yes, [
     BUILD_INCLUDED_LIBINTL=no
     USE_INCLUDED_LIBINTL=no
   ])
@@ -103,16 +106,25 @@ AC_DEFUN([AM_GNU_GETTEXT],
   LTLIBINTL=
   POSUB=
 
+  dnl Add a version number to the cache macros.
+  case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
   dnl If we use NLS figure out what method
   if test "$USE_NLS" = "yes"; then
     gt_use_preinstalled_gnugettext=no
-    ifelse(gt_included_intl, yes, [
+    m4_if(gt_included_intl, yes, [
       AC_MSG_CHECKING([whether included gettext is requested])
-      AC_ARG_WITH(included-gettext,
+      AC_ARG_WITH([included-gettext],
         [  --with-included-gettext use the GNU gettext library included here],
         nls_cv_force_use_gnu_gettext=$withval,
         nls_cv_force_use_gnu_gettext=no)
-      AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
+      AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
 
       nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
       if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
@@ -121,30 +133,48 @@ AC_DEFUN([AM_GNU_GETTEXT],
         dnl to use.  If GNU gettext is available we use this.  Else we have
         dnl to fall back to GNU NLS library.
 
-        dnl Add a version number to the cache macros.
-        define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
-        define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
-        define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
-
-        AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
-         [AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
 #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
 #endif
 changequote(,)dnl
 typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
 changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;],
-            [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
-            gt_cv_func_gnugettext_libc=yes,
-            gt_cv_func_gnugettext_libc=no)])
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
 
-        if test "$gt_cv_func_gnugettext_libc" != "yes"; then
+        AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+         [AC_LINK_IFELSE(
+            [AC_LANG_PROGRAM(
+               [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+               ]],
+               [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+               ]])],
+            [eval "$gt_func_gnugettext_libc=yes"],
+            [eval "$gt_func_gnugettext_libc=no"])])
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
           dnl Sometimes libintl requires libiconv, so first search for libiconv.
-          ifelse(gt_included_intl, yes, , [
+          m4_if(gt_included_intl, yes, , [
             AM_ICONV_LINK
           ])
           dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
@@ -153,53 +183,63 @@ return (int) gettext ("")]ifelse([$2], [
           dnl even if libiconv doesn't exist.
           AC_LIB_LINKFLAGS_BODY([intl])
           AC_CACHE_CHECK([for GNU gettext in libintl],
-            gt_cv_func_gnugettext_libintl,
+            [$gt_func_gnugettext_libintl],
            [gt_save_CPPFLAGS="$CPPFLAGS"
             CPPFLAGS="$CPPFLAGS $INCINTL"
             gt_save_LIBS="$LIBS"
             LIBS="$LIBS $LIBINTL"
             dnl Now see whether libintl exists and does not depend on libiconv.
-            AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
+            AC_LINK_IFELSE(
+              [AC_LANG_PROGRAM(
+                 [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
 extern
 #ifdef __cplusplus
 "C"
 #endif
-const char *_nl_expand_alias ();],
-              [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
-              gt_cv_func_gnugettext_libintl=yes,
-              gt_cv_func_gnugettext_libintl=no)
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+                 ]],
+                 [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+                 ]])],
+              [eval "$gt_func_gnugettext_libintl=yes"],
+              [eval "$gt_func_gnugettext_libintl=no"])
             dnl Now see whether libintl exists and depends on libiconv.
-            if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
+            if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
               LIBS="$LIBS $LIBICONV"
-              AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
+              AC_LINK_IFELSE(
+                [AC_LANG_PROGRAM(
+                   [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
 extern
 #ifdef __cplusplus
 "C"
 #endif
-const char *_nl_expand_alias ();],
-                [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
-               [LIBINTL="$LIBINTL $LIBICONV"
-                LTLIBINTL="$LTLIBINTL $LTLIBICONV"
-                gt_cv_func_gnugettext_libintl=yes
-               ])
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+                   ]],
+                   [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+                   ]])],
+                [LIBINTL="$LIBINTL $LIBICONV"
+                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                 eval "$gt_func_gnugettext_libintl=yes"
+                ])
             fi
             CPPFLAGS="$gt_save_CPPFLAGS"
             LIBS="$gt_save_LIBS"])
@@ -209,8 +249,8 @@ return (int) gettext ("")]ifelse([$2], [
         dnl use it.  But if this macro is used in GNU gettext, and GNU
         dnl gettext is already preinstalled in libintl, we update this
         dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
-        if test "$gt_cv_func_gnugettext_libc" = "yes" \
-           || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
                 && test "$PACKAGE" != gettext-runtime \
                 && test "$PACKAGE" != gettext-tools; }; then
           gt_use_preinstalled_gnugettext=yes
@@ -221,7 +261,7 @@ return (int) gettext ("")]ifelse([$2], [
           INCINTL=
         fi
 
-    ifelse(gt_included_intl, yes, [
+    m4_if(gt_included_intl, yes, [
         if test "$gt_use_preinstalled_gnugettext" != "yes"; then
           dnl GNU gettext is not found in the C library.
           dnl Fall back on included GNU gettext library.
@@ -233,11 +273,12 @@ return (int) gettext ("")]ifelse([$2], [
         dnl Mark actions used to generate GNU NLS library.
         BUILD_INCLUDED_LIBINTL=yes
         USE_INCLUDED_LIBINTL=yes
-        LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
-        LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
+        LIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LIBICONV $LIBTHREAD"
+        LTLIBINTL="m4_if([$3],[],\${top_builddir}/intl,[$3])/libintl.la $LTLIBICONV $LTLIBTHREAD"
         LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
       fi
 
+      CATOBJEXT=
       if test "$gt_use_preinstalled_gnugettext" = "yes" \
          || test "$nls_cv_use_gnu_gettext" = "yes"; then
         dnl Mark actions to use GNU gettext tools.
@@ -245,9 +286,18 @@ return (int) gettext ("")]ifelse([$2], [
       fi
     ])
 
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+        dnl Some extra flags are needed during linking.
+        LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
     if test "$gt_use_preinstalled_gnugettext" = "yes" \
        || test "$nls_cv_use_gnu_gettext" = "yes"; then
-      AC_DEFINE(ENABLE_NLS, 1,
+      AC_DEFINE([ENABLE_NLS], [1],
         [Define to 1 if translation of program messages to the user's native language
    is requested.])
     else
@@ -260,7 +310,7 @@ return (int) gettext ("")]ifelse([$2], [
   if test "$USE_NLS" = "yes"; then
     AC_MSG_CHECKING([where the gettext function comes from])
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
         gt_source="external libintl"
       else
         gt_source="libc"
@@ -274,16 +324,16 @@ return (int) gettext ("")]ifelse([$2], [
   if test "$USE_NLS" = "yes"; then
 
     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
-      if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
         AC_MSG_CHECKING([how to link with libintl])
         AC_MSG_RESULT([$LIBINTL])
         AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
       fi
 
       dnl For backward compatibility. Some packages may be using this.
-      AC_DEFINE(HAVE_GETTEXT, 1,
+      AC_DEFINE([HAVE_GETTEXT], [1],
        [Define if the GNU gettext() function is already present or preinstalled.])
-      AC_DEFINE(HAVE_DCGETTEXT, 1,
+      AC_DEFINE([HAVE_DCGETTEXT], [1],
        [Define if the GNU dcgettext() function is already present or preinstalled.])
     fi
 
@@ -291,125 +341,46 @@ return (int) gettext ("")]ifelse([$2], [
     POSUB=po
   fi
 
-  ifelse(gt_included_intl, yes, [
-    dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
-    dnl to 'yes' because some of the testsuite requires it.
-    if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
-      BUILD_INCLUDED_LIBINTL=yes
-    fi
+  m4_if(gt_included_intl, yes, [
+    dnl In GNU gettext we have to set BUILD_INCLUDED_LIBINTL to 'yes'
+    dnl because some of the testsuite requires it.
+    BUILD_INCLUDED_LIBINTL=yes
 
     dnl Make all variables we use known to autoconf.
-    AC_SUBST(BUILD_INCLUDED_LIBINTL)
-    AC_SUBST(USE_INCLUDED_LIBINTL)
-    AC_SUBST(CATOBJEXT)
-
-    dnl For backward compatibility. Some configure.acs may be using this.
-    nls_cv_header_intl=
-    nls_cv_header_libgt=
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    DATADIRNAME=share
-    AC_SUBST(DATADIRNAME)
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    INSTOBJEXT=.mo
-    AC_SUBST(INSTOBJEXT)
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    GENCAT=gencat
-    AC_SUBST(GENCAT)
-
-    dnl For backward compatibility. Some Makefiles may be using this.
-    if test "$USE_INCLUDED_LIBINTL" = yes; then
-      INTLOBJS="\$(GETTOBJS)"
-    fi
-    AC_SUBST(INTLOBJS)
-
-    dnl Enable libtool support if the surrounding package wishes it.
-    INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
-    AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
+    AC_SUBST([BUILD_INCLUDED_LIBINTL])
+    AC_SUBST([USE_INCLUDED_LIBINTL])
+    AC_SUBST([CATOBJEXT])
   ])
 
   dnl For backward compatibility. Some Makefiles may be using this.
   INTLLIBS="$LIBINTL"
-  AC_SUBST(INTLLIBS)
+  AC_SUBST([INTLLIBS])
 
   dnl Make all documented variables known to autoconf.
-  AC_SUBST(LIBINTL)
-  AC_SUBST(LTLIBINTL)
-  AC_SUBST(POSUB)
+  AC_SUBST([LIBINTL])
+  AC_SUBST([LTLIBINTL])
+  AC_SUBST([POSUB])
 ])
 
 
-dnl Checks for all prerequisites of the intl subdirectory,
-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
-dnl            USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
-AC_DEFUN([AM_INTL_SUBDIR],
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
 [
-  AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_MKINSTALLDIRS])dnl
-  AC_REQUIRE([AC_PROG_CC])dnl
-  AC_REQUIRE([AC_CANONICAL_HOST])dnl
-  AC_REQUIRE([AC_PROG_RANLIB])dnl
-  AC_REQUIRE([AC_ISC_POSIX])dnl
-  AC_REQUIRE([AC_HEADER_STDC])dnl
-  AC_REQUIRE([AC_C_CONST])dnl
-  AC_REQUIRE([AC_C_INLINE])dnl
-  AC_REQUIRE([AC_TYPE_OFF_T])dnl
-  AC_REQUIRE([AC_TYPE_SIZE_T])dnl
-  AC_REQUIRE([AC_FUNC_ALLOCA])dnl
-  AC_REQUIRE([AC_FUNC_MMAP])dnl
-  AC_REQUIRE([jm_GLIBC21])dnl
-  AC_REQUIRE([gt_INTDIV0])dnl
-  AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
-  AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
-  AC_REQUIRE([gt_INTTYPES_PRI])dnl
-
-  AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
-stdlib.h string.h unistd.h sys/param.h])
-  AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
-geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \
-strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \
-__fsetlocking])
-
-  AM_ICONV
-  AM_LANGINFO_CODESET
-  if test $ac_cv_header_locale_h = yes; then
-    AM_LC_MESSAGES
-  fi
+  m4_divert_text([DEFAULTS], [gt_needs=])
+  m4_define([gt_NEEDS_INIT], [])
+])
 
-  dnl intl/plural.c is generated from intl/plural.y. It requires bison,
-  dnl because plural.y uses bison specific features. It requires at least
-  dnl bison-1.26 because earlier versions generate a plural.c that doesn't
-  dnl compile.
-  dnl bison is only needed for the maintainer (who touches plural.y). But in
-  dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
-  dnl the rule in general Makefile. Now, some people carelessly touch the
-  dnl files or have a broken "make" program, hence the plural.c rule will
-  dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
-  dnl present or too old.
-  AC_CHECK_PROGS([INTLBISON], [bison])
-  if test -z "$INTLBISON"; then
-    ac_verc_fail=yes
-  else
-    dnl Found it, now check the version.
-    AC_MSG_CHECKING([version of bison])
-changequote(<<,>>)dnl
-    ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
-    case $ac_prog_version in
-      '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
-      1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-changequote([,])dnl
-         ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
-      *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
-    esac
-    AC_MSG_RESULT([$ac_prog_version])
-  fi
-  if test $ac_verc_fail = yes; then
-    INTLBISON=:
-  fi
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+  m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
 ])
 
 
 dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
 AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+
+
+dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], [])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/gettext-sister.m4 ./config/gettext-sister.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/gettext-sister.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/gettext-sister.m4	2026-03-05 02:07:20.000000000 +0000
@@ -10,19 +10,30 @@
 # the necessary substitutions and definitions for this directory.
 
 AC_DEFUN([ZW_GNU_GETTEXT_SISTER_DIR],
-[# If we haven't got the data from the intl directory,
-# assume NLS is disabled.
-USE_NLS=no	AC_SUBST(USE_NLS)
-LIBINTL=	AC_SUBST(LIBINTL)
-LIBINTL_DEP=	AC_SUBST(LIBINTL_DEP)
-INCINTL=	AC_SUBST(INCINTL)
-XGETTEXT=	AC_SUBST(XGETTEXT)
-GMSGFMT=	AC_SUBST(GMSGFMT)
-POSUB=		AC_SUBST(POSUB)
-
-if test -f  ifelse([$1],,[../intl],[$1])/config.intl; then
-  .  ifelse([$1],,[../intl],[$1])/config.intl
+[
+m4_pushdef([gettext_builddir],
+           m4_default([$1], [../gettext]))
+m4_pushdef([gettext_cfg],
+           gettext_builddir[/uninstalled-config.sh])
+if test -f gettext_cfg; then
+  relative_builddir='[$(top_builddir)/]gettext_builddir'
+  .  gettext_cfg
+else
+  # The sister gettext directory doesn't exist and won't collect information on
+  # using gettext for us.  Call a bundled AM_GNU_GETTEXT.
+  AM_GNU_GETTEXT([external])
 fi
+m4_popdef([gettext_cfg])
+m4_popdef([gettext_builddir])
+
+AC_SUBST([USE_NLS])
+AC_SUBST([LIBINTL])
+AC_SUBST([LIBINTL_DEP])
+AC_SUBST([INCINTL])
+AC_SUBST([XGETTEXT])
+AC_SUBST([GMSGFMT])
+AC_SUBST([POSUB])
+
 AC_MSG_CHECKING([whether NLS is requested])
 if test x"$USE_NLS" != xyes; then
   AC_MSG_RESULT(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.20200303/config/gthr.m4 ./config/gthr.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/gthr.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/gthr.m4	2026-03-05 02:07:20.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 ;;
@@ -21,6 +22,7 @@ case $1 in
     tpf)	thread_header=config/s390/gthr-tpf.h ;;
     vxworks)	thread_header=config/gthr-vxworks.h ;;
     win32)	thread_header=config/i386/gthr-win32.h ;;
+    mcf)	thread_header=config/i386/gthr-mcf.h ;;
 esac
 AC_SUBST(thread_header)
 ])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/hwcaps.m4 ./config/hwcaps.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/hwcaps.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/hwcaps.m4	2026-03-05 02:07:20.000000000 +0000
@@ -7,6 +7,7 @@ dnl  HWCAP_CFLAGS='-Wa,-nH' if possible.
 dnl
 AC_DEFUN([GCC_CHECK_ASSEMBLER_HWCAP], [
   test -z "$HWCAP_CFLAGS" && HWCAP_CFLAGS=''
+  AC_REQUIRE([AC_CANONICAL_TARGET])
 
   # Restrict the test to Solaris, other assemblers (e.g. AIX as) have -nH
   # with a different meaning.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/iconv.m4 ./config/iconv.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/iconv.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/iconv.m4	2026-03-05 02:07:20.000000000 +0000
@@ -1,13 +1,17 @@
-# iconv.m4 serial AM4 (gettext-0.11.3)
-dnl Copyright (C) 2000-2002 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.
+# iconv.m4 serial 26
+dnl Copyright (C) 2000-2002, 2007-2014, 2016-2023 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
 
 dnl From Bruno Haible.
-dnl with modifications to support building with in-tree libiconv
+
+AC_PREREQ([2.64])
+
+dnl Note: AM_ICONV is documented in the GNU gettext manual
+dnl <https://www.gnu.org/software/gettext/manual/html_node/AM_005fICONV.html>.
+dnl Don't make changes that are incompatible with that documentation!
 
 AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
 [
@@ -24,107 +28,266 @@ AC_DEFUN([AM_ICONV_LINK],
 [
   dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
   dnl those with the standalone portable GNU libiconv installed).
+  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
 
   dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
   dnl accordingly.
   AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
 
-  AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
+  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+  dnl because if the user has installed libiconv and not disabled its use
+  dnl via --without-libiconv-prefix, he wants to use it. The first
+  dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
+  am_save_CPPFLAGS="$CPPFLAGS"
+  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+  AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
     am_cv_func_iconv="no, consider installing GNU libiconv"
     am_cv_lib_iconv=no
-    dnl Add $INCICONV to CPPFLAGS before performing the first check,
-    dnl because if the user has installed libiconv and not disabled its use
-    dnl via --without-libiconv-prefix, he wants to use it. This first
-    dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
-    am_save_CPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS $INCICONV"
-    AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-      [iconv_t cd = iconv_open("","");
-       iconv(cd,NULL,NULL,NULL,NULL);
-       iconv_close(cd);],
-      am_cv_func_iconv=yes)
-    CPPFLAGS="$am_save_CPPFLAGS"
-
-    if test "$am_cv_func_iconv" != yes && test -d ../libiconv; then
-      for _libs in .libs _libs; do
-        am_save_CPPFLAGS="$CPPFLAGS"
-        am_save_LIBS="$LIBS"
-        CPPFLAGS="$CPPFLAGS -I../libiconv/include"
-        LIBS="$LIBS ../libiconv/lib/$_libs/libiconv.a"
-        AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-          [iconv_t cd = iconv_open("","");
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM(
+         [[
+#include <stdlib.h>
+#include <iconv.h>
+         ]],
+         [[iconv_t cd = iconv_open("","");
            iconv(cd,NULL,NULL,NULL,NULL);
-           iconv_close(cd);],
-          INCICONV="-I../libiconv/include"
-          LIBICONV='${top_builddir}'/../libiconv/lib/$_libs/libiconv.a
-          LTLIBICONV='${top_builddir}'/../libiconv/lib/libiconv.la
-          am_cv_lib_iconv=yes
-          am_cv_func_iconv=yes)
-        CPPFLAGS="$am_save_CPPFLAGS"
-        LIBS="$am_save_LIBS"
-        if test "$am_cv_func_iconv" = "yes"; then
-          break
-        fi
-      done
-    fi
-
+           iconv_close(cd);]])],
+      [am_cv_func_iconv=yes])
     if test "$am_cv_func_iconv" != yes; then
-      am_save_CPPFLAGS="$CPPFLAGS"
       am_save_LIBS="$LIBS"
-      CPPFLAGS="$CPPFLAGS $INCICONV"
       LIBS="$LIBS $LIBICONV"
-      AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
-        [iconv_t cd = iconv_open("","");
-         iconv(cd,NULL,NULL,NULL,NULL);
-         iconv_close(cd);],
-        am_cv_lib_iconv=yes
-        am_cv_func_iconv=yes)
-      CPPFLAGS="$am_save_CPPFLAGS"
+      AC_LINK_IFELSE(
+        [AC_LANG_PROGRAM(
+           [[
+#include <stdlib.h>
+#include <iconv.h>
+           ]],
+           [[iconv_t cd = iconv_open("","");
+             iconv(cd,NULL,NULL,NULL,NULL);
+             iconv_close(cd);]])],
+        [am_cv_lib_iconv=yes]
+        [am_cv_func_iconv=yes])
       LIBS="$am_save_LIBS"
     fi
   ])
   if test "$am_cv_func_iconv" = yes; then
-    AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
+    AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+      dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
+      dnl Solaris 10.
+      am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      am_cv_func_iconv_works=no
+      for ac_iconv_const in '' 'const'; do
+        AC_RUN_IFELSE(
+          [AC_LANG_PROGRAM(
+             [[
+#include <iconv.h>
+#include <string.h>
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+             ]],
+             [[int result = 0;
+  /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from
+     successful returns.  This is even documented in
+     <https://www.ibm.com/support/knowledgecenter/ssw_aix_72/i_bostechref/iconv.html> */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 1;
+        iconv_close (cd_utf8_to_88591);
+      }
+  }
+  /* Test against Solaris 10 bug: Failures are not distinguishable from
+     successful returns.  */
+  {
+    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+    if (cd_ascii_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\263";
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_ascii_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 2;
+        iconv_close (cd_ascii_to_88591);
+      }
+  }
+  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304";
+        static char buf[2] = { (char)0xDE, (char)0xAD };
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = 1;
+        char *outptr = buf;
+        size_t outbytesleft = 1;
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+          result |= 4;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          result |= 8;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  {
+    /* Try standardized names.  */
+    iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+    /* Try IRIX, OSF/1 names.  */
+    iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+    /* Try AIX names.  */
+    iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+    /* Try HP-UX names.  */
+    iconv_t cd4 = iconv_open ("utf8", "eucJP");
+    if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+        && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+      result |= 16;
+    if (cd1 != (iconv_t)(-1))
+      iconv_close (cd1);
+    if (cd2 != (iconv_t)(-1))
+      iconv_close (cd2);
+    if (cd3 != (iconv_t)(-1))
+      iconv_close (cd3);
+    if (cd4 != (iconv_t)(-1))
+      iconv_close (cd4);
+  }
+  return result;
+]])],
+          [am_cv_func_iconv_works=yes], ,
+          [case "$host_os" in
+             aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+             *)            am_cv_func_iconv_works="guessing yes" ;;
+           esac])
+        test "$am_cv_func_iconv_works" = no || break
+      done
+      LIBS="$am_save_LIBS"
+    ])
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+    AC_DEFINE([HAVE_ICONV], [1],
+      [Define if you have the iconv() function and it works.])
   fi
   if test "$am_cv_lib_iconv" = yes; then
-    AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
     AC_MSG_CHECKING([how to link with libiconv])
     AC_MSG_RESULT([$LIBICONV])
   else
+    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+    dnl either.
+    CPPFLAGS="$am_save_CPPFLAGS"
     LIBICONV=
     LTLIBICONV=
   fi
-  AC_SUBST(LIBICONV)
-  AC_SUBST(LTLIBICONV)
+  AC_SUBST([LIBICONV])
+  AC_SUBST([LTLIBICONV])
 ])
 
-AC_DEFUN([AM_ICONV],
+dnl Define AM_ICONV using AC_DEFUN_ONCE, in order to avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+AC_DEFUN_ONCE([AM_ICONV],
 [
   AM_ICONV_LINK
   if test "$am_cv_func_iconv" = yes; then
-    AC_MSG_CHECKING([for iconv declaration])
-    AC_CACHE_VAL(am_cv_proto_iconv, [
-      AC_TRY_COMPILE([
+    AC_CACHE_CHECK([whether iconv is compatible with its POSIX signature],
+      [gl_cv_iconv_nonconst],
+      [AC_COMPILE_IFELSE(
+         [AC_LANG_PROGRAM(
+            [[
 #include <stdlib.h>
 #include <iconv.h>
 extern
 #ifdef __cplusplus
 "C"
 #endif
-#if defined(__STDC__) || defined(__cplusplus)
 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
-      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
-    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
-    AC_MSG_RESULT([$]{ac_t:-
-         }[$]am_cv_proto_iconv)
-    AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
-      [Define as const if the declaration of iconv() needs const.])
+            ]],
+            [[]])],
+         [gl_cv_iconv_nonconst=yes],
+         [gl_cv_iconv_nonconst=no])
+      ])
+  else
+    dnl When compiling GNU libiconv on a system that does not have iconv yet,
+    dnl pick the POSIX compliant declaration without 'const'.
+    gl_cv_iconv_nonconst=yes
+  fi
+  if test $gl_cv_iconv_nonconst = yes; then
+    iconv_arg1=""
+  else
+    iconv_arg1="const"
+  fi
+  AC_DEFINE_UNQUOTED([ICONV_CONST], [$iconv_arg1],
+    [Define as const if the declaration of iconv() needs const.])
+  dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
+  m4_ifdef([gl_ICONV_H_DEFAULTS],
+    [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+     if test $gl_cv_iconv_nonconst != yes; then
+       ICONV_CONST="const"
+     fi
+    ])
+
+  dnl A summary result, for those packages which want to print a summary at the
+  dnl end of the configuration.
+  if test "$am_func_iconv" = yes; then
+    if test -n "$LIBICONV"; then
+      am_cv_func_iconv_summary='yes, in libiconv'
+    else
+      am_cv_func_iconv_summary='yes, in libc'
+    fi
+  else
+    if test "$am_cv_func_iconv" = yes; then
+      am_cv_func_iconv_summary='not working, consider installing GNU libiconv'
+    else
+      am_cv_func_iconv_summary='no, consider installing GNU libiconv'
+    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.20200303/config/intlmacosx.m4 ./config/intlmacosx.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/intlmacosx.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/intlmacosx.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,69 @@
+# intlmacosx.m4 serial 9 (gettext-0.22.3)
+dnl Copyright (C) 2004-2014, 2016, 2019-2023 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Lesser General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Lesser General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on Mac OS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+  dnl Check for API introduced in Mac OS X 10.4.
+  AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+    [gt_cv_func_CFPreferencesCopyAppValue],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <CoreFoundation/CFPreferences.h>]],
+          [[CFPreferencesCopyAppValue(NULL, NULL)]])],
+       [gt_cv_func_CFPreferencesCopyAppValue=yes],
+       [gt_cv_func_CFPreferencesCopyAppValue=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+    AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
+      [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+  fi
+  dnl Don't check for the API introduced in Mac OS X 10.5, CFLocaleCopyCurrent,
+  dnl because in macOS 10.13.4 it has the following behaviour:
+  dnl When two or more languages are specified in the
+  dnl "System Preferences > Language & Region > Preferred Languages" panel,
+  dnl it returns en_CC where CC is the territory (even when English is not among
+  dnl the preferred languages!).  What we want instead is what
+  dnl CFLocaleCopyCurrent returned in earlier macOS releases and what
+  dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the
+  dnl first among the preferred languages and CC is the territory.
+  AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages],
+    [gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+          [[#include <CoreFoundation/CFLocale.h>]],
+          [[CFLocaleCopyPreferredLanguages();]])],
+       [gt_cv_func_CFLocaleCopyPreferredLanguages=yes],
+       [gt_cv_func_CFLocaleCopyPreferredLanguages=no])
+     LIBS="$gt_save_LIBS"])
+  if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+    AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1],
+      [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.])
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+     || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+    dnl Starting with macOS version 14, CoreFoundation relies on CoreServices,
+    dnl and we have to link it in explicitly, otherwise an exception
+    dnl NSInvalidArgumentException "unrecognized selector sent to instance"
+    dnl occurs.
+    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices"
+  fi
+  AC_SUBST([INTL_MACOSX_LIBS])
+])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/jobserver.m4 ./config/jobserver.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/jobserver.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/jobserver.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,24 @@
+dnl GNU_MAKE_JOBSERVER
+dnl
+dnl Implement a workaround for GNU mak jobserver by adding the '+' to the
+dnl recipe line in Makefiles generated by automake.
+dnl
+AC_DEFUN([GNU_MAKE_JOBSERVER],[dnl
+m4_pattern_allow(AM_V_CCLD)
+touch config.status.tmp
+dnl Must keep the same timestamps on config.status and Makefile.
+if touch --reference=config.status config.status.tmp > /dev/null 2>&1; then
+  sed '/as_fn_exit 0/i \
+sed -e \"s/^\t\\\(\\\$(AM_V_CCLD)\\\)/\t+ \\\1/\" Makefile > Makefile.tmp \
+touch --reference=Makefile Makefile.tmp \
+mv Makefile.tmp Makefile \
+' config.status > config.status.tmp
+  touch --reference=config.status config.status.tmp
+  mv config.status.tmp config.status
+  chmod +x config.status
+  sed -e "s/^\t\(\$(AM_V_CCLD)\)/\t+ \1/" Makefile > Makefile.tmp
+  touch --reference=Makefile Makefile.tmp
+  mv Makefile.tmp Makefile
+else
+  rm -f config.status.tmp
+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.20200303/config/largefile.m4 ./config/largefile.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/largefile.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/largefile.m4	2026-03-05 02:07:20.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.20200303/config/lib-ld.m4 ./config/lib-ld.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/lib-ld.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/lib-ld.m4	2026-03-05 02:07:20.000000000 +0000
@@ -12,9 +12,10 @@ dnl with libtool.m4.
 
 dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
 AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
 [# 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
+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
@@ -29,6 +30,7 @@ AC_DEFUN([AC_LIB_PROG_LD],
 test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
 AC_REQUIRE([AC_PROG_CC])dnl
 AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PROG_EGREP])dnl
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
@@ -88,7 +90,7 @@ AC_CACHE_VAL(acl_cv_path_LD,
       # 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
+      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
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/lib-link.m4 ./config/lib-link.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/lib-link.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/lib-link.m4	2026-03-05 02:07:20.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.20200303/config/lib-prefix.m4 ./config/lib-prefix.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/lib-prefix.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/lib-prefix.m4	2026-03-05 02:07:20.000000000 +0000
@@ -8,12 +8,9 @@ dnl the same distribution terms as the r
 
 dnl From Bruno Haible.
 
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
+dnl AC_LIB_ARG_WITH is similar to AC_ARG_WITH except that it doesn't
 dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
+AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])
 
 dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
 dnl to access previously installed libraries. The basic assumption is that
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/lthostflags.m4 ./config/lthostflags.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/lthostflags.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/lthostflags.m4	2026-03-05 02:07:20.000000000 +0000
@@ -10,7 +10,7 @@ dnl Defines and AC_SUBSTs lt_host_flags
 
 
 AC_DEFUN([ACX_LT_HOST_FLAGS], [
-AC_REQUIRE([AC_CANONICAL_SYSTEM])
+AC_REQUIRE([AC_CANONICAL_HOST])
 
 case $host in
   *-cygwin* | *-mingw*)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/math.m4 ./config/math.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/math.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/math.m4	2026-03-05 02:07:20.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.20200303/config/mh-darwin ./config/mh-darwin
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/mh-darwin	2020-03-03 02:08:51.000000000 +0000
+++ ./config/mh-darwin	2026-03-05 02:07:20.000000000 +0000
@@ -1,29 +1,46 @@
 # The -mdynamic-no-pic ensures that the compiler executable is built without
-# position-independent-code -- the usual default on Darwin. This fix speeds
-# compiles by 3-5%.  Don't add it if the compiler doesn't also support
-# -mno-dynamic-no-pic to undo it.
-DARWIN_MDYNAMIC_NO_PIC := \
-`case ${host} in i?86-*-darwin* | powerpc-*-darwin*) \
-   $(CC) -S -xc /dev/null -o /dev/null -mno-dynamic-no-pic 2>/dev/null \
-   && echo -mdynamic-no-pic ;; esac`
-DARWIN_GCC_MDYNAMIC_NO_PIC := \
-`case ${host} in i?86-*-darwin* | powerpc-*-darwin*) \
-   $(CC) -S -xc /dev/null -o /dev/null -mno-dynamic-no-pic 2>/dev/null \
-   || echo -mdynamic-no-pic ;; esac`
-
-# ld on Darwin versions >= 10.7 defaults to PIE executables. Disable this for
-# gcc components, since it is incompatible with our pch implementation.
-DARWIN_NO_PIE := `case ${host} in *-*-darwin[1][1-9]*) echo -Wl,-no_pie ;; esac;`
-
-BOOT_CFLAGS += $(DARWIN_MDYNAMIC_NO_PIC)
-BOOT_LDFLAGS += $(DARWIN_NO_PIE)
-
-# Similarly, for cross-compilation.
-STAGE1_CFLAGS += $(DARWIN_MDYNAMIC_NO_PIC)
-STAGE1_LDFLAGS += $(DARWIN_NO_PIE)
-
-# Without -mno-dynamic-no-pic support, add -mdynamic-no-pic just to later
-# stages when we know it is built with gcc.
-STAGE2_CFLAGS += $(DARWIN_GCC_MDYNAMIC_NO_PIC)
-STAGE3_CFLAGS += $(DARWIN_GCC_MDYNAMIC_NO_PIC)
-STAGE4_CFLAGS += $(DARWIN_GCC_MDYNAMIC_NO_PIC)
+# position-independent-code -- the usual default on Darwin. This speeds compiles
+# by 8-20% (measurements made against GCC-11).
+# However, we cannot add it unless the bootstrap compiler supports
+# -mno-dynamic-no-pic to undo it, since libiberty, at least, needs this.
+
+#Â We use Werror, since some versions of clang report unknown command line flags
+# as a warning only.
+
+# We only need to determine this for the host tool used to build stage1 (or a
+# non-bootstrapped compiler), later stages will be built by GCC which supports
+# the required flags.
+
+# We cannot use mdynamic-no-pic when building shared host resources.
+
+ifeq (${host_shared},no)
+BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC := $(shell \
+  $(CC) -S -xc /dev/null -o /dev/null -Werror -mno-dynamic-no-pic 2>/dev/null \
+  && echo true)
+else
+BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC := false
+endif
+
+@if gcc-bootstrap
+ifeq (${BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC},true)
+STAGE1_CFLAGS += -mdynamic-no-pic
+else
+STAGE1_CFLAGS += -fPIC
+endif
+ifeq (${host_shared},no)
+# Add -mdynamic-no-pic to later stages when we know it is built with GCC.
+BOOT_CFLAGS += -mdynamic-no-pic
+endif
+@endif gcc-bootstrap
+
+@unless gcc-bootstrap
+ifeq (${BOOTSTRAP_TOOL_CAN_USE_MDYNAMIC_NO_PIC},true)
+# FIXME: we should also enable this for cross and non-bootstrap builds but
+# that needs amendment to libcc1.
+# CFLAGS += -mdynamic-no-pic
+# CXXFLAGS += -mdynamic-no-pic
+else
+CFLAGS += -fPIC
+CXXFLAGS += -fPIC
+endif
+@endunless gcc-bootstrap
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/mh-mingw ./config/mh-mingw
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/mh-mingw	2020-03-03 02:08:51.000000000 +0000
+++ ./config/mh-mingw	2026-03-05 02:07:20.000000000 +0000
@@ -2,6 +2,12 @@
 # Vista (see PR33281 for details).
 BOOT_CFLAGS += -D__USE_MINGW_ACCESS -Wno-pedantic-ms-format
 CFLAGS += -D__USE_MINGW_ACCESS
+CXXFLAGS += -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.20200303/config/mh-pa-hpux10 ./config/mh-pa-hpux10
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/mh-pa-hpux10	2020-03-03 02:08:51.000000000 +0000
+++ ./config/mh-pa-hpux10	1970-01-01 00:00:00.000000000 +0000
@@ -1,4 +0,0 @@
-# The ada virtual array implementation requires that indexing be disabled on
-# hosts such as hpux that use a segmented memory architecture.  Both the c
-# and ada files need to be compiled with this option for correct operation.
-ADA_CFLAGS = -mdisable-indexing -D_X_HPUX10
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/mmap.m4 ./config/mmap.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/mmap.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/mmap.m4	2026-03-05 02:07:20.000000000 +0000
@@ -95,3 +95,25 @@ if test $gcc_cv_func_mmap_anon = yes; th
 	    [Define if mmap with MAP_ANON(YMOUS) works.])
 fi
 ])
+
+dnl
+dnl Avoid the sanitizer run-time memory leak failure in the mmap configure
+dnl test.  This should be removed when autoconf with commit:
+dnl
+dnl commit 09b6e78d1592ce10fdc975025d699ee41444aa3f
+dnl Author: Paul Eggert <eggert@cs.ucla.edu>
+dnl Date:   Fri Feb 5 21:06:20 2016 -0800
+dnl Fix memory leak in AC_FUNC_MMAP
+dnl
+dnl * lib/autoconf/functions.m4 (AC_FUNC_MMAP): Fix memory leak
+dnl in test case, found by configuring with gcc -fsanitize=address.
+dnl
+dnl is in use.
+dnl
+AC_DEFUN([GCC_AC_FUNC_MMAP],
+  save_ASAN_OPTIONS="$ASAN_OPTIONS"
+  ASAN_OPTIONS=detect_leaks=0
+  export ASAN_OPTIONS
+  m4_defn([AC_FUNC_MMAP])
+  ASAN_OPTIONS="$save_ASAN_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.20200303/config/mt-nios2-elf ./config/mt-nios2-elf
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/mt-nios2-elf	2020-03-03 02:08:51.000000000 +0000
+++ ./config/mt-nios2-elf	1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-# We build library code with -mno-gpopt so that it can be linked with
-# larger executables with small-data sections that exceed the 16-bit
-# offset range for GP-relative addressing.
-CFLAGS_FOR_TARGET += -mno-gpopt
-CXXFLAGS_FOR_TARGET += -mno-gpopt
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/no-executables.m4 ./config/no-executables.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/no-executables.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/no-executables.m4	2026-03-05 02:07:20.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
@@ -47,14 +49,14 @@ m4_defn([AC_LINK_IFELSE]))
 
 dnl This is a shame.  We have to provide a default for some link tests,
 dnl similar to the default for run tests.
-m4_define([AC_FUNC_MMAP],
+m4_define([GCC_AC_FUNC_MMAP],
 if test x$gcc_no_link = xyes; then
   if test "x${ac_cv_func_mmap_fixed_mapped+set}" != xset; then
     ac_cv_func_mmap_fixed_mapped=no
   fi
 fi
 if test "x${ac_cv_func_mmap_fixed_mapped}" != xno; then
-  m4_defn([AC_FUNC_MMAP])
+  m4_defn([GCC_AC_FUNC_MMAP])
 fi)
 
 m4_divert_pop()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.20200303/config/override.m4 ./config/override.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/override.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/override.m4	2026-03-05 02:07:20.000000000 +0000
@@ -32,7 +32,7 @@ m4_ifndef([_GCC_AUTOCONF_VERSION],
   [m4_define([_GCC_AUTOCONF_VERSION], [2.69])])
 
 dnl Test for the exact version when AC_INIT is expanded.
-dnl This allows to update the tree in steps (for testing)
+dnl This allows one to update the tree in steps (for testing)
 dnl by putting
 dnl   m4_define([_GCC_AUTOCONF_VERSION], [X.Y])
 dnl in configure.ac before AC_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.20200303/config/picflag.m4 ./config/picflag.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/picflag.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/picflag.m4	2026-03-05 02:07:20.000000000 +0000
@@ -44,6 +44,9 @@ case "${$2}" in
 	# sets the default TLS model and affects inlining.
 	$1=-fPIC
 	;;
+    loongarch*-*-*)
+	$1=-fpic
+	;;
     mips-sgi-irix6*)
 	# PIC is the default.
 	;;
@@ -60,9 +63,7 @@ case "${$2}" in
     sh-*-linux* | sh[[2346lbe]]*-*-linux*)
 	$1=-fpic
 	;;
-    # FIXME: Simplify to sh*-*-netbsd*?
-    sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-      sh64-*-netbsd* | sh64l*-*-netbsd*)
+    sh*-*-netbsd*)
 	$1=-fpic
 	;;
     # Default to -fPIC unless specified otherwise.
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/pkg.m4 ./config/pkg.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/pkg.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/pkg.m4	2026-03-05 02:07:20.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.20200303/config/tls.m4 ./config/tls.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/tls.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/tls.m4	2026-03-05 02:07:20.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.20200303/config/toolexeclibdir.m4 ./config/toolexeclibdir.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/toolexeclibdir.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/toolexeclibdir.m4	2026-03-05 02:07:20.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.20200303/config/uintmax_t.m4 ./config/uintmax_t.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/uintmax_t.m4	2020-03-03 02:08:51.000000000 +0000
+++ ./config/uintmax_t.m4	1970-01-01 00:00:00.000000000 +0000
@@ -1,32 +0,0 @@
-# uintmax_t.m4 serial 7 (gettext-0.12)
-dnl Copyright (C) 1997-2003 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.
-
-dnl From Paul Eggert.
-
-AC_PREREQ(2.13)
-
-# Define uintmax_t to 'unsigned long' or 'unsigned long long'
-# if it is not already defined in <stdint.h> or <inttypes.h>.
-
-AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
-[
-  AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
-  AC_REQUIRE([jm_AC_HEADER_STDINT_H])
-  if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
-    AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
-    test $ac_cv_type_unsigned_long_long = yes \
-      && ac_type='unsigned long long' \
-      || ac_type='unsigned long'
-    AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
-      [Define to unsigned long or unsigned long long
-       if <stdint.h> and <inttypes.h> don't define.])
-  else
-    AC_DEFINE(HAVE_UINTMAX_T, 1,
-      [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
-  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.20200303/config/zstd.m4 ./config/zstd.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config/zstd.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./config/zstd.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,23 @@
+dnl Copyright (C) 2022 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.
+
+dnl Enable features using the zstd library.
+AC_DEFUN([AC_ZSTD], [
+AC_ARG_WITH(zstd,
+  [AS_HELP_STRING([--with-zstd], [support zstd compressed debug sections (default=auto)])],
+  [], [with_zstd=auto])
+
+AS_IF([test "$with_zstd" != no],
+  [PKG_CHECK_MODULES(ZSTD, [libzstd >= 1.4.0], [
+    AC_DEFINE(HAVE_ZSTD, 1, [Define to 1 if zstd is enabled.])
+  ], [
+    if test "$with_zstd" = yes; then
+      AC_MSG_ERROR([--with-zstd was given, but pkgconfig/libzstd.pc is not found])
+    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.20200303/config.guess ./config.guess
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config.guess	2020-03-03 02:08:51.000000000 +0000
+++ ./config.guess	2026-03-05 02:07:20.000000000 +0000
@@ -1,12 +1,14 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2019 Free Software Foundation, Inc.
+#   Copyright 1992-2024 Free Software Foundation, Inc.
 
-timestamp='2019-04-28'
+# shellcheck disable=SC2006,SC2268 # see below for rationale
+
+timestamp='2024-07-27'
 
 # 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 Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -27,17 +29,25 @@ timestamp='2019-04-28'
 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
 #
 # You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
 #
 # Please send patches to <config-patches@gnu.org>.
 
 
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX.  However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
+
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
 Usage: $0 [OPTION]
 
-Output the configuration name of the system \`$me' is run on.
+Output the configuration name of the system '$me' is run on.
 
 Options:
   -h, --help         print this help, then exit
@@ -50,13 +60,13 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2019 Free Software Foundation, Inc.
+Copyright 1992-2024 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."
 
 help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
 
 # Parse command line
 while test $# -gt 0 ; do
@@ -84,13 +94,16 @@ if test $# != 0; then
   exit 1
 fi
 
+# Just in case it came from the environment.
+GUESS=
+
 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
 # compiler to aid in system detection is discouraged as it requires
 # temporary files to be created and, as you can see below, it is a
 # headache to deal with in a portable fashion.
 
-# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
-# use `HOST_CC' if defined, but it is deprecated.
+# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still
+# use 'HOST_CC' if defined, but it is deprecated.
 
 # Portable tmp directory creation inspired by the Autoconf team.
 
@@ -99,8 +112,10 @@ 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
+    # shellcheck disable=SC2039,SC3028
     { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
 	{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
 	{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
@@ -108,9 +123,9 @@ set_cc_for_build() {
     dummy=$tmp/dummy
     case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in
 	,,)    echo "int x;" > "$dummy.c"
-	       for driver in cc gcc c89 c99 ; do
+	       for driver in cc gcc c17 c99 c89 ; do
 		   if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then
-		       CC_FOR_BUILD="$driver"
+		       CC_FOR_BUILD=$driver
 		       break
 		   fi
 	       done
@@ -131,40 +146,57 @@ fi
 
 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
 
-case "$UNAME_SYSTEM" in
+case $UNAME_SYSTEM in
 Linux|GNU|GNU/*)
-	# If the system lacks a compiler, then just pick glibc.
-	# We could probably try harder.
-	LIBC=gnu
+	LIBC=unknown
 
 	set_cc_for_build
 	cat <<-EOF > "$dummy.c"
+	#if defined(__ANDROID__)
+	LIBC=android
+	#else
 	#include <features.h>
 	#if defined(__UCLIBC__)
 	LIBC=uclibc
 	#elif defined(__dietlibc__)
 	LIBC=dietlibc
-	#else
+	#elif defined(__GLIBC__)
 	LIBC=gnu
+	#elif defined(__LLVM_LIBC__)
+	LIBC=llvm
+	#else
+	#include <stdarg.h>
+	/* First heuristic to detect musl libc.  */
+	#ifdef __DEFINED_va_list
+	LIBC=musl
+	#endif
+	#endif
 	#endif
 	EOF
-	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
+	cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
+	eval "$cc_set_libc"
 
-	# If ldd exists, use it to detect musl libc.
-	if command -v ldd >/dev/null && \
-		ldd --version 2>&1 | grep -q ^musl
-	then
-	    LIBC=musl
+	# Second heuristic to detect musl libc.
+	if [ "$LIBC" = unknown ] &&
+	   command -v ldd >/dev/null &&
+	   ldd --version 2>&1 | grep -q ^musl; then
+		LIBC=musl
+	fi
+
+	# If the system lacks a compiler, then just pick glibc.
+	# We could probably try harder.
+	if [ "$LIBC" = unknown ]; then
+		LIBC=gnu
 	fi
 	;;
 esac
 
 # Note: order is significant - the case branches are not exclusive.
 
-case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
+case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in
     *:NetBSD:*:*)
 	# NetBSD (nbsd) targets should (where applicable) match one or
 	# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
@@ -176,12 +208,12 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	#
 	# Note: NetBSD doesn't particularly care about the vendor
 	# portion of the name.  We always set it to "unknown".
-	sysctl="sysctl -n hw.machine_arch"
 	UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
-	    "/sbin/$sysctl" 2>/dev/null || \
-	    "/usr/sbin/$sysctl" 2>/dev/null || \
+	    /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+	    /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
 	    echo unknown)`
-	case "$UNAME_MACHINE_ARCH" in
+	case $UNAME_MACHINE_ARCH in
+	    aarch64eb) machine=aarch64_be-unknown ;;
 	    armeb) machine=armeb-unknown ;;
 	    arm*) machine=arm-unknown ;;
 	    sh3el) machine=shl-unknown ;;
@@ -190,13 +222,13 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	    earmv*)
 		arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
 		endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
-		machine="${arch}${endian}"-unknown
+		machine=${arch}${endian}-unknown
 		;;
-	    *) machine="$UNAME_MACHINE_ARCH"-unknown ;;
+	    *) machine=$UNAME_MACHINE_ARCH-unknown ;;
 	esac
 	# The Operating System including object format, if it has switched
 	# to ELF recently (or will in the future) and ABI.
-	case "$UNAME_MACHINE_ARCH" in
+	case $UNAME_MACHINE_ARCH in
 	    earm*)
 		os=netbsdelf
 		;;
@@ -217,7 +249,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 		;;
 	esac
 	# Determine ABI tags.
-	case "$UNAME_MACHINE_ARCH" in
+	case $UNAME_MACHINE_ARCH in
 	    earm*)
 		expr='s/^earmv[0-9]/-eabi/;s/eb$//'
 		abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
@@ -228,7 +260,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	# thus, need a distinct triplet. However, they do not need
 	# kernel version information, so it can be replaced with a
 	# suitable tag, in the style of linux-gnu.
-	case "$UNAME_VERSION" in
+	case $UNAME_VERSION in
 	    Debian*)
 		release='-gnu'
 		;;
@@ -239,45 +271,57 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
 	# contains redundant information, the shorter form:
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
-	echo "$machine-${os}${release}${abi-}"
-	exit ;;
+	GUESS=$machine-${os}${release}${abi-}
+	;;
     *:Bitrig:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
-	echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE
+	;;
     *:OpenBSD:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
-	echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE
+	;;
+    *:SecBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'`
+	GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE
+	;;
     *:LibertyBSD:*:*)
 	UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
-	echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE
+	;;
     *:MidnightBSD:*:*)
-	echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE
+	;;
     *:ekkoBSD:*:*)
-	echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE
+	;;
     *:SolidBSD:*:*)
-	echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE
+	;;
+    *:OS108:*:*)
+	GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE
+	;;
     macppc:MirBSD:*:*)
-	echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE
+	;;
     *:MirBSD:*:*)
-	echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE
+	;;
     *:Sortix:*:*)
-	echo "$UNAME_MACHINE"-unknown-sortix
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-sortix
+	;;
+    *:Twizzler:*:*)
+	GUESS=$UNAME_MACHINE-unknown-twizzler
+	;;
     *:Redox:*:*)
-	echo "$UNAME_MACHINE"-unknown-redox
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-redox
+	;;
     mips:OSF1:*.*)
-        echo mips-dec-osf1
-        exit ;;
+	GUESS=mips-dec-osf1
+	;;
     alpha:OSF1:*:*)
+	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
+	trap '' 0
 	case $UNAME_RELEASE in
 	*4.0)
 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
@@ -291,7 +335,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	# covers most systems running today.  This code pipes the CPU
 	# types through head -n 1, so we only detect the type of CPU 0.
 	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
-	case "$ALPHA_CPU_TYPE" in
+	case $ALPHA_CPU_TYPE in
 	    "EV4 (21064)")
 		UNAME_MACHINE=alpha ;;
 	    "EV4.5 (21064)")
@@ -328,117 +372,121 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
 	# A Tn.n version is a released field test version.
 	# A Xn.n version is an unreleased experimental baselevel.
 	# 1.2 uses "1.2" for uname -r.
-	echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
-	# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
-	exitcode=$?
-	trap '' 0
-	exit $exitcode ;;
+	OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+	GUESS=$UNAME_MACHINE-dec-osf$OSF_REL
+	;;
     Amiga*:UNIX_System_V:4.0:*)
-	echo m68k-unknown-sysv4
-	exit ;;
+	GUESS=m68k-unknown-sysv4
+	;;
     *:[Aa]miga[Oo][Ss]:*:*)
-	echo "$UNAME_MACHINE"-unknown-amigaos
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-amigaos
+	;;
     *:[Mm]orph[Oo][Ss]:*:*)
-	echo "$UNAME_MACHINE"-unknown-morphos
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-morphos
+	;;
     *:OS/390:*:*)
-	echo i370-ibm-openedition
-	exit ;;
+	GUESS=i370-ibm-openedition
+	;;
     *:z/VM:*:*)
-	echo s390-ibm-zvmoe
-	exit ;;
+	GUESS=s390-ibm-zvmoe
+	;;
     *:OS400:*:*)
-	echo powerpc-ibm-os400
-	exit ;;
+	GUESS=powerpc-ibm-os400
+	;;
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
-	echo arm-acorn-riscix"$UNAME_RELEASE"
-	exit ;;
+	GUESS=arm-acorn-riscix$UNAME_RELEASE
+	;;
     arm*:riscos:*:*|arm*:RISCOS:*:*)
-	echo arm-unknown-riscos
-	exit ;;
+	GUESS=arm-unknown-riscos
+	;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
-	echo hppa1.1-hitachi-hiuxmpp
-	exit ;;
+	GUESS=hppa1.1-hitachi-hiuxmpp
+	;;
     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
 	# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
-	if test "`(/bin/universe) 2>/dev/null`" = att ; then
-		echo pyramid-pyramid-sysv3
-	else
-		echo pyramid-pyramid-bsd
-	fi
-	exit ;;
+	case `(/bin/universe) 2>/dev/null` in
+	    att) GUESS=pyramid-pyramid-sysv3 ;;
+	    *)   GUESS=pyramid-pyramid-bsd   ;;
+	esac
+	;;
     NILE*:*:*:dcosx)
-	echo pyramid-pyramid-svr4
-	exit ;;
+	GUESS=pyramid-pyramid-svr4
+	;;
     DRS?6000:unix:4.0:6*)
-	echo sparc-icl-nx6
-	exit ;;
+	GUESS=sparc-icl-nx6
+	;;
     DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
 	case `/usr/bin/uname -p` in
-	    sparc) echo sparc-icl-nx7; exit ;;
-	esac ;;
+	    sparc) GUESS=sparc-icl-nx7 ;;
+	esac
+	;;
     s390x:SunOS:*:*)
-	echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL
+	;;
     sun4H:SunOS:5.*:*)
-	echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=sparc-hal-solaris2$SUN_REL
+	;;
     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
-	echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=sparc-sun-solaris2$SUN_REL
+	;;
     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
-	echo i386-pc-auroraux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=i386-pc-auroraux$UNAME_RELEASE
+	;;
     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
 	set_cc_for_build
 	SUN_ARCH=i386
 	# If there is a compiler, see if it is configured for 64-bit objects.
 	# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
 	# This test works for both compilers.
-	if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
 	    if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
-		(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+		(CCOPTS="" $CC_FOR_BUILD -m64 -E - 2>/dev/null) | \
 		grep IS_64BIT_ARCH >/dev/null
 	    then
 		SUN_ARCH=x86_64
 	    fi
 	fi
-	echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=$SUN_ARCH-pc-solaris2$SUN_REL
+	;;
     sun4*:SunOS:6*:*)
 	# According to config.sub, this is the proper way to canonicalize
 	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
 	# it's likely to be more like Solaris than SunOS4.
-	echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=sparc-sun-solaris3$SUN_REL
+	;;
     sun4*:SunOS:*:*)
-	case "`/usr/bin/arch -k`" in
+	case `/usr/bin/arch -k` in
 	    Series*|S4*)
 		UNAME_RELEASE=`uname -v`
 		;;
 	esac
-	# Japanese Language versions have a version number like `4.1.3-JL'.
-	echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
-	exit ;;
+	# Japanese Language versions have a version number like '4.1.3-JL'.
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'`
+	GUESS=sparc-sun-sunos$SUN_REL
+	;;
     sun3*:SunOS:*:*)
-	echo m68k-sun-sunos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-sun-sunos$UNAME_RELEASE
+	;;
     sun*:*:4.2BSD:*)
 	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
 	test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
-	case "`/bin/arch`" in
+	case `/bin/arch` in
 	    sun3)
-		echo m68k-sun-sunos"$UNAME_RELEASE"
+		GUESS=m68k-sun-sunos$UNAME_RELEASE
 		;;
 	    sun4)
-		echo sparc-sun-sunos"$UNAME_RELEASE"
+		GUESS=sparc-sun-sunos$UNAME_RELEASE
 		;;
 	esac
-	exit ;;
+	;;
     aushp:SunOS:*:*)
-	echo sparc-auspex-sunos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sparc-auspex-sunos$UNAME_RELEASE
+	;;
     # The situation for MiNT is a little confusing.  The machine name
     # can be virtually everything (everything which is not
     # "atarist" or "atariste" at least should have a processor
@@ -448,41 +496,41 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAM
     # MiNT.  But MiNT is downward compatible to TOS, so this should
     # be no problem.
     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-atari-mint$UNAME_RELEASE
+	;;
     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
-	echo m68k-atari-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-atari-mint$UNAME_RELEASE
+	;;
     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
-	echo m68k-atari-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-atari-mint$UNAME_RELEASE
+	;;
     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
-	echo m68k-milan-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-milan-mint$UNAME_RELEASE
+	;;
     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
-	echo m68k-hades-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-hades-mint$UNAME_RELEASE
+	;;
     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
-	echo m68k-unknown-mint"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-unknown-mint$UNAME_RELEASE
+	;;
     m68k:machten:*:*)
-	echo m68k-apple-machten"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-apple-machten$UNAME_RELEASE
+	;;
     powerpc:machten:*:*)
-	echo powerpc-apple-machten"$UNAME_RELEASE"
-	exit ;;
+	GUESS=powerpc-apple-machten$UNAME_RELEASE
+	;;
     RISC*:Mach:*:*)
-	echo mips-dec-mach_bsd4.3
-	exit ;;
+	GUESS=mips-dec-mach_bsd4.3
+	;;
     RISC*:ULTRIX:*:*)
-	echo mips-dec-ultrix"$UNAME_RELEASE"
-	exit ;;
+	GUESS=mips-dec-ultrix$UNAME_RELEASE
+	;;
     VAX*:ULTRIX*:*:*)
-	echo vax-dec-ultrix"$UNAME_RELEASE"
-	exit ;;
+	GUESS=vax-dec-ultrix$UNAME_RELEASE
+	;;
     2020:CLIX:*:* | 2430:CLIX:*:*)
-	echo clipper-intergraph-clix"$UNAME_RELEASE"
-	exit ;;
+	GUESS=clipper-intergraph-clix$UNAME_RELEASE
+	;;
     mips:*:*:UMIPS | mips:*:*:RISCos)
 	set_cc_for_build
 	sed 's/^	//' << EOF > "$dummy.c"
@@ -510,82 +558,84 @@ EOF
 	  dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
 	  SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
 	    { echo "$SYSTEM_NAME"; exit; }
-	echo mips-mips-riscos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=mips-mips-riscos$UNAME_RELEASE
+	;;
     Motorola:PowerMAX_OS:*:*)
-	echo powerpc-motorola-powermax
-	exit ;;
+	GUESS=powerpc-motorola-powermax
+	;;
     Motorola:*:4.3:PL8-*)
-	echo powerpc-harris-powermax
-	exit ;;
+	GUESS=powerpc-harris-powermax
+	;;
     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
-	echo powerpc-harris-powermax
-	exit ;;
+	GUESS=powerpc-harris-powermax
+	;;
     Night_Hawk:Power_UNIX:*:*)
-	echo powerpc-harris-powerunix
-	exit ;;
+	GUESS=powerpc-harris-powerunix
+	;;
     m88k:CX/UX:7*:*)
-	echo m88k-harris-cxux7
-	exit ;;
+	GUESS=m88k-harris-cxux7
+	;;
     m88k:*:4*:R4*)
-	echo m88k-motorola-sysv4
-	exit ;;
+	GUESS=m88k-motorola-sysv4
+	;;
     m88k:*:3*:R3*)
-	echo m88k-motorola-sysv3
-	exit ;;
+	GUESS=m88k-motorola-sysv3
+	;;
     AViiON:dgux:*:*)
 	# DG/UX returns AViiON for all architectures
 	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+	if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
 	then
-	    if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
-	       [ "$TARGET_BINARY_INTERFACE"x = x ]
+	    if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+	       test "$TARGET_BINARY_INTERFACE"x = x
 	    then
-		echo m88k-dg-dgux"$UNAME_RELEASE"
+		GUESS=m88k-dg-dgux$UNAME_RELEASE
 	    else
-		echo m88k-dg-dguxbcs"$UNAME_RELEASE"
+		GUESS=m88k-dg-dguxbcs$UNAME_RELEASE
 	    fi
 	else
-	    echo i586-dg-dgux"$UNAME_RELEASE"
+	    GUESS=i586-dg-dgux$UNAME_RELEASE
 	fi
-	exit ;;
+	;;
     M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
-	echo m88k-dolphin-sysv3
-	exit ;;
+	GUESS=m88k-dolphin-sysv3
+	;;
     M88*:*:R3*:*)
 	# Delta 88k system running SVR3
-	echo m88k-motorola-sysv3
-	exit ;;
+	GUESS=m88k-motorola-sysv3
+	;;
     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
-	echo m88k-tektronix-sysv3
-	exit ;;
+	GUESS=m88k-tektronix-sysv3
+	;;
     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
-	echo m68k-tektronix-bsd
-	exit ;;
+	GUESS=m68k-tektronix-bsd
+	;;
     *:IRIX*:*:*)
-	echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
-	exit ;;
+	IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'`
+	GUESS=mips-sgi-irix$IRIX_REL
+	;;
     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
-	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
-	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+	GUESS=romp-ibm-aix    # uname -m gives an 8 hex-code CPU id
+	;;                    # Note that: echo "'`uname -s`'" gives 'AIX '
     i*86:AIX:*:*)
-	echo i386-ibm-aix
-	exit ;;
+	GUESS=i386-ibm-aix
+	;;
     ia64:AIX:*:*)
-	if [ -x /usr/bin/oslevel ] ; then
+	if test -x /usr/bin/oslevel ; then
 		IBM_REV=`/usr/bin/oslevel`
 	else
-		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+		IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
 	fi
-	echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV"
-	exit ;;
+	GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV
+	;;
     *:AIX:2:3)
 	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
 		set_cc_for_build
 		sed 's/^		//' << EOF > "$dummy.c"
 		#include <sys/systemcfg.h>
 
-		main()
+		int
+		main ()
 			{
 			if (!__power_pc())
 				exit(1);
@@ -595,16 +645,16 @@ EOF
 EOF
 		if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
 		then
-			echo "$SYSTEM_NAME"
+			GUESS=$SYSTEM_NAME
 		else
-			echo rs6000-ibm-aix3.2.5
+			GUESS=rs6000-ibm-aix3.2.5
 		fi
 	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
-		echo rs6000-ibm-aix3.2.4
+		GUESS=rs6000-ibm-aix3.2.4
 	else
-		echo rs6000-ibm-aix3.2
+		GUESS=rs6000-ibm-aix3.2
 	fi
-	exit ;;
+	;;
     *:AIX:*:[4567])
 	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
 	if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
@@ -612,56 +662,56 @@ EOF
 	else
 		IBM_ARCH=powerpc
 	fi
-	if [ -x /usr/bin/lslpp ] ; then
-		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
+	if test -x /usr/bin/lslpp ; then
+		IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \
 			   awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
 	else
-		IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
+		IBM_REV=$UNAME_VERSION.$UNAME_RELEASE
 	fi
-	echo "$IBM_ARCH"-ibm-aix"$IBM_REV"
-	exit ;;
+	GUESS=$IBM_ARCH-ibm-aix$IBM_REV
+	;;
     *:AIX:*:*)
-	echo rs6000-ibm-aix
-	exit ;;
+	GUESS=rs6000-ibm-aix
+	;;
     ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*)
-	echo romp-ibm-bsd4.4
-	exit ;;
+	GUESS=romp-ibm-bsd4.4
+	;;
     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
-	echo romp-ibm-bsd"$UNAME_RELEASE"   # 4.3 with uname added to
-	exit ;;                             # report: romp-ibm BSD 4.3
+	GUESS=romp-ibm-bsd$UNAME_RELEASE    # 4.3 with uname added to
+	;;                                  # report: romp-ibm BSD 4.3
     *:BOSX:*:*)
-	echo rs6000-bull-bosx
-	exit ;;
+	GUESS=rs6000-bull-bosx
+	;;
     DPX/2?00:B.O.S.:*:*)
-	echo m68k-bull-sysv3
-	exit ;;
+	GUESS=m68k-bull-sysv3
+	;;
     9000/[34]??:4.3bsd:1.*:*)
-	echo m68k-hp-bsd
-	exit ;;
+	GUESS=m68k-hp-bsd
+	;;
     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
-	echo m68k-hp-bsd4.4
-	exit ;;
+	GUESS=m68k-hp-bsd4.4
+	;;
     9000/[34678]??:HP-UX:*:*)
-	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-	case "$UNAME_MACHINE" in
+	HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+	case $UNAME_MACHINE in
 	    9000/31?)            HP_ARCH=m68000 ;;
 	    9000/[34]??)         HP_ARCH=m68k ;;
 	    9000/[678][0-9][0-9])
-		if [ -x /usr/bin/getconf ]; then
+		if test -x /usr/bin/getconf; then
 		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
 		    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
-		    case "$sc_cpu_version" in
+		    case $sc_cpu_version in
 		      523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
 		      528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
 		      532)                      # CPU_PA_RISC2_0
-			case "$sc_kernel_bits" in
+			case $sc_kernel_bits in
 			  32) HP_ARCH=hppa2.0n ;;
 			  64) HP_ARCH=hppa2.0w ;;
 			  '') HP_ARCH=hppa2.0 ;;   # HP-UX 10.20
 			esac ;;
 		    esac
 		fi
-		if [ "$HP_ARCH" = "" ]; then
+		if test "$HP_ARCH" = ""; then
 		    set_cc_for_build
 		    sed 's/^		//' << EOF > "$dummy.c"
 
@@ -669,7 +719,8 @@ EOF
 		#include <stdlib.h>
 		#include <unistd.h>
 
-		int main ()
+		int
+		main ()
 		{
 		#if defined(_SC_KERNEL_BITS)
 		    long bits = sysconf(_SC_KERNEL_BITS);
@@ -700,7 +751,7 @@ EOF
 		    test -z "$HP_ARCH" && HP_ARCH=hppa
 		fi ;;
 	esac
-	if [ "$HP_ARCH" = hppa2.0w ]
+	if test "$HP_ARCH" = hppa2.0w
 	then
 	    set_cc_for_build
 
@@ -721,12 +772,12 @@ EOF
 		HP_ARCH=hppa64
 	    fi
 	fi
-	echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
-	exit ;;
+	GUESS=$HP_ARCH-hp-hpux$HPUX_REV
+	;;
     ia64:HP-UX:*:*)
-	HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
-	echo ia64-hp-hpux"$HPUX_REV"
-	exit ;;
+	HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'`
+	GUESS=ia64-hp-hpux$HPUX_REV
+	;;
     3050*:HI-UX:*:*)
 	set_cc_for_build
 	sed 's/^	//' << EOF > "$dummy.c"
@@ -756,36 +807,36 @@ EOF
 EOF
 	$CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
 		{ echo "$SYSTEM_NAME"; exit; }
-	echo unknown-hitachi-hiuxwe2
-	exit ;;
+	GUESS=unknown-hitachi-hiuxwe2
+	;;
     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*)
-	echo hppa1.1-hp-bsd
-	exit ;;
+	GUESS=hppa1.1-hp-bsd
+	;;
     9000/8??:4.3bsd:*:*)
-	echo hppa1.0-hp-bsd
-	exit ;;
+	GUESS=hppa1.0-hp-bsd
+	;;
     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-	echo hppa1.0-hp-mpeix
-	exit ;;
+	GUESS=hppa1.0-hp-mpeix
+	;;
     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*)
-	echo hppa1.1-hp-osf
-	exit ;;
+	GUESS=hppa1.1-hp-osf
+	;;
     hp8??:OSF1:*:*)
-	echo hppa1.0-hp-osf
-	exit ;;
+	GUESS=hppa1.0-hp-osf
+	;;
     i*86:OSF1:*:*)
-	if [ -x /usr/sbin/sysversion ] ; then
-	    echo "$UNAME_MACHINE"-unknown-osf1mk
+	if test -x /usr/sbin/sysversion ; then
+	    GUESS=$UNAME_MACHINE-unknown-osf1mk
 	else
-	    echo "$UNAME_MACHINE"-unknown-osf1
+	    GUESS=$UNAME_MACHINE-unknown-osf1
 	fi
-	exit ;;
+	;;
     parisc*:Lites*:*:*)
-	echo hppa1.1-hp-lites
-	exit ;;
+	GUESS=hppa1.1-hp-lites
+	;;
     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
-	echo c1-convex-bsd
-	exit ;;
+	GUESS=c1-convex-bsd
+	;;
     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
 	if getsysinfo -f scalar_acc
 	then echo c32-convex-bsd
@@ -793,17 +844,18 @@ EOF
 	fi
 	exit ;;
     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
-	echo c34-convex-bsd
-	exit ;;
+	GUESS=c34-convex-bsd
+	;;
     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
-	echo c38-convex-bsd
-	exit ;;
+	GUESS=c38-convex-bsd
+	;;
     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
-	echo c4-convex-bsd
-	exit ;;
+	GUESS=c4-convex-bsd
+	;;
     CRAY*Y-MP:*:*:*)
-	echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=ymp-cray-unicos$CRAY_REL
+	;;
     CRAY*[A-Z]90:*:*:*)
 	echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \
 	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
@@ -811,114 +863,155 @@ EOF
 	      -e 's/\.[^.]*$/.X/'
 	exit ;;
     CRAY*TS:*:*:*)
-	echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=t90-cray-unicos$CRAY_REL
+	;;
     CRAY*T3E:*:*:*)
-	echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=alphaev5-cray-unicosmk$CRAY_REL
+	;;
     CRAY*SV1:*:*:*)
-	echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=sv1-cray-unicos$CRAY_REL
+	;;
     *:UNICOS/mp:*:*)
-	echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
-	exit ;;
+	CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'`
+	GUESS=craynv-cray-unicosmp$CRAY_REL
+	;;
     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
 	FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
 	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
 	FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
-	echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
+	GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+	;;
     5000:UNIX_System_V:4.*:*)
 	FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
 	FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
-	echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
-	exit ;;
+	GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}
+	;;
     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
-	echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE
+	;;
     sparc*:BSD/OS:*:*)
-	echo sparc-unknown-bsdi"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sparc-unknown-bsdi$UNAME_RELEASE
+	;;
     *:BSD/OS:*:*)
-	echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE
+	;;
     arm:FreeBSD:*:*)
 	UNAME_PROCESSOR=`uname -p`
 	set_cc_for_build
 	if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_PCS_VFP
 	then
-	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+	    FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	    GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi
 	else
-	    echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+	    FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	    GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf
 	fi
-	exit ;;
+	;;
     *:FreeBSD:*:*)
-	UNAME_PROCESSOR=`/usr/bin/uname -p`
-	case "$UNAME_PROCESSOR" in
+	UNAME_PROCESSOR=`uname -p`
+	case $UNAME_PROCESSOR in
 	    amd64)
 		UNAME_PROCESSOR=x86_64 ;;
 	    i386)
 		UNAME_PROCESSOR=i586 ;;
 	esac
-	echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-	exit ;;
+	FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL
+	;;
     i*:CYGWIN*:*)
-	echo "$UNAME_MACHINE"-pc-cygwin
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-cygwin
+	;;
     *:MINGW64*:*)
-	echo "$UNAME_MACHINE"-pc-mingw64
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-mingw64
+	;;
     *:MINGW*:*)
-	echo "$UNAME_MACHINE"-pc-mingw32
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-mingw32
+	;;
     *:MSYS*:*)
-	echo "$UNAME_MACHINE"-pc-msys
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-msys
+	;;
     i*:PW*:*)
-	echo "$UNAME_MACHINE"-pc-pw32
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-pw32
+	;;
+    *:SerenityOS:*:*)
+        GUESS=$UNAME_MACHINE-pc-serenity
+        ;;
     *:Interix*:*)
-	case "$UNAME_MACHINE" in
+	case $UNAME_MACHINE in
 	    x86)
-		echo i586-pc-interix"$UNAME_RELEASE"
-		exit ;;
+		GUESS=i586-pc-interix$UNAME_RELEASE
+		;;
 	    authenticamd | genuineintel | EM64T)
-		echo x86_64-unknown-interix"$UNAME_RELEASE"
-		exit ;;
+		GUESS=x86_64-unknown-interix$UNAME_RELEASE
+		;;
 	    IA64)
-		echo ia64-unknown-interix"$UNAME_RELEASE"
-		exit ;;
+		GUESS=ia64-unknown-interix$UNAME_RELEASE
+		;;
 	esac ;;
     i*:UWIN*:*)
-	echo "$UNAME_MACHINE"-pc-uwin
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-uwin
+	;;
     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
-	echo x86_64-pc-cygwin
-	exit ;;
+	GUESS=x86_64-pc-cygwin
+	;;
     prep*:SunOS:5.*:*)
-	echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
-	exit ;;
+	SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`
+	GUESS=powerpcle-unknown-solaris2$SUN_REL
+	;;
     *:GNU:*:*)
 	# the GNU system
-	echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
-	exit ;;
+	GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'`
+	GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'`
+	GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL
+	;;
     *:GNU/*:*:*)
 	# other systems with GNU libc and userland
-	echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
-	exit ;;
+	GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"`
+	GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC
+	;;
+    x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*)
+	GUESS="$UNAME_MACHINE-pc-managarm-mlibc"
+	;;
+    *:[Mm]anagarm:*:*)
+	GUESS="$UNAME_MACHINE-unknown-managarm-mlibc"
+	;;
     *:Minix:*:*)
-	echo "$UNAME_MACHINE"-unknown-minix
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-minix
+	;;
     aarch64:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	set_cc_for_build
+	CPU=$UNAME_MACHINE
+	LIBCABI=$LIBC
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
+	    ABI=64
+	    sed 's/^	    //' << EOF > "$dummy.c"
+	    #ifdef __ARM_EABI__
+	    #ifdef __ARM_PCS_VFP
+	    ABI=eabihf
+	    #else
+	    ABI=eabi
+	    #endif
+	    #endif
+EOF
+	    cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+	    eval "$cc_set_abi"
+	    case $ABI in
+		eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;;
+	    esac
+	fi
+	GUESS=$CPU-unknown-linux-$LIBCABI
+	;;
     aarch64_be:Linux:*:*)
 	UNAME_MACHINE=aarch64_be
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     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 ;;
@@ -929,60 +1022,72 @@ EOF
 	esac
 	objdump --private-headers /bin/sh | grep -q ld.so.1
 	if test "$?" = 0 ; then LIBC=gnulibc1 ; fi
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
-    arc:Linux:*:* | arceb:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
+    arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*)
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     arm*:Linux:*:*)
 	set_cc_for_build
 	if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
 	    | grep -q __ARM_EABI__
 	then
-	    echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
+	    GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
 	else
 	    if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
 		| grep -q __ARM_PCS_VFP
 	    then
-		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi
+		GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi
 	    else
-		echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf
+		GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf
 	    fi
 	fi
-	exit ;;
+	;;
     avr32*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     cris:Linux:*:*)
-	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+	;;
     crisv32:Linux:*:*)
-	echo "$UNAME_MACHINE"-axis-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-axis-linux-$LIBC
+	;;
     e2k:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     frv:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     hexagon:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     i*86:Linux:*:*)
-	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-linux-$LIBC
+	;;
     ia64:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     k1om:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
+    kvx:Linux:*:*)
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
+    kvx:cos:*:*)
+	GUESS=$UNAME_MACHINE-unknown-cos
+	;;
+    kvx:mbr:*:*)
+	GUESS=$UNAME_MACHINE-unknown-mbr
+	;;
+    loongarch32:Linux:*:* | loongarch64:Linux:*:*)
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     m32r*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     m68*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     mips:Linux:*:* | mips64:Linux:*:*)
 	set_cc_for_build
 	IS_GLIBC=0
@@ -1027,113 +1132,135 @@ EOF
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+	cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`
+	eval "$cc_set_vars"
 	test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
 	;;
     mips64el:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     openrisc*:Linux:*:*)
-	echo or1k-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=or1k-unknown-linux-$LIBC
+	;;
     or32:Linux:*:* | or1k*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     padre:Linux:*:*)
-	echo sparc-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=sparc-unknown-linux-$LIBC
+	;;
     parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=hppa64-unknown-linux-$LIBC
+	;;
     parisc:Linux:*:* | hppa:Linux:*:*)
 	# Look for CPU level
 	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
-	  PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
-	  PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
-	  *)    echo hppa-unknown-linux-"$LIBC" ;;
+	  PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;;
+	  PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;;
+	  *)    GUESS=hppa-unknown-linux-$LIBC ;;
 	esac
-	exit ;;
+	;;
     ppc64:Linux:*:*)
-	echo powerpc64-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=powerpc64-unknown-linux-$LIBC
+	;;
     ppc:Linux:*:*)
-	echo powerpc-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=powerpc-unknown-linux-$LIBC
+	;;
     ppc64le:Linux:*:*)
-	echo powerpc64le-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=powerpc64le-unknown-linux-$LIBC
+	;;
     ppcle:Linux:*:*)
-	echo powerpcle-unknown-linux-"$LIBC"
-	exit ;;
-    riscv32:Linux:*:* | riscv64:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=powerpcle-unknown-linux-$LIBC
+	;;
+    riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*)
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     s390:Linux:*:* | s390x:Linux:*:*)
-	echo "$UNAME_MACHINE"-ibm-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-ibm-linux-$LIBC
+	;;
     sh64*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     sh*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     sparc:Linux:*:* | sparc64:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     tile*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     vax:Linux:*:*)
-	echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-dec-linux-$LIBC
+	;;
     x86_64:Linux:*:*)
-	echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
-	exit ;;
+	set_cc_for_build
+	CPU=$UNAME_MACHINE
+	LIBCABI=$LIBC
+	if test "$CC_FOR_BUILD" != no_compiler_found; then
+	    ABI=64
+	    sed 's/^	    //' << EOF > "$dummy.c"
+	    #ifdef __i386__
+	    ABI=x86
+	    #else
+	    #ifdef __ILP32__
+	    ABI=x32
+	    #endif
+	    #endif
+EOF
+	    cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'`
+	    eval "$cc_set_abi"
+	    case $ABI in
+		x86) CPU=i686 ;;
+		x32) LIBCABI=${LIBC}x32 ;;
+	    esac
+	fi
+	GUESS=$CPU-pc-linux-$LIBCABI
+	;;
     xtensa*:Linux:*:*)
-	echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-linux-$LIBC
+	;;
     i*86:DYNIX/ptx:4*:*)
 	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
 	# earlier versions are messed up and put the nodename in both
 	# sysname and nodename.
-	echo i386-sequent-sysv4
-	exit ;;
+	GUESS=i386-sequent-sysv4
+	;;
     i*86:UNIX_SV:4.2MP:2.*)
 	# Unixware is an offshoot of SVR4, but it has its own version
 	# number series starting with 2...
 	# I am not positive that other SVR4 systems won't match this,
 	# I just have to hope.  -- rms.
 	# Use sysv4.2uw... so that sysv4* matches it.
-	echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION"
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION
+	;;
     i*86:OS/2:*:*)
-	# If we were able to find `uname', then EMX Unix compatibility
+	# If we were able to find 'uname', then EMX Unix compatibility
 	# is probably installed.
-	echo "$UNAME_MACHINE"-pc-os2-emx
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-os2-emx
+	;;
     i*86:XTS-300:*:STOP)
-	echo "$UNAME_MACHINE"-unknown-stop
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-stop
+	;;
     i*86:atheos:*:*)
-	echo "$UNAME_MACHINE"-unknown-atheos
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-atheos
+	;;
     i*86:syllable:*:*)
-	echo "$UNAME_MACHINE"-pc-syllable
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-syllable
+	;;
     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
-	echo i386-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=i386-unknown-lynxos$UNAME_RELEASE
+	;;
     i*86:*DOS:*:*)
-	echo "$UNAME_MACHINE"-pc-msdosdjgpp
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-msdosdjgpp
+	;;
     i*86:*:4.*:*)
 	UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
 	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
-		echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
+		GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL
 	else
-		echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL"
+		GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL
 	fi
-	exit ;;
+	;;
     i*86:*:5:[678]*)
 	# UnixWare 7.x, OpenUNIX and OpenServer 6.
 	case `/bin/uname -X | grep "^Machine"` in
@@ -1141,12 +1268,12 @@ EOF
 	    *Pentium)	     UNAME_MACHINE=i586 ;;
 	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
 	esac
-	echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	;;
     i*86:*:3.2:*)
 	if test -f /usr/options/cb.name; then
 		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
-		echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
+		GUESS=$UNAME_MACHINE-pc-isc$UNAME_REL
 	elif /bin/uname -X 2>/dev/null >/dev/null ; then
 		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
 		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
@@ -1156,11 +1283,11 @@ EOF
 			&& UNAME_MACHINE=i686
 		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
 			&& UNAME_MACHINE=i686
-		echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL"
+		GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL
 	else
-		echo "$UNAME_MACHINE"-pc-sysv32
+		GUESS=$UNAME_MACHINE-pc-sysv32
 	fi
-	exit ;;
+	;;
     pc:*:*:*)
 	# Left here for compatibility:
 	# uname -m prints for DJGPP always 'pc', but it prints nothing about
@@ -1168,31 +1295,31 @@ EOF
 	# Note: whatever this is, it MUST be the same as what config.sub
 	# prints for the "djgpp" host, or else GDB configure will decide that
 	# this is a cross-build.
-	echo i586-pc-msdosdjgpp
-	exit ;;
+	GUESS=i586-pc-msdosdjgpp
+	;;
     Intel:Mach:3*:*)
-	echo i386-pc-mach3
-	exit ;;
+	GUESS=i386-pc-mach3
+	;;
     paragon:*:*:*)
-	echo i860-intel-osf1
-	exit ;;
+	GUESS=i860-intel-osf1
+	;;
     i860:*:4.*:*) # i860-SVR4
 	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
-	  echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4
+	  GUESS=i860-stardent-sysv$UNAME_RELEASE    # Stardent Vistra i860-SVR4
 	else # Add other i860-SVR4 vendors below as they are discovered.
-	  echo i860-unknown-sysv"$UNAME_RELEASE"  # Unknown i860-SVR4
+	  GUESS=i860-unknown-sysv$UNAME_RELEASE     # Unknown i860-SVR4
 	fi
-	exit ;;
+	;;
     mini*:CTIX:SYS*5:*)
 	# "miniframe"
-	echo m68010-convergent-sysv
-	exit ;;
+	GUESS=m68010-convergent-sysv
+	;;
     mc68k:UNIX:SYSTEM5:3.51m)
-	echo m68k-convergent-sysv
-	exit ;;
+	GUESS=m68k-convergent-sysv
+	;;
     M680?0:D-NIX:5.3:*)
-	echo m68k-diab-dnix
-	exit ;;
+	GUESS=m68k-diab-dnix
+	;;
     M68*:*:R3V[5678]*:*)
 	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
     3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
@@ -1217,250 +1344,270 @@ EOF
 	/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
 	    && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;;
     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
-	echo m68k-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-unknown-lynxos$UNAME_RELEASE
+	;;
     mc68030:UNIX_System_V:4.*:*)
-	echo m68k-atari-sysv4
-	exit ;;
+	GUESS=m68k-atari-sysv4
+	;;
     TSUNAMI:LynxOS:2.*:*)
-	echo sparc-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sparc-unknown-lynxos$UNAME_RELEASE
+	;;
     rs6000:LynxOS:2.*:*)
-	echo rs6000-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=rs6000-unknown-lynxos$UNAME_RELEASE
+	;;
     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
-	echo powerpc-unknown-lynxos"$UNAME_RELEASE"
-	exit ;;
+	GUESS=powerpc-unknown-lynxos$UNAME_RELEASE
+	;;
     SM[BE]S:UNIX_SV:*:*)
-	echo mips-dde-sysv"$UNAME_RELEASE"
-	exit ;;
+	GUESS=mips-dde-sysv$UNAME_RELEASE
+	;;
     RM*:ReliantUNIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
+	GUESS=mips-sni-sysv4
+	;;
     RM*:SINIX-*:*:*)
-	echo mips-sni-sysv4
-	exit ;;
+	GUESS=mips-sni-sysv4
+	;;
     *:SINIX-*:*:*)
 	if uname -p 2>/dev/null >/dev/null ; then
 		UNAME_MACHINE=`(uname -p) 2>/dev/null`
-		echo "$UNAME_MACHINE"-sni-sysv4
+		GUESS=$UNAME_MACHINE-sni-sysv4
 	else
-		echo ns32k-sni-sysv
+		GUESS=ns32k-sni-sysv
 	fi
-	exit ;;
-    PENTIUM:*:4.0*:*)	# Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+	;;
+    PENTIUM:*:4.0*:*)	# Unisys 'ClearPath HMP IX 4000' SVR4/MP effort
 			# says <Richard.M.Bartel@ccMail.Census.GOV>
-	echo i586-unisys-sysv4
-	exit ;;
+	GUESS=i586-unisys-sysv4
+	;;
     *:UNIX_System_V:4*:FTX*)
 	# From Gerald Hewes <hewes@openmarket.com>.
 	# How about differentiating between stratus architectures? -djm
-	echo hppa1.1-stratus-sysv4
-	exit ;;
+	GUESS=hppa1.1-stratus-sysv4
+	;;
     *:*:*:FTX*)
 	# From seanf@swdc.stratus.com.
-	echo i860-stratus-sysv4
-	exit ;;
+	GUESS=i860-stratus-sysv4
+	;;
     i*86:VOS:*:*)
 	# From Paul.Green@stratus.com.
-	echo "$UNAME_MACHINE"-stratus-vos
-	exit ;;
+	GUESS=$UNAME_MACHINE-stratus-vos
+	;;
     *:VOS:*:*)
 	# From Paul.Green@stratus.com.
-	echo hppa1.1-stratus-vos
-	exit ;;
+	GUESS=hppa1.1-stratus-vos
+	;;
     mc68*:A/UX:*:*)
-	echo m68k-apple-aux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=m68k-apple-aux$UNAME_RELEASE
+	;;
     news*:NEWS-OS:6*:*)
-	echo mips-sony-newsos6
-	exit ;;
+	GUESS=mips-sony-newsos6
+	;;
     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
-	if [ -d /usr/nec ]; then
-		echo mips-nec-sysv"$UNAME_RELEASE"
+	if test -d /usr/nec; then
+		GUESS=mips-nec-sysv$UNAME_RELEASE
 	else
-		echo mips-unknown-sysv"$UNAME_RELEASE"
+		GUESS=mips-unknown-sysv$UNAME_RELEASE
 	fi
-	exit ;;
+	;;
     BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
-	echo powerpc-be-beos
-	exit ;;
+	GUESS=powerpc-be-beos
+	;;
     BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
-	echo powerpc-apple-beos
-	exit ;;
+	GUESS=powerpc-apple-beos
+	;;
     BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
-	echo i586-pc-beos
-	exit ;;
+	GUESS=i586-pc-beos
+	;;
     BePC:Haiku:*:*)	# Haiku running on Intel PC compatible.
-	echo i586-pc-haiku
-	exit ;;
-    x86_64:Haiku:*:*)
-	echo x86_64-unknown-haiku
-	exit ;;
+	GUESS=i586-pc-haiku
+	;;
+    ppc:Haiku:*:*)	# Haiku running on Apple PowerPC
+	GUESS=powerpc-apple-haiku
+	;;
+    *:Haiku:*:*)	# Haiku modern gcc (not bound by BeOS compat)
+	GUESS=$UNAME_MACHINE-unknown-haiku
+	;;
     SX-4:SUPER-UX:*:*)
-	echo sx4-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx4-nec-superux$UNAME_RELEASE
+	;;
     SX-5:SUPER-UX:*:*)
-	echo sx5-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx5-nec-superux$UNAME_RELEASE
+	;;
     SX-6:SUPER-UX:*:*)
-	echo sx6-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx6-nec-superux$UNAME_RELEASE
+	;;
     SX-7:SUPER-UX:*:*)
-	echo sx7-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx7-nec-superux$UNAME_RELEASE
+	;;
     SX-8:SUPER-UX:*:*)
-	echo sx8-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx8-nec-superux$UNAME_RELEASE
+	;;
     SX-8R:SUPER-UX:*:*)
-	echo sx8r-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sx8r-nec-superux$UNAME_RELEASE
+	;;
     SX-ACE:SUPER-UX:*:*)
-	echo sxace-nec-superux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=sxace-nec-superux$UNAME_RELEASE
+	;;
     Power*:Rhapsody:*:*)
-	echo powerpc-apple-rhapsody"$UNAME_RELEASE"
-	exit ;;
+	GUESS=powerpc-apple-rhapsody$UNAME_RELEASE
+	;;
     *:Rhapsody:*:*)
-	echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE
+	;;
+    arm64:Darwin:*:*)
+	GUESS=aarch64-apple-darwin$UNAME_RELEASE
+	;;
     *: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 test "$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 ;;
+	GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE
+	;;
     *:procnto*:*:* | *:QNX:[0123456789]*:*)
 	UNAME_PROCESSOR=`uname -p`
 	if test "$UNAME_PROCESSOR" = x86; then
 		UNAME_PROCESSOR=i386
 		UNAME_MACHINE=pc
 	fi
-	echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE
+	;;
     *:QNX:*:4*)
-	echo i386-pc-qnx
-	exit ;;
+	GUESS=i386-pc-qnx
+	;;
     NEO-*:NONSTOP_KERNEL:*:*)
-	echo neo-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=neo-tandem-nsk$UNAME_RELEASE
+	;;
     NSE-*:NONSTOP_KERNEL:*:*)
-	echo nse-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=nse-tandem-nsk$UNAME_RELEASE
+	;;
     NSR-*:NONSTOP_KERNEL:*:*)
-	echo nsr-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=nsr-tandem-nsk$UNAME_RELEASE
+	;;
     NSV-*:NONSTOP_KERNEL:*:*)
-	echo nsv-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=nsv-tandem-nsk$UNAME_RELEASE
+	;;
     NSX-*:NONSTOP_KERNEL:*:*)
-	echo nsx-tandem-nsk"$UNAME_RELEASE"
-	exit ;;
+	GUESS=nsx-tandem-nsk$UNAME_RELEASE
+	;;
     *:NonStop-UX:*:*)
-	echo mips-compaq-nonstopux
-	exit ;;
+	GUESS=mips-compaq-nonstopux
+	;;
     BS2000:POSIX*:*:*)
-	echo bs2000-siemens-sysv
-	exit ;;
+	GUESS=bs2000-siemens-sysv
+	;;
     DS/*:UNIX_System_V:*:*)
-	echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE
+	;;
     *:Plan9:*:*)
 	# "uname -m" is not consistent, so use $cputype instead. 386
 	# is converted to i386 for consistency with other x86
 	# operating systems.
-	# shellcheck disable=SC2154
-	if test "$cputype" = 386; then
+	if test "${cputype-}" = 386; then
 	    UNAME_MACHINE=i386
-	else
-	    UNAME_MACHINE="$cputype"
+	elif test "x${cputype-}" != x; then
+	    UNAME_MACHINE=$cputype
 	fi
-	echo "$UNAME_MACHINE"-unknown-plan9
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-plan9
+	;;
     *:TOPS-10:*:*)
-	echo pdp10-unknown-tops10
-	exit ;;
+	GUESS=pdp10-unknown-tops10
+	;;
     *:TENEX:*:*)
-	echo pdp10-unknown-tenex
-	exit ;;
+	GUESS=pdp10-unknown-tenex
+	;;
     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
-	echo pdp10-dec-tops20
-	exit ;;
+	GUESS=pdp10-dec-tops20
+	;;
     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
-	echo pdp10-xkl-tops20
-	exit ;;
+	GUESS=pdp10-xkl-tops20
+	;;
     *:TOPS-20:*:*)
-	echo pdp10-unknown-tops20
-	exit ;;
+	GUESS=pdp10-unknown-tops20
+	;;
     *:ITS:*:*)
-	echo pdp10-unknown-its
-	exit ;;
+	GUESS=pdp10-unknown-its
+	;;
     SEI:*:*:SEIUX)
-	echo mips-sei-seiux"$UNAME_RELEASE"
-	exit ;;
+	GUESS=mips-sei-seiux$UNAME_RELEASE
+	;;
     *:DragonFly:*:*)
-	echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
-	exit ;;
+	DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'`
+	GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL
+	;;
     *:*VMS:*:*)
 	UNAME_MACHINE=`(uname -p) 2>/dev/null`
-	case "$UNAME_MACHINE" in
-	    A*) echo alpha-dec-vms ; exit ;;
-	    I*) echo ia64-dec-vms ; exit ;;
-	    V*) echo vax-dec-vms ; exit ;;
+	case $UNAME_MACHINE in
+	    A*) GUESS=alpha-dec-vms ;;
+	    I*) GUESS=ia64-dec-vms ;;
+	    V*) GUESS=vax-dec-vms ;;
 	esac ;;
     *:XENIX:*:SysV)
-	echo i386-pc-xenix
-	exit ;;
+	GUESS=i386-pc-xenix
+	;;
     i*86:skyos:*:*)
-	echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
-	exit ;;
+	SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`
+	GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL
+	;;
     i*86:rdos:*:*)
-	echo "$UNAME_MACHINE"-pc-rdos
-	exit ;;
-    i*86:AROS:*:*)
-	echo "$UNAME_MACHINE"-pc-aros
-	exit ;;
+	GUESS=$UNAME_MACHINE-pc-rdos
+	;;
+    i*86:Fiwix:*:*)
+	GUESS=$UNAME_MACHINE-pc-fiwix
+	;;
+    *:AROS:*:*)
+	GUESS=$UNAME_MACHINE-unknown-aros
+	;;
     x86_64:VMkernel:*:*)
-	echo "$UNAME_MACHINE"-unknown-esx
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-esx
+	;;
     amd64:Isilon\ OneFS:*:*)
-	echo x86_64-unknown-onefs
-	exit ;;
+	GUESS=x86_64-unknown-onefs
+	;;
     *:Unleashed:*:*)
-	echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
-	exit ;;
+	GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE
+	;;
+    *:Ironclad:*:*)
+	GUESS=$UNAME_MACHINE-unknown-ironclad
+	;;
 esac
 
+# Do we have a guess based on uname results?
+if test "x$GUESS" != x; then
+    echo "$GUESS"
+    exit
+fi
+
 # No uname command or uname output not recognized.
 set_cc_for_build
 cat > "$dummy.c" <<EOF
@@ -1476,6 +1623,7 @@ cat > "$dummy.c" <<EOF
 #endif
 #endif
 #endif
+int
 main ()
 {
 #if defined (sony)
@@ -1592,7 +1740,7 @@ main ()
 }
 EOF
 
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` &&
 	{ echo "$SYSTEM_NAME"; exit; }
 
 # Apollos put the system type in the environment.
@@ -1600,7 +1748,7 @@ test -d /usr/apollo && { echo "$ISP-apol
 
 echo "$0: unable to guess system type" >&2
 
-case "$UNAME_MACHINE:$UNAME_SYSTEM" in
+case $UNAME_MACHINE:$UNAME_SYSTEM in
     mips:Linux | mips64:Linux)
 	# If we got here on MIPS GNU/Linux, output extra information.
 	cat >&2 <<EOF
@@ -1617,9 +1765,17 @@ This script (version $timestamp), has fa
 operating system you are using. If your script is old, overwrite *all*
 copies of config.guess and config.sub with the latest versions from:
 
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
+  https://git.savannah.gnu.org/cgit/config.git/plain/config.guess
 and
-  https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+  https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+our_year=`echo $timestamp | sed 's,-.*,,'`
+thisyear=`date +%Y`
+# shellcheck disable=SC2003
+script_age=`expr "$thisyear" - "$our_year"`
+if test "$script_age" -lt 3 ; then
+   cat >&2 <<EOF
 
 If $0 has already been updated, send the following data and any
 information you think might be pertinent to config-patches@gnu.org to
@@ -1647,6 +1803,7 @@ UNAME_RELEASE = "$UNAME_RELEASE"
 UNAME_SYSTEM  = "$UNAME_SYSTEM"
 UNAME_VERSION = "$UNAME_VERSION"
 EOF
+fi
 
 exit 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.20200303/config-ml.in ./config-ml.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config-ml.in	2020-03-03 02:08:51.000000000 +0000
+++ ./config-ml.in	2026-03-05 02:07:20.000000000 +0000
@@ -383,6 +383,19 @@ mips*-*-*)
 	  done
 	fi
 	;;
+msp430-*-*)
+	if [ x$enable_no_exceptions = xno ]
+	then
+	  old_multidirs="${multidirs}"
+	  multidirs=""
+	  for x in ${old_multidirs}; do
+	    case "$x" in
+	      *no-exceptions* ) : ;;
+	      *) multidirs="${multidirs} ${x}" ;;
+	    esac
+	  done
+	fi
+	;;
 powerpc*-*-* | rs6000*-*-*)
 	if [ x$enable_aix64 = xno ]
 	then
@@ -486,10 +499,8 @@ cat > Multi.tem <<\EOF
 
 PWD_COMMAND=$${PWDCMD-pwd}
 
-# FIXME: There should be an @-sign in front of the `if'.
-# Leave out until this is tested a bit more.
 multi-do:
-	if [ -z "$(MULTIDIRS)" ]; then \
+	@if [ -z "$(MULTIDIRS)" ]; then \
 	  true; \
 	else \
 	  rootpre=`${PWD_COMMAND}`/; export rootpre; \
@@ -512,6 +523,7 @@ multi-do:
 				prefix="$(prefix)" \
 				exec_prefix="$(exec_prefix)" \
 				GOCFLAGS="$(GOCFLAGS) $${flags}" \
+				GDCFLAGS="$(GDCFLAGS) $${flags}" \
 				CXXFLAGS="$(CXXFLAGS) $${flags}" \
 				LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
 				LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
@@ -533,10 +545,8 @@ multi-do:
 	  done; \
 	fi
 
-# FIXME: There should be an @-sign in front of the `if'.
-# Leave out until this is tested a bit more.
 multi-clean:
-	if [ -z "$(MULTIDIRS)" ]; then \
+	@if [ -z "$(MULTIDIRS)" ]; then \
 	  true; \
 	else \
 	  lib=`${PWD_COMMAND} | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
@@ -745,7 +755,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
         break
       fi
     done
-    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags"'
+    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" F77="${F77_}$flags" GFORTRAN="${GFORTRAN_}$flags" GOC="${GOC_}$flags" GDC="${GDC_}$flags"'
 
     if [ "${with_target_subdir}" = "." ]; then
 	CC_=$CC' '
@@ -753,6 +763,7 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
 	F77_=$F77' '
 	GFORTRAN_=$GFORTRAN' '
 	GOC_=$GOC' '
+	GDC_=$GDC' '
     else
 	# Create a regular expression that matches any string as long
 	# as ML_POPDIR.
@@ -817,6 +828,18 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n
 	  esac
 	done
 
+	GDC_=
+	for arg in ${GDC}; do
+	  case $arg in
+	  -[BIL]"${ML_POPDIR}"/*)
+	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+	  "${ML_POPDIR}"/*)
+	    GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+	  *)
+	    GDC_="${GDC_}${arg} " ;;
+	  esac
+	done
+
 	if test "x${LD_LIBRARY_PATH+set}" = xset; then
 	  LD_LIBRARY_PATH_=
 	  for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config.sub ./config.sub
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/config.sub	2020-03-03 02:08:51.000000000 +0000
+++ ./config.sub	2026-03-05 02:07:20.000000000 +0000
@@ -1,12 +1,14 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2019 Free Software Foundation, Inc.
+#   Copyright 1992-2024 Free Software Foundation, Inc.
 
-timestamp='2019-05-23'
+# shellcheck disable=SC2006,SC2268,SC2162 # see below for rationale
+
+timestamp='2024-05-27'
 
 # 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 Free Software Foundation; either version 3 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful, but
@@ -33,7 +35,7 @@ timestamp='2019-05-23'
 # Otherwise, we print the canonical config type on stdout and succeed.
 
 # You can get the latest version of this script from:
-# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
 
 # This file is supposed to be the same for all GNU packages
 # and recognize all the CPU types, system types and aliases
@@ -50,6 +52,13 @@ timestamp='2019-05-23'
 #	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
 # It is wrong to echo any other type of specification.
 
+# The "shellcheck disable" line above the timestamp inhibits complaints
+# about features and limitations of the classic Bourne shell that were
+# superseded or lifted in POSIX.  However, this script identifies a wide
+# variety of pre-POSIX systems that do not have POSIX shells at all, and
+# even some reasonably current systems (Solaris 10 as case-in-point) still
+# have a pre-POSIX /bin/sh.
+
 me=`echo "$0" | sed -e 's,.*/,,'`
 
 usage="\
@@ -67,13 +76,13 @@ Report bugs and patches to <config-patch
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2019 Free Software Foundation, Inc.
+Copyright 1992-2024 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."
 
 help="
-Try \`$me --help' for more information."
+Try '$me --help' for more information."
 
 # Parse command line
 while test $# -gt 0 ; do
@@ -111,75 +120,154 @@ case $# in
 esac
 
 # Split fields of configuration type
-# shellcheck disable=SC2162
+saved_IFS=$IFS
 IFS="-" read field1 field2 field3 field4 <<EOF
 $1
 EOF
+IFS=$saved_IFS
 
 # Separate into logical components for further validation
 case $1 in
 	*-*-*-*-*)
-		echo Invalid configuration \`"$1"\': more than four components >&2
+		echo "Invalid configuration '$1': more than four components" >&2
 		exit 1
 		;;
 	*-*-*-*)
 		basic_machine=$field1-$field2
-		os=$field3-$field4
+		basic_os=$field3-$field4
 		;;
 	*-*-*)
 		# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
 		# parts
 		maybe_os=$field2-$field3
 		case $maybe_os in
-			nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
-			| linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
-			| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
-			| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
-			| storm-chaos* | os2-emx* | rtmk-nova*)
+			  cloudabi*-eabi* \
+			| kfreebsd*-gnu* \
+			| knetbsd*-gnu* \
+			| kopensolaris*-gnu* \
+			| linux-* \
+			| managarm-* \
+			| netbsd*-eabi* \
+			| netbsd*-gnu* \
+			| nto-qnx* \
+			| os2-emx* \
+			| rtmk-nova* \
+			| storm-chaos* \
+			| uclinux-gnu* \
+			| uclinux-uclibc* \
+			| windows-* )
 				basic_machine=$field1
-				os=$maybe_os
+				basic_os=$maybe_os
 				;;
 			android-linux)
 				basic_machine=$field1-unknown
-				os=linux-android
+				basic_os=linux-android
 				;;
 			*)
 				basic_machine=$field1-$field2
-				os=$field3
+				basic_os=$field3
 				;;
 		esac
 		;;
 	*-*)
-		# A lone config we happen to match not fitting any pattern
 		case $field1-$field2 in
+			# Shorthands that happen to contain a single dash
+			convex-c[12] | convex-c3[248])
+				basic_machine=$field2-convex
+				basic_os=
+				;;
 			decstation-3100)
 				basic_machine=mips-dec
-				os=
+				basic_os=
 				;;
 			*-*)
 				# Second component is usually, but not always the OS
 				case $field2 in
-					# Prevent following clause from handling this valid os
+					# Do not treat sunos as a manufacturer
 					sun*os*)
 						basic_machine=$field1
-						os=$field2
+						basic_os=$field2
 						;;
 					# Manufacturers
-					dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
-					| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
-					| unicom* | ibm* | next | hp | isi* | apollo | altos* \
-					| convergent* | ncr* | news | 32* | 3600* | 3100* \
-					| hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
-					| ultra | tti* | harris | dolphin | highlevel | gould \
-					| cbm | ns | masscomp | apple | axis | knuth | cray \
-					| microblaze* | sim | cisco \
-					| oki | wec | wrs | winbond)
+					  3100* \
+					| 32* \
+					| 3300* \
+					| 3600* \
+					| 7300* \
+					| acorn \
+					| altos* \
+					| apollo \
+					| apple \
+					| atari \
+					| att* \
+					| axis \
+					| be \
+					| bull \
+					| cbm \
+					| ccur \
+					| cisco \
+					| commodore \
+					| convergent* \
+					| convex* \
+					| cray \
+					| crds \
+					| dec* \
+					| delta* \
+					| dg \
+					| digital \
+					| dolphin \
+					| encore* \
+					| gould \
+					| harris \
+					| highlevel \
+					| hitachi* \
+					| hp \
+					| ibm* \
+					| intergraph \
+					| isi* \
+					| knuth \
+					| masscomp \
+					| microblaze* \
+					| mips* \
+					| motorola* \
+					| ncr* \
+					| news \
+					| next \
+					| ns \
+					| oki \
+					| omron* \
+					| pc533* \
+					| rebel \
+					| rom68k \
+					| rombug \
+					| semi \
+					| sequent* \
+					| siemens \
+					| sgi* \
+					| siemens \
+					| sim \
+					| sni \
+					| sony* \
+					| stratus \
+					| sun \
+					| sun[234]* \
+					| tektronix \
+					| tti* \
+					| ultra \
+					| unicom* \
+					| wec \
+					| winbond \
+					| wrs)
 						basic_machine=$field1-$field2
-						os=
+						basic_os=
+						;;
+					zephyr*)
+						basic_machine=$field1-unknown
+						basic_os=$field2
 						;;
 					*)
 						basic_machine=$field1
-						os=$field2
+						basic_os=$field2
 						;;
 				esac
 			;;
@@ -191,450 +279,431 @@ case $1 in
 		case $field1 in
 			386bsd)
 				basic_machine=i386-pc
-				os=bsd
+				basic_os=bsd
 				;;
 			a29khif)
 				basic_machine=a29k-amd
-				os=udi
+				basic_os=udi
 				;;
 			adobe68k)
 				basic_machine=m68010-adobe
-				os=scout
+				basic_os=scout
 				;;
 			alliant)
 				basic_machine=fx80-alliant
-				os=
+				basic_os=
 				;;
 			altos | altos3068)
 				basic_machine=m68k-altos
-				os=
+				basic_os=
 				;;
 			am29k)
 				basic_machine=a29k-none
-				os=bsd
+				basic_os=bsd
 				;;
 			amdahl)
 				basic_machine=580-amdahl
-				os=sysv
+				basic_os=sysv
 				;;
 			amiga)
 				basic_machine=m68k-unknown
-				os=
+				basic_os=
 				;;
 			amigaos | amigados)
 				basic_machine=m68k-unknown
-				os=amigaos
+				basic_os=amigaos
 				;;
 			amigaunix | amix)
 				basic_machine=m68k-unknown
-				os=sysv4
+				basic_os=sysv4
 				;;
 			apollo68)
 				basic_machine=m68k-apollo
-				os=sysv
+				basic_os=sysv
 				;;
 			apollo68bsd)
 				basic_machine=m68k-apollo
-				os=bsd
+				basic_os=bsd
 				;;
 			aros)
 				basic_machine=i386-pc
-				os=aros
+				basic_os=aros
 				;;
 			aux)
 				basic_machine=m68k-apple
-				os=aux
+				basic_os=aux
 				;;
 			balance)
 				basic_machine=ns32k-sequent
-				os=dynix
+				basic_os=dynix
 				;;
 			blackfin)
 				basic_machine=bfin-unknown
-				os=linux
+				basic_os=linux
 				;;
 			cegcc)
 				basic_machine=arm-unknown
-				os=cegcc
-				;;
-			convex-c1)
-				basic_machine=c1-convex
-				os=bsd
-				;;
-			convex-c2)
-				basic_machine=c2-convex
-				os=bsd
-				;;
-			convex-c32)
-				basic_machine=c32-convex
-				os=bsd
-				;;
-			convex-c34)
-				basic_machine=c34-convex
-				os=bsd
-				;;
-			convex-c38)
-				basic_machine=c38-convex
-				os=bsd
+				basic_os=cegcc
 				;;
 			cray)
 				basic_machine=j90-cray
-				os=unicos
+				basic_os=unicos
 				;;
 			crds | unos)
 				basic_machine=m68k-crds
-				os=
+				basic_os=
 				;;
 			da30)
 				basic_machine=m68k-da30
-				os=
+				basic_os=
 				;;
 			decstation | pmax | pmin | dec3100 | decstatn)
 				basic_machine=mips-dec
-				os=
+				basic_os=
 				;;
 			delta88)
 				basic_machine=m88k-motorola
-				os=sysv3
+				basic_os=sysv3
 				;;
 			dicos)
 				basic_machine=i686-pc
-				os=dicos
+				basic_os=dicos
 				;;
 			djgpp)
 				basic_machine=i586-pc
-				os=msdosdjgpp
+				basic_os=msdosdjgpp
 				;;
 			ebmon29k)
 				basic_machine=a29k-amd
-				os=ebmon
+				basic_os=ebmon
 				;;
 			es1800 | OSE68k | ose68k | ose | OSE)
 				basic_machine=m68k-ericsson
-				os=ose
+				basic_os=ose
 				;;
 			gmicro)
 				basic_machine=tron-gmicro
-				os=sysv
+				basic_os=sysv
 				;;
 			go32)
 				basic_machine=i386-pc
-				os=go32
+				basic_os=go32
 				;;
 			h8300hms)
 				basic_machine=h8300-hitachi
-				os=hms
+				basic_os=hms
 				;;
 			h8300xray)
 				basic_machine=h8300-hitachi
-				os=xray
+				basic_os=xray
 				;;
 			h8500hms)
 				basic_machine=h8500-hitachi
-				os=hms
+				basic_os=hms
 				;;
 			harris)
 				basic_machine=m88k-harris
-				os=sysv3
+				basic_os=sysv3
 				;;
-			hp300)
+			hp300 | hp300hpux)
 				basic_machine=m68k-hp
+				basic_os=hpux
 				;;
 			hp300bsd)
 				basic_machine=m68k-hp
-				os=bsd
-				;;
-			hp300hpux)
-				basic_machine=m68k-hp
-				os=hpux
+				basic_os=bsd
 				;;
 			hppaosf)
 				basic_machine=hppa1.1-hp
-				os=osf
+				basic_os=osf
 				;;
 			hppro)
 				basic_machine=hppa1.1-hp
-				os=proelf
+				basic_os=proelf
 				;;
 			i386mach)
 				basic_machine=i386-mach
-				os=mach
-				;;
-			vsta)
-				basic_machine=i386-pc
-				os=vsta
+				basic_os=mach
 				;;
 			isi68 | isi)
 				basic_machine=m68k-isi
-				os=sysv
+				basic_os=sysv
 				;;
 			m68knommu)
 				basic_machine=m68k-unknown
-				os=linux
+				basic_os=linux
 				;;
 			magnum | m3230)
 				basic_machine=mips-mips
-				os=sysv
+				basic_os=sysv
 				;;
 			merlin)
 				basic_machine=ns32k-utek
-				os=sysv
+				basic_os=sysv
 				;;
 			mingw64)
 				basic_machine=x86_64-pc
-				os=mingw64
+				basic_os=mingw64
 				;;
 			mingw32)
 				basic_machine=i686-pc
-				os=mingw32
+				basic_os=mingw32
 				;;
 			mingw32ce)
 				basic_machine=arm-unknown
-				os=mingw32ce
+				basic_os=mingw32ce
 				;;
 			monitor)
 				basic_machine=m68k-rom68k
-				os=coff
+				basic_os=coff
 				;;
 			morphos)
 				basic_machine=powerpc-unknown
-				os=morphos
+				basic_os=morphos
 				;;
 			moxiebox)
 				basic_machine=moxie-unknown
-				os=moxiebox
+				basic_os=moxiebox
 				;;
 			msdos)
 				basic_machine=i386-pc
-				os=msdos
+				basic_os=msdos
 				;;
 			msys)
 				basic_machine=i686-pc
-				os=msys
+				basic_os=msys
 				;;
 			mvs)
 				basic_machine=i370-ibm
-				os=mvs
+				basic_os=mvs
 				;;
 			nacl)
 				basic_machine=le32-unknown
-				os=nacl
+				basic_os=nacl
 				;;
 			ncr3000)
 				basic_machine=i486-ncr
-				os=sysv4
+				basic_os=sysv4
 				;;
 			netbsd386)
 				basic_machine=i386-pc
-				os=netbsd
+				basic_os=netbsd
 				;;
 			netwinder)
 				basic_machine=armv4l-rebel
-				os=linux
+				basic_os=linux
 				;;
 			news | news700 | news800 | news900)
 				basic_machine=m68k-sony
-				os=newsos
+				basic_os=newsos
 				;;
 			news1000)
 				basic_machine=m68030-sony
-				os=newsos
+				basic_os=newsos
 				;;
 			necv70)
 				basic_machine=v70-nec
-				os=sysv
+				basic_os=sysv
 				;;
 			nh3000)
 				basic_machine=m68k-harris
-				os=cxux
+				basic_os=cxux
 				;;
 			nh[45]000)
 				basic_machine=m88k-harris
-				os=cxux
+				basic_os=cxux
 				;;
 			nindy960)
 				basic_machine=i960-intel
-				os=nindy
+				basic_os=nindy
 				;;
 			mon960)
 				basic_machine=i960-intel
-				os=mon960
+				basic_os=mon960
 				;;
 			nonstopux)
 				basic_machine=mips-compaq
-				os=nonstopux
+				basic_os=nonstopux
 				;;
 			os400)
 				basic_machine=powerpc-ibm
-				os=os400
+				basic_os=os400
 				;;
 			OSE68000 | ose68000)
 				basic_machine=m68000-ericsson
-				os=ose
+				basic_os=ose
 				;;
 			os68k)
 				basic_machine=m68k-none
-				os=os68k
+				basic_os=os68k
 				;;
 			paragon)
 				basic_machine=i860-intel
-				os=osf
+				basic_os=osf
 				;;
 			parisc)
 				basic_machine=hppa-unknown
-				os=linux
+				basic_os=linux
+				;;
+			psp)
+				basic_machine=mipsallegrexel-sony
+				basic_os=psp
 				;;
 			pw32)
 				basic_machine=i586-unknown
-				os=pw32
+				basic_os=pw32
 				;;
 			rdos | rdos64)
 				basic_machine=x86_64-pc
-				os=rdos
+				basic_os=rdos
 				;;
 			rdos32)
 				basic_machine=i386-pc
-				os=rdos
+				basic_os=rdos
 				;;
 			rom68k)
 				basic_machine=m68k-rom68k
-				os=coff
+				basic_os=coff
 				;;
 			sa29200)
 				basic_machine=a29k-amd
-				os=udi
+				basic_os=udi
 				;;
 			sei)
 				basic_machine=mips-sei
-				os=seiux
+				basic_os=seiux
 				;;
 			sequent)
 				basic_machine=i386-sequent
-				os=
+				basic_os=
 				;;
 			sps7)
 				basic_machine=m68k-bull
-				os=sysv2
+				basic_os=sysv2
 				;;
 			st2000)
 				basic_machine=m68k-tandem
-				os=
+				basic_os=
 				;;
 			stratus)
 				basic_machine=i860-stratus
-				os=sysv4
+				basic_os=sysv4
 				;;
 			sun2)
 				basic_machine=m68000-sun
-				os=
+				basic_os=
 				;;
 			sun2os3)
 				basic_machine=m68000-sun
-				os=sunos3
+				basic_os=sunos3
 				;;
 			sun2os4)
 				basic_machine=m68000-sun
-				os=sunos4
+				basic_os=sunos4
 				;;
 			sun3)
 				basic_machine=m68k-sun
-				os=
+				basic_os=
 				;;
 			sun3os3)
 				basic_machine=m68k-sun
-				os=sunos3
+				basic_os=sunos3
 				;;
 			sun3os4)
 				basic_machine=m68k-sun
-				os=sunos4
+				basic_os=sunos4
 				;;
 			sun4)
 				basic_machine=sparc-sun
-				os=
+				basic_os=
 				;;
 			sun4os3)
 				basic_machine=sparc-sun
-				os=sunos3
+				basic_os=sunos3
 				;;
 			sun4os4)
 				basic_machine=sparc-sun
-				os=sunos4
+				basic_os=sunos4
 				;;
 			sun4sol2)
 				basic_machine=sparc-sun
-				os=solaris2
+				basic_os=solaris2
 				;;
 			sun386 | sun386i | roadrunner)
 				basic_machine=i386-sun
-				os=
+				basic_os=
 				;;
 			sv1)
 				basic_machine=sv1-cray
-				os=unicos
+				basic_os=unicos
 				;;
 			symmetry)
 				basic_machine=i386-sequent
-				os=dynix
+				basic_os=dynix
 				;;
 			t3e)
 				basic_machine=alphaev5-cray
-				os=unicos
+				basic_os=unicos
 				;;
 			t90)
 				basic_machine=t90-cray
-				os=unicos
+				basic_os=unicos
 				;;
 			toad1)
 				basic_machine=pdp10-xkl
-				os=tops20
+				basic_os=tops20
 				;;
 			tpf)
 				basic_machine=s390x-ibm
-				os=tpf
+				basic_os=tpf
 				;;
 			udi29k)
 				basic_machine=a29k-amd
-				os=udi
+				basic_os=udi
 				;;
 			ultra3)
 				basic_machine=a29k-nyu
-				os=sym1
+				basic_os=sym1
 				;;
 			v810 | necv810)
 				basic_machine=v810-nec
-				os=none
+				basic_os=none
 				;;
 			vaxv)
 				basic_machine=vax-dec
-				os=sysv
+				basic_os=sysv
 				;;
 			vms)
 				basic_machine=vax-dec
-				os=vms
+				basic_os=vms
+				;;
+			vsta)
+				basic_machine=i386-pc
+				basic_os=vsta
 				;;
 			vxworks960)
 				basic_machine=i960-wrs
-				os=vxworks
+				basic_os=vxworks
 				;;
 			vxworks68)
 				basic_machine=m68k-wrs
-				os=vxworks
+				basic_os=vxworks
 				;;
 			vxworks29k)
 				basic_machine=a29k-wrs
-				os=vxworks
+				basic_os=vxworks
 				;;
 			xbox)
 				basic_machine=i686-pc
-				os=mingw32
+				basic_os=mingw32
 				;;
 			ymp)
 				basic_machine=ymp-cray
-				os=unicos
+				basic_os=unicos
 				;;
 			*)
 				basic_machine=$1
-				os=
+				basic_os=
 				;;
 		esac
 		;;
@@ -686,27 +755,38 @@ case $basic_machine in
 	bluegene*)
 		cpu=powerpc
 		vendor=ibm
-		os=cnk
+		basic_os=cnk
 		;;
 	decsystem10* | dec10*)
 		cpu=pdp10
 		vendor=dec
-		os=tops10
+		basic_os=tops10
 		;;
 	decsystem20* | dec20*)
 		cpu=pdp10
 		vendor=dec
-		os=tops20
+		basic_os=tops20
 		;;
-	delta | 3300 | motorola-3300 | motorola-delta \
-	      | 3300-motorola | delta-motorola)
+	delta | 3300 | delta-motorola | 3300-motorola | motorola-delta | motorola-3300)
 		cpu=m68k
 		vendor=motorola
 		;;
-	dpx2*)
+	# This used to be dpx2*, but that gets the RS6000-based
+	# DPX/20 and the x86-based DPX/2-100 wrong.  See
+	# https://oldskool.silicium.org/stations/bull_dpx20.htm
+	# https://www.feb-patrimoine.com/english/bull_dpx2.htm
+	# https://www.feb-patrimoine.com/english/unix_and_bull.htm
+	dpx2 | dpx2[23]00 | dpx2[23]xx)
 		cpu=m68k
 		vendor=bull
-		os=sysv3
+		;;
+	dpx2100 | dpx21xx)
+		cpu=i386
+		vendor=bull
+		;;
+	dpx20)
+		cpu=rs6000
+		vendor=bull
 		;;
 	encore | umax | mmax)
 		cpu=ns32k
@@ -715,7 +795,7 @@ case $basic_machine in
 	elxsi)
 		cpu=elxsi
 		vendor=elxsi
-		os=${os:-bsd}
+		basic_os=${basic_os:-bsd}
 		;;
 	fx2800)
 		cpu=i860
@@ -728,7 +808,7 @@ case $basic_machine in
 	h3050r* | hiux*)
 		cpu=hppa1.1
 		vendor=hitachi
-		os=hiuxwe2
+		basic_os=hiuxwe2
 		;;
 	hp3k9[0-9][0-9] | hp9[0-9][0-9])
 		cpu=hppa1.0
@@ -771,36 +851,36 @@ case $basic_machine in
 	i*86v32)
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
-		os=sysv32
+		basic_os=sysv32
 		;;
 	i*86v4*)
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
-		os=sysv4
+		basic_os=sysv4
 		;;
 	i*86v)
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
-		os=sysv
+		basic_os=sysv
 		;;
 	i*86sol2)
 		cpu=`echo "$1" | sed -e 's/86.*/86/'`
 		vendor=pc
-		os=solaris2
+		basic_os=solaris2
 		;;
 	j90 | j90-cray)
 		cpu=j90
 		vendor=cray
-		os=${os:-unicos}
+		basic_os=${basic_os:-unicos}
 		;;
 	iris | iris4d)
 		cpu=mips
 		vendor=sgi
-		case $os in
+		case $basic_os in
 		    irix*)
 			;;
 		    *)
-			os=irix4
+			basic_os=irix4
 			;;
 		esac
 		;;
@@ -811,28 +891,16 @@ case $basic_machine in
 	*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
 		cpu=m68k
 		vendor=atari
-		os=mint
+		basic_os=mint
 		;;
 	news-3600 | risc-news)
 		cpu=mips
 		vendor=sony
-		os=newsos
+		basic_os=newsos
 		;;
 	next | m*-next)
 		cpu=m68k
 		vendor=next
-		case $os in
-		    openstep*)
-		        ;;
-		    nextstep*)
-			;;
-		    ns2*)
-		      os=nextstep2
-			;;
-		    *)
-		      os=nextstep3
-			;;
-		esac
 		;;
 	np1)
 		cpu=np1
@@ -841,12 +909,12 @@ case $basic_machine in
 	op50n-* | op60c-*)
 		cpu=hppa1.1
 		vendor=oki
-		os=proelf
+		basic_os=proelf
 		;;
 	pa-hitachi)
 		cpu=hppa1.1
 		vendor=hitachi
-		os=hiuxwe2
+		basic_os=hiuxwe2
 		;;
 	pbd)
 		cpu=sparc
@@ -883,12 +951,12 @@ case $basic_machine in
 	sde)
 		cpu=mipsisa32
 		vendor=sde
-		os=${os:-elf}
+		basic_os=${basic_os:-elf}
 		;;
 	simso-wrs)
 		cpu=sparclite
 		vendor=wrs
-		os=vxworks
+		basic_os=vxworks
 		;;
 	tower | tower-32)
 		cpu=m68k
@@ -905,7 +973,7 @@ case $basic_machine in
 	w89k-*)
 		cpu=hppa1.1
 		vendor=winbond
-		os=proelf
+		basic_os=proelf
 		;;
 	none)
 		cpu=none
@@ -921,12 +989,13 @@ case $basic_machine in
 		;;
 
 	*-*)
-		# shellcheck disable=SC2162
+		saved_IFS=$IFS
 		IFS="-" read cpu vendor <<EOF
 $basic_machine
 EOF
+		IFS=$saved_IFS
 		;;
-	# We use `pc' rather than `unknown'
+	# We use 'pc' rather than 'unknown'
 	# because (1) that's what they normally are, and
 	# (2) the word "unknown" tends to confuse beginning users.
 	i*86 | x86_64)
@@ -954,15 +1023,19 @@ unset -v basic_machine
 
 # Decode basic machines in the full and proper CPU-Company form.
 case $cpu-$vendor in
-	# Here we handle the default manufacturer of certain CPU types in canonical form. It is in
-	# some cases the only manufacturer, in others, it is the most popular.
+	# Here we handle the default manufacturer of certain CPU types in canonical form.
+	# It is in some cases the only manufacturer, in others, it is the most popular.
+	c[12]-convex | c[12]-unknown | c3[248]-convex | c3[248]-unknown)
+		vendor=convex
+		basic_os=${basic_os:-bsd}
+		;;
 	craynv-unknown)
 		vendor=cray
-		os=${os:-unicosmp}
+		basic_os=${basic_os:-unicosmp}
 		;;
 	c90-unknown | c90-cray)
 		vendor=cray
-		os=${os:-unicos}
+		basic_os=${basic_os:-unicos}
 		;;
 	fx80-unknown)
 		vendor=alliant
@@ -1003,10 +1076,33 @@ case $cpu-$vendor in
 		;;
 
 	# Here we normalize CPU types with a missing or matching vendor
-	dpx20-unknown | dpx20-bull)
-		cpu=rs6000
-		vendor=bull
-		os=${os:-bosx}
+	armh-unknown | armh-alt)
+		cpu=armv7l
+		vendor=alt
+		basic_os=${basic_os:-linux-gnueabihf}
+		;;
+
+	# Normalized CPU+vendor pairs that imply an OS, if not otherwise specified
+	m68k-isi)
+		basic_os=${basic_os:-sysv}
+		;;
+	m68k-sony)
+		basic_os=${basic_os:-newsos}
+		;;
+	m68k-tektronix)
+		basic_os=${basic_os:-bsd}
+		;;
+	m88k-harris)
+		basic_os=${basic_os:-sysv3}
+		;;
+	i386-bull | m68k-bull)
+		basic_os=${basic_os:-sysv3}
+		;;
+	rs6000-bull)
+		basic_os=${basic_os:-bosx}
+		;;
+	mips-sni)
+		basic_os=${basic_os:-sysv4}
 		;;
 
 	# Here we normalize CPU types irrespective of the vendor
@@ -1015,7 +1111,7 @@ case $cpu-$vendor in
 		;;
 	blackfin-*)
 		cpu=bfin
-		os=linux
+		basic_os=${basic_os:-linux}
 		;;
 	c54x-*)
 		cpu=tic54x
@@ -1028,7 +1124,7 @@ case $cpu-$vendor in
 		;;
 	e500v[12]-*)
 		cpu=powerpc
-		os=$os"spe"
+		basic_os=${basic_os}"spe"
 		;;
 	mips3*-*)
 		cpu=mips64
@@ -1038,7 +1134,7 @@ case $cpu-$vendor in
 		;;
 	m68knommu-*)
 		cpu=m68k
-		os=linux
+		basic_os=${basic_os:-linux}
 		;;
 	m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
 		cpu=s12z
@@ -1048,12 +1144,12 @@ case $cpu-$vendor in
 		;;
 	parisc-*)
 		cpu=hppa
-		os=linux
+		basic_os=${basic_os:-linux}
 		;;
 	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
 		cpu=i586
 		;;
-	pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+	pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
 		cpu=i686
 		;;
 	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1062,9 +1158,6 @@ case $cpu-$vendor in
 	pentium4-*)
 		cpu=i786
 		;;
-	pc98-*)
-		cpu=i386
-		;;
 	ppc-* | ppcbe-*)
 		cpu=powerpc
 		;;
@@ -1098,17 +1191,17 @@ case $cpu-$vendor in
 	tx39el-*)
 		cpu=mipstx39el
 		;;
-	x64-*)
-		cpu=x86_64
-		;;
 	xscale-* | xscalee[bl]-*)
 		cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
 		;;
+	arm64-* | aarch64le-*)
+		cpu=aarch64
+		;;
 
 	# Recognize the canonical CPU Types that limit and/or modify the
 	# company names they are paired with.
 	cr16-*)
-		os=${os:-elf}
+		basic_os=${basic_os:-elf}
 		;;
 	crisv32-* | etraxfs*-*)
 		cpu=crisv32
@@ -1119,7 +1212,7 @@ case $cpu-$vendor in
 		vendor=axis
 		;;
 	crx-*)
-		os=${os:-elf}
+		basic_os=${basic_os:-elf}
 		;;
 	neo-tandem)
 		cpu=neo
@@ -1141,123 +1234,243 @@ case $cpu-$vendor in
 		cpu=nsx
 		vendor=tandem
 		;;
-	s390-*)
-		cpu=s390
-		vendor=ibm
-		;;
-	s390x-*)
-		cpu=s390x
-		vendor=ibm
+	mipsallegrexel-sony)
+		cpu=mipsallegrexel
+		vendor=sony
 		;;
 	tile*-*)
-		os=${os:-linux-gnu}
+		basic_os=${basic_os:-linux-gnu}
 		;;
 
 	*)
 		# Recognize the canonical CPU types that are allowed with any
 		# company name.
 		case $cpu in
-			1750a | 580 \
+			  1750a \
+			| 580 \
+			| [cjt]90 \
 			| a29k \
-			| aarch64 | aarch64_be \
+			| aarch64 \
+			| aarch64_be \
+			| aarch64c \
 			| abacus \
-			| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
-			| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
-			| alphapca5[67] | alpha64pca5[67] \
+			| alpha \
+			| alpha64 \
+			| alpha64ev56 \
+			| alpha64ev6[78] \
+			| alpha64ev[4-8] \
+			| alpha64pca5[67] \
+			| alphaev56 \
+			| alphaev6[78] \
+			| alphaev[4-8] \
+			| alphapca5[67] \
 			| am33_2.0 \
 			| amdgcn \
-			| arc | arceb \
-			| arm  | arm[lb]e | arme[lb] | armv* \
-			| avr | avr32 \
+			| arc \
+			| arc32 \
+			| arc64 \
+			| arceb \
+			| arm \
+			| arm64e \
+			| arm64ec \
+			| arm[lb]e \
+			| arme[lb] \
+			| armv* \
 			| asmjs \
+			| avr \
+			| avr32 \
 			| ba \
-			| be32 | be64 \
-			| bfin | bpf | bs2000 \
-			| c[123]* | c30 | [cjt]90 | c4x \
-			| c8051 | clipper | craynv | csky | cydra \
-			| d10v | d30v | dlx | dsp16xx \
-			| e2k | elxsi | epiphany \
-			| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
-			| h8300 | h8500 \
-			| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+			| be32 \
+			| be64 \
+			| bfin \
+			| bpf \
+			| bs2000 \
+			| c30 \
+			| c4x \
+			| c8051 \
+			| c[123]* \
+			| clipper \
+			| craynv \
+			| csky \
+			| cydra \
+			| d10v \
+			| d30v \
+			| dlx \
+			| dsp16xx \
+			| e2k \
+			| elxsi \
+			| epiphany \
+			| f30[01] \
+			| f700 \
+			| fido \
+			| fr30 \
+			| frv \
+			| ft32 \
+			| fx80 \
+			| h8300 \
+			| h8500 \
 			| hexagon \
-			| i370 | i*86 | i860 | i960 | ia16 | ia64 \
-			| ip2k | iq2000 \
+			| hppa \
+			| hppa1.[01] \
+			| hppa2.0 \
+			| hppa2.0[nw] \
+			| hppa64 \
+			| i*86 \
+			| i370 \
+			| i860 \
+			| i960 \
+			| ia16 \
+			| ia64 \
+			| ip2k \
+			| iq2000 \
+			| javascript \
 			| k1om \
-			| le32 | le64 \
+			| kvx \
+			| le32 \
+			| le64 \
 			| lm32 \
-			| m32c | m32r | m32rle \
-			| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
-			| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
-			| m88110 | m88k | maxq | mb | mcore | mep | metag \
-			| microblaze | microblazeel \
-			| mips | mipsbe | mipseb | mipsel | mipsle \
-			| mips16 \
-			| mips64 | mips64eb | mips64el \
-			| mips64octeon | mips64octeonel \
-			| mips64orion | mips64orionel \
-			| mips64r5900 | mips64r5900el \
-			| mips64vr | mips64vrel \
-			| mips64vr4100 | mips64vr4100el \
-			| mips64vr4300 | mips64vr4300el \
-			| mips64vr5000 | mips64vr5000el \
-			| mips64vr5900 | mips64vr5900el \
-			| mipsisa32 | mipsisa32el \
-			| mipsisa32r2 | mipsisa32r2el \
-			| mipsisa32r6 | mipsisa32r6el \
-			| mipsisa64 | mipsisa64el \
-			| mipsisa64r2 | mipsisa64r2el \
-			| mipsisa64r6 | mipsisa64r6el \
-			| mipsisa64sb1 | mipsisa64sb1el \
-			| mipsisa64sr71k | mipsisa64sr71kel \
-			| mipsr5900 | mipsr5900el \
-			| mipstx39 | mipstx39el \
+			| loongarch32 \
+			| loongarch64 \
+			| m32c \
+			| m32r \
+			| m32rle \
+			| m5200 \
+			| m68000 \
+			| m680[012346]0 \
+			| m6811 \
+			| m6812 \
+			| m68360 \
+			| m683?2 \
+			| m68hc11 \
+			| m68hc12 \
+			| m68hcs12x \
+			| m68k \
+			| m88110 \
+			| m88k \
+			| maxq \
+			| mb \
+			| mcore \
+			| mep \
+			| metag \
+			| microblaze \
+			| microblazeel \
+			| mips* \
 			| mmix \
-			| mn10200 | mn10300 \
+			| mn10200 \
+			| mn10300 \
 			| moxie \
-			| mt \
 			| msp430 \
-			| nds32 | nds32le | nds32be \
+			| mt \
+			| nanomips* \
+			| nds32 \
+			| nds32be \
+			| nds32le \
 			| nfp \
-			| nios | nios2 | nios2eb | nios2el \
-			| none | np1 | ns16k | ns32k | nvptx \
+			| nios \
+			| nios2 \
+			| nios2eb \
+			| nios2el \
+			| none \
+			| np1 \
+			| ns16k \
+			| ns32k \
+			| nvptx \
 			| open8 \
 			| or1k* \
 			| or32 \
 			| orion \
+			| pdp10 \
+			| pdp11 \
 			| picochip \
-			| pdp10 | pdp11 | pj | pjl | pn | power \
-			| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
+			| pj \
+			| pjl \
+			| pn \
+			| power \
+			| powerpc \
+			| powerpc64 \
+			| powerpc64le \
+			| powerpcle \
+			| powerpcspe \
 			| pru \
 			| pyramid \
-			| riscv | riscv32 | riscv64 \
-			| rl78 | romp | rs6000 | rx \
+			| riscv \
+			| riscv32 \
+			| riscv32be \
+			| riscv64 \
+			| riscv64be \
+			| rl78 \
+			| romp \
+			| rs6000 \
+			| rx \
+			| s390 \
+			| s390x \
 			| score \
-			| sh | shl \
-			| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
-			| sh[1234]e[lb] |  sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
-			| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
+			| sh \
+			| sh64 \
+			| sh64le \
+			| sh[12345][lb]e \
+			| sh[1234] \
+			| sh[1234]e[lb] \
+			| sh[23]e \
+			| sh[23]ele \
+			| sh[24]a \
+			| sh[24]ae[lb] \
+			| sh[lb]e \
+			| she[lb] \
+			| shl \
+			| sparc \
+			| sparc64 \
+			| sparc64b \
+			| sparc64v \
+			| sparc86x \
+			| sparclet \
 			| sparclite \
-			| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
+			| sparcv8 \
+			| sparcv9 \
+			| sparcv9b \
+			| sparcv9v \
 			| spu \
+			| sv1 \
+			| sx* \
 			| tahoe \
-			| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
+			| thumbv7* \
+			| tic30 \
+			| tic4x \
+			| tic54x \
+			| tic55x \
+			| tic6x \
+			| tic80 \
 			| tron \
 			| ubicom32 \
-			| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+			| v70 \
+			| v810 \
+			| v850 \
+			| v850e \
+			| v850e1 \
+			| v850e2 \
+			| v850e2v3 \
+			| v850es \
 			| vax \
+			| vc4 \
 			| visium \
 			| w65 \
-			| wasm32 | wasm64 \
+			| wasm32 \
+			| wasm64 \
 			| we32k \
-			| x86 | x86_64 | xc16x | xgate | xps100 \
-			| xstormy16 | xtensa* \
+			| x86 \
+			| x86_64 \
+			| xc16x \
+			| xgate \
+			| xps100 \
+			| xstormy16 \
+			| xtensa* \
 			| ymp \
-			| z8k | z80)
+			| z80 \
+			| z8k)
 				;;
 
 			*)
-				echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
+				echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2
 				exit 1
 				;;
 		esac
@@ -1278,8 +1491,53 @@ esac
 
 # Decode manufacturer-specific aliases for certain operating systems.
 
-if [ x$os != x ]
+if test x"$basic_os" != x
 then
+
+# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just
+# set os.
+obj=
+case $basic_os in
+	gnu/linux*)
+		kernel=linux
+		os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'`
+		;;
+	os2-emx)
+		kernel=os2
+		os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
+		;;
+	nto-qnx*)
+		kernel=nto
+		os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'`
+		;;
+	*-*)
+		saved_IFS=$IFS
+		IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+		IFS=$saved_IFS
+		;;
+	# Default OS when just kernel was specified
+	nto*)
+		kernel=nto
+		os=`echo "$basic_os" | sed -e 's|nto|qnx|'`
+		;;
+	linux*)
+		kernel=linux
+		os=`echo "$basic_os" | sed -e 's|linux|gnu|'`
+		;;
+	managarm*)
+		kernel=managarm
+		os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
+		;;
+	*)
+		kernel=
+		os=$basic_os
+		;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
 case $os in
 	# First match some system type aliases that might get confused
 	# with valid system types.
@@ -1291,7 +1549,7 @@ case $os in
 		os=cnk
 		;;
 	solaris1 | solaris1.*)
-		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		os=`echo "$os" | sed -e 's|solaris1|sunos4|'`
 		;;
 	solaris)
 		os=solaris2
@@ -1299,8 +1557,22 @@ case $os in
 	unixware*)
 		os=sysv4.2uw
 		;;
-	gnu/linux*)
-		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+	# The marketing names for NeXT's operating systems were
+	# NeXTSTEP, NeXTSTEP 2, OpenSTEP 3, OpenSTEP 4.  'openstep' is
+	# mapped to 'openstep3', but 'openstep1' and 'openstep2' are
+	# mapped to 'nextstep' and 'nextstep2', consistent with the
+	# treatment of SunOS/Solaris.
+	ns | ns1 | nextstep | nextstep1 | openstep1)
+		os=nextstep
+		;;
+	ns2 | nextstep2 | openstep2)
+		os=nextstep2
+		;;
+	ns3 | nextstep3 | openstep | openstep3)
+		os=openstep3
+		;;
+	ns4 | nextstep4 | openstep4)
+		os=openstep4
 		;;
 	# es1800 is here to avoid being matched by es* (a different OS)
 	es1800*)
@@ -1323,12 +1595,9 @@ case $os in
 		os=sco3.2v4
 		;;
 	sco3.2.[4-9]*)
-		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
-		;;
-	sco3.2v[4-9]* | sco5v6*)
-		# Don't forget version if it is 3.2v4 or newer.
+		os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'`
 		;;
-	scout)
+	sco*v* | scout)
 		# Don't match below
 		;;
 	sco*)
@@ -1337,77 +1606,25 @@ case $os in
 	psos*)
 		os=psos
 		;;
-	# Now accept the basic system types.
-	# The portable systems comes first.
-	# Each alternative MUST end in a * to match a version number.
-	# sysv* is not here because it comes later, after sysvr4.
-	gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
-	     | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
-	     | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
-	     | sym* | kopensolaris* | plan9* \
-	     | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
-	     | aos* | aros* | cloudabi* | sortix* \
-	     | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
-	     | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
-	     | knetbsd* | mirbsd* | netbsd* \
-	     | bitrig* | openbsd* | solidbsd* | libertybsd* \
-	     | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
-	     | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
-	     | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
-	     | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
-	     | chorusrdb* | cegcc* | glidix* \
-	     | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
-	     | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
-	     | linux-newlib* | linux-musl* | linux-uclibc* \
-	     | uxpv* | beos* | mpeix* | udk* | moxiebox* \
-	     | interix* | uwin* | mks* | rhapsody* | darwin* \
-	     | openstep* | oskit* | conix* | pw32* | nonstopux* \
-	     | storm-chaos* | tops10* | tenex* | tops20* | its* \
-	     | os2* | vos* | palmos* | uclinux* | nucleus* \
-	     | morphos* | superux* | rtmk* | windiss* \
-	     | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
-	     | skyos* | haiku* | rdos* | toppers* | drops* | es* \
-	     | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
-	     | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi*)
-	# Remember, each alternative MUST END IN *, to match a version number.
-		;;
 	qnx*)
-		case $cpu in
-		    x86 | i*86)
-			;;
-		    *)
-			os=nto-$os
-			;;
-		esac
+		os=qnx
 		;;
 	hiux*)
 		os=hiuxwe2
 		;;
-	nto-qnx*)
-		;;
-	nto*)
-		os=`echo $os | sed -e 's|nto|nto-qnx|'`
-		;;
-	sim | xray | os68k* | v88r* \
-	    | windows* | osx | abug | netware* | os9* \
-	    | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
-		;;
-	linux-dietlibc)
-		os=linux-dietlibc
-		;;
-	linux*)
-		os=`echo $os | sed -e 's|linux|linux-gnu|'`
-		;;
 	lynx*178)
 		os=lynxos178
 		;;
 	lynx*5)
 		os=lynxos5
 		;;
+	lynxos*)
+		# don't get caught up in next wildcard
+		;;
 	lynx*)
 		os=lynxos
 		;;
-	mac*)
+	mac[0-9]*)
 		os=`echo "$os" | sed -e 's|mac|macos|'`
 		;;
 	opened*)
@@ -1427,6 +1644,7 @@ case $os in
 		;;
 	utek*)
 		os=bsd
+		vendor=`echo "$vendor" | sed -e 's|^unknown$|tektronix|'`
 		;;
 	dynix*)
 		os=bsd
@@ -1443,24 +1661,25 @@ case $os in
 	386bsd)
 		os=bsd
 		;;
-	ctix* | uts*)
+	ctix*)
 		os=sysv
+		vendor=`echo "$vendor" | sed -e 's|^unknown$|convergent|'`
 		;;
-	nova*)
-		os=rtmk-nova
-		;;
-	ns2)
-		os=nextstep2
+	uts*)
+		os=sysv
 		;;
-	nsk*)
-		os=nsk
+	nova*)
+		kernel=rtmk
+		os=nova
 		;;
 	# Preserve the version number of sinix5.
 	sinix5.*)
-		os=`echo $os | sed -e 's|sinix|sysv|'`
+		os=`echo "$os" | sed -e 's|sinix|sysv|'`
+		vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
 		;;
 	sinix*)
 		os=sysv4
+		vendor=`echo "$vendor" | sed -e 's|^unknown$|sni|'`
 		;;
 	tpf*)
 		os=tpf
@@ -1480,18 +1699,12 @@ case $os in
 	sysvr4)
 		os=sysv4
 		;;
-	# This must come after sysvr4.
-	sysv*)
-		;;
 	ose*)
 		os=ose
 		;;
 	*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
 		os=mint
 		;;
-	zvmoe)
-		os=zvmoe
-		;;
 	dicos*)
 		os=dicos
 		;;
@@ -1504,23 +1717,21 @@ case $os in
 			os=eabi
 			;;
 		    *)
-			os=elf
+			os=
+			obj=elf
 			;;
 		esac
 		;;
-	nacl*)
-		;;
-	ios)
-		;;
-	none)
-		;;
-	*-eabi)
+	aout* | coff* | elf* | pe*)
+		# These are machine code file formats, not OSes
+		obj=$os
+		os=
 		;;
 	*)
-		echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
-		exit 1
+		# No normalization, but not necessarily accepted, that comes below.
 		;;
 esac
+
 else
 
 # Here we handle the default operating systems that come with various machines.
@@ -1533,42 +1744,54 @@ else
 # will signal an error saying that MANUFACTURER isn't an operating
 # system, and we'll never get to this point.
 
+kernel=
+obj=
 case $cpu-$vendor in
 	score-*)
-		os=elf
+		os=
+		obj=elf
 		;;
 	spu-*)
-		os=elf
+		os=
+		obj=elf
 		;;
 	*-acorn)
 		os=riscix1.2
 		;;
 	arm*-rebel)
-		os=linux
+		kernel=linux
+		os=gnu
 		;;
 	arm*-semi)
-		os=aout
+		os=
+		obj=aout
 		;;
 	c4x-* | tic4x-*)
-		os=coff
+		os=
+		obj=coff
 		;;
 	c8051-*)
-		os=elf
+		os=
+		obj=elf
 		;;
 	clipper-intergraph)
 		os=clix
 		;;
 	hexagon-*)
-		os=elf
+		os=
+		obj=elf
 		;;
 	tic54x-*)
-		os=coff
+		os=
+		obj=coff
 		;;
 	tic55x-*)
-		os=coff
+		os=
+		obj=coff
 		;;
 	tic6x-*)
-		os=coff
+		os=
+		obj=coff
 		;;
 	# This must come before the *-dec entry.
 	pdp10-*)
@@ -1590,28 +1813,43 @@ case $cpu-$vendor in
 		os=sunos3
 		;;
 	m68*-cisco)
-		os=aout
+		os=
+		obj=aout
 		;;
 	mep-*)
-		os=elf
+		os=
+		obj=elf
+		;;
+	# The -sgi and -siemens entries must be before the mips- entry
+	# or we get the wrong os.
+	*-sgi)
+		os=irix
+		;;
+	*-siemens)
+		os=sysv4
 		;;
 	mips*-cisco)
-		os=elf
+		os=
+		obj=elf
 		;;
-	mips*-*)
-		os=elf
+	mips*-*|nanomips*-*)
+		os=
+		obj=elf
 		;;
 	or32-*)
-		os=coff
+		os=
+		obj=coff
 		;;
-	*-tti)	# must be before sparc entry or we get the wrong os.
+	# This must be before the sparc-* entry or we get the wrong os.
+	*-tti)
 		os=sysv3
 		;;
 	sparc-* | *-sun)
 		os=sunos4.1.1
 		;;
 	pru-*)
-		os=elf
+		os=
+		obj=elf
 		;;
 	*-be)
 		os=beos
@@ -1635,7 +1873,7 @@ case $cpu-$vendor in
 		os=hpux
 		;;
 	*-hitachi)
-		os=hiux
+		os=hiuxwe2
 		;;
 	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
 		os=sysv
@@ -1679,12 +1917,6 @@ case $cpu-$vendor in
 	*-encore)
 		os=bsd
 		;;
-	*-sgi)
-		os=irix
-		;;
-	*-siemens)
-		os=sysv4
-		;;
 	*-masscomp)
 		os=rtu
 		;;
@@ -1692,10 +1924,12 @@ case $cpu-$vendor in
 		os=uxpv
 		;;
 	*-rom68k)
-		os=coff
+		os=
+		obj=coff
 		;;
 	*-*bug)
-		os=coff
+		os=
+		obj=coff
 		;;
 	*-apple)
 		os=macos
@@ -1710,84 +1944,406 @@ case $cpu-$vendor in
 		os=none
 		;;
 esac
+
 fi
 
+# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ).
+
+case $os in
+	# Sometimes we do "kernel-libc", so those need to count as OSes.
+	llvm* | musl* | newlib* | relibc* | uclibc*)
+		;;
+	# Likewise for "kernel-abi"
+	eabi* | gnueabi*)
+		;;
+	# VxWorks passes extra cpu info in the 4th filed.
+	simlinux | simwindows | spe)
+		;;
+	# See `case $cpu-$os` validation below
+	ghcjs)
+		;;
+	# Now accept the basic system types.
+	# Each alternative MUST end in a * to match a version number.
+	  abug \
+	| aix* \
+	| amdhsa* \
+	| amigados* \
+	| amigaos* \
+	| android* \
+	| aof* \
+	| aos* \
+	| aros* \
+	| atheos* \
+	| auroraux* \
+	| aux* \
+	| beos* \
+	| bitrig* \
+	| bme* \
+	| bosx* \
+	| bsd* \
+	| cegcc* \
+	| chorusos* \
+	| chorusrdb* \
+	| clix* \
+	| cloudabi* \
+	| cnk* \
+	| conix* \
+	| cos* \
+	| cxux* \
+	| cygwin* \
+	| darwin* \
+	| dgux* \
+	| dicos* \
+	| dnix* \
+	| domain* \
+	| dragonfly* \
+	| drops* \
+	| ebmon* \
+	| ecoff* \
+	| ekkobsd* \
+	| emscripten* \
+	| emx* \
+	| es* \
+	| fiwix* \
+	| freebsd* \
+	| fuchsia* \
+	| genix* \
+	| genode* \
+	| glidix* \
+	| gnu* \
+	| go32* \
+	| haiku* \
+	| hcos* \
+	| hiux* \
+	| hms* \
+	| hpux* \
+	| ieee* \
+	| interix* \
+	| ios* \
+	| iris* \
+	| irix* \
+	| ironclad* \
+	| isc* \
+	| its* \
+	| l4re* \
+	| libertybsd* \
+	| lites* \
+	| lnews* \
+	| luna* \
+	| lynxos* \
+	| mach* \
+	| macos* \
+	| magic* \
+	| mbr* \
+	| midipix* \
+	| midnightbsd* \
+	| mingw32* \
+	| mingw64* \
+	| minix* \
+	| mint* \
+	| mirbsd* \
+	| mks* \
+	| mlibc* \
+	| mmixware* \
+	| mon960* \
+	| morphos* \
+	| moss* \
+	| moxiebox* \
+	| mpeix* \
+	| mpw* \
+	| msdos* \
+	| msys* \
+	| mvs* \
+	| nacl* \
+	| netbsd* \
+	| netware* \
+	| newsos* \
+	| nextstep* \
+	| nindy* \
+	| nonstopux* \
+	| nova* \
+	| nsk* \
+	| nucleus* \
+	| nx6 \
+	| nx7 \
+	| oabi* \
+	| ohos* \
+	| onefs* \
+	| openbsd* \
+	| openedition* \
+	| openstep* \
+	| os108* \
+	| os2* \
+	| os400* \
+	| os68k* \
+	| os9* \
+	| ose* \
+	| osf* \
+	| oskit* \
+	| osx* \
+	| palmos* \
+	| phoenix* \
+	| plan9* \
+	| powermax* \
+	| powerunix* \
+	| proelf* \
+	| psos* \
+	| psp* \
+	| ptx* \
+	| pw32* \
+	| qnx* \
+	| rdos* \
+	| redox* \
+	| rhapsody* \
+	| riscix* \
+	| riscos* \
+	| rtems* \
+	| rtmk* \
+	| rtu* \
+	| scout* \
+	| secbsd* \
+	| sei* \
+	| serenity* \
+	| sim* \
+	| skyos* \
+	| solaris* \
+	| solidbsd* \
+	| sortix* \
+	| storm-chaos* \
+	| sunos \
+	| sunos[34]* \
+	| superux* \
+	| syllable* \
+	| sym* \
+	| sysv* \
+	| tenex* \
+	| tirtos* \
+	| toppers* \
+	| tops10* \
+	| tops20* \
+	| tpf* \
+	| tvos* \
+	| twizzler* \
+	| uclinux* \
+	| udi* \
+	| udk* \
+	| ultrix* \
+	| unicos* \
+	| uniplus* \
+	| unleashed* \
+	| unos* \
+	| uwin* \
+	| uxpv* \
+	| v88r* \
+	|*vms* \
+	| vos* \
+	| vsta* \
+	| vxsim* \
+	| vxworks* \
+	| wasi* \
+	| watchos* \
+	| wince* \
+	| windiss* \
+	| windows* \
+	| winnt* \
+	| xenix* \
+	| xray* \
+	| zephyr* \
+	| zvmoe* )
+		;;
+	# This one is extra strict with allowed versions
+	sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		;;
+	# This refers to builds using the UEFI calling convention
+	# (which depends on the architecture) and PE file format.
+	# Note that this is both a different calling convention and
+	# different file format than that of GNU-EFI
+	# (x86_64-w64-mingw32).
+	uefi)
+		;;
+	none)
+		;;
+	kernel* | msvc* )
+		# Restricted further below
+		;;
+	'')
+		if test x"$obj" = x
+		then
+			echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
+		fi
+		;;
+	*)
+		echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2
+		exit 1
+		;;
+esac
+
+case $obj in
+	aout* | coff* | elf* | pe*)
+		;;
+	'')
+		# empty is fine
+		;;
+	*)
+		echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
+		exit 1
+		;;
+esac
+
+# Here we handle the constraint that a (synthetic) cpu and os are
+# valid only in combination with each other and nowhere else.
+case $cpu-$os in
+	# The "javascript-unknown-ghcjs" triple is used by GHC; we
+	# accept it here in order to tolerate that, but reject any
+	# variations.
+	javascript-ghcjs)
+		;;
+	javascript-* | *-ghcjs)
+		echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
+		exit 1
+		;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os-$obj in
+	linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \
+		    | linux-mlibc*- | linux-musl*- | linux-newlib*- \
+		    | linux-relibc*- | linux-uclibc*- | linux-ohos*- )
+		;;
+	uclinux-uclibc*- | uclinux-gnu*- )
+		;;
+	managarm-mlibc*- | managarm-kernel*- )
+		;;
+	windows*-msvc*-)
+		;;
+	-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
+		    | -uclibc*- )
+		# These are just libc implementations, not actual OSes, and thus
+		# require a kernel.
+		echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2
+		exit 1
+		;;
+	-kernel*- )
+		echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
+		exit 1
+		;;
+	*-kernel*- )
+		echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
+		exit 1
+		;;
+	*-msvc*- )
+		echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
+		exit 1
+		;;
+	kfreebsd*-gnu*- | knetbsd*-gnu*- | netbsd*-gnu*- | kopensolaris*-gnu*-)
+		;;
+	vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
+		;;
+	nto-qnx*-)
+		;;
+	os2-emx-)
+		;;
+	rtmk-nova-)
+		;;
+	*-eabi*- | *-gnueabi*-)
+		;;
+	none--*)
+		# None (no kernel, i.e. freestanding / bare metal),
+		# can be paired with an machine code file format
+		;;
+	-*-)
+		# Blank kernel with real OS is always fine.
+		;;
+	--*)
+		# Blank kernel and OS with real machine code file format is always fine.
+		;;
+	*-*-*)
+		echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
+		exit 1
+		;;
+esac
+
 # Here we handle the case where we know the os, and the CPU type, but not the
 # manufacturer.  We pick the logical manufacturer.
 case $vendor in
 	unknown)
-		case $os in
-			riscix*)
+		case $cpu-$os in
+			*-riscix*)
 				vendor=acorn
 				;;
-			sunos*)
+			*-sunos* | *-solaris*)
 				vendor=sun
 				;;
-			cnk*|-aix*)
+			*-cnk* | *-aix*)
 				vendor=ibm
 				;;
-			beos*)
+			*-beos*)
 				vendor=be
 				;;
-			hpux*)
+			*-hpux*)
 				vendor=hp
 				;;
-			mpeix*)
+			*-mpeix*)
 				vendor=hp
 				;;
-			hiux*)
+			*-hiux*)
 				vendor=hitachi
 				;;
-			unos*)
+			*-unos*)
 				vendor=crds
 				;;
-			dgux*)
+			*-dgux*)
 				vendor=dg
 				;;
-			luna*)
+			*-luna*)
 				vendor=omron
 				;;
-			genix*)
+			*-genix*)
 				vendor=ns
 				;;
-			clix*)
+			*-clix*)
 				vendor=intergraph
 				;;
-			mvs* | opened*)
+			*-mvs* | *-opened*)
+				vendor=ibm
+				;;
+			*-os400*)
 				vendor=ibm
 				;;
-			os400*)
+			s390-* | s390x-*)
 				vendor=ibm
 				;;
-			ptx*)
+			*-ptx*)
 				vendor=sequent
 				;;
-			tpf*)
+			*-tpf*)
 				vendor=ibm
 				;;
-			vxsim* | vxworks* | windiss*)
+			*-vxsim* | *-vxworks* | *-windiss*)
 				vendor=wrs
 				;;
-			aux*)
+			*-aux*)
 				vendor=apple
 				;;
-			hms*)
+			*-hms*)
 				vendor=hitachi
 				;;
-			mpw* | macos*)
+			*-mpw* | *-macos*)
 				vendor=apple
 				;;
-			*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+			*-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
 				vendor=atari
 				;;
-			vos*)
+			*-vos*)
 				vendor=stratus
 				;;
 		esac
 		;;
 esac
 
-echo "$cpu-$vendor-$os"
+echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}"
 exit
 
 # Local variables:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/configure ./configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/configure	2020-03-03 02:08:51.000000000 +0000
+++ ./configure	2026-03-05 02:07:20.000000000 +0000
@@ -603,20 +603,29 @@ WINDRES_FOR_TARGET
 STRIP_FOR_TARGET
 READELF_FOR_TARGET
 RANLIB_FOR_TARGET
+OTOOL_FOR_TARGET
 OBJDUMP_FOR_TARGET
 OBJCOPY_FOR_TARGET
 NM_FOR_TARGET
 LIPO_FOR_TARGET
 LD_FOR_TARGET
+DSYMUTIL_FOR_TARGET
 DLLTOOL_FOR_TARGET
 AS_FOR_TARGET
 AR_FOR_TARGET
+GM2_FOR_TARGET
+GDC_FOR_TARGET
 GOC_FOR_TARGET
 GFORTRAN_FOR_TARGET
 GCC_FOR_TARGET
 CXX_FOR_TARGET
 CC_FOR_TARGET
+RANLIB_PLUGIN_OPTION
+AR_PLUGIN_OPTION
+PKG_CONFIG_PATH
+GDCFLAGS
 READELF
+OTOOL
 OBJDUMP
 OBJCOPY
 WINDMC
@@ -626,6 +635,7 @@ RANLIB
 NM
 LIPO
 LD
+DSYMUTIL
 DLLTOOL
 AS
 AR
@@ -643,11 +653,15 @@ RANLIB_FOR_BUILD
 NM_FOR_BUILD
 LD_FOR_BUILD
 LDFLAGS_FOR_BUILD
+GDC_FOR_BUILD
 GOC_FOR_BUILD
 GFORTRAN_FOR_BUILD
+DSYMUTIL_FOR_BUILD
 DLLTOOL_FOR_BUILD
 CXX_FOR_BUILD
 CXXFLAGS_FOR_BUILD
+CPPFLAGS_FOR_BUILD
+CPP_FOR_BUILD
 CFLAGS_FOR_BUILD
 CC_FOR_BUILD
 AS_FOR_BUILD
@@ -675,7 +689,13 @@ get_gcc_base_ver
 extra_host_zlib_configure_flags
 extra_host_libiberty_configure_flags
 stage1_languages
+host_libs_picflag
+CRAB1_LIBS
+enable_libdiagnostics
+PICFLAG
 host_shared
+gcc_host_pie
+host_pie
 extra_linker_plugin_flags
 extra_linker_plugin_configure_flags
 islinc
@@ -690,7 +710,14 @@ extra_mpc_gmp_configure_flags
 extra_mpfr_configure_flags
 gmpinc
 gmplibs
+PGO_BUILD_LTO_CFLAGS
+PGO_BUILD_USE_CFLAGS
+PGO_BUILD_GEN_CFLAGS
+HAVE_CXX14_FOR_BUILD
+HAVE_CXX14
 do_compare
+CARGO
+GDC
 GNATMAKE
 GNATBIND
 ac_ct_CXX
@@ -703,7 +730,6 @@ CPPFLAGS
 LDFLAGS
 CFLAGS
 CC
-extra_liboffloadmic_configure_flags
 target_subdir
 host_subdir
 build_subdir
@@ -778,26 +804,30 @@ ac_user_opts='
 enable_option_checking
 with_build_libsubdir
 with_system_zlib
+with_zstd
 enable_as_accelerator_for
 enable_offload_targets
+enable_offload_defaulted
 enable_gold
 enable_ld
+enable_gprofng
 enable_compressed_debug_sections
+enable_default_compressed_debug_sections_algorithm
+enable_year2038
 enable_libquadmath
 enable_libquadmath_support
 enable_libada
+enable_libgm2
 enable_libssp
 enable_libstdcxx
-enable_liboffloadmic
 enable_bootstrap
+enable_pgo_build
 with_mpc
 with_mpc_include
 with_mpc_lib
-with_mpfr_dir
 with_mpfr
 with_mpfr_include
 with_mpfr_lib
-with_gmp_dir
 with_gmp
 with_gmp_include
 with_gmp_lib
@@ -813,7 +843,9 @@ enable_isl_version_check
 enable_lto
 enable_linker_plugin_configure_flags
 enable_linker_plugin_flags
+enable_host_pie
 enable_host_shared
+enable_libdiagnostics
 enable_stage1_languages
 enable_objc_gc
 with_target_bdw_gc
@@ -847,6 +879,7 @@ target_configargs
 AR
 AS
 DLLTOOL
+DSYMUTIL
 LD
 LIPO
 NM
@@ -856,20 +889,25 @@ WINDRES
 WINDMC
 OBJCOPY
 OBJDUMP
+OTOOL
 READELF
 CC_FOR_TARGET
 CXX_FOR_TARGET
 GCC_FOR_TARGET
 GFORTRAN_FOR_TARGET
 GOC_FOR_TARGET
+GDC_FOR_TARGET
+GM2_FOR_TARGET
 AR_FOR_TARGET
 AS_FOR_TARGET
 DLLTOOL_FOR_TARGET
+DSYMUTIL_FOR_TARGET
 LD_FOR_TARGET
 LIPO_FOR_TARGET
 NM_FOR_TARGET
 OBJCOPY_FOR_TARGET
 OBJDUMP_FOR_TARGET
+OTOOL_FOR_TARGET
 RANLIB_FOR_TARGET
 READELF_FOR_TARGET
 STRIP_FOR_TARGET
@@ -1506,20 +1544,31 @@ Optional Features:
                           enable offloading to devices from comma-separated
                           LIST of TARGET[=DIR]. Use optional path to find
                           offload target compiler during the build
+  --enable-offload-defaulted
+		If enabled, configured but not installed offload compilers and
+		libgomp plugins are silently ignored.  Useful for distribution
+		compilers where those are in separate optional packages.
+
   --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
   --enable-ld[=ARG]       build ld [ARG={default,yes,no}]
+  --disable-gprofng       do not build gprofng
   --enable-compressed-debug-sections={all,gas,gold,ld,none}
                           Enable compressed debug sections for gas, gold or ld
                           by default
+  --enable-default-compressed-debug-sections-algorithm={zlib,zstd}
+                          Default compression algorithm for
+                          --enable-compressed-debug-sections.
+  --enable-year2038       enable support for timestamps past the year 2038
   --disable-libquadmath   do not build libquadmath directory
   --disable-libquadmath-support
                           disable libquadmath support for Fortran
   --enable-libada         build libada directory
+  --enable-libgm2         build libgm2 directory
   --enable-libssp         build libssp directory
   --disable-libstdcxx     do not build libstdc++-v3 directory
-  --enable-liboffloadmic=ARG
-                          build liboffloadmic [ARG={no,host,target}]
   --enable-bootstrap      enable bootstrapping [yes if native build]
+  --enable-pgo-build[=lto]
+                          enable the PGO build
   --disable-isl-version-check
                           disable check for isl version
   --enable-lto            enable link time optimization support
@@ -1529,7 +1578,9 @@ Optional Features:
   --enable-linker-plugin-flags=FLAGS
                           additional flags for configuring and building linker
                           plugins [none]
+  --enable-host-pie       build position independent host executables
   --enable-host-shared    build host code as shared libraries
+  --enable-libdiagnostics build libdiagnostics shared library
   --enable-stage1-languages[=all]
                           choose additional languages to build during stage1.
                           Mostly useful for compiler development
@@ -1553,19 +1604,19 @@ Optional Packages:
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
   --with-build-libsubdir=DIR  Directory where to find libraries for build system
   --with-system-zlib      use installed libz
+  --with-zstd             Support zstd compressed debug sections
+                          (default=auto)
   --with-mpc=PATH         specify prefix directory for installed MPC package.
                           Equivalent to --with-mpc-include=PATH/include plus
                           --with-mpc-lib=PATH/lib
   --with-mpc-include=PATH specify directory for installed MPC include files
   --with-mpc-lib=PATH     specify directory for the installed MPC library
-  --with-mpfr-dir=PATH    this option has been REMOVED
   --with-mpfr=PATH        specify prefix directory for installed MPFR package.
                           Equivalent to --with-mpfr-include=PATH/include plus
                           --with-mpfr-lib=PATH/lib
   --with-mpfr-include=PATH
                           specify directory for installed MPFR include files
   --with-mpfr-lib=PATH    specify directory for the installed MPFR library
-  --with-gmp-dir=PATH     this option has been REMOVED
   --with-gmp=PATH         specify prefix directory for the installed GMP
                           package. Equivalent to
                           --with-gmp-include=PATH/include plus
@@ -1627,6 +1678,7 @@ Some influential environment variables:
   AR          AR for the host
   AS          AS for the host
   DLLTOOL     DLLTOOL for the host
+  DSYMUTIL    DSYMUTIL for the host
   LD          LD for the host
   LIPO        LIPO for the host
   NM          NM for the host
@@ -1636,6 +1688,7 @@ Some influential environment variables:
   WINDMC      WINDMC for the host
   OBJCOPY     OBJCOPY for the host
   OBJDUMP     OBJDUMP for the host
+  OTOOL       OTOOL for the host
   READELF     READELF for the host
   CC_FOR_TARGET
               CC for the target
@@ -1647,12 +1700,18 @@ Some influential environment variables:
               GFORTRAN for the target
   GOC_FOR_TARGET
               GOC for the target
+  GDC_FOR_TARGET
+              GDC for the target
+  GM2_FOR_TARGET
+              GM2 for the target
   AR_FOR_TARGET
               AR for the target
   AS_FOR_TARGET
               AS for the target
   DLLTOOL_FOR_TARGET
               DLLTOOL for the target
+  DSYMUTIL_FOR_TARGET
+              DSYMUTIL for the target
   LD_FOR_TARGET
               LD for the target
   LIPO_FOR_TARGET
@@ -1663,6 +1722,8 @@ Some influential environment variables:
               OBJCOPY for the target
   OBJDUMP_FOR_TARGET
               OBJDUMP for the target
+  OTOOL_FOR_TARGET
+              OTOOL for the target
   RANLIB_FOR_TARGET
               RANLIB for the target
   READELF_FOR_TARGET
@@ -2279,22 +2340,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.
@@ -2491,7 +2536,6 @@ test -n "$target_alias" &&
   test "$program_prefix$program_suffix$program_transform_name" = \
     NONENONEs,x,x, &&
   program_prefix=${target_alias}-
-
 test "$program_prefix" != NONE &&
   program_transform_name="s&^&$program_prefix&;$program_transform_name"
 # Use a double $ so make ignores it.
@@ -2790,7 +2834,7 @@ build_tools="build-texinfo build-flex bu
 
 # these libraries are used by various programs built for the host environment
 #f
-host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl libelf libiconv libctf"
+host_libs="gettext libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libiconv libctf libsframe libgrust "
 
 # these tools are built for the host environment
 # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
@@ -2798,7 +2842,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 gm2tools gotools c++tools"
 
 # 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)
@@ -2808,8 +2852,6 @@ target_libraries="target-libgcc \
 		target-libgloss \
 		target-newlib \
 		target-libgomp \
-		target-liboffloadmic \
-		target-libhsail-rt \
 		target-libatomic \
 		target-libitm \
 		target-libstdc++-v3 \
@@ -2821,7 +2863,11 @@ target_libraries="target-libgcc \
 		target-libffi \
 		target-libobjc \
 		target-libada \
-		target-libgo"
+		target-libgm2 \
+		target-libgo \
+		target-libgrust \
+		target-libphobos \
+		target-zlib"
 
 # these tools are built using the target libraries, and are intended to
 # run only in the target environment
@@ -2934,6 +2980,13 @@ if test x$with_system_readline = xyes ;
   noconfigdirs="$noconfigdirs readline"
 fi
 
+
+# Check whether --with-zstd was given.
+if test "${with_zstd+set}" = set; then :
+  withval=$with_zstd;
+fi
+
+
 # some tools are so dependent upon X11 that if we're not building with X,
 # it's not even worth trying to configure, much less build, that tool.
 
@@ -2988,6 +3041,14 @@ else
 fi
 
 
+# Check whether --enable-offload-defaulted was given.
+if test "${enable_offload_defaulted+set}" = set; then :
+  enableval=$enable_offload_defaulted; enable_offload_defaulted=$enableval
+else
+  enable_offload_defaulted=
+fi
+
+
 # Handle --enable-gold, --enable-ld.
 # --disable-gold [--enable-ld]
 #     Build only ld.  Default option.
@@ -3022,7 +3083,7 @@ case "${ENABLE_GOLD}" in
       *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \
       | *-*-linux* | *-*-gnu* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \
       | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* \
-      | *-*-solaris2* | *-*-nto* | *-*-nacl*)
+      | *-*-solaris2* | *-*-nto* | *-*-nacl* | *-*-haiku*)
         case "${target}" in
           *-*-linux*aout* | *-*-linux*oldld*)
             ;;
@@ -3081,6 +3142,24 @@ case "${ENABLE_LD}" in
     ;;
 esac
 
+# Check whether --enable-gprofng was given.
+if test "${enable_gprofng+set}" = set; then :
+  enableval=$enable_gprofng; enable_gprofng=$enableval
+else
+  enable_gprofng=yes
+fi
+
+if test "$enable_gprofng" = "yes"; then
+  case "${target}" in
+    *-musl*)
+      ;;
+    x86_64-*-linux* | i?86-*-linux* | aarch64-*-linux* | riscv64-*-linux*)
+    configdirs="$configdirs gprofng"
+    ;;
+  esac
+fi
+
+
 # PR gas/19109
 # Decide the default method for compressing debug sections.
 # Provide a configure time option to override our default.
@@ -3096,6 +3175,15 @@ else
 fi
 
 
+# Select default compression algorithm.
+# Check whether --enable-default_compressed_debug_sections_algorithm was given.
+if test "${enable_default_compressed_debug_sections_algorithm+set}" = set; then :
+  enableval=$enable_default_compressed_debug_sections_algorithm;
+else
+  default_compressed_debug_sections_algorithm=
+fi
+
+
 # Configure extra directories which are host specific
 
 case "${host}" in
@@ -3117,6 +3205,20 @@ case "${host}" in
     ;;
 esac
 
+# Default to --disable-year2038 until we can handle differences between
+# projects that use gnulib (which understands year 2038) and projects that
+# do not (like BFD).
+# Check whether --enable-year2038 was given.
+if test "${enable_year2038+set}" = set; then :
+  enableval=$enable_year2038; ENABLE_YEAR2038=$enableval
+else
+  ENABLE_YEAR2038=no
+fi
+
+enable_year2038=
+if test "${ENABLE_YEAR2038}" = "no" ; then
+  enable_year2038=no
+fi
 
 # Check whether --enable-libquadmath was given.
 if test "${enable_libquadmath+set}" = set; then :
@@ -3154,6 +3256,17 @@ if test "${ENABLE_LIBADA}" != "yes" ; th
   noconfigdirs="$noconfigdirs gnattools"
 fi
 
+# Check whether --enable-libgm2 was given.
+if test "${enable_libgm2+set}" = set; then :
+  enableval=$enable_libgm2; ENABLE_LIBGM2=$enableval
+else
+  ENABLE_LIBGM2=no
+fi
+
+if test "${ENABLE_LIBGM2}" != "yes" ; then
+  noconfigdirs="$noconfigdirs gm2tools"
+fi
+
 # Check whether --enable-libssp was given.
 if test "${enable_libssp+set}" = set; then :
   enableval=$enable_libssp; ENABLE_LIBSSP=$enableval
@@ -3173,44 +3286,6 @@ if test "${ENABLE_LIBSTDCXX}" = "no" ; t
   noconfigdirs="$noconfigdirs target-libstdc++-v3"
 fi
 
-# If this is accelerator compiler and its target is intelmic we enable
-# target liboffloadmic by default.  If this is compiler with offloading
-# for intelmic we enable host liboffloadmic by default.  Otherwise
-# liboffloadmic is disabled by default.
-# Check whether --enable-liboffloadmic was given.
-if test "${enable_liboffloadmic+set}" = set; then :
-  enableval=$enable_liboffloadmic; case "$enableval" in
-  no | host | target)
-    enable_liboffloadmic=$enableval ;;
-  *)
-    as_fn_error $? "--enable-liboffloadmic=no/host/target" "$LINENO" 5 ;;
-esac
-else
-  if test x"$enable_as_accelerator_for" != x; then
-  case "${target}" in
-    *-intelmic-* | *-intelmicemul-*)
-      enable_liboffloadmic=target
-      extra_liboffloadmic_configure_flags="--enable-liboffloadmic=target"
-      ;;
-    *)
-      enable_liboffloadmic=no
-      ;;
-  esac
-else
-  case "${enable_offload_targets}" in
-    *-intelmic-* | *-intelmicemul-*)
-      enable_liboffloadmic=host
-      extra_liboffloadmic_configure_flags="--enable-liboffloadmic=host"
-      ;;
-    *)
-      enable_liboffloadmic=no
-      ;;
-    esac
-fi
-fi
-
-
-
 # Enable libgomp by default on hosted POSIX systems, and a few others.
 if test x$enable_libgomp = x ; then
     case "${target}" in
@@ -3222,7 +3297,7 @@ if test x$enable_libgomp = x ; then
 	;;
     *-*-darwin* | *-*-aix*)
 	;;
-    nvptx*-*-*)
+    nvptx*-*-* | amdgcn*-*-*)
 	;;
     *)
 	noconfigdirs="$noconfigdirs target-libgomp"
@@ -3249,25 +3324,6 @@ if test -d ${srcdir}/libatomic; then
     fi
 fi
 
-# Disable liboffloadmic on unsupported systems.
-if test -d ${srcdir}/liboffloadmic; then
-    if test x$enable_liboffloadmic != xno; then
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for liboffloadmic support" >&5
-$as_echo_n "checking for liboffloadmic support... " >&6; }
-	if (srcdir=${srcdir}/liboffloadmic; \
-		. ${srcdir}/configure.tgt; \
-		test -n "$UNSUPPORTED")
-	then
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-	    noconfigdirs="$noconfigdirs target-liboffloadmic"
-	else
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-	fi
-    fi
-fi
-
 # Disable libitm on unsupported systems.
 if test -d ${srcdir}/libitm; then
     if test x$enable_libitm = x; then
@@ -3325,29 +3381,6 @@ if test -d ${srcdir}/libvtv; then
     fi
 fi
 
-
-# Disable libhsail-rt on unsupported systems.
-if test -d ${srcdir}/libhsail-rt; then
-    if test x$enable_libhsail_rt = x; then
-        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libhsail-rt support" >&5
-$as_echo_n "checking for libhsail-rt support... " >&6; }
-        if (srcdir=${srcdir}/libhsail-rt; \
-                . ${srcdir}/configure.tgt; \
-                test -n "$UNSUPPORTED")
-        then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-            unsupported_languages="$unsupported_languages brig"
-            # This implicitly disables also target-libhsail-rt as it won't
-            # get added to the build without BRIG FE.
-        else
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-        fi
-    fi
-fi
-
-
 # Disable libquadmath for some systems.
 case "${target}" in
   avr-*-*)
@@ -3366,9 +3399,16 @@ case "${target}" in
     # No hosted I/O support.
     noconfigdirs="$noconfigdirs target-libssp"
     ;;
+  bpf-*-*)
+    noconfigdirs="$noconfigdirs target-libssp"
+    ;;
   powerpc-*-aix* | rs6000-*-aix*)
     noconfigdirs="$noconfigdirs target-libssp"
     ;;
+  pru-*-*)
+    # No hosted I/O support.
+    noconfigdirs="$noconfigdirs target-libssp"
+    ;;
   rl78-*-*)
     # libssp uses a misaligned load to trigger a fault, but the RL78
     # doesn't fault for those - instead, it gives a build-time error
@@ -3382,13 +3422,17 @@ case "${target}" in
 esac
 
 # Disable libstdc++-v3 for some systems.
-# Allow user to override this if they pass --enable-libstdc++-v3
+# Allow user to override this if they pass --enable-libstdcxx
 if test "${ENABLE_LIBSTDCXX}" = "default" ; then
   case "${target}" in
     *-*-vxworks*)
       # VxWorks uses the Dinkumware C++ library.
       noconfigdirs="$noconfigdirs target-libstdc++-v3"
       ;;
+    amdgcn*-*-*)
+      # Not ported/fails to build when using newlib.
+      noconfigdirs="$noconfigdirs target-libstdc++-v3"
+      ;;
     arm*-wince-pe*)
       # the C++ libraries don't build on top of CE's C libraries
       noconfigdirs="$noconfigdirs target-libstdc++-v3"
@@ -3396,18 +3440,86 @@ if test "${ENABLE_LIBSTDCXX}" = "default
     avr-*-*)
       noconfigdirs="$noconfigdirs target-libstdc++-v3"
       ;;
+    bpf-*-*)
+      noconfigdirs="$noconfigdirs target-libstdc++-v3"
+      ;;
     ft32-*-*)
       noconfigdirs="$noconfigdirs target-libstdc++-v3"
       ;;
   esac
 fi
 
+# Disable C++ on systems where it is known to not work.
+# For testing, you can override this with --enable-languages=c++.
+case ,${enable_languages}, in
+  *,c++,*)
+    ;;
+  *)
+      case "${target}" in
+        bpf-*-*)
+          unsupported_languages="$unsupported_languages c++"
+          ;;
+      esac
+      ;;
+esac
+
+# Disable Objc on systems where it is known to not work.
+# For testing, you can override this with --enable-languages=objc.
+case ,${enable_languages}, in
+  *,objc,*)
+    ;;
+  *)
+      case "${target}" in
+        bpf-*-*)
+          unsupported_languages="$unsupported_languages objc"
+          ;;
+      esac
+      ;;
+esac
+
+# Disable D on systems where it is known to not work.
+# For testing, you can override this with --enable-languages=d.
+case ,${enable_languages}, in
+  *,d,*)
+    ;;
+  *)
+    case "${target}" in
+      bpf-*-*)
+	unsupported_languages="$unsupported_languages d"
+	;;
+    esac
+    ;;
+esac
+
+# Disable libphobos on unsupported systems.
+# For testing, you can override this with --enable-libphobos.
+if test -d ${srcdir}/libphobos; then
+    if test x$enable_libphobos = x; then
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libphobos support" >&5
+$as_echo_n "checking for libphobos support... " >&6; }
+	if (srcdir=${srcdir}/libphobos; \
+		. ${srcdir}/configure.tgt; \
+		test "$LIBPHOBOS_SUPPORTED" != "yes")
+	then
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	    noconfigdirs="$noconfigdirs target-libphobos"
+	else
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	fi
+    fi
+fi
+
 # Disable Fortran for some systems.
 case "${target}" in
   mmix-*-*)
     # See <http://gcc.gnu.org/ml/gcc-patches/2004-11/msg00572.html>.
     unsupported_languages="$unsupported_languages fortran"
     ;;
+  bpf-*-*)
+    unsupported_languages="$unsupported_languages fortran"
+    ;;
 esac
 
 # Disable libffi for some systems.
@@ -3454,6 +3566,9 @@ case "${target}" in
   arm*-*-symbianelf*)
     noconfigdirs="$noconfigdirs target-libffi"
     ;;
+  bpf-*-*)
+    noconfigdirs="$noconfigdirs target-libffi"
+    ;;
   cris-*-* | crisv32-*-*)
     case "${target}" in
       *-*-linux*)
@@ -3500,11 +3615,30 @@ esac
 # Disable the go frontend on systems where it is known to not work. Please keep
 # this in sync with contrib/config-list.mk.
 case "${target}" in
-*-*-darwin* | *-*-cygwin* | *-*-mingw*)
+*-*-darwin* | *-*-cygwin* | *-*-mingw* | bpf-* )
     unsupported_languages="$unsupported_languages go"
     ;;
 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
@@ -3516,6 +3650,9 @@ if test x$enable_libgo = x; then
     *-*-cygwin* | *-*-mingw*)
 	noconfigdirs="$noconfigdirs target-libgo"
 	;;
+    bpf-*-*)
+        noconfigdirs="$noconfigdirs target-libgo"
+        ;;
     esac
 fi
 
@@ -3535,12 +3672,24 @@ case "${target}" in
   cris-*-* | crisv32-*-*)
     libgloss_dir=cris
     ;;
+  kvx-*-elf)
+    libgloss_dir=kvx-elf
+    ;;
+  kvx-*-mbr)
+    libgloss_dir=kvx-mbr
+    ;;
+  kvx-*-cos)
+    libgloss_dir=kvx-cos
+    ;;
   hppa*-*-*)
     libgloss_dir=pa
     ;;
   i[3456789]86-*-*)
     libgloss_dir=i386
     ;;
+  loongarch*-*-*)
+    libgloss_dir=loongarch
+    ;;
   m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
     libgloss_dir=m68hc11
     ;;
@@ -3553,6 +3702,9 @@ case "${target}" in
   powerpc*-*-*)
     libgloss_dir=rs6000
     ;;
+  pru-*-*)
+    libgloss_dir=pru
+    ;;
   sparc*-*-*)
     libgloss_dir=sparc
     ;;
@@ -3584,6 +3736,9 @@ case "${target}" in
   sparc-*-sunos4*)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
     ;;
+  bpf-*-*)
+    noconfigdirs="$noconfigdirs target-newlib target-libgloss"
+    ;;
   *-*-aix*)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
     ;;
@@ -3625,6 +3780,13 @@ case "${target}" in
     ;;
 esac
 
+# The ARM simulator has been deprecated for all ARM targets.
+case "${target}" in
+  arm*-*-*)
+    noconfigdirs="$noconfigdirs sim"
+    ;;
+esac
+
 case "${target}" in
   *-*-chorusos)
     ;;
@@ -3632,9 +3794,11 @@ case "${target}" in
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
     noconfigdirs="$noconfigdirs sim target-rda"
     ;;
+  amdgcn*-*-*)
+    ;;
   arm-*-darwin*)
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
-    noconfigdirs="$noconfigdirs sim target-rda"
+    noconfigdirs="$noconfigdirs target-rda"
     ;;
   powerpc-*-darwin*)
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
@@ -3655,7 +3819,8 @@ case "${target}" in
   *-*-dragonfly*)
     ;;
   *-*-freebsd*)
-    if test "x$with_gmp" = x && test "x$with_gmp_dir" = x \
+    if test "x$with_gmp" = x \
+	&& ! test -d ${srcdir}/gmp \
 	&& test -f /usr/local/include/gmp.h; then
       with_gmp=/usr/local
     fi
@@ -3695,6 +3860,9 @@ case "${target}" in
     # newlib is not 64 bit ready
     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
     ;;
+  bpf-*-*)
+    noconfigdirs="$noconfigdirs target-libobjc target-libbacktrace"
+    ;;
   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
     noconfigdirs="$noconfigdirs tcl tk itcl libgui sim"
     ;;
@@ -3814,6 +3982,9 @@ case "${target}" in
   i[3456789]86-*-rdos*)
     noconfigdirs="$noconfigdirs gdb"
     ;;
+  kvx-*-*)
+    noconfigdirs="$noconfigdirs gdb gdbserver sim"
+    ;;
   mmix-*-*)
     noconfigdirs="$noconfigdirs gdb"
     ;;
@@ -3824,6 +3995,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"
@@ -3910,6 +4084,11 @@ case "${target}" in
   wasm32-*-*)
     noconfigdirs="$noconfigdirs ld"
     ;;
+  loongarch*-*-linux*)
+    ;;
+  loongarch*-*-*)
+    noconfigdirs="$noconfigdirs gprof"
+    ;;
 esac
 
 # If we aren't building newlib, then don't build libgloss, since libgloss
@@ -3955,16 +4134,13 @@ fi
   alpha*-linux*)
     host_makefile_frag="config/mh-alpha-linux"
     ;;
-  hppa*-hp-hpux10*)
-    host_makefile_frag="config/mh-pa-hpux10"
-    ;;
   hppa*-hp-hpux*)
     host_makefile_frag="config/mh-pa"
     ;;
   hppa*-*)
     host_makefile_frag="config/mh-pa"
     ;;
-  *-*-darwin*)
+  i?86-*-darwin[89]* | i?86-*-darwin1[0-7]* | powerpc*-*-darwin*)
     host_makefile_frag="config/mh-darwin"
     ;;
   powerpc-*-aix*)
@@ -3980,9 +4156,12 @@ if test "${build}" != "${host}" ; then
   AR_FOR_BUILD=${AR_FOR_BUILD-ar}
   AS_FOR_BUILD=${AS_FOR_BUILD-as}
   CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
+  CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CC_FOR_BUILD) -E}"
   CXX_FOR_BUILD=${CXX_FOR_BUILD-g++}
+  DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil}
   GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
   GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
+  GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc}
   DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool}
   LD_FOR_BUILD=${LD_FOR_BUILD-ld}
   NM_FOR_BUILD=${NM_FOR_BUILD-nm}
@@ -3994,8 +4173,10 @@ else
   AS_FOR_BUILD="\$(AS)"
   CC_FOR_BUILD="\$(CC)"
   CXX_FOR_BUILD="\$(CXX)"
+  DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)"
   GFORTRAN_FOR_BUILD="\$(GFORTRAN)"
   GOC_FOR_BUILD="\$(GOC)"
+  GDC_FOR_BUILD="\$(GDC)"
   DLLTOOL_FOR_BUILD="\$(DLLTOOL)"
   LD_FOR_BUILD="\$(LD)"
   NM_FOR_BUILD="\$(NM)"
@@ -4793,6 +4974,183 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS con
 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 $CC option to accept ISO C99" >&5
+$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
+if ${ac_cv_prog_cc_c99+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <wchar.h>
+#include <stdio.h>
+
+// Check varargs macros.  These examples are taken from C99 6.10.3.5.
+#define debug(...) fprintf (stderr, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+  int x = 1234;
+  int y = 5678;
+  debug ("Flag");
+  debug ("X = %d\n", x);
+  showlist (The first, second, and third items.);
+  report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+  your preprocessor is broken;
+#endif
+#if BIG_OK
+#else
+  your preprocessor is broken;
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+  int datasize;
+  double data[];
+};
+
+struct named_init {
+  int number;
+  const wchar_t *name;
+  double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+  // See if C++-style comments work.
+  // Iterate through items via the restricted pointer.
+  // Also check for declarations in for loops.
+  for (unsigned int i = 0; *(text+i) != '\0'; ++i)
+    continue;
+  return 0;
+}
+
+// Check varargs and va_copy.
+static void
+test_varargs (const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  va_list args_copy;
+  va_copy (args_copy, args);
+
+  const char *str;
+  int number;
+  float fnumber;
+
+  while (*format)
+    {
+      switch (*format++)
+	{
+	case 's': // string
+	  str = va_arg (args_copy, const char *);
+	  break;
+	case 'd': // int
+	  number = va_arg (args_copy, int);
+	  break;
+	case 'f': // float
+	  fnumber = va_arg (args_copy, double);
+	  break;
+	default:
+	  break;
+	}
+    }
+  va_end (args_copy);
+  va_end (args);
+}
+
+int
+main ()
+{
+
+  // Check bool.
+  _Bool success = false;
+
+  // Check restrict.
+  if (test_restrict ("String literal") == 0)
+    success = true;
+  char *restrict newvar = "Another string";
+
+  // Check varargs.
+  test_varargs ("s, d' f .", "string", 65, 34.234);
+  test_varargs_macros ();
+
+  // Check flexible array members.
+  struct incomplete_array *ia =
+    malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+  ia->datasize = 10;
+  for (int i = 0; i < ia->datasize; ++i)
+    ia->data[i] = i * 1.234;
+
+  // Check named initializers.
+  struct named_init ni = {
+    .number = 34,
+    .name = L"Test wide string",
+    .average = 543.34343,
+  };
+
+  ni.number = 58;
+
+  int dynamic_array[ni.number];
+  dynamic_array[ni.number - 1] = 543;
+
+  // work around unused variable warnings
+  return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
+	  || dynamic_array[ni.number - 1] != 543);
+
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c99=$ac_arg
+fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c99" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c99" 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_c99"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c99" != xno; then :
+
+fi
+
+
 ac_ext=cpp
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -5299,12 +5657,16 @@ else
   GNATMAKE="$ac_cv_prog_GNATMAKE"
 fi
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler driver understands Ada" >&5
-$as_echo_n "checking whether compiler driver understands Ada... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler driver understands Ada and is recent enough" >&5
+$as_echo_n "checking whether compiler driver understands Ada and is recent enough... " >&6; }
 if ${acx_cv_cc_gcc_supports_ada+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.adb <<EOF
+pragma Warnings (Off);
+with System.CRTL;
+pragma Warnings (On);
+use type System.CRTL.int64;
 procedure conftest is begin null; end conftest;
 EOF
 acx_cv_cc_gcc_supports_ada=no
@@ -5331,6 +5693,173 @@ else
   have_gnat=no
 fi
 
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gdc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gdc; 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_GDC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GDC"; then
+  ac_cv_prog_GDC="$GDC" # 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_GDC="${ac_tool_prefix}gdc"
+    $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
+GDC=$ac_cv_prog_GDC
+if test -n "$GDC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDC" >&5
+$as_echo "$GDC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_GDC"; then
+  ac_ct_GDC=$GDC
+  # Extract the first word of "gdc", so it can be a program name with args.
+set dummy gdc; 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_GDC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_GDC"; then
+  ac_cv_prog_ac_ct_GDC="$ac_ct_GDC" # 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_GDC="gdc"
+    $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_GDC=$ac_cv_prog_ac_ct_GDC
+if test -n "$ac_ct_GDC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GDC" >&5
+$as_echo "$ac_ct_GDC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_GDC" = x; then
+    GDC="no"
+  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
+    GDC=$ac_ct_GDC
+  fi
+else
+  GDC="$ac_cv_prog_GDC"
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the D compiler works" >&5
+$as_echo_n "checking whether the D compiler works... " >&6; }
+if ${acx_cv_d_compiler_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.d <<EOF
+module conftest; int main() { return 0; }
+EOF
+acx_cv_d_compiler_works=no
+if test "x$GDC" != xno; then
+  errors=`(${GDC} -c conftest.d) 2>&1 || echo failure`
+  if test x"$errors" = x && test -f conftest.$ac_objext; then
+    acx_cv_d_compiler_works=yes
+  fi
+  rm -f conftest.*
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_cv_d_compiler_works" >&5
+$as_echo "$acx_cv_d_compiler_works" >&6; }
+if test "x$GDC" != xno && test x$acx_cv_d_compiler_works != xno; then
+  have_gdc=yes
+else
+  have_gdc=no
+fi
+
+for ac_prog in cargo
+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_CARGO+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$CARGO"; then
+  ac_cv_prog_CARGO="$CARGO" # 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_CARGO="$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
+CARGO=$ac_cv_prog_CARGO
+if test -n "$CARGO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CARGO" >&5
+$as_echo "$CARGO" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$CARGO" && break
+done
+test -n "$CARGO" || CARGO="no"
+
+if test "x$CARGO" != xno; then
+  have_cargo=yes
+else
+  have_cargo=no
+fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to compare bootstrapped objects" >&5
 $as_echo_n "checking how to compare bootstrapped objects... " >&6; }
 if ${gcc_cv_prog_cmp_skip+:} false; then :
@@ -5409,11 +5938,2815 @@ case "$have_compiler:$host:$target:$enab
     ;;
 esac
 
-# When bootstrapping with GCC, build stage 1 in C++98 mode to ensure that a
-# C++98 compiler can still start the bootstrap.
+# When bootstrapping with GCC, build stage 1 in C++14 mode to ensure that a
+# C++14 compiler can still start the bootstrap.  Otherwise, if building GCC,
+# require C++14 (or higher).
 if test "$enable_bootstrap:$GXX" = "yes:yes"; then
-  CXX="$CXX -std=gnu++98"
+  CXX="$CXX -std=c++14"
+elif test "$have_compiler" = yes; then
+    ax_cxx_compile_alternatives="14 1y"    ax_cxx_compile_cxx14_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
+  ac_success=no
+
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features by default" >&5
+$as_echo_n "checking whether $CXX supports C++14 features by default... " >&6; }
+if ${ax_cv_cxx_compile_cxx14+:} 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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx14=yes
+else
+  ax_cv_cxx_compile_cxx14=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_cxx14" >&5
+$as_echo "$ax_cv_cxx_compile_cxx14" >&6; }
+    if test x$ax_cv_cxx_compile_cxx14 = 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_cxx14_$switch" | $as_tr_sh`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++14 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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+_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="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        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_cxx14_$switch" | $as_tr_sh`
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++14 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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+_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="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          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_cxx14_required = xtrue; then
+    if test x$ac_success = xno; then
+      as_fn_error $? "*** A compiler with support for C++14 language features is required." "$LINENO" 5
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX14=0
+    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++14 support was found" >&5
+$as_echo "$as_me: No compiler with C++14 support was found" >&6;}
+  else
+    HAVE_CXX14=1
+
+$as_echo "#define HAVE_CXX14 1" >>confdefs.h
+
+  fi
+
+
+
+  if test "${build}" != "${host}"; then
+      ax_cxx_compile_alternatives="14 1y"    ax_cxx_compile_cxx14_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
+  ac_success=no
+      ax_cv_cxx_compile_cxx14_orig_cxx="$CXX"
+    ax_cv_cxx_compile_cxx14_orig_cxxflags="$CXXFLAGS"
+    ax_cv_cxx_compile_cxx14_orig_cppflags="$CPPFLAGS"
+    CXX="$CXX_FOR_BUILD"
+    CXXFLAGS="$CXXFLAGS_FOR_BUILD"
+    CPPFLAGS="$CPPFLAGS_FOR_BUILD"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features by default" >&5
+$as_echo_n "checking whether $CXX supports C++14 features by default... " >&6; }
+if ${ax_cv_cxx_compile_cxx14_FOR_BUILD+:} 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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx14_FOR_BUILD=yes
+else
+  ax_cv_cxx_compile_cxx14_FOR_BUILD=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_cxx14_FOR_BUILD" >&5
+$as_echo "$ax_cv_cxx_compile_cxx14_FOR_BUILD" >&6; }
+    if test x$ax_cv_cxx_compile_cxx14_FOR_BUILD = 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_cxx14_FOR_BUILD_$switch" | $as_tr_sh`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++14 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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+_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="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        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_cxx14_FOR_BUILD_$switch" | $as_tr_sh`
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++14 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++14 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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+_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="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          ac_success=yes
+          break
+        fi
+      done
+      if test x$ac_success = xyes; then
+        break
+      fi
+    done
+  fi
+      CXX_FOR_BUILD="$CXX"
+    CXXFLAGS_FOR_BUILD="$CXXFLAGS"
+    CPPFLAGS_FOR_BUILD="$CPPFLAGS"
+    CXX="$ax_cv_cxx_compile_cxx14_orig_cxx"
+    CXXFLAGS="$ax_cv_cxx_compile_cxx14_orig_cxxflags"
+    CPPFLAGS="$ax_cv_cxx_compile_cxx14_orig_cppflags"
+  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_cxx14_required = xtrue; then
+    if test x$ac_success = xno; then
+      as_fn_error $? "*** A compiler with support for C++14 language features is required." "$LINENO" 5
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX14_FOR_BUILD=0
+    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++14 support was found" >&5
+$as_echo "$as_me: No compiler with C++14 support was found" >&6;}
+  else
+    HAVE_CXX14_FOR_BUILD=1
+
+$as_echo "#define HAVE_CXX14_FOR_BUILD 1" >>confdefs.h
+
+  fi
+
+
+  fi
+fi
+
+# Check whether --enable-pgo-build was given.
+if test "${enable_pgo_build+set}" = set; then :
+  enableval=$enable_pgo_build; enable_pgo_build=$enableval
+else
+  enable_pgo_build=no
+fi
+
+
+# Issue errors and warnings for invalid/strange PGO build combinations.
+case "$have_compiler:$host:$target:$enable_pgo_build" in
+  *:*:*:no) ;;
+
+  # Allow the PGO build only if we aren't building a compiler and
+  # we are in a native configuration.
+  no:$build:$build:yes | no:$build:$build:lto) ;;
+
+  # Disallow the PGO bootstrap if we are building a compiler.
+  yes:*:*:yes | yes:*:*:lto)
+    as_fn_error $? "cannot perform the PGO bootstrap when building a compiler" "$LINENO" 5 ;;
+
+  *)
+    as_fn_error $? "invalid option for --enable-pgo-build" "$LINENO" 5
+    ;;
+esac
+
+if test "$enable_pgo_build" != "no"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -fprofile-generate" >&5
+$as_echo_n "checking whether the compiler supports -fprofile-generate... " >&6; }
+  old_CFLAGS="$CFLAGS"
+  PGO_BUILD_GEN_CFLAGS="-fprofile-generate"
+  CFLAGS="$CFLAGS $PGO_BUILD_CFLAGS"
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  PGO_BUILD_GEN_CFLAGS=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$old_CFLAGS"
+  if test -n "$PGO_BUILD_GEN_CFLAGS"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    PGO_BUILD_USE_CFLAGS="-fprofile-use"
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    as_fn_error $? "cannot perform the PGO build without -fprofile-generate" "$LINENO" 5
+  fi
+
+  if test "$enable_pgo_build" = "lto"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports -flto=jobserver -ffat-lto-objects" >&5
+$as_echo_n "checking whether the compiler supports -flto=jobserver -ffat-lto-objects... " >&6; }
+    old_CFLAGS="$CFLAGS"
+    PGO_BUILD_LTO_CFLAGS="-flto=jobserver -ffat-lto-objects"
+    CFLAGS="$CFLAGS $PGO_BUILD_LTO_CFLAGS"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo;
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  PGO_BUILD_LTO_CFLAGS=
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    CFLAGS="$old_CFLAGS"
+    if test -n "$PGO_BUILD_LTO_CFLAGS"; 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; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: LTO is disabled for the PGO build" >&5
+$as_echo "$as_me: WARNING: LTO is disabled for the PGO build" >&2;}
+    fi
+  fi
+fi
+
+
+
 
 # Used for setting $lt_cv_objdir
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
@@ -5446,7 +8779,22 @@ _ACEOF
 
 
 # Check for GMP, MPFR and MPC
-gmplibs="-lmpc -lmpfr -lgmp"
+require_gmp=no
+require_mpc=no
+if test -d ${srcdir}/gcc ; then
+  require_gmp=yes
+  require_mpc=yes
+fi
+if test -d ${srcdir}/gdb ; then
+  if test "x$enable_gdb" != xno; then
+   require_gmp=yes
+  fi
+fi
+
+gmplibs="-lmpfr -lgmp"
+if test x"$require_mpc" = "xyes" ; then
+  gmplibs="-lmpc $gmplibs"
+fi
 gmpinc=
 have_gmp=no
 
@@ -5494,14 +8842,6 @@ fi
 # Specify a location for mpfr
 # check for this first so it ends up on the link line before gmp.
 
-# Check whether --with-mpfr-dir was given.
-if test "${with_mpfr_dir+set}" = set; then :
-  withval=$with_mpfr_dir; as_fn_error $? "The --with-mpfr-dir=PATH option has been removed.
-Use --with-mpfr=PATH or --with-mpfr-include=PATH plus --with-mpfr-lib=PATH" "$LINENO" 5
-fi
-
-
-
 # Check whether --with-mpfr was given.
 if test "${with_mpfr+set}" = set; then :
   withval=$with_mpfr;
@@ -5547,14 +8887,6 @@ fi
 
 # Specify a location for gmp
 
-# Check whether --with-gmp-dir was given.
-if test "${with_gmp_dir+set}" = set; then :
-  withval=$with_gmp_dir; as_fn_error $? "The --with-gmp-dir=PATH option has been removed.
-Use --with-gmp=PATH or --with-gmp-include=PATH plus --with-gmp-lib=PATH" "$LINENO" 5
-fi
-
-
-
 # Check whether --with-gmp was given.
 if test "${with_gmp+set}" = set; then :
   withval=$with_gmp;
@@ -5597,15 +8929,14 @@ if test "x$with_gmp$with_gmp_include$wit
   have_gmp=yes
 fi
 
-if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then
+if test "x$require_gmp" = xyes && test "x$have_gmp" = xno; then
   have_gmp=yes
   saved_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $gmpinc"
   # Check for the recommended and required versions of GMP.
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of gmp.h" >&5
 $as_echo_n "checking for the correct version of gmp.h... " >&6; }
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include "gmp.h"
 int
@@ -5667,7 +8998,7 @@ int
 main ()
 {
 
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,0)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(3,1,0)
     choke me
     #endif
 
@@ -5684,7 +9015,7 @@ int
 main ()
 {
 
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,2)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(3,1,6)
     choke me
     #endif
 
@@ -5708,7 +9039,7 @@ rm -f core conftest.err conftest.$ac_obj
   fi
 
   # Check for the MPC header version.
-  if test x"$have_gmp" = xyes ; then
+  if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes ; then
     # Check for the recommended and required versions of MPC.
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of mpc.h" >&5
 $as_echo_n "checking for the correct version of mpc.h... " >&6; }
@@ -5762,26 +9093,56 @@ rm -f core conftest.err conftest.$ac_obj
   if test x"$have_gmp" = xyes; then
     saved_LIBS="$LIBS"
     LIBS="$LIBS $gmplibs"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of the gmp/mpfr/mpc libraries" >&5
-$as_echo_n "checking for the correct version of the gmp/mpfr/mpc libraries... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of the gmp/mpfr libraries" >&5
+$as_echo_n "checking for the correct version of the gmp/mpfr libraries... " >&6; }
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <mpc.h>
+#include <mpfr.h>
 int
 main ()
 {
 
     mpfr_t n;
     mpfr_t x;
-    mpc_t c;
     int t;
     mpfr_init (n);
     mpfr_init (x);
-    mpfr_atan2 (n, n, x, GMP_RNDN);
-    mpfr_erfc (n, x, GMP_RNDN);
-    mpfr_subnormalize (x, t, GMP_RNDN);
+    mpfr_atan2 (n, n, x, MPFR_RNDN);
+    mpfr_erfc (n, x, MPFR_RNDN);
+    mpfr_subnormalize (x, t, MPFR_RNDN);
     mpfr_clear(n);
     mpfr_clear(x);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; 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; }; have_gmp=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LIBS="$saved_LIBS"
+  fi
+
+  # Now check the MPC library
+  if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes; then
+    saved_LIBS="$LIBS"
+    LIBS="$LIBS $gmplibs"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of the mpc libraries" >&5
+$as_echo_n "checking for the correct version of the mpc libraries... " >&6; }
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <mpc.h>
+int
+main ()
+{
+
+    mpc_t c;
     mpc_init2 (c, 53);
     mpc_set_ui_ui (c, 1, 1, MPC_RNDNN);
     mpc_cosh (c, c, MPC_RNDNN);
@@ -5810,15 +9171,23 @@ rm -f core conftest.err conftest.$ac_obj
 # The library versions listed in the error message below should match
 # the HARD-minimums enforced above.
   if test x$have_gmp != xyes; then
-    as_fn_error $? "Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
+    if test -d ${srcdir}/gcc ; then
+      as_fn_error $? "Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
 Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
 their locations.  Source code for these libraries can be found at
 their respective hosting sites as well as at
-ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
+https://gcc.gnu.org/pub/gcc/infrastructure/.  See also
 http://gcc.gnu.org/install/prerequisites.html for additional info.  If
 you obtained GMP, MPFR and/or MPC from a vendor distribution package,
 make sure that you have installed both the libraries and the header
 files.  They may be located in separate packages." "$LINENO" 5
+    else
+      as_fn_error $? "Building GDB requires GMP 4.2+, and MPFR 3.1.0+.
+Try the --with-gmp and/or --with-mpfr options to specify
+their locations.  If you obtained GMP and/or MPFR from a vendor
+distribution package, make sure that you have installed both the libraries
+and the header files.  They may be located in separate packages." "$LINENO" 5
+    fi
   fi
 fi
 
@@ -5918,6 +9287,20 @@ else
  fi
 fi
 
+case $target in
+  *-darwin2* | *-darwin1[56789]*)
+    # For these versions, we default to using embedded rpaths.
+    if test "x$enable_darwin_at_rpath" != "xno"; then
+      poststage1_ldflags="$poststage1_ldflags -nodefaultrpaths"
+    fi
+  ;;
+  *-darwin*)
+    # For these versions, we only use embedded rpaths on demand.
+    if test "x$enable_darwin_at_rpath" = "xyes"; then
+      poststage1_ldflags="$poststage1_ldflags -nodefaultrpaths"
+    fi
+  ;;
+esac
 
 
 # GCC GRAPHITE dependency isl.
@@ -6149,17 +9532,276 @@ fi
 
 
 
+# Handle --enable-host-pie
+# If host PIE executables are the default (or must be forced on) for some host,
+# we must pass that configuration to the gcc directory.
+gcc_host_pie=
+# Check whether --enable-host-pie was given.
+if test "${enable_host_pie+set}" = set; then :
+  enableval=$enable_host_pie; host_pie=$enableval
+ case $host in
+   *-*-darwin2*)
+     if test x$host_pie != xyes ; then
+       # for Darwin20+ this is required.
+       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: PIE executables are required for the configured host, host-pie setting ignored." >&5
+$as_echo "$as_me: WARNING: PIE executables are required for the configured host, host-pie setting ignored." >&2;}
+       host_pie=yes
+       gcc_host_pie=--enable-host-pie
+     fi ;;
+  *) ;;
+ esac
+else
+  case $host in
+  *-*-darwin2*)
+    # Default to PIE (mandatory for aarch64).
+    host_pie=yes
+    gcc_host_pie=--enable-host-pie
+    ;;
+  *) host_pie=no ;;
+ esac
+fi
+
+
+
+
+
 # Enable --enable-host-shared.
 # Checked early to determine whether jit is an 'all' language
 # Check whether --enable-host-shared was given.
 if test "${enable_host_shared+set}" = set; then :
   enableval=$enable_host_shared; host_shared=$enableval
+ case $host in
+   x86_64-*-darwin* | aarch64-*-darwin*)
+     if test x$host_shared != xyes ; then
+       # PIC is the default, and actually cannot be switched off.
+       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: PIC code is required for the configured host; host-shared setting ignored." >&5
+$as_echo "$as_me: WARNING: PIC code is required for the configured host; host-shared setting ignored." >&2;}
+       host_shared=yes
+     fi ;;
+   *-*-darwin*)
+     if test x$host_pie = xyes -a x$host_shared != xyes ; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: PIC code is required for PIE host executables host-shared setting ignored." >&5
+$as_echo "$as_me: WARNING: PIC code is required for PIE host executables host-shared setting ignored." >&2;}
+       host_shared=yes
+     fi ;;
+  *) ;;
+ esac
+else
+  case $host in
+  # 64B x86_64 and Aarch64 Darwin default to PIC.
+  x86_64-*-darwin* | aarch64-*-darwin*) host_shared=yes ;;
+  # 32B and powerpc64 Darwin must use PIC to link PIE exes.
+  *-*-darwin*) host_shared=$host_pie ;;
+  *) host_shared=no;;
+ esac
+fi
+
+
+
+
+if test x$host_shared = xyes; then
+  case $host in
+    *-*-darwin*)
+      # Since host shared is the default for 64b Darwin, and also enabled for
+      # host_pie, ensure that we present the PIE flag when host_pie is active.
+      if test x$host_pie = xyes; then
+        PICFLAG=-fPIE
+      fi
+      ;;
+    *)
+      PICFLAG=-fPIC
+      ;;
+  esac
+elif test x$host_pie = xyes; then
+  PICFLAG=-fPIE
 else
-  host_shared=no
+  PICFLAG=
 fi
 
 
 
+
+# Check for libdiagnostics support.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable libdiagnostics" >&5
+$as_echo_n "checking whether to enable libdiagnostics... " >&6; }
+# Check whether --enable-libdiagnostics was given.
+if test "${enable_libdiagnostics+set}" = set; then :
+  enableval=$enable_libdiagnostics; enable_libdiagnostics=$enableval
+else
+  enable_libdiagnostics=no
+fi
+
+
+if test x$enable_libdiagnostics = xyes; then
+  # Disable libdiagnostics if -enable-host-shared not specified
+  # but not if building for Mingw. All code in Windows
+  # is position independent code (PIC).
+  case $target in
+     *mingw*) ;;
+     *)
+       if test x$host_shared != xyes; then
+	 as_fn_error $? "
+Enabling libdiagnostics requires --enable-host-shared.
+
+--enable-host-shared typically slows the rest of the compiler down by
+a few %, so you must explicitly enable it.
+
+If you want to build both libdiagnostics and the regular compiler, it is often
+best to do this via two separate configure/builds, in separate
+directories, to avoid imposing the performance cost of
+--enable-host-shared on the regular compiler." "$LINENO" 5
+       fi
+       ;;
+   esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_libdiagnostics" >&5
+$as_echo "$enable_libdiagnostics" >&6; }
+
+
+
+# Rust requires -ldl and -lpthread if you are using an old glibc that does not include them by
+# default, so we check for them here
+# We are doing the test here and not in the gcc/configure to be able to nicely disable the
+# build of the Rust frontend in case a dep is missing.
+missing_rust_dynlibs=none
+
+save_LIBS="$LIBS"
+LIBS=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
+$as_echo_n "checking for library containing dlopen... " >&6; }
+if ${ac_cv_search_dlopen+:} 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 dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dl; 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_dlopen=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_dlopen+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_dlopen+:} false; then :
+
+else
+  ac_cv_search_dlopen=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5
+$as_echo "$ac_cv_search_dlopen" >&6; }
+ac_res=$ac_cv_search_dlopen
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pthread_create" >&5
+$as_echo_n "checking for library containing pthread_create... " >&6; }
+if ${ac_cv_search_pthread_create+:} 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 pthread_create ();
+int
+main ()
+{
+return pthread_create ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' pthread; 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_pthread_create=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_pthread_create+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_pthread_create+:} false; then :
+
+else
+  ac_cv_search_pthread_create=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pthread_create" >&5
+$as_echo "$ac_cv_search_pthread_create" >&6; }
+ac_res=$ac_cv_search_pthread_create
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+CRAB1_LIBS="$LIBS"
+LIBS="$save_LIBS"
+
+if test "$ac_cv_search_dlopen" = no; then
+    missing_rust_dynlibs="libdl"
+fi
+
+if test "$ac_cv_search_pthread_create" = no; then
+    missing_rust_dynlibs="$missing_rust_dynlibs, libpthread"
+fi
+
+CRAB1_LIBS="$CRAB1_LIBS"
+
+
+# If we are building PIC/PIE host executables, and we are building dependent
+# libs (e.g. GMP) in-tree those libs need to be configured to generate PIC
+# code.
+host_libs_picflag=
+if test "$host_shared" = "yes" -o "$host_pie" = "yes"; then
+host_libs_picflag='--with-pic'
+fi
+
+
 # By default, C and C++ are the only stage 1 languages.
 stage1_languages=,c,
 
@@ -6227,7 +9869,7 @@ if test -d ${srcdir}/gcc; then
         lang_requires_boot_languages=
         # set srcdir during sourcing lang_frag to the gcc dir.
         # Sadly overriding srcdir on the . line doesn't work in plain sh as it
-        # polutes this shell
+        # pollutes this shell
         saved_srcdir=${srcdir}
         srcdir=${srcdir}/gcc . ${lang_frag}
         srcdir=${saved_srcdir}
@@ -6374,10 +10016,52 @@ if test -d ${srcdir}/gcc; then
             ;;
         esac
 
+        # Disable D if no preexisting GDC is available.
+        case ${add_this_lang}:${language}:${have_gdc} in
+          yes:d:no)
+            # Specifically requested language; tell them.
+            as_fn_error $? "GDC is required to build $language" "$LINENO" 5
+           ;;
+          all:d:no)
+            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GDC is required to build $language" >&5
+$as_echo "$as_me: WARNING: GDC is required to build $language" >&2;}
+            add_this_lang=unsupported
+            ;;
+          *:d:no)
+            # Silently disable.
+            add_this_lang=unsupported
+            ;;
+        esac
+
+        # Disable Rust if we are missing some required C libraries for the Rust runtime.
+        case ${add_this_lang}:${language}:${missing_rust_dynlibs} in
+          *:rust:none)
+            # Nothing to do - we're not missing any C libraries
+            ;;
+          yes:rust:*)
+            as_fn_error $? "some C libraries are required to build $language: $missing_rust_dynlibs" "$LINENO" 5
+            add_this_lang=unsupported
+            ;;
+          all:rust:*)
+            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: some C libraries are required to build $language: $missing_rust_dynlibs" >&5
+$as_echo "$as_me: WARNING: some C libraries are required to build $language: $missing_rust_dynlibs" >&2;}
+            add_this_lang=unsupported
+            ;;
+          *:rust:*)
+            # Silently disable.
+            add_this_lang=unsupported
+            ;;
+        esac
+
         # Disable jit if -enable-host-shared not specified
-        case ${add_this_lang}:${language}:${host_shared} in
-          yes:jit:no)
-	    # PR jit/64780: explicitly specify --enable-host-shared
+        # but not if building for Mingw. All code in Windows
+        # is position independent code (PIC).
+        case $target in
+          *mingw*) ;;
+          *)
+          case ${add_this_lang}:${language}:${host_shared} in
+            yes:jit:no)
+	           # PR jit/64780: explicitly specify --enable-host-shared
 	    as_fn_error $? "
 Enabling language \"jit\" requires --enable-host-shared.
 
@@ -6388,17 +10072,50 @@ If you want to build both the jit and th
 best to do this via two separate configure/builds, in separate
 directories, to avoid imposing the performance cost of
 --enable-host-shared on the regular compiler." "$LINENO" 5
-	    ;;
-          all:jit:no)
-	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-host-shared required to build $language" >&5
+	            ;;
+            all:jit:no)
+	      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --enable-host-shared required to build $language" >&5
 $as_echo "$as_me: WARNING: --enable-host-shared required to build $language" >&2;}
+              add_this_lang=unsupported
+              ;;
+            *:jit:no)
+              # Silently disable.
+              add_this_lang=unsupported
+              ;;
+	        esac
+          ;;
+        esac
+
+        # Pre-conditions to consider whether cargo being supported.
+        if test x"$have_cargo" = xyes \
+          && test x"$build" != x"$host"; then
+          # Until <https://github.com/Rust-GCC/gccrs/issues/2898>
+          # "'cargo' should build for the host system" is resolved:
+          { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: use of cargo not yet supported here in Canadian cross configurations" >&5
+$as_echo "$as_me: WARNING: use of cargo not yet supported here in Canadian cross configurations" >&2;}
+          have_cargo=no
+        else
+          # Assume that cargo-produced object files are compatible with what
+          # we're going to build here.
+          :
+        fi
+        # Disable Rust if cargo is unavailable.
+        case ${add_this_lang}:${language}:${have_cargo} in
+          yes:rust:no)
+            # Specifically requested language; tell them.
+            as_fn_error $? "cargo is required to build $language" "$LINENO" 5
+            ;;
+          all:rust:no)
+            { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cargo is required to build $language" >&5
+$as_echo "$as_me: WARNING: cargo is required to build $language" >&2;}
             add_this_lang=unsupported
             ;;
-          *:jit:no)
+          *:rust:no)
             # Silently disable.
             add_this_lang=unsupported
             ;;
-	esac
+        esac
+
 
         # Disable a language that is unsupported by the target.
 	case "${add_this_lang}: $unsupported_languages " in
@@ -6436,7 +10153,7 @@ directories, to avoid imposing the perfo
 		  *) stage1_languages="${stage1_languages}${language}," ;;
 		esac
 		# We need to bootstrap any supporting libraries.
-		bootstrap_target_libs="${bootstrap_target_libs}${target_libs},"
+		bootstrap_target_libs=`echo "${bootstrap_target_libs}${target_libs}," | sed "s/ /,/g"`
 		;;
 	    esac
 	    ;;
@@ -6561,7 +10278,7 @@ case ,${enable_languages},:${enable_objc
   fi
 esac
 
-# Disable libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++
+# Disable libitm, libsanitizer, libvtv if we're not building C++
 case ,${enable_languages}, in
   *,c++,*)
     # Disable libitm, libsanitizer if we're not building libstdc++
@@ -6573,10 +10290,31 @@ case ,${enable_languages}, in
     esac
     ;;
   *)
-    noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
+    noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv"
     ;;
 esac
 
+case ,${enable_languages}, in
+  *,rust,*)
+    case " ${noconfigdirs} " in
+      *\ target-libstdc++-v3\ *)
+        # Disable target libgrust if we're not building target libstdc++.
+        noconfigdirs="$noconfigdirs target-libgrust"
+        ;;
+    esac
+    ;;
+esac
+
+# If gcc/ is not in the source tree then we'll not be building a
+# target compiler, assume in that case we don't want to build any
+# target libraries or tools.
+#
+# This was added primarily for the benefit for binutils-gdb who reuse
+# this configure script, but don't always have target tools available.
+if test ! -d ${srcdir}/gcc; then
+   skipdirs="${skipdirs} ${target_configdirs}"
+fi
+
 # Remove the entries in $skipdirs and $noconfigdirs from $configdirs,
 # $build_configdirs and $target_configdirs.
 # If we have the source for $noconfigdirs entries, add them to $notsupp.
@@ -6662,13 +10400,18 @@ fi
 
 # Sometimes we have special requirements for the host libiberty.
 extra_host_libiberty_configure_flags=
-extra_host_zlib_configure_flags=
 case " $configdirs " in
-  *" lto-plugin "* | *" libcc1 "*)
+  *" lto-plugin "* | *" libcc1 "* | *" gdbserver "*)
     # When these are to be built as shared libraries, the same applies to
     # libiberty.
     extra_host_libiberty_configure_flags=--enable-shared
     ;;
+esac
+
+
+# Sometimes we have special requirements for the host zlib.
+extra_host_zlib_configure_flags=
+case " $configdirs " in
   *" bfd "*)
     # When bfd is to be built as a shared library, the same applies to
     # zlib.
@@ -6679,7 +10422,6 @@ case " $configdirs " in
 esac
 
 
-
 # Produce a warning message for the subdirs we can't configure.
 # This isn't especially interesting in the Cygnus tree, but in the individual
 # FSF releases, it's important to let people know when their machine isn't
@@ -6985,6 +10727,12 @@ case "${target}" in
   spu-*-*)
     target_makefile_frag="config/mt-spu"
     ;;
+  loongarch*-*linux* | loongarch*-*gnu*)
+    target_makefile_frag="config/mt-loongarch-gnu"
+    ;;
+  loongarch*-*elf*)
+    target_makefile_frag="config/mt-loongarch-elf"
+    ;;
   mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
     target_makefile_frag="config/mt-sde"
     ;;
@@ -6994,9 +10742,6 @@ case "${target}" in
   mips*-*-*linux* | mips*-*-gnu*)
     target_makefile_frag="config/mt-mips-gnu"
     ;;
-  nios2-*-elf*)
-    target_makefile_frag="config/mt-nios2-elf"
-    ;;
   *-*-linux-android*)
     target_makefile_frag="config/mt-android"
     ;;
@@ -7182,7 +10927,7 @@ fi
 # or bootstrap-ubsan, bootstrap it.
 if echo " ${target_configdirs} " | grep " libsanitizer " > /dev/null 2>&1; then
   case "$BUILD_CONFIG" in
-    *bootstrap-asan* | *bootstrap-ubsan* )
+    *bootstrap-hwasan* | *bootstrap-asan* | *bootstrap-ubsan* )
       bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer,
       bootstrap_fixincludes=yes
       ;;
@@ -7195,6 +10940,16 @@ if echo " ${target_configdirs} " | grep
   bootstrap_target_libs=${bootstrap_target_libs}target-libvtv,
 fi
 
+# If we are building libatomic and the list of enabled languages includes the
+# D frontend, bootstrap it.
+if echo " ${target_configdirs} " | grep " libatomic " > /dev/null 2>&1; then
+  case ,${enable_languages}, in
+    *,d,*)
+      bootstrap_target_libs=${bootstrap_target_libs}target-libatomic,
+      ;;
+  esac
+fi
+
 # Determine whether gdb needs tk/tcl or not.
 # Use 'maybe' since enable_gdbtk might be true even if tk isn't available
 # and in that case we want gdb to be built without tk.  Ugh!
@@ -7223,13 +10978,20 @@ 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"
+    ;;
+  *\ sim\ *)
+    configdirs="${configdirs} gnulib"
+    ;;
+esac
 
 # Strip out unwanted targets.
 
@@ -7254,6 +11016,15 @@ case "$enable_bootstrap:$ENABLE_GOLD: $c
     ;;
 esac
 
+# Bootstrapping GCC requires libstdc++-v3 so error out if libstdc++ is disabled with bootstrapping
+# Note C++ is always enabled for stage1 now.
+case "$enable_bootstrap:${noconfigdirs}" in
+  yes:*target-libstdc++-v3*)
+    as_fn_error $? "bootstrapping with --disable-libstdcxx is not supported" "$LINENO" 5
+    ;;
+esac
+
+
 extrasub_build=
 for module in ${build_configdirs} ; do
   if test -z "${no_recursion}" \
@@ -7320,6 +11091,12 @@ extrasub_target="$extrasub_target
 /^@unless /d
 /^@endunless /d"
 
+if test "$enable_pgo_build" != "no"; then
+  extrasub_build="$extrasub_build
+/^@if pgo-build\$/d
+/^@endif pgo-build\$/d"
+fi
+
 # Create the serialization dependencies.  This uses a temporary file.
 
 # Check whether --enable-serial-configure was given.
@@ -7339,7 +11116,9 @@ esac
 # These force 'configure's to be done one at a time, to avoid problems
 # with contention over a shared config.cache.
 rm -f serdep.tmp
+if test "x${enable_serial_build_configure}" = xyes || test "x${enable_serial_host_configure}" = xyes || test "x${enable_serial_target_configure}" = xyes; then
 echo '# serdep.tmp' > serdep.tmp
+fi
 olditem=
 test "x${enable_serial_build_configure}" = xyes &&
 for item in ${build_configdirs} ; do
@@ -7377,7 +11156,8 @@ serialization_dependencies=serdep.tmp
 # files altogether, and which should be passed on to subconfigures.
 # Also strip program-prefix, program-suffix, and program-transform-name,
 # so that we can pass down a consistent program-transform-name.
-baseargs=
+hbaseargs=
+bbaseargs=
 tbaseargs=
 keep_next=no
 skip_next=no
@@ -7393,7 +11173,8 @@ do
       *\'*)
 	ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
-    baseargs="$baseargs '$ac_arg'"
+    hbaseargs="$hbaseargs '$ac_arg'"
+    bbaseargs="$bbaseargs '$ac_arg'"
     tbaseargs="$tbaseargs '$ac_arg'"
     keep_next=no
     continue
@@ -7417,6 +11198,7 @@ do
   esac
 
   skip_targ=no
+  skip_barg=no
   case $ac_arg in
 
   --with-* | --without-*)
@@ -7429,6 +11211,12 @@ do
     *[-_]lib)
       lib=`echo "$libopt" | sed 's,[-_]lib$,,'`
       ;;
+    *[-_]prefix)
+      lib=`echo "$libopt" | sed 's,[-_]prefix$,,'`
+      ;;
+    *[-_]type)
+      lib=`echo "$libopt" | sed 's,[-_]type$,,'`
+      ;;
     *)
       lib=$libopt
       ;;
@@ -7445,6 +11233,11 @@ do
         skip_targ=yes
       fi
       ;;
+    libintl | libiconv)
+      # We don't want libintl (and co.) in anything but the host arguments.
+      skip_targ=yes
+      skip_barg=yes
+      ;;
     esac
     ;;
   esac
@@ -7453,7 +11246,8 @@ do
     --cache-file=/dev/null | \
     -cache-file=/dev/null )
       # Handled here to avoid the test to skip args below.
-      baseargs="$baseargs '$ac_arg'"
+      hbaseargs="$hbaseargs '$ac_arg'"
+      bbaseargs="$bbaseargs '$ac_arg'"
       tbaseargs="$tbaseargs '$ac_arg'"
       # Assert: $separate_arg should always be no.
       keep_next=$separate_arg
@@ -7484,7 +11278,10 @@ do
 	*\'*)
 	  ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
       esac
-      baseargs="$baseargs '$ac_arg'"
+      hbaseargs="$hbaseargs '$ac_arg'"
+      if test X"$skip_barg" = Xno; then
+	bbaseargs="$bbaseargs '$ac_arg'"
+      fi
       if test X"$skip_targ" = Xno; then
         tbaseargs="$tbaseargs '$ac_arg'"
       fi
@@ -7499,7 +11296,8 @@ do
 done
 # Remove the initial space we just introduced and, as these will be
 # expanded by make, quote '$'.
-baseargs=`echo "x$baseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'`
+hbaseargs=`echo "x$hbaseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'`
+bbaseargs=`echo "x$bbaseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'`
 
 # Add in --program-transform-name, after --program-prefix and
 # --program-suffix have been applied to it.  Autoconf has already
@@ -7513,15 +11311,25 @@ sed -e "s,\\\\\\\\,\\\\,g; s,','\\\\'',g
 EOF_SED
 gcc_transform_name=`cat conftestsed.out`
 rm -f conftestsed.out
-baseargs="$baseargs --program-transform-name='${gcc_transform_name}'"
+hbaseargs="$hbaseargs --program-transform-name='${gcc_transform_name}'"
+bbaseargs="$bbaseargs --program-transform-name='${gcc_transform_name}'"
 tbaseargs="$tbaseargs --program-transform-name='${gcc_transform_name}'"
 if test "$silent" = yes; then
-  baseargs="$baseargs --silent"
+  bbaseargs="$bbaseargs --silent"
+  hbaseargs="$hbaseargs --silent"
   tbaseargs="$tbaseargs --silent"
 fi
-baseargs="$baseargs --disable-option-checking"
+
+bbaseargs="$bbaseargs --disable-option-checking"
+hbaseargs="$hbaseargs --disable-option-checking"
 tbaseargs="$tbaseargs --disable-option-checking"
 
+if test "$enable_year2038" = no; then
+  bbaseargs="$bbaseargs --disable-year2038"
+  hbaseargs="$hbaseargs --disable-year2038"
+  tbaseargs="$tbaseargs --disable-year2038"
+fi
+
 # Record and document user additions to sub configure arguments.
 
 
@@ -7532,7 +11340,7 @@ tbaseargs="$tbaseargs --disable-option-c
 # desired.  We can't even use the same cache file for all build-side
 # libraries, as they're compiled differently; some with C, some with
 # C++ or with different feature-enabling options.
-build_configargs="$build_configargs --cache-file=./config.cache ${baseargs}"
+build_configargs="$build_configargs --cache-file=./config.cache ${bbaseargs}"
 
 # For host modules, accept cache file option, or specification as blank.
 case "${cache_file}" in
@@ -7546,7 +11354,7 @@ esac
 
 # Host dirs don't like to share a cache file either, horribly enough.
 # This seems to be due to autoconf 2.5x stupidity.
-host_configargs="$host_configargs --cache-file=./config.cache ${extra_host_args} ${baseargs}"
+host_configargs="$host_configargs --cache-file=./config.cache ${extra_host_args} ${hbaseargs}"
 
 target_configargs="$target_configargs ${tbaseargs}"
 
@@ -7685,6 +11493,7 @@ esac
 # our build compiler if desired.
 if test x"${build}" = x"${host}" ; then
   CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
+  CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
   CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
   LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
 fi
@@ -7709,6 +11518,17 @@ case "${target}" in
   mep*)
     FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary"
     ;;
+  # The VxWorks support for shared libraries is getting in
+  # incrementally.  Make sure it doesn't get activated implicitly:
+  *vxworks*)
+    if test "${enable_shared-unset}" = unset ; then
+      enable_shared=no
+      # So the build of libraries knows ...
+      target_configargs="${target_configargs} --disable-shared"
+      # So gcc knows ...
+      host_configargs="${host_configargs} --disable-shared"
+    fi
+    ;;
 esac
 
 # Makefile fragments.
@@ -7763,6 +11583,10 @@ done
 
 
 
+
+
+
+
 # Generate default definitions for YACC, M4, LEX and other programs that run
 # on the build machine.  These are used if the Makefile can't locate these
 # programs in objdir.
@@ -8595,6 +12419,147 @@ fi
 
 
 
+if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL=$DSYMUTIL
+elif test -n "$ac_cv_prog_DSYMUTIL"; then
+  DSYMUTIL=$ac_cv_prog_DSYMUTIL
+fi
+
+if test -n "$ac_cv_prog_DSYMUTIL"; then
+  for ncn_progname in dsymutil; do
+    # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_DSYMUTIL="${ncn_progname}"
+    $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
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  done
+fi
+
+for ncn_progname in dsymutil; do
+  if test -n "$ncn_tool_prefix"; then
+    # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_tool_prefix}${ncn_progname}; 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_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_DSYMUTIL="${ncn_tool_prefix}${ncn_progname}"
+    $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
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test -z "$ac_cv_prog_DSYMUTIL" && test $build = $host ; then
+    # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_DSYMUTIL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # 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_DSYMUTIL="${ncn_progname}"
+    $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
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  test -n "$ac_cv_prog_DSYMUTIL" && break
+done
+
+if test -z "$ac_cv_prog_DSYMUTIL" ; then
+  set dummy dsymutil
+  if test $build = $host ; then
+    DSYMUTIL="$2"
+  else
+    DSYMUTIL="${ncn_tool_prefix}$2"
+  fi
+fi
+
+
+
 if test -n "$LD"; then
   ac_cv_prog_LD=$LD
 elif test -n "$ac_cv_prog_LD"; then
@@ -9854,6 +13819,147 @@ fi
 
 
 
+if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL=$OTOOL
+elif test -n "$ac_cv_prog_OTOOL"; then
+  OTOOL=$ac_cv_prog_OTOOL
+fi
+
+if test -n "$ac_cv_prog_OTOOL"; then
+  for ncn_progname in otool; do
+    # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # 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_OTOOL="${ncn_progname}"
+    $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
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  done
+fi
+
+for ncn_progname in otool; do
+  if test -n "$ncn_tool_prefix"; then
+    # Extract the first word of "${ncn_tool_prefix}${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_tool_prefix}${ncn_progname}; 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_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # 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_OTOOL="${ncn_tool_prefix}${ncn_progname}"
+    $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
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  if test -z "$ac_cv_prog_OTOOL" && test $build = $host ; then
+    # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_OTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # 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_OTOOL="${ncn_progname}"
+    $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
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  fi
+  test -n "$ac_cv_prog_OTOOL" && break
+done
+
+if test -z "$ac_cv_prog_OTOOL" ; then
+  set dummy otool
+  if test $build = $host ; then
+    OTOOL="$2"
+  else
+    OTOOL="${ncn_tool_prefix}$2"
+  fi
+fi
+
+
+
 if test -n "$READELF"; then
   ac_cv_prog_READELF=$READELF
 elif test -n "$ac_cv_prog_READELF"; then
@@ -9998,6 +14104,150 @@ fi
 
 
 
+
+GDCFLAGS=${GDCFLAGS-${CFLAGS}}
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -plugin option" >&5
+$as_echo_n "checking for -plugin option... " >&6; }
+
+plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+plugin_option=
+for plugin in $plugin_names; do
+  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
+  if test x$plugin_so = x$plugin; then
+    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
+  fi
+  if test x$plugin_so != x$plugin; then
+    plugin_option="--plugin $plugin_so"
+    break
+  fi
+done
+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 "${AR}" = "" ; then
+  as_fn_error $? "Required archive tool 'ar' not found on PATH." "$LINENO" 5
+fi
+touch conftest.c
+${AR} $plugin_option rc conftest.a conftest.c
+if test "$?" != 0; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+$as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+  plugin_option=
+fi
+rm -f conftest.*
+if test -n "$plugin_option"; then
+  PLUGIN_OPTION="$plugin_option"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $plugin_option" >&5
+$as_echo "$plugin_option" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+AR_PLUGIN_OPTION=
+RANLIB_PLUGIN_OPTION=
+if test -n "$PLUGIN_OPTION"; then
+  if $AR --help 2>&1 | grep -q "\--plugin"; then
+    AR_PLUGIN_OPTION="$PLUGIN_OPTION"
+  fi
+  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
+    RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
+  fi
+fi
+
+
+
 # Target tools.
 
 # Check whether --with-build-time-tools was given.
@@ -10817,6 +15067,328 @@ fi
 
 
 
+if test -n "$GDC_FOR_TARGET"; then
+  ac_cv_prog_GDC_FOR_TARGET=$GDC_FOR_TARGET
+elif test -n "$ac_cv_prog_GDC_FOR_TARGET"; then
+  GDC_FOR_TARGET=$ac_cv_prog_GDC_FOR_TARGET
+fi
+
+if test -n "$ac_cv_prog_GDC_FOR_TARGET"; then
+  for ncn_progname in gdc; do
+    # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_GDC_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GDC_FOR_TARGET"; then
+  ac_cv_prog_GDC_FOR_TARGET="$GDC_FOR_TARGET" # 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_GDC_FOR_TARGET="${ncn_progname}"
+    $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
+GDC_FOR_TARGET=$ac_cv_prog_GDC_FOR_TARGET
+if test -n "$GDC_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDC_FOR_TARGET" >&5
+$as_echo "$GDC_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  done
+fi
+
+if test -z "$ac_cv_prog_GDC_FOR_TARGET" && test -n "$with_build_time_tools"; then
+  for ncn_progname in gdc; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5
+$as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; }
+    if test -x $with_build_time_tools/${ncn_progname}; then
+      ac_cv_prog_GDC_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      break
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+  done
+fi
+
+if test -z "$ac_cv_prog_GDC_FOR_TARGET"; then
+  for ncn_progname in gdc; do
+    if test -n "$ncn_target_tool_prefix"; then
+      # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_target_tool_prefix}${ncn_progname}; 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_GDC_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GDC_FOR_TARGET"; then
+  ac_cv_prog_GDC_FOR_TARGET="$GDC_FOR_TARGET" # 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_GDC_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}"
+    $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
+GDC_FOR_TARGET=$ac_cv_prog_GDC_FOR_TARGET
+if test -n "$GDC_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDC_FOR_TARGET" >&5
+$as_echo "$GDC_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    if test -z "$ac_cv_prog_GDC_FOR_TARGET" && test $build = $target ; then
+      # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_GDC_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GDC_FOR_TARGET"; then
+  ac_cv_prog_GDC_FOR_TARGET="$GDC_FOR_TARGET" # 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_GDC_FOR_TARGET="${ncn_progname}"
+    $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
+GDC_FOR_TARGET=$ac_cv_prog_GDC_FOR_TARGET
+if test -n "$GDC_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GDC_FOR_TARGET" >&5
+$as_echo "$GDC_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    test -n "$ac_cv_prog_GDC_FOR_TARGET" && break
+  done
+fi
+
+if test -z "$ac_cv_prog_GDC_FOR_TARGET" ; then
+  set dummy gdc
+  if test $build = $target ; then
+    GDC_FOR_TARGET="$2"
+  else
+    GDC_FOR_TARGET="${ncn_target_tool_prefix}$2"
+  fi
+else
+  GDC_FOR_TARGET="$ac_cv_prog_GDC_FOR_TARGET"
+fi
+
+
+
+if test -n "$GM2_FOR_TARGET"; then
+  ac_cv_prog_GM2_FOR_TARGET=$GM2_FOR_TARGET
+elif test -n "$ac_cv_prog_GM2_FOR_TARGET"; then
+  GM2_FOR_TARGET=$ac_cv_prog_GM2_FOR_TARGET
+fi
+
+if test -n "$ac_cv_prog_GM2_FOR_TARGET"; then
+  for ncn_progname in gm2; do
+    # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_GM2_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GM2_FOR_TARGET"; then
+  ac_cv_prog_GM2_FOR_TARGET="$GM2_FOR_TARGET" # 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_GM2_FOR_TARGET="${ncn_progname}"
+    $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
+GM2_FOR_TARGET=$ac_cv_prog_GM2_FOR_TARGET
+if test -n "$GM2_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GM2_FOR_TARGET" >&5
+$as_echo "$GM2_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  done
+fi
+
+if test -z "$ac_cv_prog_GM2_FOR_TARGET" && test -n "$with_build_time_tools"; then
+  for ncn_progname in gm2; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5
+$as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; }
+    if test -x $with_build_time_tools/${ncn_progname}; then
+      ac_cv_prog_GM2_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      break
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+  done
+fi
+
+if test -z "$ac_cv_prog_GM2_FOR_TARGET"; then
+  for ncn_progname in gm2; do
+    if test -n "$ncn_target_tool_prefix"; then
+      # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_target_tool_prefix}${ncn_progname}; 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_GM2_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GM2_FOR_TARGET"; then
+  ac_cv_prog_GM2_FOR_TARGET="$GM2_FOR_TARGET" # 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_GM2_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}"
+    $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
+GM2_FOR_TARGET=$ac_cv_prog_GM2_FOR_TARGET
+if test -n "$GM2_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GM2_FOR_TARGET" >&5
+$as_echo "$GM2_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    if test -z "$ac_cv_prog_GM2_FOR_TARGET" && test $build = $target ; then
+      # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_GM2_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GM2_FOR_TARGET"; then
+  ac_cv_prog_GM2_FOR_TARGET="$GM2_FOR_TARGET" # 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_GM2_FOR_TARGET="${ncn_progname}"
+    $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
+GM2_FOR_TARGET=$ac_cv_prog_GM2_FOR_TARGET
+if test -n "$GM2_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GM2_FOR_TARGET" >&5
+$as_echo "$GM2_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    test -n "$ac_cv_prog_GM2_FOR_TARGET" && break
+  done
+fi
+
+if test -z "$ac_cv_prog_GM2_FOR_TARGET" ; then
+  set dummy gm2
+  if test $build = $target ; then
+    GM2_FOR_TARGET="$2"
+  else
+    GM2_FOR_TARGET="${ncn_target_tool_prefix}$2"
+  fi
+else
+  GM2_FOR_TARGET="$ac_cv_prog_GM2_FOR_TARGET"
+fi
+
+
+
 cat > conftest.c << \EOF
 #ifdef __GNUC__
   gcc_yay;
@@ -11523,6 +16095,236 @@ fi
 
 
 
+if test -z "$ac_cv_path_DSYMUTIL_FOR_TARGET" ; then
+  if test -n "$with_build_time_tools"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dsymutil in $with_build_time_tools" >&5
+$as_echo_n "checking for dsymutil in $with_build_time_tools... " >&6; }
+    if test -x $with_build_time_tools/dsymutil; then
+      DSYMUTIL_FOR_TARGET=`cd $with_build_time_tools && pwd`/dsymutil
+      ac_cv_path_DSYMUTIL_FOR_TARGET=$DSYMUTIL_FOR_TARGET
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_DSYMUTIL_FOR_TARGET" >&5
+$as_echo "$ac_cv_path_DSYMUTIL_FOR_TARGET" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+  elif test $build != $host && test $have_gcc_for_target = yes; then
+    DSYMUTIL_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=dsymutil`
+    test $DSYMUTIL_FOR_TARGET = dsymutil && DSYMUTIL_FOR_TARGET=
+    test -n "$DSYMUTIL_FOR_TARGET" && ac_cv_path_DSYMUTIL_FOR_TARGET=$DSYMUTIL_FOR_TARGET
+  fi
+fi
+if test -z "$ac_cv_path_DSYMUTIL_FOR_TARGET" && test -n "$gcc_cv_tool_dirs"; then
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; 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_DSYMUTIL_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $DSYMUTIL_FOR_TARGET in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_DSYMUTIL_FOR_TARGET="$DSYMUTIL_FOR_TARGET" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $gcc_cv_tool_dirs
+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_DSYMUTIL_FOR_TARGET="$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
+DSYMUTIL_FOR_TARGET=$ac_cv_path_DSYMUTIL_FOR_TARGET
+if test -n "$DSYMUTIL_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_FOR_TARGET" >&5
+$as_echo "$DSYMUTIL_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_DSYMUTIL_FOR_TARGET" ; then
+
+
+if test -n "$DSYMUTIL_FOR_TARGET"; then
+  ac_cv_prog_DSYMUTIL_FOR_TARGET=$DSYMUTIL_FOR_TARGET
+elif test -n "$ac_cv_prog_DSYMUTIL_FOR_TARGET"; then
+  DSYMUTIL_FOR_TARGET=$ac_cv_prog_DSYMUTIL_FOR_TARGET
+fi
+
+if test -n "$ac_cv_prog_DSYMUTIL_FOR_TARGET"; then
+  for ncn_progname in dsymutil; do
+    # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_DSYMUTIL_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL_FOR_TARGET"; then
+  ac_cv_prog_DSYMUTIL_FOR_TARGET="$DSYMUTIL_FOR_TARGET" # 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_DSYMUTIL_FOR_TARGET="${ncn_progname}"
+    $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
+DSYMUTIL_FOR_TARGET=$ac_cv_prog_DSYMUTIL_FOR_TARGET
+if test -n "$DSYMUTIL_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_FOR_TARGET" >&5
+$as_echo "$DSYMUTIL_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  done
+fi
+
+if test -z "$ac_cv_prog_DSYMUTIL_FOR_TARGET" && test -n "$with_build_time_tools"; then
+  for ncn_progname in dsymutil; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5
+$as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; }
+    if test -x $with_build_time_tools/${ncn_progname}; then
+      ac_cv_prog_DSYMUTIL_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      break
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+  done
+fi
+
+if test -z "$ac_cv_prog_DSYMUTIL_FOR_TARGET"; then
+  for ncn_progname in dsymutil; do
+    if test -n "$ncn_target_tool_prefix"; then
+      # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_target_tool_prefix}${ncn_progname}; 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_DSYMUTIL_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL_FOR_TARGET"; then
+  ac_cv_prog_DSYMUTIL_FOR_TARGET="$DSYMUTIL_FOR_TARGET" # 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_DSYMUTIL_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}"
+    $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
+DSYMUTIL_FOR_TARGET=$ac_cv_prog_DSYMUTIL_FOR_TARGET
+if test -n "$DSYMUTIL_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_FOR_TARGET" >&5
+$as_echo "$DSYMUTIL_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    if test -z "$ac_cv_prog_DSYMUTIL_FOR_TARGET" && test $build = $target ; then
+      # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_DSYMUTIL_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DSYMUTIL_FOR_TARGET"; then
+  ac_cv_prog_DSYMUTIL_FOR_TARGET="$DSYMUTIL_FOR_TARGET" # 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_DSYMUTIL_FOR_TARGET="${ncn_progname}"
+    $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
+DSYMUTIL_FOR_TARGET=$ac_cv_prog_DSYMUTIL_FOR_TARGET
+if test -n "$DSYMUTIL_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL_FOR_TARGET" >&5
+$as_echo "$DSYMUTIL_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    test -n "$ac_cv_prog_DSYMUTIL_FOR_TARGET" && break
+  done
+fi
+
+if test -z "$ac_cv_prog_DSYMUTIL_FOR_TARGET" ; then
+  set dummy dsymutil
+  if test $build = $target ; then
+    DSYMUTIL_FOR_TARGET="$2"
+  else
+    DSYMUTIL_FOR_TARGET="${ncn_target_tool_prefix}$2"
+  fi
+else
+  DSYMUTIL_FOR_TARGET="$ac_cv_prog_DSYMUTIL_FOR_TARGET"
+fi
+
+else
+  DSYMUTIL_FOR_TARGET=$ac_cv_path_DSYMUTIL_FOR_TARGET
+fi
+
+
+
+
 if test -z "$ac_cv_path_LD_FOR_TARGET" ; then
   if test -n "$with_build_time_tools"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld in $with_build_time_tools" >&5
@@ -12673,6 +17475,236 @@ fi
 
 
 
+if test -z "$ac_cv_path_OTOOL_FOR_TARGET" ; then
+  if test -n "$with_build_time_tools"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for otool in $with_build_time_tools" >&5
+$as_echo_n "checking for otool in $with_build_time_tools... " >&6; }
+    if test -x $with_build_time_tools/otool; then
+      OTOOL_FOR_TARGET=`cd $with_build_time_tools && pwd`/otool
+      ac_cv_path_OTOOL_FOR_TARGET=$OTOOL_FOR_TARGET
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_OTOOL_FOR_TARGET" >&5
+$as_echo "$ac_cv_path_OTOOL_FOR_TARGET" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+  elif test $build != $host && test $have_gcc_for_target = yes; then
+    OTOOL_FOR_TARGET=`$GCC_FOR_TARGET --print-prog-name=otool`
+    test $OTOOL_FOR_TARGET = otool && OTOOL_FOR_TARGET=
+    test -n "$OTOOL_FOR_TARGET" && ac_cv_path_OTOOL_FOR_TARGET=$OTOOL_FOR_TARGET
+  fi
+fi
+if test -z "$ac_cv_path_OTOOL_FOR_TARGET" && test -n "$gcc_cv_tool_dirs"; then
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; 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_OTOOL_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $OTOOL_FOR_TARGET in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_OTOOL_FOR_TARGET="$OTOOL_FOR_TARGET" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $gcc_cv_tool_dirs
+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_OTOOL_FOR_TARGET="$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
+OTOOL_FOR_TARGET=$ac_cv_path_OTOOL_FOR_TARGET
+if test -n "$OTOOL_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL_FOR_TARGET" >&5
+$as_echo "$OTOOL_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_path_OTOOL_FOR_TARGET" ; then
+
+
+if test -n "$OTOOL_FOR_TARGET"; then
+  ac_cv_prog_OTOOL_FOR_TARGET=$OTOOL_FOR_TARGET
+elif test -n "$ac_cv_prog_OTOOL_FOR_TARGET"; then
+  OTOOL_FOR_TARGET=$ac_cv_prog_OTOOL_FOR_TARGET
+fi
+
+if test -n "$ac_cv_prog_OTOOL_FOR_TARGET"; then
+  for ncn_progname in otool; do
+    # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_OTOOL_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL_FOR_TARGET"; then
+  ac_cv_prog_OTOOL_FOR_TARGET="$OTOOL_FOR_TARGET" # 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_OTOOL_FOR_TARGET="${ncn_progname}"
+    $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
+OTOOL_FOR_TARGET=$ac_cv_prog_OTOOL_FOR_TARGET
+if test -n "$OTOOL_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL_FOR_TARGET" >&5
+$as_echo "$OTOOL_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  done
+fi
+
+if test -z "$ac_cv_prog_OTOOL_FOR_TARGET" && test -n "$with_build_time_tools"; then
+  for ncn_progname in otool; do
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5
+$as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; }
+    if test -x $with_build_time_tools/${ncn_progname}; then
+      ac_cv_prog_OTOOL_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+      break
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+  done
+fi
+
+if test -z "$ac_cv_prog_OTOOL_FOR_TARGET"; then
+  for ncn_progname in otool; do
+    if test -n "$ncn_target_tool_prefix"; then
+      # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_target_tool_prefix}${ncn_progname}; 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_OTOOL_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL_FOR_TARGET"; then
+  ac_cv_prog_OTOOL_FOR_TARGET="$OTOOL_FOR_TARGET" # 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_OTOOL_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}"
+    $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
+OTOOL_FOR_TARGET=$ac_cv_prog_OTOOL_FOR_TARGET
+if test -n "$OTOOL_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL_FOR_TARGET" >&5
+$as_echo "$OTOOL_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    if test -z "$ac_cv_prog_OTOOL_FOR_TARGET" && test $build = $target ; then
+      # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+set dummy ${ncn_progname}; 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_OTOOL_FOR_TARGET+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OTOOL_FOR_TARGET"; then
+  ac_cv_prog_OTOOL_FOR_TARGET="$OTOOL_FOR_TARGET" # 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_OTOOL_FOR_TARGET="${ncn_progname}"
+    $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
+OTOOL_FOR_TARGET=$ac_cv_prog_OTOOL_FOR_TARGET
+if test -n "$OTOOL_FOR_TARGET"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL_FOR_TARGET" >&5
+$as_echo "$OTOOL_FOR_TARGET" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+    fi
+    test -n "$ac_cv_prog_OTOOL_FOR_TARGET" && break
+  done
+fi
+
+if test -z "$ac_cv_prog_OTOOL_FOR_TARGET" ; then
+  set dummy otool
+  if test $build = $target ; then
+    OTOOL_FOR_TARGET="$2"
+  else
+    OTOOL_FOR_TARGET="${ncn_target_tool_prefix}$2"
+  fi
+else
+  OTOOL_FOR_TARGET="$ac_cv_prog_OTOOL_FOR_TARGET"
+fi
+
+else
+  OTOOL_FOR_TARGET=$ac_cv_path_OTOOL_FOR_TARGET
+fi
+
+
+
+
 if test -z "$ac_cv_path_RANLIB_FOR_TARGET" ; then
   if test -n "$with_build_time_tools"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ranlib in $with_build_time_tools" >&5
@@ -14081,6 +19113,37 @@ else
   fi
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target dsymutil" >&5
+$as_echo_n "checking where to find the target dsymutil... " >&6; }
+if test "x${build}" != "x${host}" ; then
+  if expr "x$DSYMUTIL_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $DSYMUTIL_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  else
+    # Canadian cross, just use what we found
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+else
+  if expr "x$DSYMUTIL_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $DSYMUTIL_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  elif test "x$target" = "x$host"; then
+    # We can use an host tool
+    DSYMUTIL_FOR_TARGET='$(DSYMUTIL)'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5
+$as_echo "host tool" >&6; }
+  else
+    # We need a cross tool
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target gcc" >&5
 $as_echo_n "checking where to find the target gcc... " >&6; }
 if test "x${build}" != "x${host}" ; then
@@ -14213,6 +19276,96 @@ else
   fi
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target gdc" >&5
+$as_echo_n "checking where to find the target gdc... " >&6; }
+if test "x${build}" != "x${host}" ; then
+  if expr "x$GDC_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $GDC_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  else
+    # Canadian cross, just use what we found
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+else
+  ok=yes
+  case " ${configdirs} " in
+    *" gcc "*) ;;
+    *) ok=no ;;
+  esac
+  case ,${enable_languages}, in
+    *,d,*) ;;
+    *) ok=no ;;
+  esac
+  if test $ok = yes; then
+    # An in-tree tool is available and we can use it
+    GDC_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: just compiled" >&5
+$as_echo "just compiled" >&6; }
+  elif expr "x$GDC_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $GDC_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  elif test "x$target" = "x$host"; then
+    # We can use an host tool
+    GDC_FOR_TARGET='$(GDC)'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5
+$as_echo "host tool" >&6; }
+  else
+    # We need a cross tool
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target gm2" >&5
+$as_echo_n "checking where to find the target gm2... " >&6; }
+if test "x${build}" != "x${host}" ; then
+  if expr "x$GM2_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $GM2_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  else
+    # Canadian cross, just use what we found
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+else
+  ok=yes
+  case " ${configdirs} " in
+    *" gcc "*) ;;
+    *) ok=no ;;
+  esac
+  case ,${enable_languages}, in
+    *,m2,*) ;;
+    *) ok=no ;;
+  esac
+  if test $ok = yes; then
+    # An in-tree tool is available and we can use it
+    GM2_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gm2 -B$$r/$(HOST_SUBDIR)/gcc/'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: just compiled" >&5
+$as_echo "just compiled" >&6; }
+  elif expr "x$GM2_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $GM2_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  elif test "x$target" = "x$host"; then
+    # We can use an host tool
+    GM2_FOR_TARGET='$(GM2)'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5
+$as_echo "host tool" >&6; }
+  else
+    # We need a cross tool
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target ld" >&5
 $as_echo_n "checking where to find the target ld... " >&6; }
 if test "x${build}" != "x${host}" ; then
@@ -14412,6 +19565,37 @@ else
   fi
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target otool" >&5
+$as_echo_n "checking where to find the target otool... " >&6; }
+if test "x${build}" != "x${host}" ; then
+  if expr "x$OTOOL_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $OTOOL_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  else
+    # Canadian cross, just use what we found
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+else
+  if expr "x$OTOOL_FOR_TARGET" : "x/" > /dev/null; then
+    # We already found the complete path
+    ac_dir=`dirname $OTOOL_FOR_TARGET`
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+$as_echo "pre-installed in $ac_dir" >&6; }
+  elif test "x$target" = "x$host"; then
+    # We can use an host tool
+    OTOOL_FOR_TARGET='$(OTOOL)'
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5
+$as_echo "host tool" >&6; }
+  else
+    # We need a cross tool
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+$as_echo "pre-installed" >&6; }
+  fi
+fi
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target ranlib" >&5
 $as_echo_n "checking where to find the target ranlib... " >&6; }
 if test "x${build}" != "x${host}" ; then
@@ -14743,10 +19927,12 @@ fi
 # Specify what files to not compare during bootstrap.
 
 compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"
+compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/M2Version*"
+compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/SYSTEM*"
+compare_exclusions="$compare_exclusions | gcc/m2/gm2version*"
 case "$target" in
   hppa*64*-*-hpux*) ;;
-  hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/* | gcc/function-tests.o" ;;
-  powerpc*-ibm-aix*) compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | *libgomp*\$(objext)" ;;
+  powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;;
 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.20200303/configure.ac ./configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/configure.ac	2020-03-03 02:13:23.000000000 +0000
+++ ./configure.ac	2026-03-05 02:15:54.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, 2022 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
@@ -23,6 +23,8 @@ m4_include(config/acx.m4)
 m4_include(config/override.m4)
 m4_include(config/proginstall.m4)
 m4_include(config/elf.m4)
+m4_include(config/ax_cxx_compile_stdcxx.m4)
+m4_include(config/gcc-plugin.m4)
 m4_include([libtool.m4])
 m4_include([ltoptions.m4])
 m4_include([ltsugar.m4])
@@ -30,26 +32,10 @@ m4_include([ltversion.m4])
 m4_include([lt~obsolete.m4])
 m4_include([config/isl.m4])
 
-AC_INIT(move-if-change)
+AC_INIT
+AC_CONFIG_SRCDIR([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
@@ -85,14 +71,14 @@ ACX_NONCANONICAL_TARGET
 
 dnl Autoconf 2.5x and later will set a default program prefix if
 dnl --target was used, even if it was the same as --host.  Disable
-dnl that behavior.  This must be done before AC_CANONICAL_SYSTEM
+dnl that behavior.  This must be done before AC_CANONICAL_TARGET
 dnl to take effect.
 test "$host_noncanonical" = "$target_noncanonical" &&
   test "$program_prefix$program_suffix$program_transform_name" = \
     NONENONEs,x,x, &&
   program_transform_name=s,y,y,
 
-AC_CANONICAL_SYSTEM
+AC_CANONICAL_TARGET
 AC_ARG_PROGRAM
 
 m4_pattern_allow([^AS_FOR_TARGET$])dnl
@@ -148,7 +134,7 @@ build_tools="build-texinfo build-flex bu
 
 # these libraries are used by various programs built for the host environment
 #f
-host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libdecnumber gmp mpfr mpc isl libelf libiconv libctf"
+host_libs="gettext libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libiconv libctf libsframe libgrust "
 
 # these tools are built for the host environment
 # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
@@ -156,7 +142,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 gm2tools gotools c++tools"
 
 # 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)
@@ -166,8 +152,6 @@ target_libraries="target-libgcc \
 		target-libgloss \
 		target-newlib \
 		target-libgomp \
-		target-liboffloadmic \
-		target-libhsail-rt \
 		target-libatomic \
 		target-libitm \
 		target-libstdc++-v3 \
@@ -179,7 +163,11 @@ target_libraries="target-libgcc \
 		target-libffi \
 		target-libobjc \
 		target-libada \
-		target-libgo"
+		target-libgm2 \
+		target-libgo \
+		target-libgrust \
+		target-libphobos \
+		target-zlib"
 
 # these tools are built using the target libraries, and are intended to
 # run only in the target environment
@@ -268,6 +256,9 @@ if test x$with_system_readline = xyes ;
   noconfigdirs="$noconfigdirs readline"
 fi
 
+AC_ARG_WITH(zstd,
+[AS_HELP_STRING([--with-zstd], [Support zstd compressed debug sections (default=auto)])])
+
 # some tools are so dependent upon X11 that if we're not building with X, 
 # it's not even worth trying to configure, much less build, that tool.
 
@@ -320,6 +311,14 @@ AC_ARG_ENABLE(offload-targets,
   fi
 ], [enable_offload_targets=])
 
+AC_ARG_ENABLE(offload-defaulted,
+[AS_HELP_STRING([--enable-offload-defaulted]
+		[If enabled, configured but not installed offload compilers and
+		libgomp plugins are silently ignored.  Useful for distribution
+		compilers where those are in separate optional packages.])],
+[enable_offload_defaulted=$enableval],
+[enable_offload_defaulted=])
+
 # Handle --enable-gold, --enable-ld.
 # --disable-gold [--enable-ld]
 #     Build only ld.  Default option.
@@ -352,7 +351,7 @@ case "${ENABLE_GOLD}" in
       *-*-elf* | *-*-sysv4* | *-*-unixware* | *-*-eabi* | hppa*64*-*-hpux* \
       | *-*-linux* | *-*-gnu* | frv-*-uclinux* | *-*-irix5* | *-*-irix6* \
       | *-*-netbsd* | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* \
-      | *-*-solaris2* | *-*-nto* | *-*-nacl*)
+      | *-*-solaris2* | *-*-nto* | *-*-nacl* | *-*-haiku*)
         case "${target}" in
           *-*-linux*aout* | *-*-linux*oldld*)
             ;;
@@ -408,6 +407,21 @@ case "${ENABLE_LD}" in
     ;;
 esac
 
+AC_ARG_ENABLE(gprofng,
+[AS_HELP_STRING([[--disable-gprofng]], [do not build gprofng])],
+enable_gprofng=$enableval,
+enable_gprofng=yes)
+if test "$enable_gprofng" = "yes"; then
+  case "${target}" in
+    *-musl*)
+      ;;
+    x86_64-*-linux* | i?86-*-linux* | aarch64-*-linux* | riscv64-*-linux*)
+    configdirs="$configdirs gprofng"
+    ;;
+  esac
+fi
+
+
 # PR gas/19109
 # Decide the default method for compressing debug sections.
 # Provide a configure time option to override our default.
@@ -421,6 +435,12 @@ AC_ARG_ENABLE(compressed_debug_sections,
   fi
 ], [enable_compressed_debug_sections=])
 
+# Select default compression algorithm.
+AC_ARG_ENABLE(default_compressed_debug_sections_algorithm,
+[AS_HELP_STRING([--enable-default-compressed-debug-sections-algorithm={zlib,zstd}],
+		[Default compression algorithm for --enable-compressed-debug-sections.])],
+[], [default_compressed_debug_sections_algorithm=])
+
 # Configure extra directories which are host specific
 
 case "${host}" in
@@ -442,6 +462,18 @@ case "${host}" in
     ;;
 esac
 
+# Default to --disable-year2038 until we can handle differences between
+# projects that use gnulib (which understands year 2038) and projects that
+# do not (like BFD).
+AC_ARG_ENABLE(year2038,
+AS_HELP_STRING([--enable-year2038],
+  [enable support for timestamps past the year 2038]),
+ENABLE_YEAR2038=$enableval,
+ENABLE_YEAR2038=no)
+enable_year2038=
+if test "${ENABLE_YEAR2038}" = "no" ; then
+  enable_year2038=no
+fi
 
 AC_ARG_ENABLE(libquadmath,
 AS_HELP_STRING([--disable-libquadmath],
@@ -472,6 +504,14 @@ if test "${ENABLE_LIBADA}" != "yes" ; th
   noconfigdirs="$noconfigdirs gnattools"
 fi
 
+AC_ARG_ENABLE(libgm2,
+[AS_HELP_STRING([--enable-libgm2], [build libgm2 directory])],
+ENABLE_LIBGM2=$enableval,
+ENABLE_LIBGM2=no)
+if test "${ENABLE_LIBGM2}" != "yes" ; then
+  noconfigdirs="$noconfigdirs gm2tools"
+fi
+
 AC_ARG_ENABLE(libssp,
 [AS_HELP_STRING([--enable-libssp], [build libssp directory])],
 ENABLE_LIBSSP=$enableval,
@@ -486,42 +526,6 @@ ENABLE_LIBSTDCXX=default)
   noconfigdirs="$noconfigdirs target-libstdc++-v3"
 fi]
 
-# If this is accelerator compiler and its target is intelmic we enable
-# target liboffloadmic by default.  If this is compiler with offloading
-# for intelmic we enable host liboffloadmic by default.  Otherwise
-# liboffloadmic is disabled by default.
-AC_ARG_ENABLE([liboffloadmic],
-AC_HELP_STRING([[--enable-liboffloadmic[=ARG]]],
-	       [build liboffloadmic @<:@ARG={no,host,target}@:>@]),
-[case "$enableval" in
-  no | host | target)
-    enable_liboffloadmic=$enableval ;;
-  *)
-    AC_MSG_ERROR([--enable-liboffloadmic=no/host/target]) ;;
-esac],
-[if test x"$enable_as_accelerator_for" != x; then
-  case "${target}" in
-    *-intelmic-* | *-intelmicemul-*)
-      enable_liboffloadmic=target
-      extra_liboffloadmic_configure_flags="--enable-liboffloadmic=target"
-      ;;
-    *)
-      enable_liboffloadmic=no
-      ;;
-  esac
-else
-  case "${enable_offload_targets}" in
-    *-intelmic-* | *-intelmicemul-*)
-      enable_liboffloadmic=host
-      extra_liboffloadmic_configure_flags="--enable-liboffloadmic=host"
-      ;;
-    *)
-      enable_liboffloadmic=no
-      ;;
-    esac
-fi])
-AC_SUBST(extra_liboffloadmic_configure_flags)
-
 # Enable libgomp by default on hosted POSIX systems, and a few others.
 if test x$enable_libgomp = x ; then
     case "${target}" in
@@ -533,7 +537,7 @@ if test x$enable_libgomp = x ; then
 	;;
     *-*-darwin* | *-*-aix*)
 	;;
-    nvptx*-*-*)
+    nvptx*-*-* | amdgcn*-*-*)
 	;;
     *)
 	noconfigdirs="$noconfigdirs target-libgomp"
@@ -557,22 +561,6 @@ if test -d ${srcdir}/libatomic; then
     fi
 fi
 
-# Disable liboffloadmic on unsupported systems.
-if test -d ${srcdir}/liboffloadmic; then
-    if test x$enable_liboffloadmic != xno; then
-	AC_MSG_CHECKING([for liboffloadmic support])
-	if (srcdir=${srcdir}/liboffloadmic; \
-		. ${srcdir}/configure.tgt; \
-		test -n "$UNSUPPORTED")
-	then
-	    AC_MSG_RESULT([no])
-	    noconfigdirs="$noconfigdirs target-liboffloadmic"
-	else
-	    AC_MSG_RESULT([yes])
-	fi
-    fi
-fi
-
 # Disable libitm on unsupported systems.
 if test -d ${srcdir}/libitm; then
     if test x$enable_libitm = x; then
@@ -621,26 +609,6 @@ if test -d ${srcdir}/libvtv; then
     fi
 fi
 
-
-# Disable libhsail-rt on unsupported systems.
-if test -d ${srcdir}/libhsail-rt; then
-    if test x$enable_libhsail_rt = x; then
-        AC_MSG_CHECKING([for libhsail-rt support])
-        if (srcdir=${srcdir}/libhsail-rt; \
-                . ${srcdir}/configure.tgt; \
-                test -n "$UNSUPPORTED")
-        then
-            AC_MSG_RESULT([no])
-            unsupported_languages="$unsupported_languages brig"
-            # This implicitly disables also target-libhsail-rt as it won't
-            # get added to the build without BRIG FE.
-        else
-            AC_MSG_RESULT([yes])
-        fi
-    fi
-fi
-
-
 # Disable libquadmath for some systems.
 case "${target}" in
   avr-*-*)
@@ -659,9 +627,16 @@ case "${target}" in
     # No hosted I/O support.
     noconfigdirs="$noconfigdirs target-libssp"
     ;;
+  bpf-*-*)
+    noconfigdirs="$noconfigdirs target-libssp"
+    ;;
   powerpc-*-aix* | rs6000-*-aix*)
     noconfigdirs="$noconfigdirs target-libssp"
     ;;
+  pru-*-*)
+    # No hosted I/O support.
+    noconfigdirs="$noconfigdirs target-libssp"
+    ;;
   rl78-*-*)
     # libssp uses a misaligned load to trigger a fault, but the RL78
     # doesn't fault for those - instead, it gives a build-time error
@@ -675,13 +650,17 @@ case "${target}" in
 esac
 
 # Disable libstdc++-v3 for some systems.
-# Allow user to override this if they pass --enable-libstdc++-v3
+# Allow user to override this if they pass --enable-libstdcxx
 if test "${ENABLE_LIBSTDCXX}" = "default" ; then
   case "${target}" in
     *-*-vxworks*)
       # VxWorks uses the Dinkumware C++ library.
       noconfigdirs="$noconfigdirs target-libstdc++-v3"
       ;;
+    amdgcn*-*-*)
+      # Not ported/fails to build when using newlib.
+      noconfigdirs="$noconfigdirs target-libstdc++-v3"
+      ;;
     arm*-wince-pe*)
       # the C++ libraries don't build on top of CE's C libraries
       noconfigdirs="$noconfigdirs target-libstdc++-v3"
@@ -689,18 +668,83 @@ if test "${ENABLE_LIBSTDCXX}" = "default
     avr-*-*)
       noconfigdirs="$noconfigdirs target-libstdc++-v3"
       ;;
+    bpf-*-*)
+      noconfigdirs="$noconfigdirs target-libstdc++-v3"
+      ;;
     ft32-*-*)
       noconfigdirs="$noconfigdirs target-libstdc++-v3"
       ;;
   esac
 fi
 
+# Disable C++ on systems where it is known to not work.
+# For testing, you can override this with --enable-languages=c++.
+case ,${enable_languages}, in
+  *,c++,*)
+    ;;
+  *)
+      case "${target}" in
+        bpf-*-*)
+          unsupported_languages="$unsupported_languages c++"
+          ;;
+      esac
+      ;;
+esac
+
+# Disable Objc on systems where it is known to not work.
+# For testing, you can override this with --enable-languages=objc.
+case ,${enable_languages}, in
+  *,objc,*)
+    ;;
+  *)
+      case "${target}" in
+        bpf-*-*)
+          unsupported_languages="$unsupported_languages objc"
+          ;;
+      esac
+      ;;
+esac
+
+# Disable D on systems where it is known to not work.
+# For testing, you can override this with --enable-languages=d.
+case ,${enable_languages}, in
+  *,d,*)
+    ;;
+  *)
+    case "${target}" in
+      bpf-*-*)
+	unsupported_languages="$unsupported_languages d"
+	;;
+    esac
+    ;;
+esac
+
+# Disable libphobos on unsupported systems.
+# For testing, you can override this with --enable-libphobos.
+if test -d ${srcdir}/libphobos; then
+    if test x$enable_libphobos = x; then
+	AC_MSG_CHECKING([for libphobos support])
+	if (srcdir=${srcdir}/libphobos; \
+		. ${srcdir}/configure.tgt; \
+		test "$LIBPHOBOS_SUPPORTED" != "yes")
+	then
+	    AC_MSG_RESULT([no])
+	    noconfigdirs="$noconfigdirs target-libphobos"
+	else
+	    AC_MSG_RESULT([yes])
+	fi
+    fi
+fi
+
 # Disable Fortran for some systems.
 case "${target}" in
   mmix-*-*)
     # See <http://gcc.gnu.org/ml/gcc-patches/2004-11/msg00572.html>.
     unsupported_languages="$unsupported_languages fortran"
     ;;
+  bpf-*-*)
+    unsupported_languages="$unsupported_languages fortran"
+    ;;
 esac
 
 # Disable libffi for some systems.
@@ -747,6 +791,9 @@ case "${target}" in
   arm*-*-symbianelf*)
     noconfigdirs="$noconfigdirs target-libffi"
     ;;
+  bpf-*-*)
+    noconfigdirs="$noconfigdirs target-libffi"
+    ;;
   cris-*-* | crisv32-*-*)
     case "${target}" in
       *-*-linux*)
@@ -793,11 +840,27 @@ esac
 # Disable the go frontend on systems where it is known to not work. Please keep
 # this in sync with contrib/config-list.mk.
 case "${target}" in
-*-*-darwin* | *-*-cygwin* | *-*-mingw*)
+*-*-darwin* | *-*-cygwin* | *-*-mingw* | bpf-* )
     unsupported_languages="$unsupported_languages go"
     ;;
 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
@@ -809,6 +872,9 @@ if test x$enable_libgo = x; then
     *-*-cygwin* | *-*-mingw*)
 	noconfigdirs="$noconfigdirs target-libgo"
 	;;
+    bpf-*-*)
+        noconfigdirs="$noconfigdirs target-libgo"
+        ;;
     esac
 fi
 
@@ -828,12 +894,24 @@ case "${target}" in
   cris-*-* | crisv32-*-*)
     libgloss_dir=cris
     ;;
+  kvx-*-elf)
+    libgloss_dir=kvx-elf
+    ;;
+  kvx-*-mbr)
+    libgloss_dir=kvx-mbr
+    ;;
+  kvx-*-cos)
+    libgloss_dir=kvx-cos
+    ;;
   hppa*-*-*)
     libgloss_dir=pa
     ;;
   i[[3456789]]86-*-*)
     libgloss_dir=i386
     ;;
+  loongarch*-*-*)
+    libgloss_dir=loongarch
+    ;;
   m68hc11-*-*|m6811-*-*|m68hc12-*-*|m6812-*-*)
     libgloss_dir=m68hc11
     ;;
@@ -846,6 +924,9 @@ case "${target}" in
   powerpc*-*-*)
     libgloss_dir=rs6000
     ;;
+  pru-*-*)
+    libgloss_dir=pru
+    ;;
   sparc*-*-*)
     libgloss_dir=sparc
     ;;
@@ -877,6 +958,9 @@ case "${target}" in
   sparc-*-sunos4*)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
     ;;
+  bpf-*-*)
+    noconfigdirs="$noconfigdirs target-newlib target-libgloss"
+    ;;
   *-*-aix*)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
     ;;
@@ -918,6 +1002,13 @@ case "${target}" in
     ;;
 esac
 
+# The ARM simulator has been deprecated for all ARM targets.
+case "${target}" in
+  arm*-*-*)
+    noconfigdirs="$noconfigdirs sim"
+    ;;
+esac
+
 case "${target}" in
   *-*-chorusos)
     ;;
@@ -925,9 +1016,11 @@ case "${target}" in
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
     noconfigdirs="$noconfigdirs sim target-rda"
     ;;
+  amdgcn*-*-*)
+    ;;
   arm-*-darwin*)
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
-    noconfigdirs="$noconfigdirs sim target-rda"
+    noconfigdirs="$noconfigdirs target-rda"
     ;;
   powerpc-*-darwin*)
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
@@ -948,7 +1041,8 @@ case "${target}" in
   *-*-dragonfly*)
     ;;
   *-*-freebsd*)
-    if test "x$with_gmp" = x && test "x$with_gmp_dir" = x \
+    if test "x$with_gmp" = x \
+	&& ! test -d ${srcdir}/gmp \
 	&& test -f /usr/local/include/gmp.h; then
       with_gmp=/usr/local
     fi
@@ -988,6 +1082,9 @@ case "${target}" in
     # newlib is not 64 bit ready
     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
     ;;
+  bpf-*-*)
+    noconfigdirs="$noconfigdirs target-libobjc target-libbacktrace"
+    ;;
   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
     noconfigdirs="$noconfigdirs tcl tk itcl libgui sim"
     ;;
@@ -1107,6 +1204,9 @@ case "${target}" in
   i[[3456789]]86-*-rdos*)
     noconfigdirs="$noconfigdirs gdb"
     ;;
+  kvx-*-*)
+    noconfigdirs="$noconfigdirs gdb gdbserver sim"
+    ;;
   mmix-*-*)
     noconfigdirs="$noconfigdirs gdb"
     ;;
@@ -1117,6 +1217,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"
@@ -1203,6 +1306,11 @@ case "${target}" in
   wasm32-*-*)
     noconfigdirs="$noconfigdirs ld"
     ;;
+  loongarch*-*-linux*)
+    ;;
+  loongarch*-*-*)
+    noconfigdirs="$noconfigdirs gprof"
+    ;;
 esac
 
 # If we aren't building newlib, then don't build libgloss, since libgloss
@@ -1229,16 +1337,13 @@ case "${host}" in
   alpha*-linux*)
     host_makefile_frag="config/mh-alpha-linux"
     ;;
-  hppa*-hp-hpux10*)
-    host_makefile_frag="config/mh-pa-hpux10"
-    ;;
   hppa*-hp-hpux*)
     host_makefile_frag="config/mh-pa"
     ;;
   hppa*-*)	
     host_makefile_frag="config/mh-pa"
     ;;
-  *-*-darwin*)
+  i?86-*-darwin[[89]]* | i?86-*-darwin1[[0-7]]* | powerpc*-*-darwin*)
     host_makefile_frag="config/mh-darwin"
     ;;
   powerpc-*-aix*)
@@ -1254,9 +1359,12 @@ if test "${build}" != "${host}" ; then
   AR_FOR_BUILD=${AR_FOR_BUILD-ar}
   AS_FOR_BUILD=${AS_FOR_BUILD-as}
   CC_FOR_BUILD=${CC_FOR_BUILD-gcc}
+  CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CC_FOR_BUILD) -E}"
   CXX_FOR_BUILD=${CXX_FOR_BUILD-g++}
+  DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil}
   GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran}
   GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo}
+  GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc}
   DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool}
   LD_FOR_BUILD=${LD_FOR_BUILD-ld}
   NM_FOR_BUILD=${NM_FOR_BUILD-nm}
@@ -1268,8 +1376,10 @@ else
   AS_FOR_BUILD="\$(AS)"
   CC_FOR_BUILD="\$(CC)"
   CXX_FOR_BUILD="\$(CXX)"
+  DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)"
   GFORTRAN_FOR_BUILD="\$(GFORTRAN)"
   GOC_FOR_BUILD="\$(GOC)"
+  GDC_FOR_BUILD="\$(GDC)"
   DLLTOOL_FOR_BUILD="\$(DLLTOOL)"
   LD_FOR_BUILD="\$(LD)"
   NM_FOR_BUILD="\$(NM)"
@@ -1278,7 +1388,7 @@ else
   WINDMC_FOR_BUILD="\$(WINDMC)"
 fi
 
-AC_PROG_CC
+AC_PROG_CC_C99
 AC_PROG_CXX
 
 # We must set the default linker to the linker used by gcc for the correct
@@ -1321,6 +1431,8 @@ int main() {}])],
 fi
 
 ACX_PROG_GNAT
+ACX_PROG_GDC
+ACX_PROG_CARGO
 ACX_PROG_CMP_IGNORE_INITIAL
 
 AC_ARG_ENABLE([bootstrap],
@@ -1366,17 +1478,98 @@ case "$have_compiler:$host:$target:$enab
     ;;
 esac
 
-# When bootstrapping with GCC, build stage 1 in C++98 mode to ensure that a
-# C++98 compiler can still start the bootstrap.
+# When bootstrapping with GCC, build stage 1 in C++14 mode to ensure that a
+# C++14 compiler can still start the bootstrap.  Otherwise, if building GCC,
+# require C++14 (or higher).
 if test "$enable_bootstrap:$GXX" = "yes:yes"; then
-  CXX="$CXX -std=gnu++98"
+  CXX="$CXX -std=c++14"
+elif test "$have_compiler" = yes; then
+  AX_CXX_COMPILE_STDCXX(14)
+
+  if test "${build}" != "${host}"; then
+    AX_CXX_COMPILE_STDCXX(14, [], [], [_FOR_BUILD])
+  fi
 fi
 
+AC_ARG_ENABLE([pgo-build],
+[AS_HELP_STRING([--enable-pgo-build[[=lto]]],
+		[enable the PGO build])],
+[enable_pgo_build=$enableval],
+[enable_pgo_build=no])
+
+# Issue errors and warnings for invalid/strange PGO build combinations.
+case "$have_compiler:$host:$target:$enable_pgo_build" in
+  *:*:*:no) ;;
+
+  # Allow the PGO build only if we aren't building a compiler and
+  # we are in a native configuration.
+  no:$build:$build:yes | no:$build:$build:lto) ;;
+
+  # Disallow the PGO bootstrap if we are building a compiler.
+  yes:*:*:yes | yes:*:*:lto)
+    AC_MSG_ERROR([cannot perform the PGO bootstrap when building a compiler]) ;;
+
+  *)
+    AC_MSG_ERROR([invalid option for --enable-pgo-build])
+    ;;
+esac
+
+if test "$enable_pgo_build" != "no"; then
+  AC_MSG_CHECKING([whether the compiler supports -fprofile-generate])
+  old_CFLAGS="$CFLAGS"
+  PGO_BUILD_GEN_CFLAGS="-fprofile-generate"
+  CFLAGS="$CFLAGS $PGO_BUILD_CFLAGS"
+  AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo;])],,
+		    [PGO_BUILD_GEN_CFLAGS=])
+  CFLAGS="$old_CFLAGS"
+  if test -n "$PGO_BUILD_GEN_CFLAGS"; then
+    AC_MSG_RESULT([yes])
+    PGO_BUILD_USE_CFLAGS="-fprofile-use"
+  else
+    AC_MSG_RESULT([no])
+    AC_MSG_ERROR([cannot perform the PGO build without -fprofile-generate])
+  fi
+
+  if test "$enable_pgo_build" = "lto"; then
+    AC_MSG_CHECKING([whether the compiler supports -flto=jobserver -ffat-lto-objects])
+    old_CFLAGS="$CFLAGS"
+    PGO_BUILD_LTO_CFLAGS="-flto=jobserver -ffat-lto-objects"
+    CFLAGS="$CFLAGS $PGO_BUILD_LTO_CFLAGS"
+    AC_COMPILE_IFELSE([AC_LANG_SOURCE([int foo;])],,
+		      [PGO_BUILD_LTO_CFLAGS=])
+    CFLAGS="$old_CFLAGS"
+    if test -n "$PGO_BUILD_LTO_CFLAGS"; then
+      AC_MSG_RESULT([yes])
+    else
+      AC_MSG_RESULT([no])
+      AC_MSG_WARN([LTO is disabled for the PGO build])
+    fi
+  fi
+fi
+AC_SUBST(PGO_BUILD_GEN_CFLAGS)
+AC_SUBST(PGO_BUILD_USE_CFLAGS)
+AC_SUBST(PGO_BUILD_LTO_CFLAGS)
+
 # Used for setting $lt_cv_objdir
 _LT_CHECK_OBJDIR
 
 # Check for GMP, MPFR and MPC
-gmplibs="-lmpc -lmpfr -lgmp"
+require_gmp=no
+require_mpc=no
+if test -d ${srcdir}/gcc ; then
+  require_gmp=yes
+  require_mpc=yes
+fi
+if test -d ${srcdir}/gdb ; then
+  if test "x$enable_gdb" != xno; then
+   require_gmp=yes
+  fi
+fi
+
+gmplibs="-lmpfr -lgmp"
+if test x"$require_mpc" = "xyes" ; then
+  gmplibs="-lmpc $gmplibs"
+fi
 gmpinc=
 have_gmp=no
 
@@ -1416,11 +1609,6 @@ fi
 
 # Specify a location for mpfr
 # check for this first so it ends up on the link line before gmp.
-AC_ARG_WITH(mpfr-dir,
-[AS_HELP_STRING([--with-mpfr-dir=PATH], [this option has been REMOVED])],
-[AC_MSG_ERROR([The --with-mpfr-dir=PATH option has been removed.
-Use --with-mpfr=PATH or --with-mpfr-include=PATH plus --with-mpfr-lib=PATH])])
-
 AC_ARG_WITH(mpfr,
 [AS_HELP_STRING([--with-mpfr=PATH],
 		[specify prefix directory for installed MPFR package.
@@ -1460,11 +1648,6 @@ Building GCC with MPFR in the source tre
 fi
 
 # Specify a location for gmp
-AC_ARG_WITH(gmp-dir,
-[AS_HELP_STRING([--with-gmp-dir=PATH], [this option has been REMOVED])],
-[AC_MSG_ERROR([The --with-gmp-dir=PATH option has been removed.
-Use --with-gmp=PATH or --with-gmp-include=PATH plus --with-gmp-lib=PATH])])
-
 AC_ARG_WITH(gmp,
 [AS_HELP_STRING([--with-gmp=PATH],
 		[specify prefix directory for the installed GMP package.
@@ -1501,7 +1684,7 @@ if test "x$with_gmp$with_gmp_include$wit
   have_gmp=yes
 fi
 
-if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then
+if test "x$require_gmp" = xyes && test "x$have_gmp" = xno; then
   have_gmp=yes
   saved_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $gmpinc"
@@ -1528,12 +1711,12 @@ if test -d ${srcdir}/gcc && test "x$have
     AC_MSG_CHECKING([for the correct version of mpfr.h])
     AC_TRY_COMPILE([#include <gmp.h>
     #include <mpfr.h>],[
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,0)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(3,1,0)
     choke me
     #endif
     ], [AC_TRY_COMPILE([#include <gmp.h>
     #include <mpfr.h>],[
-    #if MPFR_VERSION < MPFR_VERSION_NUM(2,4,2)
+    #if MPFR_VERSION < MPFR_VERSION_NUM(3,1,6)
     choke me
     #endif
     ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([buggy but acceptable])])],
@@ -1541,7 +1724,7 @@ if test -d ${srcdir}/gcc && test "x$have
   fi
 
   # Check for the MPC header version.
-  if test x"$have_gmp" = xyes ; then
+  if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes ; then
     # Check for the recommended and required versions of MPC.
     AC_MSG_CHECKING([for the correct version of mpc.h])
     AC_TRY_COMPILE([#include <mpc.h>],[
@@ -1560,19 +1743,29 @@ if test -d ${srcdir}/gcc && test "x$have
   if test x"$have_gmp" = xyes; then
     saved_LIBS="$LIBS"
     LIBS="$LIBS $gmplibs"
-    AC_MSG_CHECKING([for the correct version of the gmp/mpfr/mpc libraries])
-    AC_TRY_LINK([#include <mpc.h>],[
+    AC_MSG_CHECKING([for the correct version of the gmp/mpfr libraries])
+    AC_TRY_LINK([#include <mpfr.h>],[
     mpfr_t n;
     mpfr_t x;
-    mpc_t c;
     int t;
     mpfr_init (n);
     mpfr_init (x);
-    mpfr_atan2 (n, n, x, GMP_RNDN);
-    mpfr_erfc (n, x, GMP_RNDN);
-    mpfr_subnormalize (x, t, GMP_RNDN);
+    mpfr_atan2 (n, n, x, MPFR_RNDN);
+    mpfr_erfc (n, x, MPFR_RNDN);
+    mpfr_subnormalize (x, t, MPFR_RNDN);
     mpfr_clear(n);
     mpfr_clear(x);
+    ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no])
+    LIBS="$saved_LIBS"
+  fi
+
+  # Now check the MPC library
+  if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes; then
+    saved_LIBS="$LIBS"
+    LIBS="$LIBS $gmplibs"
+    AC_MSG_CHECKING([for the correct version of the mpc libraries])
+    AC_TRY_LINK([#include <mpc.h>],[
+    mpc_t c;
     mpc_init2 (c, 53);
     mpc_set_ui_ui (c, 1, 1, MPC_RNDNN);
     mpc_cosh (c, c, MPC_RNDNN);
@@ -1588,15 +1781,23 @@ if test -d ${srcdir}/gcc && test "x$have
 # The library versions listed in the error message below should match
 # the HARD-minimums enforced above.
   if test x$have_gmp != xyes; then
-    AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.
+    if test -d ${srcdir}/gcc ; then
+      AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
 Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
 their locations.  Source code for these libraries can be found at
 their respective hosting sites as well as at
-ftp://gcc.gnu.org/pub/gcc/infrastructure/.  See also
+https://gcc.gnu.org/pub/gcc/infrastructure/.  See also
 http://gcc.gnu.org/install/prerequisites.html for additional info.  If
 you obtained GMP, MPFR and/or MPC from a vendor distribution package,
 make sure that you have installed both the libraries and the header
 files.  They may be located in separate packages.])
+    else
+      AC_MSG_ERROR([Building GDB requires GMP 4.2+, and MPFR 3.1.0+.
+Try the --with-gmp and/or --with-mpfr options to specify
+their locations.  If you obtained GMP and/or MPFR from a vendor
+distribution package, make sure that you have installed both the libraries
+and the header files.  They may be located in separate packages.])
+    fi
   fi
 fi
 
@@ -1677,6 +1878,20 @@ AC_ARG_WITH(boot-ldflags,
  if test "$poststage1_libs" = ""; then
    poststage1_ldflags="-static-libstdc++ -static-libgcc"
  fi])
+case $target in
+  *-darwin2* | *-darwin1[[56789]]*)
+    # For these versions, we default to using embedded rpaths.
+    if test "x$enable_darwin_at_rpath" != "xno"; then
+      poststage1_ldflags="$poststage1_ldflags -nodefaultrpaths"
+    fi
+  ;;
+  *-darwin*)
+    # For these versions, we only use embedded rpaths on demand.
+    if test "x$enable_darwin_at_rpath" = "xyes"; then
+      poststage1_ldflags="$poststage1_ldflags -nodefaultrpaths"
+    fi
+  ;;
+esac
 AC_SUBST(poststage1_ldflags)
 
 # GCC GRAPHITE dependency isl.
@@ -1762,14 +1977,154 @@ AC_ARG_ENABLE(linker-plugin-flags,
   extra_linker_plugin_flags=)
 AC_SUBST(extra_linker_plugin_flags)
 
+# Handle --enable-host-pie
+# If host PIE executables are the default (or must be forced on) for some host,
+# we must pass that configuration to the gcc directory.
+gcc_host_pie=
+AC_ARG_ENABLE(host-pie,
+[AS_HELP_STRING([--enable-host-pie],
+		[build position independent host executables])],
+[host_pie=$enableval
+ case $host in
+   *-*-darwin2*)
+     if test x$host_pie != xyes ; then
+       # for Darwin20+ this is required.
+       AC_MSG_WARN([PIE executables are required for the configured host, host-pie setting ignored.])
+       host_pie=yes
+       gcc_host_pie=--enable-host-pie
+     fi ;;
+  *) ;;
+ esac],
+[case $host in
+  *-*-darwin2*)
+    # Default to PIE (mandatory for aarch64).
+    host_pie=yes
+    gcc_host_pie=--enable-host-pie
+    ;;
+  *) host_pie=no ;;
+ esac])
+
+AC_SUBST(host_pie)
+AC_SUBST(gcc_host_pie)
+
 # Enable --enable-host-shared.
 # Checked early to determine whether jit is an 'all' language
 AC_ARG_ENABLE(host-shared,
 [AS_HELP_STRING([--enable-host-shared],
 		[build host code as shared libraries])],
-[host_shared=$enableval], [host_shared=no])
+[host_shared=$enableval
+ case $host in
+   x86_64-*-darwin* | aarch64-*-darwin*)
+     if test x$host_shared != xyes ; then
+       # PIC is the default, and actually cannot be switched off.
+       AC_MSG_WARN([PIC code is required for the configured host; host-shared setting ignored.])
+       host_shared=yes
+     fi ;;
+   *-*-darwin*)
+     if test x$host_pie = xyes -a x$host_shared != xyes ; then
+       AC_MSG_WARN([PIC code is required for PIE host executables host-shared setting ignored.])
+       host_shared=yes
+     fi ;;
+  *) ;;
+ esac],
+[case $host in
+  # 64B x86_64 and Aarch64 Darwin default to PIC.
+  x86_64-*-darwin* | aarch64-*-darwin*) host_shared=yes ;;
+  # 32B and powerpc64 Darwin must use PIC to link PIE exes.
+  *-*-darwin*) host_shared=$host_pie ;;
+  *) host_shared=no;;
+ esac])
+
 AC_SUBST(host_shared)
 
+if test x$host_shared = xyes; then
+  case $host in
+    *-*-darwin*)
+      # Since host shared is the default for 64b Darwin, and also enabled for
+      # host_pie, ensure that we present the PIE flag when host_pie is active.
+      if test x$host_pie = xyes; then
+        PICFLAG=-fPIE
+      fi
+      ;;
+    *)
+      PICFLAG=-fPIC
+      ;;
+  esac
+elif test x$host_pie = xyes; then
+  PICFLAG=-fPIE
+else
+  PICFLAG=
+fi
+
+AC_SUBST(PICFLAG)
+
+
+# Check for libdiagnostics support.
+AC_MSG_CHECKING([whether to enable libdiagnostics])
+AC_ARG_ENABLE(libdiagnostics,
+[AS_HELP_STRING([--enable-libdiagnostics],
+		[build libdiagnostics shared library])],
+enable_libdiagnostics=$enableval,
+enable_libdiagnostics=no)
+
+if test x$enable_libdiagnostics = xyes; then
+  # Disable libdiagnostics if -enable-host-shared not specified
+  # but not if building for Mingw. All code in Windows
+  # is position independent code (PIC).
+  case $target in
+     *mingw*) ;;
+     *)
+       if test x$host_shared != xyes; then
+	 AC_MSG_ERROR([
+Enabling libdiagnostics requires --enable-host-shared.
+
+--enable-host-shared typically slows the rest of the compiler down by
+a few %, so you must explicitly enable it.
+
+If you want to build both libdiagnostics and the regular compiler, it is often
+best to do this via two separate configure/builds, in separate
+directories, to avoid imposing the performance cost of
+--enable-host-shared on the regular compiler.])
+       fi
+       ;;
+   esac
+fi
+AC_MSG_RESULT($enable_libdiagnostics)
+AC_SUBST(enable_libdiagnostics)
+
+
+# Rust requires -ldl and -lpthread if you are using an old glibc that does not include them by
+# default, so we check for them here
+# We are doing the test here and not in the gcc/configure to be able to nicely disable the
+# build of the Rust frontend in case a dep is missing.
+missing_rust_dynlibs=none
+
+save_LIBS="$LIBS"
+LIBS=
+AC_SEARCH_LIBS([dlopen], [dl])
+AC_SEARCH_LIBS([pthread_create], [pthread])
+CRAB1_LIBS="$LIBS"
+LIBS="$save_LIBS"
+
+if test "$ac_cv_search_dlopen" = no; then
+    missing_rust_dynlibs="libdl"
+fi
+
+if test "$ac_cv_search_pthread_create" = no; then
+    missing_rust_dynlibs="$missing_rust_dynlibs, libpthread"
+fi
+
+AC_SUBST(CRAB1_LIBS, "$CRAB1_LIBS")
+
+# If we are building PIC/PIE host executables, and we are building dependent
+# libs (e.g. GMP) in-tree those libs need to be configured to generate PIC
+# code.
+host_libs_picflag=
+if test "$host_shared" = "yes" -o "$host_pie" = "yes"; then
+host_libs_picflag='--with-pic'
+fi
+AC_SUBST(host_libs_picflag)
+
 # By default, C and C++ are the only stage 1 languages.
 stage1_languages=,c,
 
@@ -1837,7 +2192,7 @@ if test -d ${srcdir}/gcc; then
         lang_requires_boot_languages=
         # set srcdir during sourcing lang_frag to the gcc dir.
         # Sadly overriding srcdir on the . line doesn't work in plain sh as it
-        # polutes this shell
+        # pollutes this shell
         saved_srcdir=${srcdir}
         srcdir=${srcdir}/gcc . ${lang_frag}
         srcdir=${saved_srcdir}
@@ -1982,10 +2337,50 @@ if test -d ${srcdir}/gcc; then
             ;;
         esac
 
+        # Disable D if no preexisting GDC is available.
+        case ${add_this_lang}:${language}:${have_gdc} in
+          yes:d:no)
+            # Specifically requested language; tell them.
+            AC_MSG_ERROR([GDC is required to build $language])
+           ;;
+          all:d:no)
+            AC_MSG_WARN([GDC is required to build $language])
+            add_this_lang=unsupported
+            ;;
+          *:d:no)
+            # Silently disable.
+            add_this_lang=unsupported
+            ;;
+        esac
+
+        # Disable Rust if we are missing some required C libraries for the Rust runtime.
+        case ${add_this_lang}:${language}:${missing_rust_dynlibs} in
+          *:rust:none)
+            # Nothing to do - we're not missing any C libraries
+            ;;
+          yes:rust:*)
+            AC_MSG_ERROR([some C libraries are required to build $language: $missing_rust_dynlibs])
+            add_this_lang=unsupported
+            ;;
+          all:rust:*)
+            AC_MSG_WARN([some C libraries are required to build $language: $missing_rust_dynlibs])
+            add_this_lang=unsupported
+            ;;
+          *:rust:*)
+            # Silently disable.
+            add_this_lang=unsupported
+            ;;
+        esac
+
         # Disable jit if -enable-host-shared not specified
-        case ${add_this_lang}:${language}:${host_shared} in
-          yes:jit:no)
-	    # PR jit/64780: explicitly specify --enable-host-shared
+        # but not if building for Mingw. All code in Windows
+        # is position independent code (PIC).
+        case $target in
+          *mingw*) ;;
+          *)
+          case ${add_this_lang}:${language}:${host_shared} in
+            yes:jit:no)
+	           # PR jit/64780: explicitly specify --enable-host-shared
 	    AC_MSG_ERROR([
 Enabling language "jit" requires --enable-host-shared.
 
@@ -1996,16 +2391,47 @@ If you want to build both the jit and th
 best to do this via two separate configure/builds, in separate
 directories, to avoid imposing the performance cost of
 --enable-host-shared on the regular compiler.])
-	    ;;
-          all:jit:no)
-	    AC_MSG_WARN([--enable-host-shared required to build $language])
+	            ;;
+            all:jit:no)
+	      AC_MSG_WARN([--enable-host-shared required to build $language])
+              add_this_lang=unsupported
+              ;;
+            *:jit:no)
+              # Silently disable.
+              add_this_lang=unsupported
+              ;;
+	        esac
+          ;;
+        esac
+
+        # Pre-conditions to consider whether cargo being supported.
+        if test x"$have_cargo" = xyes \
+          && test x"$build" != x"$host"; then
+          # Until <https://github.com/Rust-GCC/gccrs/issues/2898>
+          # "'cargo' should build for the host system" is resolved:
+          AC_MSG_WARN([use of cargo not yet supported here in Canadian cross configurations])
+          have_cargo=no
+        else
+          # Assume that cargo-produced object files are compatible with what
+          # we're going to build here.
+          :
+        fi
+        # Disable Rust if cargo is unavailable.
+        case ${add_this_lang}:${language}:${have_cargo} in
+          yes:rust:no)
+            # Specifically requested language; tell them.
+            AC_MSG_ERROR([cargo is required to build $language])
+            ;;
+          all:rust:no)
+            AC_MSG_WARN([cargo is required to build $language])
             add_this_lang=unsupported
             ;;
-          *:jit:no)
+          *:rust:no)
             # Silently disable.
             add_this_lang=unsupported
             ;;
-	esac
+        esac
+
 
         # Disable a language that is unsupported by the target.
 	case "${add_this_lang}: $unsupported_languages " in
@@ -2042,7 +2468,7 @@ directories, to avoid imposing the perfo
 		  *) stage1_languages="${stage1_languages}${language}," ;;
 		esac
 		# We need to bootstrap any supporting libraries.
-		bootstrap_target_libs="${bootstrap_target_libs}${target_libs},"
+		bootstrap_target_libs=`echo "${bootstrap_target_libs}${target_libs}," | sed "s/ /,/g"`
 		;;
 	    esac
 	    ;;
@@ -2158,7 +2584,7 @@ case ,${enable_languages},:${enable_objc
   fi
 esac
 
-# Disable libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++
+# Disable libitm, libsanitizer, libvtv if we're not building C++
 case ,${enable_languages}, in
   *,c++,*)
     # Disable libitm, libsanitizer if we're not building libstdc++
@@ -2170,10 +2596,31 @@ case ,${enable_languages}, in
     esac
     ;;
   *)
-    noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
+    noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv"
     ;;
 esac
 
+case ,${enable_languages}, in
+  *,rust,*)
+    case " ${noconfigdirs} " in
+      *\ target-libstdc++-v3\ *)
+        # Disable target libgrust if we're not building target libstdc++.
+        noconfigdirs="$noconfigdirs target-libgrust"
+        ;;
+    esac
+    ;;
+esac
+
+# If gcc/ is not in the source tree then we'll not be building a
+# target compiler, assume in that case we don't want to build any
+# target libraries or tools.
+#
+# This was added primarily for the benefit for binutils-gdb who reuse
+# this configure script, but don't always have target tools available.
+if test ! -d ${srcdir}/gcc; then
+   skipdirs="${skipdirs} ${target_configdirs}"
+fi
+
 # Remove the entries in $skipdirs and $noconfigdirs from $configdirs,
 # $build_configdirs and $target_configdirs.
 # If we have the source for $noconfigdirs entries, add them to $notsupp.
@@ -2259,13 +2706,18 @@ fi
 
 # Sometimes we have special requirements for the host libiberty.
 extra_host_libiberty_configure_flags=
-extra_host_zlib_configure_flags=
 case " $configdirs " in
-  *" lto-plugin "* | *" libcc1 "*)
+  *" lto-plugin "* | *" libcc1 "* | *" gdbserver "*)
     # When these are to be built as shared libraries, the same applies to
     # libiberty.
     extra_host_libiberty_configure_flags=--enable-shared
     ;;
+esac
+AC_SUBST(extra_host_libiberty_configure_flags)
+
+# Sometimes we have special requirements for the host zlib.
+extra_host_zlib_configure_flags=
+case " $configdirs " in
   *" bfd "*)
     # When bfd is to be built as a shared library, the same applies to
     # zlib.
@@ -2274,7 +2726,6 @@ case " $configdirs " in
     fi
     ;;
 esac
-AC_SUBST(extra_host_libiberty_configure_flags)
 AC_SUBST(extra_host_zlib_configure_flags)
 
 # Produce a warning message for the subdirs we can't configure.
@@ -2513,6 +2964,12 @@ case "${target}" in
   spu-*-*)
     target_makefile_frag="config/mt-spu"
     ;;
+  loongarch*-*linux* | loongarch*-*gnu*)
+    target_makefile_frag="config/mt-loongarch-gnu"
+    ;;
+  loongarch*-*elf*)
+    target_makefile_frag="config/mt-loongarch-elf"
+    ;;
   mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
     target_makefile_frag="config/mt-sde"
     ;;
@@ -2522,9 +2979,6 @@ case "${target}" in
   mips*-*-*linux* | mips*-*-gnu*)
     target_makefile_frag="config/mt-mips-gnu"
     ;;
-  nios2-*-elf*)
-    target_makefile_frag="config/mt-nios2-elf"
-    ;;
   *-*-linux-android*)
     target_makefile_frag="config/mt-android"
     ;;
@@ -2702,7 +3156,7 @@ fi
 # or bootstrap-ubsan, bootstrap it.
 if echo " ${target_configdirs} " | grep " libsanitizer " > /dev/null 2>&1; then
   case "$BUILD_CONFIG" in
-    *bootstrap-asan* | *bootstrap-ubsan* )
+    *bootstrap-hwasan* | *bootstrap-asan* | *bootstrap-ubsan* )
       bootstrap_target_libs=${bootstrap_target_libs}target-libsanitizer,
       bootstrap_fixincludes=yes
       ;;
@@ -2715,6 +3169,16 @@ if echo " ${target_configdirs} " | grep
   bootstrap_target_libs=${bootstrap_target_libs}target-libvtv,
 fi
 
+# If we are building libatomic and the list of enabled languages includes the
+# D frontend, bootstrap it.
+if echo " ${target_configdirs} " | grep " libatomic " > /dev/null 2>&1; then
+  case ,${enable_languages}, in
+    *,d,*)
+      bootstrap_target_libs=${bootstrap_target_libs}target-libatomic,
+      ;;
+  esac
+fi
+
 # Determine whether gdb needs tk/tcl or not.
 # Use 'maybe' since enable_gdbtk might be true even if tk isn't available
 # and in that case we want gdb to be built without tk.  Ugh!
@@ -2743,13 +3207,20 @@ 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"
+    ;;
+  *\ sim\ *)
+    configdirs="${configdirs} gnulib"
+    ;;
+esac
 
 # Strip out unwanted targets.
 
@@ -2774,6 +3245,15 @@ case "$enable_bootstrap:$ENABLE_GOLD: $c
     ;;
 esac
 
+# Bootstrapping GCC requires libstdc++-v3 so error out if libstdc++ is disabled with bootstrapping
+# Note C++ is always enabled for stage1 now.
+case "$enable_bootstrap:${noconfigdirs}" in
+  yes:*target-libstdc++-v3*)
+    AC_MSG_ERROR([bootstrapping with --disable-libstdcxx is not supported])
+    ;;
+esac
+
+
 extrasub_build=
 for module in ${build_configdirs} ; do
   if test -z "${no_recursion}" \
@@ -2840,6 +3320,12 @@ extrasub_target="$extrasub_target
 /^@unless /d
 /^@endunless /d"
 
+if test "$enable_pgo_build" != "no"; then
+  extrasub_build="$extrasub_build
+/^@if pgo-build\$/d
+/^@endif pgo-build\$/d"
+fi
+
 # Create the serialization dependencies.  This uses a temporary file.
 
 AC_ARG_ENABLE([serial-configure],
@@ -2859,7 +3345,9 @@ esac
 # These force 'configure's to be done one at a time, to avoid problems
 # with contention over a shared config.cache.
 rm -f serdep.tmp
+if test "x${enable_serial_build_configure}" = xyes || test "x${enable_serial_host_configure}" = xyes || test "x${enable_serial_target_configure}" = xyes; then
 echo '# serdep.tmp' > serdep.tmp
+fi
 olditem=
 test "x${enable_serial_build_configure}" = xyes &&
 for item in ${build_configdirs} ; do
@@ -2897,7 +3385,8 @@ AC_SUBST_FILE(serialization_dependencies
 # files altogether, and which should be passed on to subconfigures.
 # Also strip program-prefix, program-suffix, and program-transform-name,
 # so that we can pass down a consistent program-transform-name.
-baseargs=
+hbaseargs=
+bbaseargs=
 tbaseargs=
 keep_next=no
 skip_next=no
@@ -2913,7 +3402,8 @@ do
       *\'*)
 	ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
     esac
-    baseargs="$baseargs '$ac_arg'"
+    hbaseargs="$hbaseargs '$ac_arg'"
+    bbaseargs="$bbaseargs '$ac_arg'"
     tbaseargs="$tbaseargs '$ac_arg'"
     keep_next=no
     continue
@@ -2937,6 +3427,7 @@ do
   esac
 
   skip_targ=no
+  skip_barg=no
   case $ac_arg in
 changequote(,)
   --with-* | --without-*)
@@ -2949,6 +3440,12 @@ changequote(,)
     *[-_]lib)
       lib=`echo "$libopt" | sed 's,[-_]lib$,,'`
       ;;
+    *[-_]prefix)
+      lib=`echo "$libopt" | sed 's,[-_]prefix$,,'`
+      ;;
+    *[-_]type)
+      lib=`echo "$libopt" | sed 's,[-_]type$,,'`
+      ;;
     *)
       lib=$libopt
       ;;
@@ -2965,6 +3462,11 @@ changequote([,])
         skip_targ=yes
       fi
       ;;
+    libintl | libiconv)
+      # We don't want libintl (and co.) in anything but the host arguments.
+      skip_targ=yes
+      skip_barg=yes
+      ;;
     esac
     ;;
   esac
@@ -2973,7 +3475,8 @@ changequote([,])
     --cache-file=/dev/null | \
     -cache-file=/dev/null )
       # Handled here to avoid the test to skip args below.
-      baseargs="$baseargs '$ac_arg'"
+      hbaseargs="$hbaseargs '$ac_arg'"
+      bbaseargs="$bbaseargs '$ac_arg'"
       tbaseargs="$tbaseargs '$ac_arg'"
       # Assert: $separate_arg should always be no.
       keep_next=$separate_arg
@@ -3004,7 +3507,10 @@ changequote([,])
 	*\'*)
 	  ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
       esac
-      baseargs="$baseargs '$ac_arg'"
+      hbaseargs="$hbaseargs '$ac_arg'"
+      if test X"$skip_barg" = Xno; then
+	bbaseargs="$bbaseargs '$ac_arg'"
+      fi
       if test X"$skip_targ" = Xno; then
         tbaseargs="$tbaseargs '$ac_arg'"
       fi
@@ -3019,7 +3525,8 @@ changequote([,])
 done
 # Remove the initial space we just introduced and, as these will be
 # expanded by make, quote '$'.
-baseargs=`echo "x$baseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'`
+hbaseargs=`echo "x$hbaseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'`
+bbaseargs=`echo "x$bbaseargs" | sed -e 's/^x *//' -e 's,\\$,$$,g'`
 
 # Add in --program-transform-name, after --program-prefix and
 # --program-suffix have been applied to it.  Autoconf has already
@@ -3033,15 +3540,25 @@ sed -e "s,\\\\\\\\,\\\\,g; s,','\\\\'',g
 EOF_SED
 gcc_transform_name=`cat conftestsed.out`
 rm -f conftestsed.out
-baseargs="$baseargs --program-transform-name='${gcc_transform_name}'"
+hbaseargs="$hbaseargs --program-transform-name='${gcc_transform_name}'"
+bbaseargs="$bbaseargs --program-transform-name='${gcc_transform_name}'"
 tbaseargs="$tbaseargs --program-transform-name='${gcc_transform_name}'"
 if test "$silent" = yes; then
-  baseargs="$baseargs --silent"
+  bbaseargs="$bbaseargs --silent"
+  hbaseargs="$hbaseargs --silent"
   tbaseargs="$tbaseargs --silent"
 fi
-baseargs="$baseargs --disable-option-checking"
+
+bbaseargs="$bbaseargs --disable-option-checking"
+hbaseargs="$hbaseargs --disable-option-checking"
 tbaseargs="$tbaseargs --disable-option-checking"
 
+if test "$enable_year2038" = no; then
+  bbaseargs="$bbaseargs --disable-year2038"
+  hbaseargs="$hbaseargs --disable-year2038"
+  tbaseargs="$tbaseargs --disable-year2038"
+fi
+
 # Record and document user additions to sub configure arguments.
 AC_ARG_VAR([build_configargs],
 	   [additional configure arguments for build directories])
@@ -3055,7 +3572,7 @@ AC_ARG_VAR([target_configargs],
 # desired.  We can't even use the same cache file for all build-side
 # libraries, as they're compiled differently; some with C, some with
 # C++ or with different feature-enabling options.
-build_configargs="$build_configargs --cache-file=./config.cache ${baseargs}"
+build_configargs="$build_configargs --cache-file=./config.cache ${bbaseargs}"
 
 # For host modules, accept cache file option, or specification as blank.
 case "${cache_file}" in
@@ -3069,7 +3586,7 @@ esac
 
 # Host dirs don't like to share a cache file either, horribly enough.
 # This seems to be due to autoconf 2.5x stupidity.
-host_configargs="$host_configargs --cache-file=./config.cache ${extra_host_args} ${baseargs}"
+host_configargs="$host_configargs --cache-file=./config.cache ${extra_host_args} ${hbaseargs}"
 
 target_configargs="$target_configargs ${tbaseargs}"
 
@@ -3208,6 +3725,7 @@ esac
 # our build compiler if desired.
 if test x"${build}" = x"${host}" ; then
   CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-${CFLAGS}}
+  CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-${CPPFLAGS}}
   CXXFLAGS_FOR_BUILD=${CXXFLAGS_FOR_BUILD-${CXXFLAGS}}
   LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-${LDFLAGS}}
 fi
@@ -3232,6 +3750,17 @@ case "${target}" in
   mep*)
     FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary"
     ;;
+  # The VxWorks support for shared libraries is getting in
+  # incrementally.  Make sure it doesn't get activated implicitly:
+  *vxworks*)
+    if test "${enable_shared-unset}" = unset ; then
+      enable_shared=no
+      # So the build of libraries knows ...
+      target_configargs="${target_configargs} --disable-shared"
+      # So gcc knows ...
+      host_configargs="${host_configargs} --disable-shared"
+    fi
+    ;;
 esac
 
 # Makefile fragments.
@@ -3274,11 +3803,15 @@ AC_SUBST(AR_FOR_BUILD)
 AC_SUBST(AS_FOR_BUILD)
 AC_SUBST(CC_FOR_BUILD)
 AC_SUBST(CFLAGS_FOR_BUILD)
+AC_SUBST(CPP_FOR_BUILD)
+AC_SUBST(CPPFLAGS_FOR_BUILD)
 AC_SUBST(CXXFLAGS_FOR_BUILD)
 AC_SUBST(CXX_FOR_BUILD)
 AC_SUBST(DLLTOOL_FOR_BUILD)
+AC_SUBST(DSYMUTIL_FOR_BUILD)
 AC_SUBST(GFORTRAN_FOR_BUILD)
 AC_SUBST(GOC_FOR_BUILD)
+AC_SUBST(GDC_FOR_BUILD)
 AC_SUBST(LDFLAGS_FOR_BUILD)
 AC_SUBST(LD_FOR_BUILD)
 AC_SUBST(NM_FOR_BUILD)
@@ -3355,6 +3888,7 @@ esac
 NCN_STRICT_CHECK_TOOLS(AR, ar)
 NCN_STRICT_CHECK_TOOLS(AS, as)
 NCN_STRICT_CHECK_TOOLS(DLLTOOL, dlltool)
+NCN_STRICT_CHECK_TOOLS(DSYMUTIL, dsymutil)
 NCN_STRICT_CHECK_TOOLS(LD, ld)
 NCN_STRICT_CHECK_TOOLS(LIPO, lipo)
 NCN_STRICT_CHECK_TOOLS(NM, nm)
@@ -3364,11 +3898,30 @@ NCN_STRICT_CHECK_TOOLS(WINDRES, windres)
 NCN_STRICT_CHECK_TOOLS(WINDMC, windmc)
 NCN_STRICT_CHECK_TOOLS(OBJCOPY, objcopy)
 NCN_STRICT_CHECK_TOOLS(OBJDUMP, objdump)
+NCN_STRICT_CHECK_TOOLS(OTOOL, otool)
 NCN_STRICT_CHECK_TOOLS(READELF, readelf)
 AC_SUBST(CC)
 AC_SUBST(CXX)
 AC_SUBST(CFLAGS)
 AC_SUBST(CXXFLAGS)
+AC_SUBST(GDC)
+AC_SUBST(GDCFLAGS)
+GDCFLAGS=${GDCFLAGS-${CFLAGS}}
+AC_SUBST(PKG_CONFIG_PATH)
+
+GCC_PLUGIN_OPTION(PLUGIN_OPTION)
+AR_PLUGIN_OPTION=
+RANLIB_PLUGIN_OPTION=
+if test -n "$PLUGIN_OPTION"; then
+  if $AR --help 2>&1 | grep -q "\--plugin"; then
+    AR_PLUGIN_OPTION="$PLUGIN_OPTION"
+  fi
+  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
+    RANLIB_PLUGIN_OPTION="$PLUGIN_OPTION"
+  fi
+fi
+AC_SUBST(AR_PLUGIN_OPTION)
+AC_SUBST(RANLIB_PLUGIN_OPTION)
 
 # Target tools.
 AC_ARG_WITH([build-time-tools], 
@@ -3388,15 +3941,19 @@ NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TA
 NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET})
 NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran)
 NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo)
+NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc)
+NCN_STRICT_CHECK_TARGET_TOOLS(GM2_FOR_TARGET, gm2)
 
 ACX_CHECK_INSTALLED_TARGET_TOOL(AR_FOR_TARGET, ar)
 ACX_CHECK_INSTALLED_TARGET_TOOL(AS_FOR_TARGET, as)
 ACX_CHECK_INSTALLED_TARGET_TOOL(DLLTOOL_FOR_TARGET, dlltool)
+ACX_CHECK_INSTALLED_TARGET_TOOL(DSYMUTIL_FOR_TARGET, dsymutil)
 ACX_CHECK_INSTALLED_TARGET_TOOL(LD_FOR_TARGET, ld)
 ACX_CHECK_INSTALLED_TARGET_TOOL(LIPO_FOR_TARGET, lipo)
 ACX_CHECK_INSTALLED_TARGET_TOOL(NM_FOR_TARGET, nm)
 ACX_CHECK_INSTALLED_TARGET_TOOL(OBJCOPY_FOR_TARGET, objcopy)
 ACX_CHECK_INSTALLED_TARGET_TOOL(OBJDUMP_FOR_TARGET, objdump)
+ACX_CHECK_INSTALLED_TARGET_TOOL(OTOOL_FOR_TARGET, otool)
 ACX_CHECK_INSTALLED_TARGET_TOOL(RANLIB_FOR_TARGET, ranlib)
 ACX_CHECK_INSTALLED_TARGET_TOOL(READELF_FOR_TARGET, readelf)
 ACX_CHECK_INSTALLED_TARGET_TOOL(STRIP_FOR_TARGET, strip)
@@ -3416,16 +3973,22 @@ GCC_TARGET_TOOL(c++ for libstdc++, RAW_C
 		[gcc/xgcc -shared-libgcc -B$$r/$(HOST_SUBDIR)/gcc -nostdinc++ -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs -L$$r/$(TARGET_SUBDIR)/libstdc++-v3/libsupc++/.libs],
 		c++)
 GCC_TARGET_TOOL(dlltool, DLLTOOL_FOR_TARGET, DLLTOOL, [binutils/dlltool])
+GCC_TARGET_TOOL(dsymutil, DSYMUTIL_FOR_TARGET, DSYMUTIL)
 GCC_TARGET_TOOL(gcc, GCC_FOR_TARGET, , [gcc/xgcc -B$$r/$(HOST_SUBDIR)/gcc/])
 GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_TARGET, GFORTRAN,
 		[gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran)
 GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, GOC,
 		[gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go)
+GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC,
+		[gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d)
+GCC_TARGET_TOOL(gm2, GM2_FOR_TARGET, GM2,
+		[gcc/gm2 -B$$r/$(HOST_SUBDIR)/gcc/], m2)
 GCC_TARGET_TOOL(ld, LD_FOR_TARGET, LD, [ld/ld-new])
 GCC_TARGET_TOOL(lipo, LIPO_FOR_TARGET, LIPO)
 GCC_TARGET_TOOL(nm, NM_FOR_TARGET, NM, [binutils/nm-new])
 GCC_TARGET_TOOL(objcopy, OBJCOPY_FOR_TARGET, OBJCOPY, [binutils/objcopy])
 GCC_TARGET_TOOL(objdump, OBJDUMP_FOR_TARGET, OBJDUMP, [binutils/objdump])
+GCC_TARGET_TOOL(otool, OTOOL_FOR_TARGET, OTOOL)
 GCC_TARGET_TOOL(ranlib, RANLIB_FOR_TARGET, RANLIB, [binutils/ranlib])
 GCC_TARGET_TOOL(readelf, READELF_FOR_TARGET, READELF, [binutils/readelf])
 GCC_TARGET_TOOL(strip, STRIP_FOR_TARGET, STRIP, [binutils/strip-new])
@@ -3546,10 +4109,12 @@ AC_SUBST(stage2_werror_flag)
 # Specify what files to not compare during bootstrap.
 
 compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"
+compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/M2Version*"
+compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/SYSTEM*"
+compare_exclusions="$compare_exclusions | gcc/m2/gm2version*"
 case "$target" in
   hppa*64*-*-hpux*) ;;
-  hppa*-*-hpux*) compare_exclusions="gcc/cc*-checksum\$(objext) | */libgcc/lib2funcs* | gcc/ada/*tools/* | gcc/function-tests.o" ;;
-  powerpc*-ibm-aix*) compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/* | *libgomp*\$(objext)" ;;
+  powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;;
 esac
 AC_SUBST(compare_exclusions)
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/contrib/ChangeLog ./contrib/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/contrib/ChangeLog	2020-03-03 02:08:51.000000000 +0000
+++ ./contrib/ChangeLog	2026-03-05 02:07:20.000000000 +0000
@@ -1,3 +1,17 @@
+2024-03-11  Sam James  <sam@gentoo.org>
+
+	* dg-extract-results.py: Sync with GCC.
+	* dg-extract-results.sh: Sync with GCC.
+
+2020-09-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* mklog.py: New file, imported from gcc.
+
+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.20200303/contrib/dg-extract-results.py ./contrib/dg-extract-results.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/contrib/dg-extract-results.py	2020-03-03 02:08:51.000000000 +0000
+++ ./contrib/dg-extract-results.py	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 #!/usr/bin/python
 #
-# Copyright (C) 2014 Free Software Foundation, Inc.
+# Copyright (C) 2014-2025 Free Software Foundation, Inc.
 #
 # This script is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -113,11 +113,12 @@ class Prog:
         # Whether to create .sum rather than .log output.
         self.do_sum = True
         # Regexps used while parsing.
-        self.test_run_re = re.compile (r'^Test Run By (\S+) on (.*)$')
+        self.test_run_re = re.compile (r'^Test run by (\S+) on (.*)$',
+                                       re.IGNORECASE)
         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 +144,10 @@ 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',
+            '# of unexpected core files\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.20200303/contrib/dg-extract-results.sh ./contrib/dg-extract-results.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/contrib/dg-extract-results.sh	2020-03-03 02:08:51.000000000 +0000
+++ ./contrib/dg-extract-results.sh	2026-03-05 02:07:20.000000000 +0000
@@ -6,7 +6,7 @@
 # The resulting file can be used with test result comparison scripts for
 # results from tests that were run in parallel.  See usage() below.
 
-# Copyright (C) 2008, 2009, 2010, 2012 Free Software Foundation
+# Copyright (C) 2008-2025 Free Software Foundation, Inc.
 # Contributed by Janis Johnson <janis187@us.ibm.com>
 #
 # This file is part of GCC.
@@ -28,14 +28,17 @@
 
 PROGNAME=dg-extract-results.sh
 
-# Try to use the python version if possible, since it tends to be faster.
+# Try to use the python version if possible, since it tends to be faster and
+# produces more stable results.
 PYTHON_VER=`echo "$0" | sed 's/sh$/py/'`
-if test "$PYTHON_VER" != "$0" &&
-   test -f "$PYTHON_VER" &&
-   python -c 'import sys, getopt, re, io, datetime, operator; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
-     > /dev/null 2> /dev/null; then
-  exec python $PYTHON_VER "$@"
-fi
+for python in python3 python python2 ; do
+  if test "$PYTHON_VER" != "$0" &&
+     test -f "$PYTHON_VER" &&
+     ${python} -c 'import sys, getopt, re, io, datetime, operator; sys.exit (0 if sys.version_info >= (2, 6) else 1)' \
+       > /dev/null 2> /dev/null; then
+    exec ${python} $PYTHON_VER "$@"
+  fi
+done
 
 usage() {
   cat <<EOF >&2
@@ -271,7 +274,7 @@ cat $SUM_FILES \
 
 # Write the begining of the combined summary file.
 
-head -n 2 $FIRST_SUM
+head -n 3 $FIRST_SUM
 echo
 echo "		=== $TOOL tests ==="
 echo
@@ -326,7 +329,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 +403,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; corecnt=0
   curvar=""; insummary=0
 }
 /^Running target /		{ curvar = \$3; next }
@@ -414,6 +418,9 @@ 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; }
+/^# of unexpected core files/	{ if (insummary == 1) corecnt += \$6; next; }
 /^$/				{ if (insummary == 1)
 				    { insummary = 0; curvar = "" }
 				  next
@@ -431,6 +438,9 @@ 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)
+  if (corecnt != 0) printf ("# of unexpected core files\t%d\n", corecnt)
 }
 EOF
 
@@ -452,6 +462,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; corecnt=0
 }
 /^# of DejaGnu errors/		{ dgerrorcnt += \$5 }
 /^# of expected passes/		{ passcnt += \$5 }
@@ -463,6 +474,9 @@ 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 }
+/^# of unexpected core files/	{ corecnt += \$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 +489,9 @@ 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)
+  if (corecnt != 0) printf ("# of unexpected core files\t%d\n", corecnt)
 }
 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.20200303/contrib/mklog.py ./contrib/mklog.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/contrib/mklog.py	1970-01-01 00:00:00.000000000 +0000
+++ ./contrib/mklog.py	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,261 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2020 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute 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.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING.  If not, write to
+# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+# This script parses a .diff file generated with 'diff -up' or 'diff -cp'
+# and adds a skeleton ChangeLog file to the file. It does not try to be
+# too smart when parsing function names, but it produces a reasonable
+# approximation.
+#
+# Author: Martin Liska <mliska@suse.cz>
+
+import argparse
+import os
+import re
+import sys
+from itertools import takewhile
+
+import requests
+
+from unidiff import PatchSet
+
+pr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<pr>PR [a-z+-]+\/[0-9]+)')
+dr_regex = re.compile(r'(\/(\/|\*)|[Cc*!])\s+(?P<dr>DR [0-9]+)')
+identifier_regex = re.compile(r'^([a-zA-Z0-9_#].*)')
+comment_regex = re.compile(r'^\/\*')
+struct_regex = re.compile(r'^(class|struct|union|enum)\s+'
+                          r'(GTY\(.*\)\s+)?([a-zA-Z0-9_]+)')
+macro_regex = re.compile(r'#\s*(define|undef)\s+([a-zA-Z0-9_]+)')
+super_macro_regex = re.compile(r'^DEF[A-Z0-9_]+\s*\(([a-zA-Z0-9_]+)')
+fn_regex = re.compile(r'([a-zA-Z_][^()\s]*)\s*\([^*]')
+template_and_param_regex = re.compile(r'<[^<>]*>')
+bugzilla_url = 'https://gcc.gnu.org/bugzilla/rest.cgi/bug?id=%s&' \
+               'include_fields=summary'
+
+function_extensions = set(['.c', '.cpp', '.C', '.cc', '.h', '.inc', '.def'])
+
+help_message = """\
+Generate ChangeLog template for PATCH.
+PATCH must be generated using diff(1)'s -up or -cp options
+(or their equivalent in git).
+"""
+
+script_folder = os.path.realpath(__file__)
+gcc_root = os.path.dirname(os.path.dirname(script_folder))
+
+
+def find_changelog(path):
+    folder = os.path.split(path)[0]
+    while True:
+        if os.path.exists(os.path.join(gcc_root, folder, 'ChangeLog')):
+            return folder
+        folder = os.path.dirname(folder)
+        if folder == '':
+            return folder
+    raise AssertionError()
+
+
+def extract_function_name(line):
+    if comment_regex.match(line):
+        return None
+    m = struct_regex.search(line)
+    if m:
+        # Struct declaration
+        return m.group(1) + ' ' + m.group(3)
+    m = macro_regex.search(line)
+    if m:
+        # Macro definition
+        return m.group(2)
+    m = super_macro_regex.search(line)
+    if m:
+        # Supermacro
+        return m.group(1)
+    m = fn_regex.search(line)
+    if m:
+        # Discard template and function parameters.
+        fn = m.group(1)
+        fn = re.sub(template_and_param_regex, '', fn)
+        return fn.rstrip()
+    return None
+
+
+def try_add_function(functions, line):
+    fn = extract_function_name(line)
+    if fn and fn not in functions:
+        functions.append(fn)
+    return bool(fn)
+
+
+def sort_changelog_files(changed_file):
+    return (changed_file.is_added_file, changed_file.is_removed_file)
+
+
+def get_pr_titles(prs):
+    output = ''
+    for pr in prs:
+        id = pr.split('/')[-1]
+        r = requests.get(bugzilla_url % id)
+        bugs = r.json()['bugs']
+        if len(bugs) == 1:
+            output += '%s - %s\n' % (pr, bugs[0]['summary'])
+            print(output)
+    if output:
+        output += '\n'
+    return output
+
+
+def generate_changelog(data, no_functions=False, fill_pr_titles=False):
+    changelogs = {}
+    changelog_list = []
+    prs = []
+    out = ''
+    diff = PatchSet(data)
+
+    for file in diff:
+        changelog = find_changelog(file.path)
+        if changelog not in changelogs:
+            changelogs[changelog] = []
+            changelog_list.append(changelog)
+        changelogs[changelog].append(file)
+
+        # Extract PR entries from newly added tests
+        if 'testsuite' in file.path and file.is_added_file:
+            for line in list(file)[0]:
+                m = pr_regex.search(line.value)
+                if m:
+                    pr = m.group('pr')
+                    if pr not in prs:
+                        prs.append(pr)
+                else:
+                    m = dr_regex.search(line.value)
+                    if m:
+                        dr = m.group('dr')
+                        if dr not in prs:
+                            prs.append(dr)
+                    else:
+                        break
+
+    if fill_pr_titles:
+        out += get_pr_titles(prs)
+
+    # sort ChangeLog so that 'testsuite' is at the end
+    for changelog in sorted(changelog_list, key=lambda x: 'testsuite' in x):
+        files = changelogs[changelog]
+        out += '%s:\n' % os.path.join(changelog, 'ChangeLog')
+        out += '\n'
+        for pr in prs:
+            out += '\t%s\n' % pr
+        # new and deleted files should be at the end
+        for file in sorted(files, key=sort_changelog_files):
+            assert file.path.startswith(changelog)
+            in_tests = 'testsuite' in changelog or 'testsuite' in file.path
+            relative_path = file.path[len(changelog):].lstrip('/')
+            functions = []
+            if file.is_added_file:
+                msg = 'New test' if in_tests else 'New file'
+                out += '\t* %s: %s.\n' % (relative_path, msg)
+            elif file.is_removed_file:
+                out += '\t* %s: Removed.\n' % (relative_path)
+            elif hasattr(file, 'is_rename') and file.is_rename:
+                out += '\t* %s: Moved to...\n' % (relative_path)
+                new_path = file.target_file[2:]
+                # A file can be theoretically moved to a location that
+                # belongs to a different ChangeLog.  Let user fix it.
+                if new_path.startswith(changelog):
+                    new_path = new_path[len(changelog):].lstrip('/')
+                out += '\t* %s: ...here.\n' % (new_path)
+            else:
+                if not no_functions:
+                    for hunk in file:
+                        # Do not add function names for testsuite files
+                        extension = os.path.splitext(relative_path)[1]
+                        if not in_tests and extension in function_extensions:
+                            last_fn = None
+                            modified_visited = False
+                            success = False
+                            for line in hunk:
+                                m = identifier_regex.match(line.value)
+                                if line.is_added or line.is_removed:
+                                    if not line.value.strip():
+                                        continue
+                                    modified_visited = True
+                                    if m and try_add_function(functions,
+                                                              m.group(1)):
+                                        last_fn = None
+                                        success = True
+                                elif line.is_context:
+                                    if last_fn and modified_visited:
+                                        try_add_function(functions, last_fn)
+                                        last_fn = None
+                                        modified_visited = False
+                                        success = True
+                                    elif m:
+                                        last_fn = m.group(1)
+                                        modified_visited = False
+                            if not success:
+                                try_add_function(functions,
+                                                 hunk.section_header)
+                if functions:
+                    out += '\t* %s (%s):\n' % (relative_path, functions[0])
+                    for fn in functions[1:]:
+                        out += '\t(%s):\n' % fn
+                else:
+                    out += '\t* %s:\n' % relative_path
+        out += '\n'
+    return out
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description=help_message)
+    parser.add_argument('input', nargs='?',
+                        help='Patch file (or missing, read standard input)')
+    parser.add_argument('-s', '--no-functions', action='store_true',
+                        help='Do not generate function names in ChangeLogs')
+    parser.add_argument('-p', '--fill-up-bug-titles', action='store_true',
+                        help='Download title of mentioned PRs')
+    parser.add_argument('-c', '--changelog',
+                        help='Append the ChangeLog to a git commit message '
+                             'file')
+    args = parser.parse_args()
+    if args.input == '-':
+        args.input = None
+
+    input = open(args.input) if args.input else sys.stdin
+    data = input.read()
+    output = generate_changelog(data, args.no_functions,
+                                args.fill_up_bug_titles)
+    if args.changelog:
+        lines = open(args.changelog).read().split('\n')
+        start = list(takewhile(lambda l: not l.startswith('#'), lines))
+        end = lines[len(start):]
+        with open(args.changelog, 'w') as f:
+            if start:
+                # appent empty line
+                if start[-1] != '':
+                    start.append('')
+            else:
+                # append 2 empty lines
+                start = 2 * ['']
+            f.write('\n'.join(start))
+            f.write('\n')
+            f.write(output)
+            f.write('\n'.join(end))
+    else:
+        print(output, 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.20200303/cpu/bpf.cpu ./cpu/bpf.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/bpf.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/bpf.cpu	1970-01-01 00:00:00.000000000 +0000
@@ -1,660 +0,0 @@
-;; Linux BPF CPU description  -*- Scheme -*-
-;; Copyright (C) 2019 Free Software Foundation, Inc.
-;;
-;; Contributed by Oracle Inc.
-;;
-;; This file is part of the GNU Binutils and of GDB.
-;;
-;; This program is free software; you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation; either version 3 of the
-;; License, or (at your option) any later version.
-;;
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-;; 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.
-
-;; This file contains a CGEN CPU description for the Linux kernel eBPF
-;; instruction set.  eBPF is documented in the linux kernel source
-;; tree.  See linux/Documentation/networking/filter.txt, and also the
-;; sources in the networking subsystem, notably
-;; linux/net/core/filter.c.
-
-(include "simplify.inc")
-
-(define-arch
-  (name bpf)
-  (comment "Linux kernel BPF")
-  (insn-lsb0? #t)
-  (machs bpf)
-  (isas ebpfle ebpfbe))
-
-;;;; The ISAs
-
-;; Logically, eBPF comforms a single instruction set featuring two
-;; kind of instructions: 64-bit instructions and 128-bit instructions.
-;;
-;; The 64-bit instructions have the form:
-;;
-;;      code:8 regs:8 offset:16 imm:32
-;;
-;; Whereas the 128-bit instructions (at the moment there is only one
-;; of such instructions, lddw) have the form:
-;;
-;;      code:8 regs:8 offset:16 imm:32 unused:32 imm:32 
-;;
-;; In both formats `regs' is itself composed by two fields:
-;;
-;;      dst:4 src:4
-;;
-;; The ISA is supposed to be orthogonal to endianness: the endianness
-;; of the instruction fields follow the endianness of the host running
-;; the eBPF program, and that's all.  However, this is not entirely
-;; true.  The definition of an eBPF code in the Linux kernel is:
-;;
-;; struct bpf_insn {
-;;	__u8	code;		/* opcode */
-;;	__u8	dst_reg:4;	/* dest register */
-;;	__u8	src_reg:4;	/* source register */
-;;	__s16	off;		/* signed offset */
-;;	__s32	imm;		/* signed immediate constant */
-;; };
-;;
-;; Since the ordering of fields in C bitmaps is defined by the
-;; implementation, the impact of endianness in the encoding of eBPF
-;; instructions is effectively defined by GCC.  In particular, GCC
-;; places dst_reg before src_reg in little-endian code, and the other
-;; way around in big-endian code.
-;;
-;; So, in reality, eBPF comprises two instruction sets: one for
-;; little-endian with instructions like:
-;;
-;;   code:8 src:4 dst:4 offset:16 imm:32 [unused:32 imm:32]
-;;
-;; and another for big-endian with instructions like:
-;;
-;;   code:8 dst:4 src:4 offset:16 imm:32 [unused:32 imm:32]
-;;
-;; where `offset' and the immediate fields are encoded in
-;; little-endian and big-endian byte-order, respectively.
-
-(define-pmacro (define-bpf-isa x-endian)
-  (define-isa
-    (name (.sym ebpf x-endian))
-    (comment "The eBPF instruction set")
-    ;; Default length to record in ifields.  This is used in
-    ;; calculations involving bit numbers.
-    (default-insn-word-bitsize 64)
-    ;; 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)))
-
-(define-bpf-isa le)
-(define-bpf-isa be)
-
-(define-pmacro all-isas () (ISA ebpfle,ebpfbe))
-
-;;;; Hardware Hierarchy
-
-;;
-;;     bpf         architecture
-;;      |
-;;    bpfbf        cpu-family
-;;      |
-;;     bpf         machine
-;;      |
-;;   bpf-def       model
-
-(define-cpu
-  (name bpfbf)
-  (comment "Linux kernel eBPF virtual CPU")
-  (word-bitsize 32))
-
-(define-mach
-  (name bpf)
-  (comment "Linux eBPF")
-  (cpu bpfbf)
-  (isas ebpfle ebpfbe))
-
-(define-model
-  (name bpf-def)
-  (comment "Linux eBPF default model")
-  (mach bpf)
-  (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
-;; 64-bit.
-
-(define-hardware
-  (name h-gpr)
-  (comment "General Purpose Registers")
-  (attrs all-isas (MACH bpf))
-  (type register DI (16))
-  (indices keyword "%"
-           ;; XXX the frame pointer fp is read-only, so it should
-           ;; go in a different hardware.
-           (;; ABI names.  Take priority when disassembling.
-            (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))))
-
-;; The program counter.  CGEN requires it, even if it is not visible
-;; to eBPF programs.
-
-(dnh h-pc "program counter" (PC PROFILE) (pc) () () ())
-
-;; 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
-;; in 32-bit hosts.  To be fixed in CGEN.
-
-(dnh h-sint64 "signed 64-bit integer" (all-isas) (immediate DI)
-     () () ())
-
-;;;; The Instruction Sets
-
-;;; Fields and Opcodes
-
-;; Convenience macro to shorten the definition of the fields below.
-(define-pmacro (dwf x-name x-comment x-attrs
-                    x-word-offset x-word-length x-start x-length
-                    x-mode)
-  "Define a field including its containing word."
-  (define-ifield
-    (name x-name)
-    (comment x-comment)
-    (.splice attrs (.unsplice x-attrs))
-    (word-offset x-word-offset)
-    (word-length x-word-length)
-    (start x-start)
-    (length x-length)
-    (mode x-mode)))
-
-;; For arithmetic and jump instructions the 8-bit code field is
-;; subdivided in:
-;;
-;;  op-code:4 op-src:1 op-class:3
-
-(dwf f-op-code "eBPF opcode code" (all-isas) 0 8 7 4 UINT)
-(dwf f-op-src "eBPF opcode source" (all-isas) 0 8 3 1 UINT)
-(dwf f-op-class "eBPF opcode instruction class" (all-isas) 0 8 2 3 UINT)
-
-(define-normal-insn-enum insn-op-code-alu "eBPF instruction codes"
-  (all-isas) OP_CODE_ f-op-code
-  (;; Codes for OP_CLASS_ALU and OP_CLASS_ALU64
-   (ADD #x0) (SUB #x1) (MUL #x2) (DIV #x3) (OR #x4) (AND #x5)
-   (LSH #x6) (RSH #x7) (NEG #x8) (MOD #x9) (XOR #xa) (MOV #xb)
-   (ARSH #xc) (END #xd)
-   ;; Codes for OP_CLASS_JMP
-   (JA #x0) (JEQ #x1) (JGT #x2) (JGE #x3) (JSET #x4)
-   (JNE #x5) (JSGT #x6) (JSGE #x7) (CALL #x8) (EXIT #x9)
-   (JLT #xa) (JLE #xb) (JSLT #xc) (JSLE #xd)))
-
-(define-normal-insn-enum insn-op-src "eBPF instruction source"
-  (all-isas) OP_SRC_ f-op-src
-  ;; X => use `src' as source operand.
-  ;; K => use `imm32' as source operand.
-  ((K #b0) (X #b1)))
-
-(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)))
-
-;; For load/store instructions, the 8-bit code field is subdivided in:
-;;
-;; op-mode:3 op-size:2 op-class:3
-
-(dwf f-op-mode "eBPF opcode mode" (all-isas) 0 8 7 3 UINT)
-(dwf f-op-size "eBPF opcode size" (all-isas) 0 8 4 2 UINT)
-
-(define-normal-insn-enum insn-op-mode "eBPF load/store instruction modes"
-  (all-isas) OP_MODE_ f-op-mode
-  ((IMM #b000) (ABS #b001) (IND #b010) (MEM #b011)
-   ;; #b100 and #b101 are used in classic BPF only, reserved in eBPF.
-   (XADD #b110)))
-
-(define-normal-insn-enum insn-op-size "eBPF load/store instruction sizes"
-  (all-isas) OP_SIZE_ f-op-size
-  ((W  #b00)   ;; Word:        4 byte
-   (H  #b01)   ;; Half-word:   2 byte
-   (B  #b10)   ;; Byte:        1 byte
-   (DW #b11))) ;; Double-word: 8 byte
-
-;; The fields for the source and destination registers are a bit
-;; tricky.  Due to the bizarre nibble swap between little-endian and
-;; big-endian ISAs we need to keep different variants of the fields.
-;;
-;; Note that f-regs is used in the format spec of instructions that do
-;; 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-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-regs "eBPF registers field" (all-isas) 8 8 7 8 UINT)
-
-;; Finally, the fields for the immediates.
-;;
-;; The 16-bit offsets and 32-bit immediates do not present any special
-;; 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-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
-;; multi-ifield.
-
-(dwf f-imm64-a "eBPF 64-bit immediate a" (all-isas) 32 32 31 32 UINT)
-(dwf f-imm64-b "eBPF 64-bit immediate b" (all-isas) 64 32 31 32 UINT)
-(dwf f-imm64-c "eBPF 64-bit immediate c" (all-isas) 96 32 31 32 UINT)
-
-(define-multi-ifield
-  (name f-imm64)
-  (comment "eBPF 64-bit immediate field")
-  (attrs all-isas)
-  (mode DI)
-  (subfields f-imm64-a f-imm64-b f-imm64-c)
-  (insert (sequence ()
-                    (set (ifield f-imm64-b) (const 0))
-                    (set (ifield f-imm64-c) (srl (ifield f-imm64) (const 32)))
-                    (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)))))))
-
-;;; 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 dstbe "destination register" ((ISA ebpfbe)) h-gpr f-dstbe)
-(dno srcbe "source register" ((ISA ebpfbe)) h-gpr f-srcbe)
-
-;; Jump instructions have a 16-bit PC-relative address.
-;; CALL instructions have a 32-bit PC-relative address.
-
-(dno disp16 "16-bit PC-relative address" (all-isas PCREL-ADDR) h-sint
-     f-offset16)
-(dno disp32 "32-bit PC-relative address" (all-isas PCREL-ADDR) h-sint
-     f-imm32)
-
-;; Immediate operands in eBPF are signed, and we want the disassembler
-;; to print negative values in a sane way.  Therefore we use the macro
-;; below to register a printer, which is itself defined as a C
-;; function in bpf.opc.
-
-;; define-normal-signed-immediate-operand
-(define-pmacro (dnsio x-name x-comment x-attrs x-type x-index)
-  (define-operand
-    (name x-name)
-    (comment x-comment)
-    (.splice attrs (.unsplice x-attrs))
-    (type x-type)
-    (index x-index)
-    (handlers (print "immediate"))))
-
-(dnsio imm32 "32-bit immediate" (all-isas) h-sint f-imm32)
-(dnsio offset16 "16-bit offset" (all-isas) h-sint f-offset16)
-
-;; The 64-bit immediate cannot use the default
-;; cgen_parse_signed_integer, because it assumes operands are at much
-;; 32-bit wide.  Use our own.
-
-(define-operand
-  (name imm64)
-  (comment "64-bit immediate")
-  (attrs all-isas)
-  (type h-sint64)
-  (index f-imm64)
-  (handlers (parse "imm64") (print "immediate")))
-
-;; The endle/endbe instructions take an operand to specify the word
-;; width in endianness conversions.  We use both a parser and printer,
-;; which are defined as C functions in bpf.opc.
-
-(define-operand
-  (name endsize)
-  (comment "endianness size immediate: 16, 32 or 64")
-  (attrs all-isas)
-  (type h-uint)
-  (index f-imm32)
-  (handlers (parse "endsize") (print "endsize")))
-
-;;; ALU instructions
-
-;; For each opcode in insn-op-code-alu representing and integer
-;; arithmetic instruction (ADD, SUB, etc) we define a bunch of
-;; instruction variants:
-;;
-;;   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 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)
-  (dni (.sym x-basename x-suffix x-endian)
-       (.str x-basename x-suffix)
-       ((ISA (.sym ebpf 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) () ()))
-
-(define-pmacro (define-alu-insn-bin x-basename x-suffix x-op-class x-op-code x-endian)
-  (begin
-    (dni (.sym x-basename x-suffix "i" x-endian)
-         (.str x-basename x-suffix " immediate")
-         ((ISA (.sym ebpf 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) () ())
-    (dni (.sym x-basename x-suffix "r" x-endian)
-         (.str x-basename x-suffix " register")
-         ((ISA (.sym ebpf 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) () ())))
-
-(define-pmacro (daiu x-basename x-op-code x-endian)
-  (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)))
-
-(define-pmacro (daib x-basename x-op-code x-endian)
-  (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-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)))
-
-(define-alu-instructions le)
-(define-alu-instructions be)
-
-;;; Endianness conversion instructions
-
-;; The endianness conversion instructions come in several variants:
-;;
-;;  END{le,be}le for the little-endian ISA
-;;  END{le,be}be for the big-endian ISA
-;;
-;; Please do not be confused by the repeated `be' and `le' here.  Each
-;; ISA has both endle and endbe instructions.  It is the disposition
-;; of the source and destination register fields that change between
-;; ISAs, not the semantics of the instructions themselves (see section
-;; "The ISAs" above in this very file.)
-
-(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)))
-       (.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) () ()))
-
-(define-endian-insn "le" OP_SRC_K le)
-(define-endian-insn "be" OP_SRC_X le)
-(define-endian-insn "le" OP_SRC_K be)
-(define-endian-insn "be" OP_SRC_X be)
-
-;;; Load/Store instructions
-
-;; The lddw instruction takes a 64-bit immediate as an operand.  Since
-;; this instruction also takes a `dst' operand, we need to define a
-;; variant for each ISA:
-;;
-;;  LDDWle for the little-endian ISA
-;;  LDDWbe for the big-endian ISA  
-
-(define-pmacro (define-lddw x-endian)
-  (dni (.sym lddw x-endian)
-       (.str "lddw" x-endian)
-       ((ISA (.sym ebpf 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) () ()))
-
-(define-lddw le)
-(define-lddw be)
-
-;; The absolute load instructions are non-generic loads designed to be
-;; used in socket filters.  They come in several variants:
-;;
-;; LDABS{w,h,b,dw}
-
-(define-pmacro (dlabs x-suffix x-size)
-  (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)
-
-;; The indirect load instructions are non-generic loads designed to be
-;; used in socket filters.  They come in several variants:
-;;
-;; 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)
-  (dni (.sym "ldind" x-suffix x-endian)
-       (.str "ldind" x-suffix)
-       ((ISA (.sym ebpf 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))
-       () ()))
-
-(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)))
-
-(define-ldind le)
-(define-ldind be)
-
-;; Generic load and store instructions are provided for several word
-;; sizes.  They come in several variants:
-;;
-;;  LDX{b,h,w,dw}le, STX{b,h,w,dw}le for the little-endian ISA
-;;
-;;  LDX{b,h,w,dw}be, STX{b,h,w,dw}be for the big-endian ISA
-;;
-;; Loads operate on [$SRC+-OFFSET] -> $DST
-;; Stores operate on $SRC -> [$DST+-OFFSET]
-
-(define-pmacro (dxli x-basename x-suffix x-size x-endian)
-  (dni (.sym x-basename x-suffix x-endian)
-       (.str x-basename x-suffix)
-       ((ISA (.sym ebpf 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)
-       () ()))
-
-(define-pmacro (dxsi x-basename x-suffix x-size x-endian)
-  (dni (.sym x-basename x-suffix x-endian)
-       (.str x-basename x-suffix)
-       ((ISA (.sym ebpf 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)
-       () ()))
-
-(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)))
-
-(define-ldstx-insns le)
-(define-ldstx-insns be)
-
-;; Generic store instructions of the form IMM32 -> [$DST+OFFSET] are
-;; provided in several variants:
-;;
-;;  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)
-  (dni (.sym "st" x-suffix x-endian)
-       (.str "st" x-suffix)
-       ((ISA (.sym ebpf 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) () ()))
-
-(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)))
-
-(define-st-insns le)
-(define-st-insns be)
-
-;;; Jump instructions
-
-;; Compare-and-jump instructions, on the other hand, make use of
-;; 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
-;;   little-endian ISA.
-;;   J{eq,gt,ge,lt,le,set,ne.sgt,sge,slt,sle}{i,r}be for the
-;;   big-endian ISA.
-
-(define-pmacro (dcji x-cond x-op-code x-endian)
-  (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")
-         (+ 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")
-         (+ (f-imm32 0) disp16 (.sym src x-endian) (.sym dst x-endian)
-            OP_CLASS_JMP OP_SRC_X (.sym OP_CODE_ x-op-code)) () ())))
-
-(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)))
-
-(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
-;; 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) () ())
-
-(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) () ())
-
-;;; 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 (define-atomic-insns x-endian)
-  (begin
-    (dni (.str "xadddw" x-endian)
-         "xadddw"
-         ((ISA (.sym ebpf 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) () ())
-    (dni (.str "xaddw" x-endian)
-         "xaddw"
-         ((ISA (.sym ebpf 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) () ())))
-
-(define-atomic-insns le)
-(define-atomic-insns be)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/bpf.opc ./cpu/bpf.opc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/bpf.opc	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/bpf.opc	1970-01-01 00:00:00.000000000 +0000
@@ -1,191 +0,0 @@
-/* EBPF opcode support.  -*- c -*-
-
-   Copyright (C) 2019 Free Software Foundation, Inc.
-
-   Contributed by Oracle, Inc.
-
-   This file is part of the GNU Binutils and of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU 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.  */
-
-/*
-   Each section is delimited with start and end markers.
-
-   <arch>-opc.h additions use: "-- opc.h"
-   <arch>-opc.c additions use: "-- opc.c"
-   <arch>-asm.c additions use: "-- asm.c"
-   <arch>-dis.c additions use: "-- dis.c"
-   <arch>-ibd.h additions use: "-- ibd.h".  */
-
-/* -- opc.h */
-
-#undef CGEN_DIS_HASH_SIZE
-#define CGEN_DIS_HASH_SIZE 1
-
-#undef CGEN_DIS_HASH
-#define CGEN_DIS_HASH(buffer, value) 0
-
-/* Allows reason codes to be output when assembler errors occur.  */
-#define CGEN_VERBOSE_ASSEMBLER_ERRORS
-
-#define CGEN_VALIDATE_INSN_SUPPORTED
-extern int bpf_cgen_insn_supported (CGEN_CPU_DESC, const CGEN_INSN *);
-
-
-/* -- opc.c */
-
-/* -- asm.c */
-
-/* Parse a signed 64-bit immediate.  */
-
-static const char *
-parse_imm64 (CGEN_CPU_DESC cd,
-             const char **strp,
-             int opindex,
-             int64_t *valuep)
-{
-  bfd_vma value;
-  enum cgen_parse_operand_result result;
-  const char *errmsg;
-
-  errmsg = (* cd->parse_operand_fn)
-    (cd, CGEN_PARSE_OPERAND_INTEGER, strp, opindex, BFD_RELOC_NONE,
-     &result, &value);
-  if (!errmsg)
-    *valuep = value;
-
-  return errmsg;
-}
-
-/* Endianness size operands are integer immediates whose values can be
-   16, 32 or 64.  */
-
-static const char *
-parse_endsize (CGEN_CPU_DESC cd,
-               const char **strp,
-               int opindex,
-               unsigned long *valuep)
-{
-  const char *errmsg;
-
-  errmsg = cgen_parse_unsigned_integer (cd, strp, opindex, valuep);
-  if (errmsg)
-    return errmsg;
-
-  switch (*valuep)
-    {
-    case 16:
-    case 32:
-    case 64:
-      break;
-    default:
-      return _("expected 16, 32 or 64 in");
-    }
-
-  return NULL;
-}
-
-/* Special check to ensure that the right instruction variant is used
-   for the given endianness induced by the ISA selected in the CPU.
-   See bpf.cpu for a discussion on how eBPF is really two instruction
-   sets.  */
-
-int
-bpf_cgen_insn_supported (CGEN_CPU_DESC cd, const CGEN_INSN *insn)
-{
-  CGEN_BITSET isas = CGEN_INSN_BITSET_ATTR_VALUE (insn, CGEN_INSN_ISA);
-
-  return cgen_bitset_intersect_p (&isas, cd->isas);
-}
-
-
-/* -- dis.c */
-
-/* We need to customize the disassembler a bit:
-   - Use 8 bytes per line by default.
-*/
-
-#define CGEN_PRINT_INSN bpf_print_insn
-
-static int
-bpf_print_insn (CGEN_CPU_DESC cd, bfd_vma pc, disassemble_info *info)
-{
-  bfd_byte buf[CGEN_MAX_INSN_SIZE];
-  int buflen;
-  int status;
-
-  info->bytes_per_chunk = 1;
-  info->bytes_per_line = 8;
-
-  /* Attempt to read the base part of the insn.  */
-  buflen = cd->base_insn_bitsize / 8;
-  status = (*info->read_memory_func) (pc, buf, buflen, info);
-
-  /* Try again with the minimum part, if min < base.  */
-  if (status != 0 && (cd->min_insn_bitsize < cd->base_insn_bitsize))
-    {
-      buflen = cd->min_insn_bitsize / 8;
-      status = (*info->read_memory_func) (pc, buf, buflen, info);
-    }
-
-  if (status != 0)
-    {
-      (*info->memory_error_func) (status, pc, info);
-      return -1;
-    }
-
-  return print_insn (cd, pc, info, buf, buflen);
-}
-
-/* Signed immediates should be printed in hexadecimal.  */
-
-static void
-print_immediate (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-                 void *dis_info,
-                 int64_t value,
-                 unsigned int attrs ATTRIBUTE_UNUSED,
-                 bfd_vma pc ATTRIBUTE_UNUSED,
-                 int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-  if (value <= 9)
-    (*info->fprintf_func) (info->stream, "%" PRId64, value);
-  else
-    (*info->fprintf_func) (info->stream, "%#" PRIx64, value);
-
-  /* This is to avoid -Wunused-function for print_normal.  */
-  if (0)
-    print_normal (cd, dis_info, value, attrs, pc, length);
-}
-
-/* Endianness bit sizes should be printed in decimal.  */
-
-static void
-print_endsize (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-               void *dis_info,
-               unsigned long value,
-               unsigned int attrs ATTRIBUTE_UNUSED,
-               bfd_vma pc ATTRIBUTE_UNUSED,
-               int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-  (*info->fprintf_func) (info->stream, "%lu", 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.20200303/cpu/ChangeLog ./cpu/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/ChangeLog	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/ChangeLog	2026-03-05 02:07:20.000000000 +0000
@@ -1,3 +1,254 @@
+2025-07-13  Nick Clifton  <nickc@redhat.com>
+
+	* 2.45 Branch point.
+
+2025-01-19  Nick Clifton  <nickc@redhat.com>
+
+	* 2.44 Branch point.
+
+2024-07-20  Nick Clifton  <nickc@redhat.com>
+
+	* 2.43 branch point.
+
+2024-01-15  Nick Clifton  <nickc@redhat.com>
+
+	* 2.42 branch point.
+
+2023-07-03  Nick Clifton  <nickc@redhat.com>
+
+	* 2.41 Branch Point.
+
+2023-03-15  Nick Clifton  <nickc@redhat.com>
+
+	PR 30231
+	* mep.opc (mep_print_insn): Check for an out of range index.
+
+2022-12-31  Nick Clifton  <nickc@redhat.com>
+
+	* 2.40 branch created.
+
+2022-07-08  Nick Clifton  <nickc@redhat.com>
+
+	* 2.39 branch created.
+
+2022-01-22  Nick Clifton  <nickc@redhat.com>
+
+	* 2.38 release branch created.
+
+2021-07-05  Alan Modra  <amodra@gmail.com>
+
+	* mep.opc (macros): Make static and const.
+	(lookup_macro): Return and use const pointer.
+	(expand_macro): Make mac param const.
+	(expand_string): Make pmacro const.
+
+2021-07-03  Nick Clifton  <nickc@redhat.com>
+
+	* 2.37 release branch created.
+
+2021-05-06  Stafford Horne  <shorne@gmail.com>
+
+	PR 21464
+	* or1k.opc (or1k_imm16_relocs, parse_reloc): Define parse logic
+	for gotha() relocation.
+
+2021-03-31  Alan Modra  <amodra@gmail.com>
+
+	* frv.opc: Replace bfd_boolean with bool, FALSE with false, and
+	TRUE with true throughout.
+
+2021-03-29  Alan Modra  <amodra@gmail.com>
+
+	* frv.opc (frv_is_branch_major, frv_is_float_major),
+	(frv_is_media_major, frv_is_branch_insn, frv_is_float_insn),
+	(frv_is_media_insn, spr_valid): Correct prototypes.
+
+2021-01-09  Nick Clifton  <nickc@redhat.com>
+
+	* 2.36 release branch crated.
+
+2020-10-05  Samanta Navarro  <ferivoz@riseup.net>
+
+	* m32r.cpu: Fix spelling mistakes.
+
+2020-09-18  David Faust  <david.faust@oracle.com>
+
+	* bpf.cpu (insn-op-code-alu): Add SDIV and SMOD.
+	(define-alu-insn-bin, daib): Take ISAs as an argument.
+	(define-alu-instructions): Update calls to daib pmacro with
+	ISAs; add sdiv and smod.
+
+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.20200303/cpu/cris.cpu ./cpu/cris.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/cris.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/cris.cpu	2026-03-05 02:07:20.000000000 +0000
@@ -550,7 +550,8 @@
 	 (condn condc)
 	 ((eq tmpcond condn) (set condres (.sym condc -condition))))
 	(.iota 16)
-	cris-condition-codes)))
+	cris-condition-codes))
+      (else (error "Unknown condition code")))
      condres)
 )
 
@@ -2598,10 +2599,11 @@
      "move ${Ps},${Rd-sfield}"
      (+ Ps RFIX_MOVE_S_R MODE_REGISTER SIZE_FIXED Rd-sfield)
      (sequence
-       ((SI grno) (SI prno) (SI newval))
+       ((SI prno) (SI newval))
        (set prno (regno Ps))
-       ; CGEN-FIXME: Can't use the following and then "grno" below because
-       ; CGEN will emit a "tmp_grno" *also* in decodev32.c:crisv32f_decode
+       ; CGEN-FIXME: Can't declare (SI grno), then the following, and then
+       ; "grno" below because CGEN will emit a "tmp_grno" *also* in
+       ; decodev32.c:crisv32f_decode.  So inline RD-sfield below.
        ; (set grno (regno Rd-sfield))
        (set newval Ps)
        (.splice
@@ -3666,10 +3668,10 @@
   "Perform word-wise swap within each dword"
   (sequence
     SI
-    ((SI tmpb))
-    (set tmpb x)
-    (or (and (sll tmpb 16) #xffff0000)
-	(and (srl tmpb 16) #xffff)))
+    ((SI tmpw))
+    (set tmpw x)
+    (or (and (sll tmpw 16) #xffff0000)
+	(and (srl tmpw 16) #xffff)))
 )
 
 (define-pmacro (swap-_ x)
@@ -3709,7 +3711,8 @@
 	((eq tmpcode x-swapcode)
 	 (set tmpres ((.sym swap- x-swap) tmpval))))
        (.iota 16)
-       (.splice _ (.unsplice cris-swap-codes)))))
+       (.splice _ (.unsplice cris-swap-codes))))
+     (else (error "Unknown swapcode")))
     tmpres)
 )
 
@@ -3838,7 +3841,8 @@
  (+ Rd MODE_REGISTER RFIX_BTST SIZE_FIXED Rs)
  (sequence
    ((SI tmpd) (SI cnt))
-   (set tmpd (sll Rd (sub 31 (and Rs 31))))
+   (set cnt (sub 31 (and Rs 31)))
+   (set tmpd (sll Rd cnt))
    (setf-move SI tmpd))
 )
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/fr30.cpu ./cpu/fr30.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/fr30.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/fr30.cpu	2026-03-05 02:07:20.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.20200303/cpu/frv.cpu ./cpu/frv.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/frv.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/frv.cpu	2026-03-05 02:07:20.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)))
 )
 
@@ -2933,7 +2933,7 @@
   (name h-acc40U)
   (comment "40 bit unsigned accumulator")
   (attrs PROFILE VIRTUAL)
-  (type register UDI (64))
+  (type register DI (64))
   (indices extern-keyword acc-names)
   ; The accumlator is made up of two 32 bit registers, accgi/acci.
   ; We want to extract this as a combined 40 unsigned bits
@@ -4266,6 +4266,7 @@
      "cmpb$pack $GRi,$GRj,$ICCi_1"
      (+ pack (GRk-null) OP_00 GRi ICCi_1 OPE2_0C GRj)
      (sequence ((QI cc))
+	       (set cc 0)
 	       (set-n cc (eq (and GRi #xff000000) (and GRj #xff000000)))
 	       (set-z cc (eq (and GRi #x00ff0000) (and GRj #x00ff0000)))
 	       (set-v cc (eq (and GRi #x0000ff00) (and GRj #x0000ff00)))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/frv.opc ./cpu/frv.opc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/frv.opc	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/frv.opc	2026-03-05 02:07:20.000000000 +0000
@@ -66,15 +66,15 @@ typedef struct
   const CGEN_INSN *      insn[FRV_VLIW_SIZE];
 } FRV_VLIW;
 
-int frv_is_branch_major (CGEN_ATTR_VALUE_ENUM_TYPE, unsigned long);
-int frv_is_float_major  (CGEN_ATTR_VALUE_ENUM_TYPE, unsigned long);
-int frv_is_media_major  (CGEN_ATTR_VALUE_ENUM_TYPE, unsigned long);
-int frv_is_branch_insn  (const CGEN_INSN *);
-int frv_is_float_insn   (const CGEN_INSN *);
-int frv_is_media_insn   (const CGEN_INSN *);
-void frv_vliw_reset     (FRV_VLIW *, unsigned long, unsigned long);
-int frv_vliw_add_insn   (FRV_VLIW *, const CGEN_INSN *);
-int spr_valid           (long);
+bool frv_is_branch_major (CGEN_ATTR_VALUE_ENUM_TYPE, unsigned long);
+bool frv_is_float_major  (CGEN_ATTR_VALUE_ENUM_TYPE, unsigned long);
+bool frv_is_media_major  (CGEN_ATTR_VALUE_ENUM_TYPE, unsigned long);
+bool frv_is_branch_insn  (const CGEN_INSN *);
+bool frv_is_float_insn   (const CGEN_INSN *);
+bool frv_is_media_insn   (const CGEN_INSN *);
+void frv_vliw_reset      (FRV_VLIW *, unsigned long, unsigned long);
+int  frv_vliw_add_insn   (FRV_VLIW *, const CGEN_INSN *);
+bool spr_valid           (long);
 /* -- */
 
 /* -- opc.c */
@@ -88,117 +88,117 @@ int spr_valid           (long);
 /* Returns TRUE if {MAJOR,MACH} is a major branch of the FRV
    development tree.  */
 
-bfd_boolean
+bool
 frv_is_branch_major (CGEN_ATTR_VALUE_ENUM_TYPE major, unsigned long mach)
 {
   switch (mach)
     {
     case bfd_mach_fr400:
       if (major >= FR400_MAJOR_B_1 && major <= FR400_MAJOR_B_6)
-	return TRUE;
+	return true;
       break;
     case bfd_mach_fr450:
       if (major >= FR450_MAJOR_B_1 && major <= FR450_MAJOR_B_6)
-	return TRUE;
+	return true;
       break;
     default:
       if (major >= FR500_MAJOR_B_1 && major <= FR500_MAJOR_B_6)
-	return TRUE;
+	return true;
       break;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Returns TRUE if {MAJOR,MACH} supports floating point insns.  */
 
-bfd_boolean
+bool
 frv_is_float_major (CGEN_ATTR_VALUE_ENUM_TYPE major, unsigned long mach)
 {
   switch (mach)
     {
     case bfd_mach_fr400:
     case bfd_mach_fr450:
-      return FALSE;
+      return false;
     default:
       if (major >= FR500_MAJOR_F_1 && major <= FR500_MAJOR_F_8)
-	return TRUE;
+	return true;
       break;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Returns TRUE if {MAJOR,MACH} supports media insns.  */
 
-bfd_boolean
+bool
 frv_is_media_major (CGEN_ATTR_VALUE_ENUM_TYPE major, unsigned long mach)
 {
   switch (mach)
     {
     case bfd_mach_fr400:
       if (major >= FR400_MAJOR_M_1 && major <= FR400_MAJOR_M_2)
-	return TRUE;
+	return true;
       break;
     case bfd_mach_fr450:
       if (major >= FR450_MAJOR_M_1 && major <= FR450_MAJOR_M_6)
-	return TRUE;
+	return true;
       break;
     default:
       if (major >= FR500_MAJOR_M_1 && major <= FR500_MAJOR_M_8)
-	return TRUE;
+	return true;
       break;
     }
 
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 frv_is_branch_insn (const CGEN_INSN *insn)
 {
   if (frv_is_branch_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR),
 			   bfd_mach_fr400))
-    return TRUE;
+    return true;
   if (frv_is_branch_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR450_MAJOR),
 			   bfd_mach_fr450))
-    return TRUE;
+    return true;
   if (frv_is_branch_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR),
 			   bfd_mach_fr500))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 frv_is_float_insn (const CGEN_INSN *insn)
 {
   if (frv_is_float_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR),
 			  bfd_mach_fr400))
-    return TRUE;
+    return true;
   if (frv_is_float_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR450_MAJOR),
 			  bfd_mach_fr450))
-    return TRUE;
+    return true;
   if (frv_is_float_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR),
 			  bfd_mach_fr500))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
-bfd_boolean
+bool
 frv_is_media_insn (const CGEN_INSN *insn)
 {
   if (frv_is_media_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR400_MAJOR),
 			  bfd_mach_fr400))
-    return TRUE;
+    return true;
   if (frv_is_media_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR450_MAJOR),
 			  bfd_mach_fr450))
-    return TRUE;
+    return true;
   if (frv_is_media_major (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_FR500_MAJOR),
 			  bfd_mach_fr500))
-    return TRUE;
+    return true;
 
-  return FALSE;
+  return false;
 }
 
 /* This table represents the allowable packing for vliw insns for the fr400.
@@ -439,7 +439,7 @@ frv_vliw_reset (FRV_VLIW *vliw, unsigned
 /* Return TRUE if unit1 is a match for unit2.
    Unit1 comes from the insn's UNIT attribute. unit2 comes from one of the
    *_allowed_vliw tables above.  */
-static bfd_boolean
+static bool
 match_unit (FRV_VLIW *vliw,
 	    CGEN_ATTR_VALUE_ENUM_TYPE unit1, CGEN_ATTR_VALUE_ENUM_TYPE unit2)
 {
@@ -447,9 +447,9 @@ match_unit (FRV_VLIW *vliw,
   unit1 = vliw->unit_mapping[unit1];
 
   if (unit1 == unit2)
-    return TRUE;
+    return true;
   if (unit1 < unit2)
-    return FALSE;
+    return false;
 
   switch (unit1)
     {
@@ -459,34 +459,34 @@ match_unit (FRV_VLIW *vliw,
       /* The 01 versions of these units are within 2 enums of the 0 or 1
 	 versions.  */
       if (unit1 - unit2 <= 2)
-	return TRUE;
+	return true;
       break;
     case UNIT_IALL:
     case UNIT_FMALL:
       /* The ALL versions of these units are within 5 enums of the 0, 1, 2 or 3
 	 versions.  */
       if (unit1 - unit2 <= 5)
-	return TRUE;
+	return true;
       break;
     default:
       break;
     }
 
-  return FALSE;
+  return false;
 }
 
 /* Return TRUE if the vliws match, FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 match_vliw (VLIW_COMBO *vliw1, VLIW_COMBO *vliw2, int vliw_size)
 {
   int i;
 
   for (i = 0; i < vliw_size; ++i)
     if ((*vliw1)[i] != (*vliw2)[i])
-      return FALSE;
+      return false;
 
-  return TRUE;
+  return true;
 }
 
 /* Find the next vliw vliw in the table that can accomodate the new insn.
@@ -523,22 +523,22 @@ add_next_to_vliw (FRV_VLIW *vliw, CGEN_A
 /* Look for the given major insn type in the given vliw.
    Returns TRUE if found, FALSE otherwise.  */
 
-static bfd_boolean
+static bool
 find_major_in_vliw (FRV_VLIW *vliw, CGEN_ATTR_VALUE_ENUM_TYPE major)
 {
   int i;
 
   for (i = 0; i < vliw->next_slot; ++i)
     if (vliw->major[i] == major)
-      return TRUE;
+      return true;
 
-  return FALSE;
+  return false;
 }
 
 /* Check for constraints between the insns in the vliw due to major insn
    types.  */
 
-static bfd_boolean
+static bool
 fr400_check_insn_major_constraints (FRV_VLIW *vliw, CGEN_ATTR_VALUE_ENUM_TYPE major)
 {
   /* In the cpu file, all media insns are represented as being allowed in
@@ -555,10 +555,10 @@ fr400_check_insn_major_constraints (FRV_
     default:
       break;
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 fr450_check_insn_major_constraints (FRV_VLIW *vliw, CGEN_ATTR_VALUE_ENUM_TYPE major)
 {
   CGEN_ATTR_VALUE_ENUM_TYPE other_major;
@@ -569,7 +569,7 @@ fr450_check_insn_major_constraints (FRV_
   /* (M4, M5) and (M4, M6) are allowed.  */
   if (other_major == FR450_MAJOR_M_4)
     if (major == FR450_MAJOR_M_5 || major == FR450_MAJOR_M_6)
-      return TRUE;
+      return true;
 
   /* Otherwise, instructions in even-numbered media categories cannot be
      executed in parallel with other media instructions.  */
@@ -589,23 +589,23 @@ fr450_check_insn_major_constraints (FRV_
 	       || other_major == FR450_MAJOR_M_6);
 
     default:
-      return TRUE;
+      return true;
     }
 }
 
-static bfd_boolean
+static bool
 find_unit_in_vliw (FRV_VLIW *vliw, CGEN_ATTR_VALUE_ENUM_TYPE unit)
 {
   int i;
 
   for (i = 0; i < vliw->next_slot; ++i)
     if (CGEN_INSN_ATTR_VALUE (vliw->insn[i], CGEN_INSN_UNIT) == unit)
-      return TRUE;
+      return true;
 
-  return FALSE; /* Not found.  */
+  return false; /* Not found.  */
 }
 
-static bfd_boolean
+static bool
 find_major_in_slot (FRV_VLIW *vliw,
 		    CGEN_ATTR_VALUE_ENUM_TYPE major,
 		    CGEN_ATTR_VALUE_ENUM_TYPE slot)
@@ -614,12 +614,12 @@ find_major_in_slot (FRV_VLIW *vliw,
 
   for (i = 0; i < vliw->next_slot; ++i)
     if (vliw->major[i] == major && (*vliw->current_vliw)[i] == slot)
-      return TRUE;
+      return true;
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 fr550_find_media_in_vliw (FRV_VLIW *vliw)
 {
   int i;
@@ -635,13 +635,13 @@ fr550_find_media_in_vliw (FRV_VLIW *vliw
 	  || CGEN_INSN_NUM (vliw->insn[i]) == FRV_INSN_MCLRACC_1)
 	continue;
 
-      return TRUE; /* Found one.  */
+      return true; /* Found one.  */
     }
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 fr550_find_float_in_vliw (FRV_VLIW *vliw)
 {
   int i;
@@ -655,13 +655,13 @@ fr550_find_float_in_vliw (FRV_VLIW *vliw
       if (CGEN_INSN_NUM (vliw->insn[i]) == FRV_INSN_FNOP)
 	continue;
 
-      return TRUE; /* Found one.  */
+      return true; /* Found one.  */
     }
 
-  return FALSE;
+  return false;
 }
 
-static bfd_boolean
+static bool
 fr550_check_insn_major_constraints (FRV_VLIW *vliw,
 				    CGEN_ATTR_VALUE_ENUM_TYPE major,
 				    const CGEN_INSN *insn)
@@ -709,10 +709,10 @@ fr550_check_insn_major_constraints (FRV_
     default:
       break;
     }
-  return TRUE; /* All OK.  */
+  return true; /* All OK.  */
 }
 
-static bfd_boolean
+static bool
 fr500_check_insn_major_constraints (FRV_VLIW *vliw, CGEN_ATTR_VALUE_ENUM_TYPE major)
 {
   /* TODO: A table might be faster for some of the more complex instances
@@ -732,7 +732,7 @@ fr500_check_insn_major_constraints (FRV_
     case FR500_MAJOR_F_4:
     case FR500_MAJOR_F_8:
     case FR500_MAJOR_M_8:
-      return TRUE; /* OK */
+      return true; /* OK */
     case FR500_MAJOR_I_2:
       /* Cannot coexist with I-3 insn.  */
       return ! find_major_in_vliw (vliw, FR500_MAJOR_I_3);
@@ -816,10 +816,10 @@ fr500_check_insn_major_constraints (FRV_
       abort ();
       break;
     }
-  return TRUE;
+  return true;
 }
 
-static bfd_boolean
+static bool
 check_insn_major_constraints (FRV_VLIW *vliw,
 			      CGEN_ATTR_VALUE_ENUM_TYPE major,
 			      const CGEN_INSN *insn)
@@ -919,12 +919,12 @@ frv_vliw_add_insn (FRV_VLIW *vliw, const
   return 1;
 }
 
-bfd_boolean
+bool
 spr_valid (long regno)
 {
-  if (regno < 0)     return FALSE;
-  if (regno <= 4095) return TRUE;
-  return FALSE;
+  if (regno < 0)     return false;
+  if (regno <= 4095) 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.20200303/cpu/iq2000.cpu ./cpu/iq2000.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/iq2000.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/iq2000.cpu	2026-03-05 02:07:20.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.
 
@@ -1059,7 +1059,7 @@
 (dni syscall "system call" (YIELD-INSN)
      "syscall"
      (+ OP_SPECIAL execode (f-func 12))
-     (c-call VOID "do_syscall")
+     (c-call VOID "do_syscall" pc)
      ())
 
 ; Macro instructions, common to iq10 & iq2000
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/m32c.cpu ./cpu/m32c.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/m32c.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/m32c.cpu	2026-03-05 02:07:20.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.20200303/cpu/m32r.cpu ./cpu/m32r.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/m32r.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/m32r.cpu	2026-03-05 02:07:20.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)
@@ -742,7 +742,7 @@
 (dnop disp16 "16 bit displacement" () h-iaddr f-disp16)
 (dnop disp24 "24 bit displacement" (RELAX) h-iaddr f-disp24)
 
-; These hardware elements are refered to frequently.
+; These hardware elements are referred to frequently.
 
 (dnop condbit "condition bit" (SEM-ONLY) h-cond f-nil)
 (dnop accum "accumulator" (SEM-ONLY) h-accum f-nil)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/mep-core.cpu ./cpu/mep-core.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/mep-core.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/mep-core.cpu	2026-03-05 02:07:20.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.20200303/cpu/mep.opc ./cpu/mep.opc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/mep.opc	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/mep.opc	2026-03-05 02:07:20.000000000 +0000
@@ -82,7 +82,7 @@ extern CGEN_ATTR_VALUE_BITSET_TYPE mep_a
 )
 
 /* A mask for all ISAs executed by a VLIW coprocessor.  */
-#define MEP_ALL_COP_ISAS_MASK mep_all_cop_isas_mask 
+#define MEP_ALL_COP_ISAS_MASK mep_all_cop_isas_mask
 extern CGEN_ATTR_VALUE_BITSET_TYPE mep_all_cop_isas_mask;
 
 #define MEP_INSN_COP_P(insn) ( \
@@ -349,6 +349,7 @@ parse_lo16 (CGEN_CPU_DESC cd,
     }
 
   if (**strp == '%')
+    /* xgettext:no-c-format */
     return _("invalid %function() here");
 
   return cgen_parse_signed_integer (cd, strp, opindex, valuep);
@@ -533,7 +534,7 @@ parse_unsigned7 (CGEN_CPU_DESC cd, const
 	  break;
 	default:
 	  /* Safe assumption?  */
-	  abort (); 
+	  abort ();
 	}
       errmsg = cgen_parse_address (cd, strp, opindex, reloc,
 				   NULL, &value);
@@ -545,6 +546,7 @@ parse_unsigned7 (CGEN_CPU_DESC cd, const
     }
 
   if (**strp == '%')
+    /* xgettext:no-c-format */
     return _("invalid %function() here");
 
   return parse_mep_alignu (cd, strp, opindex, valuep);
@@ -579,7 +581,7 @@ parse_cdisp10 (CGEN_CPU_DESC cd,
   if ((MEP_CPU & EF_MEP_CPU_MASK) == EF_MEP_CPU_C5)
     wide = 1;
 
-  if (strncmp (*strp, "0x0", 3) == 0 
+  if (strncmp (*strp, "0x0", 3) == 0
       || (**strp == '0' && *(*strp + 1) != 'x'))
     have_zero = 1;
 
@@ -626,7 +628,7 @@ typedef struct
   int len;
 } arg;
 
-macro macros[] =
+static macro const macros[] =
 {
   { "sizeof", "(`1.end + (- `1))"},
   { "startof", "(`1 | 0)" },
@@ -646,7 +648,7 @@ mep_cgen_expand_macros_and_parse_operand
 
 static char *
 str_append (char *dest, const char *input, int len)
-{  
+{
   char *new_dest;
   int oldlen;
 
@@ -659,10 +661,10 @@ str_append (char *dest, const char *inpu
   return strncat (new_dest, input, len);
 }
 
-static macro *
+static const macro *
 lookup_macro (const char *name)
 {
-  macro *m;
+  const macro *m;
 
   for (m = macros; m->name; ++m)
     if (strncmp (m->name, name, strlen(m->name)) == 0)
@@ -672,7 +674,7 @@ lookup_macro (const char *name)
 }
 
 static char *
-expand_macro (arg *args, int narg, macro *mac)
+expand_macro (arg *args, int narg, const macro *mac)
 {
   char *result = 0, *rescanned_result = 0;
   char *e = mac->expansion;
@@ -682,10 +684,10 @@ expand_macro (arg *args, int narg, macro
   /*  printf("expanding macro %s with %d args\n", mac->name, narg + 1); */
   while (*e)
     {
-      if (*e == '`' && 
-	  (*e+1) && 
-	  ((*(e + 1) - '1') <= MAXARGS) &&
-	  ((*(e + 1) - '1') <= narg))
+      if (*e == '`'
+	  && (*e+1)
+	  && ((*(e + 1) - '1') <= MAXARGS)
+	  && ((*(e + 1) - '1') <= narg))
 	{
 	  result = str_append (result, mark, e - mark);
 	  mac_arg = (*(e + 1) - '1');
@@ -706,7 +708,7 @@ expand_macro (arg *args, int narg, macro
       free (result);
       return rescanned_result;
     }
-  else 
+  else
     return result;
 }
 
@@ -722,7 +724,7 @@ expand_string (const char *in, int first
   arg args[MAXARGS];
   int state = IN_TEXT;
   const char *mark = in;
-  macro *pmacro = NULL;
+  const macro *pmacro = NULL;
   char *expansion = 0;
   char *result = 0;
 
@@ -731,8 +733,8 @@ expand_string (const char *in, int first
       switch (state)
 	{
 	case IN_TEXT:
-	  if (*in == '%' && *(in + 1) && (!first_only || num_expansions == 0)) 
-	    {	      
+	  if (*in == '%' && *(in + 1) && (!first_only || num_expansions == 0))
+	    {
 	      pmacro = lookup_macro (in + 1);
 	      if (pmacro)
 		{
@@ -743,7 +745,7 @@ expand_string (const char *in, int first
 		  while (*in == ' ') ++in;
 		  if (*in != '(')
 		    {
-		      state = IN_TEXT;		      
+		      state = IN_TEXT;
 		      pmacro = NULL;
 		    }
 		  else
@@ -752,7 +754,7 @@ expand_string (const char *in, int first
 		      narg = 0;
 		      args[narg].start = in + 1;
 		      args[narg].len = 0;
-		      mark = in + 1;	      		      
+		      mark = in + 1;
 		    }
 		}
 	    }
@@ -793,9 +795,9 @@ expand_string (const char *in, int first
 		  /* Fall through.  */
 		default:
 		  args[narg].len++;
-		  break;		  
+		  break;
 		}
-	    } 
+	    }
 	  else
 	    {
 	      if (*in == ')')
@@ -803,14 +805,13 @@ expand_string (const char *in, int first
 	      if (narg > -1)
 		args[narg].len++;
 	    }
-	  
 	}
       ++in;
     }
-  
+
   if (mark != in)
     result = str_append (result, mark, in - mark);
-  
+
   return result;
 }
 
@@ -849,19 +850,18 @@ mep_cgen_expand_macros_and_parse_operand
     {
       if (strstr (*strp_in, str))
 	/* A macro-expansion was pulled off the front.  */
-	*strp_in = strstr (*strp_in, str);  
+	*strp_in = strstr (*strp_in, str);
       else
 	/* A non-macro-expansion was pulled off the front.  */
-	*strp_in += (str - hold); 
+	*strp_in += (str - hold);
     }
 
-  if (hold)
-    free (hold);
+  free (hold);
 
   return errmsg;
 }
 
-#define CGEN_ASM_INIT_HOOK (cd->parse_operand = mep_cgen_expand_macros_and_parse_operand); 
+#define CGEN_ASM_INIT_HOOK (cd->parse_operand = mep_cgen_expand_macros_and_parse_operand);
 
 /* -- dis.c */
 
@@ -870,11 +870,8 @@ mep_cgen_expand_macros_and_parse_operand
 
 #define CGEN_VALIDATE_INSN_SUPPORTED
 
-static void print_tpreg (CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int);
-static void print_spreg (CGEN_CPU_DESC, PTR, CGEN_KEYWORD *, long, unsigned int);
-
 static void
-print_tpreg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, PTR dis_info,
+print_tpreg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, void *dis_info,
 	     CGEN_KEYWORD *table ATTRIBUTE_UNUSED, long val ATTRIBUTE_UNUSED,
 	     unsigned int flags ATTRIBUTE_UNUSED)
 {
@@ -884,7 +881,7 @@ print_tpreg (CGEN_CPU_DESC cd ATTRIBUTE_
 }
 
 static void
-print_spreg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, PTR dis_info, 
+print_spreg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED, void *dis_info,
 	     CGEN_KEYWORD *table ATTRIBUTE_UNUSED, long val ATTRIBUTE_UNUSED,
 	     unsigned int flags ATTRIBUTE_UNUSED)
 {
@@ -949,11 +946,11 @@ mep_print_vliw_insns (CGEN_CPU_DESC cd,
   if (corelength > 0)
     {
       int my_status = 0;
-	 
+
       for (i = 0; i < corelength; i++ )
 	insnbuf[i] = buf[i];
       cd->isas = & MEP_CORE_ISA;
-	 
+
       my_status = print_insn (cd, pc, info, insnbuf, corelength);
       if (my_status != corelength)
 	{
@@ -962,10 +959,10 @@ mep_print_vliw_insns (CGEN_CPU_DESC cd,
 	}
       status += my_status;
 
-      /* Print the + to indicate that the following copro insn is   */
-      /* part of a vliw group.                                      */
+      /* Print the + to indicate that the following copro insn is
+	 part of a vliw group.  */
       if (copro1length > 0)
-	(*info->fprintf_func) (info->stream, " + "); 
+	(*info->fprintf_func) (info->stream, " + ");
     }
 
   /* Now all that is left to be processed is the coprocessor insns
@@ -977,7 +974,7 @@ mep_print_vliw_insns (CGEN_CPU_DESC cd,
   if (copro1length > 0)
     {
       int my_status = 0;
-	 
+
       for (i = corelength; i < corelength + copro1length; i++ )
 	insnbuf[i - corelength] = buf[i];
 
@@ -996,7 +993,7 @@ mep_print_vliw_insns (CGEN_CPU_DESC cd,
 	  break;
 	case 8:
 	  cd->isas = & MEP_COP64_ISA;
-	  break; 
+	  break;
 	default:
 	  /* Shouldn't be anything but 16,32,48,64.  */
 	  break;
@@ -1029,7 +1026,7 @@ mep_print_vliw_insns (CGEN_CPU_DESC cd,
 
       for (i = corelength + copro1length; i < 64; i++)
 	insnbuf[i - (corelength + copro1length)] = buf[i];
-      
+
       switch (copro2length)
 	{
 	case 2:
@@ -1042,7 +1039,7 @@ mep_print_vliw_insns (CGEN_CPU_DESC cd,
 	  cd->isas = 1 << ISA_EXT_COP1_48;
 	  break;
 	case 8:
-	  cd->isas = 1 << ISA_EXT_COP1_64; 
+	  cd->isas = 1 << ISA_EXT_COP1_64;
 	  break;
 	default:
 	  /* Shouldn't be anything but 16,32,48,64.  */
@@ -1070,29 +1067,29 @@ mep_print_vliw_insns (CGEN_CPU_DESC cd,
     return status;
 }
 
-/* The two functions mep_examine_vliw[32,64]_insns are used find out 
-   which vliw combinaion (16 bit core with 48 bit copro, 32 bit core 
-   with 32 bit copro, etc.) is present.  Later on, when internally   
-   parallel coprocessors are handled, only these functions should    
-   need to be changed.                                               
+/* The two functions mep_examine_vliw[32,64]_insns are used find out
+   which vliw combinaion (16 bit core with 48 bit copro, 32 bit core
+   with 32 bit copro, etc.) is present.  Later on, when internally
+   parallel coprocessors are handled, only these functions should
+   need to be changed.
+
+   At this time only the following combinations are supported:
 
-   At this time only the following combinations are supported: 
-   
    VLIW32 Mode:
    16 bit core insn (core) and 16 bit coprocessor insn (cop1)
    32 bit core insn (core)
    32 bit coprocessor insn (cop1)
    Note: As of this time, I do not believe we have enough information
          to distinguish a 32 bit core insn from a 32 bit cop insn. Also,
-         no 16 bit coprocessor insns have been specified.  
+         no 16 bit coprocessor insns have been specified.
 
    VLIW64 Mode:
    16 bit core insn (core) and 48 bit coprocessor insn (cop1)
    32 bit core insn (core) and 32 bit coprocessor insn (cop1)
    64 bit coprocessor insn (cop1)
-  
+
    The framework for an internally parallel coprocessor is also
-   present (2nd coprocessor insn is cop2), but at this time it 
+   present (2nd coprocessor insn is cop2), but at this time it
    is not used.  This only appears to be valid in VLIW64 mode.  */
 
 static int
@@ -1103,9 +1100,9 @@ mep_examine_vliw32_insns (CGEN_CPU_DESC
   int corebuflength;
   int cop1buflength;
   int cop2buflength;
-  bfd_byte buf[CGEN_MAX_INSN_SIZE];  
+  bfd_byte buf[CGEN_MAX_INSN_SIZE];
   char indicator16[1];
-  char indicatorcop32[2]; 
+  char indicatorcop32[2];
 
   /* At this time we're not supporting internally parallel coprocessors,
      so cop2buflength will always be 0.  */
@@ -1144,16 +1141,16 @@ mep_examine_vliw32_insns (CGEN_CPU_DESC
     {
       if ((indicatorcop32[0] & 0xf0) == 0xf0 && (indicatorcop32[1] & 0x07) == 0x07)
 	{
-          /* We have a 32 bit copro insn.  */
-          corebuflength = 0;
+	  /* We have a 32 bit copro insn.  */
+	  corebuflength = 0;
 	  /* All 4 4ytes are one copro insn. */
-          cop1buflength = 4;
+	  cop1buflength = 4;
 	}
       else
 	{
-          /* We have a 32 bit core.  */
-          corebuflength = 4;
-          cop1buflength = 0;
+	  /* We have a 32 bit core.  */
+	  corebuflength = 4;
+	  cop1buflength = 0;
 	}
     }
   else
@@ -1233,16 +1230,16 @@ mep_examine_vliw64_insns (CGEN_CPU_DESC
       if ((indicator64[0] & 0xf0) == 0xf0 && (indicator64[1] & 0x07) == 0x07
 	  && ((indicator64[2] & 0xfe) != 0xf0 || (indicator64[3] & 0xf4) != 0))
 	{
-          /* We have a 64 bit copro insn.  */
-          corebuflength = 0;
+	  /* We have a 64 bit copro insn.  */
+	  corebuflength = 0;
 	  /* All 8 bytes are one copro insn.  */
-          cop1buflength = 8;
+	  cop1buflength = 8;
 	}
       else
 	{
-          /* We have a 32 bit core insn and a 32 bit copro insn.  */
-          corebuflength = 4;
-          cop1buflength = 4;
+	  /* We have a 32 bit core insn and a 32 bit copro insn.  */
+	  corebuflength = 4;
+	  cop1buflength = 4;
 	}
     }
   else
@@ -1272,7 +1269,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
@@ -1294,10 +1291,10 @@ print_slot_insn (CGEN_CPU_DESC cd,
       if ((CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_CONFIG)
 	   && CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_CONFIG) != MEP_CONFIG)
 	  || ! (CGEN_ATTR_CGEN_INSN_SLOTS_VALUE (CGEN_INSN_ATTRS (insn)) & (1 << slot)))
-        {
-          insn_list = CGEN_DIS_NEXT_INSN (insn_list);
+	{
+	  insn_list = CGEN_DIS_NEXT_INSN (insn_list);
 	  continue;
-        }
+	}
 
       if ((insn_value & CGEN_INSN_BASE_MASK (insn))
 	  == CGEN_INSN_BASE_VALUE (insn))
@@ -1452,12 +1449,29 @@ mep_print_insn (CGEN_CPU_DESC cd, bfd_vm
   if (info->section && info->section->owner)
     {
       bfd *abfd = info->section->owner;
-      mep_config_index = abfd->tdata.elf_obj_data->elf_header->e_flags & EF_MEP_INDEX_MASK;
-      /* This instantly redefines MEP_CONFIG, MEP_OMASK, .... MEP_VLIW64 */
+      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
+	{
+	  mep_config_index = abfd->tdata.elf_obj_data->elf_header->e_flags & EF_MEP_INDEX_MASK;
+	  /* This instantly redefines MEP_CONFIG, MEP_OMASK, .... MEP_VLIW64 */
+
+	  /* mep_config_map is a variable sized array, so we do not know how big it is.
+	     The only safe way to check the index therefore is to iterate over the array.
+	     We do know that the last entry is all null.  */
+	  int i;
+	  for (i = 0; i <= mep_config_index; i++)
+	    if (mep_config_map[i].name == NULL)
+	      break;
+
+	  if (i < mep_config_index)
+	    {
+	      opcodes_error_handler (_("illegal MEP INDEX setting '%x' in ELF header e_flags field"), mep_config_index);
+	      mep_config_index = 0;
+	    }
 
-      cop_type = abfd->tdata.elf_obj_data->elf_header->e_flags & EF_MEP_COP_MASK;
-      if (cop_type == EF_MEP_COP_IVC2)
-	ivc2 = 1;
+	  cop_type = abfd->tdata.elf_obj_data->elf_header->e_flags & EF_MEP_COP_MASK;
+	  if (cop_type == EF_MEP_COP_IVC2)
+	    ivc2 = 1;
+	}
     }
 
   /* Picking the right ISA bitmask for the current context is tricky.  */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/mt.opc ./cpu/mt.opc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/mt.opc	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/mt.opc	2026-03-05 02:07:20.000000000 +0000
@@ -434,9 +434,6 @@ parse_type (CGEN_CPU_DESC cd,
 }
 
 /* -- dis.c */
-static void print_dollarhex (CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int);
-static void print_pcrel (CGEN_CPU_DESC, PTR, long, unsigned, bfd_vma, int);
-
 static void
 print_dollarhex (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
 		 void * dis_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.20200303/cpu/or1kcommon.cpu ./cpu/or1kcommon.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/or1kcommon.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/or1kcommon.cpu	2026-03-05 02:07:20.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.
 ;
@@ -257,6 +243,8 @@
    (.unsplice
     (.map (.pmacro (n) (.splice SYS (.sym "ESR" n) (.add n #x40) (.str "Exception supervision register " n)))
           (.iota #x10)))
+   (SYS COREID   #x080 "Core identifier register")
+   (SYS NUMCORES #x081 "Number of cores register")
    (.unsplice
     (.map (.pmacro (n) (.splice SYS (.sym "GPR" n) (.add n #x400) (.str "General purpose register " n)))
           (.iota #x200)))
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/or1k.cpu ./cpu/or1k.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/or1k.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/or1k.cpu	2026-03-05 02:07:20.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.20200303/cpu/or1k.opc ./cpu/or1k.opc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/or1k.opc	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/or1k.opc	2026-03-05 02:07:20.000000000 +0000
@@ -38,7 +38,7 @@
 #undef  CGEN_DIS_HASH_SIZE
 #define CGEN_DIS_HASH_SIZE 256
 #undef  CGEN_DIS_HASH
-#define CGEN_DIS_HASH(buffer, value) (((unsigned char *) (buffer))[0] >> 2)
+#define CGEN_DIS_HASH(buffer, value) ((value >> 26) & 0xff)
 
 /* Check applicability of instructions against machines.  */
 #define CGEN_VALIDATE_INSN_SUPPORTED
@@ -193,7 +193,7 @@ static const bfd_reloc_code_real_type or
     BFD_RELOC_OR1K_GOT_LO13,
     BFD_RELOC_UNUSED,
     BFD_RELOC_UNUSED,
-    BFD_RELOC_UNUSED },
+    BFD_RELOC_OR1K_GOT_AHI16 },
   { BFD_RELOC_OR1K_GOTPC_LO16,
     BFD_RELOC_UNUSED,
     BFD_RELOC_UNUSED,
@@ -296,6 +296,11 @@ parse_reloc (const char **strp)
 	str += 5;
 	cls = RCLASS_TPOFF;
       }
+    else if (strncasecmp (str, "got", 3) == 0)
+      {
+	str += 3;
+	cls = RCLASS_GOT;
+      }
 
     if (strncasecmp (str, "hi(", 3) == 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.20200303/cpu/or1korbis.cpu ./cpu/or1korbis.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/or1korbis.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/or1korbis.cpu	2026-03-05 02:07:20.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.
@@ -717,7 +717,7 @@
      ((MACH ORBIS-MACHS))
      "l.swa ${simm16-split}($rA),$rB"
      (+ OPC_SWA rA rB simm16)
-     (sequence ((SI addr) (BI flag))
+     (sequence ((SI addr))
 	       (set addr (load-store-addr rA simm16-split 4))
 	       (set sys-sr-f (and atomic-reserve (eq addr atomic-address)))
 	       (if sys-sr-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.20200303/cpu/or1korfpx.cpu ./cpu/or1korfpx.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/or1korfpx.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/or1korfpx.cpu	2026-03-05 02:07:20.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.20200303/cpu/xc16x.cpu ./cpu/xc16x.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/xc16x.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/xc16x.cpu	1970-01-01 00:00:00.000000000 +0000
@@ -1,3146 +0,0 @@
-; Infineon XC16X CPU description.  -*- Scheme -*-
-;
-; Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
-;
-; Contributed by KPIT Cummins Infosystems Ltd.; developed under contract 
-; from Infineon Systems, GMBH , Germany.
-;
-; This file is part of the GNU Binutils.
-;
-; This program is free software; you can redistribute it and/or modify
-; it under the terms of the GNU General Public License as published by
-; the Free Software Foundation; either version 3 of the License, or
-; (at your option) any later version.
-;
-; This program is distributed in the hope that it will be useful,
-; but WITHOUT ANY WARRANTY; without even the implied warranty of
-; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU 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.
-
-(define-rtl-version 0 8)
-
-(include "simplify.inc")
-
-; define-arch appears first
-
-(define-arch
-  (name xc16x) ; name of cpu family
-  (comment "Infineon XC16X")
-  (default-alignment aligned)
-  (insn-lsb0? #t)		
-  (machs xc16x)
-  (isas xc16x)
-)
-
-; Attributes.   
-; An attribute to describe which pipeline an insn runs in generally OS.
-(define-attr
-  (for insn)
-  (type enum)
-  (name PIPE)
-  (comment "parallel execution pipeline selection")
-  (values NONE OS)
-)
-
-; Instruction set parameters.
-
-(define-isa
-  (name xc16x)
-  (default-insn-bitsize 32)
-  (base-insn-bitsize 32)
-  (default-insn-word-bitsize 16)
-  (decode-assist (15 14 13 12))
-  ; The XC16X fetches 1 insn at a time.
-  (liw-insns 1)
-  (parallel-insns 1)
-)
-
-; Cpu family definitions.
-
-(define-cpu
-  ; cpu names must be distinct from the architecture name and machine names.
-  ; The "b" suffix stands for "base" and is the convention.
-  ; The "f" suffix stands for "family" and is the convention.
-  (name xc16xbf)
-  (comment "Infineon XC16X base family")
-  (endian little)
-  (insn-chunk-bitsize 32)
-  (word-bitsize 16)
-  (parallel-insns 1)
-)
-
-(define-mach
-  (name xc16x)
-  (comment "Infineon XC16X cpu")
-  (cpu xc16xbf)
-)
-
-; Model descriptions.
-
-(define-model
-  (name xc16x) (comment "XC16X") (attrs)
-  (mach xc16x)
-  
-  (pipeline p-mem "" () ((prefetch) (fetch) (decode) (address) (memory) (execute) (writeback)))
-  
-    ; `state' is a list of variables for recording model state
-    (state
-     ; bit mask of h-gr registers, =1 means value being loaded from memory
-     (h-gr UINT)
-    )
-  
-  (unit u-exec "Execution Unit" ()
-  	1 1 ; issue done
-  	() ; state
-  	((dr INT -1) (sr INT -1)) ; inputs
-  	((dr INT -1)) ; outputs
-  	() ; profile action (default)
-	)
-  (unit u-cmp "Compare Unit" ()
-  	1 1 ; issue done
-  	() ; state
-  	((src1 INT -1) (src2 INT -1)) ; inputs
-  	() ; outputs
-  	() ; profile action (default)
-	)
-  (unit u-cti "Jump & Call Unit" ()
-  	1 1 ; issue done
-  	() ; state
-  	((condbit) (sr INT -1)) ; inputs
-  	((pc)) ; outputs
-  	() ; profile action (default)
-	)
-  (unit u-mov "Data Movement Unit" ()
-  	1 1 ; issue done
-  	() ;state
-  	((dr INT -1) (sr INT -1)) ; inputs
-  	((dr INT -1)) ; output
-  	() ; profile action (default)
-  	)
- ) 
- 
-; Instruction fields.
-;
-; Attributes:
-; PCREL-ADDR: pc relative value (for reloc and disassembly purposes)
-; ABS-ADDR: absolute address (for reloc and disassembly purposes)
-; RELOC: there is a relocation associated with this field (experiment)
-
-(define-attr
-  (for ifield operand)
-  (type boolean)
-  (name RELOC)
-  (comment "there is a reloc associated with this field (experiment)")
-)
-
-(dnf f-op1       "op1"                 () 7  4)
-(dnf f-op2       "op2"                 () 3  4)
-(dnf f-condcode  "condcode"            () 7  4)  ;condition code required in other jmps and calls
-(dnf f-icondcode "indrct condcode"     () 15 4)  ;condition code required in other jmpi and calli
-(dnf f-rcond     "relative-cond"       () 7  4)  ;condition code required in JMPR 
-(dnf f-qcond     "qbit"                () 7  4)  ;used in enum of bset/bclear macro
-(dnf f-extccode  "extended condcode"   () 15 5)  ;condition code required in other jmpa and calla
-(dnf f-r0	 "r0"		       () 9  2)  ;required where 2 bit register used(only R0-R3)
-(dnf f-r1        "r1"                  () 15 4)
-(dnf f-r2        "r2"                  () 11 4)
-(dnf f-r3        "r3"                  () 12 4)
-(dnf f-r4        "r4"                  () 11 4)
-(dnf f-uimm2     "uimm2"               () 13 2)  ;used for immediate data,eg in ADD,MOV insns
-(dnf f-uimm3     "uimm3"               () 10 3)  ;used for immediate data,eg in ADD,SUB insns
-(dnf f-uimm4     "uimm4"               () 15 4)  ;used for immediate data,eg in MOV insns
-(dnf f-uimm7     "uimm7"               (PCREL-ADDR RELOC) 15 7)	;used in TRAP
-(dnf f-uimm8     "uimm8"               () 23 8)  ;used in immediate byte data,eg in ADDB,MOVB insns
-(dnf f-uimm16    "uimm16"              () 31 16) ;used for immediate word data
-(dnf f-memory    "memory"              () 31 16) ; used for memory operands 
-(dnf f-memgr8    "memory" 	       () 31 16) ; memory location of gr
-(dnf f-rel8      "rel8"                (PCREL-ADDR RELOC) 15 8)	;used in JMPR,CALLR
-(dnf f-relhi8    "relhi8"              (PCREL-ADDR RELOC) 23 8)	;used in JB,JBC,JNB,JNBS
-(dnf f-reg8      "reg8"                () 15 8)	;required where 8bit gp register used
-(dnf f-regmem8   "regmem8"             () 15 8) ;required where 8bit register used
-(dnf f-regoff8   "regoff8"             () 15 8)	;required for offset calc
-(dnf f-reghi8    "reghi8"              () 23 8)	;required where 8bit register number used
-(dnf f-regb8     "regb8"               () 15 8)	;required for byte registers RL0,RH0, till RL8,RH8
-(dnf f-seg8      "seg8"                () 15 8) ;used as segment number in JMPS,CALLS
-(dnf f-segnum8   "segnum8"             () 23 8) ;used in EXTS,EXTSR        
-(dnf f-mask8     "mask8"               () 23 8) ;used as mask in BFLDH,BFLDL insns
-(dnf f-pagenum   "page num"            () 25 10);used in EXTP,EXTPR
-(dnf f-datahi8   "datahi8"             () 31 8) ;used for filling with const data
-(dnf f-data8     "data8"               () 23 8) ;used for filling with const data
-(dnf f-offset16  "address offset16"    (ABS-ADDR RELOC) 31 16) ;used in JMPS,JMPA,CALLA,CALLS
-(dnf f-op-bit1   "gap of 1 bit"        () 11 1)	;used for filling with const data
-(dnf f-op-bit2   "gap of 2 bits"       () 11 2)	;used for filling with const data
-(dnf f-op-bit4   "gap of 4 bits"       () 11 4) ;used for filling with const data
-(dnf f-op-bit3   "gap of 3 bits"       () 10 3) ;used in CALLA, JMPA
-(dnf f-op-2bit   "gap of 2 bits"       () 10 2) ;used in CALLA
-(dnf f-op-bitone "gap of 1 bit "       () 10 1) ;used in JMPA
-(dnf f-op-onebit "gap of 1 bit "       () 9  1) ;used in JMPA
-(dnf f-op-1bit   "gap of 1 bit "       () 8  1) ;used in JMPA, CALLA
-(dnf f-op-lbit4  "gap of 4 bits"       () 15 4) ;used for filling with const data
-(dnf f-op-lbit2  "gap of 2 bits"       () 15 2) ;used for filling with const data
-(dnf f-op-bit8	 "gap of 8 bits"       () 31 8) ;used for filling with const data
-(dnf f-op-bit16	 "gap of 16 bits"      () 31 16) ;used for filling with const data
-(dnf f-qbit      "qbit"                () 7  4) ;used in bit field of bset/bclear
-(dnf f-qlobit    "qlobit"              () 31 4) ;used for filling with const data
-(dnf f-qhibit    "qhibit"              () 27 4) ;used for filling with const data
-(dnf f-qlobit2   "qlobit2"             () 27 2) ;used for filling with const data
-(dnf f-pof    "upof16"                 () 31 16) ; used for memory operands 
-
-; Enums.
-; insn-op1: bits 0-3
-(define-normal-insn-enum insn-op1 "insn format enums" () OP1_ f-op1
-  ("0" "1" "2" "3" "4" "5" "6" "7"
-   "8" "9" "10" "11" "12" "13" "14" "15")
-)
-
-; insn-op2: bits 4-7
-(define-normal-insn-enum insn-op2 "op2 enums" () OP2_ f-op2
-  ("0" "1" "2" "3" "4" "5" "6" "7"
-   "8" "9" "10" "11" "12" "13" "14" "15")
-)
-
-;/*for bclr/bset*/
-; insn-rcond: bits 0-3
-(define-normal-insn-enum insn-qcond "bit set/clear enums" () QBIT_ f-qcond
-  (("0" 0) ("1" 1) ("2" 2) ("3" 3) ("4" 4) ("5" 5) ("6" 6) ("7" 7) ("8" 8) ("9" 9) ("10" 10) 
-   ("11" 11) ("12" 12) ("13" 13) ("14" 14) ("15" 15))
-)
-;/************/
-; insn-rcond: bits 0-3
-(define-normal-insn-enum insn-rcond "relative jump condition code op2 enums" () COND_ f-rcond
-  (("UC" 0) ("NET" 1) ("Z" 2) ("NE_NZ" 3) ("V" 4)  ("NV" 5) ("N" 6) ("NN" 7)
-   ("C" 8) ("NC" 9) ("SGT" 10) ("SLE" 11) ("SLT" 12) ("SGE" 13) ("UGT" 14) ("ULE" 15)
-   ("EQ" 2) ("NE" 3) ("ULT" 8) ("UGE" 9))
-)
-
-
-
-; Hardware pieces.
-; These entries list the elements of the raw hardware.
-; They're also used to provide tables and other elements of the assembly
-; language.
-
-(dnh h-pc "program counter" (PC) (pc) () () ())
-
-(define-keyword
-  (name gr-names)
-  (enum-prefix H-GR-)
-  (values (r0 0) (r1 1) (r2 2) (r3 3) (r4 4) (r5 5) (r6 6) (r7 7)
-	  (r8 8) (r9 9) (r10 10) (r11 11) (r12 12) (r13 13) (r14 14) (r15 15))
-
-)
-(define-hardware
-  (name h-gr)
-  (comment "general registers")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (16))
-  (indices extern-keyword gr-names)
-)
-
-;; HACK: Various semantics refer to h-cr.
-;; This is here to keep things working.
-(define-hardware
-  (name h-cr)
-  (comment "cr registers")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (16))
-  (indices extern-keyword gr-names)
-)
-
-(define-keyword
-  (name ext-names)
-  (enum-prefix H-EXT-)
-  (values (0x1 0) (0x2 1) (0x3 2) (0x4 3)
-          ("1" 0) ("2" 1) ("3" 2) ("4" 3))
-
-)
-
-(define-hardware
-  (name h-ext)
-  (comment "ext values")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (8))
-  (indices extern-keyword ext-names)
-)
-
-(define-keyword
-  (name psw-names)
-  (enum-prefix H-PSW-)
-  (values ("IEN" 136) ("r0.11" 240) ("r1.11" 241) ("r2.11" 242) ("r3.11" 243) ("r4.11" 244)
-                      ("r5.11" 245) ("r6.11" 246) ("r7.11" 247) ("r8.11" 248)
-                      ("r9.11" 249) ("r10.11" 250) ("r11.11" 251) ("r12.11" 252)
-                      ("r13.11" 253) ("r14.11" 254) ("r15.11" 255))
-)
-
-(define-hardware
-  (name h-psw)
-  (comment "ext values")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (1))
-  (indices extern-keyword psw-names)
-)
-
-(define-keyword
-  (name grb-names)
-  (enum-prefix H-GRB-)
-  (values (rl0 0) (rh0 1) (rl1 2) (rh1 3) (rl2 4) (rh2 5) (rl3 6) (rh3 7) 
-          (rl4 8) (rh4 9) (rl5 10) (rh5 11) (rl6 12) (rh6 13) (rl7 14) (rh7 15))
-)
-
-(define-hardware
-  (name h-grb)
-  (comment "general registers")
-  (attrs PROFILE CACHE-ADDR)
-  (type register QI (16))
-  (indices extern-keyword grb-names)
-)
-
-(define-keyword
-  (name conditioncode-names)
-  (enum-prefix H-CC-)
-  (values (cc_UC 0) (cc_NET 1) (cc_Z 2) (cc_EQ 2) (cc_NZ 3) (cc_NE 3) (cc_V 4) (cc_NV 5) (cc_N 6)  (cc_NN 7) (cc_ULT 8)  (cc_UGE 9) 
-	  (cc_C 8) (cc_NC 9) (cc_SGT 10) (cc_SLE 11) (cc_SLT 12) (cc_SGE 13) (cc_UGT 14) 
-          (cc_ULE 15))
-)
-(define-hardware
-  (name h-cc)
-  (comment "condition codes")
-  (attrs PROFILE CACHE-ADDR)
-  (type register QI (16))
-  (indices extern-keyword conditioncode-names)
-)
-
-(define-keyword
-  (name extconditioncode-names)
-  (enum-prefix H-ECC-)
-  (values(cc_UC 0) (cc_NET 2) (cc_Z 4) (cc_EQ 4) (cc_NZ 6) (cc_NE 6) (cc_V 8) (cc_NV 10) (cc_N 12)  (cc_NN 14) (cc_ULT 16)  (cc_UGE 18) (cc_C 16) (cc_NC 18) (cc_SGT 20) 
-         (cc_SLE 22) (cc_SLT 24) (cc_SGE 26) (cc_UGT 28) (cc_ULE 30) (cc_nusr0 1) 
-         (cc_nusr1 3) (cc_usr0 5) (cc_usr1 7))
-)
-(define-hardware
-  (name h-ecc)
-  (comment "extended condition codes")
-  (attrs PROFILE CACHE-ADDR)
-  (type register QI (4))
-  (indices extern-keyword extconditioncode-names)
-)
-
-(define-keyword
-  (name grb8-names)
-  (enum-prefix H-GRB8-)
-  (values (dpp0 0)  (dpp1 1)  (dpp2 2)  (dpp3 3)
-	  (psw 136)   (cp 8)    (mdl 7)   (mdh  6)
-	  (mdc 135)   (sp 9)    (csp 4)  (vecseg 137)
-          (stkov 10)  (stkun 11) (cpucon1 12) (cpucon2 13)
-	  (zeros 142)  (ones 143) (spseg 134) (tfr 214)
-	  (rl0 240) (rh0 241) (rl1 242) (rh1 243) (rl2 244) (rh2 245) (rl3 246) (rh3 247)
-	  (rl4 248) (rh4 249) (rl5 250) (rh5 251) (rl6 252) (rh6 253) (rl7 254) (rh7 255))
-)
-
-(define-hardware
-  (name h-grb8)
-  (comment "general byte registers")
-  (attrs PROFILE CACHE-ADDR)
-  (type register QI (36))
-  (indices extern-keyword grb8-names)
-)
-
-(define-keyword
-  (name r8-names)
-  (enum-prefix H-R8-)
-  (values (dpp0 0)  (dpp1 1)  (dpp2 2)  (dpp3 3)
-	  (psw 136)   (cp 8)    (mdl 7)   (mdh  6)
-	  (mdc 135)   (sp 9)    (csp 4)  (vecseg 137)
-          (stkov 10)  (stkun 11) (cpucon1 12) (cpucon2 13)
-	  (zeros 142)  (ones 143) (spseg 134) (tfr 214)
-	  (r0 240) (r1 241) (r2 242) (r3 243) (r4 244) (r5 245) (r6 246) (r7 247)
-	  (r8 248) (r9 249) (r10 250) (r11 251) (r12 252) (r13 253) (r14 254) (r15 255))
-)
-
-(define-hardware
-  (name h-r8)
-  (comment "registers")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (36))
-  (indices extern-keyword r8-names)
-)
-
-(define-keyword
-  (name regmem8-names)
-  (enum-prefix H-REGMEM8-)
-  (values (dpp0 0)  (dpp1 1)  (dpp2 2)  (dpp3 3)
-	  (psw 136)   (cp 8)    (mdl 7)   (mdh  6)
-	  (mdc 135)   (sp 9)    (csp 4)  (vecseg 137)
-          (stkov 10)  (stkun 11) (cpucon1 12) (cpucon2 13)
-	  (zeros 142)  (ones 143) (spseg 134) (tfr 214)
-	  (r0 240) (r1 241) (r2 242) (r3 243) (r4 244) (r5 245) (r6 246) (r7 247)
-	  (r8 248) (r9 249) (r10 250) (r11 251) (r12 252) (r13 253) (r14 254) (r15 255))
-)
-
-(define-hardware
-  (name h-regmem8)
-  (comment "registers")
-  (attrs )
-  (type register HI (16))
-  (indices extern-keyword regmem8-names)
-)
-
-(define-keyword
-  (name regdiv8-names)
-  (enum-prefix H-REGDIV8-)
-  (values (r0 0) (r1 17) (r2 34) (r3 51) (r4 68) (r5 85) (r6 102) (r7 119)
-	  (r8 136) (r9 153) (r10 170) (r11 187) (r12 204) (r13 221) (r14 238) (r15 255))
-)
-
-(define-hardware
-  (name h-regdiv8)
-  (comment "division insn registers")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (16))
-  (indices extern-keyword regdiv8-names)
-)
-
-(define-keyword
-  (name reg0-name)
-  (enum-prefix H-REG0-)
-  (values (0x1 1) (0x2 2) (0x3 3) (0x4 4) (0x5 5) (0x6 6) (0x7 7) (0x8 8) (0x9 9) (0xa 10) (0xb 11) 
-          (0xc 12) (0xd 13) (0xe 14) (0xf 15)
-          ("1" 1) ("2" 2) ("3" 3) ("4" 4) ("5" 5) ("6" 6) ("7" 7) ("8" 8) ("9" 9) ("10" 10) ("11" 11) 
-          ("12" 12) ("13" 13) ("14" 14) ("15" 15))
-)
-
-(define-hardware
-  (name h-r0)
-  (comment "for 4-bit data excuding 0")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (30))
-  (indices extern-keyword reg0-name)
-)
-
-(define-keyword
-  (name reg0-name1)
-  (enum-prefix H-REG01-)
-  (values (0x1 1) (0x2 2) (0x3 3) (0x4 4) (0x5 5) (0x6 6) (0x7 7)
-          ("1" 1) ("2" 2) ("3" 3) ("4" 4) ("5" 5) ("6" 6) ("7" 7))
-)
-
-(define-hardware
-  (name h-r01)
-  (comment "for 4-bit data excuding 0")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (14))
-  (indices extern-keyword reg0-name1)
-)
-
-(define-keyword
-  (name regbmem8-names)
-  (enum-prefix H-REGBMEM8-)
-  (values (dpp0 0)  (dpp1 1)  (dpp2 2)  (dpp3 3)
-	  (psw 136)   (cp 8)    (mdl 7)   (mdh  6)
-	  (mdc 135)   (sp 9)    (csp 4)  (vecseg 137)
-          (stkov 10)  (stkun 11) (cpucon1 12) (cpucon2 13)
-	  (zeros 142)  (ones 143) (spseg 134) (tfr 214)
-	  (rl0 240) (rh0 241) (rl1 242) (rh1 243) (rl2 244) (rh2 245) (rl3 246) (rh3 247)
-	  (rl4 248) (rh4 249) (rl5 250) (rh5 251) (rl6 252) (rh6 253) (rl7 254) (rh7 255))
-)
-
-(define-hardware
-  (name h-regbmem8)
-  (comment "registers")
-  (attrs PROFILE CACHE-ADDR)
-  (type register HI (36))
-  (indices extern-keyword regbmem8-names)
-)
-
-(define-keyword
-  (name memgr8-names)
-  (enum-prefix H-MEMGR8-)
-  (values (dpp0 65024)  (dpp1 65026)  (dpp2 65028)  (dpp3 65030)
-	  (psw 65296)   (cp 65040)    (mdl 65038)   (mdh  65036)
-	  (mdc 65294)   (sp 65042)    (csp 65032)  (vecseg 65298)
-          (stkov 65044)  (stkun 65046) (cpucon1 65048) (cpucon2 65050)
-	  (zeros 65308)  (ones 65310) (spseg 65292) (tfr 65452) )
-)
-
-(define-hardware
-  (name h-memgr8)
-  (comment "memory location of registers")
-  (attrs )
-  (type register HI (20))
-  (indices extern-keyword memgr8-names)
-)
-
-(dsh h-cond "condition bit" () (register BI))   ;any bit from PSW while comparison
-; This bit is part of the PSW register 
-(dsh h-cbit  "carry bit"		() (register BI))
-
-(dsh h-sgtdis "segmentation enable bit" () (register BI)) ;0 means segmentation enabled
-
-;Instruction operands 
-; -- layer between the assembler and the raw hardware description 
-; -- the main means of manipulating instruction fields in the semantic code 
-
-; XC16X specific operand attributes:
-
-(define-attr
-  (for operand)
-  (type boolean)
-  (name HASH-PREFIX)
-  (comment "immediates have an optional '#' prefix")
-)
-
-(define-attr
-  (for operand)
-  (type boolean)
-  (name DOT-PREFIX)
-  (comment "bit addr have an optional '.' prefix")
-)
-
-(define-attr
-  (for operand)
-  (type boolean)
-  (name POF-PREFIX)
-  (comment "page offset ")
-)
-
-(define-attr
-  (for operand)
-  (type boolean)
-  (name PAG-PREFIX)
-  (comment "page ")
-)
-
-(define-attr
-  (for operand)
-  (type boolean)
-  (name SOF-PREFIX)
-  (comment "segment offset selection")
-)
-
-(define-attr
-  (for operand)
-  (type boolean)
-  (name SEG-PREFIX)
-  (comment "segment")
-)
-
-;; Define an operand that takes a set of handlers.
-;; dowh: define-operand-with-handlers
-(define-pmacro (dowh x-name x-comment x-attrs x-type x-index x-handlers)
-  (define-operand (name x-name) (comment x-comment)
-    (.splice attrs (.unsplice x-attrs))
-    (type x-type) (index x-index)
-    (.splice handlers (.unsplice x-handlers)))
-)
-
-(dnop sr      "source register"              () h-gr    f-r2)
-(dnop dr      "destination register"         () h-gr    f-r1)
-(dnop dri     "destination register"         () h-gr    f-r4)
-(dnop srb     "source register"              () h-grb   f-r2)
-(dnop drb     "destination register"         () h-grb   f-r1)
-(dnop sr2     "2 bit source register"	     () h-gr    f-r0)
-(dnop src1    "source register 1"            () h-gr   f-r1)
-(dnop src2    "source register 2"            () h-gr   f-r2)
-(dnop srdiv   "source register 2"            () h-regdiv8   f-reg8)
-(dnop RegNam  "PSW bits"                     () h-psw f-reg8) 
-(dnop uimm2   "2 bit unsigned number"        (HASH-PREFIX) h-ext f-uimm2) 
-(dnop uimm3   "3 bit unsigned number"        (HASH-PREFIX) h-r01 f-uimm3)
-(dnop uimm4   "4 bit unsigned number"        (HASH-PREFIX) h-uint f-uimm4)
-(dnop uimm7   "7 bit trap number"            (HASH-PREFIX) h-uint f-uimm7)
-(dnop uimm8   "8 bit unsigned immediate"     (HASH-PREFIX) h-uint f-uimm8)
-(dnop uimm16  "16 bit unsigned immediate"    (HASH-PREFIX) h-uint f-uimm16)
-(dowh upof16  "16 bit unsigned immediate"    (POF-PREFIX) h-addr f-memory ((print "with_pof_prefix")))
-(dnop reg8    "8 bit word register number"   () h-r8 f-reg8)
-(dnop regmem8 "8 bit word register number"   () h-regmem8 f-regmem8)
-(dnop regbmem8 "8 bit byte register number"  () h-regbmem8 f-regmem8)
-(dnop regoff8 "8 bit word register number"   () h-r8 f-regoff8)
-(dnop reghi8  "8 bit word register number"   () h-r8 f-reghi8)
-(dnop regb8   "8 bit byte register number"   () h-grb8 f-regb8)
-(dnop genreg  "8 bit word register number"   () h-r8 f-regb8)
-(dnop seg     "8 bit segment number"         () h-uint f-seg8)
-(dnop seghi8  "8 bit hi segment number"      () h-uint f-segnum8)
-(dnop caddr   "16 bit address offset"        () h-addr f-offset16)
-(dnop rel     "8 bit signed relative offset" () h-sint f-rel8)
-(dnop relhi   "hi 8 bit signed relative offset" () h-sint f-relhi8)	
-(dnop condbit "condition bit"                (SEM-ONLY) h-cond f-nil)
-(dnop bit1    "gap of 1 bit"    	     () h-uint f-op-bit1)
-(dnop bit2    "gap of 2 bits"	             () h-uint f-op-bit2)
-(dnop bit4    "gap of 4 bits"                () h-uint f-op-bit4)
-(dnop lbit4   "gap of 4 bits"                () h-uint f-op-lbit4)
-(dnop lbit2   "gap of 2 bits"                () h-uint f-op-lbit2)
-(dnop bit8    "gap of 8 bits"	             () h-uint f-op-bit8)
-(dnop u4      "gap of 4 bits"	             () h-r0   f-uimm4)
-(dnop bitone  "field of 1 bit"	             () h-uint f-op-onebit)
-(dnop bit01   "field of 1 bit"	             () h-uint f-op-1bit)
-(dnop cond    "condition code" 	             () h-cc   f-condcode)
-(dnop icond   "indirect condition code"      () h-cc   f-icondcode)
-(dnop extcond "extended condition code"      () h-ecc  f-extccode)
-(dnop memory  "16 bit memory" 		     () h-addr f-memory)
-(dnop memgr8  "16 bit memory"		     () h-memgr8 f-memgr8)
-(dnop cbit    "carry bit"                    (SEM-ONLY) h-cbit  f-nil)
-(dowh qbit    "bit addr"               	     (DOT-PREFIX) h-uint f-qbit ((print "with_dot_prefix")))
-(dowh qlobit  "bit addr"                     (DOT-PREFIX) h-uint f-qlobit ((print "with_dot_prefix")))
-(dowh qhibit  "bit addr"                     (DOT-PREFIX) h-uint f-qhibit ((print "with_dot_prefix")))
-(dnop mask8   "8 bit mask"     		     (HASH-PREFIX) h-uint f-mask8)
-(dnop masklo8 "8 bit mask"     		     (HASH-PREFIX) h-uint f-datahi8)
-(dnop pagenum "10 bit page number"     	     (HASH-PREFIX) h-uint f-pagenum)
-(dnop data8   "8 bit data"     		     (HASH-PREFIX) h-uint f-data8)
-(dnop datahi8 "8 bit data"     	             (HASH-PREFIX) h-uint f-datahi8)
-(dnop sgtdisbit "segmentation enable bit"    (SEM-ONLY) h-sgtdis f-nil)
-(dowh upag16  "16 bit unsigned immediate"    (PAG-PREFIX) h-uint f-uimm16 ((print "with_pag_prefix")))
-(dnop useg8   "8 bit segment "    	     (SEG-PREFIX) h-uint f-seg8)
-(dnop useg16  "16 bit address offset"        (SEG-PREFIX) h-uint f-offset16)
-(dnop usof16  "16 bit address offset"        (SOF-PREFIX) h-uint f-offset16)
-
-; define hash operator
-(define-operand (name hash) (comment "# prefix") (attrs)
-  (type h-sint)  
-  (index f-nil)
-  (handlers (parse "hash") (print "hash"))
-)
-
-; define dot operator
-(define-operand (name dot) (comment ". prefix") (attrs)
-  (type h-sint)  
-  (index f-nil)
-  (handlers (parse "dot") (print "dot"))
-)
-
-; define pof operator
-(define-operand (name pof) (comment "pof: prefix") (attrs)
-  (type h-sint)  
-  (index f-nil)
-  (handlers (parse "pof") (print "pof"))
-)
-
-; define pag operator
-(define-operand (name pag) (comment "pag: prefix") (attrs)
-  (type h-sint)
-  (index f-nil)
-  (handlers (parse "pag") (print "pag"))
-)
-
-; define sof operator
-(define-operand (name sof) (comment "sof: prefix") (attrs)
-  (type h-sint)  
-  (index f-nil)
-  (handlers (parse "sof") (print "sof"))
-)
-
-; define seg operator
-(define-operand (name segm) (comment "seg: prefix") (attrs)
-  (type h-sint)
-  (index f-nil)
-  (handlers (parse "seg") (print "seg"))
-)
-
-; IDOC attribute for instruction documentation.
-(define-attr
-  (for insn)
-  (type enum)
-  (name IDOC)
-  (comment "insn kind for documentation")
-  (attrs META)
-  (values
-   (MOVE - () "Data Movement")
-   (ALU  - () "Arithmatic & logical")
-   (CMP  - () "Compare")
-   (JMP  - () "Jump & Call")
-   (MISC - () "Miscellaneous")
-   (SYSC - () "System control")
-  )
-)
-
-; Include the instruction set descriptions from their respective
-; source files.
-
-;Arithmatic insns
-;******************************************************************
-
-;add/sub register and immediate
-(define-pmacro (arithmetic16 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"dir"$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 (mem HI op2)))
-       ()
-  )
-)
-(arithmetic16 addrpof add add OP1_0 OP2_2 reg8 upof16 HI "pof")
-(arithmetic16 subrpof sub sub OP1_2 OP2_2 reg8 upof16 HI "pof")
-(arithmetic16 addbrpof addb add OP1_0 OP2_3 regb8 upof16 QI "pof")
-(arithmetic16 subbrpof subb sub OP1_2 OP2_3 regb8 upof16 QI "pof")
-(arithmetic16 addrpag add add OP1_0 OP2_2 reg8 upag16 HI "pag")
-(arithmetic16 subrpag sub sub OP1_2 OP2_2 reg8 upag16 HI "pag")
-(arithmetic16 addbrpag addb add OP1_0 OP2_3 regb8 upag16 QI "pag")
-(arithmetic16 subbrpag subb sub OP1_2 OP2_3 regb8 upag16 QI "pag")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic17 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"dir"$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 (mem HI op2) cbit))
-       ()
-  )
-)
-(arithmetic17 addcrpof addc addc OP1_1 OP2_2 reg8 upof16 HI "pof")
-(arithmetic17 subcrpof subc subc OP1_3 OP2_2 reg8 upof16 HI "pof")
-(arithmetic17 addcbrpof addcb addc OP1_1 OP2_3 regb8 upof16 QI "pof")
-(arithmetic17 subcbrpof subcb subc OP1_3 OP2_3 regb8 upof16 QI "pof")
-(arithmetic17 addcrpag addc addc OP1_1 OP2_2 reg8 upag16 HI "pag")
-(arithmetic17 subcrpag subc subc OP1_3 OP2_2 reg8 upag16 HI "pag")
-(arithmetic17 addcbrpag addcb addc OP1_1 OP2_3 regb8 upag16 QI "pag")
-(arithmetic17 subcbrpag subcb subc OP1_3 OP2_3 regb8 upag16 QI "pag")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic18 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"dir"$"op1 ",$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set (mem HI op1) (insn1 (mem HI op1) op2 ))
-       ()
-  )
-)
-(arithmetic18 addrpofr add add OP1_0 OP2_4 upof16 reg8 HI "pof")
-(arithmetic18 subrpofr sub sub OP1_2 OP2_4 upof16 reg8 HI "pof")
-(arithmetic18 addbrpofr addb add OP1_0 OP2_5 upof16 regb8 QI "pof")
-(arithmetic18 subbrpofr subb sub OP1_2 OP2_5 upof16 regb8 QI "pof")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic19 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"dir"$"op1 ",$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set (mem HI op1) (insn1 mode (mem HI op1) op2 cbit))
-       ()
-  )
-)
-(arithmetic19 addcrpofr addc addc OP1_1 OP2_4 upof16 reg8 HI "pof")
-(arithmetic19 subcrpofr subc subc OP1_3 OP2_4 upof16 reg8 HI "pof")
-(arithmetic19 addcbrpofr addcb addc OP1_1 OP2_5 upof16 regb8 QI "pof")
-(arithmetic19 subcbrpofr subcb subc OP1_3 OP2_5 upof16 regb8 QI "pof")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic20 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(arithmetic20 addrhpof add add OP1_0 OP2_6 reg8 uimm16 HI "pof")
-(arithmetic20 subrhpof sub sub OP1_2 OP2_6 reg8 uimm16 HI "pof")
-(arithmetic20 addbrhpof add add OP1_0 OP2_6 reg8 uimm16 HI "pag")
-(arithmetic20 subbrhpof sub sub OP1_2 OP2_6 reg8 uimm16 HI "pag")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic21 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op1 (f-op-bit1 0) op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(arithmetic21 addrhpof3 add add OP1_0 OP2_8 dr uimm3 HI "pof")
-(arithmetic21 subrhpof3 sub sub OP1_2 OP2_8 dr uimm3 HI "pof")
-(arithmetic21 addbrhpag3 addb add OP1_0 OP2_9 drb uimm3 QI "pag")
-(arithmetic21 subbrhpag3 subb sub OP1_2 OP2_9 drb uimm3 QI "pag")
-(arithmetic21 addrhpag3 add add OP1_0 OP2_8 dr uimm3 HI "pag")
-(arithmetic21 subrhpag3 sub sub OP1_2 OP2_8 dr uimm3 HI "pag")
-(arithmetic21 addbrhpof3 addb add OP1_0 OP2_9 drb uimm3 QI "pof")
-(arithmetic21 subbrhpof3 subb sub OP1_2 OP2_9 drb uimm3 QI "pof")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic22 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op1 op2 (f-op-bit8 0))
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(arithmetic22 addrbhpof addb add OP1_0 OP2_7 regb8 uimm8 QI "pof")
-(arithmetic22 subrbhpof subb sub OP1_2 OP2_7 regb8 uimm8 QI "pof")
-(arithmetic22 addbrhpag addb add OP1_0 OP2_7 regb8 uimm8 QI "pag")
-(arithmetic22 subbrhpag subb sub OP1_2 OP2_7 regb8 uimm8 QI "pag")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic23 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2 cbit))
-       ()
-  )
-)
-(arithmetic23 addcrhpof addc addc OP1_1 OP2_6 reg8 uimm16 HI "pof")
-(arithmetic23 subcrhpof subc subc OP1_3 OP2_6 reg8 uimm16 HI "pof")
-(arithmetic23 addcbrhpof addc addc OP1_1 OP2_6 reg8 uimm16 HI "pag")
-(arithmetic23 subcbrhpof subc subc OP1_3 OP2_6 reg8 uimm16 HI "pag")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic24 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op1 (f-op-bit1 0) op2)
-       (set mode op1 (insn1 mode op1 op2 cbit))
-       ()
-  )
-)
-(arithmetic24 addcrhpof3 addc addc OP1_1 OP2_8 dr uimm3 HI "pof")
-(arithmetic24 subcrhpof3 subc subc OP1_3 OP2_8 dr uimm3 HI "pof")
-(arithmetic24 addcbrhpag3 addcb addc OP1_1 OP2_9 drb uimm3 QI "pag")
-(arithmetic24 subcbrhpag3 subcb subc OP1_3 OP2_9 drb uimm3 QI "pag")
-(arithmetic24 addcrhpag3 addc addc OP1_1 OP2_8 dr uimm3 HI "pag")
-(arithmetic24 subcrhpag3 subc subc OP1_3 OP2_8 dr uimm3 HI "pag")
-(arithmetic24 addcbrhpof3 addcb addc OP1_1 OP2_9 drb uimm3 QI "pof")
-(arithmetic24 subcbrhpof3 subcb subc OP1_3 OP2_9 drb uimm3 QI "pof")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic25 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op1 op2 (f-op-bit8 0))
-       (set mode op1 (insn1 mode op1 op2 cbit))
-       ()
-  )
-)
-(arithmetic25 addcrbhpof addcb addc OP1_1 OP2_7 regb8 uimm8 QI "pof")
-(arithmetic25 subcrbhpof subcb subc OP1_3 OP2_7 regb8 uimm8 QI "pof")
-(arithmetic25 addcbrhpag addcb addc OP1_1 OP2_7 regb8 uimm8 QI "pag")
-(arithmetic25 subcbrhpag subcb subc OP1_3 OP2_7 regb8 uimm8 QI "pag")
-
-;add/sub register and immediate
-(define-pmacro (arithmetic10 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 (f-op-bit1 0) op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(arithmetic10 addri add add OP1_0 OP2_8 dr uimm3 HI)
-(arithmetic10 subri sub sub OP1_2 OP2_8 dr uimm3 HI)
-(arithmetic10 addbri addb add OP1_0 OP2_9 drb uimm3 QI)
-(arithmetic10 subbri subb sub OP1_2 OP2_9 drb uimm3 QI)
-
-;add/sub register and immediate
-(define-pmacro (arithmetic11 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(arithmetic11 addrim add add OP1_0 OP2_6 reg8 uimm16 HI)
-(arithmetic11 subrim sub sub OP1_2 OP2_6 reg8 uimm16 HI)
-
-;add/sub register and immediate
-(define-pmacro (arithmetic12 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 op2 (f-op-bit8 0))
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(arithmetic12 addbrim addb add OP1_0 OP2_7 regb8 uimm8 QI)
-(arithmetic12 subbrim subb sub OP1_2 OP2_7 regb8 uimm8 QI)
-
-;add/sub register and immediate with carry
-(define-pmacro (arithmetic13 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 (f-op-bit1 0) op2)
-       (set mode op1 (insn1 mode op1 op2 cbit))
-       ()
-  )
-)
-(arithmetic13 addcri addc addc OP1_1 OP2_8 dr uimm3 HI)
-(arithmetic13 subcri subc subc OP1_3 OP2_8 dr uimm3 HI)
-(arithmetic13 addcbri addcb addc OP1_1 OP2_9 drb uimm3 QI)
-(arithmetic13 subcbri subcb subc OP1_3 OP2_9 drb uimm3 QI)
-
-;add/sub register and immediate with carry
-(define-pmacro (arithmetic14 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2 cbit))
-       ()
-  )
-)
-(arithmetic14 addcrim addc addc OP1_1 OP2_6 reg8 uimm16 HI)
-(arithmetic14 subcrim subc subc OP1_3 OP2_6 reg8 uimm16 HI)
-
-;add/sub register and immediate with carry
-(define-pmacro (arithmetic15 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 op2 (f-op-bit8 0))
-       (set mode op1 (insn1 mode op1 op2 cbit))
-       ()
-  )
-)
-(arithmetic15 addcbrim addcb addc OP1_1 OP2_7 regb8 uimm8 QI)
-(arithmetic15 subcbrim subcb subc OP1_3 OP2_7 regb8 uimm8 QI)
-
-
-;add/sub registers
-(define-pmacro (arithmetic name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(arithmetic addr add add OP1_0 OP2_0 dr sr HI)
-(arithmetic subr sub sub OP1_2 OP2_0 dr sr HI)
-(arithmetic addbr addb add OP1_0 OP2_1 drb srb QI)
-(arithmetic subbr subb sub OP1_2 OP2_1 drb srb QI)
-
-;add/sub register and indirect memory
-(define-pmacro (arithmetic1 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",[$"op2"]")
-       (+ opc1 opc2 op1 (f-op-bit2 2) op2)
-       (set mode op1 (insn1 mode op1 (mem HI op2)))
-       ()
-  )
-)
-(arithmetic1 add2 add add OP1_0 OP2_8 dr sr2 HI)
-(arithmetic1 sub2 sub sub OP1_2 OP2_8 dr sr2 HI)
-(arithmetic1 addb2 addb add OP1_0 OP2_9 drb sr2 QI)
-(arithmetic1 subb2 subb sub OP1_2 OP2_9 drb sr2 QI)
-
-;add/sub register and indirect memory post increment
-(define-pmacro (arithmetic2 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",[$"op2"+]")
-       (+ opc1 opc2 op1 (f-op-bit2 3) op2)
-       (sequence ()
-	   (set mode op1 (insn1 mode op1 (mem HI op2)))
-	   (set HI op2 (add HI op2 (const 2)))
-       )
-       ()
-  )
-)
-(arithmetic2 add2i add add OP1_0 OP2_8 dr sr2 HI)
-(arithmetic2 sub2i sub sub OP1_2 OP2_8 dr sr2 HI)
-(arithmetic2 addb2i addb add OP1_0 OP2_9 drb sr2 QI)
-(arithmetic2 subb2i subb sub OP1_2 OP2_9 drb sr2 QI)
-
-;add/sub registers with carry
-(define-pmacro (arithmetic3 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2 cbit))
-       ()
-  )
-)
-(arithmetic3 addcr addc addc OP1_1 OP2_0 dr sr HI)
-(arithmetic3 subcr subc subc OP1_3 OP2_0 dr sr HI)
-(arithmetic3 addbcr addcb addc OP1_1 OP2_1 drb srb QI) 
-(arithmetic3 subbcr subcb subc OP1_3 OP2_1 drb srb QI)
-
-
-;add/sub register and indirect memory
-(define-pmacro (arithmetic4 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",[$"op2"]")
-       (+ opc1 opc2 op1 (f-op-bit2 2) op2)
-       (set mode op1 (insn1 mode op1 (mem HI op2) cbit))
-       ()
-  )
-)
-(arithmetic4 addcr2 addc addc OP1_1 OP2_8 dr sr2 HI)
-(arithmetic4 subcr2 subc subc OP1_3 OP2_8 dr sr2 HI)
-(arithmetic4 addbcr2 addcb addc OP1_1 OP2_9 drb sr2 QI)
-(arithmetic4 subbcr2 subcb subc OP1_3 OP2_9 drb sr2 QI)
-
-;add/sub register and indirect memory post increment
-(define-pmacro (arithmetic5 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",[$"op2"+]")
-       (+ opc1 opc2 op1 (f-op-bit2 3) op2)
-       (sequence ()
-           (set mode op1 (insn1 mode op1 (mem HI op2) cbit))
-           (set HI op2 (add HI op2 (const 2)))
-       )
-       ()
-  )
-)
-(arithmetic5 addcr2i addc addc OP1_1 OP2_8 dr sr2 HI)
-(arithmetic5 subcr2i subc subc OP1_3 OP2_8 dr sr2 HI)
-(arithmetic5 addbcr2i addcb addc OP1_1 OP2_9 drb sr2 QI)
-(arithmetic5 subbcr2i subcb subc OP1_3 OP2_9 drb sr2 QI)
-
-;add/sub register and direct memory
-(define-pmacro (arithmetic6 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-
-;add/sub register and direct memory
-(define-pmacro (arithmetic7 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set (mem HI op1) (insn1 (mem HI op1) op2))
-       ()
-  )
-)
-(arithmetic6 addrm2 add add OP1_0 OP2_2 regmem8 memgr8 HI)
-(arithmetic7 addrm3 add add OP1_0 OP2_4 memgr8 regmem8 HI)
-(arithmetic6 addrm add add OP1_0 OP2_2 reg8 memory HI)
-(arithmetic7 addrm1 add add OP1_0 OP2_4 memory reg8 HI)
-(arithmetic6 subrm3 sub sub OP1_2 OP2_2 regmem8 memgr8 HI)
-(arithmetic7 subrm2 sub sub OP1_2 OP2_4 memgr8 regmem8 HI)
-(arithmetic6 subrm1 sub sub OP1_2 OP2_2 reg8 memory HI)
-(arithmetic7 subrm sub sub OP1_2 OP2_4 memory reg8 HI)
-(arithmetic6 addbrm2 addb add OP1_0 OP2_3 regbmem8 memgr8 QI)
-(arithmetic7 addbrm3 addb add OP1_0 OP2_5 memgr8 regbmem8 QI)
-(arithmetic6 addbrm addb add OP1_0 OP2_3 regb8 memory QI)
-(arithmetic7 addbrm1 addb add OP1_0 OP2_5 memory regb8 QI)
-(arithmetic6 subbrm3 subb sub OP1_2 OP2_3 regbmem8 memgr8 QI)
-(arithmetic7 subbrm2 subb sub OP1_2 OP2_5 memgr8 regbmem8 QI)
-(arithmetic6 subbrm1 subb sub OP1_2 OP2_3 regb8 memory QI)
-(arithmetic7 subbrm subb sub OP1_2 OP2_5 memory regb8 QI)
-
-;add/sub registers with carry
-(define-pmacro (arithmetic8 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2 cbit))
-       ()
-  )
-)
-
-;add/sub registers with carry
-(define-pmacro (arithmetic9 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set (mem HI op1) (insn1 (mem HI op1) op2 cbit))
-       ()
-  )
-)
-(arithmetic8 addcrm2 addc addc OP1_1 OP2_2 regmem8 memgr8 HI)
-(arithmetic9 addcrm3 addc addc OP1_1 OP2_4  memgr8 regmem8 HI)
-(arithmetic8 addcrm addc addc OP1_1 OP2_2 reg8 memory HI)
-(arithmetic9 addcrm1 addc addc OP1_1 OP2_4  memory reg8 HI)
-(arithmetic8 subcrm3 subc subc OP1_3 OP2_2  regmem8 memgr8 HI)
-(arithmetic9 subcrm2 subc subc OP1_3 OP2_4 memgr8 regmem8 HI)
-(arithmetic8 subcrm1 subc subc OP1_3 OP2_2  reg8 memory HI)
-(arithmetic9 subcrm subc subc OP1_3 OP2_4 memory reg8 HI)
-(arithmetic8 addcbrm2 addcb addc OP1_1 OP2_3 regbmem8 memgr8 QI)
-(arithmetic9 addcbrm3 addcb addc OP1_1 OP2_5  memgr8 regbmem8 QI)
-(arithmetic8 addcbrm addcb addc OP1_1 OP2_3 regb8 memory QI)
-(arithmetic9 addcbrm1 addcb addc OP1_1 OP2_5  memory regb8 QI)
-(arithmetic8 subcbrm3 subcb subc OP1_3 OP2_3  regbmem8 memgr8 QI)
-(arithmetic9 subcbrm2 subcb subc OP1_3 OP2_5 memgr8 regbmem8 QI)
-(arithmetic8 subcbrm1 subcb subc OP1_3 OP2_3  regb8 memory QI)
-(arithmetic9 subcbrm subcb subc OP1_3 OP2_5 memory regb8 QI)
-
-; MUL Rwn,Rwm
-(dni muls "signed multiplication"
-     ((PIPE OS) (IDOC ALU))
-     "mul $src1,$src2"
-     (+ OP1_0 OP2_11 src1 src2)
-     (nop) ;; FIXME: (reg SI h-md 0)
-     ()
-)
-; MULU Rwn,Rwm
-(dni mulu "unsigned multiplication"
-     ((PIPE OS) (IDOC ALU))
-     "mulu $src1,$src2"
-     (+ OP1_1 OP2_11 src1 src2)
-     (nop) ;; FIXME: (reg SI h-md 0)
-     ()
-)
-; DIV Rwn
-(dni div "16-by-16 signed division"
-     ((PIPE OS) (IDOC ALU))
-     "div $srdiv"
-     (+ OP1_4 OP2_11 srdiv )
-     (sequence ()
-         (set HI (reg HI h-cr 6) (div HI (reg HI h-cr 6) srdiv))
-         (set HI (reg HI h-cr 7) (mod HI (reg HI h-cr 6) srdiv))
-     )
-     ()
-) 
-; DIVL Rwn
-(dni divl "32-by16 signed division"
-     ((PIPE OS) (IDOC ALU))
-     "divl $srdiv"
-     (+ OP1_6 OP2_11 srdiv )
-     (sequence ()
-         (set HI (reg HI h-cr 6) 0) ;; FIXME: (div SI (reg SI h-md 0) srdiv))
-	 (set HI (reg HI h-cr 7) 0) ;; FIXME: (mod SI (reg SI h-md 0) srdiv))
-     )
-     ()
-)
-; DIVLU Rwn 
-(dni divlu "32-by16 unsigned division"
-     ((PIPE OS) (IDOC ALU))
-     "divlu $srdiv"
-     (+ OP1_7 OP2_11 srdiv )
-     (sequence ()
-         (set HI (reg HI h-cr 6) 0) ;; FIXME: (udiv SI (reg SI h-md 0) srdiv))
-	 (set HI (reg HI h-cr 7) 0) ;; FIXME: (umod SI (reg SI h-md 0) srdiv))
-     )
-     ()
-)
-; DIVU Rwn
-(dni divu "16-by-16 unsigned division"
-     ((PIPE OS) (IDOC ALU))
-     "divu $srdiv"
-     (+ OP1_5 OP2_11 srdiv )
-     (sequence ()
-         (set HI (reg HI h-cr 6) (udiv HI (reg HI h-cr 6) srdiv))
-         (set HI (reg HI h-cr 7) (umod HI (reg HI h-cr 6) srdiv))
-     )
-     ()
-)
-
-;Integer one's complement
-; CPL Rwn
-(dni cpl "Integer Ones complement"
-     ((PIPE OS) (IDOC MISC))
-     "cpl $dr"
-     (+ OP1_9 OP2_1 dr (f-op-bit4 0))
-     (set dr (inv HI dr))
-     ()
-)
-
-;Bytes one's complement
-; CPLB Rbn
-(dni cplb "Byte Ones complement"
-     ((PIPE OS) (IDOC MISC))
-     "cplb $drb"
-     (+ OP1_11 OP2_1 drb (f-op-bit4 0))
-     (set drb (inv QI drb))
-     ()
-)
-;Integer two's complement
-; NEG Rwn
-(dni neg "Integer two's complement"
-     ((PIPE OS) (IDOC MISC))
-     "neg $dr"
-     (+ OP1_8 OP2_1 dr (f-op-bit4 0))
-     (set dr (neg HI dr))
-     ()
-)
-;Bytes two's complement
-; NEGB Rbn
-(dni negb "byte twos complement"
-     ((PIPE OS) (IDOC MISC))
-     "negb $drb"
-     (+ OP1_10 OP2_1 drb (f-op-bit4 0))
-     (set drb (neg QI drb))
-     ()
-)
-
-;****************************************************************
-;logical insn
-;****************************************************************
-;and/or/xor registers
-(define-pmacro (logical name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "logical" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-
-(logical andr and and OP1_6 OP2_0 dr sr HI)
-(logical orr or or OP1_7 OP2_0 dr sr HI)
-(logical xorr xor xor OP1_5 OP2_0 dr sr HI)
-(logical andbr andb and OP1_6 OP2_1 drb srb QI)
-(logical orbr orb or OP1_7 OP2_1 drb srb QI)
-(logical xorbr xorb xor OP1_5 OP2_1 drb srb QI)
-
-;and/or/xor register and immediate
-(define-pmacro (logical1 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "logical" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 (f-op-bit1 0) op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(logical1 andri and and OP1_6 OP2_8 dr uimm3 HI)
-(logical1 orri or or OP1_7 OP2_8 dr uimm3 HI)
-(logical1 xorri xor xor OP1_5 OP2_8 dr uimm3 HI)
-(logical1 andbri andb and OP1_6 OP2_9 drb uimm3 QI)
-(logical1 orbri orb or OP1_7 OP2_9 drb uimm3 QI)
-(logical1 xorbri xorb xor OP1_5 OP2_9 drb uimm3 QI)
-
-;and/or/xor register and immediate
-(define-pmacro (logical2 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "logical" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(logical2 andrim and and OP1_6 OP2_6 reg8 uimm16 HI)
-(logical2 orrim or or OP1_7 OP2_6 reg8 uimm16 HI)
-(logical2 xorrim xor xor OP1_5 OP2_6 reg8 uimm16 HI)
-
-;and/or/xor register and immediate
-(define-pmacro (logical3 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "logical" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 op2 (f-op-bit8 0))
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(logical3 andbrim andb and OP1_6 OP2_7 regb8 uimm8 QI)
-(logical3 orbrim orb or OP1_7 OP2_7 regb8 uimm8 QI)
-(logical3 xorbrim xorb xor OP1_5 OP2_7 regb8 uimm8 QI)
-
-;and/or/xor register and indirect memory
-(define-pmacro (logical4 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "logical" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",[$"op2"]")
-       (+ opc1 opc2 op1 (f-op-bit2 2) op2)
-       (set mode op1 (insn1 mode op1 (mem HI op2)))
-       ()
-  )
-)
-(logical4 and2 and and OP1_6 OP2_8 dr sr2 HI)
-(logical4 or2 or or OP1_7 OP2_8 dr sr2 HI)
-(logical4 xor2 xor xor OP1_5 OP2_8 dr sr2 HI)
-(logical4 andb2 andb and OP1_6 OP2_9 drb sr2 QI)
-(logical4 orb2 orb or OP1_7 OP2_9 drb sr2 QI)
-(logical4 xorb2 xorb xor OP1_5 OP2_9 drb sr2 QI)
-
-;and/or/xor register and indirect memory post increment
-(define-pmacro (logical5 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "logical" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",[$"op2"+]")
-       (+ opc1 opc2 op1 (f-op-bit2 3) op2)
-       (sequence ()
-	   (set mode op1 (insn1 mode op1 (mem HI op2)))
-	   (set HI op2 (add HI op2 (const 2)))
-       )
-       ()
-  )
-)
-(logical5 and2i and and OP1_6 OP2_8 dr sr2 HI)
-(logical5 or2i or or OP1_7 OP2_8 dr sr2 HI)
-(logical5 xor2i xor xor OP1_5 OP2_8 dr sr2 HI)
-(logical5 andb2i andb and OP1_6 OP2_9 drb sr2 QI)
-(logical5 orb2i orb or OP1_7 OP2_9 drb sr2 QI)
-(logical5 xorb2i xorb xor OP1_5 OP2_9 drb sr2 QI)
-
-;add/sub register and immediate
-(define-pmacro (logical7 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"dir"$"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set (mem HI op1) (insn1 (mem HI op1) op2 ))
-       ()
-  )
-)
-(logical7 andpofr and and OP1_6 OP2_2 reg8 upof16 HI "pof")
-(logical7 orpofr or or OP1_7 OP2_2 reg8 upof16 HI "pof")
-(logical7 xorpofr xor xor OP1_5 OP2_2 reg8 upof16 HI "pof")
-(logical7 andbpofr andb and OP1_6 OP2_3 regb8 upof16 QI "pof")
-(logical7 orbpofr orb or OP1_7 OP2_3 regb8 upof16 QI "pof")
-(logical7 xorbpofr xorb xor OP1_5 OP2_3 regb8 upof16 QI "pof")
-
-;add/sub register and immediate
-(define-pmacro (logical8 name insn insn1 opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"dir"$"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set (mem HI op1) (insn1 (mem HI op1) op2 ))
-       ()
-  )
-)
-(logical8 andrpofr and and OP1_6 OP2_4 upof16 reg8 HI "pof")
-(logical8 orrpofr or or OP1_7 OP2_4 upof16 reg8 HI "pof")
-(logical8 xorrpofr xor xor OP1_5 OP2_4 upof16 reg8 HI "pof")
-(logical8 andbrpofr andb and OP1_6 OP2_5 upof16 regb8 QI "pof")
-(logical8 orbrpofr orb or OP1_7 OP2_5 upof16 regb8 QI "pof")
-(logical8 xorbrpofr xorb xor OP1_5 OP2_5 upof16 regb8 QI "pof")
-
-;and/or/xor register and direct memory
-(define-pmacro (logical6 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-
-;and/or/xor register and direct memory
-(define-pmacro (logical7 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "arithmetic" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set (mem HI op1) (insn1 (mem HI op1) op2))
-       ()
-  )
-)
-(logical6 andrm2 and and OP1_6 OP2_2 regmem8 memgr8 HI)
-(logical7 andrm3 and and OP1_6 OP2_4 memgr8 regmem8 HI)
-(logical6 andrm and and OP1_6 OP2_2 reg8 memory HI)
-(logical7 andrm1 and and OP1_6 OP2_4 memory reg8 HI)
-(logical6 orrm3 or or OP1_7 OP2_2 regmem8 memgr8 HI)
-(logical7 orrm2 or or OP1_7 OP2_4 memgr8 regmem8 HI)
-(logical6 orrm1 or or OP1_7 OP2_2 reg8 memory HI)
-(logical7 orrm or or OP1_7 OP2_4 memory reg8 HI)
-(logical6 xorrm3 xor xor OP1_5 OP2_2 regmem8 memgr8 HI)
-(logical7 xorrm2 xor xor OP1_5 OP2_4 memgr8 regmem8 HI)
-(logical6 xorrm1 xor xor OP1_5 OP2_2 reg8 memory HI)
-(logical7 xorrm xor xor OP1_5 OP2_4 memory reg8 HI)
-(logical6 andbrm2 andb and OP1_6 OP2_3 regbmem8 memgr8 QI)
-(logical7 andbrm3 andb and OP1_6 OP2_5 memgr8 regbmem8 QI)
-(logical6 andbrm andb and OP1_6 OP2_3 regb8 memory QI)
-(logical7 andbrm1 andb and OP1_6 OP2_5 memory regb8 QI)
-(logical6 orbrm3 orb or OP1_7 OP2_3 regbmem8 memgr8 QI)
-(logical7 orbrm2 orb or OP1_7 OP2_5 memgr8 regbmem8 QI)
-(logical6 orbrm1 orb or OP1_7 OP2_3 regb8 memory QI)
-(logical7 orbrm orb or OP1_7 OP2_5 memory regb8 QI)
-(logical6 xorbrm3 xorb xor OP1_5 OP2_3 regbmem8 memgr8 QI)
-(logical7 xorbrm2 xorb xor OP1_5 OP2_5 memgr8 regbmem8 QI)
-(logical6 xorbrm1 xorb xor OP1_5 OP2_3 regb8 memory QI)
-(logical7 xorbrm xorb xor OP1_5 OP2_5 memory regb8 QI)
-
-;****************************************************************
-;logical insn
-;****************************************************************
-;mov registers
-(define-pmacro (move name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "mov registers" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 op2)
-       ()
-  )
-)
-(move movr mov OP1_15 OP2_0 dr sr HI)
-(move movrb movb OP1_15 OP2_1 drb srb HI)
-
-;mov register and immediate
-(define-pmacro (move1 name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set mode op1 op2)
-       ()
-  )
-)
-(move1 movri mov  OP1_14 OP2_0 dri u4 HI)
-(move1 movbri movb  OP1_14 OP2_1 srb u4 QI)
-
-; MOV Rwn,#data16
-(dni movi "move immediate to register"
-     ((PIPE OS) (IDOC MOVE))
-     "mov $reg8,$hash$uimm16"
-     (+ OP1_14 OP2_6 reg8 uimm16)
-     (set HI reg8 uimm16)
-     ()
-)
-
-; MOVB reg,#data8
-(dni movbi "move immediate to register"
-     ((PIPE OS) (IDOC MOVE))
-     "movb $regb8,$hash$uimm8"
-     (+ OP1_14 OP2_7 regb8 uimm8 (f-op-bit8 0))
-     (set QI regb8 uimm8)
-     ()
-)
-
-;move and indirect memory
-(define-pmacro (mov2 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",[$"op2"]")
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (mem HI op2))
-       ()
-  )
-)
-(mov2 movr2 mov OP1_10 OP2_8 dr sr HI)
-(mov2 movbr2 movb OP1_10 OP2_9 drb sr QI)
-
-;move and indirect memory
-(define-pmacro (mov3 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " [$"op2 "],$"op1)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (mem HI op2))
-       ()
-  )
-)
-(mov3 movri2 mov OP1_11 OP2_8 dr sr HI)
-(mov3 movbri2 movb OP1_11 OP2_9 drb sr QI)
-
-;move and indirect memory
-(define-pmacro (mov4 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " [-$"op2 "],$"op1)
-       (+ opc1 opc2 op1 op2)
-       (sequence ()
-	  (set op1 (sub op2 (const HI 2)))
-	  (set HI (mem HI op2) op1)
-       )
-       ()
-  )
-)
-(mov4 movri3 mov OP1_8 OP2_8 dr sr HI)
-(mov4 movbri3 movb OP1_8 OP2_9 drb sr QI)
-
-;mov register and indirect memory post increment
-(define-pmacro (mov5 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",[$"op2"+]")
-       (+ opc1 opc2 op1 op2)
-       (sequence ()
-	   (set mode op1 (mem HI op2))
-	   (set HI op2 (add HI op2 (const 2)))
-       )
-       ()
-  )
-)
-(mov5 mov2i mov OP1_9 OP2_8 dr sr HI)
-(mov5 movb2i movb OP1_9 OP2_9 drb sr HI)
-
-;mov indirect memory
-(define-pmacro (mov6 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " [$"op1 "],[$"op2"]")
-       (+ opc1 opc2 op1 op2)
-       (set HI (mem HI op1) (mem HI op2))
-       ()
-  )
-)
-(mov6 mov6i mov OP1_12 OP2_8 dr sr HI)
-(mov6 movb6i movb OP1_12 OP2_9 dr sr HI)
-
-;mov indirect memory
-(define-pmacro (mov7 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " [$"op1 "+],[$"op2"]")
-       (+ opc1 opc2 op1 op2)
-       (sequence ()
-          (set mode (mem mode op1) (mem mode op2))
-          (set mode op1 (add mode op1 (const mode 2)))
-       )
-       ()
-  )
-)
-(mov7 mov7i mov OP1_13 OP2_8 dr sr HI)
-(mov7 movb7i movb OP1_13 OP2_9 dr sr HI)
-
-;mov indirect memory
-(define-pmacro (mov8 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " [$"op1 "],[$"op2"+]")
-       (+ opc1 opc2 op1 op2)
-       (sequence ()
-          (set mode (mem mode op1) (mem mode op2))
-          (set mode op2 (add mode op2 (const mode 2)))
-       )
-       ()
-  )
-)
-(mov8 mov8i mov OP1_14 OP2_8 dr sr HI)
-(mov8 movb8i movb OP1_14 OP2_9 dr sr HI)
-
-;mov indirect memory
-(define-pmacro (mov9 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",[$"op2"+$hash$"uimm16"]")
-       (+ opc1 opc2 op1 op2 uimm16)
-       (sequence ((mode tmp1))
-	   (set mode tmp1 (add HI op2 uimm16))
-	   (set mode op1 (mem HI tmp1))
-       )
-       ()
-  )
-)
-(mov9 mov9i mov OP1_13 OP2_4 dr sr HI)
-(mov9 movb9i movb OP1_15 OP2_4 drb sr QI)
-
-;mov indirect memory
-(define-pmacro (mov10 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " [$"op2"+$hash$"uimm16 "],$"op1)
-       (+ opc1 opc2 op1 op2 uimm16)
-       (sequence ((mode tmp1))
-	   (set mode tmp1 (add HI op1 uimm16))
-	   (set mode (mem HI tmp1) op1)
-       )
-       ()
-  )
-)
-(mov10 mov10i mov OP1_12 OP2_4 dr sr HI)
-(mov10 movb10i movb OP1_14 OP2_4 drb sr QI)
-
-;move and indirect memory
-(define-pmacro (mov11 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " [$"op1 "],$"op2)
-       (+ opc1 opc2 (f-op-lbit4 0) op1 op2)
-       (set (mem mode op1) (mem HI op2))
-       ()
-  )
-)
-(mov11 movri11 mov OP1_8 OP2_4 src2 memory HI)
-(mov11 movbri11 movb OP1_10 OP2_4 src2 memory HI)
-
-;move and indirect memory
-(define-pmacro (mov12 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op2 ",[$"op1"]")
-       (+ opc1 opc2 (f-op-lbit4 0) op1 op2)
-       (set (mem HI op2) (mem mode op1))
-       ()
-  )
-)
-(mov12 movri12 mov OP1_9 OP2_4 src2 memory HI)
-(mov12 movbri12 movb OP1_11 OP2_4 src2 memory HI)
-
-(define-pmacro (movemem3 name insn opc1 opc2 op1 op2  dir)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set HI op1 op2)
-       ()
-  )
-)
-(movemem3 movehm5 mov OP1_14 OP2_6 regoff8 upof16 "pof")
-(movemem3 movehm6 mov OP1_14 OP2_6 regoff8 upag16 "pag")
-(movemem3 movehm7 mov OP1_14 OP2_6 regoff8 useg16 "segm")
-(movemem3 movehm8 mov OP1_14 OP2_6 regoff8 usof16 "sof")
-
-(define-pmacro (movemem4 name insn opc1 opc2 op1 op2 dir)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op1 op2 (f-op-bit8 0))
-       (set QI op1 op2)
-       ()
-  )
-)
-(movemem4 movehm9 movb OP1_14 OP2_7 regb8 uimm8 "pof")
-(movemem4 movehm10 movb OP1_14 OP2_7 regoff8 uimm8 "pag")
-
-(define-pmacro (movemem name insn opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$"dir"$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (mem HI op2))
-       ()
-  )
-)
-(movemem movrmp mov OP1_15 OP2_2 regoff8 upof16 HI "pof")
-(movemem movrmp1 movb OP1_15 OP2_3 regb8 upof16 QI "pof")
-(movemem movrmp2 mov OP1_15 OP2_2 regoff8 upag16 HI "pag")
-(movemem movrmp3 movb OP1_15 OP2_3 regb8 upag16 QI "pag")
-
-(define-pmacro (movemem1 name insn opc1 opc2 op1 op2 dir)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"dir"$"op1 ",$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set (mem HI op1) op2 )
-       ()
-  )
-)
-(movemem1 movrmp4 mov OP1_15 OP2_6  upof16 regoff8 "pof")
-(movemem1 movrmp5 movb OP1_15 OP2_7 upof16 regb8 "pof")
-
-(define-pmacro (movemem2 name insn opc1 opc2 op1 op2 mode dir)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$hash$"dir"$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set mode op1 op2)
-       ()
-  )
-)
-(movemem2 movehm1 mov OP1_14 OP2_0 dri u4 HI "pof")
-(movemem2 movehm2 movb OP1_14 OP2_1 srb u4 QI "pof")
-(movemem2 movehm3 mov OP1_14 OP2_0 dri u4 HI "pag")
-(movemem2 movehm4 movb OP1_14 OP2_1 srb u4 QI "pag")
-
-;move register and direct memory
-(define-pmacro (move12 name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (mem HI op2))
-       ()
-  )
-)
-
-;move register and direct memory
-(define-pmacro (move13 name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set (mem HI op1) op2)
-       ()
-  )
-)
-(move12 mve12 mov OP1_15 OP2_2 regmem8 memgr8 HI)
-(move13 mve13 mov OP1_15 OP2_6 memgr8 regmem8 HI)
-(move12 mover12 mov OP1_15 OP2_2 reg8 memory HI)
-(move13 mvr13 mov OP1_15 OP2_6 memory reg8 HI)
-(move12 mver12 movb OP1_15 OP2_3 regbmem8 memgr8 QI)
-(move13 mver13 movb OP1_15 OP2_7 memgr8 regbmem8 QI)
-(move12 movr12 movb OP1_15 OP2_3 regb8 memory QI)
-(move13 movr13 movb OP1_15 OP2_7 memory regb8 QI)
-
-; MOVBS Rw,Rb
-(dni movbsrr "mov byte register with sign extension to word register"
-     ((PIPE OS) (IDOC MOVE))
-     "movbs $sr,$drb"
-     (+ OP1_13 OP2_0 drb sr)
-     (sequence ()
-         (if (and QI drb (const 128))
-	     (set HI sr (or HI (const HI 65280) drb)))
-         (set HI sr (and HI (const HI 255) drb)) 
-     )
-     ()
-)
-
-; MOVBZ Rw,Rb
-(dni movbzrr "mov byte register with zero extension to word register"
-     ((PIPE OS) (IDOC MOVE))
-     "movbz $sr,$drb"
-     (+ OP1_12 OP2_0 drb sr)
-     (set HI sr (and HI (const HI 255) drb))
-     ()
-)
-
-; MOVBS reg,POF mem
-(dni movbsrpofm "mov memory to byte register"
-     ((PIPE OS) (IDOC MOVE))
-     "movbs $regmem8,$pof$upof16"
-     (+ OP1_13 OP2_2 regmem8 upof16)
-     (set QI regmem8 (mem HI upof16))
-     ()
-)
-
-; MOVBS pof,reg
-(dni movbspofmr "mov memory to byte register"
-     ((PIPE OS) (IDOC MOVE))
-     "movbs $pof$upof16,$regbmem8"
-     (+ OP1_13 OP2_5 upof16 regbmem8 )
-     (set QI  (mem HI upof16) regbmem8)
-     ()
-)
-
-; MOVBZ reg,POF mem
-(dni movbzrpofm "mov memory to byte register"
-     ((PIPE OS) (IDOC MOVE))
-     "movbz $reg8,$pof$upof16"
-     (+ OP1_12 OP2_2 reg8 upof16)
-     (set QI reg8 (mem HI upof16))
-     ()
-)
-
-; MOVBZ pof,reg
-(dni movbzpofmr "mov memory to byte register"
-     ((PIPE OS) (IDOC MOVE))
-     "movbz $pof$upof16,$regb8"
-     (+ OP1_12 OP2_5 upof16 regb8 )
-     (set QI  (mem HI upof16) regb8)
-     ()
-)
-
-;move register and direct memory
-(define-pmacro (move14 name insn opc1 opc2 op1 op2 )
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set HI op1 (and HI (const HI 255) (mem QI op2)))
-       ()
-  )
-)
-
-;move register and direct memory
-(define-pmacro (move15 name insn opc1 opc2 op1 op2 )
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set HI (mem HI op1) (and HI (const HI 255) op2))
-       ()
-  )
-)
-(move14 movebs14 movbs OP1_13 OP2_2 regmem8 memgr8 )
-(move15 movebs15 movbs OP1_13 OP2_5 memgr8 regbmem8 )
-(move14 moverbs14 movbs OP1_13 OP2_2 reg8 memory )
-(move15 movrbs15 movbs OP1_13 OP2_5 memory regb8 )
-(move14 movebz14 movbz OP1_12 OP2_2 regmem8 memgr8 )
-(move15 movebz15 movbz OP1_12 OP2_5 memgr8 regbmem8 )
-(move14 moverbz14 movbz OP1_12 OP2_2 reg8 memory )
-(move15 movrbz15 movbz OP1_12 OP2_5 memory regb8 )
-
-
-;mov registers
-(define-pmacro (moveb1 name insn opc1 opc2 op1 op2)
-  (dni name 
-       (.str name "move" )
-       ((PIPE OS) (IDOC MOVE))
-       (.str insn " $"op2 ",$"op1)
-       (+ opc1 opc2 op1 op2)
-       (sequence ()
-           (if (and QI op1 (const 128))
-	       (set HI op2 (or HI (const HI 65280) op1)))
-           (set HI op2 (and HI (const HI 255) op1)) 
-       )
-       ()
-  )
-)
-(moveb1 movrbs movbs OP1_13 OP2_0 drb sr )
-(moveb1 movrbz movbz OP1_12 OP2_0 drb sr )
-
-
-
-;jump and call insns
-;******************************************************************
-;Absolute conditional jump
-(define-pmacro (jmpabs name insn)
-  (dni name
-     (.str name "Absolute conditional jump" )
-     ((PIPE OS) (IDOC JMP))
-     (.str insn " $extcond,$caddr")
-     (+ OP1_14 OP2_10 extcond (f-op-bitone 0) bitone bit01 caddr)
-     (sequence ((HI tmp1) (HI tmp2))
-        (set tmp1 (mem HI caddr))
-        (set tmp2 (sub HI pc (mem HI caddr)))
-        (if (gt tmp2 (const 0)) ;; FIXME: (lt tmp2 (const 32)) (eq tmp2 (const 32))
-            (set bitone (const 1)))
-	(if (lt tmp2 (const 0)) ;; FIXME: (eq tmp2 (const 0)) (gt tmp2 (const 32))
-            (set bitone (const 0)))
-        (if (eq extcond (const 1)) ;; FIXME: (ne extcond cc_Z))
-             (set bit01 (const 0))    
-             (set HI pc (mem HI caddr)))
-	(if (ne extcond (const 1)) ;; FIXME: (eq extcond cc_Z))
-             (set bit01 (const 1))
-             (set HI pc (add HI pc (const 2))))
-     )
-     ()
-  )
-)
-
-(jmpabs jmpa0 jmpa+)
-(jmpabs jmpa1 jmpa)
-
-; JMPA- cc,caddr
-(dni jmpa- "Absolute conditional jump"
-     (COND-CTI (PIPE OS) (IDOC JMP))
-     "jmpa- $extcond,$caddr"
-     (+ OP1_14 OP2_10 extcond (f-op-bitone 0) bitone (f-op-1bit 1) caddr)
-     (sequence ((HI tmp1) (HI tmp2))
-        (set tmp1 (mem HI caddr))
-        (set tmp2 (sub HI pc (mem HI caddr)))
-        (if (gt tmp2 (const 0)) ;; FIXME: (lt tmp2 (const 32)) (eq tmp2 (const 32))
-            (set bitone (const 1)))
-	(if (lt tmp2 (const 0)) ;; FIXME: (eq tmp2 (const 0)) (gt tmp2 (const 32))
-            (set bitone (const 0)))
-        (set HI pc (add HI pc (const 2)))
-     )
-     ()
-)
-
-; JMPI cc,[Rwn]
-(dni jmpi "Indirect conditional jump"
-     (COND-CTI (PIPE OS) (IDOC JMP))
-     "jmpi $icond,[$sr]"
-     (+ OP1_9 OP2_12 icond sr)
-     (sequence ()
-        (if (eq icond (const 1))
-             (set HI pc (mem HI sr)))
-             (set HI pc (add HI pc (const 2)))
-     )
-     ()
-)
-
-(define-pmacro (jmprel name insn opc1)
-  (dni name
-       (.str name "conditional" )
-       (COND-CTI (PIPE OS) (IDOC JMP))
-       (.str insn " $cond,$rel")
-       (+ opc1 OP2_13 rel)
-       (sequence ()
-           (if (eq cond (const 1))
-               (sequence ()
-		    (if (lt QI rel (const 0))
-			(sequence ()
-				  ;; FIXME: (neg QI rel)
-				  ;; FIXME: (add QI rel (const 1))
-				  ;; FIXME: (mul QI rel (const 2))
-				  (set HI pc (sub HI pc rel))
-				  ))
-                    (set HI pc (add HI pc (mul QI rel (const 2))))
-               )
-            )
-            (set HI pc pc)
-       )
-       ()
-  )
-)
-
-(jmprel jmpr_nenz jmpr  COND_NE_NZ )
-(jmprel jmpr_sgt jmpr  COND_SGT )
-(jmprel jmpr_z jmpr  COND_Z )
-(jmprel jmpr_v jmpr  COND_V )
-(jmprel jmpr_nv jmpr  COND_NV )
-(jmprel jmpr_n jmpr  COND_N )
-(jmprel jmpr_nn jmpr  COND_NN )
-(jmprel jmpr_c jmpr  COND_C )
-(jmprel jmpr_nc jmpr  COND_NC )
-(jmprel jmpr_eq jmpr  COND_EQ )
-(jmprel jmpr_ne jmpr  COND_NE )
-(jmprel jmpr_ult jmpr  COND_ULT )
-(jmprel jmpr_ule jmpr  COND_ULE )
-(jmprel jmpr_uge jmpr  COND_UGE )
-(jmprel jmpr_ugt jmpr  COND_UGT )
-(jmprel jmpr_sle jmpr  COND_SLE )
-(jmprel jmpr_sge jmpr  COND_SGE )
-(jmprel jmpr_net jmpr  COND_NET )
-(jmprel jmpr_uc jmpr  COND_UC )
-(jmprel jmpr_slt jmpr  COND_SLT )
-
-
-
-
-; JMPS seg,caddr
-(dni jmpseg "absolute inter-segment jump"
-     (UNCOND-CTI(PIPE OS) (IDOC JMP))
-     "jmps $hash$segm$useg8,$hash$sof$usof16"
-     (+ OP1_15 OP2_10 seg usof16)
-     (sequence ()
-          (if (eq BI sgtdisbit (const BI 0))
-	      (set QI (reg h-cr 10) useg8))
-	  ;; FIXME: previous indentation suggested this nop was the `else'
-	  ;; clause of the previous `if'.
-	  (nop)
-          (set HI pc usof16)
-     )
-     ()
-)
-
-; JMPS seg,caddr
-(dni jmps "absolute inter-segment jump"
-     (UNCOND-CTI(PIPE OS) (IDOC JMP))
-     "jmps $seg,$caddr"
-     (+ OP1_15 OP2_10 seg caddr)
-     (sequence ()
-          (if (eq BI sgtdisbit (const BI 0))
-	      (set QI (reg h-cr 10) seg))
-	  ;; FIXME: previous indentation suggested this nop was the `else'
-	  ;; clause of the previous `if'.
-	  (nop)
-          (set HI pc caddr)
-     )
-     ()
-)
-
-
-;relative jump if bit set
-;JB bitaddrQ.q,rel
-(dni jb "relative jump if bit set"
-     ((PIPE OS) (IDOC JMP))
-     "jb $genreg$dot$qlobit,$relhi"
-     (+ OP1_8 OP2_10 genreg relhi qlobit (f-qhibit 0))
-     (sequence ((HI tmp1) (HI tmp2))
-          (set HI tmp1 genreg)
-          (set HI tmp2 (const 1))
-          ;;(sll HI tmp2 qlobit) - FIXME: missing (set ...)
-          (set HI tmp2 (and tmp1 tmp2))
-          (if (eq tmp2 (const 1)) ;; FIXME: (ne tmp2 0)?
-             (sequence ()
-                (if (lt QI relhi (const 0))
-		    (set HI pc (add HI pc (mul QI relhi (const 2)))))
-             ))
-         (set HI pc (add HI pc (const 4))) ;; FIXME: Is this right?
-     )
-     ()
-)
-
-;relative jump if bit set and clear bit
-;JBC bitaddrQ.q,rel
-(dni jbc "relative jump if bit set and clear bit"
-     ((PIPE OS) (IDOC JMP))
-     "jbc $genreg$dot$qlobit,$relhi"
-     (+ OP1_10 OP2_10 genreg relhi qlobit (f-qhibit 0))
-     (sequence ((HI tmp1) (HI tmp2))
-          (set HI tmp1 genreg)
-          (set HI tmp2 (const 1))
-          ;;(sll HI tmp2 qlobit) - FIXME: missing (set ...)
-          (set HI tmp2 (and tmp1 tmp2))
-          (if (eq tmp2 (const 1)) ;; FIXME: (ne tmp2 0)?
-             (sequence ()
-		;; FIXME: The `else' clause has several statements.
-                (if (lt QI relhi (const 0))
-		    (set tmp2 (const 1))
-		    (set tmp1 genreg)
-		    ;; FIXME: (sll tmp2 qlobit)
-		    ;; FIXME: (inv tmp2)
-		    (set HI tmp1 (and tmp1 tmp2))
-		    (set HI genreg tmp1)
-		    (set HI pc (add HI pc (mul QI relhi (const 2)))))
-             ))
-          (set HI pc (add HI pc (const 4))) ;; FIXME: Is this right?
-     )
-     ()
-)
-
-;relative jump if bit set
-;JNB bitaddrQ.q,rel
-(dni jnb "relative jump if bit not set"
-     ((PIPE OS) (IDOC JMP))
-     "jnb $genreg$dot$qlobit,$relhi"
-     (+ OP1_9 OP2_10 genreg relhi qlobit (f-qhibit 0))
-     (sequence ((HI tmp1) (HI tmp2))
-          (set HI tmp1 genreg)
-          (set HI tmp2 (const 1))
-          ;;(sll HI tmp2 qlobit) - FIXME: missing (set ...)
-          (set HI tmp2 (and tmp1 tmp2))
-          (if (eq tmp2 (const 0)) ;; FIXME: (ne tmp2 0)?
-             (sequence ()
-                (if (lt QI relhi (const 0))
-		    (set HI pc (add HI pc (mul QI relhi (const 2)))))
-             ))
-          (set HI pc (add HI pc (const 4))) ;; FIXME: Is this right?
-     )
-     ()
-)
-
-;relative jump if bit not set and set bit
-;JNBS bitaddrQ.q,rel
-(dni jnbs "relative jump if bit not set and set bit"
-     ((PIPE OS) (IDOC JMP))
-     "jnbs $genreg$dot$qlobit,$relhi"
-     (+ OP1_11 OP2_10 genreg relhi qlobit (f-qhibit 0))
-     (sequence ((HI tmp1) (HI tmp2))
-          (set HI tmp1 genreg)
-          (set HI tmp2 (const 1))
-          ;;(sll HI tmp2 qlobit) - FIXME: missing (set ...)
-          (set HI tmp2 (and tmp1 tmp2))
-          (if (eq tmp2 (const 0))
-             (sequence ()
-		;; FIXME: The `else' clause has several statements.
-                (if (lt QI relhi (const 0))
-		    (set tmp2 (const 1))
-		    (set tmp1 reg8)
-		    ;; FIXME: (sll tmp2 qbit)
-		    (set BI tmp1(or tmp1 tmp2))
-		    (set HI reg8 tmp1)
-		    (set HI pc (add HI pc (mul QI relhi (const 2)))))
-             ))
-          (set HI pc (add HI pc (const 4))) ;; FIXME: Is this right?
-     )
-     ()
-)
-
-
-;Absolute conditional call
-(define-pmacro (callabs name insn)
-  (dni name
-     (.str name "Absolute conditional call" )
-     ((PIPE OS) (IDOC JMP))
-     (.str insn " $extcond,$caddr")
-     (+ OP1_12 OP2_10 extcond (f-op-2bit 0) bit01 caddr)
-     (sequence ()
-        (if (eq extcond (const 1))
-          (set bit01 (const 0))
-          (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-	  (set HI (mem HI (reg h-cr 9)) pc)
-	  (set HI pc (mem HI caddr)))
-        (if (ne extcond (const 1))
-          (set bit01 (const 1))
-          (set HI pc (add HI pc (const 2))))
-     )
-     ()
-  )
-)
-
-(callabs calla0 calla+)
-(callabs calla1 calla)
-
-; CALLA- cc,caddr
-(dni calla- "Absolute conditional call"
-     (COND-CTI (PIPE OS) (IDOC JMP))
-     "calla- $extcond,$caddr"
-     (+ OP1_12 OP2_10 extcond (f-op-bit3 1) caddr)
-     (sequence ()
-        (if (eq extcond (const 1))
-          (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-	  (set HI (mem HI (reg h-cr 9)) pc)
-	  (set HI pc (mem HI caddr)))
-        (set HI pc (add HI pc (const 2)))
-     )
-     ()
-)
-
-; CALLI cc,[Rwn]
-(dni calli "indirect subroutine call"
-     (COND-CTI (PIPE OS) (IDOC JMP))
-     "calli $icond,[$sr]"
-     (+ OP1_10 OP2_11 icond sr)
-     (sequence ()
-         (if (eq icond (const 1))
-             (sequence ()
-	             (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-        	     (set HI (mem HI (reg h-cr 9)) pc)
-        	     (set HI pc (mem HI sr))
-             )
-         )
-         (set HI pc (add HI pc (const 2)))
-     )
-     ()
-)
-
-; CALLR rel
-(dni callr "Call subroutine with PC relative signed 8 bit offset"
-     ( COND-CTI (PIPE OS) (IDOC JMP))
-     "callr $rel"
-     (+ OP1_11 OP2_11 rel)
-     (sequence ()
-          (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-	  (set HI (mem HI (reg h-cr 9)) pc)
-          (sequence ()
-                (if (lt QI rel (const 0))
-		    (sequence ()
-			      ;; FIXME: (neg QI rel)
-			      ;; FIXME: (add QI rel (const 1))
-			      ;; FIXME: (mul QI rel (const 2))
-			      (set HI pc (sub HI pc rel))
-		    ))
-                (set HI pc (add HI pc (mul QI rel (const 2))))
-          )
-      )
-      ()
-)
-
-
-; CALLS seg,caddr
-(dni callseg "call inter-segment subroutine"
-     (UNCOND-CTI (PIPE OS) (IDOC JMP))
-     "calls $hash$segm$useg8,$hash$sof$usof16"
-     (+ OP1_13 OP2_10 useg8 usof16)
-     (sequence ()
-          (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-          (set HI (mem HI (reg h-cr 9)) (reg h-cr 10))
-          (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-          (set HI (mem HI (reg h-cr 9)) pc)
-          (if (eq BI sgtdisbit (const BI 0))
-	      (set QI (reg h-cr 10) useg8))
-	  ;; FIXME: previous indentation suggested this nop was the `else'
-	  ;; clause of the previous `if'.
-	  (nop)
-          (set HI pc usof16)
-     )
-     ()
-)
-
-; CALLS seg,caddr
-(dni calls "call inter-segment subroutine"
-     (UNCOND-CTI (PIPE OS) (IDOC JMP))
-     "calls $seg,$caddr"
-     (+ OP1_13 OP2_10 seg caddr)
-     (sequence ()
-          (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-          (set HI (mem HI (reg h-cr 9)) (reg h-cr 10))
-          (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-          (set HI (mem HI (reg h-cr 9)) pc)
-          (if (eq BI sgtdisbit (const BI 0))
-	      (set QI (reg h-cr 10) seg))
-	  ;; FIXME: previous indentation suggested this nop was the `else'
-	  ;; clause of the previous `if'.
-	  (nop)
-          (set HI pc caddr)
-     )
-     ()
-)
-
-; PCALL reg,caddr
-(dni pcall "push word and call absolute subroutine"
-       (UNCOND-CTI (PIPE OS) (IDOC JMP))
-       "pcall $reg8,$caddr"
-       (+ OP1_14 OP2_2 reg8 caddr)
-       (sequence ((HI tmp1))
-            (set HI tmp1 reg8)
- 	    (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-	    (set HI (mem HI (reg h-cr 9)) tmp1)
- 	    (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-	    (set HI (mem HI (reg h-cr 9)) pc)
-            (set HI pc caddr)
-       )
-       ()
-)
-
-; TRAP #uimm7
-(dni trap "software trap"
-       (UNCOND-CTI (PIPE OS) (IDOC JMP))
-       "trap $hash$uimm7"
-       (+ OP1_9 OP2_11 uimm7 (f-op-1bit 0))
-       (sequence ()
-	    (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-            (set HI (mem HI (reg h-cr 9)) (reg h-cr 4))
-	    (if (eq BI sgtdisbit (const BI 0))
-		(set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-		(set HI (mem HI (reg h-cr 9)) (reg h-cr 10) )
-	    )
-	    (nop)
-            (set HI (reg h-cr 10) (reg h-cr 11))
-            (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))
-            (set HI (mem HI (reg h-cr 9)) pc)
-            (set HI pc (mul QI uimm7 (const 4)))
-       )
-       ()
-)
-
-;Return insns
-; RET
-(dni ret "return from subroutine"
-       (UNCOND-CTI (PIPE OS) (IDOC JMP))
-       "ret"
-       (+ OP1_12 OP2_11 (f-op-bit8 0))
-       (sequence ()
-           (set HI pc (mem HI (reg h-cr 9)))
-           (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))
-       )
-       ()
-)
-
-; RETS 
-(dni rets "return from inter-segment sunroutine"
-       (UNCOND-CTI (PIPE OS) (IDOC JMP))
-       "rets"
-       (+ OP1_13 OP2_11 (f-op-bit8 0))
-       (sequence ()
-           (set HI pc (mem HI (reg h-cr 9)))
-           (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))
-	   (if (eq BI sgtdisbit (const BI 0))
-	       (set HI (reg h-cr 10) (mem HI (reg h-cr 9)))
-           )
-	   (nop)
-     	   (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))
-       )
-       ()
-)
-
-; RETP reg
-(dni retp "return from subroutine and pop word register"
-       (UNCOND-CTI (PIPE OS) (IDOC JMP))
-       "retp $reg8"
-       (+ OP1_14 OP2_11 reg8)
-       (sequence ((HI tmp1))
-            (set HI pc (mem HI (reg h-cr 9)))
-            (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))
-	    (set HI tmp1 (mem HI (reg h-cr 9)))
-            (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))
-            (set HI reg8 tmp1)
-       )
-       ()
-)
-
-; RETI
-(dni reti "return from ISR"
-       (UNCOND-CTI (PIPE OS) (IDOC JMP))
-       "reti"
-       (+ OP1_15 OP2_11 (f-op-lbit4 8) (f-op-bit4 8))
-       (sequence ()
-           (set HI pc (mem HI (reg h-cr 9)))
-           (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))
-	   (if (eq BI sgtdisbit (const BI 0))
-	       (sequence ()
-			 (set HI (reg h-cr 10) (mem HI (reg h-cr 9)))
-			 (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))
-               )
-           )
-	   (nop)
-           (set HI (reg h-cr 4) (mem HI (reg h-cr 9)))
-     	   (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))
-       )
-       ()
-)
-
-;stack operation insn
-;******************************************************************
-; POP reg
-(dni pop "restore register from system stack"
-     ((PIPE OS) (IDOC MISC))
-     "pop $reg8"
-     (+ OP1_15 OP2_12 reg8)
-     (sequence ((HI tmp1))
-	   (set HI tmp1 (mem HI (reg h-cr 9)))
-	   (set (reg h-cr 9) (add HI (reg h-cr 9) (const 2)))         
-           (set HI reg8 tmp1)
-     )
-     ()
-)
-
-; PUSH reg
-(dni push "save register on system stack"
-     ((PIPE OS) (IDOC MISC))
-     "push $reg8"
-     (+ OP1_14 OP2_12 reg8)
-     (sequence ((HI tmp1))
-	   (set HI tmp1 reg8)
-	   (set (reg h-cr 9) (sub HI (reg h-cr 9) (const 2)))         
-           (set HI (mem HI (reg h-cr 9)) tmp1)
-     )
-     ()
-)
-
-;context switching insns
-; SCXT reg,#data16
-(dni scxti "Push word register on stack and update same with immediate data"
-     ((PIPE OS) (IDOC MISC))
-     "scxt $reg8,$hash$uimm16"
-     (+ OP1_12 OP2_6 reg8 uimm16)
-     (sequence ((HI tmp1) (HI tmp2))
-         (set HI tmp1 reg8)
-         (set HI tmp2 uimm16)
-         ;; FIXME: (sub HI (reg HI h-cr 9) (const 2))
-         (set HI (reg HI h-cr 9) tmp1)
-         (set HI reg8 tmp2)
-     )
-     ()
-)
-
-; SCXT reg,POF mem
-(dni scxtrpofm "mov memory to byte register"
-     ((PIPE OS) (IDOC MOVE))
-     "scxt $reg8,$pof$upof16"
-     (+ OP1_13 OP2_6 reg8 upof16)
-     (set QI reg8 (mem HI upof16))
-     ()
-)
-
-; SCXT regmem8,memgr8
-(dni scxtmg "Push word register on stack and update same with direct memory"
-     ((PIPE OS) (IDOC MISC))
-     "scxt $regmem8,$memgr8"
-     (+ OP1_13 OP2_6 regmem8 memgr8)
-     (sequence ((HI tmp1) (HI tmp2))
-         (set HI tmp1 regmem8)
-         (set HI tmp2 memgr8)
-         ;; FIXME: (sub HI (reg HI h-cr 9) (const 2))
-         (set HI (reg HI h-cr 9) tmp1)
-         (set HI regmem8 tmp2)
-     )
-     ()
-)
-
-; SCXT reg,mem
-(dni scxtm "Push word register on stack and update same with direct memory"
-     ((PIPE OS) (IDOC MISC))
-     "scxt $reg8,$memory"
-     (+ OP1_13 OP2_6 reg8 memory)
-     (sequence ((HI tmp1) (HI tmp2))
-         (set HI tmp1 reg8)
-         (set HI tmp2 memory)
-         ;; FIXME: (sub HI (reg HI h-cr 9) (const 2))
-         (set HI (reg HI h-cr 9) tmp1)
-         (set HI reg8 tmp2)
-     )
-     ()
-)
-
-;No operation
-; NOP 
-(dni nop "nop"
-     ((PIPE OS) (IDOC MISC))
-     "nop"
-     (+ OP1_12 OP2_12 (f-op-bit8 0))
-     ()
-     ()
-)
-
-;*********system control instructions *********************/
-
-(define-pmacro (sysctrl name insn opc1 opc2 op1 op2 op3)
-  (dni name 
-       (.str name "miscellaneous" )
-       ((PIPE OS) (IDOC MISC))
-       (.str insn )
-       (+ opc1 opc2 (f-op-lbit4 op1) (f-op-bit4 op2) (f-data8 op3) (f-op-bit8 op3))
-       ()
-       ()
-  )
-)
-(sysctrl srstm srst  OP1_11 OP2_7 4 8 183 )
-(sysctrl idlem idle  OP1_8 OP2_7 7 8 135)
-(sysctrl pwrdnm pwrdn  OP1_9 OP2_7 6 8 151)
-(sysctrl diswdtm diswdt  OP1_10 OP2_5 5 10 165)
-(sysctrl enwdtm enwdt  OP1_8 OP2_5 7 10 133)
-(sysctrl einitm einit  OP1_11 OP2_5 4 10 181)
-(sysctrl srvwdtm srvwdt  OP1_10 OP2_7 5 8 167 )
-
-;s/w brk
-; SBRK 
-(dni sbrk "sbrk"
-     ((PIPE OS) (IDOC MISC))
-     "sbrk"
-     (+ OP1_8 OP2_12 (f-op-bit8 0))
-     ()
-     ()
-)
-
-; atomic sequence
-; ATOMIC #irang2
-(dni atomic "begin atomic sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "atomic $hash$uimm2"
-     (+ OP1_13 OP2_1 (f-op-lbit2 0) uimm2 (f-op-bit4 0))
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended register sequence
-; EXTR #irang2
-(dni extr "begin extended register sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "extr $hash$uimm2"
-     (+ OP1_13 OP2_1 (f-op-lbit2 2) uimm2 (f-op-bit4 0))
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended page sequence
-; EXTP Rw,#irang2
-(dni extp "begin extended page sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "extp $sr,$hash$uimm2"
-     (+ OP1_13 OP2_12 (f-op-lbit2 1) uimm2 sr)
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended page sequence
-; EXTP #pag10,#irang2
-(dni extp1 "begin extended page sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "extp $hash$pagenum,$hash$uimm2"
-     (+ OP1_13 OP2_7 (f-op-lbit2 1) uimm2 (f-op-bit4 0) pagenum (f-qlobit 0) (f-qlobit2 0))
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-; EXTP #pag10,#irang2
-(dni extpg1 "begin extended page sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "extp $hash$pag$upag16,$hash$uimm2"
-     (+ OP1_13 OP2_7 (f-op-lbit2 1) uimm2 (f-op-bit4 0) upag16 )
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended page and register sequence
-; EXTPR Rw,#irang2
-(dni extpr "begin extended page and register sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "extpr $sr,$hash$uimm2"
-     (+ OP1_13 OP2_12 (f-op-lbit2 3) uimm2 sr)
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended page and register sequence
-; EXTPR #pag10,#irang2
-(dni extpr1 "begin extended page sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "extpr $hash$pagenum,$hash$uimm2"
-     (+ OP1_13 OP2_7 (f-op-lbit2 3) uimm2 (f-op-bit4 0) pagenum (f-qlobit 0) (f-qlobit2 0))
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended segment sequence
-; EXTS Rw,#irang2
-(dni exts "begin extended segment sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "exts $sr,$hash$uimm2"
-     (+ OP1_13 OP2_12 (f-op-lbit2 0) uimm2 sr)
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended segment sequence
-; EXTS #seg8,#irang2
-(dni exts1 "begin extended segment sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "exts $hash$seghi8,$hash$uimm2"
-     (+ OP1_13 OP2_7 (f-op-lbit2 0) uimm2 (f-op-bit4 0) seghi8 (f-op-bit8 0))
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended segment register sequence
-; EXTSR Rwm,#irang2
-(dni extsr "begin extended segment and register sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "extsr $sr,$hash$uimm2"
-     (+ OP1_13 OP2_12 (f-op-lbit2 2) uimm2 sr)
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;extended segment register sequence
-; EXTSR #pag10,#irang2
-(dni extsr1 "begin extended segment and register sequence"
-     ((PIPE OS) (IDOC SYSC))
-     "extsr $hash$seghi8,$hash$uimm2"
-     (+ OP1_13 OP2_7 (f-op-lbit2 2) uimm2 (f-op-bit4 0) seghi8 (f-op-bit8 0))
-     (sequence ((HI count))
-	  (set HI count uimm2)
-          (cond
-  	    ((ne HI count (const 0))
-	    (sequence ()
-	       (set HI pc (add HI pc (const 2)))
-               (set HI count (sub HI count (const 1)))
-            ))
-          )
-          (set HI count (const 0))
-      )
-      ()
-)
-
-;prioritize register
-;PRIOR Rwn,Rwm
-(dni prior "add registers"
-     ((PIPE OS) (IDOC ALU))
-     "prior $dr,$sr"
-     (+ OP1_2 OP2_11 dr sr)
-     (sequence ((HI count) (HI tmp1) (HI tmp2))
-	  (set HI count (const 0))
-	  (set HI tmp1 sr)
-	  (set HI tmp2 (and tmp1 (const 32768)))
-          (cond
-  	    ((ne HI tmp2 (const 1)) ;;(ne HI sr (const 0)) - FIXME: and? or?
-	       ;;(sll HI tmp1 (const 1)) - FIXME: missing (set ...)
-               (set HI tmp2 (and tmp1 (const 32768)))
-               (set HI count (add HI count (const 1)))
-            )
-           )        
-           (set HI dr count)
-      )
-      ()
-)
-
-
-;bit instructions
-;******************************************************************
-;bit clear
-(define-pmacro (bclear name insn opc1)
-  (dni name
-     (.str name "bit clear" )
-     ((PIPE OS) (IDOC ALU))
-     (.str insn " $reg8$dot$qbit")
-     (+ opc1 OP2_14 reg8)
-     (sequence ((HI tmp1) (HI tmp2))
-     (set tmp2 (const 1))
-     (set tmp1 reg8)
-     ;; FIXME: (sll tmp2 qbit)
-     ;; FIXME: (inv tmp2)
-     (set BI tmp1(and tmp1 tmp2))
-     (set HI reg8 tmp1))
-     ()
-  )
-)
-
-;clear direct bit
-(dni bclr18 "bit logical MOVN"
-     ((PIPE OS) (IDOC ALU))
-     "bclr $RegNam"
-     (+ OP1_11 OP2_14 RegNam)
-     (sequence ((HI tmp1) (HI tmp2))
-     (set tmp2 (const 1))
-     (set tmp1 reg8)
-     ;; FIXME: (sll tmp2 qbit)
-     ;; FIXME: (inv tmp2)
-     (set BI tmp1(and tmp1 tmp2))
-     (set HI reg8 tmp1))
-     ()
-)
-
-
-(bclear bclr0 bclr  QBIT_0 )
-(bclear bclr1 bclr  QBIT_1 )
-(bclear bclr2 bclr  QBIT_2 )
-(bclear bclr3 bclr  QBIT_3 )
-(bclear bclr4 bclr  QBIT_4 )
-(bclear bclr5 bclr  QBIT_5 )
-(bclear bclr6 bclr  QBIT_6 )
-(bclear bclr7 bclr  QBIT_7 )
-(bclear bclr8 bclr  QBIT_8 )
-(bclear bclr9 bclr  QBIT_9 )
-(bclear bclr10 bclr  QBIT_10 )
-(bclear bclr11 bclr  QBIT_11 )
-(bclear bclr12 bclr  QBIT_12 )
-(bclear bclr13 bclr  QBIT_13 )
-(bclear bclr14 bclr  QBIT_14 )
-(bclear bclr15 bclr  QBIT_15 )
-
-;set direct bit
-(dni bset19 "bit logical MOVN"
-     ((PIPE OS) (IDOC ALU))
-     "bset $RegNam"
-     (+ OP1_11 OP2_15 RegNam)
-     (sequence ((HI tmp1) (HI tmp2))
-     (set tmp2 (const 1))
-     (set tmp1 reg8)
-     ;; FIXME: (sll tmp2 qbit)
-     (set BI tmp1(or tmp1 tmp2))
-     (set HI reg8 tmp1))
-     ()
-)
-
-;bit set
-(define-pmacro (bitset name insn opc1)
-  (dni name
-     (.str name "bit set" )
-     ((PIPE OS) (IDOC ALU))
-     (.str insn " $reg8$dot$qbit")
-     (+ opc1 OP2_15 reg8)
-     (sequence ((HI tmp1) (HI tmp2))
-     (set tmp2 (const 1))
-     (set tmp1 reg8)
-     ;; FIXME: (sll tmp2 qbit)
-     (set BI tmp1(or tmp1 tmp2))
-     (set HI reg8 tmp1))
-     ()
-  )
-)
-
-
-(bitset bset0 bset  QBIT_0 )
-(bitset bset1 bset  QBIT_1 )
-(bitset bset2 bset  QBIT_2 )
-(bitset bset3 bset  QBIT_3 )
-(bitset bset4 bset  QBIT_4 )
-(bitset bset5 bset  QBIT_5 )
-(bitset bset6 bset  QBIT_6 )
-(bitset bset7 bset  QBIT_7 )
-(bitset bset8 bset  QBIT_8 )
-(bitset bset9 bset  QBIT_9 )
-(bitset bset10 bset  QBIT_10 )
-(bitset bset11 bset  QBIT_11 )
-(bitset bset12 bset  QBIT_12 )
-(bitset bset13 bset  QBIT_13 )
-(bitset bset14 bset  QBIT_14 )
-(bitset bset15 bset  QBIT_15 )
-
-;mov direct bit
-;BMOV bitaddrZ.z,bitaddrQ.q
-(dni bmov "bit logical MOV"
-     ((PIPE OS) (IDOC ALU))
-     "bmov $reghi8$dot$qhibit,$reg8$dot$qlobit"
-     (+ OP1_4 OP2_10 reg8 reghi8 qhibit qlobit)
-     (sequence ((HI tmp1) (HI tmp2) (HI tmp3) (HI tmp4))
-     (set HI tmp1 reghi8)
-     (set HI tmp2 reg8)
-     (set tmp3 (const 1))
-     (set tmp4 (const 1))
-     ;; FIXME: (sll tmp3 qlobit)
-     ;; FIXME: (sll tmp4 qhibit)
-     ;; FIXME: (and tmp1 tmp3)
-     ;; FIXME: (and tmp2 tmp4)
-     (set BI tmp1 tmp2)
-     (set HI reghi8 tmp1)
-     (set HI reg8 tmp2))
-     ()
-)
-
-;movn direct bit
-;BMOVN bitaddrZ.z,bitaddrQ.q
-(dni bmovn "bit logical MOVN"
-     ((PIPE OS) (IDOC ALU))
-     "bmovn $reghi8$dot$qhibit,$reg8$dot$qlobit"
-     (+ OP1_3 OP2_10 reg8 reghi8 qhibit qlobit)
-     (sequence ((HI tmp1) (HI tmp2) (HI tmp3) (HI tmp4))
-     (set HI tmp1 reghi8)
-     (set HI tmp2 reg8)
-     (set tmp3 (const 1))
-     (set tmp4 (const 1))
-     ;; FIXME: (sll tmp3 qlobit)
-     ;; FIXME: (sll tmp4 qhibit)
-     ;; FIXME: (and tmp1 tmp3)
-     ;; FIXME: (and tmp2 tmp4)
-     ;; FIXME: (inv HI tmp2)
-     (set BI tmp1 tmp2)
-     (set HI reghi8 tmp1)
-     (set HI reg8 tmp2))
-     ()
-)
-
-;and direct bit
-;BAND bitaddrZ.z,bitaddrQ.q
-(dni band "bit logical AND"
-     ((PIPE OS) (IDOC ALU))
-     "band $reghi8$dot$qhibit,$reg8$dot$qlobit"
-     (+ OP1_6 OP2_10 reg8 reghi8 qhibit qlobit)
-     (sequence ((HI tmp1) (HI tmp2) (HI tmp3) (HI tmp4))
-     (set HI tmp1 reghi8)
-     (set HI tmp2 reg8)
-     (set tmp3 (const 1))
-     (set tmp4 (const 1))
-     ;; FIXME: (sll tmp3 qlobit)
-     ;; FIXME: (sll tmp4 qhibit)
-     ;; FIXME: (and tmp1 tmp3)
-     ;; FIXME: (and tmp2 tmp4)
-     (set BI tmp1(and tmp1 tmp2))
-     (set HI reghi8 tmp1)
-     (set HI reg8 tmp2))
-     ()
-)
-
-;or direct bit
-;BOR bitaddrZ.z,bitaddrQ.q
-(dni bor "bit logical OR"
-     ((PIPE OS) (IDOC ALU))
-     "bor $reghi8$dot$qhibit,$reg8$dot$qlobit"
-     (+ OP1_5 OP2_10 reg8 reghi8 qhibit qlobit)
-     (sequence ((HI tmp1) (HI tmp2) (HI tmp3) (HI tmp4))
-     (set HI tmp1 reghi8)
-     (set HI tmp2 reg8)
-     (set tmp3 (const 1))
-     (set tmp4 (const 1))
-     ;; FIXME: (sll tmp3 qlobit)
-     ;; FIXME: (sll tmp4 qhibit)
-     ;; FIXME: (and tmp1 tmp3)
-     ;; FIXME: (and tmp2 tmp4)
-     (set BI tmp1(or tmp1 tmp2))
-     (set HI reghi8 tmp1)
-     (set HI reg8 tmp2))
-     ()
-)
-
-;xor direct bit
-;BXOR bitaddrZ.z,bitaddrQ.q
-(dni bxor "bit logical XOR"
-     ((PIPE OS) (IDOC ALU))
-     "bxor $reghi8$dot$qhibit,$reg8$dot$qlobit"
-     (+ OP1_7 OP2_10 reg8 reghi8 qhibit qlobit)
-     (sequence ((HI tmp1) (HI tmp2) (HI tmp3) (HI tmp4))
-     (set HI tmp1 reghi8)
-     (set HI tmp2 reg8)
-     (set tmp3 (const 1))
-     (set tmp4 (const 1))
-     ;; FIXME: (sll tmp3 qlobit)
-     ;; FIXME: (sll tmp4 qhibit)
-     ;; FIXME: (and tmp1 tmp3)
-     ;; FIXME: (and tmp2 tmp4)
-     (set BI tmp1(xor tmp1 tmp2))
-     (set HI reghi8 tmp1)
-     (set HI reg8 tmp2))
-     ()
-)
-
-;cmp direct bit to bit
-;BCMP bitaddrZ.z,bitaddrQ.q
-(dni bcmp "bit to bit compare"
-     ((PIPE OS) (IDOC ALU))
-     "bcmp $reghi8$dot$qhibit,$reg8$dot$qlobit"
-     (+ OP1_2 OP2_10 reg8 reghi8 qhibit qlobit)
-     (sequence ((HI tmp1) (HI tmp2) (HI tmp3) (HI tmp4))
-     (set HI tmp1 reghi8)
-     (set HI tmp2 reg8)
-     (set tmp3 (const 1))
-     (set tmp4 (const 1))
-     ;; FIXME: (sll tmp3 qlobit)
-     ;; FIXME: (sll tmp4 qhibit)
-     ;; FIXME: (and tmp1 tmp3)
-     ;; FIXME: (and tmp2 tmp4)
-     (set BI tmp1(xor tmp1 tmp2))
-     (set HI reghi8 tmp1)
-     (set HI reg8 tmp2))
-     ()
-)
-
-;bit field low byte
-;BFLDL op1,op2,op3
-(dni bfldl "bit field low byte"
-     ((PIPE OS) (IDOC MOVE))
-     "bfldl $reg8,$hash$mask8,$hash$datahi8"
-     (+ OP1_0 OP2_10 reg8 mask8 datahi8)
-     (sequence ((HI tmp1) (QI tmp2) (QI tmp3))
-     (set HI tmp1 reg8)
-     (set QI tmp2 mask8)
-     (set QI tmp3 datahi8)
-     ;; FIXME: (inv QI tmp2)
-     (set HI tmp1 (and tmp1 tmp2))
-     (set HI tmp1 (or tmp1 tmp3))
-     (set HI reg8 tmp1)
-     )
-     ()
-)
-
-;bit field high byte
-;BFLDH op1,op2,op3
-(dni bfldh "bit field high byte"
-     ((PIPE OS) (IDOC MOVE))
-     "bfldh $reg8,$hash$masklo8,$hash$data8"
-     (+ OP1_1 OP2_10 reg8 masklo8 data8)
-     (sequence ((HI tmp1) (HI tmp2) (HI tmp3))
-     	     (set HI tmp1 reg8)
-	     (set QI tmp2 masklo8)
-	     (set HI tmp3 data8)
-	     ;; FIXME: (sll tmp2 (const 8))
-	     ;; FIXME: (inv HI tmp2)
-	     ;; FIXME: (sll tmp3 (const 8))
-	     (set HI tmp1 (and tmp1 tmp2))
-	     (set HI tmp1 (or tmp1 tmp3))
-	     (set HI reg8 tmp1)
-     )
-     ()
-)
-
-;/**********compare instructions******************
-
-;Compare register
-;CMP Rwn,Rwm
-(dni cmpr "compare two registers"
-     ((PIPE OS) (IDOC CMP))
-     "cmp $src1,$src2"
-     (+ OP1_4 OP2_0 src1 src2)
-     (set condbit (lt HI src1 src2))
-     ()
-)
-
-;Compare byte register
-;CMPB Rbn,Rbm
-(dni cmpbr "compare two byte registers"
-     ((PIPE OS) (IDOC CMP))
-     "cmpb $drb,$srb"
-     (+ OP1_4 OP2_1 drb srb)
-     (set condbit (lt QI drb srb))
-     ()
-)
-
-(define-pmacro (cmp1 name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "compare" )
-       ((PIPE OS) (IDOC CMP))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op1 (f-op-bit1 0) op2)
-       (set condbit (lt mode op1 op2))
-       ()
-  )
-)
-(cmp1 cmpri cmp OP1_4 OP2_8 src1 uimm3 HI)
-(cmp1 cmpbri cmpb OP1_4 OP2_9 drb uimm3 QI)
-
-; CMP Rwn,#data16
-(dni cmpi "compare"
-     ((PIPE OS) (IDOC CMP))
-     "cmp $reg8,$hash$uimm16"
-     (+ OP1_4 OP2_6 reg8 uimm16)
-     (set condbit (lt HI reg8 uimm16))
-     ()
-)
-
-; CMPB reg,#data8
-(dni cmpbi "compare"
-     ((PIPE OS) (IDOC CMP))
-     "cmpb $regb8,$hash$uimm8"
-     (+ OP1_4 OP2_7 regb8 uimm8 (f-op-bit8 0))
-     (set condbit (lt QI regb8 uimm8))
-     ()
-)
-
-;compare reg and indirect memory
-(define-pmacro (cmp2 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "compare" )
-       ((PIPE OS) (IDOC CMP))
-       (.str insn " $"op1 ",[$"op2"]")
-       (+ opc1 opc2 op1 (f-op-bit2 2) op2)
-       (set condbit (lt mode op1 op2))
-       ()
-  )
-)
-(cmp2 cmpr2 cmp OP1_4 OP2_8 dr sr2 HI)
-(cmp2 cmpbr2 cmpb OP1_4 OP2_9 drb sr2 QI)
-
-;compare register and indirect memory post increment
-(define-pmacro (cmp3 name insn opc1 opc2 op1 op2 mode)
-  (dni name
-       (.str name "compare" )
-       ((PIPE OS) (IDOC CMP))
-       (.str insn " $"op1 ",[$"op2"+]")
-       (+ opc1 opc2 op1 (f-op-bit2 3) op2)
-       (sequence ()
-          (set condbit (lt mode op1 op2))
-   	  (set HI op2 (add HI op2 (const 2)))
-       )
-       ()
-  )
-)
-(cmp3 cmp2i cmp OP1_4 OP2_8 dr sr2 HI)
-(cmp3 cmpb2i cmpb OP1_4 OP2_9 drb sr2 QI)
-
-;compare register and direct memory
-(define-pmacro (cmp4 name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "compare" )
-       ((PIPE OS) (IDOC CMP))
-       (.str insn " $"op1 ",$pof$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set condbit (lt HI op1 (mem HI op2)))
-       ()
-  )
-)
-(cmp4 cmp04 cmp OP1_4 OP2_2 reg8 upof16 HI)
-(cmp4 cmpb4 cmpb OP1_4 OP2_3 regb8 upof16 QI)
-
-;compare register and direct memory
-(define-pmacro (cmp4 name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "compare" )
-       ((PIPE OS) (IDOC CMP))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set condbit (lt HI op1 (mem HI op2)))
-       ()
-  )
-)
-(cmp4 cmp004 cmp OP1_4 OP2_2 regmem8 memgr8 HI)
-(cmp4 cmp0004 cmp OP1_4 OP2_2 reg8 memory HI)
-(cmp4 cmpb04 cmpb OP1_4 OP2_3 regbmem8 memgr8 QI)
-(cmp4 cmpb004 cmpb OP1_4 OP2_3 regb8 memory QI)
-
-;compare register and immediate
-(define-pmacro (cmp5 name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "compare" )
-       ((PIPE OS) (IDOC CMP))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op2 op1)
-       (sequence ()
-            (set condbit (lt HI op1 op2))
-	    (set mode op1 (sub HI op1 (const 1)))
-       )     
-       ()
-  )
-)
-(cmp5 cmpd1ri cmpd1  OP1_10 OP2_0 sr uimm4 HI)
-(cmp5 cmpd2ri cmpd2  OP1_11 OP2_0 sr uimm4 HI)
-(cmp5 cmpi1ri cmpi1  OP1_8 OP2_0 sr uimm4 HI)
-(cmp5 cmpi2ri cmpi2  OP1_9 OP2_0 sr uimm4 HI)
-(cmp5 cmpd1rim cmpd1  OP1_10 OP2_6 reg8 uimm16 HI)
-(cmp5 cmpd2rim cmpd2  OP1_11 OP2_6 reg8 uimm16 HI)
-(cmp5 cmpi1rim cmpi1  OP1_8 OP2_6 reg8 uimm16 HI)
-(cmp5 cmpi2rim cmpi2  OP1_9 OP2_6 reg8 uimm16 HI)
-
-;compare register and direct memory
-(define-pmacro (cmp6 name insn opc1 opc2 op1 op2 mode )
-  (dni name 
-       (.str name "compare" )
-       ((PIPE OS) (IDOC CMP))
-       (.str insn " $"op1 ",$pof$"op2)
-       (+ opc1 opc2 op1 op2)
-       (sequence ()
-            (set condbit (lt HI op1 (mem HI op2)))
-	    (set mode op1 (sub HI op1 (const 1)))
-       )    
-       ()
-  )
-)
-(cmp6 cmpd1rp cmpd1  OP1_10 OP2_2 reg8 upof16 HI )
-(cmp6 cmpd2rp cmpd2  OP1_11 OP2_2 reg8 upof16 HI )
-(cmp6 cmpi1rp cmpi1  OP1_8 OP2_2 reg8 upof16 HI )
-(cmp6 cmpi2rp cmpi2  OP1_9 OP2_2 reg8 upof16 HI )
-
-;compare register and direct memory
-(define-pmacro (cmp7 name insn opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "compare" )
-       ((PIPE OS) (IDOC CMP))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (sequence ()
-            (set condbit (lt HI op1 (mem HI op2)))
-	    (set mode op1 (sub HI op1 (const 1)))
-       )    
-       ()
-  )
-)
-(cmp7 cmpd1rm cmpd1  OP1_10 OP2_2 regmem8 memgr8 HI)
-(cmp7 cmpd2rm cmpd2  OP1_11 OP2_2 regmem8 memgr8 HI)
-(cmp7 cmpi1rm cmpi1  OP1_8 OP2_2 regmem8 memgr8 HI)
-(cmp7 cmpi2rm cmpi2  OP1_9 OP2_2 regmem8 memgr8 HI)
-(cmp7 cmpd1rmi cmpd1  OP1_10 OP2_2 reg8 memory HI)
-(cmp7 cmpd2rmi cmpd2  OP1_11 OP2_2 reg8 memory HI)
-(cmp7 cmpi1rmi cmpi1  OP1_8 OP2_2 reg8 memory HI)
-(cmp7 cmpi2rmi cmpi2  OP1_9 OP2_2 reg8 memory HI)
-
-
-;Shift and rotate insns
-;****************************************************************
-(define-pmacro (shift name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "shift" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$"op2)
-       (+ opc1 opc2 op1 op2)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(shift shlr shl sll OP1_4 OP2_12 dr sr HI)
-(shift shrr shr srl OP1_6 OP2_12 dr sr HI)
-(shift rolr rol rol OP1_0 OP2_12 dr sr HI)
-(shift rorr ror ror OP1_2 OP2_12 dr sr HI)
-(shift ashrr ashr sra OP1_10 OP2_12 dr sr HI)
-
-(define-pmacro (shift1 name insn insn1 opc1 opc2 op1 op2 mode)
-  (dni name 
-       (.str name "shift" )
-       ((PIPE OS) (IDOC ALU))
-       (.str insn " $"op1 ",$hash$"op2)
-       (+ opc1 opc2 op2 op1)
-       (set mode op1 (insn1 mode op1 op2))
-       ()
-  )
-)
-(shift1 shlri shl sll OP1_5 OP2_12 sr uimm4 HI)
-(shift1 shrri shr srl OP1_7 OP2_12 sr uimm4 HI)
-(shift1 rolri rol rol OP1_1 OP2_12 sr uimm4 HI)
-(shift1 rorri ror ror OP1_3 OP2_12 sr uimm4 HI)
-(shift1 ashrri ashr sra OP1_11 OP2_12 sr uimm4 HI)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/xc16x.opc ./cpu/xc16x.opc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/xc16x.opc	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/xc16x.opc	1970-01-01 00:00:00.000000000 +0000
@@ -1,290 +0,0 @@
-/* XC16X opcode support.  -*- C -*-
-
-   Copyright 2006, 2007, 2009 Free Software Foundation, Inc.
-
-   Contributed by KPIT Cummins Infosystems Ltd.; developed under contract 
-   from Infineon Systems, GMBH , Germany.
-
-   This file is part of the GNU Binutils.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU 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.  */
-
-
-/* This file is an addendum to xc16x.cpu.  Heavy use of C code isn't
-   appropriate in .cpu files, so it resides here.  This especially applies
-   to assembly/disassembly where parsing/printing can be quite involved.
-   Such things aren't really part of the specification of the cpu, per se,
-   so .cpu files provide the general framework and .opc files handle the
-   nitty-gritty details as necessary.
-
-   Each section is delimited with start and end markers.
-
-   <arch>-opc.h additions use: "-- opc.h"
-   <arch>-opc.c additions use: "-- opc.c"
-   <arch>-asm.c additions use: "-- asm.c"
-   <arch>-dis.c additions use: "-- dis.c"
-   <arch>-ibd.h additions use: "-- ibd.h"  */
-
-/* -- opc.h */
-
-#define CGEN_DIS_HASH_SIZE 8
-#define CGEN_DIS_HASH(buf,value) (((* (unsigned char*) (buf)) >> 3) % CGEN_DIS_HASH_SIZE)
-
-/* -- */
-
-/* -- opc.c */
-                                                                                
-/* -- */
-
-/* -- asm.c */
-/* Handle '#' prefixes (i.e. skip over them).  */
-
-static const char *
-parse_hash (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    const char **strp,
-	    int opindex ATTRIBUTE_UNUSED,
-	    long *valuep ATTRIBUTE_UNUSED)
-{
-  if (**strp == '#')
-    {
-      ++*strp;
-      return NULL;
-    }
-  return _("Missing '#' prefix");
-}
-
-/* Handle '.' prefixes (i.e. skip over them).  */
-
-static const char *
-parse_dot (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   const char **strp,
-	   int opindex ATTRIBUTE_UNUSED,
-	   long *valuep ATTRIBUTE_UNUSED)
-{
-  if (**strp == '.')
-    {
-      ++*strp;
-      return NULL;
-    }
-  return _("Missing '.' prefix");
-}
-
-/* Handle 'pof:' prefixes (i.e. skip over them).  */
-
-static const char *
-parse_pof (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   const char **strp,
-	   int opindex ATTRIBUTE_UNUSED,
-	   long *valuep ATTRIBUTE_UNUSED)
-{
-  if (strncasecmp (*strp, "pof:", 4) == 0)
-    {
-      *strp += 4;
-      return NULL;
-    }
-  return _("Missing 'pof:' prefix");  
-}
-
-/* Handle 'pag:' prefixes (i.e. skip over them).  */
-
-static const char *
-parse_pag (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   const char **strp,
-	   int opindex ATTRIBUTE_UNUSED,
-	   long *valuep ATTRIBUTE_UNUSED)
-{
-  if (strncasecmp (*strp, "pag:", 4) == 0)
-    {
-      *strp += 4;
-      return NULL;
-    }
-  return _("Missing 'pag:' prefix");
-}
-
-/* Handle 'sof' prefixes (i.e. skip over them).  */
-
-static const char *
-parse_sof (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   const char **strp,
-	   int opindex ATTRIBUTE_UNUSED,
-	   long *valuep ATTRIBUTE_UNUSED)
-{
-  if (strncasecmp (*strp, "sof:", 4) == 0)
-    {
-      *strp += 4;
-      return NULL;
-    }
-  return _("Missing 'sof:' prefix");
-}
-
-/* Handle 'seg' prefixes (i.e. skip over them).  */
-
-static const char *
-parse_seg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   const char **strp,
-	   int opindex ATTRIBUTE_UNUSED,
-	   long *valuep ATTRIBUTE_UNUSED)
-{
-  if (strncasecmp (*strp, "seg:", 4) == 0)
-    {
-      *strp += 4;
-      return NULL;
-    }
-  return _("Missing 'seg:' prefix");
-}
-/* -- */
-
-/* -- dis.c */
-
-/* Print an operand with a "." prefix.
-   NOTE: This prints the operand in hex.
-   ??? This exists to maintain disassembler compatibility with previous
-   versions.  Ideally we'd print the "." in print_dot.  */
-
-static void
-print_with_dot_prefix (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		       void * dis_info,
-		       long value,
-		       unsigned attrs ATTRIBUTE_UNUSED,
-		       bfd_vma pc ATTRIBUTE_UNUSED,
-		       int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-  info->fprintf_func (info->stream, ".");
-  info->fprintf_func (info->stream, "0x%lx", value);
-}
-
-/* Print an operand with a "#pof:" prefix.
-   NOTE: This prints the operand as an address.
-   ??? This exists to maintain disassembler compatibility with previous
-   versions.  Ideally we'd print "#pof:" in print_pof.  */
-
-static void
-print_with_pof_prefix (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		       void * dis_info,
-		       bfd_vma value,
-		       unsigned attrs ATTRIBUTE_UNUSED,
-		       bfd_vma pc ATTRIBUTE_UNUSED,
-		       int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-  info->fprintf_func (info->stream, "#pof:");
-  info->fprintf_func (info->stream, "0x%lx", (long) value);
-}
-
-/* Print an operand with a "#pag:" prefix.
-   NOTE: This prints the operand in hex.
-   ??? This exists to maintain disassembler compatibility with previous
-   versions.  Ideally we'd print "#pag:" in print_pag.  */
-
-static void
-print_with_pag_prefix (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-		       void * dis_info,
-		       long value,
-		       unsigned attrs ATTRIBUTE_UNUSED,
-		       bfd_vma pc ATTRIBUTE_UNUSED,
-		       int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-  info->fprintf_func (info->stream, "#pag:");
-  info->fprintf_func (info->stream, "0x%lx", value);
-}
-
-/* Print a 'pof:' prefix to an operand.  */
-
-static void
-print_pof (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   void * dis_info ATTRIBUTE_UNUSED,
-	   long value ATTRIBUTE_UNUSED,
-	   unsigned int attrs ATTRIBUTE_UNUSED,
-	   bfd_vma pc ATTRIBUTE_UNUSED,
-	   int length ATTRIBUTE_UNUSED)
-{
-}
-
-/* Print a 'pag:' prefix to an operand.  */
-
-static void
-print_pag (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   void * dis_info ATTRIBUTE_UNUSED,
-	   long value ATTRIBUTE_UNUSED,
-	   unsigned int attrs ATTRIBUTE_UNUSED,
-	   bfd_vma pc ATTRIBUTE_UNUSED,
-	   int length ATTRIBUTE_UNUSED)
-{
-}
-
-/* Print a 'sof:' prefix to an operand.  */
-
-static void
-print_sof (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   void * dis_info,
-	   long value ATTRIBUTE_UNUSED,
-	   unsigned int attrs ATTRIBUTE_UNUSED,
-	   bfd_vma pc ATTRIBUTE_UNUSED,
-	   int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-  info->fprintf_func (info->stream, "sof:");
-}
-
-/* Print a 'seg:' prefix to an operand.  */
-
-static void
-print_seg (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   void * dis_info,
-	   long value ATTRIBUTE_UNUSED,
-	   unsigned int attrs ATTRIBUTE_UNUSED,
-	   bfd_vma pc ATTRIBUTE_UNUSED,
-	   int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-  info->fprintf_func (info->stream, "seg:");
-}
-
-/* Print a '#' prefix to an operand.  */
-
-static void
-print_hash (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	    void * dis_info,
-	    long value ATTRIBUTE_UNUSED,
-	    unsigned int attrs ATTRIBUTE_UNUSED,
-	    bfd_vma pc ATTRIBUTE_UNUSED,
-	    int length ATTRIBUTE_UNUSED)
-{
-  disassemble_info *info = (disassemble_info *) dis_info;
-
-  info->fprintf_func (info->stream, "#");
-}
-
-/* Print a '.' prefix to an operand.  */
-
-static void
-print_dot (CGEN_CPU_DESC cd ATTRIBUTE_UNUSED,
-	   void * dis_info ATTRIBUTE_UNUSED,
-	   long value ATTRIBUTE_UNUSED,
-	   unsigned int attrs ATTRIBUTE_UNUSED,
-	   bfd_vma pc ATTRIBUTE_UNUSED,
-	   int length 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.20200303/cpu/xstormy16.cpu ./cpu/xstormy16.cpu
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/cpu/xstormy16.cpu	2020-03-03 02:08:51.000000000 +0000
+++ ./cpu/xstormy16.cpu	2026-03-05 02:07:20.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.20200303/djunpack.bat ./djunpack.bat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/djunpack.bat	2020-03-03 02:13:29.000000000 +0000
+++ ./djunpack.bat	2026-03-05 02:16:00.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.20200303
-if "%GDBVER%"=="$package-9.1.90.20200303" GoTo EnvOk
+set GDBVER=$package-17.1.90.20260305
+if "%GDBVER%"=="$package-17.1.90.20260305" 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.20200303/etc/aclocal.m4 ./etc/aclocal.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/aclocal.m4	1970-01-01 00:00:00.000000000 +0000
+++ ./etc/aclocal.m4	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,792 @@
+# 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])])
+
+# 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
+]
+)
+
+# 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
+])
+
+# 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])])
+
+# 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/lead-dot.m4])
+m4_include([../config/override.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.20200303/etc/add-log.el ./etc/add-log.el
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/add-log.el	1970-01-01 00:00:00.000000000 +0000
+++ ./etc/add-log.el	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,573 @@
+;;; ============ NOTE WELL! =============
+;;;
+;;; You only need to use this file if you're using a version of Emacs
+;;; prior to 20.1 to work on GDB.  The only difference between this
+;;; and the standard add-log.el provided with 19.34 is that it
+;;; generates dates using the terser format used by Emacs 20.  This is
+;;; the format recommended for use in GDB ChangeLogs.
+;;;
+;;; To use this code, you should create a directory `~/elisp', save the code
+;;; below in `~/elisp/add-log.el', and then put something like this in
+;;; your `~/.emacs' file, to tell Emacs where to find it:
+;;; 
+;;; (setq load-path
+;;;       (cons (expand-file-name "~/elisp")
+;;;             load-path))
+;;; 
+;;; If you want, you can also byte-compile it --- it'll run a little
+;;; faster, and use a little less memory.  (Not that those matter much for
+;;; this file.)  To do that, after you've saved the text as
+;;; ~/elisp/add-log.el, bring it up in Emacs, and type
+;;; 
+;;;     C-u M-x byte-compile-file
+;;;
+;;; --- Jim Blandy
+
+;;; add-log.el --- change log maintenance commands for Emacs
+
+;; Copyright (C) 1985-2025 Free Software Foundation, Inc.
+
+;; Keywords: maint
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can 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, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU 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.
+
+;;; Commentary:
+
+;; This facility is documented in the Emacs Manual.
+
+;;; Code:
+
+(defvar change-log-default-name nil
+  "*Name of a change log file for \\[add-change-log-entry].")
+
+(defvar add-log-current-defun-function nil
+  "\
+*If non-nil, function to guess name of current function from surrounding text.
+\\[add-change-log-entry] calls this function (if nil, `add-log-current-defun'
+instead) with no arguments.  It returns a string or nil if it cannot guess.")
+
+;;;###autoload
+(defvar add-log-full-name nil
+  "*Full name of user, for inclusion in ChangeLog daily headers.
+This defaults to the value returned by the `user-full-name' function.")
+
+;;;###autoload
+(defvar add-log-mailing-address nil
+  "*Electronic mail address of user, for inclusion in ChangeLog daily headers.
+This defaults to the value of `user-mail-address'.")
+
+(defvar change-log-font-lock-keywords
+  '(("^[SMTWF].+" . font-lock-function-name-face)	; Date line.
+    ("^\t\\* \\([^ :\n]+\\)" 1 font-lock-comment-face)	; File name.
+    ("(\\([^)\n]+\\)):" 1 font-lock-keyword-face))	; Function name.
+  "Additional expressions to highlight in Change Log mode.")
+
+(defvar change-log-mode-map nil
+  "Keymap for Change Log major mode.")
+(if change-log-mode-map
+    nil
+  (setq change-log-mode-map (make-sparse-keymap))
+  (define-key change-log-mode-map "\M-q" 'change-log-fill-paragraph))
+
+(defun change-log-name ()
+  (or change-log-default-name
+      (if (eq system-type 'vax-vms) 
+	  "$CHANGE_LOG$.TXT" 
+	(if (or (eq system-type 'ms-dos) (eq system-type 'windows-nt))
+	    "changelo"
+	  "ChangeLog"))))
+
+;;;###autoload
+(defun prompt-for-change-log-name ()
+  "Prompt for a change log name."
+  (let* ((default (change-log-name))
+	 (name (expand-file-name
+		(read-file-name (format "Log file (default %s): " default)
+				nil default))))
+    ;; Handle something that is syntactically a directory name.
+    ;; Look for ChangeLog or whatever in that directory.
+    (if (string= (file-name-nondirectory name) "")
+	(expand-file-name (file-name-nondirectory default)
+			  name)
+      ;; Handle specifying a file that is a directory.
+      (if (file-directory-p name)
+	  (expand-file-name (file-name-nondirectory default)
+			    (file-name-as-directory name))
+	name))))
+
+;;;###autoload
+(defun find-change-log (&optional file-name)
+  "Find a change log file for \\[add-change-log-entry] and return the name.
+
+Optional arg FILE-NAME specifies the file to use.
+If FILE-NAME is nil, use the value of `change-log-default-name'.
+If 'change-log-default-name' is nil, behave as though it were 'ChangeLog'
+\(or whatever we use on this operating system).
+
+If 'change-log-default-name' contains a leading directory component, then
+simply find it in the current directory.  Otherwise, search in the current 
+directory and its successive parents for a file so named.
+
+Once a file is found, `change-log-default-name' is set locally in the
+current buffer to the complete file name."
+  ;; If user specified a file name or if this buffer knows which one to use,
+  ;; just use that.
+  (or file-name
+      (setq file-name (and change-log-default-name
+			   (file-name-directory change-log-default-name)
+			   change-log-default-name))
+      (progn
+	;; Chase links in the source file
+	;; and use the change log in the dir where it points.
+	(setq file-name (or (and buffer-file-name
+				 (file-name-directory
+				  (file-chase-links buffer-file-name)))
+			    default-directory))
+	(if (file-directory-p file-name)
+	    (setq file-name (expand-file-name (change-log-name) file-name)))
+	;; Chase links before visiting the file.
+	;; This makes it easier to use a single change log file
+	;; for several related directories.
+	(setq file-name (file-chase-links file-name))
+	(setq file-name (expand-file-name file-name))
+	;; Move up in the dir hierarchy till we find a change log file.
+	(let ((file1 file-name)
+	      parent-dir)
+	  (while (and (not (or (get-file-buffer file1) (file-exists-p file1)))
+		      (progn (setq parent-dir
+				   (file-name-directory
+				    (directory-file-name
+				     (file-name-directory file1))))
+			     ;; Give up if we are already at the root dir.
+			     (not (string= (file-name-directory file1)
+					   parent-dir))))
+	    ;; Move up to the parent dir and try again.
+	    (setq file1 (expand-file-name 
+			 (file-name-nondirectory (change-log-name))
+			 parent-dir)))
+	  ;; If we found a change log in a parent, use that.
+	  (if (or (get-file-buffer file1) (file-exists-p file1))
+	      (setq file-name file1)))))
+  ;; Make a local variable in this buffer so we needn't search again.
+  (set (make-local-variable 'change-log-default-name) file-name)
+  file-name)
+
+;;;###autoload
+(defun add-change-log-entry (&optional whoami file-name other-window new-entry)
+  "Find change log file and add an entry for today.
+Optional arg (interactive prefix) non-nil means prompt for user name and site.
+Second arg is file name of change log.  If nil, uses `change-log-default-name'.
+Third arg OTHER-WINDOW non-nil means visit in other window.
+Fourth arg NEW-ENTRY non-nil means always create a new entry at the front;
+never append to an existing entry."
+  (interactive (list current-prefix-arg
+		     (prompt-for-change-log-name)))
+  (or add-log-full-name
+      (setq add-log-full-name (user-full-name)))
+  (or add-log-mailing-address
+      (setq add-log-mailing-address user-mail-address))
+  (if whoami
+      (progn
+	(setq add-log-full-name (read-input "Full name: " add-log-full-name))
+	 ;; Note that some sites have room and phone number fields in
+	 ;; full name which look silly when inserted.  Rather than do
+	 ;; anything about that here, let user give prefix argument so that
+	 ;; s/he can edit the full name field in prompter if s/he wants.
+	(setq add-log-mailing-address
+	      (read-input "Mailing address: " add-log-mailing-address))))
+  (let ((defun (funcall (or add-log-current-defun-function
+			    'add-log-current-defun)))
+	paragraph-end entry)
+
+    (setq file-name (expand-file-name (find-change-log file-name)))
+
+    ;; Set ENTRY to the file name to use in the new entry.
+    (and buffer-file-name
+	 ;; Never want to add a change log entry for the ChangeLog file itself.
+	 (not (string= buffer-file-name file-name))
+	 (setq entry (if (string-match
+			  (concat "^" (regexp-quote (file-name-directory
+						     file-name)))
+			  buffer-file-name)
+			 (substring buffer-file-name (match-end 0))
+		       (file-name-nondirectory buffer-file-name))))
+
+    (if (and other-window (not (equal file-name buffer-file-name)))
+	(find-file-other-window file-name)
+      (find-file file-name))
+    (or (eq major-mode 'change-log-mode)
+	(change-log-mode))
+    (undo-boundary)
+    (goto-char (point-min))
+    (let ((heading (format "%s  %s  <%s>"
+			   (format-time-string "%Y-%m-%d")
+			   add-log-full-name
+			   add-log-mailing-address)))
+      (if (looking-at (regexp-quote heading))
+	  (forward-line 1)
+	(insert heading "\n\n")))
+
+    ;; Search only within the first paragraph.
+    (if (looking-at "\n*[^\n* \t]")
+	(skip-chars-forward "\n")
+      (forward-paragraph 1))
+    (setq paragraph-end (point))
+    (goto-char (point-min))
+
+    ;; Now insert the new line for this entry.
+    (cond ((re-search-forward "^\\s *\\*\\s *$" paragraph-end t)
+	   ;; Put this file name into the existing empty entry.
+	   (if entry
+	       (insert entry)))
+	  ((and (not new-entry)
+		(let (case-fold-search)
+		  (re-search-forward
+		   (concat (regexp-quote (concat "* " entry))
+			   ;; Don't accept `foo.bar' when
+			   ;; looking for `foo':
+			   "\\(\\s \\|[(),:]\\)")
+		   paragraph-end t)))
+	   ;; Add to the existing entry for the same file.
+	   (re-search-forward "^\\s *$\\|^\\s \\*")
+	   (goto-char (match-beginning 0))
+	   ;; Delete excess empty lines; make just 2.
+	   (while (and (not (eobp)) (looking-at "^\\s *$"))
+	     (delete-region (point) (save-excursion (forward-line 1) (point))))
+	   (insert "\n\n")
+	   (forward-line -2)
+	   (indent-relative-maybe))
+	  (t
+	   ;; Make a new entry.
+	   (forward-line 1)
+	   (while (looking-at "\\sW")
+	     (forward-line 1))
+	   (while (and (not (eobp)) (looking-at "^\\s *$"))
+	     (delete-region (point) (save-excursion (forward-line 1) (point))))
+	   (insert "\n\n\n")
+	   (forward-line -2)
+	   (indent-to left-margin)
+	   (insert "* " (or entry ""))))
+    ;; Now insert the function name, if we have one.
+    ;; Point is at the entry for this file,
+    ;; either at the end of the line or at the first blank line.
+    (if defun
+	(progn
+	  ;; Make it easy to get rid of the function name.
+	  (undo-boundary)
+	  (insert (if (save-excursion
+			(beginning-of-line 1)
+			(looking-at "\\s *$")) 
+		      ""
+		    " ")
+		  "(" defun "): "))
+      ;; No function name, so put in a colon unless we have just a star.
+      (if (not (save-excursion
+		 (beginning-of-line 1)
+		 (looking-at "\\s *\\(\\*\\s *\\)?$")))
+	  (insert ": ")))))
+
+;;;###autoload
+(defun add-change-log-entry-other-window (&optional whoami file-name)
+  "Find change log file in other window and add an entry for today.
+Optional arg (interactive prefix) non-nil means prompt for user name and site.
+Second arg is file name of change log.  \
+If nil, uses `change-log-default-name'."
+  (interactive (if current-prefix-arg
+		   (list current-prefix-arg
+			 (prompt-for-change-log-name))))
+  (add-change-log-entry whoami file-name t))
+;;;###autoload (define-key ctl-x-4-map "a" 'add-change-log-entry-other-window)
+
+;;;###autoload
+(defun change-log-mode ()
+  "Major mode for editing change logs; like Indented Text Mode.
+Prevents numeric backups and sets `left-margin' to 8 and `fill-column' to 74.
+New log entries are usually made with \\[add-change-log-entry] or \\[add-change-log-entry-other-window].
+Each entry behaves as a paragraph, and the entries for one day as a page.
+Runs `change-log-mode-hook'."
+  (interactive)
+  (kill-all-local-variables)
+  (indented-text-mode)
+  (setq major-mode 'change-log-mode
+	mode-name "Change Log"
+	left-margin 8
+	fill-column 74
+    indent-tabs-mode t
+    tab-width 8)
+  (use-local-map change-log-mode-map)
+  ;; Let each entry behave as one paragraph:
+  ;; We really do want "^" in paragraph-start below: it is only the lines that
+  ;; begin at column 0 (despite the left-margin of 8) that we are looking for.
+  (set (make-local-variable 'paragraph-start) "\\s *$\\|\f\\|^\\sw")
+  (set (make-local-variable 'paragraph-separate) "\\s *$\\|\f\\|^\\sw")
+  ;; Let all entries for one day behave as one page.
+  ;; Match null string on the date-line so that the date-line
+  ;; is grouped with what follows.
+  (set (make-local-variable 'page-delimiter) "^\\<\\|^\f")
+  (set (make-local-variable 'version-control) 'never)
+  (set (make-local-variable 'adaptive-fill-regexp) "\\s *")
+  (set (make-local-variable 'font-lock-defaults)
+       '(change-log-font-lock-keywords t))
+  (run-hooks 'change-log-mode-hook))
+
+;; It might be nice to have a general feature to replace this.  The idea I
+;; have is a variable giving a regexp matching text which should not be
+;; moved from bol by filling.  change-log-mode would set this to "^\\s *\\s(".
+;; But I don't feel up to implementing that today.
+(defun change-log-fill-paragraph (&optional justify)
+  "Fill the paragraph, but preserve open parentheses at beginning of lines.
+Prefix arg means justify as well."
+  (interactive "P")
+  (let ((end (save-excursion (forward-paragraph) (point)))
+	(beg (save-excursion (backward-paragraph)(point)))
+	(paragraph-start (concat paragraph-start "\\|\\s *\\s(")))
+    (fill-region beg end justify)))
+
+(defvar add-log-current-defun-header-regexp
+  "^\\([A-Z][A-Z_ ]*[A-Z_]\\|[-_a-zA-Z]+\\)[ \t]*[:=]"
+  "*Heuristic regexp used by `add-log-current-defun' for unknown major modes.")
+
+;;;###autoload
+(defun add-log-current-defun ()
+  "Return name of function definition point is in, or nil.
+
+Understands C, Lisp, LaTeX (\"functions\" are chapters, sections, ...),
+Texinfo (@node titles), Perl, and Fortran.
+
+Other modes are handled by a heuristic that looks in the 10K before
+point for uppercase headings starting in the first column or
+identifiers followed by `:' or `=', see variable
+`add-log-current-defun-header-regexp'.
+
+Has a preference of looking backwards."
+  (condition-case nil
+      (save-excursion
+	(let ((location (point)))
+	  (cond ((memq major-mode '(emacs-lisp-mode lisp-mode scheme-mode
+						    lisp-interaction-mode))
+		 ;; If we are now precisely at the beginning of a defun,
+		 ;; make sure beginning-of-defun finds that one
+		 ;; rather than the previous one.
+		 (or (eobp) (forward-char 1))
+		 (beginning-of-defun)
+		 ;; Make sure we are really inside the defun found, not after it.
+		 (if (and (looking-at "\\s(")
+			  (progn (end-of-defun)
+				 (< location (point)))
+			  (progn (forward-sexp -1)
+				 (>= location (point))))
+		     (progn
+		       (if (looking-at "\\s(")
+			   (forward-char 1))
+		       (forward-sexp 1)
+		       (skip-chars-forward " '")
+		       (buffer-substring (point)
+					 (progn (forward-sexp 1) (point))))))
+		((and (memq major-mode '(c-mode c++-mode c++-c-mode objc-mode))
+		      (save-excursion (beginning-of-line)
+				      ;; Use eq instead of = here to avoid
+				      ;; error when at bob and char-after
+				      ;; returns nil.
+				      (while (eq (char-after (- (point) 2)) ?\\)
+					(forward-line -1))
+				      (looking-at "[ \t]*#[ \t]*define[ \t]")))
+		 ;; Handle a C macro definition.
+		 (beginning-of-line)
+		 (while (eq (char-after (- (point) 2)) ?\\) ;not =; note above
+		   (forward-line -1))
+		 (search-forward "define")
+		 (skip-chars-forward " \t")
+		 (buffer-substring (point)
+				   (progn (forward-sexp 1) (point))))
+		((memq major-mode '(c-mode c++-mode c++-c-mode objc-mode))
+		 (beginning-of-line)
+		 ;; See if we are in the beginning part of a function,
+		 ;; before the open brace.  If so, advance forward.
+		 (while (not (looking-at "{\\|\\(\\s *$\\)"))
+		   (forward-line 1))
+		 (or (eobp)
+		     (forward-char 1))
+		 (beginning-of-defun)
+		 (if (progn (end-of-defun)
+			    (< location (point)))
+		     (progn
+		       (backward-sexp 1)
+		       (let (beg tem)
+
+			 (forward-line -1)
+			 ;; Skip back over typedefs of arglist.
+			 (while (and (not (bobp))
+				     (looking-at "[ \t\n]"))
+			   (forward-line -1))
+			 ;; See if this is using the DEFUN macro used in Emacs,
+			 ;; or the DEFUN macro used by the C library.
+			 (if (condition-case nil
+				 (and (save-excursion
+					(end-of-line)
+					(while (= (preceding-char) ?\\)
+					  (end-of-line 2))
+					(backward-sexp 1)
+					(beginning-of-line)
+					(setq tem (point))
+					(looking-at "DEFUN\\b"))
+				      (>= location tem))
+			       (error nil))
+			     (progn
+			       (goto-char tem)
+			       (down-list 1)
+			       (if (= (char-after (point)) ?\")
+				   (progn
+				     (forward-sexp 1)
+				     (skip-chars-forward " ,")))
+			       (buffer-substring (point)
+						 (progn (forward-sexp 1) (point))))
+                           (if (looking-at "^[+-]")
+                               (get-method-definition)
+                             ;; Ordinary C function syntax.
+                             (setq beg (point))
+                             (if (and (condition-case nil
+					  ;; Protect against "Unbalanced parens" error.
+					  (progn
+					    (down-list 1) ; into arglist
+					    (backward-up-list 1)
+					    (skip-chars-backward " \t")
+					    t)
+					(error nil))
+				      ;; Verify initial pos was after
+				      ;; real start of function.
+				      (save-excursion
+					(goto-char beg)
+					;; For this purpose, include the line
+					;; that has the decl keywords.  This
+					;; may also include some of the
+					;; comments before the function.
+					(while (and (not (bobp))
+						    (save-excursion
+						      (forward-line -1)
+						      (looking-at "[^\n\f]")))
+					  (forward-line -1))
+					(>= location (point)))
+                                          ;; Consistency check: going down and up
+                                          ;; shouldn't take us back before BEG.
+                                          (> (point) beg))
+				 (let (end middle)
+				   ;; Don't include any final newline
+				   ;; in the name we use.
+				   (if (= (preceding-char) ?\n)
+				       (forward-char -1))
+				   (setq end (point))
+				   (backward-sexp 1)
+				   ;; Now find the right beginning of the name.
+				   ;; Include certain keywords if they
+				   ;; precede the name.
+				   (setq middle (point))
+				   (forward-word -1)
+				   ;; Ignore these subparts of a class decl
+				   ;; and move back to the class name itself.
+				   (while (looking-at "public \\|private ")
+				     (skip-chars-backward " \t:")
+				     (setq end (point))
+				     (backward-sexp 1)
+				     (setq middle (point))
+				     (forward-word -1))
+				   (and (bolp)
+					(looking-at "struct \\|union \\|class ")
+					(setq middle (point)))
+				   (buffer-substring middle end)))))))))
+		((memq major-mode
+		       '(TeX-mode plain-TeX-mode LaTeX-mode;; tex-mode.el
+				  plain-tex-mode latex-mode;; cmutex.el
+				  ))
+		 (if (re-search-backward
+		      "\\\\\\(sub\\)*\\(section\\|paragraph\\|chapter\\)" nil t)
+		     (progn
+		       (goto-char (match-beginning 0))
+		       (buffer-substring (1+ (point));; without initial backslash
+					 (progn
+					   (end-of-line)
+					   (point))))))
+		((eq major-mode 'texinfo-mode)
+		 (if (re-search-backward "^@node[ \t]+\\([^,\n]+\\)" nil t)
+		     (buffer-substring (match-beginning 1)
+				       (match-end 1))))
+		((eq major-mode 'perl-mode)
+		 (if (re-search-backward "^sub[ \t]+\\([^ \t\n]+\\)" nil t)
+		     (buffer-substring (match-beginning 1)
+				       (match-end 1))))
+                ((eq major-mode 'fortran-mode)
+                 ;; must be inside function body for this to work
+                 (beginning-of-fortran-subprogram)
+                 (let ((case-fold-search t)) ; case-insensitive
+                   ;; search for fortran subprogram start
+                   (if (re-search-forward
+			 "^[ \t]*\\(program\\|subroutine\\|function\
+\\|[ \ta-z0-9*]*[ \t]+function\\)"
+			 nil t)
+                       (progn
+                         ;; move to EOL or before first left paren
+                         (if (re-search-forward "[(\n]" nil t)
+			     (progn (forward-char -1)
+				    (skip-chars-backward " \t"))
+			   (end-of-line))
+			 ;; Use the name preceding that.
+                         (buffer-substring (point)
+                                           (progn (forward-sexp -1)
+                                                  (point)))))))
+		(t
+		 ;; If all else fails, try heuristics
+		 (let (case-fold-search)
+		   (end-of-line)
+		   (if (re-search-backward add-log-current-defun-header-regexp
+					   (- (point) 10000)
+					   t)
+		       (buffer-substring (match-beginning 1)
+					 (match-end 1))))))))
+    (error nil)))
+
+(defvar get-method-definition-md)
+
+;; Subroutine used within get-method-definition.
+;; Add the last match in the buffer to the end of `md',
+;; followed by the string END; move to the end of that match.
+(defun get-method-definition-1 (end)
+  (setq get-method-definition-md
+	(concat get-method-definition-md 
+		(buffer-substring (match-beginning 1) (match-end 1))
+		end))
+  (goto-char (match-end 0)))
+
+;; For objective C, return the method name if we are in a method.
+(defun get-method-definition ()
+  (let ((get-method-definition-md "["))
+    (save-excursion
+      (if (re-search-backward "^@implementation\\s-*\\([A-Za-z_]*\\)" nil t)
+	  (get-method-definition-1 " ")))
+    (save-excursion
+      (cond
+       ((re-search-forward "^\\([-+]\\)[ \t\n\f\r]*\\(([^)]*)\\)?\\s-*" nil t)
+	(get-method-definition-1 "")
+	(while (not (looking-at "[{;]"))
+	  (looking-at
+	   "\\([A-Za-z_]*:?\\)\\s-*\\(([^)]*)\\)?[A-Za-z_]*[ \t\n\f\r]*")
+	  (get-method-definition-1 ""))
+	(concat get-method-definition-md "]"))))))
+
+
+(provide 'add-log)
+
+;;; add-log.el ends 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.20200303/etc/add-log.vi ./etc/add-log.vi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/add-log.vi	1970-01-01 00:00:00.000000000 +0000
+++ ./etc/add-log.vi	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,11 @@
+Here is a vi macro to create entries in the recommended format for
+GDB's ChangeLogs.
+
+map  1GO:r !date '+\%Y-\%m-\%d'2GA  Jason Molenda  (:r !whoamikJxA@:r !hostnameA)kJxkddjO
	* 
k$
+
+It contains control and escape sequences, so don't just cut and paste it.
+You'll need to change the "Jason Molenda" bit, of course. :-)  Put this
+in your $HOME/.exrc and when you type control-X in move-around-mode,
+you'll have a changelog template inserted.
+
+--- Jason Molenda
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/ChangeLog ./etc/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/ChangeLog	2020-03-03 02:08:51.000000000 +0000
+++ ./etc/ChangeLog	2026-03-05 02:07:20.000000000 +0000
@@ -1,3 +1,11 @@
+2021-01-01  Alan Modra  <amodra@gmail.com>
+
+	* update-copyright.py (BinutilsCmdLine.__init__): Add libctf.
+
+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.20200303/etc/configure ./etc/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/configure	2020-03-03 02:08:51.000000000 +0000
+++ ./etc/configure	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69.
+# Generated by GNU Autoconf 2.69 for etc 0.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -574,20 +574,45 @@ MFLAGS=
 MAKEFLAGS=
 
 # Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-PACKAGE_URL=
+PACKAGE_NAME='etc'
+PACKAGE_TARNAME='etc'
+PACKAGE_VERSION='0'
+PACKAGE_STRING='etc 0'
+PACKAGE_BUGREPORT=''
+PACKAGE_URL=''
 
-ac_unique_file="Makefile.in"
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
-MAINT
+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_alias
 host_alias
 build_alias
@@ -630,6 +655,7 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 enable_maintainer_mode
+enable_silent_rules
 '
       ac_precious_vars='build_alias
 host_alias
@@ -674,7 +700,7 @@ sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE}'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
 infodir='${datarootdir}/info'
 htmldir='${docdir}'
 dvidir='${docdir}'
@@ -1174,7 +1200,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 this package to adapt to many kinds of systems.
+\`configure' configures etc 0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1222,7 +1248,7 @@ Fine tuning of the installation director
   --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]
+  --docdir=DIR            documentation root [DATAROOTDIR/doc/etc]
   --htmldir=DIR           html documentation [DOCDIR]
   --dvidir=DIR            dvi documentation [DOCDIR]
   --pdfdir=DIR            pdf documentation [DOCDIR]
@@ -1230,11 +1256,18 @@ Fine tuning of the installation director
 _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
 _ACEOF
 fi
 
 if test -n "$ac_init_help"; then
-
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of etc 0:";;
+   esac
   cat <<\_ACEOF
 
 Optional Features:
@@ -1244,6 +1277,8 @@ Optional Features:
   --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")
 
 Report bugs to the package provider.
 _ACEOF
@@ -1308,7 +1343,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-configure
+etc configure 0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1325,7 +1360,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 $as_me, which was
+It was created by etc $as_me 0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -1674,6 +1709,34 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
+
+
+
+{ $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
+
+
+am__api_version='1.15'
+
 ac_aux_dir=
 for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
   if test -f "$ac_dir/install-sh"; then
@@ -1796,25 +1859,528 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCR
 
 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
 
-# Command-line options.
-# Very limited version of AC_MAINTAINER_MODE.
-# Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
-  enableval=$enable_maintainer_mode; case ${enable_maintainer_mode} in
-     yes) MAINT='' ;;
-     no) MAINT='#' ;;
-     *) as_fn_error $? "--enable-maintainer-mode must be yes or no" "$LINENO" 5 ;;
-   esac
-   maintainer_mode=${enableval}
+# 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
-  MAINT='#'
+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_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$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
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+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
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=1;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
+
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+  # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+  # is not polluted with repeated "-I."
+  am__isrc=' -I$(srcdir)'
+  # test to see if srcdir already configured
+  if test -f $srcdir/config.status; then
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
+  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
+
+
+# Define the identity of the package.
+ PACKAGE='etc'
+ VERSION='0'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+# 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>
+mkdir_p='$(MKDIR_P)'
+
+# We need awk for the "check" target (and possibly the TAP driver).  The
+# system "awk" is bad on some platforms.
+# Always define AMTAR for backward compatibility.  Yes, it's still used
+# in the wild :-(  We should find a proper way to deprecate it ...
+AMTAR='$${TAR-tar}'
+
+
+# We'll loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar  pax cpio none'
+
+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
+
+
+
+
+
+
+# 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
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
+# Check whether --enable-silent-rules was given.
+if test "${enable_silent_rules+set}" = set; then :
+  enableval=$enable_silent_rules;
+fi
+
+case $enable_silent_rules in # (((
+  yes) AM_DEFAULT_VERBOSITY=0;;
+   no) AM_DEFAULT_VERBOSITY=1;;
+    *) AM_DEFAULT_VERBOSITY=0;;
+esac
+am_make=${MAKE-make}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5
+$as_echo_n "checking whether $am_make supports nested variables... " >&6; }
+if ${am_cv_make_support_nested_variables+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  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
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5
+$as_echo "$am_cv_make_support_nested_variables" >&6; }
+if test $am_cv_make_support_nested_variables = yes; then
+    AM_V='$(V)'
+  AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)'
+else
+  AM_V=$AM_DEFAULT_VERBOSITY
+  AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY
+fi
+AM_BACKSLASH='\'
 
 
 ac_config_files="$ac_config_files Makefile"
@@ -1964,6 +2530,19 @@ 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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5
+$as_echo_n "checking that generated files are newer than configure... " >&6; }
+   if test -n "$am_sleep_pid"; then
+     # Hide warnings about reused PIDs.
+     wait $am_sleep_pid 2>/dev/null
+   fi
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5
+$as_echo "done" >&6; }
+
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
@@ -2361,7 +2940,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 $as_me, which was
+This file was extended by etc $as_me 0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -2414,7 +2993,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="\\
-config.status
+etc config.status 0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -2425,6 +3004,8 @@ gives unlimited permission to copy, dist
 ac_pwd='$ac_pwd'
 srcdir='$srcdir'
 INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
+AWK='$AWK'
 test -n "\$AWK" || AWK=awk
 _ACEOF
 
@@ -2864,6 +3445,11 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_
   [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
   *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
   esac
+  ac_MKDIR_P=$MKDIR_P
+  case $MKDIR_P in
+  [\\/$]* | ?:[\\/]* ) ;;
+  */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+  esac
 _ACEOF
 
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -2918,6 +3504,7 @@ 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
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/configure.ac ./etc/configure.ac
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/configure.ac	1970-01-01 00:00:00.000000000 +0000
+++ ./etc/configure.ac	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,9 @@
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT([etc], [0])
+
+AM_MAINTAINER_MODE
+AM_INIT_AUTOMAKE
+AM_SILENT_RULES([yes])
+
+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.20200303/etc/configure.in ./etc/configure.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/configure.in	2020-03-03 02:08:51.000000000 +0000
+++ ./etc/configure.in	1970-01-01 00:00:00.000000000 +0000
@@ -1,26 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-AC_INIT(Makefile.in)
-
-AC_PROG_INSTALL
-
-# Command-line options.
-# Very limited version of AC_MAINTAINER_MODE.
-AC_ARG_ENABLE([maintainer-mode],
-  [AC_HELP_STRING([--enable-maintainer-mode],
-                 [enable make rules and dependencies not useful (and
-                  sometimes confusing) to the casual installer])],
-  [case ${enable_maintainer_mode} in
-     yes) MAINT='' ;;
-     no) MAINT='#' ;;
-     *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;;
-   esac
-   maintainer_mode=${enableval}],
-  [MAINT='#'])
-AC_SUBST([MAINT])dnl
-
-AC_SUBST(datarootdir)
-AC_SUBST(docdir)
-AC_SUBST(htmldir)
-AC_SUBST(pdfdir)
-
-AC_OUTPUT(Makefile)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/Makefile.am ./etc/Makefile.am
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/Makefile.am	1970-01-01 00:00:00.000000000 +0000
+++ ./etc/Makefile.am	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,19 @@
+## Process this file with automake to generate Makefile.in
+#
+#   Copyright (C) 1992-2025 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+AUTOMAKE_OPTIONS = foreign no-dist
+ACLOCAL_AMFLAGS = -I.. -I../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.20200303/etc/Makefile.in ./etc/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/Makefile.in	2020-03-03 02:08:51.000000000 +0000
+++ ./etc/Makefile.in	2026-03-05 02:07:20.000000000 +0000
@@ -1,74 +1,375 @@
-# 
-# Makefile.in for etc
-#
+# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# @configure_input@
 
-DESTDIR		=
+# Copyright (C) 1994-2017 Free Software Foundation, Inc.
 
-prefix 		= @prefix@
-exec_prefix 	= @exec_prefix@
+# This Makefile.in 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.
 
-srcdir  = @srcdir@
-VPATH	= @srcdir@
+# 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.
 
-bindir  = @bindir@
-libdir  = @libdir@
-tooldir = $(libdir)
-datadir = @datadir@
+@SET_MAKE@
 
-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
+#
+#   Copyright (C) 1992-2025 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+VPATH = @srcdir@
+am__is_gnu_make = { \
+  if test -z '$(MAKELEVEL)'; then \
+    false; \
+  elif test -n '$(MAKE_HOST)'; then \
+    true; \
+  elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+    true; \
+  else \
+    false; \
+  fi; \
+}
+am__make_running_with_option = \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+    sane_makeflags=$$MFLAGS; \
+  else \
+    case $$MAKEFLAGS in \
+      *\\[\ \	]*) \
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+        -*O) strip_trailopt 'O'; skip_next=yes;; \
+      -*O?*) strip_trailopt 'O';; \
+        -*l) strip_trailopt 'l'; skip_next=yes;; \
+      -*l?*) strip_trailopt 'l';; \
+      -[dEDm]) skip_next=yes;; \
+      -[JT]) skip_next=yes;; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/../config/lead-dot.m4 \
+	$(top_srcdir)/../config/override.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
+	$(am__configure_deps)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno config.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo "  GEN     " $@;
+am__v_GEN_1 = 
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 = 
+SOURCES =
+am__can_run_installinfo = \
+  case $$AM_UPDATE_INFO_DIR in \
+    n|no|NO) false;; \
+    *) (install-info --version) >/dev/null 2>&1;; \
+  esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+am__leading_dot = @am__leading_dot@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
 datarootdir = @datarootdir@
 docdir = @docdir@
-infodir = @infodir@
-pdfdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
 htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign no-dist
+ACLOCAL_AMFLAGS = -I.. -I../config
+all: all-am
+
+.SUFFIXES:
+am--refresh: Makefile
+	@:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \
+	      $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
+	$(am__cd) $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
 
-SHELL = /bin/sh
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
 
-INSTALL 	= @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_DATA    = @INSTALL_DATA@
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	$(am__cd) $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+$(am__aclocal_m4_deps):
+tags TAGS:
 
-#### Host, target, and site specific Makefile fragments come in here.
-###
+ctags CTAGS:
 
-all:
+cscope cscopelist:
 
-clean:
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
 
-mostlyclean: clean
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
 
-distclean:   clean
-	rm -f Makefile config.status config.cache
+installcheck: installcheck-am
+install-strip:
+	if test -z '$(STRIP)'; then \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	      install; \
+	else \
+	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+	fi
+mostlyclean-generic:
 
-maintainer-clean realclean:   distclean
+clean-generic:
 
-Makefile: $(srcdir)/Makefile.in $(host_makefile_frag) $(target_makefile_frag) \
-	config.status
-	$(SHELL) ./config.status
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
 
-AUTOCONF = autoconf
-configure_deps = $(srcdir)/configure.in
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
 
-$(srcdir)/configure: @MAINT@ $(configure_deps)
-	cd $(srcdir) && $(AUTOCONF)
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am:
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am am--refresh check check-am clean clean-generic \
+	cscopelist-am ctags-am distclean distclean-generic dvi dvi-am \
+	html html-am info info-am install install-am install-data \
+	install-data-am install-dvi install-dvi-am install-exec \
+	install-exec-am install-html install-html-am install-info \
+	install-info-am install-man install-pdf install-pdf-am \
+	install-ps install-ps-am install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+	pdf-am ps ps-am tags-am uninstall uninstall-am
+
+.PRECIOUS: Makefile
 
-config.status: $(srcdir)/configure
-	$(SHELL) ./config.status --recheck
 
-## these last targets are for standards.texi conformance
-dist:
-check:
-info html dvi ps pdf:
-install install-strip install-info install-html install-pdf:
-installcheck:
-uninstall:
-TAGS:
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/texi2pod.pl ./etc/texi2pod.pl
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/texi2pod.pl	2020-03-03 02:08:51.000000000 +0000
+++ ./etc/texi2pod.pl	2026-03-05 02:07:20.000000000 +0000
@@ -1,6 +1,6 @@
 #! /usr/bin/perl -w
 
-#   Copyright (C) 1999-2019 Free Software Foundation, Inc.
+#   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
 # This file is part of GCC.
 
@@ -59,6 +59,8 @@ while ($_ = shift) {
 	    $flag = shift;
 	}
         push (@ipath, $flag);
+    } elsif (/^--no-split$/) {
+	# ignore option for makeinfo compatibility
     } elsif (/^-/) {
 	usage();
     } else {
@@ -381,6 +383,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.20200303/etc/update-copyright.py ./etc/update-copyright.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/etc/update-copyright.py	1970-01-01 00:00:00.000000000 +0000
+++ ./etc/update-copyright.py	2026-03-05 02:07:20.000000000 +0000
@@ -0,0 +1,648 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2013-2025 Free Software Foundation, Inc.
+#
+# This script is free software; you can redistribute 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 script adjusts the copyright notices at the top of source files
+# so that they have the form:
+#
+#   Copyright XXXX-YYYY Free Software Foundation, Inc.
+#
+# It doesn't change code that is known to be maintained elsewhere or
+# that carries a non-FSF copyright.
+#
+# Pass --this-year to the script if you want it to add the current year
+# to all applicable notices.  Pass --quilt if you are using quilt and
+# want files to be added to the quilt before being changed.
+#
+# By default the script will update all directories for which the
+# output has been vetted.  You can instead pass the names of individual
+# directories, including those that haven't been approved.  So:
+#
+#    update-copyright.py --this-year
+#
+# is the command that would be used at the beginning of a year to update
+# all copyright notices (and possibly at other times to check whether
+# new files have been added with old years).  On the other hand:
+#
+#    update-copyright.py --this-year libiberty
+#
+# would run the script on just libiberty/.
+#
+# This script was copied from gcc's contrib/ and modified to suit
+# binutils.  In contrast to the gcc script, this one will update
+# the testsuite and --version output strings too.
+
+import os
+import re
+import sys
+import time
+import subprocess
+
+class Errors:
+    def __init__ (self):
+        self.num_errors = 0
+
+    def report (self, filename, string):
+        if filename:
+            string = filename + ': ' + string
+        sys.stderr.write (string + '\n')
+        self.num_errors += 1
+
+    def ok (self):
+        return self.num_errors == 0
+
+class GenericFilter:
+    def __init__ (self):
+        self.skip_files = set()
+        self.skip_dirs = set()
+        self.skip_extensions = set([
+                '.png',
+                '.pyc',
+                ])
+        self.fossilised_files = set()
+        self.own_files = set()
+
+        self.skip_files |= set ([
+                # Skip licence files.
+                'COPYING',
+                'COPYING.LIB',
+                'COPYING3',
+                'COPYING3.LIB',
+                'COPYING.LIBGLOSS',
+                'COPYING.NEWLIB',
+                'LICENSE',
+                'fdl.texi',
+                'gpl_v3.texi',
+                'fdl-1.3.xml',
+                'gpl-3.0.xml',
+
+                # Skip auto- and libtool-related files
+                'aclocal.m4',
+                'compile',
+                'config.guess',
+                'config.sub',
+                'depcomp',
+                'install-sh',
+                'libtool.m4',
+                'ltmain.sh',
+                'ltoptions.m4',
+                'ltsugar.m4',
+                'ltversion.m4',
+                'lt~obsolete.m4',
+                'missing',
+                'mkdep',
+                'mkinstalldirs',
+                'move-if-change',
+                'shlibpath.m4',
+                'symlink-tree',
+                'ylwrap',
+
+                # Skip FSF mission statement, etc.
+                'gnu.texi',
+                'funding.texi',
+                'appendix_free.xml',
+
+                # Skip imported texinfo files.
+                'texinfo.tex',
+                ])
+
+        self.skip_extensions |= set ([
+                # Maintained by the translation project.
+                '.po',
+
+                # Automatically-generated.
+                '.pot',
+                ])
+
+        self.skip_dirs |= set ([
+                'autom4te.cache',
+                ])
+
+
+    def get_line_filter (self, dir, filename):
+        if filename.startswith ('ChangeLog'):
+            # Ignore references to copyright in changelog entries.
+            return re.compile ('\t')
+
+        return None
+
+    def skip_file (self, dir, filename):
+        if filename in self.skip_files:
+            return True
+
+        (base, extension) = os.path.splitext (os.path.join (dir, filename))
+        if extension in self.skip_extensions:
+            return True
+
+        if extension == '.in':
+            # Skip .in files produced by automake.
+            if os.path.exists (base + '.am'):
+                return True
+
+            # Skip files produced by autogen
+            if (os.path.exists (base + '.def')
+                and os.path.exists (base + '.tpl')):
+                return True
+
+        # Skip configure files produced by autoconf
+        if filename == 'configure':
+            if os.path.exists (base + '.ac'):
+                return True
+            if os.path.exists (base + '.in'):
+                return True
+
+        return False
+
+    def skip_dir (self, dir, subdir):
+        return subdir in self.skip_dirs
+
+    def is_fossilised_file (self, dir, filename):
+        if filename in self.fossilised_files:
+            return True
+        # Only touch current current ChangeLogs.
+        if filename != 'ChangeLog' and filename.find ('ChangeLog') >= 0:
+            return True
+        return False
+
+    def by_package_author (self, dir, filename):
+        return filename in self.own_files
+
+class Copyright:
+    def __init__ (self, errors):
+        self.errors = errors
+
+        # Characters in a range of years.  Include '.' for typos.
+        ranges = '[0-9](?:[-0-9.,\s]|\s+and\s+)*[0-9]'
+
+        # Non-whitespace characters in a copyright holder's name.
+        name = '[\w.,-]'
+
+        # Matches one year.
+        self.year_re = re.compile ('[0-9]+')
+
+        # Matches part of a year or copyright holder.
+        self.continuation_re = re.compile (ranges + '|' + name)
+
+        # Matches a full copyright notice:
+        self.copyright_re = re.compile (
+            # 1: 'Copyright (C)', etc.
+            '([Cc]opyright'
+            '|[Cc]opyright\s+\([Cc]\)'
+            '|[Cc]opyright\s+%s'
+            '|[Cc]opyright\s+&copy;'
+            '|[Cc]opyright\s+@copyright{}'
+            '|@set\s+copyright[\w-]+)'
+
+            # 2: the years.  Include the whitespace in the year, so that
+            # we can remove any excess.
+            '(\s*(?:' + ranges + ',?'
+            '|@value\{[^{}]*\})\s*)'
+
+            # 3: 'by ', if used
+            '(by\s+)?'
+
+            # 4: the copyright holder.  Don't allow multiple consecutive
+            # spaces, so that right-margin gloss doesn't get caught
+            # (e.g. gnat_ugn.texi).
+            '(' + name + '(?:\s?' + name + ')*)?')
+
+        # A regexp for notices that might have slipped by.  Just matching
+        # 'copyright' is too noisy, and 'copyright.*[0-9]' falls foul of
+        # HTML header markers, so check for 'copyright' and two digits.
+        self.other_copyright_re = re.compile ('(^|[^\._])copyright[^=]*[0-9][0-9]',
+                                              re.IGNORECASE)
+        self.comment_re = re.compile('#+|[*]+|;+|%+|//+|@c |dnl ')
+        self.holders = { '@copying': '@copying' }
+        self.holder_prefixes = set()
+
+        # True to 'quilt add' files before changing them.
+        self.use_quilt = False
+
+        # If set, force all notices to include this year.
+        self.max_year = None
+
+        # Goes after the year(s).  Could be ', '.
+        self.separator = ' '
+
+    def add_package_author (self, holder, canon_form = None):
+        if not canon_form:
+            canon_form = holder
+        self.holders[holder] = canon_form
+        index = holder.find (' ')
+        while index >= 0:
+            self.holder_prefixes.add (holder[:index])
+            index = holder.find (' ', index + 1)
+
+    def add_external_author (self, holder):
+        self.holders[holder] = None
+
+    class BadYear (Exception):
+        def __init__ (self, year):
+            self.year = year
+
+        def __str__ (self):
+            return 'unrecognised year: ' + self.year
+
+    def parse_year (self, string):
+        year = int (string)
+        if len (string) == 2:
+            if year > 70:
+                return year + 1900
+        elif len (string) == 4:
+            return year
+        raise self.BadYear (string)
+
+    def year_range (self, years):
+        year_list = [self.parse_year (year)
+                     for year in self.year_re.findall (years)]
+        assert len (year_list) > 0
+        return (min (year_list), max (year_list))
+
+    def set_use_quilt (self, use_quilt):
+        self.use_quilt = use_quilt
+
+    def include_year (self, year):
+        assert not self.max_year
+        self.max_year = year
+
+    def canonicalise_years (self, dir, filename, filter, years):
+        # Leave texinfo variables alone.
+        if years.startswith ('@value'):
+            return years
+
+        (min_year, max_year) = self.year_range (years)
+
+        # Update the upper bound, if enabled.
+        if self.max_year and not filter.is_fossilised_file (dir, filename):
+            max_year = max (max_year, self.max_year)
+
+        # Use a range.
+        if min_year == max_year:
+            return '%d' % min_year
+        else:
+            return '%d-%d' % (min_year, max_year)
+
+    def strip_continuation (self, line):
+        line = line.lstrip()
+        match = self.comment_re.match (line)
+        if match:
+            line = line[match.end():].lstrip()
+        return line
+
+    def is_complete (self, match):
+        holder = match.group (4)
+        return (holder
+                and (holder not in self.holder_prefixes
+                     or holder in self.holders))
+
+    def update_copyright (self, dir, filename, filter, file, line, match):
+        orig_line = line
+        next_line = None
+        pathname = os.path.join (dir, filename)
+
+        intro = match.group (1)
+        if intro.startswith ('@set'):
+            # Texinfo year variables should always be on one line
+            after_years = line[match.end (2):].strip()
+            if after_years != '':
+                self.errors.report (pathname,
+                                    'trailing characters in @set: '
+                                    + after_years)
+                return (False, orig_line, next_line)
+        else:
+            # If it looks like the copyright is incomplete, add the next line.
+            while not self.is_complete (match):
+                try:
+                    next_line = file.readline()
+                except StopIteration:
+                    break
+
+                # If the next line doesn't look like a proper continuation,
+                # assume that what we've got is complete.
+                continuation = self.strip_continuation (next_line)
+                if not self.continuation_re.match (continuation):
+                    break
+
+                # Merge the lines for matching purposes.
+                orig_line += next_line
+                line = line.rstrip() + ' ' + continuation
+                next_line = None
+
+                # Rematch with the longer line, at the original position.
+                match = self.copyright_re.match (line, match.start())
+                assert match
+
+            holder = match.group (4)
+
+            # Use the filter to test cases where markup is getting in the way.
+            if filter.by_package_author (dir, filename):
+                assert holder not in self.holders
+
+            elif not holder:
+                self.errors.report (pathname, 'missing copyright holder')
+                return (False, orig_line, next_line)
+
+            elif holder not in self.holders:
+                self.errors.report (pathname,
+                                    'unrecognised copyright holder: ' + holder)
+                return (False, orig_line, next_line)
+
+            else:
+                # See whether the copyright is associated with the package
+                # author.
+                canon_form = self.holders[holder]
+                if not canon_form:
+                    return (False, orig_line, next_line)
+
+                # Make sure the author is given in a consistent way.
+                line = (line[:match.start (4)]
+                        + canon_form
+                        + line[match.end (4):])
+
+                # Remove any 'by'
+                line = line[:match.start (3)] + line[match.end (3):]
+
+        # Update the copyright years.
+        years = match.group (2).strip()
+        if (self.max_year
+            and match.start(0) > 0 and line[match.start(0)-1] == '"'
+            and not filter.is_fossilised_file (dir, filename)):
+            # A printed copyright date consists of the current year
+            canon_form = '%d' % self.max_year
+        else:
+            try:
+                canon_form = self.canonicalise_years (dir, filename, filter, years)
+            except self.BadYear as e:
+                self.errors.report (pathname, str (e))
+                return (False, orig_line, next_line)
+
+        line = (line[:match.start (2)]
+                + ' ' + canon_form + self.separator
+                + line[match.end (2):])
+
+        # Use the standard (C) form.
+        if intro.endswith ('right'):
+            intro += ' (C)'
+        elif intro.endswith ('(c)'):
+            intro = intro[:-3] + '(C)'
+        line = line[:match.start (1)] + intro + line[match.end (1):]
+
+        # Strip trailing whitespace
+        line = line.rstrip() + '\n'
+
+        return (line != orig_line, line, next_line)
+
+    def guess_encoding (self, pathname):
+        for encoding in ('utf8', 'iso8859'):
+            try:
+                open(pathname, 'r', encoding=encoding).read()
+                return encoding
+            except UnicodeDecodeError:
+                pass
+        return None
+
+    def process_file (self, dir, filename, filter):
+        pathname = os.path.join (dir, filename)
+        if filename.endswith ('.tmp'):
+            # Looks like something we tried to create before.
+            try:
+                os.remove (pathname)
+            except OSError:
+                pass
+            return
+
+        lines = []
+        changed = False
+        line_filter = filter.get_line_filter (dir, filename)
+        mode = None
+        encoding = self.guess_encoding(pathname)
+        with open (pathname, 'r', encoding=encoding) as file:
+            prev = None
+            mode = os.fstat (file.fileno()).st_mode
+            for line in file:
+                while line:
+                    next_line = None
+                    # Leave filtered-out lines alone.
+                    if not (line_filter and line_filter.match (line)):
+                        match = self.copyright_re.search (line)
+                        if match:
+                            res = self.update_copyright (dir, filename, filter,
+                                                         file, line, match)
+                            (this_changed, line, next_line) = res
+                            changed = changed or this_changed
+
+                        # Check for copyright lines that might have slipped by.
+                        elif self.other_copyright_re.search (line):
+                            self.errors.report (pathname,
+                                                'unrecognised copyright: %s'
+                                                % line.strip())
+                    lines.append (line)
+                    line = next_line
+
+        # If something changed, write the new file out.
+        if changed and self.errors.ok():
+            tmp_pathname = pathname + '.tmp'
+            with open (tmp_pathname, 'w', encoding=encoding) as file:
+                for line in lines:
+                    file.write (line)
+                os.fchmod (file.fileno(), mode)
+            if self.use_quilt:
+                subprocess.call (['quilt', 'add', pathname])
+            os.rename (tmp_pathname, pathname)
+
+    def process_tree (self, tree, filter):
+        for (dir, subdirs, filenames) in os.walk (tree):
+            # Don't recurse through directories that should be skipped.
+            for i in range (len (subdirs) - 1, -1, -1):
+                if filter.skip_dir (dir, subdirs[i]):
+                    del subdirs[i]
+
+            # Handle the files in this directory.
+            for filename in filenames:
+                if filter.skip_file (dir, filename):
+                    sys.stdout.write ('Skipping %s\n'
+                                      % os.path.join (dir, filename))
+                else:
+                    self.process_file (dir, filename, filter)
+
+class CmdLine:
+    def __init__ (self, copyright = Copyright):
+        self.errors = Errors()
+        self.copyright = copyright (self.errors)
+        self.dirs = []
+        self.default_dirs = []
+        self.chosen_dirs = []
+        self.option_handlers = dict()
+        self.option_help = []
+
+        self.add_option ('--help', 'Print this help', self.o_help)
+        self.add_option ('--quilt', '"quilt add" files before changing them',
+                         self.o_quilt)
+        self.add_option ('--this-year', 'Add the current year to every notice',
+                         self.o_this_year)
+
+    def add_option (self, name, help, handler):
+        self.option_help.append ((name, help))
+        self.option_handlers[name] = handler
+
+    def add_dir (self, dir, filter = GenericFilter()):
+        self.dirs.append ((dir, filter))
+
+    def o_help (self, option = None):
+        sys.stdout.write ('Usage: %s [options] dir1 dir2...\n\n'
+                          'Options:\n' % sys.argv[0])
+        format = '%-15s %s\n'
+        for (what, help) in self.option_help:
+            sys.stdout.write (format % (what, help))
+        sys.stdout.write ('\nDirectories:\n')
+
+        format = '%-25s'
+        i = 0
+        for (dir, filter) in self.dirs:
+            i += 1
+            if i % 3 == 0 or i == len (self.dirs):
+                sys.stdout.write (dir + '\n')
+            else:
+                sys.stdout.write (format % dir)
+        sys.exit (0)
+
+    def o_quilt (self, option):
+        self.copyright.set_use_quilt (True)
+
+    def o_this_year (self, option):
+        self.copyright.include_year (time.localtime().tm_year)
+
+    def main (self):
+        for arg in sys.argv[1:]:
+            if arg[:1] != '-':
+                self.chosen_dirs.append (arg)
+            elif arg in self.option_handlers:
+                self.option_handlers[arg] (arg)
+            else:
+                self.errors.report (None, 'unrecognised option: ' + arg)
+        if self.errors.ok():
+            if len (self.chosen_dirs) == 0:
+                self.chosen_dirs = self.default_dirs
+            if len (self.chosen_dirs) == 0:
+                self.o_help()
+            else:
+                for chosen_dir in self.chosen_dirs:
+                    canon_dir = os.path.join (chosen_dir, '')
+                    count = 0
+                    for (dir, filter) in self.dirs:
+                        if (dir + os.sep).startswith (canon_dir):
+                            count += 1
+                            self.copyright.process_tree (dir, filter)
+                    if count == 0:
+                        self.errors.report (None, 'unrecognised directory: '
+                                            + chosen_dir)
+        sys.exit (0 if self.errors.ok() else 1)
+
+#----------------------------------------------------------------------------
+
+class TopLevelFilter (GenericFilter):
+    def skip_dir (self, dir, subdir):
+        return True
+
+class ConfigFilter (GenericFilter):
+    def __init__ (self):
+        GenericFilter.__init__ (self)
+
+    def skip_file (self, dir, filename):
+        if filename.endswith ('.m4'):
+            pathname = os.path.join (dir, filename)
+            with open (pathname) as file:
+                # Skip files imported from gettext.
+                if file.readline().find ('gettext-') >= 0:
+                    return True
+        return GenericFilter.skip_file (self, dir, filename)
+
+class LdFilter (GenericFilter):
+    def __init__ (self):
+        GenericFilter.__init__ (self)
+
+        self.skip_extensions |= set ([
+                # ld testsuite output match files.
+                '.ro',
+                ])
+
+class BinutilsCopyright (Copyright):
+    def __init__ (self, errors):
+        Copyright.__init__ (self, errors)
+
+        canon_fsf = 'Free Software Foundation, Inc.'
+        self.add_package_author ('Free Software Foundation', canon_fsf)
+        self.add_package_author ('Free Software Foundation.', canon_fsf)
+        self.add_package_author ('Free Software Foundation Inc.', canon_fsf)
+        self.add_package_author ('Free Software Foundation, Inc', canon_fsf)
+        self.add_package_author ('Free Software Foundation, Inc.', canon_fsf)
+        self.add_package_author ('The Free Software Foundation', canon_fsf)
+        self.add_package_author ('The Free Software Foundation, Inc.', canon_fsf)
+        self.add_package_author ('Software Foundation, Inc.', canon_fsf)
+
+        self.add_external_author ('Carnegie Mellon University')
+        self.add_external_author ('John D. Polstra.')
+        self.add_external_author ('Innovative Computing Labs')
+        self.add_external_author ('Linaro Ltd.')
+        self.add_external_author ('MIPS Computer Systems, Inc.')
+        self.add_external_author ('Red Hat Inc.')
+        self.add_external_author ('Regents of the University of California.')
+        self.add_external_author ('The Regents of the University of California.')
+        self.add_external_author ('Third Eye Software, Inc.')
+        self.add_external_author ('Ulrich Drepper')
+        self.add_external_author ('Synopsys Inc.')
+        self.add_external_author ('Alan Woodland')
+        self.add_external_author ('Diego Elio Petteno')
+
+class BinutilsCmdLine (CmdLine):
+    def __init__ (self):
+        CmdLine.__init__ (self, BinutilsCopyright)
+
+        self.add_dir ('.', TopLevelFilter())
+        self.add_dir ('bfd')
+        self.add_dir ('binutils')
+        self.add_dir ('config', ConfigFilter())
+        self.add_dir ('cpu')
+        self.add_dir ('elfcpp')
+        self.add_dir ('etc')
+        self.add_dir ('gas')
+        self.add_dir ('gdb')
+        self.add_dir ('gdbserver')
+        self.add_dir ('gdbsupport')
+        self.add_dir ('gold')
+        self.add_dir ('gprof')
+        self.add_dir ('gprofng')
+        self.add_dir ('include')
+        self.add_dir ('ld', LdFilter())
+        self.add_dir ('libbacktrace')
+        self.add_dir ('libctf')
+        self.add_dir ('libdecnumber')
+        self.add_dir ('libiberty')
+        self.add_dir ('libsframe')
+        self.add_dir ('opcodes')
+        self.add_dir ('readline')
+        self.add_dir ('sim')
+
+        self.default_dirs = [
+            'bfd',
+            'binutils',
+            'elfcpp',
+            'etc',
+            'gas',
+            'gold',
+            'gprof',
+            'gprofng',
+            'include',
+            'ld',
+            'libctf',
+            'libiberty',
+            'libsframe',
+            'opcodes',
+            ]
+
+BinutilsCmdLine().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.20200303/gdb/aarch32-linux-nat.c ./gdb/aarch32-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch32-linux-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch32-linux-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,7 +15,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/>.  */
 
-#include "defs.h"
 
 #include "regcache.h"
 #include "arm-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.20200303/gdb/aarch32-linux-nat.h ./gdb/aarch32-linux-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch32-linux-nat.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch32-linux-nat.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,8 +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/>.  */
 
-#ifndef AARCH32_LINUX_NAT_H
-#define AARCH32_LINUX_NAT_H
+#ifndef GDB_AARCH32_LINUX_NAT_H
+#define GDB_AARCH32_LINUX_NAT_H
 
 void aarch32_gp_regcache_supply (struct regcache *regcache, uint32_t *regs,
 				 int arm_apcs_32);
@@ -31,4 +31,4 @@ void aarch32_vfp_regcache_collect (const
 				   gdb_byte *regs,
 				   const int vfp_register_count);
 
-#endif /* AARCH32_LINUX_NAT_H */
+#endif /* GDB_AARCH32_LINUX_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.20200303/gdb/aarch32-tdep.c ./gdb/aarch32-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch32-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch32-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,22 +15,25 @@
    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 "aarch32-tdep.h"
 
 #include "gdbsupport/common-regcache.h"
 #include "arch/aarch32.h"
 
-static struct target_desc *tdesc_aarch32;
+static struct target_desc *tdesc_aarch32_list[2];
 
 /* See aarch32-tdep.h.  */
 
 const target_desc *
-aarch32_read_description ()
+aarch32_read_description (bool tls)
 {
-  if (tdesc_aarch32 == nullptr)
-    tdesc_aarch32 = aarch32_create_target_description ();
+  struct target_desc *tdesc = tdesc_aarch32_list[tls];
+
+  if (tdesc == nullptr)
+    {
+      tdesc = aarch32_create_target_description (tls);
+      tdesc_aarch32_list[tls] = tdesc;
+    }
 
-  return tdesc_aarch32;
+  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.20200303/gdb/aarch32-tdep.h ./gdb/aarch32-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch32-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch32-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,13 +15,13 @@
    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 AARCH32_TDEP_H
-#define AARCH32_TDEP_H
+#ifndef GDB_AARCH32_TDEP_H
+#define GDB_AARCH32_TDEP_H
 
 struct target_desc;
 
 /* Get the AArch32 target description.  */
 
-const target_desc *aarch32_read_description ();
+const target_desc *aarch32_read_description (bool tls);
 
-#endif /* aarch32-tdep.h.  */
+#endif /* GDB_AARCH32_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.20200303/gdb/aarch64-fbsd-nat.c ./gdb/aarch64-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-fbsd-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-fbsd-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/aarch64.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,115 +17,341 @@
    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 "inferior.h"
 #include "regcache.h"
 #include "target.h"
+#include "nat/aarch64-hw-point.h"
 
-#include <sys/types.h>
+#include "elf/common.h"
+
+#include <sys/param.h>
 #include <sys/ptrace.h>
+#include <machine/armreg.h>
 #include <machine/reg.h>
 
 #include "fbsd-nat.h"
 #include "aarch64-tdep.h"
 #include "aarch64-fbsd-tdep.h"
+#include "aarch64-nat.h"
 #include "inf-ptrace.h"
 
+#if __FreeBSD_version >= 1400005
+#define	HAVE_DBREG
+
+#include <unordered_set>
+#endif
+
+#ifdef HAVE_DBREG
+struct aarch64_fbsd_nat_target final
+  : public aarch64_nat_target<fbsd_nat_target>
+#else
 struct aarch64_fbsd_nat_target final : public fbsd_nat_target
+#endif
 {
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
+
+  const struct target_desc *read_description () override;
+
+#ifdef HAVE_DBREG
+  /* Hardware breakpoints and watchpoints.  */
+  bool stopped_by_watchpoint () override;
+  bool stopped_data_address (CORE_ADDR *) override;
+  bool stopped_by_hw_breakpoint () override;
+  bool supports_stopped_by_hw_breakpoint () override;
+
+  void post_startup_inferior (ptid_t) override;
+  void post_attach (int pid) override;
+
+  void low_new_fork (ptid_t parent, pid_t child) override;
+  void low_delete_thread (thread_info *) override;
+  void low_prepare_to_resume (thread_info *) override;
+
+private:
+  void probe_debug_regs (int pid);
+  static bool debug_regs_probed;
+#endif
 };
 
 static aarch64_fbsd_nat_target the_aarch64_fbsd_nat_target;
 
-/* Determine if PT_GETREGS fetches REGNUM.  */
+/* Fetch register REGNUM from the inferior.  If REGNUM is -1, do this
+   for all registers.  */
 
-static bool
-getregs_supplies (int regnum)
+void
+aarch64_fbsd_nat_target::fetch_registers (struct regcache *regcache,
+					  int regnum)
 {
-  return (regnum >= AARCH64_X0_REGNUM && regnum <= AARCH64_CPSR_REGNUM);
+  fetch_register_set<struct reg> (regcache, regnum, PT_GETREGS,
+				  &aarch64_fbsd_gregset);
+  fetch_register_set<struct fpreg> (regcache, regnum, PT_GETFPREGS,
+				    &aarch64_fbsd_fpregset);
+
+  gdbarch *gdbarch = regcache->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+  if (tdep->has_tls ())
+    fetch_regset<uint64_t> (regcache, regnum, NT_ARM_TLS,
+			    &aarch64_fbsd_tls_regset, tdep->tls_regnum_base);
 }
 
-/* Determine if PT_GETFPREGS fetches REGNUM.  */
+/* Store register REGNUM back into the inferior.  If REGNUM is -1, do
+   this for all registers.  */
 
-static bool
-getfpregs_supplies (int regnum)
+void
+aarch64_fbsd_nat_target::store_registers (struct regcache *regcache,
+					  int regnum)
 {
-  return (regnum >= AARCH64_V0_REGNUM && regnum <= AARCH64_FPCR_REGNUM);
+  store_register_set<struct reg> (regcache, regnum, PT_GETREGS, PT_SETREGS,
+				  &aarch64_fbsd_gregset);
+  store_register_set<struct fpreg> (regcache, regnum, PT_GETFPREGS,
+				    PT_SETFPREGS, &aarch64_fbsd_fpregset);
+
+  gdbarch *gdbarch = regcache->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+  if (tdep->has_tls ())
+    store_regset<uint64_t> (regcache, regnum, NT_ARM_TLS,
+			    &aarch64_fbsd_tls_regset, tdep->tls_regnum_base);
 }
 
-/* Fetch register REGNUM from the inferior.  If REGNUM is -1, do this
-   for all registers.  */
+/* Implement the target read_description method.  */
 
-void
-aarch64_fbsd_nat_target::fetch_registers (struct regcache *regcache,
-					  int regnum)
+const struct target_desc *
+aarch64_fbsd_nat_target::read_description ()
 {
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
+  if (inferior_ptid == null_ptid)
+    return this->beneath ()->read_description ();
 
-  if (regnum == -1 || getregs_supplies (regnum))
-    {
-      struct reg regs;
+  aarch64_features features;
+  features.tls = have_regset (inferior_ptid, NT_ARM_TLS)? 1 : 0;
+  return aarch64_read_description (features);
+}
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
-	perror_with_name (_("Couldn't get registers"));
+#ifdef HAVE_DBREG
+bool aarch64_fbsd_nat_target::debug_regs_probed;
 
-      regcache->supply_regset (&aarch64_fbsd_gregset, regnum, &regs,
-			       sizeof (regs));
-    }
+/* Set of threads which need to update debug registers on next resume.  */
 
-  if (regnum == -1 || getfpregs_supplies (regnum))
-    {
-      struct fpreg fpregs;
+static std::unordered_set<lwpid_t> aarch64_debug_pending_threads;
+
+/* Implement the "stopped_data_address" target_ops method.  */
+
+bool
+aarch64_fbsd_nat_target::stopped_data_address (CORE_ADDR *addr_p)
+{
+  siginfo_t siginfo;
+  struct aarch64_debug_reg_state *state;
+
+  if (!fbsd_nat_get_siginfo (inferior_ptid, &siginfo))
+    return false;
+
+  /* This must be a hardware breakpoint.  */
+  if (siginfo.si_signo != SIGTRAP
+      || siginfo.si_code != TRAP_TRACE
+      || siginfo.si_trapno != EXCP_WATCHPT_EL0)
+    return false;
+
+  const CORE_ADDR addr_trap = (CORE_ADDR) siginfo.si_addr;
+
+  /* Check if the address matches any watched address.  */
+  state = aarch64_get_debug_reg_state (inferior_ptid.pid ());
+  return aarch64_stopped_data_address (state, addr_trap, addr_p);
+}
+
+/* Implement the "stopped_by_watchpoint" target_ops method.  */
+
+bool
+aarch64_fbsd_nat_target::stopped_by_watchpoint ()
+{
+  return stopped_data_address (nullptr);
+}
+
+/* Implement the "stopped_by_hw_breakpoint" target_ops method.  */
+
+bool
+aarch64_fbsd_nat_target::stopped_by_hw_breakpoint ()
+{
+  siginfo_t siginfo;
+  struct aarch64_debug_reg_state *state;
+
+  if (!fbsd_nat_get_siginfo (inferior_ptid, &siginfo))
+    return false;
+
+  /* This must be a hardware breakpoint.  */
+  if (siginfo.si_signo != SIGTRAP
+      || siginfo.si_code != TRAP_TRACE
+      || siginfo.si_trapno != EXCP_WATCHPT_EL0)
+    return false;
+
+  return !stopped_by_watchpoint();
+}
+
+/* Implement the "supports_stopped_by_hw_breakpoint" target_ops method.  */
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
-	perror_with_name (_("Couldn't get floating point status"));
+bool
+aarch64_fbsd_nat_target::supports_stopped_by_hw_breakpoint ()
+{
+  return true;
+}
+
+/* Fetch the hardware debug register capability information.  */
 
-      regcache->supply_regset (&aarch64_fbsd_fpregset, regnum, &fpregs,
-			       sizeof (fpregs));
+void
+aarch64_fbsd_nat_target::probe_debug_regs (int pid)
+{
+  if (!debug_regs_probed)
+    {
+      struct dbreg reg;
+
+      debug_regs_probed = true;
+      aarch64_num_bp_regs = 0;
+      aarch64_num_wp_regs = 0;
+
+      if (ptrace(PT_GETDBREGS, pid, (PTRACE_TYPE_ARG3) &reg, 0) == 0)
+	{
+	  switch (reg.db_debug_ver)
+	    {
+	    case AARCH64_DEBUG_ARCH_V8:
+	    case AARCH64_DEBUG_ARCH_V8_1:
+	    case AARCH64_DEBUG_ARCH_V8_2:
+	    case AARCH64_DEBUG_ARCH_V8_4:
+	    case AARCH64_DEBUG_ARCH_V8_8:
+	    case AARCH64_DEBUG_ARCH_V8_9:
+	      break;
+	    default:
+	      return;
+	    }
+
+	  aarch64_num_bp_regs = reg.db_nbkpts;
+	  if (aarch64_num_bp_regs > AARCH64_HBP_MAX_NUM)
+	    {
+	      warning (_("Unexpected number of hardware breakpoint registers"
+			 " reported by ptrace, got %d, expected %d."),
+		       aarch64_num_bp_regs, AARCH64_HBP_MAX_NUM);
+	      aarch64_num_bp_regs = AARCH64_HBP_MAX_NUM;
+	    }
+	  aarch64_num_wp_regs = reg.db_nwtpts;
+	  if (aarch64_num_wp_regs > AARCH64_HWP_MAX_NUM)
+	    {
+	      warning (_("Unexpected number of hardware watchpoint registers"
+			 " reported by ptrace, got %d, expected %d."),
+		       aarch64_num_wp_regs, AARCH64_HWP_MAX_NUM);
+	      aarch64_num_wp_regs = AARCH64_HWP_MAX_NUM;
+	    }
+	}
     }
 }
 
-/* Store register REGNUM back into the inferior.  If REGNUM is -1, do
-   this for all registers.  */
+/* Implement the virtual inf_ptrace_target::post_startup_inferior method.  */
 
 void
-aarch64_fbsd_nat_target::store_registers (struct regcache *regcache,
-					  int regnum)
+aarch64_fbsd_nat_target::post_startup_inferior (ptid_t ptid)
 {
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
+  aarch64_remove_debug_reg_state (ptid.pid ());
+  probe_debug_regs (ptid.pid ());
+  fbsd_nat_target::post_startup_inferior (ptid);
+}
 
-  if (regnum == -1 || getregs_supplies (regnum))
-    {
-      struct reg regs;
+/* Implement the "post_attach" target_ops method.  */
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
-	perror_with_name (_("Couldn't get registers"));
+void
+aarch64_fbsd_nat_target::post_attach (int pid)
+{
+  aarch64_remove_debug_reg_state (pid);
+  probe_debug_regs (pid);
+  fbsd_nat_target::post_attach (pid);
+}
 
-      regcache->collect_regset (&aarch64_fbsd_gregset, regnum, &regs,
-			       sizeof (regs));
+/* Implement the virtual fbsd_nat_target::low_new_fork method.  */
 
-      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
-	perror_with_name (_("Couldn't write registers"));
-    }
+void
+aarch64_fbsd_nat_target::low_new_fork (ptid_t parent, pid_t child)
+{
+  struct aarch64_debug_reg_state *parent_state, *child_state;
 
-  if (regnum == -1 || getfpregs_supplies (regnum))
-    {
-      struct fpreg fpregs;
+  /* If there is no parent state, no watchpoints nor breakpoints have
+     been set, so there is nothing to do.  */
+  parent_state = aarch64_lookup_debug_reg_state (parent.pid ());
+  if (parent_state == nullptr)
+    return;
+
+  /* The kernel clears debug registers in the new child process after
+     fork, but 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.  */
 
-      if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
-	perror_with_name (_("Couldn't get floating point status"));
+  child_state = aarch64_get_debug_reg_state (child);
+  *child_state = *parent_state;
+}
 
-      regcache->collect_regset (&aarch64_fbsd_fpregset, regnum, &fpregs,
-				sizeof (fpregs));
+/* Mark debug register state "dirty" for all threads belonging to the
+   current inferior.  */
 
-      if (ptrace (PT_SETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
-	perror_with_name (_("Couldn't write floating point status"));
+void
+aarch64_notify_debug_reg_change (ptid_t ptid,
+				 int is_watchpoint, unsigned int idx)
+{
+  for (thread_info *tp : current_inferior ()->non_exited_threads ())
+    {
+      if (tp->ptid.lwp_p ())
+	aarch64_debug_pending_threads.emplace (tp->ptid.lwp ());
     }
 }
 
+/* Implement the virtual fbsd_nat_target::low_delete_thread method.  */
+
 void
-_initialize_aarch64_fbsd_nat (void)
+aarch64_fbsd_nat_target::low_delete_thread (thread_info *tp)
+{
+  gdb_assert(tp->ptid.lwp_p ());
+  aarch64_debug_pending_threads.erase (tp->ptid.lwp ());
+}
+
+/* Implement the virtual fbsd_nat_target::low_prepare_to_resume method.  */
+
+void
+aarch64_fbsd_nat_target::low_prepare_to_resume (thread_info *tp)
+{
+  gdb_assert(tp->ptid.lwp_p ());
+
+  if (aarch64_debug_pending_threads.erase (tp->ptid.lwp ()) == 0)
+    return;
+
+  struct aarch64_debug_reg_state *state =
+    aarch64_lookup_debug_reg_state (tp->ptid.pid ());
+  gdb_assert(state != nullptr);
+
+  struct dbreg reg;
+  memset (&reg, 0, sizeof(reg));
+  for (int i = 0; i < aarch64_num_bp_regs; i++)
+    {
+      reg.db_breakregs[i].dbr_addr = state->dr_addr_bp[i];
+      reg.db_breakregs[i].dbr_ctrl = state->dr_ctrl_bp[i];
+    }
+  for (int i = 0; i < aarch64_num_wp_regs; i++)
+    {
+      reg.db_watchregs[i].dbw_addr = state->dr_addr_wp[i];
+      reg.db_watchregs[i].dbw_ctrl = state->dr_ctrl_wp[i];
+    }
+  if (ptrace(PT_SETDBREGS, tp->ptid.lwp (), (PTRACE_TYPE_ARG3) &reg, 0) != 0)
+    error (_("Failed to set hardware debug registers"));
+}
+#else
+/* A stub that should never be called.  */
+void
+aarch64_notify_debug_reg_change (ptid_t ptid,
+				 int is_watchpoint, unsigned int idx)
+{
+  gdb_assert (true);
+}
+#endif
+
+INIT_GDB_FILE (aarch64_fbsd_nat)
 {
+#ifdef HAVE_DBREG
+  aarch64_initialize_hw_point ();
+#endif
   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.20200303/gdb/aarch64-fbsd-tdep.c ./gdb/aarch64-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-fbsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-fbsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/aarch64.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,12 +17,13 @@
    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 "extract-store-integer.h"
 #include "gdbarch.h"
 #include "fbsd-tdep.h"
 #include "aarch64-tdep.h"
 #include "aarch64-fbsd-tdep.h"
+#include "inferior.h"
 #include "osabi.h"
 #include "solib-svr4.h"
 #include "target.h"
@@ -49,6 +50,14 @@ static const struct regcache_map_entry a
     { 0 }
   };
 
+/* Register numbers are relative to tdep->tls_regnum_base.  */
+
+static const struct regcache_map_entry aarch64_fbsd_tls_regmap[] =
+  {
+    { 1, 0, 8 },	/* tpidr */
+    { 0 }
+  };
+
 /* In a signal frame, sp points to a 'struct sigframe' which is
    defined as:
 
@@ -79,9 +88,9 @@ static const struct regcache_map_entry a
 
 static void
 aarch64_fbsd_sigframe_init (const struct tramp_frame *self,
-			     struct frame_info *this_frame,
-			     struct trad_frame_cache *this_cache,
-			     CORE_ADDR func)
+			    const frame_info_ptr &this_frame,
+			    struct trad_frame_cache *this_cache,
+			    CORE_ADDR func)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -134,7 +143,35 @@ const struct regset aarch64_fbsd_fpregse
     regcache_supply_regset, regcache_collect_regset
   };
 
-/* Implement the "regset_from_core_section" gdbarch method.  */
+static void
+aarch64_fbsd_supply_tls_regset (const struct regset *regset,
+				struct regcache *regcache,
+				int regnum, const void *buf, size_t size)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  regcache->supply_regset (regset, tdep->tls_regnum_base, regnum, buf, size);
+}
+
+static void
+aarch64_fbsd_collect_tls_regset (const struct regset *regset,
+				 const struct regcache *regcache,
+				 int regnum, void *buf, size_t size)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  regcache->collect_regset (regset, tdep->tls_regnum_base, regnum, buf, size);
+}
+
+const struct regset aarch64_fbsd_tls_regset =
+  {
+    aarch64_fbsd_tls_regmap,
+    aarch64_fbsd_supply_tls_regset, aarch64_fbsd_collect_tls_regset
+  };
+
+/* Implement the "iterate_over_regset_sections" gdbarch method.  */
 
 static void
 aarch64_fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
@@ -142,10 +179,54 @@ aarch64_fbsd_iterate_over_regset_section
 					   void *cb_data,
 					   const struct regcache *regcache)
 {
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
   cb (".reg", AARCH64_FBSD_SIZEOF_GREGSET, AARCH64_FBSD_SIZEOF_GREGSET,
       &aarch64_fbsd_gregset, NULL, cb_data);
   cb (".reg2", AARCH64_FBSD_SIZEOF_FPREGSET, AARCH64_FBSD_SIZEOF_FPREGSET,
       &aarch64_fbsd_fpregset, NULL, cb_data);
+
+  if (tdep->has_tls ())
+    cb (".reg-aarch-tls", AARCH64_FBSD_SIZEOF_TLSREGSET,
+	AARCH64_FBSD_SIZEOF_TLSREGSET, &aarch64_fbsd_tls_regset,
+	"TLS register", cb_data);
+}
+
+/* Implement the "core_read_description" gdbarch method.  */
+
+static const struct target_desc *
+aarch64_fbsd_core_read_description (struct gdbarch *gdbarch,
+				    struct target_ops *target, bfd *abfd)
+{
+  asection *tls = bfd_get_section_by_name (abfd, ".reg-aarch-tls");
+
+  aarch64_features features;
+  features.tls = tls != nullptr? 1 : 0;
+
+  return aarch64_read_description (features);
+}
+
+/* Implement the get_thread_local_address gdbarch method.  */
+
+static CORE_ADDR
+aarch64_fbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid,
+				       CORE_ADDR lm_addr, CORE_ADDR offset)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+  struct regcache *regcache;
+
+  regcache = get_thread_arch_regcache (current_inferior (), ptid, gdbarch);
+
+  target_fetch_registers (regcache, tdep->tls_regnum_base);
+
+  ULONGEST tpidr;
+  if (regcache->cooked_read (tdep->tls_regnum_base, &tpidr) != REG_VALID)
+    error (_("Unable to fetch %%tpidr"));
+
+  /* %tpidr points to the TCB whose first member is the dtv
+      pointer.  */
+  CORE_ADDR dtv_addr = tpidr;
+  return fbsd_get_thread_local_address (gdbarch, dtv_addr, lm_addr, offset);
 }
 
 /* Implement the 'init_osabi' method of struct gdb_osabi_handler.  */
@@ -153,13 +234,12 @@ aarch64_fbsd_iterate_over_regset_section
 static void
 aarch64_fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   /* Generic FreeBSD support.  */
   fbsd_init_abi (info, gdbarch);
 
-  set_solib_svr4_fetch_link_map_offsets (gdbarch,
-					 svr4_lp64_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_svr4_lp64_solib_ops);
 
   tramp_frame_prepend_unwinder (gdbarch, &aarch64_fbsd_sigframe);
 
@@ -168,10 +248,19 @@ aarch64_fbsd_init_abi (struct gdbarch_in
 
   set_gdbarch_iterate_over_regset_sections
     (gdbarch, aarch64_fbsd_iterate_over_regset_sections);
+  set_gdbarch_core_read_description (gdbarch,
+				     aarch64_fbsd_core_read_description);
+
+  if (tdep->has_tls ())
+    {
+      set_gdbarch_fetch_tls_load_module_address (gdbarch,
+						 svr4_fetch_objfile_link_map);
+      set_gdbarch_get_thread_local_address
+	(gdbarch, aarch64_fbsd_get_thread_local_address);
+    }
 }
 
-void
-_initialize_aarch64_fbsd_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/aarch64-fbsd-tdep.h ./gdb/aarch64-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-fbsd-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-fbsd-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* FreeBSD/aarch64 target support, prototypes.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 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/>.  */
 
-#ifndef AARCH64_FBSD_TDEP_H
-#define AARCH64_FBSD_TDEP_H
+#ifndef GDB_AARCH64_FBSD_TDEP_H
+#define GDB_AARCH64_FBSD_TDEP_H
 
 #include "regset.h"
 
@@ -32,7 +32,11 @@
    alignment.  */
 #define AARCH64_FBSD_SIZEOF_FPREGSET (33 * V_REGISTER_SIZE)
 
+/* The TLS regset consists of a single register.  */
+#define	AARCH64_FBSD_SIZEOF_TLSREGSET (X_REGISTER_SIZE)
+
 extern const struct regset aarch64_fbsd_gregset;
 extern const struct regset aarch64_fbsd_fpregset;
+extern const struct regset aarch64_fbsd_tls_regset;
 
-#endif /* AARCH64_FBSD_TDEP_H */
+#endif /* GDB_AARCH64_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.20200303/gdb/aarch64-linux-nat.c ./gdb/aarch64-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-linux-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-linux-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for GNU/Linux AArch64.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -18,7 +18,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/>.  */
 
-#include "defs.h"
 
 #include "inferior.h"
 #include "gdbcore.h"
@@ -26,7 +25,8 @@
 #include "linux-nat.h"
 #include "target-descriptions.h"
 #include "auxv.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
+#include "aarch64-nat.h"
 #include "aarch64-tdep.h"
 #include "aarch64-linux-tdep.h"
 #include "aarch32-linux-nat.h"
@@ -34,7 +34,7 @@
 #include "arch/arm.h"
 #include "nat/aarch64-linux.h"
 #include "nat/aarch64-linux-hw-point.h"
-#include "nat/aarch64-sve-linux-ptrace.h"
+#include "nat/aarch64-scalable-linux-ptrace.h"
 
 #include "elf/external.h"
 #include "elf/common.h"
@@ -45,16 +45,26 @@
 
 #include "gregset.h"
 #include "linux-tdep.h"
+#include "arm-tdep.h"
 
 /* Defines ps_err_e, struct ps_prochandle.  */
 #include "gdb_proc_service.h"
 #include "arch-utils.h"
 
+#include "arch/aarch64-gcs-linux.h"
+#include "arch/aarch64-mte-linux.h"
+
+#include "nat/aarch64-mte-linux-ptrace.h"
+#include "arch/aarch64-scalable-linux.h"
+
+#include <string.h>
+
 #ifndef TRAP_HWBKPT
 #define TRAP_HWBKPT 0x0004
 #endif
 
-class aarch64_linux_nat_target final : public linux_nat_target
+class aarch64_linux_nat_target final
+  : public aarch64_nat_target<linux_nat_target>
 {
 public:
   /* Add our register access methods.  */
@@ -64,26 +74,11 @@ public:
   const struct target_desc *read_description () override;
 
   /* Add our hardware breakpoint and watchpoint implementation.  */
-  int can_use_hw_breakpoint (enum bptype, int, int) override;
-  int insert_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
-  int remove_hw_breakpoint (struct gdbarch *, struct bp_target_info *) override;
-  int region_ok_for_hw_watchpoint (CORE_ADDR, int) override;
-  int insert_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
-			 struct expression *) override;
-  int remove_watchpoint (CORE_ADDR, int, enum target_hw_bp_type,
-			 struct expression *) override;
   bool stopped_by_watchpoint () override;
   bool stopped_data_address (CORE_ADDR *) override;
-  bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int) override;
 
   int can_do_single_step () override;
 
-  /* Override the GNU/Linux inferior startup hook.  */
-  void post_startup_inferior (ptid_t) override;
-
-  /* Override the GNU/Linux post attach hook.  */
-  void post_attach (int pid) override;
-
   /* These three defer to common nat/ code.  */
   void low_new_thread (struct lwp_info *lp) override
   { aarch64_linux_new_thread (lp); }
@@ -93,6 +88,7 @@ public:
   { aarch64_linux_prepare_to_resume (lp); }
 
   void low_new_fork (struct lwp_info *parent, pid_t child_pid) override;
+  void low_init_process (pid_t pid) override;
   void low_forget_process (pid_t pid) override;
 
   /* Add our siginfo layout converter.  */
@@ -100,74 +96,21 @@ public:
     override;
 
   struct gdbarch *thread_architecture (ptid_t) override;
-};
-
-static aarch64_linux_nat_target the_aarch64_linux_nat_target;
-
-/* Per-process data.  We don't bind this to a per-inferior registry
-   because of targets like x86 GNU/Linux that need to keep track of
-   processes that aren't bound to any inferior (e.g., fork children,
-   checkpoints).  */
-
-struct aarch64_process_info
-{
-  /* Linked list.  */
-  struct aarch64_process_info *next;
 
-  /* The process identifier.  */
-  pid_t pid;
+  bool supports_memory_tagging () override;
 
-  /* Copy of aarch64 hardware debug registers.  */
-  struct aarch64_debug_reg_state state;
+  /* Read memory allocation tags from memory via PTRACE.  */
+  bool fetch_memtags (CORE_ADDR address, size_t len,
+		      gdb::byte_vector &tags, int type) override;
+
+  /* Write allocation tags to memory via PTRACE.  */
+  bool store_memtags (CORE_ADDR address, size_t len,
+		      const gdb::byte_vector &tags, int type) override;
+  /* Check if an address is tagged.  */
+  bool is_address_tagged (gdbarch *gdbarch, CORE_ADDR address) override;
 };
 
-static struct aarch64_process_info *aarch64_process_list = NULL;
-
-/* Find process data for process PID.  */
-
-static struct aarch64_process_info *
-aarch64_find_process_pid (pid_t pid)
-{
-  struct aarch64_process_info *proc;
-
-  for (proc = aarch64_process_list; proc; proc = proc->next)
-    if (proc->pid == pid)
-      return proc;
-
-  return NULL;
-}
-
-/* Add process data for process PID.  Returns newly allocated info
-   object.  */
-
-static struct aarch64_process_info *
-aarch64_add_process (pid_t pid)
-{
-  struct aarch64_process_info *proc;
-
-  proc = XCNEW (struct aarch64_process_info);
-  proc->pid = pid;
-
-  proc->next = aarch64_process_list;
-  aarch64_process_list = proc;
-
-  return proc;
-}
-
-/* Get data specific info for process PID, creating it if necessary.
-   Never returns NULL.  */
-
-static struct aarch64_process_info *
-aarch64_process_info_get (pid_t pid)
-{
-  struct aarch64_process_info *proc;
-
-  proc = aarch64_find_process_pid (pid);
-  if (proc == NULL)
-    proc = aarch64_add_process (pid);
-
-  return proc;
-}
+static aarch64_linux_nat_target the_aarch64_linux_nat_target;
 
 /* Called whenever GDB is no longer debugging process PID.  It deletes
    data structures that keep track of debug register state.  */
@@ -175,32 +118,7 @@ aarch64_process_info_get (pid_t pid)
 void
 aarch64_linux_nat_target::low_forget_process (pid_t pid)
 {
-  struct aarch64_process_info *proc, **proc_link;
-
-  proc = aarch64_process_list;
-  proc_link = &aarch64_process_list;
-
-  while (proc != NULL)
-    {
-      if (proc->pid == pid)
-	{
-	  *proc_link = proc->next;
-
-	  xfree (proc);
-	  return;
-	}
-
-      proc_link = &proc->next;
-      proc = *proc_link;
-    }
-}
-
-/* Get debug registers state for process PID.  */
-
-struct aarch64_debug_reg_state *
-aarch64_get_debug_reg_state (pid_t pid)
-{
-  return &aarch64_process_info_get (pid)->state;
+  aarch64_remove_debug_reg_state (pid);
 }
 
 /* Fill GDB's register array with the general-purpose register values
@@ -216,7 +134,7 @@ fetch_gregs_from_thread (struct regcache
 
   /* Make sure REGS can hold all registers contents on both aarch64
      and arm.  */
-  gdb_static_assert (sizeof (regs) >= 18 * 4);
+  static_assert (sizeof (regs) >= 18 * 4);
 
   tid = regcache->ptid ().lwp ();
 
@@ -228,7 +146,7 @@ fetch_gregs_from_thread (struct regcache
 
   ret = ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec);
   if (ret < 0)
-    perror_with_name (_("Unable to fetch general registers."));
+    perror_with_name (_("Unable to fetch general registers"));
 
   if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word == 32)
     aarch32_gp_regcache_supply (regcache, (uint32_t *) regs, 1);
@@ -254,7 +172,7 @@ store_gregs_to_thread (const struct regc
 
   /* Make sure REGS can hold all registers contents on both aarch64
      and arm.  */
-  gdb_static_assert (sizeof (regs) >= 18 * 4);
+  static_assert (sizeof (regs) >= 18 * 4);
   tid = regcache->ptid ().lwp ();
 
   iovec.iov_base = &regs;
@@ -265,7 +183,7 @@ store_gregs_to_thread (const struct regc
 
   ret = ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, &iovec);
   if (ret < 0)
-    perror_with_name (_("Unable to fetch general registers."));
+    perror_with_name (_("Unable to fetch general registers"));
 
   if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word == 32)
     aarch32_gp_regcache_collect (regcache, (uint32_t *) regs, 1);
@@ -280,7 +198,7 @@ store_gregs_to_thread (const struct regc
 
   ret = ptrace (PTRACE_SETREGSET, tid, NT_PRSTATUS, &iovec);
   if (ret < 0)
-    perror_with_name (_("Unable to store general registers."));
+    perror_with_name (_("Unable to store general registers"));
 }
 
 /* Fill GDB's register array with the fp/simd register values
@@ -296,7 +214,7 @@ fetch_fpregs_from_thread (struct regcach
 
   /* Make sure REGS can hold all VFP registers contents on both aarch64
      and arm.  */
-  gdb_static_assert (sizeof regs >= ARM_VFP3_REGS_SIZE);
+  static_assert (sizeof regs >= ARM_VFP3_REGS_SIZE);
 
   tid = regcache->ptid ().lwp ();
 
@@ -308,7 +226,7 @@ fetch_fpregs_from_thread (struct regcach
 
       ret = ptrace (PTRACE_GETREGSET, tid, NT_ARM_VFP, &iovec);
       if (ret < 0)
-	perror_with_name (_("Unable to fetch VFP registers."));
+	perror_with_name (_("Unable to fetch VFP registers"));
 
       aarch32_vfp_regcache_supply (regcache, (gdb_byte *) &regs, 32);
     }
@@ -320,7 +238,7 @@ fetch_fpregs_from_thread (struct regcach
 
       ret = ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec);
       if (ret < 0)
-	perror_with_name (_("Unable to fetch vFP/SIMD registers."));
+	perror_with_name (_("Unable to fetch vFP/SIMD registers"));
 
       for (regno = AARCH64_V0_REGNUM; regno <= AARCH64_V31_REGNUM; regno++)
 	regcache->raw_supply (regno, &regs.vregs[regno - AARCH64_V0_REGNUM]);
@@ -343,7 +261,7 @@ store_fpregs_to_thread (const struct reg
 
   /* Make sure REGS can hold all VFP registers contents on both aarch64
      and arm.  */
-  gdb_static_assert (sizeof regs >= ARM_VFP3_REGS_SIZE);
+  static_assert (sizeof regs >= ARM_VFP3_REGS_SIZE);
   tid = regcache->ptid ().lwp ();
 
   iovec.iov_base = &regs;
@@ -354,7 +272,7 @@ store_fpregs_to_thread (const struct reg
 
       ret = ptrace (PTRACE_GETREGSET, tid, NT_ARM_VFP, &iovec);
       if (ret < 0)
-	perror_with_name (_("Unable to fetch VFP registers."));
+	perror_with_name (_("Unable to fetch VFP registers"));
 
       aarch32_vfp_regcache_collect (regcache, (gdb_byte *) &regs, 32);
     }
@@ -366,7 +284,7 @@ store_fpregs_to_thread (const struct reg
 
       ret = ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec);
       if (ret < 0)
-	perror_with_name (_("Unable to fetch FP/SIMD registers."));
+	perror_with_name (_("Unable to fetch FP/SIMD registers"));
 
       for (regno = AARCH64_V0_REGNUM; regno <= AARCH64_V31_REGNUM; regno++)
 	if (REG_VALID == regcache->get_register_status (regno))
@@ -383,55 +301,107 @@ store_fpregs_to_thread (const struct reg
     {
       ret = ptrace (PTRACE_SETREGSET, tid, NT_ARM_VFP, &iovec);
       if (ret < 0)
-	perror_with_name (_("Unable to store VFP registers."));
+	perror_with_name (_("Unable to store VFP registers"));
     }
   else
     {
       ret = ptrace (PTRACE_SETREGSET, tid, NT_FPREGSET, &iovec);
       if (ret < 0)
-	perror_with_name (_("Unable to store FP/SIMD registers."));
+	perror_with_name (_("Unable to store FP/SIMD registers"));
     }
 }
 
-/* Fill GDB's register array with the sve register values
-   from the current thread.  */
+/* Fill GDB's REGCACHE with the valid SVE register values from the thread
+   associated with REGCACHE.
+
+   This function handles reading data from SVE or SSVE states, depending
+   on which state is active at the moment.  */
 
 static void
 fetch_sveregs_from_thread (struct regcache *regcache)
 {
-  std::unique_ptr<gdb_byte[]> base
-    = aarch64_sve_get_sveregs (regcache->ptid ().lwp ());
-  aarch64_sve_regs_copy_to_reg_buf (regcache, base.get ());
+  /* Fetch SVE state from the thread and copy it into the register cache.  */
+  aarch64_sve_regs_copy_to_reg_buf (regcache->ptid ().lwp (), regcache);
 }
 
-/* Store to the current thread the valid sve register
-   values in the GDB's register array.  */
+/* Store the valid SVE register values from GDB's REGCACHE to the thread
+   associated with REGCACHE.
+
+   This function handles writing data to SVE or SSVE states, depending
+   on which state is active at the moment.  */
 
 static void
 store_sveregs_to_thread (struct regcache *regcache)
 {
-  int ret;
-  struct iovec iovec;
-  int tid = regcache->ptid ().lwp ();
+  /* Fetch SVE state from the register cache and update the thread TID with
+     it.  */
+  aarch64_sve_regs_copy_from_reg_buf (regcache->ptid ().lwp (), regcache);
+}
 
-  /* First store vector length to the thread.  This is done first to ensure the
-     ptrace buffers read from the kernel are the correct size.  */
-  if (!aarch64_sve_set_vq (tid, regcache))
-    perror_with_name (_("Unable to set VG register."));
-
-  /* Obtain a dump of SVE registers from ptrace.  */
-  std::unique_ptr<gdb_byte[]> base = aarch64_sve_get_sveregs (tid);
-
-  /* Overwrite with regcache state.  */
-  aarch64_sve_regs_copy_from_reg_buf (regcache, base.get ());
-
-  /* Write back to the kernel.  */
-  iovec.iov_base = base.get ();
-  iovec.iov_len = ((struct user_sve_header *) base.get ())->size;
-  ret = ptrace (PTRACE_SETREGSET, tid, NT_ARM_SVE, &iovec);
+/* Fill GDB's REGCACHE with the ZA register set contents from the
+   thread associated with REGCACHE.  If there is no active ZA register state,
+   make the ZA register contents zero.  */
 
-  if (ret < 0)
-    perror_with_name (_("Unable to store sve registers"));
+static void
+fetch_za_from_thread (struct regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  /* Read ZA state from the thread to the register cache.  */
+  aarch64_za_regs_copy_to_reg_buf (regcache->ptid ().lwp (),
+				   regcache,
+				   tdep->sme_za_regnum,
+				   tdep->sme_svg_regnum,
+				   tdep->sme_svcr_regnum);
+}
+
+/* Store the NT_ARM_ZA register set contents from GDB's REGCACHE to the thread
+   associated with REGCACHE.  */
+
+static void
+store_za_to_thread (struct regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  /* Write ZA state from the register cache to the thread.  */
+  aarch64_za_regs_copy_from_reg_buf (regcache->ptid ().lwp (),
+				     regcache,
+				     tdep->sme_za_regnum,
+				     tdep->sme_svg_regnum,
+				     tdep->sme_svcr_regnum);
+}
+
+/* Fill GDB's REGCACHE with the ZT register set contents from the
+   thread associated with REGCACHE.  If there is no active ZA register state,
+   make the ZT register contents zero.  */
+
+static void
+fetch_zt_from_thread (struct regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  /* Read ZT state from the thread to the register cache.  */
+  aarch64_zt_regs_copy_to_reg_buf (regcache->ptid ().lwp (),
+				   regcache,
+				   tdep->sme2_zt0_regnum);
+}
+
+/* Store the NT_ARM_ZT register set contents from GDB's REGCACHE to the
+   thread associated with REGCACHE.  */
+
+static void
+store_zt_to_thread (struct regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  /* Write ZT state from the register cache to the thread.  */
+  aarch64_zt_regs_copy_from_reg_buf (regcache->ptid ().lwp (),
+				     regcache,
+				     tdep->sme2_zt0_regnum);
 }
 
 /* Fill GDB's register array with the pointer authentication mask values from
@@ -440,7 +410,8 @@ store_sveregs_to_thread (struct regcache
 static void
 fetch_pauth_masks_from_thread (struct regcache *regcache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
   int ret;
   struct iovec iovec;
   uint64_t pauth_regset[2] = {0, 0};
@@ -451,7 +422,7 @@ fetch_pauth_masks_from_thread (struct re
 
   ret = ptrace (PTRACE_GETREGSET, tid, NT_ARM_PAC_MASK, &iovec);
   if (ret != 0)
-    perror_with_name (_("unable to fetch pauth registers."));
+    perror_with_name (_("unable to fetch pauth registers"));
 
   regcache->raw_supply (AARCH64_PAUTH_DMASK_REGNUM (tdep->pauth_reg_base),
 			&pauth_regset[0]);
@@ -459,62 +430,399 @@ fetch_pauth_masks_from_thread (struct re
 			&pauth_regset[1]);
 }
 
-/* Implement the "fetch_registers" target_ops method.  */
+/* Fill GDB's register array with the MTE register values from
+   the current thread.  */
 
-void
-aarch64_linux_nat_target::fetch_registers (struct regcache *regcache,
-					   int regno)
+static void
+fetch_mteregs_from_thread (struct regcache *regcache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+  int regno = tdep->mte_reg_base;
+
+  gdb_assert (regno != -1);
+
+  uint64_t tag_ctl = 0;
+  struct iovec iovec;
+
+  iovec.iov_base = &tag_ctl;
+  iovec.iov_len = sizeof (tag_ctl);
+
+  int tid = get_ptrace_pid (regcache->ptid ());
+  if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_TAGGED_ADDR_CTRL, &iovec) != 0)
+      perror_with_name (_("unable to fetch MTE registers"));
 
+  regcache->raw_supply (regno, &tag_ctl);
+}
+
+/* Store to the current thread the valid MTE register set in the GDB's
+   register array.  */
+
+static void
+store_mteregs_to_thread (struct regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+  int regno = tdep->mte_reg_base;
+
+  gdb_assert (regno != -1);
+
+  uint64_t tag_ctl = 0;
+
+  if (REG_VALID != regcache->get_register_status (regno))
+    return;
+
+  regcache->raw_collect (regno, (char *) &tag_ctl);
+
+  struct iovec iovec;
+
+  iovec.iov_base = &tag_ctl;
+  iovec.iov_len = sizeof (tag_ctl);
+
+  int tid = get_ptrace_pid (regcache->ptid ());
+  if (ptrace (PTRACE_SETREGSET, tid, NT_ARM_TAGGED_ADDR_CTRL, &iovec) != 0)
+    perror_with_name (_("unable to store MTE registers"));
+}
+
+/* Fill GDB's register array with the TLS register values from
+   the current thread.  */
+
+static void
+fetch_tlsregs_from_thread (struct regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+  int regno = tdep->tls_regnum_base;
+
+  gdb_assert (regno != -1);
+  gdb_assert (tdep->tls_register_count > 0);
+
+  std::vector<uint64_t> tpidrs (tdep->tls_register_count);
+
+  struct iovec iovec;
+  iovec.iov_base = tpidrs.data ();
+  iovec.iov_len = tpidrs.size () * sizeof (tpidrs[0]);
+
+  int tid = get_ptrace_pid (regcache->ptid ());
+  if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_TLS, &iovec) != 0)
+      perror_with_name (_("unable to fetch TLS registers"));
+
+  for (int i = 0; i < tdep->tls_register_count; i++)
+    regcache->raw_supply (regno + i, &tpidrs[i]);
+}
+
+/* Store to the current thread the valid TLS register set in GDB's
+   register array.  */
+
+static void
+store_tlsregs_to_thread (struct regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+  int regno = tdep->tls_regnum_base;
+
+  gdb_assert (regno != -1);
+  gdb_assert (tdep->tls_register_count > 0);
+
+  std::vector<uint64_t> tpidrs (tdep->tls_register_count);
+
+  for (int i = 0; i < tdep->tls_register_count; i++)
+    {
+      if (REG_VALID != regcache->get_register_status (regno + i))
+	continue;
+
+      regcache->raw_collect (regno + i, (char *) &tpidrs[i]);
+    }
+
+  struct iovec iovec;
+  iovec.iov_base = tpidrs.data ();
+  iovec.iov_len = tpidrs.size () * sizeof (tpidrs[0]);
+
+  int tid = get_ptrace_pid (regcache->ptid ());
+  if (ptrace (PTRACE_SETREGSET, tid, NT_ARM_TLS, &iovec) != 0)
+    perror_with_name (_("unable to store TLS register"));
+}
+
+/* Fill GDB's register array with the GCS register values from
+   the current thread.  */
+
+static void
+fetch_gcsregs_from_thread (regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  gdb_assert (tdep->gcs_reg_base != -1);
+  gdb_assert (tdep->gcs_linux_reg_base != -1);
+
+  user_gcs user_gcs;
+  iovec iovec;
+
+  iovec.iov_base = &user_gcs;
+  iovec.iov_len = sizeof (user_gcs);
+
+  int tid = get_ptrace_pid (regcache->ptid ());
+  if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_GCS, &iovec) != 0)
+    perror_with_name (_("Unable to fetch GCS registers"));
+
+  regcache->raw_supply (tdep->gcs_reg_base, &user_gcs.gcspr_el0);
+  regcache->raw_supply (tdep->gcs_linux_reg_base, &user_gcs.features_enabled);
+  regcache->raw_supply (tdep->gcs_linux_reg_base + 1,
+			&user_gcs.features_locked);
+}
+
+/* Store to the current thread the valid GCS register set in the GDB's
+   register array.  */
+
+static void
+store_gcsregs_to_thread (regcache *regcache)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  gdb_assert (tdep->gcs_reg_base != -1);
+  gdb_assert (tdep->gcs_linux_reg_base != -1);
+
+  if (REG_VALID != regcache->get_register_status (tdep->gcs_reg_base)
+      || REG_VALID != regcache->get_register_status (tdep->gcs_linux_reg_base)
+      || REG_VALID
+	   != regcache->get_register_status (tdep->gcs_linux_reg_base + 1))
+    return;
+
+  user_gcs user_gcs;
+  regcache->raw_collect (tdep->gcs_reg_base, &user_gcs.gcspr_el0);
+  regcache->raw_collect (tdep->gcs_linux_reg_base, &user_gcs.features_enabled);
+  regcache->raw_collect (tdep->gcs_linux_reg_base + 1,
+			 &user_gcs.features_locked);
+
+  iovec iovec;
+  iovec.iov_base = &user_gcs;
+  iovec.iov_len = sizeof (user_gcs);
+
+  int tid = get_ptrace_pid (regcache->ptid ());
+  if (ptrace (PTRACE_SETREGSET, tid, NT_ARM_GCS, &iovec) != 0)
+    perror_with_name (_("Unable to store GCS registers"));
+}
+
+/* The AArch64 version of the "fetch_registers" target_ops method.  Fetch
+   REGNO from the target and place the result into REGCACHE.  */
+
+static void
+aarch64_fetch_registers (struct regcache *regcache, int regno)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  /* Do we need to fetch all registers?  */
   if (regno == -1)
     {
       fetch_gregs_from_thread (regcache);
-      if (tdep->has_sve ())
+
+      /* We attempt to fetch SVE registers if there is support for either
+	 SVE or SME (due to the SSVE state of SME).  */
+      if (tdep->has_sve () || tdep->has_sme ())
 	fetch_sveregs_from_thread (regcache);
       else
 	fetch_fpregs_from_thread (regcache);
 
       if (tdep->has_pauth ())
 	fetch_pauth_masks_from_thread (regcache);
+
+      if (tdep->has_mte ())
+	fetch_mteregs_from_thread (regcache);
+
+      if (tdep->has_tls ())
+	fetch_tlsregs_from_thread (regcache);
+
+      if (tdep->has_sme ())
+	fetch_za_from_thread (regcache);
+
+      if (tdep->has_sme2 ())
+	fetch_zt_from_thread (regcache);
+
+      if (tdep->has_gcs_linux ())
+	fetch_gcsregs_from_thread (regcache);
     }
+  /* General purpose register?  */
   else if (regno < AARCH64_V0_REGNUM)
     fetch_gregs_from_thread (regcache);
-  else if (tdep->has_sve ())
+  /* SVE register?  */
+  else if ((tdep->has_sve () || tdep->has_sme ())
+	   && regno <= AARCH64_SVE_VG_REGNUM)
     fetch_sveregs_from_thread (regcache);
-  else
+  /* FPSIMD register?  */
+  else if (regno <= AARCH64_FPCR_REGNUM)
     fetch_fpregs_from_thread (regcache);
+  /* PAuth register?  */
+  else if (tdep->has_pauth ()
+	   && (regno == AARCH64_PAUTH_DMASK_REGNUM (tdep->pauth_reg_base)
+	       || regno == AARCH64_PAUTH_CMASK_REGNUM (tdep->pauth_reg_base)))
+    fetch_pauth_masks_from_thread (regcache);
+  /* SME register?  */
+  else if (tdep->has_sme () && regno >= tdep->sme_reg_base
+	   && regno < tdep->sme_reg_base + 3)
+    fetch_za_from_thread (regcache);
+  /* SME2 register?  */
+  else if (tdep->has_sme2 () && regno == tdep->sme2_zt0_regnum)
+    fetch_zt_from_thread (regcache);
+  /* MTE register?  */
+  else if (tdep->has_mte ()
+	   && (regno == tdep->mte_reg_base))
+    fetch_mteregs_from_thread (regcache);
+  /* TLS register?  */
+  else if (tdep->has_tls ()
+	   && regno >= tdep->tls_regnum_base
+	   && regno < tdep->tls_regnum_base + tdep->tls_register_count)
+    fetch_tlsregs_from_thread (regcache);
+  /* GCS register?  */
+  else if (tdep->has_gcs_linux ()
+	   && (regno == tdep->gcs_reg_base || regno == tdep->gcs_linux_reg_base
+	       || regno == tdep->gcs_linux_reg_base + 1))
+    fetch_gcsregs_from_thread (regcache);
+}
+
+/* A version of the "fetch_registers" target_ops method used when running
+   32-bit ARM code on an AArch64 target.  Fetch REGNO from the target and
+   place the result into REGCACHE.  */
 
-  if (tdep->has_pauth ())
+static void
+aarch32_fetch_registers (struct regcache *regcache, int regno)
+{
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (regcache->arch ());
+
+  if (regno == -1)
     {
-      if (regno == AARCH64_PAUTH_DMASK_REGNUM (tdep->pauth_reg_base)
-	  || regno == AARCH64_PAUTH_CMASK_REGNUM (tdep->pauth_reg_base))
-	fetch_pauth_masks_from_thread (regcache);
+      fetch_gregs_from_thread (regcache);
+      if (tdep->vfp_register_count > 0)
+	fetch_fpregs_from_thread (regcache);
     }
+  else if (regno < ARM_F0_REGNUM || regno == ARM_PS_REGNUM)
+    fetch_gregs_from_thread (regcache);
+  else if (tdep->vfp_register_count > 0
+	   && regno >= ARM_D0_REGNUM
+	   && (regno < ARM_D0_REGNUM + tdep->vfp_register_count
+	       || regno == ARM_FPSCR_REGNUM))
+    fetch_fpregs_from_thread (regcache);
 }
 
-/* Implement the "store_registers" target_ops method.  */
+/* Implement the "fetch_registers" target_ops method.  */
 
 void
-aarch64_linux_nat_target::store_registers (struct regcache *regcache,
+aarch64_linux_nat_target::fetch_registers (struct regcache *regcache,
 					   int regno)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  if (gdbarch_bfd_arch_info (regcache->arch ())->bits_per_word == 32)
+    aarch32_fetch_registers (regcache, regno);
+  else
+    aarch64_fetch_registers (regcache, regno);
+}
+
+/* The AArch64 version of the "store_registers" target_ops method.  Copy
+   the value of register REGNO from REGCACHE into the the target.  */
+
+static void
+aarch64_store_registers (struct regcache *regcache, int regno)
+{
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
 
+  /* Do we need to store all registers?  */
   if (regno == -1)
     {
       store_gregs_to_thread (regcache);
-      if (tdep->has_sve ())
+
+      /* We attempt to store SVE registers if there is support for either
+	 SVE or SME (due to the SSVE state of SME).  */
+      if (tdep->has_sve () || tdep->has_sme ())
 	store_sveregs_to_thread (regcache);
       else
 	store_fpregs_to_thread (regcache);
+
+      if (tdep->has_mte ())
+	store_mteregs_to_thread (regcache);
+
+      if (tdep->has_tls ())
+	store_tlsregs_to_thread (regcache);
+
+      if (tdep->has_sme ())
+	store_za_to_thread (regcache);
+
+      if (tdep->has_sme2 ())
+	store_zt_to_thread (regcache);
+
+      if (tdep->has_gcs_linux ())
+	store_gcsregs_to_thread (regcache);
     }
+  /* General purpose register?  */
   else if (regno < AARCH64_V0_REGNUM)
     store_gregs_to_thread (regcache);
-  else if (tdep->has_sve ())
+  /* SVE register?  */
+  else if ((tdep->has_sve () || tdep->has_sme ())
+	   && regno <= AARCH64_SVE_VG_REGNUM)
     store_sveregs_to_thread (regcache);
-  else
+  /* FPSIMD register?  */
+  else if (regno <= AARCH64_FPCR_REGNUM)
     store_fpregs_to_thread (regcache);
+  /* SME register?  */
+  else if (tdep->has_sme () && regno >= tdep->sme_reg_base
+	   && regno < tdep->sme_reg_base + 3)
+    store_za_to_thread (regcache);
+  else if (tdep->has_sme2 () && regno == tdep->sme2_zt0_regnum)
+    store_zt_to_thread (regcache);
+  /* MTE register?  */
+  else if (tdep->has_mte ()
+	   && (regno == tdep->mte_reg_base))
+    store_mteregs_to_thread (regcache);
+  /* TLS register?  */
+  else if (tdep->has_tls ()
+	   && regno >= tdep->tls_regnum_base
+	   && regno < tdep->tls_regnum_base + tdep->tls_register_count)
+    store_tlsregs_to_thread (regcache);
+  /* GCS register?  */
+  else if (tdep->has_gcs_linux ()
+	   && (regno == tdep->gcs_reg_base || regno == tdep->gcs_linux_reg_base
+	       || regno == tdep->gcs_linux_reg_base + 1))
+    store_gcsregs_to_thread (regcache);
+
+  /* PAuth registers are read-only.  */
+}
+
+/* A version of the "store_registers" target_ops method used when running
+   32-bit ARM code on an AArch64 target.  Copy the value of register REGNO
+   from REGCACHE into the the target.  */
+
+static void
+aarch32_store_registers (struct regcache *regcache, int regno)
+{
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (regcache->arch ());
+
+  if (regno == -1)
+    {
+      store_gregs_to_thread (regcache);
+      if (tdep->vfp_register_count > 0)
+	store_fpregs_to_thread (regcache);
+    }
+  else if (regno < ARM_F0_REGNUM || regno == ARM_PS_REGNUM)
+    store_gregs_to_thread (regcache);
+  else if (tdep->vfp_register_count > 0
+	   && regno >= ARM_D0_REGNUM
+	   && (regno < ARM_D0_REGNUM + tdep->vfp_register_count
+	       || regno == ARM_FPSCR_REGNUM))
+    store_fpregs_to_thread (regcache);
+}
+
+/* Implement the "store_registers" target_ops method.  */
+
+void
+aarch64_linux_nat_target::store_registers (struct regcache *regcache,
+					   int regno)
+{
+  if (gdbarch_bfd_arch_info (regcache->arch ())->bits_per_word == 32)
+    aarch32_store_registers (regcache, regno);
+  else
+    aarch64_store_registers (regcache, regno);
 }
 
 /* Fill register REGNO (if it is a general-purpose register) in
@@ -600,36 +908,25 @@ ps_err_e
 ps_get_thread_area (struct ps_prochandle *ph,
 		    lwpid_t lwpid, int idx, void **base)
 {
-  int is_64bit_p
-    = (gdbarch_bfd_arch_info (target_gdbarch ())->bits_per_word == 64);
+  gdbarch *arch = current_inferior ()->arch ();
+  int is_64bit_p = (gdbarch_bfd_arch_info (arch)->bits_per_word == 64);
 
   return aarch64_ps_get_thread_area (ph, lwpid, idx, base, is_64bit_p);
 }
 
 
-/* Implement the "post_startup_inferior" target_ops method.  */
+/* Implement the "low_init_process" target_ops method.  */
 
 void
-aarch64_linux_nat_target::post_startup_inferior (ptid_t ptid)
-{
-  low_forget_process (ptid.pid ());
-  aarch64_linux_get_debug_reg_capacity (ptid.pid ());
-  linux_nat_target::post_startup_inferior (ptid);
-}
-
-/* Implement the "post_attach" target_ops method.  */
-
-void
-aarch64_linux_nat_target::post_attach (int pid)
+aarch64_linux_nat_target::low_init_process (pid_t pid)
 {
   low_forget_process (pid);
-  /* Set the hardware debug register capacity.  If
-     aarch64_linux_get_debug_reg_capacity is not called
-     (as it is in aarch64_linux_child_post_startup_inferior) then
-     software watchpoints will be used instead of hardware
-     watchpoints when attaching to a target.  */
+  /* Set the hardware debug register capacity.  This requires the process to be
+     ptrace-stopped, otherwise detection will fail and software watchpoints will
+     be used instead of hardware.  If we allow this to be done lazily, we
+     cannot guarantee that it's called when the process is ptrace-stopped, so
+     do it now.  */
   aarch64_linux_get_debug_reg_capacity (pid);
-  linux_nat_target::post_attach (pid);
 }
 
 /* Implement the "read_description" target_ops method.  */
@@ -641,19 +938,38 @@ aarch64_linux_nat_target::read_descripti
   gdb_byte regbuf[ARM_VFP3_REGS_SIZE];
   struct iovec iovec;
 
-  tid = inferior_ptid.lwp ();
+  if (inferior_ptid == null_ptid)
+    return this->beneath ()->read_description ();
+
+  tid = inferior_ptid.pid ();
 
   iovec.iov_base = regbuf;
   iovec.iov_len = ARM_VFP3_REGS_SIZE;
 
   ret = ptrace (PTRACE_GETREGSET, tid, NT_ARM_VFP, &iovec);
   if (ret == 0)
-    return aarch32_read_description ();
+    return aarch32_read_description (false);
+
+  CORE_ADDR hwcap = linux_get_hwcap ();
+  CORE_ADDR hwcap2 = linux_get_hwcap2 ();
 
-  CORE_ADDR hwcap = linux_get_hwcap (this);
+  aarch64_features features;
+  /* SVE/SSVE check.  Reading VQ may return either the regular vector length
+     or the streaming vector length, depending on whether streaming mode is
+     active or not.  */
+  features.vq = aarch64_sve_get_vq (tid);
+  features.pauth = hwcap & AARCH64_HWCAP_PACA;
+  features.gcs = features.gcs_linux = hwcap & HWCAP_GCS;
+  features.mte = hwcap2 & HWCAP2_MTE;
+  features.tls = aarch64_tls_register_count (tid);
+  /* SME feature check.  */
+  features.svq = aarch64_za_get_svq (tid);
+
+  /* Check for SME2 support.  */
+  if ((hwcap2 & HWCAP2_SME2) || (hwcap2 & HWCAP2_SME2P1))
+    features.sme2 = supports_zt_registers (tid);
 
-  return aarch64_read_description (aarch64_sve_get_vq (tid),
-				   hwcap & AARCH64_HWCAP_PACA);
+  return aarch64_read_description (features);
 }
 
 /* Convert a native/host siginfo object, into/from the siginfo in the
@@ -685,188 +1001,12 @@ aarch64_linux_nat_target::low_siginfo_fi
   return false;
 }
 
-/* Returns the number of hardware watchpoints of type TYPE that we can
-   set.  Value is positive if we can set CNT watchpoints, zero if
-   setting watchpoints of type TYPE is not supported, and negative if
-   CNT is more than the maximum number of watchpoints of type TYPE
-   that we can support.  TYPE is one of bp_hardware_watchpoint,
-   bp_read_watchpoint, bp_write_watchpoint, or bp_hardware_breakpoint.
-   CNT is the number of such watchpoints used so far (including this
-   one).  OTHERTYPE is non-zero if other types of watchpoints are
-   currently enabled.  */
-
-int
-aarch64_linux_nat_target::can_use_hw_breakpoint (enum bptype type,
-						 int cnt, int othertype)
-{
-  if (type == bp_hardware_watchpoint || type == bp_read_watchpoint
-      || type == bp_access_watchpoint || type == bp_watchpoint)
-    {
-      if (aarch64_num_wp_regs == 0)
-	return 0;
-    }
-  else if (type == bp_hardware_breakpoint)
-    {
-      if (aarch64_num_bp_regs == 0)
-	return 0;
-    }
-  else
-    gdb_assert_not_reached ("unexpected breakpoint type");
-
-  /* We always return 1 here because we don't have enough information
-     about possible overlap of addresses that they want to watch.  As an
-     extreme example, consider the case where all the watchpoints watch
-     the same address and the same region length: then we can handle a
-     virtually unlimited number of watchpoints, due to debug register
-     sharing implemented via reference counts.  */
-  return 1;
-}
-
-/* Insert a hardware-assisted breakpoint at BP_TGT->reqstd_address.
-   Return 0 on success, -1 on failure.  */
-
-int
-aarch64_linux_nat_target::insert_hw_breakpoint (struct gdbarch *gdbarch,
-						struct bp_target_info *bp_tgt)
-{
-  int ret;
-  CORE_ADDR addr = bp_tgt->placed_address = bp_tgt->reqstd_address;
-  int len;
-  const enum target_hw_bp_type type = hw_execute;
-  struct aarch64_debug_reg_state *state
-    = aarch64_get_debug_reg_state (inferior_ptid.pid ());
-
-  gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
-
-  if (show_debug_regs)
-    fprintf_unfiltered
-      (gdb_stdlog,
-       "insert_hw_breakpoint on entry (addr=0x%08lx, len=%d))\n",
-       (unsigned long) addr, len);
-
-  ret = aarch64_handle_breakpoint (type, addr, len, 1 /* is_insert */, state);
-
-  if (show_debug_regs)
-    {
-      aarch64_show_debug_reg_state (state,
-				    "insert_hw_breakpoint", addr, len, type);
-    }
-
-  return ret;
-}
-
-/* Remove a hardware-assisted breakpoint at BP_TGT->placed_address.
-   Return 0 on success, -1 on failure.  */
-
-int
-aarch64_linux_nat_target::remove_hw_breakpoint (struct gdbarch *gdbarch,
-						struct bp_target_info *bp_tgt)
-{
-  int ret;
-  CORE_ADDR addr = bp_tgt->placed_address;
-  int len = 4;
-  const enum target_hw_bp_type type = hw_execute;
-  struct aarch64_debug_reg_state *state
-    = aarch64_get_debug_reg_state (inferior_ptid.pid ());
-
-  gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
-
-  if (show_debug_regs)
-    fprintf_unfiltered
-      (gdb_stdlog, "remove_hw_breakpoint on entry (addr=0x%08lx, len=%d))\n",
-       (unsigned long) addr, len);
-
-  ret = aarch64_handle_breakpoint (type, addr, len, 0 /* is_insert */, state);
-
-  if (show_debug_regs)
-    {
-      aarch64_show_debug_reg_state (state,
-				    "remove_hw_watchpoint", addr, len, type);
-    }
-
-  return ret;
-}
-
-/* Implement the "insert_watchpoint" target_ops method.
-
-   Insert a watchpoint to watch a memory region which starts at
-   address ADDR and whose length is LEN bytes.  Watch memory accesses
-   of the type TYPE.  Return 0 on success, -1 on failure.  */
-
-int
-aarch64_linux_nat_target::insert_watchpoint (CORE_ADDR addr, int len,
-					     enum target_hw_bp_type type,
-					     struct expression *cond)
-{
-  int ret;
-  struct aarch64_debug_reg_state *state
-    = aarch64_get_debug_reg_state (inferior_ptid.pid ());
-
-  if (show_debug_regs)
-    fprintf_unfiltered (gdb_stdlog,
-			"insert_watchpoint on entry (addr=0x%08lx, len=%d)\n",
-			(unsigned long) addr, len);
-
-  gdb_assert (type != hw_execute);
-
-  ret = aarch64_handle_watchpoint (type, addr, len, 1 /* is_insert */, state);
-
-  if (show_debug_regs)
-    {
-      aarch64_show_debug_reg_state (state,
-				    "insert_watchpoint", addr, len, type);
-    }
-
-  return ret;
-}
-
-/* Implement the "remove_watchpoint" target_ops method.
-   Remove a watchpoint that watched the memory region which starts at
-   address ADDR, whose length is LEN bytes, and for accesses of the
-   type TYPE.  Return 0 on success, -1 on failure.  */
-
-int
-aarch64_linux_nat_target::remove_watchpoint (CORE_ADDR addr, int len,
-					     enum target_hw_bp_type type,
-					     struct expression *cond)
-{
-  int ret;
-  struct aarch64_debug_reg_state *state
-    = aarch64_get_debug_reg_state (inferior_ptid.pid ());
-
-  if (show_debug_regs)
-    fprintf_unfiltered (gdb_stdlog,
-			"remove_watchpoint on entry (addr=0x%08lx, len=%d)\n",
-			(unsigned long) addr, len);
-
-  gdb_assert (type != hw_execute);
-
-  ret = aarch64_handle_watchpoint (type, addr, len, 0 /* is_insert */, state);
-
-  if (show_debug_regs)
-    {
-      aarch64_show_debug_reg_state (state,
-				    "remove_watchpoint", addr, len, type);
-    }
-
-  return ret;
-}
-
-/* Implement the "region_ok_for_hw_watchpoint" target_ops method.  */
-
-int
-aarch64_linux_nat_target::region_ok_for_hw_watchpoint (CORE_ADDR addr, int len)
-{
-  return aarch64_linux_region_ok_for_watchpoint (addr, len);
-}
-
 /* Implement the "stopped_data_address" target_ops method.  */
 
 bool
 aarch64_linux_nat_target::stopped_data_address (CORE_ADDR *addr_p)
 {
   siginfo_t siginfo;
-  int i;
   struct aarch64_debug_reg_state *state;
 
   if (!linux_nat_get_siginfo (inferior_ptid, &siginfo))
@@ -877,47 +1017,16 @@ aarch64_linux_nat_target::stopped_data_a
       || (siginfo.si_code & 0xffff) != TRAP_HWBKPT)
     return false;
 
+  /* Make sure to ignore the top byte, otherwise we may not recognize a
+     hardware watchpoint hit.  The stopped data addresses coming from the
+     kernel can potentially be tagged addresses.  */
+  struct gdbarch *gdbarch = thread_architecture (inferior_ptid);
+  const CORE_ADDR addr_trap
+    = aarch64_remove_non_address_bits (gdbarch, (CORE_ADDR) siginfo.si_addr);
+
   /* Check if the address matches any watched address.  */
   state = aarch64_get_debug_reg_state (inferior_ptid.pid ());
-  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.  */
-	  *addr_p = addr_orig;
-	  return true;
-	}
-    }
-
-  return false;
+  return aarch64_stopped_data_address (state, addr_trap, addr_p);
 }
 
 /* Implement the "stopped_by_watchpoint" target_ops method.  */
@@ -925,18 +1034,7 @@ aarch64_linux_nat_target::stopped_data_a
 bool
 aarch64_linux_nat_target::stopped_by_watchpoint ()
 {
-  CORE_ADDR addr;
-
-  return stopped_data_address (&addr);
-}
-
-/* Implement the "watchpoint_addr_within_range" target_ops method.  */
-
-bool
-aarch64_linux_nat_target::watchpoint_addr_within_range (CORE_ADDR addr,
-							CORE_ADDR start, int length)
-{
-  return start <= addr && start + length - 1 >= addr;
+  return stopped_data_address (nullptr);
 }
 
 /* Implement the "can_do_single_step" target_ops method.  */
@@ -947,59 +1045,111 @@ aarch64_linux_nat_target::can_do_single_
   return 1;
 }
 
-/* Implement the "thread_architecture" target_ops method.  */
+/* Implement the "thread_architecture" target_ops method.
+
+   Returns the gdbarch for the thread identified by PTID.  If the thread in
+   question is a 32-bit ARM thread, then the architecture returned will be
+   that of the process itself.
+
+   If the thread is an AArch64 thread then we need to check the current
+   vector length; if the vector length has changed then we need to lookup a
+   new gdbarch that matches the new vector length.  */
 
 struct gdbarch *
 aarch64_linux_nat_target::thread_architecture (ptid_t ptid)
 {
-  /* Return the gdbarch for the current thread.  If the vector length has
-     changed since the last time this was called, then do a further lookup.  */
+  /* Find the current gdbarch the same way as process_stratum_target.  */
+  inferior *inf = find_inferior_ptid (this, ptid);
+  gdb_assert (inf != NULL);
 
+  /* If this is a 32-bit architecture, then this is ARM, not AArch64.
+     There's no SVE vectors here, so just return the inferior
+     architecture.  */
+  if (gdbarch_bfd_arch_info (inf->arch ())->bits_per_word == 32)
+    return inf->arch ();
+
+  /* Only return the inferior's gdbarch if both vq and svq match the ones in
+     the tdep.  */
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (inf->arch ());
   uint64_t vq = aarch64_sve_get_vq (ptid.lwp ());
+  uint64_t svq = aarch64_za_get_svq (ptid.lwp ());
+  if (vq == tdep->vq && svq == tdep->sme_svq)
+    return inf->arch ();
 
-  /* 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);
-  gdb_assert (inf != NULL);
-  if (vq == gdbarch_tdep (inf->gdbarch)->vq)
-    return inf->gdbarch;
-
-  /* We reach here if the vector length for the thread is different from its
+  /* We reach here if any vector length for the thread is different from its
      value at process start.  Lookup gdbarch via info (potentially creating a
-     new one), stashing the vector length inside id.  Use -1 for when SVE
-     unavailable, to distinguish from an unset value of 0.  */
+     new one) by using a target description that corresponds to the new vq/svq
+     value and the current architecture features.  */
+
+  const struct target_desc *tdesc = gdbarch_target_desc (inf->arch ());
+  aarch64_features features = aarch64_features_from_target_desc (tdesc);
+  features.vq = vq;
+  features.svq = svq;
+
+  /* Check for the SME2 feature.  */
+  features.sme2 = supports_zt_registers (ptid.lwp ());
+
   struct gdbarch_info info;
-  gdbarch_info_init (&info);
-  info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
-  info.id = (int *) (vq == 0 ? -1 : vq);
+  info.bfd_arch_info = bfd_lookup_arch (bfd_arch_aarch64, bfd_mach_aarch64);
+  info.target_desc = aarch64_read_description (features);
   return gdbarch_find_by_info (info);
 }
 
-/* Define AArch64 maintenance commands.  */
+/* Implement the "supports_memory_tagging" target_ops method.  */
 
-static void
-add_show_debug_regs_command (void)
+bool
+aarch64_linux_nat_target::supports_memory_tagging ()
 {
-  /* A maintenance command to enable printing the internal DRi mirror
-     variables.  */
-  add_setshow_boolean_cmd ("show-debug-regs", class_maintenance,
-			   &show_debug_regs, _("\
-Set whether to show variables that mirror the AArch64 debug registers."), _("\
-Show whether to show variables that mirror the AArch64 debug registers."), _("\
-Use \"on\" to enable, \"off\" to disable.\n\
-If enabled, the debug registers values are shown when GDB inserts\n\
-or removes a hardware breakpoint or watchpoint, and when the inferior\n\
-triggers a breakpoint or watchpoint."),
-			   NULL,
-			   NULL,
-			   &maintenance_set_cmdlist,
-			   &maintenance_show_cmdlist);
+  return (linux_get_hwcap2 () & HWCAP2_MTE) != 0;
 }
 
-void
-_initialize_aarch64_linux_nat (void)
+/* Implement the "fetch_memtags" target_ops method.  */
+
+bool
+aarch64_linux_nat_target::fetch_memtags (CORE_ADDR address, size_t len,
+					 gdb::byte_vector &tags, int type)
+{
+  int tid = get_ptrace_pid (inferior_ptid);
+
+  /* Allocation tags?  */
+  if (type == static_cast<int> (aarch64_memtag_type::mte_allocation))
+    return aarch64_mte_fetch_memtags (tid, address, len, tags);
+
+  return false;
+}
+
+/* Implement the "store_memtags" target_ops method.  */
+
+bool
+aarch64_linux_nat_target::store_memtags (CORE_ADDR address, size_t len,
+					 const gdb::byte_vector &tags, int type)
+{
+  int tid = get_ptrace_pid (inferior_ptid);
+
+  /* Allocation tags?  */
+  if (type == static_cast<int> (aarch64_memtag_type::mte_allocation))
+    return aarch64_mte_store_memtags (tid, address, len, tags);
+
+  return false;
+}
+
+bool
+aarch64_linux_nat_target::is_address_tagged (gdbarch *gdbarch, CORE_ADDR address)
+{
+  /* Here we take a detour going to linux-tdep layer to read the smaps file,
+     because currently there isn't a better way to get that information to
+     check if a given address is tagged or not.
+
+     In the future, if this check is made, for instance, available via PTRACE,
+     it will be possible to drop the smaps path in favor of a PTRACE one for
+     this check.  */
+  return gdbarch_tagged_address_p (gdbarch, address);
+}
+
+INIT_GDB_FILE (aarch64_linux_nat)
 {
-  add_show_debug_regs_command ();
+  aarch64_initialize_hw_point ();
 
   /* Register the target.  */
   linux_target = &the_aarch64_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.20200303/gdb/aarch64-linux-tdep.c ./gdb/aarch64-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-linux-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-linux-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux AArch64.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -18,11 +18,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/>.  */
 
-#include "defs.h"
 
+#include "exceptions.h"
+#include "extract-store-integer.h"
 #include "gdbarch.h"
 #include "glibc-tdep.h"
+#include "solib-svr4-linux.h"
 #include "linux-tdep.h"
+#include "svr4-tls-tdep.h"
 #include "aarch64-tdep.h"
 #include "aarch64-linux-tdep.h"
 #include "osabi.h"
@@ -30,7 +33,12 @@
 #include "symtab.h"
 #include "tramp-frame.h"
 #include "trad-frame.h"
+#include "dwarf2/frame.h"
+#include "target.h"
 #include "target/target.h"
+#include "expop.h"
+#include "auxv.h"
+#include "inferior.h"
 
 #include "regcache.h"
 #include "regset.h"
@@ -44,6 +52,23 @@
 #include "record-full.h"
 #include "linux-record.h"
 
+#include "arch/aarch64-gcs-linux.h"
+#include "arch/aarch64-mte.h"
+#include "arch/aarch64-mte-linux.h"
+#include "arch/aarch64-scalable-linux.h"
+
+#include "arch-utils.h"
+#include "value.h"
+
+#include "gdbsupport/selftest.h"
+
+#include "elf/common.h"
+#include "elf/aarch64.h"
+#include "arch/aarch64-insn.h"
+
+/* For std::pow */
+#include <cmath>
+
 /* Signal frame handling.
 
       +------------+  ^
@@ -139,6 +164,10 @@
 #define AARCH64_EXTRA_MAGIC			0x45585401
 #define AARCH64_FPSIMD_MAGIC			0x46508001
 #define AARCH64_SVE_MAGIC			0x53564501
+#define AARCH64_ZA_MAGIC			0x54366345
+#define AARCH64_TPIDR2_MAGIC			0x54504902
+#define AARCH64_ZT_MAGIC			0x5a544e01
+#define AARCH64_GCS_MAGIC			0x47435300
 
 /* Defines for the extra_context that follows an AARCH64_EXTRA_MAGIC.  */
 #define AARCH64_EXTRA_DATAP_OFFSET		8
@@ -151,13 +180,88 @@
 
 /* Defines for the sve structure that follows an AARCH64_SVE_MAGIC.  */
 #define AARCH64_SVE_CONTEXT_VL_OFFSET		8
+#define AARCH64_SVE_CONTEXT_FLAGS_OFFSET	10
 #define AARCH64_SVE_CONTEXT_REGS_OFFSET		16
 #define AARCH64_SVE_CONTEXT_P_REGS_OFFSET(vq) (32 * vq * 16)
 #define AARCH64_SVE_CONTEXT_FFR_OFFSET(vq) \
   (AARCH64_SVE_CONTEXT_P_REGS_OFFSET (vq) + (16 * vq * 2))
 #define AARCH64_SVE_CONTEXT_SIZE(vq) \
   (AARCH64_SVE_CONTEXT_FFR_OFFSET (vq) + (vq * 2))
+/* Flag indicating the SVE Context describes streaming mode.  */
+#define SVE_SIG_FLAG_SM				0x1
+
+/* SME constants.  */
+#define AARCH64_SME_CONTEXT_SVL_OFFSET		8
+#define AARCH64_SME_CONTEXT_REGS_OFFSET		16
+#define AARCH64_SME_CONTEXT_ZA_SIZE(svq) \
+  ((sve_vl_from_vq (svq) * sve_vl_from_vq (svq)))
+#define AARCH64_SME_CONTEXT_SIZE(svq) \
+  (AARCH64_SME_CONTEXT_REGS_OFFSET + AARCH64_SME_CONTEXT_ZA_SIZE (svq))
+
+/* TPIDR2 register value offset in the TPIDR2 signal frame context.  */
+#define AARCH64_TPIDR2_CONTEXT_TPIDR2_OFFSET	8
+
+/* SME2 (ZT) constants.  */
+/* Offset of the field containing the number of registers in the SME2 signal
+   context state.  */
+#define AARCH64_SME2_CONTEXT_NREGS_OFFSET	8
+/* Offset of the beginning of the register data for the first ZT register in
+   the signal context state.  */
+#define AARCH64_SME2_CONTEXT_REGS_OFFSET	16
+
+/* GCSPR register value offset in the GCS signal frame context.  */
+#define AARCH64_GCS_CONTEXT_GCSPR_OFFSET	8
+/* features_enabled value offset in the GCS signal frame context.  */
+#define AARCH64_GCS_CONTEXT_FEATURES_ENABLED_OFFSET	16
 
+/* Holds information about the signal frame.  */
+struct aarch64_linux_sigframe
+{
+  /* The stack pointer value.  */
+  CORE_ADDR sp = 0;
+  /* The sigcontext address.  */
+  CORE_ADDR sigcontext_address = 0;
+  /* The start/end signal frame section addresses.  */
+  CORE_ADDR section = 0;
+  CORE_ADDR section_end = 0;
+
+  /* Starting address of the section containing the general purpose
+     registers.  */
+  CORE_ADDR gpr_section = 0;
+  /* Starting address of the section containing the FPSIMD registers.  */
+  CORE_ADDR fpsimd_section = 0;
+  /* Starting address of the section containing the SVE registers.  */
+  CORE_ADDR sve_section = 0;
+  /* Starting address of the section containing the ZA register.  */
+  CORE_ADDR za_section = 0;
+  /* Starting address of the section containing the TPIDR2 register.  */
+  CORE_ADDR tpidr2_section = 0;
+  /* Starting address of the section containing the ZT registers.  */
+  CORE_ADDR zt_section = 0;
+  /* Starting address of the section containing extra information.  */
+  CORE_ADDR extra_section = 0;
+
+  /* The vector length (SVE or SSVE).  */
+  ULONGEST vl = 0;
+  /* The streaming vector length (SSVE/ZA).  */
+  ULONGEST svl = 0;
+  /* Number of ZT registers in this context.  */
+  unsigned int zt_register_count = 0;
+
+  /* True if we are in streaming mode, false otherwise.  */
+  bool streaming_mode = false;
+  /* True if we have a ZA payload, false otherwise.  */
+  bool za_payload = false;
+  /* True if we have a ZT entry in the signal context, false otherwise.  */
+  bool zt_available = false;
+
+  /* True if we have a GCS entry in the signal context, false otherwise.  */
+  bool gcs_availabe = false;
+  /* The Guarded Control Stack Pointer Register.  */
+  uint64_t gcspr;
+  /* Flags indicating which GCS features are enabled for the thread.  */
+  uint64_t gcs_features_enabled;
+};
 
 /* Read an aarch64_ctx, returning the magic value, and setting *SIZE to the
    size, or return 0 on error.  */
@@ -180,84 +284,299 @@ read_aarch64_ctx (CORE_ADDR ctx_addr, en
   return magic;
 }
 
-/* Implement the "init" method of struct tramp_frame.  */
+/* Given CACHE, use the trad_frame* functions to restore the FPSIMD
+   registers from a signal frame.
+
+   FPSIMD_CONTEXT is the address of the signal frame context containing FPSIMD
+   data.  */
 
 static void
-aarch64_linux_sigframe_init (const struct tramp_frame *self,
-			     struct frame_info *this_frame,
-			     struct trad_frame_cache *this_cache,
-			     CORE_ADDR func)
+aarch64_linux_restore_vregs (struct gdbarch *gdbarch,
+			     struct trad_frame_cache *cache,
+			     CORE_ADDR fpsimd_context)
 {
-  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  /* WARNING: SIMD state is laid out in memory in target-endian format.
+
+     So we have a couple cases to consider:
+
+     1 - If the target is big endian, then SIMD state is big endian,
+     requiring a byteswap.
+
+     2 - If the target is little endian, then SIMD state is little endian, so
+     no byteswap is needed. */
+
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  CORE_ADDR sp = get_frame_register_unsigned (this_frame, AARCH64_SP_REGNUM);
-  CORE_ADDR sigcontext_addr = (sp + AARCH64_RT_SIGFRAME_UCONTEXT_OFFSET
-			       + AARCH64_UCONTEXT_SIGCONTEXT_OFFSET );
-  CORE_ADDR section = sigcontext_addr + AARCH64_SIGCONTEXT_RESERVED_OFFSET;
-  CORE_ADDR section_end = section + AARCH64_SIGCONTEXT_RESERVED_SIZE;
-  CORE_ADDR fpsimd = 0;
-  CORE_ADDR sve_regs = 0;
-  uint32_t size, magic;
-  bool extra_found = false;
   int num_regs = gdbarch_num_regs (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
-  /* Read in the integer registers.  */
-
-  for (int i = 0; i < 31; i++)
+  for (int i = 0; i < 32; i++)
     {
-      trad_frame_set_reg_addr (this_cache,
-			       AARCH64_X0_REGNUM + i,
-			       sigcontext_addr + AARCH64_SIGCONTEXT_XO_OFFSET
-				 + i * AARCH64_SIGCONTEXT_REG_SIZE);
-    }
-  trad_frame_set_reg_addr (this_cache, AARCH64_SP_REGNUM,
-			   sigcontext_addr + AARCH64_SIGCONTEXT_XO_OFFSET
-			     + 31 * AARCH64_SIGCONTEXT_REG_SIZE);
-  trad_frame_set_reg_addr (this_cache, AARCH64_PC_REGNUM,
-			   sigcontext_addr + AARCH64_SIGCONTEXT_XO_OFFSET
-			     + 32 * AARCH64_SIGCONTEXT_REG_SIZE);
+      CORE_ADDR offset = (fpsimd_context + AARCH64_FPSIMD_V0_OFFSET
+			  + (i * AARCH64_FPSIMD_VREG_SIZE));
+
+      gdb_byte buf[V_REGISTER_SIZE];
+
+      /* Read the contents of the V register.  */
+      if (target_read_memory (offset, buf, V_REGISTER_SIZE))
+	error (_("Failed to read fpsimd register from signal context."));
+
+      if (byte_order == BFD_ENDIAN_BIG)
+	{
+	  size_t size = V_REGISTER_SIZE/2;
+
+	  /* Read the two halves of the V register in reverse byte order.  */
+	  CORE_ADDR u64 = extract_unsigned_integer (buf, size,
+						    byte_order);
+	  CORE_ADDR l64 = extract_unsigned_integer (buf + size, size,
+						    byte_order);
+
+	  /* Copy the reversed bytes to the buffer.  */
+	  store_unsigned_integer (buf, size, BFD_ENDIAN_LITTLE, l64);
+	  store_unsigned_integer (buf + size , size, BFD_ENDIAN_LITTLE, u64);
+
+	  /* Now we can store the correct bytes for the V register.  */
+	  trad_frame_set_reg_value_bytes (cache, AARCH64_V0_REGNUM + i,
+					  {buf, V_REGISTER_SIZE});
+	  trad_frame_set_reg_value_bytes (cache,
+					  num_regs + AARCH64_Q0_REGNUM
+					  + i, {buf, Q_REGISTER_SIZE});
+	  trad_frame_set_reg_value_bytes (cache,
+					  num_regs + AARCH64_D0_REGNUM
+					  + i, {buf, D_REGISTER_SIZE});
+	  trad_frame_set_reg_value_bytes (cache,
+					  num_regs + AARCH64_S0_REGNUM
+					  + i, {buf, S_REGISTER_SIZE});
+	  trad_frame_set_reg_value_bytes (cache,
+					  num_regs + AARCH64_H0_REGNUM
+					  + i, {buf, H_REGISTER_SIZE});
+	  trad_frame_set_reg_value_bytes (cache,
+					  num_regs + AARCH64_B0_REGNUM
+					  + i, {buf, B_REGISTER_SIZE});
+
+	  if (tdep->has_sve ())
+	    trad_frame_set_reg_value_bytes (cache,
+					    num_regs + AARCH64_SVE_V0_REGNUM
+					    + i, {buf, V_REGISTER_SIZE});
+	}
+      else
+	{
+	  /* Little endian, just point at the address containing the register
+	     value.  */
+	  trad_frame_set_reg_addr (cache, AARCH64_V0_REGNUM + i, offset);
+	  trad_frame_set_reg_addr (cache, num_regs + AARCH64_Q0_REGNUM + i,
+				   offset);
+	  trad_frame_set_reg_addr (cache, num_regs + AARCH64_D0_REGNUM + i,
+				   offset);
+	  trad_frame_set_reg_addr (cache, num_regs + AARCH64_S0_REGNUM + i,
+				   offset);
+	  trad_frame_set_reg_addr (cache, num_regs + AARCH64_H0_REGNUM + i,
+				   offset);
+	  trad_frame_set_reg_addr (cache, num_regs + AARCH64_B0_REGNUM + i,
+				   offset);
+
+	  if (tdep->has_sve ())
+	    trad_frame_set_reg_addr (cache, num_regs + AARCH64_SVE_V0_REGNUM
+				     + i, offset);
+	}
+
+      if (tdep->has_sve ())
+	{
+	  /* If SVE is supported for this target, zero out the Z
+	     registers then copy the first 16 bytes of each of the V
+	     registers to the associated Z register.  Otherwise the Z
+	     registers will contain uninitialized data.  */
+	  std::vector<gdb_byte> z_buffer (tdep->vq * 16);
+
+	  /* We have already handled the endianness swap above, so we don't need
+	     to worry about it here.  */
+	  memcpy (z_buffer.data (), buf, V_REGISTER_SIZE);
+	  trad_frame_set_reg_value_bytes (cache,
+					  AARCH64_SVE_Z0_REGNUM + i,
+					  z_buffer);
+	}
+    }
+}
+
+/* Given a signal frame THIS_FRAME, read the signal frame information into
+   SIGNAL_FRAME.  */
+
+static void
+aarch64_linux_read_signal_frame_info (const frame_info_ptr &this_frame,
+				      aarch64_linux_sigframe &signal_frame)
+{
+  signal_frame.sp = get_frame_register_unsigned (this_frame, AARCH64_SP_REGNUM);
+  signal_frame.sigcontext_address
+    = signal_frame.sp + AARCH64_RT_SIGFRAME_UCONTEXT_OFFSET
+      + AARCH64_UCONTEXT_SIGCONTEXT_OFFSET;
+  signal_frame.section
+    = signal_frame.sigcontext_address + AARCH64_SIGCONTEXT_RESERVED_OFFSET;
+  signal_frame.section_end
+    = signal_frame.section + AARCH64_SIGCONTEXT_RESERVED_SIZE;
+
+  signal_frame.gpr_section
+    = signal_frame.sigcontext_address + AARCH64_SIGCONTEXT_XO_OFFSET;
+
+  /* Search for all the other sections, stopping at null.  */
+  CORE_ADDR section = signal_frame.section;
+  CORE_ADDR section_end = signal_frame.section_end;
+  uint32_t size, magic;
+  bool extra_found = false;
+  enum bfd_endian byte_order
+    = gdbarch_byte_order (get_frame_arch (this_frame));
 
-  /* Search for the FP and SVE sections, stopping at null.  */
   while ((magic = read_aarch64_ctx (section, byte_order, &size)) != 0
 	 && size != 0)
     {
       switch (magic)
 	{
 	case AARCH64_FPSIMD_MAGIC:
-	  fpsimd = section;
-	  section += size;
-	  break;
+	  {
+	    signal_frame.fpsimd_section = section;
+	    section += size;
+	    break;
+	  }
 
 	case AARCH64_SVE_MAGIC:
 	  {
 	    /* Check if the section is followed by a full SVE dump, and set
 	       sve_regs if it is.  */
 	    gdb_byte buf[4];
-	    uint16_t vq;
-
-	    if (!tdep->has_sve ())
-	      break;
 
+	    /* Extract the vector length.  */
 	    if (target_read_memory (section + AARCH64_SVE_CONTEXT_VL_OFFSET,
 				    buf, 2) != 0)
 	      {
+		warning (_("Failed to read the vector length from the SVE "
+			   "signal frame context."));
+		section += size;
+		break;
+	      }
+
+	    signal_frame.vl = extract_unsigned_integer (buf, 2, byte_order);
+
+	    /* Extract the flags to check if we are in streaming mode.  */
+	    if (target_read_memory (section
+				    + AARCH64_SVE_CONTEXT_FLAGS_OFFSET,
+				    buf, 2) != 0)
+	      {
+		warning (_("Failed to read the flags from the SVE signal frame"
+			   " context."));
 		section += size;
 		break;
 	      }
-	    vq = sve_vq_from_vl (extract_unsigned_integer (buf, 2, byte_order));
 
-	    if (vq != tdep->vq)
-	      error (_("Invalid vector length in signal frame %d vs %s."), vq,
-		     pulongest (tdep->vq));
+	    uint16_t flags = extract_unsigned_integer (buf, 2, byte_order);
+
+	    /* Is this SSVE data? If so, we are in streaming mode.  */
+	    signal_frame.streaming_mode
+	      = (flags & SVE_SIG_FLAG_SM) ? true : false;
 
+	    ULONGEST vq = sve_vq_from_vl (signal_frame.vl);
 	    if (size >= AARCH64_SVE_CONTEXT_SIZE (vq))
-	      sve_regs = section + AARCH64_SVE_CONTEXT_REGS_OFFSET;
+	      {
+		signal_frame.sve_section
+		  = section + AARCH64_SVE_CONTEXT_REGS_OFFSET;
+	      }
+	    section += size;
+	    break;
+	  }
+
+	case AARCH64_ZA_MAGIC:
+	  {
+	    /* Check if the section is followed by a full ZA dump, and set
+	       za_state if it is.  */
+	    gdb_byte buf[2];
+
+	    /* Extract the streaming vector length.  */
+	    if (target_read_memory (section + AARCH64_SME_CONTEXT_SVL_OFFSET,
+				    buf, 2) != 0)
+	      {
+		warning (_("Failed to read the streaming vector length from "
+			   "ZA signal frame context."));
+		section += size;
+		break;
+	      }
+
+	    signal_frame.svl = extract_unsigned_integer (buf, 2, byte_order);
+	    ULONGEST svq = sve_vq_from_vl (signal_frame.svl);
+
+	    if (size >= AARCH64_SME_CONTEXT_SIZE (svq))
+	      {
+		signal_frame.za_section
+		  = section + AARCH64_SME_CONTEXT_REGS_OFFSET;
+		signal_frame.za_payload = true;
+	      }
+	    section += size;
+	    break;
+	  }
+
+	case AARCH64_TPIDR2_MAGIC:
+	  {
+	    /* This is context containing the tpidr2 register.  */
+	    signal_frame.tpidr2_section = section;
+	    section += size;
+	    break;
+	  }
+	case AARCH64_ZT_MAGIC:
+	  {
+	    gdb_byte buf[2];
+
+	    /* Extract the number of ZT registers available in this
+	       context.  */
+	    if (target_read_memory (section + AARCH64_SME2_CONTEXT_NREGS_OFFSET,
+				    buf, 2) != 0)
+	      {
+		warning (_("Failed to read the number of ZT registers from the "
+			   "ZT signal frame context."));
+		section += size;
+		break;
+	      }
+
+	    signal_frame.zt_register_count
+	      = extract_unsigned_integer (buf, 2, byte_order);
+
+	    /* This is a context containing the ZT registers.  This should only
+	       exist if we also have the ZA context.  The presence of the ZT
+	       context without the ZA context is invalid.  */
+	    signal_frame.zt_section = section;
+	    signal_frame.zt_available = true;
 
 	    section += size;
 	    break;
 	  }
+	case AARCH64_GCS_MAGIC:
+	  {
+	    gdb_byte buf[8];
+
+	    /* Extract the GCSPR.  */
+	    if (target_read_memory (section + AARCH64_GCS_CONTEXT_GCSPR_OFFSET,
+				    buf, 8) != 0)
+	      {
+		warning (_("Failed to read the GCS pointer from the GCS signal"
+			   " frame context."));
+		section += size;
+		break;
+	      }
+
+	    signal_frame.gcspr = extract_unsigned_integer (buf, byte_order);
 
+	    /* Extract the features_enabled field.  */
+	    if (target_read_memory (section
+				    + AARCH64_GCS_CONTEXT_FEATURES_ENABLED_OFFSET,
+				    buf, sizeof (buf)) != 0)
+	      {
+		warning (_("Failed to read the enabled features from the GCS"
+			   " signal frame context."));
+		section += size;
+		break;
+	      }
+
+	    signal_frame.gcs_features_enabled
+	      = extract_unsigned_integer (buf, byte_order);
+	    signal_frame.gcs_availabe = true;
+	    section += size;
+	    break;
+	  }
 	case AARCH64_EXTRA_MAGIC:
 	  {
 	    /* Extra is always the last valid section in reserved and points to
@@ -269,11 +588,14 @@ aarch64_linux_sigframe_init (const struc
 	    if (target_read_memory (section + AARCH64_EXTRA_DATAP_OFFSET,
 				    buf, 8) != 0)
 	      {
+		warning (_("Failed to read the extra section address from the"
+			   " signal frame context."));
 		section += size;
 		break;
 	      }
 
 	    section = extract_unsigned_integer (buf, 8, byte_order);
+	    signal_frame.extra_section = section;
 	    extra_found = true;
 	    break;
 	  }
@@ -290,13 +612,56 @@ aarch64_linux_sigframe_init (const struc
 	break;
     }
 
-  if (sve_regs != 0)
+    /* Sanity check that if the ZT entry exists, the ZA entry must also
+       exist.  */
+    if (signal_frame.zt_available && !signal_frame.za_payload)
+      error (_("While reading signal context information, found a ZT context "
+	       "without a ZA context, which is invalid."));
+}
+
+/* Implement the "init" method of struct tramp_frame.  */
+
+static void
+aarch64_linux_sigframe_init (const struct tramp_frame *self,
+			     const frame_info_ptr &this_frame,
+			     struct trad_frame_cache *this_cache,
+			     CORE_ADDR func)
+{
+  /* Read the signal context information.  */
+  struct aarch64_linux_sigframe signal_frame;
+  aarch64_linux_read_signal_frame_info (this_frame, signal_frame);
+
+  /* Now we have all the data required to restore the registers from the
+     signal frame.  */
+
+  /* Restore the general purpose registers.  */
+  CORE_ADDR offset = signal_frame.gpr_section;
+  for (int i = 0; i < 31; i++)
     {
-      CORE_ADDR offset;
+      trad_frame_set_reg_addr (this_cache, AARCH64_X0_REGNUM + i, offset);
+      offset += AARCH64_SIGCONTEXT_REG_SIZE;
+    }
+  trad_frame_set_reg_addr (this_cache, AARCH64_SP_REGNUM, offset);
+  offset += AARCH64_SIGCONTEXT_REG_SIZE;
+  trad_frame_set_reg_addr (this_cache, AARCH64_PC_REGNUM, offset);
+
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
+  /* Restore the SVE / FPSIMD registers.  */
+  if (tdep->has_sve () && signal_frame.sve_section != 0)
+    {
+      ULONGEST vq = sve_vq_from_vl (signal_frame.vl);
+      CORE_ADDR sve_regs = signal_frame.sve_section;
+
+      /* Restore VG.  */
+      trad_frame_set_reg_value (this_cache, AARCH64_SVE_VG_REGNUM,
+				sve_vg_from_vl (signal_frame.vl));
+
+      int num_regs = gdbarch_num_regs (gdbarch);
       for (int i = 0; i < 32; i++)
 	{
-	  offset = sve_regs + (i * tdep->vq * 16);
+	  offset = sve_regs + (i * vq * 16);
 	  trad_frame_set_reg_addr (this_cache, AARCH64_SVE_Z0_REGNUM + i,
 				   offset);
 	  trad_frame_set_reg_addr (this_cache,
@@ -314,48 +679,124 @@ aarch64_linux_sigframe_init (const struc
 				   offset);
 	}
 
-      offset = sve_regs + AARCH64_SVE_CONTEXT_P_REGS_OFFSET (tdep->vq);
+      offset = sve_regs + AARCH64_SVE_CONTEXT_P_REGS_OFFSET (vq);
       for (int i = 0; i < 16; i++)
 	trad_frame_set_reg_addr (this_cache, AARCH64_SVE_P0_REGNUM + i,
-				 offset + (i * tdep->vq * 2));
+				 offset + (i * vq * 2));
 
-      offset = sve_regs + AARCH64_SVE_CONTEXT_FFR_OFFSET (tdep->vq);
+      offset = sve_regs + AARCH64_SVE_CONTEXT_FFR_OFFSET (vq);
       trad_frame_set_reg_addr (this_cache, AARCH64_SVE_FFR_REGNUM, offset);
     }
 
-  if (fpsimd != 0)
+  /* Restore the FPSIMD registers.  */
+  if (signal_frame.fpsimd_section != 0)
     {
+      CORE_ADDR fpsimd = signal_frame.fpsimd_section;
+
       trad_frame_set_reg_addr (this_cache, AARCH64_FPSR_REGNUM,
 			       fpsimd + AARCH64_FPSIMD_FPSR_OFFSET);
       trad_frame_set_reg_addr (this_cache, AARCH64_FPCR_REGNUM,
 			       fpsimd + AARCH64_FPSIMD_FPCR_OFFSET);
 
       /* If there was no SVE section then set up the V registers.  */
-      if (sve_regs == 0)
-	for (int i = 0; i < 32; i++)
-	  {
-	    CORE_ADDR offset = (fpsimd + AARCH64_FPSIMD_V0_OFFSET
-				  + (i * AARCH64_FPSIMD_VREG_SIZE));
+      if (!tdep->has_sve () || signal_frame.sve_section == 0)
+	aarch64_linux_restore_vregs (gdbarch, this_cache, fpsimd);
+    }
 
-	    trad_frame_set_reg_addr (this_cache, AARCH64_V0_REGNUM + i, offset);
-	    trad_frame_set_reg_addr (this_cache,
-				     num_regs + AARCH64_Q0_REGNUM + i, offset);
-	    trad_frame_set_reg_addr (this_cache,
-				     num_regs + AARCH64_D0_REGNUM + i, offset);
-	    trad_frame_set_reg_addr (this_cache,
-				     num_regs + AARCH64_S0_REGNUM + i, offset);
-	    trad_frame_set_reg_addr (this_cache,
-				     num_regs + AARCH64_H0_REGNUM + i, offset);
-	    trad_frame_set_reg_addr (this_cache,
-				     num_regs + AARCH64_B0_REGNUM + i, offset);
-	    if (tdep->has_sve ())
-	      trad_frame_set_reg_addr (this_cache,
-				       num_regs + AARCH64_SVE_V0_REGNUM + i,
-				       offset);
-	  }
+  /* Restore the SME registers.  */
+  if (tdep->has_sme ())
+    {
+      if (signal_frame.za_section != 0)
+	{
+	  /* Restore the ZA state.  */
+	  trad_frame_set_reg_addr (this_cache, tdep->sme_za_regnum,
+				   signal_frame.za_section);
+	}
+
+      /* Restore/Reconstruct SVCR.  */
+      ULONGEST svcr = 0;
+      svcr |= signal_frame.za_payload ? SVCR_ZA_BIT : 0;
+      svcr |= signal_frame.streaming_mode ? SVCR_SM_BIT : 0;
+      trad_frame_set_reg_value (this_cache, tdep->sme_svcr_regnum, svcr);
+
+      /* Restore SVG.  */
+      trad_frame_set_reg_value (this_cache, tdep->sme_svg_regnum,
+				sve_vg_from_vl (signal_frame.svl));
+
+      /* Handle SME2 (ZT).  */
+      if (tdep->has_sme2 ()
+	  && signal_frame.za_section != 0
+	  && signal_frame.zt_register_count > 0)
+	{
+	  /* Is ZA state available?  */
+	  gdb_assert (svcr & SVCR_ZA_BIT);
+
+	  /* Restore the ZT state.  For now we assume that we only have
+	     a single ZT register.  If/When more ZT registers appear, we
+	     should update the code to handle that case accordingly.  */
+	  trad_frame_set_reg_addr (this_cache, tdep->sme2_zt0_regnum,
+				   signal_frame.zt_section
+				   + AARCH64_SME2_CONTEXT_REGS_OFFSET);
+	}
+    }
+
+  /* Restore the tpidr2 register, if the target supports it and if there is
+     an entry for it.  */
+  if (signal_frame.tpidr2_section != 0 && tdep->has_tls ()
+      && tdep->tls_register_count >= 2)
+    {
+      /* Restore tpidr2.  */
+      trad_frame_set_reg_addr (this_cache, tdep->tls_regnum_base + 1,
+			       signal_frame.tpidr2_section
+			       + AARCH64_TPIDR2_CONTEXT_TPIDR2_OFFSET);
+    }
+
+  /* Restore the GCS registers, if the target supports it and if there is
+     an entry for them.  */
+  if (signal_frame.gcs_availabe && tdep->has_gcs_linux ())
+    {
+      /* Restore GCSPR.  */
+      trad_frame_set_reg_value (this_cache, tdep->gcs_reg_base,
+				signal_frame.gcspr);
+      /* Restore gcs_features_enabled.  */
+      trad_frame_set_reg_value (this_cache, tdep->gcs_linux_reg_base,
+				signal_frame.gcs_features_enabled);
+      /* gcs_features_locked isn't present in the GCS signal context.  */
     }
 
-  trad_frame_set_id (this_cache, frame_id_build (sp, func));
+  trad_frame_set_id (this_cache, frame_id_build (signal_frame.sp, func));
+}
+
+/* Implements the "prev_arch" method of struct tramp_frame.  */
+
+static struct gdbarch *
+aarch64_linux_sigframe_prev_arch (const frame_info_ptr &this_frame,
+				  void **frame_cache)
+{
+  struct trad_frame_cache *cache
+    = (struct trad_frame_cache *) *frame_cache;
+
+  gdb_assert (cache != nullptr);
+
+  struct aarch64_linux_sigframe signal_frame;
+  aarch64_linux_read_signal_frame_info (this_frame, signal_frame);
+
+  /* The SVE vector length and the SME vector length may change from frame to
+     frame.  Make sure we report the correct architecture to the previous
+     frame.
+
+     We can reuse the next frame's architecture here, as it should be mostly
+     the same, except for potential different vg and svg values.  */
+  const struct target_desc *tdesc
+    = gdbarch_target_desc (get_frame_arch (this_frame));
+  aarch64_features features = aarch64_features_from_target_desc (tdesc);
+  features.vq = sve_vq_from_vl (signal_frame.vl);
+  features.svq = (uint8_t) sve_vq_from_vl (signal_frame.svl);
+
+  struct gdbarch_info info;
+  info.bfd_arch_info = bfd_lookup_arch (bfd_arch_aarch64, bfd_mach_aarch64);
+  info.target_desc = aarch64_read_description (features);
+  return gdbarch_find_by_info (info);
 }
 
 static const struct tramp_frame aarch64_linux_rt_sigframe =
@@ -372,7 +813,9 @@ static const struct tramp_frame aarch64_
     {0xd4000001, ULONGEST_MAX},
     {TRAMP_SENTINEL_INSN, ULONGEST_MAX}
   },
-  aarch64_linux_sigframe_init
+  aarch64_linux_sigframe_init,
+  nullptr, /* validate */
+  aarch64_linux_sigframe_prev_arch, /* prev_arch */
 };
 
 /* Register maps.  */
@@ -433,50 +876,55 @@ const struct regset aarch64_linux_fpregs
 
 #define SVE_HEADER_FLAG_SVE		1
 
-/* Get VQ value from SVE section in the core dump.  */
+/* Get the vector quotient (VQ) or streaming vector quotient (SVQ) value
+   from the section named SECTION_NAME.
+
+   Return non-zero if successful and 0 otherwise.  */
 
 static uint64_t
-aarch64_linux_core_read_vq (struct gdbarch *gdbarch, bfd *abfd)
+aarch64_linux_core_read_vq (struct gdbarch *gdbarch, bfd *abfd,
+			    const char *section_name)
 {
-  gdb_byte header[SVE_HEADER_SIZE];
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  asection *sve_section = bfd_get_section_by_name (abfd, ".reg-aarch-sve");
+  gdb_assert (section_name != nullptr);
 
-  if (sve_section == nullptr)
+  asection *section = bfd_get_section_by_name (abfd, section_name);
+
+  if (section == nullptr)
     {
       /* No SVE state.  */
       return 0;
     }
 
-  size_t size = bfd_section_size (sve_section);
+  size_t size = bfd_section_size (section);
 
   /* Check extended state size.  */
   if (size < SVE_HEADER_SIZE)
     {
-      warning (_("'.reg-aarch-sve' section in core file too small."));
+      warning (_("'%s' core file section is too small. "
+		 "Expected %s bytes, got %s bytes"), section_name,
+		 pulongest (SVE_HEADER_SIZE), pulongest (size));
       return 0;
     }
 
-  if (!bfd_get_section_contents (abfd, sve_section, header, 0, SVE_HEADER_SIZE))
+  gdb_byte header[SVE_HEADER_SIZE];
+
+  if (!bfd_get_section_contents (abfd, section, header, 0, SVE_HEADER_SIZE))
     {
       warning (_("Couldn't read sve header from "
-		 "'.reg-aarch-sve' section in core file."));
+		 "'%s' core file section."), section_name);
       return 0;
     }
 
-  uint64_t vl = extract_unsigned_integer (header + SVE_HEADER_VL_OFFSET,
-					  SVE_HEADER_VL_LENGTH, byte_order);
-  uint64_t vq = sve_vq_from_vl (vl);
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  uint64_t vq
+    = sve_vq_from_vl (extract_unsigned_integer (header + SVE_HEADER_VL_OFFSET,
+						SVE_HEADER_VL_LENGTH,
+						byte_order));
 
-  if (vq > AARCH64_MAX_SVE_VQ)
-    {
-      warning (_("SVE Vector length in core file not supported by this version"
-		 " of GDB.  (VQ=%s)"), pulongest (vq));
-      return 0;
-    }
-  else if (vq == 0)
+  if (vq > AARCH64_MAX_SVE_VQ || vq == 0)
     {
-      warning (_("SVE Vector length in core file is invalid. (VQ=%s"),
+      warning (_("SVE/SSVE vector length in core file is invalid."
+		 " (max vq=%d) (detected vq=%s)"), AARCH64_MAX_SVE_VQ,
 	       pulongest (vq));
       return 0;
     }
@@ -484,14 +932,53 @@ aarch64_linux_core_read_vq (struct gdbar
   return vq;
 }
 
+/* Get the vector quotient (VQ) value from CORE_BFD's sections.
+
+   Return non-zero if successful and 0 otherwise.  */
+
+static uint64_t
+aarch64_linux_core_read_vq_from_sections (struct gdbarch *gdbarch,
+					  bfd *core_bfd)
+{
+  /* First check if we have a SSVE section.  If so, check if it is active.  */
+  asection *section = bfd_get_section_by_name (core_bfd, ".reg-aarch-ssve");
+
+  if (section != nullptr)
+    {
+      /* We've found a SSVE section, so now fetch its data.  */
+      gdb_byte header[SVE_HEADER_SIZE];
+
+      if (bfd_get_section_contents (core_bfd, section, header, 0,
+				    SVE_HEADER_SIZE))
+	{
+	  /* Check if the SSVE section has SVE contents.  */
+	  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+	  uint16_t flags
+	    = extract_unsigned_integer (header + SVE_HEADER_FLAGS_OFFSET,
+					SVE_HEADER_FLAGS_LENGTH, byte_order);
+
+	  if (flags & SVE_HEADER_FLAG_SVE)
+	    {
+	      /* The SSVE state is active, so return the vector length from the
+		 the SSVE section.  */
+	      return aarch64_linux_core_read_vq (gdbarch, core_bfd,
+						 ".reg-aarch-ssve");
+	    }
+	}
+    }
+
+  /* No valid SSVE section.  Return the vq from the SVE section (if any).  */
+  return aarch64_linux_core_read_vq (gdbarch, core_bfd, ".reg-aarch-sve");
+}
+
 /* Supply register REGNUM from BUF to REGCACHE, using the register map
    in REGSET.  If REGNUM is -1, do this for all registers in REGSET.
-   If BUF is NULL, set the registers to "unavailable" status.  */
+   If BUF is nullptr, set the registers to "unavailable" status.  */
 
 static void
-aarch64_linux_supply_sve_regset (const struct regset *regset,
-				 struct regcache *regcache,
-				 int regnum, const void *buf, size_t size)
+supply_sve_regset (const struct regset *regset,
+		   struct regcache *regcache,
+		   int regnum, const void *buf, size_t size)
 {
   gdb_byte *header = (gdb_byte *) buf;
   struct gdbarch *gdbarch = regcache->arch ();
@@ -543,19 +1030,95 @@ aarch64_linux_supply_sve_regset (const s
     }
 }
 
+/* Collect an inactive SVE register set state.  This is equivalent to a
+   fpsimd layout.
+
+   Collect the data from REGCACHE to BUF, using the register
+   map in REGSET.  */
+
+static void
+collect_inactive_sve_regset (const struct regcache *regcache,
+			     void *buf, size_t size, int vg_regnum)
+{
+  gdb_byte *header = (gdb_byte *) buf;
+  struct gdbarch *gdbarch = regcache->arch ();
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+
+  gdb_assert (buf != nullptr);
+  gdb_assert (size >= SVE_CORE_DUMMY_SIZE);
+
+  /* Zero out everything first.  */
+  memset ((gdb_byte *) buf, 0, SVE_CORE_DUMMY_SIZE);
+
+  /* BUF starts with a SVE header prior to the register dump.  */
+
+  /* Dump the default size of an empty SVE payload.  */
+  uint32_t real_size = SVE_CORE_DUMMY_SIZE;
+  store_unsigned_integer (header + SVE_HEADER_SIZE_OFFSET,
+			  SVE_HEADER_SIZE_LENGTH, byte_order, real_size);
+
+  /* Dump a dummy max size.  */
+  uint32_t max_size = SVE_CORE_DUMMY_MAX_SIZE;
+  store_unsigned_integer (header + SVE_HEADER_MAX_SIZE_OFFSET,
+			  SVE_HEADER_MAX_SIZE_LENGTH, byte_order, max_size);
+
+  /* Dump the vector length.  */
+  ULONGEST vg = 0;
+  regcache->raw_collect (vg_regnum, &vg);
+  uint16_t vl = sve_vl_from_vg (vg);
+  store_unsigned_integer (header + SVE_HEADER_VL_OFFSET, SVE_HEADER_VL_LENGTH,
+			  byte_order, vl);
+
+  /* Dump the standard maximum vector length.  */
+  uint16_t max_vl = SVE_CORE_DUMMY_MAX_VL;
+  store_unsigned_integer (header + SVE_HEADER_MAX_VL_OFFSET,
+			  SVE_HEADER_MAX_VL_LENGTH, byte_order,
+			  max_vl);
+
+  /* The rest of the fields are zero.  */
+  uint16_t flags = SVE_CORE_DUMMY_FLAGS;
+  store_unsigned_integer (header + SVE_HEADER_FLAGS_OFFSET,
+			  SVE_HEADER_FLAGS_LENGTH, byte_order,
+			  flags);
+  uint16_t reserved = SVE_CORE_DUMMY_RESERVED;
+  store_unsigned_integer (header + SVE_HEADER_RESERVED_OFFSET,
+			  SVE_HEADER_RESERVED_LENGTH, byte_order, reserved);
+
+  /* We are done with the header part of it.  Now dump the register state
+     in the FPSIMD format.  */
+
+  /* Dump the first 128 bits of each of the Z registers.  */
+  header += AARCH64_SVE_CONTEXT_REGS_OFFSET;
+  for (int i = 0; i < AARCH64_SVE_Z_REGS_NUM; i++)
+    regcache->raw_collect_part (AARCH64_SVE_Z0_REGNUM + i, 0, V_REGISTER_SIZE,
+				header + V_REGISTER_SIZE * i);
+
+  /* Dump FPSR and FPCR.  */
+  header += 32 * V_REGISTER_SIZE;
+  regcache->raw_collect (AARCH64_FPSR_REGNUM, header);
+  regcache->raw_collect (AARCH64_FPCR_REGNUM, header + 4);
+
+  /* Dump two reserved empty fields of 4 bytes.  */
+  header += 8;
+  memset (header, 0, 8);
+
+  /* We should have a FPSIMD-formatted register dump now.  */
+}
+
 /* Collect register REGNUM from REGCACHE to BUF, using the register
    map in REGSET.  If REGNUM is -1, do this for all registers in
    REGSET.  */
 
 static void
-aarch64_linux_collect_sve_regset (const struct regset *regset,
-				  const struct regcache *regcache,
-				  int regnum, void *buf, size_t size)
+collect_sve_regset (const struct regset *regset,
+		    const struct regcache *regcache,
+		    int regnum, void *buf, size_t size)
 {
   gdb_byte *header = (gdb_byte *) buf;
   struct gdbarch *gdbarch = regcache->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  uint64_t vq = gdbarch_tdep (gdbarch)->vq;
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+  uint64_t vq = tdep->vq;
 
   gdb_assert (buf != NULL);
   gdb_assert (size > SVE_HEADER_SIZE);
@@ -564,25 +1127,365 @@ aarch64_linux_collect_sve_regset (const
 
   store_unsigned_integer (header + SVE_HEADER_SIZE_OFFSET,
 			  SVE_HEADER_SIZE_LENGTH, byte_order, size);
+  uint32_t max_size = SVE_CORE_DUMMY_MAX_SIZE;
   store_unsigned_integer (header + SVE_HEADER_MAX_SIZE_OFFSET,
-			  SVE_HEADER_MAX_SIZE_LENGTH, byte_order, size);
+			  SVE_HEADER_MAX_SIZE_LENGTH, byte_order, max_size);
   store_unsigned_integer (header + SVE_HEADER_VL_OFFSET, SVE_HEADER_VL_LENGTH,
 			  byte_order, sve_vl_from_vq (vq));
+  uint16_t max_vl = SVE_CORE_DUMMY_MAX_VL;
   store_unsigned_integer (header + SVE_HEADER_MAX_VL_OFFSET,
 			  SVE_HEADER_MAX_VL_LENGTH, byte_order,
-			  sve_vl_from_vq (vq));
+			  max_vl);
+  uint16_t flags = SVE_HEADER_FLAG_SVE;
   store_unsigned_integer (header + SVE_HEADER_FLAGS_OFFSET,
 			  SVE_HEADER_FLAGS_LENGTH, byte_order,
-			  SVE_HEADER_FLAG_SVE);
+			  flags);
+  uint16_t reserved = SVE_CORE_DUMMY_RESERVED;
   store_unsigned_integer (header + SVE_HEADER_RESERVED_OFFSET,
-			  SVE_HEADER_RESERVED_LENGTH, byte_order, 0);
+			  SVE_HEADER_RESERVED_LENGTH, byte_order, reserved);
 
   /* The SVE register dump follows.  */
   regcache->collect_regset (regset, regnum, (gdb_byte *) buf + SVE_HEADER_SIZE,
 			    size - SVE_HEADER_SIZE);
 }
 
-/* Implement the "regset_from_core_section" gdbarch method.  */
+/* Supply register REGNUM from BUF to REGCACHE, using the register map
+   in REGSET.  If REGNUM is -1, do this for all registers in REGSET.
+   If BUF is NULL, set the registers to "unavailable" status.  */
+
+static void
+aarch64_linux_supply_sve_regset (const struct regset *regset,
+				 struct regcache *regcache,
+				 int regnum, const void *buf, size_t size)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  if (tdep->has_sme ())
+    {
+      ULONGEST svcr = 0;
+      regcache->raw_collect (tdep->sme_svcr_regnum, &svcr);
+
+      /* Is streaming mode enabled?  */
+      if (svcr & SVCR_SM_BIT)
+	/* If so, don't load SVE data from the SVE section.  The data to be
+	   used is in the SSVE section.  */
+	return;
+    }
+  /* If streaming mode is not enabled, load the SVE regcache data from the SVE
+     section.  */
+  supply_sve_regset (regset, regcache, regnum, buf, size);
+}
+
+/* Collect register REGNUM from REGCACHE to BUF, using the register
+   map in REGSET.  If REGNUM is -1, do this for all registers in
+   REGSET.  */
+
+static void
+aarch64_linux_collect_sve_regset (const struct regset *regset,
+				  const struct regcache *regcache,
+				  int regnum, void *buf, size_t size)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+  bool streaming_mode = false;
+
+  if (tdep->has_sme ())
+    {
+      ULONGEST svcr = 0;
+      regcache->raw_collect (tdep->sme_svcr_regnum, &svcr);
+
+      /* Is streaming mode enabled?  */
+      if (svcr & SVCR_SM_BIT)
+	{
+	  /* If so, don't dump SVE regcache data to the SVE section.  The SVE
+	     data should be dumped to the SSVE section.  Dump an empty SVE
+	     block instead.  */
+	  streaming_mode = true;
+	}
+    }
+
+  /* If streaming mode is not enabled or there is no SME support, dump the
+     SVE regcache data to the SVE section.  */
+
+  /* Check if we have an active SVE state (non-zero Z/P/FFR registers).
+     If so, then we need to dump registers in the SVE format.
+
+     Otherwise we should dump the registers in the FPSIMD format.  */
+  if (sve_state_is_empty (regcache) || streaming_mode)
+    collect_inactive_sve_regset (regcache, buf, size, AARCH64_SVE_VG_REGNUM);
+  else
+    collect_sve_regset (regset, regcache, regnum, buf, size);
+}
+
+/* Supply register REGNUM from BUF to REGCACHE, using the register map
+   in REGSET.  If REGNUM is -1, do this for all registers in REGSET.
+   If BUF is NULL, set the registers to "unavailable" status.  */
+
+static void
+aarch64_linux_supply_ssve_regset (const struct regset *regset,
+				  struct regcache *regcache,
+				  int regnum, const void *buf, size_t size)
+{
+  gdb_byte *header = (gdb_byte *) buf;
+  struct gdbarch *gdbarch = regcache->arch ();
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  uint16_t flags = extract_unsigned_integer (header + SVE_HEADER_FLAGS_OFFSET,
+					     SVE_HEADER_FLAGS_LENGTH,
+					     byte_order);
+
+  /* Since SVCR's bits are inferred from the data we have in the header of the
+     SSVE section, we need to initialize it to zero first, so that it doesn't
+     carry garbage data.  */
+  ULONGEST svcr = 0;
+  regcache->raw_supply (tdep->sme_svcr_regnum, &svcr);
+
+  /* Is streaming mode enabled?  */
+  if (flags & SVE_HEADER_FLAG_SVE)
+    {
+      /* Streaming mode is active, so flip the SM bit.  */
+      svcr = SVCR_SM_BIT;
+      regcache->raw_supply (tdep->sme_svcr_regnum, &svcr);
+
+      /* Fetch the SVE data from the SSVE section.  */
+      supply_sve_regset (regset, regcache, regnum, buf, size);
+    }
+}
+
+/* Collect register REGNUM from REGCACHE to BUF, using the register
+   map in REGSET.  If REGNUM is -1, do this for all registers in
+   REGSET.  */
+
+static void
+aarch64_linux_collect_ssve_regset (const struct regset *regset,
+				   const struct regcache *regcache,
+				   int regnum, void *buf, size_t size)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+  ULONGEST svcr = 0;
+  regcache->raw_collect (tdep->sme_svcr_regnum, &svcr);
+
+  /* Is streaming mode enabled?  */
+  if (svcr & SVCR_SM_BIT)
+    {
+      /* If so, dump SVE regcache data to the SSVE section.  */
+      collect_sve_regset (regset, regcache, regnum, buf, size);
+    }
+  else
+    {
+      /* Otherwise dump an empty SVE block to the SSVE section with the
+	 streaming vector length.  */
+      collect_inactive_sve_regset (regcache, buf, size, tdep->sme_svg_regnum);
+    }
+}
+
+/* Supply register REGNUM from BUF to REGCACHE, using the register map
+   in REGSET.  If REGNUM is -1, do this for all registers in REGSET.
+   If BUF is NULL, set the registers to "unavailable" status.  */
+
+static void
+aarch64_linux_supply_za_regset (const struct regset *regset,
+				struct regcache *regcache,
+				int regnum, const void *buf, size_t size)
+{
+  gdb_byte *header = (gdb_byte *) buf;
+  struct gdbarch *gdbarch = regcache->arch ();
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+
+  /* Handle an empty buffer.  */
+  if (buf == nullptr)
+    return regcache->supply_regset (regset, regnum, nullptr, size);
+
+  if (size < SVE_HEADER_SIZE)
+    error (_("ZA state header size (%s) invalid.  Should be at least %s."),
+	   pulongest (size), pulongest (SVE_HEADER_SIZE));
+
+  /* The ZA register note in a core file can have a couple of states:
+
+     1 - Just the header without the payload.  This means that there is no
+	 ZA data, and we should populate only SVCR and SVG registers on GDB's
+	 side.  The ZA data should be marked as unavailable.
+
+     2 - The header with an additional data payload.  This means there is
+	 actual ZA data, and we should populate ZA, SVCR and SVG.  */
+
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  /* Populate SVG.  */
+  ULONGEST svg
+    = sve_vg_from_vl (extract_unsigned_integer (header + SVE_HEADER_VL_OFFSET,
+						SVE_HEADER_VL_LENGTH,
+						byte_order));
+  regcache->raw_supply (tdep->sme_svg_regnum, &svg);
+
+  size_t data_size
+    = extract_unsigned_integer (header + SVE_HEADER_SIZE_OFFSET,
+				SVE_HEADER_SIZE_LENGTH, byte_order)
+      - SVE_HEADER_SIZE;
+
+  /* Populate SVCR.  */
+  bool has_za_payload = (data_size > 0);
+  ULONGEST svcr;
+  regcache->raw_collect (tdep->sme_svcr_regnum, &svcr);
+
+  /* If we have a ZA payload, enable bit 2 of SVCR, otherwise clear it.  This
+     register gets updated by the SVE/SSVE-handling functions as well, as they
+     report the SM bit 1.  */
+  if (has_za_payload)
+    svcr |= SVCR_ZA_BIT;
+  else
+    svcr &= ~SVCR_ZA_BIT;
+
+  /* Update SVCR in the register buffer.  */
+  regcache->raw_supply (tdep->sme_svcr_regnum, &svcr);
+
+  /* Populate the register cache with ZA register contents, if we have any.  */
+  buf = has_za_payload ? (gdb_byte *) buf + SVE_HEADER_SIZE : nullptr;
+
+  size_t za_bytes = std::pow (sve_vl_from_vg (svg), 2);
+
+  /* Update ZA in the register buffer.  */
+  if (has_za_payload)
+    {
+      /* Check that the payload size is sane.  */
+      if (size < SVE_HEADER_SIZE + za_bytes)
+	{
+	  error (_("ZA header + payload size (%s) invalid.  Should be at "
+		   "least %s."),
+		 pulongest (size), pulongest (SVE_HEADER_SIZE + za_bytes));
+	}
+
+      regcache->raw_supply (tdep->sme_za_regnum, buf);
+    }
+  else
+    regcache->raw_supply_part_zeroed (tdep->sme_za_regnum, 0, za_bytes);
+}
+
+/* Collect register REGNUM from REGCACHE to BUF, using the register
+   map in REGSET.  If REGNUM is -1, do this for all registers in
+   REGSET.  */
+
+static void
+aarch64_linux_collect_za_regset (const struct regset *regset,
+				 const struct regcache *regcache,
+				 int regnum, void *buf, size_t size)
+{
+  gdb_assert (buf != nullptr);
+
+  /* Sanity check the dump size.  */
+  gdb_assert (size >= SVE_HEADER_SIZE);
+
+  /* The ZA register note in a core file can have a couple of states:
+
+     1 - Just the header without the payload.  This means that there is no
+	 ZA data, and we should dump just the header.
+
+     2 - The header with an additional data payload.  This means there is
+	 actual ZA data, and we should dump both the header and the ZA data
+	 payload.  */
+
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  /* Determine if we have ZA state from the SVCR register ZA bit.  */
+  ULONGEST svcr;
+  regcache->raw_collect (tdep->sme_svcr_regnum, &svcr);
+
+  /* Check the ZA payload.  */
+  bool has_za_payload = (svcr & SVCR_ZA_BIT) != 0;
+  size = has_za_payload ? size : SVE_HEADER_SIZE;
+
+  /* Write the size and max_size fields.  */
+  gdb_byte *header = (gdb_byte *) buf;
+  enum bfd_endian byte_order = gdbarch_byte_order (regcache->arch ());
+  store_unsigned_integer (header + SVE_HEADER_SIZE_OFFSET,
+			  SVE_HEADER_SIZE_LENGTH, byte_order, size);
+
+  uint32_t max_size
+    = SVE_HEADER_SIZE + std::pow (sve_vl_from_vq (tdep->sme_svq), 2);
+  store_unsigned_integer (header + SVE_HEADER_MAX_SIZE_OFFSET,
+			  SVE_HEADER_MAX_SIZE_LENGTH, byte_order, max_size);
+
+  /* Output the other fields of the ZA header (vl, max_vl, flags and
+     reserved).  */
+  uint64_t svq = tdep->sme_svq;
+  store_unsigned_integer (header + SVE_HEADER_VL_OFFSET, SVE_HEADER_VL_LENGTH,
+			  byte_order, sve_vl_from_vq (svq));
+
+  uint16_t max_vl = SVE_CORE_DUMMY_MAX_VL;
+  store_unsigned_integer (header + SVE_HEADER_MAX_VL_OFFSET,
+			  SVE_HEADER_MAX_VL_LENGTH, byte_order,
+			  max_vl);
+
+  uint16_t flags = SVE_CORE_DUMMY_FLAGS;
+  store_unsigned_integer (header + SVE_HEADER_FLAGS_OFFSET,
+			  SVE_HEADER_FLAGS_LENGTH, byte_order, flags);
+
+  uint16_t reserved = SVE_CORE_DUMMY_RESERVED;
+  store_unsigned_integer (header + SVE_HEADER_RESERVED_OFFSET,
+			  SVE_HEADER_RESERVED_LENGTH, byte_order, reserved);
+
+  buf = has_za_payload ? (gdb_byte *) buf + SVE_HEADER_SIZE : nullptr;
+
+  /* Dump the register cache contents for the ZA register to the buffer.  */
+  regcache->collect_regset (regset, regnum, (gdb_byte *) buf,
+			    size - SVE_HEADER_SIZE);
+}
+
+/* Supply register REGNUM from BUF to REGCACHE, using the register map
+   in REGSET.  If REGNUM is -1, do this for all registers in REGSET.
+   If BUF is NULL, set the registers to "unavailable" status.  */
+
+static void
+aarch64_linux_supply_zt_regset (const struct regset *regset,
+				struct regcache *regcache,
+				int regnum, const void *buf, size_t size)
+{
+  /* Read the ZT register note from a core file into the register buffer.  */
+
+  /* Make sure the buffer contains at least the expected amount of data we are
+     supposed to get.  */
+  gdb_assert (size >= AARCH64_SME2_ZT0_SIZE);
+
+  /* Handle an empty buffer.  */
+  if (buf == nullptr)
+    return regcache->supply_regset (regset, regnum, nullptr, size);
+
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  /* Supply the ZT0 register contents.  */
+  regcache->raw_supply (tdep->sme2_zt0_regnum, buf);
+}
+
+/* Collect register REGNUM from REGCACHE to BUF, using the register
+   map in REGSET.  If REGNUM is -1, do this for all registers in
+   REGSET.  */
+
+static void
+aarch64_linux_collect_zt_regset (const struct regset *regset,
+				 const struct regcache *regcache,
+				 int regnum, void *buf, size_t size)
+{
+  /* Read the ZT register contents from the register buffer into the core
+     file section.  */
+
+  /* Make sure the buffer can hold the data we need to return.  */
+  gdb_assert (size >= AARCH64_SME2_ZT0_SIZE);
+  gdb_assert (buf != nullptr);
+
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (regcache->arch ());
+
+  /* Dump the register cache contents for the ZT register to the buffer.  */
+  regcache->collect_regset (regset, tdep->sme2_zt0_regnum, buf,
+			    AARCH64_SME2_ZT0_SIZE);
+}
+
+/* Implement the "iterate_over_regset_sections" gdbarch method.  */
 
 static void
 aarch64_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
@@ -590,7 +1493,7 @@ aarch64_linux_iterate_over_regset_sectio
 					    void *cb_data,
 					    const struct regcache *regcache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   cb (".reg", AARCH64_LINUX_SIZEOF_GREGSET, AARCH64_LINUX_SIZEOF_GREGSET,
       &aarch64_linux_gregset, NULL, cb_data);
@@ -602,12 +1505,36 @@ aarch64_linux_iterate_over_regset_sectio
 	{
 	  { 32, AARCH64_SVE_Z0_REGNUM, (int) (tdep->vq * 16) },
 	  { 16, AARCH64_SVE_P0_REGNUM, (int) (tdep->vq * 16 / 8) },
-	  { 1, AARCH64_SVE_FFR_REGNUM, 4 },
+	  { 1, AARCH64_SVE_FFR_REGNUM, (int) (tdep->vq * 16 / 8) },
 	  { 1, AARCH64_FPSR_REGNUM, 4 },
 	  { 1, AARCH64_FPCR_REGNUM, 4 },
 	  { 0 }
 	};
 
+      const struct regset aarch64_linux_ssve_regset =
+	{
+	  sve_regmap,
+	  aarch64_linux_supply_ssve_regset, aarch64_linux_collect_ssve_regset,
+	  REGSET_VARIABLE_SIZE
+	};
+
+      /* If SME is supported in the core file, process the SSVE section first,
+	 and the SVE section last.  This is because we need information from
+	 the SSVE set to determine if streaming mode is active.  If streaming
+	 mode is active, we need to extract the data from the SSVE section.
+
+	 Otherwise, if streaming mode is not active, we fetch the data from the
+	 SVE section.  */
+      if (tdep->has_sme ())
+	{
+	  cb (".reg-aarch-ssve",
+	      SVE_HEADER_SIZE
+	      + regcache_map_entry_size (aarch64_linux_fpregmap),
+	      SVE_HEADER_SIZE + regcache_map_entry_size (sve_regmap),
+	      &aarch64_linux_ssve_regset, "SSVE registers", cb_data);
+	}
+
+      /* Handle the SVE register set.  */
       const struct regset aarch64_linux_sve_regset =
 	{
 	  sve_regmap,
@@ -624,6 +1551,56 @@ aarch64_linux_iterate_over_regset_sectio
     cb (".reg2", AARCH64_LINUX_SIZEOF_FPREGSET, AARCH64_LINUX_SIZEOF_FPREGSET,
 	&aarch64_linux_fpregset, NULL, cb_data);
 
+  if (tdep->has_sme ())
+    {
+      /* Setup the register set information for a ZA register set core
+	 dump.  */
+
+      /* Create this on the fly in order to handle the ZA register size.  */
+      const struct regcache_map_entry za_regmap[] =
+	{
+	  { 1, tdep->sme_za_regnum,
+	    (int) std::pow (sve_vl_from_vq (tdep->sme_svq), 2) },
+	  { 0 }
+	};
+
+      const struct regset aarch64_linux_za_regset =
+	{
+	  za_regmap,
+	  aarch64_linux_supply_za_regset, aarch64_linux_collect_za_regset,
+	  REGSET_VARIABLE_SIZE
+	};
+
+      cb (".reg-aarch-za",
+	  SVE_HEADER_SIZE,
+	  SVE_HEADER_SIZE + std::pow (sve_vl_from_vq (tdep->sme_svq), 2),
+	  &aarch64_linux_za_regset, "ZA register", cb_data);
+
+      /* Handle SME2 (ZT) as well, which is only available if SME is
+	 available.  */
+      if (tdep->has_sme2 ())
+	{
+	  const struct regcache_map_entry zt_regmap[] =
+	    {
+	      { 1, tdep->sme2_zt0_regnum, AARCH64_SME2_ZT0_SIZE },
+	      { 0 }
+	    };
+
+	  /* We set the register set size to REGSET_VARIABLE_SIZE here because
+	     in the future there might be more ZT registers.  */
+	  const struct regset aarch64_linux_zt_regset =
+	    {
+	      zt_regmap,
+	      aarch64_linux_supply_zt_regset, aarch64_linux_collect_zt_regset,
+	      REGSET_VARIABLE_SIZE
+	    };
+
+	  cb (".reg-aarch-zt",
+	      AARCH64_SME2_ZT0_SIZE,
+	      AARCH64_SME2_ZT0_SIZE,
+	      &aarch64_linux_zt_regset, "ZT registers", cb_data);
+	}
+    }
 
   if (tdep->has_pauth ())
     {
@@ -643,6 +1620,73 @@ aarch64_linux_iterate_over_regset_sectio
 	  AARCH64_LINUX_SIZEOF_PAUTH, &aarch64_linux_pauth_regset,
 	  "pauth registers", cb_data);
     }
+
+  /* Handle MTE registers.  */
+  if (tdep->has_mte ())
+    {
+      /* Create this on the fly in order to handle the variable location.  */
+      const struct regcache_map_entry mte_regmap[] =
+	{
+	  { 1, tdep->mte_reg_base, 8},
+	  { 0 }
+	};
+
+      const struct regset aarch64_linux_mte_regset =
+	{
+	  mte_regmap, regcache_supply_regset, regcache_collect_regset
+	};
+
+      cb (".reg-aarch-mte", AARCH64_LINUX_SIZEOF_MTE_REGSET,
+	  AARCH64_LINUX_SIZEOF_MTE_REGSET, &aarch64_linux_mte_regset,
+	  "MTE registers", cb_data);
+    }
+
+  /* Handle the TLS registers.  */
+  if (tdep->has_tls ())
+    {
+      gdb_assert (tdep->tls_regnum_base != -1);
+      gdb_assert (tdep->tls_register_count > 0);
+
+      int sizeof_tls_regset
+	= AARCH64_TLS_REGISTER_SIZE * tdep->tls_register_count;
+
+      const struct regcache_map_entry tls_regmap[] =
+	{
+	  { tdep->tls_register_count, tdep->tls_regnum_base,
+	    AARCH64_TLS_REGISTER_SIZE },
+	  { 0 }
+	};
+
+      const struct regset aarch64_linux_tls_regset =
+	{
+	  tls_regmap, regcache_supply_regset, regcache_collect_regset,
+	  REGSET_VARIABLE_SIZE
+	};
+
+      cb (".reg-aarch-tls", sizeof_tls_regset, sizeof_tls_regset,
+	  &aarch64_linux_tls_regset, "TLS register", cb_data);
+    }
+
+  /* Handle GCS registers.  */
+  if (tdep->has_gcs_linux ())
+    {
+      /* Create this on the fly in order to handle the variable regnums.  */
+      const regcache_map_entry gcs_regmap[] =
+	{
+	  { 1, tdep->gcs_linux_reg_base, 8 },      /* features_enabled */
+	  { 1, tdep->gcs_linux_reg_base + 1, 8 },  /* features_locked */
+	  { 1, tdep->gcs_reg_base, 8 },            /* GCSPR */
+	  { 0 }
+	};
+
+      const regset aarch64_linux_gcs_regset =
+	{
+	  gcs_regmap, regcache_supply_regset, regcache_collect_regset
+	};
+
+      cb (".reg-aarch-gcs", sizeof (user_gcs), sizeof (user_gcs),
+	  &aarch64_linux_gcs_regset, "GCS registers", cb_data);
+    }
 }
 
 /* Implement the "core_read_description" gdbarch method.  */
@@ -651,10 +1695,52 @@ static const struct target_desc *
 aarch64_linux_core_read_description (struct gdbarch *gdbarch,
 				     struct target_ops *target, bfd *abfd)
 {
-  CORE_ADDR hwcap = linux_get_hwcap (target);
+  std::optional<gdb::byte_vector> auxv = target_read_auxv_raw (target);
+  CORE_ADDR hwcap = linux_get_hwcap (auxv, target, gdbarch);
+  CORE_ADDR hwcap2 = linux_get_hwcap2 (auxv, target, gdbarch);
+
+  aarch64_features features;
+
+  /* We need to extract the SVE data from the .reg-aarch-sve section or the
+     .reg-aarch-ssve section depending on which one was active when the core
+     file was generated.
+
+     If the SSVE section contains SVE data, then it is considered active.
+     Otherwise the SVE section is considered active.  This guarantees we will
+     have the correct target description with the correct SVE vector
+     length.  */
+  features.vq = aarch64_linux_core_read_vq_from_sections (gdbarch, abfd);
+  features.pauth = hwcap & AARCH64_HWCAP_PACA;
+  features.gcs = features.gcs_linux = hwcap & HWCAP_GCS;
+  features.mte = hwcap2 & HWCAP2_MTE;
+
+  /* Handle the TLS section.  */
+  asection *tls = bfd_get_section_by_name (abfd, ".reg-aarch-tls");
+  if (tls != nullptr)
+    {
+      size_t size = bfd_section_size (tls);
+      /* Convert the size to the number of actual registers, by
+	 dividing by 8.  */
+      features.tls = size / AARCH64_TLS_REGISTER_SIZE;
+    }
+
+  features.svq
+    = aarch64_linux_core_read_vq (gdbarch, abfd, ".reg-aarch-za");
 
-  return aarch64_read_description (aarch64_linux_core_read_vq (gdbarch, abfd),
-				   hwcap & AARCH64_HWCAP_PACA);
+  /* Are the ZT registers available?  */
+  if (bfd_get_section_by_name (abfd, ".reg-aarch-zt") != nullptr)
+    {
+      /* Check if ZA is also available, otherwise this is an invalid
+	 combination.  */
+      if (bfd_get_section_by_name (abfd, ".reg-aarch-za") != nullptr)
+	features.sme2 = true;
+      else
+	warning (_("While reading core file sections, found ZT registers entry "
+		   "but no ZA register entry.  The ZT contents will be "
+		   "ignored"));
+    }
+
+  return aarch64_read_description (features);
 }
 
 /* Implementation of `gdbarch_stap_is_single_operand', as defined in
@@ -677,7 +1763,7 @@ aarch64_stap_is_single_operand (struct g
    It returns one if the special token has been parsed successfully,
    or zero if the current token is not considered special.  */
 
-static int
+static expr::operation_up
 aarch64_stap_parse_special_token (struct gdbarch *gdbarch,
 				  struct stap_parse_info *p)
 {
@@ -688,11 +1774,9 @@ aarch64_stap_parse_special_token (struct
       char *endp;
       /* Used to save the register name.  */
       const char *start;
-      char *regname;
       int len;
       int got_minus = 0;
       long displacement;
-      struct stoken str;
 
       ++tmp;
       start = tmp;
@@ -702,17 +1786,14 @@ aarch64_stap_parse_special_token (struct
 	++tmp;
 
       if (*tmp != ',')
-	return 0;
+	return {};
 
       len = tmp - start;
-      regname = (char *) alloca (len + 2);
-
-      strncpy (regname, start, len);
-      regname[len] = '\0';
+      std::string regname (start, len);
 
-      if (user_reg_map_name_to_regnum (gdbarch, regname, len) == -1)
+      if (user_reg_map_name_to_regnum (gdbarch, regname.c_str (), len) == -1)
 	error (_("Invalid register name `%s' on expression `%s'."),
-	       regname, p->saved_arg);
+	       regname.c_str (), p->saved_arg);
 
       ++tmp;
       tmp = skip_spaces (tmp);
@@ -730,50 +1811,44 @@ aarch64_stap_parse_special_token (struct
 	++tmp;
 
       if (!isdigit (*tmp))
-	return 0;
+	return {};
 
       displacement = strtol (tmp, &endp, 10);
       tmp = endp;
 
       /* Skipping last `]'.  */
       if (*tmp++ != ']')
-	return 0;
+	return {};
+      p->arg = tmp;
+
+      using namespace expr;
 
       /* The displacement.  */
-      write_exp_elt_opcode (&p->pstate, OP_LONG);
-      write_exp_elt_type (&p->pstate, builtin_type (gdbarch)->builtin_long);
-      write_exp_elt_longcst (&p->pstate, displacement);
-      write_exp_elt_opcode (&p->pstate, OP_LONG);
+      struct type *long_type = builtin_type (gdbarch)->builtin_long;
       if (got_minus)
-	write_exp_elt_opcode (&p->pstate, UNOP_NEG);
+	displacement = -displacement;
+      operation_up disp = make_operation<long_const_operation> (long_type,
+								displacement);
 
       /* The register name.  */
-      write_exp_elt_opcode (&p->pstate, OP_REGISTER);
-      str.ptr = regname;
-      str.length = len;
-      write_exp_string (&p->pstate, str);
-      write_exp_elt_opcode (&p->pstate, OP_REGISTER);
+      operation_up reg
+	= make_operation<register_operation> (std::move (regname));
 
-      write_exp_elt_opcode (&p->pstate, BINOP_ADD);
+      operation_up sum
+	= make_operation<add_operation> (std::move (reg), std::move (disp));
 
       /* Casting to the expected type.  */
-      write_exp_elt_opcode (&p->pstate, UNOP_CAST);
-      write_exp_elt_type (&p->pstate, lookup_pointer_type (p->arg_type));
-      write_exp_elt_opcode (&p->pstate, UNOP_CAST);
-
-      write_exp_elt_opcode (&p->pstate, UNOP_IND);
-
-      p->arg = tmp;
+      struct type *arg_ptr_type = lookup_pointer_type (p->arg_type);
+      sum = make_operation<unop_cast_operation> (std::move (sum),
+						 arg_ptr_type);
+      return make_operation<unop_ind_operation> (std::move (sum));
     }
-  else
-    return 0;
-
-  return 1;
+  return {};
 }
 
 /* AArch64 process record-replay constructs: syscall, signal etc.  */
 
-struct linux_record_tdep aarch64_linux_record_tdep;
+static linux_record_tdep aarch64_linux_record_tdep;
 
 /* Enum that defines the AArch64 linux specific syscall identifiers used for
    process record/replay.  */
@@ -1039,6 +2114,7 @@ enum aarch64_syscall {
   aarch64_sys_finit_module = 273,
   aarch64_sys_sched_setattr = 274,
   aarch64_sys_sched_getattr = 275,
+  aarch64_sys_getrandom = 278
 };
 
 /* aarch64_canonicalize_syscall maps syscall ids from the native AArch64
@@ -1048,11 +2124,17 @@ enum aarch64_syscall {
 static enum gdb_syscall
 aarch64_canonicalize_syscall (enum aarch64_syscall syscall_number)
 {
-#define SYSCALL_MAP(SYSCALL) case aarch64_sys_##SYSCALL: \
-  return gdb_sys_##SYSCALL
-
-#define UNSUPPORTED_SYSCALL_MAP(SYSCALL) case aarch64_sys_##SYSCALL: \
-  return gdb_sys_no_syscall
+#define SYSCALL_MAP(SYSCALL)			\
+  case aarch64_sys_ ## SYSCALL:			\
+    return gdb_sys_ ## SYSCALL
+
+#define SYSCALL_MAP_RENAME(SYSCALL, GDB_SYSCALL)	\
+  case aarch64_sys_ ## SYSCALL:				\
+    return GDB_SYSCALL;
+
+#define UNSUPPORTED_SYSCALL_MAP(SYSCALL)	\
+  case aarch64_sys_ ## SYSCALL:			\
+    return gdb_sys_no_syscall
 
   switch (syscall_number)
     {
@@ -1279,8 +2361,7 @@ aarch64_canonicalize_syscall (enum aarch
       SYSCALL_MAP (clone);
       SYSCALL_MAP (execve);
 
-    case aarch64_sys_mmap:
-      return gdb_sys_mmap2;
+      SYSCALL_MAP_RENAME (mmap, gdb_sys_old_mmap);
 
       SYSCALL_MAP (fadvise64);
       SYSCALL_MAP (swapon);
@@ -1301,7 +2382,7 @@ aarch64_canonicalize_syscall (enum aarch
       SYSCALL_MAP (move_pages);
       UNSUPPORTED_SYSCALL_MAP (rt_tgsigqueueinfo);
       UNSUPPORTED_SYSCALL_MAP (perf_event_open);
-      UNSUPPORTED_SYSCALL_MAP (accept4);
+      SYSCALL_MAP (accept4);
       UNSUPPORTED_SYSCALL_MAP (recvmmsg);
 
       SYSCALL_MAP (wait4);
@@ -1321,9 +2402,15 @@ aarch64_canonicalize_syscall (enum aarch
       UNSUPPORTED_SYSCALL_MAP (finit_module);
       UNSUPPORTED_SYSCALL_MAP (sched_setattr);
       UNSUPPORTED_SYSCALL_MAP (sched_getattr);
-  default:
-    return gdb_sys_no_syscall;
-  }
+      SYSCALL_MAP (getrandom);
+
+    default:
+      return gdb_sys_no_syscall;
+    }
+
+#undef SYSCALL_MAP
+#undef SYSCALL_MAP_RENAME
+#undef UNSUPPORTED_SYSCALL_MAP
 }
 
 /* Retrieve the syscall number at a ptrace syscall-stop, either on syscall entry
@@ -1391,9 +2478,10 @@ aarch64_linux_syscall_record (struct reg
 
   if (syscall_gdb < 0)
     {
-      printf_unfiltered (_("Process record and replay target doesn't "
-			   "support syscall number %s\n"),
-			 plongest (svc_number));
+      gdb_printf (gdb_stderr,
+		  _("Process record and replay target doesn't "
+		    "support syscall number %s\n"),
+		  plongest (svc_number));
       return -1;
     }
 
@@ -1432,6 +2520,404 @@ aarch64_linux_gcc_target_options (struct
   return {};
 }
 
+/* Implement the tagged_address_p gdbarch method.  */
+
+static bool
+aarch64_linux_tagged_address_p (struct gdbarch *gdbarch, CORE_ADDR address)
+{
+  /* Remove the top byte for the memory range check.  */
+  address = aarch64_remove_non_address_bits (gdbarch, address);
+
+  /* Check if the page that contains ADDRESS is mapped with PROT_MTE.  */
+  if (!linux_address_in_memtag_page (address))
+    return false;
+
+  /* We have a valid tag in the top byte of the 64-bit address.  */
+  return true;
+}
+
+/* Implement the "get_shadow_stack_pointer" gdbarch method.  */
+
+static std::optional<CORE_ADDR>
+aarch64_linux_get_shadow_stack_pointer (gdbarch *gdbarch, regcache *regcache,
+					bool &shadow_stack_enabled)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+  shadow_stack_enabled = false;
+
+  if (!tdep->has_gcs_linux ())
+    return {};
+
+  uint64_t features_enabled;
+  register_status status = regcache->cooked_read (tdep->gcs_linux_reg_base,
+						  &features_enabled);
+  if (status != REG_VALID)
+    error (_("Can't read $gcs_features_enabled."));
+
+  CORE_ADDR gcspr;
+  status = regcache->cooked_read (tdep->gcs_reg_base, &gcspr);
+  if (status != REG_VALID)
+    error (_("Can't read $gcspr."));
+
+  shadow_stack_enabled = features_enabled & PR_SHADOW_STACK_ENABLE;
+  return gcspr;
+}
+
+/* Implement Guarded Control Stack Pointer Register unwinding.  For each
+   previous GCS pointer check if its address is still in the GCS memory
+   range.  If it's outside the range set the returned value to unavailable,
+   otherwise return a value containing the new GCS pointer.  */
+
+static value *
+aarch64_linux_dwarf2_prev_gcspr (const frame_info_ptr &this_frame,
+				 void **this_cache, int regnum)
+{
+  value *v = frame_unwind_got_register (this_frame, regnum, regnum);
+  gdb_assert (v != nullptr);
+
+  gdbarch *gdbarch = get_frame_arch (this_frame);
+
+  if (v->entirely_available () && !v->optimized_out ())
+    {
+      int size = register_size (gdbarch, regnum);
+      bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+      CORE_ADDR gcspr = extract_unsigned_integer (v->contents_all ().data (),
+						  size, byte_order);
+
+      /* Starting with v6.13, the Linux kernel supports Guarded Control
+	 Stack.  Using /proc/PID/smaps we can only check if the current
+	 GCSPR points to GCS memory.  Only if this is the case a valid
+	 previous GCS pointer can be calculated.  */
+      std::pair<CORE_ADDR, CORE_ADDR> range;
+      if (linux_address_in_shadow_stack_mem_range (gcspr, &range))
+	{
+	  /* The GCS grows downwards.  To compute the previous GCS pointer,
+	     we need to increment the GCSPR.  */
+	  CORE_ADDR new_gcspr = gcspr + 8;
+
+	  /* If NEW_GCSPR still points within the current GCS memory range
+	     we consider it to be valid.  */
+	  if (new_gcspr < range.second)
+	    return frame_unwind_got_address (this_frame, regnum, new_gcspr);
+	}
+    }
+
+  /* Return a value which is marked as unavailable in case we could not
+     calculate a valid previous GCS pointer.  */
+  value *retval
+    = value::allocate_register (get_next_frame_sentinel_okay (this_frame),
+				regnum, register_type (gdbarch, regnum));
+  retval->mark_bytes_unavailable (0, retval->type ()->length ());
+  return retval;
+}
+
+/* AArch64 Linux implementation of the report_signal_info gdbarch
+   hook.  Displays information about possible memory tag violations.  */
+
+static void
+aarch64_linux_report_signal_info (struct gdbarch *gdbarch,
+				  struct ui_out *uiout,
+				  enum gdb_signal siggnal)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  if (!(tdep->has_mte () || tdep->has_gcs ()) || siggnal != GDB_SIGNAL_SEGV)
+    return;
+
+  CORE_ADDR fault_addr = 0;
+  long si_code = 0, si_errno = 0;
+
+  try
+    {
+      /* Sigcode tells us if the segfault is actually a memory tag
+	 violation.  */
+      si_code = parse_and_eval_long ("$_siginfo.si_code");
+      si_errno = parse_and_eval_long ("$_siginfo.si_errno");
+
+      fault_addr
+	= parse_and_eval_long ("$_siginfo._sifields._sigfault.si_addr");
+    }
+  catch (const gdb_exception_error &exception)
+    {
+      exception_print (gdb_stderr, exception);
+      return;
+    }
+
+  const char *meaning;
+
+  if (si_code == SEGV_MTEAERR || si_code == SEGV_MTESERR)
+    meaning = _("Memory tag violation");
+  else if (si_code == SEGV_CPERR && si_errno == 0)
+    meaning = _("Guarded Control Stack error");
+  else
+    return;
+
+  uiout->text ("\n");
+
+  uiout->field_string ("sigcode-meaning", meaning);
+
+  /* For synchronous faults, show additional information.  */
+  if (si_code == SEGV_MTESERR)
+    {
+      uiout->text (_(" while accessing address "));
+      uiout->field_core_addr ("fault-addr", gdbarch, fault_addr);
+      uiout->text ("\n");
+
+      std::optional<CORE_ADDR> atag
+	= aarch64_mte_get_atag (
+	    aarch64_remove_non_address_bits (gdbarch, fault_addr));
+
+      gdb_byte ltag = aarch64_mte_get_ltag (fault_addr);
+
+      if (!atag.has_value ())
+	uiout->text (_("Allocation tag unavailable"));
+      else
+	{
+	  uiout->text (_("Allocation tag "));
+	  uiout->field_string ("allocation-tag", hex_string (*atag));
+	  uiout->text ("\n");
+	  uiout->text (_("Logical tag "));
+	  uiout->field_string ("logical-tag", hex_string (ltag));
+	}
+    }
+  else if (si_code != SEGV_CPERR)
+    {
+      uiout->text ("\n");
+      uiout->text (_("Fault address unavailable"));
+    }
+}
+
+/* AArch64 Linux implementation of the gdbarch_create_memtag_section hook.  */
+
+static asection *
+aarch64_linux_create_memtag_section (struct gdbarch *gdbarch, bfd *obfd,
+				     CORE_ADDR address, size_t size)
+{
+  gdb_assert (obfd != nullptr);
+  gdb_assert (size > 0);
+
+  /* Create the section and associated program header.
+
+     Make sure the section's flags has SEC_HAS_CONTENTS, otherwise BFD will
+     refuse to write data to this section.  */
+  asection *mte_section
+    = bfd_make_section_anyway_with_flags (obfd, "memtag", SEC_HAS_CONTENTS);
+
+  if (mte_section == nullptr)
+    return nullptr;
+
+  bfd_set_section_vma (mte_section, address);
+  /* The size of the memory range covered by the memory tags.  We reuse the
+     section's rawsize field for this purpose.  */
+  mte_section->rawsize = size;
+
+  /* Fetch the number of tags we need to save.  */
+  size_t tags_count
+    = aarch64_mte_get_tag_granules (address, size, AARCH64_MTE_GRANULE_SIZE);
+  /* Tags are stored packed as 2 tags per byte.  */
+  bfd_set_section_size (mte_section, (tags_count + 1) >> 1);
+  /* Store program header information.  */
+  bfd_record_phdr (obfd, PT_AARCH64_MEMTAG_MTE, 1, 0, 0, 0, 0, 0, 1,
+		   &mte_section);
+
+  return mte_section;
+}
+
+/* Maximum number of tags to request.  */
+#define MAX_TAGS_TO_TRANSFER 1024
+
+/* AArch64 Linux implementation of the gdbarch_fill_memtag_section hook.  */
+
+static bool
+aarch64_linux_fill_memtag_section (struct gdbarch *gdbarch, asection *osec)
+{
+  /* We only handle MTE tags for now.  */
+
+  size_t segment_size = osec->rawsize;
+  CORE_ADDR start_address = bfd_section_vma (osec);
+  CORE_ADDR end_address = start_address + segment_size;
+
+  /* Figure out how many tags we need to store in this memory range.  */
+  size_t granules = aarch64_mte_get_tag_granules (start_address, segment_size,
+						  AARCH64_MTE_GRANULE_SIZE);
+
+  /* If there are no tag granules to fetch, just return.  */
+  if (granules == 0)
+    return true;
+
+  CORE_ADDR address = start_address;
+
+  /* Vector of tags.  */
+  gdb::byte_vector tags;
+
+  while (granules > 0)
+    {
+      /* Transfer tags in chunks.  */
+      gdb::byte_vector tags_read;
+      size_t xfer_len
+	= ((granules >= MAX_TAGS_TO_TRANSFER)
+	  ? MAX_TAGS_TO_TRANSFER * AARCH64_MTE_GRANULE_SIZE
+	  : granules * AARCH64_MTE_GRANULE_SIZE);
+
+      if (!target_fetch_memtags (address, xfer_len, tags_read,
+				 static_cast<int> (memtag_type::allocation)))
+	{
+	  warning (_("Failed to read MTE tags from memory range [%s,%s)."),
+		     phex_nz (start_address),
+		     phex_nz (end_address));
+	  return false;
+	}
+
+      /* Transfer over the tags that have been read.  */
+      tags.insert (tags.end (), tags_read.begin (), tags_read.end ());
+
+      /* Adjust the remaining granules and starting address.  */
+      granules -= tags_read.size ();
+      address += tags_read.size () * AARCH64_MTE_GRANULE_SIZE;
+    }
+
+  /* Pack the MTE tag bits.  */
+  aarch64_mte_pack_tags (tags);
+
+  if (!bfd_set_section_contents (osec->owner, osec, tags.data (),
+				 0, tags.size ()))
+    {
+      warning (_("Failed to write %s bytes of corefile memory "
+		 "tag content (%s)."),
+	       pulongest (tags.size ()),
+	       bfd_errmsg (bfd_get_error ()));
+    }
+  return true;
+}
+
+/* AArch64 Linux implementation of the gdbarch_decode_memtag_section
+   hook.  Decode a memory tag section and return the requested tags.
+
+   The section is guaranteed to cover the [ADDRESS, ADDRESS + length)
+   range.  */
+
+static gdb::byte_vector
+aarch64_linux_decode_memtag_section (struct gdbarch *gdbarch,
+				     bfd_section *section,
+				     int type,
+				     CORE_ADDR address, size_t length)
+{
+  gdb_assert (section != nullptr);
+
+  /* The requested address must not be less than section->vma.  */
+  gdb_assert (section->vma <= address);
+
+  /* Figure out how many tags we need to fetch in this memory range.  */
+  size_t granules = aarch64_mte_get_tag_granules (address, length,
+						  AARCH64_MTE_GRANULE_SIZE);
+  /* Sanity check.  */
+  gdb_assert (granules > 0);
+
+  /* Fetch the total number of tags in the range [VMA, address + length).  */
+  size_t granules_from_vma
+    = aarch64_mte_get_tag_granules (section->vma,
+				    address - section->vma + length,
+				    AARCH64_MTE_GRANULE_SIZE);
+
+  /* Adjust the tags vector to contain the exact number of packed bytes.  */
+  gdb::byte_vector tags (((granules - 1) >> 1) + 1);
+
+  /* Figure out the starting offset into the packed tags data.  */
+  file_ptr offset = ((granules_from_vma - granules) >> 1);
+
+  if (!bfd_get_section_contents (section->owner, section, tags.data (),
+				 offset, tags.size ()))
+    error (_("Couldn't read contents from memtag section."));
+
+  /* At this point, the tags are packed 2 per byte.  Unpack them before
+     returning.  */
+  bool skip_first = ((granules_from_vma - granules) % 2) != 0;
+  aarch64_mte_unpack_tags (tags, skip_first);
+
+  /* Resize to the exact number of tags that was requested.  */
+  tags.resize (granules);
+
+  return tags;
+}
+
+/* AArch64 Linux implementation of the
+   gdbarch_use_target_description_from_corefile_notes hook.  */
+
+static bool
+aarch64_use_target_description_from_corefile_notes (gdbarch *gdbarch,
+						    bfd *obfd)
+{
+  /* Sanity check.  */
+  gdb_assert (obfd != nullptr);
+
+  /* If the corefile contains any SVE or SME register data, we don't want to
+     use the target description note, as it may be incorrect.
+
+     Currently the target description note contains a potentially incorrect
+     target description if the originating program changed the SVE or SME
+     vector lengths mid-execution.
+
+     Once we support per-thread target description notes in the corefiles, we
+     can always trust those notes whenever they are available.  */
+  if (bfd_get_section_by_name (obfd, ".reg-aarch-sve") != nullptr
+      || bfd_get_section_by_name (obfd, ".reg-aarch-za") != nullptr
+      || bfd_get_section_by_name (obfd, ".reg-aarch-zt") != nullptr)
+    return false;
+
+  return true;
+}
+
+/* Fetch and return the TLS DTV (dynamic thread vector) address for PTID.
+   Throw a suitable TLS error if something goes wrong.  */
+
+static CORE_ADDR
+aarch64_linux_get_tls_dtv_addr (struct gdbarch *gdbarch, ptid_t ptid,
+				svr4_tls_libc libc)
+{
+  /* On aarch64, the thread pointer is found in the TPIDR register.
+     Note that this is the first register in the TLS feature - see
+     features/aarch64-tls.c - and it will always be present.  */
+  regcache *regcache
+    = get_thread_arch_regcache (current_inferior (), ptid, gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+  target_fetch_registers (regcache, tdep->tls_regnum_base);
+  ULONGEST thr_ptr;
+  if (regcache->cooked_read (tdep->tls_regnum_base, &thr_ptr) != REG_VALID)
+    throw_error (TLS_GENERIC_ERROR, _("Unable to fetch thread pointer"));
+
+  CORE_ADDR dtv_ptr_addr;
+  switch (libc)
+    {
+    case svr4_tls_libc_musl:
+      /* MUSL: The DTV pointer is found at the very end of the pthread
+	 struct which is located *before* the thread pointer.  I.e.
+	 the thread pointer will be just beyond the end of the struct,
+	 so the address of the DTV pointer is found one pointer-size
+	 before the thread pointer.  */
+      dtv_ptr_addr = thr_ptr - (gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT);
+      break;
+    case svr4_tls_libc_glibc:
+      /* GLIBC: The thread pointer (tpidr) points at the TCB (thread control
+	 block).  On aarch64, this struct (tcbhead_t) is defined to
+	 contain two pointers.  The first is a pointer to the DTV and
+	 the second is a pointer to private data.  So the DTV pointer
+	 address is the same as the thread pointer.  */
+      dtv_ptr_addr = thr_ptr;
+      break;
+    default:
+      throw_error (TLS_GENERIC_ERROR, _("Unknown aarch64 C library"));
+      break;
+    }
+  gdb::byte_vector buf (gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT);
+  if (target_read_memory (dtv_ptr_addr, buf.data (), buf.size ()) != 0)
+    throw_error (TLS_GENERIC_ERROR, _("Unable to fetch DTV address"));
+
+  const struct builtin_type *builtin = builtin_type (gdbarch);
+  CORE_ADDR dtv_addr = gdbarch_pointer_to_address
+			 (gdbarch, builtin->builtin_data_ptr, buf.data ());
+  return dtv_addr;
+}
+
 static void
 aarch64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
@@ -1441,18 +2927,26 @@ aarch64_linux_init_abi (struct gdbarch_i
 								    NULL };
   static const char *const stap_register_indirection_suffixes[] = { "]",
 								    NULL };
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
-  tdep->lowest_pc = 0x8000;
+  if (tdep->has_gcs () && !tdep->has_gcs_linux ())
+    {
+      warning (_("Incomplete GCS support in the target: missing Linux part."
+		 " GCS feature disabled."));
+      tdep->gcs_reg_base = -1;
+    }
 
-  linux_init_abi (info, gdbarch);
+  tdep->lowest_pc = 0x8000;
 
-  set_solib_svr4_fetch_link_map_offsets (gdbarch,
-					 svr4_lp64_fetch_link_map_offsets);
+  linux_init_abi (info, gdbarch, 1);
+  set_solib_svr4_ops (gdbarch, make_linux_lp64_svr4_solib_ops);
 
   /* Enable TLS support.  */
   set_gdbarch_fetch_tls_load_module_address (gdbarch,
-                                             svr4_fetch_objfile_link_map);
+					     svr4_fetch_objfile_link_map);
+  set_gdbarch_get_thread_local_address (gdbarch,
+					svr4_tls_get_thread_local_address);
+  svr4_tls_register_tls_methods (info, gdbarch, aarch64_linux_get_tls_dtv_addr);
 
   /* Shared library handling.  */
   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
@@ -1484,10 +2978,30 @@ aarch64_linux_init_abi (struct gdbarch_i
   /* Syscall record.  */
   tdep->aarch64_syscall_record = aarch64_linux_syscall_record;
 
-  /* The top byte of a user space address known as the "tag",
-     is ignored by the kernel and can be regarded as additional
-     data associated with the address.  */
-  set_gdbarch_significant_addr_bit (gdbarch, 56);
+  /* MTE-specific settings and hooks.  */
+  if (tdep->has_mte ())
+    {
+      /* Register a hook for checking if an address is tagged or not.  */
+      set_gdbarch_tagged_address_p (gdbarch, aarch64_linux_tagged_address_p);
+
+      /* Core file helpers.  */
+
+      /* Core file helper to create a memory tag section for a particular
+	 PT_LOAD segment.  */
+      set_gdbarch_create_memtag_section
+	(gdbarch, aarch64_linux_create_memtag_section);
+
+      /* Core file helper to fill a memory tag section with tag data.  */
+      set_gdbarch_fill_memtag_section
+	(gdbarch, aarch64_linux_fill_memtag_section);
+
+      /* Core file helper to decode a memory tag section.  */
+      set_gdbarch_decode_memtag_section (gdbarch,
+					 aarch64_linux_decode_memtag_section);
+    }
+
+  if (tdep->has_mte () || tdep->has_gcs ())
+    set_gdbarch_report_signal_info (gdbarch, aarch64_linux_report_signal_info);
 
   /* Initialize the aarch64_linux_record_tdep.  */
   /* These values are the size of the type that will be used in a system
@@ -1654,20 +3168,62 @@ aarch64_linux_init_abi (struct gdbarch_i
   set_gdbarch_get_syscall_number (gdbarch, aarch64_linux_get_syscall_number);
 
   /* Displaced stepping.  */
-  set_gdbarch_max_insn_length (gdbarch, 4 * AARCH64_DISPLACED_MODIFIED_INSNS);
+  set_gdbarch_max_insn_length (gdbarch, 4);
+  set_gdbarch_displaced_step_buffer_length
+    (gdbarch, 4 * AARCH64_DISPLACED_MODIFIED_INSNS);
   set_gdbarch_displaced_step_copy_insn (gdbarch,
 					aarch64_displaced_step_copy_insn);
   set_gdbarch_displaced_step_fixup (gdbarch, aarch64_displaced_step_fixup);
-  set_gdbarch_displaced_step_location (gdbarch, linux_displaced_step_location);
   set_gdbarch_displaced_step_hw_singlestep (gdbarch,
 					    aarch64_displaced_step_hw_singlestep);
 
   set_gdbarch_gcc_target_options (gdbarch, aarch64_linux_gcc_target_options);
+
+  /* Hook to decide if the target description should be obtained from
+     corefile target description note(s) or inferred from the corefile
+     sections.  */
+  set_gdbarch_use_target_description_from_corefile_notes (gdbarch,
+			    aarch64_use_target_description_from_corefile_notes);
+
+  if (tdep->has_gcs_linux ())
+    {
+      set_gdbarch_get_shadow_stack_pointer (gdbarch,
+					aarch64_linux_get_shadow_stack_pointer);
+      tdep->fn_prev_gcspr = aarch64_linux_dwarf2_prev_gcspr;
+    }
 }
 
-void
-_initialize_aarch64_linux_tdep (void)
+#if GDB_SELF_TEST
+
+namespace selftests {
+
+/* Verify functions to read and write logical tags.  */
+
+static void
+aarch64_linux_ltag_tests (void)
+{
+  /* We have 4 bits of tags, but we test writing all the bits of the top
+     byte of address.  */
+  for (int i = 0; i < 1 << 8; i++)
+    {
+      CORE_ADDR addr = ((CORE_ADDR) i << 56) | 0xdeadbeef;
+      SELF_CHECK (aarch64_mte_get_ltag (addr) == (i & 0xf));
+
+      addr = aarch64_mte_set_ltag (0xdeadbeef, i);
+      SELF_CHECK (addr = ((CORE_ADDR) (i & 0xf) << 56) | 0xdeadbeef);
+    }
+}
+
+} /* namespace selftests */
+#endif /* GDB_SELF_TEST */
+
+INIT_GDB_FILE (aarch64_linux_tdep)
 {
   gdbarch_register_osabi (bfd_arch_aarch64, 0, GDB_OSABI_LINUX,
 			  aarch64_linux_init_abi);
+
+#if GDB_SELF_TEST
+  selftests::register_test ("aarch64-linux-tagged-address",
+			    selftests::aarch64_linux_ltag_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.20200303/gdb/aarch64-linux-tdep.h ./gdb/aarch64-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-linux-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-linux-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux on AArch64 target support, prototypes.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -18,8 +18,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/>.  */
 
-#ifndef AARCH64_LINUX_TDEP_H
-#define AARCH64_LINUX_TDEP_H
+#ifndef GDB_AARCH64_LINUX_TDEP_H
+#define GDB_AARCH64_LINUX_TDEP_H
 
 #include "regset.h"
 
@@ -36,10 +36,13 @@
 /* The pauth regset consists of 2 X sized registers.  */
 #define AARCH64_LINUX_SIZEOF_PAUTH (2 * X_REGISTER_SIZE)
 
+/* The MTE regset consists of a 64-bit register.  */
+#define AARCH64_LINUX_SIZEOF_MTE_REGSET (8)
+
 extern const struct regset aarch64_linux_gregset;
 extern const struct regset aarch64_linux_fpregset;
 
 /* Matches HWCAP_PACA in kernel header arch/arm64/include/uapi/asm/hwcap.h.  */
 #define AARCH64_HWCAP_PACA (1 << 30)
 
-#endif /* AARCH64_LINUX_TDEP_H */
+#endif /* GDB_AARCH64_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.20200303/gdb/aarch64-nat.c ./gdb/aarch64-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-nat.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/aarch64-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,252 @@
+/* Native-dependent code for AArch64.
+
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "gdbarch.h"
+#include "inferior.h"
+#include "cli/cli-cmds.h"
+#include "aarch64-nat.h"
+
+#include <unordered_map>
+
+/* Hash table storing per-process data.  We don't bind this to a
+   per-inferior registry because of targets like x86 GNU/Linux that
+   need to keep track of processes that aren't bound to any inferior
+   (e.g., fork children, checkpoints).  */
+
+static std::unordered_map<pid_t, aarch64_debug_reg_state>
+aarch64_debug_process_state;
+
+/* See aarch64-nat.h.  */
+
+struct aarch64_debug_reg_state *
+aarch64_lookup_debug_reg_state (pid_t pid)
+{
+  auto it = aarch64_debug_process_state.find (pid);
+  if (it != aarch64_debug_process_state.end ())
+    return &it->second;
+
+  return nullptr;
+}
+
+/* See aarch64-nat.h.  */
+
+struct aarch64_debug_reg_state *
+aarch64_get_debug_reg_state (pid_t pid)
+{
+  return &aarch64_debug_process_state[pid];
+}
+
+/* See aarch64-nat.h.  */
+
+void
+aarch64_remove_debug_reg_state (pid_t pid)
+{
+  aarch64_debug_process_state.erase (pid);
+}
+
+/* Returns the number of hardware watchpoints of type TYPE that we can
+   set.  Value is positive if we can set CNT watchpoints, zero if
+   setting watchpoints of type TYPE is not supported, and negative if
+   CNT is more than the maximum number of watchpoints of type TYPE
+   that we can support.  TYPE is one of bp_hardware_watchpoint,
+   bp_read_watchpoint, bp_write_watchpoint, or bp_hardware_breakpoint.
+   CNT is the number of such watchpoints used so far (including this
+   one).  OTHERTYPE is non-zero if other types of watchpoints are
+   currently enabled.  */
+
+int
+aarch64_can_use_hw_breakpoint (enum bptype type, int cnt, int othertype)
+{
+  if (type == bp_hardware_watchpoint || type == bp_read_watchpoint
+      || type == bp_access_watchpoint || type == bp_watchpoint)
+    {
+      if (aarch64_num_wp_regs == 0)
+	return 0;
+    }
+  else if (type == bp_hardware_breakpoint)
+    {
+      if (aarch64_num_bp_regs == 0)
+	return 0;
+    }
+  else
+    gdb_assert_not_reached ("unexpected breakpoint type");
+
+  /* We always return 1 here because we don't have enough information
+     about possible overlap of addresses that they want to watch.  As an
+     extreme example, consider the case where all the watchpoints watch
+     the same address and the same region length: then we can handle a
+     virtually unlimited number of watchpoints, due to debug register
+     sharing implemented via reference counts.  */
+  return 1;
+}
+
+/* Insert a hardware-assisted breakpoint at BP_TGT->reqstd_address.
+   Return 0 on success, -1 on failure.  */
+
+int
+aarch64_insert_hw_breakpoint (struct gdbarch *gdbarch,
+			      struct bp_target_info *bp_tgt)
+{
+  int ret;
+  CORE_ADDR addr = bp_tgt->placed_address = bp_tgt->reqstd_address;
+  int len;
+  const enum target_hw_bp_type type = hw_execute;
+  struct aarch64_debug_reg_state *state
+    = aarch64_get_debug_reg_state (inferior_ptid.pid ());
+
+  gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
+
+  if (show_debug_regs)
+    gdb_printf (gdb_stdlog,
+		"insert_hw_breakpoint on entry (addr=0x%08lx, len=%d))\n",
+		(unsigned long) addr, len);
+
+  ret = aarch64_handle_breakpoint (type, addr, len, 1 /* is_insert */,
+				   inferior_ptid, state);
+
+  if (show_debug_regs)
+    {
+      aarch64_show_debug_reg_state (state,
+				    "insert_hw_breakpoint", addr, len, type);
+    }
+
+  return ret;
+}
+
+/* Remove a hardware-assisted breakpoint at BP_TGT->placed_address.
+   Return 0 on success, -1 on failure.  */
+
+int
+aarch64_remove_hw_breakpoint (struct gdbarch *gdbarch,
+			      struct bp_target_info *bp_tgt)
+{
+  int ret;
+  CORE_ADDR addr = bp_tgt->placed_address;
+  int len = 4;
+  const enum target_hw_bp_type type = hw_execute;
+  struct aarch64_debug_reg_state *state
+    = aarch64_get_debug_reg_state (inferior_ptid.pid ());
+
+  gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
+
+  if (show_debug_regs)
+    gdb_printf (gdb_stdlog,
+		"remove_hw_breakpoint on entry (addr=0x%08lx, len=%d))\n",
+		(unsigned long) addr, len);
+
+  ret = aarch64_handle_breakpoint (type, addr, len, 0 /* is_insert */,
+				   inferior_ptid, state);
+
+  if (show_debug_regs)
+    {
+      aarch64_show_debug_reg_state (state,
+				    "remove_hw_watchpoint", addr, len, type);
+    }
+
+  return ret;
+}
+
+/* Insert a watchpoint to watch a memory region which starts at
+   address ADDR and whose length is LEN bytes.  Watch memory accesses
+   of the type TYPE.  Return 0 on success, -1 on failure.  */
+
+int
+aarch64_insert_watchpoint (CORE_ADDR addr, int len, enum target_hw_bp_type type,
+			   struct expression *cond)
+{
+  int ret;
+  struct aarch64_debug_reg_state *state
+    = aarch64_get_debug_reg_state (inferior_ptid.pid ());
+
+  if (show_debug_regs)
+    gdb_printf (gdb_stdlog,
+		"insert_watchpoint on entry (addr=0x%08lx, len=%d)\n",
+		(unsigned long) addr, len);
+
+  gdb_assert (type != hw_execute);
+
+  ret = aarch64_handle_watchpoint (type, addr, len, 1 /* is_insert */,
+				   inferior_ptid, state);
+
+  if (show_debug_regs)
+    {
+      aarch64_show_debug_reg_state (state,
+				    "insert_watchpoint", addr, len, type);
+    }
+
+  return ret;
+}
+
+/* Remove a watchpoint that watched the memory region which starts at
+   address ADDR, whose length is LEN bytes, and for accesses of the
+   type TYPE.  Return 0 on success, -1 on failure.  */
+
+int
+aarch64_remove_watchpoint (CORE_ADDR addr, int len, enum target_hw_bp_type type,
+			   struct expression *cond)
+{
+  int ret;
+  struct aarch64_debug_reg_state *state
+    = aarch64_get_debug_reg_state (inferior_ptid.pid ());
+
+  if (show_debug_regs)
+    gdb_printf (gdb_stdlog,
+		"remove_watchpoint on entry (addr=0x%08lx, len=%d)\n",
+		(unsigned long) addr, len);
+
+  gdb_assert (type != hw_execute);
+
+  ret = aarch64_handle_watchpoint (type, addr, len, 0 /* is_insert */,
+				   inferior_ptid, state);
+
+  if (show_debug_regs)
+    {
+      aarch64_show_debug_reg_state (state,
+				    "remove_watchpoint", addr, len, type);
+    }
+
+  return ret;
+}
+
+/* Define AArch64 maintenance commands.  */
+
+static void
+add_show_debug_regs_command (void)
+{
+  /* A maintenance command to enable printing the internal DRi mirror
+     variables.  */
+  add_setshow_boolean_cmd ("show-debug-regs", class_maintenance,
+			   &show_debug_regs, _("\
+Set whether to show variables that mirror the AArch64 debug registers."), _("\
+Show whether to show variables that mirror the AArch64 debug registers."), _("\
+Use \"on\" to enable, \"off\" to disable.\n\
+If enabled, the debug registers values are shown when GDB inserts\n\
+or removes a hardware breakpoint or watchpoint, and when the inferior\n\
+triggers a breakpoint or watchpoint."),
+			   NULL,
+			   NULL,
+			   &maintenance_set_cmdlist,
+			   &maintenance_show_cmdlist);
+}
+
+void
+aarch64_initialize_hw_point ()
+{
+  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.20200303/gdb/aarch64-nat.h ./gdb/aarch64-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-nat.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/aarch64-nat.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,97 @@
+/* Native-dependent code for AArch64.
+
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_AARCH64_NAT_H
+#define GDB_AARCH64_NAT_H
+
+#include "breakpoint.h"
+#include "nat/aarch64-hw-point.h"
+#include "target.h"
+
+/* Hardware-assisted breakpoints and watchpoints.  */
+
+/* Initialize platform-independent state for hardware-assisted
+   breakpoints and watchpoints.  */
+
+void aarch64_initialize_hw_point ();
+
+/* Return the debug register state for process PID.  If no existing
+   state is found for this process, return nullptr.  */
+
+struct aarch64_debug_reg_state *aarch64_lookup_debug_reg_state (pid_t pid);
+
+/* Return the debug register state for process PID.  If no existing
+   state is found for this process, create new state.  */
+
+struct aarch64_debug_reg_state *aarch64_get_debug_reg_state (pid_t pid);
+
+/* Remove any existing per-process debug state for process PID.  */
+
+void aarch64_remove_debug_reg_state (pid_t pid);
+
+/* Helper functions used by aarch64_nat_target below.  See their
+   definitions.  */
+
+int aarch64_can_use_hw_breakpoint (enum bptype type, int cnt, int othertype);
+int aarch64_insert_watchpoint (CORE_ADDR addr, int len,
+			       enum target_hw_bp_type type,
+			       struct expression *cond);
+int aarch64_remove_watchpoint (CORE_ADDR addr, int len,
+			       enum target_hw_bp_type type,
+			       struct expression *cond);
+int aarch64_insert_hw_breakpoint (struct gdbarch *gdbarch,
+				  struct bp_target_info *bp_tgt);
+int aarch64_remove_hw_breakpoint (struct gdbarch *gdbarch,
+				  struct bp_target_info *bp_tgt);
+int aarch64_stopped_by_hw_breakpoint ();
+
+/* Convenience template mixin used to add aarch64 watchpoints support to a
+   target.  */
+
+template <typename BaseTarget>
+struct aarch64_nat_target : public BaseTarget
+{
+  /* Hook in common aarch64 hardware watchpoints/breakpoints support.  */
+
+  int can_use_hw_breakpoint (enum bptype type, int cnt, int othertype) override
+  { return aarch64_can_use_hw_breakpoint (type, cnt, othertype); }
+
+  int region_ok_for_hw_watchpoint (CORE_ADDR addr, int len) override
+  { return aarch64_region_ok_for_watchpoint (addr, len); }
+
+  int insert_watchpoint (CORE_ADDR addr, int len,
+			 enum target_hw_bp_type type,
+			 struct expression *cond) override
+  { return aarch64_insert_watchpoint (addr, len, type, cond); }
+
+  int remove_watchpoint (CORE_ADDR addr, int len,
+			 enum target_hw_bp_type type,
+			 struct expression *cond) override
+  { return aarch64_remove_watchpoint (addr, len, type, cond); }
+
+  int insert_hw_breakpoint (struct gdbarch *gdbarch,
+			    struct bp_target_info *bp_tgt) override
+  { return aarch64_insert_hw_breakpoint (gdbarch, bp_tgt); }
+
+  int remove_hw_breakpoint (struct gdbarch *gdbarch,
+			    struct bp_target_info *bp_tgt) override
+  { return aarch64_remove_hw_breakpoint (gdbarch, bp_tgt); }
+};
+
+#endif /* GDB_AARCH64_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.20200303/gdb/aarch64-newlib-tdep.c ./gdb/aarch64-newlib-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-newlib-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-newlib-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Newlib AArch64.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -18,7 +18,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/>.  */
 
-#include "defs.h"
 
 #include "gdbarch.h"
 #include "aarch64-tdep.h"
@@ -29,15 +28,14 @@
 static void
 aarch64_newlib_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   /* Jump buffer - support for longjmp.
      Offset of original PC in jump buffer (in registers).  */
   tdep->jb_pc = 11;
 }
 
-void
-_initialize_aarch64_newlib_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/aarch64-ravenscar-thread.c ./gdb/aarch64-ravenscar-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-ravenscar-thread.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-ravenscar-thread.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ravenscar Aarch64 target support.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "gdbcore.h"
 #include "regcache.h"
 #include "aarch64-tdep.h"
@@ -47,144 +46,31 @@ static const int aarch64_context_offsets
   80,        88,        96,        88,
   NO_OFFSET,
 
-  /* Q0 - Q31 */
-  112,       128,       144,       160,
-  176,       192,       208,       224,
-  240,       256,       272,       288,
-  304,       320,       336,       352,
-  368,       384,       400,       416,
-  432,       448,       464,       480,
-  496,       512,       528,       544,
-  560,       576,       592,       608,
+  /* V0 - V31 */
+  128,       144,       160,       176,
+  192,       208,       224,       240,
+  256,       272,       288,       304,
+  320,       336,       352,       368,
+  384,       400,       416,       432,
+  448,       464,       480,       496,
+  512,       528,       544,       560,
+  576,       592,       608,       624,
 
   /* FPSR, FPCR */
-  104,       108,
-
-  /* FPU Saved field */
-  624
-};
-
-/* The register layout info.  */
-
-struct ravenscar_reg_info
-{
-  /* A table providing the offset relative to the context structure
-     where each register is saved.  */
-  const int *context_offsets;
-
-  /* The number of elements in the context_offsets table above.  */
-  int context_offsets_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);
-}
-
-/* Return true if, for a non-running thread, REGNUM has been saved on the
-   Thread_Descriptor.  */
-
-static int
-register_in_thread_descriptor_p (const struct ravenscar_reg_info *reg_info,
-				 int regnum)
-{
-  /* Check FPU registers */
-  return (regnum < reg_info->context_offsets_size
-	  && reg_info->context_offsets[regnum] != NO_OFFSET);
-}
-
-/* to_fetch_registers when inferior_ptid is different from the running
-   thread.  */
-
-static void
-aarch64_ravenscar_generic_fetch_registers
-  (const struct ravenscar_reg_info *reg_info,
-   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++)
-    {
-      if (register_in_thread_descriptor_p (reg_info, current_regnum))
-        {
-          current_address = thread_descriptor_address
-            + reg_info->context_offsets[current_regnum];
-          supply_register_at_address (regcache, current_regnum,
-                                      current_address);
-        }
-    }
-}
-
-/* to_store_registers when inferior_ptid is different from the running
-   thread.  */
-
-static void
-aarch64_ravenscar_generic_store_registers
-  (const struct ravenscar_reg_info *reg_info,
-   struct regcache *regcache, int regnum)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  int buf_size = register_size (gdbarch, regnum);
-  gdb_byte buf[buf_size];
-  ULONGEST register_address;
-
-  if (register_in_thread_descriptor_p (reg_info, regnum))
-    register_address
-      = inferior_ptid.tid () + reg_info->context_offsets [regnum];
-  else
-    return;
-
-  regcache->raw_collect (regnum, buf);
-  write_memory (register_address,
-                buf,
-                buf_size);
-}
-
-/* The ravenscar_reg_info for most Aarch64 targets.  */
-
-static const struct ravenscar_reg_info aarch64_reg_info =
-{
-  aarch64_context_offsets,
-  ARRAY_SIZE (aarch64_context_offsets),
+  112,       116,
 };
 
-struct aarch64_ravenscar_ops : public ravenscar_arch_ops
-{
-  void fetch_registers (struct regcache *regcache, int regnum) override
-  {
-    aarch64_ravenscar_generic_fetch_registers
-      (&aarch64_reg_info, regcache, regnum);
-  }
-
-  void store_registers (struct regcache *regcache, int regnum) override
-  {
-    aarch64_ravenscar_generic_store_registers
-      (&aarch64_reg_info, regcache, regnum);
-  }
-};
+#define V_INIT_OFFSET 640
 
 /* The ravenscar_arch_ops vector for most Aarch64 targets.  */
 
-static struct aarch64_ravenscar_ops aarch64_ravenscar_ops;
+static struct ravenscar_arch_ops aarch64_ravenscar_ops
+     (aarch64_context_offsets,
+      -1, -1,
+      V_INIT_OFFSET,
+      /* The FPU context buffer starts with the FPSR register.  */
+      aarch64_context_offsets[AARCH64_FPSR_REGNUM],
+      AARCH64_V0_REGNUM, AARCH64_FPCR_REGNUM);
 
 /* Register aarch64_ravenscar_ops in 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.20200303/gdb/aarch64-ravenscar-thread.h ./gdb/aarch64-ravenscar-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-ravenscar-thread.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-ravenscar-thread.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Ravenscar Aarch64 target support.
  
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,11 +17,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/>.  */
 
-#ifndef AARCH64_RAVENSCAR_THREAD_H
-#define AARCH64_RAVENSCAR_THREAD_H
+#ifndef GDB_AARCH64_RAVENSCAR_THREAD_H
+#define GDB_AARCH64_RAVENSCAR_THREAD_H
 
 struct gdbarch;
 
 extern void register_aarch64_ravenscar_ops (struct gdbarch *gdbarch);
 
-#endif
+#endif /* GDB_AARCH64_RAVENSCAR_THREAD_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.20200303/gdb/aarch64-tdep.c ./gdb/aarch64-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -18,10 +18,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/>.  */
 
-#include "defs.h"
 
+#include "extract-store-integer.h"
 #include "frame.h"
-#include "gdbcmd.h"
+#include "language.h"
+#include "cli/cli-cmds.h"
 #include "gdbcore.h"
 #include "dis-asm.h"
 #include "regcache.h"
@@ -34,7 +35,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"
@@ -44,6 +45,7 @@
 
 #include "aarch64-tdep.h"
 #include "aarch64-ravenscar-thread.h"
+#include "arch/aarch64-mte.h"
 
 #include "record.h"
 #include "record-full.h"
@@ -52,63 +54,34 @@
 
 #include "opcode/aarch64.h"
 #include <algorithm>
+#include <unordered_map>
 
-#define submask(x) ((1L << ((x) + 1)) - 1)
-#define bit(obj,st) (((obj) >> (st)) & 1)
-#define bits(obj,st,fn) (((obj) >> (st)) & submask ((fn) - (st)))
+/* For inferior_ptid and current_inferior ().  */
+#include "inferior.h"
+/* For std::sqrt and std::pow.  */
+#include <cmath>
 
 /* A Homogeneous Floating-Point or Short-Vector Aggregate may have at most
    four members.  */
 #define HA_MAX_NUM_FLDS		4
 
 /* All possible aarch64 target descriptors.  */
-struct target_desc *tdesc_aarch64_list[AARCH64_MAX_SVE_VQ + 1][2/*pauth*/];
+static std::unordered_map <aarch64_features, target_desc *> tdesc_aarch64_map;
 
-/* The standard register names, and all the valid aliases for them.  */
+/* The standard register names, and all the valid aliases for them.
+   We're not adding fp here, that name is already taken, see
+   _initialize_frame_reg.  */
 static const struct
 {
   const char *const name;
   int regnum;
 } aarch64_register_aliases[] =
 {
-  /* 64-bit register names.  */
-  {"fp", AARCH64_FP_REGNUM},
+  /* Link register alias for x30.  */
   {"lr", AARCH64_LR_REGNUM},
-  {"sp", AARCH64_SP_REGNUM},
-
-  /* 32-bit register names.  */
-  {"w0", AARCH64_X0_REGNUM + 0},
-  {"w1", AARCH64_X0_REGNUM + 1},
-  {"w2", AARCH64_X0_REGNUM + 2},
-  {"w3", AARCH64_X0_REGNUM + 3},
-  {"w4", AARCH64_X0_REGNUM + 4},
-  {"w5", AARCH64_X0_REGNUM + 5},
-  {"w6", AARCH64_X0_REGNUM + 6},
-  {"w7", AARCH64_X0_REGNUM + 7},
-  {"w8", AARCH64_X0_REGNUM + 8},
-  {"w9", AARCH64_X0_REGNUM + 9},
-  {"w10", AARCH64_X0_REGNUM + 10},
-  {"w11", AARCH64_X0_REGNUM + 11},
-  {"w12", AARCH64_X0_REGNUM + 12},
-  {"w13", AARCH64_X0_REGNUM + 13},
-  {"w14", AARCH64_X0_REGNUM + 14},
-  {"w15", AARCH64_X0_REGNUM + 15},
-  {"w16", AARCH64_X0_REGNUM + 16},
-  {"w17", AARCH64_X0_REGNUM + 17},
-  {"w18", AARCH64_X0_REGNUM + 18},
-  {"w19", AARCH64_X0_REGNUM + 19},
-  {"w20", AARCH64_X0_REGNUM + 20},
-  {"w21", AARCH64_X0_REGNUM + 21},
-  {"w22", AARCH64_X0_REGNUM + 22},
-  {"w23", AARCH64_X0_REGNUM + 23},
-  {"w24", AARCH64_X0_REGNUM + 24},
-  {"w25", AARCH64_X0_REGNUM + 25},
-  {"w26", AARCH64_X0_REGNUM + 26},
-  {"w27", AARCH64_X0_REGNUM + 27},
-  {"w28", AARCH64_X0_REGNUM + 28},
-  {"w29", AARCH64_X0_REGNUM + 29},
-  {"w30", AARCH64_X0_REGNUM + 30},
-
+  /* SP is the canonical name for x31 according to aarch64_r_register_names,
+     so we're adding an x31 alias for sp.  */
+  {"x31", AARCH64_SP_REGNUM},
   /*  specials */
   {"ip0", AARCH64_X0_REGNUM + 16},
   {"ip1", AARCH64_X0_REGNUM + 17}
@@ -170,12 +143,36 @@ static const char *const aarch64_sve_reg
 
 static const char *const aarch64_pauth_register_names[] =
 {
-  /* Authentication mask for data pointer.  */
+  /* Authentication mask for data pointer, low half/user pointers.  */
   "pauth_dmask",
-  /* Authentication mask for code pointer.  */
-  "pauth_cmask"
+  /* Authentication mask for code pointer, low half/user pointers.  */
+  "pauth_cmask",
+  /* Authentication mask for data pointer, high half / kernel pointers.  */
+  "pauth_dmask_high",
+  /* Authentication mask for code pointer, high half / kernel pointers.  */
+  "pauth_cmask_high"
+};
+
+static const char *const aarch64_mte_register_names[] =
+{
+  /* Tag Control Register.  */
+  "tag_ctl"
+};
+
+static const char *const aarch64_gcs_register_names[] = {
+  /* Guarded Control Stack Pointer Register.  */
+  "gcspr"
+};
+
+static const char *const aarch64_gcs_linux_register_names[] = {
+  /* Field in struct user_gcs.  */
+  "gcs_features_enabled",
+  /* Field in struct user_gcs.  */
+  "gcs_features_locked",
 };
 
+static int aarch64_stack_frame_destroyed_p (struct gdbarch *, CORE_ADDR);
+
 /* AArch64 prologue cache structure.  */
 struct aarch64_prologue_cache
 {
@@ -205,14 +202,51 @@ struct aarch64_prologue_cache
   int framereg;
 
   /* Saved register offsets.  */
-  struct trad_frame_saved_reg *saved_regs;
+  trad_frame_saved_reg *saved_regs;
+};
+
+/* Holds information used to read/write from/to ZA
+   pseudo-registers.
+
+   With this information, the read/write code can be simplified so it
+   deals only with the required information to map a ZA pseudo-register
+   to the exact bytes into the ZA contents buffer.  Otherwise we'd need
+   to use a lot of conditionals.  */
+
+struct za_offsets
+{
+  /* Offset, into ZA, of the starting byte of the pseudo-register.  */
+  size_t starting_offset;
+  /* The size of the contiguous chunks of the pseudo-register.  */
+  size_t chunk_size;
+  /* The number of pseudo-register chunks contained in ZA.  */
+  size_t chunks;
+  /* The offset between each contiguous chunk.  */
+  size_t stride_size;
+};
+
+/* Holds data that is helpful to determine the individual fields that make
+   up the names of the ZA pseudo-registers.  It is also very helpful to
+   determine offsets, stride and sizes for reading ZA tiles and tile
+   slices.  */
+
+struct za_pseudo_encoding
+{
+  /* The slice index (0 ~ svl).  Only used for tile slices.  */
+  uint8_t slice_index;
+  /* The tile number (0 ~ 15).  */
+  uint8_t tile_index;
+  /* Direction (horizontal/vertical).  Only used for tile slices.  */
+  bool horizontal;
+  /* Qualifier index (0 ~ 4).  These map to B, H, S, D and Q.  */
+  uint8_t qualifier_index;
 };
 
 static void
 show_aarch64_debug (struct ui_file *file, int from_tty,
-                    struct cmd_list_element *c, const char *value)
+		    struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("AArch64 debugging is %s.\n"), value);
+  gdb_printf (file, _("AArch64 debugging is %s.\n"), value);
 }
 
 namespace {
@@ -246,16 +280,26 @@ class instruction_reader : public abstra
    THIS_FRAME.  */
 
 static CORE_ADDR
-aarch64_frame_unmask_lr (struct gdbarch_tdep *tdep,
-			 struct frame_info *this_frame, CORE_ADDR addr)
+aarch64_frame_unmask_lr (aarch64_gdbarch_tdep *tdep,
+			 const frame_info_ptr &this_frame, CORE_ADDR addr)
 {
   if (tdep->has_pauth ()
       && frame_unwind_register_unsigned (this_frame,
-					 tdep->pauth_ra_state_regnum))
+					 tdep->ra_sign_state_regnum))
     {
-      int cmask_num = AARCH64_PAUTH_CMASK_REGNUM (tdep->pauth_reg_base);
-      CORE_ADDR cmask = frame_unwind_register_unsigned (this_frame, cmask_num);
-      addr = addr & ~cmask;
+      /* VA range select (bit 55) tells us whether to use the low half masks
+	 or the high half masks.  */
+      int cmask_num;
+      if (tdep->pauth_reg_count > 2 && addr & VA_RANGE_SELECT_BIT_MASK)
+	cmask_num = AARCH64_PAUTH_CMASK_HIGH_REGNUM (tdep->pauth_reg_base);
+      else
+	cmask_num = AARCH64_PAUTH_CMASK_REGNUM (tdep->pauth_reg_base);
+
+      /* By default, we assume TBI and discard the top 8 bits plus the VA range
+	 select bit (55).  */
+      CORE_ADDR mask = AARCH64_TOP_BITS_MASK;
+      mask |= frame_unwind_register_unsigned (this_frame, cmask_num);
+      addr = aarch64_remove_top_bits (addr, mask);
 
       /* Record in the frame that the link register required unmasking.  */
       set_frame_previous_pc_masked (this_frame);
@@ -267,7 +311,7 @@ aarch64_frame_unmask_lr (struct gdbarch_
 /* Implement the "get_pc_address_flags" gdbarch method.  */
 
 static std::string
-aarch64_get_pc_address_flags (frame_info *frame, CORE_ADDR pc)
+aarch64_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
 {
   if (pc != 0 && get_frame_pc_masked (frame))
     return "PAC";
@@ -287,6 +331,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 omitted.  */
+  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,14 +376,24 @@ 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)
+      else if (inst.opcode->iclass == addsub_ext
+	       && strcmp ("sub", inst.opcode->name) == 0)
 	{
-	  gdb_assert (aarch64_num_of_operands (inst.opcode) == 2);
-	  gdb_assert (inst.operands[0].type == AARCH64_OPND_Rd);
+	  unsigned rd = inst.operands[0].reg.regno;
+	  unsigned rn = inst.operands[1].reg.regno;
+	  unsigned rm = inst.operands[2].reg.regno;
+
+	  gdb_assert (aarch64_num_of_operands (inst.opcode) == 3);
+	  gdb_assert (inst.operands[0].type == AARCH64_OPND_Rd_SP);
+	  gdb_assert (inst.operands[1].type == AARCH64_OPND_Rn_SP);
+	  gdb_assert (inst.operands[2].type == AARCH64_OPND_Rm_EXT);
 
-	  regs[inst.operands[0].reg.regno] = pv_unknown ();
+	  regs[rd] = pv_subtract (regs[rn], regs[rm]);
 	}
       else if (inst.opcode->iclass == branch_imm)
 	{
@@ -357,8 +417,20 @@ aarch64_analyze_prologue (struct gdbarch
 	}
       else if (inst.opcode->op == OP_MOVZ)
 	{
+	  unsigned rd = inst.operands[0].reg.regno;
+
+	  gdb_assert (aarch64_num_of_operands (inst.opcode) == 2);
 	  gdb_assert (inst.operands[0].type == AARCH64_OPND_Rd);
-	  regs[inst.operands[0].reg.regno] = pv_unknown ();
+	  gdb_assert (inst.operands[1].type == AARCH64_OPND_HALF);
+	  gdb_assert (inst.operands[1].shifter.kind == AARCH64_MOD_LSL);
+
+	  /* If this shows up before we set the stack, keep going.  Otherwise
+	     stop the analysis.  */
+	  if (seen_stack_set)
+	    break;
+
+	  regs[rd] = pv_constant (inst.operands[1].imm.value
+				  << inst.operands[1].shifter.amount);
 	}
       else if (inst.opcode->iclass == log_shift
 	       && strcmp (inst.opcode->name, "orr") == 0)
@@ -376,12 +448,10 @@ aarch64_analyze_prologue (struct gdbarch
 	    regs[rd] = regs[rm];
 	  else
 	    {
-	      if (aarch64_debug)
-		{
-		  debug_printf ("aarch64: prologue analysis gave up "
-				"addr=%s opcode=0x%x (orr x register)\n",
-				core_addr_to_string_nz (start), insn);
-		}
+	      aarch64_debug_printf ("prologue analysis gave up "
+				    "addr=%s opcode=0x%x (orr x register)",
+				    core_addr_to_string_nz (start), insn);
+
 	      break;
 	    }
 	}
@@ -399,6 +469,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 +516,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 +542,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)
 	{
@@ -472,7 +554,8 @@ aarch64_analyze_prologue (struct gdbarch
 	}
       else if (inst.opcode->iclass == ic_system)
 	{
-	  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+	  aarch64_gdbarch_tdep *tdep
+	    = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 	  int ra_state_val = 0;
 
 	  if (insn == 0xd503233f /* paciasp.  */
@@ -487,28 +570,29 @@ aarch64_analyze_prologue (struct gdbarch
 	      /* Return addresses are not mangled.  */
 	      ra_state_val = 0;
 	    }
+	  else if (IS_BTI (insn))
+	    /* We don't need to do anything special for a BTI instruction.  */
+	    continue;
 	  else
 	    {
-	      if (aarch64_debug)
-		debug_printf ("aarch64: prologue analysis gave up addr=%s"
-			      " opcode=0x%x (iclass)\n",
-			      core_addr_to_string_nz (start), insn);
+	      aarch64_debug_printf ("prologue analysis gave up addr=%s"
+				    " opcode=0x%x (iclass)",
+				    core_addr_to_string_nz (start), insn);
 	      break;
 	    }
 
 	  if (tdep->has_pauth () && cache != nullptr)
-	    trad_frame_set_value (cache->saved_regs,
-				  tdep->pauth_ra_state_regnum,
-				  ra_state_val);
+	    {
+	      int regnum = tdep->ra_sign_state_regnum;
+	      cache->saved_regs[regnum].set_value (ra_state_val);
+	    }
 	}
       else
 	{
-	  if (aarch64_debug)
-	    {
-	      debug_printf ("aarch64: prologue analysis gave up addr=%s"
-			    " opcode=0x%x\n",
-			    core_addr_to_string_nz (start), insn);
-	    }
+	  aarch64_debug_printf ("prologue analysis gave up addr=%s"
+				" opcode=0x%x",
+				core_addr_to_string_nz (start), insn);
+
 	  break;
 	}
     }
@@ -540,7 +624,7 @@ aarch64_analyze_prologue (struct gdbarch
       CORE_ADDR offset;
 
       if (stack.find_reg (gdbarch, i, &offset))
-	cache->saved_regs[i].addr = offset;
+	cache->saved_regs[i].set_addr (offset);
     }
 
   for (i = 0; i < AARCH64_D_REGISTER_COUNT; i++)
@@ -550,7 +634,7 @@ aarch64_analyze_prologue (struct gdbarch
 
       if (stack.find_reg (gdbarch, i + AARCH64_X_REGISTER_COUNT,
 			  &offset))
-	cache->saved_regs[i + regnum + AARCH64_D0_REGNUM].addr = offset;
+	cache->saved_regs[i + regnum + AARCH64_D0_REGNUM].set_addr (offset);
     }
 
   return start;
@@ -601,7 +685,6 @@ aarch64_analyze_prologue_test (void)
 {
   struct gdbarch_info info;
 
-  gdbarch_info_init (&info);
   info.bfd_arch_info = bfd_scan_arch ("aarch64");
 
   struct gdbarch *gdbarch = gdbarch_find_by_info (info);
@@ -610,7 +693,7 @@ aarch64_analyze_prologue_test (void)
   struct aarch64_prologue_cache cache;
   cache.saved_regs = trad_frame_alloc_saved_regs (gdbarch);
 
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   /* Test the simple prologue in which frame pointer is used.  */
   {
@@ -630,19 +713,21 @@ aarch64_analyze_prologue_test (void)
     for (int i = 0; i < AARCH64_X_REGISTER_COUNT; i++)
       {
 	if (i == AARCH64_FP_REGNUM)
-	  SELF_CHECK (cache.saved_regs[i].addr == -272);
+	  SELF_CHECK (cache.saved_regs[i].addr () == -272);
 	else if (i == AARCH64_LR_REGNUM)
-	  SELF_CHECK (cache.saved_regs[i].addr == -264);
+	  SELF_CHECK (cache.saved_regs[i].addr () == -264);
 	else
-	  SELF_CHECK (cache.saved_regs[i].addr == -1);
+	  SELF_CHECK (cache.saved_regs[i].is_realreg ()
+		      && cache.saved_regs[i].realreg () == i);
       }
 
     for (int i = 0; i < AARCH64_D_REGISTER_COUNT; i++)
       {
-	int regnum = gdbarch_num_regs (gdbarch);
+	int num_regs = gdbarch_num_regs (gdbarch);
+	int regnum = i + num_regs + AARCH64_D0_REGNUM;
 
-	SELF_CHECK (cache.saved_regs[i + regnum + AARCH64_D0_REGNUM].addr
-		    == -1);
+	SELF_CHECK (cache.saved_regs[regnum].is_realreg ()
+		    && cache.saved_regs[regnum].realreg () == regnum);
       }
   }
 
@@ -670,26 +755,139 @@ aarch64_analyze_prologue_test (void)
     for (int i = 0; i < AARCH64_X_REGISTER_COUNT; i++)
       {
 	if (i == 1)
-	  SELF_CHECK (cache.saved_regs[i].addr == -16);
+	  SELF_CHECK (cache.saved_regs[i].addr () == -16);
 	else if (i == 19)
-	  SELF_CHECK (cache.saved_regs[i].addr == -48);
+	  SELF_CHECK (cache.saved_regs[i].addr () == -48);
 	else
-	  SELF_CHECK (cache.saved_regs[i].addr == -1);
+	  SELF_CHECK (cache.saved_regs[i].is_realreg ()
+		      && cache.saved_regs[i].realreg () == i);
       }
 
     for (int i = 0; i < AARCH64_D_REGISTER_COUNT; i++)
       {
-	int regnum = gdbarch_num_regs (gdbarch);
+	int num_regs = gdbarch_num_regs (gdbarch);
+	int regnum = i + num_regs + AARCH64_D0_REGNUM;
+
 
 	if (i == 0)
-	  SELF_CHECK (cache.saved_regs[i + regnum + AARCH64_D0_REGNUM].addr
-		      == -24);
+	  SELF_CHECK (cache.saved_regs[regnum].addr () == -24);
 	else
-	  SELF_CHECK (cache.saved_regs[i + regnum + AARCH64_D0_REGNUM].addr
-		      == -1);
+	  SELF_CHECK (cache.saved_regs[regnum].is_realreg ()
+		      && cache.saved_regs[regnum].realreg () == regnum);
       }
   }
 
+  /* 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 ())
     {
@@ -713,24 +911,57 @@ aarch64_analyze_prologue_test (void)
       for (int i = 0; i < AARCH64_X_REGISTER_COUNT; i++)
 	{
 	  if (i == 19)
-	    SELF_CHECK (cache.saved_regs[i].addr == -20);
+	    SELF_CHECK (cache.saved_regs[i].addr () == -20);
 	  else if (i == AARCH64_FP_REGNUM)
-	    SELF_CHECK (cache.saved_regs[i].addr == -48);
+	    SELF_CHECK (cache.saved_regs[i].addr () == -48);
 	  else if (i == AARCH64_LR_REGNUM)
-	    SELF_CHECK (cache.saved_regs[i].addr == -40);
+	    SELF_CHECK (cache.saved_regs[i].addr () == -40);
 	  else
-	    SELF_CHECK (cache.saved_regs[i].addr == -1);
+	    SELF_CHECK (cache.saved_regs[i].is_realreg ()
+			&& cache.saved_regs[i].realreg () == i);
 	}
 
       if (tdep->has_pauth ())
 	{
-	  SELF_CHECK (trad_frame_value_p (cache.saved_regs,
-					  tdep->pauth_ra_state_regnum));
-	  SELF_CHECK (cache.saved_regs[tdep->pauth_ra_state_regnum].addr == 1);
+	  int regnum = tdep->ra_sign_state_regnum;
+	  SELF_CHECK (cache.saved_regs[regnum].is_value ());
+	}
+    }
+
+  /* Test a prologue with a BTI instruction.  */
+    {
+      static const uint32_t insns[] = {
+	0xd503245f, /* bti */
+	0xa9bd7bfd, /* stp	x29, x30, [sp, #-48]! */
+	0x910003fd, /* mov	x29, sp */
+	0xf801c3f3, /* str	x19, [sp, #28] */
+	0xb9401fa0, /* ldr	x19, [x29, #28] */
+      };
+      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);
+
+      SELF_CHECK (end == 4 * 4);
+      SELF_CHECK (cache.framereg == AARCH64_FP_REGNUM);
+      SELF_CHECK (cache.framesize == 48);
+
+      for (int i = 0; i < AARCH64_X_REGISTER_COUNT; i++)
+	{
+	  if (i == 19)
+	    SELF_CHECK (cache.saved_regs[i].addr () == -20);
+	  else if (i == AARCH64_FP_REGNUM)
+	    SELF_CHECK (cache.saved_regs[i].addr () == -48);
+	  else if (i == AARCH64_LR_REGNUM)
+	    SELF_CHECK (cache.saved_regs[i].addr () == -40);
+	  else
+	    SELF_CHECK (cache.saved_regs[i].is_realreg ()
+			&& cache.saved_regs[i].realreg () == i);
 	}
     }
 }
-} // namespace selftests
+} /* namespace selftests */
 #endif /* GDB_SELF_TEST */
 
 /* Implement the "skip_prologue" gdbarch method.  */
@@ -738,12 +969,15 @@ aarch64_analyze_prologue_test (void)
 static CORE_ADDR
 aarch64_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  CORE_ADDR func_addr, limit_pc;
+  CORE_ADDR func_addr, func_end_addr, limit_pc;
 
   /* See if we can determine the end of the prologue via the symbol
      table.  If so, then return either PC, or the PC after the
      prologue, whichever is greater.  */
-  if (find_pc_partial_function (pc, NULL, &func_addr, NULL))
+  bool func_addr_found
+    = find_pc_partial_function (pc, NULL, &func_addr, &func_end_addr);
+
+  if (func_addr_found)
     {
       CORE_ADDR post_prologue_pc
 	= skip_prologue_using_sal (gdbarch, func_addr);
@@ -763,6 +997,9 @@ aarch64_skip_prologue (struct gdbarch *g
   if (limit_pc == 0)
     limit_pc = pc + 128;	/* Magic.  */
 
+  limit_pc
+    = func_end_addr == 0 ? limit_pc : std::min (limit_pc, func_end_addr - 4);
+
   /* Try disassembling prologue.  */
   return aarch64_analyze_prologue (gdbarch, pc, limit_pc, NULL);
 }
@@ -771,7 +1008,7 @@ aarch64_skip_prologue (struct gdbarch *g
    cache CACHE.  */
 
 static void
-aarch64_scan_prologue (struct frame_info *this_frame,
+aarch64_scan_prologue (const frame_info_ptr &this_frame,
 		       struct aarch64_prologue_cache *cache)
 {
   CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
@@ -815,8 +1052,8 @@ aarch64_scan_prologue (struct frame_info
 
       cache->framereg = AARCH64_FP_REGNUM;
       cache->framesize = 16;
-      cache->saved_regs[29].addr = 0;
-      cache->saved_regs[30].addr = 8;
+      cache->saved_regs[29].set_addr (0);
+      cache->saved_regs[30].set_addr (8);
     }
 }
 
@@ -825,7 +1062,7 @@ aarch64_scan_prologue (struct frame_info
    not available.  */
 
 static void
-aarch64_make_prologue_cache_1 (struct frame_info *this_frame,
+aarch64_make_prologue_cache_1 (const frame_info_ptr &this_frame,
 			       struct aarch64_prologue_cache *cache)
 {
   CORE_ADDR unwound_fp;
@@ -840,13 +1077,17 @@ aarch64_make_prologue_cache_1 (struct fr
   if (unwound_fp == 0)
     return;
 
-  cache->prev_sp = unwound_fp + cache->framesize;
+  cache->prev_sp = unwound_fp;
+  if (!aarch64_stack_frame_destroyed_p (get_frame_arch (this_frame),
+					cache->prev_pc))
+    cache->prev_sp += cache->framesize;
 
   /* Calculate actual addresses of saved registers using offsets
      determined by aarch64_analyze_prologue.  */
   for (reg = 0; reg < gdbarch_num_regs (get_frame_arch (this_frame)); reg++)
-    if (trad_frame_addr_p (cache->saved_regs, reg))
-      cache->saved_regs[reg].addr += cache->prev_sp;
+    if (cache->saved_regs[reg].is_addr ())
+      cache->saved_regs[reg].set_addr (cache->saved_regs[reg].addr ()
+				       + cache->prev_sp);
 
   cache->func = get_frame_func (this_frame);
 
@@ -859,7 +1100,7 @@ aarch64_make_prologue_cache_1 (struct fr
    *THIS_CACHE.  */
 
 static struct aarch64_prologue_cache *
-aarch64_make_prologue_cache (struct frame_info *this_frame, void **this_cache)
+aarch64_make_prologue_cache (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct aarch64_prologue_cache *cache;
 
@@ -886,7 +1127,7 @@ aarch64_make_prologue_cache (struct fram
 /* Implement the "stop_reason" frame_unwind method.  */
 
 static enum unwind_stop_reason
-aarch64_prologue_frame_unwind_stop_reason (struct frame_info *this_frame,
+aarch64_prologue_frame_unwind_stop_reason (const frame_info_ptr &this_frame,
 					   void **this_cache)
 {
   struct aarch64_prologue_cache *cache
@@ -896,7 +1137,9 @@ aarch64_prologue_frame_unwind_stop_reaso
     return UNWIND_UNAVAILABLE;
 
   /* Halt the backtrace at "_start".  */
-  if (cache->prev_pc <= gdbarch_tdep (get_frame_arch (this_frame))->lowest_pc)
+  gdbarch *arch = get_frame_arch (this_frame);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (arch);
+  if (cache->prev_pc <= tdep->lowest_pc)
     return UNWIND_OUTERMOST;
 
   /* We've hit a wall, stop.  */
@@ -910,7 +1153,7 @@ aarch64_prologue_frame_unwind_stop_reaso
    PC and the caller's SP when we were called.  */
 
 static void
-aarch64_prologue_this_id (struct frame_info *this_frame,
+aarch64_prologue_this_id (const frame_info_ptr &this_frame,
 			  void **this_cache, struct frame_id *this_id)
 {
   struct aarch64_prologue_cache *cache
@@ -925,7 +1168,7 @@ aarch64_prologue_this_id (struct frame_i
 /* Implement the "prev_register" frame_unwind method.  */
 
 static struct value *
-aarch64_prologue_prev_register (struct frame_info *this_frame,
+aarch64_prologue_prev_register (const frame_info_ptr &this_frame,
 				void **this_cache, int prev_regnum)
 {
   struct aarch64_prologue_cache *cache
@@ -938,13 +1181,13 @@ aarch64_prologue_prev_register (struct f
     {
       CORE_ADDR lr;
       struct gdbarch *gdbarch = get_frame_arch (this_frame);
-      struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+      aarch64_gdbarch_tdep *tdep
+	= gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
       lr = frame_unwind_register_unsigned (this_frame, AARCH64_LR_REGNUM);
 
       if (tdep->has_pauth ()
-	  && trad_frame_value_p (cache->saved_regs,
-				 tdep->pauth_ra_state_regnum))
+	  && cache->saved_regs[tdep->ra_sign_state_regnum].is_value ())
 	lr = aarch64_frame_unmask_lr (tdep, this_frame, lr);
 
       return frame_unwind_got_constant (this_frame, prev_regnum, lr);
@@ -954,17 +1197,17 @@ aarch64_prologue_prev_register (struct f
      identified by the next frame's stack pointer at the time of the
      call.  The value was already reconstructed into PREV_SP.  */
   /*
-         +----------+  ^
-         | saved lr |  |
+	 +----------+  ^
+	 | saved lr |  |
       +->| saved fp |--+
       |  |          |
       |  |          |     <- Previous SP
       |  +----------+
       |  | saved lr |
       +--| saved fp |<- FP
-         |          |
-         |          |<- SP
-         +----------+  */
+	 |          |
+	 |          |<- SP
+	 +----------+  */
   if (prev_regnum == AARCH64_SP_REGNUM)
     return frame_unwind_got_constant (this_frame, prev_regnum,
 				      cache->prev_sp);
@@ -974,15 +1217,16 @@ aarch64_prologue_prev_register (struct f
 }
 
 /* AArch64 prologue unwinder.  */
-struct frame_unwind aarch64_prologue_unwind =
-{
+static const frame_unwind_legacy aarch64_prologue_unwind (
+  "aarch64 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   aarch64_prologue_frame_unwind_stop_reason,
   aarch64_prologue_this_id,
   aarch64_prologue_prev_register,
   NULL,
   default_frame_sniffer
-};
+);
 
 /* Allocate and fill in *THIS_CACHE with information about the prologue of
    *THIS_FRAME.  Do not do this is if *THIS_CACHE was already allocated.
@@ -990,7 +1234,7 @@ struct frame_unwind aarch64_prologue_unw
    *THIS_CACHE.  */
 
 static struct aarch64_prologue_cache *
-aarch64_make_stub_cache (struct frame_info *this_frame, void **this_cache)
+aarch64_make_stub_cache (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct aarch64_prologue_cache *cache;
 
@@ -1020,7 +1264,7 @@ aarch64_make_stub_cache (struct frame_in
 /* Implement the "stop_reason" frame_unwind method.  */
 
 static enum unwind_stop_reason
-aarch64_stub_frame_unwind_stop_reason (struct frame_info *this_frame,
+aarch64_stub_frame_unwind_stop_reason (const frame_info_ptr &this_frame,
 				       void **this_cache)
 {
   struct aarch64_prologue_cache *cache
@@ -1035,7 +1279,7 @@ aarch64_stub_frame_unwind_stop_reason (s
 /* Our frame ID for a stub frame is the current SP and LR.  */
 
 static void
-aarch64_stub_this_id (struct frame_info *this_frame,
+aarch64_stub_this_id (const frame_info_ptr &this_frame,
 		      void **this_cache, struct frame_id *this_id)
 {
   struct aarch64_prologue_cache *cache
@@ -1051,7 +1295,7 @@ aarch64_stub_this_id (struct frame_info
 
 static int
 aarch64_stub_unwind_sniffer (const struct frame_unwind *self,
-			     struct frame_info *this_frame,
+			     const frame_info_ptr &this_frame,
 			     void **this_prologue_cache)
 {
   CORE_ADDR addr_in_block;
@@ -1068,20 +1312,21 @@ aarch64_stub_unwind_sniffer (const struc
 }
 
 /* AArch64 stub unwinder.  */
-struct frame_unwind aarch64_stub_unwind =
-{
+static const frame_unwind_legacy aarch64_stub_unwind (
+  "aarch64 stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   aarch64_stub_frame_unwind_stop_reason,
   aarch64_stub_this_id,
   aarch64_prologue_prev_register,
   NULL,
   aarch64_stub_unwind_sniffer
-};
+);
 
 /* Return the frame base address of *THIS_FRAME.  */
 
 static CORE_ADDR
-aarch64_normal_frame_base (struct frame_info *this_frame, void **this_cache)
+aarch64_normal_frame_base (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct aarch64_prologue_cache *cache
     = aarch64_make_prologue_cache (this_frame, this_cache);
@@ -1090,7 +1335,7 @@ aarch64_normal_frame_base (struct frame_
 }
 
 /* AArch64 default frame base information.  */
-struct frame_base aarch64_normal_base =
+static frame_base aarch64_normal_base =
 {
   &aarch64_prologue_unwind,
   aarch64_normal_frame_base,
@@ -1102,10 +1347,11 @@ struct frame_base aarch64_normal_base =
    *THIS_FRAME.  */
 
 static struct value *
-aarch64_dwarf2_prev_register (struct frame_info *this_frame,
+aarch64_dwarf2_prev_register (const frame_info_ptr &this_frame,
 			      void **this_cache, int regnum)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
+  gdbarch *arch = get_frame_arch (this_frame);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (arch);
   CORE_ADDR lr;
 
   switch (regnum)
@@ -1116,8 +1362,7 @@ aarch64_dwarf2_prev_register (struct fra
       return frame_unwind_got_constant (this_frame, regnum, lr);
 
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("Unexpected register %d"), regnum);
+      internal_error (_("Unexpected register %d"), regnum);
     }
 }
 
@@ -1129,9 +1374,9 @@ static const unsigned char op_lit1 = DW_
 static void
 aarch64_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			       struct dwarf2_frame_state_reg *reg,
-			       struct frame_info *this_frame)
+			       const frame_info_ptr &this_frame)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   switch (regnum)
     {
@@ -1148,7 +1393,7 @@ aarch64_dwarf2_frame_init_reg (struct gd
   /* Init pauth registers.  */
   if (tdep->has_pauth ())
     {
-      if (regnum == tdep->pauth_ra_state_regnum)
+      if (regnum == tdep->ra_sign_state_regnum)
 	{
 	  /* Initialize RA_STATE to zero.  */
 	  reg->how = DWARF2_FRAME_REG_SAVED_VAL_EXP;
@@ -1156,13 +1401,19 @@ aarch64_dwarf2_frame_init_reg (struct gd
 	  reg->loc.exp.len = 1;
 	  return;
 	}
-      else if (regnum == AARCH64_PAUTH_DMASK_REGNUM (tdep->pauth_reg_base)
-	       || regnum == AARCH64_PAUTH_CMASK_REGNUM (tdep->pauth_reg_base))
+      else if (regnum >= tdep->pauth_reg_base
+	       && regnum < tdep->pauth_reg_base + tdep->pauth_reg_count)
 	{
 	  reg->how = DWARF2_FRAME_REG_SAME_VALUE;
 	  return;
 	}
     }
+  if (tdep->has_gcs () && tdep->fn_prev_gcspr != nullptr
+      && regnum == tdep->gcs_reg_base)
+    {
+      reg->how = DWARF2_FRAME_REG_FN;
+      reg->loc.fn = tdep->fn_prev_gcspr;
+    }
 }
 
 /* Implement the execute_dwarf_cfa_vendor_op method.  */
@@ -1171,7 +1422,7 @@ static bool
 aarch64_execute_dwarf_cfa_vendor_op (struct gdbarch *gdbarch, gdb_byte op,
 				     struct dwarf2_frame_state *fs)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
   struct dwarf2_frame_state_reg *ra_state;
 
   if (op == DW_CFA_AARCH64_negate_ra_state)
@@ -1181,10 +1432,10 @@ aarch64_execute_dwarf_cfa_vendor_op (str
 	return true;
 
       /* Allocate RA_STATE column if it's not allocated yet.  */
-      fs->regs.alloc_regs (AARCH64_DWARF_PAUTH_RA_STATE + 1);
+      fs->regs.alloc_regs (AARCH64_DWARF_RA_SIGN_STATE + 1);
 
       /* Toggle the status of RA_STATE between 0 and 1.  */
-      ra_state = &(fs->regs.reg[AARCH64_DWARF_PAUTH_RA_STATE]);
+      ra_state = &(fs->regs.reg[AARCH64_DWARF_RA_SIGN_STATE]);
       ra_state->how = DWARF2_FRAME_REG_SAVED_VAL_EXP;
 
       if (ra_state->loc.exp.start == nullptr
@@ -1201,6 +1452,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,14 +1505,14 @@ 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 && t->is_vector ())
     {
       /* Use the natural alignment for vector types (the same for
 	 scalar type), but the maximum alignment is 128-bit.  */
-      if (TYPE_LENGTH (t) > 16)
+      if (t->length () > 16)
 	return 16;
       else
-	return TYPE_LENGTH (t);
+	return t->length ();
     }
 
   /* Allow the common code to calculate the alignment.  */
@@ -1250,30 +1534,31 @@ 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)
+    case TYPE_CODE_DECFLOAT:
+      if (type->length () > 16)
 	return -1;
 
       if (*fundamental_type == nullptr)
 	*fundamental_type = type;
-      else if (TYPE_LENGTH (type) != TYPE_LENGTH (*fundamental_type)
-	       || TYPE_CODE (type) != TYPE_CODE (*fundamental_type))
+      else if (type->length () != (*fundamental_type)->length ()
+	       || type->code () != (*fundamental_type)->code ())
 	return -1;
 
       return 1;
 
     case TYPE_CODE_COMPLEX:
       {
-	struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type));
-	if (TYPE_LENGTH (target_type) > 16)
+	struct type *target_type = check_typedef (type->target_type ());
+	if (target_type->length () > 16)
 	  return -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))
+	else if (target_type->length () != (*fundamental_type)->length ()
+		 || target_type->code () != (*fundamental_type)->code ())
 	  return -1;
 
 	return 2;
@@ -1281,29 +1566,29 @@ aapcs_is_vfp_call_or_return_candidate_1
 
     case TYPE_CODE_ARRAY:
       {
-	if (TYPE_VECTOR (type))
+	if (type->is_vector ())
 	  {
-	    if (TYPE_LENGTH (type) != 8 && TYPE_LENGTH (type) != 16)
+	    if (type->length () != 8 && type->length () != 16)
 	      return -1;
 
 	    if (*fundamental_type == nullptr)
 	      *fundamental_type = type;
-	    else if (TYPE_LENGTH (type) != TYPE_LENGTH (*fundamental_type)
-		     || TYPE_CODE (type) != TYPE_CODE (*fundamental_type))
+	    else if (type->length () != (*fundamental_type)->length ()
+		     || type->code () != (*fundamental_type)->code ())
 	      return -1;
 
 	    return 1;
 	  }
 	else
 	  {
-	    struct type *target_type = TYPE_TARGET_TYPE (type);
+	    struct type *target_type = type->target_type ();
 	    int count = aapcs_is_vfp_call_or_return_candidate_1
 			  (target_type, fundamental_type);
 
 	    if (count == -1)
 	      return count;
 
-	    count *= (TYPE_LENGTH (type) / TYPE_LENGTH (target_type));
+	    count *= (type->length () / target_type->length ());
 	      return count;
 	  }
       }
@@ -1313,13 +1598,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 (type->field (i).is_static ())
 	      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);
@@ -1331,8 +1616,8 @@ aapcs_is_vfp_call_or_return_candidate_1
 	/* Ensure there is no padding between the fields (allowing for empty
 	   zero length structs)  */
 	int ftype_length = (*fundamental_type == nullptr)
-			   ? 0 : TYPE_LENGTH (*fundamental_type);
-	if (count * ftype_length != TYPE_LENGTH (type))
+			   ? 0 : (*fundamental_type)->length ();
+	if (count * ftype_length != type->length ())
 	  return -1;
 
 	return count;
@@ -1415,10 +1700,10 @@ pass_in_x (struct gdbarch *gdbarch, stru
 	   struct value *arg)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  int len = TYPE_LENGTH (type);
-  enum type_code typecode = TYPE_CODE (type);
+  int len = type->length ();
+  enum type_code typecode = type->code ();
   int regnum = AARCH64_X0_REGNUM + info->ngrn;
-  const bfd_byte *buf = value_contents (arg);
+  const bfd_byte *buf = arg->contents ().data ();
 
   info->argnum++;
 
@@ -1435,12 +1720,10 @@ pass_in_x (struct gdbarch *gdbarch, stru
 	  && (typecode == TYPE_CODE_STRUCT || typecode == TYPE_CODE_UNION))
 	regval <<= ((X_REGISTER_SIZE - partial_len) * TARGET_CHAR_BIT);
 
-      if (aarch64_debug)
-	{
-	  debug_printf ("arg %d in %s = 0x%s\n", info->argnum,
-			gdbarch_register_name (gdbarch, regnum),
-			phex (regval, X_REGISTER_SIZE));
-	}
+      aarch64_debug_printf ("arg %d in %s = 0x%s", info->argnum,
+			    gdbarch_register_name (gdbarch, regnum),
+			    phex (regval, X_REGISTER_SIZE));
+
       regcache_cooked_write_unsigned (regcache, regnum, regval);
       len -= partial_len;
       buf += partial_len;
@@ -1463,23 +1746,20 @@ pass_in_v (struct gdbarch *gdbarch,
     {
       int regnum = AARCH64_V0_REGNUM + info->nsrn;
       /* Enough space for a full vector register.  */
-      gdb_byte reg[register_size (gdbarch, regnum)];
-      gdb_assert (len <= sizeof (reg));
+      gdb::byte_vector reg (register_size (gdbarch, regnum), 0);
+      gdb_assert (len <= reg.size ());
 
       info->argnum++;
       info->nsrn++;
 
-      memset (reg, 0, sizeof (reg));
       /* PCS C.1, the argument is allocated to the least significant
 	 bits of V register.  */
-      memcpy (reg, buf, len);
+      memcpy (reg.data (), buf, len);
       regcache->cooked_write (regnum, reg);
 
-      if (aarch64_debug)
-	{
-	  debug_printf ("arg %d in %s\n", info->argnum,
-			gdbarch_register_name (gdbarch, regnum));
-	}
+      aarch64_debug_printf ("arg %d in %s", info->argnum,
+			    gdbarch_register_name (gdbarch, regnum));
+
       return 1;
     }
   info->nsrn = 8;
@@ -1492,8 +1772,8 @@ static void
 pass_on_stack (struct aarch64_call_info *info, struct type *type,
 	       struct value *arg)
 {
-  const bfd_byte *buf = value_contents (arg);
-  int len = TYPE_LENGTH (type);
+  const bfd_byte *buf = arg->contents ().data ();
+  int len = type->length ();
   int align;
   stack_item_t item;
 
@@ -1509,11 +1789,8 @@ pass_on_stack (struct aarch64_call_info
   if (align > 16)
     align = 16;
 
-  if (aarch64_debug)
-    {
-      debug_printf ("arg %d len=%d @ sp + %d\n", info->argnum, len,
-		    info->nsaa);
-    }
+  aarch64_debug_printf ("arg %d len=%d @ sp + %d\n", info->argnum, len,
+			info->nsaa);
 
   item.len = len;
   item.data = buf;
@@ -1542,7 +1819,7 @@ pass_in_x_or_stack (struct gdbarch *gdba
 		    struct aarch64_call_info *info, struct type *type,
 		    struct value *arg)
 {
-  int len = TYPE_LENGTH (type);
+  int len = type->length ();
   int nregs = (len + X_REGISTER_SIZE - 1) / X_REGISTER_SIZE;
 
   /* PCS C.13 - Pass in registers if we have enough spare */
@@ -1567,42 +1844,43 @@ 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),
-			value_contents (arg));
+    case TYPE_CODE_DECFLOAT:
+      return pass_in_v (gdbarch, regcache, info, arg_type->length (),
+			arg->contents ().data ());
       break;
 
     case TYPE_CODE_COMPLEX:
       {
-	const bfd_byte *buf = value_contents (arg);
-	struct type *target_type = check_typedef (TYPE_TARGET_TYPE (arg_type));
+	const bfd_byte *buf = arg->contents ().data ();
+	struct type *target_type = check_typedef (arg_type->target_type ());
 
-	if (!pass_in_v (gdbarch, regcache, info, TYPE_LENGTH (target_type),
+	if (!pass_in_v (gdbarch, regcache, info, target_type->length (),
 			buf))
 	  return false;
 
-	return pass_in_v (gdbarch, regcache, info, TYPE_LENGTH (target_type),
-			  buf + TYPE_LENGTH (target_type));
+	return pass_in_v (gdbarch, regcache, info, target_type->length (),
+			  buf + target_type->length ());
       }
 
     case TYPE_CODE_ARRAY:
-      if (TYPE_VECTOR (arg_type))
-	return pass_in_v (gdbarch, regcache, info, TYPE_LENGTH (arg_type),
-			  value_contents (arg));
-      /* fall through.  */
+      if (arg_type->is_vector ())
+	return pass_in_v (gdbarch, regcache, info, arg_type->length (),
+			  arg->contents ().data ());
+      [[fallthrough]];
 
     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 (arg_type->field (i).is_static ())
 	    continue;
 
-	  struct value *field = value_primitive_field (arg, 0, i, arg_type);
-	  struct type *field_type = check_typedef (value_type (field));
+	  struct value *field = arg->primitive_field (0, i, arg_type);
+	  struct type *field_type = check_typedef (field->type ());
 
 	  if (!pass_in_v_vfp_candidate (gdbarch, regcache, info, field_type,
 					field))
@@ -1615,6 +1893,55 @@ pass_in_v_vfp_candidate (struct gdbarch
     }
 }
 
+/* Push LR_VALUE to the Guarded Control Stack.  */
+
+static void
+aarch64_push_gcs_entry (regcache *regs, CORE_ADDR lr_value)
+{
+  gdbarch *arch = regs->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (arch);
+  CORE_ADDR gcs_addr;
+
+  register_status status = regs->cooked_read (tdep->gcs_reg_base, &gcs_addr);
+  if (status != REG_VALID)
+    error (_("Can't read $gcspr."));
+
+  gcs_addr -= 8;
+  gdb_byte buf[8];
+  store_integer (buf, gdbarch_byte_order (arch), lr_value);
+  if (target_write_memory (gcs_addr, buf, sizeof (buf)) != 0)
+    error (_("Can't write to Guarded Control Stack."));
+
+  /* Update GCSPR.  */
+  regcache_cooked_write_unsigned (regs, tdep->gcs_reg_base, gcs_addr);
+}
+
+/* Remove the newest entry from the Guarded Control Stack.  */
+
+static void
+aarch64_pop_gcs_entry (regcache *regs)
+{
+  gdbarch *arch = regs->arch ();
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (arch);
+  CORE_ADDR gcs_addr;
+
+  register_status status = regs->cooked_read (tdep->gcs_reg_base, &gcs_addr);
+  if (status != REG_VALID)
+    error (_("Can't read $gcspr."));
+
+  /* Update GCSPR.  */
+  regcache_cooked_write_unsigned (regs, tdep->gcs_reg_base, gcs_addr + 8);
+}
+
+/* Implement the "shadow_stack_push" gdbarch method.  */
+
+static void
+aarch64_shadow_stack_push (gdbarch *gdbarch, CORE_ADDR new_addr,
+			   regcache *regcache)
+{
+  aarch64_push_gcs_entry (regcache, new_addr);
+}
+
 /* Implement the "push_dummy_call" gdbarch method.  */
 
 static CORE_ADDR
@@ -1662,13 +1989,11 @@ aarch64_push_dummy_call (struct gdbarch
   /* The struct_return pointer occupies X8.  */
   if (return_method != return_method_normal)
     {
-      if (aarch64_debug)
-	{
-	  debug_printf ("struct return in %s = 0x%s\n",
-			gdbarch_register_name (gdbarch,
-					       AARCH64_STRUCT_RETURN_REGNUM),
-			paddress (gdbarch, struct_addr));
-	}
+      aarch64_debug_printf ("struct return in %s = 0x%s",
+			    gdbarch_register_name
+			      (gdbarch, AARCH64_STRUCT_RETURN_REGNUM),
+			    paddress (gdbarch, struct_addr));
+
       regcache_cooked_write_unsigned (regcache, AARCH64_STRUCT_RETURN_REGNUM,
 				      struct_addr);
     }
@@ -1679,8 +2004,8 @@ aarch64_push_dummy_call (struct gdbarch
       struct type *arg_type, *fundamental_type;
       int len, elements;
 
-      arg_type = check_typedef (value_type (arg));
-      len = TYPE_LENGTH (arg_type);
+      arg_type = check_typedef (arg->type ());
+      len = arg_type->length ();
 
       /* If arg can be passed in v registers as per the AAPCS64, then do so if
 	 if there are enough spare registers.  */
@@ -1703,17 +2028,17 @@ aarch64_push_dummy_call (struct gdbarch
 	  continue;
 	}
 
-      switch (TYPE_CODE (arg_type))
+      switch (arg_type->code ())
 	{
 	case TYPE_CODE_INT:
 	case TYPE_CODE_BOOL:
 	case TYPE_CODE_CHAR:
 	case TYPE_CODE_RANGE:
 	case TYPE_CODE_ENUM:
-	  if (len < 4)
+	  if (len < 4 && !is_fixed_point_type (arg_type))
 	    {
 	      /* Promote to 32 bit integer.  */
-	      if (TYPE_UNSIGNED (arg_type))
+	      if (arg_type->is_unsigned ())
 		arg_type = builtin_type (gdbarch)->builtin_uint32;
 	      else
 		arg_type = builtin_type (gdbarch)->builtin_int32;
@@ -1734,7 +2059,7 @@ aarch64_push_dummy_call (struct gdbarch
 	      sp = align_down (sp - len, 16);
 
 	      /* Write the real data into the stack.  */
-	      write_memory (sp, value_contents (arg), len);
+	      write_memory (sp, arg->contents ().data (), len);
 
 	      /* Construct the indirection.  */
 	      arg_type = lookup_pointer_type (arg_type);
@@ -1786,7 +2111,7 @@ aarch64_frame_align (struct gdbarch *gdb
 static struct type *
 aarch64_vnq_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   if (tdep->vnq_type == NULL)
     {
@@ -1813,7 +2138,7 @@ aarch64_vnq_type (struct gdbarch *gdbarc
 static struct type *
 aarch64_vnd_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   if (tdep->vnd_type == NULL)
     {
@@ -1843,7 +2168,7 @@ aarch64_vnd_type (struct gdbarch *gdbarc
 static struct type *
 aarch64_vns_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   if (tdep->vns_type == NULL)
     {
@@ -1873,7 +2198,7 @@ aarch64_vns_type (struct gdbarch *gdbarc
 static struct type *
 aarch64_vnh_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   if (tdep->vnh_type == NULL)
     {
@@ -1883,6 +2208,9 @@ aarch64_vnh_type (struct gdbarch *gdbarc
       t = arch_composite_type (gdbarch, "__gdb_builtin_type_vnh",
 			       TYPE_CODE_UNION);
 
+      elem = builtin_type (gdbarch)->builtin_bfloat16;
+      append_composite_type_field (t, "bf", elem);
+
       elem = builtin_type (gdbarch)->builtin_half;
       append_composite_type_field (t, "f", elem);
 
@@ -1903,7 +2231,7 @@ aarch64_vnh_type (struct gdbarch *gdbarc
 static struct type *
 aarch64_vnb_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   if (tdep->vnb_type == NULL)
     {
@@ -1925,16 +2253,224 @@ aarch64_vnb_type (struct gdbarch *gdbarc
   return tdep->vnb_type;
 }
 
+/* Return TRUE if REGNUM is a ZA tile slice pseudo-register number.  Return
+   FALSE otherwise.  */
+
+static bool
+is_sme_tile_slice_pseudo_register (struct gdbarch *gdbarch, int regnum)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  gdb_assert (tdep->has_sme ());
+  gdb_assert (tdep->sme_svq > 0);
+  gdb_assert (tdep->sme_pseudo_base <= regnum);
+  gdb_assert (regnum < tdep->sme_pseudo_base + tdep->sme_pseudo_count);
+
+  if (tdep->sme_tile_slice_pseudo_base <= regnum
+      && regnum < tdep->sme_tile_slice_pseudo_base
+		  + tdep->sme_tile_slice_pseudo_count)
+    return true;
+
+  return false;
+}
+
+/* Given REGNUM, a ZA pseudo-register number, return, in ENCODING, the
+   decoded fields that make up its name.  */
+
+static void
+aarch64_za_decode_pseudos (struct gdbarch *gdbarch, int regnum,
+			   struct za_pseudo_encoding &encoding)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  gdb_assert (tdep->has_sme ());
+  gdb_assert (tdep->sme_svq > 0);
+  gdb_assert (tdep->sme_pseudo_base <= regnum);
+  gdb_assert (regnum < tdep->sme_pseudo_base + tdep->sme_pseudo_count);
+
+  if (is_sme_tile_slice_pseudo_register (gdbarch, regnum))
+    {
+      /* Calculate the tile slice pseudo-register offset relative to the other
+	 tile slice pseudo-registers.  */
+      int offset = regnum - tdep->sme_tile_slice_pseudo_base;
+
+      /* Fetch the qualifier.  We can have 160 to 2560 possible tile slice
+	 pseudo-registers.  Each qualifier (we have 5 of them: B, H, S, D
+	 and Q) covers 32 * svq pseudo-registers, so we divide the offset by
+	 that constant.  */
+      size_t qualifier = offset / (tdep->sme_svq * 32);
+      encoding.qualifier_index = qualifier;
+
+      /* Prepare to fetch the direction (d), tile number (t) and slice
+	 number (s).  */
+      int dts = offset % (tdep->sme_svq * 32);
+
+      /* The direction is represented by the even/odd numbers.  Even-numbered
+	 pseudo-registers are horizontal tile slices and odd-numbered
+	 pseudo-registers are vertical tile slices.  */
+      encoding.horizontal = !(dts & 1);
+
+      /* Fetch the tile number.  The tile number is closely related to the
+	 qualifier.  B has 1 tile, H has 2 tiles, S has 4 tiles, D has 8 tiles
+	 and Q has 16 tiles.  */
+      encoding.tile_index = (dts >> 1) & ((1 << qualifier) - 1);
+
+      /* Fetch the slice number.  The slice number is closely related to the
+	 qualifier and the svl.  */
+      encoding.slice_index = dts >> (qualifier + 1);
+    }
+  else
+    {
+      /* Calculate the tile pseudo-register offset relative to the other
+	 tile pseudo-registers.  */
+      int offset = regnum - tdep->sme_tile_pseudo_base;
+
+      encoding.qualifier_index = std::floor (std::log2 (offset + 1));
+      /* Calculate the tile number.  */
+      encoding.tile_index = (offset + 1) - (1 << encoding.qualifier_index);
+      /* Direction and slice index don't get used for tiles.  Set them to
+	 0/false values.  */
+      encoding.slice_index = 0;
+      encoding.horizontal = false;
+    }
+}
+
+/* Return the type for a ZA tile slice pseudo-register based on ENCODING.  */
+
+static struct type *
+aarch64_za_tile_slice_type (struct gdbarch *gdbarch,
+			    const struct za_pseudo_encoding &encoding)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  gdb_assert (tdep->has_sme ());
+  gdb_assert (tdep->sme_svq > 0);
+
+  if (tdep->sme_tile_slice_type_q == nullptr)
+    {
+      /* Q tile slice type.  */
+      tdep->sme_tile_slice_type_q
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint128,
+			    tdep->sme_svq);
+      /* D tile slice type.  */
+      tdep->sme_tile_slice_type_d
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint64,
+			    tdep->sme_svq * 2);
+      /* S tile slice type.  */
+      tdep->sme_tile_slice_type_s
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint32,
+			    tdep->sme_svq * 4);
+      /* H tile slice type.  */
+      tdep->sme_tile_slice_type_h
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint16,
+			    tdep->sme_svq * 8);
+      /* B tile slice type.  */
+      tdep->sme_tile_slice_type_b
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint8,
+			    tdep->sme_svq * 16);
+  }
+
+  switch (encoding.qualifier_index)
+    {
+      case 4:
+	return tdep->sme_tile_slice_type_q;
+      case 3:
+	return tdep->sme_tile_slice_type_d;
+      case 2:
+	return tdep->sme_tile_slice_type_s;
+      case 1:
+	return tdep->sme_tile_slice_type_h;
+      case 0:
+	return tdep->sme_tile_slice_type_b;
+      default:
+	error (_("Invalid qualifier index %s for tile slice pseudo register."),
+	       pulongest (encoding.qualifier_index));
+    }
+
+  gdb_assert_not_reached ("Unknown qualifier for ZA tile slice register");
+}
+
+/* Return the type for a ZA tile pseudo-register based on ENCODING.  */
+
+static struct type *
+aarch64_za_tile_type (struct gdbarch *gdbarch,
+		      const struct za_pseudo_encoding &encoding)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  gdb_assert (tdep->has_sme ());
+  gdb_assert (tdep->sme_svq > 0);
+
+  if (tdep->sme_tile_type_q == nullptr)
+    {
+      struct type *inner_vectors_type;
+
+      /* Q tile type.  */
+      inner_vectors_type
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint128,
+			    tdep->sme_svq);
+      tdep->sme_tile_type_q
+	= init_vector_type (inner_vectors_type, tdep->sme_svq);
+
+      /* D tile type.  */
+      inner_vectors_type
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint64,
+			    tdep->sme_svq * 2);
+      tdep->sme_tile_type_d
+	= init_vector_type (inner_vectors_type, tdep->sme_svq * 2);
+
+      /* S tile type.  */
+      inner_vectors_type
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint32,
+			    tdep->sme_svq * 4);
+      tdep->sme_tile_type_s
+	= init_vector_type (inner_vectors_type, tdep->sme_svq * 4);
+
+      /* H tile type.  */
+      inner_vectors_type
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint16,
+			    tdep->sme_svq * 8);
+      tdep->sme_tile_type_h
+	= init_vector_type (inner_vectors_type, tdep->sme_svq * 8);
+
+      /* B tile type.  */
+      inner_vectors_type
+	= init_vector_type (builtin_type (gdbarch)->builtin_uint8,
+			    tdep->sme_svq * 16);
+      tdep->sme_tile_type_b
+	= init_vector_type (inner_vectors_type, tdep->sme_svq * 16);
+  }
+
+  switch (encoding.qualifier_index)
+    {
+      case 4:
+	return tdep->sme_tile_type_q;
+      case 3:
+	return tdep->sme_tile_type_d;
+      case 2:
+	return tdep->sme_tile_type_s;
+      case 1:
+	return tdep->sme_tile_type_h;
+      case 0:
+	return tdep->sme_tile_type_b;
+      default:
+	error (_("Invalid qualifier index %s for ZA tile pseudo register."),
+	       pulongest (encoding.qualifier_index));
+    }
+
+  gdb_assert_not_reached ("unknown qualifier for tile pseudo-register");
+}
+
 /* Return the type for an AdvSISD V register.  */
 
 static struct type *
 aarch64_vnv_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   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);
@@ -1964,6 +2500,8 @@ aarch64_vnv_type (struct gdbarch *gdbarc
 
       sub = arch_composite_type (gdbarch, "__gdb_builtin_type_vnh",
 				 TYPE_CODE_UNION);
+      append_composite_type_field (sub, "bf",
+				   init_vector_type (bt->builtin_bfloat16, 8));
       append_composite_type_field (sub, "f",
 				   init_vector_type (bt->builtin_half, 8));
       append_composite_type_field (sub, "u",
@@ -1999,7 +2537,7 @@ aarch64_vnv_type (struct gdbarch *gdbarc
 static int
 aarch64_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   if (reg >= AARCH64_DWARF_X0 && reg <= AARCH64_DWARF_X0 + 30)
     return AARCH64_X0_REGNUM + reg - AARCH64_DWARF_X0;
@@ -2007,6 +2545,9 @@ aarch64_dwarf_reg_to_regnum (struct gdba
   if (reg == AARCH64_DWARF_SP)
     return AARCH64_SP_REGNUM;
 
+  if (reg == AARCH64_DWARF_PC)
+    return AARCH64_PC_REGNUM;
+
   if (reg >= AARCH64_DWARF_V0 && reg <= AARCH64_DWARF_V0 + 31)
     return AARCH64_V0_REGNUM + reg - AARCH64_DWARF_V0;
 
@@ -2024,11 +2565,8 @@ aarch64_dwarf_reg_to_regnum (struct gdba
 
   if (tdep->has_pauth ())
     {
-      if (reg >= AARCH64_DWARF_PAUTH_DMASK && reg <= AARCH64_DWARF_PAUTH_CMASK)
-	return tdep->pauth_reg_base + reg - AARCH64_DWARF_PAUTH_DMASK;
-
-      if (reg == AARCH64_DWARF_PAUTH_RA_STATE)
-	return tdep->pauth_ra_state_regnum;
+      if (reg == AARCH64_DWARF_RA_SIGN_STATE)
+	return tdep->ra_sign_state_regnum;
     }
 
   return -1;
@@ -2066,38 +2604,36 @@ aarch64_extract_return_value (struct typ
   if (aapcs_is_vfp_call_or_return_candidate (type, &elements,
 					     &fundamental_type))
     {
-      int len = TYPE_LENGTH (fundamental_type);
+      int len = fundamental_type->length ();
 
       for (int i = 0; i < elements; i++)
 	{
 	  int regno = AARCH64_V0_REGNUM + i;
 	  /* Enough space for a full vector register.  */
-	  gdb_byte buf[register_size (gdbarch, regno)];
-	  gdb_assert (len <= sizeof (buf));
+	  gdb::byte_vector buf (register_size (gdbarch, regno));
+	  gdb_assert (len <= buf.size ());
+
+	  aarch64_debug_printf
+	    ("read HFA or HVA return value element %d from %s",
+	     i + 1, gdbarch_register_name (gdbarch, regno));
 
-	  if (aarch64_debug)
-	    {
-	      debug_printf ("read HFA or HVA return value element %d from %s\n",
-			    i + 1,
-			    gdbarch_register_name (gdbarch, regno));
-	    }
 	  regs->cooked_read (regno, buf);
 
-	  memcpy (valbuf, buf, len);
+	  memcpy (valbuf, buf.data (), len);
 	  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
 	 more.  */
-      int len = TYPE_LENGTH (type);
+      int len = type->length ();
       int regno = AARCH64_X0_REGNUM;
       ULONGEST tmp;
 
@@ -2115,10 +2651,10 @@ aarch64_extract_return_value (struct typ
     }
   else
     {
-      /* For a structure or union the behaviour is as if the value had
-         been stored to word-aligned memory and then loaded into
-         registers with 64-bit load instruction(s).  */
-      int len = TYPE_LENGTH (type);
+      /* For a structure or union the behavior is as if the value had
+	 been stored to word-aligned memory and then loaded into
+	 registers with 64-bit load instruction(s).  */
+      int len = type->length ();
       int regno = AARCH64_X0_REGNUM;
       bfd_byte buf[X_REGISTER_SIZE];
 
@@ -2144,6 +2680,9 @@ aarch64_return_in_memory (struct gdbarch
   int elements;
   struct type *fundamental_type;
 
+  if (TYPE_HAS_DYNAMIC_LENGTH (type))
+    return 1;
+
   if (aapcs_is_vfp_call_or_return_candidate (type, &elements,
 					     &fundamental_type))
     {
@@ -2152,10 +2691,11 @@ aarch64_return_in_memory (struct gdbarch
       return 0;
     }
 
-  if (TYPE_LENGTH (type) > 16)
+  if (type->length () > 16
+      || !language_pass_by_reference (type).trivially_copyable)
     {
       /* PCS B.6 Aggregates larger than 16 bytes are passed by
-         invisible reference.  */
+	 invisible reference.  */
 
       return 1;
     }
@@ -2178,36 +2718,38 @@ aarch64_store_return_value (struct type
   if (aapcs_is_vfp_call_or_return_candidate (type, &elements,
 					     &fundamental_type))
     {
-      int len = TYPE_LENGTH (fundamental_type);
+      int len = fundamental_type->length ();
 
       for (int i = 0; i < elements; i++)
 	{
 	  int regno = AARCH64_V0_REGNUM + i;
 	  /* Enough space for a full vector register.  */
-	  gdb_byte tmpbuf[register_size (gdbarch, regno)];
-	  gdb_assert (len <= sizeof (tmpbuf));
+	  gdb::byte_vector tmpbuf (register_size (gdbarch, regno));
+	  gdb_assert (len <= tmpbuf.size ());
 
-	  if (aarch64_debug)
-	    {
-	      debug_printf ("write HFA or HVA return value element %d to %s\n",
-			    i + 1,
-			    gdbarch_register_name (gdbarch, regno));
-	    }
-
-	  memcpy (tmpbuf, valbuf,
+	  aarch64_debug_printf
+	    ("write HFA or HVA return value element %d to %s",
+	     i + 1, gdbarch_register_name (gdbarch, regno));
+
+	  /* Depending on whether the target supports SVE or not, the V
+	     registers may report a size > 16 bytes.  In that case, read the
+	     original contents of the register before overriding it with a new
+	     value that has a potential size <= 16 bytes.  */
+	  regs->cooked_read (regno, tmpbuf);
+	  memcpy (tmpbuf.data (), valbuf,
 		  len > V_REGISTER_SIZE ? V_REGISTER_SIZE : len);
 	  regs->cooked_write (regno, tmpbuf);
 	  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)
+      if (type->length () <= X_REGISTER_SIZE)
 	{
 	  /* Values of one word or less are zero/sign-extended and
 	     returned in r0.  */
@@ -2221,8 +2763,8 @@ aarch64_store_return_value (struct type
 	{
 	  /* Integral values greater than one word are stored in
 	     consecutive registers starting with r0.  This will always
-	     be a multiple of the regiser size.  */
-	  int len = TYPE_LENGTH (type);
+	     be a multiple of the register size.  */
+	  int len = type->length ();
 	  int regno = AARCH64_X0_REGNUM;
 
 	  while (len > 0)
@@ -2235,10 +2777,10 @@ aarch64_store_return_value (struct type
     }
   else
     {
-      /* For a structure or union the behaviour is as if the value had
+      /* For a structure or union the behavior is as if the value had
 	 been stored to word-aligned memory and then loaded into
 	 registers with 64-bit load instruction(s).  */
-      int len = TYPE_LENGTH (type);
+      int len = type->length ();
       int regno = AARCH64_X0_REGNUM;
       bfd_byte tmpbuf[X_REGISTER_SIZE];
 
@@ -2258,29 +2800,46 @@ aarch64_store_return_value (struct type
 static enum return_value_convention
 aarch64_return_value (struct gdbarch *gdbarch, struct value *func_value,
 		      struct type *valtype, struct regcache *regcache,
-		      gdb_byte *readbuf, const gdb_byte *writebuf)
+		      struct value **read_value, 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))
 	{
-	  if (aarch64_debug)
-	    debug_printf ("return value in memory\n");
-	  return RETURN_VALUE_STRUCT_CONVENTION;
+	  /* From the AAPCS64's Result Return section:
+
+	     "Otherwise, the caller shall reserve a block of memory of
+	      sufficient size and alignment to hold the result.  The address
+	      of the memory block shall be passed as an additional argument to
+	      the function in x8.  */
+
+	  aarch64_debug_printf ("return value in memory");
+
+	  if (read_value != nullptr)
+	    {
+	      CORE_ADDR addr;
+
+	      regcache->cooked_read (AARCH64_STRUCT_RETURN_REGNUM, &addr);
+	      *read_value = value_at_non_lval (valtype, addr);
+	    }
+
+	  return RETURN_VALUE_ABI_RETURNS_ADDRESS;
 	}
     }
 
   if (writebuf)
     aarch64_store_return_value (valtype, regcache, writebuf);
 
-  if (readbuf)
-    aarch64_extract_return_value (valtype, regcache, readbuf);
+  if (read_value)
+    {
+      *read_value = value::allocate (valtype);
+      aarch64_extract_return_value (valtype, regcache,
+				    (*read_value)->contents_raw ().data ());
+    }
 
-  if (aarch64_debug)
-    debug_printf ("return value in registers\n");
+  aarch64_debug_printf ("return value in registers");
 
   return RETURN_VALUE_REGISTER_CONVENTION;
 }
@@ -2288,12 +2847,12 @@ aarch64_return_value (struct gdbarch *gd
 /* Implement the "get_longjmp_target" gdbarch method.  */
 
 static int
-aarch64_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
+aarch64_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
 {
   CORE_ADDR jb_addr;
   gdb_byte buf[X_REGISTER_SIZE];
   struct gdbarch *gdbarch = get_frame_arch (frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
 
   jb_addr = get_frame_register_unsigned (frame, AARCH64_X0_REGNUM);
@@ -2319,12 +2878,107 @@ aarch64_gen_return_address (struct gdbar
 }
 
 
+/* Return TRUE if REGNUM is a W pseudo-register number.  Return FALSE
+   otherwise.  */
+
+static bool
+is_w_pseudo_register (struct gdbarch *gdbarch, int regnum)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  if (tdep->w_pseudo_base <= regnum
+      && regnum < tdep->w_pseudo_base + tdep->w_pseudo_count)
+    return true;
+
+  return false;
+}
+
+/* Return TRUE if REGNUM is a SME pseudo-register number.  Return FALSE
+   otherwise.  */
+
+static bool
+is_sme_pseudo_register (struct gdbarch *gdbarch, int regnum)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  if (tdep->has_sme () && tdep->sme_pseudo_base <= regnum
+      && regnum < tdep->sme_pseudo_base + tdep->sme_pseudo_count)
+    return true;
+
+  return false;
+}
+
+/* Convert ENCODING into a ZA tile slice name.  */
+
+static const std::string
+aarch64_za_tile_slice_name (const struct za_pseudo_encoding &encoding)
+{
+  gdb_assert (encoding.qualifier_index >= 0);
+  gdb_assert (encoding.qualifier_index <= 4);
+  gdb_assert (encoding.tile_index >= 0);
+  gdb_assert (encoding.tile_index <= 15);
+  gdb_assert (encoding.slice_index >= 0);
+  gdb_assert (encoding.slice_index <= 255);
+
+  const char orientation = encoding.horizontal ? 'h' : 'v';
+
+  const char qualifiers[6] = "bhsdq";
+  const char qualifier = qualifiers [encoding.qualifier_index];
+  return string_printf ("za%d%c%c%d", encoding.tile_index, orientation,
+			qualifier, encoding.slice_index);
+}
+
+/* Convert ENCODING into a ZA tile name.  */
+
+static const std::string
+aarch64_za_tile_name (const struct za_pseudo_encoding &encoding)
+{
+  /* Tiles don't use the slice number and the direction fields.  */
+  gdb_assert (encoding.qualifier_index >= 0);
+  gdb_assert (encoding.qualifier_index <= 4);
+  gdb_assert (encoding.tile_index >= 0);
+  gdb_assert (encoding.tile_index <= 15);
+
+  const char qualifiers[6] = "bhsdq";
+  const char qualifier = qualifiers [encoding.qualifier_index];
+  return (string_printf ("za%d%c", encoding.tile_index, qualifier));
+}
+
+/* Given a SME pseudo-register REGNUM, return its type.  */
+
+static struct type *
+aarch64_sme_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
+{
+  struct za_pseudo_encoding encoding;
+
+  /* Decode the SME pseudo-register number.  */
+  aarch64_za_decode_pseudos (gdbarch, regnum, encoding);
+
+  if (is_sme_tile_slice_pseudo_register (gdbarch, regnum))
+    return aarch64_za_tile_slice_type (gdbarch, encoding);
+  else
+    return aarch64_za_tile_type (gdbarch, encoding);
+}
+
 /* Return the pseudo register name corresponding to register regnum.  */
 
 static const char *
 aarch64_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  /* W pseudo-registers.  Bottom halves of the X registers.  */
+  static const char *const w_name[] =
+    {
+      "w0", "w1", "w2", "w3",
+      "w4", "w5", "w6", "w7",
+      "w8", "w9", "w10", "w11",
+      "w12", "w13", "w14", "w15",
+      "w16", "w17", "w18", "w19",
+      "w20", "w21", "w22", "w23",
+      "w24", "w25", "w26", "w27",
+      "w28", "w29", "w30",
+    };
 
   static const char *const q_name[] =
     {
@@ -2403,6 +3057,10 @@ aarch64_pseudo_register_name (struct gdb
   if (p_regnum >= AARCH64_B0_REGNUM && p_regnum < AARCH64_B0_REGNUM + 32)
     return b_name[p_regnum - AARCH64_B0_REGNUM];
 
+  /* W pseudo-registers? */
+  if (is_w_pseudo_register (gdbarch, regnum))
+    return w_name[regnum - tdep->w_pseudo_base];
+
   if (tdep->has_sve ())
     {
       static const char *const sve_v_name[] =
@@ -2422,14 +3080,16 @@ aarch64_pseudo_register_name (struct gdb
 	return sve_v_name[p_regnum - AARCH64_SVE_V0_REGNUM];
     }
 
+  if (is_sme_pseudo_register (gdbarch, regnum))
+    return tdep->sme_pseudo_names[regnum - tdep->sme_pseudo_base].c_str ();
+
   /* RA_STATE is used for unwinding only.  Do not assign it a name - this
      prevents it from being read by methods such as
      mi_cmd_trace_frame_collected.  */
-  if (tdep->has_pauth () && regnum == tdep->pauth_ra_state_regnum)
+  if (tdep->has_pauth () && regnum == tdep->ra_sign_state_regnum)
     return "";
 
-  internal_error (__FILE__, __LINE__,
-		  _("aarch64_pseudo_register_name: bad register number %d"),
+  internal_error (_("aarch64_pseudo_register_name: bad register number %d"),
 		  p_regnum);
 }
 
@@ -2438,7 +3098,7 @@ aarch64_pseudo_register_name (struct gdb
 static struct type *
 aarch64_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   int p_regnum = regnum - gdbarch_num_regs (gdbarch);
 
@@ -2461,11 +3121,17 @@ aarch64_pseudo_register_type (struct gdb
       && p_regnum < AARCH64_SVE_V0_REGNUM + AARCH64_V_REGS_NUM)
     return aarch64_vnv_type (gdbarch);
 
-  if (tdep->has_pauth () && regnum == tdep->pauth_ra_state_regnum)
+  /* W pseudo-registers are 32-bit.  */
+  if (is_w_pseudo_register (gdbarch, regnum))
+    return builtin_type (gdbarch)->builtin_uint32;
+
+  if (is_sme_pseudo_register (gdbarch, regnum))
+    return aarch64_sme_pseudo_register_type (gdbarch, regnum);
+
+  if (tdep->has_pauth () && regnum == tdep->ra_sign_state_regnum)
     return builtin_type (gdbarch)->builtin_uint64;
 
-  internal_error (__FILE__, __LINE__,
-		  _("aarch64_pseudo_register_type: bad register number %d"),
+  internal_error (_("aarch64_pseudo_register_type: bad register number %d"),
 		  p_regnum);
 }
 
@@ -2473,9 +3139,9 @@ aarch64_pseudo_register_type (struct gdb
 
 static int
 aarch64_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
-				    struct reggroup *group)
+				    const struct reggroup *group)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   int p_regnum = regnum - gdbarch_num_regs (gdbarch);
 
@@ -2494,8 +3160,10 @@ aarch64_pseudo_register_reggroup_p (stru
   else if (tdep->has_sve () && p_regnum >= AARCH64_SVE_V0_REGNUM
 	   && p_regnum < AARCH64_SVE_V0_REGNUM + AARCH64_V_REGS_NUM)
     return group == all_reggroup || group == vector_reggroup;
+  else if (is_sme_pseudo_register (gdbarch, regnum))
+    return group == all_reggroup || group == vector_reggroup;
   /* RA_STATE is used for unwinding only.  Do not assign it to any groups.  */
-  if (tdep->has_pauth () && regnum == tdep->pauth_ra_state_regnum)
+  if (tdep->has_pauth () && regnum == tdep->ra_sign_state_regnum)
     return 0;
 
   return group == all_reggroup;
@@ -2503,70 +3171,194 @@ aarch64_pseudo_register_reggroup_p (stru
 
 /* Helper for aarch64_pseudo_read_value.  */
 
-static struct value *
-aarch64_pseudo_read_value_1 (struct gdbarch *gdbarch,
-			     readable_regcache *regcache, int regnum_offset,
-			     int regsize, struct value *result_value)
-{
-  unsigned v_regnum = AARCH64_V0_REGNUM + regnum_offset;
-
-  /* Enough space for a full vector register.  */
-  gdb_byte reg_buf[register_size (gdbarch, AARCH64_V0_REGNUM)];
-  gdb_static_assert (AARCH64_V0_REGNUM == AARCH64_SVE_Z0_REGNUM);
-
-  if (regcache->raw_read (v_regnum, reg_buf) != REG_VALID)
-    mark_value_bytes_unavailable (result_value, 0,
-				  TYPE_LENGTH (value_type (result_value)));
+static value *
+aarch64_pseudo_read_value_1 (const frame_info_ptr &next_frame,
+			     const int pseudo_reg_num, int raw_regnum_offset)
+{
+  unsigned v_regnum = AARCH64_V0_REGNUM + raw_regnum_offset;
+
+  return pseudo_from_raw_part (next_frame, pseudo_reg_num, v_regnum, 0);
+}
+
+/* Helper function for reading/writing ZA pseudo-registers.  Given REGNUM,
+   a ZA pseudo-register number, return the information on positioning of the
+   bytes that must be read from/written to.  */
+
+static za_offsets
+aarch64_za_offsets_from_regnum (struct gdbarch *gdbarch, int regnum)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  gdb_assert (tdep->has_sme ());
+  gdb_assert (tdep->sme_svq > 0);
+  gdb_assert (tdep->sme_pseudo_base <= regnum);
+  gdb_assert (regnum < tdep->sme_pseudo_base + tdep->sme_pseudo_count);
+
+  struct za_pseudo_encoding encoding;
+
+  /* Decode the ZA pseudo-register number.  */
+  aarch64_za_decode_pseudos (gdbarch, regnum, encoding);
+
+  /* Fetch the streaming vector length.  */
+  size_t svl = sve_vl_from_vq (tdep->sme_svq);
+  za_offsets offsets;
+
+  if (is_sme_tile_slice_pseudo_register (gdbarch, regnum))
+    {
+      if (encoding.horizontal)
+	{
+	  /* Horizontal tile slices are contiguous ranges of svl bytes.  */
+
+	  /* The starting offset depends on the tile index (to locate the tile
+	     in the ZA buffer), the slice index (to locate the slice within the
+	     tile) and the qualifier.  */
+	  offsets.starting_offset
+	    = encoding.tile_index * svl + encoding.slice_index
+					  * (svl >> encoding.qualifier_index);
+	  /* Horizontal tile slice data is contiguous and thus doesn't have
+	     a stride.  */
+	  offsets.stride_size = 0;
+	  /* Horizontal tile slice data is contiguous and thus only has 1
+	     chunk.  */
+	  offsets.chunks = 1;
+	  /* The chunk size is always svl bytes.  */
+	  offsets.chunk_size = svl;
+	}
+      else
+	{
+	  /* Vertical tile slices are non-contiguous ranges of
+	     (1 << qualifier_index) bytes.  */
+
+	  /* The starting offset depends on the tile number (to locate the
+	     tile in the ZA buffer), the slice index (to locate the element
+	     within the tile slice) and the qualifier.  */
+	  offsets.starting_offset
+	    = encoding.tile_index * svl + encoding.slice_index
+					  * (1 << encoding.qualifier_index);
+	  /* The offset between vertical tile slices depends on the qualifier
+	     and svl.  */
+	  offsets.stride_size = svl << encoding.qualifier_index;
+	  /* The number of chunks depends on svl and the qualifier size.  */
+	  offsets.chunks = svl >> encoding.qualifier_index;
+	  /* The chunk size depends on the qualifier.  */
+	  offsets.chunk_size = 1 << encoding.qualifier_index;
+	}
+    }
   else
-    memcpy (value_contents_raw (result_value), reg_buf, regsize);
+    {
+      /* ZA tile pseudo-register.  */
 
-  return result_value;
- }
+      /* Starting offset depends on the tile index and qualifier.  */
+      offsets.starting_offset = encoding.tile_index * svl;
+      /* The offset between tile slices depends on the qualifier and svl.  */
+      offsets.stride_size = svl << encoding.qualifier_index;
+      /* The number of chunks depends on the qualifier and svl.  */
+      offsets.chunks = svl >> encoding.qualifier_index;
+      /* The chunk size is always svl bytes.  */
+      offsets.chunk_size = svl;
+    }
 
-/* Implement the "pseudo_register_read_value" gdbarch method.  */
+  return offsets;
+}
 
-static struct value *
-aarch64_pseudo_read_value (struct gdbarch *gdbarch, readable_regcache *regcache,
-			   int regnum)
+/* Given REGNUM, a SME pseudo-register number, return its value in RESULT.  */
+
+static value *
+aarch64_sme_pseudo_register_read (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+				  const int pseudo_reg_num)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  struct value *result_value = allocate_value (register_type (gdbarch, regnum));
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
-  VALUE_LVAL (result_value) = lval_register;
-  VALUE_REGNUM (result_value) = regnum;
+  gdb_assert (tdep->has_sme ());
+  gdb_assert (tdep->sme_svq > 0);
+  gdb_assert (tdep->sme_pseudo_base <= pseudo_reg_num);
+  gdb_assert (pseudo_reg_num < tdep->sme_pseudo_base + tdep->sme_pseudo_count);
 
-  regnum -= gdbarch_num_regs (gdbarch);
-
-  if (regnum >= AARCH64_Q0_REGNUM && regnum < AARCH64_Q0_REGNUM + 32)
-    return aarch64_pseudo_read_value_1 (gdbarch, regcache,
-					regnum - AARCH64_Q0_REGNUM,
-					Q_REGISTER_SIZE, result_value);
-
-  if (regnum >= AARCH64_D0_REGNUM && regnum < AARCH64_D0_REGNUM + 32)
-    return aarch64_pseudo_read_value_1 (gdbarch, regcache,
-					regnum - AARCH64_D0_REGNUM,
-					D_REGISTER_SIZE, result_value);
-
-  if (regnum >= AARCH64_S0_REGNUM && regnum < AARCH64_S0_REGNUM + 32)
-    return aarch64_pseudo_read_value_1 (gdbarch, regcache,
-					regnum - AARCH64_S0_REGNUM,
-					S_REGISTER_SIZE, result_value);
-
-  if (regnum >= AARCH64_H0_REGNUM && regnum < AARCH64_H0_REGNUM + 32)
-    return aarch64_pseudo_read_value_1 (gdbarch, regcache,
-					regnum - AARCH64_H0_REGNUM,
-					H_REGISTER_SIZE, result_value);
-
-  if (regnum >= AARCH64_B0_REGNUM && regnum < AARCH64_B0_REGNUM + 32)
-    return aarch64_pseudo_read_value_1 (gdbarch, regcache,
-					regnum - AARCH64_B0_REGNUM,
-					B_REGISTER_SIZE, result_value);
-
-  if (tdep->has_sve () && regnum >= AARCH64_SVE_V0_REGNUM
-      && regnum < AARCH64_SVE_V0_REGNUM + 32)
-    return aarch64_pseudo_read_value_1 (gdbarch, regcache,
-					regnum - AARCH64_SVE_V0_REGNUM,
-					V_REGISTER_SIZE, result_value);
+  /* Fetch the offsets that we need in order to read from the correct blocks
+     of ZA.  */
+  za_offsets offsets
+    = aarch64_za_offsets_from_regnum (gdbarch, pseudo_reg_num);
+
+  /* Fetch the contents of ZA.  */
+  value *za_value = value_of_register (tdep->sme_za_regnum, next_frame);
+  value *result = value::allocate_register (next_frame, pseudo_reg_num);
+
+  /* Copy the requested data.  */
+  for (int chunks = 0; chunks < offsets.chunks; chunks++)
+    {
+      int src_offset = offsets.starting_offset + chunks * offsets.stride_size;
+      int dst_offset = chunks * offsets.chunk_size;
+      za_value->contents_copy (result, dst_offset, src_offset,
+			       offsets.chunk_size);
+    }
+
+  return result;
+}
+
+/* Implement the "pseudo_register_read_value" gdbarch method.  */
+
+static value *
+aarch64_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+			   const int pseudo_reg_num)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  if (is_w_pseudo_register (gdbarch, pseudo_reg_num))
+    {
+      enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+      /* Default offset for little endian.  */
+      int offset = 0;
+
+      if (byte_order == BFD_ENDIAN_BIG)
+	offset = 4;
+
+      /* Find the correct X register to extract the data from.  */
+      int x_regnum
+	= AARCH64_X0_REGNUM + (pseudo_reg_num - tdep->w_pseudo_base);
+
+      /* Read the bottom 4 bytes of X.  */
+      return pseudo_from_raw_part (next_frame, pseudo_reg_num, x_regnum,
+				   offset);
+    }
+  else if (is_sme_pseudo_register (gdbarch, pseudo_reg_num))
+    return aarch64_sme_pseudo_register_read (gdbarch, next_frame,
+					     pseudo_reg_num);
+
+  /* Offset in the "pseudo-register space".  */
+  int pseudo_offset = pseudo_reg_num - gdbarch_num_regs (gdbarch);
+
+  if (pseudo_offset >= AARCH64_Q0_REGNUM
+      && pseudo_offset < AARCH64_Q0_REGNUM + 32)
+    return aarch64_pseudo_read_value_1 (next_frame, pseudo_reg_num,
+					pseudo_offset - AARCH64_Q0_REGNUM);
+
+  if (pseudo_offset >= AARCH64_D0_REGNUM
+      && pseudo_offset < AARCH64_D0_REGNUM + 32)
+    return aarch64_pseudo_read_value_1 (next_frame, pseudo_reg_num,
+					pseudo_offset - AARCH64_D0_REGNUM);
+
+  if (pseudo_offset >= AARCH64_S0_REGNUM
+      && pseudo_offset < AARCH64_S0_REGNUM + 32)
+    return aarch64_pseudo_read_value_1 (next_frame, pseudo_reg_num,
+					pseudo_offset - AARCH64_S0_REGNUM);
+
+  if (pseudo_offset >= AARCH64_H0_REGNUM
+      && pseudo_offset < AARCH64_H0_REGNUM + 32)
+    return aarch64_pseudo_read_value_1 (next_frame, pseudo_reg_num,
+					pseudo_offset - AARCH64_H0_REGNUM);
+
+  if (pseudo_offset >= AARCH64_B0_REGNUM
+      && pseudo_offset < AARCH64_B0_REGNUM + 32)
+    return aarch64_pseudo_read_value_1 (next_frame, pseudo_reg_num,
+					pseudo_offset - AARCH64_B0_REGNUM);
+
+  if (tdep->has_sve () && pseudo_offset >= AARCH64_SVE_V0_REGNUM
+      && pseudo_offset < AARCH64_SVE_V0_REGNUM + 32)
+    return aarch64_pseudo_read_value_1 (next_frame, pseudo_reg_num,
+					pseudo_offset - AARCH64_SVE_V0_REGNUM);
+
+  if (tdep->has_pauth () && pseudo_reg_num == tdep->ra_sign_state_regnum)
+    return value::zero (builtin_type (gdbarch)->builtin_uint64, lval_register);
 
   gdb_assert_not_reached ("regnum out of bound");
 }
@@ -2574,64 +3366,138 @@ aarch64_pseudo_read_value (struct gdbarc
 /* Helper for aarch64_pseudo_write.  */
 
 static void
-aarch64_pseudo_write_1 (struct gdbarch *gdbarch, struct regcache *regcache,
-			int regnum_offset, int regsize, const gdb_byte *buf)
+aarch64_pseudo_write_1 (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+			int regnum_offset,
+			gdb::array_view<const gdb_byte> buf)
 {
-  unsigned v_regnum = AARCH64_V0_REGNUM + regnum_offset;
+  unsigned raw_regnum = AARCH64_V0_REGNUM + regnum_offset;
 
-  /* Enough space for a full vector register.  */
-  gdb_byte reg_buf[register_size (gdbarch, AARCH64_V0_REGNUM)];
-  gdb_static_assert (AARCH64_V0_REGNUM == AARCH64_SVE_Z0_REGNUM);
+  /* Enough space for a full vector register.
 
-  /* Ensure the register buffer is zero, we want gdb writes of the
+     Ensure the register buffer is zero, we want gdb writes of the
      various 'scalar' pseudo registers to behavior like architectural
      writes, register width bytes are written the remainder are set to
      zero.  */
-  memset (reg_buf, 0, register_size (gdbarch, AARCH64_V0_REGNUM));
+  gdb::byte_vector raw_buf (register_size (gdbarch, raw_regnum), 0);
+  static_assert (AARCH64_V0_REGNUM == AARCH64_SVE_Z0_REGNUM);
 
-  memcpy (reg_buf, buf, regsize);
-  regcache->raw_write (v_regnum, reg_buf);
+  gdb::array_view<gdb_byte> raw_view (raw_buf);
+  copy (buf, raw_view.slice (0, buf.size ()));
+  put_frame_register (next_frame, raw_regnum, raw_view);
+}
+
+/* Given REGNUM, a SME pseudo-register number, store the bytes from DATA to the
+   pseudo-register.  */
+
+static void
+aarch64_sme_pseudo_register_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+				   const int regnum,
+				   gdb::array_view<const gdb_byte> data)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  gdb_assert (tdep->has_sme ());
+  gdb_assert (tdep->sme_svq > 0);
+  gdb_assert (tdep->sme_pseudo_base <= regnum);
+  gdb_assert (regnum < tdep->sme_pseudo_base + tdep->sme_pseudo_count);
+
+  /* Fetch the offsets that we need in order to write to the correct blocks
+     of ZA.  */
+  za_offsets offsets = aarch64_za_offsets_from_regnum (gdbarch, regnum);
+
+  /* Fetch the contents of ZA.  */
+  value *za_value = value_of_register (tdep->sme_za_regnum, next_frame);
+
+  {
+    /* Create a view only on the portion of za we want to write.  */
+    gdb::array_view<gdb_byte> za_view
+      = za_value->contents_writeable ().slice (offsets.starting_offset);
+
+    /* Copy the requested data.  */
+    for (int chunks = 0; chunks < offsets.chunks; chunks++)
+      {
+	gdb::array_view<const gdb_byte> src
+	  = data.slice (chunks * offsets.chunk_size, offsets.chunk_size);
+	gdb::array_view<gdb_byte> dst
+	  = za_view.slice (chunks * offsets.stride_size, offsets.chunk_size);
+	copy (src, dst);
+      }
+  }
+
+  /* Write back to ZA.  */
+  put_frame_register (next_frame, tdep->sme_za_regnum,
+		      za_value->contents_raw ());
 }
 
 /* Implement the "pseudo_register_write" gdbarch method.  */
 
 static void
-aarch64_pseudo_write (struct gdbarch *gdbarch, struct regcache *regcache,
-		      int regnum, const gdb_byte *buf)
+aarch64_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+		      const int pseudo_reg_num,
+		      gdb::array_view<const gdb_byte> buf)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  regnum -= gdbarch_num_regs (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  if (is_w_pseudo_register (gdbarch, pseudo_reg_num))
+    {
+      enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+      /* Default offset for little endian.  */
+      int offset = 0;
+
+      if (byte_order == BFD_ENDIAN_BIG)
+	offset = 4;
+
+      /* Find the correct X register to extract the data from.  */
+      int x_regnum = AARCH64_X0_REGNUM + (pseudo_reg_num - tdep->w_pseudo_base);
+
+      /* First zero-out the contents of X.  */
+      gdb_byte bytes[8] {};
+      gdb::array_view<gdb_byte> bytes_view (bytes);
+      copy (buf, bytes_view.slice (offset, 4));
+
+      /* Write to the bottom 4 bytes of X.  */
+      put_frame_register (next_frame, x_regnum, bytes_view);
+      return;
+    }
+  else if (is_sme_pseudo_register (gdbarch, pseudo_reg_num))
+    {
+      aarch64_sme_pseudo_register_write (gdbarch, next_frame, pseudo_reg_num,
+					 buf);
+      return;
+    }
+
+  /* Offset in the "pseudo-register space".  */
+  int pseudo_offset = pseudo_reg_num - gdbarch_num_regs (gdbarch);
 
-  if (regnum >= AARCH64_Q0_REGNUM && regnum < AARCH64_Q0_REGNUM + 32)
-    return aarch64_pseudo_write_1 (gdbarch, regcache,
-				   regnum - AARCH64_Q0_REGNUM, Q_REGISTER_SIZE,
-				   buf);
-
-  if (regnum >= AARCH64_D0_REGNUM && regnum < AARCH64_D0_REGNUM + 32)
-    return aarch64_pseudo_write_1 (gdbarch, regcache,
-				   regnum - AARCH64_D0_REGNUM, D_REGISTER_SIZE,
-				   buf);
-
-  if (regnum >= AARCH64_S0_REGNUM && regnum < AARCH64_S0_REGNUM + 32)
-    return aarch64_pseudo_write_1 (gdbarch, regcache,
-				   regnum - AARCH64_S0_REGNUM, S_REGISTER_SIZE,
-				   buf);
-
-  if (regnum >= AARCH64_H0_REGNUM && regnum < AARCH64_H0_REGNUM + 32)
-    return aarch64_pseudo_write_1 (gdbarch, regcache,
-				   regnum - AARCH64_H0_REGNUM, H_REGISTER_SIZE,
-				   buf);
-
-  if (regnum >= AARCH64_B0_REGNUM && regnum < AARCH64_B0_REGNUM + 32)
-    return aarch64_pseudo_write_1 (gdbarch, regcache,
-				   regnum - AARCH64_B0_REGNUM, B_REGISTER_SIZE,
-				   buf);
-
-  if (tdep->has_sve () && regnum >= AARCH64_SVE_V0_REGNUM
-      && regnum < AARCH64_SVE_V0_REGNUM + 32)
-    return aarch64_pseudo_write_1 (gdbarch, regcache,
-				   regnum - AARCH64_SVE_V0_REGNUM,
-				   V_REGISTER_SIZE, buf);
+  if (pseudo_offset >= AARCH64_Q0_REGNUM
+      && pseudo_offset < AARCH64_Q0_REGNUM + 32)
+    return aarch64_pseudo_write_1 (gdbarch, next_frame,
+				   pseudo_offset - AARCH64_Q0_REGNUM, buf);
+
+  if (pseudo_offset >= AARCH64_D0_REGNUM
+      && pseudo_offset < AARCH64_D0_REGNUM + 32)
+    return aarch64_pseudo_write_1 (gdbarch, next_frame,
+				   pseudo_offset - AARCH64_D0_REGNUM, buf);
+
+  if (pseudo_offset >= AARCH64_S0_REGNUM
+      && pseudo_offset < AARCH64_S0_REGNUM + 32)
+    return aarch64_pseudo_write_1 (gdbarch, next_frame,
+				   pseudo_offset - AARCH64_S0_REGNUM, buf);
+
+  if (pseudo_offset >= AARCH64_H0_REGNUM
+      && pseudo_offset < AARCH64_H0_REGNUM + 32)
+    return aarch64_pseudo_write_1 (gdbarch, next_frame,
+				   pseudo_offset - AARCH64_H0_REGNUM, buf);
+
+  if (pseudo_offset >= AARCH64_B0_REGNUM
+      && pseudo_offset < AARCH64_B0_REGNUM + 32)
+    return aarch64_pseudo_write_1 (gdbarch, next_frame,
+				   pseudo_offset - AARCH64_B0_REGNUM, buf);
+
+  if (tdep->has_sve () && pseudo_offset >= AARCH64_SVE_V0_REGNUM
+      && pseudo_offset < AARCH64_SVE_V0_REGNUM + 32)
+    return aarch64_pseudo_write_1 (gdbarch, next_frame,
+				   pseudo_offset - AARCH64_SVE_V0_REGNUM, buf);
 
   gdb_assert_not_reached ("regnum out of bound");
 }
@@ -2639,13 +3505,12 @@ aarch64_pseudo_write (struct gdbarch *gd
 /* Callback function for user_reg_add.  */
 
 static struct value *
-value_of_aarch64_user_reg (struct frame_info *frame, const void *baton)
+value_of_aarch64_user_reg (const frame_info_ptr &frame, const void *baton)
 {
   const int *reg_p = (const int *) baton;
 
-  return value_of_register (*reg_p, frame);
+  return value_of_register (*reg_p, get_next_frame_sentinel_okay (frame));
 }
-
 
 /* Implement the "software_single_step" gdbarch method, needed to
    single step through atomic sequences on AArch64.  */
@@ -2661,8 +3526,18 @@ aarch64_software_single_step (struct reg
   CORE_ADDR breaks[2] = { CORE_ADDR_MAX, CORE_ADDR_MAX };
   CORE_ADDR loc = pc;
   CORE_ADDR closing_insn = 0;
-  uint32_t insn = read_memory_unsigned_integer (loc, insn_size,
-						byte_order_for_code);
+
+  ULONGEST insn_from_memory;
+  if (!safe_read_memory_unsigned_integer (loc, insn_size,
+					  byte_order_for_code,
+					  &insn_from_memory))
+  {
+    /* Assume we don't have a atomic sequence, as we couldn't read the
+       instruction in this location.  */
+    return {};
+  }
+
+  uint32_t insn = insn_from_memory;
   int index;
   int insn_count;
   int bc_insn_count = 0; /* Conditional branch instruction count.  */
@@ -2679,9 +3554,17 @@ aarch64_software_single_step (struct reg
   for (insn_count = 0; insn_count < atomic_sequence_length; ++insn_count)
     {
       loc += insn_size;
-      insn = read_memory_unsigned_integer (loc, insn_size,
-					   byte_order_for_code);
 
+      if (!safe_read_memory_unsigned_integer (loc, insn_size,
+					      byte_order_for_code,
+					      &insn_from_memory))
+      {
+	/* Assume we don't have a atomic sequence, as we couldn't read the
+	   instruction in this location.  */
+	return {};
+      }
+
+      insn = insn_from_memory;
       if (aarch64_decode_insn (insn, &inst, 1, NULL) != 0)
 	return {};
       /* Check if the instruction is a conditional branch.  */
@@ -2731,14 +3614,19 @@ aarch64_software_single_step (struct reg
   return next_pcs;
 }
 
-struct aarch64_displaced_step_closure : public displaced_step_closure
+struct aarch64_displaced_step_copy_insn_closure
+  : public displaced_step_copy_insn_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;
+
+  /* True if it's a branch instruction that saves the link register.  */
+  bool linked_branch = false;
 };
 
 /* Data when visiting instructions for displaced stepping.  */
@@ -2756,7 +3644,7 @@ struct aarch64_displaced_step_data
   /* Registers when doing displaced stepping.  */
   struct regcache *regs;
 
-  aarch64_displaced_step_closure *dsc;
+  aarch64_displaced_step_copy_insn_closure *dsc;
 };
 
 /* Implementation of aarch64_insn_visitor method "b".  */
@@ -2790,6 +3678,12 @@ aarch64_displaced_step_b (const int is_b
       /* Update LR.  */
       regcache_cooked_write_unsigned (dsd->regs, AARCH64_LR_REGNUM,
 				      data->insn_addr + 4);
+      dsd->dsc->linked_branch = true;
+      bool gcs_is_enabled;
+      gdbarch_get_shadow_stack_pointer (dsd->regs->arch (), dsd->regs,
+					gcs_is_enabled);
+      if (gcs_is_enabled)
+	aarch64_push_gcs_entry (dsd->regs, data->insn_addr + 4);
     }
 }
 
@@ -2815,7 +3709,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 +3744,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 +3769,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;
 }
 
@@ -2940,15 +3834,28 @@ aarch64_displaced_step_others (const uin
   struct aarch64_displaced_step_data *dsd
     = (struct aarch64_displaced_step_data *) data;
 
-  aarch64_emit_insn (dsd->insn_buf, insn);
-  dsd->insn_count = 1;
-
-  if ((insn & 0xfffffc1f) == 0xd65f0000)
+  uint32_t masked_insn = (insn & CLEAR_Rn_MASK);
+  if (masked_insn == BLR)
     {
-      /* RET */
-      dsd->dsc->pc_adjust = 0;
+      /* Emit a BR to the same register and then update LR to the original
+	 address (similar to aarch64_displaced_step_b).  */
+      aarch64_emit_insn (dsd->insn_buf, insn & 0xffdfffff);
+      regcache_cooked_write_unsigned (dsd->regs, AARCH64_LR_REGNUM,
+				      data->insn_addr + 4);
+      dsd->dsc->linked_branch = true;
+      bool gcs_is_enabled;
+      gdbarch_get_shadow_stack_pointer (dsd->regs->arch (), dsd->regs,
+					gcs_is_enabled);
+      if (gcs_is_enabled)
+	aarch64_push_gcs_entry (dsd->regs, data->insn_addr + 4);
     }
   else
+    aarch64_emit_insn (dsd->insn_buf, insn);
+  dsd->insn_count = 1;
+
+  if (masked_insn == RET || masked_insn == BR || masked_insn == BLR)
+    dsd->dsc->pc_adjust = 0;
+  else
     dsd->dsc->pc_adjust = 4;
 }
 
@@ -2965,28 +3872,36 @@ static const struct aarch64_insn_visitor
 
 /* Implement the "displaced_step_copy_insn" gdbarch method.  */
 
-struct displaced_step_closure *
+displaced_step_copy_insn_closure_up
 aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
 				  CORE_ADDR from, CORE_ADDR to,
 				  struct regcache *regs)
 {
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
-  uint32_t insn = read_memory_unsigned_integer (from, 4, byte_order_for_code);
   struct aarch64_displaced_step_data dsd;
   aarch64_inst inst;
+  ULONGEST insn_from_memory;
+
+  if (!safe_read_memory_unsigned_integer (from, 4, byte_order_for_code,
+					  &insn_from_memory))
+    return nullptr;
+
+  uint32_t insn = insn_from_memory;
 
   if (aarch64_decode_insn (insn, &inst, 1, NULL) != 0)
     return NULL;
 
-  /* Look for a Load Exclusive instruction which begins the sequence.  */
-  if (inst.opcode->iclass == ldstexcl && bit (insn, 22))
+  /* Look for a Load Exclusive instruction which begins the sequence,
+     or for a MOPS instruction.  */
+  if ((inst.opcode->iclass == ldstexcl && bit (insn, 22))
+      || AARCH64_CPU_HAS_FEATURE (*inst.opcode->avariant, MOPS))
     {
-      /* We can't displaced step atomic sequences.  */
+      /* We can't displaced step atomic sequences nor MOPS instructions.  */
       return NULL;
     }
 
-  std::unique_ptr<aarch64_displaced_step_closure> dsc
-    (new aarch64_displaced_step_closure);
+  std::unique_ptr<aarch64_displaced_step_copy_insn_closure> dsc
+    (new aarch64_displaced_step_copy_insn_closure);
   dsd.base.insn_addr = from;
   dsd.new_addr = to;
   dsd.regs = regs;
@@ -3004,12 +3919,10 @@ aarch64_displaced_step_copy_insn (struct
 	 relocated instruction(s) there.  */
       for (i = 0; i < dsd.insn_count; i++)
 	{
-	  if (debug_displaced)
-	    {
-	      debug_printf ("displaced: writing insn ");
-	      debug_printf ("%.8x", dsd.insn_buf[i]);
-	      debug_printf (" at %s\n", paddress (gdbarch, to + i * 4));
-	    }
+	  displaced_debug_printf ("writing insn %.8x at %s",
+				  dsd.insn_buf[i],
+				  paddress (gdbarch, to + i * 4));
+
 	  write_memory_unsigned_integer (to + i * 4, 4, byte_order_for_code,
 					 (ULONGEST) dsd.insn_buf[i]);
 	}
@@ -3019,24 +3932,44 @@ 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_copy_insn_closure_up (dsc.release ());
 }
 
 /* Implement the "displaced_step_fixup" gdbarch method.  */
 
 void
 aarch64_displaced_step_fixup (struct gdbarch *gdbarch,
-			      struct displaced_step_closure *dsc_,
+			      struct displaced_step_copy_insn_closure *dsc_,
 			      CORE_ADDR from, CORE_ADDR to,
-			      struct regcache *regs)
+			      struct regcache *regs, bool completed_p)
 {
-  aarch64_displaced_step_closure *dsc = (aarch64_displaced_step_closure *) dsc_;
+  aarch64_displaced_step_copy_insn_closure *dsc
+    = (aarch64_displaced_step_copy_insn_closure *) dsc_;
+  CORE_ADDR pc = regcache_read_pc (regs);
+
+  /* If the displaced instruction didn't complete successfully then we need
+     to restore the program counter, and perhaps the Guarded Control Stack.  */
+  if (!completed_p)
+    {
+      bool gcs_is_enabled;
+      gdbarch_get_shadow_stack_pointer (gdbarch, regs, gcs_is_enabled);
+      if (dsc->linked_branch && gcs_is_enabled)
+	aarch64_pop_gcs_entry (regs);
+
+      pc = from + (pc - to);
+      regcache_write_pc (regs, pc);
+      return;
+    }
+
+  displaced_debug_printf ("PC after stepping: %s (was %s).",
+			  paddress (gdbarch, pc), paddress (gdbarch, to));
 
   if (dsc->cond)
     {
-      ULONGEST pc;
+      displaced_debug_printf ("[Conditional] pc_adjust before: %d",
+			      dsc->pc_adjust);
 
-      regcache_cooked_read_unsigned (regs, AARCH64_PC_REGNUM, &pc);
       if (pc - to == 8)
 	{
 	  /* Condition is true.  */
@@ -3048,15 +3981,30 @@ aarch64_displaced_step_fixup (struct gdb
 	}
       else
 	gdb_assert_not_reached ("Unexpected PC value after displaced stepping");
+
+      displaced_debug_printf ("[Conditional] pc_adjust after: %d",
+			      dsc->pc_adjust);
     }
 
+  displaced_debug_printf ("%s PC by %d",
+			  dsc->pc_adjust ? "adjusting" : "not adjusting",
+			  dsc->pc_adjust);
+
   if (dsc->pc_adjust != 0)
     {
-      if (debug_displaced)
+      /* 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)
 	{
-	  debug_printf ("displaced: fixup: set PC to %s:%d\n",
-			paddress (gdbarch, from), dsc->pc_adjust);
+	  displaced_debug_printf ("PC did not move. Discarding PC adjustment.");
+	  dsc->pc_adjust = 0;
 	}
+
+      displaced_debug_printf ("fixup: set PC to %s:%d",
+			      paddress (gdbarch, from), dsc->pc_adjust);
+
       regcache_cooked_write_unsigned (regs, AARCH64_PC_REGNUM,
 				      from + dsc->pc_adjust);
     }
@@ -3064,30 +4012,33 @@ aarch64_displaced_step_fixup (struct gdb
 
 /* Implement the "displaced_step_hw_singlestep" gdbarch method.  */
 
-int
-aarch64_displaced_step_hw_singlestep (struct gdbarch *gdbarch,
-				      struct displaced_step_closure *closure)
+bool
+aarch64_displaced_step_hw_singlestep (struct gdbarch *gdbarch)
 {
-  return 1;
+  return true;
 }
 
 /* Get the correct target description for the given VQ value.
    If VQ is zero then it is assumed SVE is not supported.
-   (It is not possible to set VQ to zero on an SVE system).  */
+   (It is not possible to set VQ to zero on an SVE system).
+
+   MTE_P indicates the presence of the Memory Tagging Extension feature.
+
+   TLS_P indicates the presence of the Thread Local Storage feature.  */
 
 const target_desc *
-aarch64_read_description (uint64_t vq, bool pauth_p)
+aarch64_read_description (const aarch64_features &features)
 {
-  if (vq > AARCH64_MAX_SVE_VQ)
-    error (_("VQ is %" PRIu64 ", maximum supported value is %d"), vq,
+  if (features.vq > AARCH64_MAX_SVE_VQ)
+    error (_("VQ is %" PRIu64 ", maximum supported value is %d"), features.vq,
 	   AARCH64_MAX_SVE_VQ);
 
-  struct target_desc *tdesc = tdesc_aarch64_list[vq][pauth_p];
+  struct target_desc *tdesc = tdesc_aarch64_map[features];
 
   if (tdesc == NULL)
     {
-      tdesc = aarch64_create_target_description (vq, pauth_p);
-      tdesc_aarch64_list[vq][pauth_p] = tdesc;
+      tdesc = aarch64_create_target_description (features);
+      tdesc_aarch64_map[features] = tdesc;
     }
 
   return tdesc;
@@ -3113,18 +4064,83 @@ aarch64_get_tdesc_vq (const struct targe
   return sve_vq_from_vl (vl);
 }
 
-/* Add all the expected register sets into GDBARCH.  */
 
-static void
-aarch64_add_reggroups (struct gdbarch *gdbarch)
+/* Return the svq (streaming vector quotient) used when creating the target
+   description TDESC.  */
+
+static uint64_t
+aarch64_get_tdesc_svq (const struct target_desc *tdesc)
 {
-  reggroup_add (gdbarch, general_reggroup);
-  reggroup_add (gdbarch, float_reggroup);
-  reggroup_add (gdbarch, system_reggroup);
-  reggroup_add (gdbarch, vector_reggroup);
-  reggroup_add (gdbarch, all_reggroup);
-  reggroup_add (gdbarch, save_reggroup);
-  reggroup_add (gdbarch, restore_reggroup);
+  const struct tdesc_feature *feature_sme;
+
+  if (!tdesc_has_registers (tdesc))
+    return 0;
+
+  feature_sme = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.sme");
+
+  if (feature_sme == nullptr)
+    return 0;
+
+  size_t svl_squared = tdesc_register_bitsize (feature_sme, "za");
+
+  /* We have the total size of the ZA matrix, in bits.  Figure out the svl
+     value.  */
+  size_t svl = std::sqrt (svl_squared / 8);
+
+  /* Now extract svq.  */
+  return sve_vq_from_vl (svl);
+}
+
+/* Get the AArch64 features present in the given target description. */
+
+aarch64_features
+aarch64_features_from_target_desc (const struct target_desc *tdesc)
+{
+  aarch64_features features;
+
+  if (tdesc == nullptr)
+    return features;
+
+  features.vq = aarch64_get_tdesc_vq (tdesc);
+
+  /* We need to look for a couple pauth feature name variations.  */
+  features.pauth
+      = (tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.pauth") != nullptr);
+
+  if (!features.pauth)
+    features.pauth = (tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.pauth_v2")
+		      != nullptr);
+
+  features.mte
+      = (tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.mte") != nullptr);
+
+  const struct tdesc_feature *tls_feature
+    = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.tls");
+
+  if (tls_feature != nullptr)
+    {
+      /* We have TLS registers.  Find out how many.  */
+      if (tdesc_unnumbered_register (tls_feature, "tpidr2"))
+	features.tls = 2;
+      else
+	features.tls = 1;
+    }
+
+  features.svq = aarch64_get_tdesc_svq (tdesc);
+
+  /* Check for the SME2 feature.  */
+  features.sme2 = (tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.sme2")
+		   != nullptr);
+
+  /* Check for the GCS feature.  */
+  features.gcs = (tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.gcs")
+		  != nullptr);
+
+  /* Check for the GCS Linux feature.  */
+  features.gcs_linux = (tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.gcs.linux")
+			!= nullptr);
+
+  return features;
 }
 
 /* Implement the "cannot_store_register" gdbarch method.  */
@@ -3132,18 +4148,297 @@ aarch64_add_reggroups (struct gdbarch *g
 static int
 aarch64_cannot_store_register (struct gdbarch *gdbarch, int regnum)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   if (!tdep->has_pauth ())
     return 0;
 
   /* Pointer authentication registers are read-only.  */
-  return (regnum == AARCH64_PAUTH_DMASK_REGNUM (tdep->pauth_reg_base)
-	  || regnum == AARCH64_PAUTH_CMASK_REGNUM (tdep->pauth_reg_base));
+  return (regnum >= tdep->pauth_reg_base
+	  && regnum < tdep->pauth_reg_base + tdep->pauth_reg_count);
+}
+
+/* Implement the stack_frame_destroyed_p gdbarch method.  */
+
+static int
+aarch64_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  CORE_ADDR func_start, func_end;
+  if (!find_pc_partial_function (pc, NULL, &func_start, &func_end))
+    return 0;
+
+  enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
+
+  ULONGEST insn_from_memory;
+  if (!safe_read_memory_unsigned_integer (pc, 4, byte_order_for_code,
+					  &insn_from_memory))
+    return 0;
+
+  uint32_t insn = insn_from_memory;
+
+  aarch64_inst inst;
+  if (aarch64_decode_insn (insn, &inst, 1, nullptr) != 0)
+    return 0;
+
+  return streq (inst.opcode->name, "ret");
+}
+
+/* Helper to get the allocation tag from a 64-bit ADDRESS.
+
+   Return the allocation tag if successful and nullopt otherwise.  */
+
+std::optional<CORE_ADDR>
+aarch64_mte_get_atag (CORE_ADDR address)
+{
+  gdb::byte_vector tags;
+
+  /* Attempt to fetch the allocation tag.  */
+  if (!target_fetch_memtags (address, 1, tags,
+			     static_cast<int> (memtag_type::allocation)))
+    return {};
+
+  /* Only one tag should've been returned.  Make sure we got exactly that.  */
+  if (tags.size () != 1)
+    error (_("Target returned an unexpected number of tags."));
+
+  /* Although our tags are 4 bits in size, they are stored in a
+     byte.  */
+  return tags[0];
+}
+
+/* Implement the memtag_matches_p gdbarch method.  */
+
+static bool
+aarch64_memtag_matches_p (struct gdbarch *gdbarch,
+			  struct value *address)
+{
+  gdb_assert (address != nullptr);
+
+  CORE_ADDR addr = value_as_address (address);
+
+  /* Fetch the allocation tag for ADDRESS.  */
+  std::optional<CORE_ADDR> atag
+    = aarch64_mte_get_atag (aarch64_remove_non_address_bits (gdbarch, addr));
+
+  if (!atag.has_value ())
+    return true;
+
+  /* Fetch the logical tag for ADDRESS.  */
+  gdb_byte ltag = aarch64_mte_get_ltag (addr);
+
+  /* Are the tags the same?  */
+  return ltag == *atag;
+}
+
+/* Implement the set_memtags gdbarch method.  */
+
+static bool
+aarch64_set_memtags (struct gdbarch *gdbarch, struct value *address,
+		     size_t length, const gdb::byte_vector &tags,
+		     memtag_type tag_type)
+{
+  gdb_assert (!tags.empty ());
+  gdb_assert (address != nullptr);
+
+  CORE_ADDR addr = value_as_address (address);
+
+  /* Set the logical tag or the allocation tag.  */
+  if (tag_type == memtag_type::logical)
+    {
+      /* When setting logical tags, we don't care about the length, since
+	 we are only setting a single logical tag.  */
+      addr = aarch64_mte_set_ltag (addr, tags[0]);
+
+      /* Update the value's content with the tag.  */
+      enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+      gdb_byte *srcbuf = address->contents_raw ().data ();
+      store_unsigned_integer (srcbuf, sizeof (addr), byte_order, addr);
+    }
+  else
+    {
+      /* Remove the top byte.  */
+      addr = aarch64_remove_non_address_bits (gdbarch, addr);
+
+      /* With G being the number of tag granules and N the number of tags
+	 passed in, we can have the following cases:
+
+	 1 - G == N: Store all the N tags to memory.
+
+	 2 - G < N : Warn about having more tags than granules, but write G
+		     tags.
+
+	 3 - G > N : This is a "fill tags" operation.  We should use the tags
+		     as a pattern to fill the granules repeatedly until we have
+		     written G tags to memory.
+      */
+
+      size_t g = aarch64_mte_get_tag_granules (addr, length,
+					       AARCH64_MTE_GRANULE_SIZE);
+      size_t n = tags.size ();
+
+      if (g < n)
+	warning (_("Got more tags than memory granules.  Tags will be "
+		   "truncated."));
+      else if (g > n)
+	warning (_("Using tag pattern to fill memory range."));
+
+      if (!target_store_memtags (addr, length, tags,
+				 static_cast<int> (memtag_type::allocation)))
+	return false;
+    }
+  return true;
+}
+
+/* Implement the get_memtag gdbarch method.  */
+
+static struct value *
+aarch64_get_memtag (struct gdbarch *gdbarch, struct value *address,
+		    memtag_type tag_type)
+{
+  gdb_assert (address != nullptr);
+
+  CORE_ADDR addr = value_as_address (address);
+  CORE_ADDR tag = 0;
+
+  /* Get the logical tag or the allocation tag.  */
+  if (tag_type == memtag_type::logical)
+    tag = aarch64_mte_get_ltag (addr);
+  else
+    {
+      /* Remove the top byte.  */
+      addr = aarch64_remove_non_address_bits (gdbarch, addr);
+      std::optional<CORE_ADDR> atag = aarch64_mte_get_atag (addr);
+
+      if (!atag.has_value ())
+	return nullptr;
+
+      tag = *atag;
+    }
+
+  /* Convert the tag to a value.  */
+  return value_from_ulongest (builtin_type (gdbarch)->builtin_unsigned_int,
+			      tag);
+}
+
+/* Implement the memtag_to_string gdbarch method.  */
+
+static std::string
+aarch64_memtag_to_string (struct gdbarch *gdbarch, struct value *tag_value)
+{
+  if (tag_value == nullptr)
+    return "";
+
+  CORE_ADDR tag = value_as_address (tag_value);
+
+  return string_printf ("0x%s", phex_nz (tag));
+}
+
+/* See aarch64-tdep.h.  */
+
+CORE_ADDR
+aarch64_remove_non_address_bits (struct gdbarch *gdbarch, CORE_ADDR pointer)
+{
+  /* By default, we assume TBI and discard the top 8 bits plus the VA range
+     select bit (55).  Below we try to fetch information about pointer
+     authentication masks in order to make non-address removal more
+     precise.  */
+  CORE_ADDR mask = AARCH64_TOP_BITS_MASK;
+
+  /* Check if we have an inferior first.  If not, just use the default
+     mask.
+
+     We use the inferior_ptid here because the pointer authentication masks
+     should be the same across threads of a process.  Since we may not have
+     access to the current thread (gdb may have switched to no inferiors
+     momentarily), we use the inferior ptid.  */
+  if (inferior_ptid != null_ptid)
+    {
+      /* If we do have an inferior, attempt to fetch its thread's thread_info
+	 struct.  */
+      thread_info *thread = current_inferior ()->find_thread (inferior_ptid);
+
+      /* If the thread is running, we will not be able to fetch the mask
+	 registers.  */
+      if (thread != nullptr && thread->state != THREAD_RUNNING)
+	{
+	  /* Otherwise, fetch the register cache and the masks.  */
+	  struct regcache *regs
+	    = get_thread_regcache (current_inferior ()->process_target (),
+				   inferior_ptid);
+
+	  /* Use the gdbarch from the register cache to check for pointer
+	     authentication support, as it matches the features found in
+	     that particular thread.  */
+	  aarch64_gdbarch_tdep *tdep
+	    = gdbarch_tdep<aarch64_gdbarch_tdep> (regs->arch ());
+
+	  /* Is there pointer authentication support?  */
+	  if (tdep->has_pauth ())
+	    {
+	      CORE_ADDR cmask, dmask;
+	      int dmask_regnum
+		= AARCH64_PAUTH_DMASK_REGNUM (tdep->pauth_reg_base);
+	      int cmask_regnum
+		= AARCH64_PAUTH_CMASK_REGNUM (tdep->pauth_reg_base);
+
+	      /* If we have a kernel address and we have kernel-mode address
+		 mask registers, use those instead.  */
+	      if (tdep->pauth_reg_count > 2
+		  && pointer & VA_RANGE_SELECT_BIT_MASK)
+		{
+		  dmask_regnum
+		    = AARCH64_PAUTH_DMASK_HIGH_REGNUM (tdep->pauth_reg_base);
+		  cmask_regnum
+		    = AARCH64_PAUTH_CMASK_HIGH_REGNUM (tdep->pauth_reg_base);
+		}
+
+	      /* We have both a code mask and a data mask.  For now they are
+		 the same, but this may change in the future.  */
+	      if (regs->cooked_read (dmask_regnum, &dmask) != REG_VALID)
+		dmask = mask;
+
+	      if (regs->cooked_read (cmask_regnum, &cmask) != REG_VALID)
+		cmask = mask;
+
+	      mask |= aarch64_mask_from_pac_registers (cmask, dmask);
+	    }
+	}
+    }
+
+  return aarch64_remove_top_bits (pointer, mask);
+}
+
+/* Given NAMES, a vector of strings, initialize it with all the SME
+   pseudo-register names for the current streaming vector length.  */
+
+static void
+aarch64_initialize_sme_pseudo_names (struct gdbarch *gdbarch,
+				     std::vector<std::string> &names)
+{
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
+
+  gdb_assert (tdep->has_sme ());
+  gdb_assert (tdep->sme_tile_slice_pseudo_base > 0);
+  gdb_assert (tdep->sme_tile_pseudo_base > 0);
+
+  for (int i = 0; i < tdep->sme_tile_slice_pseudo_count; i++)
+    {
+      int regnum = tdep->sme_tile_slice_pseudo_base + i;
+      struct za_pseudo_encoding encoding;
+      aarch64_za_decode_pseudos (gdbarch, regnum, encoding);
+      names.push_back (aarch64_za_tile_slice_name (encoding));
+    }
+  for (int i = 0; i < AARCH64_ZA_TILES_NUM; i++)
+    {
+      int regnum = tdep->sme_tile_pseudo_base + i;
+      struct za_pseudo_encoding encoding;
+      aarch64_za_decode_pseudos (gdbarch, regnum, encoding);
+      names.push_back (aarch64_za_tile_name (encoding));
+    }
 }
 
 /* Initialize the current architecture based on INFO.  If possible,
-   re-use an architecture from ARCHES, which is a list of
+   reuse an architecture from ARCHES, which is a list of
    architectures already created during this debugging session.
 
    Called e.g. at program startup, when reading a core file, and when
@@ -3156,54 +4451,61 @@ aarch64_gdbarch_init (struct gdbarch_inf
   const struct tdesc_feature *feature_pauth;
   bool valid_p = true;
   int i, num_regs = 0, num_pseudo_regs = 0;
-  int first_pauth_regnum = -1, pauth_ra_state_offset = -1;
-
-  /* Use the vector length passed via the target info.  Here -1 is used for no
-     SVE, and 0 is unset.  If unset then use the vector length from the existing
-     tdesc.  */
-  uint64_t vq = 0;
-  if (info.id == (int *) -1)
-    vq = 0;
-  else if (info.id != 0)
-    vq = (uint64_t) info.id;
-  else
-    vq = aarch64_get_tdesc_vq (info.target_desc);
+  int first_pauth_regnum = -1, ra_sign_state_offset = -1;
+  int first_mte_regnum = -1, first_tls_regnum = -1;
+  uint64_t vq = aarch64_get_tdesc_vq (info.target_desc);
+  uint64_t svq = aarch64_get_tdesc_svq (info.target_desc);
 
   if (vq > AARCH64_MAX_SVE_VQ)
-    internal_error (__FILE__, __LINE__, _("VQ out of bounds: %s (max %d)"),
+    internal_error (_("VQ out of bounds: %s (max %d)"),
 		    pulongest (vq), AARCH64_MAX_SVE_VQ);
 
+  if (svq > AARCH64_MAX_SVE_VQ)
+    internal_error (_("Streaming vector quotient (svq) out of bounds: %s"
+		      " (max %d)"),
+		    pulongest (svq), AARCH64_MAX_SVE_VQ);
+
   /* If there is already a candidate, use it.  */
   for (gdbarch_list *best_arch = gdbarch_list_lookup_by_info (arches, &info);
        best_arch != nullptr;
        best_arch = gdbarch_list_lookup_by_info (best_arch->next, &info))
     {
-      struct gdbarch_tdep *tdep = gdbarch_tdep (best_arch->gdbarch);
-      if (tdep && tdep->vq == vq)
+      aarch64_gdbarch_tdep *tdep
+	= gdbarch_tdep<aarch64_gdbarch_tdep> (best_arch->gdbarch);
+      if (tdep && tdep->vq == vq && tdep->sme_svq == svq)
 	return best_arch->gdbarch;
     }
 
   /* Ensure we always have a target descriptor, and that it is for the given VQ
      value.  */
   const struct target_desc *tdesc = info.target_desc;
-  if (!tdesc_has_registers (tdesc) || vq != aarch64_get_tdesc_vq (tdesc))
-    tdesc = aarch64_read_description (vq, false);
+  if (!tdesc_has_registers (tdesc) || vq != aarch64_get_tdesc_vq (tdesc)
+      || svq != aarch64_get_tdesc_svq (tdesc))
+    {
+      aarch64_features features;
+      features.vq = vq;
+      features.svq = svq;
+      tdesc = aarch64_read_description (features);
+    }
   gdb_assert (tdesc);
 
   feature_core = tdesc_find_feature (tdesc,"org.gnu.gdb.aarch64.core");
   feature_fpu = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.fpu");
   feature_sve = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.sve");
-  feature_pauth = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.pauth");
+  const struct tdesc_feature *feature_mte
+    = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.mte");
+  const struct tdesc_feature *feature_tls
+    = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.tls");
 
   if (feature_core == nullptr)
     return nullptr;
 
-  struct tdesc_arch_data *tdesc_data = tdesc_data_alloc ();
+  tdesc_arch_data_up tdesc_data = tdesc_data_alloc ();
 
   /* Validate the description provides the mandatory core R registers
      and allocate their numbers.  */
   for (i = 0; i < ARRAY_SIZE (aarch64_r_register_names); i++)
-    valid_p &= tdesc_numbered_register (feature_core, tdesc_data,
+    valid_p &= tdesc_numbered_register (feature_core, tdesc_data.get (),
 					AARCH64_X0_REGNUM + i,
 					aarch64_r_register_names[i]);
 
@@ -3218,7 +4520,7 @@ aarch64_gdbarch_init (struct gdbarch_inf
       /* Validate the description provides the mandatory V registers
 	 and allocate their numbers.  */
       for (i = 0; i < ARRAY_SIZE (aarch64_v_register_names); i++)
-	valid_p &= tdesc_numbered_register (feature_fpu, tdesc_data,
+	valid_p &= tdesc_numbered_register (feature_fpu, tdesc_data.get (),
 					    AARCH64_V0_REGNUM + i,
 					    aarch64_v_register_names[i]);
 
@@ -3231,7 +4533,7 @@ aarch64_gdbarch_init (struct gdbarch_inf
       /* Validate the description provides the mandatory SVE registers
 	 and allocate their numbers.  */
       for (i = 0; i < ARRAY_SIZE (aarch64_sve_register_names); i++)
-	valid_p &= tdesc_numbered_register (feature_sve, tdesc_data,
+	valid_p &= tdesc_numbered_register (feature_sve, tdesc_data.get (),
 					    AARCH64_SVE_Z0_REGNUM + i,
 					    aarch64_sve_register_names[i]);
 
@@ -3248,33 +4550,191 @@ aarch64_gdbarch_init (struct gdbarch_inf
       num_pseudo_regs += 32;	/* add the Bn scalar register pseudos */
     }
 
+  int first_sme_regnum = -1;
+  int first_sme2_regnum = -1;
+  int first_sme_pseudo_regnum = -1;
+  const struct tdesc_feature *feature_sme
+    = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.sme");
+  if (feature_sme != nullptr)
+    {
+      /* Record the first SME register.  */
+      first_sme_regnum = num_regs;
+
+      valid_p &= tdesc_numbered_register (feature_sme, tdesc_data.get (),
+					  num_regs++, "svg");
+
+      valid_p &= tdesc_numbered_register (feature_sme, tdesc_data.get (),
+					  num_regs++, "svcr");
+
+      valid_p &= tdesc_numbered_register (feature_sme, tdesc_data.get (),
+					  num_regs++, "za");
+
+      /* Record the first SME pseudo register.  */
+      first_sme_pseudo_regnum = num_pseudo_regs;
+
+      /* Add the ZA tile slice pseudo registers.  The number of tile slice
+	 pseudo-registers depend on the svl, and is always a multiple of 5.  */
+      num_pseudo_regs += (svq << 5) * 5;
+
+      /* Add the ZA tile pseudo registers.  */
+      num_pseudo_regs += AARCH64_ZA_TILES_NUM;
+
+      /* Now check for the SME2 feature.  SME2 is only available if SME is
+	 available.  */
+      const struct tdesc_feature *feature_sme2
+	= tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.sme2");
+      if (feature_sme2 != nullptr)
+	{
+	  /* Record the first SME2 register.  */
+	  first_sme2_regnum = num_regs;
+
+	  valid_p &= tdesc_numbered_register (feature_sme2, tdesc_data.get (),
+					      num_regs++, "zt0");
+	}
+    }
+
+  /* Add the TLS register.  */
+  int tls_register_count = 0;
+  if (feature_tls != nullptr)
+    {
+      first_tls_regnum = num_regs;
+
+      /* Look for the TLS registers.  tpidr is required, but tpidr2 is
+	 optional.  */
+      valid_p
+	= tdesc_numbered_register (feature_tls, tdesc_data.get (),
+				   first_tls_regnum, "tpidr");
+
+      if (valid_p)
+	{
+	  tls_register_count++;
+
+	  bool has_tpidr2
+	    = tdesc_numbered_register (feature_tls, tdesc_data.get (),
+				       first_tls_regnum + tls_register_count,
+				       "tpidr2");
+
+	  /* Figure out how many TLS registers we have.  */
+	  if (has_tpidr2)
+	    tls_register_count++;
+
+	  num_regs += tls_register_count;
+	}
+      else
+	{
+	  warning (_("Provided TLS register feature doesn't contain "
+		     "required tpidr register."));
+	  return nullptr;
+	}
+    }
+
+  /* We have two versions of the pauth target description due to a past bug
+     where GDB would crash when seeing the first version of the pauth target
+     description.  */
+  feature_pauth = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.pauth");
+  if (feature_pauth == nullptr)
+    feature_pauth = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.pauth_v2");
+
   /* Add the pauth registers.  */
+  int pauth_masks = 0;
   if (feature_pauth != NULL)
     {
       first_pauth_regnum = num_regs;
-      pauth_ra_state_offset = num_pseudo_regs;
+      ra_sign_state_offset = num_pseudo_regs;
+
+      /* Size of the expected register set with all 4 masks.  */
+      int set_size = ARRAY_SIZE (aarch64_pauth_register_names);
+
+      /* QEMU exposes a couple additional masks for the high half of the
+	 address.  We should either have 2 registers or 4 registers.  */
+      if (tdesc_unnumbered_register (feature_pauth,
+				     "pauth_dmask_high") == 0)
+	{
+	  /* We did not find pauth_dmask_high, assume we only have
+	     2 masks.  We are not dealing with QEMU/Emulators then.  */
+	  set_size -= 2;
+	}
+
       /* Validate the descriptor provides the mandatory PAUTH registers and
 	 allocate their numbers.  */
-      for (i = 0; i < ARRAY_SIZE (aarch64_pauth_register_names); i++)
-	valid_p &= tdesc_numbered_register (feature_pauth, tdesc_data,
+      for (i = 0; i < set_size; i++)
+	valid_p &= tdesc_numbered_register (feature_pauth, tdesc_data.get (),
 					    first_pauth_regnum + i,
 					    aarch64_pauth_register_names[i]);
 
       num_regs += i;
       num_pseudo_regs += 1;	/* Count RA_STATE pseudo register.  */
+      pauth_masks = set_size;
+    }
+
+  /* Add the MTE registers.  */
+  if (feature_mte != NULL)
+    {
+      first_mte_regnum = num_regs;
+      /* Validate the descriptor provides the mandatory MTE registers and
+	 allocate their numbers.  */
+      for (i = 0; i < ARRAY_SIZE (aarch64_mte_register_names); i++)
+	valid_p &= tdesc_numbered_register (feature_mte, tdesc_data.get (),
+					    first_mte_regnum + i,
+					    aarch64_mte_register_names[i]);
+
+      num_regs += i;
+    }
+    /* W pseudo-registers */
+    int first_w_regnum = num_pseudo_regs;
+    num_pseudo_regs += 31;
+
+  const tdesc_feature *feature_gcs
+    = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.gcs");
+  int first_gcs_regnum = -1;
+  /* Add the GCS registers.  */
+  if (feature_gcs != nullptr)
+    {
+      first_gcs_regnum = num_regs;
+      /* Validate the descriptor provides the mandatory GCS registers and
+	 allocate their numbers.  */
+      for (i = 0; i < ARRAY_SIZE (aarch64_gcs_register_names); i++)
+	valid_p &= tdesc_numbered_register (feature_gcs, tdesc_data.get (),
+					    first_gcs_regnum + i,
+					    aarch64_gcs_register_names[i]);
+
+      num_regs += i;
     }
 
   if (!valid_p)
+    return nullptr;
+
+  const tdesc_feature *feature_gcs_linux
+    = tdesc_find_feature (tdesc, "org.gnu.gdb.aarch64.gcs.linux");
+  int first_gcs_linux_regnum = -1;
+  /* Add the GCS Linux registers.  */
+  if (feature_gcs_linux != nullptr && feature_gcs == nullptr)
     {
-      tdesc_data_cleanup (tdesc_data);
+      /* This feature depends on the GCS feature.  */
       return nullptr;
     }
+  else if (feature_gcs_linux != nullptr)
+    {
+      first_gcs_linux_regnum = num_regs;
+      /* Validate the descriptor provides the mandatory GCS Linux registers
+	 and allocate their numbers.  */
+      for (i = 0; i < ARRAY_SIZE (aarch64_gcs_linux_register_names); i++)
+	valid_p &= tdesc_numbered_register (feature_gcs_linux, tdesc_data.get (),
+					    first_gcs_linux_regnum + i,
+					    aarch64_gcs_linux_register_names[i]);
+
+      num_regs += i;
+    }
+
+  if (!valid_p)
+    return nullptr;
 
   /* AArch64 code is always little-endian.  */
   info.byte_order_for_code = BFD_ENDIAN_LITTLE;
 
-  struct gdbarch_tdep *tdep = XCNEW (struct gdbarch_tdep);
-  struct gdbarch *gdbarch = gdbarch_alloc (&info, tdep);
+  gdbarch *gdbarch
+    = gdbarch_alloc (&info, gdbarch_tdep_up (new aarch64_gdbarch_tdep));
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   /* This should be low enough for everything.  */
   tdep->lowest_pc = 0x20;
@@ -3282,8 +4742,24 @@ aarch64_gdbarch_init (struct gdbarch_inf
   tdep->jb_elt_size = 8;
   tdep->vq = vq;
   tdep->pauth_reg_base = first_pauth_regnum;
-  tdep->pauth_ra_state_regnum = (feature_pauth == NULL) ? -1
-				: pauth_ra_state_offset + num_regs;
+  tdep->pauth_reg_count = pauth_masks;
+  tdep->ra_sign_state_regnum = -1;
+  tdep->mte_reg_base = first_mte_regnum;
+  tdep->tls_regnum_base = first_tls_regnum;
+  tdep->tls_register_count = tls_register_count;
+  tdep->gcs_reg_base = first_gcs_regnum;
+  tdep->gcs_linux_reg_base = first_gcs_linux_regnum;
+
+  /* Set the SME register set details.  The pseudo-registers will be adjusted
+     later.  */
+  tdep->sme_reg_base = first_sme_regnum;
+  tdep->sme_svg_regnum = first_sme_regnum;
+  tdep->sme_svcr_regnum = first_sme_regnum + 1;
+  tdep->sme_za_regnum = first_sme_regnum + 2;
+  tdep->sme_svq = svq;
+
+  /* Set the SME2 register set details.  */
+  tdep->sme2_zt0_regnum = first_sme2_regnum;
 
   set_gdbarch_push_dummy_call (gdbarch, aarch64_push_dummy_call);
   set_gdbarch_frame_align (gdbarch, aarch64_frame_align);
@@ -3300,7 +4776,7 @@ aarch64_gdbarch_init (struct gdbarch_inf
   set_gdbarch_sw_breakpoint_from_kind (gdbarch,
 				       aarch64_breakpoint::bp_from_kind);
   set_gdbarch_have_nonsteppable_watchpoint (gdbarch, 1);
-  set_gdbarch_software_single_step (gdbarch, aarch64_software_single_step);
+  set_gdbarch_get_next_pcs (gdbarch, aarch64_software_single_step);
 
   /* Information about registers, etc.  */
   set_gdbarch_sp_regnum (gdbarch, AARCH64_SP_REGNUM);
@@ -3316,6 +4792,23 @@ aarch64_gdbarch_init (struct gdbarch_inf
 					aarch64_pseudo_register_reggroup_p);
   set_gdbarch_cannot_store_register (gdbarch, aarch64_cannot_store_register);
 
+  /* Set the allocation tag granule size to 16 bytes.  */
+  set_gdbarch_memtag_granule_size (gdbarch, AARCH64_MTE_GRANULE_SIZE);
+
+  /* Register a hook for checking if there is a memory tag match.  */
+  set_gdbarch_memtag_matches_p (gdbarch, aarch64_memtag_matches_p);
+
+  /* Register a hook for setting the logical/allocation tags for
+     a range of addresses.  */
+  set_gdbarch_set_memtags (gdbarch, aarch64_set_memtags);
+
+  /* Register a hook for extracting the logical/allocation tag from an
+     address.  */
+  set_gdbarch_get_memtag (gdbarch, aarch64_get_memtag);
+
+  /* Register a hook for converting a memory tag to a string.  */
+  set_gdbarch_memtag_to_string (gdbarch, aarch64_memtag_to_string);
+
   /* ABI */
   set_gdbarch_short_bit (gdbarch, 16);
   set_gdbarch_int_bit (gdbarch, 32);
@@ -3329,14 +4822,17 @@ aarch64_gdbarch_init (struct gdbarch_inf
   set_gdbarch_wchar_signed (gdbarch, 0);
   set_gdbarch_float_format (gdbarch, floatformats_ieee_single);
   set_gdbarch_double_format (gdbarch, floatformats_ieee_double);
-  set_gdbarch_long_double_format (gdbarch, floatformats_ia64_quad);
+  set_gdbarch_long_double_format (gdbarch, floatformats_ieee_quad);
   set_gdbarch_type_align (gdbarch, aarch64_type_align);
 
+  /* Detect whether PC is at a point where the stack has been destroyed.  */
+  set_gdbarch_stack_frame_destroyed_p (gdbarch, aarch64_stack_frame_destroyed_p);
+
   /* Internal <-> external register number maps.  */
   set_gdbarch_dwarf2_reg_to_regnum (gdbarch, aarch64_dwarf_reg_to_regnum);
 
   /* Returning results.  */
-  set_gdbarch_return_value (gdbarch, aarch64_return_value);
+  set_gdbarch_return_value_as_value (gdbarch, aarch64_return_value);
 
   /* Disassembly.  */
   set_gdbarch_print_insn (gdbarch, aarch64_gdb_print_insn);
@@ -3344,12 +4840,9 @@ aarch64_gdbarch_init (struct gdbarch_inf
   /* Virtual tables.  */
   set_gdbarch_vbit_in_delta (gdbarch, 1);
 
-  /* Register architecture.  */
-  aarch64_add_reggroups (gdbarch);
-
   /* Hook in the ABI-specific overrides, if they have been registered.  */
   info.target_desc = tdesc;
-  info.tdesc_data = tdesc_data;
+  info.tdesc_data = tdesc_data.get ();
   gdbarch_init_osabi (info, gdbarch);
 
   dwarf2_frame_set_init_reg (gdbarch, aarch64_dwarf2_frame_init_reg);
@@ -3357,6 +4850,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);
@@ -3374,7 +4871,117 @@ aarch64_gdbarch_init (struct gdbarch_inf
 
   set_gdbarch_get_pc_address_flags (gdbarch, aarch64_get_pc_address_flags);
 
-  tdesc_use_registers (gdbarch, tdesc, tdesc_data);
+  if (tdep->has_gcs ())
+    set_gdbarch_shadow_stack_push (gdbarch, aarch64_shadow_stack_push);
+
+  tdesc_use_registers (gdbarch, tdesc, std::move (tdesc_data));
+
+  /* Fetch the updated number of registers after we're done adding all
+     entries from features we don't explicitly care about.  This is the case
+     for bare metal debugging stubs that include a lot of system registers.  */
+  num_regs = gdbarch_num_regs (gdbarch);
+
+  /* With the number of real registers updated, setup the pseudo-registers and
+     record their numbers.  */
+
+  /* Setup W pseudo-register numbers.  */
+  tdep->w_pseudo_base = first_w_regnum + num_regs;
+  tdep->w_pseudo_count = 31;
+
+  /* Pointer authentication pseudo-registers.  */
+  if (tdep->has_pauth ())
+    tdep->ra_sign_state_regnum = ra_sign_state_offset + num_regs;
+
+  /* Architecture hook to remove bits of a pointer that are not part of the
+     address, like memory tags (MTE) and pointer authentication signatures.
+     Configure address adjustment for watchpoints, breakpoints and memory
+     transfer.  */
+  set_gdbarch_remove_non_address_bits_watchpoint
+    (gdbarch, aarch64_remove_non_address_bits);
+  set_gdbarch_remove_non_address_bits_breakpoint
+    (gdbarch, aarch64_remove_non_address_bits);
+  set_gdbarch_remove_non_address_bits_memory
+    (gdbarch, aarch64_remove_non_address_bits);
+
+  /* SME pseudo-registers.  */
+  if (tdep->has_sme ())
+    {
+      tdep->sme_pseudo_base = num_regs + first_sme_pseudo_regnum;
+      tdep->sme_tile_slice_pseudo_base = tdep->sme_pseudo_base;
+      tdep->sme_tile_slice_pseudo_count = (svq * 32) * 5;
+      tdep->sme_tile_pseudo_base
+	= tdep->sme_pseudo_base + tdep->sme_tile_slice_pseudo_count;
+      tdep->sme_pseudo_count
+	= tdep->sme_tile_slice_pseudo_count + AARCH64_ZA_TILES_NUM;
+
+      /* The SME ZA pseudo-registers are a set of 160 to 2560 pseudo-registers
+	 depending on the value of svl.
+
+	 The tile pseudo-registers are organized around their qualifiers
+	 (b, h, s, d and q).  Their numbers are distributed as follows:
+
+	 b 0
+	 h 1~2
+	 s 3~6
+	 d 7~14
+	 q 15~30
+
+	 The naming of the tile pseudo-registers follows the pattern za<t><q>,
+	 where:
+
+	 <t> is the tile number, with the following possible values based on
+	 the qualifiers:
+
+	 Qualifier - Allocated indexes
+
+	 b - 0
+	 h - 0~1
+	 s - 0~3
+	 d - 0~7
+	 q - 0~15
+
+	 <q> is the qualifier: b, h, s, d and q.
+
+	 The tile slice pseudo-registers are organized around their
+	 qualifiers as well (b, h, s, d and q), but also around their
+	 direction (h - horizontal and v - vertical).
+
+	 Even-numbered tile slice pseudo-registers are horizontally-oriented
+	 and odd-numbered tile slice pseudo-registers are vertically-oriented.
+
+	 Their numbers are distributed as follows:
+
+	 Qualifier - Allocated indexes
+
+	 b tile slices - 0~511
+	 h tile slices - 512~1023
+	 s tile slices - 1024~1535
+	 d tile slices - 1536~2047
+	 q tile slices - 2048~2559
+
+	 The naming of the tile slice pseudo-registers follows the pattern
+	 za<t><d><q><s>, where:
+
+	 <t> is the tile number as described for the tile pseudo-registers.
+	 <d> is the direction of the tile slice (h or v)
+	 <q> is the qualifier of the tile slice (b, h, s, d or q)
+	 <s> is the slice number, defined as follows:
+
+	 Qualifier - Allocated indexes
+
+	 b - 0~15
+	 h - 0~7
+	 s - 0~3
+	 d - 0~1
+	 q - 0
+
+	 We have helper functions to translate to/from register index from/to
+	 the set of fields that make the pseudo-register names.  */
+
+      /* Build the array of pseudo-register names available for this
+	 particular gdbarch configuration.  */
+      aarch64_initialize_sme_pseudo_names (gdbarch, tdep->sme_pseudo_names);
+    }
 
   /* Add standard register aliases.  */
   for (i = 0; i < ARRAY_SIZE (aarch64_register_aliases); i++)
@@ -3390,13 +4997,60 @@ aarch64_gdbarch_init (struct gdbarch_inf
 static void
 aarch64_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  aarch64_gdbarch_tdep *tdep = gdbarch_tdep<aarch64_gdbarch_tdep> (gdbarch);
 
   if (tdep == NULL)
     return;
 
-  fprintf_unfiltered (file, _("aarch64_dump_tdep: Lowest pc = 0x%s"),
-		      paddress (gdbarch, tdep->lowest_pc));
+  gdb_printf (file, _("aarch64_dump_tdep: Lowest pc = 0x%s\n"),
+	      paddress (gdbarch, tdep->lowest_pc));
+
+  /* SME fields.  */
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_type_q = %s\n"),
+	      host_address_to_string (tdep->sme_tile_type_q));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_type_d = %s\n"),
+	      host_address_to_string (tdep->sme_tile_type_d));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_type_s = %s\n"),
+	      host_address_to_string (tdep->sme_tile_type_s));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_type_h = %s\n"),
+	      host_address_to_string (tdep->sme_tile_type_h));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_type_n = %s\n"),
+	      host_address_to_string (tdep->sme_tile_type_b));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_slice_type_q = %s\n"),
+	      host_address_to_string (tdep->sme_tile_slice_type_q));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_slice_type_d = %s\n"),
+	      host_address_to_string (tdep->sme_tile_slice_type_d));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_slice_type_s = %s\n"),
+	      host_address_to_string (tdep->sme_tile_slice_type_s));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_slice_type_h = %s\n"),
+	      host_address_to_string (tdep->sme_tile_slice_type_h));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_slice_type_b = %s\n"),
+	      host_address_to_string (tdep->sme_tile_slice_type_b));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_reg_base = %s\n"),
+	      pulongest (tdep->sme_reg_base));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_svg_regnum = %s\n"),
+	      pulongest (tdep->sme_svg_regnum));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_svcr_regnum = %s\n"),
+	      pulongest (tdep->sme_svcr_regnum));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_za_regnum = %s\n"),
+	      pulongest (tdep->sme_za_regnum));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_pseudo_base = %s\n"),
+	      pulongest (tdep->sme_pseudo_base));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_pseudo_count = %s\n"),
+	      pulongest (tdep->sme_pseudo_count));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_slice_pseudo_base = %s\n"),
+	      pulongest (tdep->sme_tile_slice_pseudo_base));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_slice_pseudo_count = %s\n"),
+	      pulongest (tdep->sme_tile_slice_pseudo_count));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_tile_pseudo_base = %s\n"),
+	      pulongest (tdep->sme_tile_pseudo_base));
+  gdb_printf (file, _("aarch64_dump_tdep: sme_svq = %s\n"),
+	      pulongest (tdep->sme_svq));
+
+  gdb_printf (file, _("aarch64_dump_tdep: gcs_reg_base = %d\n"),
+	      tdep->gcs_reg_base);
+  gdb_printf (file, _("aarch64_dump_tdep: gcs_linux_reg_base = %d\n"),
+	      tdep->gcs_linux_reg_base);
 }
 
 #if GDB_SELF_TEST
@@ -3406,8 +5060,7 @@ static void aarch64_process_record_test
 }
 #endif
 
-void
-_initialize_aarch64_tdep (void)
+INIT_GDB_FILE (aarch64_tdep)
 {
   gdbarch_register (bfd_arch_aarch64, aarch64_gdbarch_init,
 		    aarch64_dump_tdep);
@@ -3432,29 +5085,29 @@ When on, AArch64 specific debugging is e
 /* AArch64 process record-replay related structures, defines etc.  */
 
 #define REG_ALLOC(REGS, LENGTH, RECORD_BUF) \
-        do  \
-          { \
-            unsigned int reg_len = LENGTH; \
-            if (reg_len) \
-              { \
-                REGS = XNEWVEC (uint32_t, reg_len); \
-                memcpy(&REGS[0], &RECORD_BUF[0], sizeof(uint32_t)*LENGTH); \
-              } \
-          } \
-        while (0)
+	do  \
+	  { \
+	    unsigned int reg_len = LENGTH; \
+	    if (reg_len) \
+	      { \
+		REGS = XNEWVEC (uint32_t, reg_len); \
+		memcpy(&REGS[0], &RECORD_BUF[0], sizeof(uint32_t)*LENGTH); \
+	      } \
+	  } \
+	while (0)
 
 #define MEM_ALLOC(MEMS, LENGTH, RECORD_BUF) \
-        do  \
-          { \
-            unsigned int mem_len = LENGTH; \
-            if (mem_len) \
-            { \
-              MEMS =  XNEWVEC (struct aarch64_mem_r, mem_len);  \
-              memcpy(&MEMS->len, &RECORD_BUF[0], \
-                     sizeof(struct aarch64_mem_r) * LENGTH); \
-            } \
-          } \
-          while (0)
+	do  \
+	  { \
+	    unsigned int mem_len = LENGTH; \
+	    if (mem_len) \
+	      { \
+		MEMS =  XNEWVEC (struct aarch64_mem_r, mem_len);  \
+		memcpy(MEMS, &RECORD_BUF[0], \
+		       sizeof(struct aarch64_mem_r) * LENGTH); \
+	      } \
+	  } \
+	  while (0)
 
 /* AArch64 record/replay structures and enumerations.  */
 
@@ -3471,7 +5124,7 @@ enum aarch64_record_result
   AARCH64_RECORD_UNKNOWN
 };
 
-typedef struct insn_decode_record_t
+struct aarch64_insn_decode_record
 {
   struct gdbarch *gdbarch;
   struct regcache *regcache;
@@ -3481,12 +5134,12 @@ typedef struct insn_decode_record_t
   uint32_t reg_rec_count;              /* Count of register records.  */
   uint32_t *aarch64_regs;              /* Registers to be recorded.  */
   struct aarch64_mem_r *aarch64_mems;  /* Memory locations to be recorded.  */
-} insn_decode_record;
+};
 
 /* Record handler for data processing - register instructions.  */
 
 static unsigned int
-aarch64_record_data_proc_reg (insn_decode_record *aarch64_insn_r)
+aarch64_record_data_proc_reg (aarch64_insn_decode_record *aarch64_insn_r)
 {
   uint8_t reg_rd, insn_bits24_27, insn_bits21_23;
   uint32_t record_buf[4];
@@ -3562,7 +5215,7 @@ aarch64_record_data_proc_reg (insn_decod
 /* Record handler for data processing - immediate instructions.  */
 
 static unsigned int
-aarch64_record_data_proc_imm (insn_decode_record *aarch64_insn_r)
+aarch64_record_data_proc_imm (aarch64_insn_decode_record *aarch64_insn_r)
 {
   uint8_t reg_rd, insn_bit23, insn_bits24_27, setflags;
   uint32_t record_buf[4];
@@ -3607,9 +5260,11 @@ aarch64_record_data_proc_imm (insn_decod
 /* Record handler for branch, exception generation and system instructions.  */
 
 static unsigned int
-aarch64_record_branch_except_sys (insn_decode_record *aarch64_insn_r)
+aarch64_record_branch_except_sys (aarch64_insn_decode_record *aarch64_insn_r)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (aarch64_insn_r->gdbarch);
+
+  aarch64_gdbarch_tdep *tdep
+    = gdbarch_tdep<aarch64_gdbarch_tdep> (aarch64_insn_r->gdbarch);
   uint8_t insn_bits24_27, insn_bits28_31, insn_bits22_23;
   uint32_t record_buf[4];
 
@@ -3687,14 +5342,14 @@ aarch64_record_branch_except_sys (insn_d
 /* Record handler for advanced SIMD load and store instructions.  */
 
 static unsigned int
-aarch64_record_asimd_load_store (insn_decode_record *aarch64_insn_r)
+aarch64_record_asimd_load_store (aarch64_insn_decode_record *aarch64_insn_r)
 {
   CORE_ADDR address;
   uint64_t addr_offset = 0;
   uint32_t record_buf[24];
-  uint64_t record_buf_mem[24];
+  std::vector<uint64_t> record_buf_mem;
   uint32_t reg_rn, reg_rt;
-  uint32_t reg_index = 0, mem_index = 0;
+  uint32_t reg_index = 0;
   uint8_t opcode_bits, size_bits;
 
   reg_rt = bits (aarch64_insn_r->aarch64_insn, 0, 4);
@@ -3712,58 +5367,58 @@ aarch64_record_asimd_load_store (insn_de
       uint8_t sindex, scale, selem, esize, replicate = 0;
       scale = opcode_bits >> 2;
       selem = ((opcode_bits & 0x02) |
-              bit (aarch64_insn_r->aarch64_insn, 21)) + 1;
+	      bit (aarch64_insn_r->aarch64_insn, 21)) + 1;
       switch (scale)
-        {
-        case 1:
-          if (size_bits & 0x01)
-            return AARCH64_RECORD_UNKNOWN;
-          break;
-        case 2:
-          if ((size_bits >> 1) & 0x01)
-            return AARCH64_RECORD_UNKNOWN;
-          if (size_bits & 0x01)
-            {
-              if (!((opcode_bits >> 1) & 0x01))
-                scale = 3;
-              else
-                return AARCH64_RECORD_UNKNOWN;
-            }
-          break;
-        case 3:
-          if (bit (aarch64_insn_r->aarch64_insn, 22) && !(opcode_bits & 0x01))
-            {
-              scale = size_bits;
-              replicate = 1;
-              break;
-            }
-          else
-            return AARCH64_RECORD_UNKNOWN;
-        default:
-          break;
-        }
+	{
+	case 1:
+	  if (size_bits & 0x01)
+	    return AARCH64_RECORD_UNKNOWN;
+	  break;
+	case 2:
+	  if ((size_bits >> 1) & 0x01)
+	    return AARCH64_RECORD_UNKNOWN;
+	  if (size_bits & 0x01)
+	    {
+	      if (!((opcode_bits >> 1) & 0x01))
+		scale = 3;
+	      else
+		return AARCH64_RECORD_UNKNOWN;
+	    }
+	  break;
+	case 3:
+	  if (bit (aarch64_insn_r->aarch64_insn, 22) && !(opcode_bits & 0x01))
+	    {
+	      scale = size_bits;
+	      replicate = 1;
+	      break;
+	    }
+	  else
+	    return AARCH64_RECORD_UNKNOWN;
+	default:
+	  break;
+	}
       esize = 8 << scale;
       if (replicate)
-        for (sindex = 0; sindex < selem; sindex++)
-          {
-            record_buf[reg_index++] = reg_rt + AARCH64_V0_REGNUM;
-            reg_rt = (reg_rt + 1) % 32;
-          }
+	for (sindex = 0; sindex < selem; sindex++)
+	  {
+	    record_buf[reg_index++] = reg_rt + AARCH64_V0_REGNUM;
+	    reg_rt = (reg_rt + 1) % 32;
+	  }
       else
-        {
-          for (sindex = 0; sindex < selem; sindex++)
+	{
+	  for (sindex = 0; sindex < selem; sindex++)
 	    {
 	      if (bit (aarch64_insn_r->aarch64_insn, 22))
 		record_buf[reg_index++] = reg_rt + AARCH64_V0_REGNUM;
 	      else
 		{
-		  record_buf_mem[mem_index++] = esize / 8;
-		  record_buf_mem[mem_index++] = address + addr_offset;
+		  record_buf_mem.push_back (esize / 8);
+		  record_buf_mem.push_back (address + addr_offset);
 		}
 	      addr_offset = addr_offset + (esize / 8);
 	      reg_rt = (reg_rt + 1) % 32;
 	    }
-        }
+	}
     }
   /* Load/store multiple structure.  */
   else
@@ -3773,87 +5428,152 @@ aarch64_record_asimd_load_store (insn_de
 
       esize = 8 << size_bits;
       if (bit (aarch64_insn_r->aarch64_insn, 30))
-        elements = 128 / esize;
+	elements = 128 / esize;
       else
-        elements = 64 / esize;
+	elements = 64 / esize;
 
       switch (opcode_bits)
-        {
-        /*LD/ST4 (4 Registers).  */
-        case 0:
-          rpt = 1;
-          selem = 4;
-          break;
-        /*LD/ST1 (4 Registers).  */
-        case 2:
-          rpt = 4;
-          selem = 1;
-          break;
-        /*LD/ST3 (3 Registers).  */
-        case 4:
-          rpt = 1;
-          selem = 3;
-          break;
-        /*LD/ST1 (3 Registers).  */
-        case 6:
-          rpt = 3;
-          selem = 1;
-          break;
-        /*LD/ST1 (1 Register).  */
-        case 7:
-          rpt = 1;
-          selem = 1;
-          break;
-        /*LD/ST2 (2 Registers).  */
-        case 8:
-          rpt = 1;
-          selem = 2;
-          break;
-        /*LD/ST1 (2 Registers).  */
-        case 10:
-          rpt = 2;
-          selem = 1;
-          break;
-        default:
-          return AARCH64_RECORD_UNSUPPORTED;
-          break;
-        }
+	{
+	/*LD/ST4 (4 Registers).  */
+	case 0:
+	  rpt = 1;
+	  selem = 4;
+	  break;
+	/*LD/ST1 (4 Registers).  */
+	case 2:
+	  rpt = 4;
+	  selem = 1;
+	  break;
+	/*LD/ST3 (3 Registers).  */
+	case 4:
+	  rpt = 1;
+	  selem = 3;
+	  break;
+	/*LD/ST1 (3 Registers).  */
+	case 6:
+	  rpt = 3;
+	  selem = 1;
+	  break;
+	/*LD/ST1 (1 Register).  */
+	case 7:
+	  rpt = 1;
+	  selem = 1;
+	  break;
+	/*LD/ST2 (2 Registers).  */
+	case 8:
+	  rpt = 1;
+	  selem = 2;
+	  break;
+	/*LD/ST1 (2 Registers).  */
+	case 10:
+	  rpt = 2;
+	  selem = 1;
+	  break;
+	default:
+	  return AARCH64_RECORD_UNSUPPORTED;
+	  break;
+	}
       for (rindex = 0; rindex < rpt; rindex++)
-        for (eindex = 0; eindex < elements; eindex++)
-          {
-            uint8_t reg_tt, sindex;
-            reg_tt = (reg_rt + rindex) % 32;
-            for (sindex = 0; sindex < selem; sindex++)
-              {
-                if (bit (aarch64_insn_r->aarch64_insn, 22))
-                  record_buf[reg_index++] = reg_tt + AARCH64_V0_REGNUM;
-                else
-                  {
-                    record_buf_mem[mem_index++] = esize / 8;
-                    record_buf_mem[mem_index++] = address + addr_offset;
-                  }
-                addr_offset = addr_offset + (esize / 8);
-                reg_tt = (reg_tt + 1) % 32;
-              }
-          }
+	for (eindex = 0; eindex < elements; eindex++)
+	  {
+	    uint8_t reg_tt, sindex;
+	    reg_tt = (reg_rt + rindex) % 32;
+	    for (sindex = 0; sindex < selem; sindex++)
+	      {
+		if (bit (aarch64_insn_r->aarch64_insn, 22))
+		  record_buf[reg_index++] = reg_tt + AARCH64_V0_REGNUM;
+		else
+		  {
+		    record_buf_mem.push_back (esize / 8);
+		    record_buf_mem.push_back (address + addr_offset);
+		  }
+		addr_offset = addr_offset + (esize / 8);
+		reg_tt = (reg_tt + 1) % 32;
+	      }
+	  }
     }
 
   if (bit (aarch64_insn_r->aarch64_insn, 23))
     record_buf[reg_index++] = reg_rn;
 
   aarch64_insn_r->reg_rec_count = reg_index;
-  aarch64_insn_r->mem_rec_count = mem_index / 2;
+  aarch64_insn_r->mem_rec_count = record_buf_mem.size () / 2;
   MEM_ALLOC (aarch64_insn_r->aarch64_mems, aarch64_insn_r->mem_rec_count,
-             record_buf_mem);
+	     record_buf_mem.data ());
   REG_ALLOC (aarch64_insn_r->aarch64_regs, aarch64_insn_r->reg_rec_count,
-             record_buf);
+	     record_buf);
+  return AARCH64_RECORD_SUCCESS;
+}
+
+/* Record handler for Memory Copy and Memory Set instructions.  */
+
+static unsigned int
+aarch64_record_memcopy_memset (aarch64_insn_decode_record *aarch64_insn_r)
+{
+  if (record_debug)
+    debug_printf ("Process record: memory copy and memory set\n");
+
+  uint8_t op1 = bits (aarch64_insn_r->aarch64_insn, 22, 23);
+  uint8_t op2 = bits (aarch64_insn_r->aarch64_insn, 12, 15);
+  uint32_t reg_rd = bits (aarch64_insn_r->aarch64_insn, 0, 4);
+  uint32_t reg_rn = bits (aarch64_insn_r->aarch64_insn, 5, 9);
+  uint32_t record_buf[3];
+  uint64_t record_buf_mem[4];
+
+  if (op1 == 3 && op2 > 11)
+    /* Unallocated instructions.  */
+    return AARCH64_RECORD_UNKNOWN;
+
+  /* Set instructions have two registers and one memory region to be
+     recorded.  */
+  record_buf[0] = reg_rd;
+  record_buf[1] = reg_rn;
+  aarch64_insn_r->reg_rec_count = 2;
+
+  ULONGEST dest_addr;
+  regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rd, &dest_addr);
+
+  LONGEST length;
+  regcache_raw_read_signed (aarch64_insn_r->regcache, reg_rn, &length);
+
+  /* In one of the algorithm options a processor can implement, the length
+     in Rn has an inverted sign.  */
+  if (length < 0)
+    length *= -1;
+
+  record_buf_mem[0] = length;
+  record_buf_mem[1] = dest_addr;
+  aarch64_insn_r->mem_rec_count = 1;
+
+  if (op1 != 3)
+    {
+      /* Copy instructions have an additional register and an additional
+	 memory region to be recorded.  */
+      uint32_t reg_rs = bits (aarch64_insn_r->aarch64_insn, 16, 20);
+
+      record_buf[2] = reg_rs;
+      aarch64_insn_r->reg_rec_count++;
+
+      ULONGEST source_addr;
+      regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rs,
+				  &source_addr);
+
+      record_buf_mem[2] = length;
+      record_buf_mem[3] = source_addr;
+      aarch64_insn_r->mem_rec_count++;
+    }
+
+  MEM_ALLOC (aarch64_insn_r->aarch64_mems, aarch64_insn_r->mem_rec_count,
+	     record_buf_mem);
+  REG_ALLOC (aarch64_insn_r->aarch64_regs, aarch64_insn_r->reg_rec_count,
+	     record_buf);
   return AARCH64_RECORD_SUCCESS;
 }
 
 /* Record handler for load and store instructions.  */
 
 static unsigned int
-aarch64_record_load_store (insn_decode_record *aarch64_insn_r)
+aarch64_record_load_store (aarch64_insn_decode_record *aarch64_insn_r)
 {
   uint8_t insn_bits24_27, insn_bits28_29, insn_bits10_11;
   uint8_t insn_bit23, insn_bit21;
@@ -3917,9 +5637,9 @@ aarch64_record_load_store (insn_decode_r
       if (record_debug)
 	debug_printf ("Process record: load register (literal)\n");
       if (vector_flag)
-        record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
+	record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
       else
-        record_buf[0] = reg_rt;
+	record_buf[0] = reg_rt;
       aarch64_insn_r->reg_rec_count = 1;
     }
   /* All types of load/store pair instructions decoding.  */
@@ -3929,46 +5649,46 @@ aarch64_record_load_store (insn_decode_r
 	debug_printf ("Process record: load/store pair\n");
 
       if (ld_flag)
-        {
-          if (vector_flag)
-            {
-              record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
-              record_buf[1] = reg_rt2 + AARCH64_V0_REGNUM;
-            }
-          else
-            {
-              record_buf[0] = reg_rt;
-              record_buf[1] = reg_rt2;
-            }
-          aarch64_insn_r->reg_rec_count = 2;
-        }
+	{
+	  if (vector_flag)
+	    {
+	      record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
+	      record_buf[1] = reg_rt2 + AARCH64_V0_REGNUM;
+	    }
+	  else
+	    {
+	      record_buf[0] = reg_rt;
+	      record_buf[1] = reg_rt2;
+	    }
+	  aarch64_insn_r->reg_rec_count = 2;
+	}
       else
-        {
-          uint16_t imm7_off;
-          imm7_off = bits (aarch64_insn_r->aarch64_insn, 15, 21);
-          if (!vector_flag)
-            size_bits = size_bits >> 1;
-          datasize = 8 << (2 + size_bits);
-          offset = (imm7_off & 0x40) ? (~imm7_off & 0x007f) + 1 : imm7_off;
-          offset = offset << (2 + size_bits);
-          regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn,
-                                      &address);
-          if (!((insn_bits24_27 & 0x0b) == 0x08 && insn_bit23))
-            {
-              if (imm7_off & 0x40)
-                address = address - offset;
-              else
-                address = address + offset;
-            }
-
-          record_buf_mem[0] = datasize / 8;
-          record_buf_mem[1] = address;
-          record_buf_mem[2] = datasize / 8;
-          record_buf_mem[3] = address + (datasize / 8);
-          aarch64_insn_r->mem_rec_count = 2;
-        }
+	{
+	  uint16_t imm7_off;
+	  imm7_off = bits (aarch64_insn_r->aarch64_insn, 15, 21);
+	  if (!vector_flag)
+	    size_bits = size_bits >> 1;
+	  datasize = 8 << (2 + size_bits);
+	  offset = (imm7_off & 0x40) ? (~imm7_off & 0x007f) + 1 : imm7_off;
+	  offset = offset << (2 + size_bits);
+	  regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn,
+				      &address);
+	  if (!((insn_bits24_27 & 0x0b) == 0x08 && insn_bit23))
+	    {
+	      if (imm7_off & 0x40)
+		address = address - offset;
+	      else
+		address = address + offset;
+	    }
+
+	  record_buf_mem[0] = datasize / 8;
+	  record_buf_mem[1] = address;
+	  record_buf_mem[2] = datasize / 8;
+	  record_buf_mem[3] = address + (datasize / 8);
+	  aarch64_insn_r->mem_rec_count = 2;
+	}
       if (bit (aarch64_insn_r->aarch64_insn, 23))
-        record_buf[aarch64_insn_r->reg_rec_count++] = reg_rn;
+	record_buf[aarch64_insn_r->reg_rec_count++] = reg_rn;
     }
   /* Load/store register (unsigned immediate) instructions.  */
   else if ((insn_bits24_27 & 0x0b) == 0x09 && insn_bits28_29 == 0x03)
@@ -4010,26 +5730,26 @@ aarch64_record_load_store (insn_decode_r
 	}
 
       if (!ld_flag)
-        {
-          offset = bits (aarch64_insn_r->aarch64_insn, 10, 21);
-          datasize = 8 << size_bits;
-          regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn,
-                                      &address);
-          offset = offset << size_bits;
-          address = address + offset;
-
-          record_buf_mem[0] = datasize >> 3;
-          record_buf_mem[1] = address;
-          aarch64_insn_r->mem_rec_count = 1;
-        }
+	{
+	  offset = bits (aarch64_insn_r->aarch64_insn, 10, 21);
+	  datasize = 8 << size_bits;
+	  regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn,
+				      &address);
+	  offset = offset << size_bits;
+	  address = address + offset;
+
+	  record_buf_mem[0] = datasize >> 3;
+	  record_buf_mem[1] = address;
+	  aarch64_insn_r->mem_rec_count = 1;
+	}
       else
-        {
-          if (vector_flag)
-            record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
-          else
-            record_buf[0] = reg_rt;
-          aarch64_insn_r->reg_rec_count = 1;
-        }
+	{
+	  if (vector_flag)
+	    record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
+	  else
+	    record_buf[0] = reg_rt;
+	  aarch64_insn_r->reg_rec_count = 1;
+	}
     }
   /* Load/store register (register offset) instructions.  */
   else if ((insn_bits24_27 & 0x0b) == 0x08 && insn_bits28_29 == 0x03
@@ -4039,42 +5759,42 @@ aarch64_record_load_store (insn_decode_r
 	debug_printf ("Process record: load/store (register offset)\n");
       opc = bits (aarch64_insn_r->aarch64_insn, 22, 23);
       if (!(opc >> 1))
-        if (opc & 0x01)
-          ld_flag = 0x01;
-        else
-          ld_flag = 0x0;
+	if (opc & 0x01)
+	  ld_flag = 0x01;
+	else
+	  ld_flag = 0x0;
       else
-        if (size_bits != 0x03)
-          ld_flag = 0x01;
-        else
-          return AARCH64_RECORD_UNKNOWN;
+	if (size_bits != 0x03)
+	  ld_flag = 0x01;
+	else
+	  return AARCH64_RECORD_UNKNOWN;
 
       if (!ld_flag)
-        {
-          ULONGEST reg_rm_val;
+	{
+	  ULONGEST reg_rm_val;
 
-          regcache_raw_read_unsigned (aarch64_insn_r->regcache,
-                     bits (aarch64_insn_r->aarch64_insn, 16, 20), &reg_rm_val);
-          if (bit (aarch64_insn_r->aarch64_insn, 12))
-            offset = reg_rm_val << size_bits;
-          else
-            offset = reg_rm_val;
-          datasize = 8 << size_bits;
-          regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn,
-                                      &address);
-          address = address + offset;
-          record_buf_mem[0] = datasize >> 3;
-          record_buf_mem[1] = address;
-          aarch64_insn_r->mem_rec_count = 1;
-        }
+	  regcache_raw_read_unsigned (aarch64_insn_r->regcache,
+		     bits (aarch64_insn_r->aarch64_insn, 16, 20), &reg_rm_val);
+	  if (bit (aarch64_insn_r->aarch64_insn, 12))
+	    offset = reg_rm_val << size_bits;
+	  else
+	    offset = reg_rm_val;
+	  datasize = 8 << size_bits;
+	  regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn,
+				      &address);
+	  address = address + offset;
+	  record_buf_mem[0] = datasize >> 3;
+	  record_buf_mem[1] = address;
+	  aarch64_insn_r->mem_rec_count = 1;
+	}
       else
-        {
-          if (vector_flag)
-            record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
-          else
-            record_buf[0] = reg_rt;
-          aarch64_insn_r->reg_rec_count = 1;
-        }
+	{
+	  if (vector_flag)
+	    record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
+	  else
+	    record_buf[0] = reg_rt;
+	  aarch64_insn_r->reg_rec_count = 1;
+	}
     }
   /* Load/store register (immediate and unprivileged) instructions.  */
   else if ((insn_bits24_27 & 0x0b) == 0x08 && insn_bits28_29 == 0x03
@@ -4087,61 +5807,65 @@ aarch64_record_load_store (insn_decode_r
 	}
       opc = bits (aarch64_insn_r->aarch64_insn, 22, 23);
       if (!(opc >> 1))
-        if (opc & 0x01)
-          ld_flag = 0x01;
-        else
-          ld_flag = 0x0;
+	if (opc & 0x01)
+	  ld_flag = 0x01;
+	else
+	  ld_flag = 0x0;
       else
-        if (size_bits != 0x03)
-          ld_flag = 0x01;
-        else
-          return AARCH64_RECORD_UNKNOWN;
+	if (size_bits != 0x03)
+	  ld_flag = 0x01;
+	else
+	  return AARCH64_RECORD_UNKNOWN;
 
       if (!ld_flag)
-        {
-          uint16_t imm9_off;
-          imm9_off = bits (aarch64_insn_r->aarch64_insn, 12, 20);
-          offset = (imm9_off & 0x0100) ? (((~imm9_off) & 0x01ff) + 1) : imm9_off;
-          datasize = 8 << size_bits;
-          regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn,
-                                      &address);
-          if (insn_bits10_11 != 0x01)
-            {
-              if (imm9_off & 0x0100)
-                address = address - offset;
-              else
-                address = address + offset;
-            }
-          record_buf_mem[0] = datasize >> 3;
-          record_buf_mem[1] = address;
-          aarch64_insn_r->mem_rec_count = 1;
-        }
+	{
+	  uint16_t imm9_off;
+	  imm9_off = bits (aarch64_insn_r->aarch64_insn, 12, 20);
+	  offset = (imm9_off & 0x0100) ? (((~imm9_off) & 0x01ff) + 1) : imm9_off;
+	  datasize = 8 << size_bits;
+	  regcache_raw_read_unsigned (aarch64_insn_r->regcache, reg_rn,
+				      &address);
+	  if (insn_bits10_11 != 0x01)
+	    {
+	      if (imm9_off & 0x0100)
+		address = address - offset;
+	      else
+		address = address + offset;
+	    }
+	  record_buf_mem[0] = datasize >> 3;
+	  record_buf_mem[1] = address;
+	  aarch64_insn_r->mem_rec_count = 1;
+	}
       else
-        {
-          if (vector_flag)
-            record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
-          else
-            record_buf[0] = reg_rt;
-          aarch64_insn_r->reg_rec_count = 1;
-        }
+	{
+	  if (vector_flag)
+	    record_buf[0] = reg_rt + AARCH64_V0_REGNUM;
+	  else
+	    record_buf[0] = reg_rt;
+	  aarch64_insn_r->reg_rec_count = 1;
+	}
       if (insn_bits10_11 == 0x01 || insn_bits10_11 == 0x03)
-        record_buf[aarch64_insn_r->reg_rec_count++] = reg_rn;
+	record_buf[aarch64_insn_r->reg_rec_count++] = reg_rn;
     }
+  /* Memory Copy and Memory Set instructions.  */
+  else if ((insn_bits24_27 & 1) == 1 && insn_bits28_29 == 1
+	   && insn_bits10_11 == 1 && !insn_bit21)
+    return aarch64_record_memcopy_memset (aarch64_insn_r);
   /* Advanced SIMD load/store instructions.  */
   else
     return aarch64_record_asimd_load_store (aarch64_insn_r);
 
   MEM_ALLOC (aarch64_insn_r->aarch64_mems, aarch64_insn_r->mem_rec_count,
-             record_buf_mem);
+	     record_buf_mem);
   REG_ALLOC (aarch64_insn_r->aarch64_regs, aarch64_insn_r->reg_rec_count,
-             record_buf);
+	     record_buf);
   return AARCH64_RECORD_SUCCESS;
 }
 
 /* Record handler for data processing SIMD and floating point instructions.  */
 
 static unsigned int
-aarch64_record_data_proc_simd_fp (insn_decode_record *aarch64_insn_r)
+aarch64_record_data_proc_simd_fp (aarch64_insn_decode_record *aarch64_insn_r)
 {
   uint8_t insn_bit21, opcode, rmode, reg_rd;
   uint8_t insn_bits24_27, insn_bits28_31, insn_bits10_11, insn_bits12_15;
@@ -4183,7 +5907,7 @@ aarch64_record_data_proc_simd_fp (insn_d
 	  record_buf[0] = AARCH64_CPSR_REGNUM;
 	}
       /* Floating point - data processing (2-source) and
-         conditional select instructions.  */
+	 conditional select instructions.  */
       else if (insn_bits10_11 == 0x02 || insn_bits10_11 == 0x03)
 	{
 	  if (record_debug)
@@ -4240,10 +5964,10 @@ aarch64_record_data_proc_simd_fp (insn_d
 		}
 	      else
 		return AARCH64_RECORD_UNKNOWN;
-            }
+	    }
 	  else
 	    return AARCH64_RECORD_UNKNOWN;
-        }
+	}
       else
 	return AARCH64_RECORD_UNKNOWN;
     }
@@ -4277,8 +6001,15 @@ aarch64_record_data_proc_simd_fp (insn_d
   if (record_debug)
     debug_printf ("\n");
 
+  /* Record the V/X register.  */
   aarch64_insn_r->reg_rec_count++;
-  gdb_assert (aarch64_insn_r->reg_rec_count == 1);
+
+  /* Some of these instructions may set bits in the FPSR, so record it
+     too.  */
+  record_buf[1] = AARCH64_FPSR_REGNUM;
+  aarch64_insn_r->reg_rec_count++;
+
+  gdb_assert (aarch64_insn_r->reg_rec_count == 2);
   REG_ALLOC (aarch64_insn_r->aarch64_regs, aarch64_insn_r->reg_rec_count,
 	     record_buf);
   return AARCH64_RECORD_SUCCESS;
@@ -4287,7 +6018,7 @@ aarch64_record_data_proc_simd_fp (insn_d
 /* Decodes insns type and invokes its record handler.  */
 
 static unsigned int
-aarch64_record_decode_insn_handler (insn_decode_record *aarch64_insn_r)
+aarch64_record_decode_insn_handler (aarch64_insn_decode_record *aarch64_insn_r)
 {
   uint32_t ins_bit25, ins_bit26, ins_bit27, ins_bit28;
 
@@ -4322,7 +6053,7 @@ aarch64_record_decode_insn_handler (insn
 /* Cleans up local record registers and memory allocations.  */
 
 static void
-deallocate_reg_mem (insn_decode_record *record)
+deallocate_reg_mem (aarch64_insn_decode_record *record)
 {
   xfree (record->aarch64_regs);
   xfree (record->aarch64_mems);
@@ -4337,15 +6068,14 @@ aarch64_process_record_test (void)
   struct gdbarch_info info;
   uint32_t ret;
 
-  gdbarch_info_init (&info);
   info.bfd_arch_info = bfd_scan_arch ("aarch64");
 
   struct gdbarch *gdbarch = gdbarch_find_by_info (info);
   SELF_CHECK (gdbarch != NULL);
 
-  insn_decode_record aarch64_record;
+  aarch64_insn_decode_record aarch64_record;
 
-  memset (&aarch64_record, 0, sizeof (insn_decode_record));
+  memset (&aarch64_record, 0, sizeof (aarch64_insn_decode_record));
   aarch64_record.regcache = NULL;
   aarch64_record.this_addr = 0;
   aarch64_record.gdbarch = gdbarch;
@@ -4360,7 +6090,7 @@ aarch64_process_record_test (void)
   deallocate_reg_mem (&aarch64_record);
 }
 
-} // namespace selftests
+} /* namespace selftests */
 #endif /* GDB_SELF_TEST */
 
 /* Parse the current instruction and record the values of the registers and
@@ -4372,13 +6102,13 @@ aarch64_process_record (struct gdbarch *
 			CORE_ADDR insn_addr)
 {
   uint32_t rec_no = 0;
-  uint8_t insn_size = 4;
+  const uint8_t insn_size = 4;
   uint32_t ret = 0;
   gdb_byte buf[insn_size];
-  insn_decode_record aarch64_record;
+  aarch64_insn_decode_record aarch64_record;
 
   memset (&buf[0], 0, insn_size);
-  memset (&aarch64_record, 0, sizeof (insn_decode_record));
+  memset (&aarch64_record, 0, sizeof (aarch64_insn_decode_record));
   target_read_memory (insn_addr, &buf[0], insn_size);
   aarch64_record.aarch64_insn
     = (uint32_t) extract_unsigned_integer (&buf[0],
@@ -4391,10 +6121,11 @@ aarch64_process_record (struct gdbarch *
   ret = aarch64_record_decode_insn_handler (&aarch64_record);
   if (ret == AARCH64_RECORD_UNSUPPORTED)
     {
-      printf_unfiltered (_("Process record does not support instruction "
-			   "0x%0x at address %s.\n"),
-			 aarch64_record.aarch64_insn,
-			 paddress (gdbarch, insn_addr));
+      gdb_printf (gdb_stderr,
+		  _("Process record does not support instruction "
+		    "0x%0x at address %s.\n"),
+		  aarch64_record.aarch64_insn,
+		  paddress (gdbarch, insn_addr));
       ret = -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.20200303/gdb/aarch64-tdep.h ./gdb/aarch64-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aarch64-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aarch64-tdep.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -19,10 +19,14 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
-#ifndef AARCH64_TDEP_H
-#define AARCH64_TDEP_H
+#ifndef GDB_AARCH64_TDEP_H
+#define GDB_AARCH64_TDEP_H
 
 #include "arch/aarch64.h"
+#include "dwarf2/frame.h"
+#include "displaced-stepping.h"
+#include "infrun.h"
+#include "gdbarch.h"
 
 /* Forward declarations.  */
 struct gdbarch;
@@ -31,9 +35,8 @@ struct regset;
 /* AArch64 Dwarf register numbering.  */
 #define AARCH64_DWARF_X0   0
 #define AARCH64_DWARF_SP  31
-#define AARCH64_DWARF_PAUTH_RA_STATE  34
-#define AARCH64_DWARF_PAUTH_DMASK  35
-#define AARCH64_DWARF_PAUTH_CMASK  36
+#define AARCH64_DWARF_PC  32
+#define AARCH64_DWARF_RA_SIGN_STATE  34
 #define AARCH64_DWARF_V0  64
 #define AARCH64_DWARF_SVE_VG   46
 #define AARCH64_DWARF_SVE_FFR  47
@@ -46,7 +49,6 @@ struct regset;
 #define H_REGISTER_SIZE  2
 #define S_REGISTER_SIZE  4
 #define D_REGISTER_SIZE  8
-#define V_REGISTER_SIZE 16
 #define Q_REGISTER_SIZE 16
 
 /* Total number of general (X) registers.  */
@@ -59,31 +61,48 @@ struct regset;
 #define AARCH64_DISPLACED_MODIFIED_INSNS 1
 
 /* Target-dependent structure in gdbarch.  */
-struct gdbarch_tdep
+struct aarch64_gdbarch_tdep : gdbarch_tdep_base
 {
   /* Lowest address at which instructions will appear.  */
-  CORE_ADDR lowest_pc;
+  CORE_ADDR lowest_pc = 0;
 
   /* Offset to PC value in jump buffer.  If this is negative, longjmp
      support will be disabled.  */
-  int jb_pc;
+  int jb_pc = 0;
 
   /* And the size of each entry in the buf.  */
-  size_t jb_elt_size;
+  size_t jb_elt_size = 0;
 
   /* Types for AdvSISD registers.  */
-  struct type *vnq_type;
-  struct type *vnd_type;
-  struct type *vns_type;
-  struct type *vnh_type;
-  struct type *vnb_type;
-  struct type *vnv_type;
+  struct type *vnq_type = nullptr;
+  struct type *vnd_type = nullptr;
+  struct type *vns_type = nullptr;
+  struct type *vnh_type = nullptr;
+  struct type *vnb_type = nullptr;
+  struct type *vnv_type = nullptr;
+
+  /* Types for SME ZA tiles and tile slices pseudo-registers.  */
+  struct type *sme_tile_type_q = nullptr;
+  struct type *sme_tile_type_d = nullptr;
+  struct type *sme_tile_type_s = nullptr;
+  struct type *sme_tile_type_h = nullptr;
+  struct type *sme_tile_type_b = nullptr;
+  struct type *sme_tile_slice_type_q = nullptr;
+  struct type *sme_tile_slice_type_d = nullptr;
+  struct type *sme_tile_slice_type_s = nullptr;
+  struct type *sme_tile_slice_type_h = nullptr;
+  struct type *sme_tile_slice_type_b = nullptr;
+
+  /* Vector of names for SME pseudo-registers.  The number of elements is
+     different for each distinct svl value.  */
+  std::vector<std::string> sme_pseudo_names;
 
   /* syscall record.  */
-  int (*aarch64_syscall_record) (struct regcache *regcache, unsigned long svc_number);
+  int (*aarch64_syscall_record) (struct regcache *regcache,
+				 unsigned long svc_number) = nullptr;
 
   /* The VQ value for SVE targets, or zero if SVE is not supported.  */
-  uint64_t vq;
+  uint64_t vq = 0;
 
   /* Returns true if the target supports SVE.  */
   bool has_sve () const
@@ -91,32 +110,130 @@ struct gdbarch_tdep
     return vq != 0;
   }
 
-  int pauth_reg_base;
-  int pauth_ra_state_regnum;
+  int pauth_reg_base = 0;
+  /* Number of pauth masks.  */
+  int pauth_reg_count = 0;
+  int ra_sign_state_regnum = 0;
 
   /* Returns true if the target supports pauth.  */
   bool has_pauth () const
   {
     return pauth_reg_base != -1;
   }
+
+  /* First MTE register.  This is -1 if no MTE registers are available.  */
+  int mte_reg_base = 0;
+
+  /* Returns true if the target supports MTE.  */
+  bool has_mte () const
+  {
+    return mte_reg_base != -1;
+  }
+
+  /* TLS registers.  This is -1 if the TLS registers are not available.  */
+  int tls_regnum_base = 0;
+  int tls_register_count = 0;
+
+  bool has_tls() const
+  {
+    return tls_regnum_base != -1;
+  }
+
+  /* The W pseudo-registers.  */
+  int w_pseudo_base = 0;
+  int w_pseudo_count = 0;
+
+  /* SME feature fields.  */
+
+  /* Index of the first SME register.  This is -1 if SME is not supported.  */
+  int sme_reg_base = 0;
+  /* svg register index.  */
+  int sme_svg_regnum = 0;
+  /* svcr register index.  */
+  int sme_svcr_regnum = 0;
+  /* ZA register index.  */
+  int sme_za_regnum = 0;
+  /* Index of the first SME pseudo-register.  This is -1 if SME is not
+     supported.  */
+  int sme_pseudo_base = 0;
+  /* Total number of SME pseudo-registers.  */
+  int sme_pseudo_count = 0;
+  /* First tile slice pseudo-register index.  */
+  int sme_tile_slice_pseudo_base = 0;
+  /* Total number of tile slice pseudo-registers.  */
+  int sme_tile_slice_pseudo_count = 0;
+  /* First tile pseudo-register index.  */
+  int sme_tile_pseudo_base = 0;
+  /* The streaming vector quotient (svq) for SME, or zero if SME is not
+     supported.  */
+  size_t sme_svq = 0;
+
+  /* Return true if the target supports SME, and false otherwise.  */
+  bool has_sme () const
+  {
+    return sme_svq != 0;
+  }
+
+  /* Index of the SME2 ZT0 register.  This is -1 if SME2 is not
+     supported.  */
+  int sme2_zt0_regnum = -1;
+
+  /* Return true if the target supports SME2, and false otherwise.  */
+  bool has_sme2 () const
+  {
+    return sme2_zt0_regnum > 0;
+  }
+
+  /* First GCS register.  This is -1 if no GCS registers are available.  */
+  int gcs_reg_base = -1;
+
+  /* First GCS Linux-specific register.  This is -1 if no GCS Linux feature is
+     available.  */
+  int gcs_linux_reg_base = -1;
+
+  /* Function to unwind the GCSPR from the given frame.  */
+  fn_prev_register fn_prev_gcspr = nullptr;
+
+  /* Returns true if the target supports GCS.  */
+  bool
+  has_gcs () const
+  {
+    return gcs_reg_base != -1;
+  }
+
+  /* Returns true if the target supports the Linux GCS feature.  */
+  bool
+  has_gcs_linux () const
+  {
+    return gcs_linux_reg_base != -1;
+  }
 };
 
-const target_desc *aarch64_read_description (uint64_t vq, bool pauth_p);
+const target_desc *aarch64_read_description (const aarch64_features &features);
+aarch64_features
+aarch64_features_from_target_desc (const struct target_desc *tdesc);
 
 extern int aarch64_process_record (struct gdbarch *gdbarch,
-                               struct regcache *regcache, CORE_ADDR addr);
+			       struct regcache *regcache, CORE_ADDR addr);
 
-struct displaced_step_closure *
+displaced_step_copy_insn_closure_up
   aarch64_displaced_step_copy_insn (struct gdbarch *gdbarch,
 				    CORE_ADDR from, CORE_ADDR to,
 				    struct regcache *regs);
 
 void aarch64_displaced_step_fixup (struct gdbarch *gdbarch,
-				   struct displaced_step_closure *dsc,
+				   displaced_step_copy_insn_closure *dsc,
 				   CORE_ADDR from, CORE_ADDR to,
-				   struct regcache *regs);
+				   struct regcache *regs, bool completed_p);
+
+bool aarch64_displaced_step_hw_singlestep (struct gdbarch *gdbarch);
+
+std::optional<CORE_ADDR> aarch64_mte_get_atag (CORE_ADDR address);
+
+/* AArch64 implementation of the remove_non_address_bits gdbarch hooks.
+   Remove non address bits from a pointer value.  */
 
-int aarch64_displaced_step_hw_singlestep (struct gdbarch *gdbarch,
-					  struct displaced_step_closure *closure);
+CORE_ADDR aarch64_remove_non_address_bits (struct gdbarch *gdbarch,
+					   CORE_ADDR pointer);
 
-#endif /* aarch64-tdep.h */
+#endif /* GDB_AARCH64_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.20200303/gdb/acinclude.m4 ./gdb/acinclude.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/acinclude.m4	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/acinclude.m4	2026-03-05 02:07:22.000000000 +0000
@@ -4,185 +4,57 @@ dnl major rewriting for Tcl 7.5 by Don L
 # Keep these includes in sync with the aclocal_m4_deps list in
 # Makefile.in.
 
+dnl NB: When possible, try to avoid explicit includes of ../config/ files.
+dnl They're normally found by aclocal automatically and recorded in aclocal.m4.
+dnl However, some are kept here explicitly to silence harmless warnings from
+dnl aclocal when it finds AM_xxx macros via local search paths instead of
+dnl system search paths.
+
 m4_include(acx_configure_dir.m4)
 
 # This gets GDB_AC_TRANSFORM.
 m4_include(transform.m4)
 
+# This get AM_GDB_COMPILER_TYPE.
+m4_include(../gdbsupport/compiler-type.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)
 
-dnl This gets the standard macros.
-m4_include(../config/acinclude.m4)
-
-dnl This gets AC_PLUGINS, needed by ACX_LARGEFILE.
-m4_include(../config/plugins.m4)
-
-dnl For ACX_LARGEFILE.
-m4_include(../config/largefile.m4)
-
-dnl For AM_SET_LEADING_DOT.
-m4_include(../config/lead-dot.m4)
-
-dnl This gets autoconf bugfixes.
-m4_include(../config/override.m4)
-
-dnl For ZW_GNU_GETTEXT_SISTER_DIR.
-m4_include(../config/gettext-sister.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 For ACX_PKGVERSION and ACX_BUGURL.
-m4_include(../config/acx.m4)
-
-dnl for TCL definitions
-m4_include(../config/tcl.m4)
-
-dnl For dependency tracking macros.
-m4_include([../config/depstand.m4])
-
 dnl For AM_LC_MESSAGES
 m4_include([../config/lcmessage.m4])
 
 dnl For AM_LANGINFO_CODESET.
 m4_include([../config/codeset.m4])
 
+dnl We need to explicitly include these before iconv.m4 to avoid warnings.
+m4_include([../config/lib-ld.m4])
+m4_include([../config/lib-prefix.m4])
+m4_include([../config/lib-link.m4])
 m4_include([../config/iconv.m4])
 
 m4_include([../config/zlib.m4])
+m4_include([../config/zstd.m4])
 
-m4_include([gdbsupport/common.m4])
+m4_include([../gdbsupport/common.m4])
 
 dnl For libiberty_INIT.
-m4_include(libiberty.m4)
+m4_include(../gdbsupport/libiberty.m4)
 
 dnl For GDB_AC_PTRACE.
-m4_include(ptrace.m4)
+m4_include(../gdbsupport/ptrace.m4)
 
 m4_include(ax_cxx_compile_stdcxx.m4)
 
-m4_include([../config/ax_pthread.m4])
-
-## ----------------------------------------- ##
-## ANSIfy the C compiler whenever possible.  ##
-## From Franc,ois Pinard                     ##
-## ----------------------------------------- ##
-
-# Copyright (C) 1996-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 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, see <http://www.gnu.org/licenses/>.
-
-# serial 1
-
-# @defmac AC_PROG_CC_STDC
-# @maindex PROG_CC_STDC
-# @ovindex CC
-# If the C compiler in not in ANSI C mode by default, try to add an option
-# to output variable @code{CC} to make it so.  This macro tries various
-# options that select ANSI C on some system or another.  It considers the
-# compiler to be in ANSI C mode if it handles function prototypes correctly.
-#
-# If you use this macro, you should check after calling it whether the C
-# compiler has been set to accept ANSI C; if not, the shell variable
-# @code{am_cv_prog_cc_stdc} is set to @samp{no}.  If you wrote your source
-# code in ANSI C, you can make an un-ANSIfied copy of it by using the
-# program @code{ansi2knr}, which comes with Ghostscript.
-# @end defmac
-
-AC_DEFUN([AM_PROG_CC_STDC],
-[AC_REQUIRE([AC_PROG_CC])
-AC_BEFORE([$0], [AC_C_INLINE])
-AC_BEFORE([$0], [AC_C_CONST])
-dnl Force this before AC_PROG_CPP.  Some cpp's, eg on HPUX, require
-dnl a magic option to avoid problems with ANSI preprocessor commands
-dnl like #elif.
-dnl FIXME: can't do this because then AC_AIX won't work due to a
-dnl circular dependency.
-dnl AC_BEFORE([$0], [AC_PROG_CPP])
-AC_MSG_CHECKING([for ${CC-cc} option to accept ANSI C])
-AC_CACHE_VAL(am_cv_prog_cc_stdc,
-[am_cv_prog_cc_stdc=no
-ac_save_CC="$CC"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX			-qlanglvl=ansi
-# Ultrix and OSF/1	-std1
-# HP-UX 10.20 and later	-Ae
-# HP-UX older versions	-Aa -D_HPUX_SOURCE
-# SVR4			-Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  AC_TRY_COMPILE(
-[#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* 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;
-}
-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;
-], [
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-],
-[am_cv_prog_cc_stdc="$ac_arg"; break])
-done
-CC="$ac_save_CC"
-])
-if test -z "$am_cv_prog_cc_stdc"; then
-  AC_MSG_RESULT([none needed])
-else
-  AC_MSG_RESULT([$am_cv_prog_cc_stdc])
-fi
-case "x$am_cv_prog_cc_stdc" in
-  x|xno) ;;
-  *) CC="$CC $am_cv_prog_cc_stdc" ;;
-esac
-])
-
 dnl written by Guido Draheim <guidod@gmx.de>, original by Alexandre Oliva 
 dnl Version 1.3 (2001/03/02)
 dnl source http://www.gnu.org/software/ac-archive/Miscellaneous/ac_define_dir.html
@@ -203,13 +75,22 @@ dnl to use a different cache variable na
 dnl in a different context somewhere else.
 dnl gcc_AC_CHECK_DECL(SYMBOL,
 dnl 	[ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, INCLUDES]]])
-AC_DEFUN([gcc_AC_CHECK_DECL],
-[AC_MSG_CHECKING([whether $1 is declared])
-AC_CACHE_VAL(gcc_cv_have_decl_$1,
-[AC_TRY_COMPILE([$4],
-[#ifndef $1
-char *(*pfn) = (char *(*)) $1 ;
-#endif], eval "gcc_cv_have_decl_$1=yes", eval "gcc_cv_have_decl_$1=no")])
+AC_DEFUN(
+  [gcc_AC_CHECK_DECL],
+  [AC_MSG_CHECKING([whether $1 is declared])
+   AC_CACHE_VAL(
+     [gcc_cv_have_decl_$1],
+     [AC_COMPILE_IFELSE(
+	[AC_LANG_PROGRAM(
+	   [$4],
+	   [#ifndef $1
+	    char *(*pfn) = (char *(*)) $1 ;
+	    #endif]
+	 )],
+	[eval "gcc_cv_have_decl_$1=yes"],
+	[eval "gcc_cv_have_decl_$1=no"]
+      )]
+   )
 if eval "test \"`echo '$gcc_cv_have_decl_'$1`\" = yes"; then
   AC_MSG_RESULT(yes) ; ifelse([$2], , :, [$2])
 else
@@ -264,7 +145,7 @@ AC_DEFUN([CY_AC_TCL_PRIVATE_HEADERS], [
   fi
 
   if test x"${private_dir}" = x; then
-    AC_ERROR(could not find private Tcl headers)
+    AC_MSG_ERROR(could not find private Tcl headers)
   else
     TCL_PRIVATE_INCLUDE="-I${private_dir}"
     AC_MSG_RESULT(${private_dir})
@@ -285,7 +166,7 @@ AC_DEFUN([CY_AC_TK_PRIVATE_HEADERS], [
   fi
 
   if test x"${private_dir}" = x; then
-    AC_ERROR(could not find Tk private headers)
+    AC_MSG_ERROR(could not find Tk private headers)
   else
     TK_PRIVATE_INCLUDE="-I${private_dir}"
     AC_MSG_RESULT(${private_dir})
@@ -348,21 +229,32 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [
   OLD_CFLAGS=$CFLAGS
   OLD_LDFLAGS=$LDFLAGS
   OLD_LIBS=$LIBS
+  OLD_CC=$CC
   # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
   # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
   # always want our bfd.
   CFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CFLAGS"
-  ZLIBDIR=`echo $zlibdir | sed 's,\$(top_builddir)/,,g'`
-  LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
-  intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
-  LIBS="-lbfd -liberty -lz $intl $LIBS"
-  AC_CACHE_CHECK([$1], [$2],
-  [AC_TRY_LINK(
-  [#include <stdlib.h>
-  #include "bfd.h"
-  #include "$4"
-  ],
-  [return $3;], [[$2]=yes], [[$2]=no])])
+  LDFLAGS="-L../bfd -L../libiberty $LDFLAGS"
+  # LTLIBINTL because we use libtool as CC below.
+  intl="$(echo "$LTLIBINTL" | sed 's,\$[[{(]top_builddir[)}]]/,,')"
+  LIBS="-lbfd -liberty $intl $LIBS"
+  CC="./libtool --quiet --mode=link $CC"
+  AC_CACHE_CHECK(
+    [$1],
+    [$2],
+    [AC_LINK_IFELSE(
+       [AC_LANG_PROGRAM(
+	  [#include <stdlib.h>
+	   #include <string.h>
+	   #include "bfd.h"
+	   #include "$4"],
+	  [return $3;]
+	)],
+       [[$2]=yes],
+       [[$2]=no]
+     )]
+  )
+  CC=$OLD_CC
   CFLAGS=$OLD_CFLAGS
   LDFLAGS=$OLD_LDFLAGS
   LIBS=$OLD_LIBS])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aclocal.m4 ./gdb/aclocal.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aclocal.m4	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aclocal.m4	2026-03-05 02:07:22.000000000 +0000
@@ -199,4 +199,27 @@ AC_DEFUN([_AM_SUBST_NOTMAKE])
 # Public sister of _AM_SUBST_NOTMAKE.
 AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
+m4_include([../config/acx.m4])
+m4_include([../config/ax_pthread.m4])
+m4_include([../config/bfd64.m4])
+m4_include([../config/debuginfod.m4])
+m4_include([../config/depstand.m4])
+m4_include([../config/enable.m4])
+m4_include([../config/gettext-sister.m4])
+m4_include([../config/gettext.m4])
+m4_include([../config/intlmacosx.m4])
+m4_include([../config/largefile.m4])
+m4_include([../config/lead-dot.m4])
+m4_include([../config/nls.m4])
+m4_include([../config/override.m4])
+m4_include([../config/pkg.m4])
+m4_include([../config/plugins.m4])
+m4_include([../config/po.m4])
+m4_include([../config/progtest.m4])
+m4_include([../config/tcl.m4])
+m4_include([../libtool.m4])
+m4_include([../ltoptions.m4])
+m4_include([../ltsugar.m4])
+m4_include([../ltversion.m4])
+m4_include([../lt~obsolete.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.20200303/gdb/acx_configure_dir.m4 ./gdb/acx_configure_dir.m4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/acx_configure_dir.m4	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/acx_configure_dir.m4	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 1992-2020 Free Software Foundation, Inc.
+# Copyright (C) 1992-2025 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.20200303/gdb/ada-casefold.h ./gdb/ada-casefold.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-casefold.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/ada-casefold.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,1345 @@
+/* THIS FILE IS GENERATED -*- buffer-read-only: t -*- */
+/* vi:set ro: */
+
+/* UTF-32 case-folding for GDB
+
+   Copyright (C) 2022-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 regenerate this file, run:
+   ./ada-unicode.py
+*/
+
+   {65, 90, 0, 32},
+   {97, 122, -32, 0},
+   {181, 181, 743, 0},
+   {192, 214, 0, 32},
+   {216, 222, 0, 32},
+   {224, 246, -32, 0},
+   {248, 254, -32, 0},
+   {255, 255, 121, 0},
+   {256, 256, 0, 1},
+   {257, 257, -1, 0},
+   {258, 258, 0, 1},
+   {259, 259, -1, 0},
+   {260, 260, 0, 1},
+   {261, 261, -1, 0},
+   {262, 262, 0, 1},
+   {263, 263, -1, 0},
+   {264, 264, 0, 1},
+   {265, 265, -1, 0},
+   {266, 266, 0, 1},
+   {267, 267, -1, 0},
+   {268, 268, 0, 1},
+   {269, 269, -1, 0},
+   {270, 270, 0, 1},
+   {271, 271, -1, 0},
+   {272, 272, 0, 1},
+   {273, 273, -1, 0},
+   {274, 274, 0, 1},
+   {275, 275, -1, 0},
+   {276, 276, 0, 1},
+   {277, 277, -1, 0},
+   {278, 278, 0, 1},
+   {279, 279, -1, 0},
+   {280, 280, 0, 1},
+   {281, 281, -1, 0},
+   {282, 282, 0, 1},
+   {283, 283, -1, 0},
+   {284, 284, 0, 1},
+   {285, 285, -1, 0},
+   {286, 286, 0, 1},
+   {287, 287, -1, 0},
+   {288, 288, 0, 1},
+   {289, 289, -1, 0},
+   {290, 290, 0, 1},
+   {291, 291, -1, 0},
+   {292, 292, 0, 1},
+   {293, 293, -1, 0},
+   {294, 294, 0, 1},
+   {295, 295, -1, 0},
+   {296, 296, 0, 1},
+   {297, 297, -1, 0},
+   {298, 298, 0, 1},
+   {299, 299, -1, 0},
+   {300, 300, 0, 1},
+   {301, 301, -1, 0},
+   {302, 302, 0, 1},
+   {303, 303, -1, 0},
+   {305, 305, -232, 0},
+   {306, 306, 0, 1},
+   {307, 307, -1, 0},
+   {308, 308, 0, 1},
+   {309, 309, -1, 0},
+   {310, 310, 0, 1},
+   {311, 311, -1, 0},
+   {313, 313, 0, 1},
+   {314, 314, -1, 0},
+   {315, 315, 0, 1},
+   {316, 316, -1, 0},
+   {317, 317, 0, 1},
+   {318, 318, -1, 0},
+   {319, 319, 0, 1},
+   {320, 320, -1, 0},
+   {321, 321, 0, 1},
+   {322, 322, -1, 0},
+   {323, 323, 0, 1},
+   {324, 324, -1, 0},
+   {325, 325, 0, 1},
+   {326, 326, -1, 0},
+   {327, 327, 0, 1},
+   {328, 328, -1, 0},
+   {330, 330, 0, 1},
+   {331, 331, -1, 0},
+   {332, 332, 0, 1},
+   {333, 333, -1, 0},
+   {334, 334, 0, 1},
+   {335, 335, -1, 0},
+   {336, 336, 0, 1},
+   {337, 337, -1, 0},
+   {338, 338, 0, 1},
+   {339, 339, -1, 0},
+   {340, 340, 0, 1},
+   {341, 341, -1, 0},
+   {342, 342, 0, 1},
+   {343, 343, -1, 0},
+   {344, 344, 0, 1},
+   {345, 345, -1, 0},
+   {346, 346, 0, 1},
+   {347, 347, -1, 0},
+   {348, 348, 0, 1},
+   {349, 349, -1, 0},
+   {350, 350, 0, 1},
+   {351, 351, -1, 0},
+   {352, 352, 0, 1},
+   {353, 353, -1, 0},
+   {354, 354, 0, 1},
+   {355, 355, -1, 0},
+   {356, 356, 0, 1},
+   {357, 357, -1, 0},
+   {358, 358, 0, 1},
+   {359, 359, -1, 0},
+   {360, 360, 0, 1},
+   {361, 361, -1, 0},
+   {362, 362, 0, 1},
+   {363, 363, -1, 0},
+   {364, 364, 0, 1},
+   {365, 365, -1, 0},
+   {366, 366, 0, 1},
+   {367, 367, -1, 0},
+   {368, 368, 0, 1},
+   {369, 369, -1, 0},
+   {370, 370, 0, 1},
+   {371, 371, -1, 0},
+   {372, 372, 0, 1},
+   {373, 373, -1, 0},
+   {374, 374, 0, 1},
+   {375, 375, -1, 0},
+   {376, 376, 0, -121},
+   {377, 377, 0, 1},
+   {378, 378, -1, 0},
+   {379, 379, 0, 1},
+   {380, 380, -1, 0},
+   {381, 381, 0, 1},
+   {382, 382, -1, 0},
+   {383, 383, -300, 0},
+   {384, 384, 195, 0},
+   {385, 385, 0, 210},
+   {386, 386, 0, 1},
+   {387, 387, -1, 0},
+   {388, 388, 0, 1},
+   {389, 389, -1, 0},
+   {390, 390, 0, 206},
+   {391, 391, 0, 1},
+   {392, 392, -1, 0},
+   {393, 394, 0, 205},
+   {395, 395, 0, 1},
+   {396, 396, -1, 0},
+   {398, 398, 0, 79},
+   {399, 399, 0, 202},
+   {400, 400, 0, 203},
+   {401, 401, 0, 1},
+   {402, 402, -1, 0},
+   {403, 403, 0, 205},
+   {404, 404, 0, 207},
+   {405, 405, 97, 0},
+   {406, 406, 0, 211},
+   {407, 407, 0, 209},
+   {408, 408, 0, 1},
+   {409, 409, -1, 0},
+   {410, 410, 163, 0},
+   {412, 412, 0, 211},
+   {413, 413, 0, 213},
+   {414, 414, 130, 0},
+   {415, 415, 0, 214},
+   {416, 416, 0, 1},
+   {417, 417, -1, 0},
+   {418, 418, 0, 1},
+   {419, 419, -1, 0},
+   {420, 420, 0, 1},
+   {421, 421, -1, 0},
+   {422, 422, 0, 218},
+   {423, 423, 0, 1},
+   {424, 424, -1, 0},
+   {425, 425, 0, 218},
+   {428, 428, 0, 1},
+   {429, 429, -1, 0},
+   {430, 430, 0, 218},
+   {431, 431, 0, 1},
+   {432, 432, -1, 0},
+   {433, 434, 0, 217},
+   {435, 435, 0, 1},
+   {436, 436, -1, 0},
+   {437, 437, 0, 1},
+   {438, 438, -1, 0},
+   {439, 439, 0, 219},
+   {440, 440, 0, 1},
+   {441, 441, -1, 0},
+   {444, 444, 0, 1},
+   {445, 445, -1, 0},
+   {447, 447, 56, 0},
+   {452, 452, 0, 2},
+   {453, 453, -1, 1},
+   {454, 454, -2, 0},
+   {455, 455, 0, 2},
+   {456, 456, -1, 1},
+   {457, 457, -2, 0},
+   {458, 458, 0, 2},
+   {459, 459, -1, 1},
+   {460, 460, -2, 0},
+   {461, 461, 0, 1},
+   {462, 462, -1, 0},
+   {463, 463, 0, 1},
+   {464, 464, -1, 0},
+   {465, 465, 0, 1},
+   {466, 466, -1, 0},
+   {467, 467, 0, 1},
+   {468, 468, -1, 0},
+   {469, 469, 0, 1},
+   {470, 470, -1, 0},
+   {471, 471, 0, 1},
+   {472, 472, -1, 0},
+   {473, 473, 0, 1},
+   {474, 474, -1, 0},
+   {475, 475, 0, 1},
+   {476, 476, -1, 0},
+   {477, 477, -79, 0},
+   {478, 478, 0, 1},
+   {479, 479, -1, 0},
+   {480, 480, 0, 1},
+   {481, 481, -1, 0},
+   {482, 482, 0, 1},
+   {483, 483, -1, 0},
+   {484, 484, 0, 1},
+   {485, 485, -1, 0},
+   {486, 486, 0, 1},
+   {487, 487, -1, 0},
+   {488, 488, 0, 1},
+   {489, 489, -1, 0},
+   {490, 490, 0, 1},
+   {491, 491, -1, 0},
+   {492, 492, 0, 1},
+   {493, 493, -1, 0},
+   {494, 494, 0, 1},
+   {495, 495, -1, 0},
+   {497, 497, 0, 2},
+   {498, 498, -1, 1},
+   {499, 499, -2, 0},
+   {500, 500, 0, 1},
+   {501, 501, -1, 0},
+   {502, 502, 0, -97},
+   {503, 503, 0, -56},
+   {504, 504, 0, 1},
+   {505, 505, -1, 0},
+   {506, 506, 0, 1},
+   {507, 507, -1, 0},
+   {508, 508, 0, 1},
+   {509, 509, -1, 0},
+   {510, 510, 0, 1},
+   {511, 511, -1, 0},
+   {512, 512, 0, 1},
+   {513, 513, -1, 0},
+   {514, 514, 0, 1},
+   {515, 515, -1, 0},
+   {516, 516, 0, 1},
+   {517, 517, -1, 0},
+   {518, 518, 0, 1},
+   {519, 519, -1, 0},
+   {520, 520, 0, 1},
+   {521, 521, -1, 0},
+   {522, 522, 0, 1},
+   {523, 523, -1, 0},
+   {524, 524, 0, 1},
+   {525, 525, -1, 0},
+   {526, 526, 0, 1},
+   {527, 527, -1, 0},
+   {528, 528, 0, 1},
+   {529, 529, -1, 0},
+   {530, 530, 0, 1},
+   {531, 531, -1, 0},
+   {532, 532, 0, 1},
+   {533, 533, -1, 0},
+   {534, 534, 0, 1},
+   {535, 535, -1, 0},
+   {536, 536, 0, 1},
+   {537, 537, -1, 0},
+   {538, 538, 0, 1},
+   {539, 539, -1, 0},
+   {540, 540, 0, 1},
+   {541, 541, -1, 0},
+   {542, 542, 0, 1},
+   {543, 543, -1, 0},
+   {544, 544, 0, -130},
+   {546, 546, 0, 1},
+   {547, 547, -1, 0},
+   {548, 548, 0, 1},
+   {549, 549, -1, 0},
+   {550, 550, 0, 1},
+   {551, 551, -1, 0},
+   {552, 552, 0, 1},
+   {553, 553, -1, 0},
+   {554, 554, 0, 1},
+   {555, 555, -1, 0},
+   {556, 556, 0, 1},
+   {557, 557, -1, 0},
+   {558, 558, 0, 1},
+   {559, 559, -1, 0},
+   {560, 560, 0, 1},
+   {561, 561, -1, 0},
+   {562, 562, 0, 1},
+   {563, 563, -1, 0},
+   {570, 570, 0, 10795},
+   {571, 571, 0, 1},
+   {572, 572, -1, 0},
+   {573, 573, 0, -163},
+   {574, 574, 0, 10792},
+   {575, 576, 10815, 0},
+   {577, 577, 0, 1},
+   {578, 578, -1, 0},
+   {579, 579, 0, -195},
+   {580, 580, 0, 69},
+   {581, 581, 0, 71},
+   {582, 582, 0, 1},
+   {583, 583, -1, 0},
+   {584, 584, 0, 1},
+   {585, 585, -1, 0},
+   {586, 586, 0, 1},
+   {587, 587, -1, 0},
+   {588, 588, 0, 1},
+   {589, 589, -1, 0},
+   {590, 590, 0, 1},
+   {591, 591, -1, 0},
+   {592, 592, 10783, 0},
+   {593, 593, 10780, 0},
+   {594, 594, 10782, 0},
+   {595, 595, -210, 0},
+   {596, 596, -206, 0},
+   {598, 599, -205, 0},
+   {601, 601, -202, 0},
+   {603, 603, -203, 0},
+   {604, 604, 42319, 0},
+   {608, 608, -205, 0},
+   {609, 609, 42315, 0},
+   {611, 611, -207, 0},
+   {613, 613, 42280, 0},
+   {614, 614, 42308, 0},
+   {616, 616, -209, 0},
+   {617, 617, -211, 0},
+   {618, 618, 42308, 0},
+   {619, 619, 10743, 0},
+   {620, 620, 42305, 0},
+   {623, 623, -211, 0},
+   {625, 625, 10749, 0},
+   {626, 626, -213, 0},
+   {629, 629, -214, 0},
+   {637, 637, 10727, 0},
+   {640, 640, -218, 0},
+   {642, 642, 42307, 0},
+   {643, 643, -218, 0},
+   {647, 647, 42282, 0},
+   {648, 648, -218, 0},
+   {649, 649, -69, 0},
+   {650, 651, -217, 0},
+   {652, 652, -71, 0},
+   {658, 658, -219, 0},
+   {669, 669, 42261, 0},
+   {670, 670, 42258, 0},
+   {837, 837, 84, 0},
+   {880, 880, 0, 1},
+   {881, 881, -1, 0},
+   {882, 882, 0, 1},
+   {883, 883, -1, 0},
+   {886, 886, 0, 1},
+   {887, 887, -1, 0},
+   {891, 893, 130, 0},
+   {895, 895, 0, 116},
+   {902, 902, 0, 38},
+   {904, 906, 0, 37},
+   {908, 908, 0, 64},
+   {910, 911, 0, 63},
+   {913, 929, 0, 32},
+   {931, 939, 0, 32},
+   {940, 940, -38, 0},
+   {941, 943, -37, 0},
+   {945, 961, -32, 0},
+   {962, 962, -31, 0},
+   {963, 971, -32, 0},
+   {972, 972, -64, 0},
+   {973, 974, -63, 0},
+   {975, 975, 0, 8},
+   {976, 976, -62, 0},
+   {977, 977, -57, 0},
+   {981, 981, -47, 0},
+   {982, 982, -54, 0},
+   {983, 983, -8, 0},
+   {984, 984, 0, 1},
+   {985, 985, -1, 0},
+   {986, 986, 0, 1},
+   {987, 987, -1, 0},
+   {988, 988, 0, 1},
+   {989, 989, -1, 0},
+   {990, 990, 0, 1},
+   {991, 991, -1, 0},
+   {992, 992, 0, 1},
+   {993, 993, -1, 0},
+   {994, 994, 0, 1},
+   {995, 995, -1, 0},
+   {996, 996, 0, 1},
+   {997, 997, -1, 0},
+   {998, 998, 0, 1},
+   {999, 999, -1, 0},
+   {1000, 1000, 0, 1},
+   {1001, 1001, -1, 0},
+   {1002, 1002, 0, 1},
+   {1003, 1003, -1, 0},
+   {1004, 1004, 0, 1},
+   {1005, 1005, -1, 0},
+   {1006, 1006, 0, 1},
+   {1007, 1007, -1, 0},
+   {1008, 1008, -86, 0},
+   {1009, 1009, -80, 0},
+   {1010, 1010, 7, 0},
+   {1011, 1011, -116, 0},
+   {1012, 1012, 0, -60},
+   {1013, 1013, -96, 0},
+   {1015, 1015, 0, 1},
+   {1016, 1016, -1, 0},
+   {1017, 1017, 0, -7},
+   {1018, 1018, 0, 1},
+   {1019, 1019, -1, 0},
+   {1021, 1023, 0, -130},
+   {1024, 1039, 0, 80},
+   {1040, 1071, 0, 32},
+   {1072, 1103, -32, 0},
+   {1104, 1119, -80, 0},
+   {1120, 1120, 0, 1},
+   {1121, 1121, -1, 0},
+   {1122, 1122, 0, 1},
+   {1123, 1123, -1, 0},
+   {1124, 1124, 0, 1},
+   {1125, 1125, -1, 0},
+   {1126, 1126, 0, 1},
+   {1127, 1127, -1, 0},
+   {1128, 1128, 0, 1},
+   {1129, 1129, -1, 0},
+   {1130, 1130, 0, 1},
+   {1131, 1131, -1, 0},
+   {1132, 1132, 0, 1},
+   {1133, 1133, -1, 0},
+   {1134, 1134, 0, 1},
+   {1135, 1135, -1, 0},
+   {1136, 1136, 0, 1},
+   {1137, 1137, -1, 0},
+   {1138, 1138, 0, 1},
+   {1139, 1139, -1, 0},
+   {1140, 1140, 0, 1},
+   {1141, 1141, -1, 0},
+   {1142, 1142, 0, 1},
+   {1143, 1143, -1, 0},
+   {1144, 1144, 0, 1},
+   {1145, 1145, -1, 0},
+   {1146, 1146, 0, 1},
+   {1147, 1147, -1, 0},
+   {1148, 1148, 0, 1},
+   {1149, 1149, -1, 0},
+   {1150, 1150, 0, 1},
+   {1151, 1151, -1, 0},
+   {1152, 1152, 0, 1},
+   {1153, 1153, -1, 0},
+   {1162, 1162, 0, 1},
+   {1163, 1163, -1, 0},
+   {1164, 1164, 0, 1},
+   {1165, 1165, -1, 0},
+   {1166, 1166, 0, 1},
+   {1167, 1167, -1, 0},
+   {1168, 1168, 0, 1},
+   {1169, 1169, -1, 0},
+   {1170, 1170, 0, 1},
+   {1171, 1171, -1, 0},
+   {1172, 1172, 0, 1},
+   {1173, 1173, -1, 0},
+   {1174, 1174, 0, 1},
+   {1175, 1175, -1, 0},
+   {1176, 1176, 0, 1},
+   {1177, 1177, -1, 0},
+   {1178, 1178, 0, 1},
+   {1179, 1179, -1, 0},
+   {1180, 1180, 0, 1},
+   {1181, 1181, -1, 0},
+   {1182, 1182, 0, 1},
+   {1183, 1183, -1, 0},
+   {1184, 1184, 0, 1},
+   {1185, 1185, -1, 0},
+   {1186, 1186, 0, 1},
+   {1187, 1187, -1, 0},
+   {1188, 1188, 0, 1},
+   {1189, 1189, -1, 0},
+   {1190, 1190, 0, 1},
+   {1191, 1191, -1, 0},
+   {1192, 1192, 0, 1},
+   {1193, 1193, -1, 0},
+   {1194, 1194, 0, 1},
+   {1195, 1195, -1, 0},
+   {1196, 1196, 0, 1},
+   {1197, 1197, -1, 0},
+   {1198, 1198, 0, 1},
+   {1199, 1199, -1, 0},
+   {1200, 1200, 0, 1},
+   {1201, 1201, -1, 0},
+   {1202, 1202, 0, 1},
+   {1203, 1203, -1, 0},
+   {1204, 1204, 0, 1},
+   {1205, 1205, -1, 0},
+   {1206, 1206, 0, 1},
+   {1207, 1207, -1, 0},
+   {1208, 1208, 0, 1},
+   {1209, 1209, -1, 0},
+   {1210, 1210, 0, 1},
+   {1211, 1211, -1, 0},
+   {1212, 1212, 0, 1},
+   {1213, 1213, -1, 0},
+   {1214, 1214, 0, 1},
+   {1215, 1215, -1, 0},
+   {1216, 1216, 0, 15},
+   {1217, 1217, 0, 1},
+   {1218, 1218, -1, 0},
+   {1219, 1219, 0, 1},
+   {1220, 1220, -1, 0},
+   {1221, 1221, 0, 1},
+   {1222, 1222, -1, 0},
+   {1223, 1223, 0, 1},
+   {1224, 1224, -1, 0},
+   {1225, 1225, 0, 1},
+   {1226, 1226, -1, 0},
+   {1227, 1227, 0, 1},
+   {1228, 1228, -1, 0},
+   {1229, 1229, 0, 1},
+   {1230, 1230, -1, 0},
+   {1231, 1231, -15, 0},
+   {1232, 1232, 0, 1},
+   {1233, 1233, -1, 0},
+   {1234, 1234, 0, 1},
+   {1235, 1235, -1, 0},
+   {1236, 1236, 0, 1},
+   {1237, 1237, -1, 0},
+   {1238, 1238, 0, 1},
+   {1239, 1239, -1, 0},
+   {1240, 1240, 0, 1},
+   {1241, 1241, -1, 0},
+   {1242, 1242, 0, 1},
+   {1243, 1243, -1, 0},
+   {1244, 1244, 0, 1},
+   {1245, 1245, -1, 0},
+   {1246, 1246, 0, 1},
+   {1247, 1247, -1, 0},
+   {1248, 1248, 0, 1},
+   {1249, 1249, -1, 0},
+   {1250, 1250, 0, 1},
+   {1251, 1251, -1, 0},
+   {1252, 1252, 0, 1},
+   {1253, 1253, -1, 0},
+   {1254, 1254, 0, 1},
+   {1255, 1255, -1, 0},
+   {1256, 1256, 0, 1},
+   {1257, 1257, -1, 0},
+   {1258, 1258, 0, 1},
+   {1259, 1259, -1, 0},
+   {1260, 1260, 0, 1},
+   {1261, 1261, -1, 0},
+   {1262, 1262, 0, 1},
+   {1263, 1263, -1, 0},
+   {1264, 1264, 0, 1},
+   {1265, 1265, -1, 0},
+   {1266, 1266, 0, 1},
+   {1267, 1267, -1, 0},
+   {1268, 1268, 0, 1},
+   {1269, 1269, -1, 0},
+   {1270, 1270, 0, 1},
+   {1271, 1271, -1, 0},
+   {1272, 1272, 0, 1},
+   {1273, 1273, -1, 0},
+   {1274, 1274, 0, 1},
+   {1275, 1275, -1, 0},
+   {1276, 1276, 0, 1},
+   {1277, 1277, -1, 0},
+   {1278, 1278, 0, 1},
+   {1279, 1279, -1, 0},
+   {1280, 1280, 0, 1},
+   {1281, 1281, -1, 0},
+   {1282, 1282, 0, 1},
+   {1283, 1283, -1, 0},
+   {1284, 1284, 0, 1},
+   {1285, 1285, -1, 0},
+   {1286, 1286, 0, 1},
+   {1287, 1287, -1, 0},
+   {1288, 1288, 0, 1},
+   {1289, 1289, -1, 0},
+   {1290, 1290, 0, 1},
+   {1291, 1291, -1, 0},
+   {1292, 1292, 0, 1},
+   {1293, 1293, -1, 0},
+   {1294, 1294, 0, 1},
+   {1295, 1295, -1, 0},
+   {1296, 1296, 0, 1},
+   {1297, 1297, -1, 0},
+   {1298, 1298, 0, 1},
+   {1299, 1299, -1, 0},
+   {1300, 1300, 0, 1},
+   {1301, 1301, -1, 0},
+   {1302, 1302, 0, 1},
+   {1303, 1303, -1, 0},
+   {1304, 1304, 0, 1},
+   {1305, 1305, -1, 0},
+   {1306, 1306, 0, 1},
+   {1307, 1307, -1, 0},
+   {1308, 1308, 0, 1},
+   {1309, 1309, -1, 0},
+   {1310, 1310, 0, 1},
+   {1311, 1311, -1, 0},
+   {1312, 1312, 0, 1},
+   {1313, 1313, -1, 0},
+   {1314, 1314, 0, 1},
+   {1315, 1315, -1, 0},
+   {1316, 1316, 0, 1},
+   {1317, 1317, -1, 0},
+   {1318, 1318, 0, 1},
+   {1319, 1319, -1, 0},
+   {1320, 1320, 0, 1},
+   {1321, 1321, -1, 0},
+   {1322, 1322, 0, 1},
+   {1323, 1323, -1, 0},
+   {1324, 1324, 0, 1},
+   {1325, 1325, -1, 0},
+   {1326, 1326, 0, 1},
+   {1327, 1327, -1, 0},
+   {1329, 1366, 0, 48},
+   {1377, 1414, -48, 0},
+   {4256, 4293, 0, 7264},
+   {4295, 4295, 0, 7264},
+   {4301, 4301, 0, 7264},
+   {4304, 4346, 3008, 0},
+   {4349, 4351, 3008, 0},
+   {5024, 5103, 0, 38864},
+   {5104, 5109, 0, 8},
+   {5112, 5117, -8, 0},
+   {7296, 7296, -6254, 0},
+   {7297, 7297, -6253, 0},
+   {7298, 7298, -6244, 0},
+   {7299, 7300, -6242, 0},
+   {7301, 7301, -6243, 0},
+   {7302, 7302, -6236, 0},
+   {7303, 7303, -6181, 0},
+   {7304, 7304, 35266, 0},
+   {7312, 7354, 0, -3008},
+   {7357, 7359, 0, -3008},
+   {7545, 7545, 35332, 0},
+   {7549, 7549, 3814, 0},
+   {7566, 7566, 35384, 0},
+   {7680, 7680, 0, 1},
+   {7681, 7681, -1, 0},
+   {7682, 7682, 0, 1},
+   {7683, 7683, -1, 0},
+   {7684, 7684, 0, 1},
+   {7685, 7685, -1, 0},
+   {7686, 7686, 0, 1},
+   {7687, 7687, -1, 0},
+   {7688, 7688, 0, 1},
+   {7689, 7689, -1, 0},
+   {7690, 7690, 0, 1},
+   {7691, 7691, -1, 0},
+   {7692, 7692, 0, 1},
+   {7693, 7693, -1, 0},
+   {7694, 7694, 0, 1},
+   {7695, 7695, -1, 0},
+   {7696, 7696, 0, 1},
+   {7697, 7697, -1, 0},
+   {7698, 7698, 0, 1},
+   {7699, 7699, -1, 0},
+   {7700, 7700, 0, 1},
+   {7701, 7701, -1, 0},
+   {7702, 7702, 0, 1},
+   {7703, 7703, -1, 0},
+   {7704, 7704, 0, 1},
+   {7705, 7705, -1, 0},
+   {7706, 7706, 0, 1},
+   {7707, 7707, -1, 0},
+   {7708, 7708, 0, 1},
+   {7709, 7709, -1, 0},
+   {7710, 7710, 0, 1},
+   {7711, 7711, -1, 0},
+   {7712, 7712, 0, 1},
+   {7713, 7713, -1, 0},
+   {7714, 7714, 0, 1},
+   {7715, 7715, -1, 0},
+   {7716, 7716, 0, 1},
+   {7717, 7717, -1, 0},
+   {7718, 7718, 0, 1},
+   {7719, 7719, -1, 0},
+   {7720, 7720, 0, 1},
+   {7721, 7721, -1, 0},
+   {7722, 7722, 0, 1},
+   {7723, 7723, -1, 0},
+   {7724, 7724, 0, 1},
+   {7725, 7725, -1, 0},
+   {7726, 7726, 0, 1},
+   {7727, 7727, -1, 0},
+   {7728, 7728, 0, 1},
+   {7729, 7729, -1, 0},
+   {7730, 7730, 0, 1},
+   {7731, 7731, -1, 0},
+   {7732, 7732, 0, 1},
+   {7733, 7733, -1, 0},
+   {7734, 7734, 0, 1},
+   {7735, 7735, -1, 0},
+   {7736, 7736, 0, 1},
+   {7737, 7737, -1, 0},
+   {7738, 7738, 0, 1},
+   {7739, 7739, -1, 0},
+   {7740, 7740, 0, 1},
+   {7741, 7741, -1, 0},
+   {7742, 7742, 0, 1},
+   {7743, 7743, -1, 0},
+   {7744, 7744, 0, 1},
+   {7745, 7745, -1, 0},
+   {7746, 7746, 0, 1},
+   {7747, 7747, -1, 0},
+   {7748, 7748, 0, 1},
+   {7749, 7749, -1, 0},
+   {7750, 7750, 0, 1},
+   {7751, 7751, -1, 0},
+   {7752, 7752, 0, 1},
+   {7753, 7753, -1, 0},
+   {7754, 7754, 0, 1},
+   {7755, 7755, -1, 0},
+   {7756, 7756, 0, 1},
+   {7757, 7757, -1, 0},
+   {7758, 7758, 0, 1},
+   {7759, 7759, -1, 0},
+   {7760, 7760, 0, 1},
+   {7761, 7761, -1, 0},
+   {7762, 7762, 0, 1},
+   {7763, 7763, -1, 0},
+   {7764, 7764, 0, 1},
+   {7765, 7765, -1, 0},
+   {7766, 7766, 0, 1},
+   {7767, 7767, -1, 0},
+   {7768, 7768, 0, 1},
+   {7769, 7769, -1, 0},
+   {7770, 7770, 0, 1},
+   {7771, 7771, -1, 0},
+   {7772, 7772, 0, 1},
+   {7773, 7773, -1, 0},
+   {7774, 7774, 0, 1},
+   {7775, 7775, -1, 0},
+   {7776, 7776, 0, 1},
+   {7777, 7777, -1, 0},
+   {7778, 7778, 0, 1},
+   {7779, 7779, -1, 0},
+   {7780, 7780, 0, 1},
+   {7781, 7781, -1, 0},
+   {7782, 7782, 0, 1},
+   {7783, 7783, -1, 0},
+   {7784, 7784, 0, 1},
+   {7785, 7785, -1, 0},
+   {7786, 7786, 0, 1},
+   {7787, 7787, -1, 0},
+   {7788, 7788, 0, 1},
+   {7789, 7789, -1, 0},
+   {7790, 7790, 0, 1},
+   {7791, 7791, -1, 0},
+   {7792, 7792, 0, 1},
+   {7793, 7793, -1, 0},
+   {7794, 7794, 0, 1},
+   {7795, 7795, -1, 0},
+   {7796, 7796, 0, 1},
+   {7797, 7797, -1, 0},
+   {7798, 7798, 0, 1},
+   {7799, 7799, -1, 0},
+   {7800, 7800, 0, 1},
+   {7801, 7801, -1, 0},
+   {7802, 7802, 0, 1},
+   {7803, 7803, -1, 0},
+   {7804, 7804, 0, 1},
+   {7805, 7805, -1, 0},
+   {7806, 7806, 0, 1},
+   {7807, 7807, -1, 0},
+   {7808, 7808, 0, 1},
+   {7809, 7809, -1, 0},
+   {7810, 7810, 0, 1},
+   {7811, 7811, -1, 0},
+   {7812, 7812, 0, 1},
+   {7813, 7813, -1, 0},
+   {7814, 7814, 0, 1},
+   {7815, 7815, -1, 0},
+   {7816, 7816, 0, 1},
+   {7817, 7817, -1, 0},
+   {7818, 7818, 0, 1},
+   {7819, 7819, -1, 0},
+   {7820, 7820, 0, 1},
+   {7821, 7821, -1, 0},
+   {7822, 7822, 0, 1},
+   {7823, 7823, -1, 0},
+   {7824, 7824, 0, 1},
+   {7825, 7825, -1, 0},
+   {7826, 7826, 0, 1},
+   {7827, 7827, -1, 0},
+   {7828, 7828, 0, 1},
+   {7829, 7829, -1, 0},
+   {7835, 7835, -59, 0},
+   {7838, 7838, 0, -7615},
+   {7840, 7840, 0, 1},
+   {7841, 7841, -1, 0},
+   {7842, 7842, 0, 1},
+   {7843, 7843, -1, 0},
+   {7844, 7844, 0, 1},
+   {7845, 7845, -1, 0},
+   {7846, 7846, 0, 1},
+   {7847, 7847, -1, 0},
+   {7848, 7848, 0, 1},
+   {7849, 7849, -1, 0},
+   {7850, 7850, 0, 1},
+   {7851, 7851, -1, 0},
+   {7852, 7852, 0, 1},
+   {7853, 7853, -1, 0},
+   {7854, 7854, 0, 1},
+   {7855, 7855, -1, 0},
+   {7856, 7856, 0, 1},
+   {7857, 7857, -1, 0},
+   {7858, 7858, 0, 1},
+   {7859, 7859, -1, 0},
+   {7860, 7860, 0, 1},
+   {7861, 7861, -1, 0},
+   {7862, 7862, 0, 1},
+   {7863, 7863, -1, 0},
+   {7864, 7864, 0, 1},
+   {7865, 7865, -1, 0},
+   {7866, 7866, 0, 1},
+   {7867, 7867, -1, 0},
+   {7868, 7868, 0, 1},
+   {7869, 7869, -1, 0},
+   {7870, 7870, 0, 1},
+   {7871, 7871, -1, 0},
+   {7872, 7872, 0, 1},
+   {7873, 7873, -1, 0},
+   {7874, 7874, 0, 1},
+   {7875, 7875, -1, 0},
+   {7876, 7876, 0, 1},
+   {7877, 7877, -1, 0},
+   {7878, 7878, 0, 1},
+   {7879, 7879, -1, 0},
+   {7880, 7880, 0, 1},
+   {7881, 7881, -1, 0},
+   {7882, 7882, 0, 1},
+   {7883, 7883, -1, 0},
+   {7884, 7884, 0, 1},
+   {7885, 7885, -1, 0},
+   {7886, 7886, 0, 1},
+   {7887, 7887, -1, 0},
+   {7888, 7888, 0, 1},
+   {7889, 7889, -1, 0},
+   {7890, 7890, 0, 1},
+   {7891, 7891, -1, 0},
+   {7892, 7892, 0, 1},
+   {7893, 7893, -1, 0},
+   {7894, 7894, 0, 1},
+   {7895, 7895, -1, 0},
+   {7896, 7896, 0, 1},
+   {7897, 7897, -1, 0},
+   {7898, 7898, 0, 1},
+   {7899, 7899, -1, 0},
+   {7900, 7900, 0, 1},
+   {7901, 7901, -1, 0},
+   {7902, 7902, 0, 1},
+   {7903, 7903, -1, 0},
+   {7904, 7904, 0, 1},
+   {7905, 7905, -1, 0},
+   {7906, 7906, 0, 1},
+   {7907, 7907, -1, 0},
+   {7908, 7908, 0, 1},
+   {7909, 7909, -1, 0},
+   {7910, 7910, 0, 1},
+   {7911, 7911, -1, 0},
+   {7912, 7912, 0, 1},
+   {7913, 7913, -1, 0},
+   {7914, 7914, 0, 1},
+   {7915, 7915, -1, 0},
+   {7916, 7916, 0, 1},
+   {7917, 7917, -1, 0},
+   {7918, 7918, 0, 1},
+   {7919, 7919, -1, 0},
+   {7920, 7920, 0, 1},
+   {7921, 7921, -1, 0},
+   {7922, 7922, 0, 1},
+   {7923, 7923, -1, 0},
+   {7924, 7924, 0, 1},
+   {7925, 7925, -1, 0},
+   {7926, 7926, 0, 1},
+   {7927, 7927, -1, 0},
+   {7928, 7928, 0, 1},
+   {7929, 7929, -1, 0},
+   {7930, 7930, 0, 1},
+   {7931, 7931, -1, 0},
+   {7932, 7932, 0, 1},
+   {7933, 7933, -1, 0},
+   {7934, 7934, 0, 1},
+   {7935, 7935, -1, 0},
+   {7936, 7943, 8, 0},
+   {7944, 7951, 0, -8},
+   {7952, 7957, 8, 0},
+   {7960, 7965, 0, -8},
+   {7968, 7975, 8, 0},
+   {7976, 7983, 0, -8},
+   {7984, 7991, 8, 0},
+   {7992, 7999, 0, -8},
+   {8000, 8005, 8, 0},
+   {8008, 8013, 0, -8},
+   {8017, 8017, 8, 0},
+   {8019, 8019, 8, 0},
+   {8021, 8021, 8, 0},
+   {8023, 8023, 8, 0},
+   {8025, 8025, 0, -8},
+   {8027, 8027, 0, -8},
+   {8029, 8029, 0, -8},
+   {8031, 8031, 0, -8},
+   {8032, 8039, 8, 0},
+   {8040, 8047, 0, -8},
+   {8048, 8049, 74, 0},
+   {8050, 8053, 86, 0},
+   {8054, 8055, 100, 0},
+   {8056, 8057, 128, 0},
+   {8058, 8059, 112, 0},
+   {8060, 8061, 126, 0},
+   {8112, 8113, 8, 0},
+   {8120, 8121, 0, -8},
+   {8122, 8123, 0, -74},
+   {8126, 8126, -7205, 0},
+   {8136, 8139, 0, -86},
+   {8144, 8145, 8, 0},
+   {8152, 8153, 0, -8},
+   {8154, 8155, 0, -100},
+   {8160, 8161, 8, 0},
+   {8165, 8165, 7, 0},
+   {8168, 8169, 0, -8},
+   {8170, 8171, 0, -112},
+   {8172, 8172, 0, -7},
+   {8184, 8185, 0, -128},
+   {8186, 8187, 0, -126},
+   {8486, 8486, 0, -7517},
+   {8490, 8490, 0, -8383},
+   {8491, 8491, 0, -8262},
+   {8498, 8498, 0, 28},
+   {8526, 8526, -28, 0},
+   {8544, 8559, 0, 16},
+   {8560, 8575, -16, 0},
+   {8579, 8579, 0, 1},
+   {8580, 8580, -1, 0},
+   {9398, 9423, 0, 26},
+   {9424, 9449, -26, 0},
+   {11264, 11310, 0, 48},
+   {11312, 11358, -48, 0},
+   {11360, 11360, 0, 1},
+   {11361, 11361, -1, 0},
+   {11362, 11362, 0, -10743},
+   {11363, 11363, 0, -3814},
+   {11364, 11364, 0, -10727},
+   {11365, 11365, -10795, 0},
+   {11366, 11366, -10792, 0},
+   {11367, 11367, 0, 1},
+   {11368, 11368, -1, 0},
+   {11369, 11369, 0, 1},
+   {11370, 11370, -1, 0},
+   {11371, 11371, 0, 1},
+   {11372, 11372, -1, 0},
+   {11373, 11373, 0, -10780},
+   {11374, 11374, 0, -10749},
+   {11375, 11375, 0, -10783},
+   {11376, 11376, 0, -10782},
+   {11378, 11378, 0, 1},
+   {11379, 11379, -1, 0},
+   {11381, 11381, 0, 1},
+   {11382, 11382, -1, 0},
+   {11390, 11391, 0, -10815},
+   {11392, 11392, 0, 1},
+   {11393, 11393, -1, 0},
+   {11394, 11394, 0, 1},
+   {11395, 11395, -1, 0},
+   {11396, 11396, 0, 1},
+   {11397, 11397, -1, 0},
+   {11398, 11398, 0, 1},
+   {11399, 11399, -1, 0},
+   {11400, 11400, 0, 1},
+   {11401, 11401, -1, 0},
+   {11402, 11402, 0, 1},
+   {11403, 11403, -1, 0},
+   {11404, 11404, 0, 1},
+   {11405, 11405, -1, 0},
+   {11406, 11406, 0, 1},
+   {11407, 11407, -1, 0},
+   {11408, 11408, 0, 1},
+   {11409, 11409, -1, 0},
+   {11410, 11410, 0, 1},
+   {11411, 11411, -1, 0},
+   {11412, 11412, 0, 1},
+   {11413, 11413, -1, 0},
+   {11414, 11414, 0, 1},
+   {11415, 11415, -1, 0},
+   {11416, 11416, 0, 1},
+   {11417, 11417, -1, 0},
+   {11418, 11418, 0, 1},
+   {11419, 11419, -1, 0},
+   {11420, 11420, 0, 1},
+   {11421, 11421, -1, 0},
+   {11422, 11422, 0, 1},
+   {11423, 11423, -1, 0},
+   {11424, 11424, 0, 1},
+   {11425, 11425, -1, 0},
+   {11426, 11426, 0, 1},
+   {11427, 11427, -1, 0},
+   {11428, 11428, 0, 1},
+   {11429, 11429, -1, 0},
+   {11430, 11430, 0, 1},
+   {11431, 11431, -1, 0},
+   {11432, 11432, 0, 1},
+   {11433, 11433, -1, 0},
+   {11434, 11434, 0, 1},
+   {11435, 11435, -1, 0},
+   {11436, 11436, 0, 1},
+   {11437, 11437, -1, 0},
+   {11438, 11438, 0, 1},
+   {11439, 11439, -1, 0},
+   {11440, 11440, 0, 1},
+   {11441, 11441, -1, 0},
+   {11442, 11442, 0, 1},
+   {11443, 11443, -1, 0},
+   {11444, 11444, 0, 1},
+   {11445, 11445, -1, 0},
+   {11446, 11446, 0, 1},
+   {11447, 11447, -1, 0},
+   {11448, 11448, 0, 1},
+   {11449, 11449, -1, 0},
+   {11450, 11450, 0, 1},
+   {11451, 11451, -1, 0},
+   {11452, 11452, 0, 1},
+   {11453, 11453, -1, 0},
+   {11454, 11454, 0, 1},
+   {11455, 11455, -1, 0},
+   {11456, 11456, 0, 1},
+   {11457, 11457, -1, 0},
+   {11458, 11458, 0, 1},
+   {11459, 11459, -1, 0},
+   {11460, 11460, 0, 1},
+   {11461, 11461, -1, 0},
+   {11462, 11462, 0, 1},
+   {11463, 11463, -1, 0},
+   {11464, 11464, 0, 1},
+   {11465, 11465, -1, 0},
+   {11466, 11466, 0, 1},
+   {11467, 11467, -1, 0},
+   {11468, 11468, 0, 1},
+   {11469, 11469, -1, 0},
+   {11470, 11470, 0, 1},
+   {11471, 11471, -1, 0},
+   {11472, 11472, 0, 1},
+   {11473, 11473, -1, 0},
+   {11474, 11474, 0, 1},
+   {11475, 11475, -1, 0},
+   {11476, 11476, 0, 1},
+   {11477, 11477, -1, 0},
+   {11478, 11478, 0, 1},
+   {11479, 11479, -1, 0},
+   {11480, 11480, 0, 1},
+   {11481, 11481, -1, 0},
+   {11482, 11482, 0, 1},
+   {11483, 11483, -1, 0},
+   {11484, 11484, 0, 1},
+   {11485, 11485, -1, 0},
+   {11486, 11486, 0, 1},
+   {11487, 11487, -1, 0},
+   {11488, 11488, 0, 1},
+   {11489, 11489, -1, 0},
+   {11490, 11490, 0, 1},
+   {11491, 11491, -1, 0},
+   {11499, 11499, 0, 1},
+   {11500, 11500, -1, 0},
+   {11501, 11501, 0, 1},
+   {11502, 11502, -1, 0},
+   {11506, 11506, 0, 1},
+   {11507, 11507, -1, 0},
+   {11520, 11557, -7264, 0},
+   {11559, 11559, -7264, 0},
+   {11565, 11565, -7264, 0},
+   {42560, 42560, 0, 1},
+   {42561, 42561, -1, 0},
+   {42562, 42562, 0, 1},
+   {42563, 42563, -1, 0},
+   {42564, 42564, 0, 1},
+   {42565, 42565, -1, 0},
+   {42566, 42566, 0, 1},
+   {42567, 42567, -1, 0},
+   {42568, 42568, 0, 1},
+   {42569, 42569, -1, 0},
+   {42570, 42570, 0, 1},
+   {42571, 42571, -1, 0},
+   {42572, 42572, 0, 1},
+   {42573, 42573, -1, 0},
+   {42574, 42574, 0, 1},
+   {42575, 42575, -1, 0},
+   {42576, 42576, 0, 1},
+   {42577, 42577, -1, 0},
+   {42578, 42578, 0, 1},
+   {42579, 42579, -1, 0},
+   {42580, 42580, 0, 1},
+   {42581, 42581, -1, 0},
+   {42582, 42582, 0, 1},
+   {42583, 42583, -1, 0},
+   {42584, 42584, 0, 1},
+   {42585, 42585, -1, 0},
+   {42586, 42586, 0, 1},
+   {42587, 42587, -1, 0},
+   {42588, 42588, 0, 1},
+   {42589, 42589, -1, 0},
+   {42590, 42590, 0, 1},
+   {42591, 42591, -1, 0},
+   {42592, 42592, 0, 1},
+   {42593, 42593, -1, 0},
+   {42594, 42594, 0, 1},
+   {42595, 42595, -1, 0},
+   {42596, 42596, 0, 1},
+   {42597, 42597, -1, 0},
+   {42598, 42598, 0, 1},
+   {42599, 42599, -1, 0},
+   {42600, 42600, 0, 1},
+   {42601, 42601, -1, 0},
+   {42602, 42602, 0, 1},
+   {42603, 42603, -1, 0},
+   {42604, 42604, 0, 1},
+   {42605, 42605, -1, 0},
+   {42624, 42624, 0, 1},
+   {42625, 42625, -1, 0},
+   {42626, 42626, 0, 1},
+   {42627, 42627, -1, 0},
+   {42628, 42628, 0, 1},
+   {42629, 42629, -1, 0},
+   {42630, 42630, 0, 1},
+   {42631, 42631, -1, 0},
+   {42632, 42632, 0, 1},
+   {42633, 42633, -1, 0},
+   {42634, 42634, 0, 1},
+   {42635, 42635, -1, 0},
+   {42636, 42636, 0, 1},
+   {42637, 42637, -1, 0},
+   {42638, 42638, 0, 1},
+   {42639, 42639, -1, 0},
+   {42640, 42640, 0, 1},
+   {42641, 42641, -1, 0},
+   {42642, 42642, 0, 1},
+   {42643, 42643, -1, 0},
+   {42644, 42644, 0, 1},
+   {42645, 42645, -1, 0},
+   {42646, 42646, 0, 1},
+   {42647, 42647, -1, 0},
+   {42648, 42648, 0, 1},
+   {42649, 42649, -1, 0},
+   {42650, 42650, 0, 1},
+   {42651, 42651, -1, 0},
+   {42786, 42786, 0, 1},
+   {42787, 42787, -1, 0},
+   {42788, 42788, 0, 1},
+   {42789, 42789, -1, 0},
+   {42790, 42790, 0, 1},
+   {42791, 42791, -1, 0},
+   {42792, 42792, 0, 1},
+   {42793, 42793, -1, 0},
+   {42794, 42794, 0, 1},
+   {42795, 42795, -1, 0},
+   {42796, 42796, 0, 1},
+   {42797, 42797, -1, 0},
+   {42798, 42798, 0, 1},
+   {42799, 42799, -1, 0},
+   {42802, 42802, 0, 1},
+   {42803, 42803, -1, 0},
+   {42804, 42804, 0, 1},
+   {42805, 42805, -1, 0},
+   {42806, 42806, 0, 1},
+   {42807, 42807, -1, 0},
+   {42808, 42808, 0, 1},
+   {42809, 42809, -1, 0},
+   {42810, 42810, 0, 1},
+   {42811, 42811, -1, 0},
+   {42812, 42812, 0, 1},
+   {42813, 42813, -1, 0},
+   {42814, 42814, 0, 1},
+   {42815, 42815, -1, 0},
+   {42816, 42816, 0, 1},
+   {42817, 42817, -1, 0},
+   {42818, 42818, 0, 1},
+   {42819, 42819, -1, 0},
+   {42820, 42820, 0, 1},
+   {42821, 42821, -1, 0},
+   {42822, 42822, 0, 1},
+   {42823, 42823, -1, 0},
+   {42824, 42824, 0, 1},
+   {42825, 42825, -1, 0},
+   {42826, 42826, 0, 1},
+   {42827, 42827, -1, 0},
+   {42828, 42828, 0, 1},
+   {42829, 42829, -1, 0},
+   {42830, 42830, 0, 1},
+   {42831, 42831, -1, 0},
+   {42832, 42832, 0, 1},
+   {42833, 42833, -1, 0},
+   {42834, 42834, 0, 1},
+   {42835, 42835, -1, 0},
+   {42836, 42836, 0, 1},
+   {42837, 42837, -1, 0},
+   {42838, 42838, 0, 1},
+   {42839, 42839, -1, 0},
+   {42840, 42840, 0, 1},
+   {42841, 42841, -1, 0},
+   {42842, 42842, 0, 1},
+   {42843, 42843, -1, 0},
+   {42844, 42844, 0, 1},
+   {42845, 42845, -1, 0},
+   {42846, 42846, 0, 1},
+   {42847, 42847, -1, 0},
+   {42848, 42848, 0, 1},
+   {42849, 42849, -1, 0},
+   {42850, 42850, 0, 1},
+   {42851, 42851, -1, 0},
+   {42852, 42852, 0, 1},
+   {42853, 42853, -1, 0},
+   {42854, 42854, 0, 1},
+   {42855, 42855, -1, 0},
+   {42856, 42856, 0, 1},
+   {42857, 42857, -1, 0},
+   {42858, 42858, 0, 1},
+   {42859, 42859, -1, 0},
+   {42860, 42860, 0, 1},
+   {42861, 42861, -1, 0},
+   {42862, 42862, 0, 1},
+   {42863, 42863, -1, 0},
+   {42873, 42873, 0, 1},
+   {42874, 42874, -1, 0},
+   {42875, 42875, 0, 1},
+   {42876, 42876, -1, 0},
+   {42877, 42877, 0, -35332},
+   {42878, 42878, 0, 1},
+   {42879, 42879, -1, 0},
+   {42880, 42880, 0, 1},
+   {42881, 42881, -1, 0},
+   {42882, 42882, 0, 1},
+   {42883, 42883, -1, 0},
+   {42884, 42884, 0, 1},
+   {42885, 42885, -1, 0},
+   {42886, 42886, 0, 1},
+   {42887, 42887, -1, 0},
+   {42891, 42891, 0, 1},
+   {42892, 42892, -1, 0},
+   {42893, 42893, 0, -42280},
+   {42896, 42896, 0, 1},
+   {42897, 42897, -1, 0},
+   {42898, 42898, 0, 1},
+   {42899, 42899, -1, 0},
+   {42900, 42900, 48, 0},
+   {42902, 42902, 0, 1},
+   {42903, 42903, -1, 0},
+   {42904, 42904, 0, 1},
+   {42905, 42905, -1, 0},
+   {42906, 42906, 0, 1},
+   {42907, 42907, -1, 0},
+   {42908, 42908, 0, 1},
+   {42909, 42909, -1, 0},
+   {42910, 42910, 0, 1},
+   {42911, 42911, -1, 0},
+   {42912, 42912, 0, 1},
+   {42913, 42913, -1, 0},
+   {42914, 42914, 0, 1},
+   {42915, 42915, -1, 0},
+   {42916, 42916, 0, 1},
+   {42917, 42917, -1, 0},
+   {42918, 42918, 0, 1},
+   {42919, 42919, -1, 0},
+   {42920, 42920, 0, 1},
+   {42921, 42921, -1, 0},
+   {42922, 42922, 0, -42308},
+   {42923, 42923, 0, -42319},
+   {42924, 42924, 0, -42315},
+   {42925, 42925, 0, -42305},
+   {42926, 42926, 0, -42308},
+   {42928, 42928, 0, -42258},
+   {42929, 42929, 0, -42282},
+   {42930, 42930, 0, -42261},
+   {42931, 42931, 0, 928},
+   {42932, 42932, 0, 1},
+   {42933, 42933, -1, 0},
+   {42934, 42934, 0, 1},
+   {42935, 42935, -1, 0},
+   {42936, 42936, 0, 1},
+   {42937, 42937, -1, 0},
+   {42938, 42938, 0, 1},
+   {42939, 42939, -1, 0},
+   {42940, 42940, 0, 1},
+   {42941, 42941, -1, 0},
+   {42942, 42942, 0, 1},
+   {42943, 42943, -1, 0},
+   {42946, 42946, 0, 1},
+   {42947, 42947, -1, 0},
+   {42948, 42948, 0, -48},
+   {42949, 42949, 0, -42307},
+   {42950, 42950, 0, -35384},
+   {42951, 42951, 0, 1},
+   {42952, 42952, -1, 0},
+   {42953, 42953, 0, 1},
+   {42954, 42954, -1, 0},
+   {42997, 42997, 0, 1},
+   {42998, 42998, -1, 0},
+   {43859, 43859, -928, 0},
+   {43888, 43967, -38864, 0},
+   {65313, 65338, 0, 32},
+   {65345, 65370, -32, 0},
+   {66560, 66599, 0, 40},
+   {66600, 66639, -40, 0},
+   {66736, 66771, 0, 40},
+   {66776, 66811, -40, 0},
+   {68736, 68786, 0, 64},
+   {68800, 68850, -64, 0},
+   {71840, 71871, 0, 32},
+   {71872, 71903, -32, 0},
+   {93760, 93791, 0, 32},
+   {93792, 93823, -32, 0},
+   {125184, 125217, 0, 34},
+   {125218, 125251, -34, 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.20200303/gdb/ada-exp.c ./gdb/ada-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-exp.c	2020-03-03 02:12:50.000000000 +0000
+++ ./gdb/ada-exp.c	2026-03-05 02:15:32.000000000 +0000
@@ -1,21 +1,19 @@
+/* A Bison parser, made by GNU Bison 3.0.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 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,7 +26,7 @@
    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.  */
 
@@ -46,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.0.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,29 +58,23 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
 /* Copy the first part of user declarations.  */
+#line 36 "ada-exp.y" /* yacc.c:339  */
 
-/* Line 189 of yacc.c  */
-#line 36 "ada-exp.y"
 
-
-#include "defs.h"
 #include <ctype.h>
+#include "gdbsupport/unordered_map.h"
 #include "expression.h"
 #include "value.h"
 #include "parser-defs.h"
 #include "language.h"
 #include "ada-lang.h"
-#include "bfd.h" /* Required by objfiles.h.  */
-#include "symfile.h" /* Required by objfiles.h.  */
-#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
 #include "frame.h"
 #include "block.h"
+#include "ada-exp.h"
 
 #define parse_type(ps) builtin_type (ps->gdbarch ())
 
@@ -103,11 +95,68 @@ struct name_info {
 
 static struct parser_state *pstate = NULL;
 
-static struct stoken empty_stoken = { "", 0 };
+using namespace expr;
+
+/* A convenience typedef.  */
+typedef std::unique_ptr<ada_assign_operation> ada_assign_up;
+
+/* Data that must be held for the duration of a parse.  */
+
+struct ada_parse_state
+{
+  explicit ada_parse_state (const char *expr)
+    : m_original_expr (expr)
+  {
+  }
+
+  std::string find_completion_bounds ();
+
+  const gdb_mpz *push_integer (gdb_mpz &&val)
+  {
+    auto &result = m_int_storage.emplace_back (new gdb_mpz (std::move (val)));
+    return result.get ();
+  }
+
+  /* The components being constructed during this parse.  */
+  std::vector<ada_component_up> components;
 
-/* If expression is in the context of TYPE'(...), then TYPE, else
- * NULL.  */
-static struct type *type_qualifier;
+  /* The associations being constructed during this parse.  */
+  std::vector<ada_association_up> associations;
+
+  /* The stack of currently active assignment expressions.  This is used
+     to implement '@', the target name symbol.  */
+  std::vector<ada_assign_up> assignments;
+
+  /* Track currently active iterated assignment names.  */
+  gdb::unordered_map<std::string, std::vector<ada_index_var_operation *>>
+       iterated_associations;
+
+  auto_obstack temp_space;
+
+  /* Depth of parentheses, used by the lexer.  */
+  int paren_depth = 0;
+
+  /* When completing, we'll return a special character at the end of the
+     input, to signal the completion position to the lexer.  This is
+     done because flex does not have a generally useful way to detect
+     EOF in a pattern.  This variable records whether the special
+     character has been emitted.  */
+  bool returned_complete = false;
+
+private:
+
+  /* We don't have a good way to manage non-POD data in Yacc, so store
+     values here.  The storage here is only valid for the duration of
+     the parse.  */
+  std::vector<std::unique_ptr<gdb_mpz>> m_int_storage;
+
+  /* The original expression string.  */
+  const char *m_original_expr;
+};
+
+/* The current Ada parser object.  */
+
+static ada_parse_state *ada_parser;
 
 int yyparse (void);
 
@@ -123,42 +172,334 @@ static void write_object_renaming (struc
 
 static struct type* write_var_or_type (struct parser_state *,
 				       const struct block *, struct stoken);
+static struct type *write_var_or_type_completion (struct parser_state *,
+						  const struct block *,
+						  struct stoken);
 
 static void write_name_assoc (struct parser_state *, struct stoken);
 
-static void write_exp_op_with_string (struct parser_state *, enum exp_opcode,
-				      struct stoken);
-
 static const struct block *block_lookup (const struct block *, const char *);
 
-static LONGEST convert_char_literal (struct type *, LONGEST);
-
 static void write_ambiguous_var (struct parser_state *,
-				 const struct block *, char *, int);
+				 const struct block *, const char *, int);
+
+static struct type *type_for_char (struct parser_state *, ULONGEST);
+
+static struct type *type_system_address (struct parser_state *);
+
+/* Handle Ada type resolution for OP.  DEPROCEDURE_P and CONTEXT_TYPE
+   are passed to the resolve method, if called.  */
+static operation_up
+resolve (operation_up &&op, bool deprocedure_p, struct type *context_type)
+{
+  operation_up result = std::move (op);
+  ada_resolvable *res = dynamic_cast<ada_resolvable *> (result.get ());
+  if (res != nullptr)
+    return res->replace (std::move (result),
+			 pstate->expout.get (),
+			 deprocedure_p,
+			 pstate->parse_completion,
+			 pstate->block_tracker,
+			 context_type);
+  return result;
+}
+
+/* Like parser_state::pop, but handles Ada type resolution.
+   DEPROCEDURE_P and CONTEXT_TYPE are passed to the resolve method, if
+   called.  */
+static operation_up
+ada_pop (bool deprocedure_p = true, struct type *context_type = nullptr)
+{
+  /* Of course it's ok to call parser_state::pop here... */
+  return resolve (pstate->pop (), deprocedure_p, context_type);
+}
 
-static struct type *type_int (struct parser_state *);
+/* Like parser_state::wrap, but use ada_pop to pop the value.  */
+template<typename T, typename... Args>
+void
+ada_wrap (Args... args)
+{
+  operation_up arg = ada_pop ();
+  pstate->push_new<T> (std::move (arg), std::forward<Args> (args)...);
+}
 
-static struct type *type_long (struct parser_state *);
+/* Create and push an address-of operation, as appropriate for Ada.
+   If TYPE is not NULL, the resulting operation will be wrapped in a
+   cast to TYPE.  */
+static void
+ada_addrof (struct type *type = nullptr)
+{
+  operation_up arg = ada_pop (false);
+  operation_up addr = make_operation<unop_addr_operation> (std::move (arg));
+  operation_up wrapped
+    = make_operation<ada_wrapped_operation> (std::move (addr));
+  if (type != nullptr)
+    wrapped = make_operation<unop_cast_operation> (std::move (wrapped), type);
+  pstate->push (std::move (wrapped));
+}
+
+/* Handle operator overloading.  Either returns a function all
+   operation wrapping the arguments, or it returns null, leaving the
+   caller to construct the appropriate operation.  If RHS is null, a
+   unary operator is assumed.  */
+static operation_up
+maybe_overload (enum exp_opcode op, operation_up &lhs, operation_up &rhs)
+{
+  struct value *args[2];
+
+  int nargs = 1;
+  args[0] = lhs->evaluate (nullptr, pstate->expout.get (),
+			   EVAL_AVOID_SIDE_EFFECTS);
+  if (rhs == nullptr)
+    args[1] = nullptr;
+  else
+    {
+      args[1] = rhs->evaluate (nullptr, pstate->expout.get (),
+			       EVAL_AVOID_SIDE_EFFECTS);
+      ++nargs;
+    }
+
+  block_symbol fn = ada_find_operator_symbol (op, pstate->parse_completion,
+					      nargs, args);
+  if (fn.symbol == nullptr)
+    return {};
+
+  if (symbol_read_needs_frame (fn.symbol))
+    pstate->block_tracker->update (fn.block, INNERMOST_BLOCK_FOR_SYMBOLS);
+  operation_up callee = make_operation<ada_var_value_operation> (fn);
+
+  std::vector<operation_up> argvec;
+  argvec.push_back (std::move (lhs));
+  if (rhs != nullptr)
+    argvec.push_back (std::move (rhs));
+  return make_operation<ada_funcall_operation> (std::move (callee),
+						std::move (argvec));
+}
+
+/* Like parser_state::wrap, but use ada_pop to pop the value, and
+   handle unary overloading.  */
+template<typename T>
+void
+ada_wrap_overload (enum exp_opcode op)
+{
+  operation_up arg = ada_pop ();
+  operation_up empty;
 
-static struct type *type_long_long (struct parser_state *);
+  operation_up call = maybe_overload (op, arg, empty);
+  if (call == nullptr)
+    call = make_operation<T> (std::move (arg));
+  pstate->push (std::move (call));
+}
 
-static struct type *type_long_double (struct parser_state *);
+/* A variant of parser_state::wrap2 that uses ada_pop to pop both
+   operands, and then pushes a new Ada-wrapped operation of the
+   template type T.  */
+template<typename T>
+void
+ada_un_wrap2 (enum exp_opcode op)
+{
+  operation_up rhs = ada_pop ();
+  operation_up lhs = ada_pop ();
 
-static struct type *type_char (struct parser_state *);
+  operation_up wrapped = maybe_overload (op, lhs, rhs);
+  if (wrapped == nullptr)
+    {
+      wrapped = make_operation<T> (std::move (lhs), std::move (rhs));
+      wrapped = make_operation<ada_wrapped_operation> (std::move (wrapped));
+    }
+  pstate->push (std::move (wrapped));
+}
 
-static struct type *type_boolean (struct parser_state *);
+/* A variant of parser_state::wrap2 that uses ada_pop to pop both
+   operands.  Unlike ada_un_wrap2, ada_wrapped_operation is not
+   used.  */
+template<typename T>
+void
+ada_wrap2 (enum exp_opcode op)
+{
+  operation_up rhs = ada_pop ();
+  operation_up lhs = ada_pop ();
+  operation_up call = maybe_overload (op, lhs, rhs);
+  if (call == nullptr)
+    call = make_operation<T> (std::move (lhs), std::move (rhs));
+  pstate->push (std::move (call));
+}
 
-static struct type *type_system_address (struct parser_state *);
+/* A variant of parser_state::wrap2 that uses ada_pop to pop both
+   operands.  OP is also passed to the constructor of the new binary
+   operation.  */
+template<typename T>
+void
+ada_wrap_op (enum exp_opcode op)
+{
+  operation_up rhs = ada_pop ();
+  operation_up lhs = ada_pop ();
+  operation_up call = maybe_overload (op, lhs, rhs);
+  if (call == nullptr)
+    call = make_operation<T> (op, std::move (lhs), std::move (rhs));
+  pstate->push (std::move (call));
+}
 
+/* Pop three operands using ada_pop, then construct a new ternary
+   operation of type T and push it.  */
+template<typename T>
+void
+ada_wrap3 ()
+{
+  operation_up rhs = ada_pop ();
+  operation_up mid = ada_pop ();
+  operation_up lhs = ada_pop ();
+  pstate->push_new<T> (std::move (lhs), std::move (mid), std::move (rhs));
+}
 
+/* Pop NARGS operands, then a callee operand, and use these to
+   construct and push a new Ada function call operation.  */
+static void
+ada_funcall (int nargs)
+{
+  /* We use the ordinary pop here, because we're going to do
+     resolution in a separate step, in order to handle array
+     indices.  */
+  std::vector<operation_up> args = pstate->pop_vector (nargs);
+  /* Call parser_state::pop here, because we don't want to
+     function-convert the callee slot of a call we're already
+     constructing.  */
+  operation_up callee = pstate->pop ();
+
+  ada_var_value_operation *vvo
+    = dynamic_cast<ada_var_value_operation *> (callee.get ());
+  int array_arity = 0;
+  struct type *callee_t = nullptr;
+  if (vvo == nullptr
+      || vvo->get_symbol ()->domain () != UNDEF_DOMAIN)
+    {
+      struct value *callee_v = callee->evaluate (nullptr,
+						 pstate->expout.get (),
+						 EVAL_AVOID_SIDE_EFFECTS);
+      callee_t = ada_check_typedef (callee_v->type ());
+      array_arity = ada_array_arity (callee_t);
+    }
+
+  for (int i = 0; i < nargs; ++i)
+    {
+      struct type *subtype = nullptr;
+      if (i < array_arity)
+	subtype = ada_index_type (callee_t, i + 1, "array type");
+      args[i] = resolve (std::move (args[i]), true, subtype);
+    }
+
+  std::unique_ptr<ada_funcall_operation> funcall
+    (new ada_funcall_operation (std::move (callee), std::move (args)));
+  funcall->resolve (pstate->expout.get (), true, pstate->parse_completion,
+		    pstate->block_tracker, nullptr);
+  pstate->push (std::move (funcall));
+}
+
+/* Create a new ada_component_up of the indicated type and arguments,
+   and push it on the global 'components' vector.  */
+template<typename T, typename... Arg>
+void
+push_component (Arg... args)
+{
+  ada_parser->components.emplace_back (new T (std::forward<Arg> (args)...));
+}
 
-/* Line 189 of yacc.c  */
-#line 157 "ada-exp.c.tmp"
+/* Examine the final element of the 'components' vector, and return it
+   as a pointer to an ada_choices_component.  The caller is
+   responsible for ensuring that the final element is in fact an
+   ada_choices_component.  */
+static ada_choices_component *
+choice_component ()
+{
+  ada_component *last = ada_parser->components.back ().get ();
+  return gdb::checked_static_cast<ada_choices_component *> (last);
+}
 
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+/* Pop the most recent component from the global stack, and return
+   it.  */
+static ada_component_up
+pop_component ()
+{
+  ada_component_up result = std::move (ada_parser->components.back ());
+  ada_parser->components.pop_back ();
+  return result;
+}
+
+/* Pop the N most recent components from the global stack, and return
+   them in a vector.  */
+static std::vector<ada_component_up>
+pop_components (int n)
+{
+  std::vector<ada_component_up> result (n);
+  for (int i = 1; i <= n; ++i)
+    result[n - i] = pop_component ();
+  return result;
+}
+
+/* Create a new ada_association_up of the indicated type and
+   arguments, and push it on the global 'associations' vector.  */
+template<typename T, typename... Arg>
+void
+push_association (Arg... args)
+{
+  ada_parser->associations.emplace_back (new T (std::forward<Arg> (args)...));
+}
+
+/* Pop the most recent association from the global stack, and return
+   it.  */
+static ada_association_up
+pop_association ()
+{
+  ada_association_up result = std::move (ada_parser->associations.back ());
+  ada_parser->associations.pop_back ();
+  return result;
+}
+
+/* Pop the N most recent associations from the global stack, and
+   return them in a vector.  */
+static std::vector<ada_association_up>
+pop_associations (int n)
+{
+  std::vector<ada_association_up> result (n);
+  for (int i = 1; i <= n; ++i)
+    result[n - i] = pop_association ();
+  return result;
+}
+
+/* Expression completer for attributes.  */
+struct ada_tick_completer : public expr_completion_base
+{
+  explicit ada_tick_completer (std::string &&name)
+    : m_name (std::move (name))
+  {
+  }
+
+  bool complete (struct expression *exp,
+		 completion_tracker &tracker) override;
+
+private:
+
+  std::string m_name;
+};
+
+/* Make a new ada_tick_completer and wrap it in a unique pointer.  */
+static std::unique_ptr<expr_completion_base>
+make_tick_completer (struct stoken tok)
+{
+  return (std::unique_ptr<expr_completion_base>
+	  (new ada_tick_completer (std::string (tok.ptr, tok.length))));
+}
+
+
+#line 495 "ada-exp.c.tmp" /* yacc.c:339  */
+
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULLPTRPTR nullptr
+#  else
+#   define YY_NULLPTRPTR 0
+#  endif
+# endif
 
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
@@ -168,65 +509,75 @@ static struct type *type_system_address
 # define YYERROR_VERBOSE 0
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
 
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
 
-/* Tokens.  */
+/* Token type.  */
 #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
-   };
+  enum yytokentype
+  {
+    INT = 258,
+    NULL_PTR = 259,
+    CHARLIT = 260,
+    FLOAT = 261,
+    TRUEKEYWORD = 262,
+    FALSEKEYWORD = 263,
+    WITH = 264,
+    DELTA = 265,
+    COLONCOLON = 266,
+    STRING = 267,
+    NAME = 268,
+    DOT_ID = 269,
+    TICK_COMPLETE = 270,
+    DOT_COMPLETE = 271,
+    NAME_COMPLETE = 272,
+    DOLLAR_VARIABLE = 273,
+    ASSIGN = 274,
+    _AND_ = 275,
+    OR = 276,
+    XOR = 277,
+    THEN = 278,
+    ELSE = 279,
+    NOTEQUAL = 280,
+    LEQ = 281,
+    GEQ = 282,
+    IN = 283,
+    DOTDOT = 284,
+    UNARY = 285,
+    MOD = 286,
+    REM = 287,
+    STARSTAR = 288,
+    ABS = 289,
+    NOT = 290,
+    VAR = 291,
+    ARROW = 292,
+    TICK_ACCESS = 293,
+    TICK_ADDRESS = 294,
+    TICK_FIRST = 295,
+    TICK_LAST = 296,
+    TICK_LENGTH = 297,
+    TICK_MAX = 298,
+    TICK_MIN = 299,
+    TICK_MODULUS = 300,
+    TICK_POS = 301,
+    TICK_RANGE = 302,
+    TICK_SIZE = 303,
+    TICK_OBJECT_SIZE = 304,
+    TICK_TAG = 305,
+    TICK_VAL = 306,
+    TICK_ENUM_REP = 307,
+    TICK_ENUM_VAL = 308,
+    NEW = 309,
+    OTHERS = 310,
+    FOR = 311
+  };
 #endif
 /* Tokens.  */
 #define INT 258
@@ -235,63 +586,72 @@ static struct type *type_system_address
 #define FLOAT 261
 #define TRUEKEYWORD 262
 #define FALSEKEYWORD 263
-#define COLONCOLON 264
-#define STRING 265
-#define NAME 266
-#define DOT_ID 267
-#define DOT_ALL 268
-#define DOLLAR_VARIABLE 269
-#define ASSIGN 270
-#define ELSE 271
-#define THEN 272
-#define XOR 273
-#define OR 274
+#define WITH 264
+#define DELTA 265
+#define COLONCOLON 266
+#define STRING 267
+#define NAME 268
+#define DOT_ID 269
+#define TICK_COMPLETE 270
+#define DOT_COMPLETE 271
+#define NAME_COMPLETE 272
+#define DOLLAR_VARIABLE 273
+#define ASSIGN 274
 #define _AND_ 275
-#define DOTDOT 276
-#define IN 277
-#define GEQ 278
-#define LEQ 279
+#define OR 276
+#define XOR 277
+#define THEN 278
+#define ELSE 279
 #define NOTEQUAL 280
-#define UNARY 281
-#define REM 282
-#define MOD 283
-#define NOT 284
-#define ABS 285
-#define STARSTAR 286
-#define VAR 287
-#define ARROW 288
-#define TICK_LENGTH 289
-#define TICK_LAST 290
-#define TICK_FIRST 291
-#define TICK_ADDRESS 292
+#define LEQ 281
+#define GEQ 282
+#define IN 283
+#define DOTDOT 284
+#define UNARY 285
+#define MOD 286
+#define REM 287
+#define STARSTAR 288
+#define ABS 289
+#define NOT 290
+#define VAR 291
+#define ARROW 292
 #define TICK_ACCESS 293
-#define TICK_MODULUS 294
-#define TICK_MIN 295
-#define TICK_MAX 296
-#define TICK_VAL 297
-#define TICK_TAG 298
-#define TICK_SIZE 299
-#define TICK_RANGE 300
+#define TICK_ADDRESS 294
+#define TICK_FIRST 295
+#define TICK_LAST 296
+#define TICK_LENGTH 297
+#define TICK_MAX 298
+#define TICK_MIN 299
+#define TICK_MODULUS 300
 #define TICK_POS 301
-#define NEW 302
-#define OTHERS 303
-
+#define TICK_RANGE 302
+#define TICK_SIZE 303
+#define TICK_OBJECT_SIZE 304
+#define TICK_TAG 305
+#define TICK_VAL 306
+#define TICK_ENUM_REP 307
+#define TICK_ENUM_VAL 308
+#define NEW 309
+#define OTHERS 310
+#define FOR 311
 
+/* Value type.  */
+#if ! defined ada_exp_YYSTYPE && ! defined ada_exp_YYSTYPE_IS_DECLARED
 
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union ada_exp_YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
-#line 120 "ada-exp.y"
+#line 466 "ada-exp.y" /* yacc.c:355  */
 
     LONGEST lval;
     struct {
-      LONGEST val;
+      const gdb_mpz *val;
       struct type *type;
     } typed_val;
     struct {
+      LONGEST val;
+      struct type *type;
+    } typed_char;
+    struct {
       gdb_byte val[16];
       struct type *type;
     } typed_val_float;
@@ -301,21 +661,24 @@ typedef union YYSTYPE
     struct internalvar *ivar;
   
 
+#line 665 "ada-exp.c.tmp" /* yacc.c:355  */
+};
 
-/* Line 214 of yacc.c  */
-#line 307 "ada-exp.c.tmp"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
+typedef union ada_exp_YYSTYPE ada_exp_YYSTYPE;
+# define ada_exp_YYSTYPE_IS_TRIVIAL 1
+# define ada_exp_YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern ada_exp_YYSTYPE yylval;
+
+int yyparse (void);
 
 
-/* Line 264 of yacc.c  */
-#line 319 "ada-exp.c.tmp"
+
+/* Copy the second part of user declarations.  */
+
+#line 682 "ada-exp.c.tmp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -329,11 +692,8 @@ typedef unsigned char yytype_uint8;
 
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
 #ifdef YYTYPE_UINT16
@@ -353,8 +713,7 @@ 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 YYSIZE_T
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -365,42 +724,71 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #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
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+#  define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
 # 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__ && 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
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
@@ -417,11 +805,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 +817,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,25 +832,23 @@ 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
@@ -472,97 +858,103 @@ void xfree (void *); /* INFRINGES ON USE
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined ada_exp_YYSTYPE_IS_TRIVIAL && ada_exp_YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
-union yyalloc
+union ada_exp_yyalloc
 {
   yytype_int16 yyss_alloc;
-  YYSTYPE yyvs_alloc;
+  ada_exp_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 (sizeof (union ada_exp_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) * (sizeof (yytype_int16) + sizeof (ada_exp_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                                                                  \
+      {                                                                 \
+        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 (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, (Count) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_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
+#define YYFINAL  60
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   770
+#define YYLAST   852
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  69
+#define YYNTOKENS  77
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  31
+#define YYNNTS  27
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  122
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  233
+#define YYNRULES  127
+/* YYNSTATES -- Number of states.  */
+#define YYNSTATES  251
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   303
+#define YYMAXUTOK   311
 
-#define YYTRANSLATE(YYX)						\
+#define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
 static const yytype_uint8 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,    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,
+       2,     2,     2,     2,     2,     2,     2,     2,    36,    72,
+      65,    71,    38,    34,    73,    35,    64,    39,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,    70,
+      27,    25,    28,     2,    33,     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,    66,     2,    76,     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,    74,    47,    75,     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,543 +969,451 @@ 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,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    60,    61
+      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
+      26,    29,    30,    31,    32,    37,    40,    41,    42,    43,
+      44,    45,    46,    48,    49,    50,    51,    52,    53,    54,
+      55,    56,    57,    58,    59,    60,    61,    62,    63,    67,
+      68,    69
 };
 
 #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.  */
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   185,   185,   189,   190,   192,   197,   201,   206,   212,
-     231,   231,   243,   247,   249,   257,   268,   278,   282,   285,
-     288,   292,   296,   300,   304,   307,   309,   311,   313,   317,
-     330,   334,   338,   342,   346,   350,   354,   358,   362,   366,
-     369,   373,   377,   381,   383,   388,   396,   400,   406,   417,
-     421,   425,   429,   430,   431,   432,   433,   434,   438,   440,
-     445,   447,   452,   454,   459,   461,   465,   467,   479,   481,
-     488,   491,   494,   497,   499,   501,   503,   505,   507,   509,
-     513,   515,   520,   530,   532,   539,   543,   551,   559,   563,
-     569,   571,   575,   579,   581,   583,   591,   602,   604,   609,
-     618,   619,   625,   630,   636,   645,   646,   647,   651,   656,
-     671,   670,   673,   676,   675,   682,   681,   684,   687,   686,
-     694,   696,   698
+       0,   534,   534,   538,   539,   542,   541,   565,   578,   592,
+     594,   609,   621,   623,   631,   642,   648,   652,   659,   670,
+     673,   677,   693,   700,   704,   707,   709,   711,   713,   717,
+     730,   734,   738,   742,   746,   750,   754,   758,   762,   766,
+     769,   773,   777,   781,   783,   790,   798,   801,   809,   820,
+     824,   828,   832,   833,   834,   835,   836,   837,   841,   844,
+     850,   853,   859,   862,   868,   870,   874,   877,   890,   892,
+     894,   898,   904,   910,   916,   918,   920,   922,   924,   926,
+     928,   934,   940,   946,   956,   958,   963,   972,   975,   979,
+     986,   992,  1003,  1011,  1018,  1023,  1030,  1034,  1036,  1042,
+    1044,  1050,  1058,  1069,  1071,  1076,  1085,  1096,  1097,  1103,
+    1108,  1114,  1123,  1124,  1125,  1129,  1136,  1142,  1141,  1176,
+    1182,  1188,  1197,  1202,  1207,  1221,  1223,  1225
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
 /* 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",
+  "TRUEKEYWORD", "FALSEKEYWORD", "WITH", "DELTA", "COLONCOLON", "STRING",
+  "NAME", "DOT_ID", "TICK_COMPLETE", "DOT_COMPLETE", "NAME_COMPLETE",
+  "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_OBJECT_SIZE", "TICK_TAG", "TICK_VAL", "TICK_ENUM_REP",
+  "TICK_ENUM_VAL", "'.'", "'('", "'['", "NEW", "OTHERS", "FOR", "';'",
+  "')'", "'\\''", "','", "'{'", "'}'", "']'", "$accept", "start", "exp1",
+  "$@1", "primary", "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
+  "others", "component_group", "$@2", "component_associations", YY_NULLPTRPTR
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
 static const yytype_uint16 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,
-      43,    45,    38,   281,    42,    47,   282,   283,   284,   285,
-     286,   287,   124,   288,   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
+     275,   276,   277,   278,   279,    61,   280,    60,    62,   281,
+     282,   283,   284,    64,    43,    45,    38,   285,    42,    47,
+     286,   287,   288,   289,   290,   291,   292,   124,   293,   294,
+     295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
+     305,   306,   307,   308,    46,    40,    91,   309,   310,   311,
+      59,    41,    39,    44,   123,   125,    93
 };
 # 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 -110
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 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
-};
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-110)))
 
-/* 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[] =
+#define YYTABLE_NINF -87
+
+#define yytable_value_is_error(Yytable_value) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-      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,
-      84,   100,   105,   106,   109,    92,     0,     1,    84,     7,
-       6,    84,    80,    80,    80,    69,    68,    74,    73,    84,
-      84,    84,    84,    84,    84,    84,    84,    84,    84,    84,
-      84,    84,    84,    84,    84,    84,     0,    84,    84,    84,
-      84,    84,     0,    84,     0,    84,    79,     0,     0,     0,
-       0,    84,    12,    94,   115,   110,    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,
-      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,
-      84,    78,    84,    84,    77,     0,    84,    84,    84,    13,
-      84,    47,    46,     0,     0,    14,     0,   119,   114,    28,
-      75,    76,    11
+     460,  -110,  -110,  -110,  -110,  -110,  -110,  -110,    11,  -110,
+    -110,  -110,   460,   460,   586,   586,   460,   460,   291,    20,
+      13,    16,   -18,    86,   745,   101,  -110,    35,    42,    46,
+      47,    51,   -15,    57,   258,    37,  -110,  -110,  -110,   640,
+     115,   115,    -2,    -2,   115,   115,    10,    34,    90,   -43,
+     682,     6,    33,   291,  -110,  -110,    43,  -110,  -110,    50,
+    -110,   460,  -110,  -110,  -110,  -110,  -110,  -110,    62,    62,
+      62,  -110,  -110,  -110,   333,   460,   460,   460,   460,   460,
+     460,   460,   460,   460,   460,   460,   460,   460,   460,   460,
+     460,   460,    99,   376,   418,   460,   460,   108,   460,   109,
+     460,  -110,    75,    76,    77,    82,    83,    84,   333,    85,
+      18,  -110,   460,   502,   460,   127,  -110,   460,   460,   502,
+     150,  -110,  -110,    88,  -110,   291,   586,  -110,   460,   159,
+    -110,  -110,  -110,    23,   705,   -22,  -110,    89,   810,   810,
+     810,   810,   810,   810,   581,   789,   190,   623,   115,   115,
+     115,   122,   122,   122,   122,   122,   460,   460,  -110,   460,
+    -110,  -110,  -110,   460,  -110,   460,  -110,   460,   460,   460,
+     460,   460,   460,   725,    36,   460,  -110,  -110,  -110,   758,
+    -110,  -110,  -110,   773,  -110,  -110,   291,  -110,  -110,    -2,
+    -110,    95,   460,   460,  -110,   544,  -110,    62,   460,   620,
+     800,   217,  -110,  -110,  -110,  -110,   103,   116,   117,   107,
+     118,   123,   460,  -110,   125,   502,   460,   502,   124,   130,
+    -110,  -110,     3,    71,  -110,  -110,   810,    62,   460,  -110,
+    -110,  -110,   460,   460,  -110,   143,  -110,  -110,  -110,  -110,
+    -110,  -110,   460,  -110,   810,   131,   132,  -110,  -110,  -110,
+    -110
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
-static const yytype_int16 yydefgoto[] =
+  /* 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[] =
 {
-      -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
+      88,    89,    92,    90,    91,    94,    95,    93,    97,    98,
+      16,    18,    88,    88,    88,    88,    88,    88,    88,     0,
+       0,     0,     2,    19,    39,    52,     3,    53,    54,    55,
+      56,    57,    87,     0,    15,     0,    17,   103,   101,    19,
+      21,    20,   126,   125,    23,    22,    97,     0,     0,     0,
+      39,     3,     0,    88,   107,   112,   113,   116,    96,     0,
+       1,    88,     7,    70,     8,     5,    68,    69,    84,    84,
+      84,    74,    75,    76,    88,    88,    88,    88,    88,    88,
+      88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
+      88,    88,     0,    88,    88,    88,    88,     0,    88,     0,
+      88,    83,     0,     0,     0,     0,     0,     0,    88,     0,
+      99,   100,    88,    88,    88,     0,    14,    88,    88,    88,
+       0,   110,   106,   108,   109,    88,    88,     4,    88,     0,
+      71,    72,    73,    97,    39,     0,    25,     0,    40,    41,
+      50,    51,    42,    49,    19,     0,    15,    35,    36,    38,
+      37,    31,    32,    34,    33,    30,    88,    88,    58,    88,
+      62,    66,    59,    88,    63,    88,    67,    88,    88,    88,
+      88,    88,    88,    39,     0,    88,   104,   102,   119,     0,
+     122,   115,   117,     0,   120,   123,    88,   111,   114,    29,
+       6,     0,    88,    88,     9,    88,   127,    84,    88,    19,
+       0,    15,    60,    64,    61,    65,     0,     0,     0,     0,
+       0,     0,    88,    10,     0,    88,    88,    88,     0,     0,
+      85,    26,     0,    97,    27,    44,    43,    84,    88,    80,
+      81,    82,    88,    88,    79,     0,    11,   118,   121,   124,
+     105,    12,    88,    47,    46,     0,     0,    13,    28,    78,
+      77
 };
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -104
-static const yytype_int16 yypact[] =
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
 {
-     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
+    -110,  -110,   171,  -110,    17,     7,    96,   -87,     0,  -110,
+    -110,  -110,  -110,  -110,   -68,  -110,  -110,   -17,  -110,  -110,
+      12,  -110,   -48,  -110,  -110,  -110,  -109
 };
 
-/* 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,    21,    22,   128,    39,    24,   135,    25,   136,    27,
+      28,    29,    30,    31,   130,    32,    33,    34,    35,    36,
+      52,    53,    54,    55,    56,   215,    57
 };
 
-/* 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,
-       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
+      26,   131,   132,    59,   180,   124,   158,   160,   161,   162,
+     185,   164,    62,   166,    64,   120,    60,    23,    51,    40,
+      41,    37,    37,    44,    45,    50,     8,    61,   116,   176,
+       9,    42,    43,    58,    37,    23,    83,    84,    85,    86,
+     101,    87,    88,    89,    90,    91,   102,   103,   104,   194,
+     110,   195,    61,   123,   111,    96,   112,   113,    38,    38,
+      50,   127,    97,    74,    75,   146,   177,    98,    99,   192,
+     202,    38,   203,   100,   241,   137,   204,   188,   205,   121,
+     114,   134,    37,   138,   139,   140,   141,   142,   143,   145,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   144,
+      62,    63,    64,   115,   122,    65,   237,   213,   239,   195,
+     105,   106,   178,   107,   181,   173,   125,   242,   184,    38,
+     179,    93,    94,    95,   183,   126,   179,   129,   190,   225,
+     156,   163,   179,   165,    66,    67,    68,    69,    70,   201,
+     167,   168,   169,   189,    71,    72,    73,   170,   171,   172,
+     175,    74,    75,    87,    88,    89,    90,    91,   182,   243,
+     186,   187,   191,   200,    91,   196,   220,   206,   207,   208,
+     209,   210,   211,   199,   229,   214,    83,    84,    85,    86,
+     232,    87,    88,    89,    90,    91,   218,   230,   231,    49,
+     -45,   233,   221,    50,   234,   224,   236,   121,   219,   -45,
+     222,   240,   249,   250,   174,   226,     0,     0,     0,     0,
+     -45,   -45,   -45,     0,   247,     0,   238,   -48,     0,   235,
+       0,     0,   179,     0,   179,     0,   -48,     0,     0,     0,
+       0,     0,   245,   246,     0,   244,     0,   -48,   -48,   -48,
+       0,     0,   248,   -86,   -86,   -86,   -86,     0,     0,     0,
+       0,   -86,   -86,   -86,     0,   108,     0,     0,     0,     0,
+     -45,   -45,   109,   -45,     0,     0,   -45,     0,     0,     0,
+     -86,   -86,   -86,   -86,     0,     0,     0,     0,   -86,   -86,
+     -86,     0,   108,     0,     0,     0,     0,   -48,   -48,   109,
+     -48,     0,     0,   -48,     1,     2,     3,     4,     5,     6,
+       0,     0,     0,     7,    46,     0,     0,     0,     9,    10,
+       0,   -86,   -86,   -86,   -86,     0,     0,     0,     0,   -86,
+     -86,   -86,     0,   108,    11,    12,    13,    14,     0,    15,
+     109,     0,     0,     0,    16,    17,     1,     2,     3,     4,
+       5,     6,     0,     0,     0,     7,   133,     0,     0,     0,
+       9,    10,     0,     0,     0,     0,    18,     0,    19,    47,
+      48,     0,     0,     0,     0,    20,    11,    12,    13,    14,
+       0,    15,     0,     0,     0,     0,    16,    17,     0,     1,
+       2,     3,     4,     5,     6,     0,     0,     0,     7,     8,
+       0,     0,     0,     9,    10,     0,     0,     0,    18,   157,
+      19,     0,     0,     0,   -24,     0,   -24,    20,     0,    11,
+      12,    13,    14,     0,    15,     0,     0,     0,     0,    16,
+      17,     1,     2,     3,     4,     5,     6,     0,     0,     0,
+       7,     8,     0,     0,     0,     9,    10,     0,     0,     0,
+       0,    18,   159,    19,     0,     0,     0,     0,     0,     0,
+      20,    11,    12,    13,    14,     0,    15,     0,     0,     0,
+       0,    16,    17,     1,     2,     3,     4,     5,     6,     0,
+       0,     0,     7,     8,     0,     0,     0,     9,    10,     0,
+       0,     0,     0,    18,     0,    19,     0,     0,     0,     0,
+       0,     0,    20,    11,    12,    13,    14,     0,    15,     0,
+       0,     0,     0,    16,    17,     1,     2,     3,     4,     5,
+       6,     0,     0,     0,     7,    46,     0,     0,     0,     9,
+      10,     0,     0,     0,     0,    18,     0,    19,     0,     0,
+       0,     0,     0,     0,    20,    11,    12,    13,    14,     0,
+      15,     0,     0,     0,     0,    16,    17,     1,     2,     3,
+       4,     5,     6,     0,     0,     0,     7,   223,     0,     0,
+       0,     9,    10,     0,     0,     0,     0,    18,     0,    19,
+       0,     0,     0,     0,     0,     0,    20,    11,    12,    13,
+      14,     0,    15,     0,     0,     0,     0,    16,    17,     1,
+       2,     3,     4,     5,     6,    62,    63,    64,     7,     8,
+       0,     0,     0,     9,    10,     0,     0,     0,     0,    18,
+       0,    19,     0,     0,     0,     0,     0,     0,    20,    11,
+       0,     0,    14,     0,    15,     0,     0,     0,     0,    66,
+      67,    68,    69,    70,    62,    63,    64,     0,   197,    71,
+      72,    73,     0,     0,     0,     0,    74,    75,     0,     0,
+       0,    18,     0,    19,    62,    63,    64,    84,    85,    86,
+      20,    87,    88,    89,    90,    91,     0,     0,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,   227,    71,    72,
+      73,     0,     0,     0,     0,    74,    75,     0,    66,    67,
+      68,    69,    70,     0,     0,     0,     0,     0,    71,    72,
+      73,     0,     0,     0,     0,    74,    75,    76,    77,    78,
+      79,    80,    81,    82,   117,    83,    84,    85,    86,     0,
+      87,    88,    89,    90,    91,     0,    92,     0,   118,   119,
+      76,    77,    78,    79,    80,    81,    82,   193,    83,    84,
+      85,    86,     0,    87,    88,    89,    90,    91,     0,    92,
+      76,    77,    78,    79,    80,    81,    82,   212,    83,    84,
+      85,    86,     0,    87,    88,    89,    90,    91,     0,    92,
+      76,    77,    78,    79,    80,    81,    82,     0,    83,    84,
+      85,    86,     0,    87,    88,    89,    90,    91,     0,    92,
+     117,    83,    84,    85,    86,     0,    87,    88,    89,    90,
+      91,     0,     0,     0,   118,   119,    83,    84,    85,    86,
+       0,    87,    88,    89,    90,    91,     0,     0,     0,   216,
+     217,   198,    83,    84,    85,    86,     0,    87,    88,    89,
+      90,    91,   228,    83,    84,    85,    86,     0,    87,    88,
+      89,    90,    91,    83,    84,    85,    86,     0,    87,    88,
+      89,    90,    91
 };
 
 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,
-      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,
-       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,
-       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
+       0,    69,    70,    20,   113,    53,    93,    94,    95,    96,
+     119,    98,    14,   100,    16,     9,     0,     0,    18,    12,
+      13,    11,    11,    16,    17,    18,    13,    70,    71,    11,
+      17,    14,    15,    13,    11,    18,    33,    34,    35,    36,
+      55,    38,    39,    40,    41,    42,    61,    62,    63,    71,
+      13,    73,    70,    53,    17,    20,    46,    47,    48,    48,
+      53,    61,    20,    65,    66,    82,    48,    21,    21,    46,
+     157,    48,   159,    22,    71,    75,   163,   125,   165,    73,
+      46,    74,    11,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    82,
+      14,    15,    16,    13,    71,    19,   215,    71,   217,    73,
+      53,    54,   112,    56,   114,   108,    73,    46,   118,    48,
+     113,    20,    21,    22,   117,    75,   119,    65,   128,   197,
+      31,    23,   125,    24,    48,    49,    50,    51,    52,   156,
+      65,    65,    65,   126,    58,    59,    60,    65,    65,    65,
+      65,    65,    66,    38,    39,    40,    41,    42,    31,   227,
+      10,    73,     3,   156,    42,    76,    71,   167,   168,   169,
+     170,   171,   172,   156,    71,   175,    33,    34,    35,    36,
+      73,    38,    39,    40,    41,    42,   186,    71,    71,    18,
+       0,    73,   192,   186,    71,   195,    71,    73,   186,     9,
+     193,    71,    71,    71,   108,   198,    -1,    -1,    -1,    -1,
+      20,    21,    22,    -1,    71,    -1,   216,     0,    -1,   212,
+      -1,    -1,   215,    -1,   217,    -1,     9,    -1,    -1,    -1,
+      -1,    -1,   232,   233,    -1,   228,    -1,    20,    21,    22,
+      -1,    -1,   242,    53,    54,    55,    56,    -1,    -1,    -1,
+      -1,    61,    62,    63,    -1,    65,    -1,    -1,    -1,    -1,
+      70,    71,    72,    73,    -1,    -1,    76,    -1,    -1,    -1,
+      53,    54,    55,    56,    -1,    -1,    -1,    -1,    61,    62,
+      63,    -1,    65,    -1,    -1,    -1,    -1,    70,    71,    72,
+      73,    -1,    -1,    76,     3,     4,     5,     6,     7,     8,
+      -1,    -1,    -1,    12,    13,    -1,    -1,    -1,    17,    18,
+      -1,    53,    54,    55,    56,    -1,    -1,    -1,    -1,    61,
+      62,    63,    -1,    65,    33,    34,    35,    36,    -1,    38,
+      72,    -1,    -1,    -1,    43,    44,     3,     4,     5,     6,
+       7,     8,    -1,    -1,    -1,    12,    13,    -1,    -1,    -1,
+      17,    18,    -1,    -1,    -1,    -1,    65,    -1,    67,    68,
+      69,    -1,    -1,    -1,    -1,    74,    33,    34,    35,    36,
+      -1,    38,    -1,    -1,    -1,    -1,    43,    44,    -1,     3,
+       4,     5,     6,     7,     8,    -1,    -1,    -1,    12,    13,
+      -1,    -1,    -1,    17,    18,    -1,    -1,    -1,    65,    23,
+      67,    -1,    -1,    -1,    71,    -1,    73,    74,    -1,    33,
+      34,    35,    36,    -1,    38,    -1,    -1,    -1,    -1,    43,
+      44,     3,     4,     5,     6,     7,     8,    -1,    -1,    -1,
+      12,    13,    -1,    -1,    -1,    17,    18,    -1,    -1,    -1,
+      -1,    65,    24,    67,    -1,    -1,    -1,    -1,    -1,    -1,
+      74,    33,    34,    35,    36,    -1,    38,    -1,    -1,    -1,
+      -1,    43,    44,     3,     4,     5,     6,     7,     8,    -1,
+      -1,    -1,    12,    13,    -1,    -1,    -1,    17,    18,    -1,
+      -1,    -1,    -1,    65,    -1,    67,    -1,    -1,    -1,    -1,
+      -1,    -1,    74,    33,    34,    35,    36,    -1,    38,    -1,
+      -1,    -1,    -1,    43,    44,     3,     4,     5,     6,     7,
+       8,    -1,    -1,    -1,    12,    13,    -1,    -1,    -1,    17,
+      18,    -1,    -1,    -1,    -1,    65,    -1,    67,    -1,    -1,
+      -1,    -1,    -1,    -1,    74,    33,    34,    35,    36,    -1,
+      38,    -1,    -1,    -1,    -1,    43,    44,     3,     4,     5,
+       6,     7,     8,    -1,    -1,    -1,    12,    13,    -1,    -1,
+      -1,    17,    18,    -1,    -1,    -1,    -1,    65,    -1,    67,
+      -1,    -1,    -1,    -1,    -1,    -1,    74,    33,    34,    35,
+      36,    -1,    38,    -1,    -1,    -1,    -1,    43,    44,     3,
+       4,     5,     6,     7,     8,    14,    15,    16,    12,    13,
+      -1,    -1,    -1,    17,    18,    -1,    -1,    -1,    -1,    65,
+      -1,    67,    -1,    -1,    -1,    -1,    -1,    -1,    74,    33,
+      -1,    -1,    36,    -1,    38,    -1,    -1,    -1,    -1,    48,
+      49,    50,    51,    52,    14,    15,    16,    -1,    57,    58,
+      59,    60,    -1,    -1,    -1,    -1,    65,    66,    -1,    -1,
+      -1,    65,    -1,    67,    14,    15,    16,    34,    35,    36,
+      74,    38,    39,    40,    41,    42,    -1,    -1,    48,    49,
+      50,    51,    52,    -1,    -1,    -1,    -1,    57,    58,    59,
+      60,    -1,    -1,    -1,    -1,    65,    66,    -1,    48,    49,
+      50,    51,    52,    -1,    -1,    -1,    -1,    -1,    58,    59,
+      60,    -1,    -1,    -1,    -1,    65,    66,    25,    26,    27,
+      28,    29,    30,    31,    32,    33,    34,    35,    36,    -1,
+      38,    39,    40,    41,    42,    -1,    44,    -1,    46,    47,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    -1,    38,    39,    40,    41,    42,    -1,    44,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
+      35,    36,    -1,    38,    39,    40,    41,    42,    -1,    44,
+      25,    26,    27,    28,    29,    30,    31,    -1,    33,    34,
+      35,    36,    -1,    38,    39,    40,    41,    42,    -1,    44,
+      32,    33,    34,    35,    36,    -1,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    46,    47,    33,    34,    35,    36,
+      -1,    38,    39,    40,    41,    42,    -1,    -1,    -1,    46,
+      47,    32,    33,    34,    35,    36,    -1,    38,    39,    40,
+      41,    42,    32,    33,    34,    35,    36,    -1,    38,    39,
+      40,    41,    42,    33,    34,    35,    36,    -1,    38,    39,
+      40,    41,    42
 };
 
-/* 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,    10,    11,    14,
-      30,    31,    32,    34,    38,    39,    58,    60,    66,    70,
-      71,    72,    75,    77,    78,    79,    80,    81,    82,    83,
-      85,    86,    87,    88,    89,     9,    48,    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,
-      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,
-      63,    63,    63
+       0,     3,     4,     5,     6,     7,     8,    12,    13,    17,
+      18,    33,    34,    35,    36,    38,    43,    44,    65,    67,
+      74,    78,    79,    81,    82,    84,    85,    86,    87,    88,
+      89,    90,    92,    93,    94,    95,    96,    11,    48,    81,
+      82,    82,    81,    81,    82,    82,    13,    68,    69,    79,
+      82,    85,    97,    98,    99,   100,   101,   103,    13,    94,
+       0,    70,    14,    15,    16,    19,    48,    49,    50,    51,
+      52,    58,    59,    60,    65,    66,    25,    26,    27,    28,
+      29,    30,    31,    33,    34,    35,    36,    38,    39,    40,
+      41,    42,    44,    20,    21,    22,    20,    20,    21,    21,
+      22,    55,    61,    62,    63,    53,    54,    56,    65,    72,
+      13,    17,    46,    47,    46,    13,    71,    32,    46,    47,
+       9,    73,    71,    85,    99,    73,    75,    85,    80,    65,
+      91,    91,    91,    13,    82,    83,    85,    85,    82,    82,
+      82,    82,    82,    82,    81,    82,    94,    82,    82,    82,
+      82,    82,    82,    82,    82,    82,    31,    23,    84,    24,
+      84,    84,    84,    23,    84,    24,    84,    65,    65,    65,
+      65,    65,    65,    82,    83,    65,    11,    48,    85,    82,
+     103,    85,    31,    82,    85,   103,    10,    73,    99,    81,
+      85,     3,    46,    32,    71,    73,    76,    57,    32,    81,
+      82,    94,    84,    84,    84,    84,    85,    85,    85,    85,
+      85,    85,    32,    71,    85,   102,    46,    47,    85,    97,
+      71,    85,    82,    13,    85,    91,    82,    57,    32,    71,
+      71,    71,    73,    73,    71,    82,    71,   103,    85,   103,
+      71,    71,    46,    91,    82,    85,    85,    71,    85,    71,
+      71
 };
 
-#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_uint8 yyr1[] =
+{
+       0,    77,    78,    79,    79,    80,    79,    81,    81,    81,
+      81,    81,    81,    81,    81,    81,    81,    81,    81,    82,
+      82,    82,    82,    82,    83,    83,    83,    83,    83,    81,
+      82,    82,    82,    82,    82,    82,    82,    82,    82,    84,
+      84,    84,    84,    84,    84,    84,    84,    84,    84,    84,
+      84,    84,    85,    85,    85,    85,    85,    85,    86,    86,
+      87,    87,    88,    88,    89,    89,    90,    90,    81,    81,
+      81,    81,    81,    81,    81,    81,    81,    81,    81,    81,
+      81,    81,    81,    81,    91,    91,    92,    93,    93,    81,
+      81,    81,    81,    81,    81,    81,    81,    94,    94,    94,
+      94,    94,    94,    95,    95,    96,    96,    97,    97,    97,
+      98,    98,    99,    99,    99,   100,   101,   102,   101,   103,
+     103,   103,   103,   103,   103,    81,    81,    81
+};
 
-#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_uint8 yyr2[] =
+{
+       0,     2,     1,     1,     3,     0,     4,     2,     2,     4,
+       4,     5,     6,     6,     3,     1,     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,
+       2,     3,     3,     3,     2,     2,     2,     7,     7,     5,
+       5,     5,     5,     2,     0,     3,     1,     1,     0,     1,
+       1,     1,     1,     1,     1,     1,     2,     1,     1,     2,
+       2,     2,     3,     2,     3,     6,     3,     1,     2,     2,
+       2,     3,     1,     1,     3,     3,     1,     0,     5,     3,
+       3,     5,     3,     3,     5,     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 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
 
-#define YYFAIL		goto yyerrlab
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
+#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 (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
-
-
-/* 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
+      YYERROR;                                                  \
+    }                                                           \
+while (0)
+
+/* Error token number */
+#define YYTERROR        1
+#define YYERRCODE       256
 
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
-
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -1123,54 +1423,46 @@ 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))
+# 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
 
-/*--------------------------------.
-| 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 YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Type, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT.  |
+`----------------------------------------*/
+
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyoutput, int yytype, ada_exp_YYSTYPE const * const yyvaluep)
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YYUSE (yytype);
 }
 
 
@@ -1178,22 +1470,11 @@ yy_symbol_value_print (yyoutput, yytype,
 | Print this symbol on YYOUTPUT.  |
 `--------------------------------*/
 
-#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 *yyoutput, int yytype, ada_exp_YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyoutput, "%s %s (",
+             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
   YYFPRINTF (yyoutput, ")");
@@ -1204,16 +1485,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
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1224,49 +1497,42 @@ 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 (yytype_int16 *yyssp, ada_exp_YYSTYPE *yyvsp, int yyrule)
 {
+  unsigned long 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);
+             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,
+                       yystos[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.  */
@@ -1280,7 +1546,7 @@ int yydebug;
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1295,7 +1561,6 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
 
 #if YYERROR_VERBOSE
 
@@ -1304,15 +1569,8 @@ int yydebug;
 #   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++)
@@ -1328,16 +1586,8 @@ yystrlen (yystr)
 #  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;
@@ -1367,27 +1617,27 @@ yytnamerr (char *yyres, const char *yyst
       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;
-	  }
+        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: ;
     }
 
@@ -1398,211 +1648,187 @@ yytnamerr (char *yyres, const char *yyst
 }
 # 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)
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
+
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                yytype_int16 *yyssp, int yytoken)
 {
-  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;
+  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTRPTR, yytname[yytoken]);
+  YYSIZE_T yysize = yysize0;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = YY_NULLPTRPTR;
+  /* Arguments of yyformat. */
+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the "unexpected", one per
+     "expected"). */
+  int yycount = 0;
+
+  /* There are many possibilities here to consider:
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple "syntax error".
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (yytoken != YYEMPTY)
+    {
+      int yyn = yypact[*yyssp];
+      yyarg[yycount++] = yytname[yytoken];
+      if (!yypact_value_is_default (yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          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 yyx;
+
+          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+                && !yytable_value_is_error (yytable[yyx + yyn]))
+              {
+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    yycount = 1;
+                    yysize = yysize0;
+                    break;
+                  }
+                yyarg[yycount++] = yytname[yyx];
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTRPTR, yytname[yyx]);
+                  if (! (yysize <= yysize1
+                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
+              }
+        }
+    }
+
+  switch (yycount)
+    {
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_("syntax error"));
+      YYCASE_(1, YY_("syntax error, unexpected %s"));
+      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
+    }
 
-      if (yysize_overflow)
-	return YYSIZE_MAXIMUM;
+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
 
-      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;
+  if (*yymsg_alloc < yysize)
+    {
+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize <= *yymsg_alloc
+             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
     }
+
+  /* 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 = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+        {
+          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyformat += 2;
+        }
+      else
+        {
+          yyp++;
+          yyformat++;
+        }
+  }
+  return 0;
 }
 #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, int yytype, ada_exp_YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yytype);
+  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;
-
+ada_exp_YYSTYPE yylval;
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
+/*----------.
+| yyparse.  |
+`----------*/
 
-/*-------------------------.
-| 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)
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
     int 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.  */
 
     /* The state stack.  */
@@ -1611,19 +1837,19 @@ yyparse ()
     yytype_int16 *yyssp;
 
     /* The semantic value stack.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
+    ada_exp_YYSTYPE yyvsa[YYINITDEPTH];
+    ada_exp_YYSTYPE *yyvs;
+    ada_exp_YYSTYPE *yyvsp;
 
     YYSIZE_T yystacksize;
 
   int yyn;
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  int yytoken = 0;
   /* The variables used to return semantic value and location from the
      action routines.  */
-  YYSTYPE yyval;
+  ada_exp_YYSTYPE yyval;
 
 #if YYERROR_VERBOSE
   /* Buffer for error messages, and its allocated size.  */
@@ -1638,9 +1864,8 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
   yystacksize = YYINITDEPTH;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
@@ -1649,14 +1874,6 @@ yyparse ()
   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;
 
 /*------------------------------------------------------------.
@@ -1677,23 +1894,23 @@ yyparse ()
 
 #ifdef 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);
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        ada_exp_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;
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
@@ -1701,22 +1918,22 @@ yyparse ()
 # else
       /* 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);
+        yytype_int16 *yyss1 = yyss;
+        union ada_exp_yyalloc *yyptr =
+          (union ada_exp_yyalloc *) YYSTACK_ALLOC (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 */
@@ -1725,10 +1942,10 @@ yyparse ()
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+                  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -1748,7 +1965,7 @@ yybackup:
 
   /* 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.  */
@@ -1757,7 +1974,7 @@ yybackup:
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
@@ -1779,8 +1996,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;
     }
@@ -1797,7 +2014,9 @@ yybackup:
   yychar = YYEMPTY;
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
 
@@ -1820,7 +2039,7 @@ yyreduce:
   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
@@ -1834,900 +2053,1003 @@ yyreduce:
   switch (yyn)
     {
         case 4:
-
-/* Line 1455 of yacc.c  */
-#line 191 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+#line 540 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<comma_operation> (BINOP_COMMA); }
+#line 2060 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 5:
-
-/* Line 1455 of yacc.c  */
-#line 193 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 542 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  ada_parser->assignments.emplace_back
+			    (new ada_assign_operation (ada_pop (), nullptr));
+			}
+#line 2069 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 6:
+#line 547 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  ada_assign_up assign
+			    = std::move (ada_parser->assignments.back ());
+			  ada_parser->assignments.pop_back ();
+			  value *lhs_val = (assign->eval_for_resolution
+					    (pstate->expout.get ()));
+
+			  operation_up rhs = pstate->pop ();
+			  rhs = resolve (std::move (rhs), true,
+					 lhs_val->type ());
 
-/* Line 1455 of yacc.c  */
-#line 198 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+			  assign->set_rhs (std::move (rhs));
+			  pstate->push (std::move (assign));
+			}
+#line 2088 "ada-exp.c.tmp" /* yacc.c:1646  */
     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)); }
+#line 566 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  if (strcmp ((yyvsp[0].sval).ptr, "all") == 0)
+			    ada_wrap<ada_unop_ind_operation> ();
+			  else
+			    {
+			      operation_up arg = ada_pop ();
+			      pstate->push_new<ada_structop_operation>
+				(std::move (arg), copy_name ((yyvsp[0].sval)));
+			    }
+			}
+#line 2103 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 8:
-
-/* Line 1455 of yacc.c  */
-#line 207 "ada-exp.y"
+#line 579 "ada-exp.y" /* yacc.c:1646  */
     {
-			  write_exp_elt_opcode (pstate, OP_FUNCALL);
-			  write_exp_elt_longcst (pstate, (yyvsp[(3) - (4)].lval));
-			  write_exp_elt_opcode (pstate, OP_FUNCALL);
-		        }
+			  /* This is done even for ".all", because
+			     that might be a prefix.  */
+			  operation_up arg = ada_pop ();
+			  ada_structop_operation *str_op
+			    = (new ada_structop_operation
+			       (std::move (arg), copy_name ((yyvsp[0].sval))));
+			  str_op->set_prefix (ada_parser->find_completion_bounds ());
+			  pstate->push (operation_up (str_op));
+			  pstate->mark_struct_expression (str_op);
+			}
+#line 2119 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 9:
+#line 593 "ada-exp.y" /* yacc.c:1646  */
+    { ada_funcall ((yyvsp[-1].lval)); }
+#line 2125 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 213 "ada-exp.y"
+  case 10:
+#line 595 "ada-exp.y" /* yacc.c:1646  */
     {
-			  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_opcode (pstate, UNOP_CAST);
+			      operation_up arg = ada_pop ();
+			      pstate->push_new<unop_cast_operation>
+				(std::move (arg), (yyvsp[-3].tval));
 			    }
 			  else
-			    {
-			      write_exp_elt_opcode (pstate, OP_FUNCALL);
-			      write_exp_elt_longcst (pstate, (yyvsp[(3) - (4)].lval));
-			      write_exp_elt_opcode (pstate, OP_FUNCALL);
-			    }
+			    ada_funcall ((yyvsp[-1].lval));
 			}
-    break;
-
-  case 10:
-
-/* Line 1455 of yacc.c  */
-#line 231 "ada-exp.y"
-    { type_qualifier = (yyvsp[(1) - (3)].tval); }
+#line 2142 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
-#line 233 "ada-exp.y"
+#line 610 "ada-exp.y" /* yacc.c:1646  */
     {
-			  if ((yyvsp[(1) - (7)].tval) == NULL)
+			  if ((yyvsp[-4].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_opcode (pstate, UNOP_QUAL);
-			  type_qualifier = (yyvsp[(3) - (7)].tval);
+			  operation_up arg = ada_pop (true,
+						      check_typedef ((yyvsp[-4].tval)));
+			  pstate->push_new<ada_qual_operation>
+			    (std::move (arg), (yyvsp[-4].tval));
 			}
+#line 2155 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
-#line 243 "ada-exp.y"
-    { (yyval.tval) = type_qualifier; }
+#line 622 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap3<ada_ternop_slice_operation> (); }
+#line 2161 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
-#line 248 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_SLICE); }
-    break;
-
-  case 14:
-
-/* Line 1455 of yacc.c  */
-#line 250 "ada-exp.y"
-    { if ((yyvsp[(1) - (6)].tval) == NULL) 
-                            write_exp_elt_opcode (pstate, TERNOP_SLICE);
+#line 624 "ada-exp.y" /* yacc.c:1646  */
+    { if ((yyvsp[-5].tval) == NULL) 
+			    ada_wrap3<ada_ternop_slice_operation> ();
 			  else
 			    error (_("Cannot slice a type"));
 			}
+#line 2171 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 15:
-
-/* Line 1455 of yacc.c  */
-#line 257 "ada-exp.y"
+  case 14:
+#line 631 "ada-exp.y" /* yacc.c:1646  */
     { }
+#line 2177 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 16:
-
-/* Line 1455 of yacc.c  */
-#line 269 "ada-exp.y"
-    { if ((yyvsp[(1) - (1)].tval) != NULL)
-			    {
-			      write_exp_elt_opcode (pstate, OP_TYPE);
-			      write_exp_elt_type (pstate, (yyvsp[(1) - (1)].tval));
-			      write_exp_elt_opcode (pstate, OP_TYPE);
-			    }
+  case 15:
+#line 643 "ada-exp.y" /* yacc.c:1646  */
+    { if ((yyvsp[0].tval) != NULL)
+			    pstate->push_new<type_operation> ((yyvsp[0].tval));
 			}
+#line 2185 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 16:
+#line 649 "ada-exp.y" /* yacc.c:1646  */
+    { pstate->push_dollar ((yyvsp[0].sval)); }
+#line 2191 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 17:
+#line 653 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<ada_aggregate_operation>
+			    (pop_component ());
+			}
+#line 2200 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 279 "ada-exp.y"
-    { write_dollar_variable (pstate, (yyvsp[(1) - (1)].sval)); }
+  case 18:
+#line 660 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  if (ada_parser->assignments.empty ())
+			    error (_("the target name symbol ('@') may only "
+				     "appear in an assignment context"));
+			  ada_assign_operation *current
+			    = ada_parser->assignments.back ().get ();
+			  pstate->push_new<ada_target_operation> (current);
+			}
+#line 2213 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 20:
-
-/* Line 1455 of yacc.c  */
-#line 289 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 674 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap_overload<ada_neg_operation> (UNOP_NEG); }
+#line 2219 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 21:
+#line 678 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up arg = ada_pop ();
+			  operation_up empty;
 
-/* Line 1455 of yacc.c  */
-#line 293 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+			  /* If an overloaded operator was found, use
+			     it.  Otherwise, unary + has no effect and
+			     the argument can be pushed instead.  */
+			  operation_up call = maybe_overload (UNOP_PLUS, arg,
+							      empty);
+			  if (call != nullptr)
+			    arg = std::move (call);
+			  pstate->push (std::move (arg));
+			}
+#line 2237 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 22:
-
-/* Line 1455 of yacc.c  */
-#line 297 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 694 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  ada_wrap_overload<unary_logical_not_operation>
+			    (UNOP_LOGICAL_NOT);
+			}
+#line 2246 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 23:
-
-/* Line 1455 of yacc.c  */
-#line 301 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ABS); }
+#line 701 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap_overload<ada_abs_operation> (UNOP_ABS); }
+#line 2252 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 24:
-
-/* Line 1455 of yacc.c  */
-#line 304 "ada-exp.y"
+#line 704 "ada-exp.y" /* yacc.c:1646  */
     { (yyval.lval) = 0; }
+#line 2258 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
-#line 308 "ada-exp.y"
+#line 708 "ada-exp.y" /* yacc.c:1646  */
     { (yyval.lval) = 1; }
+#line 2264 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
-#line 310 "ada-exp.y"
+#line 710 "ada-exp.y" /* yacc.c:1646  */
     { (yyval.lval) = 1; }
+#line 2270 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 27:
-
-/* Line 1455 of yacc.c  */
-#line 312 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(1) - (3)].lval) + 1; }
+#line 712 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = (yyvsp[-2].lval) + 1; }
+#line 2276 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
-#line 314 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(1) - (5)].lval) + 1; }
+#line 714 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = (yyvsp[-4].lval) + 1; }
+#line 2282 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
-#line 319 "ada-exp.y"
+#line 719 "ada-exp.y" /* yacc.c:1646  */
     { 
-			  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_opcode (pstate, UNOP_MEMVAL);
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<unop_memval_operation>
+			    (std::move (arg), (yyvsp[-2].tval));
 			}
+#line 2294 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
-#line 331 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EXP); }
+#line 731 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<ada_binop_exp_operation> (BINOP_EXP); }
+#line 2300 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 31:
-
-/* Line 1455 of yacc.c  */
-#line 335 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 735 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<ada_binop_mul_operation> (BINOP_MUL); }
+#line 2306 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
-#line 339 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 739 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<ada_binop_div_operation> (BINOP_DIV); }
+#line 2312 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
-#line 343 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 743 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<ada_binop_rem_operation> (BINOP_REM); }
+#line 2318 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 34:
-
-/* Line 1455 of yacc.c  */
-#line 347 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MOD); }
+#line 747 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<ada_binop_mod_operation> (BINOP_MOD); }
+#line 2324 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
-#line 351 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 751 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<repeat_operation> (BINOP_REPEAT); }
+#line 2330 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
-#line 355 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 755 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap_op<ada_binop_addsub_operation> (BINOP_ADD); }
+#line 2336 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
-#line 359 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_CONCAT); }
+#line 759 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<ada_concat_operation> (BINOP_CONCAT); }
+#line 2342 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
-#line 363 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 763 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap_op<ada_binop_addsub_operation> (BINOP_SUB); }
+#line 2348 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
-#line 370 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 770 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap_op<ada_binop_equal_operation> (BINOP_EQUAL); }
+#line 2354 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
-#line 374 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 774 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap_op<ada_binop_equal_operation> (BINOP_NOTEQUAL); }
+#line 2360 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
-#line 378 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 778 "ada-exp.y" /* yacc.c:1646  */
+    { ada_un_wrap2<leq_operation> (BINOP_LEQ); }
+#line 2366 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
-#line 382 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_IN_RANGE); }
+#line 782 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap3<ada_ternop_range_operation> (); }
+#line 2372 "ada-exp.c.tmp" /* yacc.c:1646  */
     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);
+#line 784 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up rhs = ada_pop ();
+			  operation_up lhs = ada_pop ();
+			  pstate->push_new<ada_binop_in_bounds_operation>
+			    (std::move (lhs), std::move (rhs), (yyvsp[0].lval));
 			}
+#line 2383 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
-#line 389 "ada-exp.y"
+#line 791 "ada-exp.y" /* yacc.c:1646  */
     { 
-			  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_opcode (pstate, UNOP_IN_RANGE);
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_range_operation>
+			    (std::move (arg), (yyvsp[0].tval));
 			}
+#line 2395 "ada-exp.c.tmp" /* yacc.c:1646  */
     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, UNOP_LOGICAL_NOT);
-			}
+#line 799 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap3<ada_ternop_range_operation> ();
+			  ada_wrap<unary_logical_not_operation> (); }
+#line 2402 "ada-exp.c.tmp" /* yacc.c:1646  */
     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_opcode (pstate, UNOP_LOGICAL_NOT);
+#line 802 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up rhs = ada_pop ();
+			  operation_up lhs = ada_pop ();
+			  pstate->push_new<ada_binop_in_bounds_operation>
+			    (std::move (lhs), std::move (rhs), (yyvsp[0].lval));
+			  ada_wrap<unary_logical_not_operation> ();
 			}
+#line 2414 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 48:
-
-/* Line 1455 of yacc.c  */
-#line 407 "ada-exp.y"
+#line 810 "ada-exp.y" /* yacc.c:1646  */
     { 
-			  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_opcode (pstate, UNOP_IN_RANGE);
-		          write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT);
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_range_operation>
+			    (std::move (arg), (yyvsp[0].tval));
+			  ada_wrap<unary_logical_not_operation> ();
 			}
+#line 2427 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 49:
-
-/* Line 1455 of yacc.c  */
-#line 418 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 821 "ada-exp.y" /* yacc.c:1646  */
+    { ada_un_wrap2<geq_operation> (BINOP_GEQ); }
+#line 2433 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
-#line 422 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 825 "ada-exp.y" /* yacc.c:1646  */
+    { ada_un_wrap2<less_operation> (BINOP_LESS); }
+#line 2439 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
-#line 426 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 829 "ada-exp.y" /* yacc.c:1646  */
+    { ada_un_wrap2<gtr_operation> (BINOP_GTR); }
+#line 2445 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
-#line 439 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 842 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<bitwise_and_operation>
+			    (BINOP_BITWISE_AND); }
+#line 2452 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 59:
-
-/* Line 1455 of yacc.c  */
-#line 441 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 845 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<bitwise_and_operation>
+			    (BINOP_BITWISE_AND); }
+#line 2459 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
-#line 446 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 851 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<logical_and_operation>
+			    (BINOP_LOGICAL_AND); }
+#line 2466 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
-#line 448 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 854 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<logical_and_operation>
+			    (BINOP_LOGICAL_AND); }
+#line 2473 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
-#line 453 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 860 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<bitwise_ior_operation>
+			    (BINOP_BITWISE_IOR); }
+#line 2480 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
-#line 455 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 863 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<bitwise_ior_operation>
+			    (BINOP_BITWISE_IOR); }
+#line 2487 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 64:
-
-/* Line 1455 of yacc.c  */
-#line 460 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 869 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<logical_or_operation> (BINOP_LOGICAL_OR); }
+#line 2493 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 65:
-
-/* Line 1455 of yacc.c  */
-#line 462 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 871 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<logical_or_operation> (BINOP_LOGICAL_OR); }
+#line 2499 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 66:
-
-/* Line 1455 of yacc.c  */
-#line 466 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 875 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<bitwise_xor_operation>
+			    (BINOP_BITWISE_XOR); }
+#line 2506 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
-#line 468 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 878 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<bitwise_xor_operation>
+			    (BINOP_BITWISE_XOR); }
+#line 2513 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
-#line 480 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 891 "ada-exp.y" /* yacc.c:1646  */
+    { ada_addrof (); }
+#line 2519 "ada-exp.c.tmp" /* yacc.c:1646  */
     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_CAST);
-			  write_exp_elt_type (pstate,
-					      type_system_address (pstate));
-			  write_exp_elt_opcode (pstate, UNOP_CAST);
-			}
+#line 893 "ada-exp.y" /* yacc.c:1646  */
+    { ada_addrof (type_system_address (pstate)); }
+#line 2525 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
-#line 489 "ada-exp.y"
-    { write_int (pstate, (yyvsp[(3) - (3)].lval), type_int (pstate));
-			  write_exp_elt_opcode (pstate, OP_ATR_FIRST); }
+#line 895 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->mark_completion (make_tick_completer ((yyvsp[0].sval)));
+			}
+#line 2533 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
-#line 492 "ada-exp.y"
-    { write_int (pstate, (yyvsp[(3) - (3)].lval), type_int (pstate));
-			  write_exp_elt_opcode (pstate, OP_ATR_LAST); }
+#line 899 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_atr_operation>
+			    (std::move (arg), OP_ATR_FIRST, (yyvsp[0].lval));
+			}
+#line 2543 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
-#line 495 "ada-exp.y"
-    { write_int (pstate, (yyvsp[(3) - (3)].lval), type_int (pstate));
-			  write_exp_elt_opcode (pstate, OP_ATR_LENGTH); }
+#line 905 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_atr_operation>
+			    (std::move (arg), OP_ATR_LAST, (yyvsp[0].lval));
+			}
+#line 2553 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
-#line 498 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_SIZE); }
+#line 911 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_atr_operation>
+			    (std::move (arg), OP_ATR_LENGTH, (yyvsp[0].lval));
+			}
+#line 2563 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
-#line 500 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_TAG); }
+#line 917 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap<ada_atr_size_operation> (true); }
+#line 2569 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
-#line 502 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_MIN); }
+#line 919 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap<ada_atr_size_operation> (false); }
+#line 2575 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
-#line 504 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_MAX); }
+#line 921 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap<ada_atr_tag_operation> (); }
+#line 2581 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
-#line 506 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_POS); }
+#line 923 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<ada_binop_min_operation> (BINOP_MIN); }
+#line 2587 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
-#line 508 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_VAL); }
+#line 925 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap2<ada_binop_max_operation> (BINOP_MAX); }
+#line 2593 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 79:
-
-/* Line 1455 of yacc.c  */
-#line 510 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_ATR_MODULUS); }
+#line 927 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap<ada_pos_operation> (); }
+#line 2599 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
-#line 514 "ada-exp.y"
-    { (yyval.lval) = 1; }
+#line 929 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_atr_val_operation>
+			    ((yyvsp[-4].tval), std::move (arg));
+			}
+#line 2609 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
-#line 516 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(2) - (3)].typed_val).val; }
+#line 935 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up arg = ada_pop (true, (yyvsp[-4].tval));
+			  pstate->push_new<ada_atr_enum_rep_operation>
+			    ((yyvsp[-4].tval), std::move (arg));
+			}
+#line 2619 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 82:
+#line 941 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up arg = ada_pop (true, (yyvsp[-4].tval));
+			  pstate->push_new<ada_atr_enum_val_operation>
+			    ((yyvsp[-4].tval), std::move (arg));
+			}
+#line 2629 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 521 "ada-exp.y"
-    { 
-			  if ((yyvsp[(1) - (1)].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_opcode (pstate, OP_TYPE); }
+  case 83:
+#line 947 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  struct type *type_arg = check_typedef ((yyvsp[-1].tval));
+			  if (!ada_is_modular_type (type_arg))
+			    error (_("'modulus must be applied to modular type"));
+			  write_int (pstate, ada_modulus (type_arg),
+				     type_arg->target_type ());
+			}
+#line 2641 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
-#line 532 "ada-exp.y"
-    { 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 957 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = 1; }
+#line 2647 "ada-exp.c.tmp" /* yacc.c:1646  */
     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); }
+#line 959 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = (yyvsp[-1].typed_val).val->as_integer<LONGEST> (); }
+#line 2653 "ada-exp.c.tmp" /* yacc.c:1646  */
     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),
-			       (type_qualifier == NULL) 
-			       ? (yyvsp[(1) - (1)].typed_val).type : type_qualifier);
-		  }
+#line 964 "ada-exp.y" /* yacc.c:1646  */
+    { 
+			  if ((yyvsp[0].tval) == NULL)
+			    error (_("Prefix must be type"));
+			  (yyval.tval) = (yyvsp[0].tval);
+			}
+#line 2663 "ada-exp.c.tmp" /* yacc.c:1646  */
     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);
-			}
+#line 973 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = (yyvsp[0].tval); }
+#line 2669 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 88:
-
-/* Line 1455 of yacc.c  */
-#line 560 "ada-exp.y"
-    { write_int (pstate, 0, type_int (pstate)); }
+#line 975 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = parse_type (pstate)->builtin_void; }
+#line 2675 "ada-exp.c.tmp" /* yacc.c:1646  */
     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));
+#line 980 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<long_const_operation> ((yyvsp[0].typed_val).type, *(yyvsp[0].typed_val).val);
+			  ada_wrap<ada_wrapped_operation> ();
 			}
+#line 2684 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
-#line 570 "ada-exp.y"
-    { write_int (pstate, 1, type_boolean (pstate)); }
+#line 987 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<ada_char_operation> ((yyvsp[0].typed_char).type, (yyvsp[0].typed_char).val);
+			}
+#line 2692 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
-#line 572 "ada-exp.y"
-    { write_int (pstate, 0, type_boolean (pstate)); }
+#line 993 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  float_data data;
+			  std::copy (std::begin ((yyvsp[0].typed_val_float).val), std::end ((yyvsp[0].typed_val_float).val),
+				     std::begin (data));
+			  pstate->push_new<float_const_operation>
+			    ((yyvsp[0].typed_val_float).type, data);
+			  ada_wrap<ada_wrapped_operation> ();
+			}
+#line 2705 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
-#line 576 "ada-exp.y"
-    { error (_("NEW not implemented.")); }
+#line 1004 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  struct type *null_ptr_type
+			    = lookup_pointer_type (parse_type (pstate)->builtin_int0);
+			  write_int (pstate, 0, null_ptr_type);
+			}
+#line 2715 "ada-exp.c.tmp" /* yacc.c:1646  */
     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)); }
+#line 1012 "ada-exp.y" /* yacc.c:1646  */
+    { 
+			  pstate->push_new<ada_string_operation>
+			    (copy_name ((yyvsp[0].sval)));
+			}
+#line 2724 "ada-exp.c.tmp" /* yacc.c:1646  */
     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)); }
+#line 1019 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  write_int (pstate, 1,
+				     parse_type (pstate)->builtin_bool);
+			}
+#line 2733 "ada-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  if ((yyval.tval) == NULL)
-			    write_exp_elt_opcode (pstate, UNOP_ADDR);
-			  else
-			    (yyval.tval) = lookup_pointer_type ((yyval.tval));
+#line 1024 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  write_int (pstate, 0,
+				     parse_type (pstate)->builtin_bool);
 			}
+#line 2742 "ada-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  if ((yyval.tval) == NULL)
-			    write_exp_elt_opcode (pstate, UNOP_ADDR);
-			  else
-			    (yyval.tval) = lookup_pointer_type ((yyval.tval));
-			}
+#line 1031 "ada-exp.y" /* yacc.c:1646  */
+    { error (_("NEW not implemented.")); }
+#line 2748 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 97:
-
-/* Line 1455 of yacc.c  */
-#line 603 "ada-exp.y"
-    { (yyval.bval) = block_lookup (NULL, (yyvsp[(1) - (2)].sval).ptr); }
+#line 1035 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = write_var_or_type (pstate, NULL, (yyvsp[0].sval)); }
+#line 2754 "ada-exp.c.tmp" /* yacc.c:1646  */
     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); }
+#line 1037 "ada-exp.y" /* yacc.c:1646  */
+    {
+				  (yyval.tval) = write_var_or_type_completion (pstate,
+								     NULL,
+								     (yyvsp[0].sval));
+				}
+#line 2764 "ada-exp.c.tmp" /* yacc.c:1646  */
     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_opcode (pstate, OP_AGGREGATE);
-		        }
+#line 1043 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = write_var_or_type (pstate, (yyvsp[-1].bval), (yyvsp[0].sval)); }
+#line 2770 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 100:
-
-/* Line 1455 of yacc.c  */
-#line 618 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(1) - (1)].lval); }
+#line 1045 "ada-exp.y" /* yacc.c:1646  */
+    {
+				  (yyval.tval) = write_var_or_type_completion (pstate,
+								     (yyvsp[-1].bval),
+								     (yyvsp[0].sval));
+				}
+#line 2780 "ada-exp.c.tmp" /* yacc.c:1646  */
     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);
-			  (yyval.lval) = (yyvsp[(1) - (2)].lval) + 1;
+#line 1051 "ada-exp.y" /* yacc.c:1646  */
+    { 
+			  (yyval.tval) = write_var_or_type (pstate, NULL, (yyvsp[-1].sval));
+			  if ((yyval.tval) == NULL)
+			    ada_addrof ();
+			  else
+			    (yyval.tval) = lookup_pointer_type ((yyval.tval));
 			}
+#line 2792 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 102:
-
-/* Line 1455 of yacc.c  */
-#line 626 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(1) - (2)].lval) + (yyvsp[(2) - (2)].lval); }
+#line 1059 "ada-exp.y" /* yacc.c:1646  */
+    { 
+			  (yyval.tval) = write_var_or_type (pstate, (yyvsp[-2].bval), (yyvsp[-1].sval));
+			  if ((yyval.tval) == NULL)
+			    ada_addrof ();
+			  else
+			    (yyval.tval) = lookup_pointer_type ((yyval.tval));
+			}
+#line 2804 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 103:
-
-/* Line 1455 of yacc.c  */
-#line 631 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  write_exp_elt_longcst (pstate, 0);
-			  write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  (yyval.lval) = 1;
-			}
+#line 1070 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.bval) = block_lookup (NULL, (yyvsp[-1].sval).ptr); }
+#line 2810 "ada-exp.c.tmp" /* yacc.c:1646  */
     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);
-			  (yyval.lval) = (yyvsp[(1) - (3)].lval) + 1; 
-			}
+#line 1072 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.bval) = block_lookup ((yyvsp[-2].bval), (yyvsp[-1].sval).ptr); }
+#line 2816 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 105:
+#line 1077 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  std::vector<ada_component_up> components
+			    = pop_components ((yyvsp[-1].lval));
+			  operation_up base = ada_pop ();
 
-/* Line 1455 of yacc.c  */
-#line 645 "ada-exp.y"
-    { (yyval.lval) = 1; }
+			  push_component<ada_aggregate_component>
+			    (std::move (base), std::move (components));
+			}
+#line 2829 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 106:
+#line 1086 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  std::vector<ada_component_up> components
+			    = pop_components ((yyvsp[-1].lval));
 
-/* Line 1455 of yacc.c  */
-#line 646 "ada-exp.y"
-    { (yyval.lval) = 1; }
+			  push_component<ada_aggregate_component>
+			    (std::move (components));
+			}
+#line 2841 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 107:
-
-/* Line 1455 of yacc.c  */
-#line 648 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(3) - (3)].lval) + 1; }
+#line 1096 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = (yyvsp[0].lval); }
+#line 2847 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 108:
-
-/* Line 1455 of yacc.c  */
-#line 652 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OTHERS); }
+#line 1098 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  push_component<ada_positional_component>
+			    ((yyvsp[-1].lval), ada_pop ());
+			  (yyval.lval) = (yyvsp[-1].lval) + 1;
+			}
+#line 2857 "ada-exp.c.tmp" /* yacc.c:1646  */
     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_opcode (pstate, OP_CHOICES);
-		        }
+#line 1104 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = (yyvsp[-1].lval) + (yyvsp[0].lval); }
+#line 2863 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 110:
-
-/* Line 1455 of yacc.c  */
-#line 671 "ada-exp.y"
-    { write_name_assoc (pstate, (yyvsp[(1) - (2)].sval)); }
+#line 1109 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  push_component<ada_positional_component>
+			    (0, ada_pop ());
+			  (yyval.lval) = 1;
+			}
+#line 2873 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 111:
-
-/* Line 1455 of yacc.c  */
-#line 672 "ada-exp.y"
-    { (yyval.lval) = 1; }
+#line 1115 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  push_component<ada_positional_component>
+			    ((yyvsp[-2].lval), ada_pop ());
+			  (yyval.lval) = (yyvsp[-2].lval) + 1; 
+			}
+#line 2883 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 112:
-
-/* Line 1455 of yacc.c  */
-#line 674 "ada-exp.y"
+#line 1123 "ada-exp.y" /* yacc.c:1646  */
     { (yyval.lval) = 1; }
+#line 2889 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 113:
-
-/* Line 1455 of yacc.c  */
-#line 676 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_DISCRETE_RANGE);
-			  write_exp_op_with_string (pstate, OP_NAME,
-						    empty_stoken);
-			}
+#line 1124 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = 1; }
+#line 2895 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 114:
-
-/* Line 1455 of yacc.c  */
-#line 680 "ada-exp.y"
-    { (yyval.lval) = 1; }
+#line 1126 "ada-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = (yyvsp[0].lval) + 1; }
+#line 2901 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 115:
-
-/* Line 1455 of yacc.c  */
-#line 682 "ada-exp.y"
-    { write_name_assoc (pstate, (yyvsp[(1) - (2)].sval)); }
+#line 1130 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  push_component<ada_others_component> (ada_pop ());
+			}
+#line 2909 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 116:
-
-/* Line 1455 of yacc.c  */
-#line 683 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(4) - (4)].lval) + 1; }
+#line 1137 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  ada_choices_component *choices = choice_component ();
+			  choices->set_associations (pop_associations ((yyvsp[0].lval)));
+			}
+#line 2918 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 117:
+#line 1142 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  std::string name = copy_name ((yyvsp[-1].sval));
+
+			  auto iter = ada_parser->iterated_associations.find (name);
+			  if (iter != ada_parser->iterated_associations.end ())
+			    error (_("Nested use of index parameter '%s'"),
+				   name.c_str ());
 
-/* Line 1455 of yacc.c  */
-#line 685 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(3) - (3)].lval) + 1; }
+			  ada_parser->iterated_associations[name] = {};
+			}
+#line 2933 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 118:
+#line 1153 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  std::string name = copy_name ((yyvsp[-3].sval));
 
-/* Line 1455 of yacc.c  */
-#line 687 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, OP_DISCRETE_RANGE); }
+			  ada_choices_component *choices = choice_component ();
+			  choices->set_associations (pop_associations ((yyvsp[0].lval)));
+
+			  auto iter = ada_parser->iterated_associations.find (name);
+			  gdb_assert (iter != ada_parser->iterated_associations.end ());
+			  for (ada_index_var_operation *var : iter->second)
+			    var->set_choices (choices);
+
+			  ada_parser->iterated_associations.erase (name);
+
+			  choices->set_name (std::move (name));
+			}
+#line 2953 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 119:
-
-/* Line 1455 of yacc.c  */
-#line 688 "ada-exp.y"
-    { (yyval.lval) = (yyvsp[(6) - (6)].lval) + 1; }
+#line 1177 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  push_component<ada_choices_component> (ada_pop ());
+			  write_name_assoc (pstate, (yyvsp[-2].sval));
+			  (yyval.lval) = 1;
+			}
+#line 2963 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 120:
-
-/* Line 1455 of yacc.c  */
-#line 695 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 1183 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  push_component<ada_choices_component> (ada_pop ());
+			  push_association<ada_name_association> (ada_pop ());
+			  (yyval.lval) = 1;
+			}
+#line 2973 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 121:
-
-/* Line 1455 of yacc.c  */
-#line 697 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 1189 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  push_component<ada_choices_component> (ada_pop ());
+			  operation_up rhs = ada_pop ();
+			  operation_up lhs = ada_pop ();
+			  push_association<ada_discrete_range_association>
+			    (std::move (lhs), std::move (rhs));
+			  (yyval.lval) = 1;
+			}
+#line 2986 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 122:
+#line 1198 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  write_name_assoc (pstate, (yyvsp[-2].sval));
+			  (yyval.lval) = (yyvsp[0].lval) + 1;
+			}
+#line 2995 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 699 "ada-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+  case 123:
+#line 1203 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  push_association<ada_name_association> (ada_pop ());
+			  (yyval.lval) = (yyvsp[0].lval) + 1;
+			}
+#line 3004 "ada-exp.c.tmp" /* yacc.c:1646  */
     break;
 
+  case 124:
+#line 1209 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up rhs = ada_pop ();
+			  operation_up lhs = ada_pop ();
+			  push_association<ada_discrete_range_association>
+			    (std::move (lhs), std::move (rhs));
+			  (yyval.lval) = (yyvsp[0].lval) + 1;
+			}
+#line 3016 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
+  case 125:
+#line 1222 "ada-exp.y" /* yacc.c:1646  */
+    { ada_wrap<ada_unop_ind_operation> (); }
+#line 3022 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 2730 "ada-exp.c.tmp"
+  case 126:
+#line 1224 "ada-exp.y" /* yacc.c:1646  */
+    { ada_addrof (); }
+#line 3028 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 127:
+#line 1226 "ada-exp.y" /* yacc.c:1646  */
+    {
+			  ada_wrap2<subscript_operation> (BINOP_SUBSCRIPT);
+			  ada_wrap<ada_wrapped_operation> ();
+			}
+#line 3037 "ada-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+
+#line 3041 "ada-exp.c.tmp" /* yacc.c:1646  */
       default: break;
     }
+  /* 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 ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
@@ -2736,7 +3058,7 @@ yyreduce:
 
   *++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.  */
 
@@ -2751,10 +3073,14 @@ yyreduce:
   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 ? YYEMPTY : YYTRANSLATE (yychar);
+
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
@@ -2762,37 +3088,36 @@ yyerrlab:
 #if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
 #else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+                                        yyssp, yytoken)
       {
-	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;
-	  }
+        char const *yymsgp = YY_("syntax error");
+        int yysyntax_error_status;
+        yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 1)
+          {
+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = 2;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
+          }
+        yyerror (yymsgp);
+        if (yysyntax_error_status == 2)
+          goto yyexhaustedlab;
       }
+# undef YYSYNTAX_ERROR
 #endif
     }
 
@@ -2801,20 +3126,20 @@ yyerrlab:
   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
@@ -2833,7 +3158,7 @@ yyerrorlab:
   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,35 +3171,37 @@ 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.  */
 
   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 += YYTERROR;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+            {
+              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);
+                  yystos[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.  */
@@ -2898,7 +3225,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -2910,16 +3237,21 @@ yyexhaustedlab:
 
 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);
+                  yystos[*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -2930,20 +3262,15 @@ yyreturn:
   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"
+#line 1232 "ada-exp.y" /* yacc.c:1906  */
 
 
 /* yylex defined in ada-lex.c: Reads one token, getting characters */
 /* through lexptr.  */
 
-/* Remap normal flex interface names (yylex) as well as gratuitiously */
+/* Remap normal flex interface names (yylex) as well as gratuitously */
 /* global symbol names, so we can have multiple flex-generated parsers */
 /* in gdb.  */
 
@@ -2957,8 +3284,6 @@ yyreturn:
 #define yyrestart ada_yyrestart
 #define yytext ada_yytext
 
-static struct obstack temp_parse_space;
-
 /* The following kludge was found necessary to prevent conflicts between */
 /* defs.h and non-standard stdlib.h files.  */
 #define qsort __qsort__dummy
@@ -2968,39 +3293,44 @@ int
 ada_parse (struct parser_state *par_state)
 {
   /* Setting up the parser state.  */
-  scoped_restore pstate_restore = make_scoped_restore (&pstate);
+  scoped_restore pstate_restore = make_scoped_restore (&pstate, par_state);
   gdb_assert (par_state != NULL);
-  pstate = par_state;
+
+  ada_parse_state parser (par_state->lexptr);
+  scoped_restore parser_restore = make_scoped_restore (&ada_parser, &parser);
+
+  scoped_restore restore_yydebug = make_scoped_restore (&yydebug,
+							par_state->debug);
 
   lexer_init (yyin);		/* (Re-)initialize lexer.  */
-  type_qualifier = NULL;
-  obstack_free (&temp_parse_space, NULL);
-  obstack_init (&temp_parse_space);
 
-  return yyparse ();
+  int result = yyparse ();
+  if (!result)
+    {
+      struct type *context_type = nullptr;
+      if (par_state->void_context_p)
+	context_type = parse_type (par_state)->builtin_void;
+      pstate->set_operation (ada_pop (true, context_type));
+    }
+  return result;
 }
 
 static void
 yyerror (const char *msg)
 {
-  error (_("Error in expression, near `%s'."), pstate->lexptr);
+  pstate->parse_error (msg);
 }
 
 /* Emit expression to access an instance of SYM, in block BLOCK (if
    non-NULL).  */
 
 static void
-write_var_from_sym (struct parser_state *par_state,
-		    const struct block *block,
-		    struct symbol *sym)
-{
-  if (symbol_read_needs_frame (sym))
-    par_state->block_tracker->update (block, INNERMOST_BLOCK_FOR_SYMBOLS);
-
-  write_exp_elt_opcode (par_state, OP_VAR_VALUE);
-  write_exp_elt_block (par_state, block);
-  write_exp_elt_sym (par_state, sym);
-  write_exp_elt_opcode (par_state, OP_VAR_VALUE);
+write_var_from_sym (struct parser_state *par_state, block_symbol sym)
+{
+  if (symbol_read_needs_frame (sym.symbol))
+    par_state->block_tracker->update (sym.block, INNERMOST_BLOCK_FOR_SYMBOLS);
+
+  par_state->push_new<ada_var_value_operation> (sym);
 }
 
 /* Write integer or boolean constant ARG of type TYPE.  */
@@ -3008,32 +3338,20 @@ write_var_from_sym (struct parser_state
 static void
 write_int (struct parser_state *par_state, LONGEST arg, struct type *type)
 {
-  write_exp_elt_opcode (par_state, OP_LONG);
-  write_exp_elt_type (par_state, type);
-  write_exp_elt_longcst (par_state, arg);
-  write_exp_elt_opcode (par_state, OP_LONG);
+  pstate->push_new<long_const_operation> (type, arg);
+  ada_wrap<ada_wrapped_operation> ();
 }
 
-/* Write an OPCODE, string, OPCODE sequence to the current expression.  */
-static void
-write_exp_op_with_string (struct parser_state *par_state,
-			  enum exp_opcode opcode, struct stoken token)
-{
-  write_exp_elt_opcode (par_state, opcode);
-  write_exp_string (par_state, token);
-  write_exp_elt_opcode (par_state, opcode);
-}
-  
 /* Emit expression corresponding to the renamed object named 
- * designated by RENAMED_ENTITY[0 .. RENAMED_ENTITY_LEN-1] in the
- * context of ORIG_LEFT_CONTEXT, to which is applied the operations
- * encoded by RENAMING_EXPR.  MAX_DEPTH is the maximum number of
- * cascaded renamings to allow.  If ORIG_LEFT_CONTEXT is null, it
- * defaults to the currently selected block. ORIG_SYMBOL is the 
- * symbol that originally encoded the renaming.  It is needed only
- * because its prefix also qualifies any index variables used to index
- * or slice an array.  It should not be necessary once we go to the
- * new encoding entirely (FIXME pnh 7/20/2007).  */
+   designated by RENAMED_ENTITY[0 .. RENAMED_ENTITY_LEN-1] in the
+   context of ORIG_LEFT_CONTEXT, to which is applied the operations
+   encoded by RENAMING_EXPR.  MAX_DEPTH is the maximum number of
+   cascaded renamings to allow.  If ORIG_LEFT_CONTEXT is null, it
+   defaults to the currently selected block. ORIG_SYMBOL is the 
+   symbol that originally encoded the renaming.  It is needed only
+   because its prefix also qualifies any index variables used to index
+   or slice an array.  It should not be necessary once we go to the
+   new encoding entirely (FIXME pnh 7/20/2007).  */
 
 static void
 write_object_renaming (struct parser_state *par_state,
@@ -3043,7 +3361,6 @@ write_object_renaming (struct parser_sta
 {
   char *name;
   enum { SIMPLE_INDEX, LOWER_BOUND, UPPER_BOUND } slice_state;
-  struct block_symbol sym_info;
 
   if (max_depth <= 0)
     error (_("Could not find renamed symbol"));
@@ -3051,12 +3368,13 @@ write_object_renaming (struct parser_sta
   if (orig_left_context == NULL)
     orig_left_context = get_selected_block (NULL);
 
-  name = obstack_strndup (&temp_parse_space, renamed_entity,
+  name = obstack_strndup (&ada_parser->temp_space, renamed_entity,
 			  renamed_entity_len);
-  ada_lookup_encoded_symbol (name, orig_left_context, VAR_DOMAIN, &sym_info);
+  block_symbol sym_info = ada_lookup_encoded_symbol (name, orig_left_context,
+						     SEARCH_VFT);
   if (sym_info.symbol == NULL)
     error (_("Could not find renamed variable: %s"), ada_decode (name).c_str ());
-  else if (SYMBOL_CLASS (sym_info.symbol) == LOC_TYPEDEF)
+  else if (sym_info.symbol->loc_class () == LOC_TYPEDEF)
     /* We have a renaming of an old-style renaming symbol.  Don't
        trust the block information.  */
     sym_info.block = orig_left_context;
@@ -3071,7 +3389,7 @@ write_object_renaming (struct parser_sta
 				&inner_renaming_expr))
       {
       case ADA_NOT_RENAMING:
-	write_var_from_sym (par_state, sym_info.block, sym_info.symbol);
+	write_var_from_sym (par_state, sym_info);
 	break;
       case ADA_OBJECT_RENAMING:
 	write_object_renaming (par_state, sym_info.block,
@@ -3090,12 +3408,12 @@ write_object_renaming (struct parser_sta
 
       switch (*renaming_expr) {
       case 'A':
-        renaming_expr += 1;
-        write_exp_elt_opcode (par_state, UNOP_IND);
-        break;
+	renaming_expr += 1;
+	ada_wrap<ada_unop_ind_operation> ();
+	break;
       case 'L':
 	slice_state = LOWER_BOUND;
-	/* FALLTHROUGH */
+	[[fallthrough]];
       case 'S':
 	renaming_expr += 1;
 	if (isdigit (*renaming_expr))
@@ -3105,55 +3423,46 @@ write_object_renaming (struct parser_sta
 	    if (next == renaming_expr)
 	      goto BadEncoding;
 	    renaming_expr = next;
-	    write_exp_elt_opcode (par_state, OP_LONG);
-	    write_exp_elt_type (par_state, type_int (par_state));
-	    write_exp_elt_longcst (par_state, (LONGEST) val);
-	    write_exp_elt_opcode (par_state, OP_LONG);
+	    write_int (par_state, val, parse_type (par_state)->builtin_int);
 	  }
 	else
 	  {
 	    const char *end;
 	    char *index_name;
-	    struct block_symbol index_sym_info;
 
 	    end = strchr (renaming_expr, 'X');
 	    if (end == NULL)
 	      end = renaming_expr + strlen (renaming_expr);
 
-	    index_name = obstack_strndup (&temp_parse_space, renaming_expr,
+	    index_name = obstack_strndup (&ada_parser->temp_space,
+					  renaming_expr,
 					  end - renaming_expr);
 	    renaming_expr = end;
 
-	    ada_lookup_encoded_symbol (index_name, orig_left_context,
-				       VAR_DOMAIN, &index_sym_info);
+	    block_symbol index_sym_info
+	      = ada_lookup_encoded_symbol (index_name, orig_left_context,
+					   SEARCH_VFT);
 	    if (index_sym_info.symbol == NULL)
 	      error (_("Could not find %s"), index_name);
-	    else if (SYMBOL_CLASS (index_sym_info.symbol) == LOC_TYPEDEF)
+	    else if (index_sym_info.symbol->loc_class () == LOC_TYPEDEF)
 	      /* Index is an old-style renaming symbol.  */
 	      index_sym_info.block = orig_left_context;
-	    write_var_from_sym (par_state, index_sym_info.block,
-				index_sym_info.symbol);
+	    write_var_from_sym (par_state, index_sym_info);
 	  }
 	if (slice_state == SIMPLE_INDEX)
-	  {
-	    write_exp_elt_opcode (par_state, OP_FUNCALL);
-	    write_exp_elt_longcst (par_state, (LONGEST) 1);
-	    write_exp_elt_opcode (par_state, OP_FUNCALL);
-	  }
+	  ada_funcall (1);
 	else if (slice_state == LOWER_BOUND)
 	  slice_state = UPPER_BOUND;
 	else if (slice_state == UPPER_BOUND)
 	  {
-	    write_exp_elt_opcode (par_state, TERNOP_SLICE);
+	    ada_wrap3<ada_ternop_slice_operation> ();
 	    slice_state = SIMPLE_INDEX;
 	  }
 	break;
 
       case 'R':
 	{
-	  struct stoken field_name;
 	  const char *end;
-	  char *buf;
 
 	  renaming_expr += 1;
 
@@ -3162,13 +3471,12 @@ write_object_renaming (struct parser_sta
 	  end = strchr (renaming_expr, 'X');
 	  if (end == NULL)
 	    end = renaming_expr + strlen (renaming_expr);
-	  field_name.length = end - renaming_expr;
-	  buf = (char *) xmalloc (end - renaming_expr + 1);
-	  field_name.ptr = buf;
-	  strncpy (buf, renaming_expr, end - renaming_expr);
-	  buf[end - renaming_expr] = '\000';
+
+	  operation_up arg = ada_pop ();
+	  pstate->push_new<ada_structop_operation>
+	    (std::move (arg), std::string (renaming_expr,
+					   end - renaming_expr));
 	  renaming_expr = end;
-	  write_exp_op_with_string (par_state, STRUCTOP_STRUCT, field_name);
 	  break;
 	}
 
@@ -3187,30 +3495,33 @@ static const struct block*
 block_lookup (const struct block *context, const char *raw_name)
 {
   const char *name;
-  std::vector<struct block_symbol> syms;
-  int nsyms;
   struct symtab *symtab;
   const struct block *result = NULL;
 
+  std::string name_storage;
   if (raw_name[0] == '\'')
     {
       raw_name += 1;
       name = raw_name;
     }
   else
-    name = ada_encode (raw_name);
+    {
+      name_storage = ada_encode (raw_name);
+      name = name_storage.c_str ();
+    }
 
-  nsyms = ada_lookup_symbol_list (name, context, VAR_DOMAIN, &syms);
+  std::vector<struct block_symbol> syms
+    = ada_lookup_symbol_list (name, context, SEARCH_FUNCTION_DOMAIN);
 
   if (context == NULL
-      && (nsyms == 0 || SYMBOL_CLASS (syms[0].symbol) != LOC_BLOCK))
-    symtab = lookup_symtab (name);
+      && (syms.empty () || syms[0].symbol->loc_class () != LOC_BLOCK))
+    symtab = lookup_symtab (current_program_space, name);
   else
     symtab = NULL;
 
   if (symtab != NULL)
-    result = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), STATIC_BLOCK);
-  else if (nsyms == 0 || SYMBOL_CLASS (syms[0].symbol) != LOC_BLOCK)
+    result = symtab->compunit ()->blockvector ()->static_block ();
+  else if (syms.empty () || syms[0].symbol->loc_class () != LOC_BLOCK)
     {
       if (context == NULL)
 	error (_("No file or function \"%s\"."), raw_name);
@@ -3219,9 +3530,9 @@ block_lookup (const struct block *contex
     }
   else
     {
-      if (nsyms > 1)
+      if (syms.size () > 1)
 	warning (_("Function name \"%s\" ambiguous here"), raw_name);
-      result = SYMBOL_BLOCK_VALUE (syms[0].symbol);
+      result = syms[0].symbol->value_block ();
     }
 
   return result;
@@ -3236,13 +3547,13 @@ select_possible_type_sym (const std::vec
 	  
   preferred_index = -1; preferred_type = NULL;
   for (i = 0; i < syms.size (); i += 1)
-    switch (SYMBOL_CLASS (syms[i].symbol))
+    switch (syms[i].symbol->loc_class ())
       {
       case LOC_TYPEDEF:
-	if (ada_prefer_type (SYMBOL_TYPE (syms[i].symbol), preferred_type))
+	if (ada_prefer_type (syms[i].symbol->type (), preferred_type))
 	  {
 	    preferred_index = i;
-	    preferred_type = SYMBOL_TYPE (syms[i].symbol);
+	    preferred_type = syms[i].symbol->type ();
 	  }
 	break;
       case LOC_REGISTER:
@@ -3261,7 +3572,7 @@ select_possible_type_sym (const std::vec
 }
 
 static struct type*
-find_primitive_type (struct parser_state *par_state, char *name)
+find_primitive_type (struct parser_state *par_state, const char *name)
 {
   struct type *type;
   type = language_lookup_primitive_type (par_state->language (),
@@ -3279,16 +3590,16 @@ find_primitive_type (struct parser_state
 	(char *) alloca (strlen (name) + sizeof ("standard__"));
       strcpy (expanded_name, "standard__");
       strcat (expanded_name, name);
-      sym = ada_lookup_symbol (expanded_name, NULL, VAR_DOMAIN).symbol;
-      if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
-	type = SYMBOL_TYPE (sym);
+      sym = ada_lookup_symbol (expanded_name, NULL, SEARCH_TYPE_DOMAIN).symbol;
+      if (sym != NULL && sym->loc_class () == LOC_TYPEDEF)
+	type = sym->type ();
     }
 
   return type;
 }
 
 static int
-chop_selector (char *name, int end)
+chop_selector (const char *name, int end)
 {
   int i;
   for (i = end - 1; i > 0; i -= 1)
@@ -3301,8 +3612,8 @@ chop_selector (char *name, int end)
    '.'), chop this separator and return the result; else, return
    NAME.  */
 
-static char *
-chop_separator (char *name)
+static const char *
+chop_separator (const char *name)
 {
   if (*name == '.')
    return name + 1;
@@ -3315,22 +3626,25 @@ chop_separator (char *name)
 
 /* Given that SELS is a string of the form (<sep><identifier>)*, where
    <sep> is '__' or '.', write the indicated sequence of
-   STRUCTOP_STRUCT expression operators. */
-static void
-write_selectors (struct parser_state *par_state, char *sels)
+   STRUCTOP_STRUCT expression operators.  Returns a pointer to the
+   last operation that was pushed.  */
+static ada_structop_operation *
+write_selectors (struct parser_state *par_state, const char *sels)
 {
+  ada_structop_operation *result = nullptr;
   while (*sels != '\0')
     {
-      struct stoken field_name;
-      char *p = chop_separator (sels);
+      const char *p = chop_separator (sels);
       sels = p;
       while (*sels != '\0' && *sels != '.' 
 	     && (sels[0] != '_' || sels[1] != '_'))
 	sels += 1;
-      field_name.length = sels - p;
-      field_name.ptr = p;
-      write_exp_op_with_string (par_state, STRUCTOP_STRUCT, field_name);
+      operation_up arg = ada_pop ();
+      result = new ada_structop_operation (std::move (arg),
+					   std::string (p, sels - p));
+      pstate->push (operation_up (result));
     }
+  return result;
 }
 
 /* Write a variable access (OP_VAR_VALUE) to ambiguous encoded name
@@ -3339,18 +3653,16 @@ write_selectors (struct parser_state *pa
    */
 static void
 write_ambiguous_var (struct parser_state *par_state,
-		     const struct block *block, char *name, int len)
+		     const struct block *block, const char *name, int len)
 {
-  struct symbol *sym = new (&temp_parse_space) symbol ();
+  struct symbol *sym = new (&ada_parser->temp_space) symbol ();
 
-  SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN;
-  sym->set_linkage_name (obstack_strndup (&temp_parse_space, name, len));
-  SYMBOL_LANGUAGE (sym) = language_ada;
-
-  write_exp_elt_opcode (par_state, OP_VAR_VALUE);
-  write_exp_elt_block (par_state, block);
-  write_exp_elt_sym (par_state, sym);
-  write_exp_elt_opcode (par_state, OP_VAR_VALUE);
+  sym->set_domain (UNDEF_DOMAIN);
+  sym->set_linkage_name (obstack_strndup (&ada_parser->temp_space, name, len));
+  sym->set_language (language_ada, nullptr);
+
+  block_symbol bsym { sym, block };
+  par_state->push_new<ada_var_value_operation> (bsym);
 }
 
 /* A convenient wrapper around ada_get_field_index that takes
@@ -3359,7 +3671,7 @@ write_ambiguous_var (struct parser_state
 
 static int
 ada_nget_field_index (const struct type *type, const char *field_name0,
-                      int field_name_len, int maybe_missing)
+		      int field_name_len, int maybe_missing)
 {
   char *field_name = (char *) alloca ((field_name_len + 1) * sizeof (char));
 
@@ -3380,11 +3692,11 @@ ada_nget_field_index (const struct type
    In case of failure, we return NULL.  */
 
 static struct type *
-get_symbol_field_type (struct symbol *sym, char *encoded_field_name)
+get_symbol_field_type (struct symbol *sym, const char *encoded_field_name)
 {
-  char *field_name = encoded_field_name;
-  char *subfield_name;
-  struct type *type = SYMBOL_TYPE (sym);
+  const char *field_name = encoded_field_name;
+  const char *subfield_name;
+  struct type *type = sym->type ();
   int fieldno;
 
   if (type == NULL || field_name == NULL)
@@ -3397,7 +3709,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 != '.' 
@@ -3405,14 +3717,14 @@ get_symbol_field_type (struct symbol *sy
 	subfield_name += 1;
 
       if (subfield_name[0] == '\0')
-        return NULL;
+	return NULL;
 
       fieldno = ada_nget_field_index (type, field_name,
-                                      subfield_name - field_name, 1);
+				      subfield_name - field_name, 1);
       if (fieldno < 0)
-        return NULL;
+	return NULL;
 
-      type = TYPE_FIELD_TYPE (type, fieldno);
+      type = type->field (fieldno).type ();
       field_name = subfield_name;
     }
 
@@ -3437,12 +3749,26 @@ write_var_or_type (struct parser_state *
   char *encoded_name;
   int name_len;
 
-  if (block == NULL)
-    block = par_state->expression_context_block;
+  std::string name_storage = ada_encode (name0.ptr);
+
+  if (block == nullptr)
+    {
+      auto iter = ada_parser->iterated_associations.find (name_storage);
+      if (iter != ada_parser->iterated_associations.end ())
+	{
+	  auto op = std::make_unique<ada_index_var_operation> ();
+	  iter->second.push_back (op.get ());
+	  par_state->push (std::move (op));
+	  return nullptr;
+	}
+
+      block = par_state->expression_context_block;
+    }
 
-  encoded_name = ada_encode (name0.ptr);
-  name_len = strlen (encoded_name);
-  encoded_name = obstack_strndup (&temp_parse_space, encoded_name, name_len);
+  name_len = name_storage.size ();
+  encoded_name = obstack_strndup (&ada_parser->temp_space,
+				  name_storage.c_str (),
+				  name_len);
   for (depth = 0; depth < MAX_RENAMING_CHAIN_LENGTH; depth += 1)
     {
       int tail_index;
@@ -3450,8 +3776,6 @@ write_var_or_type (struct parser_state *
       tail_index = name_len;
       while (tail_index > 0)
 	{
-	  int nsyms;
-	  std::vector<struct block_symbol> syms;
 	  struct symbol *type_sym;
 	  struct symbol *renaming_sym;
 	  const char* renaming;
@@ -3460,15 +3784,20 @@ write_var_or_type (struct parser_state *
 	  int terminator = encoded_name[tail_index];
 
 	  encoded_name[tail_index] = '\0';
-	  nsyms = ada_lookup_symbol_list (encoded_name, block,
-					  VAR_DOMAIN, &syms);
+	  /* In order to avoid double-encoding, we want to only pass
+	     the decoded form to lookup functions.  */
+	  std::string decoded_name = ada_decode (encoded_name);
 	  encoded_name[tail_index] = terminator;
 
+	  std::vector<struct block_symbol> syms
+	    = ada_lookup_symbol_list (decoded_name.c_str (), block,
+				      SEARCH_VFT);
+
 	  type_sym = select_possible_type_sym (syms);
 
 	  if (type_sym != NULL)
 	    renaming_sym = type_sym;
-	  else if (nsyms == 1)
+	  else if (syms.size () == 1)
 	    renaming_sym = syms[0].symbol;
 	  else 
 	    renaming_sym = NULL;
@@ -3482,9 +3811,10 @@ write_var_or_type (struct parser_state *
 	    case ADA_EXCEPTION_RENAMING:
 	    case ADA_SUBPROGRAM_RENAMING:
 	      {
-	        int alloc_len = renaming_len + name_len - tail_index + 1;
+		int alloc_len = renaming_len + name_len - tail_index + 1;
 		char *new_name
-		  = (char *) obstack_alloc (&temp_parse_space, alloc_len);
+		  = (char *) obstack_alloc (&ada_parser->temp_space,
+					    alloc_len);
 		strncpy (new_name, renaming, renaming_len);
 		strcpy (new_name + renaming_len, encoded_name + tail_index);
 		encoded_name = new_name;
@@ -3497,29 +3827,28 @@ write_var_or_type (struct parser_state *
 	      write_selectors (par_state, encoded_name + tail_index);
 	      return NULL;
 	    default:
-	      internal_error (__FILE__, __LINE__,
-			      _("impossible value from ada_parse_renaming"));
+	      internal_error (_("impossible value from ada_parse_renaming"));
 	    }
 
 	  if (type_sym != NULL)
 	    {
-              struct type *field_type;
-              
-              if (tail_index == name_len)
-		return SYMBOL_TYPE (type_sym);
-
-              /* We have some extraneous characters after the type name.
-                 If this is an expression "TYPE_NAME.FIELD0.[...].FIELDN",
-                 then try to get the type of FIELDN.  */
-              field_type
-                = get_symbol_field_type (type_sym, encoded_name + tail_index);
-              if (field_type != NULL)
+	      struct type *field_type;
+	      
+	      if (tail_index == name_len)
+		return type_sym->type ();
+
+	      /* We have some extraneous characters after the type name.
+		 If this is an expression "TYPE_NAME.FIELD0.[...].FIELDN",
+		 then try to get the type of FIELDN.  */
+	      field_type
+		= get_symbol_field_type (type_sym, encoded_name + tail_index);
+	      if (field_type != NULL)
 		return field_type;
 	      else 
 		error (_("Invalid attempt to select from type: \"%s\"."),
-                       name0.ptr);
+		       name0.ptr);
 	    }
-	  else if (tail_index == name_len && nsyms == 0)
+	  else if (tail_index == name_len && syms.empty ())
 	    {
 	      struct type *type = find_primitive_type (par_state,
 						       encoded_name);
@@ -3528,19 +3857,23 @@ write_var_or_type (struct parser_state *
 		return type;
 	    }
 
-	  if (nsyms == 1)
+	  if (syms.size () == 1)
 	    {
-	      write_var_from_sym (par_state, syms[0].block, syms[0].symbol);
+	      write_var_from_sym (par_state, syms[0]);
 	      write_selectors (par_state, encoded_name + tail_index);
 	      return NULL;
 	    }
-	  else if (nsyms == 0) 
+	  else if (syms.empty ())
 	    {
-	      struct bound_minimal_symbol msym
-		= ada_lookup_simple_minsym (encoded_name);
+	      struct objfile *objfile = nullptr;
+	      if (block != nullptr)
+		objfile = block->objfile ();
+
+	      bound_minimal_symbol msym
+		= ada_lookup_simple_minsym (decoded_name.c_str (), objfile);
 	      if (msym.minsym != NULL)
 		{
-		  write_exp_msymbol (par_state, msym);
+		  par_state->push_new<ada_var_msym_value_operation> (msym);
 		  /* Maybe cause error here rather than later? FIXME? */
 		  write_selectors (par_state, encoded_name + tail_index);
 		  return NULL;
@@ -3562,7 +3895,9 @@ write_var_or_type (struct parser_state *
 	    }
 	}
 
-      if (!have_full_symbols () && !have_partial_symbols () && block == NULL)
+      if (!have_full_symbols (current_program_space)
+	  && !have_partial_symbols (current_program_space)
+	  && block == NULL)
 	error (_("No symbol table is loaded.  Use the \"file\" command."));
       if (block == par_state->expression_context_block)
 	error (_("No definition of \"%s\" in current context."), name0.ptr);
@@ -3576,6 +3911,72 @@ write_var_or_type (struct parser_state *
 
 }
 
+/* Because ada_completer_word_break_characters does not contain '.' --
+   and it cannot easily be added, this breaks other completions -- we
+   have to recreate the completion word-splitting here, so that we can
+   provide a prefix that is then used when completing field names.
+   Without this, an attempt like "complete print abc.d" will give a
+   result like "print def" rather than "print abc.def".  */
+
+std::string
+ada_parse_state::find_completion_bounds ()
+{
+  const char *end = pstate->lexptr;
+  /* First the end of the prefix.  Here we stop at the token start or
+     at '.' or space.  */
+  for (; end > m_original_expr && end[-1] != '.' && !isspace (end[-1]); --end)
+    {
+      /* Nothing.  */
+    }
+  /* Now find the start of the prefix.  */
+  const char *ptr = end;
+  /* Here we allow '.'.  */
+  for (;
+       ptr > m_original_expr && (ptr[-1] == '.'
+				 || ptr[-1] == '_'
+				 || (ptr[-1] >= 'a' && ptr[-1] <= 'z')
+				 || (ptr[-1] >= 'A' && ptr[-1] <= 'Z')
+				 || (ptr[-1] & 0xff) >= 0x80);
+       --ptr)
+    {
+      /* Nothing.  */
+    }
+  /* ... except, skip leading spaces.  */
+  ptr = skip_spaces (ptr);
+
+  return std::string (ptr, end);
+}
+
+/* A wrapper for write_var_or_type that is used specifically when
+   completion is requested for the last of a sequence of
+   identifiers.  */
+
+static struct type *
+write_var_or_type_completion (struct parser_state *par_state,
+			      const struct block *block, struct stoken name0)
+{
+  int tail_index = chop_selector (name0.ptr, name0.length);
+  /* If there's no separator, just defer to ordinary symbol
+     completion.  */
+  if (tail_index == -1)
+    return write_var_or_type (par_state, block, name0);
+
+  std::string copy (name0.ptr, tail_index);
+  struct type *type = write_var_or_type (par_state, block,
+					 { copy.c_str (),
+					   (int) copy.length () });
+  /* For completion purposes, it's enough that we return a type
+     here.  */
+  if (type != nullptr)
+    return type;
+
+  ada_structop_operation *op = write_selectors (par_state,
+						name0.ptr + tail_index);
+  op->set_prefix (ada_parser->find_completion_bounds ());
+  par_state->mark_struct_expression (op);
+  return nullptr;
+}
+
 /* Write a left side of a component association (e.g., NAME in NAME =>
    exp).  If NAME has the form of a selected component, write it as an
    ordinary expression.  If it is a simple variable that unambiguously
@@ -3596,93 +3997,36 @@ write_name_assoc (struct parser_state *p
 {
   if (strchr (name.ptr, '.') == NULL)
     {
-      std::vector<struct block_symbol> syms;
-      int nsyms = ada_lookup_symbol_list (name.ptr,
-					  par_state->expression_context_block,
-					  VAR_DOMAIN, &syms);
+      std::vector<struct block_symbol> syms
+	= ada_lookup_symbol_list (name.ptr,
+				  par_state->expression_context_block,
+				  SEARCH_VFT);
 
-      if (nsyms != 1 || SYMBOL_CLASS (syms[0].symbol) == LOC_TYPEDEF)
-	write_exp_op_with_string (par_state, OP_NAME, name);
+      if (syms.size () != 1 || syms[0].symbol->loc_class () == LOC_TYPEDEF)
+	pstate->push_new<ada_string_operation> (copy_name (name));
       else
-	write_var_from_sym (par_state, syms[0].block, syms[0].symbol);
+	write_var_from_sym (par_state, syms[0]);
     }
   else
     if (write_var_or_type (par_state, NULL, name) != NULL)
       error (_("Invalid use of type."));
-}
-
-/* Convert the character literal whose ASCII value would be VAL to the
-   appropriate value of type TYPE, if there is a translation.
-   Otherwise return VAL.  Hence, in an enumeration type ('A', 'B'),
-   the literal 'A' (VAL == 65), returns 0.  */
 
-static LONGEST
-convert_char_literal (struct type *type, LONGEST val)
-{
-  char name[7];
-  int f;
-
-  if (type == NULL)
-    return val;
-  type = check_typedef (type);
-  if (TYPE_CODE (type) != TYPE_CODE_ENUM)
-    return val;
-
-  if ((val >= 'a' && val <= 'z') || (val >= '0' && val <= '9'))
-    xsnprintf (name, sizeof (name), "Q%c", (int) val);
-  else
-    xsnprintf (name, sizeof (name), "QU%02x", (int) val);
-  size_t len = strlen (name);
-  for (f = 0; f < TYPE_NFIELDS (type); 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
-	 already have the correct type, and because mangling means
-	 there can't be clashes.  */
-      const char *ename = TYPE_FIELD_NAME (type, f);
-      size_t elen = strlen (ename);
-
-      if (elen >= len && strcmp (name, ename + elen - len) == 0)
-	return TYPE_FIELD_ENUMVAL (type, f);
-    }
-  return val;
-}
-
-static struct type *
-type_int (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_int;
+  push_association<ada_name_association> (ada_pop ());
 }
 
 static struct type *
-type_long (struct parser_state *par_state)
+type_for_char (struct parser_state *par_state, ULONGEST value)
 {
-  return parse_type (par_state)->builtin_long;
-}
-
-static struct type *
-type_long_long (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_long_long;
-}
-
-static struct type *
-type_long_double (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_long_double;
-}
-
-static struct type *
-type_char (struct parser_state *par_state)
-{
-  return language_string_char_type (par_state->language (),
-				    par_state->gdbarch ());
-}
-
-static struct type *
-type_boolean (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_bool;
+  if (value <= 0xff)
+    return language_string_char_type (par_state->language (),
+				      par_state->gdbarch ());
+  else if (value <= 0xffff)
+    return language_lookup_primitive_type (par_state->language (),
+					   par_state->gdbarch (),
+					   "wide_character");
+  return language_lookup_primitive_type (par_state->language (),
+					 par_state->gdbarch (),
+					 "wide_wide_character");
 }
 
 static struct type *
@@ -3694,10 +4038,3 @@ type_system_address (struct parser_state
 				      "system__address");
   return  type != NULL ? type : parse_type (par_state)->builtin_data_ptr;
 }
-
-void
-_initialize_ada_exp (void)
-{
-  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.20200303/gdb/ada-exp.h ./gdb/ada-exp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-exp.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/ada-exp.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,994 @@
+/* Definitions for Ada expressions
+
+   Copyright (C) 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ADA_EXP_H
+#define GDB_ADA_EXP_H
+
+#include "expop.h"
+
+extern struct value *ada_unop_neg (struct type *expect_type,
+				   struct expression *exp,
+				   enum noside noside, enum exp_opcode op,
+				   struct value *arg1);
+extern struct value *ada_atr_tag (struct type *expect_type,
+				  struct expression *exp,
+				  enum noside noside, enum exp_opcode op,
+				  struct value *arg1);
+extern struct value *ada_abs (struct type *expect_type,
+			      struct expression *exp,
+			      enum noside noside, enum exp_opcode op,
+			      struct value *arg1);
+extern struct value *ada_unop_in_range (struct type *expect_type,
+					struct expression *exp,
+					enum noside noside, enum exp_opcode op,
+					struct value *arg1, struct type *type);
+extern struct value *ada_mult_binop (struct type *expect_type,
+				     struct expression *exp,
+				     enum noside noside, enum exp_opcode op,
+				     struct value *arg1, struct value *arg2);
+extern struct value *ada_equal_binop (struct type *expect_type,
+				      struct expression *exp,
+				      enum noside noside, enum exp_opcode op,
+				      struct value *arg1, struct value *arg2);
+extern struct value *ada_ternop_slice (struct expression *exp,
+				       enum noside noside,
+				       struct value *array,
+				       struct value *low_bound_val,
+				       struct value *high_bound_val);
+extern struct value *ada_binop_in_bounds (struct expression *exp,
+					  enum noside noside,
+					  struct value *arg1,
+					  struct value *arg2,
+					  int n);
+extern struct value *ada_binop_minmax (struct type *expect_type,
+				       struct expression *exp,
+				       enum noside noside, enum exp_opcode op,
+				       struct value *arg1,
+				       struct value *arg2);
+extern struct value *ada_pos_atr (struct type *expect_type,
+				  struct expression *exp,
+				  enum noside noside, enum exp_opcode op,
+				  struct value *arg);
+extern struct value *ada_atr_enum_rep (struct expression *exp,
+				       enum noside noside, struct type *type,
+				       struct value *arg);
+extern struct value *ada_atr_enum_val (struct expression *exp,
+				       enum noside noside, struct type *type,
+				       struct value *arg);
+extern struct value *ada_val_atr (struct expression *exp,
+				  enum noside noside, struct type *type,
+				  struct value *arg);
+extern struct value *ada_binop_exp (struct type *expect_type,
+				    struct expression *exp,
+				    enum noside noside, enum exp_opcode op,
+				    struct value *arg1, struct value *arg2);
+
+namespace expr
+{
+
+/* The base class for Ada type resolution.  Ada operations that want
+   to participate in resolution implement this interface.  */
+struct ada_resolvable
+{
+  /* Resolve this object.  EXP is the expression being resolved.
+     DEPROCEDURE_P is true if a symbol that refers to a zero-argument
+     function may be turned into a function call.  PARSE_COMPLETION
+     and TRACKER are passed in from the parser context.  CONTEXT_TYPE
+     is the expected type of the expression, or nullptr if none is
+     known.  This method should return true if the operation should be
+     replaced by a function call with this object as the callee.  */
+  virtual bool resolve (struct expression *exp,
+			bool deprocedure_p,
+			bool parse_completion,
+			innermost_block_tracker *tracker,
+			struct type *context_type) = 0;
+
+  /* Possibly replace this object with some other expression object.
+     This is like 'resolve', but can return a replacement.
+
+     The default implementation calls 'resolve' and wraps this object
+     in a function call if that call returns true.  OWNER is a
+     reference to the unique pointer that owns the 'this'; it can be
+     'move'd from to construct the replacement.
+
+     This should either return a new object, or OWNER -- never
+     nullptr.  */
+
+  virtual operation_up replace (operation_up &&owner,
+				struct expression *exp,
+				bool deprocedure_p,
+				bool parse_completion,
+				innermost_block_tracker *tracker,
+				struct type *context_type);
+};
+
+/* In Ada, some generic operations must be wrapped with a handler that
+   handles some Ada-specific type conversions.  */
+class ada_wrapped_operation
+  : public tuple_holding_operation<operation_up>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return std::get<0> (m_storage)->opcode (); }
+
+protected:
+
+  void do_generate_ax (struct expression *exp,
+		       struct agent_expr *ax,
+		       struct axs_value *value,
+		       struct type *cast_type)
+    override;
+};
+
+/* An Ada string constant.  */
+class ada_string_operation
+  : public string_operation
+{
+public:
+
+  using string_operation::string_operation;
+
+  /* Return the underlying string.  */
+  const char *get_name () const
+  {
+    return std::get<0> (m_storage).c_str ();
+  }
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+};
+
+/* The Ada TYPE'(EXP) construct.  */
+class ada_qual_operation
+  : public tuple_holding_operation<operation_up, struct type *>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return UNOP_QUAL; }
+};
+
+/* Ternary in-range operator.  */
+class ada_ternop_range_operation
+  : public tuple_holding_operation<operation_up, operation_up, operation_up>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return TERNOP_IN_RANGE; }
+};
+
+using ada_neg_operation = unop_operation<UNOP_NEG, ada_unop_neg>;
+using ada_atr_tag_operation = unop_operation<OP_ATR_TAG, ada_atr_tag>;
+using ada_abs_operation = unop_operation<UNOP_ABS, ada_abs>;
+using ada_pos_operation = unop_operation<OP_ATR_POS, ada_pos_atr>;
+
+/* Implementation of the 'Size and 'Object_Size attribute.  The
+   boolean parameter is true for 'Size and false for 'Object_Size.  */
+class ada_atr_size_operation
+  : public maybe_constant_operation<operation_up, bool>
+{
+  using maybe_constant_operation::maybe_constant_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return OP_ATR_SIZE; }
+};
+
+/* The in-range operation, given a type.  */
+class ada_unop_range_operation
+  : public tuple_holding_operation<operation_up, struct type *>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    value *val = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
+    return ada_unop_in_range (expect_type, exp, noside, UNOP_IN_RANGE,
+			      val, std::get<1> (m_storage));
+  }
+
+  enum exp_opcode opcode () const override
+  { return UNOP_IN_RANGE; }
+};
+
+/* The Ada + and - operators.  */
+class ada_binop_addsub_operation
+  : public tuple_holding_operation<enum exp_opcode, operation_up, operation_up>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return std::get<0> (m_storage); }
+};
+
+using ada_binop_mul_operation = binop_operation<BINOP_MUL, ada_mult_binop>;
+using ada_binop_div_operation = binop_operation<BINOP_DIV, ada_mult_binop>;
+using ada_binop_rem_operation = binop_operation<BINOP_REM, ada_mult_binop>;
+using ada_binop_mod_operation = binop_operation<BINOP_MOD, ada_mult_binop>;
+
+using ada_binop_min_operation = binop_operation<BINOP_MIN, ada_binop_minmax>;
+using ada_binop_max_operation = binop_operation<BINOP_MAX, ada_binop_minmax>;
+
+using ada_binop_exp_operation = binop_operation<BINOP_EXP, ada_binop_exp>;
+
+/* Implement the equal and not-equal operations for Ada.  */
+class ada_binop_equal_operation
+  : public tuple_holding_operation<enum exp_opcode, operation_up, operation_up>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    value *arg1 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
+    value *arg2 = std::get<2> (m_storage)->evaluate (arg1->type (),
+						     exp, noside);
+    return ada_equal_binop (expect_type, exp, noside, std::get<0> (m_storage),
+			    arg1, arg2);
+  }
+
+  void do_generate_ax (struct expression *exp,
+		       struct agent_expr *ax,
+		       struct axs_value *value,
+		       struct type *cast_type)
+    override
+  {
+    gen_expr_binop (exp, opcode (),
+		    std::get<1> (this->m_storage).get (),
+		    std::get<2> (this->m_storage).get (),
+		    ax, value);
+  }
+
+  enum exp_opcode opcode () const override
+  { return std::get<0> (m_storage); }
+};
+
+/* Ada array- or string-slice operation.  */
+class ada_ternop_slice_operation
+  : public maybe_constant_operation<operation_up, operation_up, operation_up>,
+    public ada_resolvable
+{
+public:
+
+  using maybe_constant_operation::maybe_constant_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    value *array = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
+    value *low = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
+    value *high = std::get<2> (m_storage)->evaluate (nullptr, exp, noside);
+    return ada_ternop_slice (exp, noside, array, low, high);
+  }
+
+  enum exp_opcode opcode () const override
+  { return TERNOP_SLICE; }
+
+  bool resolve (struct expression *exp,
+		bool deprocedure_p,
+		bool parse_completion,
+		innermost_block_tracker *tracker,
+		struct type *context_type) override;
+};
+
+/* Implement BINOP_IN_BOUNDS for Ada.  */
+class ada_binop_in_bounds_operation
+  : public maybe_constant_operation<operation_up, operation_up, int>
+{
+public:
+
+  using maybe_constant_operation::maybe_constant_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    value *arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
+    value *arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
+    return ada_binop_in_bounds (exp, noside, arg1, arg2,
+				std::get<2> (m_storage));
+  }
+
+  enum exp_opcode opcode () const override
+  { return BINOP_IN_BOUNDS; }
+};
+
+/* Implement several unary Ada OP_ATR_* operations.  */
+class ada_unop_atr_operation
+  : public maybe_constant_operation<operation_up, enum exp_opcode, int>
+{
+public:
+
+  using maybe_constant_operation::maybe_constant_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return std::get<1> (m_storage); }
+};
+
+/* Variant of var_value_operation for Ada.  */
+class ada_var_value_operation
+  : public var_value_operation, public ada_resolvable
+{
+public:
+
+  using var_value_operation::var_value_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  value *evaluate_for_cast (struct type *expect_type,
+			    struct expression *exp,
+			    enum noside noside) override;
+
+  const block *get_block () const
+  { return std::get<0> (m_storage).block; }
+
+  bool resolve (struct expression *exp,
+		bool deprocedure_p,
+		bool parse_completion,
+		innermost_block_tracker *tracker,
+		struct type *context_type) override;
+
+protected:
+
+  void do_generate_ax (struct expression *exp,
+		       struct agent_expr *ax,
+		       struct axs_value *value,
+		       struct type *cast_type)
+    override;
+};
+
+/* Variant of var_msym_value_operation for Ada.  */
+class ada_var_msym_value_operation
+  : public var_msym_value_operation
+{
+public:
+
+  using var_msym_value_operation::var_msym_value_operation;
+
+  value *evaluate_for_cast (struct type *expect_type,
+			    struct expression *exp,
+			    enum noside noside) override;
+
+protected:
+
+  using operation::do_generate_ax;
+};
+
+typedef struct value *ada_atr_ftype (struct expression *exp,
+				     enum noside noside,
+				     struct type *type,
+				     struct value *arg);
+
+/* Implement several Ada attributes.  */
+template<ada_atr_ftype FUNC>
+class ada_atr_operation
+  : public tuple_holding_operation<struct type *, operation_up>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    value *arg = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
+    return FUNC (exp, noside, std::get<0> (m_storage), arg);
+  }
+
+  enum exp_opcode opcode () const override
+  {
+    /* The value here generally doesn't matter.  */
+    return OP_ATR_VAL;
+  }
+};
+
+using ada_atr_val_operation = ada_atr_operation<ada_val_atr>;
+using ada_atr_enum_rep_operation = ada_atr_operation<ada_atr_enum_rep>;
+using ada_atr_enum_val_operation = ada_atr_operation<ada_atr_enum_val>;
+
+/* The indirection operator for Ada.  */
+class ada_unop_ind_operation
+  : public unop_ind_base_operation
+{
+public:
+
+  using unop_ind_base_operation::unop_ind_base_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+};
+
+/* Implement STRUCTOP_STRUCT for Ada.  */
+class ada_structop_operation
+  : public structop_base_operation
+{
+public:
+
+  using structop_base_operation::structop_base_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return STRUCTOP_STRUCT; }
+
+  /* Set the completion prefix.  */
+  void set_prefix (std::string &&prefix)
+  {
+    m_prefix = std::move (prefix);
+  }
+
+  bool complete (struct expression *exp, completion_tracker &tracker) override
+  {
+    return structop_base_operation::complete (exp, tracker, m_prefix.c_str ());
+  }
+
+  void dump (struct ui_file *stream, int depth) const override
+  {
+    structop_base_operation::dump (stream, depth);
+    dump_for_expression (stream, depth + 1, m_prefix);
+  }
+
+private:
+
+  /* We may need to provide a prefix to field name completion.  See
+     ada-exp.y:find_completion_bounds for details.  */
+  std::string m_prefix;
+};
+
+/* Function calls for Ada.  */
+class ada_funcall_operation
+  : public tuple_holding_operation<operation_up, std::vector<operation_up>>,
+    public ada_resolvable
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  bool resolve (struct expression *exp,
+		bool deprocedure_p,
+		bool parse_completion,
+		innermost_block_tracker *tracker,
+		struct type *context_type) override;
+
+  enum exp_opcode opcode () const override
+  { return OP_FUNCALL; }
+};
+
+/* An Ada assignment operation.  */
+class ada_assign_operation
+  : public assign_operation
+{
+public:
+
+  using assign_operation::assign_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return BINOP_ASSIGN; }
+
+  value *current ()
+  { return m_current; }
+
+  /* A helper function for the parser to evaluate just the LHS of the
+     assignment.  */
+  value *eval_for_resolution (struct expression *exp)
+  {
+    return std::get<0> (m_storage)->evaluate (nullptr, exp,
+					      EVAL_AVOID_SIDE_EFFECTS);
+  }
+
+  /* The parser must construct the assignment node before parsing the
+     RHS, so that '@' can access the assignment, so this helper
+     function is needed to set the RHS after construction.  */
+  void set_rhs (operation_up rhs)
+  {
+    std::get<1> (m_storage) = std::move (rhs);
+  }
+
+private:
+
+  /* Temporary storage for the value of the left-hand-side.  */
+  value *m_current = nullptr;
+};
+
+/* Implement the Ada target name symbol ('@').  This is used to refer
+   to the LHS of an assignment from the RHS.  */
+class ada_target_operation : public operation
+{
+public:
+
+  explicit ada_target_operation (ada_assign_operation *lhs)
+    : m_lhs (lhs)
+  { }
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    if (noside == EVAL_AVOID_SIDE_EFFECTS)
+      return m_lhs->eval_for_resolution (exp);
+    return m_lhs->current ();
+  }
+
+  enum exp_opcode opcode () const override
+  {
+    /* It doesn't really matter.  */
+    return OP_VAR_VALUE;
+  }
+
+  void dump (struct ui_file *stream, int depth) const override
+  {
+    gdb_printf (stream, _("%*sAda target symbol '@'\n"), depth, "");
+  }
+
+private:
+
+  /* The left hand side of the assignment.  */
+  ada_assign_operation *m_lhs;
+};
+
+/* When constructing an aggregate, an object of this type is created
+   to track the needed state.  */
+
+struct aggregate_assigner
+{
+  /* An lvalue containing LHS (possibly LHS itself).  */
+  value *container;
+
+  /* An lvalue of record or array type; this is the object being
+     assigned to.  */
+  value *lhs;
+
+  /* The expression being evaluated.  */
+  expression *exp;
+
+  /* The bounds of LHS.  This is used by the 'others' component.  */
+  LONGEST low;
+  LONGEST high;
+
+  /* This indicates which sub-components have already been assigned
+     to.  */
+  std::vector<LONGEST> indices;
+
+private:
+
+  /* The current index value.  This is only valid during the 'assign'
+     operation and is part of the implementation of iterated component
+     association.  */
+  LONGEST m_current_index = 0;
+
+public:
+
+  /* Assign the result of evaluating ARG to the INDEXth component of
+     LHS (a simple array or a record).  Does not modify the inferior's
+     memory, nor does it modify LHS (unless LHS == CONTAINER).  */
+  void assign (LONGEST index, operation_up &arg);
+
+  /* Add the interval [FROM .. TO] to the sorted set of intervals
+     [ INDICES[0] .. INDICES[1] ],...  The resulting intervals do not
+     overlap.  */
+  void add_interval (LONGEST low, LONGEST high);
+
+  /* Return the current index as a value, using the index type of
+     LHS.  */
+  value *current_value () const;
+};
+
+/* This abstract class represents a single component in an Ada
+   aggregate assignment.  */
+class ada_component
+{
+public:
+
+  /* Assign to ASSIGNER.  */
+  virtual void assign (aggregate_assigner &assigner) = 0;
+
+  /* Same as operation::uses_objfile.  */
+  virtual bool uses_objfile (struct objfile *objfile) = 0;
+
+  /* Same as operation::dump.  */
+  virtual void dump (ui_file *stream, int depth) = 0;
+
+  virtual ~ada_component () = default;
+
+protected:
+
+  ada_component () = default;
+  DISABLE_COPY_AND_ASSIGN (ada_component);
+};
+
+/* Unique pointer specialization for Ada assignment components.  */
+typedef std::unique_ptr<ada_component> ada_component_up;
+
+/* An operation that holds a single component.  */
+class ada_aggregate_operation
+  : public tuple_holding_operation<ada_component_up>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  /* Assuming that LHS represents an lvalue having a record or array
+     type, evaluate an assignment of this aggregate's value to LHS.
+     CONTAINER is an lvalue containing LHS (possibly LHS itself).
+     Does not modify the inferior's memory, nor does it modify the
+     contents of LHS (unless == CONTAINER).  Returns the modified
+     CONTAINER.  */
+
+  value *assign_aggregate (struct value *container,
+			   struct value *lhs,
+			   struct expression *exp);
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    error (_("Aggregates only allowed on the right of an assignment"));
+  }
+
+  enum exp_opcode opcode () const override
+  { return OP_AGGREGATE; }
+};
+
+/* A component holding a vector of other components to assign.  */
+class ada_aggregate_component : public ada_component
+{
+public:
+
+  explicit ada_aggregate_component (std::vector<ada_component_up> &&components)
+    : m_components (std::move (components))
+  {
+  }
+
+  /* This is the "with delta" form -- BASE is the base expression.  */
+  ada_aggregate_component (operation_up &&base,
+			   std::vector<ada_component_up> &&components);
+
+  void assign (aggregate_assigner &assigner) override;
+
+  bool uses_objfile (struct objfile *objfile) override;
+
+  void dump (ui_file *stream, int depth) override;
+
+private:
+
+  /* If the assignment has a "with delta" clause, this is the
+     base expression.  */
+  operation_up m_base;
+  /* The individual components to assign.  */
+  std::vector<ada_component_up> m_components;
+};
+
+/* A component that assigns according to a provided index (which is
+   relative to the "low" value).  */
+class ada_positional_component : public ada_component
+{
+public:
+
+  ada_positional_component (int index, operation_up &&op)
+    : m_index (index),
+      m_op (std::move (op))
+  {
+  }
+
+  void assign (aggregate_assigner &assigner) override;
+
+  bool uses_objfile (struct objfile *objfile) override;
+
+  void dump (ui_file *stream, int depth) override;
+
+private:
+
+  int m_index;
+  operation_up m_op;
+};
+
+/* A component which handles an "others" clause.  */
+class ada_others_component : public ada_component
+{
+public:
+
+  explicit ada_others_component (operation_up &&op)
+    : m_op (std::move (op))
+  {
+  }
+
+  void assign (aggregate_assigner &assigner) override;
+
+  bool uses_objfile (struct objfile *objfile) override;
+
+  void dump (ui_file *stream, int depth) override;
+
+private:
+
+  operation_up m_op;
+};
+
+/* An interface that represents an association that is used in
+   aggregate assignment.  */
+class ada_association
+{
+public:
+
+  /* Like ada_component::assign, but takes an operation as a
+     parameter.  The operation is evaluated and then assigned into
+     ASSIGNER according to the rules of the concrete
+     implementation.  */
+  virtual void assign (aggregate_assigner &assigner, operation_up &op) = 0;
+
+  /* Same as operation::uses_objfile.  */
+  virtual bool uses_objfile (struct objfile *objfile) = 0;
+
+  /* Same as operation::dump.  */
+  virtual void dump (ui_file *stream, int depth) = 0;
+
+  virtual ~ada_association () = default;
+
+protected:
+
+  ada_association () = default;
+  DISABLE_COPY_AND_ASSIGN (ada_association);
+};
+
+/* Unique pointer specialization for Ada assignment associations.  */
+typedef std::unique_ptr<ada_association> ada_association_up;
+
+/* A component that holds a vector of associations and an operation.
+   The operation is re-evaluated for each choice.  */
+class ada_choices_component : public ada_component
+{
+public:
+
+  explicit ada_choices_component (operation_up &&op)
+    : m_op (std::move (op))
+  {
+  }
+
+  /* Set the vector of associations.  This is done separately from the
+     constructor because it was simpler for the implementation of the
+     parser.  */
+  void set_associations (std::vector<ada_association_up> &&assoc)
+  {
+    m_assocs = std::move (assoc);
+  }
+
+  /* Set the underlying operation  */
+  void set_operation (operation_up op)
+  { m_op = std::move (op); }
+
+  /* Set the index variable name for an iterated association.  */
+  void set_name (std::string &&name)
+  { m_name = std::move (name); }
+
+  /* The name of this choice component.  This is empty unless this is
+     an iterated association.  */
+  const std::string &name () const
+  { return m_name; }
+
+  void assign (aggregate_assigner &assigner) override;
+
+  bool uses_objfile (struct objfile *objfile) override;
+
+  void dump (ui_file *stream, int depth) override;
+
+  /* Return the current value of the index variable.  This may only be
+     called underneath a call to 'assign'.  */
+  value *current_value () const
+  { return m_assigner->current_value (); }
+
+private:
+
+  std::vector<ada_association_up> m_assocs;
+  operation_up m_op;
+
+  /* Name of the variable used for iteration.  This isn't needed for
+     evaluation, only for debug dumping.  This is the empty string for
+     ordinary (non-iterated) choices.  */
+  std::string m_name;
+
+  /* A pointer to the current assignment operation; only valid when in
+     a call to the 'assign' method.  This is used to find the index
+     variable value during the evaluation of the RHS of the =>, via
+     ada_index_var_operation.  */
+  const aggregate_assigner *m_assigner = nullptr;
+};
+
+/* Implement the index variable for iterated component
+   association.  */
+class ada_index_var_operation : public operation
+{
+public:
+
+  ada_index_var_operation ()
+  { }
+
+  /* Link this variable to the choices object.  May only be called
+     once.  */
+  void set_choices (ada_choices_component *var)
+  {
+    gdb_assert (m_var == nullptr && var != nullptr);
+    m_var = var;
+  }
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  {
+    /* It doesn't really matter.  */
+    return OP_VAR_VALUE;
+  }
+
+  void dump (struct ui_file *stream, int depth) const override;
+
+private:
+
+  /* The choices component that introduced the index variable.  */
+  ada_choices_component *m_var = nullptr;
+};
+
+/* An association that uses a discrete range.  */
+class ada_discrete_range_association : public ada_association
+{
+public:
+
+  ada_discrete_range_association (operation_up &&low, operation_up &&high)
+    : m_low (std::move (low)),
+      m_high (std::move (high))
+  {
+  }
+
+  void assign (aggregate_assigner &assigner, operation_up &op) override;
+
+  bool uses_objfile (struct objfile *objfile) override;
+
+  void dump (ui_file *stream, int depth) override;
+
+private:
+
+  operation_up m_low;
+  operation_up m_high;
+};
+
+/* An association that uses a name.  The name may be an expression
+   that evaluates to an integer (for arrays), or an Ada string or
+   variable value operation.  */
+class ada_name_association : public ada_association
+{
+public:
+
+  explicit ada_name_association (operation_up val)
+    : m_val (std::move (val))
+  {
+  }
+
+  void assign (aggregate_assigner &assigner, operation_up &op) override;
+
+  bool uses_objfile (struct objfile *objfile) override;
+
+  void dump (ui_file *stream, int depth) override;
+
+private:
+
+  operation_up m_val;
+};
+
+/* A character constant expression.  This is a separate operation so
+   that it can participate in resolution, so that TYPE'(CST) can
+   work correctly for enums with character enumerators.  */
+class ada_char_operation : public long_const_operation,
+			   public ada_resolvable
+{
+public:
+
+  using long_const_operation::long_const_operation;
+
+  bool resolve (struct expression *exp,
+		bool deprocedure_p,
+		bool parse_completion,
+		innermost_block_tracker *tracker,
+		struct type *context_type) override
+  {
+    /* This should never be called, because this class also implements
+       'replace'.  */
+    gdb_assert_not_reached ("unexpected call");
+  }
+
+  operation_up replace (operation_up &&owner,
+			struct expression *exp,
+			bool deprocedure_p,
+			bool parse_completion,
+			innermost_block_tracker *tracker,
+			struct type *context_type) override;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+};
+
+class ada_concat_operation : public concat_operation
+{
+public:
+
+  using concat_operation::concat_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+};
+
+} /* namespace expr */
+
+#endif /* GDB_ADA_EXP_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.20200303/gdb/ada-exp.y ./gdb/ada-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-exp.y	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-exp.y	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* YACC parser for Ada expressions, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,18 +35,16 @@
 
 %{
 
-#include "defs.h"
 #include <ctype.h>
+#include "gdbsupport/unordered_map.h"
 #include "expression.h"
 #include "value.h"
 #include "parser-defs.h"
 #include "language.h"
 #include "ada-lang.h"
-#include "bfd.h" /* Required by objfiles.h.  */
-#include "symfile.h" /* Required by objfiles.h.  */
-#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
 #include "frame.h"
 #include "block.h"
+#include "ada-exp.h"
 
 #define parse_type(ps) builtin_type (ps->gdbarch ())
 
@@ -67,11 +65,68 @@ struct name_info {
 
 static struct parser_state *pstate = NULL;
 
-static struct stoken empty_stoken = { "", 0 };
+using namespace expr;
 
-/* If expression is in the context of TYPE'(...), then TYPE, else
- * NULL.  */
-static struct type *type_qualifier;
+/* A convenience typedef.  */
+typedef std::unique_ptr<ada_assign_operation> ada_assign_up;
+
+/* Data that must be held for the duration of a parse.  */
+
+struct ada_parse_state
+{
+  explicit ada_parse_state (const char *expr)
+    : m_original_expr (expr)
+  {
+  }
+
+  std::string find_completion_bounds ();
+
+  const gdb_mpz *push_integer (gdb_mpz &&val)
+  {
+    auto &result = m_int_storage.emplace_back (new gdb_mpz (std::move (val)));
+    return result.get ();
+  }
+
+  /* The components being constructed during this parse.  */
+  std::vector<ada_component_up> components;
+
+  /* The associations being constructed during this parse.  */
+  std::vector<ada_association_up> associations;
+
+  /* The stack of currently active assignment expressions.  This is used
+     to implement '@', the target name symbol.  */
+  std::vector<ada_assign_up> assignments;
+
+  /* Track currently active iterated assignment names.  */
+  gdb::unordered_map<std::string, std::vector<ada_index_var_operation *>>
+       iterated_associations;
+
+  auto_obstack temp_space;
+
+  /* Depth of parentheses, used by the lexer.  */
+  int paren_depth = 0;
+
+  /* When completing, we'll return a special character at the end of the
+     input, to signal the completion position to the lexer.  This is
+     done because flex does not have a generally useful way to detect
+     EOF in a pattern.  This variable records whether the special
+     character has been emitted.  */
+  bool returned_complete = false;
+
+private:
+
+  /* We don't have a good way to manage non-POD data in Yacc, so store
+     values here.  The storage here is only valid for the duration of
+     the parse.  */
+  std::vector<std::unique_ptr<gdb_mpz>> m_int_storage;
+
+  /* The original expression string.  */
+  const char *m_original_expr;
+};
+
+/* The current Ada parser object.  */
+
+static ada_parse_state *ada_parser;
 
 int yyparse (void);
 
@@ -87,32 +142,323 @@ static void write_object_renaming (struc
 
 static struct type* write_var_or_type (struct parser_state *,
 				       const struct block *, struct stoken);
+static struct type *write_var_or_type_completion (struct parser_state *,
+						  const struct block *,
+						  struct stoken);
 
 static void write_name_assoc (struct parser_state *, struct stoken);
 
-static void write_exp_op_with_string (struct parser_state *, enum exp_opcode,
-				      struct stoken);
-
 static const struct block *block_lookup (const struct block *, const char *);
 
-static LONGEST convert_char_literal (struct type *, LONGEST);
-
 static void write_ambiguous_var (struct parser_state *,
-				 const struct block *, char *, int);
+				 const struct block *, const char *, int);
 
-static struct type *type_int (struct parser_state *);
+static struct type *type_for_char (struct parser_state *, ULONGEST);
 
-static struct type *type_long (struct parser_state *);
+static struct type *type_system_address (struct parser_state *);
 
-static struct type *type_long_long (struct parser_state *);
+/* Handle Ada type resolution for OP.  DEPROCEDURE_P and CONTEXT_TYPE
+   are passed to the resolve method, if called.  */
+static operation_up
+resolve (operation_up &&op, bool deprocedure_p, struct type *context_type)
+{
+  operation_up result = std::move (op);
+  ada_resolvable *res = dynamic_cast<ada_resolvable *> (result.get ());
+  if (res != nullptr)
+    return res->replace (std::move (result),
+			 pstate->expout.get (),
+			 deprocedure_p,
+			 pstate->parse_completion,
+			 pstate->block_tracker,
+			 context_type);
+  return result;
+}
 
-static struct type *type_long_double (struct parser_state *);
+/* Like parser_state::pop, but handles Ada type resolution.
+   DEPROCEDURE_P and CONTEXT_TYPE are passed to the resolve method, if
+   called.  */
+static operation_up
+ada_pop (bool deprocedure_p = true, struct type *context_type = nullptr)
+{
+  /* Of course it's ok to call parser_state::pop here... */
+  return resolve (pstate->pop (), deprocedure_p, context_type);
+}
 
-static struct type *type_char (struct parser_state *);
+/* Like parser_state::wrap, but use ada_pop to pop the value.  */
+template<typename T, typename... Args>
+void
+ada_wrap (Args... args)
+{
+  operation_up arg = ada_pop ();
+  pstate->push_new<T> (std::move (arg), std::forward<Args> (args)...);
+}
 
-static struct type *type_boolean (struct parser_state *);
+/* Create and push an address-of operation, as appropriate for Ada.
+   If TYPE is not NULL, the resulting operation will be wrapped in a
+   cast to TYPE.  */
+static void
+ada_addrof (struct type *type = nullptr)
+{
+  operation_up arg = ada_pop (false);
+  operation_up addr = make_operation<unop_addr_operation> (std::move (arg));
+  operation_up wrapped
+    = make_operation<ada_wrapped_operation> (std::move (addr));
+  if (type != nullptr)
+    wrapped = make_operation<unop_cast_operation> (std::move (wrapped), type);
+  pstate->push (std::move (wrapped));
+}
+
+/* Handle operator overloading.  Either returns a function all
+   operation wrapping the arguments, or it returns null, leaving the
+   caller to construct the appropriate operation.  If RHS is null, a
+   unary operator is assumed.  */
+static operation_up
+maybe_overload (enum exp_opcode op, operation_up &lhs, operation_up &rhs)
+{
+  struct value *args[2];
+
+  int nargs = 1;
+  args[0] = lhs->evaluate (nullptr, pstate->expout.get (),
+			   EVAL_AVOID_SIDE_EFFECTS);
+  if (rhs == nullptr)
+    args[1] = nullptr;
+  else
+    {
+      args[1] = rhs->evaluate (nullptr, pstate->expout.get (),
+			       EVAL_AVOID_SIDE_EFFECTS);
+      ++nargs;
+    }
 
-static struct type *type_system_address (struct parser_state *);
+  block_symbol fn = ada_find_operator_symbol (op, pstate->parse_completion,
+					      nargs, args);
+  if (fn.symbol == nullptr)
+    return {};
+
+  if (symbol_read_needs_frame (fn.symbol))
+    pstate->block_tracker->update (fn.block, INNERMOST_BLOCK_FOR_SYMBOLS);
+  operation_up callee = make_operation<ada_var_value_operation> (fn);
+
+  std::vector<operation_up> argvec;
+  argvec.push_back (std::move (lhs));
+  if (rhs != nullptr)
+    argvec.push_back (std::move (rhs));
+  return make_operation<ada_funcall_operation> (std::move (callee),
+						std::move (argvec));
+}
+
+/* Like parser_state::wrap, but use ada_pop to pop the value, and
+   handle unary overloading.  */
+template<typename T>
+void
+ada_wrap_overload (enum exp_opcode op)
+{
+  operation_up arg = ada_pop ();
+  operation_up empty;
+
+  operation_up call = maybe_overload (op, arg, empty);
+  if (call == nullptr)
+    call = make_operation<T> (std::move (arg));
+  pstate->push (std::move (call));
+}
+
+/* A variant of parser_state::wrap2 that uses ada_pop to pop both
+   operands, and then pushes a new Ada-wrapped operation of the
+   template type T.  */
+template<typename T>
+void
+ada_un_wrap2 (enum exp_opcode op)
+{
+  operation_up rhs = ada_pop ();
+  operation_up lhs = ada_pop ();
+
+  operation_up wrapped = maybe_overload (op, lhs, rhs);
+  if (wrapped == nullptr)
+    {
+      wrapped = make_operation<T> (std::move (lhs), std::move (rhs));
+      wrapped = make_operation<ada_wrapped_operation> (std::move (wrapped));
+    }
+  pstate->push (std::move (wrapped));
+}
+
+/* A variant of parser_state::wrap2 that uses ada_pop to pop both
+   operands.  Unlike ada_un_wrap2, ada_wrapped_operation is not
+   used.  */
+template<typename T>
+void
+ada_wrap2 (enum exp_opcode op)
+{
+  operation_up rhs = ada_pop ();
+  operation_up lhs = ada_pop ();
+  operation_up call = maybe_overload (op, lhs, rhs);
+  if (call == nullptr)
+    call = make_operation<T> (std::move (lhs), std::move (rhs));
+  pstate->push (std::move (call));
+}
+
+/* A variant of parser_state::wrap2 that uses ada_pop to pop both
+   operands.  OP is also passed to the constructor of the new binary
+   operation.  */
+template<typename T>
+void
+ada_wrap_op (enum exp_opcode op)
+{
+  operation_up rhs = ada_pop ();
+  operation_up lhs = ada_pop ();
+  operation_up call = maybe_overload (op, lhs, rhs);
+  if (call == nullptr)
+    call = make_operation<T> (op, std::move (lhs), std::move (rhs));
+  pstate->push (std::move (call));
+}
+
+/* Pop three operands using ada_pop, then construct a new ternary
+   operation of type T and push it.  */
+template<typename T>
+void
+ada_wrap3 ()
+{
+  operation_up rhs = ada_pop ();
+  operation_up mid = ada_pop ();
+  operation_up lhs = ada_pop ();
+  pstate->push_new<T> (std::move (lhs), std::move (mid), std::move (rhs));
+}
+
+/* Pop NARGS operands, then a callee operand, and use these to
+   construct and push a new Ada function call operation.  */
+static void
+ada_funcall (int nargs)
+{
+  /* We use the ordinary pop here, because we're going to do
+     resolution in a separate step, in order to handle array
+     indices.  */
+  std::vector<operation_up> args = pstate->pop_vector (nargs);
+  /* Call parser_state::pop here, because we don't want to
+     function-convert the callee slot of a call we're already
+     constructing.  */
+  operation_up callee = pstate->pop ();
+
+  ada_var_value_operation *vvo
+    = dynamic_cast<ada_var_value_operation *> (callee.get ());
+  int array_arity = 0;
+  struct type *callee_t = nullptr;
+  if (vvo == nullptr
+      || vvo->get_symbol ()->domain () != UNDEF_DOMAIN)
+    {
+      struct value *callee_v = callee->evaluate (nullptr,
+						 pstate->expout.get (),
+						 EVAL_AVOID_SIDE_EFFECTS);
+      callee_t = ada_check_typedef (callee_v->type ());
+      array_arity = ada_array_arity (callee_t);
+    }
+
+  for (int i = 0; i < nargs; ++i)
+    {
+      struct type *subtype = nullptr;
+      if (i < array_arity)
+	subtype = ada_index_type (callee_t, i + 1, "array type");
+      args[i] = resolve (std::move (args[i]), true, subtype);
+    }
+
+  std::unique_ptr<ada_funcall_operation> funcall
+    (new ada_funcall_operation (std::move (callee), std::move (args)));
+  funcall->resolve (pstate->expout.get (), true, pstate->parse_completion,
+		    pstate->block_tracker, nullptr);
+  pstate->push (std::move (funcall));
+}
+
+/* Create a new ada_component_up of the indicated type and arguments,
+   and push it on the global 'components' vector.  */
+template<typename T, typename... Arg>
+void
+push_component (Arg... args)
+{
+  ada_parser->components.emplace_back (new T (std::forward<Arg> (args)...));
+}
+
+/* Examine the final element of the 'components' vector, and return it
+   as a pointer to an ada_choices_component.  The caller is
+   responsible for ensuring that the final element is in fact an
+   ada_choices_component.  */
+static ada_choices_component *
+choice_component ()
+{
+  ada_component *last = ada_parser->components.back ().get ();
+  return gdb::checked_static_cast<ada_choices_component *> (last);
+}
+
+/* Pop the most recent component from the global stack, and return
+   it.  */
+static ada_component_up
+pop_component ()
+{
+  ada_component_up result = std::move (ada_parser->components.back ());
+  ada_parser->components.pop_back ();
+  return result;
+}
+
+/* Pop the N most recent components from the global stack, and return
+   them in a vector.  */
+static std::vector<ada_component_up>
+pop_components (int n)
+{
+  std::vector<ada_component_up> result (n);
+  for (int i = 1; i <= n; ++i)
+    result[n - i] = pop_component ();
+  return result;
+}
+
+/* Create a new ada_association_up of the indicated type and
+   arguments, and push it on the global 'associations' vector.  */
+template<typename T, typename... Arg>
+void
+push_association (Arg... args)
+{
+  ada_parser->associations.emplace_back (new T (std::forward<Arg> (args)...));
+}
+
+/* Pop the most recent association from the global stack, and return
+   it.  */
+static ada_association_up
+pop_association ()
+{
+  ada_association_up result = std::move (ada_parser->associations.back ());
+  ada_parser->associations.pop_back ();
+  return result;
+}
+
+/* Pop the N most recent associations from the global stack, and
+   return them in a vector.  */
+static std::vector<ada_association_up>
+pop_associations (int n)
+{
+  std::vector<ada_association_up> result (n);
+  for (int i = 1; i <= n; ++i)
+    result[n - i] = pop_association ();
+  return result;
+}
+
+/* Expression completer for attributes.  */
+struct ada_tick_completer : public expr_completion_base
+{
+  explicit ada_tick_completer (std::string &&name)
+    : m_name (std::move (name))
+  {
+  }
+
+  bool complete (struct expression *exp,
+		 completion_tracker &tracker) override;
+
+private:
+
+  std::string m_name;
+};
+
+/* Make a new ada_tick_completer and wrap it in a unique pointer.  */
+static std::unique_ptr<expr_completion_base>
+make_tick_completer (struct stoken tok)
+{
+  return (std::unique_ptr<expr_completion_base>
+	  (new ada_tick_completer (std::string (tok.ptr, tok.length))));
+}
 
 %}
 
@@ -120,10 +466,14 @@ static struct type *type_system_address
   {
     LONGEST lval;
     struct {
-      LONGEST val;
+      const gdb_mpz *val;
       struct type *type;
     } typed_val;
     struct {
+      LONGEST val;
+      struct type *type;
+    } typed_char;
+    struct {
       gdb_byte val[16];
       struct type *type;
     } typed_val_float;
@@ -135,20 +485,18 @@ static struct type *type_system_address
 
 %type <lval> positional_list component_groups component_associations
 %type <lval> aggregate_component_list 
-%type <tval> var_or_type
+%type <tval> var_or_type type_prefix opt_type_prefix
 
-%token <typed_val> INT NULL_PTR CHARLIT
+%token <typed_val> INT NULL_PTR
+%token <typed_char> CHARLIT
 %token <typed_val_float> FLOAT
 %token TRUEKEYWORD FALSEKEYWORD
+%token WITH DELTA
 %token COLONCOLON
-%token <sval> STRING NAME DOT_ID 
+%token <sval> STRING NAME DOT_ID TICK_COMPLETE DOT_COMPLETE NAME_COMPLETE
 %type <bval> block
 %type <lval> arglist tick_arglist
 
-%type <tval> save_qualifier
-
-%token DOT_ALL
-
 /* Special type cases, put in to allow the parser to distinguish different
    legal basetypes.  */
 %token <sval> DOLLAR_VARIABLE
@@ -171,13 +519,14 @@ static struct type *type_system_address
 
 %right TICK_ACCESS TICK_ADDRESS TICK_FIRST TICK_LAST TICK_LENGTH
 %right TICK_MAX TICK_MIN TICK_MODULUS
-%right TICK_POS TICK_RANGE TICK_SIZE TICK_TAG TICK_VAL
+%right TICK_POS TICK_RANGE TICK_SIZE TICK_OBJECT_SIZE TICK_TAG TICK_VAL
+%right TICK_COMPLETE TICK_ENUM_REP TICK_ENUM_VAL
  /* The following are right-associative only so that reductions at this
     precedence have lower precedence than '.' and '('.  The syntax still
     forces a.b.c, e.g., to be LEFT-associated.  */
-%right '.' '(' '[' DOT_ID DOT_ALL
+%right '.' '(' '[' DOT_ID DOT_COMPLETE
 
-%token NEW OTHERS
+%token NEW OTHERS FOR
 
 
 %%
@@ -188,67 +537,92 @@ start   :	exp1
 /* Expressions, including the sequencing operator.  */
 exp1	:	exp
 	|	exp1 ';' exp
-			{ write_exp_elt_opcode (pstate, BINOP_COMMA); }
-	| 	primary ASSIGN exp   /* Extension for convenience */
-			{ write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+			{ ada_wrap2<comma_operation> (BINOP_COMMA); }
+	| 	primary ASSIGN
+			{
+			  ada_parser->assignments.emplace_back
+			    (new ada_assign_operation (ada_pop (), nullptr));
+			}
+		exp   /* Extension for convenience */
+			{
+			  ada_assign_up assign
+			    = std::move (ada_parser->assignments.back ());
+			  ada_parser->assignments.pop_back ();
+			  value *lhs_val = (assign->eval_for_resolution
+					    (pstate->expout.get ()));
+
+			  operation_up rhs = pstate->pop ();
+			  rhs = resolve (std::move (rhs), true,
+					 lhs_val->type ());
+
+			  assign->set_rhs (std::move (rhs));
+			  pstate->push (std::move (assign));
+			}
 	;
 
 /* Expressions, not including the sequencing operator.  */
-primary :	primary DOT_ALL
-			{ write_exp_elt_opcode (pstate, UNOP_IND); }
-	;
 
 primary :	primary DOT_ID
-			{ write_exp_op_with_string (pstate, STRUCTOP_STRUCT,
-						    $2); }
+			{
+			  if (strcmp ($2.ptr, "all") == 0)
+			    ada_wrap<ada_unop_ind_operation> ();
+			  else
+			    {
+			      operation_up arg = ada_pop ();
+			      pstate->push_new<ada_structop_operation>
+				(std::move (arg), copy_name ($2));
+			    }
+			}
 	;
 
-primary :	primary '(' arglist ')'
+primary :	primary DOT_COMPLETE
 			{
-			  write_exp_elt_opcode (pstate, OP_FUNCALL);
-			  write_exp_elt_longcst (pstate, $3);
-			  write_exp_elt_opcode (pstate, OP_FUNCALL);
-		        }
+			  /* This is done even for ".all", because
+			     that might be a prefix.  */
+			  operation_up arg = ada_pop ();
+			  ada_structop_operation *str_op
+			    = (new ada_structop_operation
+			       (std::move (arg), copy_name ($2)));
+			  str_op->set_prefix (ada_parser->find_completion_bounds ());
+			  pstate->push (operation_up (str_op));
+			  pstate->mark_struct_expression (str_op);
+			}
+	;
+
+primary :	primary '(' arglist ')'
+			{ ada_funcall ($3); }
 	|	var_or_type '(' arglist ')'
 			{
 			  if ($1 != NULL)
 			    {
 			      if ($3 != 1)
 				error (_("Invalid conversion"));
-			      write_exp_elt_opcode (pstate, UNOP_CAST);
-			      write_exp_elt_type (pstate, $1);
-			      write_exp_elt_opcode (pstate, UNOP_CAST);
+			      operation_up arg = ada_pop ();
+			      pstate->push_new<unop_cast_operation>
+				(std::move (arg), $1);
 			    }
 			  else
-			    {
-			      write_exp_elt_opcode (pstate, OP_FUNCALL);
-			      write_exp_elt_longcst (pstate, $3);
-			      write_exp_elt_opcode (pstate, OP_FUNCALL);
-			    }
+			    ada_funcall ($3);
 			}
 	;
 
-primary :	var_or_type '\'' save_qualifier { type_qualifier = $1; } 
-		   '(' exp ')'
+primary :	var_or_type '\'' '(' exp ')'
 			{
 			  if ($1 == NULL)
 			    error (_("Type required for qualification"));
-			  write_exp_elt_opcode (pstate, UNOP_QUAL);
-			  write_exp_elt_type (pstate, $1);
-			  write_exp_elt_opcode (pstate, UNOP_QUAL);
-			  type_qualifier = $3;
+			  operation_up arg = ada_pop (true,
+						      check_typedef ($1));
+			  pstate->push_new<ada_qual_operation>
+			    (std::move (arg), $1);
 			}
 	;
 
-save_qualifier : 	{ $$ = type_qualifier; }
-	;
-
 primary :
 		primary '(' simple_exp DOTDOT simple_exp ')'
-			{ write_exp_elt_opcode (pstate, TERNOP_SLICE); }
+			{ ada_wrap3<ada_ternop_slice_operation> (); }
 	|	var_or_type '(' simple_exp DOTDOT simple_exp ')'
 			{ if ($1 == NULL) 
-                            write_exp_elt_opcode (pstate, TERNOP_SLICE);
+			    ada_wrap3<ada_ternop_slice_operation> ();
 			  else
 			    error (_("Cannot slice a type"));
 			}
@@ -267,38 +641,64 @@ primary :	'(' exp1 ')'	{ }
 
 primary :	var_or_type	%prec VAR
 			{ if ($1 != NULL)
-			    {
-			      write_exp_elt_opcode (pstate, OP_TYPE);
-			      write_exp_elt_type (pstate, $1);
-			      write_exp_elt_opcode (pstate, OP_TYPE);
-			    }
+			    pstate->push_new<type_operation> ($1);
 			}
 	;
 
 primary :	DOLLAR_VARIABLE /* Various GDB extensions */
-			{ write_dollar_variable (pstate, $1); }
+			{ pstate->push_dollar ($1); }
 	;
 
 primary :     	aggregate
-        ;        
+			{
+			  pstate->push_new<ada_aggregate_operation>
+			    (pop_component ());
+			}
+	;        
+
+primary :	'@'
+			{
+			  if (ada_parser->assignments.empty ())
+			    error (_("the target name symbol ('@') may only "
+				     "appear in an assignment context"));
+			  ada_assign_operation *current
+			    = ada_parser->assignments.back ().get ();
+			  pstate->push_new<ada_target_operation> (current);
+			}
+	;
 
 simple_exp : 	primary
 	;
 
 simple_exp :	'-' simple_exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_NEG); }
+			{ ada_wrap_overload<ada_neg_operation> (UNOP_NEG); }
 	;
 
 simple_exp :	'+' simple_exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_PLUS); }
+			{
+			  operation_up arg = ada_pop ();
+			  operation_up empty;
+
+			  /* If an overloaded operator was found, use
+			     it.  Otherwise, unary + has no effect and
+			     the argument can be pushed instead.  */
+			  operation_up call = maybe_overload (UNOP_PLUS, arg,
+							      empty);
+			  if (call != nullptr)
+			    arg = std::move (call);
+			  pstate->push (std::move (arg));
+			}
 	;
 
 simple_exp :	NOT simple_exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+			{
+			  ada_wrap_overload<unary_logical_not_operation>
+			    (UNOP_LOGICAL_NOT);
+			}
 	;
 
 simple_exp :    ABS simple_exp	   %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_ABS); }
+			{ ada_wrap_overload<ada_abs_operation> (UNOP_ABS); }
 	;
 
 arglist	:		{ $$ = 0; }
@@ -319,111 +719,114 @@ primary :	'{' var_or_type '}' primary  %
 			{ 
 			  if ($2 == NULL)
 			    error (_("Type required within braces in coercion"));
-			  write_exp_elt_opcode (pstate, UNOP_MEMVAL);
-			  write_exp_elt_type (pstate, $2);
-			  write_exp_elt_opcode (pstate, UNOP_MEMVAL);
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<unop_memval_operation>
+			    (std::move (arg), $2);
 			}
 	;
 
 /* Binary operators in order of decreasing precedence.  */
 
 simple_exp 	: 	simple_exp STARSTAR simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_EXP); }
+			{ ada_wrap2<ada_binop_exp_operation> (BINOP_EXP); }
 	;
 
 simple_exp	:	simple_exp '*' simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_MUL); }
+			{ ada_wrap2<ada_binop_mul_operation> (BINOP_MUL); }
 	;
 
 simple_exp	:	simple_exp '/' simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_DIV); }
+			{ ada_wrap2<ada_binop_div_operation> (BINOP_DIV); }
 	;
 
 simple_exp	:	simple_exp REM simple_exp /* May need to be fixed to give correct Ada REM */
-			{ write_exp_elt_opcode (pstate, BINOP_REM); }
+			{ ada_wrap2<ada_binop_rem_operation> (BINOP_REM); }
 	;
 
 simple_exp	:	simple_exp MOD simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_MOD); }
+			{ ada_wrap2<ada_binop_mod_operation> (BINOP_MOD); }
 	;
 
 simple_exp	:	simple_exp '@' simple_exp	/* GDB extension */
-			{ write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+			{ ada_wrap2<repeat_operation> (BINOP_REPEAT); }
 	;
 
 simple_exp	:	simple_exp '+' simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_ADD); }
+			{ ada_wrap_op<ada_binop_addsub_operation> (BINOP_ADD); }
 	;
 
 simple_exp	:	simple_exp '&' simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_CONCAT); }
+			{ ada_wrap2<ada_concat_operation> (BINOP_CONCAT); }
 	;
 
 simple_exp	:	simple_exp '-' simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_SUB); }
+			{ ada_wrap_op<ada_binop_addsub_operation> (BINOP_SUB); }
 	;
 
 relation :	simple_exp
 	;
 
 relation :	simple_exp '=' simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+			{ ada_wrap_op<ada_binop_equal_operation> (BINOP_EQUAL); }
 	;
 
 relation :	simple_exp NOTEQUAL simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+			{ ada_wrap_op<ada_binop_equal_operation> (BINOP_NOTEQUAL); }
 	;
 
 relation :	simple_exp LEQ simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_LEQ); }
+			{ ada_un_wrap2<leq_operation> (BINOP_LEQ); }
 	;
 
 relation :	simple_exp IN simple_exp DOTDOT simple_exp
-			{ write_exp_elt_opcode (pstate, TERNOP_IN_RANGE); }
-        |       simple_exp IN primary TICK_RANGE tick_arglist
-			{ write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
-			  write_exp_elt_longcst (pstate, (LONGEST) $5);
-			  write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
+			{ ada_wrap3<ada_ternop_range_operation> (); }
+	|       simple_exp IN primary TICK_RANGE tick_arglist
+			{
+			  operation_up rhs = ada_pop ();
+			  operation_up lhs = ada_pop ();
+			  pstate->push_new<ada_binop_in_bounds_operation>
+			    (std::move (lhs), std::move (rhs), $5);
 			}
  	|	simple_exp IN var_or_type	%prec TICK_ACCESS
 			{ 
 			  if ($3 == NULL)
 			    error (_("Right operand of 'in' must be type"));
-			  write_exp_elt_opcode (pstate, UNOP_IN_RANGE);
-		          write_exp_elt_type (pstate, $3);
-		          write_exp_elt_opcode (pstate, UNOP_IN_RANGE);
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_range_operation>
+			    (std::move (arg), $3);
 			}
 	|	simple_exp NOT IN simple_exp DOTDOT simple_exp
-			{ write_exp_elt_opcode (pstate, TERNOP_IN_RANGE);
-		          write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT);
-			}
-        |       simple_exp NOT IN primary TICK_RANGE tick_arglist
-			{ write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
-			  write_exp_elt_longcst (pstate, (LONGEST) $6);
-			  write_exp_elt_opcode (pstate, BINOP_IN_BOUNDS);
-		          write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT);
+			{ ada_wrap3<ada_ternop_range_operation> ();
+			  ada_wrap<unary_logical_not_operation> (); }
+	|       simple_exp NOT IN primary TICK_RANGE tick_arglist
+			{
+			  operation_up rhs = ada_pop ();
+			  operation_up lhs = ada_pop ();
+			  pstate->push_new<ada_binop_in_bounds_operation>
+			    (std::move (lhs), std::move (rhs), $6);
+			  ada_wrap<unary_logical_not_operation> ();
 			}
  	|	simple_exp NOT IN var_or_type	%prec TICK_ACCESS
 			{ 
 			  if ($4 == NULL)
 			    error (_("Right operand of 'in' must be type"));
-			  write_exp_elt_opcode (pstate, UNOP_IN_RANGE);
-		          write_exp_elt_type (pstate, $4);
-		          write_exp_elt_opcode (pstate, UNOP_IN_RANGE);
-		          write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT);
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_range_operation>
+			    (std::move (arg), $4);
+			  ada_wrap<unary_logical_not_operation> ();
 			}
 	;
 
 relation :	simple_exp GEQ simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_GEQ); }
+			{ ada_un_wrap2<geq_operation> (BINOP_GEQ); }
 	;
 
 relation :	simple_exp '<' simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_LESS); }
+			{ ada_un_wrap2<less_operation> (BINOP_LESS); }
 	;
 
 relation :	simple_exp '>' simple_exp
-			{ write_exp_elt_opcode (pstate, BINOP_GTR); }
+			{ ada_un_wrap2<gtr_operation> (BINOP_GTR); }
 	;
 
 exp	:	relation
@@ -436,37 +839,45 @@ exp	:	relation
 
 and_exp :
 		relation _AND_ relation 
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+			{ ada_wrap2<bitwise_and_operation>
+			    (BINOP_BITWISE_AND); }
 	|	and_exp _AND_ relation
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+			{ ada_wrap2<bitwise_and_operation>
+			    (BINOP_BITWISE_AND); }
 	;
 
 and_then_exp :
 	       relation _AND_ THEN relation
-			{ write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+			{ ada_wrap2<logical_and_operation>
+			    (BINOP_LOGICAL_AND); }
 	|	and_then_exp _AND_ THEN relation
-			{ write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
-        ;
+			{ ada_wrap2<logical_and_operation>
+			    (BINOP_LOGICAL_AND); }
+	;
 
 or_exp :
 		relation OR relation 
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+			{ ada_wrap2<bitwise_ior_operation>
+			    (BINOP_BITWISE_IOR); }
 	|	or_exp OR relation
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+			{ ada_wrap2<bitwise_ior_operation>
+			    (BINOP_BITWISE_IOR); }
 	;
 
 or_else_exp :
 	       relation OR ELSE relation
-			{ write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+			{ ada_wrap2<logical_or_operation> (BINOP_LOGICAL_OR); }
 	|      or_else_exp OR ELSE relation
-			{ write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
-        ;
+			{ ada_wrap2<logical_or_operation> (BINOP_LOGICAL_OR); }
+	;
 
 xor_exp :       relation XOR relation
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+			{ ada_wrap2<bitwise_xor_operation>
+			    (BINOP_BITWISE_XOR); }
 	|	xor_exp XOR relation
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
-        ;
+			{ ada_wrap2<bitwise_xor_operation>
+			    (BINOP_BITWISE_XOR); }
+	;
 
 /* Primaries can denote types (OP_TYPE).  In cases such as 
    primary TICK_ADDRESS, where a type would be invalid, it will be
@@ -477,99 +888,143 @@ xor_exp :       relation XOR relation
    aType'access evaluates to a type that evaluate_subexp attempts to 
    evaluate. */
 primary :	primary TICK_ACCESS
-			{ write_exp_elt_opcode (pstate, UNOP_ADDR); }
+			{ ada_addrof (); }
 	|	primary TICK_ADDRESS
-			{ 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);
+			{ ada_addrof (type_system_address (pstate)); }
+	|	primary TICK_COMPLETE
+			{
+			  pstate->mark_completion (make_tick_completer ($2));
 			}
 	|	primary TICK_FIRST tick_arglist
-			{ write_int (pstate, $3, type_int (pstate));
-			  write_exp_elt_opcode (pstate, OP_ATR_FIRST); }
+			{
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_atr_operation>
+			    (std::move (arg), OP_ATR_FIRST, $3);
+			}
 	|	primary TICK_LAST tick_arglist
-			{ write_int (pstate, $3, type_int (pstate));
-			  write_exp_elt_opcode (pstate, OP_ATR_LAST); }
+			{
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_atr_operation>
+			    (std::move (arg), OP_ATR_LAST, $3);
+			}
 	| 	primary TICK_LENGTH tick_arglist
-			{ write_int (pstate, $3, type_int (pstate));
-			  write_exp_elt_opcode (pstate, OP_ATR_LENGTH); }
-        |       primary TICK_SIZE
-			{ write_exp_elt_opcode (pstate, OP_ATR_SIZE); }
+			{
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_unop_atr_operation>
+			    (std::move (arg), OP_ATR_LENGTH, $3);
+			}
+	|       primary TICK_SIZE
+			{ ada_wrap<ada_atr_size_operation> (true); }
+	|       primary TICK_OBJECT_SIZE
+			{ ada_wrap<ada_atr_size_operation> (false); }
 	|	primary TICK_TAG
-			{ write_exp_elt_opcode (pstate, OP_ATR_TAG); }
-        |       opt_type_prefix TICK_MIN '(' exp ',' exp ')'
-			{ write_exp_elt_opcode (pstate, OP_ATR_MIN); }
-        |       opt_type_prefix TICK_MAX '(' exp ',' exp ')'
-			{ write_exp_elt_opcode (pstate, OP_ATR_MAX); }
+			{ ada_wrap<ada_atr_tag_operation> (); }
+	|       opt_type_prefix TICK_MIN '(' exp ',' exp ')'
+			{ ada_wrap2<ada_binop_min_operation> (BINOP_MIN); }
+	|       opt_type_prefix TICK_MAX '(' exp ',' exp ')'
+			{ ada_wrap2<ada_binop_max_operation> (BINOP_MAX); }
 	| 	opt_type_prefix TICK_POS '(' exp ')'
-			{ write_exp_elt_opcode (pstate, OP_ATR_POS); }
+			{ ada_wrap<ada_pos_operation> (); }
 	|	type_prefix TICK_VAL '(' exp ')'
-			{ write_exp_elt_opcode (pstate, OP_ATR_VAL); }
+			{
+			  operation_up arg = ada_pop ();
+			  pstate->push_new<ada_atr_val_operation>
+			    ($1, std::move (arg));
+			}
+	|	type_prefix TICK_ENUM_REP '(' exp ')'
+			{
+			  operation_up arg = ada_pop (true, $1);
+			  pstate->push_new<ada_atr_enum_rep_operation>
+			    ($1, std::move (arg));
+			}
+	|	type_prefix TICK_ENUM_VAL '(' exp ')'
+			{
+			  operation_up arg = ada_pop (true, $1);
+			  pstate->push_new<ada_atr_enum_val_operation>
+			    ($1, std::move (arg));
+			}
 	|	type_prefix TICK_MODULUS
-			{ write_exp_elt_opcode (pstate, OP_ATR_MODULUS); }
+			{
+			  struct type *type_arg = check_typedef ($1);
+			  if (!ada_is_modular_type (type_arg))
+			    error (_("'modulus must be applied to modular type"));
+			  write_int (pstate, ada_modulus (type_arg),
+				     type_arg->target_type ());
+			}
 	;
 
 tick_arglist :			%prec '('
 			{ $$ = 1; }
 	| 	'(' INT ')'
-			{ $$ = $2.val; }
+			{ $$ = $2.val->as_integer<LONGEST> (); }
 	;
 
 type_prefix :
-                var_or_type
+		var_or_type
 			{ 
 			  if ($1 == NULL)
 			    error (_("Prefix must be type"));
-			  write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate, $1);
-			  write_exp_elt_opcode (pstate, OP_TYPE); }
+			  $$ = $1;
+			}
 	;
 
 opt_type_prefix :
 		type_prefix
+			{ $$ = $1; }
 	| 	/* EMPTY */
-			{ write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate,
-					  parse_type (pstate)->builtin_void);
-			  write_exp_elt_opcode (pstate, OP_TYPE); }
+			{ $$ = parse_type (pstate)->builtin_void; }
 	;
 
 
 primary	:	INT
-			{ write_int (pstate, (LONGEST) $1.val, $1.type); }
+			{
+			  pstate->push_new<long_const_operation> ($1.type, *$1.val);
+			  ada_wrap<ada_wrapped_operation> ();
+			}
 	;
 
 primary	:	CHARLIT
-                  { write_int (pstate,
-			       convert_char_literal (type_qualifier, $1.val),
-			       (type_qualifier == NULL) 
-			       ? $1.type : type_qualifier);
-		  }
+			{
+			  pstate->push_new<ada_char_operation> ($1.type, $1.val);
+			}
 	;
 
 primary	:	FLOAT
-			{ write_exp_elt_opcode (pstate, OP_FLOAT);
-			  write_exp_elt_type (pstate, $1.type);
-			  write_exp_elt_floatcst (pstate, $1.val);
-			  write_exp_elt_opcode (pstate, OP_FLOAT);
+			{
+			  float_data data;
+			  std::copy (std::begin ($1.val), std::end ($1.val),
+				     std::begin (data));
+			  pstate->push_new<float_const_operation>
+			    ($1.type, data);
+			  ada_wrap<ada_wrapped_operation> ();
 			}
 	;
 
 primary	:	NULL_PTR
-			{ write_int (pstate, 0, type_int (pstate)); }
+			{
+			  struct type *null_ptr_type
+			    = lookup_pointer_type (parse_type (pstate)->builtin_int0);
+			  write_int (pstate, 0, null_ptr_type);
+			}
 	;
 
 primary	:	STRING
 			{ 
-			  write_exp_op_with_string (pstate, OP_STRING, $1);
+			  pstate->push_new<ada_string_operation>
+			    (copy_name ($1));
 			}
 	;
 
 primary :	TRUEKEYWORD
-			{ write_int (pstate, 1, type_boolean (pstate)); }
-        |	FALSEKEYWORD
-			{ write_int (pstate, 0, type_boolean (pstate)); }
+			{
+			  write_int (pstate, 1,
+				     parse_type (pstate)->builtin_bool);
+			}
+	|	FALSEKEYWORD
+			{
+			  write_int (pstate, 0,
+				     parse_type (pstate)->builtin_bool);
+			}
 	;
 
 primary	: 	NEW NAME
@@ -578,13 +1033,25 @@ primary	: 	NEW NAME
 
 var_or_type:	NAME   	    %prec VAR
 				{ $$ = write_var_or_type (pstate, NULL, $1); }
+	|	NAME_COMPLETE %prec VAR
+				{
+				  $$ = write_var_or_type_completion (pstate,
+								     NULL,
+								     $1);
+				}
 	|	block NAME  %prec VAR
-                                { $$ = write_var_or_type (pstate, $1, $2); }
+				{ $$ = write_var_or_type (pstate, $1, $2); }
+	|	block NAME_COMPLETE  %prec VAR
+				{
+				  $$ = write_var_or_type_completion (pstate,
+								     $1,
+								     $2);
+				}
 	|       NAME TICK_ACCESS 
 			{ 
 			  $$ = write_var_or_type (pstate, NULL, $1);
 			  if ($$ == NULL)
-			    write_exp_elt_opcode (pstate, UNOP_ADDR);
+			    ada_addrof ();
 			  else
 			    $$ = lookup_pointer_type ($$);
 			}
@@ -592,7 +1059,7 @@ var_or_type:	NAME   	    %prec VAR
 			{ 
 			  $$ = write_var_or_type (pstate, $1, $2);
 			  if ($$ == NULL)
-			    write_exp_elt_opcode (pstate, UNOP_ADDR);
+			    ada_addrof ();
 			  else
 			    $$ = lookup_pointer_type ($$);
 			}
@@ -606,20 +1073,31 @@ block   :       NAME COLONCOLON
 	;
 
 aggregate :
-		'(' aggregate_component_list ')'  
+		'(' exp WITH DELTA aggregate_component_list ')'
 			{
-			  write_exp_elt_opcode (pstate, OP_AGGREGATE);
-			  write_exp_elt_longcst (pstate, $2);
-			  write_exp_elt_opcode (pstate, OP_AGGREGATE);
-		        }
+			  std::vector<ada_component_up> components
+			    = pop_components ($5);
+			  operation_up base = ada_pop ();
+
+			  push_component<ada_aggregate_component>
+			    (std::move (base), std::move (components));
+			}
+	|	'(' aggregate_component_list ')'
+			{
+			  std::vector<ada_component_up> components
+			    = pop_components ($2);
+
+			  push_component<ada_aggregate_component>
+			    (std::move (components));
+			}
 	;
 
 aggregate_component_list :
 		component_groups	 { $$ = $1; }
 	|	positional_list exp
-			{ write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  write_exp_elt_longcst (pstate, $1);
-			  write_exp_elt_opcode (pstate, OP_POSITIONAL);
+			{
+			  push_component<ada_positional_component>
+			    ($1, ada_pop ());
 			  $$ = $1 + 1;
 			}
 	|	positional_list component_groups
@@ -628,15 +1106,15 @@ aggregate_component_list :
 
 positional_list :
 		exp ','
-			{ write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  write_exp_elt_longcst (pstate, 0);
-			  write_exp_elt_opcode (pstate, OP_POSITIONAL);
+			{
+			  push_component<ada_positional_component>
+			    (0, ada_pop ());
 			  $$ = 1;
 			} 
 	|	positional_list exp ','
-			{ write_exp_elt_opcode (pstate, OP_POSITIONAL);
-			  write_exp_elt_longcst (pstate, $1);
-			  write_exp_elt_opcode (pstate, OP_POSITIONAL);
+			{
+			  push_component<ada_positional_component>
+			    ($1, ada_pop ());
 			  $$ = $1 + 1; 
 			}
 	;
@@ -649,16 +1127,44 @@ component_groups:
 	;
 
 others 	:	OTHERS ARROW exp
-			{ write_exp_elt_opcode (pstate, OP_OTHERS); }
+			{
+			  push_component<ada_others_component> (ada_pop ());
+			}
 	;
 
 component_group :
 		component_associations
 			{
-			  write_exp_elt_opcode (pstate, OP_CHOICES);
-			  write_exp_elt_longcst (pstate, $1);
-			  write_exp_elt_opcode (pstate, OP_CHOICES);
-		        }
+			  ada_choices_component *choices = choice_component ();
+			  choices->set_associations (pop_associations ($1));
+			}
+	|	FOR NAME IN
+			{
+			  std::string name = copy_name ($2);
+
+			  auto iter = ada_parser->iterated_associations.find (name);
+			  if (iter != ada_parser->iterated_associations.end ())
+			    error (_("Nested use of index parameter '%s'"),
+				   name.c_str ());
+
+			  ada_parser->iterated_associations[name] = {};
+			}
+		component_associations
+			{
+			  std::string name = copy_name ($2);
+
+			  ada_choices_component *choices = choice_component ();
+			  choices->set_associations (pop_associations ($5));
+
+			  auto iter = ada_parser->iterated_associations.find (name);
+			  gdb_assert (iter != ada_parser->iterated_associations.end ());
+			  for (ada_index_var_operation *var : iter->second)
+			    var->set_choices (choices);
+
+			  ada_parser->iterated_associations.erase (name);
+
+			  choices->set_name (std::move (name));
+			}
 	;
 
 /* We use this somewhat obscure definition in order to handle NAME => and
@@ -667,36 +1173,60 @@ component_group :
    decisions until after the => or '|', we convert the ambiguity to a 
    resolved shift/reduce conflict. */
 component_associations :
-		NAME ARROW 
-			{ write_name_assoc (pstate, $1); }
-		    exp	{ $$ = 1; }
+		NAME ARROW exp
+			{
+			  push_component<ada_choices_component> (ada_pop ());
+			  write_name_assoc (pstate, $1);
+			  $$ = 1;
+			}
 	|	simple_exp ARROW exp
-			{ $$ = 1; }
-	|	simple_exp DOTDOT simple_exp ARROW 
-			{ write_exp_elt_opcode (pstate, OP_DISCRETE_RANGE);
-			  write_exp_op_with_string (pstate, OP_NAME,
-						    empty_stoken);
-			}
-		    exp { $$ = 1; }
-	|	NAME '|' 
-		        { write_name_assoc (pstate, $1); }
-		    component_associations  { $$ = $4 + 1; }
-	|	simple_exp '|'  
-	            component_associations  { $$ = $3 + 1; }
-	|	simple_exp DOTDOT simple_exp '|'
-			{ write_exp_elt_opcode (pstate, OP_DISCRETE_RANGE); }
-		    component_associations  { $$ = $6 + 1; }
+			{
+			  push_component<ada_choices_component> (ada_pop ());
+			  push_association<ada_name_association> (ada_pop ());
+			  $$ = 1;
+			}
+	|	simple_exp DOTDOT simple_exp ARROW exp
+			{
+			  push_component<ada_choices_component> (ada_pop ());
+			  operation_up rhs = ada_pop ();
+			  operation_up lhs = ada_pop ();
+			  push_association<ada_discrete_range_association>
+			    (std::move (lhs), std::move (rhs));
+			  $$ = 1;
+			}
+	|	NAME '|' component_associations
+			{
+			  write_name_assoc (pstate, $1);
+			  $$ = $3 + 1;
+			}
+	|	simple_exp '|' component_associations
+			{
+			  push_association<ada_name_association> (ada_pop ());
+			  $$ = $3 + 1;
+			}
+	|	simple_exp DOTDOT simple_exp '|' component_associations
+
+			{
+			  operation_up rhs = ada_pop ();
+			  operation_up lhs = ada_pop ();
+			  push_association<ada_discrete_range_association>
+			    (std::move (lhs), std::move (rhs));
+			  $$ = $5 + 1;
+			}
 	;
 
 /* Some extensions borrowed from C, for the benefit of those who find they
    can't get used to Ada notation in GDB.  */
 
 primary	:	'*' primary		%prec '.'
-			{ write_exp_elt_opcode (pstate, UNOP_IND); }
+			{ ada_wrap<ada_unop_ind_operation> (); }
 	|	'&' primary		%prec '.'
-			{ write_exp_elt_opcode (pstate, UNOP_ADDR); }
+			{ ada_addrof (); }
 	|	primary '[' exp ']'
-			{ write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+			{
+			  ada_wrap2<subscript_operation> (BINOP_SUBSCRIPT);
+			  ada_wrap<ada_wrapped_operation> ();
+			}
 	;
 
 %%
@@ -704,7 +1234,7 @@ primary	:	'*' primary		%prec '.'
 /* yylex defined in ada-lex.c: Reads one token, getting characters */
 /* through lexptr.  */
 
-/* Remap normal flex interface names (yylex) as well as gratuitiously */
+/* Remap normal flex interface names (yylex) as well as gratuitously */
 /* global symbol names, so we can have multiple flex-generated parsers */
 /* in gdb.  */
 
@@ -718,8 +1248,6 @@ primary	:	'*' primary		%prec '.'
 #define yyrestart ada_yyrestart
 #define yytext ada_yytext
 
-static struct obstack temp_parse_space;
-
 /* The following kludge was found necessary to prevent conflicts between */
 /* defs.h and non-standard stdlib.h files.  */
 #define qsort __qsort__dummy
@@ -729,39 +1257,44 @@ int
 ada_parse (struct parser_state *par_state)
 {
   /* Setting up the parser state.  */
-  scoped_restore pstate_restore = make_scoped_restore (&pstate);
+  scoped_restore pstate_restore = make_scoped_restore (&pstate, par_state);
   gdb_assert (par_state != NULL);
-  pstate = par_state;
+
+  ada_parse_state parser (par_state->lexptr);
+  scoped_restore parser_restore = make_scoped_restore (&ada_parser, &parser);
+
+  scoped_restore restore_yydebug = make_scoped_restore (&yydebug,
+							par_state->debug);
 
   lexer_init (yyin);		/* (Re-)initialize lexer.  */
-  type_qualifier = NULL;
-  obstack_free (&temp_parse_space, NULL);
-  obstack_init (&temp_parse_space);
 
-  return yyparse ();
+  int result = yyparse ();
+  if (!result)
+    {
+      struct type *context_type = nullptr;
+      if (par_state->void_context_p)
+	context_type = parse_type (par_state)->builtin_void;
+      pstate->set_operation (ada_pop (true, context_type));
+    }
+  return result;
 }
 
 static void
 yyerror (const char *msg)
 {
-  error (_("Error in expression, near `%s'."), pstate->lexptr);
+  pstate->parse_error (msg);
 }
 
 /* Emit expression to access an instance of SYM, in block BLOCK (if
    non-NULL).  */
 
 static void
-write_var_from_sym (struct parser_state *par_state,
-		    const struct block *block,
-		    struct symbol *sym)
-{
-  if (symbol_read_needs_frame (sym))
-    par_state->block_tracker->update (block, INNERMOST_BLOCK_FOR_SYMBOLS);
-
-  write_exp_elt_opcode (par_state, OP_VAR_VALUE);
-  write_exp_elt_block (par_state, block);
-  write_exp_elt_sym (par_state, sym);
-  write_exp_elt_opcode (par_state, OP_VAR_VALUE);
+write_var_from_sym (struct parser_state *par_state, block_symbol sym)
+{
+  if (symbol_read_needs_frame (sym.symbol))
+    par_state->block_tracker->update (sym.block, INNERMOST_BLOCK_FOR_SYMBOLS);
+
+  par_state->push_new<ada_var_value_operation> (sym);
 }
 
 /* Write integer or boolean constant ARG of type TYPE.  */
@@ -769,32 +1302,20 @@ write_var_from_sym (struct parser_state
 static void
 write_int (struct parser_state *par_state, LONGEST arg, struct type *type)
 {
-  write_exp_elt_opcode (par_state, OP_LONG);
-  write_exp_elt_type (par_state, type);
-  write_exp_elt_longcst (par_state, arg);
-  write_exp_elt_opcode (par_state, OP_LONG);
+  pstate->push_new<long_const_operation> (type, arg);
+  ada_wrap<ada_wrapped_operation> ();
 }
 
-/* Write an OPCODE, string, OPCODE sequence to the current expression.  */
-static void
-write_exp_op_with_string (struct parser_state *par_state,
-			  enum exp_opcode opcode, struct stoken token)
-{
-  write_exp_elt_opcode (par_state, opcode);
-  write_exp_string (par_state, token);
-  write_exp_elt_opcode (par_state, opcode);
-}
-  
 /* Emit expression corresponding to the renamed object named 
- * designated by RENAMED_ENTITY[0 .. RENAMED_ENTITY_LEN-1] in the
- * context of ORIG_LEFT_CONTEXT, to which is applied the operations
- * encoded by RENAMING_EXPR.  MAX_DEPTH is the maximum number of
- * cascaded renamings to allow.  If ORIG_LEFT_CONTEXT is null, it
- * defaults to the currently selected block. ORIG_SYMBOL is the 
- * symbol that originally encoded the renaming.  It is needed only
- * because its prefix also qualifies any index variables used to index
- * or slice an array.  It should not be necessary once we go to the
- * new encoding entirely (FIXME pnh 7/20/2007).  */
+   designated by RENAMED_ENTITY[0 .. RENAMED_ENTITY_LEN-1] in the
+   context of ORIG_LEFT_CONTEXT, to which is applied the operations
+   encoded by RENAMING_EXPR.  MAX_DEPTH is the maximum number of
+   cascaded renamings to allow.  If ORIG_LEFT_CONTEXT is null, it
+   defaults to the currently selected block. ORIG_SYMBOL is the 
+   symbol that originally encoded the renaming.  It is needed only
+   because its prefix also qualifies any index variables used to index
+   or slice an array.  It should not be necessary once we go to the
+   new encoding entirely (FIXME pnh 7/20/2007).  */
 
 static void
 write_object_renaming (struct parser_state *par_state,
@@ -804,7 +1325,6 @@ write_object_renaming (struct parser_sta
 {
   char *name;
   enum { SIMPLE_INDEX, LOWER_BOUND, UPPER_BOUND } slice_state;
-  struct block_symbol sym_info;
 
   if (max_depth <= 0)
     error (_("Could not find renamed symbol"));
@@ -812,12 +1332,13 @@ write_object_renaming (struct parser_sta
   if (orig_left_context == NULL)
     orig_left_context = get_selected_block (NULL);
 
-  name = obstack_strndup (&temp_parse_space, renamed_entity,
+  name = obstack_strndup (&ada_parser->temp_space, renamed_entity,
 			  renamed_entity_len);
-  ada_lookup_encoded_symbol (name, orig_left_context, VAR_DOMAIN, &sym_info);
+  block_symbol sym_info = ada_lookup_encoded_symbol (name, orig_left_context,
+						     SEARCH_VFT);
   if (sym_info.symbol == NULL)
     error (_("Could not find renamed variable: %s"), ada_decode (name).c_str ());
-  else if (SYMBOL_CLASS (sym_info.symbol) == LOC_TYPEDEF)
+  else if (sym_info.symbol->loc_class () == LOC_TYPEDEF)
     /* We have a renaming of an old-style renaming symbol.  Don't
        trust the block information.  */
     sym_info.block = orig_left_context;
@@ -832,7 +1353,7 @@ write_object_renaming (struct parser_sta
 				&inner_renaming_expr))
       {
       case ADA_NOT_RENAMING:
-	write_var_from_sym (par_state, sym_info.block, sym_info.symbol);
+	write_var_from_sym (par_state, sym_info);
 	break;
       case ADA_OBJECT_RENAMING:
 	write_object_renaming (par_state, sym_info.block,
@@ -851,12 +1372,12 @@ write_object_renaming (struct parser_sta
 
       switch (*renaming_expr) {
       case 'A':
-        renaming_expr += 1;
-        write_exp_elt_opcode (par_state, UNOP_IND);
-        break;
+	renaming_expr += 1;
+	ada_wrap<ada_unop_ind_operation> ();
+	break;
       case 'L':
 	slice_state = LOWER_BOUND;
-	/* FALLTHROUGH */
+	[[fallthrough]];
       case 'S':
 	renaming_expr += 1;
 	if (isdigit (*renaming_expr))
@@ -866,55 +1387,46 @@ write_object_renaming (struct parser_sta
 	    if (next == renaming_expr)
 	      goto BadEncoding;
 	    renaming_expr = next;
-	    write_exp_elt_opcode (par_state, OP_LONG);
-	    write_exp_elt_type (par_state, type_int (par_state));
-	    write_exp_elt_longcst (par_state, (LONGEST) val);
-	    write_exp_elt_opcode (par_state, OP_LONG);
+	    write_int (par_state, val, parse_type (par_state)->builtin_int);
 	  }
 	else
 	  {
 	    const char *end;
 	    char *index_name;
-	    struct block_symbol index_sym_info;
 
 	    end = strchr (renaming_expr, 'X');
 	    if (end == NULL)
 	      end = renaming_expr + strlen (renaming_expr);
 
-	    index_name = obstack_strndup (&temp_parse_space, renaming_expr,
+	    index_name = obstack_strndup (&ada_parser->temp_space,
+					  renaming_expr,
 					  end - renaming_expr);
 	    renaming_expr = end;
 
-	    ada_lookup_encoded_symbol (index_name, orig_left_context,
-				       VAR_DOMAIN, &index_sym_info);
+	    block_symbol index_sym_info
+	      = ada_lookup_encoded_symbol (index_name, orig_left_context,
+					   SEARCH_VFT);
 	    if (index_sym_info.symbol == NULL)
 	      error (_("Could not find %s"), index_name);
-	    else if (SYMBOL_CLASS (index_sym_info.symbol) == LOC_TYPEDEF)
+	    else if (index_sym_info.symbol->loc_class () == LOC_TYPEDEF)
 	      /* Index is an old-style renaming symbol.  */
 	      index_sym_info.block = orig_left_context;
-	    write_var_from_sym (par_state, index_sym_info.block,
-				index_sym_info.symbol);
+	    write_var_from_sym (par_state, index_sym_info);
 	  }
 	if (slice_state == SIMPLE_INDEX)
-	  {
-	    write_exp_elt_opcode (par_state, OP_FUNCALL);
-	    write_exp_elt_longcst (par_state, (LONGEST) 1);
-	    write_exp_elt_opcode (par_state, OP_FUNCALL);
-	  }
+	  ada_funcall (1);
 	else if (slice_state == LOWER_BOUND)
 	  slice_state = UPPER_BOUND;
 	else if (slice_state == UPPER_BOUND)
 	  {
-	    write_exp_elt_opcode (par_state, TERNOP_SLICE);
+	    ada_wrap3<ada_ternop_slice_operation> ();
 	    slice_state = SIMPLE_INDEX;
 	  }
 	break;
 
       case 'R':
 	{
-	  struct stoken field_name;
 	  const char *end;
-	  char *buf;
 
 	  renaming_expr += 1;
 
@@ -923,13 +1435,12 @@ write_object_renaming (struct parser_sta
 	  end = strchr (renaming_expr, 'X');
 	  if (end == NULL)
 	    end = renaming_expr + strlen (renaming_expr);
-	  field_name.length = end - renaming_expr;
-	  buf = (char *) malloc (end - renaming_expr + 1);
-	  field_name.ptr = buf;
-	  strncpy (buf, renaming_expr, end - renaming_expr);
-	  buf[end - renaming_expr] = '\000';
+
+	  operation_up arg = ada_pop ();
+	  pstate->push_new<ada_structop_operation>
+	    (std::move (arg), std::string (renaming_expr,
+					   end - renaming_expr));
 	  renaming_expr = end;
-	  write_exp_op_with_string (par_state, STRUCTOP_STRUCT, field_name);
 	  break;
 	}
 
@@ -948,30 +1459,33 @@ static const struct block*
 block_lookup (const struct block *context, const char *raw_name)
 {
   const char *name;
-  std::vector<struct block_symbol> syms;
-  int nsyms;
   struct symtab *symtab;
   const struct block *result = NULL;
 
+  std::string name_storage;
   if (raw_name[0] == '\'')
     {
       raw_name += 1;
       name = raw_name;
     }
   else
-    name = ada_encode (raw_name);
+    {
+      name_storage = ada_encode (raw_name);
+      name = name_storage.c_str ();
+    }
 
-  nsyms = ada_lookup_symbol_list (name, context, VAR_DOMAIN, &syms);
+  std::vector<struct block_symbol> syms
+    = ada_lookup_symbol_list (name, context, SEARCH_FUNCTION_DOMAIN);
 
   if (context == NULL
-      && (nsyms == 0 || SYMBOL_CLASS (syms[0].symbol) != LOC_BLOCK))
-    symtab = lookup_symtab (name);
+      && (syms.empty () || syms[0].symbol->loc_class () != LOC_BLOCK))
+    symtab = lookup_symtab (current_program_space, name);
   else
     symtab = NULL;
 
   if (symtab != NULL)
-    result = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab), STATIC_BLOCK);
-  else if (nsyms == 0 || SYMBOL_CLASS (syms[0].symbol) != LOC_BLOCK)
+    result = symtab->compunit ()->blockvector ()->static_block ();
+  else if (syms.empty () || syms[0].symbol->loc_class () != LOC_BLOCK)
     {
       if (context == NULL)
 	error (_("No file or function \"%s\"."), raw_name);
@@ -980,9 +1494,9 @@ block_lookup (const struct block *contex
     }
   else
     {
-      if (nsyms > 1)
+      if (syms.size () > 1)
 	warning (_("Function name \"%s\" ambiguous here"), raw_name);
-      result = SYMBOL_BLOCK_VALUE (syms[0].symbol);
+      result = syms[0].symbol->value_block ();
     }
 
   return result;
@@ -997,13 +1511,13 @@ select_possible_type_sym (const std::vec
 	  
   preferred_index = -1; preferred_type = NULL;
   for (i = 0; i < syms.size (); i += 1)
-    switch (SYMBOL_CLASS (syms[i].symbol))
+    switch (syms[i].symbol->loc_class ())
       {
       case LOC_TYPEDEF:
-	if (ada_prefer_type (SYMBOL_TYPE (syms[i].symbol), preferred_type))
+	if (ada_prefer_type (syms[i].symbol->type (), preferred_type))
 	  {
 	    preferred_index = i;
-	    preferred_type = SYMBOL_TYPE (syms[i].symbol);
+	    preferred_type = syms[i].symbol->type ();
 	  }
 	break;
       case LOC_REGISTER:
@@ -1022,7 +1536,7 @@ select_possible_type_sym (const std::vec
 }
 
 static struct type*
-find_primitive_type (struct parser_state *par_state, char *name)
+find_primitive_type (struct parser_state *par_state, const char *name)
 {
   struct type *type;
   type = language_lookup_primitive_type (par_state->language (),
@@ -1040,16 +1554,16 @@ find_primitive_type (struct parser_state
 	(char *) alloca (strlen (name) + sizeof ("standard__"));
       strcpy (expanded_name, "standard__");
       strcat (expanded_name, name);
-      sym = ada_lookup_symbol (expanded_name, NULL, VAR_DOMAIN).symbol;
-      if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
-	type = SYMBOL_TYPE (sym);
+      sym = ada_lookup_symbol (expanded_name, NULL, SEARCH_TYPE_DOMAIN).symbol;
+      if (sym != NULL && sym->loc_class () == LOC_TYPEDEF)
+	type = sym->type ();
     }
 
   return type;
 }
 
 static int
-chop_selector (char *name, int end)
+chop_selector (const char *name, int end)
 {
   int i;
   for (i = end - 1; i > 0; i -= 1)
@@ -1062,8 +1576,8 @@ chop_selector (char *name, int end)
    '.'), chop this separator and return the result; else, return
    NAME.  */
 
-static char *
-chop_separator (char *name)
+static const char *
+chop_separator (const char *name)
 {
   if (*name == '.')
    return name + 1;
@@ -1076,22 +1590,25 @@ chop_separator (char *name)
 
 /* Given that SELS is a string of the form (<sep><identifier>)*, where
    <sep> is '__' or '.', write the indicated sequence of
-   STRUCTOP_STRUCT expression operators. */
-static void
-write_selectors (struct parser_state *par_state, char *sels)
+   STRUCTOP_STRUCT expression operators.  Returns a pointer to the
+   last operation that was pushed.  */
+static ada_structop_operation *
+write_selectors (struct parser_state *par_state, const char *sels)
 {
+  ada_structop_operation *result = nullptr;
   while (*sels != '\0')
     {
-      struct stoken field_name;
-      char *p = chop_separator (sels);
+      const char *p = chop_separator (sels);
       sels = p;
       while (*sels != '\0' && *sels != '.' 
 	     && (sels[0] != '_' || sels[1] != '_'))
 	sels += 1;
-      field_name.length = sels - p;
-      field_name.ptr = p;
-      write_exp_op_with_string (par_state, STRUCTOP_STRUCT, field_name);
+      operation_up arg = ada_pop ();
+      result = new ada_structop_operation (std::move (arg),
+					   std::string (p, sels - p));
+      pstate->push (operation_up (result));
     }
+  return result;
 }
 
 /* Write a variable access (OP_VAR_VALUE) to ambiguous encoded name
@@ -1100,18 +1617,16 @@ write_selectors (struct parser_state *pa
    */
 static void
 write_ambiguous_var (struct parser_state *par_state,
-		     const struct block *block, char *name, int len)
+		     const struct block *block, const char *name, int len)
 {
-  struct symbol *sym = new (&temp_parse_space) symbol ();
+  struct symbol *sym = new (&ada_parser->temp_space) symbol ();
+
+  sym->set_domain (UNDEF_DOMAIN);
+  sym->set_linkage_name (obstack_strndup (&ada_parser->temp_space, name, len));
+  sym->set_language (language_ada, nullptr);
 
-  SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN;
-  sym->set_linkage_name (obstack_strndup (&temp_parse_space, name, len));
-  SYMBOL_LANGUAGE (sym) = language_ada;
-
-  write_exp_elt_opcode (par_state, OP_VAR_VALUE);
-  write_exp_elt_block (par_state, block);
-  write_exp_elt_sym (par_state, sym);
-  write_exp_elt_opcode (par_state, OP_VAR_VALUE);
+  block_symbol bsym { sym, block };
+  par_state->push_new<ada_var_value_operation> (bsym);
 }
 
 /* A convenient wrapper around ada_get_field_index that takes
@@ -1120,7 +1635,7 @@ write_ambiguous_var (struct parser_state
 
 static int
 ada_nget_field_index (const struct type *type, const char *field_name0,
-                      int field_name_len, int maybe_missing)
+		      int field_name_len, int maybe_missing)
 {
   char *field_name = (char *) alloca ((field_name_len + 1) * sizeof (char));
 
@@ -1141,11 +1656,11 @@ ada_nget_field_index (const struct type
    In case of failure, we return NULL.  */
 
 static struct type *
-get_symbol_field_type (struct symbol *sym, char *encoded_field_name)
+get_symbol_field_type (struct symbol *sym, const char *encoded_field_name)
 {
-  char *field_name = encoded_field_name;
-  char *subfield_name;
-  struct type *type = SYMBOL_TYPE (sym);
+  const char *field_name = encoded_field_name;
+  const char *subfield_name;
+  struct type *type = sym->type ();
   int fieldno;
 
   if (type == NULL || field_name == NULL)
@@ -1158,7 +1673,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 != '.' 
@@ -1166,14 +1681,14 @@ get_symbol_field_type (struct symbol *sy
 	subfield_name += 1;
 
       if (subfield_name[0] == '\0')
-        return NULL;
+	return NULL;
 
       fieldno = ada_nget_field_index (type, field_name,
-                                      subfield_name - field_name, 1);
+				      subfield_name - field_name, 1);
       if (fieldno < 0)
-        return NULL;
+	return NULL;
 
-      type = TYPE_FIELD_TYPE (type, fieldno);
+      type = type->field (fieldno).type ();
       field_name = subfield_name;
     }
 
@@ -1198,12 +1713,26 @@ write_var_or_type (struct parser_state *
   char *encoded_name;
   int name_len;
 
-  if (block == NULL)
-    block = par_state->expression_context_block;
+  std::string name_storage = ada_encode (name0.ptr);
 
-  encoded_name = ada_encode (name0.ptr);
-  name_len = strlen (encoded_name);
-  encoded_name = obstack_strndup (&temp_parse_space, encoded_name, name_len);
+  if (block == nullptr)
+    {
+      auto iter = ada_parser->iterated_associations.find (name_storage);
+      if (iter != ada_parser->iterated_associations.end ())
+	{
+	  auto op = std::make_unique<ada_index_var_operation> ();
+	  iter->second.push_back (op.get ());
+	  par_state->push (std::move (op));
+	  return nullptr;
+	}
+
+      block = par_state->expression_context_block;
+    }
+
+  name_len = name_storage.size ();
+  encoded_name = obstack_strndup (&ada_parser->temp_space,
+				  name_storage.c_str (),
+				  name_len);
   for (depth = 0; depth < MAX_RENAMING_CHAIN_LENGTH; depth += 1)
     {
       int tail_index;
@@ -1211,8 +1740,6 @@ write_var_or_type (struct parser_state *
       tail_index = name_len;
       while (tail_index > 0)
 	{
-	  int nsyms;
-	  std::vector<struct block_symbol> syms;
 	  struct symbol *type_sym;
 	  struct symbol *renaming_sym;
 	  const char* renaming;
@@ -1221,15 +1748,20 @@ write_var_or_type (struct parser_state *
 	  int terminator = encoded_name[tail_index];
 
 	  encoded_name[tail_index] = '\0';
-	  nsyms = ada_lookup_symbol_list (encoded_name, block,
-					  VAR_DOMAIN, &syms);
+	  /* In order to avoid double-encoding, we want to only pass
+	     the decoded form to lookup functions.  */
+	  std::string decoded_name = ada_decode (encoded_name);
 	  encoded_name[tail_index] = terminator;
 
+	  std::vector<struct block_symbol> syms
+	    = ada_lookup_symbol_list (decoded_name.c_str (), block,
+				      SEARCH_VFT);
+
 	  type_sym = select_possible_type_sym (syms);
 
 	  if (type_sym != NULL)
 	    renaming_sym = type_sym;
-	  else if (nsyms == 1)
+	  else if (syms.size () == 1)
 	    renaming_sym = syms[0].symbol;
 	  else 
 	    renaming_sym = NULL;
@@ -1243,9 +1775,10 @@ write_var_or_type (struct parser_state *
 	    case ADA_EXCEPTION_RENAMING:
 	    case ADA_SUBPROGRAM_RENAMING:
 	      {
-	        int alloc_len = renaming_len + name_len - tail_index + 1;
+		int alloc_len = renaming_len + name_len - tail_index + 1;
 		char *new_name
-		  = (char *) obstack_alloc (&temp_parse_space, alloc_len);
+		  = (char *) obstack_alloc (&ada_parser->temp_space,
+					    alloc_len);
 		strncpy (new_name, renaming, renaming_len);
 		strcpy (new_name + renaming_len, encoded_name + tail_index);
 		encoded_name = new_name;
@@ -1258,29 +1791,28 @@ write_var_or_type (struct parser_state *
 	      write_selectors (par_state, encoded_name + tail_index);
 	      return NULL;
 	    default:
-	      internal_error (__FILE__, __LINE__,
-			      _("impossible value from ada_parse_renaming"));
+	      internal_error (_("impossible value from ada_parse_renaming"));
 	    }
 
 	  if (type_sym != NULL)
 	    {
-              struct type *field_type;
-              
-              if (tail_index == name_len)
-		return SYMBOL_TYPE (type_sym);
-
-              /* We have some extraneous characters after the type name.
-                 If this is an expression "TYPE_NAME.FIELD0.[...].FIELDN",
-                 then try to get the type of FIELDN.  */
-              field_type
-                = get_symbol_field_type (type_sym, encoded_name + tail_index);
-              if (field_type != NULL)
+	      struct type *field_type;
+	      
+	      if (tail_index == name_len)
+		return type_sym->type ();
+
+	      /* We have some extraneous characters after the type name.
+		 If this is an expression "TYPE_NAME.FIELD0.[...].FIELDN",
+		 then try to get the type of FIELDN.  */
+	      field_type
+		= get_symbol_field_type (type_sym, encoded_name + tail_index);
+	      if (field_type != NULL)
 		return field_type;
 	      else 
 		error (_("Invalid attempt to select from type: \"%s\"."),
-                       name0.ptr);
+		       name0.ptr);
 	    }
-	  else if (tail_index == name_len && nsyms == 0)
+	  else if (tail_index == name_len && syms.empty ())
 	    {
 	      struct type *type = find_primitive_type (par_state,
 						       encoded_name);
@@ -1289,19 +1821,23 @@ write_var_or_type (struct parser_state *
 		return type;
 	    }
 
-	  if (nsyms == 1)
+	  if (syms.size () == 1)
 	    {
-	      write_var_from_sym (par_state, syms[0].block, syms[0].symbol);
+	      write_var_from_sym (par_state, syms[0]);
 	      write_selectors (par_state, encoded_name + tail_index);
 	      return NULL;
 	    }
-	  else if (nsyms == 0) 
+	  else if (syms.empty ())
 	    {
-	      struct bound_minimal_symbol msym
-		= ada_lookup_simple_minsym (encoded_name);
+	      struct objfile *objfile = nullptr;
+	      if (block != nullptr)
+		objfile = block->objfile ();
+
+	      bound_minimal_symbol msym
+		= ada_lookup_simple_minsym (decoded_name.c_str (), objfile);
 	      if (msym.minsym != NULL)
 		{
-		  write_exp_msymbol (par_state, msym);
+		  par_state->push_new<ada_var_msym_value_operation> (msym);
 		  /* Maybe cause error here rather than later? FIXME? */
 		  write_selectors (par_state, encoded_name + tail_index);
 		  return NULL;
@@ -1323,7 +1859,9 @@ write_var_or_type (struct parser_state *
 	    }
 	}
 
-      if (!have_full_symbols () && !have_partial_symbols () && block == NULL)
+      if (!have_full_symbols (current_program_space)
+	  && !have_partial_symbols (current_program_space)
+	  && block == NULL)
 	error (_("No symbol table is loaded.  Use the \"file\" command."));
       if (block == par_state->expression_context_block)
 	error (_("No definition of \"%s\" in current context."), name0.ptr);
@@ -1337,6 +1875,72 @@ write_var_or_type (struct parser_state *
 
 }
 
+/* Because ada_completer_word_break_characters does not contain '.' --
+   and it cannot easily be added, this breaks other completions -- we
+   have to recreate the completion word-splitting here, so that we can
+   provide a prefix that is then used when completing field names.
+   Without this, an attempt like "complete print abc.d" will give a
+   result like "print def" rather than "print abc.def".  */
+
+std::string
+ada_parse_state::find_completion_bounds ()
+{
+  const char *end = pstate->lexptr;
+  /* First the end of the prefix.  Here we stop at the token start or
+     at '.' or space.  */
+  for (; end > m_original_expr && end[-1] != '.' && !isspace (end[-1]); --end)
+    {
+      /* Nothing.  */
+    }
+  /* Now find the start of the prefix.  */
+  const char *ptr = end;
+  /* Here we allow '.'.  */
+  for (;
+       ptr > m_original_expr && (ptr[-1] == '.'
+				 || ptr[-1] == '_'
+				 || (ptr[-1] >= 'a' && ptr[-1] <= 'z')
+				 || (ptr[-1] >= 'A' && ptr[-1] <= 'Z')
+				 || (ptr[-1] & 0xff) >= 0x80);
+       --ptr)
+    {
+      /* Nothing.  */
+    }
+  /* ... except, skip leading spaces.  */
+  ptr = skip_spaces (ptr);
+
+  return std::string (ptr, end);
+}
+
+/* A wrapper for write_var_or_type that is used specifically when
+   completion is requested for the last of a sequence of
+   identifiers.  */
+
+static struct type *
+write_var_or_type_completion (struct parser_state *par_state,
+			      const struct block *block, struct stoken name0)
+{
+  int tail_index = chop_selector (name0.ptr, name0.length);
+  /* If there's no separator, just defer to ordinary symbol
+     completion.  */
+  if (tail_index == -1)
+    return write_var_or_type (par_state, block, name0);
+
+  std::string copy (name0.ptr, tail_index);
+  struct type *type = write_var_or_type (par_state, block,
+					 { copy.c_str (),
+					   (int) copy.length () });
+  /* For completion purposes, it's enough that we return a type
+     here.  */
+  if (type != nullptr)
+    return type;
+
+  ada_structop_operation *op = write_selectors (par_state,
+						name0.ptr + tail_index);
+  op->set_prefix (ada_parser->find_completion_bounds ());
+  par_state->mark_struct_expression (op);
+  return nullptr;
+}
+
 /* Write a left side of a component association (e.g., NAME in NAME =>
    exp).  If NAME has the form of a selected component, write it as an
    ordinary expression.  If it is a simple variable that unambiguously
@@ -1357,93 +1961,36 @@ write_name_assoc (struct parser_state *p
 {
   if (strchr (name.ptr, '.') == NULL)
     {
-      std::vector<struct block_symbol> syms;
-      int nsyms = ada_lookup_symbol_list (name.ptr,
-					  par_state->expression_context_block,
-					  VAR_DOMAIN, &syms);
+      std::vector<struct block_symbol> syms
+	= ada_lookup_symbol_list (name.ptr,
+				  par_state->expression_context_block,
+				  SEARCH_VFT);
 
-      if (nsyms != 1 || SYMBOL_CLASS (syms[0].symbol) == LOC_TYPEDEF)
-	write_exp_op_with_string (par_state, OP_NAME, name);
+      if (syms.size () != 1 || syms[0].symbol->loc_class () == LOC_TYPEDEF)
+	pstate->push_new<ada_string_operation> (copy_name (name));
       else
-	write_var_from_sym (par_state, syms[0].block, syms[0].symbol);
+	write_var_from_sym (par_state, syms[0]);
     }
   else
     if (write_var_or_type (par_state, NULL, name) != NULL)
       error (_("Invalid use of type."));
-}
-
-/* Convert the character literal whose ASCII value would be VAL to the
-   appropriate value of type TYPE, if there is a translation.
-   Otherwise return VAL.  Hence, in an enumeration type ('A', 'B'),
-   the literal 'A' (VAL == 65), returns 0.  */
-
-static LONGEST
-convert_char_literal (struct type *type, LONGEST val)
-{
-  char name[7];
-  int f;
-
-  if (type == NULL)
-    return val;
-  type = check_typedef (type);
-  if (TYPE_CODE (type) != TYPE_CODE_ENUM)
-    return val;
 
-  if ((val >= 'a' && val <= 'z') || (val >= '0' && val <= '9'))
-    xsnprintf (name, sizeof (name), "Q%c", (int) val);
-  else
-    xsnprintf (name, sizeof (name), "QU%02x", (int) val);
-  size_t len = strlen (name);
-  for (f = 0; f < TYPE_NFIELDS (type); 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
-	 already have the correct type, and because mangling means
-	 there can't be clashes.  */
-      const char *ename = TYPE_FIELD_NAME (type, f);
-      size_t elen = strlen (ename);
-
-      if (elen >= len && strcmp (name, ename + elen - len) == 0)
-	return TYPE_FIELD_ENUMVAL (type, f);
-    }
-  return val;
+  push_association<ada_name_association> (ada_pop ());
 }
 
 static struct type *
-type_int (struct parser_state *par_state)
+type_for_char (struct parser_state *par_state, ULONGEST value)
 {
-  return parse_type (par_state)->builtin_int;
-}
-
-static struct type *
-type_long (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_long;
-}
-
-static struct type *
-type_long_long (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_long_long;
-}
-
-static struct type *
-type_long_double (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_long_double;
-}
-
-static struct type *
-type_char (struct parser_state *par_state)
-{
-  return language_string_char_type (par_state->language (),
-				    par_state->gdbarch ());
-}
-
-static struct type *
-type_boolean (struct parser_state *par_state)
-{
-  return parse_type (par_state)->builtin_bool;
+  if (value <= 0xff)
+    return language_string_char_type (par_state->language (),
+				      par_state->gdbarch ());
+  else if (value <= 0xffff)
+    return language_lookup_primitive_type (par_state->language (),
+					   par_state->gdbarch (),
+					   "wide_character");
+  return language_lookup_primitive_type (par_state->language (),
+					 par_state->gdbarch (),
+					 "wide_wide_character");
 }
 
 static struct type *
@@ -1455,9 +2002,3 @@ type_system_address (struct parser_state
 				      "system__address");
   return  type != NULL ? type : parse_type (par_state)->builtin_data_ptr;
 }
-
-void
-_initialize_ada_exp (void)
-{
-  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.20200303/gdb/ada-lang.c ./gdb/ada-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-lang.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-lang.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,13 +18,15 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
-#include "defs.h"
 #include <ctype.h>
-#include "gdb_regex.h"
+#include "event-top.h"
+#include "exceptions.h"
+#include "extract-store-integer.h"
+#include "gdbsupport/gdb_regex.h"
 #include "frame.h"
 #include "symtab.h"
 #include "gdbtypes.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "expression.h"
 #include "parser-defs.h"
 #include "language.h"
@@ -34,8 +36,8 @@
 #include "objfiles.h"
 #include "breakpoint.h"
 #include "gdbcore.h"
-#include "hashtab.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/unordered_set.h"
+#include "gdbsupport/gdb_obstack.h"
 #include "ada-lang.h"
 #include "completer.h"
 #include "ui-out.h"
@@ -49,6 +51,8 @@
 #include "typeprint.h"
 #include "namespace.h"
 #include "cli/cli-style.h"
+#include "cli/cli-decode.h"
+#include "gdbsupport/string-set.h"
 
 #include "value.h"
 #include "mi/mi-common.h"
@@ -56,15 +60,11 @@
 #include "cli/cli-utils.h"
 #include "gdbsupport/function-view.h"
 #include "gdbsupport/byte-vector.h"
+#include "gdbsupport/selftest.h"
 #include <algorithm>
-
-/* Define whether or not the C operator '/' truncates towards zero for
-   differently signed operands (truncation direction is undefined in C).
-   Copied from valarith.c.  */
-
-#ifndef TRUNCATION_TOWARDS_ZERO
-#define TRUNCATION_TOWARDS_ZERO ((-5 / 2) == -2)
-#endif
+#include "ada-exp.h"
+#include "charset.h"
+#include "ax-gdb.h"
 
 static struct type *desc_base_type (struct type *);
 
@@ -94,41 +94,28 @@ static struct type *desc_index_type (str
 
 static int desc_arity (struct type *);
 
-static int ada_type_match (struct type *, struct type *, int);
-
 static int ada_args_match (struct symbol *, struct value **, int);
 
 static struct value *make_array_descriptor (struct type *, struct value *);
 
-static void ada_add_block_symbols (struct obstack *,
+static void ada_add_block_symbols (std::vector<struct block_symbol> &,
 				   const struct block *,
 				   const lookup_name_info &lookup_name,
-				   domain_enum, struct objfile *);
+				   domain_search_flags, struct objfile *);
 
-static void ada_add_all_symbols (struct obstack *, const struct block *,
+static void ada_add_all_symbols (std::vector<struct block_symbol> &,
+				 const struct block *,
 				 const lookup_name_info &lookup_name,
-				 domain_enum, int, int *);
-
-static int is_nonfunction (struct block_symbol *, int);
+				 domain_search_flags, int, int *);
 
-static void add_defn_to_vec (struct obstack *, struct symbol *,
-                             const struct block *);
+static int is_nonfunction (const std::vector<struct block_symbol> &);
 
-static int num_defns_collected (struct obstack *);
-
-static struct block_symbol *defns_collected (struct obstack *, int);
-
-static struct value *resolve_subexp (expression_up *, int *, int,
-                                     struct type *, int,
-				     innermost_block_tracker *);
-
-static void replace_operator_with_call (expression_up *, int, int, int,
-                                        struct symbol *, const struct block *);
+static void add_defn_to_vec (std::vector<struct block_symbol> &,
+			     struct symbol *,
+			     const struct block *);
 
 static int possible_user_operator_p (enum exp_opcode, struct value **);
 
-static const char *ada_op_name (enum exp_opcode);
-
 static const char *ada_decoded_op_name (enum exp_opcode);
 
 static int numeric_type_p (struct type *);
@@ -140,18 +127,16 @@ static int scalar_type_p (struct type *)
 static int discrete_type_p (struct type *);
 
 static struct type *ada_lookup_struct_elt_type (struct type *, const char *,
-                                                int, int);
-
-static struct value *evaluate_subexp_type (struct expression *, int *);
+						int, int);
 
 static struct type *ada_find_parallel_type_with_name (struct type *,
-                                                      const char *);
+						      const char *);
 
 static int is_dynamic_field (struct type *, int);
 
 static struct type *to_fixed_variant_branch_type (struct type *,
 						  const gdb_byte *,
-                                                  CORE_ADDR, struct value *);
+						  CORE_ADDR, struct value *);
 
 static struct type *to_fixed_array_type (struct type *, struct value *, int);
 
@@ -170,15 +155,13 @@ static long decode_packed_array_bitsize
 
 static struct value *decode_constrained_packed_array (struct value *);
 
-static int ada_is_packed_array_type  (struct type *);
-
 static int ada_is_unconstrained_packed_array_type (struct type *);
 
 static struct value *value_subscript_packed (struct value *, int,
-                                             struct value **);
+					     struct value **);
 
 static struct value *coerce_unspec_val_to_type (struct value *,
-                                                struct type *);
+						struct type *);
 
 static int lesseq_defined_than (struct symbol *, struct symbol *);
 
@@ -186,7 +169,7 @@ static int equiv_types (struct type *, s
 
 static int is_name_suffix (const char *);
 
-static int advance_wild_match (const char **, const char *, int);
+static int advance_wild_match (const char **, const char *, char);
 
 static bool wild_match (const char *name, const char *patn);
 
@@ -194,112 +177,68 @@ static struct value *ada_coerce_ref (str
 
 static LONGEST pos_atr (struct value *);
 
-static struct value *value_pos_atr (struct type *, struct value *);
-
-static struct value *value_val_atr (struct type *, struct value *);
-
-static struct symbol *standard_lookup (const char *, const struct block *,
-                                       domain_enum);
+static struct value *val_atr (struct type *, LONGEST);
 
 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 *);
+					      struct type *);
 
 static int find_struct_field (const char *, struct type *, int,
-                              struct type **, int *, int *, int *, int *);
+			      struct type **, int *, int *, int *, int *);
 
-static int ada_resolve_function (struct block_symbol *, int,
-                                 struct value **, int, const char *,
-                                 struct type *, int);
+static int ada_resolve_function (std::vector<struct block_symbol> &,
+				 struct value **, int, const char *,
+				 struct type *, bool);
 
 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 *);
 
-static struct value *assign_aggregate (struct value *, struct value *, 
-				       struct expression *,
-				       int *, enum noside);
-
-static void aggregate_assign_from_choices (struct value *, struct value *, 
-					   struct expression *,
-					   int *, LONGEST *, int *,
-					   int, LONGEST, LONGEST);
-
-static void aggregate_assign_positional (struct value *, struct value *,
-					 struct expression *,
-					 int *, LONGEST *, int *, int,
-					 LONGEST, LONGEST);
-
-
-static void aggregate_assign_others (struct value *, struct value *,
-				     struct expression *,
-				     int *, LONGEST *, int, LONGEST, LONGEST);
-
-
-static void add_component_interval (LONGEST, LONGEST, LONGEST *, int *, int);
-
-
-static struct value *ada_evaluate_subexp (struct type *, struct expression *,
-					  int *, enum noside);
-
-static void ada_forward_operator_length (struct expression *, int, int *,
-					 int *);
-
 static struct type *ada_find_any_type (const char *name);
 
 static symbol_name_matcher_ftype *ada_get_symbol_name_matcher
   (const lookup_name_info &lookup_name);
 
-
+static int symbols_are_identical_enums
+  (const std::vector<struct block_symbol> &syms);
 
-/* The result of a symbol lookup to be stored in our symbol cache.  */
+static bool ada_identical_enum_types_p (struct type *type1,
+					struct type *type2);
 
-struct cache_entry
-{
-  /* The name used to perform the lookup.  */
-  const char *name;
-  /* The namespace used during the lookup.  */
-  domain_enum domain;
-  /* The symbol returned by the lookup, or NULL if no matching symbol
-     was found.  */
-  struct symbol *sym;
-  /* The block where the symbol was found, or NULL if no matching
-     symbol was found.  */
-  const struct block *block;
-  /* A pointer to the next entry with the same hash.  */
-  struct cache_entry *next;
-};
+static const char *ada_unqualify_enum_name (const char *name);
+
 
-/* The Ada symbol cache, used to store the result of Ada-mode symbol
-   lookups in the course of executing the user's commands.
+/* The character set used for source files.  */
+static const char *ada_source_charset;
 
-   The cache is implemented using a simple, fixed-sized hash.
-   The size is fixed on the grounds that there are not likely to be
-   all that many symbols looked up during any given session, regardless
-   of the size of the symbol table.  If we decide to go to a resizable
-   table, let's just use the stuff from libiberty instead.  */
+/* The string "UTF-8".  This is here so we can check for the UTF-8
+   charset using == rather than strcmp.  */
+static const char ada_utf8[] = "UTF-8";
+
+/* Each entry in the UTF-32 case-folding table is of this form.  */
+struct utf8_entry
+{
+  /* The start and end, inclusive, of this range of codepoints.  */
+  uint32_t start, end;
+  /* The delta to apply to get the upper-case form.  0 if this is
+     already upper-case.  */
+  int upper_delta;
+  /* The delta to apply to get the lower-case form.  0 if this is
+     already lower-case.  */
+  int lower_delta;
 
-#define HASH_SIZE 1009
+  bool operator< (uint32_t val) const
+  {
+    return end < val;
+  }
+};
 
-struct ada_symbol_cache
+static const utf8_entry ada_case_fold[] =
 {
-  /* An obstack used to store the entries in our cache.  */
-  struct obstack cache_space;
-
-  /* The root of the hash table used to implement our symbol cache.  */
-  struct cache_entry *root[HASH_SIZE];
+#include "ada-casefold.h"
 };
 
-static void ada_free_symbol_cache (struct ada_symbol_cache *sym_cache);
-
-/* Maximum-sized dynamic type.  */
-static unsigned int varsize_limit;
+
 
 static const char ada_completer_word_break_characters[] =
 #ifdef VMS
@@ -319,11 +258,11 @@ static int warning_limit = 2;
    expression evaluation.  */
 static int warnings_issued = 0;
 
-static const char *known_runtime_file_name_patterns[] = {
+static const char * const known_runtime_file_name_patterns[] = {
   ADA_KNOWN_RUNTIME_FILE_NAME_PATTERNS NULL
 };
 
-static const char *known_auxiliary_function_name_patterns[] = {
+static const char * const known_auxiliary_function_name_patterns[] = {
   ADA_KNOWN_AUXILIARY_FUNCTION_NAME_PATTERNS NULL
 };
 
@@ -332,23 +271,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;
@@ -372,7 +294,7 @@ struct ada_inferior_data
 };
 
 /* Our key to this module's inferior data.  */
-static const struct inferior_key<ada_inferior_data> ada_inferior_data;
+static const registry<inferior>::key<ada_inferior_data> ada_inferior_data;
 
 /* Return our inferior data for the given inferior (INF).
 
@@ -406,40 +328,83 @@ ada_inferior_exit (struct inferior *inf)
 
 			/* program-space-specific data.  */
 
-/* This module's per-program-space data.  */
-struct ada_pspace_data
+/* The result of a symbol lookup to be stored in our symbol cache.  */
+
+struct cache_entry
+{
+  /* The name used to perform the lookup.  */
+  std::string name;
+  /* The namespace used during the lookup.  */
+  domain_search_flags domain = 0;
+  /* The symbol returned by the lookup, or NULL if no matching symbol
+     was found.  */
+  struct symbol *sym = nullptr;
+  /* The block where the symbol was found, or NULL if no matching
+     symbol was found.  */
+  const struct block *block = nullptr;
+};
+
+/* The symbol cache uses this type when searching.  */
+
+struct cache_entry_search
 {
-  ~ada_pspace_data ()
+  const char *name;
+  domain_search_flags domain;
+};
+
+/* Hash function for cache entry.  */
+
+struct cache_entry_hash
+{
+  using is_transparent = void;
+  using is_avalanching = void;
+
+  /* This implementation works for both cache_entry and
+     cache_entry_search.  */
+  template<typename T>
+  uint64_t operator() (const T &entry) const noexcept
   {
-    if (sym_cache != NULL)
-      ada_free_symbol_cache (sym_cache);
+    return ankerl::unordered_dense::hash<std::string_view> () (entry.name);
   }
+};
 
-  /* The Ada symbol cache.  */
-  struct ada_symbol_cache *sym_cache = nullptr;
+/* Equality function for cache entry.  */
+
+struct cache_entry_eq
+{
+  using is_transparent = void;
+
+  /* This implementation works for both cache_entry and
+     cache_entry_search.  */
+  template<typename T>
+  bool operator() (const T &lhs, const cache_entry &rhs) const noexcept
+  {
+    return lhs.domain == rhs.domain && lhs.name == rhs.name;
+  }
 };
 
-/* Key to our per-program-space data.  */
-static const struct program_space_key<ada_pspace_data> ada_pspace_data_handle;
+using cache_entry_set
+   = gdb::unordered_set<cache_entry, cache_entry_hash, cache_entry_eq>;
 
-/* Return this module's data for the given program space (PSPACE).
-   If not is found, add a zero'ed one now.
+/* Key to our per-program-space data.  */
+static const registry<program_space>::key<cache_entry_set>
+  ada_pspace_data_handle;
 
-   This function always returns a valid object.  */
+/* Return this module's data for the given program space (PSPACE).  If
+   not is found, one is created.  This function always returns a valid
+   object.  */
 
-static struct ada_pspace_data *
+static cache_entry_set &
 get_ada_pspace_data (struct program_space *pspace)
 {
-  struct ada_pspace_data *data;
-
-  data = ada_pspace_data_handle.get (pspace);
-  if (data == NULL)
+  cache_entry_set *data = ada_pspace_data_handle.get (pspace);
+  if (data == nullptr)
     data = ada_pspace_data_handle.emplace (pspace);
 
-  return data;
+  return *data;
 }
 
-                        /* Utilities */
+			/* Utilities */
 
 /* If TYPE is a TYPE_CODE_TYPEDEF type, return the target type after
    all typedef layers have been peeled.  Otherwise, return TYPE.
@@ -471,8 +436,8 @@ get_ada_pspace_data (struct program_spac
 static struct type *
 ada_typedef_target_type (struct type *type)
 {
-  while (TYPE_CODE (type) == TYPE_CODE_TYPEDEF)
-    type = TYPE_TARGET_TYPE (type);
+  while (type->code () == TYPE_CODE_TYPEDEF)
+    type = type->target_type ();
   return type;
 }
 
@@ -509,56 +474,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.  */
-
-#define GROW_VECT(v, s, m)                                    \
-   if ((s) < (m)) (v) = (char *) grow_vect (v, &(s), m, sizeof *(v));
-
-/* Assuming VECT points to an array of *SIZE objects of size
-   ELEMENT_SIZE, grow it to contain at least MIN_SIZE objects,
-   updating *SIZE as necessary and returning the (new) array.  */
-
-static void *
-grow_vect (void *vect, size_t *size, size_t min_size, int element_size)
-{
-  if (*size < min_size)
-    {
-      *size *= 2;
-      if (*size < min_size)
-        *size = min_size;
-      vect = xrealloc (vect, *size * element_size);
-    }
-  return vect;
-}
-
 /* True (non-zero) iff TARGET matches FIELD_NAME up to any trailing
    suffix of FIELD_NAME beginning "___".  */
 
@@ -570,9 +485,9 @@ field_name_match (const char *field_name
   return
     (strncmp (field_name, target, len) == 0
      && (field_name[len] == '\0'
-         || (startswith (field_name + len, "___")
-             && strcmp (field_name + strlen (field_name) - 6,
-                        "___XVN") != 0)));
+	 || (startswith (field_name + len, "___")
+	     && strcmp (field_name + strlen (field_name) - 6,
+			"___XVN") != 0)));
 }
 
 
@@ -586,18 +501,18 @@ field_name_match (const char *field_name
 
 int
 ada_get_field_index (const struct type *type, const char *field_name,
-                     int maybe_missing)
+		     int maybe_missing)
 {
   int fieldno;
   struct type *struct_type = check_typedef ((struct type *) type);
 
-  for (fieldno = 0; fieldno < TYPE_NFIELDS (struct_type); fieldno++)
-    if (field_name_match (TYPE_FIELD_NAME (struct_type, fieldno), field_name))
+  for (fieldno = 0; fieldno < struct_type->num_fields (); fieldno++)
+    if (field_name_match (struct_type->field (fieldno).name (), 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;
 }
@@ -614,9 +529,9 @@ ada_name_prefix_len (const char *name)
       const char *p = strstr (name, "___");
 
       if (p == NULL)
-        return strlen (name);
+	return strlen (name);
       else
-        return p - name;
+	return p - name;
     }
 }
 
@@ -642,29 +557,29 @@ static struct value *
 coerce_unspec_val_to_type (struct value *val, struct type *type)
 {
   type = ada_check_typedef (type);
-  if (value_type (val) == type)
+  if (val->type () == type)
     return val;
   else
     {
       struct value *result;
 
-      /* Make sure that the object size is not unreasonable before
-         trying to allocate some memory for it.  */
-      ada_ensure_varsize_limit (type);
-
-      if (value_lazy (val)
-          || TYPE_LENGTH (type) > TYPE_LENGTH (value_type (val)))
-	result = allocate_value_lazy (type);
-      else
-	{
-	  result = allocate_value (type);
-	  value_contents_copy_raw (result, 0, val, 0, TYPE_LENGTH (type));
-	}
-      set_value_component_location (result, val);
-      set_value_bitsize (result, value_bitsize (val));
-      set_value_bitpos (result, value_bitpos (val));
-      if (VALUE_LVAL (result) == lval_memory)
-	set_value_address (result, value_address (val));
+      if (val->optimized_out ())
+	result = value::allocate_optimized_out (type);
+      else if (val->lazy ()
+	       /* Be careful not to make a lazy not_lval value.  */
+	       || (val->lval () != not_lval
+		   && type->length () > val->type ()->length ()))
+	result = value::allocate_lazy (type);
+      else
+	{
+	  result = value::allocate (type);
+	  val->contents_copy (result, 0, 0, type->length ());
+	}
+      result->set_component_location (val);
+      result->set_bitsize (val->bitsize ());
+      result->set_bitpos (val->bitpos ());
+      if (result->lval () == lval_memory)
+	result->set_address (val->address ());
       return result;
     }
 }
@@ -709,17 +624,6 @@ lim_warning (const char *format, ...)
   va_end (args);
 }
 
-/* Issue an error if the size of an object of type T is unreasonable,
-   i.e. if it would be a bad idea to allocate a value of this type in
-   GDB.  */
-
-void
-ada_ensure_varsize_limit (const struct type *type)
-{
-  if (TYPE_LENGTH (type) > varsize_limit)
-    error (_("object size is larger than varsize-limit"));
-}
-
 /* Maximum value of a SIZE-byte signed integer type.  */
 static LONGEST
 max_of_size (int size)
@@ -749,33 +653,47 @@ umax_of_size (int size)
 static LONGEST
 max_of_type (struct type *t)
 {
-  if (TYPE_UNSIGNED (t))
-    return (LONGEST) umax_of_size (TYPE_LENGTH (t));
+  if (t->is_unsigned ())
+    return (LONGEST) umax_of_size (t->length ());
   else
-    return max_of_size (TYPE_LENGTH (t));
+    return max_of_size (t->length ());
 }
 
 /* Minimum value of integral type T, as a signed quantity.  */
 static LONGEST
 min_of_type (struct type *t)
 {
-  if (TYPE_UNSIGNED (t)) 
+  if (t->is_unsigned ())
     return 0;
   else
-    return min_of_size (TYPE_LENGTH (t));
+    return min_of_size (t->length ());
 }
 
 /* The largest value in the domain of TYPE, a discrete type, as an integer.  */
 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.is_constant ())
+	  return high.const_val ();
+	else
+	  {
+	    gdb_assert (!high.is_available ());
+
+	    /* 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 (type->num_fields () - 1).loc_enumval ();
     case TYPE_CODE_BOOL:
       return 1;
     case TYPE_CODE_CHAR:
@@ -790,13 +708,27 @@ 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.is_constant ())
+	  return low.const_val ();
+	else
+	  {
+	    gdb_assert (!low.is_available ());
+
+	    /* 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);
+      return type->field (0).loc_enumval ();
     case TYPE_CODE_BOOL:
       return 0;
     case TYPE_CODE_CHAR:
@@ -813,11 +745,11 @@ 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;
-      type = TYPE_TARGET_TYPE (type);
+      if (type == type->target_type () || type->target_type () == NULL)
+	return type;
+      type = type->target_type ();
     }
   return type;
 }
@@ -830,16 +762,16 @@ get_base_type (struct type *type)
 struct value *
 ada_get_decoded_value (struct value *value)
 {
-  struct type *type = ada_check_typedef (value_type (value));
+  struct type *type = ada_check_typedef (value->type ());
 
   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.  */
-        value = ada_coerce_to_simple_array_ptr (value);
+      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);
+	value = ada_coerce_to_simple_array (value);
     }
   else
     value = ada_to_fixed_value (value);
@@ -863,28 +795,15 @@ ada_get_decoded_type (struct type *type)
 
 
 
-                                /* Language Selection */
-
-/* If the main program is in Ada, return language_ada, otherwise return LANG
-   (the main program is in Ada iif the adainit symbol is found).  */
-
-static enum language
-ada_update_initial_language (enum language lang)
-{
-  if (lookup_minimal_symbol ("adainit", NULL, NULL).minsym != NULL)
-    return language_ada;
-
-  return lang;
-}
+				/* Language Selection */
 
 /* If the main procedure is written in Ada, then return its name.
    The result is good until the next call.  Return NULL if the main
    procedure doesn't appear to be in Ada.  */
 
-char *
-ada_main_name (void)
+const char *
+ada_main_name ()
 {
-  struct bound_minimal_symbol msym;
   static gdb::unique_xmalloc_ptr<char> main_program_name;
 
   /* For Ada, the name of the main procedure is stored in a specific
@@ -892,22 +811,24 @@ ada_main_name (void)
      extract its address, and then read that string.  If we didn't find
      that string, then most probably the main procedure is not written
      in Ada.  */
-  msym = lookup_minimal_symbol (ADA_MAIN_PROGRAM_SYMBOL_NAME, NULL, NULL);
+  bound_minimal_symbol msym
+    = lookup_minimal_symbol (current_program_space,
+			     ADA_MAIN_PROGRAM_SYMBOL_NAME);
 
   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 = msym.value_address ();
       if (main_program_name_addr == 0)
-        error (_("Invalid address for Ada main program name."));
+	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;
+      /* Force trust_readonly, because we always want to fetch this
+	 string from the executable, not from inferior memory.  If the
+	 user changes the exec-file and invokes "start", we want to
+	 pick the "main" from the new executable, not one that may
+	 come from the still-live inferior.  */
+      scoped_restore save_trust_readonly
+	= make_scoped_restore (&trust_readonly, true);
+      main_program_name = target_read_string (main_program_name_addr, 1024);
       return main_program_name.get ();
     }
 
@@ -915,7 +836,7 @@ ada_main_name (void)
   return NULL;
 }
 
-                                /* Symbols */
+				/* Symbols */
 
 /* Table of Ada operators and their GNAT-encoded names.  Last entry is pair
    of NULLs.  */
@@ -945,99 +866,300 @@ const struct ada_opname_map ada_opname_t
   {NULL, NULL}
 };
 
-/* The "encoded" form of DECODED, according to GNAT conventions.  The
-   result is valid until the next call to ada_encode.  If
+/* If STR is a decoded version of a compiler-provided suffix (like the
+   "[cold]" in "symbol[cold]"), return true.  Otherwise, return
+   false.  */
+
+static bool
+is_compiler_suffix (const char *str)
+{
+  gdb_assert (*str == '[');
+  ++str;
+  while (*str != '\0' && isalpha (*str))
+    ++str;
+  /* We accept a missing "]" in order to support completion.  */
+  return *str == '\0' || (str[0] == ']' && str[1] == '\0');
+}
+
+/* Append a non-ASCII character to RESULT.  */
+static void
+append_hex_encoded (std::string &result, uint32_t one_char)
+{
+  if (one_char <= 0xff)
+    {
+      result.append ("U");
+      result.append (phex (one_char, 1));
+    }
+  else if (one_char <= 0xffff)
+    {
+      result.append ("W");
+      result.append (phex (one_char, 2));
+    }
+  else
+    {
+      result.append ("WW");
+      result.append (phex (one_char, 4));
+    }
+}
+
+/* Return a string that is a copy of the data in STORAGE, with
+   non-ASCII characters replaced by the appropriate hex encoding.  A
+   template is used because, for UTF-8, we actually want to work with
+   UTF-32 codepoints.  */
+template<typename T>
+std::string
+copy_and_hex_encode (struct obstack *storage)
+{
+  const T *chars = (T *) obstack_base (storage);
+  int num_chars = obstack_object_size (storage) / sizeof (T);
+  std::string result;
+  for (int i = 0; i < num_chars; ++i)
+    {
+      if (chars[i] <= 0x7f)
+	{
+	  /* The host character set has to be a superset of ASCII, as
+	     are all the other character sets we can use.  */
+	  result.push_back (chars[i]);
+	}
+      else
+	append_hex_encoded (result, chars[i]);
+    }
+  return result;
+}
+
+/* The "encoded" form of DECODED, according to GNAT conventions.  If
    THROW_ERRORS, throw an error if invalid operator name is found.
-   Otherwise, return NULL in that case.  */
+   Otherwise, return the empty string in that case.  */
 
-static char *
+static std::string
 ada_encode_1 (const char *decoded, bool throw_errors)
 {
-  static char *encoding_buffer = NULL;
-  static size_t encoding_buffer_size = 0;
-  const char *p;
-  int k;
-
   if (decoded == NULL)
-    return NULL;
-
-  GROW_VECT (encoding_buffer, encoding_buffer_size,
-             2 * strlen (decoded) + 10);
+    return {};
 
-  k = 0;
-  for (p = decoded; *p != '\0'; p += 1)
+  std::string encoding_buffer;
+  bool saw_non_ascii = false;
+  for (const char *p = decoded; *p != '\0'; p += 1)
     {
+      if ((*p & 0x80) != 0)
+	saw_non_ascii = true;
+
       if (*p == '.')
-        {
-          encoding_buffer[k] = encoding_buffer[k + 1] = '_';
-          k += 2;
-        }
+	encoding_buffer.append ("__");
+      else if (*p == '[' && is_compiler_suffix (p))
+	{
+	  encoding_buffer = encoding_buffer + "." + (p + 1);
+	  if (encoding_buffer.back () == ']')
+	    encoding_buffer.pop_back ();
+	  break;
+	}
       else if (*p == '"')
-        {
-          const struct ada_opname_map *mapping;
+	{
+	  const struct ada_opname_map *mapping;
 
-          for (mapping = ada_opname_table;
-               mapping->encoded != NULL
-               && !startswith (p, mapping->decoded); mapping += 1)
-            ;
-          if (mapping->encoded == NULL)
+	  for (mapping = ada_opname_table;
+	       mapping->encoded != NULL
+	       && !startswith (p, mapping->decoded); mapping += 1)
+	    ;
+	  if (mapping->encoded == NULL)
 	    {
 	      if (throw_errors)
 		error (_("invalid Ada operator name: %s"), p);
 	      else
-		return NULL;
+		return {};
 	    }
-          strcpy (encoding_buffer + k, mapping->encoded);
-          k += strlen (mapping->encoded);
-          break;
-        }
+	  encoding_buffer.append (mapping->encoded);
+	  break;
+	}
       else
-        {
-          encoding_buffer[k] = *p;
-          k += 1;
-        }
+	encoding_buffer.push_back (*p);
+    }
+
+  /* If a non-ASCII character is seen, we must convert it to the
+     appropriate hex form.  As this is more expensive, we keep track
+     of whether it is even necessary.  */
+  if (saw_non_ascii)
+    {
+      auto_obstack storage;
+      bool is_utf8 = ada_source_charset == ada_utf8;
+      try
+	{
+	  convert_between_encodings
+	    (host_charset (),
+	     is_utf8 ? HOST_UTF32 : ada_source_charset,
+	     (const gdb_byte *) encoding_buffer.c_str (),
+	     encoding_buffer.length (), 1,
+	     &storage, translit_none);
+	}
+      catch (const gdb_exception &)
+	{
+	  static bool warned = false;
+
+	  /* Converting to UTF-32 shouldn't fail, so if it doesn't, we
+	     might like to know why.  */
+	  if (!warned)
+	    {
+	      warned = true;
+	      warning (_("charset conversion failure for '%s'.\n"
+			 "You may have the wrong value for 'set ada source-charset'."),
+		       encoding_buffer.c_str ());
+	    }
+
+	  /* We don't try to recover from errors.  */
+	  return encoding_buffer;
+	}
+
+      if (is_utf8)
+	return copy_and_hex_encode<uint32_t> (&storage);
+      return copy_and_hex_encode<gdb_byte> (&storage);
     }
 
-  encoding_buffer[k] = '\0';
   return encoding_buffer;
 }
 
-/* The "encoded" form of DECODED, according to GNAT conventions.
-   The result is valid until the next call to ada_encode.  */
-
-char *
-ada_encode (const char *decoded)
-{
-  return ada_encode_1 (decoded, true);
+/* Find the entry for C in the case-folding table.  Return nullptr if
+   the entry does not cover C.  */
+static const utf8_entry *
+find_case_fold_entry (uint32_t c)
+{
+  auto iter = std::lower_bound (std::begin (ada_case_fold),
+				std::end (ada_case_fold),
+				c);
+  if (iter == std::end (ada_case_fold)
+      || c < iter->start
+      || c > iter->end)
+    return nullptr;
+  return &*iter;
 }
 
 /* Return NAME folded to lower case, or, if surrounded by single
-   quotes, unfolded, but with the quotes stripped away.  Result good
-   to next call.  */
+   quotes, unfolded, but with the quotes stripped away.  If
+   THROW_ON_ERROR is true, encoding failures will throw an exception
+   rather than emitting a warning.  Result good to next call.  */
 
-static char *
-ada_fold_name (const char *name)
+static const char *
+ada_fold_name (std::string_view name, bool throw_on_error = false)
 {
-  static char *fold_buffer = NULL;
-  static size_t fold_buffer_size = 0;
-
-  int len = strlen (name);
-  GROW_VECT (fold_buffer, fold_buffer_size, len + 1);
+  static std::string fold_storage;
 
-  if (name[0] == '\'')
-    {
-      strncpy (fold_buffer, name + 1, len - 2);
-      fold_buffer[len - 2] = '\000';
-    }
+  if (!name.empty () && name[0] == '\'')
+    fold_storage = name.substr (1, name.size () - 2);
   else
     {
-      int i;
+      /* Why convert to UTF-32 and implement our own case-folding,
+	 rather than convert to wchar_t and use the platform's
+	 functions?  I'm glad you asked.
+
+	 The main problem is that GNAT implements an unusual rule for
+	 case folding.  For ASCII letters, letters in single-byte
+	 encodings (such as ISO-8859-*), and Unicode letters that fit
+	 in a single byte (i.e., code point is <= 0xff), the letter is
+	 folded to lower case.  Other Unicode letters are folded to
+	 upper case.
+
+	 This rule means that the code must be able to examine the
+	 value of the character.  And, some hosts do not use Unicode
+	 for wchar_t, so examining the value of such characters is
+	 forbidden.  */
+      auto_obstack storage;
+      try
+	{
+	  convert_between_encodings
+	    (host_charset (), HOST_UTF32,
+	     (const gdb_byte *) name.data (),
+	     name.length (), 1,
+	     &storage, translit_none);
+	}
+      catch (const gdb_exception &)
+	{
+	  if (throw_on_error)
+	    throw;
+
+	  static bool warned = false;
+
+	  /* Converting to UTF-32 shouldn't fail, so if it doesn't, we
+	     might like to know why.  */
+	  if (!warned)
+	    {
+	      warned = true;
+	      warning (_("could not convert '%s' from the host encoding (%s) to UTF-32.\n"
+			 "This normally should not happen, please file a bug report."),
+		       std::string (name).c_str (), host_charset ());
+	    }
+
+	  /* We don't try to recover from errors; just return the
+	     original string.  */
+	  fold_storage = name;
+	  return fold_storage.c_str ();
+	}
+
+      bool is_utf8 = ada_source_charset == ada_utf8;
+      uint32_t *chars = (uint32_t *) obstack_base (&storage);
+      int num_chars = obstack_object_size (&storage) / sizeof (uint32_t);
+      for (int i = 0; i < num_chars; ++i)
+	{
+	  const struct utf8_entry *entry = find_case_fold_entry (chars[i]);
+	  if (entry != nullptr)
+	    {
+	      uint32_t low = chars[i] + entry->lower_delta;
+	      if (!is_utf8 || low <= 0xff)
+		chars[i] = low;
+	      else
+		chars[i] = chars[i] + entry->upper_delta;
+	    }
+	}
 
-      for (i = 0; i <= len; i += 1)
-        fold_buffer[i] = tolower (name[i]);
+      /* Now convert back to ordinary characters.  */
+      auto_obstack reconverted;
+      try
+	{
+	  convert_between_encodings (HOST_UTF32,
+				     host_charset (),
+				     (const gdb_byte *) chars,
+				     num_chars * sizeof (uint32_t),
+				     sizeof (uint32_t),
+				     &reconverted,
+				     translit_none);
+	  obstack_1grow (&reconverted, '\0');
+	  fold_storage = std::string ((const char *) obstack_base (&reconverted));
+	}
+      catch (const gdb_exception &)
+	{
+	  if (throw_on_error)
+	    throw;
+
+	  static bool warned = false;
+
+	  /* Converting back from UTF-32 shouldn't normally fail, but
+	     there are some host encodings without upper/lower
+	     equivalence.  */
+	  if (!warned)
+	    {
+	      warned = true;
+	      warning (_("could not convert the lower-cased variant of '%s'\n"
+			 "from UTF-32 to the host encoding (%s)."),
+		       std::string (name).c_str (), host_charset ());
+	    }
+
+	  /* We don't try to recover from errors; just return the
+	     original string.  */
+	  fold_storage = name;
+	}
     }
 
-  return fold_buffer;
+  return fold_storage.c_str ();
+}
+
+/* The "encoded" form of DECODED, according to GNAT conventions.  If
+   FOLD is true (the default), case-fold any ordinary symbol.  Symbols
+   with <...> quoting are not folded in any case.  */
+
+std::string
+ada_encode (const char *decoded, bool fold)
+{
+  if (fold && decoded[0] != '<')
+    decoded = ada_fold_name (decoded);
+  return ada_encode_1 (decoded, true);
 }
 
 /* Return nonzero if C is either a digit or a lowercase alphabet character.  */
@@ -1068,15 +1190,15 @@ ada_remove_trailing_digits (const char *
       int i = *len - 2;
 
       while (i > 0 && isdigit (encoded[i]))
-        i--;
+	i--;
       if (i >= 0 && encoded[i] == '.')
-        *len = i;
+	*len = i;
       else if (i >= 0 && encoded[i] == '$')
-        *len = i;
+	*len = i;
       else if (i >= 2 && startswith (encoded + i - 2, "___"))
-        *len = i - 2;
+	*len = i - 2;
       else if (i >= 1 && startswith (encoded + i - 1, "__"))
-        *len = i - 1;
+	*len = i - 1;
     }
 }
 
@@ -1102,18 +1224,101 @@ ada_remove_po_subprogram_suffix (const c
     *len = *len - 1;
 }
 
-/* If ENCODED follows the GNAT entity encoding conventions, then return
-   the decoded form of ENCODED.  Otherwise, return "<%s>" where "%s" is
-   replaced by ENCODED.  */
+/* If ENCODED ends with a compiler-provided suffix (like ".cold"),
+   then update *LEN to remove the suffix and return the offset of the
+   character just past the ".".  Otherwise, return -1.  */
+
+static int
+remove_compiler_suffix (const char *encoded, int *len)
+{
+  int offset = *len - 1;
+  while (offset > 0 && isalpha (encoded[offset]))
+    --offset;
+  if (offset > 0 && encoded[offset] == '.')
+    {
+      *len = offset;
+      return offset + 1;
+    }
+  return -1;
+}
+
+/* Convert an ASCII hex string to a number.  Reads exactly N
+   characters from STR.  Returns true on success, false if one of the
+   digits was not a hex digit.  */
+static bool
+convert_hex (const char *str, int n, uint32_t *out)
+{
+  uint32_t result = 0;
+
+  for (int i = 0; i < n; ++i)
+    {
+      if (!isxdigit (str[i]))
+	return false;
+      result <<= 4;
+      result |= fromhex (str[i]);
+    }
+
+  *out = result;
+  return true;
+}
+
+/* Convert a wide character from its ASCII hex representation in STR
+   (consisting of exactly N characters) to the host encoding,
+   appending the resulting bytes to OUT.  If N==2 and the Ada source
+   charset is not UTF-8, then hex refers to an encoding in the
+   ADA_SOURCE_CHARSET; otherwise, use UTF-32.  Return true on success.
+   Return false and do not modify OUT on conversion failure.  */
+static bool
+convert_from_hex_encoded (std::string &out, const char *str, int n)
+{
+  uint32_t value;
+
+  if (!convert_hex (str, n, &value))
+    return false;
+  try
+    {
+      auto_obstack bytes;
+      /* In the 'U' case, the hex digits encode the character in the
+	 Ada source charset.  However, if the source charset is UTF-8,
+	 this really means it is a single-byte UTF-32 character.  */
+      if (n == 2 && ada_source_charset != ada_utf8)
+	{
+	  gdb_byte one_char = (gdb_byte) value;
+
+	  convert_between_encodings (ada_source_charset, host_charset (),
+				     &one_char,
+				     sizeof (one_char), sizeof (one_char),
+				     &bytes, translit_none);
+	}
+      else
+	convert_between_encodings (HOST_UTF32, host_charset (),
+				   (const gdb_byte *) &value,
+				   sizeof (value), sizeof (value),
+				   &bytes, translit_none);
+      obstack_1grow (&bytes, '\0');
+      out.append ((const char *) obstack_base (&bytes));
+    }
+  catch (const gdb_exception &)
+    {
+      /* On failure, the caller will just let the encoded form
+	 through, which seems basically reasonable.  */
+      return false;
+    }
+
+  return true;
+}
+
+/* See ada-lang.h.  */
 
 std::string
-ada_decode (const char *encoded)
+ada_decode (const char *encoded, bool wrap, bool operators, bool wide)
 {
-  int i, j;
+  int i;
   int len0;
   const char *p;
   int at_start_name;
   std::string decoded;
+  int suffix = -1;
 
   /* With function descriptors on PPC64, the value of a symbol named
      ".FN", if it exists, is the entry point of the function "FN".  */
@@ -1125,6 +1330,11 @@ ada_decode (const char *encoded)
      if we see this prefix.  */
   if (startswith (encoded, "_ada_"))
     encoded += 5;
+  /* The "___ghost_" prefix is used for ghost entities.  Normally
+     these aren't preserved but when they are, it's useful to see
+     them.  */
+  if (startswith (encoded, "___ghost_"))
+    encoded += 9;
 
   /* If the name starts with '_', then it is not a properly encoded
      name, so do not attempt to decode it.  Similarly, if the name
@@ -1134,6 +1344,8 @@ ada_decode (const char *encoded)
 
   len0 = strlen (encoded);
 
+  suffix = remove_compiler_suffix (encoded, &len0);
+
   ada_remove_trailing_digits (encoded, &len0);
   ada_remove_po_subprogram_suffix (encoded, &len0);
 
@@ -1145,9 +1357,9 @@ ada_decode (const char *encoded)
   if (p != NULL && p - encoded < len0 - 3)
     {
       if (p[3] == 'X')
-        len0 = p - encoded;
+	len0 = p - encoded;
       else
-        goto Suppress;
+	goto Suppress;
     }
 
   /* Remove any trailing TKB suffix.  It tells us that this symbol
@@ -1170,192 +1382,231 @@ ada_decode (const char *encoded)
   if (len0 > 1 && startswith (encoded + len0 - 1, "B"))
     len0 -= 1;
 
-  /* Make decoded big enough for possible expansion by operator name.  */
-
-  decoded.resize (2 * len0 + 1, 'X');
-
   /* Remove trailing __{digit}+ or trailing ${digit}+.  */
 
   if (len0 > 1 && isdigit (encoded[len0 - 1]))
     {
       i = len0 - 2;
       while ((i >= 0 && isdigit (encoded[i]))
-             || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
-        i -= 1;
+	     || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
+	i -= 1;
       if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
-        len0 = i - 1;
-      else if (encoded[i] == '$')
-        len0 = i;
+	len0 = i - 1;
+      else if (i >= 0 && encoded[i] == '$')
+	len0 = i;
     }
 
   /* The first few characters that are not alphabetic are not part
      of any encoding we use, so we can copy them over verbatim.  */
 
-  for (i = 0, j = 0; i < len0 && !isalpha (encoded[i]); i += 1, j += 1)
-    decoded[j] = encoded[i];
+  for (i = 0; i < len0 && !isalpha (encoded[i]); i += 1)
+    decoded.push_back (encoded[i]);
 
   at_start_name = 1;
   while (i < len0)
     {
       /* Is this a symbol function?  */
-      if (at_start_name && encoded[i] == 'O')
-        {
-          int k;
-
-          for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
-            {
-              int op_len = strlen (ada_opname_table[k].encoded);
-              if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
-                            op_len - 1) == 0)
-                  && !isalnum (encoded[i + op_len]))
-                {
-                  strcpy (&decoded.front() + j, ada_opname_table[k].decoded);
-                  at_start_name = 0;
-                  i += op_len;
-                  j += strlen (ada_opname_table[k].decoded);
-                  break;
-                }
-            }
-          if (ada_opname_table[k].encoded != NULL)
-            continue;
-        }
+      if (operators && at_start_name && encoded[i] == 'O')
+	{
+	  int k;
+
+	  for (k = 0; ada_opname_table[k].encoded != NULL; k += 1)
+	    {
+	      int op_len = strlen (ada_opname_table[k].encoded);
+	      if ((strncmp (ada_opname_table[k].encoded + 1, encoded + i + 1,
+			    op_len - 1) == 0)
+		  && !isalnum (encoded[i + op_len]))
+		{
+		  decoded.append (ada_opname_table[k].decoded);
+		  at_start_name = 0;
+		  i += op_len;
+		  break;
+		}
+	    }
+	  if (ada_opname_table[k].encoded != NULL)
+	    continue;
+	}
       at_start_name = 0;
 
       /* Replace "TK__" with "__", which will eventually be translated
-         into "." (just below).  */
+	 into "." (just below).  */
 
       if (i < len0 - 4 && startswith (encoded + i, "TK__"))
-        i += 2;
+	i += 2;
 
       /* Replace "__B_{DIGITS}+__" sequences by "__", which will eventually
-         be translated into "." (just below).  These are internal names
-         generated for anonymous blocks inside which our symbol is nested.  */
+	 be translated into "." (just below).  These are internal names
+	 generated for anonymous blocks inside which our symbol is nested.  */
 
       if (len0 - i > 5 && encoded [i] == '_' && encoded [i+1] == '_'
-          && encoded [i+2] == 'B' && encoded [i+3] == '_'
-          && isdigit (encoded [i+4]))
-        {
-          int k = i + 5;
-          
-          while (k < len0 && isdigit (encoded[k]))
-            k++;  /* Skip any extra digit.  */
-
-          /* Double-check that the "__B_{DIGITS}+" sequence we found
-             is indeed followed by "__".  */
-          if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
-            i = k;
-        }
+	  && encoded [i+2] == 'B' && encoded [i+3] == '_'
+	  && isdigit (encoded [i+4]))
+	{
+	  int k = i + 5;
+	  
+	  while (k < len0 && isdigit (encoded[k]))
+	    k++;  /* Skip any extra digit.  */
+
+	  /* Double-check that the "__B_{DIGITS}+" sequence we found
+	     is indeed followed by "__".  */
+	  if (len0 - k > 2 && encoded [k] == '_' && encoded [k+1] == '_')
+	    i = k;
+	}
 
       /* Remove _E{DIGITS}+[sb] */
 
       /* Just as for protected object subprograms, there are 2 categories
-         of subprograms created by the compiler for each entry.  The first
-         one implements the actual entry code, and has a suffix following
-         the convention above; the second one implements the barrier and
-         uses the same convention as above, except that the 'E' is replaced
-         by a 'B'.
-
-         Just as above, we do not decode the name of barrier functions
-         to give the user a clue that the code he is debugging has been
-         internally generated.  */
+	 of subprograms created by the compiler for each entry.  The first
+	 one implements the actual entry code, and has a suffix following
+	 the convention above; the second one implements the barrier and
+	 uses the same convention as above, except that the 'E' is replaced
+	 by a 'B'.
+
+	 Just as above, we do not decode the name of barrier functions
+	 to give the user a clue that the code he is debugging has been
+	 internally generated.  */
 
       if (len0 - i > 3 && encoded [i] == '_' && encoded[i+1] == 'E'
-          && isdigit (encoded[i+2]))
-        {
-          int k = i + 3;
-
-          while (k < len0 && isdigit (encoded[k]))
-            k++;
-
-          if (k < len0
-              && (encoded[k] == 'b' || encoded[k] == 's'))
-            {
-              k++;
-              /* Just as an extra precaution, make sure that if this
-                 suffix is followed by anything else, it is a '_'.
-                 Otherwise, we matched this sequence by accident.  */
-              if (k == len0
-                  || (k < len0 && encoded[k] == '_'))
-                i = k;
-            }
-        }
+	  && isdigit (encoded[i+2]))
+	{
+	  int k = i + 3;
+
+	  while (k < len0 && isdigit (encoded[k]))
+	    k++;
+
+	  if (k < len0
+	      && (encoded[k] == 'b' || encoded[k] == 's'))
+	    {
+	      k++;
+	      /* Just as an extra precaution, make sure that if this
+		 suffix is followed by anything else, it is a '_'.
+		 Otherwise, we matched this sequence by accident.  */
+	      if (k == len0
+		  || (k < len0 && encoded[k] == '_'))
+		i = k;
+	    }
+	}
 
       /* Remove trailing "N" in [a-z0-9]+N__.  The N is added by
-         the GNAT front-end in protected object subprograms.  */
+	 the GNAT front-end in protected object subprograms.  */
 
       if (i < len0 + 3
-          && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
-        {
-          /* Backtrack a bit up until we reach either the begining of
-             the encoded name, or "__".  Make sure that we only find
-             digits or lowercase characters.  */
-          const char *ptr = encoded + i - 1;
-
-          while (ptr >= encoded && is_lower_alphanum (ptr[0]))
-            ptr--;
-          if (ptr < encoded
-              || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
-            i++;
-        }
+	  && encoded[i] == 'N' && encoded[i+1] == '_' && encoded[i+2] == '_')
+	{
+	  /* Backtrack a bit up until we reach either the beginning of
+	     the encoded name, or "__".  Make sure that we only find
+	     digits or lowercase characters.  */
+	  const char *ptr = encoded + i - 1;
+
+	  while (ptr >= encoded && is_lower_alphanum (ptr[0]))
+	    ptr--;
+	  if (ptr < encoded
+	      || (ptr > encoded && ptr[0] == '_' && ptr[-1] == '_'))
+	    i++;
+	}
+
+      if (wide && i < len0 + 3 && encoded[i] == 'U' && isxdigit (encoded[i + 1]))
+	{
+	  if (convert_from_hex_encoded (decoded, &encoded[i + 1], 2))
+	    {
+	      i += 3;
+	      continue;
+	    }
+	}
+      else if (wide && i < len0 + 5 && encoded[i] == 'W' && isxdigit (encoded[i + 1]))
+	{
+	  if (convert_from_hex_encoded (decoded, &encoded[i + 1], 4))
+	    {
+	      i += 5;
+	      continue;
+	    }
+	}
+      else if (wide && i < len0 + 10 && encoded[i] == 'W' && encoded[i + 1] == 'W'
+	       && isxdigit (encoded[i + 2]))
+	{
+	  if (convert_from_hex_encoded (decoded, &encoded[i + 2], 8))
+	    {
+	      i += 10;
+	      continue;
+	    }
+	}
 
       if (encoded[i] == 'X' && i != 0 && isalnum (encoded[i - 1]))
-        {
-          /* This is a X[bn]* sequence not separated from the previous
-             part of the name with a non-alpha-numeric character (in other
-             words, immediately following an alpha-numeric character), then
-             verify that it is placed at the end of the encoded name.  If
-             not, then the encoding is not valid and we should abort the
-             decoding.  Otherwise, just skip it, it is used in body-nested
-             package names.  */
-          do
-            i += 1;
-          while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
-          if (i < len0)
-            goto Suppress;
-        }
+	{
+	  /* This is a X[bn]* sequence not separated from the previous
+	     part of the name with a non-alpha-numeric character (in other
+	     words, immediately following an alphanumeric character), then
+	     verify that it is placed at the end of the encoded name.  If
+	     not, then the encoding is not valid and we should abort the
+	     decoding.  Otherwise, just skip it, it is used in body-nested
+	     package names.  */
+	  do
+	    i += 1;
+	  while (i < len0 && (encoded[i] == 'b' || encoded[i] == 'n'));
+	  if (i < len0)
+	    goto Suppress;
+	}
       else if (i < len0 - 2 && encoded[i] == '_' && encoded[i + 1] == '_')
-        {
-         /* Replace '__' by '.'.  */
-          decoded[j] = '.';
-          at_start_name = 1;
-          i += 2;
-          j += 1;
-        }
-      else
-        {
-          /* It's a character part of the decoded name, so just copy it
-             over.  */
-          decoded[j] = encoded[i];
-          i += 1;
-          j += 1;
-        }
+	{
+	 /* Replace '__' by '.'.  */
+	  decoded.push_back ('.');
+	  at_start_name = 1;
+	  i += 2;
+	}
+      else
+	{
+	  /* It's a character part of the decoded name, so just copy it
+	     over.  */
+	  decoded.push_back (encoded[i]);
+	  i += 1;
+	}
     }
-  decoded.resize (j);
 
   /* Decoded names should never contain any uppercase character.
      Double-check this, and abort the decoding if we find one.  */
 
-  for (i = 0; i < decoded.length(); ++i)
-    if (isupper (decoded[i]) || decoded[i] == ' ')
-      goto Suppress;
+  if (operators)
+    {
+      for (i = 0; i < decoded.length(); ++i)
+	if (isupper (decoded[i]) || decoded[i] == ' ')
+	  goto Suppress;
+    }
+
+  /* If the compiler added a suffix, append it now.  */
+  if (suffix >= 0)
+    decoded = decoded + "[" + &encoded[suffix] + "]";
 
   return decoded;
 
 Suppress:
+  if (!wrap)
+    return {};
+
   if (encoded[0] == '<')
     decoded = encoded;
   else
     decoded = '<' + std::string(encoded) + '>';
   return decoded;
+}
 
+#ifdef GDB_SELF_TEST
+
+static void
+ada_decode_tests ()
+{
+  /* This isn't valid, but used to cause a crash.  PR gdb/30639.  The
+     result does not really matter very much.  */
+  SELF_CHECK (ada_decode ("44") == "44");
 }
 
+#endif
+
 /* Table for keeping permanent unique copies of decoded names.  Once
    allocated, names in this table are never released.  While this is a
    storage leak, it should not be significant unless there are massive
    changes in the set of decoded names in successive versions of a 
    symbol table loaded during a single session.  */
-static struct htab *decoded_names_store;
+static gdb::string_set decoded_names_store;
 
 /* Returns the decoded name of GSYMBOL, as for ada_decode, caching it
    in the language-specific part of GSYMBOL, if it has not been
@@ -1376,7 +1627,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;
@@ -1384,72 +1635,21 @@ ada_decode_symbol (const struct general_
       if (obstack != NULL)
 	*resultp = obstack_strdup (obstack, decoded.c_str ());
       else
-        {
+	{
 	  /* Sometimes, we can't find a corresponding objfile, in
 	     which case, we put the result on the heap.  Since we only
 	     decode when needed, we hope this usually does not cause a
 	     significant memory leak (FIXME).  */
-
-          char **slot = (char **) htab_find_slot (decoded_names_store,
-                                                  decoded.c_str (), INSERT);
-
-          if (*slot == NULL)
-            *slot = xstrdup (decoded.c_str ());
-          *resultp = *slot;
-        }
+	  *resultp = decoded_names_store.insert (decoded);
+	}
     }
 
   return *resultp;
 }
 
-static char *
-ada_la_decode (const char *encoded, int options)
-{
-  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 */
+				/* Arrays */
 
 /* Assuming that INDEX_DESC_TYPE is an ___XA structure, a structure
    generated by the GNAT compiler to describe the index type used
@@ -1477,11 +1677,9 @@ ada_sniff_from_mangled_name (const char
 void
 ada_fixup_array_indexes_type (struct type *index_desc_type)
 {
-  int i;
-
   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 +1688,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)),
-                 TYPE_FIELD_NAME (index_desc_type, 0)) == 0)
+  if (index_desc_type->field (0).type ()->name () != NULL
+      && strcmp (index_desc_type->field (0).type ()->name (),
+		 index_desc_type->field (0).name ()) == 0)
     return;
 
   /* Fixup each field of INDEX_DESC_TYPE.  */
-  for (i = 0; i < TYPE_NFIELDS (index_desc_type); i++)
+  for (auto &field : index_desc_type->fields ())
    {
-     const char *name = TYPE_FIELD_NAME (index_desc_type, i);
+     const char *name = field.name ();
      struct type *raw_type = ada_check_typedef (ada_find_any_type (name));
 
      if (raw_type)
-       TYPE_FIELD_TYPE (index_desc_type, i) = raw_type;
+       field.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,13 +1716,13 @@ 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))
-    return ada_check_typedef (TYPE_TARGET_TYPE (type));
+      && (type->code () == TYPE_CODE_PTR
+	  || type->code () == TYPE_CODE_REF))
+    return ada_check_typedef (type->target_type ());
   else
     return type;
 }
@@ -1567,9 +1753,9 @@ thin_descriptor_type (struct type *type)
       struct type *alt_type = ada_find_parallel_type (base_type, "___XVE");
 
       if (alt_type == NULL)
-        return base_type;
+	return base_type;
       else
-        return alt_type;
+	return alt_type;
     }
 }
 
@@ -1578,15 +1764,15 @@ thin_descriptor_type (struct type *type)
 static struct value *
 thin_data_pntr (struct value *val)
 {
-  struct type *type = ada_check_typedef (value_type (val));
+  struct type *type = ada_check_typedef (val->type ());
   struct type *data_type = desc_data_target_type (thin_descriptor_type (type));
 
   data_type = lookup_pointer_type (data_type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
-    return value_cast (data_type, value_copy (val));
+  if (type->code () == TYPE_CODE_PTR)
+    return value_cast (data_type, val->copy ());
   else
-    return value_from_longest (data_type, value_address (val));
+    return value_from_longest (data_type, val->address ());
 }
 
 /* True iff TYPE indicates a "thick" array pointer type.  */
@@ -1595,8 +1781,8 @@ static int
 is_thick_pntr (struct type *type)
 {
   type = desc_base_type (type);
-  return (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT
-          && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
+  return (type != NULL && type->code () == TYPE_CODE_STRUCT
+	  && lookup_struct_elt_type (type, "P_BOUNDS", 1) != NULL);
 }
 
 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
@@ -1615,62 +1801,63 @@ desc_bounds_type (struct type *type)
     {
       type = thin_descriptor_type (type);
       if (type == NULL)
-        return NULL;
+	return NULL;
       r = lookup_struct_elt_type (type, "BOUNDS", 1);
       if (r != NULL)
-        return ada_check_typedef (r);
+	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)
-        return ada_check_typedef (TYPE_TARGET_TYPE (ada_check_typedef (r)));
+	return ada_check_typedef (ada_check_typedef (r)->target_type ());
     }
   return NULL;
 }
 
 /* If ARR is an array descriptor (fat or thin pointer), or pointer to
-   one, a pointer to its bounds data.   Otherwise NULL.  */
+   one, a pointer to its bounds data.  Otherwise, throw an
+   exception.  */
 
 static struct value *
 desc_bounds (struct value *arr)
 {
-  struct type *type = ada_check_typedef (value_type (arr));
+  struct type *type = ada_check_typedef (arr->type ());
 
   if (is_thin_pntr (type))
     {
       struct type *bounds_type =
-        desc_bounds_type (thin_descriptor_type (type));
+	desc_bounds_type (thin_descriptor_type (type));
       LONGEST addr;
 
       if (bounds_type == NULL)
-        error (_("Bad GNAT array descriptor"));
+	error (_("Bad GNAT array descriptor"));
 
       /* 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)
-        addr = value_as_long (arr);
+	 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_CODE_PTR)
+	addr = value_as_long (arr);
       else
-        addr = value_address (arr);
+	addr = arr->address ();
 
       return
-        value_from_longest (lookup_pointer_type (bounds_type),
-                            addr - TYPE_LENGTH (bounds_type));
+	value_from_longest (lookup_pointer_type (bounds_type),
+			    addr - bounds_type->length ());
     }
 
   else if (is_thick_pntr (type))
     {
-      struct value *p_bounds = value_struct_elt (&arr, NULL, "P_BOUNDS", NULL,
+      struct value *p_bounds = value_struct_elt (&arr, {}, "P_BOUNDS", NULL,
 					       _("Bad GNAT array descriptor"));
-      struct type *p_bounds_type = value_type (p_bounds);
+      struct type *p_bounds_type = p_bounds->type ();
 
       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);
+	  struct type *target_type = p_bounds_type->target_type ();
 
-	  if (TYPE_STUB (target_type))
+	  if (target_type->is_stub ())
 	    p_bounds = value_cast (lookup_pointer_type
 				   (ada_check_typedef (target_type)),
 				   p_bounds);
@@ -1681,7 +1868,7 @@ desc_bounds (struct value *arr)
       return p_bounds;
     }
   else
-    return NULL;
+    error (_("Not an array"));
 }
 
 /* If TYPE is the type of an array-descriptor (fat pointer),  the bit
@@ -1690,7 +1877,7 @@ desc_bounds (struct value *arr)
 static int
 fat_pntr_bounds_bitpos (struct type *type)
 {
-  return TYPE_FIELD_BITPOS (desc_base_type (type), 1);
+  return desc_base_type (type)->field (1).loc_bitpos ();
 }
 
 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
@@ -1701,10 +1888,10 @@ fat_pntr_bounds_bitsize (struct type *ty
 {
   type = desc_base_type (type);
 
-  if (TYPE_FIELD_BITSIZE (type, 1) > 0)
-    return TYPE_FIELD_BITSIZE (type, 1);
+  if (type->field (1).bitsize () > 0)
+    return type->field (1).bitsize ();
   else
-    return 8 * TYPE_LENGTH (ada_check_typedef (TYPE_FIELD_TYPE (type, 1)));
+    return 8 * ada_check_typedef (type->field (1).type ())->length ();
 }
 
 /* If TYPE is the type of an array descriptor (fat or thin pointer) or a
@@ -1719,14 +1906,14 @@ 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)
-	return ada_check_typedef (TYPE_TARGET_TYPE (data_type));
+	  && ada_check_typedef (data_type)->code () == TYPE_CODE_PTR)
+	return ada_check_typedef (data_type->target_type ());
     }
 
   return NULL;
@@ -1738,13 +1925,13 @@ desc_data_target_type (struct type *type
 static struct value *
 desc_data (struct value *arr)
 {
-  struct type *type = value_type (arr);
+  struct type *type = arr->type ();
 
   if (is_thin_pntr (type))
     return thin_data_pntr (arr);
   else if (is_thick_pntr (type))
-    return value_struct_elt (&arr, NULL, "P_ARRAY", NULL,
-                             _("Bad GNAT array descriptor"));
+    return value_struct_elt (&arr, {}, "P_ARRAY", NULL,
+			     _("Bad GNAT array descriptor"));
   else
     return NULL;
 }
@@ -1756,7 +1943,7 @@ desc_data (struct value *arr)
 static int
 fat_pntr_data_bitpos (struct type *type)
 {
-  return TYPE_FIELD_BITPOS (desc_base_type (type), 0);
+  return desc_base_type (type)->field (0).loc_bitpos ();
 }
 
 /* If TYPE is the type of an array-descriptor (fat pointer), the bit
@@ -1767,10 +1954,10 @@ fat_pntr_data_bitsize (struct type *type
 {
   type = desc_base_type (type);
 
-  if (TYPE_FIELD_BITSIZE (type, 0) > 0)
-    return TYPE_FIELD_BITSIZE (type, 0);
+  if (type->field (0).bitsize () > 0)
+    return type->field (0).bitsize ();
   else
-    return TARGET_CHAR_BIT * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
+    return TARGET_CHAR_BIT * type->field (0).type ()->length ();
 }
 
 /* If BOUNDS is an array-bounds structure (or pointer to one), return
@@ -1780,8 +1967,11 @@ 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,
-                           _("Bad GNAT array descriptor bounds"));
+  char bound_name[20];
+  xsnprintf (bound_name, sizeof (bound_name), "%cB%d",
+	     which ? 'U' : 'L', i - 1);
+  return value_struct_elt (&bounds, {}, bound_name, NULL,
+			   _("Bad GNAT array descriptor bounds"));
 }
 
 /* If BOUNDS is an array-bounds structure type, return the bit position
@@ -1791,7 +1981,7 @@ desc_one_bound (struct value *bounds, in
 static int
 desc_bound_bitpos (struct type *type, int i, int which)
 {
-  return TYPE_FIELD_BITPOS (desc_base_type (type), 2 * i + which - 2);
+  return desc_base_type (type)->field (2 * i + which - 2).loc_bitpos ();
 }
 
 /* If BOUNDS is an array-bounds structure type, return the bit field size
@@ -1803,10 +1993,10 @@ desc_bound_bitsize (struct type *type, i
 {
   type = desc_base_type (type);
 
-  if (TYPE_FIELD_BITSIZE (type, 2 * i + which - 2) > 0)
-    return TYPE_FIELD_BITSIZE (type, 2 * i + which - 2);
+  if (type->field (2 * i + which - 2).bitsize () > 0)
+    return type->field (2 * i + which - 2).bitsize ();
   else
-    return 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, 2 * i + which - 2));
+    return 8 * type->field (2 * i + which - 2).type ()->length ();
 }
 
 /* If TYPE is the type of an array-bounds structure, the type of its
@@ -1817,8 +2007,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 +2026,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,8 +2040,8 @@ 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
-          || ada_is_array_descriptor_type (type));
+  return (type->code () == TYPE_CODE_ARRAY
+	  || ada_is_array_descriptor_type (type));
 }
 
 /* Non-zero iff TYPE represents any kind of array in Ada, or a pointer
@@ -1856,10 +2050,10 @@ 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))
-    type = TYPE_TARGET_TYPE (type);
+  while (type != NULL
+	 && (type->code () == TYPE_CODE_PTR
+	     || type->code () == TYPE_CODE_REF))
+    type = type->target_type ();
   return ada_is_direct_array_type (type);
 }
 
@@ -1871,10 +2065,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 ())->code ()
+		  == TYPE_CODE_ARRAY)));
 }
 
 /* Non-zero iff TYPE belongs to a GNAT array descriptor.  */
@@ -1888,27 +2082,10 @@ 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);
 }
 
-/* Non-zero iff type is a partially mal-formed GNAT array
-   descriptor.  FIXME: This is to compensate for some problems with
-   debugging output from GNAT.  Re-examine periodically to see if it
-   is still needed.  */
-
-int
-ada_is_bogus_array_descriptor (struct type *type)
-{
-  return
-    type != NULL
-    && TYPE_CODE (type) == 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);
-}
-
-
 /* If ARR has a record type in the form of a standard GNAT array descriptor,
    (fat pointer) returns the type of the array data described---specifically,
    a pointer-to-array type.  If BOUNDS is non-zero, the bounds data are filled
@@ -1920,21 +2097,21 @@ ada_is_bogus_array_descriptor (struct ty
 static struct type *
 ada_type_of_array (struct value *arr, int bounds)
 {
-  if (ada_is_constrained_packed_array_type (value_type (arr)))
-    return decode_constrained_packed_array_type (value_type (arr));
+  if (ada_is_constrained_packed_array_type (arr->type ()))
+    return decode_constrained_packed_array_type (arr->type ());
 
-  if (!ada_is_array_descriptor_type (value_type (arr)))
-    return value_type (arr);
+  if (!ada_is_array_descriptor_type (arr->type ()))
+    return arr->type ();
 
   if (!bounds)
     {
       struct type *array_type =
-	ada_check_typedef (desc_data_target_type (value_type (arr)));
+	ada_check_typedef (desc_data_target_type (arr->type ()));
+
+      if (ada_is_unconstrained_packed_array_type (arr->type ()))
+	array_type->field (0).set_bitsize
+	  (decode_packed_array_bitsize (arr->type ()));
 
-      if (ada_is_unconstrained_packed_array_type (value_type (arr)))
-	TYPE_FIELD_BITSIZE (array_type, 0) =
-	  decode_packed_array_bitsize (value_type (arr));
-      
       return array_type;
     }
   else
@@ -1943,49 +2120,51 @@ ada_type_of_array (struct value *arr, in
       int arity;
       struct value *descriptor;
 
-      elt_type = ada_array_element_type (value_type (arr), -1);
-      arity = ada_array_arity (value_type (arr));
+      elt_type = ada_array_element_type (arr->type (), -1);
+      arity = ada_array_arity (arr->type ());
 
       if (elt_type == NULL || arity == 0)
-        return ada_check_typedef (value_type (arr));
+	return ada_check_typedef (arr->type ());
 
       descriptor = desc_bounds (arr);
       if (value_as_long (descriptor) == 0)
-        return NULL;
+	return NULL;
       while (arity > 0)
-        {
-          struct type *range_type = alloc_type_copy (value_type (arr));
-          struct type *array_type = alloc_type_copy (value_type (arr));
-          struct value *low = desc_one_bound (descriptor, arity, 0);
-          struct value *high = desc_one_bound (descriptor, arity, 1);
-
-          arity -= 1;
-          create_static_range_type (range_type, value_type (low),
-				    longest_to_int (value_as_long (low)),
-				    longest_to_int (value_as_long (high)));
-          elt_type = create_array_type (array_type, elt_type, range_type);
+	{
+	  type_allocator alloc (arr->type ());
+	  struct value *low = desc_one_bound (descriptor, arity, 0);
+	  struct value *high = desc_one_bound (descriptor, arity, 1);
+
+	  arity -= 1;
+	  struct type *range_type
+	    = create_static_range_type (alloc, low->type (),
+					longest_to_int (value_as_long (low)),
+					longest_to_int (value_as_long (high)));
+	  elt_type = create_array_type (alloc, elt_type, range_type);
+	  INIT_GNAT_SPECIFIC (elt_type);
 
-	  if (ada_is_unconstrained_packed_array_type (value_type (arr)))
+	  if (ada_is_unconstrained_packed_array_type (arr->type ()))
 	    {
 	      /* We need to store the element packed bitsize, as well as
-	         recompute the array size, because it was previously
+		 recompute the array size, because it was previously
 		 computed based on the unpacked element size.  */
 	      LONGEST lo = value_as_long (low);
 	      LONGEST hi = value_as_long (high);
 
-	      TYPE_FIELD_BITSIZE (elt_type, 0) =
-		decode_packed_array_bitsize (value_type (arr));
+	      elt_type->field (0).set_bitsize
+		(decode_packed_array_bitsize (arr->type ()));
+
 	      /* If the array has no element, then the size is already
-	         zero, and does not need to be recomputed.  */
+		 zero, and does not need to be recomputed.  */
 	      if (lo < hi)
 		{
 		  int array_bitsize =
-		        (hi - lo + 1) * TYPE_FIELD_BITSIZE (elt_type, 0);
+			(hi - lo + 1) * elt_type->field (0).bitsize ();
 
-		  TYPE_LENGTH (array_type) = (array_bitsize + 7) / 8;
+		  elt_type->set_length ((array_bitsize + 7) / 8);
 		}
 	    }
-        }
+	}
 
       return lookup_pointer_type (elt_type);
     }
@@ -1999,15 +2178,15 @@ ada_type_of_array (struct value *arr, in
 struct value *
 ada_coerce_to_simple_array_ptr (struct value *arr)
 {
-  if (ada_is_array_descriptor_type (value_type (arr)))
+  if (ada_is_array_descriptor_type (arr->type ()))
     {
       struct type *arrType = ada_type_of_array (arr, 1);
 
       if (arrType == NULL)
-        return NULL;
-      return value_cast (arrType, value_copy (desc_data (arr)));
+	return NULL;
+      return value_cast (arrType, desc_data (arr)->copy ());
     }
-  else if (ada_is_constrained_packed_array_type (value_type (arr)))
+  else if (ada_is_constrained_packed_array_type (arr->type ()))
     return decode_constrained_packed_array (arr);
   else
     return arr;
@@ -2020,16 +2199,15 @@ ada_coerce_to_simple_array_ptr (struct v
 struct value *
 ada_coerce_to_simple_array (struct value *arr)
 {
-  if (ada_is_array_descriptor_type (value_type (arr)))
+  if (ada_is_array_descriptor_type (arr->type ()))
     {
       struct value *arrVal = ada_coerce_to_simple_array_ptr (arr);
 
       if (arrVal == NULL)
-        error (_("Bounds unavailable for null array pointer."));
-      ada_ensure_varsize_limit (TYPE_TARGET_TYPE (value_type (arrVal)));
+	error (_("Bounds unavailable for null array pointer."));
       return value_ind (arrVal);
     }
-  else if (ada_is_constrained_packed_array_type (value_type (arr)))
+  else if (ada_is_constrained_packed_array_type (arr->type ()))
     return decode_constrained_packed_array (arr);
   else
     return arr;
@@ -2054,7 +2232,7 @@ ada_coerce_to_simple_array_type (struct
 /* Non-zero iff TYPE represents a standard GNAT packed-array type.  */
 
 static int
-ada_is_packed_array_type  (struct type *type)
+ada_is_gnat_encoded_packed_array_type  (struct type *type)
 {
   if (type == NULL)
     return 0;
@@ -2071,7 +2249,7 @@ ada_is_packed_array_type  (struct type *
 int
 ada_is_constrained_packed_array_type (struct type *type)
 {
-  return ada_is_packed_array_type (type)
+  return ada_is_gnat_encoded_packed_array_type (type)
     && !ada_is_array_descriptor_type (type);
 }
 
@@ -2081,8 +2259,39 @@ ada_is_constrained_packed_array_type (st
 static int
 ada_is_unconstrained_packed_array_type (struct type *type)
 {
-  return ada_is_packed_array_type (type)
-    && ada_is_array_descriptor_type (type);
+  if (!ada_is_array_descriptor_type (type))
+    return 0;
+
+  if (ada_is_gnat_encoded_packed_array_type (type))
+    return 1;
+
+  /* If we saw GNAT encodings, then the above code is sufficient.
+     However, with minimal encodings, we will just have a thick
+     pointer instead.  */
+  if (is_thick_pntr (type))
+    {
+      type = desc_base_type (type);
+      /* The structure's first field is a pointer to an array, so this
+	 fetches the array type.  */
+      type = type->field (0).type ()->target_type ();
+      if (type->code () == TYPE_CODE_TYPEDEF)
+	type = ada_typedef_target_type (type);
+      /* Now we can see if the array elements are packed.  */
+      return type->field (0).bitsize () > 0;
+    }
+
+  return 0;
+}
+
+/* Return true if TYPE is a (Gnat-encoded) constrained packed array
+   type, or if it is an ordinary (non-Gnat-encoded) packed array.  */
+
+static bool
+ada_is_any_packed_array_type (struct type *type)
+{
+  return (ada_is_constrained_packed_array_type (type)
+	  || (type->code () == TYPE_CODE_ARRAY
+	      && type->field (0).bitsize () % 8 != 0));
 }
 
 /* Given that TYPE encodes a packed array type (constrained or unconstrained),
@@ -2098,7 +2307,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));
@@ -2109,7 +2318,15 @@ decode_packed_array_bitsize (struct type
     return 0;
 
   tail = strstr (raw_name, "___XP");
-  gdb_assert (tail != NULL);
+  if (tail == nullptr)
+    {
+      gdb_assert (is_thick_pntr (type));
+      /* The structure's first field is a pointer to an array, so this
+	 fetches the array type.  */
+      type = type->field (0).type ()->target_type ();
+      /* Now we can see if the array elements are packed.  */
+      return type->field (0).bitsize ();
+    }
 
   if (sscanf (tail + sizeof ("___XP") - 1, "%ld", &bits) != 1)
     {
@@ -2148,38 +2365,40 @@ 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);
+  type_allocator alloc (type);
   new_elt_type =
-    constrained_packed_array_type (ada_check_typedef (TYPE_TARGET_TYPE (type)),
+    constrained_packed_array_type (ada_check_typedef (type->target_type ()),
 				   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 = create_array_type (alloc, new_elt_type, index_type);
+  new_type->field (0).set_bitsize (*elt_bits);
+  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;
+    {
+      *elt_bits = 0;
+      new_type->set_length (0);
+    }
   else
     {
       *elt_bits *= (high_bound - low_bound + 1);
-      TYPE_LENGTH (new_type) =
-        (*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
+      new_type->set_length ((*elt_bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT);
     }
 
-  TYPE_FIXED_INSTANCE (new_type) = 1;
+  new_type->set_is_fixed_instance (true);
   return new_type;
 }
 
@@ -2217,7 +2436,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"));
@@ -2228,6 +2447,35 @@ decode_constrained_packed_array_type (st
   return constrained_packed_array_type (shadow_type, &bits);
 }
 
+/* Helper function for decode_constrained_packed_array.  Set the field
+   bitsize on a series of packed arrays.  Returns the number of
+   elements in TYPE.  */
+
+static LONGEST
+recursively_update_array_bitsize (struct type *type)
+{
+  gdb_assert (type->code () == TYPE_CODE_ARRAY);
+
+  LONGEST low, high;
+  if (!get_discrete_bounds (type->index_type (), &low, &high)
+      || low > high)
+    return 0;
+  LONGEST our_len = high - low + 1;
+
+  struct type *elt_type = type->target_type ();
+  if (elt_type->code () == TYPE_CODE_ARRAY)
+    {
+      LONGEST elt_len = recursively_update_array_bitsize (elt_type);
+      LONGEST elt_bitsize = elt_len * elt_type->field (0).bitsize ();
+      type->field (0).set_bitsize (elt_bitsize);
+
+      type->set_length (((our_len * elt_bitsize + HOST_CHAR_BIT - 1)
+			 / HOST_CHAR_BIT));
+    }
+
+  return our_len;
+}
+
 /* Given that ARR is a struct value *indicating a GNAT constrained packed
    array, returns a simple array that denotes that array.  Its type is a
    standard GDB array type except that the BITSIZEs of the array
@@ -2247,34 +2495,46 @@ 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 (arr->type ())->code () == TYPE_CODE_PTR)
     arr = value_ind (arr);
 
-  type = decode_constrained_packed_array_type (value_type (arr));
+  type = decode_constrained_packed_array_type (arr->type ());
   if (type == NULL)
     {
       error (_("can't unpack array"));
       return NULL;
     }
 
-  if (type_byte_order (value_type (arr)) == BFD_ENDIAN_BIG
-      && ada_is_modular_type (value_type (arr)))
+  /* Decoding the packed array type could not correctly set the field
+     bitsizes for any dimension except the innermost, because the
+     bounds may be variable and were not passed to that function.  So,
+     we further resolve the array bounds here and then update the
+     sizes.  */
+  const gdb_byte *valaddr = arr->contents_for_printing ().data ();
+  CORE_ADDR address = arr->address ();
+  gdb::array_view<const gdb_byte> view
+    = gdb::make_array_view (valaddr, type->length ());
+  type = resolve_dynamic_type (type, view, address);
+  recursively_update_array_bitsize (type);
+
+  if (type_byte_order (arr->type ()) == BFD_ENDIAN_BIG
+      && ada_is_modular_type (arr->type ()))
     {
        /* This is a (right-justified) modular type representing a packed
- 	 array with no wrapper.  In order to interpret the value through
- 	 the (left-justified) packed array type we just built, we must
- 	 first left-justify it.  */
+	  array with no wrapper.  In order to interpret the value through
+	  the (left-justified) packed array type we just built, we must
+	  first left-justify it.  */
       int bit_size, bit_pos;
       ULONGEST mod;
 
-      mod = ada_modulus (value_type (arr)) - 1;
+      mod = ada_modulus (arr->type ()) - 1;
       bit_size = 0;
       while (mod > 0)
 	{
 	  bit_size += 1;
 	  mod >>= 1;
 	}
-      bit_pos = HOST_CHAR_BIT * TYPE_LENGTH (value_type (arr)) - bit_size;
+      bit_pos = HOST_CHAR_BIT * arr->type ()->length () - bit_size;
       arr = ada_value_primitive_packed_val (arr, NULL,
 					    bit_pos / HOST_CHAR_BIT,
 					    bit_pos % HOST_CHAR_BIT,
@@ -2300,40 +2560,40 @@ value_subscript_packed (struct value *ar
 
   bits = 0;
   elt_total_bit_offset = 0;
-  elt_type = ada_check_typedef (value_type (arr));
+  elt_type = ada_check_typedef (arr->type ());
   for (i = 0; i < arity; i += 1)
     {
-      if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY
-          || TYPE_FIELD_BITSIZE (elt_type, 0) == 0)
-        error
-          (_("attempt to do packed indexing of "
+      if (elt_type->code () != TYPE_CODE_ARRAY
+	  || elt_type->field (0).bitsize () == 0)
+	error
+	  (_("attempt to do packed indexing of "
 	     "something other than a packed array"));
       else
-        {
-          struct type *range_type = TYPE_INDEX_TYPE (elt_type);
-          LONGEST lowerbound, upperbound;
-          LONGEST idx;
-
-          if (get_discrete_bounds (range_type, &lowerbound, &upperbound) < 0)
-            {
-              lim_warning (_("don't know bounds of array"));
-              lowerbound = upperbound = 0;
-            }
-
-          idx = pos_atr (ind[i]);
-          if (idx < lowerbound || idx > upperbound)
-            lim_warning (_("packed array index %ld out of bounds"),
+	{
+	  struct type *range_type = elt_type->index_type ();
+	  LONGEST lowerbound, upperbound;
+	  LONGEST idx;
+
+	  if (!get_discrete_bounds (range_type, &lowerbound, &upperbound))
+	    {
+	      lim_warning (_("don't know bounds of array"));
+	      lowerbound = upperbound = 0;
+	    }
+
+	  idx = pos_atr (ind[i]);
+	  if (idx < lowerbound || idx > upperbound)
+	    lim_warning (_("packed array index %ld out of bounds"),
 			 (long) idx);
-          bits = TYPE_FIELD_BITSIZE (elt_type, 0);
-          elt_total_bit_offset += (idx - lowerbound) * bits;
-          elt_type = ada_check_typedef (TYPE_TARGET_TYPE (elt_type));
-        }
+	  bits = elt_type->field (0).bitsize ();
+	  elt_total_bit_offset += (idx - lowerbound) * bits;
+	  elt_type = ada_check_typedef (elt_type->target_type ());
+	}
     }
   elt_off = elt_total_bit_offset / HOST_CHAR_BIT;
   bit_off = elt_total_bit_offset % HOST_CHAR_BIT;
 
   v = ada_value_primitive_packed_val (arr, NULL, elt_off, bit_off,
-                                      bits, elt_type);
+				      bits, elt_type);
   return v;
 }
 
@@ -2342,14 +2602,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);
+      return !type->is_unsigned ();
     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;
     }
 }
 
@@ -2378,7 +2638,7 @@ ada_unpack_from_contents (const gdb_byte
   int src_bytes_left;           /* Number of source bytes left to process.  */
   int srcBitsLeft;              /* Number of source bits left to move */
   int unusedLS;                 /* Number of bits in next significant
-                                   byte of source that are unused */
+				   byte of source that are unused */
 
   int unpacked_idx;             /* Index into the unpacked buffer */
   int unpacked_bytes_left;      /* Number of bytes left to set in unpacked.  */
@@ -2407,26 +2667,26 @@ ada_unpack_from_contents (const gdb_byte
       src_idx = src_len - 1;
       if (is_signed_type
 	  && ((src[0] << bit_offset) & (1 << (HOST_CHAR_BIT - 1))))
-        sign = ~0;
+	sign = ~0;
 
       unusedLS =
-        (HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
-        % HOST_CHAR_BIT;
+	(HOST_CHAR_BIT - (bit_size + bit_offset) % HOST_CHAR_BIT)
+	% HOST_CHAR_BIT;
 
       if (is_scalar)
 	{
-          accumSize = 0;
-          unpacked_idx = unpacked_len - 1;
+	  accumSize = 0;
+	  unpacked_idx = unpacked_len - 1;
 	}
       else
 	{
-          /* Non-scalar values must be aligned at a byte boundary...  */
-          accumSize =
-            (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
-          /* ... And are placed at the beginning (most-significant) bytes
-             of the target.  */
-          unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
-          unpacked_bytes_left = unpacked_idx + 1;
+	  /* Non-scalar values must be aligned at a byte boundary...  */
+	  accumSize =
+	    (HOST_CHAR_BIT - bit_size % HOST_CHAR_BIT) % HOST_CHAR_BIT;
+	  /* ... And are placed at the beginning (most-significant) bytes
+	     of the target.  */
+	  unpacked_idx = (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT - 1;
+	  unpacked_bytes_left = unpacked_idx + 1;
 	}
     }
   else
@@ -2438,31 +2698,31 @@ ada_unpack_from_contents (const gdb_byte
       accumSize = 0;
 
       if (is_signed_type && (src[src_len - 1] & (1 << sign_bit_offset)))
-        sign = ~0;
+	sign = ~0;
     }
 
   accum = 0;
   while (src_bytes_left > 0)
     {
       /* Mask for removing bits of the next source byte that are not
-         part of the value.  */
+	 part of the value.  */
       unsigned int unusedMSMask =
-        (1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
-        1;
+	(1 << (srcBitsLeft >= HOST_CHAR_BIT ? HOST_CHAR_BIT : srcBitsLeft)) -
+	1;
       /* Sign-extend bits for this byte.  */
       unsigned int signMask = sign & ~unusedMSMask;
 
       accum |=
-        (((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
+	(((src[src_idx] >> unusedLS) & unusedMSMask) | signMask) << accumSize;
       accumSize += HOST_CHAR_BIT - unusedLS;
       if (accumSize >= HOST_CHAR_BIT)
-        {
-          unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
-          accumSize -= HOST_CHAR_BIT;
-          accum >>= HOST_CHAR_BIT;
-          unpacked_bytes_left -= 1;
-          unpacked_idx += delta;
-        }
+	{
+	  unpacked[unpacked_idx] = accum & ~(~0UL << HOST_CHAR_BIT);
+	  accumSize -= HOST_CHAR_BIT;
+	  accum >>= HOST_CHAR_BIT;
+	  unpacked_bytes_left -= 1;
+	  unpacked_idx += delta;
+	}
       srcBitsLeft -= HOST_CHAR_BIT - unusedLS;
       unusedLS = 0;
       src_bytes_left -= 1;
@@ -2493,7 +2753,7 @@ ada_unpack_from_contents (const gdb_byte
 struct value *
 ada_value_primitive_packed_val (struct value *obj, const gdb_byte *valaddr,
 				long offset, int bit_offset, int bit_size,
-                                struct type *type)
+				struct type *type)
 {
   struct value *v;
   const gdb_byte *src;                /* First byte containing data to unpack */
@@ -2507,7 +2767,7 @@ ada_value_primitive_packed_val (struct v
   if (obj == NULL)
     src = valaddr + offset;
   else
-    src = value_contents (obj) + offset;
+    src = obj->contents ().data () + offset;
 
   if (is_dynamic_type (type))
     {
@@ -2522,11 +2782,11 @@ ada_value_primitive_packed_val (struct v
       staging.resize (staging_len);
 
       ada_unpack_from_contents (src, bit_offset, bit_size,
-			        staging.data (), staging.size (),
+				staging.data (), staging.size (),
 				is_big_endian, has_negatives (type),
 				is_scalar);
-      type = resolve_dynamic_type (type, staging.data (), 0);
-      if (TYPE_LENGTH (type) < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
+      type = resolve_dynamic_type (type, staging, 0);
+      if (type->length () < (bit_size + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT)
 	{
 	  /* This happens when the length of the object is dynamic,
 	     and is actually smaller than the space reserved for it.
@@ -2535,60 +2795,60 @@ ada_value_primitive_packed_val (struct v
 	     normally equal to the maximum size of its element.
 	     But, in reality, each element only actually spans a portion
 	     of that stride.  */
-	  bit_size = TYPE_LENGTH (type) * HOST_CHAR_BIT;
+	  bit_size = type->length () * HOST_CHAR_BIT;
 	}
     }
 
   if (obj == NULL)
     {
-      v = allocate_value (type);
+      v = value::allocate (type);
       src = valaddr + offset;
     }
-  else if (VALUE_LVAL (obj) == lval_memory && value_lazy (obj))
+  else if (obj->lval () == lval_memory && obj->lazy ())
     {
       int src_len = (bit_size + bit_offset + HOST_CHAR_BIT - 1) / 8;
       gdb_byte *buf;
 
-      v = value_at (type, value_address (obj) + offset);
+      v = value_at (type, obj->address () + offset);
       buf = (gdb_byte *) alloca (src_len);
-      read_memory (value_address (v), buf, src_len);
+      read_memory (v->address (), buf, src_len);
       src = buf;
     }
   else
     {
-      v = allocate_value (type);
-      src = value_contents (obj) + offset;
+      v = value::allocate (type);
+      src = obj->contents ().data () + offset;
     }
 
   if (obj != NULL)
     {
       long new_offset = offset;
 
-      set_value_component_location (v, obj);
-      set_value_bitpos (v, bit_offset + value_bitpos (obj));
-      set_value_bitsize (v, bit_size);
-      if (value_bitpos (v) >= HOST_CHAR_BIT)
-        {
+      v->set_component_location (obj);
+      v->set_bitpos (bit_offset + obj->bitpos ());
+      v->set_bitsize (bit_size);
+      if (v->bitpos () >= HOST_CHAR_BIT)
+	{
 	  ++new_offset;
-          set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT);
-        }
-      set_value_offset (v, new_offset);
+	  v->set_bitpos (v->bitpos () - HOST_CHAR_BIT);
+	}
+      v->set_offset (new_offset);
 
       /* Also set the parent value.  This is needed when trying to
 	 assign a new value (in inferior memory).  */
-      set_value_parent (v, obj);
+      v->set_parent (obj);
     }
   else
-    set_value_bitsize (v, bit_size);
-  unpacked = value_contents_writeable (v);
+    v->set_bitsize (bit_size);
+  unpacked = v->contents_writeable ().data ();
 
   if (bit_size == 0)
     {
-      memset (unpacked, 0, TYPE_LENGTH (type));
+      memset (unpacked, 0, type->length ());
       return v;
     }
 
-  if (staging.size () == TYPE_LENGTH (type))
+  if (staging.size () == type->length ())
     {
       /* Small short-cut: If we've unpacked the data into a buffer
 	 of the same size as TYPE's length, then we can reuse that,
@@ -2597,7 +2857,7 @@ ada_value_primitive_packed_val (struct v
     }
   else
     ada_unpack_from_contents (src, bit_offset, bit_size,
-			      unpacked, TYPE_LENGTH (type),
+			      unpacked, type->length (),
 			      is_big_endian, has_negatives (type), is_scalar);
 
   return v;
@@ -2611,53 +2871,54 @@ ada_value_primitive_packed_val (struct v
 static struct value *
 ada_value_assign (struct value *toval, struct value *fromval)
 {
-  struct type *type = value_type (toval);
-  int bits = value_bitsize (toval);
+  struct type *type = toval->type ();
+  int bits = toval->bitsize ();
 
   toval = ada_coerce_ref (toval);
   fromval = ada_coerce_ref (fromval);
 
-  if (ada_is_direct_array_type (value_type (toval)))
+  if (ada_is_direct_array_type (toval->type ()))
     toval = ada_coerce_to_simple_array (toval);
-  if (ada_is_direct_array_type (value_type (fromval)))
+  if (ada_is_direct_array_type (fromval->type ()))
     fromval = ada_coerce_to_simple_array (fromval);
 
-  if (!deprecated_value_modifiable (toval))
+  if (!toval->deprecated_modifiable ())
     error (_("Left operand of assignment is not a modifiable lvalue."));
 
-  if (VALUE_LVAL (toval) == lval_memory
+  if (toval->lval () == 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)
+      int len = (toval->bitpos ()
 		 + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT;
       int from_size;
       gdb_byte *buffer = (gdb_byte *) alloca (len);
       struct value *val;
-      CORE_ADDR to_addr = value_address (toval);
+      CORE_ADDR to_addr = toval->address ();
 
-      if (TYPE_CODE (type) == TYPE_CODE_FLT)
-        fromval = value_cast (type, fromval);
+      if (type->code () == TYPE_CODE_FLT)
+	fromval = value_cast (type, fromval);
 
       read_memory (to_addr, buffer, len);
-      from_size = value_bitsize (fromval);
+      from_size = fromval->bitsize ();
       if (from_size == 0)
-	from_size = TYPE_LENGTH (value_type (fromval)) * TARGET_CHAR_BIT;
+	from_size = fromval->type ()->length () * TARGET_CHAR_BIT;
 
       const int is_big_endian = type_byte_order (type) == BFD_ENDIAN_BIG;
       ULONGEST from_offset = 0;
-      if (is_big_endian && is_scalar_type (value_type (fromval)))
+      if (is_big_endian && is_scalar_type (fromval->type ()))
 	from_offset = from_size - bits;
-      copy_bitwise (buffer, value_bitpos (toval),
-		    value_contents (fromval), from_offset,
+      copy_bitwise (buffer, toval->bitpos (),
+		    fromval->contents ().data (), from_offset,
 		    bits, is_big_endian);
       write_memory_with_notification (to_addr, buffer, len);
 
-      val = value_copy (toval);
-      memcpy (value_contents_raw (val), value_contents (fromval),
-              TYPE_LENGTH (type));
-      deprecated_set_value_type (val, type);
+      val = toval->copy ();
+      memcpy (val->contents_raw ().data (),
+	      fromval->contents ().data (),
+	      type->length ());
+      val->deprecated_set_type (type);
 
       return val;
     }
@@ -2682,35 +2943,37 @@ value_assign_to_component (struct value
 			   struct value *val)
 {
   LONGEST offset_in_container =
-    (LONGEST)  (value_address (component) - value_address (container));
+    (LONGEST)  (component->address () - container->address ());
   int bit_offset_in_container =
-    value_bitpos (component) - value_bitpos (container);
+    component->bitpos () - container->bitpos ();
   int bits;
 
-  val = value_cast (value_type (component), val);
+  val = value_cast (component->type (), val);
 
-  if (value_bitsize (component) == 0)
-    bits = TARGET_CHAR_BIT * TYPE_LENGTH (value_type (component));
+  if (component->bitsize () == 0)
+    bits = TARGET_CHAR_BIT * component->type ()->length ();
   else
-    bits = value_bitsize (component);
+    bits = component->bitsize ();
 
-  if (type_byte_order (value_type (container)) == BFD_ENDIAN_BIG)
+  if (type_byte_order (container->type ()) == BFD_ENDIAN_BIG)
     {
       int src_offset;
 
-      if (is_scalar_type (check_typedef (value_type (component))))
-        src_offset
-	  = TYPE_LENGTH (value_type (component)) * TARGET_CHAR_BIT - bits;
+      if (is_scalar_type (check_typedef (component->type ())))
+	src_offset
+	  = component->type ()->length () * TARGET_CHAR_BIT - bits;
       else
 	src_offset = 0;
-      copy_bitwise (value_contents_writeable (container) + offset_in_container,
-		    value_bitpos (container) + bit_offset_in_container,
-		    value_contents (val), src_offset, bits, 1);
+      copy_bitwise ((container->contents_writeable ().data ()
+		     + offset_in_container),
+		    container->bitpos () + bit_offset_in_container,
+		    val->contents ().data (), src_offset, bits, 1);
     }
   else
-    copy_bitwise (value_contents_writeable (container) + offset_in_container,
-		  value_bitpos (container) + bit_offset_in_container,
-		  value_contents (val), 0, bits, 0);
+    copy_bitwise ((container->contents_writeable ().data ()
+		   + offset_in_container),
+		  container->bitpos () + bit_offset_in_container,
+		  val->contents ().data (), 0, bits, 0);
 }
 
 /* Determine if TYPE is an access to an unconstrained array.  */
@@ -2718,7 +2981,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)));
 }
 
@@ -2735,22 +2998,22 @@ 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
-      && TYPE_FIELD_BITSIZE (elt_type, 0) > 0)
+  elt_type = ada_check_typedef (elt->type ());
+  if (elt_type->code () == TYPE_CODE_ARRAY
+      && elt_type->field (0).bitsize () > 0)
     return value_subscript_packed (elt, arity, ind);
 
   for (k = 0; k < arity; k += 1)
     {
-      struct type *saved_elt_type = TYPE_TARGET_TYPE (elt_type);
+      struct type *saved_elt_type = elt_type->target_type ();
 
-      if (TYPE_CODE (elt_type) != TYPE_CODE_ARRAY)
-        error (_("too many subscripts (%d expected)"), k);
+      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)
+	  && elt->type ()->code () != TYPE_CODE_TYPEDEF)
 	{
 	  /* The element is a typedef to an unconstrained array,
 	     except that the value_subscript call stripped the
@@ -2764,10 +3027,10 @@ ada_value_subscript (struct value *arr,
 	     than as an access.  Another symptom of the same issue
 	     would be that an expression trying to dereference the
 	     element would also be improperly rejected.  */
-	  deprecated_set_value_type (elt, saved_elt_type);
+	  elt->deprecated_set_type (saved_elt_type);
 	}
 
-      elt_type = ada_check_typedef (value_type (elt));
+      elt_type = ada_check_typedef (elt->type ());
     }
 
   return elt;
@@ -2779,7 +3042,7 @@ ada_value_subscript (struct value *arr,
 
    Note: Unlike what one would expect, this function is used instead of
    ada_value_subscript for basically all non-packed array types.  The reason
-   for this is that a side effect of doing our own pointer arithmetics instead
+   for this is that a side effect of doing our own pointer arithmetic instead
    of relying on value_subscript is that there is no implicit typedef peeling.
    This is important for arrays of array accesses, where it allows us to
    preserve the fact that the array's element is an array access, where the
@@ -2791,25 +3054,23 @@ ada_value_ptr_subscript (struct value *a
   int k;
   struct value *array_ind = ada_value_ind (arr);
   struct type *type
-    = check_typedef (value_enclosing_type (array_ind));
+    = check_typedef (array_ind->enclosing_type ());
 
-  if (TYPE_CODE (type) == TYPE_CODE_ARRAY
-      && TYPE_FIELD_BITSIZE (type, 0) > 0)
+  if (type->code () == TYPE_CODE_ARRAY
+      && type->field (0).bitsize () > 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)
-        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));
-      type = TYPE_TARGET_TYPE (type);
+      if (type->code () != TYPE_CODE_ARRAY)
+	error (_("too many subscripts (%d expected)"), k);
+      arr = value_cast (lookup_pointer_type (type->target_type ()),
+			arr->copy ());
+      get_discrete_bounds (type->index_type (), &lwb, &upb);
+      arr = value_ptradd (arr, pos_atr (ind[k]) - lwb);
+      type = type->target_type ();
     }
 
   return value_ind (arr);
@@ -2821,31 +3082,36 @@ ada_value_ptr_subscript (struct value *a
    this array is LOW, as per Ada rules.  */
 static struct value *
 ada_value_slice_from_ptr (struct value *array_ptr, struct type *type,
-                          int low, int high)
+			  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 = type0->index_type ()->target_type ();
+  type_allocator alloc (base_index_type);
   struct type *index_type
-    = create_static_range_type (NULL, base_index_type, low, high);
+    = create_static_range_type (alloc, 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),
-			       TYPE_FIELD_BITSIZE (type0, 0));
-  int base_low =  ada_discrete_type_low_bound (TYPE_INDEX_TYPE (type0));
-  LONGEST base_low_pos, low_pos;
+			      (alloc, type0->target_type (), index_type,
+			       type0->dyn_prop (DYN_PROP_BYTE_STRIDE),
+			       type0->field (0).bitsize ());
+  int base_low =  ada_discrete_type_low_bound (type0->index_type ());
+  std::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;
       base_low_pos = base_low;
     }
 
-  base = value_as_address (array_ptr)
-    + ((low_pos - base_low_pos)
-       * TYPE_LENGTH (TYPE_TARGET_TYPE (type0)));
+  ULONGEST stride = slice_type->field (0).bitsize () / 8;
+  if (stride == 0)
+    stride = type0->target_type ()->length ();
+
+  base = value_as_address (array_ptr) + (*low_pos - *base_low_pos) * stride;
   return value_at_lazy (slice_type, base);
 }
 
@@ -2853,18 +3119,22 @@ ada_value_slice_from_ptr (struct value *
 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 *type = ada_check_typedef (array->type ());
+  struct type *base_index_type = type->index_type ()->target_type ();
+  type_allocator alloc (type->index_type ());
   struct type *index_type
-    = create_static_range_type (NULL, TYPE_INDEX_TYPE (type), low, high);
+    = create_static_range_type (alloc, 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_FIELD_BITSIZE (type, 0));
-  LONGEST low_pos, high_pos;
+			      (alloc, type->target_type (), index_type,
+			       type->dyn_prop (DYN_PROP_BYTE_STRIDE),
+			       type->field (0).bitsize ());
+  std::optional<LONGEST> low_pos, high_pos;
+
+
+  low_pos = discrete_position (base_index_type, low);
+  high_pos = discrete_position (base_index_type, high);
 
-  if (!discrete_position (base_index_type, low, &low_pos)
-      || !discrete_position (base_index_type, high, &high_pos))
+  if (!low_pos.has_value () || !high_pos.has_value ())
     {
       warning (_("unable to get positions in slice, use bounds instead"));
       low_pos = low;
@@ -2872,7 +3142,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,13 +3161,13 @@ 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));
+	arity += 1;
+	type = ada_check_typedef (type->target_type ());
       }
 
   return arity;
@@ -2913,7 +3183,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;
@@ -2922,38 +3192,40 @@ ada_array_element_type (struct type *typ
 
       k = ada_array_arity (type);
       if (k == 0)
-        return NULL;
+	return NULL;
 
       /* Initially p_array_type = elt_type(*)[]...(k times)...[].  */
       if (nindices >= 0 && k > nindices)
-        k = nindices;
+	k = nindices;
       while (k > 0 && p_array_type != NULL)
-        {
-          p_array_type = ada_check_typedef (TYPE_TARGET_TYPE (p_array_type));
-          k -= 1;
-        }
+	{
+	  p_array_type = ada_check_typedef (p_array_type->target_type ());
+	  k -= 1;
+	}
       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)
-        {
-          type = TYPE_TARGET_TYPE (type);
-          nindices -= 1;
-        }
+      while (nindices != 0 && type->code () == TYPE_CODE_ARRAY)
+	{
+	  type = type->target_type ();
+	  /* A multi-dimensional array is represented using a sequence
+	     of array types.  If one of these types has a name, then
+	     it is not another dimension of the outer array, but
+	     rather the element type of the outermost array.  */
+	  if (type->name () != nullptr)
+	    break;
+	  nindices -= 1;
+	}
       return type;
     }
 
   return NULL;
 }
 
-/* The type of nth index in arrays of given type (n numbering from 1).
-   Does not examine memory.  Throws an error if N is invalid or TYPE
-   is not an array type.  NAME is the name of the Ada attribute being
-   evaluated ('range, 'first, 'last, or 'length); it is used in building
-   the error message.  */
+/* See ada-lang.h.  */
 
-static struct type *
+struct type *
 ada_index_type (struct type *type, int n, const char *name)
 {
   struct type *result_type;
@@ -2968,13 +3240,16 @@ ada_index_type (struct type *type, int n
       int i;
 
       for (i = 1; i < n; i += 1)
-        type = TYPE_TARGET_TYPE (type);
-      result_type = TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (type));
+	{
+	  type = ada_check_typedef (type);
+	  type = type->target_type ();
+	}
+      result_type = ada_check_typedef (type)->index_type ()->target_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)
-        result_type = NULL;
+	 has a target type of TYPE_CODE_UNDEF.  We compensate here, but
+	 perhaps stabsread.c would make more sense.  */
+      if (result_type && result_type->code () == TYPE_CODE_UNDEF)
+	result_type = NULL;
     }
   else
     {
@@ -3004,14 +3279,14 @@ ada_array_bound_from_type (struct type *
     arr_type = decode_constrained_packed_array_type (arr_type);
 
   if (arr_type == NULL || !ada_is_simple_array_type (arr_type))
-    return (LONGEST) - which;
+    return - which;
 
-  if (TYPE_CODE (arr_type) == TYPE_CODE_PTR)
-    type = TYPE_TARGET_TYPE (arr_type);
+  if (arr_type->code () == TYPE_CODE_PTR)
+    type = arr_type->target_type ();
   else
     type = arr_type;
 
-  if (TYPE_FIXED_INSTANCE (type))
+  if (type->is_fixed_instance ())
     {
       /* The array has already been fixed, so we do not need to
 	 check the parallel ___XA type again.  That encoding has
@@ -3025,22 +3300,21 @@ 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
     {
       struct type *elt_type = check_typedef (type);
 
       for (i = 1; i < n; i++)
-	elt_type = check_typedef (TYPE_TARGET_TYPE (elt_type));
+	elt_type = check_typedef (elt_type->target_type ());
 
-      index_type = TYPE_INDEX_TYPE (elt_type);
+      index_type = elt_type->index_type ();
     }
 
-  return
-    (LONGEST) (which == 0
-               ? ada_discrete_type_low_bound (index_type)
-               : ada_discrete_type_high_bound (index_type));
+  return (which == 0
+	  ? ada_discrete_type_low_bound (index_type)
+	  : ada_discrete_type_high_bound (index_type));
 }
 
 /* Given that arr is an array value, returns the lower bound of the
@@ -3053,9 +3327,9 @@ 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 (arr->type ())->code () == TYPE_CODE_PTR)
     arr = value_ind (arr);
-  arr_type = value_enclosing_type (arr);
+  arr_type = arr->enclosing_type ();
 
   if (ada_is_constrained_packed_array_type (arr_type))
     return ada_array_bound (decode_constrained_packed_array (arr), n, which);
@@ -3077,9 +3351,9 @@ 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 (arr->type ())->code () == TYPE_CODE_PTR)
     arr = value_ind (arr);
-  arr_type = value_enclosing_type (arr);
+  arr_type = arr->enclosing_type ();
 
   if (ada_is_constrained_packed_array_type (arr_type))
     return ada_array_length (decode_constrained_packed_array (arr), n);
@@ -3100,8 +3374,8 @@ ada_array_length (struct value *arr, int
   if (index_type != NULL)
     {
       struct type *base_type;
-      if (TYPE_CODE (index_type) == TYPE_CODE_RANGE)
-	base_type = TYPE_TARGET_TYPE (index_type);
+      if (index_type->code () == TYPE_CODE_RANGE)
+	base_type = index_type->target_type ();
       else
 	base_type = index_type;
 
@@ -3119,17 +3393,18 @@ static struct value *
 empty_array (struct type *arr_type, int low, int high)
 {
   struct type *arr_type0 = ada_check_typedef (arr_type);
+  type_allocator alloc (arr_type0->index_type ()->target_type ());
   struct type *index_type
     = create_static_range_type
-        (NULL, TYPE_TARGET_TYPE (TYPE_INDEX_TYPE (arr_type0)), low,
+	(alloc, arr_type0->index_type ()->target_type (), low,
 	 high < low ? low - 1 : high);
   struct type *elt_type = ada_array_element_type (arr_type0, 1);
 
-  return allocate_value (create_array_type (NULL, elt_type, index_type));
+  return value::allocate (create_array_type (alloc, elt_type, index_type));
 }
 
 
-                                /* Name resolution */
+				/* Name resolution */
 
 /* The "decoded" name for the user-definable Ada operator corresponding
    to OP.  */
@@ -3142,72 +3417,50 @@ ada_decoded_op_name (enum exp_opcode op)
   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
     {
       if (ada_opname_table[i].op == op)
-        return ada_opname_table[i].decoded;
+	return ada_opname_table[i].decoded;
     }
   error (_("Could not find operator name for opcode"));
 }
 
-/* Returns true (non-zero) iff decoded name N0 should appear before N1
-   in a listing of choices during disambiguation (see sort_choices, below).
-   The idea is that overloadings of a subprogram name from the
-   same package should sort in their source order.  We settle for ordering
-   such symbols by their trailing number (__N  or $N).  */
-
-static int
-encoded_ordered_before (const char *N0, const char *N1)
-{
-  if (N1 == NULL)
-    return 0;
-  else if (N0 == NULL)
-    return 1;
-  else
-    {
-      int k0, k1;
-
-      for (k0 = strlen (N0) - 1; k0 > 0 && isdigit (N0[k0]); k0 -= 1)
-        ;
-      for (k1 = strlen (N1) - 1; k1 > 0 && isdigit (N1[k1]); k1 -= 1)
-        ;
-      if ((N0[k0] == '_' || N0[k0] == '$') && N0[k0 + 1] != '\000'
-          && (N1[k1] == '_' || N1[k1] == '$') && N1[k1 + 1] != '\000')
-        {
-          int n0, n1;
-
-          n0 = k0;
-          while (N0[n0] == '_' && n0 > 0 && N0[n0 - 1] == '_')
-            n0 -= 1;
-          n1 = k1;
-          while (N1[n1] == '_' && n1 > 0 && N1[n1 - 1] == '_')
-            n1 -= 1;
-          if (n0 == n1 && strncmp (N0, N1, n0) == 0)
-            return (atoi (N0 + k0 + 1) < atoi (N1 + k1 + 1));
-        }
-      return (strcmp (N0, N1) < 0);
-    }
-}
-
-/* Sort SYMS[0..NSYMS-1] to put the choices in a canonical order by the
-   encoded names.  */
+/* Sort SYMS to put the choices in a canonical order by the encoded
+   names.  */
 
 static void
-sort_choices (struct block_symbol syms[], int nsyms)
+sort_choices (std::vector<struct block_symbol> &syms)
 {
-  int i;
-
-  for (i = 1; i < nsyms; i += 1)
-    {
-      struct block_symbol sym = syms[i];
-      int j;
-
-      for (j = i - 1; j >= 0; j -= 1)
-        {
-          if (encoded_ordered_before (syms[j].symbol->linkage_name (),
-                                      sym.symbol->linkage_name ()))
-            break;
-          syms[j + 1] = syms[j];
-        }
-      syms[j + 1] = sym;
-    }
+  std::sort (syms.begin (), syms.end (),
+	     [] (const block_symbol &a, const block_symbol &b)
+	     {
+	       if (!a.symbol->is_objfile_owned ())
+		 return true;
+	       if (!b.symbol->is_objfile_owned ())
+		 return true;
+
+	       const char *fna = a.symbol->symtab ()->filename;
+	       const char *fnb = b.symbol->symtab ()->filename;
+
+	       /* First sort by basename.  This is done because,
+		  depending on how GNAT was invoked, different sources
+		  might have relative or absolute paths, but we'd like
+		  similar ones to appear together.  */
+	       int cmp = strcmp (lbasename (fna), lbasename (fnb));
+	       if (cmp != 0)
+		 return cmp < 0;
+
+	       /* The basenames are the same, so group identical paths
+		  together.  */
+	       cmp = strcmp (fna, fnb);
+	       if (cmp != 0)
+		 return cmp < 0;
+
+	       if (a.symbol->line () < b.symbol->line ())
+		 return true;
+	       if (a.symbol->line () > b.symbol->line ())
+		 return false;
+
+	       return strcmp (a.symbol->natural_name (),
+			      b.symbol->natural_name ()) < 0;
+	     });
 }
 
 /* Whether GDB should display formals and return types for functions in the
@@ -3223,33 +3476,33 @@ static void
 ada_print_symbol_signature (struct ui_file *stream, struct symbol *sym,
 			    const struct type_print_options *flags)
 {
-  struct type *type = SYMBOL_TYPE (sym);
+  struct type *type = sym->type ();
 
-  fprintf_filtered (stream, "%s", sym->print_name ());
+  gdb_printf (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)
+      gdb_printf (stream, " (");
+      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,
+	    gdb_printf (stream, "; ");
+	  ada_print_type (type->field (i).type (), NULL, stream, -1, 0,
 			  flags);
 	}
-      fprintf_filtered (stream, ")");
+      gdb_printf (stream, ")");
     }
-  if (TYPE_TARGET_TYPE (type) != NULL
-      && TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+  if (type->target_type () != NULL
+      && type->target_type ()->code () != TYPE_CODE_VOID)
     {
-      fprintf_filtered (stream, " return ");
-      ada_print_type (TYPE_TARGET_TYPE (type), NULL, stream, -1, 0, flags);
+      gdb_printf (stream, " return ");
+      ada_print_type (type->target_type (), NULL, stream, -1, 0, flags);
     }
 }
 
@@ -3271,7 +3524,7 @@ ada_print_symbol_signature (struct ui_fi
 
 static int
 get_selections (int *choices, int n_choices, int max_results,
-                int is_all_choice, const char *annotation_suffix)
+		int is_all_choice, const char *annotation_suffix)
 {
   const char *args;
   const char *prompt;
@@ -3282,7 +3535,8 @@ get_selections (int *choices, int n_choi
   if (prompt == NULL)
     prompt = "> ";
 
-  args = command_line_input (prompt, annotation_suffix);
+  std::string buffer;
+  args = command_line_input (buffer, prompt, annotation_suffix);
 
   if (args == NULL)
     error_no_arg (_("one or more choice numbers"));
@@ -3298,41 +3552,41 @@ get_selections (int *choices, int n_choi
 
       args = skip_spaces (args);
       if (*args == '\0' && n_chosen == 0)
-        error_no_arg (_("one or more choice numbers"));
+	error_no_arg (_("one or more choice numbers"));
       else if (*args == '\0')
-        break;
+	break;
 
       choice = strtol (args, &args2, 10);
       if (args == args2 || choice < 0
-          || choice > n_choices + first_choice - 1)
-        error (_("Argument must be choice number"));
+	  || choice > n_choices + first_choice - 1)
+	error (_("Argument must be choice number"));
       args = args2;
 
       if (choice == 0)
-        error (_("cancelled"));
+	error (_("cancelled"));
 
       if (choice < first_choice)
-        {
-          n_chosen = n_choices;
-          for (j = 0; j < n_choices; j += 1)
-            choices[j] = j;
-          break;
-        }
+	{
+	  n_chosen = n_choices;
+	  for (j = 0; j < n_choices; j += 1)
+	    choices[j] = j;
+	  break;
+	}
       choice -= first_choice;
 
       for (j = n_chosen - 1; j >= 0 && choice < choices[j]; j -= 1)
-        {
-        }
+	{
+	}
 
       if (j < 0 || choice != choices[j])
-        {
-          int k;
+	{
+	  int k;
 
-          for (k = n_chosen - 1; k > j; k -= 1)
-            choices[k + 1] = choices[k];
-          choices[j + 1] = choice;
-          n_chosen += 1;
-        }
+	  for (k = n_chosen - 1; k > j; k -= 1)
+	    choices[k + 1] = choices[k];
+	  choices[j + 1] = choice;
+	  n_chosen += 1;
+	}
     }
 
   if (n_chosen > max_results)
@@ -3341,7 +3595,7 @@ get_selections (int *choices, int n_choi
   return n_chosen;
 }
 
-/* Given a list of NSYMS symbols in SYMS, select up to MAX_RESULTS>0
+/* Given a list symbols in SYMS, select up to MAX_RESULTS>0
    by asking the user (if necessary), returning the number selected,
    and setting the first elements of SYMS items.  Error if no symbols
    selected.  */
@@ -3350,18 +3604,16 @@ get_selections (int *choices, int n_choi
    to be re-integrated one of these days.  */
 
 static int
-user_select_syms (struct block_symbol *syms, int nsyms, int max_results)
+user_select_syms (std::vector<struct block_symbol> &syms, int max_results)
 {
   int i;
-  int *chosen = XALLOCAVEC (int , nsyms);
-  int n_chosen;
   int first_choice = (max_results == 1) ? 1 : 2;
   const char *select_mode = multiple_symbols_select_mode ();
 
   if (max_results < 1)
     error (_("Request to select 0 symbols!"));
-  if (nsyms <= 1)
-    return nsyms;
+  if (syms.size () <= 1)
+    return syms.size ();
 
   if (select_mode == multiple_symbols_cancel)
     error (_("\
@@ -3372,88 +3624,93 @@ See set/show multiple-symbol."));
      Only do that if more than one symbol can be selected, of course.
      Otherwise, display the menu as usual.  */
   if (select_mode == multiple_symbols_all && max_results > 1)
-    return nsyms;
+    return syms.size ();
 
-  printf_filtered (_("[0] cancel\n"));
+  gdb_printf (_("[0] cancel\n"));
   if (max_results > 1)
-    printf_filtered (_("[1] all\n"));
+    gdb_printf (_("[1] all\n"));
 
-  sort_choices (syms, nsyms);
+  sort_choices (syms);
 
-  for (i = 0; i < nsyms; i += 1)
+  for (i = 0; i < syms.size (); i += 1)
     {
       if (syms[i].symbol == NULL)
-        continue;
+	continue;
 
-      if (SYMBOL_CLASS (syms[i].symbol) == LOC_BLOCK)
-        {
-          struct symtab_and_line sal =
-            find_function_start_sal (syms[i].symbol, 1);
+      if (syms[i].symbol->loc_class () == LOC_BLOCK)
+	{
+	  struct symtab_and_line sal =
+	    find_function_start_sal (syms[i].symbol, 1);
 
-	  printf_filtered ("[%d] ", i + first_choice);
+	  gdb_printf ("[%d] ", i + first_choice);
 	  ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
 				      &type_print_raw_options);
 	  if (sal.symtab == NULL)
-	    printf_filtered (_(" at %p[<no source file available>%p]:%d\n"),
-			     metadata_style.style ().ptr (), nullptr, sal.line);
+	    gdb_printf (_(" at %p[<no source file available>%p]:%d\n"),
+			metadata_style.style ().ptr (), nullptr, sal.line);
 	  else
-	    printf_filtered
+	    gdb_printf
 	      (_(" at %ps:%d\n"),
 	       styled_string (file_name_style.style (),
 			      symtab_to_filename_for_display (sal.symtab)),
 	       sal.line);
-          continue;
-        }
+	  continue;
+	}
       else
-        {
-          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);
+	{
+	  int is_enumeral =
+	    (syms[i].symbol->loc_class () == LOC_CONST
+	     && syms[i].symbol->type () != NULL
+	     && syms[i].symbol->type ()->code () == TYPE_CODE_ENUM);
 	  struct symtab *symtab = NULL;
 
-	  if (SYMBOL_OBJFILE_OWNED (syms[i].symbol))
-	    symtab = symbol_symtab (syms[i].symbol);
+	  if (syms[i].symbol->is_objfile_owned ())
+	    symtab = syms[i].symbol->symtab ();
 
-          if (SYMBOL_LINE (syms[i].symbol) != 0 && symtab != NULL)
+	  if (syms[i].symbol->line () != 0 && symtab != NULL)
 	    {
-	      printf_filtered ("[%d] ", i + first_choice);
+	      gdb_printf ("[%d] ", i + first_choice);
 	      ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
 					  &type_print_raw_options);
-	      printf_filtered (_(" at %s:%d\n"),
-			       symtab_to_filename_for_display (symtab),
-			       SYMBOL_LINE (syms[i].symbol));
-	    }
-          else if (is_enumeral
-                   && TYPE_NAME (SYMBOL_TYPE (syms[i].symbol)) != NULL)
-            {
-              printf_filtered (("[%d] "), i + first_choice);
-              ada_print_type (SYMBOL_TYPE (syms[i].symbol), NULL,
-                              gdb_stdout, -1, 0, &type_print_raw_options);
-              printf_filtered (_("'(%s) (enumeral)\n"),
-			       syms[i].symbol->print_name ());
-            }
+	      gdb_printf (_(" at %ps:%ps\n"),
+			  styled_string (file_name_style.style (),
+					 symtab_to_filename_for_display (symtab)),
+			  styled_string (line_number_style.style (),
+					 pulongest (syms[i].symbol->line ())));
+	    }
+	  else if (is_enumeral
+		   && syms[i].symbol->type ()->name () != NULL)
+	    {
+	      gdb_printf (("[%d] "), i + first_choice);
+	      ada_print_type (syms[i].symbol->type (), NULL,
+			      gdb_stdout, -1, 0, &type_print_raw_options);
+	      gdb_printf (_("'(%s) (enumeral)\n"),
+			  syms[i].symbol->print_name ());
+	    }
 	  else
 	    {
-	      printf_filtered ("[%d] ", i + first_choice);
+	      gdb_printf ("[%d] ", i + first_choice);
 	      ada_print_symbol_signature (gdb_stdout, syms[i].symbol,
 					  &type_print_raw_options);
 
 	      if (symtab != NULL)
-		printf_filtered (is_enumeral
-				 ? _(" in %s (enumeral)\n")
-				 : _(" at %s:?\n"),
-				 symtab_to_filename_for_display (symtab));
+		gdb_printf (is_enumeral
+			    ? _(" in %ps (enumeral)\n")
+			    : _(" at %ps:?\n"),
+			    styled_string (file_name_style.style (),
+					   symtab_to_filename_for_display (symtab)));
 	      else
-		printf_filtered (is_enumeral
-				 ? _(" (enumeral)\n")
-				 : _(" at ?\n"));
+		gdb_printf (is_enumeral
+			    ? _(" (enumeral)\n")
+			    : _(" at ?\n"));
 	    }
-        }
+	}
     }
 
-  n_chosen = get_selections (chosen, nsyms, max_results, max_results > 1,
-                             "overload-choice");
+  int *chosen = XALLOCAVEC (int , syms.size ());
+  int n_chosen = get_selections (chosen, syms.size (),
+				 max_results, max_results > 1,
+				 "overload-choice");
 
   for (i = 0; i < n_chosen; i += 1)
     syms[i] = syms[chosen[i]];
@@ -3461,447 +3718,274 @@ 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.  */
+/* See ada-lang.h.  */
 
-static void
-resolve (expression_up *expp, int void_context_p, int parse_completion,
-	 innermost_block_tracker *tracker)
+block_symbol
+ada_find_operator_symbol (enum exp_opcode op, bool parse_completion,
+			  int nargs, value *argvec[])
 {
-  struct type *context_type = NULL;
-  int pc = 0;
+  if (possible_user_operator_p (op, argvec))
+    {
+      std::vector<struct block_symbol> candidates
+	= ada_lookup_symbol_list (ada_decoded_op_name (op),
+				  NULL, SEARCH_VFT);
 
-  if (void_context_p)
-    context_type = builtin_type ((*expp)->gdbarch)->builtin_void;
+      int i = ada_resolve_function (candidates, argvec,
+				    nargs, ada_decoded_op_name (op), NULL,
+				    parse_completion);
+      if (i >= 0)
+	return candidates[i];
+    }
+  return {};
+}
 
-  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
-   with their resolutions, replacing built-in operators with
-   function calls to user-defined operators, where appropriate, and,
-   when DEPROCEDURE_P is non-zero, converting function-valued variables
-   into parameterless calls.  May expand *EXPP.  The CONTEXT_TYPE functions
-   are as in ada_resolve, above.  */
+/* See ada-lang.h.  */
 
-static struct value *
-resolve_subexp (expression_up *expp, int *pos, int deprocedure_p,
-                struct type *context_type, int parse_completion,
-		innermost_block_tracker *tracker)
+block_symbol
+ada_resolve_funcall (struct symbol *sym, const struct block *block,
+		     struct type *context_type,
+		     bool parse_completion,
+		     int nargs, value *argvec[],
+		     innermost_block_tracker *tracker)
 {
-  int pc = *pos;
-  int i;
-  struct expression *exp;       /* Convenience: == *expp.  */
-  enum exp_opcode op = (*expp)->elts[pc].opcode;
-  struct value **argvec;        /* Vector of operand types (alloca'ed).  */
-  int nargs;                    /* Number of operands.  */
-  int oplen;
-
-  argvec = NULL;
-  nargs = 0;
-  exp = expp->get ();
+  std::vector<struct block_symbol> candidates
+    = ada_lookup_symbol_list (sym->linkage_name (), block, SEARCH_VFT);
 
-  /* Pass one: resolve operands, saving their types and updating *pos,
-     if needed.  */
-  switch (op)
+  int i;
+  if (candidates.size () == 1)
+    i = 0;
+  else
     {
-    case OP_FUNCALL:
-      if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
-          && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
-        *pos += 7;
-      else
-        {
-          *pos += 3;
-          resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
-        }
-      nargs = longest_to_int (exp->elts[pc + 1].longconst);
-      break;
-
-    case UNOP_ADDR:
-      *pos += 1;
-      resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
-      break;
-
-    case UNOP_QUAL:
-      *pos += 3;
-      resolve_subexp (expp, pos, 1, check_typedef (exp->elts[pc + 1].type),
-		      parse_completion, tracker);
-      break;
-
-    case OP_ATR_MODULUS:
-    case OP_ATR_SIZE:
-    case OP_ATR_TAG:
-    case OP_ATR_FIRST:
-    case OP_ATR_LAST:
-    case OP_ATR_LENGTH:
-    case OP_ATR_POS:
-    case OP_ATR_VAL:
-    case OP_ATR_MIN:
-    case OP_ATR_MAX:
-    case TERNOP_IN_RANGE:
-    case BINOP_IN_BOUNDS:
-    case UNOP_IN_RANGE:
-    case OP_AGGREGATE:
-    case OP_OTHERS:
-    case OP_CHOICES:
-    case OP_POSITIONAL:
-    case OP_DISCRETE_RANGE:
-    case OP_NAME:
-      ada_forward_operator_length (exp, pc, &oplen, &nargs);
-      *pos += oplen;
-      break;
-
-    case BINOP_ASSIGN:
-      {
-        struct value *arg1;
-
-        *pos += 1;
-        arg1 = resolve_subexp (expp, pos, 0, NULL, parse_completion, tracker);
-        if (arg1 == NULL)
-          resolve_subexp (expp, pos, 1, NULL, parse_completion, tracker);
-        else
-          resolve_subexp (expp, pos, 1, value_type (arg1), parse_completion,
-			  tracker);
-        break;
-      }
-
-    case UNOP_CAST:
-      *pos += 3;
-      nargs = 1;
-      break;
-
-    case BINOP_ADD:
-    case BINOP_SUB:
-    case BINOP_MUL:
-    case BINOP_DIV:
-    case BINOP_REM:
-    case BINOP_MOD:
-    case BINOP_EXP:
-    case BINOP_CONCAT:
-    case BINOP_LOGICAL_AND:
-    case BINOP_LOGICAL_OR:
-    case BINOP_BITWISE_AND:
-    case BINOP_BITWISE_IOR:
-    case BINOP_BITWISE_XOR:
-
-    case BINOP_EQUAL:
-    case BINOP_NOTEQUAL:
-    case BINOP_LESS:
-    case BINOP_GTR:
-    case BINOP_LEQ:
-    case BINOP_GEQ:
-
-    case BINOP_REPEAT:
-    case BINOP_SUBSCRIPT:
-    case BINOP_COMMA:
-      *pos += 1;
-      nargs = 2;
-      break;
-
-    case UNOP_NEG:
-    case UNOP_PLUS:
-    case UNOP_LOGICAL_NOT:
-    case UNOP_ABS:
-    case UNOP_IND:
-      *pos += 1;
-      nargs = 1;
-      break;
-
-    case OP_LONG:
-    case OP_FLOAT:
-    case OP_VAR_VALUE:
-    case OP_VAR_MSYM_VALUE:
-      *pos += 4;
-      break;
-
-    case OP_TYPE:
-    case OP_BOOL:
-    case OP_LAST:
-    case OP_INTERNALVAR:
-      *pos += 3;
-      break;
+      i = ada_resolve_function
+	(candidates,
+	 argvec, nargs,
+	 sym->linkage_name (),
+	 context_type, parse_completion);
+      if (i < 0)
+	error (_("Could not find a match for %s"), sym->print_name ());
+    }
 
-    case UNOP_MEMVAL:
-      *pos += 3;
-      nargs = 1;
-      break;
+  tracker->update (candidates[i]);
+  return candidates[i];
+}
 
-    case OP_REGISTER:
-      *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
-      break;
+/* Resolve a mention of a name where the context type is an
+   enumeration type.  */
 
-    case STRUCTOP_STRUCT:
-      *pos += 4 + BYTES_TO_EXP_ELEM (exp->elts[pc + 1].longconst + 1);
-      nargs = 1;
-      break;
-
-    case TERNOP_SLICE:
-      *pos += 1;
-      nargs = 3;
-      break;
+static int
+ada_resolve_enum (std::vector<struct block_symbol> &syms,
+		  const char *name, struct type *context_type,
+		  bool parse_completion)
+{
+  gdb_assert (context_type->code () == TYPE_CODE_ENUM);
+  context_type = ada_check_typedef (context_type);
 
-    case OP_STRING:
-      break;
+  /* We already know the name matches, so we're just looking for
+     an element of the correct enum type.  */
+  struct type *type1 = context_type;
+  for (int i = 0; i < syms.size (); ++i)
+    {
+      struct type *type2 = ada_check_typedef (syms[i].symbol->type ());
+      if (type1 == type2)
+	return i;
+    }
 
-    default:
-      error (_("Unexpected operator during name resolution"));
+  for (int i = 0; i < syms.size (); ++i)
+    {
+      struct type *type2 = ada_check_typedef (syms[i].symbol->type ());
+      /* We let an anonymous enum type match a non-anonymous one.  */
+      if (type1->name () != nullptr
+	  && type2->name () != nullptr
+	  && strcmp (type1->name (), type2->name ()) != 0)
+	continue;
+      if (ada_identical_enum_types_p (type1, type2))
+	return i;
     }
 
-  argvec = XALLOCAVEC (struct value *, nargs + 1);
-  for (i = 0; i < nargs; i += 1)
-    argvec[i] = resolve_subexp (expp, pos, 1, NULL, parse_completion,
-				tracker);
-  argvec[i] = NULL;
-  exp = expp->get ();
+  error (_("No name '%s' in enumeration type '%s'"), name,
+	 ada_type_name (context_type));
+}
 
-  /* Pass two: perform any resolution on principal operator.  */
-  switch (op)
-    {
-    default:
-      break;
+/* See ada-lang.h.  */
 
-    case OP_VAR_VALUE:
-      if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
-        {
-          std::vector<struct block_symbol> candidates;
-          int n_candidates;
-
-          n_candidates =
-            ada_lookup_symbol_list (exp->elts[pc + 2].symbol->linkage_name (),
-                                    exp->elts[pc + 1].block, VAR_DOMAIN,
-                                    &candidates);
-
-          if (n_candidates > 1)
-            {
-              /* Types tend to get re-introduced locally, so if there
-                 are any local symbols that are not types, first filter
-                 out all types.  */
-              int j;
-              for (j = 0; j < n_candidates; j += 1)
-                switch (SYMBOL_CLASS (candidates[j].symbol))
-                  {
-                  case LOC_REGISTER:
-                  case LOC_ARG:
-                  case LOC_REF_ARG:
-                  case LOC_REGPARM_ADDR:
-                  case LOC_LOCAL:
-                  case LOC_COMPUTED:
-                    goto FoundNonType;
-                  default:
-                    break;
-                  }
-            FoundNonType:
-              if (j < n_candidates)
-                {
-                  j = 0;
-                  while (j < n_candidates)
-                    {
-                      if (SYMBOL_CLASS (candidates[j].symbol) == LOC_TYPEDEF)
-                        {
-                          candidates[j] = candidates[n_candidates - 1];
-                          n_candidates -= 1;
-                        }
-                      else
-                        j += 1;
-                    }
-                }
-            }
-
-          if (n_candidates == 0)
-            error (_("No definition found for %s"),
-                   exp->elts[pc + 2].symbol->print_name ());
-          else if (n_candidates == 1)
-            i = 0;
-          else if (deprocedure_p
-                   && !is_nonfunction (candidates.data (), n_candidates))
-            {
-              i = ada_resolve_function
-                (candidates.data (), n_candidates, NULL, 0,
-                 exp->elts[pc + 2].symbol->linkage_name (),
-                 context_type, parse_completion);
-              if (i < 0)
-                error (_("Could not find a match for %s"),
-                       exp->elts[pc + 2].symbol->print_name ());
-            }
-          else
-            {
-              printf_filtered (_("Multiple matches for %s\n"),
-                               exp->elts[pc + 2].symbol->print_name ());
-              user_select_syms (candidates.data (), n_candidates, 1);
-              i = 0;
-            }
-
-          exp->elts[pc + 1].block = candidates[i].block;
-          exp->elts[pc + 2].symbol = candidates[i].symbol;
-	  tracker->update (candidates[i]);
-        }
-
-      if (deprocedure_p
-          && (TYPE_CODE (SYMBOL_TYPE (exp->elts[pc + 2].symbol))
-              == TYPE_CODE_FUNC))
-        {
-          replace_operator_with_call (expp, pc, 0, 4,
-                                      exp->elts[pc + 2].symbol,
-                                      exp->elts[pc + 1].block);
-          exp = expp->get ();
-        }
-      break;
+block_symbol
+ada_resolve_variable (struct symbol *sym, const struct block *block,
+		      struct type *context_type,
+		      bool parse_completion,
+		      int deprocedure_p,
+		      innermost_block_tracker *tracker)
+{
+  std::vector<struct block_symbol> candidates
+    = ada_lookup_symbol_list (sym->linkage_name (), block, SEARCH_VFT);
+
+  if (std::any_of (candidates.begin (),
+		   candidates.end (),
+		   [] (block_symbol &bsym)
+		   {
+		     switch (bsym.symbol->loc_class ())
+		       {
+		       case LOC_REGISTER:
+		       case LOC_ARG:
+		       case LOC_REF_ARG:
+		       case LOC_REGPARM_ADDR:
+		       case LOC_LOCAL:
+		       case LOC_COMPUTED:
+			 return true;
+		       default:
+			 return false;
+		       }
+		   }))
+    {
+      /* Types tend to get re-introduced locally, so if there
+	 are any local symbols that are not types, first filter
+	 out all types.  */
+      candidates.erase
+	(std::remove_if
+	 (candidates.begin (),
+	  candidates.end (),
+	  [] (block_symbol &bsym)
+	  {
+	    return bsym.symbol->loc_class () == LOC_TYPEDEF;
+	  }),
+	 candidates.end ());
+    }
 
-    case OP_FUNCALL:
+  /* Filter out artificial symbols.  */
+  candidates.erase
+    (std::remove_if
+     (candidates.begin (),
+      candidates.end (),
+      [] (block_symbol &bsym)
       {
-        if (exp->elts[pc + 3].opcode == OP_VAR_VALUE
-            && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
-          {
-	    std::vector<struct block_symbol> candidates;
-            int n_candidates;
-
-            n_candidates =
-              ada_lookup_symbol_list (exp->elts[pc + 5].symbol->linkage_name (),
-                                      exp->elts[pc + 4].block, VAR_DOMAIN,
-                                      &candidates);
-
-            if (n_candidates == 1)
-              i = 0;
-            else
-              {
-                i = ada_resolve_function
-                  (candidates.data (), n_candidates,
-                   argvec, nargs,
-                   exp->elts[pc + 5].symbol->linkage_name (),
-                   context_type, parse_completion);
-                if (i < 0)
-                  error (_("Could not find a match for %s"),
-                         exp->elts[pc + 5].symbol->print_name ());
-              }
-
-            exp->elts[pc + 4].block = candidates[i].block;
-            exp->elts[pc + 5].symbol = candidates[i].symbol;
-	    tracker->update (candidates[i]);
-          }
-      }
-      break;
-    case BINOP_ADD:
-    case BINOP_SUB:
-    case BINOP_MUL:
-    case BINOP_DIV:
-    case BINOP_REM:
-    case BINOP_MOD:
-    case BINOP_CONCAT:
-    case BINOP_BITWISE_AND:
-    case BINOP_BITWISE_IOR:
-    case BINOP_BITWISE_XOR:
-    case BINOP_EQUAL:
-    case BINOP_NOTEQUAL:
-    case BINOP_LESS:
-    case BINOP_GTR:
-    case BINOP_LEQ:
-    case BINOP_GEQ:
-    case BINOP_EXP:
-    case UNOP_NEG:
-    case UNOP_PLUS:
-    case UNOP_LOGICAL_NOT:
-    case UNOP_ABS:
-      if (possible_user_operator_p (op, argvec))
-        {
-	  std::vector<struct block_symbol> candidates;
-          int n_candidates;
-
-          n_candidates =
-            ada_lookup_symbol_list (ada_decoded_op_name (op),
-				    NULL, VAR_DOMAIN,
-                                    &candidates);
+	return bsym.symbol->is_artificial ();
+      }),
+     candidates.end ());
 
-          i = ada_resolve_function (candidates.data (), n_candidates, argvec,
-				    nargs, ada_decoded_op_name (op), NULL,
-				    parse_completion);
-          if (i < 0)
-            break;
+  int i;
+  if (candidates.empty ())
+    error (_("No definition found for %s"), sym->print_name ());
+  else if (candidates.size () == 1)
+    i = 0;
+  else if (context_type != nullptr
+	   && context_type->code () == TYPE_CODE_ENUM)
+    i = ada_resolve_enum (candidates, sym->linkage_name (), context_type,
+			  parse_completion);
+  else if (context_type == nullptr
+	   && symbols_are_identical_enums (candidates))
+    {
+      /* If all the remaining symbols are identical enumerals, then
+	 just keep the first one and discard the rest.
+
+	 Unlike what we did previously, we do not discard any entry
+	 unless they are ALL identical.  This is because the symbol
+	 comparison is not a strict comparison, but rather a practical
+	 comparison.  If all symbols are considered identical, then
+	 we can just go ahead and use the first one and discard the rest.
+	 But if we cannot reduce the list to a single element, we have
+	 to ask the user to disambiguate anyways.  And if we have to
+	 present a multiple-choice menu, it's less confusing if the list
+	 isn't missing some choices that were identical and yet distinct.  */
+      candidates.resize (1);
+      i = 0;
+    }
+  else if (deprocedure_p && !is_nonfunction (candidates))
+    {
+      i = ada_resolve_function
+	(candidates, NULL, 0,
+	 sym->linkage_name (),
+	 context_type, parse_completion);
+      if (i < 0)
+	error (_("Could not find a match for %s"), sym->print_name ());
+    }
+  else
+    {
+      gdb_printf (_("Multiple matches for %s\n"), sym->print_name ());
+      user_select_syms (candidates, 1);
+      i = 0;
+    }
+
+  tracker->update (candidates[i]);
+  return candidates[i];
+}
+
+static bool ada_type_match (struct type *ftype, struct type *atype);
+
+/* Helper for ada_type_match that checks that two array types are
+   compatible.  As with that function, FTYPE is the formal type and
+   ATYPE is the actual type.  */
 
-	  replace_operator_with_call (expp, pc, nargs, 1,
-				      candidates[i].symbol,
-				      candidates[i].block);
-          exp = expp->get ();
-        }
-      break;
+static bool
+ada_type_match_arrays (struct type *ftype, struct type *atype)
+{
+  if (ftype->code () != TYPE_CODE_ARRAY
+      && !ada_is_array_descriptor_type (ftype))
+    return false;
+  if (atype->code () != TYPE_CODE_ARRAY
+      && !ada_is_array_descriptor_type (atype))
+    return false;
 
-    case OP_TYPE:
-    case OP_REGISTER:
-      return NULL;
-    }
+  if (ada_array_arity (ftype) != ada_array_arity (atype))
+    return false;
 
-  *pos = pc;
-  if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
-    return evaluate_var_msym_value (EVAL_AVOID_SIDE_EFFECTS,
-				    exp->elts[pc + 1].objfile,
-				    exp->elts[pc + 2].msymbol);
-  else
-    return evaluate_subexp_type (exp, pos);
+  struct type *f_elt_type = ada_array_element_type (ftype, -1);
+  struct type *a_elt_type = ada_array_element_type (atype, -1);
+  return ada_type_match (f_elt_type, a_elt_type);
 }
 
-/* Return non-zero if formal type FTYPE matches actual type ATYPE.  If
-   MAY_DEREF is non-zero, the formal may be a pointer and the actual
-   a non-pointer.  */
-/* The term "match" here is rather loose.  The match is heuristic and
-   liberal.  */
+/* Return non-zero if formal type FTYPE matches actual type ATYPE.
+   The term "match" here is rather loose.  The match is heuristic and
+   liberal -- while it tries to reject matches that are obviously
+   incorrect, it may still let through some that do not strictly
+   correspond to Ada rules.  */
 
-static int
-ada_type_match (struct type *ftype, struct type *atype, int may_deref)
+static bool
+ada_type_match (struct type *ftype, struct type *atype)
 {
   ftype = ada_check_typedef (ftype);
   atype = ada_check_typedef (atype);
 
-  if (TYPE_CODE (ftype) == TYPE_CODE_REF)
-    ftype = TYPE_TARGET_TYPE (ftype);
-  if (TYPE_CODE (atype) == TYPE_CODE_REF)
-    atype = TYPE_TARGET_TYPE (atype);
+  if (ftype->code () == TYPE_CODE_REF)
+    ftype = ada_check_typedef (ftype->target_type ());
+  if (atype->code () == TYPE_CODE_REF)
+    atype = ada_check_typedef (atype->target_type ());
 
-  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)
-        return ada_type_match (TYPE_TARGET_TYPE (ftype),
-                               TYPE_TARGET_TYPE (atype), 0);
-      else
-        return (may_deref
-                && ada_type_match (TYPE_TARGET_TYPE (ftype), atype, 0));
+      if (atype->code () != TYPE_CODE_PTR)
+	return false;
+      atype = atype->target_type ();
+      /* This can only happen if the actual argument is 'null'.  */
+      if (atype->code () == TYPE_CODE_INT && atype->length () == 0)
+	return true;
+      return ada_type_match (ftype->target_type (), atype);
     case TYPE_CODE_INT:
     case TYPE_CODE_ENUM:
     case TYPE_CODE_RANGE:
-      switch (TYPE_CODE (atype))
-        {
-        case TYPE_CODE_INT:
-        case TYPE_CODE_ENUM:
-        case TYPE_CODE_RANGE:
-          return 1;
-        default:
-          return 0;
-        }
-
-    case TYPE_CODE_ARRAY:
-      return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
-              || ada_is_array_descriptor_type (atype));
+      switch (atype->code ())
+	{
+	case TYPE_CODE_INT:
+	case TYPE_CODE_ENUM:
+	case TYPE_CODE_RANGE:
+	  return true;
+	default:
+	  return false;
+	}
 
     case TYPE_CODE_STRUCT:
-      if (ada_is_array_descriptor_type (ftype))
-        return (TYPE_CODE (atype) == TYPE_CODE_ARRAY
-                || ada_is_array_descriptor_type (atype));
-      else
-        return (TYPE_CODE (atype) == TYPE_CODE_STRUCT
-                && !ada_is_array_descriptor_type (atype));
+      if (!ada_is_array_descriptor_type (ftype))
+	return (atype->code () == TYPE_CODE_STRUCT
+		&& !ada_is_array_descriptor_type (atype));
+
+      [[fallthrough]];
+    case TYPE_CODE_ARRAY:
+      return ada_type_match_arrays (ftype, atype);
 
     case TYPE_CODE_UNION:
     case TYPE_CODE_FLT:
-      return (TYPE_CODE (atype) == TYPE_CODE (ftype));
+      return (atype->code () == ftype->code ());
     }
 }
 
@@ -3914,30 +3998,29 @@ static int
 ada_args_match (struct symbol *func, struct value **actuals, int n_actuals)
 {
   int i;
-  struct type *func_type = SYMBOL_TYPE (func);
+  struct type *func_type = func->type ();
 
-  if (SYMBOL_CLASS (func) == LOC_CONST
-      && TYPE_CODE (func_type) == TYPE_CODE_ENUM)
+  if (func->loc_class () == LOC_CONST
+      && 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)
     {
       if (actuals[i] == NULL)
-        return 0;
+	return 0;
       else
-        {
-          struct type *ftype = ada_check_typedef (TYPE_FIELD_TYPE (func_type,
-								   i));
-          struct type *atype = ada_check_typedef (value_type (actuals[i]));
-
-          if (!ada_type_match (ftype, atype, 1))
-            return 0;
-        }
+	{
+	  struct type *ftype = ada_check_typedef (func_type->field (i).type ());
+	  struct type *atype = ada_check_typedef (actuals[i]->type ());
+
+	  if (!ada_type_match (ftype, atype))
+	    return 0;
+	}
     }
   return 1;
 }
@@ -3955,8 +4038,8 @@ return_match (struct type *func_type, st
   if (func_type == NULL)
     return 1;
 
-  if (TYPE_CODE (func_type) == TYPE_CODE_FUNC)
-    return_type = get_base_type (TYPE_TARGET_TYPE (func_type));
+  if (func_type->code () == TYPE_CODE_FUNC)
+    return_type = get_base_type (func_type->target_type ());
   else
     return_type = get_base_type (func_type);
   if (return_type == NULL)
@@ -3964,16 +4047,16 @@ 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 ();
 }
 
 
-/* Returns the index in SYMS[0..NSYMS-1] that contains  the symbol for the
+/* Returns the index in SYMS that contains the symbol for the
    function (if any) that matches the types of the NARGS arguments in
    ARGS.  If CONTEXT_TYPE is non-null and there is at least one match
    that returns that type, then eliminate matches that don't.  If
@@ -3986,10 +4069,10 @@ return_match (struct type *func_type, st
    the process; the index returned is for the modified vector.  */
 
 static int
-ada_resolve_function (struct block_symbol syms[],
-                      int nsyms, struct value **args, int nargs,
-                      const char *name, struct type *context_type,
-		      int parse_completion)
+ada_resolve_function (std::vector<struct block_symbol> &syms,
+		      struct value **args, int nargs,
+		      const char *name, struct type *context_type,
+		      bool parse_completion)
 {
   int fallback;
   int k;
@@ -4001,17 +4084,17 @@ ada_resolve_function (struct block_symbo
      where every function is accepted.  */
   for (fallback = 0; m == 0 && fallback < 2; fallback++)
     {
-      for (k = 0; k < nsyms; k += 1)
-        {
-          struct type *type = ada_check_typedef (SYMBOL_TYPE (syms[k].symbol));
-
-          if (ada_args_match (syms[k].symbol, args, nargs)
-              && (fallback || return_match (type, context_type)))
-            {
-              syms[m] = syms[k];
-              m += 1;
-            }
-        }
+      for (k = 0; k < syms.size (); k += 1)
+	{
+	  struct type *type = ada_check_typedef (syms[k].symbol->type ());
+
+	  if (ada_args_match (syms[k].symbol, args, nargs)
+	      && (fallback || return_match (type, context_type)))
+	    {
+	      syms[m] = syms[k];
+	      m += 1;
+	    }
+	}
     }
 
   /* If we got multiple matches, ask the user which one to use.  Don't do this
@@ -4022,46 +4105,14 @@ ada_resolve_function (struct block_symbo
     return -1;
   else if (m > 1 && !parse_completion)
     {
-      printf_filtered (_("Multiple matches for %s\n"), name);
-      user_select_syms (syms, m, 1);
+      gdb_printf (_("Multiple matches for %s\n"), name);
+      syms.resize (m);
+      user_select_syms (syms, 1);
       return 0;
     }
   return 0;
 }
 
-/* Replace the operator of length OPLEN at position PC in *EXPP with a call
-   on the function identified by SYM and BLOCK, and taking NARGS
-   arguments.  Update *EXPP as needed to hold more space.  */
-
-static void
-replace_operator_with_call (expression_up *expp, int pc, int nargs,
-                            int oplen, struct symbol *sym,
-                            const struct block *block)
-{
-  /* A new expression, with 6 more elements (3 for funcall, 4 for function
-     symbol, -oplen for operator being replaced).  */
-  struct expression *newexp = (struct expression *)
-    xzalloc (sizeof (struct expression)
-             + EXP_ELEM_TO_BYTES ((*expp)->nelts + 7 - oplen));
-  struct expression *exp = expp->get ();
-
-  newexp->nelts = exp->nelts + 7 - oplen;
-  newexp->language_defn = exp->language_defn;
-  newexp->gdbarch = exp->gdbarch;
-  memcpy (newexp->elts, exp->elts, EXP_ELEM_TO_BYTES (pc));
-  memcpy (newexp->elts + pc + 7, exp->elts + pc + oplen,
-          EXP_ELEM_TO_BYTES (exp->nelts - pc - oplen));
-
-  newexp->elts[pc].opcode = newexp->elts[pc + 2].opcode = OP_FUNCALL;
-  newexp->elts[pc + 1].longconst = (LONGEST) nargs;
-
-  newexp->elts[pc + 3].opcode = newexp->elts[pc + 6].opcode = OP_VAR_VALUE;
-  newexp->elts[pc + 4].block = block;
-  newexp->elts[pc + 5].symbol = sym;
-
-  expp->reset (newexp);
-}
-
 /* Type-class predicates */
 
 /* True iff TYPE is numeric (i.e., an INT, RANGE (of numeric type),
@@ -4074,17 +4125,18 @@ numeric_type_p (struct type *type)
     return 0;
   else
     {
-      switch (TYPE_CODE (type))
-        {
-        case TYPE_CODE_INT:
-        case TYPE_CODE_FLT:
-          return 1;
-        case TYPE_CODE_RANGE:
-          return (type == TYPE_TARGET_TYPE (type)
-                  || numeric_type_p (TYPE_TARGET_TYPE (type)));
-        default:
-          return 0;
-        }
+      switch (type->code ())
+	{
+	case TYPE_CODE_INT:
+	case TYPE_CODE_FLT:
+	case TYPE_CODE_FIXED_POINT:
+	  return 1;
+	case TYPE_CODE_RANGE:
+	  return (type == type->target_type ()
+		  || numeric_type_p (type->target_type ()));
+	default:
+	  return 0;
+	}
     }
 }
 
@@ -4097,16 +4149,16 @@ integer_type_p (struct type *type)
     return 0;
   else
     {
-      switch (TYPE_CODE (type))
-        {
-        case TYPE_CODE_INT:
-          return 1;
-        case TYPE_CODE_RANGE:
-          return (type == TYPE_TARGET_TYPE (type)
-                  || integer_type_p (TYPE_TARGET_TYPE (type)));
-        default:
-          return 0;
-        }
+      switch (type->code ())
+	{
+	case TYPE_CODE_INT:
+	  return 1;
+	case TYPE_CODE_RANGE:
+	  return (type == type->target_type ()
+		  || integer_type_p (type->target_type ()));
+	default:
+	  return 0;
+	}
     }
 }
 
@@ -4119,20 +4171,23 @@ scalar_type_p (struct type *type)
     return 0;
   else
     {
-      switch (TYPE_CODE (type))
-        {
-        case TYPE_CODE_INT:
-        case TYPE_CODE_RANGE:
-        case TYPE_CODE_ENUM:
-        case TYPE_CODE_FLT:
-          return 1;
-        default:
-          return 0;
-        }
+      switch (type->code ())
+	{
+	case TYPE_CODE_INT:
+	case TYPE_CODE_RANGE:
+	case TYPE_CODE_ENUM:
+	case TYPE_CODE_FLT:
+	case TYPE_CODE_FIXED_POINT:
+	  return 1;
+	default:
+	  return 0;
+	}
     }
 }
 
-/* True iff TYPE is discrete (INT, RANGE, ENUM).  */
+/* True iff TYPE is discrete, as defined in the Ada Reference Manual.
+   This essentially means one of (INT, RANGE, ENUM) -- but note that
+   "enum" includes character and boolean as well.  */
 
 static int
 discrete_type_p (struct type *type)
@@ -4141,16 +4196,17 @@ discrete_type_p (struct type *type)
     return 0;
   else
     {
-      switch (TYPE_CODE (type))
-        {
-        case TYPE_CODE_INT:
-        case TYPE_CODE_RANGE:
-        case TYPE_CODE_ENUM:
-        case TYPE_CODE_BOOL:
-          return 1;
-        default:
-          return 0;
-        }
+      switch (type->code ())
+	{
+	case TYPE_CODE_INT:
+	case TYPE_CODE_RANGE:
+	case TYPE_CODE_ENUM:
+	case TYPE_CODE_BOOL:
+	case TYPE_CODE_CHAR:
+	  return 1;
+	default:
+	  return 0;
+	}
     }
 }
 
@@ -4162,9 +4218,9 @@ static int
 possible_user_operator_p (enum exp_opcode op, struct value *args[])
 {
   struct type *type0 =
-    (args[0] == NULL) ? NULL : ada_check_typedef (value_type (args[0]));
+    (args[0] == NULL) ? NULL : ada_check_typedef (args[0]->type ());
   struct type *type1 =
-    (args[1] == NULL) ? NULL : ada_check_typedef (value_type (args[1]));
+    (args[1] == NULL) ? NULL : ada_check_typedef (args[1]->type ());
 
   if (type0 == NULL)
     return 0;
@@ -4210,7 +4266,7 @@ possible_user_operator_p (enum exp_opcod
     }
 }
 
-                                /* Renaming */
+				/* Renaming */
 
 /* NOTES: 
 
@@ -4254,7 +4310,7 @@ ada_parse_renaming (struct symbol *sym,
 
   if (sym == NULL)
     return ADA_NOT_RENAMING;
-  switch (SYMBOL_CLASS (sym)) 
+  switch (sym->loc_class ())
     {
     default:
       return ADA_NOT_RENAMING;
@@ -4313,11 +4369,11 @@ ada_read_renaming_var_value (struct symb
 
   sym_name = renaming_sym->linkage_name ();
   expression_up expr = parse_exp_1 (&sym_name, 0, block, 0);
-  return evaluate_expression (expr.get ());
+  return expr->evaluate ();
 }
 
 
-                                /* Evaluation: Function Calls */
+				/* Evaluation: Function Calls */
 
 /* Return an lvalue containing the value VAL.  This is the identity on
    lvalues, and otherwise has the side-effect of allocating memory
@@ -4326,16 +4382,16 @@ ada_read_renaming_var_value (struct symb
 static struct value *
 ensure_lval (struct value *val)
 {
-  if (VALUE_LVAL (val) == not_lval
-      || VALUE_LVAL (val) == lval_internalvar)
+  if (val->lval () == not_lval
+      || val->lval () == lval_internalvar)
     {
-      int len = TYPE_LENGTH (ada_check_typedef (value_type (val)));
+      int len = ada_check_typedef (val->type ())->length ();
       const CORE_ADDR addr =
-        value_as_long (value_allocate_space_in_inferior (len));
+	value_as_long (value_allocate_space_in_inferior (len));
 
-      VALUE_LVAL (val) = lval_memory;
-      set_value_address (val, addr);
-      write_memory (addr, value_contents (val), len);
+      val->set_lval (lval_memory);
+      val->set_address (addr);
+      write_memory (addr, val->contents ().data (), len);
     }
 
   return val;
@@ -4361,36 +4417,36 @@ ada_value_struct_elt (struct value *arg,
   int check_tag;
 
   v = NULL;
-  t1 = t = ada_check_typedef (value_type (arg));
-  if (TYPE_CODE (t) == TYPE_CODE_REF)
+  t1 = t = ada_check_typedef (arg->type ());
+  if (t->code () == TYPE_CODE_REF)
     {
-      t1 = TYPE_TARGET_TYPE (t);
+      t1 = t->target_type ();
       if (t1 == NULL)
 	goto BadValue;
       t1 = ada_check_typedef (t1);
-      if (TYPE_CODE (t1) == TYPE_CODE_PTR)
-        {
-          arg = coerce_ref (arg);
-          t = t1;
-        }
+      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);
+      t1 = t->target_type ();
       if (t1 == NULL)
 	goto BadValue;
       t1 = ada_check_typedef (t1);
-      if (TYPE_CODE (t1) == TYPE_CODE_PTR)
-        {
-          arg = value_ind (arg);
-          t = t1;
-        }
+      if (t1->code () == TYPE_CODE_PTR)
+	{
+	  arg = value_ind (arg);
+	  t = t1;
+	}
       else
-        break;
+	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,31 +4457,31 @@ ada_value_struct_elt (struct value *arg,
       struct type *field_type;
       CORE_ADDR address;
 
-      if (TYPE_CODE (t) == TYPE_CODE_PTR)
-	address = value_address (ada_value_ind (arg));
+      if (t->code () == TYPE_CODE_PTR)
+	address = ada_value_ind (arg)->address ();
       else
-	address = value_address (ada_coerce_ref (arg));
+	address = ada_coerce_ref (arg)->address ();
 
       /* Check to see if this is a tagged type.  We also need to handle
-         the case where the type is a reference to a tagged type, but
-         we have to be careful to exclude pointers to tagged types.
-         The latter should be shown as usual (as a pointer), whereas
-         a reference should mostly be transparent to the user.  */
+	 the case where the type is a reference to a tagged type, but
+	 we have to be careful to exclude pointers to tagged types.
+	 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 (t1, 0)
-          || (TYPE_CODE (t1) == TYPE_CODE_REF
-              && ada_is_tagged_type (TYPE_TARGET_TYPE (t1), 0)))
-        {
-          /* We first try to find the searched field in the current type.
+	  || (t1->code () == TYPE_CODE_REF
+	      && ada_is_tagged_type (t1->target_type (), 0)))
+	{
+	  /* We first try to find the searched field in the current type.
 	     If not found then let's look in the fixed type.  */
 
-          if (!find_struct_field (name, t1, 0,
-                                  &field_type, &byte_offset, &bit_offset,
-                                  &bit_size, NULL))
+	  if (!find_struct_field (name, t1, 0,
+				  nullptr, nullptr, nullptr,
+				  nullptr, nullptr))
 	    check_tag = 1;
 	  else
 	    check_tag = 0;
-        }
+	}
       else
 	check_tag = 0;
 
@@ -4434,23 +4490,27 @@ ada_value_struct_elt (struct value *arg,
       t1 = ada_to_fixed_type (ada_get_base_type (t1), NULL,
 			      address, NULL, check_tag);
 
+      /* Resolve the dynamic type as well.  */
+      arg = value_from_contents_and_address (t1, nullptr, address);
+      t1 = arg->type ();
+
       if (find_struct_field (name, t1, 0,
-                             &field_type, &byte_offset, &bit_offset,
-                             &bit_size, NULL))
-        {
-          if (bit_size != 0)
-            {
-              if (TYPE_CODE (t) == TYPE_CODE_REF)
-                arg = ada_coerce_ref (arg);
-              else
-                arg = ada_value_ind (arg);
-              v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
-                                                  bit_offset, bit_size,
-                                                  field_type);
-            }
-          else
-            v = value_at_lazy (field_type, address + byte_offset);
-        }
+			     &field_type, &byte_offset, &bit_offset,
+			     &bit_size, NULL))
+	{
+	  if (bit_size != 0)
+	    {
+	      if (t->code () == TYPE_CODE_REF)
+		arg = ada_coerce_ref (arg);
+	      else
+		arg = ada_value_ind (arg);
+	      v = ada_value_primitive_packed_val (arg, NULL, byte_offset,
+						  bit_offset, bit_size,
+						  field_type);
+	    }
+	  else
+	    v = value_at_lazy (field_type, address + byte_offset);
+	}
     }
 
   if (v != NULL || no_err)
@@ -4474,52 +4534,50 @@ ada_value_struct_elt (struct value *arg,
 struct value *
 ada_convert_actual (struct value *actual, struct type *formal_type0)
 {
-  struct type *actual_type = ada_check_typedef (value_type (actual));
+  struct type *actual_type = ada_check_typedef (actual->type ());
   struct type *formal_type = ada_check_typedef (formal_type0);
   struct type *formal_target =
-    TYPE_CODE (formal_type) == TYPE_CODE_PTR
-    ? ada_check_typedef (TYPE_TARGET_TYPE (formal_type)) : formal_type;
+    formal_type->code () == TYPE_CODE_PTR
+    ? ada_check_typedef (formal_type->target_type ()) : formal_type;
   struct type *actual_target =
-    TYPE_CODE (actual_type) == TYPE_CODE_PTR
-    ? ada_check_typedef (TYPE_TARGET_TYPE (actual_type)) : actual_type;
+    actual_type->code () == TYPE_CODE_PTR
+    ? ada_check_typedef (actual_type->target_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
-          && ada_is_array_descriptor_type (actual_target))
+      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)
-        {
-          if (VALUE_LVAL (actual) != lval_memory)
-            {
-              struct value *val;
-
-              actual_type = ada_check_typedef (value_type (actual));
-              val = allocate_value (actual_type);
-              memcpy ((char *) value_contents_raw (val),
-                      (char *) value_contents (actual),
-                      TYPE_LENGTH (actual_type));
-              actual = ensure_lval (val);
-            }
-          result = value_addr (actual);
-        }
+      else if (formal_type->code () != TYPE_CODE_PTR)
+	{
+	  if (actual->lval () != lval_memory)
+	    {
+	      struct value *val;
+
+	      actual_type = ada_check_typedef (actual->type ());
+	      val = value::allocate (actual_type);
+	      copy (actual->contents (), val->contents_raw ());
+	      actual = ensure_lval (val);
+	    }
+	  result = value_addr (actual);
+	}
       else
 	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))
     {
       /* We need to turn this parameter into an aligner type
 	 as well.  */
-      struct value *aligner = allocate_value (formal_type);
+      struct value *aligner = value::allocate (formal_type);
       struct value *component = ada_value_struct_elt (aligner, "F", 0);
 
       value_assign_to_component (aligner, component, actual);
@@ -4537,13 +4595,12 @@ ada_convert_actual (struct value *actual
 static CORE_ADDR
 value_pointer (struct value *value, struct type *type)
 {
-  struct gdbarch *gdbarch = get_type_arch (type);
-  unsigned len = TYPE_LENGTH (type);
+  unsigned len = type->length ();
   gdb_byte *buf = (gdb_byte *) alloca (len);
   CORE_ADDR addr;
 
-  addr = value_address (value);
-  gdbarch_address_to_pointer (gdbarch, type, buf, addr);
+  addr = value->address ();
+  gdbarch_address_to_pointer (type->arch (), type, buf, addr);
   addr = extract_unsigned_integer (buf, len, type_byte_order (type));
   return addr;
 }
@@ -4560,18 +4617,20 @@ make_array_descriptor (struct type *type
 {
   struct type *bounds_type = desc_bounds_type (type);
   struct type *desc_type = desc_base_type (type);
-  struct value *descriptor = allocate_value (desc_type);
-  struct value *bounds = allocate_value (bounds_type);
+  struct value *descriptor = value::allocate (desc_type);
+  struct value *bounds = value::allocate (bounds_type);
   int i;
 
-  for (i = ada_array_arity (ada_check_typedef (value_type (arr)));
+  for (i = ada_array_arity (ada_check_typedef (arr->type ()));
        i > 0; i -= 1)
     {
-      modify_field (value_type (bounds), value_contents_writeable (bounds),
+      modify_field (bounds->type (),
+		    bounds->contents_writeable ().data (),
 		    ada_array_bound (arr, i, 0),
 		    desc_bound_bitpos (bounds_type, i, 0),
 		    desc_bound_bitsize (bounds_type, i, 0));
-      modify_field (value_type (bounds), value_contents_writeable (bounds),
+      modify_field (bounds->type (),
+		    bounds->contents_writeable ().data (),
 		    ada_array_bound (arr, i, 1),
 		    desc_bound_bitpos (bounds_type, i, 1),
 		    desc_bound_bitsize (bounds_type, i, 1));
@@ -4579,29 +4638,29 @@ make_array_descriptor (struct type *type
 
   bounds = ensure_lval (bounds);
 
-  modify_field (value_type (descriptor),
-		value_contents_writeable (descriptor),
+  modify_field (descriptor->type (),
+		descriptor->contents_writeable ().data (),
 		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),
+  modify_field (descriptor->type (),
+		descriptor->contents_writeable ().data (),
 		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;
 }
 
-                                /* Symbol Cache Module */
+				/* Symbol Cache Module */
 
 /* Performance measurements made as of 2010-01-15 indicate that
    this cache does bring some noticeable improvements.  Depending
@@ -4613,70 +4672,12 @@ make_array_descriptor (struct type *type
    even in this case, some expensive name-based symbol searches are still
    sometimes necessary - to find an XVZ variable, mostly.  */
 
-/* Initialize the contents of SYM_CACHE.  */
-
-static void
-ada_init_symbol_cache (struct ada_symbol_cache *sym_cache)
-{
-  obstack_init (&sym_cache->cache_space);
-  memset (sym_cache->root, '\000', sizeof (sym_cache->root));
-}
-
-/* Free the memory used by SYM_CACHE.  */
-
-static void
-ada_free_symbol_cache (struct ada_symbol_cache *sym_cache)
-{
-  obstack_free (&sym_cache->cache_space, NULL);
-  xfree (sym_cache);
-}
-
-/* Return the symbol cache associated to the given program space PSPACE.
-   If not allocated for this PSPACE yet, allocate and initialize one.  */
-
-static struct ada_symbol_cache *
-ada_get_symbol_cache (struct program_space *pspace)
-{
-  struct ada_pspace_data *pspace_data = get_ada_pspace_data (pspace);
-
-  if (pspace_data->sym_cache == NULL)
-    {
-      pspace_data->sym_cache = XCNEW (struct ada_symbol_cache);
-      ada_init_symbol_cache (pspace_data->sym_cache);
-    }
-
-  return pspace_data->sym_cache;
-}
-
-/* Clear all entries from the symbol cache.  */
-
-static void
-ada_clear_symbol_cache (void)
-{
-  struct ada_symbol_cache *sym_cache
-    = ada_get_symbol_cache (current_program_space);
-
-  obstack_free (&sym_cache->cache_space, NULL);
-  ada_init_symbol_cache (sym_cache);
-}
-
-/* Search our cache for an entry matching NAME and DOMAIN.
-   Return it if found, or NULL otherwise.  */
+/* See ada-lang.h.  */
 
-static struct cache_entry **
-find_entry (const char *name, domain_enum domain)
+void
+ada_clear_symbol_cache (program_space *pspace)
 {
-  struct ada_symbol_cache *sym_cache
-    = ada_get_symbol_cache (current_program_space);
-  int h = msymbol_hash (name) % HASH_SIZE;
-  struct cache_entry **e;
-
-  for (e = &sym_cache->root[h]; *e != NULL; e = &(*e)->next)
-    {
-      if (domain == (*e)->domain && strcmp (name, (*e)->name) == 0)
-        return e;
-    }
-  return NULL;
+  ada_pspace_data_handle.clear (pspace);
 }
 
 /* Search the symbol cache for an entry matching NAME and DOMAIN.
@@ -4686,17 +4687,21 @@ find_entry (const char *name, domain_enu
    SYM.  Same principle for BLOCK if not NULL.  */
 
 static int
-lookup_cached_symbol (const char *name, domain_enum domain,
-                      struct symbol **sym, const struct block **block)
+lookup_cached_symbol (const char *name, domain_search_flags domain,
+		      struct symbol **sym, const struct block **block)
 {
-  struct cache_entry **e = find_entry (name, domain);
-
-  if (e == NULL)
-    return 0;
-  if (sym != NULL)
-    *sym = (*e)->sym;
-  if (block != NULL)
-    *block = (*e)->block;
+  cache_entry_set &htab = get_ada_pspace_data (current_program_space);
+  cache_entry_search search;
+  search.name = name;
+  search.domain = domain;
+
+  auto iter = htab.find (search);
+  if (iter == htab.end ())
+    return 0;
+  if (sym != nullptr)
+    *sym = iter->sym;
+  if (block != nullptr)
+    *block = iter->block;
   return 1;
 }
 
@@ -4704,44 +4709,31 @@ lookup_cached_symbol (const char *name,
    in domain DOMAIN, save this result in our symbol cache.  */
 
 static void
-cache_symbol (const char *name, domain_enum domain, struct symbol *sym,
-              const struct block *block)
+cache_symbol (const char *name, domain_search_flags domain,
+	      struct symbol *sym, const struct block *block)
 {
-  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.
      For now don't cache such symbols.  */
-  if (sym != NULL && !SYMBOL_OBJFILE_OWNED (sym))
+  if (sym != NULL && !sym->is_objfile_owned ())
     return;
 
   /* If the symbol is a local symbol, then do not cache it, as a search
      for that symbol depends on the context.  To determine whether
      the symbol is local or not, we check the block where we found it
      against the global and static blocks of its associated symtab.  */
-  if (sym
-      && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
-			    GLOBAL_BLOCK) != block
-      && BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symbol_symtab (sym)),
-			    STATIC_BLOCK) != block)
-    return;
+  if (sym != nullptr)
+    {
+      const blockvector &bv = *sym->symtab ()->compunit ()->blockvector ();
+
+      if (bv.global_block () != block && bv.static_block () != block)
+	return;
+    }
 
-  h = msymbol_hash (name) % HASH_SIZE;
-  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->sym = sym;
-  e->domain = domain;
-  e->block = block;
+  cache_entry_set &tab = get_ada_pspace_data (current_program_space);
+  tab.insert (cache_entry {name, domain, sym, block});
 }
 
-                                /* Symbol Lookup */
+				/* Symbol Lookup */
 
 /* Return the symbol name match type that should be used used when
    searching for all symbols matching LOOKUP_NAME.
@@ -4762,31 +4754,29 @@ name_match_type_from_name (const char *l
 
 static struct symbol *
 standard_lookup (const char *name, const struct block *block,
-                 domain_enum domain)
+		 domain_search_flags domain)
 {
   /* Initialize it just to avoid a GCC false warning.  */
   struct block_symbol sym = {};
 
   if (lookup_cached_symbol (name, domain, &sym.symbol, NULL))
     return sym.symbol;
-  ada_lookup_encoded_symbol (name, block, domain, &sym);
+  sym = ada_lookup_encoded_symbol (name, block, domain);
   cache_symbol (name, domain, sym.symbol, sym.block);
   return sym.symbol;
 }
 
 
 /* Non-zero iff there is at least one non-function/non-enumeral symbol
-   in the symbol fields of SYMS[0..N-1].  We treat enumerals as functions, 
+   in the symbol fields of SYMS.  We treat enumerals as functions, 
    since they contend in overloading in the same way.  */
 static int
-is_nonfunction (struct block_symbol syms[], int n)
+is_nonfunction (const std::vector<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
-            || SYMBOL_CLASS (syms[i].symbol) != LOC_CONST))
+  for (const block_symbol &sym : syms)
+    if (sym.symbol->type ()->code () != TYPE_CODE_FUNC
+	&& (sym.symbol->type ()->code () != TYPE_CODE_ENUM
+	    || sym.symbol->loc_class () != LOC_CONST))
       return 1;
 
   return 0;
@@ -4801,10 +4791,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;
@@ -4820,38 +4810,38 @@ lesseq_defined_than (struct symbol *sym0
 {
   if (sym0 == sym1)
     return 1;
-  if (SYMBOL_DOMAIN (sym0) != SYMBOL_DOMAIN (sym1)
-      || SYMBOL_CLASS (sym0) != SYMBOL_CLASS (sym1))
+  if (sym0->domain () != sym1->domain ()
+      || sym0->loc_class () != sym1->loc_class ())
     return 0;
 
-  switch (SYMBOL_CLASS (sym0))
+  switch (sym0->loc_class ())
     {
     case LOC_UNDEF:
       return 1;
     case LOC_TYPEDEF:
       {
-        struct type *type0 = SYMBOL_TYPE (sym0);
-        struct type *type1 = SYMBOL_TYPE (sym1);
-        const char *name0 = sym0->linkage_name ();
-        const char *name1 = sym1->linkage_name ();
-        int len0 = strlen (name0);
-
-        return
-          TYPE_CODE (type0) == TYPE_CODE (type1)
-          && (equiv_types (type0, type1)
-              || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
-                  && startswith (name1 + len0, "___XV")));
+	struct type *type0 = sym0->type ();
+	struct type *type1 = sym1->type ();
+	const char *name0 = sym0->linkage_name ();
+	const char *name1 = sym1->linkage_name ();
+	int len0 = strlen (name0);
+
+	return
+	  type0->code () == type1->code ()
+	  && (equiv_types (type0, type1)
+	      || (len0 < strlen (name1) && strncmp (name0, name1, len0) == 0
+		  && startswith (name1 + len0, "___XV")));
       }
     case LOC_CONST:
-      return SYMBOL_VALUE (sym0) == SYMBOL_VALUE (sym1)
-        && equiv_types (SYMBOL_TYPE (sym0), SYMBOL_TYPE (sym1));
+      return sym0->value_longest () == sym1->value_longest ()
+	&& equiv_types (sym0->type (), sym1->type ());
 
     case LOC_STATIC:
       {
-        const char *name0 = sym0->linkage_name ();
-        const char *name1 = sym1->linkage_name ();
-        return (strcmp (name0, name1) == 0
-                && SYMBOL_VALUE_ADDRESS (sym0) == SYMBOL_VALUE_ADDRESS (sym1));
+	const char *name0 = sym0->linkage_name ();
+	const char *name1 = sym1->linkage_name ();
+	return (strcmp (name0, name1) == 0
+		&& sym0->value_address () == sym1->value_address ());
       }
 
     default:
@@ -4859,17 +4849,14 @@ lesseq_defined_than (struct symbol *sym0
     }
 }
 
-/* Append (SYM,BLOCK,SYMTAB) to the end of the array of struct block_symbol
-   records in OBSTACKP.  Do nothing if SYM is a duplicate.  */
+/* Append (SYM,BLOCK) to the end of the array of struct block_symbol
+   records in RESULT.  Do nothing if SYM is a duplicate.  */
 
 static void
-add_defn_to_vec (struct obstack *obstackp,
-                 struct symbol *sym,
-                 const struct block *block)
+add_defn_to_vec (std::vector<struct block_symbol> &result,
+		 struct symbol *sym,
+		 const struct block *block)
 {
-  int i;
-  struct block_symbol *prevDefns = defns_collected (obstackp, 0);
-
   /* Do not try to complete stub types, as the debugger is probably
      already scanning all symbols matching a certain name at the
      time when this function is called.  Trying to replace the stub
@@ -4879,46 +4866,22 @@ add_defn_to_vec (struct obstack *obstack
      matches, with at least one of them complete.  It can then filter
      out the stub ones if needed.  */
 
-  for (i = num_defns_collected (obstackp) - 1; i >= 0; i -= 1)
+  for (int i = result.size () - 1; i >= 0; i -= 1)
     {
-      if (lesseq_defined_than (sym, prevDefns[i].symbol))
-        return;
-      else if (lesseq_defined_than (prevDefns[i].symbol, sym))
-        {
-          prevDefns[i].symbol = sym;
-          prevDefns[i].block = block;
-          return;
-        }
+      if (lesseq_defined_than (sym, result[i].symbol))
+	return;
+      else if (lesseq_defined_than (result[i].symbol, sym))
+	{
+	  result[i].symbol = sym;
+	  result[i].block = block;
+	  return;
+	}
     }
 
-  {
-    struct block_symbol info;
-
-    info.symbol = sym;
-    info.block = block;
-    obstack_grow (obstackp, &info, sizeof (struct block_symbol));
-  }
-}
-
-/* Number of block_symbol structures currently collected in current vector in
-   OBSTACKP.  */
-
-static int
-num_defns_collected (struct obstack *obstackp)
-{
-  return obstack_object_size (obstackp) / sizeof (struct block_symbol);
-}
-
-/* Vector of block_symbol structures currently collected in current vector in
-   OBSTACKP.  If FINISH, close off the vector and return its final address.  */
-
-static struct block_symbol *
-defns_collected (struct obstack *obstackp, int finish)
-{
-  if (finish)
-    return (struct block_symbol *) obstack_finish (obstackp);
-  else
-    return (struct block_symbol *) obstack_base (obstackp);
+  struct block_symbol info;
+  info.symbol = sym;
+  info.block = block;
+  result.push_back (info);
 }
 
 /* Return a bound minimal symbol matching NAME according to Ada
@@ -4927,12 +4890,10 @@ defns_collected (struct obstack *obstack
    specially: "standard__" is first stripped off, and only static and
    global symbols are searched.  */
 
-struct bound_minimal_symbol
-ada_lookup_simple_minsym (const char *name)
+bound_minimal_symbol
+ada_lookup_simple_minsym (const char *name, struct objfile *objfile)
 {
-  struct bound_minimal_symbol result;
-
-  memset (&result, 0, sizeof (result));
+  bound_minimal_symbol result;
 
   symbol_name_match_type match_type = name_match_type_from_name (name);
   lookup_name_info lookup_name (name, match_type);
@@ -4940,34 +4901,24 @@ ada_lookup_simple_minsym (const char *na
   symbol_name_matcher_ftype *match_name
     = ada_get_symbol_name_matcher (lookup_name);
 
-  for (objfile *objfile : current_program_space->objfiles ())
-    {
-      for (minimal_symbol *msymbol : objfile->msymbols ())
-	{
-	  if (match_name (msymbol->linkage_name (), lookup_name, NULL)
-	      && MSYMBOL_TYPE (msymbol) != mst_solib_trampoline)
-	    {
-	      result.minsym = msymbol;
-	      result.objfile = objfile;
-	      break;
-	    }
-	}
-    }
-
-  return result;
-}
+  current_program_space->iterate_over_objfiles_in_search_order
+    ([&result, lookup_name, match_name] (struct objfile *obj)
+       {
+	 for (minimal_symbol *msymbol : obj->msymbols ())
+	   {
+	     if (match_name (msymbol->linkage_name (), lookup_name, nullptr)
+		 && msymbol->type () != mst_solib_trampoline)
+	       {
+		 result.minsym = msymbol;
+		 result.objfile = obj;
+		 return 1;
+	       }
+	   }
 
-/* For all subprograms that statically enclose the subprogram of the
-   selected frame, add symbols matching identifier NAME in DOMAIN
-   and their blocks to the list of data in OBSTACKP, as for
-   ada_add_block_symbols (q.v.).   If WILD_MATCH_P, treat as NAME
-   with a wildcard prefix.  */
+	 return 0;
+       }, objfile);
 
-static void
-add_symbols_from_enclosing_procs (struct obstack *obstackp,
-				  const lookup_name_info &lookup_name,
-				  domain_enum domain)
-{
+  return result;
 }
 
 /* True if TYPE is definitely an artificial type supplied to a symbol
@@ -4981,47 +4932,44 @@ is_nondebugging_type (struct type *type)
   return (name != NULL && strcmp (name, "<variable, no debug info>") == 0);
 }
 
-/* Return nonzero if TYPE1 and TYPE2 are two enumeration types
+/* Return true if TYPE1 and TYPE2 are two enumeration types
    that are deemed "identical" for practical purposes.
 
    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)).  */
+   types.  */
 
-static int
+static bool
 ada_identical_enum_types_p (struct type *type1, struct type *type2)
 {
-  int i;
-
   /* The heuristic we use here is fairly conservative.  We consider
      that 2 enumerate types are identical if they have the same
      number of enumerals and that all enumerals have the same
      underlying value and name.  */
 
+  if (type1->num_fields () != type2->num_fields ())
+    return false;
+
   /* All enums in the type should have an identical underlying value.  */
-  for (i = 0; i < TYPE_NFIELDS (type1); i++)
-    if (TYPE_FIELD_ENUMVAL (type1, i) != TYPE_FIELD_ENUMVAL (type2, i))
-      return 0;
+  for (int i = 0; i < type1->num_fields (); i++)
+    if (type1->field (i).loc_enumval () != type2->field (i).loc_enumval ())
+      return false;
 
   /* All enumerals should also have the same name (modulo any numerical
      suffix).  */
-  for (i = 0; i < TYPE_NFIELDS (type1); i++)
+  for (int 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);
+      const char *name_1 = ada_unqualify_enum_name (type1->field (i).name ());
+      const char *name_2 = ada_unqualify_enum_name (type2->field (i).name ());
       int len_1 = strlen (name_1);
       int len_2 = strlen (name_2);
 
-      ada_remove_trailing_digits (TYPE_FIELD_NAME (type1, i), &len_1);
-      ada_remove_trailing_digits (TYPE_FIELD_NAME (type2, i), &len_2);
-      if (len_1 != len_2
-          || strncmp (TYPE_FIELD_NAME (type1, i),
-		      TYPE_FIELD_NAME (type2, i),
-		      len_1) != 0)
-	return 0;
+      ada_remove_trailing_digits (name_1, &len_1);
+      ada_remove_trailing_digits (name_2, &len_2);
+      if (len_1 != len_2 || strncmp (name_1, name_2, len_1) != 0)
+	return false;
     }
 
-  return 1;
+  return true;
 }
 
 /* Return nonzero if all the symbols in SYMS are all enumeral symbols
@@ -5058,26 +5006,20 @@ 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 (syms[i].symbol->type ()->code () != TYPE_CODE_ENUM)
       return 0;
 
   /* Quick check: They should all have the same value.  */
   for (i = 1; i < syms.size (); i++)
-    if (SYMBOL_VALUE (syms[i].symbol) != SYMBOL_VALUE (syms[0].symbol))
-      return 0;
-
-  /* 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 (syms[i].symbol->value_longest () != syms[0].symbol->value_longest ())
       return 0;
 
   /* All the sanity checks passed, so we might have a set of
      identical enumeration types.  Perform a more complete
      comparison of the type of each symbol.  */
   for (i = 1; i < syms.size (); i++)
-    if (!ada_identical_enum_types_p (SYMBOL_TYPE (syms[i].symbol),
-                                     SYMBOL_TYPE (syms[0].symbol)))
+    if (!ada_identical_enum_types_p (syms[i].symbol->type (),
+				     syms[0].symbol->type ()))
       return 0;
 
   return 1;
@@ -5087,85 +5029,81 @@ symbols_are_identical_enums (const std::
    duplicate other symbols in the list (The only case I know of where
    this happens is when object files containing stabs-in-ecoff are
    linked with files containing ordinary ecoff debugging symbols (or no
-   debugging symbols)).  Modifies SYMS to squeeze out deleted entries.
-   Returns the number of items in the modified list.  */
+   debugging symbols)).  Modifies SYMS to squeeze out deleted entries.  */
 
-static int
-remove_extra_symbols (std::vector<struct block_symbol> *syms)
+static void
+remove_extra_symbols (std::vector<struct block_symbol> &syms)
 {
   int i, j;
 
   /* We should never be called with less than 2 symbols, as there
      cannot be any extra symbol in that case.  But it's easy to
      handle, since we have nothing to do in that case.  */
-  if (syms->size () < 2)
-    return syms->size ();
+  if (syms.size () < 2)
+    return;
 
   i = 0;
-  while (i < syms->size ())
+  while (i < syms.size ())
     {
-      int remove_p = 0;
+      bool remove_p = false;
 
       /* If two symbols have the same name and one of them is a stub type,
-         the get rid of the stub.  */
+	 the get rid of the stub.  */
 
-      if (TYPE_STUB (SYMBOL_TYPE ((*syms)[i].symbol))
-          && (*syms)[i].symbol->linkage_name () != NULL)
-        {
-          for (j = 0; j < syms->size (); j++)
-            {
-              if (j != i
-                  && !TYPE_STUB (SYMBOL_TYPE ((*syms)[j].symbol))
-                  && (*syms)[j].symbol->linkage_name () != NULL
-                  && strcmp ((*syms)[i].symbol->linkage_name (),
-                             (*syms)[j].symbol->linkage_name ()) == 0)
-                remove_p = 1;
-            }
-        }
+      if (syms[i].symbol->type ()->is_stub ()
+	  && syms[i].symbol->linkage_name () != NULL)
+	{
+	  for (j = 0; !remove_p && j < syms.size (); j++)
+	    {
+	      if (j != i
+		  && !syms[j].symbol->type ()->is_stub ()
+		  && syms[j].symbol->linkage_name () != NULL
+		  && strcmp (syms[i].symbol->linkage_name (),
+			     syms[j].symbol->linkage_name ()) == 0)
+		remove_p = true;
+	    }
+	}
 
       /* Two symbols with the same name, same class and same address
-         should be identical.  */
+	 should be identical.  */
 
-      else if ((*syms)[i].symbol->linkage_name () != NULL
-          && SYMBOL_CLASS ((*syms)[i].symbol) == LOC_STATIC
-          && is_nondebugging_type (SYMBOL_TYPE ((*syms)[i].symbol)))
-        {
-          for (j = 0; j < syms->size (); j += 1)
-            {
-              if (i != j
-                  && (*syms)[j].symbol->linkage_name () != NULL
-                  && strcmp ((*syms)[i].symbol->linkage_name (),
-                             (*syms)[j].symbol->linkage_name ()) == 0
-                  && SYMBOL_CLASS ((*syms)[i].symbol)
-		       == SYMBOL_CLASS ((*syms)[j].symbol)
-                  && SYMBOL_VALUE_ADDRESS ((*syms)[i].symbol)
-                  == SYMBOL_VALUE_ADDRESS ((*syms)[j].symbol))
-                remove_p = 1;
-            }
-        }
+      else if (syms[i].symbol->linkage_name () != NULL
+	  && syms[i].symbol->loc_class () == LOC_STATIC
+	  && is_nondebugging_type (syms[i].symbol->type ()))
+	{
+	  for (j = 0; !remove_p && j < syms.size (); j += 1)
+	    {
+	      if (i != j
+		  && syms[j].symbol->linkage_name () != NULL
+		  && strcmp (syms[i].symbol->linkage_name (),
+			     syms[j].symbol->linkage_name ()) == 0
+		  && (syms[i].symbol->loc_class ()
+		      == syms[j].symbol->loc_class ())
+		  && syms[i].symbol->value_address ()
+		  == syms[j].symbol->value_address ())
+		remove_p = true;
+	    }
+	}
       
-      if (remove_p)
-	syms->erase (syms->begin () + i);
-
-      i += 1;
-    }
-
-  /* If all the remaining symbols are identical enumerals, then
-     just keep the first one and discard the rest.
+      /* Two functions with the same block are identical.  */
 
-     Unlike what we did previously, we do not discard any entry
-     unless they are ALL identical.  This is because the symbol
-     comparison is not a strict comparison, but rather a practical
-     comparison.  If all symbols are considered identical, then
-     we can just go ahead and use the first one and discard the rest.
-     But if we cannot reduce the list to a single element, we have
-     to ask the user to disambiguate anyways.  And if we have to
-     present a multiple-choice menu, it's less confusing if the list
-     isn't missing some choices that were identical and yet distinct.  */
-  if (symbols_are_identical_enums (*syms))
-    syms->resize (1);
+      else if (syms[i].symbol->loc_class () == LOC_BLOCK)
+	{
+	  for (j = 0; !remove_p && j < syms.size (); j += 1)
+	    {
+	      if (i != j
+		  && syms[j].symbol->loc_class () == LOC_BLOCK
+		  && (syms[i].symbol->value_block ()
+		      == syms[j].symbol->value_block ()))
+		remove_p = true;
+	    }
+	}
 
-  return syms->size ();
+      if (remove_p)
+	syms.erase (syms.begin () + i);
+      else
+	i += 1;
+    }
 }
 
 /* Given a type that corresponds to a renaming entity, use the type name
@@ -5181,7 +5119,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;
 
@@ -5209,7 +5147,7 @@ is_package_name (const char *name)
 
   /* If it is a function that has not been defined at library level,
      then we should be able to look it up in the symbols.  */
-  if (standard_lookup (name, NULL, VAR_DOMAIN) != NULL)
+  if (standard_lookup (name, NULL, SEARCH_VFT) != NULL)
     return 0;
 
   /* Library-level function names start with "_ada_".  See if function
@@ -5222,7 +5160,7 @@ is_package_name (const char *name)
 
   std::string fun_name = string_printf ("_ada_%s", name);
 
-  return (standard_lookup (fun_name.c_str (), NULL, VAR_DOMAIN) == NULL);
+  return (standard_lookup (fun_name.c_str (), NULL, SEARCH_VFT) == NULL);
 }
 
 /* Return nonzero if SYM corresponds to a renaming entity that is
@@ -5231,10 +5169,10 @@ is_package_name (const char *name)
 static int
 old_renaming_is_invisible (const struct symbol *sym, const char *function_name)
 {
-  if (SYMBOL_CLASS (sym) != LOC_TYPEDEF)
+  if (sym->loc_class () != LOC_TYPEDEF)
     return 0;
 
-  std::string scope = xget_renaming_scope (SYMBOL_TYPE (sym));
+  std::string scope = xget_renaming_scope (sym->type ());
 
   /* If the rename has been defined in a package, then it is visible.  */
   if (is_package_name (scope.c_str ()))
@@ -5257,8 +5195,8 @@ old_renaming_is_invisible (const struct
    is not visible from the function associated with CURRENT_BLOCK or
    that is superfluous due to the presence of more specific renaming
    information.  Places surviving symbols in the initial entries of
-   SYMS and returns the number of surviving symbols.
-   
+   SYMS.
+
    Rationale:
    First, in cases where an object renaming is implemented as a
    reference variable, GNAT may produce both the actual reference
@@ -5280,17 +5218,17 @@ old_renaming_is_invisible (const struct
    below has a couple of limitations (FIXME: brobecker-2003-05-12):  
    
       - When the user tries to print a rename in a function while there
-        is another rename entity defined in a package:  Normally, the
-        rename in the function has precedence over the rename in the
-        package, so the latter should be removed from the list.  This is
-        currently not the case.
-        
+	is another rename entity defined in a package:  Normally, the
+	rename in the function has precedence over the rename in the
+	package, so the latter should be removed from the list.  This is
+	currently not the case.
+	
       - This function will incorrectly remove valid renames if
-        the CURRENT_BLOCK corresponds to a function which symbol name
-        has been changed by an "Export" pragma.  As a consequence,
-        the user will be unable to print such rename entities.  */
+	the CURRENT_BLOCK corresponds to a function which symbol name
+	has been changed by an "Export" pragma.  As a consequence,
+	the user will be unable to print such rename entities.  */
 
-static int
+static void
 remove_irrelevant_renamings (std::vector<struct block_symbol> *syms,
 			     const struct block *current_block)
 {
@@ -5310,7 +5248,7 @@ remove_irrelevant_renamings (std::vector
       const char *name;
       const char *suffix;
 
-      if (sym == NULL || SYMBOL_CLASS (sym) == LOC_TYPEDEF)
+      if (sym == NULL || sym->loc_class () == LOC_TYPEDEF)
 	continue;
       name = sym->linkage_name ();
       suffix = strstr (name, "___XR");
@@ -5339,22 +5277,23 @@ remove_irrelevant_renamings (std::vector
 	      (*syms)[k] = (*syms)[j];
 	      k += 1;
 	    }
-      return k;
+      syms->resize (k);
+      return;
     }
 
   /* Extract the function name associated to CURRENT_BLOCK.
      Abort if unable to do so.  */
 
   if (current_block == NULL)
-    return syms->size ();
+    return;
 
-  current_function = block_linkage_function (current_block);
+  current_function = current_block->linkage_function ();
   if (current_function == NULL)
-    return syms->size ();
+    return;
 
   current_function_name = current_function->linkage_name ();
   if (current_function_name == NULL)
-    return syms->size ();
+    return;
 
   /* Check each of the symbols, and remove it from the list if it is
      a type corresponding to a renaming that is out of the scope of
@@ -5364,101 +5303,84 @@ remove_irrelevant_renamings (std::vector
   while (i < syms->size ())
     {
       if (ada_parse_renaming ((*syms)[i].symbol, NULL, NULL, NULL)
-          == ADA_OBJECT_RENAMING
-          && old_renaming_is_invisible ((*syms)[i].symbol,
+	  == ADA_OBJECT_RENAMING
+	  && old_renaming_is_invisible ((*syms)[i].symbol,
 					current_function_name))
 	syms->erase (syms->begin () + i);
       else
-        i += 1;
+	i += 1;
     }
-
-  return syms->size ();
 }
 
-/* Add to OBSTACKP all symbols from BLOCK (and its super-blocks)
-   whose name and domain match NAME and DOMAIN respectively.
-   If no match was found, then extend the search to "enclosing"
-   routines (in other words, if we're inside a nested function,
-   search the symbols defined inside the enclosing functions).
-   If WILD_MATCH_P is nonzero, perform the naming matching in
-   "wild" mode (see function "wild_match" for more info).
+/* Add to RESULT all symbols from BLOCK (and its super-blocks)
+   whose name and domain match LOOKUP_NAME and DOMAIN respectively.
 
-   Note: This function assumes that OBSTACKP has 0 (zero) element in it.  */
+   Note: This function assumes that RESULT is empty.  */
 
 static void
-ada_add_local_symbols (struct obstack *obstackp,
+ada_add_local_symbols (std::vector<struct block_symbol> &result,
 		       const lookup_name_info &lookup_name,
-		       const struct block *block, domain_enum domain)
+		       const struct block *block, domain_search_flags domain)
 {
-  int block_depth = 0;
-
   while (block != NULL)
     {
-      block_depth += 1;
-      ada_add_block_symbols (obstackp, block, lookup_name, domain, NULL);
+      ada_add_block_symbols (result, block, lookup_name, domain, NULL);
 
-      /* If we found a non-function match, assume that's the one.  */
-      if (is_nonfunction (defns_collected (obstackp, 0),
-                          num_defns_collected (obstackp)))
-        return;
+      /* If we found a non-function match, assume that's the one.  We
+	 only check this when finding a function boundary, so that we
+	 can accumulate all results from intervening blocks first.  */
+      if (block->function () != nullptr && is_nonfunction (result))
+	return;
 
-      block = BLOCK_SUPERBLOCK (block);
+      block = block->superblock ();
     }
-
-  /* If no luck so far, try to find NAME as a local symbol in some lexically
-     enclosing subprogram.  */
-  if (num_defns_collected (obstackp) == 0 && block_depth > 2)
-    add_symbols_from_enclosing_procs (obstackp, lookup_name, domain);
 }
 
-/* An object of this type is used as the user_data argument when
+/* An object of this type is used as the callback argument when
    calling the map_matching_symbols method.  */
 
 struct match_data
 {
-  struct objfile *objfile;
-  struct obstack *obstackp;
-  struct symbol *arg_sym;
-  int found_sym;
+  explicit match_data (std::vector<struct block_symbol> *rp)
+    : resultp (rp)
+  {
+  }
+  DISABLE_COPY_AND_ASSIGN (match_data);
+
+  bool operator() (struct block_symbol *bsym);
+
+  struct objfile *objfile = nullptr;
+  std::vector<struct block_symbol> *resultp;
+  struct symbol *arg_sym = nullptr;
+  bool found_sym = false;
 };
 
-/* A callback for add_nonlocal_symbols that adds symbol, found in BSYM,
-   to a list of symbols.  DATA is a pointer to a struct match_data *
-   containing the obstack that collects the symbol list, the file that SYM
-   must come from, a flag indicating whether a non-argument symbol has
-   been found in the current block, and the last argument symbol
-   passed in SYM within the current block (if any).  When SYM is null,
-   marking the end of a block, the argument symbol is added if no
-   other has been found.  */
+/* A callback for add_nonlocal_symbols that adds symbol, found in
+   BSYM, to a list of symbols.  */
 
-static bool
-aux_add_nonlocal_symbols (struct block_symbol *bsym,
-			  struct match_data *data)
+bool
+match_data::operator() (struct block_symbol *bsym)
 {
   const struct block *block = bsym->block;
   struct symbol *sym = bsym->symbol;
 
   if (sym == NULL)
     {
-      if (!data->found_sym && data->arg_sym != NULL) 
-	add_defn_to_vec (data->obstackp,
-			 fixup_symbol_section (data->arg_sym, data->objfile),
-			 block);
-      data->found_sym = 0;
-      data->arg_sym = NULL;
+      if (!found_sym && arg_sym != NULL)
+	add_defn_to_vec (*resultp, arg_sym, block);
+      found_sym = false;
+      arg_sym = NULL;
     }
   else 
     {
-      if (SYMBOL_CLASS (sym) == LOC_UNRESOLVED)
+      if (sym->loc_class () == LOC_UNRESOLVED)
 	return true;
-      else if (SYMBOL_IS_ARGUMENT (sym))
-	data->arg_sym = sym;
+      else if (sym->is_argument ())
+	arg_sym = sym;
       else
 	{
-	  data->found_sym = 1;
-	  add_defn_to_vec (data->obstackp,
-			   fixup_symbol_section (sym, data->objfile),
-			   block);
+	  found_sym = true;
+	  add_defn_to_vec (*resultp, sym, block);
 	}
     }
   return true;
@@ -5466,144 +5388,67 @@ aux_add_nonlocal_symbols (struct block_s
 
 /* Helper for add_nonlocal_symbols.  Find symbols in DOMAIN which are
    targeted by renamings matching LOOKUP_NAME in BLOCK.  Add these
-   symbols to OBSTACKP.  Return whether we found such symbols.  */
+   symbols to RESULT.  Return whether we found such symbols.  */
 
 static int
-ada_add_block_renamings (struct obstack *obstackp,
+ada_add_block_renamings (std::vector<struct block_symbol> &result,
 			 const struct block *block,
 			 const lookup_name_info &lookup_name,
-			 domain_enum domain)
+			 domain_search_flags domain)
 {
-  struct using_direct *renaming;
-  int defns_mark = num_defns_collected (obstackp);
+  int defns_mark = result.size ();
 
   symbol_name_matcher_ftype *name_match
     = ada_get_symbol_name_matcher (lookup_name);
 
-  for (renaming = block_using (block);
-       renaming != NULL;
-       renaming = renaming->next)
+  for (using_direct *renaming : block->get_using ())
     {
       const char *r_name;
 
       /* Avoid infinite recursions: skip this renaming if we are actually
-	 already traversing it.
-
-	 Currently, symbol lookup in Ada don't use the namespace machinery from
-	 C++/Fortran support: skip namespace imports that use them.  */
-      if (renaming->searched
-	  || (renaming->import_src != NULL
-	      && renaming->import_src[0] != '\0')
-	  || (renaming->import_dest != NULL
-	      && renaming->import_dest[0] != '\0'))
+	 already traversing it.  */
+      if (renaming->searched)
 	continue;
-      renaming->searched = 1;
 
       /* TODO: here, we perform another name-based symbol lookup, which can
 	 pull its own multiple overloads.  In theory, we should be able to do
 	 better in this case since, in DWARF, DW_AT_import is a DIE reference,
 	 not a simple name.  But in order to do this, we would need to enhance
 	 the DWARF reader to associate a symbol to this renaming, instead of a
-	 name.  So, for now, we do something simpler: re-use the C++/Fortran
+	 name.  So, for now, we do something simpler: reuse the C++/Fortran
 	 namespace machinery.  */
       r_name = (renaming->alias != NULL
 		? renaming->alias
 		: renaming->declaration);
-      if (name_match (r_name, lookup_name, NULL))
-	{
-	  lookup_name_info decl_lookup_name (renaming->declaration,
-					     lookup_name.match_type ());
-	  ada_add_all_symbols (obstackp, block, decl_lookup_name, domain,
-			       1, NULL);
-	}
-      renaming->searched = 0;
-    }
-  return num_defns_collected (obstackp) != defns_mark;
-}
-
-/* Implements compare_names, but only applying the comparision using
-   the given CASING.  */
-
-static int
-compare_names_with_case (const char *string1, const char *string2,
-			 enum case_sensitivity casing)
-{
-  while (*string1 != '\0' && *string2 != '\0')
-    {
-      char c1, c2;
-
-      if (isspace (*string1) || isspace (*string2))
-	return strcmp_iw_ordered (string1, string2);
+      if (r_name == nullptr)
+	continue;
 
-      if (casing == case_sensitive_off)
+      scoped_restore reset_searched
+	= make_scoped_restore (&renaming->searched, 1);
+      std::string storage;
+      if (renaming->import_src != nullptr && renaming->import_src[0] != '\0')
 	{
-	  c1 = tolower (*string1);
-	  c2 = tolower (*string2);
+	  storage = std::string (renaming->import_src) + "__" + r_name;
+	  r_name = storage.c_str ();
 	}
-      else
-	{
-	  c1 = *string1;
-	  c2 = *string2;
-	}
-      if (c1 != c2)
-	break;
 
-      string1 += 1;
-      string2 += 1;
-    }
-
-  switch (*string1)
-    {
-    case '(':
-      return strcmp_iw_ordered (string1, string2);
-    case '_':
-      if (*string2 == '\0')
-	{
-	  if (is_name_suffix (string1))
-	    return 0;
-	  else
-	    return 1;
-	}
-      /* FALLTHROUGH */
-    default:
-      if (*string2 == '(')
-	return strcmp_iw_ordered (string1, string2);
-      else
+      if (name_match (r_name, lookup_name, NULL))
 	{
-	  if (casing == case_sensitive_off)
-	    return tolower (*string1) - tolower (*string2);
-	  else
-	    return *string1 - *string2;
+	  r_name = renaming->declaration;
+	  if (renaming->import_dest != nullptr
+	      && renaming->import_dest[0] != '\0')
+	    {
+	      storage = std::string (renaming->import_dest) + "__" + r_name;
+	      r_name = storage.c_str ();
+	    }
+
+	  lookup_name_info decl_lookup_name (r_name,
+					     lookup_name.match_type ());
+	  ada_add_all_symbols (result, block, decl_lookup_name, domain,
+			       1, NULL);
 	}
     }
-}
-
-/* Compare STRING1 to STRING2, with results as for strcmp.
-   Compatible with strcmp_iw_ordered in that...
-
-       strcmp_iw_ordered (STRING1, STRING2) <= 0
-
-   ... implies...
-
-       compare_names (STRING1, STRING2) <= 0
-
-   (they may differ as to what symbols compare equal).  */
-
-static int
-compare_names (const char *string1, const char *string2)
-{
-  int result;
-
-  /* Similar to what strcmp_iw_ordered does, we need to perform
-     a case-insensitive comparison first, and only resort to
-     a second, case-sensitive, comparison if the first one was
-     not sufficient to differentiate the two strings.  */
-
-  result = compare_names_with_case (string1, string2, case_sensitive_off);
-  if (result == 0)
-    result = compare_names_with_case (string1, string2, case_sensitive_on);
-
-  return result;
+  return result.size () != defns_mark;
 }
 
 /* Convenience function to get at the Ada encoded lookup name for
@@ -5615,67 +5460,79 @@ ada_lookup_name (const lookup_name_info
   return lookup_name.ada ().lookup_name ().c_str ();
 }
 
-/* Add to OBSTACKP all non-local symbols whose name and domain match
+/* A helper for add_nonlocal_symbols.  Expand all necessary symtabs
+   for OBJFILE, then walk the objfile's symtabs and update the
+   results.  */
+
+static void
+map_matching_symbols (struct objfile *objfile,
+		      const lookup_name_info &lookup_name,
+		      domain_search_flags domain,
+		      int global,
+		      match_data &data)
+{
+  data.objfile = objfile;
+  objfile->expand_symtabs_matching (nullptr, &lookup_name,
+				    nullptr, nullptr,
+				    global
+				    ? SEARCH_GLOBAL_BLOCK
+				    : SEARCH_STATIC_BLOCK,
+				    domain);
+
+  const int block_kind = global ? GLOBAL_BLOCK : STATIC_BLOCK;
+  for (compunit_symtab *symtab : objfile->compunits ())
+    {
+      const struct block *block
+	= symtab->blockvector ()->block (block_kind);
+      if (!iterate_over_symbols_terminated (block, lookup_name,
+					    domain, data))
+	break;
+    }
+}
+
+/* Add to RESULT all non-local symbols whose name and domain match
    LOOKUP_NAME and DOMAIN respectively.  The search is performed on
    GLOBAL_BLOCK symbols if GLOBAL is non-zero, or on STATIC_BLOCK
    symbols otherwise.  */
 
 static void
-add_nonlocal_symbols (struct obstack *obstackp,
+add_nonlocal_symbols (std::vector<struct block_symbol> &result,
 		      const lookup_name_info &lookup_name,
-		      domain_enum domain, int global)
+		      domain_search_flags domain, int global)
 {
-  struct match_data data;
-
-  memset (&data, 0, sizeof data);
-  data.obstackp = obstackp;
+  struct match_data data (&result);
 
   bool is_wild_match = lookup_name.ada ().wild_match_p ();
 
-  auto callback = [&] (struct block_symbol *bsym)
-    {
-      return aux_add_nonlocal_symbols (bsym, &data);
-    };
-
   for (objfile *objfile : current_program_space->objfiles ())
     {
-      data.objfile = objfile;
-
-      objfile->sf->qf->map_matching_symbols (objfile, lookup_name,
-					     domain, global, callback,
-					     (is_wild_match
-					      ? NULL : compare_names));
+      map_matching_symbols (objfile, lookup_name, domain, global, data);
 
       for (compunit_symtab *cu : objfile->compunits ())
 	{
 	  const struct block *global_block
-	    = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cu), GLOBAL_BLOCK);
+	    = cu->blockvector ()->global_block ();
 
-	  if (ada_add_block_renamings (obstackp, global_block, lookup_name,
+	  if (ada_add_block_renamings (result, global_block, lookup_name,
 				       domain))
-	    data.found_sym = 1;
+	    data.found_sym = true;
 	}
     }
 
-  if (num_defns_collected (obstackp) == 0 && global && !is_wild_match)
+  if (result.empty () && 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 ())
-        {
-	  data.objfile = objfile;
-	  objfile->sf->qf->map_matching_symbols (objfile, name1,
-						 domain, global, callback,
-						 compare_names);
-	}
-    }      	
+	map_matching_symbols (objfile, name1, domain, global, data);
+    }
 }
 
 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if
    FULL_SEARCH is non-zero, enclosing scope and in global scopes,
-   returning the number of matches.  Add these to OBSTACKP.
+   returning the number of matches.  Add these to RESULT.
 
    When FULL_SEARCH is non-zero, any non-function/non-enumeral
    symbol match within the nest of blocks whose innermost member is BLOCK,
@@ -5691,10 +5548,10 @@ add_nonlocal_symbols (struct obstack *ob
    to lookup global symbols.  */
 
 static void
-ada_add_all_symbols (struct obstack *obstackp,
+ada_add_all_symbols (std::vector<struct block_symbol> &result,
 		     const struct block *block,
 		     const lookup_name_info &lookup_name,
-		     domain_enum domain,
+		     domain_search_flags domain,
 		     int full_search,
 		     int *made_global_lookup_p)
 {
@@ -5718,15 +5575,15 @@ ada_add_all_symbols (struct obstack *obs
   if (block != NULL)
     {
       if (full_search)
-	ada_add_local_symbols (obstackp, lookup_name, block, domain);
+	ada_add_local_symbols (result, lookup_name, block, domain);
       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);
+	  ada_add_block_symbols (result, block, lookup_name, domain, NULL);
 	}
-      if (num_defns_collected (obstackp) > 0 || !full_search)
+      if (!result.empty () || !full_search)
 	return;
     }
 
@@ -5738,7 +5595,7 @@ ada_add_all_symbols (struct obstack *obs
 			    domain, &sym, &block))
     {
       if (sym != NULL)
-	add_defn_to_vec (obstackp, sym, block);
+	add_defn_to_vec (result, sym, block);
       return;
     }
 
@@ -5747,21 +5604,20 @@ ada_add_all_symbols (struct obstack *obs
 
   /* Search symbols from all global blocks.  */
  
-  add_nonlocal_symbols (obstackp, lookup_name, domain, 1);
+  add_nonlocal_symbols (result, lookup_name, domain, 1);
 
   /* Now add symbols from all per-file blocks if we've gotten no hits
      (not strictly correct, but perhaps better than an error).  */
 
-  if (num_defns_collected (obstackp) == 0)
-    add_nonlocal_symbols (obstackp, lookup_name, domain, 0);
+  if (result.empty ())
+    add_nonlocal_symbols (result, lookup_name, domain, 0);
 }
 
 /* Find symbols in DOMAIN matching LOOKUP_NAME, in BLOCK and, if FULL_SEARCH
-   is non-zero, enclosing scope and in global scopes, returning the number of
-   matches.
-   Fills *RESULTS with (SYM,BLOCK) tuples, indicating the symbols
-   found and the blocks and symbol tables (if any) in which they were
-   found.
+   is non-zero, enclosing scope and in global scopes.
+
+   Returns (SYM,BLOCK) tuples, indicating the symbols found and the
+   blocks and symbol tables (if any) in which they were found.
 
    When full_search is non-zero, any non-function/non-enumeral
    symbol match within the nest of blocks whose innermost member is BLOCK,
@@ -5772,90 +5628,53 @@ ada_add_all_symbols (struct obstack *obs
    Names prefixed with "standard__" are handled specially: "standard__"
    is first stripped off, and only static and global symbols are searched.  */
 
-static int
+static std::vector<struct block_symbol>
 ada_lookup_symbol_list_worker (const lookup_name_info &lookup_name,
 			       const struct block *block,
-			       domain_enum domain,
-			       std::vector<struct block_symbol> *results,
+			       domain_search_flags domain,
 			       int full_search)
 {
   int syms_from_global_search;
-  int ndefns;
-  auto_obstack obstack;
+  std::vector<struct block_symbol> results;
 
-  ada_add_all_symbols (&obstack, block, lookup_name,
+  ada_add_all_symbols (results, block, lookup_name,
 		       domain, full_search, &syms_from_global_search);
 
-  ndefns = num_defns_collected (&obstack);
-
-  struct block_symbol *base = defns_collected (&obstack, 1);
-  for (int i = 0; i < ndefns; ++i)
-    results->push_back (base[i]);
+  remove_extra_symbols (results);
 
-  ndefns = remove_extra_symbols (results);
-
-  if (ndefns == 0 && full_search && syms_from_global_search)
+  if (results.empty () && full_search && syms_from_global_search)
     cache_symbol (ada_lookup_name (lookup_name), domain, NULL, NULL);
 
-  if (ndefns == 1 && full_search && syms_from_global_search)
+  if (results.size () == 1 && full_search && syms_from_global_search)
     cache_symbol (ada_lookup_name (lookup_name), domain,
-		  (*results)[0].symbol, (*results)[0].block);
-
-  ndefns = remove_irrelevant_renamings (results, block);
+		  results[0].symbol, results[0].block);
 
-  return ndefns;
+  remove_irrelevant_renamings (&results, block);
+  return results;
 }
 
 /* Find symbols in DOMAIN matching NAME, in BLOCK and enclosing scope and
-   in global scopes, returning the number of matches, and filling *RESULTS
-   with (SYM,BLOCK) tuples.
+   in global scopes, returning (SYM,BLOCK) tuples.
 
    See ada_lookup_symbol_list_worker for further details.  */
 
-int
+std::vector<struct block_symbol>
 ada_lookup_symbol_list (const char *name, const struct block *block,
-			domain_enum domain,
-			std::vector<struct block_symbol> *results)
+			domain_search_flags domain)
 {
   symbol_name_match_type name_match_type = name_match_type_from_name (name);
   lookup_name_info lookup_name (name, name_match_type);
 
-  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;
+  return ada_lookup_symbol_list_worker (lookup_name, block, domain, 1);
 }
 
 /* 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.
-
-   The result is stored in *INFO, which must be non-NULL.
-   If no match is found, INFO->SYM is set to NULL.  */
+   choices.  */
 
-void
+block_symbol
 ada_lookup_encoded_symbol (const char *name, const struct block *block,
-			   domain_enum domain,
-			   struct block_symbol *info)
+			   domain_search_flags domain)
 {
   /* Since we already have an encoded name, wrap it in '<>' to force a
      verbatim match.  Otherwise, if the name happens to not look like
@@ -5863,10 +5682,8 @@ ada_lookup_encoded_symbol (const char *n
      ada_lookup_name_info would re-encode/fold it again, and that
      would e.g., incorrectly lowercase object renaming names like
      "R28b" -> "r28b".  */
-  std::string verbatim = std::string ("<") + name + '>';
-
-  gdb_assert (info != NULL);
-  *info = ada_lookup_symbol (verbatim.c_str (), block, domain);
+  std::string verbatim = add_angle_brackets (name);
+  return ada_lookup_symbol (verbatim.c_str (), block, domain);
 }
 
 /* Return a symbol in DOMAIN matching NAME, in BLOCK0 and enclosing
@@ -5876,59 +5693,15 @@ ada_lookup_encoded_symbol (const char *n
 
 struct block_symbol
 ada_lookup_symbol (const char *name, const struct block *block0,
-                   domain_enum domain)
+		   domain_search_flags domain)
 {
-  std::vector<struct block_symbol> candidates;
-  int n_candidates;
-
-  n_candidates = ada_lookup_symbol_list (name, block0, domain, &candidates);
+  std::vector<struct block_symbol> candidates
+    = ada_lookup_symbol_list (name, block0, domain);
 
-  if (n_candidates == 0)
+  if (candidates.empty ())
     return {};
 
-  block_symbol info = candidates[0];
-  info.symbol = fixup_symbol_section (info.symbol, NULL);
-  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 {};
+  return candidates[0];
 }
 
 
@@ -5960,7 +5733,7 @@ is_name_suffix (const char *str)
     {
       str += 3;
       while (isdigit (str[0]))
-        str += 1;
+	str += 1;
     }
   
   /* [.$][0-9]+ */
@@ -5969,9 +5742,9 @@ is_name_suffix (const char *str)
     {
       matching = str + 1;
       while (isdigit (matching[0]))
-        matching += 1;
+	matching += 1;
       if (matching[0] == '\0')
-        return 1;
+	return 1;
     }
 
   /* ___[0-9]+ */
@@ -5980,9 +5753,9 @@ is_name_suffix (const char *str)
     {
       matching = str + 3;
       while (isdigit (matching[0]))
-        matching += 1;
+	matching += 1;
       if (matching[0] == '\0')
-        return 1;
+	return 1;
     }
 
   /* "TKB" suffixes are used for subprograms implementing task bodies.  */
@@ -6012,26 +5785,26 @@ is_name_suffix (const char *str)
     {
       matching = str + 3;
       while (isdigit (matching[0]))
-        matching += 1;
+	matching += 1;
       if ((matching[0] == 'b' || matching[0] == 's')
-          && matching [1] == '\0')
-        return 1;
+	  && matching [1] == '\0')
+	return 1;
     }
 
   /* ??? We should not modify STR directly, as we are doing below.  This
      is fine in this case, but may become problematic later if we find
      that this alternative did not work, and want to try matching
-     another one from the begining of STR.  Since we modified it, we
-     won't be able to find the begining of the string anymore!  */
+     another one from the beginning of STR.  Since we modified it, we
+     won't be able to find the beginning of the string anymore!  */
   if (str[0] == 'X')
     {
       str += 1;
       while (str[0] != '_' && str[0] != '\0')
-        {
-          if (str[0] != 'n' && str[0] != 'b')
-            return 0;
-          str += 1;
-        }
+	{
+	  if (str[0] != 'n' && str[0] != 'b')
+	    return 0;
+	  str += 1;
+	}
     }
 
   if (str[0] == '\000')
@@ -6040,39 +5813,39 @@ is_name_suffix (const char *str)
   if (str[0] == '_')
     {
       if (str[1] != '_' || str[2] == '\000')
-        return 0;
+	return 0;
       if (str[2] == '_')
-        {
-          if (strcmp (str + 3, "JM") == 0)
-            return 1;
-          /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
-             the LJM suffix in favor of the JM one.  But we will
-             still accept LJM as a valid suffix for a reasonable
-             amount of time, just to allow ourselves to debug programs
-             compiled using an older version of GNAT.  */
-          if (strcmp (str + 3, "LJM") == 0)
-            return 1;
-          if (str[3] != 'X')
-            return 0;
-          if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
-              || str[4] == 'U' || str[4] == 'P')
-            return 1;
-          if (str[4] == 'R' && str[5] != 'T')
-            return 1;
-          return 0;
-        }
+	{
+	  if (strcmp (str + 3, "JM") == 0)
+	    return 1;
+	  /* FIXME: brobecker/2004-09-30: GNAT will soon stop using
+	     the LJM suffix in favor of the JM one.  But we will
+	     still accept LJM as a valid suffix for a reasonable
+	     amount of time, just to allow ourselves to debug programs
+	     compiled using an older version of GNAT.  */
+	  if (strcmp (str + 3, "LJM") == 0)
+	    return 1;
+	  if (str[3] != 'X')
+	    return 0;
+	  if (str[4] == 'F' || str[4] == 'D' || str[4] == 'B'
+	      || str[4] == 'U' || str[4] == 'P')
+	    return 1;
+	  if (str[4] == 'R' && str[5] != 'T')
+	    return 1;
+	  return 0;
+	}
       if (!isdigit (str[2]))
-        return 0;
+	return 0;
       for (k = 3; str[k] != '\0'; k += 1)
-        if (!isdigit (str[k]) && str[k] != '_')
-          return 0;
+	if (!isdigit (str[k]) && str[k] != '_')
+	  return 0;
       return 1;
     }
   if (str[0] == '$' && isdigit (str[1]))
     {
       for (k = 2; str[k] != '\0'; k += 1)
-        if (!isdigit (str[k]) && str[k] != '_')
-          return 0;
+	if (!isdigit (str[k]) && str[k] != '_')
+	  return 0;
       return 1;
     }
   return 0;
@@ -6100,18 +5873,18 @@ is_valid_name_for_wild_match (const char
   return 1;
 }
 
-/* Advance *NAMEP to next occurrence of TARGET0 in the string NAME0
-   that could start a simple name.  Assumes that *NAMEP points into
-   the string beginning at NAME0.  */
+/* Advance *NAMEP to next occurrence in the string NAME0 of the TARGET0
+   character which could start a simple name.  Assumes that *NAMEP points
+   somewhere inside the string beginning at NAME0.  */
 
 static int
-advance_wild_match (const char **namep, const char *name0, int target0)
+advance_wild_match (const char **namep, const char *name0, char target0)
 {
   const char *name = *namep;
 
   while (1)
     {
-      int t0, t1;
+      char t0, t1;
 
       t0 = *name;
       if (t0 == '_')
@@ -6131,6 +5904,13 @@ advance_wild_match (const char **namep,
 	      name += 2;
 	      break;
 	    }
+	  else if (t1 == '_' && name[2] == 'B' && name[3] == '_')
+	    {
+	      /* Names like "pkg__B_N__name", where N is a number, are
+		 block-local.  We can handle these by simply skipping
+		 the "B_" here.  */
+	      name += 4;
+	    }
 	  else
 	    return 0;
 	}
@@ -6155,6 +5935,9 @@ wild_match (const char *name, const char
   const char *p;
   const char *name0 = name;
 
+  if (startswith (name, "___ghost_"))
+    name += 9;
+
   while (1)
     {
       const char *match = name;
@@ -6175,64 +5958,34 @@ wild_match (const char *name, const char
     }
 }
 
-/* Returns true iff symbol name SYM_NAME matches SEARCH_NAME, ignoring
-   any trailing suffixes that encode debugging information or leading
-   _ada_ on SYM_NAME (see is_name_suffix commentary for the debugging
-   information that is ignored).  */
-
-static bool
-full_match (const char *sym_name, const char *search_name)
-{
-  size_t search_name_len = strlen (search_name);
-
-  if (strncmp (sym_name, search_name, search_name_len) == 0
-      && is_name_suffix (sym_name + search_name_len))
-    return true;
-
-  if (startswith (sym_name, "_ada_")
-      && strncmp (sym_name + 5, search_name, search_name_len) == 0
-      && is_name_suffix (sym_name + search_name_len + 5))
-    return true;
-
-  return false;
-}
-
-/* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to vector
-   *defn_symbols, updating the list of symbols in OBSTACKP (if
+/* Add symbols from BLOCK matching LOOKUP_NAME in DOMAIN to RESULT (if
    necessary).  OBJFILE is the section containing BLOCK.  */
 
 static void
-ada_add_block_symbols (struct obstack *obstackp,
+ada_add_block_symbols (std::vector<struct block_symbol> &result,
 		       const struct block *block,
 		       const lookup_name_info &lookup_name,
-		       domain_enum domain, struct objfile *objfile)
+		       domain_search_flags domain, struct objfile *objfile)
 {
-  struct block_iterator iter;
   /* A matching argument symbol, if any.  */
   struct symbol *arg_sym;
   /* Set true when we find a matching non-argument symbol.  */
-  int found_sym;
-  struct symbol *sym;
+  bool found_sym;
 
   arg_sym = NULL;
-  found_sym = 0;
-  for (sym = block_iter_match_first (block, lookup_name, &iter);
-       sym != NULL;
-       sym = block_iter_match_next (lookup_name, &iter))
+  found_sym = false;
+  for (struct symbol *sym : block_iterator_range (block, &lookup_name))
     {
-      if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-				 SYMBOL_DOMAIN (sym), domain))
+      if (sym->matches (domain))
 	{
-	  if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
+	  if (sym->loc_class () != LOC_UNRESOLVED)
 	    {
-	      if (SYMBOL_IS_ARGUMENT (sym))
+	      if (sym->is_argument ())
 		arg_sym = sym;
 	      else
 		{
-		  found_sym = 1;
-		  add_defn_to_vec (obstackp,
-				   fixup_symbol_section (sym, objfile),
-				   block);
+		  found_sym = true;
+		  add_defn_to_vec (result, sym, block);
 		}
 	    }
 	}
@@ -6240,72 +5993,65 @@ ada_add_block_symbols (struct obstack *o
 
   /* Handle renamings.  */
 
-  if (ada_add_block_renamings (obstackp, block, lookup_name, domain))
-    found_sym = 1;
+  if (ada_add_block_renamings (result, block, lookup_name, domain))
+    found_sym = true;
 
   if (!found_sym && arg_sym != NULL)
     {
-      add_defn_to_vec (obstackp,
-                       fixup_symbol_section (arg_sym, objfile),
-                       block);
+      add_defn_to_vec (result, arg_sym, block);
     }
 
   if (!lookup_name.ada ().wild_match_p ())
     {
       arg_sym = NULL;
-      found_sym = 0;
+      found_sym = false;
       const std::string &ada_lookup_name = lookup_name.ada ().lookup_name ();
       const char *name = ada_lookup_name.c_str ();
       size_t name_len = ada_lookup_name.size ();
 
-      ALL_BLOCK_SYMBOLS (block, iter, sym)
+      for (struct symbol *sym : block_iterator_range (block))
       {
-        if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-                                   SYMBOL_DOMAIN (sym), domain))
-          {
-            int cmp;
-
-            cmp = (int) '_' - (int) sym->linkage_name ()[0];
-            if (cmp == 0)
-              {
-                cmp = !startswith (sym->linkage_name (), "_ada_");
-                if (cmp == 0)
-                  cmp = strncmp (name, sym->linkage_name () + 5,
-                                 name_len);
-              }
-
-            if (cmp == 0
-                && is_name_suffix (sym->linkage_name () + name_len + 5))
-              {
-		if (SYMBOL_CLASS (sym) != LOC_UNRESOLVED)
+	if (sym->matches (domain))
+	  {
+	    int cmp;
+
+	    cmp = (int) '_' - (int) sym->linkage_name ()[0];
+	    if (cmp == 0)
+	      {
+		cmp = !startswith (sym->linkage_name (), "_ada_");
+		if (cmp == 0)
+		  cmp = strncmp (name, sym->linkage_name () + 5,
+				 name_len);
+	      }
+
+	    if (cmp == 0
+		&& is_name_suffix (sym->linkage_name () + name_len + 5))
+	      {
+		if (sym->loc_class () != LOC_UNRESOLVED)
 		  {
-		    if (SYMBOL_IS_ARGUMENT (sym))
+		    if (sym->is_argument ())
 		      arg_sym = sym;
 		    else
 		      {
-			found_sym = 1;
-			add_defn_to_vec (obstackp,
-					 fixup_symbol_section (sym, objfile),
-					 block);
+			found_sym = true;
+			add_defn_to_vec (result, sym, block);
 		      }
 		  }
-              }
-          }
+	      }
+	  }
       }
 
       /* NOTE: This really shouldn't be needed for _ada_ symbols.
-         They aren't parameters, right?  */
+	 They aren't parameters, right?  */
       if (!found_sym && arg_sym != NULL)
-        {
-          add_defn_to_vec (obstackp,
-                           fixup_symbol_section (arg_sym, objfile),
-                           block);
-        }
+	{
+	  add_defn_to_vec (result, arg_sym, block);
+	}
     }
 }
 
 
-                                /* Symbol Completion */
+				/* Symbol Completion */
 
 /* See symtab.h.  */
 
@@ -6328,9 +6074,9 @@ ada_lookup_name_info::matches
   if (match && !m_encoded_p)
     {
       /* One needed check before declaring a positive match is to verify
-         that iff we are doing a verbatim match, the decoded version
-         of the symbol name starts with '<'.  Otherwise, this symbol name
-         is not a suitable completion.  */
+	 that iff we are doing a verbatim match, the decoded version
+	 of the symbol name starts with '<'.  Otherwise, this symbol name
+	 is not a suitable completion.  */
 
       bool has_angle_bracket = (decoded_name[0] == '<');
       match = (has_angle_bracket == m_verbatim_p);
@@ -6339,10 +6085,10 @@ ada_lookup_name_info::matches
   if (match && !m_verbatim_p)
     {
       /* When doing non-verbatim match, another check that needs to
-         be done is to verify that the potentially matching symbol name
-         does not include capital letters, because the ada-mode would
-         not be able to understand these symbol names without the
-         angle bracket notation.  */
+	 be done is to verify that the potentially matching symbol name
+	 does not include capital letters, because the ada-mode would
+	 not be able to understand these symbol names without the
+	 angle bracket notation.  */
       const char *tmp;
 
       for (tmp = sym_name; *tmp != '\0' && !isupper (*tmp); tmp++);
@@ -6355,8 +6101,8 @@ ada_lookup_name_info::matches
   if (!match && m_wild_match_p)
     {
       /* Since we are doing wild matching, this means that TEXT
-         may represent an unqualified symbol name.  We therefore must
-         also compare TEXT against the unqualified name of the symbol.  */
+	 may represent an unqualified symbol name.  We therefore must
+	 also compare TEXT against the unqualified name of the symbol.  */
       sym_name = ada_unqualified_name (decoded_name.c_str ());
 
       if (strncmp (sym_name, text, text_len) == 0)
@@ -6389,135 +6135,7 @@ 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 */
+				/* Field Access */
 
 /* Return non-zero if TYPE is a pointer to the GNAT dispatch table used
    for tagged types.  */
@@ -6527,10 +6145,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 ()->name ();
   if (name == NULL)
     return 0;
 
@@ -6542,7 +6160,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,12 +6174,12 @@ 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.  */
   {
-    const char *name = TYPE_FIELD_NAME (type, field_num);
+    const char *name = type->field (field_num).name ();
 
     /* Anonymous field names should not be printed.
        brobecker/2007-02-20: I don't think this can actually happen
@@ -6578,13 +6196,25 @@ ada_is_ignored_field (struct type *type,
        should not be ignored either.  */
     if (name[0] == '_' && !startswith (name, "_parent"))
       return 1;
+
+    /* The compiler doesn't document this, but sometimes it emits
+       a field whose name starts with a capital letter, like 'V148s'.
+       These aren't marked as artificial in any way, but we know they
+       should be ignored.  However, wrapper fields should not be
+       ignored.  */
+    if (name[0] == 'S' || name[0] == 'R' || name[0] == 'O')
+      {
+	/* Wrapper field.  */
+      }
+    else if (isupper (name[0]))
+      return 1;
   }
 
   /* 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,14 +6237,14 @@ 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
     {
-      const char *name = ada_type_name (TYPE_TARGET_TYPE (type));
+      const char *name = ada_type_name (type->target_type ());
 
       return (name != NULL
-              && strcmp (name, "ada__tags__dispatch_table") == 0);
+	      && strcmp (name, "ada__tags__dispatch_table") == 0);
     }
 }
 
@@ -6623,7 +6253,7 @@ ada_is_tag_type (struct type *type)
 static struct type *
 ada_tag_type (struct value *val)
 {
-  return ada_lookup_struct_elt_type (value_type (val), "_tag", 1, 0);
+  return ada_lookup_struct_elt_type (val->type (), "_tag", 1, 0);
 }
 
 /* Return 1 if TAG follows the old scheme for Ada tags (used for Ada 95,
@@ -6650,13 +6280,17 @@ ada_value_tag (struct value *val)
 static struct value *
 value_tag_from_contents_and_address (struct type *type,
 				     const gdb_byte *valaddr,
-                                     CORE_ADDR address)
+				     CORE_ADDR address)
 {
   int tag_byte_offset;
   struct type *tag_type;
 
-  if (find_struct_field ("_tag", type, 0, &tag_type, &tag_byte_offset,
-                         NULL, NULL, NULL))
+  gdb::array_view<const gdb_byte> contents;
+  if (valaddr != nullptr)
+    contents = gdb::make_array_view (valaddr, type->length ());
+  struct type *resolved_type = resolve_dynamic_type (type, contents, address);
+  if (find_struct_field ("_tag", resolved_type, 0, &tag_type, &tag_byte_offset,
+			 NULL, NULL, NULL))
     {
       const gdb_byte *valaddr1 = ((valaddr == NULL)
 				  ? NULL
@@ -6671,10 +6305,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 ()).c_str ());
   return NULL;
 }
 
@@ -6693,12 +6327,11 @@ ada_tag_value_at_base_address (struct va
   struct value *tag;
   CORE_ADDR base_address;
 
-  obj_type = value_type (obj);
+  obj_type = obj->type ();
 
-  /* It is the responsability of the caller to deref pointers.  */
+  /* It is the responsibility 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);
@@ -6710,9 +6343,11 @@ ada_tag_value_at_base_address (struct va
   if (is_ada95_tag (tag))
     return obj;
 
-  ptr_type = language_lookup_primitive_type
-    (language_def (language_ada), target_gdbarch(), "storage_offset");
-  ptr_type = lookup_pointer_type (ptr_type);
+  struct type *offset_type
+    = language_lookup_primitive_type (language_def (language_ada),
+				      current_inferior ()->arch (),
+				      "storage_offset");
+  ptr_type = lookup_pointer_type (offset_type);
   val = value_cast (ptr_type, tag);
   if (!val)
     return obj;
@@ -6744,18 +6379,31 @@ ada_tag_value_at_base_address (struct va
   if (offset_to_top == -1)
     return obj;
 
-  /* OFFSET_TO_TOP used to be a positive value to be subtracted
-     from the base address.  This was however incompatible with
-     C++ dispatch table: C++ uses a *negative* value to *add*
-     to the base address.  Ada's convention has therefore been
-     changed in GNAT 19.0w 20171023: since then, C++ and Ada
-     use the same convention.  Here, we support both cases by
-     checking the sign of OFFSET_TO_TOP.  */
+  /* Storage_Offset'Last is used to indicate that a dynamic offset to
+     top is used.  In this situation the offset is stored just after
+     the tag, in the object itself.  */
+  ULONGEST last = (((ULONGEST) 1) << (8 * offset_type->length () - 1)) - 1;
+  if (offset_to_top == last)
+    {
+      struct value *tem = value_addr (tag);
+      tem = value_ptradd (tem, 1);
+      tem = value_cast (ptr_type, tem);
+      offset_to_top = value_as_long (value_ind (tem));
+    }
 
   if (offset_to_top > 0)
-    offset_to_top = -offset_to_top;
+    {
+      /* OFFSET_TO_TOP used to be a positive value to be subtracted
+	 from the base address.  This was however incompatible with
+	 C++ dispatch table: C++ uses a *negative* value to *add*
+	 to the base address.  Ada's convention has therefore been
+	 changed in GNAT 19.0w 20171023: since then, C++ and Ada
+	 use the same convention.  Here, we support both cases by
+	 checking the sign of OFFSET_TO_TOP.  */
+      offset_to_top = -offset_to_top;
+    }
 
-  base_address = value_address (obj) + offset_to_top;
+  base_address = obj->address () + offset_to_top;
   tag = value_tag_from_contents_and_address (obj_type, NULL, base_address);
 
   /* Make sure that we have a proper tag at the new address.
@@ -6781,7 +6429,9 @@ ada_get_tsd_type (struct inferior *inf)
   struct ada_inferior_data *data = get_ada_inferior_data (inf);
 
   if (data->tsd_type == 0)
-    data->tsd_type = ada_find_any_type ("ada__tags__type_specific_data");
+    data->tsd_type
+      = lookup_transparent_type ("<ada__tags__type_specific_data>",
+				 SEARCH_TYPE_DOMAIN);
   return data->tsd_type;
 }
 
@@ -6823,39 +6473,47 @@ 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;
+
+  try
+    {
+      /* Let this throw an exception on error.  If the data is
+	 uninitialized, we'd rather not have the user see a
+	 warning.  */
+      const char *folded = ada_fold_name (buffer.get (), true);
+      return make_unique_xstrdup (folded);
+    }
+  catch (const gdb_exception &)
+    {
+      return nullptr;
+    }
 }
 
 /* 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)))
+  if (!ada_is_tag_type (tag->type ()))
     return NULL;
 
   /* It is perfectly possible that an exception be raised while trying
@@ -6890,21 +6548,21 @@ 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)
-          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);
+	/* If the _parent field is a pointer, then dereference it.  */
+	if (parent_type->code () == TYPE_CODE_PTR)
+	  parent_type = parent_type->target_type ();
+	/* If there is a parallel XVS type, get the actual base type.  */
+	parent_type = ada_get_base_type (parent_type);
 
-        return ada_check_typedef (parent_type);
+	return ada_check_typedef (parent_type);
       }
 
   return NULL;
@@ -6917,11 +6575,11 @@ ada_parent_type (struct type *type)
 int
 ada_is_parent_field (struct type *type, int field_num)
 {
-  const char *name = TYPE_FIELD_NAME (ada_check_typedef (type), field_num);
+  const char *name = ada_check_typedef (type)->field (field_num).name ();
 
   return (name != NULL
-          && (startswith (name, "PARENT")
-              || startswith (name, "_parent")));
+	  && (startswith (name, "PARENT")
+	      || startswith (name, "_parent")));
 }
 
 /* True iff field number FIELD_NUM of structure type TYPE is a
@@ -6933,7 +6591,7 @@ ada_is_parent_field (struct type *type,
 int
 ada_is_wrapper_field (struct type *type, int field_num)
 {
-  const char *name = TYPE_FIELD_NAME (type, field_num);
+  const char *name = type->field (field_num).name ();
 
   if (name != NULL && strcmp (name, "RETVAL") == 0)
     {
@@ -6947,10 +6605,10 @@ ada_is_wrapper_field (struct type *type,
     }
 
   return (name != NULL
-          && (startswith (name, "PARENT")
-              || strcmp (name, "REP") == 0
-              || startswith (name, "_parent")
-              || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
+	  && (startswith (name, "PARENT")
+	      || strcmp (name, "REP") == 0
+	      || startswith (name, "_parent")
+	      || name[0] == 'S' || name[0] == 'R' || name[0] == 'O'));
 }
 
 /* True iff field number FIELD_NUM of structure or union type TYPE
@@ -6964,11 +6622,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)
+	      && (field_type->target_type ()->code ()
 		  == TYPE_CODE_UNION)));
 }
 
@@ -6992,7 +6650,7 @@ ada_variant_discrim_type (struct type *v
 static int
 ada_is_others_clause (struct type *type, int field_num)
 {
-  const char *name = TYPE_FIELD_NAME (type, field_num);
+  const char *name = type->field (field_num).name ();
 
   return (name != NULL && name[0] == 'O');
 }
@@ -7004,15 +6662,14 @@ ada_is_others_clause (struct type *type,
 const char *
 ada_variant_discrim_name (struct type *type0)
 {
-  static char *result = NULL;
-  static size_t result_len = 0;
+  static std::string result;
   struct type *type;
   const char *name;
   const char *discrim_end;
   const char *discrim_start;
 
-  if (TYPE_CODE (type0) == TYPE_CODE_PTR)
-    type = TYPE_TARGET_TYPE (type0);
+  if (type0->code () == TYPE_CODE_PTR)
+    type = type0->target_type ();
   else
     type = type0;
 
@@ -7021,11 +6678,13 @@ ada_variant_discrim_name (struct type *t
   if (name == NULL || name[0] == '\000')
     return "";
 
-  for (discrim_end = name + strlen (name) - 6; discrim_end != name;
-       discrim_end -= 1)
+  size_t len = strlen (name);
+  if (len < 6)
+    return "";
+  for (discrim_end = name + len - 6; discrim_end != name; discrim_end -= 1)
     {
       if (startswith (discrim_end, "___XVN"))
-        break;
+	break;
     }
   if (discrim_end == name)
     return "";
@@ -7034,17 +6693,15 @@ ada_variant_discrim_name (struct type *t
        discrim_start -= 1)
     {
       if (discrim_start == name + 1)
-        return "";
+	return "";
       if ((discrim_start > name + 3
-           && startswith (discrim_start - 3, "___"))
-          || discrim_start[-1] == '.')
-        break;
+	   && startswith (discrim_start - 3, "___"))
+	  || discrim_start[-1] == '.')
+	break;
     }
 
-  GROW_VECT (result, result_len, discrim_end - discrim_start + 1);
-  strncpy (result, discrim_start, discrim_end - discrim_start);
-  result[discrim_end - discrim_start] = '\0';
-  return result;
+  result = std::string (discrim_start, discrim_end - discrim_start);
+  return result.c_str ();
 }
 
 /* Scan STR for a subtype-encoded number, beginning at position K.
@@ -7076,7 +6733,7 @@ ada_scan_number (const char str[], int k
   if (str[k] == 'm')
     {
       if (R != NULL)
-        *R = (-(LONGEST) (RU - 1)) - 1;
+	*R = (-(LONGEST) (RU - 1)) - 1;
       k += 1;
     }
   else if (R != NULL)
@@ -7100,42 +6757,42 @@ ada_scan_number (const char str[], int k
 static int
 ada_in_variant (LONGEST val, struct type *type, int field_num)
 {
-  const char *name = TYPE_FIELD_NAME (type, field_num);
+  const char *name = type->field (field_num).name ();
   int p;
 
   p = 0;
   while (1)
     {
       switch (name[p])
-        {
-        case '\0':
-          return 0;
-        case 'S':
-          {
-            LONGEST W;
-
-            if (!ada_scan_number (name, p + 1, &W, &p))
-              return 0;
-            if (val == W)
-              return 1;
-            break;
-          }
-        case 'R':
-          {
-            LONGEST L, U;
-
-            if (!ada_scan_number (name, p + 1, &L, &p)
-                || name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
-              return 0;
-            if (val >= L && val <= U)
-              return 1;
-            break;
-          }
-        case 'O':
-          return 1;
-        default:
-          return 0;
-        }
+	{
+	case '\0':
+	  return 0;
+	case 'S':
+	  {
+	    LONGEST W;
+
+	    if (!ada_scan_number (name, p + 1, &W, &p))
+	      return 0;
+	    if (val == W)
+	      return 1;
+	    break;
+	  }
+	case 'R':
+	  {
+	    LONGEST L, U;
+
+	    if (!ada_scan_number (name, p + 1, &L, &p)
+		|| name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
+	      return 0;
+	    if (val >= L && val <= U)
+	      return 1;
+	    break;
+	  }
+	case 'O':
+	  return 1;
+	default:
+	  return 0;
+	}
     }
 }
 
@@ -7146,29 +6803,30 @@ 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 *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
      packed; in this case we must take the bit-field path.  */
-  if (TYPE_FIELD_BITSIZE (arg_type, fieldno) != 0 || value_bitpos (arg1) != 0)
+  if (arg_type->field (fieldno).bitsize () != 0 || arg1->bitpos () != 0)
     {
-      int bit_pos = TYPE_FIELD_BITPOS (arg_type, fieldno);
-      int bit_size = TYPE_FIELD_BITSIZE (arg_type, fieldno);
+      int bit_pos = arg_type->field (fieldno).loc_bitpos ();
+      int bit_size = arg_type->field (fieldno).bitsize ();
 
-      return ada_value_primitive_packed_val (arg1, value_contents (arg1),
-                                             offset + bit_pos / 8,
-                                             bit_pos % 8, bit_size, type);
+      return ada_value_primitive_packed_val (arg1,
+					     arg1->contents ().data (),
+					     offset + bit_pos / 8,
+					     bit_pos % 8, bit_size, type);
     }
   else
-    return value_primitive_field (arg1, offset, fieldno, arg_type);
+    return arg1->primitive_field (offset, fieldno, arg_type);
 }
 
 /* Find field with name NAME in object of type TYPE.  If found, 
@@ -7188,21 +6846,21 @@ ada_value_primitive_field (struct value
    has some components with the same name, like in this scenario:
 
       type Top_T is tagged record
-         N : Integer := 1;
-         U : Integer := 974;
-         A : Integer := 48;
+	 N : Integer := 1;
+	 U : Integer := 974;
+	 A : Integer := 48;
       end record;
 
       type Middle_T is new Top.Top_T with record
-         N : Character := 'a';
-         C : Integer := 3;
+	 N : Character := 'a';
+	 C : Integer := 3;
       end record;
 
      type Bottom_T is new Middle.Middle_T with record
-        N : Float := 4.0;
-        C : Character := '5';
-        X : Integer := 6;
-        A : Character := 'J';
+	N : Float := 4.0;
+	C : Character := '5';
+	X : Integer := 6;
+	A : Character := 'J';
      end record;
 
    Let's say we now have a variable declared and initialized as follow:
@@ -7238,8 +6896,8 @@ ada_value_primitive_field (struct value
 
 static int
 find_struct_field (const char *name, struct type *type, int offset,
-                   struct type **field_type_p,
-                   int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
+		   struct type **field_type_p,
+		   int *byte_offset_p, int *bit_offset_p, int *bit_size_p,
 		   int *index_p)
 {
   int i;
@@ -7256,17 +6914,25 @@ 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;
-      const char *t_field_name = TYPE_FIELD_NAME (type, i);
+      /* These can't be computed using TYPE_FIELD_BITPOS for a dynamic
+	 type.  However, we only need the values to be correct when
+	 the caller asks for them.  */
+      int bit_pos = 0, fld_offset = 0;
+      if (byte_offset_p != nullptr || bit_offset_p != nullptr)
+	{
+	  bit_pos = type->field (i).loc_bitpos ();
+	  fld_offset = offset + bit_pos / 8;
+	}
+
+      const char *t_field_name = type->field (i).name ();
 
       if (t_field_name == NULL)
-        continue;
+	continue;
 
       else if (ada_is_parent_field (type, i))
-        {
+	{
 	  /* This is a field pointing us to the parent type of a tagged
 	     type.  As hinted in this function's documentation, we give
 	     preference to fields in the current record first, so what
@@ -7275,49 +6941,49 @@ find_struct_field (const char *name, str
 	     in the current record, then we'll get back to it and search
 	     inside it whether the field might exist in the parent.  */
 
-          parent_offset = i;
-          continue;
-        }
+	  parent_offset = i;
+	  continue;
+	}
 
       else if (name != NULL && field_name_match (t_field_name, name))
-        {
-          int bit_size = TYPE_FIELD_BITSIZE (type, i);
+	{
+	  int bit_size = type->field (i).bitsize ();
 
 	  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)
 	    *bit_offset_p = bit_pos % 8;
 	  if (bit_size_p != NULL)
 	    *bit_size_p = bit_size;
-          return 1;
-        }
+	  return 1;
+	}
       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;
-        }
+	    return 1;
+	}
       else if (ada_is_variant_part (type, i))
-        {
+	{
 	  /* PNH: Wait.  Do we ever execute this section, or is ARG always of 
 	     fixed type?? */
-          int j;
-          struct type *field_type
-	    = ada_check_typedef (TYPE_FIELD_TYPE (type, i));
-
-          for (j = 0; j < TYPE_NFIELDS (field_type); j += 1)
-            {
-              if (find_struct_field (name, TYPE_FIELD_TYPE (field_type, j),
-                                     fld_offset
-                                     + TYPE_FIELD_BITPOS (field_type, j) / 8,
-                                     field_type_p, byte_offset_p,
-                                     bit_offset_p, bit_size_p, index_p))
-                return 1;
-            }
-        }
+	  int j;
+	  struct type *field_type
+	    = ada_check_typedef (type->field (i).type ());
+
+	  for (j = 0; j < field_type->num_fields (); j += 1)
+	    {
+	      if (find_struct_field (name, field_type->field (j).type (),
+				     fld_offset
+				     + field_type->field (j).loc_bitpos () / 8,
+				     field_type_p, byte_offset_p,
+				     bit_offset_p, bit_size_p, index_p))
+		return 1;
+	    }
+	}
       else if (index_p != NULL)
 	*index_p += 1;
     }
@@ -7327,13 +6993,18 @@ find_struct_field (const char *name, str
 
   if (parent_offset != -1)
     {
-      int bit_pos = TYPE_FIELD_BITPOS (type, parent_offset);
-      int fld_offset = offset + bit_pos / 8;
+      /* As above, only compute the offset when truly needed.  */
+      int fld_offset = offset;
+      if (byte_offset_p != nullptr || bit_offset_p != nullptr)
+	{
+	  int bit_pos = type->field (parent_offset).loc_bitpos ();
+	  fld_offset += bit_pos / 8;
+	}
 
-      if (find_struct_field (name, TYPE_FIELD_TYPE (type, parent_offset),
-                             fld_offset, field_type_p, byte_offset_p,
-                             bit_offset_p, bit_size_p, index_p))
-        return 1;
+      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;
     }
 
   return 0;
@@ -7362,21 +7033,21 @@ num_visible_fields (struct type *type)
 
 static struct value *
 ada_search_struct_field (const char *name, struct value *arg, int offset,
-                         struct type *type)
+			 struct type *type)
 {
   int i;
   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);
+      const char *t_field_name = type->field (i).name ();
 
       if (t_field_name == NULL)
-        continue;
+	continue;
 
       else if (ada_is_parent_field (type, i))
-        {
+	{
 	  /* This is a field pointing us to the parent type of a tagged
 	     type.  As hinted in this function's documentation, we give
 	     preference to fields in the current record first, so what
@@ -7385,44 +7056,42 @@ ada_search_struct_field (const char *nam
 	     in the current record, then we'll get back to it and search
 	     inside it whether the field might exist in the parent.  */
 
-          parent_offset = i;
-          continue;
-        }
+	  parent_offset = i;
+	  continue;
+	}
 
       else if (field_name_match (t_field_name, name))
-        return ada_value_primitive_field (arg, offset, i, type);
+	return ada_value_primitive_field (arg, offset, i, type);
 
       else if (ada_is_wrapper_field (type, i))
-        {
-          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));
-
-          if (v != NULL)
-            return v;
-        }
+	{
+	  struct value *v =     /* Do not let indent join lines here.  */
+	    ada_search_struct_field (name, arg,
+				     offset + type->field (i).loc_bitpos () / 8,
+				     type->field (i).type ());
+
+	  if (v != NULL)
+	    return v;
+	}
 
       else if (ada_is_variant_part (type, i))
-        {
+	{
 	  /* PNH: Do we ever get here?  See find_struct_field.  */
-          int j;
-          struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
-									i));
-          int var_offset = offset + TYPE_FIELD_BITPOS (type, i) / 8;
-
-          for (j = 0; j < TYPE_NFIELDS (field_type); 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));
-
-              if (v != NULL)
-                return v;
-            }
-        }
+	  struct type *field_type = ada_check_typedef (type->field (i).type ());
+	  int var_offset = offset + type->field (i).loc_bitpos () / 8;
+
+	  for (const auto &field : field_type->fields ())
+	    {
+	      struct value *v
+		= (ada_search_struct_field
+		   (name, arg,
+		    var_offset + field.loc_bitpos () / 8,
+		    field.type ()));
+
+	      if (v != NULL)
+		return v;
+	    }
+	}
     }
 
   /* Field not found so far.  If this is a tagged type which
@@ -7431,11 +7100,11 @@ ada_search_struct_field (const char *nam
   if (parent_offset != -1)
     {
       struct value *v = ada_search_struct_field (
-	name, arg, offset + TYPE_FIELD_BITPOS (type, parent_offset) / 8,
-	TYPE_FIELD_TYPE (type, parent_offset));
+	name, arg, offset + type->field (parent_offset).loc_bitpos () / 8,
+	type->field (parent_offset).type ());
 
       if (v != NULL)
-        return v;
+	return v;
     }
 
   return NULL;
@@ -7469,29 +7138,29 @@ 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;
+      if (type->field (i).name () == NULL)
+	continue;
       else if (ada_is_wrapper_field (type, i))
-        {
-          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));
-
-          if (v != NULL)
-            return v;
-        }
+	{
+	  struct value *v =     /* Do not let indent join lines here.  */
+	    ada_index_struct_field_1 (index_p, arg,
+				      offset + type->field (i).loc_bitpos () / 8,
+				      type->field (i).type ());
+
+	  if (v != NULL)
+	    return v;
+	}
 
       else if (ada_is_variant_part (type, i))
-        {
+	{
 	  /* PNH: Do we ever get here?  See ada_search_struct_field,
 	     find_struct_field.  */
 	  error (_("Cannot assign this kind of variant record"));
-        }
+	}
       else if (*index_p == 0)
-        return ada_value_primitive_field (arg, offset, i, type);
+	return ada_value_primitive_field (arg, offset, i, type);
       else
 	*index_p -= 1;
     }
@@ -7507,13 +7176,10 @@ type_as_string (struct type *type)
 
   type_print (type, "", &tmp_stream, -1);
 
-  return std::move (tmp_stream.string ());
+  return tmp_stream.release ();
 }
 
 /* Given a type TYPE, look up the type of the component of type named NAME.
-   If DISPP is non-null, add its byte displacement from the beginning of a
-   structure (pointed to by a value) of type TYPE to *DISPP (does not
-   work for packed fields).
 
    Matches any field whose name has NAME as a prefix, possibly
    followed by "___".
@@ -7532,30 +7198,26 @@ type_as_string (struct type *type)
 
 static struct type *
 ada_lookup_struct_elt_type (struct type *type, const char *name, int refok,
-                            int noerr)
+			    int noerr)
 {
-  int i;
-  int parent_offset = -1;
-
   if (name == NULL)
     goto BadName;
 
   if (refok && type != NULL)
     while (1)
       {
-        type = ada_check_typedef (type);
-        if (TYPE_CODE (type) != TYPE_CODE_PTR
-            && TYPE_CODE (type) != TYPE_CODE_REF)
-          break;
-        type = TYPE_TARGET_TYPE (type);
+	type = ada_check_typedef (type);
+	if (type->code () != TYPE_CODE_PTR && type->code () != TYPE_CODE_REF)
+	  break;
+	type = type->target_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;
+	return NULL;
 
       error (_("Type %s is not a structure or union type"),
 	     type != NULL ? type_as_string (type).c_str () : _("(null)"));
@@ -7563,80 +7225,11 @@ ada_lookup_struct_elt_type (struct type
 
   type = to_static_fixed_type (type);
 
-  for (i = 0; i < TYPE_NFIELDS (type); i += 1)
-    {
-      const char *t_field_name = TYPE_FIELD_NAME (type, i);
-      struct type *t;
-
-      if (t_field_name == NULL)
-        continue;
-
-      else if (ada_is_parent_field (type, i))
-        {
-	  /* This is a field pointing us to the parent type of a tagged
-	     type.  As hinted in this function's documentation, we give
-	     preference to fields in the current record first, so what
-	     we do here is just record the index of this field before
-	     we skip it.  If it turns out we couldn't find our field
-	     in the current record, then we'll get back to it and search
-	     inside it whether the field might exist in the parent.  */
-
-          parent_offset = i;
-          continue;
-        }
-
-      else if (field_name_match (t_field_name, name))
-	return TYPE_FIELD_TYPE (type, i);
-
-      else if (ada_is_wrapper_field (type, i))
-        {
-          t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, i), name,
-                                          0, 1);
-          if (t != NULL)
-	    return t;
-        }
-
-      else if (ada_is_variant_part (type, i))
-        {
-          int j;
-          struct type *field_type = ada_check_typedef (TYPE_FIELD_TYPE (type,
-									i));
-
-          for (j = TYPE_NFIELDS (field_type) - 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
-		 generates these for unchecked variant types.  Revisit
-	         if the compiler changes this practice.  */
-	      const char *v_field_name = TYPE_FIELD_NAME (field_type, j);
-
-	      if (v_field_name != NULL 
-		  && field_name_match (v_field_name, name))
-		t = TYPE_FIELD_TYPE (field_type, j);
-	      else
-		t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (field_type,
-								 j),
-						name, 0, 1);
-
-              if (t != NULL)
-		return t;
-            }
-        }
-
-    }
-
-    /* Field not found so far.  If this is a tagged type which
-       has a parent, try finding that field in the parent now.  */
-
-    if (parent_offset != -1)
-      {
-        struct type *t;
-
-        t = ada_lookup_struct_elt_type (TYPE_FIELD_TYPE (type, parent_offset),
-                                        name, 0, 1);
-        if (t != NULL)
-	  return t;
-      }
+  struct type *result;
+  find_struct_field (name, type, 0, &result, nullptr, nullptr, nullptr,
+		     nullptr);
+  if (result != nullptr)
+    return result;
 
 BadName:
   if (!noerr)
@@ -7665,38 +7258,33 @@ 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;
+	others_clause = i;
       else if (ada_in_variant (discrim_val, var_type, i))
-        return i;
+	return i;
     }
 
   return others_clause;
@@ -7704,7 +7292,7 @@ ada_which_variant_applies (struct type *
 
 
 
-                                /* Dynamic-Sized Records */
+				/* Dynamic-Sized Records */
 
 /* Strategy: The type ostensibly attached to a value with dynamic size
    (i.e., a size that is not statically recorded in the debugging
@@ -7748,7 +7336,7 @@ ada_value_ind (struct value *val0)
 {
   struct value *val = value_ind (val0);
 
-  if (ada_is_tagged_type (value_type (val), 0))
+  if (ada_is_tagged_type (val->type (), 0))
     val = ada_tag_value_at_base_address (val);
 
   return ada_to_fixed_value (val);
@@ -7760,13 +7348,13 @@ 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 (val0->type ()->code () == TYPE_CODE_REF)
     {
       struct value *val = val0;
 
       val = coerce_ref (val);
 
-      if (ada_is_tagged_type (value_type (val), 0))
+      if (ada_is_tagged_type (val->type (), 0))
 	val = ada_tag_value_at_base_address (val);
 
       return ada_to_fixed_value (val);
@@ -7775,21 +7363,12 @@ 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
 field_alignment (struct type *type, int f)
 {
-  const char *name = TYPE_FIELD_NAME (type, f);
+  const char *name = type->field (f).name ();
   int len;
   int align_offset;
 
@@ -7820,14 +7399,8 @@ field_alignment (struct type *type, int
 static struct symbol *
 ada_find_any_type_symbol (const char *name)
 {
-  struct symbol *sym;
-
-  sym = standard_lookup (name, get_selected_block (NULL), VAR_DOMAIN);
-  if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
-    return sym;
-
-  sym = standard_lookup (name, NULL, STRUCT_DOMAIN);
-  return sym;
+  return standard_lookup (name, get_selected_block (nullptr),
+			  SEARCH_TYPE_DOMAIN);
 }
 
 /* Find a type named NAME.  Ignores ambiguity.  This routine will look
@@ -7840,7 +7413,7 @@ ada_find_any_type (const char *name)
   struct symbol *sym = ada_find_any_type_symbol (name);
 
   if (sym != NULL)
-    return SYMBOL_TYPE (sym);
+    return sym->type ();
 
   return NULL;
 }
@@ -7870,21 +7443,21 @@ 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;
   else if (ada_is_array_descriptor_type (type0)
-           && !ada_is_array_descriptor_type (type1))
+	   && !ada_is_array_descriptor_type (type1))
     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 +7474,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
@@ -7926,10 +7499,10 @@ find_parallel_type_by_descriptive_type (
       const char *result_name = ada_type_name (result);
 
       if (result_name == NULL)
-        {
-          warning (_("unexpected null name on descriptive type"));
-          return NULL;
-        }
+	{
+	  warning (_("unexpected null name on descriptive type"));
+	  return NULL;
+	}
 
       /* If the names match, stop.  */
       if (strcmp (result_name, name) == 0)
@@ -8012,7 +7585,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
@@ -8020,9 +7593,9 @@ dynamic_template_type (struct type *type
       int len = strlen (ada_type_name (type));
 
       if (len > 6 && strcmp (ada_type_name (type) + len - 6, "___XVE") == 0)
-        return type;
+	return type;
       else
-        return ada_find_parallel_type (type, "___XVE");
+	return ada_find_parallel_type (type, "___XVE");
     }
 }
 
@@ -8032,10 +7605,10 @@ dynamic_template_type (struct type *type
 static int
 is_dynamic_field (struct type *templ_type, int field_num)
 {
-  const char *name = TYPE_FIELD_NAME (templ_type, field_num);
+  const char *name = templ_type->field (field_num).name ();
 
   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,13 +7620,13 @@ 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;
+	return f;
     }
   return -1;
 }
@@ -8063,14 +7636,12 @@ variant_field_index (struct type *type)
 static struct type *
 empty_record (struct type *templ)
 {
-  struct type *type = alloc_type_copy (templ);
+  struct type *type = type_allocator (templ).new_type ();
 
-  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_LENGTH (type) = 0;
+  type->set_name ("<empty>");
+  type->set_length (0);
   return type;
 }
 
@@ -8078,7 +7649,7 @@ empty_record (struct type *templ)
    the value of type TYPE at VALADDR or ADDRESS (see comments at
    the beginning of this section) VAL according to GNAT conventions.
    DVAL0 should describe the (portion of a) record that contains any
-   necessary discriminants.  It should be NULL if value_type (VAL) is
+   necessary discriminants.  It should be NULL if VAL->type () is
    an outer-level type (i.e., as opposed to a branch of a variant.)  A
    variant field (unless unchecked) is replaced by a particular branch
    of the variant.
@@ -8094,10 +7665,9 @@ empty_record (struct type *templ)
 struct type *
 ada_template_to_fixed_record_type_1 (struct type *type,
 				     const gdb_byte *valaddr,
-                                     CORE_ADDR address, struct value *dval0,
-                                     int keep_dynamic_fields)
+				     CORE_ADDR address, struct value *dval0,
+				     int keep_dynamic_fields)
 {
-  struct value *mark = value_mark ();
   struct value *dval;
   struct type *rtype;
   int nfields, bit_len;
@@ -8106,29 +7676,28 @@ ada_template_to_fixed_record_type_1 (str
   int fld_bit_len;
   int f;
 
+  scoped_value_mark mark;
+
   /* Compute the number of fields in this record type that are going
      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)
-             && !ada_is_variant_part (type, nfields)
-             && !is_dynamic_field (type, nfields))
-        nfields++;
+      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 = type_allocator (type).new_type ();
+  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);
-  TYPE_FIXED_INSTANCE (rtype) = 1;
+  rtype->alloc_fields (nfields);
+  rtype->set_name (ada_type_name (type));
+  rtype->set_is_fixed_instance (true);
 
   off = 0;
   bit_len = 0;
@@ -8136,31 +7705,24 @@ ada_template_to_fixed_record_type_1 (str
 
   for (f = 0; f < nfields; f += 1)
     {
-      off = align_value (off, field_alignment (type, f))
-	+ TYPE_FIELD_BITPOS (type, f);
-      SET_FIELD_BITPOS (TYPE_FIELD (rtype, f), off);
-      TYPE_FIELD_BITSIZE (rtype, f) = 0;
+      off = align_up (off, field_alignment (type, f))
+	+ type->field (f).loc_bitpos ();
+      rtype->field (f).set_loc_bitpos (off);
+      rtype->field (f).set_bitsize (0);
 
       if (ada_is_variant_part (type, f))
-        {
-          variant_field = f;
-          fld_bit_len = 0;
-        }
+	{
+	  variant_field = f;
+	  fld_bit_len = 0;
+	}
       else if (is_dynamic_field (type, f))
-        {
+	{
 	  const gdb_byte *field_valaddr = valaddr;
 	  CORE_ADDR field_address = address;
-	  struct type *field_type =
-	    TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, f));
+	  struct type *field_type = type->field (f).type ()->target_type ();
 
-          if (dval0 == NULL)
+	  if (dval0 == NULL)
 	    {
-	      /* rtype's length is computed based on the run-time
-		 value of discriminants.  If the discriminants are not
-		 initialized, the type size may be completely bogus and
-		 GDB may fail to allocate a value for it.  So check the
-		 size first before creating the value.  */
-	      ada_ensure_varsize_limit (rtype);
 	      /* Using plain value_from_contents_and_address here
 		 causes problems because we will end up trying to
 		 resolve a type that is currently being
@@ -8168,10 +7730,10 @@ ada_template_to_fixed_record_type_1 (str
 	      dval = value_from_contents_and_address_unresolved (rtype,
 								 valaddr,
 								 address);
-	      rtype = value_type (dval);
+	      rtype = dval->type ();
 	    }
-          else
-            dval = dval0;
+	  else
+	    dval = dval0;
 
 	  /* If the type referenced by this field is an aligner type, we need
 	     to unwrap that aligner type, because its size might not be set.
@@ -8180,7 +7742,7 @@ ada_template_to_fixed_record_type_1 (str
 	     that follow this one.  */
 	  if (ada_is_aligner_type (field_type))
 	    {
-	      long field_offset = TYPE_FIELD_BITPOS (field_type, f);
+	      long field_offset = type->field (f).loc_bitpos ();
 
 	      field_valaddr = cond_offset_host (field_valaddr, field_offset);
 	      field_address = cond_offset_target (field_address, field_offset);
@@ -8201,28 +7763,19 @@ ada_template_to_fixed_record_type_1 (str
 	  field_type = ada_get_base_type (field_type);
 	  field_type = ada_to_fixed_type (field_type, field_valaddr,
 					  field_address, dval, 0);
-	  /* If the field size is already larger than the maximum
-	     object size, then the record itself will necessarily
-	     be larger than the maximum object size.  We need to make
-	     this check now, because the size might be so ridiculously
-	     large (due to an uninitialized variable in the inferior)
-	     that it would cause an overflow when adding it to the
-	     record size.  */
-	  ada_ensure_varsize_limit (field_type);
 
-	  TYPE_FIELD_TYPE (rtype, f) = field_type;
-          TYPE_FIELD_NAME (rtype, f) = TYPE_FIELD_NAME (type, f);
+	  rtype->field (f).set_type (field_type);
+	  rtype->field (f).set_name (type->field (f).name ());
 	  /* The multiplication can potentially overflow.  But because
 	     the field length has been size-checked just above, and
 	     assuming that the maximum size is a reasonable value,
 	     an overflow should not happen in practice.  So rather than
 	     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;
-        }
+	  fld_bit_len = rtype->field (f).type ()->length () * TARGET_CHAR_BIT;
+	}
       else
-        {
+	{
 	  /* Note: If this field's type is a typedef, it is important
 	     to preserve the typedef layer.
 
@@ -8233,31 +7786,32 @@ 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);
-          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
+	  rtype->field (f).set_type (type->field (f).type ());
+	  rtype->field (f).set_name (type->field (f).name ());
+	  if (type->field (f).bitsize () > 0)
+	    {
+	      fld_bit_len = type->field (f).bitsize ();
+	      rtype->field (f).set_bitsize (fld_bit_len);
+	    }
+	  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 =
-                TYPE_LENGTH (ada_check_typedef (field_type)) * TARGET_CHAR_BIT;
+	      fld_bit_len =
+		ada_check_typedef (field_type)->length () * TARGET_CHAR_BIT;
 	    }
-        }
+	}
       if (off + fld_bit_len > bit_len)
-        bit_len = off + fld_bit_len;
+	bit_len = off + fld_bit_len;
       off += fld_bit_len;
-      TYPE_LENGTH (rtype) =
-        align_value (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT;
+      rtype->set_length (align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT);
     }
 
   /* We handle the variant part, if any, at the end because of certain
@@ -8268,7 +7822,7 @@ ada_template_to_fixed_record_type_1 (str
     {
       struct type *branch_type;
 
-      off = TYPE_FIELD_BITPOS (rtype, variant_field);
+      off = rtype->field (variant_field).loc_bitpos ();
 
       if (dval0 == NULL)
 	{
@@ -8277,34 +7831,34 @@ ada_template_to_fixed_record_type_1 (str
 	     that is currently being constructed.  */
 	  dval = value_from_contents_and_address_unresolved (rtype, valaddr,
 							     address);
-	  rtype = value_type (dval);
+	  rtype = dval->type ();
 	}
       else
-        dval = dval0;
+	dval = dval0;
 
       branch_type =
-        to_fixed_variant_branch_type
-        (TYPE_FIELD_TYPE (type, variant_field),
-         cond_offset_host (valaddr, off / TARGET_CHAR_BIT),
-         cond_offset_target (address, off / TARGET_CHAR_BIT), dval);
+	to_fixed_variant_branch_type
+	(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;
-        }
-      else
-        {
-          TYPE_FIELD_TYPE (rtype, variant_field) = branch_type;
-          TYPE_FIELD_NAME (rtype, variant_field) = "S";
-          fld_bit_len =
-            TYPE_LENGTH (TYPE_FIELD_TYPE (rtype, variant_field)) *
-            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;
-        }
+	{
+	  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
+	{
+	  rtype->field (variant_field).set_type (branch_type);
+	  rtype->field (variant_field).set_name ("S");
+	  fld_bit_len =
+	    rtype->field (variant_field).type ()->length () * TARGET_CHAR_BIT;
+	  if (off + fld_bit_len > bit_len)
+	    bit_len = off + fld_bit_len;
+
+	  rtype->set_length
+	    (align_up (bit_len, TARGET_CHAR_BIT) / TARGET_CHAR_BIT);
+	}
     }
 
   /* According to exp_dbug.ads, the size of TYPE for variable-size records
@@ -8313,24 +7867,18 @@ ada_template_to_fixed_record_type_1 (str
      probably in the debug info.  In that case, we don't round up the size
      of the resulting type.  If this record is not part of another structure,
      the current RTYPE length might be good enough for our purposes.  */
-  if (TYPE_LENGTH (type) <= 0)
+  if (type->length () <= 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 ()));
       else
 	warning (_("Invalid type size for <unnamed> detected: %s."),
-		 pulongest (TYPE_LENGTH (type)));
+		 pulongest (type->length ()));
     }
   else
-    {
-      TYPE_LENGTH (rtype) = align_value (TYPE_LENGTH (rtype),
-                                         TYPE_LENGTH (type));
-    }
+    rtype->set_length (align_up (rtype->length (), type->length ()));
 
-  value_free_to_mark (mark);
-  if (TYPE_LENGTH (rtype) > varsize_limit)
-    error (_("record type with dynamic size is larger than varsize-limit"));
   return rtype;
 }
 
@@ -8339,10 +7887,10 @@ ada_template_to_fixed_record_type_1 (str
 
 static struct type *
 template_to_fixed_record_type (struct type *type, const gdb_byte *valaddr,
-                               CORE_ADDR address, struct value *dval0)
+			       CORE_ADDR address, struct value *dval0)
 {
   return ada_template_to_fixed_record_type_1 (type, valaddr,
-                                              address, dval0, 1);
+					      address, dval0, 1);
 }
 
 /* An ordinary record type in which ___XVL-convention fields and
@@ -8351,7 +7899,7 @@ template_to_fixed_record_type (struct ty
    no runtime values.  Useless for use in values, but that's OK,
    since the results are used only for type determinations.   Works on both
    structs and unions.  Representation note: to save space, we memorize
-   the result of this function in the TYPE_TARGET_TYPE of the
+   the result of this function in the type::target_type of the
    template type.  */
 
 static struct type *
@@ -8362,53 +7910,52 @@ template_to_static_fixed_type (struct ty
   int f;
 
   /* No need no do anything if the input type is already fixed.  */
-  if (TYPE_FIXED_INSTANCE (type0))
+  if (type0->is_fixed_instance ())
     return type0;
 
   /* Likewise if we already have computed the static approximation.  */
-  if (TYPE_TARGET_TYPE (type0) != NULL)
-    return TYPE_TARGET_TYPE (type0);
+  if (type0->target_type () != NULL)
+    return type0->target_type ();
 
   /* 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.  */
-  TYPE_TARGET_TYPE (type0) = type;
+  type0->set_target_type (type);
 
   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))
 	{
 	  field_type = ada_check_typedef (field_type);
-          new_type = to_static_fixed_type (TYPE_TARGET_TYPE (field_type));
+	  new_type = to_static_fixed_type (field_type->target_type ());
 	}
       else
-        new_type = static_unwrap_type (field_type);
+	new_type = static_unwrap_type (field_type);
 
       if (new_type != field_type)
 	{
 	  /* Clone TYPE0 only the first time we get a new field type.  */
 	  if (type == type0)
 	    {
-	      TYPE_TARGET_TYPE (type0) = type = alloc_type_copy (type0);
-	      TYPE_CODE (type) = TYPE_CODE (type0);
+	      type = type_allocator (type0).new_type ();
+	      type0->set_target_type (type);
+	      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),
-		      sizeof (struct field) * nfields);
-	      TYPE_NAME (type) = ada_type_name (type0);
-	      TYPE_FIXED_INSTANCE (type) = 1;
-	      TYPE_LENGTH (type) = 0;
+
+	      type->copy_fields (type0);
+
+	      type->set_name (ada_type_name (type0));
+	      type->set_is_fixed_instance (true);
+	      type->set_length (0);
 	    }
-	  TYPE_FIELD_TYPE (type, f) = new_type;
-	  TYPE_FIELD_NAME (type, f) = TYPE_FIELD_NAME (type0, f);
+	  type->field (f).set_type (new_type);
+	  type->field (f).set_name (type0->field (f).name ());
 	}
     }
 
@@ -8424,64 +7971,62 @@ template_to_static_fixed_type (struct ty
 
 static struct type *
 to_record_with_fixed_variant_part (struct type *type, const gdb_byte *valaddr,
-                                   CORE_ADDR address, struct value *dval0)
+				   CORE_ADDR address, struct value *dval0)
 {
-  struct value *mark = value_mark ();
   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)
     return type;
 
+  scoped_value_mark mark;
   if (dval0 == NULL)
     {
       dval = value_from_contents_and_address (type, valaddr, address);
-      type = value_type (dval);
+      type = dval->type ();
     }
   else
     dval = dval0;
 
-  rtype = alloc_type_copy (type);
-  TYPE_CODE (rtype) = TYPE_CODE_STRUCT;
+  rtype = type_allocator (type).new_type ();
+  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));
-  memcpy (TYPE_FIELDS (rtype), TYPE_FIELDS (type),
-          sizeof (struct field) * nfields);
-  TYPE_NAME (rtype) = ada_type_name (type);
-  TYPE_FIXED_INSTANCE (rtype) = 1;
-  TYPE_LENGTH (rtype) = TYPE_LENGTH (type);
+  rtype->copy_fields (type);
+
+  rtype->set_name (ada_type_name (type));
+  rtype->set_is_fixed_instance (true);
+  rtype->set_length (type->length ());
 
   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),
+		       type->field (variant_field).loc_bitpos ()
+		       / TARGET_CHAR_BIT),
      cond_offset_target (address,
-                         TYPE_FIELD_BITPOS (type, variant_field)
-                         / TARGET_CHAR_BIT), dval);
+			 type->field (variant_field).loc_bitpos ()
+			 / TARGET_CHAR_BIT), dval);
   if (branch_type == NULL)
     {
       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;
-      TYPE_FIELD_NAME (rtype, variant_field) = "S";
-      TYPE_FIELD_BITSIZE (rtype, variant_field) = 0;
-      TYPE_LENGTH (rtype) += TYPE_LENGTH (branch_type);
+      rtype->field (variant_field).set_type (branch_type);
+      rtype->field (variant_field).set_name ("S");
+      rtype->field (variant_field).set_bitsize (0);
+      rtype->set_length (rtype->length () + branch_type->length ());
     }
-  TYPE_LENGTH (rtype) -= TYPE_LENGTH (TYPE_FIELD_TYPE (type, variant_field));
 
-  value_free_to_mark (mark);
+  rtype->set_length (rtype->length ()
+		     - type->field (variant_field).type ()->length ());
+
   return rtype;
 }
 
@@ -8505,11 +8050,11 @@ to_record_with_fixed_variant_part (struc
 
 static struct type *
 to_fixed_record_type (struct type *type0, const gdb_byte *valaddr,
-                      CORE_ADDR address, struct value *dval)
+		      CORE_ADDR address, struct value *dval)
 {
   struct type *templ_type;
 
-  if (TYPE_FIXED_INSTANCE (type0))
+  if (type0->is_fixed_instance ())
     return type0;
 
   templ_type = dynamic_template_type (type0);
@@ -8519,13 +8064,13 @@ to_fixed_record_type (struct type *type0
   else if (variant_field_index (type0) >= 0)
     {
       if (dval == NULL && valaddr == NULL && address == 0)
-        return type0;
+	return type0;
       return to_record_with_fixed_variant_part (type0, valaddr, address,
-                                                dval);
+						dval);
     }
   else
     {
-      TYPE_FIXED_INSTANCE (type0) = 1;
+      type0->set_is_fixed_instance (true);
       return type0;
     }
 
@@ -8541,14 +8086,14 @@ to_fixed_record_type (struct type *type0
 
 static struct type *
 to_fixed_variant_branch_type (struct type *var_type0, const gdb_byte *valaddr,
-                              CORE_ADDR address, struct value *dval)
+			      CORE_ADDR address, struct value *dval)
 {
   int which;
   struct type *templ_type;
   struct type *var_type;
 
-  if (TYPE_CODE (var_type0) == TYPE_CODE_PTR)
-    var_type = TYPE_TARGET_TYPE (var_type0);
+  if (var_type0->code () == TYPE_CODE_PTR)
+    var_type = var_type0->target_type ();
   else
     var_type = var_type0;
 
@@ -8557,24 +8102,21 @@ to_fixed_variant_branch_type (struct typ
   if (templ_type != NULL)
     var_type = templ_type;
 
-  if (is_unchecked_variant (var_type, value_type (dval)))
+  if (is_unchecked_variant (var_type, dval->type ()))
       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)),
-       valaddr, address, dval);
-  else if (variant_field_index (TYPE_FIELD_TYPE (var_type, which)) >= 0)
+      (var_type->field (which).type ()->target_type(), valaddr, address, dval);
+  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 +8131,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 +8147,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;
@@ -8636,14 +8178,13 @@ ada_is_redundant_index_type_desc (struct
 				  struct type *desc_type)
 {
   struct type *this_layer = check_typedef (array_type);
-  int i;
 
-  for (i = 0; i < TYPE_NFIELDS (desc_type); i++)
+  for (const auto &field : desc_type->fields ())
     {
-      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 (),
+					    field.type ()))
 	return 0;
-      this_layer = check_typedef (TYPE_TARGET_TYPE (this_layer));
+      this_layer = check_typedef (this_layer->target_type ());
     }
 
   return 1;
@@ -8659,7 +8200,7 @@ ada_is_redundant_index_type_desc (struct
 
 static struct type *
 to_fixed_array_type (struct type *type0, struct value *dval,
-                     int ignore_too_big)
+		     int ignore_too_big)
 {
   struct type *index_type_desc;
   struct type *result;
@@ -8667,12 +8208,16 @@ to_fixed_array_type (struct type *type0,
   static const char *xa_suffix = "___XA";
 
   type0 = ada_check_typedef (type0);
-  if (TYPE_FIXED_INSTANCE (type0))
+  if (type0->is_fixed_instance ())
     return type0;
 
   constrained_packed_array_p = ada_is_constrained_packed_array_type (type0);
   if (constrained_packed_array_p)
-    type0 = decode_constrained_packed_array_type (type0);
+    {
+      type0 = decode_constrained_packed_array_type (type0);
+      if (type0 == nullptr)
+	error (_("could not decode constrained packed array type"));
+    }
 
   index_type_desc = ada_find_parallel_type (type0, xa_suffix);
 
@@ -8712,29 +8257,31 @@ to_fixed_array_type (struct type *type0,
 
   if (index_type_desc == NULL)
     {
-      struct type *elt_type0 = ada_check_typedef (TYPE_TARGET_TYPE (type0));
+      struct type *elt_type0 = ada_check_typedef (type0->target_type ());
 
       /* NOTE: elt_type---the fixed version of elt_type0---should never
-         depend on the contents of the array in properly constructed
-         debugging data.  */
+	 depend on the contents of the array in properly constructed
+	 debugging data.  */
       /* Create a fixed version of the array element type.
-         We're not providing the address of an element here,
-         and thus the actual object value cannot be inspected to do
-         the conversion.  This should not be a problem, since arrays of
-         unconstrained objects are not allowed.  In particular, all
-         the elements of an array of a tagged type should all be of
-         the same type specified in the debugging info.  No need to
-         consult the object tag.  */
+	 We're not providing the address of an element here,
+	 and thus the actual object value cannot be inspected to do
+	 the conversion.  This should not be a problem, since arrays of
+	 unconstrained objects are not allowed.  In particular, all
+	 the elements of an array of a tagged type should all be of
+	 the same type specified in the debugging info.  No need to
+	 consult the object tag.  */
       struct type *elt_type = ada_to_fixed_type (elt_type0, 0, 0, dval, 1);
 
       /* Make sure we always create a new array type when dealing with
 	 packed array types, since we're going to fix-up the array
 	 type length and element bitsize a little further down.  */
       if (elt_type0 == elt_type && !constrained_packed_array_p)
-        result = type0;
+	result = type0;
       else
-        result = create_array_type (alloc_type_copy (type0),
-                                    elt_type, TYPE_INDEX_TYPE (type0));
+	{
+	  type_allocator alloc (type0);
+	  result = create_array_type (alloc, elt_type, type0->index_type ());
+	}
     }
   else
     {
@@ -8742,41 +8289,39 @@ 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)
-        elt_type0 = TYPE_TARGET_TYPE (elt_type0);
+      for (i = index_type_desc->num_fields (); i > 0; i -= 1)
+	elt_type0 = elt_type0->target_type ();
 
       /* NOTE: result---the fixed version of elt_type0---should never
-         depend on the contents of the array in properly constructed
-         debugging data.  */
+	 depend on the contents of the array in properly constructed
+	 debugging data.  */
       /* Create a fixed version of the array element type.
-         We're not providing the address of an element here,
-         and thus the actual object value cannot be inspected to do
-         the conversion.  This should not be a problem, since arrays of
-         unconstrained objects are not allowed.  In particular, all
-         the elements of an array of a tagged type should all be of
-         the same type specified in the debugging info.  No need to
-         consult the object tag.  */
+	 We're not providing the address of an element here,
+	 and thus the actual object value cannot be inspected to do
+	 the conversion.  This should not be a problem, since arrays of
+	 unconstrained objects are not allowed.  In particular, all
+	 the elements of an array of a tagged type should all be of
+	 the same type specified in the debugging info.  No need to
+	 consult the object tag.  */
       result =
-        ada_to_fixed_type (ada_check_typedef (elt_type0), 0, 0, dval, 1);
+	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)
-        {
-          struct type *range_type =
-            to_fixed_range_type (TYPE_FIELD_TYPE (index_type_desc, i), dval);
-
-          result = create_array_type (alloc_type_copy (elt_type0),
-                                      result, range_type);
-	  elt_type0 = TYPE_TARGET_TYPE (elt_type0);
-        }
-      if (!ignore_too_big && TYPE_LENGTH (result) > varsize_limit)
-        error (_("array type with dynamic size is larger than varsize-limit"));
+      for (i = index_type_desc->num_fields () - 1; i >= 0; i -= 1)
+	{
+	  struct type *range_type =
+	    to_fixed_range_type (index_type_desc->field (i).type (), dval);
+
+	  type_allocator alloc (elt_type0);
+	  result = create_array_type (alloc, result, range_type);
+	  elt_type0 = elt_type0->target_type ();
+	}
     }
 
   /* 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)
     {
@@ -8784,16 +8329,16 @@ to_fixed_array_type (struct type *type0,
 	 type was a regular (non-packed) array type.  As a result, the
 	 bitsize of the array elements needs to be set again, and the array
 	 length needs to be recomputed based on that bitsize.  */
-      int len = TYPE_LENGTH (result) / TYPE_LENGTH (TYPE_TARGET_TYPE (result));
-      int elt_bitsize = TYPE_FIELD_BITSIZE (type0, 0);
+      int len = result->length () / result->target_type ()->length ();
+      int elt_bitsize = type0->field (0).bitsize ();
 
-      TYPE_FIELD_BITSIZE (result, 0) = TYPE_FIELD_BITSIZE (type0, 0);
-      TYPE_LENGTH (result) = len * elt_bitsize / HOST_CHAR_BIT;
-      if (TYPE_LENGTH (result) * HOST_CHAR_BIT < len * elt_bitsize)
-        TYPE_LENGTH (result)++;
+      result->field (0).set_bitsize (elt_bitsize);
+      result->set_length (len * elt_bitsize / HOST_CHAR_BIT);
+      if (result->length () * HOST_CHAR_BIT < len * elt_bitsize)
+	result->set_length (result->length () + 1);
     }
 
-  TYPE_FIXED_INSTANCE (result) = 1;
+  result->set_is_fixed_instance (true);
   return result;
 }
 
@@ -8812,7 +8357,7 @@ to_fixed_array_type (struct type *type0,
    
 static struct type *
 ada_to_fixed_type_1 (struct type *type, const gdb_byte *valaddr,
-                   CORE_ADDR address, struct value *dval, int check_tag)
+		   CORE_ADDR address, struct value *dval, int check_tag)
 {
   type = ada_check_typedef (type);
 
@@ -8820,25 +8365,25 @@ 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;
     case TYPE_CODE_STRUCT:
       {
-        struct type *static_type = to_static_fixed_type (type);
-        struct type *fixed_record_type =
-          to_fixed_record_type (type, valaddr, address, NULL);
-
-        /* If STATIC_TYPE is a tagged type and we know the object's address,
-           then we can determine its tag, and compute the object's actual
-           type from there.  Note that we have to use the fixed record
-           type (the parent part of the record may have dynamic fields
-           and the way the location of _tag is expressed may depend on
-           them).  */
+	struct type *static_type = to_static_fixed_type (type);
+	struct type *fixed_record_type =
+	  to_fixed_record_type (type, valaddr, address, NULL);
+
+	/* If STATIC_TYPE is a tagged type and we know the object's address,
+	   then we can determine its tag, and compute the object's actual
+	   type from there.  Note that we have to use the fixed record
+	   type (the parent part of the record may have dynamic fields
+	   and the way the location of _tag is expressed may depend on
+	   them).  */
 
-        if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
-          {
+	if (check_tag && address != 0 && ada_is_tagged_type (static_type, 0))
+	  {
 	    struct value *tag =
 	      value_tag_from_contents_and_address
 	      (fixed_record_type,
@@ -8849,24 +8394,24 @@ ada_to_fixed_type_1 (struct type *type,
 	      value_from_contents_and_address (fixed_record_type,
 					       valaddr,
 					       address);
-            fixed_record_type = value_type (obj);
-            if (real_type != NULL)
-              return to_fixed_record_type
+	    fixed_record_type = obj->type ();
+	    if (real_type != NULL)
+	      return to_fixed_record_type
 		(real_type, NULL,
-		 value_address (ada_tag_value_at_base_address (obj)), NULL);
-          }
+		 ada_tag_value_at_base_address (obj)->address (), NULL);
+	  }
 
-        /* Check to see if there is a parallel ___XVZ variable.
-           If there is, then it provides the actual size of our type.  */
-        else if (ada_type_name (fixed_record_type) != NULL)
-          {
-            const char *name = ada_type_name (fixed_record_type);
-            char *xvz_name
+	/* Check to see if there is a parallel ___XVZ variable.
+	   If there is, then it provides the actual size of our type.  */
+	else if (ada_type_name (fixed_record_type) != NULL)
+	  {
+	    const char *name = ada_type_name (fixed_record_type);
+	    char *xvz_name
 	      = (char *) alloca (strlen (name) + 7 /* "___XVZ\0" */);
 	    bool xvz_found = false;
-            LONGEST size;
+	    LONGEST size;
 
-            xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
+	    xsnprintf (xvz_name, strlen (name) + 7, "%s___XVZ", name);
 	    try
 	      {
 		xvz_found = get_int_var_value (xvz_name, size);
@@ -8883,43 +8428,43 @@ ada_to_fixed_type_1 (struct type *type,
 			     xvz_name, except.what ());
 	      }
 
-            if (xvz_found && TYPE_LENGTH (fixed_record_type) != size)
-              {
-                fixed_record_type = copy_type (fixed_record_type);
-                TYPE_LENGTH (fixed_record_type) = size;
-
-                /* The FIXED_RECORD_TYPE may have be a stub.  We have
-                   observed this when the debugging info is STABS, and
-                   apparently it is something that is hard to fix.
-
-                   In practice, we don't need the actual type definition
-                   at all, because the presence of the XVZ variable allows us
-                   to assume that there must be a XVS type as well, which we
-                   should be able to use later, when we need the actual type
-                   definition.
-
-                   In the meantime, pretend that the "fixed" type we are
-                   returning is NOT a stub, because this can cause trouble
-                   when using this type to create new types targeting it.
-                   Indeed, the associated creation routines often check
-                   whether the target type is a stub and will try to replace
-                   it, thus using a type with the wrong size.  This, in turn,
-                   might cause the new type to have the wrong size too.
-                   Consider the case of an array, for instance, where the size
-                   of the array is computed from the number of elements in
-                   our array multiplied by the size of its element.  */
-                TYPE_STUB (fixed_record_type) = 0;
-              }
-          }
-        return fixed_record_type;
+	    if (xvz_found && fixed_record_type->length () != size)
+	      {
+		fixed_record_type = copy_type (fixed_record_type);
+		fixed_record_type->set_length (size);
+
+		/* The FIXED_RECORD_TYPE may have be a stub.  We have
+		   observed this when the debugging info is STABS, and
+		   apparently it is something that is hard to fix.
+
+		   In practice, we don't need the actual type definition
+		   at all, because the presence of the XVZ variable allows us
+		   to assume that there must be a XVS type as well, which we
+		   should be able to use later, when we need the actual type
+		   definition.
+
+		   In the meantime, pretend that the "fixed" type we are
+		   returning is NOT a stub, because this can cause trouble
+		   when using this type to create new types targeting it.
+		   Indeed, the associated creation routines often check
+		   whether the target type is a stub and will try to replace
+		   it, thus using a type with the wrong size.  This, in turn,
+		   might cause the new type to have the wrong size too.
+		   Consider the case of an array, for instance, where the size
+		   of the array is computed from the number of elements in
+		   our array multiplied by the size of its element.  */
+		fixed_record_type->set_is_stub (false);
+	      }
+	  }
+	return fixed_record_type;
       }
     case TYPE_CODE_ARRAY:
       return to_fixed_array_type (type, dval, 1);
     case TYPE_CODE_UNION:
       if (dval == NULL)
-        return type;
+	return type;
       else
-        return to_fixed_variant_branch_type (type, valaddr, address, dval);
+	return to_fixed_variant_branch_type (type, valaddr, address, dval);
     }
 }
 
@@ -8945,7 +8490,7 @@ ada_to_fixed_type_1 (struct type *type,
 
 struct type *
 ada_to_fixed_type (struct type *type, const gdb_byte *valaddr,
-                   CORE_ADDR address, struct value *dval, int check_tag)
+		   CORE_ADDR address, struct value *dval, int check_tag)
 
 {
   struct type *fixed_type =
@@ -8968,7 +8513,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;
@@ -8987,27 +8532,27 @@ to_static_fixed_type (struct type *type0
   if (type0 == NULL)
     return NULL;
 
-  if (TYPE_FIXED_INSTANCE (type0))
+  if (type0->is_fixed_instance ())
     return type0;
 
   type0 = ada_check_typedef (type0);
 
-  switch (TYPE_CODE (type0))
+  switch (type0->code ())
     {
     default:
       return type0;
     case TYPE_CODE_STRUCT:
       type = dynamic_template_type (type0);
       if (type != NULL)
-        return template_to_static_fixed_type (type);
+	return template_to_static_fixed_type (type);
       else
-        return template_to_static_fixed_type (type0);
+	return template_to_static_fixed_type (type0);
     case TYPE_CODE_UNION:
       type = ada_find_parallel_type (type0, "___XVU");
       if (type != NULL)
-        return template_to_static_fixed_type (type);
+	return template_to_static_fixed_type (type);
       else
-        return template_to_static_fixed_type (type0);
+	return template_to_static_fixed_type (type0);
     }
 }
 
@@ -9018,9 +8563,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);
     }
@@ -9029,9 +8574,9 @@ static_unwrap_type (struct type *type)
       struct type *raw_real_type = ada_get_base_type (type);
 
       if (raw_real_type == type)
-        return type;
+	return type;
       else
-        return to_static_fixed_type (raw_real_type);
+	return to_static_fixed_type (raw_real_type);
     }
 }
 
@@ -9065,23 +8610,23 @@ ada_check_typedef (struct type *type)
     return type;
 
   type = check_typedef (type);
-  if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM
-      || !TYPE_STUB (type)
-      || TYPE_NAME (type) == NULL)
+  if (type == NULL || type->code () != TYPE_CODE_ENUM
+      || !type->is_stub ()
+      || 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)
-        return type;
+	return type;
 
       /* TYPE1 might itself be a TYPE_CODE_TYPEDEF (this can happen with
 	 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;
@@ -9096,19 +8641,19 @@ ada_check_typedef (struct type *type)
 
 static struct value *
 ada_to_fixed_value_create (struct type *type0, CORE_ADDR address,
-                           struct value *val0)
+			   struct value *val0)
 {
   struct type *type = ada_to_fixed_type (type0, 0, address, NULL, 1);
 
   if (type == type0 && val0 != NULL)
     return val0;
 
-  if (VALUE_LVAL (val0) != lval_memory)
+  if (val0->lval () != lval_memory)
     {
       /* Our value does not live in memory; it could be a convenience
 	 variable, for instance.  Create a not_lval value using val0's
 	 contents.  */
-      return value_from_contents (type, value_contents (val0));
+      return value_from_contents (type, val0->contents ().data ());
     }
 
   return value_from_contents_and_address (type, 0, address);
@@ -9122,90 +8667,130 @@ struct value *
 ada_to_fixed_value (struct value *val)
 {
   val = unwrap_value (val);
-  val = ada_to_fixed_value_create (value_type (val), value_address (val), val);
+  val = ada_to_fixed_value_create (val->type (), val->address (), val);
   return val;
 }
 
 
 /* Attributes */
 
-/* Table mapping attribute numbers to names.
-   NOTE: Keep up to date with enum ada_attribute definition in ada-lang.h.  */
-
-static const char *attribute_names[] = {
-  "<?>",
-
-  "first",
-  "last",
-  "length",
-  "image",
-  "max",
-  "min",
-  "modulus",
-  "pos",
-  "size",
-  "tag",
-  "val",
-  0
-};
-
-static const char *
-ada_attribute_name (enum exp_opcode n)
-{
-  if (n >= OP_ATR_FIRST && n <= (int) OP_ATR_VAL)
-    return attribute_names[n - OP_ATR_FIRST + 1];
-  else
-    return attribute_names[0];
-}
-
 /* Evaluate the 'POS attribute applied to ARG.  */
 
 static LONGEST
 pos_atr (struct value *arg)
 {
   struct value *val = coerce_ref (arg);
-  struct type *type = value_type (val);
-  LONGEST result;
+  struct type *type = val->type ();
 
   if (!discrete_type_p (type))
     error (_("'POS only defined on discrete types"));
 
-  if (!discrete_position (type, value_as_long (val), &result))
+  std::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 *
-value_pos_atr (struct type *type, struct value *arg)
-{
+struct value *
+ada_pos_atr (struct type *expect_type,
+	     struct expression *exp,
+	     enum noside noside, enum exp_opcode op,
+	     struct value *arg)
+{
+  struct type *type = builtin_type (exp->gdbarch)->builtin_int;
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (type, not_lval);
   return value_from_longest (type, pos_atr (arg));
 }
 
 /* Evaluate the TYPE'VAL attribute applied to ARG.  */
 
 static struct value *
-value_val_atr (struct type *type, struct value *arg)
+val_atr (struct type *type, LONGEST val)
+{
+  gdb_assert (discrete_type_p (type));
+  if (type->code () == TYPE_CODE_RANGE)
+    type = type->target_type ();
+  if (type->code () == TYPE_CODE_ENUM)
+    {
+      if (val < 0 || val >= type->num_fields ())
+	error (_("argument to 'VAL out of range"));
+      val = type->field (val).loc_enumval ();
+    }
+  return value_from_longest (type, val);
+}
+
+struct value *
+ada_val_atr (struct expression *exp, enum noside noside, struct type *type,
+	     struct value *arg)
 {
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (type, not_lval);
+
   if (!discrete_type_p (type))
     error (_("'VAL only defined on discrete types"));
-  if (!integer_type_p (value_type (arg)))
+  if (!integer_type_p (arg->type ()))
     error (_("'VAL requires integral argument"));
 
-  if (TYPE_CODE (type) == TYPE_CODE_ENUM)
-    {
-      long pos = value_as_long (arg);
+  return val_atr (type, value_as_long (arg));
+}
+
+/* Implementation of the enum_rep attribute.  */
+struct value *
+ada_atr_enum_rep (struct expression *exp, enum noside noside, struct type *type,
+		  struct value *arg)
+{
+  struct type *inttype = builtin_type (exp->gdbarch)->builtin_int;
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (inttype, not_lval);
+
+  if (type->code () == TYPE_CODE_RANGE)
+    type = type->target_type ();
+  if (type->code () != TYPE_CODE_ENUM)
+    error (_("'Enum_Rep only defined on enum types"));
+  /* In some scenarios, GNAT will emit two distinct-but-equivalent
+     enum types.  For example, this can happen with an artificial
+     range type like the index type in:
+
+     type AR is array (Enum_With_Gaps range <>) of MyWord;
 
-      if (pos < 0 || pos >= TYPE_NFIELDS (type))
-        error (_("argument to 'VAL out of range"));
-      return value_from_longest (type, TYPE_FIELD_ENUMVAL (type, pos));
+     This is why types_equal is not used here.  */
+  if (!ada_identical_enum_types_p (type, arg->type ()))
+    error (_("'Enum_Rep requires argument to have same type as enum"));
+
+  return value_cast (inttype, arg);
+}
+
+/* Implementation of the enum_val attribute.  */
+struct value *
+ada_atr_enum_val (struct expression *exp, enum noside noside, struct type *type,
+		  struct value *arg)
+{
+  struct type *original_type = type;
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (original_type, not_lval);
+
+  if (type->code () == TYPE_CODE_RANGE)
+    type = type->target_type ();
+  if (type->code () != TYPE_CODE_ENUM)
+    error (_("'Enum_Val only defined on enum types"));
+  if (!integer_type_p (arg->type ()))
+    error (_("'Enum_Val requires integral argument"));
+
+  LONGEST value = value_as_long (arg);
+  for (const auto &field : type->fields ())
+    {
+      if (field.loc_enumval () == value)
+	return value_from_longest (original_type, value);
     }
-  else
-    return value_from_longest (type, value_as_long (arg));
+
+  error (_("value %s not found in enum"), plongest (value));
 }
+
 
 
-                                /* Evaluation */
+				/* Evaluation */
 
 /* True if TYPE appears to be an Ada character type.
    [At the moment, this is true only for Character and Wide_Character;
@@ -9218,19 +8803,19 @@ 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)
-          && (strcmp (name, "character") == 0
-              || strcmp (name, "wide_character") == 0
-              || strcmp (name, "wide_wide_character") == 0
-              || strcmp (name, "unsigned char") == 0));
+	  && (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
+	      || strcmp (name, "unsigned char") == 0));
 }
 
 /* True if TYPE appears to be an Ada string type.  */
@@ -9240,9 +8825,9 @@ 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_is_array_descriptor_type (type))
       && ada_array_arity (type) == 1)
     {
       struct type *elttype = ada_array_element_type (type, 1);
@@ -9276,9 +8861,9 @@ 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
-          && strcmp (TYPE_FIELD_NAME (type, 0), "F") == 0);
+  return (type->code () == TYPE_CODE_STRUCT
+	  && type->num_fields () == 1
+	  && strcmp (type->field (0).name (), "F") == 0);
 }
 
 /* If there is an ___XVS-convention type parallel to SUBTYPE, return
@@ -9290,7 +8875,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,16 +8895,16 @@ 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
 	 more efficient.  */
-      raw_real_type = ada_find_any_type (TYPE_FIELD_NAME (real_type_namer, 0));
+      raw_real_type = ada_find_any_type (real_type_namer->field (0).name ());
       if (raw_real_type == NULL)
 	return raw_type;
       else
@@ -9327,7 +8912,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 real_type_namer->field (0).type ()->target_type ();
 }
 
 /* The type of value designated by TYPE, with all aligners removed.  */
@@ -9336,7 +8921,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,25 +8934,20 @@ 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),
-                                   valaddr +
-                                   TYPE_FIELD_BITPOS (type,
-                                                      0) / TARGET_CHAR_BIT);
+    return ada_aligned_value_addr
+      (type->field (0).type (),
+       valaddr + type->field (0).loc_bitpos () / TARGET_CHAR_BIT);
   else
     return valaddr;
 }
 
 
+/* Remove qualifications from the enumeration constant named NAME,
+   returning a pointer to the constant's base name.  */
 
-/* The printed representation of an enumeration literal with encoded
-   name NAME.  The value is good to the next call of ada_enum_name.  */
-const char *
-ada_enum_name (const char *name)
+static const char *
+ada_unqualify_enum_name (const char *name)
 {
-  static char *result;
-  static size_t result_len = 0;
-  const char *tmp;
-
   /* First, unqualify the enumeration name:
      1. Search for the last '.' character.  If we find one, then skip
      all the preceding characters, the unqualified name starts
@@ -9377,75 +8957,97 @@ ada_enum_name (const char *name)
      but stop searching when we hit an overloading suffix, which is
      of the form "__" followed by digits.  */
 
-  tmp = strrchr (name, '.');
+  const char *tmp = strrchr (name, '.');
   if (tmp != NULL)
     name = tmp + 1;
   else
     {
       while ((tmp = strstr (name, "__")) != NULL)
-        {
-          if (isdigit (tmp[2]))
-            break;
-          else
-            name = tmp + 2;
-        }
+	{
+	  if (isdigit (tmp[2]))
+	    break;
+	  else
+	    name = tmp + 2;
+	}
     }
 
+  return name;
+}
+
+/* The printed representation of an enumeration literal with encoded
+   name NAME.  The value is good to the next call of ada_enum_name.  */
+const char *
+ada_enum_name (const char *name)
+{
+  static std::string storage;
+
+  name = ada_unqualify_enum_name (name);
   if (name[0] == 'Q')
     {
       int v;
 
       if (name[1] == 'U' || name[1] == 'W')
-        {
-          if (sscanf (name + 2, "%x", &v) != 1)
-            return name;
-        }
+	{
+	  int offset = 2;
+	  if (name[1] == 'W' && name[2] == 'W')
+	    {
+	      /* Also handle the QWW case.  */
+	      ++offset;
+	    }
+	  if (sscanf (name + offset, "%x", &v) != 1)
+	    return name;
+	}
       else if (((name[1] >= '0' && name[1] <= '9')
 		|| (name[1] >= 'a' && name[1] <= 'z'))
 	       && name[2] == '\0')
 	{
-	  GROW_VECT (result, result_len, 4);
-	  xsnprintf (result, result_len, "'%c'", name[1]);
-	  return result;
+	  storage = string_printf ("'%c'", name[1]);
+	  return storage.c_str ();
 	}
       else
-        return name;
+	return name;
 
-      GROW_VECT (result, result_len, 16);
       if (isascii (v) && isprint (v))
-        xsnprintf (result, result_len, "'%c'", v);
+	storage = string_printf ("'%c'", v);
       else if (name[1] == 'U')
-        xsnprintf (result, result_len, "[\"%02x\"]", v);
+	storage = string_printf ("'[\"%02x\"]'", v);
+      else if (name[2] != 'W')
+	storage = string_printf ("'[\"%04x\"]'", v);
       else
-        xsnprintf (result, result_len, "[\"%04x\"]", v);
+	storage = string_printf ("'[\"%06x\"]'", v);
 
-      return result;
+      return storage.c_str ();
     }
   else
     {
-      tmp = strstr (name, "__");
+      const char *tmp = strstr (name, "__");
       if (tmp == NULL)
 	tmp = strstr (name, "$");
       if (tmp != NULL)
-        {
-          GROW_VECT (result, result_len, tmp - name + 1);
-          strncpy (result, name, tmp - name);
-          result[tmp - name] = '\0';
-          return result;
-        }
+	{
+	  storage = std::string (name, tmp - name);
+	  return storage.c_str ();
+	}
 
       return name;
     }
 }
 
-/* Evaluate the subexpression of EXP starting at *POS as for
-   evaluate_type, updating *POS to point just past the evaluated
-   expression.  */
+/* If TYPE is a dynamic type, return the base type.  Otherwise, if
+   there is no parallel type, return nullptr.  */
 
-static struct value *
-evaluate_subexp_type (struct expression *exp, int *pos)
+static struct type *
+find_base_type (struct type *type)
 {
-  return evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
+  struct type *raw_real_type
+    = ada_check_typedef (ada_get_base_type (type));
+
+  /* No parallel XVS or XVE type.  */
+  if (type == raw_real_type
+      && ada_find_parallel_type (type, "___XVE") == nullptr)
+    return nullptr;
+
+  return raw_real_type;
 }
 
 /* If VAL is wrapped in an aligner or subtype wrapper, return the
@@ -9454,63 +9056,32 @@ evaluate_subexp_type (struct expression
 static struct value *
 unwrap_value (struct value *val)
 {
-  struct type *type = ada_check_typedef (value_type (val));
+  struct type *type = ada_check_typedef (val->type ());
 
   if (ada_is_aligner_type (type))
     {
       struct value *v = ada_value_struct_elt (val, "F", 0);
-      struct type *val_type = ada_check_typedef (value_type (v));
+      struct type *val_type = ada_check_typedef (v->type ());
 
       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);
     }
   else
     {
-      struct type *raw_real_type =
-        ada_check_typedef (ada_get_base_type (type));
-
-      /* If there is no parallel XVS or XVE type, then the value is
-	 already unwrapped.  Return it without further modification.  */
-      if ((type == raw_real_type)
-	  && ada_find_parallel_type (type, "___XVE") == NULL)
+      struct type *raw_real_type = find_base_type (type);
+      if (raw_real_type == nullptr)
 	return val;
 
       return
-        coerce_unspec_val_to_type
-        (val, ada_to_fixed_type (raw_real_type, 0,
-                                 value_address (val),
-                                 NULL, 1));
+	coerce_unspec_val_to_type
+	(val, ada_to_fixed_type (raw_real_type, 0,
+				 val->address (),
+				 NULL, 1));
     }
 }
 
-static struct value *
-cast_from_fixed (struct type *type, struct value *arg)
-{
-  struct value *scale = ada_scaling_factor (value_type (arg));
-  arg = value_cast (value_type (scale), arg);
-
-  arg = value_binop (arg, scale, BINOP_MUL);
-  return value_cast (type, arg);
-}
-
-static struct value *
-cast_to_fixed (struct type *type, struct value *arg)
-{
-  if (type == value_type (arg))
-    return arg;
-
-  struct value *scale = ada_scaling_factor (type);
-  if (ada_is_fixed_point_type (value_type (arg)))
-    arg = cast_from_fixed (value_type (scale), arg);
-  else
-    arg = value_cast (value_type (scale), arg);
-
-  arg = value_binop (arg, scale, BINOP_DIV);
-  return value_cast (type, arg);
-}
-
 /* Given two array types T1 and T2, return nonzero iff both arrays
    contain the same number of elements.  */
 
@@ -9545,33 +9116,33 @@ ada_same_array_size_p (struct type *t1,
 static struct value *
 ada_promote_array_of_integrals (struct type *type, struct value *val)
 {
-  struct type *elt_type = TYPE_TARGET_TYPE (type);
+  struct type *elt_type = type->target_type ();
   LONGEST lo, hi;
-  struct value *res;
   LONGEST i;
 
   /* 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 (is_integral_type (TYPE_TARGET_TYPE (type)));
-  gdb_assert (TYPE_CODE (value_type (val)) == 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))));
+  gdb_assert (type->code () == TYPE_CODE_ARRAY);
+  gdb_assert (is_integral_type (type->target_type ()));
+  gdb_assert (val->type ()->code () == TYPE_CODE_ARRAY);
+  gdb_assert (is_integral_type (val->type ()->target_type ()));
+  gdb_assert (type->target_type ()->length ()
+	      > val->type ()->target_type ()->length ());
 
   if (!get_array_bounds (type, &lo, &hi))
     error (_("unable to determine array bounds"));
 
-  res = allocate_value (type);
+  value *res = value::allocate (type);
+  gdb::array_view<gdb_byte> res_contents = res->contents_writeable ();
 
   /* Promote each array element.  */
   for (i = 0; i < hi - lo + 1; i++)
     {
       struct value *elt = value_cast (elt_type, value_subscript (val, lo + i));
+      int elt_len = elt_type->length ();
 
-      memcpy (value_contents_writeable (res) + (i * TYPE_LENGTH (elt_type)),
-	      value_contents_all (elt), TYPE_LENGTH (elt_type));
+      copy (elt->contents_all (), res_contents.slice (elt_len * i, elt_len));
     }
 
   return res;
@@ -9583,7 +9154,7 @@ ada_promote_array_of_integrals (struct t
 static struct value *
 coerce_for_assign (struct type *type, struct value *val)
 {
-  struct type *type2 = value_type (val);
+  struct type *type2 = val->type ();
 
   if (type == type2)
     return val;
@@ -9591,33 +9162,31 @@ 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);
+      type2 = val->type ();
     }
 
-  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"));
 
-      if (is_integral_type (TYPE_TARGET_TYPE (type))
-	  && is_integral_type (TYPE_TARGET_TYPE (type2))
-	  && TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
-	       < TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
+      if (is_integral_type (type->target_type ())
+	  && is_integral_type (type2->target_type ())
+	  && type2->target_type ()->length () < type->target_type ()->length ())
 	{
 	  /* Allow implicit promotion of the array elements to
 	     a wider type.  */
 	  return ada_promote_array_of_integrals (type, val);
 	}
 
-      if (TYPE_LENGTH (TYPE_TARGET_TYPE (type2))
-          != TYPE_LENGTH (TYPE_TARGET_TYPE (type)))
-        error (_("Incompatible types in assignment"));
-      deprecated_set_value_type (val, type);
+      if (type2->target_type ()->length () != type->target_type ()->length ())
+	error (_("Incompatible types in assignment"));
+      val->deprecated_set_type (type);
     }
   return val;
 }
@@ -9625,17 +9194,15 @@ coerce_for_assign (struct type *type, st
 static struct value *
 ada_value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
 {
-  struct value *val;
   struct type *type1, *type2;
-  LONGEST v, v1, v2;
 
   arg1 = coerce_ref (arg1);
   arg2 = coerce_ref (arg2);
-  type1 = get_base_type (ada_check_typedef (value_type (arg1)));
-  type2 = get_base_type (ada_check_typedef (value_type (arg2)));
+  type1 = get_base_type (ada_check_typedef (arg1->type ()));
+  type2 = get_base_type (ada_check_typedef (arg2->type ()));
 
-  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)
@@ -9648,113 +9215,100 @@ ada_value_binop (struct value *arg1, str
       return value_binop (arg1, arg2, op);
     }
 
-  v2 = value_as_long (arg2);
-  if (v2 == 0)
-    error (_("second operand of %s must not be zero."), op_string (op));
+  gdb_mpz v2 = value_as_mpz (arg2);
+  if (v2.sgn () == 0)
+    {
+      const char *name;
+      if (op == BINOP_MOD)
+	name = "mod";
+      else if (op == BINOP_DIV)
+	name = "/";
+      else
+	{
+	  gdb_assert (op == BINOP_REM);
+	  name = "rem";
+	}
+
+      error (_("second operand of %s must not be zero."), name);
+    }
 
-  if (TYPE_UNSIGNED (type1) || op == BINOP_MOD)
+  if (type1->is_unsigned () || op == BINOP_MOD)
     return value_binop (arg1, arg2, op);
 
-  v1 = value_as_long (arg1);
+  gdb_mpz v1 = value_as_mpz (arg1);
+  gdb_mpz v;
   switch (op)
     {
     case BINOP_DIV:
       v = v1 / v2;
-      if (!TRUNCATION_TOWARDS_ZERO && v1 * (v1 % v2) < 0)
-        v += v > 0 ? -1 : 1;
       break;
     case BINOP_REM:
       v = v1 % v2;
       if (v * v1 < 0)
-        v -= v2;
+	v -= v2;
       break;
     default:
       /* Should not reach this point.  */
-      v = 0;
+      gdb_assert_not_reached ("invalid operator");
     }
 
-  val = allocate_value (type1);
-  store_unsigned_integer (value_contents_raw (val),
-                          TYPE_LENGTH (value_type (val)),
-			  type_byte_order (type1), v);
-  return val;
+  return value_from_mpz (type1, v);
 }
 
 static int
 ada_value_equal (struct value *arg1, struct value *arg2)
 {
-  if (ada_is_direct_array_type (value_type (arg1))
-      || ada_is_direct_array_type (value_type (arg2)))
+  if (ada_is_direct_array_type (arg1->type ())
+      || ada_is_direct_array_type (arg2->type ()))
     {
       struct type *arg1_type, *arg2_type;
 
       /* Automatically dereference any array reference before
-         we attempt to perform the comparison.  */
+	 we attempt to perform the comparison.  */
       arg1 = ada_coerce_ref (arg1);
       arg2 = ada_coerce_ref (arg2);
 
       arg1 = ada_coerce_to_simple_array (arg1);
       arg2 = ada_coerce_to_simple_array (arg2);
 
-      arg1_type = ada_check_typedef (value_type (arg1));
-      arg2_type = ada_check_typedef (value_type (arg2));
+      arg1_type = ada_check_typedef (arg1->type ());
+      arg2_type = ada_check_typedef (arg2->type ());
 
-      if (TYPE_CODE (arg1_type) != TYPE_CODE_ARRAY
-          || TYPE_CODE (arg2_type) != TYPE_CODE_ARRAY)
-        error (_("Attempt to compare array with non-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)
-         and do not have user-defined equality.  */
-      return (TYPE_LENGTH (arg1_type) == TYPE_LENGTH (arg2_type)
-	      && memcmp (value_contents (arg1), value_contents (arg2),
-			 TYPE_LENGTH (arg1_type)) == 0);
+	 representations use all bits (no padding or undefined bits)
+	 and do not have user-defined equality.  */
+      return (arg1_type->length () == arg2_type->length ()
+	      && memcmp (arg1->contents ().data (),
+			 arg2->contents ().data (),
+			 arg1_type->length ()) == 0);
     }
   return value_equal (arg1, arg2);
 }
 
-/* Total number of component associations in the aggregate starting at
-   index PC in EXP.  Assumes that index PC is the start of an
-   OP_AGGREGATE.  */
-
-static int
-num_component_specs (struct expression *exp, int pc)
+namespace expr
 {
-  int n, m, i;
 
-  m = exp->elts[pc + 1].longconst;
-  pc += 3;
-  n = 0;
-  for (i = 0; i < m; i += 1)
-    {
-      switch (exp->elts[pc].opcode) 
-	{
-	default:
-	  n += 1;
-	  break;
-	case OP_CHOICES:
-	  n += exp->elts[pc + 1].longconst;
-	  break;
-	}
-      ada_evaluate_subexp (NULL, exp, &pc, EVAL_SKIP);
-    }
-  return n;
+bool
+check_objfile (const std::unique_ptr<ada_component> &comp,
+	       struct objfile *objfile)
+{
+  return comp->uses_objfile (objfile);
 }
 
-/* Assign the result of evaluating EXP starting at *POS to the INDEXth 
-   component of LHS (a simple array or a record), updating *POS past
-   the expression, assuming that LHS is contained in CONTAINER.  Does
-   not modify the inferior's memory, nor does it modify LHS (unless
-   LHS == CONTAINER).  */
+/* See ada-exp.h.  */
 
-static void
-assign_component (struct value *container, struct value *lhs, LONGEST index,
-		  struct expression *exp, int *pos)
+void
+aggregate_assigner::assign (LONGEST index, operation_up &arg)
 {
-  struct value *mark = value_mark ();
+  scoped_value_mark mark;
+
   struct value *elt;
-  struct type *lhs_type = check_typedef (value_type (lhs));
+  struct type *lhs_type = check_typedef (lhs->type ());
 
-  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);
@@ -9763,299 +9317,443 @@ assign_component (struct value *containe
     }
   else
     {
-      elt = ada_index_struct_field (index, lhs, 0, value_type (lhs));
+      elt = ada_index_struct_field (index, lhs, 0, lhs->type ());
       elt = ada_to_fixed_value (elt);
     }
 
-  if (exp->elts[*pos].opcode == OP_AGGREGATE)
-    assign_aggregate (container, elt, exp, pos, EVAL_NORMAL);
+  scoped_restore save_index = make_scoped_restore (&m_current_index, index);
+
+  ada_aggregate_operation *ag_op
+    = dynamic_cast<ada_aggregate_operation *> (arg.get ());
+  if (ag_op != nullptr)
+    ag_op->assign_aggregate (container, elt, exp);
   else
-    value_assign_to_component (container, elt, 
-			       ada_evaluate_subexp (NULL, exp, pos, 
-						    EVAL_NORMAL));
-
-  value_free_to_mark (mark);
-}
-
-/* Assuming that LHS represents an lvalue having a record or array
-   type, and EXP->ELTS[*POS] is an OP_AGGREGATE, evaluate an assignment
-   of that aggregate's value to LHS, advancing *POS past the
-   aggregate.  NOSIDE is as for evaluate_subexp.  CONTAINER is an
-   lvalue containing LHS (possibly LHS itself).  Does not modify
-   the inferior's memory, nor does it modify the contents of 
-   LHS (unless == CONTAINER).  Returns the modified CONTAINER.  */
+    value_assign_to_component (container, elt,
+			       arg->evaluate (nullptr, exp,
+					      EVAL_NORMAL));
+}
 
-static struct value *
-assign_aggregate (struct value *container, 
-		  struct value *lhs, struct expression *exp, 
-		  int *pos, enum noside noside)
+/* See ada-exp.h.  */
+
+value *
+aggregate_assigner::current_value () const
 {
-  struct type *lhs_type;
-  int n = exp->elts[*pos+1].longconst;
-  LONGEST low_index, high_index;
-  int num_specs;
-  LONGEST *indices;
-  int max_indices, num_indices;
-  int i;
+  /* Note that using an integer type here is incorrect -- the type
+     should be the array's index type.  Unfortunately, though, this
+     isn't currently available during parsing and type resolution.  */
+  struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
+  return value_from_longest (index_type, m_current_index);
+}
 
-  *pos += 3;
-  if (noside != EVAL_NORMAL)
+bool
+ada_aggregate_component::uses_objfile (struct objfile *objfile)
+{
+  if (m_base != nullptr && m_base->uses_objfile (objfile))
+    return true;
+  for (const auto &item : m_components)
+    if (item->uses_objfile (objfile))
+      return true;
+  return false;
+}
+
+void
+ada_aggregate_component::dump (ui_file *stream, int depth)
+{
+  gdb_printf (stream, _("%*sAggregate\n"), depth, "");
+  if (m_base != nullptr)
+    {
+      gdb_printf (stream, _("%*swith delta\n"), depth + 1, "");
+      m_base->dump (stream, depth + 2);
+    }
+  for (const auto &item : m_components)
+    item->dump (stream, depth + 1);
+}
+
+void
+ada_aggregate_component::assign (aggregate_assigner &assigner)
+{
+  if (m_base != nullptr)
     {
-      for (i = 0; i < n; i += 1)
-	ada_evaluate_subexp (NULL, exp, pos, noside);
-      return container;
+      value *base = m_base->evaluate (nullptr, assigner.exp, EVAL_NORMAL);
+      if (ada_is_direct_array_type (base->type ()))
+	base = ada_coerce_to_simple_array (base);
+      if (!types_deeply_equal (assigner.container->type (), base->type ()))
+	error (_("Type mismatch in delta aggregate"));
+      value_assign_to_component (assigner.container, assigner.container,
+				 base);
     }
 
+  for (auto &item : m_components)
+    item->assign (assigner);
+}
+
+/* See ada-exp.h.  */
+
+ada_aggregate_component::ada_aggregate_component
+     (operation_up &&base, std::vector<ada_component_up> &&components)
+       : m_base (std::move (base)),
+	 m_components (std::move (components))
+{
+  for (const auto &component : m_components)
+    if (dynamic_cast<const ada_others_component *> (component.get ())
+	!= nullptr)
+      {
+	/* It's invalid and nonsensical to have 'others => ...' with a
+	   delta aggregate.  It was simpler to enforce this
+	   restriction here as opposed to in the parser.  */
+	error (_("'others' invalid in delta aggregate"));
+      }
+}
+
+/* See ada-exp.h.  */
+
+value *
+ada_aggregate_operation::assign_aggregate (struct value *container,
+					   struct value *lhs,
+					   struct expression *exp)
+{
+  struct type *lhs_type;
+  aggregate_assigner assigner;
+
   container = ada_coerce_ref (container);
-  if (ada_is_direct_array_type (value_type (container)))
+  if (ada_is_direct_array_type (container->type ()))
     container = ada_coerce_to_simple_array (container);
   lhs = ada_coerce_ref (lhs);
-  if (!deprecated_value_modifiable (lhs))
+  if (!lhs->deprecated_modifiable ())
     error (_("Left operand of assignment is not a modifiable lvalue."));
 
-  lhs_type = check_typedef (value_type (lhs));
+  lhs_type = check_typedef (lhs->type ());
   if (ada_is_direct_array_type (lhs_type))
     {
       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);
+      lhs_type = check_typedef (lhs->type ());
+      assigner.low = lhs_type->bounds ()->low.const_val ();
+      assigner.high = 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;
+      assigner.low = 0;
+      assigner.high = num_visible_fields (lhs_type) - 1;
     }
   else
     error (_("Left-hand side must be array or record."));
 
-  num_specs = num_component_specs (exp, *pos - 3);
-  max_indices = 4 * num_specs + 4;
-  indices = XALLOCAVEC (LONGEST, max_indices);
-  indices[0] = indices[1] = low_index - 1;
-  indices[2] = indices[3] = high_index + 1;
-  num_indices = 4;
-
-  for (i = 0; i < n; i += 1)
-    {
-      switch (exp->elts[*pos].opcode)
-	{
-	  case OP_CHOICES:
-	    aggregate_assign_from_choices (container, lhs, exp, pos, indices, 
-					   &num_indices, max_indices,
-					   low_index, high_index);
-	    break;
-	  case OP_POSITIONAL:
-	    aggregate_assign_positional (container, lhs, exp, pos, indices,
-					 &num_indices, max_indices,
-					 low_index, high_index);
-	    break;
-	  case OP_OTHERS:
-	    if (i != n-1)
-	      error (_("Misplaced 'others' clause"));
-	    aggregate_assign_others (container, lhs, exp, pos, indices, 
-				     num_indices, low_index, high_index);
-	    break;
-	  default:
-	    error (_("Internal error: bad aggregate clause"));
-	}
-    }
+  assigner.indices.push_back (assigner.low - 1);
+  assigner.indices.push_back (assigner.low - 1);
+  assigner.indices.push_back (assigner.high + 1);
+  assigner.indices.push_back (assigner.high + 1);
+
+  assigner.container = container;
+  assigner.lhs = lhs;
+  assigner.exp = exp;
+
+  std::get<0> (m_storage)->assign (assigner);
 
   return container;
 }
-	      
+
+bool
+ada_positional_component::uses_objfile (struct objfile *objfile)
+{
+  return m_op->uses_objfile (objfile);
+}
+
+void
+ada_positional_component::dump (ui_file *stream, int depth)
+{
+  gdb_printf (stream, _("%*sPositional, index = %d\n"),
+	      depth, "", m_index);
+  m_op->dump (stream, depth + 1);
+}
+
 /* Assign into the component of LHS indexed by the OP_POSITIONAL
-   construct at *POS, updating *POS past the construct, given that
-   the positions are relative to lower bound LOW, where HIGH is the 
-   upper bound.  Record the position in INDICES[0 .. MAX_INDICES-1]
-   updating *NUM_INDICES as needed.  CONTAINER is as for
-   assign_aggregate.  */
-static void
-aggregate_assign_positional (struct value *container,
-			     struct value *lhs, struct expression *exp,
-			     int *pos, LONGEST *indices, int *num_indices,
-			     int max_indices, LONGEST low, LONGEST high) 
+   construct, given that the positions are relative to lower bound
+   LOW, where HIGH is the upper bound.  Record the position in
+   INDICES.  CONTAINER is as for assign_aggregate.  */
+void
+ada_positional_component::assign (aggregate_assigner &assigner)
 {
-  LONGEST ind = longest_to_int (exp->elts[*pos + 1].longconst) + low;
-  
-  if (ind - 1 == high)
+  LONGEST ind = m_index + assigner.low;
+
+  if (ind - 1 == assigner.high)
     warning (_("Extra components in aggregate ignored."));
-  if (ind <= high)
+  if (ind <= assigner.high)
     {
-      add_component_interval (ind, ind, indices, num_indices, max_indices);
-      *pos += 3;
-      assign_component (container, lhs, ind, exp, pos);
+      assigner.add_interval (ind, ind);
+      assigner.assign (ind, m_op);
     }
-  else
-    ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
 }
 
-/* Assign into the components of LHS indexed by the OP_CHOICES
-   construct at *POS, updating *POS past the construct, given that
-   the allowable indices are LOW..HIGH.  Record the indices assigned
-   to in INDICES[0 .. MAX_INDICES-1], updating *NUM_INDICES as
-   needed.  CONTAINER is as for assign_aggregate.  */
-static void
-aggregate_assign_from_choices (struct value *container,
-			       struct value *lhs, struct expression *exp,
-			       int *pos, LONGEST *indices, int *num_indices,
-			       int max_indices, LONGEST low, LONGEST high) 
-{
-  int j;
-  int n_choices = longest_to_int (exp->elts[*pos+1].longconst);
-  int choice_pos, expr_pc;
-  int is_array = ada_is_direct_array_type (value_type (lhs));
-
-  choice_pos = *pos += 3;
-
-  for (j = 0; j < n_choices; j += 1)
-    ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
-  expr_pc = *pos;
-  ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
-  
-  for (j = 0; j < n_choices; j += 1)
+bool
+ada_discrete_range_association::uses_objfile (struct objfile *objfile)
+{
+  return m_low->uses_objfile (objfile) || m_high->uses_objfile (objfile);
+}
+
+void
+ada_discrete_range_association::dump (ui_file *stream, int depth)
+{
+  gdb_printf (stream, _("%*sDiscrete range:\n"), depth, "");
+  m_low->dump (stream, depth + 1);
+  m_high->dump (stream, depth + 1);
+}
+
+void
+ada_discrete_range_association::assign (aggregate_assigner &assigner,
+					operation_up &op)
+{
+  LONGEST lower = value_as_long (m_low->evaluate (nullptr, assigner.exp,
+						  EVAL_NORMAL));
+  LONGEST upper = value_as_long (m_high->evaluate (nullptr, assigner.exp,
+						   EVAL_NORMAL));
+
+  if (lower <= upper && (lower < assigner.low || upper > assigner.high))
+    error (_("Index in component association out of bounds."));
+
+  assigner.add_interval (lower, upper);
+  while (lower <= upper)
     {
-      LONGEST lower, upper;
-      enum exp_opcode op = exp->elts[choice_pos].opcode;
+      assigner.assign (lower, op);
+      lower += 1;
+    }
+}
 
-      if (op == OP_DISCRETE_RANGE)
-	{
-	  choice_pos += 1;
-	  lower = value_as_long (ada_evaluate_subexp (NULL, exp, pos,
-						      EVAL_NORMAL));
-	  upper = value_as_long (ada_evaluate_subexp (NULL, exp, pos, 
-						      EVAL_NORMAL));
-	}
-      else if (is_array)
-	{
-	  lower = value_as_long (ada_evaluate_subexp (NULL, exp, &choice_pos, 
-						      EVAL_NORMAL));
-	  upper = lower;
-	}
+bool
+ada_name_association::uses_objfile (struct objfile *objfile)
+{
+  return m_val->uses_objfile (objfile);
+}
+
+void
+ada_name_association::dump (ui_file *stream, int depth)
+{
+  gdb_printf (stream, _("%*sName:\n"), depth, "");
+  m_val->dump (stream, depth + 1);
+}
+
+void
+ada_name_association::assign (aggregate_assigner &assigner,
+			      operation_up &op)
+{
+  int index;
+
+  if (ada_is_direct_array_type (assigner.lhs->type ()))
+    {
+      value *tem = m_val->evaluate (nullptr, assigner.exp, EVAL_NORMAL);
+      index = longest_to_int (value_as_long (tem));
+    }
+  else
+    {
+      ada_string_operation *strop
+	= dynamic_cast<ada_string_operation *> (m_val.get ());
+
+      const char *name;
+      if (strop != nullptr)
+	name = strop->get_name ();
       else
 	{
-	  int ind;
-	  const char *name;
+	  ada_var_value_operation *vvo
+	    = dynamic_cast<ada_var_value_operation *> (m_val.get ());
+	  if (vvo == nullptr)
+	    error (_("Invalid record component association."));
+	  name = vvo->get_symbol ()->natural_name ();
+	  /* In this scenario, the user wrote (name => expr), but
+	     write_name_assoc found some fully-qualified name and
+	     substituted it.  This happens because, at parse time, the
+	     meaning of the expression isn't known; but here we know
+	     that just the base name was supplied and it refers to the
+	     name of a field.  */
+	  name = ada_unqualified_name (name);
+	}
+
+      index = 0;
+      if (! find_struct_field (name, assigner.lhs->type (), 0,
+			       NULL, NULL, NULL, NULL, &index))
+	error (_("Unknown component name: %s."), name);
+    }
 
-	  switch (op)
-	    {
-	    case OP_NAME:
-	      name = &exp->elts[choice_pos + 2].string;
-	      break;
-	    case OP_VAR_VALUE:
-	      name = exp->elts[choice_pos + 2].symbol->natural_name ();
-	      break;
-	    default:
-	      error (_("Invalid record component association."));
-	    }
-	  ada_evaluate_subexp (NULL, exp, &choice_pos, EVAL_SKIP);
-	  ind = 0;
-	  if (! find_struct_field (name, value_type (lhs), 0, 
-				   NULL, NULL, NULL, NULL, &ind))
-	    error (_("Unknown component name: %s."), name);
-	  lower = upper = ind;
-	}
+  assigner.add_interval (index, index);
+  assigner.assign (index, op);
+}
 
-      if (lower <= upper && (lower < low || upper > high))
-	error (_("Index in component association out of bounds."));
+bool
+ada_choices_component::uses_objfile (struct objfile *objfile)
+{
+  if (m_op->uses_objfile (objfile))
+    return true;
+  for (const auto &item : m_assocs)
+    if (item->uses_objfile (objfile))
+      return true;
+  return false;
+}
 
-      add_component_interval (lower, upper, indices, num_indices,
-			      max_indices);
-      while (lower <= upper)
-	{
-	  int pos1;
+void
+ada_choices_component::dump (ui_file *stream, int depth)
+{
+  if (m_name.empty ())
+    gdb_printf (stream, _("%*sChoices:\n"), depth, "");
+  else
+    {
+      gdb_printf (stream, _("%*sIterated choices:\n"), depth, "");
+      gdb_printf (stream, _("%*sName: %s\n"), depth + 1, "", m_name.c_str ());
+    }
+  m_op->dump (stream, depth + 1);
 
-	  pos1 = expr_pc;
-	  assign_component (container, lhs, lower, exp, &pos1);
-	  lower += 1;
-	}
+  for (const auto &item : m_assocs)
+    item->dump (stream, depth + 1);
+}
+
+/* Assign into the components of LHS indexed by the OP_CHOICES
+   construct at *POS, updating *POS past the construct, given that
+   the allowable indices are LOW..HIGH.  Record the indices assigned
+   to in INDICES.  CONTAINER is as for assign_aggregate.  */
+void
+ada_choices_component::assign (aggregate_assigner &assigner)
+{
+  scoped_restore save_index = make_scoped_restore (&m_assigner, &assigner);
+  for (auto &item : m_assocs)
+    item->assign (assigner, m_op);
+}
+
+void
+ada_index_var_operation::dump (struct ui_file *stream, int depth) const
+{
+  gdb_printf (stream, _("%*sIndex variable: %s\n"), depth, "",
+	      m_var->name ().c_str ());
+}
+
+value *
+ada_index_var_operation::evaluate (struct type *expect_type,
+				   struct expression *exp,
+				   enum noside noside)
+{
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    {
+      /* Note that using an integer type here is incorrect -- the type
+	 should be the array's index type.  Unfortunately, though,
+	 this isn't currently available during parsing and type
+	 resolution.  */
+      struct type *index_type = builtin_type (exp->gdbarch)->builtin_int;
+      return value::zero (index_type, not_lval);
     }
+
+  return m_var->current_value ();
+}
+
+bool
+ada_others_component::uses_objfile (struct objfile *objfile)
+{
+  return m_op->uses_objfile (objfile);
+}
+
+void
+ada_others_component::dump (ui_file *stream, int depth)
+{
+  gdb_printf (stream, _("%*sOthers:\n"), depth, "");
+  m_op->dump (stream, depth + 1);
 }
 
 /* Assign the value of the expression in the OP_OTHERS construct in
    EXP at *POS into the components of LHS indexed from LOW .. HIGH that
    have not been previously assigned.  The index intervals already assigned
-   are in INDICES[0 .. NUM_INDICES-1].  Updates *POS to after the 
-   OP_OTHERS clause.  CONTAINER is as for assign_aggregate.  */
-static void
-aggregate_assign_others (struct value *container,
-			 struct value *lhs, struct expression *exp,
-			 int *pos, LONGEST *indices, int num_indices,
-			 LONGEST low, LONGEST high) 
+   are in INDICES.  CONTAINER is as for assign_aggregate.  */
+void
+ada_others_component::assign (aggregate_assigner &assigner)
 {
-  int i;
-  int expr_pc = *pos + 1;
-  
-  for (i = 0; i < num_indices - 2; i += 2)
+  int num_indices = assigner.indices.size ();
+  for (int i = 0; i < num_indices - 2; i += 2)
     {
-      LONGEST ind;
+      for (LONGEST ind = assigner.indices[i + 1] + 1;
+	   ind < assigner.indices[i + 2];
+	   ind += 1)
+	assigner.assign (ind, m_op);
+    }
+}
 
-      for (ind = indices[i + 1] + 1; ind < indices[i + 2]; ind += 1)
-	{
-	  int localpos;
+struct value *
+ada_assign_operation::evaluate (struct type *expect_type,
+				struct expression *exp,
+				enum noside noside)
+{
+  value *arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
+  scoped_restore save_lhs = make_scoped_restore (&m_current, arg1);
 
-	  localpos = expr_pc;
-	  assign_component (container, lhs, ind, exp, &localpos);
-	}
+  ada_aggregate_operation *ag_op
+    = dynamic_cast<ada_aggregate_operation *> (std::get<1> (m_storage).get ());
+  if (ag_op != nullptr)
+    {
+      if (noside != EVAL_NORMAL)
+	return arg1;
+
+      arg1 = ag_op->assign_aggregate (arg1, arg1, exp);
+      return ada_value_assign (arg1, arg1);
     }
-  ada_evaluate_subexp (NULL, exp, pos, EVAL_SKIP);
+  /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
+     except if the lhs of our assignment is a convenience variable.
+     In the case of assigning to a convenience variable, the lhs
+     should be exactly the result of the evaluation of the rhs.  */
+  struct type *type = arg1->type ();
+  if (arg1->lval () == lval_internalvar)
+    type = NULL;
+  value *arg2 = std::get<1> (m_storage)->evaluate (type, exp, noside);
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return arg1;
+  if (arg1->lval () == lval_internalvar)
+    {
+      /* Nothing.  */
+    }
+  else
+    arg2 = coerce_for_assign (arg1->type (), arg2);
+  return ada_value_assign (arg1, arg2);
 }
 
-/* Add the interval [LOW .. HIGH] to the sorted set of intervals 
-   [ INDICES[0] .. INDICES[1] ],..., [ INDICES[*SIZE-2] .. INDICES[*SIZE-1] ],
-   modifying *SIZE as needed.  It is an error if *SIZE exceeds
-   MAX_SIZE.  The resulting intervals do not overlap.  */
-static void
-add_component_interval (LONGEST low, LONGEST high, 
-			LONGEST* indices, int *size, int max_size)
+/* See ada-exp.h.  */
+
+void
+aggregate_assigner::add_interval (LONGEST from, LONGEST to)
 {
   int i, j;
 
-  for (i = 0; i < *size; i += 2) {
-    if (high >= indices[i] && low <= indices[i + 1])
+  int size = indices.size ();
+  for (i = 0; i < size; i += 2) {
+    if (to >= indices[i] && from <= indices[i + 1])
       {
 	int kh;
 
-	for (kh = i + 2; kh < *size; kh += 2)
-	  if (high < indices[kh])
+	for (kh = i + 2; kh < size; kh += 2)
+	  if (to < indices[kh])
 	    break;
-	if (low < indices[i])
-	  indices[i] = low;
+	if (from < indices[i])
+	  indices[i] = from;
 	indices[i + 1] = indices[kh - 1];
-	if (high > indices[i + 1])
-	  indices[i + 1] = high;
-	memcpy (indices + i + 2, indices + kh, *size - kh);
-	*size -= kh - i - 2;
+	if (to > indices[i + 1])
+	  indices[i + 1] = to;
+	memcpy (indices.data () + i + 2, indices.data () + kh, size - kh);
+	indices.resize (kh - i - 2);
 	return;
       }
-    else if (high < indices[i])
+    else if (to < indices[i])
       break;
   }
 	
-  if (*size == max_size)
-    error (_("Internal error: miscounted aggregate components."));
-  *size += 2;
-  for (j = *size-1; j >= i+2; j -= 1)
+  indices.resize (indices.size () + 2);
+  for (j = indices.size () - 1; j >= i + 2; j -= 1)
     indices[j] = indices[j - 2];
-  indices[i] = low;
-  indices[i + 1] = high;
+  indices[i] = from;
+  indices[i + 1] = to;
 }
 
+} /* namespace expr */
+
 /* Perform and Ada cast of ARG2 to type TYPE if the type of ARG2
    is different.  */
 
 static struct value *
 ada_value_cast (struct type *type, struct value *arg2)
 {
-  if (type == ada_check_typedef (value_type (arg2)))
+  if (type == ada_check_typedef (arg2->type ()))
     return arg2;
 
-  if (ada_is_fixed_point_type (type))
-    return cast_to_fixed (type, arg2);
-
-  if (ada_is_fixed_point_type (value_type (arg2)))
-    return cast_from_fixed (type, arg2);
-
   return value_cast (type, arg2);
 }
 
@@ -10082,7 +9780,7 @@ ada_value_cast (struct type *type, struc
     The following description is a general guide as to what should be
     done (and what should NOT be done) in order to evaluate an expression
     involving such types, and when.  This does not cover how the semantic
-    information is encoded by GNAT as this is covered separatly.  For the
+    information is encoded by GNAT as this is covered separately.  For the
     document used as the reference for the GNAT encoding, see exp_dbug.ads
     in the GNAT sources.
 
@@ -10101,16 +9799,16 @@ ada_value_cast (struct type *type, struc
     known.  Consider for instance a variant record:
 
        type Rec (Empty : Boolean := True) is record
-          case Empty is
-             when True => null;
-             when False => Value : Integer;
-          end case;
+	  case Empty is
+	     when True => null;
+	     when False => Value : Integer;
+	  end case;
        end record;
        Yes : Rec := (Empty => False, Value => 1);
        No  : Rec := (empty => True);
 
     The size and contents of that record depends on the value of the
-    descriminant (Rec.Empty).  At this point, neither the debugging
+    discriminant (Rec.Empty).  At this point, neither the debugging
     information nor the associated type structure in GDB are able to
     express such dynamic types.  So what the debugger does is to create
     "fixed" versions of the type that applies to the specific object.
@@ -10121,15 +9819,15 @@ ada_value_cast (struct type *type, struc
     type would look like this:
 
        type Rec is record
-          Empty : Boolean;
-          Value : Integer;
+	  Empty : Boolean;
+	  Value : Integer;
        end record;
 
     On the other hand, if we printed the value of "No", its fixed type
     would become:
 
        type Rec is record
-          Empty : Boolean;
+	  Empty : Boolean;
        end record;
 
     Things become a little more complicated when trying to fix an entity
@@ -10169,11 +9867,11 @@ ada_value_cast (struct type *type, struc
     The simplest case is when we have an array of a constrained element
     type. For instance, consider the following type declarations:
 
-        type Bounded_String (Max_Size : Integer) is
-           Length : Integer;
-           Buffer : String (1 .. Max_Size);
-        end record;
-        type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
+	type Bounded_String (Max_Size : Integer) is
+	   Length : Integer;
+	   Buffer : String (1 .. Max_Size);
+	end record;
+	type Bounded_String_Array is array (1 ..2) of Bounded_String (80);
 
     In this case, the compiler describes the array as an array of
     variable-size elements (identified by its XVS suffix) for which
@@ -10192,19 +9890,19 @@ ada_value_cast (struct type *type, struc
     But there are cases when this size is not statically known.
     For instance, assuming that "Five" is an integer variable:
 
-        type Dynamic is array (1 .. Five) of Integer;
-        type Wrapper (Has_Length : Boolean := False) is record
-           Data : Dynamic;
-           case Has_Length is
-              when True => Length : Integer;
-              when False => null;
-           end case;
-        end record;
-        type Wrapper_Array is array (1 .. 2) of Wrapper;
-
-        Hello : Wrapper_Array := (others => (Has_Length => True,
-                                             Data => (others => 17),
-                                             Length => 1));
+	type Dynamic is array (1 .. Five) of Integer;
+	type Wrapper (Has_Length : Boolean := False) is record
+	   Data : Dynamic;
+	   case Has_Length is
+	      when True => Length : Integer;
+	      when False => null;
+	   end case;
+	end record;
+	type Wrapper_Array is array (1 .. 2) of Wrapper;
+
+	Hello : Wrapper_Array := (others => (Has_Length => True,
+					     Data => (others => 17),
+					     Length => 1));
 
 
     The debugging info would describe variable Hello as being an
@@ -10224,11 +9922,11 @@ ada_value_cast (struct type *type, struc
 
     Consider for instance the example:
 
-        type Bounded_String (Max_Size : Natural) is record
-           Str : String (1 .. Max_Size);
-           Length : Natural;
-        end record;
-        My_String : Bounded_String (Max_Size => 10);
+	type Bounded_String (Max_Size : Natural) is record
+	   Str : String (1 .. Max_Size);
+	   Length : Natural;
+	end record;
+	My_String : Bounded_String (Max_Size => 10);
 
     In that case, the position of field "Length" depends on the size
     of field Str, which itself depends on the value of the Max_Size
@@ -10242,16 +9940,16 @@ ada_value_cast (struct type *type, struc
     (assuming type Rec above):
 
        type Container (Big : Boolean) is record
-          First : Rec;
-          After : Integer;
-          case Big is
-             when True => Another : Integer;
-             when False => null;
-          end case;
+	  First : Rec;
+	  After : Integer;
+	  case Big is
+	     when True => Another : Integer;
+	     when False => null;
+	  end case;
        end record;
        My_Container : Container := (Big => False,
-                                    First => (Empty => True),
-                                    After => 42);
+				    First => (Empty => True),
+				    After => 42);
 
     In that example, the compiler creates a PAD type for component First,
     whose size is constant, and then positions the component After just
@@ -10276,14 +9974,14 @@ ada_value_cast (struct type *type, struc
     we might end up with the wrong size for our component.  This can be
     observed with the following type declarations:
 
-        type Octal is new Integer range 0 .. 7;
-        type Octal_Array is array (Positive range <>) of Octal;
-        pragma Pack (Octal_Array);
-
-        type Octal_Buffer (Size : Positive) is record
-           Buffer : Octal_Array (1 .. Size);
-           Length : Integer;
-        end record;
+	type Octal is new Integer range 0 .. 7;
+	type Octal_Array is array (Positive range <>) of Octal;
+	pragma Pack (Octal_Array);
+
+	type Octal_Buffer (Size : Positive) is record
+	   Buffer : Octal_Array (1 .. Size);
+	   Length : Integer;
+	end record;
 
     In that case, Buffer is a PAD type whose size is unset and needs
     to be computed by fixing the unwrapped type.
@@ -10313,1220 +10011,1307 @@ ada_value_cast (struct type *type, struc
     entity.  Results in this case are unpredictable, as we usually read
     past the buffer containing the data =:-o.  */
 
-/* Evaluate a subexpression of EXP, at index *POS, and return a value
-   for that subexpression cast to TO_TYPE.  Advance *POS over the
-   subexpression.  */
+/* A helper function for TERNOP_IN_RANGE.  */
 
 static value *
-ada_evaluate_subexp_for_cast (expression *exp, int *pos,
-			      enum noside noside, struct type *to_type)
+eval_ternop_in_range (struct type *expect_type, struct expression *exp,
+		      enum noside noside,
+		      value *arg1, value *arg2, value *arg3)
+{
+  binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
+  binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg3);
+  struct type *type = language_bool_type (exp->language_defn, exp->gdbarch);
+  return
+    value_from_longest (type,
+			(value_less (arg1, arg3)
+			 || value_equal (arg1, arg3))
+			&& (value_less (arg2, arg1)
+			    || value_equal (arg2, arg1)));
+}
+
+/* A helper function for UNOP_NEG.  */
+
+value *
+ada_unop_neg (struct type *expect_type,
+	      struct expression *exp,
+	      enum noside noside, enum exp_opcode op,
+	      struct value *arg1)
 {
-  int pc = *pos;
+  unop_promote (exp->language_defn, exp->gdbarch, &arg1);
+  return value_neg (arg1);
+}
 
-  if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE
-      || exp->elts[pc].opcode == OP_VAR_VALUE)
+/* A helper function for UNOP_IN_RANGE.  */
+
+value *
+ada_unop_in_range (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside, enum exp_opcode op,
+		   struct value *arg1, struct type *type)
+{
+  struct value *arg2, *arg3;
+  switch (type->code ())
     {
-      (*pos) += 4;
-
-      value *val;
-      if (exp->elts[pc].opcode == OP_VAR_MSYM_VALUE)
-        {
-          if (noside == EVAL_AVOID_SIDE_EFFECTS)
-            return value_zero (to_type, not_lval);
-
-          val = evaluate_var_msym_value (noside,
-                                         exp->elts[pc + 1].objfile,
-                                         exp->elts[pc + 2].msymbol);
-        }
-      else
-        val = evaluate_var_value (noside,
-                                  exp->elts[pc + 1].block,
-                                  exp->elts[pc + 2].symbol);
-
-      if (noside == EVAL_SKIP)
-        return eval_skip_value (exp);
-
-      val = ada_value_cast (to_type, val);
-
-      /* Follow the Ada language semantics that do not allow taking
-	 an address of the result of a cast (view conversion in Ada).  */
-      if (VALUE_LVAL (val) == lval_memory)
-        {
-          if (value_lazy (val))
-            value_fetch_lazy (val);
-          VALUE_LVAL (val) = not_lval;
-        }
-      return val;
+    default:
+      lim_warning (_("Membership test incompletely implemented; "
+		     "always returns true"));
+      type = language_bool_type (exp->language_defn, exp->gdbarch);
+      return value_from_longest (type, 1);
+
+    case TYPE_CODE_RANGE:
+      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);
+      return
+	value_from_longest (type,
+			    (value_less (arg1, arg3)
+			     || value_equal (arg1, arg3))
+			    && (value_less (arg2, arg1)
+				|| value_equal (arg2, arg1)));
     }
+}
 
-  value *val = evaluate_subexp (to_type, exp, pos, noside);
-  if (noside == EVAL_SKIP)
-    return eval_skip_value (exp);
-  return ada_value_cast (to_type, val);
+/* A helper function for OP_ATR_TAG.  */
+
+value *
+ada_atr_tag (struct type *expect_type,
+	     struct expression *exp,
+	     enum noside noside, enum exp_opcode op,
+	     struct value *arg1)
+{
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (ada_tag_type (arg1), not_lval);
+
+  return ada_value_tag (arg1);
 }
 
-/* Implement the evaluate_exp routine in the exp_descriptor structure
-   for the Ada language.  */
+namespace expr
+{
 
-static struct value *
-ada_evaluate_subexp (struct type *expect_type, struct expression *exp,
-                     int *pos, enum noside noside)
+value *
+ada_atr_size_operation::evaluate (struct type *expect_type,
+				  struct expression *exp,
+				  enum noside noside)
 {
-  enum exp_opcode op;
-  int tem;
-  int pc;
-  int preeval_pos;
-  struct value *arg1 = NULL, *arg2 = NULL, *arg3;
-  struct type *type;
-  int nargs, oplen;
-  struct value **argvec;
+  bool is_type = std::get<0> (m_storage)->opcode () == OP_TYPE;
+  bool is_size = std::get<1> (m_storage);
 
-  pc = *pos;
-  *pos += 1;
-  op = exp->elts[pc].opcode;
+  enum noside sub_noside = is_type ? EVAL_AVOID_SIDE_EFFECTS : noside;
+  value *val = std::get<0> (m_storage)->evaluate (nullptr, exp, sub_noside);
+  struct type *type = ada_check_typedef (val->type ());
 
-  switch (op)
+  if (is_type)
     {
-    default:
-      *pos -= 1;
-      arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
+      if (is_size)
+	error (_("gdb cannot apply 'Size to a type"));
+      if (is_dynamic_type (type) || find_base_type (type) != nullptr)
+	error (_("cannot apply 'Object_Size to dynamic type"));
+    }
 
-      if (noside == EVAL_NORMAL)
-	arg1 = unwrap_value (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_CODE_REF)
+    type = type->target_type ();
 
-      /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
-         then we need to perform the conversion manually, because
-         evaluate_subexp_standard doesn't do it.  This conversion is
-         necessary in Ada because the different kinds of float/fixed
-         types in Ada have different representations.
-
-         Similarly, we need to perform the conversion from OP_LONG
-         ourselves.  */
-      if ((op == OP_FLOAT || op == OP_LONG) && expect_type != NULL)
-        arg1 = ada_value_cast (expect_type, arg1);
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
+  else
+    return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
+			       TARGET_CHAR_BIT * type->length ());
+}
 
-      return arg1;
+} /* namespace expr */
 
-    case OP_STRING:
-      {
-        struct value *result;
+/* A helper function for UNOP_ABS.  */
 
-        *pos -= 1;
-        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;
-        return result;
-      }
+value *
+ada_abs (struct type *expect_type,
+	 struct expression *exp,
+	 enum noside noside, enum exp_opcode op,
+	 struct value *arg1)
+{
+  unop_promote (exp->language_defn, exp->gdbarch, &arg1);
+  if (value_less (arg1, value::zero (arg1->type (), not_lval)))
+    return value_neg (arg1);
+  else
+    return arg1;
+}
 
-    case UNOP_CAST:
-      (*pos) += 2;
-      type = exp->elts[pc + 1].type;
-      return ada_evaluate_subexp_for_cast (exp, pos, noside, type);
-
-    case UNOP_QUAL:
-      (*pos) += 2;
-      type = exp->elts[pc + 1].type;
-      return ada_evaluate_subexp (type, exp, pos, noside);
-
-    case BINOP_ASSIGN:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (exp->elts[*pos].opcode == OP_AGGREGATE)
-	{
-	  arg1 = assign_aggregate (arg1, arg1, exp, pos, noside);
-	  if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
-	    return arg1;
-	  return ada_value_assign (arg1, arg1);
-	}
-      /* Force the evaluation of the rhs ARG2 to the type of the lhs ARG1,
-         except if the lhs of our assignment is a convenience variable.
-         In the case of assigning to a convenience variable, the lhs
-         should be exactly the result of the evaluation of the rhs.  */
-      type = value_type (arg1);
-      if (VALUE_LVAL (arg1) == lval_internalvar)
-         type = NULL;
-      arg2 = evaluate_subexp (type, exp, pos, noside);
-      if (noside == EVAL_SKIP || noside == EVAL_AVOID_SIDE_EFFECTS)
-        return arg1;
-      if (VALUE_LVAL (arg1) == lval_internalvar)
-	{
-	  /* Nothing.  */
-	}
-      else if (ada_is_fixed_point_type (value_type (arg1)))
-        arg2 = cast_to_fixed (value_type (arg1), arg2);
-      else if (ada_is_fixed_point_type (value_type (arg2)))
-        error
-          (_("Fixed-point values must be assigned to fixed-point variables"));
-      else
-        arg2 = coerce_for_assign (value_type (arg1), arg2);
-      return ada_value_assign (arg1, arg2);
+/* A helper function for BINOP_MUL.  */
 
-    case BINOP_ADD:
-      arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
-      arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      if (TYPE_CODE (value_type (arg1)) == 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)
-        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)))
-          && 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)
-        type = TYPE_TARGET_TYPE (type);
+value *
+ada_mult_binop (struct type *expect_type,
+		struct expression *exp,
+		enum noside noside, enum exp_opcode op,
+		struct value *arg1, struct value *arg2)
+{
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    {
       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
-      return value_cast (type, value_binop (arg1, arg2, BINOP_ADD));
+      return value::zero (arg1->type (), not_lval);
+    }
+  else
+    {
+      binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
+      return ada_value_binop (arg1, arg2, op);
+    }
+}
 
-    case BINOP_SUB:
-      arg1 = evaluate_subexp_with_coercion (exp, pos, noside);
-      arg2 = evaluate_subexp_with_coercion (exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      if (TYPE_CODE (value_type (arg1)) == 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)
-        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)))
-          && value_type (arg1) != value_type (arg2))
-        error (_("Operands of fixed-point subtraction "
-		 "must have the same type"));
-      /* Do the substraction, 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)
-        type = TYPE_TARGET_TYPE (type);
+/* A helper function for BINOP_EQUAL and BINOP_NOTEQUAL.  */
+
+value *
+ada_equal_binop (struct type *expect_type,
+		 struct expression *exp,
+		 enum noside noside, enum exp_opcode op,
+		 struct value *arg1, struct value *arg2)
+{
+  int tem;
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    tem = 0;
+  else
+    {
       binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
-      return value_cast (type, value_binop (arg1, arg2, BINOP_SUB));
+      tem = ada_value_equal (arg1, arg2);
+    }
+  if (op == BINOP_NOTEQUAL)
+    tem = !tem;
+  struct type *type = language_bool_type (exp->language_defn, exp->gdbarch);
+  return value_from_longest (type, tem);
+}
 
-    case BINOP_MUL:
-    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);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        {
-          binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
-          return value_zero (value_type (arg1), not_lval);
-        }
-      else
-        {
-          type = builtin_type (exp->gdbarch)->builtin_double;
-          if (ada_is_fixed_point_type (value_type (arg1)))
-            arg1 = cast_from_fixed (type, arg1);
-          if (ada_is_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);
-        }
+/* A helper function for TERNOP_SLICE.  */
 
-    case BINOP_EQUAL:
-    case BINOP_NOTEQUAL:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (value_type (arg1), exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        tem = 0;
-      else
-	{
-	  binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
-	  tem = ada_value_equal (arg1, arg2);
-	}
-      if (op == BINOP_NOTEQUAL)
-        tem = !tem;
-      type = language_bool_type (exp->language_defn, exp->gdbarch);
-      return value_from_longest (type, (LONGEST) tem);
+value *
+ada_ternop_slice (struct expression *exp,
+		  enum noside noside,
+		  struct value *array, struct value *low_bound_val,
+		  struct value *high_bound_val)
+{
+  LONGEST low_bound;
+  LONGEST high_bound;
 
-    case UNOP_NEG:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else if (ada_is_fixed_point_type (value_type (arg1)))
-        return value_cast (value_type (arg1), value_neg (arg1));
-      else
-	{
-	  unop_promote (exp->language_defn, exp->gdbarch, &arg1);
-	  return value_neg (arg1);
-	}
+  low_bound_val = coerce_ref (low_bound_val);
+  high_bound_val = coerce_ref (high_bound_val);
+  low_bound = value_as_long (low_bound_val);
+  high_bound = value_as_long (high_bound_val);
 
-    case BINOP_LOGICAL_AND:
-    case BINOP_LOGICAL_OR:
-    case UNOP_LOGICAL_NOT:
-      {
-        struct value *val;
+  /* If this is a reference to an aligner type, then remove all
+     the aligners.  */
+  if (array->type ()->code () == TYPE_CODE_REF
+      && ada_is_aligner_type (array->type ()->target_type ()))
+    array->type ()->set_target_type
+      (ada_aligned_type (array->type ()->target_type ()));
 
-        *pos -= 1;
-        val = evaluate_subexp_standard (expect_type, exp, pos, noside);
-	type = language_bool_type (exp->language_defn, exp->gdbarch);
-        return value_cast (type, val);
-      }
+  if (ada_is_any_packed_array_type (array->type ()))
+    error (_("cannot slice a packed array"));
 
-    case BINOP_BITWISE_AND:
-    case BINOP_BITWISE_IOR:
-    case BINOP_BITWISE_XOR:
-      {
-        struct value *val;
+  /* If this is a reference to an array or an array lvalue,
+     convert to a pointer.  */
+  if (array->type ()->code () == TYPE_CODE_REF
+      || (array->type ()->code () == TYPE_CODE_ARRAY
+	  && array->lval () == lval_memory))
+    array = value_addr (array);
 
-        arg1 = evaluate_subexp (NULL_TYPE, exp, pos, EVAL_AVOID_SIDE_EFFECTS);
-        *pos = pc;
-        val = evaluate_subexp_standard (expect_type, exp, pos, noside);
+  if (noside == EVAL_AVOID_SIDE_EFFECTS
+      && ada_is_array_descriptor_type (ada_check_typedef
+				       (array->type ())))
+    return empty_array (ada_type_of_array (array, 0), low_bound,
+			high_bound);
 
-        return value_cast (value_type (arg1), val);
-      }
+  array = ada_coerce_to_simple_array_ptr (array);
 
-    case OP_VAR_VALUE:
-      *pos -= 1;
+  /* If we have more than one level of pointer indirection,
+     dereference the value until we get only one level.  */
+  while (array->type ()->code () == TYPE_CODE_PTR
+	 && (array->type ()->target_type ()->code ()
+	     == TYPE_CODE_PTR))
+    array = value_ind (array);
 
-      if (noside == EVAL_SKIP)
-        {
-          *pos += 4;
-          goto nosideret;
-        }
-
-      if (SYMBOL_DOMAIN (exp->elts[pc + 2].symbol) == UNDEF_DOMAIN)
-        /* Only encountered when an unresolved symbol occurs in a
-           context other than a function call, in which case, it is
-           invalid.  */
-        error (_("Unexpected unresolved symbol, %s, during evaluation"),
-               exp->elts[pc + 2].symbol->print_name ());
+  /* Make sure we really do have an array type before going further,
+     to avoid a SEGV when trying to get the index type or the target
+     type later down the road if the debug info generated by
+     the compiler is incorrect or incomplete.  */
+  if (!ada_is_simple_array_type (array->type ()))
+    error (_("cannot take slice of non-array"));
 
-      if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        {
-          type = static_unwrap_type (SYMBOL_TYPE (exp->elts[pc + 2].symbol));
-          /* Check to see if this is a tagged type.  We also need to handle
-             the case where the type is a reference to a tagged type, but
-             we have to be careful to exclude pointers to tagged types.
-             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
-                  && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0)))
-	    {
-	      /* Tagged types are a little special in the fact that the real
-		 type is dynamic and can only be determined by inspecting the
-		 object's tag.  This means that we need to get the object's
-		 value first (EVAL_NORMAL) and then extract the actual object
-		 type from its tag.
-
-		 Note that we cannot skip the final step where we extract
-		 the object type from its tag, because the EVAL_NORMAL phase
-		 results in dynamic components being resolved into fixed ones.
-		 This can cause problems when trying to print the type
-		 description of tagged types whose parent has a dynamic size:
-		 We use the type name of the "_parent" component in order
-		 to print the name of the ancestor type in the type description.
-		 If that component had a dynamic size, the resolution into
-		 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);
+  if (ada_check_typedef (array->type ())->code ()
+      == TYPE_CODE_PTR)
+    {
+      struct type *type0 = ada_check_typedef (array->type ());
 
-	      if (TYPE_CODE (type) != TYPE_CODE_REF)
-		{
-		  struct type *actual_type;
+      if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
+	return empty_array (type0->target_type (), low_bound, high_bound);
+      else
+	{
+	  struct type *arr_type0 =
+	    to_fixed_array_type (type0->target_type (), NULL, 1);
 
-		  actual_type = type_from_tag (ada_value_tag (arg1));
-		  if (actual_type == NULL)
-		    /* If, for some reason, we were unable to determine
-		       the actual type from the tag, then use the static
-		       approximation that we just computed as a fallback.
-		       This can happen if the debugging information is
-		       incomplete, for instance.  */
-		    actual_type = type;
-		  return value_zero (actual_type, not_lval);
-		}
-	      else
-		{
-		  /* In the case of a ref, ada_coerce_ref takes care
-		     of determining the actual type.  But the evaluation
-		     should return a ref as it should be valid to ask
-		     for its address; so rebuild a ref after coerce.  */
-		  arg1 = ada_coerce_ref (arg1);
-		  return value_ref (arg1, TYPE_CODE_REF);
-		}
-	    }
+	  return ada_value_slice_from_ptr (array, arr_type0,
+					   longest_to_int (low_bound),
+					   longest_to_int (high_bound));
+	}
+    }
+  else if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return array;
+  else if (high_bound < low_bound)
+    return empty_array (array->type (), low_bound, high_bound);
+  else
+    return ada_value_slice (array, longest_to_int (low_bound),
+			    longest_to_int (high_bound));
+}
 
-	  /* Records and unions for which GNAT encodings have been
-	     generated need to be statically fixed as well.
-	     Otherwise, non-static fixing produces a type where
-	     all dynamic properties are removed, which prevents "ptype"
-	     from being able to completely describe the type.
-	     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
-	       && dynamic_template_type (type) != NULL)
-	      || (TYPE_CODE (type) == TYPE_CODE_UNION
-		  && ada_find_parallel_type (type, "___XVU") != NULL))
-	    {
-	      *pos += 4;
-	      return value_zero (to_static_fixed_type (type), not_lval);
-	    }
-        }
+/* A helper function for BINOP_IN_BOUNDS.  */
 
-      arg1 = evaluate_subexp_standard (expect_type, exp, pos, noside);
-      return ada_to_fixed_value (arg1);
+value *
+ada_binop_in_bounds (struct expression *exp, enum noside noside,
+		     struct value *arg1, struct value *arg2, int n)
+{
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    {
+      struct type *type = language_bool_type (exp->language_defn,
+					      exp->gdbarch);
+      return value::zero (type, not_lval);
+    }
 
-    case OP_FUNCALL:
-      (*pos) += 2;
+  struct type *type = ada_index_type (arg2->type (), n, "range");
+  if (!type)
+    type = arg1->type ();
 
-      /* Allocate arg vector, including space for the function to be
-         called in argvec[0] and a terminating NULL.  */
-      nargs = longest_to_int (exp->elts[pc + 1].longconst);
-      argvec = XALLOCAVEC (struct value *, nargs + 2);
-
-      if (exp->elts[*pos].opcode == OP_VAR_VALUE
-          && SYMBOL_DOMAIN (exp->elts[pc + 5].symbol) == UNDEF_DOMAIN)
-        error (_("Unexpected unresolved symbol, %s, during evaluation"),
-               exp->elts[pc + 5].symbol->print_name ());
-      else
-        {
-          for (tem = 0; tem <= nargs; tem += 1)
-            argvec[tem] = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-          argvec[tem] = 0;
-
-          if (noside == EVAL_SKIP)
-            goto nosideret;
-        }
-
-      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
-               && 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)
-	{
-	  /* Make sure we dereference references so that all the code below
-	     feels like it's really handling the referenced value.  Wrapping
-	     types (for alignment) may be there, so make sure we strip them as
-	     well.  */
-	  argvec[0] = ada_to_fixed_value (coerce_ref (argvec[0]));
-	}
-      else if (TYPE_CODE (value_type (argvec[0])) == TYPE_CODE_ARRAY
-	       && VALUE_LVAL (argvec[0]) == lval_memory)
-	argvec[0] = value_addr (argvec[0]);
-
-      type = ada_check_typedef (value_type (argvec[0]));
-
-      /* 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)
-	type = ada_typedef_target_type (type);
+  value *arg3 = value_from_longest (type, ada_array_bound (arg2, n, 1));
+  arg2 = value_from_longest (type, ada_array_bound (arg2, n, 0));
 
-      if (TYPE_CODE (type) == TYPE_CODE_PTR)
-        {
-          switch (TYPE_CODE (ada_check_typedef (TYPE_TARGET_TYPE (type))))
-            {
-            case TYPE_CODE_FUNC:
-              type = ada_check_typedef (TYPE_TARGET_TYPE (type));
-              break;
-            case TYPE_CODE_ARRAY:
-              break;
-            case TYPE_CODE_STRUCT:
-              if (noside != EVAL_AVOID_SIDE_EFFECTS)
-                argvec[0] = ada_value_ind (argvec[0]);
-              type = ada_check_typedef (TYPE_TARGET_TYPE (type));
-              break;
-            default:
-              error (_("cannot subscript or call something of type `%s'"),
-                     ada_type_name (value_type (argvec[0])));
-              break;
-            }
-        }
-
-      switch (TYPE_CODE (type))
-        {
-        case TYPE_CODE_FUNC:
-          if (noside == EVAL_AVOID_SIDE_EFFECTS)
-	    {
-	      if (TYPE_TARGET_TYPE (type) == NULL)
-		error_call_unknown_return_type (NULL);
-	      return allocate_value (TYPE_TARGET_TYPE (type));
-	    }
-	  return call_function_by_hand (argvec[0], NULL,
-					gdb::make_array_view (argvec + 1,
-							      nargs));
-	case TYPE_CODE_INTERNAL_FUNCTION:
-	  if (noside == EVAL_AVOID_SIDE_EFFECTS)
-	    /* We don't know anything about what the internal
-	       function might return, but we have to return
-	       something.  */
-	    return value_zero (builtin_type (exp->gdbarch)->builtin_int,
-			       not_lval);
-	  else
-	    return call_internal_function (exp->gdbarch, exp->language_defn,
-					   argvec[0], nargs, argvec + 1);
+  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);
+  return value_from_longest (type,
+			     (value_less (arg1, arg3)
+			      || value_equal (arg1, arg3))
+			     && (value_less (arg2, arg1)
+				 || value_equal (arg2, arg1)));
+}
 
-        case TYPE_CODE_STRUCT:
-          {
-            int arity;
-
-            arity = ada_array_arity (type);
-            type = ada_array_element_type (type, nargs);
-            if (type == NULL)
-              error (_("cannot subscript or call a record"));
-            if (arity != nargs)
-              error (_("wrong number of subscripts; expecting %d"), arity);
-            if (noside == EVAL_AVOID_SIDE_EFFECTS)
-              return value_zero (ada_aligned_type (type), lval_memory);
-            return
-              unwrap_value (ada_value_subscript
-                            (argvec[0], nargs, argvec + 1));
-          }
-        case TYPE_CODE_ARRAY:
-          if (noside == EVAL_AVOID_SIDE_EFFECTS)
-            {
-              type = ada_array_element_type (type, nargs);
-              if (type == NULL)
-                error (_("element type of array unknown"));
-              else
-                return value_zero (ada_aligned_type (type), lval_memory);
-            }
-          return
-            unwrap_value (ada_value_subscript
-                          (ada_coerce_to_simple_array (argvec[0]),
-                           nargs, argvec + 1));
-        case TYPE_CODE_PTR:     /* Pointer to array */
-          if (noside == EVAL_AVOID_SIDE_EFFECTS)
-            {
-	      type = to_fixed_array_type (TYPE_TARGET_TYPE (type), NULL, 1);
-              type = ada_array_element_type (type, nargs);
-              if (type == NULL)
-                error (_("element type of array unknown"));
-              else
-                return value_zero (ada_aligned_type (type), lval_memory);
-            }
-          return
-            unwrap_value (ada_value_ptr_subscript (argvec[0],
-						   nargs, argvec + 1));
-
-        default:
-          error (_("Attempt to index or call something other than an "
-		   "array or function"));
-        }
+/* A helper function for some attribute operations.  */
 
-    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;
-        LONGEST high_bound;
-
-        low_bound_val = coerce_ref (low_bound_val);
-        high_bound_val = coerce_ref (high_bound_val);
-        low_bound = value_as_long (low_bound_val);
-        high_bound = value_as_long (high_bound_val);
-
-        if (noside == EVAL_SKIP)
-          goto nosideret;
-
-        /* If this is a reference to an aligner type, then remove all
-           the aligners.  */
-        if (TYPE_CODE (value_type (array)) == 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)));
-
-        if (ada_is_constrained_packed_array_type (value_type (array)))
-          error (_("cannot slice a packed array"));
-
-        /* 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
-                && VALUE_LVAL (array) == lval_memory))
-          array = value_addr (array);
-
-        if (noside == EVAL_AVOID_SIDE_EFFECTS
-            && ada_is_array_descriptor_type (ada_check_typedef
-                                             (value_type (array))))
-          return empty_array (ada_type_of_array (array, 0), low_bound,
-			      high_bound);
-
-        array = ada_coerce_to_simple_array_ptr (array);
-
-        /* 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)))
-                     == TYPE_CODE_PTR))
-          array = value_ind (array);
-
-        /* Make sure we really do have an array type before going further,
-           to avoid a SEGV when trying to get the index type or the target
-           type later down the road if the debug info generated by
-           the compiler is incorrect or incomplete.  */
-        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)))
-            == TYPE_CODE_PTR)
-          {
-            struct type *type0 = ada_check_typedef (value_type (array));
-
-            if (high_bound < low_bound || noside == EVAL_AVOID_SIDE_EFFECTS)
-              return empty_array (TYPE_TARGET_TYPE (type0), low_bound, high_bound);
-            else
-              {
-                struct type *arr_type0 =
-                  to_fixed_array_type (TYPE_TARGET_TYPE (type0), NULL, 1);
-
-                return ada_value_slice_from_ptr (array, arr_type0,
-                                                 longest_to_int (low_bound),
-                                                 longest_to_int (high_bound));
-              }
-          }
-        else if (noside == EVAL_AVOID_SIDE_EFFECTS)
-          return array;
-        else if (high_bound < low_bound)
-          return empty_array (value_type (array), low_bound, high_bound);
-        else
-          return ada_value_slice (array, longest_to_int (low_bound),
-				  longest_to_int (high_bound));
-      }
+static value *
+ada_unop_atr (struct expression *exp, enum noside noside, enum exp_opcode op,
+	      struct value *arg1, struct type *type_arg, int tem)
+{
+  const char *attr_name = nullptr;
+  if (op == OP_ATR_FIRST)
+    attr_name = "first";
+  else if (op == OP_ATR_LAST)
+    attr_name = "last";
 
-    case UNOP_IN_RANGE:
-      (*pos) += 2;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      type = check_typedef (exp->elts[pc + 1].type);
-
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-
-      switch (TYPE_CODE (type))
-        {
-        default:
-          lim_warning (_("Membership test incompletely implemented; "
-			 "always returns true"));
-	  type = language_bool_type (exp->language_defn, exp->gdbarch);
-	  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));
-	  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);
-	  return
-	    value_from_longest (type,
-                                (value_less (arg1, arg3)
-                                 || value_equal (arg1, arg3))
-                                && (value_less (arg2, arg1)
-                                    || value_equal (arg2, arg1)));
-        }
-
-    case BINOP_IN_BOUNDS:
-      (*pos) += 2;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    {
+      if (type_arg == NULL)
+	type_arg = arg1->type ();
 
-      if (noside == EVAL_SKIP)
-        goto nosideret;
+      if (ada_is_constrained_packed_array_type (type_arg))
+	type_arg = decode_constrained_packed_array_type (type_arg);
 
-      if (noside == EVAL_AVOID_SIDE_EFFECTS)
+      if (!discrete_type_p (type_arg))
 	{
-	  type = language_bool_type (exp->language_defn, exp->gdbarch);
-	  return value_zero (type, not_lval);
+	  switch (op)
+	    {
+	    default:          /* Should never happen.  */
+	      error (_("unexpected attribute encountered"));
+	    case OP_ATR_FIRST:
+	    case OP_ATR_LAST:
+	      type_arg = ada_index_type (type_arg, tem,
+					 attr_name);
+	      break;
+	    case OP_ATR_LENGTH:
+	      type_arg = builtin_type (exp->gdbarch)->builtin_int;
+	      break;
+	    }
 	}
 
-      tem = longest_to_int (exp->elts[pc + 1].longconst);
+      return value::zero (type_arg, not_lval);
+    }
+  else if (type_arg == NULL)
+    {
+      arg1 = ada_coerce_ref (arg1);
 
-      type = ada_index_type (value_type (arg2), tem, "range");
-      if (!type)
-	type = value_type (arg1);
+      if (ada_is_constrained_packed_array_type (arg1->type ()))
+	arg1 = ada_coerce_to_simple_array (arg1);
 
-      arg3 = value_from_longest (type, ada_array_bound (arg2, tem, 1));
-      arg2 = value_from_longest (type, ada_array_bound (arg2, tem, 0));
+      struct type *type;
+      if (op == OP_ATR_LENGTH)
+	type = builtin_type (exp->gdbarch)->builtin_int;
+      else
+	{
+	  type = ada_index_type (arg1->type (), tem,
+				 attr_name);
+	  if (type == NULL)
+	    type = builtin_type (exp->gdbarch)->builtin_int;
+	}
+
+      switch (op)
+	{
+	default:          /* Should never happen.  */
+	  error (_("unexpected attribute encountered"));
+	case OP_ATR_FIRST:
+	  return value_from_longest
+	    (type, ada_array_bound (arg1, tem, 0));
+	case OP_ATR_LAST:
+	  return value_from_longest
+	    (type, ada_array_bound (arg1, tem, 1));
+	case OP_ATR_LENGTH:
+	  return value_from_longest
+	    (type, ada_array_length (arg1, tem));
+	}
+    }
+  else if (discrete_type_p (type_arg))
+    {
+      struct type *range_type;
+      const char *name = ada_type_name (type_arg);
+
+      range_type = NULL;
+      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;
+      switch (op)
+	{
+	default:
+	  error (_("unexpected attribute encountered"));
+	case OP_ATR_FIRST:
+	  return value_from_longest 
+	    (range_type, ada_discrete_type_low_bound (range_type));
+	case OP_ATR_LAST:
+	  return value_from_longest
+	    (range_type, ada_discrete_type_high_bound (range_type));
+	case OP_ATR_LENGTH:
+	  error (_("the 'length attribute applies only to array types"));
+	}
+    }
+  else if (type_arg->code () == TYPE_CODE_FLT)
+    error (_("unimplemented type attribute"));
+  else
+    {
+      LONGEST low, high;
 
-      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);
-      return
-        value_from_longest (type,
-                            (value_less (arg1, arg3)
-                             || value_equal (arg1, arg3))
-                            && (value_less (arg2, arg1)
-                                || 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);
+      if (ada_is_constrained_packed_array_type (type_arg))
+	type_arg = decode_constrained_packed_array_type (type_arg);
 
-      if (noside == EVAL_SKIP)
-        goto nosideret;
+      struct type *type;
+      if (op == OP_ATR_LENGTH)
+	type = builtin_type (exp->gdbarch)->builtin_int;
+      else
+	{
+	  type = ada_index_type (type_arg, tem, attr_name);
+	  if (type == NULL)
+	    type = builtin_type (exp->gdbarch)->builtin_int;
+	}
+
+      switch (op)
+	{
+	default:
+	  error (_("unexpected attribute encountered"));
+	case OP_ATR_FIRST:
+	  low = ada_array_bound_from_type (type_arg, tem, 0);
+	  return value_from_longest (type, low);
+	case OP_ATR_LAST:
+	  high = ada_array_bound_from_type (type_arg, tem, 1);
+	  return value_from_longest (type, high);
+	case OP_ATR_LENGTH:
+	  low = ada_array_bound_from_type (type_arg, tem, 0);
+	  high = ada_array_bound_from_type (type_arg, tem, 1);
+	  return value_from_longest (type, high - low + 1);
+	}
+    }
+}
+
+/* A helper function for OP_ATR_MIN and OP_ATR_MAX.  */
 
+struct value *
+ada_binop_minmax (struct type *expect_type,
+		  struct expression *exp,
+		  enum noside noside, enum exp_opcode op,
+		  struct value *arg1, struct value *arg2)
+{
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (arg1->type (), not_lval);
+  else
+    {
       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);
-      return
-        value_from_longest (type,
-                            (value_less (arg1, arg3)
-                             || value_equal (arg1, arg3))
-                            && (value_less (arg2, arg1)
-                                || value_equal (arg2, arg1)));
-
-    case OP_ATR_FIRST:
-    case OP_ATR_LAST:
-    case OP_ATR_LENGTH:
-      {
-        struct type *type_arg;
+      return value_binop (arg1, arg2, op);
+    }
+}
 
-        if (exp->elts[*pos].opcode == OP_TYPE)
-          {
-            evaluate_subexp (NULL_TYPE, 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;
-          }
-
-        if (exp->elts[*pos].opcode != OP_LONG)
-          error (_("Invalid operand to '%s"), ada_attribute_name (op));
-        tem = longest_to_int (exp->elts[*pos + 2].longconst);
-        *pos += 4;
-
-        if (noside == EVAL_SKIP)
-          goto nosideret;
-	else if (noside == EVAL_AVOID_SIDE_EFFECTS)
-	  {
-	    if (type_arg == NULL)
-	      type_arg = value_type (arg1);
+/* A helper function for BINOP_EXP.  */
 
-            if (ada_is_constrained_packed_array_type (type_arg))
-	      type_arg = decode_constrained_packed_array_type (type_arg);
+struct value *
+ada_binop_exp (struct type *expect_type,
+	       struct expression *exp,
+	       enum noside noside, enum exp_opcode op,
+	       struct value *arg1, struct value *arg2)
+{
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (arg1->type (), not_lval);
+  else
+    {
+      /* For integer exponentiation operations,
+	 only promote the first argument.  */
+      if (is_integral_type (arg2->type ()))
+	unop_promote (exp->language_defn, exp->gdbarch, &arg1);
+      else
+	binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
 
-	    if (!discrete_type_p (type_arg))
-	      {
-		switch (op)
-		  {
-		  default:          /* Should never happen.  */
-		    error (_("unexpected attribute encountered"));
-		  case OP_ATR_FIRST:
-		  case OP_ATR_LAST:
-		    type_arg = ada_index_type (type_arg, tem,
-					       ada_attribute_name (op));
-		    break;
-		  case OP_ATR_LENGTH:
-		    type_arg = builtin_type (exp->gdbarch)->builtin_int;
-		    break;
-		  }
-	      }
+      return value_binop (arg1, arg2, op);
+    }
+}
 
-	    return value_zero (type_arg, not_lval);
-	  }
-        else if (type_arg == NULL)
-          {
-            arg1 = ada_coerce_ref (arg1);
-
-            if (ada_is_constrained_packed_array_type (value_type (arg1)))
-              arg1 = ada_coerce_to_simple_array (arg1);
-
-            if (op == OP_ATR_LENGTH)
-	      type = builtin_type (exp->gdbarch)->builtin_int;
-	    else
-	      {
-		type = ada_index_type (value_type (arg1), tem,
-				       ada_attribute_name (op));
-		if (type == NULL)
-		  type = builtin_type (exp->gdbarch)->builtin_int;
-	      }
+namespace expr
+{
 
-            switch (op)
-              {
-              default:          /* Should never happen.  */
-                error (_("unexpected attribute encountered"));
-              case OP_ATR_FIRST:
-                return value_from_longest
-			(type, ada_array_bound (arg1, tem, 0));
-              case OP_ATR_LAST:
-                return value_from_longest
-			(type, ada_array_bound (arg1, tem, 1));
-              case OP_ATR_LENGTH:
-                return value_from_longest
-			(type, ada_array_length (arg1, tem));
-              }
-          }
-        else if (discrete_type_p (type_arg))
-          {
-            struct type *range_type;
-            const char *name = ada_type_name (type_arg);
-
-            range_type = NULL;
-            if (name != NULL && TYPE_CODE (type_arg) != TYPE_CODE_ENUM)
-              range_type = to_fixed_range_type (type_arg, NULL);
-            if (range_type == NULL)
-              range_type = type_arg;
-            switch (op)
-              {
-              default:
-                error (_("unexpected attribute encountered"));
-              case OP_ATR_FIRST:
-		return value_from_longest 
-		  (range_type, ada_discrete_type_low_bound (range_type));
-              case OP_ATR_LAST:
-                return value_from_longest
-		  (range_type, ada_discrete_type_high_bound (range_type));
-              case OP_ATR_LENGTH:
-                error (_("the 'length attribute applies only to array types"));
-              }
-          }
-        else if (TYPE_CODE (type_arg) == TYPE_CODE_FLT)
-          error (_("unimplemented type attribute"));
-        else
-          {
-            LONGEST low, high;
-
-            if (ada_is_constrained_packed_array_type (type_arg))
-              type_arg = decode_constrained_packed_array_type (type_arg);
-
-	    if (op == OP_ATR_LENGTH)
-	      type = builtin_type (exp->gdbarch)->builtin_int;
-	    else
-	      {
-		type = ada_index_type (type_arg, tem, ada_attribute_name (op));
-		if (type == NULL)
-		  type = builtin_type (exp->gdbarch)->builtin_int;
-	      }
+/* See ada-exp.h.  */
 
-            switch (op)
-              {
-              default:
-                error (_("unexpected attribute encountered"));
-              case OP_ATR_FIRST:
-                low = ada_array_bound_from_type (type_arg, tem, 0);
-                return value_from_longest (type, low);
-              case OP_ATR_LAST:
-                high = ada_array_bound_from_type (type_arg, tem, 1);
-                return value_from_longest (type, high);
-              case OP_ATR_LENGTH:
-                low = ada_array_bound_from_type (type_arg, tem, 0);
-                high = ada_array_bound_from_type (type_arg, tem, 1);
-                return value_from_longest (type, high - low + 1);
-              }
-          }
-      }
+operation_up
+ada_resolvable::replace (operation_up &&owner,
+			 struct expression *exp,
+			 bool deprocedure_p,
+			 bool parse_completion,
+			 innermost_block_tracker *tracker,
+			 struct type *context_type)
+{
+  if (resolve (exp, deprocedure_p, parse_completion, tracker, context_type))
+    return (make_operation<ada_funcall_operation>
+	    (std::move (owner),
+	     std::vector<operation_up> ()));
+  return std::move (owner);
+}
+
+/* Convert the character literal whose value would be VAL to the
+   appropriate value of type TYPE, if there is a translation.
+   Otherwise return VAL.  Hence, in an enumeration type ('A', 'B'),
+   the literal 'A' (VAL == 65), returns 0.  */
 
-    case OP_ATR_TAG:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
+static LONGEST
+convert_char_literal (struct type *type, LONGEST val)
+{
+  char name[12];
 
-      if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        return value_zero (ada_tag_type (arg1), not_lval);
+  if (type == NULL)
+    return val;
+  type = check_typedef (type);
+  if (type->code () != TYPE_CODE_ENUM)
+    return val;
 
-      return ada_value_tag (arg1);
+  if ((val >= 'a' && val <= 'z') || (val >= '0' && val <= '9'))
+    xsnprintf (name, sizeof (name), "Q%c", (int) val);
+  else if (val >= 0 && val < 256)
+    xsnprintf (name, sizeof (name), "QU%02x", (unsigned) val);
+  else if (val >= 0 && val < 0x10000)
+    xsnprintf (name, sizeof (name), "QW%04x", (unsigned) val);
+  else
+    xsnprintf (name, sizeof (name), "QWW%08lx", (unsigned long) val);
+  size_t len = strlen (name);
+  for (const auto &field : type->fields ())
+    {
+      /* Check the suffix because an enum constant in a package will
+	 have a name like "pkg__QUxx".  This is safe enough because we
+	 already have the correct type, and because mangling means
+	 there can't be clashes.  */
+      const char *ename = field.name ();
+      size_t elen = strlen (ename);
 
-    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);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        return value_zero (value_type (arg1), not_lval);
-      else
-	{
-	  binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
-	  return value_binop (arg1, arg2,
-			      op == OP_ATR_MIN ? BINOP_MIN : BINOP_MAX);
-	}
+      if (elen >= len && strcmp (name, ename + elen - len) == 0)
+	return field.loc_enumval ();
+    }
+  return val;
+}
 
-    case OP_ATR_MODULUS:
-      {
-        struct type *type_arg = check_typedef (exp->elts[pc + 2].type);
+value *
+ada_char_operation::evaluate (struct type *expect_type,
+			      struct expression *exp,
+			      enum noside noside)
+{
+  value *result = long_const_operation::evaluate (expect_type, exp, noside);
+  if (expect_type != nullptr)
+    result = ada_value_cast (expect_type, result);
+  return result;
+}
 
-        evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
-        if (noside == EVAL_SKIP)
-          goto nosideret;
+/* See ada-exp.h.  */
 
-        if (!ada_is_modular_type (type_arg))
-          error (_("'modulus must be applied to modular type"));
+operation_up
+ada_char_operation::replace (operation_up &&owner,
+			     struct expression *exp,
+			     bool deprocedure_p,
+			     bool parse_completion,
+			     innermost_block_tracker *tracker,
+			     struct type *context_type)
+{
+  operation_up result = std::move (owner);
+
+  if (context_type != nullptr && context_type->code () == TYPE_CODE_ENUM)
+    {
+      LONGEST val = as_longest ();
+      gdb_assert (result.get () == this);
+      std::get<0> (m_storage) = context_type;
+      std::get<1> (m_storage) = convert_char_literal (context_type, val);
+    }
 
-        return value_from_longest (TYPE_TARGET_TYPE (type_arg),
-                                   ada_modulus (type_arg));
-      }
+  return result;
+}
 
+value *
+ada_wrapped_operation::evaluate (struct type *expect_type,
+				 struct expression *exp,
+				 enum noside noside)
+{
+  value *result = std::get<0> (m_storage)->evaluate (expect_type, exp, noside);
+  if (noside == EVAL_NORMAL)
+    result = unwrap_value (result);
+
+  /* If evaluating an OP_FLOAT and an EXPECT_TYPE was provided,
+     then we need to perform the conversion manually, because
+     evaluate_subexp_standard doesn't do it.  This conversion is
+     necessary in Ada because the different kinds of float/fixed
+     types in Ada have different representations.
+
+     Similarly, we need to perform the conversion from OP_LONG
+     ourselves.  */
+  if ((opcode () == OP_FLOAT || opcode () == OP_LONG) && expect_type != NULL)
+    result = ada_value_cast (expect_type, result);
 
-    case OP_ATR_POS:
-      evaluate_subexp (NULL_TYPE, exp, pos, EVAL_SKIP);
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      type = builtin_type (exp->gdbarch)->builtin_int;
-      if (noside == EVAL_AVOID_SIDE_EFFECTS)
-	return value_zero (type, not_lval);
-      else
-	return value_pos_atr (type, arg1);
+  return result;
+}
 
-    case OP_ATR_SIZE:
-      arg1 = evaluate_subexp (NULL_TYPE, 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)
-        type = TYPE_TARGET_TYPE (type);
-
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        return value_zero (builtin_type (exp->gdbarch)->builtin_int, not_lval);
-      else
-        return value_from_longest (builtin_type (exp->gdbarch)->builtin_int,
-                                   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);
-      type = exp->elts[pc + 2].type;
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        return value_zero (type, not_lval);
-      else
-        return value_val_atr (type, arg1);
+void
+ada_wrapped_operation::do_generate_ax (struct expression *exp,
+				       struct agent_expr *ax,
+				       struct axs_value *value,
+				       struct type *cast_type)
+{
+  std::get<0> (m_storage)->generate_ax (exp, ax, value, cast_type);
 
-    case BINOP_EXP:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      arg2 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        return value_zero (value_type (arg1), not_lval);
-      else
-	{
-	  /* For integer exponentiation operations,
-	     only promote the first argument.  */
-	  if (is_integral_type (value_type (arg2)))
-	    unop_promote (exp->language_defn, exp->gdbarch, &arg1);
-	  else
-	    binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
+  struct type *type = value->type;
+  if (ada_is_aligner_type (type))
+    error (_("Aligner types cannot be handled in agent expressions"));
+  else if (find_base_type (type) != nullptr)
+    error (_("Dynamic types cannot be handled in agent expressions"));
+}
 
-	  return value_binop (arg1, arg2, op);
-	}
+value *
+ada_string_operation::evaluate (struct type *expect_type,
+				struct expression *exp,
+				enum noside noside)
+{
+  struct type *char_type;
+  if (expect_type != nullptr && ada_is_string_type (expect_type))
+    char_type = ada_array_element_type (expect_type, 1);
+  else
+    char_type = language_string_char_type (exp->language_defn, exp->gdbarch);
 
-    case UNOP_PLUS:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else
-        return arg1;
+  const std::string &str = std::get<0> (m_storage);
+  const char *encoding;
+  switch (char_type->length ())
+    {
+    case 1:
+      {
+	/* Simply copy over the data -- this isn't perhaps strictly
+	   correct according to the encodings, but it is gdb's
+	   historical behavior.  */
+	struct type *stringtype
+	  = lookup_array_range_type (char_type, 1, str.length ());
+	struct value *val = value::allocate (stringtype);
+	memcpy (val->contents_raw ().data (), str.c_str (),
+		str.length ());
+	return val;
+      }
 
-    case UNOP_ABS:
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      unop_promote (exp->language_defn, exp->gdbarch, &arg1);
-      if (value_less (arg1, value_zero (value_type (arg1), not_lval)))
-        return value_neg (arg1);
-      else
-        return arg1;
-
-    case UNOP_IND:
-      preeval_pos = *pos;
-      arg1 = evaluate_subexp (NULL_TYPE, exp, pos, noside);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      type = ada_check_typedef (value_type (arg1));
-      if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        {
-          if (ada_is_array_descriptor_type (type))
-            /* GDB allows dereferencing GNAT array descriptors.  */
-            {
-              struct type *arrType = ada_type_of_array (arg1, 0);
-
-              if (arrType == NULL)
-                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
-                   /* In C you can dereference an array to get the 1st elt.  */
-                   || TYPE_CODE (type) == 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)
-		  && ada_is_tagged_type (TYPE_TARGET_TYPE (type), 0))
-		{
-		  arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
-					  EVAL_NORMAL);
-		  type = value_type (ada_value_ind (arg1));
-		}
-	      else
-		{
-		  type = to_static_fixed_type
-		    (ada_aligned_type
-		     (ada_check_typedef (TYPE_TARGET_TYPE (type))));
-		}
-	      ada_ensure_varsize_limit (type);
-              return value_zero (type, lval_memory);
-            }
-          else if (TYPE_CODE (type) == TYPE_CODE_INT)
-	    {
-	      /* GDB allows dereferencing an int.  */
-	      if (expect_type == NULL)
-		return value_zero (builtin_type (exp->gdbarch)->builtin_int,
-				   lval_memory);
-	      else
-		{
-		  expect_type = 
-		    to_static_fixed_type (ada_aligned_type (expect_type));
-		  return value_zero (expect_type, lval_memory);
-		}
-	    }
-          else
-            error (_("Attempt to take contents of a non-pointer value."));
-        }
-      arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
-      type = ada_check_typedef (value_type (arg1));
-
-      if (TYPE_CODE (type) == 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.  */
-        {
-          if (expect_type != NULL)
-	    return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
-					      arg1));
-	  else
-	    return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
-				  (CORE_ADDR) value_as_address (arg1));
-        }
+    case 2:
+      if (gdbarch_byte_order (exp->gdbarch) == BFD_ENDIAN_BIG)
+	encoding = "UTF-16BE";
+      else
+	encoding = "UTF-16LE";
+      break;
 
-      if (ada_is_array_descriptor_type (type))
-        /* GDB allows dereferencing GNAT array descriptors.  */
-        return ada_coerce_to_simple_array (arg1);
+    case 4:
+      if (gdbarch_byte_order (exp->gdbarch) == BFD_ENDIAN_BIG)
+	encoding = "UTF-32BE";
       else
-        return ada_value_ind (arg1);
+	encoding = "UTF-32LE";
+      break;
 
-    case STRUCTOP_STRUCT:
-      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);
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        {
-          struct type *type1 = value_type (arg1);
+    default:
+      error (_("unexpected character type size %s"),
+	     pulongest (char_type->length ()));
+    }
 
-          if (ada_is_tagged_type (type1, 1))
-            {
-              type = ada_lookup_struct_elt_type (type1,
-                                                 &exp->elts[pc + 2].string,
-                                                 1, 1);
-
-	      /* If the field is not found, check if it exists in the
-		 extension of this object's type. This means that we
-		 need to evaluate completely the expression.  */
+  auto_obstack converted;
+  convert_between_encodings (host_charset (), encoding,
+			     (const gdb_byte *) str.c_str (),
+			     str.length (), 1,
+			     &converted, translit_none);
+
+  struct type *stringtype
+    = lookup_array_range_type (char_type, 1,
+			       obstack_object_size (&converted)
+			       / char_type->length ());
+  struct value *val = value::allocate (stringtype);
+  memcpy (val->contents_raw ().data (),
+	  obstack_base (&converted),
+	  obstack_object_size (&converted));
+  return val;
+}
 
-              if (type == NULL)
-		{
-		  arg1 = evaluate_subexp (NULL_TYPE, exp, &preeval_pos,
-					  EVAL_NORMAL);
-		  arg1 = ada_value_struct_elt (arg1,
-					       &exp->elts[pc + 2].string,
-					       0);
-		  arg1 = unwrap_value (arg1);
-		  type = value_type (ada_to_fixed_value (arg1));
-		}
-            }
-          else
-            type =
-              ada_lookup_struct_elt_type (type1, &exp->elts[pc + 2].string, 1,
-                                          0);
-
-          return value_zero (ada_aligned_type (type), lval_memory);
-        }
-      else
-	{
-	  arg1 = ada_value_struct_elt (arg1, &exp->elts[pc + 2].string, 0);
-	  arg1 = unwrap_value (arg1);
-	  return ada_to_fixed_value (arg1);
-	}
-
-    case OP_TYPE:
-      /* The value is not supposed to be used.  This is here to make it
-         easier to accommodate expressions that contain types.  */
-      (*pos) += 2;
-      if (noside == EVAL_SKIP)
-        goto nosideret;
-      else if (noside == EVAL_AVOID_SIDE_EFFECTS)
-        return allocate_value (exp->elts[pc + 1].type);
-      else
-        error (_("Attempt to use a type name as an expression"));
-
-    case OP_AGGREGATE:
-    case OP_CHOICES:
-    case OP_OTHERS:
-    case OP_DISCRETE_RANGE:
-    case OP_POSITIONAL:
-    case OP_NAME:
-      if (noside == EVAL_NORMAL)
-	switch (op) 
-	  {
-	  case OP_NAME:
-	    error (_("Undefined name, ambiguous name, or renaming used in "
-		     "component association: %s."), &exp->elts[pc+2].string);
-	  case OP_AGGREGATE:
-	    error (_("Aggregates only allowed on the right of an assignment"));
-	  default:
-	    internal_error (__FILE__, __LINE__,
-			    _("aggregate apparently mangled"));
-	  }
+value *
+ada_concat_operation::evaluate (struct type *expect_type,
+				struct expression *exp,
+				enum noside noside)
+{
+  /* If one side is a literal, evaluate the other side first so that
+     the expected type can be set properly.  */
+  const operation_up &lhs_expr = std::get<0> (m_storage);
+  const operation_up &rhs_expr = std::get<1> (m_storage);
 
-      ada_forward_operator_length (exp, pc, &oplen, &nargs);
-      *pos += oplen - 1;
-      for (tem = 0; tem < nargs; tem += 1) 
-	ada_evaluate_subexp (NULL, exp, pos, noside);
-      goto nosideret;
+  value *lhs, *rhs;
+  if (dynamic_cast<ada_string_operation *> (lhs_expr.get ()) != nullptr)
+    {
+      rhs = rhs_expr->evaluate (nullptr, exp, noside);
+      lhs = lhs_expr->evaluate (rhs->type (), exp, noside);
+    }
+  else if (dynamic_cast<ada_char_operation *> (lhs_expr.get ()) != nullptr)
+    {
+      rhs = rhs_expr->evaluate (nullptr, exp, noside);
+      struct type *rhs_type = check_typedef (rhs->type ());
+      struct type *elt_type = nullptr;
+      if (rhs_type->code () == TYPE_CODE_ARRAY)
+	elt_type = rhs_type->target_type ();
+      lhs = lhs_expr->evaluate (elt_type, exp, noside);
+    }
+  else if (dynamic_cast<ada_string_operation *> (rhs_expr.get ()) != nullptr)
+    {
+      lhs = lhs_expr->evaluate (nullptr, exp, noside);
+      rhs = rhs_expr->evaluate (lhs->type (), exp, noside);
+    }
+  else if (dynamic_cast<ada_char_operation *> (rhs_expr.get ()) != nullptr)
+    {
+      lhs = lhs_expr->evaluate (nullptr, exp, noside);
+      struct type *lhs_type = check_typedef (lhs->type ());
+      struct type *elt_type = nullptr;
+      if (lhs_type->code () == TYPE_CODE_ARRAY)
+	elt_type = lhs_type->target_type ();
+      rhs = rhs_expr->evaluate (elt_type, exp, noside);
     }
+  else
+    return concat_operation::evaluate (expect_type, exp, noside);
 
-nosideret:
-  return eval_skip_value (exp);
+  return value_concat (lhs, rhs);
 }
-
 
-                                /* Fixed point */
+value *
+ada_qual_operation::evaluate (struct type *expect_type,
+			      struct expression *exp,
+			      enum noside noside)
+{
+  struct type *type = std::get<1> (m_storage);
+  return std::get<0> (m_storage)->evaluate (type, exp, noside);
+}
 
-/* If TYPE encodes an Ada fixed-point type, return the suffix of the
-   type name that encodes the 'small and 'delta information.
-   Otherwise, return NULL.  */
+value *
+ada_ternop_range_operation::evaluate (struct type *expect_type,
+				      struct expression *exp,
+				      enum noside noside)
+{
+  value *arg0 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
+  value *arg1 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
+  value *arg2 = std::get<2> (m_storage)->evaluate (nullptr, exp, noside);
+  return eval_ternop_in_range (expect_type, exp, noside, arg0, arg1, arg2);
+}
 
-static const char *
-fixed_type_info (struct type *type)
+value *
+ada_binop_addsub_operation::evaluate (struct type *expect_type,
+				      struct expression *exp,
+				      enum noside noside)
 {
-  const char *name = ada_type_name (type);
-  enum type_code code = (type == NULL) ? TYPE_CODE_UNDEF : TYPE_CODE (type);
+  value *arg1 = std::get<1> (m_storage)->evaluate_with_coercion (exp, noside);
+  value *arg2 = std::get<2> (m_storage)->evaluate_with_coercion (exp, noside);
 
-  if ((code == TYPE_CODE_INT || code == TYPE_CODE_RANGE) && name != NULL)
+  auto do_op = [this] (LONGEST x, LONGEST y)
     {
-      const char *tail = strstr (name, "___XF_");
+      if (std::get<0> (m_storage) == BINOP_ADD)
+	return x + y;
+      return x - y;
+    };
 
-      if (tail == NULL)
-        return NULL;
-      else
-        return tail + 5;
+  if (arg1->type ()->code () == TYPE_CODE_PTR)
+    return (value_from_longest
+	    (arg1->type (),
+	     do_op (value_as_long (arg1), value_as_long (arg2))));
+  if (arg2->type ()->code () == TYPE_CODE_PTR)
+    return (value_from_longest
+	    (arg2->type (),
+	     do_op (value_as_long (arg1), value_as_long (arg2))));
+  /* Preserve the original type for use by the range case below.
+     We cannot cast the result to a reference type, so if ARG1 is
+     a reference type, find its underlying type.  */
+  struct type *type = arg1->type ();
+  while (type->code () == TYPE_CODE_REF)
+    type = type->target_type ();
+  binop_promote (exp->language_defn, exp->gdbarch, &arg1, &arg2);
+  arg1 = value_binop (arg1, arg2, std::get<0> (m_storage));
+  /* We need to special-case the result with a range.
+     This is done for the benefit of "ptype".  gdb's Ada support
+     historically used the LHS to set the result type here, so
+     preserve this behavior.  */
+  if (type->code () == TYPE_CODE_RANGE)
+    arg1 = value_cast (type, arg1);
+  return arg1;
+}
+
+value *
+ada_unop_atr_operation::evaluate (struct type *expect_type,
+				  struct expression *exp,
+				  enum noside noside)
+{
+  struct type *type_arg = nullptr;
+  value *val = nullptr;
+
+  if (std::get<0> (m_storage)->type_p ())
+    {
+      value *tem = std::get<0> (m_storage)->evaluate (nullptr, exp,
+						      EVAL_AVOID_SIDE_EFFECTS);
+      type_arg = tem->type ();
+    }
+  else
+    val = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
+
+  return ada_unop_atr (exp, noside, std::get<1> (m_storage),
+		       val, type_arg, std::get<2> (m_storage));
+}
+
+value *
+ada_var_msym_value_operation::evaluate_for_cast (struct type *expect_type,
+						 struct expression *exp,
+						 enum noside noside)
+{
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    return value::zero (expect_type, not_lval);
+
+  const bound_minimal_symbol &b = std::get<0> (m_storage);
+  value *val = evaluate_var_msym_value (noside, b.objfile, b.minsym);
+
+  val = ada_value_cast (expect_type, val);
+
+  /* Follow the Ada language semantics that do not allow taking
+     an address of the result of a cast (view conversion in Ada).  */
+  if (val->lval () == lval_memory)
+    {
+      if (val->lazy ())
+	val->fetch_lazy ();
+      val->set_lval (not_lval);
     }
-  else if (code == TYPE_CODE_RANGE && TYPE_TARGET_TYPE (type) != type)
-    return fixed_type_info (TYPE_TARGET_TYPE (type));
-  else
-    return NULL;
+  return val;
 }
 
-/* Returns non-zero iff TYPE represents an Ada fixed-point type.  */
-
-int
-ada_is_fixed_point_type (struct type *type)
-{
-  return fixed_type_info (type) != NULL;
+value *
+ada_var_value_operation::evaluate_for_cast (struct type *expect_type,
+					    struct expression *exp,
+					    enum noside noside)
+{
+  value *val = evaluate_var_value (noside,
+				   std::get<0> (m_storage).block,
+				   std::get<0> (m_storage).symbol);
+
+  val = ada_value_cast (expect_type, val);
+
+  /* Follow the Ada language semantics that do not allow taking
+     an address of the result of a cast (view conversion in Ada).  */
+  if (val->lval () == lval_memory)
+    {
+      if (val->lazy ())
+	val->fetch_lazy ();
+      val->set_lval (not_lval);
+    }
+  return val;
 }
 
-/* Return non-zero iff TYPE represents a System.Address type.  */
+value *
+ada_var_value_operation::evaluate (struct type *expect_type,
+				   struct expression *exp,
+				   enum noside noside)
+{
+  symbol *sym = std::get<0> (m_storage).symbol;
+
+  if (sym->domain () == UNDEF_DOMAIN)
+    /* Only encountered when an unresolved symbol occurs in a
+       context other than a function call, in which case, it is
+       invalid.  */
+    error (_("Unexpected unresolved symbol, %s, during evaluation"),
+	   sym->print_name ());
 
-int
-ada_is_system_address_type (struct type *type)
-{
-  return (TYPE_NAME (type)
-          && strcmp (TYPE_NAME (type), "system__address") == 0);
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    {
+      struct type *type = static_unwrap_type (sym->type ());
+      /* Check to see if this is a tagged type.  We also need to handle
+	 the case where the type is a reference to a tagged type, but
+	 we have to be careful to exclude pointers to tagged types.
+	 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_CODE_REF
+	      && ada_is_tagged_type (type->target_type (), 0)))
+	{
+	  /* Tagged types are a little special in the fact that the real
+	     type is dynamic and can only be determined by inspecting the
+	     object's tag.  This means that we need to get the object's
+	     value first (EVAL_NORMAL) and then extract the actual object
+	     type from its tag.
+
+	     Note that we cannot skip the final step where we extract
+	     the object type from its tag, because the EVAL_NORMAL phase
+	     results in dynamic components being resolved into fixed ones.
+	     This can cause problems when trying to print the type
+	     description of tagged types whose parent has a dynamic size:
+	     We use the type name of the "_parent" component in order
+	     to print the name of the ancestor type in the type description.
+	     If that component had a dynamic size, the resolution into
+	     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.  */
+	  value *arg1 = evaluate (nullptr, exp, EVAL_NORMAL);
+
+	  if (type->code () != TYPE_CODE_REF)
+	    {
+	      struct type *actual_type;
+
+	      actual_type = type_from_tag (ada_value_tag (arg1));
+	      if (actual_type == NULL)
+		/* If, for some reason, we were unable to determine
+		   the actual type from the tag, then use the static
+		   approximation that we just computed as a fallback.
+		   This can happen if the debugging information is
+		   incomplete, for instance.  */
+		actual_type = type;
+	      return value::zero (actual_type, not_lval);
+	    }
+	  else
+	    {
+	      /* In the case of a ref, ada_coerce_ref takes care
+		 of determining the actual type.  But the evaluation
+		 should return a ref as it should be valid to ask
+		 for its address; so rebuild a ref after coerce.  */
+	      arg1 = ada_coerce_ref (arg1);
+	      return value_ref (arg1, TYPE_CODE_REF);
+	    }
+	}
+
+      /* Records and unions for which GNAT encodings have been
+	 generated need to be statically fixed as well.
+	 Otherwise, non-static fixing produces a type where
+	 all dynamic properties are removed, which prevents "ptype"
+	 from being able to completely describe the type.
+	 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_CODE_STRUCT
+	   && dynamic_template_type (type) != NULL)
+	  || (type->code () == TYPE_CODE_UNION
+	      && ada_find_parallel_type (type, "___XVU") != NULL))
+	return value::zero (to_static_fixed_type (type), not_lval);
+    }
+
+  value *arg1 = var_value_operation::evaluate (expect_type, exp, noside);
+  return ada_to_fixed_value (arg1);
 }
 
-/* Assuming that TYPE is the representation of an Ada fixed-point
-   type, return the target floating-point type to be used to represent
-   of this type during internal computation.  */
+bool
+ada_var_value_operation::resolve (struct expression *exp,
+				  bool deprocedure_p,
+				  bool parse_completion,
+				  innermost_block_tracker *tracker,
+				  struct type *context_type)
+{
+  symbol *sym = std::get<0> (m_storage).symbol;
+  if (sym->domain () == UNDEF_DOMAIN)
+    {
+      block_symbol resolved
+	= ada_resolve_variable (sym, std::get<0> (m_storage).block,
+				context_type, parse_completion,
+				deprocedure_p, tracker);
+      std::get<0> (m_storage) = resolved;
+    }
+
+  if (deprocedure_p
+      && (std::get<0> (m_storage).symbol->type ()->code ()
+	  == TYPE_CODE_FUNC))
+    return true;
 
-static struct type *
-ada_scaling_type (struct type *type)
-{
-  return builtin_type (get_type_arch (type))->builtin_long_double;
+  return false;
 }
 
-/* Assuming that TYPE is the representation of an Ada fixed-point
-   type, return its delta, or NULL if the type is malformed and the
-   delta cannot be determined.  */
+void
+ada_var_value_operation::do_generate_ax (struct expression *exp,
+					 struct agent_expr *ax,
+					 struct axs_value *value,
+					 struct type *cast_type)
+{
+  symbol *sym = std::get<0> (m_storage).symbol;
 
-struct value *
-ada_delta (struct type *type)
+  if (sym->domain () == UNDEF_DOMAIN)
+    error (_("Unexpected unresolved symbol, %s, during evaluation"),
+	   sym->print_name ());
+
+  struct type *type = static_unwrap_type (sym->type ());
+  if (ada_is_tagged_type (type, 0)
+      || (type->code () == TYPE_CODE_REF
+	  && ada_is_tagged_type (type->target_type (), 0)))
+    error (_("Tagged types cannot be handled in agent expressions"));
+
+  if ((type->code () == TYPE_CODE_STRUCT
+       && dynamic_template_type (type) != NULL)
+      || (type->code () == TYPE_CODE_UNION
+	  && ada_find_parallel_type (type, "___XVU") != NULL))
+    error (_("Dynamic types cannot be handled in agent expressions"));
+
+  var_value_operation::do_generate_ax (exp, ax, value, cast_type);
+}
+
+value *
+ada_unop_ind_operation::evaluate (struct type *expect_type,
+				  struct expression *exp,
+				  enum noside noside)
 {
-  const char *encoding = fixed_type_info (type);
-  struct type *scale_type = ada_scaling_type (type);
+  value *arg1 = std::get<0> (m_storage)->evaluate (expect_type, exp, noside);
 
-  long long num, den;
+  struct type *type = ada_check_typedef (arg1->type ());
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    {
+      if (ada_is_array_descriptor_type (type))
+	{
+	  /* GDB allows dereferencing GNAT array descriptors.
+	     However, for 'ptype' we don't want to try to
+	     "dereference" a thick pointer here -- that will end up
+	     giving us an array with (1 .. 0) for bounds, which is
+	     less clear than (<>).  */
+	  struct type *arrType = ada_type_of_array (arg1, 0);
+
+	  if (arrType == NULL)
+	    error (_("Attempt to dereference null array pointer."));
+	  if (is_thick_pntr (type))
+	    return arg1;
+	  return value_at_lazy (arrType, 0);
+	}
+      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_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_CODE_REF
+	       || type->code () == TYPE_CODE_PTR)
+	      && ada_is_tagged_type (type->target_type (), 0))
+	    {
+	      arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp,
+							EVAL_NORMAL);
+	      type = ada_value_ind (arg1)->type ();
+	    }
+	  else
+	    {
+	      type = to_static_fixed_type
+		(ada_aligned_type
+		 (ada_check_typedef (type->target_type ())));
+	    }
+	  return value::zero (type, lval_memory);
+	}
+      else if (type->code () == TYPE_CODE_INT)
+	{
+	  /* GDB allows dereferencing an int.  */
+	  if (expect_type == NULL)
+	    return value::zero (builtin_type (exp->gdbarch)->builtin_int,
+			       lval_memory);
+	  else
+	    {
+	      expect_type =
+		to_static_fixed_type (ada_aligned_type (expect_type));
+	      return value::zero (expect_type, lval_memory);
+	    }
+	}
+      else
+	error (_("Attempt to take contents of a non-pointer value."));
+    }
+  arg1 = ada_coerce_ref (arg1);     /* FIXME: What is this for??  */
+  type = ada_check_typedef (arg1->type ());
 
-  if (sscanf (encoding, "_%lld_%lld", &num, &den) < 2)
-    return nullptr;
+  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.  */
+    {
+      if (expect_type != NULL)
+	return ada_value_ind (value_cast (lookup_pointer_type (expect_type),
+					  arg1));
+      else
+	return value_at_lazy (builtin_type (exp->gdbarch)->builtin_int,
+			      value_as_address (arg1));
+    }
+
+  if (ada_is_array_descriptor_type (type))
+    /* GDB allows dereferencing GNAT array descriptors.  */
+    return ada_coerce_to_simple_array (arg1);
   else
-    return value_binop (value_from_longest (scale_type, num),
-			value_from_longest (scale_type, den), BINOP_DIV);
+    return ada_value_ind (arg1);
 }
 
-/* Assuming that ada_is_fixed_point_type (TYPE), return the scaling
-   factor ('SMALL value) associated with the type.  */
-
-struct value *
-ada_scaling_factor (struct type *type)
+value *
+ada_structop_operation::evaluate (struct type *expect_type,
+				  struct expression *exp,
+				  enum noside noside)
 {
-  const char *encoding = fixed_type_info (type);
-  struct type *scale_type = ada_scaling_type (type);
+  value *arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp, noside);
+  const char *str = std::get<1> (m_storage).c_str ();
+  if (noside == EVAL_AVOID_SIDE_EFFECTS)
+    {
+      struct type *type;
+      struct type *type1 = arg1->type ();
 
-  long long num0, den0, num1, den1;
-  int n;
+      if (ada_is_tagged_type (type1, 1))
+	{
+	  type = ada_lookup_struct_elt_type (type1, str, 1, 1);
 
-  n = sscanf (encoding, "_%lld_%lld_%lld_%lld",
-	      &num0, &den0, &num1, &den1);
+	  /* If the field is not found, check if it exists in the
+	     extension of this object's type. This means that we
+	     need to evaluate completely the expression.  */
 
-  if (n < 2)
-    return value_from_longest (scale_type, 1);
-  else if (n == 4)
-    return value_binop (value_from_longest (scale_type, num1),
-			value_from_longest (scale_type, den1), BINOP_DIV);
+	  if (type == NULL)
+	    {
+	      arg1 = std::get<0> (m_storage)->evaluate (nullptr, exp,
+							EVAL_NORMAL);
+	      arg1 = ada_value_struct_elt (arg1, str, 0);
+	      arg1 = unwrap_value (arg1);
+	      type = ada_to_fixed_value (arg1)->type ();
+	    }
+	}
+      else
+	type = ada_lookup_struct_elt_type (type1, str, 1, 0);
+
+      return value::zero (ada_aligned_type (type), lval_memory);
+    }
   else
-    return value_binop (value_from_longest (scale_type, num0),
-			value_from_longest (scale_type, den0), BINOP_DIV);
+    {
+      arg1 = ada_value_struct_elt (arg1, str, 0);
+      arg1 = unwrap_value (arg1);
+      return ada_to_fixed_value (arg1);
+    }
+}
+
+value *
+ada_funcall_operation::evaluate (struct type *expect_type,
+				 struct expression *exp,
+				 enum noside noside)
+{
+  const std::vector<operation_up> &args_up = std::get<1> (m_storage);
+  int nargs = args_up.size ();
+  std::vector<value *> argvec (nargs);
+  operation_up &callee_op = std::get<0> (m_storage);
+
+  ada_var_value_operation *avv
+    = dynamic_cast<ada_var_value_operation *> (callee_op.get ());
+  if (avv != nullptr
+      && avv->get_symbol ()->domain () == UNDEF_DOMAIN)
+    error (_("Unexpected unresolved symbol, %s, during evaluation"),
+	   avv->get_symbol ()->print_name ());
+
+  value *callee = callee_op->evaluate (nullptr, exp, noside);
+  for (int i = 0; i < args_up.size (); ++i)
+    argvec[i] = args_up[i]->evaluate (nullptr, exp, noside);
+
+  if (ada_is_constrained_packed_array_type
+      (desc_base_type (callee->type ())))
+    callee = ada_coerce_to_simple_array (callee);
+  else if (callee->type ()->code () == TYPE_CODE_ARRAY
+	   && callee->type ()->field (0).bitsize () != 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 (callee->type ()->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
+	 types (for alignment) may be there, so make sure we strip them as
+	 well.  */
+      callee = ada_to_fixed_value (coerce_ref (callee));
+    }
+  else if (callee->type ()->code () == TYPE_CODE_ARRAY
+	   && callee->lval () == lval_memory)
+    callee = value_addr (callee);
+
+  struct type *type = ada_check_typedef (callee->type ());
+
+  /* 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_CODE_TYPEDEF)
+    type = ada_typedef_target_type (type);
+
+  if (type->code () == TYPE_CODE_PTR)
+    {
+      switch (ada_check_typedef (type->target_type ())->code ())
+	{
+	case TYPE_CODE_FUNC:
+	  type = ada_check_typedef (type->target_type ());
+	  break;
+	case TYPE_CODE_ARRAY:
+	  break;
+	case TYPE_CODE_STRUCT:
+	  if (noside != EVAL_AVOID_SIDE_EFFECTS)
+	    callee = ada_value_ind (callee);
+	  type = ada_check_typedef (type->target_type ());
+	  break;
+	default:
+	  error (_("cannot subscript or call something of type `%s'"),
+		 ada_type_name (callee->type ()));
+	  break;
+	}
+    }
+
+  switch (type->code ())
+    {
+    case TYPE_CODE_FUNC:
+      if (noside == EVAL_AVOID_SIDE_EFFECTS)
+	{
+	  if (type->target_type () == NULL)
+	    error_call_unknown_return_type (NULL);
+	  return value::allocate (type->target_type ());
+	}
+      return call_function_by_hand (callee, expect_type, argvec);
+    case TYPE_CODE_INTERNAL_FUNCTION:
+	return call_internal_function (exp->gdbarch, exp->language_defn,
+				       callee, nargs,
+				       argvec.data (), noside);
+
+    case TYPE_CODE_STRUCT:
+      {
+	int arity;
+
+	arity = ada_array_arity (type);
+	type = ada_array_element_type (type, nargs);
+	if (type == NULL)
+	  error (_("cannot subscript or call a record"));
+	if (arity != nargs)
+	  error (_("wrong number of subscripts; expecting %d"), arity);
+	if (noside == EVAL_AVOID_SIDE_EFFECTS)
+	  return value::zero (ada_aligned_type (type), lval_memory);
+	return
+	  unwrap_value (ada_value_subscript
+			(callee, nargs, argvec.data ()));
+      }
+    case TYPE_CODE_ARRAY:
+      if (noside == EVAL_AVOID_SIDE_EFFECTS)
+	{
+	  type = ada_array_element_type (type, nargs);
+	  if (type == NULL)
+	    error (_("element type of array unknown"));
+	  else
+	    return value::zero (ada_aligned_type (type), lval_memory);
+	}
+      return
+	unwrap_value (ada_value_subscript
+		      (ada_coerce_to_simple_array (callee),
+		       nargs, argvec.data ()));
+    case TYPE_CODE_PTR:     /* Pointer to array */
+      if (noside == EVAL_AVOID_SIDE_EFFECTS)
+	{
+	  type = to_fixed_array_type (type->target_type (), NULL, 1);
+	  type = ada_array_element_type (type, nargs);
+	  if (type == NULL)
+	    error (_("element type of array unknown"));
+	  else
+	    return value::zero (ada_aligned_type (type), lval_memory);
+	}
+      return
+	unwrap_value (ada_value_ptr_subscript (callee, nargs,
+					       argvec.data ()));
+
+    default:
+      error (_("Attempt to index or call something other than an "
+	       "array or function"));
+    }
+}
+
+bool
+ada_funcall_operation::resolve (struct expression *exp,
+				bool deprocedure_p,
+				bool parse_completion,
+				innermost_block_tracker *tracker,
+				struct type *context_type)
+{
+  operation_up &callee_op = std::get<0> (m_storage);
+
+  ada_var_value_operation *avv
+    = dynamic_cast<ada_var_value_operation *> (callee_op.get ());
+  if (avv == nullptr)
+    return false;
+
+  symbol *sym = avv->get_symbol ();
+  if (sym->domain () != UNDEF_DOMAIN)
+    return false;
+
+  const std::vector<operation_up> &args_up = std::get<1> (m_storage);
+  int nargs = args_up.size ();
+  std::vector<value *> argvec (nargs);
+
+  for (int i = 0; i < args_up.size (); ++i)
+    argvec[i] = args_up[i]->evaluate (nullptr, exp, EVAL_AVOID_SIDE_EFFECTS);
+
+  const block *block = avv->get_block ();
+  block_symbol resolved
+    = ada_resolve_funcall (sym, block,
+			   context_type, parse_completion,
+			   nargs, argvec.data (),
+			   tracker);
+
+  std::get<0> (m_storage)
+    = make_operation<ada_var_value_operation> (resolved);
+  return false;
+}
+
+bool
+ada_ternop_slice_operation::resolve (struct expression *exp,
+				     bool deprocedure_p,
+				     bool parse_completion,
+				     innermost_block_tracker *tracker,
+				     struct type *context_type)
+{
+  /* Historically this check was done during resolution, so we
+     continue that here.  */
+  value *v = std::get<0> (m_storage)->evaluate (context_type, exp,
+						EVAL_AVOID_SIDE_EFFECTS);
+  if (ada_is_any_packed_array_type (v->type ()))
+    error (_("cannot slice a packed array"));
+  return false;
+}
+
+}
+
+
+
+/* Return non-zero iff TYPE represents a System.Address type.  */
+
+int
+ada_is_system_address_type (struct type *type)
+{
+  return (type->name () && strcmp (type->name (), "system__address") == 0);
 }
 
 
 
-                                /* Range types */
+				/* Range types */
 
 /* Scan STR beginning at position K for a discriminant name, and
    return the value of that discriminant field of DVAL in *PX.  If
@@ -11536,10 +11321,9 @@ ada_scaling_factor (struct type *type)
 
 static int
 scan_discrim_bound (const char *str, int k, struct value *dval, LONGEST * px,
-                    int *pnew_k)
+		    int *pnew_k)
 {
-  static char *bound_buffer = NULL;
-  static size_t bound_buffer_len = 0;
+  static std::string storage;
   const char *pstart, *pend, *bound;
   struct value *bound_val;
 
@@ -11558,15 +11342,12 @@ scan_discrim_bound (const char *str, int
       int len = pend - pstart;
 
       /* Strip __ and beyond.  */
-      GROW_VECT (bound_buffer, bound_buffer_len, len + 1);
-      strncpy (bound_buffer, pstart, len);
-      bound_buffer[len] = '\0';
-
-      bound = bound_buffer;
+      storage = std::string (pstart, len);
+      bound = storage.c_str ();
       k = pend - str;
     }
 
-  bound_val = ada_search_struct_field (bound, dval, 0, value_type (dval));
+  bound_val = ada_search_struct_field (bound, dval, 0, dval->type ());
   if (bound_val == NULL)
     return 0;
 
@@ -11576,26 +11357,28 @@ scan_discrim_bound (const char *str, int
   return 1;
 }
 
-/* Value of variable named NAME in the current environment.  If
-   no such variable found, then if ERR_MSG is null, returns 0, and
+/* Value of variable named NAME.  Only exact matches are considered.
+   If no such variable found, then if ERR_MSG is null, returns 0, and
    otherwise causes an error with message ERR_MSG.  */
 
 static struct value *
 get_var_value (const char *name, const char *err_msg)
 {
-  lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
+  std::string quoted_name = add_angle_brackets (name);
+
+  lookup_name_info lookup_name (quoted_name, symbol_name_match_type::FULL);
 
-  std::vector<struct block_symbol> syms;
-  int nsyms = ada_lookup_symbol_list_worker (lookup_name,
-					     get_selected_block (0),
-					     VAR_DOMAIN, &syms, 1);
+  std::vector<struct block_symbol> syms
+    = ada_lookup_symbol_list_worker (lookup_name,
+				     get_selected_block (0),
+				     SEARCH_VFT, 1);
 
-  if (nsyms != 1)
+  if (syms.size () != 1)
     {
       if (err_msg == NULL)
-        return 0;
+	return 0;
       else
-        error (("%s"), err_msg);
+	error (("%s"), err_msg);
     }
 
   return value_of_variable (syms[0].symbol, syms[0].block);
@@ -11635,14 +11418,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)
-    base_type = TYPE_TARGET_TYPE (raw_type);
+  if (raw_type->code () == TYPE_CODE_RANGE)
+    base_type = raw_type->target_type ();
   else
     base_type = raw_type;
 
-  name = TYPE_NAME (raw_type);
+  name = raw_type->name ();
   subtype_info = strstr (name, "___XD");
   if (subtype_info == NULL)
     {
@@ -11652,71 +11435,67 @@ to_fixed_range_type (struct type *raw_ty
       if (L < INT_MIN || U > INT_MAX)
 	return raw_type;
       else
-	return create_static_range_type (alloc_type_copy (raw_type), raw_type,
-					 L, U);
+	{
+	  type_allocator alloc (raw_type);
+	  return create_static_range_type (alloc, raw_type, L, U);
+	}
     }
   else
     {
-      static char *name_buf = NULL;
-      static size_t name_len = 0;
       int prefix_len = subtype_info - name;
       LONGEST L, U;
       struct type *type;
       const char *bounds_str;
       int n;
 
-      GROW_VECT (name_buf, name_len, prefix_len + 5);
-      strncpy (name_buf, name, prefix_len);
-      name_buf[prefix_len] = '\0';
-
       subtype_info += 5;
       bounds_str = strchr (subtype_info, '_');
       n = 1;
 
       if (*subtype_info == 'L')
-        {
-          if (!ada_scan_number (bounds_str, n, &L, &n)
-              && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
-            return raw_type;
-          if (bounds_str[n] == '_')
-            n += 2;
-          else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
-            n += 1;
-          subtype_info += 1;
-        }
-      else
-        {
-          strcpy (name_buf + prefix_len, "___L");
-          if (!get_int_var_value (name_buf, L))
-            {
-              lim_warning (_("Unknown lower bound, using 1."));
-              L = 1;
-            }
-        }
+	{
+	  if (!ada_scan_number (bounds_str, n, &L, &n)
+	      && !scan_discrim_bound (bounds_str, n, dval, &L, &n))
+	    return raw_type;
+	  if (bounds_str[n] == '_')
+	    n += 2;
+	  else if (bounds_str[n] == '.')     /* FIXME? SGI Workshop kludge.  */
+	    n += 1;
+	  subtype_info += 1;
+	}
+      else
+	{
+	  std::string name_buf = std::string (name, prefix_len) + "___L";
+	  if (!get_int_var_value (name_buf.c_str (), L))
+	    {
+	      lim_warning (_("Unknown lower bound, using 1."));
+	      L = 1;
+	    }
+	}
 
       if (*subtype_info == 'U')
-        {
-          if (!ada_scan_number (bounds_str, n, &U, &n)
-              && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
-            return raw_type;
-        }
-      else
-        {
-          strcpy (name_buf + prefix_len, "___U");
-          if (!get_int_var_value (name_buf, U))
-            {
-              lim_warning (_("Unknown upper bound, using %ld."), (long) L);
-              U = L;
-            }
-        }
+	{
+	  if (!ada_scan_number (bounds_str, n, &U, &n)
+	      && !scan_discrim_bound (bounds_str, n, dval, &U, &n))
+	    return raw_type;
+	}
+      else
+	{
+	  std::string name_buf = std::string (name, prefix_len) + "___U";
+	  if (!get_int_var_value (name_buf.c_str (), U))
+	    {
+	      lim_warning (_("Unknown upper bound, using %ld."), (long) L);
+	      U = L;
+	    }
+	}
 
-      type = create_static_range_type (alloc_type_copy (raw_type),
-				       base_type, L, U);
+      type_allocator alloc (raw_type);
+      type = create_static_range_type (alloc, base_type, L, U);
       /* create_static_range_type alters the resulting type's length
-         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;
+	 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->set_length (raw_type->length ());
+      type->set_name (name);
       return type;
     }
 }
@@ -11730,7 +11509,7 @@ ada_is_range_type_name (const char *name
 }
 
 
-                                /* Modular types */
+				/* Modular types */
 
 /* True iff TYPE is an Ada modular type.  */
 
@@ -11739,9 +11518,9 @@ 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
-          && TYPE_UNSIGNED (subranged_type));
+  return (subranged_type != NULL && type->code () == TYPE_CODE_RANGE
+	  && subranged_type->code () == TYPE_CODE_INT
+	  && subranged_type->is_unsigned ());
 }
 
 /* Assuming ada_is_modular_type (TYPE), the modulus of TYPE.  */
@@ -11749,7 +11528,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.is_constant ())
+    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;
 }
 
 
@@ -11793,7 +11579,7 @@ ada_modulus (struct type *type)
    an Ada83 compiler). As such, we do not include Numeric_Error from
    this list of standard exceptions.  */
 
-static const char *standard_exc[] = {
+static const char * const standard_exc[] = {
   "constraint_error",
   "program_error",
   "storage_error",
@@ -11888,7 +11674,8 @@ ada_has_this_exception_support (const st
      that should be compiled with debugging information.  As a result, we
      expect to find that symbol in the symtabs.  */
 
-  sym = standard_lookup (einfo->catch_exception_sym, NULL, VAR_DOMAIN);
+  sym = standard_lookup (einfo->catch_exception_sym, NULL,
+			 SEARCH_FUNCTION_DOMAIN);
   if (sym == NULL)
     {
       /* Perhaps we did not find our symbol because the Ada runtime was
@@ -11905,10 +11692,11 @@ ada_has_this_exception_support (const st
 	 the name of the exception being raised (this name is printed in
 	 the catchpoint message, and is also used when trying to catch
 	 a specific exception).  We do not handle this case for now.  */
-      struct bound_minimal_symbol msym
-	= lookup_minimal_symbol (einfo->catch_exception_sym, NULL, NULL);
+      bound_minimal_symbol msym
+	= lookup_minimal_symbol (current_program_space,
+				 einfo->catch_exception_sym);
 
-      if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
+      if (msym.minsym && msym.minsym->type () != mst_solib_trampoline)
 	error (_("Your Ada runtime appears to be missing some debugging "
 		 "information.\nCannot insert Ada exception catchpoint "
 		 "in this configuration."));
@@ -11918,20 +11706,19 @@ ada_has_this_exception_support (const st
 
   /* Make sure that the symbol we found corresponds to a function.  */
 
-  if (SYMBOL_CLASS (sym) != LOC_BLOCK)
-    {
-      error (_("Symbol \"%s\" is not a function (class = %d)"),
-	     sym->linkage_name (), SYMBOL_CLASS (sym));
-      return 0;
-    }
+  if (sym->loc_class () != LOC_BLOCK)
+    error (_("Symbol \"%s\" is not a function (class = %d)"),
+	   sym->linkage_name (), sym->loc_class ());
 
-  sym = standard_lookup (einfo->catch_handlers_sym, NULL, VAR_DOMAIN);
+  sym = standard_lookup (einfo->catch_handlers_sym, NULL,
+			 SEARCH_FUNCTION_DOMAIN);
   if (sym == NULL)
     {
-      struct bound_minimal_symbol msym
-	= lookup_minimal_symbol (einfo->catch_handlers_sym, NULL, NULL);
+      bound_minimal_symbol msym
+	= lookup_minimal_symbol (current_program_space,
+				 einfo->catch_handlers_sym);
 
-      if (msym.minsym && MSYMBOL_TYPE (msym.minsym) != mst_solib_trampoline)
+      if (msym.minsym && msym.minsym->type () != mst_solib_trampoline)
 	error (_("Your Ada runtime appears to be missing some debugging "
 		 "information.\nCannot insert Ada exception catchpoint "
 		 "in this configuration."));
@@ -11941,12 +11728,9 @@ ada_has_this_exception_support (const st
 
   /* Make sure that the symbol we found corresponds to a function.  */
 
-  if (SYMBOL_CLASS (sym) != LOC_BLOCK)
-    {
-      error (_("Symbol \"%s\" is not a function (class = %d)"),
-	     sym->linkage_name (), SYMBOL_CLASS (sym));
-      return 0;
-    }
+  if (sym->loc_class () != LOC_BLOCK)
+    error (_("Symbol \"%s\" is not a function (class = %d)"),
+	   sym->linkage_name (), sym->loc_class ());
 
   return 1;
 }
@@ -11973,45 +11757,22 @@ ada_exception_support_info_sniffer (void
       return;
     }
 
-  /* Try the v0 exception suport info.  */
+  /* Try the v0 exception support info.  */
   if (ada_has_this_exception_support (&exception_support_info_v0))
     {
       data->exception_info = &exception_support_info_v0;
       return;
     }
 
-  /* Try our fallback exception suport info.  */
+  /* Try our fallback exception support info.  */
   if (ada_has_this_exception_support (&exception_support_info_fallback))
     {
       data->exception_info = &exception_support_info_fallback;
       return;
     }
 
-  /* Sometimes, it is normal for us to not be able to find the routine
-     we are looking for.  This happens when the program is linked with
-     the shared version of the GNAT runtime, and the program has not been
-     started yet.  Inform the user of these two possible causes if
-     applicable.  */
-
-  if (ada_update_initial_language (language_unknown) != language_ada)
-    error (_("Unable to insert catchpoint.  Is this an Ada main program?"));
-
-  /* If the symbol does not exist, then check that the program is
-     already started, to make sure that shared libraries have been
-     loaded.  If it is not started, this may mean that the symbol is
-     in a shared library.  */
-
-  if (inferior_ptid.pid () == 0)
-    error (_("Unable to insert catchpoint. Try to start the program first."));
-
-  /* At this point, we know that we are debugging an Ada program and
-     that the inferior has been started, but we still are not able to
-     find the run-time symbols.  That can mean that we are in
-     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.  */
-
-  error (_("Cannot insert Ada exception catchpoints in this configuration."));
+  throw_error (NOT_FOUND_ERROR,
+	       _("Could not find Ada runtime exception support"));
 }
 
 /* True iff FRAME is very likely to be that of a function that is
@@ -12020,7 +11781,7 @@ ada_exception_support_info_sniffer (void
    to most users.  */
 
 static int
-is_known_support_routine (struct frame_info *frame)
+is_known_support_routine (const frame_info_ptr &frame)
 {
   enum language func_lang;
   int i;
@@ -12052,10 +11813,10 @@ is_known_support_routine (struct frame_i
     {
       re_comp (known_runtime_file_name_patterns[i]);
       if (re_exec (lbasename (sal.symtab->filename)))
-        return 1;
-      if (SYMTAB_OBJFILE (sal.symtab) != NULL
-          && re_exec (objfile_name (SYMTAB_OBJFILE (sal.symtab))))
-        return 1;
+	return 1;
+      if (sal.symtab->compunit ()->objfile () != NULL
+	  && re_exec (objfile_name (sal.symtab->compunit ()->objfile ())))
+	return 1;
     }
 
   /* Check whether the function is a GNAT-generated entity.  */
@@ -12079,15 +11840,15 @@ is_known_support_routine (struct frame_i
    part of the Ada run-time, starting from FI and moving upward.  */
 
 void
-ada_find_printable_frame (struct frame_info *fi)
+ada_find_printable_frame (const frame_info_ptr &initial_fi)
 {
-  for (; fi != NULL; fi = get_prev_frame (fi))
+  for (frame_info_ptr fi = initial_fi; fi != nullptr; fi = get_prev_frame (fi))
     {
       if (!is_known_support_routine (fi))
-        {
-          select_frame (fi);
-          break;
-        }
+	{
+	  select_frame (fi);
+	  break;
+	}
     }
 
 }
@@ -12113,7 +11874,7 @@ static CORE_ADDR
 ada_unhandled_exception_name_addr_from_raise (void)
 {
   int frame_level;
-  struct frame_info *fi;
+  frame_info_ptr fi;
   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
 
   /* To determine the name of this exception, we need to select
@@ -12133,7 +11894,7 @@ ada_unhandled_exception_name_addr_from_r
 	= find_frame_funname (fi, &func_lang, NULL);
       if (func_name != NULL)
 	{
-          if (strcmp (func_name.get (),
+	  if (strcmp (func_name.get (),
 		      data->exception_info->catch_exception_sym) == 0)
 	    break; /* We found the frame we were looking for...  */
 	}
@@ -12156,33 +11917,32 @@ ada_unhandled_exception_name_addr_from_r
    Return zero if the address could not be computed, or if not relevant.  */
 
 static CORE_ADDR
-ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex,
-                           struct breakpoint *b)
+ada_exception_name_addr_1 (enum ada_exception_catchpoint_kind ex)
 {
   struct ada_inferior_data *data = get_ada_inferior_data (current_inferior ());
 
   switch (ex)
     {
       case ada_catch_exception:
-        return (parse_and_eval_address ("e.full_name"));
-        break;
+	return (parse_and_eval_address ("e.full_name"));
+	break;
 
       case ada_catch_exception_unhandled:
-        return data->exception_info->unhandled_exception_name_addr ();
-        break;
+	return data->exception_info->unhandled_exception_name_addr ();
+	break;
 
       case ada_catch_handlers:
-        return 0;  /* The runtimes does not provide access to the exception
+	return 0;  /* The runtimes does not provide access to the exception
 		      name.  */
-        break;
+	break;
 
       case ada_catch_assert:
-        return 0;  /* Exception name is not relevant in this case.  */
-        break;
+	return 0;  /* Exception name is not relevant in this case.  */
+	break;
 
       default:
-        internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
-        break;
+	internal_error (_("unexpected catchpoint type"));
+	break;
     }
 
   return 0; /* Should never be reached.  */
@@ -12214,7 +11974,7 @@ ada_exception_message_1 (void)
 
   e_msg_val = ada_coerce_to_simple_array (e_msg_val);
   gdb_assert (e_msg_val != NULL);
-  e_msg_len = TYPE_LENGTH (value_type (e_msg_val));
+  e_msg_len = e_msg_val->type ()->length ();
 
   /* If the message string is empty, then treat it as if there was
      no exception message.  */
@@ -12222,7 +11982,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 (e_msg_val->address (), (gdb_byte *) e_msg.get (),
+	       e_msg_len);
   e_msg.get ()[e_msg_len] = '\0';
 
   return e_msg;
@@ -12254,14 +12015,13 @@ ada_exception_message (void)
    and zero is returned.  */
 
 static CORE_ADDR
-ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
-                         struct breakpoint *b)
+ada_exception_name_addr (enum ada_exception_catchpoint_kind ex)
 {
   CORE_ADDR result = 0;
 
   try
     {
-      result = ada_exception_name_addr_1 (ex, b);
+      result = ada_exception_name_addr_1 (ex);
     }
 
   catch (const gdb_exception_error &e)
@@ -12290,13 +12050,60 @@ static std::string ada_exception_catchpo
    exception, in order to be able to re-set the condition expression
    when symbols change.  */
 
+/* An instance of this type is used to represent an Ada catchpoint.  */
+
+struct ada_catchpoint : public code_breakpoint
+{
+  ada_catchpoint (struct gdbarch *gdbarch_,
+		  enum ada_exception_catchpoint_kind kind,
+		  const char *cond_string,
+		  bool tempflag,
+		  bool enabled,
+		  bool from_tty,
+		  std::string &&excep_string_)
+    : code_breakpoint (gdbarch_, bp_catchpoint, tempflag, cond_string),
+      m_excep_string (std::move (excep_string_)),
+      m_kind (kind)
+  {
+    /* Unlike most code_breakpoint types, Ada catchpoints are
+       pspace-specific.  */
+    pspace = current_program_space;
+    enable_state = enabled ? bp_enabled : bp_disabled;
+    language = language_ada;
+
+    re_set (pspace);
+  }
+
+  struct bp_location *allocate_location () override;
+  void re_set (program_space *pspace) override;
+  void check_status (struct bpstat *bs) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  bool print_one (const bp_location **) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+
+private:
+
+  /* A helper function for check_status.  Returns true if we should
+     stop for this breakpoint hit.  If the user specified a specific
+     exception, we only want to cause a stop if the program thrown
+     that exception.  */
+  bool should_stop_exception (const struct bp_location *bl) const;
+
+  /* The name of the specific exception the user specified.  */
+  std::string m_excep_string;
+
+  /* What kind of catchpoint this is.  */
+  enum ada_exception_catchpoint_kind m_kind;
+};
+
 /* An instance of this type is used to represent an Ada catchpoint
    breakpoint location.  */
 
 class ada_catchpoint_location : public bp_location
 {
 public:
-  ada_catchpoint_location (breakpoint *owner)
+  explicit ada_catchpoint_location (ada_catchpoint *owner)
     : bp_location (owner, bp_loc_software_breakpoint)
   {}
 
@@ -12306,112 +12113,93 @@ public:
   expression_up excep_cond_expr;
 };
 
-/* An instance of this type is used to represent an Ada catchpoint.  */
+static struct symtab_and_line ada_exception_sal
+     (enum ada_exception_catchpoint_kind ex);
 
-struct ada_catchpoint : public breakpoint
-{
-  explicit ada_catchpoint (enum ada_exception_catchpoint_kind kind)
-    : m_kind (kind)
-  {
-  }
+/* Implement the RE_SET method in the structure for all exception
+   catchpoint kinds.  */
 
-  /* The name of the specific exception the user specified.  */
-  std::string excep_string;
-
-  /* What kind of catchpoint this is.  */
-  enum ada_exception_catchpoint_kind m_kind;
-};
+void
+ada_catchpoint::re_set (program_space *pspace)
+{
+  std::vector<symtab_and_line> sals;
+  try
+    {
+      struct symtab_and_line sal = ada_exception_sal (m_kind);
+      sals.push_back (sal);
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      /* For NOT_FOUND_ERROR, the breakpoint will be pending.  */
+      if (ex.error != NOT_FOUND_ERROR)
+	throw;
+    }
 
-/* Parse the exception condition string in the context of each of the
-   catchpoint's locations, and store them for later evaluation.  */
+  update_breakpoint_locations (this, pspace, sals, {});
 
-static void
-create_excep_cond_exprs (struct ada_catchpoint *c,
-                         enum ada_exception_catchpoint_kind ex)
-{
-  struct bp_location *bl;
+  /* Reparse the exception conditional expressions.  One for each
+     location.  */
 
   /* Nothing to do if there's no specific exception to catch.  */
-  if (c->excep_string.empty ())
+  if (m_excep_string.empty ())
     return;
 
   /* Same if there are no locations... */
-  if (c->loc == NULL)
+  if (!has_locations ())
     return;
 
   /* Compute the condition expression in text form, from the specific
-     expection we want to catch.  */
+     exception we want to catch.  */
   std::string cond_string
-    = ada_exception_catchpoint_cond_string (c->excep_string.c_str (), ex);
+    = ada_exception_catchpoint_cond_string (m_excep_string.c_str (), m_kind);
 
   /* Iterate over all the catchpoint's locations, and parse an
      expression for each.  */
-  for (bl = c->loc; bl != NULL; bl = bl->next)
+  for (bp_location &bl : locations ())
     {
-      struct ada_catchpoint_location *ada_loc
-	= (struct ada_catchpoint_location *) bl;
+      ada_catchpoint_location &ada_loc
+	= static_cast<ada_catchpoint_location &> (bl);
       expression_up exp;
 
-      if (!bl->shlib_disabled)
+      if (!bl.shlib_disabled)
 	{
 	  const char *s;
 
 	  s = cond_string.c_str ();
 	  try
 	    {
-	      exp = parse_exp_1 (&s, bl->address,
-				 block_for_pc (bl->address),
-				 0);
+	      exp = parse_exp_1 (&s, bl.address, block_for_pc (bl.address), 0);
 	    }
 	  catch (const gdb_exception_error &e)
 	    {
 	      warning (_("failed to reevaluate internal exception condition "
 			 "for catchpoint %d: %s"),
-		       c->number, e.what ());
+		       number, e.what ());
 	    }
 	}
 
-      ada_loc->excep_cond_expr = std::move (exp);
+      ada_loc.excep_cond_expr = std::move (exp);
     }
 }
 
-/* Implement the ALLOCATE_LOCATION method in the breakpoint_ops
-   structure for all exception catchpoint kinds.  */
-
-static struct bp_location *
-allocate_location_exception (struct breakpoint *self)
-{
-  return new ada_catchpoint_location (self);
-}
-
-/* Implement the RE_SET method in the breakpoint_ops structure for all
+/* Implement the ALLOCATE_LOCATION method in the structure for all
    exception catchpoint kinds.  */
 
-static void
-re_set_exception (struct breakpoint *b)
+struct bp_location *
+ada_catchpoint::allocate_location ()
 {
-  struct ada_catchpoint *c = (struct ada_catchpoint *) b;
-
-  /* Call the base class's method.  This updates the catchpoint's
-     locations.  */
-  bkpt_breakpoint_ops.re_set (b);
-
-  /* Reparse the exception conditional expressions.  One for each
-     location.  */
-  create_excep_cond_exprs (c, c->m_kind);
+  return new ada_catchpoint_location (this);
 }
 
-/* Returns true if we should stop for this breakpoint hit.  If the
-   user specified a specific exception, we only want to cause a stop
-   if the program thrown that exception.  */
+/* See declaration.  */
 
-static int
-should_stop_exception (const struct bp_location *bl)
+bool
+ada_catchpoint::should_stop_exception (const struct bp_location *bl) const
 {
-  struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
+  ada_catchpoint *c = gdb::checked_static_cast<ada_catchpoint *> (bl->owner);
   const struct ada_catchpoint_location *ada_loc
     = (const struct ada_catchpoint_location *) bl;
-  int stop;
+  bool stop;
 
   struct internalvar *var = lookup_internalvar ("_ada_exception");
   if (c->m_kind == ada_catch_assert)
@@ -12438,26 +12226,23 @@ should_stop_exception (const struct bp_l
     }
 
   /* With no specific exception, should always stop.  */
-  if (c->excep_string.empty ())
-    return 1;
+  if (c->m_excep_string.empty ())
+    return true;
 
   if (ada_loc->excep_cond_expr == NULL)
     {
       /* We will have a NULL expression if back when we were creating
 	 the expressions, this location's had failed to parse.  */
-      return 1;
+      return true;
     }
 
-  stop = 1;
+  stop = true;
   try
     {
-      struct value *mark;
-
-      mark = value_mark ();
-      stop = value_true (evaluate_expression (ada_loc->excep_cond_expr.get ()));
-      value_free_to_mark (mark);
+      scoped_value_mark mark;
+      stop = value_true (ada_loc->excep_cond_expr->evaluate ());
     }
-  catch (const gdb_exception &ex)
+  catch (const gdb_exception_error &ex)
     {
       exception_fprintf (gdb_stderr, ex,
 			 _("Error in testing exception condition:\n"));
@@ -12466,36 +12251,35 @@ should_stop_exception (const struct bp_l
   return stop;
 }
 
-/* Implement the CHECK_STATUS method in the breakpoint_ops structure
-   for all exception catchpoint kinds.  */
+/* Implement the CHECK_STATUS method in the structure for all
+   exception catchpoint kinds.  */
 
-static void
-check_status_exception (bpstat bs)
+void
+ada_catchpoint::check_status (bpstat *bs)
 {
-  bs->stop = should_stop_exception (bs->bp_location_at);
+  bs->stop = should_stop_exception (bs->bp_location_at.get ());
 }
 
-/* Implement the PRINT_IT method in the breakpoint_ops structure
-   for all exception catchpoint kinds.  */
+/* Implement the PRINT_IT method in the structure for all exception
+   catchpoint kinds.  */
 
-static enum print_stop_action
-print_it_exception (bpstat bs)
+enum print_stop_action
+ada_catchpoint::print_it (const bpstat *bs) const
 {
   struct ui_out *uiout = current_uiout;
-  struct breakpoint *b = bs->breakpoint_at;
 
-  annotate_catchpoint (b->number);
+  annotate_catchpoint (number);
 
   if (uiout->is_mi_like_p ())
     {
       uiout->field_string ("reason",
 			   async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
-      uiout->field_string ("disp", bpdisp_text (b->disposition));
+      uiout->field_string ("disp", bpdisp_text (disposition));
     }
 
-  uiout->text (b->disposition == disp_del
+  uiout->text (disposition == disp_del
 	       ? "\nTemporary catchpoint " : "\nCatchpoint ");
-  uiout->field_signed ("bkptno", b->number);
+  print_num_locno (bs, uiout);
   uiout->text (", ");
 
   /* ada_exception_name_addr relies on the selected frame being the
@@ -12505,14 +12289,13 @@ print_it_exception (bpstat bs)
      ada_find_printable_frame).  */
   select_frame (get_current_frame ());
 
-  struct ada_catchpoint *c = (struct ada_catchpoint *) b;
-  switch (c->m_kind)
+  switch (m_kind)
     {
       case ada_catch_exception:
       case ada_catch_exception_unhandled:
       case ada_catch_handlers:
 	{
-	  const CORE_ADDR addr = ada_exception_name_addr (c->m_kind, b);
+	  const CORE_ADDR addr = ada_exception_name_addr (m_kind);
 	  char exception_name[256];
 
 	  if (addr != 0)
@@ -12536,7 +12319,7 @@ print_it_exception (bpstat bs)
 	     it clearer to the user which kind of catchpoint just got
 	     hit.  We used ui_out_text to make sure that this extra
 	     info does not pollute the exception name in the MI case.  */
-	  if (c->m_kind == ada_catch_exception_unhandled)
+	  if (m_kind == ada_catch_exception_unhandled)
 	    uiout->text ("unhandled ");
 	  uiout->field_string ("exception-name", exception_name);
 	}
@@ -12565,14 +12348,13 @@ print_it_exception (bpstat bs)
   return PRINT_SRC_AND_LOC;
 }
 
-/* Implement the PRINT_ONE method in the breakpoint_ops structure
-   for all exception catchpoint kinds.  */
+/* Implement the PRINT_ONE method in the structure for all exception
+   catchpoint kinds.  */
 
-static void
-print_one_exception (struct breakpoint *b, struct bp_location **last_loc)
+bool
+ada_catchpoint::print_one (const bp_location **last_loc) const
 { 
   struct ui_out *uiout = current_uiout;
-  struct ada_catchpoint *c = (struct ada_catchpoint *) b;
   struct value_print_options opts;
 
   get_user_print_options (&opts);
@@ -12581,148 +12363,138 @@ print_one_exception (struct breakpoint *
     uiout->field_skip ("addr");
 
   annotate_field (5);
-  switch (c->m_kind)
+  switch (m_kind)
     {
       case ada_catch_exception:
-        if (!c->excep_string.empty ())
-          {
+	if (!m_excep_string.empty ())
+	  {
 	    std::string msg = string_printf (_("`%s' Ada exception"),
-					     c->excep_string.c_str ());
+					     m_excep_string.c_str ());
 
-            uiout->field_string ("what", msg);
-          }
-        else
-          uiout->field_string ("what", "all Ada exceptions");
-        
-        break;
+	    uiout->field_string ("what", msg);
+	  }
+	else
+	  uiout->field_string ("what", "all Ada exceptions");
+	
+	break;
 
       case ada_catch_exception_unhandled:
-        uiout->field_string ("what", "unhandled Ada exceptions");
-        break;
+	uiout->field_string ("what", "unhandled Ada exceptions");
+	break;
       
       case ada_catch_handlers:
-        if (!c->excep_string.empty ())
-          {
+	if (!m_excep_string.empty ())
+	  {
 	    uiout->field_fmt ("what",
 			      _("`%s' Ada exception handlers"),
-			      c->excep_string.c_str ());
-          }
-        else
+			      m_excep_string.c_str ());
+	  }
+	else
 	  uiout->field_string ("what", "all Ada exceptions handlers");
-        break;
+	break;
 
       case ada_catch_assert:
-        uiout->field_string ("what", "failed Ada assertions");
-        break;
+	uiout->field_string ("what", "failed Ada assertions");
+	break;
 
       default:
-        internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
-        break;
+	internal_error (_("unexpected catchpoint type"));
+	break;
     }
+
+  return true;
 }
 
 /* Implement the PRINT_MENTION method in the breakpoint_ops structure
    for all exception catchpoint kinds.  */
 
-static void
-print_mention_exception (struct breakpoint *b)
+void
+ada_catchpoint::print_mention () const
 {
-  struct ada_catchpoint *c = (struct ada_catchpoint *) b;
   struct ui_out *uiout = current_uiout;
 
-  uiout->text (b->disposition == disp_del ? _("Temporary catchpoint ")
-                                                 : _("Catchpoint "));
-  uiout->field_signed ("bkptno", b->number);
+  uiout->text (disposition == disp_del ? _("Temporary catchpoint ")
+						 : _("Catchpoint "));
+  uiout->field_signed ("bkptno", number);
   uiout->text (": ");
 
-  switch (c->m_kind)
+  switch (m_kind)
     {
       case ada_catch_exception:
-        if (!c->excep_string.empty ())
+	if (!m_excep_string.empty ())
 	  {
 	    std::string info = string_printf (_("`%s' Ada exception"),
-					      c->excep_string.c_str ());
-	    uiout->text (info.c_str ());
+					      m_excep_string.c_str ());
+	    uiout->text (info);
 	  }
-        else
-          uiout->text (_("all Ada exceptions"));
-        break;
+	else
+	  uiout->text (_("all Ada exceptions"));
+	break;
 
       case ada_catch_exception_unhandled:
-        uiout->text (_("unhandled Ada exceptions"));
-        break;
+	uiout->text (_("unhandled Ada exceptions"));
+	break;
 
       case ada_catch_handlers:
-        if (!c->excep_string.empty ())
+	if (!m_excep_string.empty ())
 	  {
 	    std::string info
 	      = string_printf (_("`%s' Ada exception handlers"),
-			       c->excep_string.c_str ());
-	    uiout->text (info.c_str ());
+			       m_excep_string.c_str ());
+	    uiout->text (info);
 	  }
-        else
-          uiout->text (_("all Ada exceptions handlers"));
-        break;
+	else
+	  uiout->text (_("all Ada exceptions handlers"));
+	break;
 
       case ada_catch_assert:
-        uiout->text (_("failed Ada assertions"));
-        break;
+	uiout->text (_("failed Ada assertions"));
+	break;
 
       default:
-        internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
-        break;
+	internal_error (_("unexpected catchpoint type"));
+	break;
     }
 }
 
-/* Implement the PRINT_RECREATE method in the breakpoint_ops structure
-   for all exception catchpoint kinds.  */
+/* Implement the PRINT_RECREATE method in the structure for all
+   exception catchpoint kinds.  */
 
-static void
-print_recreate_exception (struct breakpoint *b, struct ui_file *fp)
+void
+ada_catchpoint::print_recreate (struct ui_file *fp) const
 {
-  struct ada_catchpoint *c = (struct ada_catchpoint *) b;
-
-  switch (c->m_kind)
+  switch (m_kind)
     {
       case ada_catch_exception:
-	fprintf_filtered (fp, "catch exception");
-	if (!c->excep_string.empty ())
-	  fprintf_filtered (fp, " %s", c->excep_string.c_str ());
+	gdb_printf (fp, "catch exception");
+	if (!m_excep_string.empty ())
+	  gdb_printf (fp, " %s", m_excep_string.c_str ());
 	break;
 
       case ada_catch_exception_unhandled:
-	fprintf_filtered (fp, "catch exception unhandled");
+	gdb_printf (fp, "catch exception unhandled");
 	break;
 
       case ada_catch_handlers:
-	fprintf_filtered (fp, "catch handlers");
+	gdb_printf (fp, "catch handlers");
 	break;
 
       case ada_catch_assert:
-	fprintf_filtered (fp, "catch assert");
+	gdb_printf (fp, "catch assert");
 	break;
 
       default:
-	internal_error (__FILE__, __LINE__, _("unexpected catchpoint type"));
+	internal_error (_("unexpected catchpoint type"));
     }
-  print_recreate_thread (b, fp);
+  print_recreate_thread (fp);
 }
 
-/* Virtual tables for various breakpoint types.  */
-static struct breakpoint_ops catch_exception_breakpoint_ops;
-static struct breakpoint_ops catch_exception_unhandled_breakpoint_ops;
-static struct breakpoint_ops catch_assert_breakpoint_ops;
-static struct breakpoint_ops catch_handlers_breakpoint_ops;
-
 /* See ada-lang.h.  */
 
 bool
 is_ada_exception_catchpoint (breakpoint *bp)
 {
-  return (bp->ops == &catch_exception_breakpoint_ops
-	  || bp->ops == &catch_exception_unhandled_breakpoint_ops
-	  || bp->ops == &catch_assert_breakpoint_ops
-	  || bp->ops == &catch_handlers_breakpoint_ops);
+  return dynamic_cast<ada_catchpoint *> (bp) != nullptr;
 }
 
 /* Split the arguments specified in a "catch exception" command.  
@@ -12738,7 +12510,7 @@ is_ada_exception_catchpoint (breakpoint
 static void
 catch_ada_exception_command_split (const char *args,
 				   bool is_catch_handlers_cmd,
-                                   enum ada_exception_catchpoint_kind *ex,
+				   enum ada_exception_catchpoint_kind *ex,
 				   std::string *excep_string,
 				   std::string *cond_string)
 {
@@ -12764,7 +12536,7 @@ catch_ada_exception_command_split (const
       args = skip_spaces (args);
 
       if (args[0] == '\0')
-        error (_("Condition missing after `if' keyword"));
+	error (_("Condition missing after `if' keyword"));
       *cond_string = args;
 
       args += strlen (args);
@@ -12815,46 +12587,19 @@ ada_exception_sym_name (enum ada_excepti
   switch (ex)
     {
       case ada_catch_exception:
-        return (data->exception_info->catch_exception_sym);
-        break;
-      case ada_catch_exception_unhandled:
-        return (data->exception_info->catch_exception_unhandled_sym);
-        break;
-      case ada_catch_assert:
-        return (data->exception_info->catch_assert_sym);
-        break;
-      case ada_catch_handlers:
-        return (data->exception_info->catch_handlers_sym);
-        break;
-      default:
-        internal_error (__FILE__, __LINE__,
-                        _("unexpected catchpoint kind (%d)"), ex);
-    }
-}
-
-/* Return the breakpoint ops "virtual table" used for catchpoints
-   of the EX kind.  */
-
-static const struct breakpoint_ops *
-ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
-{
-  switch (ex)
-    {
-      case ada_catch_exception:
-        return (&catch_exception_breakpoint_ops);
-        break;
+	return (data->exception_info->catch_exception_sym);
+	break;
       case ada_catch_exception_unhandled:
-        return (&catch_exception_unhandled_breakpoint_ops);
-        break;
+	return (data->exception_info->catch_exception_unhandled_sym);
+	break;
       case ada_catch_assert:
-        return (&catch_assert_breakpoint_ops);
-        break;
+	return (data->exception_info->catch_assert_sym);
+	break;
       case ada_catch_handlers:
-        return (&catch_handlers_breakpoint_ops);
-        break;
+	return (data->exception_info->catch_handlers_sym);
+	break;
       default:
-        internal_error (__FILE__, __LINE__,
-                        _("unexpected catchpoint kind (%d)"), ex);
+	internal_error (_("unexpected catchpoint kind (%d)"), ex);
     }
 }
 
@@ -12866,16 +12611,15 @@ ada_exception_breakpoint_ops (enum ada_e
 
 static std::string
 ada_exception_catchpoint_cond_string (const char *excep_string,
-                                      enum ada_exception_catchpoint_kind ex)
+				      enum ada_exception_catchpoint_kind ex)
 {
-  int i;
   bool is_standard_exc = false;
   std::string result;
 
   if (ex == ada_catch_handlers)
     {
       /* For exception handlers catchpoints, the condition string does
-         not use the same parameter as for the other exceptions.  */
+	 not use the same parameter as for the other exceptions.  */
       result = ("long_integer (GNAT_GCC_exception_Access"
 		"(gcc_exception).all.occurrence.id)");
     }
@@ -12891,7 +12635,7 @@ ada_exception_catchpoint_cond_string (co
      may then be set only on user-defined exceptions which have the
      same not-fully-qualified name (e.g. my_package.constraint_error).
 
-     To avoid this unexcepted behavior, these standard exceptions are
+     To avoid this unexpected behavior, these standard exceptions are
      systematically prefixed by "standard".  This means that "catch
      exception constraint_error" is rewritten into "catch exception
      standard.constraint_error".
@@ -12901,9 +12645,9 @@ ada_exception_catchpoint_cond_string (co
      breakpoint condition is to use its fully-qualified named:
      e.g. my_package.constraint_error.  */
 
-  for (i = 0; i < sizeof (standard_exc) / sizeof (char *); i++)
+  for (const char *name : standard_exc)
     {
-      if (strcmp (standard_exc [i], excep_string) == 0)
+      if (strcmp (name, excep_string) == 0)
 	{
 	  is_standard_exc = true;
 	  break;
@@ -12920,16 +12664,11 @@ ada_exception_catchpoint_cond_string (co
   return result;
 }
 
-/* Return the symtab_and_line that should be used to insert an exception
-   catchpoint of the TYPE kind.
-
-   ADDR_STRING returns the name of the function where the real
-   breakpoint that implements the catchpoints is set, depending on the
-   type of catchpoint we need to create.  */
+/* Return the symtab_and_line that should be used to insert an
+   exception catchpoint of the TYPE kind.  */
 
 static struct symtab_and_line
-ada_exception_sal (enum ada_exception_catchpoint_kind ex,
-		   std::string *addr_string, const struct breakpoint_ops **ops)
+ada_exception_sal (enum ada_exception_catchpoint_kind ex)
 {
   const char *sym_name;
   struct symbol *sym;
@@ -12940,20 +12679,15 @@ ada_exception_sal (enum ada_exception_ca
   /* Then lookup the function on which we will break in order to catch
      the Ada exceptions requested by the user.  */
   sym_name = ada_exception_sym_name (ex);
-  sym = standard_lookup (sym_name, NULL, VAR_DOMAIN);
+  sym = standard_lookup (sym_name, NULL, SEARCH_VFT);
 
   if (sym == NULL)
-    error (_("Catchpoint symbol not found: %s"), sym_name);
+    throw_error (NOT_FOUND_ERROR, _("Catchpoint symbol not found: %s"),
+		 sym_name);
 
-  if (SYMBOL_CLASS (sym) != LOC_BLOCK)
+  if (sym->loc_class () != LOC_BLOCK)
     error (_("Unable to insert catchpoint. %s is not a function."), sym_name);
 
-  /* Set ADDR_STRING.  */
-  *addr_string = sym_name;
-
-  /* Set OPS.  */
-  *ops = ada_exception_breakpoint_ops (ex);
-
   return find_function_start_sal (sym, 1);
 }
 
@@ -12975,23 +12709,21 @@ ada_exception_sal (enum ada_exception_ca
 void
 create_ada_exception_catchpoint (struct gdbarch *gdbarch,
 				 enum ada_exception_catchpoint_kind ex_kind,
-				 const std::string &excep_string,
+				 std::string &&excep_string,
 				 const std::string &cond_string,
 				 int tempflag,
-				 int disabled,
+				 int enabled,
 				 int from_tty)
 {
-  std::string addr_string;
-  const struct breakpoint_ops *ops = NULL;
-  struct symtab_and_line sal = ada_exception_sal (ex_kind, &addr_string, &ops);
-
-  std::unique_ptr<ada_catchpoint> c (new ada_catchpoint (ex_kind));
-  init_ada_exception_breakpoint (c.get (), gdbarch, sal, addr_string.c_str (),
-				 ops, tempflag, disabled, from_tty);
-  c->excep_string = excep_string;
-  create_excep_cond_exprs (c.get (), ex_kind);
-  if (!cond_string.empty ())
-    set_breakpoint_condition (c.get (), cond_string.c_str (), from_tty);
+  /* This works around an obscure issue when an Ada program is
+     compiled with LTO.  */
+  scoped_restore_current_language save_language (language_ada);
+
+  std::unique_ptr<ada_catchpoint> c
+    (new ada_catchpoint (gdbarch, ex_kind,
+			 cond_string.empty () ? nullptr : cond_string.c_str (),
+			 tempflag, enabled, from_tty,
+			 std::move (excep_string)));
   install_breakpoint (0, std::move (c), 1);
 }
 
@@ -13008,14 +12740,14 @@ catch_ada_exception_command (const char
   std::string excep_string;
   std::string cond_string;
 
-  tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+  tempflag = command->context () == CATCH_TEMPORARY;
 
   if (!arg)
     arg = "";
   catch_ada_exception_command_split (arg, false, &ex_kind, &excep_string,
 				     &cond_string);
   create_ada_exception_catchpoint (gdbarch, ex_kind,
-				   excep_string, cond_string,
+				   std::move (excep_string), cond_string,
 				   tempflag, 1 /* enabled */,
 				   from_tty);
 }
@@ -13033,14 +12765,14 @@ catch_ada_handlers_command (const char *
   std::string excep_string;
   std::string cond_string;
 
-  tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+  tempflag = command->context () == CATCH_TEMPORARY;
 
   if (!arg)
     arg = "";
   catch_ada_exception_command_split (arg, true, &ex_kind, &excep_string,
 				     &cond_string);
   create_ada_exception_catchpoint (gdbarch, ex_kind,
-				   excep_string, cond_string,
+				   std::move (excep_string), cond_string,
 				   tempflag, 1 /* enabled */,
 				   from_tty);
 }
@@ -13080,7 +12812,7 @@ catch_ada_assert_command_split (const ch
       args += 2;
       args = skip_spaces (args);
       if (args[0] == '\0')
-        error (_("condition missing after `if' keyword"));
+	error (_("condition missing after `if' keyword"));
       cond_string.assign (args);
     }
 
@@ -13101,13 +12833,13 @@ catch_assert_command (const char *arg_en
   int tempflag;
   std::string cond_string;
 
-  tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+  tempflag = command->context () == CATCH_TEMPORARY;
 
   if (!arg)
     arg = "";
   catch_ada_assert_command_split (arg, cond_string);
   create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
-				   "", cond_string,
+				   {}, cond_string,
 				   tempflag, 1 /* enabled */,
 				   from_tty);
 }
@@ -13117,13 +12849,13 @@ 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 = sym->type ()->name ();
 
-  return (SYMBOL_CLASS (sym) != LOC_TYPEDEF
-          && SYMBOL_CLASS (sym) != LOC_BLOCK
-          && SYMBOL_CLASS (sym) != LOC_CONST
-          && SYMBOL_CLASS (sym) != LOC_UNRESOLVED
-          && type_name != NULL && strcmp (type_name, "exception") == 0);
+  return (sym->loc_class () != LOC_TYPEDEF
+	  && sym->loc_class () != LOC_BLOCK
+	  && sym->loc_class () != LOC_CONST
+	  && sym->loc_class () != LOC_UNRESOLVED
+	  && type_name != NULL && strcmp (type_name, "exception") == 0);
 }
 
 /* Given a global symbol SYM, return non-zero iff SYM is a non-standard
@@ -13133,13 +12865,11 @@ ada_is_exception_sym (struct symbol *sym
 static int
 ada_is_non_standard_exception_sym (struct symbol *sym)
 {
-  int i;
-
   if (!ada_is_exception_sym (sym))
     return 0;
 
-  for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
-    if (strcmp (sym->linkage_name (), standard_exc[i]) == 0)
+  for (const char *name : standard_exc)
+    if (strcmp (sym->linkage_name (), name) == 0)
       return 0;  /* A standard exception.  */
 
   /* Numeric_Error is also a standard exception, so exclude it.
@@ -13204,22 +12934,33 @@ static void
 ada_add_standard_exceptions (compiled_regex *preg,
 			     std::vector<ada_exc_info> *exceptions)
 {
-  int i;
-
-  for (i = 0; i < ARRAY_SIZE (standard_exc); i++)
+  for (const char *name : standard_exc)
     {
-      if (preg == NULL
-	  || preg->exec (standard_exc[i], 0, NULL, 0) == 0)
+      if (preg == NULL || preg->exec (name, 0, NULL, 0) == 0)
 	{
-	  struct bound_minimal_symbol msymbol
-	    = ada_lookup_simple_minsym (standard_exc[i]);
+	  symbol_name_match_type match_type = name_match_type_from_name (name);
+	  lookup_name_info lookup_name (name, match_type);
+
+	  symbol_name_matcher_ftype *match_name
+	    = ada_get_symbol_name_matcher (lookup_name);
 
-	  if (msymbol.minsym != NULL)
+	  /* Iterate over all objfiles irrespective of scope or linker
+	     namespaces so we get all exceptions anywhere in the
+	     progspace.  */
+	  for (objfile *objfile : current_program_space->objfiles ())
 	    {
-	      struct ada_exc_info info
-		= {standard_exc[i], BMSYMBOL_VALUE_ADDRESS (msymbol)};
+	      for (minimal_symbol *msymbol : objfile->msymbols ())
+		{
+		  if (match_name (msymbol->linkage_name (), lookup_name,
+				  nullptr)
+		      && msymbol->type () != mst_solib_trampoline)
+		    {
+		      ada_exc_info info
+			= {name, msymbol->value_address (objfile)};
 
-	      exceptions->push_back (info);
+		      exceptions->push_back (info);
+		    }
+		}
 	    }
 	}
     }
@@ -13237,19 +12978,16 @@ ada_add_standard_exceptions (compiled_re
 
 static void
 ada_add_exceptions_from_frame (compiled_regex *preg,
-			       struct frame_info *frame,
+			       const frame_info_ptr &frame,
 			       std::vector<ada_exc_info> *exceptions)
 {
   const struct block *block = get_frame_block (frame, 0);
 
   while (block != 0)
     {
-      struct block_iterator iter;
-      struct symbol *sym;
-
-      ALL_BLOCK_SYMBOLS (block, iter, sym)
+      for (struct symbol *sym : block_iterator_range (block))
 	{
-	  switch (SYMBOL_CLASS (sym))
+	  switch (sym->loc_class ())
 	    {
 	    case LOC_TYPEDEF:
 	    case LOC_BLOCK:
@@ -13259,27 +12997,18 @@ ada_add_exceptions_from_frame (compiled_
 	      if (ada_is_exception_sym (sym))
 		{
 		  struct ada_exc_info info = {sym->print_name (),
-					      SYMBOL_VALUE_ADDRESS (sym)};
+					      sym->value_address ()};
 
 		  exceptions->push_back (info);
 		}
 	    }
 	}
-      if (BLOCK_FUNCTION (block) != NULL)
+      if (block->function () != NULL)
 	break;
-      block = BLOCK_SUPERBLOCK (block);
+      block = block->superblock ();
     }
 }
 
-/* Return true if NAME matches PREG or if PREG is NULL.  */
-
-static bool
-name_matches_regex (const char *name, compiled_regex *preg)
-{
-  return (preg == NULL
-	  || preg->exec (ada_decode (name).c_str (), 0, NULL, 0) == 0);
-}
-
 /* Add all exceptions defined globally whose name name match
    a regular expression, excluding standard exceptions.
 
@@ -13303,6 +13032,13 @@ static void
 ada_add_global_exceptions (compiled_regex *preg,
 			   std::vector<ada_exc_info> *exceptions)
 {
+  /* Return true if NAME matches PREG or if PREG is NULL.  */
+  auto name_matches_regex = [&] (const char *name)
+    {
+      return preg == nullptr || preg->exec (name, 0, NULL, 0) == 0;
+    };
+
+
   /* In Ada, the symbol "search name" is a linkage name, whereas the
      regular expression used to do the matching refers to the natural
      name.  So match against the decoded name.  */
@@ -13311,30 +13047,36 @@ ada_add_global_exceptions (compiled_rege
 			   [&] (const char *search_name)
 			   {
 			     std::string decoded = ada_decode (search_name);
-			     return name_matches_regex (decoded.c_str (), preg);
+			     return name_matches_regex (decoded.c_str ());
 			   },
 			   NULL,
-			   VARIABLES_DOMAIN);
+			   SEARCH_GLOBAL_BLOCK | SEARCH_STATIC_BLOCK,
+			   SEARCH_VAR_DOMAIN,
+			   [&] (enum language lang)
+			     {
+			       /* Try to skip non-Ada CUs.  */
+			       return lang == language_ada;
+			     });
 
+  /* Iterate over all objfiles irrespective of scope or linker namespaces
+     so we get all exceptions anywhere in the progspace.  */
   for (objfile *objfile : current_program_space->objfiles ())
     {
       for (compunit_symtab *s : objfile->compunits ())
 	{
-	  const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (s);
+	  const struct blockvector *bv = s->blockvector ();
 	  int i;
 
 	  for (i = GLOBAL_BLOCK; i <= STATIC_BLOCK; i++)
 	    {
-	      const struct block *b = BLOCKVECTOR_BLOCK (bv, i);
-	      struct block_iterator iter;
-	      struct symbol *sym;
+	      const struct block *b = bv->block (i);
 
-	      ALL_BLOCK_SYMBOLS (b, iter, sym)
+	      for (struct symbol *sym : block_iterator_range (b))
 		if (ada_is_non_standard_exception_sym (sym)
-		    && name_matches_regex (sym->natural_name (), preg))
+		    && name_matches_regex (sym->natural_name ()))
 		  {
 		    struct ada_exc_info info
-		      = {sym->print_name (), SYMBOL_VALUE_ADDRESS (sym)};
+		      = {sym->print_name (), sym->value_address ()};
 
 		    exceptions->push_back (info);
 		  }
@@ -13417,512 +13159,18 @@ info_exceptions_command (const char *reg
   std::vector<ada_exc_info> exceptions = ada_exceptions_list (regexp);
 
   if (regexp != NULL)
-    printf_filtered
+    gdb_printf
       (_("All Ada exceptions matching regular expression \"%s\":\n"), regexp);
   else
-    printf_filtered (_("All defined Ada exceptions:\n"));
+    gdb_printf (_("All defined Ada exceptions:\n"));
 
   for (const ada_exc_info &info : exceptions)
-    printf_filtered ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
-}
-
-                                /* Operators */
-/* Information about operators given special treatment in functions
-   below.  */
-/* Format: OP_DEFN (<operator>, <operator length>, <# args>, <binop>).  */
-
-#define ADA_OPERATORS \
-    OP_DEFN (OP_VAR_VALUE, 4, 0, 0) \
-    OP_DEFN (BINOP_IN_BOUNDS, 3, 2, 0) \
-    OP_DEFN (TERNOP_IN_RANGE, 1, 3, 0) \
-    OP_DEFN (OP_ATR_FIRST, 1, 2, 0) \
-    OP_DEFN (OP_ATR_LAST, 1, 2, 0) \
-    OP_DEFN (OP_ATR_LENGTH, 1, 2, 0) \
-    OP_DEFN (OP_ATR_IMAGE, 1, 2, 0) \
-    OP_DEFN (OP_ATR_MAX, 1, 3, 0) \
-    OP_DEFN (OP_ATR_MIN, 1, 3, 0) \
-    OP_DEFN (OP_ATR_MODULUS, 1, 1, 0) \
-    OP_DEFN (OP_ATR_POS, 1, 2, 0) \
-    OP_DEFN (OP_ATR_SIZE, 1, 1, 0) \
-    OP_DEFN (OP_ATR_TAG, 1, 1, 0) \
-    OP_DEFN (OP_ATR_VAL, 1, 2, 0) \
-    OP_DEFN (UNOP_QUAL, 3, 1, 0) \
-    OP_DEFN (UNOP_IN_RANGE, 3, 1, 0) \
-    OP_DEFN (OP_OTHERS, 1, 1, 0) \
-    OP_DEFN (OP_POSITIONAL, 3, 1, 0) \
-    OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)
-
-static void
-ada_operator_length (const struct expression *exp, int pc, int *oplenp,
-		     int *argsp)
-{
-  switch (exp->elts[pc - 1].opcode)
-    {
-    default:
-      operator_length_standard (exp, pc, oplenp, argsp);
-      break;
-
-#define OP_DEFN(op, len, args, binop) \
-    case op: *oplenp = len; *argsp = args; break;
-      ADA_OPERATORS;
-#undef OP_DEFN
-
-    case OP_AGGREGATE:
-      *oplenp = 3;
-      *argsp = longest_to_int (exp->elts[pc - 2].longconst);
-      break;
-
-    case OP_CHOICES:
-      *oplenp = 3;
-      *argsp = longest_to_int (exp->elts[pc - 2].longconst) + 1;
-      break;
-    }
-}
-
-/* Implementation of the exp_descriptor method operator_check.  */
-
-static int
-ada_operator_check (struct expression *exp, int pos,
-		    int (*objfile_func) (struct objfile *objfile, void *data),
-		    void *data)
-{
-  const union exp_element *const elts = exp->elts;
-  struct type *type = NULL;
-
-  switch (elts[pos].opcode)
-    {
-      case UNOP_IN_RANGE:
-      case UNOP_QUAL:
-	type = elts[pos + 1].type;
-	break;
-
-      default:
-	return operator_check_standard (exp, pos, objfile_func, data);
-    }
-
-  /* Invoke callbacks for TYPE and OBJFILE if they were set as non-NULL.  */
-
-  if (type && TYPE_OBJFILE (type)
-      && (*objfile_func) (TYPE_OBJFILE (type), data))
-    return 1;
-
-  return 0;
-}
-
-static const char *
-ada_op_name (enum exp_opcode opcode)
-{
-  switch (opcode)
-    {
-    default:
-      return op_name_standard (opcode);
-
-#define OP_DEFN(op, len, args, binop) case op: return #op;
-      ADA_OPERATORS;
-#undef OP_DEFN
-
-    case OP_AGGREGATE:
-      return "OP_AGGREGATE";
-    case OP_CHOICES:
-      return "OP_CHOICES";
-    case OP_NAME:
-      return "OP_NAME";
-    }
-}
-
-/* As for operator_length, but assumes PC is pointing at the first
-   element of the operator, and gives meaningful results only for the 
-   Ada-specific operators, returning 0 for *OPLENP and *ARGSP otherwise.  */
-
-static void
-ada_forward_operator_length (struct expression *exp, int pc,
-                             int *oplenp, int *argsp)
-{
-  switch (exp->elts[pc].opcode)
-    {
-    default:
-      *oplenp = *argsp = 0;
-      break;
-
-#define OP_DEFN(op, len, args, binop) \
-    case op: *oplenp = len; *argsp = args; break;
-      ADA_OPERATORS;
-#undef OP_DEFN
-
-    case OP_AGGREGATE:
-      *oplenp = 3;
-      *argsp = longest_to_int (exp->elts[pc + 1].longconst);
-      break;
-
-    case OP_CHOICES:
-      *oplenp = 3;
-      *argsp = longest_to_int (exp->elts[pc + 1].longconst) + 1;
-      break;
-
-    case OP_STRING:
-    case OP_NAME:
-      {
-	int len = longest_to_int (exp->elts[pc + 1].longconst);
-
-	*oplenp = 4 + BYTES_TO_EXP_ELEM (len + 1);
-	*argsp = 0;
-	break;
-      }
-    }
-}
-
-static int
-ada_dump_subexp_body (struct expression *exp, struct ui_file *stream, int elt)
-{
-  enum exp_opcode op = exp->elts[elt].opcode;
-  int oplen, nargs;
-  int pc = elt;
-  int i;
-
-  ada_forward_operator_length (exp, elt, &oplen, &nargs);
-
-  switch (op)
-    {
-      /* Ada attributes ('Foo).  */
-    case OP_ATR_FIRST:
-    case OP_ATR_LAST:
-    case OP_ATR_LENGTH:
-    case OP_ATR_IMAGE:
-    case OP_ATR_MAX:
-    case OP_ATR_MIN:
-    case OP_ATR_MODULUS:
-    case OP_ATR_POS:
-    case OP_ATR_SIZE:
-    case OP_ATR_TAG:
-    case OP_ATR_VAL:
-      break;
-
-    case UNOP_IN_RANGE:
-    case UNOP_QUAL:
-      /* XXX: gdb_sprint_host_address, type_sprint */
-      fprintf_filtered (stream, _("Type @"));
-      gdb_print_host_address (exp->elts[pc + 1].type, stream);
-      fprintf_filtered (stream, " (");
-      type_print (exp->elts[pc + 1].type, NULL, stream, 0);
-      fprintf_filtered (stream, ")");
-      break;
-    case BINOP_IN_BOUNDS:
-      fprintf_filtered (stream, " (%d)",
-			longest_to_int (exp->elts[pc + 2].longconst));
-      break;
-    case TERNOP_IN_RANGE:
-      break;
-
-    case OP_AGGREGATE:
-    case OP_OTHERS:
-    case OP_DISCRETE_RANGE:
-    case OP_POSITIONAL:
-    case OP_CHOICES:
-      break;
-
-    case OP_NAME:
-    case OP_STRING:
-      {
-	char *name = &exp->elts[elt + 2].string;
-	int len = longest_to_int (exp->elts[elt + 1].longconst);
-
-	fprintf_filtered (stream, "Text: `%.*s'", len, name);
-	break;
-      }
-
-    default:
-      return dump_subexp_body_standard (exp, stream, elt);
-    }
-
-  elt += oplen;
-  for (i = 0; i < nargs; i += 1)
-    elt = dump_subexp (exp, stream, elt);
-
-  return elt;
+    gdb_printf ("%s: %s\n", info.name, paddress (gdbarch, info.addr));
 }
 
-/* The Ada extension of print_subexp (q.v.).  */
-
-static void
-ada_print_subexp (struct expression *exp, int *pos,
-                  struct ui_file *stream, enum precedence prec)
-{
-  int oplen, nargs, i;
-  int pc = *pos;
-  enum exp_opcode op = exp->elts[pc].opcode;
-
-  ada_forward_operator_length (exp, pc, &oplen, &nargs);
-
-  *pos += oplen;
-  switch (op)
-    {
-    default:
-      *pos -= oplen;
-      print_subexp_standard (exp, pos, stream, prec);
-      return;
-
-    case OP_VAR_VALUE:
-      fputs_filtered (exp->elts[pc + 2].symbol->natural_name (), stream);
-      return;
-
-    case BINOP_IN_BOUNDS:
-      /* XXX: sprint_subexp */
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      fputs_filtered (" in ", stream);
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      fputs_filtered ("'range", stream);
-      if (exp->elts[pc + 1].longconst > 1)
-        fprintf_filtered (stream, "(%ld)",
-                          (long) exp->elts[pc + 1].longconst);
-      return;
-
-    case TERNOP_IN_RANGE:
-      if (prec >= PREC_EQUAL)
-        fputs_filtered ("(", stream);
-      /* XXX: sprint_subexp */
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      fputs_filtered (" in ", stream);
-      print_subexp (exp, pos, stream, PREC_EQUAL);
-      fputs_filtered (" .. ", stream);
-      print_subexp (exp, pos, stream, PREC_EQUAL);
-      if (prec >= PREC_EQUAL)
-        fputs_filtered (")", stream);
-      return;
-
-    case OP_ATR_FIRST:
-    case OP_ATR_LAST:
-    case OP_ATR_LENGTH:
-    case OP_ATR_IMAGE:
-    case OP_ATR_MAX:
-    case OP_ATR_MIN:
-    case OP_ATR_MODULUS:
-    case OP_ATR_POS:
-    case OP_ATR_SIZE:
-    case OP_ATR_TAG:
-    case OP_ATR_VAL:
-      if (exp->elts[*pos].opcode == OP_TYPE)
-        {
-          if (TYPE_CODE (exp->elts[*pos + 1].type) != TYPE_CODE_VOID)
-            LA_PRINT_TYPE (exp->elts[*pos + 1].type, "", stream, 0, 0,
-			   &type_print_raw_options);
-          *pos += 3;
-        }
-      else
-        print_subexp (exp, pos, stream, PREC_SUFFIX);
-      fprintf_filtered (stream, "'%s", ada_attribute_name (op));
-      if (nargs > 1)
-        {
-          int tem;
-
-          for (tem = 1; tem < nargs; tem += 1)
-            {
-              fputs_filtered ((tem == 1) ? " (" : ", ", stream);
-              print_subexp (exp, pos, stream, PREC_ABOVE_COMMA);
-            }
-          fputs_filtered (")", stream);
-        }
-      return;
-
-    case UNOP_QUAL:
-      type_print (exp->elts[pc + 1].type, "", stream, 0);
-      fputs_filtered ("'(", stream);
-      print_subexp (exp, pos, stream, PREC_PREFIX);
-      fputs_filtered (")", stream);
-      return;
-
-    case UNOP_IN_RANGE:
-      /* XXX: sprint_subexp */
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      fputs_filtered (" in ", stream);
-      LA_PRINT_TYPE (exp->elts[pc + 1].type, "", stream, 1, 0,
-		     &type_print_raw_options);
-      return;
-
-    case OP_DISCRETE_RANGE:
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      fputs_filtered ("..", stream);
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      return;
-
-    case OP_OTHERS:
-      fputs_filtered ("others => ", stream);
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      return;
-
-    case OP_CHOICES:
-      for (i = 0; i < nargs-1; i += 1)
-	{
-	  if (i > 0)
-	    fputs_filtered ("|", stream);
-	  print_subexp (exp, pos, stream, PREC_SUFFIX);
-	}
-      fputs_filtered (" => ", stream);
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      return;
-      
-    case OP_POSITIONAL:
-      print_subexp (exp, pos, stream, PREC_SUFFIX);
-      return;
-
-    case OP_AGGREGATE:
-      fputs_filtered ("(", stream);
-      for (i = 0; i < nargs; i += 1)
-	{
-	  if (i > 0)
-	    fputs_filtered (", ", stream);
-	  print_subexp (exp, pos, stream, PREC_SUFFIX);
-	}
-      fputs_filtered (")", stream);
-      return;
-    }
-}
-
-/* Table mapping opcodes into strings for printing operators
-   and precedences of the operators.  */
-
-static const struct op_print ada_op_print_tab[] = {
-  {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
-  {"or else", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
-  {"and then", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
-  {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
-  {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
-  {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
-  {"=", BINOP_EQUAL, PREC_EQUAL, 0},
-  {"/=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
-  {"<=", BINOP_LEQ, PREC_ORDER, 0},
-  {">=", BINOP_GEQ, PREC_ORDER, 0},
-  {">", BINOP_GTR, PREC_ORDER, 0},
-  {"<", BINOP_LESS, PREC_ORDER, 0},
-  {">>", BINOP_RSH, PREC_SHIFT, 0},
-  {"<<", BINOP_LSH, PREC_SHIFT, 0},
-  {"+", BINOP_ADD, PREC_ADD, 0},
-  {"-", BINOP_SUB, PREC_ADD, 0},
-  {"&", BINOP_CONCAT, PREC_ADD, 0},
-  {"*", BINOP_MUL, PREC_MUL, 0},
-  {"/", BINOP_DIV, PREC_MUL, 0},
-  {"rem", BINOP_REM, PREC_MUL, 0},
-  {"mod", BINOP_MOD, PREC_MUL, 0},
-  {"**", BINOP_EXP, PREC_REPEAT, 0},
-  {"@", BINOP_REPEAT, PREC_REPEAT, 0},
-  {"-", UNOP_NEG, PREC_PREFIX, 0},
-  {"+", UNOP_PLUS, PREC_PREFIX, 0},
-  {"not ", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
-  {"not ", UNOP_COMPLEMENT, PREC_PREFIX, 0},
-  {"abs ", UNOP_ABS, PREC_PREFIX, 0},
-  {".all", UNOP_IND, PREC_SUFFIX, 1},
-  {"'access", UNOP_ADDR, PREC_SUFFIX, 1},
-  {"'size", OP_ATR_SIZE, PREC_SUFFIX, 1},
-  {NULL, OP_NULL, PREC_SUFFIX, 0}
-};
-
-enum ada_primitive_types {
-  ada_primitive_type_int,
-  ada_primitive_type_long,
-  ada_primitive_type_short,
-  ada_primitive_type_char,
-  ada_primitive_type_float,
-  ada_primitive_type_double,
-  ada_primitive_type_void,
-  ada_primitive_type_long_long,
-  ada_primitive_type_long_double,
-  ada_primitive_type_natural,
-  ada_primitive_type_positive,
-  ada_primitive_type_system_address,
-  ada_primitive_type_storage_offset,
-  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,
-  ada_operator_check,
-  ada_op_name,
-  ada_dump_subexp_body,
-  ada_evaluate_subexp
-};
-
 /* symbol_name_matcher_ftype adapter for wild_match.  */
 
 static bool
@@ -13940,7 +13188,51 @@ do_full_match (const char *symbol_search
 	       const lookup_name_info &lookup_name,
 	       completion_match_result *comp_match_res)
 {
-  return full_match (symbol_search_name, ada_lookup_name (lookup_name));
+  const char *lname = lookup_name.ada ().lookup_name ().c_str ();
+
+  /* If both symbols start with "_ada_", just let the loop below
+     handle the comparison.  However, if only the symbol name starts
+     with "_ada_", skip the prefix and let the match proceed as
+     usual.  */
+  if (startswith (symbol_search_name, "_ada_")
+      && !startswith (lname, "_ada"))
+    symbol_search_name += 5;
+  /* Likewise for ghost entities.  */
+  if (startswith (symbol_search_name, "___ghost_")
+      && !startswith (lname, "___ghost_"))
+    symbol_search_name += 9;
+
+  int uscore_count = 0;
+  while (*lname != '\0')
+    {
+      if (*symbol_search_name != *lname)
+	{
+	  if (*symbol_search_name == 'B' && uscore_count == 2
+	      && symbol_search_name[1] == '_')
+	    {
+	      symbol_search_name += 2;
+	      while (isdigit (*symbol_search_name))
+		++symbol_search_name;
+	      if (symbol_search_name[0] == '_'
+		  && symbol_search_name[1] == '_')
+		{
+		  symbol_search_name += 2;
+		  continue;
+		}
+	    }
+	  return false;
+	}
+
+      if (*symbol_search_name == '_')
+	++uscore_count;
+      else
+	uscore_count = 0;
+
+      ++symbol_search_name;
+      ++lname;
+    }
+
+  return is_name_suffix (symbol_search_name);
 }
 
 /* symbol_name_matcher_ftype for exact (verbatim) matches.  */
@@ -13957,9 +13249,9 @@ 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 ();
+  std::string_view user_name = lookup_name.name ();
 
-  if (user_name[0] == '<')
+  if (!user_name.empty () && user_name[0] == '<')
     {
       if (user_name.back () == '>')
 	m_encoded_name = user_name.substr (1, user_name.size () - 2);
@@ -13974,15 +13266,13 @@ 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 ("__") != std::string_view::npos;
 
       if (!m_encoded_p)
 	{
-	  const char *folded = ada_fold_name (user_name.c_str ());
-	  const char *encoded = ada_encode_1 (folded, false);
-	  if (encoded != NULL)
-	    m_encoded_name = encoded;
-	  else
+	  const char *folded = ada_fold_name (user_name);
+	  m_encoded_name = ada_encode_1 (folded, false);
+	  if (m_encoded_name.empty ())
 	    m_encoded_name = user_name;
 	}
       else
@@ -13998,6 +13288,8 @@ ada_lookup_name_info::ada_lookup_name_in
       else
 	m_standard_p = false;
 
+      m_decoded_name = ada_decode (m_encoded_name.c_str (), true, false, false);
+
       /* If the name contains a ".", then the user is entering a fully
 	 qualified entity name, and the match must not be done in wild
 	 mode.  Similarly, if the user wants to complete what looks
@@ -14033,12 +13325,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 ();
+  std::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 +13340,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,156 +13362,536 @@ ada_get_symbol_name_matcher (const looku
     }
 }
 
-/* Implement the "la_read_var_value" language_defn method for Ada.  */
+/* Class representing the Ada language.  */
 
-static struct value *
-ada_read_var_value (struct symbol *var, const struct block *var_block,
-		    struct frame_info *frame)
+class ada_language : public language_defn
 {
-  /* The only case where default_read_var_value is not sufficient
-     is when VAR is a renaming...  */
-  if (frame != nullptr)
+public:
+  ada_language ()
+    : language_defn (language_ada)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+
+  const char *name () const override
+  { return "ada"; }
+
+  /* See language.h.  */
+
+  const char *natural_name () const override
+  { return "Ada"; }
+
+  /* See language.h.  */
+
+  const std::vector<const char *> &filename_extensions () const override
+  {
+    static const std::vector<const char *> extensions
+      = { ".adb", ".ads", ".a", ".ada", ".dg" };
+    return extensions;
+  }
+
+  /* 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);
+
+    value_print (index_value, stream, options);
+    gdb_printf (stream, " => ");
+  }
+
+  /* Implement the "read_var_value" language_defn method for Ada.  */
+
+  struct value *read_var_value (struct symbol *var,
+				const struct block *var_block,
+				const frame_info_ptr &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.  */
+  bool symbol_printing_suppressed (struct symbol *symbol) const override
+  {
+    return symbol->is_artificial ();
+  }
+
+  /* See language.h.  */
+  struct value *value_string (struct gdbarch *gdbarch,
+			      const char *ptr, ssize_t len) const override
+  {
+    struct type *type = language_string_char_type (this, gdbarch);
+    value *val = ::value_string (ptr, len, type);
+    /* VAL will be a TYPE_CODE_STRING, but Ada only knows how to print
+       strings that are arrays of characters, so fix the type now.  */
+    gdb_assert (val->type ()->code () == TYPE_CODE_STRING);
+    val->type ()->set_code (TYPE_CODE_ARRAY);
+    return val;
+  }
+
+  /* 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);
+
+    /* Helper function to allow shorter lines below.  */
+    auto add = [&] (struct type *t)
     {
-      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);
-    }
+      lai->add_primitive_type (t);
+    };
 
-  /* 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);
-}
+    type_allocator alloc (gdbarch);
+    add (init_integer_type (alloc, gdbarch_int_bit (gdbarch),
+			    0, "integer"));
+    add (init_integer_type (alloc, gdbarch_long_bit (gdbarch),
+			    0, "long_integer"));
+    add (init_integer_type (alloc, gdbarch_short_bit (gdbarch),
+			    0, "short_integer"));
+    struct type *char_type = init_character_type (alloc, TARGET_CHAR_BIT,
+						  1, "character");
+    lai->set_string_char_type (char_type);
+    add (char_type);
+    add (init_character_type (alloc, 16, 1, "wide_character"));
+    add (init_character_type (alloc, 32, 1, "wide_wide_character"));
+    add (init_float_type (alloc, gdbarch_float_bit (gdbarch),
+			  "float", gdbarch_float_format (gdbarch)));
+    add (init_float_type (alloc, gdbarch_double_bit (gdbarch),
+			  "long_float", gdbarch_double_format (gdbarch)));
+    add (init_integer_type (alloc, gdbarch_long_long_bit (gdbarch),
+			    0, "long_long_integer"));
+    add (init_integer_type (alloc, 128, 0, "long_long_long_integer"));
+    add (init_integer_type (alloc, 128, 1, "unsigned_long_long_long_integer"));
+    add (init_float_type (alloc, gdbarch_long_double_bit (gdbarch),
+			  "long_long_float",
+			  gdbarch_long_double_format (gdbarch)));
+    add (init_integer_type (alloc, gdbarch_int_bit (gdbarch),
+			    0, "natural"));
+    add (init_integer_type (alloc, gdbarch_int_bit (gdbarch),
+			    0, "positive"));
+    add (builtin->builtin_void);
+
+    struct type *system_addr_ptr
+      = lookup_pointer_type (alloc.new_type (TYPE_CODE_VOID, TARGET_CHAR_BIT,
+					     "void"));
+    system_addr_ptr->set_name ("system__address");
+    add (system_addr_ptr);
+
+    /* 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 = system_addr_ptr->length ();
+    add (init_integer_type (alloc, addr_length * HOST_CHAR_BIT, 0,
+			    "storage_offset"));
 
-static const char *ada_extensions[] =
-{
-  ".adb", ".ads", ".a", ".ada", ".dg", NULL
-};
+    lai->set_bool_type (builtin->builtin_bool);
+  }
 
-extern const struct language_defn ada_language_defn = {
-  "ada",                        /* Language name */
-  "Ada",
-  language_ada,
-  range_check_off,
-  case_sensitive_on,            /* Yes, Ada is case-insensitive, but
-                                   that's not quite what this means.  */
-  array_row_major,
-  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 */
-};
+  /* See language.h.  */
 
-/* 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;
+  bool iterate_over_symbols
+	(const struct block *block, const lookup_name_info &name,
+	 domain_search_flags 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, 0);
+    for (block_symbol &sym : results)
+      {
+	if (!callback (&sym))
+	  return false;
+      }
 
-/* Implement the "set ada" prefix command.  */
+    return true;
+  }
 
-static void
-set_ada_command (const char *arg, int from_tty)
-{
-  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);
-}
+  /* See language.h.  */
+  bool sniff_from_mangled_name
+       (const char *mangled,
+	gdb::unique_xmalloc_ptr<char> *out) const override
+  {
+    std::string demangled = ada_decode (mangled);
 
-/* Implement the "show ada" prefix command.  */
+    *out = NULL;
 
-static void
-show_ada_command (const char *args, int from_tty)
-{
-  cmd_show_list (show_ada_list, from_tty, "");
-}
+    if (demangled != mangled && demangled[0] != '<')
+      {
+	/* Set the gsymbol language to Ada, but still return 0.
+	   Two reasons for that:
 
-static void
-initialize_ada_catchpoint_ops (void)
-{
-  struct breakpoint_ops *ops;
+	   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;
+  }
 
-  initialize_breakpoint_ops ();
+  /* See language.h.  */
 
-  ops = &catch_exception_breakpoint_ops;
-  *ops = bkpt_breakpoint_ops;
-  ops->allocate_location = allocate_location_exception;
-  ops->re_set = re_set_exception;
-  ops->check_status = check_status_exception;
-  ops->print_it = print_it_exception;
-  ops->print_one = print_one_exception;
-  ops->print_mention = print_mention_exception;
-  ops->print_recreate = print_recreate_exception;
-
-  ops = &catch_exception_unhandled_breakpoint_ops;
-  *ops = bkpt_breakpoint_ops;
-  ops->allocate_location = allocate_location_exception;
-  ops->re_set = re_set_exception;
-  ops->check_status = check_status_exception;
-  ops->print_it = print_it_exception;
-  ops->print_one = print_one_exception;
-  ops->print_mention = print_mention_exception;
-  ops->print_recreate = print_recreate_exception;
-
-  ops = &catch_assert_breakpoint_ops;
-  *ops = bkpt_breakpoint_ops;
-  ops->allocate_location = allocate_location_exception;
-  ops->re_set = re_set_exception;
-  ops->check_status = check_status_exception;
-  ops->print_it = print_it_exception;
-  ops->print_one = print_one_exception;
-  ops->print_mention = print_mention_exception;
-  ops->print_recreate = print_recreate_exception;
-
-  ops = &catch_handlers_breakpoint_ops;
-  *ops = bkpt_breakpoint_ops;
-  ops->allocate_location = allocate_location_exception;
-  ops->re_set = re_set_exception;
-  ops->check_status = check_status_exception;
-  ops->print_it = print_it_exception;
-  ops->print_one = print_one_exception;
-  ops->print_mention = print_mention_exception;
-  ops->print_recreate = print_recreate_exception;
-}
+  gdb::unique_xmalloc_ptr<char> demangle_symbol (const char *mangled,
+						 int options) const override
+  {
+    return make_unique_xstrdup (ada_decode (mangled).c_str ());
+  }
+
+  /* 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
+  {
+    const struct block *b, *surrounding_static_block = 0;
+
+    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,
+			     SEARCH_GLOBAL_BLOCK | SEARCH_STATIC_BLOCK,
+			     SEARCH_ALL_DOMAINS);
+
+    /* 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_unknown
+		|| 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 = b->superblock ())
+      {
+	if (b->is_static_block ())
+	  surrounding_static_block = b;   /* For elmin of dups */
+
+	for (struct symbol *sym : block_iterator_range (b))
+	  {
+	    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 = s->blockvector ()->global_block ();
+	    for (struct symbol *sym : block_iterator_range (b))
+	      {
+		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 = s->blockvector ()->static_block ();
+	    /* Don't do this block twice.  */
+	    if (b == surrounding_static_block)
+	      continue;
+	    for (struct symbol *sym : block_iterator_range (b))
+	      {
+		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 (check_typedef (type)->target_type ());
+    std::string name = type_to_string (type);
+    return 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_search_flags domain) const override
+  {
+    struct block_symbol sym;
+
+    sym = ada_lookup_symbol (name,
+			     (block == nullptr
+			      ? nullptr
+			      : block->static_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 & SEARCH_TYPE_DOMAIN) != 0)
+      {
+	struct gdbarch *gdbarch;
+
+	if (block == NULL)
+	  gdbarch = current_inferior ()->arch ();
+	else
+	  gdbarch = block->gdbarch ();
+	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.  */
+
+  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 doesn't handle UTF-8 too well, but we want this
+       for lazy-string printing.  Defer this case to the generic
+       code.  */
+    if (encoding != nullptr && strcasecmp (encoding, "UTF-8") == 0)
+      generic_printstr (stream, elttype, string, length, encoding,
+			force_ellipses, '"', 0, options);
+    else
+      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);
+  }
+
+  /* See language.h.  */
+
+  bool is_array_like (struct type *type) const override
+  {
+    return (ada_is_constrained_packed_array_type (type)
+	    || ada_is_array_descriptor_type (type));
+  }
+
+  /* See language.h.  */
+
+  struct value *to_array (struct value *val) const override
+  { return ada_coerce_to_simple_array (val); }
+
+  /* See language.h.  */
+
+  const char *struct_too_deep_ellipsis () const override
+  { return "(...)"; }
+
+  /* See language.h.  */
+
+  bool c_style_arrays_p () const override
+  { return false; }
+
+  /* See language.h.  */
+
+  bool store_sym_names_in_linkage_form_p () const override
+  { return true; }
+
+  /* See language.h.  */
+
+  const struct lang_varobj_ops *varobj_ops () const override
+  { return &ada_varobj_ops; }
+
+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;
 
 /* This module's 'new_objfile' observer.  */
 
 static void
 ada_new_objfile_observer (struct objfile *objfile)
 {
-  ada_clear_symbol_cache ();
+  ada_clear_symbol_cache (objfile->pspace ());
 }
 
 /* This module's 'free_objfile' observer.  */
@@ -14227,27 +13899,43 @@ ada_new_objfile_observer (struct objfile
 static void
 ada_free_objfile_observer (struct objfile *objfile)
 {
-  ada_clear_symbol_cache ();
+  ada_clear_symbol_cache (objfile->pspace ());
 }
 
-void
-_initialize_ada_language (void)
+/* Charsets known to GNAT.  */
+static const char * const gnat_source_charsets[] =
 {
-  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);
+  /* Note that code below assumes that the default comes first.
+     Latin-1 is the default here, because that is also GNAT's
+     default.  */
+  "ISO-8859-1",
+  "ISO-8859-2",
+  "ISO-8859-3",
+  "ISO-8859-4",
+  "ISO-8859-5",
+  "ISO-8859-15",
+  "CP437",
+  "CP850",
+  /* Note that this value is special-cased in the encoder and
+     decoder.  */
+  ada_utf8,
+  nullptr
+};
 
-  add_prefix_cmd ("ada", no_class, show_ada_command,
-                  _("Generic command for showing Ada-specific settings."),
-                  &show_ada_list, "show ada ", 0, &showlist);
+INIT_GDB_FILE (ada_language)
+{
+  add_setshow_prefix_cmd
+    ("ada", no_class,
+     _("Prefix command for changing Ada-specific settings."),
+     _("Generic command for showing Ada-specific settings."),
+     &set_ada_list, &show_ada_list,
+     &setlist, &showlist);
 
   add_setshow_boolean_cmd ("trust-PAD-over-XVS", class_obscure,
-                           &trust_pad_over_xvs, _("\
+			   &trust_pad_over_xvs, _("\
 Enable or disable an optimization trusting PAD types over XVS types."), _("\
 Show whether an optimization trusting PAD types over XVS types is activated."),
-                           _("\
+			   _("\
 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\
 of GNAT have a bug that sometimes causes the information in the PAD type\n\
@@ -14255,15 +13943,26 @@ to be incorrect.  Turning this setting \
 work around this bug.  It is always safe to turn this option \"off\", but\n\
 this incurs a slight performance penalty, so it is recommended to NOT change\n\
 this option to \"off\" unless necessary."),
-                            NULL, NULL, &set_ada_list, &show_ada_list);
+			    NULL, NULL, &set_ada_list, &show_ada_list);
 
   add_setshow_boolean_cmd ("print-signatures", class_vars,
 			   &print_signatures, _("\
-Enable or disable the output of formal and return types for functions in the \
-overloads selection menu."), _("\
-Show whether the output of formal and return types for functions in the \
-overloads selection menu is activated."),
-			   NULL, NULL, NULL, &set_ada_list, &show_ada_list);
+Control the display of functions in overloads selection menu."), _("\
+Show how functions in overloads selection menu will be displayed."),
+			   _("\
+When enabled, formal and return types are shown."),
+			   NULL, NULL, &set_ada_list, &show_ada_list);
+
+  ada_source_charset = gnat_source_charsets[0];
+  add_setshow_enum_cmd ("source-charset", class_files,
+			gnat_source_charsets,
+			&ada_source_charset,  _("\
+Set the Ada source character set."), _("\
+Show the Ada source character set."), _("\
+The character set used for Ada source files.\n\
+This must correspond to the '-gnati' or '-gnatW' option passed to GNAT."),
+			nullptr, nullptr,
+			&set_ada_list, &show_ada_list);
 
   add_catch_command ("exception", _("\
 Catch Ada exceptions, when raised.\n\
@@ -14289,7 +13988,7 @@ With an argument, catch only exceptions
 CONDITION is a boolean expression that is evaluated to see whether the\n\
 exception should cause a stop."),
 		     catch_ada_handlers_command,
-                     catch_ada_completer,
+		     catch_ada_completer,
 		     CATCH_PERMANENT,
 		     CATCH_TEMPORARY);
   add_catch_command ("assert", _("\
@@ -14298,19 +13997,10 @@ Usage: catch assert [if CONDITION]\n\
 CONDITION is a boolean expression that is evaluated to see whether the\n\
 exception should cause a stop."),
 		     catch_assert_command,
-                     NULL,
+		     NULL,
 		     CATCH_PERMANENT,
 		     CATCH_TEMPORARY);
 
-  varsize_limit = 65536;
-  add_setshow_uinteger_cmd ("varsize-limit", class_support,
-			    &varsize_limit, _("\
-Set the maximum number of bytes allowed in a variable-size object."), _("\
-Show the maximum number of bytes allowed in a variable-size object."), _("\
-Attempts to access an object whose size is not a compile-time constant\n\
-and exceeds this limit will cause an error."),
-			    NULL, NULL, &setlist, &showlist);
-
   add_info ("exceptions", info_exceptions_command,
 	    _("\
 List all Ada exception names.\n\
@@ -14318,15 +14008,11 @@ 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_setshow_prefix_cmd ("ada", class_maintenance,
+			  _("Set Ada maintenance-related variables."),
+			  _("Show Ada maintenance-related variables."),
+			  &maint_set_ada_cmdlist, &maint_show_ada_cmdlist,
+			  &maintenance_set_cmdlist, &maintenance_show_cmdlist);
 
   add_setshow_boolean_cmd
     ("ignore-descriptive-types", class_maintenance,
@@ -14338,11 +14024,14 @@ When enabled, the debugger will stop usi
 DWARF attribute."),
      NULL, NULL, &maint_set_ada_cmdlist, &maint_show_ada_cmdlist);
 
-  decoded_names_store = htab_create_alloc (256, htab_hash_string, streq_hash,
-					   NULL, xcalloc, xfree);
-
   /* The ada-lang observers.  */
-  gdb::observers::new_objfile.attach (ada_new_objfile_observer);
-  gdb::observers::free_objfile.attach (ada_free_objfile_observer);
-  gdb::observers::inferior_exit.attach (ada_inferior_exit);
+  gdb::observers::new_objfile.attach (ada_new_objfile_observer, "ada-lang");
+  gdb::observers::all_objfiles_removed.attach (ada_clear_symbol_cache,
+					       "ada-lang");
+  gdb::observers::free_objfile.attach (ada_free_objfile_observer, "ada-lang");
+  gdb::observers::inferior_exit.attach (ada_inferior_exit, "ada-lang");
+
+#ifdef GDB_SELF_TEST
+  selftests::register_test ("ada-decode", ada_decode_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.20200303/gdb/ada-lang.h ./gdb/ada-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-lang.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-lang.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,10 +17,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/>.  */
 
-#if !defined (ADA_LANG_H)
-#define ADA_LANG_H 1
+#ifndef GDB_ADA_LANG_H
+#define GDB_ADA_LANG_H
 
-struct frame_info;
+class frame_info_ptr;
 struct inferior;
 struct type_print_options;
 struct parser_state;
@@ -54,8 +54,8 @@ struct parser_state;
    "___finalizer[.$a-zA-Z0-9_]*$",
 
 /* The maximum number of frame levels searched for non-local,
- * non-global symbols.  This limit exists as a precaution to prevent
- * infinite search loops when the stack is screwed up.  */
+   non-global symbols.  This limit exists as a precaution to prevent
+   infinite search loops when the stack is screwed up.  */
 #define MAX_ENCLOSING_FRAME_LEVELS 7
 
 /* Maximum number of steps followed in looking for the ultimate
@@ -85,17 +85,17 @@ enum ada_renaming_category
     ADA_NOT_RENAMING,
 
     /* For symbols declared
-         Foo : TYPE renamed OBJECT;  */
+	 Foo : TYPE renamed OBJECT;  */
     ADA_OBJECT_RENAMING,
 
     /* For symbols declared
-         Foo : exception renames EXCEPTION;  */
+	 Foo : exception renames EXCEPTION;  */
     ADA_EXCEPTION_RENAMING,
     /* For packages declared
-          package Foo renames PACKAGE; */
+	  package Foo renames PACKAGE; */
     ADA_PACKAGE_RENAMING,
     /* For subprograms declared
-          SUBPROGRAM_SPEC renames SUBPROGRAM;
+	  SUBPROGRAM_SPEC renames SUBPROGRAM;
        (Currently not used).  */
     ADA_SUBPROGRAM_RENAMING
   };
@@ -149,30 +149,28 @@ struct ada_task_info
   int base_cpu;
 };
 
-extern void ada_ensure_varsize_limit (const struct type *type);
-
 extern int ada_get_field_index (const struct type *type,
-                                const char *field_name,
-                                int maybe_missing);
+				const char *field_name,
+				int maybe_missing);
 
 extern int ada_parse (struct parser_state *);    /* Defined in ada-exp.y */
 
-                        /* Defined in ada-typeprint.c */
+			/* Defined in ada-typeprint.c */
 extern void ada_print_type (struct type *, const char *, struct ui_file *, int,
-                            int, const struct type_print_options *);
+			    int, const struct type_print_options *);
 
 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 *);
 
-                                /* Defined in ada-lang.c */
+				/* Defined in ada-lang.c */
 
 extern void ada_emit_char (int, struct type *, struct ui_file *, int, int);
 
@@ -183,12 +181,12 @@ extern void ada_printstr (struct ui_file
 			  const struct value_print_options *);
 
 struct value *ada_convert_actual (struct value *actual,
-                                  struct type *formal_type0);
+				  struct type *formal_type0);
 
 extern bool ada_is_access_to_unconstrained_array (struct type *type);
 
 extern struct value *ada_value_subscript (struct value *, int,
-                                          struct value **);
+					  struct value **);
 
 extern void ada_fixup_array_indexes_type (struct type *index_desc_type);
 
@@ -204,8 +202,6 @@ extern int ada_is_simple_array_type (str
 
 extern int ada_is_array_descriptor_type (struct type *);
 
-extern int ada_is_bogus_array_descriptor (struct type *);
-
 extern LONGEST ada_discrete_type_low_bound (struct type *);
 
 extern LONGEST ada_discrete_type_high_bound (struct type *);
@@ -216,24 +212,42 @@ extern struct type *ada_get_decoded_type
 
 extern const char *ada_decode_symbol (const struct general_symbol_info *);
 
-extern std::string ada_decode (const char*);
+/* Decode the GNAT-encoded name NAME, returning the decoded name.  If
+   the name does not appear to be GNAT-encoded, then the result
+   depends on WRAP.  If WRAP is true (the default), then the result is
+   simply wrapped in <...>.  If WRAP is false, then the empty string
+   will be returned.
+
+   When OPERATORS is false, operator names will not be decoded.  By
+   default, they are decoded, e.g., 'Oadd' will be transformed to
+   '"+"'.
+
+   When WIDE is false, wide characters will be left as-is.  By
+   default, they converted from their hex encoding to the host
+   charset.  */
+extern std::string ada_decode (const char *name, bool wrap = true,
+			       bool operators = true,
+			       bool wide = true);
 
-extern int ada_lookup_symbol_list (const char *, const struct block *,
-                                   domain_enum,
-				   std::vector<struct block_symbol> *);
+extern std::vector<struct block_symbol> ada_lookup_symbol_list
+     (const char *, const struct block *, domain_search_flags);
 
 extern struct block_symbol ada_lookup_symbol (const char *,
 					      const struct block *,
-					      domain_enum);
+					      domain_search_flags);
 
-extern void ada_lookup_encoded_symbol
-  (const char *name, const struct block *block, domain_enum domain,
-   struct block_symbol *symbol_info);
+extern block_symbol ada_lookup_encoded_symbol
+  (const char *name, const struct block *block, domain_search_flags domain);
 
-extern struct bound_minimal_symbol ada_lookup_simple_minsym (const char *);
+extern bound_minimal_symbol ada_lookup_simple_minsym (const char *, objfile *);
 
 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);
@@ -242,8 +256,8 @@ extern int ada_is_constrained_packed_arr
 
 extern struct value *ada_value_primitive_packed_val (struct value *,
 						     const gdb_byte *,
-                                                     long, int, int,
-                                                     struct type *);
+						     long, int, int,
+						     struct type *);
 
 extern struct type *ada_coerce_to_simple_array_type (struct type *);
 
@@ -255,7 +269,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,20 +290,13 @@ 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_system_address_type (struct type *);
 
-extern struct value *ada_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 *,
-                                       int check_tag);
+				       int check_tag);
 
 extern struct value *ada_to_fixed_value (struct value *val);
 
@@ -304,7 +311,7 @@ extern int ada_name_prefix_len (const ch
 extern const char *ada_type_name (struct type *);
 
 extern struct type *ada_find_parallel_type (struct type *,
-                                            const char *suffix);
+					    const char *suffix);
 
 extern bool get_int_var_value (const char *, LONGEST &value);
 
@@ -314,7 +321,7 @@ extern struct type *ada_get_base_type (s
 
 extern struct type *ada_check_typedef (struct type *);
 
-extern char *ada_encode (const char *);
+extern std::string ada_encode (const char *, bool fold = true);
 
 extern const char *ada_enum_name (const char *);
 
@@ -332,16 +339,14 @@ extern enum ada_renaming_category ada_pa
 						      const char **,
 						      int *, const char **);
 
-extern void ada_find_printable_frame (struct frame_info *fi);
-
-extern char *ada_breakpoint_rewrite (char *, int *);
+extern void ada_find_printable_frame (const frame_info_ptr &fi);
 
-extern char *ada_main_name (void);
+extern const char *ada_main_name ();
 
 extern void create_ada_exception_catchpoint
   (struct gdbarch *gdbarch, enum ada_exception_catchpoint_kind ex_kind,
-   const std::string &excep_string, const std::string &cond_string, int tempflag,
-   int disabled, int from_tty);
+   std::string &&excep_string, const std::string &cond_string, int tempflag,
+   int enabled, int from_tty);
 
 /* Return true if BP is an Ada catchpoint.  */
 
@@ -371,9 +376,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);
 
@@ -381,4 +387,54 @@ extern void print_ada_task_info (struct
 				 const char *taskno_str,
 				 struct inferior *inf);
 
-#endif
+/* Look for a symbol for an overloaded operator for the operation OP.
+   PARSE_COMPLETION is true if currently parsing for completion.
+   NARGS and ARGVEC describe the arguments to the call.  Returns a
+   "null" block_symbol if no such operator is found.  */
+
+extern block_symbol ada_find_operator_symbol (enum exp_opcode op,
+					      bool parse_completion,
+					      int nargs, value *argvec[]);
+
+/* Resolve a function call, selecting among possible function symbols.
+   SYM and BLOCK are passed to ada_lookup_symbol_list.  CONTEXT_TYPE
+   describes the calling context.  PARSE_COMPLETION is true if
+   currently parsing for completion.  NARGS and ARGVEC describe the
+   arguments to the call.  This returns the chosen symbol and will
+   update TRACKER accordingly.  */
+
+extern block_symbol ada_resolve_funcall (struct symbol *sym,
+					 const struct block *block,
+					 struct type *context_type,
+					 bool parse_completion,
+					 int nargs, value *argvec[],
+					 innermost_block_tracker *tracker);
+
+/* Resolve a symbol reference, selecting among possible values.  SYM
+   and BLOCK are passed to ada_lookup_symbol_list.  CONTEXT_TYPE
+   describes the calling context.  PARSE_COMPLETION is true if
+   currently parsing for completion.  If DEPROCEDURE_P is nonzero,
+   then a symbol that names a zero-argument function will be passed
+   through ada_resolve_function.  This returns the chosen symbol and
+   will update TRACKER accordingly.  */
+
+extern block_symbol ada_resolve_variable (struct symbol *sym,
+					  const struct block *block,
+					  struct type *context_type,
+					  bool parse_completion,
+					  int deprocedure_p,
+					  innermost_block_tracker *tracker);
+
+/* The type of nth index in arrays of given type (n numbering from 1).
+   Does not examine memory.  Throws an error if N is invalid or TYPE
+   is not an array type.  NAME is the name of the Ada attribute being
+   evaluated ('range, 'first, 'last, or 'length); it is used in building
+   the error message.  */
+extern struct type *ada_index_type (struct type *type, int n,
+				    const char *name);
+
+/* Clear the Ada symbol cache.  */
+
+extern void ada_clear_symbol_cache (program_space *pspace);
+
+#endif /* GDB_ADA_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.20200303/gdb/ada-lex.c ./gdb/ada-lex.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-lex.c	2020-03-03 02:12:50.000000000 +0000
+++ ./gdb/ada-lex.c	2026-03-05 02:15:32.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,25 +343,28 @@ 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;
 
-#define YY_NUM_RULES 55
-#define YY_END_OF_BUFFER 56
+#define YY_NUM_RULES 57
+#define YY_END_OF_BUFFER 58
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -371,284 +372,303 @@ struct yy_trans_info
 	flex_int32_t yy_verify;
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[207] =
+static yyconst flex_int16_t yy_accept[231] =
     {   0,
-        0,    0,    0,    0,   56,   54,    1,    1,   15,   53,
-       43,   54,   45,   46,   43,   44,   43,   43,   43,    4,
-        4,   43,   43,   43,   43,   52,   49,   49,   49,   49,
-       49,   49,   49,   49,   49,   49,   49,   42,    0,   14,
-        0,   53,    0,    0,    0,    0,    0,    0,    0,   37,
-        2,    0,   36,    0,   48,   48,   39,    0,    0,    4,
-        0,    0,   51,   38,   40,    0,   35,   41,    0,    0,
-       49,    0,   49,   49,   49,   49,   49,   16,   22,   49,
-       49,   49,   49,   27,   49,   49,   49,   49,   49,   49,
-        0,   14,    0,   12,   12,   34,    0,    2,    0,   48,
-
-       48,    0,    9,    0,    3,    7,    0,   49,    0,    0,
-        0,   49,   19,   20,   49,   49,   23,   24,   25,   49,
-       49,   29,   49,   49,   49,   49,   31,    0,    0,    0,
-        0,    0,    0,   48,   47,    6,    0,    0,    9,    0,
-        3,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   49,   21,   49,   26,   49,   17,   30,
-       49,   32,    0,   50,    0,    0,    0,    0,   49,    0,
-        0,    0,    0,    0,    0,    0,    0,   33,   49,   49,
-        0,    0,    5,   11,    0,    8,    0,    0,    0,    0,
-        0,    0,   28,   49,    0,    5,    0,    8,    0,    0,
-
-       13,    0,   18,   10,   10,    0
+        0,    0,    0,    0,   58,   56,    1,    1,   15,   55,
+       46,   37,   48,   49,   46,   47,   46,   56,   46,    4,
+        4,   46,   46,   46,   46,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   37,    0,
+       14,    0,   55,   37,    0,   37,   37,    0,    0,   37,
+        0,   40,    2,   51,    0,   39,    0,   50,   42,    0,
+        0,    4,    0,    0,    0,    0,   54,   41,   43,    0,
+       38,   44,   52,    0,    0,    0,   52,   52,   52,   52,
+       52,   52,   52,   16,   24,   52,   52,   52,   52,   29,
+       52,   52,   52,   52,   52,   52,   52,   45,   37,   45,
+
+       37,   14,    0,   37,   12,   12,   37,    0,    2,    0,
+       50,   50,    0,    9,    0,    3,    0,    0,    7,    0,
+       52,    0,    0,    0,   52,   19,   20,   52,   52,   52,
+       23,   25,   26,   27,   52,   52,   31,   52,   52,   52,
+       52,   52,   34,    0,    0,    0,    0,    0,    0,   50,
+        6,    0,    0,    9,    0,    3,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   52,
+       52,   22,   52,   28,   52,   17,   32,   52,   35,   33,
+        0,    0,   53,    0,    0,    0,    0,    6,    0,   52,
+        0,    0,    0,    0,    0,    0,    0,    0,   21,   36,
+
+       52,   52,    0,    0,    0,    0,    5,   11,    0,    8,
+        0,    0,    0,    0,    0,    0,   30,   52,    0,    5,
+        0,    8,    0,    0,   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,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    4,    5,    6,    7,    8,    5,    9,   10,   11,
-       12,   13,   14,   15,   16,   17,   18,   19,   20,   20,
-       20,   20,   20,   20,   20,   20,   20,   21,   22,   23,
-       24,   25,    5,   26,   27,   28,   29,   30,   31,   32,
+        1,    2,    2,    2,    2,    2,    2,    2,    3,    4,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
+        2,    5,    6,    7,    8,    9,    6,   10,   11,   12,
+       13,   14,   15,   16,   17,   18,   19,   20,   21,   21,
+       21,   21,   21,   21,   21,   21,   21,   22,   23,   24,
+       25,   26,    6,   23,   27,   28,   29,   30,   31,   32,
        33,   34,   35,   33,   36,   37,   38,   39,   40,   33,
        33,   41,   42,   43,   44,   33,   45,   46,   33,   33,
-       47,    5,   48,    5,   49,    5,   50,   51,   29,   52,
+       47,    6,   48,    6,   49,    6,   50,   51,   29,   52,
 
        53,   54,   33,   55,   56,   33,   57,   58,   59,   60,
        61,   33,   33,   62,   63,   64,   65,   33,   66,   67,
-       33,   33,   26,   22,   26,    5,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1
+       33,   33,   23,   23,   23,    6,    2,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
+       68,   68,   68,   68,   68
     } ;
 
-static yyconst flex_int32_t yy_meta[68] =
+static yyconst YY_CHAR yy_meta[69] =
     {   0,
-        1,    2,    3,    4,    5,    6,    7,    8,    5,    9,
-        5,    5,    5,    5,    5,    5,   10,    5,   11,   11,
-        5,    5,   12,   13,   14,    5,   15,   15,   15,   15,
-       15,   15,   16,   16,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,    5,    5,   17,   15,
-       15,   15,   15,   15,   16,   16,   16,   16,   16,   16,
-       16,   16,   16,   16,   16,   16,   16
+        1,    2,    3,    4,    5,    6,    7,    8,    9,    6,
+       10,    6,    6,    6,    6,    6,    6,   11,    6,   12,
+       12,    6,    6,   13,   14,   15,   16,   16,   16,   16,
+       16,   16,   17,   17,   17,   17,   17,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,    6,    6,   18,   16,
+       16,   16,   16,   16,   17,   17,   17,   17,   17,   17,
+       17,   17,   17,   17,   17,   17,   17,   19
     } ;
 
-static yyconst flex_int16_t yy_base[229] =
+static yyconst flex_uint16_t yy_base[256] =
     {   0,
-        0,    0,  649,  638,  646, 1252, 1252, 1252,   62,    0,
-     1252,  109, 1252, 1252,  623, 1252,  619,  175,  606,  174,
-      180,   48,  604,  592,  590, 1252,  204,   71,  214,  186,
-      235,  244,  304,  256,   39,  368,   40,  430,  179, 1252,
-      195,    0,  602,  595,  592,  585,  574,  497,   72, 1252,
-        0,  273, 1252,    0,   39,    0, 1252,    0,   66,  262,
-       75,    0, 1252, 1252, 1252,  557, 1252, 1252,  284,  300,
-     1252,  322,  329,  349,  358,  377,  339,  396,  412,  563,
-      566,  575,  584,  587,  569,  596,  623,  616,  576,  617,
-      571,  568,  334,  380, 1252,  562,  677,    0,  403,    0,
-
-       40,   89,  642,   71,  163,    0,  401,  672,  401,  723,
-        0,  708,  741,  750,  637,  776,  785,  794,  797,  806,
-      775,  827,  831,  843,  818,  819,  883,  415,    0,  712,
-      399,  885,  352, 1252,    0,  191,    0,  202,  772,  170,
-      243,  334,  222,  244,  247,  259,  766,   47,  209,  216,
-      203,  251,  302,  892,  916,  890,  942,  715,  946,  958,
-      930,  974,  274, 1252,   93,  344,  278,  310,  979,  256,
-      264,  337,  270,  274,  352,  355,  215,  984,  995, 1000,
-      299,  354,  589,  355,  223,  603,  209,  204,  198,  189,
-      174,  101, 1004, 1016,   92,  634,  411,  644,  872, 1021,
-
-      717,  373, 1252,  793,  832, 1252, 1055, 1065, 1081, 1086,
-     1102, 1119, 1136, 1139, 1146,  339,  560, 1153, 1169, 1181,
-     1186, 1197, 1200, 1216,  634,  645, 1223, 1234
+        0,    0,  882,  878,  887, 1346, 1346, 1346,   62,    0,
+     1346,  109, 1346, 1346,  869, 1346,  860,   69,  848,  170,
+       25,   53,  842,  840,  831,  178,   78,  194,  230,  239,
+      222,  153,  225,  244,  264,  269,  272,  160,  333,  179,
+     1346,  185,    0,  840,  830,  401,  813,  811,  798,  469,
+       69, 1346,    0, 1346,  537, 1346,    0,  804, 1346,    0,
+       64,   31,   79,  777,  219,    0, 1346, 1346, 1346,  758,
+     1346, 1346, 1346,  540,  545,  561,  271,  512,  530,  544,
+      547,  556,  559,  561,  563,  585,  589,  601,  603,  609,
+      618,  636,  627,  651,  656,  644,  675,  765,    0, 1346,
+
+      760,  763,  573,  752,  706, 1346,  740,  727,    0,  715,
+     1346,  723,   83,  711,   82,  164,    0,   54,    0,  697,
+      764,  715,  773,    0,  790,  653,  700,  746,  775,  776,
+      777,  802,  803,  804,  818,  819,  820,  821,  835,  857,
+      859,  864,  865,  692,    0,  730,  676,  907,  663,  680,
+      177,    0,   87,  880,   73,  225,  667,  665,   90,  197,
+      202,  211,  242,  154,  199,  218,  270,  252,  640,  944,
+      881,  890,  923,  916,  938,  940,  941,  942,  943,  945,
+      600,  640, 1346, 1000,  243,  625,   86, 1346,  624, 1007,
+      255,  517,  574,  503,  611,  513,  557,  581,  986,  995,
+
+     1015, 1019,  585,  612,    0,  295,  636,  676,  571,  723,
+      552,  546,  322,  313,  261,  213, 1033, 1034,  200,  725,
+      238,  800, 1082, 1086,  919,  306, 1346,  966, 1013, 1346,
+     1103, 1113, 1131, 1136, 1154, 1173, 1192, 1196, 1214,  615,
+      626, 1222, 1238, 1250, 1255, 1266,  714, 1269, 1287,  737,
+      750, 1299, 1306, 1318, 1327
     } ;
 
-static yyconst flex_int16_t yy_def[229] =
+static yyconst flex_int16_t yy_def[256] =
     {   0,
-      206,    1,    1,    1,  206,  206,  206,  206,  207,  208,
-      206,  206,  206,  206,  206,  206,  206,  209,  206,  206,
-      206,  206,  210,  206,  206,  206,  211,  211,  211,  211,
-      211,  211,  211,  211,   33,  211,   33,  206,  207,  206,
-      207,  208,  212,   38,   38,  212,  206,  206,  212,  206,
-      213,  209,  206,  214,  215,  215,  206,  216,  206,  206,
-      206,  217,  206,  206,  206,  218,  206,  206,  206,  206,
-      206,  219,  211,  211,  211,  211,  211,  211,  211,  211,
-      211,  211,  211,  211,   36,  211,  211,   36,   33,   36,
-       48,  220,  206,  206,  206,   48,  212,  213,  221,  215,
-
-      215,  222,  206,  206,  206,  217,  218,  206,  219,  206,
-      223,  224,  211,  211,   33,  211,  211,  211,  211,  211,
-       33,  211,  211,  211,   33,   33,  211,  206,  225,  206,
-      206,   97,  221,  206,  215,  206,  226,  222,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  227,  224,  211,   33,  211,   36,  211,  211,
-       36,  211,  206,  206,  212,  206,  228,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  227,  211,  211,  211,
-      212,  206,  206,  206,  228,  206,  206,  206,  206,  206,
-      206,  206,  211,  211,  212,  206,  206,  206,  206,  206,
-
-      206,  206,  206,  206,  206,    0,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206
+      230,    1,    1,    1,  230,  230,  230,  230,  231,  232,
+      230,  230,  230,  230,  230,  230,  230,  233,  230,  230,
+       20,  230,  234,  230,  230,  235,  235,  235,  235,  235,
+       30,   30,   30,   30,   30,   30,   30,   30,  230,  231,
+      230,  231,  232,  236,  236,  230,   46,  236,  230,  230,
+      236,  230,  237,  230,  233,  230,  238,  239,  230,  240,
+      230,   20,  230,  230,  230,  241,  230,  230,  230,  242,
+      230,  230,  230,  230,  230,  243,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,  236,   46,  230,
+
+       50,  244,  230,   50,  230,  230,   50,  236,  237,  245,
+      230,  239,  246,  230,  230,  230,  247,  230,  241,  242,
+      230,  243,  230,  248,  249,   30,   30,   30,   30,   30,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,   30,  230,  250,  230,  230,  108,  245,  230,
+      230,  251,  246,  230,  230,  230,  252,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  253,  249,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
+      230,  254,  230,  108,  230,  255,  230,  230,  252,  230,
+      230,  230,  230,  230,  230,  230,  230,  253,   30,   30,
+
+       30,   30,  254,  236,  184,  230,  230,  230,  255,  230,
+      230,  230,  230,  230,  230,  230,   30,   30,  236,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,    0,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230
     } ;
 
-static yyconst flex_int16_t yy_nxt[1320] =
+static yyconst flex_uint16_t yy_nxt[1415] =
     {   0,
-        6,    7,    8,    7,    6,    9,    6,   10,   11,   12,
-       13,   14,   15,   11,   16,   17,   18,   19,   20,   21,
-       22,   11,   23,   24,   25,   26,   27,   28,   28,   28,
-       29,   30,   28,   28,   31,   28,   28,   32,   33,   34,
-       35,   28,   36,   28,   28,   37,   11,   11,   28,   27,
-       28,   28,   29,   30,   28,   31,   28,   28,   32,   33,
-       34,   35,   28,   36,   28,   28,   37,   40,   63,   86,
-       73,   64,   69,   69,   70,  101,  135,   97,   73,   90,
-       71,   94,   73,   73,  103,  103,  172,   72,  104,  105,
-      105,   86,   73,  105,  105,  136,  101,  135,  181,   73,
+        6,    6,    7,    8,    7,    6,    9,    6,   10,   11,
+       12,   13,   14,   15,   11,   16,   17,   18,   19,   20,
+       21,   22,   11,   23,   24,   25,   26,   27,   27,   28,
+       29,   30,   27,   27,   31,   27,   27,   32,   33,   34,
+       35,   27,   36,   27,   37,   38,   11,   11,   27,   26,
+       27,   28,   29,   30,   27,   31,   27,   27,   32,   33,
+       34,   35,   27,   36,   27,   37,   38,    6,   41,   54,
+      230,   55,   55,   55,   67,  108,  230,   68,   73,  105,
+       74,   74,   75,  114,  114,   64,   56,  187,   73,  187,
+      151,  230,   57,  115,  151,   76,  190,  230,  116,  116,
 
-       90,  201,   93,   73,   73,  137,  169,  172,   41,   43,
-       44,   44,   45,   46,   46,   46,   46,   46,   47,   46,
-       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
-       46,   46,   46,   46,   46,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   49,   46,   46,   48,   48,
+      152,  116,  116,  158,  152,  210,  210,   64,   42,   44,
+       45,   46,   46,   47,   48,   48,   48,   48,   48,   49,
        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   52,   52,   52,  169,
-       58,  141,  141,  168,   40,  168,   58,   69,   69,   70,
-       59,   53,   60,   60,  169,   71,   59,   54,   60,   60,
-
-       92,   55,   72,  169,   61,   69,   69,   70,  136,  169,
-       61,  141,   77,   71,  169,   69,   69,   70,  137,   62,
-       72,  166,   60,   71,   55,   41,   61,  169,   60,  184,
-       72,   74,   61,  175,  142,   77,   69,   69,   70,  169,
-       62,   41,   75,  166,   71,   69,   69,   70,  173,  169,
-       76,   72,  169,   71,   74,  175,  174,   69,   69,   70,
-       72,  141,  141,   75,  169,   71,   78,  142,   58,  173,
-      142,   76,   72,   79,   52,   52,   52,  174,   59,  169,
-       60,   60,  142,   80,  184,   69,   69,   69,   78,  206,
-      176,  141,   61,  188,   79,   54,   84,  187,   85,   55,
-
-       72,   69,   69,   70,   80,   69,   69,   70,   93,   71,
-       60,  176,  190,   71,   61,  188,   72,   84,  187,   85,
-       72,   39,   55,  109,  109,  109,  169,  110,  186,  186,
-       69,   69,   70,  190,   81,  130,  130,  130,   71,  169,
-       69,   69,   70,   82,  111,   72,  195,   83,   71,  102,
-       69,   69,   70,  102,  131,   72,   81,  182,   71,   69,
-       69,   70,  183,  183,   82,   72,  189,   71,   83,   69,
-       69,   70,  183,  183,   72,  116,  134,   71,   69,   69,
-       70,  130,  130,  130,   72,  197,   71,  114,  189,  191,
-      113,  204,  204,   72,   87,  192,  116,   69,   69,   70,
-
-      131,   88,  109,  109,  109,   71,  110,  197,   89,  114,
-      191,  113,   72,   69,   69,   70,  192,   87,  115,  164,
-      163,   71,   88,  111,  202,  108,  202,  134,   72,   89,
-       43,   44,   44,   44,   43,   43,   43,   43,   43,  115,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   43,   43,   43,   91,
-       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
-       91,   91,   91,   91,   91,   91,   91,   43,   43,   43,
-
-       43,   43,   43,   43,   43,   43,   94,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   43,   43,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   96,   96,   96,   96,   96,   96,
-       96,   96,   96,   96,   69,   69,   70,   69,   69,   70,
-      106,   93,   71,  128,  106,   71,   69,   69,   70,   72,
-       93,  108,   72,   95,   71,   69,   69,   70,   69,   69,
-       70,   72,  117,   71,   94,   73,   71,   69,   69,   70,
-
-       72,   94,  121,   72,   93,   71,   73,  196,  196,   73,
-      118,   93,   72,   68,  117,   73,   67,  119,   73,  126,
-      120,  198,  198,  121,   69,   69,   70,   65,   73,   57,
-       73,  118,   71,  122,   51,   50,   73,  196,  119,   72,
-      126,  120,   73,   73,  128,  206,  124,   38,  128,   73,
-       73,  198,  196,  196,  122,  167,  125,  127,   38,  167,
-      139,  139,  198,  198,  123,   73,   73,  155,  124,  206,
-       73,   73,  140,   69,   69,   70,   73,  125,  127,  206,
-       73,   71,  196,  206,  206,  123,   93,  206,   72,  155,
-      139,  206,  198,  206,  140,  132,  132,   73,  206,  206,
-
-      206,   73,  206,  132,  132,  132,  132,  132,  132,   69,
-       69,   70,  206,  130,  130,  130,  206,   71,  130,  130,
-      130,  206,  206,  206,   72,  206,  132,  132,  132,  132,
-      132,  142,  131,  206,  206,  143,  142,  131,  142,  206,
-      144,   73,   69,   69,   70,  145,  142,  146,   73,  147,
-       71,   69,   69,   70,  206,  179,  206,   72,  206,   71,
-      148,  149,  150,  151,   73,  206,   72,  206,  152,   73,
-      206,  206,  147,  206,  206,  206,  179,   69,   69,   70,
-      206,  148,  149,  150,  151,   71,   69,   69,   70,  152,
-      139,  139,   72,  170,   71,   69,   69,   70,   69,   69,
-
-       70,   72,  140,   71,  171,  158,   71,   69,   69,   70,
-       72,  205,  205,   72,   73,   71,  170,  156,   73,  206,
-      139,  206,   72,  206,  140,  171,  206,  158,   69,   69,
-       70,  206,   69,   69,   70,   73,   71,  206,  156,   73,
-       71,  205,  157,   72,   69,   69,   70,   72,  161,  162,
-      205,  205,   71,  206,  206,  206,  206,   73,   73,   72,
-      206,   73,   73,  157,  206,  206,  159,  206,  206,  206,
-      161,  162,  206,  199,  199,  199,  206,  206,   73,   73,
-      205,  160,   73,   73,   69,   69,   70,  159,   72,  206,
-      203,  203,   71,   69,   69,   70,  206,  206,  206,   72,
-
-      206,   71,  160,  165,  165,  206,  206,  206,   72,  206,
-      206,  165,  165,  165,  165,  165,  165,   69,   69,   70,
-      178,  206,  206,  206,  206,   71,  206,  206,  206,   73,
-      206,  206,   72,   73,  165,  165,  165,  165,  165,  206,
-      206,  206,  178,   69,   69,   70,  206,   69,   69,   70,
-       73,   71,  206,  206,   73,   71,  180,  206,   72,   69,
-       69,   70,   72,   73,  206,  206,  206,   71,  206,  206,
-       73,  206,  206,  206,   72,   69,   69,   70,  206,  180,
-       69,   69,   70,   71,   73,   69,   69,   70,   71,  206,
-       72,   73,  206,   71,  206,   72,   69,   69,   70,  206,
-
-       72,   69,   69,   70,   71,   69,   69,   70,  206,   71,
-      206,   72,  206,   71,  206,  206,   72,  199,  199,  200,
-       72,  206,  199,  199,  200,   71,  206,  206,  206,  194,
-       71,  206,   72,  206,  206,  206,  193,   72,  206,  203,
-      203,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  194,  206,  206,  206,  206,  206,  193,   39,   39,
-       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
-       39,   39,   42,  206,  206,   42,  206,  206,  206,   42,
-       42,   42,   56,   56,   56,  206,  206,  206,  206,  206,
-       56,  206,   56,  206,  206,   56,   56,   56,   66,  206,
-
-       66,   66,   66,   73,   73,   73,  206,  206,  206,  206,
-       73,   73,   73,  206,  206,  206,   73,   73,   73,   43,
-       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   43,   43,   98,   98,  206,   98,
-       98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
-       98,   98,   98,   99,   99,   99,  100,  206,  206,  206,
-      100,  100,  100,  107,  206,  206,  107,  107,  107,  107,
-      112,  112,  112,  206,  112,  206,  206,  206,  206,  206,
-      112,  206,  206,  112,  112,  112,  129,  206,  206,  206,
-      206,  129,  206,  206,  206,  129,  133,  206,  206,  133,
-
-      133,  133,  133,  138,  206,  206,  138,  138,  206,  206,
-      206,  138,  206,  138,  153,  153,  153,  154,  154,  154,
-      206,  206,  206,  206,  154,  154,  154,  206,  206,  206,
-      154,  154,  154,  177,  206,  206,  177,  177,  177,  177,
-      185,  206,  206,  206,  185,  206,  206,  206,  185,  206,
-      185,    5,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
+       48,   48,   48,   48,   48,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   51,   48,   48,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   45,   60,   73,   77,
+       74,   74,   75,  156,  156,   41,   77,   61,   73,   62,
+       62,  102,   86,  193,   73,   76,   74,   74,   75,   97,
+
+       63,   64,   77,  190,   73,   78,   65,  185,  190,   77,
+      225,   76,  156,   86,  193,   66,   79,  190,   62,  190,
+       97,  158,   63,   64,   80,   42,  158,   65,   78,  185,
+       73,   42,   74,   74,   75,  158,   66,   79,  194,   73,
+       73,   74,   74,   75,  156,  156,   80,   76,   77,   73,
+       64,   77,  226,   84,  226,   87,   76,  206,  195,  194,
+       85,   77,  207,  207,   88,   82,   81,  190,   89,  191,
+       77,   77,   64,  156,   77,   84,  118,   87,   83,  195,
+      192,   85,   77,   77,   90,   88,   91,   81,   82,   89,
+       77,  197,  191,   77,   92,   93,  211,   77,   77,   83,
+
+      196,  192,   94,   77,   77,   90,   96,   91,   77,   95,
+       77,   77,  197,   77,  207,  207,   92,  211,   93,  190,
+       77,   77,  196,   94,   77,  228,  228,   96,  190,   77,
+       95,   77,   77,   44,   98,   99,   99,   99,   98,   98,
+       98,   98,   98,  100,   98,   98,   98,   98,   98,   98,
+       98,   98,   98,   98,   98,   98,   98,   98,   98,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,   98,
+       98,   98,  101,  101,  101,  101,  101,  101,  101,  101,
+      101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
+
+       98,   44,   45,   46,   46,   46,   45,   45,   45,   45,
+       45,  103,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,   45,   45,   45,
+      104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
+      104,  104,  104,  104,  104,  104,  104,  104,   45,   44,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,  105,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,  107,  107,  107,  107,  107,
+
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,   45,   45,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  107,  107,  107,  107,   45,   54,   77,   55,
+       55,   55,   74,   74,   74,  214,  212,   74,   74,   75,
+      215,   77,  190,  126,  230,   73,   77,   76,  190,  127,
+       57,   77,   76,  122,  122,  122,  214,  123,  212,   77,
+       77,  215,   77,   77,  126,  146,  146,  146,  208,   77,
+      128,  127,   77,   77,  124,   77,   77,   77,  129,   77,
+       77,  181,  130,   77,  147,   77,   77,  216,   77,  131,
+
+       77,  128,   77,  213,   77,   77,  190,   77,   77,  129,
+       77,   77,   77,  130,  132,   77,   77,  190,  216,   77,
+      131,   77,  103,   77,   77,  213,  113,   77,   77,   77,
+      113,  188,  208,  133,   77,   77,  132,  119,   77,  135,
+       77,  119,   77,  134,   77,   77,  181,   40,   77,   77,
+       77,  136,   77,   77,  133,  220,  220,   77,   77,  219,
+      135,   77,   77,   77,  134,  190,   77,   77,  138,   77,
+       77,  190,  136,  137,  188,   77,   77,   77,   77,   77,
+      111,  139,   77,   77,  220,   77,  142,   77,  150,  138,
+       77,  140,   77,   77,  137,   77,   77,  183,  181,  141,
+
+       77,   77,   77,  139,   77,   77,  221,  142,  146,  146,
+      146,   77,  140,   77,   77,  143,   77,  122,  122,  122,
+      141,  123,  121,  111,   77,  157,   77,  147,  221,  157,
+      154,  154,  146,  146,  146,   77,  143,  103,  124,   77,
+      150,  155,  222,  222,  220,  220,  148,  148,  182,   77,
+      103,  147,  182,  148,  148,  148,  148,  148,  148,  154,
+       77,  186,  103,  155,   73,  186,   74,   74,   75,  144,
+      103,  222,   77,  220,   73,  103,  148,  148,  148,  148,
+      148,   76,  158,  121,  117,   77,  159,  158,  171,  158,
+       73,  160,   74,   74,   75,   77,  161,  158,  162,  163,
+
+       73,   77,   77,   77,  111,  172,   77,   76,  106,  171,
+      164,  165,  166,  167,   77,   77,   77,  173,  168,  222,
+      222,  105,  163,  105,   77,   77,   77,  172,   77,   77,
+       77,  164,  165,  166,  167,   77,   77,   77,  173,  168,
+      103,   77,   77,   77,   77,   77,   77,   77,  222,  175,
+      103,   77,   77,   77,  174,   72,  176,   77,   77,   77,
+       77,   77,   77,   77,   77,   71,   69,   77,   77,   77,
+       77,  175,   59,  177,   77,  174,   53,  176,   77,   77,
+       77,   77,   52,   77,   77,   77,  230,  178,   39,  179,
+       77,   77,   39,  230,  177,   77,   77,  180,   77,  154,
+
+      154,  230,  230,   77,   77,  230,   77,  199,   77,  178,
+      155,  179,  230,   77,   77,  230,   77,   77,  180,   77,
+       77,  146,  146,  146,   77,   77,  184,  184,  154,   77,
+      199,  230,  155,  184,  184,  184,  184,  184,  184,   77,
+      147,   77,   77,  230,   73,  230,   74,   74,   75,   77,
+       77,  230,  230,  200,   73,   77,  184,  184,  184,  184,
+      184,   76,   77,  230,   77,   77,   77,   77,  202,   77,
+      230,   77,   77,  230,  230,  200,   77,   77,  201,   77,
+       77,   77,   77,   77,   77,  229,  229,   77,  230,   77,
+       77,  202,   77,  230,   77,  230,  230,  230,   77,  201,
+
+       77,   77,   77,   77,  230,   77,  204,   73,  230,   74,
+       74,   75,   77,  230,  229,  230,  230,   73,  230,  205,
+      205,   77,  230,  230,   76,   77,  205,  205,  205,  205,
+      205,  205,  229,  229,   77,   77,  223,  223,  224,  230,
+      230,   77,  230,  230,   77,   77,   77,  230,  218,  205,
+      205,  205,  205,  205,   77,   77,  217,  230,   77,   77,
+       77,  229,  230,  230,   77,  230,  230,  230,   77,  230,
+      218,  230,   77,   77,  230,   77,  230,  217,  230,   77,
+      230,  230,   77,   77,  223,  223,  223,  230,  223,  223,
+      224,  230,  230,   77,   77,  230,   73,  230,  230,   76,
+
+      230,  227,  227,   76,  230,  227,  227,   40,   40,   40,
+       40,   40,   40,   40,   40,   40,   40,   40,   40,   40,
+       40,   43,  230,  230,   43,  230,  230,  230,   43,   43,
+       43,   58,  230,   58,   58,   58,  230,  230,  230,  230,
+      230,   58,  230,   58,  230,  230,   58,   58,   58,   70,
+      230,   70,   70,   70,   77,  230,   77,   77,   77,  230,
+      230,  230,  230,   77,   77,   77,  230,  230,  230,   77,
+       77,   77,   77,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,  109,  109,  109,  230,  109,  109,  109,  109,
+
+      109,  109,  109,  109,  109,  109,  109,  109,  109,  109,
+      109,  110,  110,  110,  112,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  112,  230,  230,  230,  112,
+      112,  112,  112,  120,  230,  230,  120,  120,  120,  120,
+      125,  125,  125,  230,  125,  230,  230,  230,  230,  230,
+      125,  230,  230,  125,  125,  125,  145,  230,  230,  230,
+      230,  145,  230,  230,  230,  145,  149,  230,  230,  149,
+      149,  149,  149,  153,  230,  230,  153,  153,  230,  230,
+      230,  153,  230,  153,  169,  169,  169,  170,  230,  170,
+      170,  170,  230,  230,  230,  230,  170,  170,  170,  230,
+
+      230,  230,  170,  170,  170,  170,  189,  230,  230,  230,
+      189,  230,  230,  230,  189,  230,  189,  198,  230,  230,
+      198,  198,  198,  198,  203,  230,  230,  230,  230,  203,
+      230,  230,  230,  203,  209,  230,  230,  230,  209,  230,
+      230,  230,  209,  230,  209,    5,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
 
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230
     } ;
 
-static yyconst flex_int16_t yy_chk[1320] =
+static yyconst flex_int16_t yy_chk[1415] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -656,145 +676,156 @@ static yyconst flex_int16_t yy_chk[1320]
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    9,   22,   35,
-       37,   22,   28,   28,   28,   55,  101,   49,   35,   37,
-       28,   49,   35,   37,   59,   59,  148,   28,   61,  104,
-      104,   35,   37,   61,   61,  102,   55,  101,  165,   35,
+        1,    1,    1,    1,    1,    1,    1,    1,    9,   18,
+       21,   18,   18,   18,   22,   51,   62,   22,   27,   51,
+       27,   27,   27,   61,   61,  118,   18,  155,   27,  155,
+      113,   21,   18,   63,  153,   27,  159,   62,   63,   63,
 
-       37,  195,  165,   35,   37,  102,  192,  148,    9,   12,
+      113,  115,  115,  159,  153,  187,  187,  118,    9,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
        12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   12,   12,   18,   18,   18,  191,
-       20,  105,  105,  140,   39,  140,   21,   30,   30,   30,
-       20,   18,   20,   20,  190,   30,   21,   18,   21,   21,
-
-       41,   18,   30,  189,   20,   27,   27,   27,  138,  188,
-       21,  105,   30,   27,  187,   29,   29,   29,  138,   20,
-       27,  136,   20,   29,   18,   39,   20,  143,   21,  185,
-       29,   27,   21,  151,  143,   30,   31,   31,   31,  177,
-       20,   41,   27,  136,   31,   32,   32,   32,  149,  144,
-       29,   31,  145,   32,   27,  151,  150,   34,   34,   34,
-       32,  141,  141,   27,  146,   34,   31,  144,   60,  149,
-      145,   29,   34,   31,   52,   52,   52,  150,   60,  174,
-       60,   60,  146,   32,  167,   69,   69,   69,   31,   52,
-      152,  141,   60,  171,   31,   52,   34,  170,   34,   52,
-
-       69,   70,   70,   70,   32,   33,   33,   33,  181,   70,
-       60,  152,  173,   33,   60,  171,   70,   34,  170,   34,
-       33,  163,   52,   72,   72,   72,  153,   72,  168,  168,
-       73,   73,   73,  173,   33,   93,   93,   93,   73,  142,
-       77,   77,   77,   33,   72,   73,  181,   33,   77,  216,
-       74,   74,   74,  216,   93,   77,   33,  166,   74,   75,
-       75,   75,  166,  166,   33,   74,  172,   75,   33,   36,
-       36,   36,  182,  182,   75,   77,  133,   36,   76,   76,
-       76,   94,   94,   94,   36,  184,   76,   75,  172,  175,
-       74,  202,  202,   76,   36,  176,   77,   78,   78,   78,
-
-       94,   36,  109,  109,  109,   78,  109,  184,   36,   75,
-      175,   74,   78,   79,   79,   79,  176,   36,   76,  131,
-      128,   79,   36,  109,  197,  107,  197,   99,   79,   36,
-       38,   38,   38,   38,   38,   38,   38,   38,   38,   76,
-       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
-       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
-       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
-       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
-       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
-       38,   38,   38,   38,   38,   38,   38,   48,   48,   48,
+       12,   12,   12,   12,   12,   12,   12,   20,   26,   32,
+       26,   26,   26,  116,  116,   40,   38,   20,   26,   20,
+       20,   42,   32,  164,   28,   26,   28,   28,   28,   38,
+
+       20,   20,   32,  160,   28,   26,   20,  151,  161,   38,
+      219,   28,  116,   32,  164,   20,   26,  162,   20,  216,
+       38,  160,   20,   20,   28,   40,  161,   20,   26,  151,
+       29,   42,   29,   29,   29,  162,   20,   26,  165,   30,
+       29,   30,   30,   30,  156,  156,   28,   29,   31,   30,
+       65,   33,  221,   31,  221,   33,   30,  185,  166,  165,
+       31,   31,  185,  185,   33,   30,   29,  215,   33,  163,
+       34,   31,   65,  156,   33,   31,   65,   33,   30,  166,
+      163,   31,   31,   34,   34,   33,   34,   29,   30,   33,
+       35,  168,  163,   34,   35,   36,  191,   77,   37,   30,
+
+      167,  163,   36,   35,   34,   34,   37,   34,   36,   36,
+       77,   37,  168,   35,  206,  206,   35,  191,   36,  214,
+       77,   37,  167,   36,   35,  226,  226,   37,  213,   36,
+       36,   77,   37,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
+       39,   39,   39,   39,   39,   39,   39,   39,   39,   39,
 
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   80,   80,   80,   81,   81,   81,
-      217,   96,   80,   92,  217,   81,   82,   82,   82,   80,
-       91,   66,   81,   47,   82,   83,   83,   83,   84,   84,
-       84,   82,   80,   83,   46,   85,   84,   86,   86,   86,
-
-       83,   45,   85,   84,   44,   86,   89,  183,  183,   85,
-       81,   43,   86,   25,   80,   89,   24,   82,   85,   89,
-       83,  186,  186,   85,   87,   87,   87,   23,   89,   19,
-       85,   81,   87,   86,   17,   15,   89,  183,   82,   87,
-       89,   83,   88,   90,  225,    5,   88,    4,  225,   88,
-       90,  186,  196,  196,   86,  226,   88,   90,    3,  226,
-      103,  103,  198,  198,   87,   88,   90,  115,   88,    0,
-       88,   90,  103,  108,  108,  108,  115,   88,   90,    0,
-      115,  108,  196,    0,    0,   87,   97,    0,  108,  115,
-      103,    0,  198,    0,  103,   97,   97,  115,    0,    0,
-
-        0,  115,    0,   97,   97,   97,   97,   97,   97,  112,
-      112,  112,    0,  130,  130,  130,    0,  112,  201,  201,
-      201,    0,    0,    0,  112,    0,   97,   97,   97,   97,
-       97,  110,  130,    0,    0,  110,  110,  201,  110,    0,
-      110,  158,  113,  113,  113,  110,  110,  110,  158,  110,
-      113,  114,  114,  114,    0,  158,    0,  113,    0,  114,
-      110,  110,  110,  110,  158,    0,  114,    0,  110,  158,
-        0,    0,  110,    0,    0,    0,  158,  116,  116,  116,
-        0,  110,  110,  110,  110,  116,  117,  117,  117,  110,
-      139,  139,  116,  147,  117,  118,  118,  118,  119,  119,
-
-      119,  117,  139,  118,  147,  121,  119,  120,  120,  120,
-      118,  204,  204,  119,  121,  120,  147,  116,  121,    0,
-      139,    0,  120,    0,  139,  147,    0,  121,  122,  122,
-      122,    0,  123,  123,  123,  121,  122,    0,  116,  121,
-      123,  204,  120,  122,  124,  124,  124,  123,  125,  126,
-      205,  205,  124,    0,    0,    0,    0,  125,  126,  124,
-        0,  125,  126,  120,    0,    0,  123,    0,    0,    0,
-      125,  126,    0,  199,  199,  199,    0,    0,  125,  126,
-      205,  124,  125,  126,  127,  127,  127,  123,  199,    0,
-      199,  199,  127,  154,  154,  154,    0,    0,    0,  127,
-
-        0,  154,  124,  132,  132,    0,    0,    0,  154,    0,
-        0,  132,  132,  132,  132,  132,  132,  155,  155,  155,
-      156,    0,    0,    0,    0,  155,    0,    0,    0,  156,
-        0,    0,  155,  156,  132,  132,  132,  132,  132,    0,
-        0,    0,  156,  157,  157,  157,    0,  159,  159,  159,
-      156,  157,    0,    0,  156,  159,  161,    0,  157,  160,
-      160,  160,  159,  161,    0,    0,    0,  160,    0,    0,
-      161,    0,    0,    0,  160,  162,  162,  162,    0,  161,
-      169,  169,  169,  162,  161,  178,  178,  178,  169,    0,
-      162,  161,    0,  178,    0,  169,  179,  179,  179,    0,
-
-      178,  180,  180,  180,  179,  193,  193,  193,    0,  180,
-        0,  179,    0,  193,    0,    0,  180,  194,  194,  194,
-      193,    0,  200,  200,  200,  194,    0,    0,    0,  180,
-      200,    0,  194,    0,    0,    0,  179,  200,    0,  200,
-      200,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  180,    0,    0,    0,    0,    0,  179,  207,  207,
-      207,  207,  207,  207,  207,  207,  207,  207,  207,  207,
-      207,  207,  208,    0,    0,  208,    0,    0,    0,  208,
-      208,  208,  209,  209,  209,    0,    0,    0,    0,    0,
-      209,    0,  209,    0,    0,  209,  209,  209,  210,    0,
-
-      210,  210,  210,  211,  211,  211,    0,    0,    0,    0,
-      211,  211,  211,    0,    0,    0,  211,  211,  211,  212,
-      212,  212,  212,  212,  212,  212,  212,  212,  212,  212,
-      212,  212,  212,  212,  212,  212,  213,  213,    0,  213,
-      213,  213,  213,  213,  213,  213,  213,  213,  213,  213,
-      213,  213,  213,  214,  214,  214,  215,    0,    0,    0,
-      215,  215,  215,  218,    0,    0,  218,  218,  218,  218,
-      219,  219,  219,    0,  219,    0,    0,    0,    0,    0,
-      219,    0,    0,  219,  219,  219,  220,    0,    0,    0,
-        0,  220,    0,    0,    0,  220,  221,    0,    0,  221,
-
-      221,  221,  221,  222,    0,    0,  222,  222,    0,    0,
-        0,  222,    0,  222,  223,  223,  223,  224,  224,  224,
-        0,    0,    0,    0,  224,  224,  224,    0,    0,    0,
-      224,  224,  224,  227,    0,    0,  227,  227,  227,  227,
-      228,    0,    0,    0,  228,    0,    0,    0,  228,    0,
-      228,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
+       39,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   55,   78,   55,
+       55,   55,   74,   74,   74,  194,  192,   75,   75,   75,
+      196,   78,  212,   78,   55,   75,   79,   74,  211,   79,
+       55,   78,   75,   76,   76,   76,  194,   76,  192,   79,
+       80,  196,   78,   81,   78,  103,  103,  103,  209,   79,
+       80,   79,   82,   80,   76,   83,   81,   84,   81,   85,
+       79,  203,   82,   80,  103,   82,   81,  197,   83,   83,
+
+       84,   80,   85,  193,   80,   82,  198,   81,   83,   81,
+       84,   86,   85,   82,   86,   87,   82,  195,  197,   83,
+       83,   84,  204,   85,   86,  193,  240,   88,   87,   89,
+      240,  189,  186,   87,   86,   90,   86,  241,   87,   89,
+       88,  241,   89,   88,   91,   86,  182,  181,   90,   87,
+       88,   91,   89,   93,   87,  207,  207,   91,   90,  204,
+       89,   88,   92,   89,   88,  169,   93,   91,   93,   90,
+       96,  158,   91,   92,  157,   92,   93,   94,   91,  126,
+      150,   94,   95,   96,  207,   92,   96,   93,  149,   93,
+       94,   94,  126,   96,   92,   95,   92,  147,  144,   95,
+
+       94,   97,  126,   94,   96,   95,  208,   96,  105,  105,
+      105,   94,   94,  126,   97,   97,   95,  122,  122,  122,
+       95,  122,  120,  112,   97,  247,  127,  105,  208,  247,
+      114,  114,  146,  146,  146,   97,   97,  108,  122,  127,
+      110,  114,  210,  210,  220,  220,  108,  108,  250,  127,
+      107,  146,  250,  108,  108,  108,  108,  108,  108,  114,
+      127,  251,  104,  114,  121,  251,  121,  121,  121,  102,
+      101,  210,  128,  220,  121,   98,  108,  108,  108,  108,
+      108,  121,  123,   70,   64,  128,  123,  123,  128,  123,
+      125,  123,  125,  125,  125,  128,  123,  123,  123,  123,
+
+      125,  129,  130,  131,   58,  129,  128,  125,   49,  128,
+      123,  123,  123,  123,  129,  130,  131,  130,  123,  222,
+      222,   48,  123,   47,  129,  130,  131,  129,  132,  133,
+      134,  123,  123,  123,  123,  129,  130,  131,  130,  123,
+       45,  132,  133,  134,  135,  136,  137,  138,  222,  136,
+       44,  132,  133,  134,  135,   25,  138,  135,  136,  137,
+      138,  139,  132,  133,  134,   24,   23,  135,  136,  137,
+      138,  136,   19,  139,  139,  135,   17,  138,  135,  136,
+      137,  138,   15,  140,  139,  141,    5,  140,    4,  141,
+      142,  143,    3,    0,  139,  139,  140,  142,  141,  154,
+
+      154,    0,    0,  142,  143,    0,  140,  171,  141,  140,
+      154,  141,    0,  142,  143,    0,  172,  140,  142,  141,
+      171,  225,  225,  225,  142,  143,  148,  148,  154,  172,
+      171,    0,  154,  148,  148,  148,  148,  148,  148,  172,
+      225,  171,  174,    0,  170,    0,  170,  170,  170,  173,
+      172,    0,    0,  173,  170,  174,  148,  148,  148,  148,
+      148,  170,  173,    0,  175,  174,  176,  177,  178,  179,
+        0,  180,  173,    0,    0,  173,  174,  175,  175,  176,
+      177,  178,  179,  173,  180,  228,  228,  175,    0,  176,
+      177,  178,  179,    0,  180,    0,    0,    0,  175,  175,
+
+      176,  177,  178,  179,    0,  180,  184,  190,    0,  190,
+      190,  190,  199,    0,  228,    0,    0,  190,    0,  184,
+      184,  200,    0,    0,  190,  199,  184,  184,  184,  184,
+      184,  184,  229,  229,  200,  199,  218,  218,  218,    0,
+        0,  201,    0,    0,  200,  202,  199,    0,  202,  184,
+      184,  184,  184,  184,  201,  200,  201,    0,  202,  217,
+      218,  229,    0,    0,  201,    0,    0,    0,  202,    0,
+      202,    0,  217,  218,    0,  201,    0,  201,    0,  202,
+        0,    0,  217,  218,  223,  223,  223,    0,  224,  224,
+      224,    0,    0,  217,  218,    0,  224,    0,    0,  223,
+
+        0,  223,  223,  224,    0,  224,  224,  231,  231,  231,
+      231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
+      231,  232,    0,    0,  232,    0,    0,    0,  232,  232,
+      232,  233,    0,  233,  233,  233,    0,    0,    0,    0,
+        0,  233,    0,  233,    0,    0,  233,  233,  233,  234,
+        0,  234,  234,  234,  235,    0,  235,  235,  235,    0,
+        0,    0,    0,  235,  235,  235,    0,    0,    0,  235,
+      235,  235,  235,  236,  236,  236,  236,  236,  236,  236,
+      236,  236,  236,  236,  236,  236,  236,  236,  236,  236,
+      236,  236,  237,  237,  237,    0,  237,  237,  237,  237,
+
+      237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
+      237,  238,  238,  238,  239,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  239,    0,    0,    0,  239,
+      239,  239,  239,  242,    0,    0,  242,  242,  242,  242,
+      243,  243,  243,    0,  243,    0,    0,    0,    0,    0,
+      243,    0,    0,  243,  243,  243,  244,    0,    0,    0,
+        0,  244,    0,    0,    0,  244,  245,    0,    0,  245,
+      245,  245,  245,  246,    0,    0,  246,  246,    0,    0,
+        0,  246,    0,  246,  248,  248,  248,  249,    0,  249,
+      249,  249,    0,    0,    0,    0,  249,  249,  249,    0,
+
+        0,    0,  249,  249,  249,  249,  252,    0,    0,    0,
+      252,    0,    0,    0,  252,    0,  252,  253,    0,    0,
+      253,  253,  253,  253,  254,    0,    0,    0,    0,  254,
+        0,    0,    0,  254,  255,    0,    0,    0,  255,    0,
+        0,    0,  255,    0,  255,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
 
-      206,  206,  206,  206,  206,  206,  206,  206,  206,  206,
-      206,  206,  206,  206,  206,  206,  206,  206,  206
+      230,  230,  230,  230,  230,  230,  230,  230,  230,  230,
+      230,  230,  230,  230
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -812,8 +843,8 @@ int yy_flex_debug = 0;
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
 #line 1 "ada-lex.l"
-/* FLEX lexer for Ada expressions, for GDB.
-   Copyright (C) 1994-2020 Free Software Foundation, Inc.
+/* FLEX lexer for Ada expressions, for GDB. -*- c++ -*-
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -835,22 +866,22 @@ char *yytext;
 /* the global pointer lexptr.  It returns a syntactic category for */
 /* each successive token and places a semantic value into yylval */
 /* (ada-lval), defined by the parser.   */
-#line 43 "ada-lex.l"
+/* This must agree with COMPLETION_CHAR below.  See the comment there
+   for the explanation.  */
+#line 48 "ada-lex.l"
 
 #include "diagnostics.h"
 
-/* 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.  */
+/* Some old versions of flex (2.5.x) generate code that uses the "register"
+   keyword, which compilers warn about, because it is not allowed in ISO
+   C++17.  */
 DIAGNOSTIC_PUSH
-DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
+DIAGNOSTIC_IGNORE_REGISTER
 
 #define NUMERAL_WIDTH 256
 #define LONGEST_SIGN ((ULONGEST) 1 << (sizeof(LONGEST) * HOST_CHAR_BIT - 1))
 
-/* Temporary staging for numeric literals.  */
-static char numbuf[NUMERAL_WIDTH];
- static void canonicalizeNumeral (char *s1, const char *);
+static void canonicalizeNumeral (char *s1, const char *);
 static struct stoken processString (const char*, int);
 static int processInt (struct parser_state *, const char *, const char *,
 		       const char *);
@@ -867,24 +898,31 @@ static void rewind_to_char (int);
    Defining YY_NO_INPUT comments it out.  */
 #define YY_NO_INPUT
 
-#undef YY_INPUT
-#define YY_INPUT(BUF, RESULT, MAX_SIZE) \
-    if ( *pstate->lexptr == '\000' ) \
-      (RESULT) = YY_NULL; \
-    else \
-      { \
-        *(BUF) = *pstate->lexptr; \
-        (RESULT) = 1; \
-	pstate->lexptr += 1; \
-      }
-
-static int find_dot_all (const char *);
+/* The character we use to represent the completion point.  */
+#define COMPLETE_CHAR '\001'
 
-/* Depth of parentheses.  */
-static int paren_depth;
+#undef YY_INPUT
+#define YY_INPUT(BUF, RESULT, MAX_SIZE)					\
+  if ( *pstate->lexptr == '\000' )					\
+    {									\
+      if (pstate->parse_completion && !ada_parser->returned_complete)	\
+	{								\
+	  ada_parser->returned_complete = true;				\
+	  *(BUF) = COMPLETE_CHAR;					\
+	  (RESULT) = 1;							\
+	}								\
+      else								\
+	(RESULT) = YY_NULL;						\
+    }									\
+  else									\
+    {									\
+      *(BUF) = *pstate->lexptr == COMPLETE_CHAR ? ' ' : *pstate->lexptr; \
+      (RESULT) = 1;							\
+      pstate->lexptr += 1;						\
+    }
 
 
-#line 888 "<stdout>"
+#line 926 "<stdout>"
 
 #define INITIAL 0
 #define BEFORE_QUAL_QUOTE 1
@@ -918,19 +956,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 +982,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 +1008,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 +1021,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 +1032,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 +1045,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 +1100,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 +1110,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 +1140,13 @@ YY_DECL
 		yy_load_buffer_state( );
 		}
 
-	while ( 1 )		/* loops until end-of-file is reached */
+	{
+#line 106 "ada-lex.l"
+
+
+#line 1148 "<stdout>"
+
+	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
 		yy_cp = (yy_c_buf_p);
 
@@ -1114,7 +1162,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;
@@ -1123,13 +1171,13 @@ yy_match:
 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 207 )
+				if ( yy_current_state >= 231 )
 					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 );
+		while ( yy_base[yy_current_state] != 1346 );
 
 yy_find_action:
 		yy_act = yy_accept[yy_current_state];
@@ -1156,45 +1204,56 @@ do_action:	/* This label is used only to
 case 1:
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 98 "ada-lex.l"
+#line 108 "ada-lex.l"
 { }
 	YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 100 "ada-lex.l"
+#line 110 "ada-lex.l"
 { yyterminate(); }
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 102 "ada-lex.l"
+#line 112 "ada-lex.l"
 {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
-		   return processInt (pstate, NULL, numbuf,
-				      strrchr (numbuf, 'e') + 1);
+		   char *e_ptr = strrchr (numbuf, 'e');
+		   *e_ptr = '\0';
+		   return processInt (pstate, nullptr, numbuf, e_ptr + 1);
 		 }
 	YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 108 "ada-lex.l"
+#line 120 "ada-lex.l"
 {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processInt (pstate, NULL, numbuf, NULL);
 		 }
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 113 "ada-lex.l"
+#line 126 "ada-lex.l"
 {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
+		   char *e_ptr = strrchr (numbuf, 'e');
+		   *e_ptr = '\0';
 		   return processInt (pstate, numbuf,
 				      strchr (numbuf, '#') + 1,
-				      strrchr(numbuf, '#') + 1);
+				      e_ptr + 1);
 		 }
 	YY_BREAK
+/* The "llf" is a gdb extension to allow a floating-point
+	   constant to be written in some other base.  The
+	   floating-point number is formed by reinterpreting the
+	   bytes, allowing direct control over the bits.  */
 case 6:
 YY_RULE_SETUP
-#line 120 "ada-lex.l"
+#line 140 "ada-lex.l"
 {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processInt (pstate, numbuf, strchr (numbuf, '#') + 1,
 				      NULL);
@@ -1202,65 +1261,70 @@ YY_RULE_SETUP
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 126 "ada-lex.l"
+#line 147 "ada-lex.l"
 {
+		  char numbuf[NUMERAL_WIDTH];
 		  canonicalizeNumeral (numbuf, yytext+2);
 		  return processInt (pstate, "16#", numbuf, NULL);
 		}
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 132 "ada-lex.l"
+#line 154 "ada-lex.l"
 {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processReal (pstate, numbuf);
 		}
 	YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 137 "ada-lex.l"
+#line 160 "ada-lex.l"
 {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processReal (pstate, numbuf);
 		}
 	YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 142 "ada-lex.l"
+#line 166 "ada-lex.l"
 {
                    error (_("Based real literals not implemented yet."));
 		}
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 146 "ada-lex.l"
+#line 170 "ada-lex.l"
 {
                    error (_("Based real literals not implemented yet."));
 		}
 	YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 150 "ada-lex.l"
+#line 174 "ada-lex.l"
 {
-		   yylval.typed_val.type = type_char (pstate);
-		   yylval.typed_val.val = yytext[1];
+		   yylval.typed_char.val = yytext[1];
+		   yylval.typed_char.type = type_for_char (pstate, yytext[1]);
 		   return CHARLIT;
 		}
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 156 "ada-lex.l"
+#line 180 "ada-lex.l"
 {
-                   int v;
-                   yylval.typed_val.type = type_char (pstate);
-		   sscanf (yytext+3, "%2x", &v);
-		   yylval.typed_val.val = v;
+                   ULONGEST v = strtoulst (yytext+3, nullptr, 16);
+		   yylval.typed_char.val = v;
+                   yylval.typed_char.type = type_for_char (pstate, v);
 		   return CHARLIT;
 		}
 	YY_BREAK
+/* Note that we don't handle bracket sequences of more than 2
+	   digits here.  Currently there's no support for wide or
+	   wide-wide strings.  */
 case 14:
 YY_RULE_SETUP
-#line 164 "ada-lex.l"
+#line 190 "ada-lex.l"
 {
 	           yylval.sval = processString (yytext+1, yyleng-2);
 		   return STRING;
@@ -1268,14 +1332,14 @@ YY_RULE_SETUP
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 169 "ada-lex.l"
+#line 195 "ada-lex.l"
 {
                    error (_("ill-formed or non-terminated string literal"));
 		}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 174 "ada-lex.l"
+#line 200 "ada-lex.l"
 {
                   rewind_to_char ('i');
 		  return 0;
@@ -1283,7 +1347,7 @@ YY_RULE_SETUP
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 179 "ada-lex.l"
+#line 205 "ada-lex.l"
 {
                   rewind_to_char ('t');
 		  return 0;
@@ -1292,7 +1356,7 @@ YY_RULE_SETUP
 case 18:
 /* rule 18 can match eol */
 YY_RULE_SETUP
-#line 184 "ada-lex.l"
+#line 210 "ada-lex.l"
 {
                   /* This keyword signals the end of the expression and
                      will be processed separately.  */
@@ -1303,67 +1367,82 @@ YY_RULE_SETUP
 /* ADA KEYWORDS */
 case 19:
 YY_RULE_SETUP
-#line 193 "ada-lex.l"
+#line 219 "ada-lex.l"
 { return ABS; }
 	YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 194 "ada-lex.l"
+#line 220 "ada-lex.l"
 { return _AND_; }
 	YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 195 "ada-lex.l"
-{ return ELSE; }
+#line 221 "ada-lex.l"
+{ return DELTA; }
 	YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 196 "ada-lex.l"
-{ return IN; }
+#line 222 "ada-lex.l"
+{ return ELSE; }
 	YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 197 "ada-lex.l"
-{ return MOD; }
+#line 223 "ada-lex.l"
+{ return FOR; }
 	YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 198 "ada-lex.l"
-{ return NEW; }
+#line 224 "ada-lex.l"
+{ return IN; }
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 199 "ada-lex.l"
-{ return NOT; }
+#line 225 "ada-lex.l"
+{ return MOD; }
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 200 "ada-lex.l"
-{ return NULL_PTR; }
+#line 226 "ada-lex.l"
+{ return NEW; }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 201 "ada-lex.l"
-{ return OR; }
+#line 227 "ada-lex.l"
+{ return NOT; }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 202 "ada-lex.l"
-{ return OTHERS; }
+#line 228 "ada-lex.l"
+{ return NULL_PTR; }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 203 "ada-lex.l"
-{ return REM; }
+#line 229 "ada-lex.l"
+{ return OR; }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 204 "ada-lex.l"
-{ return THEN; }
+#line 230 "ada-lex.l"
+{ return OTHERS; }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 205 "ada-lex.l"
+#line 231 "ada-lex.l"
+{ return REM; }
+	YY_BREAK
+case 32:
+YY_RULE_SETUP
+#line 232 "ada-lex.l"
+{ return THEN; }
+	YY_BREAK
+case 33:
+YY_RULE_SETUP
+#line 233 "ada-lex.l"
+{ return WITH; }
+	YY_BREAK
+case 34:
+YY_RULE_SETUP
+#line 234 "ada-lex.l"
 { return XOR; }
 	YY_BREAK
 /* BOOLEAN "KEYWORDS" */
@@ -1371,73 +1450,78 @@ YY_RULE_SETUP
     However, the boolean type is no longer represented as an enum, so True
     and False are no longer defined in symbol tables.  We compromise by
     making them keywords (when bare). */
-case 32:
+case 35:
 YY_RULE_SETUP
-#line 214 "ada-lex.l"
+#line 243 "ada-lex.l"
 { return TRUEKEYWORD; }
 	YY_BREAK
-case 33:
+case 36:
 YY_RULE_SETUP
-#line 215 "ada-lex.l"
+#line 244 "ada-lex.l"
 { return FALSEKEYWORD; }
 	YY_BREAK
 /* ATTRIBUTES */
-case 34:
-/* rule 34 can match eol */
+case 37:
+/* rule 37 can match eol */
 YY_RULE_SETUP
-#line 219 "ada-lex.l"
-{ BEGIN INITIAL; return processAttribute (yytext+1); }
+#line 248 "ada-lex.l"
+{ BEGIN INITIAL; return processAttribute (yytext); }
 	YY_BREAK
 /* PUNCTUATION */
-case 35:
+case 38:
 YY_RULE_SETUP
-#line 223 "ada-lex.l"
+#line 252 "ada-lex.l"
 { return ARROW; }
 	YY_BREAK
-case 36:
+case 39:
 YY_RULE_SETUP
-#line 224 "ada-lex.l"
+#line 253 "ada-lex.l"
 { return DOTDOT; }
 	YY_BREAK
-case 37:
+case 40:
 YY_RULE_SETUP
-#line 225 "ada-lex.l"
+#line 254 "ada-lex.l"
 { return STARSTAR; }
 	YY_BREAK
-case 38:
+case 41:
 YY_RULE_SETUP
-#line 226 "ada-lex.l"
+#line 255 "ada-lex.l"
 { return ASSIGN; }
 	YY_BREAK
-case 39:
+case 42:
 YY_RULE_SETUP
-#line 227 "ada-lex.l"
+#line 256 "ada-lex.l"
 { return NOTEQUAL; }
 	YY_BREAK
-case 40:
+case 43:
 YY_RULE_SETUP
-#line 228 "ada-lex.l"
+#line 257 "ada-lex.l"
 { return LEQ; }
 	YY_BREAK
-case 41:
+case 44:
 YY_RULE_SETUP
-#line 229 "ada-lex.l"
+#line 258 "ada-lex.l"
 { return GEQ; }
 	YY_BREAK
-case 42:
+case 45:
+/* rule 45 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
+YY_LINENO_REWIND_TO(yy_bp + 1);
+(yy_c_buf_p) = yy_cp = yy_bp + 1;
+YY_DO_BEFORE_ACTION; /* set up yytext again */
 YY_RULE_SETUP
-#line 231 "ada-lex.l"
+#line 260 "ada-lex.l"
 { BEGIN INITIAL; return '\''; }
 	YY_BREAK
-case 43:
+case 46:
 YY_RULE_SETUP
-#line 233 "ada-lex.l"
+#line 262 "ada-lex.l"
 { return yytext[0]; }
 	YY_BREAK
-case 44:
+case 47:
 YY_RULE_SETUP
-#line 235 "ada-lex.l"
-{ if (paren_depth == 0 && pstate->comma_terminates)
+#line 264 "ada-lex.l"
+{ if (ada_parser->paren_depth == 0 && pstate->comma_terminates)
 		    {
 		      rewind_to_char (',');
 		      return 0;
@@ -1446,45 +1530,51 @@ YY_RULE_SETUP
 		    return ',';
 		}
 	YY_BREAK
-case 45:
+case 48:
 YY_RULE_SETUP
-#line 244 "ada-lex.l"
-{ paren_depth += 1; return '('; }
+#line 273 "ada-lex.l"
+{ ada_parser->paren_depth += 1; return '('; }
 	YY_BREAK
-case 46:
+case 49:
 YY_RULE_SETUP
-#line 245 "ada-lex.l"
-{ if (paren_depth == 0)
+#line 274 "ada-lex.l"
+{ if (ada_parser->paren_depth == 0)
 		    {
 		      rewind_to_char (')');
 		      return 0;
 		    }
 		  else
  		    {
-		      paren_depth -= 1;
+		      ada_parser->paren_depth -= 1;
 		      return ')';
 		    }
 		}
 	YY_BREAK
-case 47:
-/* rule 47 can match eol */
-YY_RULE_SETUP
-#line 257 "ada-lex.l"
-{ return DOT_ALL; }
-	YY_BREAK
-case 48:
-/* rule 48 can match eol */
+case 50:
+/* rule 50 can match eol */
 YY_RULE_SETUP
-#line 259 "ada-lex.l"
+#line 286 "ada-lex.l"
 {
 	 	  yylval.sval = processId (yytext+1, yyleng-1);
+		  if (yytext[yyleng - 1] == COMPLETE_CHAR)
+		    return DOT_COMPLETE;
 	          return DOT_ID;
 		}
 	YY_BREAK
-case 49:
-/* rule 49 can match eol */
+case 51:
+/* rule 51 can match eol */
 YY_RULE_SETUP
-#line 264 "ada-lex.l"
+#line 293 "ada-lex.l"
+{
+		  yylval.sval.ptr = "";
+		  yylval.sval.length = 0;
+		  return DOT_COMPLETE;
+		}
+	YY_BREAK
+case 52:
+/* rule 52 can match eol */
+YY_RULE_SETUP
+#line 299 "ada-lex.l"
 {
                   int all_posn = find_dot_all (yytext);
 
@@ -1495,35 +1585,31 @@ YY_RULE_SETUP
 		    }
                   else if (all_posn >= 0)
 		    yyless (all_posn);
+		  bool is_completion = yytext[yyleng - 1] == COMPLETE_CHAR;
                   yylval.sval = processId (yytext, yyleng);
-                  return NAME;
+                  return is_completion ? NAME_COMPLETE : NAME;
                }
 	YY_BREAK
 /* GDB EXPRESSION CONSTRUCTS  */
-case 50:
-/* rule 50 can match eol */
+case 53:
+/* rule 53 can match eol */
 YY_RULE_SETUP
-#line 281 "ada-lex.l"
+#line 317 "ada-lex.l"
 {
                   yyless (yyleng - 2);
 		  yylval.sval = processId (yytext, yyleng);
 		  return NAME;
 		}
 	YY_BREAK
-case 51:
+case 54:
 YY_RULE_SETUP
-#line 287 "ada-lex.l"
+#line 323 "ada-lex.l"
 { return COLONCOLON; }
 	YY_BREAK
-case 52:
-YY_RULE_SETUP
-#line 289 "ada-lex.l"
-{ return yytext[0]; }
-	YY_BREAK
 /* REGISTERS AND GDB CONVENIENCE VARIABLES */
-case 53:
+case 55:
 YY_RULE_SETUP
-#line 293 "ada-lex.l"
+#line 327 "ada-lex.l"
 {
 		  yylval.sval.ptr = yytext;
 		  yylval.sval.length = yyleng;
@@ -1531,17 +1617,17 @@ YY_RULE_SETUP
 		}
 	YY_BREAK
 /* CATCH-ALL ERROR CASE */
-case 54:
+case 56:
 YY_RULE_SETUP
-#line 301 "ada-lex.l"
+#line 335 "ada-lex.l"
 { error (_("Invalid character '%s' in expression."), yytext); }
 	YY_BREAK
-case 55:
+case 57:
 YY_RULE_SETUP
-#line 302 "ada-lex.l"
+#line 336 "ada-lex.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
 	YY_BREAK
-#line 1545 "<stdout>"
+#line 1631 "<stdout>"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(BEFORE_QUAL_QUOTE):
 	yyterminate();
@@ -1673,6 +1759,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 +1771,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 +1802,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 +1822,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 +1838,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 +1860,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 +1884,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 +1905,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)] : 2);
 		if ( yy_accept[yy_current_state] )
 			{
 			(yy_last_accepting_state) = yy_current_state;
@@ -1834,10 +1921,10 @@ static int yy_get_next_buffer (void)
 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 207 )
+			if ( yy_current_state >= 231 )
 				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 +1937,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 = 2;
 	if ( yy_accept[yy_current_state] )
 		{
 		(yy_last_accepting_state) = yy_current_state;
@@ -1862,18 +1949,20 @@ static int yy_get_next_buffer (void)
 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 207 )
+		if ( yy_current_state >= 231 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
-	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 206);
+	yy_current_state = yy_nxt[yy_base[yy_current_state] + (flex_int16_t) yy_c];
+	yy_is_jam = (yy_current_state == 230);
 
-	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 +1972,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 +1984,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 +1997,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 +2047,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 +2153,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 +2183,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 +2303,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 +2320,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 +2350,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 +2382,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 +2400,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 +2426,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 +2439,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 +2494,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 +2524,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 +2535,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 +2547,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 +2586,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 +2596,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 +2606,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 +2619,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 336 "ada-lex.l"
 
 
 
@@ -2551,7 +2640,6 @@ static void
 lexer_init (FILE *inp)
 {
   BEGIN INITIAL;
-  paren_depth = 0;
   yyrestart (inp);
 }
 
@@ -2575,7 +2663,7 @@ canonicalizeNumeral (char *s1, const cha
 /* Interprets the prefix of NUM that consists of digits of the given BASE
    as an integer of that BASE, with the string EXP as an exponent.
    Puts value in yylval, and returns INT, if the string is valid.  Causes
-   an error if the number is improperly formated.   BASE, if NULL, defaults
+   an error if the number is improperly formatted.   BASE, if NULL, defaults
    to "10", and EXP to "1".  The EXP does not contain a leading 'e' or 'E'.
  */
 
@@ -2583,18 +2671,36 @@ static int
 processInt (struct parser_state *par_state, const char *base0,
 	    const char *num0, const char *exp0)
 {
-  ULONGEST result;
   long exp;
   int base;
-  const char *trailer;
+  /* For the based literal with an "f" prefix, we'll return a
+     floating-point number.  This counts the the number of "l"s seen,
+     to decide the width of the floating-point number to return.  -1
+     means no "f".  */
+  int floating_point_l_count = -1;
 
   if (base0 == NULL)
     base = 10;
   else
     {
-      base = strtol (base0, (char **) NULL, 10);
+      char *end_of_base;
+      base = strtol (base0, &end_of_base, 10);
       if (base < 2 || base > 16)
 	error (_("Invalid base: %d."), base);
+      while (*end_of_base == 'l')
+	{
+	  ++floating_point_l_count;
+	  ++end_of_base;
+	}
+      /* This assertion is ensured by the pattern.  */
+      gdb_assert (floating_point_l_count == -1 || *end_of_base == 'f');
+      if (*end_of_base == 'f')
+	{
+	  ++end_of_base;
+	  ++floating_point_l_count;
+	}
+      /* This assertion is ensured by the pattern.  */
+      gdb_assert (*end_of_base == '#');
     }
 
   if (exp0 == NULL)
@@ -2602,55 +2708,91 @@ processInt (struct parser_state *par_sta
   else
     exp = strtol(exp0, (char **) NULL, 10);
 
-  errno = 0;
-  result = strtoulst (num0, &trailer, base);
-  if (errno == ERANGE)
-    error (_("Integer literal out of range"));
-  if (isxdigit(*trailer))
-    error (_("Invalid digit `%c' in based literal"), *trailer);
+  gdb_mpz result;
+  while (isxdigit (*num0))
+    {
+      int dig = fromhex (*num0);
+      if (dig >= base)
+	error (_("Invalid digit `%c' in based literal"), *num0);
+      result *= base;
+      result += dig;
+      ++num0;
+    }
 
   while (exp > 0)
     {
-      if (result > (ULONG_MAX / base))
-	error (_("Integer literal out of range"));
       result *= base;
       exp -= 1;
     }
 
-  if ((result >> (gdbarch_int_bit (par_state->gdbarch ())-1)) == 0)
-    yylval.typed_val.type = type_int (par_state);
-  else if ((result >> (gdbarch_long_bit (par_state->gdbarch ())-1)) == 0)
-    yylval.typed_val.type = type_long (par_state);
-  else if (((result >> (gdbarch_long_bit (par_state->gdbarch ())-1)) >> 1) == 0)
+  if (floating_point_l_count > -1)
     {
-      /* We have a number representable as an unsigned integer quantity.
-         For consistency with the C treatment, we will treat it as an
-	 anonymous modular (unsigned) quantity.  Alas, the types are such
-	 that we need to store .val as a signed quantity.  Sorry
-         for the mess, but C doesn't officially guarantee that a simple
-         assignment does the trick (no, it doesn't; read the reference manual).
-       */
-      yylval.typed_val.type
-	= builtin_type (par_state->gdbarch ())->builtin_unsigned_long;
-      if (result & LONGEST_SIGN)
-	yylval.typed_val.val =
-	  (LONGEST) (result & ~LONGEST_SIGN)
-	  - (LONGEST_SIGN>>1) - (LONGEST_SIGN>>1);
+      struct type *fp_type;
+      if (floating_point_l_count == 0)
+	fp_type = language_lookup_primitive_type (par_state->language (),
+						  par_state->gdbarch (),
+						  "float");
+      else if (floating_point_l_count == 1)
+	fp_type = language_lookup_primitive_type (par_state->language (),
+						  par_state->gdbarch (),
+						  "long_float");
       else
-	yylval.typed_val.val = (LONGEST) result;
-      return INT;
+	{
+	  /* This assertion is ensured by the pattern.  */
+	  gdb_assert (floating_point_l_count == 2);
+	  fp_type = language_lookup_primitive_type (par_state->language (),
+						    par_state->gdbarch (),
+						    "long_long_float");
+	}
+
+      yylval.typed_val_float.type = fp_type;
+      result.write (gdb::make_array_view (yylval.typed_val_float.val,
+					  fp_type->length ()),
+		    type_byte_order (fp_type),
+		    true);
+
+      return FLOAT;
     }
+
+  const gdb_mpz *value = ada_parser->push_integer (std::move (result));
+
+  int int_bits = gdbarch_int_bit (par_state->gdbarch ());
+  int long_bits = gdbarch_long_bit (par_state->gdbarch ());
+  int long_long_bits = gdbarch_long_long_bit (par_state->gdbarch ());
+
+  if (fits_in_type (1, *value, int_bits, true))
+    yylval.typed_val.type = parse_type (par_state)->builtin_int;
+  else if (fits_in_type (1, *value, long_bits, true))
+    yylval.typed_val.type = parse_type (par_state)->builtin_long;
+  else if (fits_in_type (1, *value, long_bits, false))
+    yylval.typed_val.type
+      = builtin_type (par_state->gdbarch ())->builtin_unsigned_long;
+  else if (fits_in_type (1, *value, long_long_bits, true))
+    yylval.typed_val.type = parse_type (par_state)->builtin_long_long;
+  else if (fits_in_type (1, *value, long_long_bits, false))
+    yylval.typed_val.type
+      = builtin_type (par_state->gdbarch ())->builtin_unsigned_long_long;
+  else if (fits_in_type (1, *value, 128, true))
+    yylval.typed_val.type
+      = language_lookup_primitive_type (par_state->language (),
+					par_state->gdbarch (),
+					"long_long_long_integer");
+  else if (fits_in_type (1, *value, 128, false))
+    yylval.typed_val.type
+      = language_lookup_primitive_type (par_state->language (),
+					par_state->gdbarch (),
+					"unsigned_long_long_long_integer");
   else
-    yylval.typed_val.type = type_long_long (par_state);
+    error (_("Integer literal out of range"));
 
-  yylval.typed_val.val = (LONGEST) result;
+  yylval.typed_val.val = value;
   return INT;
 }
 
 static int
 processReal (struct parser_state *par_state, const char *num0)
 {
-  yylval.typed_val_float.type = type_long_double (par_state);
+  yylval.typed_val_float.type = parse_type (par_state)->builtin_long_double;
 
   bool parsed = parse_float (num0, strlen (num0),
 			     yylval.typed_val_float.type,
@@ -2666,7 +2808,7 @@ processReal (struct parser_state *par_st
    encoded and the resulting name is equal to it.  Similarly, if the name
    starts with '<', it is copied verbatim.  Otherwise, it differs
    from NAME0 in that:
-    + Characters between '...' are transfered verbatim to yylval.ssym.
+    + Characters between '...' are transferred verbatim to yylval.ssym.
     + Trailing "'" characters in quoted sequences are removed (a leading quote is
       preserved to indicate that the name is not to be GNAT-encoded).
     + Unquoted whitespace is removed.
@@ -2678,7 +2820,7 @@ processReal (struct parser_state *par_st
 static struct stoken
 processId (const char *name0, int len)
 {
-  char *name = (char *) obstack_alloc (&temp_parse_space, len + 11);
+  char *name = (char *) obstack_alloc (&ada_parser->temp_space, len + 11);
   int i0, i;
   struct stoken result;
 
@@ -2694,33 +2836,33 @@ processId (const char *name0, int len)
       return result;
     }
 
+  bool in_quotes = false;
   i = i0 = 0;
   while (i0 < len)
     {
-      if (isalnum (name0[i0]))
+      if (name0[i0] == COMPLETE_CHAR)
+	{
+	  /* Just ignore.  */
+	  ++i0;
+	}
+      else if (in_quotes)
+	name[i++] = name0[i0++];
+      else if (isalnum (name0[i0]))
 	{
 	  name[i] = tolower (name0[i0]);
 	  i += 1; i0 += 1;
 	}
-      else switch (name0[i0])
+      else if (isspace (name0[i0]))
+	i0 += 1;
+      else if (name0[i0] == '\'')
 	{
-	default:
-	  name[i] = name0[i0];
-	  i += 1; i0 += 1;
-	  break;
-	case ' ': case '\t':
-	  i0 += 1;
-	  break;
-	case '\'':
-	  do
-	    {
-	      name[i] = name0[i0];
-	      i += 1; i0 += 1;
-	    }
-	  while (i0 < len && name0[i0] != '\'');
-	  i0 += 1;
-	  break;
+	  /* Copy the starting quote, but not the ending quote.  */
+	  if (!in_quotes)
+	    name[i++] = name0[i0++];
+	  in_quotes = !in_quotes;
 	}
+      else
+	name[i++] = name0[i0++];
     }
   name[i] = '\000';
 
@@ -2740,7 +2882,7 @@ processString (const char *text, int len
   const char *lim = text + len;
   struct stoken result;
 
-  q = (char *) obstack_alloc (&temp_parse_space, len);
+  q = (char *) obstack_alloc (&ada_parser->temp_space, len);
   result.ptr = q;
   p = text;
   while (p < lim)
@@ -2754,10 +2896,12 @@ processString (const char *text, int len
 	     }
            else
 	     {
-               int chr;
-	       sscanf (p+2, "%2x", &chr);
+	       const char *end;
+	       ULONGEST chr = strtoulst (p + 2, &end, 16);
+	       if (chr > 0xff)
+		 error (_("wide strings are not yet supported"));
 	       *q = (char) chr;
-	       p += 5;
+	       p = end + 1;
 	     }
          }
        else
@@ -2814,7 +2958,7 @@ subseqMatch (const char *subseq, const c
 }
 
 
-static struct { const char *name; int code; }
+static const struct { const char *name; int code; }
 attributes[] = {
   { "address", TICK_ADDRESS },
   { "unchecked_access", TICK_ACCESS },
@@ -2826,12 +2970,14 @@ attributes[] = {
   { "max", TICK_MAX },
   { "min", TICK_MIN },
   { "modulus", TICK_MODULUS },
+  { "object_size", TICK_OBJECT_SIZE },
   { "pos", TICK_POS },
   { "range", TICK_RANGE },
   { "size", TICK_SIZE },
   { "tag", TICK_TAG },
   { "val", TICK_VAL },
-  { NULL, -1 }
+  { "enum_rep", TICK_ENUM_REP },
+  { "enum_val", TICK_ENUM_VAL },
 };
 
 /* Return the syntactic code corresponding to the attribute name or
@@ -2840,24 +2986,53 @@ attributes[] = {
 static int
 processAttribute (const char *str)
 {
-  int i, k;
+  gdb_assert (*str == '\'');
+  ++str;
+  while (isspace (*str))
+    ++str;
 
-  for (i = 0; attributes[i].code != -1; i += 1)
-    if (strcasecmp (str, attributes[i].name) == 0)
-      return attributes[i].code;
+  int len = strlen (str);
+  if (len > 0 && str[len - 1] == COMPLETE_CHAR)
+    {
+      /* This is enforced by YY_INPUT.  */
+      gdb_assert (pstate->parse_completion);
+      yylval.sval.ptr = obstack_strndup (&ada_parser->temp_space,
+					 str, len - 1);
+      yylval.sval.length = len - 1;
+      return TICK_COMPLETE;
+    }
 
-  for (i = 0, k = -1; attributes[i].code != -1; i += 1)
-    if (subseqMatch (str, attributes[i].name))
+  for (const auto &item : attributes)
+    if (strcasecmp (str, item.name) == 0)
+      return item.code;
+
+  std::optional<int> found;
+  for (const auto &item : attributes)
+    if (subseqMatch (str, item.name))
       {
-	if (k == -1)
-	  k = i;
+	if (!found.has_value ())
+	  found = item.code;
 	else
 	  error (_("ambiguous attribute name: `%s'"), str);
       }
-  if (k == -1)
+  if (!found.has_value ())
     error (_("unrecognized attribute: `%s'"), str);
 
-  return attributes[k].code;
+  return *found;
+}
+
+bool
+ada_tick_completer::complete (struct expression *exp,
+			      completion_tracker &tracker)
+{
+  completion_list output;
+  for (const auto &item : attributes)
+    {
+      if (strncasecmp (item.name, m_name.c_str (), m_name.length ()) == 0)
+	output.emplace_back (xstrdup (item.name));
+    }
+  tracker.add_completions (std::move (output));
+  return true;
 }
 
 /* Back up lexptr by yyleng and then to the rightmost occurrence 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.20200303/gdb/ada-lex.l ./gdb/ada-lex.l
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-lex.l	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-lex.l	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
-/* FLEX lexer for Ada expressions, for GDB.
-   Copyright (C) 1994-2020 Free Software Foundation, Inc.
+/* FLEX lexer for Ada expressions, for GDB. -*- c++ -*-
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -30,7 +30,7 @@ HEXDIG	[0-9a-f]
 NUM16	({HEXDIG}({HEXDIG}|_)*)
 OCTDIG	[0-7]
 LETTER	[a-z_]
-ID	({LETTER}({LETTER}|{DIG})*|"<"{LETTER}({LETTER}|{DIG})*">")
+ID	({LETTER}({LETTER}|{DIG}|[\x80-\xff])*|"<"{LETTER}({LETTER}|{DIG})*">")
 WHITE	[ \t\n]
 TICK	("'"{WHITE}*)
 GRAPHIC [a-z0-9 #&'()*+,-./:;<>=_|!$%?@\[\]\\^`{}~]
@@ -39,22 +39,25 @@ OPER    ([-+*/=<>&]|"<="|">="|"**"|"/="|
 EXP	(e[+-]{NUM10})
 POSEXP  (e"+"?{NUM10})
 
+/* This must agree with COMPLETION_CHAR below.  See the comment there
+   for the explanation.  */
+COMPLETE "\001"
+NOT_COMPLETE [^\001]
+
 %{
 
 #include "diagnostics.h"
 
-/* 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.  */
+/* Some old versions of flex (2.5.x) generate code that uses the "register"
+   keyword, which compilers warn about, because it is not allowed in ISO
+   C++17.  */
 DIAGNOSTIC_PUSH
-DIAGNOSTIC_IGNORE_DEPRECATED_REGISTER
+DIAGNOSTIC_IGNORE_REGISTER
 
 #define NUMERAL_WIDTH 256
 #define LONGEST_SIGN ((ULONGEST) 1 << (sizeof(LONGEST) * HOST_CHAR_BIT - 1))
 
-/* Temporary staging for numeric literals.  */
-static char numbuf[NUMERAL_WIDTH];
- static void canonicalizeNumeral (char *s1, const char *);
+static void canonicalizeNumeral (char *s1, const char *);
 static struct stoken processString (const char*, int);
 static int processInt (struct parser_state *, const char *, const char *,
 		       const char *);
@@ -71,21 +74,28 @@ static void rewind_to_char (int);
    Defining YY_NO_INPUT comments it out.  */
 #define YY_NO_INPUT
 
-#undef YY_INPUT
-#define YY_INPUT(BUF, RESULT, MAX_SIZE) \
-    if ( *pstate->lexptr == '\000' ) \
-      (RESULT) = YY_NULL; \
-    else \
-      { \
-        *(BUF) = *pstate->lexptr; \
-        (RESULT) = 1; \
-	pstate->lexptr += 1; \
-      }
-
-static int find_dot_all (const char *);
+/* The character we use to represent the completion point.  */
+#define COMPLETE_CHAR '\001'
 
-/* Depth of parentheses.  */
-static int paren_depth;
+#undef YY_INPUT
+#define YY_INPUT(BUF, RESULT, MAX_SIZE)					\
+  if ( *pstate->lexptr == '\000' )					\
+    {									\
+      if (pstate->parse_completion && !ada_parser->returned_complete)	\
+	{								\
+	  ada_parser->returned_complete = true;				\
+	  *(BUF) = COMPLETE_CHAR;					\
+	  (RESULT) = 1;							\
+	}								\
+      else								\
+	(RESULT) = YY_NULL;						\
+    }									\
+  else									\
+    {									\
+      *(BUF) = *pstate->lexptr == COMPLETE_CHAR ? ' ' : *pstate->lexptr; \
+      (RESULT) = 1;							\
+      pstate->lexptr += 1;						\
+    }
 
 %}
 
@@ -100,41 +110,55 @@ static int paren_depth;
 "--".*		 { yyterminate(); }
 
 {NUM10}{POSEXP}  {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
-		   return processInt (pstate, NULL, numbuf,
-				      strrchr (numbuf, 'e') + 1);
+		   char *e_ptr = strrchr (numbuf, 'e');
+		   *e_ptr = '\0';
+		   return processInt (pstate, nullptr, numbuf, e_ptr + 1);
 		 }
 
 {NUM10}          {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processInt (pstate, NULL, numbuf, NULL);
 		 }
 
 {NUM10}"#"{HEXDIG}({HEXDIG}|_)*"#"{POSEXP} {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
+		   char *e_ptr = strrchr (numbuf, 'e');
+		   *e_ptr = '\0';
 		   return processInt (pstate, numbuf,
 				      strchr (numbuf, '#') + 1,
-				      strrchr(numbuf, '#') + 1);
+				      e_ptr + 1);
 		 }
 
-{NUM10}"#"{HEXDIG}({HEXDIG}|_)*"#" {
+	/* The "llf" is a gdb extension to allow a floating-point
+	   constant to be written in some other base.  The
+	   floating-point number is formed by reinterpreting the
+	   bytes, allowing direct control over the bits.  */
+{NUM10}(l{0,2}f)?"#"{HEXDIG}({HEXDIG}|_)*"#" {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processInt (pstate, numbuf, strchr (numbuf, '#') + 1,
 				      NULL);
 		 }
 
 "0x"{HEXDIG}+	{
+		  char numbuf[NUMERAL_WIDTH];
 		  canonicalizeNumeral (numbuf, yytext+2);
 		  return processInt (pstate, "16#", numbuf, NULL);
 		}
 
 
 {NUM10}"."{NUM10}{EXP} {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processReal (pstate, numbuf);
 		}
 
 {NUM10}"."{NUM10} {
+		   char numbuf[NUMERAL_WIDTH];
 		   canonicalizeNumeral (numbuf, yytext);
 		   return processReal (pstate, numbuf);
 		}
@@ -148,20 +172,22 @@ static int paren_depth;
 		}
 
 <INITIAL>"'"({GRAPHIC}|\")"'" {
-		   yylval.typed_val.type = type_char (pstate);
-		   yylval.typed_val.val = yytext[1];
+		   yylval.typed_char.val = yytext[1];
+		   yylval.typed_char.type = type_for_char (pstate, yytext[1]);
 		   return CHARLIT;
 		}
 
-<INITIAL>"'[\""{HEXDIG}{2}"\"]'"   {
-                   int v;
-                   yylval.typed_val.type = type_char (pstate);
-		   sscanf (yytext+3, "%2x", &v);
-		   yylval.typed_val.val = v;
+<INITIAL>"'[\""{HEXDIG}{2,}"\"]'"   {
+                   ULONGEST v = strtoulst (yytext+3, nullptr, 16);
+		   yylval.typed_char.val = v;
+                   yylval.typed_char.type = type_for_char (pstate, v);
 		   return CHARLIT;
 		}
 
-\"({GRAPHIC}|"[\""({HEXDIG}{2}|\")"\"]")*\"   {
+	/* Note that we don't handle bracket sequences of more than 2
+	   digits here.  Currently there's no support for wide or
+	   wide-wide strings.  */
+\"({GRAPHIC}|"[\""({HEXDIG}{2,}|\")"\"]")*\"   {
 	           yylval.sval = processString (yytext+1, yyleng-2);
 		   return STRING;
 		}
@@ -192,7 +218,9 @@ thread{WHITE}+{DIG} {
 
 abs		{ return ABS; }
 and		{ return _AND_; }
+delta		{ return DELTA; }
 else		{ return ELSE; }
+for		{ return FOR; }
 in		{ return IN; }
 mod		{ return MOD; }
 new		{ return NEW; }
@@ -202,6 +230,7 @@ or		{ return OR; }
 others          { return OTHERS; }
 rem		{ return REM; }
 then		{ return THEN; }
+with		{ return WITH; }
 xor		{ return XOR; }
 
 	/* BOOLEAN "KEYWORDS" */
@@ -216,7 +245,7 @@ false		{ return FALSEKEYWORD; }
 
         /* ATTRIBUTES */
 
-{TICK}[a-zA-Z][a-zA-Z_]+ { BEGIN INITIAL; return processAttribute (yytext+1); }
+{TICK}([a-z][a-z_]*)?{COMPLETE}? { BEGIN INITIAL; return processAttribute (yytext); }
 
 	/* PUNCTUATION */
 
@@ -228,11 +257,11 @@ false		{ return FALSEKEYWORD; }
 "<="		{ return LEQ; }
 ">="		{ return GEQ; }
 
-<BEFORE_QUAL_QUOTE>"'" { BEGIN INITIAL; return '\''; }
+<BEFORE_QUAL_QUOTE>"'"/{NOT_COMPLETE} { BEGIN INITIAL; return '\''; }
 
-[-&*+./:<>=|;\[\]] { return yytext[0]; }
+[-&*+{}@/:<>=|;\[\]] { return yytext[0]; }
 
-","		{ if (paren_depth == 0 && pstate->comma_terminates)
+","		{ if (ada_parser->paren_depth == 0 && pstate->comma_terminates)
 		    {
 		      rewind_to_char (',');
 		      return 0;
@@ -241,27 +270,33 @@ false		{ return FALSEKEYWORD; }
 		    return ',';
 		}
 
-"("		{ paren_depth += 1; return '('; }
-")"		{ if (paren_depth == 0)
+"("		{ ada_parser->paren_depth += 1; return '('; }
+")"		{ if (ada_parser->paren_depth == 0)
 		    {
 		      rewind_to_char (')');
 		      return 0;
 		    }
 		  else
  		    {
-		      paren_depth -= 1;
+		      ada_parser->paren_depth -= 1;
 		      return ')';
 		    }
 		}
 
-"."{WHITE}*all  { return DOT_ALL; }
-
-"."{WHITE}*{ID} {
+"."{WHITE}*{ID}{COMPLETE}? {
 	 	  yylval.sval = processId (yytext+1, yyleng-1);
+		  if (yytext[yyleng - 1] == COMPLETE_CHAR)
+		    return DOT_COMPLETE;
 	          return DOT_ID;
 		}
 
-{ID}({WHITE}*"."{WHITE}*({ID}|\"{OPER}\"))*(" "*"'")?  {
+"."{WHITE}*{COMPLETE} {
+		  yylval.sval.ptr = "";
+		  yylval.sval.length = 0;
+		  return DOT_COMPLETE;
+		}
+
+{ID}({WHITE}*"."{WHITE}*({ID}|\"{OPER}\"))*(" "*"'"|{COMPLETE})?  {
                   int all_posn = find_dot_all (yytext);
 
                   if (all_posn == -1 && yytext[yyleng-1] == '\'')
@@ -271,8 +306,9 @@ false		{ return FALSEKEYWORD; }
 		    }
                   else if (all_posn >= 0)
 		    yyless (all_posn);
+		  bool is_completion = yytext[yyleng - 1] == COMPLETE_CHAR;
                   yylval.sval = processId (yytext, yyleng);
-                  return NAME;
+                  return is_completion ? NAME_COMPLETE : NAME;
                }
 
 
@@ -286,8 +322,6 @@ false		{ return FALSEKEYWORD; }
 
 "::"            { return COLONCOLON; }
 
-[{}@]		{ return yytext[0]; }
-
 	/* REGISTERS AND GDB CONVENIENCE VARIABLES */
 
 "$"({LETTER}|{DIG}|"$")*  {
@@ -308,7 +342,6 @@ static void
 lexer_init (FILE *inp)
 {
   BEGIN INITIAL;
-  paren_depth = 0;
   yyrestart (inp);
 }
 
@@ -332,7 +365,7 @@ canonicalizeNumeral (char *s1, const cha
 /* Interprets the prefix of NUM that consists of digits of the given BASE
    as an integer of that BASE, with the string EXP as an exponent.
    Puts value in yylval, and returns INT, if the string is valid.  Causes
-   an error if the number is improperly formated.   BASE, if NULL, defaults
+   an error if the number is improperly formatted.   BASE, if NULL, defaults
    to "10", and EXP to "1".  The EXP does not contain a leading 'e' or 'E'.
  */
 
@@ -340,18 +373,36 @@ static int
 processInt (struct parser_state *par_state, const char *base0,
 	    const char *num0, const char *exp0)
 {
-  ULONGEST result;
   long exp;
   int base;
-  const char *trailer;
+  /* For the based literal with an "f" prefix, we'll return a
+     floating-point number.  This counts the the number of "l"s seen,
+     to decide the width of the floating-point number to return.  -1
+     means no "f".  */
+  int floating_point_l_count = -1;
 
   if (base0 == NULL)
     base = 10;
   else
     {
-      base = strtol (base0, (char **) NULL, 10);
+      char *end_of_base;
+      base = strtol (base0, &end_of_base, 10);
       if (base < 2 || base > 16)
 	error (_("Invalid base: %d."), base);
+      while (*end_of_base == 'l')
+	{
+	  ++floating_point_l_count;
+	  ++end_of_base;
+	}
+      /* This assertion is ensured by the pattern.  */
+      gdb_assert (floating_point_l_count == -1 || *end_of_base == 'f');
+      if (*end_of_base == 'f')
+	{
+	  ++end_of_base;
+	  ++floating_point_l_count;
+	}
+      /* This assertion is ensured by the pattern.  */
+      gdb_assert (*end_of_base == '#');
     }
 
   if (exp0 == NULL)
@@ -359,55 +410,91 @@ processInt (struct parser_state *par_sta
   else
     exp = strtol(exp0, (char **) NULL, 10);
 
-  errno = 0;
-  result = strtoulst (num0, &trailer, base);
-  if (errno == ERANGE)
-    error (_("Integer literal out of range"));
-  if (isxdigit(*trailer))
-    error (_("Invalid digit `%c' in based literal"), *trailer);
+  gdb_mpz result;
+  while (isxdigit (*num0))
+    {
+      int dig = fromhex (*num0);
+      if (dig >= base)
+	error (_("Invalid digit `%c' in based literal"), *num0);
+      result *= base;
+      result += dig;
+      ++num0;
+    }
 
   while (exp > 0)
     {
-      if (result > (ULONG_MAX / base))
-	error (_("Integer literal out of range"));
       result *= base;
       exp -= 1;
     }
 
-  if ((result >> (gdbarch_int_bit (par_state->gdbarch ())-1)) == 0)
-    yylval.typed_val.type = type_int (par_state);
-  else if ((result >> (gdbarch_long_bit (par_state->gdbarch ())-1)) == 0)
-    yylval.typed_val.type = type_long (par_state);
-  else if (((result >> (gdbarch_long_bit (par_state->gdbarch ())-1)) >> 1) == 0)
+  if (floating_point_l_count > -1)
     {
-      /* We have a number representable as an unsigned integer quantity.
-         For consistency with the C treatment, we will treat it as an
-	 anonymous modular (unsigned) quantity.  Alas, the types are such
-	 that we need to store .val as a signed quantity.  Sorry
-         for the mess, but C doesn't officially guarantee that a simple
-         assignment does the trick (no, it doesn't; read the reference manual).
-       */
-      yylval.typed_val.type
-	= builtin_type (par_state->gdbarch ())->builtin_unsigned_long;
-      if (result & LONGEST_SIGN)
-	yylval.typed_val.val =
-	  (LONGEST) (result & ~LONGEST_SIGN)
-	  - (LONGEST_SIGN>>1) - (LONGEST_SIGN>>1);
+      struct type *fp_type;
+      if (floating_point_l_count == 0)
+	fp_type = language_lookup_primitive_type (par_state->language (),
+						  par_state->gdbarch (),
+						  "float");
+      else if (floating_point_l_count == 1)
+	fp_type = language_lookup_primitive_type (par_state->language (),
+						  par_state->gdbarch (),
+						  "long_float");
       else
-	yylval.typed_val.val = (LONGEST) result;
-      return INT;
+	{
+	  /* This assertion is ensured by the pattern.  */
+	  gdb_assert (floating_point_l_count == 2);
+	  fp_type = language_lookup_primitive_type (par_state->language (),
+						    par_state->gdbarch (),
+						    "long_long_float");
+	}
+
+      yylval.typed_val_float.type = fp_type;
+      result.write (gdb::make_array_view (yylval.typed_val_float.val,
+					  fp_type->length ()),
+		    type_byte_order (fp_type),
+		    true);
+
+      return FLOAT;
     }
+
+  const gdb_mpz *value = ada_parser->push_integer (std::move (result));
+
+  int int_bits = gdbarch_int_bit (par_state->gdbarch ());
+  int long_bits = gdbarch_long_bit (par_state->gdbarch ());
+  int long_long_bits = gdbarch_long_long_bit (par_state->gdbarch ());
+
+  if (fits_in_type (1, *value, int_bits, true))
+    yylval.typed_val.type = parse_type (par_state)->builtin_int;
+  else if (fits_in_type (1, *value, long_bits, true))
+    yylval.typed_val.type = parse_type (par_state)->builtin_long;
+  else if (fits_in_type (1, *value, long_bits, false))
+    yylval.typed_val.type
+      = builtin_type (par_state->gdbarch ())->builtin_unsigned_long;
+  else if (fits_in_type (1, *value, long_long_bits, true))
+    yylval.typed_val.type = parse_type (par_state)->builtin_long_long;
+  else if (fits_in_type (1, *value, long_long_bits, false))
+    yylval.typed_val.type
+      = builtin_type (par_state->gdbarch ())->builtin_unsigned_long_long;
+  else if (fits_in_type (1, *value, 128, true))
+    yylval.typed_val.type
+      = language_lookup_primitive_type (par_state->language (),
+					par_state->gdbarch (),
+					"long_long_long_integer");
+  else if (fits_in_type (1, *value, 128, false))
+    yylval.typed_val.type
+      = language_lookup_primitive_type (par_state->language (),
+					par_state->gdbarch (),
+					"unsigned_long_long_long_integer");
   else
-    yylval.typed_val.type = type_long_long (par_state);
+    error (_("Integer literal out of range"));
 
-  yylval.typed_val.val = (LONGEST) result;
+  yylval.typed_val.val = value;
   return INT;
 }
 
 static int
 processReal (struct parser_state *par_state, const char *num0)
 {
-  yylval.typed_val_float.type = type_long_double (par_state);
+  yylval.typed_val_float.type = parse_type (par_state)->builtin_long_double;
 
   bool parsed = parse_float (num0, strlen (num0),
 			     yylval.typed_val_float.type,
@@ -423,7 +510,7 @@ processReal (struct parser_state *par_st
    encoded and the resulting name is equal to it.  Similarly, if the name
    starts with '<', it is copied verbatim.  Otherwise, it differs
    from NAME0 in that:
-    + Characters between '...' are transfered verbatim to yylval.ssym.
+    + Characters between '...' are transferred verbatim to yylval.ssym.
     + Trailing "'" characters in quoted sequences are removed (a leading quote is
       preserved to indicate that the name is not to be GNAT-encoded).
     + Unquoted whitespace is removed.
@@ -435,7 +522,7 @@ processReal (struct parser_state *par_st
 static struct stoken
 processId (const char *name0, int len)
 {
-  char *name = (char *) obstack_alloc (&temp_parse_space, len + 11);
+  char *name = (char *) obstack_alloc (&ada_parser->temp_space, len + 11);
   int i0, i;
   struct stoken result;
 
@@ -451,33 +538,33 @@ processId (const char *name0, int len)
       return result;
     }
 
+  bool in_quotes = false;
   i = i0 = 0;
   while (i0 < len)
     {
-      if (isalnum (name0[i0]))
+      if (name0[i0] == COMPLETE_CHAR)
+	{
+	  /* Just ignore.  */
+	  ++i0;
+	}
+      else if (in_quotes)
+	name[i++] = name0[i0++];
+      else if (isalnum (name0[i0]))
 	{
 	  name[i] = tolower (name0[i0]);
 	  i += 1; i0 += 1;
 	}
-      else switch (name0[i0])
+      else if (isspace (name0[i0]))
+	i0 += 1;
+      else if (name0[i0] == '\'')
 	{
-	default:
-	  name[i] = name0[i0];
-	  i += 1; i0 += 1;
-	  break;
-	case ' ': case '\t':
-	  i0 += 1;
-	  break;
-	case '\'':
-	  do
-	    {
-	      name[i] = name0[i0];
-	      i += 1; i0 += 1;
-	    }
-	  while (i0 < len && name0[i0] != '\'');
-	  i0 += 1;
-	  break;
+	  /* Copy the starting quote, but not the ending quote.  */
+	  if (!in_quotes)
+	    name[i++] = name0[i0++];
+	  in_quotes = !in_quotes;
 	}
+      else
+	name[i++] = name0[i0++];
     }
   name[i] = '\000';
 
@@ -497,7 +584,7 @@ processString (const char *text, int len
   const char *lim = text + len;
   struct stoken result;
 
-  q = (char *) obstack_alloc (&temp_parse_space, len);
+  q = (char *) obstack_alloc (&ada_parser->temp_space, len);
   result.ptr = q;
   p = text;
   while (p < lim)
@@ -511,10 +598,12 @@ processString (const char *text, int len
 	     }
            else
 	     {
-               int chr;
-	       sscanf (p+2, "%2x", &chr);
+	       const char *end;
+	       ULONGEST chr = strtoulst (p + 2, &end, 16);
+	       if (chr > 0xff)
+		 error (_("wide strings are not yet supported"));
 	       *q = (char) chr;
-	       p += 5;
+	       p = end + 1;
 	     }
          }
        else
@@ -571,7 +660,7 @@ subseqMatch (const char *subseq, const c
 }
 
 
-static struct { const char *name; int code; }
+static const struct { const char *name; int code; }
 attributes[] = {
   { "address", TICK_ADDRESS },
   { "unchecked_access", TICK_ACCESS },
@@ -583,12 +672,14 @@ attributes[] = {
   { "max", TICK_MAX },
   { "min", TICK_MIN },
   { "modulus", TICK_MODULUS },
+  { "object_size", TICK_OBJECT_SIZE },
   { "pos", TICK_POS },
   { "range", TICK_RANGE },
   { "size", TICK_SIZE },
   { "tag", TICK_TAG },
   { "val", TICK_VAL },
-  { NULL, -1 }
+  { "enum_rep", TICK_ENUM_REP },
+  { "enum_val", TICK_ENUM_VAL },
 };
 
 /* Return the syntactic code corresponding to the attribute name or
@@ -597,24 +688,53 @@ attributes[] = {
 static int
 processAttribute (const char *str)
 {
-  int i, k;
+  gdb_assert (*str == '\'');
+  ++str;
+  while (isspace (*str))
+    ++str;
 
-  for (i = 0; attributes[i].code != -1; i += 1)
-    if (strcasecmp (str, attributes[i].name) == 0)
-      return attributes[i].code;
+  int len = strlen (str);
+  if (len > 0 && str[len - 1] == COMPLETE_CHAR)
+    {
+      /* This is enforced by YY_INPUT.  */
+      gdb_assert (pstate->parse_completion);
+      yylval.sval.ptr = obstack_strndup (&ada_parser->temp_space,
+					 str, len - 1);
+      yylval.sval.length = len - 1;
+      return TICK_COMPLETE;
+    }
 
-  for (i = 0, k = -1; attributes[i].code != -1; i += 1)
-    if (subseqMatch (str, attributes[i].name))
+  for (const auto &item : attributes)
+    if (strcasecmp (str, item.name) == 0)
+      return item.code;
+
+  std::optional<int> found;
+  for (const auto &item : attributes)
+    if (subseqMatch (str, item.name))
       {
-	if (k == -1)
-	  k = i;
+	if (!found.has_value ())
+	  found = item.code;
 	else
 	  error (_("ambiguous attribute name: `%s'"), str);
       }
-  if (k == -1)
+  if (!found.has_value ())
     error (_("unrecognized attribute: `%s'"), str);
 
-  return attributes[k].code;
+  return *found;
+}
+
+bool
+ada_tick_completer::complete (struct expression *exp,
+			      completion_tracker &tracker)
+{
+  completion_list output;
+  for (const auto &item : attributes)
+    {
+      if (strncasecmp (item.name, m_name.c_str (), m_name.length ()) == 0)
+	output.emplace_back (xstrdup (item.name));
+    }
+  tracker.add_completions (std::move (output));
+  return true;
 }
 
 /* Back up lexptr by yyleng and then to the rightmost occurrence 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.20200303/gdb/ada-operator.def ./gdb/ada-operator.def
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-operator.def	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-operator.def	1970-01-01 00:00:00.000000000 +0000
@@ -1,98 +0,0 @@
-/* Ada language operator definitions for GDB, the GNU debugger.
-
-   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/>.  */
-
-/* X IN A'RANGE(N).  N is an immediate operand, surrounded by 
-   BINOP_IN_BOUNDS before and after.  A is an array, X an index 
-   value.  Evaluates to true iff X is within range of the Nth
-   dimension (1-based) of A.  (A multi-dimensional array
-   type is represented as array of array of ...) */
-OP (BINOP_IN_BOUNDS)
-
-/* X IN L .. U.  True iff L <= X <= U.  */
-OP (TERNOP_IN_RANGE)
-
-/* Ada attributes ('Foo). */
-OP (OP_ATR_FIRST)
-OP (OP_ATR_LAST)
-OP (OP_ATR_LENGTH)
-OP (OP_ATR_IMAGE)
-OP (OP_ATR_MAX)
-OP (OP_ATR_MIN)
-OP (OP_ATR_MODULUS)
-OP (OP_ATR_POS)
-OP (OP_ATR_SIZE)
-OP (OP_ATR_TAG)
-OP (OP_ATR_VAL)
-
-/* Ada type qualification.  It is encoded as for UNOP_CAST, above, 
-   and denotes the TYPE'(EXPR) construct. */
-OP (UNOP_QUAL)
-
-/* X IN TYPE.  The `TYPE' argument is immediate, with 
-   UNOP_IN_RANGE before and after it. True iff X is a member of 
-   type TYPE (typically a subrange). */
-OP (UNOP_IN_RANGE)
-
-/* An aggregate.   A single immediate operand, N>0, gives
-   the number of component specifications that follow.  The
-   immediate operand is followed by a second OP_AGGREGATE.  
-   Next come N component specifications.  A component
-   specification is either an OP_OTHERS (others=>...), an
-   OP_CHOICES (for named associations), or other expression (for
-   positional aggregates only).  Aggregates currently
-   occur only as the right sides of assignments. */
-OP (OP_AGGREGATE)
-
-/* An others clause.  Followed by a single expression. */
-OP (OP_OTHERS)
-
-/* An aggregate component association.  A single immediate operand, N, 
-   gives the number of choices that follow.  This is followed by a second
-   OP_CHOICES operator.  Next come N operands, each of which is an
-   expression, an OP_DISCRETE_RANGE, or an OP_NAME---the latter 
-   for a simple name that must be a record component name and does 
-   not correspond to a single existing symbol.  After the N choice 
-   indicators comes an expression giving the value.
-
-   In an aggregate such as (X => E1, ...), where X is a simple
-   name, X could syntactically be either a component_selector_name 
-   or an expression used as a discrete_choice, depending on the
-   aggregate's type context.  Since this is not known at parsing
-   time, we don't attempt to disambiguate X if it has multiple
-   definitions, but instead supply an OP_NAME.  If X has a single
-   definition, we represent it with an OP_VAR_VALUE, even though
-   it may turn out to be within a record aggregate.  Aggregate 
-   evaluation can use either OP_NAMEs or OP_VAR_VALUEs to get a
-   record field name, and can evaluate OP_VAR_VALUE normally to
-   get its value as an expression.  Unfortunately, we lose out in
-   cases where X has multiple meanings and is part of an array
-   aggregate.  I hope these are not common enough to annoy users,
-   who can work around the problem in any case by putting
-   parentheses around X. */
-OP (OP_CHOICES)
-
-/* A positional aggregate component association.  The operator is 
-   followed by a single integer indicating the position in the 
-   aggregate (0-based), followed by a second OP_POSITIONAL.  Next 
-   follows a single expression giving the component value.  */
-OP (OP_POSITIONAL)
-
-/* A range of values.  Followed by two expressions giving the
-   upper and lower bounds of the range. */
-OP (OP_DISCRETE_RANGE)
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-tasks.c ./gdb/ada-tasks.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-tasks.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-tasks.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,9 +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/>.  */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "observable.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "target.h"
 #include "ada-lang.h"
 #include "gdbcore.h"
@@ -64,7 +64,7 @@ enum task_states
 };
 
 /* A short description corresponding to each possible task state.  */
-static const char *task_states[] = {
+static const char * const task_states[] = {
   N_("Unactivated"),
   N_("Runnable"),
   N_("Terminated"),
@@ -85,8 +85,22 @@ static const char *task_states[] = {
   N_("Selective Wait")
 };
 
+/* Return a string representing the task state.  */
+static const char *
+get_state (unsigned value)
+{
+  if (value >= 0
+      && value <= ARRAY_SIZE (task_states)
+      && task_states[value][0] != '\0')
+    return _(task_states[value]);
+
+  static char buffer[100];
+  xsnprintf (buffer, sizeof (buffer), _("Unknown task state: %d"), value);
+  return buffer;
+}
+
 /* A longer description corresponding to each possible task state.  */
-static const char *long_task_states[] = {
+static const char * const long_task_states[] = {
   N_("Unactivated"),
   N_("Runnable"),
   N_("Terminated"),
@@ -107,6 +121,21 @@ static const char *long_task_states[] =
   N_("Blocked in selective wait statement")
 };
 
+/* Return a string representing the task state.  This uses the long
+   descriptions.  */
+static const char *
+get_long_state (unsigned value)
+{
+  if (value >= 0
+      && value <= ARRAY_SIZE (long_task_states)
+      && long_task_states[value][0] != '\0')
+    return _(long_task_states[value]);
+
+  static char buffer[100];
+  xsnprintf (buffer, sizeof (buffer), _("Unknown task state: %d"), value);
+  return buffer;
+}
+
 /* The index of certain important fields in the Ada Task Control Block
    record and sub-records.  */
 
@@ -159,10 +188,14 @@ struct ada_tasks_pspace_data
 
   /* The index of various fields in the ATCB record and sub-records.  */
   struct atcb_fieldnos atcb_fieldno {};
+
+  /* On some systems, gdbserver applies an offset to the CPU that is
+     reported.  */
+  unsigned int cpu_id_offset = 0;
 };
 
 /* Key to our per-program-space data.  */
-static const struct program_space_key<ada_tasks_pspace_data>
+static const registry<program_space>::key<ada_tasks_pspace_data>
   ada_tasks_pspace_data_handle;
 
 /* The kind of data structure used by the runtime to store the list
@@ -203,9 +236,9 @@ struct ada_tasks_inferior_data
      the list of Ada tasks.  The value of this field influences
      the interpretation of the known_tasks_addr field below:
        - ADA_TASKS_UNKNOWN: The value of known_tasks_addr hasn't
-         been determined yet;
+	 been determined yet;
        - ADA_TASKS_NOT_FOUND: The program probably does not use tasking
-         and the known_tasks_addr is irrelevant;
+	 and the known_tasks_addr is irrelevant;
        - ADA_TASKS_ARRAY: The known_tasks is an array;
        - ADA_TASKS_LIST: The known_tasks is a list.  */
   enum ada_known_tasks_kind known_tasks_kind = ADA_TASKS_UNKNOWN;
@@ -233,12 +266,12 @@ struct ada_tasks_inferior_data
      reference it - this number is printed beside each task in the tasks
      info listing displayed by "info tasks".  This number is equal to
      its index in the vector + 1.  Reciprocally, to compute the index
-     of a task in the vector, we need to substract 1 from its number.  */
+     of a task in the vector, we need to subtract 1 from its number.  */
   std::vector<ada_task_info> task_list;
 };
 
 /* Key to our per-inferior data.  */
-static const struct inferior_key<ada_tasks_inferior_data>
+static const registry<inferior>::key<ada_tasks_inferior_data>
   ada_tasks_inferior_data_handle;
 
 /* Return a string with TASKNO followed by the task name if TASK_INFO
@@ -277,7 +310,7 @@ get_ada_tasks_pspace_data (struct progra
 
    Note that we could use an observer of the inferior-created event
    to make sure that the ada-tasks per-inferior data always exists.
-   But we prefered this approach, as it avoids this entirely as long
+   But we preferred this approach, as it avoids this entirely as long
    as the user does not use any of the tasking features.  This is
    quite possible, particularly in the case where the inferior does
    not use tasking.  */
@@ -324,7 +357,7 @@ get_task_number_from_id (CORE_ADDR task_
   for (int i = 0; i < data->task_list.size (); i++)
     {
       if (data->task_list[i].task_id == task_id)
-        return i + 1;
+	return i + 1;
     }
 
   /* Task not found.  Return 0.  */
@@ -376,7 +409,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;
 
@@ -386,7 +419,7 @@ iterate_over_live_ada_tasks (ada_task_li
   for (ada_task_info &task : data->task_list)
     {
       if (!ada_task_is_alive (&task))
-        continue;
+	continue;
       iterator (&task);
     }
 }
@@ -397,7 +430,7 @@ iterate_over_live_ada_tasks (ada_task_li
 static void
 value_as_string (char *dest, struct value *val, int length)
 {
-  memcpy (dest, value_contents (val), length);
+  memcpy (dest, val->contents ().data (), length);
   dest[length] = '\0';
 }
 
@@ -424,17 +457,17 @@ read_fat_string_value (char *dest, struc
      to extract the string from the fat string.  */
   if (initialize_fieldnos)
     {
-      struct type *type = value_type (val);
+      struct type *type = val->type ();
       struct type *bounds_type;
 
       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_TARGET_TYPE (bounds_type);
-      if (TYPE_CODE (bounds_type) != TYPE_CODE_STRUCT)
-        error (_("Unknown task name format. Aborting"));
+      bounds_type = type->field (bounds_fieldno).type ();
+      if (bounds_type->code () == TYPE_CODE_PTR)
+	bounds_type = bounds_type->target_type ();
+      if (bounds_type->code () != TYPE_CODE_STRUCT)
+	error (_("Unknown task name format. Aborting"));
       upper_bound_fieldno = ada_get_field_index (bounds_type, "UB0", 0);
 
       initialize_fieldnos = 0;
@@ -451,7 +484,7 @@ read_fat_string_value (char *dest, struc
 
   /* Extract LEN characters from the fat string.  */
   array_val = value_ind (value_field (val, array_fieldno));
-  read_memory (value_address (array_val), (gdb_byte *) dest, len);
+  read_memory (array_val->address (), (gdb_byte *) dest, len);
 
   /* Add the NUL character to close the string.  */
   dest[len] = '\0';
@@ -487,54 +520,55 @@ ada_get_tcb_types_info (void)
      C-like) lookups to get the first match.  */
 
   struct symbol *atcb_sym =
-    lookup_symbol_in_language (atcb_name, NULL, STRUCT_DOMAIN,
+    lookup_symbol_in_language (atcb_name, NULL, SEARCH_TYPE_DOMAIN,
 			       language_c, NULL).symbol;
   const struct symbol *common_atcb_sym =
-    lookup_symbol_in_language (common_atcb_name, NULL, STRUCT_DOMAIN,
+    lookup_symbol_in_language (common_atcb_name, NULL, SEARCH_TYPE_DOMAIN,
 			       language_c, NULL).symbol;
   const struct symbol *private_data_sym =
-    lookup_symbol_in_language (private_data_name, NULL, STRUCT_DOMAIN,
+    lookup_symbol_in_language (private_data_name, NULL, SEARCH_TYPE_DOMAIN,
 			       language_c, NULL).symbol;
   const struct symbol *entry_call_record_sym =
-    lookup_symbol_in_language (entry_call_record_name, NULL, STRUCT_DOMAIN,
+    lookup_symbol_in_language (entry_call_record_name, NULL,
+			       SEARCH_TYPE_DOMAIN,
 			       language_c, NULL).symbol;
 
-  if (atcb_sym == NULL || atcb_sym->type == NULL)
+  if (atcb_sym == NULL || atcb_sym->type () == NULL)
     {
       /* In Ravenscar run-time libs, the  ATCB does not have a dynamic
-         size, so the symbol name differs.  */
+	 size, so the symbol name differs.  */
       atcb_sym = lookup_symbol_in_language (atcb_name_fixed, NULL,
-					    STRUCT_DOMAIN, language_c,
+					    SEARCH_TYPE_DOMAIN, language_c,
 					    NULL).symbol;
 
-      if (atcb_sym == NULL || atcb_sym->type == NULL)
-        return _("Cannot find Ada_Task_Control_Block type");
+      if (atcb_sym == NULL || atcb_sym->type () == NULL)
+	return _("Cannot find Ada_Task_Control_Block type");
 
-      type = atcb_sym->type;
+      type = atcb_sym->type ();
     }
   else
     {
       /* Get a static representation of the type record
-         Ada_Task_Control_Block.  */
-      type = atcb_sym->type;
+	 Ada_Task_Control_Block.  */
+      type = atcb_sym->type ();
       type = ada_template_to_fixed_record_type_1 (type, NULL, 0, NULL, 0);
     }
 
-  if (common_atcb_sym == NULL || common_atcb_sym->type == NULL)
+  if (common_atcb_sym == NULL || common_atcb_sym->type () == NULL)
     return _("Cannot find Common_ATCB type");
-  if (private_data_sym == NULL || private_data_sym->type == NULL)
+  if (private_data_sym == NULL || private_data_sym->type ()== NULL)
     return _("Cannot find Private_Data type");
-  if (entry_call_record_sym == NULL || entry_call_record_sym->type == NULL)
+  if (entry_call_record_sym == NULL || entry_call_record_sym->type () == NULL)
     return _("Cannot find Entry_Call_Record type");
 
   /* Get the type for Ada_Task_Control_Block.Common.  */
-  common_type = common_atcb_sym->type;
+  common_type = common_atcb_sym->type ();
 
   /* Get the type for Ada_Task_Control_Bloc.Common.Call.LL.  */
-  ll_type = private_data_sym->type;
+  ll_type = private_data_sym->type ();
 
   /* Get the type for Common_ATCB.Call.all.  */
-  call_type = entry_call_record_sym->type;
+  call_type = entry_call_record_sym->type ();
 
   /* Get the field indices.  */
   fieldnos.common = ada_get_field_index (type, "common", 0);
@@ -547,7 +581,7 @@ ada_get_tcb_types_info (void)
   fieldnos.image = ada_get_field_index (common_type, "task_image", 1);
   fieldnos.image_len = ada_get_field_index (common_type, "task_image_len", 1);
   fieldnos.activation_link = ada_get_field_index (common_type,
-                                                  "activation_link", 1);
+						  "activation_link", 1);
   fieldnos.call = ada_get_field_index (common_type, "call", 1);
   fieldnos.ll = ada_get_field_index (common_type, "ll", 0);
   fieldnos.base_cpu = ada_get_field_index (common_type, "base_cpu", 0);
@@ -564,6 +598,19 @@ ada_get_tcb_types_info (void)
   if (fieldnos.ll_lwp < 0)
     fieldnos.ll_lwp = ada_get_field_index (ll_type, "thread_id", 1);
 
+  /* Check for the CPU offset.  */
+  bound_minimal_symbol first_id_sym
+    = lookup_minimal_symbol (current_program_space, "__gnat_gdb_cpu_first_id");
+  unsigned int first_id = 0;
+  if (first_id_sym.minsym != nullptr)
+    {
+      CORE_ADDR addr = first_id_sym.value_address ();
+      gdbarch *arch = current_inferior ()->arch ();
+      /* This symbol always has type uint32_t.  */
+      struct type *u32type = builtin_type (arch)->builtin_uint32;
+      first_id = value_as_long (value_at (u32type, addr));
+    }
+
   /* Set all the out parameters all at once, now that we are certain
      that there are no potential error() anymore.  */
   pspace_data = get_ada_tasks_pspace_data (current_program_space);
@@ -573,6 +620,7 @@ ada_get_tcb_types_info (void)
   pspace_data->atcb_ll_type = ll_type;
   pspace_data->atcb_call_type = call_type;
   pspace_data->atcb_fieldno = fieldnos;
+  pspace_data->cpu_id_offset = first_id;
   return NULL;
 }
 
@@ -583,7 +631,7 @@ ada_get_tcb_types_info (void)
 static ptid_t
 ptid_from_atcb_common (struct value *common_value)
 {
-  long thread = 0;
+  ULONGEST thread;
   CORE_ADDR lwp = 0;
   struct value *ll_value;
   ptid_t ptid;
@@ -658,15 +706,13 @@ read_atcb (CORE_ADDR task_id, struct ada
   if (pspace_data->atcb_fieldno.image_len == -1)
     {
       if (pspace_data->atcb_fieldno.image >= 0)
-        read_fat_string_value (task_info->name,
-                               value_field (common_value,
+	read_fat_string_value (task_info->name,
+			       value_field (common_value,
 					    pspace_data->atcb_fieldno.image),
-                               sizeof (task_info->name) - 1);
+			       sizeof (task_info->name) - 1);
       else
 	{
-	  struct bound_minimal_symbol msym;
-
-	  msym = lookup_minimal_symbol_by_pc (task_id);
+	  bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (task_id);
 	  if (msym.minsym)
 	    {
 	      const char *full_name = msym.minsym->linkage_name ();
@@ -679,7 +725,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
@@ -696,7 +743,7 @@ read_atcb (CORE_ADDR task_id, struct ada
 				pspace_data->atcb_fieldno.image_len));
 
       value_as_string (task_info->name,
-                       value_field (common_value,
+		       value_field (common_value,
 				    pspace_data->atcb_fieldno.image),
 		       len);
     }
@@ -726,22 +773,22 @@ read_atcb (CORE_ADDR task_id, struct ada
       && pspace_data->atcb_fieldno.entry_calls > 0)
     {
       /* Let My_ATCB be the Ada task control block of a task calling the
-         entry of another task; then the Task_Id of the called task is
-         in My_ATCB.Entry_Calls (My_ATCB.ATC_Nesting_Level).Called_Task.  */
+	 entry of another task; then the Task_Id of the called task is
+	 in My_ATCB.Entry_Calls (My_ATCB.ATC_Nesting_Level).Called_Task.  */
       atc_nesting_level_value =
-        value_field (tcb_value, pspace_data->atcb_fieldno.atc_nesting_level);
+	value_field (tcb_value, pspace_data->atcb_fieldno.atc_nesting_level);
       entry_calls_value =
-        ada_coerce_to_simple_array_ptr
+	ada_coerce_to_simple_array_ptr
 	  (value_field (tcb_value, pspace_data->atcb_fieldno.entry_calls));
       entry_calls_value_element =
-        value_subscript (entry_calls_value,
+	value_subscript (entry_calls_value,
 			 value_as_long (atc_nesting_level_value));
       called_task_fieldno =
-        ada_get_field_index (value_type (entry_calls_value_element),
-                             "called_task", 0);
+	ada_get_field_index (entry_calls_value_element->type (),
+			     "called_task", 0);
       task_info->called_task =
-        value_as_address (value_field (entry_calls_value_element,
-                                       called_task_fieldno));
+	value_as_address (value_field (entry_calls_value_element,
+				       called_task_fieldno));
     }
 
   /* If the ATCB contains some information about RV callers, then
@@ -750,26 +797,27 @@ read_atcb (CORE_ADDR task_id, struct ada
   if (pspace_data->atcb_fieldno.call >= 0)
     {
       /* Get the ID of the caller task from Common_ATCB.Call.all.Self.
-         If Common_ATCB.Call is null, then there is no caller.  */
+	 If Common_ATCB.Call is null, then there is no caller.  */
       const CORE_ADDR call =
-        value_as_address (value_field (common_value,
+	value_as_address (value_field (common_value,
 				       pspace_data->atcb_fieldno.call));
       struct value *call_val;
 
       if (call != 0)
-        {
-          call_val =
-            value_from_contents_and_address (pspace_data->atcb_call_type,
+	{
+	  call_val =
+	    value_from_contents_and_address (pspace_data->atcb_call_type,
 					     NULL, call);
-          task_info->caller_task =
-            value_as_address
+	  task_info->caller_task =
+	    value_as_address
 	      (value_field (call_val, pspace_data->atcb_fieldno.call_self));
-        }
+	}
     }
 
   task_info->base_cpu
-    = value_as_long (value_field (common_value,
-				  pspace_data->atcb_fieldno.base_cpu));
+    = (pspace_data->cpu_id_offset
+      + value_as_long (value_field (common_value,
+				    pspace_data->atcb_fieldno.base_cpu)));
 
   /* And finally, compute the task ptid.  Note that there is not point
      in computing it if the task is no longer alive, in which case
@@ -799,7 +847,7 @@ add_ada_task (CORE_ADDR task_id, struct
 static bool
 read_known_tasks_array (struct ada_tasks_inferior_data *data)
 {
-  const int target_ptr_byte = TYPE_LENGTH (data->known_tasks_element);
+  const int target_ptr_byte = data->known_tasks_element->length ();
   const int known_tasks_size = target_ptr_byte * data->known_tasks_length;
   gdb_byte *known_tasks = (gdb_byte *) alloca (known_tasks_size);
   int i;
@@ -810,11 +858,11 @@ read_known_tasks_array (struct ada_tasks
   for (i = 0; i < data->known_tasks_length; i++)
     {
       CORE_ADDR task_id =
-        extract_typed_address (known_tasks + i * target_ptr_byte,
+	extract_typed_address (known_tasks + i * target_ptr_byte,
 			       data->known_tasks_element);
 
       if (task_id != 0)
-        add_ada_task (task_id, current_inferior ());
+	add_ada_task (task_id, current_inferior ());
     }
 
   return true;
@@ -826,7 +874,7 @@ read_known_tasks_array (struct ada_tasks
 static bool
 read_known_tasks_list (struct ada_tasks_inferior_data *data)
 {
-  const int target_ptr_byte = TYPE_LENGTH (data->known_tasks_element);
+  const int target_ptr_byte = data->known_tasks_element->length ();
   gdb_byte *known_tasks = (gdb_byte *) alloca (target_ptr_byte);
   CORE_ADDR task_id;
   const struct ada_tasks_pspace_data *pspace_data
@@ -852,7 +900,7 @@ read_known_tasks_list (struct ada_tasks_
       common_value = value_field (tcb_value, pspace_data->atcb_fieldno.common);
       task_id = value_as_address
 		  (value_field (common_value,
-                                pspace_data->atcb_fieldno.activation_link));
+				pspace_data->atcb_fieldno.activation_link));
     }
 
   return true;
@@ -864,7 +912,6 @@ read_known_tasks_list (struct ada_tasks_
 static void
 ada_tasks_inferior_data_sniffer (struct ada_tasks_inferior_data *data)
 {
-  struct bound_minimal_symbol msym;
   struct symbol *sym;
 
   /* Return now if already set.  */
@@ -873,34 +920,37 @@ ada_tasks_inferior_data_sniffer (struct
 
   /* Try array.  */
 
-  msym = lookup_minimal_symbol (KNOWN_TASKS_NAME, NULL, NULL);
+  bound_minimal_symbol msym
+    = lookup_minimal_symbol (current_program_space, KNOWN_TASKS_NAME);
   if (msym.minsym != NULL)
     {
       data->known_tasks_kind = ADA_TASKS_ARRAY;
-      data->known_tasks_addr = BMSYMBOL_VALUE_ADDRESS (msym);
+      data->known_tasks_addr = msym.value_address ();
 
       /* Try to get pointer type and array length from the symtab.  */
-      sym = lookup_symbol_in_language (KNOWN_TASKS_NAME, NULL, VAR_DOMAIN,
+      sym = lookup_symbol_in_language (KNOWN_TASKS_NAME, NULL,
+				       SEARCH_VAR_DOMAIN,
 				       language_c, NULL).symbol;
       if (sym != NULL)
 	{
 	  /* Validate.  */
-	  struct type *type = check_typedef (SYMBOL_TYPE (sym));
+	  struct type *type = check_typedef (sym->type ());
 	  struct type *eltype = NULL;
 	  struct type *idxtype = NULL;
 
-	  if (TYPE_CODE (type) == TYPE_CODE_ARRAY)
-	    eltype = check_typedef (TYPE_TARGET_TYPE (type));
+	  if (type->code () == TYPE_CODE_ARRAY)
+	    eltype = check_typedef (type->target_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.is_constant ()
+	      && idxtype->bounds ()->high.is_constant ())
 	    {
 	      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;
 	    }
 	}
@@ -910,7 +960,7 @@ ada_tasks_inferior_data_sniffer (struct
 	 contains debug information on the task type (due to implicit with of
 	 Ada.Tasking).  */
       data->known_tasks_element =
-	builtin_type (target_gdbarch ())->builtin_data_ptr;
+	builtin_type (current_inferior ()->arch ())->builtin_data_ptr;
       data->known_tasks_length = MAX_NUMBER_OF_KNOWN_TASKS;
       return;
     }
@@ -918,21 +968,22 @@ ada_tasks_inferior_data_sniffer (struct
 
   /* Try list.  */
 
-  msym = lookup_minimal_symbol (KNOWN_TASKS_LIST, NULL, NULL);
+  msym = lookup_minimal_symbol (current_program_space, KNOWN_TASKS_LIST);
   if (msym.minsym != NULL)
     {
       data->known_tasks_kind = ADA_TASKS_LIST;
-      data->known_tasks_addr = BMSYMBOL_VALUE_ADDRESS (msym);
+      data->known_tasks_addr = msym.value_address ();
       data->known_tasks_length = 1;
 
-      sym = lookup_symbol_in_language (KNOWN_TASKS_LIST, NULL, VAR_DOMAIN,
+      sym = lookup_symbol_in_language (KNOWN_TASKS_LIST, NULL,
+				       SEARCH_VAR_DOMAIN,
 				       language_c, NULL).symbol;
-      if (sym != NULL && SYMBOL_VALUE_ADDRESS (sym) != 0)
+      if (sym != NULL && sym->value_address () != 0)
 	{
 	  /* Validate.  */
-	  struct type *type = check_typedef (SYMBOL_TYPE (sym));
+	  struct type *type = check_typedef (sym->type ());
 
-	  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+	  if (type->code () == TYPE_CODE_PTR)
 	    {
 	      data->known_tasks_element = type;
 	      return;
@@ -941,7 +992,7 @@ ada_tasks_inferior_data_sniffer (struct
 
       /* Fallback to default values.  */
       data->known_tasks_element =
-	builtin_type (target_gdbarch ())->builtin_data_ptr;
+	builtin_type (current_inferior ()->arch ())->builtin_data_ptr;
       data->known_tasks_length = 1;
       return;
     }
@@ -997,7 +1048,7 @@ ada_build_task_list ()
 {
   struct ada_tasks_inferior_data *data;
 
-  if (!target_has_stack)
+  if (!target_has_stack ())
     error (_("Cannot inspect Ada tasks when program is not running"));
 
   data = get_ada_tasks_inferior_data (current_inferior ());
@@ -1106,12 +1157,12 @@ print_ada_task_info (struct ui_out *uiou
 	 to one task only, and this is not the task, skip
 	 to the next one.  */
       if (taskno_arg && taskno != taskno_arg)
-        continue;
+	continue;
 
       ui_out_emit_tuple tuple_emitter (uiout, NULL);
 
       /* Print a star if this task is the current task (or the task
-         currently selected).  */
+	 currently selected).  */
       if (task_info->ptid == inferior_ptid)
 	uiout->field_string ("current", "*");
       else
@@ -1126,9 +1177,9 @@ print_ada_task_info (struct ui_out *uiou
 
       /* Print the associated Thread ID.  */
       if (uiout->is_mi_like_p ())
-        {
+	{
 	  thread_info *thread = (ada_task_is_alive (task_info)
-				 ? find_thread_ptid (task_info->ptid)
+				 ? inf->find_thread (task_info->ptid)
 				 : nullptr);
 
 	  if (thread != NULL)
@@ -1143,9 +1194,9 @@ print_ada_task_info (struct ui_out *uiou
       /* Print the ID of the parent task.  */
       parent_id = get_task_number_from_id (task_info->parent, inf);
       if (parent_id)
-        uiout->field_signed ("parent-id", parent_id);
+	uiout->field_signed ("parent-id", parent_id);
       else
-        uiout->field_skip ("parent-id");
+	uiout->field_skip ("parent-id");
 
       /* Print the base priority of the task.  */
       uiout->field_signed ("priority", task_info->priority);
@@ -1162,11 +1213,11 @@ print_ada_task_info (struct ui_out *uiou
 			  get_task_number_from_id (task_info->called_task,
 						   inf));
       else
-	uiout->field_string ("state", task_states[task_info->state]);
+	uiout->field_string ("state", get_state (task_info->state));
 
       /* Finally, print the task name, without quotes around it, as mi like
 	 is not expecting quotes, and in non mi-like no need for quotes
-         as there is a specific column for the name.  */
+	 as there is a specific column for the name.  */
       uiout->field_fmt ("name",
 			(task_info->name[0] != '\0'
 			 ? ui_file_style ()
@@ -1199,26 +1250,27 @@ info_task (struct ui_out *uiout, const c
 
   if (taskno <= 0 || taskno > data->task_list.size ())
     error (_("Task ID %d not known.  Use the \"info tasks\" command to\n"
-             "see the IDs of currently known tasks"), taskno);
+	     "see the IDs of currently known tasks"), taskno);
   task_info = &data->task_list[taskno - 1];
 
   /* Print the Ada task ID.  */
-  printf_filtered (_("Ada Task: %s\n"),
-		   paddress (target_gdbarch (), task_info->task_id));
+  gdb_printf (_("Ada Task: %s\n"),
+	      paddress (current_inferior ()->arch (), task_info->task_id));
 
   /* Print the name of the task.  */
   if (task_info->name[0] != '\0')
-    printf_filtered (_("Name: %s\n"), task_info->name);
+    gdb_printf (_("Name: %s\n"), task_info->name);
   else
     fprintf_styled (gdb_stdout, metadata_style.style (), _("<no name>\n"));
 
   /* Print the TID and LWP.  */
-  printf_filtered (_("Thread: %#lx\n"), task_info->ptid.tid ());
-  printf_filtered (_("LWP: %#lx\n"), task_info->ptid.lwp ());
+  gdb_printf (_("Thread: 0x%s\n"), phex_nz (task_info->ptid.tid (),
+					    sizeof (ULONGEST)));
+  gdb_printf (_("LWP: %#lx\n"), task_info->ptid.lwp ());
 
   /* If set, print the base CPU.  */
   if (task_info->base_cpu != 0)
-    printf_filtered (_("Base CPU: %d\n"), task_info->base_cpu);
+    gdb_printf (_("Base CPU: %d\n"), task_info->base_cpu);
 
   /* Print who is the parent (if any).  */
   if (task_info->parent != 0)
@@ -1227,16 +1279,16 @@ info_task (struct ui_out *uiout, const c
     {
       struct ada_task_info *parent = &data->task_list[parent_taskno - 1];
 
-      printf_filtered (_("Parent: %d"), parent_taskno);
+      gdb_printf (_("Parent: %d"), parent_taskno);
       if (parent->name[0] != '\0')
-        printf_filtered (" (%s)", parent->name);
-      printf_filtered ("\n");
+	gdb_printf (" (%s)", parent->name);
+      gdb_printf ("\n");
     }
   else
-    printf_filtered (_("No parent\n"));
+    gdb_printf (_("No parent\n"));
 
   /* Print the base priority.  */
-  printf_filtered (_("Base Priority: %d\n"), task_info->priority);
+  gdb_printf (_("Base Priority: %d\n"), task_info->priority);
 
   /* print the task current state.  */
   {
@@ -1244,28 +1296,28 @@ info_task (struct ui_out *uiout, const c
 
     if (task_info->caller_task)
       {
-        target_taskno = get_task_number_from_id (task_info->caller_task, inf);
-        printf_filtered (_("State: Accepting rendezvous with %d"),
-                         target_taskno);
+	target_taskno = get_task_number_from_id (task_info->caller_task, inf);
+	gdb_printf (_("State: Accepting rendezvous with %d"),
+		    target_taskno);
       }
     else if (task_info->called_task)
       {
-        target_taskno = get_task_number_from_id (task_info->called_task, inf);
-        printf_filtered (_("State: Waiting on task %d's entry"),
-                         target_taskno);
+	target_taskno = get_task_number_from_id (task_info->called_task, inf);
+	gdb_printf (_("State: Waiting on task %d's entry"),
+		    target_taskno);
       }
     else
-      printf_filtered (_("State: %s"), _(long_task_states[task_info->state]));
+      gdb_printf (_("State: %s"), get_long_state (task_info->state));
 
     if (target_taskno)
       {
-        ada_task_info *target_task_info = &data->task_list[target_taskno - 1];
+	ada_task_info *target_task_info = &data->task_list[target_taskno - 1];
 
-        if (target_task_info->name[0] != '\0')
-          printf_filtered (" (%s)", target_task_info->name);
+	if (target_task_info->name[0] != '\0')
+	  gdb_printf (" (%s)", target_task_info->name);
       }
 
-    printf_filtered ("\n");
+    gdb_printf ("\n");
   }
 }
 
@@ -1295,15 +1347,15 @@ display_current_task_id (void)
   const int current_task = ada_get_task_number (inferior_thread ());
 
   if (current_task == 0)
-    printf_filtered (_("[Current task is unknown]\n"));
+    gdb_printf (_("[Current task is unknown]\n"));
   else
     {
       struct ada_tasks_inferior_data *data
 	= get_ada_tasks_inferior_data (current_inferior ());
       struct ada_task_info *task_info = &data->task_list[current_task - 1];
 
-      printf_filtered (_("[Current task is %s]\n"),
-		       task_to_str (current_task, task_info).c_str ());
+      gdb_printf (_("[Current task is %s]\n"),
+		  task_to_str (current_task, task_info).c_str ());
     }
 }
 
@@ -1319,7 +1371,7 @@ task_command_1 (const char *taskno_str,
 
   if (taskno <= 0 || taskno > data->task_list.size ())
     error (_("Task ID %d not known.  Use the \"info tasks\" command to\n"
-             "see the IDs of currently known tasks"), taskno);
+	     "see the IDs of currently known tasks"), taskno);
   task_info = &data->task_list[taskno - 1];
 
   if (!ada_task_is_alive (task_info))
@@ -1343,18 +1395,18 @@ 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 = inf->find_thread (task_info->ptid);
   if (tp == NULL)
     error (_("Unable to compute thread ID for task %s.\n"
-             "Cannot switch to this task."),
-           task_to_str (taskno, task_info).c_str ());
+	     "Cannot switch to this task."),
+	   task_to_str (taskno, task_info).c_str ());
 
   switch_to_thread (tp);
   ada_find_printable_frame (get_selected_frame (NULL));
-  printf_filtered (_("[Switching to task %s]\n"),
-		   task_to_str (taskno, task_info).c_str ());
+  gdb_printf (_("[Switching to task %s]\n"),
+	      task_to_str (taskno, task_info).c_str ());
   print_stack_frame (get_selected_frame (NULL),
-                     frame_relative_level (get_selected_frame (NULL)),
+		     frame_relative_level (get_selected_frame (NULL)),
 		     SRC_AND_LOC, 1);
 }
 
@@ -1395,7 +1447,7 @@ ada_task_list_changed (struct inferior *
 static void
 ada_tasks_invalidate_pspace_data (struct program_space *pspace)
 {
-  get_ada_tasks_pspace_data (pspace)->initialized_p = 0;
+  ada_tasks_pspace_data_handle.clear (pspace);
 }
 
 /* Invalidate the per-inferior data.  */
@@ -1403,70 +1455,257 @@ ada_tasks_invalidate_pspace_data (struct
 static void
 ada_tasks_invalidate_inferior_data (struct inferior *inf)
 {
-  struct ada_tasks_inferior_data *data = get_ada_tasks_inferior_data (inf);
-
-  data->known_tasks_kind = ADA_TASKS_UNKNOWN;
-  data->task_list_valid_p = false;
+  ada_tasks_inferior_data_handle.clear (inf);
 }
 
 /* The 'normal_stop' observer notification callback.  */
 
 static void
-ada_tasks_normal_stop_observer (struct bpstats *unused_args, int unused_args2)
+ada_tasks_normal_stop_observer (struct bpstat *unused_args, int unused_args2)
 {
   /* The inferior has been resumed, and just stopped. This means that
      our task_list needs to be recomputed before it can be used again.  */
   ada_task_list_changed (current_inferior ());
 }
 
-/* A routine to be called when the objfiles have changed.  */
+/* Clear data associated to PSPACE and all inferiors using that program
+   space.  */
+
+static void
+ada_tasks_clear_pspace_data (program_space *pspace)
+{
+  /* The associated program-space data might have changed after
+     this objfile was added.  Invalidate all cached data.  */
+  ada_tasks_invalidate_pspace_data (pspace);
+
+  /* Invalidate the per-inferior cache for all inferiors using
+     this program space.  */
+  for (inferior *inf : all_inferiors ())
+    if (inf->pspace == pspace)
+      ada_tasks_invalidate_inferior_data (inf);
+}
+
+/* Called when a new objfile was added.  */
+
+static void
+ada_tasks_new_objfile_observer (objfile *objfile)
+{
+  ada_tasks_clear_pspace_data (objfile->pspace ());
+}
+
+/* The qcs command line flags for the "task apply" commands.  Keep
+   this in sync with the "frame apply" commands.  */
+
+using qcs_flag_option_def
+  = gdb::option::flag_option_def<qcs_flags>;
+
+static const gdb::option::option_def task_qcs_flags_option_defs[] = {
+  qcs_flag_option_def {
+    "q", [] (qcs_flags *opt) { return &opt->quiet; },
+    N_("Disables printing the task information."),
+  },
+
+  qcs_flag_option_def {
+    "c", [] (qcs_flags *opt) { return &opt->cont; },
+    N_("Print any error raised by COMMAND and continue."),
+  },
+
+  qcs_flag_option_def {
+    "s", [] (qcs_flags *opt) { return &opt->silent; },
+    N_("Silently ignore any errors or empty output produced by COMMAND."),
+  },
+};
+
+/* Create an option_def_group for the "task apply all" options, with
+   FLAGS as context.  */
+
+static inline std::array<gdb::option::option_def_group, 1>
+make_task_apply_all_options_def_group (qcs_flags *flags)
+{
+  return {{
+    { {task_qcs_flags_option_defs}, flags },
+  }};
+}
+
+/* Create an option_def_group for the "task apply" options, with
+   FLAGS as context.  */
+
+static inline gdb::option::option_def_group
+make_task_apply_options_def_group (qcs_flags *flags)
+{
+  return {{task_qcs_flags_option_defs}, flags};
+}
+
+/* Implementation of 'task apply all'.  */
 
 static void
-ada_tasks_new_objfile_observer (struct objfile *objfile)
+task_apply_all_command (const char *cmd, int from_tty)
 {
-  struct inferior *inf;
+  qcs_flags flags;
 
-  /* Invalidate the relevant data in our program-space data.  */
+  auto group = make_task_apply_all_options_def_group (&flags);
+  gdb::option::process_options
+    (&cmd, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group);
 
-  if (objfile == NULL)
+  validate_flags_qcs ("task apply all", &flags);
+
+  if (cmd == nullptr || *cmd == '\0')
+    error (_("Please specify a command at the end of 'task apply all'"));
+
+  update_thread_list ();
+  ada_build_task_list ();
+
+  inferior *inf = current_inferior ();
+  struct ada_tasks_inferior_data *data = get_ada_tasks_inferior_data (inf);
+
+  /* Save a copy of the thread list and increment each thread's
+     refcount while executing the command in the context of each
+     thread, in case the command affects this.  */
+  std::vector<std::pair<int, thread_info_ref>> thr_list_cpy;
+
+  for (int i = 1; i <= data->task_list.size (); ++i)
     {
-      /* All objfiles are being cleared, so we should clear all
-	 our caches for all program spaces.  */
-      struct program_space *pspace;
+      ada_task_info &task = data->task_list[i - 1];
+      if (!ada_task_is_alive (&task))
+	continue;
 
-      for (pspace = program_spaces; pspace != NULL; pspace = pspace->next)
-        ada_tasks_invalidate_pspace_data (pspace);
+      thread_info *tp = inf->find_thread (task.ptid);
+      if (tp == nullptr)
+	warning (_("Unable to compute thread ID for task %s.\n"
+		   "Cannot switch to this task."),
+		 task_to_str (i, &task).c_str ());
+      else
+	thr_list_cpy.emplace_back (i, thread_info_ref::new_reference (tp));
     }
-  else
+
+  scoped_restore_current_thread restore_thread;
+
+  for (const auto &info : thr_list_cpy)
+    if (switch_to_thread_if_alive (info.second.get ()))
+      thread_try_catch_cmd (info.second.get (), info.first, cmd,
+			    from_tty, flags);
+}
+
+/* Implementation of 'task apply'.  */
+
+static void
+task_apply_command (const char *tidlist, int from_tty)
+{
+
+  if (tidlist == nullptr || *tidlist == '\0')
+    error (_("Please specify a task ID list"));
+
+  update_thread_list ();
+  ada_build_task_list ();
+
+  inferior *inf = current_inferior ();
+  struct ada_tasks_inferior_data *data = get_ada_tasks_inferior_data (inf);
+
+  /* Save a copy of the thread list and increment each thread's
+     refcount while executing the command in the context of each
+     thread, in case the command affects this.  */
+  std::vector<std::pair<int, thread_info_ref>> thr_list_cpy;
+
+  number_or_range_parser parser (tidlist);
+  while (!parser.finished ())
     {
-      /* The associated program-space data might have changed after
-	 this objfile was added.  Invalidate all cached data.  */
-      ada_tasks_invalidate_pspace_data (objfile->pspace);
+      int num = parser.get_number ();
+
+      if (num < 1 || num - 1 >= data->task_list.size ())
+	warning (_("no Ada Task with number %d"), num);
+      else
+	{
+	  ada_task_info &task = data->task_list[num - 1];
+	  if (!ada_task_is_alive (&task))
+	    continue;
+
+	  thread_info *tp = inf->find_thread (task.ptid);
+	  if (tp == nullptr)
+	    warning (_("Unable to compute thread ID for task %s.\n"
+		       "Cannot switch to this task."),
+		     task_to_str (num, &task).c_str ());
+	  else
+	    thr_list_cpy.emplace_back (num,
+				       thread_info_ref::new_reference (tp));
+	}
     }
 
-  /* Invalidate the per-inferior cache for all inferiors using
-     this objfile (or, in other words, for all inferiors who have
-     the same program-space as the objfile's program space).
-     If all objfiles are being cleared (OBJFILE is NULL), then
-     clear the caches for all inferiors.  */
+  qcs_flags flags;
+  const char *cmd = parser.cur_tok ();
 
-  for (inf = inferior_list; inf != NULL; inf = inf->next)
-    if (objfile == NULL || inf->pspace == objfile->pspace)
-      ada_tasks_invalidate_inferior_data (inf);
+  auto group = make_task_apply_options_def_group (&flags);
+  gdb::option::process_options
+    (&cmd, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group);
+
+  validate_flags_qcs ("task apply", &flags);
+
+  if (*cmd == '\0')
+    error (_("Please specify a command following the task ID list"));
+
+  scoped_restore_current_thread restore_thread;
+
+  for (const auto &info : thr_list_cpy)
+    if (switch_to_thread_if_alive (info.second.get ()))
+      thread_try_catch_cmd (info.second.get (), info.first, cmd,
+			    from_tty, flags);
 }
 
-void
-_initialize_tasks (void)
+INIT_GDB_FILE (tasks)
 {
   /* Attach various observers.  */
-  gdb::observers::normal_stop.attach (ada_tasks_normal_stop_observer);
-  gdb::observers::new_objfile.attach (ada_tasks_new_objfile_observer);
+  gdb::observers::normal_stop.attach (ada_tasks_normal_stop_observer,
+				      "ada-tasks");
+  gdb::observers::new_objfile.attach (ada_tasks_new_objfile_observer,
+				      "ada-tasks");
+  gdb::observers::all_objfiles_removed.attach (ada_tasks_clear_pspace_data,
+					       "ada-tasks");
+
+  static struct cmd_list_element *task_cmd_list;
+  static struct cmd_list_element *task_apply_list;
+
 
   /* Some new commands provided by this module.  */
   add_info ("tasks", info_tasks_command,
-            _("Provide information about all known Ada tasks."));
-  add_cmd ("task", class_run, task_command,
-           _("Use this command to switch between Ada tasks.\n\
+	    _("Provide information about all known Ada tasks."));
+
+  add_prefix_cmd ("task", class_run, task_command,
+		  _("Use this command to switch between Ada tasks.\n\
 Without argument, this command simply prints the current task ID."),
-           &cmdlist);
+		  &task_cmd_list, 1, &cmdlist);
+
+#define TASK_APPLY_OPTION_HELP "\
+Prints per-inferior task number followed by COMMAND output.\n\
+\n\
+By default, an error raised during the execution of COMMAND\n\
+aborts \"task apply\".\n\
+\n\
+Options:\n\
+%OPTIONS%"
+
+  static const auto task_apply_opts
+    = make_task_apply_options_def_group (nullptr);
+
+  static std::string task_apply_help = gdb::option::build_help (_("\
+Apply a command to a list of tasks.\n\
+Usage: task apply ID... [OPTION]... COMMAND\n\
+ID is a space-separated list of IDs of tasks to apply COMMAND on.\n"
+TASK_APPLY_OPTION_HELP), task_apply_opts);
+
+  add_prefix_cmd ("apply", class_run,
+		  task_apply_command,
+		  task_apply_help.c_str (),
+		  &task_apply_list, 1,
+		  &task_cmd_list);
+
+  static const auto task_apply_all_opts
+    = make_task_apply_all_options_def_group (nullptr);
+
+  static std::string task_apply_all_help = gdb::option::build_help (_("\
+Apply a command to all tasks in the current inferior.\n\
+\n\
+Usage: task apply all [OPTION]... COMMAND\n"
+TASK_APPLY_OPTION_HELP), task_apply_all_opts);
+
+  add_cmd ("all", class_run, task_apply_all_command,
+	   task_apply_all_help.c_str (), &task_apply_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.20200303/gdb/ada-typeprint.c ./gdb/ada-typeprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-typeprint.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-typeprint.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,14 +16,12 @@
    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 "bfd.h"		/* Binary File Description */
+#include "event-top.h"
 #include "gdbtypes.h"
 #include "value.h"
 #include "c-lang.h"
 #include "cli/cli-style.h"
 #include "typeprint.h"
-#include "target-float.h"
 #include "ada-lang.h"
 #include <ctype.h>
 
@@ -101,10 +99,10 @@ 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);
+  subtype = type->target_type ();
   if (subtype == NULL)
     return 0;
 
@@ -122,14 +120,14 @@ type_is_full_subrange_of_target_type (st
   return 1;
 }
 
-/* Print TYPE on STREAM, preferably as a range if BOUNDS_PREFERED_P
+/* Print TYPE on STREAM, preferably as a range if BOUNDS_PREFERRED_P
    is nonzero.  */
 
 static void
 print_range (struct type *type, struct ui_file *stream,
-	     int bounds_prefered_p)
+	     int bounds_preferred_p)
 {
-  if (!bounds_prefered_p)
+  if (!bounds_preferred_p)
     {
       /* Try stripping all TYPE_CODE_RANGE layers whose bounds
 	 are identical to the bounds of their subtype.  When
@@ -143,10 +141,10 @@ print_range (struct type *type, struct u
 
 	     array ('["00"]' .. '["ff"]') of ...  */
       while (type_is_full_subrange_of_target_type (type))
-	type = TYPE_TARGET_TYPE (type);
+	type = type->target_type ();
     }
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_RANGE:
     case TYPE_CODE_ENUM:
@@ -166,22 +164,22 @@ print_range (struct type *type, struct u
 	       access to an actual object, which is not available
 	       when the user is using the "ptype" command on a type.
 	       Print the range as an unbounded range.  */
-	    fprintf_filtered (stream, "<>");
+	    gdb_printf (stream, "<>");
 	    got_error = 1;
 	  }
 
 	if (!got_error)
 	  {
 	    ada_print_scalar (type, lo, stream);
-	    fprintf_filtered (stream, " .. ");
+	    gdb_printf (stream, " .. ");
 	    ada_print_scalar (type, hi, stream);
 	  }
       }
       break;
     default:
-      fprintf_filtered (stream, "%.*s",
-			ada_name_prefix_len (TYPE_NAME (type)),
-			TYPE_NAME (type));
+      gdb_printf (stream, "%.*s",
+		  ada_name_prefix_len (type->name ()),
+		  type->name ());
       break;
     }
 }
@@ -198,17 +196,17 @@ print_range_bound (struct type *type, co
   if (ada_scan_number (bounds, *n, &B, n))
     {
       /* STABS decodes all range types which bounds are 0 .. -1 as
-         unsigned integers (ie. the type code is TYPE_CODE_INT, not
-         TYPE_CODE_RANGE).  Unfortunately, ada_print_scalar() relies
-         on the unsigned flag to determine whether the bound should
-         be printed as a signed or an unsigned value.  This causes
-         the upper bound of the 0 .. -1 range types to be printed as
-         a very large unsigned number instead of -1.
-         To workaround this stabs deficiency, we replace the TYPE by NULL
-         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)
+	 unsigned integers (ie. the type code is TYPE_CODE_INT, not
+	 TYPE_CODE_RANGE).  Unfortunately, ada_print_scalar() relies
+	 on the unsigned flag to determine whether the bound should
+	 be printed as a signed or an unsigned value.  This causes
+	 the upper bound of the 0 .. -1 range types to be printed as
+	 a very large unsigned number instead of -1.
+	 To workaround this stabs deficiency, we replace the TYPE by NULL
+	 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_CODE_INT)
 	type = NULL;
       ada_print_scalar (type, B, stream);
       if (bounds[*n] == '_')
@@ -228,7 +226,7 @@ print_range_bound (struct type *type, co
 	  bound_len = pend - bound;
 	  *n += bound_len + 2;
 	}
-      fprintf_filtered (stream, "%.*s", bound_len, bound);
+      gdb_printf (stream, "%.*s", bound_len, bound);
     }
 }
 
@@ -247,37 +245,37 @@ print_dynamic_range_bound (struct type *
   if (get_int_var_value (name_buf.c_str (), B))
     ada_print_scalar (type, B, stream);
   else
-    fprintf_filtered (stream, "?");
+    gdb_printf (stream, "?");
 }
 
 /* Print RAW_TYPE as a range type, using any bound information
    following the GNAT encoding (if available).
 
-   If BOUNDS_PREFERED_P is nonzero, force the printing of the range
+   If BOUNDS_PREFERRED_P is nonzero, force the printing of the range
    using its bounds.  Otherwise, try printing the range without
    printing the value of the bounds, if possible (this is only
    considered a hint, not a guaranty).  */
 
 static void
 print_range_type (struct type *raw_type, struct ui_file *stream,
-		  int bounds_prefered_p)
+		  int bounds_preferred_p)
 {
   const char *name;
   struct type *base_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)
-    base_type = TYPE_TARGET_TYPE (raw_type);
+  if (raw_type->code () == TYPE_CODE_RANGE)
+    base_type = raw_type->target_type ();
   else
     base_type = raw_type;
 
   subtype_info = strstr (name, "___XD");
   if (subtype_info == NULL)
-    print_range (raw_type, stream, bounds_prefered_p);
+    print_range (raw_type, stream, bounds_preferred_p);
   else
     {
       int prefix_len = subtype_info - name;
@@ -297,7 +295,7 @@ print_range_type (struct type *raw_type,
 	print_dynamic_range_bound (base_type, name, prefix_len, "___L",
 				   stream);
 
-      fprintf_filtered (stream, " .. ");
+      gdb_printf (stream, " .. ");
 
       if (*subtype_info == 'U')
 	print_range_bound (base_type, bounds_str, &n, stream);
@@ -312,55 +310,31 @@ 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;
 
-  fprintf_filtered (stream, "(");
-  wrap_here (" ");
+  gdb_printf (stream, "(");
+  stream->wrap_here (1);
 
   lastval = 0;
   for (i = 0; i < len; i++)
     {
       QUIT;
       if (i)
-	fprintf_filtered (stream, ", ");
-      wrap_here ("    ");
-      fputs_filtered (ada_enum_name (TYPE_FIELD_NAME (type, i)), stream);
-      if (lastval != TYPE_FIELD_ENUMVAL (type, i))
-	{
-	  fprintf_filtered (stream, " => %s",
-			    plongest (TYPE_FIELD_ENUMVAL (type, i)));
-	  lastval = TYPE_FIELD_ENUMVAL (type, i);
-	}
-      lastval += 1;
-    }
-  fprintf_filtered (stream, ")");
-}
-
-/* Print representation of Ada fixed-point type TYPE on STREAM.  */
-
-static void
-print_fixed_point_type (struct type *type, struct ui_file *stream)
-{
-  struct value *delta = ada_delta (type);
-  struct value *small = ada_scaling_factor (type);
-
-  if (delta == nullptr)
-    fprintf_filtered (stream, "delta ??");
-  else
-    {
-      std::string str;
-      str = target_float_to_string (value_contents (delta),
-				    value_type (delta), "%g");
-      fprintf_filtered (stream, "delta %s", str.c_str());
-      if (!value_equal (delta, small))
+	gdb_printf (stream, ", ");
+      stream->wrap_here (4);
+      fputs_styled (ada_enum_name (type->field (i).name ()),
+		    variable_name_style.style (), stream);
+      if (lastval != type->field (i).loc_enumval ())
 	{
-	  str = target_float_to_string (value_contents (small),
-					value_type (small), "%g");
-	  fprintf_filtered (stream, " <'small = %s>", str.c_str());
+	  gdb_printf (stream, " => %s",
+		      plongest (type->field (i).loc_enumval ()));
+	  lastval = type->field (i).loc_enumval ();
 	}
+      lastval += 1;
     }
+  gdb_printf (stream, ")");
 }
 
 /* Print simple (constrained) array type TYPE on STREAM.  LEVEL is the
@@ -380,7 +354,7 @@ print_array_type (struct type *type, str
     type = ada_coerce_to_simple_array_type (type);
 
   bitsize = 0;
-  fprintf_filtered (stream, "array (");
+  gdb_printf (stream, "array (");
 
   if (type == NULL)
     {
@@ -401,32 +375,39 @@ 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;
-	       arr_type = TYPE_TARGET_TYPE (arr_type))
+	  for (arr_type = type; arr_type->code () == TYPE_CODE_ARRAY; )
 	    {
 	      if (arr_type != type)
-		fprintf_filtered (stream, ", ");
-	      print_range (TYPE_INDEX_TYPE (arr_type), stream,
-			   0 /* bounds_prefered_p */);
-	      if (TYPE_FIELD_BITSIZE (arr_type, 0) > 0)
-		bitsize = TYPE_FIELD_BITSIZE (arr_type, 0);
+		gdb_printf (stream, ", ");
+	      print_range (arr_type->index_type (), stream,
+			   0 /* bounds_preferred_p */);
+	      if (arr_type->field (0).bitsize () > 0)
+		bitsize = arr_type->field (0).bitsize ();
+	      /* A multi-dimensional array is represented using a
+		 sequence of array types.  If one of these types has a
+		 name, then it is not another dimension of the outer
+		 array, but rather the element type of the outermost
+		 array.  */
+	      arr_type = arr_type->target_type ();
+	      if (arr_type->name () != nullptr)
+		break;
 	    }
 	}
       else
 	{
 	  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))
+	       k += 1, arr_type = arr_type->target_type ())
 	    {
 	      if (k > 0)
-		fprintf_filtered (stream, ", ");
-	      print_range_type (TYPE_FIELD_TYPE (range_desc_type, k),
-				stream, 0 /* bounds_prefered_p */);
-	      if (TYPE_FIELD_BITSIZE (arr_type, 0) > 0)
-		bitsize = TYPE_FIELD_BITSIZE (arr_type, 0);
+		gdb_printf (stream, ", ");
+	      print_range_type (range_desc_type->field (k).type (),
+				stream, 0 /* bounds_preferred_p */);
+	      if (arr_type->field (0).bitsize () > 0)
+		bitsize = arr_type->field (0).bitsize ();
 	    }
 	}
     }
@@ -435,19 +416,19 @@ print_array_type (struct type *type, str
       int i, i0;
 
       for (i = i0 = ada_array_arity (type); i > 0; i -= 1)
-	fprintf_filtered (stream, "%s<>", i == i0 ? "" : ", ");
+	gdb_printf (stream, "%s<>", i == i0 ? "" : ", ");
     }
 
   elt_type = ada_array_element_type (type, n_indices);
-  fprintf_filtered (stream, ") of ");
-  wrap_here ("");
+  gdb_printf (stream, ") of ");
+  stream->wrap_here (0);
   ada_print_type (elt_type, "", stream, show == 0 ? 0 : show - 1, level + 1,
 		  flags);
   /* Arrays with variable-length elements are never bit-packed in practice but
      compilers have to describe their stride so that we can properly fetch
      individual elements.  Do not say the array is packed in this case.  */
   if (bitsize > 0 && !is_dynamic_type (elt_type))
-    fprintf_filtered (stream, " <packed: %d-bit elements>", bitsize);
+    gdb_printf (stream, " <packed: %d-bit elements>", bitsize);
 }
 
 /* Print the choices encoded by field FIELD_NUM of variant-part TYPE on
@@ -455,7 +436,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,
@@ -463,7 +444,7 @@ print_choices (struct type *type, int fi
 {
   int have_output;
   int p;
-  const char *name = TYPE_FIELD_NAME (type, field_num);
+  const char *name = type->field (field_num).name ();
 
   have_output = 0;
 
@@ -484,13 +465,13 @@ print_choices (struct type *type, int fi
 	  goto Huh;
 	case '_':
 	case '\0':
-	  fprintf_filtered (stream, " =>");
+	  gdb_printf (stream, " =>");
 	  return 1;
 	case 'S':
 	case 'R':
 	case 'O':
 	  if (have_output)
-	    fprintf_filtered (stream, " | ");
+	    gdb_printf (stream, " | ");
 	  have_output = 1;
 	  break;
 	}
@@ -514,22 +495,51 @@ print_choices (struct type *type, int fi
 		|| name[p] != 'T' || !ada_scan_number (name, p + 1, &U, &p))
 	      goto Huh;
 	    ada_print_scalar (val_type, L, stream);
-	    fprintf_filtered (stream, " .. ");
+	    gdb_printf (stream, " .. ");
 	    ada_print_scalar (val_type, U, stream);
 	    break;
 	  }
 	case 'O':
-	  fprintf_filtered (stream, "others");
+	  gdb_printf (stream, "others");
 	  p += 1;
 	  break;
 	}
     }
 
 Huh:
-  fprintf_filtered (stream, "? =>");
+  gdb_printf (stream, "? =>");
   return 0;
 }
 
+/* A helper for print_variant_clauses that prints the members of
+   VAR_TYPE.  DISCR_TYPE is the type of the discriminant (or nullptr
+   if not available).  The discriminant is contained in OUTER_TYPE.
+   STREAM, LEVEL, SHOW, and FLAGS are the same as for
+   ada_print_type.  */
+
+static void
+print_variant_clauses (struct type *var_type, struct type *discr_type,
+		       struct type *outer_type, struct ui_file *stream,
+		       int show, int level,
+		       const struct type_print_options *flags)
+{
+  for (int i = 0; i < var_type->num_fields (); i += 1)
+    {
+      gdb_printf (stream, "\n%*swhen ", level, "");
+      if (print_choices (var_type, i, stream, discr_type))
+	{
+	  if (print_record_field_types (var_type->field (i).type (),
+					outer_type, stream, show, level,
+					flags)
+	      <= 0)
+	    gdb_printf (stream, " null;");
+	}
+      else
+	print_selected_record_field_types (var_type, outer_type, i, i,
+					   stream, show, level, flags);
+    }
+}
+
 /* Assuming that field FIELD_NUM of TYPE represents variants whose
    discriminant is contained in OUTER_TYPE, print its components on STREAM.
    LEVEL is the recursion (indentation) level, in case any of the fields
@@ -544,17 +554,16 @@ print_variant_clauses (struct type *type
 		       int show, int level,
 		       const struct type_print_options *flags)
 {
-  int i;
   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)
+      var_type = var_type->target_type ();
+      if (var_type == NULL || var_type->code () != TYPE_CODE_UNION)
 	return;
     }
 
@@ -562,21 +571,8 @@ print_variant_clauses (struct type *type
   if (par_type != NULL)
     var_type = par_type;
 
-  for (i = 0; i < TYPE_NFIELDS (var_type); 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),
-					outer_type, stream, show, level + 4,
-					flags)
-	      <= 0)
-	    fprintf_filtered (stream, " null;");
-	}
-      else
-	print_selected_record_field_types (var_type, outer_type, i, i,
-					   stream, show, level + 4, flags);
-    }
+  print_variant_clauses (var_type, discr_type, outer_type, stream, show,
+			 level + 4, flags);
 }
 
 /* Assuming that field FIELD_NUM of TYPE is a variant part whose
@@ -593,14 +589,14 @@ 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 = "?";
 
-  fprintf_filtered (stream, "\n%*scase %s is", level + 4, "", variant);
+  gdb_printf (stream, "\n%*scase %s is", level + 4, "", variant);
   print_variant_clauses (type, field_num, outer_type, stream, show,
 			 level + 4, flags);
-  fprintf_filtered (stream, "\n%*send case;", level + 4, "");
+  gdb_printf (stream, "\n%*send case;", level + 4, "");
 }
 
 /* Print a description on STREAM of the fields FLD0 through FLD1 in
@@ -622,7 +618,7 @@ print_selected_record_field_types (struc
 
   flds = 0;
 
-  if (fld0 > fld1 && TYPE_STUB (type))
+  if (fld0 > fld1 && type->is_stub ())
     return -1;
 
   for (i = fld0; i <= fld1; i += 1)
@@ -632,7 +628,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))
 	{
@@ -642,17 +638,131 @@ print_selected_record_field_types (struc
       else
 	{
 	  flds += 1;
-	  fprintf_filtered (stream, "\n%*s", level + 4, "");
-	  ada_print_type (TYPE_FIELD_TYPE (type, i),
-			  TYPE_FIELD_NAME (type, i),
+	  gdb_printf (stream, "\n%*s", level + 4, "");
+	  ada_print_type (type->field (i).type (),
+			  type->field (i).name (),
 			  stream, show - 1, level + 4, flags);
-	  fprintf_filtered (stream, ";");
+	  gdb_printf (stream, ";");
 	}
     }
 
   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)
+{
+  gdb_printf (stream, "\n%*swhen ", level, "");
+  if (variant.is_default ())
+    gdb_printf (stream, "others");
+  else
+    {
+      bool first = true;
+      for (const discriminant_range &range : variant.discriminants)
+	{
+	  if (!first)
+	    gdb_printf (stream, " | ");
+	  first = false;
+
+	  ada_print_scalar (discr_type, range.low, stream);
+	  if (range.low != range.high)
+	    ada_print_scalar (discr_type, range.high, stream);
+	}
+    }
+
+  gdb_printf (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 (part.discriminant_index).name ();
+      discr_type = type->field (part.discriminant_index).type ();
+    }
+
+  gdb_printf (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)
+	gdb_printf (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;
+	}
+    }
+
+  gdb_printf (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 +771,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);
 }
    
@@ -693,15 +818,15 @@ print_record_type (struct type *type0, s
 	 prevents a crash trying to print a NULL pointer.  */
       if (parent_name == NULL)
 	parent_name = ada_type_name (parent_type);
-      fprintf_filtered (stream, "new %s with record", parent_name);
+      gdb_printf (stream, "new %s with record", parent_name);
     }
   else if (parent_type == NULL && ada_is_tagged_type (type, 0))
-    fprintf_filtered (stream, "tagged record");
+    gdb_printf (stream, "tagged record");
   else
-    fprintf_filtered (stream, "record");
+    gdb_printf (stream, "record");
 
   if (show < 0)
-    fprintf_filtered (stream, " ... end record");
+    gdb_printf (stream, " ... end record");
   else
     {
       int flds;
@@ -714,11 +839,11 @@ print_record_type (struct type *type0, s
 					flags);
 
       if (flds > 0)
-	fprintf_filtered (stream, "\n%*send record", level, "");
+	gdb_printf (stream, "\n%*send record", level, "");
       else if (flds < 0)
-	fprintf_filtered (stream, _(" <incomplete type> end record"));
+	gdb_printf (stream, _(" <incomplete type> end record"));
       else
-	fprintf_filtered (stream, " null; end record");
+	gdb_printf (stream, " null; end record");
     }
 }
 
@@ -732,27 +857,17 @@ print_unchecked_union_type (struct type
 			    const struct type_print_options *flags)
 {
   if (show < 0)
-    fprintf_filtered (stream, "record (?) is ... end record");
-  else if (TYPE_NFIELDS (type) == 0)
-    fprintf_filtered (stream, "record (?) is null; end record");
+    gdb_printf (stream, "record (?) is ... end record");
+  else if (type->num_fields () == 0)
+    gdb_printf (stream, "record (?) is null; end record");
   else
     {
-      int i;
+      gdb_printf (stream, "record (?) is\n%*scase ? is", level + 4, "");
 
-      fprintf_filtered (stream, "record (?) is\n%*scase ? is", level + 4, "");
+      print_variant_clauses (type, nullptr, type, stream, show, level + 8, flags);
 
-      for (i = 0; i < TYPE_NFIELDS (type); i += 1)
-	{
-	  fprintf_filtered (stream, "\n%*swhen ? =>\n%*s", level + 8, "",
-			    level + 12, "");
-	  ada_print_type (TYPE_FIELD_TYPE (type, i),
-			  TYPE_FIELD_NAME (type, i),
-			  stream, show - 1, level + 12, flags);
-	  fprintf_filtered (stream, ";");
-	}
-
-      fprintf_filtered (stream, "\n%*send case;\n%*send record",
-			level + 4, "", level, "");
+      gdb_printf (stream, "\n%*send case;\n%*send record",
+		  level + 4, "", level, "");
     }
 }
 
@@ -765,51 +880,51 @@ 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)
-    fprintf_filtered (stream, "procedure");
+  if (type->target_type () != NULL
+      && type->target_type ()->code () == TYPE_CODE_VOID)
+    gdb_printf (stream, "procedure");
   else
-    fprintf_filtered (stream, "function");
+    gdb_printf (stream, "function");
 
   if (name != NULL && name[0] != '\0')
     {
-      fputs_filtered (" ", stream);
+      gdb_puts (" ", stream);
       fputs_styled (name, function_name_style.style (), stream);
     }
 
   if (len > 0)
     {
-      fprintf_filtered (stream, " (");
+      gdb_printf (stream, " (");
       for (i = 0; i < len; i += 1)
 	{
 	  if (i > 0)
 	    {
-	      fputs_filtered ("; ", stream);
-	      wrap_here ("    ");
+	      gdb_puts ("; ", stream);
+	      stream->wrap_here (4);
 	    }
-	  fprintf_filtered (stream, "a%d: ", i + 1);
-	  ada_print_type (TYPE_FIELD_TYPE (type, i), "", stream, -1, 0,
+	  gdb_printf (stream, "a%d: ", i + 1);
+	  ada_print_type (type->field (i).type (), "", stream, -1, 0,
 			  flags);
 	}
-      fprintf_filtered (stream, ")");
+      gdb_printf (stream, ")");
     }
 
-  if (TYPE_TARGET_TYPE (type) == NULL)
-    fprintf_filtered (stream, " return <unknown return type>");
-  else if (TYPE_CODE (TYPE_TARGET_TYPE (type)) != TYPE_CODE_VOID)
+  if (type->target_type () == NULL)
+    gdb_printf (stream, " return <unknown return type>");
+  else if (type->target_type ()->code () != TYPE_CODE_VOID)
     {
-      fprintf_filtered (stream, " return ");
-      ada_print_type (TYPE_TARGET_TYPE (type), "", stream, 0, 0, flags);
+      gdb_printf (stream, " return ");
+      ada_print_type (type->target_type (), "", stream, 0, 0, flags);
     }
 }
 
 
 /* Print a description of a type TYPE0.
    Output goes to STREAM (via stdio).
-   If VARSTRING is a non-empty string, print as an Ada variable/field
-       declaration.
+   If VARSTRING is a non-NULL, non-empty string, print as an Ada
+       variable/field declaration.
    SHOW+1 is the maximum number of levels of internal type structure
       to show (this applies to record types, enumerated types, and
       array types).
@@ -824,110 +939,130 @@ ada_print_type (struct type *type0, cons
 		struct ui_file *stream, int show, int level,
 		const struct type_print_options *flags)
 {
+  if (type0->code () == TYPE_CODE_INTERNAL_FUNCTION)
+    {
+      c_print_type (type0, "", stream, show, level,
+		    language_ada, flags);
+      return;
+    }
+
   struct type *type = ada_check_typedef (ada_get_base_type (type0));
-  char *type_name = decoded_type_name (type0);
+  /* If we can decode the original type name, use it.  However, there
+     are cases where the original type is an internally-generated type
+     with a name that can't be decoded (and whose encoded name might
+     not actually bear any relation to the type actually declared in
+     the sources). In that case, try using the name of the base type
+     in its place.
+
+     Note that we looked at the possibility of always using the name
+     of the base type. This does not always work, unfortunately, as
+     there are situations where it's the base type which has an
+     internally-generated name.  */
+  const char *type_name = decoded_type_name (type0);
+  if (type_name == nullptr)
+    type_name = decoded_type_name (type);
   int is_var_decl = (varstring != NULL && varstring[0] != '\0');
 
   if (type == NULL)
     {
       if (is_var_decl)
-	fprintf_filtered (stream, "%.*s: ",
-			  ada_name_prefix_len (varstring), varstring);
+	gdb_printf (stream, "%.*s: ",
+		    ada_name_prefix_len (varstring), varstring);
       fprintf_styled (stream, metadata_style.style (), "<null type?>");
       return;
     }
 
-  if (show > 0)
-    type = ada_check_typedef (type);
-
-  if (is_var_decl && TYPE_CODE (type) != TYPE_CODE_FUNC)
-    fprintf_filtered (stream, "%.*s: ",
-		      ada_name_prefix_len (varstring), varstring);
+  if (is_var_decl && type->code () != TYPE_CODE_FUNC)
+    gdb_printf (stream, "%.*s: ",
+		ada_name_prefix_len (varstring), varstring);
 
   if (type_name != NULL && show <= 0 && !ada_is_aligner_type (type))
     {
-      fprintf_filtered (stream, "%.*s",
-			ada_name_prefix_len (type_name), type_name);
+      gdb_printf (stream, "%.*s",
+		  ada_name_prefix_len (type_name), type_name);
       return;
     }
 
   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, "<");
-	c_print_type (type, "", stream, show, level, flags);
-	fprintf_filtered (stream, ">");
+	gdb_printf (stream, "<");
+	c_print_type (type, "", stream, show, level, language_ada, flags);
+	gdb_printf (stream, ">");
 	break;
       case TYPE_CODE_PTR:
       case TYPE_CODE_TYPEDEF:
-	fprintf_filtered (stream, "access ");
-	ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level,
+	/* An __XVL field is not truly a pointer, so don't print
+	   "access" in this case.  */
+	if (type->code () != TYPE_CODE_PTR
+	    || (varstring != nullptr
+		&& strstr (varstring, "___XVL") == nullptr))
+	  gdb_printf (stream, "access ");
+	ada_print_type (type->target_type (), "", stream, show, level,
 			flags);
 	break;
       case TYPE_CODE_REF:
-	fprintf_filtered (stream, "<ref> ");
-	ada_print_type (TYPE_TARGET_TYPE (type), "", stream, show, level,
+	gdb_printf (stream, "<ref> ");
+	ada_print_type (type->target_type (), "", stream, show, level,
 			flags);
 	break;
       case TYPE_CODE_ARRAY:
 	print_array_type (type, stream, show, level, flags);
 	break;
       case TYPE_CODE_BOOL:
-	fprintf_filtered (stream, "(false, true)");
+	gdb_printf (stream, "(false, true)");
 	break;
       case TYPE_CODE_INT:
-	if (ada_is_fixed_point_type (type))
-	  print_fixed_point_type (type, stream);
-	else
-	  {
-	    const char *name = ada_type_name (type);
+	{
+	  const char *name = ada_type_name (type);
 
-	    if (!ada_is_range_type_name (name))
-	      fprintf_styled (stream, metadata_style.style (),
-			      _("<%s-byte integer>"),
-			      pulongest (TYPE_LENGTH (type)));
-	    else
-	      {
-		fprintf_filtered (stream, "range ");
-		print_range_type (type, stream, 1 /* bounds_prefered_p */);
-	      }
-	  }
+	  if (!ada_is_range_type_name (name))
+	    fprintf_styled (stream, metadata_style.style (),
+			    _("<%s-byte integer>"),
+			    pulongest (type->length ()));
+	  else
+	    {
+	      gdb_printf (stream, "range ");
+	      print_range_type (type, stream, 1 /* bounds_preferred_p */);
+	    }
+	}
 	break;
       case TYPE_CODE_RANGE:
-	if (ada_is_fixed_point_type (type))
-	  print_fixed_point_type (type, stream);
+	if (is_fixed_point_type (type))
+	  {
+	    gdb_printf (stream, "<");
+	    print_type_fixed_point (type, stream);
+	    gdb_printf (stream, ">");
+	  }
 	else if (ada_is_modular_type (type))
-	  fprintf_filtered (stream, "mod %s", 
-			    int_string (ada_modulus (type), 10, 0, 0, 1));
+	  gdb_printf (stream, "mod %s", 
+		      int_string (ada_modulus (type), 10, 0, 0, 1));
 	else
 	  {
-	    fprintf_filtered (stream, "range ");
-	    print_range (type, stream, 1 /* bounds_prefered_p */);
+	    gdb_printf (stream, "range ");
+	    print_range (type, stream, 1 /* bounds_preferred_p */);
 	  }
 	break;
       case TYPE_CODE_FLT:
 	fprintf_styled (stream, metadata_style.style (),
 			_("<%s-byte float>"),
-			pulongest (TYPE_LENGTH (type)));
+			pulongest (type->length ()));
 	break;
       case TYPE_CODE_ENUM:
 	if (show < 0)
-	  fprintf_filtered (stream, "(...)");
+	  gdb_printf (stream, "(...)");
 	else
 	  print_enum_type (type, stream);
 	break;
       case TYPE_CODE_STRUCT:
 	if (ada_is_array_descriptor_type (type))
 	  print_array_type (type, stream, show, level, flags);
-	else if (ada_is_bogus_array_descriptor (type))
-	  fprintf_filtered (stream,
-			    _("array (?) of ? (<mal-formed descriptor>)"));
 	else
 	  print_record_type (type, stream, show, level, flags);
 	break;
@@ -944,7 +1079,7 @@ ada_print_type (struct type *type0, cons
 
 void
 ada_print_typedef (struct type *type, struct symbol *new_symbol,
-                   struct ui_file *stream)
+		   struct ui_file *stream)
 {
   type = ada_check_typedef (type);
   ada_print_type (type, "", stream, 0, 0, &type_print_raw_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.20200303/gdb/ada-unicode.py ./gdb/ada-unicode.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-unicode.py	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/ada-unicode.py	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,120 @@
+#!/usr/bin/env python3
+
+# Generate Unicode case-folding table for Ada.
+
+# Copyright (C) 2022-2025 Free Software Foundation, Inc.
+
+# This file is part of GDB.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# 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 generates the ada-casefold.h header.
+# Usage:
+#   python ada-unicode.py
+
+import gdbcopyright
+
+
+class Range:
+    def __init__(self, range_start: int, upper_delta: int, lower_delta: int):
+        self._range_start = range_start
+        self._range_end = range_start
+        self._upper_delta = upper_delta
+        self._lower_delta = lower_delta
+
+    # The start of the range.
+    @property
+    def range_start(self):
+        return self._range_start
+
+    # The end of the range.
+    @property
+    def range_end(self):
+        return self._range_end
+
+    @range_end.setter
+    def range_end(self, val: int):
+        self._range_end = val
+
+    # The delta between RANGE_START and the upper-case variant of that
+    # character.
+    @property
+    def upper_delta(self):
+        return self._upper_delta
+
+    # The delta between RANGE_START and the lower-case variant of that
+    # character.
+    @property
+    def lower_delta(self):
+        return self._lower_delta
+
+
+# The current range we are processing.  If None,  then we're outside of a range.
+current_range: Range | None = None
+
+# All the ranges found and completed so far.
+all_ranges: list[Range] = []
+
+
+def finish_range():
+    global current_range
+
+    if current_range is not None:
+        all_ranges.append(current_range)
+        current_range = None
+
+
+def process_codepoint(val: int):
+    global current_range
+
+    c = chr(val)
+    low = c.lower()
+    up = c.upper()
+    # U+00DF ("LATIN SMALL LETTER SHARP S", aka eszsett) traditionally
+    # upper-cases to the two-character string "SS" (the capital form
+    # is a relatively recent addition -- 2017).  Our simple scheme
+    # can't handle this, so we skip it.  Also, because our approach
+    # just represents runs of characters with identical folding
+    # deltas, this change must terminate the current run.
+    if (c == low and c == up) or len(low) != 1 or len(up) != 1:
+        finish_range()
+        return
+    updelta = ord(up) - val
+    lowdelta = ord(low) - val
+
+    if current_range is not None and (
+        updelta != current_range.upper_delta or lowdelta != current_range.lower_delta
+    ):
+        finish_range()
+
+    if current_range is None:
+        current_range = Range(val, updelta, lowdelta)
+
+    current_range.range_end = val
+
+
+for c in range(0, 0x10FFFF):
+    process_codepoint(c)
+
+with open("ada-casefold.h", "w") as f:
+    print(
+        gdbcopyright.copyright("ada-unicode.py", "UTF-32 case-folding for GDB"),
+        file=f,
+    )
+    print("", file=f)
+    for r in all_ranges:
+        print(
+            f"   {{{r.range_start}, {r.range_end}, {r.upper_delta}, {r.lower_delta}}},",
+            file=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.20200303/gdb/ada-valprint.c ./gdb/ada-valprint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-valprint.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-valprint.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,8 +17,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/>.  */
 
-#include "defs.h"
 #include <ctype.h>
+#include "event-top.h"
+#include "extract-store-integer.h"
 #include "gdbtypes.h"
 #include "expression.h"
 #include "value.h"
@@ -30,23 +31,12 @@
 #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)
-    TYPE_UNSIGNED (type) = 1;
-}
+
 
 /* Assuming TYPE is a simple array type, prints its lower bound on STREAM,
    if non-standard (i.e., other than 1 for numbers, other than lower bound
@@ -73,20 +63,20 @@ 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
-         of an enumerated type, where the underlying value of the
-         first element is typically 0, we might test the low bound
-         against the wrong value.  */
-      index_type = TYPE_TARGET_TYPE (index_type);
+	 appropriate check below.  Otherwise, if this is a subrange
+	 of an enumerated type, where the underlying value of the
+	 first element is typically 0, we might test the low bound
+	 against the wrong value.  */
+      index_type = index_type->target_type ();
     }
 
   /* 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,12 +84,13 @@ 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 = index_type->field (low_bound).loc_enumval ();
       break;
     case TYPE_CODE_UNDEF:
       index_type = NULL;
-      /* FALL THROUGH */
+      [[fallthrough]];
     default:
       if (low_bound == 1)
 	return 0;
@@ -107,83 +98,64 @@ print_optional_low_bound (struct ui_file
     }
 
   ada_print_scalar (index_type, low_bound, stream);
-  fprintf_filtered (stream, " => ");
+  gdb_printf (stream, " => ");
   return 1;
 }
 
 /*  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;
   unsigned int things_printed = 0;
   unsigned len;
   struct type *elttype, *index_type;
-  unsigned long bitsize = TYPE_FIELD_BITSIZE (type, 0);
-  struct value *mark = value_mark ();
+  unsigned long bitsize = type->field (0).bitsize ();
   LONGEST low = 0;
 
-  elttype = TYPE_TARGET_TYPE (type);
-  index_type = TYPE_INDEX_TYPE (type);
+  scoped_value_mark mark;
+
+  elttype = type->target_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;
+	/* 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!  */
+	len = 0;
       }
+    else
+      len = high - low + 1;
   }
 
+  if (index_type->code () == TYPE_CODE_RANGE)
+    index_type = index_type->target_type ();
+
   i = 0;
   annotate_array_section_begin (i, elttype);
 
   while (i < len && things_printed < options->print_max)
     {
+      /* Both this outer loop and the inner loop that checks for
+	 duplicates may allocate many values.  To avoid using too much
+	 memory, both spots release values as they work.  */
+      scoped_value_mark outer_free_values;
+
       struct value *v0, *v1;
       int i0;
 
@@ -191,15 +163,20 @@ val_print_packed_array_elements (struct
 	{
 	  if (options->prettyformat_arrays)
 	    {
-	      fprintf_filtered (stream, ",\n");
-	      print_spaces_filtered (2 + 2 * recurse, stream);
+	      gdb_printf (stream, ",\n");
+	      print_spaces (2 + 2 * recurse, stream);
 	    }
 	  else
 	    {
-	      fprintf_filtered (stream, ", ");
+	      gdb_printf (stream, ", ");
 	    }
 	}
-      wrap_here (n_spaces (2 + 2 * recurse));
+      else if (options->prettyformat_arrays)
+	{
+	  gdb_printf (stream, "\n");
+	  print_spaces (2 + 2 * recurse, stream);
+	}
+      stream->wrap_here (2 + 2 * recurse);
       maybe_print_array_index (index_type, i + low, stream, options);
 
       i0 = i;
@@ -209,6 +186,9 @@ val_print_packed_array_elements (struct
 					   bitsize, elttype);
       while (1)
 	{
+	  /* Make sure to free any values in the inner loop.  */
+	  scoped_value_mark free_values;
+
 	  i += 1;
 	  if (i >= len)
 	    break;
@@ -216,12 +196,12 @@ val_print_packed_array_elements (struct
 					       (i * bitsize) / HOST_CHAR_BIT,
 					       (i * bitsize) % HOST_CHAR_BIT,
 					       bitsize, elttype);
-	  if (TYPE_LENGTH (check_typedef (value_type (v0)))
-	      != TYPE_LENGTH (check_typedef (value_type (v1))))
+	  if (check_typedef (v0->type ())->length ()
+	      != check_typedef (v1->type ())->length ())
 	    break;
-	  if (!value_contents_eq (v0, value_embedded_offset (v0),
-				  v1, value_embedded_offset (v1),
-				  TYPE_LENGTH (check_typedef (value_type (v0)))))
+	  if (!v0->contents_eq (v0->embedded_offset (),
+				v1, v1->embedded_offset (),
+				check_typedef (v0->type ())->length ()))
 	    break;
 	}
 
@@ -229,13 +209,11 @@ 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);
+	  opts.deref_ref = false;
+	  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);
+	  gdb_printf (stream, _(" %p[<repeats %u times>%p]"),
+		      metadata_style.style ().ptr (), i - i0, nullptr);
 	  annotate_elt_rep_end ();
 
 	}
@@ -244,27 +222,26 @@ val_print_packed_array_elements (struct
 	  int j;
 	  struct value_print_options opts = *options;
 
-	  opts.deref_ref = 0;
+	  opts.deref_ref = false;
 	  for (j = i0; j < i; j += 1)
 	    {
 	      if (j > i0)
 		{
 		  if (options->prettyformat_arrays)
 		    {
-		      fprintf_filtered (stream, ",\n");
-		      print_spaces_filtered (2 + 2 * recurse, stream);
+		      gdb_printf (stream, ",\n");
+		      print_spaces (2 + 2 * recurse, stream);
 		    }
 		  else
 		    {
-		      fprintf_filtered (stream, ", ");
+		      gdb_printf (stream, ", ");
 		    }
-		  wrap_here (n_spaces (2 + 2 * recurse));
+		  stream->wrap_here (2 + 2 * recurse);
 		  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 ();
 	    }
 	}
@@ -273,16 +250,8 @@ val_print_packed_array_elements (struct
   annotate_array_section_end ();
   if (i < len)
     {
-      fprintf_filtered (stream, "...");
+      gdb_printf (stream, "...");
     }
-
-  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
@@ -302,12 +271,16 @@ ada_emit_char (int c, struct type *type,
   if (c <= UCHAR_MAX && isascii (c) && isprint (c))
     {
       if (c == quoter && c == '"')
-	fprintf_filtered (stream, "\"\"");
+	gdb_printf (stream, "\"\"");
       else
-	fprintf_filtered (stream, "%c", c);
+	gdb_printf (stream, "%c", c);
     }
   else
-    fprintf_filtered (stream, "[\"%0*x\"]", type_len * 2, c);
+    {
+      /* Follow GNAT's lead here and only use 6 digits for
+	 wide_wide_character.  */
+      gdb_printf (stream, "[\"%0*x\"]", std::min (6, type_len * 2), c);
+    }
 }
 
 /* Character #I of STRING, given that TYPE_LEN is the size in bytes
@@ -321,7 +294,7 @@ char_at (const gdb_byte *string, int i,
     return string[i];
   else
     return (int) extract_unsigned_integer (string + type_len * i,
-                                           type_len, byte_order);
+					   type_len, byte_order);
 }
 
 /* Print a floating-point value of type TYPE, pointed to in GDB by
@@ -337,9 +310,16 @@ ada_print_floating (const gdb_byte *vala
 
   print_floating (valaddr, type, &tmp_stream);
 
-  std::string &s = tmp_stream.string ();
+  std::string s = tmp_stream.release ();
   size_t skip_count = 0;
 
+  /* Don't try to modify a result representing an error.  */
+  if (s[0] == '<')
+    {
+      gdb_puts (s.c_str (), stream);
+      return;
+    }
+
   /* Modify for Ada rules.  */
 
   size_t pos = s.find ("inf");
@@ -370,20 +350,20 @@ ada_print_floating (const gdb_byte *vala
     {
       pos = s.find ('e');
       if (pos == std::string::npos)
-	fprintf_filtered (stream, "%s.0", s.c_str ());
+	gdb_printf (stream, "%s.0", s.c_str ());
       else
-	fprintf_filtered (stream, "%.*s.0%s", (int) pos, s.c_str (), &s[pos]);
+	gdb_printf (stream, "%.*s.0%s", (int) pos, s.c_str (), &s[pos]);
     }
   else
-    fprintf_filtered (stream, "%s", &s[skip_count]);
+    gdb_printf (stream, "%s", &s[skip_count]);
 }
 
 void
 ada_printchar (int c, struct type *type, struct ui_file *stream)
 {
-  fputs_filtered ("'", stream);
-  ada_emit_char (c, type, stream, '\'', TYPE_LENGTH (type));
-  fputs_filtered ("'", stream);
+  gdb_puts ("'", stream);
+  ada_emit_char (c, type, stream, '\'', type->length ());
+  gdb_puts ("'", stream);
 }
 
 /* [From print_type_scalar in typeprint.c].   Print VAL on STREAM in a
@@ -393,9 +373,6 @@ ada_printchar (int c, struct type *type,
 void
 ada_print_scalar (struct type *type, LONGEST val, struct ui_file *stream)
 {
-  unsigned int i;
-  unsigned len;
-
   if (!type)
     {
       print_longest (stream, 'd', 0, val);
@@ -404,42 +381,34 @@ 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);
-      for (i = 0; i < len; i++)
-	{
-	  if (TYPE_FIELD_ENUMVAL (type, i) == val)
-	    {
-	      break;
-	    }
-	}
-      if (i < len)
-	{
-	  fputs_filtered (ada_enum_name (TYPE_FIELD_NAME (type, i)), stream);
-	}
-      else
-	{
+      {
+	std::optional<LONGEST> posn = discrete_position (type, val);
+	if (posn.has_value ())
+	  fputs_styled (ada_enum_name (type->field (*posn).name ()),
+			variable_name_style.style (), stream);
+	else
 	  print_longest (stream, 'd', 0, val);
-	}
+      }
       break;
 
     case TYPE_CODE_INT:
-      print_longest (stream, TYPE_UNSIGNED (type) ? 'u' : 'd', 0, val);
+      print_longest (stream, type->is_unsigned () ? 'u' : 'd', 0, val);
       break;
 
     case TYPE_CODE_CHAR:
-      LA_PRINT_CHAR (val, type, stream);
+      current_language->printchar (val, type, stream);
       break;
 
     case TYPE_CODE_BOOL:
-      fprintf_filtered (stream, val ? "true" : "false");
+      gdb_printf (stream, val ? "true" : "false");
       break;
 
     case TYPE_CODE_RANGE:
-      ada_print_scalar (TYPE_TARGET_TYPE (type), val, stream);
+      ada_print_scalar (type->target_type (), val, stream);
       return;
 
     case TYPE_CODE_UNDEF:
@@ -484,14 +453,15 @@ printstr (struct ui_file *stream, struct
 
   if (length == 0)
     {
-      fputs_filtered ("\"\"", stream);
+      gdb_puts ("\"\"", stream);
       return;
     }
 
-  for (i = 0; i < length && things_printed < options->print_max; i += 1)
+  unsigned int print_max_chars = get_print_max_chars (options);
+  for (i = 0; i < length && things_printed < print_max_chars; i += 1)
     {
       /* Position of the character we are examining
-         to see whether it is repeated.  */
+	 to see whether it is repeated.  */
       unsigned int rep1;
       /* Number of repetitions we have detected so far.  */
       unsigned int reps;
@@ -500,7 +470,7 @@ printstr (struct ui_file *stream, struct
 
       if (need_comma)
 	{
-	  fputs_filtered (", ", stream);
+	  gdb_puts (", ", stream);
 	  need_comma = 0;
 	}
 
@@ -518,15 +488,15 @@ printstr (struct ui_file *stream, struct
 	{
 	  if (in_quotes)
 	    {
-	      fputs_filtered ("\", ", stream);
+	      gdb_puts ("\", ", stream);
 	      in_quotes = 0;
 	    }
-	  fputs_filtered ("'", stream);
+	  gdb_puts ("'", stream);
 	  ada_emit_char (char_at (string, i, type_len, byte_order),
 			 elttype, stream, '\'', type_len);
-	  fputs_filtered ("'", stream);
-	  fprintf_filtered (stream, _(" %p[<repeats %u times>%p]"),
-			    metadata_style.style ().ptr (), reps, nullptr);
+	  gdb_puts ("'", stream);
+	  gdb_printf (stream, _(" %p[<repeats %u times>%p]"),
+		      metadata_style.style ().ptr (), reps, nullptr);
 	  i = rep1 - 1;
 	  things_printed += options->repeat_count_threshold;
 	  need_comma = 1;
@@ -535,7 +505,7 @@ printstr (struct ui_file *stream, struct
 	{
 	  if (!in_quotes)
 	    {
-	      fputs_filtered ("\"", stream);
+	      gdb_puts ("\"", stream);
 	      in_quotes = 1;
 	    }
 	  ada_emit_char (char_at (string, i, type_len, byte_order),
@@ -546,10 +516,10 @@ printstr (struct ui_file *stream, struct
 
   /* Terminate the quotes if necessary.  */
   if (in_quotes)
-    fputs_filtered ("\"", stream);
+    gdb_puts ("\"", stream);
 
   if (force_ellipses || i < length)
-    fputs_filtered ("...", stream);
+    gdb_puts ("...", stream);
 }
 
 void
@@ -558,44 +528,38 @@ ada_printstr (struct ui_file *stream, st
 	      const char *encoding, int force_ellipses,
 	      const struct value_print_options *options)
 {
-  printstr (stream, type, string, length, force_ellipses, TYPE_LENGTH (type),
+  printstr (stream, type, string, length, force_ellipses, type->length (),
 	    options);
 }
 
 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 ();
+  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);
+
+  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 at VALADDR + OFFSET having structure type TYPE.
+/* Print out fields of VALUE.
 
-   TYPE, VALADDR, OFFSET, STREAM, RECURSE, and OPTIONS have the same
-   meanings as in ada_print_value and ada_val_print.
+   STREAM, RECURSE, and OPTIONS have the same meanings as in
+   ada_print_value and ada_value_print.
 
-   OUTER_TYPE and OUTER_OFFSET give type and address of enclosing
-   record (used to get discriminant values when printing variant
-   parts).
+   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 +568,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 ();
+  len = type->num_fields ();
 
   for (i = 0; i < len; i += 1)
     {
@@ -623,52 +586,49 @@ 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;
 	}
 
       if (comma_needed)
-	fprintf_filtered (stream, ", ");
+	gdb_printf (stream, ", ");
       comma_needed = 1;
 
       if (options->prettyformat)
 	{
-	  fprintf_filtered (stream, "\n");
-	  print_spaces_filtered (2 + 2 * recurse, stream);
+	  gdb_printf (stream, "\n");
+	  print_spaces (2 + 2 * recurse, stream);
 	}
       else
 	{
-	  wrap_here (n_spaces (2 + 2 * recurse));
+	  stream->wrap_here (2 + 2 * recurse);
 	}
 
-      annotate_field_begin (TYPE_FIELD_TYPE (type, i));
-      fprintf_filtered (stream, "%.*s",
-			ada_name_prefix_len (TYPE_FIELD_NAME (type, i)),
-			TYPE_FIELD_NAME (type, i));
+      annotate_field_begin (type->field (i).type ());
+      gdb_printf (stream, "%.*s",
+		  ada_name_prefix_len (type->field (i).name ()),
+		  type->field (i).name ());
       annotate_field_name_end ();
-      fputs_filtered (" => ", stream);
+      gdb_puts (" => ", stream);
       annotate_field_value ();
 
-      if (TYPE_FIELD_PACKED (type, i))
+      if (type->field (i).is_packed ())
 	{
 	  /* Bitfields require special handling, especially due to byte
 	     order problems.  */
-	  if (HAVE_CPLUS_STRUCT (type) && TYPE_FIELD_IGNORE (type, i))
+	  if (type->field (i).is_ignored ())
 	    {
 	      fputs_styled (_("<optimized out or zero length>"),
 			    metadata_style.style (), stream);
@@ -676,32 +636,28 @@ print_field_values (struct type *type, c
 	  else
 	    {
 	      struct value *v;
-	      int bit_pos = TYPE_FIELD_BITPOS (type, i);
-	      int bit_size = TYPE_FIELD_BITSIZE (type, i);
+	      int bit_pos = type->field (i).loc_bitpos ();
+	      int bit_size = type->field (i).bitsize ();
 	      struct value_print_options opts;
 
-	      adjust_type_signedness (TYPE_FIELD_TYPE (type, i));
 	      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);
+	      opts.deref_ref = false;
+	      common_val_print (v, stream, recurse + 1, &opts, language);
 	    }
 	}
       else
 	{
 	  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);
+	  opts.deref_ref = false;
+
+	  struct value *v = value_field (value, i);
+	  common_val_print (v, stream, recurse + 1, &opts, language);
 	}
       annotate_field_end ();
     }
@@ -714,13 +670,12 @@ 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);
-  struct type *elttype = TYPE_TARGET_TYPE (type);
+  struct type *elttype = type->target_type ();
   unsigned int eltlen;
   unsigned int len;
 
@@ -729,24 +684,22 @@ ada_val_print_string (struct type *type,
      Similarly, the size of ELTTYPE should also be non-null, since
      it's a character-like type.  */
   gdb_assert (elttype != NULL);
-  gdb_assert (TYPE_LENGTH (elttype) != 0);
-
-  eltlen = TYPE_LENGTH (elttype);
-  len = TYPE_LENGTH (type) / eltlen;
+  gdb_assert (elttype->length () != 0);
 
-  if (options->prettyformat_arrays)
-    print_spaces_filtered (2 + 2 * recurse, stream);
+  eltlen = elttype->length ();
+  len = type->length () / eltlen;
 
   /* If requested, look for the first null char and only print
      elements up to it.  */
   if (options->stop_print_at_null)
     {
+      unsigned int print_max_chars = get_print_max_chars (options);
       int temp_len;
 
       /* Look for a NULL char.  */
       for (temp_len = 0;
 	   (temp_len < len
-	    && temp_len < options->print_max
+	    && temp_len < print_max_chars
 	    && char_at (valaddr + offset_aligned,
 			temp_len, eltlen, byte_order) != 0);
 	   temp_len += 1);
@@ -757,64 +710,31 @@ ada_val_print_string (struct type *type,
 	    eltlen, options);
 }
 
-/* Implement Ada val_print-ing for GNAT arrays (Eg. fat pointers,
-   thin pointers, etc).  */
+/* Implement Ada value_print'ing for the case where TYPE is a
+   TYPE_CODE_PTR.  */
 
 static void
-ada_val_print_gnat_array (struct type *type, const gdb_byte *valaddr,
-			  int offset, 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)
 {
-  struct value *mark = value_mark ();
-  struct value *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.  */
-    val = ada_coerce_to_simple_array_ptr (val);
-  else
-    val = ada_coerce_to_simple_array (val);
-  if (val == NULL)
+  if (!options->format
+      && val->type ()->target_type ()->code () == TYPE_CODE_INT
+      && val->type ()->target_type ()->length () == 0)
     {
-      gdb_assert (TYPE_CODE (type) == TYPE_CODE_TYPEDEF);
-      fprintf_filtered (stream, "0x0");
+      gdb_puts ("null", stream);
+      return;
     }
-  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);
-}
 
-/* Implement Ada val_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)
-{
-  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 (val->type ());
   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);
+	gdb_printf (stream, " (%s)", name.get ());
     }
 }
 
@@ -822,55 +742,25 @@ 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 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);
-
-      const char *fmt = TYPE_LENGTH (type) < 4 ? "%.11g" : "%.17g";
-      std::string str
-	= target_float_to_string (value_contents (v), value_type (v), 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))
+  struct type *type = ada_check_typedef (val->type ());
+  const gdb_byte *valaddr = val->contents_for_printing ().data ();
+
+  if (type->code () == TYPE_CODE_RANGE
+      && (type->target_type ()->code () == TYPE_CODE_ENUM
+	  || type->target_type ()->code () == TYPE_CODE_BOOL
+	  || type->target_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));
+	 differently, so recurse for those as well.  */
+      struct type *target_type = type->target_type ();
+      val = value_cast (target_type, val);
+      common_val_print (val, stream, recurse + 1, options,
+			language_def (language_ada));
       return;
     }
   else
@@ -883,8 +773,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))
 	{
@@ -894,26 +783,24 @@ ada_val_print_num (struct type *type, co
 	     so we have to work-around this deficiency by handling
 	     System.Address values as a special case.  */
 
-	  struct gdbarch *gdbarch = get_type_arch (type);
+	  struct gdbarch *gdbarch = type->arch ();
 	  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, "(");
+	  gdb_printf (stream, "(");
 	  type_print (type, "", stream, -1);
-	  fprintf_filtered (stream, ") ");
-	  fputs_filtered (paddress (gdbarch, addr), stream);
+	  gdb_printf (stream, ") ");
+	  gdb_puts (paddress (gdbarch, addr), stream);
 	}
       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);
+	      gdb_puts (" ", stream);
+	      c = unpack_long (type, valaddr);
 	      ada_printchar (c, type, stream);
 	    }
 	}
@@ -925,127 +812,96 @@ 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;
-  unsigned int len;
   LONGEST val;
 
   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);
-  val = unpack_long (type, valaddr + offset_aligned);
-  for (i = 0; i < len; i++)
-    {
-      QUIT;
-      if (val == TYPE_FIELD_ENUMVAL (type, i))
-	break;
-    }
+  struct type *type = ada_check_typedef (value->type ());
+  const gdb_byte *valaddr = value->contents_for_printing ().data ();
+  int offset_aligned = ada_aligned_value_addr (type, valaddr) - valaddr;
 
-  if (i < len)
+  val = unpack_long (type, valaddr + offset_aligned);
+  std::optional<LONGEST> posn = discrete_position (type, val);
+  if (posn.has_value ())
     {
-      const char *name = ada_enum_name (TYPE_FIELD_NAME (type, i));
+      const char *name = ada_enum_name (type->field (*posn).name ());
 
       if (name[0] == '\'')
-	fprintf_filtered (stream, "%ld %s", (long) val, name);
+	gdb_printf (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.  */
+/* Implement Ada val_print'ing for the case where the type is
+   TYPE_CODE_STRUCT or TYPE_CODE_UNION.  */
 
 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)
+ada_val_print_struct_union (struct value *value,
+			    struct ui_file *stream,
+			    int recurse,
+			    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.  */
-
-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)
-{
-  if (ada_is_bogus_array_descriptor (type))
-    {
-      fprintf_filtered (stream, "(...?)");
-      return;
-    }
+  gdb_printf (stream, "(");
 
-  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");
-      print_spaces_filtered (2 * recurse, stream);
+      gdb_printf (stream, "\n");
+      print_spaces (2 * recurse, stream);
     }
 
-  fprintf_filtered (stream, ")");
+  gdb_printf (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 (val->type ());
+
   /* 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 = val->contents_for_printing ().data ();
+      int offset_aligned = ada_aligned_value_addr (type, valaddr) - valaddr;
+
+      ada_val_print_string (type, valaddr, offset_aligned, stream, recurse,
 			    options);
       return;
     }
 
-  fprintf_filtered (stream, "(");
+  gdb_printf (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);
+
+  if (val->entirely_optimized_out ())
+    val_print_optimized_out (val, stream);
+  else if (type->field (0).bitsize () > 0)
+    {
+      const gdb_byte *valaddr = val->contents_for_printing ().data ();
+      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);
-  fprintf_filtered (stream, ")");
+    value_print_array_elements (val, stream, recurse, options, 0);
+  gdb_printf (stream, ")");
 }
 
 /* Implement Ada val_print'ing for the case where TYPE is
@@ -1063,11 +919,11 @@ ada_val_print_ref (struct type *type, co
      of the object value would be confusing to an Ada programmer.
      So, for Ada values, we print the actual dereferenced value
      regardless.  */
-  struct type *elttype = check_typedef (TYPE_TARGET_TYPE (type));
+  struct type *elttype = check_typedef (type->target_type ());
   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);
@@ -1077,7 +933,7 @@ ada_val_print_ref (struct type *type, co
   deref_val = coerce_ref_if_computed (original_value);
   if (deref_val)
     {
-      if (ada_is_tagged_type (value_type (deref_val), 1))
+      if (ada_is_tagged_type (deref_val->type (), 1))
 	deref_val = ada_tag_value_at_base_address (deref_val);
 
       common_val_print (deref_val, stream, recurse + 1, options,
@@ -1088,158 +944,140 @@ ada_val_print_ref (struct type *type, co
   deref_val_int = unpack_pointer (type, valaddr + offset_aligned);
   if (deref_val_int == 0)
     {
-      fputs_filtered ("(null)", stream);
+      gdb_puts ("(null)", stream);
       return;
     }
 
   deref_val
     = ada_value_ind (value_from_pointer (lookup_pointer_type (elttype),
 					 deref_val_int));
-  if (ada_is_tagged_type (value_type (deref_val), 1))
+  if (ada_is_tagged_type (deref_val->type (), 1))
     deref_val = ada_tag_value_at_base_address (deref_val);
 
-  /* Make sure that the object does not have an unreasonable size
-     before trying to print it.  This can happen for instance with
-     references to dynamic objects whose contents is uninitialized
-     (Eg: an array whose bounds are not set yet).  */
-  ada_ensure_varsize_limit (value_type (deref_val));
-
-  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));
+  if (deref_val->lazy ())
+    deref_val->fetch_lazy ();
+
+  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 its
+   caller).  */
 
-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)
+void
+ada_value_print_inner (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 (val->type ());
 
   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);
-      return;
+      /* 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);
+      val = ada_get_decoded_value (val);
+      if (val == nullptr)
+	{
+	  gdb_assert (type->code () == TYPE_CODE_TYPEDEF);
+	  gdb_printf (stream, "0x0");
+	  return;
+	}
     }
+  else
+    val = ada_to_fixed_value (val);
 
-  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);
+  type = val->type ();
+  struct type *saved_type = type;
 
-  switch (TYPE_CODE (type))
+  const gdb_byte *valaddr = val->contents_for_printing ().data ();
+  CORE_ADDR address = val->address ();
+  gdb::array_view<const gdb_byte> view
+    = gdb::make_array_view (valaddr, type->length ());
+  type = ada_check_typedef (resolve_dynamic_type (type, view, address));
+  if (type != saved_type)
+    {
+      val = val->copy ();
+      val->deprecated_set_type (type);
+    }
+
+  if (is_fixed_point_type (type))
+    type = type->fixed_point_type_base_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.  */
-
-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)
-{
-  try
-    {
-      ada_val_print_1 (type, embedded_offset, address,
-		       stream, recurse, val, options);
-    }
-  catch (const gdb_exception_error &except)
-    {
-      fprintf_styled (stream, metadata_style.style (),
-		      _("<error reading variable: %s>"),
-		      except.what ());
-    }
-}
-
 void
 ada_value_print (struct value *val0, struct ui_file *stream,
 		 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 type *type = ada_check_typedef (val->type ());
   struct value_print_options opts;
 
-  /* If it is a pointer, indicate what it points to.  */
-  if (TYPE_CODE (type) == TYPE_CODE_PTR)
+  /* If it is a pointer, indicate what it points to; but not for
+     "void *" pointers.  */
+  if (type->code () == TYPE_CODE_PTR
+      && !(type->target_type ()->code () == TYPE_CODE_INT
+	   && type->target_type ()->length () == 0))
     {
       /* 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_UNSIGNED (TYPE_TARGET_TYPE (type)))
+	 type is indicated by the quoted string anyway.  */
+      if (type->target_type ()->length () != sizeof (char)
+	  || type->target_type ()->code () != TYPE_CODE_INT
+	  || type->target_type ()->is_unsigned ())
 	{
-	  fprintf_filtered (stream, "(");
+	  gdb_printf (stream, "(");
 	  type_print (type, "", stream, -1);
-	  fprintf_filtered (stream, ") ");
+	  gdb_printf (stream, ") ");
 	}
     }
   else if (ada_is_array_descriptor_type (type))
@@ -1247,24 +1085,15 @@ 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)
-        {
-	  fprintf_filtered (stream, "(");
+      if (type->code () == TYPE_CODE_TYPEDEF)
+	{
+	  gdb_printf (stream, "(");
 	  type_print (type, "", stream, -1);
-	  fprintf_filtered (stream, ") ");
+	  gdb_printf (stream, ") ");
 	}
     }
-  else if (ada_is_bogus_array_descriptor (type))
-    {
-      fprintf_filtered (stream, "(");
-      type_print (type, "", stream, -1);
-      fprintf_filtered (stream, ") (...?)");
-      return;
-    }
 
   opts = *options;
-  opts.deref_ref = 1;
-  val_print (type,
-	     value_embedded_offset (val), address,
-	     stream, 0, val, &opts, current_language);
+  opts.deref_ref = true;
+  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.20200303/gdb/ada-varobj.c ./gdb/ada-varobj.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ada-varobj.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ada-varobj.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* varobj support for Ada.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "ada-lang.h"
 #include "varobj.h"
 #include "language.h"
@@ -63,10 +62,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_ptr)->type ());
   else
     *type_ptr = ada_get_decoded_type (*type_ptr);
 }
@@ -82,7 +81,7 @@ ada_varobj_scalar_image (struct type *ty
   string_file buf;
 
   ada_print_scalar (type, val, &buf);
-  return std::move (buf.string ());
+  return buf.release ();
 }
 
 /* Assuming that the (PARENT_VALUE, PARENT_TYPE) pair designates
@@ -102,10 +101,10 @@ ada_varobj_struct_elt (struct value *par
   if (parent_value)
     {
       value = value_field (parent_value, fieldno);
-      type = value_type (value);
+      type = value->type ();
     }
   else
-    type = TYPE_FIELD_TYPE (parent_type, fieldno);
+    type = parent_type->field (fieldno).type ();
 
   if (child_value)
     *child_value = value;
@@ -132,12 +131,12 @@ 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)
-	parent_type = TYPE_TARGET_TYPE (parent_type);
+      while (parent_type->code () == TYPE_CODE_TYPEDEF)
+	parent_type = parent_type->target_type ();
       parent_type = ada_coerce_to_simple_array_type (parent_type);
       parent_type = lookup_pointer_type (parent_type);
     }
@@ -150,10 +149,10 @@ ada_varobj_ind (struct value *parent_val
   if (parent_value)
     {
       value = ada_value_ind (parent_value);
-      type = value_type (value);
+      type = value->type ();
     }
   else
-    type = TYPE_TARGET_TYPE (parent_type);
+    type = parent_type->target_type ();
 
   if (child_value)
     *child_value = value;
@@ -178,13 +177,13 @@ 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);
+      type = value->type ();
     }
   else
-    type = TYPE_TARGET_TYPE (parent_type);
+    type = parent_type->target_type ();
 
   if (child_value)
     *child_value = value;
@@ -206,11 +205,13 @@ 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)
-      && !ada_is_array_descriptor_type (TYPE_TARGET_TYPE (*type))
-      && !ada_is_constrained_packed_array_type (TYPE_TARGET_TYPE (*type)))
+  if ((*type)->code () == TYPE_CODE_PTR
+      && ((*type)->target_type ()->code () == TYPE_CODE_STRUCT
+	  || (*type)->target_type ()->code () == TYPE_CODE_UNION)
+      && *value != nullptr
+      && value_as_address (*value) != 0
+      && !ada_is_array_descriptor_type ((*type)->target_type ())
+      && !ada_is_constrained_packed_array_type ((*type)->target_type ()))
     ada_varobj_ind (*value, *type, value, type);
 
   /* If this is a tagged type, we need to transform it a bit in order
@@ -219,7 +220,7 @@ ada_varobj_adjust_for_child_access (stru
   if (*value != NULL && ada_is_tagged_type (*type, 1))
     {
       *value = ada_tag_value_at_base_address (*value);
-      *type = value_type (*value);
+      *type = (*value)->type ();
     }
 }
 
@@ -234,7 +235,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 +271,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;
@@ -325,12 +326,16 @@ static int
 ada_varobj_get_ptr_number_of_children (struct value *parent_value,
 				       struct type *parent_type)
 {
-  struct type *child_type = TYPE_TARGET_TYPE (parent_type);
+  struct type *child_type = parent_type->target_type ();
 
   /* 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 +358,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);
 
@@ -374,16 +379,14 @@ ada_varobj_get_number_of_children (struc
    whose index is CHILD_INDEX:
 
      - If CHILD_NAME is not NULL, then a copy of the child's name
-       is saved in *CHILD_NAME.  This copy must be deallocated
-       with xfree after use.
+       is saved in *CHILD_NAME.
 
      - If CHILD_VALUE is not NULL, then save the child's value
        in *CHILD_VALUE. Same thing for the child's type with
        CHILD_TYPE if not NULL.
 
      - If CHILD_PATH_EXPR is not NULL, then compute the child's
-       path expression.  The resulting string must be deallocated
-       after use with xfree.
+       path expression.
 
        Computing the child's path expression requires the PARENT_PATH_EXPR
        to be non-NULL.  Otherwise, PARENT_PATH_EXPR may be null if
@@ -418,10 +421,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;
@@ -496,7 +499,7 @@ ada_varobj_describe_struct_child (struct
 		 name, except that we need to strip suffixes from it.
 		 For instance, fields with alignment constraints will
 		 have an __XVA suffix added to them.  */
-	      const char *field_name = TYPE_FIELD_NAME (parent_type, fieldno);
+	      const char *field_name = parent_type->field (fieldno).name ();
 	      int child_name_len = ada_name_prefix_len (field_name);
 
 	      *child_name = string_printf ("%.*s", child_name_len, field_name);
@@ -516,7 +519,7 @@ ada_varobj_describe_struct_child (struct
 		 name, except that we need to strip suffixes from it.
 		 For instance, fields with alignment constraints will
 		 have an __XVA suffix added to them.  */
-	      const char *field_name = TYPE_FIELD_NAME (parent_type, fieldno);
+	      const char *field_name = parent_type->field (fieldno).name ();
 	      int child_name_len = ada_name_prefix_len (field_name);
 
 	      *child_path_expr =
@@ -587,9 +590,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)
@@ -607,7 +610,7 @@ ada_varobj_describe_simple_array_child (
     {
       std::string index_img = ada_varobj_scalar_image (index_type, real_index);
 
-      /* Enumeration litterals by themselves are potentially ambiguous.
+      /* Enumeration literals by themselves are potentially ambiguous.
 	 For instance, consider the following package spec:
 
 	    package Pck is
@@ -615,10 +618,10 @@ ada_varobj_describe_simple_array_child (
 	       type Blood_Cells is (White, Red);
 	    end Pck;
 
-	 In this case, the litteral "red" for instance, or even
-	 the fully-qualified litteral "pck.red" cannot be resolved
+	 In this case, the literal "red" for instance, or even
+	 the fully-qualified literal "pck.red" cannot be resolved
 	 by itself.  Type qualification is needed to determine which
-	 enumeration litterals should be used.
+	 enumeration literals should be used.
 
 	 The following variable will be used to contain the name
 	 of the array index type when such type qualification is
@@ -627,11 +630,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)
-	index_type = TYPE_TARGET_TYPE (index_type);
+      while (index_type->code () == TYPE_CODE_RANGE)
+	index_type = index_type->target_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 +696,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 +705,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 +716,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,
@@ -800,9 +803,7 @@ ada_varobj_get_type_of_child (struct val
 }
 
 /* Return a string that contains the image of the given VALUE, using
-   the print options OPTS as the options for formatting the result.
-
-   The resulting string must be deallocated after use with xfree.  */
+   the print options OPTS as the options for formatting the result.  */
 
 static std::string
 ada_varobj_get_value_image (struct value *value,
@@ -811,7 +812,7 @@ ada_varobj_get_value_image (struct value
   string_file buffer;
 
   common_val_print (value, &buffer, 0, opts, current_language);
-  return std::move (buffer.string ());
+  return buffer.release ();
 }
 
 /* Assuming that the (VALUE, TYPE) pair designates an array varobj,
@@ -820,9 +821,7 @@ ada_varobj_get_value_image (struct value
    in the array inside square brackets, but there are situations where
    it's useful to add more info.
 
-   OPTS are the print options used when formatting the result.
-
-   The result should be deallocated after use using xfree.  */
+   OPTS are the print options used when formatting the result.  */
 
 static std::string
 ada_varobj_get_value_of_array_variable (struct value *value,
@@ -856,7 +855,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:
@@ -937,10 +936,10 @@ static bool
 ada_value_is_changeable_p (const struct varobj *var)
 {
   struct type *type = (var->value != nullptr
-		       ? value_type (var->value.get ()) : var->type);
+		       ? var->value->type () : var->type);
 
-  if (TYPE_CODE (type) == TYPE_CODE_REF)
-    type = TYPE_TARGET_TYPE (type);
+  if (type->code () == TYPE_CODE_REF)
+    type = type->target_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.20200303/gdb/addrmap.c ./gdb/addrmap.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/addrmap.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/addrmap.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,180 +17,69 @@
    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 "splay-tree.h"
-#include "gdb_obstack.h"
+#include "event-top.h"
+#include "gdbsupport/gdb_obstack.h"
 #include "addrmap.h"
+#include "gdbsupport/selftest.h"
 
 /* Make sure splay trees can actually hold the values we want to
    store in them.  */
-gdb_static_assert (sizeof (splay_tree_key) >= sizeof (CORE_ADDR *));
-gdb_static_assert (sizeof (splay_tree_value) >= sizeof (void *));
+static_assert (sizeof (splay_tree_key) >= sizeof (CORE_ADDR *));
+static_assert (sizeof (splay_tree_value) >= sizeof (void *));
 
 
-/* The "abstract class".  */
-
-/* Functions implementing the addrmap functions for a particular
-   implementation.  */
-struct addrmap_funcs
-{
-  void (*set_empty) (struct addrmap *self,
-                     CORE_ADDR start, CORE_ADDR end_inclusive,
-                     void *obj);
-  void *(*find) (struct addrmap *self, CORE_ADDR addr);
-  struct addrmap *(*create_fixed) (struct addrmap *self,
-                                   struct obstack *obstack);
-  void (*relocate) (struct addrmap *self, CORE_ADDR offset);
-  int (*foreach) (struct addrmap *self, addrmap_foreach_fn fn, void *data);
-};
-
-
-struct addrmap
-{
-  const struct addrmap_funcs *funcs;
-};
-
-
-void
-addrmap_set_empty (struct addrmap *map,
-                   CORE_ADDR start, CORE_ADDR end_inclusive,
-                   void *obj)
-{
-  map->funcs->set_empty (map, start, end_inclusive, obj);
-}
-
-
-void *
-addrmap_find (struct addrmap *map, CORE_ADDR addr)
-{
-  return map->funcs->find (map, addr);
-}
-
-
-struct addrmap *
-addrmap_create_fixed (struct addrmap *original, struct obstack *obstack)
-{
-  return original->funcs->create_fixed (original, obstack);
-}
-
-
-/* Relocate all the addresses in MAP by OFFSET.  (This can be applied
-   to either mutable or immutable maps.)  */
-void
-addrmap_relocate (struct addrmap *map, CORE_ADDR offset)
-{
-  map->funcs->relocate (map, offset);
-}
-
-
-int
-addrmap_foreach (struct addrmap *map, addrmap_foreach_fn fn, void *data)
-{
-  return map->funcs->foreach (map, fn, data);
-}
-
 /* Fixed address maps.  */
 
-/* A transition: a point in an address map where the value changes.
-   The map maps ADDR to VALUE, but if ADDR > 0, it maps ADDR-1 to
-   something else.  */
-struct addrmap_transition
-{
-  CORE_ADDR addr;
-  void *value;
-};
-
-
-struct addrmap_fixed
-{
-  struct addrmap addrmap;
-
-  /* The number of transitions in TRANSITIONS.  */
-  size_t num_transitions;
-
-  /* An array of transitions, sorted by address.  For every point in
-     the map where either ADDR == 0 or ADDR is mapped to one value and
-     ADDR - 1 is mapped to something different, we have an entry here
-     containing ADDR and VALUE.  (Note that this means we always have
-     an entry for address 0).  */
-  struct addrmap_transition transitions[1];
-};
-
-
-static void
-addrmap_fixed_set_empty (struct addrmap *self,
-                   CORE_ADDR start, CORE_ADDR end_inclusive,
-                   void *obj)
-{
-  internal_error (__FILE__, __LINE__,
-                  "addrmap_fixed_set_empty: "
-                  "fixed addrmaps can't be changed\n");
-}
-
-
-static void *
-addrmap_fixed_find (struct addrmap *self, CORE_ADDR addr)
+void *
+addrmap_fixed::do_find (CORE_ADDR addr) const
 {
-  struct addrmap_fixed *map = (struct addrmap_fixed *) self;
-  struct addrmap_transition *bottom = &map->transitions[0];
-  struct addrmap_transition *top = &map->transitions[map->num_transitions - 1];
+  const struct addrmap_transition *bottom = &transitions[0];
+  const struct addrmap_transition *top = &transitions[num_transitions - 1];
 
   while (bottom < top)
     {
       /* This needs to round towards top, or else when top = bottom +
-         1 (i.e., two entries are under consideration), then mid ==
-         bottom, and then we may not narrow the range when (mid->addr
-         < addr).  */
-      struct addrmap_transition *mid = top - (top - bottom) / 2;
+	 1 (i.e., two entries are under consideration), then mid ==
+	 bottom, and then we may not narrow the range when (mid->addr
+	 < addr).  */
+      const addrmap_transition *mid = top - (top - bottom) / 2;
 
       if (mid->addr == addr)
-        {
-          bottom = mid;
-          break;
-        }
+	{
+	  bottom = mid;
+	  break;
+	}
       else if (mid->addr < addr)
-        /* We don't eliminate mid itself here, since each transition
-           covers all subsequent addresses until the next.  This is why
-           we must round up in computing the midpoint.  */
-        bottom = mid;
+	/* We don't eliminate mid itself here, since each transition
+	   covers all subsequent addresses until the next.  This is why
+	   we must round up in computing the midpoint.  */
+	bottom = mid;
       else
-        top = mid - 1;
+	top = mid - 1;
     }
 
   return bottom->value;
 }
 
 
-static struct addrmap *
-addrmap_fixed_create_fixed (struct addrmap *self, struct obstack *obstack)
-{
-  internal_error (__FILE__, __LINE__,
-                  _("addrmap_create_fixed is not implemented yet "
-                    "for fixed addrmaps"));
-}
-
-
-static void
-addrmap_fixed_relocate (struct addrmap *self, CORE_ADDR offset)
+void
+addrmap_fixed::relocate (CORE_ADDR offset)
 {
-  struct addrmap_fixed *map = (struct addrmap_fixed *) self;
   size_t i;
 
-  for (i = 0; i < map->num_transitions; i++)
-    map->transitions[i].addr += offset;
+  for (i = 0; i < num_transitions; i++)
+    transitions[i].addr += offset;
 }
 
 
-static int
-addrmap_fixed_foreach (struct addrmap *self, addrmap_foreach_fn fn,
-		       void *data)
+int
+addrmap_fixed::do_foreach (addrmap_foreach_fn fn) const
 {
-  struct addrmap_fixed *map = (struct addrmap_fixed *) self;
   size_t i;
 
-  for (i = 0; i < map->num_transitions; i++)
+  for (i = 0; i < num_transitions; i++)
     {
-      int res = fn (data, map->transitions[i].addr, map->transitions[i].value);
+      int res = fn (transitions[i].addr, transitions[i].value);
 
       if (res != 0)
 	return res;
@@ -200,56 +89,14 @@ addrmap_fixed_foreach (struct addrmap *s
 }
 
 
-static const struct addrmap_funcs addrmap_fixed_funcs =
-{
-  addrmap_fixed_set_empty,
-  addrmap_fixed_find,
-  addrmap_fixed_create_fixed,
-  addrmap_fixed_relocate,
-  addrmap_fixed_foreach
-};
-
-
 
 /* Mutable address maps.  */
 
-struct addrmap_mutable
+/* Allocate a copy of CORE_ADDR.  */
+splay_tree_key
+addrmap_mutable::allocate_key (CORE_ADDR addr)
 {
-  struct addrmap addrmap;
-
-  /* The obstack to use for allocations for this map.  */
-  struct obstack *obstack;
-
-  /* A splay tree, with a node for each transition; there is a
-     transition at address T if T-1 and T map to different objects.
-
-     Any addresses below the first node map to NULL.  (Unlike
-     fixed maps, we have no entry at (CORE_ADDR) 0; it doesn't 
-     simplify enough.)
-
-     The last region is assumed to end at CORE_ADDR_MAX.
-
-     Since we can't know whether CORE_ADDR is larger or smaller than
-     splay_tree_key (unsigned long) --- I think both are possible,
-     given all combinations of 32- and 64-bit hosts and targets ---
-     our keys are pointers to CORE_ADDR values.  Since the splay tree
-     library doesn't pass any closure pointer to the key free
-     function, we can't keep a freelist for keys.  Since mutable
-     addrmaps are only used temporarily right now, we just leak keys
-     from deleted nodes; they'll be freed when the obstack is freed.  */
-  splay_tree tree;
-
-  /* A freelist for splay tree nodes, allocated on obstack, and
-     chained together by their 'right' pointers.  */
-  splay_tree_node free_nodes;
-};
-
-
-/* Allocate a copy of CORE_ADDR in MAP's obstack.  */
-static splay_tree_key
-allocate_key (struct addrmap_mutable *map, CORE_ADDR addr)
-{
-  CORE_ADDR *key = XOBNEW (map->obstack, CORE_ADDR);
+  CORE_ADDR *key = XNEW (CORE_ADDR);
 
   *key = addr;
   return (splay_tree_key) key;
@@ -257,31 +104,31 @@ allocate_key (struct addrmap_mutable *ma
 
 
 /* Type-correct wrappers for splay tree access.  */
-static splay_tree_node
-addrmap_splay_tree_lookup (struct addrmap_mutable *map, CORE_ADDR addr)
+splay_tree_node
+addrmap_mutable::splay_tree_lookup (CORE_ADDR addr) const
 {
-  return splay_tree_lookup (map->tree, (splay_tree_key) &addr);
+  return ::splay_tree_lookup (tree, (splay_tree_key) &addr);
 }
 
 
-static splay_tree_node
-addrmap_splay_tree_predecessor (struct addrmap_mutable *map, CORE_ADDR addr)
+splay_tree_node
+addrmap_mutable::splay_tree_predecessor (CORE_ADDR addr) const
 {
-  return splay_tree_predecessor (map->tree, (splay_tree_key) &addr);
+  return ::splay_tree_predecessor (tree, (splay_tree_key) &addr);
 }
 
 
-static splay_tree_node
-addrmap_splay_tree_successor (struct addrmap_mutable *map, CORE_ADDR addr)
+splay_tree_node
+addrmap_mutable::splay_tree_successor (CORE_ADDR addr)
 {
-  return splay_tree_successor (map->tree, (splay_tree_key) &addr);
+  return ::splay_tree_successor (tree, (splay_tree_key) &addr);
 }
 
 
-static void
-addrmap_splay_tree_remove (struct addrmap_mutable *map, CORE_ADDR addr)
+void
+addrmap_mutable::splay_tree_remove (CORE_ADDR addr)
 {
-  splay_tree_remove (map->tree, (splay_tree_key) &addr);
+  ::splay_tree_remove (tree, (splay_tree_key) &addr);
 }
 
 
@@ -306,43 +153,66 @@ addrmap_node_set_value (splay_tree_node
 }
 
 
-static void
-addrmap_splay_tree_insert (struct addrmap_mutable *map,
-			   CORE_ADDR key, void *value)
+void
+addrmap_mutable::splay_tree_insert (CORE_ADDR key, void *value)
 {
-  splay_tree_insert (map->tree,
-                     allocate_key (map, key),
-                     (splay_tree_value) value);
+  ::splay_tree_insert (tree,
+		       allocate_key (key),
+		       (splay_tree_value) value);
 }
 
 
 /* Without changing the mapping of any address, ensure that there is a
    tree node at ADDR, even if it would represent a "transition" from
    one value to the same value.  */
-static void
-force_transition (struct addrmap_mutable *self, CORE_ADDR addr)
+void
+addrmap_mutable::force_transition (CORE_ADDR addr)
 {
-  splay_tree_node n
-    = addrmap_splay_tree_lookup (self, addr);
+  splay_tree_node n = splay_tree_lookup (addr);
 
   if (! n)
     {
-      n = addrmap_splay_tree_predecessor (self, addr);
-      addrmap_splay_tree_insert (self, addr,
-                                 n ? addrmap_node_value (n) : NULL);
+      n = splay_tree_predecessor (addr);
+      splay_tree_insert (addr, n ? addrmap_node_value (n) : NULL);
     }
 }
 
 
+/* Compare keys as CORE_ADDR * values.  */
+static int
+splay_compare_CORE_ADDR_ptr (splay_tree_key ak, splay_tree_key bk)
+{
+  CORE_ADDR a = * (CORE_ADDR *) ak;
+  CORE_ADDR b = * (CORE_ADDR *) bk;
+
+  /* We can't just return a-b here, because of over/underflow.  */
+  if (a < b)
+    return -1;
+  else if (a == b)
+    return 0;
+  else
+    return 1;
+}
+
+
 static void
-addrmap_mutable_set_empty (struct addrmap *self,
-                           CORE_ADDR start, CORE_ADDR end_inclusive,
-                           void *obj)
+xfree_wrapper (splay_tree_key key)
+{
+  xfree ((void *) key);
+}
+
+bool
+addrmap_mutable::set_empty (CORE_ADDR start, CORE_ADDR end_inclusive,
+			    void *obj)
 {
-  struct addrmap_mutable *map = (struct addrmap_mutable *) self;
+  bool full_range = true;
   splay_tree_node n, next;
   void *prior_value;
 
+  if (tree == nullptr)
+    tree = splay_tree_new (splay_compare_CORE_ADDR_ptr, xfree_wrapper,
+			   nullptr /* no delete value */);
+
   /* If we're being asked to set all empty portions of the given
      address range to empty, then probably the caller is confused.
      (If that turns out to be useful in some cases, then we can change
@@ -356,239 +226,274 @@ addrmap_mutable_set_empty (struct addrma
      - Second pass: remove any unnecessary transitions.  */
 
   /* Establish transitions at the start and end.  */
-  force_transition (map, start);
+  force_transition (start);
   if (end_inclusive < CORE_ADDR_MAX)
-    force_transition (map, end_inclusive + 1);
+    force_transition (end_inclusive + 1);
 
   /* Walk the area, changing all NULL regions to OBJ.  */
-  for (n = addrmap_splay_tree_lookup (map, start), gdb_assert (n);
+  for (n = splay_tree_lookup (start), gdb_assert (n);
        n && addrmap_node_key (n) <= end_inclusive;
-       n = addrmap_splay_tree_successor (map, addrmap_node_key (n)))
+       n = splay_tree_successor (addrmap_node_key (n)))
     {
-      if (! addrmap_node_value (n))
-        addrmap_node_set_value (n, obj);
+      if (addrmap_node_value (n))
+	{
+	  /* Already mapped.  */
+	  full_range = false;
+	}
+      else
+	addrmap_node_set_value (n, obj);
     }
 
   /* Walk the area again, removing transitions from any value to
      itself.  Be sure to visit both the transitions we forced
      above.  */
-  n = addrmap_splay_tree_predecessor (map, start);
+  n = splay_tree_predecessor (start);
   prior_value = n ? addrmap_node_value (n) : NULL;
-  for (n = addrmap_splay_tree_lookup (map, start), gdb_assert (n);
+  for (n = splay_tree_lookup (start), gdb_assert (n);
        n && (end_inclusive == CORE_ADDR_MAX
-             || addrmap_node_key (n) <= end_inclusive + 1);
+	     || addrmap_node_key (n) <= end_inclusive + 1);
        n = next)
     {
-      next = addrmap_splay_tree_successor (map, addrmap_node_key (n));
+      next = splay_tree_successor (addrmap_node_key (n));
       if (addrmap_node_value (n) == prior_value)
-        addrmap_splay_tree_remove (map, addrmap_node_key (n));
+	splay_tree_remove (addrmap_node_key (n));
       else
-        prior_value = addrmap_node_value (n);
+	prior_value = addrmap_node_value (n);
     }
-}
-
 
-static void *
-addrmap_mutable_find (struct addrmap *self, CORE_ADDR addr)
-{
-  /* Not needed yet.  */
-  internal_error (__FILE__, __LINE__,
-                  _("addrmap_find is not implemented yet "
-                    "for mutable addrmaps"));
+  return full_range;
 }
 
 
-/* A function to pass to splay_tree_foreach to count the number of nodes
-   in the tree.  */
-static int
-splay_foreach_count (splay_tree_node n, void *closure)
+void *
+addrmap_mutable::do_find (CORE_ADDR addr) const
 {
-  size_t *count = (size_t *) closure;
-
-  (*count)++;
-  return 0;
-}
-
+  if (tree == nullptr)
+    return nullptr;
 
-/* A function to pass to splay_tree_foreach to copy entries into a
-   fixed address map.  */
-static int
-splay_foreach_copy (splay_tree_node n, void *closure)
-{
-  struct addrmap_fixed *fixed = (struct addrmap_fixed *) closure;
-  struct addrmap_transition *t = &fixed->transitions[fixed->num_transitions];
+  splay_tree_node n = splay_tree_lookup (addr);
+  if (n != nullptr)
+    {
+      gdb_assert (addrmap_node_key (n) == addr);
+      return addrmap_node_value (n);
+    }
 
-  t->addr = addrmap_node_key (n);
-  t->value = addrmap_node_value (n);
-  fixed->num_transitions++;
+  n = splay_tree_predecessor (addr);
+  if (n != nullptr)
+    {
+      gdb_assert (addrmap_node_key (n) < addr);
+      return addrmap_node_value (n);
+    }
 
-  return 0;
+  return nullptr;
 }
 
 
-static struct addrmap *
-addrmap_mutable_create_fixed (struct addrmap *self, struct obstack *obstack)
+addrmap_fixed::addrmap_fixed (struct obstack *obstack,
+			      const addrmap_mutable *mut)
 {
-  struct addrmap_mutable *mutable_obj = (struct addrmap_mutable *) self;
-  struct addrmap_fixed *fixed;
-  size_t num_transitions;
-  size_t alloc_len;
+  size_t transition_count = 0;
 
   /* Count the number of transitions in the tree.  */
-  num_transitions = 0;
-  splay_tree_foreach (mutable_obj->tree, splay_foreach_count, &num_transitions);
+  mut->foreach ([&] (CORE_ADDR start, const void *obj)
+    {
+      ++transition_count;
+      return 0;
+    });
 
   /* Include an extra entry for the transition at zero (which fixed
      maps have, but mutable maps do not.)  */
-  num_transitions++;
+  transition_count++;
 
-  alloc_len = sizeof (*fixed)
-	      + (num_transitions * sizeof (fixed->transitions[0]));
-  fixed = (struct addrmap_fixed *) obstack_alloc (obstack, alloc_len);
-  fixed->addrmap.funcs = &addrmap_fixed_funcs;
-  fixed->num_transitions = 1;
-  fixed->transitions[0].addr = 0;
-  fixed->transitions[0].value = NULL;
+  num_transitions = 1;
+  transitions = XOBNEWVEC (obstack, struct addrmap_transition,
+			   transition_count);
+  transitions[0].addr = 0;
+  transitions[0].value = NULL;
 
   /* Copy all entries from the splay tree to the array, in order 
      of increasing address.  */
-  splay_tree_foreach (mutable_obj->tree, splay_foreach_copy, fixed);
+  mut->foreach ([&] (CORE_ADDR start, const void *obj)
+    {
+      transitions[num_transitions].addr = start;
+      transitions[num_transitions].value = const_cast<void *> (obj);
+      ++num_transitions;
+      return 0;
+    });
 
   /* We should have filled the array.  */
-  gdb_assert (fixed->num_transitions == num_transitions);
-
-  return (struct addrmap *) fixed;
+  gdb_assert (num_transitions == transition_count);
 }
 
-
-static void
-addrmap_mutable_relocate (struct addrmap *self, CORE_ADDR offset)
-{
-  /* Not needed yet.  */
-  internal_error (__FILE__, __LINE__,
-                  _("addrmap_relocate is not implemented yet "
-                    "for mutable addrmaps"));
-}
-
-
-/* Struct to map addrmap's foreach function to splay_tree's version.  */
-struct mutable_foreach_data
-{
-  addrmap_foreach_fn fn;
-  void *data;
-};
-
-
 /* This is a splay_tree_foreach_fn.  */
 
 static int
 addrmap_mutable_foreach_worker (splay_tree_node node, void *data)
 {
-  struct mutable_foreach_data *foreach_data
-    = (struct mutable_foreach_data *) data;
+  addrmap_foreach_fn *fn = (addrmap_foreach_fn *) data;
 
-  return foreach_data->fn (foreach_data->data,
-			   addrmap_node_key (node),
-			   addrmap_node_value (node));
+  return (*fn) (addrmap_node_key (node), addrmap_node_value (node));
 }
 
 
-static int
-addrmap_mutable_foreach (struct addrmap *self, addrmap_foreach_fn fn,
-			 void *data)
+int
+addrmap_mutable::do_foreach (addrmap_foreach_fn fn) const
 {
-  struct addrmap_mutable *mutable_obj = (struct addrmap_mutable *) self;
-  struct mutable_foreach_data foreach_data;
-
-  foreach_data.fn = fn;
-  foreach_data.data = data;
-  return splay_tree_foreach (mutable_obj->tree, addrmap_mutable_foreach_worker,
-			     &foreach_data);
+  if (tree == nullptr)
+    return 0;
+  return splay_tree_foreach (tree, addrmap_mutable_foreach_worker, &fn);
 }
 
 
-static const struct addrmap_funcs addrmap_mutable_funcs =
+void
+addrmap_mutable::clear ()
 {
-  addrmap_mutable_set_empty,
-  addrmap_mutable_find,
-  addrmap_mutable_create_fixed,
-  addrmap_mutable_relocate,
-  addrmap_mutable_foreach
-};
+  if (tree != nullptr)
+    {
+      splay_tree_delete (tree);
+      tree = nullptr;
+    }
+}
 
 
-static void *
-splay_obstack_alloc (int size, void *closure)
-{
-  struct addrmap_mutable *map = (struct addrmap_mutable *) closure;
-  splay_tree_node n;
+/* See addrmap.h.  */
 
-  /* We should only be asked to allocate nodes and larger things.
-     (If, at some point in the future, this is no longer true, we can
-     just round up the size to sizeof (*n).)  */
-  gdb_assert (size >= sizeof (*n));
+void
+addrmap_dump (struct addrmap *map, struct ui_file *outfile, void *payload,
+	      gdb::function_view<void (struct ui_file *outfile,
+				       CORE_ADDR start_addr,
+				       const void *value)> annotate_value)
+{
+  /* True if the previously printed addrmap entry was for PAYLOAD.
+     If so, we want to print the next one as well (since the next
+     addrmap entry defines the end of the range).  */
+  bool previous_matched = false;
+
+  auto callback = [&] (CORE_ADDR start_addr, const void *obj)
+  {
+    QUIT;
+
+    bool matches = payload == nullptr || payload == obj;
+    const char *addr_str = nullptr;
+    if (matches)
+      addr_str = host_address_to_string (obj);
+    else if (previous_matched)
+      addr_str = "<ends here>";
+
+    if (matches || previous_matched)
+      {
+	gdb_printf (outfile, "  %s%s %s",
+		    payload != nullptr ? "  " : "",
+		    core_addr_to_string (start_addr),
+		    addr_str);
+	if (annotate_value != nullptr)
+	  annotate_value (outfile, start_addr, obj);
 
-  if (map->free_nodes)
-    {
-      n = map->free_nodes;
-      map->free_nodes = n->right;
-      return n;
-    }
-  else
-    return obstack_alloc (map->obstack, size);
-}
+	gdb_printf (outfile, "\n");
+      }
 
+    previous_matched = matches;
 
-static void
-splay_obstack_free (void *obj, void *closure)
-{
-  struct addrmap_mutable *map = (struct addrmap_mutable *) closure;
-  splay_tree_node n = (splay_tree_node) obj;
+    return 0;
+  };
 
-  /* We've asserted in the allocation function that we only allocate
-     nodes or larger things, so it should be safe to put whatever
-     we get passed back on the free list.  */
-  n->right = map->free_nodes;
-  map->free_nodes = n;
+  map->foreach (callback);
 }
 
+#if GDB_SELF_TEST
+namespace selftests {
 
-/* Compare keys as CORE_ADDR * values.  */
-static int
-splay_compare_CORE_ADDR_ptr (splay_tree_key ak, splay_tree_key bk)
-{
-  CORE_ADDR a = * (CORE_ADDR *) ak;
-  CORE_ADDR b = * (CORE_ADDR *) bk;
+/* Convert P to CORE_ADDR.  */
 
-  /* We can't just return a-b here, because of over/underflow.  */
-  if (a < b)
-    return -1;
-  else if (a == b)
-    return 0;
-  else
-    return 1;
+static CORE_ADDR
+core_addr (const void *p)
+{
+  return (CORE_ADDR) (uintptr_t) p;
 }
 
+/* Check that &ARRAY[LOW]..&ARRAY[HIGH] has VAL in MAP.  */
 
-struct addrmap *
-addrmap_create_mutable (struct obstack *obstack)
+static void
+check_addrmap_find (const addrmap &map, const char *array, unsigned int low,
+		    unsigned int high, const void *val)
 {
-  struct addrmap_mutable *map = XOBNEW (obstack, struct addrmap_mutable);
+  for (unsigned int i = low; i <= high; ++i)
+    SELF_CHECK (map.find (core_addr (&array[i])) == val);
+}
 
-  map->addrmap.funcs = &addrmap_mutable_funcs;
-  map->obstack = obstack;
+/* Entry point for addrmap unit tests.  */
 
-  /* splay_tree_new_with_allocator uses the provided allocation
-     function to allocate the main splay_tree structure itself, so our
-     free list has to be initialized before we create the tree.  */
-  map->free_nodes = NULL;
-
-  map->tree = splay_tree_new_with_allocator (splay_compare_CORE_ADDR_ptr,
-                                             NULL, /* no delete key */
-                                             NULL, /* no delete value */
-                                             splay_obstack_alloc,
-                                             splay_obstack_free,
-                                             map);
+static void
+test_addrmap ()
+{
+  /* We'll verify using the addresses of the elements of this array.  */
+  char array[20];
+
+  /* We'll verify using these values stored into the map.  */
+  void *val1 = &array[1];
+  void *val2 = &array[2];
+
+  /* Create mutable addrmap.  */
+  auto_obstack temp_obstack;
+  addrmap_mutable map;
+
+  /* Check initial state.  */
+  check_addrmap_find (map, array, 0, 19, nullptr);
+
+  /* Insert address range into mutable addrmap.  */
+  bool full_range_p
+    = map.set_empty (core_addr (&array[10]), core_addr (&array[12]), val1);
+  SELF_CHECK (full_range_p);
+  check_addrmap_find (map, array, 0, 9, nullptr);
+  check_addrmap_find (map, array, 10, 12, val1);
+  check_addrmap_find (map, array, 13, 19, nullptr);
+
+  /* Create corresponding fixed addrmap.  */
+  addrmap_fixed *map2
+    = new (&temp_obstack) addrmap_fixed (&temp_obstack, &map);
+  SELF_CHECK (map2 != nullptr);
+  check_addrmap_find (*map2, array, 0, 9, nullptr);
+  check_addrmap_find (*map2, array, 10, 12, val1);
+  check_addrmap_find (*map2, array, 13, 19, nullptr);
 
-  return (struct addrmap *) map;
+  /* Iterate over both addrmaps.  */
+  auto callback = [&] (CORE_ADDR start_addr, void *obj)
+    {
+      if (start_addr == core_addr (nullptr))
+	SELF_CHECK (obj == nullptr);
+      else if (start_addr == core_addr (&array[10]))
+	SELF_CHECK (obj == val1);
+      else if (start_addr == core_addr (&array[13]))
+	SELF_CHECK (obj == nullptr);
+      else
+	SELF_CHECK (false);
+      return 0;
+    };
+  SELF_CHECK (map.foreach (callback) == 0);
+  SELF_CHECK (map2->foreach (callback) == 0);
+
+  /* Relocate fixed addrmap.  */
+  map2->relocate (1);
+  check_addrmap_find (*map2, array, 0, 10, nullptr);
+  check_addrmap_find (*map2, array, 11, 13, val1);
+  check_addrmap_find (*map2, array, 14, 19, nullptr);
+
+  /* Insert partially overlapping address range into mutable addrmap.  */
+  full_range_p
+    = map.set_empty (core_addr (&array[11]), core_addr (&array[13]), val2);
+  SELF_CHECK (!full_range_p);
+  check_addrmap_find (map, array, 0, 9, nullptr);
+  check_addrmap_find (map, array, 10, 12, val1);
+  check_addrmap_find (map, array, 13, 13, val2);
+  check_addrmap_find (map, array, 14, 19, nullptr);
+}
+
+} /* namespace selftests */
+#endif /* GDB_SELF_TEST */
+
+INIT_GDB_FILE (addrmap)
+{
+#if GDB_SELF_TEST
+  selftests::register_test ("addrmap", selftests::test_addrmap);
+#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.20200303/gdb/addrmap.h ./gdb/addrmap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/addrmap.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/addrmap.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,8 +17,12 @@
    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 ADDRMAP_H
-#define ADDRMAP_H
+#ifndef GDB_ADDRMAP_H
+#define GDB_ADDRMAP_H
+
+#include "gdbsupport/function-view.h"
+#include "gdbsupport/gdb_obstack.h"
+#include "splay-tree.h"
 
 /* An address map is essentially a table mapping CORE_ADDRs onto GDB
    data structures, like blocks, symtabs, partial symtabs, and so on.
@@ -29,77 +33,209 @@
    Address maps come in two flavors: fixed, and mutable.  Mutable
    address maps consume more memory, but can be changed and extended.
    A fixed address map, once constructed (from a mutable address map),
-   can't be edited.  Both kinds of map are allocated in obstacks.  */
-
-/* The opaque type representing address maps.  */
-struct addrmap;
-
-/* Create a mutable address map which maps every address to NULL.
-   Allocate entries in OBSTACK.  */
-struct addrmap *addrmap_create_mutable (struct obstack *obstack);
-
-/* In the mutable address map MAP, associate the addresses from START
-   to END_INCLUSIVE that are currently associated with NULL with OBJ
-   instead.  Addresses mapped to an object other than NULL are left
-   unchanged.
-
-   As the name suggests, END_INCLUSIVE is also mapped to OBJ.  This
-   convention is unusual, but it allows callers to accurately specify
-   ranges that abut the top of the address space, and ranges that
-   cover the entire address space.
-
-   This operation seems a bit complicated for a primitive: if it's
-   needed, why not just have a simpler primitive operation that sets a
-   range to a value, wiping out whatever was there before, and then
-   let the caller construct more complicated operations from that,
-   along with some others for traversal?
-
-   It turns out this is the mutation operation we want to use all the
-   time, at least for now.  Our immediate use for address maps is to
-   represent lexical blocks whose address ranges are not contiguous.
-   We walk the tree of lexical blocks present in the debug info, and
-   only create 'struct block' objects after we've traversed all a
-   block's children.  If a lexical block declares no local variables
-   (and isn't the lexical block for a function's body), we omit it
-   from GDB's data structures entirely.
-
-   However, this means that we don't decide to create a block (and
-   thus record it in the address map) until after we've traversed its
-   children.  If we do decide to create the block, we do so at a time
-   when all its children have already been recorded in the map.  So
-   this operation --- change only those addresses left unset --- is
-   actually the operation we want to use every time.
-
-   It seems simpler to let the code which operates on the
-   representation directly deal with the hair of implementing these
-   semantics than to provide an interface which allows it to be
-   implemented efficiently, but doesn't reveal too much of the
-   representation.  */
-void addrmap_set_empty (struct addrmap *map,
-                        CORE_ADDR start, CORE_ADDR end_inclusive,
-                        void *obj);
-
-/* Return the object associated with ADDR in MAP.  */
-void *addrmap_find (struct addrmap *map, CORE_ADDR addr);
-
-/* Create a fixed address map which is a copy of the mutable address
-   map ORIGINAL.  Allocate entries in OBSTACK.  */
-struct addrmap *addrmap_create_fixed (struct addrmap *original,
-                                      struct obstack *obstack);
-
-/* Relocate all the addresses in MAP by OFFSET.  (This can be applied
-   to either mutable or immutable maps.)  */
-void addrmap_relocate (struct addrmap *map, CORE_ADDR offset);
+   can't be edited.  */
 
 /* The type of a function used to iterate over the map.
    OBJ is NULL for unmapped regions.  */
-typedef int (*addrmap_foreach_fn) (void *data, CORE_ADDR start_addr,
-				   void *obj);
-
-/* Call FN, passing it DATA, for every address in MAP, following an
-   in-order traversal.  If FN ever returns a non-zero value, the
-   iteration ceases immediately, and the value is returned.
-   Otherwise, this function returns 0.  */
-int addrmap_foreach (struct addrmap *map, addrmap_foreach_fn fn, void *data);
+using addrmap_foreach_fn
+  = gdb::function_view<int (CORE_ADDR start_addr, void *obj)>;
+using addrmap_foreach_const_fn
+  = gdb::function_view<int (CORE_ADDR start_addr, const void *obj)>;
+
+/* The base class for addrmaps.  */
+struct addrmap
+{
+  /* Return the object associated with ADDR in MAP.  */
+  const void *find (CORE_ADDR addr) const
+  { return this->do_find (addr); }
+
+  void *find (CORE_ADDR addr)
+  { return this->do_find (addr); }
+
+  /* Call FN for every address in MAP, following an in-order traversal.
+     If FN ever returns a non-zero value, the iteration ceases
+     immediately, and the value is returned.  Otherwise, this function
+     returns 0.  */
+  int foreach (addrmap_foreach_const_fn fn) const
+  { return this->do_foreach (fn); }
+
+  int foreach (addrmap_foreach_fn fn)
+  { return this->do_foreach (fn); }
+
+
+protected:
+  ~addrmap () = default;
+
+private:
+  /* Worker for find, implemented by sub-classes.  */
+  virtual void *do_find (CORE_ADDR addr) const = 0;
+
+  /* Worker for foreach, implemented by sub-classes.  */
+  virtual int do_foreach (addrmap_foreach_fn fn) const = 0;
+};
+
+struct addrmap_mutable;
+
+/* Fixed address maps.  */
+struct addrmap_fixed final : public addrmap,
+			     public allocate_on_obstack<addrmap_fixed>
+{
+public:
+
+  addrmap_fixed (struct obstack *obstack, const addrmap_mutable *mut);
+  DISABLE_COPY_AND_ASSIGN (addrmap_fixed);
+
+  /* It's fine to use the default move operators, because this addrmap
+     does not own the storage for the elements.  */
+  addrmap_fixed (addrmap_fixed &&other) = default;
+  addrmap_fixed &operator= (addrmap_fixed &&) = default;
+
+  /* Relocate all the addresses in this map by OFFSET.  */
+  void relocate (CORE_ADDR offset);
+
+private:
+  void *do_find (CORE_ADDR addr) const override;
+  int do_foreach (addrmap_foreach_fn fn) const override;
+
+  /* A transition: a point in an address map where the value changes.
+     The map maps ADDR to VALUE, but if ADDR > 0, it maps ADDR-1 to
+     something else.  */
+  struct addrmap_transition
+  {
+    CORE_ADDR addr;
+    void *value;
+  };
+
+  /* The number of transitions in TRANSITIONS.  */
+  size_t num_transitions;
+
+  /* An array of transitions, sorted by address.  For every point in
+     the map where either ADDR == 0 or ADDR is mapped to one value and
+     ADDR - 1 is mapped to something different, we have an entry here
+     containing ADDR and VALUE.  (Note that this means we always have
+     an entry for address 0).  */
+  struct addrmap_transition *transitions;
+};
+
+/* Mutable address maps.  */
+
+struct addrmap_mutable final : public addrmap
+{
+public:
+
+  addrmap_mutable () = default;
+  ~addrmap_mutable ()
+  {
+    clear ();
+  }
+
+  DISABLE_COPY_AND_ASSIGN (addrmap_mutable);
+
+  addrmap_mutable (addrmap_mutable &&other)
+    : tree (other.tree)
+  {
+    other.tree = nullptr;
+  }
+
+  addrmap_mutable &operator= (addrmap_mutable &&other)
+  {
+    /* Handle self-move.  */
+    if (this != &other)
+      {
+	clear ();
+	tree = other.tree;
+	other.tree = nullptr;
+      }
+    return *this;
+  }
+
+  /* In the mutable address map MAP, associate the addresses from START
+     to END_INCLUSIVE that are currently associated with NULL with OBJ
+     instead.  Addresses mapped to an object other than NULL are left
+     unchanged.  Return true if the full range is mapped to OBJ.
+
+     As the name suggests, END_INCLUSIVE is also mapped to OBJ.  This
+     convention is unusual, but it allows callers to accurately specify
+     ranges that abut the top of the address space, and ranges that
+     cover the entire address space.
+
+     This operation seems a bit complicated for a primitive: if it's
+     needed, why not just have a simpler primitive operation that sets a
+     range to a value, wiping out whatever was there before, and then
+     let the caller construct more complicated operations from that,
+     along with some others for traversal?
+
+     It turns out this is the mutation operation we want to use all the
+     time, at least for now.  Our immediate use for address maps is to
+     represent lexical blocks whose address ranges are not contiguous.
+     We walk the tree of lexical blocks present in the debug info, and
+     only create 'struct block' objects after we've traversed all a
+     block's children.  If a lexical block declares no local variables
+     (and isn't the lexical block for a function's body), we omit it
+     from GDB's data structures entirely.
+
+     However, this means that we don't decide to create a block (and
+     thus record it in the address map) until after we've traversed its
+     children.  If we do decide to create the block, we do so at a time
+     when all its children have already been recorded in the map.  So
+     this operation --- change only those addresses left unset --- is
+     actually the operation we want to use every time.
+
+     It seems simpler to let the code which operates on the
+     representation directly deal with the hair of implementing these
+     semantics than to provide an interface which allows it to be
+     implemented efficiently, but doesn't reveal too much of the
+     representation.  */
+  bool set_empty (CORE_ADDR start, CORE_ADDR end_inclusive,
+		  void *obj);
+
+  /* Clear this addrmap.  */
+  void clear ();
+
+private:
+  void *do_find (CORE_ADDR addr) const override;
+  int do_foreach (addrmap_foreach_fn fn) const override;
+
+  /* A splay tree, with a node for each transition; there is a
+     transition at address T if T-1 and T map to different objects.
+
+     Any addresses below the first node map to NULL.  (Unlike
+     fixed maps, we have no entry at (CORE_ADDR) 0; it doesn't 
+     simplify enough.)
+
+     The last region is assumed to end at CORE_ADDR_MAX.
+
+     Since we can't know whether CORE_ADDR is larger or smaller than
+     splay_tree_key (unsigned long) --- I think both are possible,
+     given all combinations of 32- and 64-bit hosts and targets ---
+     our keys are pointers to CORE_ADDR values.  Since the splay tree
+     library doesn't pass any closure pointer to the key free
+     function, we can't keep a freelist for keys.  Since mutable
+     addrmaps are only used temporarily right now, we just leak keys
+     from deleted nodes; they'll be freed when the obstack is freed.  */
+  splay_tree tree = nullptr;
+
+  /* Various helper methods.  */
+  splay_tree_key allocate_key (CORE_ADDR addr);
+  void force_transition (CORE_ADDR addr);
+  splay_tree_node splay_tree_lookup (CORE_ADDR addr) const;
+  splay_tree_node splay_tree_predecessor (CORE_ADDR addr) const;
+  splay_tree_node splay_tree_successor (CORE_ADDR addr);
+  void splay_tree_remove (CORE_ADDR addr);
+  void splay_tree_insert (CORE_ADDR key, void *value);
+};
+
+
+/* Dump the addrmap to OUTFILE.  If PAYLOAD is non-NULL, only dump any
+   components that map to PAYLOAD.  (If PAYLOAD is NULL, the entire
+   map is dumped.)  If ANNOTATE_VALUE is non-nullptr, call it for each
+   value.  */
+
+void addrmap_dump (struct addrmap *map, struct ui_file *outfile,
+		   void *payload,
+		   gdb::function_view<void (struct ui_file *outfile,
+					    CORE_ADDR start_addr,
+					    const void *value)>
+		     annotate_value = nullptr);
 
-#endif /* ADDRMAP_H */
+#endif /* GDB_ADDRMAP_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.20200303/gdb/agent.c ./gdb/agent.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/agent.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/agent.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,9 +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 "defs.h"
 #include "command.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "target.h"
 #include "gdbsupport/agent.h"
 #include "observable.h"
@@ -27,7 +26,7 @@
 
 static const char can_use_agent_on[] = "on";
 static const char can_use_agent_off[] = "off";
-static const char *can_use_agent_enum[] =
+static const char * const can_use_agent_enum[] =
 {
   can_use_agent_on,
   can_use_agent_off,
@@ -40,9 +39,9 @@ static void
 show_can_use_agent (struct ui_file *file, int from_tty,
 		    struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file,
-		    _("Debugger's willingness to use agent in inferior "
-		      "as a helper is %s.\n"), value);
+  gdb_printf (file,
+	      _("Debugger's willingness to use agent in inferior "
+		"as a helper is %s.\n"), value);
 }
 
 static void
@@ -52,7 +51,7 @@ set_can_use_agent (const char *args, int
   if (can_use && !agent_loaded_p ())
     {
       /* Since the setting was off, we may not have observed the objfiles and
-         therefore not looked up the required symbols.  Do so now.  */
+	 therefore not looked up the required symbols.  Do so now.  */
       for (objfile *objfile : current_program_space->objfiles ())
 	if (agent_look_up_symbols (objfile) == 0)
 	  break;
@@ -65,7 +64,7 @@ set_can_use_agent (const char *args, int
 static void
 agent_new_objfile (struct objfile *objfile)
 {
-  if (objfile == NULL || agent_loaded_p ())
+  if (agent_loaded_p ())
     return;
 
   if (can_use_agent == can_use_agent_off)
@@ -74,10 +73,10 @@ agent_new_objfile (struct objfile *objfi
   agent_look_up_symbols (objfile);
 }
 
-void
-_initialize_agent (void)
+INIT_GDB_FILE (agent)
 {
-  gdb::observers::new_objfile.attach (agent_new_objfile);
+  gdb::observers::new_objfile.attach (agent_new_objfile,
+				      "agent");
 
   add_setshow_enum_cmd ("agent", class_run,
 			can_use_agent_enum,
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aix-thread.c ./gdb/aix-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/aix-thread.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/aix-thread.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
    Written by Nick Duffek <nsd@redhat.com>.
 
    This file is part of GDB.
@@ -39,12 +39,11 @@
 
      */
 
-#include "defs.h"
 #include "gdbthread.h"
 #include "target.h"
 #include "inferior.h"
 #include "regcache.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "ppc-tdep.h"
 #include "observable.h"
 #include "objfiles.h"
@@ -55,6 +54,7 @@
 #include <sys/reg.h>
 #include <sched.h>
 #include <sys/pthdebug.h>
+#include <unordered_set>
 
 #if !HAVE_DECL_GETTHRDS
 extern int getthrds (pid_t, struct thrdsinfo64 *, int, tid_t *, int);
@@ -68,15 +68,6 @@ static bool debug_aix_thread;
 #define pthdb_tid_t	tid_t
 #endif
 
-/* Return whether to treat PID as a debuggable thread id.  */
-
-#define PD_TID(ptid)	(pd_active && ptid.tid () != 0)
-
-/* pthdb_user_t value that we pass to pthdb functions.  0 causes
-   PTHDB_BAD_USER errors, so use 1.  */
-
-#define PD_USER	1
-
 /* Success and failure values returned by pthdb callbacks.  */
 
 #define PDC_SUCCESS	PTHDB_SUCCESS
@@ -87,7 +78,6 @@ static bool debug_aix_thread;
 struct aix_thread_info : public private_thread_info
 {
   pthdb_pthread_t pdtid;	 /* thread's libpthdebug id */
-  pthdb_tid_t tid;			/* kernel thread id */
 };
 
 /* Return the aix_thread_info attached to THREAD.  */
@@ -95,7 +85,7 @@ struct aix_thread_info : public private_
 static aix_thread_info *
 get_aix_thread_info (thread_info *thread)
 {
-  return static_cast<aix_thread_info *> (thread->priv.get ());
+  return gdb::checked_static_cast<aix_thread_info *> (thread->priv.get ());
 }
 
 /* Information about a thread of which libpthdebug is aware.  */
@@ -124,7 +114,7 @@ public:
 
   void detach (inferior *, int) override;
   void resume (ptid_t, int, enum gdb_signal) override;
-  ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
+  ptid_t wait (ptid_t, struct target_waitstatus *, target_wait_flags) override;
 
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
@@ -144,29 +134,13 @@ public:
 
   const char *extra_thread_info (struct thread_info *) override;
 
-  ptid_t get_ada_task_ptid (long lwp, long thread) override;
+  ptid_t get_ada_task_ptid (long lwp, ULONGEST thread) override;
+
+  void update_thread_list () override;
 };
 
 static aix_thread_target aix_thread_ops;
 
-/* Address of the function that libpthread will call when libpthdebug
-   is ready to be initialized.  */
-
-static CORE_ADDR pd_brk_addr;
-
-/* Whether the current application is debuggable by pthdb.  */
-
-static int pd_able = 0;
-
-/* Whether a threaded application is being debugged.  */
-
-static int pd_active = 0;
-
-/* Whether the current architecture is 64-bit.  
-   Only valid when pd_able is true.  */
-
-static int arch64;
-
 /* Forward declarations for pthdb callbacks.  */
 
 static int pdc_symbol_addrs (pthdb_user_t, pthdb_symbol_t *, int);
@@ -196,9 +170,69 @@ static pthdb_callbacks_t pd_callbacks =
   NULL
 };
 
-/* Current pthdb session.  */
+/* Aix variable structure.  */
+struct aix_thread_variables
+{
+  /* Whether the current application is debuggable by pthdb.  */
+  int pd_able;
+
+  /* Whether a threaded application is being debugged.  */
+  int pd_active;
+
+  /* Current pthdb session.  */
+  pthdb_session_t pd_session;
+
+  /* Address of the function that libpthread will call when libpthdebug
+   is ready to be initialized.  */
+  CORE_ADDR pd_brk_addr;
+
+  /* Whether the current architecture is 64-bit.
+   Only valid when pd_able is true.  */
+  int arch64;
+
+  /* Describes the number of thread exit events reported.  */
+  std::unordered_set<pthdb_pthread_t> exited_threads;
+};
+
+/* Key to our per-inferior data.  */
+static const registry<inferior>::key<aix_thread_variables>
+  aix_thread_variables_handle;
+
+/* Function to Get aix_thread_variables data.  */
+static struct aix_thread_variables*
+get_aix_thread_variables_data (struct inferior *inf)
+{
+  if (inf == NULL)
+    return NULL;
+
+  struct aix_thread_variables* data;
+
+  data = aix_thread_variables_handle.get (inf);
+  if (data == NULL)
+    data = aix_thread_variables_handle.emplace (inf);
+
+  return data;
+}
+
+/* Helper to get data for ptid in a function.  */
 
-static pthdb_session_t pd_session;
+static struct aix_thread_variables*
+get_thread_data_helper_for_ptid (ptid_t ptid)
+{
+  inferior *inf = find_inferior_ptid (current_inferior ()->process_target (),
+					ptid);
+  return get_aix_thread_variables_data (inf);
+}
+
+/* Helper to get data for pid in a function.  */
+
+static struct aix_thread_variables*
+get_thread_data_helper_for_pid (pid_t pid)
+{
+  inferior *inf = find_inferior_pid (current_inferior ()->process_target (),
+				     pid);
+  return get_aix_thread_variables_data (inf);
+}
 
 /* Return a printable representation of pthdebug function return
    STATUS.  */
@@ -266,12 +300,21 @@ ptrace_check (int req, int id, int ret)
       if (ret == -1 && errno == EPERM)
 	{
 	  if (debug_aix_thread)
-	    fprintf_unfiltered (gdb_stdlog, 
-				"ptrace (%d, %d) = %d (errno = %d)\n",
-				req, id, ret, errno);
+	    gdb_printf (gdb_stdlog, 
+			"ptrace (%d, %d) = %d (errno = %d)\n",
+			req, id, ret, errno);
 	  return ret == -1 ? 0 : 1;
 	}
-      break;
+	break;
+     case PTT_READ_VEC:
+     case PTT_READ_VSX:
+	if (debug_aix_thread)
+	  gdb_printf (gdb_stdlog,
+		      "ptrace (%d, %d) = %d (errno = %d)\n",
+		      req, id, ret, errno);
+	if (ret == -1)
+	  return -1;
+	break;
     }
   error (_("aix-thread: ptrace (%d, %d) returned %d (errno = %d %s)"),
 	 req, id, ret, errno, safe_strerror (errno));
@@ -323,7 +366,7 @@ pid_to_prc (ptid_t *ptidp)
   ptid_t ptid;
 
   ptid = *ptidp;
-  if (PD_TID (ptid))
+  if (ptid.tid () != 0)
     *ptidp = ptid_t (ptid.pid ());
 }
 
@@ -331,43 +374,43 @@ pid_to_prc (ptid_t *ptidp)
    the address of SYMBOLS[<i>].name.  */
 
 static int
-pdc_symbol_addrs (pthdb_user_t user, pthdb_symbol_t *symbols, int count)
+pdc_symbol_addrs (pthdb_user_t user_current_pid, pthdb_symbol_t *symbols, int count)
 {
-  struct bound_minimal_symbol ms;
   int i;
   char *name;
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog,
-      "pdc_symbol_addrs (user = %ld, symbols = 0x%lx, count = %d)\n",
-      user, (long) symbols, count);
+    gdb_printf (gdb_stdlog,
+		"pdc_symbol_addrs (user_current_pid = %ld, symbols = 0x%lx, count = %d)\n",
+		user_current_pid, (long) symbols, count);
 
   for (i = 0; i < count; i++)
     {
       name = symbols[i].name;
       if (debug_aix_thread)
-	fprintf_unfiltered (gdb_stdlog, 
-			    "  symbols[%d].name = \"%s\"\n", i, name);
+	gdb_printf (gdb_stdlog, 
+		    "  symbols[%d].name = \"%s\"\n", i, name);
 
       if (!*name)
 	symbols[i].addr = 0;
       else
 	{
-	  ms = lookup_minimal_symbol (name, NULL, NULL);
+	  bound_minimal_symbol ms
+	    = lookup_minimal_symbol (current_program_space, name);
 	  if (ms.minsym == NULL)
 	    {
 	      if (debug_aix_thread)
-		fprintf_unfiltered (gdb_stdlog, " returning PDC_FAILURE\n");
+		gdb_printf (gdb_stdlog, " returning PDC_FAILURE\n");
 	      return PDC_FAILURE;
 	    }
-	  symbols[i].addr = BMSYMBOL_VALUE_ADDRESS (ms);
+	  symbols[i].addr = ms.value_address ();
 	}
       if (debug_aix_thread)
-	fprintf_unfiltered (gdb_stdlog, "  symbols[%d].addr = %s\n",
-			    i, hex_string (symbols[i].addr));
+	gdb_printf (gdb_stdlog, "  symbols[%d].addr = %s\n",
+		    i, hex_string (symbols[i].addr));
     }
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, " returning PDC_SUCCESS\n");
+    gdb_printf (gdb_stdlog, " returning PDC_SUCCESS\n");
   return PDC_SUCCESS;
 }
 
@@ -378,7 +421,7 @@ pdc_symbol_addrs (pthdb_user_t user, pth
    If successful return 0, else non-zero is returned.  */
 
 static int
-pdc_read_regs (pthdb_user_t user, 
+pdc_read_regs (pthdb_user_t user_current_pid,
 	       pthdb_tid_t tid,
 	       unsigned long long flags,
 	       pthdb_context_t *context)
@@ -394,15 +437,18 @@ pdc_read_regs (pthdb_user_t user,
   double fprs[ppc_num_fprs];
   struct ptxsprs sprs64;
   struct ptsprs sprs32;
-  
+  struct aix_thread_variables *data;
+
+  data = get_thread_data_helper_for_pid (user_current_pid);
+
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, "pdc_read_regs tid=%d flags=%s\n",
-                        (int) tid, hex_string (flags));
+    gdb_printf (gdb_stdlog, "pdc_read_regs tid=%d flags=%s\n",
+		(int) tid, hex_string (flags));
 
   /* General-purpose registers.  */
   if (flags & PTHDB_FLAG_GPRS)
     {
-      if (arch64)
+      if (data->arch64)
 	{
 	  if (!ptrace64aix (PTT_READ_GPRS, tid, 
 			    (unsigned long) gprs64, 0, NULL))
@@ -428,20 +474,56 @@ pdc_read_regs (pthdb_user_t user,
   /* Special-purpose registers.  */
   if (flags & PTHDB_FLAG_SPRS)
     {
-      if (arch64)
+      if (data->arch64)
 	{
 	  if (!ptrace64aix (PTT_READ_SPRS, tid, 
 			    (unsigned long) &sprs64, 0, NULL))
 	    memset (&sprs64, 0, sizeof (sprs64));
-      	  memcpy (&context->msr, &sprs64, sizeof(sprs64));
+	  memcpy (&context->msr, &sprs64, sizeof(sprs64));
 	}
       else
 	{
 	  if (!ptrace32 (PTT_READ_SPRS, tid, (uintptr_t) &sprs32, 0, NULL))
 	    memset (&sprs32, 0, sizeof (sprs32));
-      	  memcpy (&context->msr, &sprs32, sizeof(sprs32));
+	  memcpy (&context->msr, &sprs32, sizeof(sprs32));
 	}
     }  
+
+  /* vector registers.  */
+  __vmx_context_t vmx;
+  if (__power_vmx() && (flags & PTHDB_FLAG_REGS))
+    {
+      if (data->arch64)
+	{
+	  if (!ptrace64aix (PTT_READ_VEC, tid, (long long) &vmx, 0, 0))
+	    memset (&vmx, 0, sizeof (vmx));
+	  memcpy (&context->vmx, &vmx, sizeof(__vmx_context_t));
+	}
+      else
+	{
+	  if (!ptrace32 (PTT_READ_VEC, tid, (long long) &vmx, 0, 0))
+	    memset (&vmx, 0, sizeof (vmx));
+	   memcpy (&context->vmx, &vmx, sizeof(__vmx_context_t));
+	}
+    }
+
+  /* vsx registers.  */
+  __vsx_context_t vsx;
+  if (__power_vsx() && (flags & PTHDB_FLAG_REGS))
+    {
+      if (data->arch64)
+	{
+	  if (!ptrace64aix (PTT_READ_VSX, tid, (long long) &vsx, 0, 0))
+	    memset (&vsx, 0, sizeof (vsx));
+	  memcpy (&context->vsx, &vsx, sizeof(__vsx_context_t));
+	}
+      else
+	{
+	  if (!ptrace32 (PTT_READ_VSX, tid, (long long) &vsx, 0, 0))
+	    memset (&vsx, 0, sizeof (vsx));
+	  memcpy (&context->vsx, &vsx, sizeof(__vsx_context_t));
+	}
+    }
   return 0;
 }
 
@@ -450,7 +532,7 @@ pdc_read_regs (pthdb_user_t user,
    If successful return 0, else non-zero is returned.  */
 
 static int
-pdc_write_regs (pthdb_user_t user,
+pdc_write_regs (pthdb_user_t user_current_pid,
 		pthdb_tid_t tid,
 		unsigned long long flags,
 		pthdb_context_t *context)
@@ -461,14 +543,18 @@ pdc_write_regs (pthdb_user_t user,
      this is needed, I have implemented what I think it should do,
      however this code is untested.  */
 
+  struct aix_thread_variables *data;
+
+  data = get_thread_data_helper_for_pid (user_current_pid);
+
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, "pdc_write_regs tid=%d flags=%s\n",
-                        (int) tid, hex_string (flags));
+    gdb_printf (gdb_stdlog, "pdc_write_regs tid=%d flags=%s\n",
+		(int) tid, hex_string (flags));
 
   /* General-purpose registers.  */
   if (flags & PTHDB_FLAG_GPRS)
     {
-      if (arch64)
+      if (data->arch64)
 	ptrace64aix (PTT_WRITE_GPRS, tid, 
 		     (unsigned long) context->gpr, 0, NULL);
       else
@@ -484,7 +570,7 @@ pdc_write_regs (pthdb_user_t user,
   /* Special-purpose registers.  */
   if (flags & PTHDB_FLAG_SPRS)
     {
-      if (arch64)
+      if (data->arch64)
 	{
 	  ptrace64aix (PTT_WRITE_SPRS, tid, 
 		       (unsigned long) &context->msr, 0, NULL);
@@ -494,50 +580,81 @@ pdc_write_regs (pthdb_user_t user,
 	  ptrace32 (PTT_WRITE_SPRS, tid, (uintptr_t) &context->msr, 0, NULL);
 	}
     }
+
+  /* vector registers.  */
+  if (__power_vmx() && (flags & PTHDB_FLAG_REGS))
+    {
+      if (data->arch64)
+	ptrace64aix (PTT_WRITE_VEC, tid, (unsigned long) &context->vmx, 0, 0);
+      else
+	ptrace32 (PTT_WRITE_VEC, tid, (uintptr_t) &context->vmx, 0, 0);
+    }
+
+  /* vsx registers.  */
+  if (__power_vsx() && (flags & PTHDB_FLAG_REGS))
+    {
+      if (data->arch64)
+	ptrace64aix (PTT_WRITE_VSX, tid, (unsigned long) &context->vsx, 0, 0);
+      else
+	ptrace32 (PTT_WRITE_VSX, tid, (uintptr_t) &context->vsx, 0, 0);
+    }
   return 0;
 }
 
 /* pthdb callback: read LEN bytes from process ADDR into BUF.  */
 
 static int
-pdc_read_data (pthdb_user_t user, void *buf, 
+pdc_read_data (pthdb_user_t user_current_pid, void *buf,
 	       pthdb_addr_t addr, size_t len)
 {
   int status, ret;
+  inferior *inf = find_inferior_pid (current_inferior ()->process_target (),
+				     user_current_pid);
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog,
-      "pdc_read_data (user = %ld, buf = 0x%lx, addr = %s, len = %ld)\n",
-      user, (long) buf, hex_string (addr), len);
+    gdb_printf (gdb_stdlog,
+		"pdc_read_data (user_current_pid = %ld, buf = 0x%lx, addr = %s, len = %ld)\n",
+		user_current_pid, (long) buf, hex_string (addr), len);
 
-  status = target_read_memory (addr, (gdb_byte *) buf, len);
+  /* This is needed to eliminate the dependency of current thread
+     which is null so that thread reads the correct target memory.  */
+  {
+    scoped_restore_current_inferior_for_memory save_inferior (inf);
+    status = target_read_memory (addr, (gdb_byte *) buf, len);
+  }
   ret = status == 0 ? PDC_SUCCESS : PDC_FAILURE;
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, "  status=%d, returning %s\n",
-			status, pd_status2str (ret));
+    gdb_printf (gdb_stdlog, "  status=%d, returning %s\n",
+		status, pd_status2str (ret));
   return ret;
 }
 
 /* pthdb callback: write LEN bytes from BUF to process ADDR.  */
 
 static int
-pdc_write_data (pthdb_user_t user, void *buf, 
+pdc_write_data (pthdb_user_t user_current_pid, void *buf,
 		pthdb_addr_t addr, size_t len)
 {
   int status, ret;
+  inferior *inf = find_inferior_pid (current_inferior ()->process_target (),
+				     user_current_pid);
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog,
-      "pdc_write_data (user = %ld, buf = 0x%lx, addr = %s, len = %ld)\n",
-      user, (long) buf, hex_string (addr), len);
+    gdb_printf (gdb_stdlog,
+		"pdc_write_data (user_current_pid = %ld, buf = 0x%lx, addr = %s, len = %ld)\n",
+		user_current_pid, (long) buf, hex_string (addr), len);
+
+  {
+    scoped_restore_current_inferior_for_memory save_inferior (inf);
+    status = target_write_memory (addr, (gdb_byte *) buf, len);
+  }
 
-  status = target_write_memory (addr, (gdb_byte *) buf, len);
   ret = status == 0 ? PDC_SUCCESS : PDC_FAILURE;
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, "  status=%d, returning %s\n", status,
-			pd_status2str (ret));
+    gdb_printf (gdb_stdlog, "  status=%d, returning %s\n", status,
+		pd_status2str (ret));
   return ret;
 }
 
@@ -545,16 +662,16 @@ pdc_write_data (pthdb_user_t user, void
    in BUFP.  */
 
 static int
-pdc_alloc (pthdb_user_t user, size_t len, void **bufp)
+pdc_alloc (pthdb_user_t user_current_pid, size_t len, void **bufp)
 {
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog,
-                        "pdc_alloc (user = %ld, len = %ld, bufp = 0x%lx)\n",
-			user, len, (long) bufp);
+    gdb_printf (gdb_stdlog,
+		"pdc_alloc (user_current_pid = %ld, len = %ld, bufp = 0x%lx)\n",
+		user_current_pid, len, (long) bufp);
   *bufp = xmalloc (len);
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, 
-			"  malloc returned 0x%lx\n", (long) *bufp);
+    gdb_printf (gdb_stdlog, 
+		"  malloc returned 0x%lx\n", (long) *bufp);
 
   /* Note: xmalloc() can't return 0; therefore PDC_FAILURE will never
      be returned.  */
@@ -567,16 +684,16 @@ pdc_alloc (pthdb_user_t user, size_t len
    pointer to the result in BUFP.  */
 
 static int
-pdc_realloc (pthdb_user_t user, void *buf, size_t len, void **bufp)
+pdc_realloc (pthdb_user_t user_current_pid, void *buf, size_t len, void **bufp)
 {
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog,
-      "pdc_realloc (user = %ld, buf = 0x%lx, len = %ld, bufp = 0x%lx)\n",
-      user, (long) buf, len, (long) bufp);
+    gdb_printf (gdb_stdlog,
+		"pdc_realloc (user_current_pid = %ld, buf = 0x%lx, len = %ld, bufp = 0x%lx)\n",
+		user_current_pid, (long) buf, len, (long) bufp);
   *bufp = xrealloc (buf, len);
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, 
-			"  realloc returned 0x%lx\n", (long) *bufp);
+    gdb_printf (gdb_stdlog, 
+		"  realloc returned 0x%lx\n", (long) *bufp);
   return *bufp ? PDC_SUCCESS : PDC_FAILURE;
 }
 
@@ -584,12 +701,12 @@ pdc_realloc (pthdb_user_t user, void *bu
    realloc callback.  */
 
 static int
-pdc_dealloc (pthdb_user_t user, void *buf)
+pdc_dealloc (pthdb_user_t user_current_pid, void *buf)
 {
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, 
-			"pdc_free (user = %ld, buf = 0x%lx)\n", user,
-                        (long) buf);
+    gdb_printf (gdb_stdlog, 
+		"pdc_free (user_current_pid = %ld, buf = 0x%lx)\n", user_current_pid,
+		(long) buf);
   xfree (buf);
   return PDC_SUCCESS;
 }
@@ -622,99 +739,28 @@ state2str (pthdb_state_t state)
     }
 }
 
-/* qsort() comparison function for sorting pd_thread structs by pthid.  */
-
-static int
-pcmp (const void *p1v, const void *p2v)
-{
-  struct pd_thread *p1 = (struct pd_thread *) p1v;
-  struct pd_thread *p2 = (struct pd_thread *) p2v;
-  return p1->pthid < p2->pthid ? -1 : p1->pthid > p2->pthid;
-}
-
-/* iterate_over_threads() callback for counting GDB threads.
-
-   Do not count the main thread (whose tid is zero).  This matches
-   the list of threads provided by the pthreaddebug library, which
-   does not include that main thread either, and thus allows us
-   to compare the two lists.  */
-
-static int
-giter_count (struct thread_info *thread, void *countp)
-{
-  if (PD_TID (thread->ptid))
-    (*(int *) countp)++;
-  return 0;
-}
-
-/* iterate_over_threads() callback for accumulating GDB thread pids.
-
-   Do not include the main thread (whose tid is zero).  This matches
-   the list of threads provided by the pthreaddebug library, which
-   does not include that main thread either, and thus allows us
-   to compare the two lists.  */
-
-static int
-giter_accum (struct thread_info *thread, void *bufp)
-{
-  if (PD_TID (thread->ptid))
-    {
-      **(struct thread_info ***) bufp = thread;
-      (*(struct thread_info ***) bufp)++;
-    }
-  return 0;
-}
-
-/* ptid comparison function */
-
-static int
-ptid_cmp (ptid_t ptid1, ptid_t ptid2)
-{
-  if (ptid1.pid () < ptid2.pid ())
-    return -1;
-  else if (ptid1.pid () > ptid2.pid ())
-    return 1;
-  else if (ptid1.tid () < ptid2.tid ())
-    return -1;
-  else if (ptid1.tid () > ptid2.tid ())
-    return 1;
-  else if (ptid1.lwp () < ptid2.lwp ())
-    return -1;
-  else if (ptid1.lwp () > ptid2.lwp ())
-    return 1;
-  else
-    return 0;
-}
-
-/* qsort() comparison function for sorting thread_info structs by pid.  */
-
-static int
-gcmp (const void *t1v, const void *t2v)
-{
-  struct thread_info *t1 = *(struct thread_info **) t1v;
-  struct thread_info *t2 = *(struct thread_info **) t2v;
-  return ptid_cmp (t1->ptid, t2->ptid);
-}
-
 /* Search through the list of all kernel threads for the thread
    that has stopped on a SIGTRAP signal, and return its TID.
    Return 0 if none found.  */
 
 static pthdb_tid_t
-get_signaled_thread (void)
+get_signaled_thread (int pid)
 {
   struct thrdsinfo64 thrinf;
   tid_t ktid = 0;
 
   while (1)
-  {
-    if (getthrds (inferior_ptid.pid (), &thrinf, 
-          	  sizeof (thrinf), &ktid, 1) != 1)
-      break;
+    {
+      if (getthrds (pid, &thrinf,
+		    sizeof (thrinf), &ktid, 1) != 1)
+	break;
 
-    if (thrinf.ti_cursig == SIGTRAP)
-      return thrinf.ti_tid;
-  }
+      /* We also need to keep in mind Trap and interrupt or any
+	 signal that needs to be handled in pd_update ().  */
+
+      if (thrinf.ti_cursig)
+	return thrinf.ti_tid;
+    }
 
   /* Didn't find any thread stopped on a SIGTRAP signal.  */
   return 0;
@@ -734,284 +780,254 @@ get_signaled_thread (void)
        have difficulty with certain call patterns */
 
 static void
-sync_threadlists (void)
+sync_threadlists (pid_t pid)
 {
-  int cmd, status, infpid;
-  int pcount, psize, pi, gcount, gi;
-  struct pd_thread *pbuf;
-  struct thread_info **gbuf, **g, *thread;
+  int cmd, status;
   pthdb_pthread_t pdtid;
   pthread_t pthid;
   pthdb_tid_t tid;
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+  struct aix_thread_variables *data;
+  data = get_thread_data_helper_for_pid (pid);
+  pthdb_state_t state;
+  std::set<pthdb_pthread_t> in_queue_threads;
 
   /* Accumulate an array of libpthdebug threads sorted by pthread id.  */
 
-  pcount = 0;
-  psize = 1;
-  pbuf = XNEWVEC (struct pd_thread, psize);
-
   for (cmd = PTHDB_LIST_FIRST;; cmd = PTHDB_LIST_NEXT)
     {
-      status = pthdb_pthread (pd_session, &pdtid, cmd);
+      status = pthdb_pthread (data->pd_session, &pdtid, cmd);
       if (status != PTHDB_SUCCESS || pdtid == PTHDB_INVALID_PTHREAD)
 	break;
 
-      status = pthdb_pthread_ptid (pd_session, pdtid, &pthid);
+      status = pthdb_pthread_ptid (data->pd_session, pdtid, &pthid);
       if (status != PTHDB_SUCCESS || pthid == PTHDB_INVALID_PTID)
 	continue;
 
-      if (pcount == psize)
-	{
-	  psize *= 2;
-	  pbuf = (struct pd_thread *) xrealloc (pbuf, 
-						psize * sizeof *pbuf);
-	}
-      pbuf[pcount].pdtid = pdtid;
-      pbuf[pcount].pthid = pthid;
-      pcount++;
-    }
-
-  for (pi = 0; pi < pcount; pi++)
-    {
-      status = pthdb_pthread_tid (pd_session, pbuf[pi].pdtid, &tid);
-      if (status != PTHDB_SUCCESS)
-	tid = PTHDB_INVALID_TID;
-      pbuf[pi].tid = tid;
-    }
-
-  qsort (pbuf, pcount, sizeof *pbuf, pcmp);
-
-  /* Accumulate an array of GDB threads sorted by pid.  */
+      status = pthdb_pthread_tid (data->pd_session, pdtid, &tid);
+      ptid_t ptid (pid, tid, pthid);
 
-  gcount = 0;
-  iterate_over_threads (giter_count, &gcount);
-  g = gbuf = XNEWVEC (struct thread_info *, gcount);
-  iterate_over_threads (giter_accum, &g);
-  qsort (gbuf, gcount, sizeof *gbuf, gcmp);
+      status = pthdb_pthread_state (data->pd_session, pdtid, &state);
+      in_queue_threads.insert (pdtid);
 
-  /* Apply differences between the two arrays to GDB's thread list.  */
-
-  infpid = inferior_ptid.pid ();
-  for (pi = gi = 0; pi < pcount || gi < gcount;)
-    {
-      if (pi == pcount)
+      /* If this thread has reported and exited, do not add it again.  */
+      if (state == PST_TERM)
 	{
-	  delete_thread (gbuf[gi]);
-	  gi++;
+	  if (data->exited_threads.count (pdtid) != 0)
+	     continue;
 	}
-      else if (gi == gcount)
-	{
-	  aix_thread_info *priv = new aix_thread_info;
-	  priv->pdtid = pbuf[pi].pdtid;
-	  priv->tid = pbuf[pi].tid;
 
-	  thread = add_thread_with_info (ptid_t (infpid, 0, pbuf[pi].pthid), priv);
-
-	  pi++;
-	}
-      else
+      /* If this thread has never been reported to GDB, add it.  */
+      if (!in_thread_list (proc_target, ptid))
 	{
-	  ptid_t pptid, gptid;
-	  int cmp_result;
-
-	  pptid = ptid_t (infpid, 0, pbuf[pi].pthid);
-	  gptid = gbuf[gi]->ptid;
-	  pdtid = pbuf[pi].pdtid;
-	  tid = pbuf[pi].tid;
-
-	  cmp_result = ptid_cmp (pptid, gptid);
-
-	  if (cmp_result == 0)
-	    {
-	      aix_thread_info *priv = get_aix_thread_info (gbuf[gi]);
-
-	      priv->pdtid = pdtid;
-	      priv->tid = tid;
-	      pi++;
-	      gi++;
-	    }
-	  else if (cmp_result > 0)
+	  aix_thread_info *priv = new aix_thread_info;
+	  /* init priv */
+	  priv->pdtid = pdtid;
+	  /* Check if this is the main thread.  If it is, then change
+	     its ptid and add its private data.  */
+	  if (in_thread_list (proc_target, ptid_t (pid)))
 	    {
-	      delete_thread (gbuf[gi]);
-	      gi++;
+	      thread_info *tp = proc_target->find_thread (ptid_t (pid));
+	      thread_change_ptid (proc_target, ptid_t (pid), ptid);
+	      tp->priv.reset (priv);
 	    }
 	  else
-	    {
-	      thread = add_thread (pptid);
+	    add_thread_with_info (proc_target, ptid,
+		private_thread_info_up (priv));
+	}
 
-	      aix_thread_info *priv = new aix_thread_info;
-	      thread->priv.reset (priv);
-	      priv->pdtid = pdtid;
-	      priv->tid = tid;
-	      pi++;
-	    }
+      /* The thread is terminated. Remove it.  */
+      if (state == PST_TERM)
+	{
+	  thread_info *thr = proc_target->find_thread (ptid);
+	  gdb_assert (thr != nullptr);
+	  delete_thread (thr);
+	  data->exited_threads.insert (pdtid);
 	}
     }
 
-  xfree (pbuf);
-  xfree (gbuf);
-}
-
-/* Iterate_over_threads() callback for locating a thread, using
-   the TID of its associated kernel thread.  */
-
-static int
-iter_tid (struct thread_info *thread, void *tidp)
-{
-  const pthdb_tid_t tid = *(pthdb_tid_t *)tidp;
-  aix_thread_info *priv = get_aix_thread_info (thread);
-
-  return priv->tid == tid;
+    /* Sometimes there can be scenarios where the thread status is
+       unknown and we it will never iterate in the for loop above,
+       since cmd will be no longer be pointing to that threads.  One
+       such scenario is the gdb.threads/thread_events.exp testcase
+       where in the end after the threadfunc breakpoint is hit, the
+       thread exits and gets into a PST_UNKNOWN state.  So this thread
+       will not run in the above for loop.  Therefore the below for loop
+       is to manually delete such threads.  */
+    for (struct thread_info *it : all_threads_safe ())
+      {
+	aix_thread_info *priv = get_aix_thread_info (it);
+	if (in_queue_threads.count (priv->pdtid) == 0
+		&& in_thread_list (proc_target, it->ptid)
+		&& pid == it->ptid.pid ())
+	  {
+	    delete_thread (it);
+	    data->exited_threads.insert (priv->pdtid);
+	  }
+      }
 }
 
 /* Synchronize libpthdebug's state with the inferior and with GDB,
    generate a composite process/thread <pid> for the current thread,
-   set inferior_ptid to <pid> if SET_INFPID, and return <pid>.  */
+   Return the ptid of the event thread if one can be found, else
+   return a pid-only ptid with PID.  */
 
 static ptid_t
-pd_update (int set_infpid)
+pd_update (pid_t pid)
 {
   int status;
   ptid_t ptid;
   pthdb_tid_t tid;
   struct thread_info *thread = NULL;
+  struct aix_thread_variables *data;
+
+  data = get_thread_data_helper_for_pid (pid);
 
-  if (!pd_active)
-    return inferior_ptid;
+  if (!data->pd_active)
+    return ptid_t (pid);
 
-  status = pthdb_session_update (pd_session);
+  status = pthdb_session_update (data->pd_session);
   if (status != PTHDB_SUCCESS)
-    return inferior_ptid;
+    return ptid_t (pid);
 
-  sync_threadlists ();
+  sync_threadlists (pid);
 
   /* Define "current thread" as one that just received a trap signal.  */
 
-  tid = get_signaled_thread ();
+  tid = get_signaled_thread (pid);
   if (tid != 0)
-    thread = iterate_over_threads (iter_tid, &tid);
+    thread = iterate_over_threads ([&] (struct thread_info *thread)
+      {
+	return thread->ptid.lwp () == tid;
+      });
   if (!thread)
-    ptid = inferior_ptid;
+    ptid = ptid_t (pid);
   else
-    {
-      ptid = thread->ptid;
-      if (set_infpid)
-	inferior_ptid = ptid;
-    }
+    ptid = thread->ptid;
+
   return ptid;
 }
 
 /* Try to start debugging threads in the current process.
-   If successful and SET_INFPID, set inferior_ptid to reflect the
-   current thread.  */
+   If successful and there exists and we can find an event thread, set
+   pd_active for that thread.  Otherwise, return.  */
 
-static ptid_t
-pd_activate (int set_infpid)
+static void
+pd_activate (pid_t pid)
 {
   int status;
-		
-  status = pthdb_session_init (PD_USER, arch64 ? PEM_64BIT : PEM_32BIT,
-			       PTHDB_FLAG_REGS, &pd_callbacks, 
-			       &pd_session);
-  if (status != PTHDB_SUCCESS)
-    {
-      return inferior_ptid;
-    }
-  pd_active = 1;
-  return pd_update (set_infpid);
+  struct aix_thread_variables *data;
+  data = get_thread_data_helper_for_pid (pid);
+
+  status = pthdb_session_init (pid, data->arch64 ? PEM_64BIT : PEM_32BIT,
+			       PTHDB_FLAG_REGS, &pd_callbacks,
+			       &data->pd_session);
+  if (status == PTHDB_SUCCESS)
+    data->pd_active = 1;
 }
 
-/* Undo the effects of pd_activate().  */
+/* AIX implementation of update_thread_list.  */
 
-static void
-pd_deactivate (void)
+void
+aix_thread_target::update_thread_list ()
 {
-  if (!pd_active)
-    return;
-  pthdb_session_destroy (pd_session);
-  
-  pid_to_prc (&inferior_ptid);
-  pd_active = 0;
+  for (inferior *inf : all_inferiors ())
+    {
+      if (inf->pid == 0)
+	continue;
+
+      pd_update (inf->pid);
+    }
 }
 
+
 /* An object file has just been loaded.  Check whether the current
    application is pthreaded, and if so, prepare for thread debugging.  */
 
 static void
-pd_enable (void)
+pd_enable (inferior *inf)
 {
   int status;
   char *stub_name;
-  struct bound_minimal_symbol ms;
+  struct aix_thread_variables *data;
+
+  if (inf == NULL)
+    return;
+
+  data = get_aix_thread_variables_data (inf);
 
   /* Don't initialize twice.  */
-  if (pd_able)
+  if (data->pd_able)
     return;
 
   /* Check application word size.  */
-  arch64 = register_size (target_gdbarch (), 0) == 8;
+  data->arch64 = register_size (current_inferior ()->arch (), 0) == 8;
 
   /* Check whether the application is pthreaded.  */
   stub_name = NULL;
-  status = pthdb_session_pthreaded (PD_USER, PTHDB_FLAG_REGS,
+  status = pthdb_session_pthreaded (inf->pid, PTHDB_FLAG_REGS,
 				    &pd_callbacks, &stub_name);
   if ((status != PTHDB_SUCCESS
        && status != PTHDB_NOT_PTHREADED) || !stub_name)
     return;
 
   /* Set a breakpoint on the returned stub function.  */
-  ms = lookup_minimal_symbol (stub_name, NULL, NULL);
+  bound_minimal_symbol ms
+    = lookup_minimal_symbol (current_program_space, stub_name);
   if (ms.minsym == NULL)
     return;
-  pd_brk_addr = BMSYMBOL_VALUE_ADDRESS (ms);
-  if (!create_thread_event_breakpoint (target_gdbarch (), pd_brk_addr))
+  data->pd_brk_addr = ms.value_address ();
+  if (!create_thread_event_breakpoint (current_inferior ()->arch (),
+				       data->pd_brk_addr))
     return;
 
   /* Prepare for thread debugging.  */
-  push_target (&aix_thread_ops);
-  pd_able = 1;
+  current_inferior ()->push_target (&aix_thread_ops);
+  data->pd_able = 1;
 
   /* If we're debugging a core file or an attached inferior, the
      pthread library may already have been initialized, so try to
      activate thread debugging.  */
-  pd_activate (1);
+  pd_activate (inf->pid);
 }
 
 /* Undo the effects of pd_enable().  */
 
 static void
-pd_disable (void)
+pd_disable (inferior *inf)
 {
-  if (!pd_able)
+  struct aix_thread_variables *data;
+  data = get_aix_thread_variables_data (inf);
+
+  if (!data->pd_able)
+    return;
+  if (!data->pd_active)
     return;
-  if (pd_active)
-    pd_deactivate ();
-  pd_able = 0;
-  unpush_target (&aix_thread_ops);
+  pthdb_session_destroy (data->pd_session);
+
+  pid_to_prc (&inferior_ptid);
+  data->pd_active = 0;
+  data->pd_able = 0;
+  current_inferior ()->unpush_target (&aix_thread_ops);
 }
 
 /* new_objfile observer callback.
 
-   If OBJFILE is non-null, check whether a threaded application is
-   being debugged, and if so, prepare for thread debugging.
-
-   If OBJFILE is null, stop debugging threads.  */
+   Check whether a threaded application is being debugged, and if so, prepare
+   for thread debugging.  */
 
 static void
 new_objfile (struct objfile *objfile)
 {
-  if (objfile)
-    pd_enable ();
-  else
-    pd_disable ();
+  pd_enable (current_inferior ());
 }
 
 /* Attach to process specified by ARGS.  */
 
 static void
-aix_thread_inferior_created (struct target_ops *ops, int from_tty)
+aix_thread_inferior_created (inferior *inf)
 {
-  pd_enable ();
+  pd_enable (inf);
 }
 
 /* Detach from the process attached to by aix_thread_attach().  */
@@ -1021,7 +1037,7 @@ aix_thread_target::detach (inferior *inf
 {
   target_ops *beneath = this->beneath ();
 
-  pd_disable ();
+  pd_disable (inf);
   beneath->detach (inf, from_tty);
 }
 
@@ -1033,30 +1049,33 @@ aix_thread_target::resume (ptid_t ptid,
 {
   struct thread_info *thread;
   pthdb_tid_t tid[2];
+  struct aix_thread_variables *data;
 
-  if (!PD_TID (ptid))
+  data = get_thread_data_helper_for_ptid (ptid);
+
+  if (ptid.tid () == 0)
     {
       scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
-      
+
       inferior_ptid = ptid_t (inferior_ptid.pid ());
       beneath ()->resume (ptid, step, sig);
     }
   else
     {
-      thread = find_thread_ptid (ptid);
+      thread = current_inferior ()->find_thread (ptid);
       if (!thread)
 	error (_("aix-thread resume: unknown pthread %ld"),
 	       ptid.lwp ());
 
       aix_thread_info *priv = get_aix_thread_info (thread);
 
-      tid[0] = priv->tid;
+      tid[0] = ptid.lwp ();
       if (tid[0] == PTHDB_INVALID_TID)
 	error (_("aix-thread resume: no tid for pthread %ld"),
 	       ptid.lwp ());
       tid[1] = 0;
 
-      if (arch64)
+      if (data->arch64)
 	ptrace64aix (PTT_CONTINUE, tid[0], (long long) 1,
 		     gdb_signal_to_host (sig), (PTRACE_TYPE_ARG5) tid);
       else
@@ -1071,33 +1090,68 @@ aix_thread_target::resume (ptid_t ptid,
 
 ptid_t
 aix_thread_target::wait (ptid_t ptid, struct target_waitstatus *status,
-			 int options)
+			 target_wait_flags options)
 {
+  struct aix_thread_variables *data;
   {
-    scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
-
     pid_to_prc (&ptid);
 
-    inferior_ptid = ptid_t (inferior_ptid.pid ());
     ptid = beneath ()->wait (ptid, status, options);
   }
 
   if (ptid.pid () == -1)
     return ptid_t (-1);
 
+  /* The target beneath does not deal with threads, so it should only return
+     pid-only ptids.  */
+  gdb_assert (ptid.is_pid ());
+
+  data = get_thread_data_helper_for_ptid (ptid);
+
   /* Check whether libpthdebug might be ready to be initialized.  */
-  if (!pd_active && status->kind == TARGET_WAITKIND_STOPPED
-      && status->value.sig == GDB_SIGNAL_TRAP)
+  if (!data->pd_active && status->kind () == TARGET_WAITKIND_STOPPED
+      && status->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)
-	  - gdbarch_decr_pc_after_break (gdbarch) == pd_brk_addr)
-	return pd_activate (0);
+	  - gdbarch_decr_pc_after_break (gdbarch) == data->pd_brk_addr)
+	pd_activate (ptid.pid ());
     }
 
-  return pd_update (0);
+  return pd_update (ptid.pid ());
+}
+
+/* Supply AIX altivec registers, both 64 and 32 bit.  */
+
+static void 
+supply_altivec_regs (struct regcache *regcache, __vmx_context_t vmx)
+{
+  ppc_gdbarch_tdep *tdep
+    = gdbarch_tdep<ppc_gdbarch_tdep> (regcache->arch ());
+  int regno;
+  for (regno = 0; regno < ppc_num_vrs; regno++)
+    regcache->raw_supply (tdep->ppc_vr0_regnum + regno,
+			  &(vmx.__vr[regno]));
+  regcache->raw_supply (tdep->ppc_vrsave_regnum, &(vmx.__vrsave));
+  regcache->raw_supply (tdep->ppc_vrsave_regnum - 1, &(vmx.__vscr));
+}
+
+/* Supply AIX VSX registers, both 64 and 32 bit.  */
+
+static void
+supply_vsx_regs (struct regcache *regcache, __vsx_context_t vsx)
+{
+  ppc_gdbarch_tdep *tdep
+    = gdbarch_tdep<ppc_gdbarch_tdep> (regcache->arch ());
+  int regno;
+
+  for (regno = 0; regno < ppc_num_vshrs; regno++)
+    regcache->raw_supply (tdep->ppc_vsr0_upper_regnum + regno,
+			  &(vsx.__vsr_dw1[regno]));
 }
 
 /* Record that the 64-bit general-purpose registers contain VALS.  */
@@ -1105,7 +1159,8 @@ aix_thread_target::wait (ptid_t ptid, st
 static void
 supply_gprs64 (struct regcache *regcache, uint64_t *vals)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  ppc_gdbarch_tdep *tdep
+    = gdbarch_tdep<ppc_gdbarch_tdep> (regcache->arch ());
   int regno;
 
   for (regno = 0; regno < ppc_num_gprs; regno++)
@@ -1127,7 +1182,7 @@ static void
 supply_fprs (struct regcache *regcache, double *vals)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
   int regno;
 
   /* This function should never be called on architectures without
@@ -1145,7 +1200,7 @@ supply_fprs (struct regcache *regcache,
 static int
 special_register_p (struct gdbarch *gdbarch, int regno)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
 
   return regno == gdbarch_pc_regnum (gdbarch)
       || regno == tdep->ppc_ps_regnum
@@ -1168,7 +1223,7 @@ supply_sprs64 (struct regcache *regcache
 	       uint32_t fpscr)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
 
   regcache->raw_supply (gdbarch_pc_regnum (gdbarch), (char *) &iar);
   regcache->raw_supply (tdep->ppc_ps_regnum, (char *) &msr);
@@ -1190,7 +1245,7 @@ supply_sprs32 (struct regcache *regcache
 	       uint32_t fpscr)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
 
   regcache->raw_supply (gdbarch_pc_regnum (gdbarch), (char *) &iar);
   regcache->raw_supply (tdep->ppc_ps_regnum, (char *) &msr);
@@ -1213,21 +1268,23 @@ static void
 fetch_regs_user_thread (struct regcache *regcache, pthdb_pthread_t pdtid)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
   int status, i;
   pthdb_context_t ctx;
+  struct aix_thread_variables *data;
+  data = get_thread_data_helper_for_ptid (inferior_ptid);
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, 
-			"fetch_regs_user_thread %lx\n", (long) pdtid);
-  status = pthdb_pthread_context (pd_session, pdtid, &ctx);
+    gdb_printf (gdb_stdlog, 
+		"fetch_regs_user_thread %lx\n", (long) pdtid);
+  status = pthdb_pthread_context (data->pd_session, pdtid, &ctx);
   if (status != PTHDB_SUCCESS)
     error (_("aix-thread: fetch_registers: pthdb_pthread_context returned %s"),
-           pd_status2str (status));
+	   pd_status2str (status));
 
   /* General-purpose registers.  */
 
-  if (arch64)
+  if (data->arch64)
     supply_gprs64 (regcache, ctx.gpr);
   else
     for (i = 0; i < ppc_num_gprs; i++)
@@ -1240,12 +1297,18 @@ fetch_regs_user_thread (struct regcache
 
   /* Special registers.  */
 
-  if (arch64)
+  if (data->arch64)
     supply_sprs64 (regcache, ctx.iar, ctx.msr, ctx.cr, ctx.lr, ctx.ctr,
 			     ctx.xer, ctx.fpscr);
   else
     supply_sprs32 (regcache, ctx.iar, ctx.msr, ctx.cr, ctx.lr, ctx.ctr,
 			     ctx.xer, ctx.fpscr);
+
+  /* Altivec registers.  */
+  supply_altivec_regs (regcache, ctx.vmx);
+
+  /* VSX registers.  */
+  supply_vsx_regs (regcache, ctx.vsx);
 }
 
 /* Fetch register REGNO if != -1 or all registers otherwise from
@@ -1268,25 +1331,28 @@ fetch_regs_kernel_thread (struct regcach
 			  pthdb_tid_t tid)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
   uint64_t gprs64[ppc_num_gprs];
   uint32_t gprs32[ppc_num_gprs];
   double fprs[ppc_num_fprs];
   struct ptxsprs sprs64;
   struct ptsprs sprs32;
   int i;
+  struct aix_thread_variables *data;
+
+  data = get_thread_data_helper_for_ptid (regcache->ptid ());
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog,
-	"fetch_regs_kernel_thread tid=%lx regno=%d arch64=%d\n",
-	(long) tid, regno, arch64);
+    gdb_printf (gdb_stdlog,
+		"fetch_regs_kernel_thread tid=%lx regno=%d arch64=%d\n",
+		(long) tid, regno, data->arch64);
 
   /* General-purpose registers.  */
   if (regno == -1
       || (tdep->ppc_gp0_regnum <= regno
-          && regno < tdep->ppc_gp0_regnum + ppc_num_gprs))
+	  && regno < tdep->ppc_gp0_regnum + ppc_num_gprs))
     {
-      if (arch64)
+      if (data->arch64)
 	{
 	  if (!ptrace64aix (PTT_READ_GPRS, tid, 
 			    (unsigned long) gprs64, 0, NULL))
@@ -1302,12 +1368,44 @@ fetch_regs_kernel_thread (struct regcach
 	}
     }
 
+  /* vector registers.  */
+  if (tdep->ppc_vr0_regnum != -1)
+    {
+      int ret = 0;
+      __vmx_context_t vmx;
+      if (data->arch64)
+	ret = ptrace64aix (PTT_READ_VEC, tid, (long long) &vmx, 0, 0);
+      else
+	ret = ptrace32 (PTT_READ_VEC, tid, (uintptr_t) &vmx, 0, 0);
+      if (ret < 0)
+	memset(&vmx, 0, sizeof(__vmx_context_t));
+      for (i = 0; i < ppc_num_vrs; i++)
+	regcache->raw_supply (tdep->ppc_vr0_regnum + i, &(vmx.__vr[i]));
+      regcache->raw_supply (tdep->ppc_vrsave_regnum, &(vmx.__vrsave));
+      regcache->raw_supply (tdep->ppc_vrsave_regnum - 1, &(vmx.__vscr));
+    }
+
+  /* vsx registers.  */
+  if (tdep->ppc_vsr0_upper_regnum != -1)
+    {
+      __vsx_context_t vsx;
+      int ret = 0;
+      if (data->arch64)
+	ret = ptrace64aix (PTT_READ_VSX, tid, (long long) &vsx, 0, 0);
+      else
+	ret = ptrace32 (PTT_READ_VSX, tid, (long long) &vsx, 0, 0);
+      if (ret < 0)
+	memset(&vsx, 0, sizeof(__vsx_context_t));
+      for (i = 0; i < ppc_num_vshrs; i++)
+	regcache->raw_supply (tdep->ppc_vsr0_upper_regnum + i, &(vsx.__vsr_dw1[i]));
+    }
+
   /* Floating-point registers.  */
 
   if (ppc_floating_point_unit_p (gdbarch)
       && (regno == -1
-          || (regno >= tdep->ppc_fp0_regnum
-              && regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
+	  || (regno >= tdep->ppc_fp0_regnum
+	      && regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
     {
       if (!ptrace32 (PTT_READ_FPRS, tid, (uintptr_t) fprs, 0, NULL))
 	memset (fprs, 0, sizeof (fprs));
@@ -1318,7 +1416,7 @@ fetch_regs_kernel_thread (struct regcach
 
   if (regno == -1 || special_register_p (gdbarch, regno))
     {
-      if (arch64)
+      if (data->arch64)
 	{
 	  if (!ptrace64aix (PTT_READ_SPRS, tid, 
 			    (unsigned long) &sprs64, 0, NULL))
@@ -1350,13 +1448,17 @@ aix_thread_target::fetch_registers (stru
   struct thread_info *thread;
   pthdb_tid_t tid;
 
-  if (!PD_TID (regcache->ptid ()))
+  /* If a new inferior is born, then its pthread debug library is yet to
+     initialised and hence has no private data. So the below if condition
+     exists.  */
+
+  if (regcache->ptid ().tid () == 0)
     beneath ()->fetch_registers (regcache, regno);
   else
     {
-      thread = find_thread_ptid (regcache->ptid ());
+      thread = current_inferior ()->find_thread (regcache->ptid ());
       aix_thread_info *priv = get_aix_thread_info (thread);
-      tid = priv->tid;
+      tid = regcache->ptid().lwp ();
 
       if (tid == PTHDB_INVALID_TID)
 	fetch_regs_user_thread (regcache, priv->pdtid);
@@ -1365,12 +1467,48 @@ aix_thread_target::fetch_registers (stru
     }
 }
 
+/* Fill altivec registers.  */
+
+static void
+fill_altivec (const struct regcache *regcache, __vmx_context_t *vmx)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
+  int regno;
+
+  for (regno = 0; regno < ppc_num_vrs; regno++)
+    if (REG_VALID == regcache->get_register_status (tdep->ppc_vr0_regnum + regno))
+      regcache->raw_collect (tdep->ppc_vr0_regnum + regno,
+				     &(vmx->__vr[regno]));
+
+  if (REG_VALID == regcache->get_register_status (tdep->ppc_vrsave_regnum))
+    regcache->raw_collect (tdep->ppc_vrsave_regnum, &(vmx->__vrsave));
+  if (REG_VALID == regcache->get_register_status (tdep->ppc_vrsave_regnum - 1))
+    regcache->raw_collect (tdep->ppc_vrsave_regnum - 1, &(vmx->__vscr));
+}
+
+/* Fill vsx registers. */
+
+static void
+fill_vsx (const struct regcache *regcache, __vsx_context_t  *vsx)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
+  int regno;
+
+  for (regno = 0; regno < ppc_num_vshrs; regno++)
+    if (REG_VALID == regcache->get_register_status ( tdep->ppc_vsr0_upper_regnum + regno))
+      regcache->raw_collect (tdep->ppc_vsr0_upper_regnum + regno,
+			     &(vsx->__vsr_dw1[0]) + regno);
+}
+
 /* Store the gp registers into an array of uint32_t or uint64_t.  */
 
 static void
 fill_gprs64 (const struct regcache *regcache, uint64_t *vals)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  ppc_gdbarch_tdep *tdep
+    = gdbarch_tdep<ppc_gdbarch_tdep> (regcache->arch ());
   int regno;
 
   for (regno = 0; regno < ppc_num_gprs; regno++)
@@ -1382,7 +1520,8 @@ fill_gprs64 (const struct regcache *regc
 static void 
 fill_gprs32 (const struct regcache *regcache, uint32_t *vals)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+  ppc_gdbarch_tdep *tdep
+    = gdbarch_tdep<ppc_gdbarch_tdep> (regcache->arch ());
   int regno;
 
   for (regno = 0; regno < ppc_num_gprs; regno++)
@@ -1396,7 +1535,7 @@ static void
 fill_fprs (const struct regcache *regcache, double *vals)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
   int regno;
 
   /* This function should never be called on architectures without
@@ -1420,7 +1559,7 @@ fill_sprs64 (const struct regcache *regc
 	     uint32_t *fpscr)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
 
   /* Verify that the size of the size of the IAR buffer is the
      same as the raw size of the PC (in the register cache).  If
@@ -1454,7 +1593,7 @@ fill_sprs32 (const struct regcache *regc
 	     uint32_t *fpscr)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
 
   /* Verify that the size of the size of the IAR buffer is the
      same as the raw size of the PC (in the register cache).  If
@@ -1491,29 +1630,65 @@ static void
 store_regs_user_thread (const struct regcache *regcache, pthdb_pthread_t pdtid)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
   int status, i;
   pthdb_context_t ctx;
   uint32_t int32;
   uint64_t int64;
+  struct aix_thread_variables *data;
+  data = get_thread_data_helper_for_ptid (inferior_ptid);
+  __vmx_context_t vmx;
+  __vsx_context_t  vsx;
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, 
-			"store_regs_user_thread %lx\n", (long) pdtid);
+    gdb_printf (gdb_stdlog, 
+		"store_regs_user_thread %lx\n", (long) pdtid);
 
   /* Retrieve the thread's current context for its non-register
      values.  */
-  status = pthdb_pthread_context (pd_session, pdtid, &ctx);
+  status = pthdb_pthread_context (data->pd_session, pdtid, &ctx);
   if (status != PTHDB_SUCCESS)
     error (_("aix-thread: store_registers: pthdb_pthread_context returned %s"),
-           pd_status2str (status));
+	   pd_status2str (status));
+
+  /* Fill altivec-registers.  */
+
+  if (__power_vmx())
+    {
+      memset(&vmx, 0, sizeof(__vmx_context_t));
+      for (i = 0; i < ppc_num_vrs; i++)
+	if (REG_VALID == regcache->get_register_status (tdep->ppc_vr0_regnum + i))
+	  {
+	    regcache->raw_collect (tdep->ppc_vr0_regnum + i,
+				   &(vmx.__vr[i]));
+	    ctx.vmx.__vr[i] = vmx.__vr[i];
+	  }
+	if (REG_VALID == regcache->get_register_status (tdep->ppc_vrsave_regnum))
+	  ctx.vmx.__vrsave = vmx.__vrsave;
+	if (REG_VALID == regcache->get_register_status (tdep->ppc_vrsave_regnum - 1))
+	  ctx.vmx.__vscr = vmx.__vscr;
+    }
+
+  /* Fill vsx registers. */
+
+  if (__power_vsx())
+    {
+      memset(&vsx, 0, sizeof(__vsx_context_t));
+      for (i = 0; i < ppc_num_vshrs; i++)
+	if (REG_VALID == regcache->get_register_status (tdep->ppc_vsr0_regnum + i))
+	  {
+	    regcache->raw_collect (tdep->ppc_vr0_regnum + i,
+				   &(vsx.__vsr_dw1[i]));
+	    ctx.vsx.__vsr_dw1[i] = vsx.__vsr_dw1[i];
+	  }
+    }
 
   /* Collect general-purpose register values from the regcache.  */
 
   for (i = 0; i < ppc_num_gprs; i++)
     if (REG_VALID == regcache->get_register_status (tdep->ppc_gp0_regnum + i))
       {
-	if (arch64)
+	if (data->arch64)
 	  {
 	    regcache->raw_collect (tdep->ppc_gp0_regnum + i, (void *) &int64);
 	    ctx.gpr[i] = int64;
@@ -1530,7 +1705,7 @@ store_regs_user_thread (const struct reg
     fill_fprs (regcache, ctx.fpr);
 
   /* Special registers (always kept in ctx as 64 bits).  */
-  if (arch64)
+  if (data->arch64)
     {
       fill_sprs64 (regcache, &ctx.iar, &ctx.msr, &ctx.cr, &ctx.lr, &ctx.ctr,
 			     &ctx.xer, &ctx.fpscr);
@@ -1561,11 +1736,11 @@ store_regs_user_thread (const struct reg
 	ctx.fpscr = tmp_fpscr;
     }
 
-  status = pthdb_pthread_setcontext (pd_session, pdtid, &ctx);
+  status = pthdb_pthread_setcontext (data->pd_session, pdtid, &ctx);
   if (status != PTHDB_SUCCESS)
     error (_("aix-thread: store_registers: "
 	     "pthdb_pthread_setcontext returned %s"),
-           pd_status2str (status));
+	   pd_status2str (status));
 }
 
 /* Store register REGNO if != -1 or all registers otherwise into
@@ -1581,24 +1756,28 @@ store_regs_kernel_thread (const struct r
 			  pthdb_tid_t tid)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  ppc_gdbarch_tdep *tdep = gdbarch_tdep<ppc_gdbarch_tdep> (gdbarch);
   uint64_t gprs64[ppc_num_gprs];
   uint32_t gprs32[ppc_num_gprs];
   double fprs[ppc_num_fprs];
   struct ptxsprs sprs64;
   struct ptsprs  sprs32;
+  struct aix_thread_variables *data;
+  int ret = 0;
+
+  data = get_thread_data_helper_for_ptid (regcache->ptid ());
 
   if (debug_aix_thread)
-    fprintf_unfiltered (gdb_stdlog, 
-			"store_regs_kernel_thread tid=%lx regno=%d\n",
-                        (long) tid, regno);
+    gdb_printf (gdb_stdlog, 
+		"store_regs_kernel_thread tid=%lx regno=%d\n",
+		(long) tid, regno);
 
   /* General-purpose registers.  */
   if (regno == -1
       || (tdep->ppc_gp0_regnum <= regno
-          && regno < tdep->ppc_gp0_regnum + ppc_num_fprs))
+	  && regno < tdep->ppc_gp0_regnum + ppc_num_fprs))
     {
-      if (arch64)
+      if (data->arch64)
 	{
 	  /* Pre-fetch: some regs may not be in the cache.  */
 	  ptrace64aix (PTT_READ_GPRS, tid, (unsigned long) gprs64, 0, NULL);
@@ -1618,8 +1797,8 @@ store_regs_kernel_thread (const struct r
 
   if (ppc_floating_point_unit_p (gdbarch)
       && (regno == -1
-          || (regno >= tdep->ppc_fp0_regnum
-              && regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
+	  || (regno >= tdep->ppc_fp0_regnum
+	      && regno < tdep->ppc_fp0_regnum + ppc_num_fprs)))
     {
       /* Pre-fetch: some regs may not be in the cache.  */
       ptrace32 (PTT_READ_FPRS, tid, (uintptr_t) fprs, 0, NULL);
@@ -1631,7 +1810,7 @@ store_regs_kernel_thread (const struct r
 
   if (regno == -1 || special_register_p (gdbarch, regno))
     {
-      if (arch64)
+      if (data->arch64)
 	{
 	  /* Pre-fetch: some registers won't be in the cache.  */
 	  ptrace64aix (PTT_READ_SPRS, tid, 
@@ -1677,6 +1856,56 @@ store_regs_kernel_thread (const struct r
 	  ptrace32 (PTT_WRITE_SPRS, tid, (uintptr_t) &sprs32, 0, NULL);
 	}
     }
+    
+    /* Vector registers.  */
+    if (tdep->ppc_vr0_regnum != -1 && tdep->ppc_vrsave_regnum != -1
+	&& (regno == -1 || (regno >= tdep->ppc_vr0_regnum
+	&& regno <= tdep->ppc_vrsave_regnum)))
+      {
+	__vmx_context_t vmx;
+	if (__power_vmx())
+	  {
+	    if (data->arch64)
+	      ret = ptrace64aix (PTT_READ_VEC, tid, (long long) &vmx, 0, 0);
+	    else
+	      ret = ptrace32 (PTT_READ_VEC, tid, (long long) &vmx, 0, 0);
+	    if (ret > 0)
+	      {
+		fill_altivec(regcache, &vmx);
+		if (data->arch64)
+		  ret = ptrace64aix (PTT_WRITE_VEC, tid, (long long) &vmx, 0, 0);
+		else
+		  ret = ptrace32 (PTT_WRITE_VEC, tid, (long long) &vmx, 0, 0);
+		if (ret < 0)
+		  perror_with_name (_("Unable to store AltiVec register after read"));
+	      }
+	  }
+      }
+
+    /* VSX registers.  */
+    if (tdep->ppc_vsr0_upper_regnum != -1 && (regno == -1
+	|| (regno >=tdep->ppc_vsr0_upper_regnum
+	&& regno < tdep->ppc_vsr0_upper_regnum + ppc_num_vshrs)))
+      {
+	__vsx_context_t vsx;
+	if (__power_vsx())
+	  {
+	    if (data->arch64)
+	      ret =  ptrace64aix (PTT_READ_VSX, tid, (long long) &vsx, 0, 0);
+	    else
+	      ret =  ptrace32 (PTT_READ_VSX, tid, (long long) &vsx, 0, 0);
+	    if (ret > 0)
+	      {
+		fill_vsx (regcache, &vsx);
+		if (data->arch64)
+		  ret = ptrace64aix (PTT_WRITE_VSX, tid, (long long) &vsx, 0, 0);
+		else
+		  ret = ptrace32 (PTT_WRITE_VSX, tid, (long long) &vsx, 0, 0);
+		if (ret < 0)
+		  perror_with_name (_("Unable to store VSX register after read"));
+	      }
+	  }
+      }
 }
 
 /* Store gdb's current view of the register set into the
@@ -1688,13 +1917,13 @@ aix_thread_target::store_registers (stru
   struct thread_info *thread;
   pthdb_tid_t tid;
 
-  if (!PD_TID (regcache->ptid ()))
+  if (regcache->ptid ().tid () == 0)
     beneath ()->store_registers (regcache, regno);
   else
     {
-      thread = find_thread_ptid (regcache->ptid ());
+      thread = current_inferior ()->find_thread (regcache->ptid ());
       aix_thread_info *priv = get_aix_thread_info (thread);
-      tid = priv->tid;
+      tid = regcache->ptid ().lwp ();
 
       if (tid == PTHDB_INVALID_TID)
 	store_regs_user_thread (regcache, priv->pdtid);
@@ -1726,7 +1955,7 @@ aix_thread_target::mourn_inferior ()
 {
   target_ops *beneath = this->beneath ();
 
-  pd_deactivate ();
+  pd_disable (current_inferior ());
   beneath->mourn_inferior ();
 }
 
@@ -1735,12 +1964,14 @@ aix_thread_target::mourn_inferior ()
 bool
 aix_thread_target::thread_alive (ptid_t ptid)
 {
-  if (!PD_TID (ptid))
+  if (ptid.tid () == 0)
     return beneath ()->thread_alive (ptid);
 
   /* 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
@@ -1749,10 +1980,17 @@ aix_thread_target::thread_alive (ptid_t
 std::string
 aix_thread_target::pid_to_str (ptid_t ptid)
 {
-  if (!PD_TID (ptid))
-    return beneath ()->pid_to_str (ptid);
+  thread_info *thread_info = current_inferior ()->find_thread (ptid);
 
-  return string_printf (_("Thread %ld"), ptid.tid ());
+  if (thread_info != NULL && thread_info->priv != NULL)
+    {
+      aix_thread_info *priv = get_aix_thread_info (thread_info);
+
+      return string_printf (_("Thread %s (tid %s)"), pulongest (ptid.tid ()),
+		pulongest (ptid.lwp ()));
+    }
+
+  return beneath ()->pid_to_str (ptid);
 }
 
 /* Return a printable representation of extra information about
@@ -1763,47 +2001,47 @@ aix_thread_target::extra_thread_info (st
 {
   int status;
   pthdb_pthread_t pdtid;
-  pthdb_tid_t tid;
   pthdb_state_t state;
   pthdb_suspendstate_t suspendstate;
   pthdb_detachstate_t detachstate;
   int cancelpend;
   static char *ret = NULL;
+  struct aix_thread_variables *data;
 
-  if (!PD_TID (thread->ptid))
+  data = get_thread_data_helper_for_ptid (thread->ptid);
+
+  if (thread->ptid.tid () == 0)
     return NULL;
 
   string_file buf;
   aix_thread_info *priv = get_aix_thread_info (thread);
 
   pdtid = priv->pdtid;
-  tid = priv->tid;
 
-  if (tid != PTHDB_INVALID_TID)
-    /* i18n: Like "thread-identifier %d, [state] running, suspended" */
-    buf.printf (_("tid %d"), (int)tid);
+  status = pthdb_pthread_state (data->pd_session, pdtid, &state);
+
+  /* Output should look like Thread %d (tid %d) ([state]).  */
+  /* Example:- Thread 1 (tid 34144587) ([running]).  */
+  /* where state can be running, idle, sleeping, finished,
+     suspended, detached, cancel pending, ready or unknown.  */
 
-  status = pthdb_pthread_state (pd_session, pdtid, &state);
   if (status != PTHDB_SUCCESS)
     state = PST_NOTSUP;
-  buf.printf (", %s", state2str (state));
+  buf.printf ("[%s]", state2str (state));
 
-  status = pthdb_pthread_suspendstate (pd_session, pdtid, 
+  status = pthdb_pthread_suspendstate (data->pd_session, pdtid,
 				       &suspendstate);
   if (status == PTHDB_SUCCESS && suspendstate == PSS_SUSPENDED)
-    /* i18n: Like "Thread-Id %d, [state] running, suspended" */
-    buf.printf (_(", suspended"));
+    buf.printf (_("[suspended]"));
 
-  status = pthdb_pthread_detachstate (pd_session, pdtid, 
+  status = pthdb_pthread_detachstate (data->pd_session, pdtid,
 				      &detachstate);
   if (status == PTHDB_SUCCESS && detachstate == PDS_DETACHED)
-    /* i18n: Like "Thread-Id %d, [state] running, detached" */
-    buf.printf (_(", detached"));
+    buf.printf (_("[detached]"));
 
-  pthdb_pthread_cancelpend (pd_session, pdtid, &cancelpend);
+  pthdb_pthread_cancelpend (data->pd_session, pdtid, &cancelpend);
   if (status == PTHDB_SUCCESS && cancelpend)
-    /* i18n: Like "Thread-Id %d, [state] running, cancel pending" */
-    buf.printf (_(", cancel pending"));
+    buf.printf (_("[cancel pending]"));
 
   buf.write ("", 1);
 
@@ -1815,7 +2053,7 @@ aix_thread_target::extra_thread_info (st
 }
 
 ptid_t
-aix_thread_target::get_ada_task_ptid (long lwp, long thread)
+aix_thread_target::get_ada_task_ptid (long lwp, ULONGEST thread)
 {
   return ptid_t (inferior_ptid.pid (), 0, thread);
 }
@@ -1824,15 +2062,15 @@ aix_thread_target::get_ada_task_ptid (lo
 /* Module startup initialization function, automagically called by
    init.c.  */
 
-void
-_initialize_aix_thread (void)
+INIT_GDB_FILE (aix_thread)
 {
   /* Notice when object files get loaded and unloaded.  */
-  gdb::observers::new_objfile.attach (new_objfile);
+  gdb::observers::new_objfile.attach (new_objfile, "aix-thread");
 
   /* Add ourselves to inferior_created event chain.
      This is needed to enable the thread target on "attach".  */
-  gdb::observers::inferior_created.attach (aix_thread_inferior_created);
+  gdb::observers::inferior_created.attach (aix_thread_inferior_created,
+					   "aix-thread");
 
   add_setshow_boolean_cmd ("aix-thread", class_maintenance, &debug_aix_thread,
 			   _("Set debugging of AIX thread 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.20200303/gdb/alloc.c ./gdb/alloc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alloc.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alloc.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -27,14 +27,9 @@
    file can't live there.
 
    So, it lives in gdb and is built separately by gdb and gdbserver.
-   Please be aware of this when modifying it.
+   Please be aware of this when modifying it.  */
 
-   This also explains why this file includes common-defs.h and not
-   defs.h or server.h -- we'd prefer to avoid depending on the
-   GDBSERVER define when possible, and for this file it seemed
-   simple to do so.  */
 
-#include "gdbsupport/common-defs.h"
 #include "libiberty.h"
 #include "gdbsupport/errors.h"
 
@@ -44,10 +39,7 @@
    consistent semantics and guard against typical memory management
    problems.  */
 
-/* NOTE: These are declared using PTR to ensure consistency with
-   "libiberty.h".  xfree() is GDB local.  */
-
-PTR                            /* ARI: PTR */
+void *
 xmalloc (size_t size)
 {
   void *val;
@@ -64,8 +56,8 @@ xmalloc (size_t size)
   return val;
 }
 
-PTR                              /* ARI: PTR */
-xrealloc (PTR ptr, size_t size)          /* ARI: PTR */
+void *
+xrealloc (void *ptr, size_t size)
 {
   void *val;
 
@@ -84,7 +76,7 @@ xrealloc (PTR ptr, size_t size)
   return val;
 }
 
-PTR                            /* ARI: PTR */
+void *
 xcalloc (size_t number, size_t size)
 {
   void *mem;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-bsd-nat.c ./gdb/alpha-bsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-bsd-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-bsd-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for Alpha BSD's.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,33 +17,21 @@
    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"
+/* We define this to get types like register_t.  */
+#define _KERNTYPES
 #include "inferior.h"
 #include "regcache.h"
 
 #include "alpha-tdep.h"
 #include "alpha-bsd-tdep.h"
 #include "inf-ptrace.h"
+#include "netbsd-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 +39,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 +54,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 +75,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,18 +88,20 @@ 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)
-        perror_with_name (_("Couldn't get registers"));
+		  (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)
-        perror_with_name (_("Couldn't write registers"));
+		  (PTRACE_TYPE_ARG3) &gregs, lwp) == -1)
+	perror_with_name (_("Couldn't write registers"));
 
       if (regno != -1)
 	return;
@@ -149,13 +113,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 +156,7 @@ alphabsd_supply_pcb (struct regcache *re
 }
 
 
-void
-_initialize_alphabsd_nat (void)
+INIT_GDB_FILE (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.20200303/gdb/alpha-bsd-tdep.c ./gdb/alpha-bsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-bsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-bsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target dependent code Alpha BSD's.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,13 +17,12 @@
    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 "regcache.h"
 
 #include "alpha-tdep.h"
 #include "alpha-bsd-tdep.h"
 
-/* Conviently, GDB uses the same register numbering as the
+/* Conveniently, GDB uses the same register numbering as the
    ptrace register structure used by BSD on Alpha.  */
 
 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.20200303/gdb/alpha-bsd-tdep.h ./gdb/alpha-bsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-bsd-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-bsd-tdep.h	2026-03-05 02:07:22.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-2025 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/>.  */
 
-#ifndef ALPHA_BSD_TDEP_H
-#define ALPHA_BSD_TDEP_H
+#ifndef GDB_ALPHA_BSD_TDEP_H
+#define GDB_ALPHA_BSD_TDEP_H
 
 #include "gdbarch.h"
 
@@ -31,7 +31,7 @@ void alphabsd_supply_fpreg (struct regca
 void alphabsd_fill_fpreg (const struct regcache *, char *, int);
 
 
-/* Functions exported from alpha-nbsd-tdep.c.  */
+/* Functions exported from alpha-netbsd-tdep.c.  */
 
 /* Iterate over supported core file register note sections. */
 void alphanbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
@@ -39,4 +39,4 @@ void alphanbsd_iterate_over_regset_secti
 					     void *cb_data,
 					     const struct regcache *regcache);
 
-#endif /* alpha-bsd-tdep.h */
+#endif /* GDB_ALPHA_BSD_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.20200303/gdb/alpha-linux-nat.c ./gdb/alpha-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-linux-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-linux-nat.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,7 +16,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/>.  */
 
-#include "defs.h"
 #include "target.h"
 #include "regcache.h"
 #include "linux-nat-trad.h"
@@ -101,8 +100,7 @@ alpha_linux_nat_target::register_u_offse
     return FPR_BASE + regno - gdbarch_fp0_regnum (gdbarch);
 }
 
-void
-_initialize_alpha_linux_nat (void)
+INIT_GDB_FILE (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.20200303/gdb/alpha-linux-tdep.c ./gdb/alpha-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-linux-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-linux-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,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 "defs.h"
 #include "frame.h"
+#include "solib-svr4-linux.h"
 #include "osabi.h"
 #include "solib-svr4.h"
 #include "symtab.h"
@@ -64,11 +64,11 @@ enum
 
    This is somewhat complicated in that:
      (1) the expansion of the "mov" assembler macro has changed over
-         time, from "bis src,src,dst" to "bis zero,src,dst",
+	 time, from "bis src,src,dst" to "bis zero,src,dst",
      (2) the kernel has changed from using "addq" to "lda" to load the
-         syscall number,
+	 syscall number,
      (3) there is a "normal" sigreturn and an "rt" sigreturn which
-         has a different stack layout.  */
+	 has a different stack layout.  */
 
 static long
 alpha_linux_sigtramp_offset_1 (struct gdbarch *gdbarch, CORE_ADDR pc)
@@ -126,7 +126,7 @@ alpha_linux_pc_in_sigtramp (struct gdbar
 }
 
 static CORE_ADDR
-alpha_linux_sigcontext_addr (struct frame_info *this_frame)
+alpha_linux_sigcontext_addr (const frame_info_ptr &this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc;
@@ -144,7 +144,7 @@ alpha_linux_sigcontext_addr (struct fram
 	struct rt_sigframe {
 	  struct siginfo info;
 	  struct ucontext uc;
-        };
+	};
 
 	offsetof (struct rt_sigframe, uc.uc_mcontext);  */
 
@@ -354,9 +354,7 @@ alpha_linux_gdb_signal_to_target (struct
 static void
 alpha_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep;
-
-  linux_init_abi (info, gdbarch);
+  linux_init_abi (info, gdbarch, 0);
 
   /* Hook into the DWARF CFI frame unwinder.  */
   alpha_dwarf2_init_abi (info, gdbarch);
@@ -364,7 +362,7 @@ alpha_linux_init_abi (struct gdbarch_inf
   /* Hook into the MDEBUG frame unwinder.  */
   alpha_mdebug_init_abi (info, gdbarch);
 
-  tdep = gdbarch_tdep (gdbarch);
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
   tdep->dynamic_sigtramp_offset = alpha_linux_sigtramp_offset;
   tdep->sigcontext_addr = alpha_linux_sigcontext_addr;
   tdep->pc_in_sigtramp = alpha_linux_pc_in_sigtramp;
@@ -372,13 +370,11 @@ alpha_linux_init_abi (struct gdbarch_inf
   tdep->jb_elt_size = 8;
 
   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
-
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_lp64_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_linux_lp64_svr4_solib_ops);
 
   /* Enable TLS support.  */
   set_gdbarch_fetch_tls_load_module_address (gdbarch,
-                                             svr4_fetch_objfile_link_map);
+					     svr4_fetch_objfile_link_map);
 
   set_gdbarch_iterate_over_regset_sections
     (gdbarch, alpha_linux_iterate_over_regset_sections);
@@ -389,9 +385,8 @@ alpha_linux_init_abi (struct gdbarch_inf
 				    alpha_linux_gdb_signal_to_target);
 }
 
-void
-_initialize_alpha_linux_tdep (void)
+INIT_GDB_FILE (alpha_linux_tdep)
 {
   gdbarch_register_osabi (bfd_arch_alpha, 0, GDB_OSABI_LINUX,
-                          alpha_linux_init_abi);
+			  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.20200303/gdb/alpha-mdebug-tdep.c ./gdb/alpha-mdebug-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-mdebug-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-mdebug-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,7 +16,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/>.  */
 
-#include "defs.h"
 #include "frame.h"
 #include "frame-unwind.h"
 #include "frame-base.h"
@@ -31,13 +30,12 @@
 
 /* FIXME: Some of this code should perhaps be merged with mips.  */
 
-/* *INDENT-OFF* */
 /* Layout of a stack frame on the alpha:
 
-                |				|
+		|				|
  pdr members:	|  7th ... nth arg,		|
-                |  `pushed' by caller.		|
-                |				|
+		|  `pushed' by caller.		|
+		|				|
 ----------------|-------------------------------|<--  old_sp == vfp
    ^  ^  ^  ^	|				|
    |  |  |  |	|				|
@@ -72,9 +70,8 @@
    |            |  called procedure.		|
    v            |  				|
    -------------|-------------------------------|<-- sp
-                |				|
+		|				|
 */
-/* *INDENT-ON* */
 
 #define PROC_LOW_ADDR(proc) ((proc)->pdr.adr)
 #define PROC_FRAME_OFFSET(proc) ((proc)->pdr.frameoffset)
@@ -102,22 +99,22 @@ find_proc_desc (CORE_ADDR pc)
       CORE_ADDR startaddr;
       find_pc_partial_function (pc, &sh_name, &startaddr, NULL);
 
-      if (startaddr > BLOCK_START (b))
+      if (startaddr > b->start ())
 	/* This is the "pathological" case referred to in a comment in
 	   print_frame_info.  It might be better to move this check into
 	   symbol reading.  */
 	sym = NULL;
       else
-	sym = lookup_symbol (MDEBUG_EFI_SYMBOL_NAME, b, LABEL_DOMAIN,
+	sym = lookup_symbol (MDEBUG_EFI_SYMBOL_NAME, b, SEARCH_LABEL_DOMAIN,
 			     0).symbol;
     }
 
   if (sym)
     {
-      proc_desc = (struct mdebug_extra_func_info *) SYMBOL_VALUE_BYTES (sym);
+      proc_desc = (struct mdebug_extra_func_info *) sym->value_bytes ();
 
       /* Correct incorrect setjmp procedure descriptor from the library
-         to make backtrace through setjmp work.  */
+	 to make backtrace through setjmp work.  */
       if (proc_desc->pdr.pcreg == 0
 	  && strcmp (sh_name, "setjmp") == 0)
 	{
@@ -154,7 +151,7 @@ alpha_mdebug_after_prologue (CORE_ADDR p
   if (proc_desc)
     {
       /* If function is frameless, then we need to do it the hard way.  I
-         strongly suspect that frameless always means prologueless...  */
+	 strongly suspect that frameless always means prologueless...  */
       if (alpha_mdebug_frameless (proc_desc))
 	return 0;
     }
@@ -180,14 +177,14 @@ struct alpha_mdebug_unwind_cache
 {
   struct mdebug_extra_func_info *proc_desc;
   CORE_ADDR vfp;
-  struct trad_frame_saved_reg *saved_regs;
+  trad_frame_saved_reg *saved_regs;
 };
 
 /* Extract all of the information about the frame from PROC_DESC
    and store the resulting register save locations in the structure.  */
 
 static struct alpha_mdebug_unwind_cache *
-alpha_mdebug_frame_unwind_cache (struct frame_info *this_frame, 
+alpha_mdebug_frame_unwind_cache (const frame_info_ptr &this_frame,
 				 void **this_prologue_cache)
 {
   struct alpha_mdebug_unwind_cache *info;
@@ -231,14 +228,14 @@ alpha_mdebug_frame_unwind_cache (struct
       /* Clear bit for RA so we don't save it again later.  */
       mask &= ~(1 << returnreg);
 
-      info->saved_regs[returnreg].addr = reg_position;
+      info->saved_regs[returnreg].set_addr (reg_position);
       reg_position += 8;
     }
 
   for (ireg = 0; ireg <= 31; ++ireg)
     if (mask & (1 << ireg))
       {
-	info->saved_regs[ireg].addr = reg_position;
+	info->saved_regs[ireg].set_addr (reg_position);
 	reg_position += 8;
       }
 
@@ -248,14 +245,14 @@ alpha_mdebug_frame_unwind_cache (struct
   for (ireg = 0; ireg <= 31; ++ireg)
     if (mask & (1 << ireg))
       {
-	info->saved_regs[ALPHA_FP0_REGNUM + ireg].addr = reg_position;
+	info->saved_regs[ALPHA_FP0_REGNUM + ireg].set_addr (reg_position);
 	reg_position += 8;
       }
 
   /* The stack pointer of the previous frame is computed by popping
      the current stack frame.  */
-  if (!trad_frame_addr_p (info->saved_regs, ALPHA_SP_REGNUM))
-   trad_frame_set_value (info->saved_regs, ALPHA_SP_REGNUM, vfp);
+  if (!info->saved_regs[ALPHA_SP_REGNUM].is_addr ())
+    info->saved_regs[ALPHA_SP_REGNUM].set_value (vfp);
 
   return info;
 }
@@ -264,7 +261,7 @@ alpha_mdebug_frame_unwind_cache (struct
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-alpha_mdebug_frame_this_id (struct frame_info *this_frame,
+alpha_mdebug_frame_this_id (const frame_info_ptr &this_frame,
 			    void **this_prologue_cache,
 			    struct frame_id *this_id)
 {
@@ -277,7 +274,7 @@ alpha_mdebug_frame_this_id (struct frame
 /* Retrieve the value of REGNUM in FRAME.  Don't give up!  */
 
 static struct value *
-alpha_mdebug_frame_prev_register (struct frame_info *this_frame,
+alpha_mdebug_frame_prev_register (const frame_info_ptr &this_frame,
 				  void **this_prologue_cache, int regnum)
 {
   struct alpha_mdebug_unwind_cache *info
@@ -308,8 +305,8 @@ alpha_mdebug_max_frame_size_exceeded (st
 
 static int
 alpha_mdebug_frame_sniffer (const struct frame_unwind *self,
-                            struct frame_info *this_frame,
-                            void **this_cache)
+			    const frame_info_ptr &this_frame,
+			    void **this_cache)
 {
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
   struct mdebug_extra_func_info *proc_desc;
@@ -333,17 +330,19 @@ alpha_mdebug_frame_sniffer (const struct
   return 1;
 }
 
-static const struct frame_unwind alpha_mdebug_frame_unwind = {
+static const struct frame_unwind_legacy alpha_mdebug_frame_unwind (
+  "alpha mdebug",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   alpha_mdebug_frame_this_id,
   alpha_mdebug_frame_prev_register,
   NULL,
   alpha_mdebug_frame_sniffer
-};
+);
 
 static CORE_ADDR
-alpha_mdebug_frame_base_address (struct frame_info *this_frame,
+alpha_mdebug_frame_base_address (const frame_info_ptr &this_frame,
 				 void **this_prologue_cache)
 {
   struct alpha_mdebug_unwind_cache *info
@@ -353,7 +352,7 @@ alpha_mdebug_frame_base_address (struct
 }
 
 static CORE_ADDR
-alpha_mdebug_frame_locals_address (struct frame_info *this_frame,
+alpha_mdebug_frame_locals_address (const frame_info_ptr &this_frame,
 				   void **this_prologue_cache)
 {
   struct alpha_mdebug_unwind_cache *info
@@ -363,7 +362,7 @@ alpha_mdebug_frame_locals_address (struc
 }
 
 static CORE_ADDR
-alpha_mdebug_frame_args_address (struct frame_info *this_frame,
+alpha_mdebug_frame_args_address (const frame_info_ptr &this_frame,
 				 void **this_prologue_cache)
 {
   struct alpha_mdebug_unwind_cache *info
@@ -380,7 +379,7 @@ static const struct frame_base alpha_mde
 };
 
 static const struct frame_base *
-alpha_mdebug_frame_base_sniffer (struct frame_info *this_frame)
+alpha_mdebug_frame_base_sniffer (const frame_info_ptr &this_frame)
 {
   CORE_ADDR pc = get_frame_address_in_block (this_frame);
   struct mdebug_extra_func_info *proc_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.20200303/gdb/alpha-nbsd-tdep.c ./gdb/alpha-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-nbsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-nbsd-tdep.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,289 +0,0 @@
-/* Target-dependent code for NetBSD/alpha.
-
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
-
-   Contributed by Wasabi Systems, Inc.
-
-   This file is part of GDB.
-
-   This program is free software; you can redistribute it and/or modify
-   it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 3 of the License, or
-   (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-   GNU General Public License for more details.
-
-   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 "gdbcore.h"
-#include "osabi.h"
-#include "regcache.h"
-#include "regset.h"
-#include "value.h"
-
-#include "alpha-tdep.h"
-#include "alpha-bsd-tdep.h"
-#include "nbsd-tdep.h"
-#include "solib-svr4.h"
-#include "target.h"
-
-/* Core file support.  */
-
-/* Sizeof `struct reg' in <machine/reg.h>.  */
-#define ALPHANBSD_SIZEOF_GREGS	(32 * 8)
-
-/* Sizeof `struct fpreg' in <machine/reg.h.  */
-#define ALPHANBSD_SIZEOF_FPREGS	((32 * 8) + 8)
-
-/* Supply register REGNUM from the buffer specified by FPREGS and LEN
-   in the floating-point register set REGSET to register cache
-   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
-
-static void
-alphanbsd_supply_fpregset (const struct regset *regset,
-			   struct regcache *regcache,
-			   int regnum, const void *fpregs, size_t len)
-{
-  const gdb_byte *regs = (const gdb_byte *) fpregs;
-  int i;
-
-  gdb_assert (len >= ALPHANBSD_SIZEOF_FPREGS);
-
-  for (i = ALPHA_FP0_REGNUM; i < ALPHA_FP0_REGNUM + 31; i++)
-    {
-      if (regnum == i || regnum == -1)
-	regcache->raw_supply (i, regs + (i - ALPHA_FP0_REGNUM) * 8);
-    }
-
-  if (regnum == ALPHA_FPCR_REGNUM || regnum == -1)
-    regcache->raw_supply (ALPHA_FPCR_REGNUM, regs + 32 * 8);
-}
-
-/* Supply register REGNUM from the buffer specified by GREGS and LEN
-   in the general-purpose register set REGSET to register cache
-   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
-
-static void
-alphanbsd_aout_supply_gregset (const struct regset *regset,
-			       struct regcache *regcache,
-			       int regnum, const void *gregs, size_t len)
-{
-  const gdb_byte *regs = (const gdb_byte *) gregs;
-  int i;
-
-  /* Table to map a GDB register number to a trapframe register index.  */
-  static const int regmap[] =
-  {
-     0,   1,   2,   3,
-     4,   5,   6,   7,
-     8,   9,  10,  11,
-    12,  13,  14,  15, 
-    30,  31,  32,  16, 
-    17,  18,  19,  20,
-    21,  22,  23,  24,
-    25,  29,  26
-  };
-
-  gdb_assert (len >= ALPHANBSD_SIZEOF_GREGS);
-
-  for (i = 0; i < ARRAY_SIZE(regmap); i++)
-    {
-      if (regnum == i || regnum == -1)
-	regcache->raw_supply (i, regs + regmap[i] * 8);
-    }
-
-  if (regnum == ALPHA_PC_REGNUM || regnum == -1)
-    regcache->raw_supply (ALPHA_PC_REGNUM, regs + 31 * 8);
-
-  if (len >= ALPHANBSD_SIZEOF_GREGS + ALPHANBSD_SIZEOF_FPREGS)
-    {
-      regs += ALPHANBSD_SIZEOF_GREGS;
-      len -= ALPHANBSD_SIZEOF_GREGS;
-      alphanbsd_supply_fpregset (regset, regcache, regnum, regs, len);
-    }
-}
-
-/* Supply register REGNUM from the buffer specified by GREGS and LEN
-   in the general-purpose register set REGSET to register cache
-   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
-
-static void
-alphanbsd_supply_gregset (const struct regset *regset,
-			  struct regcache *regcache,
-			  int regnum, const void *gregs, size_t len)
-{
-  const gdb_byte *regs = (const gdb_byte *) gregs;
-  int i;
-
-  if (len >= ALPHANBSD_SIZEOF_GREGS + ALPHANBSD_SIZEOF_FPREGS)
-    {
-      alphanbsd_aout_supply_gregset (regset, regcache, regnum, gregs, len);
-      return;
-    }
-
-  for (i = 0; i < ALPHA_ZERO_REGNUM; i++)
-    {
-      if (regnum == i || regnum == -1)
-	regcache->raw_supply (i, regs + i * 8);
-    }
-
-  if (regnum == ALPHA_PC_REGNUM || regnum == -1)
-    regcache->raw_supply (ALPHA_PC_REGNUM, regs + 31 * 8);
-}
-
-/* NetBSD/alpha register sets.  */
-
-static const struct regset alphanbsd_gregset =
-{
-  NULL,
-  alphanbsd_supply_gregset,
-  NULL,
-  REGSET_VARIABLE_SIZE
-};
-
-static const struct regset alphanbsd_fpregset =
-{
-  NULL,
-  alphanbsd_supply_fpregset
-};
-
-/* Iterate over supported core file register note sections. */
-
-void
-alphanbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
-					iterate_over_regset_sections_cb *cb,
-					void *cb_data,
-					const struct regcache *regcache)
-{
-  cb (".reg", ALPHANBSD_SIZEOF_GREGS, ALPHANBSD_SIZEOF_GREGS,
-      &alphanbsd_gregset, NULL, cb_data);
-  cb (".reg2", ALPHANBSD_SIZEOF_FPREGS, ALPHANBSD_SIZEOF_FPREGS,
-      &alphanbsd_fpregset, NULL, cb_data);
-}
-
-
-/* Signal trampolines.  */
-
-/* Under NetBSD/alpha, signal handler invocations can be identified by the
-   designated code sequence that is used to return from a signal handler.
-   In particular, the return address of a signal handler points to the
-   following code sequence:
-
-	ldq	a0, 0(sp)
-	lda	sp, 16(sp)
-	lda	v0, 295(zero)	# __sigreturn14
-	call_pal callsys
-
-   Each instruction has a unique encoding, so we simply attempt to match
-   the instruction the PC is pointing to with any of the above instructions.
-   If there is a hit, we know the offset to the start of the designated
-   sequence and can then check whether we really are executing in the
-   signal trampoline.  If not, -1 is returned, otherwise the offset from the
-   start of the return sequence is returned.  */
-static const gdb_byte sigtramp_retcode[] =
-{
-  0x00, 0x00, 0x1e, 0xa6,	/* ldq a0, 0(sp) */
-  0x10, 0x00, 0xde, 0x23,	/* lda sp, 16(sp) */
-  0x27, 0x01, 0x1f, 0x20,	/* lda v0, 295(zero) */
-  0x83, 0x00, 0x00, 0x00,	/* call_pal callsys */
-};
-#define RETCODE_NWORDS		4
-#define RETCODE_SIZE		(RETCODE_NWORDS * 4)
-
-static LONGEST
-alphanbsd_sigtramp_offset (struct gdbarch *gdbarch, CORE_ADDR pc)
-{
-  gdb_byte ret[RETCODE_SIZE], w[4];
-  LONGEST off;
-  int i;
-
-  if (target_read_memory (pc, w, 4) != 0)
-    return -1;
-
-  for (i = 0; i < RETCODE_NWORDS; i++)
-    {
-      if (memcmp (w, sigtramp_retcode + (i * 4), 4) == 0)
-	break;
-    }
-  if (i == RETCODE_NWORDS)
-    return (-1);
-
-  off = i * 4;
-  pc -= off;
-
-  if (target_read_memory (pc, ret, sizeof (ret)) != 0)
-    return -1;
-
-  if (memcmp (ret, sigtramp_retcode, RETCODE_SIZE) == 0)
-    return off;
-
-  return -1;
-}
-
-static int
-alphanbsd_pc_in_sigtramp (struct gdbarch *gdbarch,
-		 	  CORE_ADDR pc, const char *func_name)
-{
-  return (nbsd_pc_in_sigtramp (pc, func_name)
-	  || alphanbsd_sigtramp_offset (gdbarch, pc) >= 0);
-}
-
-static CORE_ADDR
-alphanbsd_sigcontext_addr (struct frame_info *frame)
-{
-  /* FIXME: This is not correct for all versions of NetBSD/alpha.
-     We will probably need to disassemble the trampoline to figure
-     out which trampoline frame type we have.  */
-  if (!get_next_frame (frame))
-    return 0;
-  return get_frame_base (get_next_frame (frame));
-}
-
-
-static void
-alphanbsd_init_abi (struct gdbarch_info info,
-                    struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  /* Hook into the DWARF CFI frame unwinder.  */
-  alpha_dwarf2_init_abi (info, gdbarch);
-
-  /* Hook into the MDEBUG frame unwinder.  */
-  alpha_mdebug_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);
-
-  /* NetBSD/alpha has SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_lp64_fetch_link_map_offsets);
-
-  tdep->dynamic_sigtramp_offset = alphanbsd_sigtramp_offset;
-  tdep->pc_in_sigtramp = alphanbsd_pc_in_sigtramp;
-  tdep->sigcontext_addr = alphanbsd_sigcontext_addr;
-
-  tdep->jb_pc = 2;
-  tdep->jb_elt_size = 8;
-
-  set_gdbarch_iterate_over_regset_sections
-    (gdbarch, alphanbsd_iterate_over_regset_sections);
-}
-
-
-void
-_initialize_alphanbsd_tdep (void)
-{
-  /* Even though NetBSD/alpha used ELF since day one, it used the
-     traditional a.out-style core dump format before NetBSD 1.6, but
-     we don't support those.  */
-  gdbarch_register_osabi (bfd_arch_alpha, 0, GDB_OSABI_NETBSD,
-                          alphanbsd_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.20200303/gdb/alpha-netbsd-tdep.c ./gdb/alpha-netbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-netbsd-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/alpha-netbsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,288 @@
+/* Target-dependent code for NetBSD/alpha.
+
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
+
+   Contributed by Wasabi Systems, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "frame.h"
+#include "gdbcore.h"
+#include "osabi.h"
+#include "regcache.h"
+#include "regset.h"
+#include "value.h"
+
+#include "alpha-tdep.h"
+#include "alpha-bsd-tdep.h"
+#include "netbsd-tdep.h"
+#include "solib-svr4.h"
+#include "target.h"
+
+/* Core file support.  */
+
+/* Sizeof `struct reg' in <machine/reg.h>.  */
+#define ALPHANBSD_SIZEOF_GREGS	(32 * 8)
+
+/* Sizeof `struct fpreg' in <machine/reg.h.  */
+#define ALPHANBSD_SIZEOF_FPREGS	((32 * 8) + 8)
+
+/* Supply register REGNUM from the buffer specified by FPREGS and LEN
+   in the floating-point register set REGSET to register cache
+   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
+
+static void
+alphanbsd_supply_fpregset (const struct regset *regset,
+			   struct regcache *regcache,
+			   int regnum, const void *fpregs, size_t len)
+{
+  const gdb_byte *regs = (const gdb_byte *) fpregs;
+  int i;
+
+  gdb_assert (len >= ALPHANBSD_SIZEOF_FPREGS);
+
+  for (i = ALPHA_FP0_REGNUM; i < ALPHA_FP0_REGNUM + 31; i++)
+    {
+      if (regnum == i || regnum == -1)
+	regcache->raw_supply (i, regs + (i - ALPHA_FP0_REGNUM) * 8);
+    }
+
+  if (regnum == ALPHA_FPCR_REGNUM || regnum == -1)
+    regcache->raw_supply (ALPHA_FPCR_REGNUM, regs + 32 * 8);
+}
+
+/* Supply register REGNUM from the buffer specified by GREGS and LEN
+   in the general-purpose register set REGSET to register cache
+   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
+
+static void
+alphanbsd_aout_supply_gregset (const struct regset *regset,
+			       struct regcache *regcache,
+			       int regnum, const void *gregs, size_t len)
+{
+  const gdb_byte *regs = (const gdb_byte *) gregs;
+  int i;
+
+  /* Table to map a GDB register number to a trapframe register index.  */
+  static const int regmap[] =
+  {
+     0,   1,   2,   3,
+     4,   5,   6,   7,
+     8,   9,  10,  11,
+    12,  13,  14,  15, 
+    30,  31,  32,  16, 
+    17,  18,  19,  20,
+    21,  22,  23,  24,
+    25,  29,  26
+  };
+
+  gdb_assert (len >= ALPHANBSD_SIZEOF_GREGS);
+
+  for (i = 0; i < ARRAY_SIZE(regmap); i++)
+    {
+      if (regnum == i || regnum == -1)
+	regcache->raw_supply (i, regs + regmap[i] * 8);
+    }
+
+  if (regnum == ALPHA_PC_REGNUM || regnum == -1)
+    regcache->raw_supply (ALPHA_PC_REGNUM, regs + 31 * 8);
+
+  if (len >= ALPHANBSD_SIZEOF_GREGS + ALPHANBSD_SIZEOF_FPREGS)
+    {
+      regs += ALPHANBSD_SIZEOF_GREGS;
+      len -= ALPHANBSD_SIZEOF_GREGS;
+      alphanbsd_supply_fpregset (regset, regcache, regnum, regs, len);
+    }
+}
+
+/* Supply register REGNUM from the buffer specified by GREGS and LEN
+   in the general-purpose register set REGSET to register cache
+   REGCACHE.  If REGNUM is -1, do this for all registers in REGSET.  */
+
+static void
+alphanbsd_supply_gregset (const struct regset *regset,
+			  struct regcache *regcache,
+			  int regnum, const void *gregs, size_t len)
+{
+  const gdb_byte *regs = (const gdb_byte *) gregs;
+  int i;
+
+  if (len >= ALPHANBSD_SIZEOF_GREGS + ALPHANBSD_SIZEOF_FPREGS)
+    {
+      alphanbsd_aout_supply_gregset (regset, regcache, regnum, gregs, len);
+      return;
+    }
+
+  for (i = 0; i < ALPHA_ZERO_REGNUM; i++)
+    {
+      if (regnum == i || regnum == -1)
+	regcache->raw_supply (i, regs + i * 8);
+    }
+
+  if (regnum == ALPHA_PC_REGNUM || regnum == -1)
+    regcache->raw_supply (ALPHA_PC_REGNUM, regs + 31 * 8);
+}
+
+/* NetBSD/alpha register sets.  */
+
+static const struct regset alphanbsd_gregset =
+{
+  NULL,
+  alphanbsd_supply_gregset,
+  NULL,
+  REGSET_VARIABLE_SIZE
+};
+
+static const struct regset alphanbsd_fpregset =
+{
+  NULL,
+  alphanbsd_supply_fpregset
+};
+
+/* Iterate over supported core file register note sections. */
+
+void
+alphanbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
+					iterate_over_regset_sections_cb *cb,
+					void *cb_data,
+					const struct regcache *regcache)
+{
+  cb (".reg", ALPHANBSD_SIZEOF_GREGS, ALPHANBSD_SIZEOF_GREGS,
+      &alphanbsd_gregset, NULL, cb_data);
+  cb (".reg2", ALPHANBSD_SIZEOF_FPREGS, ALPHANBSD_SIZEOF_FPREGS,
+      &alphanbsd_fpregset, NULL, cb_data);
+}
+
+
+/* Signal trampolines.  */
+
+/* Under NetBSD/alpha, signal handler invocations can be identified by the
+   designated code sequence that is used to return from a signal handler.
+   In particular, the return address of a signal handler points to the
+   following code sequence:
+
+	ldq	a0, 0(sp)
+	lda	sp, 16(sp)
+	lda	v0, 295(zero)	# __sigreturn14
+	call_pal callsys
+
+   Each instruction has a unique encoding, so we simply attempt to match
+   the instruction the PC is pointing to with any of the above instructions.
+   If there is a hit, we know the offset to the start of the designated
+   sequence and can then check whether we really are executing in the
+   signal trampoline.  If not, -1 is returned, otherwise the offset from the
+   start of the return sequence is returned.  */
+static const gdb_byte sigtramp_retcode[] =
+{
+  0x00, 0x00, 0x1e, 0xa6,	/* ldq a0, 0(sp) */
+  0x10, 0x00, 0xde, 0x23,	/* lda sp, 16(sp) */
+  0x27, 0x01, 0x1f, 0x20,	/* lda v0, 295(zero) */
+  0x83, 0x00, 0x00, 0x00,	/* call_pal callsys */
+};
+#define RETCODE_NWORDS		4
+#define RETCODE_SIZE		(RETCODE_NWORDS * 4)
+
+static LONGEST
+alphanbsd_sigtramp_offset (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  gdb_byte ret[RETCODE_SIZE], w[4];
+  LONGEST off;
+  int i;
+
+  if (target_read_memory (pc, w, 4) != 0)
+    return -1;
+
+  for (i = 0; i < RETCODE_NWORDS; i++)
+    {
+      if (memcmp (w, sigtramp_retcode + (i * 4), 4) == 0)
+	break;
+    }
+  if (i == RETCODE_NWORDS)
+    return (-1);
+
+  off = i * 4;
+  pc -= off;
+
+  if (target_read_memory (pc, ret, sizeof (ret)) != 0)
+    return -1;
+
+  if (memcmp (ret, sigtramp_retcode, RETCODE_SIZE) == 0)
+    return off;
+
+  return -1;
+}
+
+static int
+alphanbsd_pc_in_sigtramp (struct gdbarch *gdbarch,
+		 	  CORE_ADDR pc, const char *func_name)
+{
+  return (nbsd_pc_in_sigtramp (pc, func_name)
+	  || alphanbsd_sigtramp_offset (gdbarch, pc) >= 0);
+}
+
+static CORE_ADDR
+alphanbsd_sigcontext_addr (const frame_info_ptr &frame)
+{
+  /* FIXME: This is not correct for all versions of NetBSD/alpha.
+     We will probably need to disassemble the trampoline to figure
+     out which trampoline frame type we have.  */
+  if (!get_next_frame (frame))
+    return 0;
+  return get_frame_base (get_next_frame (frame));
+}
+
+
+static void
+alphanbsd_init_abi (struct gdbarch_info info,
+		    struct gdbarch *gdbarch)
+{
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
+
+  /* Hook into the DWARF CFI frame unwinder.  */
+  alpha_dwarf2_init_abi (info, gdbarch);
+
+  /* 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_get_next_pcs (gdbarch, alpha_software_single_step);
+
+  /* NetBSD/alpha has SVR4-style shared libraries.  */
+  set_solib_svr4_ops (gdbarch, make_svr4_lp64_solib_ops);
+
+  tdep->dynamic_sigtramp_offset = alphanbsd_sigtramp_offset;
+  tdep->pc_in_sigtramp = alphanbsd_pc_in_sigtramp;
+  tdep->sigcontext_addr = alphanbsd_sigcontext_addr;
+
+  tdep->jb_pc = 2;
+  tdep->jb_elt_size = 8;
+
+  set_gdbarch_iterate_over_regset_sections
+    (gdbarch, alphanbsd_iterate_over_regset_sections);
+}
+
+
+INIT_GDB_FILE (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
+     we don't support those.  */
+  gdbarch_register_osabi (bfd_arch_alpha, 0, GDB_OSABI_NETBSD,
+			  alphanbsd_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.20200303/gdb/alpha-obsd-tdep.c ./gdb/alpha-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-obsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-obsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/alpha.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "frame.h"
 #include "gdbcore.h"
 #include "osabi.h"
@@ -69,7 +68,7 @@ alphaobsd_pc_in_sigtramp (struct gdbarch
 }
 
 static CORE_ADDR
-alphaobsd_sigcontext_addr (struct frame_info *this_frame)
+alphaobsd_sigcontext_addr (const frame_info_ptr &this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -97,7 +96,7 @@ alphaobsd_sigcontext_addr (struct frame_
 static void
 alphaobsd_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
 
   /* Hook into the DWARF CFI frame unwinder.  */
   alpha_dwarf2_init_abi (info, gdbarch);
@@ -107,11 +106,10 @@ alphaobsd_init_abi(struct gdbarch_info i
 
   /* OpenBSD/alpha 3.0 and earlier does not provide single step
      support via ptrace(2); use software single-stepping for now.  */
-  set_gdbarch_software_single_step (gdbarch, alpha_software_single_step);
+  set_gdbarch_get_next_pcs (gdbarch, alpha_software_single_step);
 
   /* OpenBSD/alpha has SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_lp64_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_svr4_lp64_solib_ops);
   set_gdbarch_skip_solib_resolver (gdbarch, obsd_skip_solib_resolver);
 
   tdep->dynamic_sigtramp_offset = alphaobsd_sigtramp_offset;
@@ -126,9 +124,8 @@ alphaobsd_init_abi(struct gdbarch_info i
 }
 
 
-void
-_initialize_alphaobsd_tdep (void)
+INIT_GDB_FILE (alphaobsd_tdep)
 {
   gdbarch_register_osabi (bfd_arch_alpha, 0, GDB_OSABI_OPENBSD,
-                          alphaobsd_init_abi);
+			  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.20200303/gdb/alpha-tdep.c ./gdb/alpha-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,15 +17,15 @@
    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 "extract-store-integer.h"
 #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"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "gdbcore.h"
 #include "dis-asm.h"
 #include "symfile.h"
@@ -35,7 +35,6 @@
 #include "reggroups.h"
 #include "arch-utils.h"
 #include "osabi.h"
-#include "block.h"
 #include "infcall.h"
 #include "trad-frame.h"
 
@@ -44,6 +43,9 @@
 #include "alpha-tdep.h"
 #include <algorithm>
 
+#include "target-descriptions.h"
+#include "features/alpha.c"
+
 /* Instruction decoding.  The notations for registers, immediates and
    opcodes are the same as the one used in Compaq's Alpha architecture
    handbook.  */
@@ -76,75 +78,49 @@ static const int subq_opcode = 0x10;
 static const int subq_function = 0x29;
 
 
-/* Return the name of the REGNO register.
+/* Alpha registers using their software names.
 
    An empty name corresponds to a register number that used to
    be used for a virtual register.  That virtual register has
    been removed, but the index is still reserved to maintain
    compatibility with existing remote alpha targets.  */
 
-static const char *
-alpha_register_name (struct gdbarch *gdbarch, int regno)
+static const char * const alpha_register_names[] =
 {
-  static const char * const register_names[] =
-  {
-    "v0",   "t0",   "t1",   "t2",   "t3",   "t4",   "t5",   "t6",
-    "t7",   "s0",   "s1",   "s2",   "s3",   "s4",   "s5",   "fp",
-    "a0",   "a1",   "a2",   "a3",   "a4",   "a5",   "t8",   "t9",
-    "t10",  "t11",  "ra",   "t12",  "at",   "gp",   "sp",   "zero",
-    "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",  "fpcr",
-    "pc",   "",     "unique"
-  };
-
-  if (regno < 0)
-    return NULL;
-  if (regno >= ARRAY_SIZE(register_names))
-    return NULL;
-  return register_names[regno];
-}
+  "v0",   "t0",   "t1",   "t2",   "t3",   "t4",   "t5",   "t6",
+  "t7",   "s0",   "s1",   "s2",   "s3",   "s4",   "s5",   "fp",
+  "a0",   "a1",   "a2",   "a3",   "a4",   "a5",   "t8",   "t9",
+  "t10",  "t11",  "ra",   "t12",  "at",   "gp",   "sp",   "zero",
+  "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",  "fpcr",
+  "pc",   "",     "unique"
+};
+static_assert (ALPHA_NUM_REGS == ARRAY_SIZE (alpha_register_names));
 
 static int
 alpha_cannot_fetch_register (struct gdbarch *gdbarch, int regno)
 {
-  return (strlen (alpha_register_name (gdbarch, regno)) == 0);
+  return (strlen (alpha_register_names[regno]) == 0);
 }
 
 static int
 alpha_cannot_store_register (struct gdbarch *gdbarch, int regno)
 {
   return (regno == ALPHA_ZERO_REGNUM
-          || strlen (alpha_register_name (gdbarch, regno)) == 0);
-}
-
-static struct type *
-alpha_register_type (struct gdbarch *gdbarch, int regno)
-{
-  if (regno == ALPHA_SP_REGNUM || regno == ALPHA_GP_REGNUM)
-    return builtin_type (gdbarch)->builtin_data_ptr;
-  if (regno == ALPHA_PC_REGNUM)
-    return builtin_type (gdbarch)->builtin_func_ptr;
-
-  /* Don't need to worry about little vs big endian until 
-     some jerk tries to port to alpha-unicosmk.  */
-  if (regno >= ALPHA_FP0_REGNUM && regno < ALPHA_FP0_REGNUM + 31)
-    return builtin_type (gdbarch)->builtin_double;
-
-  return builtin_type (gdbarch)->builtin_int64;
+	  || strlen (alpha_register_names[regno]) == 0);
 }
 
 /* Is REGNUM a member of REGGROUP?  */
 
 static int
 alpha_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
-			   struct reggroup *group)
+			   const struct reggroup *group)
 {
   /* Filter out any registers eliminated, but whose regnum is 
      reserved for backward compatibility, e.g. the vfp.  */
-  if (gdbarch_register_name (gdbarch, regnum) == NULL
-      || *gdbarch_register_name (gdbarch, regnum) == '\0')
+  if (*gdbarch_register_name (gdbarch, regnum) == '\0')
     return 0;
 
   if (group == all_reggroup)
@@ -234,11 +210,11 @@ alpha_convert_register_p (struct gdbarch
 			  struct type *type)
 {
   return (regno >= ALPHA_FP0_REGNUM && regno < ALPHA_FP0_REGNUM + 31
-	  && TYPE_LENGTH (type) == 4);
+	  && type->length () == 4);
 }
 
 static int
-alpha_register_to_value (struct frame_info *frame, int regnum,
+alpha_register_to_value (const frame_info_ptr &frame, int regnum,
 			 struct type *valtype, gdb_byte *out,
 			int *optimizedp, int *unavailablep)
 {
@@ -246,8 +222,8 @@ alpha_register_to_value (struct frame_in
   struct value *value = get_frame_register_value (frame, regnum);
 
   gdb_assert (value != NULL);
-  *optimizedp = value_optimized_out (value);
-  *unavailablep = !value_entirely_available (value);
+  *optimizedp = value->optimized_out ();
+  *unavailablep = !value->entirely_available ();
 
   if (*optimizedp || *unavailablep)
     {
@@ -257,25 +233,26 @@ alpha_register_to_value (struct frame_in
 
   /* Convert to VALTYPE.  */
 
-  gdb_assert (TYPE_LENGTH (valtype) == 4);
-  alpha_sts (gdbarch, out, value_contents_all (value));
+  gdb_assert (valtype->length () == 4);
+  alpha_sts (gdbarch, out, value->contents_all ().data ());
 
   release_value (value);
   return 1;
 }
 
 static void
-alpha_value_to_register (struct frame_info *frame, int regnum,
+alpha_value_to_register (const frame_info_ptr &frame, int regnum,
 			 struct type *valtype, const gdb_byte *in)
 {
-  gdb_byte out[ALPHA_REGISTER_SIZE];
+  int reg_size = register_size (get_frame_arch (frame), regnum);
+  gdb_assert (valtype->length () == 4);
+  gdb_assert (reg_size <= ALPHA_REGISTER_SIZE);
 
-  gdb_assert (TYPE_LENGTH (valtype) == 4);
-  gdb_assert (register_size (get_frame_arch (frame), regnum)
-	      <= ALPHA_REGISTER_SIZE);
+  gdb_byte out[ALPHA_REGISTER_SIZE];
   alpha_lds (get_frame_arch (frame), out, in);
 
-  put_frame_register (frame, regnum, out);
+  auto out_view = gdb::make_array_view (out, reg_size);
+  put_frame_register (get_next_frame_sentinel_okay (frame), regnum, out_view);
 }
 
 
@@ -324,24 +301,24 @@ alpha_push_dummy_call (struct gdbarch *g
   for (i = 0, m_arg = alpha_args; i < nargs; i++, m_arg++)
     {
       struct value *arg = args[i];
-      struct type *arg_type = check_typedef (value_type (arg));
+      struct type *arg_type = check_typedef (arg->type ());
 
       /* 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:
 	case TYPE_CODE_CHAR:
 	case TYPE_CODE_RANGE:
 	case TYPE_CODE_ENUM:
-	  if (TYPE_LENGTH (arg_type) == 4)
+	  if (arg_type->length () == 4)
 	    {
 	      /* 32-bit values must be sign-extended to 64 bits
 		 even if the base data type is unsigned.  */
 	      arg_type = builtin_type (gdbarch)->builtin_int32;
 	      arg = value_cast (arg_type, arg);
 	    }
-	  if (TYPE_LENGTH (arg_type) < ALPHA_REGISTER_SIZE)
+	  if (arg_type->length () < ALPHA_REGISTER_SIZE)
 	    {
 	      arg_type = builtin_type (gdbarch)->builtin_int64;
 	      arg = value_cast (arg_type, arg);
@@ -352,20 +329,20 @@ alpha_push_dummy_call (struct gdbarch *g
 	  /* "float" arguments loaded in registers must be passed in
 	     register format, aka "double".  */
 	  if (accumulate_size < sizeof (arg_reg_buffer)
-	      && TYPE_LENGTH (arg_type) == 4)
+	      && arg_type->length () == 4)
 	    {
 	      arg_type = builtin_type (gdbarch)->builtin_double;
 	      arg = value_cast (arg_type, arg);
 	    }
 	  /* Tru64 5.1 has a 128-bit long double, and passes this by
 	     invisible reference.  No one else uses this data type.  */
-	  else if (TYPE_LENGTH (arg_type) == 16)
+	  else if (arg_type->length () == 16)
 	    {
 	      /* Allocate aligned storage.  */
 	      sp = (sp & -16) - 16;
 
 	      /* Write the real data into the stack.  */
-	      write_memory (sp, value_contents (arg), 16);
+	      write_memory (sp, arg->contents ().data (), 16);
 
 	      /* Construct the indirection.  */
 	      arg_type = lookup_pointer_type (arg_type);
@@ -380,13 +357,13 @@ alpha_push_dummy_call (struct gdbarch *g
 
 	  /* Tru64 5.1 has a 128-bit long double, and passes this by
 	     invisible reference.  */
-	  if (TYPE_LENGTH (arg_type) == 32)
+	  if (arg_type->length () == 32)
 	    {
 	      /* Allocate aligned storage.  */
 	      sp = (sp & -16) - 16;
 
 	      /* Write the real data into the stack.  */
-	      write_memory (sp, value_contents (arg), 32);
+	      write_memory (sp, arg->contents ().data (), 32);
 
 	      /* Construct the indirection.  */
 	      arg_type = lookup_pointer_type (arg_type);
@@ -397,10 +374,10 @@ alpha_push_dummy_call (struct gdbarch *g
 	default:
 	  break;
 	}
-      m_arg->len = TYPE_LENGTH (arg_type);
+      m_arg->len = arg_type->length ();
       m_arg->offset = accumulate_size;
       accumulate_size = (accumulate_size + m_arg->len + 7) & ~7;
-      m_arg->contents = value_contents (arg);
+      m_arg->contents = arg->contents ().data ();
     }
 
   /* Determine required argument register loads, loading an argument register
@@ -478,10 +455,10 @@ 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))
+      switch (valtype->length ())
 	{
 	case 4:
 	  regcache->cooked_read (ALPHA_FP0_REGNUM, raw_buffer);
@@ -498,13 +475,12 @@ alpha_extract_return_value (struct type
 	  break;
 
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("unknown floating point width"));
+	  internal_error (_("unknown floating point width"));
 	}
       break;
 
     case TYPE_CODE_COMPLEX:
-      switch (TYPE_LENGTH (valtype))
+      switch (valtype->length ())
 	{
 	case 8:
 	  /* ??? This isn't correct wrt the ABI, but it's what GCC does.  */
@@ -522,15 +498,14 @@ alpha_extract_return_value (struct type
 	  break;
 
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("unknown floating point width"));
+	  internal_error (_("unknown floating point width"));
 	}
       break;
 
     default:
       /* Assume everything else degenerates to an integer.  */
       regcache_cooked_read_unsigned (regcache, ALPHA_V0_REGNUM, &l);
-      store_unsigned_integer (valbuf, TYPE_LENGTH (valtype), byte_order, l);
+      store_unsigned_integer (valbuf, valtype->length (), byte_order, l);
       break;
     }
 }
@@ -546,10 +521,10 @@ 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))
+      switch (valtype->length ())
 	{
 	case 4:
 	  alpha_lds (gdbarch, raw_buffer, valbuf);
@@ -567,13 +542,12 @@ alpha_store_return_value (struct type *v
 	  error (_("Cannot set a 128-bit long double return value."));
 
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("unknown floating point width"));
+	  internal_error (_("unknown floating point width"));
 	}
       break;
 
     case TYPE_CODE_COMPLEX:
-      switch (TYPE_LENGTH (valtype))
+      switch (valtype->length ())
 	{
 	case 8:
 	  /* ??? This isn't correct wrt the ABI, but it's what GCC does.  */
@@ -592,8 +566,7 @@ alpha_store_return_value (struct type *v
 	  error (_("Cannot set a 128-bit long double return value."));
 
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("unknown floating point width"));
+	  internal_error (_("unknown floating point width"));
 	}
       break;
 
@@ -601,7 +574,7 @@ alpha_store_return_value (struct type *v
       /* Assume everything else degenerates to an integer.  */
       /* 32-bit values must be sign-extended to 64 bits
 	 even if the base data type is unsigned.  */
-      if (TYPE_LENGTH (valtype) == 4)
+      if (valtype->length () == 4)
 	valtype = builtin_type (gdbarch)->builtin_int32;
       l = unpack_long (valtype, valbuf);
       regcache_cooked_write_unsigned (regcache, ALPHA_V0_REGNUM, l);
@@ -614,18 +587,19 @@ 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 ();
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
 
   if ((code == TYPE_CODE_STRUCT
        || code == TYPE_CODE_UNION
        || code == TYPE_CODE_ARRAY)
-      && gdbarch_tdep (gdbarch)->return_in_memory (type))
+      && tdep->return_in_memory (type))
     {
       if (readbuf)
 	{
 	  ULONGEST addr;
 	  regcache_raw_read_unsigned (regcache, ALPHA_V0_REGNUM, &addr);
-	  read_memory (addr, readbuf, TYPE_LENGTH (type));
+	  read_memory (addr, readbuf, type->length ());
 	}
 
       return RETURN_VALUE_ABI_RETURNS_ADDRESS;
@@ -847,10 +821,10 @@ alpha_deal_with_atomic_sequence (struct
    into the "pc".  This routine returns true on success.  */
 
 static int
-alpha_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
+alpha_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   CORE_ADDR jb_addr;
   gdb_byte raw_buffer[ALPHA_REGISTER_SIZE];
@@ -878,11 +852,10 @@ struct alpha_sigtramp_unwind_cache
 };
 
 static struct alpha_sigtramp_unwind_cache *
-alpha_sigtramp_frame_unwind_cache (struct frame_info *this_frame,
+alpha_sigtramp_frame_unwind_cache (const frame_info_ptr &this_frame,
 				   void **this_prologue_cache)
 {
   struct alpha_sigtramp_unwind_cache *info;
-  struct gdbarch_tdep *tdep;
 
   if (*this_prologue_cache)
     return (struct alpha_sigtramp_unwind_cache *) *this_prologue_cache;
@@ -890,7 +863,8 @@ alpha_sigtramp_frame_unwind_cache (struc
   info = FRAME_OBSTACK_ZALLOC (struct alpha_sigtramp_unwind_cache);
   *this_prologue_cache = info;
 
-  tdep = gdbarch_tdep (get_frame_arch (this_frame));
+  gdbarch *arch = get_frame_arch (this_frame);
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (arch);
   info->sigcontext_addr = tdep->sigcontext_addr (this_frame);
 
   return info;
@@ -903,7 +877,7 @@ static CORE_ADDR
 alpha_sigtramp_register_address (struct gdbarch *gdbarch,
 				 CORE_ADDR sigcontext_addr, int regnum)
 { 
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
 
   if (regnum >= 0 && regnum < 32)
     return sigcontext_addr + tdep->sc_regs_offset + regnum * 8;
@@ -919,12 +893,12 @@ alpha_sigtramp_register_address (struct
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-alpha_sigtramp_frame_this_id (struct frame_info *this_frame,
+alpha_sigtramp_frame_this_id (const frame_info_ptr &this_frame,
 			      void **this_prologue_cache,
 			      struct frame_id *this_id)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
   struct alpha_sigtramp_unwind_cache *info
     = alpha_sigtramp_frame_unwind_cache (this_frame, this_prologue_cache);
   CORE_ADDR stack_addr, code_addr;
@@ -961,7 +935,7 @@ alpha_sigtramp_frame_this_id (struct fra
 /* Retrieve the value of REGNUM in FRAME.  Don't give up!  */
 
 static struct value *
-alpha_sigtramp_frame_prev_register (struct frame_info *this_frame,
+alpha_sigtramp_frame_prev_register (const frame_info_ptr &this_frame,
 				    void **this_prologue_cache, int regnum)
 {
   struct alpha_sigtramp_unwind_cache *info
@@ -974,7 +948,7 @@ alpha_sigtramp_frame_prev_register (stru
       addr = alpha_sigtramp_register_address (get_frame_arch (this_frame),
 					      info->sigcontext_addr, regnum);
       if (addr != 0)
-        return frame_unwind_got_memory (this_frame, regnum, addr);
+	return frame_unwind_got_memory (this_frame, regnum, addr);
     }
 
   /* This extra register may actually be in the sigcontext, but our
@@ -986,8 +960,8 @@ alpha_sigtramp_frame_prev_register (stru
 
 static int
 alpha_sigtramp_frame_sniffer (const struct frame_unwind *self,
-                              struct frame_info *this_frame,
-                              void **this_prologue_cache)
+			      const frame_info_ptr &this_frame,
+			      void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR pc = get_frame_pc (this_frame);
@@ -999,27 +973,31 @@ alpha_sigtramp_frame_sniffer (const stru
 
   /* We shouldn't even bother to try if the OSABI didn't register a
      sigcontext_addr handler or pc_in_sigtramp handler.  */
-  if (gdbarch_tdep (gdbarch)->sigcontext_addr == NULL)
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
+  if (tdep->sigcontext_addr == NULL)
     return 0;
-  if (gdbarch_tdep (gdbarch)->pc_in_sigtramp == NULL)
+
+  if (tdep->pc_in_sigtramp == NULL)
     return 0;
 
   /* Otherwise we should be in a signal frame.  */
   find_pc_partial_function (pc, &name, NULL, NULL);
-  if (gdbarch_tdep (gdbarch)->pc_in_sigtramp (gdbarch, pc, name))
+  if (tdep->pc_in_sigtramp (gdbarch, pc, name))
     return 1;
 
   return 0;
 }
 
-static const struct frame_unwind alpha_sigtramp_frame_unwind = {
+static const struct frame_unwind_legacy alpha_sigtramp_frame_unwind (
+  "alpha sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   alpha_sigtramp_frame_this_id,
   alpha_sigtramp_frame_prev_register,
   NULL,
   alpha_sigtramp_frame_sniffer
-};
+);
 
 
 
@@ -1036,7 +1014,7 @@ static int heuristic_fence_post = 0;
 static CORE_ADDR
 alpha_heuristic_proc_start (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
   CORE_ADDR last_non_nop = pc;
   CORE_ADDR fence = pc - heuristic_fence_post;
   CORE_ADDR orig_pc = pc;
@@ -1097,7 +1075,7 @@ enclosing function for address %s"), pad
 
       if (!blurb_printed)
 	{
-	  printf_filtered (_("\
+	  gdb_printf (_("\
 This warning occurs if you are debugging a function without any symbols\n\
 (for example, in a stripped executable).  In that case, you may wish to\n\
 increase the size of the search with the `set heuristic-fence-post' command.\n\
@@ -1118,7 +1096,7 @@ struct alpha_heuristic_unwind_cache
 { 
   CORE_ADDR vfp;
   CORE_ADDR start_pc;
-  struct trad_frame_saved_reg *saved_regs;
+  trad_frame_saved_reg *saved_regs;
   int return_reg;
 };
 
@@ -1137,16 +1115,16 @@ alpha_heuristic_analyze_probing_loop (st
 
   /* The following pattern is recognized as a probing loop:
 
-        lda     REG_INDEX,NB_OF_ITERATIONS
-        lda     REG_PROBE,<immediate>(sp)
+	lda     REG_INDEX,NB_OF_ITERATIONS
+	lda     REG_PROBE,<immediate>(sp)
 
      LOOP_START:
-        stq     zero,<immediate>(REG_PROBE)
-        subq    REG_INDEX,0x1,REG_INDEX
-        lda     REG_PROBE,<immediate>(REG_PROBE)
-        bne     REG_INDEX, LOOP_START
+	stq     zero,<immediate>(REG_PROBE)
+	subq    REG_INDEX,0x1,REG_INDEX
+	lda     REG_PROBE,<immediate>(REG_PROBE)
+	bne     REG_INDEX, LOOP_START
  
-        lda     sp,<immediate>(REG_PROBE)
+	lda     sp,<immediate>(REG_PROBE)
 
      If anything different is found, the function returns without
      changing PC and FRAME_SIZE.  Otherwise, PC will point immediately
@@ -1224,7 +1202,7 @@ alpha_heuristic_analyze_probing_loop (st
 }
 
 static struct alpha_heuristic_unwind_cache *
-alpha_heuristic_frame_unwind_cache (struct frame_info *this_frame,
+alpha_heuristic_frame_unwind_cache (const frame_info_ptr &this_frame,
 				    void **this_prologue_cache,
 				    CORE_ADDR start_pc)
 {
@@ -1282,15 +1260,15 @@ alpha_heuristic_frame_unwind_cache (stru
 	    {
 	      reg = (word & 0x03e00000) >> 21;
 
-              /* Ignore this instruction if we have already encountered
-                 an instruction saving the same register earlier in the
-                 function code.  The current instruction does not tell
-                 us where the original value upon function entry is saved.
-                 All it says is that the function we are scanning reused
-                 that register for some computation of its own, and is now
-                 saving its result.  */
-              if (trad_frame_addr_p(info->saved_regs, reg))
-                continue;
+	      /* Ignore this instruction if we have already encountered
+		 an instruction saving the same register earlier in the
+		 function code.  The current instruction does not tell
+		 us where the original value upon function entry is saved.
+		 All it says is that the function we are scanning reused
+		 that register for some computation of its own, and is now
+		 saving its result.  */
+	      if (info->saved_regs[reg].is_addr ())
+		continue;
 
 	      if (reg == 31)
 		continue;
@@ -1305,7 +1283,7 @@ alpha_heuristic_frame_unwind_cache (stru
 		 pointer or not.  */
 	      /* Hack: temporarily add one, so that the offset is non-zero
 		 and we can tell which registers have save offsets below.  */
-	      info->saved_regs[reg].addr = (word & 0xffff) + 1;
+	      info->saved_regs[reg].set_addr ((word & 0xffff) + 1);
 
 	      /* Starting with OSF/1-3.2C, the system libraries are shipped
 		 without local symbols, but they still contain procedure
@@ -1385,13 +1363,14 @@ alpha_heuristic_frame_unwind_cache (stru
   /* Convert offsets to absolute addresses.  See above about adding
      one to the offsets to make all detected offsets non-zero.  */
   for (reg = 0; reg < ALPHA_NUM_REGS; ++reg)
-    if (trad_frame_addr_p(info->saved_regs, reg))
-      info->saved_regs[reg].addr += val - 1;
+    if (info->saved_regs[reg].is_addr ())
+      info->saved_regs[reg].set_addr (info->saved_regs[reg].addr ()
+				      + val - 1);
 
   /* The stack pointer of the previous frame is computed by popping
      the current stack frame.  */
-  if (!trad_frame_addr_p (info->saved_regs, ALPHA_SP_REGNUM))
-   trad_frame_set_value (info->saved_regs, ALPHA_SP_REGNUM, info->vfp);
+  if (!info->saved_regs[ALPHA_SP_REGNUM].is_addr ())
+   info->saved_regs[ALPHA_SP_REGNUM].set_value (info->vfp);
 
   return info;
 }
@@ -1400,7 +1379,7 @@ alpha_heuristic_frame_unwind_cache (stru
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-alpha_heuristic_frame_this_id (struct frame_info *this_frame,
+alpha_heuristic_frame_this_id (const frame_info_ptr &this_frame,
 			       void **this_prologue_cache,
 			       struct frame_id *this_id)
 {
@@ -1413,7 +1392,7 @@ alpha_heuristic_frame_this_id (struct fr
 /* Retrieve the value of REGNUM in FRAME.  Don't give up!  */
 
 static struct value *
-alpha_heuristic_frame_prev_register (struct frame_info *this_frame,
+alpha_heuristic_frame_prev_register (const frame_info_ptr &this_frame,
 				     void **this_prologue_cache, int regnum)
 {
   struct alpha_heuristic_unwind_cache *info
@@ -1428,17 +1407,19 @@ alpha_heuristic_frame_prev_register (str
   return trad_frame_get_prev_register (this_frame, info->saved_regs, regnum);
 }
 
-static const struct frame_unwind alpha_heuristic_frame_unwind = {
+static const struct frame_unwind_legacy alpha_heuristic_frame_unwind (
+  "alpha prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   alpha_heuristic_frame_this_id,
   alpha_heuristic_frame_prev_register,
   NULL,
   default_frame_sniffer
-};
+);
 
 static CORE_ADDR
-alpha_heuristic_frame_base_address (struct frame_info *this_frame,
+alpha_heuristic_frame_base_address (const frame_info_ptr &this_frame,
 				    void **this_prologue_cache)
 {
   struct alpha_heuristic_unwind_cache *info
@@ -1480,11 +1461,7 @@ alpha_supply_int_regs (struct regcache *
       regcache->raw_supply (i, regs + i * 8);
 
   if (regno == ALPHA_ZERO_REGNUM || regno == -1)
-    {
-      const gdb_byte zero[8] = { 0 };
-
-      regcache->raw_supply (ALPHA_ZERO_REGNUM, zero);
-    }
+    regcache->raw_supply_zeroed (ALPHA_ZERO_REGNUM);
 
   if (regno == ALPHA_PC_REGNUM || regno == -1)
     regcache->raw_supply (ALPHA_PC_REGNUM, pc);
@@ -1601,7 +1578,7 @@ alpha_next_pc (struct regcache *regcache
 	  || op == 0x34)	/* BSR */
 	{
  branch_taken:
-          offset = (insn & 0x001fffff);
+	  offset = (insn & 0x001fffff);
 	  if (offset & 0x00100000)
 	    offset  |= 0xffe00000;
 	  offset *= ALPHA_INSN_SIZE;
@@ -1611,14 +1588,14 @@ alpha_next_pc (struct regcache *regcache
       /* Need to determine if branch is taken; read RA.  */
       regno = (insn >> 21) & 0x1f;
       switch (op)
-        {
-          case 0x31:              /* FBEQ */
-          case 0x36:              /* FBGE */
-          case 0x37:              /* FBGT */
-          case 0x33:              /* FBLE */
-          case 0x32:              /* FBLT */
-          case 0x35:              /* FBNE */
-            regno += gdbarch_fp0_regnum (gdbarch);
+	{
+	  case 0x31:              /* FBEQ */
+	  case 0x36:              /* FBGE */
+	  case 0x37:              /* FBGT */
+	  case 0x33:              /* FBLE */
+	  case 0x32:              /* FBLT */
+	  case 0x35:              /* FBNE */
+	    regno += gdbarch_fp0_regnum (gdbarch);
 	}
       
       rav = regcache_raw_get_signed (regcache, regno);
@@ -1658,32 +1635,32 @@ alpha_next_pc (struct regcache *regcache
 	    goto branch_taken;
 	  break;
 
-        /* Floating point branches.  */
-        
-        case 0x31:              /* FBEQ */
-          if (fp_register_zero_p (rav))
-            goto branch_taken;
-          break;
-        case 0x36:              /* FBGE */
-          if (fp_register_sign_bit (rav) == 0 || fp_register_zero_p (rav))
-            goto branch_taken;
-          break;
-        case 0x37:              /* FBGT */
-          if (fp_register_sign_bit (rav) == 0 && ! fp_register_zero_p (rav))
-            goto branch_taken;
-          break;
-        case 0x33:              /* FBLE */
-          if (fp_register_sign_bit (rav) == 1 || fp_register_zero_p (rav))
-            goto branch_taken;
-          break;
-        case 0x32:              /* FBLT */
-          if (fp_register_sign_bit (rav) == 1 && ! fp_register_zero_p (rav))
-            goto branch_taken;
-          break;
-        case 0x35:              /* FBNE */
-          if (! fp_register_zero_p (rav))
-            goto branch_taken;
-          break;
+	/* Floating point branches.  */
+	
+	case 0x31:              /* FBEQ */
+	  if (fp_register_zero_p (rav))
+	    goto branch_taken;
+	  break;
+	case 0x36:              /* FBGE */
+	  if (fp_register_sign_bit (rav) == 0 || fp_register_zero_p (rav))
+	    goto branch_taken;
+	  break;
+	case 0x37:              /* FBGT */
+	  if (fp_register_sign_bit (rav) == 0 && ! fp_register_zero_p (rav))
+	    goto branch_taken;
+	  break;
+	case 0x33:              /* FBLE */
+	  if (fp_register_sign_bit (rav) == 1 || fp_register_zero_p (rav))
+	    goto branch_taken;
+	  break;
+	case 0x32:              /* FBLT */
+	  if (fp_register_sign_bit (rav) == 1 && ! fp_register_zero_p (rav))
+	    goto branch_taken;
+	  break;
+	case 0x35:              /* FBNE */
+	  if (! fp_register_zero_p (rav))
+	    goto branch_taken;
+	  break;
 	}
     }
 
@@ -1709,7 +1686,7 @@ alpha_software_single_step (struct regca
 }
 
 
-/* Initialize the current architecture based on INFO.  If possible, re-use an
+/* Initialize the current architecture based on INFO.  If possible, reuse an
    architecture from ARCHES, which is a list of architectures already created
    during this debugging session.
 
@@ -1719,16 +1696,42 @@ alpha_software_single_step (struct regca
 static struct gdbarch *
 alpha_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
-  struct gdbarch_tdep *tdep;
-  struct gdbarch *gdbarch;
+  tdesc_arch_data_up tdesc_data;
+  const struct target_desc *tdesc = info.target_desc;
 
   /* Find a candidate among extant architectures.  */
   arches = gdbarch_list_lookup_by_info (arches, &info);
   if (arches != NULL)
     return arches->gdbarch;
 
-  tdep = XCNEW (struct gdbarch_tdep);
-  gdbarch = gdbarch_alloc (&info, tdep);
+  if (tdesc == nullptr)
+    tdesc = tdesc_alpha;
+
+  /* Validate target description.  */
+  if (tdesc_has_registers (tdesc))
+    {
+      const struct tdesc_feature *feature;
+      bool valid_p;
+
+      feature = tdesc_find_feature (tdesc, "org.gnu.gdb.alpha.core");
+      if (feature == nullptr)
+	return nullptr;
+
+      tdesc_data = tdesc_data_alloc ();
+      valid_p = true;
+      for (int i = 0; i < ALPHA_NUM_REGS; ++i)
+	valid_p &= tdesc_numbered_register (feature, tdesc_data.get (), i,
+					    alpha_register_names[i]);
+
+      if (!valid_p)
+	return nullptr;
+    }
+
+  gdb_assert (tdesc_data != nullptr);
+
+  gdbarch *gdbarch
+    = gdbarch_alloc (&info, gdbarch_tdep_up (new alpha_gdbarch_tdep));
+  alpha_gdbarch_tdep *tdep = gdbarch_tdep<alpha_gdbarch_tdep> (gdbarch);
 
   /* Lowest text address.  This is used by heuristic_proc_start()
      to decide when to stop looking.  */
@@ -1762,8 +1765,7 @@ alpha_gdbarch_init (struct gdbarch_info
   set_gdbarch_pc_regnum (gdbarch, ALPHA_PC_REGNUM);
   set_gdbarch_fp0_regnum (gdbarch, ALPHA_FP0_REGNUM);
 
-  set_gdbarch_register_name (gdbarch, alpha_register_name);
-  set_gdbarch_register_type (gdbarch, alpha_register_type);
+  tdesc_use_registers (gdbarch, tdesc, std::move (tdesc_data));
 
   set_gdbarch_cannot_fetch_register (gdbarch, alpha_cannot_fetch_register);
   set_gdbarch_cannot_store_register (gdbarch, alpha_cannot_store_register);
@@ -1795,7 +1797,7 @@ alpha_gdbarch_init (struct gdbarch_info
   set_gdbarch_cannot_step_breakpoint (gdbarch, 1);
 
   /* Handles single stepping of atomic sequences.  */
-  set_gdbarch_software_single_step (gdbarch, alpha_software_single_step);
+  set_gdbarch_get_next_pcs (gdbarch, alpha_software_single_step);
 
   /* Hook in ABI-specific overrides, if they have been registered.  */
   gdbarch_init_osabi (info, gdbarch);
@@ -1821,12 +1823,13 @@ alpha_dwarf2_init_abi (struct gdbarch_in
   frame_base_append_sniffer (gdbarch, dwarf2_frame_base_sniffer);
 }
 
-void
-_initialize_alpha_tdep (void)
+INIT_GDB_FILE (alpha_tdep)
 {
 
   gdbarch_register (bfd_arch_alpha, alpha_gdbarch_init, NULL);
 
+  initialize_tdesc_alpha ();
+
   /* Let the user set the fence post for heuristic_proc_start.  */
 
   /* We really would like to have both "0" and "unlimited" work, 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.20200303/gdb/alpha-tdep.h ./gdb/alpha-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/alpha-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/alpha-tdep.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,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/>.  */
 
-#ifndef ALPHA_TDEP_H
-#define ALPHA_TDEP_H
+#ifndef GDB_ALPHA_TDEP_H
+#define GDB_ALPHA_TDEP_H
+
+#include "gdbarch.h"
 
 struct regcache;
 
@@ -68,38 +70,38 @@ struct regcache;
 #define ALPHA_NUM_ARG_REGS   6
 
 /* Target-dependent structure in gdbarch.  */
-struct gdbarch_tdep
+struct alpha_gdbarch_tdep : gdbarch_tdep_base
 {
-  CORE_ADDR vm_min_address;	/* Used by alpha_heuristic_proc_start.  */
+  CORE_ADDR vm_min_address = 0;	/* Used by alpha_heuristic_proc_start.  */
 
   /* If PC is inside a dynamically-generated signal trampoline function
      (i.e. one copied onto the user stack at run-time), return how many
      bytes PC is beyond the start of that function.  Otherwise, return -1.  */
-  LONGEST (*dynamic_sigtramp_offset) (struct gdbarch *, CORE_ADDR);
+  LONGEST (*dynamic_sigtramp_offset) (struct gdbarch *, CORE_ADDR) = nullptr;
 
   /* Translate a signal handler stack base address into the address of
      the sigcontext structure for that signal handler.  */
-  CORE_ADDR (*sigcontext_addr) (struct frame_info *);
+  CORE_ADDR (*sigcontext_addr) (const frame_info_ptr &) = nullptr;
 
   /* Does the PC fall in a signal trampoline.  */
   /* NOTE: cagney/2004-04-30: Do not copy/clone this code.  Instead
      look at tramp-frame.h and other simpler per-architecture
      sigtramp unwinders.  */
   int (*pc_in_sigtramp) (struct gdbarch *gdbarch, CORE_ADDR pc,
-			 const char *name);
+			 const char *name) = nullptr;
 
   /* If TYPE will be returned in memory, return true.  */
-  int (*return_in_memory) (struct type *type);
+  int (*return_in_memory) (struct type *type) = nullptr;
 
   /* Offset of registers in `struct sigcontext'.  */
-  int sc_pc_offset;
-  int sc_regs_offset;
-  int sc_fpregs_offset;
+  int sc_pc_offset = 0;
+  int sc_regs_offset = 0;
+  int sc_fpregs_offset = 0;
 
-  int jb_pc;			/* Offset to PC value in jump buffer.
-				   If htis is negative, longjmp support
+  int jb_pc = 0;			/* Offset to PC value in jump buffer.
+				   If this is negative, longjmp support
 				   will be disabled.  */
-  size_t jb_elt_size;		/* And the size of each entry in the buf.  */
+  size_t jb_elt_size = 0;		/* And the size of each entry in the buf.  */
 };
 
 extern unsigned int alpha_read_insn (struct gdbarch *gdbarch, CORE_ADDR pc);
@@ -119,4 +121,4 @@ extern void alpha_supply_fp_regs (struct
 extern void alpha_fill_fp_regs (const struct regcache *,
 				int, void *, void *);
 
-#endif /* ALPHA_TDEP_H */
+#endif /* GDB_ALPHA_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.20200303/gdb/amd64-bsd-nat.c ./gdb/amd64-bsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-bsd-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-bsd-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for AMD64 BSD's.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "inferior.h"
 #include "regcache.h"
 #include "target.h"
@@ -33,8 +32,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,16 +57,13 @@ void
 amd64bsd_fetch_inferior_registers (struct regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
-#if defined(PT_GETFSBASE) || defined(PT_GETGSBASE)
-  const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-#endif
+  ptid_t ptid = regcache->ptid ();
 
   if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, 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"));
 
       amd64_supply_native_gregset (regcache, &regs, -1);
@@ -59,52 +71,11 @@ amd64bsd_fetch_inferior_registers (struc
 	return;
     }
 
-#ifdef PT_GETFSBASE
-  if (regnum == -1 || regnum == tdep->fsbase_regnum)
-    {
-      register_t base;
-
-      if (ptrace (PT_GETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
-	perror_with_name (_("Couldn't get segment register fs_base"));
-
-      regcache->raw_supply (tdep->fsbase_regnum, &base);
-      if (regnum != -1)
-	return;
-    }
-#endif
-#ifdef PT_GETGSBASE
-  if (regnum == -1 || regnum == tdep->fsbase_regnum + 1)
-    {
-      register_t base;
-
-      if (ptrace (PT_GETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
-	perror_with_name (_("Couldn't get segment register gs_base"));
-
-      regcache->raw_supply (tdep->fsbase_regnum + 1, &base);
-      if (regnum != -1)
-	return;
-    }
-#endif
-
   if (regnum == -1 || !amd64_native_gregset_supplies_p (gdbarch, regnum))
     {
       struct fpreg fpregs;
-#ifdef PT_GETXSTATE_INFO
-      void *xstateregs;
 
-      if (x86bsd_xsave_len != 0)
-	{
-	  xstateregs = alloca (x86bsd_xsave_len);
-	  if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0)
-	      == -1)
-	    perror_with_name (_("Couldn't get extended state status"));
-
-	  amd64_supply_xsave (regcache, -1, xstateregs);
-	  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_supply_fxsave (regcache, -1, &fpregs);
@@ -118,86 +89,34 @@ void
 amd64bsd_store_inferior_registers (struct regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
-#if defined(PT_SETFSBASE) || defined(PT_SETGSBASE)
-  const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-#endif
+  ptid_t ptid = regcache->ptid ();
 
   if (regnum == -1 || amd64_native_gregset_supplies_p (gdbarch, regnum))
     {
       struct reg regs;
 
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
-        perror_with_name (_("Couldn't get registers"));
+      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)
-        perror_with_name (_("Couldn't write registers"));
-
-      if (regnum != -1)
-	return;
-    }
-
-#ifdef PT_SETFSBASE
-  if (regnum == -1 || regnum == tdep->fsbase_regnum)
-    {
-      register_t base;
-
-      /* Clear the full base value to support 32-bit targets.  */
-      base = 0;
-      regcache->raw_collect (tdep->fsbase_regnum, &base);
+      if (gdb_ptrace (PT_SETREGS, ptid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
+	perror_with_name (_("Couldn't write registers"));
 
-      if (ptrace (PT_SETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
-	perror_with_name (_("Couldn't write segment register fs_base"));
       if (regnum != -1)
 	return;
     }
-#endif
-#ifdef PT_SETGSBASE
-  if (regnum == -1 || regnum == tdep->fsbase_regnum + 1)
-    {
-      register_t base;
-
-      /* Clear the full base value to support 32-bit targets.  */
-      base = 0;
-      regcache->raw_collect (tdep->fsbase_regnum + 1, &base);
-
-      if (ptrace (PT_SETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
-	perror_with_name (_("Couldn't write segment register gs_base"));
-      if (regnum != -1)
-	return;
-    }
-#endif
 
   if (regnum == -1 || !amd64_native_gregset_supplies_p (gdbarch, regnum))
     {
       struct fpreg fpregs;
-#ifdef PT_GETXSTATE_INFO
-      void *xstateregs;
-
-      if (x86bsd_xsave_len != 0)
-	{
-	  xstateregs = alloca (x86bsd_xsave_len);
-	  if (ptrace (PT_GETXSTATE, pid, (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)
-	    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.20200303/gdb/amd64-bsd-nat.h ./gdb/amd64-bsd-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-bsd-nat.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-bsd-nat.h	2026-03-05 02:07:22.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-2025 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/>.  */
 
-#ifndef AMD64_BSD_NAT_H
-#define AMD64_BSD_NAT_H
+#ifndef GDB_AMD64_BSD_NAT_H
+#define GDB_AMD64_BSD_NAT_H
 
 #include "x86-bsd-nat.h"
 
@@ -41,4 +41,4 @@ public:
   { amd64bsd_store_inferior_registers (regcache, regnum); }
 };
 
-#endif /* i386-bsd-nat.h */
+#endif /* GDB_AMD64_BSD_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.20200303/gdb/amd64-darwin-tdep.c ./gdb/amd64-darwin-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-darwin-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-darwin-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* Darwin support for GDB, the GNU debugger.
-   Copyright (C) 1997-2020 Free Software Foundation, Inc.
+   Copyright (C) 1997-2025 Free Software Foundation, Inc.
 
    Contributed by Apple Computer, Inc.
 
@@ -18,7 +18,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/>.  */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "frame.h"
 #include "inferior.h"
 #include "gdbcore.h"
@@ -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.  */
@@ -75,7 +75,7 @@ const int amd64_darwin_thread_state_num_
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-amd64_darwin_sigcontext_addr (struct frame_info *this_frame)
+amd64_darwin_sigcontext_addr (const frame_info_ptr &this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -97,7 +97,7 @@ amd64_darwin_sigcontext_addr (struct fra
 static void
 x86_darwin_init_abi_64 (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   amd64_init_abi (info, gdbarch,
 		  amd64_target_description (X86_XSTATE_SSE_MASK, true));
@@ -113,12 +113,11 @@ x86_darwin_init_abi_64 (struct gdbarch_i
 
   tdep->jb_pc_offset = 56;
 
-  set_solib_ops (gdbarch, &darwin_so_ops);
+  set_gdbarch_make_solib_ops (gdbarch, make_darwin_solib_ops);
 }
 
-void
-_initialize_amd64_darwin_tdep (void)
+INIT_GDB_FILE (amd64_darwin_tdep)
 {
   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
-                          GDB_OSABI_DARWIN, x86_darwin_init_abi_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.20200303/gdb/amd64-darwin-tdep.h ./gdb/amd64-darwin-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-darwin-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-darwin-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Darwin x86-64.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 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/>.  */
 
-#ifndef AMD64_DARWIN_TDEP_H
-#define AMD64_DARWIN_TDEP_H
+#ifndef GDB_AMD64_DARWIN_TDEP_H
+#define GDB_AMD64_DARWIN_TDEP_H
 
 /* Mapping between the general-purpose registers in Darwin x86-64 thread
    state and GDB's register cache layout.
@@ -26,4 +26,4 @@
 extern int amd64_darwin_thread_state_reg_offset[];
 extern const int amd64_darwin_thread_state_num_regs;
 
-#endif /* AMD64_DARWIN_TDEP_H */
+#endif /* GDB_AMD64_DARWIN_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.20200303/gdb/amd64-dicos-tdep.c ./gdb/amd64-dicos-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-dicos-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-dicos-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "osabi.h"
 #include "amd64-tdep.h"
 #include "gdbsupport/x86-xstate.h"
@@ -46,8 +45,7 @@ amd64_dicos_osabi_sniffer (bfd *abfd)
   return GDB_OSABI_UNKNOWN;
 }
 
-void
-_initialize_amd64_dicos_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/amd64-fbsd-nat.c ./gdb/amd64-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-fbsd-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-fbsd-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "inferior.h"
 #include "regcache.h"
 #include "target.h"
@@ -29,83 +28,222 @@
 #include <sys/user.h>
 #include <machine/reg.h>
 
-#include "fbsd-nat.h"
 #include "amd64-tdep.h"
+#include "amd64-fbsd-tdep.h"
+#include "i387-tdep.h"
 #include "amd64-nat.h"
-#include "amd64-bsd-nat.h"
 #include "x86-nat.h"
-#include "gdbsupport/x86-xstate.h"
-
+#include "x86-fbsd-nat.h"
 
-class amd64_fbsd_nat_target final
-  : public amd64_bsd_nat_target<fbsd_nat_target>
+class amd64_fbsd_nat_target final : public x86_fbsd_nat_target
 {
 public:
-  /* Add some extra features to the common *BSD/amd64 target.  */
-  const struct target_desc *read_description () override;
+  void fetch_registers (struct regcache *, int) override;
+  void store_registers (struct regcache *, int) override;
 
-#if defined(HAVE_PT_GETDBREGS) && defined(USE_SIGTRAP_SIGINFO)
-  bool supports_stopped_by_hw_breakpoint () override;
-#endif
+  const struct target_desc *read_description () override;
 };
 
 static amd64_fbsd_nat_target the_amd64_fbsd_nat_target;
 
-/* Offset in `struct reg' where MEMBER is stored.  */
-#define REG_OFFSET(member) offsetof (struct reg, member)
+/* This is a layout of the amd64 'struct reg' but with i386
+   registers.  */
 
-/* At amd64fbsd64_r_reg_offset[REGNUM] you'll find the offset in
-   `struct reg' location where the GDB register REGNUM is stored.
-   Unsupported registers are marked with `-1'.  */
-static int amd64fbsd64_r_reg_offset[] =
+static const struct regcache_map_entry amd64_fbsd32_gregmap[] =
 {
-  REG_OFFSET (r_rax),
-  REG_OFFSET (r_rbx),
-  REG_OFFSET (r_rcx),
-  REG_OFFSET (r_rdx),
-  REG_OFFSET (r_rsi),
-  REG_OFFSET (r_rdi),
-  REG_OFFSET (r_rbp),
-  REG_OFFSET (r_rsp),
-  REG_OFFSET (r_r8),
-  REG_OFFSET (r_r9),
-  REG_OFFSET (r_r10),
-  REG_OFFSET (r_r11),
-  REG_OFFSET (r_r12),
-  REG_OFFSET (r_r13),
-  REG_OFFSET (r_r14),
-  REG_OFFSET (r_r15),
-  REG_OFFSET (r_rip),
-  REG_OFFSET (r_rflags),
-  REG_OFFSET (r_cs),
-  REG_OFFSET (r_ss),
-  -1,
-  -1,
-  -1,
-  -1
+  { 8, REGCACHE_MAP_SKIP, 8 },
+  { 1, I386_EDI_REGNUM, 8 },
+  { 1, I386_ESI_REGNUM, 8 },
+  { 1, I386_EBP_REGNUM, 8 },
+  { 1, I386_EBX_REGNUM, 8 },
+  { 1, I386_EDX_REGNUM, 8 },
+  { 1, I386_ECX_REGNUM, 8 },
+  { 1, I386_EAX_REGNUM, 8 },
+  { 1, REGCACHE_MAP_SKIP, 4 },	/* trapno */
+  { 1, I386_FS_REGNUM, 2 },
+  { 1, I386_GS_REGNUM, 2 },
+  { 1, REGCACHE_MAP_SKIP, 4 },	/* err */
+  { 1, I386_ES_REGNUM, 2 },
+  { 1, I386_DS_REGNUM, 2 },
+  { 1, I386_EIP_REGNUM, 8 },
+  { 1, I386_CS_REGNUM, 8 },
+  { 1, I386_EFLAGS_REGNUM, 8 },
+  { 1, I386_ESP_REGNUM, 0 },
+  { 1, I386_SS_REGNUM, 8 },
+  { 0 }
 };
-
-
-/* Mapping between the general-purpose registers in FreeBSD/amd64
-   `struct reg' format and GDB's register cache layout for
-   FreeBSD/i386.
-
-   Note that most FreeBSD/amd64 registers are 64-bit, while the
-   FreeBSD/i386 registers are all 32-bit, but since we're
-   little-endian we get away with that.  */
 
-/* From <machine/reg.h>.  */
-static int amd64fbsd32_r_reg_offset[I386_NUM_GREGS] =
+static const struct regset amd64_fbsd32_gregset =
 {
-  14 * 8, 13 * 8,		/* %eax, %ecx */
-  12 * 8, 11 * 8,		/* %edx, %ebx */
-  20 * 8, 10 * 8,		/* %esp, %ebp */
-  9 * 8, 8 * 8,			/* %esi, %edi */
-  17 * 8, 19 * 8,		/* %eip, %eflags */
-  18 * 8, 21 * 8,		/* %cs, %ss */
-  -1, -1, -1, -1		/* %ds, %es, %fs, %gs */
+  amd64_fbsd32_gregmap, regcache_supply_regset, regcache_collect_regset
 };
-
+
+/* Return the regset to use for 'struct reg' for the GDBARCH.  */
+
+static const struct regset *
+find_gregset (struct gdbarch *gdbarch)
+{
+  if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word == 32)
+    return &amd64_fbsd32_gregset;
+  else
+    return &amd64_fbsd_gregset;
+}
+
+/* Fetch register REGNUM from the inferior.  If REGNUM is -1, do this
+   for all registers.  */
+
+void
+amd64_fbsd_nat_target::fetch_registers (struct regcache *regcache, int regnum)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+#if defined(PT_GETFSBASE) || defined(PT_GETGSBASE)
+  const i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
+#endif
+  pid_t pid = get_ptrace_pid (regcache->ptid ());
+  const struct regset *gregset = find_gregset (gdbarch);
+
+  if (fetch_register_set<struct reg> (regcache, regnum, PT_GETREGS, gregset))
+    {
+      if (regnum != -1)
+	return;
+    }
+
+#ifdef PT_GETFSBASE
+  if (regnum == -1 || regnum == tdep->fsbase_regnum)
+    {
+      register_t base;
+
+      if (ptrace (PT_GETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+	perror_with_name (_("Couldn't get segment register fs_base"));
+
+      regcache->raw_supply (tdep->fsbase_regnum, &base);
+      if (regnum != -1)
+	return;
+    }
+#endif
+#ifdef PT_GETGSBASE
+  if (regnum == -1 || regnum == tdep->fsbase_regnum + 1)
+    {
+      register_t base;
+
+      if (ptrace (PT_GETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+	perror_with_name (_("Couldn't get segment register gs_base"));
+
+      regcache->raw_supply (tdep->fsbase_regnum + 1, &base);
+      if (regnum != -1)
+	return;
+    }
+#endif
+
+  /* There is no amd64_fxsave_supplies or amd64_xsave_supplies.
+     Instead, the earlier register sets return early if the request
+     was for a specific register that was already satisfied to avoid
+     fetching the FPU/XSAVE state unnecessarily.  */
+
+#ifdef PT_GETXSTATE_INFO
+  if (m_xsave_info.xsave_len != 0)
+    {
+      void *xstateregs = alloca (m_xsave_info.xsave_len);
+
+      if (ptrace (PT_GETXSTATE, pid, (PTRACE_TYPE_ARG3) xstateregs, 0) == -1)
+	perror_with_name (_("Couldn't get extended state status"));
+
+      amd64_supply_xsave (regcache, regnum, xstateregs);
+      return;
+    }
+#endif
+
+  struct fpreg fpregs;
+
+  if (ptrace (PT_GETFPREGS, pid, (PTRACE_TYPE_ARG3) &fpregs, 0) == -1)
+    perror_with_name (_("Couldn't get floating point status"));
+
+  amd64_supply_fxsave (regcache, regnum, &fpregs);
+}
+
+/* Store register REGNUM back into the inferior.  If REGNUM is -1, do
+   this for all registers.  */
+
+void
+amd64_fbsd_nat_target::store_registers (struct regcache *regcache, int regnum)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+#if defined(PT_GETFSBASE) || defined(PT_GETGSBASE)
+  const i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
+#endif
+  pid_t pid = get_ptrace_pid (regcache->ptid ());
+  const struct regset *gregset = find_gregset (gdbarch);
+
+  if (store_register_set<struct reg> (regcache, regnum, PT_GETREGS, PT_SETREGS,
+				      gregset))
+    {
+      if (regnum != -1)
+	return;
+    }
+
+#ifdef PT_SETFSBASE
+  if (regnum == -1 || regnum == tdep->fsbase_regnum)
+    {
+      register_t base;
+
+      /* Clear the full base value to support 32-bit targets.  */
+      base = 0;
+      regcache->raw_collect (tdep->fsbase_regnum, &base);
+
+      if (ptrace (PT_SETFSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+	perror_with_name (_("Couldn't write segment register fs_base"));
+      if (regnum != -1)
+	return;
+    }
+#endif
+#ifdef PT_SETGSBASE
+  if (regnum == -1 || regnum == tdep->fsbase_regnum + 1)
+    {
+      register_t base;
+
+      /* Clear the full base value to support 32-bit targets.  */
+      base = 0;
+      regcache->raw_collect (tdep->fsbase_regnum + 1, &base);
+
+      if (ptrace (PT_SETGSBASE, pid, (PTRACE_TYPE_ARG3) &base, 0) == -1)
+	perror_with_name (_("Couldn't write segment register gs_base"));
+      if (regnum != -1)
+	return;
+    }
+#endif
+
+  /* There is no amd64_fxsave_supplies or amd64_xsave_supplies.
+     Instead, the earlier register sets return early if the request
+     was for a specific register that was already satisfied to avoid
+     fetching the FPU/XSAVE state unnecessarily.  */
+
+#ifdef PT_GETXSTATE_INFO
+  if (m_xsave_info.xsave_len != 0)
+    {
+      void *xstateregs = alloca (m_xsave_info.xsave_len);
+
+      if (ptrace (PT_GETXSTATE, pid, (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,
+		  m_xsave_info.xsave_len) == -1)
+	perror_with_name (_("Couldn't write extended state status"));
+      return;
+    }
+#endif
+
+  struct fpreg fpregs;
+
+  if (ptrace (PT_GETFPREGS, pid, (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)
+    perror_with_name (_("Couldn't write floating point status"));
+}
 
 /* Support for debugging kernel virtual memory images.  */
 
@@ -160,37 +298,24 @@ amd64fbsd_supply_pcb (struct regcache *r
 const struct target_desc *
 amd64_fbsd_nat_target::read_description ()
 {
-#ifdef PT_GETXSTATE_INFO
-  static int xsave_probed;
-  static uint64_t xcr0;
-#endif
   struct reg regs;
   int is64;
 
+  if (inferior_ptid == null_ptid)
+    return this->beneath ()->read_description ();
+
   if (ptrace (PT_GETREGS, inferior_ptid.pid (),
 	      (PTRACE_TYPE_ARG3) &regs, 0) == -1)
     perror_with_name (_("Couldn't get registers"));
   is64 = (regs.r_cs == GSEL (GUCODE_SEL, SEL_UPL));
 #ifdef PT_GETXSTATE_INFO
-  if (!xsave_probed)
-    {
-      struct ptrace_xstate_info info;
-
-      if (ptrace (PT_GETXSTATE_INFO, inferior_ptid.pid (),
-		  (PTRACE_TYPE_ARG3) &info, sizeof (info)) == 0)
-	{
-	  x86bsd_xsave_len = info.xsave_len;
-	  xcr0 = info.xsave_mask;
-	}
-      xsave_probed = 1;
-    }
-
-  if (x86bsd_xsave_len != 0)
+  probe_xsave_layout (inferior_ptid.pid ());
+  if (m_xsave_info.xsave_len != 0)
     {
       if (is64)
-	return amd64_target_description (xcr0, true);
+	return amd64_target_description (m_xsave_info.xsave_mask, true);
       else
-	return i386_target_description (xcr0, true);
+	return i386_target_description (m_xsave_info.xsave_mask, true);
     }
 #endif
   if (is64)
@@ -199,110 +324,10 @@ amd64_fbsd_nat_target::read_description
     return i386_target_description (X86_XSTATE_SSE_MASK, true);
 }
 
-#if defined(HAVE_PT_GETDBREGS) && defined(USE_SIGTRAP_SIGINFO)
-/* Implement the supports_stopped_by_hw_breakpoints method.  */
-
-bool
-amd64_fbsd_nat_target::supports_stopped_by_hw_breakpoint ()
-{
-  return true;
-}
-#endif
-
-void
-_initialize_amd64fbsd_nat (void)
+INIT_GDB_FILE (amd64fbsd_nat)
 {
-  int offset;
-
-  amd64_native_gregset32_reg_offset = amd64fbsd32_r_reg_offset;
-  amd64_native_gregset64_reg_offset = amd64fbsd64_r_reg_offset;
-
   add_inf_child_target (&the_amd64_fbsd_nat_target);
 
   /* Support debugging kernel virtual memory images.  */
   bsd_kvm_add_target (amd64fbsd_supply_pcb);
-
-  /* To support the recognition of signal handlers, i386-bsd-tdep.c
-     hardcodes some constants.  Inclusion of this file means that we
-     are compiling a native debugger, which means that we can use the
-     system header files and sysctl(3) to get at the relevant
-     information.  */
-
-#define SC_REG_OFFSET amd64fbsd_sc_reg_offset
-
-  /* We only check the program counter, stack pointer and frame
-     pointer since these members of `struct sigcontext' are essential
-     for providing backtraces.  */
-
-#define SC_RIP_OFFSET SC_REG_OFFSET[AMD64_RIP_REGNUM]
-#define SC_RSP_OFFSET SC_REG_OFFSET[AMD64_RSP_REGNUM]
-#define SC_RBP_OFFSET SC_REG_OFFSET[AMD64_RBP_REGNUM]
-
-  /* Override the default value for the offset of the program counter
-     in the sigcontext structure.  */
-  offset = offsetof (struct sigcontext, sc_rip);
-
-  if (SC_RIP_OFFSET != offset)
-    {
-      warning (_("\
-offsetof (struct sigcontext, sc_rip) yields %d instead of %d.\n\
-Please report this to <bug-gdb@gnu.org>."),
-	       offset, SC_RIP_OFFSET);
-    }
-
-  SC_RIP_OFFSET = offset;
-
-  /* Likewise for the stack pointer.  */
-  offset = offsetof (struct sigcontext, sc_rsp);
-
-  if (SC_RSP_OFFSET != offset)
-    {
-      warning (_("\
-offsetof (struct sigcontext, sc_rsp) yields %d instead of %d.\n\
-Please report this to <bug-gdb@gnu.org>."),
-	       offset, SC_RSP_OFFSET);
-    }
-
-  SC_RSP_OFFSET = offset;
-
-  /* And the frame pointer.  */
-  offset = offsetof (struct sigcontext, sc_rbp);
-
-  if (SC_RBP_OFFSET != offset)
-    {
-      warning (_("\
-offsetof (struct sigcontext, sc_rbp) yields %d instead of %d.\n\
-Please report this to <bug-gdb@gnu.org>."),
-	       offset, SC_RBP_OFFSET);
-    }
-
-  SC_RBP_OFFSET = offset;
-
-#ifdef KERN_PROC_SIGTRAMP
-  /* Normally signal frames are detected via amd64fbsd_sigtramp_p.
-     However, FreeBSD 9.2 through 10.1 do not include the page holding
-     the signal code in core dumps.  These releases do provide a
-     kern.proc.sigtramp.<pid> sysctl that returns the location of the
-     signal trampoline for a running process.  We fetch the location
-     of the current (gdb) process and use this to identify signal
-     frames in core dumps from these releases.  Note that this only
-     works for core dumps of 64-bit (FreeBSD/amd64) processes and does
-     not handle core dumps of 32-bit (FreeBSD/i386) processes.  */
-  {
-    int mib[4];
-    struct kinfo_sigtramp kst;
-    size_t len;
-
-    mib[0] = CTL_KERN;
-    mib[1] = KERN_PROC;
-    mib[2] = KERN_PROC_SIGTRAMP;
-    mib[3] = getpid ();
-    len = sizeof (kst);
-    if (sysctl (mib, 4, &kst, &len, NULL, 0) == 0)
-      {
-	amd64fbsd_sigtramp_start_addr = (uintptr_t) kst.ksigtramp_start;
-	amd64fbsd_sigtramp_end_addr = (uintptr_t) kst.ksigtramp_end;
-      }
-  }
-#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.20200303/gdb/amd64-fbsd-tdep.c ./gdb/amd64-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-fbsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-fbsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,136 +17,203 @@
    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 "frame.h"
-#include "gdbcore.h"
-#include "regcache.h"
 #include "osabi.h"
 #include "regset.h"
+#include "target.h"
+#include "trad-frame.h"
+#include "tramp-frame.h"
 #include "i386-fbsd-tdep.h"
 #include "gdbsupport/x86-xstate.h"
 
 #include "amd64-tdep.h"
+#include "amd64-fbsd-tdep.h"
 #include "fbsd-tdep.h"
 #include "solib-svr4.h"
+#include "inferior.h"
 
-/* Support for signal handlers.  */
+/* The general-purpose regset consists of 22 64-bit slots, most of
+   which contain individual registers, but a few contain multiple
+   16-bit segment registers.  */
+#define AMD64_FBSD_SIZEOF_GREGSET	(22 * 8)
+
+/* The segment base register set consists of 2 64-bit registers.  */
+#define AMD64_FBSD_SIZEOF_SEGBASES_REGSET	(2 * 8)
+
+/* Register maps.  */
+
+static const struct regcache_map_entry amd64_fbsd_gregmap[] =
+{
+  { 1, AMD64_R15_REGNUM, 0 },
+  { 1, AMD64_R14_REGNUM, 0 },
+  { 1, AMD64_R13_REGNUM, 0 },
+  { 1, AMD64_R12_REGNUM, 0 },
+  { 1, AMD64_R11_REGNUM, 0 },
+  { 1, AMD64_R10_REGNUM, 0 },
+  { 1, AMD64_R9_REGNUM, 0 },
+  { 1, AMD64_R8_REGNUM, 0 },
+  { 1, AMD64_RDI_REGNUM, 0 },
+  { 1, AMD64_RSI_REGNUM, 0 },
+  { 1, AMD64_RBP_REGNUM, 0 },
+  { 1, AMD64_RBX_REGNUM, 0 },
+  { 1, AMD64_RDX_REGNUM, 0 },
+  { 1, AMD64_RCX_REGNUM, 0 },
+  { 1, AMD64_RAX_REGNUM, 0 },
+  { 1, REGCACHE_MAP_SKIP, 4 },	/* trapno */
+  { 1, AMD64_FS_REGNUM, 2 },
+  { 1, AMD64_GS_REGNUM, 2 },
+  { 1, REGCACHE_MAP_SKIP, 4 },	/* err */
+  { 1, AMD64_ES_REGNUM, 2 },
+  { 1, AMD64_DS_REGNUM, 2 },
+  { 1, AMD64_RIP_REGNUM, 0 },
+  { 1, AMD64_CS_REGNUM, 8 },
+  { 1, AMD64_EFLAGS_REGNUM, 8 },
+  { 1, AMD64_RSP_REGNUM, 0 },
+  { 1, AMD64_SS_REGNUM, 8 },
+  { 0 }
+};
+
+static const struct regcache_map_entry amd64_fbsd_segbases_regmap[] =
+{
+  { 1, AMD64_FSBASE_REGNUM, 0 },
+  { 1, AMD64_GSBASE_REGNUM, 0 },
+  { 0 }
+};
 
-/* Return whether THIS_FRAME corresponds to a FreeBSD sigtramp
-   routine.  */
+/* This layout including fsbase and gsbase was adopted in FreeBSD
+   8.0.  */
 
-static const gdb_byte amd64fbsd_sigtramp_code[] =
+static const struct regcache_map_entry amd64_fbsd_mcregmap[] =
 {
-  0x48, 0x8d, 0x7c, 0x24, 0x10, /* lea     SIGF_UC(%rsp),%rdi */
-  0x6a, 0x00,			/* pushq   $0 */
-  0x48, 0xc7, 0xc0, 0xa1, 0x01, 0x00, 0x00,
-				/* movq    $SYS_sigreturn,%rax */
-  0x0f, 0x05                    /* syscall */
+  { 1, REGCACHE_MAP_SKIP, 8 },	/* mc_onstack */
+  { 1, AMD64_RDI_REGNUM, 0 },
+  { 1, AMD64_RSI_REGNUM, 0 },
+  { 1, AMD64_RDX_REGNUM, 0 },
+  { 1, AMD64_RCX_REGNUM, 0 },
+  { 1, AMD64_R8_REGNUM, 0 },
+  { 1, AMD64_R9_REGNUM, 0 },
+  { 1, AMD64_RAX_REGNUM, 0 },
+  { 1, AMD64_RBX_REGNUM, 0 },
+  { 1, AMD64_RBP_REGNUM, 0 },
+  { 1, AMD64_R10_REGNUM, 0 },
+  { 1, AMD64_R11_REGNUM, 0 },
+  { 1, AMD64_R12_REGNUM, 0 },
+  { 1, AMD64_R13_REGNUM, 0 },
+  { 1, AMD64_R14_REGNUM, 0 },
+  { 1, AMD64_R15_REGNUM, 0 },
+  { 1, REGCACHE_MAP_SKIP, 4 },	/* mc_trapno */
+  { 1, AMD64_FS_REGNUM, 2 },
+  { 1, AMD64_GS_REGNUM, 2 },
+  { 1, REGCACHE_MAP_SKIP, 8 },	/* mc_addr */
+  { 1, REGCACHE_MAP_SKIP, 4 },	/* mc_flags */
+  { 1, AMD64_ES_REGNUM, 2 },
+  { 1, AMD64_DS_REGNUM, 2 },
+  { 1, REGCACHE_MAP_SKIP, 8 },	/* mc_err */
+  { 1, AMD64_RIP_REGNUM, 0 },
+  { 1, AMD64_CS_REGNUM, 8 },
+  { 1, AMD64_EFLAGS_REGNUM, 8 },
+  { 1, AMD64_RSP_REGNUM, 0 },
+  { 1, AMD64_SS_REGNUM, 8 },
+  { 1, REGCACHE_MAP_SKIP, 8 },	/* mc_len */
+  { 1, REGCACHE_MAP_SKIP, 8 },	/* mc_fpformat */
+  { 1, REGCACHE_MAP_SKIP, 8 },	/* mc_ownedfp */
+  { 64, REGCACHE_MAP_SKIP, 8 },	/* mc_fpstate */
+  { 1, AMD64_FSBASE_REGNUM, 0 },
+  { 1, AMD64_GSBASE_REGNUM, 0 },
+  { 0 }
 };
 
-static int
-amd64fbsd_sigtramp_p (struct frame_info *this_frame)
+/* Register set definitions.  */
+
+const struct regset amd64_fbsd_gregset =
 {
-  CORE_ADDR pc = get_frame_pc (this_frame);
-  gdb_byte buf[sizeof amd64fbsd_sigtramp_code];
+  amd64_fbsd_gregmap, regcache_supply_regset, regcache_collect_regset
+};
 
-  if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
-    return 0;
-  if (memcmp (buf, amd64fbsd_sigtramp_code, sizeof amd64fbsd_sigtramp_code)
-      != 0)
-    return 0;
+const struct regset amd64_fbsd_segbases_regset =
+{
+  amd64_fbsd_segbases_regmap, regcache_supply_regset, regcache_collect_regset
+};
 
-  return 1;
-}
+/* Support for signal handlers.  */
 
-/* Assuming THIS_FRAME is for a BSD sigtramp routine, return the
-   address of the associated sigcontext structure.  */
+/* In a signal frame, rsp points to a 'struct sigframe' which is
+   defined as:
 
-static CORE_ADDR
-amd64fbsd_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 sp;
-  gdb_byte buf[8];
-
-  /* The `struct sigcontext' (which really is an `ucontext_t' on
-     FreeBSD/amd64) lives at a fixed offset in the signal frame.  See
-     <machine/sigframe.h>.  */
-  get_frame_register (this_frame, AMD64_RSP_REGNUM, buf);
-  sp = extract_unsigned_integer (buf, 8, byte_order);
-  return sp + 16;
-}
-
-/* FreeBSD 5.1-RELEASE or later.  */
+   struct sigframe {
+	union {
+		__siginfohandler_t	*sf_action;
+		__sighandler_t		*sf_handler;
+	} sf_ahu;
+	ucontext_t	sf_uc;
+	...
+   }
+
+   ucontext_t is defined as:
+
+   struct __ucontext {
+	   sigset_t	uc_sigmask;
+	   mcontext_t	uc_mcontext;
+	   ...
+   };
+
+   The mcontext_t contains the general purpose register set as well
+   as the floating point or XSAVE state.  */
+
+/* NB: There is an 8 byte padding hole between sf_ahu and sf_uc. */
+#define AMD64_SIGFRAME_UCONTEXT_OFFSET 		16
+#define AMD64_UCONTEXT_MCONTEXT_OFFSET		16
+#define AMD64_SIZEOF_MCONTEXT_T			800
 
-/* Mapping between the general-purpose registers in `struct reg'
-   format and GDB's register cache layout.
+/* Implement the "init" method of struct tramp_frame.  */
 
-   Note that some registers are 32-bit, but since we're little-endian
-   we get away with that.  */
+static void
+amd64_fbsd_sigframe_init (const struct tramp_frame *self,
+			  const frame_info_ptr &this_frame,
+			  struct trad_frame_cache *this_cache,
+			  CORE_ADDR func)
+{
+  CORE_ADDR sp = get_frame_register_unsigned (this_frame, AMD64_RSP_REGNUM);
+  CORE_ADDR mcontext_addr
+    = (sp
+       + AMD64_SIGFRAME_UCONTEXT_OFFSET
+       + AMD64_UCONTEXT_MCONTEXT_OFFSET);
+
+  trad_frame_set_reg_regmap (this_cache, amd64_fbsd_mcregmap, mcontext_addr,
+			     AMD64_SIZEOF_MCONTEXT_T);
+
+  /* Don't bother with floating point or XSAVE state for now.  The
+     current helper routines for parsing FXSAVE and XSAVE state only
+     work with regcaches.  This could perhaps create a temporary
+     regcache, collect the register values from mc_fpstate and
+     mc_xfpustate, and then set register values in the trad_frame.  */
 
-/* From <machine/reg.h>.  */
-static int amd64fbsd_r_reg_offset[] =
-{
-  14 * 8,			/* %rax */
-  11 * 8,			/* %rbx */
-  13 * 8,			/* %rcx */
-  12 * 8,			/* %rdx */
-  9 * 8,			/* %rsi */
-  8 * 8,			/* %rdi */
-  10 * 8,			/* %rbp */
-  20 * 8,			/* %rsp */
-  7 * 8,			/* %r8 ...  */
-  6 * 8,
-  5 * 8,
-  4 * 8,
-  3 * 8,
-  2 * 8,
-  1 * 8,
-  0 * 8,			/* ... %r15 */
-  17 * 8,			/* %rip */
-  19 * 8,			/* %eflags */
-  18 * 8,			/* %cs */
-  21 * 8,			/* %ss */
-  -1,				/* %ds */
-  -1,				/* %es */
-  -1,				/* %fs */
-  -1				/* %gs */
-};
+  trad_frame_set_id (this_cache, frame_id_build (sp, func));
+}
 
-/* Location of the signal trampoline.  */
-CORE_ADDR amd64fbsd_sigtramp_start_addr;
-CORE_ADDR amd64fbsd_sigtramp_end_addr;
-
-/* From <machine/signal.h>.  */
-int amd64fbsd_sc_reg_offset[] =
-{
-  24 + 6 * 8,			/* %rax */
-  24 + 7 * 8,			/* %rbx */
-  24 + 3 * 8,			/* %rcx */
-  24 + 2 * 8,			/* %rdx */
-  24 + 1 * 8,			/* %rsi */
-  24 + 0 * 8,			/* %rdi */
-  24 + 8 * 8,			/* %rbp */
-  24 + 22 * 8,			/* %rsp */
-  24 + 4 * 8,			/* %r8 ...  */
-  24 + 5 * 8,
-  24 + 9 * 8,
-  24 + 10 * 8,
-  24 + 11 * 8,
-  24 + 12 * 8,
-  24 + 13 * 8,
-  24 + 14 * 8,			/* ... %r15 */
-  24 + 19 * 8,			/* %rip */
-  24 + 21 * 8,			/* %eflags */
-  24 + 20 * 8,			/* %cs */
-  24 + 23 * 8,			/* %ss */
-  -1,				/* %ds */
-  -1,				/* %es */
-  -1,				/* %fs */
-  -1				/* %gs */
+static const struct tramp_frame amd64_fbsd_sigframe =
+{
+  SIGTRAMP_FRAME,
+  1,
+  {
+    {0x48, ULONGEST_MAX},		/* lea	   SIGF_UC(%rsp),%rdi */
+    {0x8d, ULONGEST_MAX},
+    {0x7c, ULONGEST_MAX},
+    {0x24, ULONGEST_MAX},
+    {0x10, ULONGEST_MAX},
+    {0x6a, ULONGEST_MAX},		/* pushq   $0 */
+    {0x00, ULONGEST_MAX},
+    {0x48, ULONGEST_MAX},		/* movq	   $SYS_sigreturn,%rax */
+    {0xc7, ULONGEST_MAX},
+    {0xc0, ULONGEST_MAX},
+    {0xa1, ULONGEST_MAX},
+    {0x01, ULONGEST_MAX},
+    {0x00, ULONGEST_MAX},
+    {0x00, ULONGEST_MAX},
+    {0x0f, ULONGEST_MAX},		/* syscall */
+    {0x05, ULONGEST_MAX},
+    {TRAMP_SENTINEL_INSN, ULONGEST_MAX}
+  },
+  amd64_fbsd_sigframe_init
 };
 
 /* Implement the core_read_description gdbarch method.  */
@@ -156,7 +223,12 @@ amd64fbsd_core_read_description (struct
 				 struct target_ops *target,
 				 bfd *abfd)
 {
-  return amd64_target_description (i386fbsd_core_read_xcr0 (abfd), true);
+  x86_xsave_layout layout;
+  uint64_t xcr0 = i386_fbsd_core_read_xsave_info (abfd, layout);
+  if (xcr0 == 0)
+    xcr0 = X86_XSTATE_SSE_MASK;
+
+  return amd64_target_description (xcr0, true);
 }
 
 /* Similar to amd64_supply_fpregset, but use XSAVE extended state.  */
@@ -194,14 +266,19 @@ amd64fbsd_iterate_over_regset_sections (
 					void *cb_data,
 					const struct regcache *regcache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
-  cb (".reg", tdep->sizeof_gregset, tdep->sizeof_gregset, &i386_gregset, NULL,
-      cb_data);
+  cb (".reg", AMD64_FBSD_SIZEOF_GREGSET, AMD64_FBSD_SIZEOF_GREGSET,
+      &amd64_fbsd_gregset, NULL, cb_data);
   cb (".reg2", tdep->sizeof_fpregset, tdep->sizeof_fpregset, &amd64_fpregset,
       NULL, cb_data);
-  cb (".reg-xstate", X86_XSTATE_SIZE (tdep->xcr0), X86_XSTATE_SIZE (tdep->xcr0),
-      &amd64fbsd_xstateregset, "XSAVE extended state", cb_data);
+  cb (".reg-x86-segbases", AMD64_FBSD_SIZEOF_SEGBASES_REGSET,
+      AMD64_FBSD_SIZEOF_SEGBASES_REGSET, &amd64_fbsd_segbases_regset,
+      "segment bases", cb_data);
+  if (tdep->xsave_layout.sizeof_xsave != 0)
+    cb (".reg-xstate", tdep->xsave_layout.sizeof_xsave,
+	tdep->xsave_layout.sizeof_xsave, &amd64fbsd_xstateregset,
+	"XSAVE extended state", cb_data);
 }
 
 /* Implement the get_thread_local_address gdbarch method.  */
@@ -210,9 +287,8 @@ static CORE_ADDR
 amd64fbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid,
 				    CORE_ADDR lm_addr, CORE_ADDR offset)
 {
-  struct regcache *regcache;
-
-  regcache = get_thread_arch_regcache (ptid, gdbarch);
+  regcache *regcache
+    = get_thread_arch_regcache (current_inferior (), ptid, gdbarch);
 
   target_fetch_registers (regcache, AMD64_FSBASE_REGNUM);
 
@@ -227,7 +303,7 @@ amd64fbsd_get_thread_local_address (stru
 static void
 amd64fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   /* Generic FreeBSD support. */
   fbsd_init_abi (info, gdbarch);
@@ -235,21 +311,14 @@ amd64fbsd_init_abi (struct gdbarch_info
   /* Obviously FreeBSD is BSD-based.  */
   i386bsd_init_abi (info, gdbarch);
 
-  tdep->gregset_reg_offset = amd64fbsd_r_reg_offset;
-  tdep->gregset_num_regs = ARRAY_SIZE (amd64fbsd_r_reg_offset);
-  tdep->sizeof_gregset = 22 * 8;
-
   amd64_init_abi (info, gdbarch,
 		  amd64_target_description (X86_XSTATE_SSE_MASK, true));
 
-  tdep->sigtramp_p = amd64fbsd_sigtramp_p;
-  tdep->sigtramp_start = amd64fbsd_sigtramp_start_addr;
-  tdep->sigtramp_end = amd64fbsd_sigtramp_end_addr;
-  tdep->sigcontext_addr = amd64fbsd_sigcontext_addr;
-  tdep->sc_reg_offset = amd64fbsd_sc_reg_offset;
-  tdep->sc_num_regs = ARRAY_SIZE (amd64fbsd_sc_reg_offset);
+  tramp_frame_prepend_unwinder (gdbarch, &amd64_fbsd_sigframe);
 
   tdep->xsave_xcr0_offset = I386_FBSD_XSAVE_XCR0_OFFSET;
+  set_gdbarch_core_read_x86_xsave_layout
+    (gdbarch, i386_fbsd_core_read_x86_xsave_layout);
 
   /* Iterate over core file register note sections.  */
   set_gdbarch_iterate_over_regset_sections
@@ -259,8 +328,7 @@ amd64fbsd_init_abi (struct gdbarch_info
 				     amd64fbsd_core_read_description);
 
   /* FreeBSD uses SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_lp64_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_svr4_lp64_solib_ops);
 
   set_gdbarch_fetch_tls_load_module_address (gdbarch,
 					     svr4_fetch_objfile_link_map);
@@ -268,8 +336,7 @@ amd64fbsd_init_abi (struct gdbarch_info
 					amd64fbsd_get_thread_local_address);
 }
 
-void
-_initialize_amd64fbsd_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/amd64-fbsd-tdep.h ./gdb/amd64-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-fbsd-tdep.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amd64-fbsd-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,27 @@
+/* FreeBSD/amd64 target support, prototypes.
+
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_AMD64_FBSD_TDEP_H
+#define GDB_AMD64_FBSD_TDEP_H
+
+#include "regset.h"
+
+extern const struct regset amd64_fbsd_gregset;
+
+#endif /* GDB_AMD64_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.20200303/gdb/amd64-gnu-tdep.c ./gdb/amd64-gnu-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-gnu-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amd64-gnu-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,228 @@
+/* Target-dependent code for the GNU Hurd.
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "extract-store-integer.h"
+#include "gdbcore.h"
+#include "osabi.h"
+#include "solib-svr4.h"
+
+#include "amd64-tdep.h"
+#include "glibc-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: */
+  0x48, 0xc7, 0xc0, 0xe7, 0xff, 0xff, 0xff,	/* mov    $-25,%rax */
+  0x0f, 0x05,					/* syscall */
+  0x49, 0x89, 0x04, 0x24,			/* mov    %rax,(%r12) */
+  0x48, 0x89, 0xdc,				/* mov    %rbx,%rsp */
+
+/* trampoline: */
+  0x5f,			                        /* pop    %rdi */
+  0x5e,						/* pop    %rsi */
+  0x5a,						/* pop    %rdx */
+  0x48, 0x83, 0xc4, 0x08,			/* add    $0x8,%rsp */
+  0x41, 0xff, 0xd5,				/* call   *%r13 */
+
+/* RA HERE */
+  0x48, 0x8b, 0x7c, 0x24, 0x10,			/* mov    0x10(%rsp),%rdi */
+  0xc3,						/* ret */
+
+/* firewall: */
+  0xf4,						/* hlt */
+};
+
+#define GNU_SIGTRAMP_LEN (sizeof gnu_sigtramp_code)
+#define GNU_SIGTRAMP_TAIL 7			/* 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
+amd64_gnu_sigtramp_start (frame_info_ptr 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))
+    return 0;
+
+  if (memcmp (buf, gnu_sigtramp_code, GNU_SIGTRAMP_LEN) != 0)
+    return 0;
+
+  return pc;
+}
+
+/* Return whether THIS_FRAME corresponds to a Hurd sigtramp routine.  */
+
+static int
+amd64_gnu_sigtramp_p (const frame_info_ptr &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 amd64_gnu_sigtramp_start (this_frame) != 0;
+}
+
+/* Offset to sc_i386_thread_state in sigcontext, from <bits/sigcontext.h>.  */
+#define AMD64_GNU_SIGCONTEXT_THREAD_STATE_OFFSET 32
+
+/* Assuming THIS_FRAME is a Hurd sigtramp routine, return the
+   address of the associated sigcontext structure.  */
+
+static CORE_ADDR
+amd64_gnu_sigcontext_addr (const frame_info_ptr &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[8];
+
+  get_frame_register (this_frame, AMD64_RSP_REGNUM, buf);
+  sp = extract_unsigned_integer (buf, 8, byte_order);
+
+  pc = amd64_gnu_sigtramp_start (this_frame);
+  if (pc)
+    {
+      CORE_ADDR sigcontext_addr;
+
+      /* The sigcontext structure address is passed as the third argument
+       * of the signal handler but %RDX is not saved across calls. Luckily,
+       * the structured is saved underneath the &__sigreturn and a dummy word
+       * to fill the slot for the address for __sigreturn to return to.
+       */
+      read_memory (sp + 16, buf, 8);
+      sigcontext_addr = extract_unsigned_integer (buf, 8, byte_order);
+      return sigcontext_addr + AMD64_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 amd64_gnu_sc_reg_offset[] =
+{
+  15 * 8,			/* %rax */
+  12 * 8,			/* %rbx */
+  14 * 8,			/* %rcx */
+  13 * 8,			/* %rdx */
+  10 * 8,			/* %rsi */
+  9 * 8,			/* %rdi */
+  10 * 8,			/* %rbp */
+  11 * 8,			/* %rsp */
+  0 * 8,			/* %r8 ...  */
+  8 * 8,
+  7 * 8,
+  6 * 8,
+  3 * 8,
+  2 * 8,
+  1 * 8,
+  0 * 8,			/* ... %r15 */
+  16 * 8,			/* %rip */
+  18 * 8,			/* %eflags */
+  17 * 8,			/* %cs */
+};
+
+/* From <sys/ucontext.h>.  */
+static int amd64_gnu_gregset_reg_offset[] =
+{
+  10 * 8,			/* %rax */
+  5 * 8,			/* %rbx */
+  11 * 8,			/* %rcx */
+  12 * 8,			/* %rdx */
+  13 * 8,			/* %rsi */
+  14 * 8,			/* %rdi */
+  4 * 8,			/* %rbp */
+  19 * 8,			/* %rsp */
+  9 * 8,			/* %r8 ...  */
+  8 * 8,
+  7 * 8,
+  6 * 8,
+  3 * 8,
+  2 * 8,
+  1 * 8,
+  0 * 8,			/* ... %r15 */
+  16 * 8,			/* %rip */
+  18 * 8,			/* %eflags */
+  17 * 8,			/* %cs */
+  -1,				  /* %ss */
+  -1,				  /* %ds */
+  -1,				  /* %es */
+  -1,				  /* %fs */
+  -1,				  /* %gs */
+};
+
+static void
+amd64_gnu_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
+
+  amd64_init_abi (info, gdbarch,
+      amd64_target_description (X86_XSTATE_SSE_MASK, true));
+
+  /* Enable TLS support.  */
+  set_gdbarch_fetch_tls_load_module_address (gdbarch,
+      svr4_fetch_objfile_link_map);
+
+  /* Hurd uses SVR4-style shared libraries.  */
+  set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
+
+  /* Hurd uses the dynamic linker included in the GNU C Library.  */
+  set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);
+
+  tdep->gregset_reg_offset = amd64_gnu_gregset_reg_offset;
+  tdep->gregset_num_regs = ARRAY_SIZE (amd64_gnu_gregset_reg_offset);
+  tdep->sizeof_gregset = 21 * 8; /* sizeof (struct i386_thread_state); */
+
+  tdep->sigtramp_p = amd64_gnu_sigtramp_p;
+  tdep->sigcontext_addr = amd64_gnu_sigcontext_addr;
+  tdep->sc_reg_offset = amd64_gnu_sc_reg_offset;
+  tdep->sc_num_regs = ARRAY_SIZE (amd64_gnu_sc_reg_offset);
+
+  /* Hurd uses SVR4-style shared libraries.  */
+  set_solib_svr4_ops (gdbarch, make_svr4_lp64_solib_ops);
+}
+
+INIT_GDB_FILE (amd64_gnu_tdep)
+{
+  gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
+			  GDB_OSABI_HURD, amd64_gnu_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.20200303/gdb/amd64-linux-nat.c ./gdb/amd64-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-linux-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-linux-nat.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
    Contributed by Jiri Smid, SuSE Labs.
 
    This file is part of GDB.
@@ -18,7 +18,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/>.  */
 
-#include "defs.h"
 #include "inferior.h"
 #include "regcache.h"
 #include "elf/common.h"
@@ -33,6 +32,7 @@
 #include "amd64-tdep.h"
 #include "amd64-linux-tdep.h"
 #include "i386-linux-tdep.h"
+#include "x86-tdep.h"
 #include "gdbsupport/x86-xstate.h"
 
 #include "x86-linux-nat.h"
@@ -80,6 +80,8 @@ static int amd64_linux_gregset32_reg_off
   -1, -1, -1, -1, -1, -1, -1, -1,
   -1, -1, -1, -1, -1, -1, -1, -1, -1,
   -1, -1, -1, -1, -1, -1, -1, -1,
+   /* MPX is deprecated.  Yet we keep this to not give the registers below
+      a new number.  That could break older gdbservers.  */
   -1, -1, -1, -1,		  /* MPX registers BND0 ... BND3.  */
   -1, -1,			  /* MPX registers BNDCFGU, BNDSTATUS.  */
   -1, -1, -1, -1, -1, -1, -1, -1, /* k0 ... k7 (AVX512)  */
@@ -89,7 +91,7 @@ static int amd64_linux_gregset32_reg_off
 };
 
 
-/* Transfering the general-purpose registers between GDB, inferiors
+/* Transferring the general-purpose registers between GDB, inferiors
    and core files.  */
 
 /* See amd64_collect_native_gregset.  This linux specific version handles
@@ -99,7 +101,7 @@ static int amd64_linux_gregset32_reg_off
 
 static void
 amd64_linux_collect_native_gregset (const struct regcache *regcache,
-			            void *gregs, int regnum)
+				    void *gregs, int regnum)
 {
   amd64_collect_native_gregset (regcache, gregs, regnum);
 
@@ -177,7 +179,7 @@ fill_gregset (const struct regcache *reg
   amd64_linux_collect_native_gregset (regcache, gregsetp, regnum);
 }
 
-/* Transfering floating-point registers between GDB, inferiors and cores.  */
+/* Transferring floating-point registers between GDB, inferiors and cores.  */
 
 /* Fill GDB's register cache with the floating-point and SSE register
    values in *FPREGSETP.  */
@@ -210,6 +212,7 @@ void
 amd64_linux_nat_target::fetch_registers (struct regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
+  const i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   int tid;
 
   /* GNU/Linux LWP ID's are process ID's.  */
@@ -235,22 +238,29 @@ amd64_linux_nat_target::fetch_registers
 
       if (have_ptrace_getregset == TRIBOOL_TRUE)
 	{
-	  char xstateregs[X86_XSTATE_MAX_SIZE];
-	  struct iovec iov;
+	  if ((regnum == -1 && tdep->ssp_regnum != -1)
+	      || (regnum != -1 && regnum == tdep->ssp_regnum))
+	    {
+	      x86_linux_fetch_ssp (regcache, tid);
+	      if (regnum != -1)
+		return;
+	    }
 
 	  /* Pre-4.14 kernels have a bug (fixed by commit 0852b374173b
 	     "x86/fpu: Add FPU state copying quirk to handle XRSTOR failure on
 	     Intel Skylake CPUs") that sometimes causes the mxcsr location in
 	     xstateregs not to be copied by PTRACE_GETREGSET.  Make sure that
 	     the location is at least initialized with a defined value.  */
-	  memset (xstateregs, 0, sizeof (xstateregs));
-	  iov.iov_base = xstateregs;
-	  iov.iov_len = sizeof (xstateregs);
+	  gdb::byte_vector xstateregs (tdep->xsave_layout.sizeof_xsave, 0);
+	  struct iovec iov;
+
+	  iov.iov_base = xstateregs.data ();
+	  iov.iov_len = xstateregs.size ();
 	  if (ptrace (PTRACE_GETREGSET, tid,
 		      (unsigned int) NT_X86_XSTATE, (long) &iov) < 0)
 	    perror_with_name (_("Couldn't get extended state status"));
 
-	  amd64_supply_xsave (regcache, -1, xstateregs);
+	  amd64_supply_xsave (regcache, -1, xstateregs.data ());
 	}
       else
 	{
@@ -259,30 +269,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
     }
 }
 
@@ -294,6 +280,7 @@ void
 amd64_linux_nat_target::store_registers (struct regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
+  const i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   int tid;
 
   /* GNU/Linux LWP ID's are process ID's.  */
@@ -323,16 +310,24 @@ amd64_linux_nat_target::store_registers
 
       if (have_ptrace_getregset == TRIBOOL_TRUE)
 	{
-	  char xstateregs[X86_XSTATE_MAX_SIZE];
+	  gdb::byte_vector xstateregs (tdep->xsave_layout.sizeof_xsave);
+	  if ((regnum == -1 && tdep->ssp_regnum != -1)
+	      || (regnum != -1 && regnum == tdep->ssp_regnum))
+	    {
+	      x86_linux_store_ssp (regcache, tid);
+	      if (regnum != -1)
+		return;
+	    }
+
 	  struct iovec iov;
 
-	  iov.iov_base = xstateregs;
-	  iov.iov_len = sizeof (xstateregs);
+	  iov.iov_base = xstateregs.data ();
+	  iov.iov_len = xstateregs.size ();
 	  if (ptrace (PTRACE_GETREGSET, tid,
 		      (unsigned int) NT_X86_XSTATE, (long) &iov) < 0)
 	    perror_with_name (_("Couldn't get extended state status"));
 
-	  amd64_collect_xsave (regcache, regnum, xstateregs, 0);
+	  amd64_collect_xsave (regcache, regnum, xstateregs.data (), 0);
 
 	  if (ptrace (PTRACE_SETREGSET, tid,
 		      (unsigned int) NT_X86_XSTATE, (long) &iov) < 0)
@@ -348,30 +343,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
     }
 }
 
@@ -381,9 +352,9 @@ amd64_linux_nat_target::store_registers
 
 ps_err_e
 ps_get_thread_area (struct ps_prochandle *ph,
-                    lwpid_t lwpid, int idx, void **base)
+		    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->arch ())->bits_per_word == 32)
     {
       unsigned int base_addr;
       ps_err_e result;
@@ -408,11 +379,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 +390,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 +405,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 +441,7 @@ amd64_linux_nat_target::low_siginfo_fixu
     return false;
 }
 
-void
-_initialize_amd64_linux_nat (void)
+INIT_GDB_FILE (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.20200303/gdb/amd64-linux-tdep.c ./gdb/amd64-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-linux-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-linux-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
    Contributed by Jiri Smid, SuSE Labs.
 
    This file is part of GDB.
@@ -18,8 +18,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 "defs.h"
 #include "arch-utils.h"
+#include "extract-store-integer.h"
 #include "frame.h"
 #include "gdbcore.h"
 #include "regcache.h"
@@ -33,7 +33,10 @@
 #include "amd64-linux-tdep.h"
 #include "i386-linux-tdep.h"
 #include "linux-tdep.h"
+#include "solib-svr4-linux.h"
+#include "svr4-tls-tdep.h"
 #include "gdbsupport/x86-xstate.h"
+#include "inferior.h"
 
 #include "amd64-tdep.h"
 #include "solib-svr4.h"
@@ -41,6 +44,12 @@
 #include "glibc-tdep.h"
 #include "arch/amd64.h"
 #include "target-descriptions.h"
+#include "expop.h"
+#include "arch/amd64-linux-tdesc.h"
+#include "inferior.h"
+#include "x86-tdep.h"
+#include "dwarf2/frame.h"
+#include "frame-unwind.h"
 
 /* The syscall's XML filename for i386.  */
 #define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml"
@@ -48,6 +57,10 @@
 #include "record-full.h"
 #include "linux-record.h"
 
+#include <string_view>
+
+#define DEFAULT_TAG_MASK 0xffffffffffffffffULL
+
 /* Mapping between the general-purpose registers in `struct user'
    format and GDB's register cache layout.  */
 
@@ -84,6 +97,8 @@ int amd64_linux_gregset_reg_offset[] =
   -1, -1, -1, -1, -1, -1, -1, -1, -1,
   -1, -1, -1, -1, -1, -1, -1, -1,
   -1, -1, -1, -1, -1, -1, -1, -1,
+  /* MPX is deprecated.  Yet we keep this to not give the registers below
+     a new number.  That could break older gdbservers.  */
   -1, -1, -1, -1,		/* MPX registers BND0 ... BND3.  */
   -1, -1,			/* MPX registers BNDCFGU and BNDSTATUS.  */
   -1, -1, -1, -1, -1, -1, -1, -1,     /* xmm16 ... xmm31 (AVX512)  */
@@ -96,6 +111,7 @@ int amd64_linux_gregset_reg_offset[] =
   -1, -1, -1, -1, -1, -1, -1, -1,
   -1, -1, -1, -1, -1, -1, -1, -1,
   -1,				/* PKEYS register pkru  */
+  -1, 				/* CET user mode register PL3_SSP.  */
 
   /* End of hardware registers */
   21 * 8, 22 * 8,		      /* fs_base and gs_base.  */
@@ -132,7 +148,7 @@ static const gdb_byte amd64_x32_linux_si
    the routine.  Otherwise, return 0.  */
 
 static CORE_ADDR
-amd64_linux_sigtramp_start (struct frame_info *this_frame)
+amd64_linux_sigtramp_start (const frame_info_ptr &this_frame)
 {
   struct gdbarch *gdbarch;
   const gdb_byte *sigtramp_code;
@@ -146,7 +162,7 @@ amd64_linux_sigtramp_start (struct frame
      PC is not at the start of the instruction sequence, there will be
      a few trailing readable bytes on the stack.  */
 
-  if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
+  if (!safe_frame_unwind_memory (this_frame, pc, buf))
     return 0;
 
   if (buf[0] != LINUX_SIGTRAMP_INSN0)
@@ -155,7 +171,7 @@ amd64_linux_sigtramp_start (struct frame
 	return 0;
 
       pc -= LINUX_SIGTRAMP_OFFSET1;
-      if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
+      if (!safe_frame_unwind_memory (this_frame, pc, buf))
 	return 0;
     }
 
@@ -174,7 +190,7 @@ amd64_linux_sigtramp_start (struct frame
    routine.  */
 
 static int
-amd64_linux_sigtramp_p (struct frame_info *this_frame)
+amd64_linux_sigtramp_p (const frame_info_ptr &this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   const char *name;
@@ -200,7 +216,7 @@ amd64_linux_sigtramp_p (struct frame_inf
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-amd64_linux_sigcontext_addr (struct frame_info *this_frame)
+amd64_linux_sigcontext_addr (const frame_info_ptr &this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -236,7 +252,7 @@ amd64_linux_get_syscall_number (struct g
      is stored at %rax register.  */
   regcache->cooked_read (AMD64_LINUX_ORIG_RAX_REGNUM, buf);
 
-  ret = extract_signed_integer (buf, 8, byte_order);
+  ret = extract_signed_integer (buf, byte_order);
 
   return ret;
 }
@@ -278,14 +294,12 @@ static int amd64_linux_sc_reg_offset[] =
 
 static int
 amd64_linux_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
-				 struct reggroup *group)
+				 const struct reggroup *group)
 { 
-  if (regnum == AMD64_LINUX_ORIG_RAX_REGNUM
-      || regnum == AMD64_FSBASE_REGNUM
-      || regnum == AMD64_GSBASE_REGNUM)
+  if (regnum == AMD64_LINUX_ORIG_RAX_REGNUM)
     return (group == system_reggroup
-            || group == save_reggroup
-            || group == restore_reggroup);
+	    || group == save_reggroup
+	    || group == restore_reggroup);
   return i386_register_reggroup_p (gdbarch, regnum, group);
 }
 
@@ -405,7 +419,7 @@ amd64_canonicalize_syscall (enum amd64_s
 
   case amd64_sys_mmap:
   case amd64_x32_sys_mmap:
-    return gdb_sys_mmap2;
+    return gdb_sys_old_mmap;
 
   case amd64_sys_mprotect:
   case amd64_x32_sys_mprotect:
@@ -459,6 +473,12 @@ amd64_canonicalize_syscall (enum amd64_s
   case amd64_x32_sys_pipe:
     return gdb_sys_pipe;
 
+  case amd64_sys_pipe2:
+    return gdb_sys_pipe2;
+
+  case amd64_sys_getrandom:
+    return gdb_sys_getrandom;
+
   case amd64_sys_select:
   case amd64_x32_sys_select:
     return gdb_sys_select;
@@ -543,6 +563,10 @@ amd64_canonicalize_syscall (enum amd64_s
   case amd64_x32_sys_accept:
     return gdb_sys_accept;
 
+  case amd64_sys_accept4:
+  case amd64_x32_sys_accept4:
+    return gdb_sys_accept4;
+
   case amd64_sys_sendto:
   case amd64_x32_sys_sendto:
     return gdb_sys_sendto;
@@ -1464,7 +1488,7 @@ amd64_linux_syscall_record_common (struc
     case amd64_sys_rt_sigreturn:
     case amd64_x32_sys_rt_sigreturn:
       if (amd64_all_but_ip_registers_record (regcache))
-        return -1;
+	return -1;
       return 0;
       break;
 
@@ -1495,17 +1519,18 @@ amd64_linux_syscall_record_common (struc
 
   if (syscall_gdb == gdb_sys_no_syscall)
     {
-      printf_unfiltered (_("Process record and replay target doesn't "
-                           "support syscall number %s\n"), 
-			 pulongest (syscall_native));
+      gdb_printf (gdb_stderr,
+		  _("Process record and replay target doesn't "
+		    "support syscall number %s\n"), 
+		  pulongest (syscall_native));
       return -1;
     }
   else
     {
       ret = record_linux_system_call (syscall_gdb, regcache,
-                                      linux_record_tdep_p);
+				      linux_record_tdep_p);
       if (ret)
-        return ret;
+	return ret;
     }
 
  record_regs:
@@ -1538,8 +1563,8 @@ amd64_x32_linux_syscall_record (struct r
 
 static int
 amd64_linux_record_signal (struct gdbarch *gdbarch,
-                           struct regcache *regcache,
-                           enum gdb_signal signal)
+			   struct regcache *regcache,
+			   enum gdb_signal signal)
 {
   ULONGEST rsp;
 
@@ -1561,8 +1586,8 @@ amd64_linux_record_signal (struct gdbarc
      sp -= sizeof (struct rt_sigframe);  */
   rsp -= AMD64_LINUX_frame_size;
   if (record_full_arch_list_add_mem (rsp, AMD64_LINUX_redzone
-                                     + AMD64_LINUX_xstate
-                                     + AMD64_LINUX_frame_size))
+				     + AMD64_LINUX_xstate
+				     + AMD64_LINUX_frame_size))
     return -1;
 
   if (record_full_arch_list_add_end ())
@@ -1571,33 +1596,13 @@ amd64_linux_record_signal (struct gdbarc
   return 0;
 }
 
-const target_desc *
-amd64_linux_read_description (uint64_t xcr0_features_bit, bool is_x32)
-{
-  static target_desc *amd64_linux_tdescs \
-    [2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/] = {};
-  static target_desc *x32_linux_tdescs[2/*AVX*/][2/*AVX512*/] = {};
+/* Return true if the core file ABFD contains shadow stack pointer state.
+   Otherwise, return false.  */
 
-  target_desc **tdesc;
-
-  if (is_x32)
-    {
-      tdesc = &x32_linux_tdescs[(xcr0_features_bit & X86_XSTATE_AVX) ? 1 : 0 ]
-	[(xcr0_features_bit & X86_XSTATE_AVX512) ? 1 : 0];
-    }
-  else
-    {
-      tdesc = &amd64_linux_tdescs[(xcr0_features_bit & X86_XSTATE_AVX) ? 1 : 0]
-	[(xcr0_features_bit & X86_XSTATE_MPX) ? 1 : 0]
-	[(xcr0_features_bit & X86_XSTATE_AVX512) ? 1 : 0]
-	[(xcr0_features_bit & X86_XSTATE_PKRU) ? 1 : 0];
-    }
-
-  if (*tdesc == NULL)
-    *tdesc = amd64_create_target_description (xcr0_features_bit, is_x32,
-					      true, true);
-
-  return *tdesc;
+static bool
+amd64_linux_core_read_ssp_state_p (bfd *abfd)
+{
+  return bfd_get_section_by_name (abfd, ".reg-ssp") != nullptr;
 }
 
 /* Get Linux/x86 target description from core dump.  */
@@ -1608,9 +1613,15 @@ amd64_linux_core_read_description (struc
 				  bfd *abfd)
 {
   /* Linux/x86-64.  */
-  uint64_t xcr0 = i386_linux_core_read_xcr0 (abfd);
+  x86_xsave_layout layout;
+  uint64_t xstate_bv = i386_linux_core_read_xsave_info (abfd, layout);
+  if (xstate_bv == 0)
+    xstate_bv = X86_XSTATE_SSE_MASK;
+
+  if (amd64_linux_core_read_ssp_state_p (abfd))
+    xstate_bv |= X86_XSTATE_CET_U;
 
-  return amd64_linux_read_description (xcr0 & X86_XSTATE_ALL_MASK,
+  return amd64_linux_read_description (xstate_bv & X86_XSTATE_ALL_MASK,
 				       gdbarch_ptr_bit (gdbarch) == 32);
 }
 
@@ -1641,6 +1652,37 @@ static const struct regset amd64_linux_x
     amd64_linux_collect_xstateregset
   };
 
+/* Supply shadow stack pointer register from SSP to the register cache
+   REGCACHE.  */
+
+static void
+amd64_linux_supply_ssp (const regset *regset,
+			regcache *regcache, int regnum,
+			const void *ssp, size_t len)
+{
+  gdb_assert (len == sizeof (uint64_t));
+  x86_supply_ssp (regcache, *static_cast<const uint64_t *> (ssp));
+}
+
+/* Collect the shadow stack pointer register from the register cache
+   REGCACHE and store it in SSP.  */
+
+static void
+amd64_linux_collect_ssp (const regset *regset,
+			 const regcache *regcache, int regnum,
+			 void *ssp, size_t len)
+{
+  gdb_assert (len == sizeof (uint64_t));
+  x86_collect_ssp (regcache, *static_cast<uint64_t *> (ssp));
+}
+
+/* Shadow stack pointer register.  */
+
+static const struct regset amd64_linux_ssp_register
+  {
+    NULL, amd64_linux_supply_ssp, amd64_linux_collect_ssp
+  };
+
 /* Iterate over core file register note sections.  */
 
 static void
@@ -1649,12 +1691,22 @@ amd64_linux_iterate_over_regset_sections
 					  void *cb_data,
 					  const struct regcache *regcache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   cb (".reg", 27 * 8, 27 * 8, &i386_gregset, NULL, cb_data);
   cb (".reg2", 512, 512, &amd64_fpregset, NULL, cb_data);
-  cb (".reg-xstate", X86_XSTATE_SIZE (tdep->xcr0), X86_XSTATE_SIZE (tdep->xcr0),
-      &amd64_linux_xstateregset, "XSAVE extended state", cb_data);
+  if (tdep->xsave_layout.sizeof_xsave != 0)
+    cb (".reg-xstate", tdep->xsave_layout.sizeof_xsave,
+	tdep->xsave_layout.sizeof_xsave, &amd64_linux_xstateregset,
+	"XSAVE extended state", cb_data);
+
+  /* SSP can be unavailable.  Thus, we need to check the register status
+     in case we write a core file (regcache != nullptr).  */
+  if (tdep->ssp_regnum != -1
+      && (regcache == nullptr
+	  || REG_VALID == regcache->get_register_status (tdep->ssp_regnum)))
+    cb (".reg-ssp", 8, 8, &amd64_linux_ssp_register,
+	"shadow stack pointer", cb_data);
 }
 
 /* The instruction sequences used in x86_64 machines for a
@@ -1733,17 +1785,16 @@ amd64_dtrace_disable_probe (struct gdbar
 /* Implementation of `gdbarch_dtrace_parse_probe_argument', as defined
    in gdbarch.h.  */
 
-static void
+static expr::operation_up
 amd64_dtrace_parse_probe_argument (struct gdbarch *gdbarch,
-				   struct expr_builder *builder,
 				   int narg)
 {
-  struct stoken str;
-
   /* DTrace probe arguments can be found on the ABI-defined places for
      regular arguments at the current PC.  The probe abstraction
      currently supports up to 12 arguments for probes.  */
 
+  using namespace expr;
+
   if (narg < 6)
     {
       static const int arg_reg_map[6] =
@@ -1757,12 +1808,7 @@ amd64_dtrace_parse_probe_argument (struc
 	};
       int regno = arg_reg_map[narg];
       const char *regname = user_reg_map_regnum_to_name (gdbarch, regno);
-
-      write_exp_elt_opcode (builder, OP_REGISTER);
-      str.ptr = regname;
-      str.length = strlen (regname);
-      write_exp_string (builder, str);
-      write_exp_elt_opcode (builder, OP_REGISTER);
+      return make_operation<register_operation> (regname);
     }
   else
     {
@@ -1770,36 +1816,276 @@ amd64_dtrace_parse_probe_argument (struc
       const char *regname = user_reg_map_regnum_to_name (gdbarch, AMD64_RSP_REGNUM);
 
       /* Displacement.  */
-      write_exp_elt_opcode (builder, OP_LONG);
-      write_exp_elt_type (builder, builtin_type (gdbarch)->builtin_long);
-      write_exp_elt_longcst (builder, narg - 6);
-      write_exp_elt_opcode (builder, OP_LONG);
+      struct type *long_type = builtin_type (gdbarch)->builtin_long;
+      operation_up disp	= make_operation<long_const_operation> (long_type,
+								narg - 6);
 
       /* Register: SP.  */
-      write_exp_elt_opcode (builder, OP_REGISTER);
-      str.ptr = regname;
-      str.length = strlen (regname);
-      write_exp_string (builder, str);
-      write_exp_elt_opcode (builder, OP_REGISTER);
+      operation_up reg = make_operation<register_operation> (regname);
 
-      write_exp_elt_opcode (builder, BINOP_ADD);
+      operation_up add = make_operation<add_operation> (std::move (disp),
+							std::move (reg));
 
       /* Cast to long. */
-      write_exp_elt_opcode (builder, UNOP_CAST);
-      write_exp_elt_type (builder,
-			  lookup_pointer_type (builtin_type (gdbarch)->builtin_long));
-      write_exp_elt_opcode (builder, UNOP_CAST);
+      operation_up cast = make_operation<unop_cast_operation> (std::move (add),
+							       long_type);
+
+      return make_operation<unop_ind_operation> (std::move (cast));
+    }
+}
+
+/* Extract the untagging mask based on the currently active linear address
+   masking (LAM) mode, which is stored in the /proc/<pid>/status file.
+   If we cannot extract the untag mask (for example, if we don't have
+   execution), we assume address tagging is not enabled and return the
+   DEFAULT_TAG_MASK.  */
+
+static CORE_ADDR
+amd64_linux_lam_untag_mask ()
+{
+  if (!target_has_execution ())
+    return DEFAULT_TAG_MASK;
+
+  inferior *inf = current_inferior ();
+  if (inf->fake_pid_p)
+    return DEFAULT_TAG_MASK;
+
+  const std::string filename = string_printf ("/proc/%d/status", inf->pid);
+  gdb::unique_xmalloc_ptr<char> status_file
+    = target_fileio_read_stralloc (nullptr, filename.c_str ());
+
+  if (status_file == nullptr)
+    return DEFAULT_TAG_MASK;
+
+  std::string_view status_file_view (status_file.get ());
+  constexpr std::string_view untag_mask_str = "untag_mask:\t";
+  const size_t found = status_file_view.find (untag_mask_str);
+  if (found != std::string::npos)
+    {
+      const char* start = status_file_view.data() + found
+			  + untag_mask_str.length ();
+      char* endptr;
+      errno = 0;
+      unsigned long long result = std::strtoul (start, &endptr, 0);
+      if (errno != 0 || endptr == start)
+	error (_("Failed to parse untag_mask from file %s."),
+	       std::string (filename).c_str ());
+
+      return result;
+    }
+
+   return DEFAULT_TAG_MASK;
+}
+
+/* Adjust watchpoint address based on the currently active linear address
+   masking (LAM) mode using the untag mask.  Check each time for a new
+   mask, as LAM is enabled at runtime.  */
+
+static CORE_ADDR
+amd64_linux_remove_non_address_bits_watchpoint (gdbarch *gdbarch,
+						CORE_ADDR addr)
+{
+  /* Clear insignificant bits of a target address using the untag
+     mask.  */
+  return (addr & amd64_linux_lam_untag_mask ());
+}
+
+/* Fetch and return the TLS DTV (dynamic thread vector) address for PTID.
+   Throw a suitable TLS error if something goes wrong.  */
+
+static CORE_ADDR
+amd64_linux_get_tls_dtv_addr (struct gdbarch *gdbarch, ptid_t ptid,
+			      enum svr4_tls_libc libc)
+{
+  /* On x86-64, the thread pointer is found in the fsbase register.  */
+  regcache *regcache
+    = get_thread_arch_regcache (current_inferior (), ptid, gdbarch);
+  target_fetch_registers (regcache, AMD64_FSBASE_REGNUM);
+  ULONGEST fsbase;
+  if (regcache->cooked_read (AMD64_FSBASE_REGNUM, &fsbase) != REG_VALID)
+    throw_error (TLS_GENERIC_ERROR, _("Unable to fetch thread pointer"));
+
+  /* The thread pointer (fsbase) points at the TCB (thread control
+     block).  The first two members of this struct are both pointers,
+     where the first will be a pointer to the TCB (i.e. it points at
+     itself) and the second will be a pointer to the DTV (dynamic
+     thread vector).  There are many other fields too, but the one
+     we care about here is the DTV pointer.  Compute the address
+     of the DTV pointer, fetch it, and convert it to an address.  */
+  CORE_ADDR dtv_ptr_addr = fsbase + gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
+  gdb::byte_vector buf (gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT);
+  if (target_read_memory (dtv_ptr_addr, buf.data (), buf.size ()) != 0)
+    throw_error (TLS_GENERIC_ERROR, _("Unable to fetch DTV address"));
+
+  const struct builtin_type *builtin = builtin_type (gdbarch);
+  CORE_ADDR dtv_addr = gdbarch_pointer_to_address
+			 (gdbarch, builtin->builtin_data_ptr, buf.data ());
+  return dtv_addr;
+}
+
+/* Return the number of bytes required to update the shadow stack pointer
+   by one element.  For x32 the shadow stack elements are still 64-bit
+   aligned.  Thus, gdbarch_addr_bit cannot be used to compute the new
+   stack pointer.  */
+
+static inline int
+amd64_linux_shadow_stack_element_size_aligned (gdbarch *gdbarch)
+{
+  const bfd_arch_info *binfo = gdbarch_bfd_arch_info (gdbarch);
+  return (binfo->bits_per_word / binfo->bits_per_byte);
+}
+
+/* Read the shadow stack pointer register and return its value, if
+   possible.  */
+
+static std::optional<CORE_ADDR>
+amd64_linux_get_shadow_stack_pointer (gdbarch *gdbarch, regcache *regcache,
+				      bool &shadow_stack_enabled)
+{
+  shadow_stack_enabled = false;
+  const i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
+
+  if (tdep->ssp_regnum < 0)
+    return {};
+
+  CORE_ADDR ssp;
+  if (regcache_raw_read_unsigned (regcache, tdep->ssp_regnum, &ssp)
+      != REG_VALID)
+    return {};
+
+  /* Dependent on the target in case the shadow stack pointer is
+     unavailable, the ssp register can be invalid or 0x0 when shadow stack
+     is supported by HW and the linux kernel but not enabled for the
+     current thread.  */
+  if (ssp == 0x0)
+    return {};
+
+  /* In case there is a shadow stack pointer available which is non-null,
+     the shadow stack feature is enabled.  */
+  shadow_stack_enabled = true;
+  return ssp;
+}
+
+/* If shadow stack is enabled, push the address NEW_ADDR to the shadow
+   stack and increment the shadow stack pointer accordingly.  */
+
+static void
+amd64_linux_shadow_stack_push (gdbarch *gdbarch, CORE_ADDR new_addr,
+			       regcache *regcache)
+{
+  bool shadow_stack_enabled;
+  std::optional<CORE_ADDR> ssp
+    = amd64_linux_get_shadow_stack_pointer (gdbarch, regcache,
+					    shadow_stack_enabled);
+
+  /* For amd64/Linux, if SSP has a value that means shadow stack is
+     enabled.  */
+  if (!ssp.has_value ())
+    return;
+  else
+    gdb_assert (shadow_stack_enabled);
 
-      write_exp_elt_opcode (builder, UNOP_IND);
+  /* The shadow stack grows downwards.  To push addresses to the stack,
+     we need to decrement SSP.  */
+  const int element_size
+    = amd64_linux_shadow_stack_element_size_aligned (gdbarch);
+  const CORE_ADDR new_ssp = *ssp - element_size;
+
+  /* Using /proc/PID/smaps we can only check if NEW_SSP points to shadow
+     stack memory.  If it doesn't, we assume the stack is full.  */
+  std::pair<CORE_ADDR, CORE_ADDR> memrange;
+  if (!linux_address_in_shadow_stack_mem_range (new_ssp, &memrange))
+    error (_("No space left on the shadow stack."));
+
+  /* On x86 there can be a shadow stack token at bit 63.  For x32,  the
+     address size is only 32 bit.   Always write back the full 8 bytes to
+     include the shadow stack token.  */
+  const bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  write_memory_unsigned_integer (new_ssp, element_size, byte_order,
+				 (ULONGEST) new_addr);
+
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
+  gdb_assert (tdep->ssp_regnum > -1);
+
+  regcache_raw_write_unsigned (regcache, tdep->ssp_regnum, new_ssp);
+}
+
+/* Implement shadow stack pointer unwinding.  For each new shadow stack
+   pointer check if its address is still in the shadow stack memory range.
+   If it's outside the range set the returned value to unavailable,
+   otherwise return a value containing the new shadow stack pointer.  */
+
+static value *
+amd64_linux_dwarf2_prev_ssp (const frame_info_ptr &this_frame,
+			     void **this_cache, int regnum)
+{
+  value *v = frame_unwind_got_register (this_frame, regnum, regnum);
+  gdb_assert (v != nullptr);
+
+  gdbarch *gdbarch = get_frame_arch (this_frame);
+
+  if (v->entirely_available () && !v->optimized_out ())
+    {
+      int size = register_size (gdbarch, regnum);
+      bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+      CORE_ADDR ssp = extract_unsigned_integer (v->contents_all ().data (),
+						size, byte_order);
+
+      /* Using /proc/PID/smaps we can only check if the current shadow
+	 stack pointer SSP points to shadow stack memory.  Only if this is
+	 the case a valid previous shadow stack pointer can be
+	 calculated.  */
+      std::pair<CORE_ADDR, CORE_ADDR> range;
+      if (linux_address_in_shadow_stack_mem_range (ssp, &range))
+	{
+	  /* The shadow stack grows downwards.  To compute the previous
+	     shadow stack pointer, we need to increment SSP.  */
+	  CORE_ADDR new_ssp
+	    = ssp + amd64_linux_shadow_stack_element_size_aligned (gdbarch);
+
+	  /* There can be scenarios where we have a shadow stack pointer
+	     but the shadow stack is empty, as no call instruction has
+	     been executed yet.  If NEW_SSP points to the end of or before
+	     (<=) the current shadow stack memory range we consider
+	     NEW_SSP as valid (but empty).  */
+	  if (new_ssp <= range.second)
+	    return frame_unwind_got_address (this_frame, regnum, new_ssp);
+	}
+    }
+
+  /* Return a value which is marked as unavailable in case we could not
+     calculate a valid previous shadow stack pointer.  */
+  value *retval
+    = value::allocate_register (get_next_frame_sentinel_okay (this_frame),
+				regnum, register_type (gdbarch, regnum));
+  retval->mark_bytes_unavailable (0, retval->type ()->length ());
+  return retval;
+}
+
+/* Implement the "init_reg" dwarf2_frame_ops method.  */
+
+static void
+amd64_init_reg (gdbarch *gdbarch, int regnum, dwarf2_frame_state_reg *reg,
+		const frame_info_ptr &this_frame)
+{
+  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;
+  else if (regnum == AMD64_PL3_SSP_REGNUM)
+    {
+      reg->how = DWARF2_FRAME_REG_FN;
+      reg->loc.fn = amd64_linux_dwarf2_prev_ssp;
     }
 }
 
 static void
-amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch)
+amd64_linux_init_abi_common (struct gdbarch_info info, struct gdbarch *gdbarch,
+			     int num_disp_step_buffers)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
-  linux_init_abi (info, gdbarch);
+  linux_init_abi (info, gdbarch, num_disp_step_buffers);
 
   tdep->sigtramp_p = amd64_linux_sigtramp_p;
   tdep->sigcontext_addr = amd64_linux_sigcontext_addr;
@@ -1807,6 +2093,8 @@ amd64_linux_init_abi_common(struct gdbar
   tdep->sc_num_regs = ARRAY_SIZE (amd64_linux_sc_reg_offset);
 
   tdep->xsave_xcr0_offset = I386_LINUX_XSAVE_XCR0_OFFSET;
+  set_gdbarch_core_read_x86_xsave_layout
+    (gdbarch, i386_linux_core_read_x86_xsave_layout);
 
   /* Add the %orig_rax register used for syscall restarting.  */
   set_gdbarch_write_pc (gdbarch, amd64_linux_write_pc);
@@ -1816,11 +2104,14 @@ amd64_linux_init_abi_common(struct gdbar
   /* Functions for 'catch syscall'.  */
   set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_AMD64);
   set_gdbarch_get_syscall_number (gdbarch,
-                                  amd64_linux_get_syscall_number);
+				  amd64_linux_get_syscall_number);
 
   /* Enable TLS support.  */
   set_gdbarch_fetch_tls_load_module_address (gdbarch,
-                                             svr4_fetch_objfile_link_map);
+					     svr4_fetch_objfile_link_map);
+  set_gdbarch_get_thread_local_address (gdbarch,
+					svr4_tls_get_thread_local_address);
+  svr4_tls_register_tls_methods (info, gdbarch, amd64_linux_get_tls_dtv_addr);
 
   /* GNU/Linux uses SVR4-style shared libraries.  */
   set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
@@ -1837,23 +2128,25 @@ amd64_linux_init_abi_common(struct gdbar
 
   /* Displaced stepping.  */
   set_gdbarch_displaced_step_copy_insn (gdbarch,
-                                        amd64_displaced_step_copy_insn);
+					amd64_displaced_step_copy_insn);
   set_gdbarch_displaced_step_fixup (gdbarch, amd64_displaced_step_fixup);
-  set_gdbarch_displaced_step_location (gdbarch,
-                                       linux_displaced_step_location);
 
   set_gdbarch_process_record (gdbarch, i386_process_record);
   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_remove_non_address_bits_watchpoint
+    (gdbarch, amd64_linux_remove_non_address_bits_watchpoint);
+
+  set_gdbarch_shadow_stack_push (gdbarch, amd64_linux_shadow_stack_push);
+  set_gdbarch_get_shadow_stack_pointer (gdbarch,
+					amd64_linux_get_shadow_stack_pointer);
+  dwarf2_frame_set_init_reg (gdbarch, amd64_init_reg);
 }
 
 static void
 amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   struct tdesc_arch_data *tdesc_data = info.tdesc_data;
   const struct tdesc_feature *feature;
   int valid_p;
@@ -1882,7 +2175,7 @@ amd64_linux_init_abi (struct gdbarch_inf
   if (!valid_p)
     return;
 
-  amd64_linux_init_abi_common (info, gdbarch);
+  amd64_linux_init_abi_common (info, gdbarch, 2);
 
   /* Initialize the amd64_linux_record_tdep.  */
   /* These values are the size of the type that will be used in a system
@@ -2054,8 +2347,7 @@ amd64_linux_init_abi (struct gdbarch_inf
   tdep->i386_syscall_record = amd64_linux_syscall_record;
 
   /* GNU/Linux uses SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_lp64_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_linux_lp64_svr4_solib_ops);
 
   /* Register DTrace handlers.  */
   set_gdbarch_dtrace_parse_probe_argument (gdbarch, amd64_dtrace_parse_probe_argument);
@@ -2067,7 +2359,7 @@ amd64_linux_init_abi (struct gdbarch_inf
 static void
 amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   struct tdesc_arch_data *tdesc_data = info.tdesc_data;
   const struct tdesc_feature *feature;
   int valid_p;
@@ -2097,7 +2389,7 @@ amd64_x32_linux_init_abi (struct gdbarch
   if (!valid_p)
     return;
 
-  amd64_linux_init_abi_common (info, gdbarch);
+  amd64_linux_init_abi_common (info, gdbarch, 0);
 
   /* Initialize the amd64_x32_linux_record_tdep.  */
   /* These values are the size of the type that will be used in a system
@@ -2268,12 +2560,10 @@ amd64_x32_linux_init_abi (struct gdbarch
   tdep->i386_syscall_record = amd64_x32_linux_syscall_record;
 
   /* GNU/Linux uses SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_ilp32_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_linux_ilp32_svr4_solib_ops);
 }
 
-void
-_initialize_amd64_linux_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/amd64-linux-tdep.h ./gdb/amd64-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-linux-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-linux-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for GNU/Linux AMD64.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 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/>.  */
 
-#ifndef AMD64_LINUX_TDEP_H
-#define AMD64_LINUX_TDEP_H
+#ifndef GDB_AMD64_LINUX_TDEP_H
+#define GDB_AMD64_LINUX_TDEP_H
 
 /* Like for i386 GNU/Linux, there is an extra "register"
    used to control syscall restarting.  */
@@ -31,24 +31,6 @@
 /* Total number of registers for GNU/Linux.  */
 #define AMD64_LINUX_NUM_REGS (AMD64_LINUX_ORIG_RAX_REGNUM + 1)
 
-/* Linux target description.  */
-extern struct target_desc *tdesc_amd64_linux;
-extern struct target_desc *tdesc_amd64_avx_linux;
-extern struct target_desc *tdesc_amd64_mpx_linux;
-extern struct target_desc *tdesc_amd64_avx_mpx_linux;
-extern struct target_desc *tdesc_amd64_avx_avx512_linux;
-extern struct target_desc *tdesc_amd64_avx_mpx_avx512_pku_linux;
-
-extern struct target_desc *tdesc_x32_linux;
-extern struct target_desc *tdesc_x32_avx_linux;
-extern struct target_desc *tdesc_x32_avx_avx512_linux;
-
-/* Return the right amd64-linux target descriptions according to
-   XCR0_FEATURES_BIT and IS_X32.  */
-
-const target_desc *amd64_linux_read_description (uint64_t xcr0_features_bit,
-						 bool is_x32);
-
 /* Enum that defines the syscall identifiers for amd64 linux.
    Used for process record/replay, these will be translated into
    a gdb-canonical set of syscall ids in linux-record.c.  */
@@ -320,6 +302,9 @@ enum amd64_syscall {
   amd64_sys_sync_file_range = 277,
   amd64_sys_vmsplice = 278,
   amd64_sys_move_pages = 279,
+  amd64_sys_accept4 = 288,
+  amd64_sys_pipe2 = 293,
+  amd64_sys_getrandom = 318
 };
 
 /* Enum that defines the syscall identifiers for x32 linux.
@@ -569,6 +554,7 @@ enum amd64_x32_syscall {
   amd64_x32_sys_splice = (amd64_x32_syscall_bit + 275),
   amd64_x32_sys_tee = (amd64_x32_syscall_bit + 276),
   amd64_x32_sys_sync_file_range = (amd64_x32_syscall_bit + 277),
+  amd64_x32_sys_accept4 = (amd64_x32_syscall_bit + 288),
   amd64_x32_sys_rt_sigaction = (amd64_x32_syscall_bit + 512),
   amd64_x32_sys_rt_sigreturn = (amd64_x32_syscall_bit + 513),
   amd64_x32_sys_ioctl = (amd64_x32_syscall_bit + 514),
@@ -602,4 +588,4 @@ enum amd64_x32_syscall {
   amd64_x32_sys_getsockopt = (amd64_x32_syscall_bit + 542),
 };
 
-#endif /* amd64-linux-tdep.h */
+#endif /* GDB_AMD64_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.20200303/gdb/amd64-nat.c ./gdb/amd64-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for AMD64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "gdbarch.h"
 #include "regcache.h"
 
@@ -68,13 +67,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];
 }
 
@@ -136,7 +128,7 @@ amd64_collect_native_gregset (const stru
       num_regs = amd64_native_gregset32_num_regs;
 
       /* Make sure %eax, %ebx, %ecx, %edx, %esi, %edi, %ebp, %esp and
-         %eip get zero-extended to 64 bits.  */
+	 %eip get zero-extended to 64 bits.  */
       for (i = 0; i <= I386_EIP_REGNUM; i++)
 	{
 	  if (regnum == -1 || regnum == 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.20200303/gdb/amd64-nat.h ./gdb/amd64-nat.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-nat.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-nat.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for AMD64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 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/>.  */
 
-#ifndef AMD64_NAT_H
-#define AMD64_NAT_H 1
+#ifndef GDB_AMD64_NAT_H
+#define GDB_AMD64_NAT_H
 
 struct regcache;
 
@@ -49,4 +49,4 @@ extern void amd64_supply_native_gregset
 extern void amd64_collect_native_gregset (const struct regcache *regcache,
 					  void *gregs, int regnum);
 
-#endif /* amd64-nat.h */
+#endif /* GDB_AMD64_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.20200303/gdb/amd64-nbsd-nat.c ./gdb/amd64-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-nbsd-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-nbsd-nat.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,67 +0,0 @@
-/* Native-dependent code for NetBSD/amd64.
-
-   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 "target.h"
-
-#include "nbsd-nat.h"
-#include "amd64-tdep.h"
-#include "amd64-bsd-nat.h"
-#include "amd64-nat.h"
-
-/* Mapping between the general-purpose registers in NetBSD/amd64
-   `struct reg' format and GDB's register cache layout for
-   NetBSD/i386.
-
-   Note that most (if not all) NetBSD/amd64 registers are 64-bit,
-   while the NetBSD/i386 registers are all 32-bit, but since we're
-   little-endian we get away with that.  */
-
-/* From <machine/reg.h>.  */
-static int amd64nbsd32_r_reg_offset[] =
-{
-  14 * 8,			/* %eax */
-  3 * 8,			/* %ecx */
-  2 * 8,			/* %edx */
-  13 * 8,			/* %ebx */
-  24 * 8,			/* %esp */
-  12 * 8,			/* %ebp */
-  1 * 8,			/* %esi */
-  0 * 8,			/* %edi */
-  21 * 8,			/* %eip */
-  23 * 8,			/* %eflags */
-  22 * 8,			/* %cs */
-  25 * 8,			/* %ss */
-  18 * 8,			/* %ds */
-  17 * 8,			/* %es */
-  16 * 8,			/* %fs */
-  15 * 8			/* %gs */
-};
-
-static amd64_bsd_nat_target<nbsd_nat_target> the_amd64_nbsd_nat_target;
-
-void
-_initialize_amd64nbsd_nat (void)
-{
-  amd64_native_gregset32_reg_offset = amd64nbsd32_r_reg_offset;
-  amd64_native_gregset32_num_regs = ARRAY_SIZE (amd64nbsd32_r_reg_offset);
-  amd64_native_gregset64_reg_offset = amd64nbsd_r_reg_offset;
-
-  add_inf_child_target (&the_amd64_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.20200303/gdb/amd64-nbsd-tdep.c ./gdb/amd64-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-nbsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-nbsd-tdep.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,131 +0,0 @@
-/* Target-dependent code for NetBSD/amd64.
-
-   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 "arch-utils.h"
-#include "frame.h"
-#include "gdbcore.h"
-#include "osabi.h"
-#include "symtab.h"
-
-#include "amd64-tdep.h"
-#include "gdbsupport/x86-xstate.h"
-#include "nbsd-tdep.h"
-#include "solib-svr4.h"
-
-/* Support for signal handlers.  */
-
-/* Return whether THIS_FRAME corresponds to a NetBSD sigtramp
-   routine.  */
-
-static int
-amd64nbsd_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 nbsd_pc_in_sigtramp (pc, name);
-}
-
-/* Assuming THIS_FRAME corresponds to a NetBSD sigtramp routine,
-   return the address of the associated mcontext structure.  */
-
-static CORE_ADDR
-amd64nbsd_mcontext_addr (struct frame_info *this_frame)
-{
-  CORE_ADDR addr;
-
-  /* The register %r15 points at `struct ucontext' upon entry of a
-     signal trampoline.  */
-  addr = get_frame_register_unsigned (this_frame, AMD64_R15_REGNUM);
-
-  /* The mcontext structure lives as offset 56 in `struct ucontext'.  */
-  return addr + 56;
-}
-
-/* NetBSD 2.0 or later.  */
-
-/* Mapping between the general-purpose registers in `struct reg'
-   format and GDB's register cache layout.  */
-
-/* From <machine/reg.h>.  */
-int amd64nbsd_r_reg_offset[] =
-{
-  14 * 8,			/* %rax */
-  13 * 8,			/* %rbx */
-  3 * 8,			/* %rcx */
-  2 * 8,			/* %rdx */
-  1 * 8,			/* %rsi */
-  0 * 8,			/* %rdi */
-  12 * 8,			/* %rbp */
-  24 * 8,			/* %rsp */
-  4 * 8,			/* %r8 ..  */
-  5 * 8,
-  6 * 8,
-  7 * 8,
-  8 * 8,
-  9 * 8,
-  10 * 8,
-  11 * 8,			/* ... %r15 */
-  21 * 8,			/* %rip */
-  23 * 8,			/* %eflags */
-  22 * 8,			/* %cs */
-  25 * 8,			/* %ss */
-  18 * 8,			/* %ds */
-  17 * 8,			/* %es */
-  16 * 8,			/* %fs */
-  15 * 8			/* %gs */
-};
-
-static void
-amd64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  /* Initialize general-purpose register set details first.  */
-  tdep->gregset_reg_offset = amd64nbsd_r_reg_offset;
-  tdep->gregset_num_regs = ARRAY_SIZE (amd64nbsd_r_reg_offset);
-  tdep->sizeof_gregset = 26 * 8;
-
-  amd64_init_abi (info, gdbarch,
-		  amd64_target_description (X86_XSTATE_SSE_MASK, true));
-
-  tdep->jb_pc_offset = 7 * 8;
-
-  /* NetBSD has its own convention for signal trampolines.  */
-  tdep->sigtramp_p = amd64nbsd_sigtramp_p;
-  tdep->sigcontext_addr = amd64nbsd_mcontext_addr;
-  tdep->sc_reg_offset = amd64nbsd_r_reg_offset;
-  tdep->sc_num_regs = ARRAY_SIZE (amd64nbsd_r_reg_offset);
-
-  /* NetBSD uses SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_lp64_fetch_link_map_offsets);
-}
-
-void
-_initialize_amd64nbsd_tdep (void)
-{
-  /* The NetBSD/amd64 native dependent code makes this assumption.  */
-  gdb_assert (ARRAY_SIZE (amd64nbsd_r_reg_offset) == AMD64_NUM_GREGS);
-
-  gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
-			  GDB_OSABI_NETBSD, amd64nbsd_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.20200303/gdb/amd64-netbsd-nat.c ./gdb/amd64-netbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-netbsd-nat.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amd64-netbsd-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,65 @@
+/* Native-dependent code for NetBSD/amd64.
+
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "target.h"
+
+#include "netbsd-nat.h"
+#include "amd64-tdep.h"
+#include "amd64-bsd-nat.h"
+#include "amd64-nat.h"
+
+/* Mapping between the general-purpose registers in NetBSD/amd64
+   `struct reg' format and GDB's register cache layout for
+   NetBSD/i386.
+
+   Note that most (if not all) NetBSD/amd64 registers are 64-bit,
+   while the NetBSD/i386 registers are all 32-bit, but since we're
+   little-endian we get away with that.  */
+
+/* From <machine/reg.h>.  */
+static int amd64nbsd32_r_reg_offset[] =
+{
+  14 * 8,			/* %eax */
+  3 * 8,			/* %ecx */
+  2 * 8,			/* %edx */
+  13 * 8,			/* %ebx */
+  24 * 8,			/* %esp */
+  12 * 8,			/* %ebp */
+  1 * 8,			/* %esi */
+  0 * 8,			/* %edi */
+  21 * 8,			/* %eip */
+  23 * 8,			/* %eflags */
+  22 * 8,			/* %cs */
+  25 * 8,			/* %ss */
+  18 * 8,			/* %ds */
+  17 * 8,			/* %es */
+  16 * 8,			/* %fs */
+  15 * 8			/* %gs */
+};
+
+static amd64_bsd_nat_target<nbsd_nat_target> the_amd64_nbsd_nat_target;
+
+INIT_GDB_FILE (amd64nbsd_nat)
+{
+  amd64_native_gregset32_reg_offset = amd64nbsd32_r_reg_offset;
+  amd64_native_gregset32_num_regs = ARRAY_SIZE (amd64nbsd32_r_reg_offset);
+  amd64_native_gregset64_reg_offset = amd64nbsd_r_reg_offset;
+
+  add_inf_child_target (&the_amd64_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.20200303/gdb/amd64-netbsd-tdep.c ./gdb/amd64-netbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-netbsd-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amd64-netbsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,129 @@
+/* Target-dependent code for NetBSD/amd64.
+
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arch-utils.h"
+#include "frame.h"
+#include "gdbcore.h"
+#include "osabi.h"
+#include "symtab.h"
+
+#include "amd64-tdep.h"
+#include "gdbsupport/x86-xstate.h"
+#include "netbsd-tdep.h"
+#include "solib-svr4.h"
+
+/* Support for signal handlers.  */
+
+/* Return whether THIS_FRAME corresponds to a NetBSD sigtramp
+   routine.  */
+
+static int
+amd64nbsd_sigtramp_p (const frame_info_ptr &this_frame)
+{
+  CORE_ADDR pc = get_frame_pc (this_frame);
+  const char *name;
+
+  find_pc_partial_function (pc, &name, NULL, NULL);
+  return nbsd_pc_in_sigtramp (pc, name);
+}
+
+/* Assuming THIS_FRAME corresponds to a NetBSD sigtramp routine,
+   return the address of the associated mcontext structure.  */
+
+static CORE_ADDR
+amd64nbsd_mcontext_addr (const frame_info_ptr &this_frame)
+{
+  CORE_ADDR addr;
+
+  /* The register %r15 points at `struct ucontext' upon entry of a
+     signal trampoline.  */
+  addr = get_frame_register_unsigned (this_frame, AMD64_R15_REGNUM);
+
+  /* The mcontext structure lives as offset 56 in `struct ucontext'.  */
+  return addr + 56;
+}
+
+/* NetBSD 2.0 or later.  */
+
+/* Mapping between the general-purpose registers in `struct reg'
+   format and GDB's register cache layout.  */
+
+/* From <machine/reg.h>.  */
+int amd64nbsd_r_reg_offset[] =
+{
+  14 * 8,			/* %rax */
+  13 * 8,			/* %rbx */
+  3 * 8,			/* %rcx */
+  2 * 8,			/* %rdx */
+  1 * 8,			/* %rsi */
+  0 * 8,			/* %rdi */
+  12 * 8,			/* %rbp */
+  24 * 8,			/* %rsp */
+  4 * 8,			/* %r8 ..  */
+  5 * 8,
+  6 * 8,
+  7 * 8,
+  8 * 8,
+  9 * 8,
+  10 * 8,
+  11 * 8,			/* ... %r15 */
+  21 * 8,			/* %rip */
+  23 * 8,			/* %eflags */
+  22 * 8,			/* %cs */
+  25 * 8,			/* %ss */
+  18 * 8,			/* %ds */
+  17 * 8,			/* %es */
+  16 * 8,			/* %fs */
+  15 * 8			/* %gs */
+};
+
+static void
+amd64nbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
+
+  /* Initialize general-purpose register set details first.  */
+  tdep->gregset_reg_offset = amd64nbsd_r_reg_offset;
+  tdep->gregset_num_regs = ARRAY_SIZE (amd64nbsd_r_reg_offset);
+  tdep->sizeof_gregset = 26 * 8;
+
+  amd64_init_abi (info, gdbarch,
+		  amd64_target_description (X86_XSTATE_SSE_MASK, true));
+  nbsd_init_abi (info, gdbarch);
+
+  tdep->jb_pc_offset = 7 * 8;
+
+  /* NetBSD has its own convention for signal trampolines.  */
+  tdep->sigtramp_p = amd64nbsd_sigtramp_p;
+  tdep->sigcontext_addr = amd64nbsd_mcontext_addr;
+  tdep->sc_reg_offset = amd64nbsd_r_reg_offset;
+  tdep->sc_num_regs = ARRAY_SIZE (amd64nbsd_r_reg_offset);
+
+  /* NetBSD uses SVR4-style shared libraries.  */
+  set_solib_svr4_ops (gdbarch, make_svr4_lp64_solib_ops);
+}
+
+INIT_GDB_FILE (amd64nbsd_tdep)
+{
+  /* The NetBSD/amd64 native dependent code makes this assumption.  */
+  gdb_assert (ARRAY_SIZE (amd64nbsd_r_reg_offset) == AMD64_NUM_GREGS);
+
+  gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
+			  GDB_OSABI_NETBSD, amd64nbsd_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.20200303/gdb/amd64-obsd-nat.c ./gdb/amd64-obsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-obsd-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-obsd-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for OpenBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "gdbcore.h"
 #include "regcache.h"
 #include "target.h"
@@ -128,8 +127,7 @@ amd64obsd_supply_pcb (struct regcache *r
 
 static amd64_bsd_nat_target<obsd_nat_target> the_amd64_obsd_nat_target;
 
-void
-_initialize_amd64obsd_nat (void)
+INIT_GDB_FILE (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.20200303/gdb/amd64-obsd-tdep.c ./gdb/amd64-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-obsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-obsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/amd64.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "frame.h"
 #include "frame-unwind.h"
 #include "gdbcore.h"
@@ -45,7 +45,7 @@ static const int amd64obsd_page_size = 4
    routine.  */
 
 static int
-amd64obsd_sigtramp_p (struct frame_info *this_frame)
+amd64obsd_sigtramp_p (const frame_info_ptr &this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   CORE_ADDR start_pc = (pc & ~(amd64obsd_page_size - 1));
@@ -78,7 +78,7 @@ amd64obsd_sigtramp_p (struct frame_info
 
   /* If we can't read the instructions at START_PC, return zero.  */
   buf = (gdb_byte *) alloca ((sizeof sigreturn) + 1);
-  if (!safe_frame_unwind_memory (this_frame, start_pc + 6, buf, buflen))
+  if (!safe_frame_unwind_memory (this_frame, start_pc + 6, {buf, buflen}))
     return 0;
 
   /* Check for sigreturn(2).  Depending on how the assembler encoded
@@ -98,7 +98,7 @@ amd64obsd_sigtramp_p (struct frame_info
    address of the associated sigcontext structure.  */
 
 static CORE_ADDR
-amd64obsd_sigcontext_addr (struct frame_info *this_frame)
+amd64obsd_sigcontext_addr (const frame_info_ptr &this_frame)
 {
   CORE_ADDR pc = get_frame_pc (this_frame);
   ULONGEST offset = (pc & (amd64obsd_page_size - 1));
@@ -106,11 +106,11 @@ amd64obsd_sigcontext_addr (struct frame_
   /* The %rsp register points at `struct sigcontext' upon entry of a
      signal trampoline.  The relevant part of the trampoline is
 
-        call    *%rax
-        movq    %rsp, %rdi
-        pushq   %rdi
-        movq    $SYS_sigreturn,%rax
-        int     $0x80
+	call    *%rax
+	movq    %rsp, %rdi
+	pushq   %rdi
+	movq    $SYS_sigreturn,%rax
+	int     $0x80
 
      (see /usr/src/sys/arch/amd64/amd64/locore.S).  The `pushq'
      instruction clobbers %rsp, but its value is saved in `%rdi'.  */
@@ -238,7 +238,7 @@ amd64obsd_supply_uthread (struct regcach
       sp = read_memory_unsigned_integer (sp_addr, 8, byte_order);
 
       /* Adjust the stack pointer such that it looks as if we just
-         returned from _thread_machdep_switch.  */
+	 returned from _thread_machdep_switch.  */
       offset = amd64obsd_uthread_reg_offset[AMD64_RIP_REGNUM] + 8;
       store_unsigned_integer (buf, 8, byte_order, sp + offset);
       regcache->raw_supply (AMD64_RSP_REGNUM, buf);
@@ -250,7 +250,7 @@ amd64obsd_supply_uthread (struct regcach
 	  && (regnum == -1 || regnum == i))
 	{
 	  /* Fetch stack pointer from thread structure (if we didn't
-             do so already).  */
+	     do so already).  */
 	  if (sp == 0)
 	    sp = read_memory_unsigned_integer (sp_addr, 8, byte_order);
 
@@ -279,7 +279,7 @@ amd64obsd_collect_uthread (const struct
       int offset;
 
       /* Calculate the stack pointer (frame pointer) that will be
-         stored into the thread structure.  */
+	 stored into the thread structure.  */
       offset = amd64obsd_uthread_reg_offset[AMD64_RIP_REGNUM] + 8;
       regcache->raw_collect (AMD64_RSP_REGNUM, buf);
       sp = extract_unsigned_integer (buf, 8, byte_order) - offset;
@@ -288,7 +288,7 @@ amd64obsd_collect_uthread (const struct
       write_memory_unsigned_integer (sp_addr, 8, byte_order, sp);
 
       /* The stack pointer was (potentially) modified.  Make sure we
-         build a proper stack frame.  */
+	 build a proper stack frame.  */
       regnum = -1;
     }
 
@@ -298,7 +298,7 @@ amd64obsd_collect_uthread (const struct
 	  && (regnum == -1 || regnum == i))
 	{
 	  /* Fetch stack pointer from thread structure (if we didn't
-             calculate it already).  */
+	     calculate it already).  */
 	  if (sp == 0)
 	    sp = read_memory_unsigned_integer (sp_addr, 8, byte_order);
 
@@ -315,7 +315,7 @@ amd64obsd_collect_uthread (const struct
 #define amd64obsd_tf_reg_offset amd64obsd_sc_reg_offset
 
 static struct trad_frame_cache *
-amd64obsd_trapframe_cache (struct frame_info *this_frame, void **this_cache)
+amd64obsd_trapframe_cache (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -362,7 +362,7 @@ amd64obsd_trapframe_cache (struct frame_
 }
 
 static void
-amd64obsd_trapframe_this_id (struct frame_info *this_frame,
+amd64obsd_trapframe_this_id (const frame_info_ptr &this_frame,
 			     void **this_cache, struct frame_id *this_id)
 {
   struct trad_frame_cache *cache =
@@ -372,7 +372,7 @@ amd64obsd_trapframe_this_id (struct fram
 }
 
 static struct value *
-amd64obsd_trapframe_prev_register (struct frame_info *this_frame,
+amd64obsd_trapframe_prev_register (const frame_info_ptr &this_frame,
 				   void **this_cache, int regnum)
 {
   struct trad_frame_cache *cache =
@@ -383,7 +383,7 @@ amd64obsd_trapframe_prev_register (struc
 
 static int
 amd64obsd_trapframe_sniffer (const struct frame_unwind *self,
-			     struct frame_info *this_frame,
+			     const frame_info_ptr &this_frame,
 			     void **this_prologue_cache)
 {
   ULONGEST cs;
@@ -402,23 +402,25 @@ amd64obsd_trapframe_sniffer (const struc
 		   || (startswith (name, "Xintr"))));
 }
 
-static const struct frame_unwind amd64obsd_trapframe_unwind = {
+static const struct frame_unwind_legacy amd64obsd_trapframe_unwind (
   /* FIXME: kettenis/20051219: This really is more like an interrupt
      frame, but SIGTRAMP_FRAME would print <signal handler called>,
      which really is not what we want here.  */
+  "amd64 openbsd trap",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   amd64obsd_trapframe_this_id,
   amd64obsd_trapframe_prev_register,
   NULL,
   amd64obsd_trapframe_sniffer
-};
+);
 
 
 static void
 amd64obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   amd64_init_abi (info, gdbarch,
 		  amd64_target_description (X86_XSTATE_SSE_MASK, true));
@@ -441,15 +443,13 @@ amd64obsd_init_abi (struct gdbarch_info
   bsd_uthread_set_collect_uthread (gdbarch, amd64obsd_collect_uthread);
 
   /* OpenBSD uses SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_lp64_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_svr4_lp64_solib_ops);
 
   /* Unwind kernel trap frames correctly.  */
   frame_unwind_prepend_unwinder (gdbarch, &amd64obsd_trapframe_unwind);
 }
 
-void
-_initialize_amd64obsd_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/amd64-ravenscar-thread.c ./gdb/amd64-ravenscar-thread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-ravenscar-thread.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amd64-ravenscar-thread.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,75 @@
+/* Ravenscar x86-64 target support.
+
+   Copyright (C) 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "gdbarch.h"
+#include "gdbcore.h"
+#include "regcache.h"
+#include "amd64-tdep.h"
+#include "inferior.h"
+#include "ravenscar-thread.h"
+#include "amd64-ravenscar-thread.h"
+
+/* x86-64 Ravenscar stores registers as:
+
+   type Context_Buffer is record
+      RIP    : System.Address;
+      RFLAGS : EFLAGS;
+      RSP    : System.Address;
+
+      RBX    : System.Address;
+      RBP    : System.Address;
+      R12    : System.Address;
+      R13    : System.Address;
+      R14    : System.Address;
+      R15    : System.Address;
+   end record;
+*/
+static const int register_layout[] =
+{
+  /* RAX */ -1,
+  /* RBX */ 3 * 8,
+  /* RCX */ -1,
+  /* RDX */ -1,
+  /* RSI */ -1,
+  /* RDI */ -1,
+  /* RBP */ 4 * 8,
+  /* RSP */ 2 * 8,
+  /* R8 */ -1,
+  /* R9 */ -1,
+  /* R10 */ -1,
+  /* R11 */ -1,
+  /* R12 */ 5 * 8,
+  /* R13 */ 6 * 8,
+  /* R14 */ 7 * 8,
+  /* R15 */ 8 * 8,
+  /* RIP */ 0 * 8,
+  /* EFLAGS */ 1 * 8,
+};
+
+/* The ravenscar_arch_ops vector for AMD64 targets.  */
+
+static struct ravenscar_arch_ops amd64_ravenscar_ops (register_layout);
+
+/* Register amd64_ravenscar_ops in GDBARCH.  */
+
+void
+register_amd64_ravenscar_ops (struct gdbarch *gdbarch)
+{
+  set_gdbarch_ravenscar_ops (gdbarch, &amd64_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.20200303/gdb/amd64-ravenscar-thread.h ./gdb/amd64-ravenscar-thread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-ravenscar-thread.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amd64-ravenscar-thread.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,27 @@
+/* Ravenscar x86-64 target support.
+
+   Copyright (C) 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_AMD64_RAVENSCAR_THREAD_H
+#define GDB_AMD64_RAVENSCAR_THREAD_H
+
+struct gdbarch;
+
+extern void register_amd64_ravenscar_ops (struct gdbarch *gdbarch);
+
+#endif /* GDB_AMD64_RAVENSCAR_THREAD_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.20200303/gdb/amd64-sol2-tdep.c ./gdb/amd64-sol2-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-sol2-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-sol2-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for AMD64 Solaris.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    Contributed by Joseph Myers, CodeSourcery, LLC.
 
@@ -19,7 +19,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/>.  */
 
-#include "defs.h"
 #include "frame.h"
 #include "gdbcore.h"
 #include "regcache.h"
@@ -63,26 +62,11 @@ 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.  */
 
 static CORE_ADDR
-amd64_sol2_mcontext_addr (struct frame_info *this_frame)
+amd64_sol2_mcontext_addr (const frame_info_ptr &this_frame)
 {
   CORE_ADDR sp, ucontext_addr;
 
@@ -95,7 +79,7 @@ amd64_sol2_mcontext_addr (struct frame_i
 static void
 amd64_sol2_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   tdep->gregset_reg_offset = amd64_sol2_gregset_reg_offset;
   tdep->gregset_num_regs = ARRAY_SIZE (amd64_sol2_gregset_reg_offset);
@@ -104,22 +88,18 @@ 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);
+  set_solib_svr4_ops (gdbarch, make_svr4_lp64_solib_ops);
 }
 
-void
-_initialize_amd64_sol2_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/amd64-tdep.c ./gdb/amd64-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for AMD64.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    Contributed by Jiri Smid, SuSE Labs.
 
@@ -19,18 +19,18 @@
    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 "extract-store-integer.h"
+#include "language.h"
 #include "opcode/i386.h"
 #include "dis-asm.h"
 #include "arch-utils.h"
-#include "block.h"
 #include "dummy-frame.h"
 #include "frame.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
 #include "inferior.h"
 #include "infrun.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "gdbcore.h"
 #include "objfiles.h"
 #include "regcache.h"
@@ -49,6 +49,8 @@
 #include "gdbsupport/byte-vector.h"
 #include "osabi.h"
 #include "x86-tdep.h"
+#include "amd64-ravenscar-thread.h"
+#include "gdbsupport/selftest.h"
 
 /* Note that the AMD64 architecture was previously known as x86-64.
    The latter is (forever) engraved into the canonical system name as
@@ -59,7 +61,7 @@
 
 /* Register information.  */
 
-static const char *amd64_register_names[] = 
+static const char * const amd64_register_names[] = 
 {
   "rax", "rbx", "rcx", "rdx", "rsi", "rdi", "rbp", "rsp",
 
@@ -77,7 +79,7 @@ static const char *amd64_register_names[
   "mxcsr",
 };
 
-static const char *amd64_ymm_names[] = 
+static const char * const amd64_ymm_names[] = 
 {
   "ymm0", "ymm1", "ymm2", "ymm3",
   "ymm4", "ymm5", "ymm6", "ymm7",
@@ -85,7 +87,7 @@ static const char *amd64_ymm_names[] =
   "ymm12", "ymm13", "ymm14", "ymm15"
 };
 
-static const char *amd64_ymm_avx512_names[] =
+static const char * const amd64_ymm_avx512_names[] =
 {
   "ymm16", "ymm17", "ymm18", "ymm19",
   "ymm20", "ymm21", "ymm22", "ymm23",
@@ -93,7 +95,7 @@ static const char *amd64_ymm_avx512_name
   "ymm28", "ymm29", "ymm30", "ymm31"
 };
 
-static const char *amd64_ymmh_names[] = 
+static const char * const amd64_ymmh_names[] = 
 {
   "ymm0h", "ymm1h", "ymm2h", "ymm3h",
   "ymm4h", "ymm5h", "ymm6h", "ymm7h",
@@ -101,7 +103,7 @@ static const char *amd64_ymmh_names[] =
   "ymm12h", "ymm13h", "ymm14h", "ymm15h"
 };
 
-static const char *amd64_ymmh_avx512_names[] =
+static const char * const amd64_ymmh_avx512_names[] =
 {
   "ymm16h", "ymm17h", "ymm18h", "ymm19h",
   "ymm20h", "ymm21h", "ymm22h", "ymm23h",
@@ -109,18 +111,13 @@ static const char *amd64_ymmh_avx512_nam
   "ymm28h", "ymm29h", "ymm30h", "ymm31h"
 };
 
-static const char *amd64_mpx_names[] =
-{
-  "bnd0raw", "bnd1raw", "bnd2raw", "bnd3raw", "bndcfgu", "bndstatus"
-};
-
-static const char *amd64_k_names[] =
+static const char * const amd64_k_names[] =
 {
   "k0", "k1", "k2", "k3",
   "k4", "k5", "k6", "k7"
 };
 
-static const char *amd64_zmmh_names[] =
+static const char * const amd64_zmmh_names[] =
 {
   "zmm0h", "zmm1h", "zmm2h", "zmm3h",
   "zmm4h", "zmm5h", "zmm6h", "zmm7h",
@@ -132,7 +129,7 @@ static const char *amd64_zmmh_names[] =
   "zmm28h", "zmm29h", "zmm30h", "zmm31h"
 };
 
-static const char *amd64_zmm_names[] =
+static const char * const amd64_zmm_names[] =
 {
   "zmm0", "zmm1", "zmm2", "zmm3",
   "zmm4", "zmm5", "zmm6", "zmm7",
@@ -144,14 +141,14 @@ static const char *amd64_zmm_names[] =
   "zmm28", "zmm29", "zmm30", "zmm31"
 };
 
-static const char *amd64_xmm_avx512_names[] = {
+static const char * const amd64_xmm_avx512_names[] = {
     "xmm16",  "xmm17",  "xmm18",  "xmm19",
     "xmm20",  "xmm21",  "xmm22",  "xmm23",
     "xmm24",  "xmm25",  "xmm26",  "xmm27",
     "xmm28",  "xmm29",  "xmm30",  "xmm31"
 };
 
-static const char *amd64_pkeys_names[] = {
+static const char * const amd64_pkeys_names[] = {
     "pkru"
 };
 
@@ -234,7 +231,28 @@ static int amd64_dwarf_regmap[] =
   /* Floating Point Control Registers.  */
   AMD64_MXCSR_REGNUM,
   AMD64_FCTRL_REGNUM,
-  AMD64_FSTAT_REGNUM
+  AMD64_FSTAT_REGNUM,
+
+  /* XMM16-XMM31.  */
+  AMD64_XMM16_REGNUM + 0, AMD64_XMM16_REGNUM + 1,
+  AMD64_XMM16_REGNUM + 2, AMD64_XMM16_REGNUM + 3,
+  AMD64_XMM16_REGNUM + 4, AMD64_XMM16_REGNUM + 5,
+  AMD64_XMM16_REGNUM + 6, AMD64_XMM16_REGNUM + 7,
+  AMD64_XMM16_REGNUM + 8, AMD64_XMM16_REGNUM + 9,
+  AMD64_XMM16_REGNUM + 10, AMD64_XMM16_REGNUM + 11,
+  AMD64_XMM16_REGNUM + 12, AMD64_XMM16_REGNUM + 13,
+  AMD64_XMM16_REGNUM + 14, AMD64_XMM16_REGNUM + 15,
+
+  /* Reserved.  */
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+
+  /* Mask Registers.  */
+  AMD64_K0_REGNUM + 0, AMD64_K0_REGNUM + 1,
+  AMD64_K0_REGNUM + 2, AMD64_K0_REGNUM + 3,
+  AMD64_K0_REGNUM + 4, AMD64_K0_REGNUM + 5,
+  AMD64_K0_REGNUM + 6, AMD64_K0_REGNUM + 7
 };
 
 static const int amd64_dwarf_regmap_len =
@@ -246,15 +264,14 @@ static const int amd64_dwarf_regmap_len
 static int
 amd64_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   int ymm0_regnum = tdep->ymm0_regnum;
   int regnum = -1;
 
   if (reg >= 0 && reg < amd64_dwarf_regmap_len)
     regnum = amd64_dwarf_regmap[reg];
 
-  if (ymm0_regnum >= 0
-	   && i386_xmm_regnum_p (gdbarch, regnum))
+  if (ymm0_regnum >= 0 && i386_xmm_regnum_p (gdbarch, regnum))
     regnum += ymm0_regnum - I387_XMM0_REGNUM (tdep);
 
   return regnum;
@@ -298,7 +315,7 @@ amd64_arch_reg_to_regnum (int reg)
 
 /* Register names for byte pseudo-registers.  */
 
-static const char *amd64_byte_names[] =
+static const char * const amd64_byte_names[] =
 {
   "al", "bl", "cl", "dl", "sil", "dil", "bpl", "spl",
   "r8l", "r9l", "r10l", "r11l", "r12l", "r13l", "r14l", "r15l",
@@ -310,7 +327,7 @@ static const char *amd64_byte_names[] =
 
 /* Register names for word pseudo-registers.  */
 
-static const char *amd64_word_names[] =
+static const char * const amd64_word_names[] =
 {
   "ax", "bx", "cx", "dx", "si", "di", "bp", "", 
   "r8w", "r9w", "r10w", "r11w", "r12w", "r13w", "r14w", "r15w"
@@ -318,7 +335,7 @@ static const char *amd64_word_names[] =
 
 /* Register names for dword pseudo-registers.  */
 
-static const char *amd64_dword_names[] =
+static const char * const amd64_dword_names[] =
 {
   "eax", "ebx", "ecx", "edx", "esi", "edi", "ebp", "esp", 
   "r8d", "r9d", "r10d", "r11d", "r12d", "r13d", "r14d", "r15d",
@@ -330,7 +347,7 @@ static const char *amd64_dword_names[] =
 static const char *
 amd64_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   if (i386_byte_regnum_p (gdbarch, regnum))
     return amd64_byte_names[regnum - tdep->al_regnum];
   else if (i386_zmm_regnum_p (gdbarch, regnum))
@@ -347,17 +364,11 @@ amd64_pseudo_register_name (struct gdbar
     return i386_pseudo_register_name (gdbarch, regnum);
 }
 
-static struct value *
-amd64_pseudo_register_read_value (struct gdbarch *gdbarch,
-				  readable_regcache *regcache,
+static value *
+amd64_pseudo_register_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
 				  int regnum)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  value *result_value = allocate_value (register_type (gdbarch, regnum));
-  VALUE_LVAL (result_value) = lval_register;
-  VALUE_REGNUM (result_value) = regnum;
-  gdb_byte *buf = value_contents_raw (result_value);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   if (i386_byte_regnum_p (gdbarch, regnum))
     {
@@ -367,52 +378,28 @@ amd64_pseudo_register_read_value (struct
       if (gpnum >= AMD64_NUM_LOWER_BYTE_REGS)
 	{
 	  gpnum -= AMD64_NUM_LOWER_BYTE_REGS;
-	  gdb_byte raw_buf[register_size (gdbarch, gpnum)];
 
 	  /* Special handling for AH, BH, CH, DH.  */
-	  register_status status = regcache->raw_read (gpnum, raw_buf);
-	  if (status == REG_VALID)
-	    memcpy (buf, raw_buf + 1, 1);
-	  else
-	    mark_value_bytes_unavailable (result_value, 0,
-					  TYPE_LENGTH (value_type (result_value)));
+	  return pseudo_from_raw_part (next_frame, regnum, gpnum, 1);
 	}
       else
-	{
-	  gdb_byte raw_buf[register_size (gdbarch, gpnum)];
-	  register_status status = regcache->raw_read (gpnum, raw_buf);
-	  if (status == REG_VALID)
-	    memcpy (buf, raw_buf, 1);
-	  else
-	    mark_value_bytes_unavailable (result_value, 0,
-					  TYPE_LENGTH (value_type (result_value)));
-	}
+	return pseudo_from_raw_part (next_frame, regnum, gpnum, 0);
     }
   else if (i386_dword_regnum_p (gdbarch, regnum))
     {
       int gpnum = regnum - tdep->eax_regnum;
-      gdb_byte raw_buf[register_size (gdbarch, gpnum)];
-      /* Extract (always little endian).  */
-      register_status status = regcache->raw_read (gpnum, raw_buf);
-      if (status == REG_VALID)
-	memcpy (buf, raw_buf, 4);
-      else
-	mark_value_bytes_unavailable (result_value, 0,
-				      TYPE_LENGTH (value_type (result_value)));
+
+      return pseudo_from_raw_part (next_frame, regnum, gpnum, 0);
     }
   else
-    i386_pseudo_register_read_into_value (gdbarch, regcache, regnum,
-					  result_value);
-
-  return result_value;
+    return i386_pseudo_register_read_value (gdbarch, next_frame, regnum);
 }
 
 static void
-amd64_pseudo_register_write (struct gdbarch *gdbarch,
-			     struct regcache *regcache,
-			     int regnum, const gdb_byte *buf)
+amd64_pseudo_register_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+			     int regnum, gdb::array_view<const gdb_byte> buf)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   if (i386_byte_regnum_p (gdbarch, regnum))
     {
@@ -421,41 +408,18 @@ amd64_pseudo_register_write (struct gdba
       if (gpnum >= AMD64_NUM_LOWER_BYTE_REGS)
 	{
 	  gpnum -= AMD64_NUM_LOWER_BYTE_REGS;
-	  gdb_byte raw_buf[register_size (gdbarch, gpnum)];
-
-	  /* Read ... AH, BH, CH, DH.  */
-	  regcache->raw_read (gpnum, raw_buf);
-	  /* ... Modify ... (always little endian).  */
-	  memcpy (raw_buf + 1, buf, 1);
-	  /* ... Write.  */
-	  regcache->raw_write (gpnum, raw_buf);
+	  pseudo_to_raw_part (next_frame, buf, gpnum, 1);
 	}
       else
-	{
-	  gdb_byte raw_buf[register_size (gdbarch, gpnum)];
-
-	  /* Read ...  */
-	  regcache->raw_read (gpnum, raw_buf);
-	  /* ... Modify ... (always little endian).  */
-	  memcpy (raw_buf, buf, 1);
-	  /* ... Write.  */
-	  regcache->raw_write (gpnum, raw_buf);
-	}
+	pseudo_to_raw_part (next_frame, buf, gpnum, 0);
     }
   else if (i386_dword_regnum_p (gdbarch, regnum))
     {
       int gpnum = regnum - tdep->eax_regnum;
-      gdb_byte raw_buf[register_size (gdbarch, gpnum)];
-
-      /* Read ...  */
-      regcache->raw_read (gpnum, raw_buf);
-      /* ... Modify ... (always little endian).  */
-      memcpy (raw_buf, buf, 4);
-      /* ... Write.  */
-      regcache->raw_write (gpnum, raw_buf);
+      pseudo_to_raw_part (next_frame, buf, gpnum, 0);
     }
   else
-    i386_pseudo_register_write (gdbarch, regcache, regnum, buf);
+    i386_pseudo_register_write (gdbarch, next_frame, regnum, buf);
 }
 
 /* Implement the 'ax_pseudo_register_collect' gdbarch method.  */
@@ -464,7 +428,7 @@ static int
 amd64_ax_pseudo_register_collect (struct gdbarch *gdbarch,
 				  struct agent_expr *ax, int regnum)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   if (i386_byte_regnum_p (gdbarch, regnum))
     {
@@ -546,27 +510,30 @@ 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 (const auto &field : type->fields ())
 	{
-	  struct type *subtype = check_typedef (TYPE_FIELD_TYPE (type, i));
-	  int bitpos = TYPE_FIELD_BITPOS (type, i);
-	  int align = type_align(subtype);
+	  struct type *subtype = check_typedef (field.type ());
 
 	  /* 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))
-	      || (TYPE_FIELD_BITSIZE (type, i) == 0
-		  && TYPE_LENGTH (subtype) == 0)
-	      || TYPE_FIELD_PACKED (type, i))
+	  if (field.is_static ()
+	      || (field.bitsize () == 0 && subtype->length () == 0)
+	      || field.is_packed ())
 	    continue;
 
+	  int bitpos = field.loc_bitpos ();
+
 	  if (bitpos % 8 != 0)
 	    return true;
 
+	  int align = type_align (subtype);
+	  if (align == 0)
+	    error (_("could not determine alignment of type"));
+
 	  int bytepos = bitpos / 8;
 	  if (bytepos % align != 0)
 	    return true;
@@ -587,28 +554,28 @@ 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));
-  int bitpos = bitoffset + TYPE_FIELD_BITPOS (type, i);
-  int pos = bitpos / 64;
+  struct type *subtype = check_typedef (type->field (i).type ());
   enum amd64_reg_class subclass[2];
-  int bitsize = TYPE_FIELD_BITSIZE (type, i);
-  int endpos;
+  int bitsize = type->field (i).bitsize ();
 
   if (bitsize == 0)
-    bitsize = TYPE_LENGTH (subtype) * 8;
-  endpos = (bitpos + bitsize - 1) / 64;
+    bitsize = subtype->length () * 8;
 
   /* Ignore static fields, or empty fields, for example nested
      empty structures.*/
-  if (field_is_static (&TYPE_FIELD (type, i)) || bitsize == 0)
+  if (type->field (i).is_static () || bitsize == 0)
     return;
 
-  if (TYPE_CODE (subtype) == TYPE_CODE_STRUCT
-      || TYPE_CODE (subtype) == TYPE_CODE_UNION)
+  int bitpos = bitoffset + type->field (i).loc_bitpos ();
+  int pos = bitpos / 64;
+  int endpos = (bitpos + bitsize - 1) / 64;
+
+  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;
     }
@@ -651,9 +618,20 @@ amd64_classify_aggregate_field (struct t
 static void
 amd64_classify_aggregate (struct type *type, enum amd64_reg_class theclass[2])
 {
-  /* 1. If the size of an object is larger than two eightbytes, or it has
-        unaligned fields, it has class memory.  */
-  if (TYPE_LENGTH (type) > 16 || amd64_has_unaligned_fields (type))
+  /* 1. If the size of an object is larger than two times eight bytes, or
+	it is a non-trivial C++ object, or it has unaligned fields, then it
+	has class memory.
+
+	It is important that the trivially_copyable check is before the
+	unaligned fields check, as C++ classes with virtual base classes
+	will have fields (for the virtual base classes) with non-constant
+	loc_bitpos attributes, which will cause an assert to trigger within
+	the unaligned field check.  As classes with virtual bases are not
+	trivially copyable, checking that first avoids this problem.  */
+  if (TYPE_HAS_DYNAMIC_LENGTH (type)
+      || type->length () > 16
+      || !language_pass_by_reference (type).trivially_copyable
+      || amd64_has_unaligned_fields (type))
     {
       theclass[0] = theclass[1] = AMD64_MEMORY;
       return;
@@ -663,17 +641,17 @@ amd64_classify_aggregate (struct type *t
   theclass[0] = theclass[1] = AMD64_NO_CLASS;
 
   /* 3. Each field of an object is classified recursively so that
-        always two fields are considered. The resulting class is
-        calculated according to the classes of the fields in the
-        eightbyte: */
+	always two fields are considered. The resulting class is
+	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));
+      struct type *subtype = check_typedef (type->target_type ());
 
       /* All fields in an array have the same type.  */
       amd64_classify (subtype, theclass);
-      if (TYPE_LENGTH (type) > 8 && theclass[1] == AMD64_NO_CLASS)
+      if (type->length () > 8 && theclass[1] == AMD64_NO_CLASS)
 	theclass[1] = theclass[0];
     }
   else
@@ -681,10 +659,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,8 +686,8 @@ 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);
-  int len = TYPE_LENGTH (type);
+  enum type_code code = type->code ();
+  int len = type->length ();
 
   theclass[0] = theclass[1] = AMD64_NO_CLASS;
 
@@ -724,10 +702,10 @@ amd64_classify (struct type *type, enum
       && (len == 1 || len == 2 || len == 4 || len == 8))
     theclass[0] = AMD64_INTEGER;
 
-  /* Arguments of types float, double, _Decimal32, _Decimal64 and __m64
-     are in class SSE.  */
+  /* Arguments of types _Float16, float, double, _Decimal32, _Decimal64 and
+     __m64 are in class SSE.  */
   else if ((code == TYPE_CODE_FLT || code == TYPE_CODE_DECFLOAT)
-	   && (len == 4 || len == 8))
+	   && (len == 2 || len == 4 || len == 8))
     /* FIXME: __m64 .  */
     theclass[0] = AMD64_SSE;
 
@@ -745,8 +723,8 @@ amd64_classify (struct type *type, enum
     /* Class X87 and X87UP.  */
     theclass[0] = AMD64_X87, theclass[1] = AMD64_X87UP;
 
-  /* Arguments of complex T where T is one of the types float or
-     double get treated as if they are implemented as:
+  /* Arguments of complex T - where T is one of the types _Float16, float or
+     double - get treated as if they are implemented as:
 
      struct complexT {
        T real;
@@ -754,7 +732,7 @@ amd64_classify (struct type *type, enum
      };
 
   */
-  else if (code == TYPE_CODE_COMPLEX && len == 8)
+  else if (code == TYPE_CODE_COMPLEX && (len == 8 || len == 4))
     theclass[0] = AMD64_SSE;
   else if (code == TYPE_CODE_COMPLEX && len == 16)
     theclass[0] = theclass[1] = AMD64_SSE;
@@ -773,17 +751,17 @@ amd64_classify (struct type *type, enum
 static enum return_value_convention
 amd64_return_value (struct gdbarch *gdbarch, struct value *function,
 		    struct type *type, struct regcache *regcache,
-		    gdb_byte *readbuf, const gdb_byte *writebuf)
+		    struct value **read_value, const gdb_byte *writebuf)
 {
   enum amd64_reg_class theclass[2];
-  int len = TYPE_LENGTH (type);
+  int len = type->length ();
   static int integer_regnum[] = { AMD64_RAX_REGNUM, AMD64_RDX_REGNUM };
   static int sse_regnum[] = { AMD64_XMM0_REGNUM, AMD64_XMM1_REGNUM };
   int integer_reg = 0;
   int sse_reg = 0;
   int i;
 
-  gdb_assert (!(readbuf && writebuf));
+  gdb_assert (!(read_value && writebuf));
 
   /* 1. Classify the return type with the classification algorithm.  */
   amd64_classify (type, theclass);
@@ -798,22 +776,29 @@ amd64_return_value (struct gdbarch *gdba
   if (theclass[0] == AMD64_MEMORY)
     {
       /* As indicated by the comment above, the ABI guarantees that we
-         can always find the return value just after the function has
-         returned.  */
+	 can always find the return value just after the function has
+	 returned.  */
 
-      if (readbuf)
+      if (read_value != nullptr)
 	{
 	  ULONGEST addr;
 
 	  regcache_raw_read_unsigned (regcache, AMD64_RAX_REGNUM, &addr);
-	  read_memory (addr, readbuf, TYPE_LENGTH (type));
+	  *read_value = value_at_non_lval (type, addr);
 	}
 
       return RETURN_VALUE_ABI_RETURNS_ADDRESS;
     }
 
+  gdb_byte *readbuf = nullptr;
+  if (read_value != nullptr)
+    {
+      *read_value = value::allocate (type);
+      readbuf = (*read_value)->contents_raw ().data ();
+    }
+
   /* 8. If the class is COMPLEX_X87, the real part of the value is
-        returned in %st0 and the imaginary part in %st1.  */
+	returned in %st0 and the imaginary part in %st1.  */
   if (theclass[0] == AMD64_COMPLEX_X87)
     {
       if (readbuf)
@@ -854,7 +839,7 @@ amd64_return_value (struct gdbarch *gdba
 
 	case AMD64_SSE:
 	  /* 4. If the class is SSE, the next available SSE register
-             of the sequence %xmm0, %xmm1 is used.  */
+	     of the sequence %xmm0, %xmm1 is used.  */
 	  regnum = sse_regnum[sse_reg++];
 	  break;
 
@@ -868,7 +853,7 @@ amd64_return_value (struct gdbarch *gdba
 
 	case AMD64_X87:
 	  /* 6. If the class is X87, the value is returned on the X87
-             stack in %st0 as 80-bit x87 number.  */
+	     stack in %st0 as 80-bit x87 number.  */
 	  regnum = AMD64_ST0_REGNUM;
 	  if (writebuf)
 	    i387_return_value (gdbarch, regcache);
@@ -876,7 +861,7 @@ amd64_return_value (struct gdbarch *gdba
 
 	case AMD64_X87UP:
 	  /* 7. If the class is X87UP, the value is returned together
-             with the previous X87 value in %st0.  */
+	     with the previous X87 value in %st0.  */
 	  gdb_assert (i > 0 && theclass[0] == AMD64_X87);
 	  regnum = AMD64_ST0_REGNUM;
 	  offset = 8;
@@ -939,8 +924,8 @@ if (return_method == return_method_struc
 
   for (i = 0; i < nargs; i++)
     {
-      struct type *type = value_type (args[i]);
-      int len = TYPE_LENGTH (type);
+      struct type *type = args[i]->type ();
+      int len = type->length ();
       enum amd64_reg_class theclass[2];
       int needed_integer_regs = 0;
       int needed_sse_regs = 0;
@@ -950,7 +935,7 @@ if (return_method == return_method_struc
       amd64_classify (type, theclass);
 
       /* Calculate the number of integer and SSE registers needed for
-         this argument.  */
+	 this argument.  */
       for (j = 0; j < 2; j++)
 	{
 	  if (theclass[j] == AMD64_INTEGER)
@@ -960,7 +945,7 @@ if (return_method == return_method_struc
 	}
 
       /* Check whether enough registers are available, and if the
-         argument should be passed in registers at all.  */
+	 argument should be passed in registers at all.  */
       if (integer_reg + needed_integer_regs > ARRAY_SIZE (integer_regnum)
 	  || sse_reg + needed_sse_regs > ARRAY_SIZE (sse_regnum)
 	  || (needed_integer_regs == 0 && needed_sse_regs == 0))
@@ -972,7 +957,7 @@ if (return_method == return_method_struc
       else
 	{
 	  /* The argument will be passed in registers.  */
-	  const gdb_byte *valbuf = value_contents (args[i]);
+	  const gdb_byte *valbuf = args[i]->contents ().data ();
 	  gdb_byte buf[8];
 
 	  gdb_assert (len <= 16);
@@ -1023,9 +1008,9 @@ if (return_method == return_method_struc
   /* Write out the arguments to the stack.  */
   for (i = 0; i < num_stack_args; i++)
     {
-      struct type *type = value_type (stack_args[i]);
-      const gdb_byte *valbuf = value_contents (stack_args[i]);
-      int len = TYPE_LENGTH (type);
+      struct type *type = stack_args[i]->type ();
+      const gdb_byte *valbuf = stack_args[i]->contents ().data ();
+      int len = type->length ();
 
       write_memory (sp + element * 8, valbuf, len);
       element += ((len + 7) / 8);
@@ -1049,13 +1034,6 @@ amd64_push_dummy_call (struct gdbarch *g
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   gdb_byte buf[8];
 
-  /* BND registers can be in arbitrary values at the moment of the
-     inferior call.  This can cause boundary violations that are not
-     due to a real bug or even desired by the user.  The best to be done
-     is set the BND registers to allow access to the whole memory, INIT
-     state, before pushing the inferior call.   */
-  i387_reset_bnd_regs (gdbarch, regcache);
-
   /* Pass arguments.  */
   sp = amd64_push_arguments (regcache, nargs, args, sp, return_method);
 
@@ -1102,9 +1080,10 @@ struct amd64_insn
   gdb_byte *raw_insn;
 };
 
-struct amd64_displaced_step_closure : public displaced_step_closure
+struct amd64_displaced_step_copy_insn_closure
+  : public displaced_step_copy_insn_closure
 {
-  amd64_displaced_step_closure (int insn_buf_len)
+  amd64_displaced_step_copy_insn_closure (int insn_buf_len)
   : insn_buf (insn_buf_len, 0)
   {}
 
@@ -1178,6 +1157,14 @@ rex_prefix_p (gdb_byte pfx)
   return REX_PREFIX_P (pfx);
 }
 
+/* True if PFX is the start of the 2-byte REX2 prefix.  */
+
+static bool
+rex2_prefix_p (gdb_byte pfx)
+{
+  return pfx == REX2_OPCODE;
+}
+
 /* True if PFX is the start of the 2-byte VEX prefix.  */
 
 static bool
@@ -1194,6 +1181,23 @@ vex3_prefix_p (gdb_byte pfx)
   return pfx == 0xc4;
 }
 
+/* True if PFX is the start of an XOP prefix.  */
+
+static bool
+xop_prefix_p (const gdb_byte *pfx)
+{
+  gdb_byte m = pfx[1] & 0x1f;
+  return pfx[0] == 0x8f && m >= 8;
+}
+
+/* Return true if PFX is the start of the 4-byte EVEX prefix.  */
+
+static bool
+evex_prefix_p (gdb_byte pfx)
+{
+  return pfx == 0x62;
+}
+
 /* Skip the legacy instruction prefixes in INSN.
    We assume INSN is properly sentineled so we don't have to worry
    about falling off the end of the buffer.  */
@@ -1227,31 +1231,38 @@ amd64_skip_prefixes (gdb_byte *insn)
   return insn;
 }
 
-/* Return an integer register (other than RSP) that is unused as an input
-   operand in INSN.
-   In order to not require adding a rex prefix if the insn doesn't already
-   have one, the result is restricted to RAX ... RDI, sans RSP.
-   The register numbering of the result follows architecture ordering,
-   e.g. RDI = 7.  */
+/* Return true if the MODRM byte of an insn indicates that the insn is
+   rip-relative.  */
 
-static int
-amd64_get_unused_input_int_reg (const struct amd64_insn *details)
+static bool
+rip_relative_p (gdb_byte modrm)
+{
+  gdb_byte mod = MODRM_MOD_FIELD (modrm);
+  gdb_byte rm = MODRM_RM_FIELD (modrm);
+
+  return mod == 0 && rm == 0x05;
+}
+
+/* Return a register mask for the integer registers that are used as an input
+   operand in INSN.  If !ASSUMPTIONS, only return the registers we actually
+   found, for the benefit of self tests.  */
+
+static uint32_t
+amd64_get_used_input_int_regs (const struct amd64_insn *details,
+			       bool assumptions = true)
 {
   /* 1 bit for each reg */
-  int used_regs_mask = 0;
+  uint32_t used_regs_mask = 0;
 
-  /* There can be at most 3 int regs used as inputs in an insn, and we have
-     7 to choose from (RAX ... RDI, sans RSP).
-     This allows us to take a conservative approach and keep things simple.
-     E.g. By avoiding RAX, we don't have to specifically watch for opcodes
-     that implicitly specify RAX.  */
-
-  /* Avoid RAX.  */
-  used_regs_mask |= 1 << EAX_REG_NUM;
-  /* Similarily avoid RDX, implicit operand in divides.  */
-  used_regs_mask |= 1 << EDX_REG_NUM;
-  /* Avoid RSP.  */
-  used_regs_mask |= 1 << ESP_REG_NUM;
+  if (assumptions)
+    {
+      /* Assume RAX is used.  If not, we'd have to detect opcodes that implicitly
+	 use RAX.  */
+      used_regs_mask |= 1 << EAX_REG_NUM;
+      /* Assume RDX is used.  If not, we'd have to detect opcodes that implicitly
+	 use RDX, like divides.  */
+      used_regs_mask |= 1 << EDX_REG_NUM;
+    }
 
   /* If the opcode is one byte long and there's no ModRM byte,
      assume the opcode specifies a register.  */
@@ -1277,28 +1288,42 @@ amd64_get_unused_input_int_reg (const st
 	  used_regs_mask |= 1 << base;
 	  used_regs_mask |= 1 << idx;
 	}
-      else
+      else if (!rip_relative_p (modrm))
 	{
 	  used_regs_mask |= 1 << rm;
 	}
     }
 
   gdb_assert (used_regs_mask < 256);
-  gdb_assert (used_regs_mask != 255);
+  return used_regs_mask;
+}
+
+/* Return an integer register in ALLOWED_REGS_MASK that is unused as an input
+   operand in INSN.  The register numbering of the result follows architecture
+   ordering, e.g. RDI = 7.  Return -1 if no register can be found.  */
+
+static int
+amd64_get_unused_input_int_reg (const struct amd64_insn *details,
+				uint32_t allowed_regs_mask)
+{
+  /* 1 bit for each reg */
+  uint32_t used_regs_mask = amd64_get_used_input_int_regs (details);
 
   /* Finally, find a free reg.  */
   {
     int i;
 
-    for (i = 0; i < 8; ++i)
+    for (i = 0; i < 32; ++i)
       {
+	if (! (allowed_regs_mask & (1 << i)))
+	  continue;
+
 	if (! (used_regs_mask & (1 << i)))
 	  return i;
       }
-
-    /* We shouldn't get here.  */
-    internal_error (__FILE__, __LINE__, _("unable to find free reg"));
   }
+
+  return -1;
 }
 
 /* Extract the details of INSN that we need.  */
@@ -1325,21 +1350,113 @@ amd64_get_insn_details (gdb_byte *insn,
       details->enc_prefix_offset = insn - start;
       ++insn;
     }
+  else if (rex2_prefix_p (*insn))
+    {
+      details->enc_prefix_offset = insn - start;
+      insn += 2;
+    }
   else if (vex2_prefix_p (*insn))
     {
-      /* Don't record the offset in this case because this prefix has
-	 no REX.B equivalent.  */
+      details->enc_prefix_offset = insn - start;
       insn += 2;
     }
-  else if (vex3_prefix_p (*insn))
+  else if (vex3_prefix_p (*insn) || xop_prefix_p (insn))
     {
       details->enc_prefix_offset = insn - start;
       insn += 3;
     }
+  else if (evex_prefix_p (*insn))
+    {
+      details->enc_prefix_offset = insn - start;
+      insn += 4;
+    }
+  gdb_byte *prefix = (details->enc_prefix_offset == -1
+		      ? nullptr
+		      : &start[details->enc_prefix_offset]);
 
   details->opcode_offset = insn - start;
 
-  if (*insn == TWO_BYTE_OPCODE_ESCAPE)
+  if (prefix != nullptr && rex2_prefix_p (*prefix))
+    {
+      bool m = (prefix[1] & (REX2_M << 4)) != 0;
+      if (!m)
+	{
+	  need_modrm = onebyte_has_modrm[*insn];
+	  details->opcode_len = 1;
+	}
+      else
+	{
+	  need_modrm = twobyte_has_modrm[*insn];
+	  details->opcode_len = 2;
+	}
+    }
+  else if (prefix != nullptr && vex2_prefix_p (*prefix))
+    {
+      /* All VEX2 instructions need ModR/M, except vzeroupper/vzeroall.  */
+      need_modrm = *insn != 0x77 ? 1 : 0;
+      details->opcode_len = 2;
+    }
+  else if (prefix != nullptr && vex3_prefix_p (*prefix))
+    {
+      gdb_byte m = prefix[1] & 0x1f;
+      if (m == 0)
+	{
+	  /* Todo: Xeon Phi-specific JKZD/JKNZD.  */
+	  return;
+	}
+      else if (m == 1)
+	{
+	  /* Escape 0x0f.  All VEX3 instructions in this map need ModR/M,
+	     except vzeroupper/vzeroall.  */
+	  need_modrm = *insn != 0x77 ? 1 : 0;
+	  details->opcode_len = 2;
+	}
+      else if (m == 2 || m == 3)
+	{
+	  /* Escape 0x0f 0x38 or 0x0f 0x3a.  All VEX3 instructions in
+	     this map need ModR/M.  */
+	  need_modrm = 1;
+	  details->opcode_len = 3;
+	}
+      else if (m == 7)
+	{
+	  /* Todo: URDMSR/UWRMSR instructions.  */
+	  return;
+	}
+      else
+	{
+	  /* Unknown opcode map.  */
+	  return;
+	}
+    }
+  else if (prefix != nullptr && evex_prefix_p (*prefix))
+    {
+      /* All EVEX instructions need ModR/M.  */
+      need_modrm = 1;
+
+      gdb_byte m = prefix[1] & 0x7;
+      if (m == 1)
+	{
+	  /* Escape 0x0f.  */
+	  details->opcode_len = 2;
+	}
+      else if (m == 2 || m == 3)
+	{
+	  /* Escape 0x0f 0x38 or 0x0f 0x3a.  */
+	  details->opcode_len = 3;
+	}
+      else
+	{
+	  /* Unknown opcode map.  */
+	  return;
+	}
+    }
+  else if (prefix != nullptr && xop_prefix_p (prefix))
+    {
+      details->opcode_len = 1;
+      need_modrm = 1;
+    }
+  else if (*insn == TWO_BYTE_OPCODE_ESCAPE)
     {
       /* Two or three-byte opcode.  */
       ++insn;
@@ -1376,78 +1493,118 @@ amd64_get_insn_details (gdb_byte *insn,
     }
 }
 
+/* Convert a %rip-relative INSN to use BASEREG+disp addressing, leaving
+   displacement unchanged.  */
+
+static void
+fixup_riprel (const struct amd64_insn &details, gdb_byte *insn,
+	      int basereg)
+{
+  /* Position of the not-B bit in the 3-byte VEX prefix (in byte 1).  */
+  static constexpr gdb_byte VEX3_NOT_B = 0x20;
+
+  /* Position of the B3 and B4 bits in the REX2 prefix (in byte 1).  */
+  static constexpr gdb_byte REX2_B = 0x11;
+
+  /* Position of the not-B3 bit in the EVEX prefix (in byte 1).  */
+  static constexpr gdb_byte EVEX_NOT_B = VEX3_NOT_B;
+
+  /* Position of the B4 bit in the EVEX prefix (in byte 1).  */
+  static constexpr gdb_byte EVEX_B = 0x08;
+
+  /* REX.B should be unset (VEX.!B set) as we were using rip-relative
+     addressing, but ensure it's unset (set for VEX) anyway, tmp_regno
+     is not r8-r15.  */
+  if (details.enc_prefix_offset != -1)
+    {
+      gdb_byte *pfx = &insn[details.enc_prefix_offset];
+      if (rex_prefix_p (pfx[0]))
+	pfx[0] &= ~REX_B;
+      else if (rex2_prefix_p (pfx[0]))
+	pfx[1] &= ~REX2_B;
+      else if (vex2_prefix_p (pfx[0]))
+	{
+	  /* VEX.!B is set implicitly.  */
+	}
+      else if (vex3_prefix_p (pfx[0]) || xop_prefix_p (pfx))
+	pfx[1] |= VEX3_NOT_B;
+      else if (evex_prefix_p (pfx[0]))
+	{
+	  pfx[1] |= EVEX_NOT_B;
+	  pfx[1] &= ~EVEX_B;
+	}
+      else
+	gdb_assert_not_reached ("unhandled prefix");
+    }
+
+  int modrm_offset = details.modrm_offset;
+  /* Convert the ModRM field to be base+disp.  */
+  insn[modrm_offset] &= ~0xc7;
+  insn[modrm_offset] |= 0x80 + basereg;
+}
+
 /* Update %rip-relative addressing in INSN.
 
    %rip-relative addressing only uses a 32-bit displacement.
    32 bits is not enough to be guaranteed to cover the distance between where
    the real instruction is and where its copy is.
    Convert the insn to use base+disp addressing.
-   We set base = pc + insn_length so we can leave disp unchanged.  */
+   We set base = pc + insn_length so we can leave disp unchanged.
+   Return true if successful, false otherwise.  */
 
-static void
-fixup_riprel (struct gdbarch *gdbarch, amd64_displaced_step_closure *dsc,
+static bool
+fixup_riprel (struct gdbarch *gdbarch,
+	      amd64_displaced_step_copy_insn_closure *dsc,
 	      CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 {
   const struct amd64_insn *insn_details = &dsc->insn_details;
-  int modrm_offset = insn_details->modrm_offset;
-  gdb_byte *insn = insn_details->raw_insn + modrm_offset;
   CORE_ADDR rip_base;
   int insn_length;
   int arch_tmp_regno, tmp_regno;
   ULONGEST orig_value;
 
-  /* %rip+disp32 addressing mode, displacement follows ModRM byte.  */
-  ++insn;
-
   /* Compute the rip-relative address.	*/
   insn_length = gdb_buffered_insn_length (gdbarch, dsc->insn_buf.data (),
 					  dsc->insn_buf.size (), from);
   rip_base = from + insn_length;
 
-  /* We need a register to hold the address.
-     Pick one not used in the insn.
-     NOTE: arch_tmp_regno uses architecture ordering, e.g. RDI = 7.  */
-  arch_tmp_regno = amd64_get_unused_input_int_reg (insn_details);
-  tmp_regno = amd64_arch_reg_to_regnum (arch_tmp_regno);
+  /* We need a register to hold the address.  Pick one not used in the insn.
+     In order to not require adding a rex prefix if the insn doesn't already
+     have one, the range is restricted to RAX ... RDI, without RSP.
+     We avoid RSP, because when patched into in the modrm byte, it doesn't
+     indicate the use of the register, but instead the use of a SIB byte.  */
+  uint32_t allowed_regs_mask = 0xff & ~(1 << ESP_REG_NUM);
+  arch_tmp_regno
+    = amd64_get_unused_input_int_reg (insn_details, allowed_regs_mask);
+  if (arch_tmp_regno == -1)
+    return false;
 
-  /* Position of the not-B bit in the 3-byte VEX prefix (in byte 1).  */
-  static constexpr gdb_byte VEX3_NOT_B = 0x20;
+  fixup_riprel (dsc->insn_details, dsc->insn_buf.data (), arch_tmp_regno);
 
-  /* REX.B should be unset (VEX.!B set) as we were using rip-relative
-     addressing, but ensure it's unset (set for VEX) anyway, tmp_regno
-     is not r8-r15.  */
-  if (insn_details->enc_prefix_offset != -1)
-    {
-      gdb_byte *pfx = &dsc->insn_buf[insn_details->enc_prefix_offset];
-      if (rex_prefix_p (pfx[0]))
-	pfx[0] &= ~REX_B;
-      else if (vex3_prefix_p (pfx[0]))
-	pfx[1] |= VEX3_NOT_B;
-      else
-	gdb_assert_not_reached ("unhandled prefix");
-    }
+  /* Convert arch_tmp_regno, which uses architecture ordering (e.g. RDI = 7),
+     to GDB regnum.  */
+  tmp_regno = amd64_arch_reg_to_regnum (arch_tmp_regno);
 
   regcache_cooked_read_unsigned (regs, tmp_regno, &orig_value);
   dsc->tmp_regno = tmp_regno;
   dsc->tmp_save = orig_value;
   dsc->tmp_used = 1;
 
-  /* Convert the ModRM field to be base+disp.  */
-  dsc->insn_buf[modrm_offset] &= ~0xc7;
-  dsc->insn_buf[modrm_offset] |= 0x80 + arch_tmp_regno;
-
   regcache_cooked_write_unsigned (regs, tmp_regno, rip_base);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: %%rip-relative addressing used.\n"
-			"displaced: using temp reg %d, old value %s, new value %s\n",
-			dsc->tmp_regno, paddress (gdbarch, dsc->tmp_save),
-			paddress (gdbarch, rip_base));
+  displaced_debug_printf ("%%rip-relative addressing used.");
+  displaced_debug_printf ("using temp reg %d, old value %s, new value %s",
+			  dsc->tmp_regno, paddress (gdbarch, dsc->tmp_save),
+			  paddress (gdbarch, rip_base));
+  return true;
 }
 
-static void
+/* Fixup the insn in DSC->insn_buf, which was copied from address FROM to TO.
+   Return true if successful, false otherwise.  */
+
+static bool
 fixup_displaced_copy (struct gdbarch *gdbarch,
-		      amd64_displaced_step_closure *dsc,
+		      amd64_displaced_step_copy_insn_closure *dsc,
 		      CORE_ADDR from, CORE_ADDR to, struct regcache *regs)
 {
   const struct amd64_insn *details = &dsc->insn_details;
@@ -1456,16 +1613,18 @@ fixup_displaced_copy (struct gdbarch *gd
     {
       gdb_byte modrm = details->raw_insn[details->modrm_offset];
 
-      if ((modrm & 0xc7) == 0x05)
+      if (rip_relative_p (modrm))
 	{
 	  /* The insn uses rip-relative addressing.
 	     Deal with it.  */
-	  fixup_riprel (gdbarch, dsc, from, to, regs);
+	  return fixup_riprel (gdbarch, dsc, from, to, regs);
 	}
     }
+
+  return true;
 }
 
-struct displaced_step_closure *
+displaced_step_copy_insn_closure_up
 amd64_displaced_step_copy_insn (struct gdbarch *gdbarch,
 				CORE_ADDR from, CORE_ADDR to,
 				struct regcache *regs)
@@ -1474,8 +1633,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_copy_insn_closure> dsc
+    (new amd64_displaced_step_copy_insn_closure (len + fixup_sentinel_space));
   gdb_byte *buf = &dsc->insn_buf[0];
   struct amd64_insn *details = &dsc->insn_details;
 
@@ -1487,6 +1646,8 @@ amd64_displaced_step_copy_insn (struct g
   memset (buf + len, 0, fixup_sentinel_space);
 
   amd64_get_insn_details (buf, details);
+  if (details->opcode_len == -1)
+    return nullptr;
 
   /* GDB may get control back after the insn after the syscall.
      Presumably this is a kernel bug.
@@ -1500,18 +1661,17 @@ 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);
+  if (!fixup_displaced_copy (gdbarch, dsc.get (), from, to, regs))
+    return nullptr;
 
   write_memory (to, buf, len);
 
-  if (debug_displaced)
-    {
-      fprintf_unfiltered (gdb_stdlog, "displaced: copy %s->%s: ",
-			  paddress (gdbarch, from), paddress (gdbarch, to));
-      displaced_step_dump_bytes (gdb_stdlog, buf, len);
-    }
+  displaced_debug_printf ("copy %s->%s: %s",
+			  paddress (gdbarch, from), paddress (gdbarch, to),
+			  bytes_to_string (buf, len).c_str ());
 
-  return dsc;
+  /* This is a work around for a problem with g++ 4.8.  */
+  return displaced_step_copy_insn_closure_up (dsc.release ());
 }
 
 static int
@@ -1630,16 +1790,13 @@ amd64_classify_insn_at (struct gdbarch *
 			int (*pred) (const struct amd64_insn *))
 {
   struct amd64_insn details;
-  gdb_byte *buf;
-  int len, classification;
 
-  len = gdbarch_max_insn_length (gdbarch);
-  buf = (gdb_byte *) alloca (len);
+  gdb::byte_vector buf (gdbarch_max_insn_length (gdbarch));
 
-  read_code (addr, buf, len);
-  amd64_get_insn_details (buf, &details);
+  read_code (addr, buf.data (), buf.size ());
+  amd64_get_insn_details (buf.data (), &details);
 
-  classification = pred (&details);
+  int classification = pred (&details);
 
   return classification;
 }
@@ -1673,31 +1830,28 @@ amd64_insn_is_jump (struct gdbarch *gdba
 
 void
 amd64_displaced_step_fixup (struct gdbarch *gdbarch,
-			    struct displaced_step_closure *dsc_,
+			    struct displaced_step_copy_insn_closure *dsc_,
 			    CORE_ADDR from, CORE_ADDR to,
-			    struct regcache *regs)
+			    struct regcache *regs, bool completed_p)
 {
-  amd64_displaced_step_closure *dsc = (amd64_displaced_step_closure *) dsc_;
+  amd64_displaced_step_copy_insn_closure *dsc
+    = (amd64_displaced_step_copy_insn_closure *) dsc_;
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   /* The offset we applied to the instruction's address.  */
   ULONGEST insn_offset = to - from;
   gdb_byte *insn = dsc->insn_buf.data ();
   const struct amd64_insn *insn_details = &dsc->insn_details;
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: fixup (%s, %s), "
-			"insn = 0x%02x 0x%02x ...\n",
-			paddress (gdbarch, from), paddress (gdbarch, to),
-			insn[0], insn[1]);
+  displaced_debug_printf ("fixup (%s, %s), insn = 0x%02x 0x%02x ...",
+			  paddress (gdbarch, from), paddress (gdbarch, to),
+			  insn[0], insn[1]);
 
   /* If we used a tmp reg, restore it.	*/
 
   if (dsc->tmp_used)
     {
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog, "displaced: restoring reg %d to %s\n",
-			    dsc->tmp_regno, paddress (gdbarch, dsc->tmp_save));
+      displaced_debug_printf ("restoring reg %d to %s",
+			      dsc->tmp_regno, paddress (gdbarch, dsc->tmp_save));
       regcache_cooked_write_unsigned (regs, dsc->tmp_regno, dsc->tmp_save);
     }
 
@@ -1713,14 +1867,14 @@ amd64_displaced_step_fixup (struct gdbar
      the displaced instruction; make it relative to the original insn.
      Well, signal handler returns don't need relocation either, but we use the
      value of %rip to recognize those; see below.  */
-  if (! amd64_absolute_jmp_p (insn_details)
-      && ! amd64_absolute_call_p (insn_details)
-      && ! amd64_ret_p (insn_details))
+  if (!completed_p
+      || (!amd64_absolute_jmp_p (insn_details)
+	  && !amd64_absolute_call_p (insn_details)
+	  && !amd64_ret_p (insn_details)))
     {
-      ULONGEST orig_rip;
       int insn_len;
 
-      regcache_cooked_read_unsigned (regs, AMD64_RIP_REGNUM, &orig_rip);
+      CORE_ADDR pc = regcache_read_pc (regs);
 
       /* A signal trampoline system call changes the %rip, resuming
 	 execution of the main program after the signal handler has
@@ -1737,33 +1891,24 @@ amd64_displaced_step_fixup (struct gdbar
 	 it unrelocated.  Goodness help us if there are PC-relative
 	 system calls.	*/
       if (amd64_syscall_p (insn_details, &insn_len)
-	  && orig_rip != to + insn_len
 	  /* GDB can get control back after the insn after the syscall.
-	     Presumably this is a kernel bug.
-	     Fixup ensures its a nop, we add one to the length for it.  */
-	  && orig_rip != to + insn_len + 1)
-	{
-	  if (debug_displaced)
-	    fprintf_unfiltered (gdb_stdlog,
-				"displaced: syscall changed %%rip; "
-				"not relocating\n");
-	}
+	     Presumably this is a kernel bug.  Fixup ensures it's a nop, we
+	     add one to the length for it.  */
+	  && (pc < to || pc > (to + insn_len + 1)))
+	displaced_debug_printf ("syscall changed %%rip; not relocating");
       else
 	{
-	  ULONGEST rip = orig_rip - insn_offset;
+	  CORE_ADDR rip = pc - insn_offset;
 
 	  /* If we just stepped over a breakpoint insn, we don't backup
-	     the pc on purpose; this is to match behaviour without
+	     the pc on purpose; this is to match behavior without
 	     stepping.  */
 
-	  regcache_cooked_write_unsigned (regs, AMD64_RIP_REGNUM, rip);
+	  regcache_write_pc (regs, rip);
 
-	  if (debug_displaced)
-	    fprintf_unfiltered (gdb_stdlog,
-				"displaced: "
-				"relocated %%rip from %s to %s\n",
-				paddress (gdbarch, orig_rip),
-				paddress (gdbarch, rip));
+	  displaced_debug_printf ("relocated %%rip from %s to %s",
+				  paddress (gdbarch, pc),
+				  paddress (gdbarch, rip));
 	}
     }
 
@@ -1775,7 +1920,7 @@ amd64_displaced_step_fixup (struct gdbar
   /* If the instruction was a call, the return address now atop the
      stack is the address following the copied instruction.  We need
      to make it the address following the original instruction.	 */
-  if (amd64_call_p (insn_details))
+  if (completed_p && amd64_call_p (insn_details))
     {
       ULONGEST rsp;
       ULONGEST retaddr;
@@ -1786,12 +1931,25 @@ amd64_displaced_step_fixup (struct gdbar
       retaddr = (retaddr - insn_offset) & 0xffffffffffffffffULL;
       write_memory_unsigned_integer (rsp, retaddr_len, byte_order, retaddr);
 
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog,
-			    "displaced: relocated return addr at %s "
-			    "to %s\n",
-			    paddress (gdbarch, rsp),
-			    paddress (gdbarch, retaddr));
+      displaced_debug_printf ("relocated return addr at %s to %s",
+			      paddress (gdbarch, rsp),
+			      paddress (gdbarch, retaddr));
+
+      /* If shadow stack is enabled, we need to correct the return address
+	 on the shadow stack too.  */
+      bool shadow_stack_enabled;
+      std::optional<CORE_ADDR> ssp
+	= gdbarch_get_shadow_stack_pointer (gdbarch, regs,
+					    shadow_stack_enabled);
+      if (shadow_stack_enabled)
+	{
+	  gdb_assert (ssp.has_value ());
+	  write_memory_unsigned_integer (*ssp, retaddr_len, byte_order,
+					 retaddr);
+	  displaced_debug_printf ("relocated shadow stack return addr at %s "
+				  "to %s", paddress (gdbarch, *ssp),
+				  paddress (gdbarch, retaddr));
+	}
     }
 }
 
@@ -1807,7 +1965,7 @@ rip_relative_offset (struct amd64_insn *
     {
       gdb_byte modrm = insn->raw_insn[insn->modrm_offset];
 
-      if ((modrm & 0xc7) == 0x05)
+      if (rip_relative_p (modrm))
 	{
 	  /* The displacement is found right after the ModRM byte.  */
 	  return insn->modrm_offset + 1;
@@ -1832,21 +1990,21 @@ amd64_relocate_instruction (struct gdbar
   int len = gdbarch_max_insn_length (gdbarch);
   /* Extra space for sentinels.  */
   int fixup_sentinel_space = len;
-  gdb_byte *buf = (gdb_byte *) xmalloc (len + fixup_sentinel_space);
+  gdb::byte_vector buf (len + fixup_sentinel_space);
   struct amd64_insn insn_details;
   int offset = 0;
   LONGEST rel32, newrel;
   gdb_byte *insn;
   int insn_length;
 
-  read_memory (oldloc, buf, len);
+  read_memory (oldloc, buf.data (), len);
 
   /* Set up the sentinel space so we don't have to worry about running
      off the end of the buffer.  An excessive number of leading prefixes
      could otherwise cause this.  */
-  memset (buf + len, 0, fixup_sentinel_space);
+  memset (buf.data () + len, 0, fixup_sentinel_space);
 
-  insn = buf;
+  insn = buf.data ();
   amd64_get_insn_details (insn, &insn_details);
 
   insn_length = gdb_buffered_insn_length (gdbarch, insn, len, oldloc);
@@ -1909,12 +2067,9 @@ amd64_relocate_instruction (struct gdbar
       newrel = (oldloc - *to) + rel32;
       store_signed_integer (insn + 1, 4, byte_order, newrel);
 
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog,
-			    "Adjusted insn rel32=%s at %s to"
-			    " rel32=%s at %s\n",
-			    hex_string (rel32), paddress (gdbarch, oldloc),
-			    hex_string (newrel), paddress (gdbarch, *to));
+      displaced_debug_printf ("adjusted insn rel32=%s at %s to rel32=%s at %s",
+			      hex_string (rel32), paddress (gdbarch, oldloc),
+			      hex_string (newrel), paddress (gdbarch, *to));
 
       /* Write the adjusted jump into its displaced location.  */
       append_insns (to, 5, insn);
@@ -1938,16 +2093,13 @@ amd64_relocate_instruction (struct gdbar
       rel32 = extract_signed_integer (insn + offset, 4, byte_order);
       newrel = (oldloc - *to) + rel32;
       store_signed_integer (insn + offset, 4, byte_order, newrel);
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog,
-			    "Adjusted insn rel32=%s at %s to"
-			    " rel32=%s at %s\n",
-			    hex_string (rel32), paddress (gdbarch, oldloc),
-			    hex_string (newrel), paddress (gdbarch, *to));
+      displaced_debug_printf ("adjusted insn rel32=%s at %s to rel32=%s at %s",
+			      hex_string (rel32), paddress (gdbarch, oldloc),
+			      hex_string (newrel), paddress (gdbarch, *to));
     }
 
   /* Write the adjusted instruction into its displaced location.  */
-  append_insns (to, insn_length, buf);
+  append_insns (to, insn_length, buf.data ());
 }
 
 
@@ -2010,6 +2162,30 @@ amd64_alloc_frame_cache (void)
   return cache;
 }
 
+/* Check whether PC is at "endbr64" instruction.  If so, return PC past it.
+   Otherwise, return PC passed to this function.  */
+
+static CORE_ADDR
+amd64_skip_endbr (gdbarch *gdbarch, CORE_ADDR pc)
+{
+  static const gdb_byte endbr64[4] = { 0xf3, 0x0f, 0x1e, 0xfa };
+
+  bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  gdb_byte buf[3];
+  gdb_byte 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)
+	return pc + 4;
+    }
+
+  return pc;
+}
+
 /* GCC 4.4 and later, can put code in the prologue to realign the
    stack pointer.  Check whether PC points to such code, and update
    CACHE accordingly.  Return the first instruction after the code
@@ -2038,8 +2214,8 @@ amd64_analyze_stack_align (CORE_ADDR pc,
 
      "andq $-XXX, %rsp" can be either 4 bytes or 7 bytes:
      
-     	0x48 0x83 0xe4 0xf0			andq $-16, %rsp
-     	0x48 0x81 0xe4 0x00 0xff 0xff 0xff	andq $-256, %rsp
+	0x48 0x83 0xe4 0xf0			andq $-16, %rsp
+	0x48 0x81 0xe4 0x00 0xff 0xff 0xff	andq $-256, %rsp
    */
 
   gdb_byte buf[18];
@@ -2202,13 +2378,13 @@ amd64_x32_analyze_stack_align (CORE_ADDR
 
      "andq $-XXX, %rsp" can be either 4 bytes or 7 bytes:
      
-     	0x48 0x83 0xe4 0xf0			andq $-16, %rsp
-     	0x48 0x81 0xe4 0x00 0xff 0xff 0xff	andq $-256, %rsp
+	0x48 0x83 0xe4 0xf0			andq $-16, %rsp
+	0x48 0x81 0xe4 0x00 0xff 0xff 0xff	andq $-256, %rsp
 
      "andl $-XXX, %esp" can be either 3 bytes or 6 bytes:
      
-     	0x83 0xe4 0xf0			andl $-16, %esp
-     	0x81 0xe4 0x00 0xff 0xff 0xff	andl $-256, %esp
+	0x83 0xe4 0xf0			andl $-16, %esp
+	0x81 0xe4 0x00 0xff 0xff 0xff	andl $-256, %esp
    */
 
   gdb_byte buf[19];
@@ -2347,30 +2523,18 @@ amd64_x32_analyze_stack_align (CORE_ADDR
   return std::min (pc + offset + 2, current_pc);
 }
 
-/* Do a limited analysis of the prologue at PC and update CACHE
-   accordingly.  Bail out early if CURRENT_PC is reached.  Return the
-   address where the analysis stopped.
-
-   We will handle only functions beginning with:
-
-      pushq %rbp        0x55
-      movq %rsp, %rbp   0x48 0x89 0xe5 (or 0x48 0x8b 0xec)
-
-   or (for the X32 ABI):
-
-      pushq %rbp        0x55
-      movl %esp, %ebp   0x89 0xe5 (or 0x8b 0xec)
-
-   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.  */
+/* Analyze frame setup instructions at PC on behalf of amd64_analyze_prologue
+   and update CACHE accordingly.  Bail out early if CURRENT_PC is reached.
+   Return the address where the analysis stopped.
+
+   See comment on amd64_analyze_prologue for the sequences handled.  The
+   movq/movl after the push of %rbp is considered optional.  'endbr64' is
+   handled before this function.  */
 
 static CORE_ADDR
-amd64_analyze_prologue (struct gdbarch *gdbarch,
-			CORE_ADDR pc, CORE_ADDR current_pc,
-			struct amd64_frame_cache *cache)
+amd64_analyze_frame_setup (gdbarch *gdbarch, CORE_ADDR pc,
+			   CORE_ADDR current_pc, amd64_frame_cache *cache)
 {
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   /* 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 };
@@ -2378,29 +2542,20 @@ amd64_analyze_prologue (struct gdbarch *
   static const gdb_byte mov_esp_ebp_1[2] = { 0x89, 0xe5 };
   static const gdb_byte mov_esp_ebp_2[2] = { 0x8b, 0xec };
 
+  bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   gdb_byte buf[3];
-  gdb_byte op;
-
-  if (current_pc <= pc)
-    return current_pc;
-
-  if (gdbarch_ptr_bit (gdbarch) == 32)
-    pc = amd64_x32_analyze_stack_align (pc, current_pc, cache);
-  else
-    pc = amd64_analyze_stack_align (pc, current_pc, cache);
+  gdb_byte op = read_code_unsigned_integer (pc, 1, byte_order);
 
-  op = read_code_unsigned_integer (pc, 1, byte_order);
-
-  if (op == 0x55)		/* pushq %rbp */
+  if (op == 0x55) /* pushq %rbp.  */
     {
       /* Take into account that we've executed the `pushq %rbp' that
-         starts this instruction sequence.  */
+	 starts this instruction sequence.  */
       cache->saved_regs[AMD64_RBP_REGNUM] = 0;
       cache->sp_offset += 8;
 
       /* If that's all, return now.  */
       if (current_pc <= pc + 1)
-        return current_pc;
+	return current_pc;
 
       read_code (pc + 1, buf, 3);
 
@@ -2413,7 +2568,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
@@ -2431,6 +2586,176 @@ amd64_analyze_prologue (struct gdbarch *
   return pc;
 }
 
+/* Check whether PC points at code pushing registers onto the stack.  If so,
+   update CACHE and return pc after those pushes or CURRENT_PC, whichever is
+   smaller.  Otherwise, return PC passed to this function.
+
+   In AMD64 prologue, we only expect GPRs being pushed onto the stack.  */
+
+static CORE_ADDR
+amd64_analyze_register_saves (CORE_ADDR pc, CORE_ADDR current_pc,
+			      amd64_frame_cache *cache)
+{
+  gdb_byte op;
+
+  /* Limit iterating to 16 GPRs available.  */
+  for (int i = 0; i < 16 && pc < current_pc; i++)
+    {
+      int reg = 0;
+      int pc_offset = 0;
+
+      if (target_read_code (pc, &op, 1) == -1)
+	return pc;
+
+      /* push %r8 - %r15 REX prefix.  We expect only REX.B to be set, but
+	 because, for example, REX.R would be "unused" if it were there,
+	 we mask opcode with 0xF1 in case compilers don't get rid of it
+	 "because it doesn't matter anyway".  */
+      if ((op & 0xF1) == 0x41)
+	{
+	  reg += 8;
+	  pc_offset = 1;
+
+	  if (target_read_code (pc + 1, &op, 1) == -1)
+	    return pc;
+	}
+
+      /* push %rax|%rcx|%rdx|%rbx|%rsp|%rbp|%rsi|%rdi
+
+	 or with 0x41 prefix:
+	 push %r8|%r9|%r10|%r11|%r12|%r13|%r14|%r15.  */
+      if (op < 0x50 || op > 0x57)
+	break;
+
+      reg += op - 0x50;
+
+      int regnum = amd64_arch_reg_to_regnum (reg);
+      cache->sp_offset += 8;
+      cache->saved_regs[regnum] = -cache->sp_offset;
+
+      pc += 1 + pc_offset;
+    }
+
+  return pc;
+}
+
+/* Check whether PC points at code allocating space on the stack.
+   If so, update CACHE and return pc past it or CURRENT_PC, whichever is
+   smaller.  Otherwise, return PC passed to this function.  */
+
+static CORE_ADDR
+amd64_analyze_stack_alloc (gdbarch *arch, CORE_ADDR pc, CORE_ADDR current_pc,
+			   amd64_frame_cache *cache)
+{
+  static const gdb_byte sub_imm8_rsp[]  = { 0x83, 0xec };
+  static const gdb_byte sub_imm32_rsp[] = { 0x81, 0xec };
+  static const gdb_byte lea_disp_rsp[]  = { 0x8D, 0x64 };
+
+  bfd_endian byte_order = gdbarch_byte_order (arch);
+  const CORE_ADDR start_pc = pc;
+
+  gdb_byte op;
+  if (target_read_code (pc, &op, 1) == -1)
+    return pc;
+
+  /* Check for REX.W, indicating 64-bit operand size (in this case, for
+     %rsp).  */
+  if (op == 0x48)
+    pc++;
+
+  if (current_pc <= pc)
+    return current_pc;
+
+  gdb_byte buf[2];
+  read_code (pc, buf, 2);
+
+  /* Check for instruction allocating space on the stack, which looks like
+       sub imm8/32, %rsp
+     or
+       lea -imm (%rsp), %rsp
+
+     and forward pc past it + update cache.  */
+
+  /* sub imm8, %rsp.  */
+  if (memcmp (buf, sub_imm8_rsp, 2) == 0)
+    {
+      /* Instruction is 3 bytes long.  The imm8 arg is the 3rd, single
+	 byte.  */
+      cache->sp_offset += read_code_integer (pc + 2, 1, byte_order);
+      return pc + 3;
+    }
+  /* sub imm32, %rsp.  */
+  else if (memcmp (buf, sub_imm32_rsp, 2) == 0)
+    {
+      /* Instruction is 6 bytes long.  The imm32 arg is stored in 4 bytes,
+	 starting from 3rd one.  */
+      cache->sp_offset += read_code_integer (pc + 2, 4, byte_order);
+      return pc + 6;
+    }
+  /* lea -imm (%rsp), %rsp.  */
+  else if (memcmp (buf, lea_disp_rsp, 2) == 0)
+    {
+      /* Instruction is 4 bytes long.  The imm arg is the 4th, single
+	 byte.  */
+      cache->sp_offset += -1 * read_code_integer (pc + 3, 1, byte_order);
+      return pc + 4;
+    }
+
+  return start_pc;
+}
+
+/* Do a limited analysis of the prologue at PC and update CACHE
+   accordingly.  Bail out early if CURRENT_PC is reached.  Return the
+   address where the analysis stopped.
+
+   We will handle only functions beginning with:
+
+      pushq %rbp	0x55
+      movq %rsp, %rbp   0x48 0x89 0xe5 (or 0x48 0x8b 0xec)
+
+   or (for the X32 ABI):
+
+      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.  */
+
+static CORE_ADDR
+amd64_analyze_prologue (gdbarch *gdbarch, CORE_ADDR pc, CORE_ADDR current_pc,
+			amd64_frame_cache *cache)
+{
+  if (current_pc <= pc)
+    return current_pc;
+
+  /* If generated, 'endbr64' will be placed before stack alignment too.  */
+  pc = amd64_skip_endbr (gdbarch, pc);
+  if (current_pc <= pc)
+    return current_pc;
+
+  if (gdbarch_ptr_bit (gdbarch) == 32)
+    pc = amd64_x32_analyze_stack_align (pc, current_pc, cache);
+  else
+    pc = amd64_analyze_stack_align (pc, current_pc, cache);
+
+  if (current_pc <= pc)
+    return current_pc;
+
+  pc = amd64_analyze_frame_setup (gdbarch, pc, current_pc, cache);
+  if (current_pc <= pc)
+    return current_pc;
+
+  pc = amd64_analyze_register_saves (pc, current_pc, cache);
+  if (current_pc <= pc)
+    return current_pc;
+
+  return amd64_analyze_stack_alloc (gdbarch, pc, current_pc, cache);
+}
+
 /* Work around false termination of prologue - GCC PR debug/48827.
 
    START_PC is the first instruction of a function, PC is its minimal already
@@ -2461,8 +2786,8 @@ amd64_skip_xmm_prologue (CORE_ADDR pc, C
 
   start_pc_sal = find_pc_sect_line (start_pc, NULL, 0);
   if (start_pc_sal.symtab == NULL
-      || producer_is_gcc_ge_4 (COMPUNIT_PRODUCER
-	   (SYMTAB_COMPUNIT (start_pc_sal.symtab))) < 6
+      || producer_is_gcc_ge_4 (start_pc_sal.symtab->compunit ()
+			       ->producer ()) < 6
       || start_pc_sal.pc != start_pc || pc >= start_pc_sal.end)
     return pc;
 
@@ -2470,7 +2795,7 @@ amd64_skip_xmm_prologue (CORE_ADDR pc, C
   if (next_sal.line != start_pc_sal.line)
     return pc;
 
-  /* START_PC can be from overlayed memory, ignored here.  */
+  /* START_PC can be from overlay memory, ignored here.  */
   if (target_read_code (next_sal.pc - 4, buf, sizeof (buf)) != 0)
     return pc;
 
@@ -2486,7 +2811,7 @@ amd64_skip_xmm_prologue (CORE_ADDR pc, C
     {
       /* 0x0f 0x29 0b??000101 movaps %xmmreg?,-0x??(%rbp) */
       if (buf[offset] != 0x0f || buf[offset + 1] != 0x29
-          || (buf[offset + 2] & 0x3f) != (xmmreg << 3 | 0x5))
+	  || (buf[offset + 2] & 0x3f) != (xmmreg << 3 | 0x5))
 	return pc;
 
       /* 0b01?????? */
@@ -2527,13 +2852,15 @@ 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 and newer Intel
+	 compilers to emit usable line notes.  */
       if (post_prologue_pc
 	  && (cust != NULL
-	      && COMPUNIT_PRODUCER (cust) != NULL
-	      && startswith (COMPUNIT_PRODUCER (cust), "clang ")))
-        return std::max (start_pc, post_prologue_pc);
+	      && cust->producer () != nullptr
+	      && (producer_is_llvm (cust->producer ())
+	      || producer_is_icc_ge_19 (cust->producer ()))))
+	return std::max (start_pc, post_prologue_pc);
     }
 
   amd64_init_frame_cache (&cache);
@@ -2549,7 +2876,7 @@ amd64_skip_prologue (struct gdbarch *gdb
 /* Normal frames.  */
 
 static void
-amd64_frame_cache_1 (struct frame_info *this_frame,
+amd64_frame_cache_1 (const frame_info_ptr &this_frame,
 		     struct amd64_frame_cache *cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2618,7 +2945,7 @@ amd64_frame_cache_1 (struct frame_info *
 }
 
 static struct amd64_frame_cache *
-amd64_frame_cache (struct frame_info *this_frame, void **this_cache)
+amd64_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct amd64_frame_cache *cache;
 
@@ -2642,7 +2969,7 @@ amd64_frame_cache (struct frame_info *th
 }
 
 static enum unwind_stop_reason
-amd64_frame_unwind_stop_reason (struct frame_info *this_frame,
+amd64_frame_unwind_stop_reason (const frame_info_ptr &this_frame,
 				void **this_cache)
 {
   struct amd64_frame_cache *cache =
@@ -2659,7 +2986,7 @@ amd64_frame_unwind_stop_reason (struct f
 }
 
 static void
-amd64_frame_this_id (struct frame_info *this_frame, void **this_cache,
+amd64_frame_this_id (const frame_info_ptr &this_frame, void **this_cache,
 		     struct frame_id *this_id)
 {
   struct amd64_frame_cache *cache =
@@ -2677,7 +3004,7 @@ amd64_frame_this_id (struct frame_info *
 }
 
 static struct value *
-amd64_frame_prev_register (struct frame_info *this_frame, void **this_cache,
+amd64_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache,
 			   int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2696,15 +3023,16 @@ amd64_frame_prev_register (struct frame_
   return frame_unwind_got_register (this_frame, regnum, regnum);
 }
 
-static const struct frame_unwind amd64_frame_unwind =
-{
+static const struct frame_unwind_legacy amd64_frame_unwind (
+  "amd64 prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   amd64_frame_unwind_stop_reason,
   amd64_frame_this_id,
   amd64_frame_prev_register,
   NULL,
   default_frame_sniffer
-};
+);
 
 /* Generate a bytecode expression to get the value of the saved PC.  */
 
@@ -2730,10 +3058,10 @@ amd64_gen_return_address (struct gdbarch
    on both platforms.  */
 
 static struct amd64_frame_cache *
-amd64_sigtramp_frame_cache (struct frame_info *this_frame, void **this_cache)
+amd64_sigtramp_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   struct amd64_frame_cache *cache;
   CORE_ADDR addr;
@@ -2770,7 +3098,7 @@ amd64_sigtramp_frame_cache (struct frame
 }
 
 static enum unwind_stop_reason
-amd64_sigtramp_frame_unwind_stop_reason (struct frame_info *this_frame,
+amd64_sigtramp_frame_unwind_stop_reason (const frame_info_ptr &this_frame,
 					 void **this_cache)
 {
   struct amd64_frame_cache *cache =
@@ -2783,7 +3111,7 @@ amd64_sigtramp_frame_unwind_stop_reason
 }
 
 static void
-amd64_sigtramp_frame_this_id (struct frame_info *this_frame,
+amd64_sigtramp_frame_this_id (const frame_info_ptr &this_frame,
 			      void **this_cache, struct frame_id *this_id)
 {
   struct amd64_frame_cache *cache =
@@ -2801,7 +3129,7 @@ amd64_sigtramp_frame_this_id (struct fra
 }
 
 static struct value *
-amd64_sigtramp_frame_prev_register (struct frame_info *this_frame,
+amd64_sigtramp_frame_prev_register (const frame_info_ptr &this_frame,
 				    void **this_cache, int regnum)
 {
   /* Make sure we've initialized the cache.  */
@@ -2812,10 +3140,11 @@ amd64_sigtramp_frame_prev_register (stru
 
 static int
 amd64_sigtramp_frame_sniffer (const struct frame_unwind *self,
-			      struct frame_info *this_frame,
+			      const frame_info_ptr &this_frame,
 			      void **this_cache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (get_frame_arch (this_frame));
+  gdbarch *arch = get_frame_arch (this_frame);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (arch);
 
   /* We shouldn't even bother if we don't have a sigcontext_addr
      handler.  */
@@ -2840,19 +3169,20 @@ amd64_sigtramp_frame_sniffer (const stru
   return 0;
 }
 
-static const struct frame_unwind amd64_sigtramp_frame_unwind =
-{
+static const struct frame_unwind_legacy amd64_sigtramp_frame_unwind (
+  "amd64 sigtramp",
   SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
   amd64_sigtramp_frame_unwind_stop_reason,
   amd64_sigtramp_frame_this_id,
   amd64_sigtramp_frame_prev_register,
   NULL,
   amd64_sigtramp_frame_sniffer
-};
+);
 
 
 static CORE_ADDR
-amd64_frame_base_address (struct frame_info *this_frame, void **this_cache)
+amd64_frame_base_address (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct amd64_frame_cache *cache =
     amd64_frame_cache (this_frame, this_cache);
@@ -2868,6 +3198,30 @@ static const struct frame_base amd64_fra
   amd64_frame_base_address
 };
 
+/* Implement core of the stack_frame_destroyed_p gdbarch method.  */
+
+static int
+amd64_stack_frame_destroyed_p_1 (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  gdb_byte insn;
+
+  std::optional<CORE_ADDR> epilogue = find_epilogue_using_linetable (pc);
+
+  /* PC is pointing at the next instruction to be executed. If it is
+     equal to the epilogue start, it means we're right before it starts,
+     so the stack is still valid.  */
+  if (epilogue)
+    return pc > epilogue;
+
+  if (target_read_memory (pc, &insn, 1))
+    return 0;   /* Can't read memory at pc.  */
+
+  if (insn != 0xc3)     /* 'ret' instruction.  */
+    return 0;
+
+  return 1;
+}
+
 /* Normal frames, but in a function epilogue.  */
 
 /* Implement the stack_frame_destroyed_p gdbarch method.
@@ -2879,36 +3233,68 @@ static const struct frame_base amd64_fra
 static int
 amd64_stack_frame_destroyed_p (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  gdb_byte insn;
-  struct compunit_symtab *cust;
+  struct compunit_symtab *cust = find_pc_compunit_symtab (pc);
 
-  cust = find_pc_compunit_symtab (pc);
-  if (cust != NULL && COMPUNIT_EPILOGUE_UNWIND_VALID (cust))
-    return 0;
+  if (cust != nullptr && cust->producer () != nullptr
+      && producer_is_llvm (cust->producer ()))
+    return amd64_stack_frame_destroyed_p_1 (gdbarch, pc);
 
-  if (target_read_memory (pc, &insn, 1))
-    return 0;   /* Can't read memory at pc.  */
+  return 0;
+}
 
-  if (insn != 0xc3)     /* 'ret' instruction.  */
+static int
+amd64_epilogue_frame_sniffer_1 (const struct frame_unwind *self,
+				const frame_info_ptr &this_frame,
+				void **this_prologue_cache, bool override_p)
+{
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  CORE_ADDR pc = get_frame_pc (this_frame);
+
+  if (frame_relative_level (this_frame) != 0)
+    /* We're not in the inner frame, so assume we're not in an epilogue.  */
     return 0;
 
-  return 1;
+  bool unwind_valid_p
+    = compunit_epilogue_unwind_valid (find_pc_compunit_symtab (pc));
+  if (override_p)
+    {
+      if (unwind_valid_p)
+	/* Don't override the symtab unwinders, skip
+	   "amd64 epilogue override".  */
+	return 0;
+    }
+  else
+    {
+      if (!unwind_valid_p)
+	/* "amd64 epilogue override" unwinder already ran, skip
+	   "amd64 epilogue".  */
+	return 0;
+    }
+
+  /* Check whether we're in an epilogue.  */
+  return amd64_stack_frame_destroyed_p_1 (gdbarch, pc);
+}
+
+static int
+amd64_epilogue_override_frame_sniffer (const struct frame_unwind *self,
+				       const frame_info_ptr &this_frame,
+				       void **this_prologue_cache)
+{
+  return amd64_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
+					 true);
 }
 
 static int
 amd64_epilogue_frame_sniffer (const struct frame_unwind *self,
-			      struct frame_info *this_frame,
+			      const frame_info_ptr &this_frame,
 			      void **this_prologue_cache)
 {
-  if (frame_relative_level (this_frame) == 0)
-    return amd64_stack_frame_destroyed_p (get_frame_arch (this_frame),
-					  get_frame_pc (this_frame));
-  else
-    return 0;
+  return amd64_epilogue_frame_sniffer_1 (self, this_frame, this_prologue_cache,
+					 false);
 }
 
 static struct amd64_frame_cache *
-amd64_epilogue_frame_cache (struct frame_info *this_frame, void **this_cache)
+amd64_epilogue_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
@@ -2923,18 +3309,18 @@ amd64_epilogue_frame_cache (struct frame
 
   try
     {
-      /* Cache base will be %esp plus cache->sp_offset (-8).  */
+      /* Cache base will be %rsp plus cache->sp_offset (-8).  */
       get_frame_register (this_frame, AMD64_RSP_REGNUM, buf);
       cache->base = extract_unsigned_integer (buf, 8,
 					      byte_order) + cache->sp_offset;
 
       /* Cache pc will be the frame func.  */
-      cache->pc = get_frame_pc (this_frame);
+      cache->pc = get_frame_func (this_frame);
 
-      /* The saved %esp will be at cache->base plus 16.  */
+      /* The previous value of %rsp is cache->base plus 16.  */
       cache->saved_sp = cache->base + 16;
 
-      /* The saved %eip will be at cache->base plus 8.  */
+      /* The saved %rip will be at cache->base plus 8.  */
       cache->saved_regs[AMD64_RIP_REGNUM] = cache->base + 8;
 
       cache->base_p = 1;
@@ -2949,7 +3335,7 @@ amd64_epilogue_frame_cache (struct frame
 }
 
 static enum unwind_stop_reason
-amd64_epilogue_frame_unwind_stop_reason (struct frame_info *this_frame,
+amd64_epilogue_frame_unwind_stop_reason (const frame_info_ptr &this_frame,
 					 void **this_cache)
 {
   struct amd64_frame_cache *cache
@@ -2962,7 +3348,7 @@ amd64_epilogue_frame_unwind_stop_reason
 }
 
 static void
-amd64_epilogue_frame_this_id (struct frame_info *this_frame,
+amd64_epilogue_frame_this_id (const frame_info_ptr &this_frame,
 			      void **this_cache,
 			      struct frame_id *this_id)
 {
@@ -2972,21 +3358,33 @@ amd64_epilogue_frame_this_id (struct fra
   if (!cache->base_p)
     (*this_id) = frame_id_build_unavailable_stack (cache->pc);
   else
-    (*this_id) = frame_id_build (cache->base + 8, cache->pc);
+    (*this_id) = frame_id_build (cache->base + 16, cache->pc);
 }
 
-static const struct frame_unwind amd64_epilogue_frame_unwind =
-{
+static const struct frame_unwind_legacy amd64_epilogue_override_frame_unwind (
+  "amd64 epilogue override",
+  NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
+  amd64_epilogue_frame_unwind_stop_reason,
+  amd64_epilogue_frame_this_id,
+  amd64_frame_prev_register,
+  NULL,
+  amd64_epilogue_override_frame_sniffer
+);
+
+static const struct frame_unwind_legacy amd64_epilogue_frame_unwind (
+  "amd64 epilogue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   amd64_epilogue_frame_unwind_stop_reason,
   amd64_epilogue_frame_this_id,
   amd64_frame_prev_register,
   NULL, 
   amd64_epilogue_frame_sniffer
-};
+);
 
 static struct frame_id
-amd64_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
+amd64_dummy_id (struct gdbarch *gdbarch, const frame_info_ptr &this_frame)
 {
   CORE_ADDR fp;
 
@@ -3013,7 +3411,7 @@ amd64_supply_fpregset (const struct regs
 		       int regnum, const void *fpregs, size_t len)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  const i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   gdb_assert (len >= tdep->sizeof_fpregset);
   amd64_supply_fxsave (regcache, regnum, fpregs);
@@ -3030,7 +3428,7 @@ amd64_collect_fpregset (const struct reg
 			int regnum, void *fpregs, size_t len)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  const struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  const i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   gdb_assert (len >= tdep->sizeof_fpregset);
   amd64_collect_fxsave (regcache, regnum, fpregs);
@@ -3049,13 +3447,14 @@ const struct regset amd64_fpregset =
    success.  */
 
 static int
-amd64_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
+amd64_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
 {
   gdb_byte buf[8];
   CORE_ADDR jb_addr;
   struct gdbarch *gdbarch = get_frame_arch (frame);
-  int jb_pc_offset = gdbarch_tdep (gdbarch)->jb_pc_offset;
-  int len = TYPE_LENGTH (builtin_type (gdbarch)->builtin_func_ptr);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
+  int jb_pc_offset = tdep->jb_pc_offset;
+  int len = builtin_type (gdbarch)->builtin_func_ptr->length ();
 
   /* If JB_PC_OFFSET is -1, we have no way to find out where the
      longjmp will land.	 */
@@ -3080,7 +3479,8 @@ static const int amd64_record_regmap[] =
   AMD64_R8_REGNUM, AMD64_R9_REGNUM, AMD64_R10_REGNUM, AMD64_R11_REGNUM,
   AMD64_R12_REGNUM, AMD64_R13_REGNUM, AMD64_R14_REGNUM, AMD64_R15_REGNUM,
   AMD64_RIP_REGNUM, AMD64_EFLAGS_REGNUM, AMD64_CS_REGNUM, AMD64_SS_REGNUM,
-  AMD64_DS_REGNUM, AMD64_ES_REGNUM, AMD64_FS_REGNUM, AMD64_GS_REGNUM
+  AMD64_DS_REGNUM, AMD64_ES_REGNUM, AMD64_FS_REGNUM, AMD64_GS_REGNUM,
+  AMD64_XMM0_REGNUM
 };
 
 /* Implement the "in_indirect_branch_thunk" gdbarch function.  */
@@ -3097,7 +3497,7 @@ void
 amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch,
 		const target_desc *default_tdesc)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   const struct target_desc *tdesc = info.target_desc;
   static const char *const stap_integer_prefixes[] = { "$", NULL };
   static const char *const stap_register_prefixes[] = { "%", NULL };
@@ -3142,13 +3542,6 @@ amd64_init_abi (struct gdbarch_info info
       tdep->ymm0h_regnum = AMD64_YMM0H_REGNUM;
     }
 
-  if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.mpx") != NULL)
-    {
-      tdep->mpx_register_names = amd64_mpx_names;
-      tdep->bndcfgu_regnum = AMD64_BNDCFGU_REGNUM;
-      tdep->bnd0r_regnum = AMD64_BND0R_REGNUM;
-    }
-
   if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.segments") != NULL)
     {
       tdep->fsbase_regnum = AMD64_FSBASE_REGNUM;
@@ -3161,6 +3554,9 @@ amd64_init_abi (struct gdbarch_info info
       tdep->num_pkeys_regs = 1;
     }
 
+  if (tdesc_find_feature (tdesc, "org.gnu.gdb.i386.pl3_ssp") != nullptr)
+    tdep->ssp_regnum = AMD64_PL3_SSP_REGNUM;
+
   tdep->num_byte_regs = 20;
   tdep->num_word_regs = 16;
   tdep->num_dword_regs = 16;
@@ -3169,8 +3565,7 @@ amd64_init_abi (struct gdbarch_info info
 
   set_gdbarch_pseudo_register_read_value (gdbarch,
 					  amd64_pseudo_register_read_value);
-  set_gdbarch_pseudo_register_write (gdbarch,
-				     amd64_pseudo_register_write);
+  set_gdbarch_pseudo_register_write (gdbarch, amd64_pseudo_register_write);
   set_gdbarch_ax_pseudo_register_collect (gdbarch,
 					  amd64_ax_pseudo_register_collect);
 
@@ -3219,7 +3614,7 @@ amd64_init_abi (struct gdbarch_info info
   set_gdbarch_register_to_value (gdbarch, i387_register_to_value);
   set_gdbarch_value_to_register (gdbarch, i387_value_to_register);
 
-  set_gdbarch_return_value (gdbarch, amd64_return_value);
+  set_gdbarch_return_value_as_value (gdbarch, amd64_return_value);
 
   set_gdbarch_skip_prologue (gdbarch, amd64_skip_prologue);
 
@@ -3228,9 +3623,11 @@ amd64_init_abi (struct gdbarch_info info
   set_gdbarch_dummy_id (gdbarch, amd64_dummy_id);
 
   /* Hook the function epilogue frame unwinder.  This unwinder is
-     appended to the list first, so that it supercedes the other
+     appended to the list first, so that it supersedes the other
      unwinders in function epilogues.  */
-  frame_unwind_prepend_unwinder (gdbarch, &amd64_epilogue_frame_unwind);
+  frame_unwind_prepend_unwinder (gdbarch, &amd64_epilogue_override_frame_unwind);
+
+  frame_unwind_append_unwinder (gdbarch, &amd64_epilogue_frame_unwind);
 
   /* Hook the prologue-based frame unwinders.  */
   frame_unwind_append_unwinder (gdbarch, &amd64_sigtramp_frame_unwind);
@@ -3243,6 +3640,8 @@ amd64_init_abi (struct gdbarch_info info
 
   set_gdbarch_gen_return_address (gdbarch, amd64_gen_return_address);
 
+  set_gdbarch_stack_frame_destroyed_p (gdbarch, amd64_stack_frame_destroyed_p);
+
   /* SystemTap variables and functions.  */
   set_gdbarch_stap_integer_prefixes (gdbarch, stap_integer_prefixes);
   set_gdbarch_stap_register_prefixes (gdbarch, stap_register_prefixes);
@@ -3260,6 +3659,8 @@ amd64_init_abi (struct gdbarch_info info
 
   set_gdbarch_in_indirect_branch_thunk (gdbarch,
 					amd64_in_indirect_branch_thunk);
+
+  register_amd64_ravenscar_ops (gdbarch);
 }
 
 /* Initialize ARCH for x86-64, no osabi.  */
@@ -3274,7 +3675,7 @@ amd64_none_init_abi (gdbarch_info info,
 static struct type *
 amd64_x32_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   switch (regnum - tdep->eax_regnum)
     {
@@ -3292,7 +3693,7 @@ void
 amd64_x32_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch,
 		    const target_desc *default_tdesc)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   amd64_init_abi (info, gdbarch, default_tdesc);
 
@@ -3312,35 +3713,270 @@ amd64_x32_none_init_abi (gdbarch_info in
 		      amd64_target_description (X86_XSTATE_SSE_MASK, true));
 }
 
-/* Return the target description for a specified XSAVE feature mask.  */
+/* See amd64-tdep.h.  */
 
 const struct target_desc *
-amd64_target_description (uint64_t xcr0, bool segments)
+amd64_target_description (uint64_t xstate_bv, bool segments)
 {
   static target_desc *amd64_tdescs \
-    [2/*AVX*/][2/*MPX*/][2/*AVX512*/][2/*PKRU*/][2/*segments*/] = {};
+    [2/*AVX*/][2/*AVX512*/][2/*PKRU*/][2/*CET_U*/][2/*segments*/] = {};
   target_desc **tdesc;
 
-  tdesc = &amd64_tdescs[(xcr0 & X86_XSTATE_AVX) ? 1 : 0]
-    [(xcr0 & X86_XSTATE_MPX) ? 1 : 0]
-    [(xcr0 & X86_XSTATE_AVX512) ? 1 : 0]
-    [(xcr0 & X86_XSTATE_PKRU) ? 1 : 0]
+  tdesc = &amd64_tdescs[(xstate_bv & X86_XSTATE_AVX) ? 1 : 0]
+    [(xstate_bv & X86_XSTATE_AVX512) ? 1 : 0]
+    [(xstate_bv & X86_XSTATE_PKRU) ? 1 : 0]
+    [(xstate_bv & X86_XSTATE_CET_U) ? 1 : 0]
     [segments ? 1 : 0];
 
   if (*tdesc == NULL)
-    *tdesc = amd64_create_target_description (xcr0, false, false,
-					      segments);
+    *tdesc = amd64_create_target_description (xstate_bv, false,
+					      false, segments);
 
   return *tdesc;
 }
 
-void
-_initialize_amd64_tdep (void)
+#if GDB_SELF_TEST
+
+namespace selftests {
+
+/* Recode a vex2 instruction into a vex3 instruction.  */
+
+static void
+vex2_to_vex3 (gdb::byte_vector &vex2, gdb::byte_vector &vex3)
+{
+  gdb_assert (vex2.size () >= 2);
+  gdb_assert (vex2[0] == 0xc5);
+
+  unsigned char r = vex2[1] >> 7;
+  unsigned char b = 0x1;
+  unsigned char x = 0x1;
+  unsigned char m = 0x1;
+  unsigned char w = 0x0;
+
+  vex3.resize (3);
+  vex3[0] = 0xc4;
+  vex3[1] = (r << 7) | (x << 6) | (b << 5) | m;
+  vex3[2] = (vex2[1] & ~0x80) | (w << 7);
+
+  std::copy (vex2.begin () + 2, vex2.end (),
+	     std::back_inserter (vex3));
+}
+
+/* Test vex2 to vex3.  */
+
+static void
+test_vex2_to_vex3 (void)
+{
+  /* INSN: vzeroall, vex2 prefix.  */
+  gdb::byte_vector vex2 = { 0xc5, 0xfc, 0x77 };
+
+  gdb::byte_vector vex3;
+  vex2_to_vex3 (vex2, vex3);
+
+  /* INSN: vzeroall, vex3 prefix.  */
+  gdb::byte_vector vex3_ref = { 0xc4, 0xe1, 0x7c, 0x77 };
+  SELF_CHECK (vex3 == vex3_ref);
+}
+
+/* Test amd64_get_insn_details.  */
+
+static void
+test_amd64_get_insn_details (void)
+{
+  struct amd64_insn details;
+  gdb::byte_vector insn, tmp;
+
+  /* INSN: add %eax,(%rcx).  */
+  insn = { 0x01, 0x01 };
+  amd64_get_insn_details (insn.data (), &details);
+  SELF_CHECK (details.opcode_len == 1);
+  SELF_CHECK (details.enc_prefix_offset == -1);
+  SELF_CHECK (details.opcode_offset == 0);
+  SELF_CHECK (details.modrm_offset == 1);
+  SELF_CHECK (amd64_get_used_input_int_regs (&details, false)
+	      == ((1 << EAX_REG_NUM) | (1 << ECX_REG_NUM)));
+  SELF_CHECK (rip_relative_offset (&details) == 0);
+
+  /* INSN: push %rax.  This exercises the "opcode specifies register" case in
+     amd64_get_used_input_int_regs.  */
+  insn = { 0x50 };
+  amd64_get_insn_details (insn.data (), &details);
+  SELF_CHECK (details.opcode_len == 1);
+  SELF_CHECK (details.enc_prefix_offset == -1);
+  SELF_CHECK (details.opcode_offset == 0);
+  SELF_CHECK (details.modrm_offset == -1);
+  SELF_CHECK (amd64_get_used_input_int_regs (&details, false)
+	      == ((1 << EAX_REG_NUM)));
+  SELF_CHECK (rip_relative_offset (&details) == 0);
+
+  /* INSN: lea 0x1e(%rip),%rdi, rex prefix.  */
+  insn = { 0x48, 0x8d, 0x3d, 0x1e, 0x00, 0x00, 0x00 };
+  amd64_get_insn_details (insn.data (), &details);
+  SELF_CHECK (details.opcode_len == 1);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 1);
+  SELF_CHECK (details.modrm_offset == 2);
+  SELF_CHECK (amd64_get_used_input_int_regs (&details, false)
+	      == (1 << EDI_REG_NUM));
+  SELF_CHECK (rip_relative_offset (&details) == 3);
+
+  /* INSN: lea 0x1e(%ecx),%rdi, rex prefix.  */
+  gdb::byte_vector updated_insn = { 0x48, 0x8d, 0xb9, 0x1e, 0x00, 0x00, 0x00 };
+  fixup_riprel (details, insn.data (), ECX_REG_NUM);
+  SELF_CHECK (insn == updated_insn);
+
+  gdb::byte_vector vex2, vex3;
+
+  /* INSN: vzeroall, vex2 prefix.  */
+  vex2 = { 0xc5, 0xfc, 0x77 };
+  amd64_get_insn_details (vex2.data (), &details);
+  SELF_CHECK (details.opcode_len == 2);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 2);
+  SELF_CHECK (details.modrm_offset == -1);
+
+  /* INSN: vzeroall, vex3 prefix.  */
+  vex2_to_vex3 (vex2, vex3);
+  amd64_get_insn_details (vex3.data (), &details);
+  SELF_CHECK (details.opcode_len == 2);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 3);
+  SELF_CHECK (details.modrm_offset == -1);
+
+  /* INSN: vzeroupper, vex2 prefix.  */
+  vex2 = { 0xc5, 0xf8, 0x77 };
+  amd64_get_insn_details (vex2.data (), &details);
+  SELF_CHECK (details.opcode_len == 2);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 2);
+  SELF_CHECK (details.modrm_offset == -1);
+
+  /* INSN: vzeroupper, vex3 prefix.  */
+  vex2_to_vex3 (vex2, vex3);
+  amd64_get_insn_details (vex3.data (), &details);
+  SELF_CHECK (details.opcode_len == 2);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 3);
+  SELF_CHECK (details.modrm_offset == -1);
+
+  /* INSN: vmovdqu 0x9(%rip),%ymm3, vex2 prefix.  */
+  vex2 = { 0xc5, 0xfe, 0x6f, 0x1d, 0x09, 0x00, 0x00, 0x00 };
+  amd64_get_insn_details (vex2.data (), &details);
+  SELF_CHECK (details.opcode_len == 2);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 2);
+  SELF_CHECK (details.modrm_offset == 3);
+
+  /* INSN: vmovdqu 0x9(%rcx),%ymm3, vex2 prefix.  */
+  gdb::byte_vector updated_vex2
+    = { 0xc5, 0xfe, 0x6f, 0x99, 0x09, 0x00, 0x00, 0x00 };
+  tmp = vex2;
+  fixup_riprel (details, tmp.data (), ECX_REG_NUM);
+  SELF_CHECK (tmp == updated_vex2);
+
+  /* INSN: vmovdqu 0x9(%rip),%ymm3, vex3 prefix.  */
+  vex2_to_vex3 (vex2, vex3);
+  amd64_get_insn_details (vex3.data (), &details);
+  SELF_CHECK (details.opcode_len == 2);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 3);
+  SELF_CHECK (details.modrm_offset == 4);
+
+  /* INSN: vmovdqu 0x9(%rcx),%ymm3, vex3 prefix.  */
+  gdb::byte_vector updated_vex3;
+  vex2_to_vex3 (updated_vex2, updated_vex3);
+  tmp = vex3;
+  fixup_riprel (details, tmp.data (), ECX_REG_NUM);
+  SELF_CHECK (tmp == updated_vex3);
+
+  /* INSN: lea 0x0(%eip),%r31d, rex2 prefix.  */
+  insn = { 0x67, 0xd5, 0x44, 0x8d, 0x3d, 0x00, 0x00, 0x00, 0x00 };
+  amd64_get_insn_details (insn.data (), &details);
+  SELF_CHECK (details.opcode_len == 1);
+  SELF_CHECK (details.enc_prefix_offset == 1);
+  SELF_CHECK (details.opcode_offset == 3);
+  SELF_CHECK (details.modrm_offset == 4);
+  /* This is incorrect, r31 is used instead of rdi, but currently that doesn't
+     matter.  */
+  SELF_CHECK (amd64_get_used_input_int_regs (&details, false)
+	      == (1 << EDI_REG_NUM));
+
+  /* INSN: lea 0x0(%ecx),%r31d, rex2 prefix.  */
+  updated_insn = { 0x67, 0xd5, 0x44, 0x8d, 0xb9, 0x00, 0x00, 0x00, 0x00 };
+  fixup_riprel (details, insn.data (), ECX_REG_NUM);
+  SELF_CHECK (insn == updated_insn);
+
+  /* INSN: vmovaps -0x400(%rip),%zmm0, evex prefix.  */
+  insn = { 0x62, 0xf1, 0x7c, 0x48, 0x28, 0x05, 0x00, 0xfc, 0xff, 0xff };
+  amd64_get_insn_details (insn.data (), &details);
+  SELF_CHECK (details.opcode_len == 2);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 4);
+  SELF_CHECK (details.modrm_offset == 5);
+
+  /* INSN: vmovaps -0x400(%rcx),%zmm0, evex prefix.  */
+  updated_insn
+    = { 0x62, 0xf1, 0x7c, 0x48, 0x28, 0x81, 0x00, 0xfc, 0xff, 0xff };
+  fixup_riprel (details, insn.data (), ECX_REG_NUM);
+  SELF_CHECK (insn == updated_insn);
+
+  /* INSN: vpblendw $0x7,%xmm4,%xmm6,%xmm2, vex3 prefix.  */
+  insn = { 0xc4, 0xe3, 0x49, 0x0e, 0xd4, 0x07 };
+  amd64_get_insn_details (insn.data (), &details);
+  SELF_CHECK (details.opcode_len == 3);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 3);
+  SELF_CHECK (details.modrm_offset == 4);
+
+  /* INSN: vpblendw $0x7,0xff(%rip),%ymm6,%ymm2, vex3 prefix.  */
+  insn = { 0xc4, 0xe3, 0x4d, 0x0e, 0x15, 0xff, 0x00, 0x00, 0x00, 0x07 };
+  amd64_get_insn_details (insn.data (), &details);
+  SELF_CHECK (details.opcode_len == 3);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 3);
+  SELF_CHECK (details.modrm_offset == 4);
+
+  /* INSN: vpblendw $0x7,0xff(%ecx),%ymm6,%ymm2, vex3 prefix.  */
+  fixup_riprel (details, insn.data (), ECX_REG_NUM);
+  updated_insn
+    = { 0xc4, 0xe3, 0x4d, 0x0e, 0x91, 0xff, 0x00, 0x00, 0x00, 0x07 };
+  SELF_CHECK (insn == updated_insn);
+
+  /* INSN: vpcomtrueuq 0x0(%rip),%xmm7,%xmm0, xop prefix.  */
+  insn = { 0x8f, 0xe8, 0x40, 0xef, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07 };
+  amd64_get_insn_details (insn.data (), &details);
+  SELF_CHECK (details.opcode_len == 1);
+  SELF_CHECK (details.enc_prefix_offset == 0);
+  SELF_CHECK (details.opcode_offset == 3);
+  SELF_CHECK (details.modrm_offset == 4);
+
+  /* INSN: vpcomtrueuq 0x0(%ecx),%xmm7,%xmm0, xop prefix.  */
+  fixup_riprel (details, insn.data (), ECX_REG_NUM);
+  updated_insn
+    = { 0x8f, 0xe8, 0x40, 0xef, 0x81, 0x00, 0x00, 0x00, 0x00, 0x07 };
+  SELF_CHECK (insn == updated_insn);
+}
+
+static void
+amd64_insn_decode (void)
+{
+  test_vex2_to_vex3 ();
+  test_amd64_get_insn_details ();
+}
+
+} // namespace selftests
+#endif /* GDB_SELF_TEST */
+
+INIT_GDB_FILE (amd64_tdep)
 {
   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64, GDB_OSABI_NONE,
- 			  amd64_none_init_abi);
+			  amd64_none_init_abi);
   gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32, GDB_OSABI_NONE,
- 			  amd64_x32_none_init_abi);
+			  amd64_x32_none_init_abi);
+#if GDB_SELF_TEST
+  selftests::register_test ("amd64-insn-decode",
+			    selftests::amd64_insn_decode);
+#endif
 }
 
 
@@ -3361,7 +3997,7 @@ amd64_supply_fxsave (struct regcache *re
 		     const void *fxsave)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   i387_supply_fxsave (regcache, regnum, fxsave);
 
@@ -3384,7 +4020,7 @@ amd64_supply_xsave (struct regcache *reg
 		    const void *xsave)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
 
   i387_supply_xsave (regcache, regnum, xsave);
 
@@ -3419,7 +4055,7 @@ amd64_collect_fxsave (const struct regca
 		      void *fxsave)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   gdb_byte *regs = (gdb_byte *) fxsave;
 
   i387_collect_fxsave (regcache, regnum, fxsave);
@@ -3440,7 +4076,7 @@ amd64_collect_xsave (const struct regcac
 		     void *xsave, int gcore)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
   gdb_byte *regs = (gdb_byte *) xsave;
 
   i387_collect_xsave (regcache, regnum, xsave, gcore);
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-tdep.h ./gdb/amd64-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent definitions for AMD64.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
    Contributed by Jiri Smid, SuSE Labs.
 
    This file is part of GDB.
@@ -18,14 +18,15 @@
    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 AMD64_TDEP_H
-#define AMD64_TDEP_H
+#ifndef GDB_AMD64_TDEP_H
+#define GDB_AMD64_TDEP_H
 
 struct gdbarch;
-struct frame_info;
+class frame_info_ptr;
 struct regcache;
 
 #include "i386-tdep.h"
+#include "infrun.h"
 
 /* Register numbers of various important registers.  */
 
@@ -65,6 +66,8 @@ enum amd64_regnum
   AMD64_MXCSR_REGNUM = AMD64_XMM0_REGNUM + 16,
   AMD64_YMM0H_REGNUM,		/* %ymm0h */
   AMD64_YMM15H_REGNUM = AMD64_YMM0H_REGNUM + 15,
+  /* MPX is deprecated.  Yet we keep this to not give the registers below
+     a new number.  That could break older gdbservers.  */
   AMD64_BND0R_REGNUM = AMD64_YMM15H_REGNUM + 1,
   AMD64_BND3R_REGNUM = AMD64_BND0R_REGNUM + 3,
   AMD64_BNDCFGU_REGNUM,
@@ -78,6 +81,7 @@ enum amd64_regnum
   AMD64_ZMM0H_REGNUM,
   AMD64_ZMM31H_REGNUM = AMD64_ZMM0H_REGNUM + 31,
   AMD64_PKRU_REGNUM,
+  AMD64_PL3_SSP_REGNUM,
   AMD64_FSBASE_REGNUM,
   AMD64_GSBASE_REGNUM
 };
@@ -87,13 +91,12 @@ enum amd64_regnum
 
 #define AMD64_NUM_REGS		(AMD64_GSBASE_REGNUM + 1)
 
-extern struct displaced_step_closure *amd64_displaced_step_copy_insn
+extern displaced_step_copy_insn_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,
-					struct displaced_step_closure *closure,
-					CORE_ADDR from, CORE_ADDR to,
-					struct regcache *regs);
+extern void amd64_displaced_step_fixup
+  (struct gdbarch *gdbarch, displaced_step_copy_insn_closure *closure,
+   CORE_ADDR from, CORE_ADDR to, struct regcache *regs, bool completed_p);
 
 /* Initialize the ABI for amd64.  Uses DEFAULT_TDESC as fallback
    tdesc, if INFO does not specify one.  */
@@ -106,8 +109,12 @@ extern void amd64_init_abi (struct gdbar
 extern void amd64_x32_init_abi (struct gdbarch_info info,
 				struct gdbarch *gdbarch,
 				const target_desc *default_tdesc);
-extern const struct target_desc *amd64_target_description (uint64_t xcr0,
-							   bool segments);
+
+/* Return the target description for the specified xsave features as
+   defined in XSTATE_BV and SEGMENTS.  */
+
+extern const struct target_desc *amd64_target_description
+  (uint64_t xstate_bv, bool segments);
 
 /* Fill register REGNUM in REGCACHE with the appropriate
    floating-point or SSE register value from *FXSAVE.  If REGNUM is
@@ -138,15 +145,10 @@ extern const struct regset amd64_fpregse
 /* Variables exported from amd64-linux-tdep.c.  */
 extern int amd64_linux_gregset_reg_offset[];
 
-/* Variables exported from amd64-nbsd-tdep.c.  */
+/* Variables exported from amd64-netbsd-tdep.c.  */
 extern int amd64nbsd_r_reg_offset[];
 
 /* Variables exported from amd64-obsd-tdep.c.  */
 extern int amd64obsd_r_reg_offset[];
 
-/* Variables exported from amd64-fbsd-tdep.c.  */
-extern CORE_ADDR amd64fbsd_sigtramp_start_addr;
-extern CORE_ADDR amd64fbsd_sigtramp_end_addr;
-extern int amd64fbsd_sc_reg_offset[];
-
-#endif /* amd64-tdep.h */
+#endif /* GDB_AMD64_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.20200303/gdb/amd64-windows-nat.c ./gdb/amd64-windows-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-windows-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-windows-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,7 +15,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/>.  */
 
-#include "defs.h"
 #include "windows-nat.h"
 #include "x86-nat.h"
 #include "amd64-tdep.h"
@@ -23,7 +22,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 +88,13 @@ 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)
+INIT_GDB_FILE (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.20200303/gdb/amd64-windows-tdep.c ./gdb/amd64-windows-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd64-windows-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/amd64-windows-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,7 +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 "defs.h"
+#include "event-top.h"
+#include "extract-store-integer.h"
 #include "osabi.h"
 #include "amd64-tdep.h"
 #include "gdbsupport/x86-xstate.h"
@@ -42,13 +43,78 @@ static int amd64_windows_dummy_call_inte
   AMD64_R9_REGNUM            /* %r9 */
 };
 
+/* This vector maps GDB's idea of a register's number into an offset into
+   the Windows API CONTEXT structure.  */
+static int amd64_windows_gregset_reg_offset[] =
+{
+  120, /* Rax */
+  144, /* Rbx */
+  128, /* Rcx */
+  136, /* Rdx */
+  168, /* Rsi */
+  176, /* Rdi */
+  160, /* Rbp */
+  152, /* Rsp */
+  184, /* R8 */
+  192, /* R9 */
+  200, /* R10 */
+  208, /* R11 */
+  216, /* R12 */
+  224, /* R13 */
+  232, /* R14 */
+  240, /* R15 */
+  248, /* Rip */
+  68,  /* EFlags */
+  56,  /* SegCs */
+  66,  /* SegSs */
+  58,  /* SegDs */
+  60,  /* SegEs */
+  62,  /* SegFs */
+  64,  /* SegGs */
+  288, /* FloatSave.FloatRegisters[0] */
+  304, /* FloatSave.FloatRegisters[1] */
+  320, /* FloatSave.FloatRegisters[2] */
+  336, /* FloatSave.FloatRegisters[3] */
+  352, /* FloatSave.FloatRegisters[4] */
+  368, /* FloatSave.FloatRegisters[5] */
+  384, /* FloatSave.FloatRegisters[6] */
+  400, /* FloatSave.FloatRegisters[7] */
+  256, /* FloatSave.ControlWord */
+  258, /* FloatSave.StatusWord */
+  260, /* FloatSave.TagWord */
+  268, /* FloatSave.ErrorSelector */
+  264, /* FloatSave.ErrorOffset */
+  276, /* FloatSave.DataSelector */
+  272, /* FloatSave.DataOffset */
+  268, /* FloatSave.ErrorSelector */
+  416, /* Xmm0 */
+  432, /* Xmm1 */
+  448, /* Xmm2 */
+  464, /* Xmm3 */
+  480, /* Xmm4 */
+  496, /* Xmm5 */
+  512, /* Xmm6 */
+  528, /* Xmm7 */
+  544, /* Xmm8 */
+  560, /* Xmm9 */
+  576, /* Xmm10 */
+  592, /* Xmm11 */
+  608, /* Xmm12 */
+  624, /* Xmm13 */
+  640, /* Xmm14 */
+  656, /* Xmm15 */
+  280, /* FloatSave.MxCsr */
+};
+
+#define AMD64_WINDOWS_SIZEOF_GREGSET 1232
+
 /* Return nonzero if an argument of type TYPE should be passed
    via one of the integer registers.  */
 
 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:
@@ -60,10 +126,11 @@ amd64_windows_passed_by_integer_register
       case TYPE_CODE_RVALUE_REF:
       case TYPE_CODE_STRUCT:
       case TYPE_CODE_UNION:
-	return (TYPE_LENGTH (type) == 1
-		|| TYPE_LENGTH (type) == 2
-		|| TYPE_LENGTH (type) == 4
-		|| TYPE_LENGTH (type) == 8);
+      case TYPE_CODE_COMPLEX:
+	return (type->length () == 1
+		|| type->length () == 2
+		|| type->length () == 4
+		|| type->length () == 8);
 
       default:
 	return 0;
@@ -76,9 +143,9 @@ 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)
-          && (TYPE_LENGTH (type) == 4 || TYPE_LENGTH (type) == 8));
+  return ((type->code () == TYPE_CODE_FLT
+	   || type->code () == TYPE_CODE_DECFLOAT)
+	  && (type->length () == 4 || type->length () == 8));
 }
 
 /* Return non-zero iff an argument of the given TYPE should be passed
@@ -110,11 +177,11 @@ amd64_windows_adjust_args_passed_by_poin
   int i;
 
   for (i = 0; i < nargs; i++)
-    if (amd64_windows_passed_by_pointer (value_type (args[i])))
+    if (amd64_windows_passed_by_pointer (args[i]->type ()))
       {
-	struct type *type = value_type (args[i]);
-	const gdb_byte *valbuf = value_contents (args[i]);
-	const int len = TYPE_LENGTH (type);
+	struct type *type = args[i]->type ();
+	const gdb_byte *valbuf = args[i]->contents ().data ();
+	const int len = type->length ();
 
 	/* Store a copy of that argument on the stack, aligned to
 	   a 16 bytes boundary, and then use the copy's address as
@@ -138,14 +205,16 @@ static void
 amd64_windows_store_arg_in_reg (struct regcache *regcache,
 				struct value *arg, int regno)
 {
-  struct type *type = value_type (arg);
-  const gdb_byte *valbuf = value_contents (arg);
-  gdb_byte buf[8];
-
-  gdb_assert (TYPE_LENGTH (type) <= 8);
-  memset (buf, 0, sizeof buf);
-  memcpy (buf, valbuf, std::min (TYPE_LENGTH (type), (ULONGEST) 8));
-  regcache->cooked_write (regno, buf);
+  gdb::array_view<const gdb_byte> valbuf = arg->contents ();
+  /* We only set 8 bytes, buf if it's a XMM register, 16 bytes are read.  */
+  std::array<gdb_byte, 16> buf {};
+
+  gdb_assert (valbuf.size () <= 8);
+  std::copy (valbuf.begin (), valbuf.end (), buf.begin ());
+  size_t reg_size = regcache->register_size (regno);
+  gdb_assert (reg_size <= buf.size ());
+  gdb::array_view<gdb_byte> view (buf);
+  regcache->cooked_write (regno, view.slice (0, reg_size));
 }
 
 /* Push the arguments for an inferior function call, and return
@@ -171,6 +240,7 @@ amd64_windows_push_arguments (struct reg
      These arguments are replaced by pointers to a copy we are making
      in inferior memory.  So use a copy of the ARGS table, to avoid
      modifying the original one.  */
+  if (nargs > 0)
   {
     struct value **args1 = XALLOCAVEC (struct value *, nargs);
 
@@ -185,8 +255,8 @@ amd64_windows_push_arguments (struct reg
 
   for (i = 0; i < nargs; i++)
     {
-      struct type *type = value_type (args[i]);
-      int len = TYPE_LENGTH (type);
+      struct type *type = args[i]->type ();
+      int len = type->length ();
       int on_stack_p = 1;
 
       if (reg_idx < ARRAY_SIZE (amd64_windows_dummy_call_integer_regs))
@@ -202,7 +272,7 @@ amd64_windows_push_arguments (struct reg
 	  else if (amd64_windows_passed_by_xmm_register (type))
 	    {
 	      amd64_windows_store_arg_in_reg
-	        (regcache, args[i], AMD64_XMM0_REGNUM + reg_idx);
+		(regcache, args[i], AMD64_XMM0_REGNUM + reg_idx);
 	      /* In case of varargs, these parameters must also be
 		 passed via the integer registers.  */
 	      amd64_windows_store_arg_in_reg
@@ -228,11 +298,11 @@ amd64_windows_push_arguments (struct reg
   /* Write out the arguments to the stack.  */
   for (i = 0; i < num_stack_args; i++)
     {
-      struct type *type = value_type (stack_args[i]);
-      const gdb_byte *valbuf = value_contents (stack_args[i]);
+      struct type *type = stack_args[i]->type ();
+      const gdb_byte *valbuf = stack_args[i]->contents ().data ();
 
-      write_memory (sp + element * 8, valbuf, TYPE_LENGTH (type));
-      element += ((TYPE_LENGTH (type) + 7) / 8);
+      write_memory (sp + element * 8, valbuf, type->length ());
+      element += ((type->length () + 7) / 8);
     }
 
   return sp;
@@ -248,7 +318,7 @@ amd64_windows_push_dummy_call
    function_call_return_method return_method, CORE_ADDR struct_addr)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  gdb_byte buf[8];
+  std::array<gdb_byte, 8> buf;
 
   /* Pass arguments.  */
   sp = amd64_windows_push_arguments (regcache, nargs, args, sp,
@@ -257,11 +327,11 @@ amd64_windows_push_dummy_call
   /* Pass "hidden" argument".  */
   if (return_method == return_method_struct)
     {
-      /* The "hidden" argument is passed throught the first argument
-         register.  */
+      /* The "hidden" argument is passed through the first argument
+	 register.  */
       const int arg_regnum = amd64_windows_dummy_call_integer_regs[0];
 
-      store_unsigned_integer (buf, 8, byte_order, struct_addr);
+      store_unsigned_integer (buf, byte_order, struct_addr);
       regcache->cooked_write (arg_regnum, buf);
     }
 
@@ -271,11 +341,11 @@ amd64_windows_push_dummy_call
 
   /* Store return address.  */
   sp -= 8;
-  store_unsigned_integer (buf, 8, byte_order, bp_addr);
-  write_memory (sp, buf, 8);
+  store_unsigned_integer (buf, byte_order, bp_addr);
+  write_memory (sp, buf.data (), buf.size ());
 
   /* Update the stack pointer...  */
-  store_unsigned_integer (buf, 8, byte_order, sp);
+  store_unsigned_integer (buf, byte_order, sp);
   regcache->cooked_write (AMD64_RSP_REGNUM, buf);
 
   /* ...and fake a frame pointer.  */
@@ -289,47 +359,63 @@ amd64_windows_push_dummy_call
 static enum return_value_convention
 amd64_windows_return_value (struct gdbarch *gdbarch, struct value *function,
 			    struct type *type, struct regcache *regcache,
-			    gdb_byte *readbuf, const gdb_byte *writebuf)
+			    struct value **read_value, const gdb_byte *writebuf)
 {
-  int len = TYPE_LENGTH (type);
+  int len = type->length ();
   int regnum = -1;
 
   /* 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:
-        /* __m128, __m128i, __m128d, floats, and doubles are returned
-           via XMM0.  */
-        if (len == 4 || len == 8 || len == 16)
-          regnum = AMD64_XMM0_REGNUM;
-        break;
+	/* floats, and doubles are returned via XMM0.  */
+	if (len == 4 || len == 8)
+	  regnum = AMD64_XMM0_REGNUM;
+	break;
+      case TYPE_CODE_ARRAY:
+	/* __m128, __m128i and __m128d are returned via XMM0.  */
+	if (type->is_vector () && len == 16)
+	  {
+	    enum type_code code = type->target_type ()->code ();
+	    if (code == TYPE_CODE_INT || code == TYPE_CODE_FLT)
+	      {
+		regnum = AMD64_XMM0_REGNUM;
+		break;
+	      }
+	  }
+	[[fallthrough]];
       default:
-        /* All other values that are 1, 2, 4 or 8 bytes long are returned
-           via RAX.  */
-        if (len == 1 || len == 2 || len == 4 || len == 8)
-          regnum = AMD64_RAX_REGNUM;
-        break;
+	/* All other values that are 1, 2, 4 or 8 bytes long are returned
+	   via RAX.  */
+	if (len == 1 || len == 2 || len == 4 || len == 8)
+	  regnum = AMD64_RAX_REGNUM;
+	else if (len == 16 && type->code () == TYPE_CODE_INT)
+	  regnum = AMD64_XMM0_REGNUM;
+	break;
     }
 
   if (regnum < 0)
     {
       /* RAX contains the address where the return value has been stored.  */
-      if (readbuf)
-        {
+      if (read_value != nullptr)
+	{
 	  ULONGEST addr;
 
 	  regcache_raw_read_unsigned (regcache, AMD64_RAX_REGNUM, &addr);
-	  read_memory (addr, readbuf, TYPE_LENGTH (type));
+	  *read_value = value_at_non_lval (type, addr);
 	}
       return RETURN_VALUE_ABI_RETURNS_ADDRESS;
     }
   else
     {
       /* Extract the return value from the register where it was stored.  */
-      if (readbuf)
-	regcache->raw_read_part (regnum, 0, len, readbuf);
+      if (read_value != nullptr)
+	{
+	  *read_value = value::allocate (type);
+	  regcache->raw_read_part (regnum, 0, len,
+				   (*read_value)->contents_raw ().data ());
+	}
       if (writebuf)
 	regcache->raw_write_part (regnum, 0, len, writebuf);
       return RETURN_VALUE_REGISTER_CONVENTION;
@@ -348,20 +434,19 @@ amd64_skip_main_prologue (struct gdbarch
   target_read_memory (pc, &op, 1);
   if (op == 0xe8)
     {
-      gdb_byte buf[4];
+      std::array<gdb_byte, 4> buf;
 
-      if (target_read_memory (pc + 1, buf, sizeof buf) == 0)
- 	{
- 	  struct bound_minimal_symbol s;
- 	  CORE_ADDR call_dest;
-
-	  call_dest = pc + 5 + extract_signed_integer (buf, 4, byte_order);
- 	  s = lookup_minimal_symbol_by_pc (call_dest);
- 	  if (s.minsym != NULL
- 	      && s.minsym->linkage_name () != NULL
- 	      && strcmp (s.minsym->linkage_name (), "__main") == 0)
- 	    pc += 5;
- 	}
+      if (target_read_memory (pc + 1, buf.data (), buf.size ()) == 0)
+	{
+	  CORE_ADDR call_dest;
+
+	  call_dest = pc + 5 + extract_signed_integer (buf, byte_order);
+	  bound_minimal_symbol s = lookup_minimal_symbol_by_pc (call_dest);
+	  if (s.minsym != NULL
+	      && s.minsym->linkage_name () != NULL
+	      && strcmp (s.minsym->linkage_name (), "__main") == 0)
+	    pc += 5;
+	}
     }
 
   return pc;
@@ -435,7 +520,7 @@ pc_in_range (CORE_ADDR pc, const struct
    Return 1 if an epilogue sequence was recognized, 0 otherwise.  */
 
 static int
-amd64_windows_frame_decode_epilogue (struct frame_info *this_frame,
+amd64_windows_frame_decode_epilogue (const frame_info_ptr &this_frame,
 				     struct amd64_windows_frame_cache *cache)
 {
   /* According to MSDN an epilogue "must consist of either an add RSP,constant
@@ -533,12 +618,12 @@ amd64_windows_frame_decode_epilogue (str
     case 0xec:
       {
 	/* jmp rel32  */
-	gdb_byte rel32[4];
+	std::array<gdb_byte, 4> rel32;
 	CORE_ADDR npc;
 
-	if (target_read_memory (pc + 1, rel32, 4) != 0)
+	if (target_read_memory (pc + 1, rel32.data (), rel32.size ()) != 0)
 	  return -1;
-	npc = pc + 5 + extract_signed_integer (rel32, 4, byte_order);
+	npc = pc + 5 + extract_signed_integer (rel32, byte_order);
 
 	/* If the jump is within the function, then this is not a marker,
 	   otherwise this is a tail-call.  */
@@ -548,13 +633,13 @@ amd64_windows_frame_decode_epilogue (str
     case 0xc2:
       {
 	/* ret n  */
-	gdb_byte imm16[2];
+	std::array<gdb_byte, 2> imm16;
 
-	if (target_read_memory (pc + 1, imm16, 2) != 0)
+	if (target_read_memory (pc + 1, imm16.data (), imm16.size ()) != 0)
 	  return -1;
 	cache->prev_rip_addr = cur_sp;
 	cache->prev_sp = cur_sp
-	  + extract_unsigned_integer (imm16, 4, byte_order);
+	  + extract_unsigned_integer (imm16, byte_order);
 	return 1;
       }
 
@@ -615,7 +700,7 @@ amd64_windows_frame_decode_epilogue (str
 /* Decode and execute unwind insns at UNWIND_INFO.  */
 
 static void
-amd64_windows_frame_decode_insns (struct frame_info *this_frame,
+amd64_windows_frame_decode_insns (const frame_info_ptr &this_frame,
 				  struct amd64_windows_frame_cache *cache,
 				  CORE_ADDR unwind_info)
 {
@@ -678,14 +763,10 @@ amd64_windows_frame_decode_insns (struct
 			      (gdb_byte *) &ex_ui, sizeof (ex_ui)) != 0)
 	return;
 
-      if (frame_debug)
-	fprintf_unfiltered
-	  (gdb_stdlog,
-	   "amd64_windows_frame_decodes_insn: "
-	   "%s: ver: %02x, plgsz: %02x, cnt: %02x, frame: %02x\n",
-	   paddress (gdbarch, unwind_info),
-	   ex_ui.Version_Flags, ex_ui.SizeOfPrologue,
-	   ex_ui.CountOfCodes, ex_ui.FrameRegisterOffset);
+      frame_debug_printf ("%s: ver: %02x, plgsz: %02x, cnt: %02x, frame: %02x",
+			  paddress (gdbarch, unwind_info),
+			  ex_ui.Version_Flags, ex_ui.SizeOfPrologue,
+			  ex_ui.CountOfCodes, ex_ui.FrameRegisterOffset);
 
       /* Check version.  */
       if (PEX64_UWI_VERSION (ex_ui.Version_Flags) != 1
@@ -717,16 +798,15 @@ amd64_windows_frame_decode_insns (struct
 	  /* According to msdn:
 	     If an FP reg is used, then any unwind code taking an offset must
 	     only be used after the FP reg is established in the prolog.  */
-	  gdb_byte buf[8];
+	  std::array<gdb_byte, 8> buf;
 	  int frreg = amd64_windows_w2gdb_regnum[frame_reg];
 
 	  get_frame_register (this_frame, frreg, buf);
-	  save_addr = extract_unsigned_integer (buf, 8, byte_order);
+	  save_addr = extract_unsigned_integer (buf, byte_order);
 
-	  if (frame_debug)
-	    fprintf_unfiltered (gdb_stdlog, "   frame_reg=%s, val=%s\n",
-				gdbarch_register_name (gdbarch, frreg),
-				paddress (gdbarch, save_addr));
+	  frame_debug_printf ("   frame_reg=%s, val=%s",
+			      gdbarch_register_name (gdbarch, frreg),
+			      paddress (gdbarch, save_addr));
 	}
 
       /* Read opcodes.  */
@@ -757,10 +837,8 @@ amd64_windows_frame_decode_insns (struct
 	     prologue has been fully executed.  */
 	  if (cache->pc >= start + p[0] || cache->pc < start)
 	    {
-	      if (frame_debug)
-		fprintf_unfiltered
-		  (gdb_stdlog, "   op #%u: off=0x%02x, insn=0x%02x\n",
-		   (unsigned) (p - insns), p[0], p[1]);
+	      frame_debug_printf ("   op #%u: off=0x%02x, insn=0x%02x",
+				  (unsigned) (p - insns), p[0], p[1]);
 
 	      /* If there is no frame registers defined, the current value of
 		 rsp is used instead.  */
@@ -834,11 +912,11 @@ amd64_windows_frame_decode_insns (struct
 		}
 
 	      /* Display address where the register was saved.  */
-	      if (frame_debug && reg >= 0)
-		fprintf_unfiltered
-		  (gdb_stdlog, "     [reg %s at %s]\n",
-		   gdbarch_register_name (gdbarch, reg),
-		   paddress (gdbarch, cache->prev_reg_addr[reg]));
+	      if (reg >= 0)
+		frame_debug_printf ("     [reg %s at %s]",
+				    gdbarch_register_name (gdbarch, reg),
+				    paddress (gdbarch,
+					      cache->prev_reg_addr[reg]));
 	    }
 
 	  /* Adjust with the length of the opcode.  */
@@ -900,14 +978,11 @@ amd64_windows_frame_decode_insns (struct
 	  unwind_info =
 	    extract_unsigned_integer (d.rva_UnwindData, 4, byte_order);
 
-	  if (frame_debug)
-	    fprintf_unfiltered
-	      (gdb_stdlog,
-	       "amd64_windows_frame_decodes_insn (next in chain):"
-	       " unwind_data=%s, start_rva=%s, end_rva=%s\n",
-	       paddress (gdbarch, unwind_info),
-	       paddress (gdbarch, cache->start_rva),
-	       paddress (gdbarch, cache->end_rva));
+	  frame_debug_printf ("next in chain: unwind_data=%s, start_rva=%s, "
+			      "end_rva=%s",
+			      paddress (gdbarch, unwind_info),
+			      paddress (gdbarch, cache->start_rva),
+			      paddress (gdbarch, cache->end_rva));
 	}
 
       /* Allow the user to break this loop.  */
@@ -918,10 +993,9 @@ amd64_windows_frame_decode_insns (struct
     cache->prev_rip_addr = cur_sp;
   cache->prev_sp = cur_sp + 8;
 
-  if (frame_debug)
-    fprintf_unfiltered (gdb_stdlog, "   prev_sp: %s, prev_pc @%s\n",
-			paddress (gdbarch, cache->prev_sp),
-			paddress (gdbarch, cache->prev_rip_addr));
+  frame_debug_printf ("   prev_sp: %s, prev_pc @%s",
+		      paddress (gdbarch, cache->prev_sp),
+		      paddress (gdbarch, cache->prev_rip_addr));
 }
 
 /* Find SEH unwind info for PC, returning 0 on success.
@@ -953,8 +1027,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.
@@ -996,11 +1069,9 @@ amd64_windows_find_unwind_info (struct g
 	break;
     }
 
-  if (frame_debug)
-    fprintf_unfiltered
-      (gdb_stdlog,
-       "amd64_windows_find_unwind_data:  image_base=%s, unwind_data=%s\n",
-       paddress (gdbarch, base), paddress (gdbarch, *unwind_info));
+  frame_debug_printf ("image_base=%s, unwind_data=%s",
+		      paddress (gdbarch, base),
+		      paddress (gdbarch, *unwind_info));
 
   return 0;
 }
@@ -1009,12 +1080,12 @@ amd64_windows_find_unwind_info (struct g
    for THIS_FRAME.  */
 
 static struct amd64_windows_frame_cache *
-amd64_windows_frame_cache (struct frame_info *this_frame, void **this_cache)
+amd64_windows_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   struct amd64_windows_frame_cache *cache;
-  gdb_byte buf[8];
+  std::array<gdb_byte, 8> buf;
   CORE_ADDR pc;
   CORE_ADDR unwind_info = 0;
 
@@ -1027,16 +1098,17 @@ amd64_windows_frame_cache (struct frame_
   /* Get current PC and SP.  */
   pc = get_frame_pc (this_frame);
   get_frame_register (this_frame, AMD64_RSP_REGNUM, buf);
-  cache->sp = extract_unsigned_integer (buf, 8, byte_order);
+  cache->sp = extract_unsigned_integer (buf, byte_order);
   cache->pc = pc;
 
+  /* If we can't find the unwind info, keep trying as though this is a
+     leaf function.  This situation can happen when PC==0, see
+     https://sourceware.org/bugzilla/show_bug.cgi?id=30255.  */
   if (amd64_windows_find_unwind_info (gdbarch, pc, &unwind_info,
 				      &cache->image_base,
 				      &cache->start_rva,
-				      &cache->end_rva))
-    return cache;
-
-  if (unwind_info == 0)
+				      &cache->end_rva)
+      || unwind_info == 0)
     {
       /* Assume a leaf function.  */
       cache->prev_sp = cache->sp + 8;
@@ -1054,7 +1126,7 @@ amd64_windows_frame_cache (struct frame_
    using the standard Windows x64 SEH info.  */
 
 static struct value *
-amd64_windows_frame_prev_register (struct frame_info *this_frame,
+amd64_windows_frame_prev_register (const frame_info_ptr &this_frame,
 				   void **this_cache, int regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1062,11 +1134,9 @@ amd64_windows_frame_prev_register (struc
     amd64_windows_frame_cache (this_frame, this_cache);
   CORE_ADDR prev;
 
-  if (frame_debug)
-    fprintf_unfiltered (gdb_stdlog,
-			"amd64_windows_frame_prev_register %s for sp=%s\n",
-			gdbarch_register_name (gdbarch, regnum),
-			paddress (gdbarch, cache->prev_sp));
+  frame_debug_printf ("%s for sp=%s",
+		      gdbarch_register_name (gdbarch, regnum),
+		      paddress (gdbarch, cache->prev_sp));
 
   if (regnum >= AMD64_XMM0_REGNUM && regnum <= AMD64_XMM0_REGNUM + 15)
       prev = cache->prev_xmm_addr[regnum - AMD64_XMM0_REGNUM];
@@ -1083,8 +1153,8 @@ amd64_windows_frame_prev_register (struc
   else
     prev = 0;
 
-  if (prev && frame_debug)
-    fprintf_unfiltered (gdb_stdlog, "  -> at %s\n", paddress (gdbarch, prev));
+  if (prev != 0)
+    frame_debug_printf ("  -> at %s", paddress (gdbarch, prev));
 
   if (prev)
     {
@@ -1102,7 +1172,7 @@ amd64_windows_frame_prev_register (struc
    the standard Windows x64 SEH info.  */
 
 static void
-amd64_windows_frame_this_id (struct frame_info *this_frame, void **this_cache,
+amd64_windows_frame_this_id (const frame_info_ptr &this_frame, void **this_cache,
 		   struct frame_id *this_id)
 {
   struct amd64_windows_frame_cache *cache =
@@ -1114,15 +1184,16 @@ amd64_windows_frame_this_id (struct fram
 
 /* Windows x64 SEH unwinder.  */
 
-static const struct frame_unwind amd64_windows_frame_unwind =
-{
+static const struct frame_unwind_legacy amd64_windows_frame_unwind (
+  "amd64 windows",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   &amd64_windows_frame_this_id,
   &amd64_windows_frame_prev_register,
   NULL,
   default_frame_sniffer
-};
+);
 
 /* Implement the "skip_prologue" gdbarch method.  */
 
@@ -1167,7 +1238,7 @@ amd64_windows_skip_prologue (struct gdba
 /* Check Win64 DLL jmp trampolines and find jump destination.  */
 
 static CORE_ADDR
-amd64_windows_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
+amd64_windows_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
 {
   CORE_ADDR destination = 0;
   struct gdbarch *gdbarch = get_frame_arch (frame);
@@ -1209,9 +1280,13 @@ 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)
 {
+  i386_gdbarch_tdep *tdep = gdbarch_tdep<i386_gdbarch_tdep> (gdbarch);
+
   /* The dwarf2 unwinder (appended very early by i386_gdbarch_init) is
      preferred over the SEH one.  The reasons are:
      - binaries without SEH but with dwarf2 debug info are correctly handled
@@ -1228,26 +1303,119 @@ 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);
+  set_gdbarch_return_value_as_value (gdbarch, amd64_windows_return_value);
   set_gdbarch_skip_main_prologue (gdbarch, amd64_skip_main_prologue);
   set_gdbarch_skip_trampoline_code (gdbarch,
 				    amd64_windows_skip_trampoline_code);
 
   set_gdbarch_skip_prologue (gdbarch, amd64_windows_skip_prologue);
 
+  tdep->gregset_reg_offset = amd64_windows_gregset_reg_offset;
+  tdep->gregset_num_regs = ARRAY_SIZE (amd64_windows_gregset_reg_offset);
+  tdep->sizeof_gregset = AMD64_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, windows_core_pid_to_str);
+
   set_gdbarch_auto_wide_charset (gdbarch, amd64_windows_auto_wide_charset);
 }
 
-void
-_initialize_amd64_windows_tdep (void)
+/* 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);
+}
+
+/* Sigwrapper unwinder instruction patterns for AMD64.  */
+
+static const gdb_byte amd64_sigbe_bytes[] = {
+  0x49, 0xc7, 0xc3, 0xf8, 0xff, 0xff, 0xff,	/* movq $-8,%r11 */
+  0x4d, 0x0f, 0xc1, 0x9a,			/* xaddq %r11,$tls::stackptr(%r10) */
+  /* 4 bytes for tls::stackptr operand.  */
+};
+
+static const gdb_byte amd64_sigdelayed_bytes[] = {
+  0x49, 0xc7, 0xc3, 0xf8, 0xff, 0xff, 0xff,	/* movq $-8,%r11 */
+  0x4d, 0x0f, 0xc1, 0x9c, 0x24,			/* xaddq %r11,$tls::stackptr(%r12) */
+  /* 4 bytes for tls::stackptr operand.  */
+};
+
+static const gdb::array_view<const gdb_byte> amd64_sig_patterns[] {
+  { amd64_sigbe_bytes },
+  { amd64_sigdelayed_bytes },
+};
+
+/* The sigwrapper unwinder on AMD64.  */
+
+static const cygwin_sigwrapper_frame_unwind
+  amd64_cygwin_sigwrapper_frame_unwind (amd64_sig_patterns);
+
+/* gdbarch initialization for Cygwin on AMD64.  */
+
+static void
+amd64_cygwin_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+  frame_unwind_append_unwinder (gdbarch, &amd64_cygwin_sigwrapper_frame_unwind);
+
+  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;
+}
+
+static enum gdb_osabi
+amd64_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, "elf64-x86-64") == 0)
+    {
+      asection *section = bfd_get_section_by_name (abfd, ".reg");
+      if (section != nullptr
+	  && bfd_section_size (section) == AMD64_WINDOWS_SIZEOF_GREGSET)
+	return GDB_OSABI_CYGWIN;
+    }
+
+  return GDB_OSABI_UNKNOWN;
+}
+
+INIT_GDB_FILE (amd64_windows_tdep)
+{
+  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_windows_init_abi);
+			  amd64_cygwin_init_abi);
+
+  gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_coff_flavour,
+				  amd64_windows_osabi_sniffer);
+
+  /* Cygwin uses elf core dumps.  */
+  gdbarch_register_osabi_sniffer (bfd_arch_i386, bfd_target_elf_flavour,
+				  amd64_cygwin_core_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.20200303/gdb/amd-dbgapi-target.c ./gdb/amd-dbgapi-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd-dbgapi-target.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amd-dbgapi-target.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,2587 @@
+/* Target used to communicate with the AMD Debugger API.
+
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "amd-dbgapi-target.h"
+#include "amdgpu-tdep.h"
+#include "async-event.h"
+#include "cli/cli-cmds.h"
+#include "cli/cli-decode.h"
+#include "cli/cli-style.h"
+#include "gdbcore.h"
+#include "gdbsupport/unordered_map.h"
+#include "inf-loop.h"
+#include "inferior.h"
+#include "objfiles.h"
+#include "observable.h"
+#include "registry.h"
+#include "solib.h"
+#include "target.h"
+
+/* When true, print debug messages relating to the amd-dbgapi target.  */
+
+static bool debug_amd_dbgapi = false;
+
+/* Make a copy of S styled in green.  */
+
+static std::string
+make_green (const char *s)
+{
+  cli_style_option style (nullptr, ui_file_style::GREEN);
+  string_file sf (true);
+  gdb_printf (&sf, "%ps", styled_string (style.style(), s));
+  return sf.release ();
+}
+
+/* Debug module names.  "amd-dbgapi" is for the target debug messages (this
+   file), whereas "amd-dbgapi-lib" is for logging messages output by the
+   amd-dbgapi library.  */
+
+static const char *amd_dbgapi_debug_module_unstyled = "amd-dbgapi";
+static const char *amd_dbgapi_lib_debug_module_unstyled
+  = "amd-dbgapi-lib";
+
+/* Styled variants of the above.  */
+
+static const std::string amd_dbgapi_debug_module_styled
+  = make_green (amd_dbgapi_debug_module_unstyled);
+static const std::string amd_dbgapi_lib_debug_module_styled
+  = make_green (amd_dbgapi_lib_debug_module_unstyled);
+
+/* Return the styled or unstyled variant of the amd-dbgapi module name,
+   depending on whether gdb_stdlog can emit colors.  */
+
+static const char *
+amd_dbgapi_debug_module ()
+{
+  if (gdb_stdlog->can_emit_style_escape ())
+    return amd_dbgapi_debug_module_styled.c_str ();
+  else
+    return amd_dbgapi_debug_module_unstyled;
+}
+
+/* Same as the above, but for the amd-dbgapi-lib module name.  */
+
+static const char *
+amd_dbgapi_lib_debug_module ()
+{
+  if (gdb_stdlog->can_emit_style_escape ())
+    return amd_dbgapi_lib_debug_module_styled.c_str ();
+  else
+    return amd_dbgapi_lib_debug_module_unstyled;
+}
+
+/* Print an amd-dbgapi debug statement.  */
+
+#define amd_dbgapi_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (debug_amd_dbgapi, \
+			      amd_dbgapi_debug_module (), \
+			      fmt, ##__VA_ARGS__)
+
+/* Print amd-dbgapi start/end debug statements.  */
+
+#define AMD_DBGAPI_SCOPED_DEBUG_START_END(fmt, ...) \
+    scoped_debug_start_end (debug_amd_dbgapi, amd_dbgapi_debug_module (), \
+			    fmt, ##__VA_ARGS__)
+
+/* inferior_created observer token.  */
+
+static gdb::observers::token amd_dbgapi_target_inferior_created_observer_token;
+
+/* See amd-dbgapi-target.h.  */
+
+const gdb::observers::token &
+get_amd_dbgapi_target_inferior_created_observer_token ()
+{
+  return amd_dbgapi_target_inferior_created_observer_token;
+}
+
+/* inferior_execd observer token.  */
+
+static gdb::observers::token amd_dbgapi_target_inferior_execd_observer_token;
+
+/* See amd-dbgapi-target.h.  */
+
+const gdb::observers::token &
+get_amd_dbgapi_target_inferior_execd_observer_token ()
+{
+  return amd_dbgapi_target_inferior_execd_observer_token;
+}
+
+/* A type holding coordinates, etc. info for a given wave.  */
+
+struct wave_coordinates
+{
+  /* The wave.  Set by the ctor.  */
+  amd_dbgapi_wave_id_t wave_id;
+
+  /* All these fields are initialized here to a value that is printed
+     as "?".  */
+  amd_dbgapi_dispatch_id_t dispatch_id = AMD_DBGAPI_DISPATCH_NONE;
+  amd_dbgapi_queue_id_t queue_id = AMD_DBGAPI_QUEUE_NONE;
+  amd_dbgapi_agent_id_t agent_id = AMD_DBGAPI_AGENT_NONE;
+  uint32_t group_ids[3] {UINT32_MAX, UINT32_MAX, UINT32_MAX};
+  uint32_t wave_in_group = UINT32_MAX;
+
+  explicit wave_coordinates (amd_dbgapi_wave_id_t wave_id)
+    : wave_id (wave_id)
+  {}
+
+  /* Return the target ID string for the wave this wave_coordinates is
+     for.  */
+  std::string to_string () const;
+
+  /* Pull out coordinates info from the amd-dbgapi library.  */
+  void fetch ();
+};
+
+/* A type holding info about a given wave.  */
+
+struct wave_info
+{
+  /* We cache the coordinates info because we need it after a wave
+     exits.  The wave's ID is here.  */
+  wave_coordinates coords;
+
+  /* The last resume_mode passed to amd_dbgapi_wave_resume for this
+     wave.  We track this because we are guaranteed to see a
+     WAVE_COMMAND_TERMINATED event if a stepping wave terminates, and
+     we need to know to not delete such a wave until we process that
+     event.  */
+  amd_dbgapi_resume_mode_t last_resume_mode = AMD_DBGAPI_RESUME_MODE_NORMAL;
+
+  /* Whether we've called amd_dbgapi_wave_stop for this wave and are
+     waiting for its stop event.  Similarly, we track this because
+     we're guaranteed to get a WAVE_COMMAND_TERMINATED event if the
+     wave terminates while being stopped.  */
+  bool stopping = false;
+
+  explicit wave_info (amd_dbgapi_wave_id_t wave_id)
+    : coords (wave_id)
+  {
+    coords.fetch ();
+  }
+};
+
+/* Big enough to hold the size of the largest register in bytes.  */
+#define AMDGPU_MAX_REGISTER_SIZE 256
+
+/* amd-dbgapi-specific inferior data.  */
+
+struct amd_dbgapi_inferior_info
+{
+  explicit amd_dbgapi_inferior_info (inferior *inf,
+				     bool precise_memory_requested = false)
+    : inf (inf)
+  {
+    precise_memory.requested = precise_memory_requested;
+  }
+
+  /* Backlink to inferior.  */
+  inferior *inf;
+
+  /* The amd_dbgapi_process_id for this inferior.  */
+  amd_dbgapi_process_id_t process_id = AMD_DBGAPI_PROCESS_NONE;
+
+  /* The amd_dbgapi_notifier_t for this inferior.  */
+  amd_dbgapi_notifier_t notifier = -1;
+
+  /* The status of the inferior's runtime support.  */
+  amd_dbgapi_runtime_state_t runtime_state = AMD_DBGAPI_RUNTIME_STATE_UNLOADED;
+
+  /* This value mirrors the current "forward progress needed" value for this
+     process in amd-dbgapi.  It is used to avoid unnecessary calls to
+     amd_dbgapi_process_set_progress, to reduce the noise in the logs.
+
+     Initialized to true, since that's the default in amd-dbgapi too.  */
+  bool forward_progress_required = true;
+
+  struct
+  {
+    /* Whether precise memory reporting is requested.  */
+    bool requested;
+
+    /* Whether precise memory was requested and successfully enabled by
+       dbgapi (it may not be available for the current hardware, for
+       instance).  */
+    bool enabled = false;
+  } precise_memory;
+
+  gdb::unordered_map<decltype (amd_dbgapi_breakpoint_id_t::handle),
+		     struct breakpoint *>
+    breakpoint_map;
+
+  /* List of pending events the amd-dbgapi target retrieved from the dbgapi.  */
+  std::list<std::pair<ptid_t, target_waitstatus>> wave_events;
+
+  /* Map of threads with ongoing displaced steps to corresponding amd-dbgapi
+     displaced stepping handles.  */
+  gdb::unordered_map<thread_info *,
+		     decltype (amd_dbgapi_displaced_stepping_id_t::handle)>
+    stepping_id_map;
+
+  /* Map of wave ID to wave_info.  We cache wave_info objects because
+     we need to access the info after the wave is gone, in the thread
+     exit nofication.  E.g.:
+	[AMDGPU Wave 1:4:1:1 (0,0,0)/0 exited]
+
+     wave_info objects are added when we first see the wave, and
+     removed from a thread_deleted observer.  */
+  gdb::unordered_map<decltype (amd_dbgapi_wave_id_t::handle), wave_info>
+    wave_info_map;
+};
+
+static amd_dbgapi_event_id_t process_event_queue
+  (amd_dbgapi_inferior_info &info,
+   amd_dbgapi_event_kind_t until_event_kind = AMD_DBGAPI_EVENT_KIND_NONE);
+
+static const target_info amd_dbgapi_target_info = {
+  "amd-dbgapi",
+  N_("AMD Debugger API"),
+  N_("GPU debugging using the AMD Debugger API")
+};
+
+static amd_dbgapi_log_level_t get_debug_amd_dbgapi_lib_log_level ();
+
+struct amd_dbgapi_target final : public target_ops
+{
+  const target_info &
+  info () const override
+  {
+    return amd_dbgapi_target_info;
+  }
+  strata
+  stratum () const override
+  {
+    return arch_stratum;
+  }
+
+  void close () override;
+  void mourn_inferior () override;
+  void detach (inferior *inf, int from_tty) override;
+
+  void async (bool enable) override;
+
+  bool has_pending_events () override;
+  ptid_t wait (ptid_t, struct target_waitstatus *, target_wait_flags) override;
+  void resume (ptid_t, int, enum gdb_signal) override;
+  void commit_resumed () override;
+  void stop (ptid_t ptid) override;
+
+  void fetch_registers (struct regcache *, int) override;
+  void store_registers (struct regcache *, int) override;
+
+  void update_thread_list () override;
+
+  struct gdbarch *thread_architecture (ptid_t) override;
+
+  void thread_events (bool enable) override;
+
+  std::string pid_to_str (ptid_t ptid) override;
+
+  const char *thread_name (thread_info *tp) override;
+
+  const char *extra_thread_info (thread_info *tp) override;
+
+  bool thread_alive (ptid_t ptid) 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 stopped_by_watchpoint () override;
+
+  bool stopped_by_sw_breakpoint () override;
+  bool stopped_by_hw_breakpoint () override;
+
+  bool supports_displaced_step (thread_info *thread) override
+  {
+    /* Handle displaced stepping for GPU threads only.  */
+    if (!ptid_is_gpu (thread->ptid))
+      return beneath ()->supports_displaced_step (thread);
+
+    return true;
+  }
+
+  displaced_step_prepare_status displaced_step_prepare
+    (thread_info *thread, CORE_ADDR &displaced_pc) override;
+
+  displaced_step_finish_status displaced_step_finish
+    (thread_info *thread, const target_waitstatus &status) override;
+
+private:
+  /* True if we must report thread events.  */
+  bool m_report_thread_events = false;
+
+  /* Cache for the last value returned by thread_architecture.  */
+  gdbarch *m_cached_arch = nullptr;
+  ptid_t::tid_type m_cached_arch_tid = 0;
+};
+
+static struct amd_dbgapi_target the_amd_dbgapi_target;
+
+/* Per-inferior data key.  */
+
+static const registry<inferior>::key<amd_dbgapi_inferior_info>
+  amd_dbgapi_inferior_data;
+
+/* Fetch the amd_dbgapi_inferior_info data for the given inferior.  */
+
+static amd_dbgapi_inferior_info &
+get_amd_dbgapi_inferior_info (inferior *inferior)
+{
+  amd_dbgapi_inferior_info *info = amd_dbgapi_inferior_data.get (inferior);
+
+  if (info == nullptr)
+    info = amd_dbgapi_inferior_data.emplace (inferior, inferior);
+
+  return *info;
+}
+
+/* The async event handler registered with the event loop, indicating that we
+   might have events to report to the core and that we'd like our wait method
+   to be called.
+
+   This is nullptr when async is disabled and non-nullptr when async is
+   enabled.
+
+   It is marked when a notifier fd tells us there's an event available.  The
+   callback triggers handle_inferior_event in order to pull the event from
+   amd-dbgapi and handle it.  */
+
+static async_event_handler *amd_dbgapi_async_event_handler = nullptr;
+
+std::string
+wave_coordinates::to_string () const
+{
+  std::string str = "AMDGPU Wave";
+
+  str += (agent_id != AMD_DBGAPI_AGENT_NONE
+	  ? string_printf (" %ld", agent_id.handle)
+	  : " ?");
+
+  str += (queue_id != AMD_DBGAPI_QUEUE_NONE
+	  ? string_printf (":%ld", queue_id.handle)
+	  : ":?");
+
+  str += (dispatch_id != AMD_DBGAPI_DISPATCH_NONE
+	  ? string_printf (":%ld", dispatch_id.handle)
+	  : ":?");
+
+  str += string_printf (":%ld", wave_id.handle);
+
+  str += (group_ids[0] != UINT32_MAX
+	  ? string_printf (" (%d,%d,%d)", group_ids[0], group_ids[1],
+			   group_ids[2])
+	  : " (?,?,?)");
+
+  str += (wave_in_group != UINT32_MAX
+	  ? string_printf ("/%d", wave_in_group)
+	  : "/?");
+
+  return str;
+}
+
+/* Read in wave_info for WAVE_ID.  */
+
+void
+wave_coordinates::fetch ()
+{
+  /* Any field that fails to be read is left with its in-class
+     initialized value, which is printed as "?".  */
+
+  amd_dbgapi_wave_get_info (wave_id, AMD_DBGAPI_WAVE_INFO_AGENT,
+			    sizeof (agent_id), &agent_id);
+  amd_dbgapi_wave_get_info (wave_id, AMD_DBGAPI_WAVE_INFO_QUEUE,
+			    sizeof (queue_id), &queue_id);
+  amd_dbgapi_wave_get_info (wave_id, AMD_DBGAPI_WAVE_INFO_DISPATCH,
+			    sizeof (dispatch_id), &dispatch_id);
+
+  amd_dbgapi_wave_get_info (wave_id,
+			    AMD_DBGAPI_WAVE_INFO_WORKGROUP_COORD,
+			    sizeof (group_ids), &group_ids);
+
+  amd_dbgapi_wave_get_info (wave_id,
+			    AMD_DBGAPI_WAVE_INFO_WAVE_NUMBER_IN_WORKGROUP,
+			    sizeof (wave_in_group), &wave_in_group);
+}
+
+/* Get the wave_info object for TP, from the wave_info map.  It is
+   assumed that the wave is in the map.  */
+
+static wave_info &
+get_thread_wave_info (thread_info *tp)
+{
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (tp->inf);
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (tp->ptid);
+
+  auto it = info.wave_info_map.find (wave_id.handle);
+  gdb_assert (it != info.wave_info_map.end ());
+
+  return it->second;
+}
+
+/* Clear our async event handler.  */
+
+static void
+async_event_handler_clear ()
+{
+  gdb_assert (amd_dbgapi_async_event_handler != nullptr);
+  clear_async_event_handler (amd_dbgapi_async_event_handler);
+}
+
+/* Mark our async event handler.  */
+
+static void
+async_event_handler_mark ()
+{
+  gdb_assert (amd_dbgapi_async_event_handler != nullptr);
+  mark_async_event_handler (amd_dbgapi_async_event_handler);
+}
+
+/* Set forward progress requirement to REQUIRE for inferior INFO.  */
+
+static void
+require_forward_progress (amd_dbgapi_inferior_info &info, bool require)
+{
+  /* If we try to disable forward progress requirement but the target expects
+     resumed threads to be committed to the target, we could wait for events
+     that will never arrive.  */
+  if (!require)
+    gdb_assert (!info.inf->process_target ()->commit_resumed_state);
+
+  gdb_assert (info.process_id != AMD_DBGAPI_PROCESS_NONE);
+
+  /* Don't do unnecessary calls to amd-dbgapi to avoid polluting the logs.  */
+  if (info.forward_progress_required == require)
+    return;
+
+  const auto progress
+    = require ? AMD_DBGAPI_PROGRESS_NORMAL : AMD_DBGAPI_PROGRESS_NO_FORWARD;
+  const auto status
+    = amd_dbgapi_process_set_progress (info.process_id, progress);
+  gdb_assert (status == AMD_DBGAPI_STATUS_SUCCESS);
+
+  info.forward_progress_required = require;
+}
+
+/* Set forward progress requirement to REQUIRE for all processes of PROC_TARGET
+   matching PTID.  */
+
+static void
+require_forward_progress (ptid_t ptid, process_stratum_target *proc_target,
+			  bool require)
+{
+  for (inferior *inf : all_inferiors (proc_target))
+    {
+      if (ptid != minus_one_ptid && inf->pid != ptid.pid ())
+	continue;
+
+      amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+      if (info.process_id != AMD_DBGAPI_PROCESS_NONE)
+	require_forward_progress (info, require);
+
+      /* If ptid targets a single inferior and we have found it, no need to
+	 continue.  */
+      if (ptid != minus_one_ptid)
+	break;
+    }
+}
+
+/* See amd-dbgapi-target.h.  */
+
+amd_dbgapi_process_id_t
+get_amd_dbgapi_process_id (inferior *inf)
+{
+  return get_amd_dbgapi_inferior_info (inf).process_id;
+}
+
+/* A breakpoint dbgapi wants us to insert, to handle shared library
+   loading/unloading.  */
+
+struct amd_dbgapi_target_breakpoint : public code_breakpoint
+{
+  amd_dbgapi_target_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
+    : code_breakpoint (gdbarch, bp_breakpoint)
+  {
+    symtab_and_line sal;
+    sal.pc = address;
+    sal.section = find_pc_overlay (sal.pc);
+    sal.pspace = current_program_space;
+    add_location (sal);
+
+    pspace = current_program_space;
+    disposition = disp_donttouch;
+  }
+
+  void re_set (program_space *) override;
+  void check_status (struct bpstat *bs) override;
+};
+
+void
+amd_dbgapi_target_breakpoint::re_set (program_space *)
+{
+  /* Nothing.  */
+}
+
+void
+amd_dbgapi_target_breakpoint::check_status (struct bpstat *bs)
+{
+  struct inferior *inf = current_inferior ();
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+  amd_dbgapi_status_t status;
+
+  bs->stop = 0;
+  bs->print_it = print_it_noop;
+
+  /* Find the address the breakpoint is set at.  */
+  auto match_breakpoint
+    = [bs] (const decltype (info.breakpoint_map)::value_type &value)
+      { return value.second == bs->breakpoint_at; };
+  auto it
+    = std::find_if (info.breakpoint_map.begin (), info.breakpoint_map.end (),
+		    match_breakpoint);
+
+  if (it == info.breakpoint_map.end ())
+    error (_("Could not find breakpoint_id for breakpoint at %s"),
+	   paddress (inf->arch (), bs->bp_location_at->address));
+
+  amd_dbgapi_breakpoint_id_t breakpoint_id { it->first };
+  amd_dbgapi_breakpoint_action_t action;
+
+  status = amd_dbgapi_report_breakpoint_hit
+    (breakpoint_id,
+     reinterpret_cast<amd_dbgapi_client_thread_id_t> (inferior_thread ()),
+     &action);
+
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd_dbgapi_report_breakpoint_hit failed for breakpoint %ld "
+	     "at %s (%s)"),
+	   breakpoint_id.handle, paddress (inf->arch (), bs->bp_location_at->address),
+	   get_status_string (status));
+
+  if (action == AMD_DBGAPI_BREAKPOINT_ACTION_RESUME)
+    return;
+
+  require_forward_progress (info, false);
+
+  /* If the action is AMD_DBGAPI_BREAKPOINT_ACTION_HALT, we need to wait until
+     a breakpoint resume event for this breakpoint_id is seen.  */
+  amd_dbgapi_event_id_t resume_event_id
+    = process_event_queue (info, AMD_DBGAPI_EVENT_KIND_BREAKPOINT_RESUME);
+
+  /* We should always get a breakpoint_resume event after processing all
+     events generated by reporting the breakpoint hit.  */
+  gdb_assert (resume_event_id != AMD_DBGAPI_EVENT_NONE);
+
+  amd_dbgapi_breakpoint_id_t resume_breakpoint_id;
+  status = amd_dbgapi_event_get_info (resume_event_id,
+				      AMD_DBGAPI_EVENT_INFO_BREAKPOINT,
+				      sizeof (resume_breakpoint_id),
+				      &resume_breakpoint_id);
+
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd_dbgapi_event_get_info failed (%s)"), get_status_string (status));
+
+  /* The debugger API guarantees that [breakpoint_hit...resume_breakpoint]
+     sequences cannot interleave, so this breakpoint resume event must be
+     for our breakpoint_id.  */
+  if (resume_breakpoint_id != breakpoint_id)
+    error (_("breakpoint resume event is not for this breakpoint. "
+	      "Expected breakpoint_%ld, got breakpoint_%ld"),
+	   breakpoint_id.handle, resume_breakpoint_id.handle);
+
+  amd_dbgapi_event_processed (resume_event_id);
+}
+
+bool
+amd_dbgapi_target::thread_alive (ptid_t ptid)
+{
+  if (!ptid_is_gpu (ptid))
+    return beneath ()->thread_alive (ptid);
+
+  /* Check that the wave_id is valid.  */
+
+  amd_dbgapi_wave_state_t state;
+  amd_dbgapi_status_t status
+    = amd_dbgapi_wave_get_info (get_amd_dbgapi_wave_id (ptid),
+				AMD_DBGAPI_WAVE_INFO_STATE, sizeof (state),
+				&state);
+  return status == AMD_DBGAPI_STATUS_SUCCESS;
+}
+
+const char *
+amd_dbgapi_target::thread_name (thread_info *tp)
+{
+  if (!ptid_is_gpu (tp->ptid))
+    return beneath ()->thread_name (tp);
+
+  return nullptr;
+}
+
+std::string
+amd_dbgapi_target::pid_to_str (ptid_t ptid)
+{
+  if (!ptid_is_gpu (ptid))
+    return beneath ()->pid_to_str (ptid);
+
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+  inferior *inf = find_inferior_pid (proc_target, ptid.pid ());
+  gdb_assert (inf != nullptr);
+  const amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+  auto wave_id = get_amd_dbgapi_wave_id (ptid);
+
+  auto it = info.wave_info_map.find (wave_id.handle);
+  if (it != info.wave_info_map.end ())
+    return it->second.coords.to_string ();
+
+  /* A wave we don't know about.  Shouldn't usually happen, but
+     asserting and bringing down the session is a bit too harsh.  Just
+     print all unknown info as "?"s.  */
+  return wave_coordinates (wave_id).to_string ();
+}
+
+const char *
+amd_dbgapi_target::extra_thread_info (thread_info *tp)
+{
+  if (!ptid_is_gpu (tp->ptid))
+    beneath ()->extra_thread_info (tp);
+
+  return nullptr;
+}
+
+target_xfer_status
+amd_dbgapi_target::xfer_partial (enum target_object object, const char *annex,
+			       gdb_byte *readbuf, const gdb_byte *writebuf,
+			       ULONGEST offset, ULONGEST requested_len,
+			       ULONGEST *xfered_len)
+{
+  std::optional<scoped_restore_current_thread> maybe_restore_thread;
+
+  if (!ptid_is_gpu (inferior_ptid))
+    return beneath ()->xfer_partial (object, annex, readbuf, writebuf, offset,
+				     requested_len, xfered_len);
+
+  gdb_assert (requested_len > 0);
+  gdb_assert (xfered_len != nullptr);
+
+  if (object != TARGET_OBJECT_MEMORY)
+    return TARGET_XFER_E_IO;
+
+  amd_dbgapi_process_id_t process_id
+    = get_amd_dbgapi_process_id (current_inferior ());
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (inferior_ptid);
+
+  size_t len = requested_len;
+  amd_dbgapi_status_t status;
+
+  if (readbuf != nullptr)
+    status = amd_dbgapi_read_memory (process_id, wave_id, 0,
+				     AMD_DBGAPI_ADDRESS_SPACE_GLOBAL,
+				     offset, &len, readbuf);
+  else
+    status = amd_dbgapi_write_memory (process_id, wave_id, 0,
+				      AMD_DBGAPI_ADDRESS_SPACE_GLOBAL,
+				      offset, &len, writebuf);
+
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    return TARGET_XFER_E_IO;
+
+  *xfered_len = len;
+  return TARGET_XFER_OK;
+}
+
+bool
+amd_dbgapi_target::stopped_by_watchpoint ()
+{
+  if (!ptid_is_gpu (inferior_ptid))
+    return beneath ()->stopped_by_watchpoint ();
+
+  return false;
+}
+
+void
+amd_dbgapi_target::resume (ptid_t scope_ptid, int step, enum gdb_signal signo)
+{
+  amd_dbgapi_debug_printf ("scope_ptid = %s", scope_ptid.to_string ().c_str ());
+
+  /* The amd_dbgapi_exceptions_t matching SIGNO will only be used if the
+     thread which is the target of the signal SIGNO is a GPU thread.  If so,
+     make sure that there is a corresponding amd_dbgapi_exceptions_t for SIGNO
+     before we try to resume any thread.  */
+  amd_dbgapi_exceptions_t exception = AMD_DBGAPI_EXCEPTION_NONE;
+  if (ptid_is_gpu (inferior_ptid))
+    {
+      switch (signo)
+	{
+	case GDB_SIGNAL_BUS:
+	  exception = AMD_DBGAPI_EXCEPTION_WAVE_ADDRESS_ERROR;
+	  break;
+	case GDB_SIGNAL_SEGV:
+	  exception = AMD_DBGAPI_EXCEPTION_WAVE_MEMORY_VIOLATION;
+	  break;
+	case GDB_SIGNAL_ILL:
+	  exception = AMD_DBGAPI_EXCEPTION_WAVE_ILLEGAL_INSTRUCTION;
+	  break;
+	case GDB_SIGNAL_FPE:
+	  exception = AMD_DBGAPI_EXCEPTION_WAVE_MATH_ERROR;
+	  break;
+	case GDB_SIGNAL_ABRT:
+	  exception = AMD_DBGAPI_EXCEPTION_WAVE_ABORT;
+	  break;
+	case GDB_SIGNAL_TRAP:
+	  exception = AMD_DBGAPI_EXCEPTION_WAVE_TRAP;
+	  break;
+	case GDB_SIGNAL_0:
+	  exception = AMD_DBGAPI_EXCEPTION_NONE;
+	  break;
+	default:
+	  error (_("Resuming with signal %s is not supported by this agent."),
+		 gdb_signal_to_name (signo));
+	}
+    }
+
+  if (!ptid_is_gpu (inferior_ptid) || scope_ptid != inferior_ptid)
+    {
+      beneath ()->resume (scope_ptid, step, signo);
+
+      /* If the request is for a single thread, we are done.  */
+      if (scope_ptid == inferior_ptid)
+	return;
+    }
+
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+
+  /* Disable forward progress requirement.  */
+  require_forward_progress (scope_ptid, proc_target, false);
+
+  for (thread_info *thread : all_non_exited_threads (proc_target, scope_ptid))
+    {
+      if (!ptid_is_gpu (thread->ptid))
+	continue;
+
+      amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (thread->ptid);
+      amd_dbgapi_status_t status;
+
+      wave_info &wi = get_thread_wave_info (thread);
+      amd_dbgapi_resume_mode_t &resume_mode = wi.last_resume_mode;
+      amd_dbgapi_exceptions_t wave_exception;
+      if (thread->ptid == inferior_ptid)
+	{
+	  resume_mode = (step
+			 ? AMD_DBGAPI_RESUME_MODE_SINGLE_STEP
+			 : AMD_DBGAPI_RESUME_MODE_NORMAL);
+	  wave_exception = exception;
+	}
+      else
+	{
+	  resume_mode = AMD_DBGAPI_RESUME_MODE_NORMAL;
+	  wave_exception = AMD_DBGAPI_EXCEPTION_NONE;
+	}
+
+      status = amd_dbgapi_wave_resume (wave_id, resume_mode, wave_exception);
+      if (status != AMD_DBGAPI_STATUS_SUCCESS
+	  /* Ignore the error that wave is no longer valid as that could
+	     indicate that the process has exited.  GDB treats resuming a
+	     thread that no longer exists as being successful.  */
+	  && status != AMD_DBGAPI_STATUS_ERROR_INVALID_WAVE_ID)
+	error (_("wave_resume for wave_%ld failed (%s)"), wave_id.handle,
+	       get_status_string (status));
+
+      wi.stopping = false;
+    }
+}
+
+void
+amd_dbgapi_target::commit_resumed ()
+{
+  amd_dbgapi_debug_printf ("called");
+
+  beneath ()->commit_resumed ();
+
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+  require_forward_progress (minus_one_ptid, proc_target, true);
+}
+
+/* Return a string version of RESUME_MODE, for debug log purposes.  */
+
+static const char *
+resume_mode_to_string (amd_dbgapi_resume_mode_t resume_mode)
+{
+  switch (resume_mode)
+    {
+    case AMD_DBGAPI_RESUME_MODE_NORMAL:
+      return "normal";
+    case AMD_DBGAPI_RESUME_MODE_SINGLE_STEP:
+      return "step";
+    }
+  gdb_assert_not_reached ("invalid amd_dbgapi_resume_mode_t");
+}
+
+void
+amd_dbgapi_target::stop (ptid_t ptid)
+{
+  amd_dbgapi_debug_printf ("ptid = %s", ptid.to_string ().c_str ());
+
+  bool many_threads = ptid == minus_one_ptid || ptid.is_pid ();
+
+  if (!ptid_is_gpu (ptid) || many_threads)
+    {
+      beneath ()->stop (ptid);
+
+      /* The request is for a single thread, we are done.  */
+      if (!many_threads)
+	return;
+    }
+
+  auto stop_one_thread = [this] (thread_info *thread)
+    {
+      gdb_assert (thread != nullptr);
+
+      amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (thread->ptid);
+      amd_dbgapi_wave_state_t state;
+      amd_dbgapi_status_t status
+	= amd_dbgapi_wave_get_info (wave_id, AMD_DBGAPI_WAVE_INFO_STATE,
+				    sizeof (state), &state);
+      if (status == AMD_DBGAPI_STATUS_SUCCESS)
+	{
+	  /* If the wave is already known to be stopped then do nothing.  */
+	  if (state == AMD_DBGAPI_WAVE_STATE_STOP)
+	    return;
+
+	  status = amd_dbgapi_wave_stop (wave_id);
+	  if (status == AMD_DBGAPI_STATUS_SUCCESS)
+	    {
+	      wave_info &wi = get_thread_wave_info (thread);
+	      wi.stopping = true;
+	      return;
+	    }
+
+	  if (status != AMD_DBGAPI_STATUS_ERROR_INVALID_WAVE_ID)
+	    error (_("wave_stop for wave_%ld failed (%s)"), wave_id.handle,
+		   get_status_string (status));
+	}
+      else if (status != AMD_DBGAPI_STATUS_ERROR_INVALID_WAVE_ID)
+	error (_("wave_get_info for wave_%ld failed (%s)"), wave_id.handle,
+	       get_status_string (status));
+
+      /* The status is AMD_DBGAPI_STATUS_ERROR_INVALID_WAVE_ID.  The wave
+	 could have terminated since the last time the wave list was
+	 refreshed.  */
+
+      wave_info &wi = get_thread_wave_info (thread);
+      wi.stopping = true;
+
+      amd_dbgapi_debug_printf ("got AMD_DBGAPI_STATUS_ERROR_INVALID_WAVE_ID "
+			       "for wave_%ld, last_resume_mode=%s, "
+			       "report_thread_events=%d",
+			       wave_id.handle,
+			       resume_mode_to_string (wi.last_resume_mode),
+			       m_report_thread_events);
+
+      /* If the wave was stepping when it terminated, then it is
+	 guaranteed that we will see a WAVE_COMMAND_TERMINATED event
+	 for it.  Don't report a thread exit event or delete the
+	 thread yet, until we see such event.  */
+      if (wi.last_resume_mode == AMD_DBGAPI_RESUME_MODE_SINGLE_STEP)
+	return;
+
+      if (m_report_thread_events)
+	{
+	  get_amd_dbgapi_inferior_info (thread->inf).wave_events.emplace_back
+	    (thread->ptid, target_waitstatus ().set_thread_exited (0));
+
+	  if (target_is_async_p ())
+	    async_event_handler_mark ();
+	}
+
+      delete_thread_silent (thread);
+    };
+
+  process_stratum_target *proc_target = current_inferior ()->process_target ();
+
+  /* Disable forward progress requirement.  */
+  require_forward_progress (ptid, proc_target, false);
+
+  if (!many_threads)
+    {
+      /* No need to iterate all non-exited threads if the request is to stop a
+	 specific thread.  */
+      stop_one_thread (proc_target->find_thread (ptid));
+      return;
+    }
+
+  for (auto *inf : all_inferiors (proc_target))
+    /* Use the threads_safe iterator since stop_one_thread may delete the
+       thread if it has exited.  */
+    for (auto *thread : inf->threads_safe ())
+      if (thread->state != THREAD_EXITED && thread->ptid.matches (ptid)
+	  && ptid_is_gpu (thread->ptid))
+	stop_one_thread (thread);
+}
+
+/* Callback for our async event handler.  */
+
+static void
+handle_target_event (gdb_client_data client_data)
+{
+  inferior_event_handler (INF_REG_EVENT);
+}
+
+struct scoped_amd_dbgapi_event_processed
+{
+  scoped_amd_dbgapi_event_processed (amd_dbgapi_event_id_t event_id)
+    : m_event_id (event_id)
+  {
+    gdb_assert (event_id != AMD_DBGAPI_EVENT_NONE);
+  }
+
+  ~scoped_amd_dbgapi_event_processed ()
+  {
+    amd_dbgapi_status_t status = amd_dbgapi_event_processed (m_event_id);
+    if (status != AMD_DBGAPI_STATUS_SUCCESS)
+      warning (_("Failed to acknowledge amd-dbgapi event %" PRIu64),
+	       m_event_id.handle);
+  }
+
+  DISABLE_COPY_AND_ASSIGN (scoped_amd_dbgapi_event_processed);
+
+private:
+  amd_dbgapi_event_id_t m_event_id;
+};
+
+/* Called when a dbgapi notifier fd is readable.  CLIENT_DATA is the
+   amd_dbgapi_inferior_info object corresponding to the notifier.  */
+
+static void
+dbgapi_notifier_handler (int err, gdb_client_data client_data)
+{
+  amd_dbgapi_inferior_info &info
+    = *static_cast<amd_dbgapi_inferior_info *> (client_data);
+  int ret;
+
+  /* Drain the notifier pipe.  */
+  do
+    {
+      char buf;
+      ret = read (info.notifier, &buf, 1);
+    }
+  while (ret >= 0 || (ret == -1 && errno == EINTR));
+
+  if (info.inf->target_is_pushed (&the_amd_dbgapi_target))
+    {
+      /* The amd-dbgapi target is pushed: signal our async handler, the event
+	 will be consumed through our wait method.  */
+
+      async_event_handler_mark ();
+    }
+  else
+    {
+      /* The amd-dbgapi target is not pushed: if there's an event, the only
+	 expected one is one of the RUNTIME kind.  If the event tells us the
+	 inferior as activated the ROCm runtime, push the amd-dbgapi
+	 target.  */
+
+      amd_dbgapi_event_id_t event_id;
+      amd_dbgapi_event_kind_t event_kind;
+      amd_dbgapi_status_t status
+	= amd_dbgapi_process_next_pending_event (info.process_id, &event_id,
+						 &event_kind);
+      if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	error (_("next_pending_event failed (%s)"), get_status_string (status));
+
+      if (event_id == AMD_DBGAPI_EVENT_NONE)
+	return;
+
+      gdb_assert (event_kind == AMD_DBGAPI_EVENT_KIND_RUNTIME);
+
+      scoped_amd_dbgapi_event_processed mark_event_processed (event_id);
+
+      amd_dbgapi_runtime_state_t runtime_state;
+      status = amd_dbgapi_event_get_info (event_id,
+					  AMD_DBGAPI_EVENT_INFO_RUNTIME_STATE,
+					  sizeof (runtime_state),
+					  &runtime_state);
+      if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	error (_("event_get_info for event_%ld failed (%s)"),
+	       event_id.handle, get_status_string (status));
+
+      switch (runtime_state)
+	{
+	case AMD_DBGAPI_RUNTIME_STATE_LOADED_SUCCESS:
+	  gdb_assert (info.runtime_state == AMD_DBGAPI_RUNTIME_STATE_UNLOADED);
+	  info.runtime_state = runtime_state;
+	  amd_dbgapi_debug_printf ("pushing amd-dbgapi target");
+	  info.inf->push_target (&the_amd_dbgapi_target);
+
+	  /* The underlying target will already be async if we are running, but not if
+	     we are attaching.  */
+	  if (info.inf->process_target ()->is_async_p ())
+	    {
+	      scoped_restore_current_thread restore_thread;
+	      switch_to_inferior_no_thread (info.inf);
+
+	      /* Make sure our async event handler is created.  */
+	      target_async (true);
+	    }
+	  break;
+
+	case AMD_DBGAPI_RUNTIME_STATE_UNLOADED:
+	  gdb_assert (info.runtime_state
+		      == AMD_DBGAPI_RUNTIME_STATE_LOADED_ERROR_RESTRICTION);
+	  info.runtime_state = runtime_state;
+	  break;
+
+	case AMD_DBGAPI_RUNTIME_STATE_LOADED_ERROR_RESTRICTION:
+	  gdb_assert (info.runtime_state == AMD_DBGAPI_RUNTIME_STATE_UNLOADED);
+	  info.runtime_state = runtime_state;
+	  warning (_("amd-dbgapi: unable to enable GPU debugging "
+		     "due to a restriction error"));
+	  break;
+	}
+    }
+}
+
+void
+amd_dbgapi_target::async (bool enable)
+{
+  beneath ()->async (enable);
+
+  if (enable)
+    {
+      if (amd_dbgapi_async_event_handler != nullptr)
+	{
+	  /* Already enabled.  */
+	  return;
+	}
+
+      /* The library gives us one notifier file descriptor per inferior (even
+	 the ones that have not yet loaded their runtime).  Register them
+	 all with the event loop.  */
+      process_stratum_target *proc_target
+	= current_inferior ()->process_target ();
+
+      for (inferior *inf : all_non_exited_inferiors (proc_target))
+	{
+	  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+	  if (info.notifier != -1)
+	    add_file_handler (info.notifier, dbgapi_notifier_handler, &info,
+			      string_printf ("amd-dbgapi notifier for pid %d",
+					     inf->pid));
+	}
+
+      amd_dbgapi_async_event_handler
+	= create_async_event_handler (handle_target_event, nullptr,
+				      "amd-dbgapi");
+
+      /* There may be pending events to handle.  Tell the event loop to poll
+	 them.  */
+      async_event_handler_mark ();
+    }
+  else
+    {
+      if (amd_dbgapi_async_event_handler == nullptr)
+	return;
+
+      for (inferior *inf : all_inferiors ())
+	{
+	  const amd_dbgapi_inferior_info &info
+	    = get_amd_dbgapi_inferior_info (inf);
+
+	  if (info.notifier != -1)
+	    delete_file_handler (info.notifier);
+	}
+
+      delete_async_event_handler (&amd_dbgapi_async_event_handler);
+    }
+}
+
+/* Make a ptid for a GPU wave.  See comment on ptid_is_gpu for more details.  */
+
+static ptid_t
+make_gpu_ptid (ptid_t::pid_type pid, amd_dbgapi_wave_id_t wave_id)
+{
+ return ptid_t (pid, 1, wave_id.handle);
+}
+
+/* When a thread is deleted, remove its wave_info from the inferior's
+   wave_info map.  */
+
+static void
+amd_dbgapi_thread_deleted (thread_info *tp)
+{
+  if (tp->inf->target_at (arch_stratum) == &the_amd_dbgapi_target
+      && ptid_is_gpu (tp->ptid))
+    {
+      amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (tp->inf);
+      auto wave_id = get_amd_dbgapi_wave_id (tp->ptid);
+      auto it = info.wave_info_map.find (wave_id.handle);
+      gdb_assert (it != info.wave_info_map.end ());
+      info.wave_info_map.erase (it);
+    }
+}
+
+/* Register WAVE_PTID as a new thread in INF's thread list, and record
+   its wave_info in the inferior's wave_info map.  */
+
+static thread_info *
+add_gpu_thread (inferior *inf, ptid_t wave_ptid)
+{
+  process_stratum_target *proc_target = inf->process_target ();
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+  auto wave_id = get_amd_dbgapi_wave_id (wave_ptid);
+
+  if (!info.wave_info_map.try_emplace (wave_id.handle,
+					wave_info (wave_id)).second)
+    internal_error ("wave ID %ld already in map", wave_id.handle);
+
+  /* Create new GPU threads silently to avoid spamming the terminal
+     with thousands of "[New Thread ...]" messages.  */
+  thread_info *thread = add_thread_silent (proc_target, wave_ptid);
+  set_running (proc_target, wave_ptid, true);
+  set_executing (proc_target, wave_ptid, true);
+  return thread;
+}
+
+/* Process an event that was just pulled out of the amd-dbgapi library.  */
+
+static void
+process_one_event (amd_dbgapi_inferior_info &info,
+		   amd_dbgapi_event_id_t event_id,
+		   amd_dbgapi_event_kind_t event_kind)
+{
+  /* Automatically mark this event processed when going out of scope.  */
+  scoped_amd_dbgapi_event_processed mark_event_processed (event_id);
+
+  gdb_assert (info.inf != nullptr);
+
+  switch (event_kind)
+    {
+    case AMD_DBGAPI_EVENT_KIND_WAVE_COMMAND_TERMINATED:
+    case AMD_DBGAPI_EVENT_KIND_WAVE_STOP:
+      {
+	amd_dbgapi_wave_id_t wave_id;
+	amd_dbgapi_status_t status
+	  = amd_dbgapi_event_get_info (event_id, AMD_DBGAPI_EVENT_INFO_WAVE,
+				       sizeof (wave_id), &wave_id);
+	if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	  error (_("event_get_info for event_%ld failed (%s)"),
+		 event_id.handle, get_status_string (status));
+
+	ptid_t event_ptid = make_gpu_ptid (info.inf->pid, wave_id);
+	target_waitstatus ws;
+
+	amd_dbgapi_wave_stop_reasons_t stop_reason;
+	status = amd_dbgapi_wave_get_info (wave_id,
+					   AMD_DBGAPI_WAVE_INFO_STOP_REASON,
+					   sizeof (stop_reason), &stop_reason);
+	if (status == AMD_DBGAPI_STATUS_ERROR_INVALID_WAVE_ID
+	    && event_kind == AMD_DBGAPI_EVENT_KIND_WAVE_COMMAND_TERMINATED)
+	  ws.set_thread_exited (0);
+	else if (status == AMD_DBGAPI_STATUS_SUCCESS)
+	  {
+	    if (stop_reason & AMD_DBGAPI_WAVE_STOP_REASON_ADDRESS_ERROR)
+	      ws.set_stopped (GDB_SIGNAL_BUS);
+	    else if (stop_reason
+		     & AMD_DBGAPI_WAVE_STOP_REASON_MEMORY_VIOLATION)
+	      ws.set_stopped (GDB_SIGNAL_SEGV);
+	    else if (stop_reason
+		     & AMD_DBGAPI_WAVE_STOP_REASON_ILLEGAL_INSTRUCTION)
+	      ws.set_stopped (GDB_SIGNAL_ILL);
+	    else if (stop_reason
+		     & (AMD_DBGAPI_WAVE_STOP_REASON_FP_INPUT_DENORMAL
+			| AMD_DBGAPI_WAVE_STOP_REASON_FP_DIVIDE_BY_0
+			| AMD_DBGAPI_WAVE_STOP_REASON_FP_OVERFLOW
+			| AMD_DBGAPI_WAVE_STOP_REASON_FP_UNDERFLOW
+			| AMD_DBGAPI_WAVE_STOP_REASON_FP_INEXACT
+			| AMD_DBGAPI_WAVE_STOP_REASON_FP_INVALID_OPERATION
+			| AMD_DBGAPI_WAVE_STOP_REASON_INT_DIVIDE_BY_0))
+	      ws.set_stopped (GDB_SIGNAL_FPE);
+	    else if (stop_reason
+		     & (AMD_DBGAPI_WAVE_STOP_REASON_BREAKPOINT
+			| AMD_DBGAPI_WAVE_STOP_REASON_WATCHPOINT
+			| AMD_DBGAPI_WAVE_STOP_REASON_SINGLE_STEP
+			| AMD_DBGAPI_WAVE_STOP_REASON_DEBUG_TRAP
+			| AMD_DBGAPI_WAVE_STOP_REASON_TRAP))
+	      ws.set_stopped (GDB_SIGNAL_TRAP);
+	    else if (stop_reason & AMD_DBGAPI_WAVE_STOP_REASON_ASSERT_TRAP)
+	      ws.set_stopped (GDB_SIGNAL_ABRT);
+	    else
+	      ws.set_stopped (GDB_SIGNAL_0);
+
+	    thread_info *thread
+	      = info.inf->process_target ()->find_thread (event_ptid);
+	    if (thread == nullptr)
+	      thread = add_gpu_thread (info.inf, event_ptid);
+
+	    /* If the wave is stopped because of a software breakpoint, the
+	       program counter needs to be adjusted so that it points to the
+	       breakpoint instruction.  */
+	    if ((stop_reason & AMD_DBGAPI_WAVE_STOP_REASON_BREAKPOINT) != 0)
+	      {
+		regcache *regcache = get_thread_regcache (thread);
+		gdbarch *gdbarch = regcache->arch ();
+
+		CORE_ADDR pc = regcache_read_pc (regcache);
+		CORE_ADDR adjusted_pc
+		  = pc - gdbarch_decr_pc_after_break (gdbarch);
+
+		if (adjusted_pc != pc)
+		  regcache_write_pc (regcache, adjusted_pc);
+	      }
+	  }
+	else
+	  error (_("wave_get_info for wave_%ld failed (%s)"),
+		 wave_id.handle, get_status_string (status));
+
+	info.wave_events.emplace_back (event_ptid, ws);
+	break;
+      }
+
+    case AMD_DBGAPI_EVENT_KIND_CODE_OBJECT_LIST_UPDATED:
+      /* We get here when the following sequence of events happens:
+
+	   - the inferior hits the amd-dbgapi "r_brk" internal breakpoint
+	   - amd_dbgapi_target_breakpoint::check_status calls
+	     amd_dbgapi_report_breakpoint_hit, which queues an event of this
+	     kind in dbgapi
+	   - amd_dbgapi_target_breakpoint::check_status calls
+	     process_event_queue, which pulls the event out of dbgapi, and
+	     gets us here
+
+	 When amd_dbgapi_target_breakpoint::check_status is called, the current
+	 inferior is the inferior that hit the breakpoint, which should still be
+	 the case now.  */
+      gdb_assert (info.inf == current_inferior ());
+      handle_solib_event ();
+      break;
+
+    case AMD_DBGAPI_EVENT_KIND_BREAKPOINT_RESUME:
+      /* Breakpoint resume events should be handled by the breakpoint
+	 action, and this code should not reach this.  */
+      gdb_assert_not_reached ("unhandled event kind");
+      break;
+
+    case AMD_DBGAPI_EVENT_KIND_RUNTIME:
+      {
+	amd_dbgapi_runtime_state_t runtime_state;
+
+	amd_dbgapi_status_t status
+	  = amd_dbgapi_event_get_info (event_id,
+				       AMD_DBGAPI_EVENT_INFO_RUNTIME_STATE,
+				       sizeof (runtime_state), &runtime_state);
+	if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	  error (_("event_get_info for event_%ld failed (%s)"),
+		 event_id.handle, get_status_string (status));
+
+	gdb_assert (runtime_state == AMD_DBGAPI_RUNTIME_STATE_UNLOADED);
+	gdb_assert
+	  (info.runtime_state == AMD_DBGAPI_RUNTIME_STATE_LOADED_SUCCESS);
+
+	info.runtime_state = runtime_state;
+
+	gdb_assert (info.inf->target_is_pushed (&the_amd_dbgapi_target));
+	info.inf->unpush_target (&the_amd_dbgapi_target);
+      }
+      break;
+
+    default:
+      error (_("event kind (%d) not supported"), event_kind);
+    }
+}
+
+/* Return a textual version of KIND.  */
+
+static const char *
+event_kind_str (amd_dbgapi_event_kind_t kind)
+{
+  switch (kind)
+    {
+    case AMD_DBGAPI_EVENT_KIND_NONE:
+      return "NONE";
+
+    case AMD_DBGAPI_EVENT_KIND_WAVE_STOP:
+      return "WAVE_STOP";
+
+    case AMD_DBGAPI_EVENT_KIND_WAVE_COMMAND_TERMINATED:
+      return "WAVE_COMMAND_TERMINATED";
+
+    case AMD_DBGAPI_EVENT_KIND_CODE_OBJECT_LIST_UPDATED:
+      return "CODE_OBJECT_LIST_UPDATED";
+
+    case AMD_DBGAPI_EVENT_KIND_BREAKPOINT_RESUME:
+      return "BREAKPOINT_RESUME";
+
+    case AMD_DBGAPI_EVENT_KIND_RUNTIME:
+      return "RUNTIME";
+
+    case AMD_DBGAPI_EVENT_KIND_QUEUE_ERROR:
+      return "QUEUE_ERROR";
+    }
+
+  gdb_assert_not_reached ("unhandled amd_dbgapi_event_kind_t value");
+}
+
+/* Drain the dbgapi event queue of a given inferior.  Stop processing the
+   events if an event of a given kind is requested (not AMD_DBGAPI_EVENT_NONE).
+   Wave stop events that are not returned are queued into their inferior's
+   amd_dbgapi_inferior_info pending wave events. */
+
+static amd_dbgapi_event_id_t
+process_event_queue (amd_dbgapi_inferior_info &info,
+		     amd_dbgapi_event_kind_t until_event_kind)
+{
+  /* Pulling events with forward progress required may result in bad
+     performance, make sure it is not required.  */
+  gdb_assert (!info.forward_progress_required);
+
+  while (true)
+    {
+      amd_dbgapi_event_id_t event_id;
+      amd_dbgapi_event_kind_t event_kind;
+
+      amd_dbgapi_status_t status
+	= amd_dbgapi_process_next_pending_event (info.process_id, &event_id,
+						 &event_kind);
+
+      if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	error (_("next_pending_event failed (%s)"), get_status_string (status));
+
+      if (event_kind != AMD_DBGAPI_EVENT_KIND_NONE)
+	amd_dbgapi_debug_printf ("Pulled event from dbgapi: "
+				 "event_id.handle = %" PRIu64 ", "
+				 "event_kind = %s",
+				 event_id.handle,
+				 event_kind_str (event_kind));
+
+      if (event_id == AMD_DBGAPI_EVENT_NONE || event_kind == until_event_kind)
+	return event_id;
+
+      process_one_event (info, event_id, event_kind);
+    }
+}
+
+bool
+amd_dbgapi_target::has_pending_events ()
+{
+  if (amd_dbgapi_async_event_handler != nullptr
+      && async_event_handler_marked (amd_dbgapi_async_event_handler))
+    return true;
+
+  return beneath ()->has_pending_events ();
+}
+
+/* Pop one pending event from the per-inferior structures.
+
+   If PID is not -1, restrict the search to the inferior with that pid.  */
+
+static std::pair<ptid_t, target_waitstatus>
+consume_one_event (int pid)
+{
+  auto *target = current_inferior ()->process_target ();
+  amd_dbgapi_inferior_info *info = nullptr;
+
+  if (pid == -1)
+    {
+      for (inferior *inf : all_inferiors (target))
+	{
+	  info = &get_amd_dbgapi_inferior_info (inf);
+	  if (!info->wave_events.empty ())
+	    break;
+	}
+
+      gdb_assert (info != nullptr);
+    }
+  else
+    {
+      inferior *inf = find_inferior_pid (target, pid);
+
+      gdb_assert (inf != nullptr);
+      info = &get_amd_dbgapi_inferior_info (inf);
+    }
+
+  if (info->wave_events.empty ())
+    return { minus_one_ptid, {} };
+
+  auto event = info->wave_events.front ();
+  info->wave_events.pop_front ();
+
+  return event;
+}
+
+ptid_t
+amd_dbgapi_target::wait (ptid_t ptid, struct target_waitstatus *ws,
+			 target_wait_flags target_options)
+{
+  gdb_assert (!current_inferior ()->process_target ()->commit_resumed_state);
+  gdb_assert (ptid == minus_one_ptid || ptid.is_pid ());
+
+  amd_dbgapi_debug_printf ("ptid = %s", ptid.to_string ().c_str ());
+
+  ptid_t event_ptid = beneath ()->wait (ptid, ws, target_options);
+  if (event_ptid != minus_one_ptid)
+    {
+      if (ws->kind () == TARGET_WAITKIND_EXITED
+	  || ws->kind () == TARGET_WAITKIND_SIGNALLED)
+       {
+	 /* This inferior has exited so drain its dbgapi event queue.  */
+	 while (consume_one_event (event_ptid.pid ()).first
+		!= minus_one_ptid)
+	   ;
+       }
+      return event_ptid;
+    }
+
+  gdb_assert (ws->kind () == TARGET_WAITKIND_NO_RESUMED
+	      || ws->kind () == TARGET_WAITKIND_IGNORE);
+
+  /* Flush the async handler first.  */
+  if (target_is_async_p ())
+    async_event_handler_clear ();
+
+  /* There may be more events to process (either already in `wave_events` or
+     that we need to fetch from dbgapi.  Mark the async event handler so that
+     amd_dbgapi_target::wait gets called again and again, until it eventually
+     returns minus_one_ptid.  */
+  auto more_events = make_scope_exit ([] ()
+    {
+      if (target_is_async_p ())
+	async_event_handler_mark ();
+    });
+
+  auto *proc_target = current_inferior ()->process_target ();
+
+  /* Disable forward progress for the specified pid in ptid if it isn't
+     minus_on_ptid, or all attached processes if ptid is minus_one_ptid.  */
+  require_forward_progress (ptid, proc_target, false);
+
+  target_waitstatus gpu_waitstatus;
+  std::tie (event_ptid, gpu_waitstatus) = consume_one_event (ptid.pid ());
+  if (event_ptid == minus_one_ptid)
+    {
+      /* Drain the events for the current inferior from the amd_dbgapi and
+	 preserve the ordering.  */
+      amd_dbgapi_inferior_info &info
+	= get_amd_dbgapi_inferior_info (current_inferior ());
+      process_event_queue (info);
+
+      std::tie (event_ptid, gpu_waitstatus) = consume_one_event (ptid.pid ());
+      if (event_ptid == minus_one_ptid)
+	{
+	  /* If we requested a specific ptid, and nothing came out, assume
+	     another ptid may have more events, otherwise, keep the
+	     async_event_handler flushed.  */
+	  if (ptid == minus_one_ptid)
+	    more_events.release ();
+
+	  if (ws->kind () == TARGET_WAITKIND_NO_RESUMED)
+	    {
+	      /* We can't easily check that all GPU waves are stopped, and no
+		 new waves can be created (the GPU has fixed function hardware
+		 to create new threads), so even if the target beneath returns
+		 waitkind_no_resumed, we have to report waitkind_ignore if GPU
+		 debugging is enabled for at least one resumed inferior handled
+		 by the amd-dbgapi target.  */
+
+	      for (inferior *inf : all_inferiors ())
+		if (inf->target_at (arch_stratum) == &the_amd_dbgapi_target
+		    && get_amd_dbgapi_inferior_info (inf).runtime_state
+			 == AMD_DBGAPI_RUNTIME_STATE_LOADED_SUCCESS)
+		  {
+		    ws->set_ignore ();
+		    break;
+		  }
+	    }
+
+	  /* There are no events to report, return the target beneath's
+	     waitstatus (either IGNORE or NO_RESUMED).  */
+	  return minus_one_ptid;
+	}
+    }
+
+  *ws = gpu_waitstatus;
+  return event_ptid;
+}
+
+bool
+amd_dbgapi_target::stopped_by_sw_breakpoint ()
+{
+  if (!ptid_is_gpu (inferior_ptid))
+    return beneath ()->stopped_by_sw_breakpoint ();
+
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (inferior_ptid);
+
+  amd_dbgapi_wave_stop_reasons_t stop_reason;
+  amd_dbgapi_status_t status
+    = amd_dbgapi_wave_get_info (wave_id, AMD_DBGAPI_WAVE_INFO_STOP_REASON,
+				sizeof (stop_reason), &stop_reason);
+
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    return false;
+
+  return (stop_reason & AMD_DBGAPI_WAVE_STOP_REASON_BREAKPOINT) != 0;
+}
+
+bool
+amd_dbgapi_target::stopped_by_hw_breakpoint ()
+{
+  if (!ptid_is_gpu (inferior_ptid))
+    return beneath ()->stopped_by_hw_breakpoint ();
+
+  return false;
+}
+
+/* Set the process' memory access reporting precision mode.
+
+   Warn if the requested mode is not supported on at least one agent in the
+   process.
+
+   Error out if setting the requested mode failed for some other reason.  */
+
+static void
+set_process_memory_precision (amd_dbgapi_inferior_info &info)
+{
+  auto mode = (info.precise_memory.requested
+	       ? AMD_DBGAPI_MEMORY_PRECISION_PRECISE
+	       : AMD_DBGAPI_MEMORY_PRECISION_NONE);
+  amd_dbgapi_status_t status
+    = amd_dbgapi_set_memory_precision (info.process_id, mode);
+
+  if (status == AMD_DBGAPI_STATUS_SUCCESS)
+    info.precise_memory.enabled = info.precise_memory.requested;
+  else if (status == AMD_DBGAPI_STATUS_ERROR_NOT_SUPPORTED)
+    warning (_("AMDGPU precise memory access reporting could not be enabled."));
+  else if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd_dbgapi_set_memory_precision failed (%s)"),
+	   get_status_string (status));
+}
+
+/* Make the amd-dbgapi library attach to the process behind INF.
+
+   Note that this is unrelated to the "attach" GDB concept / command.
+
+   By attaching to the process, we get a notifier fd that tells us when it
+   activates the ROCm runtime and when there are subsequent debug events.  */
+
+static void
+attach_amd_dbgapi (inferior *inf)
+{
+  AMD_DBGAPI_SCOPED_DEBUG_START_END ("inf num = %d", inf->num);
+
+  if (!target_can_async_p ())
+    {
+      warning (_("The amd-dbgapi target requires the target beneath to be "
+		 "asynchronous, GPU debugging is disabled"));
+      return;
+    }
+
+  /* dbgapi can't attach to a vfork child (a process born from a vfork that
+     hasn't exec'ed yet) while we are still attached to the parent.  It would
+     not be useful for us to attach to vfork children anyway, because vfork
+     children are very restricted in what they can do (see vfork(2)) and aren't
+     going to launch some GPU programs that we need to debug.  To avoid this
+     problem, we don't push the amd-dbgapi target / attach dbgapi in vfork
+     children.  If a vfork child execs, we'll try enabling the amd-dbgapi target
+     through the inferior_execd observer.  */
+  if (inf->vfork_parent != nullptr)
+    return;
+
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+  /* Are we already attached?  */
+  if (info.process_id != AMD_DBGAPI_PROCESS_NONE)
+    {
+      amd_dbgapi_debug_printf
+	("already attached: process_id = %" PRIu64, info.process_id.handle);
+      return;
+    }
+
+  amd_dbgapi_status_t status
+    = amd_dbgapi_process_attach
+	(reinterpret_cast<amd_dbgapi_client_process_id_t> (inf),
+	 &info.process_id);
+  if (status == AMD_DBGAPI_STATUS_ERROR_RESTRICTION)
+    {
+      warning (_("amd-dbgapi: unable to enable GPU debugging due to a "
+		 "restriction error"));
+      return;
+    }
+  else if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    {
+      warning (_("amd-dbgapi: could not attach to process %d (%s), GPU "
+		 "debugging will not be available."), inf->pid,
+	       get_status_string (status));
+      return;
+    }
+
+  if (amd_dbgapi_process_get_info (info.process_id,
+				   AMD_DBGAPI_PROCESS_INFO_NOTIFIER,
+				   sizeof (info.notifier), &info.notifier)
+      != AMD_DBGAPI_STATUS_SUCCESS)
+    {
+      amd_dbgapi_process_detach (info.process_id);
+      info.process_id = AMD_DBGAPI_PROCESS_NONE;
+      warning (_("amd-dbgapi: could not retrieve process %d's notifier, GPU "
+		 "debugging will not be available."), inf->pid);
+      return;
+    }
+
+  amd_dbgapi_debug_printf ("process_id = %" PRIu64 ", notifier fd = %d",
+			   info.process_id.handle, info.notifier);
+
+  set_process_memory_precision (info);
+
+  /* If GDB is attaching to a process that has the runtime loaded, there will
+     already be a "runtime loaded" event available.  Consume it and push the
+     target.  */
+  dbgapi_notifier_handler (0, &info);
+
+  add_file_handler (info.notifier, dbgapi_notifier_handler, &info,
+		    "amd-dbgapi notifier");
+}
+
+static void maybe_reset_amd_dbgapi ();
+
+/* Make the amd-dbgapi library detach from INF.
+
+   Note that this us unrelated to the "detach" GDB concept / command.
+
+   This undoes what attach_amd_dbgapi does.  */
+
+static void
+detach_amd_dbgapi (inferior *inf)
+{
+  AMD_DBGAPI_SCOPED_DEBUG_START_END ("inf num = %d", inf->num);
+
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+  if (info.process_id == AMD_DBGAPI_PROCESS_NONE)
+    return;
+
+  info.runtime_state = AMD_DBGAPI_RUNTIME_STATE_UNLOADED;
+
+  amd_dbgapi_status_t status = amd_dbgapi_process_detach (info.process_id);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    warning (_("amd-dbgapi: could not detach from process %d (%s)"),
+	     inf->pid, get_status_string (status));
+
+  gdb_assert (info.notifier != -1);
+  delete_file_handler (info.notifier);
+
+  /* This is a noop if the target is not pushed.  */
+  inf->unpush_target (&the_amd_dbgapi_target);
+
+  /* Delete the breakpoints that are still active.  */
+  for (auto &&value : info.breakpoint_map)
+    delete_breakpoint (value.second);
+
+  /* Reset the amd_dbgapi_inferior_info, except for precise_memory_mode.  */
+  info = amd_dbgapi_inferior_info (inf, info.precise_memory.requested);
+
+  maybe_reset_amd_dbgapi ();
+}
+
+void
+amd_dbgapi_target::mourn_inferior ()
+{
+  detach_amd_dbgapi (current_inferior ());
+  beneath ()->mourn_inferior ();
+}
+
+void
+amd_dbgapi_target::detach (inferior *inf, int from_tty)
+{
+  /* We're about to resume the waves by detaching the dbgapi library from the
+     inferior, so we need to remove all breakpoints that are still inserted.
+
+     Breakpoints may still be inserted because the inferior may be running in
+     non-stop mode, or because GDB changed the default setting to leave all
+     breakpoints inserted in all-stop mode when all threads are stopped.  */
+  remove_breakpoints_inf (inf);
+
+  detach_amd_dbgapi (inf);
+  beneath ()->detach (inf, from_tty);
+}
+
+void
+amd_dbgapi_target::fetch_registers (struct regcache *regcache, int regno)
+{
+  if (!ptid_is_gpu (regcache->ptid ()))
+    {
+      beneath ()->fetch_registers (regcache, regno);
+      return;
+    }
+
+  struct gdbarch *gdbarch = regcache->arch ();
+  gdb_assert (is_amdgpu_arch (gdbarch));
+
+  amdgpu_gdbarch_tdep *tdep = get_amdgpu_gdbarch_tdep (gdbarch);
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (regcache->ptid ());
+  gdb_byte raw[AMDGPU_MAX_REGISTER_SIZE];
+  amd_dbgapi_status_t status
+    = amd_dbgapi_read_register (wave_id, tdep->register_ids[regno], 0,
+				register_type (gdbarch, regno)->length (),
+				raw);
+
+  if (status == AMD_DBGAPI_STATUS_SUCCESS)
+    regcache->raw_supply (regno, raw);
+  else if (status != AMD_DBGAPI_STATUS_ERROR_REGISTER_NOT_AVAILABLE)
+    warning (_("Couldn't read register %s (#%d) (%s)."),
+	     gdbarch_register_name (gdbarch, regno), regno,
+	     get_status_string (status));
+}
+
+void
+amd_dbgapi_target::store_registers (struct regcache *regcache, int regno)
+{
+  if (!ptid_is_gpu (regcache->ptid ()))
+    {
+      beneath ()->store_registers (regcache, regno);
+      return;
+    }
+
+  struct gdbarch *gdbarch = regcache->arch ();
+  gdb_assert (is_amdgpu_arch (gdbarch));
+
+  gdb_byte raw[AMDGPU_MAX_REGISTER_SIZE];
+  regcache->raw_collect (regno, &raw);
+
+  amdgpu_gdbarch_tdep *tdep = get_amdgpu_gdbarch_tdep (gdbarch);
+
+  /* If the register has read-only bits, invalidate the value in the regcache
+     as the value actually written may differ.  */
+  if (tdep->register_properties[regno]
+      & AMD_DBGAPI_REGISTER_PROPERTY_READONLY_BITS)
+    regcache->invalidate (regno);
+
+  /* Invalidate all volatile registers if this register has the invalidate
+     volatile property.  For example, writing to VCC may change the content
+     of STATUS.VCCZ.  */
+  if (tdep->register_properties[regno]
+      & AMD_DBGAPI_REGISTER_PROPERTY_INVALIDATE_VOLATILE)
+    {
+      for (size_t r = 0; r < tdep->register_properties.size (); ++r)
+	if (tdep->register_properties[r] & AMD_DBGAPI_REGISTER_PROPERTY_VOLATILE)
+	  regcache->invalidate (r);
+    }
+
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (regcache->ptid ());
+  amd_dbgapi_status_t status
+    = amd_dbgapi_write_register (wave_id, tdep->register_ids[regno], 0,
+				 register_type (gdbarch, regno)->length (),
+				 raw);
+
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    warning (_("Couldn't write register %s (#%d)."),
+	     gdbarch_register_name (gdbarch, regno), regno);
+}
+
+struct gdbarch *
+amd_dbgapi_target::thread_architecture (ptid_t ptid)
+{
+  if (!ptid_is_gpu (ptid))
+    return beneath ()->thread_architecture (ptid);
+
+  /* We can cache the gdbarch for a given wave_id (ptid::tid) because
+     wave IDs are unique, and aren't reused.  */
+  if (ptid.tid () == m_cached_arch_tid)
+    return m_cached_arch;
+
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (ptid);
+  amd_dbgapi_architecture_id_t architecture_id;
+  amd_dbgapi_status_t status;
+
+  status = amd_dbgapi_wave_get_info (wave_id, AMD_DBGAPI_WAVE_INFO_ARCHITECTURE,
+				     sizeof (architecture_id),
+				     &architecture_id);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("Couldn't get architecture for wave_%ld"), ptid.tid ());
+
+  uint32_t elf_amdgpu_machine;
+  status = amd_dbgapi_architecture_get_info
+    (architecture_id, AMD_DBGAPI_ARCHITECTURE_INFO_ELF_AMDGPU_MACHINE,
+     sizeof (elf_amdgpu_machine), &elf_amdgpu_machine);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("Couldn't get elf_amdgpu_machine for architecture_%ld"),
+	   architecture_id.handle);
+
+  struct gdbarch_info info;
+  info.bfd_arch_info = bfd_lookup_arch (bfd_arch_amdgcn, elf_amdgpu_machine);
+  info.byte_order = BFD_ENDIAN_LITTLE;
+
+  m_cached_arch_tid = ptid.tid ();
+  m_cached_arch = gdbarch_find_by_info (info);
+  if (m_cached_arch == nullptr)
+    error (_("Couldn't get elf_amdgpu_machine (%#x)"), elf_amdgpu_machine);
+
+  return m_cached_arch;
+}
+
+void
+amd_dbgapi_target::thread_events (bool enable)
+{
+  m_report_thread_events = enable;
+  beneath ()->thread_events (enable);
+}
+
+void
+amd_dbgapi_target::update_thread_list ()
+{
+  for (inferior *inf : all_inferiors ())
+    {
+      amd_dbgapi_process_id_t process_id
+	= get_amd_dbgapi_process_id (inf);
+      if (process_id == AMD_DBGAPI_PROCESS_NONE)
+	{
+	  /* The inferior may not be attached yet.  */
+	  continue;
+	}
+
+      size_t count;
+      amd_dbgapi_wave_id_t *wave_list;
+      amd_dbgapi_changed_t changed;
+      amd_dbgapi_status_t status
+	= amd_dbgapi_process_wave_list (process_id, &count, &wave_list,
+					&changed);
+      if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	error (_("amd_dbgapi_wave_list failed (%s)"),
+	       get_status_string (status));
+
+      if (changed == AMD_DBGAPI_CHANGED_NO)
+	continue;
+
+      gdb::unique_xmalloc_ptr<amd_dbgapi_wave_id_t> wave_list_holder
+	(wave_list);
+
+      /* Create a set and free the wave list.  */
+      std::set<ptid_t::tid_type> threads;
+      for (size_t i = 0; i < count; ++i)
+	threads.emplace (wave_list[i].handle);
+
+      /* Prune the wave_ids that already have a thread_info.  Any thread_info
+	 which does not have a corresponding wave_id represents a wave which
+	 is gone at this point and should be deleted.  */
+      for (thread_info *tp : inf->threads_safe ())
+	if (ptid_is_gpu (tp->ptid) && tp->state != THREAD_EXITED)
+	  {
+	    auto it = threads.find (tp->ptid.tid ());
+
+	    if (it == threads.end ())
+	      {
+		auto wave_id = get_amd_dbgapi_wave_id (tp->ptid);
+		wave_info &wi = get_thread_wave_info (tp);
+
+		/* Waves that were stepping or in progress of being
+		   stopped are guaranteed to report a
+		   WAVE_COMMAND_TERMINATED event if they terminate.
+		   Don't delete such threads until we see the
+		   event.  */
+		if (wi.last_resume_mode == AMD_DBGAPI_RESUME_MODE_SINGLE_STEP
+		    || wi.stopping)
+		  {
+		    amd_dbgapi_debug_printf
+		      ("wave_%ld disappeared, keeping it"
+		       " (last_resume_mode=%s, stopping=%d)",
+		       wave_id.handle,
+		       resume_mode_to_string (wi.last_resume_mode),
+		       wi.stopping);
+		  }
+		else
+		  {
+		    amd_dbgapi_debug_printf ("wave_%ld disappeared, deleting it",
+					     wave_id.handle);
+		    delete_thread_silent (tp);
+		  }
+	      }
+	    else
+	      threads.erase (it);
+	  }
+
+      /* The wave_ids that are left require a new thread_info.  */
+      for (ptid_t::tid_type tid : threads)
+	{
+	  ptid_t wave_ptid
+	    = make_gpu_ptid (inf->pid, amd_dbgapi_wave_id_t {tid});
+	  add_gpu_thread (inf, wave_ptid);
+	}
+    }
+
+  /* Give the beneath target a chance to do extra processing.  */
+  this->beneath ()->update_thread_list ();
+}
+
+displaced_step_prepare_status
+amd_dbgapi_target::displaced_step_prepare (thread_info *thread,
+					   CORE_ADDR &displaced_pc)
+{
+  if (!ptid_is_gpu (thread->ptid))
+    return beneath ()->displaced_step_prepare (thread, displaced_pc);
+
+  gdb_assert (!thread->displaced_step_state.in_progress ());
+
+  /* Read the bytes that were overwritten by the breakpoint instruction being
+     stepped over.  */
+  CORE_ADDR original_pc = regcache_read_pc (get_thread_regcache (thread));
+  gdbarch *arch = get_thread_regcache (thread)->arch ();
+  size_t size = get_amdgpu_gdbarch_tdep (arch)->breakpoint_instruction_size;
+  gdb::byte_vector overwritten_bytes (size);
+
+  read_memory (original_pc, overwritten_bytes.data (), size);
+
+  /* Ask dbgapi to start the displaced step.  */
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (thread->ptid);
+  amd_dbgapi_displaced_stepping_id_t stepping_id;
+  amd_dbgapi_status_t status
+    = amd_dbgapi_displaced_stepping_start (wave_id, overwritten_bytes.data (),
+					   &stepping_id);
+
+  switch (status)
+   {
+    case AMD_DBGAPI_STATUS_SUCCESS:
+      break;
+
+    case AMD_DBGAPI_STATUS_ERROR_DISPLACED_STEPPING_BUFFER_NOT_AVAILABLE:
+      return DISPLACED_STEP_PREPARE_STATUS_UNAVAILABLE;
+
+    case AMD_DBGAPI_STATUS_ERROR_ILLEGAL_INSTRUCTION:
+      return DISPLACED_STEP_PREPARE_STATUS_CANT;
+
+    default:
+      error (_("amd_dbgapi_displaced_stepping_start failed (%s)"),
+	   get_status_string (status));
+    }
+
+  /* Save the displaced stepping id in the per-inferior info.  */
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (thread->inf);
+
+  bool inserted
+    = info.stepping_id_map.emplace (thread, stepping_id.handle).second;
+  gdb_assert (inserted);
+
+  /* Get the new (displaced) PC.  */
+  status = amd_dbgapi_wave_get_info (wave_id, AMD_DBGAPI_WAVE_INFO_PC,
+				     sizeof (displaced_pc), &displaced_pc);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    {
+      amd_dbgapi_displaced_stepping_complete (wave_id, stepping_id);
+      error (_("amd_dbgapi_wave_get_info failed (%s), could not get the "
+	       "thread's displaced PC."),
+	     get_status_string (status));
+    }
+
+  displaced_debug_printf ("selected buffer at %#lx", displaced_pc);
+
+  /* We may have written some registers, so flush the register cache.  */
+  registers_changed_thread (thread);
+
+  return DISPLACED_STEP_PREPARE_STATUS_OK;
+}
+
+displaced_step_finish_status
+amd_dbgapi_target::displaced_step_finish (thread_info *thread,
+					  const target_waitstatus &ws)
+{
+  if (!ptid_is_gpu (thread->ptid))
+    return beneath ()->displaced_step_finish (thread, ws);
+
+  gdb_assert (thread->displaced_step_state.in_progress ());
+
+  /* Find the displaced stepping id for this thread.  */
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (thread->inf);
+  auto entry = info.stepping_id_map.extract (thread);
+
+  gdb_assert (entry.has_value ());
+  amd_dbgapi_displaced_stepping_id_t stepping_id {entry->second};
+
+  /* If the thread exited while stepping, we are done.  The code above
+     cleared our associated resources.  We don't want to call dbgapi
+     below: since the thread is gone, we wouldn't be able to find the
+     necessary wave ID.  dbgapi already took care of releasing its
+     displaced-stepping-related resources when it deleted the
+     wave.  */
+  if (ws.kind () == TARGET_WAITKIND_THREAD_EXITED)
+    return DISPLACED_STEP_FINISH_STATUS_OK;
+
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (thread->ptid);
+  amd_dbgapi_wave_stop_reasons_t stop_reason;
+  amd_dbgapi_status_t status
+    = amd_dbgapi_wave_get_info (wave_id, AMD_DBGAPI_WAVE_INFO_STOP_REASON,
+				sizeof (stop_reason), &stop_reason);
+
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("wave_get_info for wave_%ld failed (%s)"), wave_id.handle,
+	   get_status_string (status));
+
+  status = amd_dbgapi_displaced_stepping_complete (wave_id, stepping_id);
+
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd_dbgapi_displaced_stepping_complete failed (%s)"),
+	   get_status_string (status));
+
+  /* We may have written some registers, so flush the register cache.  */
+  registers_changed_thread (thread);
+
+  return (stop_reason & AMD_DBGAPI_WAVE_STOP_REASON_SINGLE_STEP) != 0
+	   ? DISPLACED_STEP_FINISH_STATUS_OK
+	   : DISPLACED_STEP_FINISH_STATUS_NOT_EXECUTED;
+}
+
+/* inferior_created observer.  */
+
+static void
+amd_dbgapi_target_inferior_created (inferior *inf)
+{
+  /* If the inferior is not running on the native target (e.g. it is running
+     on a remote target), we don't want to deal with it.  */
+  if (inf->process_target () != get_native_target ())
+    return;
+
+  attach_amd_dbgapi (inf);
+}
+
+/* Callback called when an inferior is cloned.  */
+
+static void
+amd_dbgapi_target_inferior_cloned (inferior *original_inferior,
+				   inferior *new_inferior)
+{
+  const amd_dbgapi_inferior_info &orig_info
+    = get_amd_dbgapi_inferior_info (original_inferior);
+  amd_dbgapi_inferior_info &new_info
+    = get_amd_dbgapi_inferior_info (new_inferior);
+
+  /* At this point, the process is not started.  Therefore it is sufficient to
+     copy the precise memory request, it will be applied when the process
+     starts.  */
+  gdb_assert (new_info.process_id == AMD_DBGAPI_PROCESS_NONE);
+  new_info.precise_memory.requested = orig_info.precise_memory.requested;
+}
+
+/* inferior_execd observer.  */
+
+static void
+amd_dbgapi_inferior_execd (inferior *exec_inf, inferior *follow_inf)
+{
+  /* The inferior has EXEC'd and the process image has changed.  The dbgapi is
+     attached to the old process image, so we need to detach and re-attach to
+     the new process image.  */
+  detach_amd_dbgapi (exec_inf);
+
+  /* If using "follow-exec-mode new", carry over the precise-memory setting
+     to the new inferior (otherwise, FOLLOW_INF and ORIG_INF point to the same
+     inferior, so this is a no-op).  */
+  get_amd_dbgapi_inferior_info (follow_inf).precise_memory.requested
+    = get_amd_dbgapi_inferior_info (exec_inf).precise_memory.requested;
+
+  attach_amd_dbgapi (follow_inf);
+}
+
+/* inferior_forked observer.  */
+
+static void
+amd_dbgapi_inferior_forked (inferior *parent_inf, inferior *child_inf,
+			    target_waitkind fork_kind)
+{
+  if (child_inf != nullptr)
+    {
+      /* Copy precise-memory requested value from parent to child.  */
+      const amd_dbgapi_inferior_info &parent_info
+	= get_amd_dbgapi_inferior_info (parent_inf);
+      amd_dbgapi_inferior_info &child_info
+	= get_amd_dbgapi_inferior_info (child_inf);
+      child_info.precise_memory.requested
+	= parent_info.precise_memory.requested;
+
+      if (fork_kind != TARGET_WAITKIND_VFORKED)
+	{
+	  scoped_restore_current_thread restore_thread;
+	  switch_to_thread (*child_inf->threads ().begin ());
+	  attach_amd_dbgapi (child_inf);
+	}
+    }
+}
+
+/* inferior_exit observer.
+
+   This covers normal exits, but also detached inferiors (including detached
+   fork parents).  */
+
+static void
+amd_dbgapi_inferior_exited (inferior *inf)
+{
+  detach_amd_dbgapi (inf);
+}
+
+/* inferior_pre_detach observer.  */
+
+static void
+amd_dbgapi_inferior_pre_detach (inferior *inf)
+{
+  /* We need to amd-dbgapi-detach before we ptrace-detach.  If the amd-dbgapi
+     target isn't pushed, do that now.  If the amd-dbgapi target is pushed,
+     we'll do it in amd_dbgapi_target::detach.  */
+  if (!inf->target_is_pushed (&the_amd_dbgapi_target))
+    detach_amd_dbgapi (inf);
+}
+
+/* client_process_get_info callback.  */
+
+static amd_dbgapi_status_t
+amd_dbgapi_client_process_get_info_callback
+  (amd_dbgapi_client_process_id_t client_process_id,
+   amd_dbgapi_client_process_info_t query, size_t value_size, void *value)
+{
+  inferior *inf = reinterpret_cast<inferior *> (client_process_id);
+
+  if (inf->pid == 0)
+    return AMD_DBGAPI_STATUS_ERROR_PROCESS_EXITED;
+
+  if (value == nullptr)
+    return AMD_DBGAPI_STATUS_ERROR_INVALID_ARGUMENT;
+
+  switch (query)
+    {
+    case AMD_DBGAPI_CLIENT_PROCESS_INFO_OS_PID:
+      if (value_size != sizeof (amd_dbgapi_os_process_id_t))
+	return AMD_DBGAPI_STATUS_ERROR_INVALID_ARGUMENT_COMPATIBILITY;
+
+      *static_cast<amd_dbgapi_os_process_id_t *> (value) = inf->pid;
+      return AMD_DBGAPI_STATUS_SUCCESS;
+
+    case AMD_DBGAPI_CLIENT_PROCESS_INFO_CORE_STATE:
+      return AMD_DBGAPI_STATUS_ERROR_NOT_AVAILABLE;
+    }
+
+  return AMD_DBGAPI_STATUS_ERROR_INVALID_ARGUMENT;
+}
+
+/* insert_breakpoint callback.  */
+
+static amd_dbgapi_status_t
+amd_dbgapi_insert_breakpoint_callback
+  (amd_dbgapi_client_process_id_t client_process_id,
+   amd_dbgapi_global_address_t address,
+   amd_dbgapi_breakpoint_id_t breakpoint_id)
+{
+  inferior *inf = reinterpret_cast<inferior *> (client_process_id);
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+  auto it = info.breakpoint_map.find (breakpoint_id.handle);
+  if (it != info.breakpoint_map.end ())
+    return AMD_DBGAPI_STATUS_ERROR_INVALID_BREAKPOINT_ID;
+
+  /* We need to find the address in the given inferior's program space.  */
+  scoped_restore_current_thread restore_thread;
+  switch_to_inferior_no_thread (inf);
+
+  /* Create a new breakpoint.  */
+  struct obj_section *section = find_pc_section (address);
+  if (section == nullptr || section->objfile == nullptr)
+    return AMD_DBGAPI_STATUS_ERROR;
+
+  std::unique_ptr<breakpoint> bp_up
+    (new amd_dbgapi_target_breakpoint (section->objfile->arch (), address));
+
+  breakpoint *bp = install_breakpoint (true, std::move (bp_up), 1);
+
+  info.breakpoint_map.emplace (breakpoint_id.handle, bp);
+  return AMD_DBGAPI_STATUS_SUCCESS;
+}
+
+/* remove_breakpoint callback.  */
+
+static amd_dbgapi_status_t
+amd_dbgapi_remove_breakpoint_callback
+  (amd_dbgapi_client_process_id_t client_process_id,
+   amd_dbgapi_breakpoint_id_t breakpoint_id)
+{
+  inferior *inf = reinterpret_cast<inferior *> (client_process_id);
+  amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+  auto it = info.breakpoint_map.find (breakpoint_id.handle);
+  if (it == info.breakpoint_map.end ())
+    return AMD_DBGAPI_STATUS_ERROR_INVALID_BREAKPOINT_ID;
+
+  delete_breakpoint (it->second);
+  info.breakpoint_map.erase (it);
+
+  return AMD_DBGAPI_STATUS_SUCCESS;
+}
+
+/* xfer_global_memory callback.  */
+
+static amd_dbgapi_status_t
+amd_dbgapi_xfer_global_memory_callback
+  (amd_dbgapi_client_process_id_t client_process_id,
+   amd_dbgapi_global_address_t global_address,
+   amd_dbgapi_size_t *value_size, void *read_buffer,
+   const void *write_buffer)
+{
+  if ((read_buffer != nullptr) == (write_buffer != nullptr))
+    return AMD_DBGAPI_STATUS_ERROR_INVALID_ARGUMENT_COMPATIBILITY;
+
+  inferior *inf = reinterpret_cast<inferior *> (client_process_id);
+
+  /* We need to set inferior_ptid / current_inferior as those are
+     used by the target which will process the xfer_partial request.
+
+     Note that we end up here when amd-dbgapi tries to access device memory or
+     register content which are at this point mapped/saved in the host process
+     memory.  As a consequence, unwinding GPU frames will most likely call into
+     here.  If we used switch_to_thread to select a host thread, this would
+     implicitly call reinit_frame_cache.  We do not want to clear the frame
+     cache while trying to build it.  */
+  scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
+  scoped_restore_current_inferior restore_current_inferior;
+  scoped_restore_current_program_space restore_program_space;
+  inferior_ptid = ptid_t (inf->pid);
+  set_current_inferior (inf);
+  set_current_program_space (inf->pspace);
+
+  target_xfer_status status
+    = target_xfer_partial (inf->top_target (), TARGET_OBJECT_RAW_MEMORY,
+			   nullptr, static_cast<gdb_byte *> (read_buffer),
+			   static_cast<const gdb_byte *> (write_buffer),
+			   global_address, *value_size, value_size);
+
+  if (status == TARGET_XFER_EOF)
+    return AMD_DBGAPI_STATUS_ERROR_PROCESS_EXITED;
+  else if (status != TARGET_XFER_OK)
+    return AMD_DBGAPI_STATUS_ERROR_MEMORY_ACCESS;
+
+  return AMD_DBGAPI_STATUS_SUCCESS;
+}
+
+/* signal_received observer.  */
+
+static void
+amd_dbgapi_target_signal_received (gdb_signal sig)
+{
+  const amd_dbgapi_inferior_info &info
+    = get_amd_dbgapi_inferior_info (current_inferior ());
+
+  if (info.process_id == AMD_DBGAPI_PROCESS_NONE)
+    return;
+
+  if (!ptid_is_gpu (inferior_thread ()->ptid))
+    return;
+
+  if (sig != GDB_SIGNAL_SEGV && sig != GDB_SIGNAL_BUS)
+    return;
+
+  if (!info.precise_memory.enabled)
+    gdb_printf (_("\
+Warning: precise memory violation signal reporting is not enabled, reported\n\
+location may not be accurate.  See \"show amdgpu precise-memory\".\n"));
+}
+
+/* Style for some kinds of messages.  */
+
+static cli_style_option fatal_error_style
+  ("amd_dbgapi_fatal_error", ui_file_style::RED);
+static cli_style_option warning_style
+  ("amd_dbgapi_warning", ui_file_style::YELLOW);
+
+/* BLACK + BOLD means dark gray.  */
+static cli_style_option trace_style
+  ("amd_dbgapi_trace", ui_file_style::BLACK, ui_file_style::BOLD);
+
+/* log_message callback.  */
+
+static void
+amd_dbgapi_log_message_callback (amd_dbgapi_log_level_t level,
+				 const char *message)
+{
+  std::optional<target_terminal::scoped_restore_terminal_state> tstate;
+
+  if (target_supports_terminal_ours ())
+    {
+      tstate.emplace ();
+      target_terminal::ours_for_output ();
+    }
+
+  /* Error and warning messages are meant to be printed to the user.  */
+  if (level == AMD_DBGAPI_LOG_LEVEL_FATAL_ERROR
+      || level == AMD_DBGAPI_LOG_LEVEL_WARNING)
+    {
+      begin_line ();
+      ui_file_style style = (level == AMD_DBGAPI_LOG_LEVEL_FATAL_ERROR
+			     ? fatal_error_style : warning_style).style ();
+      gdb_printf (gdb_stderr, "%ps\n", styled_string (style, message));
+      return;
+    }
+
+  /* Print other messages as debug logs.  TRACE and VERBOSE messages are
+     very verbose, print them dark grey so it's easier to spot other messages
+     through the flood.  */
+  if (level >= AMD_DBGAPI_LOG_LEVEL_TRACE)
+    {
+      debug_prefixed_printf (amd_dbgapi_lib_debug_module (), nullptr, "%ps",
+			     styled_string (trace_style.style (), message));
+      return;
+    }
+
+  debug_prefixed_printf (amd_dbgapi_lib_debug_module (), nullptr, "%s",
+			 message);
+}
+
+/* Callbacks passed to amd_dbgapi_initialize.  */
+
+static amd_dbgapi_callbacks_t dbgapi_callbacks = {
+  .allocate_memory = malloc,
+  .deallocate_memory = free,
+  .client_process_get_info = amd_dbgapi_client_process_get_info_callback,
+  .insert_breakpoint = amd_dbgapi_insert_breakpoint_callback,
+  .remove_breakpoint = amd_dbgapi_remove_breakpoint_callback,
+  .xfer_global_memory = amd_dbgapi_xfer_global_memory_callback,
+  .log_message = amd_dbgapi_log_message_callback,
+};
+
+void
+amd_dbgapi_target::close ()
+{
+  if (amd_dbgapi_async_event_handler != nullptr)
+    delete_async_event_handler (&amd_dbgapi_async_event_handler);
+}
+
+/* Callback for "show amdgpu precise-memory".  */
+
+static void
+show_precise_memory_mode (struct ui_file *file, int from_tty,
+			  struct cmd_list_element *c, const char *value)
+{
+  const amd_dbgapi_inferior_info &info
+    = get_amd_dbgapi_inferior_info (current_inferior ());
+
+  gdb_printf (file,
+	      _("AMDGPU precise memory access reporting is %s "
+		"(currently %s).\n"),
+	      info.precise_memory.requested ? "on" : "off",
+	      info.precise_memory.enabled ? "enabled" : "disabled");
+}
+
+/* Callback for "set amdgpu precise-memory".  */
+
+static void
+set_precise_memory_mode (bool value)
+{
+  amd_dbgapi_inferior_info &info
+    = get_amd_dbgapi_inferior_info (current_inferior ());
+
+  info.precise_memory.requested = value;
+
+  if (info.process_id != AMD_DBGAPI_PROCESS_NONE)
+    set_process_memory_precision (info);
+}
+
+/* Return whether precise-memory is requested for the current inferior.  */
+
+static bool
+get_precise_memory_mode ()
+{
+  const amd_dbgapi_inferior_info &info
+    = get_amd_dbgapi_inferior_info (current_inferior ());
+
+  return info.precise_memory.requested;
+}
+
+/* List of set/show amdgpu commands.  */
+struct cmd_list_element *set_amdgpu_list;
+struct cmd_list_element *show_amdgpu_list;
+
+/* List of set/show debug amd-dbgapi-lib commands.  */
+struct cmd_list_element *set_debug_amd_dbgapi_lib_list;
+struct cmd_list_element *show_debug_amd_dbgapi_lib_list;
+
+/* Mapping from amd-dbgapi log level enum values to text.  */
+
+static constexpr const char *debug_amd_dbgapi_lib_log_level_enums[] =
+{
+  /* [AMD_DBGAPI_LOG_LEVEL_NONE] = */ "off",
+  /* [AMD_DBGAPI_LOG_LEVEL_FATAL_ERROR] = */ "error",
+  /* [AMD_DBGAPI_LOG_LEVEL_WARNING] = */ "warning",
+  /* [AMD_DBGAPI_LOG_LEVEL_INFO] = */ "info",
+  /* [AMD_DBGAPI_LOG_LEVEL_TRACE] = */ "trace",
+  /* [AMD_DBGAPI_LOG_LEVEL_VERBOSE] = */ "verbose",
+  nullptr
+};
+
+/* Storage for "set debug amd-dbgapi-lib log-level".  */
+
+static const char *debug_amd_dbgapi_lib_log_level
+  = debug_amd_dbgapi_lib_log_level_enums[AMD_DBGAPI_LOG_LEVEL_WARNING];
+
+/* Get the amd-dbgapi library log level requested by the user.  */
+
+static amd_dbgapi_log_level_t
+get_debug_amd_dbgapi_lib_log_level ()
+{
+  for (size_t pos = 0;
+       debug_amd_dbgapi_lib_log_level_enums[pos] != nullptr;
+       ++pos)
+    if (debug_amd_dbgapi_lib_log_level
+	== debug_amd_dbgapi_lib_log_level_enums[pos])
+      return static_cast<amd_dbgapi_log_level_t> (pos);
+
+  gdb_assert_not_reached ("invalid log level");
+}
+
+/* Callback for "set debug amd-dbgapi log-level", apply the selected log level
+   to the library.  */
+
+static void
+set_debug_amd_dbgapi_lib_log_level (const char *args, int from_tty,
+				    struct cmd_list_element *c)
+{
+  amd_dbgapi_set_log_level (get_debug_amd_dbgapi_lib_log_level ());
+}
+
+/* Callback for "show debug amd-dbgapi log-level".  */
+
+static void
+show_debug_amd_dbgapi_lib_log_level (struct ui_file *file, int from_tty,
+				     struct cmd_list_element *c,
+				     const char *value)
+{
+  gdb_printf (file, _("The amd-dbgapi library log level is %s.\n"), value);
+}
+
+/* If the amd-dbgapi library is not attached to any process, finalize and
+   re-initialize it so that the handle ID numbers will all start from the
+   beginning again.  This is only for convenience, not essential.  */
+
+static void
+maybe_reset_amd_dbgapi ()
+{
+  for (inferior *inf : all_non_exited_inferiors ())
+    {
+      const amd_dbgapi_inferior_info &info = get_amd_dbgapi_inferior_info (inf);
+
+      if (info.process_id != AMD_DBGAPI_PROCESS_NONE)
+	return;
+    }
+
+  amd_dbgapi_status_t status = amd_dbgapi_finalize ();
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd-dbgapi failed to finalize (%s)"),
+	   get_status_string (status));
+
+  status = amd_dbgapi_initialize (&dbgapi_callbacks);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd-dbgapi failed to initialize (%s)"),
+	   get_status_string (status));
+}
+
+INIT_GDB_FILE (amd_dbgapi_target)
+{
+  /* Make sure the loaded debugger library version is greater than or equal to
+     the one used to build GDB.  */
+  uint32_t major, minor, patch;
+  amd_dbgapi_get_version (&major, &minor, &patch);
+  if (major != AMD_DBGAPI_VERSION_MAJOR || minor < AMD_DBGAPI_VERSION_MINOR)
+    error (_("amd-dbgapi library version mismatch, got %d.%d.%d, need %d.%d+"),
+	   major, minor, patch, AMD_DBGAPI_VERSION_MAJOR,
+	   AMD_DBGAPI_VERSION_MINOR);
+
+  /* Initialize the AMD Debugger API.  */
+  amd_dbgapi_status_t status = amd_dbgapi_initialize (&dbgapi_callbacks);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd-dbgapi failed to initialize (%s)"),
+	   get_status_string (status));
+
+  /* Set the initial log level.  */
+  amd_dbgapi_set_log_level (get_debug_amd_dbgapi_lib_log_level ());
+
+  /* Install observers.  */
+  gdb::observers::inferior_cloned.attach (amd_dbgapi_target_inferior_cloned,
+					  "amd-dbgapi");
+  gdb::observers::signal_received.attach (amd_dbgapi_target_signal_received,
+					  "amd-dbgapi");
+  gdb::observers::inferior_created.attach
+    (amd_dbgapi_target_inferior_created,
+     amd_dbgapi_target_inferior_created_observer_token, "amd-dbgapi");
+  gdb::observers::inferior_execd.attach
+    (amd_dbgapi_inferior_execd, amd_dbgapi_target_inferior_execd_observer_token,
+     "amd-dbgapi");
+  gdb::observers::inferior_forked.attach (amd_dbgapi_inferior_forked, "amd-dbgapi");
+  gdb::observers::inferior_exit.attach (amd_dbgapi_inferior_exited, "amd-dbgapi");
+  gdb::observers::inferior_pre_detach.attach (amd_dbgapi_inferior_pre_detach, "amd-dbgapi");
+  gdb::observers::thread_deleted.attach (amd_dbgapi_thread_deleted, "amd-dbgapi");
+
+  add_basic_prefix_cmd ("amdgpu", no_class,
+			_("Generic command for setting amdgpu flags."),
+			&set_amdgpu_list, 0, &setlist);
+
+  add_show_prefix_cmd ("amdgpu", no_class,
+		       _("Generic command for showing amdgpu flags."),
+		       &show_amdgpu_list, 0, &showlist);
+
+  add_setshow_boolean_cmd ("precise-memory", no_class,
+			   _("Set precise-memory mode."),
+			   _("Show precise-memory mode."), _("\
+If on, precise memory reporting is enabled if/when the inferior is running.\n\
+If off (default), precise memory reporting is disabled."),
+			   set_precise_memory_mode,
+			   get_precise_memory_mode,
+			   show_precise_memory_mode,
+			   &set_amdgpu_list, &show_amdgpu_list);
+
+  add_basic_prefix_cmd ("amd-dbgapi-lib", no_class,
+			_("Generic command for setting amd-dbgapi library "
+			  "debugging flags."),
+			&set_debug_amd_dbgapi_lib_list, 0, &setdebuglist);
+
+  add_show_prefix_cmd ("amd-dbgapi-lib", no_class,
+		       _("Generic command for showing amd-dbgapi library "
+			 "debugging flags."),
+		       &show_debug_amd_dbgapi_lib_list, 0, &showdebuglist);
+
+  add_setshow_enum_cmd ("log-level", class_maintenance,
+			debug_amd_dbgapi_lib_log_level_enums,
+			&debug_amd_dbgapi_lib_log_level,
+			_("Set the amd-dbgapi library log level."),
+			_("Show the amd-dbgapi library log level."),
+			_("off     == no logging is enabled\n"
+			  "error   == fatal errors are reported\n"
+			  "warning == fatal errors and warnings are reported\n"
+			  "info    == fatal errors, warnings, and info "
+			  "messages are reported\n"
+			  "trace   == fatal errors, warnings, info, and "
+			  "API tracing messages are reported\n"
+			  "verbose == all messages are reported"),
+			set_debug_amd_dbgapi_lib_log_level,
+			show_debug_amd_dbgapi_lib_log_level,
+			&set_debug_amd_dbgapi_lib_list,
+			&show_debug_amd_dbgapi_lib_list);
+
+  add_setshow_boolean_cmd ("amd-dbgapi", class_maintenance,
+			   &debug_amd_dbgapi,
+			   _("Set debugging of amd-dbgapi target."),
+			   _("Show debugging of amd-dbgapi target."),
+			   _("\
+When on, print debug messages relating to the amd-dbgapi target."),
+			   nullptr, nullptr,
+			   &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.20200303/gdb/amd-dbgapi-target.h ./gdb/amd-dbgapi-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amd-dbgapi-target.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amd-dbgapi-target.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,121 @@
+/* Target used to communicate with the AMD Debugger API.
+
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_AMD_DBGAPI_TARGET_H
+#define GDB_AMD_DBGAPI_TARGET_H
+
+#include "gdbsupport/observable.h"
+
+#include <amd-dbgapi/amd-dbgapi.h>
+
+struct inferior;
+
+namespace detail
+{
+
+template <typename T>
+using is_amd_dbgapi_handle
+  = gdb::Or<std::is_same<T, amd_dbgapi_address_class_id_t>,
+	    std::is_same<T, amd_dbgapi_address_space_id_t>,
+	    std::is_same<T, amd_dbgapi_architecture_id_t>,
+	    std::is_same<T, amd_dbgapi_agent_id_t>,
+	    std::is_same<T, amd_dbgapi_breakpoint_id_t>,
+	    std::is_same<T, amd_dbgapi_code_object_id_t>,
+	    std::is_same<T, amd_dbgapi_dispatch_id_t>,
+	    std::is_same<T, amd_dbgapi_displaced_stepping_id_t>,
+	    std::is_same<T, amd_dbgapi_event_id_t>,
+	    std::is_same<T, amd_dbgapi_process_id_t>,
+	    std::is_same<T, amd_dbgapi_queue_id_t>,
+	    std::is_same<T, amd_dbgapi_register_class_id_t>,
+	    std::is_same<T, amd_dbgapi_register_id_t>,
+	    std::is_same<T, amd_dbgapi_watchpoint_id_t>,
+	    std::is_same<T, amd_dbgapi_wave_id_t>>;
+
+} /* namespace detail */
+
+/* Get the token of amd-dbgapi's inferior_created observer.  */
+
+const gdb::observers::token &
+  get_amd_dbgapi_target_inferior_created_observer_token ();
+
+/* Get the token of amd-dbgapi's inferior_execd observer.  */
+
+const gdb::observers::token &
+  get_amd_dbgapi_target_inferior_execd_observer_token ();
+
+/* Comparison operators for amd-dbgapi handle types.  */
+
+template <typename T,
+	  typename = gdb::Requires<detail::is_amd_dbgapi_handle<T>>>
+bool
+operator== (const T &lhs, const T &rhs)
+{
+  return lhs.handle == rhs.handle;
+}
+
+template <typename T,
+	  typename = gdb::Requires<detail::is_amd_dbgapi_handle<T>>>
+bool
+operator!= (const T &lhs, const T &rhs)
+{
+  return !(lhs == rhs);
+}
+
+/* Return true if the given ptid is a GPU thread (wave) ptid.  */
+
+static inline bool
+ptid_is_gpu (ptid_t ptid)
+{
+  /* FIXME: Currently using values that are known not to conflict with other
+     processes to indicate if it is a GPU thread.  ptid.pid 1 is the init
+     process and is the only process that could have a ptid.lwp of 1.  The init
+     process cannot have a GPU.  No other process can have a ptid.lwp of 1.
+     The GPU wave ID is stored in the ptid.tid.  */
+  return ptid.pid () != 1 && ptid.lwp () == 1;
+}
+
+/* Return INF's amd_dbgapi process id.  */
+
+amd_dbgapi_process_id_t get_amd_dbgapi_process_id (inferior *inf);
+
+/* Get the amd-dbgapi wave id for PTID.  */
+
+static inline amd_dbgapi_wave_id_t
+get_amd_dbgapi_wave_id (ptid_t ptid)
+{
+  gdb_assert (ptid_is_gpu (ptid));
+  return amd_dbgapi_wave_id_t {
+    static_cast<decltype (amd_dbgapi_wave_id_t::handle)> (ptid.tid ())
+  };
+}
+
+/* Get the textual version of STATUS.
+
+   Always returns non-nullptr, and asserts that STATUS has a valid value.  */
+
+static inline const char *
+get_status_string (amd_dbgapi_status_t status)
+{
+  const char *ret;
+  status = amd_dbgapi_get_status_string (status, &ret);
+  gdb_assert (status == AMD_DBGAPI_STATUS_SUCCESS);
+  return ret;
+}
+
+#endif /* GDB_AMD_DBGAPI_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.20200303/gdb/amdgpu-tdep.c ./gdb/amdgpu-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amdgpu-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amdgpu-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,1382 @@
+/* Target-dependent code for the AMDGPU architectures.
+
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "amd-dbgapi-target.h"
+#include "amdgpu-tdep.h"
+#include "arch-utils.h"
+#include "disasm.h"
+#include "dwarf2/frame.h"
+#include "frame-unwind.h"
+#include "gdbarch.h"
+#include "gdbsupport/selftest.h"
+#include "gdbtypes.h"
+#include "inferior.h"
+#include "producer.h"
+#include "reggroups.h"
+
+/* See amdgpu-tdep.h.  */
+
+bool
+is_amdgpu_arch (struct gdbarch *arch)
+{
+  gdb_assert (arch != nullptr);
+  return gdbarch_bfd_arch_info (arch)->arch == bfd_arch_amdgcn;
+}
+
+/* See amdgpu-tdep.h.  */
+
+amdgpu_gdbarch_tdep *
+get_amdgpu_gdbarch_tdep (gdbarch *arch)
+{
+  return gdbarch_tdep<amdgpu_gdbarch_tdep> (arch);
+}
+
+/* Dummy implementation of gdbarch_return_value_as_value.  */
+
+static return_value_convention
+amdgpu_return_value_as_value (gdbarch *arch, value *function, type *valtype,
+			      regcache *regcache, value **read_value,
+			      const gdb_byte *writebuf)
+{
+  gdb_assert_not_reached ("not implemented");
+}
+
+/* Return the name of register REGNUM.  */
+
+static const char *
+amdgpu_register_name (struct gdbarch *gdbarch, int regnum)
+{
+  /* The list of registers reported by amd-dbgapi for a given architecture
+     contains some duplicate names.  For instance, there is an "exec" register
+     for waves in the wave32 mode and one for the waves in the wave64 mode.
+     However, at most one register with a given name is actually allocated for
+     a specific wave.  If INFERIOR_PTID represents a GPU wave, we query
+     amd-dbgapi to know whether the requested register actually exists for the
+     current wave, so there won't be duplicates in the the register names we
+     report for that wave.
+
+     But there are two known cases where INFERIOR_PTID doesn't represent a GPU
+     wave:
+
+      - The user does "set arch amdgcn:gfxNNN" followed with "maint print
+	registers"
+      - The "register_name" selftest
+
+     In these cases, we can't query amd-dbgapi to know whether we should hide
+     the register or not.  The "register_name" selftest checks that there aren't
+     duplicates in the register names returned by the gdbarch, so if we simply
+     return all register names, that test will fail.  The other simple option is
+     to never return a register name, which is what we do here.  */
+  if (!ptid_is_gpu (inferior_ptid))
+    return "";
+
+  amd_dbgapi_wave_id_t wave_id = get_amd_dbgapi_wave_id (inferior_ptid);
+  amdgpu_gdbarch_tdep *tdep = get_amdgpu_gdbarch_tdep (gdbarch);
+
+  amd_dbgapi_register_exists_t register_exists;
+  if (amd_dbgapi_wave_register_exists (wave_id, tdep->register_ids[regnum],
+				       &register_exists)
+	!= AMD_DBGAPI_STATUS_SUCCESS
+      || register_exists != AMD_DBGAPI_REGISTER_PRESENT)
+    return "";
+
+  return tdep->register_names[regnum].c_str ();
+}
+
+/* Return the internal register number for the DWARF register number DWARF_REG.
+
+   Return -1 if there's no internal register mapping to DWARF_REG.  */
+
+static int
+amdgpu_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int dwarf_reg)
+{
+  amdgpu_gdbarch_tdep *tdep = get_amdgpu_gdbarch_tdep (gdbarch);
+
+  if (dwarf_reg < tdep->dwarf_regnum_to_gdb_regnum.size ())
+    return tdep->dwarf_regnum_to_gdb_regnum[dwarf_reg];
+
+  return -1;
+}
+
+/* A hierarchy of classes to represent an amd-dbgapi register type.  */
+
+struct amd_dbgapi_register_type
+{
+  enum class kind
+    {
+      INTEGER,
+      FLOAT,
+      DOUBLE,
+      VECTOR,
+      CODE_PTR,
+      FLAGS,
+      ENUM,
+    };
+
+  amd_dbgapi_register_type (kind kind, std::string lookup_name)
+    : m_kind (kind), m_lookup_name (std::move (lookup_name))
+  {}
+
+  virtual ~amd_dbgapi_register_type () = default;
+
+  /* Return the type's kind.  */
+  kind kind () const
+  { return m_kind; }
+
+  /* Name to use for this type in the existing type map.  */
+  const std::string &lookup_name () const
+  { return m_lookup_name; }
+
+private:
+  enum kind m_kind;
+  std::string m_lookup_name;
+};
+
+using amd_dbgapi_register_type_up = std::unique_ptr<amd_dbgapi_register_type>;
+
+struct amd_dbgapi_register_type_integer : public amd_dbgapi_register_type
+{
+  amd_dbgapi_register_type_integer (bool is_unsigned, unsigned int bit_size)
+    : amd_dbgapi_register_type
+	(kind::INTEGER,
+	 string_printf ("%sint%d", is_unsigned ? "u" : "", bit_size)),
+      m_is_unsigned (is_unsigned),
+      m_bit_size (bit_size)
+  {}
+
+  bool is_unsigned () const
+  { return m_is_unsigned; }
+
+  unsigned int bit_size () const
+  { return m_bit_size; }
+
+private:
+  bool m_is_unsigned;
+  unsigned int m_bit_size;
+};
+
+struct amd_dbgapi_register_type_float : public amd_dbgapi_register_type
+{
+  amd_dbgapi_register_type_float ()
+    : amd_dbgapi_register_type (kind::FLOAT, "float")
+  {}
+};
+
+struct amd_dbgapi_register_type_double : public amd_dbgapi_register_type
+{
+  amd_dbgapi_register_type_double ()
+    : amd_dbgapi_register_type (kind::DOUBLE, "double")
+  {}
+};
+
+struct amd_dbgapi_register_type_vector : public amd_dbgapi_register_type
+{
+  amd_dbgapi_register_type_vector (const amd_dbgapi_register_type &element_type,
+				   unsigned int count)
+    : amd_dbgapi_register_type (kind::VECTOR,
+				make_lookup_name (element_type, count)),
+      m_element_type (element_type),
+      m_count (count)
+  {}
+
+  const amd_dbgapi_register_type &element_type () const
+  { return m_element_type; }
+
+  unsigned int count () const
+  { return m_count; }
+
+  static std::string make_lookup_name
+    (const amd_dbgapi_register_type &element_type, unsigned int count)
+  {
+    return string_printf ("%s[%d]", element_type.lookup_name ().c_str (),
+			  count);
+  }
+
+private:
+  const amd_dbgapi_register_type &m_element_type;
+  unsigned int m_count;
+};
+
+struct amd_dbgapi_register_type_code_ptr : public amd_dbgapi_register_type
+{
+  amd_dbgapi_register_type_code_ptr ()
+    : amd_dbgapi_register_type (kind::CODE_PTR, "void (*)()")
+  {}
+};
+
+struct amd_dbgapi_register_type_flags : public amd_dbgapi_register_type
+{
+  struct field
+  {
+    std::string name;
+    unsigned int bit_pos_start;
+    unsigned int bit_pos_end;
+    const amd_dbgapi_register_type *type;
+  };
+
+  using container_type = std::vector<field>;
+  using const_iterator_type = container_type::const_iterator;
+
+  amd_dbgapi_register_type_flags (unsigned int bit_size, std::string_view name)
+    : amd_dbgapi_register_type (kind::FLAGS,
+				make_lookup_name (bit_size, name)),
+      m_bit_size (bit_size),
+      m_name (std::move (name))
+  {}
+
+  unsigned int bit_size () const
+  { return m_bit_size; }
+
+  void add_field (std::string name, unsigned int bit_pos_start,
+		  unsigned int bit_pos_end,
+		  const amd_dbgapi_register_type *type)
+  {
+    m_fields.push_back (field {std::move (name), bit_pos_start,
+			       bit_pos_end, type});
+  }
+
+  container_type::size_type size () const
+  { return m_fields.size (); }
+
+  const field &operator[] (container_type::size_type pos) const
+  { return m_fields[pos]; }
+
+  const_iterator_type begin () const
+  { return m_fields.begin (); }
+
+  const_iterator_type end () const
+  { return m_fields.end (); }
+
+  const std::string &name () const
+  { return m_name; }
+
+  static std::string make_lookup_name (int bits, std::string_view name)
+  {
+    std::string res = string_printf ("flags%d_t ", bits);
+    res.append (name.data (), name.size ());
+    return res;
+  }
+
+private:
+  unsigned int m_bit_size;
+  container_type m_fields;
+  std::string m_name;
+};
+
+using amd_dbgapi_register_type_flags_up
+  = std::unique_ptr<amd_dbgapi_register_type_flags>;
+
+struct amd_dbgapi_register_type_enum : public amd_dbgapi_register_type
+{
+  struct enumerator
+  {
+    std::string name;
+    ULONGEST value;
+  };
+
+  using container_type = std::vector<enumerator>;
+  using const_iterator_type = container_type::const_iterator;
+
+  amd_dbgapi_register_type_enum (std::string_view name)
+    : amd_dbgapi_register_type (kind::ENUM, make_lookup_name (name)),
+      m_name (name.data (), name.length ())
+  {}
+
+  void set_bit_size (int bit_size)
+  { m_bit_size = bit_size; }
+
+  unsigned int bit_size () const
+  { return m_bit_size; }
+
+  void add_enumerator (std::string name, ULONGEST value)
+  { m_enumerators.push_back (enumerator {std::move (name), value}); }
+
+  container_type::size_type size () const
+  { return m_enumerators.size (); }
+
+  const enumerator &operator[] (container_type::size_type pos) const
+  { return m_enumerators[pos]; }
+
+  const_iterator_type begin () const
+  { return m_enumerators.begin (); }
+
+  const_iterator_type end () const
+  { return m_enumerators.end (); }
+
+  const std::string &name () const
+  { return m_name; }
+
+  static std::string make_lookup_name (std::string_view name)
+  {
+    std::string res = "enum ";
+    res.append (name.data (), name.length ());
+    return res;
+  }
+
+private:
+  unsigned int m_bit_size = 32;
+  container_type m_enumerators;
+  std::string m_name;
+};
+
+using amd_dbgapi_register_type_enum_up
+  = std::unique_ptr<amd_dbgapi_register_type_enum>;
+
+/* Map type lookup names to types.  */
+using amd_dbgapi_register_type_map
+  = std::unordered_map<std::string, amd_dbgapi_register_type_up>;
+
+/* Parse S as a ULONGEST, raise an error on overflow.  */
+
+static ULONGEST
+try_strtoulst (std::string_view s)
+{
+  errno = 0;
+  ULONGEST value = strtoulst (s.data (), nullptr, 0);
+  if (errno != 0)
+    error (_("Failed to parse integer."));
+
+  return value;
+};
+
+/* Shared regex bits.  */
+#define IDENTIFIER "[A-Za-z0-9_.]+"
+#define WS "[ \t]+"
+#define WSOPT "[ \t]*"
+
+static const amd_dbgapi_register_type &
+parse_amd_dbgapi_register_type (std::string_view type_name,
+				amd_dbgapi_register_type_map &type_map);
+
+
+/* parse_amd_dbgapi_register_type helper for enum types.  */
+
+static void
+parse_amd_dbgapi_register_type_enum_fields
+  (amd_dbgapi_register_type_enum &enum_type, std::string_view fields)
+{
+  compiled_regex regex (/* name */
+			"^(" IDENTIFIER ")"
+			WSOPT "=" WSOPT
+			/* value */
+			"([0-9]+)"
+			WSOPT "(," WSOPT ")?",
+			REG_EXTENDED,
+			_("Error in AMDGPU enum register type regex"));
+  regmatch_t matches[4];
+
+  while (!fields.empty ())
+    {
+      int res = regex.exec (fields.data (), ARRAY_SIZE (matches), matches, 0);
+      if (res == REG_NOMATCH)
+	error (_("Failed to parse enum fields"));
+
+      auto sv_from_match = [fields] (const regmatch_t &m)
+	{ return fields.substr (m.rm_so, m.rm_eo - m.rm_so); };
+
+      std::string_view name = sv_from_match (matches[1]);
+      std::string_view value_str = sv_from_match (matches[2]);
+      ULONGEST value = try_strtoulst (value_str);
+
+      if (value > std::numeric_limits<uint32_t>::max ())
+	enum_type.set_bit_size (64);
+
+      enum_type.add_enumerator (std::string (name), value);
+
+      fields = fields.substr (matches[0].rm_eo);
+    }
+}
+
+/* parse_amd_dbgapi_register_type helper for flags types.  */
+
+static void
+parse_amd_dbgapi_register_type_flags_fields
+  (amd_dbgapi_register_type_flags &flags_type,
+   int bits, std::string_view name, std::string_view fields,
+   amd_dbgapi_register_type_map &type_map)
+{
+  gdb_assert (bits == 32 || bits == 64);
+
+  std::string regex_str
+    = string_printf (/* type */
+		     "^(bool|uint%d_t|enum" WS IDENTIFIER WSOPT "(\\{[^}]*})?)"
+		     WS
+		     /* name */
+		     "(" IDENTIFIER ")" WSOPT
+		     /* bit position */
+		     "@([0-9]+)(-[0-9]+)?" WSOPT ";" WSOPT,
+		     bits);
+  compiled_regex regex (regex_str.c_str (), REG_EXTENDED,
+			_("Error in AMDGPU register type flags fields regex"));
+  regmatch_t matches[6];
+
+  while (!fields.empty ())
+    {
+      int res = regex.exec (fields.data (), ARRAY_SIZE (matches), matches, 0);
+      if (res == REG_NOMATCH)
+	error (_("Failed to parse flags type fields string"));
+
+      auto sv_from_match = [fields] (const regmatch_t &m)
+	{ return fields.substr (m.rm_so, m.rm_eo - m.rm_so); };
+
+      std::string_view field_type_str = sv_from_match (matches[1]);
+      std::string_view field_name = sv_from_match (matches[3]);
+      std::string_view pos_begin_str = sv_from_match (matches[4]);
+      ULONGEST pos_begin = try_strtoulst (pos_begin_str);
+
+      if (field_type_str == "bool")
+	flags_type.add_field (std::string (field_name), pos_begin, pos_begin,
+			      nullptr);
+      else
+	{
+	  if (matches[5].rm_so == -1)
+	    error (_("Missing end bit position"));
+
+	  std::string_view pos_end_str = sv_from_match (matches[5]);
+	  ULONGEST pos_end = try_strtoulst (pos_end_str.substr (1));
+	  const amd_dbgapi_register_type &field_type
+	    = parse_amd_dbgapi_register_type (field_type_str, type_map);
+	  flags_type.add_field (std::string (field_name), pos_begin, pos_end,
+				&field_type);
+	}
+
+      fields = fields.substr (matches[0].rm_eo);
+    }
+}
+
+/* parse_amd_dbgapi_register_type helper for scalars.  */
+
+static const amd_dbgapi_register_type &
+parse_amd_dbgapi_register_type_scalar (std::string_view name,
+				       amd_dbgapi_register_type_map &type_map)
+{
+  std::string name_str (name);
+  auto it = type_map.find (name_str);
+  if (it != type_map.end ())
+    {
+      enum amd_dbgapi_register_type::kind kind = it->second->kind ();
+      if (kind != amd_dbgapi_register_type::kind::INTEGER
+	  && kind != amd_dbgapi_register_type::kind::FLOAT
+	  && kind != amd_dbgapi_register_type::kind::DOUBLE
+	  && kind != amd_dbgapi_register_type::kind::CODE_PTR)
+	error (_("type mismatch"));
+
+      return *it->second;
+    }
+
+  amd_dbgapi_register_type_up type;
+  if (name == "int32_t")
+    type.reset (new amd_dbgapi_register_type_integer (false, 32));
+  else if (name == "uint32_t")
+    type.reset (new amd_dbgapi_register_type_integer (true, 32));
+  else if (name == "int64_t")
+    type.reset (new amd_dbgapi_register_type_integer (false, 64));
+  else if (name == "uint64_t")
+    type.reset (new amd_dbgapi_register_type_integer (true, 64));
+  else if (name == "float")
+    type.reset (new amd_dbgapi_register_type_float ());
+  else if (name == "double")
+    type.reset (new amd_dbgapi_register_type_double ());
+  else if (name == "void (*)()")
+    type.reset (new amd_dbgapi_register_type_code_ptr ());
+  else
+    error (_("unknown type %s"), name_str.c_str ());
+
+  auto insertion_pair = type_map.emplace (name, std::move (type));
+  return *insertion_pair.first->second;
+}
+
+/* Parse an amd-dbgapi register type string into an amd_dbgapi_register_type
+   object.
+
+   See the documentation of AMD_DBGAPI_REGISTER_INFO_TYPE in amd-dbgapi.h for
+   details about the format.  */
+
+static const amd_dbgapi_register_type &
+parse_amd_dbgapi_register_type (std::string_view type_str,
+				amd_dbgapi_register_type_map &type_map)
+{
+  size_t pos_open_bracket = type_str.find_last_of ('[');
+  auto sv_from_match = [type_str] (const regmatch_t &m)
+    { return type_str.substr (m.rm_so, m.rm_eo - m.rm_so); };
+
+  if (pos_open_bracket != std::string_view::npos)
+    {
+      /* Vector types.  */
+      std::string_view element_type_str
+	= type_str.substr (0, pos_open_bracket);
+      const amd_dbgapi_register_type &element_type
+	= parse_amd_dbgapi_register_type (element_type_str, type_map);
+
+      size_t pos_close_bracket = type_str.find_last_of (']');
+      gdb_assert (pos_close_bracket != std::string_view::npos);
+      std::string_view count_str_view
+	= type_str.substr (pos_open_bracket + 1,
+			    pos_close_bracket - pos_open_bracket);
+      std::string count_str (count_str_view);
+      unsigned int count = std::stoul (count_str);
+
+      std::string lookup_name
+	= amd_dbgapi_register_type_vector::make_lookup_name (element_type, count);
+      auto existing_type_it = type_map.find (lookup_name);
+      if (existing_type_it != type_map.end ())
+	{
+	  gdb_assert (existing_type_it->second->kind ()
+		      == amd_dbgapi_register_type::kind::VECTOR);
+	  return *existing_type_it->second;
+	}
+
+      amd_dbgapi_register_type_up type
+	(new amd_dbgapi_register_type_vector (element_type, count));
+      auto insertion_pair
+	= type_map.emplace (type->lookup_name (), std::move (type));
+      return *insertion_pair.first->second;
+    }
+
+  if (type_str.find ("flags32_t") == 0 || type_str.find ("flags64_t") == 0)
+    {
+      /* Split 'type_str' into 4 tokens: "(type) (name) ({ (fields) })".  */
+      compiled_regex regex ("^(flags32_t|flags64_t)"
+			    WS "(" IDENTIFIER ")" WSOPT
+			    "(\\{" WSOPT "(.*)})?",
+			    REG_EXTENDED,
+			    _("Error in AMDGPU register type regex"));
+
+      regmatch_t matches[5];
+      int res = regex.exec (type_str.data (), ARRAY_SIZE (matches), matches, 0);
+      if (res == REG_NOMATCH)
+	error (_("Failed to parse flags type string"));
+
+      std::string_view flags_keyword = sv_from_match (matches[1]);
+      unsigned int bit_size = flags_keyword == "flags32_t" ? 32 : 64;
+      std::string_view name = sv_from_match (matches[2]);
+      std::string lookup_name
+	= amd_dbgapi_register_type_flags::make_lookup_name (bit_size, name);
+      auto existing_type_it = type_map.find (lookup_name);
+
+      if (matches[3].rm_so == -1)
+	{
+	  /* No braces, lookup existing type.  */
+	  if (existing_type_it == type_map.end ())
+	    error (_("reference to unknown type %s."),
+		   std::string (name).c_str ());
+
+	  if (existing_type_it->second->kind ()
+	      != amd_dbgapi_register_type::kind::FLAGS)
+	    error (_("type mismatch"));
+
+	  return *existing_type_it->second;
+	}
+      else
+	{
+	  /* With braces, it's a definition.  */
+	  if (existing_type_it != type_map.end ())
+	    error (_("re-definition of type %s."),
+		   std::string (name).c_str ());
+
+	  amd_dbgapi_register_type_flags_up flags_type
+	    (new amd_dbgapi_register_type_flags (bit_size, name));
+	  std::string_view fields_without_braces = sv_from_match (matches[4]);
+
+	  parse_amd_dbgapi_register_type_flags_fields
+	    (*flags_type, bit_size, name, fields_without_braces, type_map);
+
+	  auto insertion_pair
+	    = type_map.emplace (flags_type->lookup_name (),
+				std::move (flags_type));
+	  return *insertion_pair.first->second;
+	}
+    }
+
+  if (type_str.find ("enum") == 0)
+    {
+      compiled_regex regex ("^enum" WS "(" IDENTIFIER ")" WSOPT "(\\{" WSOPT "([^}]*)})?",
+			    REG_EXTENDED,
+			    _("Error in AMDGPU register type enum regex"));
+
+      /* Split 'type_name' into 3 tokens: "(name) ( { (fields) } )".  */
+      regmatch_t matches[4];
+      int res = regex.exec (type_str.data (), ARRAY_SIZE (matches), matches, 0);
+      if (res == REG_NOMATCH)
+	error (_("Failed to parse flags type string"));
+
+      std::string_view name = sv_from_match (matches[1]);
+
+      std::string lookup_name
+	= amd_dbgapi_register_type_enum::make_lookup_name (name);
+      auto existing_type_it = type_map.find (lookup_name);
+
+      if (matches[2].rm_so == -1)
+	{
+	  /* No braces, lookup existing type.  */
+	  if (existing_type_it == type_map.end ())
+	    error (_("reference to unknown type %s"),
+		   std::string (name).c_str ());
+
+	  if (existing_type_it->second->kind ()
+	      != amd_dbgapi_register_type::kind::ENUM)
+	    error (_("type mismatch"));
+
+	  return *existing_type_it->second;
+	}
+      else
+	{
+	  /* With braces, it's a definition.  */
+	  if (existing_type_it != type_map.end ())
+	    error (_("re-definition of type %s"),
+		   std::string (name).c_str ());
+
+	  amd_dbgapi_register_type_enum_up enum_type
+	    (new amd_dbgapi_register_type_enum (name));
+	  std::string_view fields_without_braces = sv_from_match (matches[3]);
+
+	  parse_amd_dbgapi_register_type_enum_fields
+	    (*enum_type, fields_without_braces);
+
+	  auto insertion_pair
+	    = type_map.emplace (enum_type->lookup_name (),
+				std::move (enum_type));
+	  return *insertion_pair.first->second;
+	}
+    }
+
+  return parse_amd_dbgapi_register_type_scalar (type_str, type_map);
+}
+
+/* Convert an amd_dbgapi_register_type object to a GDB type.  */
+
+static type *
+amd_dbgapi_register_type_to_gdb_type (const amd_dbgapi_register_type &type,
+				      struct gdbarch *gdbarch)
+{
+  switch (type.kind ())
+    {
+    case amd_dbgapi_register_type::kind::INTEGER:
+      {
+	const auto &integer_type
+	  = gdb::checked_static_cast<const amd_dbgapi_register_type_integer &>
+	      (type);
+	switch (integer_type.bit_size ())
+	  {
+	  case 32:
+	    if (integer_type.is_unsigned ())
+	      return builtin_type (gdbarch)->builtin_uint32;
+	    else
+	      return builtin_type (gdbarch)->builtin_int32;
+
+	  case 64:
+	    if (integer_type.is_unsigned ())
+	      return builtin_type (gdbarch)->builtin_uint64;
+	    else
+	      return builtin_type (gdbarch)->builtin_int64;
+
+	  default:
+	    gdb_assert_not_reached ("invalid bit size");
+	  }
+      }
+
+    case amd_dbgapi_register_type::kind::VECTOR:
+      {
+	const auto &vector_type
+	  = gdb::checked_static_cast<const amd_dbgapi_register_type_vector &>
+	      (type);
+	struct type *element_type
+	  = amd_dbgapi_register_type_to_gdb_type (vector_type.element_type (),
+						  gdbarch);
+	return init_vector_type (element_type, vector_type.count ());
+      }
+
+    case amd_dbgapi_register_type::kind::FLOAT:
+      return builtin_type (gdbarch)->builtin_float;
+
+    case amd_dbgapi_register_type::kind::DOUBLE:
+      return builtin_type (gdbarch)->builtin_double;
+
+    case amd_dbgapi_register_type::kind::CODE_PTR:
+      return builtin_type (gdbarch)->builtin_func_ptr;
+
+    case amd_dbgapi_register_type::kind::FLAGS:
+      {
+	const auto &flags_type
+	  = gdb::checked_static_cast<const amd_dbgapi_register_type_flags &>
+	      (type);
+	struct type *gdb_type
+	  = arch_flags_type (gdbarch, flags_type.name ().c_str (),
+			     flags_type.bit_size ());
+
+	for (const auto &field : flags_type)
+	  {
+	    if (field.type == nullptr)
+	      {
+		gdb_assert (field.bit_pos_start == field.bit_pos_end);
+		append_flags_type_flag (gdb_type, field.bit_pos_start,
+					field.name.c_str ());
+	      }
+	    else
+	      {
+		struct type *field_type
+		  = amd_dbgapi_register_type_to_gdb_type (*field.type, gdbarch);
+		gdb_assert (field_type != nullptr);
+		append_flags_type_field
+		  (gdb_type, field.bit_pos_start,
+		   field.bit_pos_end - field.bit_pos_start + 1,
+		   field_type, field.name.c_str ());
+	      }
+	  }
+
+	return gdb_type;
+      }
+
+    case amd_dbgapi_register_type::kind::ENUM:
+      {
+	const auto &enum_type
+	  = gdb::checked_static_cast<const amd_dbgapi_register_type_enum &>
+	      (type);
+	struct type *gdb_type
+	  = (type_allocator (gdbarch)
+	     .new_type (TYPE_CODE_ENUM, enum_type.bit_size (),
+			enum_type.name ().c_str ()));
+
+	gdb_type->alloc_fields (enum_type.size ());
+	gdb_type->set_is_unsigned (true);
+
+	for (size_t i = 0; i < enum_type.size (); ++i)
+	  {
+	    const auto &field = enum_type[i];
+	    gdb_type->field (i).set_name (xstrdup (field.name.c_str ()));
+	    gdb_type->field (i).set_loc_enumval (field.value);
+	  }
+
+	return gdb_type;
+      }
+
+    default:
+      gdb_assert_not_reached ("unhandled amd_dbgapi_register_type kind");
+    }
+}
+
+static type *
+amdgpu_register_type (struct gdbarch *gdbarch, int regnum)
+{
+  amdgpu_gdbarch_tdep *tdep = get_amdgpu_gdbarch_tdep (gdbarch);
+
+  if (tdep->register_types[regnum] == nullptr)
+    {
+      /* This is done lazily (not at gdbarch initialization time), because it
+	 requires access to builtin_type, which can't be used while the gdbarch
+	 is not fully initialized.  */
+      char *bytes;
+      amd_dbgapi_status_t status
+	= amd_dbgapi_register_get_info (tdep->register_ids[regnum],
+					AMD_DBGAPI_REGISTER_INFO_TYPE,
+					sizeof (bytes), &bytes);
+      if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	error (_("Failed to get register type from amd-dbgapi"));
+
+      gdb::unique_xmalloc_ptr<char> bytes_holder (bytes);
+      amd_dbgapi_register_type_map type_map;
+      const amd_dbgapi_register_type &register_type
+	= parse_amd_dbgapi_register_type (bytes, type_map);
+      tdep->register_types[regnum]
+	= amd_dbgapi_register_type_to_gdb_type (register_type, gdbarch);
+      gdb_assert (tdep->register_types[regnum] != nullptr);
+    }
+
+  return tdep->register_types[regnum];
+}
+
+static int
+amdgpu_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
+			    const reggroup *group)
+{
+  amdgpu_gdbarch_tdep *tdep = get_amdgpu_gdbarch_tdep (gdbarch);
+
+  auto it = tdep->register_class_map.find (group->name ());
+  if (it == tdep->register_class_map.end ())
+    return group == all_reggroup;
+
+  amd_dbgapi_register_class_state_t state;
+  if (amd_dbgapi_register_is_in_register_class (it->second,
+						tdep->register_ids[regnum],
+						&state)
+      != AMD_DBGAPI_STATUS_SUCCESS)
+    return group == all_reggroup;
+
+  return (state == AMD_DBGAPI_REGISTER_CLASS_STATE_MEMBER
+	  || group == all_reggroup);
+}
+
+static int
+amdgpu_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *)
+{
+  return get_amdgpu_gdbarch_tdep (gdbarch)->breakpoint_instruction_size;
+}
+
+static const gdb_byte *
+amdgpu_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
+{
+  *size = kind;
+  return get_amdgpu_gdbarch_tdep (gdbarch)->breakpoint_instruction_bytes.get ();
+}
+
+struct amdgpu_frame_cache
+{
+  CORE_ADDR base;
+  CORE_ADDR pc;
+};
+
+static amdgpu_frame_cache *
+amdgpu_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
+{
+  if (*this_cache != nullptr)
+    return (struct amdgpu_frame_cache *) *this_cache;
+
+  struct amdgpu_frame_cache *cache
+    = FRAME_OBSTACK_ZALLOC (struct amdgpu_frame_cache);
+  (*this_cache) = cache;
+
+  cache->pc = get_frame_func (this_frame);
+  cache->base = 0;
+
+  return cache;
+}
+
+static void
+amdgpu_frame_this_id (const frame_info_ptr &this_frame, void **this_cache,
+		      frame_id *this_id)
+{
+  struct amdgpu_frame_cache *cache
+    = amdgpu_frame_cache (this_frame, this_cache);
+
+  if (get_frame_type (this_frame) == INLINE_FRAME)
+    (*this_id) = frame_id_build (cache->base, cache->pc);
+  else
+    (*this_id) = outer_frame_id;
+
+  frame_debug_printf ("this_frame=%d, type=%d, this_id=%s",
+		      frame_relative_level (this_frame),
+		      get_frame_type (this_frame),
+		      this_id->to_string ().c_str ());
+}
+
+static frame_id
+amdgpu_dummy_id (struct gdbarch *gdbarch, const frame_info_ptr &this_frame)
+{
+  return frame_id_build (0, get_frame_pc (this_frame));
+}
+
+static struct value *
+amdgpu_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache,
+			    int regnum)
+{
+  return frame_unwind_got_register (this_frame, regnum, regnum);
+}
+
+static const frame_unwind_legacy amdgpu_frame_unwind (
+  "amdgpu",
+  NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
+  default_frame_unwind_stop_reason,
+  amdgpu_frame_this_id,
+  amdgpu_frame_prev_register,
+  nullptr,
+  default_frame_sniffer,
+  nullptr,
+  nullptr
+);
+
+static int
+print_insn_amdgpu (bfd_vma memaddr, struct disassemble_info *info)
+{
+  gdb_disassemble_info *di
+    = static_cast<gdb_disassemble_info *> (info->application_data);
+
+  /* Try to read at most INSTRUCTION_SIZE bytes.  */
+
+  amd_dbgapi_size_t instruction_size = gdbarch_max_insn_length (di->arch ());
+  gdb::byte_vector buffer (instruction_size);
+
+  /* read_memory_func doesn't support partial reads, so if the read
+     fails, try one byte less, on and on until we manage to read
+     something.  A case where this would happen is if we're trying to
+     read the last instruction at the end of a file section and that
+     instruction is smaller than the largest instruction.  */
+  while (instruction_size > 0)
+    {
+      int ret = info->read_memory_func (memaddr, buffer.data (),
+					instruction_size, info);
+      if (ret == 0)
+	break;
+
+      --instruction_size;
+    }
+
+  if (instruction_size == 0)
+    {
+      info->memory_error_func (-1, memaddr, info);
+      return -1;
+    }
+
+  amd_dbgapi_architecture_id_t architecture_id;
+  amd_dbgapi_status_t status
+    = amd_dbgapi_get_architecture (gdbarch_bfd_arch_info (di->arch ())->mach,
+				   &architecture_id);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    return -1;
+
+  auto symbolizer = [] (amd_dbgapi_symbolizer_id_t symbolizer_id,
+			amd_dbgapi_global_address_t address,
+			char **symbol_text) -> amd_dbgapi_status_t
+  {
+    gdb_disassemble_info *disasm_info
+      = reinterpret_cast<gdb_disassemble_info *> (symbolizer_id);
+    gdb_printing_disassembler *disasm
+      = dynamic_cast<gdb_printing_disassembler *> (disasm_info);
+    gdb_assert (disasm != nullptr);
+
+    string_file string (disasm->stream ()->can_emit_style_escape ());
+    print_address (disasm->arch (), address, &string);
+    *symbol_text = xstrdup (string.c_str ());
+
+    return AMD_DBGAPI_STATUS_SUCCESS;
+  };
+  auto symbolizer_id = reinterpret_cast<amd_dbgapi_symbolizer_id_t> (di);
+  char *instruction_text = nullptr;
+  status = amd_dbgapi_disassemble_instruction (architecture_id, memaddr,
+					       &instruction_size,
+					       buffer.data (),
+					       &instruction_text,
+					       symbolizer_id,
+					       symbolizer);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    {
+      size_t alignment;
+      status = amd_dbgapi_architecture_get_info
+	(architecture_id,
+	 AMD_DBGAPI_ARCHITECTURE_INFO_MINIMUM_INSTRUCTION_ALIGNMENT,
+	 sizeof (alignment), &alignment);
+      if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	error (_("amd_dbgapi_architecture_get_info failed"));
+
+      info->fprintf_func (di, "<illegal instruction>");
+
+      /* Skip to the next valid instruction address.  */
+      return align_up (memaddr + 1, alignment) - memaddr;
+    }
+
+  /* Print the instruction.  */
+  info->fprintf_func (di, "%s", instruction_text);
+
+  /* Free the memory allocated by the amd-dbgapi.  */
+  xfree (instruction_text);
+
+  return static_cast<int> (instruction_size);
+}
+
+static CORE_ADDR
+amdgpu_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc)
+{
+  CORE_ADDR func_addr;
+
+  /* See if we can determine the end of the prologue via the symbol table.
+     If so, then return either PC, or the PC after the prologue, whichever
+     is greater.  */
+  if (find_pc_partial_function (start_pc, nullptr, &func_addr, nullptr))
+    {
+      CORE_ADDR post_prologue_pc
+	= 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.  */
+      if (post_prologue_pc != 0
+	  && cust != nullptr
+	  && cust->producer () != nullptr
+	  && producer_is_llvm (cust->producer ()))
+	return std::max (start_pc, post_prologue_pc);
+    }
+
+  return start_pc;
+}
+
+static bool
+amdgpu_supports_arch_info (const struct bfd_arch_info *info)
+{
+  amd_dbgapi_architecture_id_t architecture_id;
+  amd_dbgapi_status_t status
+    = amd_dbgapi_get_architecture (info->mach, &architecture_id);
+
+  gdb_assert (status != AMD_DBGAPI_STATUS_ERROR_NOT_INITIALIZED);
+  return status == AMD_DBGAPI_STATUS_SUCCESS;
+}
+
+static struct gdbarch *
+amdgpu_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 != nullptr)
+    return arches->gdbarch;
+
+  /* Allocate space for the new architecture.  */
+  gdbarch_up gdbarch_u
+    (gdbarch_alloc (&info, gdbarch_tdep_up (new amdgpu_gdbarch_tdep)));
+  gdbarch *gdbarch = gdbarch_u.get ();
+  amdgpu_gdbarch_tdep *tdep = gdbarch_tdep<amdgpu_gdbarch_tdep> (gdbarch);
+
+  /* Data types.  */
+  set_gdbarch_char_signed (gdbarch, 0);
+  set_gdbarch_ptr_bit (gdbarch, 64);
+  set_gdbarch_addr_bit (gdbarch, 64);
+  set_gdbarch_short_bit (gdbarch, 16);
+  set_gdbarch_int_bit (gdbarch, 32);
+  set_gdbarch_long_bit (gdbarch, 64);
+  set_gdbarch_long_long_bit (gdbarch, 64);
+  set_gdbarch_float_bit (gdbarch, 32);
+  set_gdbarch_double_bit (gdbarch, 64);
+  set_gdbarch_long_double_bit (gdbarch, 128);
+  set_gdbarch_half_format (gdbarch, floatformats_ieee_half);
+  set_gdbarch_float_format (gdbarch, floatformats_ieee_single);
+  set_gdbarch_double_format (gdbarch, floatformats_ieee_double);
+  set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double);
+
+  /* Frame interpretation.  */
+  set_gdbarch_skip_prologue (gdbarch, amdgpu_skip_prologue);
+  set_gdbarch_inner_than (gdbarch, core_addr_greaterthan);
+  dwarf2_append_unwinders (gdbarch);
+  frame_unwind_append_unwinder (gdbarch, &amdgpu_frame_unwind);
+  set_gdbarch_dummy_id (gdbarch, amdgpu_dummy_id);
+
+  /* Registers and memory.  */
+  amd_dbgapi_architecture_id_t architecture_id;
+  amd_dbgapi_status_t status
+    = amd_dbgapi_get_architecture (gdbarch_bfd_arch_info (gdbarch)->mach,
+				   &architecture_id);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    {
+      warning (_("Failed to get architecture from amd-dbgapi"));
+      return nullptr;
+    }
+
+
+  /* Add register groups.  */
+  size_t register_class_count;
+  amd_dbgapi_register_class_id_t *register_class_ids;
+  status = amd_dbgapi_architecture_register_class_list (architecture_id,
+							&register_class_count,
+							&register_class_ids);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    {
+      warning (_("Failed to get register class list from amd-dbgapi"));
+      return nullptr;
+    }
+
+  gdb::unique_xmalloc_ptr<amd_dbgapi_register_class_id_t>
+    register_class_ids_holder (register_class_ids);
+
+  for (size_t i = 0; i < register_class_count; ++i)
+    {
+      char *bytes;
+      status = amd_dbgapi_architecture_register_class_get_info
+	(register_class_ids[i], AMD_DBGAPI_REGISTER_CLASS_INFO_NAME,
+	 sizeof (bytes), &bytes);
+      if (status != AMD_DBGAPI_STATUS_SUCCESS)
+	{
+	  warning (_("Failed to get register class name from amd-dbgapi"));
+	  return nullptr;
+	}
+
+      gdb::unique_xmalloc_ptr<char> name (bytes);
+
+      auto inserted = tdep->register_class_map.emplace (name.get (),
+							register_class_ids[i]);
+      gdb_assert (inserted.second);
+
+      /* Avoid creating a user reggroup with the same name as some built-in
+	 reggroup, such as "general", "system", "vector", etc.  */
+      if (reggroup_find (gdbarch, name.get ()) != nullptr)
+	continue;
+
+      /* Allocate the reggroup in the gdbarch.  */
+      reggroup_add
+	(gdbarch, reggroup_gdbarch_new (gdbarch, name.get (), USER_REGGROUP));
+    }
+
+  /* Add registers. */
+  size_t register_count;
+  amd_dbgapi_register_id_t *register_ids;
+  status = amd_dbgapi_architecture_register_list (architecture_id,
+						  &register_count,
+						  &register_ids);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    {
+      warning (_("Failed to get register list from amd-dbgapi"));
+      return nullptr;
+    }
+
+  gdb::unique_xmalloc_ptr<amd_dbgapi_register_id_t> register_ids_holder
+    (register_ids);
+
+  tdep->register_ids.insert (tdep->register_ids.end (), &register_ids[0],
+			     &register_ids[register_count]);
+
+  tdep->register_properties.resize (register_count,
+				    AMD_DBGAPI_REGISTER_PROPERTY_NONE);
+  for (size_t regnum = 0; regnum < register_count; ++regnum)
+    {
+      auto &register_properties = tdep->register_properties[regnum];
+      if (amd_dbgapi_register_get_info (register_ids[regnum],
+					AMD_DBGAPI_REGISTER_INFO_PROPERTIES,
+					sizeof (register_properties),
+					&register_properties)
+	  != AMD_DBGAPI_STATUS_SUCCESS)
+	{
+	  warning (_("Failed to get register properties from amd-dbgapi"));
+	  return nullptr;
+	}
+    }
+
+  set_gdbarch_num_regs (gdbarch, register_count);
+  set_gdbarch_num_pseudo_regs (gdbarch, 0);
+
+  tdep->register_names.resize (register_count);
+  tdep->register_types.resize (register_count);
+  for (size_t i = 0; i < register_count; ++i)
+    {
+      /* Set amd-dbgapi register id -> gdb regnum mapping.  */
+      tdep->regnum_map.emplace (tdep->register_ids[i], i);
+
+      /* Get register name.  */
+      char *bytes;
+      status = amd_dbgapi_register_get_info (tdep->register_ids[i],
+					     AMD_DBGAPI_REGISTER_INFO_NAME,
+					     sizeof (bytes), &bytes);
+      if (status == AMD_DBGAPI_STATUS_SUCCESS)
+	{
+	  tdep->register_names[i] = bytes;
+	  xfree (bytes);
+	}
+
+      /* Get register DWARF number.  */
+      uint64_t dwarf_num;
+      status = amd_dbgapi_register_get_info (tdep->register_ids[i],
+					     AMD_DBGAPI_REGISTER_INFO_DWARF,
+					     sizeof (dwarf_num), &dwarf_num);
+      if (status == AMD_DBGAPI_STATUS_SUCCESS)
+	{
+	  if (dwarf_num >= tdep->dwarf_regnum_to_gdb_regnum.size ())
+	    tdep->dwarf_regnum_to_gdb_regnum.resize (dwarf_num + 1, -1);
+
+	  tdep->dwarf_regnum_to_gdb_regnum[dwarf_num] = i;
+	}
+    }
+
+  amd_dbgapi_register_id_t pc_register_id;
+  status = amd_dbgapi_architecture_get_info
+    (architecture_id, AMD_DBGAPI_ARCHITECTURE_INFO_PC_REGISTER,
+     sizeof (pc_register_id), &pc_register_id);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    {
+      warning (_("Failed to get PC register from amd-dbgapi"));
+      return nullptr;
+    }
+
+  set_gdbarch_pc_regnum (gdbarch, tdep->regnum_map[pc_register_id]);
+  set_gdbarch_ps_regnum (gdbarch, -1);
+  set_gdbarch_sp_regnum (gdbarch, -1);
+  set_gdbarch_fp0_regnum (gdbarch, -1);
+
+  set_gdbarch_dwarf2_reg_to_regnum (gdbarch, amdgpu_dwarf_reg_to_regnum);
+
+  set_gdbarch_return_value_as_value (gdbarch, amdgpu_return_value_as_value);
+
+  /* Register representation.  */
+  set_gdbarch_register_name (gdbarch, amdgpu_register_name);
+  set_gdbarch_register_type (gdbarch, amdgpu_register_type);
+  set_gdbarch_register_reggroup_p (gdbarch, amdgpu_register_reggroup_p);
+
+  /* Disassembly.  */
+  set_gdbarch_print_insn (gdbarch, print_insn_amdgpu);
+
+ /* Instructions.  */
+  amd_dbgapi_size_t max_insn_length = 0;
+  status = amd_dbgapi_architecture_get_info
+    (architecture_id, AMD_DBGAPI_ARCHITECTURE_INFO_LARGEST_INSTRUCTION_SIZE,
+     sizeof (max_insn_length), &max_insn_length);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd_dbgapi_architecture_get_info failed"));
+
+  set_gdbarch_max_insn_length (gdbarch, max_insn_length);
+
+  status = amd_dbgapi_architecture_get_info
+    (architecture_id, AMD_DBGAPI_ARCHITECTURE_INFO_BREAKPOINT_INSTRUCTION_SIZE,
+     sizeof (tdep->breakpoint_instruction_size),
+     &tdep->breakpoint_instruction_size);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd_dbgapi_architecture_get_info failed"));
+
+  gdb_byte *breakpoint_instruction_bytes;
+  status = amd_dbgapi_architecture_get_info
+    (architecture_id, AMD_DBGAPI_ARCHITECTURE_INFO_BREAKPOINT_INSTRUCTION,
+     sizeof (breakpoint_instruction_bytes), &breakpoint_instruction_bytes);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd_dbgapi_architecture_get_info failed"));
+
+  tdep->breakpoint_instruction_bytes.reset (breakpoint_instruction_bytes);
+
+  set_gdbarch_breakpoint_kind_from_pc (gdbarch,
+				       amdgpu_breakpoint_kind_from_pc);
+  set_gdbarch_sw_breakpoint_from_kind (gdbarch,
+				       amdgpu_sw_breakpoint_from_kind);
+
+  amd_dbgapi_size_t pc_adjust;
+  status = amd_dbgapi_architecture_get_info
+    (architecture_id,
+     AMD_DBGAPI_ARCHITECTURE_INFO_BREAKPOINT_INSTRUCTION_PC_ADJUST,
+     sizeof (pc_adjust), &pc_adjust);
+  if (status != AMD_DBGAPI_STATUS_SUCCESS)
+    error (_("amd_dbgapi_architecture_get_info failed"));
+
+  set_gdbarch_decr_pc_after_break (gdbarch, pc_adjust);
+
+  return gdbarch_u.release ();
+}
+
+#if defined GDB_SELF_TEST
+
+static void
+amdgpu_register_type_parse_test ()
+{
+  {
+    /* A type that exercises flags and enums, in particular looking up an
+       existing enum type by name. */
+    const char *flags_type_str =
+      "flags32_t mode { \
+	 enum fp_round { \
+	   NEAREST_EVEN = 0, \
+	   PLUS_INF  = 1, \
+	   MINUS_INF = 2, \
+	   ZERO      = 3 \
+	 } FP_ROUND.32 @0-1; \
+	 enum fp_round FP_ROUND.64_16 @2-3; \
+	 enum fp_denorm { \
+	   FLUSH_SRC_DST = 0, \
+	   FLUSH_DST     = 1, \
+	   FLUSH_SRC     = 2, \
+	   FLUSH_NONE    = 3 \
+	 } FP_DENORM.32 @4-5; \
+	 enum fp_denorm FP_DENORM.64_16 @6-7; \
+	 bool DX10_CLAMP @8; \
+	 bool IEEE @9; \
+	 bool LOD_CLAMPED @10; \
+	 bool DEBUG_EN @11; \
+	 bool EXCP_EN.INVALID @12; \
+	 bool EXCP_EN.DENORM @13; \
+	 bool EXCP_EN.DIV0 @14; \
+	 bool EXCP_EN.OVERFLOW @15; \
+	 bool EXCP_EN.UNDERFLOW @16; \
+	 bool EXCP_EN.INEXACT @17; \
+	 bool EXCP_EN.INT_DIV0 @18; \
+	 bool EXCP_EN.ADDR_WATCH @19; \
+	 bool FP16_OVFL @23; \
+	 bool POPS_PACKER0 @24; \
+	 bool POPS_PACKER1 @25; \
+	 bool DISABLE_PERF @26; \
+	 bool GPR_IDX_EN @27; \
+	 bool VSKIP @28; \
+	 uint32_t CSP @29-31; \
+       }";
+    amd_dbgapi_register_type_map type_map;
+    const amd_dbgapi_register_type &type
+      = parse_amd_dbgapi_register_type (flags_type_str, type_map);
+
+    gdb_assert (type.kind () == amd_dbgapi_register_type::kind::FLAGS);
+
+    const auto &f
+      = gdb::checked_static_cast<const amd_dbgapi_register_type_flags &> (type);
+    gdb_assert (f.size () == 23);
+
+    /* Check the two "FP_ROUND" fields.  */
+    auto check_fp_round_field
+      = [] (const char *name, const amd_dbgapi_register_type_flags::field &field)
+	{
+	  gdb_assert (field.name == name);
+	  gdb_assert (field.type->kind ()
+		      == amd_dbgapi_register_type::kind::ENUM);
+
+	  const auto &e
+	    = gdb::checked_static_cast<const amd_dbgapi_register_type_enum &>
+	      (*field.type);
+	  gdb_assert (e.size () == 4);
+	  gdb_assert (e[0].name == "NEAREST_EVEN");
+	  gdb_assert (e[0].value == 0);
+	  gdb_assert (e[3].name == "ZERO");
+	  gdb_assert (e[3].value == 3);
+	};
+
+    check_fp_round_field ("FP_ROUND.32", f[0]);
+    check_fp_round_field ("FP_ROUND.64_16", f[1]);
+
+    /* Check the "CSP" field.  */
+    gdb_assert (f[22].name == "CSP");
+    gdb_assert (f[22].type->kind () == amd_dbgapi_register_type::kind::INTEGER);
+
+    const auto &i
+      = gdb::checked_static_cast<const amd_dbgapi_register_type_integer &>
+	  (*f[22].type);
+    gdb_assert (i.bit_size () == 32);
+    gdb_assert (i.is_unsigned ());
+  }
+
+  {
+    /* Test the vector type.  */
+    const char *vector_type_str = "int32_t[64]";
+    amd_dbgapi_register_type_map type_map;
+    const amd_dbgapi_register_type &type
+      = parse_amd_dbgapi_register_type (vector_type_str, type_map);
+
+    gdb_assert (type.kind () == amd_dbgapi_register_type::kind::VECTOR);
+
+    const auto &v
+      = gdb::checked_static_cast<const amd_dbgapi_register_type_vector &>
+	  (type);
+    gdb_assert (v.count () == 64);
+
+    const auto &et = v.element_type ();
+    gdb_assert (et.kind () == amd_dbgapi_register_type::kind::INTEGER);
+
+    const auto &i
+      = gdb::checked_static_cast<const amd_dbgapi_register_type_integer &> (et);
+    gdb_assert (i.bit_size () == 32);
+    gdb_assert (!i.is_unsigned ());
+  }
+}
+
+#endif
+
+INIT_GDB_FILE (amdgpu_tdep)
+{
+  gdbarch_register (bfd_arch_amdgcn, amdgpu_gdbarch_init, NULL,
+		    amdgpu_supports_arch_info);
+#if defined GDB_SELF_TEST
+  selftests::register_test ("amdgpu-register-type-parse-flags-fields",
+			    amdgpu_register_type_parse_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.20200303/gdb/amdgpu-tdep.h ./gdb/amdgpu-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/amdgpu-tdep.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/amdgpu-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,93 @@
+/* Target-dependent code for the AMDGPU architectures.
+
+   Copyright (C) 2019-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_AMDGPU_TDEP_H
+#define GDB_AMDGPU_TDEP_H
+
+#include "gdbarch.h"
+
+#include <amd-dbgapi/amd-dbgapi.h>
+#include <unordered_map>
+
+/* Provide std::unordered_map::Hash for amd_dbgapi_register_id_t.  */
+struct register_id_hash
+{
+  size_t
+  operator() (const amd_dbgapi_register_id_t &register_id) const
+  {
+    return std::hash<decltype (register_id.handle)> () (register_id.handle);
+  }
+};
+
+/* Provide std::unordered_map::Equal for amd_dbgapi_register_id_t.  */
+struct register_id_equal_to
+{
+  bool
+  operator() (const amd_dbgapi_register_id_t &lhs,
+	      const amd_dbgapi_register_id_t &rhs) const
+  {
+    return std::equal_to<decltype (lhs.handle)> () (lhs.handle, rhs.handle);
+  }
+};
+
+/* AMDGPU architecture specific information.  */
+struct amdgpu_gdbarch_tdep : gdbarch_tdep_base
+{
+  /* This architecture's breakpoint instruction.  */
+  gdb::unique_xmalloc_ptr<gdb_byte> breakpoint_instruction_bytes;
+  size_t breakpoint_instruction_size;
+
+  /* A vector of register_ids indexed by their equivalent gdb regnum.  */
+  std::vector<amd_dbgapi_register_id_t> register_ids;
+
+  /* A vector of register_properties indexed by their equivalent gdb regnum.  */
+  std::vector<amd_dbgapi_register_properties_t> register_properties;
+
+  /* A vector of register names indexed by their equivalent gdb regnum.  */
+  std::vector<std::string> register_names;
+
+  /* A vector of register types created from the amd-dbgapi type strings,
+     indexed by their equivalent gdb regnum.  These are computed lazily by
+     amdgpu_register_type, entries that haven't been computed yet are
+     nullptr.  */
+  std::vector<type *> register_types;
+
+  /* A vector of GDB register numbers indexed by DWARF register number.
+
+     Unused DWARF register numbers map to value -1.  */
+  std::vector<int> dwarf_regnum_to_gdb_regnum;
+
+  /* A map of gdb regnums keyed by they equivalent register_id.  */
+  std::unordered_map<amd_dbgapi_register_id_t, int, register_id_hash,
+		     register_id_equal_to>
+    regnum_map;
+
+  /* A map of register_class_ids keyed by their name.  */
+  std::unordered_map<std::string, amd_dbgapi_register_class_id_t>
+    register_class_map;
+};
+
+/* Return true if GDBARCH is of an AMDGPU architecture.  */
+bool is_amdgpu_arch (struct gdbarch *gdbarch);
+
+/* Return the amdgpu-specific data associated to ARCH.  */
+
+amdgpu_gdbarch_tdep *get_amdgpu_gdbarch_tdep (gdbarch *arch);
+
+#endif /* GDB_AMDGPU_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.20200303/gdb/annotate.c ./gdb/annotate.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/annotate.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/annotate.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* Annotation routines for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,7 +16,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/>.  */
 
-#include "defs.h"
 #include "annotate.h"
 #include "value.h"
 #include "target.h"
@@ -25,11 +24,14 @@
 #include "observable.h"
 #include "inferior.h"
 #include "infrun.h"
-#include "top.h"
 #include "source.h"
 #include "objfiles.h"
 #include "source-cache.h"
-
+#include "ui.h"
+
+/* See annotate.h.  */
+
+int annotation_level = 0;
 
 /* Prototypes for local functions.  */
 
@@ -52,9 +54,9 @@ static void
 print_value_flags (struct type *t)
 {
   if (can_dereference (t))
-    printf_filtered (("*"));
+    printf_unfiltered (("*"));
   else
-    printf_filtered (("-"));
+    printf_unfiltered (("-"));
 }
 
 static void
@@ -76,42 +78,42 @@ void
 annotate_breakpoint (int num)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032breakpoint %d\n"), num);
+    printf_unfiltered (("\n\032\032breakpoint %d\n"), num);
 }
 
 void
 annotate_catchpoint (int num)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032catchpoint %d\n"), num);
+    printf_unfiltered (("\n\032\032catchpoint %d\n"), num);
 }
 
 void
 annotate_watchpoint (int num)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032watchpoint %d\n"), num);
+    printf_unfiltered (("\n\032\032watchpoint %d\n"), num);
 }
 
 void
 annotate_starting (void)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032starting\n"));
+    printf_unfiltered (("\n\032\032starting\n"));
 }
 
 void
 annotate_stopped (void)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032stopped\n"));
+    printf_unfiltered (("\n\032\032stopped\n"));
 }
 
 void
 annotate_exited (int exitstatus)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032exited %d\n"), exitstatus);
+    printf_unfiltered (("\n\032\032exited %d\n"), exitstatus);
 }
 
 void
@@ -121,35 +123,35 @@ annotate_signalled (void)
     deprecated_annotate_signalled_hook ();
 
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032signalled\n"));
+    printf_unfiltered (("\n\032\032signalled\n"));
 }
 
 void
 annotate_signal_name (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032signal-name\n"));
+    printf_unfiltered (("\n\032\032signal-name\n"));
 }
 
 void
 annotate_signal_name_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032signal-name-end\n"));
+    printf_unfiltered (("\n\032\032signal-name-end\n"));
 }
 
 void
 annotate_signal_string (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032signal-string\n"));
+    printf_unfiltered (("\n\032\032signal-string\n"));
 }
 
 void
 annotate_signal_string_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032signal-string-end\n"));
+    printf_unfiltered (("\n\032\032signal-string-end\n"));
 }
 
 void
@@ -159,42 +161,42 @@ annotate_signal (void)
     deprecated_annotate_signal_hook ();
 
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032signal\n"));
+    printf_unfiltered (("\n\032\032signal\n"));
 }
 
 void
 annotate_breakpoints_headers (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032breakpoints-headers\n"));
+    printf_unfiltered (("\n\032\032breakpoints-headers\n"));
 }
 
 void
 annotate_field (int num)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032field %d\n"), num);
+    printf_unfiltered (("\n\032\032field %d\n"), num);
 }
 
 void
 annotate_breakpoints_table (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032breakpoints-table\n"));
+    printf_unfiltered (("\n\032\032breakpoints-table\n"));
 }
 
 void
 annotate_record (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032record\n"));
+    printf_unfiltered (("\n\032\032record\n"));
 }
 
 void
 annotate_breakpoints_table_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032breakpoints-table-end\n"));
+    printf_unfiltered (("\n\032\032breakpoints-table-end\n"));
 }
 
 void
@@ -233,13 +235,15 @@ annotate_thread_changed (void)
 /* Emit notification on thread exit.  */
 
 static void
-annotate_thread_exited (struct thread_info *t, int silent)
+annotate_thread_exited (thread_info *t,
+			std::optional<ULONGEST> exit_code,
+			bool /* silent */)
 {
   if (annotation_level > 1)
     {
-      printf_filtered(("\n\032\032thread-exited,"
-                       "id=\"%d\",group-id=\"i%d\"\n"),
-                      t->global_num, t->inf->num);
+      printf_unfiltered (("\n\032\032thread-exited,"
+			  "id=\"%d\",group-id=\"i%d\"\n"),
+			 t->global_num, t->inf->num);
     }
 }
 
@@ -248,9 +252,9 @@ annotate_field_begin (struct type *type)
 {
   if (annotation_level == 2)
     {
-      printf_filtered (("\n\032\032field-begin "));
+      printf_unfiltered (("\n\032\032field-begin "));
       print_value_flags (type);
-      printf_filtered (("\n"));
+      printf_unfiltered (("\n"));
     }
 }
 
@@ -258,42 +262,42 @@ void
 annotate_field_name_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032field-name-end\n"));
+    printf_unfiltered (("\n\032\032field-name-end\n"));
 }
 
 void
 annotate_field_value (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032field-value\n"));
+    printf_unfiltered (("\n\032\032field-value\n"));
 }
 
 void
 annotate_field_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032field-end\n"));
+    printf_unfiltered (("\n\032\032field-end\n"));
 }
 
 void
 annotate_quit (void)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032quit\n"));
+    printf_unfiltered (("\n\032\032quit\n"));
 }
 
 void
 annotate_error (void)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032error\n"));
+    printf_unfiltered (("\n\032\032error\n"));
 }
 
 void
 annotate_error_begin (void)
 {
   if (annotation_level > 1)
-    fprintf_filtered (gdb_stderr, "\n\032\032error-begin\n");
+    gdb_printf (gdb_stderr, "\n\032\032error-begin\n");
 }
 
 void
@@ -301,9 +305,9 @@ annotate_value_history_begin (int histin
 {
   if (annotation_level == 2)
     {
-      printf_filtered (("\n\032\032value-history-begin %d "), histindex);
+      printf_unfiltered (("\n\032\032value-history-begin %d "), histindex);
       print_value_flags (type);
-      printf_filtered (("\n"));
+      printf_unfiltered (("\n"));
     }
 }
 
@@ -312,9 +316,9 @@ annotate_value_begin (struct type *type)
 {
   if (annotation_level == 2)
     {
-      printf_filtered (("\n\032\032value-begin "));
+      printf_unfiltered (("\n\032\032value-begin "));
       print_value_flags (type);
-      printf_filtered (("\n"));
+      printf_unfiltered (("\n"));
     }
 }
 
@@ -322,84 +326,84 @@ void
 annotate_value_history_value (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032value-history-value\n"));
+    printf_unfiltered (("\n\032\032value-history-value\n"));
 }
 
 void
 annotate_value_history_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032value-history-end\n"));
+    printf_unfiltered (("\n\032\032value-history-end\n"));
 }
 
 void
 annotate_value_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032value-end\n"));
+    printf_unfiltered (("\n\032\032value-end\n"));
 }
 
 void
 annotate_display_begin (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032display-begin\n"));
+    printf_unfiltered (("\n\032\032display-begin\n"));
 }
 
 void
 annotate_display_number_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032display-number-end\n"));
+    printf_unfiltered (("\n\032\032display-number-end\n"));
 }
 
 void
 annotate_display_format (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032display-format\n"));
+    printf_unfiltered (("\n\032\032display-format\n"));
 }
 
 void
 annotate_display_expression (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032display-expression\n"));
+    printf_unfiltered (("\n\032\032display-expression\n"));
 }
 
 void
 annotate_display_expression_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032display-expression-end\n"));
+    printf_unfiltered (("\n\032\032display-expression-end\n"));
 }
 
 void
 annotate_display_value (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032display-value\n"));
+    printf_unfiltered (("\n\032\032display-value\n"));
 }
 
 void
 annotate_display_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032display-end\n"));
+    printf_unfiltered (("\n\032\032display-end\n"));
 }
 
 void
 annotate_arg_begin (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032arg-begin\n"));
+    printf_unfiltered (("\n\032\032arg-begin\n"));
 }
 
 void
 annotate_arg_name_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032arg-name-end\n"));
+    printf_unfiltered (("\n\032\032arg-name-end\n"));
 }
 
 void
@@ -407,9 +411,9 @@ annotate_arg_value (struct type *type)
 {
   if (annotation_level == 2)
     {
-      printf_filtered (("\n\032\032arg-value "));
+      printf_unfiltered (("\n\032\032arg-value "));
       print_value_flags (type);
-      printf_filtered (("\n"));
+      printf_unfiltered (("\n"));
     }
 }
 
@@ -417,7 +421,7 @@ void
 annotate_arg_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032arg-end\n"));
+    printf_unfiltered (("\n\032\032arg-end\n"));
 }
 
 static void
@@ -425,17 +429,17 @@ annotate_source (const char *filename, i
 		 struct gdbarch *gdbarch, CORE_ADDR pc)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032source "));
+    printf_unfiltered (("\n\032\032source "));
   else
-    printf_filtered (("\032\032"));
+    printf_unfiltered (("\032\032"));
 
-  printf_filtered (("%s:%d:%d:%s:%s\n"), filename, line, character,
-		   mid ? "middle" : "beg", paddress (gdbarch, pc));
+  printf_unfiltered (("%s:%d:%d:%s:%s\n"), filename, line, character,
+		     mid ? "middle" : "beg", paddress (gdbarch, pc));
 }
 
 /* See annotate.h.  */
 
-void
+bool
 annotate_source_line (struct symtab *s, int line, int mid_statement,
 		      CORE_ADDR pc)
 {
@@ -443,16 +447,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)),
+      annotate_source (s->fullname (), line, (int) (*offsets)[line - 1],
+		       mid_statement, s->compunit ()->objfile ()->arch (),
 		       pc);
+
+      /* Update the current symtab and line.  */
+      symtab_and_line sal;
+      sal.pspace = s->compunit ()->objfile ()->pspace ();
+      sal.symtab = s;
+      sal.line = line;
+      set_current_source_symtab_and_line (sal);
+
+      return true;
     }
+
+  return false;
 }
 
 
@@ -460,99 +473,99 @@ void
 annotate_frame_begin (int level, struct gdbarch *gdbarch, CORE_ADDR pc)
 {
   if (annotation_level > 1)
-    printf_filtered (("\n\032\032frame-begin %d %s\n"),
-		     level, paddress (gdbarch, pc));
+    printf_unfiltered (("\n\032\032frame-begin %d %s\n"),
+		       level, paddress (gdbarch, pc));
 }
 
 void
 annotate_function_call (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032function-call\n"));
+    printf_unfiltered (("\n\032\032function-call\n"));
 }
 
 void
 annotate_signal_handler_caller (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032signal-handler-caller\n"));
+    printf_unfiltered (("\n\032\032signal-handler-caller\n"));
 }
 
 void
 annotate_frame_address (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-address\n"));
+    printf_unfiltered (("\n\032\032frame-address\n"));
 }
 
 void
 annotate_frame_address_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-address-end\n"));
+    printf_unfiltered (("\n\032\032frame-address-end\n"));
 }
 
 void
 annotate_frame_function_name (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-function-name\n"));
+    printf_unfiltered (("\n\032\032frame-function-name\n"));
 }
 
 void
 annotate_frame_args (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-args\n"));
+    printf_unfiltered (("\n\032\032frame-args\n"));
 }
 
 void
 annotate_frame_source_begin (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-source-begin\n"));
+    printf_unfiltered (("\n\032\032frame-source-begin\n"));
 }
 
 void
 annotate_frame_source_file (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-source-file\n"));
+    printf_unfiltered (("\n\032\032frame-source-file\n"));
 }
 
 void
 annotate_frame_source_file_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-source-file-end\n"));
+    printf_unfiltered (("\n\032\032frame-source-file-end\n"));
 }
 
 void
 annotate_frame_source_line (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-source-line\n"));
+    printf_unfiltered (("\n\032\032frame-source-line\n"));
 }
 
 void
 annotate_frame_source_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-source-end\n"));
+    printf_unfiltered (("\n\032\032frame-source-end\n"));
 }
 
 void
 annotate_frame_where (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-where\n"));
+    printf_unfiltered (("\n\032\032frame-where\n"));
 }
 
 void
 annotate_frame_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032frame-end\n"));
+    printf_unfiltered (("\n\032\032frame-end\n"));
 }
 
 void
@@ -560,9 +573,9 @@ annotate_array_section_begin (int idx, s
 {
   if (annotation_level == 2)
     {
-      printf_filtered (("\n\032\032array-section-begin %d "), idx);
+      printf_unfiltered (("\n\032\032array-section-begin %d "), idx);
       print_value_flags (elttype);
-      printf_filtered (("\n"));
+      printf_unfiltered (("\n"));
     }
 }
 
@@ -570,28 +583,28 @@ void
 annotate_elt_rep (unsigned int repcount)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032elt-rep %u\n"), repcount);
+    printf_unfiltered (("\n\032\032elt-rep %u\n"), repcount);
 }
 
 void
 annotate_elt_rep_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032elt-rep-end\n"));
+    printf_unfiltered (("\n\032\032elt-rep-end\n"));
 }
 
 void
 annotate_elt (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032elt\n"));
+    printf_unfiltered (("\n\032\032elt\n"));
 }
 
 void
 annotate_array_section_end (void)
 {
   if (annotation_level == 2)
-    printf_filtered (("\n\032\032array-section-end\n"));
+    printf_unfiltered (("\n\032\032array-section-end\n"));
 }
 
 /* Called when GDB is about to display the prompt.  Used to reset
@@ -614,11 +627,10 @@ breakpoint_changed (struct breakpoint *b
   annotate_breakpoints_invalid ();
 }
 
-void
-_initialize_annotate (void)
+INIT_GDB_FILE (annotate)
 {
-  gdb::observers::breakpoint_created.attach (breakpoint_changed);
-  gdb::observers::breakpoint_deleted.attach (breakpoint_changed);
-  gdb::observers::breakpoint_modified.attach (breakpoint_changed);
-  gdb::observers::thread_exit.attach (annotate_thread_exited);
+  gdb::observers::breakpoint_created.attach (breakpoint_changed, "annotate");
+  gdb::observers::breakpoint_deleted.attach (breakpoint_changed, "annotate");
+  gdb::observers::breakpoint_modified.attach (breakpoint_changed, "annotate");
+  gdb::observers::thread_exit.attach (annotate_thread_exited, "annotate");
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/annotate.h ./gdb/annotate.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/annotate.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/annotate.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* Annotation routines for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,12 +16,20 @@
    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 ANNOTATE_H
-#define ANNOTATE_H
+#ifndef GDB_ANNOTATE_H
+#define GDB_ANNOTATE_H
 
 #include "symtab.h"
 #include "gdbtypes.h"
 
+/* Zero means do things normally; we are interacting directly with the
+   user.  One means print the full filename and linenumber when a
+   frame is printed, and do so in a format emacs18/emacs19.22 can
+   parse.  Two means print similar annotations, but in many more
+   cases and in a slightly different syntax.  */
+
+extern int annotation_level;
+
 extern void annotate_breakpoint (int);
 extern void annotate_catchpoint (int);
 extern void annotate_watchpoint (int);
@@ -92,8 +100,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 behavior.  */
+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);
@@ -120,4 +140,4 @@ extern void annotate_array_section_end (
 extern void (*deprecated_annotate_signalled_hook) (void);
 extern void (*deprecated_annotate_signal_hook) (void);
 
-#endif /* ANNOTATE_H */
+#endif /* GDB_ANNOTATE_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.20200303/gdb/arch/aarch32.c ./gdb/arch/aarch32.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch32.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/aarch32.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,29 +15,31 @@
    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 "aarch32.h"
 
 #include "../features/arm/arm-core.c"
+#include "../features/arm/arm-tls.c"
 #include "../features/arm/arm-vfpv3.c"
 
 /* See aarch32.h.  */
 
 target_desc *
-aarch32_create_target_description ()
+aarch32_create_target_description (bool tls)
 {
-  target_desc *tdesc = allocate_target_description ();
+  target_desc_up tdesc = allocate_target_description ();
 
 #ifndef IN_PROCESS_AGENT
-  set_tdesc_architecture (tdesc, "arm");
+  set_tdesc_architecture (tdesc.get (), "arm");
 #endif
 
   long regnum = 0;
 
-  regnum = create_feature_arm_arm_core (tdesc, regnum);
+  regnum = create_feature_arm_arm_core (tdesc.get (), regnum);
   /* Create a vfpv3 feature, then a blank NEON feature.  */
-  regnum = create_feature_arm_arm_vfpv3 (tdesc, regnum);
-  tdesc_create_feature (tdesc, "org.gnu.gdb.arm.neon");
+  regnum = create_feature_arm_arm_vfpv3 (tdesc.get (), regnum);
+  tdesc_create_feature (tdesc.get (), "org.gnu.gdb.arm.neon");
+  if (tls)
+    regnum = create_feature_arm_arm_tls (tdesc.get (), regnum);
 
-  return tdesc;
+  return tdesc.release ();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch32.h ./gdb/arch/aarch32.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch32.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/aarch32.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2019-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2019-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,13 +15,13 @@
    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_AARCH32_H
-#define ARCH_AARCH32_H
+#ifndef GDB_ARCH_AARCH32_H
+#define GDB_ARCH_AARCH32_H
 
 #include "gdbsupport/tdesc.h"
 
 /* Create the AArch32 target description.  */
 
-target_desc *aarch32_create_target_description ();
+target_desc *aarch32_create_target_description (bool tls);
 
-#endif /* aarch32.h.  */
+#endif /* GDB_ARCH_AARCH32_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.20200303/gdb/arch/aarch64.c ./gdb/arch/aarch64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/aarch64.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,7 +15,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/>.  */
 
-#include "gdbsupport/common-defs.h"
 #include "aarch64.h"
 #include <stdlib.h>
 
@@ -23,29 +22,87 @@
 #include "../features/aarch64-fpu.c"
 #include "../features/aarch64-sve.c"
 #include "../features/aarch64-pauth.c"
+#include "../features/aarch64-mte.c"
+#include "../features/aarch64-sme.c"
+#include "../features/aarch64-sme2.c"
+#include "../features/aarch64-tls.c"
+#include "../features/aarch64-gcs.c"
+#include "../features/aarch64-gcs-linux.c"
 
 /* See arch/aarch64.h.  */
 
 target_desc *
-aarch64_create_target_description (uint64_t vq, bool pauth_p)
+aarch64_create_target_description (const aarch64_features &features)
 {
-  target_desc *tdesc = allocate_target_description ();
+  target_desc_up tdesc = allocate_target_description ();
 
 #ifndef IN_PROCESS_AGENT
-  set_tdesc_architecture (tdesc, "aarch64");
+  set_tdesc_architecture (tdesc.get (), "aarch64");
 #endif
 
   long regnum = 0;
 
-  regnum = create_feature_aarch64_core (tdesc, regnum);
+  regnum = create_feature_aarch64_core (tdesc.get (), regnum);
 
-  if (vq == 0)
-    regnum = create_feature_aarch64_fpu (tdesc, regnum);
+  if (features.vq == 0)
+    regnum = create_feature_aarch64_fpu (tdesc.get (), regnum);
   else
-    regnum = create_feature_aarch64_sve (tdesc, regnum, vq);
+    regnum = create_feature_aarch64_sve (tdesc.get (), regnum, features.vq);
 
-  if (pauth_p)
-    regnum = create_feature_aarch64_pauth (tdesc, regnum);
+  if (features.pauth)
+    regnum = create_feature_aarch64_pauth (tdesc.get (), regnum);
 
-  return tdesc;
+  /* Memory tagging extension registers.  */
+  if (features.mte)
+    regnum = create_feature_aarch64_mte (tdesc.get (), regnum);
+
+  /* TLS registers.  */
+  if (features.tls > 0)
+    regnum = create_feature_aarch64_tls (tdesc.get (), regnum, features.tls);
+
+  if (features.svq)
+    regnum = create_feature_aarch64_sme (tdesc.get (), regnum,
+					 sve_vl_from_vq (features.svq));
+
+  if (features.sme2)
+    regnum = create_feature_aarch64_sme2 (tdesc.get (), regnum);
+
+  if (features.gcs)
+    regnum = create_feature_aarch64_gcs (tdesc.get (), regnum);
+
+  if (features.gcs_linux)
+    regnum = create_feature_aarch64_gcs_linux (tdesc.get (), regnum);
+
+  return tdesc.release ();
+}
+
+/* See arch/aarch64.h.  */
+
+CORE_ADDR
+aarch64_remove_top_bits (CORE_ADDR pointer, CORE_ADDR mask)
+{
+  /* The VA range select bit is 55.  This bit tells us if we have a
+     kernel-space address or a user-space address.  */
+  bool kernel_address = (pointer & VA_RANGE_SELECT_BIT_MASK) != 0;
+
+  /* Remove the top non-address bits.  */
+  pointer &= ~mask;
+
+  /* Sign-extend if we have a kernel-space address.  */
+  if (kernel_address)
+    pointer |= mask;
+
+  return pointer;
+}
+
+/* See arch/aarch64.h.  */
+
+CORE_ADDR
+aarch64_mask_from_pac_registers (const CORE_ADDR cmask, const CORE_ADDR dmask)
+{
+  /* If the masks differ, default to using the one with the most coverage.  */
+  if (dmask != cmask)
+    return dmask > cmask ? dmask : cmask;
+
+  return cmask;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-gcs-linux.h ./gdb/arch/aarch64-gcs-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-gcs-linux.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/aarch64-gcs-linux.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,44 @@
+/* Common Linux target-dependent definitions for AArch64 GCS
+
+   Copyright (C) 2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_AARCH64_GCS_LINUX_H
+#define GDB_ARCH_AARCH64_GCS_LINUX_H
+
+#include <stdint.h>
+
+/* Feature check for Guarded Control Stack.  */
+#ifndef HWCAP_GCS
+#define HWCAP_GCS (1ULL << 32)
+#endif
+
+/* Make sure we only define these if the kernel header doesn't.  */
+#ifndef GCS_MAGIC
+
+/* GCS state (NT_ARM_GCS).  */
+
+struct user_gcs
+{
+  uint64_t features_enabled;
+  uint64_t features_locked;
+  uint64_t gcspr_el0;
+};
+
+#endif /* GCS_MAGIC */
+
+#endif /* GDB_ARCH_AARCH64_GCS_LINUX_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.20200303/gdb/arch/aarch64.h ./gdb/arch/aarch64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/aarch64.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target-dependent functionality for AArch64.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,17 +17,107 @@
    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_AARCH64_H
-#define ARCH_AARCH64_H
+#ifndef GDB_ARCH_AARCH64_H
+#define GDB_ARCH_AARCH64_H
 
 #include "gdbsupport/tdesc.h"
 
-/* Create the aarch64 target description.  A non zero VQ value indicates both
-   the presence of SVE and the Vector Quotient - the number of 128bit chunks in
-   an SVE Z register.  HAS_PAUTH_P indicates the presence of the PAUTH
-   feature.  */
+/* Holds information on what architectural features are available.  This is
+   used to select register sets.  */
+struct aarch64_features
+{
+  /* A non zero VQ value indicates both the presence of SVE and the
+     Vector Quotient - the number of 128-bit chunks in an SVE Z
+     register.
+
+     The maximum value for VQ is 16 (5 bits).  */
+  uint64_t vq = 0;
+  bool pauth = false;
+  bool mte = false;
+
+  /* A positive TLS value indicates the number of TLS registers available.  */
+  uint8_t tls = 0;
+  /* The allowed values for SVQ are the following:
+
+     0 - SME is not supported/available.
+     1 - SME is available, SVL is 16 bytes / 128-bit.
+     2 - SME is available, SVL is 32 bytes / 256-bit.
+     4 - SME is available, SVL is 64 bytes / 512-bit.
+     8 - SME is available, SVL is 128 bytes / 1024-bit.
+     16 - SME is available, SVL is 256 bytes / 2048-bit.
+
+     These use at most 5 bits to represent.  */
+  uint8_t svq = 0;
+
+  /* Whether SME2 is supported.  */
+  bool sme2 = false;
+
+  /* Whether Guarded Control Stack is supported.  */
+  bool gcs = false;
+
+  /* Whether Guarded Control Stack Linux features are supported.  */
+  bool gcs_linux = false;
+};
+
+inline bool operator==(const aarch64_features &lhs, const aarch64_features &rhs)
+{
+  return lhs.vq == rhs.vq
+    && lhs.pauth == rhs.pauth
+    && lhs.mte == rhs.mte
+    && lhs.tls == rhs.tls
+    && lhs.svq == rhs.svq
+    && lhs.sme2 == rhs.sme2
+    && lhs.gcs == rhs.gcs
+    && lhs.gcs_linux == rhs.gcs_linux;
+}
 
-target_desc *aarch64_create_target_description (uint64_t vq, bool has_pauth_p);
+namespace std
+{
+  template<>
+  struct hash<aarch64_features>
+  {
+    std::size_t operator()(const aarch64_features &features) const noexcept
+    {
+      std::size_t h;
+
+      h = features.vq;
+      h = h << 1 | features.pauth;
+      h = h << 1 | features.mte;
+      /* Shift by two bits for now.  We may need to increase this in the future
+	 if more TLS registers get added.  */
+      h = h << 2 | features.tls;
+
+      /* Make sure the SVQ values are within the limits.  */
+      gdb_assert (features.svq >= 0);
+      gdb_assert (features.svq <= 16);
+      h = h << 5 | (features.svq & 0x5);
+
+      /* SME2 feature.  */
+      h = h << 1 | features.sme2;
+
+      h = h << 1 | features.gcs;
+      h = h << 1 | features.gcs_linux;
+
+      return h;
+    }
+  };
+}
+
+/* Create the aarch64 target description.  */
+
+target_desc *
+  aarch64_create_target_description (const aarch64_features &features);
+
+/* Given a pointer value POINTER and a MASK of non-address bits, remove the
+   non-address bits from the pointer and sign-extend the result if required.
+   The sign-extension is required so we can handle kernel addresses
+   correctly.  */
+CORE_ADDR aarch64_remove_top_bits (CORE_ADDR pointer, CORE_ADDR mask);
+
+/* Given CMASK and DMASK the two PAC mask registers, return the correct PAC
+   mask to use for removing non-address bits from a pointer.  */
+CORE_ADDR
+aarch64_mask_from_pac_registers (const CORE_ADDR cmask, const CORE_ADDR dmask);
 
 /* Register numbers of various important registers.
    Note that on SVE, the Z registers reuse the V register numbers and the V
@@ -58,6 +148,17 @@ enum aarch64_regnum
   AARCH64_LAST_V_ARG_REGNUM = AARCH64_V0_REGNUM + 7
 };
 
+/* Sizes of various AArch64 registers.  */
+#define AARCH64_TLS_REGISTER_SIZE 8
+#define V_REGISTER_SIZE	  16
+
+/* PAC-related constants.  */
+/* Bit 55 is used to select between a kernel-space and user-space address.  */
+#define VA_RANGE_SELECT_BIT_MASK  0x80000000000000ULL
+/* Mask with 1's in bits 55~63, used to remove the top byte of pointers
+   (Top Byte Ignore).  */
+#define AARCH64_TOP_BITS_MASK	  0xff80000000000000ULL
+
 /* Pseudo register base numbers.  */
 #define AARCH64_Q0_REGNUM 0
 #define AARCH64_D0_REGNUM (AARCH64_Q0_REGNUM + AARCH64_D_REGISTER_COUNT)
@@ -68,6 +169,12 @@ enum aarch64_regnum
 
 #define AARCH64_PAUTH_DMASK_REGNUM(pauth_reg_base) (pauth_reg_base)
 #define AARCH64_PAUTH_CMASK_REGNUM(pauth_reg_base) (pauth_reg_base + 1)
+/* The high versions of these masks are used for bare metal/kernel-mode pointer
+   authentication support.  */
+#define AARCH64_PAUTH_DMASK_HIGH_REGNUM(pauth_reg_base) (pauth_reg_base + 2)
+#define AARCH64_PAUTH_CMASK_HIGH_REGNUM(pauth_reg_base) (pauth_reg_base + 3)
+
+/* This size is only meant for Linux, not bare metal.  QEMU exposes 4 masks.  */
 #define AARCH64_PAUTH_REGS_SIZE (16)
 
 #define AARCH64_X_REGS_NUM 31
@@ -77,7 +184,6 @@ enum aarch64_regnum
 #define AARCH64_NUM_REGS AARCH64_FPCR_REGNUM + 1
 #define AARCH64_SVE_NUM_REGS AARCH64_SVE_VG_REGNUM + 1
 
-
 /* There are a number of ways of expressing the current SVE vector size:
 
    VL : Vector Length.
@@ -102,4 +208,38 @@ enum aarch64_regnum
 /* Maximum supported VQ value.  Increase if required.  */
 #define AARCH64_MAX_SVE_VQ  16
 
-#endif /* ARCH_AARCH64_H */
+/* SME definitions
+
+   Some of these definitions are not found in the Architecture Reference
+   Manual, but we use them so we can keep a similar standard compared to the
+   SVE definitions that the Linux Kernel uses.  Otherwise it can get
+   confusing.
+
+   SVL : Streaming Vector Length.
+	 Although the documentation handles SVL in bits, we do it in
+	 bytes to match what we do for SVE.
+
+	 The streaming vector length dictates the size of the ZA register and
+	 the size of the SVE registers when in streaming mode.
+
+   SVQ : Streaming Vector Quotient.
+	 The number of 128-bit chunks in an SVE Z register or the size of
+	 each dimension of the SME ZA matrix.
+
+   SVG : Streaming Vector Granule.
+	 The number of 64-bit chunks in an SVE Z register or the size of
+	 half a SME ZA matrix dimension.  The SVG definition was added so
+	 we keep a familiar definition when dealing with SVE registers in
+	 streaming mode.  */
+
+/* The total number of tiles.  This is always fixed regardless of the
+   streaming vector length (svl).  */
+#define AARCH64_ZA_TILES_NUM 31
+/* svl limits for SME.  */
+#define AARCH64_SME_MIN_SVL 128
+#define AARCH64_SME_MAX_SVL 2048
+
+/* Size of the SME2 ZT0 register in bytes.  */
+#define AARCH64_SME2_ZT0_SIZE 64
+
+#endif /* GDB_ARCH_AARCH64_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.20200303/gdb/arch/aarch64-insn.c ./gdb/arch/aarch64-insn.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-insn.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/aarch64-insn.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -16,31 +16,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/>.  */
 
-#include "gdbsupport/common-defs.h"
 #include "aarch64-insn.h"
 
 /* Toggle this file's internal debugging dump.  */
 bool aarch64_debug = false;
 
-/* Extract a signed value from a bit field within an instruction
-   encoding.
-
-   INSN is the instruction opcode.
-
-   WIDTH specifies the width of the bit field to extract (in bits).
-
-   OFFSET specifies the least significant bit of the field where bits
-   are numbered zero counting from least to most significant.  */
-
-static int32_t
-extract_signed_bitfield (uint32_t insn, unsigned width, unsigned offset)
-{
-  unsigned shift_l = sizeof (int32_t) * 8 - (offset + width);
-  unsigned shift_r = sizeof (int32_t) * 8 - width;
-
-  return ((int32_t) insn << shift_l) >> shift_r;
-}
-
 /* Determine if specified bits within an instruction opcode matches a
    specific pattern.
 
@@ -74,7 +54,7 @@ aarch64_decode_adr (CORE_ADDR addr, uint
   if (decode_masked_match (insn, 0x1f000000, 0x10000000))
     {
       uint32_t immlo = (insn >> 29) & 0x3;
-      int32_t immhi = extract_signed_bitfield (insn, 19, 5) << 2;
+      int32_t immhi = sbits (insn, 5, 23) * 4;
 
       *is_adrp = (insn >> 31) & 0x1;
       *rd = (insn >> 0) & 0x1f;
@@ -88,12 +68,9 @@ aarch64_decode_adr (CORE_ADDR addr, uint
       else
 	*offset = (immhi | immlo);
 
-      if (aarch64_debug)
-	{
-	  debug_printf ("decode: 0x%s 0x%x %s x%u, #?\n",
-			core_addr_to_string_nz (addr), insn,
-			*is_adrp ?  "adrp" : "adr", *rd);
-	}
+      aarch64_debug_printf ("decode: 0x%s 0x%x %s x%u, #?",
+			    core_addr_to_string_nz (addr), insn,
+			    *is_adrp ?  "adrp" : "adr", *rd);
       return 1;
     }
   return 0;
@@ -118,15 +95,12 @@ aarch64_decode_b (CORE_ADDR addr, uint32
   if (decode_masked_match (insn, 0x7c000000, 0x14000000))
     {
       *is_bl = (insn >> 31) & 0x1;
-      *offset = extract_signed_bitfield (insn, 26, 0) << 2;
+      *offset = sbits (insn, 0, 25) * 4;
 
-      if (aarch64_debug)
-	{
-	  debug_printf ("decode: 0x%s 0x%x %s 0x%s\n",
-			core_addr_to_string_nz (addr), insn,
-			*is_bl ? "bl" : "b",
-			core_addr_to_string_nz (addr + *offset));
-	}
+      aarch64_debug_printf ("decode: 0x%s 0x%x %s 0x%s",
+			    core_addr_to_string_nz (addr), insn,
+			    *is_bl ? "bl" : "b",
+			    core_addr_to_string_nz (addr + *offset));
 
       return 1;
     }
@@ -151,14 +125,11 @@ aarch64_decode_bcond (CORE_ADDR addr, ui
   if (decode_masked_match (insn, 0xff000010, 0x54000000))
     {
       *cond = (insn >> 0) & 0xf;
-      *offset = extract_signed_bitfield (insn, 19, 5) << 2;
+      *offset = sbits (insn, 5, 23) * 4;
 
-      if (aarch64_debug)
-	{
-	  debug_printf ("decode: 0x%s 0x%x b<%u> 0x%s\n",
-			core_addr_to_string_nz (addr), insn, *cond,
-			core_addr_to_string_nz (addr + *offset));
-	}
+      aarch64_debug_printf ("decode: 0x%s 0x%x b<%u> 0x%s",
+			    core_addr_to_string_nz (addr), insn, *cond,
+			    core_addr_to_string_nz (addr + *offset));
       return 1;
     }
   return 0;
@@ -186,15 +157,12 @@ aarch64_decode_cb (CORE_ADDR addr, uint3
       *rn = (insn >> 0) & 0x1f;
       *is64 = (insn >> 31) & 0x1;
       *is_cbnz = (insn >> 24) & 0x1;
-      *offset = extract_signed_bitfield (insn, 19, 5) << 2;
+      *offset = sbits (insn, 5, 23) * 4;
 
-      if (aarch64_debug)
-	{
-	  debug_printf ("decode: 0x%s 0x%x %s 0x%s\n",
-			core_addr_to_string_nz (addr), insn,
-			*is_cbnz ? "cbnz" : "cbz",
-			core_addr_to_string_nz (addr + *offset));
-	}
+      aarch64_debug_printf ("decode: 0x%s 0x%x %s 0x%s",
+			    core_addr_to_string_nz (addr), insn,
+			    *is_cbnz ? "cbnz" : "cbz",
+			    core_addr_to_string_nz (addr + *offset));
       return 1;
     }
   return 0;
@@ -222,15 +190,12 @@ aarch64_decode_tb (CORE_ADDR addr, uint3
       *rt = (insn >> 0) & 0x1f;
       *is_tbnz = (insn >> 24) & 0x1;
       *bit = ((insn >> (31 - 4)) & 0x20) | ((insn >> 19) & 0x1f);
-      *imm = extract_signed_bitfield (insn, 14, 5) << 2;
+      *imm = sbits (insn, 5, 18) * 4;
 
-      if (aarch64_debug)
-	{
-	  debug_printf ("decode: 0x%s 0x%x %s x%u, #%u, 0x%s\n",
-			core_addr_to_string_nz (addr), insn,
-			*is_tbnz ? "tbnz" : "tbz", *rt, *bit,
-			core_addr_to_string_nz (addr + *imm));
-	}
+      aarch64_debug_printf ("decode: 0x%s 0x%x %s x%u, #%u, 0x%s",
+			    core_addr_to_string_nz (addr), insn,
+			    *is_tbnz ? "tbnz" : "tbz", *rt, *bit,
+			    core_addr_to_string_nz (addr + *imm));
       return 1;
     }
   return 0;
@@ -267,13 +232,12 @@ aarch64_decode_ldr_literal (CORE_ADDR ad
 	*is64 = (insn >> 30) & 0x1;
 
       *rt = (insn >> 0) & 0x1f;
-      *offset = extract_signed_bitfield (insn, 19, 5) << 2;
+      *offset = sbits (insn, 5, 23) * 4;
 
-      if (aarch64_debug)
-	debug_printf ("decode: %s 0x%x %s %s%u, #?\n",
-		      core_addr_to_string_nz (addr), insn,
-		      *is_w ? "ldrsw" : "ldr",
-		      *is64 ? "x" : "w", *rt);
+      aarch64_debug_printf ("decode: %s 0x%x %s %s%u, #?",
+			    core_addr_to_string_nz (addr), insn,
+			    *is_w ? "ldrsw" : "ldr",
+			    *is64 ? "x" : "w", *rt);
 
       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.20200303/gdb/arch/aarch64-insn.h ./gdb/arch/aarch64-insn.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-insn.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/aarch64-insn.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Contributed by ARM Ltd.
 
    This file is part of GDB.
@@ -16,11 +16,37 @@
    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_AARCH64_INSN_H
-#define ARCH_AARCH64_INSN_H
+#ifndef GDB_ARCH_AARCH64_INSN_H
+#define GDB_ARCH_AARCH64_INSN_H
 
 extern bool aarch64_debug;
 
+/* Print an "aarch64" debug statement.  */
+
+#define aarch64_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (aarch64_debug, "aarch64", fmt, ##__VA_ARGS__)
+
+/* Support routines for instruction parsing.  */
+
+/* Create a mask of X bits.  */
+#define submask(x) ((1L << ((x) + 1)) - 1)
+
+/* Extract the bitfield from OBJ starting at bit ST and ending at bit FN.  */
+#define bits(obj,st,fn) (((obj) >> (st)) & submask ((fn) - (st)))
+
+/* Extract bit ST from OBJ.  */
+#define bit(obj,st) (((obj) >> (st)) & 1)
+
+/* Extract the signed bitfield from OBJ starting at bit ST and ending at
+   bit FN.  The result is sign-extended.  */
+#define sbits(obj,st,fn) \
+  ((long) (bits(obj,st,fn) | ((long) bit(obj,fn) * ~ submask (fn - st))))
+
+/* Prologue analyzer helper macros.  */
+
+/* Is the instruction "bti"?  */
+#define IS_BTI(instruction) ((instruction & 0xffffff3f) == 0xd503241f)
+
 /* List of opcodes that we need for building the jump pad and relocating
    an instruction.  */
 
@@ -40,7 +66,9 @@ enum aarch64_opcodes
   CBNZ            = 0x21000000 | B,
   TBZ             = 0x36000000 | B,
   TBNZ            = 0x37000000 | B,
+  /* BR             1101 0110 0001 1111 0000 00rr rrr0 0000 */
   /* BLR            1101 0110 0011 1111 0000 00rr rrr0 0000 */
+  BR              = 0xd61f0000,
   BLR             = 0xd63f0000,
   /* RET            1101 0110 0101 1111 0000 00rr rrr0 0000 */
   RET             = 0xd65f0000,
@@ -107,6 +135,13 @@ enum aarch64_opcodes
   NOP             = (0 << 5) | HINT,
 };
 
+/* List of useful masks.  */
+enum aarch64_masks
+{
+  /* Used for masking out an Rn argument from an opcode.  */
+  CLEAR_Rn_MASK = 0xfffffc1f,
+};
+
 /* Representation of a general purpose register of the form xN or wN.
 
    This type is used by emitting functions that take registers as operands.  */
@@ -321,4 +356,4 @@ int aarch64_emit_load_store (uint32_t *b
 			     struct aarch64_register rn,
 			     struct aarch64_memory_operand operand);
 
-#endif /* ARCH_AARCH64_INSN_H */
+#endif /* GDB_ARCH_AARCH64_INSN_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.20200303/gdb/arch/aarch64-mte.c ./gdb/arch/aarch64-mte.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-mte.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/aarch64-mte.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,77 @@
+/* Common AArch64 functionality for MTE
+
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arch/aarch64-mte.h"
+
+/* See arch/aarch64-mte.h */
+
+size_t
+aarch64_mte_get_tag_granules (CORE_ADDR addr, size_t len, size_t granule_size)
+{
+  /* An empty range has 0 tag granules.  */
+  if (len == 0)
+    return 0;
+
+  /* Start address */
+  CORE_ADDR s_addr = align_down (addr, granule_size);
+  /* End address */
+  CORE_ADDR e_addr = align_down (addr + len - 1, granule_size);
+
+  /* We always have at least 1 granule because len is non-zero at this
+     point.  */
+  return 1 + (e_addr - s_addr) / granule_size;
+}
+
+/* See arch/aarch64-mte.h */
+
+CORE_ADDR
+aarch64_mte_make_ltag_bits (CORE_ADDR value)
+{
+  return value & AARCH64_MTE_LOGICAL_MAX_VALUE;
+}
+
+/* See arch/aarch64-mte.h */
+
+CORE_ADDR
+aarch64_mte_make_ltag (CORE_ADDR value)
+{
+  return (aarch64_mte_make_ltag_bits (value)
+	  << AARCH64_MTE_LOGICAL_TAG_START_BIT);
+}
+
+/* See arch/aarch64-mte.h */
+
+CORE_ADDR
+aarch64_mte_set_ltag (CORE_ADDR address, CORE_ADDR tag)
+{
+  /* Remove the existing tag.  */
+  address &= ~aarch64_mte_make_ltag (AARCH64_MTE_LOGICAL_MAX_VALUE);
+
+  /* Return the new tagged address.  */
+  return address | aarch64_mte_make_ltag (tag);
+}
+
+/* See arch/aarch64-mte.h */
+
+CORE_ADDR
+aarch64_mte_get_ltag (CORE_ADDR address)
+{
+  CORE_ADDR ltag_addr = address >> AARCH64_MTE_LOGICAL_TAG_START_BIT;
+  return aarch64_mte_make_ltag_bits (ltag_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.20200303/gdb/arch/aarch64-mte.h ./gdb/arch/aarch64-mte.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-mte.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/aarch64-mte.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,51 @@
+/* Common AArch64 definitions for MTE
+
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_AARCH64_MTE_H
+#define GDB_ARCH_AARCH64_MTE_H
+
+
+/* We have one tag per 16 bytes of memory.  */
+#define AARCH64_MTE_GRANULE_SIZE 16
+#define AARCH64_MTE_TAG_BIT_SIZE 4
+#define AARCH64_MTE_LOGICAL_TAG_START_BIT 56
+#define AARCH64_MTE_LOGICAL_MAX_VALUE 0xf
+
+/* Return the number of tag granules in the memory range
+   [ADDR, ADDR + LEN) given GRANULE_SIZE.  */
+extern size_t aarch64_mte_get_tag_granules (CORE_ADDR addr, size_t len,
+					    size_t granule_size);
+
+/* Return the 4-bit tag made from VALUE.  */
+extern CORE_ADDR aarch64_mte_make_ltag_bits (CORE_ADDR value);
+
+/* Return the 4-bit tag that can be OR-ed to an address.  */
+extern CORE_ADDR aarch64_mte_make_ltag (CORE_ADDR value);
+
+/* Helper to set the logical TAG for a 64-bit ADDRESS.
+
+   It is always possible to set the logical tag.  */
+extern CORE_ADDR aarch64_mte_set_ltag (CORE_ADDR address, CORE_ADDR tag);
+
+/* Helper to get the logical tag from a 64-bit ADDRESS.
+
+   It is always possible to get the logical tag.  */
+extern CORE_ADDR aarch64_mte_get_ltag (CORE_ADDR address);
+
+#endif /* GDB_ARCH_AARCH64_MTE_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.20200303/gdb/arch/aarch64-mte-linux.c ./gdb/arch/aarch64-mte-linux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-mte-linux.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/aarch64-mte-linux.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,77 @@
+/* Common Linux target-dependent functionality for AArch64 MTE
+
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arch/aarch64-mte-linux.h"
+
+/* See arch/aarch64-mte-linux.h */
+
+void
+aarch64_mte_pack_tags (gdb::byte_vector &tags)
+{
+  /* Nothing to pack?  */
+  if (tags.empty ())
+    return;
+
+  /* If the tags vector has an odd number of elements, add another
+     zeroed-out element to make it even.  This facilitates packing.  */
+  if ((tags.size () % 2) != 0)
+    tags.emplace_back (0);
+
+  for (int unpacked = 0, packed = 0; unpacked < tags.size ();
+       unpacked += 2, packed++)
+    tags[packed] = (tags[unpacked + 1] << 4) | tags[unpacked];
+
+  /* Now we have half the size.  */
+  tags.resize (tags.size () / 2);
+}
+
+/* See arch/aarch64-mte-linux.h */
+
+void
+aarch64_mte_unpack_tags (gdb::byte_vector &tags, bool skip_first)
+{
+  /* Nothing to unpack?  */
+  if (tags.empty ())
+    return;
+
+  /* An unpacked MTE tags vector will have twice the number of elements
+     compared to an unpacked one.  */
+  gdb::byte_vector unpacked_tags (tags.size () * 2);
+
+  int unpacked = 0, packed = 0;
+
+  if (skip_first)
+    {
+      /* We are not interested in the first unpacked element, just discard
+	 it.  */
+      unpacked_tags[unpacked] = (tags[packed] >> 4) & 0xf;
+      unpacked++;
+      packed++;
+    }
+
+  for (; packed < tags.size (); unpacked += 2, packed++)
+    {
+      unpacked_tags[unpacked] = tags[packed] & 0xf;
+      unpacked_tags[unpacked + 1] = (tags[packed] >> 4) & 0xf;
+    }
+
+  /* Update the original tags vector.  */
+  tags = std::move (unpacked_tags);
+}
+
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-mte-linux.h ./gdb/arch/aarch64-mte-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-mte-linux.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/aarch64-mte-linux.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,56 @@
+/* Common Linux target-dependent definitions for AArch64 MTE
+
+   Copyright (C) 2021-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_AARCH64_MTE_LINUX_H
+#define GDB_ARCH_AARCH64_MTE_LINUX_H
+
+
+/* Feature check for Memory Tagging Extension.  */
+#ifndef HWCAP2_MTE
+#define HWCAP2_MTE  (1 << 18)
+#endif
+
+/* The MTE regset consists of a single 64-bit register.  */
+#define AARCH64_LINUX_SIZEOF_MTE 8
+
+/* Memory tagging definitions.  */
+#ifndef SEGV_MTEAERR
+# define SEGV_MTEAERR 8
+# define SEGV_MTESERR 9
+#endif
+
+/* Memory tag types for AArch64.  */
+enum class aarch64_memtag_type
+{
+  /* MTE logical tag contained in pointers.  */
+  mte_logical = 0,
+  /* MTE allocation tag stored in memory tag granules.  */
+  mte_allocation
+};
+
+/* Given a TAGS vector containing 1 MTE tag per byte, pack the data as
+   2 tags per byte and resize the vector.  */
+extern void aarch64_mte_pack_tags (gdb::byte_vector &tags);
+
+/* Given a TAGS vector containing 2 MTE tags per byte, unpack the data as
+   1 tag per byte and resize the vector.  If SKIP_FIRST is TRUE, skip the
+   first unpacked element.  Otherwise leave it in the unpacked vector.  */
+extern void aarch64_mte_unpack_tags (gdb::byte_vector &tags, bool skip_first);
+
+#endif /* GDB_ARCH_AARCH64_MTE_LINUX_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.20200303/gdb/arch/aarch64-scalable-linux.c ./gdb/arch/aarch64-scalable-linux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-scalable-linux.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/aarch64-scalable-linux.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,55 @@
+/* Common Linux arch-specific functionality for AArch64 scalable
+   extensions: SVE and SME.
+
+   Copyright (C) 2023-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arch/aarch64-scalable-linux.h"
+#include "arch/aarch64.h"
+#include "gdbsupport/byte-vector.h"
+#include "gdbsupport/common-regcache.h"
+
+/* See arch/aarch64-scalable-linux.h  */
+
+bool
+sve_state_is_empty (const struct reg_buffer_common *reg_buf)
+{
+  /* Instead of allocating a buffer with the size of the current vector
+     length, just use a buffer that is big enough for all cases.  */
+  gdb_byte zero_buffer[256];
+
+  /* Zero it out.  */
+  memset (zero_buffer, 0, 256);
+
+  /* Are any of the Z registers set (non-zero) after the first 128 bits?  */
+  for (int i = 0; i < AARCH64_SVE_Z_REGS_NUM; i++)
+    {
+      if (!reg_buf->raw_compare (AARCH64_SVE_Z0_REGNUM + i, zero_buffer,
+				 V_REGISTER_SIZE))
+	return false;
+    }
+
+  /* Are any of the P registers set (non-zero)?  */
+  for (int i = 0; i < AARCH64_SVE_P_REGS_NUM; i++)
+    {
+      if (!reg_buf->raw_compare (AARCH64_SVE_P0_REGNUM + i, zero_buffer, 0))
+	return false;
+    }
+
+  /* Is the FFR register set (non-zero)?  */
+  return reg_buf->raw_compare (AARCH64_SVE_FFR_REGNUM, zero_buffer, 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.20200303/gdb/arch/aarch64-scalable-linux.h ./gdb/arch/aarch64-scalable-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/aarch64-scalable-linux.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/aarch64-scalable-linux.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,58 @@
+/* Common AArch64 Linux arch-specific definitions for the scalable
+   extensions: SVE and SME.
+
+   Copyright (C) 2023-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_AARCH64_SCALABLE_LINUX_H
+#define GDB_ARCH_AARCH64_SCALABLE_LINUX_H
+
+#include "gdbsupport/common-regcache.h"
+
+/* Feature check for Scalable Matrix Extension.  */
+#ifndef HWCAP2_SME
+#define HWCAP2_SME (1 << 23)
+#endif
+
+/* Feature check for Scalable Matrix Extension 2.  */
+#ifndef HWCAP2_SME2
+#define HWCAP2_SME2   (1UL << 37)
+#define HWCAP2_SME2P1 (1UL << 38)
+#endif
+
+/* Streaming mode enabled/disabled bit.  */
+#define SVCR_SM_BIT (1 << 0)
+/* ZA enabled/disabled bit.  */
+#define SVCR_ZA_BIT (1 << 1)
+/* Mask including all valid SVCR bits.  */
+#define SVCR_BIT_MASK (SVCR_SM_BIT | SVCR_ZA_BIT)
+
+/* SVE/SSVE-related constants used for an empty SVE/SSVE register set
+   dumped to a core file.  When SME is supported, either the SVE state or
+   the SSVE state will be empty when it is dumped to a core file.  */
+#define SVE_CORE_DUMMY_SIZE 0x220
+#define SVE_CORE_DUMMY_MAX_SIZE 0x2240
+#define SVE_CORE_DUMMY_VL 0x10
+#define SVE_CORE_DUMMY_MAX_VL 0x100
+#define SVE_CORE_DUMMY_FLAGS 0x0
+#define SVE_CORE_DUMMY_RESERVED 0x0
+
+/* Return TRUE if the SVE state in the register cache REGCACHE
+   is empty (zero).  Return FALSE otherwise.  */
+extern bool sve_state_is_empty (const struct reg_buffer_common *reg_buf);
+
+#endif /* GDB_ARCH_AARCH64_SCALABLE_LINUX_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.20200303/gdb/arch/amd64.c ./gdb/arch/amd64.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/amd64.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/amd64.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,64 +15,68 @@
    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 "amd64.h"
 #include "gdbsupport/x86-xstate.h"
+#include "gdbsupport/osabi.h"
 #include <stdlib.h>
 
 #include "../features/i386/64bit-avx.c"
 #include "../features/i386/64bit-avx512.c"
 #include "../features/i386/64bit-core.c"
 #include "../features/i386/64bit-linux.c"
-#include "../features/i386/64bit-mpx.c"
-#include "../features/i386/64bit-pkeys.c"
 #include "../features/i386/64bit-segments.c"
 #include "../features/i386/64bit-sse.c"
+#include "../features/i386/pkeys.c"
 
+#include "../features/i386/64bit-ssp.c"
+#include "../features/i386/32bit-ssp.c"
 #include "../features/i386/x32-core.c"
 
-/* Create amd64 target descriptions according to XCR0.  If IS_X32 is
-   true, create the x32 ones.  If IS_LINUX is true, create target
-   descriptions for Linux.  If SEGMENTS is true, then include
-   the "org.gnu.gdb.i386.segments" feature registers.  */
+/* See arch/amd64.h.  */
 
 target_desc *
-amd64_create_target_description (uint64_t xcr0, bool is_x32, bool is_linux,
-				 bool segments)
+amd64_create_target_description (uint64_t xstate_bv, bool is_x32,
+				 bool is_linux, bool segments)
 {
-  target_desc *tdesc = allocate_target_description ();
+  target_desc_up tdesc = allocate_target_description ();
 
 #ifndef IN_PROCESS_AGENT
-  set_tdesc_architecture (tdesc, is_x32 ? "i386:x64-32" : "i386:x86-64");
+  set_tdesc_architecture (tdesc.get (),
+			  is_x32 ? "i386:x64-32" : "i386:x86-64");
 
   if (is_linux)
-    set_tdesc_osabi (tdesc, "GNU/Linux");
+    set_tdesc_osabi (tdesc.get (), GDB_OSABI_LINUX);
 #endif
 
   long regnum = 0;
 
   if (is_x32)
-    regnum = create_feature_i386_x32_core (tdesc, regnum);
+    regnum = create_feature_i386_x32_core (tdesc.get (), regnum);
   else
-    regnum = create_feature_i386_64bit_core (tdesc, regnum);
+    regnum = create_feature_i386_64bit_core (tdesc.get (), regnum);
 
-  regnum = create_feature_i386_64bit_sse (tdesc, regnum);
+  regnum = create_feature_i386_64bit_sse (tdesc.get (), regnum);
   if (is_linux)
-    regnum = create_feature_i386_64bit_linux (tdesc, regnum);
+    regnum = create_feature_i386_64bit_linux (tdesc.get (), regnum);
   if (segments)
-    regnum = create_feature_i386_64bit_segments (tdesc, regnum);
+    regnum = create_feature_i386_64bit_segments (tdesc.get (), regnum);
 
-  if (xcr0 & X86_XSTATE_AVX)
-    regnum = create_feature_i386_64bit_avx (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_AVX)
+    regnum = create_feature_i386_64bit_avx (tdesc.get (), regnum);
 
-  if ((xcr0 & X86_XSTATE_MPX) && !is_x32)
-    regnum = create_feature_i386_64bit_mpx (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_AVX512)
+    regnum = create_feature_i386_64bit_avx512 (tdesc.get (), regnum);
 
-  if (xcr0 & X86_XSTATE_AVX512)
-    regnum = create_feature_i386_64bit_avx512 (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_PKRU)
+    regnum = create_feature_i386_pkeys (tdesc.get (), regnum);
+
+  if (xstate_bv & X86_XSTATE_CET_U)
+    {
+      if (!is_x32)
+	regnum = create_feature_i386_64bit_ssp (tdesc.get (), regnum);
+      else
+	regnum = create_feature_i386_32bit_ssp (tdesc.get (), regnum);
+    }
 
-  if ((xcr0 & X86_XSTATE_PKRU) && !is_x32)
-    regnum = create_feature_i386_64bit_pkeys (tdesc, regnum);
-
-  return tdesc;
+  return tdesc.release ();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/amd64.h ./gdb/arch/amd64.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/amd64.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/amd64.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,13 +15,19 @@
    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_AMD64_H
-#define ARCH_AMD64_H
+#ifndef GDB_ARCH_AMD64_H
+#define GDB_ARCH_AMD64_H
 
 #include "gdbsupport/tdesc.h"
 #include <stdint.h>
 
-target_desc *amd64_create_target_description (uint64_t xcr0, bool is_x32,
-					      bool is_linux, bool segments);
+/* Create amd64 target descriptions according to XSTATE_BV.  If
+   IS_X32 is true, create the x32 ones.  If IS_LINUX is true, create
+   target descriptions for Linux.  If SEGMENTS is true, then include
+   the "org.gnu.gdb.i386.segments" feature registers.  */
+
+target_desc *amd64_create_target_description (uint64_t xstate_bv,
+					      bool is_x32, bool is_linux,
+					      bool segments);
 
-#endif /* ARCH_AMD64_H */
+#endif /* GDB_ARCH_AMD64_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.20200303/gdb/arch/amd64-linux-tdesc.c ./gdb/arch/amd64-linux-tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/amd64-linux-tdesc.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/amd64-linux-tdesc.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,67 @@
+/* Target description related code for GNU/Linux x86-64.
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arch/x86-linux-tdesc.h"
+#include "arch/amd64-linux-tdesc.h"
+#include "arch/amd64.h"
+#include "arch/x86-linux-tdesc-features.h"
+
+
+/* See arch/amd64-linux-tdesc.h.  */
+
+const struct target_desc *
+amd64_linux_read_description (uint64_t xstate_bv, bool is_x32)
+{
+  /* The type used for the amd64 and x32 target description caches.  */
+  using tdesc_cache_type = std::unordered_map<uint64_t, const target_desc_up>;
+
+  /* Caches for the previously seen amd64 and x32 target descriptions,
+     indexed by the xstate_bv value that created the target
+     description.  These need to be static within this function to ensure
+     they are initialised before first use.  */
+  static tdesc_cache_type amd64_tdesc_cache, x32_tdesc_cache;
+
+  tdesc_cache_type &tdesc_cache = is_x32 ? x32_tdesc_cache : amd64_tdesc_cache;
+
+  /* Only some bits are checked when creating a tdesc, but the
+     xstate_bv value contains other feature bits that are not
+     relevant for tdesc creation.
+     When indexing into the TDESC_CACHE we need to use a consistent
+     xstate_bv value otherwise we might fail to find an existing
+     tdesc which has the same set of relevant bits set.  */
+  xstate_bv &= is_x32
+    ? x86_linux_x32_xstate_bv_feature_mask ()
+    : x86_linux_amd64_xstate_bv_feature_mask ();
+
+  const auto it = tdesc_cache.find (xstate_bv);
+  if (it != tdesc_cache.end ())
+    return it->second.get ();
+
+  /* Create the previously unseen target description.  */
+  target_desc_up tdesc (amd64_create_target_description (xstate_bv, is_x32,
+							 true, true));
+  x86_linux_post_init_tdesc (tdesc.get (), true);
+
+  /* Add to the cache, and return a pointer borrowed from the
+     target_desc_up.  This is safe as the cache (and the pointers contained
+     within it) are not deleted until GDB exits.  */
+  target_desc *ptr = tdesc.get ();
+  tdesc_cache.emplace (xstate_bv, std::move (tdesc));
+  return 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.20200303/gdb/arch/amd64-linux-tdesc.h ./gdb/arch/amd64-linux-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/amd64-linux-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/amd64-linux-tdesc.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,31 @@
+/*  Target description related code for GNU/Linux x86-64.
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_AMD64_LINUX_TDESC_H
+#define GDB_ARCH_AMD64_LINUX_TDESC_H
+
+struct target_desc;
+
+/* Return the AMD64 target descriptions corresponding to XSTATE_BV and
+   IS_X32.  */
+
+extern const target_desc *amd64_linux_read_description
+  (uint64_t xstate_bv, bool is_x32);
+
+#endif /* GDB_ARCH_AMD64_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.20200303/gdb/arch/arc.c ./gdb/arch/arc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/arc.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/arc.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,123 @@
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arc.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_up
+arc_create_target_description (const struct arc_arch_features &features)
+{
+  /* Create a new target description.  */
+  target_desc_up 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 ("%s", msg.c_str ());
+    }
+
+  set_tdesc_architecture (tdesc.get (), arch_name.c_str ());
+#endif
+
+  long regnum = 0;
+
+  switch (features.isa)
+    {
+    case ARC_ISA_ARCV1:
+      regnum = create_feature_arc_v1_core (tdesc.get (), regnum);
+      regnum = create_feature_arc_v1_aux (tdesc.get (), regnum);
+      break;
+    case ARC_ISA_ARCV2:
+      regnum = create_feature_arc_v2_core (tdesc.get (), regnum);
+      regnum = create_feature_arc_v2_aux (tdesc.get (), regnum);
+      break;
+    default:
+      std::string msg = string_printf
+	("Cannot choose target description XML: %d", features.isa);
+      gdb_assert_not_reached ("%s", 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_up tdesc = arc_create_target_description (features);
+
+
+  /* Add to the cache, and return a pointer borrowed from the
+     target_desc_up.  This is safe as the cache (and the pointers
+     contained within it) are not deleted until GDB exits.  */
+  target_desc *ptr = tdesc.get ();
+  arc_tdesc_cache.emplace (features, std::move (tdesc));
+  return ptr;
+}
+
+#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.20200303/gdb/arch/arc.h ./gdb/arch/arc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/arc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/arc.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,87 @@
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_ARC_H
+#define GDB_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_up 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 /* GDB_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.20200303/gdb/arch/arm.c ./gdb/arch/arm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/arm.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/arm.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,16 +17,18 @@
    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-regcache.h"
 #include "arm.h"
 
 #include "../features/arm/arm-core.c"
+#include "../features/arm/arm-tls.c"
 #include "../features/arm/arm-vfpv2.c"
 #include "../features/arm/arm-vfpv3.c"
 #include "../features/arm/xscale-iwmmxt.c"
 #include "../features/arm/arm-m-profile.c"
 #include "../features/arm/arm-m-profile-with-fpa.c"
+#include "../features/arm/arm-m-profile-mve.c"
+#include "../features/arm/arm-m-system.c"
 
 /* See arm.h.  */
 
@@ -42,20 +44,9 @@ 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)
 {
-  if (cond == INST_AL || cond == INST_NV)
+  if (condition_always_true (cond))
     return 1;
 
   switch (cond)
@@ -130,7 +121,7 @@ arm_instruction_changes_pc (uint32_t thi
       case 0xd:
       case 0xe:
 	/* Coprocessor register transfer.  */
-        if (bits (this_instr, 12, 15) == 15)
+	if (bits (this_instr, 12, 15) == 15)
 	  error (_("Invalid update to pc in instruction"));
 	return 0;
       default:
@@ -161,7 +152,7 @@ arm_instruction_changes_pc (uint32_t thi
 	    return 0;
 	  }
 	/* Data processing instruction.  */
-	/* Fall through.  */
+	[[fallthrough]];
 
       case 0x1:
 	if (bits (this_instr, 12, 15) == 15)
@@ -202,7 +193,7 @@ arm_instruction_changes_pc (uint32_t thi
 	return 0;
 
       default:
-	internal_error (__FILE__, __LINE__, _("bad value in switch"));
+	internal_error (_("bad value in switch"));
       }
 }
 
@@ -330,7 +321,7 @@ thumb2_instruction_changes_pc (unsigned
 /* See arm.h.  */
 
 unsigned long
-shifted_reg_val (struct regcache *regcache, unsigned long inst,
+shifted_reg_val (reg_buffer_common *regcache, unsigned long inst,
 		 int carry, unsigned long pc_val, unsigned long status_reg)
 {
   unsigned long res, shift;
@@ -383,20 +374,20 @@ shifted_reg_val (struct regcache *regcac
 /* See arch/arm.h.  */
 
 target_desc *
-arm_create_target_description (arm_fp_type fp_type)
+arm_create_target_description (arm_fp_type fp_type, bool tls)
 {
-  target_desc *tdesc = allocate_target_description ();
+  target_desc_up tdesc = allocate_target_description ();
 
 #ifndef IN_PROCESS_AGENT
   if (fp_type == ARM_FP_TYPE_IWMMXT)
-    set_tdesc_architecture (tdesc, "iwmmxt");
+    set_tdesc_architecture (tdesc.get (), "iwmmxt");
   else
-    set_tdesc_architecture (tdesc, "arm");
+    set_tdesc_architecture (tdesc.get (), "arm");
 #endif
 
   long regnum = 0;
 
-  regnum = create_feature_arm_arm_core (tdesc, regnum);
+  regnum = create_feature_arm_arm_core (tdesc.get (), regnum);
 
   switch (fp_type)
     {
@@ -404,22 +395,25 @@ arm_create_target_description (arm_fp_ty
       break;
 
     case ARM_FP_TYPE_VFPV2:
-      regnum = create_feature_arm_arm_vfpv2 (tdesc, regnum);
+      regnum = create_feature_arm_arm_vfpv2 (tdesc.get (), regnum);
       break;
 
     case ARM_FP_TYPE_VFPV3:
-      regnum = create_feature_arm_arm_vfpv3 (tdesc, regnum);
+      regnum = create_feature_arm_arm_vfpv3 (tdesc.get (), regnum);
       break;
 
     case ARM_FP_TYPE_IWMMXT:
-      regnum = create_feature_arm_xscale_iwmmxt (tdesc, regnum);
+      regnum = create_feature_arm_xscale_iwmmxt (tdesc.get (), regnum);
       break;
 
     default:
       error (_("Invalid Arm FP type: %d"), fp_type);
     }
 
-  return tdesc;
+  if (tls)
+    regnum = create_feature_arm_arm_tls (tdesc.get (), regnum);
+
+  return tdesc.release ();
 }
 
 /* See arch/arm.h.  */
@@ -427,7 +421,7 @@ arm_create_target_description (arm_fp_ty
 target_desc *
 arm_create_mprofile_target_description (arm_m_profile_type m_type)
 {
-  target_desc *tdesc = allocate_target_description ();
+  target_desc *tdesc = allocate_target_description ().release ();
 
 #ifndef IN_PROCESS_AGENT
   set_tdesc_architecture (tdesc, "arm");
@@ -450,6 +444,17 @@ arm_create_mprofile_target_description (
       regnum = create_feature_arm_arm_m_profile_with_fpa (tdesc, regnum);
       break;
 
+    case ARM_M_TYPE_MVE:
+      regnum = create_feature_arm_arm_m_profile (tdesc, regnum);
+      regnum = create_feature_arm_arm_vfpv2 (tdesc, regnum);
+      regnum = create_feature_arm_arm_m_profile_mve (tdesc, regnum);
+      break;
+
+    case ARM_M_TYPE_SYSTEM:
+      regnum = create_feature_arm_arm_m_profile (tdesc, regnum);
+      regnum = create_feature_arm_arm_m_system (tdesc, regnum);
+      break;
+
     default:
       error (_("Invalid Arm M type: %d"), m_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.20200303/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.20200303/gdb/arch/arm-get-next-pcs.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/arm-get-next-pcs.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,11 +17,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/>.  */
 
-#include "gdbsupport/common-defs.h"
-#include "gdbsupport/gdb_vecs.h"
 #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.  */
 
@@ -31,7 +30,7 @@ arm_get_next_pcs_ctor (struct arm_get_ne
 		       int byte_order,
 		       int byte_order_for_code,
 		       int has_thumb2_breakpoint,
-		       struct regcache *regcache)
+		       reg_buffer_common *regcache)
 {
   self->ops = ops;
   self->byte_order = byte_order;
@@ -40,10 +39,92 @@ arm_get_next_pcs_ctor (struct arm_get_ne
   self->regcache = regcache;
 }
 
-/* Checks for an atomic sequence of instructions beginning with a LDREX{,B,H,D}
-   instruction and ending with a STREX{,B,H,D} instruction.  If such a sequence
-   is found, attempt to step through it.  The end of the sequence address is
-   added to the next_pcs list.  */
+/* Return true if INSN matches one of the <value,mask> pairs in MATCHES.  */
+
+static bool
+insn_matches (uint32_t insn, gdb::array_view<const uint32_t> matches)
+{
+  gdb_assert (matches.size () % 2 == 0);
+
+  for (int i = 0; i < matches.size (); i += 2)
+    {
+      uint32_t value = matches[i];
+      uint32_t mask = matches[i + 1];
+      if ((insn & mask) == value)
+	return true;
+    }
+
+  return false;
+}
+
+/* Return true if INSN is an ldaex arm insn.  */
+
+static bool
+ldaex_arm_p (uint32_t insn)
+{
+  /* Copied from arm_opcodes in opcodes/arm-dis.c.  */
+  const uint32_t matches_ldaex_arm[] = {
+    0x01900e9f, 0x0ff00fff, /* ldaex.  */
+    0x01b00e9f, 0x0ff00fff, /* ldaexd.  */
+    0x01d00e9f, 0x0ff00fff, /* ldaexb.  */
+    0x01f00e9f, 0x0ff00fff  /* ldaexh.  */
+  };
+
+  return insn_matches (insn, matches_ldaex_arm);
+}
+
+/* Return true if INSN is an ldaex thumb32 insn.  */
+
+static bool
+ldaex_thumb32_p (uint32_t insn)
+{
+  /* Copied from thumb32_opcodes in opcodes/arm-dis.c.  */
+  const uint32_t matches_ldaex_thumb32[] = {
+    0xe8d00fcf, 0xfff00fff, /* ldaexb.  */
+    0xe8d00fdf, 0xfff00fff, /* ldaexh.  */
+    0xe8d00fef, 0xfff00fff, /* ldaex.  */
+    0xe8d000ff, 0xfff000ff  /* ldaexd.  */
+  };
+
+  return insn_matches (insn, matches_ldaex_thumb32);
+}
+
+/* Return true if INSN is an stlex arm insn.  */
+
+static bool
+stlex_arm_p (uint32_t insn)
+{
+  /* Copied from arm_opcodes in opcodes/arm-dis.c.  */
+  const uint32_t matches_stlex_arm[] = {
+    0x01800e90, 0x0ff00ff0, /* stlex.  */
+    0x01a00e90, 0x0ff00ff0, /* stlexd.  */
+    0x01c00e90, 0x0ff00ff0, /* stlexb.  */
+    0x01e00e90, 0x0ff00ff0, /* stlexh.  */
+  };
+
+  return insn_matches (insn, matches_stlex_arm);
+}
+
+/* Return true if INSN is an stlex thumb32 insn.  */
+
+static bool
+stlex_thumb32_p (uint32_t insn)
+{
+  /* Copied from thumb32_opcodes in opcodes/arm-dis.c.  */
+  const uint32_t matches_stlex_thumb32[] = {
+    0xe8c00fc0, 0xfff00ff0, /* stlexb.  */
+    0xe8c00fd0, 0xfff00ff0, /* stlexh.  */
+    0xe8c00fe0, 0xfff00ff0, /* stlex.  */
+    0xe8c000f0, 0xfff000f0, /* stlexd.  */
+  };
+
+  return insn_matches (insn, matches_stlex_thumb32);
+}
+
+/* Checks for an atomic sequence of instructions beginning with an
+   LD[AR]EX{,B,H,D} instruction and ending with a ST[LR]EX{,B,H,D} instruction.
+   If such a sequence is found, attempt to step through it.  The end of the
+   sequence address is added to the next_pcs list.  */
 
 static std::vector<CORE_ADDR>
 thumb_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self)
@@ -65,18 +146,22 @@ thumb_deal_with_atomic_sequence_raw (str
   if (itstate & 0x0f)
     return {};
 
-  /* Assume all atomic sequences start with a ldrex{,b,h,d} instruction.  */
   insn1 = self->ops->read_mem_uint (loc, 2, byte_order_for_code);
-
   loc += 2;
+
   if (thumb_insn_size (insn1) != 4)
     return {};
 
   insn2 = self->ops->read_mem_uint (loc, 2, byte_order_for_code);
-
   loc += 2;
+
+  uint32_t insn = (uint32_t)insn2 | ((uint32_t)insn1 << 16);
+
+  /* Assume all atomic sequences start with an ld[ar]ex{,b,h,d}
+     instruction.  */
   if (!((insn1 & 0xfff0) == 0xe850
-        || ((insn1 & 0xfff0) == 0xe8d0 && (insn2 & 0x00c0) == 0x0040)))
+	|| ((insn1 & 0xfff0) == 0xe8d0 && (insn2 & 0x00c0) == 0x0040)
+	|| ldaex_thumb32_p (insn)))
     return {};
 
   /* Assume that no atomic sequence is longer than "atomic_sequence_length"
@@ -111,9 +196,10 @@ thumb_deal_with_atomic_sequence_raw (str
       else
 	{
 	  insn2 = self->ops->read_mem_uint (loc, 2, byte_order_for_code);
-
 	  loc += 2;
 
+	  insn = (uint32_t)insn2 | ((uint32_t)insn1 << 16);
+
 	  /* Assume that there is at most one conditional branch in the
 	     atomic sequence.  If a conditional branch is found, put a
 	     breakpoint in its destination address.  */
@@ -148,9 +234,10 @@ thumb_deal_with_atomic_sequence_raw (str
 	  else if (thumb2_instruction_changes_pc (insn1, insn2))
 	    return {};
 
-	  /* If we find a strex{,b,h,d}, we're done.  */
+	  /* If we find a st[lr]ex{,b,h,d}, we're done.  */
 	  if ((insn1 & 0xfff0) == 0xe840
-	      || ((insn1 & 0xfff0) == 0xe8c0 && (insn2 & 0x00c0) == 0x0040))
+	      || ((insn1 & 0xfff0) == 0xe8c0 && (insn2 & 0x00c0) == 0x0040)
+	      || stlex_thumb32_p (insn))
 	    break;
 	}
     }
@@ -178,10 +265,10 @@ thumb_deal_with_atomic_sequence_raw (str
   return next_pcs;
 }
 
-/* Checks for an atomic sequence of instructions beginning with a LDREX{,B,H,D}
-   instruction and ending with a STREX{,B,H,D} instruction.  If such a sequence
-   is found, attempt to step through it.  The end of the sequence address is
-   added to the next_pcs list.  */
+/* Checks for an atomic sequence of instructions beginning with an
+   LD[AR]EX{,B,H,D} instruction and ending with a ST[LR]EX{,B,H,D} instruction.
+   If such a sequence is found, attempt to step through it.  The end of the
+   sequence address is added to the next_pcs list.  */
 
 static std::vector<CORE_ADDR>
 arm_deal_with_atomic_sequence_raw (struct arm_get_next_pcs *self)
@@ -196,13 +283,16 @@ arm_deal_with_atomic_sequence_raw (struc
   int last_breakpoint = 0; /* Defaults to 0 (no breakpoints placed).  */
   const int atomic_sequence_length = 16; /* Instruction sequence length.  */
 
-  /* Assume all atomic sequences start with a ldrex{,b,h,d} instruction.
-     Note that we do not currently support conditionally executed atomic
-     instructions.  */
   insn = self->ops->read_mem_uint (loc, 4, byte_order_for_code);
-
   loc += 4;
-  if ((insn & 0xff9000f0) != 0xe1900090)
+
+  /* Currently we do not support conditionally executed atomic instructions.  */
+  if (!insn_condition_always_true (insn))
+    return {};
+
+  /* Assume all atomic sequences start with an ld[ar]ex{,b,h,d} instruction.  */
+  if (!((insn & 0x0f9000f0) == 0x01900090
+	|| ldaex_arm_p (insn)))
     return {};
 
   /* Assume that no atomic sequence is longer than "atomic_sequence_length"
@@ -214,26 +304,32 @@ arm_deal_with_atomic_sequence_raw (struc
       loc += 4;
 
       /* Assume that there is at most one conditional branch in the atomic
-         sequence.  If a conditional branch is found, put a breakpoint in
-         its destination address.  */
+	 sequence.  If a conditional branch is found, put a breakpoint in
+	 its destination address.  */
       if (bits (insn, 24, 27) == 0xa)
 	{
-          if (last_breakpoint > 0)
-            return {}; /* More than one conditional branch found, fallback
+	  if (last_breakpoint > 0)
+	    return {}; /* More than one conditional branch found, fallback
 			  to the standard single-step code.  */
 
 	  breaks[1] = BranchDest (loc - 4, insn);
 	  last_breakpoint++;
-        }
+	}
 
       /* We do not support atomic sequences that use any *other* instructions
-         but conditional branches to change the PC.  Fall back to standard
+	 but conditional branches to change the PC.  Fall back to standard
 	 code to avoid losing control of execution.  */
       else if (arm_instruction_changes_pc (insn))
 	return {};
 
-      /* If we find a strex{,b,h,d}, we're done.  */
-      if ((insn & 0xff9000f0) == 0xe1800090)
+      /* Currently we do not support conditionally executed atomic
+	 instructions.  */
+      if (!insn_condition_always_true (insn))
+	return {};
+
+      /* If we find a st[lr]ex{,b,h,d}, we're done.  */
+      if ((insn & 0x0f9000f0) == 0x01800090
+	  || stlex_arm_p (insn))
 	break;
     }
 
@@ -267,12 +363,12 @@ thumb_get_next_pcs_raw (struct arm_get_n
 {
   int byte_order = self->byte_order;
   int byte_order_for_code = self->byte_order_for_code;
+  reg_buffer_common *regcache = self->regcache;
   CORE_ADDR pc = regcache_read_pc (self->regcache);
   unsigned long pc_val = ((unsigned long) pc) + 4;	/* PC after prefetch */
   unsigned short inst1;
   CORE_ADDR nextpc = pc + 2;		/* Default is next instruction.  */
   ULONGEST status, itstate;
-  struct regcache *regcache = self->regcache;
   std::vector<CORE_ADDR> next_pcs;
 
   nextpc = MAKE_THUMB_ADDR (nextpc);
@@ -407,9 +503,9 @@ thumb_get_next_pcs_raw (struct arm_get_n
       CORE_ADDR sp;
 
       /* 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;
+	 all of the other registers.  */
+      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 +592,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))
 	    {
@@ -652,8 +748,8 @@ arm_get_next_pcs_raw (struct arm_get_nex
   unsigned long this_instr = 0;
   unsigned long status;
   CORE_ADDR nextpc;
-  struct regcache *regcache = self->regcache;
-  CORE_ADDR pc = regcache_read_pc (self->regcache);
+  reg_buffer_common *regcache = self->regcache;
+  CORE_ADDR pc = regcache_read_pc (regcache);
   std::vector<CORE_ADDR> next_pcs;
 
   pc_val = (unsigned long) pc;
@@ -678,7 +774,7 @@ arm_get_next_pcs_raw (struct arm_get_nex
       case 0xd:
       case 0xe:
 	/* Coprocessor register transfer.  */
-        if (bits (this_instr, 12, 15) == 15)
+	if (bits (this_instr, 12, 15) == 15)
 	  error (_("Invalid update to pc in instruction"));
 	break;
       }
@@ -864,7 +960,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.20200303/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.20200303/gdb/arch/arm-get-next-pcs.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/arm-get-next-pcs.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,13 +17,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/>.  */
 
-#ifndef ARCH_ARM_GET_NEXT_PCS_H
-#define ARCH_ARM_GET_NEXT_PCS_H
+#ifndef GDB_ARCH_ARM_GET_NEXT_PCS_H
+#define GDB_ARCH_ARM_GET_NEXT_PCS_H
 
 #include <vector>
 
 /* Forward declaration.  */
 struct arm_get_next_pcs;
+struct reg_buffer_common;
 
 /* get_next_pcs operations.  */
 struct arm_get_next_pcs_ops
@@ -50,7 +51,7 @@ struct arm_get_next_pcs
      not.  */
   int has_thumb2_breakpoint;
   /* Registry cache.  */
-  struct regcache *regcache;
+  reg_buffer_common *regcache;
 };
 
 /* Initialize arm_get_next_pcs.  */
@@ -59,9 +60,9 @@ void arm_get_next_pcs_ctor (struct arm_g
 			    int byte_order,
 			    int byte_order_for_code,
 			    int has_thumb2_breakpoint,
-			    struct regcache *regcache);
+			    reg_buffer_common *regcache);
 
 /* Find the next possible PCs after the current instruction executes.  */
 std::vector<CORE_ADDR> arm_get_next_pcs (struct arm_get_next_pcs *self);
 
-#endif /* ARCH_ARM_GET_NEXT_PCS_H */
+#endif /* GDB_ARCH_ARM_GET_NEXT_PCS_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.20200303/gdb/arch/arm.h ./gdb/arch/arm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/arm.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/arm.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,11 +16,24 @@
    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_ARM_H
-#define ARCH_ARM_H
+#ifndef GDB_ARCH_ARM_H
+#define GDB_ARCH_ARM_H
 
 #include "gdbsupport/tdesc.h"
 
+/* Prologue helper macros for ARMv8.1-m PACBTI.  */
+#define IS_PAC(instruction)	(instruction == 0xf3af801d)
+#define IS_PACBTI(instruction)	(instruction == 0xf3af800d)
+#define IS_BTI(instruction)	(instruction == 0xf3af800f)
+#define IS_PACG(instruction)	((instruction & 0xfff0f0f0) == 0xfb60f000)
+#define IS_AUT(instruction)	(instruction == 0xf3af802d)
+#define IS_AUTG(instruction)	((instruction & 0xfff00ff0) == 0xfb500f00)
+
+/* DWARF register numbers according to the AADWARF32 document.  */
+enum arm_dwarf_regnum {
+  ARM_DWARF_RA_AUTH_CODE = 143
+};
+
 /* Register numbers of various important registers.  */
 
 enum gdb_regnum {
@@ -31,6 +44,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 */
@@ -49,17 +63,25 @@ enum gdb_regnum {
   ARM_D31_REGNUM = ARM_D0_REGNUM + 31,
   ARM_FPSCR_REGNUM,
 
-  ARM_NUM_REGS,
-
   /* Other useful registers.  */
   ARM_FP_REGNUM = 11,		/* Frame register in ARM code, if used.  */
   THUMB_FP_REGNUM = 7,		/* Frame register in Thumb code, if used.  */
-  ARM_NUM_ARG_REGS = 4, 
   ARM_LAST_ARG_REGNUM = ARM_A4_REGNUM,
-  ARM_NUM_FP_ARG_REGS = 4,
   ARM_LAST_FP_ARG_REGNUM = ARM_F3_REGNUM
 };
 
+/* Register count constants.  */
+enum arm_register_counts {
+  /* Number of Q registers for MVE.  */
+  ARM_MVE_NUM_Q_REGS = 8,
+  /* Number of argument registers.  */
+  ARM_NUM_ARG_REGS = 4,
+  /* Number of floating point argument registers.  */
+  ARM_NUM_FP_ARG_REGS = 4,
+  /* Number of registers (old, defined as ARM_FPSCR_REGNUM + 1.  */
+  ARM_NUM_REGS = ARM_FPSCR_REGNUM + 1
+};
+
 /* Enum describing the different kinds of breakpoints.  */
 enum arm_breakpoint_kinds
 {
@@ -82,9 +104,25 @@ enum arm_m_profile_type {
    ARM_M_TYPE_M_PROFILE,
    ARM_M_TYPE_VFP_D16,
    ARM_M_TYPE_WITH_FPA,
+   ARM_M_TYPE_MVE,
+   ARM_M_TYPE_SYSTEM,
    ARM_M_TYPE_INVALID
 };
 
+/* System control registers accessible through an addresses.  */
+enum system_register_address : CORE_ADDR
+{
+  /* M-profile Floating-Point Context Control Register address, defined in
+     ARMv7-M (Section B3.2.2) and ARMv8-M (Section D1.2.99) reference
+     manuals.  */
+  FPCCR = 0xe000ef34,
+
+  /* M-profile Floating-Point Context Address Register address, defined in
+     ARMv7-M (Section B3.2.2) and ARMv8-M (Section D1.2.98) reference
+     manuals.  */
+  FPCAR = 0xe000ef38
+};
+
 /* Instruction condition field values.  */
 #define INST_EQ		0x0
 #define INST_NE		0x1
@@ -150,18 +188,32 @@ enum arm_m_profile_type {
   ((CORE_ADDR) (((unsigned long) (addr)) + 8 + (sbits (instr, 0, 23) << 2)))
 
 /* Forward declaration.  */
-struct regcache;
+struct reg_buffer_common;
 
 /* Return the size in bytes of the complete Thumb instruction whose
    first halfword is INST1.  */
 int thumb_insn_size (unsigned short inst1);
 
+/* Returns true if COND always evaluates to true.  */
+
+static inline bool
+condition_always_true (unsigned long cond)
+{
+  return cond == INST_AL || cond == INST_NV;
+}
+
+/* Returns true if cond of INSN always evaluates to true.  */
+
+static inline bool
+insn_condition_always_true (uint32_t insn)
+{
+  unsigned long cond = bits (insn, 28, 31);
+  return condition_always_true (cond);
+}
+
 /* 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);
 
@@ -178,7 +230,7 @@ int thumb_advance_itstate (unsigned int
 
 /* Decode shifted register value.  */
 
-unsigned long shifted_reg_val (struct regcache *regcache,
+unsigned long shifted_reg_val (reg_buffer_common *regcache,
 			       unsigned long inst,
 			       int carry,
 			       unsigned long pc_val,
@@ -186,10 +238,10 @@ unsigned long shifted_reg_val (struct re
 
 /* Create an Arm target description with the given FP hardware type.  */
 
-target_desc *arm_create_target_description (arm_fp_type fp_type);
+target_desc *arm_create_target_description (arm_fp_type fp_type, bool tls);
 
 /* Create an Arm M-profile target description with the given hardware type.  */
 
 target_desc *arm_create_mprofile_target_description (arm_m_profile_type m_type);
 
-#endif /* ARCH_ARM_H */
+#endif /* GDB_ARCH_ARM_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.20200303/gdb/arch/arm-linux.c ./gdb/arch/arm-linux.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/arm-linux.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/arm-linux.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "gdbsupport/common-defs.h"
 #include "gdbsupport/common-regcache.h"
 #include "arch/arm.h"
 #include "arm-linux.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.20200303/gdb/arch/arm-linux.h ./gdb/arch/arm-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/arm-linux.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/arm-linux.h	2026-03-05 02:07:22.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-2025 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/>.  */
 
-#ifndef ARCH_ARM_LINUX_H
-#define ARCH_ARM_LINUX_H
+#ifndef GDB_ARCH_ARM_LINUX_H
+#define GDB_ARCH_ARM_LINUX_H
 
 /* The index to access CSPR in user_regs defined in GLIBC.  */
 #define ARM_CPSR_GREGNUM 16
@@ -79,4 +79,4 @@ struct arm_get_next_pcs;
 CORE_ADDR arm_linux_get_next_pcs_fixup (struct arm_get_next_pcs *self,
 					CORE_ADDR pc);
 
-#endif /* ARCH_ARM_LINUX_H */
+#endif /* GDB_ARCH_ARM_LINUX_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.20200303/gdb/arch/csky.c ./gdb/arch/csky.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/csky.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/csky.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,37 @@
+/* Copyright (C) 2022-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "csky.h"
+#include <stdlib.h>
+
+#include "../features/cskyv2-linux.c"
+
+target_desc_up
+csky_create_target_description (void)
+{
+  /* Now we should create a new target description.  */
+  target_desc_up tdesc = allocate_target_description ();
+
+#ifndef IN_PROCESS_AGENT
+  std::string arch_name = "csky";
+  set_tdesc_architecture (tdesc.get (), arch_name.c_str ());
+#endif
+
+  create_feature_cskyv2_linux (tdesc.get (), 0);
+
+  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.20200303/gdb/arch/csky.h ./gdb/arch/csky.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/csky.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/csky.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,29 @@
+/* Common target-dependent functionality for CSKY
+
+   Copyright (C) 2022-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_CSKY_H
+#define GDB_ARCH_CSKY_H
+
+#include "gdbsupport/tdesc.h"
+
+/* Used for gdbserver.  */
+
+target_desc_up csky_create_target_description (void);
+
+#endif /* GDB_ARCH_CSKY_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.20200303/gdb/arch/i386.c ./gdb/arch/i386.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/i386.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/i386.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,10 +15,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/>.  */
 
-#include "gdbsupport/common-defs.h"
 #include "i386.h"
 #include "gdbsupport/tdesc.h"
 #include "gdbsupport/x86-xstate.h"
+#include "gdbsupport/osabi.h"
 #include <stdlib.h>
 
 #include "../features/i386/32bit-core.c"
@@ -26,48 +26,49 @@
 #include "../features/i386/32bit-sse.c"
 #include "../features/i386/32bit-avx.c"
 #include "../features/i386/32bit-avx512.c"
-#include "../features/i386/32bit-mpx.c"
-#include "../features/i386/32bit-pkeys.c"
 #include "../features/i386/32bit-segments.c"
+#include "../features/i386/pkeys.c"
+#include "../features/i386/32bit-ssp.c"
 
-/* Create i386 target descriptions according to XCR0.  */
+/* See arch/i386.h.  */
 
 target_desc *
-i386_create_target_description (uint64_t xcr0, bool is_linux, bool segments)
+i386_create_target_description (uint64_t xstate_bv, bool is_linux,
+				bool segments)
 {
-  target_desc *tdesc = allocate_target_description ();
+  target_desc_up tdesc = allocate_target_description ();
 
 #ifndef IN_PROCESS_AGENT
-  set_tdesc_architecture (tdesc, "i386");
+  set_tdesc_architecture (tdesc.get (), "i386");
   if (is_linux)
-    set_tdesc_osabi (tdesc, "GNU/Linux");
+    set_tdesc_osabi (tdesc.get (), GDB_OSABI_LINUX);
 #endif
 
   long regnum = 0;
 
-  if (xcr0 & X86_XSTATE_X87)
-    regnum = create_feature_i386_32bit_core (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_X87)
+    regnum = create_feature_i386_32bit_core (tdesc.get (), regnum);
 
-  if (xcr0 & X86_XSTATE_SSE)
-    regnum = create_feature_i386_32bit_sse (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_SSE)
+    regnum = create_feature_i386_32bit_sse (tdesc.get (), regnum);
 
   if (is_linux)
-    regnum = create_feature_i386_32bit_linux (tdesc, regnum);
+    regnum = create_feature_i386_32bit_linux (tdesc.get (), regnum);
 
   if (segments)
-    regnum = create_feature_i386_32bit_segments (tdesc, regnum);
+    regnum = create_feature_i386_32bit_segments (tdesc.get (), regnum);
 
-  if (xcr0 & X86_XSTATE_AVX)
-    regnum = create_feature_i386_32bit_avx (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_AVX)
+    regnum = create_feature_i386_32bit_avx (tdesc.get (), regnum);
 
-  if (xcr0 & X86_XSTATE_MPX)
-    regnum = create_feature_i386_32bit_mpx (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_AVX512)
+    regnum = create_feature_i386_32bit_avx512 (tdesc.get (), regnum);
 
-  if (xcr0 & X86_XSTATE_AVX512)
-    regnum = create_feature_i386_32bit_avx512 (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_PKRU)
+    regnum = create_feature_i386_pkeys (tdesc.get (), regnum);
 
-  if (xcr0 & X86_XSTATE_PKRU)
-    regnum = create_feature_i386_32bit_pkeys (tdesc, regnum);
+  if (xstate_bv & X86_XSTATE_CET_U)
+    regnum = create_feature_i386_32bit_ssp (tdesc.get (), regnum);
 
-  return tdesc;
+  return tdesc.release ();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/i386.h ./gdb/arch/i386.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/i386.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/i386.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,13 +15,18 @@
    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_I386_H
-#define ARCH_I386_H
+#ifndef GDB_ARCH_I386_H
+#define GDB_ARCH_I386_H
 
 #include "gdbsupport/tdesc.h"
 #include <stdint.h>
 
-target_desc *i386_create_target_description (uint64_t xcr0, bool is_linux,
+/* Create i386 target descriptions according to XSTATE_BV.  If IS_LINUX is
+   true, create target descriptions for Linux.  If SEGMENTS is true, then
+   include the "org.gnu.gdb.i386.segments" feature registers.  */
+
+target_desc *i386_create_target_description (uint64_t xstate_bv,
+					     bool is_linux,
 					     bool segments);
 
-#endif /* ARCH_I386_H */
+#endif /* GDB_ARCH_I386_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.20200303/gdb/arch/i386-linux-tdesc.c ./gdb/arch/i386-linux-tdesc.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/i386-linux-tdesc.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/i386-linux-tdesc.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,59 @@
+/* Target description related code for GNU/Linux i386.
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arch/x86-linux-tdesc.h"
+#include "arch/i386-linux-tdesc.h"
+#include "arch/i386.h"
+#include "arch/x86-linux-tdesc-features.h"
+
+/* See arch/i386-linux-tdesc.h.  */
+
+const target_desc *
+i386_linux_read_description (uint64_t xstate_bv)
+{
+  /* Cache of previously seen i386 target descriptions, indexed by the
+     xstate_bv value that created the target description.  This
+     needs to be static within this function to ensure it is initialised
+     before first use.  */
+  static std::unordered_map<uint64_t, const target_desc_up> i386_tdesc_cache;
+
+  /* Only some bits are checked when creating a tdesc, but the
+     XSTATE_BV value contains other feature bits that are not relevant
+     for tdesc creation.  When indexing into the I386_TDESC_CACHE
+     we need to use a consistent XSTATE_BV value otherwise we might fail
+     to find an existing tdesc which has the same set of relevant bits
+     set.  */
+  xstate_bv &= x86_linux_i386_xstate_bv_feature_mask ();
+
+  const auto it = i386_tdesc_cache.find (xstate_bv);
+  if (it != i386_tdesc_cache.end ())
+    return it->second.get ();
+
+  /* Create the previously unseen target description.  */
+  target_desc_up tdesc
+    (i386_create_target_description (xstate_bv, true, false));
+  x86_linux_post_init_tdesc (tdesc.get (), false);
+
+  /* Add to the cache, and return a pointer borrowed from the
+     target_desc_up.  This is safe as the cache (and the pointers contained
+     within it) are not deleted until GDB exits.  */
+  target_desc *ptr = tdesc.get ();
+  i386_tdesc_cache.emplace (xstate_bv, std::move (tdesc));
+  return 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.20200303/gdb/arch/i386-linux-tdesc.h ./gdb/arch/i386-linux-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/i386-linux-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/i386-linux-tdesc.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,30 @@
+/* Target description related code for GNU/Linux i386.
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_I386_LINUX_TDESC_H
+#define GDB_ARCH_I386_LINUX_TDESC_H
+
+struct target_desc;
+
+/* Return the i386 target description corresponding to XSTATE_BV.  */
+
+extern const struct target_desc *i386_linux_read_description
+  (uint64_t xstate_bv);
+
+#endif /* GDB_ARCH_I386_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.20200303/gdb/arch/loongarch.c ./gdb/arch/loongarch.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/loongarch.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/loongarch.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,115 @@
+/* Copyright (C) 2022-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "loongarch.h"
+#include <unordered_map>
+
+/* Target description features.  */
+
+#include "../features/loongarch/base32.c"
+#include "../features/loongarch/base64.c"
+#include "../features/loongarch/fpu.c"
+#include "../features/loongarch/lsx.c"
+#include "../features/loongarch/lasx.c"
+#include "../features/loongarch/lbt.c"
+
+#ifndef GDBSERVER
+#define STATIC_IN_GDB static
+#else
+#define STATIC_IN_GDB
+#endif
+
+STATIC_IN_GDB target_desc_up
+loongarch_create_target_description (const struct loongarch_gdbarch_features features)
+{
+  /* Now we should create a new target description.  */
+  target_desc_up tdesc = allocate_target_description ();
+
+  std::string arch_name = "loongarch";
+
+  if (features.xlen == 4)
+    arch_name.append ("32");
+  else if (features.xlen == 8)
+    arch_name.append ("64");
+
+  if (features.fputype == SINGLE_FLOAT)
+    arch_name.append ("f");
+  else if (features.fputype == DOUBLE_FLOAT)
+    arch_name.append ("d");
+
+  set_tdesc_architecture (tdesc.get (), arch_name.c_str ());
+
+  long regnum = 0;
+
+  /* For now we only support creating 32-bit or 64-bit x-registers.  */
+  if (features.xlen == 4)
+    regnum = create_feature_loongarch_base32 (tdesc.get (), regnum);
+  else if (features.xlen == 8)
+    regnum = create_feature_loongarch_base64 (tdesc.get (), regnum);
+
+  /* For now we only support creating single float and double float.  */
+  regnum = create_feature_loongarch_fpu (tdesc.get (), regnum);
+
+  /* For now we only support creating lsx and lasx.  */
+  regnum = create_feature_loongarch_lsx (tdesc.get (), regnum);
+  regnum = create_feature_loongarch_lasx (tdesc.get (), regnum);
+
+  /* For now we only support creating scr registers, eflags and ftop.  */
+  regnum = create_feature_loongarch_lbt (tdesc.get (), regnum);
+
+  return tdesc;
+}
+
+#ifndef GDBSERVER
+
+/* Wrapper used by std::unordered_map to generate hash for feature set.  */
+struct loongarch_gdbarch_features_hasher
+{
+  std::size_t
+  operator() (const loongarch_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<loongarch_gdbarch_features,
+			  const target_desc_up,
+			  loongarch_gdbarch_features_hasher> loongarch_tdesc_cache;
+
+const target_desc *
+loongarch_lookup_target_description (const struct loongarch_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
+     loongarch_tdesc_cache will exist until GDB exits.  */
+  const auto it = loongarch_tdesc_cache.find (features);
+  if (it != loongarch_tdesc_cache.end ())
+    return it->second.get ();
+
+  target_desc_up tdesc (loongarch_create_target_description (features));
+
+  /* Add to the cache, and return a pointer borrowed from the
+     target_desc_up.  This is safe as the cache (and the pointers
+     contained within it) are not deleted until GDB exits.  */
+  target_desc *ptr = tdesc.get ();
+  loongarch_tdesc_cache.emplace (features, std::move (tdesc));
+  return ptr;
+}
+
+#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.20200303/gdb/arch/loongarch.h ./gdb/arch/loongarch.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/loongarch.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/loongarch.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,131 @@
+/* Common target-dependent functionality for LoongArch
+
+   Copyright (C) 2022-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_LOONGARCH_H
+#define GDB_ARCH_LOONGARCH_H
+
+#include "gdbsupport/tdesc.h"
+
+/* Register numbers of various important registers.  */
+enum loongarch_regnum
+{
+  LOONGARCH_RA_REGNUM = 1,		/* Return Address.  */
+  LOONGARCH_SP_REGNUM = 3,		/* Stack Pointer.  */
+  LOONGARCH_A0_REGNUM = 4,		/* First Argument/Return Value.  */
+  LOONGARCH_A7_REGNUM = 11,		/* Seventh Argument/Syscall Number.  */
+  LOONGARCH_FP_REGNUM = 22,		/* Frame Pointer.  */
+  LOONGARCH_ORIG_A0_REGNUM = 32,	/* Syscall's original arg0.  */
+  LOONGARCH_PC_REGNUM = 33,		/* Program Counter.  */
+  LOONGARCH_BADV_REGNUM = 34,		/* Bad Vaddr for Addressing Exception.  */
+  LOONGARCH_USED_NUM_GREGSET = 35,	/* 32 GPR, ORIG_A0, PC, BADV.  */
+  LOONGARCH_LINUX_NUM_GREGSET = 45,	/* 32 GPR, ORIG_A0, PC, BADV, RESERVED 10.  */
+  LOONGARCH_ARG_REGNUM = 8,            /* r4-r11: general-purpose argument registers.
+					  f0-f7: floating-point argument registers.  */
+  LOONGARCH_FIRST_FP_REGNUM = LOONGARCH_USED_NUM_GREGSET,
+  LOONGARCH_LINUX_NUM_FPREGSET = 32,
+  LOONGARCH_FIRST_FCC_REGNUM = LOONGARCH_FIRST_FP_REGNUM + LOONGARCH_LINUX_NUM_FPREGSET,
+  LOONGARCH_LINUX_NUM_FCC = 8,
+  LOONGARCH_FCSR_REGNUM = LOONGARCH_FIRST_FCC_REGNUM + LOONGARCH_LINUX_NUM_FCC,
+  LOONGARCH_FIRST_LSX_REGNUM = LOONGARCH_FCSR_REGNUM + 1,
+  LOONGARCH_LINUX_NUM_LSXREGSET = 32,
+  LOONGARCH_FIRST_LASX_REGNUM = LOONGARCH_FIRST_LSX_REGNUM + LOONGARCH_LINUX_NUM_LSXREGSET,
+  LOONGARCH_LINUX_NUM_LASXREGSET = 32,
+
+  LOONGARCH_FIRST_SCR_REGNUM = LOONGARCH_FIRST_LASX_REGNUM + LOONGARCH_LINUX_NUM_LASXREGSET,
+  LOONGARCH_LINUX_NUM_SCR = 4,
+  LOONGARCH_LAST_SCR_REGNUM = LOONGARCH_FIRST_SCR_REGNUM + LOONGARCH_LINUX_NUM_SCR - 1,
+  LOONGARCH_EFLAGS_REGNUM = LOONGARCH_LAST_SCR_REGNUM + 1,
+  LOONGARCH_FTOP_REGNUM = LOONGARCH_EFLAGS_REGNUM + 1,
+};
+
+enum loongarch_fputype
+{
+  SINGLE_FLOAT = 1,
+  DOUBLE_FLOAT = 2,
+};
+
+ #define LOONGARCH_LBT_REGS_SIZE (8 * LOONGARCH_LINUX_NUM_SCR + 4 + 4)
+
+/* The set of LoongArch architectural features that we track that impact how
+   we configure the actual gdbarch instance.  We hold one of these in the
+   gdbarch_tdep structure, and use it to distinguish between different
+   LoongArch gdbarch instances.
+
+   The information in here ideally comes from the target description,
+   however, if the target doesn't provide a target description then we will
+   create a default target description by first populating one of these
+   based on what we know about the binary being executed, and using that to
+   drive default target description creation.  */
+
+struct loongarch_gdbarch_features
+{
+  /* The size of the x-registers in bytes.  This is either 4 (loongarch32)
+     or 8 (loongarch64).  No other value is valid.  Initialise to the invalid
+     0 value so we can spot if one of these is used uninitialised.  */
+  int xlen = 0;
+
+  /* The type of floating-point.  This is either 1 (single float) or 2
+     (double float).  No other value is valid.  Initialise to the invalid
+     0 value so we can spot if one of these is used uninitialised.  */
+  int fputype = 0;
+
+  /* Equality operator.  */
+  bool operator== (const struct loongarch_gdbarch_features &rhs) const
+  {
+    return (xlen == rhs.xlen);
+  }
+
+  /* Inequality operator.  */
+  bool operator!= (const struct loongarch_gdbarch_features &rhs) const
+  {
+    return !((*this) == rhs);
+  }
+
+  /* Used by std::unordered_map to hash feature sets.  */
+  std::size_t hash () const noexcept
+  {
+    std::size_t val = (xlen & 0x1f) << 5;
+    return val;
+  }
+};
+
+#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_up loongarch_create_target_description
+	(const struct loongarch_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 *loongarch_lookup_target_description
+	(const struct loongarch_gdbarch_features features);
+
+#endif /* GDBSERVER */
+
+#endif /* GDB_ARCH_LOONGARCH_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.20200303/gdb/arch/loongarch-insn.h ./gdb/arch/loongarch-insn.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/loongarch-insn.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/loongarch-insn.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,2096 @@
+/* Target-dependent code for LoongArch
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 LoongArch opcode and mask definitions in this file are obtained from
+   https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=opcodes/loongarch-opc.c  */
+
+#ifndef GDB_ARCH_LOONGARCH_INSN_H
+#define GDB_ARCH_LOONGARCH_INSN_H
+
+/* loongarch fix insn opcode  */
+#define OP_CLO_W             0x00001000
+#define OP_CLZ_W             0x00001400
+#define OP_CTO_W             0x00001800
+#define OP_CTZ_W             0x00001c00
+#define OP_CLO_D             0x00002000
+#define OP_CLZ_D             0x00002400
+#define OP_CTO_D             0x00002800
+#define OP_CTZ_D             0x00002c00
+#define OP_REVB_2H           0x00003000
+#define OP_REVB_4H           0x00003400
+#define OP_REVB_2W           0x00003800
+#define OP_REVB_D            0x00003c00
+#define OP_REVH_2W           0x00004000
+#define OP_REVH_D            0x00004400
+#define OP_BITREV_4B         0x00004800
+#define OP_BITREV_8B         0x00004c00
+#define OP_BITREV_W          0x00005000
+#define OP_BITREV_D          0x00005400
+#define OP_EXT_W_H           0x00005800
+#define OP_EXT_W_B           0x00005c00
+#define OP_RDTIMEL_W         0x00006000
+#define OP_RDTIMEH_W         0x00006400
+#define OP_RDTIME_D          0x00006800
+#define OP_CPUCFG            0x00006c00
+#define OP_ASRTLE_D          0x00010000
+#define OP_ASRTGT_D          0x00018000
+#define OP_ALSL_W            0x00040000
+#define OP_ALSL_WU           0x00060000
+#define OP_BYTEPICK_W        0x00080000
+#define OP_BYTEPICK_D        0x000c0000
+#define OP_ADD_W             0x00100000
+#define OP_ADD_D             0x00108000
+#define OP_SUB_W             0x00110000
+#define OP_SUB_D             0x00118000
+#define OP_SLT               0x00120000
+#define OP_SLTU              0x00128000
+#define OP_MASKEQZ           0x00130000
+#define OP_MASKNEZ           0x00138000
+#define OP_NOR               0x00140000
+#define OP_AND               0x00148000
+#define OP_OR                0x00150000
+#define OP_XOR               0x00158000
+#define OP_ORN               0x00160000
+#define OP_ANDN              0x00168000
+#define OP_SLL_W             0x00170000
+#define OP_SRL_W             0x00178000
+#define OP_SRA_W             0x00180000
+#define OP_SLL_D             0x00188000
+#define OP_SRL_D             0x00190000
+#define OP_SRA_D             0x00198000
+#define OP_ROTR_W            0x001b0000
+#define OP_ROTR_D            0x001b8000
+#define OP_MUL_W             0x001c0000
+#define OP_MULH_W            0x001c8000
+#define OP_MULH_WU           0x001d0000
+#define OP_MUL_D             0x001d8000
+#define OP_MULH_D            0x001e0000
+#define OP_MULH_DU           0x001e8000
+#define OP_MULW_D_W          0x001f0000
+#define OP_MULW_D_WU         0x001f8000
+#define OP_DIV_W             0x00200000
+#define OP_MOD_W             0x00208000
+#define OP_DIV_WU            0x00210000
+#define OP_MOD_WU            0x00218000
+#define OP_DIV_D             0x00220000
+#define OP_MOD_D             0x00228000
+#define OP_DIV_DU            0x00230000
+#define OP_MOD_DU            0x00238000
+#define OP_CRC_W_B_W         0x00240000
+#define OP_CRC_W_H_W         0x00248000
+#define OP_CRC_W_W_W         0x00250000
+#define OP_CRC_W_D_W         0x00258000
+#define OP_CRCC_W_B_W        0x00260000
+#define OP_CRCC_W_H_W        0x00268000
+#define OP_CRCC_W_W_W        0x00270000
+#define OP_CRCC_W_D_W        0x00278000
+#define OP_BREAK             0x002a0000
+#define OP_DBCL              0x002a8000
+#define OP_SYSCALL           0x002b0000
+#define OP_ALSL_D            0x002c0000
+#define OP_SLLI_W            0x00408000
+#define OP_SLLI_D            0x00410000
+#define OP_SRLI_W            0x00448000
+#define OP_SRLI_D            0x00450000
+#define OP_SRAI_W            0x00488000
+#define OP_SRAI_D            0x00490000
+#define OP_ROTRI_W           0x004c8000
+#define OP_ROTRI_D           0x004d0000
+#define OP_BSTRINS_W         0x00600000
+#define OP_BSTRPICK_W        0x00608000
+#define OP_BSTRINS_D         0x00800000
+#define OP_BSTRPICK_D        0x00c00000
+
+/* loongarch single float insn opcode  */
+#define OP_FADD_S            0x01008000
+#define OP_SUB_S             0x01028000
+#define OP_MUL_S             0x01048000
+#define OP_FDIV_S            0x01068000
+#define OP_FMAX_S            0x01088000
+#define OP_FMIN_S            0x010a8000
+#define OP_FMAXA_S           0x010c8000
+#define OP_FMINA_S           0x010e8000
+#define OP_FSCALEB_S         0x01108000
+#define OP_FCOPYSIGN_S       0x01128000
+#define OP_FABS_S            0x01140400
+#define OP_FNEG_S            0x01141400
+#define OP_FLOGB_S           0x01142400
+#define OP_FCLASS_S          0x01143400
+#define OP_FSQRT_S           0x01144400
+#define OP_FRECIP_S          0x01145400
+#define OP_FRSQRT_S          0x01146400
+#define OP_FRECIPE_S         0x01147400
+#define OP_FRSQRTE_S         0x01148400
+#define OP_FMOV_S            0x01149400
+#define OP_MOVGR2FR_W        0x0114a400
+#define OP_MOVGR2FRH_W       0x0114ac00
+#define OP_MOVFR2GR_S        0x0114b400
+#define OP_MOVFRH2GR_S       0x0114bc00
+#define OP_MOVGR2FCSR        0x0114c000
+#define OP_MOVFCSR2GR        0x0114c800
+#define OP_MOVFR2CF          0x0114d000
+#define OP_MOVCF2FR          0x0114d400
+#define OP_MOVGR2CF          0x0114d800
+#define OP_MOVCF2GR          0x0114dc00
+#define OP_FTINTRM_W_S       0x011a0400
+#define OP_FTINTRM_L_S       0x011a2400
+#define OP_FTINTRP_W_S       0x011a4400
+#define OP_FTINTRP_L_S       0x011a6400
+#define OP_FTINTRZ_W_S       0x011a8400
+#define OP_FTINTRZ_L_S       0x011aa400
+#define OP_FTINTRNE_W_S      0x011ac400
+#define OP_FTINTRNE_L_S      0x011ae400
+#define OP_FTINT_W_S         0x011b0400
+#define OP_FTINT_L_S         0x011b2400
+#define OP_FFINT_S_W         0x011d1000
+#define OP_FFINT_S_L         0x011d1800
+#define OP_FRINT_S           0x011e4400
+
+/* loongarch double float insn opcode  */
+#define OP_FADD_D            0x01010000
+#define OP_FSUB_D            0x01030000
+#define OP_FMUL_D            0x01050000
+#define OP_FDIV_D            0x01070000
+#define OP_FMAX_D            0x01090000
+#define OP_FMIN_D            0x010b0000
+#define OP_FMAXA_D           0x010d0000
+#define OP_FMINA_D           0x010f0000
+#define OP_FSCALEB_D         0x01110000
+#define OP_FCOPYSIGN_D       0x01130000
+#define OP_FABS_D            0x01140800
+#define OP_FNEG_D            0x01141800
+#define OP_FLOGB_D           0x01142800
+#define OP_FCLASS_D          0x01143800
+#define OP_FSQRT_D           0x01144800
+#define OP_FRECIP_D          0x01145800
+#define OP_FRSQRT_D          0x01146800
+#define OP_FRECIPE_D         0x01147800
+#define OP_FRSQRTE_D         0x01148800
+#define OP_FMOV_D            0x01149800
+#define OP_MOVGR2FR_D        0x0114a800
+#define OP_MOVFR2GR_D        0x0114b800
+#define OP_FCVT_S_D          0x01191800
+#define OP_FCVT_D_S          0x01192400
+#define OP_FTINTRM_W_D       0x011a0800
+#define OP_FTINTRM_L_D       0x011a2800
+#define OP_FTINTRP_W_D       0x011a4800
+#define OP_FTINTRP_L_D       0x011a6800
+#define OP_FTINTRZ_W_D       0x011a8800
+#define OP_FTINTRZ_L_D       0x011aa800
+#define OP_FTINTRNE_W_D      0x011ac800
+#define OP_FTINTRNE_L_D      0x011ae800
+#define OP_FTINT_W_D         0x011b0800
+#define OP_FTINT_L_D         0x011b2800
+#define OP_FFINT_D_W         0x011d2000
+#define OP_FFINT_D_L         0x011d2800
+#define OP_FRINT_D           0x011e4800
+
+/* loongarch imm insn opcode  */
+#define OP_SLTI              0x02000000
+#define OP_SLTUI             0x02400000
+#define OP_ADDI_W            0x02800000
+#define OP_ADDI_D            0x02c00000
+#define OP_LU52I_D           0x03000000
+#define OP_ANDI              0x03400000
+#define OP_ORI               0x03800000
+#define OP_XORI              0x03c00000
+#define OP_ADDU16I_D         0x10000000
+#define OP_LU12I_W           0x14000000
+#define OP_LU32I_D           0x16000000
+#define OP_PCADDI            0x18000000
+#define OP_PCALAU12I         0x1a000000
+#define OP_PCADDU12I         0x1c000000
+#define OP_PCADDU18I         0x1e000000
+
+/* loongarch privilege insn opcode  */
+#define OP_CSRRD             0x04000000
+#define OP_CSRWR             0x04000020
+#define OP_CSRXCHG           0x04000000
+#define OP_CACOP             0x06000000
+#define OP_LDDIR             0x06400000
+#define OP_LDPTE             0x06440000
+#define OP_IOCSRRD_B         0x06480000
+#define OP_IOCSRRD_H         0x06480400
+#define OP_IOCSRRD_W         0x06480800
+#define OP_IOCSRRD_D         0x06480c00
+#define OP_IOCSRWR_B         0x06481000
+#define OP_IOCSRWR_H         0x06481400
+#define OP_IOCSRWR_W         0x06481800
+#define OP_IOCSRWR_D         0x06481c00
+#define OP_TLBCLR            0x06482000
+#define OP_TLBFLUSH          0x06482400
+#define OP_TLBSRCH           0x06482800
+#define OP_TLBRD             0x06482c00
+#define OP_TLBWR             0x06483000
+#define OP_TLBFILL           0x06483400
+#define OP_ERTN              0x06483800
+#define OP_IDLE              0x06488000
+#define OP_INVTLB            0x06498000
+
+/* loongarch 4opt single float insn opcode  */
+#define OP_FMADD_S           0x08100000
+#define OP_FMSUB_S           0x08500000
+#define OP_FNMADD_S          0x08900000
+#define OP_FNMSUB_S          0x08d00000
+#define OP_FCMP_CAF_S        0x0c100000
+#define OP_FCMP_SAF_S        0x0c108000
+#define OP_FCMP_CLT_S        0x0c110000
+#define OP_FCMP_SLT_S        0x0c118000
+#define OP_FCMP_SGT_S        0x0c118000
+#define OP_FCMP_CEQ_S        0x0c120000
+#define OP_FCMP_SEQ_S        0x0c128000
+#define OP_FCMP_CLE_S        0x0c130000
+#define OP_FCMP_SLE_S        0x0c138000
+#define OP_FCMP_SGE_S        0x0c138000
+#define OP_FCMP_CUN_S        0x0c140000
+#define OP_FCMP_SUN_S        0x0c148000
+#define OP_FCMP_CULT_S       0x0c150000
+#define OP_FCMP_CUGT_S       0x0c150000
+#define OP_FCMP_SULT_S       0x0c158000
+#define OP_FCMP_CUEQ_S       0x0c160000
+#define OP_FCMP_SUEQ_S       0x0c168000
+#define OP_FCMP_CULE_S       0x0c170000
+#define OP_FCMP_CUGE_S       0x0c170000
+#define OP_FCMP_SULE_S       0x0c178000
+#define OP_FCMP_CNE_S        0x0c180000
+#define OP_FCMP_SNE_S        0x0c188000
+#define OP_FCMP_COR_S        0x0c1a0000
+#define OP_FCMP_SOR_S        0x0c1a8000
+#define OP_FCMP_CUNE_S       0x0c1c0000
+#define OP_FCMP_SUNE_S       0x0c1c8000
+#define OP_FSEL              0x0d000000
+
+/* loongarch 4opt double float insn opcode  */
+#define OP_FMADD_D           0x08200000
+#define OP_FMSUB_D           0x08600000
+#define OP_FNMADD_D          0x08a00000
+#define OP_FNMSUB_D          0x08e00000
+#define OP_FCMP_CAF_D        0x0c200000
+#define OP_FCMP_SAF_D        0x0c208000
+#define OP_FCMP_CLT_D        0x0c210000
+#define OP_FCMP_SLT_D        0x0c218000
+#define OP_FCMP_SGT_D        0x0c218000
+#define OP_FCMP_CEQ_D        0x0c220000
+#define OP_FCMP_SEQ_D        0x0c228000
+#define OP_FCMP_CLE_D        0x0c230000
+#define OP_FCMP_SLE_D        0x0c238000
+#define OP_FCMP_SGE_D        0x0c238000
+#define OP_FCMP_CUN_D        0x0c240000
+#define OP_FCMP_SUN_D        0x0c248000
+#define OP_FCMP_CULT_D       0x0c250000
+#define OP_FCMP_CUGT_D       0x0c250000
+#define OP_FCMP_SULT_D       0x0c258000
+#define OP_FCMP_CUEQ_D       0x0c260000
+#define OP_FCMP_SUEQ_D       0x0c268000
+#define OP_FCMP_CULE_D       0x0c270000
+#define OP_FCMP_CUGE_D       0x0c270000
+#define OP_FCMP_SULE_D       0x0c278000
+#define OP_FCMP_CNE_D        0x0c280000
+#define OP_FCMP_SNE_D        0x0c288000
+#define OP_FCMP_COR_D        0x0c2a0000
+#define OP_FCMP_SOR_D        0x0c2a8000
+#define OP_FCMP_CUNE_D       0x0c2c0000
+#define OP_FCMP_SUNE_D       0x0c2c8000
+
+/* loongarch load store insn opcode  */
+#define OP_LL_W              0x20000000
+#define OP_SC_W              0x21000000
+#define OP_LL_D              0x22000000
+#define OP_SC_D              0x23000000
+#define OP_LDPTR_W           0x24000000
+#define OP_STPTR_W           0x25000000
+#define OP_LDPTR_D           0x26000000
+#define OP_STPTR_D           0x27000000
+#define OP_LD_B              0x28000000
+#define OP_LD_H              0x28400000
+#define OP_LD_W              0x28800000
+#define OP_LD_D              0x28c00000
+#define OP_ST_B              0x29000000
+#define OP_ST_H              0x29400000
+#define OP_ST_W              0x29800000
+#define OP_ST_D              0x29c00000
+#define OP_LD_BU             0x2a000000
+#define OP_LD_HU             0x2a400000
+#define OP_LD_WU             0x2a800000
+#define OP_PRELD             0x2ac00000
+#define OP_LDX_B             0x38000000
+#define OP_LDX_H             0x38040000
+#define OP_LDX_W             0x38080000
+#define OP_LDX_D             0x380c0000
+#define OP_STX_B             0x38100000
+#define OP_STX_H             0x38140000
+#define OP_STX_W             0x38180000
+#define OP_STX_D             0x381c0000
+#define OP_LDX_BU            0x38200000
+#define OP_LDX_HU            0x38240000
+#define OP_LDX_WU            0x38280000
+#define OP_PRELDX            0x382c0000
+#define OP_SC_Q              0x38570000
+#define OP_LLACQ_W           0x38578000
+#define OP_SCREL_W           0x38578400
+#define OP_LLACQ_D           0x38578800
+#define OP_SCREL_D           0x38578c00
+#define OP_AMCAS_B           0x38580000
+#define OP_AMCAS_H           0x38588000
+#define OP_AMCAS_W           0x38590000
+#define OP_AMCAS_D           0x38598000
+#define OP_AMCAS_DB_B        0x385a0000
+#define OP_AMCAS_DB_H        0x385a8000
+#define OP_AMCAS_DB_W        0x385b0000
+#define OP_AMCAS_DB_D        0x385b8000
+#define OP_AMSWAP_B          0x385c0000
+#define OP_AMSWAP_H          0x385c8000
+#define OP_AMADD_B           0x385d0000
+#define OP_AMADD_H           0x385d8000
+#define OP_AMSWAP_DB_B       0x385e0000
+#define OP_AMSWAP_DB_H       0x385e8000
+#define OP_AMADD_DB_B        0x385f0000
+#define OP_AMADD_DB_H        0x385f8000
+#define OP_AMSWAP_W          0x38600000
+#define OP_AMSWAP_D          0x38608000
+#define OP_AMADD_W           0x38610000
+#define OP_AMADD_D           0x38618000
+#define OP_AMAND_W           0x38620000
+#define OP_AMAND_D           0x38628000
+#define OP_AMOR_W            0x38630000
+#define OP_AMOR_D            0x38638000
+#define OP_AMXOR_W           0x38640000
+#define OP_AMXOR_D           0x38648000
+#define OP_AMMAX_W           0x38650000
+#define OP_AMMAX_D           0x38658000
+#define OP_AMMIN_W           0x38660000
+#define OP_AMMIN_D           0x38668000
+#define OP_AMMAX_WU          0x38670000
+#define OP_AMMAX_DU          0x38678000
+#define OP_AMMIN_WU          0x38680000
+#define OP_AMMIN_DU          0x38688000
+#define OP_AMSWAP_DB_W       0x38690000
+#define OP_AMSWAP_DB_D       0x38698000
+#define OP_AMADD_DB_W        0x386a0000
+#define OP_AMADD_DB_D        0x386a8000
+#define OP_AMAND_DB_W        0x386b0000
+#define OP_AMAND_DB_D        0x386b8000
+#define OP_AMOR_DB_W         0x386c0000
+#define OP_AMOR_DB_D         0x386c8000
+#define OP_AMXOR_DB_W        0x386d0000
+#define OP_AMXOR_DB_D        0x386d8000
+#define OP_AMMAX_DB_W        0x386e0000
+#define OP_AMMAX_DB_D        0x386e8000
+#define OP_AMMIN_DB_W        0x386f0000
+#define OP_AMMIN_DB_D        0x386f8000
+#define OP_AMMAX_DB_WU       0x38700000
+#define OP_AMMAX_DB_DU       0x38708000
+#define OP_AMMIN_DB_WU       0x38710000
+#define OP_AMMIN_DB_DU       0x38718000
+#define OP_DBAR              0x38720000
+#define OP_IBAR              0x38728000
+#define OP_LDGT_B            0x38780000
+#define OP_LDGT_H            0x38788000
+#define OP_LDGT_W            0x38790000
+#define OP_LDGT_D            0x38798000
+#define OP_LDLE_B            0x387a0000
+#define OP_LDLE_H            0x387a8000
+#define OP_LDLE_W            0x387b0000
+#define OP_LDLE_D            0x387b8000
+#define OP_STGT_B            0x387c0000
+#define OP_STGT_H            0x387c8000
+#define OP_STGT_W            0x387d0000
+#define OP_STGT_D            0x387d8000
+#define OP_STLE_B            0x387e0000
+#define OP_STLE_H            0x387e8000
+#define OP_STLE_W            0x387f0000
+#define OP_STLE_D            0x387f8000
+#define OP_VLD               0x2c000000
+#define OP_VST               0x2c400000
+#define OP_XVLD              0x2c800000
+#define OP_XVST              0x2cc00000
+
+/* loongarch single float load store insn opcode  */
+#define OP_FLD_S             0x2b000000
+#define OP_FST_S             0x2b400000
+#define OP_FLDX_S            0x38300000
+#define OP_FSTX_S            0x38380000
+#define OP_FLDGT_S           0x38740000
+#define OP_FLDLE_S           0x38750000
+#define OP_FSTGT_S           0x38760000
+#define OP_FSTLE_S           0x38770000
+
+/* loongarch double float load store insn opcode  */
+#define OP_FLD_D             0x2b800000
+#define OP_FST_D             0x2bc00000
+#define OP_FLDX_D            0x38340000
+#define OP_FSTX_D            0x383c0000
+#define OP_FLDGT_D           0x38748000
+#define OP_FLDLE_D           0x38758000
+#define OP_FSTGT_D           0x38768000
+#define OP_FSTLE_D           0x38778000
+
+/* loongarch float jmp insn opcode  */
+#define OP_BCEQZ             0x48000000
+#define OP_BCNEZ             0x48000100
+
+/* loongarch jmp insn opcode  */
+#define OP_BEQZ              0x40000000
+#define OP_BNEZ              0x44000000
+#define OP_JIRL              0x4c000000
+#define OP_B                 0x50000000
+#define OP_BL                0x54000000
+#define OP_BEQ               0x58000000
+#define OP_BNE               0x5c000000
+#define OP_BLT               0x60000000
+#define OP_BGE               0x64000000
+#define OP_BLTU              0x68000000
+#define OP_BGEU              0x6c000000
+
+/* loongarch fix insn mask  */
+#define MASK_CLO_W           0xfffffc00
+#define MASK_CLZ_W           0xfffffc00
+#define MASK_CTO_W           0xfffffc00
+#define MASK_CTZ_W           0xfffffc00
+#define MASK_CLO_D           0xfffffc00
+#define MASK_CLZ_D           0xfffffc00
+#define MASK_CTO_D           0xfffffc00
+#define MASK_CTZ_D           0xfffffc00
+#define MASK_REVB_2H         0xfffffc00
+#define MASK_REVB_4H         0xfffffc00
+#define MASK_REVB_2W         0xfffffc00
+#define MASK_REVB_D          0xfffffc00
+#define MASK_REVH_2W         0xfffffc00
+#define MASK_REVH_D          0xfffffc00
+#define MASK_BITREV_4B       0xfffffc00
+#define MASK_BITREV_8B       0xfffffc00
+#define MASK_BITREV_W        0xfffffc00
+#define MASK_BITREV_D        0xfffffc00
+#define MASK_EXT_W_H         0xfffffc00
+#define MASK_EXT_W_B         0xfffffc00
+#define MASK_RDTIMEL_W       0xfffffc00
+#define MASK_RDTIMEH_W       0xfffffc00
+#define MASK_RDTIME_D        0xfffffc00
+#define MASK_CPUCFG          0xfffffc00
+#define MASK_ASRTLE_D        0xffff801f
+#define MASK_ASRTGT_D        0xffff801f
+#define MASK_ALSL_W          0xfffe0000
+#define MASK_ALSL_WU         0xfffe0000
+#define MASK_BYTEPICK_W      0xfffe0000
+#define MASK_BYTEPICK_D      0xfffc0000
+#define MASK_ADD_W           0xffff8000
+#define MASK_ADD_D           0xffff8000
+#define MASK_SUB_W           0xffff8000
+#define MASK_SUB_D           0xffff8000
+#define MASK_SLT             0xffff8000
+#define MASK_SLTU            0xffff8000
+#define MASK_MASKEQZ         0xffff8000
+#define MASK_MASKNEZ         0xffff8000
+#define MASK_NOR             0xffff8000
+#define MASK_AND             0xffff8000
+#define MASK_OR              0xffff8000
+#define MASK_XOR             0xffff8000
+#define MASK_ORN             0xffff8000
+#define MASK_ANDN            0xffff8000
+#define MASK_SLL_W           0xffff8000
+#define MASK_SRL_W           0xffff8000
+#define MASK_SRA_W           0xffff8000
+#define MASK_SLL_D           0xffff8000
+#define MASK_SRL_D           0xffff8000
+#define MASK_SRA_D           0xffff8000
+#define MASK_ROTR_W          0xffff8000
+#define MASK_ROTR_D          0xffff8000
+#define MASK_MUL_W           0xffff8000
+#define MASK_MULH_W          0xffff8000
+#define MASK_MULH_WU         0xffff8000
+#define MASK_MUL_D           0xffff8000
+#define MASK_MULH_D          0xffff8000
+#define MASK_MULH_DU         0xffff8000
+#define MASK_MULW_D_W        0xffff8000
+#define MASK_MULW_D_WU       0xffff8000
+#define MASK_DIV_W           0xffff8000
+#define MASK_MOD_W           0xffff8000
+#define MASK_DIV_WU          0xffff8000
+#define MASK_MOD_WU          0xffff8000
+#define MASK_DIV_D           0xffff8000
+#define MASK_MOD_D           0xffff8000
+#define MASK_DIV_DU          0xffff8000
+#define MASK_MOD_DU          0xffff8000
+#define MASK_CRC_W_B_W       0xffff8000
+#define MASK_CRC_W_H_W       0xffff8000
+#define MASK_CRC_W_W_W       0xffff8000
+#define MASK_CRC_W_D_W       0xffff8000
+#define MASK_CRCC_W_B_W      0xffff8000
+#define MASK_CRCC_W_H_W      0xffff8000
+#define MASK_CRCC_W_W_W      0xffff8000
+#define MASK_CRCC_W_D_W      0xffff8000
+#define MASK_BREAK           0xffff8000
+#define MASK_DBCL            0xffff8000
+#define MASK_SYSCALL         0xffff8000
+#define MASK_ALSL_D          0xfffe0000
+#define MASK_SLLI_W          0xffff8000
+#define MASK_SLLI_D          0xffff0000
+#define MASK_SRLI_W          0xffff8000
+#define MASK_SRLI_D          0xffff0000
+#define MASK_SRAI_W          0xffff8000
+#define MASK_SRAI_D          0xffff0000
+#define MASK_ROTRI_W         0xffff8000
+#define MASK_ROTRI_D         0xffff0000
+#define MASK_BSTRINS_W       0xffe08000
+#define MASK_BSTRPICK_W      0xffe08000
+#define MASK_BSTRINS_D       0xffc00000
+#define MASK_BSTRPICK_D      0xffc00000
+
+/* loongarch single float insn mask  */
+#define MASK_FADD_S          0xffff8000
+#define MASK_SUB_S           0xffff8000
+#define MASK_MUL_S           0xffff8000
+#define MASK_FDIV_S          0xffff8000
+#define MASK_FMAX_S          0xffff8000
+#define MASK_FMIN_S          0xffff8000
+#define MASK_FMAXA_S         0xffff8000
+#define MASK_FMINA_S         0xffff8000
+#define MASK_FSCALEB_S       0xffff8000
+#define MASK_FCOPYSIGN_S     0xffff8000
+#define MASK_FABS_S          0xfffffc00
+#define MASK_FNEG_S          0xfffffc00
+#define MASK_FLOGB_S         0xfffffc00
+#define MASK_FCLASS_S        0xfffffc00
+#define MASK_FSQRT_S         0xfffffc00
+#define MASK_FRECIP_S        0xfffffc00
+#define MASK_FRSQRT_S        0xfffffc00
+#define MASK_FRECIPE_S       0xfffffc00
+#define MASK_FRSQRTE_S       0xfffffc00
+#define MASK_FMOV_S          0xfffffc00
+#define MASK_MOVGR2FR_W      0xfffffc00
+#define MASK_MOVGR2FRH_W     0xfffffc00
+#define MASK_MOVFR2GR_S      0xfffffc00
+#define MASK_MOVFRH2GR_S     0xfffffc00
+#define MASK_MOVGR2FCSR      0xfffffc1c
+#define MASK_MOVFCSR2GR      0xffffff80
+#define MASK_MOVFR2CF        0xfffffc18
+#define MASK_MOVCF2FR        0xffffff00
+#define MASK_MOVGR2CF        0xfffffc18
+#define MASK_MOVCF2GR        0xffffff00
+#define MASK_FTINTRM_W_S     0xfffffc00
+#define MASK_FTINTRM_L_S     0xfffffc00
+#define MASK_FTINTRP_W_S     0xfffffc00
+#define MASK_FTINTRP_L_S     0xfffffc00
+#define MASK_FTINTRZ_W_S     0xfffffc00
+#define MASK_FTINTRZ_L_S     0xfffffc00
+#define MASK_FTINTRNE_W_S    0xfffffc00
+#define MASK_FTINTRNE_L_S    0xfffffc00
+#define MASK_FTINT_W_S       0xfffffc00
+#define MASK_FTINT_L_S       0xfffffc00
+#define MASK_FFINT_S_W       0xfffffc00
+#define MASK_FFINT_S_L       0xfffffc00
+#define MASK_FRINT_S         0xfffffc00
+
+/* loongarch double float insn mask  */
+#define MASK_FADD_D          0xffff8000
+#define MASK_FSUB_D          0xffff8000
+#define MASK_FMUL_D          0xffff8000
+#define MASK_FDIV_D          0xffff8000
+#define MASK_FMAX_D          0xffff8000
+#define MASK_FMIN_D          0xffff8000
+#define MASK_FMAXA_D         0xffff8000
+#define MASK_FMINA_D         0xffff8000
+#define MASK_FSCALEB_D       0xffff8000
+#define MASK_FCOPYSIGN_D     0xffff8000
+#define MASK_FABS_D          0xfffffc00
+#define MASK_FNEG_D          0xfffffc00
+#define MASK_FLOGB_D         0xfffffc00
+#define MASK_FCLASS_D        0xfffffc00
+#define MASK_FSQRT_D         0xfffffc00
+#define MASK_FRECIP_D        0xfffffc00
+#define MASK_FRSQRT_D        0xfffffc00
+#define MASK_FRECIPE_D       0xfffffc00
+#define MASK_FRSQRTE_D       0xfffffc00
+#define MASK_FMOV_D          0xfffffc00
+#define MASK_MOVGR2FR_D      0xfffffc00
+#define MASK_MOVFR2GR_D      0xfffffc00
+#define MASK_FCVT_S_D        0xfffffc00
+#define MASK_FCVT_D_S        0xfffffc00
+#define MASK_FTINTRM_W_D     0xfffffc00
+#define MASK_FTINTRM_L_D     0xfffffc00
+#define MASK_FTINTRP_W_D     0xfffffc00
+#define MASK_FTINTRP_L_D     0xfffffc00
+#define MASK_FTINTRZ_W_D     0xfffffc00
+#define MASK_FTINTRZ_L_D     0xfffffc00
+#define MASK_FTINTRNE_W_D    0xfffffc00
+#define MASK_FTINTRNE_L_D    0xfffffc00
+#define MASK_FTINT_W_D       0xfffffc00
+#define MASK_FTINT_L_D       0xfffffc00
+#define MASK_FFINT_D_W       0xfffffc00
+#define MASK_FFINT_D_L       0xfffffc00
+#define MASK_FRINT_D         0xfffffc00
+
+/* loongarch imm insn mask  */
+#define MASK_SLTI            0xfffffc00
+#define MASK_SLTUI           0xffc00000
+#define MASK_ADDI_W          0xffc00000
+#define MASK_ADDI_D          0xffc00000
+#define MASK_LU52I_D         0xffc00000
+#define MASK_ANDI            0xffc00000
+#define MASK_ORI             0xffc00000
+#define MASK_XORI            0xffc00000
+#define MASK_ADDU16I_D       0xfc000000
+#define MASK_LU12I_W         0xfe000000
+#define MASK_LU32I_D         0xfe000000
+#define MASK_PCADDI          0xfe000000
+#define MASK_PCALAU12I       0xfe000000
+#define MASK_PCADDU12I       0xfe000000
+#define MASK_PCADDU18I       0xfe000000
+
+/* loongarch privilege insn mask  */
+#define MASK_CSRRD           0xff0003e0
+#define MASK_CSRWR           0xff0003e0
+#define MASK_CSRXCHG         0xff000000
+#define MASK_CACOP           0xffc00000
+#define MASK_LDDIR           0xfffc0000
+#define MASK_LDPTE           0xfffc001f
+#define MASK_IOCSRRD_B       0xfffffc00
+#define MASK_IOCSRRD_H       0xfffffc00
+#define MASK_IOCSRRD_W       0xfffffc00
+#define MASK_IOCSRRD_D       0xfffffc00
+#define MASK_IOCSRWR_B       0xfffffc00
+#define MASK_IOCSRWR_H       0xfffffc00
+#define MASK_IOCSRWR_W       0xfffffc00
+#define MASK_IOCSRWR_D       0xfffffc00
+#define MASK_TLBCLR          0xffffffff
+#define MASK_TLBFLUSH        0xffffffff
+#define MASK_TLBSRCH         0xffffffff
+#define MASK_TLBRD           0xffffffff
+#define MASK_TLBWR           0xffffffff
+#define MASK_TLBFILL         0xffffffff
+#define MASK_ERTN            0xffffffff
+#define MASK_IDLE            0xffff8000
+#define MASK_INVTLB          0xffff8000
+
+/* loongarch 4opt single float insn mask  */
+#define MASK_FMADD_S         0xfff00000
+#define MASK_FMSUB_S         0xfff00000
+#define MASK_FNMADD_S        0xfff00000
+#define MASK_FNMSUB_S        0xfff00000
+#define MASK_FCMP_CAF_S      0xffff8018
+#define MASK_FCMP_SAF_S      0xffff8018
+#define MASK_FCMP_CLT_S      0xffff8018
+#define MASK_FCMP_SLT_S      0xffff8018
+#define MASK_FCMP_SGT_S      0xffff8018
+#define MASK_FCMP_CEQ_S      0xffff8018
+#define MASK_FCMP_SEQ_S      0xffff8018
+#define MASK_FCMP_CLE_S      0xffff8018
+#define MASK_FCMP_SLE_S      0xffff8018
+#define MASK_FCMP_SGE_S      0xffff8018
+#define MASK_FCMP_CUN_S      0xffff8018
+#define MASK_FCMP_SUN_S      0xffff8018
+#define MASK_FCMP_CULT_S     0xffff8018
+#define MASK_FCMP_CUGT_S     0xffff8018
+#define MASK_FCMP_SULT_S     0xffff8018
+#define MASK_FCMP_CUEQ_S     0xffff8018
+#define MASK_FCMP_SUEQ_S     0xffff8018
+#define MASK_FCMP_CULE_S     0xffff8018
+#define MASK_FCMP_CUGE_S     0xffff8018
+#define MASK_FCMP_SULE_S     0xffff8018
+#define MASK_FCMP_CNE_S      0xffff8018
+#define MASK_FCMP_SNE_S      0xffff8018
+#define MASK_FCMP_COR_S      0xffff8018
+#define MASK_FCMP_SOR_S      0xffff8018
+#define MASK_FCMP_CUNE_S     0xffff8018
+#define MASK_FCMP_SUNE_S     0xffff8018
+#define MASK_FSEL            0xfffc0000
+
+/* loongarch 4opt double float insn mask  */
+#define MASK_FMADD_D         0xfff00000
+#define MASK_FMSUB_D         0xfff00000
+#define MASK_FNMADD_D        0xfff00000
+#define MASK_FNMSUB_D        0xfff00000
+#define MASK_FCMP_CAF_D      0xffff8018
+#define MASK_FCMP_SAF_D      0xffff8018
+#define MASK_FCMP_CLT_D      0xffff8018
+#define MASK_FCMP_SLT_D      0xffff8018
+#define MASK_FCMP_SGT_D      0xffff8018
+#define MASK_FCMP_CEQ_D      0xffff8018
+#define MASK_FCMP_SEQ_D      0xffff8018
+#define MASK_FCMP_CLE_D      0xffff8018
+#define MASK_FCMP_SLE_D      0xffff8018
+#define MASK_FCMP_SGE_D      0xffff8018
+#define MASK_FCMP_CUN_D      0xffff8018
+#define MASK_FCMP_SUN_D      0xffff8018
+#define MASK_FCMP_CULT_D     0xffff8018
+#define MASK_FCMP_CUGT_D     0xffff8018
+#define MASK_FCMP_SULT_D     0xffff8018
+#define MASK_FCMP_CUEQ_D     0xffff8018
+#define MASK_FCMP_SUEQ_D     0xffff8018
+#define MASK_FCMP_CULE_D     0xffff8018
+#define MASK_FCMP_CUGE_D     0xffff8018
+#define MASK_FCMP_SULE_D     0xffff8018
+#define MASK_FCMP_CNE_D      0xffff8018
+#define MASK_FCMP_SNE_D      0xffff8018
+#define MASK_FCMP_COR_D      0xffff8018
+#define MASK_FCMP_SOR_D      0xffff8018
+#define MASK_FCMP_CUNE_D     0xffff8018
+#define MASK_FCMP_SUNE_D     0xffff8018
+
+/* loongarch load store insn mask  */
+#define MASK_LL_W            0xff000000
+#define MASK_SC_W            0xff000000
+#define MASK_LL_D            0xff000000
+#define MASK_SC_D            0xff000000
+#define MASK_LDPTR_W         0xff000000
+#define MASK_STPTR_W         0xff000000
+#define MASK_LDPTR_D         0xff000000
+#define MASK_STPTR_D         0xff000000
+#define MASK_LD_B            0xffc00000
+#define MASK_LD_H            0xffc00000
+#define MASK_LD_W            0xffc00000
+#define MASK_LD_D            0xffc00000
+#define MASK_ST_B            0xffc00000
+#define MASK_ST_H            0xffc00000
+#define MASK_ST_W            0xffc00000
+#define MASK_ST_D            0xffc00000
+#define MASK_LD_BU           0xffc00000
+#define MASK_LD_HU           0xffc00000
+#define MASK_LD_WU           0xffc00000
+#define MASK_PRELD           0xffc00000
+#define MASK_LDX_B           0xffff8000
+#define MASK_LDX_H           0xffff8000
+#define MASK_LDX_W           0xffff8000
+#define MASK_LDX_D           0xffff8000
+#define MASK_STX_B           0xffff8000
+#define MASK_STX_H           0xffff8000
+#define MASK_STX_W           0xffff8000
+#define MASK_STX_D           0xffff8000
+#define MASK_LDX_BU          0xffff8000
+#define MASK_LDX_HU          0xffff8000
+#define MASK_LDX_WU          0xffff8000
+#define MASK_PRELDX          0xffff8000
+#define MASK_SC_Q            0xffff8000
+#define MASK_LLACQ_W         0xfffffc00
+#define MASK_SCREL_W         0xfffffc00
+#define MASK_LLACQ_D         0xfffffc00
+#define MASK_SCREL_D         0xfffffc00
+#define MASK_AMCAS_B         0xffff8000
+#define MASK_AMCAS_H         0xffff8000
+#define MASK_AMCAS_W         0xffff8000
+#define MASK_AMCAS_D         0xffff8000
+#define MASK_AMCAS_DB_B      0xffff8000
+#define MASK_AMCAS_DB_H      0xffff8000
+#define MASK_AMCAS_DB_W      0xffff8000
+#define MASK_AMCAS_DB_D      0xffff8000
+#define MASK_AMSWAP_B        0xffff8000
+#define MASK_AMSWAP_H        0xffff8000
+#define MASK_AMADD_B         0xffff8000
+#define MASK_AMADD_H         0xffff8000
+#define MASK_AMSWAP_DB_B     0xffff8000
+#define MASK_AMSWAP_DB_H     0xffff8000
+#define MASK_AMADD_DB_B      0xffff8000
+#define MASK_AMADD_DB_H      0xffff8000
+#define MASK_AMSWAP_W        0xffff8000
+#define MASK_AMSWAP_D        0xffff8000
+#define MASK_AMADD_W         0xffff8000
+#define MASK_AMADD_D         0xffff8000
+#define MASK_AMAND_W         0xffff8000
+#define MASK_AMAND_D         0xffff8000
+#define MASK_AMOR_W          0xffff8000
+#define MASK_AMOR_D          0xffff8000
+#define MASK_AMXOR_W         0xffff8000
+#define MASK_AMXOR_D         0xffff8000
+#define MASK_AMMAX_W         0xffff8000
+#define MASK_AMMAX_D         0xffff8000
+#define MASK_AMMIN_W         0xffff8000
+#define MASK_AMMIN_D         0xffff8000
+#define MASK_AMMAX_WU        0xffff8000
+#define MASK_AMMAX_DU        0xffff8000
+#define MASK_AMMIN_WU        0xffff8000
+#define MASK_AMMIN_DU        0xffff8000
+#define MASK_AMSWAP_DB_W     0xffff8000
+#define MASK_AMSWAP_DB_D     0xffff8000
+#define MASK_AMADD_DB_W      0xffff8000
+#define MASK_AMADD_DB_D      0xffff8000
+#define MASK_AMAND_DB_W      0xffff8000
+#define MASK_AMAND_DB_D      0xffff8000
+#define MASK_AMOR_DB_W       0xffff8000
+#define MASK_AMOR_DB_D       0xffff8000
+#define MASK_AMXOR_DB_W      0xffff8000
+#define MASK_AMXOR_DB_D      0xffff8000
+#define MASK_AMMAX_DB_W      0xffff8000
+#define MASK_AMMAX_DB_D      0xffff8000
+#define MASK_AMMIN_DB_W      0xffff8000
+#define MASK_AMMIN_DB_D      0xffff8000
+#define MASK_AMMAX_DB_WU     0xffff8000
+#define MASK_AMMAX_DB_DU     0xffff8000
+#define MASK_AMMIN_DB_WU     0xffff8000
+#define MASK_AMMIN_DB_DU     0xffff8000
+#define MASK_DBAR            0xffff8000
+#define MASK_IBAR            0xffff8000
+#define MASK_LDGT_B          0xffff8000
+#define MASK_LDGT_H          0xffff8000
+#define MASK_LDGT_W          0xffff8000
+#define MASK_LDGT_D          0xffff8000
+#define MASK_LDLE_B          0xffff8000
+#define MASK_LDLE_H          0xffff8000
+#define MASK_LDLE_W          0xffff8000
+#define MASK_LDLE_D          0xffff8000
+#define MASK_STGT_B          0xffff8000
+#define MASK_STGT_H          0xffff8000
+#define MASK_STGT_W          0xffff8000
+#define MASK_STGT_D          0xffff8000
+#define MASK_STLE_B          0xffff8000
+#define MASK_STLE_H          0xffff8000
+#define MASK_STLE_W          0xffff8000
+#define MASK_STLE_D          0xffff8000
+#define MASK_VLD             0xffc00000
+#define MASK_VST             0xffc00000
+#define MASK_XVLD            0xffc00000
+#define MASK_XVST            0xffc00000
+
+/* loongarch single float load store insn mask  */
+#define MASK_FLD_S           0xffc00000
+#define MASK_FST_S           0xffc00000
+#define MASK_FLDX_S          0xffff8000
+#define MASK_FSTX_S          0xffff8000
+#define MASK_FLDGT_S         0xffff8000
+#define MASK_FLDLE_S         0xffff8000
+#define MASK_FSTGT_S         0xffff8000
+#define MASK_FSTLE_S         0xffff8000
+
+/* loongarch double float load store insn mask  */
+#define MASK_FLD_D           0xffc00000
+#define MASK_FST_D           0xffc00000
+#define MASK_FLDX_D          0xffff8000
+#define MASK_FSTX_D          0xffff8000
+#define MASK_FLDGT_D         0xffff8000
+#define MASK_FLDLE_D         0xffff8000
+#define MASK_FSTGT_D         0xffff8000
+#define MASK_FSTLE_D         0xffff8000
+
+/* loongarch float jmp insn mask  */
+#define MASK_BCEQZ           0xfc000300
+#define MASK_BCNEZ           0xfc000300
+
+/* loongarch jmp insn mask  */
+#define MASK_BEQZ            0xfc000000
+#define MASK_BNEZ            0xfc000000
+#define MASK_JIRL            0xfc000000
+#define MASK_B               0xfc000000
+#define MASK_BL              0xfc000000
+#define MASK_BEQ             0xfc000000
+#define MASK_BNE             0xfc000000
+#define MASK_BLT             0xfc000000
+#define MASK_BGE             0xfc000000
+#define MASK_BLTU            0xfc000000
+#define MASK_BGEU            0xfc000000
+
+/* Define a series of is_XXX_insn functions to check if the value INSN
+   is an instance of instruction XXX.  */
+#define DECLARE_INSN(INSN_NAME, INSN_OPCODE, INSN_MASK) \
+static inline bool is_ ## INSN_NAME ## _insn (uint32_t insn) \
+{ \
+  return (insn & INSN_MASK) == INSN_OPCODE; \
+}
+
+/* loongarch fix instruction */
+DECLARE_INSN(clo_w, OP_CLO_W, MASK_CLO_W)
+DECLARE_INSN(clz_w, OP_CLZ_W, MASK_CLZ_W)
+DECLARE_INSN(cto_w, OP_CTO_W, MASK_CTO_W)
+DECLARE_INSN(ctz_w, OP_CTZ_W, MASK_CTZ_W)
+DECLARE_INSN(clo_d, OP_CLO_D, MASK_CLO_D)
+DECLARE_INSN(clz_d, OP_CLZ_D, MASK_CLZ_D)
+DECLARE_INSN(cto_d, OP_CTO_D, MASK_CTO_D)
+DECLARE_INSN(ctz_d, OP_CTZ_D, MASK_CTZ_D)
+DECLARE_INSN(revb_2h, OP_REVB_2H, MASK_REVB_2H)
+DECLARE_INSN(revb_4h, OP_REVB_4H, MASK_REVB_4H)
+DECLARE_INSN(revb_2w, OP_REVB_2W, MASK_REVB_2W)
+DECLARE_INSN(revb_d, OP_REVB_D, MASK_REVB_D)
+DECLARE_INSN(revh_2w, OP_REVH_2W, MASK_REVH_2W)
+DECLARE_INSN(revh_d, OP_REVH_D, MASK_REVH_D)
+DECLARE_INSN(bitrev_4b, OP_BITREV_4B, MASK_BITREV_4B)
+DECLARE_INSN(bitrev_8b, OP_BITREV_8B, MASK_BITREV_8B)
+DECLARE_INSN(bitrev_w, OP_BITREV_W, MASK_BITREV_W)
+DECLARE_INSN(bitrev_d, OP_BITREV_D, MASK_BITREV_D)
+DECLARE_INSN(ext_w_h, OP_EXT_W_H, MASK_EXT_W_H)
+DECLARE_INSN(ext_w_b, OP_EXT_W_B, MASK_EXT_W_B)
+DECLARE_INSN(rdtimel_w, OP_RDTIMEL_W, MASK_RDTIMEL_W)
+DECLARE_INSN(rdtimeh_w, OP_RDTIMEH_W, MASK_RDTIMEH_W)
+DECLARE_INSN(rdtime_d, OP_RDTIME_D, MASK_RDTIME_D)
+DECLARE_INSN(cpucfg, OP_CPUCFG, MASK_CPUCFG)
+DECLARE_INSN(asrtle_d, OP_ASRTLE_D, MASK_ASRTLE_D)
+DECLARE_INSN(asrtgt_d, OP_ASRTGT_D, MASK_ASRTGT_D)
+DECLARE_INSN(alsl_w, OP_ALSL_W, MASK_ALSL_W)
+DECLARE_INSN(alsl_wu, OP_ALSL_WU, MASK_ALSL_WU)
+DECLARE_INSN(bytepick_w, OP_BYTEPICK_W, MASK_BYTEPICK_W)
+DECLARE_INSN(bytepick_d, OP_BYTEPICK_D, MASK_BYTEPICK_D)
+DECLARE_INSN(add_w, OP_ADD_W, MASK_ADD_W)
+DECLARE_INSN(add_d, OP_ADD_D, MASK_ADD_D)
+DECLARE_INSN(sub_w, OP_SUB_W, MASK_SUB_W)
+DECLARE_INSN(sub_d, OP_SUB_D, MASK_SUB_D)
+DECLARE_INSN(slt, OP_SLT, MASK_SLT)
+DECLARE_INSN(sltu, OP_SLTU, MASK_SLTU)
+DECLARE_INSN(maskeqz, OP_MASKEQZ, MASK_MASKEQZ)
+DECLARE_INSN(masknez, OP_MASKNEZ, MASK_MASKNEZ)
+DECLARE_INSN(nor, OP_NOR, MASK_NOR)
+DECLARE_INSN(and, OP_AND, MASK_AND)
+DECLARE_INSN(or, OP_OR, MASK_OR)
+DECLARE_INSN(xor, OP_XOR, MASK_XOR)
+DECLARE_INSN(orn, OP_ORN, MASK_ORN)
+DECLARE_INSN(andn, OP_ANDN, MASK_ANDN)
+DECLARE_INSN(sll_w, OP_SLL_W, MASK_SLL_W)
+DECLARE_INSN(srl_w, OP_SRL_W, MASK_SRL_W)
+DECLARE_INSN(sra_w, OP_SRA_W, MASK_SRA_W)
+DECLARE_INSN(sll_d, OP_SLL_D, MASK_SLL_D)
+DECLARE_INSN(srl_d, OP_SRL_D, MASK_SRL_D)
+DECLARE_INSN(sra_d, OP_SRA_D, MASK_SRA_D)
+DECLARE_INSN(rotr_w, OP_ROTR_W, MASK_ROTR_W)
+DECLARE_INSN(rotr_d, OP_ROTR_D, MASK_ROTR_D)
+DECLARE_INSN(mul_w, OP_MUL_W, MASK_MUL_W)
+DECLARE_INSN(mulh_w, OP_MULH_W, MASK_MULH_W)
+DECLARE_INSN(mulh_wu, OP_MULH_WU, MASK_MULH_WU)
+DECLARE_INSN(mul_d, OP_MUL_D, MASK_MUL_D)
+DECLARE_INSN(mulh_d, OP_MULH_D, MASK_MULH_D)
+DECLARE_INSN(mulh_du, OP_MULH_DU, MASK_MULH_DU)
+DECLARE_INSN(mulw_d_w, OP_MULW_D_W, MASK_MULW_D_W)
+DECLARE_INSN(mulw_d_wu, OP_MULW_D_WU, MASK_MULW_D_WU)
+DECLARE_INSN(div_w, OP_DIV_W, MASK_DIV_W)
+DECLARE_INSN(mod_w, OP_MOD_W, MASK_MOD_W)
+DECLARE_INSN(div_wu, OP_DIV_WU, MASK_DIV_WU)
+DECLARE_INSN(mod_wu, OP_MOD_WU, MASK_MOD_WU)
+DECLARE_INSN(div_d, OP_DIV_D, MASK_DIV_D)
+DECLARE_INSN(mod_d, OP_MOD_D, MASK_MOD_D)
+DECLARE_INSN(div_du, OP_DIV_DU, MASK_DIV_DU)
+DECLARE_INSN(mod_du, OP_MOD_DU, MASK_MOD_DU)
+DECLARE_INSN(crc_w_b_w, OP_CRC_W_B_W, MASK_CRC_W_B_W)
+DECLARE_INSN(crc_w_h_w, OP_CRC_W_H_W, MASK_CRC_W_H_W)
+DECLARE_INSN(crc_w_w_w, OP_CRC_W_W_W, MASK_CRC_W_W_W)
+DECLARE_INSN(crc_w_d_w, OP_CRC_W_D_W, MASK_CRC_W_D_W)
+DECLARE_INSN(crcc_w_b_w, OP_CRCC_W_B_W, MASK_CRCC_W_B_W)
+DECLARE_INSN(crcc_w_h_w, OP_CRCC_W_H_W, MASK_CRCC_W_H_W)
+DECLARE_INSN(crcc_w_w_w, OP_CRCC_W_W_W, MASK_CRCC_W_W_W)
+DECLARE_INSN(crcc_w_d_w, OP_CRCC_W_D_W, MASK_CRCC_W_D_W)
+DECLARE_INSN(break, OP_BREAK, MASK_BREAK)
+DECLARE_INSN(dbcl, OP_DBCL, MASK_DBCL)
+DECLARE_INSN(syscall, OP_SYSCALL, MASK_SYSCALL)
+DECLARE_INSN(alsl_d, OP_ALSL_D, MASK_ALSL_D)
+DECLARE_INSN(slli_w, OP_SLLI_W, MASK_SLLI_W)
+DECLARE_INSN(slli_d, OP_SLLI_D, MASK_SLLI_D)
+DECLARE_INSN(srli_w, OP_SRLI_W, MASK_SRLI_W)
+DECLARE_INSN(srli_d, OP_SRLI_D, MASK_SRLI_D)
+DECLARE_INSN(srai_w, OP_SRAI_W, MASK_SRAI_W)
+DECLARE_INSN(srai_d, OP_SRAI_D, MASK_SRAI_D)
+DECLARE_INSN(rotri_w, OP_ROTRI_W, MASK_ROTRI_W)
+DECLARE_INSN(rotri_d, OP_ROTRI_D, MASK_ROTRI_D)
+DECLARE_INSN(bstrins_w, OP_BSTRINS_W, MASK_BSTRINS_W)
+DECLARE_INSN(bstrpick_w, OP_BSTRPICK_W, MASK_BSTRPICK_W)
+DECLARE_INSN(bstrins_d, OP_BSTRINS_D, MASK_BSTRINS_D)
+DECLARE_INSN(bstrpick_d, OP_BSTRPICK_D, MASK_BSTRPICK_D)
+
+/* loongarch single float instruction  */
+DECLARE_INSN(fadd_s, OP_FADD_S, MASK_FADD_S)
+DECLARE_INSN(fsub_s, OP_SUB_S, MASK_SUB_S)
+DECLARE_INSN(fmul_s, OP_MUL_S, MASK_MUL_S)
+DECLARE_INSN(fdiv_s, OP_FDIV_S, MASK_FDIV_S)
+DECLARE_INSN(fmax_s, OP_FMAX_S, MASK_FMAX_S)
+DECLARE_INSN(fmin_s, OP_FMIN_S, MASK_FMIN_S)
+DECLARE_INSN(fmaxa_s, OP_FMAXA_S, MASK_FMAXA_S)
+DECLARE_INSN(fmina_s, OP_FMINA_S, MASK_FMINA_S)
+DECLARE_INSN(fscaleb_s, OP_FSCALEB_S, MASK_FSCALEB_S)
+DECLARE_INSN(fcopysign_s, OP_FCOPYSIGN_S, MASK_FCOPYSIGN_S)
+DECLARE_INSN(fabs_s, OP_FABS_S, MASK_FABS_S)
+DECLARE_INSN(fneg_s, OP_FNEG_S, MASK_FNEG_S)
+DECLARE_INSN(flogb_s, OP_FLOGB_S, MASK_FLOGB_S)
+DECLARE_INSN(fclass_s, OP_FCLASS_S, MASK_FCLASS_S)
+DECLARE_INSN(fsqrt_s, OP_FSQRT_S, MASK_FSQRT_S)
+DECLARE_INSN(frecip_s, OP_FRECIP_S, MASK_FRECIP_S)
+DECLARE_INSN(frsqrt_s, OP_FRSQRT_S, MASK_FRSQRT_S)
+DECLARE_INSN(frecipe_s, OP_FRECIPE_S, MASK_FRECIPE_S)
+DECLARE_INSN(frsqrte_s, OP_FRSQRTE_S, MASK_FRSQRTE_S)
+DECLARE_INSN(fmov_s, OP_FMOV_S, MASK_FMOV_S)
+DECLARE_INSN(movgr2fr_w, OP_MOVGR2FR_W, MASK_MOVGR2FR_W)
+DECLARE_INSN(movgr2frh_w, OP_MOVGR2FRH_W, MASK_MOVGR2FRH_W)
+DECLARE_INSN(movfr2gr_s, OP_MOVFR2GR_S, MASK_MOVFR2GR_S)
+DECLARE_INSN(movfrh2gr_s, OP_MOVFRH2GR_S, MASK_MOVFRH2GR_S)
+DECLARE_INSN(movgr2fcsr, OP_MOVGR2FCSR, MASK_MOVGR2FCSR)
+DECLARE_INSN(movfcsr2gr, OP_MOVFCSR2GR, MASK_MOVFCSR2GR)
+DECLARE_INSN(movfr2cf, OP_MOVFR2CF, MASK_MOVFR2CF)
+DECLARE_INSN(movcf2fr, OP_MOVCF2FR, MASK_MOVCF2FR)
+DECLARE_INSN(movgr2cf, OP_MOVGR2CF, MASK_MOVGR2CF)
+DECLARE_INSN(movcf2gr, OP_MOVCF2GR, MASK_MOVCF2GR)
+DECLARE_INSN(ftintrm_w_s, OP_FTINTRM_W_S, MASK_FTINTRM_W_S)
+DECLARE_INSN(ftintrm_l_s, OP_FTINTRM_L_S, MASK_FTINTRM_L_S)
+DECLARE_INSN(ftintrp_w_s, OP_FTINTRP_W_S, MASK_FTINTRP_W_S)
+DECLARE_INSN(ftintrp_l_s, OP_FTINTRP_L_S, MASK_FTINTRP_L_S)
+DECLARE_INSN(ftintrz_w_s, OP_FTINTRZ_W_S, MASK_FTINTRZ_W_S)
+DECLARE_INSN(ftintrz_l_s, OP_FTINTRZ_L_S, MASK_FTINTRZ_L_S)
+DECLARE_INSN(ftintrne_w_s, OP_FTINTRNE_W_S, MASK_FTINTRNE_W_S)
+DECLARE_INSN(ftintrne_l_s, OP_FTINTRNE_L_S, MASK_FTINTRNE_L_S)
+DECLARE_INSN(ftint_w_s, OP_FTINT_W_S, MASK_FTINT_W_S)
+DECLARE_INSN(ftint_l_s, OP_FTINT_L_S, MASK_FTINT_L_S)
+DECLARE_INSN(ffint_s_w, OP_FFINT_S_W, MASK_FFINT_S_W)
+DECLARE_INSN(ffint_s_l, OP_FFINT_S_L, MASK_FFINT_S_L)
+DECLARE_INSN(frint_s, OP_FRINT_S, MASK_FRINT_S)
+
+/* loongarch double float instruction */
+DECLARE_INSN(fadd_d, OP_FADD_D, MASK_FADD_D)
+DECLARE_INSN(fsub_d, OP_FSUB_D, MASK_FSUB_D)
+DECLARE_INSN(fmul_d, OP_FMUL_D, MASK_FMUL_D)
+DECLARE_INSN(fdiv_d, OP_FDIV_D, MASK_FDIV_D)
+DECLARE_INSN(fmax_d, OP_FMAX_D, MASK_FMAX_D)
+DECLARE_INSN(fmin_d, OP_FMIN_D, MASK_FMIN_D)
+DECLARE_INSN(fmaxa_d, OP_FMAXA_D, MASK_FMAXA_D)
+DECLARE_INSN(fmina_d, OP_FMINA_D, MASK_FMINA_D)
+DECLARE_INSN(fscaleb_d, OP_FSCALEB_D, MASK_FSCALEB_D)
+DECLARE_INSN(fcopysign_d, OP_FCOPYSIGN_D, MASK_FCOPYSIGN_D)
+DECLARE_INSN(fabs_d, OP_FABS_D, MASK_FABS_D)
+DECLARE_INSN(fneg_d, OP_FNEG_D, MASK_FNEG_D)
+DECLARE_INSN(flogb_d, OP_FLOGB_D, MASK_FLOGB_D)
+DECLARE_INSN(fclass_d, OP_FCLASS_D, MASK_FCLASS_D)
+DECLARE_INSN(fsqrt_d, OP_FSQRT_D, MASK_FSQRT_D)
+DECLARE_INSN(frecip_d, OP_FRECIP_D, MASK_FRECIP_D)
+DECLARE_INSN(frsqrt_d, OP_FRSQRT_D, MASK_FRSQRT_D)
+DECLARE_INSN(frecipe_d, OP_FRECIPE_D, MASK_FRECIPE_D)
+DECLARE_INSN(frsqrte_d, OP_FRSQRTE_D, MASK_FRSQRTE_D)
+DECLARE_INSN(fmov_d, OP_FMOV_D, MASK_FMOV_D)
+DECLARE_INSN(movgr2fr_d, OP_MOVGR2FR_D, MASK_MOVGR2FR_D)
+DECLARE_INSN(movfr2gr_d, OP_MOVFR2GR_D, MASK_MOVFR2GR_D)
+DECLARE_INSN(fcvt_s_d, OP_FCVT_S_D, MASK_FCVT_S_D)
+DECLARE_INSN(fcvt_d_s, OP_FCVT_D_S, MASK_FCVT_D_S)
+DECLARE_INSN(ftintrm_w_d, OP_FTINTRM_W_D, MASK_FTINTRM_W_D)
+DECLARE_INSN(ftintrm_l_d, OP_FTINTRM_L_D, MASK_FTINTRM_L_D)
+DECLARE_INSN(ftintrp_w_d, OP_FTINTRP_W_D, MASK_FTINTRP_W_D)
+DECLARE_INSN(ftintrp_l_d, OP_FTINTRP_L_D, MASK_FTINTRP_L_D)
+DECLARE_INSN(ftintrz_w_d, OP_FTINTRZ_W_D, MASK_FTINTRZ_W_D)
+DECLARE_INSN(ftintrz_l_d, OP_FTINTRZ_L_D, MASK_FTINTRZ_L_D)
+DECLARE_INSN(ftintrne_w_d, OP_FTINTRNE_W_D, MASK_FTINTRNE_W_D)
+DECLARE_INSN(ftintrne_l_d, OP_FTINTRNE_L_D, MASK_FTINTRNE_L_D)
+DECLARE_INSN(ftint_w_d, OP_FTINT_W_D, MASK_FTINT_W_D)
+DECLARE_INSN(ftint_l_d, OP_FTINT_L_D, MASK_FTINT_L_D)
+DECLARE_INSN(ffint_d_w, OP_FFINT_D_W, MASK_FFINT_D_W)
+DECLARE_INSN(ffint_d_l, OP_FFINT_D_L, MASK_FFINT_D_L)
+DECLARE_INSN(frint_d, OP_FRINT_D, MASK_FRINT_D)
+
+/* loongarch imm instruction */
+DECLARE_INSN(slti, OP_SLTI, MASK_SLTI)
+DECLARE_INSN(sltui, OP_SLTUI, MASK_SLTUI)
+DECLARE_INSN(addi_w, OP_ADDI_W, MASK_ADDI_W)
+DECLARE_INSN(addi_d, OP_ADDI_D, MASK_ADDI_D)
+DECLARE_INSN(lu52i_d, OP_LU52I_D, MASK_LU52I_D)
+DECLARE_INSN(andi, OP_ANDI, MASK_ANDI)
+DECLARE_INSN(ori, OP_ORI, MASK_ORI)
+DECLARE_INSN(xori, OP_XORI, MASK_XORI)
+DECLARE_INSN(addu16i_d, OP_ADDU16I_D, MASK_ADDU16I_D)
+DECLARE_INSN(lu12i_w, OP_LU12I_W, MASK_LU12I_W)
+DECLARE_INSN(lu32i_d, OP_LU32I_D, MASK_LU32I_D)
+DECLARE_INSN(pcaddi, OP_PCADDI, MASK_PCADDI)
+DECLARE_INSN(pcalau12i, OP_PCALAU12I, MASK_PCALAU12I)
+DECLARE_INSN(pcaddu12i, OP_PCADDU12I, MASK_PCADDU12I)
+DECLARE_INSN(pcaddu18i, OP_PCADDU18I, MASK_PCADDU18I)
+
+/* loongarch privilege instruction */
+DECLARE_INSN(csrrd, OP_CSRRD, MASK_CSRRD)
+DECLARE_INSN(csrwr, OP_CSRWR, MASK_CSRWR)
+DECLARE_INSN(csrxchg, OP_CSRXCHG, MASK_CSRXCHG)
+DECLARE_INSN(cacop, OP_CACOP, MASK_CACOP)
+DECLARE_INSN(lddir, OP_LDDIR, MASK_LDDIR)
+DECLARE_INSN(ldpte, OP_LDPTE, MASK_LDPTE)
+DECLARE_INSN(iocsrrd_b, OP_IOCSRRD_B, MASK_IOCSRRD_B)
+DECLARE_INSN(iocsrrd_h, OP_IOCSRRD_H, MASK_IOCSRRD_H)
+DECLARE_INSN(iocsrrd_w, OP_IOCSRRD_W, MASK_IOCSRRD_W)
+DECLARE_INSN(iocsrrd_d, OP_IOCSRRD_D, MASK_IOCSRRD_D)
+DECLARE_INSN(iocsrwr_b, OP_IOCSRWR_B, MASK_IOCSRWR_B)
+DECLARE_INSN(iocsrwr_h, OP_IOCSRWR_H, MASK_IOCSRWR_H)
+DECLARE_INSN(iocsrwr_w, OP_IOCSRWR_W, MASK_IOCSRWR_W)
+DECLARE_INSN(iocsrwr_d, OP_IOCSRWR_D, MASK_IOCSRWR_D)
+DECLARE_INSN(tlbclr, OP_TLBCLR, MASK_TLBCLR)
+DECLARE_INSN(tlbflush, OP_TLBFLUSH, MASK_TLBFLUSH)
+DECLARE_INSN(tlbsrch, OP_TLBSRCH, MASK_TLBSRCH)
+DECLARE_INSN(tlbrd, OP_TLBRD, MASK_TLBRD)
+DECLARE_INSN(tlbwr, OP_TLBWR, MASK_TLBWR)
+DECLARE_INSN(tlbfill, OP_TLBFILL, MASK_TLBFILL)
+DECLARE_INSN(ertn, OP_ERTN, MASK_ERTN)
+DECLARE_INSN(idle, OP_IDLE, MASK_IDLE)
+DECLARE_INSN(invtlb, OP_INVTLB, MASK_INVTLB)
+
+/* loongarch 4opt single float instruction */
+DECLARE_INSN(fmadd_s, OP_FMADD_S, MASK_FMADD_S)
+DECLARE_INSN(fmsub_s, OP_FMSUB_S, MASK_FMSUB_S)
+DECLARE_INSN(fnmadd_s, OP_FNMADD_S, MASK_FNMADD_S)
+DECLARE_INSN(fnmsub_s, OP_FNMSUB_S, MASK_FNMSUB_S)
+DECLARE_INSN(fcmp_caf_s, OP_FCMP_CAF_S, MASK_FCMP_CAF_S)
+DECLARE_INSN(fcmp_saf_s, OP_FCMP_SAF_S, MASK_FCMP_SAF_S)
+DECLARE_INSN(fcmp_clt_s, OP_FCMP_CLT_S, MASK_FCMP_CLT_S)
+DECLARE_INSN(fcmp_slt_s, OP_FCMP_SLT_S, MASK_FCMP_SLT_S)
+DECLARE_INSN(fcmp_sgt_s, OP_FCMP_SGT_S, MASK_FCMP_SGT_S)
+DECLARE_INSN(fcmp_ceq_s, OP_FCMP_CEQ_S, MASK_FCMP_CEQ_S)
+DECLARE_INSN(fcmp_seq_s, OP_FCMP_SEQ_S, MASK_FCMP_SEQ_S)
+DECLARE_INSN(fcmp_cle_s, OP_FCMP_CLE_S, MASK_FCMP_CLE_S)
+DECLARE_INSN(fcmp_sle_s, OP_FCMP_SLE_S, MASK_FCMP_SLE_S)
+DECLARE_INSN(fcmp_sge_s, OP_FCMP_SGE_S, MASK_FCMP_SGE_S)
+DECLARE_INSN(fcmp_cun_s, OP_FCMP_CUN_S, MASK_FCMP_CUN_S)
+DECLARE_INSN(fcmp_sun_s, OP_FCMP_SUN_S, MASK_FCMP_SUN_S)
+DECLARE_INSN(fcmp_cult_s, OP_FCMP_CULT_S, MASK_FCMP_CULT_S)
+DECLARE_INSN(fcmp_cugt_s, OP_FCMP_CUGT_S, MASK_FCMP_CUGT_S)
+DECLARE_INSN(fcmp_sult_s, OP_FCMP_SULT_S, MASK_FCMP_SULT_S)
+DECLARE_INSN(fcmp_cueq_s, OP_FCMP_CUEQ_S, MASK_FCMP_CUEQ_S)
+DECLARE_INSN(fcmp_sueq_s, OP_FCMP_SUEQ_S, MASK_FCMP_SUEQ_S)
+DECLARE_INSN(fcmp_cule_s, OP_FCMP_CULE_S, MASK_FCMP_CULE_S)
+DECLARE_INSN(fcmp_cuge_s, OP_FCMP_CUGE_S, MASK_FCMP_CUGE_S)
+DECLARE_INSN(fcmp_sule_s, OP_FCMP_SULE_S, MASK_FCMP_SULE_S)
+DECLARE_INSN(fcmp_cne_s, OP_FCMP_CNE_S, MASK_FCMP_CNE_S)
+DECLARE_INSN(fcmp_sne_s, OP_FCMP_SNE_S, MASK_FCMP_SNE_S)
+DECLARE_INSN(fcmp_cor_s, OP_FCMP_COR_S, MASK_FCMP_COR_S)
+DECLARE_INSN(fcmp_sor_s, OP_FCMP_SOR_S, MASK_FCMP_SOR_S)
+DECLARE_INSN(fcmp_cune_s, OP_FCMP_CUNE_S, MASK_FCMP_CUNE_S)
+DECLARE_INSN(fcmp_sune_s, OP_FCMP_SUNE_S, MASK_FCMP_SUNE_S)
+DECLARE_INSN(fsel, OP_FSEL, MASK_FSEL)
+
+/* loongarch 4opt double float instruction */
+DECLARE_INSN(fmadd_d, OP_FMADD_D, MASK_FMADD_D)
+DECLARE_INSN(fmsub_d, OP_FMSUB_D, MASK_FMSUB_D)
+DECLARE_INSN(fnmadd_d, OP_FNMADD_D, MASK_FNMADD_D)
+DECLARE_INSN(fnmsub_d, OP_FNMSUB_D, MASK_FNMSUB_D)
+DECLARE_INSN(fcmp_caf_d, OP_FCMP_CAF_D, MASK_FCMP_CAF_D)
+DECLARE_INSN(fcmp_saf_d, OP_FCMP_SAF_D, MASK_FCMP_SAF_D)
+DECLARE_INSN(fcmp_clt_d, OP_FCMP_CLT_D, MASK_FCMP_CLT_D)
+DECLARE_INSN(fcmp_slt_d, OP_FCMP_SLT_D, MASK_FCMP_SLT_D)
+DECLARE_INSN(fcmp_sgt_d, OP_FCMP_SGT_D, MASK_FCMP_SGT_D)
+DECLARE_INSN(fcmp_ceq_d, OP_FCMP_CEQ_D, MASK_FCMP_CEQ_D)
+DECLARE_INSN(fcmp_seq_d, OP_FCMP_SEQ_D, MASK_FCMP_SEQ_D)
+DECLARE_INSN(fcmp_cle_d, OP_FCMP_CLE_D, MASK_FCMP_CLE_D)
+DECLARE_INSN(fcmp_sle_d, OP_FCMP_SLE_D, MASK_FCMP_SLE_D)
+DECLARE_INSN(fcmp_sge_d, OP_FCMP_SGE_D, MASK_FCMP_SGE_D)
+DECLARE_INSN(fcmp_cun_d, OP_FCMP_CUN_D, MASK_FCMP_CUN_D)
+DECLARE_INSN(fcmp_sun_d, OP_FCMP_SUN_D, MASK_FCMP_SUN_D)
+DECLARE_INSN(fcmp_cult_d, OP_FCMP_CULT_D, MASK_FCMP_CULT_D)
+DECLARE_INSN(fcmp_cugt_d, OP_FCMP_CUGT_D, MASK_FCMP_CUGT_D)
+DECLARE_INSN(fcmp_sult_d, OP_FCMP_SULT_D, MASK_FCMP_SULT_D)
+DECLARE_INSN(fcmp_cueq_d, OP_FCMP_CUEQ_D, MASK_FCMP_CUEQ_D)
+DECLARE_INSN(fcmp_sueq_d, OP_FCMP_SUEQ_D, MASK_FCMP_SUEQ_D)
+DECLARE_INSN(fcmp_cule_d, OP_FCMP_CULE_D, MASK_FCMP_CULE_D)
+DECLARE_INSN(fcmp_cuge_d, OP_FCMP_CUGE_D, MASK_FCMP_CUGE_D)
+DECLARE_INSN(fcmp_sule_d, OP_FCMP_SULE_D, MASK_FCMP_SULE_D)
+DECLARE_INSN(fcmp_cne_d, OP_FCMP_CNE_D, MASK_FCMP_CNE_D)
+DECLARE_INSN(fcmp_sne_d, OP_FCMP_SNE_D, MASK_FCMP_SNE_D)
+DECLARE_INSN(fcmp_cor_d, OP_FCMP_COR_D, MASK_FCMP_COR_D)
+DECLARE_INSN(fcmp_sor_d, OP_FCMP_SOR_D, MASK_FCMP_SOR_D)
+DECLARE_INSN(fcmp_cune_d, OP_FCMP_CUNE_D, MASK_FCMP_CUNE_D)
+DECLARE_INSN(fcmp_sune_d, OP_FCMP_SUNE_D, MASK_FCMP_SUNE_D)
+
+/* loongarch load store instruction */
+DECLARE_INSN(ll_w, OP_LL_W, MASK_LL_W)
+DECLARE_INSN(sc_w, OP_SC_W, MASK_SC_W)
+DECLARE_INSN(ll_d, OP_LL_D, MASK_LL_D)
+DECLARE_INSN(sc_d, OP_SC_D, MASK_SC_D)
+DECLARE_INSN(ldptr_w, OP_LDPTR_W, MASK_LDPTR_W)
+DECLARE_INSN(stptr_w, OP_STPTR_W, MASK_STPTR_W)
+DECLARE_INSN(ldptr_d, OP_LDPTR_D, MASK_LDPTR_D)
+DECLARE_INSN(stptr_d, OP_STPTR_D, MASK_STPTR_D)
+DECLARE_INSN(ld_b, OP_LD_B, MASK_LD_B)
+DECLARE_INSN(ld_h, OP_LD_H, MASK_LD_H)
+DECLARE_INSN(ld_w, OP_LD_W, MASK_LD_W)
+DECLARE_INSN(ld_d, OP_LD_D, MASK_LD_D)
+DECLARE_INSN(st_b, OP_ST_B, MASK_ST_B)
+DECLARE_INSN(st_h, OP_ST_H, MASK_ST_H)
+DECLARE_INSN(st_w, OP_ST_W, MASK_ST_W)
+DECLARE_INSN(st_d, OP_ST_D, MASK_ST_D)
+DECLARE_INSN(ld_bu, OP_LD_BU, MASK_LD_BU)
+DECLARE_INSN(ld_hu, OP_LD_HU, MASK_LD_HU)
+DECLARE_INSN(ld_wu, OP_LD_WU, MASK_LD_WU)
+DECLARE_INSN(preld, OP_PRELD, MASK_PRELD)
+DECLARE_INSN(ldx_b, OP_LDX_B, MASK_LDX_B)
+DECLARE_INSN(ldx_h, OP_LDX_H, MASK_LDX_H)
+DECLARE_INSN(ldx_w, OP_LDX_W, MASK_LDX_W)
+DECLARE_INSN(ldx_d, OP_LDX_D, MASK_LDX_D)
+DECLARE_INSN(stx_b, OP_STX_B, MASK_STX_B)
+DECLARE_INSN(stx_h, OP_STX_H, MASK_STX_H)
+DECLARE_INSN(stx_w, OP_STX_W, MASK_STX_W)
+DECLARE_INSN(stx_d, OP_STX_D, MASK_STX_D)
+DECLARE_INSN(ldx_bu, OP_LDX_BU, MASK_LDX_BU)
+DECLARE_INSN(ldx_hu, OP_LDX_HU, MASK_LDX_HU)
+DECLARE_INSN(ldx_wu, OP_LDX_WU, MASK_LDX_WU)
+DECLARE_INSN(preldx, OP_PRELDX, MASK_PRELDX)
+DECLARE_INSN(sc_q, OP_SC_Q, MASK_SC_Q)
+DECLARE_INSN(llacq_w, OP_LLACQ_W, MASK_LLACQ_W)
+DECLARE_INSN(screl_w, OP_SCREL_W, MASK_SCREL_W)
+DECLARE_INSN(llacq_d, OP_LLACQ_D, MASK_LLACQ_D)
+DECLARE_INSN(screl_d, OP_SCREL_D, MASK_LLACQ_D)
+DECLARE_INSN(amcas_b, OP_AMCAS_B, MASK_AMCAS_B)
+DECLARE_INSN(amcas_h, OP_AMCAS_H, MASK_AMCAS_H)
+DECLARE_INSN(amcas_w, OP_AMCAS_W, MASK_AMCAS_W)
+DECLARE_INSN(amcas_d, OP_AMCAS_D, MASK_AMCAS_D)
+DECLARE_INSN(amcas_db_b, OP_AMCAS_DB_B, MASK_AMCAS_DB_B)
+DECLARE_INSN(amcas_db_h, OP_AMCAS_DB_H, MASK_AMCAS_DB_H)
+DECLARE_INSN(amcas_db_w, OP_AMCAS_DB_W, MASK_AMCAS_DB_W)
+DECLARE_INSN(amcas_db_d, OP_AMCAS_DB_D, MASK_AMCAS_DB_D)
+DECLARE_INSN(amswap_b, OP_AMSWAP_B, MASK_AMSWAP_B)
+DECLARE_INSN(amswap_h, OP_AMSWAP_H, MASK_AMSWAP_H)
+DECLARE_INSN(amadd_b, OP_AMADD_B, MASK_AMADD_B)
+DECLARE_INSN(amadd_h, OP_AMADD_H, MASK_AMADD_H)
+DECLARE_INSN(amswap_db_b, OP_AMSWAP_DB_B, MASK_AMSWAP_DB_B)
+DECLARE_INSN(amswap_db_h, OP_AMSWAP_DB_H, MASK_AMSWAP_DB_H)
+DECLARE_INSN(amadd_db_b, OP_AMADD_DB_B, MASK_AMADD_DB_B)
+DECLARE_INSN(amadd_db_h, OP_AMADD_DB_H, MASK_AMADD_DB_H)
+DECLARE_INSN(amswap_w, OP_AMSWAP_W, MASK_AMSWAP_W)
+DECLARE_INSN(amswap_d, OP_AMSWAP_D, MASK_AMSWAP_D)
+DECLARE_INSN(amadd_w, OP_AMADD_W, MASK_AMADD_W)
+DECLARE_INSN(amadd_d, OP_AMADD_D, MASK_AMADD_D)
+DECLARE_INSN(amand_w, OP_AMAND_W, MASK_AMAND_W)
+DECLARE_INSN(amand_d, OP_AMAND_D, MASK_AMAND_D)
+DECLARE_INSN(amor_w, OP_AMOR_W, MASK_AMOR_W)
+DECLARE_INSN(amor_d, OP_AMOR_D, MASK_AMOR_D)
+DECLARE_INSN(amxor_w, OP_AMXOR_W, MASK_AMXOR_W)
+DECLARE_INSN(amxor_d, OP_AMXOR_D, MASK_AMXOR_D)
+DECLARE_INSN(ammax_w, OP_AMMAX_W, MASK_AMMAX_W)
+DECLARE_INSN(ammax_d, OP_AMMAX_D, MASK_AMMAX_D)
+DECLARE_INSN(ammin_w, OP_AMMIN_W, MASK_AMMIN_W)
+DECLARE_INSN(ammin_d, OP_AMMIN_D, MASK_AMMIN_D)
+DECLARE_INSN(ammax_wu, OP_AMMAX_WU, MASK_AMMAX_WU)
+DECLARE_INSN(ammax_du, OP_AMMAX_DU, MASK_AMMAX_DU)
+DECLARE_INSN(ammin_wu, OP_AMMIN_WU, MASK_AMMIN_WU)
+DECLARE_INSN(ammin_du, OP_AMMIN_DU, MASK_AMMIN_DU)
+DECLARE_INSN(amswap_db_w, OP_AMSWAP_DB_W, MASK_AMSWAP_DB_W)
+DECLARE_INSN(amswap_db_d, OP_AMSWAP_DB_D, MASK_AMSWAP_DB_D)
+DECLARE_INSN(amadd_db_w, OP_AMADD_DB_W, MASK_AMADD_DB_W)
+DECLARE_INSN(amadd_db_d, OP_AMADD_DB_D, MASK_AMADD_DB_D)
+DECLARE_INSN(amand_db_w, OP_AMAND_DB_W, MASK_AMAND_DB_W)
+DECLARE_INSN(amand_db_d, OP_AMAND_DB_D, MASK_AMAND_DB_D)
+DECLARE_INSN(amor_db_w, OP_AMOR_DB_W, MASK_AMOR_DB_W)
+DECLARE_INSN(amor_db_d, OP_AMOR_DB_D, MASK_AMOR_DB_D)
+DECLARE_INSN(amxor_db_w, OP_AMXOR_DB_W, MASK_AMXOR_DB_W)
+DECLARE_INSN(amxor_db_d, OP_AMXOR_DB_D, MASK_AMXOR_DB_D)
+DECLARE_INSN(ammax_db_w, OP_AMMAX_DB_W, MASK_AMMAX_DB_W)
+DECLARE_INSN(ammax_db_d, OP_AMMAX_DB_D, MASK_AMMAX_DB_D)
+DECLARE_INSN(ammin_db_w, OP_AMMIN_DB_W, MASK_AMMIN_DB_W)
+DECLARE_INSN(ammin_db_d, OP_AMMIN_DB_D, MASK_AMMIN_DB_D)
+DECLARE_INSN(ammax_db_wu, OP_AMMAX_DB_WU, MASK_AMMAX_DB_WU)
+DECLARE_INSN(ammax_db_du, OP_AMMAX_DB_DU, MASK_AMMAX_DB_DU)
+DECLARE_INSN(ammin_db_wu, OP_AMMIN_DB_WU, MASK_AMMIN_DB_WU)
+DECLARE_INSN(ammin_db_du, OP_AMMIN_DB_DU, MASK_AMMIN_DB_DU)
+DECLARE_INSN(dbar, OP_DBAR, MASK_DBAR)
+DECLARE_INSN(ibar, OP_IBAR, MASK_IBAR)
+DECLARE_INSN(ldgt_b, OP_LDGT_B, MASK_LDGT_B)
+DECLARE_INSN(ldgt_h, OP_LDGT_H, MASK_LDGT_H)
+DECLARE_INSN(ldgt_w, OP_LDGT_W, MASK_LDGT_W)
+DECLARE_INSN(ldgt_d, OP_LDGT_D, MASK_LDGT_D)
+DECLARE_INSN(ldle_b, OP_LDLE_B, MASK_LDLE_B)
+DECLARE_INSN(ldle_h, OP_LDLE_H, MASK_LDLE_H)
+DECLARE_INSN(ldle_w, OP_LDLE_W, MASK_LDLE_W)
+DECLARE_INSN(ldle_d, OP_LDLE_D, MASK_LDLE_D)
+DECLARE_INSN(stgt_b, OP_STGT_B, MASK_STGT_B)
+DECLARE_INSN(stgt_h, OP_STGT_H, MASK_STGT_H)
+DECLARE_INSN(stgt_w, OP_STGT_W, MASK_STGT_W)
+DECLARE_INSN(stgt_d, OP_STGT_D, MASK_STGT_D)
+DECLARE_INSN(stle_b, OP_STLE_B, MASK_STLE_B)
+DECLARE_INSN(stle_h, OP_STLE_H, MASK_STLE_H)
+DECLARE_INSN(stle_w, OP_STLE_W, MASK_STLE_W)
+DECLARE_INSN(stle_d, OP_STLE_D, MASK_STLE_D)
+DECLARE_INSN(vld, OP_VLD, MASK_VLD)
+DECLARE_INSN(vst, OP_VST, MASK_VST)
+DECLARE_INSN(xvld, OP_XVLD, MASK_XVLD)
+DECLARE_INSN(xvst, OP_XVST, MASK_XVST)
+
+/* loongarch single float load store instruction */
+DECLARE_INSN(fld_s, OP_FLD_S, MASK_FLD_S)
+DECLARE_INSN(fst_s, OP_FST_S, MASK_FST_S)
+DECLARE_INSN(fldx_s, OP_FLDX_S, MASK_FLDX_S)
+DECLARE_INSN(fstx_s, OP_FSTX_S, MASK_FSTX_S)
+DECLARE_INSN(fldgt_s, OP_FLDGT_S, MASK_FLDGT_S)
+DECLARE_INSN(fldle_s, OP_FLDLE_S, MASK_FLDLE_S)
+DECLARE_INSN(fstgt_s, OP_FSTGT_S, MASK_FSTGT_S)
+DECLARE_INSN(fstle_s, OP_FSTLE_S, MASK_FSTLE_S)
+
+/* loongarch double float load store instruction */
+DECLARE_INSN(fld_d, OP_FLD_D, MASK_FLD_D)
+DECLARE_INSN(fst_d, OP_FST_D, MASK_FST_D)
+DECLARE_INSN(fldx_d, OP_FLDX_D, MASK_FLDX_D)
+DECLARE_INSN(fstx_d, OP_FSTX_D, MASK_FSTX_D)
+DECLARE_INSN(fldgt_d, OP_FLDGT_D, MASK_FLDGT_D)
+DECLARE_INSN(fldle_d, OP_FLDLE_D, MASK_FLDLE_D)
+DECLARE_INSN(fstgt_d, OP_FSTGT_D, MASK_FSTGT_D)
+DECLARE_INSN(fstle_d, OP_FSTLE_D, MASK_FSTLE_D)
+
+/* loongarch float jmp instruction */
+DECLARE_INSN(bceqz, OP_BCEQZ, MASK_BCEQZ)
+DECLARE_INSN(bcnez, OP_BCNEZ, MASK_BCNEZ)
+
+/* loongarch jmp instruction */
+DECLARE_INSN(beqz, OP_BEQZ, MASK_BEQZ)
+DECLARE_INSN(bnez, OP_BNEZ, MASK_BNEZ)
+DECLARE_INSN(jirl, OP_JIRL, MASK_JIRL)
+DECLARE_INSN(b, OP_B, MASK_B)
+DECLARE_INSN(bl, OP_BL, MASK_BL)
+DECLARE_INSN(beq, OP_BEQ, MASK_BEQ)
+DECLARE_INSN(bne, OP_BNE, MASK_BNE)
+DECLARE_INSN(blt, OP_BLT, MASK_BLT)
+DECLARE_INSN(bge, OP_BGE, MASK_BGE)
+DECLARE_INSN(bltu, OP_BLTU, MASK_BLTU)
+DECLARE_INSN(bgeu, OP_BGEU, MASK_BGEU)
+
+#undef DECLARE_INSN
+
+static inline bool
+is_arithmetic_operation_insn (uint32_t insn)
+{
+  if (is_add_w_insn (insn)
+      || is_add_d_insn (insn)
+      || is_sub_w_insn (insn)
+      || is_sub_d_insn (insn)
+      || is_addi_w_insn (insn)
+      || is_addi_d_insn (insn)
+      || is_addu16i_d_insn (insn)
+      || is_alsl_w_insn (insn)
+      || is_alsl_wu_insn (insn)
+      || is_alsl_d_insn (insn)
+      || is_lu12i_w_insn (insn)
+      || is_lu32i_d_insn (insn)
+      || is_lu52i_d_insn (insn)
+      || is_slt_insn (insn)
+      || is_sltu_insn (insn)
+      || is_slti_insn (insn)
+      || is_sltui_insn (insn)
+      || is_pcaddi_insn (insn)
+      || is_pcaddu12i_insn (insn)
+      || is_pcaddu18i_insn (insn)
+      || is_pcalau12i_insn (insn)
+      || is_and_insn (insn)
+      || is_or_insn (insn)
+      || is_nor_insn (insn)
+      || is_xor_insn (insn)
+      || is_andn_insn (insn)
+      || is_orn_insn (insn)
+      || is_andi_insn (insn)
+      || is_ori_insn (insn)
+      || is_xori_insn (insn)
+      || is_mul_w_insn (insn)
+      || is_mul_d_insn (insn)
+      || is_mulh_w_insn (insn)
+      || is_mulh_wu_insn (insn)
+      || is_mulh_d_insn (insn)
+      || is_mulh_du_insn (insn)
+      || is_mulw_d_w_insn (insn)
+      || is_mulw_d_wu_insn (insn)
+      || is_div_w_insn (insn)
+      || is_div_wu_insn (insn)
+      || is_div_d_insn (insn)
+      || is_div_du_insn (insn)
+      || is_mod_w_insn (insn)
+      || is_mod_wu_insn (insn)
+      || is_mod_d_insn (insn)
+      || is_mod_du_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_bit_shift_insn (uint32_t insn)
+{
+  if (is_sll_w_insn (insn)
+      || is_srl_w_insn (insn)
+      || is_sra_w_insn (insn)
+      || is_rotr_w_insn (insn)
+      || is_slli_w_insn (insn)
+      || is_srli_w_insn (insn)
+      || is_srai_w_insn (insn)
+      || is_rotri_w_insn (insn)
+      || is_slli_d_insn (insn)
+      || is_srli_d_insn (insn)
+      || is_srai_d_insn (insn)
+      || is_rotri_d_insn (insn)
+      || is_sll_d_insn (insn)
+      || is_srl_d_insn (insn)
+      || is_sra_d_insn (insn)
+      || is_rotr_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_bit_manipulation_insn (uint32_t insn)
+{
+  if (is_clo_w_insn (insn)
+      || is_clz_w_insn (insn)
+      || is_cto_w_insn (insn)
+      || is_ctz_w_insn (insn)
+      || is_clo_d_insn (insn)
+      || is_clz_d_insn (insn)
+      || is_cto_d_insn (insn)
+      || is_ctz_d_insn (insn)
+      || is_ext_w_h_insn (insn)
+      || is_ext_w_b_insn (insn)
+      || is_bytepick_w_insn (insn)
+      || is_bytepick_d_insn (insn)
+      || is_revb_2h_insn (insn)
+      || is_revb_4h_insn (insn)
+      || is_revb_2w_insn (insn)
+      || is_revb_d_insn (insn)
+      || is_revh_2w_insn (insn)
+      || is_revh_d_insn (insn)
+      || is_bitrev_4b_insn (insn)
+      || is_bitrev_8b_insn (insn)
+      || is_bitrev_w_insn (insn)
+      || is_bitrev_d_insn (insn)
+      || is_bstrins_w_insn (insn)
+      || is_bstrpick_w_insn (insn)
+      || is_bstrins_d_insn (insn)
+      || is_bstrpick_d_insn (insn)
+      || is_maskeqz_insn (insn)
+      || is_masknez_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_load_insn (uint32_t insn)
+{
+  if (is_ld_b_insn (insn)
+      || is_ld_h_insn (insn)
+      || is_ld_w_insn (insn)
+      || is_ld_d_insn (insn)
+      || is_ld_bu_insn (insn)
+      || is_ld_hu_insn (insn)
+      || is_ld_wu_insn (insn)
+      || is_ldx_b_insn (insn)
+      || is_ldx_h_insn (insn)
+      || is_ldx_w_insn (insn)
+      || is_ldx_d_insn (insn)
+      || is_ldx_bu_insn (insn)
+      || is_ldx_hu_insn (insn)
+      || is_ldx_wu_insn (insn)
+      || is_ldptr_w_insn (insn)
+      || is_ldptr_d_insn (insn)
+      || is_ll_w_insn (insn)
+      || is_ll_d_insn (insn)
+      || is_llacq_w_insn (insn)
+      || is_llacq_d_insn (insn)
+      || is_vld_insn (insn)
+      || is_xvld_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_crc_check_insn (uint32_t insn)
+{
+  if (is_crc_w_b_w_insn (insn)
+      || is_crc_w_h_w_insn (insn)
+      || is_crc_w_w_w_insn (insn)
+      || is_crc_w_d_w_insn (insn)
+      || is_crcc_w_b_w_insn (insn)
+      || is_crcc_w_h_w_insn (insn)
+      || is_crcc_w_w_w_insn (insn)
+      || is_crcc_w_d_w_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_fr_to_gr_insn (uint32_t insn)
+{
+  if (is_movfr2gr_s_insn (insn)
+      || is_movfr2gr_d_insn (insn)
+      || is_movfrh2gr_s_insn (insn)
+      || is_movfcsr2gr_insn (insn)
+      || is_movcf2gr_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_data_process_insn (uint32_t insn)
+{
+  if (is_arithmetic_operation_insn (insn)
+      || is_bit_shift_insn (insn)
+      || is_bit_manipulation_insn (insn)
+      || is_load_insn (insn)
+      || is_crc_check_insn (insn)
+      || is_fr_to_gr_insn (insn)
+      || is_cpucfg_insn (insn)
+      || is_lddir_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_read_time_insn (uint32_t insn)
+{
+  if (is_rdtimel_w_insn (insn)
+      || is_rdtimeh_w_insn (insn)
+      || is_rdtime_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_float_arithmetic_operation_insn (uint32_t insn)
+{
+  if (is_fadd_s_insn (insn)
+      || is_fsub_s_insn (insn)
+      || is_fmul_s_insn (insn)
+      || is_fdiv_s_insn (insn)
+      || is_fadd_d_insn (insn)
+      || is_fsub_d_insn (insn)
+      || is_fmul_d_insn (insn)
+      || is_fdiv_d_insn (insn)
+      || is_fmadd_s_insn (insn)
+      || is_fmsub_s_insn (insn)
+      || is_fnmadd_s_insn (insn)
+      || is_fnmsub_s_insn (insn)
+      || is_fmadd_d_insn (insn)
+      || is_fmsub_d_insn (insn)
+      || is_fnmadd_d_insn (insn)
+      || is_fnmsub_d_insn (insn)
+      || is_fmax_s_insn (insn)
+      || is_fmin_s_insn (insn)
+      || is_fmax_d_insn (insn)
+      || is_fmin_d_insn (insn)
+      || is_fmaxa_s_insn (insn)
+      || is_fmina_s_insn (insn)
+      || is_fmaxa_d_insn (insn)
+      || is_fmina_d_insn (insn)
+      || is_fabs_s_insn (insn)
+      || is_fneg_s_insn (insn)
+      || is_fabs_d_insn (insn)
+      || is_fneg_d_insn (insn)
+      || is_fsqrt_s_insn (insn)
+      || is_frecip_s_insn (insn)
+      || is_frsqrt_s_insn (insn)
+      || is_fsqrt_d_insn (insn)
+      || is_frecip_d_insn (insn)
+      || is_frsqrt_d_insn (insn)
+      || is_fscaleb_s_insn (insn)
+      || is_flogb_s_insn (insn)
+      || is_fcopysign_s_insn (insn)
+      || is_fscaleb_d_insn (insn)
+      || is_flogb_d_insn (insn)
+      || is_fcopysign_d_insn (insn)
+      || is_fclass_s_insn (insn)
+      || is_fclass_d_insn (insn)
+      || is_frecipe_s_insn (insn)
+      || is_frsqrte_s_insn (insn)
+      || is_frecipe_d_insn (insn)
+      || is_frsqrte_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_float_comparison_insn (uint32_t insn)
+{
+  if (is_fcmp_caf_s_insn (insn)
+      || is_fcmp_cun_s_insn (insn)
+      || is_fcmp_ceq_s_insn (insn)
+      || is_fcmp_cueq_s_insn (insn)
+      || is_fcmp_clt_s_insn (insn)
+      || is_fcmp_cult_s_insn (insn)
+      || is_fcmp_cle_s_insn (insn)
+      || is_fcmp_cule_s_insn (insn)
+      || is_fcmp_cne_s_insn (insn)
+      || is_fcmp_cor_s_insn (insn)
+      || is_fcmp_cune_s_insn (insn)
+      || is_fcmp_saf_s_insn (insn)
+      || is_fcmp_sun_s_insn (insn)
+      || is_fcmp_seq_s_insn (insn)
+      || is_fcmp_sueq_s_insn (insn)
+      || is_fcmp_slt_s_insn (insn)
+      || is_fcmp_sult_s_insn (insn)
+      || is_fcmp_sle_s_insn (insn)
+      || is_fcmp_sule_s_insn (insn)
+      || is_fcmp_sne_s_insn (insn)
+      || is_fcmp_sor_s_insn (insn)
+      || is_fcmp_sune_s_insn (insn)
+      || is_fcmp_sgt_s_insn (insn)
+      || is_fcmp_sge_s_insn (insn)
+      || is_fcmp_cugt_s_insn (insn)
+      || is_fcmp_cuge_s_insn (insn)
+      || is_fcmp_caf_d_insn (insn)
+      || is_fcmp_cun_d_insn (insn)
+      || is_fcmp_ceq_d_insn (insn)
+      || is_fcmp_cueq_d_insn (insn)
+      || is_fcmp_clt_d_insn (insn)
+      || is_fcmp_cult_d_insn (insn)
+      || is_fcmp_cle_d_insn (insn)
+      || is_fcmp_cule_d_insn (insn)
+      || is_fcmp_cne_d_insn (insn)
+      || is_fcmp_cor_d_insn (insn)
+      || is_fcmp_cune_d_insn (insn)
+      || is_fcmp_saf_d_insn (insn)
+      || is_fcmp_sun_d_insn (insn)
+      || is_fcmp_seq_d_insn (insn)
+      || is_fcmp_sueq_d_insn (insn)
+      || is_fcmp_slt_d_insn (insn)
+      || is_fcmp_sult_d_insn (insn)
+      || is_fcmp_sle_d_insn (insn)
+      || is_fcmp_sule_d_insn (insn)
+      || is_fcmp_sne_d_insn (insn)
+      || is_fcmp_sor_d_insn (insn)
+      || is_fcmp_sune_d_insn (insn)
+      || is_fcmp_sgt_d_insn (insn)
+      || is_fcmp_sge_d_insn (insn)
+      || is_fcmp_cugt_d_insn (insn)
+      || is_fcmp_cuge_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_float_conversion_insn (uint32_t insn)
+{
+  if (is_fcvt_s_d_insn (insn)
+      || is_fcvt_d_s_insn (insn)
+      || is_ffint_s_w_insn (insn)
+      || is_ffint_s_l_insn (insn)
+      || is_ffint_d_w_insn (insn)
+      || is_ffint_d_l_insn (insn)
+      || is_ftint_w_s_insn (insn)
+      || is_ftint_l_s_insn (insn)
+      || is_ftint_w_d_insn (insn)
+      || is_ftint_l_d_insn (insn)
+      || is_ftintrm_w_s_insn (insn)
+      || is_ftintrm_l_s_insn (insn)
+      || is_ftintrp_w_s_insn (insn)
+      || is_ftintrp_l_s_insn (insn)
+      || is_ftintrz_w_s_insn (insn)
+      || is_ftintrz_l_s_insn (insn)
+      || is_ftintrne_w_s_insn (insn)
+      || is_ftintrne_l_s_insn (insn)
+      || is_ftintrm_w_d_insn (insn)
+      || is_ftintrm_l_d_insn (insn)
+      || is_ftintrp_w_d_insn (insn)
+      || is_ftintrp_l_d_insn (insn)
+      || is_ftintrz_w_d_insn (insn)
+      || is_ftintrz_l_d_insn (insn)
+      || is_ftintrne_w_d_insn (insn)
+      || is_ftintrne_l_d_insn (insn)
+      || is_frint_s_insn (insn)
+      || is_frint_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_float_mov_insn (uint32_t insn)
+{
+  if (is_fmov_s_insn (insn)
+      || is_fmov_d_insn (insn)
+      || is_fsel_insn (insn)
+      || is_movgr2fr_w_insn (insn)
+      || is_movgr2fr_d_insn (insn)
+      || is_movgr2frh_w_insn (insn)
+      || is_movgr2fcsr_insn (insn)
+      || is_movfr2cf_insn (insn)
+      || is_movcf2fr_insn (insn)
+      || is_movgr2cf_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_float_ld_insn (uint32_t insn)
+{
+  if (is_fld_s_insn (insn)
+      || is_fld_d_insn (insn)
+      || is_fldx_s_insn (insn)
+      || is_fldx_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_mov2cf_insn (uint32_t insn)
+{
+  if (is_movfr2cf_insn (insn)
+      || is_movgr2cf_insn (insn)
+      || is_float_comparison_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_float_insn (uint32_t insn)
+{
+  if (is_float_arithmetic_operation_insn (insn)
+      || is_float_conversion_insn (insn)
+      || is_float_mov_insn (insn)
+      || is_float_ld_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_store_insn (uint32_t insn)
+{
+  if (is_st_b_insn (insn)
+      || is_st_h_insn (insn)
+      || is_st_w_insn (insn)
+      || is_st_d_insn (insn)
+      || is_stx_b_insn (insn)
+      || is_stx_h_insn (insn)
+      || is_stx_w_insn (insn)
+      || is_stx_d_insn (insn)
+      || is_stptr_w_insn (insn)
+      || is_stptr_d_insn (insn)
+      || is_sc_w_insn (insn)
+      || is_sc_d_insn (insn)
+      || is_sc_q_insn (insn)
+      || is_screl_w_insn (insn)
+      || is_screl_d_insn (insn)
+      || is_fst_s_insn (insn)
+      || is_fst_d_insn (insn)
+      || is_fstx_s_insn (insn)
+      || is_fstx_d_insn (insn)
+      || is_vst_insn (insn)
+      || is_xvst_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_atomic_access_insn (uint32_t insn)
+{
+  if (is_amswap_w_insn (insn)
+      || is_amswap_d_insn (insn)
+      || is_amswap_db_w_insn (insn)
+      || is_amswap_db_d_insn (insn)
+      || is_amadd_w_insn (insn)
+      || is_amadd_d_insn (insn)
+      || is_amadd_db_w_insn (insn)
+      || is_amadd_db_d_insn (insn)
+      || is_amand_w_insn (insn)
+      || is_amand_d_insn (insn)
+      || is_amand_db_w_insn (insn)
+      || is_amand_db_d_insn (insn)
+      || is_amor_w_insn (insn)
+      || is_amor_d_insn (insn)
+      || is_amor_db_w_insn (insn)
+      || is_amor_db_d_insn (insn)
+      || is_amxor_w_insn (insn)
+      || is_amxor_d_insn (insn)
+      || is_amxor_db_w_insn (insn)
+      || is_amxor_db_d_insn (insn)
+      || is_ammax_w_insn (insn)
+      || is_ammax_d_insn (insn)
+      || is_ammax_db_w_insn (insn)
+      || is_ammax_db_d_insn (insn)
+      || is_ammin_w_insn (insn)
+      || is_ammin_d_insn (insn)
+      || is_ammin_db_w_insn (insn)
+      || is_ammin_db_d_insn (insn)
+      || is_ammax_wu_insn (insn)
+      || is_ammax_du_insn (insn)
+      || is_ammax_db_du_insn (insn)
+      || is_ammin_db_wu_insn (insn)
+      || is_ammin_wu_insn (insn)
+      || is_ammin_du_insn (insn)
+      || is_ammin_db_wu_insn (insn)
+      || is_ammin_db_du_insn (insn)
+      || is_amswap_b_insn (insn)
+      || is_amswap_h_insn (insn)
+      || is_amswap_db_b_insn (insn)
+      || is_amswap_db_h_insn (insn)
+      || is_amadd_b_insn (insn)
+      || is_amadd_h_insn (insn)
+      || is_amadd_db_b_insn (insn)
+      || is_amadd_db_h_insn (insn)
+      || is_amcas_b_insn (insn)
+      || is_amcas_h_insn (insn)
+      || is_amcas_w_insn (insn)
+      || is_amcas_d_insn (insn)
+      || is_amcas_db_b_insn (insn)
+      || is_amcas_db_h_insn (insn)
+      || is_amcas_db_w_insn (insn)
+      || is_amcas_db_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_basic_am_w_d_insn (uint32_t insn)
+{
+  if (is_amswap_w_insn (insn)
+      || is_amswap_d_insn (insn)
+      || is_amswap_db_w_insn (insn)
+      || is_amswap_db_d_insn (insn)
+      || is_amadd_w_insn (insn)
+      || is_amadd_d_insn (insn)
+      || is_amadd_db_w_insn (insn)
+      || is_amadd_db_d_insn (insn)
+      || is_amand_w_insn (insn)
+      || is_amand_d_insn (insn)
+      || is_amand_db_w_insn (insn)
+      || is_amand_db_d_insn (insn)
+      || is_amor_w_insn (insn)
+      || is_amor_d_insn (insn)
+      || is_amor_db_w_insn (insn)
+      || is_amor_db_d_insn (insn)
+      || is_amxor_w_insn (insn)
+      || is_amxor_d_insn (insn)
+      || is_amxor_db_w_insn (insn)
+      || is_amxor_db_d_insn (insn)
+      || is_ammax_w_insn (insn)
+      || is_ammax_d_insn (insn)
+      || is_ammax_db_w_insn (insn)
+      || is_ammax_db_d_insn (insn)
+      || is_ammin_w_insn (insn)
+      || is_ammin_d_insn (insn)
+      || is_ammin_db_w_insn (insn)
+      || is_ammin_db_d_insn (insn)
+      || is_ammax_wu_insn (insn)
+      || is_ammax_du_insn (insn)
+      || is_ammax_db_du_insn (insn)
+      || is_ammin_db_wu_insn (insn)
+      || is_ammin_wu_insn (insn)
+      || is_ammin_du_insn (insn)
+      || is_ammin_db_wu_insn (insn)
+      || is_ammin_db_du_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_am_b_h_insn (uint32_t insn)
+{
+  if (is_amswap_b_insn (insn)
+      || is_amswap_h_insn (insn)
+      || is_amswap_db_b_insn (insn)
+      || is_amswap_db_h_insn (insn)
+      || is_amadd_b_insn (insn)
+      || is_amadd_h_insn (insn)
+      || is_amadd_db_b_insn (insn)
+      || is_amadd_db_h_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_amswap_insn (uint32_t insn)
+{
+  if (is_amswap_w_insn (insn)
+      || is_amswap_d_insn (insn)
+      || is_amswap_db_w_insn (insn)
+      || is_amswap_db_d_insn (insn)
+      || is_amswap_b_insn (insn)
+      || is_amswap_h_insn (insn)
+      || is_amswap_db_b_insn (insn)
+      || is_amswap_db_h_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_amcas_insn (uint32_t insn)
+{
+  if (is_amcas_b_insn (insn)
+      || is_amcas_h_insn (insn)
+      || is_amcas_w_insn (insn)
+      || is_amcas_d_insn (insn)
+      || is_amcas_db_b_insn (insn)
+      || is_amcas_db_h_insn (insn)
+      || is_amcas_db_w_insn (insn)
+      || is_amcas_db_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_bound_check_load_insn (uint32_t insn)
+{
+  if (is_ldgt_b_insn (insn)
+      || is_ldgt_h_insn (insn)
+      || is_ldgt_w_insn (insn)
+      || is_ldgt_d_insn (insn)
+      || is_ldle_b_insn (insn)
+      || is_ldle_h_insn (insn)
+      || is_ldle_w_insn (insn)
+      || is_ldle_d_insn (insn)
+      || is_fldgt_s_insn (insn)
+      || is_fldle_s_insn (insn)
+      || is_fldgt_d_insn (insn)
+      || is_fldle_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_bound_check_store_insn (uint32_t insn)
+{
+  if (is_stgt_b_insn (insn)
+      || is_stgt_h_insn (insn)
+      || is_stgt_w_insn (insn)
+      || is_stgt_d_insn (insn)
+      || is_stle_b_insn (insn)
+      || is_stle_h_insn (insn)
+      || is_stle_w_insn (insn)
+      || is_stle_d_insn (insn)
+      || is_fstgt_s_insn (insn)
+      || is_fstle_s_insn (insn)
+      || is_fstgt_d_insn (insn)
+      || is_fstle_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_ldgt_insn (uint32_t insn)
+{
+  if (is_ldgt_b_insn (insn)
+      || is_ldgt_h_insn (insn)
+      || is_ldgt_w_insn (insn)
+      || is_ldgt_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_ldle_insn (uint32_t insn)
+{
+  if (is_ldle_b_insn (insn)
+      || is_ldle_h_insn (insn)
+      || is_ldle_w_insn (insn)
+      || is_ldle_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_fldgt_insn (uint32_t insn)
+{
+  if (is_fldgt_s_insn (insn)
+      || is_fldgt_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_fldle_insn (uint32_t insn)
+{
+  if (is_fldle_s_insn (insn)
+      || is_fldle_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_stgt_insn (uint32_t insn)
+{
+  if (is_stgt_b_insn (insn)
+      || is_stgt_h_insn (insn)
+      || is_stgt_w_insn (insn)
+      || is_stgt_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_stle_insn (uint32_t insn)
+{
+  if (is_stle_b_insn (insn)
+      || is_stle_h_insn (insn)
+      || is_stle_w_insn (insn)
+      || is_stle_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_fstgt_insn (uint32_t insn)
+{
+  if (is_fstgt_s_insn (insn)
+      || is_fstgt_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_fstle_insn (uint32_t insn)
+{
+  if (is_fstle_s_insn (insn)
+      || is_fstle_d_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_branch_insn (uint32_t insn)
+{
+  if (is_beqz_insn (insn)
+      || is_bnez_insn (insn)
+      || is_jirl_insn (insn)
+      || is_b_insn (insn)
+      || is_bl_insn (insn)
+      || is_beq_insn (insn)
+      || is_bne_insn (insn)
+      || is_blt_insn (insn)
+      || is_bge_insn (insn)
+      || is_bltu_insn (insn)
+      || is_bgeu_insn (insn)
+      || is_bceqz_insn (insn)
+      || is_bcnez_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+static inline bool
+is_special_insn (uint32_t insn)
+{
+  if (is_cacop_insn (insn)
+      || is_tlbsrch_insn (insn)
+      || is_tlbrd_insn (insn)
+      || is_tlbwr_insn (insn)
+      || is_tlbfill_insn (insn)
+      || is_tlbclr_insn (insn)
+      || is_tlbflush_insn (insn)
+      || is_invtlb_insn (insn)
+      || is_ldpte_insn (insn)
+      || is_ertn_insn (insn)
+      || is_idle_insn (insn)
+      || is_dbcl_insn (insn)
+      || is_preld_insn (insn)
+      || is_preldx_insn (insn)
+      || is_dbar_insn (insn)
+      || is_ibar_insn (insn))
+    return true;
+  else
+    return false;
+}
+
+#endif /* GDB_ARCH_LOONGARCH_INSN_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.20200303/gdb/arch/loongarch-syscall.h ./gdb/arch/loongarch-syscall.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/loongarch-syscall.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/loongarch-syscall.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,348 @@
+/* Target-dependent code for LoongArch
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 syscall number definitions are obtained from Linux kernel header file.
+   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h
+   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/loongarch/include/asm/unistd.h  */
+
+#ifndef GDB_ARCH_LOONGARCH_SYSCALL_H
+#define GDB_ARCH_LOONGARCH_SYSCALL_H
+
+enum loongarch_syscall
+{
+  loongarch_sys_io_setup = 0,
+  loongarch_sys_io_destroy = 1,
+  loongarch_sys_io_submit = 2,
+  loongarch_sys_io_cancel = 3,
+  loongarch_sys_io_getevents = 4,
+  loongarch_sys_setxattr = 5,
+  loongarch_sys_lsetxattr = 6,
+  loongarch_sys_fsetxattr = 7,
+  loongarch_sys_getxattr = 8,
+  loongarch_sys_lgetxattr = 9,
+  loongarch_sys_fgetxattr = 10,
+  loongarch_sys_listxattr = 11,
+  loongarch_sys_llistxattr = 12,
+  loongarch_sys_flistxattr = 13,
+  loongarch_sys_removexattr = 14,
+  loongarch_sys_lremovexattr = 15,
+  loongarch_sys_fremovexattr = 16,
+  loongarch_sys_getcwd = 17,
+  loongarch_sys_lookup_dcookie = 18,
+  loongarch_sys_eventfd2 = 19,
+  loongarch_sys_epoll_create1 = 20,
+  loongarch_sys_epoll_ctl = 21,
+  loongarch_sys_epoll_pwait = 22,
+  loongarch_sys_dup = 23,
+  loongarch_sys_dup3 = 24,
+  loongarch_sys_fcntl = 25,
+  loongarch_sys_inotify_init1 = 26,
+  loongarch_sys_inotify_add_watch = 27,
+  loongarch_sys_inotify_rm_watch = 28,
+  loongarch_sys_ioctl = 29,
+  loongarch_sys_ioprio_set = 30,
+  loongarch_sys_ioprio_get = 31,
+  loongarch_sys_flock = 32,
+  loongarch_sys_mknodat = 33,
+  loongarch_sys_mkdirat = 34,
+  loongarch_sys_unlinkat = 35,
+  loongarch_sys_symlinkat = 36,
+  loongarch_sys_linkat = 37,
+
+  loongarch_sys_umount2 = 39,
+  loongarch_sys_mount = 40,
+  loongarch_sys_pivot_root = 41,
+  loongarch_sys_nfsservctl = 42,
+  loongarch_sys_statfs = 43,
+  loongarch_sys_fstatfs = 44,
+  loongarch_sys_truncate = 45,
+  loongarch_sys_ftruncate = 46,
+  loongarch_sys_fallocate = 47,
+  loongarch_sys_faccessat = 48,
+  loongarch_sys_chdir = 49,
+  loongarch_sys_fchdir = 50,
+  loongarch_sys_chroot = 51,
+  loongarch_sys_fchmod = 52,
+  loongarch_sys_fchmodat = 53,
+  loongarch_sys_fchownat = 54,
+  loongarch_sys_fchown = 55,
+  loongarch_sys_openat = 56,
+  loongarch_sys_close = 57,
+  loongarch_sys_vhangup = 58,
+  loongarch_sys_pipe2 = 59,
+  loongarch_sys_quotactl = 60,
+  loongarch_sys_getdents64 = 61,
+  loongarch_sys_lseek = 62,
+  loongarch_sys_read = 63,
+  loongarch_sys_write = 64,
+  loongarch_sys_readv = 65,
+  loongarch_sys_writev = 66,
+  loongarch_sys_pread64 = 67,
+  loongarch_sys_pwrite64 = 68,
+  loongarch_sys_preadv = 69,
+  loongarch_sys_pwritev = 70,
+  loongarch_sys_sendfile = 71,
+  loongarch_sys_pselect6 = 72,
+  loongarch_sys_ppoll = 73,
+  loongarch_sys_signalfd4 = 74,
+  loongarch_sys_vmsplice = 75,
+  loongarch_sys_splice = 76,
+  loongarch_sys_tee = 77,
+  loongarch_sys_readlinkat = 78,
+  loongarch_sys_newfstatat = 79,
+  loongarch_sys_fstat = 80,
+  loongarch_sys_sync = 81,
+  loongarch_sys_fsync = 82,
+  loongarch_sys_fdatasync = 83,
+  loongarch_sys_sync_file_range = 84,
+  loongarch_sys_timerfd_create = 85,
+  loongarch_sys_timerfd_settime = 86,
+  loongarch_sys_timerfd_gettime = 87,
+  loongarch_sys_utimensat = 88,
+  loongarch_sys_acct = 89,
+  loongarch_sys_capget = 90,
+  loongarch_sys_capset = 91,
+  loongarch_sys_personality = 92,
+  loongarch_sys_exit = 93,
+  loongarch_sys_exit_group = 94,
+  loongarch_sys_waitid = 95,
+  loongarch_sys_set_tid_address = 96,
+  loongarch_sys_unshare = 97,
+  loongarch_sys_futex = 98,
+  loongarch_sys_set_robust_list = 99,
+  loongarch_sys_get_robust_list = 100,
+  loongarch_sys_nanosleep = 101,
+  loongarch_sys_getitimer = 102,
+  loongarch_sys_setitimer = 103,
+  loongarch_sys_kexec_load = 104,
+  loongarch_sys_init_module = 105,
+  loongarch_sys_delete_module = 106,
+  loongarch_sys_timer_create = 107,
+  loongarch_sys_timer_gettime = 108,
+  loongarch_sys_timer_getoverrun = 109,
+  loongarch_sys_timer_settime = 110,
+  loongarch_sys_timer_delete = 111,
+  loongarch_sys_clock_settime = 112,
+  loongarch_sys_clock_gettime = 113,
+  loongarch_sys_clock_getres = 114,
+  loongarch_sys_clock_nanosleep = 115,
+  loongarch_sys_syslog = 116,
+  loongarch_sys_ptrace = 117,
+  loongarch_sys_sched_setparam = 118,
+  loongarch_sys_sched_setscheduler = 119,
+  loongarch_sys_sched_getscheduler = 120,
+  loongarch_sys_sched_getparam = 121,
+  loongarch_sys_sched_setaffinity = 122,
+  loongarch_sys_sched_getaffinity = 123,
+  loongarch_sys_sched_yield = 124,
+  loongarch_sys_sched_get_priority_max = 125,
+  loongarch_sys_sched_get_priority_min = 126,
+  loongarch_sys_sched_rr_get_interval = 127,
+  loongarch_sys_restart_syscall = 128,
+  loongarch_sys_kill = 129,
+  loongarch_sys_tkill = 130,
+  loongarch_sys_tgkill = 131,
+  loongarch_sys_sigaltstack = 132,
+  loongarch_sys_rt_sigsuspend = 133,
+  loongarch_sys_rt_sigaction = 134,
+  loongarch_sys_rt_sigprocmask = 135,
+  loongarch_sys_rt_sigpending = 136,
+  loongarch_sys_rt_sigtimedwait = 137,
+  loongarch_sys_rt_sigqueueinfo = 138,
+  loongarch_sys_rt_sigreturn = 139,
+  loongarch_sys_setpriority = 140,
+  loongarch_sys_getpriority = 141,
+  loongarch_sys_reboot = 142,
+  loongarch_sys_setregid = 143,
+  loongarch_sys_setgid = 144,
+  loongarch_sys_setreuid = 145,
+  loongarch_sys_setuid = 146,
+  loongarch_sys_setresuid = 147,
+  loongarch_sys_getresuid = 148,
+  loongarch_sys_setresgid = 149,
+  loongarch_sys_getresgid = 150,
+  loongarch_sys_setfsuid = 151,
+  loongarch_sys_setfsgid = 152,
+  loongarch_sys_times = 153,
+  loongarch_sys_setpgid = 154,
+  loongarch_sys_getpgid = 155,
+  loongarch_sys_getsid = 156,
+  loongarch_sys_setsid = 157,
+  loongarch_sys_getgroups = 158,
+  loongarch_sys_setgroups = 159,
+  loongarch_sys_uname = 160,
+  loongarch_sys_sethostname = 161,
+  loongarch_sys_setdomainname = 162,
+
+  loongarch_sys_getrusage = 165,
+  loongarch_sys_umask = 166,
+  loongarch_sys_prctl = 167,
+  loongarch_sys_getcpu = 168,
+  loongarch_sys_gettimeofday = 169,
+  loongarch_sys_settimeofday = 170,
+  loongarch_sys_adjtimex = 171,
+  loongarch_sys_getpid = 172,
+  loongarch_sys_getppid = 173,
+  loongarch_sys_getuid = 174,
+  loongarch_sys_geteuid = 175,
+  loongarch_sys_getgid = 176,
+  loongarch_sys_getegid = 177,
+  loongarch_sys_gettid = 178,
+  loongarch_sys_sysinfo = 179,
+  loongarch_sys_mq_open = 180,
+  loongarch_sys_mq_unlink = 181,
+  loongarch_sys_mq_timedsend = 182,
+  loongarch_sys_mq_timedreceive = 183,
+  loongarch_sys_mq_notify = 184,
+  loongarch_sys_mq_getsetattr = 185,
+  loongarch_sys_msgget = 186,
+  loongarch_sys_msgctl = 187,
+  loongarch_sys_msgrcv = 188,
+  loongarch_sys_msgsnd = 189,
+  loongarch_sys_semget = 190,
+  loongarch_sys_semctl = 191,
+  loongarch_sys_semtimedop = 192,
+  loongarch_sys_semop = 193,
+  loongarch_sys_shmget = 194,
+  loongarch_sys_shmctl = 195,
+  loongarch_sys_shmat = 196,
+  loongarch_sys_shmdt = 197,
+  loongarch_sys_socket = 198,
+  loongarch_sys_socketpair = 199,
+  loongarch_sys_bind = 200,
+  loongarch_sys_listen = 201,
+  loongarch_sys_accept = 202,
+  loongarch_sys_connect = 203,
+  loongarch_sys_getsockname = 204,
+  loongarch_sys_getpeername = 205,
+  loongarch_sys_sendto = 206,
+  loongarch_sys_recvfrom = 207,
+  loongarch_sys_setsockopt = 208,
+  loongarch_sys_getsockopt = 209,
+  loongarch_sys_shutdown = 210,
+  loongarch_sys_sendmsg = 211,
+  loongarch_sys_recvmsg = 212,
+  loongarch_sys_readahead = 213,
+  loongarch_sys_brk = 214,
+  loongarch_sys_munmap = 215,
+  loongarch_sys_mremap = 216,
+  loongarch_sys_add_key = 217,
+  loongarch_sys_request_key = 218,
+  loongarch_sys_keyctl = 219,
+  loongarch_sys_clone = 220,
+  loongarch_sys_execve = 221,
+  loongarch_sys_mmap = 222,
+  loongarch_sys_fadvise64 = 223,
+  loongarch_sys_swapon = 224,
+  loongarch_sys_swapoff = 225,
+  loongarch_sys_mprotect = 226,
+  loongarch_sys_msync = 227,
+  loongarch_sys_mlock = 228,
+  loongarch_sys_munlock = 229,
+  loongarch_sys_mlockall = 230,
+  loongarch_sys_munlockall = 231,
+  loongarch_sys_mincore = 232,
+  loongarch_sys_madvise = 233,
+  loongarch_sys_remap_file_pages = 234,
+  loongarch_sys_mbind = 235,
+  loongarch_sys_get_mempolicy = 236,
+  loongarch_sys_set_mempolicy = 237,
+  loongarch_sys_migrate_pages = 238,
+  loongarch_sys_move_pages = 239,
+  loongarch_sys_rt_tgsigqueueinfo = 240,
+  loongarch_sys_perf_event_open = 241,
+  loongarch_sys_accept4 = 242,
+  loongarch_sys_recvmmsg = 243,
+  loongarch_sys_wait4 = 260,
+  loongarch_sys_prlimit64 = 261,
+  loongarch_sys_fanotify_init = 262,
+  loongarch_sys_fanotify_mark = 263,
+  loongarch_sys_name_to_handle_at = 264,
+  loongarch_sys_open_by_handle_at = 265,
+  loongarch_sys_clock_adjtime = 266,
+  loongarch_sys_syncfs = 267,
+  loongarch_sys_setns = 268,
+  loongarch_sys_sendmmsg = 269,
+  loongarch_sys_process_vm_readv = 270,
+  loongarch_sys_process_vm_writev = 271,
+  loongarch_sys_kcmp = 272,
+  loongarch_sys_finit_module = 273,
+  loongarch_sys_sched_setattr = 274,
+  loongarch_sys_sched_getattr = 275,
+  loongarch_sys_renameat2 = 276,
+  loongarch_sys_seccomp = 277,
+  loongarch_sys_getrandom = 278,
+  loongarch_sys_memfd_create = 279,
+  loongarch_sys_bpf = 280,
+  loongarch_sys_execveat = 281,
+  loongarch_sys_userfaultfd = 282,
+  loongarch_sys_membarrier = 283,
+  loongarch_sys_mlock2 = 284,
+  loongarch_sys_copy_file_range = 285,
+  loongarch_sys_preadv2 = 286,
+  loongarch_sys_pwritev2 = 287,
+  loongarch_sys_pkey_mprotect = 288,
+  loongarch_sys_pkey_alloc = 289,
+  loongarch_sys_pkey_free = 290,
+  loongarch_sys_statx = 291,
+  loongarch_sys_io_pgetevents = 292,
+  loongarch_sys_rseq = 293,
+  loongarch_sys_kexec_file_load = 294,
+
+  loongarch_sys_pidfd_send_signal = 424,
+  loongarch_sys_io_uring_setup = 425,
+  loongarch_sys_io_uring_enter = 426,
+  loongarch_sys_io_uring_register = 427,
+  loongarch_sys_open_tree = 428,
+  loongarch_sys_move_mount = 429,
+  loongarch_sys_fsopen = 430,
+  loongarch_sys_fsconfig = 431,
+  loongarch_sys_fsmount = 432,
+  loongarch_sys_fspick = 433,
+  loongarch_sys_pidfd_open = 434,
+  loongarch_sys_clone3 = 435,
+  loongarch_sys_close_range = 436,
+  loongarch_sys_openat2 = 437,
+  loongarch_sys_pidfd_getfd = 438,
+  loongarch_sys_faccessat2 = 439,
+  loongarch_sys_process_madvise = 440,
+  loongarch_sys_epoll_pwait2 = 441,
+  loongarch_sys_mount_setattr = 442,
+  loongarch_sys_quotactl_fd = 443,
+  loongarch_sys_landlock_create_ruleset = 444,
+  loongarch_sys_landlock_add_rule = 445,
+  loongarch_sys_landlock_restrict_self = 446,
+
+  loongarch_sys_process_mrelease = 448,
+  loongarch_sys_futex_waitv = 449,
+  loongarch_sys_set_mempolicy_home_node = 450,
+  loongarch_sys_cachestat = 451,
+  loongarch_sys_fchmodat2 = 452,
+  loongarch_sys_map_shadow_stack = 453,
+  loongarch_sys_futex_wake = 454,
+  loongarch_sys_futex_wait = 455,
+  loongarch_sys_futex_requeue = 456,
+  loongarch_sys_statmount = 457,
+  loongarch_sys_listmount = 458,
+  loongarch_sys_lsm_get_self_attr = 459,
+  loongarch_sys_lsm_set_self_attr = 460,
+  loongarch_sys_lsm_list_modules = 461,
+  loongarch_sys_mseal = 462,
+  loongarch_sys_syscalls = 463,
+};
+
+#endif /* GDB_ARCH_LOONGARCH_SYSCALL_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.20200303/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.20200303/gdb/arch/ppc-linux-common.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/ppc-linux-common.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "gdbsupport/common-defs.h"
 #include "arch/ppc-linux-common.h"
 #include "arch/ppc-linux-tdesc.h"
 
@@ -46,7 +45,7 @@ ppc_linux_has_isa205 (CORE_ADDR hwcap)
 const struct target_desc *
 ppc_linux_match_description (struct ppc_linux_features features)
 {
-  struct target_desc *tdesc = NULL;
+  const struct target_desc *tdesc = NULL;
 
   if (features.wordsize == 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.20200303/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.20200303/gdb/arch/ppc-linux-common.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/ppc-linux-common.h	2026-03-05 02:07:22.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-2025 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/>.  */
 
-#ifndef ARCH_PPC_LINUX_COMMON_H
-#define ARCH_PPC_LINUX_COMMON_H
+#ifndef GDB_ARCH_PPC_LINUX_COMMON_H
+#define GDB_ARCH_PPC_LINUX_COMMON_H
 
 struct target_desc;
 
@@ -75,4 +75,4 @@ const struct ppc_linux_features ppc_linu
 const struct target_desc * ppc_linux_match_description
 (struct ppc_linux_features features);
 
-#endif /* ARCH_PPC_LINUX_COMMON_H */
+#endif /* GDB_ARCH_PPC_LINUX_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.20200303/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.20200303/gdb/arch/ppc-linux-tdesc.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/ppc-linux-tdesc.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,30 +17,30 @@
    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_PPC_LINUX_TDESC_H
-#define ARCH_PPC_LINUX_TDESC_H
+#ifndef GDB_ARCH_PPC_LINUX_TDESC_H
+#define GDB_ARCH_PPC_LINUX_TDESC_H
 
 struct target_desc;
 
-extern struct target_desc *tdesc_powerpc_32l;
-extern struct target_desc *tdesc_powerpc_altivec32l;
-extern struct target_desc *tdesc_powerpc_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa205_32l;
-extern struct target_desc *tdesc_powerpc_isa205_altivec32l;
-extern struct target_desc *tdesc_powerpc_isa205_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa207_vsx32l;
-extern struct target_desc *tdesc_powerpc_isa207_htm_vsx32l;
-extern struct target_desc *tdesc_powerpc_e500l;
-
-extern struct target_desc *tdesc_powerpc_64l;
-extern struct target_desc *tdesc_powerpc_altivec64l;
-extern struct target_desc *tdesc_powerpc_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa205_64l;
-extern struct target_desc *tdesc_powerpc_isa205_altivec64l;
-extern struct target_desc *tdesc_powerpc_isa205_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa207_vsx64l;
-extern struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
+extern const struct target_desc *tdesc_powerpc_32l;
+extern const struct target_desc *tdesc_powerpc_altivec32l;
+extern const struct target_desc *tdesc_powerpc_vsx32l;
+extern const struct target_desc *tdesc_powerpc_isa205_32l;
+extern const struct target_desc *tdesc_powerpc_isa205_altivec32l;
+extern const struct target_desc *tdesc_powerpc_isa205_vsx32l;
+extern const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx32l;
+extern const struct target_desc *tdesc_powerpc_isa207_vsx32l;
+extern const struct target_desc *tdesc_powerpc_isa207_htm_vsx32l;
+extern const struct target_desc *tdesc_powerpc_e500l;
+
+extern const struct target_desc *tdesc_powerpc_64l;
+extern const struct target_desc *tdesc_powerpc_altivec64l;
+extern const struct target_desc *tdesc_powerpc_vsx64l;
+extern const struct target_desc *tdesc_powerpc_isa205_64l;
+extern const struct target_desc *tdesc_powerpc_isa205_altivec64l;
+extern const struct target_desc *tdesc_powerpc_isa205_vsx64l;
+extern const struct target_desc *tdesc_powerpc_isa205_ppr_dscr_vsx64l;
+extern const struct target_desc *tdesc_powerpc_isa207_vsx64l;
+extern const struct target_desc *tdesc_powerpc_isa207_htm_vsx64l;
 
-#endif /* ARCH_PPC_LINUX_TDESC_H */
+#endif /* GDB_ARCH_PPC_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.20200303/gdb/arch/riscv.c ./gdb/arch/riscv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/riscv.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/riscv.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2018-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2018-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,55 +15,39 @@
    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 "riscv.h"
-#include <stdlib.h>
 #include <unordered_map>
 
 #include "../features/riscv/32bit-cpu.c"
 #include "../features/riscv/64bit-cpu.c"
 #include "../features/riscv/32bit-fpu.c"
 #include "../features/riscv/64bit-fpu.c"
+#include "../features/riscv/rv32e-xregs.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_up
+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 ();
+  target_desc_up tdesc = allocate_target_description ();
 
 #ifndef IN_PROCESS_AGENT
   std::string arch_name = "riscv";
 
   if (features.xlen == 4)
-    arch_name.append (":rv32i");
+    {
+      if (features.embedded)
+	arch_name.append (":rv32e");
+      else
+	arch_name.append (":rv32i");
+    }
   else if (features.xlen == 8)
     arch_name.append (":rv64i");
   else if (features.xlen == 16)
@@ -76,25 +60,75 @@ riscv_create_target_description (struct
   else if (features.flen == 16)
     arch_name.append ("q");
 
-  set_tdesc_architecture (tdesc, arch_name.c_str ());
+  set_tdesc_architecture (tdesc.get (), arch_name.c_str ());
 #endif
 
   long regnum = 0;
 
   /* For now we only support creating 32-bit or 64-bit x-registers.  */
   if (features.xlen == 4)
-    regnum = create_feature_riscv_32bit_cpu (tdesc, regnum);
+    {
+      if (features.embedded)
+	regnum = create_feature_riscv_rv32e_xregs (tdesc.get (), regnum);
+      else
+	regnum = create_feature_riscv_32bit_cpu (tdesc.get (), regnum);
+    }
   else if (features.xlen == 8)
-    regnum = create_feature_riscv_64bit_cpu (tdesc, regnum);
+    regnum = create_feature_riscv_64bit_cpu (tdesc.get (), regnum);
 
   /* For now we only support creating 32-bit or 64-bit f-registers.  */
   if (features.flen == 4)
-    regnum = create_feature_riscv_32bit_fpu (tdesc, regnum);
+    regnum = create_feature_riscv_32bit_fpu (tdesc.get (), regnum);
   else if (features.flen == 8)
-    regnum = create_feature_riscv_64bit_fpu (tdesc, regnum);
+    regnum = create_feature_riscv_64bit_fpu (tdesc.get (), regnum);
 
-  /* Add to the cache.  */
-  riscv_tdesc_cache.emplace (features, tdesc);
+  /* Currently GDB only supports vector features coming from remote
+     targets.  We don't support creating vector features on native targets
+     (yet).  */
+  if (features.vlen != 0)
+    error (_("unable to create vector feature"));
 
   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_up tdesc (riscv_create_target_description (features));
+
+  /* Add to the cache, and return a pointer borrowed from the
+     target_desc_up.  This is safe as the cache (and the pointers
+     contained within it) are not deleted until GDB exits.  */
+  target_desc *ptr = tdesc.get ();
+  riscv_tdesc_cache.emplace (features, std::move (tdesc));
+  return ptr;
+}
+
+#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.20200303/gdb/arch/riscv.h ./gdb/arch/riscv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/riscv.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/riscv.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Common target-dependent functionality for RISC-V
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2025 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/>.  */
 
-#ifndef ARCH_RISCV_H
-#define ARCH_RISCV_H
+#ifndef GDB_ARCH_RISCV_H
+#define GDB_ARCH_RISCV_H
 
 #include "gdbsupport/tdesc.h"
 
@@ -46,10 +46,33 @@ struct riscv_gdbarch_features
      that there are no f-registers.  No other value is valid.  */
   int flen = 0;
 
+  /* The size of the v-registers in bytes.  The value 0 indicates a target
+     with no vector registers.  The minimum value for a 'V'-extension compliant
+     target should be 16 and 4 for an embedded subset compliant target (with
+     'Zve32*' extension), but GDB doesn't currently mind, and will accept any
+     vector size.  */
+  int vlen = 0;
+
+  /* When true this target is RV32E.  */
+  bool embedded = false;
+
+  /* Track if the target description has an fcsr, fflags, and frm
+     registers.  Some targets provide all these in their target
+     descriptions, while some only offer fcsr, while others don't even
+     offer that register.  If a target provides fcsr but not fflags and/or
+     frm, then we can emulate these registers as pseudo registers.  */
+  bool has_fcsr_reg = false;
+  bool has_fflags_reg = false;
+  bool has_frm_reg = false;
+
   /* Equality operator.  */
   bool operator== (const struct riscv_gdbarch_features &rhs) const
   {
-    return (xlen == rhs.xlen && flen == rhs.flen);
+    return (xlen == rhs.xlen && flen == rhs.flen
+	    && embedded == rhs.embedded && vlen == rhs.vlen
+	    && has_fflags_reg == rhs.has_fflags_reg
+	    && has_frm_reg == rhs.has_frm_reg
+	    && has_fcsr_reg == rhs.has_fcsr_reg);
   }
 
   /* Inequality operator.  */
@@ -61,15 +84,39 @@ struct riscv_gdbarch_features
   /* Used by std::unordered_map to hash feature sets.  */
   std::size_t hash () const noexcept
   {
-    std::size_t val = ((xlen & 0x1f) << 5 | (flen & 0x1f) << 0);
+    std::size_t val = ((embedded ? 1 : 0) << 10
+		       | (has_fflags_reg ? 1 : 0) << 11
+		       | (has_frm_reg ? 1 : 0) << 12
+		       | (has_fcsr_reg ? 1 : 0) << 13
+		       | (xlen & 0x1f) << 5
+		       | (flen & 0x1f) << 0
+		       | (vlen & 0x3fff) << 14);
     return val;
   }
 };
 
-/* 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_up 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 */
+#endif /* GDB_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.20200303/gdb/arch/tic6x.c ./gdb/arch/tic6x.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/tic6x.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/tic6x.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,8 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "gdbsupport/tdesc.h"
+#include "gdbsupport/osabi.h"
 #include "tic6x.h"
-#include "gdbsupport/common-defs.h"
 
 #include "../features/tic6x-core.c"
 #include "../features/tic6x-gp.c"
@@ -28,20 +28,20 @@
 target_desc *
 tic6x_create_target_description (enum c6x_feature feature)
 {
-  target_desc *tdesc = allocate_target_description ();
+  target_desc_up tdesc = allocate_target_description ();
 
-  set_tdesc_architecture (tdesc, "tic6x");
-  set_tdesc_osabi (tdesc, "GNU/Linux");
+  set_tdesc_architecture (tdesc.get (), "tic6x");
+  set_tdesc_osabi (tdesc.get (), GDB_OSABI_LINUX);
 
   long regnum = 0;
 
-  regnum = create_feature_tic6x_core (tdesc, regnum);
+  regnum = create_feature_tic6x_core (tdesc.get (), regnum);
 
   if (feature == C6X_GP || feature == C6X_C6XP)
-    regnum = create_feature_tic6x_gp (tdesc, regnum);
+    regnum = create_feature_tic6x_gp (tdesc.get (), regnum);
 
   if (feature == C6X_C6XP)
-    regnum = create_feature_tic6x_c6xp (tdesc, regnum);
+    regnum = create_feature_tic6x_c6xp (tdesc.get (), regnum);
 
-  return tdesc;
+  return tdesc.release ();
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/tic6x.h ./gdb/arch/tic6x.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/tic6x.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/tic6x.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,8 +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/>.  */
 
-#ifndef ARCH_TIC6X_H
-#define ARCH_TIC6X_H
+#ifndef GDB_ARCH_TIC6X_H
+#define GDB_ARCH_TIC6X_H
 
 enum c6x_feature
 {
@@ -28,4 +28,4 @@ enum c6x_feature
 
 target_desc *tic6x_create_target_description (enum c6x_feature feature);
 
-#endif /* ARCH_TIC6X_H */
+#endif /* GDB_ARCH_TIC6X_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.20200303/gdb/arch/x86-linux-tdesc-features.c ./gdb/arch/x86-linux-tdesc-features.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/x86-linux-tdesc-features.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/x86-linux-tdesc-features.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,270 @@
+/* Target description related code for GNU/Linux x86 (i386 and x86-64).
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arch/x86-linux-tdesc-features.h"
+
+/* A structure used to describe a single xstate feature bit that might, or
+   might not, be checked for when creating a target description for one of
+   i386, amd64, or x32.
+
+   The different CPU/ABI types check for different xstate features when
+   creating a target description.
+
+   We want to cache target descriptions, and this is currently done in
+   three separate caches, one each for i386, amd64, and x32.  Additionally,
+   the caching we're discussing here is Linux only.  Currently for Linux,
+   the only thing that has an impact on target description creation are
+   the supported features in xsave which are modelled by a xstate_bv
+   value, which has the same format than the state component bitmap.
+
+   In order to ensure the cache functions correctly we need to filter only
+   those xstate_bv feature bits that are relevant, we can then cache
+   target descriptions based on the relevant feature bits.  Two xstate_bv
+   values might be different, but have the same relevant feature bits.  In
+   this case we would expect the two xstate_bv values to map to the same
+   cache entry.  */
+
+struct x86_xstate_feature {
+  /* The xstate feature mask.  This is a mask against the state component
+     bitmap.  */
+  uint64_t feature;
+
+  /* Is this feature checked when creating an i386 target description.  */
+  bool is_i386;
+
+  /* Is this feature checked when creating an amd64 target description.  */
+  bool is_amd64;
+
+  /* Is this feature checked when creating an x32 target description.  */
+  bool is_x32;
+};
+
+/* A constant table that describes all of the xstate features that are
+   checked when building a target description for i386, amd64, or x32.
+
+   If in the future, due to simplifications or refactoring, this table ever
+   ends up with 'true' for every xsave feature on every target type, then
+   this is an indication that this table should probably be removed, and
+   that the rest of the code in this file can be simplified.  */
+
+static constexpr x86_xstate_feature x86_linux_all_xstate_features[] = {
+  /* Feature,           i386,	amd64,	x32.  */
+  { X86_XSTATE_CET_U,	false,	true, 	true },
+  { X86_XSTATE_PKRU,	true,	true, 	true },
+  { X86_XSTATE_AVX512,	true,	true, 	true },
+  { X86_XSTATE_AVX,	true,	true, 	true },
+  { X86_XSTATE_SSE,	true,	false, 	false },
+  { X86_XSTATE_X87,	true,	false, 	false }
+};
+
+/* Return a compile time constant which is a mask of all the xstate features
+   that are checked for when building an i386 target description.  */
+
+static constexpr uint64_t
+x86_linux_i386_xstate_bv_feature_mask_1 ()
+{
+  uint64_t mask = 0;
+
+  for (const auto &entry : x86_linux_all_xstate_features)
+    if (entry.is_i386)
+      mask |= entry.feature;
+
+  return mask;
+}
+
+/* Return a compile time constant which is a mask of all the xstate features
+   that are checked for when building an amd64 target description.  */
+
+static constexpr uint64_t
+x86_linux_amd64_xstate_bv_feature_mask_1 ()
+{
+  uint64_t mask = 0;
+
+  for (const auto &entry : x86_linux_all_xstate_features)
+    if (entry.is_amd64)
+      mask |= entry.feature;
+
+  return mask;
+}
+
+/* Return a compile time constant which is a mask of all the xstate features
+   that are checked for when building an x32 target description.  */
+
+static constexpr uint64_t
+x86_linux_x32_xstate_bv_feature_mask_1 ()
+{
+  uint64_t mask = 0;
+
+  for (const auto &entry : x86_linux_all_xstate_features)
+    if (entry.is_x32)
+      mask |= entry.feature;
+
+  return mask;
+}
+
+/* See arch/x86-linux-tdesc-features.h.  */
+
+uint64_t
+x86_linux_i386_xstate_bv_feature_mask ()
+{
+  return x86_linux_i386_xstate_bv_feature_mask_1 ();
+}
+
+/* See arch/x86-linux-tdesc-features.h.  */
+
+uint64_t
+x86_linux_amd64_xstate_bv_feature_mask ()
+{
+  return x86_linux_amd64_xstate_bv_feature_mask_1 ();
+}
+
+/* See arch/x86-linux-tdesc-features.h.  */
+
+uint64_t
+x86_linux_x32_xstate_bv_feature_mask ()
+{
+  return x86_linux_x32_xstate_bv_feature_mask_1 ();
+}
+
+#ifdef GDBSERVER
+
+/* See arch/x86-linux-tdesc-features.h.  */
+
+int
+x86_linux_xstate_bv_to_tdesc_idx (uint64_t xstate_bv)
+{
+  /* The following table shows which features are checked for when creating
+     the target descriptions (see nat/x86-linux-tdesc.c), the feature order
+     represents the bit order within the generated index number.
+
+     i386  | x87 sse avx avx512 pkru
+     amd64 |         avx avx512 pkru
+     i32   |         avx avx512 pkru
+
+     The features are ordered so that for each mode (i386, amd64, i32) the
+     generated index will form a continuous range.  */
+
+  int idx = 0;
+
+  for (int i = 0; i < ARRAY_SIZE (x86_linux_all_xstate_features); ++i)
+    {
+      if ((xstate_bv & x86_linux_all_xstate_features[i].feature)
+	  == x86_linux_all_xstate_features[i].feature)
+	idx |= (1 << i);
+    }
+
+  return idx;
+}
+
+#endif /* GDBSERVER */
+
+#ifdef IN_PROCESS_AGENT
+
+/* Return a compile time constant which is a count of the number of xstate
+   features that are checked for when building an i386 target description.  */
+
+static constexpr int
+x86_linux_i386_tdesc_count_1 ()
+{
+  uint64_t count = 0;
+
+  for (const auto &entry : x86_linux_all_xstate_features)
+    if (entry.is_i386)
+      ++count;
+
+  gdb_assert (count > 0);
+
+  return (1 << count);
+}
+
+/* Return a compile time constant which is a count of the number of xstate
+   features that are checked for when building an amd64 target description.  */
+
+static constexpr int
+x86_linux_amd64_tdesc_count_1 ()
+{
+  uint64_t count = 0;
+
+  for (const auto &entry : x86_linux_all_xstate_features)
+    if (entry.is_amd64)
+      ++count;
+
+  gdb_assert (count > 0);
+
+  return (1 << count);
+}
+
+/* Return a compile time constant which is a count of the number of xstate
+   features that are checked for when building an x32 target description.  */
+
+static constexpr int
+x86_linux_x32_tdesc_count_1 ()
+{
+  uint64_t count = 0;
+
+  for (const auto &entry : x86_linux_all_xstate_features)
+    if (entry.is_x32)
+      ++count;
+
+  gdb_assert (count > 0);
+
+  return (1 << count);
+}
+
+/* See arch/x86-linux-tdesc-features.h.  */
+
+int
+x86_linux_amd64_tdesc_count ()
+{
+  return x86_linux_amd64_tdesc_count_1 ();
+}
+
+/* See arch/x86-linux-tdesc-features.h.  */
+
+int
+x86_linux_x32_tdesc_count ()
+{
+  return x86_linux_x32_tdesc_count_1 ();
+}
+
+/* See arch/x86-linux-tdesc-features.h.  */
+
+int
+x86_linux_i386_tdesc_count ()
+{
+  return x86_linux_i386_tdesc_count_1 ();
+}
+
+/* See arch/x86-linux-tdesc-features.h.  */
+
+uint64_t
+x86_linux_tdesc_idx_to_xstate_bv (int idx)
+{
+  uint64_t xstate_bv = 0;
+
+  for (int i = 0; i < ARRAY_SIZE (x86_linux_all_xstate_features); ++i)
+    {
+      if ((idx & (1 << i)) != 0)
+	xstate_bv |= x86_linux_all_xstate_features[i].feature;
+    }
+
+  return xstate_bv;
+}
+
+#endif /* IN_PROCESS_AGENT */
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/x86-linux-tdesc-features.h ./gdb/arch/x86-linux-tdesc-features.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/x86-linux-tdesc-features.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/x86-linux-tdesc-features.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,67 @@
+/* Target description related code for GNU/Linux x86 (i386 and x86-64).
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_X86_LINUX_TDESC_FEATURES_H
+#define GDB_ARCH_X86_LINUX_TDESC_FEATURES_H
+
+#include "gdbsupport/x86-xstate.h"
+#include "gdbsupport/gdb_assert.h"
+
+/* Return a mask of X86_STATE_* feature flags.  The returned mask indicates
+   the set of features which are checked for when creating the target
+   description for each of amd64, x32, and i386.  */
+
+extern uint64_t x86_linux_amd64_xstate_bv_feature_mask ();
+extern uint64_t x86_linux_x32_xstate_bv_feature_mask ();
+extern uint64_t x86_linux_i386_xstate_bv_feature_mask ();
+
+#ifdef GDBSERVER
+
+/* Convert an XSTATE_BV value into an integer.  XSTATE_BV has the same
+   format than the state component bitmap and does include user and
+   supervisor state components.  The integer will be passed from gdbserver
+   to the in-process-agent where it will then be passed through
+   x86_linux_tdesc_idx_to_xstate_bv to get back the original value.  */
+
+
+extern int x86_linux_xstate_bv_to_tdesc_idx (uint64_t xstate_bv);
+
+#endif /* GDBSERVER */
+
+#ifdef IN_PROCESS_AGENT
+
+/* Return the maximum possible number of target descriptions for each of
+   amd64, x32, and i386.  These are used by the in-process-agent to
+   generate every possible target description.  */
+
+extern int x86_linux_amd64_tdesc_count ();
+extern int x86_linux_x32_tdesc_count ();
+extern int x86_linux_i386_tdesc_count ();
+
+/* Convert an index number (as returned from
+   x86_linux_xstate_bv_to_tdesc_idx) into an xstate_bv value which can
+   then be used to create a target description.
+   The return mask has the same format than the state component bitmap
+   and does include user and supervisor state components.  */
+
+extern uint64_t x86_linux_tdesc_idx_to_xstate_bv (int idx);
+
+#endif /* IN_PROCESS_AGENT */
+
+#endif /* GDB_ARCH_X86_LINUX_TDESC_FEATURES_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.20200303/gdb/arch/x86-linux-tdesc.h ./gdb/arch/x86-linux-tdesc.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/x86-linux-tdesc.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arch/x86-linux-tdesc.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,37 @@
+/* Target description related code for GNU/Linux x86 (i386 and x86-64).
+
+   Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARCH_X86_LINUX_TDESC_H
+#define GDB_ARCH_X86_LINUX_TDESC_H
+
+struct target_desc;
+
+/* This function is called from amd64_linux_read_description and
+   i386_linux_read_description after a new target description has been
+   created, TDESC is the new target description, IS_64BIT will be true
+   when called from amd64_linux_read_description, otherwise IS_64BIT will
+   be false.  If the *_linux_read_description functions found a cached
+   target description then this function will not be called.
+
+   Both GDB and gdbserver have their own implementations of this
+   function.  */
+
+extern void x86_linux_post_init_tdesc (target_desc *tdesc, bool is_64bit);
+
+#endif /* GDB_ARCH_X86_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.20200303/gdb/arch/xtensa.h ./gdb/arch/xtensa.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch/xtensa.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch/xtensa.h	2026-03-05 02:07:22.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-2025 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/>.  */
 
-#ifndef ARCH_XTENSA_H
-#define ARCH_XTENSA_H
+#ifndef GDB_ARCH_XTENSA_H
+#define GDB_ARCH_XTENSA_H
 
 /* Xtensa ELF core file register set representation ('.reg' section).
    Copied from target-side ELF header <xtensa/elf.h>.  */
@@ -45,4 +45,4 @@ typedef struct
 
 #define C0_NREGS   16	/* Number of A-registers to track in call0 ABI.  */
 
-#endif /* ARCH_XTENSA_H */
+#endif /* GDB_ARCH_XTENSA_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.20200303/gdb/arch-utils.c ./gdb/arch-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch-utils.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch-utils.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,11 +17,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/>.  */
 
-#include "defs.h"
 
 #include "arch-utils.h"
-#include "gdbcmd.h"
-#include "inferior.h"		/* enum CALL_DUMMY_LOCATION et al.  */
+#include "extract-store-integer.h"
+#include "cli/cli-cmds.h"
+#include "inferior.h"
 #include "infrun.h"
 #include "regcache.h"
 #include "sim-regno.h"
@@ -31,6 +31,13 @@
 #include "objfiles.h"
 #include "language.h"
 #include "symtab.h"
+#include "dummy-frame.h"
+#include "frame-unwind.h"
+#include "reggroups.h"
+#include "auxv.h"
+#include "observable.h"
+#include "solib-target.h"
+#include "event-top.h"
 
 #include "gdbsupport/version.h"
 
@@ -38,11 +45,10 @@
 
 #include "dis-asm.h"
 
-int
-default_displaced_step_hw_singlestep (struct gdbarch *gdbarch,
-				      struct displaced_step_closure *closure)
+bool
+default_displaced_step_hw_singlestep (struct gdbarch *gdbarch)
 {
-  return !gdbarch_software_single_step_p (gdbarch);
+  return !gdbarch_get_next_pcs_p (gdbarch);
 }
 
 CORE_ADDR
@@ -51,7 +57,7 @@ displaced_step_at_entry_point (struct gd
   CORE_ADDR addr;
   int bp_len;
 
-  addr = entry_point_address ();
+  addr = entry_point_address (current_program_space);
 
   /* Inferior calls also use the entry point as a breakpoint location.
      We don't want displaced stepping to interfere with those
@@ -69,17 +75,73 @@ legacy_register_sim_regno (struct gdbarc
   gdb_assert (regnum >= 0 && regnum < gdbarch_num_regs (gdbarch));
   /* NOTE: cagney/2002-05-13: The old code did it this way and it is
      suspected that some GDB/SIM combinations may rely on this
-     behaviour.  The default should be one2one_register_sim_regno
+     behavior.  The default should be one2one_register_sim_regno
      (below).  */
-  if (gdbarch_register_name (gdbarch, regnum) != NULL
-      && gdbarch_register_name (gdbarch, regnum)[0] != '\0')
+  if (gdbarch_register_name (gdbarch, regnum)[0] != '\0')
     return regnum;
   else
     return LEGACY_SIM_REGNO_IGNORE;
 }
 
+/* See arch-utils.h */
+
+CORE_ADDR
+default_remove_non_address_bits (struct gdbarch *gdbarch, CORE_ADDR pointer)
+{
+  /* By default, just return the pointer value.  */
+  return pointer;
+}
+
+/* See arch-utils.h */
+
+std::string
+default_memtag_to_string (struct gdbarch *gdbarch, struct value *tag)
+{
+  error (_("This architecture has no method to convert a memory tag to"
+	   " a string."));
+}
+
+/* See arch-utils.h */
+
+bool
+default_tagged_address_p (struct gdbarch *gdbarch, CORE_ADDR address)
+{
+  /* By default, assume the address is untagged.  */
+  return false;
+}
+
+/* See arch-utils.h */
+
+bool
+default_memtag_matches_p (struct gdbarch *gdbarch, struct value *address)
+{
+  /* By default, assume the tags match.  */
+  return true;
+}
+
+/* See arch-utils.h */
+
+bool
+default_set_memtags (struct gdbarch *gdbarch, struct value *address,
+		     size_t length, const gdb::byte_vector &tags,
+		     memtag_type tag_type)
+{
+  /* By default, return true (successful);  */
+  return true;
+}
+
+/* See arch-utils.h */
+
+struct value *
+default_get_memtag (struct gdbarch *gdbarch, struct value *address,
+		    memtag_type tag_type)
+{
+  /* By default, return no tag.  */
+  return nullptr;
+}
+
 CORE_ADDR
-generic_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
+generic_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
 {
   return 0;
 }
@@ -105,23 +167,23 @@ generic_stack_frame_destroyed_p (struct
 
 int
 default_code_of_frame_writable (struct gdbarch *gdbarch,
-				struct frame_info *frame)
+				const frame_info_ptr &frame)
 {
   return 1;
 }
 
 /* Helper functions for gdbarch_inner_than */
 
-int
+bool
 core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs)
 {
-  return (lhs < rhs);
+  return lhs < rhs;
 }
 
-int
+bool
 core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs)
 {
-  return (lhs > rhs);
+  return lhs > rhs;
 }
 
 /* Misc helper functions for targets.  */
@@ -211,13 +273,12 @@ legacy_virtual_frame_pointer (struct gdb
     *frame_regnum = gdbarch_deprecated_fp_regnum (gdbarch);
   else if (gdbarch_sp_regnum (gdbarch) >= 0
 	   && gdbarch_sp_regnum (gdbarch)
-	        < gdbarch_num_regs (gdbarch))
+		< gdbarch_num_regs (gdbarch))
     *frame_regnum = gdbarch_sp_regnum (gdbarch);
   else
     /* Should this be an internal error?  I guess so, it is reflecting
        an architectural limitation in the current design.  */
-    internal_error (__FILE__, __LINE__, 
-		    _("No virtual frame pointer available"));
+    internal_error (_("No virtual frame pointer available"));
   *frame_offset = 0;
 }
 
@@ -231,7 +292,13 @@ default_floatformat_for_type (struct gdb
 {
   const struct floatformat **format = NULL;
 
-  if (len == gdbarch_half_bit (gdbarch))
+  /* Check if this is a bfloat16 type.  It has the same size as the
+     IEEE half float type, so we use the base type name to tell them
+     apart.  */
+  if (name != nullptr && strcmp (name, "__bf16") == 0
+      && len == gdbarch_bfloat16_bit (gdbarch))
+    format = gdbarch_bfloat16_format (gdbarch);
+  else if (len == gdbarch_half_bit (gdbarch))
     format = gdbarch_half_format (gdbarch);
   else if (len == gdbarch_float_bit (gdbarch))
     format = gdbarch_float_format (gdbarch);
@@ -300,7 +367,7 @@ static const char *const endian_enum[] =
   endian_auto,
   NULL,
 };
-static const char *set_endian_string;
+static const char *set_endian_string = endian_auto;
 
 enum bfd_endian
 selected_byte_order (void)
@@ -316,18 +383,18 @@ 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"));
+      gdb_printf (file, _("The target endianness is set automatically "
+			  "(currently big endian).\n"));
     else
-      fprintf_unfiltered (file, _("The target endianness is set automatically "
-				  "(currently little endian)\n"));
+      gdb_printf (file, _("The target endianness is set automatically "
+			  "(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"));
+      gdb_printf (file,
+		  _("The target is set to big endian.\n"));
     else
-      fprintf_unfiltered (file,
-			  _("The target is assumed to be little endian\n"));
+      gdb_printf (file,
+		  _("The target is set to little endian.\n"));
 }
 
 static void
@@ -335,34 +402,32 @@ set_endian (const char *ignore_args, int
 {
   struct gdbarch_info info;
 
-  gdbarch_info_init (&info);
-
   if (set_endian_string == endian_auto)
     {
       target_byte_order_user = BFD_ENDIAN_UNKNOWN;
-      if (! gdbarch_update_p (info))
-	internal_error (__FILE__, __LINE__,
-			_("set_endian: architecture update failed"));
+      if (!gdbarch_update_p (current_inferior (), info))
+	internal_error (_("set_endian: architecture update failed"));
     }
   else if (set_endian_string == endian_little)
     {
       info.byte_order = BFD_ENDIAN_LITTLE;
-      if (! gdbarch_update_p (info))
-	printf_unfiltered (_("Little endian target not supported by GDB\n"));
+      if (!gdbarch_update_p (current_inferior (), info))
+	gdb_printf (gdb_stderr,
+		    _("Little endian target not supported by GDB\n"));
       else
 	target_byte_order_user = BFD_ENDIAN_LITTLE;
     }
   else if (set_endian_string == endian_big)
     {
       info.byte_order = BFD_ENDIAN_BIG;
-      if (! gdbarch_update_p (info))
-	printf_unfiltered (_("Big endian target not supported by GDB\n"));
+      if (!gdbarch_update_p (current_inferior (), info))
+	gdb_printf (gdb_stderr,
+		    _("Big endian target not supported by GDB\n"));
       else
 	target_byte_order_user = BFD_ENDIAN_BIG;
     }
   else
-    internal_error (__FILE__, __LINE__,
-		    _("set_endian: bad value"));
+    internal_error (_("set_endian: bad value"));
 
   show_endian (gdb_stdout, from_tty, NULL, NULL);
 }
@@ -476,12 +541,12 @@ 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"),
-		      gdbarch_bfd_arch_info (get_current_arch ())->printable_name);
+    gdb_printf (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"),
-		      set_architecture_string);
+    gdb_printf (file, _("The target architecture is set to \"%s\".\n"),
+		set_architecture_string);
 }
 
 
@@ -494,46 +559,44 @@ set_architecture (const char *ignore_arg
 {
   struct gdbarch_info info;
 
-  gdbarch_info_init (&info);
-
   if (strcmp (set_architecture_string, "auto") == 0)
     {
       target_architecture_user = NULL;
-      if (!gdbarch_update_p (info))
-	internal_error (__FILE__, __LINE__,
-			_("could not select an architecture automatically"));
+      if (!gdbarch_update_p (current_inferior (), info))
+	internal_error (_("could not select an architecture automatically"));
     }
   else
     {
       info.bfd_arch_info = bfd_scan_arch (set_architecture_string);
       if (info.bfd_arch_info == NULL)
-	internal_error (__FILE__, __LINE__,
-			_("set_architecture: bfd_scan_arch failed"));
-      if (gdbarch_update_p (info))
+	internal_error (_("set_architecture: bfd_scan_arch failed"));
+      if (gdbarch_update_p (current_inferior (), info))
 	target_architecture_user = info.bfd_arch_info;
       else
-	printf_unfiltered (_("Architecture `%s' not recognized.\n"),
-			   set_architecture_string);
+	gdb_printf (gdb_stderr,
+		    _("Architecture `%s' not recognized.\n"),
+		    set_architecture_string);
     }
   show_architecture (gdb_stdout, from_tty, NULL, NULL);
 }
 
-/* Try to select a global architecture that matches "info".  Return
-   non-zero if the attempt succeeds.  */
+/* See arch-utils.h.  */
+
 int
-gdbarch_update_p (struct gdbarch_info info)
+gdbarch_update_p (inferior *inf, struct gdbarch_info info)
 {
   struct gdbarch *new_gdbarch;
 
   /* Check for the current file.  */
   if (info.abfd == NULL)
-    info.abfd = exec_bfd;
+    info.abfd = inf->pspace->exec_bfd ();
+
   if (info.abfd == NULL)
-    info.abfd = core_bfd;
+    info.abfd = inf->pspace->core_bfd ();
 
   /* Check for the current target description.  */
   if (info.target_desc == NULL)
-    info.target_desc = target_current_description ();
+    info.target_desc = target_current_description (inf);
 
   new_gdbarch = gdbarch_find_by_info (info);
 
@@ -541,30 +604,31 @@ gdbarch_update_p (struct gdbarch_info in
   if (new_gdbarch == NULL)
     {
       if (gdbarch_debug)
-	fprintf_unfiltered (gdb_stdlog, "gdbarch_update_p: "
-			    "Architecture not found\n");
+	gdb_printf (gdb_stdlog, "gdbarch_update_p: "
+		    "Architecture not found\n");
       return 0;
     }
 
   /* If it is the same old architecture, accept the request (but don't
      swap anything).  */
-  if (new_gdbarch == target_gdbarch ())
+  if (new_gdbarch == inf->arch ())
     {
       if (gdbarch_debug)
-	fprintf_unfiltered (gdb_stdlog, "gdbarch_update_p: "
-			    "Architecture %s (%s) unchanged\n",
-			    host_address_to_string (new_gdbarch),
-			    gdbarch_bfd_arch_info (new_gdbarch)->printable_name);
+	gdb_printf (gdb_stdlog, "gdbarch_update_p: "
+		    "Architecture %s (%s) unchanged\n",
+		    host_address_to_string (new_gdbarch),
+		    gdbarch_bfd_arch_info (new_gdbarch)->printable_name);
       return 1;
     }
 
   /* It's a new architecture, swap it in.  */
   if (gdbarch_debug)
-    fprintf_unfiltered (gdb_stdlog, "gdbarch_update_p: "
-			"New architecture %s (%s) selected\n",
-			host_address_to_string (new_gdbarch),
-			gdbarch_bfd_arch_info (new_gdbarch)->printable_name);
-  set_target_gdbarch (new_gdbarch);
+    gdb_printf (gdb_stdlog, "gdbarch_update_p: "
+		"New architecture %s (%s) selected\n",
+		host_address_to_string (new_gdbarch),
+		gdbarch_bfd_arch_info (new_gdbarch)->printable_name);
+
+  inf->set_arch (new_gdbarch);
 
   return 1;
 }
@@ -576,7 +640,6 @@ struct gdbarch *
 gdbarch_from_bfd (bfd *abfd)
 {
   struct gdbarch_info info;
-  gdbarch_info_init (&info);
 
   info.abfd = abfd;
   return gdbarch_find_by_info (info);
@@ -591,14 +654,14 @@ set_gdbarch_from_file (bfd *abfd)
   struct gdbarch_info info;
   struct gdbarch *gdbarch;
 
-  gdbarch_info_init (&info);
   info.abfd = abfd;
-  info.target_desc = target_current_description ();
+  info.target_desc = target_current_description (current_inferior ());
   gdbarch = gdbarch_find_by_info (info);
 
   if (gdbarch == NULL)
     error (_("Architecture of file not recognized."));
-  set_target_gdbarch (gdbarch);
+
+  current_inferior ()->set_arch (gdbarch);
 }
 
 /* Initialize the current architecture.  Update the ``set
@@ -621,14 +684,14 @@ static const bfd_target *default_bfd_vec
 
 static enum bfd_endian default_byte_order = BFD_ENDIAN_UNKNOWN;
 
+/* Printable names of architectures.  Used as the enum list of the
+   "set arch" command.  */
+static std::vector<const char *> arches;
+
 void
 initialize_current_architecture (void)
 {
-  const char **arches = gdbarch_printable_names ();
-  struct gdbarch_info info;
-
-  /* determine a default architecture and byte order.  */
-  gdbarch_info_init (&info);
+  arches = gdbarch_printable_names ();
   
   /* Find a default architecture.  */
   if (default_bfd_arch == NULL)
@@ -636,21 +699,22 @@ initialize_current_architecture (void)
       /* Choose the architecture by taking the first one
 	 alphabetically.  */
       const char *chosen = arches[0];
-      const char **arch;
-      for (arch = arches; *arch != NULL; arch++)
+
+      for (const char *arch : arches)
 	{
-	  if (strcmp (*arch, chosen) < 0)
-	    chosen = *arch;
+	  if (strcmp (arch, chosen) < 0)
+	    chosen = arch;
 	}
+
       if (chosen == NULL)
-	internal_error (__FILE__, __LINE__,
-			_("initialize_current_architecture: No arch"));
+	internal_error (_("initialize_current_architecture: No arch"));
+
       default_bfd_arch = bfd_scan_arch (chosen);
       if (default_bfd_arch == NULL)
-	internal_error (__FILE__, __LINE__,
-			_("initialize_current_architecture: Arch not found"));
+	internal_error (_("initialize_current_architecture: Arch not found"));
     }
 
+  gdbarch_info info;
   info.bfd_arch_info = default_bfd_arch;
 
   /* Take several guesses at a byte order.  */
@@ -689,45 +753,29 @@ initialize_current_architecture (void)
   info.byte_order = default_byte_order;
   info.byte_order_for_code = info.byte_order;
 
-  if (! gdbarch_update_p (info))
-    internal_error (__FILE__, __LINE__,
-		    _("initialize_current_architecture: Selection of "
+  if (!gdbarch_update_p (current_inferior (), info))
+    internal_error (_("initialize_current_architecture: Selection of "
 		      "initial architecture failed"));
 
   /* Create the ``set architecture'' command appending ``auto'' to the
      list of architectures.  */
   {
     /* Append ``auto''.  */
-    int nr;
-    for (nr = 0; arches[nr] != NULL; nr++);
-    arches = XRESIZEVEC (const char *, arches, nr + 2);
-    arches[nr + 0] = "auto";
-    arches[nr + 1] = NULL;
-    add_setshow_enum_cmd ("architecture", class_support,
-			  arches, &set_architecture_string, 
-			  _("Set architecture of target."),
-			  _("Show architecture of target."), NULL,
-			  set_architecture, show_architecture,
-			  &setlist, &showlist);
-    add_alias_cmd ("processor", "architecture", class_support, 1, &setlist);
+    set_architecture_string = "auto";
+    arches.push_back (set_architecture_string);
+    arches.push_back (nullptr);
+    set_show_commands architecture_cmds
+      = add_setshow_enum_cmd ("architecture", class_support,
+			      arches.data (), &set_architecture_string,
+			      _("Set architecture of target."),
+			      _("Show architecture of target."), NULL,
+			      set_architecture, show_architecture,
+			      &setlist, &showlist);
+    add_alias_cmd ("processor", architecture_cmds.set, class_support, 1,
+		   &setlist);
   }
 }
 
-
-/* Initialize a gdbarch info to values that will be automatically
-   overridden.  Note: Originally, this ``struct info'' was initialized
-   using memset(0).  Unfortunately, that ran into problems, namely
-   BFD_ENDIAN_BIG is zero.  An explicit initialization function that
-   can explicitly set each field to a well defined value is used.  */
-
-void
-gdbarch_info_init (struct gdbarch_info *info)
-{
-  memset (info, 0, sizeof (struct gdbarch_info));
-  info->byte_order = BFD_ENDIAN_UNKNOWN;
-  info->byte_order_for_code = info->byte_order;
-}
-
 /* Similar to init, but this time fill in the blanks.  Information is
    obtained from the global "set ..." options and explicitly
    initialized INFO fields.  */
@@ -804,7 +852,7 @@ get_current_arch (void)
   if (has_stack_frames ())
     return get_frame_arch (get_selected_frame (NULL));
   else
-    return target_gdbarch ();
+    return current_inferior ()->arch ();
 }
 
 int
@@ -858,7 +906,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 +924,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)
 {
@@ -919,13 +999,15 @@ default_gnu_triplet_regexp (struct gdbar
   return gdbarch_bfd_arch_info (gdbarch)->arch_name;
 }
 
-/* Default method for gdbarch_addressable_memory_unit_size.  By default, a memory byte has
-   a size of 1 octet.  */
+/* Default method for gdbarch_addressable_memory_unit_size.  The default is
+   based on the bits_per_byte defined in the bfd library for the current
+   architecture, this is usually 8-bits, and so this function will usually
+   return 1 indicating 1 byte is 1 octet.  */
 
 int
 default_addressable_memory_unit_size (struct gdbarch *gdbarch)
 {
-  return 1;
+  return gdbarch_bfd_arch_info (gdbarch)->bits_per_byte / 8;
 }
 
 void
@@ -957,10 +1039,14 @@ default_print_insn (bfd_vma memaddr, dis
   disassembler_ftype disassemble_fn;
 
   disassemble_fn = disassembler (info->arch, info->endian == BFD_ENDIAN_BIG,
-				 info->mach, exec_bfd);
+				 info->mach, current_program_space->exec_bfd ());
 
   gdb_assert (disassemble_fn != NULL);
-  return (*disassemble_fn) (memaddr, info);
+  int res = (*disassemble_fn) (memaddr, info);
+
+  QUIT;
+
+  return res;
 }
 
 /* See arch-utils.h.  */
@@ -999,13 +1085,457 @@ default_type_align (struct gdbarch *gdba
 /* See arch-utils.h.  */
 
 std::string
-default_get_pc_address_flags (frame_info *frame, CORE_ADDR pc)
+default_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
 {
   return "";
 }
 
+/* See arch-utils.h.  */
 void
-_initialize_gdbarch_utils (void)
+default_read_core_file_mappings
+  (struct gdbarch *gdbarch,
+   struct bfd *cbfd,
+   read_core_file_mappings_pre_loop_ftype pre_loop_cb,
+   read_core_file_mappings_loop_ftype loop_cb)
+{
+}
+
+/* See arch-utils.h.  */
+bool
+default_use_target_description_from_corefile_notes (struct gdbarch *gdbarch,
+						    struct bfd *corefile_bfd)
+{
+  /* Always trust the corefile target description contained in the target
+     description note.  */
+  return true;
+}
+
+CORE_ADDR
+default_get_return_buf_addr (struct type *val_type,
+			     const frame_info_ptr &cur_frame)
+{
+  return 0;
+}
+
+bool
+default_dwarf2_omit_typedef_p (struct type *target_type, const char *producer,
+			       const char *name)
+{
+  return false;
+}
+
+static CORE_ADDR
+default_update_call_site_pc (struct gdbarch *gdbarch, CORE_ADDR pc)
+{
+  return pc;
+}
+
+/* Non-zero if we want to trace architecture code.  */
+
+#ifndef GDBARCH_DEBUG
+#define GDBARCH_DEBUG 0
+#endif
+unsigned int gdbarch_debug = GDBARCH_DEBUG;
+static void
+show_gdbarch_debug (struct ui_file *file, int from_tty,
+		    struct cmd_list_element *c, const char *value)
+{
+  gdb_printf (file, _("Architecture debugging is %s.\n"), value);
+}
+
+static const char *
+pformat (struct gdbarch *gdbarch, const struct floatformat **format)
+{
+  if (format == NULL)
+    return "(null)";
+
+  int format_index = gdbarch_byte_order (gdbarch) == BFD_ENDIAN_LITTLE ? 1 : 0;
+  return format[format_index]->name;
+}
+
+static const char *
+pstring (const char *string)
+{
+  if (string == NULL)
+    return "(null)";
+  return string;
+}
+
+static const char *
+pstring_ptr (std::string *string)
+{
+  if (string == nullptr)
+    return "(null)";
+  return string->c_str ();
+}
+
+/* Helper function to print a list of strings, represented as "const
+   char *const *".  The list is printed comma-separated.  */
+
+static const char *
+pstring_list (const char *const *list)
+{
+  static char ret[100];
+  const char *const *p;
+  size_t offset = 0;
+
+  if (list == NULL)
+    return "(null)";
+
+  ret[0] = '\0';
+  for (p = list; *p != NULL && offset < sizeof (ret); ++p)
+    {
+      size_t s = xsnprintf (ret + offset, sizeof (ret) - offset, "%s, ", *p);
+      offset += 2 + s;
+    }
+
+  if (offset > 0)
+    {
+      gdb_assert (offset - 2 < sizeof (ret));
+      ret[offset - 2] = '\0';
+    }
+
+  return ret;
+}
+
+#include "gdbarch-gen.c"
+
+enum return_value_convention
+default_gdbarch_return_value
+     (struct gdbarch *gdbarch, struct value *function, struct type *valtype,
+      struct regcache *regcache, struct value **read_value,
+      const gdb_byte *writebuf)
+{
+  gdb_byte *readbuf = nullptr;
+
+  if (read_value != nullptr)
+    {
+      *read_value = value::allocate (valtype);
+      readbuf = (*read_value)->contents_raw ().data ();
+    }
+
+  return gdbarch->return_value (gdbarch, function, valtype, regcache,
+				readbuf, writebuf);
+}
+
+/* See arch-utils.h.  */
+
+std::optional<CORE_ADDR>
+default_get_shadow_stack_pointer (gdbarch *gdbarch, regcache *regcache,
+				  bool &shadow_stack_enabled)
+{
+  shadow_stack_enabled = false;
+  return {};
+}
+
+obstack *gdbarch_obstack (gdbarch *arch)
+{
+  return &arch->obstack;
+}
+
+/* See gdbarch.h.  */
+
+char *
+gdbarch_obstack_strdup (struct gdbarch *arch, const char *string)
+{
+  return obstack_strdup (&arch->obstack, string);
+}
+
+/* Free a gdbarch struct.  This should never happen in normal
+   operation --- once you've created a gdbarch, you keep it around.
+   However, if an architecture's init function encounters an error
+   building the structure, it may need to clean up a partially
+   constructed gdbarch.  */
+
+void
+gdbarch_free (struct gdbarch *arch)
+{
+  gdb_assert (arch != NULL);
+  gdb_assert (!arch->initialized_p);
+  delete arch;
+}
+
+/* See gdbarch.h.  */
+
+struct gdbarch_tdep_base *
+gdbarch_tdep_1 (struct gdbarch *gdbarch)
+{
+  if (gdbarch_debug >= 2)
+    gdb_printf (gdb_stdlog, "gdbarch_tdep_1 called\n");
+  return gdbarch->tdep.get ();
+}
+
+registry<gdbarch> *
+registry_accessor<gdbarch>::get (gdbarch *arch)
+{
+  return &arch->registry_fields;
+}
+
+/* Keep a registry of the architectures known by GDB.  */
+
+struct gdbarch_registration
+{
+  enum bfd_architecture bfd_architecture;
+  gdbarch_init_ftype *init;
+  gdbarch_dump_tdep_ftype *dump_tdep;
+  gdbarch_supports_arch_info_ftype *supports_arch_info;
+  struct gdbarch_list *arches;
+  struct gdbarch_registration *next;
+};
+
+static struct gdbarch_registration *gdbarch_registry = NULL;
+
+std::vector<const char *>
+gdbarch_printable_names ()
+{
+  /* Accumulate a list of names based on the registered list of
+     architectures.  */
+  std::vector<const char *> arches;
+
+  for (gdbarch_registration *rego = gdbarch_registry;
+       rego != nullptr;
+       rego = rego->next)
+    {
+      const struct bfd_arch_info *ap
+	= bfd_lookup_arch (rego->bfd_architecture, 0);
+      if (ap == nullptr)
+	internal_error (_("gdbarch_architecture_names: multi-arch unknown"));
+      do
+	{
+	  if (rego->supports_arch_info == nullptr
+	      || rego->supports_arch_info (ap))
+	    arches.push_back (ap->printable_name);
+	  ap = ap->next;
+	}
+      while (ap != NULL);
+    }
+
+  return arches;
+}
+
+
+void
+gdbarch_register (enum bfd_architecture bfd_architecture,
+		  gdbarch_init_ftype *init,
+		  gdbarch_dump_tdep_ftype *dump_tdep,
+		  gdbarch_supports_arch_info_ftype *supports_arch_info)
+{
+  struct gdbarch_registration **curr;
+  const struct bfd_arch_info *bfd_arch_info;
+
+  /* Check that BFD recognizes this architecture */
+  bfd_arch_info = bfd_lookup_arch (bfd_architecture, 0);
+  if (bfd_arch_info == NULL)
+    {
+      internal_error (_("gdbarch: Attempt to register "
+			"unknown architecture (%d)"),
+		      bfd_architecture);
+    }
+  /* Check that we haven't seen this architecture before.  */
+  for (curr = &gdbarch_registry;
+       (*curr) != NULL;
+       curr = &(*curr)->next)
+    {
+      if (bfd_architecture == (*curr)->bfd_architecture)
+	internal_error (_("gdbarch: Duplicate registration "
+			  "of architecture (%s)"),
+			bfd_arch_info->printable_name);
+    }
+  /* log it */
+  if (gdbarch_debug)
+    gdb_printf (gdb_stdlog, "gdbarch_register (%s, %s)\n",
+		bfd_arch_info->printable_name,
+		host_address_to_string (init));
+  /* Append it */
+  (*curr) = XNEW (struct gdbarch_registration);
+  (*curr)->bfd_architecture = bfd_architecture;
+  (*curr)->init = init;
+  (*curr)->dump_tdep = dump_tdep;
+  (*curr)->supports_arch_info = supports_arch_info;
+  (*curr)->arches = NULL;
+  (*curr)->next = NULL;
+}
+
+/* Look for an architecture using gdbarch_info.  */
+
+struct gdbarch_list *
+gdbarch_list_lookup_by_info (struct gdbarch_list *arches,
+			     const struct gdbarch_info *info)
+{
+  for (; arches != NULL; arches = arches->next)
+    {
+      if (info->bfd_arch_info != arches->gdbarch->bfd_arch_info)
+	continue;
+      if (info->byte_order != arches->gdbarch->byte_order)
+	continue;
+      if (info->osabi != arches->gdbarch->osabi)
+	continue;
+      if (info->target_desc != arches->gdbarch->target_desc)
+	continue;
+      return arches;
+    }
+  return NULL;
+}
+
+
+/* Find an architecture that matches the specified INFO.  Create a new
+   architecture if needed.  Return that new architecture.  */
+
+struct gdbarch *
+gdbarch_find_by_info (struct gdbarch_info info)
+{
+  struct gdbarch *new_gdbarch;
+  struct gdbarch_registration *rego;
+
+  /* Fill in missing parts of the INFO struct using a number of
+     sources: "set ..."; INFOabfd supplied; and the global
+     defaults.  */
+  gdbarch_info_fill (&info);
+
+  /* Must have found some sort of architecture.  */
+  gdb_assert (info.bfd_arch_info != nullptr);
+
+  if (gdbarch_debug)
+    {
+      gdb_printf (gdb_stdlog,
+		  "gdbarch_find_by_info: info.bfd_arch_info %s\n",
+		  (info.bfd_arch_info != nullptr
+		   ? info.bfd_arch_info->printable_name
+		   : "(null)"));
+      gdb_printf (gdb_stdlog,
+		  "gdbarch_find_by_info: info.byte_order %d (%s)\n",
+		  info.byte_order,
+		  (info.byte_order == BFD_ENDIAN_BIG ? "big"
+		   : info.byte_order == BFD_ENDIAN_LITTLE ? "little"
+		   : "default"));
+      gdb_printf (gdb_stdlog,
+		  "gdbarch_find_by_info: info.osabi %d (%s)\n",
+		  info.osabi, gdbarch_osabi_name (info.osabi));
+      gdb_printf (gdb_stdlog,
+		  "gdbarch_find_by_info: info.abfd %s\n",
+		  host_address_to_string (info.abfd));
+    }
+
+  /* Find the tdep code that knows about this architecture.  */
+  for (rego = gdbarch_registry;
+       rego != nullptr;
+       rego = rego->next)
+    if (rego->bfd_architecture == info.bfd_arch_info->arch)
+      break;
+  if (rego == nullptr)
+    {
+      if (gdbarch_debug)
+	gdb_printf (gdb_stdlog, "gdbarch_find_by_info: "
+		    "No matching architecture\n");
+      return nullptr;
+    }
+
+  /* Ask the tdep code for an architecture that matches "info".  */
+  new_gdbarch = rego->init (info, rego->arches);
+
+  /* Did the tdep code like it?  No.  Reject the change and revert to
+     the old architecture.  */
+  if (new_gdbarch == nullptr)
+    {
+      if (gdbarch_debug)
+	gdb_printf (gdb_stdlog, "gdbarch_find_by_info: "
+		    "Target rejected architecture\n");
+      return nullptr;
+    }
+
+  /* Is this a pre-existing architecture (as determined by already
+     being initialized)?  Move it to the front of the architecture
+     list (keeping the list sorted Most Recently Used).  */
+  if (new_gdbarch->initialized_p)
+    {
+      struct gdbarch_list **list;
+      struct gdbarch_list *self;
+      if (gdbarch_debug)
+	gdb_printf (gdb_stdlog, "gdbarch_find_by_info: "
+		    "Previous architecture %s (%s) selected\n",
+		    host_address_to_string (new_gdbarch),
+		    new_gdbarch->bfd_arch_info->printable_name);
+      /* Find the existing arch in the list.  */
+      for (list = &rego->arches;
+	   (*list) != nullptr && (*list)->gdbarch != new_gdbarch;
+	   list = &(*list)->next);
+      /* It had better be in the list of architectures.  */
+      gdb_assert ((*list) != nullptr && (*list)->gdbarch == new_gdbarch);
+      /* Unlink SELF.  */
+      self = (*list);
+      (*list) = self->next;
+      /* Insert SELF at the front.  */
+      self->next = rego->arches;
+      rego->arches = self;
+      /* Return it.  */
+      return new_gdbarch;
+    }
+
+  /* It's a new architecture.  */
+  if (gdbarch_debug)
+    gdb_printf (gdb_stdlog, "gdbarch_find_by_info: "
+		"New architecture %s (%s) selected\n",
+		host_address_to_string (new_gdbarch),
+		new_gdbarch->bfd_arch_info->printable_name);
+
+  /* Insert the new architecture into the front of the architecture
+     list (keep the list sorted Most Recently Used).  */
+  {
+    struct gdbarch_list *self = XNEW (struct gdbarch_list);
+    self->next = rego->arches;
+    self->gdbarch = new_gdbarch;
+    rego->arches = self;
+  }
+
+  /* Check that the newly installed architecture is valid.  Plug in
+     any post init values.  */
+  new_gdbarch->dump_tdep = rego->dump_tdep;
+  verify_gdbarch (new_gdbarch);
+  new_gdbarch->initialized_p = true;
+
+  if (gdbarch_debug)
+    gdbarch_dump (new_gdbarch, gdb_stdlog);
+
+  gdb::observers::new_architecture.notify (new_gdbarch);
+
+  return new_gdbarch;
+}
+
+/* See gdbarch.h.  */
+
+bool
+gdbarch_initialized_p (gdbarch *arch)
+{
+  return arch->initialized_p;
+}
+
+/* See arch-utils.h.  */
+
+gdb_environ
+core_file_exec_context::environment () const
+{
+  gdb_environ e;
+
+  for (const auto &entry : m_environment)
+    {
+      char *eq = strchr (entry.get (), '=');
+
+      /* If there's no '=' character, then skip this entry.  */
+      if (eq == nullptr)
+	continue;
+
+      const char *value = eq + 1;
+      const char *var = entry.get ();
+
+      *eq = '\0';
+      e.set (var, value);
+      *eq = '=';
+    }
+
+  return e;
+}
+
+INIT_GDB_FILE (gdbarch_utils)
 {
   add_setshow_enum_cmd ("endian", class_support,
 			endian_enum, &set_endian_string, 
@@ -1013,4 +1543,11 @@ _initialize_gdbarch_utils (void)
 			_("Show endianness of target."),
 			NULL, set_endian, show_endian,
 			&setlist, &showlist);
+  add_setshow_zuinteger_cmd ("arch", class_maintenance, &gdbarch_debug, _("\
+Set architecture debugging."), _("\
+Show architecture debugging."), _("\
+When non-zero, architecture debugging is enabled."),
+			    NULL,
+			    show_gdbarch_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.20200303/gdb/arch-utils.h ./gdb/arch-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arch-utils.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arch-utils.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,12 +17,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/>.  */
 
-#ifndef ARCH_UTILS_H
-#define ARCH_UTILS_H
+#ifndef GDB_ARCH_UTILS_H
+#define GDB_ARCH_UTILS_H
 
 #include "gdbarch.h"
+#include "gdbsupport/environ.h"
+#include "filenames.h"
 
-struct frame_info;
+class frame_info_ptr;
 struct minimal_symbol;
 struct type;
 struct gdbarch_info;
@@ -74,10 +76,90 @@ struct bp_manipulation_endian
   bp_manipulation_endian<sizeof (BREAK_INSN_LITTLE),		  \
   BREAK_INSN_LITTLE, BREAK_INSN_BIG>
 
+/* Structure returned from gdbarch core_parse_exec_context method.  Wraps
+   the execfn string and a vector containing the inferior argument.  If a
+   gdbarch is unable to parse this information then an empty structure is
+   returned, check the execfn as an indication, if this is nullptr then no
+   other fields should be considered valid.  */
+
+struct core_file_exec_context
+{
+  /* Constructor, just move everything into place.  The EXEC_NAME should
+     never be nullptr.  Only call this constructor if all the arguments
+     have been collected successfully, i.e. if the EXEC_NAME could be
+     found but not ARGV then use the no-argument constructor to create an
+     empty context object.
+
+     The EXEC_FILENAME must be the absolute filename of the executable
+     that generated this core file, or nullptr if the absolute filename
+     is not known.  */
+  core_file_exec_context (gdb::unique_xmalloc_ptr<char> exec_name,
+			  gdb::unique_xmalloc_ptr<char> exec_filename,
+			  std::vector<gdb::unique_xmalloc_ptr<char>> argv,
+			  std::vector<gdb::unique_xmalloc_ptr<char>> envp)
+    : m_exec_name (std::move (exec_name)),
+      m_exec_filename (std::move (exec_filename)),
+      m_arguments (std::move (argv)),
+      m_environment (std::move (envp))
+  {
+    gdb_assert (m_exec_name != nullptr);
+    gdb_assert (exec_filename == nullptr
+		|| IS_ABSOLUTE_PATH (exec_filename.get ()));
+  }
+
+  /* Create a default context object.  In its default state a context
+     object holds no useful information, and will return false from its
+     valid() method.  */
+  core_file_exec_context () = default;
+
+  /* Return true if this object contains valid context information.  */
+  bool valid () const
+  { return m_exec_name != nullptr; }
+
+  /* Return the execfn string (executable name) as extracted from the core
+     file.  Will always return non-nullptr if valid() returns true.  */
+  const char *execfn () const
+  { return m_exec_name.get (); }
+
+  /* Return the absolute path to the executable if known.  This might
+     return nullptr even when execfn() returns a non-nullptr value.
+     Additionally, the file referenced here might have a different name
+     than the file returned by execfn if execfn is a symbolic link.  */
+  const char *exec_filename () const
+  { return m_exec_filename.get (); }
+
+  /* Return the vector of inferior arguments as extracted from the core
+     file.  This does not include argv[0] (the executable name) for that
+     see the execfn() function.  */
+  const std::vector<gdb::unique_xmalloc_ptr<char>> &args () const
+  { return m_arguments; }
+
+  /* Return the environment variables from this context.  */
+  gdb_environ environment () const;
+
+private:
+
+  /* The executable filename as reported in the core file.  Can be nullptr
+     if no executable name is found.  */
+  gdb::unique_xmalloc_ptr<char> m_exec_name;
+
+  /* Full filename to the executable that was actually executed.  The name
+     within EXEC_FILENAME might not match what the user typed, e.g. if the
+     user typed ./symlinked_name which is a symlink to /tmp/real_name then
+     this is going to contain '/tmp/realname' while EXEC_NAME above will
+     contain './symlinkedname'.  */
+  gdb::unique_xmalloc_ptr<char> m_exec_filename;
+
+  /* List of arguments.  Doesn't include argv[0] which is the executable
+     name, for this look at m_exec_name field.  */
+  std::vector<gdb::unique_xmalloc_ptr<char>> m_arguments;
+
+  /* List of environment strings.  */
+  std::vector<gdb::unique_xmalloc_ptr<char>> m_environment;
+};
+
 /* Default implementation of gdbarch_displaced_hw_singlestep.  */
-extern int
-  default_displaced_step_hw_singlestep (struct gdbarch *,
-					struct displaced_step_closure *);
+extern bool default_displaced_step_hw_singlestep (struct gdbarch *);
 
 /* Possible value for gdbarch_displaced_step_location:
    Place displaced instructions at the program's entry point,
@@ -85,8 +167,8 @@ extern int
 extern CORE_ADDR displaced_step_at_entry_point (struct gdbarch *gdbarch);
 
 /* The only possible cases for inner_than.  */
-extern int core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs);
-extern int core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs);
+extern bool core_addr_lessthan (CORE_ADDR lhs, CORE_ADDR rhs);
+extern bool core_addr_greaterthan (CORE_ADDR lhs, CORE_ADDR rhs);
 
 /* Identity functions on a CORE_ADDR.  Just return the "addr".  */
 
@@ -134,7 +216,33 @@ extern const struct floatformat **
   default_floatformat_for_type (struct gdbarch *gdbarch,
 				const char *name, int len);
 
-extern CORE_ADDR generic_skip_trampoline_code (struct frame_info *frame,
+/* Default implementation of gdbarch_remove_non_address_bits.  */
+CORE_ADDR default_remove_non_address_bits (struct gdbarch *gdbarch,
+					   CORE_ADDR pointer);
+
+/* Default implementation of gdbarch_memtag_to_string.  */
+extern std::string default_memtag_to_string (struct gdbarch *gdbarch,
+					     struct value *tag);
+
+/* Default implementation of gdbarch_tagged_address_p.  */
+bool default_tagged_address_p (struct gdbarch *gdbarch, CORE_ADDR address);
+
+/* Default implementation of gdbarch_memtag_matches_p.  */
+extern bool default_memtag_matches_p (struct gdbarch *gdbarch,
+				       struct value *address);
+
+/* Default implementation of gdbarch_set_memtags.  */
+bool default_set_memtags (struct gdbarch *gdbarch,
+			  struct value *address, size_t length,
+			  const gdb::byte_vector &tags,
+			  memtag_type tag_type);
+
+/* Default implementation of gdbarch_get_memtag.  */
+struct value *default_get_memtag (struct gdbarch *gdbarch,
+				  struct value *address,
+				  memtag_type tag_type);
+
+extern CORE_ADDR generic_skip_trampoline_code (const frame_info_ptr &frame,
 					       CORE_ADDR pc);
 
 extern CORE_ADDR generic_skip_solib_resolver (struct gdbarch *gdbarch,
@@ -147,7 +255,7 @@ extern int generic_stack_frame_destroyed
 					    CORE_ADDR pc);
 
 extern int default_code_of_frame_writable (struct gdbarch *gdbarch,
-					   struct frame_info *frame);
+					   const frame_info_ptr &frame);
 
 /* By default, registers are not convertible.  */
 extern int generic_convert_register_p (struct gdbarch *gdbarch, int regnum,
@@ -176,12 +284,6 @@ extern enum bfd_endian selected_byte_ord
    was explicitly selected.  */
 extern const char *selected_architecture_name (void);
 
-/* Initialize a ``struct info''.  Can't use memset(0) since some
-   default values are not zero.  "fill" takes all available
-   information and fills in any unspecified fields.  */
-
-extern void gdbarch_info_init (struct gdbarch_info *info);
-
 /* Similar to init, but this time fill in the blanks.  Information is
    obtained from the global "set ..." options and explicitly
    initialized INFO fields.  */
@@ -228,6 +330,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);
@@ -273,7 +379,44 @@ extern ULONGEST default_type_align (stru
 				    struct type *type);
 
 /* Default implementation of gdbarch get_pc_address_flags method.  */
-extern std::string default_get_pc_address_flags (frame_info *frame,
+extern std::string default_get_pc_address_flags (const frame_info_ptr &frame,
 						 CORE_ADDR pc);
 
-#endif /* ARCH_UTILS_H */
+/* Default implementation of gdbarch read_core_file_mappings method.  */
+extern void default_read_core_file_mappings
+  (struct gdbarch *gdbarch,
+   struct bfd *cbfd,
+   read_core_file_mappings_pre_loop_ftype pre_loop_cb,
+   read_core_file_mappings_loop_ftype loop_cb);
+
+/* Default implementation of gdbarch_core_parse_exec_context.  Returns
+   an empty core_file_exec_context.  */
+extern core_file_exec_context default_core_parse_exec_context
+  (struct gdbarch *gdbarch, bfd *cbfd);
+
+/* Default implementation of gdbarch
+   use_target_description_from_corefile_notes.  */
+extern bool default_use_target_description_from_corefile_notes
+  (struct gdbarch *gdbarch,
+  struct bfd *corefile_bfd);
+
+/* Default implementation of gdbarch default_get_return_buf_addr method.  */
+extern CORE_ADDR default_get_return_buf_addr (struct type *val_typegdbarch,
+					      const frame_info_ptr &cur_frame);
+
+/* Default implementation of gdbarch default_dwarf2_omit_typedef_p method.  */
+extern bool default_dwarf2_omit_typedef_p (struct type *target_type,
+					   const char *producer,
+					   const char *name);
+
+extern enum return_value_convention default_gdbarch_return_value
+     (struct gdbarch *gdbarch, struct value *function, struct type *valtype,
+      struct regcache *regcache, struct value **read_value,
+      const gdb_byte *writebuf);
+
+/* Default implementation of gdbarch default_get_shadow_stack_pointer
+   method.  */
+extern std::optional<CORE_ADDR> default_get_shadow_stack_pointer
+  (gdbarch *gdbarch, regcache *regcache, bool &shadow_stack_enabled);
+
+#endif /* GDB_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.20200303/gdb/arc-linux-nat.c ./gdb/arc-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arc-linux-nat.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arc-linux-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,317 @@
+/* Native-dependent code for GNU/Linux ARC.
+
+   Copyright 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "frame.h"
+#include "inferior.h"
+#include "gdbcore.h"
+#include "regcache.h"
+#include "gdbsupport/gdb_assert.h"
+#include "target.h"
+#include "linux-nat.h"
+#include "nat/gdb_ptrace.h"
+
+#include <stdint.h>
+#include <sys/types.h>
+#include <sys/param.h>
+#include <signal.h>
+#include <sys/user.h>
+#include <sys/ioctl.h>
+#include "gdbsupport/gdb_wait.h"
+#include <fcntl.h>
+#include <sys/procfs.h>
+#include <linux/elf.h>
+
+#include "gregset.h"
+#include "arc-tdep.h"
+#include "arc-linux-tdep.h"
+#include "arch/arc.h"
+
+/* Defines ps_err_e, struct ps_prochandle.  */
+#include "gdb_proc_service.h"
+
+/* Print an "arc-linux-nat" debug statement.  */
+
+#define arc_linux_nat_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (arc_debug, "arc-linux-nat", fmt, ##__VA_ARGS__)
+
+/* Linux starting with 4.12 supports NT_ARC_V2 note type, which adds R30,
+   R58 and R59 registers, which are specific to ARC HS and aren't
+   available in ARC 700.  */
+#if defined (NT_ARC_V2) && defined (__ARCHS__)
+#define ARC_HAS_V2_REGSET
+#endif
+
+class arc_linux_nat_target final : public linux_nat_target
+{
+public:
+  /* Add ARC register access methods.  */
+  void fetch_registers (struct regcache *, int) override;
+  void store_registers (struct regcache *, int) override;
+
+  const struct target_desc *read_description () override;
+
+  /* Handle threads  */
+  void low_prepare_to_resume (struct lwp_info *lp) override;
+};
+
+static arc_linux_nat_target the_arc_linux_nat_target;
+
+/* Read general registers from target process/thread (via ptrace)
+   into REGCACHE.  */
+
+static void
+fetch_gregs (struct regcache *regcache, int regnum)
+{
+  const int tid = get_ptrace_pid (regcache->ptid ());
+  struct iovec iov;
+  gdb_gregset_t regs;
+
+  iov.iov_base = &regs;
+  iov.iov_len = sizeof (gdb_gregset_t);
+
+  if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, (void *) &iov) < 0)
+    perror_with_name (_("Couldn't get general registers"));
+  else
+    arc_linux_supply_gregset (NULL, regcache, regnum, &regs, 0);
+}
+
+#ifdef ARC_HAS_V2_REGSET
+/* Read ARC v2 registers from target process/thread (via ptrace)
+   into REGCACHE.  */
+
+static void
+fetch_v2_regs (struct regcache *regcache, int regnum)
+{
+  const int tid = get_ptrace_pid (regcache->ptid ());
+  struct iovec iov;
+  bfd_byte v2_buffer[ARC_LINUX_SIZEOF_V2_REGSET];
+
+  iov.iov_base = &v2_buffer;
+  iov.iov_len = ARC_LINUX_SIZEOF_V2_REGSET;
+
+  if (ptrace (PTRACE_GETREGSET, tid, NT_ARC_V2, (void *) &iov) < 0)
+    perror_with_name (_("Couldn't get ARC HS registers"));
+  else
+    arc_linux_supply_v2_regset (NULL, regcache, regnum, v2_buffer, 0);
+}
+#endif
+
+/* Store general registers from REGCACHE into the target process/thread.  */
+
+static void
+store_gregs (const struct regcache *regcache, int regnum)
+{
+  const int tid = get_ptrace_pid (regcache->ptid ());
+  struct iovec iov;
+  gdb_gregset_t regs;
+
+  iov.iov_base = &regs;
+  iov.iov_len = sizeof (gdb_gregset_t);
+
+  if (ptrace (PTRACE_GETREGSET, tid, NT_PRSTATUS, (void *) &iov) < 0)
+    perror_with_name (_("Couldn't get general registers"));
+  else
+    {
+      arc_linux_collect_gregset (NULL, regcache, regnum, regs, 0);
+
+      if (ptrace (PTRACE_SETREGSET, tid, NT_PRSTATUS, (void *) &iov) < 0)
+	perror_with_name (_("Couldn't write general registers"));
+    }
+}
+
+#ifdef ARC_HAS_V2_REGSET
+/* Store ARC v2 registers from REGCACHE into the target process/thread.  */
+
+static void
+store_v2_regs (const struct regcache *regcache, int regnum)
+{
+  const int tid = get_ptrace_pid (regcache->ptid ());
+  struct iovec iov;
+  bfd_byte v2_buffer[ARC_LINUX_SIZEOF_V2_REGSET];
+
+  iov.iov_base = &v2_buffer;
+  iov.iov_len = ARC_LINUX_SIZEOF_V2_REGSET;
+
+  if (ptrace (PTRACE_GETREGSET, tid, NT_ARC_V2, (void *) &iov) < 0)
+    perror_with_name (_("Couldn't get ARC HS registers"));
+  else
+    {
+      arc_linux_collect_v2_regset (NULL, regcache, regnum, v2_buffer, 0);
+
+      if (ptrace (PTRACE_SETREGSET, tid, NT_ARC_V2, (void *) &iov) < 0)
+	perror_with_name (_("Couldn't write ARC HS registers"));
+    }
+}
+#endif
+
+/* Target operation: Read REGNUM register (all registers if REGNUM == -1)
+   from target process into REGCACHE.  */
+
+void
+arc_linux_nat_target::fetch_registers (struct regcache *regcache, int regnum)
+{
+
+  if (regnum == -1 || regnum <= ARC_LAST_REGNUM)
+    fetch_gregs (regcache, regnum);
+
+#ifdef ARC_HAS_V2_REGSET
+  if (regnum == -1
+      || regnum == ARC_R30_REGNUM
+      || regnum == ARC_R58_REGNUM
+      || regnum == ARC_R59_REGNUM)
+      fetch_v2_regs (regcache, regnum);
+#endif
+}
+
+/* Target operation: Store REGNUM register (all registers if REGNUM == -1)
+   to the target process from REGCACHE.  */
+
+void
+arc_linux_nat_target::store_registers (struct regcache *regcache, int regnum)
+{
+  if (regnum == -1 || regnum <= ARC_LAST_REGNUM)
+    store_gregs (regcache, regnum);
+
+#ifdef ARC_HAS_V2_REGSET
+  if (regnum == -1
+      || regnum == ARC_R30_REGNUM
+      || regnum == ARC_R58_REGNUM
+      || regnum == ARC_R59_REGNUM)
+    store_v2_regs (regcache, regnum);
+#endif
+}
+
+/* Copy general purpose register(s) from REGCACHE into regset GREGS.
+   This function is exported to proc-service.c  */
+
+void
+fill_gregset (const struct regcache *regcache,
+	      gdb_gregset_t *gregs, int regnum)
+{
+  arc_linux_collect_gregset (NULL, regcache, regnum, gregs, 0);
+}
+
+/* Copy all the general purpose registers from regset GREGS into REGCACHE.
+   This function is exported to proc-service.c.  */
+
+void
+supply_gregset (struct regcache *regcache, const gdb_gregset_t *gregs)
+{
+  arc_linux_supply_gregset (NULL, regcache, -1, gregs, 0);
+}
+
+/* ARC doesn't have separate FP registers.  This function is exported
+   to proc-service.c.  */
+
+void
+fill_fpregset (const struct regcache *regcache,
+	       gdb_fpregset_t *fpregsetp, int regnum)
+{
+  arc_linux_nat_debug_printf ("called");
+}
+
+/* ARC doesn't have separate FP registers.  This function is exported
+   to proc-service.c.  */
+
+void
+supply_fpregset (struct regcache *regcache, const gdb_fpregset_t *fpregsetp)
+{
+  arc_linux_nat_debug_printf ("called");
+}
+
+/* Implement the "read_description" method of linux_nat_target.  */
+
+const struct target_desc *
+arc_linux_nat_target::read_description ()
+{
+  /* This is a native target, hence description is hardcoded.  */
+#ifdef __ARCHS__
+  arc_arch_features features (4, ARC_ISA_ARCV2);
+#else
+  arc_arch_features features (4, ARC_ISA_ARCV1);
+#endif
+  return arc_lookup_target_description (features);
+}
+
+/* As described in arc_linux_collect_gregset(), we need to write resume-PC
+   to ERET.  However by default GDB for native targets doesn't write
+   registers if they haven't been changed.  This is a callback called by
+   generic GDB, and in this callback we have to rewrite PC value so it
+   would force rewrite of register on target.  It seems that the only
+   other arch that utilizes this hook is x86/x86-64 for HW breakpoint
+   support.  But then, AFAIK no other arch has this stop_pc/eret
+   complexity.
+
+   No better way was found, other than this fake write of register value,
+   to force GDB into writing register to target.  Is there any?  */
+
+void
+arc_linux_nat_target::low_prepare_to_resume (struct lwp_info *lwp)
+{
+  /* When new processes and threads are created we do not have the address
+     space for them and calling get_thread_regcache will cause an internal
+     error in GDB.  It looks like that checking for last_resume_kind is the
+     sensible way to determine processes for which we cannot get regcache.
+     Ultimately, a better way would be removing the need for
+     low_prepare_to_resume in the first place.  */
+  if (lwp->last_resume_kind == resume_stop)
+    return;
+
+  struct regcache *regcache = get_thread_regcache (this, lwp->ptid);
+  struct gdbarch *gdbarch = regcache->arch ();
+
+  /* Read current PC value, then write it back.  It is required to call
+     invalidate(), otherwise GDB will note that new value is equal to old
+     value and will skip write.  */
+  ULONGEST new_pc;
+  regcache_cooked_read_unsigned (regcache, gdbarch_pc_regnum (gdbarch),
+				 &new_pc);
+  regcache->invalidate (gdbarch_pc_regnum (gdbarch));
+  regcache_cooked_write_unsigned (regcache, gdbarch_pc_regnum (gdbarch),
+				  new_pc);
+}
+
+/* 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 required to debug multithreaded applications with NPTL.  */
+
+ps_err_e
+ps_get_thread_area (struct ps_prochandle *ph, lwpid_t lwpid, int idx,
+		    void **base)
+{
+  arc_linux_nat_debug_printf ("called");
+
+  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;
+}
+
+/* Suppress warning from -Wmissing-prototypes.  */
+INIT_GDB_FILE (arc_linux_nat)
+{
+  /* Register the target.  */
+  linux_target = &the_arc_linux_nat_target;
+  add_inf_child_target (&the_arc_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.20200303/gdb/arc-linux-tdep.c ./gdb/arc-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arc-linux-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arc-linux-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,747 @@
+/* Target dependent code for GNU/Linux ARC.
+
+   Copyright 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "linux-tdep.h"
+#include "solib-svr4-linux.h"
+#include "objfiles.h"
+#include "opcode/arc.h"
+#include "osabi.h"
+#include "solib-svr4.h"
+#include "disasm.h"
+
+/* ARC header files.  */
+#include "opcodes/arc-dis.h"
+#include "arc-linux-tdep.h"
+#include "arc-tdep.h"
+#include "arch/arc.h"
+
+/* Print an "arc-linux" debug statement.  */
+
+#define arc_linux_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (arc_debug, "arc-linux", fmt, ##__VA_ARGS__)
+
+#define REGOFF(offset) (offset * ARC_REGISTER_SIZE)
+
+/* arc_linux_sc_reg_offsets[i] is the offset of register i in the `struct
+   sigcontext'.  Array index is an internal GDB register number, as defined in
+   arc-tdep.h:arc_regnum.
+
+   From <include/uapi/asm/sigcontext.h> and <include/uapi/asm/ptrace.h>.
+
+   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_sc_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.  */
+  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 (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 (6),			/* PC  */
+  REGOFF (5),			/* STATUS32 */
+  REGOFF (2),			/* LP_START */
+  REGOFF (3),			/* LP_END */
+  REGOFF (1),			/* BTA */
+};
+
+/* 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 */
+};
+
+/* Is THIS_FRAME a sigtramp function - the function that returns from
+   signal handler into normal execution flow? This is the case if the PC is
+   either at the start of, or in the middle of the two instructions:
+
+     mov r8, __NR_rt_sigreturn ; __NR_rt_sigreturn == 139
+     trap_s 0 ; `swi' for ARC700
+
+   On ARC uClibc Linux this function is called __default_rt_sa_restorer.
+
+   Returns TRUE if this is a sigtramp frame.  */
+
+static bool
+arc_linux_is_sigtramp (const frame_info_ptr &this_frame)
+{
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  CORE_ADDR pc = get_frame_pc (this_frame);
+
+  arc_linux_debug_printf ("pc=%s", paddress(gdbarch, pc));
+
+  static const gdb_byte insns_be_hs[] = {
+    0x20, 0x8a, 0x12, 0xc2,	/* mov  r8,nr_rt_sigreturn */
+    0x78, 0x1e			/* trap_s 0 */
+  };
+  static const gdb_byte insns_be_700[] = {
+    0x20, 0x8a, 0x12, 0xc2,	/* mov  r8,nr_rt_sigreturn */
+    0x22, 0x6f, 0x00, 0x3f	/* swi */
+  };
+
+  constexpr size_t max_insn_sz = std::max (sizeof (insns_be_hs),
+					   sizeof (insns_be_700));
+
+  gdb_byte arc_sigtramp_insns[sizeof (insns_be_700)];
+  size_t insns_sz;
+  if (arc_mach_is_arcv2 (gdbarch))
+    {
+      insns_sz = sizeof (insns_be_hs);
+      memcpy (arc_sigtramp_insns, insns_be_hs, insns_sz);
+    }
+  else
+    {
+      insns_sz = sizeof (insns_be_700);
+      memcpy (arc_sigtramp_insns, insns_be_700, insns_sz);
+    }
+  if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_LITTLE)
+    {
+      /* On little endian targets, ARC code section is in what is called
+	 "middle endian", where half-words are in the big-endian order,
+	 only bytes inside the halfwords are in the little endian order.
+	 As a result it is very easy to convert big endian instruction to
+	 little endian, since it is needed to swap bytes in the halfwords,
+	 so there is no need to have information on whether that is a
+	 4-byte instruction or 2-byte.  */
+      gdb_assert ((insns_sz % 2) == 0);
+      for (int i = 0; i < insns_sz; i += 2)
+	std::swap (arc_sigtramp_insns[i], arc_sigtramp_insns[i+1]);
+    }
+
+  gdb_assert (insns_sz <= max_insn_sz);
+  gdb_byte buf[max_insn_sz];
+
+  /* Read the memory at the PC.  Since we are stopped, any breakpoint must
+     have been removed.  */
+  if (!safe_frame_unwind_memory (this_frame, pc, {buf, insns_sz}))
+    {
+      /* Failed to unwind frame.  */
+      return FALSE;
+    }
+
+  /* Is that code the sigtramp instruction sequence?  */
+  if (memcmp (buf, arc_sigtramp_insns, insns_sz) == 0)
+    return TRUE;
+
+  /* No - look one instruction earlier in the code...  */
+  if (!safe_frame_unwind_memory (this_frame, pc - 4, {buf, insns_sz}))
+    {
+      /* Failed to unwind frame.  */
+      return FALSE;
+    }
+
+  return (memcmp (buf, arc_sigtramp_insns, insns_sz) == 0);
+}
+
+/* Get sigcontext structure of sigtramp frame - it contains saved
+   registers of interrupted frame.
+
+   Stack pointer points to the rt_sigframe structure, and sigcontext can
+   be found as in:
+
+   struct rt_sigframe {
+     struct siginfo info;
+     struct ucontext uc;
+     ...
+   };
+
+   struct ucontext {
+     unsigned long uc_flags;
+     struct ucontext *uc_link;
+     stack_t uc_stack;
+     struct sigcontext uc_mcontext;
+     sigset_t uc_sigmask;
+   };
+
+   sizeof (struct siginfo) == 0x80
+   offsetof (struct ucontext, uc_mcontext) == 0x14
+
+   GDB cannot include linux headers and use offsetof () because those are
+   target headers and GDB might be built for a different run host.  There
+   doesn't seem to be an established mechanism to figure out those offsets
+   via gdbserver, so the only way is to hardcode values in the GDB,
+   meaning that GDB will be broken if values will change.  That seems to
+   be a very unlikely scenario and other arches (aarch64, alpha, amd64,
+   etc) in GDB hardcode values.  */
+
+static CORE_ADDR
+arc_linux_sigcontext_addr (const frame_info_ptr &this_frame)
+{
+  const int ucontext_offset = 0x80;
+  const int sigcontext_offset = 0x14;
+  return get_frame_sp (this_frame) + ucontext_offset + sigcontext_offset;
+}
+
+/* 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)
+{
+  gdb_assert (kind == trap_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 ();
+  arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (gdbarch);
+  struct gdb_non_printing_memory_disassembler dis (gdbarch);
+
+  /* Read current instruction.  */
+  struct arc_instruction curr_insn;
+  arc_insn_decode (regcache_read_pc (regcache), dis.disasm_info (),
+		   arc_delayed_print_insn, &curr_insn);
+
+  if (curr_insn.insn_class == LLOCK)
+    return handle_atomic_sequence (curr_insn, dis.disasm_info ());
+
+  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 through 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, dis.disasm_info (), 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);
+
+	  arc_linux_debug_printf ("lp_start = %s, lp_end = %s, "
+				  "lp_count = %s, next_pc = %s",
+				  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.  */
+  bound_minimal_symbol resolver
+    = lookup_minimal_symbol (current_program_space, "_dl_linux_resolver");
+
+  if (arc_debug)
+    {
+      if (resolver.minsym != nullptr)
+	{
+	  CORE_ADDR res_addr = resolver.value_address ();
+	  arc_linux_debug_printf ("pc = %s, resolver at %s",
+				  print_core_address (gdbarch, pc),
+				  print_core_address (gdbarch, res_addr));
+	}
+      else
+	arc_linux_debug_printf ("pc = %s, no resolver found",
+				print_core_address (gdbarch, pc));
+    }
+
+  if (resolver.minsym != nullptr && resolver.value_address () == pc)
+    {
+      /* Find the return address.  */
+      return frame_unwind_caller_pc (get_current_frame ());
+    }
+  else
+    {
+      /* No breakpoint required.  */
+      return 0;
+    }
+}
+
+/* Populate REGCACHE with register REGNUM from BUF.  */
+
+static void
+supply_register (struct regcache *regcache, int regnum, const gdb_byte *buf)
+{
+  /* Skip non-existing registers.  */
+  if ((arc_linux_core_reg_offsets[regnum] == ARC_OFFSET_NO_REGISTER))
+    return;
+
+  regcache->raw_supply (regnum, buf + arc_linux_core_reg_offsets[regnum]);
+}
+
+void
+arc_linux_supply_gregset (const struct regset *regset,
+			  struct regcache *regcache,
+			  int regnum, const void *gregs, size_t size)
+{
+  static_assert (ARC_LAST_REGNUM
+		     < ARRAY_SIZE (arc_linux_core_reg_offsets));
+
+  const bfd_byte *buf = (const bfd_byte *) gregs;
+
+  /* REGNUM == -1 means writing all the registers.  */
+  if (regnum == -1)
+    for (int reg = 0; reg <= ARC_LAST_REGNUM; reg++)
+      supply_register (regcache, reg, buf);
+  else if (regnum <= ARC_LAST_REGNUM)
+    supply_register (regcache, regnum, buf);
+  else
+    gdb_assert_not_reached ("Invalid regnum in arc_linux_supply_gregset.");
+}
+
+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.  */
+  if (regnum == -1 || regnum == ARC_R30_REGNUM)
+    regcache->raw_supply (ARC_R30_REGNUM, buf);
+  if (regnum == -1 || regnum == ARC_R58_REGNUM)
+    regcache->raw_supply (ARC_R58_REGNUM, buf + REGOFF (1));
+  if (regnum == -1 || regnum == ARC_R59_REGNUM)
+    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)
+{
+  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;
+
+  if (regnum == -1 || regnum == ARC_R30_REGNUM)
+    regcache->raw_collect (ARC_R30_REGNUM, buf);
+  if (regnum == -1 || regnum == ARC_R58_REGNUM)
+    regcache->raw_collect (ARC_R58_REGNUM, buf + REGOFF (1));
+  if (regnum == -1 || regnum == ARC_R59_REGNUM)
+    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)
+{
+  arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (gdbarch);
+
+  arc_linux_debug_printf ("GNU/Linux OS/ABI initialization.");
+
+  /* Fill in target-dependent info in ARC-private structure.  */
+  tdep->is_sigtramp = arc_linux_is_sigtramp;
+  tdep->sigcontext_addr = arc_linux_sigcontext_addr;
+  tdep->sc_reg_offset = arc_linux_sc_reg_offsets;
+  tdep->sc_num_regs = ARRAY_SIZE (arc_linux_sc_reg_offsets);
+
+  /* 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, 0);
+
+  /* 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_get_next_pcs (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_ops (gdbarch, make_linux_ilp32_svr4_solib_ops);
+}
+
+INIT_GDB_FILE (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.20200303/gdb/arc-linux-tdep.h ./gdb/arc-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arc-linux-tdep.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arc-linux-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,52 @@
+/* Target dependent code for GNU/Linux ARC.
+
+   Copyright 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARC_LINUX_TDEP_H
+#define GDB_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 registers 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 /* GDB_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.20200303/gdb/arc-newlib-tdep.c ./gdb/arc-newlib-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arc-newlib-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arc-newlib-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for Newlib ARC.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2025 Free Software Foundation, Inc.
    Contributed by Synopsys Inc.
 
    This file is part of GDB.
@@ -18,21 +18,24 @@
    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 "arc-tdep.h"
 #include "osabi.h"
 
+/* Print an "arc-newlib" debug statement.  */
+
+#define arc_newlib_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (arc_debug, "arc-newlib", fmt, ##__VA_ARGS__)
+
 /* Implement the 'init_osabi' method of struct gdb_osabi_handler.  */
 
 static void
 arc_newlib_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  if (arc_debug)
-    debug_printf ("arc-newlib: Initialization.\n");
+  arc_newlib_debug_printf ("Initialization.");
 
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (gdbarch);
 
   /* Offset of original PC in longjmp jump buffer (in registers).  Value of PC
      offset can be found in newlib/libc/machine/arc/setjmp.S.  */
@@ -44,8 +47,7 @@ arc_newlib_init_osabi (struct gdbarch_in
 static enum gdb_osabi
 arc_newlib_osabi_sniffer (bfd *abfd)
 {
-  if (arc_debug)
-    debug_printf ("arc-newlib: OS/ABI sniffer.\n");
+  arc_newlib_debug_printf ("OS/ABI sniffer.");
 
   /* crt0.S in libgloss for ARC defines .ivt section for interrupt handlers.
      If this section is not present then this is likely not a newlib - could be
@@ -56,8 +58,7 @@ arc_newlib_osabi_sniffer (bfd *abfd)
     return GDB_OSABI_UNKNOWN;
 }
 
-void
-_initialize_arc_newlib_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/arc-tdep.c ./gdb/arc-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arc-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arc-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target dependent code for ARC architecture, for GDB.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2025 Free Software Foundation, Inc.
    Contributed by Synopsys Inc.
 
    This file is part of GDB.
@@ -19,29 +19,32 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 /* 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 "extract-store-integer.h"
 #include "frame-base.h"
 #include "frame-unwind.h"
 #include "gdbcore.h"
-#include "gdbcmd.h"
+#include "inferior.h"
+#include "reggroups.h"
+#include "cli/cli-cmds.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.  */
 
@@ -81,71 +84,222 @@ struct arc_frame_cache
   /* Store addresses for registers saved in prologue.  During prologue analysis
      GDB stores offsets relatively to "old SP", then after old SP is evaluated,
      offsets are replaced with absolute addresses.  */
-  struct trad_frame_saved_reg *saved_regs;
+  trad_frame_saved_reg *saved_regs;
 };
 
 /* Global debug flag.  */
 
-int arc_debug;
+bool arc_debug;
 
 /* List of "maintenance print arc" commands.  */
 
 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 }
+  }
 };
 
-static char *arc_disassembler_options = NULL;
+/* 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 std::string arc_disassembler_options;
 
 /* Functions are sorted in the order as they are used in the
    _initialize_arc_tdep (), which uses the same order as gdbarch.h.  Static
@@ -168,7 +322,7 @@ arc_insn_get_operand_value (const struct
       return insn.operands[operand_num].value;
     default:
       /* Value in instruction is a register number.  */
-      struct regcache *regcache = get_current_regcache ();
+      regcache *regcache = get_thread_regcache (inferior_thread ());
       ULONGEST value;
       regcache_cooked_read_unsigned (regcache,
 				     insn.operands[operand_num].value,
@@ -190,14 +344,14 @@ arc_insn_get_operand_value_signed (const
       /* Convert unsigned raw value to signed one.  This assumes 2's
 	 complement arithmetic, but so is the LONG_MIN value from generic
 	 defs.h and that assumption is true for ARC.  */
-      gdb_static_assert (sizeof (insn.limm_value) == sizeof (int));
+      static_assert (sizeof (insn.limm_value) == sizeof (int));
       return (((LONGEST) insn.limm_value) ^ INT_MIN) - INT_MIN;
     case ARC_OPERAND_KIND_SHIMM:
       /* Sign conversion has been done by binutils.  */
       return insn.operands[operand_num].value;
     default:
       /* Value in instruction is a register number.  */
-      struct regcache *regcache = get_current_regcache ();
+      regcache *regcache = get_thread_regcache (inferior_thread ());
       LONGEST value;
       regcache_cooked_read_signed (regcache,
 				   insn.operands[operand_num].value,
@@ -282,20 +436,20 @@ arc_insn_get_branch_target (const struct
   /* JLI and EI depend on optional AUX registers.  Not supported right now.  */
   else if (insn.insn_class == JLI)
     {
-      fprintf_unfiltered (gdb_stderr,
-			  "JLI_S instruction is not supported by the GDB.");
+      gdb_printf (gdb_stderr,
+		  "JLI_S instruction is not supported by the GDB.");
       return 0;
     }
   else if (insn.insn_class == EI)
     {
-      fprintf_unfiltered (gdb_stderr,
-			  "EI_S instruction is not supported by the GDB.");
+      gdb_printf (gdb_stderr,
+		  "EI_S instruction is not supported by the GDB.");
       return 0;
     }
   /* LEAVE_S: PC = BLINK.  */
   else if (insn.insn_class == LEAVE)
     {
-      struct regcache *regcache = get_current_regcache ();
+      regcache *regcache = get_thread_regcache (inferior_thread ());
       ULONGEST value;
       regcache_cooked_read_unsigned (regcache, ARC_BLINK_REGNUM, &value);
       return value;
@@ -312,6 +466,16 @@ arc_insn_get_branch_target (const struct
 	 instruction, hence last two bits should be truncated.  */
       return pcrel_addr + align_down (insn.address, 4);
     }
+  /* DBNZ is the only branch instruction that keeps a branch address in
+     the second operand. It must be intercepted and treated differently. */
+  else if (insn.insn_class == DBNZ)
+    {
+      CORE_ADDR pcrel_addr = arc_insn_get_operand_value_signed (insn, 1);
+
+      /* Offset is relative to the 4-byte aligned address of the current
+	 instruction, hence last two bits should be truncated. */
+      return pcrel_addr + align_down (insn.address, 4);
+    }
   /* B, Bcc, BL, BLcc, LP, LPcc: PC = currentPC + operand.  */
   else if (insn.insn_class == BRANCH || insn.insn_class == LOOP)
     {
@@ -337,7 +501,7 @@ arc_insn_get_branch_target (const struct
 static void
 arc_insn_dump (const struct arc_instruction &insn)
 {
-  struct gdbarch *gdbarch = target_gdbarch ();
+  struct gdbarch *gdbarch = current_inferior ()->arch ();
 
   arc_print ("Dumping arc_instruction at %s\n",
 	     paddress (gdbarch, insn.address));
@@ -449,9 +613,8 @@ arc_write_pc (struct regcache *regcache,
 {
   struct gdbarch *gdbarch = regcache->arch ();
 
-  if (arc_debug)
-    debug_printf ("arc: Writing PC, new value=%s\n",
-		  paddress (gdbarch, new_pc));
+  arc_debug_printf ("Writing PC, new value=%s",
+		    paddress (gdbarch, new_pc));
 
   regcache_cooked_write_unsigned (regcache, gdbarch_pc_regnum (gdbarch),
 				  new_pc);
@@ -460,16 +623,12 @@ 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)
-	{
-	  debug_printf ("arc: Changing PC while in delay slot.  Will "
+      arc_debug_printf ("Changing PC while in delay slot.  Will "
 			"reset STATUS32.DE bit to zero.  Value of STATUS32 "
-			"register is 0x%s\n",
+			"register is 0x%s",
 			phex (status32, ARC_REGISTER_SIZE));
-	}
 
       /* Reset bit and write to the cache.  */
       status32 &= ~0x40;
@@ -524,35 +683,35 @@ arc_virtual_frame_pointer (struct gdbarc
    The stack grows downward, so SP points below FP in memory; SP always
    points to the last used word on the stack, not the first one.
 
-                      |                       |   |
-                      |      arg word N       |   | caller's
-                      |           :           |   | frame
-                      |      arg word 10      |   |
-                      |      arg word 9       |   |
-          old SP ---> +-----------------------+ --+
-                      |                       |   |
-                      |      callee-saved     |   |
-                      |       registers       |   |
-                      |  including fp, blink  |   |
-                      |                       |   | callee's
-          new FP ---> +-----------------------+   | frame
-                      |                       |   |
-                      |         local         |   |
-                      |       variables       |   |
-                      |                       |   |
-                      |       register        |   |
-                      |      spill area       |   |
-                      |                       |   |
-                      |     outgoing args     |   |
-                      |                       |   |
-          new SP ---> +-----------------------+ --+
-                      |                       |
-                      |         unused        |
-                      |                       |
-                                  |
-                                  |
-                                  V
-                              downwards
+		      |                       |   |
+		      |      arg word N       |   | caller's
+		      |           :           |   | frame
+		      |      arg word 10      |   |
+		      |      arg word 9       |   |
+	  old SP ---> +-----------------------+ --+
+		      |                       |   |
+		      |      callee-saved     |   |
+		      |       registers       |   |
+		      |  including fp, blink  |   |
+		      |                       |   | callee's
+	  new FP ---> +-----------------------+   | frame
+		      |                       |   |
+		      |         local         |   |
+		      |       variables       |   |
+		      |                       |   |
+		      |       register        |   |
+		      |      spill area       |   |
+		      |                       |   |
+		      |     outgoing args     |   |
+		      |                       |   |
+	  new SP ---> +-----------------------+ --+
+		      |                       |
+		      |         unused        |
+		      |                       |
+				  |
+				  |
+				  V
+			      downwards
 
    The list of arguments to be passed to a function is considered to be a
    sequence of _N_ words (as though all the parameters were stored in order in
@@ -583,8 +742,7 @@ arc_push_dummy_call (struct gdbarch *gdb
 		     function_call_return_method return_method,
 		     CORE_ADDR struct_addr)
 {
-  if (arc_debug)
-    debug_printf ("arc: push_dummy_call (nargs = %d)\n", nargs);
+  arc_debug_printf ("nargs = %d", nargs);
 
   int arg_reg = ARC_FIRST_ARG_REGNUM;
 
@@ -600,9 +758,8 @@ arc_push_dummy_call (struct gdbarch *gdb
       /* Pass the return address in the first argument register.  */
       regcache_cooked_write_unsigned (regcache, arg_reg, struct_addr);
 
-      if (arc_debug)
-	debug_printf ("arc: struct return address %s passed in R%d",
-		      print_core_address (gdbarch, struct_addr), arg_reg);
+      arc_debug_printf ("struct return address %s passed in R%d",
+			print_core_address (gdbarch, struct_addr), arg_reg);
 
       arg_reg++;
     }
@@ -615,13 +772,12 @@ arc_push_dummy_call (struct gdbarch *gdb
 	 argument's size up to an integral number of words.  */
       for (int i = 0; i < nargs; i++)
 	{
-	  unsigned int len = TYPE_LENGTH (value_type (args[i]));
+	  unsigned int len = args[i]->type ()->length ();
 	  unsigned int space = align_up (len, 4);
 
 	  total_space += space;
 
-	  if (arc_debug)
-	    debug_printf ("arc: arg %d: %u bytes -> %u\n", i, len, space);
+	  arc_debug_printf ("arg %d: %u bytes -> %u", i, len, space);
 	}
 
       /* Allocate a buffer to hold a memory image of the arguments.  */
@@ -631,13 +787,13 @@ arc_push_dummy_call (struct gdbarch *gdb
       gdb_byte *data = memory_image;
       for (int i = 0; i < nargs; i++)
 	{
-	  unsigned int len = TYPE_LENGTH (value_type (args[i]));
+	  unsigned int len = args[i]->type ()->length ();
 	  unsigned int space = align_up (len, 4);
 
-	  memcpy (data, value_contents (args[i]), (size_t) len);
-	  if (arc_debug)
-	    debug_printf ("arc: copying arg %d, val 0x%08x, len %d to mem\n",
-			  i, *((int *) value_contents (args[i])), len);
+	  memcpy (data, args[i]->contents ().data (), (size_t) len);
+	  arc_debug_printf ("copying arg %d, val 0x%08x, len %d to mem",
+			    i, *((int *) args[i]->contents ().data ()),
+			    len);
 
 	  data += space;
 	}
@@ -646,9 +802,8 @@ arc_push_dummy_call (struct gdbarch *gdb
       data = memory_image;
       while (arg_reg <= ARC_LAST_ARG_REGNUM)
 	{
-	  if (arc_debug)
-	    debug_printf ("arc: passing 0x%02x%02x%02x%02x in register R%d\n",
-			  data[0], data[1], data[2], data[3], arg_reg);
+	  arc_debug_printf ("passing 0x%02x%02x%02x%02x in register R%d",
+			    data[0], data[1], data[2], data[3], arg_reg);
 
 	  /* Note we don't use write_unsigned here, since that would convert
 	     the byte order, but we are already in the correct byte order.  */
@@ -668,8 +823,7 @@ arc_push_dummy_call (struct gdbarch *gdb
 	 operation).  */
       if (total_space > 0)
 	{
-	  if (arc_debug)
-	    debug_printf ("arc: passing %d bytes on stack\n", total_space);
+	  arc_debug_printf ("passing %d bytes on stack\n", total_space);
 
 	  sp -= total_space;
 	  write_memory (sp, data, (int) total_space);
@@ -707,7 +861,7 @@ arc_push_dummy_code (struct gdbarch *gdb
 		     struct regcache *regcache)
 {
   *real_pc = funaddr;
-  *bp_addr = entry_point_address ();
+  *bp_addr = entry_point_address (current_program_space);
   return sp;
 }
 
@@ -763,10 +917,9 @@ static void
 arc_extract_return_value (struct gdbarch *gdbarch, struct type *type,
 			  struct regcache *regcache, gdb_byte *valbuf)
 {
-  unsigned int len = TYPE_LENGTH (type);
+  unsigned int len = type->length ();
 
-  if (arc_debug)
-    debug_printf ("arc: extract_return_value\n");
+  arc_debug_printf ("called");
 
   if (len <= ARC_REGISTER_SIZE)
     {
@@ -777,8 +930,7 @@ arc_extract_return_value (struct gdbarch
       store_unsigned_integer (valbuf, (int) len,
 			      gdbarch_byte_order (gdbarch), val);
 
-      if (arc_debug)
-	debug_printf ("arc: returning 0x%s\n", phex (val, ARC_REGISTER_SIZE));
+      arc_debug_printf ("returning 0x%s", phex (val, ARC_REGISTER_SIZE));
     }
   else if (len <= ARC_REGISTER_SIZE * 2)
     {
@@ -794,10 +946,9 @@ arc_extract_return_value (struct gdbarch
 			      (int) len - ARC_REGISTER_SIZE,
 			      gdbarch_byte_order (gdbarch), high);
 
-      if (arc_debug)
-	debug_printf ("arc: returning 0x%s%s\n",
-		      phex (high, ARC_REGISTER_SIZE),
-		      phex (low, ARC_REGISTER_SIZE));
+      arc_debug_printf ("returning 0x%s%s",
+			phex (high, ARC_REGISTER_SIZE),
+			phex (low, ARC_REGISTER_SIZE));
     }
   else
     error (_("arc: extract_return_value: type length %u too large"), len);
@@ -817,10 +968,9 @@ static void
 arc_store_return_value (struct gdbarch *gdbarch, struct type *type,
 			struct regcache *regcache, const gdb_byte *valbuf)
 {
-  unsigned int len = TYPE_LENGTH (type);
+  unsigned int len = type->length ();
 
-  if (arc_debug)
-    debug_printf ("arc: store_return_value\n");
+  arc_debug_printf ("called");
 
   if (len <= ARC_REGISTER_SIZE)
     {
@@ -831,8 +981,7 @@ arc_store_return_value (struct gdbarch *
 				      gdbarch_byte_order (gdbarch));
       regcache_cooked_write_unsigned (regcache, ARC_R0_REGNUM, val);
 
-      if (arc_debug)
-	debug_printf ("arc: storing 0x%s\n", phex (val, ARC_REGISTER_SIZE));
+      arc_debug_printf ("storing 0x%s", phex (val, ARC_REGISTER_SIZE));
     }
   else if (len <= ARC_REGISTER_SIZE * 2)
     {
@@ -848,10 +997,9 @@ arc_store_return_value (struct gdbarch *
       regcache_cooked_write_unsigned (regcache, ARC_R0_REGNUM, low);
       regcache_cooked_write_unsigned (regcache, ARC_R1_REGNUM, high);
 
-      if (arc_debug)
-	debug_printf ("arc: storing 0x%s%s\n",
-		      phex (high, ARC_REGISTER_SIZE),
-		      phex (low, ARC_REGISTER_SIZE));
+      arc_debug_printf ("storing 0x%s%s",
+			phex (high, ARC_REGISTER_SIZE),
+			phex (low, ARC_REGISTER_SIZE));
     }
   else
     error (_("arc_store_return_value: type length too large."));
@@ -860,13 +1008,12 @@ arc_store_return_value (struct gdbarch *
 /* Implement the "get_longjmp_target" gdbarch method.  */
 
 static int
-arc_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
+arc_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
 {
-  if (arc_debug)
-    debug_printf ("arc: get_longjmp_target\n");
+  arc_debug_printf ("called");
 
   struct gdbarch *gdbarch = get_frame_arch (frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (gdbarch);
   int pc_offset = tdep->jb_pc * ARC_REGISTER_SIZE;
   gdb_byte buf[ARC_REGISTER_SIZE];
   CORE_ADDR jb_addr = get_frame_register_unsigned (frame, ARC_FIRST_ARG_REGNUM);
@@ -891,14 +1038,13 @@ 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
-			  || TYPE_LENGTH (valtype) > 2 * ARC_REGISTER_SIZE);
-
-  if (arc_debug)
-    debug_printf ("arc: return_value (readbuf = %s, writebuf = %s)\n",
-		  host_address_to_string (readbuf),
-		  host_address_to_string (writebuf));
+  int is_struct_return = (valtype->code () == TYPE_CODE_STRUCT
+			  || valtype->code () == TYPE_CODE_UNION
+			  || valtype->length () > 2 * ARC_REGISTER_SIZE);
+
+  arc_debug_printf ("readbuf = %s, writebuf = %s",
+		    host_address_to_string (readbuf),
+		    host_address_to_string (writebuf));
 
   if (writebuf != NULL)
     {
@@ -926,7 +1072,7 @@ arc_return_value (struct gdbarch *gdbarc
    frame pointer.  */
 
 static CORE_ADDR
-arc_frame_base_address (struct frame_info *this_frame, void **prologue_cache)
+arc_frame_base_address (const frame_info_ptr &this_frame, void **prologue_cache)
 {
   return (CORE_ADDR) get_frame_register_unsigned (this_frame, ARC_FP_REGNUM);
 }
@@ -1171,30 +1317,6 @@ arc_is_in_prologue (struct gdbarch *gdba
   return false;
 }
 
-/* Copy of gdb_buffered_insn_length_fprintf from disasm.c.  */
-
-static int ATTRIBUTE_PRINTF (2, 3)
-arc_fprintf_disasm (void *stream, const char *format, ...)
-{
-  return 0;
-}
-
-struct disassemble_info
-arc_disassemble_info (struct gdbarch *gdbarch)
-{
-  struct disassemble_info di;
-  init_disassemble_info (&di, &null_stream, arc_fprintf_disasm);
-  di.arch = gdbarch_bfd_arch_info (gdbarch)->arch;
-  di.mach = gdbarch_bfd_arch_info (gdbarch)->mach;
-  di.endian = gdbarch_byte_order (gdbarch);
-  di.read_memory_func = [](bfd_vma memaddr, gdb_byte *myaddr,
-			   unsigned int len, struct disassemble_info *info)
-    {
-      return target_read_code (memaddr, myaddr, len);
-    };
-  return di;
-}
-
 /* Analyze the prologue and update the corresponding frame cache for the frame
    unwinder for unwinding frames that doesn't have debug info.  In such
    situation GDB attempts to parse instructions in the prologue to understand
@@ -1249,10 +1371,9 @@ static CORE_ADDR
 arc_analyze_prologue (struct gdbarch *gdbarch, const CORE_ADDR entrypoint,
 		      const CORE_ADDR limit_pc, struct arc_frame_cache *cache)
 {
-  if (arc_debug)
-    debug_printf ("arc: analyze_prologue (entrypoint=%s, limit_pc=%s)\n",
-		  paddress (gdbarch, entrypoint),
-		  paddress (gdbarch, limit_pc));
+  arc_debug_printf ("entrypoint=%s, limit_pc=%s",
+		    paddress (gdbarch, entrypoint),
+		    paddress (gdbarch, limit_pc));
 
   /* Prologue values.  Only core registers can be stored.  */
   pv_t regs[ARC_LAST_CORE_REGNUM + 1];
@@ -1266,11 +1387,12 @@ arc_analyze_prologue (struct gdbarch *gd
   while (current_prologue_end < limit_pc)
     {
       struct arc_instruction insn;
-      struct disassemble_info di = arc_disassemble_info (gdbarch);
-      arc_insn_decode (current_prologue_end, &di, arc_delayed_print_insn,
-		       &insn);
 
-      if (arc_debug >= 2)
+      struct gdb_non_printing_memory_disassembler dis (gdbarch);
+      arc_insn_decode (current_prologue_end, dis.disasm_info (),
+		       arc_delayed_print_insn, &insn);
+
+      if (arc_debug)
 	arc_insn_dump (insn);
 
       /* If this instruction is in the prologue, fields in the cache will be
@@ -1278,9 +1400,8 @@ arc_analyze_prologue (struct gdbarch *gd
       if (!arc_is_in_prologue (gdbarch, insn, regs, &stack))
 	{
 	  /* Found an instruction that is not in the prologue.  */
-	  if (arc_debug)
-	    debug_printf ("arc: End of prologue reached at address %s\n",
-			  paddress (gdbarch, insn.address));
+	  arc_debug_printf ("End of prologue reached at address %s",
+			    paddress (gdbarch, insn.address));
 	  break;
 	}
 
@@ -1306,7 +1427,7 @@ arc_analyze_prologue (struct gdbarch *gd
 	{
 	  CORE_ADDR offset;
 	  if (stack.find_reg (gdbarch, i, &offset))
-	    cache->saved_regs[i].addr = offset;
+	    cache->saved_regs[i].set_addr (offset);
 	}
     }
 
@@ -1317,7 +1438,7 @@ arc_analyze_prologue (struct gdbarch *gd
    1) Store instruction for each callee-saved register (R25 - R13 + 1)
    2) Two instructions for FP
    3) One for BLINK
-   4) Three substract instructions for SP (for variadic args, for
+   4) Three subtract instructions for SP (for variadic args, for
    callee saved regs and for local vars) and assuming that those SUB use
    long-immediate (hence double length).
    5) Stores of arguments registers are considered part of prologue too
@@ -1341,8 +1462,7 @@ const static int MAX_PROLOGUE_LENGTH
 static CORE_ADDR
 arc_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  if (arc_debug)
-    debug_printf ("arc: skip_prologue\n");
+  arc_debug_printf ("pc = %s", paddress (gdbarch, pc));
 
   CORE_ADDR func_addr;
   const char *func_name;
@@ -1483,6 +1603,7 @@ arc_breakpoint_kind_from_pc (struct gdba
 static const gdb_byte *
 arc_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 {
+  gdb_assert (kind == 2 || kind == 4);
   *size = kind;
 
   if (kind == sizeof (arc_brk_le))
@@ -1513,29 +1634,28 @@ static void
 arc_print_frame_cache (struct gdbarch *gdbarch, const char *message,
 		       struct arc_frame_cache *cache, int addresses_known)
 {
-  debug_printf ("arc: frame_info %s\n", message);
-  debug_printf ("arc: prev_sp = %s\n", paddress (gdbarch, cache->prev_sp));
-  debug_printf ("arc: frame_base_reg = %i\n", cache->frame_base_reg);
-  debug_printf ("arc: frame_base_offset = %s\n",
-		plongest (cache->frame_base_offset));
+  arc_debug_printf ("frame_info %s", message);
+  arc_debug_printf ("prev_sp = %s", paddress (gdbarch, cache->prev_sp));
+  arc_debug_printf ("frame_base_reg = %i", cache->frame_base_reg);
+  arc_debug_printf ("frame_base_offset = %s",
+		    plongest (cache->frame_base_offset));
 
   for (int i = 0; i <= ARC_BLINK_REGNUM; i++)
     {
-      if (trad_frame_addr_p (cache->saved_regs, i))
-	debug_printf ("arc: saved register %s at %s %s\n",
-		      gdbarch_register_name (gdbarch, i),
-		      (addresses_known) ? "address" : "offset",
-		      paddress (gdbarch, cache->saved_regs[i].addr));
+      if (cache->saved_regs[i].is_addr ())
+	arc_debug_printf ("saved register %s at %s %s",
+			  gdbarch_register_name (gdbarch, i),
+			  (addresses_known) ? "address" : "offset",
+			      paddress (gdbarch, cache->saved_regs[i].addr ()));
     }
 }
 
 /* Frame unwinder for normal frames.  */
 
 static struct arc_frame_cache *
-arc_make_frame_cache (struct frame_info *this_frame)
+arc_make_frame_cache (const frame_info_ptr &this_frame)
 {
-  if (arc_debug)
-    debug_printf ("arc: frame_cache\n");
+  arc_debug_printf ("called");
 
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
 
@@ -1586,8 +1706,9 @@ arc_make_frame_cache (struct frame_info
 
   for (int i = 0; i <= ARC_LAST_CORE_REGNUM; i++)
     {
-      if (trad_frame_addr_p (cache->saved_regs, i))
-	cache->saved_regs[i].addr += cache->prev_sp;
+      if (cache->saved_regs[i].is_addr ())
+	cache->saved_regs[i].set_addr (cache->saved_regs[i].addr ()
+				       + cache->prev_sp);
     }
 
   if (arc_debug)
@@ -1599,11 +1720,10 @@ arc_make_frame_cache (struct frame_info
 /* Implement the "this_id" frame_unwind method.  */
 
 static void
-arc_frame_this_id (struct frame_info *this_frame, void **this_cache,
+arc_frame_this_id (const frame_info_ptr &this_frame, void **this_cache,
 		   struct frame_id *this_id)
 {
-  if (arc_debug)
-    debug_printf ("arc: frame_this_id\n");
+  arc_debug_printf ("called");
 
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
 
@@ -1645,7 +1765,7 @@ arc_frame_this_id (struct frame_info *th
 /* Implement the "prev_register" frame_unwind method.  */
 
 static struct value *
-arc_frame_prev_register (struct frame_info *this_frame,
+arc_frame_prev_register (const frame_info_ptr &this_frame,
 			 void **this_cache, int regnum)
 {
   if (*this_cache == NULL)
@@ -1682,7 +1802,7 @@ arc_frame_prev_register (struct frame_in
 static void
 arc_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
 			   struct dwarf2_frame_state_reg *reg,
-			   struct frame_info *info)
+			   const frame_info_ptr &info)
 {
   if (regnum == gdbarch_pc_regnum (gdbarch))
     /* The return address column.  */
@@ -1692,12 +1812,108 @@ arc_dwarf2_frame_init_reg (struct gdbarc
     reg->how = DWARF2_FRAME_REG_CFA;
 }
 
+/*  Signal trampoline frame unwinder.  Allows frame unwinding to happen
+    from within signal handlers.  */
+
+static struct arc_frame_cache *
+arc_make_sigtramp_frame_cache (const frame_info_ptr &this_frame)
+{
+  arc_debug_printf ("called");
+
+  gdbarch *arch = get_frame_arch (this_frame);
+  arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (arch);
+
+  /* Allocate new frame cache instance and space for saved register info.  */
+  struct arc_frame_cache *cache = FRAME_OBSTACK_ZALLOC (struct arc_frame_cache);
+  cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
+
+  /* Get the stack pointer and use it as the frame base.  */
+  cache->prev_sp = arc_frame_base_address (this_frame, NULL);
+
+  /* If the ARC-private target-dependent info doesn't have a table of
+     offsets of saved register contents within an OS signal context
+     structure, then there is nothing to analyze.  */
+  if (tdep->sc_reg_offset == NULL)
+    return cache;
+
+  /* Find the address of the sigcontext structure.  */
+  CORE_ADDR addr = tdep->sigcontext_addr (this_frame);
+
+  /* For each register, if its contents have been saved within the
+     sigcontext structure, determine the address of those contents.  */
+  gdb_assert (tdep->sc_num_regs <= (ARC_LAST_REGNUM + 1));
+  for (int i = 0; i < tdep->sc_num_regs; i++)
+    {
+      if (tdep->sc_reg_offset[i] != ARC_OFFSET_NO_REGISTER)
+	cache->saved_regs[i].set_addr (addr + tdep->sc_reg_offset[i]);
+    }
+
+  return cache;
+}
+
+/* Implement the "this_id" frame_unwind method for signal trampoline
+   frames.  */
+
+static void
+arc_sigtramp_frame_this_id (const frame_info_ptr &this_frame,
+			    void **this_cache, struct frame_id *this_id)
+{
+  arc_debug_printf ("called");
+
+  if (*this_cache == NULL)
+    *this_cache = arc_make_sigtramp_frame_cache (this_frame);
+
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
+  struct arc_frame_cache *cache = (struct arc_frame_cache *) *this_cache;
+  CORE_ADDR stack_addr = cache->prev_sp;
+  CORE_ADDR code_addr
+    = get_frame_register_unsigned (this_frame, gdbarch_pc_regnum (gdbarch));
+  *this_id = frame_id_build (stack_addr, code_addr);
+}
+
+/* Get a register from a signal handler frame.  */
+
+static struct value *
+arc_sigtramp_frame_prev_register (const frame_info_ptr &this_frame,
+				  void **this_cache, int regnum)
+{
+  arc_debug_printf ("regnum = %d", regnum);
+
+  /* Make sure we've initialized the cache.  */
+  if (*this_cache == NULL)
+    *this_cache = arc_make_sigtramp_frame_cache (this_frame);
+
+  struct arc_frame_cache *cache = (struct arc_frame_cache *) *this_cache;
+  return trad_frame_get_prev_register (this_frame, cache->saved_regs, regnum);
+}
+
+/* Frame sniffer for signal handler frame.  Only recognize a frame if we
+   have a sigcontext_addr handler in the target dependency.  */
+
+static int
+arc_sigtramp_frame_sniffer (const struct frame_unwind *self,
+			    const frame_info_ptr &this_frame,
+			    void **this_cache)
+{
+  arc_debug_printf ("called");
+
+  gdbarch *arch = get_frame_arch (this_frame);
+  arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (arch);
+
+  /* If we have a sigcontext_addr handler, then just return 1 (same as the
+     "default_frame_sniffer ()").  */
+  return (tdep->sigcontext_addr != NULL && tdep->is_sigtramp != NULL
+	  && tdep->is_sigtramp (this_frame));
+}
+
 /* Structure defining the ARC ordinary frame unwind functions.  Since we are
    the fallback unwinder, we use the default frame sniffer, which always
    accepts the frame.  */
 
-static const struct frame_unwind arc_frame_unwind = {
+static const struct frame_unwind_legacy arc_frame_unwind (
+  "arc prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arc_frame_this_id,
   arc_frame_prev_register,
@@ -1705,7 +1921,24 @@ static const struct frame_unwind arc_fra
   default_frame_sniffer,
   NULL,
   NULL
-};
+);
+
+/* Structure defining the ARC signal frame unwind functions.  Custom
+   sniffer is used, because this frame must be accepted only in the right
+   context.  */
+
+static const struct frame_unwind_legacy arc_sigtramp_frame_unwind (
+  "arc sigtramp",
+  SIGTRAMP_FRAME,
+  FRAME_UNWIND_ARCH,
+  default_frame_unwind_stop_reason,
+  arc_sigtramp_frame_this_id,
+  arc_sigtramp_frame_prev_register,
+  NULL,
+  arc_sigtramp_frame_sniffer,
+  NULL,
+  NULL
+);
 
 
 static const struct frame_base arc_normal_base = {
@@ -1715,204 +1948,280 @@ 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 (_("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 (_("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);
+
+  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.  */
 
-      is_reduced_rf = false;
-      core_feature_name = core_v2_feature_name;
-      core_regs = core_v2_register_names;
+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)
+	  std::ostringstream reg_names;
+	  for (std::size_t i = 0; i < reg.names.size(); ++i)
 	    {
-	      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
-	    {
-	      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 existence 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,
+		tdesc_arch_data_up *tdesc_data)
+{
+  const struct target_desc *tdesc_loc = info.target_desc;
+  arc_debug_printf ("Target description initialization.");
+
+  /* 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);
+
+  arc_debug_printf ("Have got a target description");
+
+  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"), ARC_CORE_FEATURE_NAME);
+      return false;
     }
 
-  /* 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)
-    {
-      arc_print (_("Error: Cannot find required feature `%s' in supplied "
-		   "target description.\n"), aux_minimal_feature_name);
-      tdesc_data_cleanup (tdesc_data_loc);
+  if (feature_aux == nullptr)
+    {
+      arc_print (_("Error: Cannot find required feature '%s' in supplied "
+		   "target description.\n"), ARC_AUX_FEATURE_NAME);
       return false;
     }
 
-  for (int i = ARC_FIRST_AUX_REGNUM; i <= ARC_LAST_AUX_REGNUM; i++)
+  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 ();
+
+  tdesc_arch_data_up tdesc_data_loc = tdesc_data_alloc ();
+
+  arc_update_acc_reg_names (info.byte_order);
+
+  bool valid_p = arc_check_tdesc_feature (tdesc_data_loc.get (),
+					  feature_core,
+					  arc_core_reg_feature);
+
+  valid_p &= arc_check_tdesc_feature (tdesc_data_loc.get (),
+				      feature_aux,
+				      arc_aux_reg_feature);
+
+  if (!valid_p)
     {
-      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_debug_printf ("Target description is not valid");
+      return false;
     }
 
   *tdesc = tdesc_loc;
-  *tdesc_data = tdesc_data_loc;
+  *tdesc_data = std::move (tdesc_data_loc);
 
   return true;
 }
@@ -1922,7 +2231,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:
@@ -1939,7 +2248,7 @@ arc_type_align (struct gdbarch *gdbarch,
     case TYPE_CODE_METHODPTR:
     case TYPE_CODE_MEMBERPTR:
       type = check_typedef (type);
-      return std::min<ULONGEST> (4, TYPE_LENGTH (type));
+      return std::min<ULONGEST> (4, type->length ());
     default:
       return 0;
     }
@@ -1951,19 +2260,20 @@ static struct gdbarch *
 arc_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
   const struct target_desc *tdesc;
-  struct tdesc_arch_data *tdesc_data;
+  tdesc_arch_data_up tdesc_data;
 
-  if (arc_debug)
-    debug_printf ("arc: Architecture initialization.\n");
+  arc_debug_printf ("Architecture initialization.");
 
   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);
+  gdbarch *gdbarch
+    = gdbarch_alloc (&info, gdbarch_tdep_up (new arc_gdbarch_tdep));
+  arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (gdbarch);
   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.get ());
 
   /* Data types.  */
   set_gdbarch_short_bit (gdbarch, 16);
@@ -2037,6 +2347,7 @@ arc_gdbarch_init (struct gdbarch_info in
   /* Frame unwinders and sniffers.  */
   dwarf2_frame_set_init_reg (gdbarch, arc_dwarf2_frame_init_reg);
   dwarf2_append_unwinders (gdbarch);
+  frame_unwind_append_unwinder (gdbarch, &arc_sigtramp_frame_unwind);
   frame_unwind_append_unwinder (gdbarch, &arc_frame_unwind);
   frame_base_set_default (gdbarch, &arc_normal_base);
 
@@ -2056,7 +2367,6 @@ arc_gdbarch_init (struct gdbarch_info in
 	= tdesc_architecture (info.target_desc);
       if (tdesc_arch != NULL)
 	{
-	  xfree (arc_disassembler_options);
 	  /* FIXME: It is not really good to change disassembler options
 	     behind the scene, because that might override options
 	     specified by the user.  However as of now ARC doesn't support
@@ -2077,32 +2387,34 @@ arc_gdbarch_init (struct gdbarch_info in
 	  switch (tdesc_arch->mach)
 	    {
 	    case bfd_mach_arc_arc601:
-	      arc_disassembler_options = xstrdup ("cpu=arc601");
+	      arc_disassembler_options = "cpu=arc601";
 	      break;
 	    case bfd_mach_arc_arc600:
-	      arc_disassembler_options = xstrdup ("cpu=arc600");
+	      arc_disassembler_options = "cpu=arc600";
 	      break;
 	    case bfd_mach_arc_arc700:
-	      arc_disassembler_options = xstrdup ("cpu=arc700");
+	      arc_disassembler_options = "cpu=arc700";
 	      break;
 	    case bfd_mach_arc_arcv2:
 	      /* Machine arcv2 has three arches: ARCv2, EM and HS; where ARCv2
 		 is treated as EM.  */
 	      if (arc_arch_is_hs (tdesc_arch))
-		arc_disassembler_options = xstrdup ("cpu=hs38_linux");
+		arc_disassembler_options = "cpu=hs38_linux";
 	      else
-		arc_disassembler_options = xstrdup ("cpu=em4_fpuda");
+		arc_disassembler_options = "cpu=em4_fpuda";
 	      break;
 	    default:
-	      arc_disassembler_options = NULL;
+	      arc_disassembler_options = "";
 	      break;
 	    }
-	  set_gdbarch_disassembler_options (gdbarch,
-					    &arc_disassembler_options);
 	}
     }
 
-  tdesc_use_registers (gdbarch, tdesc, tdesc_data);
+  set_gdbarch_disassembler_options (gdbarch, &arc_disassembler_options);
+  set_gdbarch_valid_disassembler_options (gdbarch,
+					  disassembler_options_arc ());
+
+  tdesc_use_registers (gdbarch, tdesc, std::move (tdesc_data));
 
   return gdbarch;
 }
@@ -2112,17 +2424,18 @@ arc_gdbarch_init (struct gdbarch_info in
 static void
 arc_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  fprintf_unfiltered (file, "arc_dump_tdep: jb_pc = %i\n", tdep->jb_pc);
-}
+  arc_gdbarch_tdep *tdep = gdbarch_tdep<arc_gdbarch_tdep> (gdbarch);
 
-/* Wrapper for "maintenance print arc" list of commands.  */
+  gdb_printf (file, "arc_dump_tdep: jb_pc = %i\n", tdep->jb_pc);
 
-static void
-maintenance_print_arc_command (const char *args, int from_tty)
-{
-  cmd_show_list (maintenance_print_arc_list, from_tty, "");
+  gdb_printf (file, "arc_dump_tdep: is_sigtramp = <%s>\n",
+	      host_address_to_string (tdep->is_sigtramp));
+  gdb_printf (file, "arc_dump_tdep: sigcontext_addr = <%s>\n",
+	      host_address_to_string (tdep->sigcontext_addr));
+  gdb_printf (file, "arc_dump_tdep: sc_reg_offset = <%s>\n",
+	      host_address_to_string (tdep->sc_reg_offset));
+  gdb_printf (file, "arc_dump_tdep: sc_num_regs = %d\n",
+	      tdep->sc_num_regs);
 }
 
 /* This command accepts single argument - address of instruction to
@@ -2133,34 +2446,30 @@ dump_arc_instruction_command (const char
 {
   struct value *val;
   if (args != NULL && strlen (args) > 0)
-    val = evaluate_expression (parse_expression (args).get ());
+    val = parse_expression (args)->evaluate ();
   else
     val = access_value_history (0);
-  record_latest_value (val);
+  val->record_latest ();
 
   CORE_ADDR address = value_as_address (val);
   struct arc_instruction insn;
-  struct disassemble_info di = arc_disassemble_info (target_gdbarch ());
-  arc_insn_decode (address, &di, arc_delayed_print_insn, &insn);
+  gdb_non_printing_memory_disassembler dis (current_inferior ()->arch ());
+  arc_insn_decode (address, dis.disasm_info (), arc_delayed_print_insn, &insn);
   arc_insn_dump (insn);
 }
 
-void
-_initialize_arc_tdep (void)
+INIT_GDB_FILE (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_basic_prefix_cmd ("arc", class_maintenance,
+			_("ARC-specific maintenance commands for printing GDB "
+			  "internal state."),
+			&maintenance_print_arc_list,
+			0, &maintenanceprintlist);
 
   add_cmd ("arc-instruction", class_maintenance,
 	   dump_arc_instruction_command,
@@ -2168,10 +2477,10 @@ _initialize_arc_tdep (void)
 	   &maintenance_print_arc_list);
 
   /* Debug internals for ARC GDB.  */
-  add_setshow_zinteger_cmd ("arc", class_maintenance,
-			    &arc_debug,
-			    _("Set ARC specific debugging."),
-			    _("Show ARC specific debugging."),
-			    _("Non-zero enables ARC specific debugging."),
-			    NULL, NULL, &setdebuglist, &showdebuglist);
+  add_setshow_boolean_cmd ("arc", class_maintenance,
+			   &arc_debug,
+			   _("Set ARC specific debugging."),
+			   _("Show ARC specific debugging."),
+			   _("When set, ARC specific debugging is enabled."),
+			   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.20200303/gdb/arc-tdep.h ./gdb/arc-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arc-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arc-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target dependent code for ARC architecture, for GDB.
 
-   Copyright 2005-2020 Free Software Foundation, Inc.
+   Copyright 2005-2025 Free Software Foundation, Inc.
    Contributed by Synopsys Inc.
 
    This file is part of GDB.
@@ -18,11 +18,13 @@
    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_TDEP_H
-#define ARC_TDEP_H
+#ifndef GDB_ARC_TDEP_H
+#define GDB_ARC_TDEP_H
 
 /* 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,17 +102,46 @@ enum arc_regnum
    Longer registers are represented as pairs of 32-bit registers.  */
 #define ARC_REGISTER_SIZE  4
 
-#define arc_print(fmt, args...) fprintf_unfiltered (gdb_stdlog, fmt, ##args)
+/* 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...) gdb_printf (gdb_stdlog, fmt, ##args)
+
+extern bool arc_debug;
 
-extern int arc_debug;
+/* Print an "arc" debug statement.  */
+
+#define arc_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (arc_debug, "arc", fmt, ##__VA_ARGS__)
 
 /* Target-dependent information.  */
 
-struct gdbarch_tdep
+struct arc_gdbarch_tdep : gdbarch_tdep_base
 {
   /* Offset to PC value in jump buffer.  If this is negative, longjmp
      support will be disabled.  */
-  int jb_pc;
+  int jb_pc = 0;
+
+  /* Whether target has hardware (aka zero-delay) loops.  */
+  bool has_hw_loops = false;
+
+  /* Detect sigtramp.  */
+  bool (*is_sigtramp) (const frame_info_ptr &) = nullptr;
+
+  /* Get address of sigcontext for sigtramp.  */
+  CORE_ADDR (*sigcontext_addr) (const frame_info_ptr &) = nullptr;
+
+  /* Offset of registers in `struct sigcontext'.  */
+  const int *sc_reg_offset = nullptr;
+
+  /* Number of registers in sc_reg_offsets.  Most likely a ARC_LAST_REGNUM,
+     but in theory it could be less, so it is kept separate.  */
+  int sc_num_regs = 0;
 };
 
 /* Utility functions used by other ARC-specific modules.  */
@@ -144,11 +186,6 @@ arc_arch_is_em (const struct bfd_arch_in
    can't be set to an actual NULL value - that would cause a crash.  */
 int arc_delayed_print_insn (bfd_vma addr, struct disassemble_info *info);
 
-/* Return properly initialized disassemble_info for ARC disassembler - it will
-   not print disassembled instructions to stderr.  */
-
-struct disassemble_info arc_disassemble_info (struct gdbarch *gdbarch);
-
 /* Get branch/jump target address for the INSN.  Note that this function
    returns branch target and doesn't evaluate if this branch is taken or not.
    For the indirect jumps value depends in register state, hence can change.
@@ -163,4 +200,9 @@ CORE_ADDR arc_insn_get_branch_target (co
 
 CORE_ADDR arc_insn_get_linear_next_pc (const struct arc_instruction &insn);
 
-#endif /* ARC_TDEP_H */
+/* 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 /* GDB_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.20200303/gdb/arm-bsd-tdep.c ./gdb/arm-bsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-bsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-bsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for ARM BSD's.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "osabi.h"
 #include "regcache.h"
 #include "regset.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.20200303/gdb/arm-fbsd-nat.c ./gdb/arm-fbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-fbsd-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-fbsd-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent code for FreeBSD/arm.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,9 +17,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/>.  */
 
-#include "defs.h"
+#include "inferior.h"
 #include "target.h"
 
+#include "elf/common.h"
+
 #include <sys/types.h>
 #include <sys/ptrace.h>
 #include <machine/reg.h>
@@ -38,56 +40,25 @@ struct arm_fbsd_nat_target : public fbsd
 
 static arm_fbsd_nat_target the_arm_fbsd_nat_target;
 
-/* Determine if PT_GETREGS fetches REGNUM.  */
-
-static bool
-getregs_supplies (int regnum)
-{
-  return ((regnum >= ARM_A1_REGNUM && regnum <= ARM_PC_REGNUM)
-	  || regnum == ARM_PS_REGNUM);
-}
-
-#ifdef PT_GETVFPREGS
-/* Determine if PT_GETVFPREGS fetches REGNUM.  */
-
-static bool
-getvfpregs_supplies (int regnum)
-{
-  return ((regnum >= ARM_D0_REGNUM && regnum <= ARM_D31_REGNUM)
-	  || regnum == ARM_FPSCR_REGNUM);
-}
-#endif
-
 /* Fetch register REGNUM from the inferior.  If REGNUM is -1, do this
    for all registers.  */
 
 void
 arm_fbsd_nat_target::fetch_registers (struct regcache *regcache, int regnum)
 {
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
-
-  if (regnum == -1 || getregs_supplies (regnum))
-    {
-      struct reg regs;
-
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
-	perror_with_name (_("Couldn't get registers"));
-
-      regcache->supply_regset (&arm_fbsd_gregset, regnum, &regs,
-			       sizeof (regs));
-    }
-
+  fetch_register_set<struct reg> (regcache, regnum, PT_GETREGS,
+				  &arm_fbsd_gregset);
 #ifdef PT_GETVFPREGS
-  if (regnum == -1 || getvfpregs_supplies (regnum))
-    {
-      struct vfpreg vfpregs;
-
-      if (ptrace (PT_GETVFPREGS, pid, (PTRACE_TYPE_ARG3) &vfpregs, 0) == -1)
-	perror_with_name (_("Couldn't get floating point status"));
-
-      regcache->supply_regset (&arm_fbsd_vfpregset, regnum, &vfpregs,
-			       sizeof (vfpregs));
-    }
+  fetch_register_set<struct vfpreg> (regcache, regnum, PT_GETVFPREGS,
+				     &arm_fbsd_vfpregset);
+#endif
+#ifdef PT_GETREGSET
+  gdbarch *gdbarch = regcache->arch ();
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (tdep->tls_regnum > 0)
+    fetch_regset<uint32_t> (regcache, regnum, NT_ARM_TLS, &arm_fbsd_tls_regset,
+			    tdep->tls_regnum);
 #endif
 }
 
@@ -97,36 +68,19 @@ arm_fbsd_nat_target::fetch_registers (st
 void
 arm_fbsd_nat_target::store_registers (struct regcache *regcache, int regnum)
 {
-  pid_t pid = get_ptrace_pid (regcache->ptid ());
-
-  if (regnum == -1 || getregs_supplies (regnum))
-    {
-      struct reg regs;
-
-      if (ptrace (PT_GETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
-	perror_with_name (_("Couldn't get registers"));
-
-      regcache->collect_regset (&arm_fbsd_gregset, regnum, &regs,
-			       sizeof (regs));
-
-      if (ptrace (PT_SETREGS, pid, (PTRACE_TYPE_ARG3) &regs, 0) == -1)
-	perror_with_name (_("Couldn't write registers"));
-    }
-
+  store_register_set<struct reg> (regcache, regnum, PT_GETREGS, PT_SETREGS,
+				  &arm_fbsd_gregset);
 #ifdef PT_GETVFPREGS
-  if (regnum == -1 || getvfpregs_supplies (regnum))
-    {
-      struct vfpreg vfpregs;
-
-      if (ptrace (PT_GETVFPREGS, pid, (PTRACE_TYPE_ARG3) &vfpregs, 0) == -1)
-	perror_with_name (_("Couldn't get floating point status"));
-
-      regcache->collect_regset (&arm_fbsd_vfpregset, regnum, &vfpregs,
-				sizeof (vfpregs));
-
-      if (ptrace (PT_SETVFPREGS, pid, (PTRACE_TYPE_ARG3) &vfpregs, 0) == -1)
-	perror_with_name (_("Couldn't write floating point status"));
-    }
+  store_register_set<struct vfpreg> (regcache, regnum, PT_GETVFPREGS,
+				     PT_SETVFPREGS, &arm_fbsd_vfpregset);
+#endif
+#ifdef PT_GETREGSET
+  gdbarch *gdbarch = regcache->arch ();
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (tdep->tls_regnum > 0)
+    store_regset<uint32_t> (regcache, regnum, NT_ARM_TLS, &arm_fbsd_tls_regset,
+			    tdep->tls_regnum);
 #endif
 }
 
@@ -136,15 +90,21 @@ const struct target_desc *
 arm_fbsd_nat_target::read_description ()
 {
   const struct target_desc *desc;
+  bool tls = false;
+
+  if (inferior_ptid == null_ptid)
+    return this->beneath ()->read_description ();
 
-  desc = arm_fbsd_read_description_auxv (this);
+#ifdef PT_GETREGSET
+  tls = have_regset (inferior_ptid, NT_ARM_TLS) != 0;
+#endif
+  desc = arm_fbsd_read_description_auxv (tls);
   if (desc == NULL)
     desc = this->beneath ()->read_description ();
   return desc;
 }
 
-void
-_initialize_arm_fbsd_nat (void)
+INIT_GDB_FILE (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.20200303/gdb/arm-fbsd-tdep.c ./gdb/arm-fbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-fbsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-fbsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for FreeBSD/arm.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 
 #include "elf/common.h"
 #include "target-descriptions.h"
@@ -27,6 +26,7 @@
 #include "auxv.h"
 #include "fbsd-tdep.h"
 #include "gdbcore.h"
+#include "inferior.h"
 #include "osabi.h"
 #include "solib-svr4.h"
 #include "trad-frame.h"
@@ -51,6 +51,14 @@ static const struct regcache_map_entry a
     { 0 }
   };
 
+/* Register numbers are relative to tdep->tls_regnum.  */
+
+static const struct regcache_map_entry arm_fbsd_tls_regmap[] =
+  {
+    { 1, 0, 4 },	/* tpidruro  */
+    { 0 }
+  };
+
 /* In a signal frame, sp points to a 'struct sigframe' which is
    defined as:
 
@@ -96,7 +104,7 @@ static const struct regcache_map_entry a
 
 static void
 arm_fbsd_sigframe_init (const struct tramp_frame *self,
-			struct frame_info *this_frame,
+			const frame_info_ptr &this_frame,
 			struct trad_frame_cache *this_cache,
 			CORE_ADDR func)
 {
@@ -150,7 +158,35 @@ const struct regset arm_fbsd_vfpregset =
     regcache_supply_regset, regcache_collect_regset
   };
 
-/* Implement the "regset_from_core_section" gdbarch method.  */
+static void
+arm_fbsd_supply_tls_regset (const struct regset *regset,
+			    struct regcache *regcache,
+			    int regnum, const void *buf, size_t size)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  regcache->supply_regset (regset, tdep->tls_regnum, regnum, buf, size);
+}
+
+static void
+arm_fbsd_collect_tls_regset (const struct regset *regset,
+			     const struct regcache *regcache,
+			     int regnum, void *buf, size_t size)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  regcache->collect_regset (regset, tdep->tls_regnum, regnum, buf, size);
+}
+
+const struct regset arm_fbsd_tls_regset =
+  {
+    arm_fbsd_tls_regmap,
+    arm_fbsd_supply_tls_regset, arm_fbsd_collect_tls_regset
+  };
+
+/* Implement the "iterate_over_regset_sections" gdbarch method.  */
 
 static void
 arm_fbsd_iterate_over_regset_sections (struct gdbarch *gdbarch,
@@ -158,11 +194,15 @@ arm_fbsd_iterate_over_regset_sections (s
 				       void *cb_data,
 				       const struct regcache *regcache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   cb (".reg", ARM_FBSD_SIZEOF_GREGSET, ARM_FBSD_SIZEOF_GREGSET,
       &arm_fbsd_gregset, NULL, cb_data);
 
+  if (tdep->tls_regnum > 0)
+    cb (".reg-aarch-tls", ARM_FBSD_SIZEOF_TLSREGSET, ARM_FBSD_SIZEOF_TLSREGSET,
+	&arm_fbsd_tls_regset, NULL, cb_data);
+
   /* While FreeBSD/arm cores do contain a NT_FPREGSET / ".reg2"
      register set, it is not populated with register values by the
      kernel but just contains all zeroes.  */
@@ -171,29 +211,43 @@ arm_fbsd_iterate_over_regset_sections (s
 	&arm_fbsd_vfpregset, "VFP floating-point", cb_data);
 }
 
-/* Lookup a target description from a target's AT_HWCAP auxiliary
-   vector.  */
+/* See arm-fbsd-tdep.h.  */
 
 const struct target_desc *
-arm_fbsd_read_description_auxv (struct target_ops *target)
+arm_fbsd_read_description_auxv (const std::optional<gdb::byte_vector> &auxv,
+				target_ops *target, gdbarch *gdbarch, bool tls)
 {
   CORE_ADDR arm_hwcap = 0;
 
-  if (target_auxv_search (target, AT_FREEBSD_HWCAP, &arm_hwcap) != 1)
-    return nullptr;
+  if (!auxv.has_value ()
+      || target_auxv_search (*auxv, target, gdbarch, AT_FREEBSD_HWCAP,
+			     &arm_hwcap) != 1)
+    return arm_read_description (ARM_FP_TYPE_NONE, tls);
 
   if (arm_hwcap & HWCAP_VFP)
     {
       if (arm_hwcap & HWCAP_NEON)
-	return aarch32_read_description ();
+	return aarch32_read_description (tls);
       else if ((arm_hwcap & (HWCAP_VFPv3 | HWCAP_VFPD32))
-	  == (HWCAP_VFPv3 | HWCAP_VFPD32))
-	return arm_read_description (ARM_FP_TYPE_VFPV3);
+	       == (HWCAP_VFPv3 | HWCAP_VFPD32))
+	return arm_read_description (ARM_FP_TYPE_VFPV3, tls);
       else
-      return arm_read_description (ARM_FP_TYPE_VFPV2);
+	return arm_read_description (ARM_FP_TYPE_VFPV2, tls);
     }
 
-  return nullptr;
+  return arm_read_description (ARM_FP_TYPE_NONE, tls);
+}
+
+/* See arm-fbsd-tdep.h.  */
+
+const struct target_desc *
+arm_fbsd_read_description_auxv (bool tls)
+{
+  const std::optional<gdb::byte_vector> &auxv = target_read_auxv ();
+  return arm_fbsd_read_description_auxv (auxv,
+					 current_inferior ()->top_target (),
+					 current_inferior ()->arch (),
+					 tls);
 }
 
 /* Implement the "core_read_description" gdbarch method.  */
@@ -203,7 +257,32 @@ arm_fbsd_core_read_description (struct g
 				struct target_ops *target,
 				bfd *abfd)
 {
-  return arm_fbsd_read_description_auxv (target);
+  asection *tls = bfd_get_section_by_name (abfd, ".reg-aarch-tls");
+
+  std::optional<gdb::byte_vector> auxv = target_read_auxv_raw (target);
+  return arm_fbsd_read_description_auxv (auxv, target, gdbarch, tls != nullptr);
+}
+
+/* Implement the get_thread_local_address gdbarch method.  */
+
+static CORE_ADDR
+arm_fbsd_get_thread_local_address (struct gdbarch *gdbarch, ptid_t ptid,
+				   CORE_ADDR lm_addr, CORE_ADDR offset)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+  regcache *regcache
+    = get_thread_arch_regcache (current_inferior (), ptid, gdbarch);
+
+  target_fetch_registers (regcache, tdep->tls_regnum);
+
+  ULONGEST tpidruro;
+  if (regcache->cooked_read (tdep->tls_regnum, &tpidruro) != REG_VALID)
+    error (_("Unable to fetch %%tpidruro"));
+
+  /* %tpidruro points to the TCB whose first member is the dtv
+      pointer.  */
+  CORE_ADDR dtv_addr = tpidruro;
+  return fbsd_get_thread_local_address (gdbarch, dtv_addr, lm_addr, offset);
 }
 
 /* Implement the 'init_osabi' method of struct gdb_osabi_handler.  */
@@ -211,7 +290,7 @@ arm_fbsd_core_read_description (struct g
 static void
 arm_fbsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   /* Generic FreeBSD support.  */
   fbsd_init_abi (info, gdbarch);
@@ -221,8 +300,7 @@ arm_fbsd_init_abi (struct gdbarch_info i
 
   tramp_frame_prepend_unwinder (gdbarch, &arm_fbsd_sigframe);
 
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_ilp32_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_svr4_ilp32_solib_ops);
 
   tdep->jb_pc = 24;
   tdep->jb_elt_size = 4;
@@ -231,12 +309,19 @@ arm_fbsd_init_abi (struct gdbarch_info i
     (gdbarch, arm_fbsd_iterate_over_regset_sections);
   set_gdbarch_core_read_description (gdbarch, arm_fbsd_core_read_description);
 
+  if (tdep->tls_regnum > 0)
+    {
+      set_gdbarch_fetch_tls_load_module_address (gdbarch,
+						 svr4_fetch_objfile_link_map);
+      set_gdbarch_get_thread_local_address (gdbarch,
+					    arm_fbsd_get_thread_local_address);
+    }
+
   /* Single stepping.  */
-  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
+  set_gdbarch_get_next_pcs (gdbarch, arm_software_single_step);
 }
 
-void
-_initialize_arm_fbsd_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/arm-fbsd-tdep.h ./gdb/arm-fbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-fbsd-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-fbsd-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* FreeBSD/arm target support, prototypes.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 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/>.  */
 
-#ifndef ARM_FBSD_TDEP_H
-#define ARM_FBSD_TDEP_H
+#ifndef GDB_ARM_FBSD_TDEP_H
+#define GDB_ARM_FBSD_TDEP_H
 
 #include "regset.h"
 
@@ -26,12 +26,16 @@
    PC, and CPSR registers.  */
 #define ARM_FBSD_SIZEOF_GREGSET  (17 * 4)
 
+/* The TLS regset consists of a single register.  */
+#define	ARM_FBSD_SIZEOF_TLSREGSET	(4)
+
 /* The VFP regset consists of 32 D registers plus FPSCR, and the whole
    structure is padded to 64-bit alignment.  */
 #define	ARM_FBSD_SIZEOF_VFPREGSET	(33 * 8)
 
 extern const struct regset arm_fbsd_gregset;
 extern const struct regset arm_fbsd_vfpregset;
+extern const struct regset arm_fbsd_tls_regset;
 
 /* Flags passed in AT_HWCAP. */
 #define	HWCAP_VFP		0x00000040
@@ -39,7 +43,17 @@ extern const struct regset arm_fbsd_vfpr
 #define	HWCAP_VFPv3		0x00002000
 #define	HWCAP_VFPD32		0x00080000
 
+/* Lookup a target description based on the AT_HWCAP value in the auxv data
+   AUXV.  */
+
+extern const struct target_desc *
+  arm_fbsd_read_description_auxv (const std::optional<gdb::byte_vector> &auxv,
+				  target_ops *target, gdbarch *gdbarch,
+				  bool tls);
+
+/* Same as the above, but read the auxv data from the current inferior.  */
+
 extern const struct target_desc *
-arm_fbsd_read_description_auxv (struct target_ops *target);
+  arm_fbsd_read_description_auxv (bool tls);
 
-#endif /* ARM_FBSD_TDEP_H */
+#endif /* GDB_ARM_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.20200303/gdb/arm-linux-nat.c ./gdb/arm-linux-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-linux-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-linux-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* GNU/Linux on ARM native support.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,7 +16,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/>.  */
 
-#include "defs.h"
 #include "inferior.h"
 #include "gdbcore.h"
 #include "regcache.h"
@@ -91,8 +90,6 @@ public:
 
   bool stopped_data_address (CORE_ADDR *) override;
 
-  bool watchpoint_addr_within_range (CORE_ADDR, CORE_ADDR, int) override;
-
   const struct target_desc *read_description () override;
 
   /* Override linux_nat_target low methods.  */
@@ -104,6 +101,7 @@ public:
 
   /* Handle process creation and exit.  */
   void low_new_fork (struct lwp_info *parent, pid_t child_pid) override;
+  void low_init_process (pid_t pid) override;
   void low_forget_process (pid_t pid) override;
 };
 
@@ -135,7 +133,7 @@ fetch_fpregs (struct regcache *regcache)
     ret = ptrace (PT_GETFPREGS, tid, 0, fp);
 
   if (ret < 0)
-    perror_with_name (_("Unable to fetch the floating point registers."));
+    perror_with_name (_("Unable to fetch the floating point registers"));
 
   /* Fetch fpsr.  */
   regcache->raw_supply (ARM_FPS_REGNUM, fp + NWFPE_FPSR_OFFSET);
@@ -172,7 +170,7 @@ store_fpregs (const struct regcache *reg
     ret = ptrace (PT_GETFPREGS, tid, 0, fp);
 
   if (ret < 0)
-    perror_with_name (_("Unable to fetch the floating point registers."));
+    perror_with_name (_("Unable to fetch the floating point registers"));
 
   /* Store fpsr.  */
   if (REG_VALID == regcache->get_register_status (ARM_FPS_REGNUM))
@@ -196,7 +194,7 @@ store_fpregs (const struct regcache *reg
     ret = ptrace (PTRACE_SETFPREGS, tid, 0, fp);
 
   if (ret < 0)
-    perror_with_name (_("Unable to store floating point registers."));
+    perror_with_name (_("Unable to store floating point registers"));
 }
 
 /* Fetch all general registers of the process and store into
@@ -224,7 +222,7 @@ fetch_regs (struct regcache *regcache)
     ret = ptrace (PTRACE_GETREGS, tid, 0, &regs);
 
   if (ret < 0)
-    perror_with_name (_("Unable to fetch general registers."));
+    perror_with_name (_("Unable to fetch general registers"));
 
   aarch32_gp_regcache_supply (regcache, (uint32_t *) regs, arm_apcs_32);
 }
@@ -252,7 +250,7 @@ store_regs (const struct regcache *regca
     ret = ptrace (PTRACE_GETREGS, tid, 0, &regs);
 
   if (ret < 0)
-    perror_with_name (_("Unable to fetch general registers."));
+    perror_with_name (_("Unable to fetch general registers"));
 
   aarch32_gp_regcache_collect (regcache, (uint32_t *) regs, arm_apcs_32);
 
@@ -269,7 +267,7 @@ store_regs (const struct regcache *regca
     ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
 
   if (ret < 0)
-    perror_with_name (_("Unable to store general registers."));
+    perror_with_name (_("Unable to store general registers"));
 }
 
 /* Fetch all WMMX registers of the process and store into
@@ -286,7 +284,7 @@ fetch_wmmx_regs (struct regcache *regcac
 
   ret = ptrace (PTRACE_GETWMMXREGS, tid, 0, regbuf);
   if (ret < 0)
-    perror_with_name (_("Unable to fetch WMMX registers."));
+    perror_with_name (_("Unable to fetch WMMX registers"));
 
   for (regno = 0; regno < 16; regno++)
     regcache->raw_supply (regno + ARM_WR0_REGNUM, &regbuf[regno * 8]);
@@ -311,7 +309,7 @@ store_wmmx_regs (const struct regcache *
 
   ret = ptrace (PTRACE_GETWMMXREGS, tid, 0, regbuf);
   if (ret < 0)
-    perror_with_name (_("Unable to fetch WMMX registers."));
+    perror_with_name (_("Unable to fetch WMMX registers"));
 
   for (regno = 0; regno < 16; regno++)
     if (REG_VALID == regcache->get_register_status (regno + ARM_WR0_REGNUM))
@@ -330,7 +328,7 @@ store_wmmx_regs (const struct regcache *
   ret = ptrace (PTRACE_SETWMMXREGS, tid, 0, regbuf);
 
   if (ret < 0)
-    perror_with_name (_("Unable to store WMMX registers."));
+    perror_with_name (_("Unable to store WMMX registers"));
 }
 
 static void
@@ -339,7 +337,7 @@ fetch_vfp_regs (struct regcache *regcach
   gdb_byte regbuf[ARM_VFP3_REGS_SIZE];
   int ret, tid;
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   /* Get the thread id for the ptrace call.  */
   tid = regcache->ptid ().lwp ();
@@ -356,7 +354,7 @@ fetch_vfp_regs (struct regcache *regcach
     ret = ptrace (PTRACE_GETVFPREGS, tid, 0, regbuf);
 
   if (ret < 0)
-    perror_with_name (_("Unable to fetch VFP registers."));
+    perror_with_name (_("Unable to fetch VFP registers"));
 
   aarch32_vfp_regcache_supply (regcache, regbuf,
 			       tdep->vfp_register_count);
@@ -368,7 +366,7 @@ store_vfp_regs (const struct regcache *r
   gdb_byte regbuf[ARM_VFP3_REGS_SIZE];
   int ret, tid;
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   /* Get the thread id for the ptrace call.  */
   tid = regcache->ptid ().lwp ();
@@ -385,7 +383,7 @@ store_vfp_regs (const struct regcache *r
     ret = ptrace (PTRACE_GETVFPREGS, tid, 0, regbuf);
 
   if (ret < 0)
-    perror_with_name (_("Unable to fetch VFP registers (for update)."));
+    perror_with_name (_("Unable to fetch VFP registers (for update)"));
 
   aarch32_vfp_regcache_collect (regcache, regbuf,
 				tdep->vfp_register_count);
@@ -402,7 +400,7 @@ store_vfp_regs (const struct regcache *r
     ret = ptrace (PTRACE_SETVFPREGS, tid, 0, regbuf);
 
   if (ret < 0)
-    perror_with_name (_("Unable to store VFP registers."));
+    perror_with_name (_("Unable to store VFP registers"));
 }
 
 /* Fetch registers from the child process.  Fetch all registers if
@@ -413,7 +411,7 @@ void
 arm_linux_nat_target::fetch_registers (struct regcache *regcache, int regno)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   if (-1 == regno)
     {
@@ -450,7 +448,7 @@ void
 arm_linux_nat_target::store_registers (struct regcache *regcache, int regno)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   if (-1 == regno)
     {
@@ -515,7 +513,7 @@ supply_fpregset (struct regcache *regcac
 
 ps_err_e
 ps_get_thread_area (struct ps_prochandle *ph,
-                    lwpid_t lwpid, int idx, void **base)
+		    lwpid_t lwpid, int idx, void **base)
 {
   if (ptrace (PTRACE_GET_THREAD_AREA, lwpid, NULL, base) != 0)
     return PS_ERR;
@@ -531,13 +529,16 @@ ps_get_thread_area (struct ps_prochandle
 const struct target_desc *
 arm_linux_nat_target::read_description ()
 {
-  CORE_ADDR arm_hwcap = linux_get_hwcap (this);
+  if (inferior_ptid == null_ptid)
+    return this->beneath ()->read_description ();
+
+  CORE_ADDR arm_hwcap = linux_get_hwcap ();
 
   if (have_ptrace_getregset == TRIBOOL_UNKNOWN)
     {
       elf_gregset_t gpregs;
       struct iovec iov;
-      int tid = inferior_ptid.lwp ();
+      int tid = inferior_ptid.pid ();
 
       iov.iov_base = &gpregs;
       iov.iov_len = sizeof (gpregs);
@@ -550,13 +551,13 @@ arm_linux_nat_target::read_description (
     }
 
   if (arm_hwcap & HWCAP_IWMMXT)
-    return arm_read_description (ARM_FP_TYPE_IWMMXT);
+    return arm_read_description (ARM_FP_TYPE_IWMMXT, false);
 
   if (arm_hwcap & HWCAP_VFP)
     {
       /* Make sure that the kernel supports reading VFP registers.  Support was
 	 added in 2.6.30.  */
-      int pid = inferior_ptid.lwp ();
+      int pid = inferior_ptid.pid ();
       errno = 0;
       char *buf = (char *) alloca (ARM_VFP3_REGS_SIZE);
       if (ptrace (PTRACE_GETVFPREGS, pid, 0, buf) < 0 && errno == EIO)
@@ -565,11 +566,11 @@ arm_linux_nat_target::read_description (
       /* NEON implies VFPv3-D32 or no-VFP unit.  Say that we only support
 	 Neon with VFPv3-D32.  */
       if (arm_hwcap & HWCAP_NEON)
-	return aarch32_read_description ();
+	return aarch32_read_description (false);
       else if ((arm_hwcap & (HWCAP_VFPv3 | HWCAP_VFPv3D16)) == HWCAP_VFPv3)
-	return arm_read_description (ARM_FP_TYPE_VFPV3);
+	return arm_read_description (ARM_FP_TYPE_VFPV3, false);
 
-      return arm_read_description (ARM_FP_TYPE_VFPV2);
+      return arm_read_description (ARM_FP_TYPE_VFPV2, false);
     }
 
   return this->beneath ()->read_description ();
@@ -619,18 +620,18 @@ arm_linux_get_hwbp_cap (void)
 	  info.bp_count = (gdb_byte)(val & 0xff);
 
       if (info.wp_count > MAX_WPTS)
-        {
-          warning (_("arm-linux-gdb supports %d hardware watchpoints but target \
-                      supports %d"), MAX_WPTS, info.wp_count);
-          info.wp_count = MAX_WPTS;
-        }
+	{
+	  warning (_("arm-linux-gdb supports %d hardware watchpoints but target \
+		      supports %d"), MAX_WPTS, info.wp_count);
+	  info.wp_count = MAX_WPTS;
+	}
 
       if (info.bp_count > MAX_BPTS)
-        {
-          warning (_("arm-linux-gdb supports %d hardware breakpoints but target \
-                      supports %d"), MAX_BPTS, info.bp_count);
-          info.bp_count = MAX_BPTS;
-        }
+	{
+	  warning (_("arm-linux-gdb supports %d hardware breakpoints but target \
+		      supports %d"), MAX_BPTS, info.bp_count);
+	  info.bp_count = MAX_BPTS;
+	}
 	  available = (info.arch != 0);
 	}
     }
@@ -711,13 +712,13 @@ struct arm_linux_hw_breakpoint
 
    The Linux ptrace interface to hardware break-/watch-points presents the 
    values in a vector centred around 0 (which is used fo generic information).
-   Positive indicies refer to breakpoint addresses/control registers, negative
+   Positive indices refer to breakpoint addresses/control registers, negative
    indices to watchpoint addresses/control registers.
 
    The Linux vector is indexed as follows:
       -((i << 1) + 2): Control register for watchpoint i.
       -((i << 1) + 1): Address register for watchpoint i.
-                    0: Information register.
+		    0: Information register.
        ((i << 1) + 1): Address register for breakpoint i.
        ((i << 1) + 2): Control register for breakpoint i.
 
@@ -803,6 +804,19 @@ arm_linux_process_info_get (pid_t pid)
   return proc;
 }
 
+/* Implement the "low_init_process" target_ops method.  */
+
+void
+arm_linux_nat_target::low_init_process (pid_t pid)
+{
+  /* Set the hardware debug register capacity.  This requires the process to be
+     ptrace-stopped, otherwise detection will fail and software watchpoints will
+     be used instead of hardware.  If we allow this to be done lazily, we
+     cannot guarantee that it's called when the process is ptrace-stopped, so
+     do it now.  */
+  arm_linux_get_hwbp_cap ();
+}
+
 /* Called whenever GDB is no longer debugging process PID.  It deletes
    data structures that keep track of debug register state.  */
 
@@ -860,6 +874,14 @@ arm_hwbp_control_is_enabled (arm_hwbp_co
   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)
@@ -963,7 +985,7 @@ update_registers_callback (struct lwp_in
    =1) BPT for thread TID.  */
 static void
 arm_linux_insert_hw_breakpoint1 (const struct arm_linux_hw_breakpoint* bpt, 
-                                 int watchpoint)
+				 int watchpoint)
 {
   int pid;
   ptid_t pid_ptid;
@@ -987,14 +1009,14 @@ arm_linux_insert_hw_breakpoint1 (const s
   for (i = 0; i < count; ++i)
     if (!arm_hwbp_control_is_enabled (bpts[i].control))
       {
-        bpts[i] = *bpt;
-        iterate_over_lwps (pid_ptid,
+	bpts[i] = *bpt;
+	iterate_over_lwps (pid_ptid,
 			   [=] (struct lwp_info *info)
 			   {
 			     return update_registers_callback (info, watchpoint,
 							       i);
 			   });
-        break;
+	break;
       }
 
   gdb_assert (i != count);
@@ -1004,7 +1026,7 @@ arm_linux_insert_hw_breakpoint1 (const s
    (WATCHPOINT = 1) BPT for thread TID.  */
 static void
 arm_linux_remove_hw_breakpoint1 (const struct arm_linux_hw_breakpoint *bpt, 
-                                 int watchpoint)
+				 int watchpoint)
 {
   int pid;
   gdb_byte count, i;
@@ -1028,14 +1050,14 @@ arm_linux_remove_hw_breakpoint1 (const s
   for (i = 0; i < count; ++i)
     if (arm_linux_hw_breakpoint_equal (bpt, bpts + i))
       {
-        bpts[i].control = arm_hwbp_control_disable (bpts[i].control);
+	bpts[i].control = arm_hwbp_control_disable (bpts[i].control);
 	iterate_over_lwps (pid_ptid,
 			   [=] (struct lwp_info *info)
 			   {
 			     return update_registers_callback (info, watchpoint,
 							       i);
 			   });
-        break;
+	break;
       }
 
   gdb_assert (i != count);
@@ -1182,14 +1204,6 @@ arm_linux_nat_target::stopped_by_watchpo
   return stopped_data_address (&addr);
 }
 
-bool
-arm_linux_nat_target::watchpoint_addr_within_range (CORE_ADDR addr,
-						    CORE_ADDR start,
-						    int length)
-{
-  return start <= addr && start + length - 1 >= addr;
-}
-
 /* Handle thread creation.  We need to copy the breakpoints and watchpoints
    in the parent thread to the child thread.  */
 void
@@ -1218,6 +1232,34 @@ arm_linux_nat_target::low_delete_thread
   xfree (arch_lwp);
 }
 
+/* For PID, set the address register of hardware breakpoint pair I to
+   ADDRESS.  */
+
+static void
+sethbpregs_hwbp_address (int pid, int i, unsigned int address)
+{
+  PTRACE_TYPE_ARG3 address_reg = (PTRACE_TYPE_ARG3) ((i << 1) + 1);
+
+  errno = 0;
+
+  if (ptrace (PTRACE_SETHBPREGS, pid, address_reg, &address) < 0)
+    perror_with_name (_("Unexpected error updating breakpoint address"));
+}
+
+/* For PID, set the control register of hardware breakpoint pair I to
+   CONTROL.  */
+
+static void
+sethbpregs_hwbp_control (int pid, int i, arm_hwbp_control_t control)
+{
+  PTRACE_TYPE_ARG3 control_reg = (PTRACE_TYPE_ARG3) ((i << 1) + 2);
+
+  errno = 0;
+
+  if (ptrace (PTRACE_SETHBPREGS, pid, control_reg, &control) < 0)
+    perror_with_name (_("Unexpected error setting breakpoint control"));
+}
+
 /* Called when resuming a thread.
    The hardware debug registers are updated when there is any change.  */
 
@@ -1241,35 +1283,77 @@ arm_linux_nat_target::low_prepare_to_res
   for (i = 0; i < arm_linux_get_hw_breakpoint_count (); i++)
     if (arm_lwp_info->bpts_changed[i])
       {
-        errno = 0;
-        if (arm_hwbp_control_is_enabled (bpts[i].control))
-          if (ptrace (PTRACE_SETHBPREGS, pid,
-              (PTRACE_TYPE_ARG3) ((i << 1) + 1), &bpts[i].address) < 0)
-            perror_with_name (_("Unexpected error setting breakpoint"));
-
-        if (bpts[i].control != 0)
-          if (ptrace (PTRACE_SETHBPREGS, pid,
-              (PTRACE_TYPE_ARG3) ((i << 1) + 2), &bpts[i].control) < 0)
-            perror_with_name (_("Unexpected error setting breakpoint"));
+	unsigned int address = bpts[i].address;
+	arm_hwbp_control_t control = bpts[i].control;
 
-        arm_lwp_info->bpts_changed[i] = 0;
+	if (!arm_hwbp_control_is_initialized (control))
+	  {
+	    /* Nothing to do.  */
+	  }
+	else if (!arm_hwbp_control_is_enabled (control))
+	  {
+	    /* Disable hardware breakpoint, just write the control
+	       register.  */
+	    sethbpregs_hwbp_control (pid, i, control);
+	  }
+	else
+	  {
+	    /* We used to do here simply:
+	       1. address_reg = address
+	       2. control_reg = control
+	       but the write to address_reg can fail for thumb2 instructions if
+	       the address is not 4-byte aligned.
+
+	       It's not clear whether this is a kernel bug or not, partly
+	       because PTRACE_SETHBPREGS is undocumented.
+
+	       The context is that we're using two ptrace calls to set the two
+	       halves of a register pair.  For each ptrace call, the kernel must
+	       check the arguments, and return -1 and set errno appropriately if
+	       something is wrong.  One of the aspects that needs validation is
+	       whether, in terms of hw_breakpoint_arch_parse, the breakpoint
+	       address matches the breakpoint length.  This aspect can only be
+	       checked by looking in both registers, which only makes sense
+	       once a pair is written in full.
+
+	       The problem is that the kernel checks this aspect after each
+	       ptrace call, and consequently for the first call it may be
+	       checking this aspect using a default or previous value for the
+	       part of the pair not written by the call.  A possible fix for
+	       this would be to only check this aspect when writing the
+	       control reg.
+
+	       Work around this by first using an inoffensive address, which is
+	       guaranteed to hit the offset == 0 case in
+	       hw_breakpoint_arch_parse.  */
+	    unsigned int aligned_address = address & ~0x7U;
+	    if (aligned_address != address)
+	      {
+		sethbpregs_hwbp_address (pid, i, aligned_address);
+		sethbpregs_hwbp_control (pid, i, control);
+	      }
+	    sethbpregs_hwbp_address (pid, i, address);
+	    sethbpregs_hwbp_control (pid, i, control);
+	  }
+
+	arm_lwp_info->bpts_changed[i] = 0;
       }
 
   for (i = 0; i < arm_linux_get_hw_watchpoint_count (); i++)
     if (arm_lwp_info->wpts_changed[i])
       {
-        errno = 0;
-        if (arm_hwbp_control_is_enabled (wpts[i].control))
-          if (ptrace (PTRACE_SETHBPREGS, pid,
-              (PTRACE_TYPE_ARG3) -((i << 1) + 1), &wpts[i].address) < 0)
-            perror_with_name (_("Unexpected error setting watchpoint"));
-
-        if (wpts[i].control != 0)
-          if (ptrace (PTRACE_SETHBPREGS, pid,
-              (PTRACE_TYPE_ARG3) -((i << 1) + 2), &wpts[i].control) < 0)
-            perror_with_name (_("Unexpected error setting watchpoint"));
+	errno = 0;
+	if (arm_hwbp_control_is_enabled (wpts[i].control))
+	  if (ptrace (PTRACE_SETHBPREGS, pid,
+	      (PTRACE_TYPE_ARG3) -((i << 1) + 1), &wpts[i].address) < 0)
+	    perror_with_name (_("Unexpected error setting watchpoint"));
+
+	if (wpts[i].control != 0)
+	  if (ptrace (PTRACE_SETHBPREGS, pid,
+	      (PTRACE_TYPE_ARG3) -((i << 1) + 2), &wpts[i].control) < 0)
+	    perror_with_name (_("Unexpected error setting watchpoint"));
 
-        arm_lwp_info->wpts_changed[i] = 0;
+	arm_lwp_info->wpts_changed[i] = 0;
       }
 }
 
@@ -1299,8 +1383,7 @@ arm_linux_nat_target::low_new_fork (stru
   *child_state = *parent_state;
 }
 
-void
-_initialize_arm_linux_nat (void)
+INIT_GDB_FILE (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.20200303/gdb/arm-linux-tdep.c ./gdb/arm-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-linux-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-linux-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux on ARM target support.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "target.h"
 #include "value.h"
 #include "gdbtypes.h"
@@ -32,6 +32,7 @@
 #include "breakpoint.h"
 #include "auxv.h"
 #include "xml-syscall.h"
+#include "expop.h"
 
 #include "aarch32-tdep.h"
 #include "arch/arm.h"
@@ -40,6 +41,7 @@
 #include "arm-tdep.h"
 #include "arm-linux-tdep.h"
 #include "linux-tdep.h"
+#include "solib-svr4-linux.h"
 #include "glibc-tdep.h"
 #include "arch-utils.h"
 #include "inferior.h"
@@ -59,7 +61,7 @@
 
 /* Under ARM GNU/Linux the traditional way of performing a breakpoint
    is to execute a particular software interrupt, rather than use a
-   particular undefined instruction to provoke a trap.  Upon exection
+   particular undefined instruction to provoke a trap.  Upon execution
    of the software interrupt the kernel stops the inferior with a
    SIGTRAP, and wakes the debugger.  */
 
@@ -97,15 +99,16 @@ static const gdb_byte arm_linux_thumb2_l
 
    The location of saved registers in this buffer (in particular the PC
    to use after longjmp is called) varies depending on the ABI (in 
-   particular the FP model) and also (possibly) the C Library.
-
-   For glibc, eglibc, and uclibc the following holds:  If the FP model is 
-   SoftVFP or VFP (which implies EABI) then the PC is at offset 9 in the 
-   buffer.  This is also true for the SoftFPA model.  However, for the FPA 
-   model the PC is at offset 21 in the buffer.  */
+   particular the FP model) and also (possibly) the C Library.  */
 #define ARM_LINUX_JB_ELEMENT_SIZE	ARM_INT_REGISTER_SIZE
+/* For the FPA model the PC is at offset 21 in the buffer.  */
 #define ARM_LINUX_JB_PC_FPA		21
-#define ARM_LINUX_JB_PC_EABI		9
+/* For glibc 2.20 and later the PC is at offset 1, see glibc commit 80a56cc3ee
+   ("ARM: Add SystemTap probes to longjmp and setjmp.").
+   For newlib and uclibc, this is not correct, we need osabi settings to deal
+   with those, see PR31854 and PR31856.  Likewise for older versions of
+   glibc.  */
+#define ARM_LINUX_JB_PC_EABI		1
 
 /*
    Dynamic Linking on ARM GNU/Linux
@@ -276,7 +279,7 @@ static struct arm_get_next_pcs_ops arm_l
 };
 
 static void
-arm_linux_sigtramp_cache (struct frame_info *this_frame,
+arm_linux_sigtramp_cache (const frame_info_ptr &this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func, int regs_offset)
 {
@@ -299,7 +302,7 @@ arm_linux_sigtramp_cache (struct frame_i
 /* See arm-linux.h for stack layout details.  */
 static void
 arm_linux_sigreturn_init (const struct tramp_frame *self,
-			  struct frame_info *this_frame,
+			  const frame_info_ptr &this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func)
 {
@@ -319,7 +322,7 @@ arm_linux_sigreturn_init (const struct t
 
 static void
 arm_linux_rt_sigreturn_init (const struct tramp_frame *self,
-			  struct frame_info *this_frame,
+			  const frame_info_ptr &this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func)
 {
@@ -342,7 +345,7 @@ arm_linux_rt_sigreturn_init (const struc
 
 static void
 arm_linux_restart_syscall_init (const struct tramp_frame *self,
-				struct frame_info *this_frame,
+				const frame_info_ptr &this_frame,
 				struct trad_frame_cache *this_cache,
 				CORE_ADDR func)
 {
@@ -711,7 +714,7 @@ arm_linux_iterate_over_regset_sections (
 					void *cb_data,
 					const struct regcache *regcache)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   cb (".reg", ARM_LINUX_SIZEOF_GREGSET, ARM_LINUX_SIZEOF_GREGSET,
       &arm_linux_gregset, NULL, cb_data);
@@ -728,21 +731,22 @@ arm_linux_iterate_over_regset_sections (
 
 static const struct target_desc *
 arm_linux_core_read_description (struct gdbarch *gdbarch,
-                                 struct target_ops *target,
-                                 bfd *abfd)
+				 struct target_ops *target,
+				 bfd *abfd)
 {
-  CORE_ADDR arm_hwcap = linux_get_hwcap (target);
+  std::optional<gdb::byte_vector> auxv = target_read_auxv_raw (target);
+  CORE_ADDR arm_hwcap = linux_get_hwcap (auxv, target, gdbarch);
 
   if (arm_hwcap & HWCAP_VFP)
     {
       /* NEON implies VFPv3-D32 or no-VFP unit.  Say that we only support
-         Neon with VFPv3-D32.  */
+	 Neon with VFPv3-D32.  */
       if (arm_hwcap & HWCAP_NEON)
-	return aarch32_read_description ();
+	return aarch32_read_description (false);
       else if ((arm_hwcap & (HWCAP_VFPv3 | HWCAP_VFPv3D16)) == HWCAP_VFPv3)
-	return arm_read_description (ARM_FP_TYPE_VFPV3);
+	return arm_read_description (ARM_FP_TYPE_VFPV3, false);
 
-      return arm_read_description (ARM_FP_TYPE_VFPV2);
+      return arm_read_description (ARM_FP_TYPE_VFPV2, false);
     }
 
   return nullptr;
@@ -754,7 +758,7 @@ arm_linux_core_read_description (struct
    will return to ARM or Thumb code.  Return 0 if it is not a
    rt_sigreturn/sigreturn syscall.  */
 static int
-arm_linux_sigreturn_return_addr (struct frame_info *frame,
+arm_linux_sigreturn_return_addr (const frame_info_ptr &frame,
 				 unsigned long svc_number,
 				 CORE_ADDR *pc, int *is_thumb)
 {
@@ -811,6 +815,32 @@ arm_linux_sigreturn_next_pc (struct regc
   return next_pc;
 }
 
+/* Return true if we're at execve syscall-exit-stop.  */
+
+static bool
+is_execve_syscall_exit (struct regcache *regs)
+{
+  ULONGEST reg = -1;
+
+  /* Check that lr is 0.  */
+  regcache_cooked_read_unsigned (regs, ARM_LR_REGNUM, &reg);
+  if (reg != 0)
+    return false;
+
+  /* Check that r0-r8 is 0.  */
+  for (int i = 0; i <= 8; ++i)
+    {
+      reg = -1;
+      regcache_cooked_read_unsigned (regs, ARM_A1_REGNUM + i, &reg);
+      if (reg != 0)
+	return false;
+    }
+
+  return true;
+}
+
+#define arm_sys_execve 11
+
 /* At a ptrace syscall-stop, return the syscall number.  This either
    comes from the SWI instruction (OABI) or from r7 (EABI).
 
@@ -828,6 +858,9 @@ arm_linux_get_syscall_number (struct gdb
   int is_thumb;
   ULONGEST svc_number = -1;
 
+  if (is_execve_syscall_exit (regs))
+    return arm_sys_execve;
+
   regcache_cooked_read_unsigned (regs, ARM_PC_REGNUM, &pc);
   regcache_cooked_read_unsigned (regs, ARM_PS_REGNUM, &cpsr);
   is_thumb = (cpsr & t_bit) != 0;
@@ -843,19 +876,24 @@ arm_linux_get_syscall_number (struct gdb
 
       /* PC gets incremented before the syscall-stop, so read the
 	 previous instruction.  */
-      unsigned long this_instr = 
-	read_memory_unsigned_integer (pc - 4, 4, byte_order_for_code);
-
+      unsigned long this_instr;
+      {
+	ULONGEST val;
+	if (!safe_read_memory_unsigned_integer (pc - 4, 4, byte_order_for_code,
+						&val))
+	  return -1;
+	this_instr = val;
+      }
       unsigned long svc_operand = (0x00ffffff & this_instr);
 
       if (svc_operand)
 	{
-          /* OABI */
+	  /* OABI */
 	  svc_number = svc_operand - 0x900000;
 	}
       else
 	{
-          /* EABI */
+	  /* EABI */
 	  regcache_cooked_read_unsigned (regs, 7, &svc_number);
 	}
     }
@@ -867,8 +905,10 @@ static CORE_ADDR
 arm_linux_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 (self->regcache);
+  regcache *regcache
+    = gdb::checked_static_cast<struct regcache *> (self->regcache);
+  CORE_ADDR pc = regcache_read_pc (regcache);
+  int is_thumb = arm_is_thumb (regcache);
   ULONGEST svc_number = 0;
 
   if (is_thumb)
@@ -878,7 +918,7 @@ arm_linux_get_next_pcs_syscall_next_pc (
     }
   else
     {
-      struct gdbarch *gdbarch = self->regcache->arch ();
+      struct gdbarch *gdbarch = regcache->arch ();
       enum bfd_endian byte_order_for_code = 
 	gdbarch_byte_order_for_code (gdbarch);
       unsigned long this_instr = 
@@ -901,8 +941,7 @@ arm_linux_get_next_pcs_syscall_next_pc (
     {
       /* SIGRETURN or RT_SIGRETURN may affect the arm thumb mode, so
 	 update IS_THUMB.   */
-      next_pc = arm_linux_sigreturn_next_pc (self->regcache, svc_number,
-					     &is_thumb);
+      next_pc = arm_linux_sigreturn_next_pc (regcache, svc_number, &is_thumb);
     }
 
   /* Addresses for calling Thumb functions have the bit 0 set.  */
@@ -946,7 +985,7 @@ arm_linux_software_single_step (struct r
 static void
 arm_linux_cleanup_svc (struct gdbarch *gdbarch,
 		       struct regcache *regs,
-		       arm_displaced_step_closure *dsc)
+		       arm_displaced_step_copy_insn_closure *dsc)
 {
   ULONGEST apparent_pc;
   int within_scratch;
@@ -957,15 +996,11 @@ arm_linux_cleanup_svc (struct gdbarch *g
 		    && apparent_pc < (dsc->scratch_base
 				      + ARM_DISPLACED_MODIFIED_INSNS * 4 + 4));
 
-  if (debug_displaced)
-    {
-      fprintf_unfiltered (gdb_stdlog, "displaced: PC is apparently %.8lx after "
-			  "SVC step ", (unsigned long) apparent_pc);
-      if (within_scratch)
-        fprintf_unfiltered (gdb_stdlog, "(within scratch space)\n");
-      else
-        fprintf_unfiltered (gdb_stdlog, "(outside scratch space)\n");
-    }
+  displaced_debug_printf ("PC is apparently %.8lx after SVC step %s",
+			  (unsigned long) apparent_pc,
+			  (within_scratch
+			   ? "(within scratch space)"
+			   : "(outside scratch space)"));
 
   if (within_scratch)
     displaced_write_reg (regs, dsc, ARM_PC_REGNUM,
@@ -974,11 +1009,11 @@ arm_linux_cleanup_svc (struct gdbarch *g
 
 static int
 arm_linux_copy_svc (struct gdbarch *gdbarch, struct regcache *regs,
-		    arm_displaced_step_closure *dsc)
+		    arm_displaced_step_copy_insn_closure *dsc)
 {
   CORE_ADDR return_to = 0;
 
-  struct frame_info *frame;
+  frame_info_ptr frame;
   unsigned int svc_number = displaced_read_reg (regs, dsc, 7);
   int is_sigreturn = 0;
   int is_thumb;
@@ -991,16 +1026,12 @@ arm_linux_copy_svc (struct gdbarch *gdba
     {
       struct symtab_and_line sal;
 
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog, "displaced: found "
-			    "sigreturn/rt_sigreturn SVC call.  PC in "
-			    "frame = %lx\n",
-			    (unsigned long) get_frame_pc (frame));
-
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog, "displaced: unwind pc = %lx.  "
-			    "Setting momentary breakpoint.\n",
-			    (unsigned long) return_to);
+      displaced_debug_printf ("found sigreturn/rt_sigreturn SVC call.  "
+			      "PC in frame = %lx",
+			      (unsigned long) get_frame_pc (frame));
+
+      displaced_debug_printf ("unwind pc = %lx.  Setting momentary breakpoint.",
+			      (unsigned long) return_to);
 
       gdb_assert (inferior_thread ()->control.step_resume_breakpoint
 		  == NULL);
@@ -1018,26 +1049,22 @@ arm_linux_copy_svc (struct gdbarch *gdba
 	    = set_momentary_breakpoint (gdbarch, sal, get_frame_id (frame),
 					bp_step_resume).release ();
 
-	  /* set_momentary_breakpoint invalidates FRAME.  */
-	  frame = NULL;
-
 	  /* We need to make sure we actually insert the momentary
 	     breakpoint set above.  */
 	  insert_breakpoints ();
 	}
-      else if (debug_displaced)
-	fprintf_unfiltered (gdb_stderr, "displaced: couldn't find previous "
-			    "frame to set momentary breakpoint for "
-			    "sigreturn/rt_sigreturn\n");
+      else
+	displaced_debug_printf ("couldn't find previous frame to set momentary "
+				"breakpoint for sigreturn/rt_sigreturn");
     }
-  else if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: found SVC call\n");
+  else
+    displaced_debug_printf ("found SVC call");
 
   /* Preparation: If we detect sigreturn, set momentary breakpoint at resume
 		  location, else nothing.
      Insn: unmodified svc.
      Cleanup: if pc lands in scratch space, pc <- insn_addr + insn_size
-              else leave pc alone.  */
+	      else leave pc alone.  */
 
 
   dsc->cleanup = &arm_linux_cleanup_svc;
@@ -1065,7 +1092,7 @@ arm_linux_copy_svc (struct gdbarch *gdba
 static void
 cleanup_kernel_helper_return (struct gdbarch *gdbarch,
 			      struct regcache *regs,
-			      arm_displaced_step_closure *dsc)
+			      arm_displaced_step_copy_insn_closure *dsc)
 {
   displaced_write_reg (regs, dsc, ARM_LR_REGNUM, dsc->tmp[0], CANNOT_WRITE_PC);
   displaced_write_reg (regs, dsc, ARM_PC_REGNUM, dsc->tmp[0], BRANCH_WRITE_PC);
@@ -1074,7 +1101,7 @@ cleanup_kernel_helper_return (struct gdb
 static void
 arm_catch_kernel_helper_return (struct gdbarch *gdbarch, CORE_ADDR from,
 				CORE_ADDR to, struct regcache *regs,
-				arm_displaced_step_closure *dsc)
+				arm_displaced_step_copy_insn_closure *dsc)
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
 
@@ -1086,7 +1113,7 @@ arm_catch_kernel_helper_return (struct g
   dsc->wrote_to_pc = 1;
 
   /* Preparation: tmp[0] <- r14
-                  r14 <- <scratch space>+4
+		  r14 <- <scratch space>+4
 		  *(<scratch space>+8) <- from
      Insn: ldr pc, [r14, #4]
      Cleanup: r14 <- tmp[0], pc <- tmp[0].  */
@@ -1103,34 +1130,35 @@ 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_copy_insn_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_copy_insn_closure> dsc
+    (new arm_displaced_step_copy_insn_closure);
 
   /* Detect when we enter an (inaccessible by GDB) Linux kernel helper, and
      stop at the return location.  */
   if (from > 0xffff0000)
     {
-      if (debug_displaced)
-        fprintf_unfiltered (gdb_stdlog, "displaced: detected kernel helper "
-			    "at %.8lx\n", (unsigned long) from);
+      displaced_debug_printf ("detected kernel helper at %.8lx",
+			      (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_copy_insn_closure_up (dsc.release ());
 }
 
 /* Implementation of `gdbarch_stap_is_single_operand', as defined in
@@ -1154,7 +1182,7 @@ arm_stap_is_single_operand (struct gdbar
    It returns one if the special token has been parsed successfully,
    or zero if the current token is not considered special.  */
 
-static int
+static expr::operation_up
 arm_stap_parse_special_token (struct gdbarch *gdbarch,
 			      struct stap_parse_info *p)
 {
@@ -1169,7 +1197,6 @@ arm_stap_parse_special_token (struct gdb
       int len, offset;
       int got_minus = 0;
       long displacement;
-      struct stoken str;
 
       ++tmp;
       start = tmp;
@@ -1179,7 +1206,7 @@ arm_stap_parse_special_token (struct gdb
 	++tmp;
 
       if (*tmp != ',')
-	return 0;
+	return {};
 
       len = tmp - start;
       regname = (char *) alloca (len + 2);
@@ -1220,43 +1247,38 @@ arm_stap_parse_special_token (struct gdb
 
       /* Skipping last `]'.  */
       if (*tmp++ != ']')
-	return 0;
+	return {};
+      p->arg = tmp;
+
+      using namespace expr;
 
       /* The displacement.  */
-      write_exp_elt_opcode (&p->pstate, OP_LONG);
-      write_exp_elt_type (&p->pstate, builtin_type (gdbarch)->builtin_long);
-      write_exp_elt_longcst (&p->pstate, displacement);
-      write_exp_elt_opcode (&p->pstate, OP_LONG);
+      struct type *long_type = builtin_type (gdbarch)->builtin_long;
       if (got_minus)
-	write_exp_elt_opcode (&p->pstate, UNOP_NEG);
+	displacement = -displacement;
+      operation_up disp = make_operation<long_const_operation> (long_type,
+								displacement);
 
       /* The register name.  */
-      write_exp_elt_opcode (&p->pstate, OP_REGISTER);
-      str.ptr = regname;
-      str.length = len;
-      write_exp_string (&p->pstate, str);
-      write_exp_elt_opcode (&p->pstate, OP_REGISTER);
+      operation_up reg
+	= make_operation<register_operation> (regname);
 
-      write_exp_elt_opcode (&p->pstate, BINOP_ADD);
+      operation_up sum
+	= make_operation<add_operation> (std::move (reg), std::move (disp));
 
       /* Casting to the expected type.  */
-      write_exp_elt_opcode (&p->pstate, UNOP_CAST);
-      write_exp_elt_type (&p->pstate, lookup_pointer_type (p->arg_type));
-      write_exp_elt_opcode (&p->pstate, UNOP_CAST);
-
-      write_exp_elt_opcode (&p->pstate, UNOP_IND);
-
-      p->arg = tmp;
+      struct type *arg_ptr_type = lookup_pointer_type (p->arg_type);
+      sum = make_operation<unop_cast_operation> (std::move (sum),
+						 arg_ptr_type);
+      return make_operation<unop_ind_operation> (std::move (sum));
     }
-  else
-    return 0;
 
-  return 1;
+  return {};
 }
 
 /* ARM process record-replay constructs: syscall, signal etc.  */
 
-struct linux_record_tdep arm_linux_record_tdep;
+static linux_record_tdep arm_linux_record_tdep;
 
 /* arm_canonicalize_syscall maps from the native arm Linux set
    of syscall ids into a canonical set of syscall ids used by
@@ -1277,7 +1299,7 @@ arm_canonicalize_syscall (int syscall)
     case 8: return gdb_sys_creat;
     case 9: return gdb_sys_link;
     case 10: return gdb_sys_unlink;
-    case 11: return gdb_sys_execve;
+    case arm_sys_execve: return gdb_sys_execve;
     case 12: return gdb_sys_chdir;
     case 13: return gdb_sys_time;
     case 14: return gdb_sys_mknod;
@@ -1340,8 +1362,8 @@ arm_canonicalize_syscall (int syscall)
     case 86: return gdb_sys_uselib;
     case 87: return gdb_sys_swapon;
     case 88: return gdb_sys_reboot;
-    case 89: return gdb_old_readdir;
-    case 90: return gdb_old_mmap;
+    case 89: return gdb_sys_old_readdir;
+    case 90: return gdb_sys_old_mmap;
     case 91: return gdb_sys_munmap;
     case 92: return gdb_sys_truncate;
     case 93: return gdb_sys_ftruncate;
@@ -1608,7 +1630,9 @@ arm_canonicalize_syscall (int syscall)
     case 363: return gdb_sys_rt_tgsigqueueinfo;
     case 364: return gdb_sys_perf_event_open;
     case 365: return gdb_sys_recvmmsg;
+      */
     case 366: return gdb_sys_accept4;
+      /*
     case 367: return gdb_sys_fanotify_init;
     case 368: return gdb_sys_fanotify_mark;
     case 369: return gdb_sys_prlimit64;
@@ -1623,6 +1647,9 @@ arm_canonicalize_syscall (int syscall)
     case 378: return gdb_sys_kcmp;
     case 379: return gdb_sys_finit_module;
       */
+    case 384: return gdb_sys_getrandom;
+    case 397: return gdb_sys_statx;
+    case 403: return gdb_sys_clock_gettime64;
     case 983041: /* ARM_breakpoint */ return gdb_sys_no_syscall;
     case 983042: /* ARM_cacheflush */ return gdb_sys_no_syscall;
     case 983043: /* ARM_usr26 */ return gdb_sys_no_syscall;
@@ -1642,7 +1669,7 @@ arm_all_but_pc_registers_record (struct
   for (i = 0; i < ARM_PC_REGNUM; i++)
     {
       if (record_full_arch_list_add_reg (regcache, ARM_A1_REGNUM + i))
-        return -1;
+	return -1;
     }
 
   if (record_full_arch_list_add_reg (regcache, ARM_PS_REGNUM))
@@ -1663,9 +1690,10 @@ arm_linux_syscall_record (struct regcach
 
   if (syscall_gdb == gdb_sys_no_syscall)
     {
-      printf_unfiltered (_("Process record and replay target doesn't "
-                           "support syscall number %s\n"),
-                           plongest (svc_number));
+      gdb_printf (gdb_stderr,
+		  _("Process record and replay target doesn't "
+		    "support syscall number %s\n"),
+		  plongest (svc_number));
       return -1;
     }
 
@@ -1678,7 +1706,7 @@ arm_linux_syscall_record (struct regcach
    }
 
   ret = record_linux_system_call (syscall_gdb, regcache,
-                                  &arm_linux_record_tdep);
+				  &arm_linux_record_tdep);
   if (ret != 0)
     return ret;
 
@@ -1698,7 +1726,7 @@ arm_linux_syscall_record (struct regcach
 /* Implement the skip_trampoline_code gdbarch method.  */
 
 static CORE_ADDR
-arm_linux_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
+arm_linux_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
 {
   CORE_ADDR target_pc = arm_skip_stub (frame, pc);
 
@@ -1727,9 +1755,9 @@ arm_linux_init_abi (struct gdbarch_info
 								    NULL };
   static const char *const stap_register_indirection_suffixes[] = { "]",
 								    NULL };
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
-  linux_init_abi (info, gdbarch);
+  linux_init_abi (info, gdbarch, 1);
 
   tdep->lowest_pc = 0x8000;
   if (info.byte_order_for_code == BFD_ENDIAN_BIG)
@@ -1769,17 +1797,15 @@ arm_linux_init_abi (struct gdbarch_info
       break;
     default:
       internal_error
-	(__FILE__, __LINE__,
-         _("arm_linux_init_abi: Floating point model not supported"));
+	(_("arm_linux_init_abi: Floating point model not supported"));
       break;
     }
   tdep->jb_elt_size = ARM_LINUX_JB_ELEMENT_SIZE;
 
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_ilp32_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_linux_ilp32_svr4_solib_ops);
 
   /* Single stepping.  */
-  set_gdbarch_software_single_step (gdbarch, arm_linux_software_single_step);
+  set_gdbarch_get_next_pcs (gdbarch, arm_linux_software_single_step);
 
   /* Shared library handling.  */
   set_gdbarch_skip_trampoline_code (gdbarch, arm_linux_skip_trampoline_code);
@@ -1787,7 +1813,7 @@ arm_linux_init_abi (struct gdbarch_info
 
   /* Enable TLS support.  */
   set_gdbarch_fetch_tls_load_module_address (gdbarch,
-                                             svr4_fetch_objfile_link_map);
+					     svr4_fetch_objfile_link_map);
 
   tramp_frame_prepend_unwinder (gdbarch,
 				&arm_linux_sigreturn_tramp_frame);
@@ -1815,7 +1841,6 @@ arm_linux_init_abi (struct gdbarch_info
   set_gdbarch_displaced_step_copy_insn (gdbarch,
 					arm_linux_displaced_step_copy_insn);
   set_gdbarch_displaced_step_fixup (gdbarch, arm_displaced_step_fixup);
-  set_gdbarch_displaced_step_location (gdbarch, linux_displaced_step_location);
 
   /* Reversible debugging, process record.  */
   set_gdbarch_process_record (gdbarch, arm_process_record);
@@ -2001,8 +2026,7 @@ arm_linux_init_abi (struct gdbarch_info
   set_gdbarch_gcc_target_options (gdbarch, arm_linux_gcc_target_options);
 }
 
-void
-_initialize_arm_linux_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/arm-linux-tdep.h ./gdb/arm-linux-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-linux-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-linux-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GNU/Linux on ARM target support, prototypes.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 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/>.  */
 
-#ifndef ARM_LINUX_TDEP_H
-#define ARM_LINUX_TDEP_H
+#ifndef GDB_ARM_LINUX_TDEP_H
+#define GDB_ARM_LINUX_TDEP_H
 
 struct regset;
 struct regcache;
@@ -67,4 +67,4 @@ void arm_linux_collect_nwfpe (const stru
 #define HWCAP_VFPv3     8192
 #define HWCAP_VFPv3D16  16384
 
-#endif /* ARM_LINUX_TDEP_H */
+#endif /* GDB_ARM_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.20200303/gdb/arm-nbsd-nat.c ./gdb/arm-nbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-nbsd-nat.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-nbsd-nat.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,453 +0,0 @@
-/* Native-dependent code for BSD Unix running on ARM's, for GDB.
-
-   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 "defs.h"
-#include "gdbcore.h"
-#include "inferior.h"
-#include "regcache.h"
-#include "target.h"
-#include <sys/types.h>
-#include <sys/ptrace.h>
-#include <machine/reg.h>
-#include <machine/frame.h>
-
-#include "arm-tdep.h"
-#include "inf-ptrace.h"
-
-class arm_netbsd_nat_target final : public inf_ptrace_target
-{
-public:
-  /* Add our register access methods.  */
-  void fetch_registers (struct regcache *, int) override;
-  void store_registers (struct regcache *, int) override;
-};
-
-static arm_netbsd_nat_target the_arm_netbsd_nat_target;
-
-static void
-arm_supply_gregset (struct regcache *regcache, struct reg *gregset)
-{
-  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;
-
-  for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
-    regcache->raw_supply (regno,
-			  (char *) &fparegset->fpr[regno - ARM_F0_REGNUM]);
-
-  regcache->raw_supply (ARM_FPS_REGNUM, (char *) &fparegset->fpr_fpsr);
-}
-
-static void
-fetch_register (struct regcache *regcache, int regno)
-{
-  struct reg inferior_registers;
-  int ret;
-
-  ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
-
-  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);
-}
-
-static void
-fetch_fp_register (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);
-
-  if (ret < 0)
-    {
-      warning (_("unable to fetch floating-point register"));
-      return;
-    }
-
-  switch (regno)
-    {
-    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;
-    }
-}
-
-static void
-fetch_fp_regs (struct regcache *regcache)
-{
-  struct fpreg inferior_fp_registers;
-  int ret;
-  int regno;
-
-  ret = ptrace (PT_GETFPREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
-
-  if (ret < 0)
-    {
-      warning (_("unable to fetch general registers"));
-      return;
-    }
-
-  arm_supply_fparegset (regcache, &inferior_fp_registers);
-}
-
-void
-arm_nbsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
-{
-  if (regno >= 0)
-    {
-      if (regno < ARM_F0_REGNUM || regno > ARM_FPS_REGNUM)
-	fetch_register (regcache, regno);
-      else
-	fetch_fp_register (regcache, regno);
-    }
-  else
-    {
-      fetch_regs (regcache);
-      fetch_fp_regs (regcache);
-    }
-}
-
-
-static void
-store_register (const struct regcache *regcache, int regno)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  struct reg inferior_registers;
-  int ret;
-
-  ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
-
-  if (ret < 0)
-    {
-      warning (_("unable to fetch general registers"));
-      return;
-    }
-
-  switch (regno)
-    {
-    case ARM_SP_REGNUM:
-      regcache->raw_collect (ARM_SP_REGNUM, (char *) &inferior_registers.r_sp);
-      break;
-
-    case ARM_LR_REGNUM:
-      regcache->raw_collect (ARM_LR_REGNUM, (char *) &inferior_registers.r_lr);
-      break;
-
-    case ARM_PC_REGNUM:
-      if (arm_apcs_32)
-	regcache->raw_collect (ARM_PC_REGNUM,
-			       (char *) &inferior_registers.r_pc);
-      else
-	{
-	  unsigned pc_val;
-
-	  regcache->raw_collect (ARM_PC_REGNUM, (char *) &pc_val);
-	  
-	  pc_val = gdbarch_addr_bits_remove (gdbarch, pc_val);
-	  inferior_registers.r_pc ^= gdbarch_addr_bits_remove
-				       (gdbarch, inferior_registers.r_pc);
-	  inferior_registers.r_pc |= pc_val;
-	}
-      break;
-
-    case ARM_PS_REGNUM:
-      if (arm_apcs_32)
-	regcache->raw_collect (ARM_PS_REGNUM,
-			       (char *) &inferior_registers.r_cpsr);
-      else
-	{
-	  unsigned psr_val;
-
-	  regcache->raw_collect (ARM_PS_REGNUM, (char *) &psr_val);
-
-	  psr_val ^= gdbarch_addr_bits_remove (gdbarch, psr_val);
-	  inferior_registers.r_pc = gdbarch_addr_bits_remove
-				      (gdbarch, inferior_registers.r_pc);
-	  inferior_registers.r_pc |= psr_val;
-	}
-      break;
-
-    default:
-      regcache->raw_collect (regno, (char *) &inferior_registers.r[regno]);
-      break;
-    }
-
-  ret = ptrace (PT_SETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
-
-  if (ret < 0)
-    warning (_("unable to write register %d to inferior"), regno);
-}
-
-static void
-store_regs (const struct regcache *regcache)
-{
-  struct gdbarch *gdbarch = regcache->arch ();
-  struct reg inferior_registers;
-  int ret;
-  int regno;
-
-
-  for (regno = ARM_A1_REGNUM; regno < ARM_SP_REGNUM; regno++)
-    regcache->raw_collect (regno, (char *) &inferior_registers.r[regno]);
-
-  regcache->raw_collect (ARM_SP_REGNUM, (char *) &inferior_registers.r_sp);
-  regcache->raw_collect (ARM_LR_REGNUM, (char *) &inferior_registers.r_lr);
-
-  if (arm_apcs_32)
-    {
-      regcache->raw_collect (ARM_PC_REGNUM, (char *) &inferior_registers.r_pc);
-      regcache->raw_collect (ARM_PS_REGNUM,
-			     (char *) &inferior_registers.r_cpsr);
-    }
-  else
-    {
-      unsigned pc_val;
-      unsigned psr_val;
-
-      regcache->raw_collect (ARM_PC_REGNUM, (char *) &pc_val);
-      regcache->raw_collect (ARM_PS_REGNUM, (char *) &psr_val);
-	  
-      pc_val = gdbarch_addr_bits_remove (gdbarch, pc_val);
-      psr_val ^= gdbarch_addr_bits_remove (gdbarch, psr_val);
-
-      inferior_registers.r_pc = pc_val | psr_val;
-    }
-
-  ret = ptrace (PT_SETREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_registers, 0);
-
-  if (ret < 0)
-    warning (_("unable to store general registers"));
-}
-
-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);
-
-  if (ret < 0)
-    {
-      warning (_("unable to fetch floating-point registers"));
-      return;
-    }
-
-  switch (regno)
-    {
-    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;
-    }
-
-  ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
-
-  if (ret < 0)
-    warning (_("unable to write register %d to inferior"), regno);
-}
-
-static void
-store_fp_regs (const struct regcache *regcache)
-{
-  struct fpreg inferior_fp_registers;
-  int ret;
-  int regno;
-
-
-  for (regno = ARM_F0_REGNUM; regno <= ARM_F7_REGNUM; regno++)
-    regcache->raw_collect
-      (regno, (char *) &inferior_fp_registers.fpr[regno - ARM_F0_REGNUM]);
-
-  regcache->raw_collect (ARM_FPS_REGNUM,
-			 (char *) &inferior_fp_registers.fpr_fpsr);
-
-  ret = ptrace (PT_SETFPREGS, regcache->ptid ().pid (),
-		(PTRACE_TYPE_ARG3) &inferior_fp_registers, 0);
-
-  if (ret < 0)
-    warning (_("unable to store floating-point registers"));
-}
-
-void
-arm_nbsd_nat_target::store_registers (struct regcache *regcache, int regno)
-{
-  if (regno >= 0)
-    {
-      if (regno < ARM_F0_REGNUM || regno > ARM_FPS_REGNUM)
-	store_register (regcache, regno);
-      else
-	store_fp_register (regcache, regno);
-    }
-  else
-    {
-      store_regs (regcache);
-      store_fp_regs (regcache);
-    }
-}
-
-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;
-
-    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;
-
-    default:
-      /* Don't know what kind of register request this is; just ignore it.  */
-      break;
-    }
-}
-
-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
-};
-
-void
-_initialize_arm_netbsd_nat (void)
-{
-  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.20200303/gdb/arm-nbsd-tdep.c ./gdb/arm-nbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-nbsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-nbsd-tdep.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,93 +0,0 @@
-/* Target-dependent code for NetBSD/arm.
-
-   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 "defs.h"
-#include "osabi.h"
-
-#include "arch/arm.h"
-#include "arm-tdep.h"
-#include "solib-svr4.h"
-
-/* Description of the longjmp buffer.  */
-#define ARM_NBSD_JB_PC 24
-#define ARM_NBSD_JB_ELEMENT_SIZE ARM_INT_REGISTER_SIZE
-
-/* For compatibility with previous implementations of GDB on arm/NetBSD,
-   override the default little-endian breakpoint.  */
-static const gdb_byte arm_nbsd_arm_le_breakpoint[] = {0x11, 0x00, 0x00, 0xe6};
-static const gdb_byte arm_nbsd_arm_be_breakpoint[] = {0xe6, 0x00, 0x00, 0x11};
-static const gdb_byte arm_nbsd_thumb_le_breakpoint[] = {0xfe, 0xde};
-static const gdb_byte arm_nbsd_thumb_be_breakpoint[] = {0xde, 0xfe};
-
-static void
-arm_netbsd_init_abi_common (struct gdbarch_info info,
-			    struct gdbarch *gdbarch)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  tdep->lowest_pc = 0x8000;
-  switch (info.byte_order)
-    {
-    case BFD_ENDIAN_LITTLE:
-      tdep->arm_breakpoint = arm_nbsd_arm_le_breakpoint;
-      tdep->thumb_breakpoint = arm_nbsd_thumb_le_breakpoint;
-      tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_le_breakpoint);
-      tdep->thumb_breakpoint_size = sizeof (arm_nbsd_thumb_le_breakpoint);
-      break;
-
-    case BFD_ENDIAN_BIG:
-      tdep->arm_breakpoint = arm_nbsd_arm_be_breakpoint;
-      tdep->thumb_breakpoint = arm_nbsd_thumb_be_breakpoint;
-      tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_be_breakpoint);
-      tdep->thumb_breakpoint_size = sizeof (arm_nbsd_thumb_be_breakpoint);
-      break;
-
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("arm_gdbarch_init: bad byte order for float format"));
-    }
-
-  tdep->jb_pc = ARM_NBSD_JB_PC;
-  tdep->jb_elt_size = ARM_NBSD_JB_ELEMENT_SIZE;
-
-  /* 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)
-{
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-
-  arm_netbsd_init_abi_common (info, gdbarch);
-  if (tdep->fp_model == ARM_FLOAT_AUTO)
-    tdep->fp_model = ARM_FLOAT_SOFT_VFP;
-
-  /* NetBSD ELF uses SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_ilp32_fetch_link_map_offsets);
-}
-
-void
-_initialize_arm_netbsd_tdep (void)
-{
-  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.20200303/gdb/arm-netbsd-nat.c ./gdb/arm-netbsd-nat.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-netbsd-nat.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arm-netbsd-nat.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,360 @@
+/* Native-dependent code for BSD Unix running on ARM's, for GDB.
+
+   Copyright (C) 1988-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "gdbcore.h"
+#include "inferior.h"
+#include "regcache.h"
+#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-netbsd-tdep.h"
+#include "aarch32-tdep.h"
+#include "inf-ptrace.h"
+#include "netbsd-nat.h"
+
+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_vfpregset (struct regcache *regcache, struct fpreg *fpregset)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (regcache->arch ());
+  if (tdep->vfp_register_count == 0)
+    return;
+
+  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_FPSCR_REGNUM, (char *) &vfp.vfp_fpscr);
+}
+
+static void
+fetch_register (struct regcache *regcache, int regno)
+{
+  struct reg inferior_registers;
+  int ret;
+  int lwp = regcache->ptid ().lwp ();
+
+  ret = ptrace (PT_GETREGS, regcache->ptid ().pid (),
+		(PTRACE_TYPE_ARG3) &inferior_registers, lwp);
+
+  if (ret < 0)
+    {
+      warning (_("unable to fetch general register"));
+      return;
+    }
+  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 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)
+    {
+      warning (_("unable to fetch floating-point register"));
+      return;
+    }
+
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_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)
+    {
+      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, lwp);
+
+  if (ret < 0)
+    {
+      warning (_("unable to fetch general registers"));
+      return;
+    }
+
+  arm_supply_vfpregset (regcache, &inferior_fp_registers);
+}
+
+void
+arm_netbsd_nat_target::fetch_registers (struct regcache *regcache, int regno)
+{
+  if (regno >= 0)
+    {
+      if (regno < ARM_F0_REGNUM || regno > ARM_FPS_REGNUM)
+	fetch_register (regcache, regno);
+      else
+	fetch_fp_register (regcache, regno);
+    }
+  else
+    {
+      fetch_register (regcache, -1);
+      fetch_fp_regs (regcache);
+    }
+}
+
+
+static void
+store_register (const struct regcache *regcache, int regno)
+{
+  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, lwp);
+
+  if (ret < 0)
+    {
+      warning (_("unable to fetch general registers"));
+      return;
+    }
+
+  switch (regno)
+    {
+    case ARM_SP_REGNUM:
+      regcache->raw_collect (ARM_SP_REGNUM, (char *) &inferior_registers.r_sp);
+      break;
+
+    case ARM_LR_REGNUM:
+      regcache->raw_collect (ARM_LR_REGNUM, (char *) &inferior_registers.r_lr);
+      break;
+
+    case ARM_PC_REGNUM:
+      if (arm_apcs_32)
+	regcache->raw_collect (ARM_PC_REGNUM,
+			       (char *) &inferior_registers.r_pc);
+      else
+	{
+	  unsigned pc_val;
+
+	  regcache->raw_collect (ARM_PC_REGNUM, (char *) &pc_val);
+	  
+	  pc_val = gdbarch_addr_bits_remove (gdbarch, pc_val);
+	  inferior_registers.r_pc ^= gdbarch_addr_bits_remove
+				       (gdbarch, inferior_registers.r_pc);
+	  inferior_registers.r_pc |= pc_val;
+	}
+      break;
+
+    case ARM_PS_REGNUM:
+      if (arm_apcs_32)
+	regcache->raw_collect (ARM_PS_REGNUM,
+			       (char *) &inferior_registers.r_cpsr);
+      else
+	{
+	  unsigned psr_val;
+
+	  regcache->raw_collect (ARM_PS_REGNUM, (char *) &psr_val);
+
+	  psr_val ^= gdbarch_addr_bits_remove (gdbarch, psr_val);
+	  inferior_registers.r_pc = gdbarch_addr_bits_remove
+				      (gdbarch, inferior_registers.r_pc);
+	  inferior_registers.r_pc |= psr_val;
+	}
+      break;
+
+    default:
+      regcache->raw_collect (regno, (char *) &inferior_registers.r[regno]);
+      break;
+    }
+
+  ret = ptrace (PT_SETREGS, regcache->ptid ().pid (),
+		(PTRACE_TYPE_ARG3) &inferior_registers, lwp);
+
+  if (ret < 0)
+    warning (_("unable to write register %d to inferior"), regno);
+}
+
+static void
+store_regs (const struct regcache *regcache)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  struct reg inferior_registers;
+  int lwp = regcache->ptid ().lwp ();
+  int ret;
+  int regno;
+
+
+  for (regno = ARM_A1_REGNUM; regno < ARM_SP_REGNUM; regno++)
+    regcache->raw_collect (regno, (char *) &inferior_registers.r[regno]);
+
+  regcache->raw_collect (ARM_SP_REGNUM, (char *) &inferior_registers.r_sp);
+  regcache->raw_collect (ARM_LR_REGNUM, (char *) &inferior_registers.r_lr);
+
+  if (arm_apcs_32)
+    {
+      regcache->raw_collect (ARM_PC_REGNUM, (char *) &inferior_registers.r_pc);
+      regcache->raw_collect (ARM_PS_REGNUM,
+			     (char *) &inferior_registers.r_cpsr);
+    }
+  else
+    {
+      unsigned pc_val;
+      unsigned psr_val;
+
+      regcache->raw_collect (ARM_PC_REGNUM, (char *) &pc_val);
+      regcache->raw_collect (ARM_PS_REGNUM, (char *) &psr_val);
+	  
+      pc_val = gdbarch_addr_bits_remove (gdbarch, pc_val);
+      psr_val ^= gdbarch_addr_bits_remove (gdbarch, psr_val);
+
+      inferior_registers.r_pc = pc_val | psr_val;
+    }
+
+  ret = ptrace (PT_SETREGS, regcache->ptid ().pid (),
+		(PTRACE_TYPE_ARG3) &inferior_registers, lwp);
+
+  if (ret < 0)
+    warning (_("unable to store general registers"));
+}
+
+static void
+store_fp_register (const struct regcache *regcache, int regno)
+{
+  struct fpreg inferior_fp_registers;
+  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)
+    {
+      warning (_("unable to fetch floating-point registers"));
+      return;
+    }
+
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_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)
+    {
+      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, lwp);
+
+  if (ret < 0)
+    warning (_("unable to write register %d to inferior"), regno);
+}
+
+static void
+store_fp_regs (const struct regcache *regcache)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (regcache->arch ());
+  int lwp = regcache->ptid ().lwp ();
+  if (tdep->vfp_register_count == 0)
+    return;
+
+  struct fpreg fpregs;
+  for (int regno = 0; regno <= tdep->vfp_register_count; regno++)
+    regcache->raw_collect
+      (regno + ARM_D0_REGNUM, (char *) &fpregs.fpr_vfp.vfp_regs[regno]);
+
+  regcache->raw_collect (ARM_FPSCR_REGNUM,
+			 (char *) &fpregs.fpr_vfp.vfp_fpscr);
+
+  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_netbsd_nat_target::store_registers (struct regcache *regcache, int regno)
+{
+  if (regno >= 0)
+    {
+      if (regno < ARM_F0_REGNUM || regno > ARM_FPS_REGNUM)
+	store_register (regcache, regno);
+      else
+	store_fp_register (regcache, regno);
+    }
+  else
+    {
+      store_regs (regcache);
+      store_fp_regs (regcache);
+    }
+}
+
+const struct target_desc *
+arm_netbsd_nat_target::read_description ()
+{
+  int flag;
+  size_t len = sizeof (flag);
+
+  if (sysctlbyname("machdep.fpu_present", &flag, &len, NULL, 0) != 0
+      || !flag)
+    return arm_read_description (ARM_FP_TYPE_NONE, false);
+
+  len = sizeof(flag);
+  if (sysctlbyname("machdep.neon_present", &flag, &len, NULL, 0) == 0 && flag)
+    return aarch32_read_description (false);
+
+  return arm_read_description (ARM_FP_TYPE_VFPV3, false);
+}
+
+INIT_GDB_FILE (arm_netbsd_nat)
+{
+  add_inf_child_target (&the_arm_netbsd_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.20200303/gdb/arm-netbsd-tdep.c ./gdb/arm-netbsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-netbsd-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arm-netbsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,166 @@
+/* Target-dependent code for NetBSD/arm.
+
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "osabi.h"
+
+#include "arch/arm.h"
+#include "arm-netbsd-tdep.h"
+#include "netbsd-tdep.h"
+#include "arm-tdep.h"
+#include "regset.h"
+#include "solib-svr4.h"
+
+/* Description of the longjmp buffer.  */
+#define ARM_NBSD_JB_PC 24
+#define ARM_NBSD_JB_ELEMENT_SIZE ARM_INT_REGISTER_SIZE
+
+/* For compatibility with previous implementations of GDB on arm/NetBSD,
+   override the default little-endian breakpoint.  */
+static const gdb_byte arm_nbsd_arm_le_breakpoint[] = {0x11, 0x00, 0x00, 0xe6};
+static const gdb_byte arm_nbsd_arm_be_breakpoint[] = {0xe6, 0x00, 0x00, 0x11};
+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)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  tdep->lowest_pc = 0x8000;
+  switch (info.byte_order)
+    {
+    case BFD_ENDIAN_LITTLE:
+      tdep->arm_breakpoint = arm_nbsd_arm_le_breakpoint;
+      tdep->thumb_breakpoint = arm_nbsd_thumb_le_breakpoint;
+      tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_le_breakpoint);
+      tdep->thumb_breakpoint_size = sizeof (arm_nbsd_thumb_le_breakpoint);
+      break;
+
+    case BFD_ENDIAN_BIG:
+      tdep->arm_breakpoint = arm_nbsd_arm_be_breakpoint;
+      tdep->thumb_breakpoint = arm_nbsd_thumb_be_breakpoint;
+      tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_be_breakpoint);
+      tdep->thumb_breakpoint_size = sizeof (arm_nbsd_thumb_be_breakpoint);
+      break;
+
+    default:
+      internal_error (_("arm_gdbarch_init: bad byte order for float format"));
+    }
+
+  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_get_next_pcs (gdbarch, arm_software_single_step);
+}
+
+static void
+arm_netbsd_elf_init_abi (struct gdbarch_info info,
+			 struct gdbarch *gdbarch)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_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;
+
+  /* NetBSD ELF uses SVR4-style shared libraries.  */
+  set_solib_svr4_ops (gdbarch, make_svr4_ilp32_solib_ops);
+}
+
+INIT_GDB_FILE (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.20200303/gdb/arm-netbsd-tdep.h ./gdb/arm-netbsd-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-netbsd-tdep.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arm-netbsd-tdep.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,27 @@
+/* NetBSD/ARM support.
+
+   Copyright (C) 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ARM_NETBSD_TDEP_H
+#define GDB_ARM_NETBSD_TDEP_H
+
+void arm_nbsd_supply_gregset
+  (const struct regset *regset, struct regcache *regcache,
+   int regnum, const void *gregs, size_t len);
+
+#endif /* GDB_ARM_NETBSD_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.20200303/gdb/arm-none-tdep.c ./gdb/arm-none-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-none-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/arm-none-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,211 @@
+/* none on ARM target support.
+
+   Copyright (C) 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "arm-tdep.h"
+#include "arch-utils.h"
+#include "extract-store-integer.h"
+#include "regcache.h"
+#include "elf-bfd.h"
+#include "regset.h"
+#include "user-regs.h"
+
+#ifdef HAVE_ELF
+#include "elf-none-tdep.h"
+#endif
+
+/* Core file and register set support.  */
+#define ARM_NONE_SIZEOF_GREGSET (18 * ARM_INT_REGISTER_SIZE)
+
+/* Support VFP register format.  */
+#define ARM_NONE_SIZEOF_VFP (32 * 8 + 4)
+
+/* The index to access CPSR in user_regs as defined in GLIBC.  */
+#define ARM_NONE_CPSR_GREGNUM 16
+
+/* Supply register REGNUM from buffer GREGS_BUF (length LEN bytes) into
+   REGCACHE.  If REGNUM is -1 then supply all registers.  The set of
+   registers that this function will supply is limited to the general
+   purpose registers.
+
+   The layout of the registers here is based on the ARM GNU/Linux
+   layout.  */
+
+static void
+arm_none_supply_gregset (const struct regset *regset,
+			 struct regcache *regcache,
+			 int regnum, const void *gregs_buf, size_t len)
+{
+  struct gdbarch *gdbarch = regcache->arch ();
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  const gdb_byte *gregs = (const gdb_byte *) gregs_buf;
+
+  for (int regno = ARM_A1_REGNUM; regno < ARM_PC_REGNUM; regno++)
+    if (regnum == -1 || regnum == regno)
+      regcache->raw_supply (regno, gregs + ARM_INT_REGISTER_SIZE * regno);
+
+  if (regnum == ARM_PS_REGNUM || regnum == -1)
+    {
+      if (arm_apcs_32)
+	regcache->raw_supply (ARM_PS_REGNUM,
+			      gregs + ARM_INT_REGISTER_SIZE
+			      * ARM_NONE_CPSR_GREGNUM);
+      else
+	regcache->raw_supply (ARM_PS_REGNUM,
+			     gregs + ARM_INT_REGISTER_SIZE * ARM_PC_REGNUM);
+    }
+
+  if (regnum == ARM_PC_REGNUM || regnum == -1)
+    {
+      gdb_byte pc_buf[ARM_INT_REGISTER_SIZE];
+
+      CORE_ADDR reg_pc
+	= extract_unsigned_integer (gregs + ARM_INT_REGISTER_SIZE
+				    * ARM_PC_REGNUM,
+				    ARM_INT_REGISTER_SIZE, byte_order);
+      reg_pc = gdbarch_addr_bits_remove (gdbarch, reg_pc);
+      store_unsigned_integer (pc_buf, ARM_INT_REGISTER_SIZE, byte_order,
+			      reg_pc);
+      regcache->raw_supply (ARM_PC_REGNUM, pc_buf);
+    }
+}
+
+/* Collect register REGNUM from REGCACHE and place it into buffer GREGS_BUF
+   (length LEN bytes).  If REGNUM is -1 then collect all registers.  The
+   set of registers that this function will collect is limited to the
+   general purpose registers.
+
+   The layout of the registers here is based on the ARM GNU/Linux
+   layout.  */
+
+static void
+arm_none_collect_gregset (const struct regset *regset,
+			  const struct regcache *regcache,
+			  int regnum, void *gregs_buf, size_t len)
+{
+  gdb_byte *gregs = (gdb_byte *) gregs_buf;
+
+  for (int regno = ARM_A1_REGNUM; regno < ARM_PC_REGNUM; regno++)
+    if (regnum == -1 || regnum == regno)
+      regcache->raw_collect (regno,
+			     gregs + ARM_INT_REGISTER_SIZE * regno);
+
+  if (regnum == ARM_PS_REGNUM || regnum == -1)
+    {
+      if (arm_apcs_32)
+	regcache->raw_collect (ARM_PS_REGNUM,
+			       gregs + ARM_INT_REGISTER_SIZE
+			       * ARM_NONE_CPSR_GREGNUM);
+      else
+	regcache->raw_collect (ARM_PS_REGNUM,
+			       gregs + ARM_INT_REGISTER_SIZE * ARM_PC_REGNUM);
+    }
+
+  if (regnum == ARM_PC_REGNUM || regnum == -1)
+    regcache->raw_collect (ARM_PC_REGNUM,
+			   gregs + ARM_INT_REGISTER_SIZE * ARM_PC_REGNUM);
+}
+
+/* Supply VFP registers from REGS_BUF into REGCACHE.  */
+
+static void
+arm_none_supply_vfp (const struct regset *regset,
+		     struct regcache *regcache,
+		     int regnum, const void *regs_buf, size_t len)
+{
+  const gdb_byte *regs = (const gdb_byte *) regs_buf;
+
+  if (regnum == ARM_FPSCR_REGNUM || regnum == -1)
+    regcache->raw_supply (ARM_FPSCR_REGNUM, regs + 32 * 8);
+
+  for (int regno = ARM_D0_REGNUM; regno <= ARM_D31_REGNUM; regno++)
+    if (regnum == -1 || regnum == regno)
+      regcache->raw_supply (regno, regs + (regno - ARM_D0_REGNUM) * 8);
+}
+
+/* Collect VFP registers from REGCACHE into REGS_BUF.  */
+
+static void
+arm_none_collect_vfp (const struct regset *regset,
+		      const struct regcache *regcache,
+		      int regnum, void *regs_buf, size_t len)
+{
+  gdb_byte *regs = (gdb_byte *) regs_buf;
+
+  if (regnum == ARM_FPSCR_REGNUM || regnum == -1)
+    regcache->raw_collect (ARM_FPSCR_REGNUM, regs + 32 * 8);
+
+  for (int regno = ARM_D0_REGNUM; regno <= ARM_D31_REGNUM; regno++)
+    if (regnum == -1 || regnum == regno)
+      regcache->raw_collect (regno, regs + (regno - ARM_D0_REGNUM) * 8);
+}
+
+/* The general purpose register set.  */
+
+static const struct regset arm_none_gregset =
+  {
+    nullptr, arm_none_supply_gregset, arm_none_collect_gregset
+  };
+
+/* The VFP register set.  */
+
+static const struct regset arm_none_vfpregset =
+  {
+    nullptr, arm_none_supply_vfp, arm_none_collect_vfp
+  };
+
+/* Iterate over core file register note sections.  */
+
+static void
+arm_none_iterate_over_regset_sections (struct gdbarch *gdbarch,
+				       iterate_over_regset_sections_cb *cb,
+				       void *cb_data,
+				       const struct regcache *regcache)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  cb (".reg", ARM_NONE_SIZEOF_GREGSET, ARM_NONE_SIZEOF_GREGSET,
+      &arm_none_gregset, nullptr, cb_data);
+
+  if (tdep->vfp_register_count > 0)
+    cb (".reg-arm-vfp", ARM_NONE_SIZEOF_VFP, ARM_NONE_SIZEOF_VFP,
+	&arm_none_vfpregset, "VFP floating-point", cb_data);
+}
+
+/* Initialize ARM bare-metal ABI info.  */
+
+static void
+arm_none_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
+{
+#ifdef HAVE_ELF
+  elf_none_init_abi (gdbarch);
+#endif
+
+  /* Iterate over registers for reading and writing bare metal ARM core
+     files.  */
+  set_gdbarch_iterate_over_regset_sections
+    (gdbarch, arm_none_iterate_over_regset_sections);
+}
+
+/* Initialize ARM bare-metal target support.  */
+
+INIT_GDB_FILE (arm_none_tdep)
+{
+  gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_NONE,
+			  arm_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.20200303/gdb/arm-obsd-tdep.c ./gdb/arm-obsd-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-obsd-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-obsd-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Target-dependent code for OpenBSD/arm.
 
-   Copyright (C) 2006-2020 Free Software Foundation, Inc.
+   Copyright (C) 2006-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "osabi.h"
 #include "trad-frame.h"
 #include "tramp-frame.h"
@@ -30,7 +29,7 @@
 
 static void
 armobsd_sigframe_init (const struct tramp_frame *self,
-		       struct frame_info *this_frame,
+		       const frame_info_ptr &this_frame,
 		       struct trad_frame_cache *cache,
 		       CORE_ADDR func)
 {
@@ -76,7 +75,7 @@ static void
 armobsd_init_abi (struct gdbarch_info info,
 		  struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   if (tdep->fp_model == ARM_FLOAT_AUTO)
     tdep->fp_model = ARM_FLOAT_SOFT_VFP;
@@ -84,8 +83,7 @@ armobsd_init_abi (struct gdbarch_info in
   tramp_frame_prepend_unwinder (gdbarch, &armobsd_sigframe);
 
   /* OpenBSD/arm uses SVR4-style shared libraries.  */
-  set_solib_svr4_fetch_link_map_offsets
-    (gdbarch, svr4_ilp32_fetch_link_map_offsets);
+  set_solib_svr4_ops (gdbarch, make_svr4_ilp32_solib_ops);
   set_gdbarch_skip_solib_resolver (gdbarch, obsd_skip_solib_resolver);
 
   tdep->jb_pc = 24;
@@ -98,7 +96,7 @@ armobsd_init_abi (struct gdbarch_info in
   tdep->struct_return = pcc_struct_return;
 
   /* Single stepping.  */
-  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
+  set_gdbarch_get_next_pcs (gdbarch, arm_software_single_step);
 
   /* Breakpoints.  */
   switch (info.byte_order)
@@ -115,8 +113,7 @@ armobsd_init_abi (struct gdbarch_info in
     }
 }
 
-void
-_initialize_armobsd_tdep (void)
+INIT_GDB_FILE (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.20200303/gdb/arm-pikeos-tdep.c ./gdb/arm-pikeos-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-pikeos-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-pikeos-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-/* Copyright (C) 2016-2020 Free Software Foundation, Inc.
+/* Copyright (C) 2016-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,7 +15,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/>.  */
 
-#include "defs.h"
 #include "objfiles.h"
 #include "arm-tdep.h"
 #include "osabi.h"
@@ -27,7 +26,7 @@ static void
 arm_pikeos_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   /* Single stepping.  */
-  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
+  set_gdbarch_get_next_pcs (gdbarch, arm_software_single_step);
 }
 
 /* The ARM PikeOS OSABI sniffer (see gdbarch_register_osabi_sniffer).
@@ -37,8 +36,6 @@ arm_pikeos_init_abi (struct gdbarch_info
 static enum gdb_osabi
 arm_pikeos_osabi_sniffer (bfd *abfd)
 {
-  long number_of_symbols;
-  long i;
   int pikeos_stack_found = 0;
   int pikeos_stack_size_found = 0;
 
@@ -51,20 +48,15 @@ arm_pikeos_osabi_sniffer (bfd *abfd)
      OS ABI sniffers are called before the minimal symtabs are
      created. So inspect the symbol table using BFD.  */
 
-  long storage_needed = bfd_get_symtab_upper_bound (abfd);
-  if (storage_needed <= 0)
-    return GDB_OSABI_UNKNOWN;
-
-  gdb::unique_xmalloc_ptr<asymbol *> symbol_table
-    ((asymbol **) xmalloc (storage_needed));
-  number_of_symbols = bfd_canonicalize_symtab (abfd, symbol_table.get ());
+  gdb::array_view<asymbol *> symbol_table
+    = gdb_bfd_canonicalize_symtab (abfd, false);
 
-  if (number_of_symbols <= 0)
+  if (symbol_table.empty ())
     return GDB_OSABI_UNKNOWN;
 
-  for (i = 0; i < number_of_symbols; i++)
+  for (const asymbol *sym : symbol_table)
     {
-      const char *name = bfd_asymbol_name (symbol_table.get ()[i]);
+      const char *name = bfd_asymbol_name (sym);
 
       if (strcmp (name, "_vm_stack") == 0
 	  || strcmp (name, "__p4_stack") == 0)
@@ -81,12 +73,11 @@ arm_pikeos_osabi_sniffer (bfd *abfd)
     return GDB_OSABI_UNKNOWN;
 }
 
-void
-_initialize_arm_pikeos_tdep (void)
+INIT_GDB_FILE (arm_pikeos_tdep)
 {
   /* Register the sniffer for the PikeOS targets.  */
   gdbarch_register_osabi_sniffer (bfd_arch_arm, bfd_target_elf_flavour,
-                                  arm_pikeos_osabi_sniffer);
+				  arm_pikeos_osabi_sniffer);
   gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_PIKEOS,
-                          arm_pikeos_init_abi);
+			  arm_pikeos_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.20200303/gdb/arm-symbian-tdep.c ./gdb/arm-symbian-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-symbian-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-symbian-tdep.c	1970-01-01 00:00:00.000000000 +0000
@@ -1,131 +0,0 @@
-/* ARM Symbian OS target support.
-
-   Copyright (C) 2008-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 "objfiles.h"
-#include "osabi.h"
-#include "solib.h"
-#include "solib-target.h"
-#include "target.h"
-#include "elf-bfd.h"
-
-/* If PC is in a DLL import stub, return the address of the `real'
-   function belonging to the stub.  */
-
-static CORE_ADDR
-arm_symbian_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
-{
-  struct gdbarch *gdbarch;
-  enum bfd_endian byte_order;
-  ULONGEST insn;
-  CORE_ADDR dest;
-  gdb_byte buf[4];
-
-  if (!in_plt_section (pc))
-    return 0;
-
-  if (target_read_memory (pc, buf, 4) != 0)
-    return 0;
-
-  gdbarch = get_frame_arch (frame);
-  byte_order = gdbarch_byte_order (gdbarch);
-
-  /* ldr pc, [pc, #-4].  */
-  insn = extract_unsigned_integer (buf, 4, byte_order);
-  if (insn != 0xe51ff004)
-    return 0;
-
-  if (target_read_memory (pc + 4, buf, 4) != 0)
-    return 0;
-
-  dest = extract_unsigned_integer (buf, 4, byte_order);
-  return gdbarch_addr_bits_remove (gdbarch, dest);
-}
-
-static void
-arm_symbian_init_abi (struct gdbarch_info info,
-		      struct gdbarch *gdbarch)
-{
-  /* Shared library handling.  */
-  set_gdbarch_skip_trampoline_code (gdbarch, arm_symbian_skip_trampoline_code);
-
-  /* On this target, the toolchain outputs ELF files, with `sym' for
-     filename extension (e.g., `FOO.sym'); these are post-linker
-     processed into PE-ish DLLs (e.g., `FOO.dll'), and it's these that
-     are actually copied to and run on the target.  Naturally, when
-     listing shared libraries, Symbian stubs report the DLL filenames.
-     Setting this makes it so that GDB automatically looks for the
-     corresponding ELF files on the host's filesystem.  */
-  set_gdbarch_solib_symbols_extension (gdbarch, "sym");
-
-  /* Canonical paths on this target look like `c:\sys\bin\bar.dll',
-     for example.  */
-  set_gdbarch_has_dos_based_file_system (gdbarch, 1);
-
-  set_solib_ops (gdbarch, &solib_target_so_ops);
-}
-
-/* Recognize Symbian object files.  */
-
-static enum gdb_osabi
-arm_symbian_osabi_sniffer (bfd *abfd)
-{
-  Elf_Internal_Phdr *phdrs;
-  long phdrs_size;
-  int num_phdrs, i;
-
-  /* Symbian executables are always shared objects (ET_DYN).  */
-  if (elf_elfheader (abfd)->e_type == ET_EXEC)
-    return GDB_OSABI_UNKNOWN;
-
-  if (elf_elfheader (abfd)->e_ident[EI_OSABI] != ELFOSABI_NONE)
-    return GDB_OSABI_UNKNOWN;
-
-  /* Check for the ELF headers not being part of any PT_LOAD segment.
-     Symbian is the only GDB supported (or GNU binutils supported) ARM
-     target which uses a postlinker to flatten ELF files, dropping the
-     ELF dynamic info in the process.  */
-  phdrs_size = bfd_get_elf_phdr_upper_bound (abfd);
-  if (phdrs_size == -1)
-    return GDB_OSABI_UNKNOWN;
-
-  phdrs = (Elf_Internal_Phdr *) alloca (phdrs_size);
-  num_phdrs = bfd_get_elf_phdrs (abfd, phdrs);
-  if (num_phdrs == -1)
-    return GDB_OSABI_UNKNOWN;
-
-  for (i = 0; i < num_phdrs; i++)
-    if (phdrs[i].p_type == PT_LOAD && phdrs[i].p_offset == 0)
-      return GDB_OSABI_UNKNOWN;
-
-  /* Looks like a Symbian binary.  */
-  return GDB_OSABI_SYMBIAN;
-}
-
-void
-_initialize_arm_symbian_tdep (void)
-{
-  gdbarch_register_osabi_sniffer (bfd_arch_arm,
-				  bfd_target_elf_flavour,
-				  arm_symbian_osabi_sniffer);
-
-  gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_SYMBIAN,
-			  arm_symbian_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.20200303/gdb/arm-tdep.c ./gdb/arm-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,16 +17,17 @@
    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 <ctype.h>		/* XXX for isupper ().  */
+#include <ctype.h>
 
+#include "extract-store-integer.h"
 #include "frame.h"
+#include "language.h"
 #include "inferior.h"
 #include "infrun.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "gdbcore.h"
-#include "dis-asm.h"		/* For register styles.  */
+#include "dis-asm.h"
 #include "disasm.h"
 #include "regcache.h"
 #include "reggroups.h"
@@ -38,18 +39,20 @@
 #include "frame-base.h"
 #include "trad-frame.h"
 #include "objfiles.h"
-#include "dwarf2-frame.h"
+#include "dwarf2.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"
 #include "arm-tdep.h"
-#include "gdb/sim-arm.h"
+#include "sim/sim-arm.h"
 
 #include "elf-bfd.h"
 #include "coff/internal.h"
@@ -59,12 +62,19 @@
 #include "record-full.h"
 #include <algorithm>
 
+#include "producer.h"
+
 #if GDB_SELF_TEST
 #include "gdbsupport/selftest.h"
 #endif
 
 static bool arm_debug;
 
+/* Print an "arm" debug statement.  */
+
+#define arm_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (arm_debug, "arm", fmt, ##__VA_ARGS__)
+
 /* Macros for setting and testing a bit in a minimal symbol that marks
    it as Thumb function.  The MSB of the minimal symbol's "info" field
    is used for this purpose.
@@ -73,14 +83,14 @@ static bool arm_debug;
    MSYMBOL_IS_SPECIAL   Tests the "special" bit in a minimal symbol.  */
 
 #define MSYMBOL_SET_SPECIAL(msym)				\
-	MSYMBOL_TARGET_FLAG_1 (msym) = 1
+	(msym)->set_target_flag_1 (true)
 
 #define MSYMBOL_IS_SPECIAL(msym)				\
-	MSYMBOL_TARGET_FLAG_1 (msym)
+	(msym)->target_flag_1 ()
 
 struct arm_mapping_symbol
 {
-  bfd_vma value;
+  CORE_ADDR value;
   char type;
 
   bool operator< (const arm_mapping_symbol &other) const
@@ -114,7 +124,7 @@ struct arm_per_bfd
 };
 
 /* Per-bfd data used for mapping symbols.  */
-static bfd_key<arm_per_bfd> arm_bfd_data_key;
+static const registry<bfd>::key<arm_per_bfd> arm_bfd_data_key;
 
 /* The list of available "set arm ..." and "show arm ..." commands.  */
 static struct cmd_list_element *setarmcmdlist = NULL;
@@ -222,7 +232,7 @@ static const char *const arm_register_na
  "fps", "cpsr" };		/* 24 25       */
 
 /* Holds the current set of options to be passed to the disassembler.  */
-static char *arm_disassembler_options;
+static std::string arm_disassembler_options;
 
 /* Valid register name styles.  */
 static const char **valid_disassembly_styles;
@@ -231,7 +241,7 @@ static const char **valid_disassembly_st
 static const char *disassembly_style;
 
 /* All possible arm target descriptors.  */
-static struct target_desc *tdesc_arm_list[ARM_FP_TYPE_INVALID];
+static struct target_desc *tdesc_arm_list[ARM_FP_TYPE_INVALID][2];
 static struct target_desc *tdesc_arm_mprofile_list[ARM_M_TYPE_INVALID];
 
 /* This is used to keep the bfd arch_info in sync with the disassembly
@@ -267,7 +277,20 @@ struct arm_prologue_cache
   /* The stack pointer at the time this frame was created; i.e. the
      caller's stack pointer when this function was called.  It is used
      to identify this frame.  */
-  CORE_ADDR prev_sp;
+  CORE_ADDR sp;
+
+  /* Additional stack pointers used by M-profile with Security extension.  */
+  /* Use msp_s / psp_s to hold the values of msp / psp when there is
+     no Security extension.  */
+  CORE_ADDR msp_s;
+  CORE_ADDR msp_ns;
+  CORE_ADDR psp_s;
+  CORE_ADDR psp_ns;
+
+  /* Active stack pointer.  */
+  int active_sp_regnum;
+  int active_msp_regnum;
+  int active_psp_regnum;
 
   /* The frame base for this frame is just prev_sp - frame size.
      FRAMESIZE is the distance from the frame pointer to the
@@ -278,16 +301,294 @@ struct arm_prologue_cache
   /* The register used to hold the frame pointer for this frame.  */
   int framereg;
 
+  /* True if the return address is signed, false otherwise.  */
+  std::optional<bool> ra_signed_state;
+
   /* Saved register offsets.  */
-  struct trad_frame_saved_reg *saved_regs;
+  trad_frame_saved_reg *saved_regs;
+
+  arm_prologue_cache() = default;
 };
 
-static CORE_ADDR arm_analyze_prologue (struct gdbarch *gdbarch,
-				       CORE_ADDR prologue_start,
-				       CORE_ADDR prologue_end,
-				       struct arm_prologue_cache *cache);
 
-/* Architecture version for displaced stepping.  This effects the behaviour of
+/* Reconstruct T bit in program status register from LR value.  */
+
+static inline ULONGEST
+reconstruct_t_bit(struct gdbarch *gdbarch, CORE_ADDR lr, ULONGEST psr)
+{
+  ULONGEST t_bit = arm_psr_thumb_bit (gdbarch);
+  if (IS_THUMB_ADDR (lr))
+    psr |= t_bit;
+  else
+    psr &= ~t_bit;
+
+  return psr;
+}
+
+/* Initialize CACHE fields for which zero is not adequate (CACHE is
+   expected to have been ZALLOC'ed before calling this function).  */
+
+static void
+arm_cache_init (struct arm_prologue_cache *cache, struct gdbarch *gdbarch)
+{
+  cache->active_sp_regnum = ARM_SP_REGNUM;
+
+  cache->saved_regs = trad_frame_alloc_saved_regs (gdbarch);
+}
+
+/* Similar to the previous function, but extracts GDBARCH from FRAME.  */
+
+static void
+arm_cache_init (struct arm_prologue_cache *cache, const frame_info_ptr &frame)
+{
+  struct gdbarch *gdbarch = get_frame_arch (frame);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  arm_cache_init (cache, gdbarch);
+  cache->sp = get_frame_register_unsigned (frame, ARM_SP_REGNUM);
+
+  if (tdep->have_sec_ext)
+    {
+      const CORE_ADDR msp_val
+	= get_frame_register_unsigned (frame, tdep->m_profile_msp_regnum);
+      const CORE_ADDR psp_val
+	= get_frame_register_unsigned (frame, tdep->m_profile_psp_regnum);
+
+      cache->msp_s
+	= get_frame_register_unsigned (frame, tdep->m_profile_msp_s_regnum);
+      cache->msp_ns
+	= get_frame_register_unsigned (frame, tdep->m_profile_msp_ns_regnum);
+      cache->psp_s
+	= get_frame_register_unsigned (frame, tdep->m_profile_psp_s_regnum);
+      cache->psp_ns
+	= get_frame_register_unsigned (frame, tdep->m_profile_psp_ns_regnum);
+
+      /* Identify what msp is alias for (msp_s or msp_ns).  */
+      if (msp_val == cache->msp_s)
+	cache->active_msp_regnum = tdep->m_profile_msp_s_regnum;
+      else if (msp_val == cache->msp_ns)
+	cache->active_msp_regnum = tdep->m_profile_msp_ns_regnum;
+      else
+	{
+	  warning (_("Invalid state, unable to determine msp alias, assuming "
+		     "msp_s."));
+	  cache->active_msp_regnum = tdep->m_profile_msp_s_regnum;
+	}
+
+      /* Identify what psp is alias for (psp_s or psp_ns).  */
+      if (psp_val == cache->psp_s)
+	cache->active_psp_regnum = tdep->m_profile_psp_s_regnum;
+      else if (psp_val == cache->psp_ns)
+	cache->active_psp_regnum = tdep->m_profile_psp_ns_regnum;
+      else
+	{
+	  warning (_("Invalid state, unable to determine psp alias, assuming "
+		     "psp_s."));
+	  cache->active_psp_regnum = tdep->m_profile_psp_s_regnum;
+	}
+
+      /* Identify what sp is alias for (msp_s, msp_ns, psp_s or psp_ns).  */
+      if (msp_val == cache->sp)
+	cache->active_sp_regnum = cache->active_msp_regnum;
+      else if (psp_val == cache->sp)
+	cache->active_sp_regnum = cache->active_psp_regnum;
+      else
+	{
+	  warning (_("Invalid state, unable to determine sp alias, assuming "
+		     "msp."));
+	  cache->active_sp_regnum = cache->active_msp_regnum;
+	}
+    }
+  else if (tdep->is_m)
+    {
+      cache->msp_s
+	= get_frame_register_unsigned (frame, tdep->m_profile_msp_regnum);
+      cache->psp_s
+	= get_frame_register_unsigned (frame, tdep->m_profile_psp_regnum);
+
+      /* Identify what sp is alias for (msp or psp).  */
+      if (cache->msp_s == cache->sp)
+	cache->active_sp_regnum = tdep->m_profile_msp_regnum;
+      else if (cache->psp_s == cache->sp)
+	cache->active_sp_regnum = tdep->m_profile_psp_regnum;
+      else
+	{
+	  warning (_("Invalid state, unable to determine sp alias, assuming "
+		     "msp."));
+	  cache->active_sp_regnum = tdep->m_profile_msp_regnum;
+	}
+    }
+  else
+    {
+      cache->msp_s
+	= get_frame_register_unsigned (frame, ARM_SP_REGNUM);
+
+      cache->active_sp_regnum = ARM_SP_REGNUM;
+    }
+}
+
+/* Return the requested stack pointer value (in REGNUM), taking into
+   account whether we have a Security extension or an M-profile
+   CPU.  */
+
+static CORE_ADDR
+arm_cache_get_sp_register (struct arm_prologue_cache *cache,
+			   arm_gdbarch_tdep *tdep, int regnum)
+{
+  if (tdep->have_sec_ext)
+    {
+      if (regnum == tdep->m_profile_msp_s_regnum)
+	return cache->msp_s;
+      if (regnum == tdep->m_profile_msp_ns_regnum)
+	return cache->msp_ns;
+      if (regnum == tdep->m_profile_psp_s_regnum)
+	return cache->psp_s;
+      if (regnum == tdep->m_profile_psp_ns_regnum)
+	return cache->psp_ns;
+      if (regnum == tdep->m_profile_msp_regnum)
+	return arm_cache_get_sp_register (cache, tdep, cache->active_msp_regnum);
+      if (regnum == tdep->m_profile_psp_regnum)
+	return arm_cache_get_sp_register (cache, tdep, cache->active_psp_regnum);
+      if (regnum == ARM_SP_REGNUM)
+	return arm_cache_get_sp_register (cache, tdep, cache->active_sp_regnum);
+    }
+  else if (tdep->is_m)
+    {
+      if (regnum == tdep->m_profile_msp_regnum)
+	return cache->msp_s;
+      if (regnum == tdep->m_profile_psp_regnum)
+	return cache->psp_s;
+      if (regnum == ARM_SP_REGNUM)
+	return arm_cache_get_sp_register (cache, tdep, cache->active_sp_regnum);
+    }
+  else if (regnum == ARM_SP_REGNUM)
+    return cache->sp;
+
+  gdb_assert_not_reached ("Invalid SP selection");
+}
+
+/* Return the previous stack address, depending on which SP register
+   is active.  */
+
+static CORE_ADDR
+arm_cache_get_prev_sp_value (struct arm_prologue_cache *cache, arm_gdbarch_tdep *tdep)
+{
+  CORE_ADDR val = arm_cache_get_sp_register (cache, tdep, cache->active_sp_regnum);
+  return val;
+}
+
+/* Set the active stack pointer to VAL.  */
+
+static void
+arm_cache_set_active_sp_value (struct arm_prologue_cache *cache,
+			       arm_gdbarch_tdep *tdep, CORE_ADDR val)
+{
+  if (tdep->have_sec_ext)
+    {
+      if (cache->active_sp_regnum == tdep->m_profile_msp_s_regnum)
+	cache->msp_s = val;
+      else if (cache->active_sp_regnum == tdep->m_profile_msp_ns_regnum)
+	cache->msp_ns = val;
+      else if (cache->active_sp_regnum == tdep->m_profile_psp_s_regnum)
+	cache->psp_s = val;
+      else if (cache->active_sp_regnum == tdep->m_profile_psp_ns_regnum)
+	cache->psp_ns = val;
+
+      return;
+    }
+  else if (tdep->is_m)
+    {
+      if (cache->active_sp_regnum == tdep->m_profile_msp_regnum)
+	cache->msp_s = val;
+      else if (cache->active_sp_regnum == tdep->m_profile_psp_regnum)
+	cache->psp_s = val;
+
+      return;
+    }
+  else if (cache->active_sp_regnum == ARM_SP_REGNUM)
+    {
+      cache->sp = val;
+      return;
+    }
+
+  gdb_assert_not_reached ("Invalid SP selection");
+}
+
+/* Return true if REGNUM is one of the alternative stack pointers.  */
+
+static bool
+arm_is_alternative_sp_register (arm_gdbarch_tdep *tdep, int regnum)
+{
+  if ((regnum == tdep->m_profile_msp_regnum)
+      || (regnum == tdep->m_profile_msp_s_regnum)
+      || (regnum == tdep->m_profile_msp_ns_regnum)
+      || (regnum == tdep->m_profile_psp_regnum)
+      || (regnum == tdep->m_profile_psp_s_regnum)
+      || (regnum == tdep->m_profile_psp_ns_regnum))
+    return true;
+  else
+    return false;
+}
+
+/* Set the active stack pointer to SP_REGNUM.  */
+
+static void
+arm_cache_switch_prev_sp (struct arm_prologue_cache *cache,
+			  arm_gdbarch_tdep *tdep, int sp_regnum)
+{
+  gdb_assert (arm_is_alternative_sp_register (tdep, sp_regnum));
+
+  if (tdep->have_sec_ext)
+    {
+      gdb_assert (sp_regnum != tdep->m_profile_msp_regnum
+		  && sp_regnum != tdep->m_profile_psp_regnum);
+
+      if (sp_regnum == tdep->m_profile_msp_s_regnum
+	  || sp_regnum == tdep->m_profile_psp_s_regnum)
+	{
+	  cache->active_msp_regnum = tdep->m_profile_msp_s_regnum;
+	  cache->active_psp_regnum = tdep->m_profile_psp_s_regnum;
+	}
+      else if (sp_regnum == tdep->m_profile_msp_ns_regnum
+	       || sp_regnum == tdep->m_profile_psp_ns_regnum)
+	{
+	  cache->active_msp_regnum = tdep->m_profile_msp_ns_regnum;
+	  cache->active_psp_regnum = tdep->m_profile_psp_ns_regnum;
+	}
+    }
+
+  cache->active_sp_regnum = sp_regnum;
+}
+
+namespace {
+
+/* Abstract class to read ARM instructions from memory.  */
+
+class arm_instruction_reader
+{
+public:
+  /* Read a 4 bytes instruction from memory using the BYTE_ORDER endianness.  */
+  virtual uint32_t read (CORE_ADDR memaddr, bfd_endian byte_order) const = 0;
+};
+
+/* Read instructions from target memory.  */
+
+class target_arm_instruction_reader : public arm_instruction_reader
+{
+public:
+  uint32_t read (CORE_ADDR memaddr, bfd_endian byte_order) const override
+  {
+    return read_code_unsigned_integer (memaddr, 4, byte_order);
+  }
+};
+
+} /* namespace */
+
+static CORE_ADDR arm_analyze_prologue
+  (struct gdbarch *gdbarch, CORE_ADDR prologue_start, CORE_ADDR prologue_end,
+   struct arm_prologue_cache *cache, const arm_instruction_reader &insn_reader);
+
+/* Architecture version for displaced stepping.  This effects the behavior of
    certain instructions, and really should not be hard-wired.  */
 
 #define DISPLACED_STEPPING_ARCH_VERSION		5
@@ -295,13 +596,16 @@ static CORE_ADDR arm_analyze_prologue (s
 /* See arm-tdep.h.  */
 
 bool arm_apcs_32 = true;
+bool arm_unwind_secure_frames = true;
 
 /* Return the bit mask in ARM_PS_REGNUM that indicates Thumb mode.  */
 
 int
 arm_psr_thumb_bit (struct gdbarch *gdbarch)
 {
-  if (gdbarch_tdep (gdbarch)->is_m)
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (tdep->is_m)
     return XPSR_T;
   else
     return CPSR_T;
@@ -320,20 +624,24 @@ arm_is_thumb (struct regcache *regcache)
   return (cpsr & t_bit) != 0;
 }
 
-/* Determine if FRAME is executing in Thumb mode.  */
+/* Determine if FRAME is executing in Thumb mode.  FRAME must be an ARM
+   frame.  */
 
 int
-arm_frame_is_thumb (struct frame_info *frame)
+arm_frame_is_thumb (const frame_info_ptr &frame)
 {
-  CORE_ADDR cpsr;
-  ULONGEST t_bit = arm_psr_thumb_bit (get_frame_arch (frame));
+  /* Check the architecture of FRAME.  */
+  struct gdbarch *gdbarch = get_frame_arch (frame);
+  gdb_assert (gdbarch_bfd_arch_info (gdbarch)->arch == bfd_arch_arm);
 
   /* Every ARM frame unwinder can unwind the T bit of the CPSR, either
      directly (from a signal frame or dummy frame) or by interpreting
      the saved LR (from a prologue or DWARF frame).  So consult it and
      trust the unwinders.  */
-  cpsr = get_frame_register_unsigned (frame, ARM_PS_REGNUM);
+  CORE_ADDR cpsr = get_frame_register_unsigned (frame, ARM_PS_REGNUM);
 
+  /* Find and extract the thumb bit.  */
+  ULONGEST t_bit = arm_psr_thumb_bit (gdbarch);
   return (cpsr & t_bit) != 0;
 }
 
@@ -350,7 +658,7 @@ arm_find_mapping_symbol (CORE_ADDR memad
   sec = find_pc_section (memaddr);
   if (sec != NULL)
     {
-      arm_per_bfd *data = arm_bfd_data_key.get (sec->objfile->obfd);
+      arm_per_bfd *data = arm_bfd_data_key.get (sec->objfile->obfd.get ());
       if (data != NULL)
 	{
 	  unsigned int section_idx = sec->the_bfd_section->index;
@@ -364,8 +672,7 @@ arm_find_mapping_symbol (CORE_ADDR memad
 	      data->section_maps_sorted[section_idx] = true;
 	    }
 
-	  struct arm_mapping_symbol map_key
-	    = { memaddr - obj_section_addr (sec), 0 };
+	  arm_mapping_symbol map_key = { memaddr - sec->addr (), 0 };
 	  arm_mapping_symbol_vec::const_iterator it
 	    = std::lower_bound (map.begin (), map.end (), map_key);
 
@@ -378,7 +685,7 @@ arm_find_mapping_symbol (CORE_ADDR memad
 	      if (it->value == map_key.value)
 		{
 		  if (start)
-		    *start = it->value + obj_section_addr (sec);
+		    *start = it->value + sec->addr ();
 		  return it->type;
 		}
 	    }
@@ -389,7 +696,7 @@ arm_find_mapping_symbol (CORE_ADDR memad
 		= it - 1;
 
 	      if (start)
-		*start = prev_it->value + obj_section_addr (sec);
+		*start = prev_it->value + sec->addr ();
 	      return prev_it->type;
 	    }
 	}
@@ -405,21 +712,22 @@ arm_find_mapping_symbol (CORE_ADDR memad
 int
 arm_pc_is_thumb (struct gdbarch *gdbarch, CORE_ADDR memaddr)
 {
-  struct bound_minimal_symbol sym;
   char type;
-  arm_displaced_step_closure *dsc
-    = ((arm_displaced_step_closure * )
-	get_displaced_step_closure_by_addr (memaddr));
+  arm_displaced_step_copy_insn_closure *dsc = nullptr;
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (gdbarch_displaced_step_copy_insn_closure_by_addr_p (gdbarch))
+    dsc = ((arm_displaced_step_copy_insn_closure * )
+	   gdbarch_displaced_step_copy_insn_closure_by_addr
+	     (gdbarch, current_inferior (), memaddr));
 
   /* If checking the mode of displaced instruction in copy area, the mode
      should be determined by instruction on the original address.  */
   if (dsc)
     {
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog,
-			    "displaced: check mode of %.8lx instead of %.8lx\n",
-			    (unsigned long) dsc->insn_addr,
-			    (unsigned long) memaddr);
+      displaced_debug_printf ("check mode of %.8lx instead of %.8lx",
+			      (unsigned long) dsc->insn_addr,
+			      (unsigned long) memaddr);
       memaddr = dsc->insn_addr;
     }
 
@@ -434,7 +742,7 @@ arm_pc_is_thumb (struct gdbarch *gdbarch
     return 1;
 
   /* ARM v6-M and v7-M are always in Thumb mode.  */
-  if (gdbarch_tdep (gdbarch)->is_m)
+  if (tdep->is_m)
     return 1;
 
   /* If there are mapping symbols, consult them.  */
@@ -443,7 +751,7 @@ arm_pc_is_thumb (struct gdbarch *gdbarch
     return type == 't';
 
   /* Thumb functions have a "special" bit set in minimal symbols.  */
-  sym = lookup_minimal_symbol_by_pc (memaddr);
+  bound_minimal_symbol sym = lookup_minimal_symbol_by_pc (memaddr);
   if (sym.minsym)
     return (MSYMBOL_IS_SPECIAL (sym.minsym));
 
@@ -458,16 +766,37 @@ arm_pc_is_thumb (struct gdbarch *gdbarch
      "display/i $pc" always show the correct mode (though if there is
      a symbol table we will not reach here, so it still may not be
      displayed in the mode it will be executed).  */
-  if (target_has_registers)
+  if (target_has_registers ())
     return arm_frame_is_thumb (get_current_frame ());
 
   /* Otherwise we're out of luck; we assume ARM.  */
   return 0;
 }
 
+static inline bool
+arm_m_addr_is_lockup (CORE_ADDR addr)
+{
+  switch (addr)
+    {
+      /* Values for lockup state.
+	 For more details see "B1.5.15 Unrecoverable exception cases" in
+	 both ARMv6-M and ARMv7-M Architecture Reference Manuals, or
+	 see "B4.32 Lockup" in ARMv8-M Architecture Reference Manual.  */
+      case 0xeffffffe:
+      case 0xfffffffe:
+      case 0xffffffff:
+	return true;
+
+      default:
+	/* Address is not lockup.  */
+	return false;
+    }
+}
+
 /* Determine if the address specified equals any of these magic return
-   values, called EXC_RETURN, defined by the ARM v6-M and v7-M
-   architectures.
+   values, called EXC_RETURN, defined by the ARM v6-M, v7-M and v8-M
+   architectures.  Also include lockup magic PC value.
+   Check also for FNC_RETURN if we have the v8-M security extension.
 
    From ARMv6-M Reference Manual B1.5.8
    Table B1-5 Exception return behavior
@@ -497,27 +826,64 @@ 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.
+
+   From ARMv8-M Architecture Technical Reference, D1.2.95
+   FType, Mode and SPSEL bits are to be considered when the Security
+   Extension is not implemented.
+
+   EXC_RETURN    Return To        Return Stack    Frame Type
+   0xFFFFFFA0    Handler mode     Main            Extended
+   0xFFFFFFA8    Thread mode      Main            Extended
+   0xFFFFFFAC    Thread mode      Process         Extended
+   0xFFFFFFB0    Handler mode     Main            Standard
+   0xFFFFFFB8    Thread mode      Main            Standard
+   0xFFFFFFBC    Thread mode      Process         Standard  */
 
 static int
-arm_m_addr_is_magic (CORE_ADDR addr)
+arm_m_addr_is_magic (struct gdbarch *gdbarch, CORE_ADDR addr)
 {
-  switch (addr)
+  if (arm_m_addr_is_lockup (addr))
+    return 1;
+
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+  if (tdep->have_sec_ext)
     {
-      /* Values from Tables in B1.5.8 the EXC_RETURN definitions of
-	 the exception return behavior.  */
-      case 0xffffffe1:
-      case 0xffffffe9:
-      case 0xffffffed:
-      case 0xfffffff1:
-      case 0xfffffff9:
-      case 0xfffffffd:
-	/* Address is magic.  */
-	return 1;
+      switch ((addr & 0xff000000))
+	{
+	case 0xff000000: /* EXC_RETURN pattern.  */
+	case 0xfe000000: /* FNC_RETURN pattern.  */
+	  return 1;
+	default:
+	  return 0;
+	}
+    }
+  else
+    {
+      switch (addr)
+	{
+	  /* Values from ARMv8-M Architecture Technical Reference.  */
+	case 0xffffffa0:
+	case 0xffffffa8:
+	case 0xffffffac:
+	case 0xffffffb0:
+	case 0xffffffb8:
+	case 0xffffffbc:
+	  /* Values from Tables in B1.5.8 the EXC_RETURN definitions of
+	     the exception return behavior.  */
+	case 0xffffffe1:
+	case 0xffffffe9:
+	case 0xffffffed:
+	case 0xfffffff1:
+	case 0xfffffff9:
+	case 0xfffffffd:
+	  /* Address is magic.  */
+	  return 1;
 
-      default:
-	/* Address is not magic.  */
-	return 0;
+	default:
+	  /* Address is not magic.  */
+	  return 0;
+	}
     }
 }
 
@@ -525,10 +891,11 @@ arm_m_addr_is_magic (CORE_ADDR addr)
 static CORE_ADDR
 arm_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR val)
 {
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
   /* On M-profile devices, do not strip the low bit from EXC_RETURN
      (the magic exception return address).  */
-  if (gdbarch_tdep (gdbarch)->is_m
-      && arm_m_addr_is_magic (val))
+  if (tdep->is_m && arm_m_addr_is_magic (gdbarch, val))
     return val;
 
   if (arm_apcs_32)
@@ -545,11 +912,10 @@ static int
 skip_prologue_function (struct gdbarch *gdbarch, CORE_ADDR pc, int is_thumb)
 {
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
-  struct bound_minimal_symbol msym;
 
-  msym = lookup_minimal_symbol_by_pc (pc);
+  bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (pc);
   if (msym.minsym != NULL
-      && BMSYMBOL_VALUE_ADDRESS (msym) == pc
+      && msym.value_address () == pc
       && msym.minsym->linkage_name () != NULL)
     {
       const char *name = msym.minsym->linkage_name ();
@@ -652,6 +1018,7 @@ thumb_analyze_prologue (struct gdbarch *
 			CORE_ADDR start, CORE_ADDR limit,
 			struct arm_prologue_cache *cache)
 {
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
   int i;
@@ -666,6 +1033,7 @@ thumb_analyze_prologue (struct gdbarch *
   while (start < limit)
     {
       unsigned short insn;
+      std::optional<bool> ra_signed_state;
 
       insn = read_code_unsigned_integer (start, 2, byte_order_for_code);
 
@@ -800,6 +1168,7 @@ thumb_analyze_prologue (struct gdbarch *
 
 	  inst2 = read_code_unsigned_integer (start + 2, 2,
 					      byte_order_for_code);
+	  uint32_t whole_insn = (insn << 16) | inst2;
 
 	  if ((insn & 0xf800) == 0xf000 && (inst2 & 0xe800) == 0xe800)
 	    {
@@ -849,6 +1218,35 @@ thumb_analyze_prologue (struct gdbarch *
 		regs[bits (insn, 0, 3)] = addr;
 	    }
 
+	  /* vstmdb Rn{!}, { D-registers } (aka vpush).  */
+	  else if ((insn & 0xff20) == 0xed20
+		   && (inst2 & 0x0f00) == 0x0b00
+		   && pv_is_register (regs[bits (insn, 0, 3)], ARM_SP_REGNUM))
+	    {
+	      /* Address SP points to.  */
+	      pv_t addr = regs[bits (insn, 0, 3)];
+
+	      /* Number of registers saved.  */
+	      unsigned int number = bits (inst2, 0, 7) >> 1;
+
+	      /* First register to save.  */
+	      int vd = bits (inst2, 12, 15) | (bits (insn, 6, 6) << 4);
+
+	      if (stack.store_would_trash (addr))
+		break;
+
+	      /* Calculate offsets of saved registers.  */
+	      for (; number > 0; number--)
+		{
+		  addr = pv_add_constant (addr, -8);
+		  stack.store (addr, 8, pv_register (ARM_D0_REGNUM
+						     + vd + number, 0));
+		}
+
+	      /* Writeback SP to account for the saved registers.  */
+	      regs[bits (insn, 0, 3)] = addr;
+	    }
+
 	  else if ((insn & 0xff50) == 0xe940	/* strd Rt, Rt2,
 						   [Rn, #+/-imm]{!} */
 		   && pv_is_register (regs[bits (insn, 0, 3)], ARM_SP_REGNUM))
@@ -930,7 +1328,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.  */
@@ -1053,7 +1451,37 @@ thumb_analyze_prologue (struct gdbarch *
 	      constant = read_memory_unsigned_integer (loc + 4, 4, byte_order);
 	      regs[bits (inst2, 8, 11)] = pv_constant (constant);
 	    }
-
+	  /* Start of ARMv8.1-m PACBTI extension instructions.  */
+	  else if (IS_PAC (whole_insn))
+	    {
+	      /* LR and SP are input registers.  PAC is in R12.  LR is
+		 signed from this point onwards.  NOP space.  */
+	      ra_signed_state = true;
+	    }
+	  else if (IS_PACBTI (whole_insn))
+	    {
+	      /* LR and SP are input registers.  PAC is in R12 and PC is a
+		 valid BTI landing pad.  LR is signed from this point onwards.
+		 NOP space.  */
+	      ra_signed_state = true;
+	    }
+	  else if (IS_BTI (whole_insn))
+	    {
+	      /* Valid BTI landing pad.  NOP space.  */
+	    }
+	  else if (IS_PACG (whole_insn))
+	    {
+	      /* Sign Rn using Rm and store the PAC in Rd.  Rd is signed from
+		 this point onwards.  */
+	      ra_signed_state = true;
+	    }
+	  else if (IS_AUT (whole_insn) || IS_AUTG (whole_insn))
+	    {
+	      /* These instructions appear close to the epilogue, when signed
+		 pointers are getting authenticated.  */
+	      ra_signed_state = false;
+	    }
+	  /* End of ARMv8.1-m PACBTI extension instructions */
 	  else if (thumb2_instruction_changes_pc (insn, inst2))
 	    {
 	      /* Don't scan past anything that might change control flow.  */
@@ -1066,6 +1494,18 @@ thumb_analyze_prologue (struct gdbarch *
 	      unrecognized_pc = start;
 	    }
 
+	  /* Make sure we are dealing with a target that supports ARMv8.1-m
+	     PACBTI.  */
+	  if (cache != nullptr && tdep->have_pacbti
+	      && ra_signed_state.has_value ())
+	    {
+	      arm_debug_printf ("Found pacbti instruction at %s",
+				paddress (gdbarch, start));
+	      arm_debug_printf ("RA is %s",
+				*ra_signed_state ? "signed" : "not signed");
+	      cache->ra_signed_state = ra_signed_state;
+	    }
+
 	  start += 2;
 	}
       else if (thumb_instruction_changes_pc (insn))
@@ -1083,9 +1523,8 @@ thumb_analyze_prologue (struct gdbarch *
       start += 2;
     }
 
-  if (arm_debug)
-    fprintf_unfiltered (gdb_stdlog, "Prologue scan stopped at %s\n",
-			paddress (gdbarch, start));
+  arm_debug_printf ("Prologue scan stopped at %s",
+		    paddress (gdbarch, start));
 
   if (unrecognized_pc == 0)
     unrecognized_pc = start;
@@ -1112,9 +1551,13 @@ thumb_analyze_prologue (struct gdbarch *
       cache->framesize = -regs[ARM_SP_REGNUM].k;
     }
 
-  for (i = 0; i < 16; i++)
+  for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
     if (stack.find_reg (gdbarch, i, &offset))
-      cache->saved_regs[i].addr = offset;
+      {
+	cache->saved_regs[i].set_addr (offset);
+	if (i == ARM_SP_REGNUM)
+	  arm_cache_set_active_sp_value(cache, tdep, offset);
+      }
 
   return unrecognized_pc;
 }
@@ -1226,7 +1669,7 @@ arm_analyze_load_stack_chk_guard(CORE_AD
 
 	ldr	Rn, .Label
 	....
-	.Lable:
+	.Label:
 	.word	__stack_chk_guard
 
    Since ldr/str is a very popular instruction, we can't use them as
@@ -1239,7 +1682,6 @@ arm_skip_stack_protector(CORE_ADDR pc, s
 {
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
   unsigned int basereg;
-  struct bound_minimal_symbol stack_chk_guard;
   int offset;
   int is_thumb = arm_pc_is_thumb (gdbarch, pc);
   CORE_ADDR addr;
@@ -1250,7 +1692,7 @@ arm_skip_stack_protector(CORE_ADDR pc, s
   if (!addr)
     return pc;
 
-  stack_chk_guard = lookup_minimal_symbol_by_pc (addr);
+  bound_minimal_symbol stack_chk_guard = lookup_minimal_symbol_by_pc (addr);
   /* ADDR must correspond to a symbol whose name is __stack_chk_guard.
      Otherwise, this sequence cannot be for stack protector.  */
   if (stack_chk_guard.minsym == NULL
@@ -1324,12 +1766,18 @@ arm_skip_stack_protector(CORE_ADDR pc, s
 static CORE_ADDR
 arm_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
-  CORE_ADDR func_addr, limit_pc;
+  CORE_ADDR func_addr, func_end_addr, limit_pc;
 
   /* See if we can determine the end of the prologue via the symbol table.
      If so, then return either PC, or the PC after the prologue, whichever
      is greater.  */
-  if (find_pc_partial_function (pc, NULL, &func_addr, NULL))
+  bool func_addr_found
+    = find_pc_partial_function (pc, NULL, &func_addr, &func_end_addr);
+
+  /* Whether the function is thumb mode or not.  */
+  bool func_is_thumb = false;
+
+  if (func_addr_found)
     {
       CORE_ADDR post_prologue_pc
 	= skip_prologue_using_sal (gdbarch, func_addr);
@@ -1348,9 +1796,9 @@ arm_skip_prologue (struct gdbarch *gdbar
 	 missing (e.g. for -gstabs), assuming the GNU tools.  */
       if (post_prologue_pc
 	  && (cust == NULL
-	      || COMPUNIT_PRODUCER (cust) == NULL
-	      || startswith (COMPUNIT_PRODUCER (cust), "GNU ")
-	      || startswith (COMPUNIT_PRODUCER (cust), "clang ")))
+	      || cust->producer () == NULL
+	      || startswith (cust->producer (), "GNU ")
+	      || producer_is_llvm (cust->producer ())))
 	return post_prologue_pc;
 
       if (post_prologue_pc != 0)
@@ -1366,12 +1814,14 @@ arm_skip_prologue (struct gdbarch *gdbar
 	     associate prologue code with the opening brace; so this
 	     lets us skip the first line if we think it is the opening
 	     brace.  */
-	  if (arm_pc_is_thumb (gdbarch, func_addr))
+	  func_is_thumb = arm_pc_is_thumb (gdbarch, func_addr);
+	  if (func_is_thumb)
 	    analyzed_limit = thumb_analyze_prologue (gdbarch, func_addr,
 						     post_prologue_pc, NULL);
 	  else
-	    analyzed_limit = arm_analyze_prologue (gdbarch, func_addr,
-						   post_prologue_pc, NULL);
+	    analyzed_limit
+	      = arm_analyze_prologue (gdbarch, func_addr, post_prologue_pc,
+				      NULL, target_arm_instruction_reader ());
 
 	  if (analyzed_limit != post_prologue_pc)
 	    return func_addr;
@@ -1391,15 +1841,23 @@ arm_skip_prologue (struct gdbarch *gdbar
   if (limit_pc == 0)
     limit_pc = pc + 64;          /* Magic.  */
 
+  /* Set the correct adjustment based on whether the function is thumb mode or
+     not.  We use it to get the address of the last instruction in the
+     function (as opposed to the first address of the next function).  */
+  CORE_ADDR adjustment = func_is_thumb ? 2 : 4;
+
+  limit_pc
+    = func_end_addr == 0 ? limit_pc : std::min (limit_pc,
+						func_end_addr - adjustment);
 
   /* Check if this is Thumb code.  */
   if (arm_pc_is_thumb (gdbarch, pc))
     return thumb_analyze_prologue (gdbarch, pc, limit_pc, NULL);
   else
-    return arm_analyze_prologue (gdbarch, pc, limit_pc, NULL);
+    return arm_analyze_prologue (gdbarch, pc, limit_pc, NULL,
+				 target_arm_instruction_reader ());
 }
 
-/* *INDENT-OFF* */
 /* Function: thumb_scan_prologue (helper function for arm_scan_prologue)
    This function decodes a Thumb function prologue to determine:
      1) the size of the stack frame
@@ -1419,7 +1877,6 @@ arm_skip_prologue (struct gdbarch *gdbar
    
    The comments for thumb_skip_prolog() describe the algorithm we use
    to detect the end of the prolog.  */
-/* *INDENT-ON* */
 
 static void
 thumb_scan_prologue (struct gdbarch *gdbarch, CORE_ADDR prev_pc,
@@ -1472,6 +1929,26 @@ arm_instruction_restores_sp (unsigned in
   return 0;
 }
 
+/* Implement immediate value decoding, as described in section A5.2.4
+   (Modified immediate constants in ARM instructions) of the ARM Architecture
+   Reference Manual (ARMv7-A and ARMv7-R edition).  */
+
+static uint32_t
+arm_expand_immediate (uint32_t imm)
+{
+  /* Immediate values are 12 bits long.  */
+  gdb_assert ((imm & 0xfffff000) == 0);
+
+  uint32_t unrotated_value = imm & 0xff;
+  uint32_t rotate_amount = (imm & 0xf00) >> 7;
+
+  if (rotate_amount == 0)
+    return unrotated_value;
+
+  return ((unrotated_value >> rotate_amount)
+	  | (unrotated_value << (32 - rotate_amount)));
+}
+
 /* Analyze an ARM mode prologue starting at PROLOGUE_START and
    continuing no further than PROLOGUE_END.  If CACHE is non-NULL,
    fill it in.  Return the first address not recognized as a prologue
@@ -1485,13 +1962,15 @@ arm_instruction_restores_sp (unsigned in
 static CORE_ADDR
 arm_analyze_prologue (struct gdbarch *gdbarch,
 		      CORE_ADDR prologue_start, CORE_ADDR prologue_end,
-		      struct arm_prologue_cache *cache)
+		      struct arm_prologue_cache *cache,
+		      const arm_instruction_reader &insn_reader)
 {
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
   int regno;
   CORE_ADDR offset, current_pc;
   pv_t regs[ARM_FPS_REGNUM];
   CORE_ADDR unrecognized_pc = 0;
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   /* Search the prologue looking for instructions that set up the
      frame pointer, adjust the stack pointer, and save registers.
@@ -1511,8 +1990,7 @@ arm_analyze_prologue (struct gdbarch *gd
        current_pc < prologue_end;
        current_pc += 4)
     {
-      unsigned int insn
-	= read_code_unsigned_integer (current_pc, 4, byte_order_for_code);
+      uint32_t insn = insn_reader.read (current_pc, byte_order_for_code);
 
       if (insn == 0xe1a0c00d)		/* mov ip, sp */
 	{
@@ -1522,20 +2000,16 @@ arm_analyze_prologue (struct gdbarch *gd
       else if ((insn & 0xfff00000) == 0xe2800000	/* add Rd, Rn, #n */
 	       && pv_is_register (regs[bits (insn, 16, 19)], ARM_SP_REGNUM))
 	{
-	  unsigned imm = insn & 0xff;                   /* immediate value */
-	  unsigned rot = (insn & 0xf00) >> 7;           /* rotate amount */
+	  uint32_t imm = arm_expand_immediate (insn & 0xfff);
 	  int rd = bits (insn, 12, 15);
-	  imm = (imm >> rot) | (imm << (32 - rot));
 	  regs[rd] = pv_add_constant (regs[bits (insn, 16, 19)], imm);
 	  continue;
 	}
       else if ((insn & 0xfff00000) == 0xe2400000	/* sub Rd, Rn, #n */
 	       && pv_is_register (regs[bits (insn, 16, 19)], ARM_SP_REGNUM))
 	{
-	  unsigned imm = insn & 0xff;                   /* immediate value */
-	  unsigned rot = (insn & 0xf00) >> 7;           /* rotate amount */
+	  uint32_t imm = arm_expand_immediate (insn & 0xfff);
 	  int rd = bits (insn, 12, 15);
-	  imm = (imm >> rot) | (imm << (32 - rot));
 	  regs[rd] = pv_add_constant (regs[bits (insn, 16, 19)], -imm);
 	  continue;
 	}
@@ -1591,21 +2065,17 @@ arm_analyze_prologue (struct gdbarch *gd
 	}
       else if ((insn & 0xfffff000) == 0xe24cb000)	/* sub fp, ip #n */
 	{
-	  unsigned imm = insn & 0xff;			/* immediate value */
-	  unsigned rot = (insn & 0xf00) >> 7;		/* rotate amount */
-	  imm = (imm >> rot) | (imm << (32 - rot));
+	  uint32_t imm = arm_expand_immediate (insn & 0xfff);
 	  regs[ARM_FP_REGNUM] = pv_add_constant (regs[ARM_IP_REGNUM], -imm);
 	}
       else if ((insn & 0xfffff000) == 0xe24dd000)	/* sub sp, sp #n */
 	{
-	  unsigned imm = insn & 0xff;			/* immediate value */
-	  unsigned rot = (insn & 0xf00) >> 7;		/* rotate amount */
-	  imm = (imm >> rot) | (imm << (32 - rot));
+	  uint32_t imm = arm_expand_immediate(insn & 0xfff);
 	  regs[ARM_SP_REGNUM] = pv_add_constant (regs[ARM_SP_REGNUM], -imm);
 	}
       else if ((insn & 0xffff7fff) == 0xed6d0103	/* stfe f?,
 							   [sp, -#c]! */
-	       && gdbarch_tdep (gdbarch)->have_fpa_registers)
+	       && tdep->have_fpa_registers)
 	{
 	  if (stack.store_would_trash (regs[ARM_SP_REGNUM]))
 	    break;
@@ -1616,7 +2086,7 @@ arm_analyze_prologue (struct gdbarch *gd
 	}
       else if ((insn & 0xffbf0fff) == 0xec2d0200	/* sfmfd f0, 4,
 							   [sp!] */
-	       && gdbarch_tdep (gdbarch)->have_fpa_registers)
+	       && tdep->have_fpa_registers)
 	{
 	  int n_saved_fp_regs;
 	  unsigned int fp_start_reg, fp_bound_reg;
@@ -1726,18 +2196,21 @@ arm_analyze_prologue (struct gdbarch *gd
 
       for (regno = 0; regno < ARM_FPS_REGNUM; regno++)
 	if (stack.find_reg (gdbarch, regno, &offset))
-	  cache->saved_regs[regno].addr = offset;
+	  {
+	    cache->saved_regs[regno].set_addr (offset);
+	    if (regno == ARM_SP_REGNUM)
+	      arm_cache_set_active_sp_value(cache, tdep, offset);
+	  }
     }
 
-  if (arm_debug)
-    fprintf_unfiltered (gdb_stdlog, "Prologue scan stopped at %s\n",
-			paddress (gdbarch, unrecognized_pc));
+  arm_debug_printf ("Prologue scan stopped at %s",
+		    paddress (gdbarch, unrecognized_pc));
 
   return unrecognized_pc;
 }
 
 static void
-arm_scan_prologue (struct frame_info *this_frame,
+arm_scan_prologue (const frame_info_ptr &this_frame,
 		   struct arm_prologue_cache *cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -1745,6 +2218,7 @@ arm_scan_prologue (struct frame_info *th
   CORE_ADDR prologue_start, prologue_end;
   CORE_ADDR prev_pc = get_frame_pc (this_frame);
   CORE_ADDR block_addr = get_frame_address_in_block (this_frame);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   /* Assume there is no frame until proven otherwise.  */
   cache->framereg = ARM_SP_REGNUM;
@@ -1763,7 +2237,7 @@ arm_scan_prologue (struct frame_info *th
 				&prologue_end))
     {
       /* One way to find the end of the prologue (which works well
-         for unoptimized code) is to do the following:
+	 for unoptimized code) is to do the following:
 
 	    struct symtab_and_line sal = find_pc_line (prologue_start, 0);
 
@@ -1810,36 +2284,37 @@ arm_scan_prologue (struct frame_info *th
       ULONGEST return_value;
 
       /* AAPCS does not use a frame register, so we can abort here.  */
-      if (gdbarch_tdep (gdbarch)->arm_abi == ARM_ABI_AAPCS)
-        return;
+      if (tdep->arm_abi == ARM_ABI_AAPCS)
+	return;
 
       frame_loc = get_frame_register_unsigned (this_frame, ARM_FP_REGNUM);
       if (!safe_read_memory_unsigned_integer (frame_loc, 4, byte_order,
 					      &return_value))
-        return;
+	return;
       else
-        {
-          prologue_start = gdbarch_addr_bits_remove
+	{
+	  prologue_start = gdbarch_addr_bits_remove
 			     (gdbarch, return_value) - 8;
-          prologue_end = prologue_start + 64;	/* See above.  */
-        }
+	  prologue_end = prologue_start + 64;	/* See above.  */
+	}
     }
 
   if (prev_pc < prologue_end)
     prologue_end = prev_pc;
 
-  arm_analyze_prologue (gdbarch, prologue_start, prologue_end, cache);
+  arm_analyze_prologue (gdbarch, prologue_start, prologue_end, cache,
+			target_arm_instruction_reader ());
 }
 
 static struct arm_prologue_cache *
-arm_make_prologue_cache (struct frame_info *this_frame)
+arm_make_prologue_cache (const frame_info_ptr &this_frame)
 {
   int reg;
   struct arm_prologue_cache *cache;
-  CORE_ADDR unwound_fp;
+  CORE_ADDR unwound_fp, prev_sp;
 
   cache = FRAME_OBSTACK_ZALLOC (struct arm_prologue_cache);
-  cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
+  arm_cache_init (cache, this_frame);
 
   arm_scan_prologue (this_frame, cache);
 
@@ -1847,13 +2322,18 @@ arm_make_prologue_cache (struct frame_in
   if (unwound_fp == 0)
     return cache;
 
-  cache->prev_sp = unwound_fp + cache->framesize;
+  arm_gdbarch_tdep *tdep =
+    gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+
+  prev_sp = unwound_fp + cache->framesize;
+  arm_cache_set_active_sp_value (cache, tdep, prev_sp);
 
   /* Calculate actual addresses of saved registers using offsets
      determined by arm_scan_prologue.  */
   for (reg = 0; reg < gdbarch_num_regs (get_frame_arch (this_frame)); reg++)
-    if (trad_frame_addr_p (cache->saved_regs, reg))
-      cache->saved_regs[reg].addr += cache->prev_sp;
+    if (cache->saved_regs[reg].is_addr ())
+      cache->saved_regs[reg].set_addr (cache->saved_regs[reg].addr () +
+				       prev_sp);
 
   return cache;
 }
@@ -1861,7 +2341,7 @@ arm_make_prologue_cache (struct frame_in
 /* Implementation of the stop_reason hook for arm_prologue frames.  */
 
 static enum unwind_stop_reason
-arm_prologue_unwind_stop_reason (struct frame_info *this_frame,
+arm_prologue_unwind_stop_reason (const frame_info_ptr &this_frame,
 				 void **this_cache)
 {
   struct arm_prologue_cache *cache;
@@ -1873,11 +2353,13 @@ arm_prologue_unwind_stop_reason (struct
 
   /* This is meant to halt the backtrace at "_start".  */
   pc = get_frame_pc (this_frame);
-  if (pc <= gdbarch_tdep (get_frame_arch (this_frame))->lowest_pc)
+  gdbarch *arch = get_frame_arch (this_frame);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (arch);
+  if (pc <= tdep->lowest_pc)
     return UNWIND_OUTERMOST;
 
   /* If we've hit a wall, stop.  */
-  if (cache->prev_sp == 0)
+  if (arm_cache_get_prev_sp_value (cache, tdep) == 0)
     return UNWIND_OUTERMOST;
 
   return UNWIND_NO_REASON;
@@ -1887,7 +2369,7 @@ arm_prologue_unwind_stop_reason (struct
    and the caller's SP when we were called.  */
 
 static void
-arm_prologue_this_id (struct frame_info *this_frame,
+arm_prologue_this_id (const frame_info_ptr &this_frame,
 		      void **this_cache,
 		      struct frame_id *this_id)
 {
@@ -1899,6 +2381,9 @@ arm_prologue_this_id (struct frame_info
     *this_cache = arm_make_prologue_cache (this_frame);
   cache = (struct arm_prologue_cache *) *this_cache;
 
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+
   /* Use function start address as part of the frame ID.  If we cannot
      identify the start address (due to missing symbol information),
      fall back to just using the current PC.  */
@@ -1907,22 +2392,30 @@ arm_prologue_this_id (struct frame_info
   if (!func)
     func = pc;
 
-  id = frame_id_build (cache->prev_sp, func);
+  id = frame_id_build (arm_cache_get_prev_sp_value (cache, tdep), func);
   *this_id = id;
 }
 
 static struct value *
-arm_prologue_prev_register (struct frame_info *this_frame,
+arm_prologue_prev_register (const frame_info_ptr &this_frame,
 			    void **this_cache,
 			    int prev_regnum)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct arm_prologue_cache *cache;
+  CORE_ADDR sp_value;
 
   if (*this_cache == NULL)
     *this_cache = arm_make_prologue_cache (this_frame);
   cache = (struct arm_prologue_cache *) *this_cache;
 
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  /* If this frame has signed the return address, mark it as so.  */
+  if (tdep->have_pacbti && cache->ra_signed_state.has_value ()
+      && *cache->ra_signed_state)
+    set_frame_previous_pc_masked (this_frame);
+
   /* If we are asked to unwind the PC, then we need to return the LR
      instead.  The prologue may save PC, but it will point into this
      frame's prologue, not the next frame's resume location.  Also
@@ -1941,7 +2434,16 @@ arm_prologue_prev_register (struct frame
      identified by the next frame's stack pointer at the time of the call.
      The value was already reconstructed into PREV_SP.  */
   if (prev_regnum == ARM_SP_REGNUM)
-    return frame_unwind_got_constant (this_frame, prev_regnum, cache->prev_sp);
+    return frame_unwind_got_constant (this_frame, prev_regnum,
+				      arm_cache_get_prev_sp_value (cache, tdep));
+
+  /* The value might be one of the alternative SP, if so, use the
+     value already constructed.  */
+  if (arm_is_alternative_sp_register (tdep, prev_regnum))
+    {
+      sp_value = arm_cache_get_sp_register (cache, tdep, prev_regnum);
+      return frame_unwind_got_constant (this_frame, prev_regnum, sp_value);
+    }
 
   /* The CPSR may have been changed by the call instruction and by the
      called function.  The only bit we can reconstruct is the T bit,
@@ -1953,15 +2455,10 @@ arm_prologue_prev_register (struct frame
      but the processor status is likely valid.  */
   if (prev_regnum == ARM_PS_REGNUM)
     {
-      CORE_ADDR lr, cpsr;
-      ULONGEST t_bit = arm_psr_thumb_bit (gdbarch);
+      ULONGEST cpsr = get_frame_register_unsigned (this_frame, prev_regnum);
+      CORE_ADDR lr = frame_unwind_register_unsigned (this_frame, ARM_LR_REGNUM);
 
-      cpsr = get_frame_register_unsigned (this_frame, prev_regnum);
-      lr = frame_unwind_register_unsigned (this_frame, ARM_LR_REGNUM);
-      if (IS_THUMB_ADDR (lr))
-	cpsr |= t_bit;
-      else
-	cpsr &= ~t_bit;
+      cpsr = reconstruct_t_bit (gdbarch, lr, cpsr);
       return frame_unwind_got_constant (this_frame, prev_regnum, cpsr);
     }
 
@@ -1969,14 +2466,16 @@ arm_prologue_prev_register (struct frame
 				       prev_regnum);
 }
 
-struct frame_unwind arm_prologue_unwind = {
+static const frame_unwind_legacy arm_prologue_unwind (
+  "arm prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   arm_prologue_unwind_stop_reason,
   arm_prologue_this_id,
   arm_prologue_prev_register,
   NULL,
   default_frame_sniffer
-};
+);
 
 /* Maintain a list of ARM exception table entries per objfile, similar to the
    list of mapping symbols.  We only cache entries for standard ARM-defined
@@ -1985,7 +2484,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
@@ -2000,22 +2499,20 @@ struct arm_exidx_data
 };
 
 /* Per-BFD key to store exception handling information.  */
-static const struct bfd_key<arm_exidx_data> arm_exidx_data_key;
+static const registry<bfd>::key<arm_exidx_data> arm_exidx_data_key;
 
 static struct obj_section *
 arm_obj_section_from_vma (struct objfile *objfile, bfd_vma vma)
 {
-  struct obj_section *osect;
-
-  ALL_OBJFILE_OSECTIONS (objfile, osect)
-    if (bfd_section_flags (osect->the_bfd_section) & SEC_ALLOC)
+  for (obj_section &osect : objfile->sections ())
+    if (bfd_section_flags (osect.the_bfd_section) & SEC_ALLOC)
       {
 	bfd_vma start, size;
-	start = bfd_section_vma (osect->the_bfd_section);
-	size = bfd_section_size (osect->the_bfd_section);
+	start = bfd_section_vma (osect.the_bfd_section);
+	size = bfd_section_size (osect.the_bfd_section);
 
 	if (start <= vma && vma < start + size)
-	  return osect;
+	  return &osect;
       }
 
   return NULL;
@@ -2044,38 +2541,39 @@ arm_exidx_new_objfile (struct objfile *o
   LONGEST i;
 
   /* If we've already touched this file, do nothing.  */
-  if (!objfile || arm_exidx_data_key.get (objfile->obfd) != NULL)
+  if (arm_exidx_data_key.get (objfile->obfd.get ()) != nullptr)
     return;
 
   /* Read contents of exception table and index.  */
-  exidx = bfd_get_section_by_name (objfile->obfd, ELF_STRING_ARM_unwind);
+  exidx = bfd_get_section_by_name (objfile->obfd.get (),
+				   ELF_STRING_ARM_unwind);
   gdb::byte_vector exidx_data;
   if (exidx)
     {
       exidx_vma = bfd_section_vma (exidx);
       exidx_data.resize (bfd_section_size (exidx));
 
-      if (!bfd_get_section_contents (objfile->obfd, exidx,
+      if (!bfd_get_section_contents (objfile->obfd.get (), exidx,
 				     exidx_data.data (), 0,
 				     exidx_data.size ()))
 	return;
     }
 
-  extab = bfd_get_section_by_name (objfile->obfd, ".ARM.extab");
+  extab = bfd_get_section_by_name (objfile->obfd.get (), ".ARM.extab");
   gdb::byte_vector extab_data;
   if (extab)
     {
       extab_vma = bfd_section_vma (extab);
       extab_data.resize (bfd_section_size (extab));
 
-      if (!bfd_get_section_contents (objfile->obfd, extab,
+      if (!bfd_get_section_contents (objfile->obfd.get (), extab,
 				     extab_data.data (), 0,
 				     extab_data.size ()))
 	return;
     }
 
   /* Allocate exception table data structure.  */
-  data = arm_exidx_data_key.emplace (objfile->obfd);
+  data = arm_exidx_data_key.emplace (objfile->obfd.get ());
   data->section_maps.resize (objfile->obfd->section_count);
 
   /* Fill in exception table.  */
@@ -2160,7 +2658,7 @@ arm_exidx_new_objfile (struct objfile *o
 			  NULL
 			};
 
-		      CORE_ADDR pc = pers + obj_section_offset (pers_sec);
+		      CORE_ADDR pc = pers + pers_sec->offset ();
 		      int k;
 
 		      for (k = 0; personality[k]; k++)
@@ -2201,7 +2699,7 @@ arm_exidx_new_objfile (struct objfile *o
       if (n_bytes || n_words)
 	{
 	  gdb_byte *p = entry
-	    = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack,
+	    = (gdb_byte *) obstack_alloc (&objfile->per_bfd->storage_obstack,
 					  n_bytes + n_words * 4 + 1);
 
 	  while (n_bytes--)
@@ -2245,9 +2743,9 @@ arm_find_exidx_entry (CORE_ADDR memaddr,
   if (sec != NULL)
     {
       struct arm_exidx_data *data;
-      struct arm_exidx_entry map_key = { memaddr - obj_section_addr (sec), 0 };
+      struct arm_exidx_entry map_key = { memaddr - sec->addr (), 0 };
 
-      data = arm_exidx_data_key.get (sec->objfile->obfd);
+      data = arm_exidx_data_key.get (sec->objfile->obfd.get ());
       if (data != NULL)
 	{
 	  std::vector<arm_exidx_entry> &map
@@ -2265,7 +2763,7 @@ arm_find_exidx_entry (CORE_ADDR memaddr,
 		  if (idx->addr == map_key.addr)
 		    {
 		      if (start)
-			*start = idx->addr + obj_section_addr (sec);
+			*start = idx->addr + sec->addr ();
 		      return idx->entry;
 		    }
 		}
@@ -2274,7 +2772,7 @@ arm_find_exidx_entry (CORE_ADDR memaddr,
 		{
 		  idx = idx - 1;
 		  if (start)
-		    *start = idx->addr + obj_section_addr (sec);
+		    *start = idx->addr + sec->addr ();
 		  return idx->entry;
 		}
 	    }
@@ -2294,14 +2792,14 @@ arm_find_exidx_entry (CORE_ADDR memaddr,
    for the ARM Architecture" document.  */
 
 static struct arm_prologue_cache *
-arm_exidx_fill_cache (struct frame_info *this_frame, gdb_byte *entry)
+arm_exidx_fill_cache (const frame_info_ptr &this_frame, gdb_byte *entry)
 {
   CORE_ADDR vsp = 0;
   int vsp_valid = 0;
 
   struct arm_prologue_cache *cache;
   cache = FRAME_OBSTACK_ZALLOC (struct arm_prologue_cache);
-  cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
+  arm_cache_init (cache, this_frame);
 
   for (;;)
     {
@@ -2311,14 +2809,14 @@ arm_exidx_fill_cache (struct frame_info
 	 actual value in the current frame.  */
       if (!vsp_valid)
 	{
-	  if (trad_frame_realreg_p (cache->saved_regs, ARM_SP_REGNUM))
+	  if (cache->saved_regs[ARM_SP_REGNUM].is_realreg ())
 	    {
-	      int reg = cache->saved_regs[ARM_SP_REGNUM].realreg;
+	      int reg = cache->saved_regs[ARM_SP_REGNUM].realreg ();
 	      vsp = get_frame_register_unsigned (this_frame, reg);
 	    }
 	  else
 	    {
-	      CORE_ADDR addr = cache->saved_regs[ARM_SP_REGNUM].addr;
+	      CORE_ADDR addr = cache->saved_regs[ARM_SP_REGNUM].addr ();
 	      vsp = get_frame_memory_unsigned (this_frame, addr, 4);
 	    }
 
@@ -2353,7 +2851,7 @@ arm_exidx_fill_cache (struct frame_info
 	  for (i = 0; i < 12; i++)
 	    if (mask & (1 << i))
 	      {
-	        cache->saved_regs[4 + i].addr = vsp;
+		cache->saved_regs[4 + i].set_addr (vsp);
 		vsp += 4;
 	      }
 
@@ -2382,14 +2880,14 @@ arm_exidx_fill_cache (struct frame_info
 	  /* Pop r4..r[4+count].  */
 	  for (i = 0; i <= count; i++)
 	    {
-	      cache->saved_regs[4 + i].addr = vsp;
+	      cache->saved_regs[4 + i].set_addr (vsp);
 	      vsp += 4;
 	    }
 
 	  /* If indicated by flag, pop LR as well.  */
 	  if (pop_lr)
 	    {
-	      cache->saved_regs[ARM_LR_REGNUM].addr = vsp;
+	      cache->saved_regs[ARM_LR_REGNUM].set_addr (vsp);
 	      vsp += 4;
 	    }
 	}
@@ -2397,7 +2895,7 @@ arm_exidx_fill_cache (struct frame_info
 	{
 	  /* We could only have updated PC by popping into it; if so, it
 	     will show up as address.  Otherwise, copy LR into PC.  */
-	  if (!trad_frame_addr_p (cache->saved_regs, ARM_PC_REGNUM))
+	  if (!cache->saved_regs[ARM_PC_REGNUM].is_addr ())
 	    cache->saved_regs[ARM_PC_REGNUM]
 	      = cache->saved_regs[ARM_LR_REGNUM];
 
@@ -2417,7 +2915,7 @@ arm_exidx_fill_cache (struct frame_info
 	  for (i = 0; i < 4; i++)
 	    if (mask & (1 << i))
 	      {
-		cache->saved_regs[i].addr = vsp;
+		cache->saved_regs[i].set_addr (vsp);
 		vsp += 4;
 	      }
 	}
@@ -2448,7 +2946,7 @@ arm_exidx_fill_cache (struct frame_info
 	  /* Pop VFP double-precision registers D[start]..D[start+count].  */
 	  for (i = 0; i <= count; i++)
 	    {
-	      cache->saved_regs[ARM_D0_REGNUM + start + i].addr = vsp;
+	      cache->saved_regs[ARM_D0_REGNUM + start + i].set_addr (vsp);
 	      vsp += 8;
 	    }
 
@@ -2463,7 +2961,7 @@ arm_exidx_fill_cache (struct frame_info
 	  /* Pop VFP double-precision registers D[8]..D[8+count].  */
 	  for (i = 0; i <= count; i++)
 	    {
-	      cache->saved_regs[ARM_D0_REGNUM + 8 + i].addr = vsp;
+	      cache->saved_regs[ARM_D0_REGNUM + 8 + i].set_addr (vsp);
 	      vsp += 8;
 	    }
 
@@ -2483,7 +2981,7 @@ arm_exidx_fill_cache (struct frame_info
 	  /* Pop iwmmx registers WR[start]..WR[start+count].  */
 	  for (i = 0; i <= count; i++)
 	    {
-	      cache->saved_regs[ARM_WR0_REGNUM + start + i].addr = vsp;
+	      cache->saved_regs[ARM_WR0_REGNUM + start + i].set_addr (vsp);
 	      vsp += 8;
 	    }
 	}
@@ -2500,7 +2998,7 @@ arm_exidx_fill_cache (struct frame_info
 	  for (i = 0; i < 4; i++)
 	    if (mask & (1 << i))
 	      {
-		cache->saved_regs[ARM_WCGR0_REGNUM + i].addr = vsp;
+		cache->saved_regs[ARM_WCGR0_REGNUM + i].set_addr (vsp);
 		vsp += 4;
 	      }
 	}
@@ -2512,7 +3010,7 @@ arm_exidx_fill_cache (struct frame_info
 	  /* Pop iwmmx registers WR[10]..WR[10+count].  */
 	  for (i = 0; i <= count; i++)
 	    {
-	      cache->saved_regs[ARM_WR0_REGNUM + 10 + i].addr = vsp;
+	      cache->saved_regs[ARM_WR0_REGNUM + 10 + i].set_addr (vsp);
 	      vsp += 8;
 	    }
 	}
@@ -2530,7 +3028,7 @@ arm_exidx_fill_cache (struct frame_info
 	     D[16+start]..D[16+start+count].  */
 	  for (i = 0; i <= count; i++)
 	    {
-	      cache->saved_regs[ARM_D0_REGNUM + 16 + start + i].addr = vsp;
+	      cache->saved_regs[ARM_D0_REGNUM + 16 + start + i].set_addr (vsp);
 	      vsp += 8;
 	    }
 	}
@@ -2543,7 +3041,7 @@ arm_exidx_fill_cache (struct frame_info
 	  /* Pop VFP double-precision registers D[start]..D[start+count].  */
 	  for (i = 0; i <= count; i++)
 	    {
-	      cache->saved_regs[ARM_D0_REGNUM + start + i].addr = vsp;
+	      cache->saved_regs[ARM_D0_REGNUM + start + i].set_addr (vsp);
 	      vsp += 8;
 	    }
 	}
@@ -2555,7 +3053,7 @@ arm_exidx_fill_cache (struct frame_info
 	  /* Pop VFP double-precision registers D[8]..D[8+count].  */
 	  for (i = 0; i <= count; i++)
 	    {
-	      cache->saved_regs[ARM_D0_REGNUM + 8 + i].addr = vsp;
+	      cache->saved_regs[ARM_D0_REGNUM + 8 + i].set_addr (vsp);
 	      vsp += 8;
 	    }
 	}
@@ -2568,8 +3066,8 @@ arm_exidx_fill_cache (struct frame_info
 
   /* If we restore SP from a register, assume this was the frame register.
      Otherwise just fall back to SP as frame register.  */
-  if (trad_frame_realreg_p (cache->saved_regs, ARM_SP_REGNUM))
-    cache->framereg = cache->saved_regs[ARM_SP_REGNUM].realreg;
+  if (cache->saved_regs[ARM_SP_REGNUM].is_realreg ())
+    cache->framereg = cache->saved_regs[ARM_SP_REGNUM].realreg ();
   else
     cache->framereg = ARM_SP_REGNUM;
 
@@ -2578,7 +3076,9 @@ arm_exidx_fill_cache (struct frame_info
     = vsp - get_frame_register_unsigned (this_frame, cache->framereg);
 
   /* We already got the previous SP.  */
-  cache->prev_sp = vsp;
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+  arm_cache_set_active_sp_value (cache, tdep, vsp);
 
   return cache;
 }
@@ -2590,7 +3090,7 @@ arm_exidx_fill_cache (struct frame_info
 
 static int
 arm_exidx_unwind_sniffer (const struct frame_unwind *self,
-			  struct frame_info *this_frame,
+			  const frame_info_ptr &this_frame,
 			  void **this_prologue_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
@@ -2626,26 +3126,34 @@ arm_exidx_unwind_sniffer (const struct f
 	  && get_frame_type (get_next_frame (this_frame)) == NORMAL_FRAME)
 	exc_valid = 1;
 
-      /* We also assume exception information is valid if we're currently
-	 blocked in a system call.  The system library is supposed to
-	 ensure this, so that e.g. pthread cancellation works.  */
-      if (arm_frame_is_thumb (this_frame))
+      /* Some syscalls keep PC pointing to the SVC instruction itself.  */
+      for (int shift = 0; shift <= 1 && !exc_valid; ++shift)
 	{
-	  ULONGEST insn;
-
-	  if (safe_read_memory_unsigned_integer (get_frame_pc (this_frame) - 2,
-						 2, byte_order_for_code, &insn)
-	      && (insn & 0xff00) == 0xdf00 /* svc */)
-	    exc_valid = 1;
-	}
-      else
-	{
-	  ULONGEST insn;
+	  /* We also assume exception information is valid if we're currently
+	     blocked in a system call.  The system library is supposed to
+	     ensure this, so that e.g. pthread cancellation works.  */
+	  if (arm_frame_is_thumb (this_frame))
+	    {
+	      ULONGEST insn;
+
+	      if (safe_read_memory_unsigned_integer ((get_frame_pc (this_frame)
+						      - (shift ? 2 : 0)),
+						     2, byte_order_for_code,
+						     &insn)
+		  && (insn & 0xff00) == 0xdf00 /* svc */)
+		exc_valid = 1;
+	    }
+	  else
+	    {
+	      ULONGEST insn;
 
-	  if (safe_read_memory_unsigned_integer (get_frame_pc (this_frame) - 4,
-						 4, byte_order_for_code, &insn)
-	      && (insn & 0x0f000000) == 0x0f000000 /* svc */)
-	    exc_valid = 1;
+	      if (safe_read_memory_unsigned_integer ((get_frame_pc (this_frame)
+						      - (shift ? 4 : 0)),
+						     4, byte_order_for_code,
+						     &insn)
+		  && (insn & 0x0f000000) == 0x0f000000 /* svc */)
+		exc_valid = 1;
+	    }
 	}
 	
       /* Bail out if we don't know that exception information is valid.  */
@@ -2678,35 +3186,42 @@ arm_exidx_unwind_sniffer (const struct f
   return 1;
 }
 
-struct frame_unwind arm_exidx_unwind = {
+struct frame_unwind_legacy arm_exidx_unwind (
+  "arm exidx",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arm_prologue_this_id,
   arm_prologue_prev_register,
   NULL,
   arm_exidx_unwind_sniffer
-};
+);
 
 static struct arm_prologue_cache *
-arm_make_epilogue_frame_cache (struct frame_info *this_frame)
+arm_make_epilogue_frame_cache (const frame_info_ptr &this_frame)
 {
   struct arm_prologue_cache *cache;
   int reg;
 
   cache = FRAME_OBSTACK_ZALLOC (struct arm_prologue_cache);
-  cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
+  arm_cache_init (cache, this_frame);
 
   /* Still rely on the offset calculated from prologue.  */
   arm_scan_prologue (this_frame, cache);
 
   /* Since we are in epilogue, the SP has been restored.  */
-  cache->prev_sp = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM);
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+  arm_cache_set_active_sp_value (cache, tdep,
+				 get_frame_register_unsigned (this_frame,
+							      ARM_SP_REGNUM));
 
   /* Calculate actual addresses of saved registers using offsets
      determined by arm_scan_prologue.  */
   for (reg = 0; reg < gdbarch_num_regs (get_frame_arch (this_frame)); reg++)
-    if (trad_frame_addr_p (cache->saved_regs, reg))
-      cache->saved_regs[reg].addr += cache->prev_sp;
+    if (cache->saved_regs[reg].is_addr ())
+      cache->saved_regs[reg].set_addr (cache->saved_regs[reg].addr ()
+				       + arm_cache_get_prev_sp_value (cache, tdep));
 
   return cache;
 }
@@ -2715,7 +3230,7 @@ arm_make_epilogue_frame_cache (struct fr
    'struct frame_uwnind' for epilogue unwinder.  */
 
 static void
-arm_epilogue_frame_this_id (struct frame_info *this_frame,
+arm_epilogue_frame_this_id (const frame_info_ptr &this_frame,
 			    void **this_cache,
 			    struct frame_id *this_id)
 {
@@ -2734,14 +3249,16 @@ arm_epilogue_frame_this_id (struct frame
   if (func == 0)
     func = pc;
 
-  (*this_id) = frame_id_build (cache->prev_sp, pc);
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+  *this_id = frame_id_build (arm_cache_get_prev_sp_value (cache, tdep), func);
 }
 
 /* Implementation of function hook 'prev_register' in
    'struct frame_uwnind' for epilogue unwinder.  */
 
 static struct value *
-arm_epilogue_frame_prev_register (struct frame_info *this_frame,
+arm_epilogue_frame_prev_register (const frame_info_ptr &this_frame,
 				  void **this_cache, int regnum)
 {
   if (*this_cache == NULL)
@@ -2760,7 +3277,7 @@ static int thumb_stack_frame_destroyed_p
 
 static int
 arm_epilogue_frame_sniffer (const struct frame_unwind *self,
-			    struct frame_info *this_frame,
+			    const frame_info_ptr &this_frame,
 			    void **this_prologue_cache)
 {
   if (frame_relative_level (this_frame) == 0)
@@ -2779,15 +3296,16 @@ arm_epilogue_frame_sniffer (const struct
 
 /* Frame unwinder from epilogue.  */
 
-static const struct frame_unwind arm_epilogue_frame_unwind =
-{
+static const struct frame_unwind_legacy arm_epilogue_frame_unwind (
+  "arm epilogue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arm_epilogue_frame_this_id,
   arm_epilogue_frame_prev_register,
   NULL,
-  arm_epilogue_frame_sniffer,
-};
+  arm_epilogue_frame_sniffer
+);
 
 /* Recognize GCC's trampoline for thumb call-indirect.  If we are in a
    trampoline, return the target PC.  Otherwise return 0.
@@ -2816,7 +3334,7 @@ static const struct frame_unwind arm_epi
    The trampoline 'bx r2' doesn't belong to main.  */
 
 static CORE_ADDR
-arm_skip_bx_reg (struct frame_info *frame, CORE_ADDR pc)
+arm_skip_bx_reg (const frame_info_ptr &frame, CORE_ADDR pc)
 {
   /* The heuristics of recognizing such trampoline is that FRAME is
      executing in Thumb mode and the instruction on PC is 'bx Rm'.  */
@@ -2848,14 +3366,18 @@ arm_skip_bx_reg (struct frame_info *fram
 }
 
 static struct arm_prologue_cache *
-arm_make_stub_cache (struct frame_info *this_frame)
+arm_make_stub_cache (const frame_info_ptr &this_frame)
 {
   struct arm_prologue_cache *cache;
 
   cache = FRAME_OBSTACK_ZALLOC (struct arm_prologue_cache);
-  cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
+  arm_cache_init (cache, this_frame);
 
-  cache->prev_sp = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM);
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+  arm_cache_set_active_sp_value (cache, tdep,
+				 get_frame_register_unsigned (this_frame,
+							      ARM_SP_REGNUM));
 
   return cache;
 }
@@ -2863,7 +3385,7 @@ arm_make_stub_cache (struct frame_info *
 /* Our frame ID for a stub frame is the current SP and LR.  */
 
 static void
-arm_stub_this_id (struct frame_info *this_frame,
+arm_stub_this_id (const frame_info_ptr &this_frame,
 		  void **this_cache,
 		  struct frame_id *this_id)
 {
@@ -2873,12 +3395,15 @@ arm_stub_this_id (struct frame_info *thi
     *this_cache = arm_make_stub_cache (this_frame);
   cache = (struct arm_prologue_cache *) *this_cache;
 
-  *this_id = frame_id_build (cache->prev_sp, get_frame_pc (this_frame));
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+  *this_id = frame_id_build (arm_cache_get_prev_sp_value (cache, tdep),
+			     get_frame_pc (this_frame));
 }
 
 static int
 arm_stub_unwind_sniffer (const struct frame_unwind *self,
-			 struct frame_info *this_frame,
+			 const frame_info_ptr &this_frame,
 			 void **this_prologue_cache)
 {
   CORE_ADDR addr_in_block;
@@ -2901,63 +3426,431 @@ arm_stub_unwind_sniffer (const struct fr
   return 0;
 }
 
-struct frame_unwind arm_stub_unwind = {
+struct frame_unwind_legacy arm_stub_unwind (
+  "arm stub",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   arm_stub_this_id,
   arm_prologue_prev_register,
   NULL,
   arm_stub_unwind_sniffer
-};
+);
 
 /* Put here the code to store, into CACHE->saved_regs, the addresses
    of the saved registers of frame described by THIS_FRAME.  CACHE is
    returned.  */
 
 static struct arm_prologue_cache *
-arm_m_exception_cache (struct frame_info *this_frame)
+arm_m_exception_cache (const frame_info_ptr &this_frame)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
-  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
   struct arm_prologue_cache *cache;
-  CORE_ADDR unwound_sp;
-  LONGEST xpsr;
 
   cache = FRAME_OBSTACK_ZALLOC (struct arm_prologue_cache);
-  cache->saved_regs = trad_frame_alloc_saved_regs (this_frame);
+  arm_cache_init (cache, this_frame);
+
+  /* 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).  */
 
-  unwound_sp = get_frame_register_unsigned (this_frame,
-					    ARM_SP_REGNUM);
+  /* In the lockup state PC contains a lockup magic value.
+     The PC value of the the next outer frame is irreversibly
+     lost.  The other registers are intact so LR likely contains
+     PC of some frame next to the outer one, but we cannot analyze
+     the next outer frame without knowing its PC
+     therefore we do not know SP fixup for this frame.
+     Some heuristics to resynchronize SP might be possible.
+     For simplicity, just terminate the unwinding to prevent it going
+     astray and attempting to read data/addresses it shouldn't,
+     which may cause further issues due to side-effects.  */
+  CORE_ADDR pc = get_frame_pc (this_frame);
+  if (arm_m_addr_is_lockup (pc))
+    {
+      /* The lockup can be real just in the innermost frame
+	 as the CPU is stopped and cannot create more frames.
+	 If we hit lockup magic PC in the other frame, it is
+	 just a sentinel at the top of stack: do not warn then.  */
+      if (frame_relative_level (this_frame) == 0)
+	warning (_("ARM M in lockup state, stack unwinding terminated."));
 
-  /* The hardware saves eight 32-bit words, comprising xPSR,
-     ReturnAddress, LR (R14), R12, R3, R2, R1, R0.  See details in
-     "B1.5.6 Exception entry behavior" in
-     "ARMv7-M Architecture Reference Manual".  */
-  cache->saved_regs[0].addr = unwound_sp;
-  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_PS_REGNUM].addr = unwound_sp + 28;
-
-  /* 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;
+      /* Terminate any further stack unwinding.  */
+      arm_cache_set_active_sp_value (cache, tdep, 0);
+      return cache;
+    }
 
-  return cache;
+  CORE_ADDR lr = get_frame_register_unsigned (this_frame, ARM_LR_REGNUM);
+
+  /* ARMv7-M Architecture Reference "A2.3.1 Arm core registers"
+     states that LR is set to 0xffffffff on reset.  ARMv8-M Architecture
+     Reference "B3.3 Registers" states that LR is set to 0xffffffff on warm
+     reset if Main Extension is implemented, otherwise the value is unknown.  */
+  if (lr == 0xffffffff)
+    {
+      /* Terminate any further stack unwinding.  */
+      arm_cache_set_active_sp_value (cache, tdep, 0);
+      return cache;
+    }
+
+  /* Check FNC_RETURN indicator bits (24-31).  */
+  bool fnc_return = (((lr >> 24) & 0xff) == 0xfe);
+  if (fnc_return)
+    {
+      /* FNC_RETURN is only valid for targets with Security Extension.  */
+      if (!tdep->have_sec_ext)
+	{
+	  error (_("While unwinding an exception frame, found unexpected Link "
+		   "Register value %s that requires the security extension, "
+		   "but the extension was not found or is disabled.  This "
+		   "should not happen and may be caused by corrupt data or a "
+		   "bug in GDB."), phex (lr, ARM_INT_REGISTER_SIZE));
+	}
+
+      if (!arm_unwind_secure_frames)
+	{
+	  warning (_("Non-secure to secure stack unwinding disabled."));
+
+	  /* Terminate any further stack unwinding.  */
+	  arm_cache_set_active_sp_value (cache, tdep, 0);
+	  return cache;
+	}
+
+      ULONGEST xpsr = get_frame_register_unsigned (this_frame, ARM_PS_REGNUM);
+      if ((xpsr & 0x1ff) != 0)
+	/* Handler mode: This is the mode that exceptions are handled in.  */
+	arm_cache_switch_prev_sp (cache, tdep, tdep->m_profile_msp_s_regnum);
+      else
+	/* Thread mode: This is the normal mode that programs run in.  */
+	arm_cache_switch_prev_sp (cache, tdep, tdep->m_profile_psp_s_regnum);
+
+      CORE_ADDR unwound_sp = arm_cache_get_prev_sp_value (cache, tdep);
+
+      /* Stack layout for a function call from Secure to Non-Secure state
+	 (ARMv8-M section B3.16):
+
+	    SP Offset
+
+		    +-------------------+
+	     0x08   |                   |
+		    +-------------------+   <-- Original SP
+	     0x04   |    Partial xPSR   |
+		    +-------------------+
+	     0x00   |   Return Address  |
+		    +===================+   <-- New SP  */
+
+      cache->saved_regs[ARM_PC_REGNUM].set_addr (unwound_sp + 0x00);
+      cache->saved_regs[ARM_LR_REGNUM].set_addr (unwound_sp + 0x00);
+      cache->saved_regs[ARM_PS_REGNUM].set_addr (unwound_sp + 0x04);
+
+      arm_cache_set_active_sp_value (cache, tdep, unwound_sp + 0x08);
+
+      return cache;
+    }
+
+  /* Check EXC_RETURN indicator bits (24-31).  */
+  bool exc_return = (((lr >> 24) & 0xff) == 0xff);
+  if (exc_return)
+    {
+      int sp_regnum;
+      bool secure_stack_used = false;
+      bool default_callee_register_stacking = false;
+      bool exception_domain_is_secure = false;
+      enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+
+      /* Check EXC_RETURN bit SPSEL if Main or Thread (process) stack used.  */
+      bool process_stack_used = (bit (lr, 2) != 0);
+
+      if (tdep->have_sec_ext)
+	{
+	  secure_stack_used = (bit (lr, 6) != 0);
+	  default_callee_register_stacking = (bit (lr, 5) != 0);
+	  exception_domain_is_secure = (bit (lr, 0) != 0);
+
+	  /* Unwinding from non-secure to secure can trip security
+	     measures.  In order to avoid the debugger being
+	     intrusive, rely on the user to configure the requested
+	     mode.  */
+	  if (secure_stack_used && !exception_domain_is_secure
+	      && !arm_unwind_secure_frames)
+	    {
+	      warning (_("Non-secure to secure stack unwinding disabled."));
+
+	      /* Terminate any further stack unwinding.  */
+	      arm_cache_set_active_sp_value (cache, tdep, 0);
+	      return cache;
+	    }
+
+	  if (process_stack_used)
+	    {
+	      if (secure_stack_used)
+		/* Secure thread (process) stack used, use PSP_S as SP.  */
+		sp_regnum = tdep->m_profile_psp_s_regnum;
+	      else
+		/* Non-secure thread (process) stack used, use PSP_NS as SP.  */
+		sp_regnum = tdep->m_profile_psp_ns_regnum;
+	    }
+	  else
+	    {
+	      if (secure_stack_used)
+		/* Secure main stack used, use MSP_S as SP.  */
+		sp_regnum = tdep->m_profile_msp_s_regnum;
+	      else
+		/* Non-secure main stack used, use MSP_NS as SP.  */
+		sp_regnum = tdep->m_profile_msp_ns_regnum;
+	    }
+	}
+      else
+	{
+	  if (process_stack_used)
+	    /* Thread (process) stack used, use PSP as SP.  */
+	    sp_regnum = tdep->m_profile_psp_regnum;
+	  else
+	    /* Main stack used, use MSP as SP.  */
+	    sp_regnum = tdep->m_profile_msp_regnum;
+	}
+
+      /* Set the active SP regnum.  */
+      arm_cache_switch_prev_sp (cache, tdep, sp_regnum);
+
+      /* Fetch the SP to use for this frame.  */
+      CORE_ADDR unwound_sp = arm_cache_get_prev_sp_value (cache, tdep);
+
+      /* Exception entry context stacking are described in ARMv8-M (section
+	 B3.19) and ARMv7-M (sections B1.5.6 and B1.5.7) Architecture Reference
+	 Manuals.
+
+	 The following figure shows the structure of the stack frame when
+	 Security and Floating-point extensions are present.
+
+			      SP Offsets
+		Without                         With
+	      Callee Regs                    Callee Regs
+					(Secure -> Non-Secure)
+			+-------------------+
+		 0xA8   |                   |   0xD0
+			+===================+         --+  <-- Original SP
+		 0xA4   |        S31        |   0xCC    |
+			+-------------------+           |
+				 ...                    |  Additional FP context
+			+-------------------+           |
+		 0x68   |        S16        |   0x90    |
+			+===================+         --+
+		 0x64   |      Reserved     |   0x8C    |
+			+-------------------+           |
+		 0x60   |       FPSCR       |   0x88    |
+			+-------------------+           |
+		 0x5C   |        S15        |   0x84    |  FP context
+			+-------------------+           |
+				 ...                    |
+			+-------------------+           |
+		 0x20   |         S0        |   0x48    |
+			+===================+         --+
+		 0x1C   |       xPSR        |   0x44    |
+			+-------------------+           |
+		 0x18   |  Return address   |   0x40    |
+			+-------------------+           |
+		 0x14   |      LR(R14)      |   0x3C    |
+			+-------------------+           |
+		 0x10   |        R12        |   0x38    |  State context
+			+-------------------+           |
+		 0x0C   |         R3        |   0x34    |
+			+-------------------+           |
+				 ...                    |
+			+-------------------+           |
+		 0x00   |         R0        |   0x28    |
+			+===================+         --+
+			|        R11        |   0x24    |
+			+-------------------+           |
+				 ...                    |
+			+-------------------+           |  Additional state
+			|         R4        |   0x08    |  context when
+			+-------------------+           |  transitioning from
+			|      Reserved     |   0x04    |  Secure to Non-Secure
+			+-------------------+           |
+			|  Magic signature  |   0x00    |
+			+===================+         --+  <-- New SP  */
+
+      uint32_t sp_r0_offset = 0;
+
+      /* With the Security extension, the hardware saves R4..R11 too.  */
+      if (tdep->have_sec_ext && secure_stack_used
+	  && (!default_callee_register_stacking || !exception_domain_is_secure))
+	{
+	  /* Read R4..R11 from the integer callee registers.  */
+	  cache->saved_regs[4].set_addr (unwound_sp + 0x08);
+	  cache->saved_regs[5].set_addr (unwound_sp + 0x0C);
+	  cache->saved_regs[6].set_addr (unwound_sp + 0x10);
+	  cache->saved_regs[7].set_addr (unwound_sp + 0x14);
+	  cache->saved_regs[8].set_addr (unwound_sp + 0x18);
+	  cache->saved_regs[9].set_addr (unwound_sp + 0x1C);
+	  cache->saved_regs[10].set_addr (unwound_sp + 0x20);
+	  cache->saved_regs[11].set_addr (unwound_sp + 0x24);
+	  sp_r0_offset = 0x28;
+	}
+
+      /* The hardware saves eight 32-bit words, comprising xPSR,
+	 ReturnAddress, LR (R14), R12, R3, R2, R1, R0.  See details in
+	 "B1.5.6 Exception entry behavior" in
+	 "ARMv7-M Architecture Reference Manual".  */
+      cache->saved_regs[0].set_addr (unwound_sp + sp_r0_offset);
+      cache->saved_regs[1].set_addr (unwound_sp + sp_r0_offset + 0x04);
+      cache->saved_regs[2].set_addr (unwound_sp + sp_r0_offset + 0x08);
+      cache->saved_regs[3].set_addr (unwound_sp + sp_r0_offset + 0x0C);
+      cache->saved_regs[ARM_IP_REGNUM].set_addr (unwound_sp + sp_r0_offset
+						 + 0x10);
+      cache->saved_regs[ARM_LR_REGNUM].set_addr (unwound_sp + sp_r0_offset
+						 + 0x14);
+      cache->saved_regs[ARM_PC_REGNUM].set_addr (unwound_sp + sp_r0_offset
+						 + 0x18);
+      cache->saved_regs[ARM_PS_REGNUM].set_addr (unwound_sp + sp_r0_offset
+						 + 0x1C);
+
+      /* Check EXC_RETURN bit FTYPE if extended stack frame (FPU regs stored)
+	 type used.  */
+      bool extended_frame_used = (bit (lr, 4) == 0);
+      if (extended_frame_used)
+	{
+	  ULONGEST fpccr;
+	  ULONGEST fpcar;
+
+	  /* Read FPCCR register.  */
+	  if (!safe_read_memory_unsigned_integer (FPCCR, ARM_INT_REGISTER_SIZE,
+						 byte_order, &fpccr))
+	    {
+	      warning (_("Could not fetch required FPCCR content.  Further "
+			 "unwinding is impossible."));
+	      arm_cache_set_active_sp_value (cache, tdep, 0);
+	      return cache;
+	    }
+
+	  /* Read FPCAR register.  */
+	  if (!safe_read_memory_unsigned_integer (FPCAR, ARM_INT_REGISTER_SIZE,
+						  byte_order, &fpcar))
+	    {
+	      warning (_("Could not fetch FPCAR content. Further unwinding of "
+			 "FP register values will be unreliable."));
+	      fpcar = 0;
+	    }
+
+	  bool fpccr_aspen = bit (fpccr, 31);
+	  bool fpccr_lspen = bit (fpccr, 30);
+	  bool fpccr_ts = bit (fpccr, 26);
+	  bool fpccr_lspact = bit (fpccr, 0);
+
+	  /* The LSPEN and ASPEN bits indicate if the lazy state preservation
+	     for FP registers is enabled or disabled.  The LSPACT bit indicate,
+	     together with FPCAR, if the lazy state preservation feature is
+	     active for the current frame or for another frame.
+	     See "Lazy context save of FP state", in B1.5.7, also ARM AN298,
+	     supported by Cortex-M4F architecture for details.  */
+	  bool fpcar_points_to_this_frame = ((unwound_sp + sp_r0_offset + 0x20)
+					     == (fpcar & ~0x7));
+	  bool read_fp_regs_from_stack = (!(fpccr_aspen && fpccr_lspen
+					    && fpccr_lspact
+					    && fpcar_points_to_this_frame));
+
+	  /* Extended stack frame type used.  */
+	  if (read_fp_regs_from_stack)
+	    {
+	      CORE_ADDR addr = unwound_sp + sp_r0_offset + 0x20;
+	      for (int i = 0; i < 8; i++)
+		{
+		  cache->saved_regs[ARM_D0_REGNUM + i].set_addr (addr);
+		  addr += 8;
+		}
+	    }
+	  cache->saved_regs[ARM_FPSCR_REGNUM].set_addr (unwound_sp
+							+ sp_r0_offset + 0x60);
+
+	  if (tdep->have_sec_ext && !default_callee_register_stacking
+	      && fpccr_ts)
+	    {
+	      /* Handle floating-point callee saved registers.  */
+	      if (read_fp_regs_from_stack)
+		{
+		  CORE_ADDR addr = unwound_sp + sp_r0_offset + 0x68;
+		  for (int i = 8; i < 16; i++)
+		    {
+		      cache->saved_regs[ARM_D0_REGNUM + i].set_addr (addr);
+		      addr += 8;
+		    }
+		}
+
+	      arm_cache_set_active_sp_value (cache, tdep,
+					     unwound_sp + sp_r0_offset + 0xA8);
+	    }
+	  else
+	    {
+	      /* Offset 0x64 is reserved.  */
+	      arm_cache_set_active_sp_value (cache, tdep,
+					     unwound_sp + sp_r0_offset + 0x68);
+	    }
+	}
+      else
+	{
+	  /* Standard stack frame type used.  */
+	  arm_cache_set_active_sp_value (cache, tdep,
+					 unwound_sp + sp_r0_offset + 0x20);
+	}
+
+      /* 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.  */
+      ULONGEST xpsr;
+      if (!safe_read_memory_unsigned_integer (cache->saved_regs[ARM_PS_REGNUM]
+					      .addr (), ARM_INT_REGISTER_SIZE,
+					      byte_order, &xpsr))
+	{
+	  warning (_("Could not fetch required XPSR content.  Further "
+		     "unwinding is impossible."));
+	  arm_cache_set_active_sp_value (cache, tdep, 0);
+	  return cache;
+	}
+
+      if (bit (xpsr, 9) != 0)
+	{
+	  CORE_ADDR new_sp = arm_cache_get_prev_sp_value (cache, tdep) + 4;
+	  arm_cache_set_active_sp_value (cache, tdep, new_sp);
+	}
+
+      return cache;
+    }
+
+  internal_error (_("While unwinding an exception frame, "
+		    "found unexpected Link Register value "
+		    "%s.  This should not happen and may "
+		    "be caused by corrupt data or a bug in"
+		    " GDB."),
+		  phex (lr, ARM_INT_REGISTER_SIZE));
+}
+
+/* Implementation of the stop_reason hook for arm_m_exception frames.  */
+
+static enum unwind_stop_reason
+arm_m_exception_frame_unwind_stop_reason (const frame_info_ptr &this_frame,
+					  void **this_cache)
+{
+  struct arm_prologue_cache *cache;
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+
+  if (*this_cache == NULL)
+    *this_cache = arm_m_exception_cache (this_frame);
+  cache = (struct arm_prologue_cache *) *this_cache;
+
+  /* If we've hit a wall, stop.  */
+  if (arm_cache_get_prev_sp_value (cache, tdep) == 0)
+    return UNWIND_OUTERMOST;
+
+  return UNWIND_NO_REASON;
 }
 
 /* Implementation of function hook 'this_id' in
    'struct frame_uwnind'.  */
 
 static void
-arm_m_exception_this_id (struct frame_info *this_frame,
+arm_m_exception_this_id (const frame_info_ptr &this_frame,
 			 void **this_cache,
 			 struct frame_id *this_id)
 {
@@ -2968,7 +3861,9 @@ arm_m_exception_this_id (struct frame_in
   cache = (struct arm_prologue_cache *) *this_cache;
 
   /* Our frame ID for a stub frame is the current SP and LR.  */
-  *this_id = frame_id_build (cache->prev_sp,
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+  *this_id = frame_id_build (arm_cache_get_prev_sp_value (cache, tdep),
 			     get_frame_pc (this_frame));
 }
 
@@ -2976,20 +3871,61 @@ arm_m_exception_this_id (struct frame_in
    'struct frame_uwnind'.  */
 
 static struct value *
-arm_m_exception_prev_register (struct frame_info *this_frame,
+arm_m_exception_prev_register (const frame_info_ptr &this_frame,
 			       void **this_cache,
 			       int prev_regnum)
 {
   struct arm_prologue_cache *cache;
+  CORE_ADDR sp_value;
 
   if (*this_cache == NULL)
     *this_cache = arm_m_exception_cache (this_frame);
   cache = (struct arm_prologue_cache *) *this_cache;
 
   /* The value was already reconstructed into PREV_SP.  */
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
   if (prev_regnum == ARM_SP_REGNUM)
     return frame_unwind_got_constant (this_frame, prev_regnum,
-				      cache->prev_sp);
+				      arm_cache_get_prev_sp_value (cache, tdep));
+
+  /* If we are asked to unwind the PC, strip the saved T bit.  */
+  if (prev_regnum == ARM_PC_REGNUM)
+    {
+      struct value *value = trad_frame_get_prev_register (this_frame,
+							  cache->saved_regs,
+							  prev_regnum);
+      CORE_ADDR pc = value_as_address (value);
+      return frame_unwind_got_constant (this_frame, prev_regnum,
+					UNMAKE_THUMB_ADDR (pc));
+    }
+
+  /* The value might be one of the alternative SP, if so, use the
+     value already constructed.  */
+  if (arm_is_alternative_sp_register (tdep, prev_regnum))
+    {
+      sp_value = arm_cache_get_sp_register (cache, tdep, prev_regnum);
+      return frame_unwind_got_constant (this_frame, prev_regnum, sp_value);
+    }
+
+  /* If we are asked to unwind the xPSR, set T bit if PC is in thumb mode.
+     LR register is unreliable as it contains FNC_RETURN or EXC_RETURN
+     pattern.  */
+  if (prev_regnum == ARM_PS_REGNUM)
+    {
+      struct gdbarch *gdbarch = get_frame_arch (this_frame);
+      struct value *value = trad_frame_get_prev_register (this_frame,
+							  cache->saved_regs,
+							  ARM_PC_REGNUM);
+      CORE_ADDR pc = value_as_address (value);
+      value = trad_frame_get_prev_register (this_frame, cache->saved_regs,
+					    ARM_PS_REGNUM);
+      ULONGEST xpsr = value_as_long (value);
+
+      /* Reconstruct the T bit; see arm_prologue_prev_register for details.  */
+      xpsr = reconstruct_t_bit (gdbarch, pc, xpsr);
+      return frame_unwind_got_constant (this_frame, ARM_PS_REGNUM, xpsr);
+    }
 
   return trad_frame_get_prev_register (this_frame, cache->saved_regs,
 				       prev_regnum);
@@ -3000,32 +3936,35 @@ arm_m_exception_prev_register (struct fr
 
 static int
 arm_m_exception_unwind_sniffer (const struct frame_unwind *self,
-				struct frame_info *this_frame,
+				const frame_info_ptr &this_frame,
 				void **this_prologue_cache)
 {
+  struct gdbarch *gdbarch = get_frame_arch (this_frame);
   CORE_ADDR this_pc = get_frame_pc (this_frame);
 
   /* No need to check is_m; this sniffer is only registered for
      M-profile architectures.  */
 
   /* Check if exception frame returns to a magic PC value.  */
-  return arm_m_addr_is_magic (this_pc);
+  return arm_m_addr_is_magic (gdbarch, this_pc);
 }
 
-/* Frame unwinder for M-profile exceptions.  */
+/* Frame unwinder for M-profile exceptions (EXC_RETURN on stack),
+   lockup and secure/nonsecure interstate function calls (FNC_RETURN).  */
 
-struct frame_unwind arm_m_exception_unwind =
-{
+struct frame_unwind_legacy arm_m_exception_unwind (
+  "arm m exception lockup sec_fnc",
   SIGTRAMP_FRAME,
-  default_frame_unwind_stop_reason,
+  FRAME_UNWIND_ARCH,
+  arm_m_exception_frame_unwind_stop_reason,
   arm_m_exception_this_id,
   arm_m_exception_prev_register,
   NULL,
   arm_m_exception_unwind_sniffer
-};
+);
 
 static CORE_ADDR
-arm_normal_frame_base (struct frame_info *this_frame, void **this_cache)
+arm_normal_frame_base (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct arm_prologue_cache *cache;
 
@@ -3033,7 +3972,9 @@ arm_normal_frame_base (struct frame_info
     *this_cache = arm_make_prologue_cache (this_frame);
   cache = (struct arm_prologue_cache *) *this_cache;
 
-  return cache->prev_sp - cache->framesize;
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (get_frame_arch (this_frame));
+  return arm_cache_get_prev_sp_value (cache, tdep) - cache->framesize;
 }
 
 struct frame_base arm_normal_base = {
@@ -3043,57 +3984,152 @@ struct frame_base arm_normal_base = {
   arm_normal_frame_base
 };
 
+struct arm_dwarf2_prev_register_cache
+{
+  /* Cached value of the corresponding stack pointer for the inner frame.  */
+  CORE_ADDR sp;
+  CORE_ADDR msp;
+  CORE_ADDR msp_s;
+  CORE_ADDR msp_ns;
+  CORE_ADDR psp;
+  CORE_ADDR psp_s;
+  CORE_ADDR psp_ns;
+};
+
 static struct value *
-arm_dwarf2_prev_register (struct frame_info *this_frame, void **this_cache,
+arm_dwarf2_prev_register (const frame_info_ptr &this_frame, void **this_cache,
 			  int regnum)
 {
   struct gdbarch * gdbarch = get_frame_arch (this_frame);
-  CORE_ADDR lr, cpsr;
-  ULONGEST t_bit = arm_psr_thumb_bit (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+  CORE_ADDR lr;
+  ULONGEST cpsr;
+  arm_dwarf2_prev_register_cache *cache
+    = ((arm_dwarf2_prev_register_cache *)
+       dwarf2_frame_get_fn_data (this_frame, this_cache,
+				 arm_dwarf2_prev_register));
 
-  switch (regnum)
+  if (!cache)
+    {
+      const unsigned int size = sizeof (struct arm_dwarf2_prev_register_cache);
+      cache = ((arm_dwarf2_prev_register_cache *)
+	       dwarf2_frame_allocate_fn_data (this_frame, this_cache,
+					      arm_dwarf2_prev_register, size));
+
+      if (tdep->have_sec_ext)
+	{
+	  cache->sp
+	    = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM);
+
+	  cache->msp_s
+	    = get_frame_register_unsigned (this_frame,
+					   tdep->m_profile_msp_s_regnum);
+	  cache->msp_ns
+	    = get_frame_register_unsigned (this_frame,
+					   tdep->m_profile_msp_ns_regnum);
+	  cache->psp_s
+	    = get_frame_register_unsigned (this_frame,
+					   tdep->m_profile_psp_s_regnum);
+	  cache->psp_ns
+	    = get_frame_register_unsigned (this_frame,
+					   tdep->m_profile_psp_ns_regnum);
+	}
+      else if (tdep->is_m)
+	{
+	  cache->sp
+	    = get_frame_register_unsigned (this_frame, ARM_SP_REGNUM);
+
+	  cache->msp
+	    = get_frame_register_unsigned (this_frame,
+					   tdep->m_profile_msp_regnum);
+	  cache->psp
+	    = get_frame_register_unsigned (this_frame,
+					   tdep->m_profile_psp_regnum);
+	}
+    }
+
+  if (regnum == ARM_PC_REGNUM)
     {
-    case ARM_PC_REGNUM:
       /* The PC is normally copied from the return column, which
 	 describes saves of LR.  However, that version may have an
 	 extra bit set to indicate Thumb state.  The bit is not
 	 part of the PC.  */
+
+      /* Record in the frame whether the return address was signed.  */
+      if (tdep->have_pacbti)
+	{
+	  CORE_ADDR ra_auth_code
+	    = frame_unwind_register_unsigned (this_frame,
+					      tdep->pacbti_pseudo_base);
+
+	  if (ra_auth_code != 0)
+	    set_frame_previous_pc_masked (this_frame);
+	}
+
       lr = frame_unwind_register_unsigned (this_frame, ARM_LR_REGNUM);
       return frame_unwind_got_constant (this_frame, regnum,
 					arm_addr_bits_remove (gdbarch, lr));
-
-    case ARM_PS_REGNUM:
+    }
+  else if (regnum == ARM_PS_REGNUM)
+    {
       /* Reconstruct the T bit; see arm_prologue_prev_register for details.  */
       cpsr = get_frame_register_unsigned (this_frame, regnum);
       lr = frame_unwind_register_unsigned (this_frame, ARM_LR_REGNUM);
-      if (IS_THUMB_ADDR (lr))
-	cpsr |= t_bit;
-      else
-	cpsr &= ~t_bit;
+      cpsr = reconstruct_t_bit (gdbarch, lr, cpsr);
       return frame_unwind_got_constant (this_frame, regnum, cpsr);
-
-    default:
-      internal_error (__FILE__, __LINE__,
-		      _("Unexpected register %d"), regnum);
     }
-}
-
-static void
-arm_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
-			   struct dwarf2_frame_state_reg *reg,
-			   struct frame_info *this_frame)
-{
-  switch (regnum)
+  else if (arm_is_alternative_sp_register (tdep, regnum))
     {
-    case ARM_PC_REGNUM:
-    case ARM_PS_REGNUM:
-      reg->how = DWARF2_FRAME_REG_FN;
-      reg->loc.fn = arm_dwarf2_prev_register;
-      break;
-    case ARM_SP_REGNUM:
-      reg->how = DWARF2_FRAME_REG_CFA;
-      break;
+      /* Handle the alternative SP registers on Cortex-M.  */
+      bool override_with_sp_value = false;
+      CORE_ADDR val;
+
+      if (tdep->have_sec_ext)
+	{
+	  bool is_msp = (regnum == tdep->m_profile_msp_regnum)
+	    && (cache->msp_s == cache->sp || cache->msp_ns == cache->sp);
+	  bool is_msp_s = (regnum == tdep->m_profile_msp_s_regnum)
+	    && (cache->msp_s == cache->sp);
+	  bool is_msp_ns = (regnum == tdep->m_profile_msp_ns_regnum)
+	    && (cache->msp_ns == cache->sp);
+	  bool is_psp = (regnum == tdep->m_profile_psp_regnum)
+	    && (cache->psp_s == cache->sp || cache->psp_ns == cache->sp);
+	  bool is_psp_s = (regnum == tdep->m_profile_psp_s_regnum)
+	    && (cache->psp_s == cache->sp);
+	  bool is_psp_ns = (regnum == tdep->m_profile_psp_ns_regnum)
+	    && (cache->psp_ns == cache->sp);
+
+	  override_with_sp_value = is_msp || is_msp_s || is_msp_ns
+	    || is_psp || is_psp_s || is_psp_ns;
+
+	}
+      else if (tdep->is_m)
+	{
+	  bool is_msp = (regnum == tdep->m_profile_msp_regnum)
+	    && (cache->sp == cache->msp);
+	  bool is_psp = (regnum == tdep->m_profile_psp_regnum)
+	    && (cache->sp == cache->psp);
+
+	  override_with_sp_value = is_msp || is_psp;
+	}
+
+      if (override_with_sp_value)
+	{
+	  /* Use value of SP from previous frame.  */
+	  frame_info_ptr prev_frame = get_prev_frame (this_frame);
+	  if (prev_frame)
+	    val = get_frame_register_unsigned (prev_frame, ARM_SP_REGNUM);
+	  else
+	    val = get_frame_base (this_frame);
+	}
+      else
+	/* Use value for the register from previous frame.  */
+	val = get_frame_register_unsigned (this_frame, regnum);
+
+      return frame_unwind_got_constant (this_frame, regnum, val);
     }
+
+  internal_error (_("Unexpected register %d"), regnum);
 }
 
 /* Implement the stack_frame_destroyed_p gdbarch method.  */
@@ -3269,18 +4305,19 @@ arm_stack_frame_destroyed_p (struct gdba
 /* When arguments must be pushed onto the stack, they go on in reverse
    order.  The code below implements a FILO (stack) to do this.  */
 
-struct stack_item
+struct arm_stack_item
 {
   int len;
-  struct stack_item *prev;
+  struct arm_stack_item *prev;
   gdb_byte *data;
 };
 
-static struct stack_item *
-push_stack_item (struct stack_item *prev, const gdb_byte *contents, int len)
+static struct arm_stack_item *
+push_stack_item (struct arm_stack_item *prev, const gdb_byte *contents,
+		 int len)
 {
-  struct stack_item *si;
-  si = XNEW (struct stack_item);
+  struct arm_stack_item *si;
+  si = XNEW (struct arm_stack_item);
   si->data = (gdb_byte *) xmalloc (len);
   si->len = len;
   si->prev = prev;
@@ -3288,10 +4325,10 @@ push_stack_item (struct stack_item *prev
   return si;
 }
 
-static struct stack_item *
-pop_stack_item (struct stack_item *si)
+static struct arm_stack_item *
+pop_stack_item (struct arm_stack_item *si)
 {
-  struct stack_item *dead = si;
+  struct arm_stack_item *dead = si;
   si = si->prev;
   xfree (dead->data);
   xfree (dead);
@@ -3305,14 +4342,14 @@ 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 && t->is_vector ())
     {
       /* Use the natural alignment for vector types (the same for
 	 scalar type), but the maximum alignment is 64-bit.  */
-      if (TYPE_LENGTH (t) > 8)
+      if (t->length () > 8)
 	return 8;
       else
-	return TYPE_LENGTH (t);
+	return t->length ();
     }
 
   /* Allow the common code to calculate the alignment.  */
@@ -3347,7 +4384,7 @@ arm_vfp_cprc_unit_length (enum arm_vfp_c
     case VFP_CPRC_VEC128:
       return 16;
     default:
-      internal_error (__FILE__, __LINE__, _("Invalid VFP CPRC type: %d."),
+      internal_error (_("Invalid VFP CPRC type: %d."),
 		      (int) b);
     }
 }
@@ -3369,7 +4406,7 @@ arm_vfp_cprc_reg_char (enum arm_vfp_cprc
     case VFP_CPRC_VEC128:
       return 'q';
     default:
-      internal_error (__FILE__, __LINE__, _("Invalid VFP CPRC type: %d."),
+      internal_error (_("Invalid VFP CPRC type: %d."),
 		      (int) b);
     }
 }
@@ -3392,10 +4429,10 @@ 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))
+      switch (t->length ())
 	{
 	case 4:
 	  if (*base_type == VFP_CPRC_UNKNOWN)
@@ -3427,7 +4464,7 @@ arm_vfp_cprc_sub_candidate (struct type
 	 };
 
       */
-      switch (TYPE_LENGTH (t))
+      switch (t->length ())
 	{
 	case 8:
 	  if (*base_type == VFP_CPRC_UNKNOWN)
@@ -3450,11 +4487,11 @@ arm_vfp_cprc_sub_candidate (struct type
 
     case TYPE_CODE_ARRAY:
       {
-	if (TYPE_VECTOR (t))
+	if (t->is_vector ())
 	  {
 	    /* A 64-bit or 128-bit containerized vector type are VFP
 	       CPRCs.  */
-	    switch (TYPE_LENGTH (t))
+	    switch (t->length ())
 	      {
 	      case 8:
 		if (*base_type == VFP_CPRC_UNKNOWN)
@@ -3473,11 +4510,11 @@ arm_vfp_cprc_sub_candidate (struct type
 	    int count;
 	    unsigned unitlen;
 
-	    count = arm_vfp_cprc_sub_candidate (TYPE_TARGET_TYPE (t),
+	    count = arm_vfp_cprc_sub_candidate (t->target_type (),
 						base_type);
 	    if (count == -1)
 	      return -1;
-	    if (TYPE_LENGTH (t) == 0)
+	    if (t->length () == 0)
 	      {
 		gdb_assert (count == 0);
 		return 0;
@@ -3485,8 +4522,8 @@ arm_vfp_cprc_sub_candidate (struct type
 	    else if (count == 0)
 	      return -1;
 	    unitlen = arm_vfp_cprc_unit_length (*base_type);
-	    gdb_assert ((TYPE_LENGTH (t) % unitlen) == 0);
-	    return TYPE_LENGTH (t) / unitlen;
+	    gdb_assert ((t->length () % unitlen) == 0);
+	    return t->length () / unitlen;
 	  }
       }
       break;
@@ -3496,18 +4533,18 @@ 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 (!t->field (i).is_static ())
+	      sub_count = arm_vfp_cprc_sub_candidate (t->field (i).type (),
 						      base_type);
 	    if (sub_count == -1)
 	      return -1;
 	    count += sub_count;
 	  }
-	if (TYPE_LENGTH (t) == 0)
+	if (t->length () == 0)
 	  {
 	    gdb_assert (count == 0);
 	    return 0;
@@ -3515,7 +4552,7 @@ arm_vfp_cprc_sub_candidate (struct type
 	else if (count == 0)
 	  return -1;
 	unitlen = arm_vfp_cprc_unit_length (*base_type);
-	if (TYPE_LENGTH (t) != unitlen * count)
+	if (t->length () != unitlen * count)
 	  return -1;
 	return count;
       }
@@ -3525,15 +4562,15 @@ 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;
 	    count = (count > sub_count ? count : sub_count);
 	  }
-	if (TYPE_LENGTH (t) == 0)
+	if (t->length () == 0)
 	  {
 	    gdb_assert (count == 0);
 	    return 0;
@@ -3541,7 +4578,7 @@ arm_vfp_cprc_sub_candidate (struct type
 	else if (count == 0)
 	  return -1;
 	unitlen = arm_vfp_cprc_unit_length (*base_type);
-	if (TYPE_LENGTH (t) != unitlen * count)
+	if (t->length () != unitlen * count)
 	  return -1;
 	return count;
       }
@@ -3579,15 +4616,18 @@ arm_vfp_call_candidate (struct type *t,
 static int
 arm_vfp_abi_for_function (struct gdbarch *gdbarch, struct type *func_type)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
   /* Variadic functions always use the base ABI.  Assume that functions
      without debug info are not variadic.  */
-  if (func_type && TYPE_VARARGS (check_typedef (func_type)))
+  if (func_type && check_typedef (func_type)->has_varargs ())
     return 0;
+
   /* The VFP ABI is only supported as a variant of AAPCS.  */
   if (tdep->arm_abi != ARM_ABI_AAPCS)
     return 0;
-  return gdbarch_tdep (gdbarch)->fp_model == ARM_FLOAT_VFP;
+
+  return tdep->fp_model == ARM_FLOAT_VFP;
 }
 
 /* We currently only support passing parameters in integer registers, which
@@ -3606,16 +4646,17 @@ arm_push_dummy_call (struct gdbarch *gdb
   int argnum;
   int argreg;
   int nstack;
-  struct stack_item *si = NULL;
+  struct arm_stack_item *si = NULL;
   int use_vfp_abi;
   struct type *ftype;
   unsigned vfp_regs_free = (1 << 16) - 1;
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   /* 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)
-    ftype = check_typedef (TYPE_TARGET_TYPE (ftype));
+  ftype = check_typedef (function->type ());
+  if (ftype->code () == TYPE_CODE_PTR)
+    ftype = check_typedef (ftype->target_type ());
   use_vfp_abi = arm_vfp_abi_for_function (gdbarch, ftype);
 
   /* Set the return address.  For the ARM, the return breakpoint is
@@ -3636,10 +4677,10 @@ arm_push_dummy_call (struct gdbarch *gdb
      passing register.  */
   if (return_method == return_method_struct)
     {
-      if (arm_debug)
-	fprintf_unfiltered (gdb_stdlog, "struct return in %s = %s\n",
-			    gdbarch_register_name (gdbarch, argreg),
-			    paddress (gdbarch, struct_addr));
+      arm_debug_printf ("struct return in %s = %s",
+			gdbarch_register_name (gdbarch, argreg),
+			paddress (gdbarch, struct_addr));
+
       regcache_cooked_write_unsigned (regcache, argreg, struct_addr);
       argreg++;
     }
@@ -3656,18 +4697,18 @@ arm_push_dummy_call (struct gdbarch *gdb
       int vfp_base_count;
       int may_use_core_reg = 1;
 
-      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);
-      val = value_contents (args[argnum]);
+      arg_type = check_typedef (args[argnum]->type ());
+      len = arg_type->length ();
+      target_type = arg_type->target_type ();
+      typecode = arg_type->code ();
+      val = args[argnum]->contents ().data ();
 
       align = type_align (arg_type);
       /* Round alignment up to a whole number of words.  */
       align = (align + ARM_INT_REGISTER_SIZE - 1)
 		& ~(ARM_INT_REGISTER_SIZE - 1);
       /* Different ABIs have different maximum alignments.  */
-      if (gdbarch_tdep (gdbarch)->arm_abi == ARM_ABI_APCS)
+      if (tdep->arm_abi == ARM_ABI_APCS)
 	{
 	  /* The APCS ABI only requires word alignment.  */
 	  align = ARM_INT_REGISTER_SIZE;
@@ -3757,7 +4798,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))
@@ -3783,14 +4824,10 @@ arm_push_dummy_call (struct gdbarch *gdb
 	    {
 	      /* The argument is being passed in a general purpose
 		 register.  */
-	      if (byte_order == BFD_ENDIAN_BIG)
-		regval <<= (ARM_INT_REGISTER_SIZE - partial_len) * 8;
-	      if (arm_debug)
-		fprintf_unfiltered (gdb_stdlog, "arg %d in %s = 0x%s\n",
-				    argnum,
-				    gdbarch_register_name
-				      (gdbarch, argreg),
-				    phex (regval, ARM_INT_REGISTER_SIZE));
+	      arm_debug_printf ("arg %d in %s = 0x%s", argnum,
+				gdbarch_register_name (gdbarch, argreg),
+				phex (regval, ARM_INT_REGISTER_SIZE));
+
 	      regcache_cooked_write_unsigned (regcache, argreg, regval);
 	      argreg++;
 	    }
@@ -3802,9 +4839,7 @@ arm_push_dummy_call (struct gdbarch *gdb
 	      store_unsigned_integer (buf, partial_len, byte_order, regval);
 
 	      /* Push the arguments onto the stack.  */
-	      if (arm_debug)
-		fprintf_unfiltered (gdb_stdlog, "arg %d @ sp + %d\n",
-				    argnum, nstack);
+	      arm_debug_printf ("arg %d @ sp + %d", argnum, nstack);
 	      si = push_stack_item (si, buf, ARM_INT_REGISTER_SIZE);
 	      nstack += ARM_INT_REGISTER_SIZE;
 	    }
@@ -3825,7 +4860,7 @@ arm_push_dummy_call (struct gdbarch *gdb
       si = pop_stack_item (si);
     }
 
-  /* Finally, update teh SP register.  */
+  /* Finally, update the SP register.  */
   regcache_cooked_write_unsigned (regcache, ARM_SP_REGNUM, sp);
 
   return sp;
@@ -3846,37 +4881,37 @@ static void
 print_fpu_flags (struct ui_file *file, int flags)
 {
   if (flags & (1 << 0))
-    fputs_filtered ("IVO ", file);
+    gdb_puts ("IVO ", file);
   if (flags & (1 << 1))
-    fputs_filtered ("DVZ ", file);
+    gdb_puts ("DVZ ", file);
   if (flags & (1 << 2))
-    fputs_filtered ("OFL ", file);
+    gdb_puts ("OFL ", file);
   if (flags & (1 << 3))
-    fputs_filtered ("UFL ", file);
+    gdb_puts ("UFL ", file);
   if (flags & (1 << 4))
-    fputs_filtered ("INX ", file);
-  fputc_filtered ('\n', file);
+    gdb_puts ("INX ", file);
+  gdb_putc ('\n', file);
 }
 
 /* Print interesting information about the floating point processor
    (if present) or emulator.  */
 static void
 arm_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
-		      struct frame_info *frame, const char *args)
+		      const frame_info_ptr &frame, const char *args)
 {
   unsigned long status = get_frame_register_unsigned (frame, ARM_FPS_REGNUM);
   int type;
 
   type = (status >> 24) & 127;
   if (status & (1 << 31))
-    fprintf_filtered (file, _("Hardware FPU type %d\n"), type);
+    gdb_printf (file, _("Hardware FPU type %d\n"), type);
   else
-    fprintf_filtered (file, _("Software FPU type %d\n"), type);
+    gdb_printf (file, _("Software FPU type %d\n"), type);
   /* i18n: [floating point unit] mask */
-  fputs_filtered (_("mask: "), file);
+  gdb_puts (_("mask: "), file);
   print_fpu_flags (file, status >> 16);
   /* i18n: [floating point unit] flags */
-  fputs_filtered (_("flags: "), file);
+  gdb_puts (_("flags: "), file);
   print_fpu_flags (file, status);
 }
 
@@ -3884,12 +4919,15 @@ arm_print_float_info (struct gdbarch *gd
 static struct type *
 arm_ext_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   if (!tdep->arm_ext_type)
-    tdep->arm_ext_type
-      = arch_float_type (gdbarch, -1, "builtin_type_arm_ext",
-			 floatformats_arm_ext);
+    {
+      type_allocator alloc (gdbarch);
+      tdep->arm_ext_type
+	= init_float_type (alloc, -1, "builtin_type_arm_ext",
+			   floatformats_arm_ext);
+    }
 
   return tdep->arm_ext_type;
 }
@@ -3897,7 +4935,7 @@ arm_ext_type (struct gdbarch *gdbarch)
 static struct type *
 arm_neon_double_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   if (tdep->neon_double_type == NULL)
     {
@@ -3918,8 +4956,8 @@ arm_neon_double_type (struct gdbarch *gd
       elem = builtin_type (gdbarch)->builtin_double;
       append_composite_type_field (t, "f64", elem);
 
-      TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "neon_d";
+      t->set_is_vector (true);
+      t->set_name ("neon_d");
       tdep->neon_double_type = t;
     }
 
@@ -3936,7 +4974,7 @@ arm_neon_double_type (struct gdbarch *gd
 static struct type *
 arm_neon_quad_type (struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   if (tdep->neon_quad_type == NULL)
     {
@@ -3957,30 +4995,112 @@ arm_neon_quad_type (struct gdbarch *gdba
       elem = builtin_type (gdbarch)->builtin_double;
       append_composite_type_field (t, "f64", init_vector_type (elem, 2));
 
-      TYPE_VECTOR (t) = 1;
-      TYPE_NAME (t) = "neon_q";
+      t->set_is_vector (true);
+      t->set_name ("neon_q");
       tdep->neon_quad_type = t;
     }
 
   return tdep->neon_quad_type;
 }
 
+/* Return true if REGNUM is a Q pseudo register.  Return false
+   otherwise.
+
+   REGNUM is the raw register number and not a pseudo-relative register
+   number.  */
+
+static bool
+is_q_pseudo (struct gdbarch *gdbarch, int regnum)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  /* Q pseudo registers are available for both NEON (Q0~Q15) and
+     MVE (Q0~Q7) features.  */
+  if (tdep->have_q_pseudos
+      && regnum >= tdep->q_pseudo_base
+      && regnum < (tdep->q_pseudo_base + tdep->q_pseudo_count))
+    return true;
+
+  return false;
+}
+
+/* Return true if REGNUM is a VFP S pseudo register.  Return false
+   otherwise.
+
+   REGNUM is the raw register number and not a pseudo-relative register
+   number.  */
+
+static bool
+is_s_pseudo (struct gdbarch *gdbarch, int regnum)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (tdep->have_s_pseudos
+      && regnum >= tdep->s_pseudo_base
+      && regnum < (tdep->s_pseudo_base + tdep->s_pseudo_count))
+    return true;
+
+  return false;
+}
+
+/* Return true if REGNUM is a MVE pseudo register (P0).  Return false
+   otherwise.
+
+   REGNUM is the raw register number and not a pseudo-relative register
+   number.  */
+
+static bool
+is_mve_pseudo (struct gdbarch *gdbarch, int regnum)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (tdep->have_mve
+      && regnum >= tdep->mve_pseudo_base
+      && regnum < tdep->mve_pseudo_base + tdep->mve_pseudo_count)
+    return true;
+
+  return false;
+}
+
+/* Return true if REGNUM is a PACBTI pseudo register (ra_auth_code).  Return
+   false otherwise.
+
+   REGNUM is the raw register number and not a pseudo-relative register
+   number.  */
+
+static bool
+is_pacbti_pseudo (struct gdbarch *gdbarch, int regnum)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (tdep->have_pacbti
+      && regnum >= tdep->pacbti_pseudo_base
+      && regnum < tdep->pacbti_pseudo_base + tdep->pacbti_pseudo_count)
+    return true;
+
+  return false;
+}
+
 /* Return the GDB type object for the "standard" data type of data in
    register N.  */
 
 static struct type *
 arm_register_type (struct gdbarch *gdbarch, int regnum)
 {
-  int num_regs = gdbarch_num_regs (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
-  if (gdbarch_tdep (gdbarch)->have_vfp_pseudos
-      && regnum >= num_regs && regnum < num_regs + 32)
+  if (is_s_pseudo (gdbarch, regnum))
     return builtin_type (gdbarch)->builtin_float;
 
-  if (gdbarch_tdep (gdbarch)->have_neon_pseudos
-      && regnum >= num_regs + 32 && regnum < num_regs + 32 + 16)
+  if (is_q_pseudo (gdbarch, regnum))
     return arm_neon_quad_type (gdbarch);
 
+  if (is_mve_pseudo (gdbarch, regnum))
+    return builtin_type (gdbarch)->builtin_int16;
+
+  if (is_pacbti_pseudo (gdbarch, regnum))
+    return builtin_type (gdbarch)->builtin_uint32;
+
   /* If the target description has register information, we are only
      in this function so that we can override the types of
      double-precision registers for NEON.  */
@@ -3989,8 +5109,8 @@ 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
-	  && gdbarch_tdep (gdbarch)->have_neon)
+	  && t->code () == TYPE_CODE_FLT
+	  && tdep->have_neon)
 	return arm_neon_double_type (gdbarch);
       else
 	return t;
@@ -3998,7 +5118,7 @@ arm_register_type (struct gdbarch *gdbar
 
   if (regnum >= ARM_F0_REGNUM && regnum < ARM_F0_REGNUM + NUM_FREGS)
     {
-      if (!gdbarch_tdep (gdbarch)->have_fpa_registers)
+      if (!tdep->have_fpa_registers)
 	return builtin_type (gdbarch)->builtin_void;
 
       return arm_ext_type (gdbarch);
@@ -4043,6 +5163,17 @@ arm_dwarf_reg_to_regnum (struct gdbarch
   if (reg >= 112 && reg <= 127)
     return ARM_WR0_REGNUM + reg - 112;
 
+  /* PACBTI register containing the Pointer Authentication Code.  */
+  if (reg == ARM_DWARF_RA_AUTH_CODE)
+    {
+      arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+      if (tdep->have_pacbti)
+	return tdep->pacbti_pseudo_base;
+
+      return -1;
+    }
+
   if (reg >= 192 && reg <= 199)
     return ARM_WC0_REGNUM + reg - 192;
 
@@ -4105,7 +5236,40 @@ arm_register_sim_regno (struct gdbarch *
     return SIM_ARM_FPS_REGNUM + reg;
   reg -= NUM_SREGS;
 
-  internal_error (__FILE__, __LINE__, _("Bad REGNUM %d"), regnum);
+  internal_error (_("Bad REGNUM %d"), regnum);
+}
+
+static const unsigned char op_lit0 = DW_OP_lit0;
+
+static void
+arm_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
+			   struct dwarf2_frame_state_reg *reg,
+			   const frame_info_ptr &this_frame)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (is_pacbti_pseudo (gdbarch, regnum))
+    {
+      /* Initialize RA_AUTH_CODE to zero.  */
+      reg->how = DWARF2_FRAME_REG_SAVED_VAL_EXP;
+      reg->loc.exp.start = &op_lit0;
+      reg->loc.exp.len = 1;
+      return;
+    }
+
+  if (regnum == ARM_PC_REGNUM || regnum == ARM_PS_REGNUM)
+    {
+      reg->how = DWARF2_FRAME_REG_FN;
+      reg->loc.fn = arm_dwarf2_prev_register;
+    }
+  else if (regnum == ARM_SP_REGNUM)
+    reg->how = DWARF2_FRAME_REG_CFA;
+  else if (arm_is_alternative_sp_register (tdep, regnum))
+    {
+      /* Handle the alternative SP registers on Cortex-M.  */
+      reg->how = DWARF2_FRAME_REG_FN;
+      reg->loc.fn = arm_dwarf2_prev_register;
+    }
 }
 
 /* Given BUF, which is OLD_LEN bytes ending at ENDADDR, expand
@@ -4152,9 +5316,10 @@ arm_adjust_breakpoint_address (struct gd
   int buf_len;
   enum bfd_endian order = gdbarch_byte_order_for_code (gdbarch);
   int i, any, last_it, last_it_count;
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   /* If we are using BKPT breakpoints, none of this is necessary.  */
-  if (gdbarch_tdep (gdbarch)->thumb2_breakpoint == NULL)
+  if (tdep->thumb2_breakpoint == NULL)
     return bpaddr;
 
   /* ARM mode does not have this problem.  */
@@ -4172,9 +5337,12 @@ arm_adjust_breakpoint_address (struct gd
 
   bpaddr = gdbarch_addr_bits_remove (gdbarch, bpaddr);
 
-  if (find_pc_partial_function (bpaddr, NULL, &func_start, NULL)
-      && func_start > boundary)
-    boundary = func_start;
+  if (find_pc_partial_function (bpaddr, NULL, &func_start, NULL))
+    {
+      func_start = gdbarch_addr_bits_remove (gdbarch, func_start);
+      if (func_start > boundary)
+	boundary = func_start;
+    }
 
   /* Search for a candidate IT instruction.  We have to do some fancy
      footwork to distinguish a real IT instruction from the second
@@ -4326,7 +5494,7 @@ arm_adjust_breakpoint_address (struct gd
    location.  */
 
 ULONGEST
-displaced_read_reg (struct regcache *regs, arm_displaced_step_closure *dsc,
+displaced_read_reg (regcache *regs, arm_displaced_step_copy_insn_closure *dsc,
 		    int regno)
 {
   ULONGEST ret;
@@ -4345,17 +5513,17 @@ displaced_read_reg (struct regcache *reg
       else
 	from += 4;
 
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog, "displaced: read pc value %.8lx\n",
-			    (unsigned long) from);
+      displaced_debug_printf ("read pc value %.8lx",
+			      (unsigned long) from);
       return (ULONGEST) from;
     }
   else
     {
       regcache_cooked_read_unsigned (regs, regno, &ret);
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog, "displaced: read r%d value %.8lx\n",
-			    regno, (unsigned long) ret);
+
+      displaced_debug_printf ("read r%d value %.8lx",
+			      regno, (unsigned long) ret);
+
       return ret;
     }
 }
@@ -4374,7 +5542,7 @@ displaced_in_arm_mode (struct regcache *
 /* Write to the PC as from a branch instruction.  */
 
 static void
-branch_write_pc (struct regcache *regs, arm_displaced_step_closure *dsc,
+branch_write_pc (regcache *regs, arm_displaced_step_copy_insn_closure *dsc,
 		 ULONGEST val)
 {
   if (!dsc->is_thumb)
@@ -4409,7 +5577,7 @@ bx_write_pc (struct regcache *regs, ULON
     }
   else
     {
-      /* Unpredictable behaviour.  Try to do something sensible (switch to ARM
+      /* Unpredictable behavior.  Try to do something sensible (switch to ARM
 	  mode, align dest to 4 bytes).  */
       warning (_("Single-stepping BX to non-word-aligned ARM instruction."));
       regcache_cooked_write_unsigned (regs, ARM_PS_REGNUM, ps & ~t_bit);
@@ -4420,7 +5588,7 @@ bx_write_pc (struct regcache *regs, ULON
 /* Write to the PC as if from a load instruction.  */
 
 static void
-load_write_pc (struct regcache *regs, arm_displaced_step_closure *dsc,
+load_write_pc (regcache *regs, arm_displaced_step_copy_insn_closure *dsc,
 	       ULONGEST val)
 {
   if (DISPLACED_STEPPING_ARCH_VERSION >= 5)
@@ -4432,7 +5600,7 @@ load_write_pc (struct regcache *regs, ar
 /* Write to the PC as if from an ALU instruction.  */
 
 static void
-alu_write_pc (struct regcache *regs, arm_displaced_step_closure *dsc,
+alu_write_pc (regcache *regs, arm_displaced_step_copy_insn_closure *dsc,
 	      ULONGEST val)
 {
   if (DISPLACED_STEPPING_ARCH_VERSION >= 7 && !dsc->is_thumb)
@@ -4446,14 +5614,13 @@ alu_write_pc (struct regcache *regs, arm
    this is controlled by the WRITE_PC argument.  */
 
 void
-displaced_write_reg (struct regcache *regs, arm_displaced_step_closure *dsc,
+displaced_write_reg (regcache *regs, arm_displaced_step_copy_insn_closure *dsc,
 		     int regno, ULONGEST val, enum pc_write_style write_pc)
 {
   if (regno == ARM_PC_REGNUM)
     {
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog, "displaced: writing pc %.8lx\n",
-			    (unsigned long) val);
+      displaced_debug_printf ("writing pc %.8lx", (unsigned long) val);
+
       switch (write_pc)
 	{
 	case BRANCH_WRITE_PC:
@@ -4462,15 +5629,15 @@ displaced_write_reg (struct regcache *re
 
 	case BX_WRITE_PC:
 	  bx_write_pc (regs, val);
-  	  break;
+	  break;
 
 	case LOAD_WRITE_PC:
 	  load_write_pc (regs, dsc, val);
-  	  break;
+	  break;
 
 	case ALU_WRITE_PC:
 	  alu_write_pc (regs, dsc, val);
-  	  break;
+	  break;
 
 	case CANNOT_WRITE_PC:
 	  warning (_("Instruction wrote to PC in an unexpected way when "
@@ -4478,17 +5645,15 @@ displaced_write_reg (struct regcache *re
 	  break;
 
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("Invalid argument to displaced_write_reg"));
+	  internal_error (_("Invalid argument to displaced_write_reg"));
 	}
 
       dsc->wrote_to_pc = 1;
     }
   else
     {
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog, "displaced: writing r%d value %.8lx\n",
-			    regno, (unsigned long) val);
+      displaced_debug_printf ("writing r%d value %.8lx",
+			      regno, (unsigned long) val);
       regcache_cooked_write_unsigned (regs, regno, val);
     }
 }
@@ -4529,13 +5694,11 @@ insn_references_pc (uint32_t insn, uint3
    matter what address they are executed at: in those cases, use this.  */
 
 static int
-arm_copy_unmodified (struct gdbarch *gdbarch, uint32_t insn,
-		     const char *iname, arm_displaced_step_closure *dsc)
+arm_copy_unmodified (struct gdbarch *gdbarch, uint32_t insn, const char *iname,
+		     arm_displaced_step_copy_insn_closure *dsc)
 {
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying insn %.8lx, "
-			"opcode/class '%s' unmodified\n", (unsigned long) insn,
-			iname);
+  displaced_debug_printf ("copying insn %.8lx, opcode/class '%s' unmodified",
+			  (unsigned long) insn, iname);
 
   dsc->modinsn[0] = insn;
 
@@ -4545,12 +5708,10 @@ arm_copy_unmodified (struct gdbarch *gdb
 static int
 thumb_copy_unmodified_32bit (struct gdbarch *gdbarch, uint16_t insn1,
 			     uint16_t insn2, const char *iname,
-			     arm_displaced_step_closure *dsc)
+			     arm_displaced_step_copy_insn_closure *dsc)
 {
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying insn %.4x %.4x, "
-			"opcode/class '%s' unmodified\n", insn1, insn2,
-			iname);
+  displaced_debug_printf ("copying insn %.4x %.4x, opcode/class '%s' "
+			  "unmodified", insn1, insn2, iname);
 
   dsc->modinsn[0] = insn1;
   dsc->modinsn[1] = insn2;
@@ -4564,12 +5725,10 @@ thumb_copy_unmodified_32bit (struct gdba
 static int
 thumb_copy_unmodified_16bit (struct gdbarch *gdbarch, uint16_t insn,
 			     const char *iname,
-			     arm_displaced_step_closure *dsc)
+			     arm_displaced_step_copy_insn_closure *dsc)
 {
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying insn %.4x, "
-			"opcode/class '%s' unmodified\n", insn,
-			iname);
+  displaced_debug_printf ("copying insn %.4x, opcode/class '%s' unmodified",
+			  insn, iname);
 
   dsc->modinsn[0] = insn;
 
@@ -4579,8 +5738,8 @@ thumb_copy_unmodified_16bit (struct gdba
 /* Preload instructions with immediate offset.  */
 
 static void
-cleanup_preload (struct gdbarch *gdbarch,
-		 struct regcache *regs, arm_displaced_step_closure *dsc)
+cleanup_preload (struct gdbarch *gdbarch, regcache *regs,
+		 arm_displaced_step_copy_insn_closure *dsc)
 {
   displaced_write_reg (regs, dsc, 0, dsc->tmp[0], CANNOT_WRITE_PC);
   if (!dsc->u.preload.immed)
@@ -4589,7 +5748,7 @@ cleanup_preload (struct gdbarch *gdbarch
 
 static void
 install_preload (struct gdbarch *gdbarch, struct regcache *regs,
-		 arm_displaced_step_closure *dsc, unsigned int rn)
+		 arm_displaced_step_copy_insn_closure *dsc, unsigned int rn)
 {
   ULONGEST rn_val;
   /* Preload instructions:
@@ -4608,16 +5767,14 @@ install_preload (struct gdbarch *gdbarch
 
 static int
 arm_copy_preload (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs,
-		  arm_displaced_step_closure *dsc)
+		  arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rn = bits (insn, 16, 19);
 
   if (!insn_references_pc (insn, 0x000f0000ul))
     return arm_copy_unmodified (gdbarch, insn, "preload", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying preload insn %.8lx\n",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying preload insn %.8lx", (unsigned long) insn);
 
   dsc->modinsn[0] = insn & 0xfff0ffff;
 
@@ -4628,7 +5785,7 @@ arm_copy_preload (struct gdbarch *gdbarc
 
 static int
 thumb2_copy_preload (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2,
-		     struct regcache *regs, arm_displaced_step_closure *dsc)
+		     regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rn = bits (insn1, 0, 3);
   unsigned int u_bit = bit (insn1, 7);
@@ -4640,11 +5797,9 @@ thumb2_copy_preload (struct gdbarch *gdb
 
   /* PC is only allowed to use in PLI (immediate,literal) Encoding T3, and
      PLD (literal) Encoding T1.  */
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying pld/pli pc (0x%x) %c imm12 %.4x\n",
-			(unsigned int) dsc->insn_addr, u_bit ? '+' : '-',
-			imm12);
+  displaced_debug_printf ("copying pld/pli pc (0x%x) %c imm12 %.4x",
+			  (unsigned int) dsc->insn_addr, u_bit ? '+' : '-',
+			  imm12);
 
   if (!u_bit)
     imm12 = -1 * imm12;
@@ -4678,7 +5833,7 @@ thumb2_copy_preload (struct gdbarch *gdb
 
 static void
 install_preload_reg(struct gdbarch *gdbarch, struct regcache *regs,
-		    arm_displaced_step_closure *dsc, unsigned int rn,
+		    arm_displaced_step_copy_insn_closure *dsc, unsigned int rn,
 		    unsigned int rm)
 {
   ULONGEST rn_val, rm_val;
@@ -4703,7 +5858,7 @@ install_preload_reg(struct gdbarch *gdba
 static int
 arm_copy_preload_reg (struct gdbarch *gdbarch, uint32_t insn,
 		      struct regcache *regs,
-		      arm_displaced_step_closure *dsc)
+		      arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rn = bits (insn, 16, 19);
   unsigned int rm = bits (insn, 0, 3);
@@ -4712,9 +5867,8 @@ arm_copy_preload_reg (struct gdbarch *gd
   if (!insn_references_pc (insn, 0x000f000ful))
     return arm_copy_unmodified (gdbarch, insn, "preload reg", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying preload insn %.8lx\n",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying preload insn %.8lx",
+			  (unsigned long) insn);
 
   dsc->modinsn[0] = (insn & 0xfff0fff0) | 0x1;
 
@@ -4727,7 +5881,7 @@ arm_copy_preload_reg (struct gdbarch *gd
 static void
 cleanup_copro_load_store (struct gdbarch *gdbarch,
 			  struct regcache *regs,
-			  arm_displaced_step_closure *dsc)
+			  arm_displaced_step_copy_insn_closure *dsc)
 {
   ULONGEST rn_val = displaced_read_reg (regs, dsc, 0);
 
@@ -4739,7 +5893,7 @@ cleanup_copro_load_store (struct gdbarch
 
 static void
 install_copro_load_store (struct gdbarch *gdbarch, struct regcache *regs,
-			  arm_displaced_step_closure *dsc,
+			  arm_displaced_step_copy_insn_closure *dsc,
 			  int writeback, unsigned int rn)
 {
   ULONGEST rn_val;
@@ -4767,16 +5921,15 @@ install_copro_load_store (struct gdbarch
 static int
 arm_copy_copro_load_store (struct gdbarch *gdbarch, uint32_t insn,
 			   struct regcache *regs,
-			   arm_displaced_step_closure *dsc)
+			   arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rn = bits (insn, 16, 19);
 
   if (!insn_references_pc (insn, 0x000f0000ul))
     return arm_copy_unmodified (gdbarch, insn, "copro load/store", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying coprocessor "
-			"load/store insn %.8lx\n", (unsigned long) insn);
+  displaced_debug_printf ("copying coprocessor load/store insn %.8lx",
+			  (unsigned long) insn);
 
   dsc->modinsn[0] = insn & 0xfff0ffff;
 
@@ -4788,7 +5941,7 @@ arm_copy_copro_load_store (struct gdbarc
 static int
 thumb2_copy_copro_load_store (struct gdbarch *gdbarch, uint16_t insn1,
 			      uint16_t insn2, struct regcache *regs,
-			      arm_displaced_step_closure *dsc)
+			      arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rn = bits (insn1, 0, 3);
 
@@ -4796,9 +5949,8 @@ thumb2_copy_copro_load_store (struct gdb
     return thumb_copy_unmodified_32bit (gdbarch, insn1, insn2,
 					"copro load/store", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying coprocessor "
-			"load/store insn %.4x%.4x\n", insn1, insn2);
+  displaced_debug_printf ("copying coprocessor load/store insn %.4x%.4x",
+			  insn1, insn2);
 
   dsc->modinsn[0] = insn1 & 0xfff0;
   dsc->modinsn[1] = insn2;
@@ -4816,7 +5968,7 @@ thumb2_copy_copro_load_store (struct gdb
 
 static void
 cleanup_branch (struct gdbarch *gdbarch, struct regcache *regs,
-		arm_displaced_step_closure *dsc)
+		arm_displaced_step_copy_insn_closure *dsc)
 {
   uint32_t status = displaced_read_reg (regs, dsc, ARM_PS_REGNUM);
   int branch_taken = condition_true (dsc->u.branch.cond, status);
@@ -4847,7 +5999,7 @@ cleanup_branch (struct gdbarch *gdbarch,
 
 static void
 install_b_bl_blx (struct gdbarch *gdbarch, struct regcache *regs,
-		  arm_displaced_step_closure *dsc,
+		  arm_displaced_step_copy_insn_closure *dsc,
 		  unsigned int cond, int exchange, int link, long offset)
 {
   /* Implement "BL<cond> <label>" as:
@@ -4876,17 +6028,16 @@ install_b_bl_blx (struct gdbarch *gdbarc
 }
 static int
 arm_copy_b_bl_blx (struct gdbarch *gdbarch, uint32_t insn,
-		   struct regcache *regs, arm_displaced_step_closure *dsc)
+		   regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int cond = bits (insn, 28, 31);
   int exchange = (cond == 0xf);
   int link = exchange || bit (insn, 24);
   long offset;
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying %s immediate insn "
-			"%.8lx\n", (exchange) ? "blx" : (link) ? "bl" : "b",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying %s immediate insn %.8lx",
+			  (exchange) ? "blx" : (link) ? "bl" : "b",
+			  (unsigned long) insn);
   if (exchange)
     /* For BLX, set bit 0 of the destination.  The cleanup_branch function will
        then arrange the switch into Thumb mode.  */
@@ -4906,7 +6057,7 @@ arm_copy_b_bl_blx (struct gdbarch *gdbar
 static int
 thumb2_copy_b_bl_blx (struct gdbarch *gdbarch, uint16_t insn1,
 		      uint16_t insn2, struct regcache *regs,
-		      arm_displaced_step_closure *dsc)
+		      arm_displaced_step_copy_insn_closure *dsc)
 {
   int link = bit (insn2, 14);
   int exchange = link && !bit (insn2, 12);
@@ -4946,11 +6097,9 @@ thumb2_copy_b_bl_blx (struct gdbarch *gd
 	(bits (insn2, 1, 10) << 2) : (bits (insn2, 0, 10) << 1);
     }
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying %s insn "
-			"%.4x %.4x with offset %.8lx\n",
-			link ? (exchange) ? "blx" : "bl" : "b",
-			insn1, insn2, offset);
+  displaced_debug_printf ("copying %s insn %.4x %.4x with offset %.8lx",
+			  link ? (exchange) ? "blx" : "bl" : "b",
+			  insn1, insn2, offset);
 
   dsc->modinsn[0] = THUMB_NOP;
 
@@ -4961,7 +6110,7 @@ thumb2_copy_b_bl_blx (struct gdbarch *gd
 /* Copy B Thumb instructions.  */
 static int
 thumb_copy_b (struct gdbarch *gdbarch, uint16_t insn,
-	      arm_displaced_step_closure *dsc)
+	      arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int cond = 0;
   int offset = 0;
@@ -4980,10 +6129,8 @@ thumb_copy_b (struct gdbarch *gdbarch, u
       cond = INST_AL;
     }
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying b immediate insn %.4x "
-			"with offset %d\n", insn, offset);
+  displaced_debug_printf ("copying b immediate insn %.4x with offset %d",
+			  insn, offset);
 
   dsc->u.branch.cond = cond;
   dsc->u.branch.link = 0;
@@ -5001,7 +6148,7 @@ thumb_copy_b (struct gdbarch *gdbarch, u
 
 static void
 install_bx_blx_reg (struct gdbarch *gdbarch, struct regcache *regs,
-		    arm_displaced_step_closure *dsc, int link,
+		    arm_displaced_step_copy_insn_closure *dsc, int link,
 		    unsigned int cond, unsigned int rm)
 {
   /* Implement {BX,BLX}<cond> <reg>" as:
@@ -5024,7 +6171,7 @@ install_bx_blx_reg (struct gdbarch *gdba
 
 static int
 arm_copy_bx_blx_reg (struct gdbarch *gdbarch, uint32_t insn,
-		     struct regcache *regs, arm_displaced_step_closure *dsc)
+		     regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int cond = bits (insn, 28, 31);
   /* BX:  x12xxx1x
@@ -5032,9 +6179,7 @@ arm_copy_bx_blx_reg (struct gdbarch *gdb
   int link = bit (insn, 5);
   unsigned int rm = bits (insn, 0, 3);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying insn %.8lx",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying insn %.8lx", (unsigned long) insn);
 
   dsc->modinsn[0] = ARM_NOP;
 
@@ -5045,14 +6190,12 @@ arm_copy_bx_blx_reg (struct gdbarch *gdb
 static int
 thumb_copy_bx_blx_reg (struct gdbarch *gdbarch, uint16_t insn,
 		       struct regcache *regs,
-		       arm_displaced_step_closure *dsc)
+		       arm_displaced_step_copy_insn_closure *dsc)
 {
   int link = bit (insn, 7);
   unsigned int rm = bits (insn, 3, 6);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying insn %.4x",
-			(unsigned short) insn);
+  displaced_debug_printf ("copying insn %.4x", (unsigned short) insn);
 
   dsc->modinsn[0] = THUMB_NOP;
 
@@ -5066,7 +6209,7 @@ thumb_copy_bx_blx_reg (struct gdbarch *g
 
 static void
 cleanup_alu_imm (struct gdbarch *gdbarch,
-		 struct regcache *regs, arm_displaced_step_closure *dsc)
+		 regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
   ULONGEST rd_val = displaced_read_reg (regs, dsc, 0);
   displaced_write_reg (regs, dsc, 0, dsc->tmp[0], CANNOT_WRITE_PC);
@@ -5076,7 +6219,7 @@ cleanup_alu_imm (struct gdbarch *gdbarch
 
 static int
 arm_copy_alu_imm (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs,
-		  arm_displaced_step_closure *dsc)
+		  arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rn = bits (insn, 16, 19);
   unsigned int rd = bits (insn, 12, 15);
@@ -5087,10 +6230,9 @@ arm_copy_alu_imm (struct gdbarch *gdbarc
   if (!insn_references_pc (insn, 0x000ff000ul))
     return arm_copy_unmodified (gdbarch, insn, "ALU immediate", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying immediate %s insn "
-			"%.8lx\n", is_mov ? "move" : "ALU",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying immediate %s insn %.8lx",
+			  is_mov ? "move" : "ALU",
+			  (unsigned long) insn);
 
   /* Instruction is of form:
 
@@ -5125,7 +6267,7 @@ arm_copy_alu_imm (struct gdbarch *gdbarc
 static int
 thumb2_copy_alu_imm (struct gdbarch *gdbarch, uint16_t insn1,
 		     uint16_t insn2, struct regcache *regs,
-		     arm_displaced_step_closure *dsc)
+		     arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int op = bits (insn1, 5, 8);
   unsigned int rn, rm, rd;
@@ -5141,9 +6283,7 @@ thumb2_copy_alu_imm (struct gdbarch *gdb
   if (rm != ARM_PC_REGNUM && rd != ARM_PC_REGNUM)
     return thumb_copy_unmodified_32bit (gdbarch, insn1, insn2, "ALU imm", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying reg %s insn %.4x%.4x\n",
-			"ALU", insn1, insn2);
+  displaced_debug_printf ("copying reg %s insn %.4x%.4x", "ALU", insn1, insn2);
 
   /* Instruction is of form:
 
@@ -5178,7 +6318,7 @@ thumb2_copy_alu_imm (struct gdbarch *gdb
 
 static void
 cleanup_alu_reg (struct gdbarch *gdbarch,
-		 struct regcache *regs, arm_displaced_step_closure *dsc)
+		 regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
   ULONGEST rd_val;
   int i;
@@ -5193,7 +6333,7 @@ cleanup_alu_reg (struct gdbarch *gdbarch
 
 static void
 install_alu_reg (struct gdbarch *gdbarch, struct regcache *regs,
-		 arm_displaced_step_closure *dsc,
+		 arm_displaced_step_copy_insn_closure *dsc,
 		 unsigned int rd, unsigned int rn, unsigned int rm)
 {
   ULONGEST rd_val, rn_val, rm_val;
@@ -5226,7 +6366,7 @@ install_alu_reg (struct gdbarch *gdbarch
 
 static int
 arm_copy_alu_reg (struct gdbarch *gdbarch, uint32_t insn, struct regcache *regs,
-		  arm_displaced_step_closure *dsc)
+		  arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int op = bits (insn, 21, 24);
   int is_mov = (op == 0xd);
@@ -5234,9 +6374,8 @@ arm_copy_alu_reg (struct gdbarch *gdbarc
   if (!insn_references_pc (insn, 0x000ff00ful))
     return arm_copy_unmodified (gdbarch, insn, "ALU reg", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying reg %s insn %.8lx\n",
-			is_mov ? "move" : "ALU", (unsigned long) insn);
+  displaced_debug_printf ("copying reg %s insn %.8lx",
+			  is_mov ? "move" : "ALU", (unsigned long) insn);
 
   if (is_mov)
     dsc->modinsn[0] = (insn & 0xfff00ff0) | 0x2;
@@ -5251,7 +6390,7 @@ arm_copy_alu_reg (struct gdbarch *gdbarc
 static int
 thumb_copy_alu_reg (struct gdbarch *gdbarch, uint16_t insn,
 		    struct regcache *regs,
-		    arm_displaced_step_closure *dsc)
+		    arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned rm, rd;
 
@@ -5261,9 +6400,7 @@ thumb_copy_alu_reg (struct gdbarch *gdba
   if (rd != ARM_PC_REGNUM && rm != ARM_PC_REGNUM)
     return thumb_copy_unmodified_16bit (gdbarch, insn, "ALU reg", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying ALU reg insn %.4x\n",
-			(unsigned short) insn);
+  displaced_debug_printf ("copying ALU reg insn %.4x", (unsigned short) insn);
 
   dsc->modinsn[0] = ((insn & 0xff00) | 0x10);
 
@@ -5277,7 +6414,7 @@ thumb_copy_alu_reg (struct gdbarch *gdba
 static void
 cleanup_alu_shifted_reg (struct gdbarch *gdbarch,
 			 struct regcache *regs,
-			 arm_displaced_step_closure *dsc)
+			 arm_displaced_step_copy_insn_closure *dsc)
 {
   ULONGEST rd_val = displaced_read_reg (regs, dsc, 0);
   int i;
@@ -5290,7 +6427,7 @@ cleanup_alu_shifted_reg (struct gdbarch
 
 static void
 install_alu_shifted_reg (struct gdbarch *gdbarch, struct regcache *regs,
-			 arm_displaced_step_closure *dsc,
+			 arm_displaced_step_copy_insn_closure *dsc,
 			 unsigned int rd, unsigned int rn, unsigned int rm,
 			 unsigned rs)
 {
@@ -5329,7 +6466,7 @@ install_alu_shifted_reg (struct gdbarch
 static int
 arm_copy_alu_shifted_reg (struct gdbarch *gdbarch, uint32_t insn,
 			  struct regcache *regs,
-			  arm_displaced_step_closure *dsc)
+			  arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int op = bits (insn, 21, 24);
   int is_mov = (op == 0xd);
@@ -5338,10 +6475,9 @@ arm_copy_alu_shifted_reg (struct gdbarch
   if (!insn_references_pc (insn, 0x000fff0ful))
     return arm_copy_unmodified (gdbarch, insn, "ALU shifted reg", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying shifted reg %s insn "
-			"%.8lx\n", is_mov ? "move" : "ALU",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying shifted reg %s insn %.8lx",
+			  is_mov ? "move" : "ALU",
+			  (unsigned long) insn);
 
   rn = bits (insn, 16, 19);
   rm = bits (insn, 0, 3);
@@ -5362,7 +6498,7 @@ arm_copy_alu_shifted_reg (struct gdbarch
 
 static void
 cleanup_load (struct gdbarch *gdbarch, struct regcache *regs,
-	      arm_displaced_step_closure *dsc)
+	      arm_displaced_step_copy_insn_closure *dsc)
 {
   ULONGEST rt_val, rt_val2 = 0, rn_val;
 
@@ -5391,7 +6527,7 @@ cleanup_load (struct gdbarch *gdbarch, s
 
 static void
 cleanup_store (struct gdbarch *gdbarch, struct regcache *regs,
-	       arm_displaced_step_closure *dsc)
+	       arm_displaced_step_copy_insn_closure *dsc)
 {
   ULONGEST rn_val = displaced_read_reg (regs, dsc, 2);
 
@@ -5414,7 +6550,7 @@ cleanup_store (struct gdbarch *gdbarch,
 
 static int
 arm_copy_extra_ld_st (struct gdbarch *gdbarch, uint32_t insn, int unprivileged,
-		      struct regcache *regs, arm_displaced_step_closure *dsc)
+		      regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int op1 = bits (insn, 20, 24);
   unsigned int op2 = bits (insn, 5, 6);
@@ -5430,16 +6566,14 @@ arm_copy_extra_ld_st (struct gdbarch *gd
   if (!insn_references_pc (insn, 0x000ff00ful))
     return arm_copy_unmodified (gdbarch, insn, "extra load/store", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying %sextra load/store "
-			"insn %.8lx\n", unprivileged ? "unprivileged " : "",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying %sextra load/store insn %.8lx",
+			  unprivileged ? "unprivileged " : "",
+			  (unsigned long) insn);
 
   opcode = ((op2 << 2) | (op1 & 0x1) | ((op1 & 0x4) >> 1)) - 4;
 
   if (opcode < 0)
-    internal_error (__FILE__, __LINE__,
-		    _("copy_extra_ld_st: instruction decode error"));
+    internal_error (_("copy_extra_ld_st: instruction decode error"));
 
   dsc->tmp[0] = displaced_read_reg (regs, dsc, 0);
   dsc->tmp[1] = displaced_read_reg (regs, dsc, 1);
@@ -5488,7 +6622,7 @@ arm_copy_extra_ld_st (struct gdbarch *gd
 
 static void
 install_load_store (struct gdbarch *gdbarch, struct regcache *regs,
-		    arm_displaced_step_closure *dsc, int load,
+		    arm_displaced_step_copy_insn_closure *dsc, int load,
 		    int immed, int writeback, int size, int usermode,
 		    int rt, int rm, int rn)
 {
@@ -5525,17 +6659,17 @@ install_load_store (struct gdbarch *gdba
      Insn1: push {pc} Write address of STR instruction + offset on stack
      Insn2: pop  {r4} Read it back from stack, r4 = addr(Insn1) + offset
      Insn3: sub r4, r4, pc   r4 = addr(Insn1) + offset - pc
-                                = addr(Insn1) + offset - addr(Insn3) - 8
-                                = offset - 16
+				= addr(Insn1) + offset - addr(Insn3) - 8
+				= offset - 16
      Insn4: add r4, r4, #8   r4 = offset - 8
      Insn5: add r0, r0, r4   r0 = from + 8 + offset - 8
-                                = from + offset
+				= from + offset
      Insn6: str r0, [r2, #imm] (or str r0, [r2, r3])
 
      Otherwise we don't know what value to write for PC, since the offset is
      architecture-dependent (sometimes PC+8, sometimes PC+12).  More details
      of this can be found in Section "Saving from r15" in
-     http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204g/Cihbjifh.html */
+     https://developer.arm.com/documentation/dui0204/g/ */
 
   dsc->cleanup = load ? &cleanup_load : &cleanup_store;
 }
@@ -5544,18 +6678,16 @@ install_load_store (struct gdbarch *gdba
 static int
 thumb2_copy_load_literal (struct gdbarch *gdbarch, uint16_t insn1,
 			  uint16_t insn2, struct regcache *regs,
-			  arm_displaced_step_closure *dsc, int size)
+			  arm_displaced_step_copy_insn_closure *dsc, int size)
 {
   unsigned int u_bit = bit (insn1, 7);
   unsigned int rt = bits (insn2, 12, 15);
   int imm12 = bits (insn2, 0, 11);
   ULONGEST pc_val;
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying ldr pc (0x%x) R%d %c imm12 %.4x\n",
-			(unsigned int) dsc->insn_addr, rt, u_bit ? '+' : '-',
-			imm12);
+  displaced_debug_printf ("copying ldr pc (0x%x) R%d %c imm12 %.4x",
+			  (unsigned int) dsc->insn_addr, rt, u_bit ? '+' : '-',
+			  imm12);
 
   if (!u_bit)
     imm12 = -1 * imm12;
@@ -5600,7 +6732,7 @@ thumb2_copy_load_literal (struct gdbarch
 static int
 thumb2_copy_load_reg_imm (struct gdbarch *gdbarch, uint16_t insn1,
 			  uint16_t insn2, struct regcache *regs,
-			  arm_displaced_step_closure *dsc,
+			  arm_displaced_step_copy_insn_closure *dsc,
 			  int writeback, int immed)
 {
   unsigned int rt = bits (insn2, 12, 15);
@@ -5613,10 +6745,8 @@ thumb2_copy_load_reg_imm (struct gdbarch
     return thumb_copy_unmodified_32bit (gdbarch, insn1, insn2, "load",
 					dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying ldr r%d [r%d] insn %.4x%.4x\n",
-			 rt, rn, insn1, insn2);
+  displaced_debug_printf ("copying ldr r%d [r%d] insn %.4x%.4x",
+			  rt, rn, insn1, insn2);
 
   install_load_store (gdbarch, regs, dsc, 1, immed, writeback, 4,
 		      0, rt, rm, rn);
@@ -5649,7 +6779,7 @@ thumb2_copy_load_reg_imm (struct gdbarch
 static int
 arm_copy_ldr_str_ldrb_strb (struct gdbarch *gdbarch, uint32_t insn,
 			    struct regcache *regs,
-			    arm_displaced_step_closure *dsc,
+			    arm_displaced_step_copy_insn_closure *dsc,
 			    int load, int size, int usermode)
 {
   int immed = !bit (insn, 25);
@@ -5661,13 +6791,12 @@ arm_copy_ldr_str_ldrb_strb (struct gdbar
   if (!insn_references_pc (insn, 0x000ff00ful))
     return arm_copy_unmodified (gdbarch, insn, "load/store", dsc);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying %s%s r%d [r%d] insn %.8lx\n",
-			load ? (size == 1 ? "ldrb" : "ldr")
-			     : (size == 1 ? "strb" : "str"), usermode ? "t" : "",
-			rt, rn,
-			(unsigned long) insn);
+  displaced_debug_printf ("copying %s%s r%d [r%d] insn %.8lx",
+			  load ? (size == 1 ? "ldrb" : "ldr")
+			       : (size == 1 ? "strb" : "str"),
+			  usermode ? "t" : "",
+			  rt, rn,
+			  (unsigned long) insn);
 
   install_load_store (gdbarch, regs, dsc, load, immed, writeback, size,
 		      usermode, rt, rm, rn);
@@ -5733,7 +6862,7 @@ arm_copy_ldr_str_ldrb_strb (struct gdbar
 
 static void
 cleanup_block_load_all (struct gdbarch *gdbarch, struct regcache *regs,
-			arm_displaced_step_closure *dsc)
+			arm_displaced_step_copy_insn_closure *dsc)
 {
   int inc = dsc->u.block.increment;
   int bump_before = dsc->u.block.before ? (inc ? 4 : -4) : 0;
@@ -5758,11 +6887,10 @@ cleanup_block_load_all (struct gdbarch *
   /* We don't handle any stores here for now.  */
   gdb_assert (dsc->u.block.load != 0);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: emulating block transfer: "
-			"%s %s %s\n", dsc->u.block.load ? "ldm" : "stm",
-			dsc->u.block.increment ? "inc" : "dec",
-			dsc->u.block.before ? "before" : "after");
+  displaced_debug_printf ("emulating block transfer: %s %s %s",
+			  dsc->u.block.load ? "ldm" : "stm",
+			  dsc->u.block.increment ? "inc" : "dec",
+			  dsc->u.block.before ? "before" : "after");
 
   while (regmask)
     {
@@ -5794,11 +6922,12 @@ cleanup_block_load_all (struct gdbarch *
 
 static void
 cleanup_block_store_pc (struct gdbarch *gdbarch, struct regcache *regs,
-			arm_displaced_step_closure *dsc)
+			arm_displaced_step_copy_insn_closure *dsc)
 {
   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;
@@ -5827,9 +6956,8 @@ cleanup_block_store_pc (struct gdbarch *
   stm_insn_addr = dsc->scratch_base;
   offset = pc_val - stm_insn_addr;
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: detected PC offset %.8lx for "
-			"STM instruction\n", offset);
+  displaced_debug_printf ("detected PC offset %.8lx for STM instruction",
+			  offset);
 
   /* Rewrite the stored PC to the proper value for the non-displaced original
      instruction.  */
@@ -5845,12 +6973,12 @@ cleanup_block_store_pc (struct gdbarch *
 static void
 cleanup_block_load_pc (struct gdbarch *gdbarch,
 		       struct regcache *regs,
-		       arm_displaced_step_closure *dsc)
+		       arm_displaced_step_copy_insn_closure *dsc)
 {
   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
@@ -5872,15 +7000,12 @@ cleanup_block_load_pc (struct gdbarch *g
 	    {
 	      ULONGEST rval = displaced_read_reg (regs, dsc, read_reg);
 	      displaced_write_reg (regs, dsc, write_reg, rval, LOAD_WRITE_PC);
-	      if (debug_displaced)
-		fprintf_unfiltered (gdb_stdlog, _("displaced: LDM: move "
-				    "loaded register r%d to r%d\n"), read_reg,
-				    write_reg);
-	    }
-	  else if (debug_displaced)
-	    fprintf_unfiltered (gdb_stdlog, _("displaced: LDM: register "
-				"r%d already in the right place\n"),
-				write_reg);
+	      displaced_debug_printf ("LDM: move loaded register r%d to r%d",
+				      read_reg, write_reg);
+	    }
+	  else
+	    displaced_debug_printf ("LDM: register r%d already in the right "
+				    "place", write_reg);
 
 	  clobbered &= ~(1 << write_reg);
 
@@ -5897,9 +7022,8 @@ cleanup_block_load_pc (struct gdbarch *g
 	{
 	  displaced_write_reg (regs, dsc, write_reg, dsc->tmp[write_reg],
 			       CANNOT_WRITE_PC);
-	  if (debug_displaced)
-	    fprintf_unfiltered (gdb_stdlog, _("displaced: LDM: restored "
-				"clobbered register r%d\n"), write_reg);
+	  displaced_debug_printf ("LDM: restored clobbered register r%d",
+				  write_reg);
 	  clobbered &= ~(1 << write_reg);
 	}
     }
@@ -5925,7 +7049,7 @@ cleanup_block_load_pc (struct gdbarch *g
 static int
 arm_copy_block_xfer (struct gdbarch *gdbarch, uint32_t insn,
 		     struct regcache *regs,
-		     arm_displaced_step_closure *dsc)
+		     arm_displaced_step_copy_insn_closure *dsc)
 {
   int load = bit (insn, 20);
   int user = bit (insn, 22);
@@ -5946,9 +7070,8 @@ arm_copy_block_xfer (struct gdbarch *gdb
       return arm_copy_unmodified (gdbarch, insn, "unpredictable ldm/stm", dsc);
     }
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying block transfer insn "
-			"%.8lx\n", (unsigned long) insn);
+  displaced_debug_printf ("copying block transfer insn %.8lx",
+			  (unsigned long) insn);
 
   dsc->u.block.xfer_addr = displaced_read_reg (regs, dsc, rn);
   dsc->u.block.rn = rn;
@@ -5982,7 +7105,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++)
@@ -6009,11 +7132,10 @@ arm_copy_block_xfer (struct gdbarch *gdb
 
 	  new_regmask = (1 << num_in_list) - 1;
 
-	  if (debug_displaced)
-	    fprintf_unfiltered (gdb_stdlog, _("displaced: LDM r%d%s, "
-				"{..., pc}: original reg list %.4x, modified "
-				"list %.4x\n"), rn, writeback ? "!" : "",
-				(int) insn & 0xffff, new_regmask);
+	  displaced_debug_printf ("LDM r%d%s, {..., pc}: original reg list "
+				  "%.4x, modified list %.4x",
+				  rn, writeback ? "!" : "",
+				  (int) insn & 0xffff, new_regmask);
 
 	  dsc->modinsn[0] = (insn & ~0xffff) | (new_regmask & 0xffff);
 
@@ -6039,7 +7161,7 @@ arm_copy_block_xfer (struct gdbarch *gdb
 static int
 thumb2_copy_block_xfer (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2,
 			struct regcache *regs,
-			arm_displaced_step_closure *dsc)
+			arm_displaced_step_copy_insn_closure *dsc)
 {
   int rn = bits (insn1, 0, 3);
   int load = bit (insn1, 4);
@@ -6058,9 +7180,8 @@ thumb2_copy_block_xfer (struct gdbarch *
 					  "unpredictable ldm/stm", dsc);
     }
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying block transfer insn "
-			"%.4x%.4x\n", insn1, insn2);
+  displaced_debug_printf ("copying block transfer insn %.4x%.4x",
+			  insn1, insn2);
 
   /* Clear bit 13, since it should be always zero.  */
   dsc->u.block.regmask = (insn2 & 0xdfff);
@@ -6084,7 +7205,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++)
@@ -6095,11 +7216,10 @@ thumb2_copy_block_xfer (struct gdbarch *
 
 	  new_regmask = (1 << num_in_list) - 1;
 
-	  if (debug_displaced)
-	    fprintf_unfiltered (gdb_stdlog, _("displaced: LDM r%d%s, "
-				"{..., pc}: original reg list %.4x, modified "
-				"list %.4x\n"), rn, writeback ? "!" : "",
-				(int) dsc->u.block.regmask, new_regmask);
+	  displaced_debug_printf ("LDM r%d%s, {..., pc}: original reg list "
+				  "%.4x, modified list %.4x",
+				  rn, writeback ? "!" : "",
+				  (int) dsc->u.block.regmask, new_regmask);
 
 	  dsc->modinsn[0] = insn1;
 	  dsc->modinsn[1] = (new_regmask & 0xffff);
@@ -6135,7 +7255,8 @@ CORE_ADDR
 arm_get_next_pcs_addr_bits_remove (struct arm_get_next_pcs *self,
 				   CORE_ADDR val)
 {
-  return gdbarch_addr_bits_remove (self->regcache->arch (), val);
+  return gdbarch_addr_bits_remove
+    (gdb::checked_static_cast<regcache *> (self->regcache)->arch (), val);
 }
 
 /* Wrapper over syscall_next_pc for use in get_next_pcs.  */
@@ -6151,7 +7272,7 @@ arm_get_next_pcs_syscall_next_pc (struct
 int
 arm_get_next_pcs_is_thumb (struct arm_get_next_pcs *self)
 {
-  return arm_is_thumb (self->regcache);
+  return arm_is_thumb (gdb::checked_static_cast<regcache *> (self->regcache));
 }
 
 /* single_step() is called just before we want to resume the inferior,
@@ -6185,13 +7306,12 @@ arm_software_single_step (struct regcach
 
 static void
 cleanup_svc (struct gdbarch *gdbarch, struct regcache *regs,
-	     arm_displaced_step_closure *dsc)
+	     arm_displaced_step_copy_insn_closure *dsc)
 {
   CORE_ADDR resume_addr = dsc->insn_addr + dsc->insn_size;
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: cleanup for svc, resume at "
-			"%.8lx\n", (unsigned long) resume_addr);
+  displaced_debug_printf ("cleanup for svc, resume at %.8lx",
+			  (unsigned long) resume_addr);
 
   displaced_write_reg (regs, dsc, ARM_PC_REGNUM, resume_addr, BRANCH_WRITE_PC);
 }
@@ -6201,7 +7321,7 @@ cleanup_svc (struct gdbarch *gdbarch, st
 
 static int
 install_svc (struct gdbarch *gdbarch, struct regcache *regs,
-	     arm_displaced_step_closure *dsc)
+	     arm_displaced_step_copy_insn_closure *dsc)
 {
   /* Preparation: none.
      Insn: unmodified svc.
@@ -6223,12 +7343,11 @@ install_svc (struct gdbarch *gdbarch, st
 
 static int
 arm_copy_svc (struct gdbarch *gdbarch, uint32_t insn,
-	      struct regcache *regs, arm_displaced_step_closure *dsc)
+	      regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying svc insn %.8lx\n",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying svc insn %.8lx",
+			  (unsigned long) insn);
 
   dsc->modinsn[0] = insn;
 
@@ -6237,12 +7356,10 @@ arm_copy_svc (struct gdbarch *gdbarch, u
 
 static int
 thumb_copy_svc (struct gdbarch *gdbarch, uint16_t insn,
-		struct regcache *regs, arm_displaced_step_closure *dsc)
+		regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying svc insn %.4x\n",
-			insn);
+  displaced_debug_printf ("copying svc insn %.4x", insn);
 
   dsc->modinsn[0] = insn;
 
@@ -6253,12 +7370,10 @@ thumb_copy_svc (struct gdbarch *gdbarch,
 
 static int
 arm_copy_undef (struct gdbarch *gdbarch, uint32_t insn,
-		arm_displaced_step_closure *dsc)
+		arm_displaced_step_copy_insn_closure *dsc)
 {
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying undefined insn %.8lx\n",
-			(unsigned long) insn);
+  displaced_debug_printf ("copying undefined insn %.8lx",
+			  (unsigned long) insn);
 
   dsc->modinsn[0] = insn;
 
@@ -6267,13 +7382,11 @@ arm_copy_undef (struct gdbarch *gdbarch,
 
 static int
 thumb_32bit_copy_undef (struct gdbarch *gdbarch, uint16_t insn1, uint16_t insn2,
-                       arm_displaced_step_closure *dsc)
+			arm_displaced_step_copy_insn_closure *dsc)
 {
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying undefined insn "
-                       "%.4x %.4x\n", (unsigned short) insn1,
-                       (unsigned short) insn2);
+  displaced_debug_printf ("copying undefined insn %.4x %.4x",
+			  (unsigned short) insn1, (unsigned short) insn2);
 
   dsc->modinsn[0] = insn1;
   dsc->modinsn[1] = insn2;
@@ -6286,11 +7399,10 @@ thumb_32bit_copy_undef (struct gdbarch *
 
 static int
 arm_copy_unpred (struct gdbarch *gdbarch, uint32_t insn,
-		 arm_displaced_step_closure *dsc)
+		 arm_displaced_step_copy_insn_closure *dsc)
 {
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying unpredictable insn "
-			"%.8lx\n", (unsigned long) insn);
+  displaced_debug_printf ("copying unpredictable insn %.8lx",
+			  (unsigned long) insn);
 
   dsc->modinsn[0] = insn;
 
@@ -6303,7 +7415,7 @@ arm_copy_unpred (struct gdbarch *gdbarch
 static int
 arm_decode_misc_memhint_neon (struct gdbarch *gdbarch, uint32_t insn,
 			      struct regcache *regs,
-			      arm_displaced_step_closure *dsc)
+			      arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int op1 = bits (insn, 20, 26), op2 = bits (insn, 4, 7);
   unsigned int rn = bits (insn, 16, 19);
@@ -6349,7 +7461,7 @@ arm_decode_misc_memhint_neon (struct gdb
       case 0x65:
 	return arm_copy_preload_reg (gdbarch, insn, regs, dsc);  /* pli reg.  */
       case 0x71: case 0x75:
-        /* pld/pldw reg.  */
+	/* pld/pldw reg.  */
 	return arm_copy_preload_reg (gdbarch, insn, regs, dsc);
       case 0x63: case 0x67: case 0x73: case 0x77:
 	return arm_copy_unpred (gdbarch, insn, dsc);
@@ -6363,7 +7475,7 @@ arm_decode_misc_memhint_neon (struct gdb
 static int
 arm_decode_unconditional (struct gdbarch *gdbarch, uint32_t insn,
 			  struct regcache *regs,
-			  arm_displaced_step_closure *dsc)
+			  arm_displaced_step_copy_insn_closure *dsc)
 {
   if (bit (insn, 27) == 0)
     return arm_decode_misc_memhint_neon (gdbarch, insn, regs, dsc);
@@ -6421,7 +7533,7 @@ arm_decode_unconditional (struct gdbarch
 
     case 0xb:
       if (bits (insn, 16, 19) == 0xf)
-        /* ldc/ldc2 lit.  */
+	/* ldc/ldc2 lit.  */
 	return arm_copy_copro_load_store (gdbarch, insn, regs, dsc);
       else
 	return arm_copy_undef (gdbarch, insn, dsc);
@@ -6448,7 +7560,7 @@ arm_decode_unconditional (struct gdbarch
 static int
 arm_decode_miscellaneous (struct gdbarch *gdbarch, uint32_t insn,
 			  struct regcache *regs,
-			  arm_displaced_step_closure *dsc)
+			  arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int op2 = bits (insn, 4, 6);
   unsigned int op = bits (insn, 21, 22);
@@ -6468,7 +7580,7 @@ arm_decode_miscellaneous (struct gdbarch
 
     case 0x2:
       if (op == 0x1)
-        /* Not really supported.  */
+	/* Not really supported.  */
 	return arm_copy_unmodified (gdbarch, insn, "bxj", dsc);
       else
 	return arm_copy_undef (gdbarch, insn, dsc);
@@ -6487,9 +7599,9 @@ arm_decode_miscellaneous (struct gdbarch
       if (op == 0x1)
 	return arm_copy_unmodified (gdbarch, insn, "bkpt", dsc);
       else if (op == 0x3)
-        /* Not really supported.  */
+	/* Not really supported.  */
 	return arm_copy_unmodified (gdbarch, insn, "smc", dsc);
-      /* Fall through.  */
+      [[fallthrough]];
 
     default:
       return arm_copy_undef (gdbarch, insn, dsc);
@@ -6499,7 +7611,7 @@ arm_decode_miscellaneous (struct gdbarch
 static int
 arm_decode_dp_misc (struct gdbarch *gdbarch, uint32_t insn,
 		    struct regcache *regs,
-		    arm_displaced_step_closure *dsc)
+		    arm_displaced_step_copy_insn_closure *dsc)
 {
   if (bit (insn, 25))
     switch (bits (insn, 20, 24))
@@ -6545,7 +7657,7 @@ arm_decode_dp_misc (struct gdbarch *gdba
 static int
 arm_decode_ld_st_word_ubyte (struct gdbarch *gdbarch, uint32_t insn,
 			     struct regcache *regs,
-			     arm_displaced_step_closure *dsc)
+			     arm_displaced_step_copy_insn_closure *dsc)
 {
   int a = bit (insn, 25), b = bit (insn, 4);
   uint32_t op1 = bits (insn, 20, 24);
@@ -6581,7 +7693,7 @@ arm_decode_ld_st_word_ubyte (struct gdba
 
 static int
 arm_decode_media (struct gdbarch *gdbarch, uint32_t insn,
-		  arm_displaced_step_closure *dsc)
+		  arm_displaced_step_copy_insn_closure *dsc)
 {
   switch (bits (insn, 20, 24))
     {
@@ -6638,7 +7750,7 @@ arm_decode_media (struct gdbarch *gdbarc
 static int
 arm_decode_b_bl_ldmstm (struct gdbarch *gdbarch, uint32_t insn,
 			struct regcache *regs,
-			arm_displaced_step_closure *dsc)
+			arm_displaced_step_copy_insn_closure *dsc)
 {
   if (bit (insn, 25))
     return arm_copy_b_bl_blx (gdbarch, insn, regs, dsc);
@@ -6649,7 +7761,7 @@ arm_decode_b_bl_ldmstm (struct gdbarch *
 static int
 arm_decode_ext_reg_ld_st (struct gdbarch *gdbarch, uint32_t insn,
 			  struct regcache *regs,
-			  arm_displaced_step_closure *dsc)
+			  arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int opcode = bits (insn, 20, 24);
 
@@ -6682,7 +7794,7 @@ arm_decode_ext_reg_ld_st (struct gdbarch
 static int
 thumb2_decode_dp_shift_reg (struct gdbarch *gdbarch, uint16_t insn1,
 			    uint16_t insn2,  struct regcache *regs,
-			    arm_displaced_step_closure *dsc)
+			    arm_displaced_step_copy_insn_closure *dsc)
 {
   /* PC is only allowed to be used in instruction MOV.  */
 
@@ -6703,7 +7815,7 @@ thumb2_decode_dp_shift_reg (struct gdbar
 static int
 thumb2_decode_ext_reg_ld_st (struct gdbarch *gdbarch, uint16_t insn1,
 			     uint16_t insn2,  struct regcache *regs,
-			     arm_displaced_step_closure *dsc)
+			     arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int opcode = bits (insn1, 4, 8);
 
@@ -6738,7 +7850,7 @@ thumb2_decode_ext_reg_ld_st (struct gdba
 
 static int
 arm_decode_svc_copro (struct gdbarch *gdbarch, uint32_t insn,
-		      struct regcache *regs, arm_displaced_step_closure *dsc)
+		      regcache *regs, arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int op1 = bits (insn, 20, 25);
   int op = bit (insn, 4);
@@ -6784,7 +7896,7 @@ arm_decode_svc_copro (struct gdbarch *gd
 static int
 thumb2_decode_svc_copro (struct gdbarch *gdbarch, uint16_t insn1,
 			 uint16_t insn2, struct regcache *regs,
-			 arm_displaced_step_closure *dsc)
+			 arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int coproc = bits (insn2, 8, 11);
   unsigned int bit_5_8 = bits (insn1, 5, 8);
@@ -6824,7 +7936,7 @@ thumb2_decode_svc_copro (struct gdbarch
 
 static void
 install_pc_relative (struct gdbarch *gdbarch, struct regcache *regs,
-		     arm_displaced_step_closure *dsc, int rd)
+		     arm_displaced_step_copy_insn_closure *dsc, int rd)
 {
   /* ADR Rd, #imm
 
@@ -6842,7 +7954,7 @@ install_pc_relative (struct gdbarch *gdb
 
 static int
 thumb_copy_pc_relative_16bit (struct gdbarch *gdbarch, struct regcache *regs,
-			      arm_displaced_step_closure *dsc,
+			      arm_displaced_step_copy_insn_closure *dsc,
 			      int rd, unsigned int imm)
 {
 
@@ -6857,15 +7969,13 @@ thumb_copy_pc_relative_16bit (struct gdb
 static int
 thumb_decode_pc_relative_16bit (struct gdbarch *gdbarch, uint16_t insn,
 				struct regcache *regs,
-				arm_displaced_step_closure *dsc)
+				arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rd = bits (insn, 8, 10);
   unsigned int imm8 = bits (insn, 0, 7);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying thumb adr r%d, #%d insn %.4x\n",
-			rd, imm8, insn);
+  displaced_debug_printf ("copying thumb adr r%d, #%d insn %.4x",
+			  rd, imm8, insn);
 
   return thumb_copy_pc_relative_16bit (gdbarch, regs, dsc, rd, imm8);
 }
@@ -6873,7 +7983,7 @@ thumb_decode_pc_relative_16bit (struct g
 static int
 thumb_copy_pc_relative_32bit (struct gdbarch *gdbarch, uint16_t insn1,
 			      uint16_t insn2, struct regcache *regs,
-			      arm_displaced_step_closure *dsc)
+			      arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rd = bits (insn2, 8, 11);
   /* Since immediate has the same encoding in ADR ADD and SUB, so we simply
@@ -6883,10 +7993,8 @@ thumb_copy_pc_relative_32bit (struct gdb
   unsigned int imm_3_8 = insn2 & 0x70ff;
   unsigned int imm_i = insn1 & 0x0400; /* Clear all bits except bit 10.  */
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying thumb adr r%d, #%d:%d insn %.4x%.4x\n",
-			rd, imm_i, imm_3_8, insn1, insn2);
+  displaced_debug_printf ("copying thumb adr r%d, #%d:%d insn %.4x%.4x",
+			  rd, imm_i, imm_3_8, insn1, insn2);
 
   if (bit (insn1, 7)) /* Encoding T2 */
     {
@@ -6910,7 +8018,7 @@ thumb_copy_pc_relative_32bit (struct gdb
 static int
 thumb_copy_16bit_ldr_literal (struct gdbarch *gdbarch, uint16_t insn1,
 			      struct regcache *regs,
-			      arm_displaced_step_closure *dsc)
+			      arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned int rt = bits (insn1, 8, 10);
   unsigned int pc;
@@ -6925,10 +8033,7 @@ thumb_copy_16bit_ldr_literal (struct gdb
      Insn: LDR R0, [R2, R3];
      Cleanup: R2 <- tmp2, R3 <- tmp3, Rd <- R0, R0 <- tmp0 */
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying thumb ldr r%d [pc #%d]\n"
-			, rt, imm8);
+  displaced_debug_printf ("copying thumb ldr r%d [pc #%d]", rt, imm8);
 
   dsc->tmp[0] = displaced_read_reg (regs, dsc, 0);
   dsc->tmp[2] = displaced_read_reg (regs, dsc, 2);
@@ -6960,7 +8065,7 @@ thumb_copy_16bit_ldr_literal (struct gdb
 static int
 thumb_copy_cbnz_cbz (struct gdbarch *gdbarch, uint16_t insn1,
 		     struct regcache *regs,
-		     arm_displaced_step_closure *dsc)
+		     arm_displaced_step_copy_insn_closure *dsc)
 {
   int non_zero = bit (insn1, 11);
   unsigned int imm5 = (bit (insn1, 9) << 6) | (bits (insn1, 3, 7) << 1);
@@ -6983,10 +8088,9 @@ thumb_copy_cbnz_cbz (struct gdbarch *gdb
   dsc->u.branch.link = 0;
   dsc->u.branch.exchange = 0;
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copying %s [r%d = 0x%x]"
-			" insn %.4x to %.8lx\n", non_zero ? "cbnz" : "cbz",
-			rn, rn_val, insn1, dsc->u.branch.dest);
+  displaced_debug_printf ("copying %s [r%d = 0x%x] insn %.4x to %.8lx",
+			  non_zero ? "cbnz" : "cbz",
+			  rn, rn_val, insn1, dsc->u.branch.dest);
 
   dsc->modinsn[0] = THUMB_NOP;
 
@@ -6998,7 +8102,7 @@ thumb_copy_cbnz_cbz (struct gdbarch *gdb
 static int
 thumb2_copy_table_branch (struct gdbarch *gdbarch, uint16_t insn1,
 			  uint16_t insn2, struct regcache *regs,
-			  arm_displaced_step_closure *dsc)
+			  arm_displaced_step_copy_insn_closure *dsc)
 {
   ULONGEST rn_val, rm_val;
   int is_tbh = bit (insn2, 4);
@@ -7023,11 +8127,10 @@ thumb2_copy_table_branch (struct gdbarch
       halfwords = extract_unsigned_integer (buf, 1, byte_order);
     }
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: %s base 0x%x offset 0x%x"
-			" offset 0x%x\n", is_tbh ? "tbh" : "tbb",
-			(unsigned int) rn_val, (unsigned int) rm_val,
-			(unsigned int) halfwords);
+  displaced_debug_printf ("%s base 0x%x offset 0x%x offset 0x%x",
+			  is_tbh ? "tbh" : "tbb",
+			  (unsigned int) rn_val, (unsigned int) rm_val,
+			  (unsigned int) halfwords);
 
   dsc->u.branch.cond = INST_AL;
   dsc->u.branch.link = 0;
@@ -7041,7 +8144,7 @@ thumb2_copy_table_branch (struct gdbarch
 
 static void
 cleanup_pop_pc_16bit_all (struct gdbarch *gdbarch, struct regcache *regs,
-			  arm_displaced_step_closure *dsc)
+			  arm_displaced_step_copy_insn_closure *dsc)
 {
   /* PC <- r7 */
   int val = displaced_read_reg (regs, dsc, 7);
@@ -7059,7 +8162,7 @@ cleanup_pop_pc_16bit_all (struct gdbarch
 static int
 thumb_copy_pop_pc_16bit (struct gdbarch *gdbarch, uint16_t insn1,
 			 struct regcache *regs,
-			 arm_displaced_step_closure *dsc)
+			 arm_displaced_step_copy_insn_closure *dsc)
 {
   dsc->u.block.regmask = insn1 & 0x00ff;
 
@@ -7084,10 +8187,8 @@ thumb_copy_pop_pc_16bit (struct gdbarch
      Cleanup: Set registers in original reglist from r0 - rN.  Restore r0 - rN
      from tmp[] properly.
   */
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog,
-			"displaced: copying thumb pop {%.8x, pc} insn %.4x\n",
-			dsc->u.block.regmask, insn1);
+  displaced_debug_printf ("copying thumb pop {%.8x, pc} insn %.4x",
+			  dsc->u.block.regmask, insn1);
 
   if (dsc->u.block.regmask == 0xff)
     {
@@ -7102,7 +8203,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;
 
@@ -7111,11 +8212,9 @@ thumb_copy_pop_pc_16bit (struct gdbarch
 
       new_regmask = (1 << (num_in_list + 1)) - 1;
 
-      if (debug_displaced)
-	fprintf_unfiltered (gdb_stdlog, _("displaced: POP "
-					  "{..., pc}: original reg list %.4x,"
-					  " modified list %.4x\n"),
-			    (int) dsc->u.block.regmask, new_regmask);
+      displaced_debug_printf ("POP {..., pc}: original reg list %.4x, "
+			      "modified list %.4x",
+			      (int) dsc->u.block.regmask, new_regmask);
 
       dsc->u.block.regmask |= 0x8000;
       dsc->u.block.writeback = 0;
@@ -7132,7 +8231,7 @@ thumb_copy_pop_pc_16bit (struct gdbarch
 static void
 thumb_process_displaced_16bit_insn (struct gdbarch *gdbarch, uint16_t insn1,
 				    struct regcache *regs,
-				    arm_displaced_step_closure *dsc)
+				    arm_displaced_step_copy_insn_closure *dsc)
 {
   unsigned short op_bit_12_15 = bits (insn1, 12, 15);
   unsigned short op_bit_10_11 = bits (insn1, 10, 11);
@@ -7228,15 +8327,14 @@ thumb_process_displaced_16bit_insn (stru
     }
 
   if (err)
-    internal_error (__FILE__, __LINE__,
-		    _("thumb_process_displaced_16bit_insn: Instruction decode error"));
+    internal_error (_("thumb_process_displaced_16bit_insn: Instruction decode error"));
 }
 
 static int
 decode_thumb_32bit_ld_mem_hints (struct gdbarch *gdbarch,
 				 uint16_t insn1, uint16_t insn2,
 				 struct regcache *regs,
-				 arm_displaced_step_closure *dsc)
+				 arm_displaced_step_copy_insn_closure *dsc)
 {
   int rt = bits (insn2, 12, 15);
   int rn = bits (insn1, 0, 3);
@@ -7315,7 +8413,7 @@ decode_thumb_32bit_ld_mem_hints (struct
 static void
 thumb_process_displaced_32bit_insn (struct gdbarch *gdbarch, uint16_t insn1,
 				    uint16_t insn2, struct regcache *regs,
-				    arm_displaced_step_closure *dsc)
+				    arm_displaced_step_copy_insn_closure *dsc)
 {
   int err = 0;
   unsigned short op = bit (insn2, 15);
@@ -7435,23 +8533,21 @@ thumb_process_displaced_32bit_insn (stru
     }
 
   if (err)
-    internal_error (__FILE__, __LINE__,
-		    _("thumb_process_displaced_32bit_insn: Instruction decode error"));
+    internal_error (_("thumb_process_displaced_32bit_insn: Instruction decode error"));
 
 }
 
 static void
 thumb_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from,
 			      struct regcache *regs,
-			      arm_displaced_step_closure *dsc)
+			      arm_displaced_step_copy_insn_closure *dsc)
 {
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
   uint16_t insn1
     = read_memory_unsigned_integer (from, 2, byte_order_for_code);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: process thumb insn %.4x "
-			"at %.8lx\n", insn1, (unsigned long) from);
+  displaced_debug_printf ("process thumb insn %.4x at %.8lx",
+			  insn1, (unsigned long) from);
 
   dsc->is_thumb = 1;
   dsc->insn_size = thumb_insn_size (insn1);
@@ -7468,7 +8564,7 @@ thumb_process_displaced_insn (struct gdb
 void
 arm_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from,
 			    CORE_ADDR to, struct regcache *regs,
-			    arm_displaced_step_closure *dsc)
+			    arm_displaced_step_copy_insn_closure *dsc)
 {
   int err = 0;
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
@@ -7488,10 +8584,8 @@ arm_process_displaced_insn (struct gdbar
   dsc->is_thumb = 0;
   dsc->insn_size = 4;
   insn = read_memory_unsigned_integer (from, 4, byte_order_for_code);
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: stepping insn %.8lx "
-			"at %.8lx\n", (unsigned long) insn,
-			(unsigned long) from);
+  displaced_debug_printf ("stepping insn %.8lx at %.8lx",
+			  (unsigned long) insn, (unsigned long) from);
 
   if ((insn & 0xf0000000) == 0xf0000000)
     err = arm_decode_unconditional (gdbarch, insn, regs, dsc);
@@ -7519,40 +8613,34 @@ arm_process_displaced_insn (struct gdbar
     }
 
   if (err)
-    internal_error (__FILE__, __LINE__,
-		    _("arm_process_displaced_insn: Instruction decode error"));
+    internal_error (_("arm_process_displaced_insn: Instruction decode error"));
 }
 
 /* Actually set up the scratch space for a displaced instruction.  */
 
 void
 arm_displaced_init_closure (struct gdbarch *gdbarch, CORE_ADDR from,
-			    CORE_ADDR to, arm_displaced_step_closure *dsc)
+			    CORE_ADDR to,
+			    arm_displaced_step_copy_insn_closure *dsc)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
   unsigned int i, len, offset;
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
-  int size = dsc->is_thumb? 2 : 4;
+  int size = dsc->is_thumb ? 2 : 4;
   const gdb_byte *bkp_insn;
 
   offset = 0;
   /* Poke modified instruction(s).  */
   for (i = 0; i < dsc->numinsns; i++)
     {
-      if (debug_displaced)
-	{
-	  fprintf_unfiltered (gdb_stdlog, "displaced: writing insn ");
-	  if (size == 4)
-	    fprintf_unfiltered (gdb_stdlog, "%.8lx",
-				dsc->modinsn[i]);
-	  else if (size == 2)
-	    fprintf_unfiltered (gdb_stdlog, "%.4x",
-				(unsigned short)dsc->modinsn[i]);
-
-	  fprintf_unfiltered (gdb_stdlog, " at %.8lx\n",
-			      (unsigned long) to + offset);
+      if (size == 4)
+	displaced_debug_printf ("writing insn %.8lx at %.8lx",
+				dsc->modinsn[i], (unsigned long) to + offset);
+      else if (size == 2)
+	displaced_debug_printf ("writing insn %.4x at %.8lx",
+				(unsigned short) dsc->modinsn[i],
+				(unsigned long) to + offset);
 
-	}
       write_memory_unsigned_integer (to + offset, size,
 				     byte_order_for_code,
 				     dsc->modinsn[i]);
@@ -7574,9 +8662,8 @@ arm_displaced_init_closure (struct gdbar
   /* Put breakpoint afterwards.  */
   write_memory (to + offset, bkp_insn, len);
 
-  if (debug_displaced)
-    fprintf_unfiltered (gdb_stdlog, "displaced: copy %s->%s: ",
-			paddress (gdbarch, from), paddress (gdbarch, to));
+  displaced_debug_printf ("copy %s->%s", paddress (gdbarch, from),
+			  paddress (gdbarch, to));
 }
 
 /* Entry point for cleaning things up after a displaced instruction has been
@@ -7584,11 +8671,36 @@ arm_displaced_init_closure (struct gdbar
 
 void
 arm_displaced_step_fixup (struct gdbarch *gdbarch,
-			  struct displaced_step_closure *dsc_,
+			  struct displaced_step_copy_insn_closure *dsc_,
 			  CORE_ADDR from, CORE_ADDR to,
-			  struct regcache *regs)
+			  struct regcache *regs, bool completed_p)
 {
-  arm_displaced_step_closure *dsc = (arm_displaced_step_closure *) dsc_;
+  /* The following block exists as a temporary measure while displaced
+     stepping is fixed architecture at a time within GDB.
+
+     In an earlier implementation of displaced stepping, if GDB thought the
+     displaced instruction had not been executed then this fix up function
+     was never called.  As a consequence, things that should be fixed by
+     this function were left in an unfixed state.
+
+     However, it's not as simple as always calling this function; this
+     function needs to be updated to decide what should be fixed up based
+     on whether the displaced step executed or not, which requires each
+     architecture to be considered individually.
+
+     Until this architecture is updated, this block replicates the old
+     behaviour; we just restore the program counter register, and leave
+     everything else unfixed.  */
+  if (!completed_p)
+    {
+      CORE_ADDR pc = regcache_read_pc (regs);
+      pc = from + (pc - to);
+      regcache_write_pc (regs, pc);
+      return;
+    }
+
+  arm_displaced_step_copy_insn_closure *dsc
+    = (arm_displaced_step_copy_insn_closure *) dsc_;
 
   if (dsc->cleanup)
     dsc->cleanup (gdbarch, regs, dsc);
@@ -7605,8 +8717,8 @@ arm_displaced_step_fixup (struct gdbarch
 static int
 gdb_print_insn_arm (bfd_vma memaddr, disassemble_info *info)
 {
-  gdb_disassembler *di
-    = static_cast<gdb_disassembler *>(info->application_data);
+  gdb_disassemble_info *di
+    = static_cast<gdb_disassemble_info *> (info->application_data);
   struct gdbarch *gdbarch = di->arch ();
 
   if (arm_pc_is_thumb (gdbarch, memaddr))
@@ -7643,9 +8755,12 @@ gdb_print_insn_arm (bfd_vma memaddr, dis
   /* GDB is able to get bfd_mach from the exe_bfd, info->mach is
      accurate, so mark USER_SPECIFIED_MACHINE_TYPE bit.  Otherwise,
      opcodes/arm-dis.c:print_insn reset info->mach, and it will trigger
-     the assert on the mismatch of info->mach and bfd_get_mach (exec_bfd)
-     in default_print_insn.  */
-  if (exec_bfd != NULL)
+     the assert on the mismatch of info->mach and
+     bfd_get_mach (current_program_space->exec_bfd ()) in
+     default_print_insn.  */
+  if (current_program_space->exec_bfd () != NULL
+      && (current_program_space->exec_bfd ()->arch_info
+	  == gdbarch_bfd_arch_info (gdbarch)))
     info->flags |= USER_SPECIFIED_MACHINE_TYPE;
 
   return default_print_insn (memaddr, info);
@@ -7664,7 +8779,7 @@ gdb_print_insn_arm (bfd_vma memaddr, dis
    undefined instruction trap.  ARM7TDMI is nominally ARMv4T, but does
    not in fact add the new instructions.  The new undefined
    instructions in ARMv4 are all instructions that had no defined
-   behaviour in earlier chips.  There is no guarantee that they will
+   behavior in earlier chips.  There is no guarantee that they will
    raise an exception, but may be treated as NOP's.  In practice, it
    may only safe to rely on instructions matching:
    
@@ -7695,7 +8810,7 @@ static const gdb_byte arm_default_thumb_
 static int
 arm_breakpoint_kind_from_pc (struct gdbarch *gdbarch, CORE_ADDR *pcptr)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
   enum bfd_endian byte_order_for_code = gdbarch_byte_order_for_code (gdbarch);
 
   if (arm_pc_is_thumb (gdbarch, *pcptr))
@@ -7730,7 +8845,7 @@ arm_breakpoint_kind_from_pc (struct gdba
 static const gdb_byte *
 arm_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   switch (kind)
     {
@@ -7802,10 +8917,14 @@ arm_extract_return_value (struct type *t
 {
   struct gdbarch *gdbarch = regs->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  while (type->code () == TYPE_CODE_RANGE)
+    type = check_typedef (type->target_type ());
 
-  if (TYPE_CODE_FLT == TYPE_CODE (type))
+  if (TYPE_CODE_FLT == type->code ())
     {
-      switch (gdbarch_tdep (gdbarch)->fp_model)
+      switch (tdep->fp_model)
 	{
 	case ARM_FLOAT_FPA:
 	  {
@@ -7826,29 +8945,29 @@ arm_extract_return_value (struct type *t
 	     not using the VFP ABI code.  */
 	case ARM_FLOAT_VFP:
 	  regs->cooked_read (ARM_A1_REGNUM, valbuf);
-	  if (TYPE_LENGTH (type) > 4)
+	  if (type->length () > 4)
 	    regs->cooked_read (ARM_A1_REGNUM + 1,
 			       valbuf + ARM_INT_REGISTER_SIZE);
 	  break;
 
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("arm_extract_return_value: "
+	  internal_error (_("arm_extract_return_value: "
 			    "Floating point model not supported"));
 	  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
+	   || is_fixed_point_type (type))
     {
       /* If the type is a plain integer, then the access is
 	 straight-forward.  Otherwise we have to play around a bit
 	 more.  */
-      int len = TYPE_LENGTH (type);
+      int len = type->length ();
       int regno = ARM_A1_REGNUM;
       ULONGEST tmp;
 
@@ -7867,10 +8986,10 @@ arm_extract_return_value (struct type *t
     }
   else
     {
-      /* For a structure or union the behaviour is as if the value had
-         been stored to word-aligned memory and then loaded into 
-         registers with 32-bit load instruction(s).  */
-      int len = TYPE_LENGTH (type);
+      /* For a structure or union the behavior is as if the value had
+	 been stored to word-aligned memory and then loaded into 
+	 registers with 32-bit load instruction(s).  */
+      int len = type->length ();
       int regno = ARM_A1_REGNUM;
       bfd_byte tmpbuf[ARM_INT_REGISTER_SIZE];
 
@@ -7899,23 +9018,28 @@ 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;
 
-  if (TYPE_CODE_ARRAY == code && TYPE_VECTOR (type))
+  if (TYPE_HAS_DYNAMIC_LENGTH (type))
+    return 1;
+
+  if (TYPE_CODE_ARRAY == code && type->is_vector ())
     {
       /* Vector values should be returned using ARM registers if they
 	 are not over 16 bytes.  */
-      return (TYPE_LENGTH (type) > 16);
+      return (type->length () > 16);
     }
 
-  if (gdbarch_tdep (gdbarch)->arm_abi != ARM_ABI_APCS)
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+  if (tdep->arm_abi != ARM_ABI_APCS)
     {
       /* The AAPCS says all aggregates not larger than a word are returned
 	 in a register.  */
-      if (TYPE_LENGTH (type) <= ARM_INT_REGISTER_SIZE)
+      if (type->length () <= ARM_INT_REGISTER_SIZE
+	  && language_pass_by_reference (type).trivially_copyable)
 	return 0;
 
       return 1;
@@ -7926,7 +9050,8 @@ arm_return_in_memory (struct gdbarch *gd
 
       /* All aggregate types that won't fit in a register must be returned
 	 in memory.  */
-      if (TYPE_LENGTH (type) > ARM_INT_REGISTER_SIZE)
+      if (type->length () > ARM_INT_REGISTER_SIZE
+	  || !language_pass_by_reference (type).trivially_copyable)
 	return 1;
 
       /* In the ARM ABI, "integer" like aggregate types are returned in
@@ -7936,7 +9061,7 @@ arm_return_in_memory (struct gdbarch *gd
 	 fields are not addressable, and all addressable subfields of
 	 unions always start at offset zero.
 
-	 This function is based on the behaviour of GCC 2.95.1.
+	 This function is based on the behavior of GCC 2.95.1.
 	 See: gcc/arm.c: arm_return_in_memory() for details.
 
 	 Note: All versions of GCC before GCC 2.95.2 do not set up the
@@ -7968,13 +9093,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)
@@ -7984,12 +9108,12 @@ arm_return_in_memory (struct gdbarch *gd
 		}
 
 	      /* If bitpos != 0, then we have to care about it.  */
-	      if (TYPE_FIELD_BITPOS (type, i) != 0)
+	      if (type->field (i).loc_bitpos () != 0)
 		{
 		  /* Bitfields are not addressable.  If the field bitsize is 
 		     zero, then the field is not packed.  Hence it cannot be
 		     a bitfield or any other packed type.  */
-		  if (TYPE_FIELD_BITSIZE (type, i) == 0)
+		  if (type->field (i).bitsize () == 0)
 		    {
 		      nRc = 1;
 		      break;
@@ -8012,11 +9136,15 @@ 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)
+  while (type->code () == TYPE_CODE_RANGE)
+    type = check_typedef (type->target_type ());
+
+  if (type->code () == TYPE_CODE_FLT)
     {
       gdb_byte buf[ARM_FP_REGISTER_SIZE];
+      arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
-      switch (gdbarch_tdep (gdbarch)->fp_model)
+      switch (tdep->fp_model)
 	{
 	case ARM_FLOAT_FPA:
 
@@ -8030,41 +9158,52 @@ arm_store_return_value (struct type *typ
 	     not using the VFP ABI code.  */
 	case ARM_FLOAT_VFP:
 	  regs->cooked_write (ARM_A1_REGNUM, valbuf);
-	  if (TYPE_LENGTH (type) > 4)
+	  if (type->length () > 4)
 	    regs->cooked_write (ARM_A1_REGNUM + 1,
 				valbuf + ARM_INT_REGISTER_SIZE);
 	  break;
 
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("arm_store_return_value: Floating "
+	  internal_error (_("arm_store_return_value: Floating "
 			    "point model not supported"));
 	  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
+	   || is_fixed_point_type (type))
     {
-      if (TYPE_LENGTH (type) <= 4)
+      if (type->length () <= 4)
 	{
 	  /* Values of one word or less are zero/sign-extended and
 	     returned in r0.  */
 	  bfd_byte tmpbuf[ARM_INT_REGISTER_SIZE];
-	  LONGEST val = unpack_long (type, valbuf);
 
-	  store_signed_integer (tmpbuf, ARM_INT_REGISTER_SIZE, byte_order, val);
+	  if (is_fixed_point_type (type))
+	    {
+	      gdb_mpz unscaled;
+	      unscaled.read (gdb::make_array_view (valbuf, type->length ()),
+			     byte_order, type->is_unsigned ());
+	      unscaled.write (gdb::make_array_view (tmpbuf, sizeof (tmpbuf)),
+			      byte_order, type->is_unsigned ());
+	    }
+	  else
+	    {
+	      LONGEST val = unpack_long (type, valbuf);
+	      store_signed_integer (tmpbuf, ARM_INT_REGISTER_SIZE, byte_order, val);
+	    }
 	  regs->cooked_write (ARM_A1_REGNUM, tmpbuf);
 	}
       else
 	{
 	  /* Integral values greater than one word are stored in consecutive
 	     registers starting with r0.  This will always be a multiple of
-	     the regiser size.  */
-	  int len = TYPE_LENGTH (type);
+	     the register size.  */
+	  int len = type->length ();
 	  int regno = ARM_A1_REGNUM;
 
 	  while (len > 0)
@@ -8077,10 +9216,10 @@ arm_store_return_value (struct type *typ
     }
   else
     {
-      /* For a structure or union the behaviour is as if the value had
-         been stored to word-aligned memory and then loaded into 
-         registers with 32-bit load instruction(s).  */
-      int len = TYPE_LENGTH (type);
+      /* For a structure or union the behavior is as if the value had
+	 been stored to word-aligned memory and then loaded into 
+	 registers with 32-bit load instruction(s).  */
+      int len = type->length ();
       int regno = ARM_A1_REGNUM;
       bfd_byte tmpbuf[ARM_INT_REGISTER_SIZE];
 
@@ -8101,10 +9240,10 @@ arm_store_return_value (struct type *typ
 static enum return_value_convention
 arm_return_value (struct gdbarch *gdbarch, struct value *function,
 		  struct type *valtype, struct regcache *regcache,
-		  gdb_byte *readbuf, const gdb_byte *writebuf)
+		  struct value **read_value, const gdb_byte *writebuf)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  struct type *func_type = function ? value_type (function) : NULL;
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+  struct type *func_type = function ? function->type () : NULL;
   enum arm_vfp_cprc_base_type vfp_base_type;
   int vfp_base_count;
 
@@ -8114,6 +9253,14 @@ arm_return_value (struct gdbarch *gdbarc
       int reg_char = arm_vfp_cprc_reg_char (vfp_base_type);
       int unit_length = arm_vfp_cprc_unit_length (vfp_base_type);
       int i;
+
+      gdb_byte *readbuf = nullptr;
+      if (read_value != nullptr)
+	{
+	  *read_value = value::allocate (valtype);
+	  readbuf = (*read_value)->contents_raw ().data ();
+	}
+
       for (i = 0; i < vfp_base_count; i++)
 	{
 	  if (reg_char == 'q')
@@ -8143,15 +9290,39 @@ 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)
     {
+      /* From the AAPCS document:
+
+	 Result return:
+
+	 A Composite Type larger than 4 bytes, or whose size cannot be
+	 determined statically by both caller and callee, is stored in memory
+	 at an address passed as an extra argument when the function was
+	 called (Parameter Passing, rule A.4). The memory to be used for the
+	 result may be modified at any point during the function call.
+
+	 Parameter Passing:
+
+	 A.4: If the subroutine is a function that returns a result in memory,
+	 then the address for the result is placed in r0 and the NCRN is set
+	 to r1.  */
       if (tdep->struct_return == pcc_struct_return
 	  || arm_return_in_memory (gdbarch, valtype))
-	return RETURN_VALUE_STRUCT_CONVENTION;
+	{
+	  if (read_value != nullptr)
+	    {
+	      CORE_ADDR addr;
+
+	      regcache->cooked_read (ARM_A1_REGNUM, &addr);
+	      *read_value = value_at_non_lval (valtype, addr);
+	    }
+	  return RETURN_VALUE_ABI_RETURNS_ADDRESS;
+	}
     }
-  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;
@@ -8160,18 +9331,22 @@ arm_return_value (struct gdbarch *gdbarc
   if (writebuf)
     arm_store_return_value (valtype, regcache, writebuf);
 
-  if (readbuf)
-    arm_extract_return_value (valtype, regcache, readbuf);
+  if (read_value != nullptr)
+    {
+      *read_value = value::allocate (valtype);
+      gdb_byte *readbuf = (*read_value)->contents_raw ().data ();
+      arm_extract_return_value (valtype, regcache, readbuf);
+    }
 
   return RETURN_VALUE_REGISTER_CONVENTION;
 }
 
 
 static int
-arm_get_longjmp_target (struct frame_info *frame, CORE_ADDR *pc)
+arm_get_longjmp_target (const frame_info_ptr &frame, CORE_ADDR *pc)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   CORE_ADDR jb_addr;
   gdb_byte buf[ARM_INT_REGISTER_SIZE];
@@ -8216,11 +9391,10 @@ arm_skip_cmse_entry (CORE_ADDR pc, const
   char *target_name = (char *) alloca (target_len);
   xsnprintf (target_name, target_len, "%s%s", "__acle_se_", name);
 
-  struct bound_minimal_symbol minsym
-   = lookup_minimal_symbol (target_name, NULL, objfile);
-
+  bound_minimal_symbol minsym
+    = lookup_minimal_symbol (current_program_space, target_name, objfile);
   if (minsym.minsym != nullptr)
-    return BMSYMBOL_VALUE_ADDRESS (minsym);
+    return minsym.value_address ();
 
   return 0;
 }
@@ -8240,7 +9414,7 @@ arm_is_sgstubs_section (struct obj_secti
    return the target PC.  Otherwise return 0.  */
 
 CORE_ADDR
-arm_skip_stub (struct frame_info *frame, CORE_ADDR pc)
+arm_skip_stub (const frame_info_ptr &frame, CORE_ADDR pc)
 {
   const char *name;
   int namelen;
@@ -8267,7 +9441,7 @@ arm_skip_stub (struct frame_info *frame,
       || startswith (name, "__ARM_call_via_"))
     {
       /* Use the name suffix to determine which register contains the
-         target PC.  */
+	 target PC.  */
       static const char *table[15] =
       {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
        "r8", "r9", "sl", "fp", "ip", "sp", "lr"
@@ -8292,7 +9466,6 @@ arm_skip_stub (struct frame_info *frame,
     {
       char *target_name;
       int target_len = namelen - 2;
-      struct bound_minimal_symbol minsym;
       struct objfile *objfile;
       struct obj_section *sec;
 
@@ -8307,9 +9480,10 @@ arm_skip_stub (struct frame_info *frame,
 
       sec = find_pc_section (pc);
       objfile = (sec == NULL) ? NULL : sec->objfile;
-      minsym = lookup_minimal_symbol (target_name, NULL, objfile);
+      bound_minimal_symbol minsym
+	= lookup_minimal_symbol (current_program_space, target_name, objfile);
       if (minsym.minsym != NULL)
-	return BMSYMBOL_VALUE_ADDRESS (minsym);
+	return minsym.value_address ();
       else
 	return 0;
     }
@@ -8324,33 +9498,17 @@ 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;
-
   /* If the current architecture is not ARM, we have nothing to do.  */
-  if (gdbarch_bfd_arch_info (target_gdbarch ())->arch != bfd_arch_arm)
+  gdbarch *arch = current_inferior ()->arch ();
+  if (gdbarch_bfd_arch_info (arch)->arch != bfd_arch_arm)
     return;
 
   /* Update the architecture.  */
-  gdbarch_info_init (&info);
-
-  if (!gdbarch_update_p (info))
-    internal_error (__FILE__, __LINE__, _("could not update architecture"));
+  gdbarch_info info;
+  if (!gdbarch_update_p (current_inferior (), info))
+    internal_error (_("could not update architecture"));
 }
 
 static void
@@ -8367,7 +9525,7 @@ set_fp_model_sfunc (const char *args, in
       }
 
   if (fp_model == ARM_FLOAT_LAST)
-    internal_error (__FILE__, __LINE__, _("Invalid fp model accepted: %s."),
+    internal_error (_("Invalid fp model accepted: %s."),
 		    current_fp_model);
 
   arm_update_current_architecture ();
@@ -8377,17 +9535,20 @@ static void
 show_fp_model (struct ui_file *file, int from_tty,
 	       struct cmd_list_element *c, const char *value)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (target_gdbarch ());
-
+  gdbarch *arch = current_inferior ()->arch ();
   if (arm_fp_model == ARM_FLOAT_AUTO
-      && gdbarch_bfd_arch_info (target_gdbarch ())->arch == bfd_arch_arm)
-    fprintf_filtered (file, _("\
+      && gdbarch_bfd_arch_info (arch)->arch == bfd_arch_arm)
+    {
+      arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (arch);
+
+      gdb_printf (file, _("\
 The current ARM floating point model is \"auto\" (currently \"%s\").\n"),
-		      fp_model_strings[tdep->fp_model]);
+		  fp_model_strings[tdep->fp_model]);
+    }
   else
-    fprintf_filtered (file, _("\
+    gdb_printf (file, _("\
 The current ARM floating point model is \"%s\".\n"),
-		      fp_model_strings[arm_fp_model]);
+		fp_model_strings[arm_fp_model]);
 }
 
 static void
@@ -8404,7 +9565,7 @@ arm_set_abi (const char *args, int from_
       }
 
   if (arm_abi == ARM_ABI_LAST)
-    internal_error (__FILE__, __LINE__, _("Invalid ABI accepted: %s."),
+    internal_error (_("Invalid ABI accepted: %s."),
 		    arm_abi_string);
 
   arm_update_current_architecture ();
@@ -8414,36 +9575,48 @@ static void
 arm_show_abi (struct ui_file *file, int from_tty,
 	     struct cmd_list_element *c, const char *value)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (target_gdbarch ());
-
+  gdbarch *arch = current_inferior ()->arch ();
   if (arm_abi_global == ARM_ABI_AUTO
-      && gdbarch_bfd_arch_info (target_gdbarch ())->arch == bfd_arch_arm)
-    fprintf_filtered (file, _("\
+      && gdbarch_bfd_arch_info (arch)->arch == bfd_arch_arm)
+    {
+      arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (arch);
+
+      gdb_printf (file, _("\
 The current ARM ABI is \"auto\" (currently \"%s\").\n"),
-		      arm_abi_strings[tdep->arm_abi]);
+		  arm_abi_strings[tdep->arm_abi]);
+    }
   else
-    fprintf_filtered (file, _("The current ARM ABI is \"%s\".\n"),
-		      arm_abi_string);
+    gdb_printf (file, _("The current ARM ABI is \"%s\".\n"),
+		arm_abi_string);
 }
 
 static void
 arm_show_fallback_mode (struct ui_file *file, int from_tty,
 			struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file,
-		    _("The current execution mode assumed "
-		      "(when symbols are unavailable) is \"%s\".\n"),
-		    arm_fallback_mode_string);
+  gdb_printf (file,
+	      _("The current execution mode assumed "
+		"(when symbols are unavailable) is \"%s\".\n"),
+	      arm_fallback_mode_string);
 }
 
 static void
 arm_show_force_mode (struct ui_file *file, int from_tty,
 		     struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file,
-		    _("The current execution mode assumed "
-		      "(even when symbols are available) is \"%s\".\n"),
-		    arm_force_mode_string);
+  gdb_printf (file,
+	      _("The current execution mode assumed "
+		"(even when symbols are available) is \"%s\".\n"),
+	      arm_force_mode_string);
+}
+
+static void
+arm_show_unwind_secure_frames (struct ui_file *file, int from_tty,
+			 struct cmd_list_element *c, const char *value)
+{
+  gdb_printf (file,
+	      _("Usage of non-secure to secure exception stack unwinding is %s.\n"),
+	      arm_unwind_secure_frames ? "on" : "off");
 }
 
 /* If the user changes the register disassembly style used for info
@@ -8466,56 +9639,62 @@ show_disassembly_style_sfunc (struct ui_
 			      struct cmd_list_element *c, const char *value)
 {
   struct gdbarch *gdbarch = get_current_arch ();
-  char *options = get_disassembler_options (gdbarch);
+  const char *options = get_disassembler_options (gdbarch);
   const char *style = "";
   int len = 0;
   const char *opt;
 
   FOR_EACH_DISASSEMBLER_OPTION (opt, options)
-    if (CONST_STRNEQ (opt, "reg-names-"))
+    if (startswith (opt, "reg-names-"))
       {
 	style = &opt[strlen ("reg-names-")];
 	len = strcspn (style, ",");
       }
 
-  fprintf_unfiltered (file, "The disassembly style is \"%.*s\".\n", len, style);
+  gdb_printf (file, "The disassembly style is \"%.*s\".\n", len, style);
 }
 
 /* Return the ARM register name corresponding to register I.  */
 static const char *
 arm_register_name (struct gdbarch *gdbarch, int i)
 {
-  const int num_regs = gdbarch_num_regs (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
-  if (gdbarch_tdep (gdbarch)->have_vfp_pseudos
-      && i >= num_regs && i < num_regs + 32)
+  if (is_s_pseudo (gdbarch, i))
     {
-      static const char *const vfp_pseudo_names[] = {
+      static const char *const s_pseudo_names[] = {
 	"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
 	"s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15",
 	"s16", "s17", "s18", "s19", "s20", "s21", "s22", "s23",
 	"s24", "s25", "s26", "s27", "s28", "s29", "s30", "s31",
       };
 
-      return vfp_pseudo_names[i - num_regs];
+      return s_pseudo_names[i - tdep->s_pseudo_base];
     }
 
-  if (gdbarch_tdep (gdbarch)->have_neon_pseudos
-      && i >= num_regs + 32 && i < num_regs + 32 + 16)
+  if (is_q_pseudo (gdbarch, i))
     {
-      static const char *const neon_pseudo_names[] = {
+      static const char *const q_pseudo_names[] = {
 	"q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7",
 	"q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15",
       };
 
-      return neon_pseudo_names[i - num_regs - 32];
+      return q_pseudo_names[i - tdep->q_pseudo_base];
     }
 
+  if (is_mve_pseudo (gdbarch, i))
+    return "p0";
+
+  /* RA_AUTH_CODE is used for unwinding only.  Do not assign it a name.  */
+  if (is_pacbti_pseudo (gdbarch, i))
+    return "";
+
   if (i >= ARRAY_SIZE (arm_register_names))
     /* These registers are only supported on targets which supply
        an XML description.  */
     return "";
 
+  /* Non-pseudo registers.  */
   return arm_register_names[i];
 }
 
@@ -8540,9 +9719,9 @@ coff_sym_is_thumb (int val)
    symbol to indicate that it does.  */
    
 static void
-arm_elf_make_msymbol_special(asymbol *sym, struct minimal_symbol *msym)
+arm_elf_make_msymbol_special (const asymbol *sym, struct minimal_symbol *msym)
 {
-  elf_symbol_type *elfsym = (elf_symbol_type *) sym;
+  const elf_symbol_type *elfsym = (const elf_symbol_type *) sym;
 
   if (ARM_GET_SYM_BRANCH_TYPE (elfsym->internal_elf_sym.st_target_internal)
       == ST_BRANCH_TO_THUMB)
@@ -8558,7 +9737,7 @@ arm_coff_make_msymbol_special(int val, s
 
 static void
 arm_record_special_symbol (struct gdbarch *gdbarch, struct objfile *objfile,
-			   asymbol *sym)
+			   const asymbol *sym)
 {
   const char *name = bfd_asymbol_name (sym);
   struct arm_per_bfd *data;
@@ -8568,9 +9747,9 @@ arm_record_special_symbol (struct gdbarc
   if (name[1] != 'a' && name[1] != 't' && name[1] != 'd')
     return;
 
-  data = arm_bfd_data_key.get (objfile->obfd);
+  data = arm_bfd_data_key.get (objfile->obfd.get ());
   if (data == NULL)
-    data = arm_bfd_data_key.emplace (objfile->obfd,
+    data = arm_bfd_data_key.emplace (objfile->obfd.get (),
 				     objfile->obfd->section_count);
   arm_mapping_symbol_vec &map
     = data->section_maps[bfd_asymbol_section (sym)->index];
@@ -8616,69 +9795,93 @@ arm_neon_quad_read (struct gdbarch *gdba
 {
   char name_buf[4];
   gdb_byte reg_buf[8];
-  int offset, double_regnum;
+  int double_regnum;
   enum register_status status;
 
   xsnprintf (name_buf, sizeof (name_buf), "d%d", regnum << 1);
   double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf,
 					       strlen (name_buf));
 
-  /* d0 is always the least significant half of q0.  */
-  if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
-    offset = 8;
-  else
-    offset = 0;
-
   status = regcache->raw_read (double_regnum, reg_buf);
   if (status != REG_VALID)
     return status;
-  memcpy (buf + offset, reg_buf, 8);
+  memcpy (buf, reg_buf, 8);
 
-  offset = 8 - offset;
   status = regcache->raw_read (double_regnum + 1, reg_buf);
   if (status != REG_VALID)
     return status;
-  memcpy (buf + offset, reg_buf, 8);
+  memcpy (buf + 8, reg_buf, 8);
 
   return REG_VALID;
 }
 
-static enum register_status
-arm_pseudo_read (struct gdbarch *gdbarch, readable_regcache *regcache,
-		 int regnum, gdb_byte *buf)
+/* Read the contents of a NEON quad register, by reading from two double
+   registers, and return it as a value.  QUAD_REG_INDEX is the index of the quad
+   register, in [0, 15].  */
+
+static value *
+arm_neon_quad_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+			  int pseudo_reg_num, int quad_reg_index)
 {
-  const int num_regs = gdbarch_num_regs (gdbarch);
-  char name_buf[4];
-  gdb_byte reg_buf[8];
-  int offset, double_regnum;
+  std::string raw_reg_name = string_printf ("d%d", quad_reg_index << 1);
+  int double_regnum
+    = user_reg_map_name_to_regnum (gdbarch, raw_reg_name.c_str (),
+				   raw_reg_name.length ());
 
-  gdb_assert (regnum >= num_regs);
-  regnum -= num_regs;
+  return pseudo_from_concat_raw (next_frame, pseudo_reg_num, double_regnum,
+				 double_regnum + 1);
+}
 
-  if (gdbarch_tdep (gdbarch)->have_neon_pseudos && regnum >= 32 && regnum < 48)
-    /* Quad-precision register.  */
-    return arm_neon_quad_read (gdbarch, regcache, regnum - 32, buf);
+/* Read the contents of the MVE pseudo register REGNUM and return it as a
+   value.  */
+static value *
+arm_mve_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+			   int pseudo_reg_num)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  /* P0 is the first 16 bits of VPR.  */
+  return pseudo_from_raw_part (next_frame, pseudo_reg_num,
+			       tdep->mve_vpr_regnum, 0);
+}
+
+static value *
+arm_pseudo_read_value (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+		       const int pseudo_reg_num)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  gdb_assert (pseudo_reg_num >= gdbarch_num_regs (gdbarch));
+
+  if (is_q_pseudo (gdbarch, pseudo_reg_num))
+    {
+      /* Quad-precision register.  */
+      return arm_neon_quad_read_value (gdbarch, next_frame, pseudo_reg_num,
+				       pseudo_reg_num - tdep->q_pseudo_base);
+    }
+  else if (is_mve_pseudo (gdbarch, pseudo_reg_num))
+    return arm_mve_pseudo_read_value (gdbarch, next_frame, pseudo_reg_num);
   else
     {
-      enum register_status status;
+      int s_reg_index = pseudo_reg_num - tdep->s_pseudo_base;
 
       /* Single-precision register.  */
-      gdb_assert (regnum < 32);
+      gdb_assert (s_reg_index < 32);
 
       /* s0 is always the least significant half of d0.  */
+      int offset;
       if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
-	offset = (regnum & 1) ? 0 : 4;
+	offset = (s_reg_index & 1) ? 0 : 4;
       else
-	offset = (regnum & 1) ? 4 : 0;
+	offset = (s_reg_index & 1) ? 4 : 0;
 
-      xsnprintf (name_buf, sizeof (name_buf), "d%d", regnum >> 1);
-      double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf,
-						   strlen (name_buf));
-
-      status = regcache->raw_read (double_regnum, reg_buf);
-      if (status == REG_VALID)
-	memcpy (buf, reg_buf + offset, 4);
-      return status;
+      std::string raw_reg_name = string_printf ("d%d", s_reg_index >> 1);
+      int double_regnum
+	= user_reg_map_name_to_regnum (gdbarch, raw_reg_name.c_str (),
+				       raw_reg_name.length ());
+
+      return pseudo_from_raw_part (next_frame, pseudo_reg_num, double_regnum,
+				   offset);
     }
 }
 
@@ -8694,66 +9897,87 @@ arm_neon_quad_write (struct gdbarch *gdb
 		     int regnum, const gdb_byte *buf)
 {
   char name_buf[4];
-  int offset, double_regnum;
+  int double_regnum;
 
   xsnprintf (name_buf, sizeof (name_buf), "d%d", regnum << 1);
   double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf,
 					       strlen (name_buf));
 
-  /* d0 is always the least significant half of q0.  */
-  if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
-    offset = 8;
-  else
-    offset = 0;
+  regcache->raw_write (double_regnum, buf);
+  regcache->raw_write (double_regnum + 1, buf + 8);
+}
 
-  regcache->raw_write (double_regnum, buf + offset);
-  offset = 8 - offset;
-  regcache->raw_write (double_regnum + 1, buf + offset);
+static void
+arm_neon_quad_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+		     int quad_reg_index, gdb::array_view<const gdb_byte> buf)
+{
+  std::string raw_reg_name = string_printf ("d%d", quad_reg_index << 1);
+  int double_regnum
+    = user_reg_map_name_to_regnum (gdbarch, raw_reg_name.data (),
+				   raw_reg_name.length ());
+
+  pseudo_to_concat_raw (next_frame, buf, double_regnum, double_regnum + 1);
 }
 
+/* Store the contents of BUF to the MVE pseudo register REGNUM.  */
+
 static void
-arm_pseudo_write (struct gdbarch *gdbarch, struct regcache *regcache,
-		  int regnum, const gdb_byte *buf)
+arm_mve_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+		      int pseudo_reg_num, gdb::array_view<const gdb_byte> buf)
 {
-  const int num_regs = gdbarch_num_regs (gdbarch);
-  char name_buf[4];
-  gdb_byte reg_buf[8];
-  int offset, double_regnum;
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  /* P0 is the first 16 bits of VPR.  */
+  pseudo_to_raw_part(next_frame, buf, tdep->mve_vpr_regnum, 0);
+}
+
+static void
+arm_pseudo_write (gdbarch *gdbarch, const frame_info_ptr &next_frame,
+		  const int pseudo_reg_num,
+		  gdb::array_view<const gdb_byte> buf)
+{
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
-  gdb_assert (regnum >= num_regs);
-  regnum -= num_regs;
+  gdb_assert (pseudo_reg_num >= gdbarch_num_regs (gdbarch));
 
-  if (gdbarch_tdep (gdbarch)->have_neon_pseudos && regnum >= 32 && regnum < 48)
-    /* Quad-precision register.  */
-    arm_neon_quad_write (gdbarch, regcache, regnum - 32, buf);
+  if (is_q_pseudo (gdbarch, pseudo_reg_num))
+    {
+      /* Quad-precision register.  */
+      arm_neon_quad_write (gdbarch, next_frame,
+			   pseudo_reg_num - tdep->q_pseudo_base, buf);
+    }
+  else if (is_mve_pseudo (gdbarch, pseudo_reg_num))
+    arm_mve_pseudo_write (gdbarch, next_frame, pseudo_reg_num, buf);
   else
     {
+      int s_reg_index = pseudo_reg_num - tdep->s_pseudo_base;
+
       /* Single-precision register.  */
-      gdb_assert (regnum < 32);
+      gdb_assert (s_reg_index < 32);
 
       /* s0 is always the least significant half of d0.  */
+      int offset;
       if (gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG)
-	offset = (regnum & 1) ? 0 : 4;
+	offset = (s_reg_index & 1) ? 0 : 4;
       else
-	offset = (regnum & 1) ? 4 : 0;
+	offset = (s_reg_index & 1) ? 4 : 0;
 
-      xsnprintf (name_buf, sizeof (name_buf), "d%d", regnum >> 1);
-      double_regnum = user_reg_map_name_to_regnum (gdbarch, name_buf,
-						   strlen (name_buf));
+      std::string raw_reg_name = string_printf ("d%d", s_reg_index >> 1);
+      int double_regnum
+	= user_reg_map_name_to_regnum (gdbarch, raw_reg_name.c_str (),
+				       raw_reg_name.length ());
 
-      regcache->raw_read (double_regnum, reg_buf);
-      memcpy (reg_buf + offset, buf, 4);
-      regcache->raw_write (double_regnum, reg_buf);
+      pseudo_to_raw_part (next_frame, buf, double_regnum, offset);
     }
 }
 
 static struct value *
-value_of_arm_user_reg (struct frame_info *frame, const void *baton)
+value_of_arm_user_reg (const frame_info_ptr &frame, const void *baton)
 {
   const int *reg_p = (const int *) baton;
-  return value_of_register (*reg_p, frame);
+  return value_of_register (*reg_p, get_next_frame_sentinel_okay (frame));
 }
-
+
 static enum gdb_osabi
 arm_elf_osabi_sniffer (bfd *abfd)
 {
@@ -8765,9 +9989,10 @@ arm_elf_osabi_sniffer (bfd *abfd)
   if (elfosabi == ELFOSABI_ARM)
     /* GNU tools use this value.  Check note sections in this case,
        as well.  */
-    bfd_map_over_sections (abfd,
-			   generic_elf_osabi_sniff_abi_tag_sections, 
-			   &osabi);
+    {
+      for (asection *sect : gdb_bfd_sections (abfd))
+	generic_elf_osabi_sniff_abi_tag_sections (abfd, sect, &osabi);
+    }
 
   /* Anything else will be handled by the generic ELF sniffer.  */
   return osabi;
@@ -8775,7 +10000,7 @@ arm_elf_osabi_sniffer (bfd *abfd)
 
 static int
 arm_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
-			  struct reggroup *group)
+			 const struct reggroup *group)
 {
   /* FPS register's type is INT, but belongs to float_reggroup.  Beside
      this, FPS register belongs to save_regroup, restore_reggroup, and
@@ -8800,7 +10025,9 @@ arm_register_reggroup_p (struct gdbarch
 static void
 arm_register_g_packet_guesses (struct gdbarch *gdbarch)
 {
-  if (gdbarch_tdep (gdbarch)->is_m)
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (tdep->is_m)
     {
       const target_desc *tdesc;
 
@@ -8822,6 +10049,15 @@ arm_register_g_packet_guesses (struct gd
       register_remote_g_packet_guess (gdbarch,
 				      ARM_CORE_REGS_SIZE + ARM_VFP2_REGS_SIZE,
 				      tdesc);
+      /* M-profile plus MVE.  */
+      tdesc = arm_read_mprofile_description (ARM_M_TYPE_MVE);
+      register_remote_g_packet_guess (gdbarch, ARM_CORE_REGS_SIZE
+				      + ARM_VFP2_REGS_SIZE
+				      + ARM_INT_REGISTER_SIZE, tdesc);
+
+      /* M-profile system (stack pointers).  */
+      tdesc = arm_read_mprofile_description (ARM_M_TYPE_SYSTEM);
+      register_remote_g_packet_guess (gdbarch, 2 * ARM_INT_REGISTER_SIZE, tdesc);
     }
 
   /* Otherwise we don't have a useful guess.  */
@@ -8830,10 +10066,11 @@ arm_register_g_packet_guesses (struct gd
 /* Implement the code_of_frame_writable gdbarch method.  */
 
 static int
-arm_code_of_frame_writable (struct gdbarch *gdbarch, struct frame_info *frame)
+arm_code_of_frame_writable (struct gdbarch *gdbarch, const frame_info_ptr &frame)
 {
-  if (gdbarch_tdep (gdbarch)->is_m
-      && get_frame_type (frame) == SIGTRAMP_FRAME)
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
+
+  if (tdep->is_m && get_frame_type (frame) == SIGTRAMP_FRAME)
     {
       /* M-profile exception frames return to some magic PCs, where
 	 isn't writable at all.  */
@@ -8854,8 +10091,19 @@ arm_gnu_triplet_regexp (struct gdbarch *
   return gdbarch_bfd_arch_info (gdbarch)->arch_name;
 }
 
+/* Implement the "get_pc_address_flags" gdbarch method.  */
+
+static std::string
+arm_get_pc_address_flags (const frame_info_ptr &frame, CORE_ADDR pc)
+{
+  if (get_frame_pc_masked (frame))
+    return "PAC";
+
+  return "";
+}
+
 /* Initialize the current architecture based on INFO.  If possible,
-   re-use an architecture from ARCHES, which is a list of
+   reuse an architecture from ARCHES, which is a list of
    architectures already created during this debugging session.
 
    Called e.g. at program startup, when reading a core file, and when
@@ -8864,18 +10112,32 @@ arm_gnu_triplet_regexp (struct gdbarch *
 static struct gdbarch *
 arm_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
-  struct gdbarch_tdep *tdep;
-  struct gdbarch *gdbarch;
   struct gdbarch_list *best_arch;
   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;
+  tdesc_arch_data_up tdesc_data;
+  int i;
+  bool is_m = false;
+  bool have_sec_ext = false;
+  int vfp_register_count = 0;
+  bool have_s_pseudos = false, have_q_pseudos = false;
+  bool have_wmmx_registers = false;
+  bool have_neon = false;
+  bool have_fpa_registers = true;
   const struct target_desc *tdesc = info.target_desc;
+  bool have_vfp = false;
+  bool have_mve = false;
+  bool have_pacbti = false;
+  int mve_vpr_regnum = -1;
+  int register_count = ARM_NUM_REGS;
+  bool have_m_profile_msp = false;
+  int m_profile_msp_regnum = -1;
+  int m_profile_psp_regnum = -1;
+  int m_profile_msp_ns_regnum = -1;
+  int m_profile_psp_ns_regnum = -1;
+  int m_profile_msp_s_regnum = -1;
+  int m_profile_psp_s_regnum = -1;
+  int tls_regnum = 0;
 
   /* If we have an object to base this architecture on, try to determine
      its ABI.  */
@@ -8990,8 +10252,37 @@ arm_gdbarch_init (struct gdbarch_info in
 	      if (!tdesc_has_registers (tdesc)
 		  && (attr_arch == TAG_CPU_ARCH_V6_M
 		      || attr_arch == TAG_CPU_ARCH_V6S_M
+		      || attr_arch == TAG_CPU_ARCH_V7E_M
+		      || attr_arch == TAG_CPU_ARCH_V8M_BASE
+		      || attr_arch == TAG_CPU_ARCH_V8M_MAIN
+		      || attr_arch == TAG_CPU_ARCH_V8_1M_MAIN
 		      || attr_profile == 'M'))
-		is_m = 1;
+		is_m = true;
+
+	      /* Look for attributes that indicate support for ARMv8.1-m
+		 PACBTI.  */
+	      if (!tdesc_has_registers (tdesc) && is_m)
+		{
+		  int attr_pac_extension
+		    = bfd_elf_get_obj_attr_int (info.abfd, OBJ_ATTR_PROC,
+						Tag_PAC_extension);
+
+		  int attr_bti_extension
+		    = bfd_elf_get_obj_attr_int (info.abfd, OBJ_ATTR_PROC,
+						Tag_BTI_extension);
+
+		  int attr_pacret_use
+		    = bfd_elf_get_obj_attr_int (info.abfd, OBJ_ATTR_PROC,
+						Tag_PACRET_use);
+
+		  int attr_bti_use
+		    = bfd_elf_get_obj_attr_int (info.abfd, OBJ_ATTR_PROC,
+						Tag_BTI_use);
+
+		  if (attr_pac_extension != 0 || attr_bti_extension != 0
+		      || attr_pacret_use != 0 || attr_bti_use != 0)
+		    have_pacbti = true;
+		}
 #endif
 	    }
 
@@ -9049,35 +10340,61 @@ arm_gdbarch_init (struct gdbarch_info in
 	  if (feature == NULL)
 	    return NULL;
 	  else
-	    is_m = 1;
+	    is_m = true;
 	}
 
       tdesc_data = tdesc_data_alloc ();
 
       valid_p = 1;
       for (i = 0; i < ARM_SP_REGNUM; i++)
-	valid_p &= tdesc_numbered_register (feature, tdesc_data, i,
+	valid_p &= tdesc_numbered_register (feature, tdesc_data.get (), i,
 					    arm_register_names[i]);
-      valid_p &= tdesc_numbered_register_choices (feature, tdesc_data,
+      valid_p &= tdesc_numbered_register_choices (feature, tdesc_data.get (),
 						  ARM_SP_REGNUM,
 						  arm_sp_names);
-      valid_p &= tdesc_numbered_register_choices (feature, tdesc_data,
+      valid_p &= tdesc_numbered_register_choices (feature, tdesc_data.get (),
 						  ARM_LR_REGNUM,
 						  arm_lr_names);
-      valid_p &= tdesc_numbered_register_choices (feature, tdesc_data,
+      valid_p &= tdesc_numbered_register_choices (feature, tdesc_data.get (),
 						  ARM_PC_REGNUM,
 						  arm_pc_names);
       if (is_m)
-	valid_p &= tdesc_numbered_register (feature, tdesc_data,
+	valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
 					    ARM_PS_REGNUM, "xpsr");
       else
-	valid_p &= tdesc_numbered_register (feature, tdesc_data,
+	valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
 					    ARM_PS_REGNUM, "cpsr");
 
       if (!valid_p)
+	return NULL;
+
+      if (is_m)
 	{
-	  tdesc_data_cleanup (tdesc_data);
-	  return NULL;
+	  feature = tdesc_find_feature (tdesc,
+					"org.gnu.gdb.arm.m-system");
+	  if (feature != nullptr)
+	    {
+	      /* MSP */
+	      valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
+						  register_count, "msp");
+	      if (!valid_p)
+		{
+		  warning (_("M-profile m-system feature is missing required register msp."));
+		  return nullptr;
+		}
+	      have_m_profile_msp = true;
+	      m_profile_msp_regnum = register_count++;
+
+	      /* PSP */
+	      valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
+						  register_count, "psp");
+	      if (!valid_p)
+		{
+		  warning (_("M-profile m-system feature is missing required register psp."));
+		  return nullptr;
+		}
+	      m_profile_psp_regnum = register_count++;
+	    }
 	}
 
       feature = tdesc_find_feature (tdesc,
@@ -9086,16 +10403,13 @@ arm_gdbarch_init (struct gdbarch_info in
 	{
 	  valid_p = 1;
 	  for (i = ARM_F0_REGNUM; i <= ARM_FPS_REGNUM; i++)
-	    valid_p &= tdesc_numbered_register (feature, tdesc_data, i,
+	    valid_p &= tdesc_numbered_register (feature, tdesc_data.get (), i,
 						arm_register_names[i]);
 	  if (!valid_p)
-	    {
-	      tdesc_data_cleanup (tdesc_data);
-	      return NULL;
-	    }
+	    return NULL;
 	}
       else
-	have_fpa_registers = 0;
+	have_fpa_registers = false;
 
       feature = tdesc_find_feature (tdesc,
 				    "org.gnu.gdb.xscale.iwmmxt");
@@ -9111,27 +10425,24 @@ arm_gdbarch_init (struct gdbarch_info in
 	  valid_p = 1;
 	  for (i = ARM_WR0_REGNUM; i <= ARM_WR15_REGNUM; i++)
 	    valid_p
-	      &= tdesc_numbered_register (feature, tdesc_data, i,
+	      &= tdesc_numbered_register (feature, tdesc_data.get (), i,
 					  iwmmxt_names[i - ARM_WR0_REGNUM]);
 
 	  /* Check for the control registers, but do not fail if they
 	     are missing.  */
 	  for (i = ARM_WC0_REGNUM; i <= ARM_WCASF_REGNUM; i++)
-	    tdesc_numbered_register (feature, tdesc_data, i,
+	    tdesc_numbered_register (feature, tdesc_data.get (), i,
 				     iwmmxt_names[i - ARM_WR0_REGNUM]);
 
 	  for (i = ARM_WCGR0_REGNUM; i <= ARM_WCGR3_REGNUM; i++)
 	    valid_p
-	      &= tdesc_numbered_register (feature, tdesc_data, i,
+	      &= tdesc_numbered_register (feature, tdesc_data.get (), i,
 					  iwmmxt_names[i - ARM_WR0_REGNUM]);
 
 	  if (!valid_p)
-	    {
-	      tdesc_data_cleanup (tdesc_data);
-	      return NULL;
-	    }
+	    return NULL;
 
-	  have_wmmx_registers = 1;
+	  have_wmmx_registers = true;
 	}
 
       /* If we have a VFP unit, check whether the single precision registers
@@ -9153,7 +10464,7 @@ arm_gdbarch_init (struct gdbarch_info in
 	  valid_p = 1;
 	  for (i = 0; i < 32; i++)
 	    {
-	      valid_p &= tdesc_numbered_register (feature, tdesc_data,
+	      valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
 						  ARM_D0_REGNUM + i,
 						  vfp_double_names[i]);
 	      if (!valid_p)
@@ -9163,16 +10474,15 @@ arm_gdbarch_init (struct gdbarch_info in
 	    valid_p = 1;
 
 	  /* Also require FPSCR.  */
-	  valid_p &= tdesc_numbered_register (feature, tdesc_data,
+	  valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
 					      ARM_FPSCR_REGNUM, "fpscr");
 	  if (!valid_p)
-	    {
-	      tdesc_data_cleanup (tdesc_data);
-	      return NULL;
-	    }
+	    return NULL;
+
+	  have_vfp = true;
 
 	  if (tdesc_unnumbered_register (feature, "s0") == 0)
-	    have_vfp_pseudos = 1;
+	    have_s_pseudos = true;
 
 	  vfp_register_count = i;
 
@@ -9185,19 +10495,128 @@ arm_gdbarch_init (struct gdbarch_info in
 	    {
 	      /* NEON requires 32 double-precision registers.  */
 	      if (i != 32)
-		{
-		  tdesc_data_cleanup (tdesc_data);
-		  return NULL;
-		}
+		return NULL;
 
 	      /* If there are quad registers defined by the stub, use
 		 their type; otherwise (normally) provide them with
 		 the default type.  */
 	      if (tdesc_unnumbered_register (feature, "q0") == 0)
-		have_neon_pseudos = 1;
+		have_q_pseudos = true;
+	    }
+	}
+
+      /* Check for the TLS register feature.  */
+      feature = tdesc_find_feature (tdesc, "org.gnu.gdb.arm.tls");
+      if (feature != nullptr)
+	{
+	  valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
+					      register_count, "tpidruro");
+	  if (!valid_p)
+	    return nullptr;
 
-	      have_neon = 1;
+	  tls_regnum = register_count;
+	  register_count++;
+	}
+
+      /* Check for MVE after all the checks for GPR's, VFP and Neon.
+	 MVE (Helium) is an M-profile extension.  */
+      if (is_m)
+	{
+	  /* Do we have the MVE feature?  */
+	  feature = tdesc_find_feature (tdesc,"org.gnu.gdb.arm.m-profile-mve");
+
+	  if (feature != nullptr)
+	    {
+	      /* If we have MVE, we must always have the VPR register.  */
+	      valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
+						  register_count, "vpr");
+	      if (!valid_p)
+		{
+		  warning (_("MVE feature is missing required register vpr."));
+		  return nullptr;
+		}
+
+	      have_mve = true;
+	      mve_vpr_regnum = register_count;
+	      register_count++;
+
+	      /* We can't have Q pseudo registers available here, as that
+		 would mean we have NEON features, and that is only available
+		 on A and R profiles.  */
+	      gdb_assert (!have_q_pseudos);
+
+	      /* Given we have a M-profile target description, if MVE is
+		 enabled and there are VFP registers, we should have Q
+		 pseudo registers (Q0 ~ Q7).  */
+	      if (have_vfp)
+		have_q_pseudos = true;
+	    }
+
+	  /* Do we have the ARMv8.1-m PACBTI feature?  */
+	  feature = tdesc_find_feature (tdesc,
+					"org.gnu.gdb.arm.m-profile-pacbti");
+	  if (feature != nullptr)
+	    {
+	      /* By advertising this feature, the target acknowledges the
+		 presence of the ARMv8.1-m PACBTI extensions.
+
+		 We don't care for any particular registers in this group, so
+		 the target is free to include whatever it deems appropriate.
+
+		 The expectation is for this feature to include the PAC
+		 keys.  */
+	      have_pacbti = true;
+	    }
+
+	  /* Do we have the Security extension?  */
+	  feature = tdesc_find_feature (tdesc,
+					"org.gnu.gdb.arm.secext");
+	  if (feature != nullptr)
+	    {
+	      /* Secure/Non-secure stack pointers.  */
+	      /* MSP_NS */
+	      valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
+						 register_count, "msp_ns");
+	      if (!valid_p)
+		{
+		  warning (_("M-profile secext feature is missing required register msp_ns."));
+		  return nullptr;
+		}
+	      m_profile_msp_ns_regnum = register_count++;
+
+	      /* PSP_NS */
+	      valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
+						 register_count, "psp_ns");
+	      if (!valid_p)
+		{
+		  warning (_("M-profile secext feature is missing required register psp_ns."));
+		  return nullptr;
+		}
+	      m_profile_psp_ns_regnum = register_count++;
+
+	      /* MSP_S */
+	      valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
+						 register_count, "msp_s");
+	      if (!valid_p)
+		{
+		  warning (_("M-profile secext feature is missing required register msp_s."));
+		  return nullptr;
+		}
+	      m_profile_msp_s_regnum = register_count++;
+
+	      /* PSP_S */
+	      valid_p &= tdesc_numbered_register (feature, tdesc_data.get (),
+						 register_count, "psp_s");
+	      if (!valid_p)
+		{
+		  warning (_("M-profile secext feature is missing required register psp_s."));
+		  return nullptr;
+		}
+	      m_profile_psp_s_regnum = register_count++;
+
+	      have_sec_ext = true;
 	    }
+
 	}
     }
 
@@ -9206,12 +10625,13 @@ arm_gdbarch_init (struct gdbarch_info in
        best_arch != NULL;
        best_arch = gdbarch_list_lookup_by_info (best_arch->next, &info))
     {
-      if (arm_abi != ARM_ABI_AUTO
-	  && arm_abi != gdbarch_tdep (best_arch->gdbarch)->arm_abi)
+      arm_gdbarch_tdep *tdep
+	= gdbarch_tdep<arm_gdbarch_tdep> (best_arch->gdbarch);
+
+      if (arm_abi != ARM_ABI_AUTO && arm_abi != tdep->arm_abi)
 	continue;
 
-      if (fp_model != ARM_FLOAT_AUTO
-	  && fp_model != gdbarch_tdep (best_arch->gdbarch)->fp_model)
+      if (fp_model != ARM_FLOAT_AUTO && fp_model != tdep->fp_model)
 	continue;
 
       /* There are various other properties in tdep that we do not
@@ -9220,7 +10640,12 @@ arm_gdbarch_init (struct gdbarch_info in
 	 automatically disqualified.  */
 
       /* Do check is_m, though, since it might come from the binary.  */
-      if (is_m != gdbarch_tdep (best_arch->gdbarch)->is_m)
+      if (is_m != tdep->is_m)
+	continue;
+
+      /* Also check for ARMv8.1-m PACBTI support, since it might come from
+	 the binary.  */
+      if (have_pacbti != tdep->have_pacbti)
 	continue;
 
       /* Found a match.  */
@@ -9228,29 +10653,49 @@ arm_gdbarch_init (struct gdbarch_info in
     }
 
   if (best_arch != NULL)
-    {
-      if (tdesc_data != NULL)
-	tdesc_data_cleanup (tdesc_data);
-      return best_arch->gdbarch;
-    }
+    return best_arch->gdbarch;
 
-  tdep = XCNEW (struct gdbarch_tdep);
-  gdbarch = gdbarch_alloc (&info, tdep);
+  gdbarch *gdbarch
+    = gdbarch_alloc (&info, gdbarch_tdep_up (new arm_gdbarch_tdep));
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   /* Record additional information about the architecture we are defining.
      These are gdbarch discriminators, like the OSABI.  */
   tdep->arm_abi = arm_abi;
   tdep->fp_model = fp_model;
   tdep->is_m = is_m;
+  tdep->have_sec_ext = have_sec_ext;
   tdep->have_fpa_registers = have_fpa_registers;
   tdep->have_wmmx_registers = have_wmmx_registers;
   gdb_assert (vfp_register_count == 0
 	      || vfp_register_count == 16
 	      || vfp_register_count == 32);
   tdep->vfp_register_count = vfp_register_count;
-  tdep->have_vfp_pseudos = have_vfp_pseudos;
-  tdep->have_neon_pseudos = have_neon_pseudos;
+  tdep->have_s_pseudos = have_s_pseudos;
+  tdep->have_q_pseudos = have_q_pseudos;
   tdep->have_neon = have_neon;
+  tdep->tls_regnum = tls_regnum;
+
+  /* Adjust the MVE feature settings.  */
+  if (have_mve)
+    {
+      tdep->have_mve = true;
+      tdep->mve_vpr_regnum = mve_vpr_regnum;
+    }
+
+  /* Adjust the PACBTI feature settings.  */
+  tdep->have_pacbti = have_pacbti;
+
+  /* Adjust the M-profile stack pointers settings.  */
+  if (have_m_profile_msp)
+    {
+      tdep->m_profile_msp_regnum = m_profile_msp_regnum;
+      tdep->m_profile_psp_regnum = m_profile_psp_regnum;
+      tdep->m_profile_msp_ns_regnum = m_profile_msp_ns_regnum;
+      tdep->m_profile_psp_ns_regnum = m_profile_psp_ns_regnum;
+      tdep->m_profile_msp_s_regnum = m_profile_msp_s_regnum;
+      tdep->m_profile_psp_s_regnum = m_profile_psp_s_regnum;
+    }
 
   arm_register_g_packet_guesses (gdbarch);
 
@@ -9274,8 +10719,7 @@ arm_gdbarch_init (struct gdbarch_info in
       break;
 
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("arm_gdbarch_init: bad byte order for float format"));
+      internal_error (_("arm_gdbarch_init: bad byte order for float format"));
     }
 
   /* On ARM targets char defaults to unsigned.  */
@@ -9293,7 +10737,9 @@ arm_gdbarch_init (struct gdbarch_info in
   /* Note: for displaced stepping, this includes the breakpoint, and one word
      of additional scratch space.  This setting isn't used for anything beside
      displaced stepping at present.  */
-  set_gdbarch_max_insn_length (gdbarch, 4 * ARM_DISPLACED_MODIFIED_INSNS);
+  set_gdbarch_displaced_step_buffer_length
+    (gdbarch, 4 * ARM_DISPLACED_MODIFIED_INSNS);
+  set_gdbarch_max_insn_length (gdbarch, 4);
 
   /* This should be low enough for everything.  */
   tdep->lowest_pc = 0x20;
@@ -9337,13 +10783,13 @@ arm_gdbarch_init (struct gdbarch_info in
   /* Information about registers, etc.  */
   set_gdbarch_sp_regnum (gdbarch, ARM_SP_REGNUM);
   set_gdbarch_pc_regnum (gdbarch, ARM_PC_REGNUM);
-  set_gdbarch_num_regs (gdbarch, ARM_NUM_REGS);
+  set_gdbarch_num_regs (gdbarch, register_count);
   set_gdbarch_register_type (gdbarch, arm_register_type);
   set_gdbarch_register_reggroup_p (gdbarch, arm_register_reggroup_p);
 
   /* This "info float" is FPA-specific.  Use the generic version if we
      do not have FPA.  */
-  if (gdbarch_tdep (gdbarch)->have_fpa_registers)
+  if (tdep->have_fpa_registers)
     set_gdbarch_print_float_info (gdbarch, arm_print_float_info);
 
   /* Internal <-> external register number maps.  */
@@ -9353,7 +10799,7 @@ arm_gdbarch_init (struct gdbarch_info in
   set_gdbarch_register_name (gdbarch, arm_register_name);
 
   /* Returning results.  */
-  set_gdbarch_return_value (gdbarch, arm_return_value);
+  set_gdbarch_return_value_as_value (gdbarch, arm_return_value);
 
   /* Disassembly.  */
   set_gdbarch_print_insn (gdbarch, gdb_print_insn_arm);
@@ -9420,31 +10866,70 @@ arm_gdbarch_init (struct gdbarch_info in
       set_gdbarch_long_double_format (gdbarch, floatformats_ieee_double);
     }
 
-  if (have_vfp_pseudos)
-    {
-      /* NOTE: These are the only pseudo registers used by
-	 the ARM target at the moment.  If more are added, a
-	 little more care in numbering will be needed.  */
-
-      int num_pseudos = 32;
-      if (have_neon_pseudos)
-	num_pseudos += 16;
-      set_gdbarch_num_pseudo_regs (gdbarch, num_pseudos);
-      set_gdbarch_pseudo_register_read (gdbarch, arm_pseudo_read);
-      set_gdbarch_pseudo_register_write (gdbarch, arm_pseudo_write);
-    }
+  /* Hook used to decorate frames with signed return addresses, only available
+     for ARMv8.1-m PACBTI.  */
+  if (is_m && have_pacbti)
+    set_gdbarch_get_pc_address_flags (gdbarch, arm_get_pc_address_flags);
 
-  if (tdesc_data)
+  if (tdesc_data != nullptr)
     {
       set_tdesc_pseudo_register_name (gdbarch, arm_register_name);
 
-      tdesc_use_registers (gdbarch, tdesc, tdesc_data);
+      tdesc_use_registers (gdbarch, tdesc, std::move (tdesc_data));
+      register_count = gdbarch_num_regs (gdbarch);
 
       /* Override tdesc_register_type to adjust the types of VFP
 	 registers for NEON.  */
       set_gdbarch_register_type (gdbarch, arm_register_type);
     }
 
+  /* Initialize the pseudo register data.  */
+  int num_pseudos = 0;
+  if (tdep->have_s_pseudos)
+    {
+      /* VFP single precision pseudo registers (S0~S31).  */
+      tdep->s_pseudo_base = register_count;
+      tdep->s_pseudo_count = 32;
+      num_pseudos += tdep->s_pseudo_count;
+
+      if (tdep->have_q_pseudos)
+	{
+	  /* NEON quad precision pseudo registers (Q0~Q15).  */
+	  tdep->q_pseudo_base = register_count + num_pseudos;
+
+	  if (have_neon)
+	    tdep->q_pseudo_count = 16;
+	  else if (have_mve)
+	    tdep->q_pseudo_count = ARM_MVE_NUM_Q_REGS;
+
+	  num_pseudos += tdep->q_pseudo_count;
+	}
+    }
+
+  /* Do we have any MVE pseudo registers?  */
+  if (have_mve)
+    {
+      tdep->mve_pseudo_base = register_count + num_pseudos;
+      tdep->mve_pseudo_count = 1;
+      num_pseudos += tdep->mve_pseudo_count;
+    }
+
+  /* Do we have any ARMv8.1-m PACBTI pseudo registers.  */
+  if (have_pacbti)
+    {
+      tdep->pacbti_pseudo_base = register_count + num_pseudos;
+      tdep->pacbti_pseudo_count = 1;
+      num_pseudos += tdep->pacbti_pseudo_count;
+    }
+
+  /* Set some pseudo register hooks, if we have pseudo registers.  */
+  if (tdep->have_s_pseudos || have_mve || have_pacbti)
+    {
+      set_gdbarch_num_pseudo_regs (gdbarch, num_pseudos);
+      set_gdbarch_pseudo_register_read_value (gdbarch, arm_pseudo_read_value);
+      set_gdbarch_pseudo_register_write (gdbarch, arm_pseudo_write);
+    }
+
   /* Add standard register aliases.  We add aliases even for those
      names which are used by the current architecture - it's simpler,
      and does no harm, since nothing ever lists user registers.  */
@@ -9463,24 +10948,74 @@ arm_gdbarch_init (struct gdbarch_info in
 static void
 arm_dump_tdep (struct gdbarch *gdbarch, struct ui_file *file)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   if (tdep == NULL)
     return;
 
-  fprintf_unfiltered (file, _("arm_dump_tdep: Lowest pc = 0x%lx"),
-		      (unsigned long) tdep->lowest_pc);
+  gdb_printf (file, _("arm_dump_tdep: fp_model = %i\n"),
+	      (int) tdep->fp_model);
+  gdb_printf (file, _("arm_dump_tdep: have_fpa_registers = %i\n"),
+	      (int) tdep->have_fpa_registers);
+  gdb_printf (file, _("arm_dump_tdep: have_wmmx_registers = %i\n"),
+	      (int) tdep->have_wmmx_registers);
+  gdb_printf (file, _("arm_dump_tdep: vfp_register_count = %i\n"),
+	      (int) tdep->vfp_register_count);
+  gdb_printf (file, _("arm_dump_tdep: have_s_pseudos = %s\n"),
+	      tdep->have_s_pseudos ? "true" : "false");
+  gdb_printf (file, _("arm_dump_tdep: s_pseudo_base = %i\n"),
+	      (int) tdep->s_pseudo_base);
+  gdb_printf (file, _("arm_dump_tdep: s_pseudo_count = %i\n"),
+	      (int) tdep->s_pseudo_count);
+  gdb_printf (file, _("arm_dump_tdep: have_q_pseudos = %s\n"),
+	      tdep->have_q_pseudos ? "true" : "false");
+  gdb_printf (file, _("arm_dump_tdep: q_pseudo_base = %i\n"),
+	      (int) tdep->q_pseudo_base);
+  gdb_printf (file, _("arm_dump_tdep: q_pseudo_count = %i\n"),
+	      (int) tdep->q_pseudo_count);
+  gdb_printf (file, _("arm_dump_tdep: have_neon = %i\n"),
+	      (int) tdep->have_neon);
+  gdb_printf (file, _("arm_dump_tdep: have_mve = %s\n"),
+	      tdep->have_mve ? "yes" : "no");
+  gdb_printf (file, _("arm_dump_tdep: mve_vpr_regnum = %i\n"),
+	      tdep->mve_vpr_regnum);
+  gdb_printf (file, _("arm_dump_tdep: mve_pseudo_base = %i\n"),
+	      tdep->mve_pseudo_base);
+  gdb_printf (file, _("arm_dump_tdep: mve_pseudo_count = %i\n"),
+	      tdep->mve_pseudo_count);
+  gdb_printf (file, _("arm_dump_tdep: m_profile_msp_regnum = %i\n"),
+	      tdep->m_profile_msp_regnum);
+  gdb_printf (file, _("arm_dump_tdep: m_profile_psp_regnum = %i\n"),
+	      tdep->m_profile_psp_regnum);
+  gdb_printf (file, _("arm_dump_tdep: m_profile_msp_ns_regnum = %i\n"),
+	      tdep->m_profile_msp_ns_regnum);
+  gdb_printf (file, _("arm_dump_tdep: m_profile_psp_ns_regnum = %i\n"),
+	      tdep->m_profile_psp_ns_regnum);
+  gdb_printf (file, _("arm_dump_tdep: m_profile_msp_s_regnum = %i\n"),
+	      tdep->m_profile_msp_s_regnum);
+  gdb_printf (file, _("arm_dump_tdep: m_profile_psp_s_regnum = %i\n"),
+	      tdep->m_profile_psp_s_regnum);
+  gdb_printf (file, _("arm_dump_tdep: Lowest pc = 0x%lx\n"),
+	      (unsigned long) tdep->lowest_pc);
+  gdb_printf (file, _("arm_dump_tdep: have_pacbti = %s\n"),
+	      tdep->have_pacbti ? "yes" : "no");
+  gdb_printf (file, _("arm_dump_tdep: pacbti_pseudo_base = %i\n"),
+	      tdep->pacbti_pseudo_base);
+  gdb_printf (file, _("arm_dump_tdep: pacbti_pseudo_count = %i\n"),
+	      tdep->pacbti_pseudo_count);
+  gdb_printf (file, _("arm_dump_tdep: is_m = %s\n"),
+	      tdep->is_m ? "yes" : "no");
 }
 
 #if GDB_SELF_TEST
 namespace selftests
 {
 static void arm_record_test (void);
+static void arm_analyze_prologue_test ();
 }
 #endif
 
-void
-_initialize_arm_tdep (void)
+INIT_GDB_FILE (arm_tdep)
 {
   long length;
   int i, j;
@@ -9490,7 +11025,7 @@ _initialize_arm_tdep (void)
   gdbarch_register (bfd_arch_arm, arm_gdbarch_init, arm_dump_tdep);
 
   /* Add ourselves to objfile event chain.  */
-  gdb::observers::new_objfile.attach (arm_exidx_new_objfile);
+  gdb::observers::new_objfile.attach (arm_exidx_new_objfile, "arm-tdep");
 
   /* Register an ELF OS ABI sniffer for ARM binaries.  */
   gdbarch_register_osabi_sniffer (bfd_arch_arm,
@@ -9498,32 +11033,31 @@ _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_setshow_prefix_cmd ("arm", no_class,
+			  _("Various ARM-specific commands."),
+			  _("Various ARM-specific commands."),
+			  &setarmcmdlist, &showarmcmdlist,
+			  &setlist, &showlist);
 
-  add_prefix_cmd ("arm", no_class, show_arm_command,
-		  _("Various ARM-specific commands."),
-		  &showarmcmdlist, "show arm ", 0, &showlist);
-
-
-  arm_disassembler_options = xstrdup ("reg-names-std");
+  arm_disassembler_options = "reg-names-std";
   const disasm_options_t *disasm_options
     = &disassembler_options_arm ()->options;
   int num_disassembly_styles = 0;
   for (i = 0; disasm_options->name[i] != NULL; i++)
-    if (CONST_STRNEQ (disasm_options->name[i], "reg-names-"))
+    if (startswith (disasm_options->name[i], "reg-names-"))
       num_disassembly_styles++;
 
   /* Initialize the array that will be passed to add_setshow_enum_cmd().  */
   valid_disassembly_styles = XNEWVEC (const char *,
 				      num_disassembly_styles + 1);
   for (i = j = 0; disasm_options->name[i] != NULL; i++)
-    if (CONST_STRNEQ (disasm_options->name[i], "reg-names-"))
+    if (startswith (disasm_options->name[i], "reg-names-"))
       {
 	size_t offset = strlen ("reg-names-");
 	const char *style = disasm_options->name[i];
 	valid_disassembly_styles[j++] = &style[offset];
+	if (strcmp (&style[offset], "std") == 0)
+	  disassembly_style = &style[offset];
 	length = snprintf (rdptr, rest, "%s - %s\n", &style[offset],
 			   disasm_options->description[i]);
 	rdptr += length;
@@ -9590,6 +11124,15 @@ vfp - VFP co-processor."),
 			NULL, NULL, arm_show_force_mode,
 			&setarmcmdlist, &showarmcmdlist);
 
+  /* Add a command to stop triggering security exceptions when
+     unwinding exception stacks.  */
+  add_setshow_boolean_cmd ("unwind-secure-frames", no_class, &arm_unwind_secure_frames,
+			   _("Set usage of non-secure to secure exception stack unwinding."),
+			   _("Show usage of non-secure to secure exception stack unwinding."),
+			   _("When on, the debugger can trigger memory access traps."),
+			   NULL, arm_show_unwind_secure_frames,
+			   &setarmcmdlist, &showarmcmdlist);
+
   /* Debugging flag.  */
   add_setshow_boolean_cmd ("arm", class_maintenance, &arm_debug,
 			   _("Set ARM debugging."),
@@ -9601,6 +11144,7 @@ vfp - VFP co-processor."),
 
 #if GDB_SELF_TEST
   selftests::register_test ("arm-record", selftests::arm_record_test);
+  selftests::register_test ("arm_analyze_prologue", selftests::arm_analyze_prologue_test);
 #endif
 
 }
@@ -9617,33 +11161,33 @@ vfp - VFP co-processor."),
 #define INSN_S_L_BIT_NUM 20
 
 #define REG_ALLOC(REGS, LENGTH, RECORD_BUF) \
-        do  \
-          { \
-            unsigned int reg_len = LENGTH; \
-            if (reg_len) \
-              { \
-                REGS = XNEWVEC (uint32_t, reg_len); \
-                memcpy(&REGS[0], &RECORD_BUF[0], sizeof(uint32_t)*LENGTH); \
-              } \
-          } \
-        while (0)
+	do  \
+	  { \
+	    unsigned int reg_len = LENGTH; \
+	    if (reg_len) \
+	      { \
+		REGS = XNEWVEC (uint32_t, reg_len); \
+		memcpy(&REGS[0], &RECORD_BUF[0], sizeof(uint32_t)*LENGTH); \
+	      } \
+	  } \
+	while (0)
 
 #define MEM_ALLOC(MEMS, LENGTH, RECORD_BUF) \
-        do  \
-          { \
-            unsigned int mem_len = LENGTH; \
-            if (mem_len) \
-            { \
-              MEMS =  XNEWVEC (struct arm_mem_r, mem_len);  \
-              memcpy(&MEMS->len, &RECORD_BUF[0], \
-                     sizeof(struct arm_mem_r) * LENGTH); \
-            } \
-          } \
-          while (0)
+	do  \
+	  { \
+	    unsigned int mem_len = LENGTH; \
+	    if (mem_len) \
+	      { \
+		MEMS =  XNEWVEC (struct arm_mem_r, mem_len);  \
+		memcpy(&MEMS->len, &RECORD_BUF[0], \
+		       sizeof(struct arm_mem_r) * LENGTH); \
+	      } \
+	  } \
+	  while (0)
 
 /* Checks whether insn is already recorded or yet to be decoded. (boolean expression).  */
 #define INSN_RECORDED(ARM_RECORD) \
-        (0 != (ARM_RECORD)->reg_rec_count || 0 != (ARM_RECORD)->mem_rec_count)
+	(0 != (ARM_RECORD)->reg_rec_count || 0 != (ARM_RECORD)->mem_rec_count)
 
 /* ARM memory record structure.  */
 struct arm_mem_r
@@ -9657,7 +11201,7 @@ struct arm_mem_r
    contains list of to-be-modified registers and
    memory blocks (on return from decode_insn()).  */
 
-typedef struct insn_decode_record_t
+struct arm_insn_decode_record
 {
   struct gdbarch *gdbarch;
   struct regcache *regcache;
@@ -9670,7 +11214,7 @@ typedef struct insn_decode_record_t
   uint32_t reg_rec_count;       /* No of reg records.  */
   uint32_t *arm_regs;           /* Registers to be saved for this record.  */
   struct arm_mem_r *arm_mems;   /* Memory to be saved for this record.  */
-} insn_decode_record;
+};
 
 
 /* Checks ARM SBZ and SBO mandatory fields.  */
@@ -9689,9 +11233,9 @@ sbo_sbz (uint32_t insn, uint32_t bit_num
   while (ones)
     {
       if (!(ones & sbo))
-        {
-          return 0;
-        }
+	{
+	  return 0;
+	}
       ones = ones >> 1;
     }
   return 1;
@@ -9703,23 +11247,23 @@ enum arm_record_result
   ARM_RECORD_FAILURE = 1
 };
 
-typedef enum
+enum arm_record_strx_t
 {
   ARM_RECORD_STRH=1,
   ARM_RECORD_STRD
-} arm_record_strx_t;
+};
 
-typedef enum
+enum record_type_t
 {
   ARM_RECORD=1,
   THUMB_RECORD,
   THUMB2_RECORD
-} record_type_t;
+};
 
 
 static int
-arm_record_strx (insn_decode_record *arm_insn_r, uint32_t *record_buf, 
-                 uint32_t *record_buf_mem, arm_record_strx_t str_type)
+arm_record_strx (arm_insn_decode_record *arm_insn_r, uint32_t *record_buf, 
+		 uint32_t *record_buf_mem, arm_record_strx_t str_type)
 {
 
   struct regcache *reg_cache = arm_insn_r->regcache;
@@ -9738,36 +11282,36 @@ arm_record_strx (insn_decode_record *arm
       immed_high = bits (arm_insn_r->arm_insn, 8, 11);
       reg_src1 = bits (arm_insn_r->arm_insn, 16, 19);
       regcache_raw_read_unsigned (reg_cache, reg_src1,
-                                  &u_regval[0]);
+				  &u_regval[0]);
       if (ARM_PC_REGNUM == reg_src1)
-        {
-          /* If R15 was used as Rn, hence current PC+8.  */
-          u_regval[0] = u_regval[0] + 8;
-        }
+	{
+	  /* If R15 was used as Rn, hence current PC+8.  */
+	  u_regval[0] = u_regval[0] + 8;
+	}
       offset_8 = (immed_high << 4) | immed_low;
       /* Calculate target store address.  */
       if (14 == arm_insn_r->opcode)
-        {
-          tgt_mem_addr = u_regval[0] + offset_8;
-        }
-      else
-        {
-          tgt_mem_addr = u_regval[0] - offset_8;
-        }
+	{
+	  tgt_mem_addr = u_regval[0] + offset_8;
+	}
+      else
+	{
+	  tgt_mem_addr = u_regval[0] - offset_8;
+	}
       if (ARM_RECORD_STRH == str_type)
-        {
-          record_buf_mem[0] = 2;
-          record_buf_mem[1] = tgt_mem_addr;
-          arm_insn_r->mem_rec_count = 1;
-        }
+	{
+	  record_buf_mem[0] = 2;
+	  record_buf_mem[1] = tgt_mem_addr;
+	  arm_insn_r->mem_rec_count = 1;
+	}
       else if (ARM_RECORD_STRD == str_type)
-        {
-          record_buf_mem[0] = 4;
-          record_buf_mem[1] = tgt_mem_addr;
-          record_buf_mem[2] = 4;
-          record_buf_mem[3] = tgt_mem_addr + 4;
-          arm_insn_r->mem_rec_count = 2;
-        }
+	{
+	  record_buf_mem[0] = 4;
+	  record_buf_mem[1] = tgt_mem_addr;
+	  record_buf_mem[2] = 4;
+	  record_buf_mem[3] = tgt_mem_addr + 4;
+	  arm_insn_r->mem_rec_count = 2;
+	}
     }
   else if (12 == arm_insn_r->opcode || 8 == arm_insn_r->opcode)
     {
@@ -9779,36 +11323,36 @@ arm_record_strx (insn_decode_record *arm
       regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval[0]);
       regcache_raw_read_unsigned (reg_cache, reg_src2, &u_regval[1]);
       if (15 == reg_src2)
-        {
-          /* If R15 was used as Rn, hence current PC+8.  */
-          u_regval[0] = u_regval[0] + 8;
-        }
+	{
+	  /* If R15 was used as Rn, hence current PC+8.  */
+	  u_regval[0] = u_regval[0] + 8;
+	}
       /* Calculate target store address, Rn +/- Rm, register offset.  */
       if (12 == arm_insn_r->opcode)
-        {
-          tgt_mem_addr = u_regval[0] + u_regval[1];
-        }
-      else
-        {
-          tgt_mem_addr = u_regval[1] - u_regval[0];
-        }
+	{
+	  tgt_mem_addr = u_regval[0] + u_regval[1];
+	}
+      else
+	{
+	  tgt_mem_addr = u_regval[1] - u_regval[0];
+	}
       if (ARM_RECORD_STRH == str_type)
-        {
-          record_buf_mem[0] = 2;
-          record_buf_mem[1] = tgt_mem_addr;
-          arm_insn_r->mem_rec_count = 1;
-        }
+	{
+	  record_buf_mem[0] = 2;
+	  record_buf_mem[1] = tgt_mem_addr;
+	  arm_insn_r->mem_rec_count = 1;
+	}
       else if (ARM_RECORD_STRD == str_type)
-        {
-          record_buf_mem[0] = 4;
-          record_buf_mem[1] = tgt_mem_addr;
-          record_buf_mem[2] = 4;
-          record_buf_mem[3] = tgt_mem_addr + 4;
-          arm_insn_r->mem_rec_count = 2;
-        }
+	{
+	  record_buf_mem[0] = 4;
+	  record_buf_mem[1] = tgt_mem_addr;
+	  record_buf_mem[2] = 4;
+	  record_buf_mem[3] = tgt_mem_addr + 4;
+	  arm_insn_r->mem_rec_count = 2;
+	}
     }
   else if (11 == arm_insn_r->opcode || 15 == arm_insn_r->opcode
-           || 2 == arm_insn_r->opcode  || 6 == arm_insn_r->opcode)
+	   || 2 == arm_insn_r->opcode  || 6 == arm_insn_r->opcode)
     {
       /* 3) Store, immediate pre-indexed.  */
       /* 5) Store, immediate post-indexed.  */
@@ -9819,33 +11363,33 @@ arm_record_strx (insn_decode_record *arm
       regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval[0]);
       /* Calculate target store address, Rn +/- Rm, register offset.  */
       if (15 == arm_insn_r->opcode || 6 == arm_insn_r->opcode)
-        {
-          tgt_mem_addr = u_regval[0] + offset_8;
-        }
-      else
-        {
-          tgt_mem_addr = u_regval[0] - offset_8;
-        }
+	{
+	  tgt_mem_addr = u_regval[0] + offset_8;
+	}
+      else
+	{
+	  tgt_mem_addr = u_regval[0] - offset_8;
+	}
       if (ARM_RECORD_STRH == str_type)
-        {
-          record_buf_mem[0] = 2;
-          record_buf_mem[1] = tgt_mem_addr;
-          arm_insn_r->mem_rec_count = 1;
-        }
+	{
+	  record_buf_mem[0] = 2;
+	  record_buf_mem[1] = tgt_mem_addr;
+	  arm_insn_r->mem_rec_count = 1;
+	}
       else if (ARM_RECORD_STRD == str_type)
-        {
-          record_buf_mem[0] = 4;
-          record_buf_mem[1] = tgt_mem_addr;
-          record_buf_mem[2] = 4;
-          record_buf_mem[3] = tgt_mem_addr + 4;
-          arm_insn_r->mem_rec_count = 2;
-        }
+	{
+	  record_buf_mem[0] = 4;
+	  record_buf_mem[1] = tgt_mem_addr;
+	  record_buf_mem[2] = 4;
+	  record_buf_mem[3] = tgt_mem_addr + 4;
+	  arm_insn_r->mem_rec_count = 2;
+	}
       /* Record Rn also as it changes.  */
       *(record_buf) = bits (arm_insn_r->arm_insn, 16, 19);
       arm_insn_r->reg_rec_count = 1;
     }
   else if (9 == arm_insn_r->opcode || 13 == arm_insn_r->opcode
-           || 0 == arm_insn_r->opcode || 4 == arm_insn_r->opcode)
+	   || 0 == arm_insn_r->opcode || 4 == arm_insn_r->opcode)
     {
       /* 4) Store, register pre-indexed.  */
       /* 6) Store, register post -indexed.  */
@@ -9855,27 +11399,27 @@ arm_record_strx (insn_decode_record *arm
       regcache_raw_read_unsigned (reg_cache, reg_src2, &u_regval[1]);
       /* Calculate target store address, Rn +/- Rm, register offset.  */
       if (13 == arm_insn_r->opcode || 4 == arm_insn_r->opcode)
-        {
-          tgt_mem_addr = u_regval[0] + u_regval[1];
-        }
-      else
-        {
-          tgt_mem_addr = u_regval[1] - u_regval[0];
-        }
+	{
+	  tgt_mem_addr = u_regval[0] + u_regval[1];
+	}
+      else
+	{
+	  tgt_mem_addr = u_regval[1] - u_regval[0];
+	}
       if (ARM_RECORD_STRH == str_type)
-        {
-          record_buf_mem[0] = 2;
-          record_buf_mem[1] = tgt_mem_addr;
-          arm_insn_r->mem_rec_count = 1;
-        }
+	{
+	  record_buf_mem[0] = 2;
+	  record_buf_mem[1] = tgt_mem_addr;
+	  arm_insn_r->mem_rec_count = 1;
+	}
       else if (ARM_RECORD_STRD == str_type)
-        {
-          record_buf_mem[0] = 4;
-          record_buf_mem[1] = tgt_mem_addr;
-          record_buf_mem[2] = 4;
-          record_buf_mem[3] = tgt_mem_addr + 4;
-          arm_insn_r->mem_rec_count = 2;
-        }
+	{
+	  record_buf_mem[0] = 4;
+	  record_buf_mem[1] = tgt_mem_addr;
+	  record_buf_mem[2] = 4;
+	  record_buf_mem[3] = tgt_mem_addr + 4;
+	  arm_insn_r->mem_rec_count = 2;
+	}
       /* Record Rn also as it changes.  */
       *(record_buf) = bits (arm_insn_r->arm_insn, 16, 19);
       arm_insn_r->reg_rec_count = 1;
@@ -9886,7 +11430,7 @@ arm_record_strx (insn_decode_record *arm
 /* Handling ARM extension space insns.  */
 
 static int
-arm_record_extension_space (insn_decode_record *arm_insn_r)
+arm_record_extension_space (arm_insn_decode_record *arm_insn_r)
 {
   int ret = 0;  /* Return value: -1:record failure ;  0:success  */
   uint32_t opcode1 = 0, opcode2 = 0, insn_op1 = 0;
@@ -9903,14 +11447,14 @@ arm_record_extension_space (insn_decode_
   if (arm_insn_r->cond)
     {
       /* PLD has no affect on architectural state, it just affects
-         the caches.  */
+	 the caches.  */
       if (5 == ((opcode1 & 0xE0) >> 5))
-        {
-          /* BLX(1) */
-          record_buf[0] = ARM_PS_REGNUM;
-          record_buf[1] = ARM_LR_REGNUM;
-          arm_insn_r->reg_rec_count = 2;
-        }
+	{
+	  /* BLX(1) */
+	  record_buf[0] = ARM_PS_REGNUM;
+	  record_buf[1] = ARM_LR_REGNUM;
+	  arm_insn_r->reg_rec_count = 2;
+	}
       /* STC2, LDC2, MCR2, MRC2, CDP2: <TBD>, co-processor insn.  */
     }
 
@@ -9920,7 +11464,7 @@ arm_record_extension_space (insn_decode_
     {
       ret = -1;
       /* Undefined instruction on ARM V5; need to handle if later 
-         versions define it.  */
+	 versions define it.  */
     }
 
   opcode1 = bits (arm_insn_r->arm_insn, 24, 27);
@@ -9933,19 +11477,19 @@ arm_record_extension_space (insn_decode_
     {
       /* Handle MLA(S) and MUL(S).  */
       if (in_inclusive_range (insn_op1, 0U, 3U))
-      {
-        record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-        record_buf[1] = ARM_PS_REGNUM;
-        arm_insn_r->reg_rec_count = 2;
-      }
+	{
+	  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+	  record_buf[1] = ARM_PS_REGNUM;
+	  arm_insn_r->reg_rec_count = 2;
+	}
       else if (in_inclusive_range (insn_op1, 4U, 15U))
-      {
-        /* Handle SMLAL(S), SMULL(S), UMLAL(S), UMULL(S).  */
-        record_buf[0] = bits (arm_insn_r->arm_insn, 16, 19);
-        record_buf[1] = bits (arm_insn_r->arm_insn, 12, 15);
-        record_buf[2] = ARM_PS_REGNUM;
-        arm_insn_r->reg_rec_count = 3;
-      }
+	{
+	  /* Handle SMLAL(S), SMULL(S), UMLAL(S), UMULL(S).  */
+	  record_buf[0] = bits (arm_insn_r->arm_insn, 16, 19);
+	  record_buf[1] = bits (arm_insn_r->arm_insn, 12, 15);
+	  record_buf[2] = ARM_PS_REGNUM;
+	  arm_insn_r->reg_rec_count = 3;
+	}
     }
 
   opcode1 = bits (arm_insn_r->arm_insn, 26, 27);
@@ -9958,113 +11502,113 @@ arm_record_extension_space (insn_decode_
       && 1 != arm_insn_r->cond && !INSN_RECORDED(arm_insn_r))
     {
       if (!bit (arm_insn_r->arm_insn,25))
-        {
-          if (!bits (arm_insn_r->arm_insn, 4, 7))
-            {
-              if ((0 == insn_op1) || (2 == insn_op1))
-                {
-                  /* MRS.  */
-                  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-                  arm_insn_r->reg_rec_count = 1;
-                }
-              else if (1 == insn_op1)
-                {
-                  /* CSPR is going to be changed.  */
-                  record_buf[0] = ARM_PS_REGNUM;
-                  arm_insn_r->reg_rec_count = 1;
-                }
-              else if (3 == insn_op1)
-                {
-                  /* SPSR is going to be changed.  */
-                  /* We need to get SPSR value, which is yet to be done.  */
-                  return -1;
-                }
-            }
-          else if (1 == bits (arm_insn_r->arm_insn, 4, 7))
-            {
-              if (1 == insn_op1)
-                {
-                  /* BX.  */
-                  record_buf[0] = ARM_PS_REGNUM;
-                  arm_insn_r->reg_rec_count = 1;
-                }
-              else if (3 == insn_op1)
-                {
-                  /* CLZ.  */
-                  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-                  arm_insn_r->reg_rec_count = 1;
-                }
-            }
-          else if (3 == bits (arm_insn_r->arm_insn, 4, 7))
-            {
-              /* BLX.  */
-              record_buf[0] = ARM_PS_REGNUM;
-              record_buf[1] = ARM_LR_REGNUM;
-              arm_insn_r->reg_rec_count = 2;
-            }
-          else if (5 == bits (arm_insn_r->arm_insn, 4, 7))
-            {
-              /* QADD, QSUB, QDADD, QDSUB */
-              record_buf[0] = ARM_PS_REGNUM;
-              record_buf[1] = bits (arm_insn_r->arm_insn, 12, 15);
-              arm_insn_r->reg_rec_count = 2;
-            }
-          else if (7 == bits (arm_insn_r->arm_insn, 4, 7))
-            {
-              /* BKPT.  */
-              record_buf[0] = ARM_PS_REGNUM;
-              record_buf[1] = ARM_LR_REGNUM;
-              arm_insn_r->reg_rec_count = 2;
-
-              /* Save SPSR also;how?  */
-              return -1;
-            }
-          else if(8 == bits (arm_insn_r->arm_insn, 4, 7) 
-                  || 10 == bits (arm_insn_r->arm_insn, 4, 7)
-                  || 12 == bits (arm_insn_r->arm_insn, 4, 7)
-                  || 14 == bits (arm_insn_r->arm_insn, 4, 7)
-                 )
-            {
-              if (0 == insn_op1 || 1 == insn_op1)
-                {
-                  /* SMLA<x><y>, SMLAW<y>, SMULW<y>.  */
-                  /* We dont do optimization for SMULW<y> where we
-                     need only Rd.  */
-                  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-                  record_buf[1] = ARM_PS_REGNUM;
-                  arm_insn_r->reg_rec_count = 2;
-                }
-              else if (2 == insn_op1)
-                {
-                  /* SMLAL<x><y>.  */
-                  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-                  record_buf[1] = bits (arm_insn_r->arm_insn, 16, 19);
-                  arm_insn_r->reg_rec_count = 2;
-                }
-              else if (3 == insn_op1)
-                {
-                  /* SMUL<x><y>.  */
-                  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-                  arm_insn_r->reg_rec_count = 1;
-                }
-            }
-        }
-      else
-        {
-          /* MSR : immediate form.  */
-          if (1 == insn_op1)
-            {
-              /* CSPR is going to be changed.  */
-              record_buf[0] = ARM_PS_REGNUM;
-              arm_insn_r->reg_rec_count = 1;
-            }
-          else if (3 == insn_op1)
-            {
-              /* SPSR is going to be changed.  */
-              /* we need to get SPSR value, which is yet to be done  */
-              return -1;
-            }
-        }
+	{
+	  if (!bits (arm_insn_r->arm_insn, 4, 7))
+	    {
+	      if ((0 == insn_op1) || (2 == insn_op1))
+		{
+		  /* MRS.  */
+		  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+		  arm_insn_r->reg_rec_count = 1;
+		}
+	      else if (1 == insn_op1)
+		{
+		  /* CSPR is going to be changed.  */
+		  record_buf[0] = ARM_PS_REGNUM;
+		  arm_insn_r->reg_rec_count = 1;
+		}
+	      else if (3 == insn_op1)
+		{
+		  /* SPSR is going to be changed.  */
+		  /* We need to get SPSR value, which is yet to be done.  */
+		  return -1;
+		}
+	    }
+	  else if (1 == bits (arm_insn_r->arm_insn, 4, 7))
+	    {
+	      if (1 == insn_op1)
+		{
+		  /* BX.  */
+		  record_buf[0] = ARM_PS_REGNUM;
+		  arm_insn_r->reg_rec_count = 1;
+		}
+	      else if (3 == insn_op1)
+		{
+		  /* CLZ.  */
+		  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+		  arm_insn_r->reg_rec_count = 1;
+		}
+	    }
+	  else if (3 == bits (arm_insn_r->arm_insn, 4, 7))
+	    {
+	      /* BLX.  */
+	      record_buf[0] = ARM_PS_REGNUM;
+	      record_buf[1] = ARM_LR_REGNUM;
+	      arm_insn_r->reg_rec_count = 2;
+	    }
+	  else if (5 == bits (arm_insn_r->arm_insn, 4, 7))
+	    {
+	      /* QADD, QSUB, QDADD, QDSUB */
+	      record_buf[0] = ARM_PS_REGNUM;
+	      record_buf[1] = bits (arm_insn_r->arm_insn, 12, 15);
+	      arm_insn_r->reg_rec_count = 2;
+	    }
+	  else if (7 == bits (arm_insn_r->arm_insn, 4, 7))
+	    {
+	      /* BKPT.  */
+	      record_buf[0] = ARM_PS_REGNUM;
+	      record_buf[1] = ARM_LR_REGNUM;
+	      arm_insn_r->reg_rec_count = 2;
+
+	      /* Save SPSR also;how?  */
+	      return -1;
+	    }
+	  else if(8 == bits (arm_insn_r->arm_insn, 4, 7) 
+		  || 10 == bits (arm_insn_r->arm_insn, 4, 7)
+		  || 12 == bits (arm_insn_r->arm_insn, 4, 7)
+		  || 14 == bits (arm_insn_r->arm_insn, 4, 7)
+		 )
+	    {
+	      if (0 == insn_op1 || 1 == insn_op1)
+		{
+		  /* SMLA<x><y>, SMLAW<y>, SMULW<y>.  */
+		  /* We dont do optimization for SMULW<y> where we
+		     need only Rd.  */
+		  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+		  record_buf[1] = ARM_PS_REGNUM;
+		  arm_insn_r->reg_rec_count = 2;
+		}
+	      else if (2 == insn_op1)
+		{
+		  /* SMLAL<x><y>.  */
+		  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+		  record_buf[1] = bits (arm_insn_r->arm_insn, 16, 19);
+		  arm_insn_r->reg_rec_count = 2;
+		}
+	      else if (3 == insn_op1)
+		{
+		  /* SMUL<x><y>.  */
+		  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+		  arm_insn_r->reg_rec_count = 1;
+		}
+	    }
+	}
+      else
+	{
+	  /* MSR : immediate form.  */
+	  if (1 == insn_op1)
+	    {
+	      /* CSPR is going to be changed.  */
+	      record_buf[0] = ARM_PS_REGNUM;
+	      arm_insn_r->reg_rec_count = 1;
+	    }
+	  else if (3 == insn_op1)
+	    {
+	      /* SPSR is going to be changed.  */
+	      /* we need to get SPSR value, which is yet to be done  */
+	      return -1;
+	    }
+	}
     }
 
   opcode1 = bits (arm_insn_r->arm_insn, 25, 27);
@@ -10079,52 +11623,52 @@ arm_record_extension_space (insn_decode_
     {
       /* SWP/SWPB.  */
       if (0 == insn_op1)
-        {
-          /* These insn, changes register and memory as well.  */
-          /* SWP or SWPB insn.  */
-          /* Get memory address given by Rn.  */
-          reg_src1 = bits (arm_insn_r->arm_insn, 16, 19);
-          regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval);
-          /* SWP insn ?, swaps word.  */
-          if (8 == arm_insn_r->opcode)
-            {
-              record_buf_mem[0] = 4;
-            }
-          else
-            {
-              /* SWPB insn, swaps only byte.  */
-              record_buf_mem[0] = 1;
-            }
-          record_buf_mem[1] = u_regval;
-          arm_insn_r->mem_rec_count = 1;
-          record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-          arm_insn_r->reg_rec_count = 1;
-        }
+	{
+	  /* These insn, changes register and memory as well.  */
+	  /* SWP or SWPB insn.  */
+	  /* Get memory address given by Rn.  */
+	  reg_src1 = bits (arm_insn_r->arm_insn, 16, 19);
+	  regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval);
+	  /* SWP insn ?, swaps word.  */
+	  if (8 == arm_insn_r->opcode)
+	    {
+	      record_buf_mem[0] = 4;
+	    }
+	  else
+	    {
+	      /* SWPB insn, swaps only byte.  */
+	      record_buf_mem[0] = 1;
+	    }
+	  record_buf_mem[1] = u_regval;
+	  arm_insn_r->mem_rec_count = 1;
+	  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+	  arm_insn_r->reg_rec_count = 1;
+	}
       else if (1 == insn_op1 && !bit (arm_insn_r->arm_insn, 20))
-        {
-          /* STRH.  */
-          arm_record_strx(arm_insn_r, &record_buf[0], &record_buf_mem[0],
-                          ARM_RECORD_STRH);
-        }
+	{
+	  /* STRH.  */
+	  arm_record_strx(arm_insn_r, &record_buf[0], &record_buf_mem[0],
+			  ARM_RECORD_STRH);
+	}
       else if (2 == insn_op1 && !bit (arm_insn_r->arm_insn, 20))
-        {
-          /* LDRD.  */
-          record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-          record_buf[1] = record_buf[0] + 1;
-          arm_insn_r->reg_rec_count = 2;
-        }
+	{
+	  /* LDRD.  */
+	  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+	  record_buf[1] = record_buf[0] + 1;
+	  arm_insn_r->reg_rec_count = 2;
+	}
       else if (3 == insn_op1 && !bit (arm_insn_r->arm_insn, 20))
-        {
-          /* STRD.  */
-          arm_record_strx(arm_insn_r, &record_buf[0], &record_buf_mem[0],
-                        ARM_RECORD_STRD);
-        }
+	{
+	  /* STRD.  */
+	  arm_record_strx(arm_insn_r, &record_buf[0], &record_buf_mem[0],
+			ARM_RECORD_STRD);
+	}
       else if (bit (arm_insn_r->arm_insn, 20) && insn_op1 <= 3)
-        {
-          /* LDRH, LDRSB, LDRSH.  */
-          record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-          arm_insn_r->reg_rec_count = 1;
-        }
+	{
+	  /* LDRH, LDRSB, LDRSH.  */
+	  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+	  arm_insn_r->reg_rec_count = 1;
+	}
 
     }
 
@@ -10149,7 +11693,7 @@ arm_record_extension_space (insn_decode_
 /* Handling opcode 000 insns.  */
 
 static int
-arm_record_data_proc_misc_ld_str (insn_decode_record *arm_insn_r)
+arm_record_data_proc_misc_ld_str (arm_insn_decode_record *arm_insn_r)
 {
   struct regcache *reg_cache = arm_insn_r->regcache;
   uint32_t record_buf[8], record_buf_mem[8];
@@ -10238,20 +11782,20 @@ arm_record_data_proc_misc_ld_str (insn_d
       /* Handle multiply instructions.  */
       /* MLA, MUL, SMLAL, SMULL, UMLAL, UMULL.  */
       if (0 == arm_insn_r->opcode || 1 == arm_insn_r->opcode)
-	  {
-	    /* Handle MLA and MUL.  */
-	    record_buf[0] = bits (arm_insn_r->arm_insn, 16, 19);
-	    record_buf[1] = ARM_PS_REGNUM;
-	    arm_insn_r->reg_rec_count = 2;
-	  }
-	else if (4 <= arm_insn_r->opcode && 7 >= arm_insn_r->opcode)
-	  {
-	    /* Handle SMLAL, SMULL, UMLAL, UMULL.  */
-	    record_buf[0] = bits (arm_insn_r->arm_insn, 16, 19);
-	    record_buf[1] = bits (arm_insn_r->arm_insn, 12, 15);
-	    record_buf[2] = ARM_PS_REGNUM;
-	    arm_insn_r->reg_rec_count = 3;
-	  }
+	{
+	  /* Handle MLA and MUL.  */
+	  record_buf[0] = bits (arm_insn_r->arm_insn, 16, 19);
+	  record_buf[1] = ARM_PS_REGNUM;
+	  arm_insn_r->reg_rec_count = 2;
+	}
+      else if (4 <= arm_insn_r->opcode && 7 >= arm_insn_r->opcode)
+	{
+	  /* Handle SMLAL, SMULL, UMLAL, UMULL.  */
+	  record_buf[0] = bits (arm_insn_r->arm_insn, 16, 19);
+	  record_buf[1] = bits (arm_insn_r->arm_insn, 12, 15);
+	  record_buf[2] = ARM_PS_REGNUM;
+	  arm_insn_r->reg_rec_count = 3;
+	}
     }
   else if (9 == arm_insn_r->decode  && opcode1 > 0x10)
     {
@@ -10442,7 +11986,7 @@ arm_record_data_proc_misc_ld_str (insn_d
 /* Handling opcode 001 insns.  */
 
 static int
-arm_record_data_proc_imm (insn_decode_record *arm_insn_r)
+arm_record_data_proc_imm (arm_insn_decode_record *arm_insn_r)
 {
   uint32_t record_buf[8], record_buf_mem[8];
 
@@ -10456,21 +12000,21 @@ arm_record_data_proc_imm (insn_decode_re
     {
       /* Handle MSR insn.  */
       if (9 == arm_insn_r->opcode)
-        {
-          /* CSPR is going to be changed.  */
-          record_buf[0] = ARM_PS_REGNUM;
-          arm_insn_r->reg_rec_count = 1;
-        }
-      else
-        {
-          /* SPSR is going to be changed.  */
-        }
+	{
+	  /* CSPR is going to be changed.  */
+	  record_buf[0] = ARM_PS_REGNUM;
+	  arm_insn_r->reg_rec_count = 1;
+	}
+      else
+	{
+	  /* SPSR is going to be changed.  */
+	}
     }
   else if (arm_insn_r->opcode <= 15)
     {
       /* Normal data processing insns.  */
       /* Out of 11 shifter operands mode, all the insn modifies destination
-         register, which is specified by 13-16 decode.  */
+	 register, which is specified by 13-16 decode.  */
       record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
       record_buf[1] = ARM_PS_REGNUM;
       arm_insn_r->reg_rec_count = 2;
@@ -10486,7 +12030,7 @@ arm_record_data_proc_imm (insn_decode_re
 }
 
 static int
-arm_record_media (insn_decode_record *arm_insn_r)
+arm_record_media (arm_insn_decode_record *arm_insn_r)
 {
   uint32_t record_buf[8];
 
@@ -10570,7 +12114,7 @@ arm_record_media (insn_decode_record *ar
 /* Handle ARM mode instructions with opcode 010.  */
 
 static int
-arm_record_ld_st_imm_offset (insn_decode_record *arm_insn_r)
+arm_record_ld_st_imm_offset (arm_insn_decode_record *arm_insn_r)
 {
   struct regcache *reg_cache = arm_insn_r->regcache;
 
@@ -10596,7 +12140,7 @@ arm_record_ld_st_imm_offset (insn_decode
       record_buf[arm_insn_r->reg_rec_count++] = reg_dest;
 
       /* The LDR instruction is capable of doing branching.  If MOV LR, PC
-	 preceeds a LDR instruction having R15 as reg_base, it
+	 precedes a LDR instruction having R15 as reg_base, it
 	 emulates a branch and link instruction, and hence we need to save
 	 CPSR and PC as well.  */
       if (ARM_PC_REGNUM == reg_dest)
@@ -10661,7 +12205,7 @@ arm_record_ld_st_imm_offset (insn_decode
 /* Handling opcode 011 insns.  */
 
 static int
-arm_record_ld_st_reg_offset (insn_decode_record *arm_insn_r)
+arm_record_ld_st_reg_offset (arm_insn_decode_record *arm_insn_r)
 {
   struct regcache *reg_cache = arm_insn_r->regcache;
 
@@ -10688,235 +12232,235 @@ arm_record_ld_st_reg_offset (insn_decode
     {
       reg_dest = bits (arm_insn_r->arm_insn, 12, 15);
       /* LDR insn has a capability to do branching, if
-         MOV LR, PC is preceded by LDR insn having Rn as R15
-         in that case, it emulates branch and link insn, and hence we
-         need to save CSPR and PC as well.  */
+	 MOV LR, PC is preceded by LDR insn having Rn as R15
+	 in that case, it emulates branch and link insn, and hence we
+	 need to save CSPR and PC as well.  */
       if (15 != reg_dest)
-        {
-          record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
-          arm_insn_r->reg_rec_count = 1;
-        }
-      else
-        {
-          record_buf[0] = reg_dest;
-          record_buf[1] = ARM_PS_REGNUM;
-          arm_insn_r->reg_rec_count = 2;
-        }
+	{
+	  record_buf[0] = bits (arm_insn_r->arm_insn, 12, 15);
+	  arm_insn_r->reg_rec_count = 1;
+	}
+      else
+	{
+	  record_buf[0] = reg_dest;
+	  record_buf[1] = ARM_PS_REGNUM;
+	  arm_insn_r->reg_rec_count = 2;
+	}
     }
   else
     {
       if (! bits (arm_insn_r->arm_insn, 4, 11))
-        {
-          /* Store insn, register offset and register pre-indexed,
-             register post-indexed.  */
-          /* Get Rm.  */
-          reg_src1 = bits (arm_insn_r->arm_insn, 0, 3);
-          /* Get Rn.  */
-          reg_src2 = bits (arm_insn_r->arm_insn, 16, 19);
-          regcache_raw_read_unsigned (reg_cache, reg_src1
-                                      , &u_regval[0]);
-          regcache_raw_read_unsigned (reg_cache, reg_src2
-                                      , &u_regval[1]);
-          if (15 == reg_src2)
-            {
-              /* If R15 was used as Rn, hence current PC+8.  */
-              /* Pre-indexed mode doesnt reach here ; illegal insn.  */
-                u_regval[0] = u_regval[0] + 8;
-            }
-          /* Calculate target store address, Rn +/- Rm, register offset.  */
-          /* U == 1.  */
-          if (bit (arm_insn_r->arm_insn, 23))
-            {
-              tgt_mem_addr = u_regval[0] + u_regval[1];
-            }
-          else
-            {
-              tgt_mem_addr = u_regval[1] - u_regval[0];
-            }
-
-          switch (arm_insn_r->opcode)
-            {
-              /* STR.  */
-              case 8:
-              case 12:
-              /* STR.  */    
-              case 9:
-              case 13:
-              /* STRT.  */
-              case 1:
-              case 5:
-              /* STR.  */
-              case 0:
-              case 4:
-                record_buf_mem[0] = 4;
-              break;
-
-              /* STRB.  */
-              case 10:
-              case 14:
-              /* STRB.  */
-              case 11:
-              case 15:
-              /* STRBT.  */    
-              case 3:
-              case 7:
-              /* STRB.  */
-              case 2:
-              case 6:
-                record_buf_mem[0] = 1;
-              break;
-
-              default:
-                gdb_assert_not_reached ("no decoding pattern found");
-              break;
-            }
-          record_buf_mem[1] = tgt_mem_addr;
-          arm_insn_r->mem_rec_count = 1;
-
-          if (9 == arm_insn_r->opcode || 11 == arm_insn_r->opcode
-              || 13 == arm_insn_r->opcode || 15 == arm_insn_r->opcode
-              || 0 == arm_insn_r->opcode || 2 == arm_insn_r->opcode
-              || 4 == arm_insn_r->opcode || 6 == arm_insn_r->opcode
-              || 1 == arm_insn_r->opcode || 3 == arm_insn_r->opcode
-              || 5 == arm_insn_r->opcode || 7 == arm_insn_r->opcode
-             )
-            {
-              /* Rn is going to be changed in pre-indexed mode and
-                 post-indexed mode as well.  */
-              record_buf[0] = reg_src2;
-              arm_insn_r->reg_rec_count = 1;
-            }
-        }
-      else
-        {
-          /* Store insn, scaled register offset; scaled pre-indexed.  */
-          offset_12 = bits (arm_insn_r->arm_insn, 5, 6);
-          /* Get Rm.  */
-          reg_src1 = bits (arm_insn_r->arm_insn, 0, 3);
-          /* Get Rn.  */
-          reg_src2 = bits (arm_insn_r->arm_insn, 16, 19);
-          /* Get shift_imm.  */
-          shift_imm = bits (arm_insn_r->arm_insn, 7, 11);
-          regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval[0]);
-          regcache_raw_read_signed (reg_cache, reg_src1, &s_word);
-          regcache_raw_read_unsigned (reg_cache, reg_src2, &u_regval[1]);
-          /* Offset_12 used as shift.  */
-          switch (offset_12)
-            {
-              case 0:
-                /* Offset_12 used as index.  */
-                offset_12 = u_regval[0] << shift_imm;
-              break;
-
-              case 1:
-                offset_12 = (!shift_imm)?0:u_regval[0] >> shift_imm;
-              break;
-
-              case 2:
-                if (!shift_imm)
-                  {
-                    if (bit (u_regval[0], 31))
-                      {
-                        offset_12 = 0xFFFFFFFF;
-                      }
-                    else
-                      {
-                        offset_12 = 0;
-                      }
-                  }
-                else
-                  {
-                    /* This is arithmetic shift.  */
-                    offset_12 = s_word >> shift_imm;
-                  }
-                break;
-
-              case 3:
-                if (!shift_imm)
-                  {
-                    regcache_raw_read_unsigned (reg_cache, ARM_PS_REGNUM,
-                                                &u_regval[1]);
-                    /* Get C flag value and shift it by 31.  */
-                    offset_12 = (((bit (u_regval[1], 29)) << 31) \
-                                  | (u_regval[0]) >> 1);
-                  }
-                else
-                  {
-                    offset_12 = (u_regval[0] >> shift_imm) \
-                                | (u_regval[0] <<
-                                (sizeof(uint32_t) - shift_imm));
-                  }
-              break;
-
-              default:
-                gdb_assert_not_reached ("no decoding pattern found");
-              break;
-            }
-
-          regcache_raw_read_unsigned (reg_cache, reg_src2, &u_regval[1]);
-          /* bit U set.  */
-          if (bit (arm_insn_r->arm_insn, 23))
-            {
-              tgt_mem_addr = u_regval[1] + offset_12;
-            }
-          else
-            {
-              tgt_mem_addr = u_regval[1] - offset_12;
-            }
-
-          switch (arm_insn_r->opcode)
-            {
-              /* STR.  */
-              case 8:
-              case 12:
-              /* STR.  */    
-              case 9:
-              case 13:
-              /* STRT.  */
-              case 1:
-              case 5:
-              /* STR.  */
-              case 0:
-              case 4:
-                record_buf_mem[0] = 4;
-              break;
-
-              /* STRB.  */
-              case 10:
-              case 14:
-              /* STRB.  */
-              case 11:
-              case 15:
-              /* STRBT.  */    
-              case 3:
-              case 7:
-              /* STRB.  */
-              case 2:
-              case 6:
-                record_buf_mem[0] = 1;
-              break;
-
-              default:
-                gdb_assert_not_reached ("no decoding pattern found");
-              break;
-            }
-          record_buf_mem[1] = tgt_mem_addr;
-          arm_insn_r->mem_rec_count = 1;
-
-          if (9 == arm_insn_r->opcode || 11 == arm_insn_r->opcode
-              || 13 == arm_insn_r->opcode || 15 == arm_insn_r->opcode
-              || 0 == arm_insn_r->opcode || 2 == arm_insn_r->opcode
-              || 4 == arm_insn_r->opcode || 6 == arm_insn_r->opcode
-              || 1 == arm_insn_r->opcode || 3 == arm_insn_r->opcode
-              || 5 == arm_insn_r->opcode || 7 == arm_insn_r->opcode
-             )
-            {
-              /* Rn is going to be changed in register scaled pre-indexed
-                 mode,and scaled post indexed mode.  */
-              record_buf[0] = reg_src2;
-              arm_insn_r->reg_rec_count = 1;
-            }
-        }
+	{
+	  /* Store insn, register offset and register pre-indexed,
+	     register post-indexed.  */
+	  /* Get Rm.  */
+	  reg_src1 = bits (arm_insn_r->arm_insn, 0, 3);
+	  /* Get Rn.  */
+	  reg_src2 = bits (arm_insn_r->arm_insn, 16, 19);
+	  regcache_raw_read_unsigned (reg_cache, reg_src1
+				      , &u_regval[0]);
+	  regcache_raw_read_unsigned (reg_cache, reg_src2
+				      , &u_regval[1]);
+	  if (15 == reg_src2)
+	    {
+	      /* If R15 was used as Rn, hence current PC+8.  */
+	      /* Pre-indexed mode doesn't reach here ; illegal insn.  */
+		u_regval[0] = u_regval[0] + 8;
+	    }
+	  /* Calculate target store address, Rn +/- Rm, register offset.  */
+	  /* U == 1.  */
+	  if (bit (arm_insn_r->arm_insn, 23))
+	    {
+	      tgt_mem_addr = u_regval[0] + u_regval[1];
+	    }
+	  else
+	    {
+	      tgt_mem_addr = u_regval[1] - u_regval[0];
+	    }
+
+	  switch (arm_insn_r->opcode)
+	    {
+	      /* STR.  */
+	      case 8:
+	      case 12:
+	      /* STR.  */    
+	      case 9:
+	      case 13:
+	      /* STRT.  */
+	      case 1:
+	      case 5:
+	      /* STR.  */
+	      case 0:
+	      case 4:
+		record_buf_mem[0] = 4;
+	      break;
+
+	      /* STRB.  */
+	      case 10:
+	      case 14:
+	      /* STRB.  */
+	      case 11:
+	      case 15:
+	      /* STRBT.  */    
+	      case 3:
+	      case 7:
+	      /* STRB.  */
+	      case 2:
+	      case 6:
+		record_buf_mem[0] = 1;
+	      break;
+
+	      default:
+		gdb_assert_not_reached ("no decoding pattern found");
+	      break;
+	    }
+	  record_buf_mem[1] = tgt_mem_addr;
+	  arm_insn_r->mem_rec_count = 1;
+
+	  if (9 == arm_insn_r->opcode || 11 == arm_insn_r->opcode
+	      || 13 == arm_insn_r->opcode || 15 == arm_insn_r->opcode
+	      || 0 == arm_insn_r->opcode || 2 == arm_insn_r->opcode
+	      || 4 == arm_insn_r->opcode || 6 == arm_insn_r->opcode
+	      || 1 == arm_insn_r->opcode || 3 == arm_insn_r->opcode
+	      || 5 == arm_insn_r->opcode || 7 == arm_insn_r->opcode
+	     )
+	    {
+	      /* Rn is going to be changed in pre-indexed mode and
+		 post-indexed mode as well.  */
+	      record_buf[0] = reg_src2;
+	      arm_insn_r->reg_rec_count = 1;
+	    }
+	}
+      else
+	{
+	  /* Store insn, scaled register offset; scaled pre-indexed.  */
+	  offset_12 = bits (arm_insn_r->arm_insn, 5, 6);
+	  /* Get Rm.  */
+	  reg_src1 = bits (arm_insn_r->arm_insn, 0, 3);
+	  /* Get Rn.  */
+	  reg_src2 = bits (arm_insn_r->arm_insn, 16, 19);
+	  /* Get shift_imm.  */
+	  shift_imm = bits (arm_insn_r->arm_insn, 7, 11);
+	  regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval[0]);
+	  regcache_raw_read_signed (reg_cache, reg_src1, &s_word);
+	  regcache_raw_read_unsigned (reg_cache, reg_src2, &u_regval[1]);
+	  /* Offset_12 used as shift.  */
+	  switch (offset_12)
+	    {
+	      case 0:
+		/* Offset_12 used as index.  */
+		offset_12 = u_regval[0] << shift_imm;
+	      break;
+
+	      case 1:
+		offset_12 = (!shift_imm) ? 0 : u_regval[0] >> shift_imm;
+	      break;
+
+	      case 2:
+		if (!shift_imm)
+		  {
+		    if (bit (u_regval[0], 31))
+		      {
+			offset_12 = 0xFFFFFFFF;
+		      }
+		    else
+		      {
+			offset_12 = 0;
+		      }
+		  }
+		else
+		  {
+		    /* This is arithmetic shift.  */
+		    offset_12 = s_word >> shift_imm;
+		  }
+		break;
+
+	      case 3:
+		if (!shift_imm)
+		  {
+		    regcache_raw_read_unsigned (reg_cache, ARM_PS_REGNUM,
+						&u_regval[1]);
+		    /* Get C flag value and shift it by 31.  */
+		    offset_12 = (((bit (u_regval[1], 29)) << 31) \
+				  | (u_regval[0]) >> 1);
+		  }
+		else
+		  {
+		    offset_12 = (u_regval[0] >> shift_imm) \
+				| (u_regval[0] <<
+				(sizeof(uint32_t) - shift_imm));
+		  }
+	      break;
+
+	      default:
+		gdb_assert_not_reached ("no decoding pattern found");
+	      break;
+	    }
+
+	  regcache_raw_read_unsigned (reg_cache, reg_src2, &u_regval[1]);
+	  /* bit U set.  */
+	  if (bit (arm_insn_r->arm_insn, 23))
+	    {
+	      tgt_mem_addr = u_regval[1] + offset_12;
+	    }
+	  else
+	    {
+	      tgt_mem_addr = u_regval[1] - offset_12;
+	    }
+
+	  switch (arm_insn_r->opcode)
+	    {
+	      /* STR.  */
+	      case 8:
+	      case 12:
+	      /* STR.  */    
+	      case 9:
+	      case 13:
+	      /* STRT.  */
+	      case 1:
+	      case 5:
+	      /* STR.  */
+	      case 0:
+	      case 4:
+		record_buf_mem[0] = 4;
+	      break;
+
+	      /* STRB.  */
+	      case 10:
+	      case 14:
+	      /* STRB.  */
+	      case 11:
+	      case 15:
+	      /* STRBT.  */    
+	      case 3:
+	      case 7:
+	      /* STRB.  */
+	      case 2:
+	      case 6:
+		record_buf_mem[0] = 1;
+	      break;
+
+	      default:
+		gdb_assert_not_reached ("no decoding pattern found");
+	      break;
+	    }
+	  record_buf_mem[1] = tgt_mem_addr;
+	  arm_insn_r->mem_rec_count = 1;
+
+	  if (9 == arm_insn_r->opcode || 11 == arm_insn_r->opcode
+	      || 13 == arm_insn_r->opcode || 15 == arm_insn_r->opcode
+	      || 0 == arm_insn_r->opcode || 2 == arm_insn_r->opcode
+	      || 4 == arm_insn_r->opcode || 6 == arm_insn_r->opcode
+	      || 1 == arm_insn_r->opcode || 3 == arm_insn_r->opcode
+	      || 5 == arm_insn_r->opcode || 7 == arm_insn_r->opcode
+	     )
+	    {
+	      /* Rn is going to be changed in register scaled pre-indexed
+		 mode,and scaled post indexed mode.  */
+	      record_buf[0] = reg_src2;
+	      arm_insn_r->reg_rec_count = 1;
+	    }
+	}
     }
 
   REG_ALLOC (arm_insn_r->arm_regs, arm_insn_r->reg_rec_count, record_buf);
@@ -10927,7 +12471,7 @@ arm_record_ld_st_reg_offset (insn_decode
 /* Handle ARM mode instructions with opcode 100.  */
 
 static int
-arm_record_ld_st_multiple (insn_decode_record *arm_insn_r)
+arm_record_ld_st_multiple (arm_insn_decode_record *arm_insn_r)
 {
   struct regcache *reg_cache = arm_insn_r->regcache;
   uint32_t register_count = 0, register_bits;
@@ -11027,19 +12571,19 @@ arm_record_ld_st_multiple (insn_decode_r
 /* Handling opcode 101 insns.  */
 
 static int
-arm_record_b_bl (insn_decode_record *arm_insn_r)
+arm_record_b_bl (arm_insn_decode_record *arm_insn_r)
 {
   uint32_t record_buf[8];
 
   /* Handle B, BL, BLX(1) insns.  */
   /* B simply branches so we do nothing here.  */
-  /* Note: BLX(1) doesnt fall here but instead it falls into
+  /* Note: BLX(1) doesn't fall here but instead it falls into
      extension space.  */
   if (bit (arm_insn_r->arm_insn, 24))
-  {
-    record_buf[0] = ARM_LR_REGNUM;
-    arm_insn_r->reg_rec_count = 1;
-  }
+    {
+      record_buf[0] = ARM_LR_REGNUM;
+      arm_insn_r->reg_rec_count = 1;
+    }
 
   REG_ALLOC (arm_insn_r->arm_regs, arm_insn_r->reg_rec_count, record_buf);
 
@@ -11047,11 +12591,12 @@ arm_record_b_bl (insn_decode_record *arm
 }
 
 static int
-arm_record_unsupported_insn (insn_decode_record *arm_insn_r)
+arm_record_unsupported_insn (arm_insn_decode_record *arm_insn_r)
 {
-  printf_unfiltered (_("Process record does not support instruction "
-		       "0x%0x at address %s.\n"),arm_insn_r->arm_insn,
-		     paddress (arm_insn_r->gdbarch, arm_insn_r->this_addr));
+  gdb_printf (gdb_stderr,
+	      _("Process record does not support instruction "
+		"0x%0x at address %s.\n"),arm_insn_r->arm_insn,
+	      paddress (arm_insn_r->gdbarch, arm_insn_r->this_addr));
 
   return -1;
 }
@@ -11059,7 +12604,7 @@ arm_record_unsupported_insn (insn_decode
 /* Record handler for vector data transfer instructions.  */
 
 static int
-arm_record_vdata_transfer_insn (insn_decode_record *arm_insn_r)
+arm_record_vdata_transfer_insn (arm_insn_decode_record *arm_insn_r)
 {
   uint32_t bits_a, bit_c, bit_l, reg_t, reg_v;
   uint32_t record_buf[4];
@@ -11080,62 +12625,62 @@ arm_record_vdata_transfer_insn (insn_dec
     {
       /* Handle VMOV instruction.  */
       if (bits_a == 0x00)
-        {
+	{
 	  record_buf[0] = reg_t;
-          arm_insn_r->reg_rec_count = 1;
-        }
+	  arm_insn_r->reg_rec_count = 1;
+	}
       /* Handle VMRS instruction.  */
       else if (bits_a == 0x07)
-        {
-          if (reg_t == 15)
-            reg_t = ARM_PS_REGNUM;
-
-          record_buf[0] = reg_t;
-          arm_insn_r->reg_rec_count = 1;
-        }
+	{
+	  if (reg_t == 15)
+	    reg_t = ARM_PS_REGNUM;
+
+	  record_buf[0] = reg_t;
+	  arm_insn_r->reg_rec_count = 1;
+	}
     }
   else if (!bit_l && !bit_c)
     {
       /* Handle VMOV instruction.  */
       if (bits_a == 0x00)
-        {
+	{
 	  record_buf[0] = ARM_D0_REGNUM + reg_v;
 
-          arm_insn_r->reg_rec_count = 1;
-        }
+	  arm_insn_r->reg_rec_count = 1;
+	}
       /* Handle VMSR instruction.  */
       else if (bits_a == 0x07)
-        {
-          record_buf[0] = ARM_FPSCR_REGNUM;
-          arm_insn_r->reg_rec_count = 1;
-        }
+	{
+	  record_buf[0] = ARM_FPSCR_REGNUM;
+	  arm_insn_r->reg_rec_count = 1;
+	}
     }
   else if (!bit_l && bit_c)
     {
       /* Handle VMOV instruction.  */
       if (!(bits_a & 0x04))
-        {
-          record_buf[0] = (reg_v | (bit (arm_insn_r->arm_insn, 7) << 4))
-                          + ARM_D0_REGNUM;
-          arm_insn_r->reg_rec_count = 1;
-        }
+	{
+	  record_buf[0] = (reg_v | (bit (arm_insn_r->arm_insn, 7) << 4))
+			  + ARM_D0_REGNUM;
+	  arm_insn_r->reg_rec_count = 1;
+	}
       /* Handle VDUP instruction.  */
       else
-        {
-          if (bit (arm_insn_r->arm_insn, 21))
-            {
-              reg_v = reg_v | (bit (arm_insn_r->arm_insn, 7) << 4);
-              record_buf[0] = reg_v + ARM_D0_REGNUM;
-              record_buf[1] = reg_v + ARM_D0_REGNUM + 1;
-              arm_insn_r->reg_rec_count = 2;
-            }
-          else
-            {
-              reg_v = reg_v | (bit (arm_insn_r->arm_insn, 7) << 4);
-              record_buf[0] = reg_v + ARM_D0_REGNUM;
-              arm_insn_r->reg_rec_count = 1;
-            }
-        }
+	{
+	  if (bit (arm_insn_r->arm_insn, 21))
+	    {
+	      reg_v = reg_v | (bit (arm_insn_r->arm_insn, 7) << 4);
+	      record_buf[0] = reg_v + ARM_D0_REGNUM;
+	      record_buf[1] = reg_v + ARM_D0_REGNUM + 1;
+	      arm_insn_r->reg_rec_count = 2;
+	    }
+	  else
+	    {
+	      reg_v = reg_v | (bit (arm_insn_r->arm_insn, 7) << 4);
+	      record_buf[0] = reg_v + ARM_D0_REGNUM;
+	      arm_insn_r->reg_rec_count = 1;
+	    }
+	}
     }
 
   REG_ALLOC (arm_insn_r->arm_regs, arm_insn_r->reg_rec_count, record_buf);
@@ -11145,7 +12690,7 @@ arm_record_vdata_transfer_insn (insn_dec
 /* Record handler for extension register load/store instructions.  */
 
 static int
-arm_record_exreg_ld_st_insn (insn_decode_record *arm_insn_r)
+arm_record_exreg_ld_st_insn (arm_insn_decode_record *arm_insn_r)
 {
   uint32_t opcode, single_reg;
   uint8_t op_vldm_vstm;
@@ -11340,7 +12885,7 @@ arm_record_exreg_ld_st_insn (insn_decode
 /* Record handler for arm/thumb mode VFP data processing instructions.  */
 
 static int
-arm_record_vfp_data_proc_insn (insn_decode_record *arm_insn_r)
+arm_record_vfp_data_proc_insn (arm_insn_decode_record *arm_insn_r)
 {
   uint32_t opc1, opc2, opc3, dp_op_sz, bit_d, reg_vd;
   uint32_t record_buf[4];
@@ -11360,189 +12905,189 @@ arm_record_vfp_data_proc_insn (insn_deco
   if (opc1 == 0x00)
     {
       if (bit (arm_insn_r->arm_insn, 10))
-        {
-          if (bit (arm_insn_r->arm_insn, 6))
-            curr_insn_type = INSN_T0;
-          else
-            curr_insn_type = INSN_T1;
-        }
-      else
-        {
-          if (dp_op_sz)
-            curr_insn_type = INSN_T1;
-          else
-            curr_insn_type = INSN_T2;
-        }
+	{
+	  if (bit (arm_insn_r->arm_insn, 6))
+	    curr_insn_type = INSN_T0;
+	  else
+	    curr_insn_type = INSN_T1;
+	}
+      else
+	{
+	  if (dp_op_sz)
+	    curr_insn_type = INSN_T1;
+	  else
+	    curr_insn_type = INSN_T2;
+	}
     }
   /* Handle VNMLA, VNMLS, VNMUL.  */
   else if (opc1 == 0x01)
     {
       if (dp_op_sz)
-        curr_insn_type = INSN_T1;
+	curr_insn_type = INSN_T1;
       else
-        curr_insn_type = INSN_T2;
+	curr_insn_type = INSN_T2;
     }
   /* Handle VMUL.  */
   else if (opc1 == 0x02 && !(opc3 & 0x01))
     {
       if (bit (arm_insn_r->arm_insn, 10))
-        {
-          if (bit (arm_insn_r->arm_insn, 6))
-            curr_insn_type = INSN_T0;
-          else
-            curr_insn_type = INSN_T1;
-        }
-      else
-        {
-          if (dp_op_sz)
-            curr_insn_type = INSN_T1;
-          else
-            curr_insn_type = INSN_T2;
-        }
+	{
+	  if (bit (arm_insn_r->arm_insn, 6))
+	    curr_insn_type = INSN_T0;
+	  else
+	    curr_insn_type = INSN_T1;
+	}
+      else
+	{
+	  if (dp_op_sz)
+	    curr_insn_type = INSN_T1;
+	  else
+	    curr_insn_type = INSN_T2;
+	}
     }
   /* Handle VADD, VSUB.  */
   else if (opc1 == 0x03)
     {
       if (!bit (arm_insn_r->arm_insn, 9))
-        {
-          if (bit (arm_insn_r->arm_insn, 6))
-            curr_insn_type = INSN_T0;
-          else
-            curr_insn_type = INSN_T1;
-        }
-      else
-        {
-          if (dp_op_sz)
-            curr_insn_type = INSN_T1;
-          else
-            curr_insn_type = INSN_T2;
-        }
+	{
+	  if (bit (arm_insn_r->arm_insn, 6))
+	    curr_insn_type = INSN_T0;
+	  else
+	    curr_insn_type = INSN_T1;
+	}
+      else
+	{
+	  if (dp_op_sz)
+	    curr_insn_type = INSN_T1;
+	  else
+	    curr_insn_type = INSN_T2;
+	}
     }
   /* Handle VDIV.  */
   else if (opc1 == 0x08)
     {
       if (dp_op_sz)
-        curr_insn_type = INSN_T1;
+	curr_insn_type = INSN_T1;
       else
-        curr_insn_type = INSN_T2;
+	curr_insn_type = INSN_T2;
     }
   /* Handle all other vfp data processing instructions.  */
   else if (opc1 == 0x0b)
     {
       /* Handle VMOV.  */
       if (!(opc3 & 0x01) || (opc2 == 0x00 && opc3 == 0x01))
-        {
-          if (bit (arm_insn_r->arm_insn, 4))
-            {
-              if (bit (arm_insn_r->arm_insn, 6))
-                curr_insn_type = INSN_T0;
-              else
-                curr_insn_type = INSN_T1;
-            }
-          else
-            {
-              if (dp_op_sz)
-                curr_insn_type = INSN_T1;
-              else
-                curr_insn_type = INSN_T2;
-            }
-        }
+	{
+	  if (bit (arm_insn_r->arm_insn, 4))
+	    {
+	      if (bit (arm_insn_r->arm_insn, 6))
+		curr_insn_type = INSN_T0;
+	      else
+		curr_insn_type = INSN_T1;
+	    }
+	  else
+	    {
+	      if (dp_op_sz)
+		curr_insn_type = INSN_T1;
+	      else
+		curr_insn_type = INSN_T2;
+	    }
+	}
       /* Handle VNEG and VABS.  */
       else if ((opc2 == 0x01 && opc3 == 0x01)
-              || (opc2 == 0x00 && opc3 == 0x03))
-        {
-          if (!bit (arm_insn_r->arm_insn, 11))
-            {
-              if (bit (arm_insn_r->arm_insn, 6))
-                curr_insn_type = INSN_T0;
-              else
-                curr_insn_type = INSN_T1;
-            }
-          else
-            {
-              if (dp_op_sz)
-                curr_insn_type = INSN_T1;
-              else
-                curr_insn_type = INSN_T2;
-            }
-        }
+	      || (opc2 == 0x00 && opc3 == 0x03))
+	{
+	  if (!bit (arm_insn_r->arm_insn, 11))
+	    {
+	      if (bit (arm_insn_r->arm_insn, 6))
+		curr_insn_type = INSN_T0;
+	      else
+		curr_insn_type = INSN_T1;
+	    }
+	  else
+	    {
+	      if (dp_op_sz)
+		curr_insn_type = INSN_T1;
+	      else
+		curr_insn_type = INSN_T2;
+	    }
+	}
       /* Handle VSQRT.  */
       else if (opc2 == 0x01 && opc3 == 0x03)
-        {
-          if (dp_op_sz)
-            curr_insn_type = INSN_T1;
-          else
-            curr_insn_type = INSN_T2;
-        }
+	{
+	  if (dp_op_sz)
+	    curr_insn_type = INSN_T1;
+	  else
+	    curr_insn_type = INSN_T2;
+	}
       /* Handle VCVT.  */
       else if (opc2 == 0x07 && opc3 == 0x03)
-        {
-          if (!dp_op_sz)
-            curr_insn_type = INSN_T1;
-          else
-            curr_insn_type = INSN_T2;
-        }
+	{
+	  if (!dp_op_sz)
+	    curr_insn_type = INSN_T1;
+	  else
+	    curr_insn_type = INSN_T2;
+	}
       else if (opc3 & 0x01)
-        {
-          /* Handle VCVT.  */
-          if ((opc2 == 0x08) || (opc2 & 0x0e) == 0x0c)
-            {
-              if (!bit (arm_insn_r->arm_insn, 18))
-                curr_insn_type = INSN_T2;
-              else
-                {
-                  if (dp_op_sz)
-                    curr_insn_type = INSN_T1;
-                  else
-                    curr_insn_type = INSN_T2;
-                }
-            }
-          /* Handle VCVT.  */
-          else if ((opc2 & 0x0e) == 0x0a || (opc2 & 0x0e) == 0x0e)
-            {
-              if (dp_op_sz)
-                curr_insn_type = INSN_T1;
-              else
-                curr_insn_type = INSN_T2;
-            }
-          /* Handle VCVTB, VCVTT.  */
-          else if ((opc2 & 0x0e) == 0x02)
-            curr_insn_type = INSN_T2;
-          /* Handle VCMP, VCMPE.  */
-          else if ((opc2 & 0x0e) == 0x04)
-            curr_insn_type = INSN_T3;
-        }
+	{
+	  /* Handle VCVT.  */
+	  if ((opc2 == 0x08) || (opc2 & 0x0e) == 0x0c)
+	    {
+	      if (!bit (arm_insn_r->arm_insn, 18))
+		curr_insn_type = INSN_T2;
+	      else
+		{
+		  if (dp_op_sz)
+		    curr_insn_type = INSN_T1;
+		  else
+		    curr_insn_type = INSN_T2;
+		}
+	    }
+	  /* Handle VCVT.  */
+	  else if ((opc2 & 0x0e) == 0x0a || (opc2 & 0x0e) == 0x0e)
+	    {
+	      if (dp_op_sz)
+		curr_insn_type = INSN_T1;
+	      else
+		curr_insn_type = INSN_T2;
+	    }
+	  /* Handle VCVTB, VCVTT.  */
+	  else if ((opc2 & 0x0e) == 0x02)
+	    curr_insn_type = INSN_T2;
+	  /* Handle VCMP, VCMPE.  */
+	  else if ((opc2 & 0x0e) == 0x04)
+	    curr_insn_type = INSN_T3;
+	}
     }
 
   switch (curr_insn_type)
     {
       case INSN_T0:
-        reg_vd = reg_vd | (bit_d << 4);
-        record_buf[0] = reg_vd + ARM_D0_REGNUM;
-        record_buf[1] = reg_vd + ARM_D0_REGNUM + 1;
-        arm_insn_r->reg_rec_count = 2;
-        break;
+	reg_vd = reg_vd | (bit_d << 4);
+	record_buf[0] = reg_vd + ARM_D0_REGNUM;
+	record_buf[1] = reg_vd + ARM_D0_REGNUM + 1;
+	arm_insn_r->reg_rec_count = 2;
+	break;
 
       case INSN_T1:
-        reg_vd = reg_vd | (bit_d << 4);
-        record_buf[0] = reg_vd + ARM_D0_REGNUM;
-        arm_insn_r->reg_rec_count = 1;
-        break;
+	reg_vd = reg_vd | (bit_d << 4);
+	record_buf[0] = reg_vd + ARM_D0_REGNUM;
+	arm_insn_r->reg_rec_count = 1;
+	break;
 
       case INSN_T2:
-        reg_vd = (reg_vd << 1) | bit_d;
-        record_buf[0] = reg_vd + ARM_D0_REGNUM;
-        arm_insn_r->reg_rec_count = 1;
-        break;
+	reg_vd = (reg_vd << 1) | bit_d;
+	record_buf[0] = reg_vd + ARM_D0_REGNUM;
+	arm_insn_r->reg_rec_count = 1;
+	break;
 
       case INSN_T3:
-        record_buf[0] = ARM_FPSCR_REGNUM;
-        arm_insn_r->reg_rec_count = 1;
-        break;
+	record_buf[0] = ARM_FPSCR_REGNUM;
+	arm_insn_r->reg_rec_count = 1;
+	break;
 
       default:
-        gdb_assert_not_reached ("no decoding pattern found");
-        break;
+	gdb_assert_not_reached ("no decoding pattern found");
+	break;
     }
 
   REG_ALLOC (arm_insn_r->arm_regs, arm_insn_r->reg_rec_count, record_buf);
@@ -11552,7 +13097,7 @@ arm_record_vfp_data_proc_insn (insn_deco
 /* Handling opcode 110 insns.  */
 
 static int
-arm_record_asimd_vfp_coproc (insn_decode_record *arm_insn_r)
+arm_record_asimd_vfp_coproc (arm_insn_decode_record *arm_insn_r)
 {
   uint32_t op1, op1_ebit, coproc;
 
@@ -11564,40 +13109,40 @@ arm_record_asimd_vfp_coproc (insn_decode
     {
       /* Handle extension register ld/st instructions.  */
       if (!(op1 & 0x20))
-        return arm_record_exreg_ld_st_insn (arm_insn_r);
+	return arm_record_exreg_ld_st_insn (arm_insn_r);
 
       /* 64-bit transfers between arm core and extension registers.  */
       if ((op1 & 0x3e) == 0x04)
-        return arm_record_exreg_ld_st_insn (arm_insn_r);
+	return arm_record_exreg_ld_st_insn (arm_insn_r);
     }
   else
     {
       /* Handle coprocessor ld/st instructions.  */
       if (!(op1 & 0x3a))
-        {
-          /* Store.  */
-          if (!op1_ebit)
-            return arm_record_unsupported_insn (arm_insn_r);
-          else
-            /* Load.  */
-            return arm_record_unsupported_insn (arm_insn_r);
-        }
+	{
+	  /* Store.  */
+	  if (!op1_ebit)
+	    return arm_record_unsupported_insn (arm_insn_r);
+	  else
+	    /* Load.  */
+	    return arm_record_unsupported_insn (arm_insn_r);
+	}
 
       /* Move to coprocessor from two arm core registers.  */
       if (op1 == 0x4)
-        return arm_record_unsupported_insn (arm_insn_r);
+	return arm_record_unsupported_insn (arm_insn_r);
 
       /* Move to two arm core registers from coprocessor.  */
       if (op1 == 0x5)
-        {
-          uint32_t reg_t[2];
+	{
+	  uint32_t reg_t[2];
 
-          reg_t[0] = bits (arm_insn_r->arm_insn, 12, 15);
-          reg_t[1] = bits (arm_insn_r->arm_insn, 16, 19);
-          arm_insn_r->reg_rec_count = 2;
+	  reg_t[0] = bits (arm_insn_r->arm_insn, 12, 15);
+	  reg_t[1] = bits (arm_insn_r->arm_insn, 16, 19);
+	  arm_insn_r->reg_rec_count = 2;
 
-          REG_ALLOC (arm_insn_r->arm_regs, arm_insn_r->reg_rec_count, reg_t);
-          return 0;
+	  REG_ALLOC (arm_insn_r->arm_regs, arm_insn_r->reg_rec_count, reg_t);
+	  return 0;
        }
     }
   return arm_record_unsupported_insn (arm_insn_r);
@@ -11606,10 +13151,11 @@ arm_record_asimd_vfp_coproc (insn_decode
 /* Handling opcode 111 insns.  */
 
 static int
-arm_record_coproc_data_proc (insn_decode_record *arm_insn_r)
+arm_record_coproc_data_proc (arm_insn_decode_record *arm_insn_r)
 {
   uint32_t op, op1_ebit, coproc, bits_24_25;
-  struct gdbarch_tdep *tdep = gdbarch_tdep (arm_insn_r->gdbarch);
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep> (arm_insn_r->gdbarch);
   struct regcache *reg_cache = arm_insn_r->regcache;
 
   arm_insn_r->opcode = bits (arm_insn_r->arm_insn, 24, 27);
@@ -11622,23 +13168,23 @@ arm_record_coproc_data_proc (insn_decode
   if (bits_24_25 == 0x3)
     {
       if (tdep->arm_syscall_record != NULL)
-        {
-          ULONGEST svc_operand, svc_number;
+	{
+	  ULONGEST svc_operand, svc_number;
 
-          svc_operand = (0x00ffffff & arm_insn_r->arm_insn);
+	  svc_operand = (0x00ffffff & arm_insn_r->arm_insn);
 
-          if (svc_operand)  /* OABI.  */
-            svc_number = svc_operand - 0x900000;
-          else /* EABI.  */
-            regcache_raw_read_unsigned (reg_cache, 7, &svc_number);
-
-          return tdep->arm_syscall_record (reg_cache, svc_number);
-        }
-      else
-        {
-          printf_unfiltered (_("no syscall record support\n"));
-          return -1;
-        }
+	  if (svc_operand)  /* OABI.  */
+	    svc_number = svc_operand - 0x900000;
+	  else /* EABI.  */
+	    regcache_raw_read_unsigned (reg_cache, 7, &svc_number);
+
+	  return tdep->arm_syscall_record (reg_cache, svc_number);
+	}
+      else
+	{
+	  gdb_printf (gdb_stderr, _("no syscall record support\n"));
+	  return -1;
+	}
     }
   else if (bits_24_25 == 0x02)
     {
@@ -11736,7 +13282,7 @@ arm_record_coproc_data_proc (insn_decode
 /* Handling opcode 000 insns.  */
 
 static int
-thumb_record_shift_add_sub (insn_decode_record *thumb_insn_r)
+thumb_record_shift_add_sub (arm_insn_decode_record *thumb_insn_r)
 {
   uint32_t record_buf[8];
   uint32_t reg_src1 = 0;
@@ -11756,7 +13302,7 @@ thumb_record_shift_add_sub (insn_decode_
 /* Handling opcode 001 insns.  */
 
 static int
-thumb_record_add_sub_cmp_mov (insn_decode_record *thumb_insn_r)
+thumb_record_add_sub_cmp_mov (arm_insn_decode_record *thumb_insn_r)
 {
   uint32_t record_buf[8];
   uint32_t reg_src1 = 0;
@@ -11775,7 +13321,7 @@ thumb_record_add_sub_cmp_mov (insn_decod
 /* Handling opcode 010 insns.  */
 
 static int
-thumb_record_ld_st_reg_offset (insn_decode_record *thumb_insn_r)
+thumb_record_ld_st_reg_offset (arm_insn_decode_record *thumb_insn_r)
 {
   struct regcache *reg_cache =  thumb_insn_r->regcache;
   uint32_t record_buf[8], record_buf_mem[8];
@@ -11793,28 +13339,28 @@ thumb_record_ld_st_reg_offset (insn_deco
       uint32_t opB = bits (thumb_insn_r->arm_insn, 9, 11);
 
       if (in_inclusive_range (opB, 4U, 7U))
-        {
-          /* LDR(2), LDRB(2) , LDRH(2), LDRSB, LDRSH.  */
-          reg_src1 = bits (thumb_insn_r->arm_insn,0, 2);
-          record_buf[0] = reg_src1;
-          thumb_insn_r->reg_rec_count = 1;
-        }
+	{
+	  /* LDR(2), LDRB(2) , LDRH(2), LDRSB, LDRSH.  */
+	  reg_src1 = bits (thumb_insn_r->arm_insn,0, 2);
+	  record_buf[0] = reg_src1;
+	  thumb_insn_r->reg_rec_count = 1;
+	}
       else if (in_inclusive_range (opB, 0U, 2U))
-        {
-          /* STR(2), STRB(2), STRH(2) .  */
-          reg_src1 = bits (thumb_insn_r->arm_insn, 3, 5);
-          reg_src2 = bits (thumb_insn_r->arm_insn, 6, 8);
-          regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval[0]);
-          regcache_raw_read_unsigned (reg_cache, reg_src2, &u_regval[1]);
-          if (0 == opB)
-            record_buf_mem[0] = 4;    /* STR (2).  */
-          else if (2 == opB)
-            record_buf_mem[0] = 1;    /*  STRB (2).  */
-          else if (1 == opB)
-            record_buf_mem[0] = 2;    /* STRH (2).  */
-          record_buf_mem[1] = u_regval[0] + u_regval[1];
-          thumb_insn_r->mem_rec_count = 1;
-        }
+	{
+	  /* STR(2), STRB(2), STRH(2) .  */
+	  reg_src1 = bits (thumb_insn_r->arm_insn, 3, 5);
+	  reg_src2 = bits (thumb_insn_r->arm_insn, 6, 8);
+	  regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval[0]);
+	  regcache_raw_read_unsigned (reg_cache, reg_src2, &u_regval[1]);
+	  if (0 == opB)
+	    record_buf_mem[0] = 4;    /* STR (2).  */
+	  else if (2 == opB)
+	    record_buf_mem[0] = 1;    /*  STRB (2).  */
+	  else if (1 == opB)
+	    record_buf_mem[0] = 2;    /* STRH (2).  */
+	  record_buf_mem[1] = u_regval[0] + u_regval[1];
+	  thumb_insn_r->mem_rec_count = 1;
+	}
     }
   else if (bit (thumb_insn_r->arm_insn, 11))
     {
@@ -11830,28 +13376,28 @@ thumb_record_ld_st_reg_offset (insn_deco
       opcode2 = bits (thumb_insn_r->arm_insn, 8, 9);
       opcode3 = bits (thumb_insn_r->arm_insn, 0, 2);
       if ((3 == opcode2) && (!opcode3))
-        {
-          /* Branch with exchange.  */
-          record_buf[0] = ARM_PS_REGNUM;
-          thumb_insn_r->reg_rec_count = 1;
-        }
+	{
+	  /* Branch with exchange.  */
+	  record_buf[0] = ARM_PS_REGNUM;
+	  thumb_insn_r->reg_rec_count = 1;
+	}
       else
-        {
+	{
 	  /* Format 8; special data processing insns.  */
 	  record_buf[0] = ARM_PS_REGNUM;
 	  record_buf[1] = (bit (thumb_insn_r->arm_insn, 7) << 3
 			   | bits (thumb_insn_r->arm_insn, 0, 2));
-          thumb_insn_r->reg_rec_count = 2;
-        }
+	  thumb_insn_r->reg_rec_count = 2;
+	}
     }
   else
     {
       /* Format 5; data processing insns.  */
       reg_src1 = bits (thumb_insn_r->arm_insn, 0, 2);
       if (bit (thumb_insn_r->arm_insn, 7))
-        {
-          reg_src1 = reg_src1 + 8;
-        }
+	{
+	  reg_src1 = reg_src1 + 8;
+	}
       record_buf[0] = ARM_PS_REGNUM;
       record_buf[1] = reg_src1;
       thumb_insn_r->reg_rec_count = 2;
@@ -11859,7 +13405,7 @@ thumb_record_ld_st_reg_offset (insn_deco
 
   REG_ALLOC (thumb_insn_r->arm_regs, thumb_insn_r->reg_rec_count, record_buf);
   MEM_ALLOC (thumb_insn_r->arm_mems, thumb_insn_r->mem_rec_count,
-             record_buf_mem);
+	     record_buf_mem);
 
   return 0;
 }
@@ -11867,7 +13413,7 @@ thumb_record_ld_st_reg_offset (insn_deco
 /* Handling opcode 001 insns.  */
 
 static int
-thumb_record_ld_st_imm_offset (insn_decode_record *thumb_insn_r)
+thumb_record_ld_st_imm_offset (arm_insn_decode_record *thumb_insn_r)
 {
   struct regcache *reg_cache = thumb_insn_r->regcache;
   uint32_t record_buf[8], record_buf_mem[8];
@@ -11899,7 +13445,7 @@ thumb_record_ld_st_imm_offset (insn_deco
 
   REG_ALLOC (thumb_insn_r->arm_regs, thumb_insn_r->reg_rec_count, record_buf);
   MEM_ALLOC (thumb_insn_r->arm_mems, thumb_insn_r->mem_rec_count, 
-             record_buf_mem);
+	     record_buf_mem);
 
   return 0;
 }
@@ -11907,7 +13453,7 @@ thumb_record_ld_st_imm_offset (insn_deco
 /* Handling opcode 100 insns.  */
 
 static int
-thumb_record_ld_st_stack (insn_decode_record *thumb_insn_r)
+thumb_record_ld_st_stack (arm_insn_decode_record *thumb_insn_r)
 {
   struct regcache *reg_cache = thumb_insn_r->regcache;
   uint32_t record_buf[8], record_buf_mem[8];
@@ -11955,7 +13501,7 @@ thumb_record_ld_st_stack (insn_decode_re
 
   REG_ALLOC (thumb_insn_r->arm_regs, thumb_insn_r->reg_rec_count, record_buf);
   MEM_ALLOC (thumb_insn_r->arm_mems, thumb_insn_r->mem_rec_count,
-             record_buf_mem);
+	     record_buf_mem);
 
   return 0;
 }
@@ -11963,7 +13509,7 @@ thumb_record_ld_st_stack (insn_decode_re
 /* Handling opcode 101 insns.  */
 
 static int
-thumb_record_misc (insn_decode_record *thumb_insn_r)
+thumb_record_misc (arm_insn_decode_record *thumb_insn_r)
 {
   struct regcache *reg_cache = thumb_insn_r->regcache;
 
@@ -12012,9 +13558,12 @@ thumb_record_misc (insn_decode_record *t
 	  record_buf[0] = bits (thumb_insn_r->arm_insn, 0, 2);
 	  thumb_insn_r->reg_rec_count = 1;
 	  break;
-	case 4: /* fall through  */
 	case 5:
-	  /* PUSH.  */
+	  /* PUSH with lr.  */
+	  register_count++;
+	  [[fallthrough]];
+	case 4:
+	  /* PUSH without lr.  */
 	  register_bits = bits (thumb_insn_r->arm_insn, 0, 7);
 	  regcache_raw_read_unsigned (reg_cache, ARM_SP_REGNUM, &u_regval);
 	  while (register_bits)
@@ -12023,8 +13572,7 @@ thumb_record_misc (insn_decode_record *t
 		register_count++;
 	      register_bits = register_bits >> 1;
 	    }
-	  start_address = u_regval -  \
-	    (4 * (bit (thumb_insn_r->arm_insn, 8) + register_count));
+	  start_address = u_regval - (4 * register_count);
 	  thumb_insn_r->mem_rec_count = register_count;
 	  while (register_count)
 	    {
@@ -12068,11 +13616,12 @@ thumb_record_misc (insn_decode_record *t
 	  record_buf[1] = ARM_LR_REGNUM;
 	  thumb_insn_r->reg_rec_count = 2;
 	  /* We need to save SPSR value, which is not yet done.  */
-	  printf_unfiltered (_("Process record does not support instruction "
-			       "0x%0x at address %s.\n"),
-			     thumb_insn_r->arm_insn,
-			     paddress (thumb_insn_r->gdbarch,
-				       thumb_insn_r->this_addr));
+	  gdb_printf (gdb_stderr,
+		      _("Process record does not support instruction "
+			"0x%0x at address %s.\n"),
+		      thumb_insn_r->arm_insn,
+		      paddress (thumb_insn_r->gdbarch,
+				thumb_insn_r->this_addr));
 	  return -1;
 
 	case 0xf:
@@ -12085,7 +13634,7 @@ thumb_record_misc (insn_decode_record *t
 
   REG_ALLOC (thumb_insn_r->arm_regs, thumb_insn_r->reg_rec_count, record_buf);
   MEM_ALLOC (thumb_insn_r->arm_mems, thumb_insn_r->mem_rec_count,
-             record_buf_mem);
+	     record_buf_mem);
 
   return 0;
 }
@@ -12093,9 +13642,10 @@ thumb_record_misc (insn_decode_record *t
 /* Handling opcode 110 insns.  */
 
 static int
-thumb_record_ldm_stm_swi (insn_decode_record *thumb_insn_r)                
+thumb_record_ldm_stm_swi (arm_insn_decode_record *thumb_insn_r)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (thumb_insn_r->gdbarch);
+  arm_gdbarch_tdep *tdep
+    = gdbarch_tdep<arm_gdbarch_tdep>  (thumb_insn_r->gdbarch);
   struct regcache *reg_cache = thumb_insn_r->regcache;
 
   uint32_t ret = 0; /* function return value: -1:record failure ;  0:success  */
@@ -12117,12 +13667,12 @@ thumb_record_ldm_stm_swi (insn_decode_re
       /* Get Rn.  */
       reg_src1 = bits (thumb_insn_r->arm_insn, 8, 10);
       while (register_bits)
-        {
-          if (register_bits & 0x00000001)
-            record_buf[index++] = register_count;
-          register_bits = register_bits >> 1;
-          register_count++;
-        }
+	{
+	  if (register_bits & 0x00000001)
+	    record_buf[index++] = register_count;
+	  register_bits = register_bits >> 1;
+	  register_count++;
+	}
       record_buf[index++] = reg_src1;
       thumb_insn_r->reg_rec_count = index;
     }
@@ -12134,34 +13684,34 @@ thumb_record_ldm_stm_swi (insn_decode_re
       reg_src1 = bits (thumb_insn_r->arm_insn, 8, 10);
       regcache_raw_read_unsigned (reg_cache, reg_src1, &u_regval);
       while (register_bits)
-        {
-          if (register_bits & 0x00000001)
-            register_count++;
-          register_bits = register_bits >> 1;
-        }
+	{
+	  if (register_bits & 0x00000001)
+	    register_count++;
+	  register_bits = register_bits >> 1;
+	}
       start_address = u_regval;
       thumb_insn_r->mem_rec_count = register_count;
       while (register_count)
-        {
-          record_buf_mem[(register_count * 2) - 1] = start_address;
-          record_buf_mem[(register_count * 2) - 2] = 4;
-          start_address = start_address + 4;
-          register_count--;
-        }
+	{
+	  record_buf_mem[(register_count * 2) - 1] = start_address;
+	  record_buf_mem[(register_count * 2) - 2] = 4;
+	  start_address = start_address + 4;
+	  register_count--;
+	}
     }
   else if (0x1F == opcode1)
     {
-        /* Handle arm syscall insn.  */
-        if (tdep->arm_syscall_record != NULL)
-          {
-            regcache_raw_read_unsigned (reg_cache, 7, &u_regval);
-            ret = tdep->arm_syscall_record (reg_cache, u_regval);
-          }
-        else
-          {
-            printf_unfiltered (_("no syscall record support\n"));
-            return -1;
-          }
+	/* Handle arm syscall insn.  */
+	if (tdep->arm_syscall_record != NULL)
+	  {
+	    regcache_raw_read_unsigned (reg_cache, 7, &u_regval);
+	    ret = tdep->arm_syscall_record (reg_cache, u_regval);
+	  }
+	else
+	  {
+	    gdb_printf (gdb_stderr, _("no syscall record support\n"));
+	    return -1;
+	  }
     }
 
   /* B (1), conditional branch is automatically taken care in process_record,
@@ -12169,7 +13719,7 @@ thumb_record_ldm_stm_swi (insn_decode_re
 
   REG_ALLOC (thumb_insn_r->arm_regs, thumb_insn_r->reg_rec_count, record_buf);
   MEM_ALLOC (thumb_insn_r->arm_mems, thumb_insn_r->mem_rec_count,
-             record_buf_mem);
+	     record_buf_mem);
 
   return ret;
 }
@@ -12177,7 +13727,7 @@ thumb_record_ldm_stm_swi (insn_decode_re
 /* Handling opcode 111 insns.  */
 
 static int
-thumb_record_branch (insn_decode_record *thumb_insn_r)
+thumb_record_branch (arm_insn_decode_record *thumb_insn_r)
 {
   uint32_t record_buf[8];
   uint32_t bits_h = 0;
@@ -12209,7 +13759,7 @@ thumb_record_branch (insn_decode_record
 /* Handler for thumb2 load/store multiple instructions.  */
 
 static int
-thumb2_record_ld_st_multiple (insn_decode_record *thumb2_insn_r)
+thumb2_record_ld_st_multiple (arm_insn_decode_record *thumb2_insn_r)
 {
   struct regcache *reg_cache = thumb2_insn_r->regcache;
 
@@ -12226,77 +13776,77 @@ thumb2_record_ld_st_multiple (insn_decod
   if (0 == op || 3 == op)
     {
       if (bit (thumb2_insn_r->arm_insn, INSN_S_L_BIT_NUM))
-        {
-          /* Handle RFE instruction.  */
-          record_buf[0] = ARM_PS_REGNUM;
-          thumb2_insn_r->reg_rec_count = 1;
-        }
-      else
-        {
-          /* Handle SRS instruction after reading banked SP.  */
-          return arm_record_unsupported_insn (thumb2_insn_r);
-        }
+	{
+	  /* Handle RFE instruction.  */
+	  record_buf[0] = ARM_PS_REGNUM;
+	  thumb2_insn_r->reg_rec_count = 1;
+	}
+      else
+	{
+	  /* Handle SRS instruction after reading banked SP.  */
+	  return arm_record_unsupported_insn (thumb2_insn_r);
+	}
     }
   else if (1 == op || 2 == op)
     {
       if (bit (thumb2_insn_r->arm_insn, INSN_S_L_BIT_NUM))
-        {
-          /* Handle LDM/LDMIA/LDMFD and LDMDB/LDMEA instructions.  */
-          register_bits = bits (thumb2_insn_r->arm_insn, 0, 15);
-          while (register_bits)
-            {
-              if (register_bits & 0x00000001)
-                record_buf[index++] = register_count;
-
-              register_count++;
-              register_bits = register_bits >> 1;
-            }
-          record_buf[index++] = reg_rn;
-          record_buf[index++] = ARM_PS_REGNUM;
-          thumb2_insn_r->reg_rec_count = index;
-        }
-      else
-        {
-          /* Handle STM/STMIA/STMEA and STMDB/STMFD.  */
-          register_bits = bits (thumb2_insn_r->arm_insn, 0, 15);
-          regcache_raw_read_unsigned (reg_cache, reg_rn, &u_regval);
-          while (register_bits)
-            {
-              if (register_bits & 0x00000001)
-                register_count++;
-
-              register_bits = register_bits >> 1;
-            }
-
-          if (1 == op)
-            {
-              /* Start address calculation for LDMDB/LDMEA.  */
-              start_address = u_regval;
-            }
-          else if (2 == op)
-            {
-              /* Start address calculation for LDMDB/LDMEA.  */
-              start_address = u_regval - register_count * 4;
-            }
-
-          thumb2_insn_r->mem_rec_count = register_count;
-          while (register_count)
-            {
-              record_buf_mem[register_count * 2 - 1] = start_address;
-              record_buf_mem[register_count * 2 - 2] = 4;
-              start_address = start_address + 4;
-              register_count--;
-            }
-          record_buf[0] = reg_rn;
-          record_buf[1] = ARM_PS_REGNUM;
-          thumb2_insn_r->reg_rec_count = 2;
-        }
+	{
+	  /* Handle LDM/LDMIA/LDMFD and LDMDB/LDMEA instructions.  */
+	  register_bits = bits (thumb2_insn_r->arm_insn, 0, 15);
+	  while (register_bits)
+	    {
+	      if (register_bits & 0x00000001)
+		record_buf[index++] = register_count;
+
+	      register_count++;
+	      register_bits = register_bits >> 1;
+	    }
+	  record_buf[index++] = reg_rn;
+	  record_buf[index++] = ARM_PS_REGNUM;
+	  thumb2_insn_r->reg_rec_count = index;
+	}
+      else
+	{
+	  /* Handle STM/STMIA/STMEA and STMDB/STMFD.  */
+	  register_bits = bits (thumb2_insn_r->arm_insn, 0, 15);
+	  regcache_raw_read_unsigned (reg_cache, reg_rn, &u_regval);
+	  while (register_bits)
+	    {
+	      if (register_bits & 0x00000001)
+		register_count++;
+
+	      register_bits = register_bits >> 1;
+	    }
+
+	  if (1 == op)
+	    {
+	      /* Start address calculation for LDMDB/LDMEA.  */
+	      start_address = u_regval;
+	    }
+	  else if (2 == op)
+	    {
+	      /* Start address calculation for LDMDB/LDMEA.  */
+	      start_address = u_regval - register_count * 4;
+	    }
+
+	  thumb2_insn_r->mem_rec_count = register_count;
+	  while (register_count)
+	    {
+	      record_buf_mem[register_count * 2 - 1] = start_address;
+	      record_buf_mem[register_count * 2 - 2] = 4;
+	      start_address = start_address + 4;
+	      register_count--;
+	    }
+	  record_buf[0] = reg_rn;
+	  record_buf[1] = ARM_PS_REGNUM;
+	  thumb2_insn_r->reg_rec_count = 2;
+	}
     }
 
   MEM_ALLOC (thumb2_insn_r->arm_mems, thumb2_insn_r->mem_rec_count,
-            record_buf_mem);
+	    record_buf_mem);
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   return ARM_RECORD_SUCCESS;
 }
 
@@ -12304,7 +13854,7 @@ thumb2_record_ld_st_multiple (insn_decod
    instructions.  */
 
 static int
-thumb2_record_ld_st_dual_ex_tbb (insn_decode_record *thumb2_insn_r)
+thumb2_record_ld_st_dual_ex_tbb (arm_insn_decode_record *thumb2_insn_r)
 {
   struct regcache *reg_cache = thumb2_insn_r->regcache;
 
@@ -12323,19 +13873,19 @@ thumb2_record_ld_st_dual_ex_tbb (insn_de
   if (bit (thumb2_insn_r->arm_insn, INSN_S_L_BIT_NUM))
     {
       if(!(1 == op1 && 1 == op2 && (0 == op3 || 1 == op3)))
-        {
-          reg_dest1 = bits (thumb2_insn_r->arm_insn, 12, 15);
-          record_buf[0] = reg_dest1;
-          record_buf[1] = ARM_PS_REGNUM;
-          thumb2_insn_r->reg_rec_count = 2;
-        }
+	{
+	  reg_dest1 = bits (thumb2_insn_r->arm_insn, 12, 15);
+	  record_buf[0] = reg_dest1;
+	  record_buf[1] = ARM_PS_REGNUM;
+	  thumb2_insn_r->reg_rec_count = 2;
+	}
 
       if (3 == op2 || (op1 & 2) || (1 == op1 && 1 == op2 && 7 == op3))
-        {
-          reg_dest2 = bits (thumb2_insn_r->arm_insn, 8, 11);
-          record_buf[2] = reg_dest2;
-          thumb2_insn_r->reg_rec_count = 3;
-        }
+	{
+	  reg_dest2 = bits (thumb2_insn_r->arm_insn, 8, 11);
+	  record_buf[2] = reg_dest2;
+	  thumb2_insn_r->reg_rec_count = 3;
+	}
     }
   else
     {
@@ -12343,77 +13893,77 @@ thumb2_record_ld_st_dual_ex_tbb (insn_de
       regcache_raw_read_unsigned (reg_cache, reg_rn, &u_regval[0]);
 
       if (0 == op1 && 0 == op2)
-        {
-          /* Handle STREX.  */
-          offset_imm = bits (thumb2_insn_r->arm_insn, 0, 7);
-          address = u_regval[0] + (offset_imm * 4);
-          record_buf_mem[0] = 4;
-          record_buf_mem[1] = address;
-          thumb2_insn_r->mem_rec_count = 1;
-          reg_rd = bits (thumb2_insn_r->arm_insn, 0, 3);
-          record_buf[0] = reg_rd;
-          thumb2_insn_r->reg_rec_count = 1;
-        }
+	{
+	  /* Handle STREX.  */
+	  offset_imm = bits (thumb2_insn_r->arm_insn, 0, 7);
+	  address = u_regval[0] + (offset_imm * 4);
+	  record_buf_mem[0] = 4;
+	  record_buf_mem[1] = address;
+	  thumb2_insn_r->mem_rec_count = 1;
+	  reg_rd = bits (thumb2_insn_r->arm_insn, 0, 3);
+	  record_buf[0] = reg_rd;
+	  thumb2_insn_r->reg_rec_count = 1;
+	}
       else if (1 == op1 && 0 == op2)
-        {
-          reg_rd = bits (thumb2_insn_r->arm_insn, 0, 3);
-          record_buf[0] = reg_rd;
-          thumb2_insn_r->reg_rec_count = 1;
-          address = u_regval[0];
-          record_buf_mem[1] = address;
-
-          if (4 == op3)
-            {
-              /* Handle STREXB.  */
-              record_buf_mem[0] = 1;
-              thumb2_insn_r->mem_rec_count = 1;
-            }
-          else if (5 == op3)
-            {
-              /* Handle STREXH.  */
-              record_buf_mem[0] = 2 ;
-              thumb2_insn_r->mem_rec_count = 1;
-            }
-          else if (7 == op3)
-            {
-              /* Handle STREXD.  */
-              address = u_regval[0];
-              record_buf_mem[0] = 4;
-              record_buf_mem[2] = 4;
-              record_buf_mem[3] = address + 4;
-              thumb2_insn_r->mem_rec_count = 2;
-            }
-        }
-      else
-        {
-          offset_imm = bits (thumb2_insn_r->arm_insn, 0, 7);
-
-          if (bit (thumb2_insn_r->arm_insn, 24))
-            {
-              if (bit (thumb2_insn_r->arm_insn, 23))
-                offset_addr = u_regval[0] + (offset_imm * 4);
-              else
-                offset_addr = u_regval[0] - (offset_imm * 4);
-
-              address = offset_addr;
-            }
-          else
-            address = u_regval[0];
-
-          record_buf_mem[0] = 4;
-          record_buf_mem[1] = address;
-          record_buf_mem[2] = 4;
-          record_buf_mem[3] = address + 4;
-          thumb2_insn_r->mem_rec_count = 2;
-          record_buf[0] = reg_rn;
-          thumb2_insn_r->reg_rec_count = 1;
-        }
+	{
+	  reg_rd = bits (thumb2_insn_r->arm_insn, 0, 3);
+	  record_buf[0] = reg_rd;
+	  thumb2_insn_r->reg_rec_count = 1;
+	  address = u_regval[0];
+	  record_buf_mem[1] = address;
+
+	  if (4 == op3)
+	    {
+	      /* Handle STREXB.  */
+	      record_buf_mem[0] = 1;
+	      thumb2_insn_r->mem_rec_count = 1;
+	    }
+	  else if (5 == op3)
+	    {
+	      /* Handle STREXH.  */
+	      record_buf_mem[0] = 2 ;
+	      thumb2_insn_r->mem_rec_count = 1;
+	    }
+	  else if (7 == op3)
+	    {
+	      /* Handle STREXD.  */
+	      address = u_regval[0];
+	      record_buf_mem[0] = 4;
+	      record_buf_mem[2] = 4;
+	      record_buf_mem[3] = address + 4;
+	      thumb2_insn_r->mem_rec_count = 2;
+	    }
+	}
+      else
+	{
+	  offset_imm = bits (thumb2_insn_r->arm_insn, 0, 7);
+
+	  if (bit (thumb2_insn_r->arm_insn, 24))
+	    {
+	      if (bit (thumb2_insn_r->arm_insn, 23))
+		offset_addr = u_regval[0] + (offset_imm * 4);
+	      else
+		offset_addr = u_regval[0] - (offset_imm * 4);
+
+	      address = offset_addr;
+	    }
+	  else
+	    address = u_regval[0];
+
+	  record_buf_mem[0] = 4;
+	  record_buf_mem[1] = address;
+	  record_buf_mem[2] = 4;
+	  record_buf_mem[3] = address + 4;
+	  thumb2_insn_r->mem_rec_count = 2;
+	  record_buf[0] = reg_rn;
+	  thumb2_insn_r->reg_rec_count = 1;
+	}
     }
 
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   MEM_ALLOC (thumb2_insn_r->arm_mems, thumb2_insn_r->mem_rec_count,
-            record_buf_mem);
+	    record_buf_mem);
   return ARM_RECORD_SUCCESS;
 }
 
@@ -12421,7 +13971,7 @@ thumb2_record_ld_st_dual_ex_tbb (insn_de
    instructions.  */
 
 static int
-thumb2_record_data_proc_sreg_mimm (insn_decode_record *thumb2_insn_r)
+thumb2_record_data_proc_sreg_mimm (arm_insn_decode_record *thumb2_insn_r)
 {
   uint32_t reg_rd, op;
   uint32_t record_buf[8];
@@ -12442,7 +13992,7 @@ thumb2_record_data_proc_sreg_mimm (insn_
     }
 
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   return ARM_RECORD_SUCCESS;
 }
 
@@ -12450,7 +14000,7 @@ thumb2_record_data_proc_sreg_mimm (insn_
    registers.  */
 
 static int
-thumb2_record_ps_dest_generic (insn_decode_record *thumb2_insn_r)
+thumb2_record_ps_dest_generic (arm_insn_decode_record *thumb2_insn_r)
 {
   uint32_t reg_rd;
   uint32_t record_buf[8];
@@ -12462,14 +14012,14 @@ thumb2_record_ps_dest_generic (insn_deco
   thumb2_insn_r->reg_rec_count = 2;
 
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   return ARM_RECORD_SUCCESS;
 }
 
 /* Handler for thumb2 branch and miscellaneous control instructions.  */
 
 static int
-thumb2_record_branch_misc_cntrl (insn_decode_record *thumb2_insn_r)
+thumb2_record_branch_misc_cntrl (arm_insn_decode_record *thumb2_insn_r)
 {
   uint32_t op, op1, op2;
   uint32_t record_buf[8];
@@ -12482,16 +14032,16 @@ thumb2_record_branch_misc_cntrl (insn_de
   if (!(op1 & 0x2) && 0x38 == op)
     {
       if (!(op2 & 0x3))
-        {
-          /* CPSR is going to be changed.  */
-          record_buf[0] = ARM_PS_REGNUM;
-          thumb2_insn_r->reg_rec_count = 1;
-        }
-      else
-        {
-          arm_record_unsupported_insn(thumb2_insn_r);
-          return -1;
-        }
+	{
+	  /* CPSR is going to be changed.  */
+	  record_buf[0] = ARM_PS_REGNUM;
+	  thumb2_insn_r->reg_rec_count = 1;
+	}
+      else
+	{
+	  arm_record_unsupported_insn(thumb2_insn_r);
+	  return -1;
+	}
     }
   else if (4 == (op1 & 0x5) || 5 == (op1 & 0x5))
     {
@@ -12502,14 +14052,14 @@ thumb2_record_branch_misc_cntrl (insn_de
     }
 
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   return ARM_RECORD_SUCCESS;
 }
 
 /* Handler for thumb2 store single data item instructions.  */
 
 static int
-thumb2_record_str_single_data (insn_decode_record *thumb2_insn_r)
+thumb2_record_str_single_data (arm_insn_decode_record *thumb2_insn_r)
 {
   struct regcache *reg_cache = thumb2_insn_r->regcache;
 
@@ -12536,29 +14086,29 @@ thumb2_record_str_single_data (insn_deco
     {
       /* T3 encoding.  */
       if ((0 == op1 || 1 == op1 || 2 == op1) && !(op2 & 0x20))
-        {
-          /* Handle STRB (register).  */
-          reg_rm = bits (thumb2_insn_r->arm_insn, 0, 3);
-          regcache_raw_read_unsigned (reg_cache, reg_rm, &u_regval[1]);
-          shift_imm = bits (thumb2_insn_r->arm_insn, 4, 5);
-          offset_addr = u_regval[1] << shift_imm;
-          address = u_regval[0] + offset_addr;
-        }
-      else
-        {
-          offset_imm = bits (thumb2_insn_r->arm_insn, 0, 7);
-          if (bit (thumb2_insn_r->arm_insn, 10))
-            {
-              if (bit (thumb2_insn_r->arm_insn, 9))
-                offset_addr = u_regval[0] + offset_imm;
-              else
-                offset_addr = u_regval[0] - offset_imm;
-
-              address = offset_addr;
-            }
-          else
-            address = u_regval[0];
-        }
+	{
+	  /* Handle STRB (register).  */
+	  reg_rm = bits (thumb2_insn_r->arm_insn, 0, 3);
+	  regcache_raw_read_unsigned (reg_cache, reg_rm, &u_regval[1]);
+	  shift_imm = bits (thumb2_insn_r->arm_insn, 4, 5);
+	  offset_addr = u_regval[1] << shift_imm;
+	  address = u_regval[0] + offset_addr;
+	}
+      else
+	{
+	  offset_imm = bits (thumb2_insn_r->arm_insn, 0, 7);
+	  if (bit (thumb2_insn_r->arm_insn, 10))
+	    {
+	      if (bit (thumb2_insn_r->arm_insn, 9))
+		offset_addr = u_regval[0] + offset_imm;
+	      else
+		offset_addr = u_regval[0] - offset_imm;
+
+	      address = offset_addr;
+	    }
+	  else
+	    address = u_regval[0];
+	}
     }
 
   switch (op1)
@@ -12566,22 +14116,22 @@ thumb2_record_str_single_data (insn_deco
       /* Store byte instructions.  */
       case 4:
       case 0:
-        record_buf_mem[0] = 1;
-        break;
+	record_buf_mem[0] = 1;
+	break;
       /* Store half word instructions.  */
       case 1:
       case 5:
-        record_buf_mem[0] = 2;
-        break;
+	record_buf_mem[0] = 2;
+	break;
       /* Store word instructions.  */
       case 2:
       case 6:
-        record_buf_mem[0] = 4;
-        break;
+	record_buf_mem[0] = 4;
+	break;
 
       default:
-        gdb_assert_not_reached ("no decoding pattern found");
-        break;
+	gdb_assert_not_reached ("no decoding pattern found");
+	break;
     }
 
   record_buf_mem[1] = address;
@@ -12590,16 +14140,16 @@ thumb2_record_str_single_data (insn_deco
   thumb2_insn_r->reg_rec_count = 1;
 
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   MEM_ALLOC (thumb2_insn_r->arm_mems, thumb2_insn_r->mem_rec_count,
-            record_buf_mem);
+	    record_buf_mem);
   return ARM_RECORD_SUCCESS;
 }
 
 /* Handler for thumb2 load memory hints instructions.  */
 
 static int
-thumb2_record_ld_mem_hints (insn_decode_record *thumb2_insn_r)
+thumb2_record_ld_mem_hints (arm_insn_decode_record *thumb2_insn_r)
 {
   uint32_t record_buf[8];
   uint32_t reg_rt, reg_rn;
@@ -12615,7 +14165,7 @@ thumb2_record_ld_mem_hints (insn_decode_
       thumb2_insn_r->reg_rec_count = 3;
 
       REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-                record_buf);
+		record_buf);
       return ARM_RECORD_SUCCESS;
     }
 
@@ -12625,7 +14175,7 @@ thumb2_record_ld_mem_hints (insn_decode_
 /* Handler for thumb2 load word instructions.  */
 
 static int
-thumb2_record_ld_word (insn_decode_record *thumb2_insn_r)
+thumb2_record_ld_word (arm_insn_decode_record *thumb2_insn_r)
 {
   uint32_t record_buf[8];
 
@@ -12633,8 +14183,16 @@ thumb2_record_ld_word (insn_decode_recor
   record_buf[1] = ARM_PS_REGNUM;
   thumb2_insn_r->reg_rec_count = 2;
 
+  if ((thumb2_insn_r->arm_insn & 0xfff00900) == 0xf8500900)
+    {
+      /* Detected LDR(immediate), T4, with write-back bit set.  Record Rn
+	 update.  */
+      record_buf[2] = bits (thumb2_insn_r->arm_insn, 16, 19);
+      thumb2_insn_r->reg_rec_count++;
+    }
+
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   return ARM_RECORD_SUCCESS;
 }
 
@@ -12642,7 +14200,7 @@ thumb2_record_ld_word (insn_decode_recor
    divide instructions.  */
 
 static int
-thumb2_record_lmul_lmla_div (insn_decode_record *thumb2_insn_r)
+thumb2_record_lmul_lmla_div (arm_insn_decode_record *thumb2_insn_r)
 {
   uint32_t opcode1 = 0, opcode2 = 0;
   uint32_t record_buf[8];
@@ -12671,14 +14229,14 @@ thumb2_record_lmul_lmla_div (insn_decode
     return ARM_RECORD_FAILURE;
 
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   return ARM_RECORD_SUCCESS;
 }
 
 /* Record handler for thumb32 coprocessor instructions.  */
 
 static int
-thumb2_record_coproc_insn (insn_decode_record *thumb2_insn_r)
+thumb2_record_coproc_insn (arm_insn_decode_record *thumb2_insn_r)
 {
   if (bit (thumb2_insn_r->arm_insn, 25))
     return arm_record_coproc_data_proc (thumb2_insn_r);
@@ -12689,7 +14247,7 @@ thumb2_record_coproc_insn (insn_decode_r
 /* Record handler for advance SIMD structure load/store instructions.  */
 
 static int
-thumb2_record_asimd_struct_ld_st (insn_decode_record *thumb2_insn_r)
+thumb2_record_asimd_struct_ld_st (arm_insn_decode_record *thumb2_insn_r)
 {
   struct regcache *reg_cache = thumb2_insn_r->regcache;
   uint32_t l_bit, a_bit, b_bits;
@@ -12714,151 +14272,151 @@ thumb2_record_asimd_struct_ld_st (insn_d
       address = u_regval;
 
       if (!a_bit)
-        {
-          /* Handle VST1.  */
-          if (b_bits == 0x02 || b_bits == 0x0a || (b_bits & 0x0e) == 0x06)
-            {
-              if (b_bits == 0x07)
-                bf_regs = 1;
-              else if (b_bits == 0x0a)
-                bf_regs = 2;
-              else if (b_bits == 0x06)
-                bf_regs = 3;
-              else if (b_bits == 0x02)
-                bf_regs = 4;
-              else
-                bf_regs = 0;
-
-              for (index_r = 0; index_r < bf_regs; index_r++)
-                {
-                  for (index_e = 0; index_e < f_elem; index_e++)
-                    {
-                      record_buf_mem[index_m++] = f_ebytes;
-                      record_buf_mem[index_m++] = address;
-                      address = address + f_ebytes;
-                      thumb2_insn_r->mem_rec_count += 1;
-                    }
-                }
-            }
-          /* Handle VST2.  */
-          else if (b_bits == 0x03 || (b_bits & 0x0e) == 0x08)
-            {
-              if (b_bits == 0x09 || b_bits == 0x08)
-                bf_regs = 1;
-              else if (b_bits == 0x03)
-                bf_regs = 2;
-              else
-                bf_regs = 0;
-
-              for (index_r = 0; index_r < bf_regs; index_r++)
-                for (index_e = 0; index_e < f_elem; index_e++)
-                  {
-                    for (loop_t = 0; loop_t < 2; loop_t++)
-                      {
-                        record_buf_mem[index_m++] = f_ebytes;
-                        record_buf_mem[index_m++] = address + (loop_t * f_ebytes);
-                        thumb2_insn_r->mem_rec_count += 1;
-                      }
-                    address = address + (2 * f_ebytes);
-                  }
-            }
-          /* Handle VST3.  */
-          else if ((b_bits & 0x0e) == 0x04)
-            {
-              for (index_e = 0; index_e < f_elem; index_e++)
-                {
-                  for (loop_t = 0; loop_t < 3; loop_t++)
-                    {
-                      record_buf_mem[index_m++] = f_ebytes;
-                      record_buf_mem[index_m++] = address + (loop_t * f_ebytes);
-                      thumb2_insn_r->mem_rec_count += 1;
-                    }
-                  address = address + (3 * f_ebytes);
-                }
-            }
-          /* Handle VST4.  */
-          else if (!(b_bits & 0x0e))
-            {
-              for (index_e = 0; index_e < f_elem; index_e++)
-                {
-                  for (loop_t = 0; loop_t < 4; loop_t++)
-                    {
-                      record_buf_mem[index_m++] = f_ebytes;
-                      record_buf_mem[index_m++] = address + (loop_t * f_ebytes);
-                      thumb2_insn_r->mem_rec_count += 1;
-                    }
-                  address = address + (4 * f_ebytes);
-                }
-            }
-        }
-      else
-        {
-          uint8_t bft_size = bits (thumb2_insn_r->arm_insn, 10, 11);
-
-          if (bft_size == 0x00)
-            f_ebytes = 1;
-          else if (bft_size == 0x01)
-            f_ebytes = 2;
-          else if (bft_size == 0x02)
-            f_ebytes = 4;
-          else
-            f_ebytes = 0;
-
-          /* Handle VST1.  */
-          if (!(b_bits & 0x0b) || b_bits == 0x08)
-            thumb2_insn_r->mem_rec_count = 1;
-          /* Handle VST2.  */
-          else if ((b_bits & 0x0b) == 0x01 || b_bits == 0x09)
-            thumb2_insn_r->mem_rec_count = 2;
-          /* Handle VST3.  */
-          else if ((b_bits & 0x0b) == 0x02 || b_bits == 0x0a)
-            thumb2_insn_r->mem_rec_count = 3;
-          /* Handle VST4.  */
-          else if ((b_bits & 0x0b) == 0x03 || b_bits == 0x0b)
-            thumb2_insn_r->mem_rec_count = 4;
-
-          for (index_m = 0; index_m < thumb2_insn_r->mem_rec_count; index_m++)
-            {
-              record_buf_mem[index_m] = f_ebytes;
-              record_buf_mem[index_m] = address + (index_m * f_ebytes);
-            }
-        }
+	{
+	  /* Handle VST1.  */
+	  if (b_bits == 0x02 || b_bits == 0x0a || (b_bits & 0x0e) == 0x06)
+	    {
+	      if (b_bits == 0x07)
+		bf_regs = 1;
+	      else if (b_bits == 0x0a)
+		bf_regs = 2;
+	      else if (b_bits == 0x06)
+		bf_regs = 3;
+	      else if (b_bits == 0x02)
+		bf_regs = 4;
+	      else
+		bf_regs = 0;
+
+	      for (index_r = 0; index_r < bf_regs; index_r++)
+		{
+		  for (index_e = 0; index_e < f_elem; index_e++)
+		    {
+		      record_buf_mem[index_m++] = f_ebytes;
+		      record_buf_mem[index_m++] = address;
+		      address = address + f_ebytes;
+		      thumb2_insn_r->mem_rec_count += 1;
+		    }
+		}
+	    }
+	  /* Handle VST2.  */
+	  else if (b_bits == 0x03 || (b_bits & 0x0e) == 0x08)
+	    {
+	      if (b_bits == 0x09 || b_bits == 0x08)
+		bf_regs = 1;
+	      else if (b_bits == 0x03)
+		bf_regs = 2;
+	      else
+		bf_regs = 0;
+
+	      for (index_r = 0; index_r < bf_regs; index_r++)
+		for (index_e = 0; index_e < f_elem; index_e++)
+		  {
+		    for (loop_t = 0; loop_t < 2; loop_t++)
+		      {
+			record_buf_mem[index_m++] = f_ebytes;
+			record_buf_mem[index_m++] = address + (loop_t * f_ebytes);
+			thumb2_insn_r->mem_rec_count += 1;
+		      }
+		    address = address + (2 * f_ebytes);
+		  }
+	    }
+	  /* Handle VST3.  */
+	  else if ((b_bits & 0x0e) == 0x04)
+	    {
+	      for (index_e = 0; index_e < f_elem; index_e++)
+		{
+		  for (loop_t = 0; loop_t < 3; loop_t++)
+		    {
+		      record_buf_mem[index_m++] = f_ebytes;
+		      record_buf_mem[index_m++] = address + (loop_t * f_ebytes);
+		      thumb2_insn_r->mem_rec_count += 1;
+		    }
+		  address = address + (3 * f_ebytes);
+		}
+	    }
+	  /* Handle VST4.  */
+	  else if (!(b_bits & 0x0e))
+	    {
+	      for (index_e = 0; index_e < f_elem; index_e++)
+		{
+		  for (loop_t = 0; loop_t < 4; loop_t++)
+		    {
+		      record_buf_mem[index_m++] = f_ebytes;
+		      record_buf_mem[index_m++] = address + (loop_t * f_ebytes);
+		      thumb2_insn_r->mem_rec_count += 1;
+		    }
+		  address = address + (4 * f_ebytes);
+		}
+	    }
+	}
+      else
+	{
+	  uint8_t bft_size = bits (thumb2_insn_r->arm_insn, 10, 11);
+
+	  if (bft_size == 0x00)
+	    f_ebytes = 1;
+	  else if (bft_size == 0x01)
+	    f_ebytes = 2;
+	  else if (bft_size == 0x02)
+	    f_ebytes = 4;
+	  else
+	    f_ebytes = 0;
+
+	  /* Handle VST1.  */
+	  if (!(b_bits & 0x0b) || b_bits == 0x08)
+	    thumb2_insn_r->mem_rec_count = 1;
+	  /* Handle VST2.  */
+	  else if ((b_bits & 0x0b) == 0x01 || b_bits == 0x09)
+	    thumb2_insn_r->mem_rec_count = 2;
+	  /* Handle VST3.  */
+	  else if ((b_bits & 0x0b) == 0x02 || b_bits == 0x0a)
+	    thumb2_insn_r->mem_rec_count = 3;
+	  /* Handle VST4.  */
+	  else if ((b_bits & 0x0b) == 0x03 || b_bits == 0x0b)
+	    thumb2_insn_r->mem_rec_count = 4;
+
+	  for (index_m = 0; index_m < thumb2_insn_r->mem_rec_count; index_m++)
+	    {
+	      record_buf_mem[index_m] = f_ebytes;
+	      record_buf_mem[index_m] = address + (index_m * f_ebytes);
+	    }
+	}
     }
   else
     {
       if (!a_bit)
-        {
-          /* Handle VLD1.  */
-          if (b_bits == 0x02 || b_bits == 0x0a || (b_bits & 0x0e) == 0x06)
-            thumb2_insn_r->reg_rec_count = 1;
-          /* Handle VLD2.  */
-          else if (b_bits == 0x03 || (b_bits & 0x0e) == 0x08)
-            thumb2_insn_r->reg_rec_count = 2;
-          /* Handle VLD3.  */
-          else if ((b_bits & 0x0e) == 0x04)
-            thumb2_insn_r->reg_rec_count = 3;
-          /* Handle VLD4.  */
-          else if (!(b_bits & 0x0e))
-            thumb2_insn_r->reg_rec_count = 4;
-        }
-      else
-        {
-          /* Handle VLD1.  */
-          if (!(b_bits & 0x0b) || b_bits == 0x08 || b_bits == 0x0c)
-            thumb2_insn_r->reg_rec_count = 1;
-          /* Handle VLD2.  */
-          else if ((b_bits & 0x0b) == 0x01 || b_bits == 0x09 || b_bits == 0x0d)
-            thumb2_insn_r->reg_rec_count = 2;
-          /* Handle VLD3.  */
-          else if ((b_bits & 0x0b) == 0x02 || b_bits == 0x0a || b_bits == 0x0e)
-            thumb2_insn_r->reg_rec_count = 3;
-          /* Handle VLD4.  */
-          else if ((b_bits & 0x0b) == 0x03 || b_bits == 0x0b || b_bits == 0x0f)
-            thumb2_insn_r->reg_rec_count = 4;
-
-          for (index_r = 0; index_r < thumb2_insn_r->reg_rec_count; index_r++)
-            record_buf[index_r] = reg_vd + ARM_D0_REGNUM + index_r;
-        }
+	{
+	  /* Handle VLD1.  */
+	  if (b_bits == 0x02 || b_bits == 0x0a || (b_bits & 0x0e) == 0x06)
+	    thumb2_insn_r->reg_rec_count = 1;
+	  /* Handle VLD2.  */
+	  else if (b_bits == 0x03 || (b_bits & 0x0e) == 0x08)
+	    thumb2_insn_r->reg_rec_count = 2;
+	  /* Handle VLD3.  */
+	  else if ((b_bits & 0x0e) == 0x04)
+	    thumb2_insn_r->reg_rec_count = 3;
+	  /* Handle VLD4.  */
+	  else if (!(b_bits & 0x0e))
+	    thumb2_insn_r->reg_rec_count = 4;
+	}
+      else
+	{
+	  /* Handle VLD1.  */
+	  if (!(b_bits & 0x0b) || b_bits == 0x08 || b_bits == 0x0c)
+	    thumb2_insn_r->reg_rec_count = 1;
+	  /* Handle VLD2.  */
+	  else if ((b_bits & 0x0b) == 0x01 || b_bits == 0x09 || b_bits == 0x0d)
+	    thumb2_insn_r->reg_rec_count = 2;
+	  /* Handle VLD3.  */
+	  else if ((b_bits & 0x0b) == 0x02 || b_bits == 0x0a || b_bits == 0x0e)
+	    thumb2_insn_r->reg_rec_count = 3;
+	  /* Handle VLD4.  */
+	  else if ((b_bits & 0x0b) == 0x03 || b_bits == 0x0b || b_bits == 0x0f)
+	    thumb2_insn_r->reg_rec_count = 4;
+
+	  for (index_r = 0; index_r < thumb2_insn_r->reg_rec_count; index_r++)
+	    record_buf[index_r] = reg_vd + ARM_D0_REGNUM + index_r;
+	}
     }
 
   if (bits (thumb2_insn_r->arm_insn, 0, 3) != 15)
@@ -12868,16 +14426,16 @@ thumb2_record_asimd_struct_ld_st (insn_d
     }
 
   REG_ALLOC (thumb2_insn_r->arm_regs, thumb2_insn_r->reg_rec_count,
-            record_buf);
+	    record_buf);
   MEM_ALLOC (thumb2_insn_r->arm_mems, thumb2_insn_r->mem_rec_count,
-            record_buf_mem);
+	    record_buf_mem);
   return 0;
 }
 
 /* Decodes thumb2 instruction type and invokes its record handler.  */
 
 static unsigned int
-thumb2_record_decode_insn_handler (insn_decode_record *thumb2_insn_r)
+thumb2_record_decode_insn_handler (arm_insn_decode_record *thumb2_insn_r)
 {
   uint32_t op, op1, op2;
 
@@ -12888,150 +14446,131 @@ thumb2_record_decode_insn_handler (insn_
   if (op1 == 0x01)
     {
       if (!(op2 & 0x64 ))
-        {
-          /* Load/store multiple instruction.  */
-          return thumb2_record_ld_st_multiple (thumb2_insn_r);
-        }
+	{
+	  /* Load/store multiple instruction.  */
+	  return thumb2_record_ld_st_multiple (thumb2_insn_r);
+	}
       else if ((op2 & 0x64) == 0x4)
-        {
-          /* Load/store (dual/exclusive) and table branch instruction.  */
-          return thumb2_record_ld_st_dual_ex_tbb (thumb2_insn_r);
-        }
+	{
+	  /* Load/store (dual/exclusive) and table branch instruction.  */
+	  return thumb2_record_ld_st_dual_ex_tbb (thumb2_insn_r);
+	}
       else if ((op2 & 0x60) == 0x20)
-        {
-          /* Data-processing (shifted register).  */
-          return thumb2_record_data_proc_sreg_mimm (thumb2_insn_r);
-        }
+	{
+	  /* Data-processing (shifted register).  */
+	  return thumb2_record_data_proc_sreg_mimm (thumb2_insn_r);
+	}
       else if (op2 & 0x40)
-        {
-          /* Co-processor instructions.  */
-          return thumb2_record_coproc_insn (thumb2_insn_r);
-        }
+	{
+	  /* Co-processor instructions.  */
+	  return thumb2_record_coproc_insn (thumb2_insn_r);
+	}
     }
   else if (op1 == 0x02)
     {
       if (op)
-        {
-          /* Branches and miscellaneous control instructions.  */
-          return thumb2_record_branch_misc_cntrl (thumb2_insn_r);
-        }
+	{
+	  /* Branches and miscellaneous control instructions.  */
+	  return thumb2_record_branch_misc_cntrl (thumb2_insn_r);
+	}
       else if (op2 & 0x20)
-        {
-          /* Data-processing (plain binary immediate) instruction.  */
-          return thumb2_record_ps_dest_generic (thumb2_insn_r);
-        }
-      else
-        {
-          /* Data-processing (modified immediate).  */
-          return thumb2_record_data_proc_sreg_mimm (thumb2_insn_r);
-        }
+	{
+	  /* Data-processing (plain binary immediate) instruction.  */
+	  return thumb2_record_ps_dest_generic (thumb2_insn_r);
+	}
+      else
+	{
+	  /* Data-processing (modified immediate).  */
+	  return thumb2_record_data_proc_sreg_mimm (thumb2_insn_r);
+	}
     }
   else if (op1 == 0x03)
     {
       if (!(op2 & 0x71 ))
-        {
-          /* Store single data item.  */
-          return thumb2_record_str_single_data (thumb2_insn_r);
-        }
+	{
+	  /* Store single data item.  */
+	  return thumb2_record_str_single_data (thumb2_insn_r);
+	}
       else if (!((op2 & 0x71) ^ 0x10))
-        {
-          /* Advanced SIMD or structure load/store instructions.  */
-          return thumb2_record_asimd_struct_ld_st (thumb2_insn_r);
-        }
+	{
+	  /* Advanced SIMD or structure load/store instructions.  */
+	  return thumb2_record_asimd_struct_ld_st (thumb2_insn_r);
+	}
       else if (!((op2 & 0x67) ^ 0x01))
-        {
-          /* Load byte, memory hints instruction.  */
-          return thumb2_record_ld_mem_hints (thumb2_insn_r);
-        }
+	{
+	  /* Load byte, memory hints instruction.  */
+	  return thumb2_record_ld_mem_hints (thumb2_insn_r);
+	}
       else if (!((op2 & 0x67) ^ 0x03))
-        {
-          /* Load halfword, memory hints instruction.  */
-          return thumb2_record_ld_mem_hints (thumb2_insn_r);
-        }
+	{
+	  /* Load halfword, memory hints instruction.  */
+	  return thumb2_record_ld_mem_hints (thumb2_insn_r);
+	}
       else if (!((op2 & 0x67) ^ 0x05))
-        {
-          /* Load word instruction.  */
-          return thumb2_record_ld_word (thumb2_insn_r);
-        }
+	{
+	  /* Load word instruction.  */
+	  return thumb2_record_ld_word (thumb2_insn_r);
+	}
       else if (!((op2 & 0x70) ^ 0x20))
-        {
-          /* Data-processing (register) instruction.  */
-          return thumb2_record_ps_dest_generic (thumb2_insn_r);
-        }
+	{
+	  /* Data-processing (register) instruction.  */
+	  return thumb2_record_ps_dest_generic (thumb2_insn_r);
+	}
       else if (!((op2 & 0x78) ^ 0x30))
-        {
-          /* Multiply, multiply accumulate, abs diff instruction.  */
-          return thumb2_record_ps_dest_generic (thumb2_insn_r);
-        }
+	{
+	  /* Multiply, multiply accumulate, abs diff instruction.  */
+	  return thumb2_record_ps_dest_generic (thumb2_insn_r);
+	}
       else if (!((op2 & 0x78) ^ 0x38))
-        {
-          /* Long multiply, long multiply accumulate, and divide.  */
-          return thumb2_record_lmul_lmla_div (thumb2_insn_r);
-        }
+	{
+	  /* Long multiply, long multiply accumulate, and divide.  */
+	  return thumb2_record_lmul_lmla_div (thumb2_insn_r);
+	}
       else if (op2 & 0x40)
-        {
-          /* Co-processor instructions.  */
-          return thumb2_record_coproc_insn (thumb2_insn_r);
-        }
+	{
+	  /* Co-processor instructions.  */
+	  return thumb2_record_coproc_insn (thumb2_insn_r);
+	}
    }
 
   return -1;
 }
 
 namespace {
-/* Abstract memory reader.  */
+/* Abstract instruction reader.  */
 
-class abstract_memory_reader
+class abstract_instruction_reader
 {
 public:
-  /* Read LEN bytes of target memory at address MEMADDR, placing the
-     results in GDB's memory at BUF.  Return true on success.  */
+  /* Read one instruction of size LEN from address MEMADDR and using
+     BYTE_ORDER endianness.  */
 
-  virtual bool read (CORE_ADDR memaddr, gdb_byte *buf, const size_t len) = 0;
+  virtual ULONGEST read (CORE_ADDR memaddr, const size_t len,
+			 enum bfd_endian byte_order) = 0;
 };
 
 /* Instruction reader from real target.  */
 
-class instruction_reader : public abstract_memory_reader
+class instruction_reader : public abstract_instruction_reader
 {
  public:
-  bool read (CORE_ADDR memaddr, gdb_byte *buf, const size_t len) override
+  ULONGEST read (CORE_ADDR memaddr, const size_t len,
+		 enum bfd_endian byte_order) override
   {
-    if (target_read_memory (memaddr, buf, len))
-      return false;
-    else
-      return true;
+    return read_code_unsigned_integer (memaddr, len, byte_order);
   }
 };
 
 } // namespace
 
-/* Extracts arm/thumb/thumb2 insn depending on the size, and returns 0 on success 
-and positive val on failure.  */
-
-static int
-extract_arm_insn (abstract_memory_reader& reader,
-		  insn_decode_record *insn_record, uint32_t insn_size)
-{
-  gdb_byte buf[insn_size];
-
-  memset (&buf[0], 0, insn_size);
-  
-  if (!reader.read (insn_record->this_addr, buf, insn_size))
-    return 1;
-  insn_record->arm_insn = (uint32_t) extract_unsigned_integer (&buf[0],
-                           insn_size, 
-			   gdbarch_byte_order_for_code (insn_record->gdbarch));
-  return 0;
-}
-
-typedef int (*sti_arm_hdl_fp_t) (insn_decode_record*);
+typedef int (*sti_arm_hdl_fp_t) (arm_insn_decode_record*);
 
 /* Decode arm/thumb insn depending on condition cods and opcodes; and
    dispatch it.  */
 
 static int
-decode_insn (abstract_memory_reader &reader, insn_decode_record *arm_record,
+decode_insn (abstract_instruction_reader &reader,
+	     arm_insn_decode_record *arm_record,
 	     record_type_t record_type, uint32_t insn_size)
 {
 
@@ -13065,19 +14604,12 @@ decode_insn (abstract_memory_reader &rea
 
   uint32_t ret = 0;    /* return value: negative:failure   0:success.  */
   uint32_t insn_id = 0;
+  enum bfd_endian code_endian
+    = gdbarch_byte_order_for_code (arm_record->gdbarch);
+  arm_record->arm_insn
+    = reader.read (arm_record->this_addr, insn_size, code_endian);
 
-  if (extract_arm_insn (reader, arm_record, insn_size))
-    {
-      if (record_debug)
-	{
-	  printf_unfiltered (_("Process record: error reading memory at "
-			       "addr %s len = %d.\n"),
-			     paddress (arm_record->gdbarch,
-				       arm_record->this_addr), insn_size);
-	}
-      return -1;
-    }
-  else if (ARM_RECORD == record_type)
+  if (ARM_RECORD == record_type)
     {
       arm_record->cond = bits (arm_record->arm_insn, 28, 31);
       insn_id = bits (arm_record->arm_insn, 25, 27);
@@ -13137,43 +14669,41 @@ decode_insn (abstract_memory_reader &rea
 #if GDB_SELF_TEST
 namespace selftests {
 
-/* Provide both 16-bit and 32-bit thumb instructions.  */
+/* Instruction reader class for selftests.
+
+   For 16-bit Thumb instructions, an array of uint16_t should be used.
 
-class instruction_reader_thumb : public abstract_memory_reader
+   For 32-bit Thumb instructions and regular 32-bit Arm instructions, an array
+   of uint32_t should be used.  */
+
+template<typename T>
+class instruction_reader_selftest : public abstract_instruction_reader
 {
 public:
   template<size_t SIZE>
-  instruction_reader_thumb (enum bfd_endian endian,
-			    const uint16_t (&insns)[SIZE])
-    : m_endian (endian), m_insns (insns), m_insns_size (SIZE)
+  instruction_reader_selftest (const T (&insns)[SIZE])
+    : m_insns (insns), m_insns_size (SIZE)
   {}
 
-  bool read (CORE_ADDR memaddr, gdb_byte *buf, const size_t len) override
+  ULONGEST read (CORE_ADDR memaddr, const size_t length,
+		 enum bfd_endian byte_order) override
   {
-    SELF_CHECK (len == 4 || len == 2);
-    SELF_CHECK (memaddr % 2 == 0);
-    SELF_CHECK ((memaddr / 2) < m_insns_size);
+    SELF_CHECK (length == sizeof (T));
+    SELF_CHECK (memaddr % sizeof (T) == 0);
+    SELF_CHECK ((memaddr / sizeof (T)) < m_insns_size);
 
-    store_unsigned_integer (buf, 2, m_endian, m_insns[memaddr / 2]);
-    if (len == 4)
-      {
-	store_unsigned_integer (&buf[2], 2, m_endian,
-				m_insns[memaddr / 2 + 1]);
-      }
-    return true;
+    return m_insns[memaddr / sizeof (T)];
   }
 
 private:
-  enum bfd_endian m_endian;
-  const uint16_t *m_insns;
-  size_t m_insns_size;
+  const T *m_insns;
+  const size_t m_insns_size;
 };
 
 static void
 arm_record_test (void)
 {
   struct gdbarch_info info;
-  gdbarch_info_init (&info);
   info.bfd_arch_info = bfd_scan_arch ("arm");
 
   struct gdbarch *gdbarch = gdbarch_find_by_info (info);
@@ -13182,11 +14712,13 @@ arm_record_test (void)
 
   /* 16-bit Thumb instructions.  */
   {
-    insn_decode_record arm_record;
+    arm_insn_decode_record arm_record;
 
-    memset (&arm_record, 0, sizeof (insn_decode_record));
+    memset (&arm_record, 0, sizeof (arm_insn_decode_record));
     arm_record.gdbarch = gdbarch;
 
+    /* Use the endian-free representation of the instructions here.  The test
+       will handle endianness conversions.  */
     static const uint16_t insns[] = {
       /* db b2	uxtb	r3, r3 */
       0xb2db,
@@ -13194,8 +14726,7 @@ arm_record_test (void)
       0x58cd,
     };
 
-    enum bfd_endian endian = gdbarch_byte_order_for_code (arm_record.gdbarch);
-    instruction_reader_thumb reader (endian, insns);
+    instruction_reader_selftest<uint16_t> reader (insns);
     int ret = decode_insn (reader, &arm_record, THUMB_RECORD,
 			   THUMB_INSN_SIZE_BYTES);
 
@@ -13216,18 +14747,19 @@ arm_record_test (void)
 
   /* 32-bit Thumb-2 instructions.  */
   {
-    insn_decode_record arm_record;
+    arm_insn_decode_record arm_record;
 
-    memset (&arm_record, 0, sizeof (insn_decode_record));
+    memset (&arm_record, 0, sizeof (arm_insn_decode_record));
     arm_record.gdbarch = gdbarch;
 
-    static const uint16_t insns[] = {
-      /* 1d ee 70 7f	 mrc	15, 0, r7, cr13, cr0, {3} */
-      0xee1d, 0x7f70,
+    /* Use the endian-free representation of the instruction here.  The test
+       will handle endianness conversions.  */
+    static const uint32_t insns[] = {
+      /* mrc	15, 0, r7, cr13, cr0, {3} */
+      0x7f70ee1d,
     };
 
-    enum bfd_endian endian = gdbarch_byte_order_for_code (arm_record.gdbarch);
-    instruction_reader_thumb reader (endian, insns);
+    instruction_reader_selftest<uint32_t> reader (insns);
     int ret = decode_insn (reader, &arm_record, THUMB2_RECORD,
 			   THUMB2_INSN_SIZE_BYTES);
 
@@ -13236,14 +14768,89 @@ arm_record_test (void)
     SELF_CHECK (arm_record.reg_rec_count == 1);
     SELF_CHECK (arm_record.arm_regs[0] == 7);
   }
+
+  /* 32-bit instructions.  */
+  {
+    arm_insn_decode_record arm_record;
+
+    memset (&arm_record, 0, sizeof (arm_insn_decode_record));
+    arm_record.gdbarch = gdbarch;
+
+    /* Use the endian-free representation of the instruction here.  The test
+       will handle endianness conversions.  */
+    static const uint32_t insns[] = {
+      /* mov     r5, r0 */
+      0xe1a05000,
+    };
+
+    instruction_reader_selftest<uint32_t> reader (insns);
+    int ret = decode_insn (reader, &arm_record, ARM_RECORD,
+			   ARM_INSN_SIZE_BYTES);
+
+    SELF_CHECK (ret == 0);
+  }
+}
+
+/* Instruction reader from manually cooked instruction sequences.  */
+
+class test_arm_instruction_reader : public arm_instruction_reader
+{
+public:
+  explicit test_arm_instruction_reader (gdb::array_view<const uint32_t> insns)
+    : m_insns (insns)
+  {}
+
+  uint32_t read (CORE_ADDR memaddr, enum bfd_endian byte_order) const override
+  {
+    SELF_CHECK (memaddr % 4 == 0);
+    SELF_CHECK (memaddr / 4 < m_insns.size ());
+
+    return m_insns[memaddr / 4];
+  }
+
+private:
+  const gdb::array_view<const uint32_t> m_insns;
+};
+
+static void
+arm_analyze_prologue_test ()
+{
+  for (bfd_endian endianness : {BFD_ENDIAN_LITTLE, BFD_ENDIAN_BIG})
+    {
+      struct gdbarch_info info;
+      info.byte_order = endianness;
+      info.byte_order_for_code = endianness;
+      info.bfd_arch_info = bfd_scan_arch ("arm");
+
+      struct gdbarch *gdbarch = gdbarch_find_by_info (info);
+
+      SELF_CHECK (gdbarch != NULL);
+
+      /* The "sub" instruction contains an immediate value rotate count of 0,
+	 which resulted in a 32-bit shift of a 32-bit value, caught by
+	 UBSan.  */
+      const uint32_t insns[] = {
+	  0xe92d4ff0, /* push    {r4, r5, r6, r7, r8, r9, sl, fp, lr} */
+	  0xe1a05000, /* mov     r5, r0 */
+	  0xe5903020, /* ldr     r3, [r0, #32] */
+	  0xe24dd044, /* sub     sp, sp, #68     ; 0x44 */
+      };
+
+      test_arm_instruction_reader mem_reader (insns);
+      arm_prologue_cache cache;
+      arm_cache_init (&cache, gdbarch);
+
+      arm_analyze_prologue (gdbarch, 0, sizeof (insns) - 1, &cache, mem_reader);
+    }
 }
-} // namespace selftests
+
+} /* namespace selftests */
 #endif /* GDB_SELF_TEST */
 
 /* Cleans up local record registers and memory allocations.  */
 
 static void 
-deallocate_reg_mem (insn_decode_record *record)
+deallocate_reg_mem (arm_insn_decode_record *record)
 {
   xfree (record->arm_regs);
   xfree (record->arm_mems);    
@@ -13265,9 +14872,9 @@ arm_process_record (struct gdbarch *gdba
 
   ULONGEST u_regval = 0;
 
-  insn_decode_record arm_record;
+  arm_insn_decode_record arm_record;
 
-  memset (&arm_record, 0, sizeof (insn_decode_record));
+  memset (&arm_record, 0, sizeof (arm_insn_decode_record));
   arm_record.regcache = regcache;
   arm_record.this_addr = insn_addr;
   arm_record.gdbarch = gdbarch;
@@ -13275,23 +14882,16 @@ arm_process_record (struct gdbarch *gdba
 
   if (record_debug > 1)
     {
-      fprintf_unfiltered (gdb_stdlog, "Process record: arm_process_record "
-			  "addr = %s\n",
-      paddress (gdbarch, arm_record.this_addr));
+      gdb_printf (gdb_stdlog, "Process record: arm_process_record "
+		  "addr = %s\n",
+		  paddress (gdbarch, arm_record.this_addr));
     }
 
   instruction_reader reader;
-  if (extract_arm_insn (reader, &arm_record, 2))
-    {
-      if (record_debug)
-	{
-	  printf_unfiltered (_("Process record: error reading memory at "
-			       "addr %s len = %d.\n"),
-			     paddress (arm_record.gdbarch,
-				       arm_record.this_addr), 2);
-	}
-      return -1;
-    }
+  enum bfd_endian code_endian
+    = gdbarch_byte_order_for_code (arm_record.gdbarch);
+  arm_record.arm_insn
+    = reader.read (arm_record.this_addr, 2, code_endian);
 
   /* Check the insn, whether it is thumb or arm one.  */
 
@@ -13359,14 +14959,14 @@ arm_process_record (struct gdbarch *gdba
 /* See arm-tdep.h.  */
 
 const target_desc *
-arm_read_description (arm_fp_type fp_type)
+arm_read_description (arm_fp_type fp_type, bool tls)
 {
-  struct target_desc *tdesc = tdesc_arm_list[fp_type];
+  struct target_desc *tdesc = tdesc_arm_list[fp_type][tls];
 
   if (tdesc == nullptr)
     {
-      tdesc = arm_create_target_description (fp_type);
-      tdesc_arm_list[fp_type] = tdesc;
+      tdesc = arm_create_target_description (fp_type, tls);
+      tdesc_arm_list[fp_type][tls] = 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.20200303/gdb/arm-tdep.h ./gdb/arm-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-tdep.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,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/>.  */
 
-#ifndef ARM_TDEP_H
-#define ARM_TDEP_H
+#ifndef GDB_ARM_TDEP_H
+#define GDB_ARM_TDEP_H
 
 /* Forward declarations.  */
 struct regset;
@@ -87,57 +87,88 @@ enum struct_return
 };
 
 /* Target-dependent structure in gdbarch.  */
-struct gdbarch_tdep
+struct arm_gdbarch_tdep : gdbarch_tdep_base
 {
   /* The ABI for this architecture.  It should never be set to
      ARM_ABI_AUTO.  */
-  enum arm_abi_kind arm_abi;
+  enum arm_abi_kind arm_abi {};
 
-  enum arm_float_model fp_model; /* Floating point calling conventions.  */
+  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 = false;	/* Does the target report the FPA registers?  */
+  bool have_wmmx_registers = false;	/* 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
+  int vfp_register_count = 0;
+  bool have_s_pseudos = false;	/* Are we synthesizing the single precision
 				   VFP registers?  */
-  int have_neon_pseudos;	/* Are we synthesizing the quad precision
-				   NEON registers?  Requires
-				   have_vfp_pseudos.  */
-  int have_neon;		/* Do we have a NEON unit?  */
-
-  int is_m;			/* Does the target follow the "M" profile.  */
-  CORE_ADDR lowest_pc;		/* Lowest address at which instructions 
+  int s_pseudo_base = 0;	/* Register number for the first S pseudo
+				   register.  */
+  int s_pseudo_count = 0;	/* Number of S pseudo registers.  */
+  bool have_q_pseudos = false;	/* Are we synthesizing the quad precision
+				   Q (NEON or MVE) registers?  Requires
+				   have_s_pseudos.  */
+  int q_pseudo_base = 0;	/* Register number for the first quad
+				   precision pseudo register.  */
+  int q_pseudo_count = 0;	/* Number of quad precision pseudo
+				   registers.  */
+  bool have_neon = false;	/* Do we have a NEON unit?  */
+
+  bool have_mve = false;	/* Do we have a MVE extension?  */
+  int mve_vpr_regnum = 0;	/* MVE VPR register number.  */
+  int mve_pseudo_base = 0;	/* Number of the first MVE pseudo register.  */
+  int mve_pseudo_count = 0;	/* Total number of MVE pseudo registers.  */
+
+  bool have_pacbti = false;	/* True if we have the ARMv8.1-m PACBTI
+				   extensions.  */
+  int pacbti_pseudo_base = 0;	/* Number of the first PACBTI pseudo
+				   register.  */
+  int pacbti_pseudo_count = 0;	/* Total number of PACBTI pseudo registers.  */
+
+  int m_profile_msp_regnum = ARM_SP_REGNUM;	/* M-profile MSP register number.  */
+  int m_profile_psp_regnum = ARM_SP_REGNUM;	/* M-profile PSP register number.  */
+
+  /* Secure and Non-secure stack pointers with security extension.  */
+  int m_profile_msp_ns_regnum = ARM_SP_REGNUM;	/* M-profile MSP_NS register number.  */
+  int m_profile_psp_ns_regnum = ARM_SP_REGNUM;	/* M-profile PSP_NS register number.  */
+  int m_profile_msp_s_regnum = ARM_SP_REGNUM;	/* M-profile MSP_S register number.  */
+  int m_profile_psp_s_regnum = ARM_SP_REGNUM;	/* M-profile PSP_S register number.  */
+
+  int tls_regnum = 0;		/* Number of the tpidruro register.  */
+
+  bool is_m = false;		/* Does the target follow the "M" profile.  */
+  bool have_sec_ext = false;	/* Do we have security extensions?  */
+  CORE_ADDR lowest_pc = 0;	/* Lowest address at which instructions
 				   will appear.  */
 
-  const gdb_byte *arm_breakpoint;	/* Breakpoint pattern for an ARM insn.  */
-  int arm_breakpoint_size;	/* And its size.  */
-  const gdb_byte *thumb_breakpoint;	/* Breakpoint pattern for a Thumb insn.  */
-  int thumb_breakpoint_size;	/* And its size.  */
+  const gdb_byte *arm_breakpoint = nullptr;	/* Breakpoint pattern for an ARM insn.  */
+  int arm_breakpoint_size = 0;	/* And its size.  */
+  const gdb_byte *thumb_breakpoint = nullptr;	/* Breakpoint pattern for a Thumb insn.  */
+  int thumb_breakpoint_size = 0;	/* And its size.  */
 
   /* If the Thumb breakpoint is an undefined instruction (which is
      affected by IT blocks) rather than a BKPT instruction (which is
      not), then we need a 32-bit Thumb breakpoint to preserve the
      instruction count in IT blocks.  */
-  const gdb_byte *thumb2_breakpoint;
-  int thumb2_breakpoint_size;
+  const gdb_byte *thumb2_breakpoint = nullptr;
+  int thumb2_breakpoint_size = 0;
 
-  int jb_pc;			/* Offset to PC value in jump buffer.
+  int jb_pc = 0;			/* Offset to PC value in jump buffer.
 				   If this is negative, longjmp support
 				   will be disabled.  */
-  size_t jb_elt_size;		/* And the size of each entry in the buf.  */
+  size_t jb_elt_size = 0;		/* And the size of each entry in the buf.  */
 
   /* Convention for returning structures.  */
-  enum struct_return struct_return;
+  enum struct_return struct_return {};
 
   /* ISA-specific data types.  */
-  struct type *arm_ext_type;
-  struct type *neon_double_type;
-  struct type *neon_quad_type;
+  struct type *arm_ext_type = nullptr;
+  struct type *neon_double_type = nullptr;
+  struct type *neon_quad_type = nullptr;
 
    /* syscall record.  */
-  int (*arm_syscall_record) (struct regcache *regcache, unsigned long svc_number);
+  int (*arm_syscall_record) (struct regcache *regcache,
+			     unsigned long svc_number) = nullptr;
 };
 
 /* Structures used for displaced stepping.  */
@@ -149,7 +180,8 @@ struct gdbarch_tdep
    sequence) and any scratch words, etc.  */
 #define ARM_DISPLACED_MODIFIED_INSNS	8
 
-struct arm_displaced_step_closure : public displaced_step_closure
+struct arm_displaced_step_copy_insn_closure
+  : public displaced_step_copy_insn_closure
 {
   ULONGEST tmp[DISPLACED_TEMPS];
   int rd;
@@ -194,9 +226,9 @@ struct arm_displaced_step_closure : publ
     struct
     {
       /* If non-NULL, override generic SVC handling (e.g. for a particular
-         OS).  */
+	 OS).  */
       int (*copy_svc_os) (struct gdbarch *gdbarch, struct regcache *regs,
-			  arm_displaced_step_closure *dsc);
+			  arm_displaced_step_copy_insn_closure *dsc);
     } svc;
   } u;
 
@@ -215,7 +247,7 @@ struct arm_displaced_step_closure : publ
   CORE_ADDR insn_addr;
   CORE_ADDR scratch_base;
   void (*cleanup) (struct gdbarch *, struct regcache *,
-		   arm_displaced_step_closure *);
+		   arm_displaced_step_copy_insn_closure *);
 };
 
 /* Values for the WRITE_PC argument to displaced_write_reg.  If the register
@@ -234,19 +266,20 @@ enum pc_write_style
 extern void
   arm_process_displaced_insn (struct gdbarch *gdbarch, CORE_ADDR from,
 			      CORE_ADDR to, struct regcache *regs,
-			      arm_displaced_step_closure *dsc);
+			      arm_displaced_step_copy_insn_closure *dsc);
 extern void
   arm_displaced_init_closure (struct gdbarch *gdbarch, CORE_ADDR from,
-			      CORE_ADDR to, arm_displaced_step_closure *dsc);
+			      CORE_ADDR to,
+			      arm_displaced_step_copy_insn_closure *dsc);
 extern ULONGEST
-  displaced_read_reg (struct regcache *regs, arm_displaced_step_closure *dsc,
+  displaced_read_reg (regcache *regs, arm_displaced_step_copy_insn_closure *dsc,
 		      int regno);
 extern void
   displaced_write_reg (struct regcache *regs,
-		       arm_displaced_step_closure *dsc, int regno,
+		       arm_displaced_step_copy_insn_closure *dsc, int regno,
 		       ULONGEST val, enum pc_write_style write_pc);
 
-CORE_ADDR arm_skip_stub (struct frame_info *, CORE_ADDR);
+CORE_ADDR arm_skip_stub (const frame_info_ptr &, CORE_ADDR);
 
 ULONGEST arm_get_next_pcs_read_memory_unsigned_integer (CORE_ADDR memaddr,
 							int len,
@@ -259,11 +292,12 @@ int arm_get_next_pcs_is_thumb (struct ar
 
 std::vector<CORE_ADDR> arm_software_single_step (struct regcache *);
 int arm_is_thumb (struct regcache *regcache);
-int arm_frame_is_thumb (struct frame_info *frame);
+int arm_frame_is_thumb (const frame_info_ptr &frame);
 
 extern void arm_displaced_step_fixup (struct gdbarch *,
-				      struct displaced_step_closure *,
-				      CORE_ADDR, CORE_ADDR, struct regcache *);
+				      displaced_step_copy_insn_closure *,
+				      CORE_ADDR, CORE_ADDR,
+				      struct regcache *, bool);
 
 /* Return the bit mask in ARM_PS_REGNUM that indicates Thumb mode.  */
 extern int arm_psr_thumb_bit (struct gdbarch *);
@@ -273,7 +307,7 @@ extern int arm_psr_thumb_bit (struct gdb
 extern int arm_pc_is_thumb (struct gdbarch *, CORE_ADDR);
 
 extern int arm_process_record (struct gdbarch *gdbarch, 
-                               struct regcache *regcache, CORE_ADDR addr);
+			       struct regcache *regcache, CORE_ADDR addr);
 /* Functions exported from arm-bsd-tdep.h.  */
 
 /* Return the appropriate register set for the core section identified
@@ -286,10 +320,10 @@ extern void
 				       const struct regcache *regcache);
 
 /* Get the correct Arm target description with given FP hardware type.  */
-const target_desc *arm_read_description (arm_fp_type fp_type);
+const target_desc *arm_read_description (arm_fp_type fp_type, bool tls);
 
 /* Get the correct Arm M-Profile target description with given hardware
    type.  */
 const target_desc *arm_read_mprofile_description (arm_m_profile_type m_type);
 
-#endif /* arm-tdep.h */
+#endif /* GDB_ARM_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.20200303/gdb/arm-wince-tdep.c ./gdb/arm-wince-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/arm-wince-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/arm-wince-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,7 +18,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/>.  */
 
-#include "defs.h"
 #include "osabi.h"
 #include "gdbcore.h"
 #include "target.h"
@@ -36,12 +35,11 @@ static const gdb_byte arm_wince_thumb_le
 #define ARM_WINCE_JB_PC			10
 
 static CORE_ADDR
-arm_pe_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
+arm_pe_skip_trampoline_code (const frame_info_ptr &frame, CORE_ADDR pc)
 {
   struct gdbarch *gdbarch = get_frame_arch (frame);
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   ULONGEST indirect;
-  struct bound_minimal_symbol indsym;
   const char *symname;
   CORE_ADDR next_pc;
 
@@ -62,7 +60,7 @@ arm_pe_skip_trampoline_code (struct fram
   if (indirect == 0)
     return 0;
 
-  indsym = lookup_minimal_symbol_by_pc (indirect);
+  bound_minimal_symbol indsym = lookup_minimal_symbol_by_pc (indirect);
   if (indsym.minsym == NULL)
     return 0;
 
@@ -101,7 +99,7 @@ arm_wince_skip_main_prologue (struct gdb
 
       long offset = sign_extend (this_instr & 0x000fffff, 23) << 2;
       CORE_ADDR call_dest = (pc + 8 + offset) & 0xffffffffU;
-      struct bound_minimal_symbol s = lookup_minimal_symbol_by_pc (call_dest);
+      bound_minimal_symbol s = lookup_minimal_symbol_by_pc (call_dest);
 
       if (s.minsym != NULL
 	  && s.minsym->linkage_name () != NULL
@@ -115,7 +113,7 @@ arm_wince_skip_main_prologue (struct gdb
 static void
 arm_wince_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+  arm_gdbarch_tdep *tdep = gdbarch_tdep<arm_gdbarch_tdep> (gdbarch);
 
   windows_init_abi (info, gdbarch);
 
@@ -137,7 +135,7 @@ arm_wince_init_abi (struct gdbarch_info
   set_gdbarch_skip_trampoline_code (gdbarch, arm_pe_skip_trampoline_code);
 
   /* Single stepping.  */
-  set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
+  set_gdbarch_get_next_pcs (gdbarch, arm_software_single_step);
 
   /* Skip call to __gccmain that gcc places in main.  */
   set_gdbarch_skip_main_prologue (gdbarch, arm_wince_skip_main_prologue);
@@ -154,12 +152,11 @@ arm_wince_osabi_sniffer (bfd *abfd)
   return GDB_OSABI_UNKNOWN;
 }
 
-void
-_initialize_arm_wince_tdep (void)
+INIT_GDB_FILE (arm_wince_tdep)
 {
   gdbarch_register_osabi_sniffer (bfd_arch_arm, bfd_target_coff_flavour,
-                                  arm_wince_osabi_sniffer);
+				  arm_wince_osabi_sniffer);
 
   gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_WINCE,
-                          arm_wince_init_abi);
+			  arm_wince_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.20200303/gdb/async-event.c ./gdb/async-event.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/async-event.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/async-event.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,371 @@
+/* Async events for the GDB event loop.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "async-event.h"
+
+#include "ser-event.h"
+#include "top.h"
+#include "ui.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;
+
+  /* User-friendly name of this handler.  */
+  const char *name;
+};
+
+/* 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;
+
+  /* User-friendly name of this handler.  */
+  const char *name;
+};
+
+/* 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, "async-signals");
+}
+
+
+
+/* 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,
+			     const char *name)
+{
+  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;
+  async_handler_ptr->name = name;
+  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)
+{
+  if (debug_event_loop != debug_event_loop_kind::OFF)
+    {
+      /* This is called by signal handlers, so we print it "by hand" using
+	 the async-signal-safe methods.  */
+      const char head[] = ("[event-loop] mark_async_signal_handler: marking"
+			   "async signal handler `");
+      gdb_stdlog->write_async_safe (head, strlen (head));
+
+      gdb_stdlog->write_async_safe (async_handler_ptr->name,
+				    strlen (async_handler_ptr->name));
+
+      const char tail[] = "`\n";
+      gdb_stdlog->write_async_safe (tail, strlen (tail));
+    }
+
+  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)
+{
+  event_loop_debug_printf ("clearing async signal handler `%s`",
+			   async_handler_ptr->name);
+  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;
+      event_loop_debug_printf ("invoking async signal handler `%s`",
+			       async_handler_ptr->name);
+      (*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;
+}
+
+/* See async-event.h.  */
+
+async_event_handler *
+create_async_event_handler (async_event_handler_func *proc,
+			    gdb_client_data client_data,
+			    const char *name)
+{
+  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;
+  h->name = name;
+  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)
+{
+  event_loop_debug_printf ("marking async event handler `%s` "
+			   "(previous state was %d)",
+			   async_handler_ptr->name,
+			   async_handler_ptr->ready);
+  async_handler_ptr->ready = 1;
+}
+
+/* See event-loop.h.  */
+
+void
+clear_async_event_handler (async_event_handler *async_handler_ptr)
+{
+  event_loop_debug_printf ("clearing async event handler `%s`",
+			   async_handler_ptr->name);
+  async_handler_ptr->ready = 0;
+}
+
+/* See event-loop.h.  */
+
+bool
+async_event_handler_marked (async_event_handler *handler)
+{
+  return handler->ready;
+}
+
+/* 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)
+	{
+	  event_loop_debug_printf ("invoking async event handler `%s`",
+				   async_handler_ptr->name);
+	  (*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.20200303/gdb/async-event.h ./gdb/async-event.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/async-event.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/async-event.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,90 @@
+/* Async events for the GDB event loop.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_ASYNC_EVENT_H
+#define GDB_ASYNC_EVENT_H
+
+#include "gdbsupport/event-loop.h"
+
+struct async_signal_handler;
+struct async_event_handler;
+typedef void (sig_handler_func) (gdb_client_data);
+
+/* Type of async event handler callbacks.
+
+   DATA is the client data originally passed to create_async_event_handler.
+
+   The callback is called when the async event handler is marked.  The callback
+   is responsible for clearing the async event handler if it no longer needs
+   to be called.  */
+
+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,
+			       const char *name);
+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.
+
+   NAME is a user-friendly name for the handler, used in debug statements.  The
+   name is not copied: its lifetime should be at least as long as that of the
+   handler.  */
+
+extern struct async_event_handler *
+  create_async_event_handler (async_event_handler_func *proc,
+			      gdb_client_data client_data,
+			      const char *name);
+
+/* 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);
+
+/* Return true if HANDLER is marked.  */
+extern bool async_event_handler_marked (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 /* GDB_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.20200303/gdb/auto-load.c ./gdb/auto-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/auto-load.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/auto-load.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB routines for supporting auto-loaded scripts.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,18 +17,17 @@
    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 <ctype.h>
 #include "auto-load.h"
+#include "gdbsupport/gdb_vecs.h"
 #include "progspace.h"
-#include "gdb_regex.h"
+#include "gdbsupport/gdb_regex.h"
 #include "ui-out.h"
 #include "filenames.h"
 #include "command.h"
 #include "observable.h"
 #include "objfiles.h"
 #include "cli/cli-script.h"
-#include "gdbcmd.h"
 #include "cli/cli-cmds.h"
 #include "cli/cli-decode.h"
 #include "cli/cli-setshow.h"
@@ -42,6 +41,7 @@
 #include <algorithm>
 #include "gdbsupport/pathstuff.h"
 #include "cli/cli-style.h"
+#include "gdbsupport/selftest.h"
 
 /* The section to look in for auto-loaded scripts (in file formats that
    support sections).
@@ -51,6 +51,9 @@
    followed by the path of a python script to load.  */
 #define AUTO_SECTION_NAME ".debug_gdb_scripts"
 
+/* The section to look in for the name of a separate debug file.  */
+#define DEBUGLINK_SECTION_NAME ".gnu_debuglink"
+
 static void maybe_print_unsupported_script_warning
   (struct auto_load_pspace_info *, struct objfile *objfile,
    const struct extension_language_defn *language,
@@ -61,8 +64,9 @@ static void maybe_print_script_not_found
    const struct extension_language_defn *language,
    const char *section_name, unsigned offset);
 
-/* Value of the 'set debug auto-load' configuration variable.  */
-static bool debug_auto_load = false;
+/* See auto-load.h.  */
+
+bool debug_auto_load = false;
 
 /* "show" command for the debug_auto_load configuration variable.  */
 
@@ -70,9 +74,9 @@ static void
 show_debug_auto_load (struct ui_file *file, int from_tty,
 		      struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Debugging output for files "
-			    "of 'set auto-load ...' is %s.\n"),
-		    value);
+  gdb_printf (file, _("Debugging output for files "
+		      "of 'set auto-load ...' is %s.\n"),
+	      value);
 }
 
 /* User-settable option to enable/disable auto-loading of GDB_AUTO_FILE_NAME
@@ -88,14 +92,14 @@ static void
 show_auto_load_gdb_scripts (struct ui_file *file, int from_tty,
 			    struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Auto-loading of canned sequences of commands "
-			    "scripts is %s.\n"),
-		    value);
+  gdb_printf (file, _("Auto-loading of canned sequences of commands "
+		      "scripts is %s.\n"),
+	      value);
 }
 
-/* Return non-zero if auto-loading gdb scripts is enabled.  */
+/* See auto-load.h.  */
 
-int
+bool
 auto_load_gdb_scripts_enabled (const struct extension_language_defn *extlang)
 {
   return auto_load_gdb_scripts;
@@ -128,15 +132,15 @@ static void
 show_auto_load_local_gdbinit (struct ui_file *file, int from_tty,
 			      struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Auto-loading of .gdbinit script from current "
-			    "directory is %s.\n"),
-		    value);
+  gdb_printf (file, _("Auto-loading of .gdbinit script from current "
+		      "directory is %s.\n"),
+	      value);
 }
 
 /* Directory list from which to load auto-loaded scripts.  It is not checked
    for absolute paths but they are strongly recommended.  It is initialized by
    _initialize_auto_load.  */
-static char *auto_load_dir;
+static std::string auto_load_dir = AUTO_LOAD_DIR;
 
 /* "set" command for the auto_load_dir configuration variable.  */
 
@@ -144,11 +148,8 @@ static void
 set_auto_load_dir (const char *args, int from_tty, struct cmd_list_element *c)
 {
   /* Setting the variable to "" resets it to the compile time defaults.  */
-  if (auto_load_dir[0] == '\0')
-    {
-      xfree (auto_load_dir);
-      auto_load_dir = xstrdup (AUTO_LOAD_DIR);
-    }
+  if (auto_load_dir.empty ())
+    auto_load_dir = AUTO_LOAD_DIR;
 }
 
 /* "show" command for the auto_load_dir configuration variable.  */
@@ -157,20 +158,81 @@ static void
 show_auto_load_dir (struct ui_file *file, int from_tty,
 		    struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("List of directories from which to load "
-			    "auto-loaded scripts is %s.\n"),
-		    value);
+  gdb_printf (file, _("List of directories from which to load "
+		      "auto-loaded scripts is %s.\n"),
+	      value);
 }
 
+/* Substitute all occurrences of string FROM by string TO in STRING.
+   STRING will be updated in place as needed.  FROM needs to be
+   delimited by IS_DIR_SEPARATOR or DIRNAME_SEPARATOR (or be located
+   at the start or end of STRING.  */
+
+static void
+substitute_path_component (std::string &string, std::string_view from,
+			   std::string_view to)
+{
+  for (size_t s = 0;;)
+    {
+      s = string.find (from, s);
+      if (s == std::string::npos)
+	break;
+
+      if ((s == 0 || IS_DIR_SEPARATOR (string[s - 1])
+	   || string[s - 1] == DIRNAME_SEPARATOR)
+	  && (s + from.size () == string.size ()
+	      || IS_DIR_SEPARATOR (string[s + from.size ()])
+	      || string[s + from.size ()] == DIRNAME_SEPARATOR))
+	{
+	  string.replace (s, from.size (), to);
+	  s += to.size ();
+	}
+      else
+	s++;
+    }
+}
+
+#if GDB_SELF_TEST
+
+namespace selftests {
+namespace subst_path {
+
+static void
+test_substitute_path_component ()
+{
+  auto test = [] (std::string s, const char *from, const char *to,
+		  const char *expected)
+    {
+      substitute_path_component (s, from, to);
+      SELF_CHECK (s == expected);
+    };
+
+  test ("/abc/$def/g", "abc", "xyz", "/xyz/$def/g");
+  test ("abc/$def/g", "abc", "xyz", "xyz/$def/g");
+  test ("/abc/$def/g", "$def", "xyz", "/abc/xyz/g");
+  test ("/abc/$def/g", "g", "xyz", "/abc/$def/xyz");
+  test ("/abc/$def/g", "ab", "xyz", "/abc/$def/g");
+  test ("/abc/$def/g", "def", "xyz", "/abc/$def/g");
+  test ("/abc/$def/g", "abc", "abc", "/abc/$def/g");
+  test ("/abc/$def/g", "abc", "", "//$def/g");
+  test ("/abc/$def/g", "abc/$def", "xyz", "/xyz/g");
+  test ("/abc/$def/abc", "abc", "xyz", "/xyz/$def/xyz");
+}
+
+}
+}
+
+#endif /* GDB_SELF_TEST */
+
 /* Directory list safe to hold auto-loaded files.  It is not checked for
    absolute paths but they are strongly recommended.  It is initialized by
    _initialize_auto_load.  */
-static char *auto_load_safe_path;
+static std::string auto_load_safe_path = AUTO_LOAD_SAFE_PATH;
 
 /* Vector of directory elements of AUTO_LOAD_SAFE_PATH with each one normalized
    by tilde_expand and possibly each entries has added its gdb_realpath
    counterpart.  */
-std::vector<gdb::unique_xmalloc_ptr<char>> auto_load_safe_path_vec;
+static std::vector<gdb::unique_xmalloc_ptr<char>> auto_load_safe_path_vec;
 
 /* Expand $datadir and $debugdir in STRING according to the rules of
    substitute_path_component.  */
@@ -178,17 +240,15 @@ std::vector<gdb::unique_xmalloc_ptr<char
 static std::vector<gdb::unique_xmalloc_ptr<char>>
 auto_load_expand_dir_vars (const char *string)
 {
-  char *s = xstrdup (string);
-  substitute_path_component (&s, "$datadir", gdb_datadir.c_str ());
-  substitute_path_component (&s, "$debugdir", debug_file_directory);
-
-  if (debug_auto_load && strcmp (s, string) != 0)
-    fprintf_unfiltered (gdb_stdlog,
-			_("auto-load: Expanded $-variables to \"%s\".\n"), s);
+  std::string s = string;
+  substitute_path_component (s, "$datadir", gdb_datadir.c_str ());
+  substitute_path_component (s, "$debugdir", debug_file_directory.c_str ());
+
+  if (debug_auto_load && s != string)
+    auto_load_debug_printf ("Expanded $-variables to \"%s\".", s.c_str ());
 
   std::vector<gdb::unique_xmalloc_ptr<char>> dir_vec
-    = dirnames_to_char_ptr_vec (s);
-  xfree(s);
+    = dirnames_to_char_ptr_vec (s.c_str ());
 
   return dir_vec;
 }
@@ -198,12 +258,11 @@ auto_load_expand_dir_vars (const char *s
 static void
 auto_load_safe_path_vec_update (void)
 {
-  if (debug_auto_load)
-    fprintf_unfiltered (gdb_stdlog,
-			_("auto-load: Updating directories of \"%s\".\n"),
-			auto_load_safe_path);
+  auto_load_debug_printf ("Updating directories of \"%s\".",
+			  auto_load_safe_path.c_str ());
 
-  auto_load_safe_path_vec = auto_load_expand_dir_vars (auto_load_safe_path);
+  auto_load_safe_path_vec
+    = auto_load_expand_dir_vars (auto_load_safe_path.c_str ());
   size_t len = auto_load_safe_path_vec.size ();
 
   /* Apply tilde_expand and gdb_realpath to each AUTO_LOAD_SAFE_PATH_VEC
@@ -222,23 +281,18 @@ auto_load_safe_path_vec_update (void)
       if (debug_auto_load)
 	{
 	  if (strcmp (in_vec.get (), original.get ()) == 0)
-	    fprintf_unfiltered (gdb_stdlog,
-				_("auto-load: Using directory \"%s\".\n"),
-				in_vec.get ());
+	    auto_load_debug_printf ("Using directory \"%s\".",
+				    in_vec.get ());
 	  else
-	    fprintf_unfiltered (gdb_stdlog,
-				_("auto-load: Resolved directory \"%s\" "
-				  "as \"%s\".\n"),
-				original.get (), in_vec.get ());
+	    auto_load_debug_printf ("Resolved directory \"%s\" as \"%s\".",
+				    original.get (), in_vec.get ());
 	}
 
       /* If gdb_realpath returns a different content, append it.  */
       if (strcmp (real_path.get (), in_vec.get ()) != 0)
 	{
-	  if (debug_auto_load)
-	    fprintf_unfiltered (gdb_stdlog,
-				_("auto-load: And canonicalized as \"%s\".\n"),
-				real_path.get ());
+	  auto_load_debug_printf ("And canonicalized as \"%s\".",
+				  real_path.get ());
 
 	  auto_load_safe_path_vec.push_back (std::move (real_path));
 	}
@@ -260,11 +314,8 @@ set_auto_load_safe_path (const char *arg
 			 int from_tty, struct cmd_list_element *c)
 {
   /* Setting the variable to "" resets it to the compile time defaults.  */
-  if (auto_load_safe_path[0] == '\0')
-    {
-      xfree (auto_load_safe_path);
-      auto_load_safe_path = xstrdup (AUTO_LOAD_SAFE_PATH);
-    }
+  if (auto_load_safe_path.empty ())
+    auto_load_safe_path = AUTO_LOAD_SAFE_PATH;
 
   auto_load_safe_path_vec_update ();
 }
@@ -284,12 +335,12 @@ show_auto_load_safe_path (struct ui_file
   for (cs = value; *cs && (*cs == DIRNAME_SEPARATOR || IS_DIR_SEPARATOR (*cs));
        cs++);
   if (*cs == 0)
-    fprintf_filtered (file, _("Auto-load files are safe to load from any "
-			      "directory.\n"));
+    gdb_printf (file, _("Auto-load files are safe to load from any "
+			"directory.\n"));
   else
-    fprintf_filtered (file, _("List of directories from which it is safe to "
-			      "auto-load files is %s.\n"),
-		      value);
+    gdb_printf (file, _("List of directories from which it is safe to "
+			"auto-load files is %s.\n"),
+		value);
 }
 
 /* "add-auto-load-safe-path" command for the auto_load_safe_path configuration
@@ -298,17 +349,14 @@ show_auto_load_safe_path (struct ui_file
 static void
 add_auto_load_safe_path (const char *args, int from_tty)
 {
-  char *s;
-
   if (args == NULL || *args == 0)
     error (_("\
 Directory argument required.\n\
 Use 'set auto-load safe-path /' for disabling the auto-load safe-path security.\
 "));
 
-  s = xstrprintf ("%s%c%s", auto_load_safe_path, DIRNAME_SEPARATOR, args);
-  xfree (auto_load_safe_path);
-  auto_load_safe_path = s;
+  auto_load_safe_path = string_printf ("%s%c%s", auto_load_safe_path.c_str (),
+				       DIRNAME_SEPARATOR, args);
 
   auto_load_safe_path_vec_update ();
 }
@@ -319,14 +367,11 @@ Use 'set auto-load safe-path /' for disa
 static void
 add_auto_load_dir (const char *args, int from_tty)
 {
-  char *s;
-
   if (args == NULL || *args == 0)
     error (_("Directory argument required."));
 
-  s = xstrprintf ("%s%c%s", auto_load_dir, DIRNAME_SEPARATOR, args);
-  xfree (auto_load_dir);
-  auto_load_dir = s;
+  auto_load_dir = string_printf ("%s%c%s", auto_load_dir.c_str (),
+				 DIRNAME_SEPARATOR, args);
 }
 
 /* Implementation for filename_is_in_pattern overwriting the caller's FILENAME
@@ -338,10 +383,8 @@ filename_is_in_pattern_1 (char *filename
   size_t pattern_len = strlen (pattern);
   size_t filename_len = strlen (filename);
 
-  if (debug_auto_load)
-    fprintf_unfiltered (gdb_stdlog, _("auto-load: Matching file \"%s\" "
-				      "to pattern \"%s\"\n"),
-			filename, pattern);
+  auto_load_debug_printf ("Matching file \"%s\" to pattern \"%s\"",
+			  filename, pattern);
 
   /* Trim trailing slashes ("/") from PATTERN.  Even for "d:\" paths as
      trailing slashes are trimmed also from FILENAME it still matches
@@ -355,35 +398,28 @@ filename_is_in_pattern_1 (char *filename
      IS_DIR_SEPARATOR character, such as the 'C:\x.exe' filename.  */
   if (pattern_len == 0)
     {
-      if (debug_auto_load)
-	fprintf_unfiltered (gdb_stdlog,
-			    _("auto-load: Matched - empty pattern\n"));
+      auto_load_debug_printf ("Matched - empty pattern");
       return 1;
     }
 
   for (;;)
     {
       /* Trim trailing slashes ("/").  PATTERN also has slashes trimmed the
-         same way so they will match.  */
+	 same way so they will match.  */
       while (filename_len && IS_DIR_SEPARATOR (filename[filename_len - 1]))
 	filename_len--;
       filename[filename_len] = '\0';
       if (filename_len == 0)
 	{
-	  if (debug_auto_load)
-	    fprintf_unfiltered (gdb_stdlog,
-				_("auto-load: Not matched - pattern \"%s\".\n"),
-				pattern);
+	  auto_load_debug_printf ("Not matched - pattern \"%s\".", pattern);
 	  return 0;
 	}
 
       if (gdb_filename_fnmatch (pattern, filename, FNM_FILE_NAME | FNM_NOESCAPE)
 	  == 0)
 	{
-	  if (debug_auto_load)
-	    fprintf_unfiltered (gdb_stdlog, _("auto-load: Matched - file "
-					      "\"%s\" to pattern \"%s\".\n"),
-				filename, pattern);
+	  auto_load_debug_printf ("Matched - file \"%s\" to pattern \"%s\".",
+				  filename, pattern);
 	  return 1;
 	}
 
@@ -434,10 +470,8 @@ filename_is_in_auto_load_safe_path_vec (
 	{
 	  *filename_realp = gdb_realpath (filename);
 	  if (debug_auto_load && strcmp (filename_realp->get (), filename) != 0)
-	    fprintf_unfiltered (gdb_stdlog,
-				_("auto-load: Resolved "
-				  "file \"%s\" as \"%s\".\n"),
-				filename, filename_realp->get ());
+	    auto_load_debug_printf ("Resolved file \"%s\" as \"%s\".",
+				    filename, filename_realp->get ());
 	}
 
       if (strcmp (filename_realp->get (), filename) != 0)
@@ -451,75 +485,80 @@ filename_is_in_auto_load_safe_path_vec (
 
   if (pattern != NULL)
     {
-      if (debug_auto_load)
-	fprintf_unfiltered (gdb_stdlog, _("auto-load: File \"%s\" matches "
-					  "directory \"%s\".\n"),
-			    filename, pattern);
+      auto_load_debug_printf ("File \"%s\" matches directory \"%s\".",
+			      filename, pattern);
       return 1;
     }
 
   return 0;
 }
 
-/* Return 1 if FILENAME is located in one of the directories of
-   AUTO_LOAD_SAFE_PATH.  Otherwise call warning and return 0.  FILENAME does
-   not have to be an absolute path.
-
-   Existence of FILENAME is not checked.  Function will still give a warning
-   even if the caller would quietly skip non-existing file in unsafe
-   directory.  */
+/* See auto-load.h.  */
 
-int
-file_is_auto_load_safe (const char *filename, const char *debug_fmt, ...)
+bool
+file_is_auto_load_safe (const char *filename)
 {
   gdb::unique_xmalloc_ptr<char> filename_real;
-  static int advice_printed = 0;
-
-  if (debug_auto_load)
-    {
-      va_list debug_args;
-
-      va_start (debug_args, debug_fmt);
-      vfprintf_unfiltered (gdb_stdlog, debug_fmt, debug_args);
-      va_end (debug_args);
-    }
+  static bool advice_printed = false;
 
   if (filename_is_in_auto_load_safe_path_vec (filename, &filename_real))
-    return 1;
+    return true;
 
   auto_load_safe_path_vec_update ();
   if (filename_is_in_auto_load_safe_path_vec (filename, &filename_real))
-    return 1;
+    return true;
 
   warning (_("File \"%ps\" auto-loading has been declined by your "
 	     "`auto-load safe-path' set to \"%s\"."),
 	   styled_string (file_name_style.style (), filename_real.get ()),
-	   auto_load_safe_path);
+	   auto_load_safe_path.c_str ());
 
   if (!advice_printed)
     {
-      const char *homedir = getenv ("HOME");
-
-      if (homedir == NULL)
-	homedir = "$HOME";
-      std::string homeinit = string_printf ("%s/%s", homedir, GDBINIT);
+      /* Find the existing home directory config file.  */
+      struct stat buf;
+      std::string home_config = find_gdb_home_config_file (GDBINIT, &buf);
+      if (home_config.empty ())
+	{
+	  /* The user doesn't have an existing home directory config file,
+	     so we should suggest a suitable path for them to use.  */
+	  std::string config_dir_file
+	    = get_standard_config_filename (GDBINIT);
+	  if (!config_dir_file.empty ())
+	    home_config = config_dir_file;
+	  else
+	    {
+	      const char *homedir = getenv ("HOME");
+	      if (homedir == nullptr)
+		homedir = "$HOME";
+	      home_config = (std::string (homedir) + SLASH_STRING
+			     + std::string (GDBINIT));
+	    }
+	}
 
-      printf_filtered (_("\
+      gdb_printf (_("\
 To enable execution of this file add\n\
-\tadd-auto-load-safe-path %s\n\
-line to your configuration file \"%s\".\n\
+\t%p[add-auto-load-safe-path %s%p]\n\
+line to your configuration file \"%ps\".\n\
 To completely disable this security protection add\n\
-\tset auto-load safe-path /\n\
-line to your configuration file \"%s\".\n\
+\t%ps\n\
+line to your configuration file \"%ps\".\n\
 For more information about this security protection see the\n\
 \"Auto-loading safe path\" section in the GDB manual.  E.g., run from the shell:\n\
 \tinfo \"(gdb)Auto-loading safe path\"\n"),
-		       filename_real.get (),
-		       homeinit.c_str (), homeinit.c_str ());
-      advice_printed = 1;
+		  command_style.style ().ptr (),
+		  filename_real.get (),
+		  nullptr,
+		  styled_string (file_name_style.style (),
+				 home_config.c_str ()),
+		  styled_string (command_style.style (),
+				 "set auto-load safe-path /"),
+		  styled_string (file_name_style.style (),
+				 home_config.c_str ()));
+      advice_printed = true;
     }
 
-  return 0;
+  return false;
 }
 
 /* For scripts specified in .debug_gdb_scripts, multiple objfiles may load
@@ -529,13 +568,10 @@ For more information about this security
 
 struct auto_load_pspace_info
 {
-  auto_load_pspace_info () = default;
-  ~auto_load_pspace_info ();
-
   /* For each program space we keep track of loaded scripts, both when
      specified as file names and as scripts to be executed directly.  */
-  struct htab *loaded_script_files = nullptr;
-  struct htab *loaded_script_texts = nullptr;
+  htab_up loaded_script_files;
+  htab_up loaded_script_texts;
 
   /* Non-zero if we've issued the warning about an auto-load script not being
      supported.  We only want to issue this warning once.  */
@@ -557,23 +593,15 @@ struct loaded_script
      inaccessible), or NULL for loaded_script_texts.  */
   const char *full_path;
 
-  /* Non-zero if this script has been loaded.  */
-  int loaded;
+  /* True if this script has been loaded.  */
+  bool loaded;
 
   const struct extension_language_defn *language;
 };
 
 /* Per-program-space data key.  */
-static const struct program_space_key<struct auto_load_pspace_info>
-  auto_load_pspace_data;
-
-auto_load_pspace_info::~auto_load_pspace_info ()
-{
-  if (loaded_script_files)
-    htab_delete (loaded_script_files);
-  if (loaded_script_texts)
-    htab_delete (loaded_script_texts);
-}
+static const registry<program_space>::key<auto_load_pspace_info>
+     auto_load_pspace_data;
 
 /* Get the current autoload data.  If none is found yet, add it now.  This
    function always returns a valid object.  */
@@ -621,14 +649,16 @@ init_loaded_scripts_info (struct auto_lo
      Space for each entry is obtained with one malloc so we can free them
      easily.  */
 
-  pspace_info->loaded_script_files = htab_create (31,
-						  hash_loaded_script_entry,
-						  eq_loaded_script_entry,
-						  xfree);
-  pspace_info->loaded_script_texts = htab_create (31,
-						  hash_loaded_script_entry,
-						  eq_loaded_script_entry,
-						  xfree);
+  pspace_info->loaded_script_files.reset
+    (htab_create (31,
+		  hash_loaded_script_entry,
+		  eq_loaded_script_entry,
+		  xfree));
+  pspace_info->loaded_script_texts.reset
+    (htab_create (31,
+		  hash_loaded_script_entry,
+		  eq_loaded_script_entry,
+		  xfree));
 
   pspace_info->unsupported_script_warning_printed = false;
   pspace_info->script_not_found_warning_printed = false;
@@ -650,24 +680,24 @@ get_auto_load_pspace_data_for_loading (s
 }
 
 /* Add script file NAME in LANGUAGE to hash table of PSPACE_INFO.
-   LOADED 1 if the script has been (is going to) be loaded, 0 otherwise
-   (such as if it has not been found).
+   LOADED is true if the script has been (is going to) be loaded, false
+   otherwise (such as if it has not been found).
    FULL_PATH is NULL if the script wasn't found.
+
    The result is true if the script was already in the hash table.  */
 
-static int
-maybe_add_script_file (struct auto_load_pspace_info *pspace_info, int loaded,
+static bool
+maybe_add_script_file (struct auto_load_pspace_info *pspace_info, bool loaded,
 		       const char *name, const char *full_path,
 		       const struct extension_language_defn *language)
 {
-  struct htab *htab = pspace_info->loaded_script_files;
+  struct htab *htab = pspace_info->loaded_script_files.get ();
   struct loaded_script **slot, entry;
-  int in_hash_table;
 
   entry.name = name;
   entry.language = language;
   slot = (struct loaded_script **) htab_find_slot (htab, &entry, INSERT);
-  in_hash_table = *slot != NULL;
+  bool in_hash_table = *slot != NULL;
 
   /* If this script is not in the hash table, add it.  */
 
@@ -699,23 +729,23 @@ maybe_add_script_file (struct auto_load_
 }
 
 /* Add script contents NAME in LANGUAGE to hash table of PSPACE_INFO.
-   LOADED 1 if the script has been (is going to) be loaded, 0 otherwise
-   (such as if it has not been found).
+   LOADED is true if the script has been (is going to) be loaded, false
+   otherwise (such as if it has not been found).
+
    The result is true if the script was already in the hash table.  */
 
-static int
+static bool
 maybe_add_script_text (struct auto_load_pspace_info *pspace_info,
-		       int loaded, const char *name,
+		       bool loaded, const char *name,
 		       const struct extension_language_defn *language)
 {
-  struct htab *htab = pspace_info->loaded_script_texts;
+  struct htab *htab = pspace_info->loaded_script_texts.get ();
   struct loaded_script **slot, entry;
-  int in_hash_table;
 
   entry.name = name;
   entry.language = language;
   slot = (struct loaded_script **) htab_find_slot (htab, &entry, INSERT);
-  in_hash_table = *slot != NULL;
+  bool in_hash_table = *slot != NULL;
 
   /* If this script is not in the hash table, add it.  */
 
@@ -740,12 +770,9 @@ maybe_add_script_text (struct auto_load_
 /* Clear the table of loaded section scripts.  */
 
 static void
-clear_section_scripts (void)
+clear_section_scripts (program_space *pspace)
 {
-  struct program_space *pspace = current_program_space;
-  struct auto_load_pspace_info *info;
-
-  info = auto_load_pspace_data.get (pspace);
+  auto_load_pspace_info *info = auto_load_pspace_data.get (pspace);
   if (info != NULL && info->loaded_script_files != NULL)
     auto_load_pspace_data.clear (pspace);
 }
@@ -766,9 +793,10 @@ auto_load_objfile_script_1 (struct objfi
 
   gdb_file_up input = gdb_fopen_cloexec (filename.c_str (), "r");
   debugfile = filename.c_str ();
-  if (debug_auto_load)
-    fprintf_unfiltered (gdb_stdlog, _("auto-load: Attempted file \"%s\" %s.\n"),
-			debugfile, input ? _("exists") : _("does not exist"));
+
+  auto_load_debug_printf ("Attempted file \"%ps\" %s.",
+			  styled_string (file_name_style.style (), debugfile),
+			  input != nullptr ? "exists" : "does not exist");
 
   std::string debugfile_holder;
   if (!input)
@@ -777,12 +805,16 @@ auto_load_objfile_script_1 (struct objfi
 	 directory.  */
 
       std::vector<gdb::unique_xmalloc_ptr<char>> vec
-	= auto_load_expand_dir_vars (auto_load_dir);
+	= auto_load_expand_dir_vars (auto_load_dir.c_str ());
 
-      if (debug_auto_load)
-	fprintf_unfiltered (gdb_stdlog, _("auto-load: Searching 'set auto-load "
-					  "scripts-directory' path \"%s\".\n"),
-			    auto_load_dir);
+      auto_load_debug_printf
+	("Searching 'set auto-load scripts-directory' path \"%s\".",
+	 auto_load_dir.c_str ());
+
+      /* Convert Windows file name from c:/dir/file to /c/dir/file.  */
+      if (HAS_DRIVE_SPEC (debugfile))
+	filename = (std::string("\\") + debugfile[0]
+		    + STRIP_DRIVE_SPEC (debugfile));
 
       for (const gdb::unique_xmalloc_ptr<char> &dir : vec)
 	{
@@ -791,11 +823,14 @@ auto_load_objfile_script_1 (struct objfi
 	  debugfile = debugfile_holder.c_str ();
 
 	  input = gdb_fopen_cloexec (debugfile, "r");
-	  if (debug_auto_load)
-	    fprintf_unfiltered (gdb_stdlog, _("auto-load: Attempted file "
-					      "\"%s\" %s.\n"),
-				debugfile,
-				input ? _("exists") : _("does not exist"));
+
+	  auto_load_debug_printf ("Attempted file \"%ps\" %s.",
+				  styled_string (file_name_style.style (),
+						 debugfile),
+				  (input != nullptr
+				   ? "exists"
+				   : "does not exist"));
+
 	  if (input != NULL)
 	    break;
 	}
@@ -803,24 +838,22 @@ auto_load_objfile_script_1 (struct objfi
 
   if (input)
     {
-      int is_safe;
       struct auto_load_pspace_info *pspace_info;
 
-      is_safe
-	= file_is_auto_load_safe (debugfile,
-				  _("auto-load: Loading %s script \"%s\""
-				    " by extension for objfile \"%s\".\n"),
-				  ext_lang_name (language),
-				  debugfile, objfile_name (objfile));
+      auto_load_debug_printf
+	("Loading %s script \"%s\" by extension for objfile \"%s\".",
+	 ext_lang_name (language), debugfile, objfile_name (objfile));
+
+      bool is_safe = file_is_auto_load_safe (debugfile);
 
       /* Add this script to the hash table too so
 	 "info auto-load ${lang}-scripts" can print it.  */
       pspace_info
-	= get_auto_load_pspace_data_for_loading (current_program_space);
+	= get_auto_load_pspace_data_for_loading (objfile->pspace ());
       maybe_add_script_file (pspace_info, is_safe, debugfile, debugfile,
 			     language);
 
-      /* To preserve existing behaviour we don't check for whether the
+      /* To preserve existing behavior we don't check for whether the
 	 script was already in the table, and always load it.
 	 It's highly unlikely that we'd ever load it twice,
 	 and these scripts are required to be idempotent under multiple
@@ -855,23 +888,60 @@ auto_load_objfile_script (struct objfile
   gdb::unique_xmalloc_ptr<char> realname
     = gdb_realpath (objfile_name (objfile));
 
-  if (!auto_load_objfile_script_1 (objfile, realname.get (), language))
+  if (auto_load_objfile_script_1 (objfile, realname.get (), language))
+    return;
+
+  /* For Windows/DOS .exe executables, strip the .exe suffix, so that
+     FOO-gdb.gdb could be used for FOO.exe, and try again.  */
+
+  size_t len = strlen (realname.get ());
+  const size_t lexe = sizeof (".exe") - 1;
+
+  if (len > lexe && strcasecmp (realname.get () + len - lexe, ".exe") == 0)
     {
-      /* For Windows/DOS .exe executables, strip the .exe suffix, so that
-	 FOO-gdb.gdb could be used for FOO.exe, and try again.  */
+      len -= lexe;
+      realname.get ()[len] = '\0';
+
+      auto_load_debug_printf
+	("Stripped .exe suffix, retrying with \"%s\".", realname.get ());
+
+      auto_load_objfile_script_1 (objfile, realname.get (), language);
+      return;
+    }
 
-      size_t len = strlen (realname.get ());
-      const size_t lexe = sizeof (".exe") - 1;
+  /* If OBJFILE is a separate debug file and its name does not match
+     the name given in the parent's .gnu_debuglink section, try to
+     find the auto-load script using the parent's path and the
+     debuglink name.  */
+
+  struct objfile *parent = objfile->separate_debug_objfile_backlink;
+  if (parent != nullptr)
+    {
+      uint32_t crc32;
+      gdb::unique_xmalloc_ptr<char> debuglink
+	(bfd_get_debug_link_info (parent->obfd.get (), &crc32));
 
-      if (len > lexe && strcasecmp (realname.get () + len - lexe, ".exe") == 0)
+      if (debuglink.get () != nullptr
+	  && strcmp (debuglink.get (), lbasename (realname.get ())) != 0)
 	{
-	  len -= lexe;
-	  realname.get ()[len] = '\0';
-	  if (debug_auto_load)
-	    fprintf_unfiltered (gdb_stdlog, _("auto-load: Stripped .exe suffix, "
-					      "retrying with \"%s\".\n"),
-				realname.get ());
-	  auto_load_objfile_script_1 (objfile, realname.get (), language);
+	  /* Replace the last component of the parent's path with the
+	     debuglink name.  */
+
+	  std::string p_realname = gdb_realpath (objfile_name (parent)).get ();
+	  size_t last = p_realname.find_last_of ('/');
+
+	  if (last != std::string::npos)
+	    {
+	      p_realname.replace (last + 1, std::string::npos,
+				  debuglink.get ());
+
+	      auto_load_debug_printf
+		("Debug filename mismatch, retrying with \"%s\".",
+		 p_realname.c_str ());
+
+	      auto_load_objfile_script_1 (objfile,
+					  p_realname.c_str (), language);
+	    }
 	}
     }
 }
@@ -887,7 +957,6 @@ source_script_file (struct auto_load_psp
 		    const char *section_name, unsigned int offset,
 		    const char *file)
 {
-  int in_hash_table;
   objfile_script_sourcer_func *sourcer;
 
   /* Skip this script if support is not compiled in.  */
@@ -909,18 +978,17 @@ source_script_file (struct auto_load_psp
       return;
     }
 
-  gdb::optional<open_script> opened = find_and_open_script (file,
+  std::optional<open_script> opened = find_and_open_script (file,
 							    1 /*search_path*/);
 
   if (opened)
     {
-      if (!file_is_auto_load_safe (opened->full_path.get (),
-				   _("auto-load: Loading %s script "
-				     "\"%s\" from section \"%s\" of "
-				     "objfile \"%s\".\n"),
-				   ext_lang_name (language),
-				   opened->full_path.get (),
-				   section_name, objfile_name (objfile)))
+      auto_load_debug_printf
+	("Loading %s script \"%s\" from section \"%s\" of objfile \"%s\".",
+	 ext_lang_name (language), opened->full_path.get (),
+	 section_name, objfile_name (objfile));
+
+      if (!file_is_auto_load_safe (opened->full_path.get ()))
 	opened.reset ();
     }
   else
@@ -937,11 +1005,10 @@ source_script_file (struct auto_load_psp
 					    section_name, offset);
     }
 
-  in_hash_table = maybe_add_script_file (pspace_info, bool (opened), file,
-					 (opened
-					  ? opened->full_path.get ()
-					  : NULL),
-					 language);
+  bool in_hash_table
+    = maybe_add_script_file (pspace_info, bool (opened), file,
+			     (opened ? opened->full_path.get (): NULL),
+			     language);
 
   /* If this file is not currently loaded, load it.  */
   if (opened && !in_hash_table)
@@ -963,7 +1030,6 @@ execute_script_contents (struct auto_loa
   objfile_script_executor_func *executor;
   const char *newline, *script_text;
   const char *name;
-  int is_safe, in_hash_table;
 
   /* The first line of the script is the name of the script.
      It must not contain any kind of space character.  */
@@ -1017,14 +1083,14 @@ of file %ps."),
       return;
     }
 
-  is_safe = file_is_auto_load_safe (objfile_name (objfile),
-				    _("auto-load: Loading %s script "
-				      "\"%s\" from section \"%s\" of "
-				      "objfile \"%s\".\n"),
-				    ext_lang_name (language), name,
-				    section_name, objfile_name (objfile));
+  auto_load_debug_printf
+    ("Loading %s script \"%s\" from section \"%s\" of objfile \"%s\".",
+     ext_lang_name (language), name, section_name, objfile_name (objfile));
+
+  bool is_safe = file_is_auto_load_safe (objfile_name (objfile));
 
-  in_hash_table = maybe_add_script_text (pspace_info, is_safe, name, language);
+  bool in_hash_table
+    = maybe_add_script_text (pspace_info, is_safe, name, language);
 
   /* If this file is not currently loaded, load it.  */
   if (is_safe && !in_hash_table)
@@ -1047,12 +1113,10 @@ static void
 source_section_scripts (struct objfile *objfile, const char *section_name,
 			const char *start, const char *end)
 {
-  const char *p;
-  struct auto_load_pspace_info *pspace_info;
+  auto_load_pspace_info *pspace_info
+    = get_auto_load_pspace_data_for_loading (objfile->pspace ());
 
-  pspace_info = get_auto_load_pspace_data_for_loading (current_program_space);
-
-  for (p = start; p < end; ++p)
+  for (const char *p = start; p < end; ++p)
     {
       const char *entry;
       const struct extension_language_defn *language;
@@ -1114,31 +1178,32 @@ source_section_scripts (struct objfile *
 static void
 auto_load_section_scripts (struct objfile *objfile, const char *section_name)
 {
-  bfd *abfd = objfile->obfd;
+  bfd *abfd = objfile->obfd.get ();
   asection *scripts_sect;
-  bfd_byte *data = NULL;
 
   scripts_sect = bfd_get_section_by_name (abfd, section_name);
   if (scripts_sect == NULL
       || (bfd_section_flags (scripts_sect) & SEC_HAS_CONTENTS) == 0)
     return;
 
-  if (!bfd_get_full_section_contents (abfd, scripts_sect, &data))
+  gdb::byte_vector data;
+  if (!gdb_bfd_get_full_section_contents (abfd, scripts_sect, &data))
     warning (_("Couldn't read %s section of %ps"),
 	     section_name,
 	     styled_string (file_name_style.style (),
 			    bfd_get_filename (abfd)));
   else
     {
-      gdb::unique_xmalloc_ptr<bfd_byte> data_holder (data);
-
-      char *p = (char *) data;
-      source_section_scripts (objfile, section_name, p,
-			      p + bfd_section_size (scripts_sect));
+      const char *p = (const char *) data.data ();
+      source_section_scripts (objfile, section_name, p, p + data.size ());
     }
 }
 
-/* Load any auto-loaded scripts for OBJFILE.  */
+/* Load any auto-loaded scripts for OBJFILE.
+
+   Two flavors of auto-loaded scripts are supported.
+   1) based on the path to the objfile
+   2) from .debug_gdb_scripts section  */
 
 void
 load_auto_scripts_for_objfile (struct objfile *objfile)
@@ -1160,25 +1225,6 @@ load_auto_scripts_for_objfile (struct ob
   auto_load_section_scripts (objfile, AUTO_SECTION_NAME);
 }
 
-/* This is a new_objfile observer callback to auto-load scripts.
-
-   Two flavors of auto-loaded scripts are supported.
-   1) based on the path to the objfile
-   2) from .debug_gdb_scripts section  */
-
-static void
-auto_load_new_objfile (struct objfile *objfile)
-{
-  if (!objfile)
-    {
-      /* OBJFILE is NULL when loading a new "main" symbol-file.  */
-      clear_section_scripts ();
-      return;
-    }
-
-  load_auto_scripts_for_objfile (objfile);
-}
-
 /* Collect scripts to be printed in a vec.  */
 
 struct collect_matching_scripts_data
@@ -1259,15 +1305,14 @@ print_scripts (const std::vector<loaded_
    PATTERN.  FROM_TTY is the usual GDB boolean for user interactivity.  */
 
 void
-auto_load_info_scripts (const char *pattern, int from_tty,
-			const struct extension_language_defn *language)
+auto_load_info_scripts (program_space *pspace, const char *pattern,
+			int from_tty, const extension_language_defn *language)
 {
   struct ui_out *uiout = current_uiout;
-  struct auto_load_pspace_info *pspace_info;
 
   dont_repeat ();
 
-  pspace_info = get_auto_load_pspace_data (current_program_space);
+  auto_load_pspace_info *pspace_info = get_auto_load_pspace_data (pspace);
 
   if (pattern && *pattern)
     {
@@ -1292,7 +1337,7 @@ auto_load_info_scripts (const char *patt
       collect_matching_scripts_data data (&script_files, language);
 
       /* Pass a pointer to scripts as VEC_safe_push can realloc space.  */
-      htab_traverse_noresize (pspace_info->loaded_script_files,
+      htab_traverse_noresize (pspace_info->loaded_script_files.get (),
 			      collect_matching_scripts, &data);
 
       std::sort (script_files.begin (), script_files.end (),
@@ -1304,7 +1349,7 @@ auto_load_info_scripts (const char *patt
       collect_matching_scripts_data data (&script_texts, language);
 
       /* Pass a pointer to scripts as VEC_safe_push can realloc space.  */
-      htab_traverse_noresize (pspace_info->loaded_script_texts,
+      htab_traverse_noresize (pspace_info->loaded_script_texts.get (),
 			      collect_matching_scripts, &data);
 
       std::sort (script_texts.begin (), script_texts.end (),
@@ -1344,7 +1389,8 @@ auto_load_info_scripts (const char *patt
 static void
 info_auto_load_gdb_scripts (const char *pattern, int from_tty)
 {
-  auto_load_info_scripts (pattern, from_tty, &extension_language_gdb);
+  auto_load_info_scripts (current_program_space, pattern, from_tty,
+			  &extension_language_gdb);
 }
 
 /* Implement 'info auto-load local-gdbinit'.  */
@@ -1353,15 +1399,15 @@ static void
 info_auto_load_local_gdbinit (const char *args, int from_tty)
 {
   if (auto_load_local_gdbinit_pathname == NULL)
-    printf_filtered (_("Local .gdbinit file was not found.\n"));
+    gdb_printf (_("Local .gdbinit file was not found.\n"));
   else if (auto_load_local_gdbinit_loaded)
-    printf_filtered (_("Local .gdbinit file \"%ps\" has been loaded.\n"),
-		     styled_string (file_name_style.style (),
-				    auto_load_local_gdbinit_pathname));
+    gdb_printf (_("Local .gdbinit file \"%ps\" has been loaded.\n"),
+		styled_string (file_name_style.style (),
+			       auto_load_local_gdbinit_pathname));
   else
-    printf_filtered (_("Local .gdbinit file \"%ps\" has not been loaded.\n"),
-		     styled_string (file_name_style.style (),
-				    auto_load_local_gdbinit_pathname));
+    gdb_printf (_("Local .gdbinit file \"%ps\" has not been loaded.\n"),
+		styled_string (file_name_style.style (),
+			       auto_load_local_gdbinit_pathname));
 }
 
 /* Print an "unsupported script" warning if it has not already been printed.
@@ -1435,7 +1481,7 @@ set_auto_load_cmd (const char *args, int
 	     "otherwise check the auto-load sub-commands."));
 
   for (list = *auto_load_set_cmdlist_get (); list != NULL; list = list->next)
-    if (list->var_type == var_boolean)
+    if (list->var->type () == var_boolean)
       {
 	gdb_assert (list->type == set_cmd);
 	do_set_command (args, from_tty, list);
@@ -1454,21 +1500,11 @@ auto_load_set_cmdlist_get (void)
 Auto-loading specific settings.\n\
 Configure various auto-load-specific variables such as\n\
 automatic loading of Python scripts."),
-		    &retval, "set auto-load ",
-		    1/*allow-unknown*/, &setlist);
+		    &retval, 1/*allow-unknown*/, &setlist);
 
   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 +1513,11 @@ 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, 0/*allow-unknown*/, &showlist);
 
   return &retval;
 }
@@ -1498,15 +1533,15 @@ info_auto_load_cmd (const char *args, in
   struct ui_out *uiout = current_uiout;
 
   ui_out_emit_tuple tuple_emitter (uiout, "infolist");
-
+  const ui_file_style cmd_style = command_style.style ();
   for (list = *auto_load_info_cmdlist_get (); list != NULL; list = list->next)
     {
       ui_out_emit_tuple option_emitter (uiout, "option");
 
-      gdb_assert (!list->prefixlist);
+      gdb_assert (!list->is_prefix ());
       gdb_assert (list->type == not_set_cmd);
 
-      uiout->field_string ("name", list->name);
+      uiout->field_string ("name", list->name, cmd_style);
       uiout->text (":  ");
       cmd_func (list, auto_load_info_scripts_pattern_nl, from_tty);
     }
@@ -1524,22 +1559,27 @@ auto_load_info_cmdlist_get (void)
 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."),
-		    &retval, "info auto-load ",
-		    0/*allow-unknown*/, &infolist);
+		    &retval, 0/*allow-unknown*/, &infolist);
 
   return &retval;
 }
 
-void
-_initialize_auto_load (void)
+/* See auto-load.h.  */
+
+gdb::observers::token auto_load_new_objfile_observer_token;
+
+INIT_GDB_FILE (auto_load)
 {
   struct cmd_list_element *cmd;
-  char *scripts_directory_help, *gdb_name_help, *python_name_help;
-  char *guile_name_help;
+  gdb::unique_xmalloc_ptr<char> scripts_directory_help, gdb_name_help,
+    python_name_help, guile_name_help;
   const char *suffix;
 
-  gdb::observers::new_objfile.attach (auto_load_new_objfile);
-
+  gdb::observers::new_objfile.attach (load_auto_scripts_for_objfile,
+				      auto_load_new_objfile_observer_token,
+				      "auto-load");
+  gdb::observers::all_objfiles_removed.attach (clear_section_scripts,
+					       "auto-load");
   add_setshow_boolean_cmd ("gdb-scripts", class_support,
 			   &auto_load_gdb_scripts, _("\
 Enable or disable auto-loading of canned sequences of commands scripts."), _("\
@@ -1575,8 +1615,6 @@ This option has security implications fo
 Usage: info auto-load local-gdbinit"),
 	   auto_load_info_cmdlist_get ());
 
-  auto_load_dir = xstrdup (AUTO_LOAD_DIR);
-
   suffix = ext_lang_auto_load_suffix (get_ext_lang_defn (EXT_LANG_GDB));
   gdb_name_help
     = xstrprintf (_("\
@@ -1611,24 +1649,18 @@ having 'set auto-load ... off'.\n\
 Directories listed here need to be present also \
 in the 'set auto-load safe-path'\n\
 option."),
-		  gdb_name_help,
-		  python_name_help ? python_name_help : "",
-		  guile_name_help ? guile_name_help : "");
+		  gdb_name_help.get (),
+		  python_name_help.get () ? python_name_help.get () : "",
+		  guile_name_help.get () ? guile_name_help.get () : "");
 
   add_setshow_optional_filename_cmd ("scripts-directory", class_support,
 				     &auto_load_dir, _("\
 Set the list of directories from which to load auto-loaded scripts."), _("\
 Show the list of directories from which to load auto-loaded scripts."),
-				     scripts_directory_help,
+				     scripts_directory_help.get (),
 				     set_auto_load_dir, show_auto_load_dir,
 				     auto_load_set_cmdlist_get (),
 				     auto_load_show_cmdlist_get ());
-  xfree (scripts_directory_help);
-  xfree (python_name_help);
-  xfree (gdb_name_help);
-  xfree (guile_name_help);
-
-  auto_load_safe_path = xstrdup (AUTO_LOAD_SAFE_PATH);
   auto_load_safe_path_vec_update ();
   add_setshow_optional_filename_cmd ("safe-path", class_support,
 				     &auto_load_safe_path, _("\
@@ -1648,7 +1680,8 @@ This option has security implications fo
 				     show_auto_load_safe_path,
 				     auto_load_set_cmdlist_get (),
 				     auto_load_show_cmdlist_get ());
-  gdb::observers::gdb_datadir_changed.attach (auto_load_gdb_datadir_changed);
+  gdb::observers::gdb_datadir_changed.attach (auto_load_gdb_datadir_changed,
+					      "auto-load");
 
   cmd = add_cmd ("add-auto-load-safe-path", class_support,
 		 add_auto_load_safe_path,
@@ -1657,7 +1690,7 @@ This option has security implications fo
 See the commands 'set auto-load safe-path' and 'show auto-load safe-path' to\n\
 access the current full list setting."),
 		 &cmdlist);
-  set_cmd_completer (cmd, filename_completer);
+  set_cmd_completer (cmd, deprecated_filename_completer);
 
   cmd = add_cmd ("add-auto-load-scripts-directory", class_support,
 		 add_auto_load_dir,
@@ -1666,7 +1699,7 @@ access the current full list setting."),
 See the commands 'set auto-load scripts-directory' and\n\
 'show auto-load scripts-directory' to access the current full list setting."),
 		 &cmdlist);
-  set_cmd_completer (cmd, filename_completer);
+  set_cmd_completer (cmd, deprecated_filename_completer);
 
   add_setshow_boolean_cmd ("auto-load", class_maintenance,
 			   &debug_auto_load, _("\
@@ -1676,4 +1709,9 @@ When non-zero, debugging output for file
 is displayed."),
 			    NULL, show_debug_auto_load,
 			    &setdebuglist, &showdebuglist);
+
+#if GDB_SELF_TEST
+  selftests::register_test ("substitute_path_component",
+			    selftests::subst_path::test_substitute_path_component);
+#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.20200303/gdb/auto-load.h ./gdb/auto-load.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/auto-load.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/auto-load.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB routines for supporting auto-loaded scripts.
 
-   Copyright (C) 2012-2020 Free Software Foundation, Inc.
+   Copyright (C) 2012-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,38 +17,66 @@
    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 AUTO_LOAD_H
-#define AUTO_LOAD_H 1
+#ifndef GDB_AUTO_LOAD_H
+#define GDB_AUTO_LOAD_H
 
 struct objfile;
 struct program_space;
 struct auto_load_pspace_info;
 struct extension_language_defn;
 
+namespace gdb {
+namespace observers {
+struct token;
+} /* namespace observers */
+} /* namespace gdb */
+
+/* Value of the 'set debug auto-load' configuration variable.  */
+
+extern bool debug_auto_load;
+
+/* Print an "auto-load" debug statement.  */
+
+#define auto_load_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (debug_auto_load, "auto-load", fmt, ##__VA_ARGS__)
+
 extern bool global_auto_load;
 
 extern bool auto_load_local_gdbinit;
 extern char *auto_load_local_gdbinit_pathname;
 extern bool auto_load_local_gdbinit_loaded;
 
+/* Token used for the auto_load_new_objfile observer, so other observers can
+   specify it as a dependency. */
+extern gdb::observers::token auto_load_new_objfile_observer_token;
+
 extern struct auto_load_pspace_info *
   get_auto_load_pspace_data_for_loading (struct program_space *pspace);
 extern void auto_load_objfile_script (struct objfile *objfile,
 				      const struct extension_language_defn *);
 extern void load_auto_scripts_for_objfile (struct objfile *objfile);
 extern char auto_load_info_scripts_pattern_nl[];
-extern void auto_load_info_scripts (const char *pattern, int from_tty,
-				    const struct extension_language_defn *);
+extern void auto_load_info_scripts (program_space *pspace, const char *pattern,
+				    int from_tty,
+				    const extension_language_defn *);
 
 extern struct cmd_list_element **auto_load_set_cmdlist_get (void);
 extern struct cmd_list_element **auto_load_show_cmdlist_get (void);
 extern struct cmd_list_element **auto_load_info_cmdlist_get (void);
 
-extern int file_is_auto_load_safe (const char *filename,
-				   const char *debug_fmt, ...)
-  ATTRIBUTE_PRINTF (2, 3);
+/* Return true if FILENAME is located in one of the directories of
+   AUTO_LOAD_SAFE_PATH.  Otherwise call warning and return false.  FILENAME does
+   not have to be an absolute path.
+
+   Existence of FILENAME is not checked.  Function will still give a warning
+   even if the caller would quietly skip non-existing file in unsafe
+   directory.  */
+
+extern bool file_is_auto_load_safe (const char *filename);
+
+/* Return true if auto-loading gdb scripts is enabled.  */
 
-extern int auto_load_gdb_scripts_enabled
+extern bool auto_load_gdb_scripts_enabled
   (const struct extension_language_defn *extlang);
 
-#endif /* AUTO_LOAD_H */
+#endif /* GDB_AUTO_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.20200303/gdb/auxv.c ./gdb/auxv.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/auxv.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/auxv.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "target.h"
 #include "gdbtypes.h"
 #include "command.h"
@@ -46,23 +46,21 @@ procfs_xfer_auxv (gdb_byte *readbuf,
 		  ULONGEST len,
 		  ULONGEST *xfered_len)
 {
-  int fd;
   ssize_t l;
 
   std::string pathname = string_printf ("/proc/%d/auxv", inferior_ptid.pid ());
-  fd = gdb_open_cloexec (pathname, writebuf != NULL ? O_WRONLY : O_RDONLY, 0);
-  if (fd < 0)
+  scoped_fd fd
+    = gdb_open_cloexec (pathname, writebuf != NULL ? O_WRONLY : O_RDONLY, 0);
+  if (fd.get () < 0)
     return TARGET_XFER_E_IO;
 
   if (offset != (ULONGEST) 0
-      && lseek (fd, (off_t) offset, SEEK_SET) != (off_t) offset)
+      && lseek (fd.get (), (off_t) offset, SEEK_SET) != (off_t) offset)
     l = -1;
   else if (readbuf != NULL)
-    l = read (fd, readbuf, (size_t) len);
+    l = read (fd.get (), readbuf, (size_t) len);
   else
-    l = write (fd, writebuf, (size_t) len);
-
-  (void) close (fd);
+    l = write (fd.get (), writebuf, (size_t) len);
 
   if (l < 0)
     return TARGET_XFER_E_IO;
@@ -83,27 +81,28 @@ ld_so_xfer_auxv (gdb_byte *readbuf,
 		 ULONGEST offset,
 		 ULONGEST len, ULONGEST *xfered_len)
 {
-  struct bound_minimal_symbol msym;
   CORE_ADDR data_address, pointer_address;
-  struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
-  size_t ptr_size = TYPE_LENGTH (ptr_type);
+  gdbarch *arch = current_inferior ()->arch ();
+  type *ptr_type = builtin_type (arch)->builtin_data_ptr;
+  size_t ptr_size = ptr_type->length ();
   size_t auxv_pair_size = 2 * ptr_size;
   gdb_byte *ptr_buf = (gdb_byte *) alloca (ptr_size);
   LONGEST retval;
   size_t block;
 
-  msym = lookup_minimal_symbol ("_dl_auxv", NULL, NULL);
+  bound_minimal_symbol msym
+    = lookup_minimal_symbol (current_program_space, "_dl_auxv");
   if (msym.minsym == NULL)
     return TARGET_XFER_E_IO;
 
-  if (MSYMBOL_SIZE (msym.minsym) != ptr_size)
+  if (msym.minsym->size () != ptr_size)
     return TARGET_XFER_E_IO;
 
   /* POINTER_ADDRESS is a location where the `_dl_auxv' variable
      resides.  DATA_ADDRESS is the inferior value present in
      `_dl_auxv', therefore the real inferior AUXV address.  */
 
-  pointer_address = BMSYMBOL_VALUE_ADDRESS (msym);
+  pointer_address = msym.value_address ();
 
   /* The location of the _dl_auxv symbol may no longer be correct if
      ld.so runs at a different address than the one present in the
@@ -192,8 +191,8 @@ ld_so_xfer_auxv (gdb_byte *readbuf,
       len -= block;
 
       /* Check terminal AT_NULL.  This function is being called
-         indefinitely being extended its READBUF until it returns EOF
-         (0).  */
+	 indefinitely being extended its READBUF until it returns EOF
+	 (0).  */
 
       while (block >= auxv_pair_size)
 	{
@@ -236,7 +235,7 @@ memory_xfer_auxv (struct target_ops *ops
       this function only when attaching to a process.
       */
 
-  if (current_inferior ()->attach_flag != 0)
+  if (current_inferior ()->attach_flag)
     {
       enum target_xfer_status ret;
 
@@ -248,61 +247,95 @@ 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 ());
-  gdb_byte *ptr = *readptr;
+/* 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, const gdb_byte **readptr,
+		    const 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 = ptr_type->length ();
+  enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
+  const 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, const gdb_byte **readptr,
+		    const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+{
+  gdbarch *gdbarch = current_inferior ()->arch ();
+  struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr;
+  const int sizeof_auxv_type = ptr_type->length ();
+
+  return generic_auxv_parse (gdbarch, readptr, endptr, typep, valp,
+			     sizeof_auxv_type);
+}
+
+/* See auxv.h.  */
+
+int
+svr4_auxv_parse (struct gdbarch *gdbarch, const gdb_byte **readptr,
+		 const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+{
+  struct type *int_type = builtin_type (gdbarch)->builtin_int;
+  const int sizeof_auxv_type = int_type->length ();
+
+  return generic_auxv_parse (gdbarch, readptr, endptr, typep, valp,
+			     sizeof_auxv_type);
+}
+
 /* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
+
+   Use the auxv_parse method from GDBARCH, if defined, else use the auxv_parse
+   method of OPS.
+
    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
-target_auxv_parse (gdb_byte **readptr,
-		   gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
-{
-  struct gdbarch *gdbarch = target_gdbarch();
 
+static int
+parse_auxv (target_ops *ops, gdbarch *gdbarch, const gdb_byte **readptr,
+	    const gdb_byte *endptr, CORE_ADDR *typep, CORE_ADDR *valp)
+{
   if (gdbarch_auxv_parse_p (gdbarch))
     return gdbarch_auxv_parse (gdbarch, readptr, endptr, typep, valp);
 
-  return current_top_target ()->auxv_parse (readptr, endptr, typep, valp);
+  return ops->auxv_parse (readptr, endptr, typep, valp);
 }
 
 
 /*  Auxiliary Vector information structure.  This is used by GDB
     for caching purposes for each inferior.  This helps reduce the
-    overhead of transfering data from a remote target to the local host.  */
+    overhead of transferring data from a remote target to the local host.  */
 struct auxv_info
 {
-  gdb::optional<gdb::byte_vector> data;
+  std::optional<gdb::byte_vector> data;
 };
 
 /* Per-inferior data key for auxv.  */
-static const struct inferior_key<auxv_info> auxv_inferior_data;
+static const registry<inferior>::key<auxv_info> auxv_inferior_data;
 
 /* Invalidate INF's auxv cache.  */
 
@@ -312,53 +345,54 @@ invalidate_auxv_cache_inf (struct inferi
   auxv_inferior_data.clear (inf);
 }
 
-/* Invalidate current inferior's auxv cache.  */
+/* Invalidate the auxv cache for all inferiors using PSPACE.  */
 
 static void
-invalidate_auxv_cache (void)
+auxv_all_objfiles_removed (program_space *pspace)
 {
-  invalidate_auxv_cache_inf (current_inferior ());
+  for (inferior *inf : all_inferiors ())
+    if (inf->pspace == current_program_space)
+      invalidate_auxv_cache_inf (inf);
 }
 
-/* Fetch the auxv object from inferior INF.  If auxv is cached already,
-   return a pointer to the cache.  If not, fetch the auxv object from the
-   target and cache it.  This function always returns a valid INFO pointer.  */
+/* See auxv.h.  */
 
-static struct auxv_info *
-get_auxv_inferior_data (struct target_ops *ops)
+const std::optional<gdb::byte_vector> &
+target_read_auxv ()
 {
-  struct auxv_info *info;
-  struct inferior *inf = current_inferior ();
+  inferior *inf = current_inferior ();
+  auxv_info *info = auxv_inferior_data.get (inf);
 
-  info = auxv_inferior_data.get (inf);
-  if (info == NULL)
+  if (info == nullptr)
     {
       info = auxv_inferior_data.emplace (inf);
-      info->data = target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL);
+      info->data = target_read_auxv_raw (inf->top_target ());
     }
 
-  return info;
+  return info->data;
 }
 
-/* Extract the auxiliary vector entry with a_type matching MATCH.
-   Return zero if no such entry was found, or -1 if there was
-   an error getting the information.  On success, return 1 after
-   storing the entry's value field in *VALP.  */
-int
-target_auxv_search (struct target_ops *ops, CORE_ADDR match, CORE_ADDR *valp)
+/* See auxv.h.  */
+
+std::optional<gdb::byte_vector>
+target_read_auxv_raw (target_ops *ops)
 {
-  CORE_ADDR type, val;
-  auxv_info *info = get_auxv_inferior_data (ops);
+  return target_read_alloc (ops, TARGET_OBJECT_AUXV, NULL);
+}
 
-  if (!info->data)
-    return -1;
+/* See auxv.h.  */
 
-  gdb_byte *data = info->data->data ();
-  gdb_byte *ptr = data;
-  size_t len = info->data->size ();
+int
+target_auxv_search (const gdb::byte_vector &auxv, target_ops *ops,
+		    gdbarch *gdbarch, CORE_ADDR match, CORE_ADDR *valp)
+{
+  CORE_ADDR type, val;
+  const gdb_byte *data = auxv.data ();
+  const gdb_byte *ptr = data;
+  size_t len = auxv.size ();
 
   while (1)
-    switch (target_auxv_parse (&ptr, data + len, &type, &val))
+    switch (parse_auxv (ops, gdbarch, &ptr, data + len, &type, &val))
       {
       case 1:			/* Here's an entry, check it.  */
 	if (type == match)
@@ -372,10 +406,21 @@ target_auxv_search (struct target_ops *o
       default:			/* Bogosity.  */
 	return -1;
       }
-
-  /*NOTREACHED*/
 }
 
+/* See auxv.h.  */
+
+int
+target_auxv_search (CORE_ADDR match, CORE_ADDR *valp)
+{
+  const std::optional<gdb::byte_vector> &auxv = target_read_auxv ();
+
+  if (!auxv.has_value ())
+    return -1;
+
+  return target_auxv_search (*auxv, current_inferior ()->top_target (),
+			     current_inferior ()->arch (), match, valp);
+}
 
 /* Print the description of a single AUXV entry on the specified file.  */
 
@@ -384,15 +429,16 @@ fprint_auxv_entry (struct ui_file *file,
 		   const char *description, enum auxv_format format,
 		   CORE_ADDR type, CORE_ADDR val)
 {
-  fprintf_filtered (file, ("%-4s %-20s %-30s "),
-		    plongest (type), name, description);
+  gdbarch *arch = current_inferior ()->arch ();
+  gdb_printf (file, ("%-4s %-20s %-30s "),
+	      plongest (type), name, description);
   switch (format)
     {
     case AUXV_FORMAT_DEC:
-      fprintf_filtered (file, ("%s\n"), plongest (val));
+      gdb_printf (file, ("%s\n"), plongest (val));
       break;
     case AUXV_FORMAT_HEX:
-      fprintf_filtered (file, ("%s\n"), paddress (target_gdbarch (), val));
+      gdb_printf (file, ("%s\n"), paddress (arch, val));
       break;
     case AUXV_FORMAT_STR:
       {
@@ -400,10 +446,10 @@ fprint_auxv_entry (struct ui_file *file,
 
 	get_user_print_options (&opts);
 	if (opts.addressprint)
-	  fprintf_filtered (file, ("%s "), paddress (target_gdbarch (), val));
-	val_print_string (builtin_type (target_gdbarch ())->builtin_char,
+	  gdb_printf (file, ("%s "), paddress (arch, val));
+	val_print_string (builtin_type (arch)->builtin_char,
 			  NULL, val, -1, file, &opts);
-	fprintf_filtered (file, ("\n"));
+	gdb_printf (file, ("\n"));
       }
       break;
     }
@@ -451,6 +497,10 @@ default_print_auxv_entry (struct gdbarch
 	   AUXV_FORMAT_STR);
       TAG (AT_RANDOM, _("Address of 16 random bytes"), AUXV_FORMAT_HEX);
       TAG (AT_HWCAP2, _("Extension of AT_HWCAP"), AUXV_FORMAT_HEX);
+      TAG (AT_RSEQ_FEATURE_SIZE, _("rseq supported feature size"),
+	   AUXV_FORMAT_DEC);
+      TAG (AT_RSEQ_ALIGN, _("rseq allocation alignment"),
+	   AUXV_FORMAT_DEC);
       TAG (AT_EXECFN, _("File name of executable"), AUXV_FORMAT_STR);
       TAG (AT_SECURE, _("Boolean, was exec setuid-like?"), AUXV_FORMAT_DEC);
       TAG (AT_SYSINFO, _("Special system info/entry points"), AUXV_FORMAT_HEX);
@@ -458,9 +508,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);
@@ -504,22 +566,23 @@ default_print_auxv_entry (struct gdbarch
 
 /* Print the contents of the target's AUXV on the specified file.  */
 
-int
-fprint_target_auxv (struct ui_file *file, struct target_ops *ops)
+static int
+fprint_target_auxv (struct ui_file *file)
 {
-  struct gdbarch *gdbarch = target_gdbarch ();
+  gdbarch *gdbarch = current_inferior ()->arch ();
   CORE_ADDR type, val;
   int ents = 0;
-  auxv_info *info = get_auxv_inferior_data (ops);
+  const std::optional<gdb::byte_vector> &auxv = target_read_auxv ();
 
-  if (!info->data)
+  if (!auxv.has_value ())
     return -1;
 
-  gdb_byte *data = info->data->data ();
-  gdb_byte *ptr = data;
-  size_t len = info->data->size ();
+  const gdb_byte *data = auxv->data ();
+  const gdb_byte *ptr = data;
+  size_t len = auxv->size ();
 
-  while (target_auxv_parse (&ptr, data + len, &type, &val) > 0)
+  while (parse_auxv (current_inferior ()->top_target (), gdbarch, &ptr,
+		     data + len, &type, &val) > 0)
     {
       gdbarch_print_auxv_entry (gdbarch, file, type, val);
       ++ents;
@@ -533,11 +596,11 @@ fprint_target_auxv (struct ui_file *file
 static void
 info_auxv_command (const char *cmd, int from_tty)
 {
-  if (! target_has_stack)
+  if (! target_has_stack ())
     error (_("The program has no auxiliary information now."));
   else
     {
-      int ents = fprint_target_auxv (gdb_stdout, current_top_target ());
+      int ents = fprint_target_auxv (gdb_stdout);
 
       if (ents < 0)
 	error (_("No auxiliary vector found, or failed reading it."));
@@ -546,15 +609,15 @@ info_auxv_command (const char *cmd, int
     }
 }
 
-void
-_initialize_auxv (void)
+INIT_GDB_FILE (auxv)
 {
   add_info ("auxv", info_auxv_command,
 	    _("Display the inferior's auxiliary vector.\n\
 This is information provided by the operating system at program startup."));
 
   /* Observers used to invalidate the auxv cache when needed.  */
-  gdb::observers::inferior_exit.attach (invalidate_auxv_cache_inf);
-  gdb::observers::inferior_appeared.attach (invalidate_auxv_cache_inf);
-  gdb::observers::executable_changed.attach (invalidate_auxv_cache);
+  gdb::observers::inferior_exit.attach (invalidate_auxv_cache_inf, "auxv");
+  gdb::observers::inferior_appeared.attach (invalidate_auxv_cache_inf, "auxv");
+  gdb::observers::all_objfiles_removed.attach (auxv_all_objfiles_removed,
+					       "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.20200303/gdb/auxv.h ./gdb/auxv.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/auxv.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/auxv.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,34 +17,60 @@
    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 AUXV_H
-#define AUXV_H
+#ifndef GDB_AUXV_H
+#define GDB_AUXV_H
 
 #include "target.h"
 
 /* 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.
 
-extern int default_auxv_parse (struct target_ops *ops, gdb_byte **readptr,
-			       gdb_byte *endptr, CORE_ADDR *typep,
+   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, const gdb_byte **readptr,
+			       const gdb_byte *endptr, CORE_ADDR *typep,
 			       CORE_ADDR *valp);
 
-/* Read one auxv entry from *READPTR, not reading locations >= ENDPTR.
+/* 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 target_auxv_parse (gdb_byte **readptr, gdb_byte *endptr,
-			      CORE_ADDR *typep, CORE_ADDR *valp);
+extern int svr4_auxv_parse (struct gdbarch *gdbarch, const gdb_byte **readptr,
+			    const gdb_byte *endptr, CORE_ADDR *typep,
+			    CORE_ADDR *valp);
+
+/* Read auxv data from the current inferior's target stack.  */
+
+extern const std::optional<gdb::byte_vector> &target_read_auxv ();
+
+/* Read auxv data from OPS.  */
+
+extern std::optional<gdb::byte_vector> target_read_auxv_raw (target_ops *ops);
+
+/* Search AUXV for an entry with a_type matching MATCH.
+
+   OPS and GDBARCH are the target and architecture to use to parse auxv entries.
 
-/* Extract the auxiliary vector entry with a_type matching MATCH.
    Return zero if no such entry was found, or -1 if there was
    an error getting the information.  On success, return 1 after
    storing the entry's value field in *VALP.  */
-extern int target_auxv_search (struct target_ops *ops,
+
+extern int target_auxv_search (const gdb::byte_vector &auxv,
+			       target_ops *ops, gdbarch *gdbarch,
 			       CORE_ADDR match, CORE_ADDR *valp);
 
+/* Same as the above, but read the auxv data from the current inferior.  Use
+   the current inferior's top target and arch to parse auxv entries.  */
+
+extern int target_auxv_search (CORE_ADDR match, CORE_ADDR *valp);
+
 /* Print a description of a single AUXV entry on the specified file.  */
 enum auxv_format { AUXV_FORMAT_DEC, AUXV_FORMAT_HEX, AUXV_FORMAT_STR };
 
@@ -59,10 +85,7 @@ extern void default_print_auxv_entry (st
 				      struct ui_file *file, CORE_ADDR type,
 				      CORE_ADDR val);
 
-/* Print the contents of the target's AUXV on the specified file.  */
-extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops);
-
 extern target_xfer_partial_ftype memory_xfer_auxv;
 
 
-#endif
+#endif /* GDB_AUXV_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.20200303/gdb/avr-tdep.c ./gdb/avr-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/avr-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/avr-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -22,12 +22,12 @@
 /* Portions of this file were taken from the original gdb-4.18 patch developed
    by Denis Chertykov, denisc@overta.ru */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "frame.h"
 #include "frame-unwind.h"
 #include "frame-base.h"
 #include "trad-frame.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "gdbcore.h"
 #include "gdbtypes.h"
 #include "inferior.h"
@@ -37,6 +37,7 @@
 #include "dis-asm.h"
 #include "objfiles.h"
 #include <algorithm>
+#include "gdbarch.h"
 
 /* AVR Background:
 
@@ -111,7 +112,7 @@ enum
   AVR_LAST_PUSHED_REGNUM = 17,
 
   AVR_ARG1_REGNUM = 24,         /* Single byte argument */
-  AVR_ARGN_REGNUM = 25,         /* Multi byte argments */
+  AVR_ARGN_REGNUM = 25,         /* Multi byte arguments */
   AVR_LAST_ARG_REGNUM = 8,      /* Last argument register */
 
   AVR_RET1_REGNUM = 24,         /* Single byte return value */
@@ -185,21 +186,21 @@ struct avr_unwind_cache
   int size;
   int prologue_type;
   /* Table indicating the location of each and every register.  */
-  struct trad_frame_saved_reg *saved_regs;
+  trad_frame_saved_reg *saved_regs;
 };
 
-struct gdbarch_tdep
+struct avr_gdbarch_tdep : gdbarch_tdep_base
 {
   /* Number of bytes stored to the stack by call instructions.
      2 bytes for avr1-5 and avrxmega1-5, 3 bytes for avr6 and avrxmega6-7.  */
-  int call_length;
+  int call_length = 0;
 
   /* Type for void.  */
-  struct type *void_type;
+  struct type *void_type = nullptr;
   /* Type for a function returning void.  */
-  struct type *func_void_type;
+  struct type *func_void_type = nullptr;
   /* Type for a pointer to a function.  Used for the type of PC.  */
-  struct type *pc_type;
+  struct type *pc_type = nullptr;
 };
 
 /* Lookup the name of a register given it's number.  */
@@ -215,10 +216,8 @@ avr_register_name (struct gdbarch *gdbar
     "SREG", "SP", "PC2",
     "pc"
   };
-  if (regnum < 0)
-    return NULL;
-  if (regnum >= (sizeof (register_names) / sizeof (*register_names)))
-    return NULL;
+  static_assert (ARRAY_SIZE (register_names)
+		     == (AVR_NUM_REGS + AVR_NUM_PSEUDO_REGS));
   return register_names[regnum];
 }
 
@@ -230,14 +229,18 @@ avr_register_type (struct gdbarch *gdbar
 {
   if (reg_nr == AVR_PC_REGNUM)
     return builtin_type (gdbarch)->builtin_uint32;
+
+  avr_gdbarch_tdep *tdep = gdbarch_tdep<avr_gdbarch_tdep> (gdbarch);
   if (reg_nr == AVR_PSEUDO_PC_REGNUM)
-    return gdbarch_tdep (gdbarch)->pc_type;
+    return tdep->pc_type;
+
   if (reg_nr == AVR_SP_REGNUM)
     return builtin_type (gdbarch)->builtin_data_ptr;
+
   return builtin_type (gdbarch)->builtin_uint8;
 }
 
-/* Instruction address checks and convertions.  */
+/* Instruction address checks and conversions.  */
 
 static CORE_ADDR
 avr_make_iaddr (CORE_ADDR x)
@@ -256,7 +259,7 @@ avr_convert_iaddr_to_raw (CORE_ADDR x)
   return ((x) & 0xffffffff);
 }
 
-/* SRAM address checks and convertions.  */
+/* SRAM address checks and conversions.  */
 
 static CORE_ADDR
 avr_make_saddr (CORE_ADDR x)
@@ -274,7 +277,7 @@ avr_convert_saddr_to_raw (CORE_ADDR x)
   return ((x) & 0xffffffff);
 }
 
-/* EEPROM address checks and convertions.  I don't know if these will ever
+/* EEPROM address checks and conversions.  I don't know if these will ever
    actually be used, but I've added them just the same.  TRoth */
 
 /* TRoth/2002-04-08: Commented out for now to allow fix for problem with large
@@ -310,22 +313,22 @@ avr_address_to_pointer (struct gdbarch *
   if (AVR_TYPE_ADDRESS_CLASS_FLASH (type))
     {
       /* A data pointer in flash is byte addressed.  */
-      store_unsigned_integer (buf, TYPE_LENGTH (type), byte_order,
+      store_unsigned_integer (buf, type->length (), byte_order,
 			      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 ()->code () == TYPE_CODE_FUNC
+	   || type->target_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.  */
-      store_unsigned_integer (buf, TYPE_LENGTH (type), byte_order,
+      store_unsigned_integer (buf, type->length (), byte_order,
 			      avr_convert_iaddr_to_raw (addr >> 1));
     }
   else
     {
       /* Strip off any upper segment bits.  */
-      store_unsigned_integer (buf, TYPE_LENGTH (type), byte_order,
+      store_unsigned_integer (buf, type->length (), byte_order,
 			      avr_convert_saddr_to_raw (addr));
     }
 }
@@ -336,7 +339,7 @@ avr_pointer_to_address (struct gdbarch *
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   CORE_ADDR addr
-    = extract_unsigned_integer (buf, TYPE_LENGTH (type), byte_order);
+    = extract_unsigned_integer (buf, type->length (), byte_order);
 
   /* Is it a data address in flash?  */
   if (AVR_TYPE_ADDRESS_CLASS_FLASH (type))
@@ -345,9 +348,9 @@ 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
-	   || TYPE_CODE_SPACE (TYPE_TARGET_TYPE (type)))
+  else if (type->target_type ()->code () == TYPE_CODE_FUNC
+	   || type->target_type ()->code () == TYPE_CODE_METHOD
+	   || TYPE_CODE_SPACE (type->target_type ()))
     {
       /* A code pointer is word (16 bits) addressed so we shift it up
 	 by 1 bit to convert it to an address.  */
@@ -363,7 +366,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
@@ -379,12 +385,12 @@ static void
 avr_write_pc (struct regcache *regcache, CORE_ADDR val)
 {
   regcache_cooked_write_unsigned (regcache, AVR_PC_REGNUM,
-                                  avr_convert_iaddr_to_raw (val));
+				  avr_convert_iaddr_to_raw (val));
 }
 
 static enum register_status
 avr_pseudo_register_read (struct gdbarch *gdbarch, readable_regcache *regcache,
-                          int regnum, gdb_byte *buf)
+			  int regnum, gdb_byte *buf)
 {
   ULONGEST val;
   enum register_status status;
@@ -399,13 +405,13 @@ avr_pseudo_register_read (struct gdbarch
       store_unsigned_integer (buf, 4, gdbarch_byte_order (gdbarch), val);
       return status;
     default:
-      internal_error (__FILE__, __LINE__, _("invalid regnum"));
+      internal_error (_("invalid regnum"));
     }
 }
 
 static void
 avr_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
-                           int regnum, const gdb_byte *buf)
+			   int regnum, const gdb_byte *buf)
 {
   ULONGEST val;
 
@@ -417,7 +423,7 @@ avr_pseudo_register_write (struct gdbarc
       regcache_raw_write_unsigned (regcache, AVR_PC_REGNUM, val);
       break;
     default:
-      internal_error (__FILE__, __LINE__, _("invalid regnum"));
+      internal_error (_("invalid regnum"));
     }
 }
 
@@ -430,87 +436,87 @@ avr_pseudo_register_write (struct gdbarc
    This information is stored in the avr_unwind_cache structure.
 
    Some devices lack the sbiw instruction, so on those replace this:
-        sbiw    r28, XX
+	sbiw    r28, XX
    with this:
-        subi    r28,lo8(XX)
-        sbci    r29,hi8(XX)
+	subi    r28,lo8(XX)
+	sbci    r29,hi8(XX)
 
    A typical AVR function prologue with a frame pointer might look like this:
-        push    rXX        ; saved regs
-        ...
-        push    r28
-        push    r29
-        in      r28,__SP_L__
-        in      r29,__SP_H__
-        sbiw    r28,<LOCALS_SIZE>
-        in      __tmp_reg__,__SREG__
-        cli
-        out     __SP_H__,r29
-        out     __SREG__,__tmp_reg__
-        out     __SP_L__,r28
+	push    rXX        ; saved regs
+	...
+	push    r28
+	push    r29
+	in      r28,__SP_L__
+	in      r29,__SP_H__
+	sbiw    r28,<LOCALS_SIZE>
+	in      __tmp_reg__,__SREG__
+	cli
+	out     __SP_H__,r29
+	out     __SREG__,__tmp_reg__
+	out     __SP_L__,r28
 
    A typical AVR function prologue without a frame pointer might look like
    this:
-        push    rXX        ; saved regs
-        ...
+	push    rXX        ; saved regs
+	...
 
    A main function prologue looks like this:
-        ldi     r28,lo8(<RAM_ADDR> - <LOCALS_SIZE>)
-        ldi     r29,hi8(<RAM_ADDR> - <LOCALS_SIZE>)
-        out     __SP_H__,r29
-        out     __SP_L__,r28
+	ldi     r28,lo8(<RAM_ADDR> - <LOCALS_SIZE>)
+	ldi     r29,hi8(<RAM_ADDR> - <LOCALS_SIZE>)
+	out     __SP_H__,r29
+	out     __SP_L__,r28
 
    A signal handler prologue looks like this:
-        push    __zero_reg__
-        push    __tmp_reg__
-        in      __tmp_reg__, __SREG__
-        push    __tmp_reg__
-        clr     __zero_reg__
-        push    rXX             ; save registers r18:r27, r30:r31
-        ...
-        push    r28             ; save frame pointer
-        push    r29
-        in      r28, __SP_L__
-        in      r29, __SP_H__
-        sbiw    r28, <LOCALS_SIZE>
-        out     __SP_H__, r29
-        out     __SP_L__, r28
-        
+	push    __zero_reg__
+	push    __tmp_reg__
+	in      __tmp_reg__, __SREG__
+	push    __tmp_reg__
+	clr     __zero_reg__
+	push    rXX             ; save registers r18:r27, r30:r31
+	...
+	push    r28             ; save frame pointer
+	push    r29
+	in      r28, __SP_L__
+	in      r29, __SP_H__
+	sbiw    r28, <LOCALS_SIZE>
+	out     __SP_H__, r29
+	out     __SP_L__, r28
+	
    A interrupt handler prologue looks like this:
-        sei
-        push    __zero_reg__
-        push    __tmp_reg__
-        in      __tmp_reg__, __SREG__
-        push    __tmp_reg__
-        clr     __zero_reg__
-        push    rXX             ; save registers r18:r27, r30:r31
-        ...
-        push    r28             ; save frame pointer
-        push    r29
-        in      r28, __SP_L__
-        in      r29, __SP_H__
-        sbiw    r28, <LOCALS_SIZE>
-        cli
-        out     __SP_H__, r29
-        sei     
-        out     __SP_L__, r28
+	sei
+	push    __zero_reg__
+	push    __tmp_reg__
+	in      __tmp_reg__, __SREG__
+	push    __tmp_reg__
+	clr     __zero_reg__
+	push    rXX             ; save registers r18:r27, r30:r31
+	...
+	push    r28             ; save frame pointer
+	push    r29
+	in      r28, __SP_L__
+	in      r29, __SP_H__
+	sbiw    r28, <LOCALS_SIZE>
+	cli
+	out     __SP_H__, r29
+	sei     
+	out     __SP_L__, r28
 
    A `-mcall-prologues' prologue looks like this (Note that the megas use a
    jmp instead of a rjmp, thus the prologue is one word larger since jmp is a
    32 bit insn and rjmp is a 16 bit insn):
-        ldi     r26,lo8(<LOCALS_SIZE>)
-        ldi     r27,hi8(<LOCALS_SIZE>)
-        ldi     r30,pm_lo8(.L_foo_body)
-        ldi     r31,pm_hi8(.L_foo_body)
-        rjmp    __prologue_saves__+RRR
-        .L_foo_body:  */
+	ldi     r26,lo8(<LOCALS_SIZE>)
+	ldi     r27,hi8(<LOCALS_SIZE>)
+	ldi     r30,pm_lo8(.L_foo_body)
+	ldi     r31,pm_hi8(.L_foo_body)
+	rjmp    __prologue_saves__+RRR
+	.L_foo_body:  */
 
 /* Not really part of a prologue, but still need to scan for it, is when a
    function prologue moves values passed via registers as arguments to new
    registers.  In this case, all local variables live in registers, so there
    may be some register saves.  This is what it looks like:
-        movw    rMM, rNN
-        ...
+	movw    rMM, rNN
+	...
 
    There could be multiple movw's.  If the target doesn't have a movw insn, it
    will use two mov insns.  This could be done after any of the above prologue
@@ -524,7 +530,6 @@ avr_scan_prologue (struct gdbarch *gdbar
   int i;
   unsigned short insn;
   int scan_stage = 0;
-  struct bound_minimal_symbol msymbol;
   unsigned char prologue[AVR_MAX_PROLOGUE_SIZE];
   int vpc = 0;
   int len;
@@ -566,9 +571,9 @@ avr_scan_prologue (struct gdbarch *gdbar
 	      if (vpc + 4 + sizeof (img) < len
 		  && memcmp (prologue + vpc + 4, img, sizeof (img)) == 0)
 		{
-                  info->prologue_type = AVR_PROLOGUE_MAIN;
-                  info->base = locals;
-                  return pc_beg + 4;
+		  info->prologue_type = AVR_PROLOGUE_MAIN;
+		  info->base = locals;
+		  return pc_beg + 4;
 		}
 	    }
 	}
@@ -617,66 +622,67 @@ avr_scan_prologue (struct gdbarch *gdbar
       body_addr |= ((insn & 0xf) | ((insn & 0x0f00) >> 4)) << 8;
       pc_offset += 2;
 
-      msymbol = lookup_minimal_symbol ("__prologue_saves__", NULL, NULL);
+      bound_minimal_symbol msymbol
+	= lookup_minimal_symbol (current_program_space, "__prologue_saves__");
       if (!msymbol.minsym)
 	break;
 
       insn = extract_unsigned_integer (&prologue[vpc + 8], 2, byte_order);
       /* rjmp __prologue_saves__+RRR */
       if ((insn & 0xf000) == 0xc000)
-        {
-          /* Extract PC relative offset from RJMP */
-          i = (insn & 0xfff) | (insn & 0x800 ? (-1 ^ 0xfff) : 0);
-          /* Convert offset to byte addressable mode */
-          i *= 2;
-          /* Destination address */
-          i += pc_beg + 10;
+	{
+	  /* Extract PC relative offset from RJMP */
+	  i = (insn & 0xfff) | (insn & 0x800 ? (-1 ^ 0xfff) : 0);
+	  /* Convert offset to byte addressable mode */
+	  i *= 2;
+	  /* Destination address */
+	  i += pc_beg + 10;
 
-          if (body_addr != (pc_beg + 10)/2)
-            break;
+	  if (body_addr != (pc_beg + 10)/2)
+	    break;
 
-          pc_offset += 2;
-        }
+	  pc_offset += 2;
+	}
       else if ((insn & 0xfe0e) == 0x940c)
-        {
-          /* Extract absolute PC address from JMP */
-          i = (((insn & 0x1) | ((insn & 0x1f0) >> 3) << 16)
+	{
+	  /* Extract absolute PC address from JMP */
+	  i = (((insn & 0x1) | ((insn & 0x1f0) >> 3) << 16)
 	       | (extract_unsigned_integer (&prologue[vpc + 10], 2, byte_order)
 		  & 0xffff));
-          /* Convert address to byte addressable mode */
-          i *= 2;
+	  /* Convert address to byte addressable mode */
+	  i *= 2;
 
-          if (body_addr != (pc_beg + 12)/2)
-            break;
+	  if (body_addr != (pc_beg + 12)/2)
+	    break;
 
-          pc_offset += 4;
-        }
+	  pc_offset += 4;
+	}
       else
-        break;
+	break;
 
       /* Resolve offset (in words) from __prologue_saves__ symbol.
-         Which is a pushes count in `-mcall-prologues' mode */
-      num_pushes = AVR_MAX_PUSHES - (i - BMSYMBOL_VALUE_ADDRESS (msymbol)) / 2;
+	 Which is a pushes count in `-mcall-prologues' mode */
+      num_pushes = AVR_MAX_PUSHES - (i - msymbol.value_address ()) / 2;
 
       if (num_pushes > AVR_MAX_PUSHES)
-        {
-          fprintf_unfiltered (gdb_stderr, _("Num pushes too large: %d\n"),
-                              num_pushes);
-          num_pushes = 0;
-        }
+	{
+	  gdb_printf (gdb_stderr, _("Num pushes too large: %d\n"),
+		      num_pushes);
+	  num_pushes = 0;
+	}
 
       if (num_pushes)
 	{
 	  int from;
 
-	  info->saved_regs[AVR_FP_REGNUM + 1].addr = num_pushes;
+	  info->saved_regs[AVR_FP_REGNUM + 1].set_addr (num_pushes);
 	  if (num_pushes >= 2)
-	    info->saved_regs[AVR_FP_REGNUM].addr = num_pushes - 1;
+	    info->saved_regs[AVR_FP_REGNUM].set_addr (num_pushes - 1);
 
 	  i = 0;
 	  for (from = AVR_LAST_PUSHED_REGNUM + 1 - (num_pushes - 2);
 	       from <= AVR_LAST_PUSHED_REGNUM; ++from)
-	    info->saved_regs [from].addr = ++i;
+	    info->saved_regs [from].set_addr (++i);
 	}
       info->size = loc_size + num_pushes;
       info->prologue_type = AVR_PROLOGUE_CALL;
@@ -702,22 +708,22 @@ avr_scan_prologue (struct gdbarch *gdbar
       if (len >= sizeof (img)
 	  && memcmp (prologue, img, sizeof (img)) == 0)
 	{
-          info->prologue_type = AVR_PROLOGUE_INTR;
+	  info->prologue_type = AVR_PROLOGUE_INTR;
 	  vpc += sizeof (img);
-          info->saved_regs[AVR_SREG_REGNUM].addr = 3;
-          info->saved_regs[0].addr = 2;
-          info->saved_regs[1].addr = 1;
-          info->size += 3;
+	  info->saved_regs[AVR_SREG_REGNUM].set_addr (3);
+	  info->saved_regs[0].set_addr (2);
+	  info->saved_regs[1].set_addr (1);
+	  info->size += 3;
 	}
       else if (len >= sizeof (img) - 2
 	       && memcmp (img + 2, prologue, sizeof (img) - 2) == 0)
 	{
-          info->prologue_type = AVR_PROLOGUE_SIG;
-          vpc += sizeof (img) - 2;
-          info->saved_regs[AVR_SREG_REGNUM].addr = 3;
-          info->saved_regs[0].addr = 2;
-          info->saved_regs[1].addr = 1;
-          info->size += 2;
+	  info->prologue_type = AVR_PROLOGUE_SIG;
+	  vpc += sizeof (img) - 2;
+	  info->saved_regs[AVR_SREG_REGNUM].set_addr (3);
+	  info->saved_regs[0].set_addr (2);
+	  info->saved_regs[1].set_addr (1);
+	  info->size += 2;
 	}
     }
 
@@ -732,7 +738,7 @@ avr_scan_prologue (struct gdbarch *gdbar
 	  /* Bits 4-9 contain a mask for registers R0-R32.  */
 	  int regno = (insn & 0x1f0) >> 4;
 	  info->size++;
-	  info->saved_regs[regno].addr = info->size;
+	  info->saved_regs[regno].set_addr (info->size);
 	  scan_stage = 1;
 	}
       else
@@ -742,22 +748,22 @@ avr_scan_prologue (struct gdbarch *gdbar
   gdb_assert (vpc < AVR_MAX_PROLOGUE_SIZE);
 
   /* Handle static small stack allocation using rcall or push.  */
-
+  avr_gdbarch_tdep *tdep = gdbarch_tdep<avr_gdbarch_tdep> (gdbarch);
   while (scan_stage == 1 && vpc < len)
     {
       insn = extract_unsigned_integer (&prologue[vpc], 2, byte_order);
       if (insn == 0xd000)	/* rcall .+0 */
-        {
-          info->size += gdbarch_tdep (gdbarch)->call_length;
-          vpc += 2;
-        }
+	{
+	  info->size += tdep->call_length;
+	  vpc += 2;
+	}
       else if (insn == 0x920f || insn == 0x921f)  /* push r0 or push r1 */
-        {
-          info->size += 1;
-          vpc += 2;
-        }
+	{
+	  info->size += 1;
+	  vpc += 2;
+	}
       else
-        break;
+	break;
     }
 
   /* Second stage of the prologue scanning.
@@ -783,7 +789,7 @@ avr_scan_prologue (struct gdbarch *gdbar
   /* Third stage of the prologue scanning.  (Really two stages).
      Scan for:
      sbiw r28,XX or subi r28,lo8(XX)
-                    sbci r29,hi8(XX)
+		    sbci r29,hi8(XX)
      in __tmp_reg__,__SREG__
      cli
      out __SP_H__,r29
@@ -813,10 +819,10 @@ avr_scan_prologue (struct gdbarch *gdbar
 
       insn = extract_unsigned_integer (&prologue[vpc], 2, byte_order);
       if ((insn & 0xff30) == 0x9720)	/* sbiw r28,XXX */
-        {
-          locals_size = (insn & 0xf) | ((insn & 0xc0) >> 2);
-          vpc += 2;
-        }
+	{
+	  locals_size = (insn & 0xf) | ((insn & 0xc0) >> 2);
+	  vpc += 2;
+	}
       else if ((insn & 0xf0f0) == 0x50c0)	/* subi r28,lo8(XX) */
 	{
 	  locals_size = (insn & 0xf) | ((insn & 0xf00) >> 4);
@@ -826,28 +832,28 @@ avr_scan_prologue (struct gdbarch *gdbar
 	  locals_size += ((insn & 0xf) | ((insn & 0xf00) >> 4)) << 8;
 	}
       else
-        return pc_beg + vpc;
+	return pc_beg + vpc;
 
       /* Scan the last part of the prologue.  May not be present for interrupt
-         or signal handler functions, which is why we set the prologue type
-         when we saw the beginning of the prologue previously.  */
+	 or signal handler functions, which is why we set the prologue type
+	 when we saw the beginning of the prologue previously.  */
 
       if (vpc + sizeof (img_sig) < len
 	  && memcmp (prologue + vpc, img_sig, sizeof (img_sig)) == 0)
-        {
-          vpc += sizeof (img_sig);
-        }
+	{
+	  vpc += sizeof (img_sig);
+	}
       else if (vpc + sizeof (img_int) < len 
 	       && memcmp (prologue + vpc, img_int, sizeof (img_int)) == 0)
-        {
-          vpc += sizeof (img_int);
-        }
+	{
+	  vpc += sizeof (img_int);
+	}
       if (vpc + sizeof (img) < len
 	  && memcmp (prologue + vpc, img, sizeof (img)) == 0)
-        {
-          info->prologue_type = AVR_PROLOGUE_NORMAL;
-          vpc += sizeof (img);
-        }
+	{
+	  info->prologue_type = AVR_PROLOGUE_NORMAL;
+	  vpc += sizeof (img);
+	}
 
       info->size += locals_size;
 
@@ -861,11 +867,11 @@ avr_scan_prologue (struct gdbarch *gdbar
     {
       insn = extract_unsigned_integer (&prologue[vpc], 2, byte_order);
       if ((insn & 0xff00) == 0x0100)	/* movw rXX, rYY */
-        continue;
+	continue;
       else if ((insn & 0xfc00) == 0x2c00) /* mov rXX, rYY */
-        continue;
+	continue;
       else
-          break;
+	  break;
     }
     
   return pc_beg + vpc;
@@ -889,7 +895,7 @@ avr_skip_prologue (struct gdbarch *gdbar
   {
     CORE_ADDR prologue_end = pc;
     struct avr_unwind_cache info = {0};
-    struct trad_frame_saved_reg saved_regs[AVR_NUM_REGS];
+    trad_frame_saved_reg saved_regs[AVR_NUM_REGS];
 
     info.saved_regs = saved_regs;
     
@@ -935,30 +941,30 @@ 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)
-      && TYPE_LENGTH (valtype) > 8)
+  if ((valtype->code () == TYPE_CODE_STRUCT
+       || valtype->code () == TYPE_CODE_UNION
+       || valtype->code () == TYPE_CODE_ARRAY)
+      && valtype->length () > 8)
     return RETURN_VALUE_STRUCT_CONVENTION;
 
-  if (TYPE_LENGTH (valtype) <= 2)
+  if (valtype->length () <= 2)
     lsb_reg = 24;
-  else if (TYPE_LENGTH (valtype) <= 4)
+  else if (valtype->length () <= 4)
     lsb_reg = 22;
-  else if (TYPE_LENGTH (valtype) <= 8)
+  else if (valtype->length () <= 8)
     lsb_reg = 18;
   else
     gdb_assert_not_reached ("unexpected type length");
 
   if (writebuf != NULL)
     {
-      for (i = 0; i < TYPE_LENGTH (valtype); i++)
+      for (i = 0; i < valtype->length (); i++)
 	regcache->cooked_write (lsb_reg + i, writebuf + i);
     }
 
   if (readbuf != NULL)
     {
-      for (i = 0; i < TYPE_LENGTH (valtype); i++)
+      for (i = 0; i < valtype->length (); i++)
 	regcache->cooked_read (lsb_reg + i, readbuf + i);
     }
 
@@ -973,15 +979,14 @@ avr_return_value (struct gdbarch *gdbarc
    for it IS the sp for the next frame.  */
 
 static struct avr_unwind_cache *
-avr_frame_unwind_cache (struct frame_info *this_frame,
-                        void **this_prologue_cache)
+avr_frame_unwind_cache (const frame_info_ptr &this_frame,
+			void **this_prologue_cache)
 {
   CORE_ADDR start_pc, current_pc;
   ULONGEST prev_sp;
   ULONGEST this_base;
   struct avr_unwind_cache *info;
   struct gdbarch *gdbarch;
-  struct gdbarch_tdep *tdep;
   int i;
 
   if (*this_prologue_cache)
@@ -1006,20 +1011,20 @@ avr_frame_unwind_cache (struct frame_inf
       ULONGEST high_base;       /* High byte of FP */
 
       /* The SP was moved to the FP.  This indicates that a new frame
-         was created.  Get THIS frame's FP value by unwinding it from
-         the next frame.  */
+	 was created.  Get THIS frame's FP value by unwinding it from
+	 the next frame.  */
       this_base = get_frame_register_unsigned (this_frame, AVR_FP_REGNUM);
       high_base = get_frame_register_unsigned (this_frame, AVR_FP_REGNUM + 1);
       this_base += (high_base << 8);
       
       /* The FP points at the last saved register.  Adjust the FP back
-         to before the first saved register giving the SP.  */
+	 to before the first saved register giving the SP.  */
       prev_sp = this_base + info->size; 
    }
   else
     {
       /* Assume that the FP is this frame's SP but with that pushed
-         stack space added back.  */
+	 stack space added back.  */
       this_base = get_frame_register_unsigned (this_frame, AVR_SP_REGNUM);
       prev_sp = this_base + info->size;
     }
@@ -1034,26 +1039,27 @@ avr_frame_unwind_cache (struct frame_inf
   /* Adjust all the saved registers so that they contain addresses and not
      offsets.  */
   for (i = 0; i < gdbarch_num_regs (gdbarch) - 1; i++)
-    if (info->saved_regs[i].addr > 0)
-      info->saved_regs[i].addr = info->prev_sp - info->saved_regs[i].addr;
+    if (info->saved_regs[i].is_addr ())
+      info->saved_regs[i].set_addr (info->prev_sp
+				    - info->saved_regs[i].addr ());
 
   /* Except for the main and startup code, the return PC is always saved on
      the stack and is at the base of the frame.  */
 
   if (info->prologue_type != AVR_PROLOGUE_MAIN)
-    info->saved_regs[AVR_PC_REGNUM].addr = info->prev_sp;
+    info->saved_regs[AVR_PC_REGNUM].set_addr (info->prev_sp);
 
   /* The previous frame's SP needed to be computed.  Save the computed
      value.  */
-  tdep = gdbarch_tdep (gdbarch);
-  trad_frame_set_value (info->saved_regs, AVR_SP_REGNUM,
-                        info->prev_sp - 1 + tdep->call_length);
+  avr_gdbarch_tdep *tdep = gdbarch_tdep<avr_gdbarch_tdep> (gdbarch);
+  info->saved_regs[AVR_SP_REGNUM].set_value (info->prev_sp
+					     - 1 + tdep->call_length);
 
   return info;
 }
 
 static CORE_ADDR
-avr_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
+avr_unwind_pc (struct gdbarch *gdbarch, const frame_info_ptr &next_frame)
 {
   ULONGEST pc;
 
@@ -1063,7 +1069,7 @@ avr_unwind_pc (struct gdbarch *gdbarch,
 }
 
 static CORE_ADDR
-avr_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
+avr_unwind_sp (struct gdbarch *gdbarch, const frame_info_ptr &next_frame)
 {
   ULONGEST sp;
 
@@ -1076,9 +1082,9 @@ avr_unwind_sp (struct gdbarch *gdbarch,
    frame.  This will be used to create a new GDB frame struct.  */
 
 static void
-avr_frame_this_id (struct frame_info *this_frame,
-                   void **this_prologue_cache,
-                   struct frame_id *this_id)
+avr_frame_this_id (const frame_info_ptr &this_frame,
+		   void **this_prologue_cache,
+		   struct frame_id *this_id)
 {
   struct avr_unwind_cache *info
     = avr_frame_unwind_cache (this_frame, this_prologue_cache);
@@ -1101,7 +1107,7 @@ avr_frame_this_id (struct frame_info *th
 }
 
 static struct value *
-avr_frame_prev_register (struct frame_info *this_frame,
+avr_frame_prev_register (const frame_info_ptr &this_frame,
 			 void **this_prologue_cache, int regnum)
 {
   struct avr_unwind_cache *info
@@ -1109,8 +1115,8 @@ avr_frame_prev_register (struct frame_in
 
   if (regnum == AVR_PC_REGNUM || regnum == AVR_PSEUDO_PC_REGNUM)
     {
-      if (trad_frame_addr_p (info->saved_regs, AVR_PC_REGNUM))
-        {
+      if (info->saved_regs[AVR_PC_REGNUM].is_addr ())
+	{
 	  /* Reading the return PC from the PC register is slightly
 	     abnormal.  register_size(AVR_PC_REGNUM) says it is 4 bytes,
 	     but in reality, only two bytes (3 in upcoming mega256) are
@@ -1127,21 +1133,21 @@ avr_frame_prev_register (struct frame_in
 	  int i;
 	  gdb_byte buf[3];
 	  struct gdbarch *gdbarch = get_frame_arch (this_frame);
-	  struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+	  avr_gdbarch_tdep *tdep = gdbarch_tdep<avr_gdbarch_tdep> (gdbarch);
 
-	  read_memory (info->saved_regs[AVR_PC_REGNUM].addr,
-                       buf, tdep->call_length);
+	  read_memory (info->saved_regs[AVR_PC_REGNUM].addr (),
+		       buf, tdep->call_length);
 
 	  /* Extract the PC read from memory as a big-endian.  */
 	  pc = 0;
 	  for (i = 0; i < tdep->call_length; i++)
 	    pc = (pc << 8) | buf[i];
 
-          if (regnum == AVR_PC_REGNUM)
-            pc <<= 1;
+	  if (regnum == AVR_PC_REGNUM)
+	    pc <<= 1;
 
 	  return frame_unwind_got_constant (this_frame, regnum, pc);
-        }
+	}
 
       return frame_unwind_got_optimized (this_frame, regnum);
     }
@@ -1149,17 +1155,19 @@ avr_frame_prev_register (struct frame_in
   return trad_frame_get_prev_register (this_frame, info->saved_regs, regnum);
 }
 
-static const struct frame_unwind avr_frame_unwind = {
+static const struct frame_unwind_legacy avr_frame_unwind (
+  "avr prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   avr_frame_this_id,
   avr_frame_prev_register,
   NULL,
   default_frame_sniffer
-};
+);
 
 static CORE_ADDR
-avr_frame_base_address (struct frame_info *this_frame, void **this_cache)
+avr_frame_base_address (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct avr_unwind_cache *info
     = avr_frame_unwind_cache (this_frame, this_cache);
@@ -1179,7 +1187,7 @@ static const struct frame_base avr_frame
    save_dummy_frame_tos(), and the PC match the dummy frame's breakpoint.  */
 
 static struct frame_id
-avr_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
+avr_dummy_id (struct gdbarch *gdbarch, const frame_info_ptr &this_frame)
 {
   ULONGEST base;
 
@@ -1190,18 +1198,19 @@ avr_dummy_id (struct gdbarch *gdbarch, s
 /* When arguments must be pushed onto the stack, they go on in reverse
    order.  The below implements a FILO (stack) to do this.  */
 
-struct stack_item
+struct avr_stack_item
 {
   int len;
-  struct stack_item *prev;
+  struct avr_stack_item *prev;
   gdb_byte *data;
 };
 
-static struct stack_item *
-push_stack_item (struct stack_item *prev, const bfd_byte *contents, int len)
+static struct avr_stack_item *
+push_stack_item (struct avr_stack_item *prev, const bfd_byte *contents,
+		 int len)
 {
-  struct stack_item *si;
-  si = XNEW (struct stack_item);
+  struct avr_stack_item *si;
+  si = XNEW (struct avr_stack_item);
   si->data = (gdb_byte *) xmalloc (len);
   si->len = len;
   si->prev = prev;
@@ -1209,11 +1218,10 @@ push_stack_item (struct stack_item *prev
   return si;
 }
 
-static struct stack_item *pop_stack_item (struct stack_item *si);
-static struct stack_item *
-pop_stack_item (struct stack_item *si)
+static struct avr_stack_item *
+pop_stack_item (struct avr_stack_item *si)
 {
-  struct stack_item *dead = si;
+  struct avr_stack_item *dead = si;
   si = si->prev;
   xfree (dead->data);
   xfree (dead);
@@ -1261,28 +1269,29 @@ pop_stack_item (struct stack_item *si)
 
 static CORE_ADDR
 avr_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
-                     struct regcache *regcache, CORE_ADDR bp_addr,
-                     int nargs, struct value **args, CORE_ADDR sp,
+		     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)
 {
   int i;
   gdb_byte buf[3];
-  int call_length = gdbarch_tdep (gdbarch)->call_length;
+  avr_gdbarch_tdep *tdep = gdbarch_tdep<avr_gdbarch_tdep> (gdbarch);
+  int call_length = tdep->call_length;
   CORE_ADDR return_pc = avr_convert_iaddr_to_raw (bp_addr);
   int regnum = AVR_ARGN_REGNUM;
-  struct stack_item *si = NULL;
+  struct avr_stack_item *si = NULL;
 
   if (return_method == return_method_struct)
     {
       regcache_cooked_write_unsigned
-        (regcache, regnum--, (struct_addr >> 8) & 0xff);
+	(regcache, regnum--, (struct_addr >> 8) & 0xff);
       regcache_cooked_write_unsigned
-        (regcache, regnum--, struct_addr & 0xff);
+	(regcache, regnum--, struct_addr & 0xff);
       /* SP being post decremented, we need to reserve one byte so that the
-         return address won't overwrite the result (or vice-versa).  */
+	 return address won't overwrite the result (or vice-versa).  */
       if (sp == struct_addr)
-        sp--;
+	sp--;
     }
 
   for (i = 0; i < nargs; i++)
@@ -1290,35 +1299,35 @@ avr_push_dummy_call (struct gdbarch *gdb
       int last_regnum;
       int j;
       struct value *arg = args[i];
-      struct type *type = check_typedef (value_type (arg));
-      const bfd_byte *contents = value_contents (arg);
-      int len = TYPE_LENGTH (type);
+      struct type *type = check_typedef (arg->type ());
+      const bfd_byte *contents = arg->contents ().data ();
+      int len = type->length ();
 
       /* Calculate the potential last register needed.
-         E.g. For length 2, registers regnum and regnum-1 (say 25 and 24)
-         shall be used. So, last needed register will be regnum-1(24).  */
+	 E.g. For length 2, registers regnum and regnum-1 (say 25 and 24)
+	 shall be used. So, last needed register will be regnum-1(24).  */
       last_regnum = regnum - (len + (len & 1)) + 1;
 
       /* If there are registers available, use them.  Once we start putting
-         stuff on the stack, all subsequent args go on stack.  */
+	 stuff on the stack, all subsequent args go on stack.  */
       if ((si == NULL) && (last_regnum >= AVR_LAST_ARG_REGNUM))
-        {
-          /* Skip a register for odd length args.  */
-          if (len & 1)
-            regnum--;
-
-          /* Write MSB of argument into register and subsequent bytes in
-             decreasing register numbers.  */
-          for (j = 0; j < len; j++)
-            regcache_cooked_write_unsigned
-              (regcache, regnum--, contents[len - j - 1]);
-        }
+	{
+	  /* Skip a register for odd length args.  */
+	  if (len & 1)
+	    regnum--;
+
+	  /* Write MSB of argument into register and subsequent bytes in
+	     decreasing register numbers.  */
+	  for (j = 0; j < len; j++)
+	    regcache_cooked_write_unsigned
+	      (regcache, regnum--, contents[len - j - 1]);
+	}
       /* No registers available, push the args onto the stack.  */
       else
-        {
-          /* From here on, we don't care about regnum.  */
-          si = push_stack_item (si, contents, len);
-        }
+	{
+	  /* From here on, we don't care about regnum.  */
+	  si = push_stack_item (si, contents, len);
+	}
     }
 
   /* Push args onto the stack.  */
@@ -1369,7 +1378,7 @@ avr_dwarf_reg_to_regnum (struct gdbarch
    This method maps DW_AT_address_class attributes to a
    type_instance_flag_value.  */
 
-static int
+static type_instance_flags
 avr_address_class_type_flags (int byte_size, int dwarf2_addr_class)
 {
   /* The value 1 of the DW_AT_address_class attribute corresponds to the
@@ -1386,7 +1395,8 @@ avr_address_class_type_flags (int byte_s
    Convert a type_instance_flag_value to an address space qualifier.  */
 
 static const char*
-avr_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags)
+avr_address_class_type_flags_to_name (struct gdbarch *gdbarch,
+				      type_instance_flags type_flags)
 {
   if (type_flags & AVR_TYPE_INSTANCE_FLAG_ADDRESS_CLASS_FLASH)
     return "flash";
@@ -1398,18 +1408,18 @@ avr_address_class_type_flags_to_name (st
 
    Convert an address space qualifier to a type_instance_flag_value.  */
 
-static int
+static bool
 avr_address_class_name_to_type_flags (struct gdbarch *gdbarch,
-                                      const char* name,
-                                      int *type_flags_ptr)
+				      const char* name,
+				      type_instance_flags *type_flags_ptr)
 {
   if (strcmp (name, "flash") == 0)
     {
       *type_flags_ptr = AVR_TYPE_INSTANCE_FLAG_ADDRESS_CLASS_FLASH;
-      return 1;
+      return true;
     }
   else
-    return 0;
+    return false;
 }
 
 /* Initialize the gdbarch structure for the AVR's.  */
@@ -1417,8 +1427,6 @@ avr_address_class_name_to_type_flags (st
 static struct gdbarch *
 avr_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
-  struct gdbarch *gdbarch;
-  struct gdbarch_tdep *tdep;
   struct gdbarch_list *best_arch;
   int call_length;
 
@@ -1450,22 +1458,26 @@ avr_gdbarch_init (struct gdbarch_info in
        best_arch != NULL;
        best_arch = gdbarch_list_lookup_by_info (best_arch->next, &info))
     {
-      if (gdbarch_tdep (best_arch->gdbarch)->call_length == call_length)
+      avr_gdbarch_tdep *tdep
+	= gdbarch_tdep<avr_gdbarch_tdep> (best_arch->gdbarch);
+
+      if (tdep->call_length == call_length)
 	return best_arch->gdbarch;
     }
 
   /* None found, create a new architecture from the information provided.  */
-  tdep = XCNEW (struct gdbarch_tdep);
-  gdbarch = gdbarch_alloc (&info, tdep);
+  gdbarch *gdbarch
+    = gdbarch_alloc (&info, gdbarch_tdep_up (new avr_gdbarch_tdep));
+  avr_gdbarch_tdep *tdep = gdbarch_tdep<avr_gdbarch_tdep> (gdbarch);
   
   tdep->call_length = call_length;
 
   /* Create a type for PC.  We can't use builtin types here, as they may not
      be defined.  */
-  tdep->void_type = arch_type (gdbarch, TYPE_CODE_VOID, TARGET_CHAR_BIT,
-			       "void");
+  type_allocator alloc (gdbarch);
+  tdep->void_type = alloc.new_type (TYPE_CODE_VOID, TARGET_CHAR_BIT, "void");
   tdep->func_void_type = make_function_type (tdep->void_type, NULL);
-  tdep->pc_type = arch_pointer_type (gdbarch, 4 * TARGET_CHAR_BIT, NULL,
+  tdep->pc_type = init_pointer_type (alloc, 4 * TARGET_CHAR_BIT, NULL,
 				     tdep->func_void_type);
 
   set_gdbarch_short_bit (gdbarch, 2 * TARGET_CHAR_BIT);
@@ -1499,7 +1511,8 @@ avr_gdbarch_init (struct gdbarch_info in
 
   set_gdbarch_num_pseudo_regs (gdbarch, AVR_NUM_PSEUDO_REGS);
   set_gdbarch_pseudo_register_read (gdbarch, avr_pseudo_register_read);
-  set_gdbarch_pseudo_register_write (gdbarch, avr_pseudo_register_write);
+  set_gdbarch_deprecated_pseudo_register_write (gdbarch,
+						avr_pseudo_register_write);
 
   set_gdbarch_return_value (gdbarch, avr_return_value);
 
@@ -1555,14 +1568,15 @@ avr_io_reg_read_command (const char *arg
   unsigned int val;
 
   /* Find out how many io registers the target has.  */
-  gdb::optional<gdb::byte_vector> buf
-    = target_read_alloc (current_top_target (), TARGET_OBJECT_AVR, "avr.io_reg");
+  std::optional<gdb::byte_vector> buf
+    = target_read_alloc (current_inferior ()->top_target (),
+			 TARGET_OBJECT_AVR, "avr.io_reg");
 
   if (!buf)
     {
-      fprintf_unfiltered (gdb_stderr,
-			  _("ERR: info io_registers NOT supported "
-			    "by current target\n"));
+      gdb_printf (gdb_stderr,
+		  _("ERR: info io_registers NOT supported "
+		    "by current target\n"));
       return;
     }
 
@@ -1570,14 +1584,12 @@ avr_io_reg_read_command (const char *arg
 
   if (sscanf (bufstr, "%x", &nreg) != 1)
     {
-      fprintf_unfiltered (gdb_stderr,
-			  _("Error fetching number of io registers\n"));
+      gdb_printf (gdb_stderr,
+		  _("Error fetching number of io registers\n"));
       return;
     }
 
-  reinitialize_more_filter ();
-
-  printf_unfiltered (_("Target has %u io registers:\n\n"), nreg);
+  gdb_printf (_("Target has %u io registers:\n\n"), nreg);
 
   /* only fetch up to 8 registers at a time to keep the buffer small */
   int step = 8;
@@ -1587,25 +1599,26 @@ avr_io_reg_read_command (const char *arg
       /* how many registers this round? */
       int j = step;
       if ((i+j) >= nreg)
-        j = nreg - i;           /* last block is less than 8 registers */
+	j = nreg - i;           /* last block is less than 8 registers */
 
       snprintf (query, sizeof (query) - 1, "avr.io_reg:%x,%x", i, j);
-      buf = target_read_alloc (current_top_target (), TARGET_OBJECT_AVR, query);
+      buf = target_read_alloc (current_inferior ()->top_target (),
+			       TARGET_OBJECT_AVR, query);
 
       if (!buf)
-        {
-          fprintf_unfiltered (gdb_stderr,
-			      _("ERR: error reading avr.io_reg:%x,%x\n"),
-			      i, j);
-          return;
-        }
+	{
+	  gdb_printf (gdb_stderr,
+		      _("ERR: error reading avr.io_reg:%x,%x\n"),
+		      i, j);
+	  return;
+	}
 
       const char *p = (const char *) buf->data ();
       for (int k = i; k < (i + j); k++)
 	{
 	  if (sscanf (p, "%[^,],%x;", query, &val) == 2)
 	    {
-	      printf_filtered ("[%02x] %-15s : %02x\n", k, query, val);
+	      gdb_printf ("[%02x] %-15s : %02x\n", k, query, val);
 	      while ((*p != ';') && (*p != '\0'))
 		p++;
 	      p++;		/* skip over ';' */
@@ -1616,10 +1629,9 @@ avr_io_reg_read_command (const char *arg
     }
 }
 
-void
-_initialize_avr_tdep (void)
+INIT_GDB_FILE (avr_tdep)
 {
-  register_gdbarch_init (bfd_arch_avr, avr_gdbarch_init);
+  gdbarch_register (bfd_arch_avr, avr_gdbarch_init);
 
   /* Add a new command to allow the user to query the avr remote target for
      the values of the io space registers in a saner way than just using
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/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.20200303/gdb/ax_cxx_compile_stdcxx.m4	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ax_cxx_compile_stdcxx.m4	2026-03-05 02:07:22.000000000 +0000
@@ -1,4 +1,4 @@
-# Copyright (c) 2016-2020 Free Software Foundation, Inc.
+# Copyright (c) 2016-2025 Free Software Foundation, Inc.
 #
 # Originally based on the AX_CXX_COMPILE_STDCXX macro found at the url
 # below.
@@ -19,13 +19,13 @@
 #
 #   Check for baseline language coverage in the compiler for the specified
 #   version of the C++ standard.  If necessary, add switches to CXX and
-#   CXXCPP to enable support.  VERSION may be '11' (for the C++11 standard)
-#   or '14' (for the C++14 standard).
+#   CXXCPP to enable support.  VERSION may be '11', '14', '17', or '20' for
+#   the respective C++ standard version.
 #
 #   The second argument, if specified, indicates whether you insist on an
 #   extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
 #   -std=c++11).  If neither is specified, you get whatever works, with
-#   preference for an extended mode.
+#   preference for no added switch, and then for an extended mode.
 #
 #   The third argument, if specified 'mandatory' or if left unspecified,
 #   indicates that baseline support for the specified C++ standard is
@@ -42,14 +42,17 @@
 #   Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
 #   Copyright (c) 2015 Paul Norman <penorman@mac.com>
 #   Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
-#   Copyright (c) 2016 Krzesimir Nowak <qdlacz@gmail.com>
+#   Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
+#   Copyright (c) 2019 Enji Cooper <yaneurabeya@gmail.com>
+#   Copyright (c) 2020 Jason Merrill <jason@redhat.com>
+#   Copyright (c) 2021 JÃ¶rn Heusipp <osmanx@problemloesungsmaschine.de>
 #
 #   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 8
+#serial 18
 
 dnl  This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
 dnl  (serial version number 13).
@@ -58,6 +61,7 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
   m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
         [$1], [14], [ax_cxx_compile_alternatives="14 1y"],
         [$1], [17], [ax_cxx_compile_alternatives="17 1z"],
+        [$1], [20], [ax_cxx_compile_alternatives="20"],
         [m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
   m4_if([$2], [], [],
         [$2], [ext], [],
@@ -70,14 +74,16 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
   AC_LANG_PUSH([C++])dnl
   CXX_DIALECT=""
   ac_success=no
-  AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
-  ax_cv_cxx_compile_cxx$1,
-  [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
-    [ax_cv_cxx_compile_cxx$1=yes],
-    [ax_cv_cxx_compile_cxx$1=no])])
-  if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
-    ac_success=yes
-  fi
+
+  m4_if([$2], [], [dnl
+    AC_CACHE_CHECK(whether $CXX supports C++$1 features by default,
+		   ax_cv_cxx_compile_cxx$1,
+      [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
+        [ax_cv_cxx_compile_cxx$1=yes],
+        [ax_cv_cxx_compile_cxx$1=no])])
+    if test x$ax_cv_cxx_compile_cxx$1 = xyes; then
+      ac_success=yes
+    fi])
 
   m4_if([$2], [noext], [], [dnl
   if test x$ac_success = xno; then
@@ -94,6 +100,10 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
          CXX="$ac_save_CXX"])
       if eval test x\$$cachevar = xyes; then
         CXX_DIALECT="$switch"
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
         ac_success=yes
         break
       fi
@@ -105,9 +115,18 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
     dnl HP's aCC needs +std=c++11 according to:
     dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
     dnl Cray's crayCC needs "-h std=c++11"
+    dnl MSVC needs -std:c++NN for C++17 and later (default is C++14)
     for alternative in ${ax_cxx_compile_alternatives}; do
-      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
-        cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+      for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}" MSVC; do
+        if test x"$switch" = xMSVC; then
+          dnl AS_TR_SH maps both `:` and `=` to `_` so -std:c++17 would collide
+          dnl with -std=c++17.  We suffix the cache variable name with _MSVC to
+          dnl avoid this.
+          switch=-std:c++${alternative}
+          cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_${switch}_MSVC])
+        else
+          cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
+        fi
         AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
                        $cachevar,
           [ac_save_CXX="$CXX"
@@ -118,6 +137,10 @@ AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
            CXX="$ac_save_CXX"])
         if eval test x\$$cachevar = xyes; then
           CXX_DIALECT="$switch"
+          CXX="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
           ac_success=yes
           break
         fi
@@ -152,7 +175,6 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbo
   _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
 )
 
-
 dnl  Test body for checking C++14 support
 
 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
@@ -160,12 +182,24 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbo
   _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
 )
 
+dnl  Test body for checking C++17 support
+
 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
   _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
   _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
   _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
 )
 
+dnl  Test body for checking C++20 support
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_20],
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_11
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_14
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_17
+  _AX_CXX_COMPILE_STDCXX_testbody_new_in_20
+)
+
+
 dnl  Tests for new features in C++11
 
 m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
@@ -177,7 +211,11 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbo
 
 #error "This is not a C++ compiler"
 
-#elif __cplusplus < 201103L
+// MSVC always sets __cplusplus to 199711L in older versions; newer versions
+// only set it correctly if /Zc:__cplusplus is specified as well as a
+// /std:c++NN switch:
+// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
+#elif __cplusplus < 201103L && !defined _MSC_VER
 
 #error "This is not a C++11 compiler"
 
@@ -202,11 +240,13 @@ namespace cxx11
 
     struct Base
     {
+      virtual ~Base() {}
       virtual void f() {}
     };
 
     struct Derived : public Base
     {
+      virtual ~Derived() override {}
       virtual void f() override {}
     };
 
@@ -466,7 +506,7 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbo
 
 #error "This is not a C++ compiler"
 
-#elif __cplusplus < 201402L
+#elif __cplusplus < 201402L && !defined _MSC_VER
 
 #error "This is not a C++14 compiler"
 
@@ -590,20 +630,12 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbo
 
 #error "This is not a C++ compiler"
 
-#elif __cplusplus <= 201402L
+#elif __cplusplus < 201703L && !defined _MSC_VER
 
 #error "This is not a C++17 compiler"
 
 #else
 
-#if defined(__clang__)
-  #define REALLY_CLANG
-#else
-  #if defined(__GNUC__)
-    #define REALLY_GCC
-  #endif
-#endif
-
 #include <initializer_list>
 #include <utility>
 #include <type_traits>
@@ -611,16 +643,12 @@ m4_define([_AX_CXX_COMPILE_STDCXX_testbo
 namespace cxx17
 {
 
-#if !defined(REALLY_CLANG)
   namespace test_constexpr_lambdas
   {
 
-    // TODO: test it with clang++ from git
-
     constexpr int foo = [](){return 42;}();
 
   }
-#endif // !defined(REALLY_CLANG)
 
   namespace test::nested_namespace::definitions
   {
@@ -855,12 +883,9 @@ namespace cxx17
 
   }
 
-#if !defined(REALLY_CLANG)
   namespace test_template_argument_deduction_for_class_templates
   {
 
-    // TODO: test it with clang++ from git
-
     template <typename T1, typename T2>
     struct pair
     {
@@ -879,7 +904,6 @@ namespace cxx17
     }
 
   }
-#endif // !defined(REALLY_CLANG)
 
   namespace test_non_type_auto_template_parameters
   {
@@ -893,12 +917,9 @@ namespace cxx17
 
   }
 
-#if !defined(REALLY_CLANG)
   namespace test_structured_bindings
   {
 
-    // TODO: test it with clang++ from git
-
     int arr[2] = { 1, 2 };
     std::pair<int, int> pr = { 1, 2 };
 
@@ -930,14 +951,10 @@ namespace cxx17
     const auto [ x3, y3 ] = f3();
 
   }
-#endif // !defined(REALLY_CLANG)
 
-#if !defined(REALLY_CLANG)
   namespace test_exception_spec_type_system
   {
 
-    // TODO: test it with clang++ from git
-
     struct Good {};
     struct Bad {};
 
@@ -955,7 +972,6 @@ namespace cxx17
     static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
 
   }
-#endif // !defined(REALLY_CLANG)
 
   namespace test_inline_variables
   {
@@ -980,6 +996,36 @@ namespace cxx17
 
 }  // namespace cxx17
 
-#endif  // __cplusplus <= 201402L
+#endif  // __cplusplus < 201703L && !defined _MSC_VER
+
+]])
+
+
+dnl  Tests for new features in C++20
+
+m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_20], [[
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 202002L && !defined _MSC_VER
+
+#error "This is not a C++20 compiler"
+
+#else
+
+#include <version>
+
+namespace cxx20
+{
+
+// As C++20 supports feature test macros in the standard, there is no
+// immediate need to actually test for feature availability on the
+// Autoconf side.
+
+}  // namespace cxx20
+
+#endif  // __cplusplus < 202002L && !defined _MSC_VER
 
 ]])
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ax-gdb.c ./gdb/ax-gdb.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ax-gdb.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ax-gdb.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "symtab.h"
 #include "symfile.h"
 #include "gdbtypes.h"
@@ -25,7 +24,7 @@
 #include "value.h"
 #include "expression.h"
 #include "command.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "frame.h"
 #include "target.h"
 #include "ax.h"
@@ -45,6 +44,7 @@
 #include "typeprint.h"
 #include "valprint.h"
 #include "c-lang.h"
+#include "expop.h"
 
 #include "gdbsupport/format.h"
 
@@ -69,14 +69,9 @@
 /* Prototypes for local functions.  */
 
 /* There's a standard order to the arguments of these functions:
-   union exp_element ** --- pointer into expression
    struct agent_expr * --- agent expression buffer to generate code into
    struct axs_value * --- describes value left on top of stack  */
 
-static struct value *const_var_ref (struct symbol *var);
-static struct value *const_expr (union exp_element **pc);
-static struct value *maybe_const_expr (union exp_element **pc);
-
 static void gen_traced_pop (struct agent_expr *, struct axs_value *);
 
 static void gen_sign_extend (struct agent_expr *, struct type *);
@@ -147,117 +142,13 @@ static void gen_struct_ref (struct agent
 			    const char *operand_name);
 static void gen_static_field (struct agent_expr *ax, struct axs_value *value,
 			      struct type *type, int fieldno);
-static void gen_repeat (struct expression *exp, union exp_element **pc,
-			struct agent_expr *ax, struct axs_value *value);
-static void gen_sizeof (struct expression *exp, union exp_element **pc,
-			struct agent_expr *ax, struct axs_value *value,
-			struct type *size_type);
 static void gen_expr_binop_rest (struct expression *exp,
-				 enum exp_opcode op, union exp_element **pc,
+				 enum exp_opcode op,
 				 struct agent_expr *ax,
 				 struct axs_value *value,
 				 struct axs_value *value1,
 				 struct axs_value *value2);
-
-
-/* Detecting constant expressions.  */
-
-/* If the variable reference at *PC is a constant, return its value.
-   Otherwise, return zero.
-
-   Hey, Wally!  How can a variable reference be a constant?
-
-   Well, Beav, this function really handles the OP_VAR_VALUE operator,
-   not specifically variable references.  GDB uses OP_VAR_VALUE to
-   refer to any kind of symbolic reference: function names, enum
-   elements, and goto labels are all handled through the OP_VAR_VALUE
-   operator, even though they're constants.  It makes sense given the
-   situation.
-
-   Gee, Wally, don'cha wonder sometimes if data representations that
-   subvert commonly accepted definitions of terms in favor of heavily
-   context-specific interpretations are really just a tool of the
-   programming hegemony to preserve their power and exclude the
-   proletariat?  */
-
-static struct value *
-const_var_ref (struct symbol *var)
-{
-  struct type *type = SYMBOL_TYPE (var);
-
-  switch (SYMBOL_CLASS (var))
-    {
-    case LOC_CONST:
-      return value_from_longest (type, (LONGEST) SYMBOL_VALUE (var));
-
-    case LOC_LABEL:
-      return value_from_pointer (type, (CORE_ADDR) SYMBOL_VALUE_ADDRESS (var));
 
-    default:
-      return 0;
-    }
-}
-
-
-/* If the expression starting at *PC has a constant value, return it.
-   Otherwise, return zero.  If we return a value, then *PC will be
-   advanced to the end of it.  If we return zero, *PC could be
-   anywhere.  */
-static struct value *
-const_expr (union exp_element **pc)
-{
-  enum exp_opcode op = (*pc)->opcode;
-  struct value *v1;
-
-  switch (op)
-    {
-    case OP_LONG:
-      {
-	struct type *type = (*pc)[1].type;
-	LONGEST k = (*pc)[2].longconst;
-
-	(*pc) += 4;
-	return value_from_longest (type, k);
-      }
-
-    case OP_VAR_VALUE:
-      {
-	struct value *v = const_var_ref ((*pc)[2].symbol);
-
-	(*pc) += 4;
-	return v;
-      }
-
-      /* We could add more operators in here.  */
-
-    case UNOP_NEG:
-      (*pc)++;
-      v1 = const_expr (pc);
-      if (v1)
-	return value_neg (v1);
-      else
-	return 0;
-
-    default:
-      return 0;
-    }
-}
-
-
-/* Like const_expr, but guarantee also that *PC is undisturbed if the
-   expression is not constant.  */
-static struct value *
-maybe_const_expr (union exp_element **pc)
-{
-  union exp_element *tentative_pc = *pc;
-  struct value *v = const_expr (&tentative_pc);
-
-  /* If we got a value, then update the real PC.  */
-  if (v)
-    *pc = tentative_pc;
-
-  return v;
-}
 
 
 /* Generating bytecode from GDB expressions: general assumptions */
@@ -316,9 +207,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 (type->field (i).is_static ())
 	{
 	  gen_static_field (ax, &value, type, i);
 	  if (value.optimized_out)
@@ -327,9 +218,9 @@ gen_trace_static_fields (struct agent_ex
 	    {
 	    case axs_lvalue_memory:
 	      {
-	        /* Initialize the TYPE_LENGTH if it is a typedef.  */
-	        check_typedef (value.type);
-		ax_const_l (ax, TYPE_LENGTH (value.type));
+		/* Initialize the TYPE_LENGTH if it is a typedef.  */
+		check_typedef (value.type);
+		ax_const_l (ax, value.type->length ());
 		ax_simple (ax, aop_trace);
 	      }
 	      break;
@@ -362,8 +253,8 @@ gen_traced_pop (struct agent_expr *ax, s
 {
   int string_trace = 0;
   if (ax->trace_string
-      && TYPE_CODE (value->type) == TYPE_CODE_PTR
-      && c_textual_element_type (check_typedef (TYPE_TARGET_TYPE (value->type)),
+      && value->type->code () == TYPE_CODE_PTR
+      && c_textual_element_type (check_typedef (value->type->target_type ()),
 				 's'))
     string_trace = 1;
 
@@ -396,11 +287,11 @@ gen_traced_pop (struct agent_expr *ax, s
 	  else
 	    {
 	      /* There's no point in trying to use a trace_quick bytecode
-	         here, since "trace_quick SIZE pop" is three bytes, whereas
-	         "const8 SIZE trace" is also three bytes, does the same
-	         thing, and the simplest code which generates that will also
-	         work correctly for objects with large sizes.  */
-	      ax_const_l (ax, TYPE_LENGTH (value->type));
+		 here, since "trace_quick SIZE pop" is three bytes, whereas
+		 "const8 SIZE trace" is also three bytes, does the same
+		 thing, and the simplest code which generates that will also
+		 work correctly for objects with large sizes.  */
+	      ax_const_l (ax, value->type->length ());
 	      ax_simple (ax, aop_trace);
 	    }
 	}
@@ -429,8 +320,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);
 }
 
@@ -444,8 +335,8 @@ static void
 gen_sign_extend (struct agent_expr *ax, struct type *type)
 {
   /* Do we need to sign-extend this?  */
-  if (!TYPE_UNSIGNED (type))
-    ax_ext (ax, TYPE_LENGTH (type) * TARGET_CHAR_BIT);
+  if (!type->is_unsigned ())
+    ax_ext (ax, type->length () * TARGET_CHAR_BIT);
 }
 
 
@@ -455,12 +346,22 @@ gen_sign_extend (struct agent_expr *ax,
 static void
 gen_extend (struct agent_expr *ax, struct type *type)
 {
-  int bits = TYPE_LENGTH (type) * TARGET_CHAR_BIT;
+  int bits = type->length () * TARGET_CHAR_BIT;
 
   /* I just had to.  */
-  ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, bits));
+  ((type->is_unsigned () ? ax_zero_ext : ax_ext) (ax, bits));
 }
 
+/* A helper that returns the target type if TYPE is a range type, or
+   otherwise just returns TYPE.  */
+
+static struct type *
+strip_range_type (struct type *type)
+{
+  if (type->code () == TYPE_CODE_RANGE)
+    return type->target_type ();
+  return type;
+}
 
 /* Assume that the top of the stack contains a value of type "pointer
    to TYPE"; generate code to fetch its value.  Note that TYPE is the
@@ -471,13 +372,12 @@ gen_fetch (struct agent_expr *ax, struct
   if (ax->tracing)
     {
       /* Record the area of memory we're about to fetch.  */
-      ax_trace_quick (ax, TYPE_LENGTH (type));
+      ax_trace_quick (ax, type->length ());
     }
 
-  if (TYPE_CODE (type) == TYPE_CODE_RANGE)
-    type = TYPE_TARGET_TYPE (type);
+  type = strip_range_type (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_REF:
@@ -487,8 +387,8 @@ gen_fetch (struct agent_expr *ax, struct
     case TYPE_CODE_CHAR:
     case TYPE_CODE_BOOL:
       /* It's a scalar value, so we know how to dereference it.  How
-         many bytes long is it?  */
-      switch (TYPE_LENGTH (type))
+	 many bytes long is it?  */
+      switch (type->length ())
 	{
 	case 8 / TARGET_CHAR_BIT:
 	  ax_simple (ax, aop_ref8);
@@ -508,8 +408,7 @@ gen_fetch (struct agent_expr *ax, struct
 	     implementing something we should be (this code's fault).
 	     In any case, it's a bug the user shouldn't see.  */
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("gen_fetch: strange size"));
+	  internal_error (_("gen_fetch: strange size"));
 	}
 
       gen_sign_extend (ax, type);
@@ -520,7 +419,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 ());
     }
 }
 
@@ -607,7 +506,7 @@ gen_offset (struct agent_expr *ax, int o
 static void
 gen_sym_offset (struct agent_expr *ax, struct symbol *var)
 {
-  gen_offset (ax, SYMBOL_VALUE (var));
+  gen_offset (ax, var->value_longest ());
 }
 
 
@@ -618,37 +517,33 @@ static void
 gen_var_ref (struct agent_expr *ax, struct axs_value *value, struct symbol *var)
 {
   /* Dereference any typedefs.  */
-  value->type = check_typedef (SYMBOL_TYPE (var));
+  value->type = check_typedef (var->type ());
   value->optimized_out = 0;
 
-  if (SYMBOL_COMPUTED_OPS (var) != NULL)
-    {
-      SYMBOL_COMPUTED_OPS (var)->tracepoint_var_ref (var, ax, value);
-      return;
-    }
+  if (const symbol_computed_ops *computed_ops = var->computed_ops ();
+      computed_ops != nullptr)
+    return computed_ops->tracepoint_var_ref (var, ax, value);
 
   /* I'm imitating the code in read_var_value.  */
-  switch (SYMBOL_CLASS (var))
+  switch (var->loc_class ())
     {
     case LOC_CONST:		/* A constant, like an enum value.  */
-      ax_const_l (ax, (LONGEST) SYMBOL_VALUE (var));
+      ax_const_l (ax, (LONGEST) var->value_longest ());
       value->kind = axs_rvalue;
       break;
 
     case LOC_LABEL:		/* A goto label, being used as a value.  */
-      ax_const_l (ax, (LONGEST) SYMBOL_VALUE_ADDRESS (var));
+      ax_const_l (ax, (LONGEST) var->value_address ());
       value->kind = axs_rvalue;
       break;
 
     case LOC_CONST_BYTES:
-      internal_error (__FILE__, __LINE__,
-		      _("gen_var_ref: LOC_CONST_BYTES "
-			"symbols are not supported"));
+      error (_("gen_var_ref: LOC_CONST_BYTES symbols are not supported"));
 
       /* Variable at a fixed location in memory.  Easy.  */
     case LOC_STATIC:
       /* Push the address of the variable.  */
-      ax_const_l (ax, SYMBOL_VALUE_ADDRESS (var));
+      ax_const_l (ax, var->value_address ());
       value->kind = axs_lvalue_memory;
       break;
 
@@ -679,45 +574,43 @@ gen_var_ref (struct agent_expr *ax, stru
       break;
 
     case LOC_BLOCK:
-      ax_const_l (ax, BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (var)));
+      ax_const_l (ax, var->value_block ()->entry_pc ());
       value->kind = axs_rvalue;
       break;
 
     case LOC_REGISTER:
       /* Don't generate any code at all; in the process of treating
-         this as an lvalue or rvalue, the caller will generate the
-         right code.  */
+	 this as an lvalue or rvalue, the caller will generate the
+	 right code.  */
       value->kind = axs_lvalue_register;
-      value->u.reg
-	= SYMBOL_REGISTER_OPS (var)->register_number (var, ax->gdbarch);
+      value->u.reg = var->register_ops ()->register_number (var, ax->gdbarch);
       break;
 
       /* A lot like LOC_REF_ARG, but the pointer lives directly in a
-         register, not on the stack.  Simpler than LOC_REGISTER
-         because it's just like any other case where the thing
+	 register, not on the stack.  Simpler than LOC_REGISTER
+	 because it's just like any other case where the thing
 	 has a real address.  */
     case LOC_REGPARM_ADDR:
-      ax_reg (ax,
-	      SYMBOL_REGISTER_OPS (var)->register_number (var, ax->gdbarch));
+      ax_reg (ax, var->register_ops ()->register_number (var, ax->gdbarch));
       value->kind = axs_lvalue_memory;
       break;
 
     case LOC_UNRESOLVED:
       {
-	struct bound_minimal_symbol msym
-	  = lookup_minimal_symbol (var->linkage_name (), NULL, NULL);
-
+	bound_minimal_symbol msym
+	  = lookup_minimal_symbol (current_program_space,
+				   var->linkage_name ());
 	if (!msym.minsym)
 	  error (_("Couldn't resolve symbol `%s'."), var->print_name ());
 
 	/* Push the address of the variable.  */
-	ax_const_l (ax, BMSYMBOL_VALUE_ADDRESS (msym));
+	ax_const_l (ax, msym.value_address ());
 	value->kind = axs_lvalue_memory;
       }
       break;
 
     case LOC_COMPUTED:
-      gdb_assert_not_reached (_("LOC_COMPUTED variable missing a method"));
+      gdb_assert_not_reached ("LOC_COMPUTED variable missing a method");
 
     case LOC_OPTIMIZED_OUT:
       /* Flag this, but don't say anything; leave it up to callers to
@@ -775,10 +668,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)
@@ -794,10 +687,10 @@ require_rvalue (struct agent_expr *ax, s
 
     case axs_lvalue_register:
       /* There's nothing on the stack, but value->u.reg is the
-         register number containing the value.
+	 register number containing the value.
 
-         When we add floating-point support, this is going to have to
-         change.  What about SPARC register pairs, for example?  */
+	 When we add floating-point support, this is going to have to
+	 change.  What about SPARC register pairs, for example?  */
       ax_reg (ax, value->u.reg);
       gen_extend (ax, value->type);
       break;
@@ -831,7 +724,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:
@@ -840,10 +733,10 @@ gen_usual_unary (struct agent_expr *ax,
       break;
 
       /* Arrays get converted to a pointer to their first element, and
-         are no longer an lvalue.  */
+	 are no longer an lvalue.  */
     case TYPE_CODE_ARRAY:
       {
-	struct type *elements = TYPE_TARGET_TYPE (value->type);
+	struct type *elements = value->type->target_type ();
 
 	value->type = lookup_pointer_type (elements);
 	value->kind = axs_rvalue;
@@ -853,7 +746,7 @@ gen_usual_unary (struct agent_expr *ax,
       break;
 
       /* Don't try to convert structures and unions to rvalues.  Let the
-         consumer signal an error.  */
+	 consumer signal an error.  */
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
       return;
@@ -869,10 +762,10 @@ gen_usual_unary (struct agent_expr *ax,
 static int
 type_wider_than (struct type *type1, struct type *type2)
 {
-  return (TYPE_LENGTH (type1) > TYPE_LENGTH (type2)
-	  || (TYPE_LENGTH (type1) == TYPE_LENGTH (type2)
-	      && TYPE_UNSIGNED (type1)
-	      && !TYPE_UNSIGNED (type2)));
+  return (type1->length () > type2->length ()
+	  || (type1->length () == type2->length ()
+	      && type1->is_unsigned ()
+	      && !type2->is_unsigned ()));
 }
 
 
@@ -892,22 +785,22 @@ gen_conversion (struct agent_expr *ax, s
 
   /* If we're converting to a narrower type, then we need to clear out
      the upper bits.  */
-  if (TYPE_LENGTH (to) < TYPE_LENGTH (from))
+  if (to->length () < from->length ())
     gen_extend (ax, to);
 
   /* If the two values have equal width, but different signednesses,
      then we need to extend.  */
-  else if (TYPE_LENGTH (to) == TYPE_LENGTH (from))
+  else if (to->length () == from->length ())
     {
-      if (TYPE_UNSIGNED (from) != TYPE_UNSIGNED (to))
+      if (from->is_unsigned () != to->is_unsigned ())
 	gen_extend (ax, to);
     }
 
   /* If we're converting to a wider type, and becoming unsigned, then
      we need to zero out any possible sign bits.  */
-  else if (TYPE_LENGTH (to) > TYPE_LENGTH (from))
+  else if (to->length () > from->length ())
     {
-      if (TYPE_UNSIGNED (to))
+      if (to->is_unsigned ())
 	gen_extend (ax, to);
     }
 }
@@ -919,7 +812,6 @@ static int
 is_nontrivial_conversion (struct type *from, struct type *to)
 {
   agent_expr_up ax (new agent_expr (NULL, 0));
-  int nontrivial;
 
   /* Actually generate the code, and see if anything came out.  At the
      moment, it would be trivial to replicate the code in
@@ -928,8 +820,7 @@ is_nontrivial_conversion (struct type *f
      way allows this function to be independent of the logic in
      gen_conversion.  */
   gen_conversion (ax.get (), from, to);
-  nontrivial = ax->len > 0;
-  return nontrivial;
+  return !ax->buf.empty ();
 }
 
 
@@ -942,28 +833,31 @@ static void
 gen_usual_arithmetic (struct agent_expr *ax, struct axs_value *value1,
 		      struct axs_value *value2)
 {
+  struct type *type1 = strip_range_type (value1->type);
+  struct type *type2 = strip_range_type (value2->type);
+
   /* Do the usual binary conversions.  */
-  if (TYPE_CODE (value1->type) == TYPE_CODE_INT
-      && TYPE_CODE (value2->type) == TYPE_CODE_INT)
+  if (type1->code () == TYPE_CODE_INT
+      && type2->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
-         unsigned type is considered "wider" than an n-bit signed
-         type.  Promote to the "wider" of the two types, and always
-         promote at least to int.  */
+	 integer types by size, and then by signedness: an n-bit
+	 unsigned type is considered "wider" than an n-bit signed
+	 type.  Promote to the "wider" of the two types, and always
+	 promote at least to int.  */
       struct type *target = max_type (builtin_type (ax->gdbarch)->builtin_int,
-				      max_type (value1->type, value2->type));
+				      max_type (type1, type2));
 
       /* Deal with value2, on the top of the stack.  */
-      gen_conversion (ax, value2->type, target);
+      gen_conversion (ax, type2, target);
 
       /* Deal with value1, not on the top of the stack.  Don't
-         generate the `swap' instructions if we're not actually going
-         to do anything.  */
-      if (is_nontrivial_conversion (value1->type, target))
+	 generate the `swap' instructions if we're not actually going
+	 to do anything.  */
+      if (is_nontrivial_conversion (type1, target))
 	{
 	  ax_simple (ax, aop_swap);
-	  gen_conversion (ax, value1->type, target);
+	  gen_conversion (ax, type1, target);
 	  ax_simple (ax, aop_swap);
 	}
 
@@ -1002,14 +896,15 @@ gen_cast (struct agent_expr *ax, struct
   require_rvalue (ax, value);
   /* Dereference typedefs.  */
   type = check_typedef (type);
+  type = strip_range_type (type);
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_PTR:
     case TYPE_CODE_REF:
     case TYPE_CODE_RVALUE_REF:
       /* It's implementation-defined, and I'll bet this is what GCC
-         does.  */
+	 does.  */
       break;
 
     case TYPE_CODE_ARRAY:
@@ -1021,10 +916,10 @@ gen_cast (struct agent_expr *ax, struct
     case TYPE_CODE_ENUM:
     case TYPE_CODE_BOOL:
       /* We don't have to worry about the size of the value, because
-         all our integral values are fully sign-extended, and when
-         casting pointers we can do anything we like.  Is there any
-         way for us to know what GCC actually does with a cast like
-         this?  */
+	 all our integral values are fully sign-extended, and when
+	 casting pointers we can do anything we like.  Is there any
+	 way for us to know what GCC actually does with a cast like
+	 this?  */
       break;
 
     case TYPE_CODE_INT:
@@ -1033,9 +928,9 @@ gen_cast (struct agent_expr *ax, struct
 
     case TYPE_CODE_VOID:
       /* We could pop the value, and rely on everyone else to check
-         the type and notice that this value doesn't occupy a stack
-         slot.  But for now, leave the value on the stack, and
-         preserve the "value == stack element" assumption.  */
+	 the type and notice that this value doesn't occupy a stack
+	 slot.  But for now, leave the value on the stack, and
+	 preserve the "value == stack element" assumption.  */
       break;
 
     default:
@@ -1054,11 +949,11 @@ gen_cast (struct agent_expr *ax, struct
 static void
 gen_scale (struct agent_expr *ax, enum agent_op op, struct type *type)
 {
-  struct type *element = TYPE_TARGET_TYPE (type);
+  struct type *element = type->target_type ();
 
-  if (TYPE_LENGTH (element) != 1)
+  if (element->length () != 1)
     {
-      ax_const_l (ax, TYPE_LENGTH (element));
+      ax_const_l (ax, element->length ());
       ax_simple (ax, op);
     }
 }
@@ -1069,8 +964,8 @@ static void
 gen_ptradd (struct agent_expr *ax, struct axs_value *value,
 	    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 (value1->type->is_pointer_or_reference ());
+  gdb_assert (strip_range_type (value2->type)->code () == TYPE_CODE_INT);
 
   gen_scale (ax, aop_mul, value1->type);
   ax_simple (ax, aop_add);
@@ -1085,8 +980,8 @@ static void
 gen_ptrsub (struct agent_expr *ax, struct axs_value *value,
 	    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 (value1->type->is_pointer_or_reference ());
+  gdb_assert (strip_range_type (value2->type)->code () == TYPE_CODE_INT);
 
   gen_scale (ax, aop_mul, value1->type);
   ax_simple (ax, aop_sub);
@@ -1102,11 +997,11 @@ gen_ptrdiff (struct agent_expr *ax, stru
 	     struct axs_value *value1, struct axs_value *value2,
 	     struct type *result_type)
 {
-  gdb_assert (pointer_type (value1->type));
-  gdb_assert (pointer_type (value2->type));
+  gdb_assert (value1->type->is_pointer_or_reference ());
+  gdb_assert (value2->type->is_pointer_or_reference ());
 
-  if (TYPE_LENGTH (TYPE_TARGET_TYPE (value1->type))
-      != TYPE_LENGTH (TYPE_TARGET_TYPE (value2->type)))
+  if (value1->type->target_type ()->length ()
+      != value2->type->target_type ()->length ())
     error (_("\
 First argument of `-' is a pointer, but second argument is neither\n\
 an integer nor a pointer of the same type."));
@@ -1122,7 +1017,7 @@ gen_equal (struct agent_expr *ax, struct
 	   struct axs_value *value1, struct axs_value *value2,
 	   struct type *result_type)
 {
-  if (pointer_type (value1->type) || pointer_type (value2->type))
+  if (value1->type->is_pointer_or_reference () || value2->type->is_pointer_or_reference ())
     ax_simple (ax, aop_equal);
   else
     gen_binop (ax, value, value1, value2,
@@ -1136,7 +1031,7 @@ gen_less (struct agent_expr *ax, struct
 	  struct axs_value *value1, struct axs_value *value2,
 	  struct type *result_type)
 {
-  if (pointer_type (value1->type) || pointer_type (value2->type))
+  if (value1->type->is_pointer_or_reference () || value2->type->is_pointer_or_reference ())
     ax_simple (ax, aop_less_unsigned);
   else
     gen_binop (ax, value, value1, value2,
@@ -1158,15 +1053,15 @@ 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))
+  struct type *type1 = strip_range_type (value1->type);
+  if ((type1->code () != TYPE_CODE_INT)
+      || (strip_range_type (value2->type)->code () != TYPE_CODE_INT))
     error (_("Invalid combination of types in %s."), name);
 
-  ax_simple (ax,
-	     TYPE_UNSIGNED (value1->type) ? op_unsigned : op);
+  ax_simple (ax, type1->is_unsigned () ? op_unsigned : op);
   if (may_carry)
-    gen_extend (ax, value1->type);	/* catch overflow */
-  value->type = value1->type;
+    gen_extend (ax, type1);	/* catch overflow */
+  value->type = type1;
   value->kind = axs_rvalue;
 }
 
@@ -1175,8 +1070,9 @@ 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)
+  struct type *type = strip_range_type (value->type);
+  if (type->code () != TYPE_CODE_INT
+      && type->code () != TYPE_CODE_PTR)
     error (_("Invalid type of operand to `!'."));
 
   ax_simple (ax, aop_log_not);
@@ -1187,11 +1083,12 @@ 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)
+  struct type *type = strip_range_type (value->type);
+  if (type->code () != TYPE_CODE_INT)
     error (_("Invalid type of operand to `~'."));
 
   ax_simple (ax, aop_bit_not);
-  gen_extend (ax, value->type);
+  gen_extend (ax, type);
 }
 
 
@@ -1204,19 +1101,18 @@ gen_deref (struct axs_value *value)
 {
   /* The caller should check the type, because several operators use
      this, and we don't know what error message to generate.  */
-  if (!pointer_type (value->type))
-    internal_error (__FILE__, __LINE__,
-		    _("gen_deref: expected a pointer"));
+  if (!value->type->is_pointer_or_reference ())
+    internal_error (_("gen_deref: expected a pointer"));
 
   /* We've got an rvalue now, which is a pointer.  We want to yield an
      lvalue, whose address is exactly that pointer.  So we don't
      actually emit any code; we just change the type from "Pointer to
      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)
+  value->type = check_typedef (value->type->target_type ());
+  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 +1124,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);
@@ -1309,8 +1205,7 @@ gen_bitfield_ref (struct agent_expr *ax,
 
   /* Can we fetch the number of bits requested at all?  */
   if ((end - start) > ((1 << num_ops) * 8))
-    internal_error (__FILE__, __LINE__,
-		    _("gen_bitfield_ref: bitfield too wide"));
+    internal_error (_("gen_bitfield_ref: bitfield too wide"));
 
   /* Note that we know here that we only need to try each opcode once.
      That may not be true on machines with weird byte sizes.  */
@@ -1322,7 +1217,7 @@ gen_bitfield_ref (struct agent_expr *ax,
       int op_size = 8 << op;
 
       /* The stack at this point, from bottom to top, contains zero or
-         more fragments, then the address.  */
+	 more fragments, then the address.  */
 
       /* Does this fetch fit within the bitfield?  */
       if (offset + op_size <= bound_end)
@@ -1399,7 +1294,7 @@ gen_bitfield_ref (struct agent_expr *ax,
     ax_simple (ax, aop_bit_or);
 
   /* Sign- or zero-extend the value as appropriate.  */
-  ((TYPE_UNSIGNED (type) ? ax_zero_ext : ax_ext) (ax, end - start));
+  ((type->is_unsigned () ? ax_zero_ext : ax_ext) (ax, end - start));
 
   /* This is *not* an lvalue.  Ugh.  */
   value->kind = axs_rvalue;
@@ -1416,19 +1311,19 @@ gen_primitive_field (struct agent_expr *
 		     int offset, int fieldno, struct type *type)
 {
   /* Is this a bitfield?  */
-  if (TYPE_FIELD_PACKED (type, fieldno))
-    gen_bitfield_ref (ax, value, TYPE_FIELD_TYPE (type, fieldno),
+  if (type->field (fieldno).is_packed ())
+    gen_bitfield_ref (ax, value, type->field (fieldno).type (),
 		      (offset * TARGET_CHAR_BIT
-		       + TYPE_FIELD_BITPOS (type, fieldno)),
+		       + type->field (fieldno).loc_bitpos ()),
 		      (offset * TARGET_CHAR_BIT
-		       + TYPE_FIELD_BITPOS (type, fieldno)
-		       + TYPE_FIELD_BITSIZE (type, fieldno)));
+		       + type->field (fieldno).loc_bitpos ()
+		       + type->field (fieldno).bitsize ()));
   else
     {
       gen_offset (ax, offset
-		  + TYPE_FIELD_BITPOS (type, fieldno) / TARGET_CHAR_BIT);
+		  + type->field (fieldno).loc_bitpos () / TARGET_CHAR_BIT);
       value->kind = axs_lvalue_memory;
-      value->type = TYPE_FIELD_TYPE (type, fieldno);
+      value->type = type->field (fieldno).type ();
     }
 }
 
@@ -1444,9 +1339,9 @@ 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);
+      const char *this_name = type->field (i).name ();
 
       if (this_name)
 	{
@@ -1456,7 +1351,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 (type->field (i).is_static ())
 		{
 		  gen_static_field (ax, value, type, i);
 		  if (value->optimized_out)
@@ -1471,8 +1366,7 @@ gen_struct_ref_recursive (struct agent_e
 	    }
 #if 0 /* is this right? */
 	  if (this_name[0] == '\0')
-	    internal_error (__FILE__, __LINE__,
-			    _("find_field: anonymous unions not supported"));
+	    internal_error (_("find_field: anonymous unions not supported"));
 #endif
 	}
     }
@@ -1510,7 +1404,7 @@ gen_struct_ref (struct agent_expr *ax, s
   /* Follow pointers until we reach a non-pointer.  These aren't the C
      semantics, but they're what the normal GDB evaluator does, so we
      should at least be consistent.  */
-  while (pointer_type (value->type))
+  while (value->type->is_pointer_or_reference ())
     {
       require_rvalue (ax, value);
       gen_deref (value);
@@ -1518,8 +1412,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,31 +1427,32 @@ 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
 gen_namespace_elt (struct agent_expr *ax, struct axs_value *value,
-		   const struct type *curtype, char *name);
+		   const struct type *curtype, const char *name);
 static int
 gen_maybe_namespace_elt (struct agent_expr *ax, struct axs_value *value,
-			 const struct type *curtype, char *name);
+			 const struct type *curtype, const char *name);
 
 static void
 gen_static_field (struct agent_expr *ax, struct axs_value *value,
 		  struct type *type, int fieldno)
 {
-  if (TYPE_FIELD_LOC_KIND (type, fieldno) == FIELD_LOC_KIND_PHYSADDR)
+  if (type->field (fieldno).loc_kind () == FIELD_LOC_KIND_PHYSADDR)
     {
-      ax_const_l (ax, TYPE_FIELD_STATIC_PHYSADDR (type, fieldno));
+      ax_const_l (ax, type->field (fieldno).loc_physaddr ());
       value->kind = axs_lvalue_memory;
-      value->type = TYPE_FIELD_TYPE (type, fieldno);
+      value->type = type->field (fieldno).type ();
       value->optimized_out = 0;
     }
   else
     {
-      const char *phys_name = TYPE_FIELD_STATIC_PHYSNAME (type, fieldno);
-      struct symbol *sym = lookup_symbol (phys_name, 0, VAR_DOMAIN, 0).symbol;
+      const char *phys_name = type->field (fieldno).loc_physname ();
+      struct symbol *sym = lookup_symbol (phys_name, 0,
+					  SEARCH_VAR_DOMAIN, 0).symbol;
 
       if (sym)
 	{
@@ -1578,23 +1473,22 @@ gen_static_field (struct agent_expr *ax,
 
 static int
 gen_struct_elt_for_reference (struct agent_expr *ax, struct axs_value *value,
-			      struct type *type, char *fieldname)
+			      struct type *type, const char *fieldname)
 {
   struct type *t = type;
   int i;
 
-  if (TYPE_CODE (t) != TYPE_CODE_STRUCT
-      && TYPE_CODE (t) != TYPE_CODE_UNION)
-    internal_error (__FILE__, __LINE__,
-		    _("non-aggregate type to gen_struct_elt_for_reference"));
+  if (t->code () != TYPE_CODE_STRUCT
+      && t->code () != TYPE_CODE_UNION)
+    internal_error (_("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);
+      const char *t_field_name = t->field (i).name ();
 
       if (t_field_name && strcmp (t_field_name, fieldname) == 0)
 	{
-	  if (field_is_static (&TYPE_FIELD (t, i)))
+	  if (t->field (i).is_static ())
 	    {
 	      gen_static_field (ax, value, t, i);
 	      if (value->optimized_out)
@@ -1603,7 +1497,7 @@ gen_struct_elt_for_reference (struct age
 		       fieldname);
 	      return 1;
 	    }
-	  if (TYPE_FIELD_PACKED (t, i))
+	  if (t->field (i).is_packed ())
 	    error (_("pointers to bitfield members not allowed"));
 
 	  /* FIXME we need a way to do "want_address" equivalent */	  
@@ -1623,13 +1517,13 @@ gen_struct_elt_for_reference (struct age
 
 static int
 gen_namespace_elt (struct agent_expr *ax, struct axs_value *value,
-		   const struct type *curtype, char *name)
+		   const struct type *curtype, const char *name)
 {
   int found = gen_maybe_namespace_elt (ax, value, curtype, name);
 
   if (!found)
     error (_("No symbol \"%s\" in namespace \"%s\"."), 
-	   name, TYPE_NAME (curtype));
+	   name, curtype->name ());
 
   return found;
 }
@@ -1642,14 +1536,14 @@ gen_namespace_elt (struct agent_expr *ax
 
 static int
 gen_maybe_namespace_elt (struct agent_expr *ax, struct axs_value *value,
-			 const struct type *curtype, char *name)
+			 const struct type *curtype, const 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,
 				    block_for_pc (ax->scope),
-				    VAR_DOMAIN);
+				    SEARCH_VAR_DOMAIN);
 
   if (sym.symbol == NULL)
     return 0;
@@ -1666,9 +1560,9 @@ gen_maybe_namespace_elt (struct agent_ex
 
 static int
 gen_aggregate_elt_ref (struct agent_expr *ax, struct axs_value *value,
-		       struct type *type, char *field)
+		       struct type *type, const char *field)
 {
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_STRUCT:
     case TYPE_CODE_UNION:
@@ -1678,13 +1572,155 @@ gen_aggregate_elt_ref (struct agent_expr
       return gen_namespace_elt (ax, value, type, field);
       break;
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("non-aggregate type in gen_aggregate_elt_ref"));
+      internal_error (_("non-aggregate type in gen_aggregate_elt_ref"));
     }
 
   return 0;
 }
 
+
+
+namespace expr
+{
+
+void
+operation::generate_ax (struct expression *exp,
+			struct agent_expr *ax,
+			struct axs_value *value,
+			struct type *cast_type)
+{
+  if (constant_p ())
+    {
+      struct value *v = evaluate (nullptr, exp, EVAL_AVOID_SIDE_EFFECTS);
+      ax_const_l (ax, value_as_long (v));
+      value->kind = axs_rvalue;
+      value->type = check_typedef (v->type ());
+    }
+  else
+    {
+      do_generate_ax (exp, ax, value, cast_type);
+      if (cast_type != nullptr)
+	gen_cast (ax, value, cast_type);
+    }
+}
+
+void
+scope_operation::do_generate_ax (struct expression *exp,
+				 struct agent_expr *ax,
+				 struct axs_value *value,
+				 struct type *cast_type)
+{
+  struct type *type = std::get<0> (m_storage);
+  const std::string &name = std::get<1> (m_storage);
+  int found = gen_aggregate_elt_ref (ax, value, type, name.c_str ());
+  if (!found)
+    error (_("There is no field named %s"), name.c_str ());
+}
+
+void
+long_const_operation::do_generate_ax (struct expression *exp,
+				      struct agent_expr *ax,
+				      struct axs_value *value,
+				      struct type *cast_type)
+{
+  LONGEST val = as_longest ();
+  gen_int_literal (ax, value, val, std::get<0> (m_storage));
+}
+
+void
+var_msym_value_operation::do_generate_ax (struct expression *exp,
+					  struct agent_expr *ax,
+					  struct axs_value *value,
+					  struct type *cast_type)
+{
+  const bound_minimal_symbol &b = std::get<0> (m_storage);
+  gen_msym_var_ref (ax, value, b.minsym, b.objfile);
+
+  if (value->type->code () == TYPE_CODE_ERROR)
+    {
+      if (cast_type == nullptr)
+	error_unknown_type (b.minsym->linkage_name ());
+      value->type = cast_type;
+    }
+}
+
+void
+register_operation::do_generate_ax (struct expression *exp,
+				    struct agent_expr *ax,
+				    struct axs_value *value,
+				    struct type *cast_type)
+{
+  const char *name = std::get<0> (m_storage).c_str ();
+  int len = std::get<0> (m_storage).size ();
+  int reg;
+
+  reg = user_reg_map_name_to_regnum (ax->gdbarch, name, len);
+  if (reg == -1)
+    internal_error (_("Register $%s not available"), name);
+  /* No support for tracing user registers yet.  */
+  if (reg >= gdbarch_num_cooked_regs (ax->gdbarch))
+    error (_("'%s' is a user-register; "
+	     "GDB cannot yet trace user-register contents."),
+	   name);
+  value->kind = axs_lvalue_register;
+  value->u.reg = reg;
+  value->type = register_type (ax->gdbarch, reg);
+}
+
+void
+internalvar_operation::do_generate_ax (struct expression *exp,
+				       struct agent_expr *ax,
+				       struct axs_value *value,
+				       struct type *cast_type)
+{
+  struct internalvar *var = std::get<0> (m_storage);
+  const char *name = internalvar_name (var);
+  struct trace_state_variable *tsv;
+
+  tsv = find_trace_state_variable (name);
+  if (tsv)
+    {
+      ax_tsv (ax, aop_getv, tsv->number);
+      if (ax->tracing)
+	ax_tsv (ax, aop_tracev, tsv->number);
+      /* Trace state variables are always 64-bit integers.  */
+      value->kind = axs_rvalue;
+      value->type = builtin_type (ax->gdbarch)->builtin_long_long;
+    }
+  else if (! compile_internalvar_to_ax (var, ax, value))
+    error (_("$%s is not a trace state variable; GDB agent "
+	     "expressions cannot use convenience variables."), name);
+}
+
+void
+ternop_cond_operation::do_generate_ax (struct expression *exp,
+				       struct agent_expr *ax,
+				       struct axs_value *value,
+				       struct type *cast_type)
+{
+  struct axs_value value1, value2, value3;
+  int if1, end;
+
+  std::get<0> (m_storage)->generate_ax (exp, ax, &value1);
+  gen_usual_unary (ax, &value1);
+  /* For (A ? B : C), it's easiest to generate subexpression
+     bytecodes in order, but if_goto jumps on true, so we invert
+     the sense of A.  Then we can do B by dropping through, and
+     jump to do C.  */
+  gen_logical_not (ax, &value1, builtin_type (ax->gdbarch)->builtin_int);
+  if1 = ax_goto (ax, aop_if_goto);
+  std::get<1> (m_storage)->generate_ax (exp, ax, &value2);
+  gen_usual_unary (ax, &value2);
+  end = ax_goto (ax, aop_goto);
+  ax_label (ax, if1, ax->buf.size ());
+  std::get<2> (m_storage)->generate_ax (exp, ax, &value3);
+  gen_usual_unary (ax, &value3);
+  ax_label (ax, end, ax->buf.size ());
+  /* This is arbitrary - what if B and C are incompatible types? */
+  value->type = value2.type;
+  value->kind = value2.kind;
+}
+
 /* Generate code for GDB's magical `repeat' operator.
    LVALUE @ INT creates an array INT elements long, and whose elements
    have the same type as LVALUE, located in memory so that LVALUE is
@@ -1696,579 +1732,342 @@ gen_aggregate_elt_ref (struct agent_expr
    without changing the type system, having values that occupy two
    stack slots, doing weird things with sizeof, etc.  So we require
    the right operand to be a constant expression.  */
-static void
-gen_repeat (struct expression *exp, union exp_element **pc,
-	    struct agent_expr *ax, struct axs_value *value)
+void
+repeat_operation::do_generate_ax (struct expression *exp,
+				  struct agent_expr *ax,
+				  struct axs_value *value,
+				  struct type *cast_type)
 {
   struct axs_value value1;
 
   /* We don't want to turn this into an rvalue, so no conversions
      here.  */
-  gen_expr (exp, pc, ax, &value1);
+  std::get<0> (m_storage)->generate_ax (exp, ax, &value1);
   if (value1.kind != axs_lvalue_memory)
     error (_("Left operand of `@' must be an object in memory."));
 
   /* Evaluate the length; it had better be a constant.  */
-  {
-    struct value *v = const_expr (pc);
-    int length;
-
-    if (!v)
-      error (_("Right operand of `@' must be a "
-	       "constant, in agent expressions."));
-    if (TYPE_CODE (value_type (v)) != TYPE_CODE_INT)
-      error (_("Right operand of `@' must be an integer."));
-    length = value_as_long (v);
-    if (length <= 0)
-      error (_("Right operand of `@' must be positive."));
-
-    /* The top of the stack is already the address of the object, so
-       all we need to do is frob the type of the lvalue.  */
-    {
-      /* FIXME-type-allocation: need a way to free this type when we are
-         done with it.  */
-      struct type *array
-	= lookup_array_range_type (value1.type, 0, length - 1);
+  if (!std::get<1> (m_storage)->constant_p ())
+    error (_("Right operand of `@' must be a "
+	     "constant, in agent expressions."));
+
+  struct value *v
+    = std::get<1> (m_storage)->evaluate (nullptr, exp,
+					 EVAL_AVOID_SIDE_EFFECTS);
+  if (v->type ()->code () != TYPE_CODE_INT)
+    error (_("Right operand of `@' must be an integer."));
+  int length = value_as_long (v);
+  if (length <= 0)
+    error (_("Right operand of `@' must be positive."));
+
+  /* The top of the stack is already the address of the object, so
+     all we need to do is frob the type of the lvalue.  */
+  /* FIXME-type-allocation: need a way to free this type when we are
+     done with it.  */
+  struct type *array
+    = lookup_array_range_type (value1.type, 0, length - 1);
 
-      value->kind = axs_lvalue_memory;
-      value->type = array;
-    }
-  }
+  value->kind = axs_lvalue_memory;
+  value->type = array;
 }
 
+void
+comma_operation::do_generate_ax (struct expression *exp,
+				 struct agent_expr *ax,
+				 struct axs_value *value,
+				 struct type *cast_type)
+{
+  /* Note that we need to be a little subtle about generating code
+     for comma.  In C, we can do some optimizations here because
+     we know the left operand is only being evaluated for effect.
+     However, if the tracing kludge is in effect, then we always
+     need to evaluate the left hand side fully, so that all the
+     variables it mentions get traced.  */
+  struct axs_value value1;
+  std::get<0> (m_storage)->generate_ax (exp, ax, &value1);
+  /* Don't just dispose of the left operand.  We might be tracing,
+     in which case we want to emit code to trace it if it's an
+     lvalue.  */
+  gen_traced_pop (ax, &value1);
+  std::get<1> (m_storage)->generate_ax (exp, ax, value);
+  /* It's the consumer's responsibility to trace the right operand.  */
+}
 
-/* Emit code for the `sizeof' operator.
-   *PC should point at the start of the operand expression; we advance it
-   to the first instruction after the operand.  */
-static void
-gen_sizeof (struct expression *exp, union exp_element **pc,
-	    struct agent_expr *ax, struct axs_value *value,
-	    struct type *size_type)
+void
+unop_sizeof_operation::do_generate_ax (struct expression *exp,
+				       struct agent_expr *ax,
+				       struct axs_value *value,
+				       struct type *cast_type)
 {
   /* We don't care about the value of the operand expression; we only
      care about its type.  However, in the current arrangement, the
      only way to find an expression's type is to generate code for it.
      So we generate code for the operand, and then throw it away,
      replacing it with code that simply pushes its size.  */
-  int start = ax->len;
+  int start = ax->buf.size ();
 
-  gen_expr (exp, pc, ax, value);
+  std::get<0> (m_storage)->generate_ax (exp, ax, value);
 
   /* Throw away the code we just generated.  */
-  ax->len = start;
+  ax->buf.resize (start);
 
-  ax_const_l (ax, TYPE_LENGTH (value->type));
+  ax_const_l (ax, value->type->length ());
   value->kind = axs_rvalue;
-  value->type = size_type;
+  value->type = builtin_type (ax->gdbarch)->builtin_int;
 }
-
 
-/* Generate bytecode for a cast to TO_TYPE.  Advance *PC over the
-   subexpression.  */
-
-static void
-gen_expr_for_cast (struct expression *exp, union exp_element **pc,
-		   struct agent_expr *ax, struct axs_value *value,
-		   struct type *to_type)
+void
+unop_cast_operation::do_generate_ax (struct expression *exp,
+				     struct agent_expr *ax,
+				     struct axs_value *value,
+				     struct type *cast_type)
 {
-  enum exp_opcode op = (*pc)[0].opcode;
-
-  /* Don't let symbols be handled with gen_expr because that throws an
-     "unknown type" error for no-debug data symbols.  Instead, we want
-     the cast to reinterpret such symbols.  */
-  if (op == OP_VAR_MSYM_VALUE || op == OP_VAR_VALUE)
-    {
-      if (op == OP_VAR_VALUE)
-	{
-	  gen_var_ref (ax, value, (*pc)[2].symbol);
-
-	  if (value->optimized_out)
-	    error (_("`%s' has been optimized out, cannot use"),
-		   (*pc)[2].symbol->print_name ());
-	}
-      else
-	gen_msym_var_ref (ax, value, (*pc)[2].msymbol, (*pc)[1].objfile);
-      if (TYPE_CODE (value->type) == TYPE_CODE_ERROR)
-	value->type = to_type;
-      (*pc) += 4;
-    }
-  else
-    gen_expr (exp, pc, ax, value);
-  gen_cast (ax, value, to_type);
+  std::get<0> (m_storage)->generate_ax (exp, ax, value,
+					std::get<1> (m_storage));
 }
 
-/* Generating bytecode from GDB expressions: general recursive thingy  */
-
-/* XXX: i18n */
-/* A gen_expr function written by a Gen-X'er guy.
-   Append code for the subexpression of EXPR starting at *POS_P to AX.  */
 void
-gen_expr (struct expression *exp, union exp_element **pc,
-	  struct agent_expr *ax, struct axs_value *value)
+unop_extract_operation::do_generate_ax (struct expression *exp,
+					struct agent_expr *ax,
+					struct axs_value *value,
+					struct type *cast_type)
 {
-  /* Used to hold the descriptions of operand expressions.  */
-  struct axs_value value1, value2, value3;
-  enum exp_opcode op = (*pc)[0].opcode, op2;
-  int if1, go1, if2, go2, end;
-  struct type *int_type = builtin_type (ax->gdbarch)->builtin_int;
-
-  /* If we're looking at a constant expression, just push its value.  */
-  {
-    struct value *v = maybe_const_expr (pc);
-
-    if (v)
-      {
-	ax_const_l (ax, value_as_long (v));
-	value->kind = axs_rvalue;
-	value->type = check_typedef (value_type (v));
-	return;
-      }
-  }
-
-  /* Otherwise, go ahead and generate code for it.  */
-  switch (op)
-    {
-      /* Binary arithmetic operators.  */
-    case BINOP_ADD:
-    case BINOP_SUB:
-    case BINOP_MUL:
-    case BINOP_DIV:
-    case BINOP_REM:
-    case BINOP_LSH:
-    case BINOP_RSH:
-    case BINOP_SUBSCRIPT:
-    case BINOP_BITWISE_AND:
-    case BINOP_BITWISE_IOR:
-    case BINOP_BITWISE_XOR:
-    case BINOP_EQUAL:
-    case BINOP_NOTEQUAL:
-    case BINOP_LESS:
-    case BINOP_GTR:
-    case BINOP_LEQ:
-    case BINOP_GEQ:
-      (*pc)++;
-      gen_expr (exp, pc, ax, &value1);
-      gen_usual_unary (ax, &value1);
-      gen_expr_binop_rest (exp, op, pc, ax, value, &value1, &value2);
-      break;
-
-    case BINOP_LOGICAL_AND:
-      (*pc)++;
-      /* Generate the obvious sequence of tests and jumps.  */
-      gen_expr (exp, pc, ax, &value1);
-      gen_usual_unary (ax, &value1);
-      if1 = ax_goto (ax, aop_if_goto);
-      go1 = ax_goto (ax, aop_goto);
-      ax_label (ax, if1, ax->len);
-      gen_expr (exp, pc, ax, &value2);
-      gen_usual_unary (ax, &value2);
-      if2 = ax_goto (ax, aop_if_goto);
-      go2 = ax_goto (ax, aop_goto);
-      ax_label (ax, if2, ax->len);
-      ax_const_l (ax, 1);
-      end = ax_goto (ax, aop_goto);
-      ax_label (ax, go1, ax->len);
-      ax_label (ax, go2, ax->len);
-      ax_const_l (ax, 0);
-      ax_label (ax, end, ax->len);
-      value->kind = axs_rvalue;
-      value->type = int_type;
-      break;
-
-    case BINOP_LOGICAL_OR:
-      (*pc)++;
-      /* Generate the obvious sequence of tests and jumps.  */
-      gen_expr (exp, pc, ax, &value1);
-      gen_usual_unary (ax, &value1);
-      if1 = ax_goto (ax, aop_if_goto);
-      gen_expr (exp, pc, ax, &value2);
-      gen_usual_unary (ax, &value2);
-      if2 = ax_goto (ax, aop_if_goto);
-      ax_const_l (ax, 0);
-      end = ax_goto (ax, aop_goto);
-      ax_label (ax, if1, ax->len);
-      ax_label (ax, if2, ax->len);
-      ax_const_l (ax, 1);
-      ax_label (ax, end, ax->len);
-      value->kind = axs_rvalue;
-      value->type = int_type;
-      break;
-
-    case TERNOP_COND:
-      (*pc)++;
-      gen_expr (exp, pc, ax, &value1);
-      gen_usual_unary (ax, &value1);
-      /* For (A ? B : C), it's easiest to generate subexpression
-	 bytecodes in order, but if_goto jumps on true, so we invert
-	 the sense of A.  Then we can do B by dropping through, and
-	 jump to do C.  */
-      gen_logical_not (ax, &value1, int_type);
-      if1 = ax_goto (ax, aop_if_goto);
-      gen_expr (exp, pc, ax, &value2);
-      gen_usual_unary (ax, &value2);
-      end = ax_goto (ax, aop_goto);
-      ax_label (ax, if1, ax->len);
-      gen_expr (exp, pc, ax, &value3);
-      gen_usual_unary (ax, &value3);
-      ax_label (ax, end, ax->len);
-      /* This is arbitrary - what if B and C are incompatible types? */
-      value->type = value2.type;
-      value->kind = value2.kind;
-      break;
-
-    case BINOP_ASSIGN:
-      (*pc)++;
-      if ((*pc)[0].opcode == OP_INTERNALVAR)
-	{
-	  char *name = internalvar_name ((*pc)[1].internalvar);
-	  struct trace_state_variable *tsv;
-
-	  (*pc) += 3;
-	  gen_expr (exp, pc, ax, value);
-	  tsv = find_trace_state_variable (name);
-	  if (tsv)
-	    {
-	      ax_tsv (ax, aop_setv, tsv->number);
-	      if (ax->tracing)
-		ax_tsv (ax, aop_tracev, tsv->number);
-	    }
-	  else
-	    error (_("$%s is not a trace state variable, "
-		     "may not assign to it"), name);
-	}
-      else
-	error (_("May only assign to trace state variables"));
-      break;
-
-    case BINOP_ASSIGN_MODIFY:
-      (*pc)++;
-      op2 = (*pc)[0].opcode;
-      (*pc)++;
-      (*pc)++;
-      if ((*pc)[0].opcode == OP_INTERNALVAR)
-	{
-	  char *name = internalvar_name ((*pc)[1].internalvar);
-	  struct trace_state_variable *tsv;
-
-	  (*pc) += 3;
-	  tsv = find_trace_state_variable (name);
-	  if (tsv)
-	    {
-	      /* The tsv will be the left half of the binary operation.  */
-	      ax_tsv (ax, aop_getv, tsv->number);
-	      if (ax->tracing)
-		ax_tsv (ax, aop_tracev, tsv->number);
-	      /* Trace state variables are always 64-bit integers.  */
-	      value1.kind = axs_rvalue;
-	      value1.type = builtin_type (ax->gdbarch)->builtin_long_long;
-	      /* Now do right half of expression.  */
-	      gen_expr_binop_rest (exp, op2, pc, ax, value, &value1, &value2);
-	      /* We have a result of the binary op, set the tsv.  */
-	      ax_tsv (ax, aop_setv, tsv->number);
-	      if (ax->tracing)
-		ax_tsv (ax, aop_tracev, tsv->number);
-	    }
-	  else
-	    error (_("$%s is not a trace state variable, "
-		     "may not assign to it"), name);
-	}
-      else
-	error (_("May only assign to trace state variables"));
-      break;
-
-      /* Note that we need to be a little subtle about generating code
-         for comma.  In C, we can do some optimizations here because
-         we know the left operand is only being evaluated for effect.
-         However, if the tracing kludge is in effect, then we always
-         need to evaluate the left hand side fully, so that all the
-         variables it mentions get traced.  */
-    case BINOP_COMMA:
-      (*pc)++;
-      gen_expr (exp, pc, ax, &value1);
-      /* Don't just dispose of the left operand.  We might be tracing,
-         in which case we want to emit code to trace it if it's an
-         lvalue.  */
-      gen_traced_pop (ax, &value1);
-      gen_expr (exp, pc, ax, value);
-      /* It's the consumer's responsibility to trace the right operand.  */
-      break;
-
-    case OP_LONG:		/* some integer constant */
-      {
-	struct type *type = (*pc)[1].type;
-	LONGEST k = (*pc)[2].longconst;
-
-	(*pc) += 4;
-	gen_int_literal (ax, value, k, type);
-      }
-      break;
+  std::get<0> (m_storage)->generate_ax (exp, ax, value);
 
-    case OP_VAR_VALUE:
-      gen_var_ref (ax, value, (*pc)[2].symbol);
+  struct type *to_type = get_type ();
 
-      if (value->optimized_out)
-	error (_("`%s' has been optimized out, cannot use"),
-	       (*pc)[2].symbol->print_name ());
+  if (!is_scalar_type (to_type))
+    error (_("can't generate agent expression to extract non-scalar type"));
 
-      if (TYPE_CODE (value->type) == TYPE_CODE_ERROR)
-	error_unknown_type ((*pc)[2].symbol->print_name ());
-
-      (*pc) += 4;
-      break;
-
-    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)
-	error_unknown_type ((*pc)[2].msymbol->linkage_name ());
-
-      (*pc) += 4;
-      break;
-
-    case OP_REGISTER:
-      {
-	const char *name = &(*pc)[2].string;
-	int reg;
-
-	(*pc) += 4 + BYTES_TO_EXP_ELEM ((*pc)[1].longconst + 1);
-	reg = user_reg_map_name_to_regnum (ax->gdbarch, name, strlen (name));
-	if (reg == -1)
-	  internal_error (__FILE__, __LINE__,
-			  _("Register $%s not available"), name);
-	/* No support for tracing user registers yet.  */
-	if (reg >= gdbarch_num_cooked_regs (ax->gdbarch))
-	  error (_("'%s' is a user-register; "
-		   "GDB cannot yet trace user-register contents."),
-		 name);
-	value->kind = axs_lvalue_register;
-	value->u.reg = reg;
-	value->type = register_type (ax->gdbarch, reg);
-      }
-      break;
-
-    case OP_INTERNALVAR:
-      {
-	struct internalvar *var = (*pc)[1].internalvar;
-	const char *name = internalvar_name (var);
-	struct trace_state_variable *tsv;
-
-	(*pc) += 3;
-	tsv = find_trace_state_variable (name);
-	if (tsv)
-	  {
-	    ax_tsv (ax, aop_getv, tsv->number);
-	    if (ax->tracing)
-	      ax_tsv (ax, aop_tracev, tsv->number);
-	    /* Trace state variables are always 64-bit integers.  */
-	    value->kind = axs_rvalue;
-	    value->type = builtin_type (ax->gdbarch)->builtin_long_long;
-	  }
-	else if (! compile_internalvar_to_ax (var, ax, value))
-	  error (_("$%s is not a trace state variable; GDB agent "
-		   "expressions cannot use convenience variables."), name);
-      }
-      break;
-
-      /* Weirdo operator: see comments for gen_repeat for details.  */
-    case BINOP_REPEAT:
-      /* Note that gen_repeat handles its own argument evaluation.  */
-      (*pc)++;
-      gen_repeat (exp, pc, ax, value);
-      break;
-
-    case UNOP_CAST:
-      {
-	struct type *type = (*pc)[1].type;
-
-	(*pc) += 3;
-	gen_expr_for_cast (exp, pc, ax, value, type);
-      }
-      break;
-
-    case UNOP_CAST_TYPE:
-      {
-	int offset;
-	struct value *val;
-	struct type *type;
-
-	++*pc;
-	offset = *pc - exp->elts;
-	val = evaluate_subexp (NULL, exp, &offset, EVAL_AVOID_SIDE_EFFECTS);
-	type = value_type (val);
-	*pc = &exp->elts[offset];
-	gen_expr_for_cast (exp, pc, ax, value, type);
-      }
-      break;
-
-    case UNOP_MEMVAL:
-      {
-	struct type *type = check_typedef ((*pc)[1].type);
-
-	(*pc) += 3;
-	gen_expr (exp, pc, ax, value);
-
-	/* If we have an axs_rvalue or an axs_lvalue_memory, then we
-	   already have the right value on the stack.  For
-	   axs_lvalue_register, we must convert.  */
-	if (value->kind == axs_lvalue_register)
-	  require_rvalue (ax, value);
-
-	value->type = type;
-	value->kind = axs_lvalue_memory;
-      }
-      break;
-
-    case UNOP_MEMVAL_TYPE:
-      {
-	int offset;
-	struct value *val;
-	struct type *type;
-
-	++*pc;
-	offset = *pc - exp->elts;
-	val = evaluate_subexp (NULL, exp, &offset, EVAL_AVOID_SIDE_EFFECTS);
-	type = value_type (val);
-	*pc = &exp->elts[offset];
-
-	gen_expr (exp, pc, ax, value);
-
-	/* If we have an axs_rvalue or an axs_lvalue_memory, then we
-	   already have the right value on the stack.  For
-	   axs_lvalue_register, we must convert.  */
-	if (value->kind == axs_lvalue_register)
-	  require_rvalue (ax, value);
-
-	value->type = type;
-	value->kind = axs_lvalue_memory;
-      }
-      break;
+  if (to_type->is_unsigned ())
+    gen_extend (ax, to_type);
+  else
+    gen_sign_extend (ax, to_type);
+}
 
-    case UNOP_PLUS:
-      (*pc)++;
-      /* + FOO is equivalent to 0 + FOO, which can be optimized.  */
-      gen_expr (exp, pc, ax, value);
-      gen_usual_unary (ax, value);
-      break;
-      
-    case UNOP_NEG:
-      (*pc)++;
-      /* -FOO is equivalent to 0 - FOO.  */
-      gen_int_literal (ax, &value1, 0,
-		       builtin_type (ax->gdbarch)->builtin_int);
-      gen_usual_unary (ax, &value1);	/* shouldn't do much */
-      gen_expr (exp, pc, ax, &value2);
-      gen_usual_unary (ax, &value2);
-      gen_usual_arithmetic (ax, &value1, &value2);
-      gen_binop (ax, value, &value1, &value2, aop_sub, aop_sub, 1, "negation");
-      break;
+void
+unop_memval_operation::do_generate_ax (struct expression *exp,
+				       struct agent_expr *ax,
+				       struct axs_value *value,
+				       struct type *cast_type)
+{
+  std::get<0> (m_storage)->generate_ax (exp, ax, value);
+  /* If we have an axs_rvalue or an axs_lvalue_memory, then we
+     already have the right value on the stack.  For
+     axs_lvalue_register, we must convert.  */
+  if (value->kind == axs_lvalue_register)
+    require_rvalue (ax, value);
 
-    case UNOP_LOGICAL_NOT:
-      (*pc)++;
-      gen_expr (exp, pc, ax, value);
-      gen_usual_unary (ax, value);
-      gen_logical_not (ax, value, int_type);
-      break;
+  value->type = std::get<1> (m_storage);
+  value->kind = axs_lvalue_memory;
+}
 
-    case UNOP_COMPLEMENT:
-      (*pc)++;
-      gen_expr (exp, pc, ax, value);
-      gen_usual_unary (ax, value);
-      gen_integral_promotions (ax, value);
-      gen_complement (ax, value);
-      break;
+void
+unop_memval_type_operation::do_generate_ax (struct expression *exp,
+					    struct agent_expr *ax,
+					    struct axs_value *value,
+					    struct type *cast_type)
+{
+  struct value *val
+    = std::get<0> (m_storage)->evaluate (nullptr, exp,
+					 EVAL_AVOID_SIDE_EFFECTS);
+  struct type *type = val->type ();
+
+  std::get<1> (m_storage)->generate_ax (exp, ax, value);
+
+  /* If we have an axs_rvalue or an axs_lvalue_memory, then we
+     already have the right value on the stack.  For
+     axs_lvalue_register, we must convert.  */
+  if (value->kind == axs_lvalue_register)
+    require_rvalue (ax, value);
 
-    case UNOP_IND:
-      (*pc)++;
-      gen_expr (exp, pc, ax, value);
-      gen_usual_unary (ax, value);
-      if (!pointer_type (value->type))
-	error (_("Argument of unary `*' is not a pointer."));
-      gen_deref (value);
-      break;
+  value->type = type;
+  value->kind = axs_lvalue_memory;
+}
 
-    case UNOP_ADDR:
-      (*pc)++;
-      gen_expr (exp, pc, ax, value);
-      gen_address_of (value);
-      break;
+void
+op_this_operation::do_generate_ax (struct expression *exp,
+				   struct agent_expr *ax,
+				   struct axs_value *value,
+				   struct type *cast_type)
+{
+  struct symbol *sym, *func;
+  const struct block *b;
+  const struct language_defn *lang;
+
+  b = block_for_pc (ax->scope);
+  func = b->linkage_function ();
+  lang = language_def (func->language ());
+
+  sym = lookup_language_this (lang, b).symbol;
+  if (!sym)
+    error (_("no `%s' found"), lang->name_of_this ());
 
-    case UNOP_SIZEOF:
-      (*pc)++;
-      /* Notice that gen_sizeof handles its own operand, unlike most
-         of the other unary operator functions.  This is because we
-         have to throw away the code we generate.  */
-      gen_sizeof (exp, pc, ax, value,
-		  builtin_type (ax->gdbarch)->builtin_int);
-      break;
+  gen_var_ref (ax, value, sym);
 
-    case STRUCTOP_STRUCT:
-    case STRUCTOP_PTR:
-      {
-	int length = (*pc)[1].longconst;
-	char *name = &(*pc)[2].string;
+  if (value->optimized_out)
+    error (_("`%s' has been optimized out, cannot use"),
+	   sym->print_name ());
+}
 
-	(*pc) += 4 + BYTES_TO_EXP_ELEM (length + 1);
-	gen_expr (exp, pc, ax, value);
-	if (op == STRUCTOP_STRUCT)
-	  gen_struct_ref (ax, value, name, ".", "structure or union");
-	else if (op == STRUCTOP_PTR)
-	  gen_struct_ref (ax, value, name, "->",
-			  "pointer to a structure or union");
-	else
-	  /* If this `if' chain doesn't handle it, then the case list
-	     shouldn't mention it, and we shouldn't be here.  */
-	  internal_error (__FILE__, __LINE__,
-			  _("gen_expr: unhandled struct case"));
-      }
-      break;
+void
+assign_operation::do_generate_ax (struct expression *exp,
+				  struct agent_expr *ax,
+				  struct axs_value *value,
+				  struct type *cast_type)
+{
+  operation *subop = std::get<0> (m_storage).get ();
+  if (subop->opcode () != OP_INTERNALVAR)
+    error (_("May only assign to trace state variables"));
+
+  internalvar_operation *ivarop
+    = gdb::checked_static_cast<internalvar_operation *> (subop);
+
+  const char *name = internalvar_name (ivarop->get_internalvar ());
+  struct trace_state_variable *tsv;
+
+  std::get<1> (m_storage)->generate_ax (exp, ax, value);
+  tsv = find_trace_state_variable (name);
+  if (tsv)
+    {
+      ax_tsv (ax, aop_setv, tsv->number);
+      if (ax->tracing)
+	ax_tsv (ax, aop_tracev, tsv->number);
+    }
+  else
+    error (_("$%s is not a trace state variable, "
+	     "may not assign to it"), name);
+}
 
-    case OP_THIS:
-      {
-	struct symbol *sym, *func;
-	const struct block *b;
-	const struct language_defn *lang;
+void
+assign_modify_operation::do_generate_ax (struct expression *exp,
+					 struct agent_expr *ax,
+					 struct axs_value *value,
+					 struct type *cast_type)
+{
+  operation *subop = std::get<1> (m_storage).get ();
+  if (subop->opcode () != OP_INTERNALVAR)
+    error (_("May only assign to trace state variables"));
+
+  internalvar_operation *ivarop
+    = gdb::checked_static_cast<internalvar_operation *> (subop);
+
+  const char *name = internalvar_name (ivarop->get_internalvar ());
+  struct trace_state_variable *tsv;
+
+  tsv = find_trace_state_variable (name);
+  if (tsv)
+    {
+      /* The tsv will be the left half of the binary operation.  */
+      ax_tsv (ax, aop_getv, tsv->number);
+      if (ax->tracing)
+	ax_tsv (ax, aop_tracev, tsv->number);
+      /* Trace state variables are always 64-bit integers.  */
+      struct axs_value value1, value2;
+      value1.kind = axs_rvalue;
+      value1.type = builtin_type (ax->gdbarch)->builtin_long_long;
+      /* Now do right half of expression.  */
+      std::get<2> (m_storage)->generate_ax (exp, ax, &value2);
+      gen_expr_binop_rest (exp, std::get<0> (m_storage), ax,
+			   value, &value1, &value2);
+      /* We have a result of the binary op, set the tsv.  */
+      ax_tsv (ax, aop_setv, tsv->number);
+      if (ax->tracing)
+	ax_tsv (ax, aop_tracev, tsv->number);
+    }
+  else
+    error (_("$%s is not a trace state variable, "
+	     "may not assign to it"), name);
+}
 
-	b = block_for_pc (ax->scope);
-	func = block_linkage_function (b);
-	lang = language_def (SYMBOL_LANGUAGE (func));
+void
+unop_cast_type_operation::do_generate_ax (struct expression *exp,
+					  struct agent_expr *ax,
+					  struct axs_value *value,
+					  struct type *cast_type)
+{
+  struct value *val
+    = std::get<0> (m_storage)->evaluate (nullptr, exp,
+					 EVAL_AVOID_SIDE_EFFECTS);
+  std::get<1> (m_storage)->generate_ax (exp, ax, value, val->type ());
+}
 
-	sym = lookup_language_this (lang, b).symbol;
-	if (!sym)
-	  error (_("no `%s' found"), lang->la_name_of_this);
+void
+var_value_operation::do_generate_ax (struct expression *exp,
+				     struct agent_expr *ax,
+				     struct axs_value *value,
+				     struct type *cast_type)
+{
+  gen_var_ref (ax, value, std::get<0> (m_storage).symbol);
 
-	gen_var_ref (ax, value, sym);
+  if (value->optimized_out)
+    error (_("`%s' has been optimized out, cannot use"),
+	   std::get<0> (m_storage).symbol->print_name ());
 
-	if (value->optimized_out)
-	  error (_("`%s' has been optimized out, cannot use"),
-		 sym->print_name ());
+  if (value->type->code () == TYPE_CODE_ERROR)
+    {
+      if (cast_type == nullptr)
+	error_unknown_type (std::get<0> (m_storage).symbol->print_name ());
+      value->type = cast_type;
+    }
+}
 
-	(*pc) += 2;
-      }
-      break;
+void
+logical_and_operation::do_generate_ax (struct expression *exp,
+				       struct agent_expr *ax,
+				       struct axs_value *value,
+				       struct type *cast_type)
+{
+  struct axs_value value1, value2;
+  int if1, go1, if2, go2, end;
 
-    case OP_SCOPE:
-      {
-	struct type *type = (*pc)[1].type;
-	int length = longest_to_int ((*pc)[2].longconst);
-	char *name = &(*pc)[3].string;
-	int found;
-
-	found = gen_aggregate_elt_ref (ax, value, type, name);
-	if (!found)
-	  error (_("There is no field named %s"), name);
-	(*pc) += 5 + BYTES_TO_EXP_ELEM (length + 1);
-      }
-      break;
+  /* Generate the obvious sequence of tests and jumps.  */
+  std::get<0> (m_storage)->generate_ax (exp, ax, &value1);
+  gen_usual_unary (ax, &value1);
+  if1 = ax_goto (ax, aop_if_goto);
+  go1 = ax_goto (ax, aop_goto);
+  ax_label (ax, if1, ax->buf.size ());
+  std::get<1> (m_storage)->generate_ax (exp, ax, &value2);
+  gen_usual_unary (ax, &value2);
+  if2 = ax_goto (ax, aop_if_goto);
+  go2 = ax_goto (ax, aop_goto);
+  ax_label (ax, if2, ax->buf.size ());
+  ax_const_l (ax, 1);
+  end = ax_goto (ax, aop_goto);
+  ax_label (ax, go1, ax->buf.size ());
+  ax_label (ax, go2, ax->buf.size ());
+  ax_const_l (ax, 0);
+  ax_label (ax, end, ax->buf.size ());
+  value->kind = axs_rvalue;
+  value->type = builtin_type (ax->gdbarch)->builtin_int;
+}
 
-    case OP_TYPE:
-    case OP_TYPEOF:
-    case OP_DECLTYPE:
-      error (_("Attempt to use a type name as an expression."));
+void
+logical_or_operation::do_generate_ax (struct expression *exp,
+				      struct agent_expr *ax,
+				      struct axs_value *value,
+				      struct type *cast_type)
+{
+  struct axs_value value1, value2;
+  int if1, if2, end;
+
+  /* Generate the obvious sequence of tests and jumps.  */
+  std::get<0> (m_storage)->generate_ax (exp, ax, &value1);
+  gen_usual_unary (ax, &value1);
+  if1 = ax_goto (ax, aop_if_goto);
+  std::get<1> (m_storage)->generate_ax (exp, ax, &value2);
+  gen_usual_unary (ax, &value2);
+  if2 = ax_goto (ax, aop_if_goto);
+  ax_const_l (ax, 0);
+  end = ax_goto (ax, aop_goto);
+  ax_label (ax, if1, ax->buf.size ());
+  ax_label (ax, if2, ax->buf.size ());
+  ax_const_l (ax, 1);
+  ax_label (ax, end, ax->buf.size ());
+  value->kind = axs_rvalue;
+  value->type = builtin_type (ax->gdbarch)->builtin_int;
+}
 
-    default:
-      error (_("Unsupported operator %s (%d) in expression."),
-	     op_name (exp, op), op);
-    }
 }
 
 /* This handles the middle-to-right-side of code generation for binary
@@ -2277,38 +2076,37 @@ gen_expr (struct expression *exp, union
 
 static void
 gen_expr_binop_rest (struct expression *exp,
-		     enum exp_opcode op, union exp_element **pc,
+		     enum exp_opcode op,
 		     struct agent_expr *ax, struct axs_value *value,
 		     struct axs_value *value1, struct axs_value *value2)
 {
   struct type *int_type = builtin_type (ax->gdbarch)->builtin_int;
 
-  gen_expr (exp, pc, ax, value2);
   gen_usual_unary (ax, value2);
   gen_usual_arithmetic (ax, value1, value2);
   switch (op)
     {
     case BINOP_ADD:
-      if (TYPE_CODE (value1->type) == TYPE_CODE_INT
-	  && pointer_type (value2->type))
+      if (strip_range_type (value1->type)->code () == TYPE_CODE_INT
+	  && value2->type->is_pointer_or_reference ())
 	{
 	  /* Swap the values and proceed normally.  */
 	  ax_simple (ax, aop_swap);
 	  gen_ptradd (ax, value, value2, value1);
 	}
-      else if (pointer_type (value1->type)
-	       && TYPE_CODE (value2->type) == TYPE_CODE_INT)
+      else if (value1->type->is_pointer_or_reference ()
+	       && strip_range_type (value2->type)->code () == TYPE_CODE_INT)
 	gen_ptradd (ax, value, value1, value2);
       else
 	gen_binop (ax, value, value1, value2,
 		   aop_add, aop_add, 1, "addition");
       break;
     case BINOP_SUB:
-      if (pointer_type (value1->type)
-	  && TYPE_CODE (value2->type) == TYPE_CODE_INT)
+      if (value1->type->is_pointer_or_reference ()
+	  && strip_range_type (value2->type)->code () == TYPE_CODE_INT)
 	gen_ptrsub (ax,value, value1, value2);
-      else if (pointer_type (value1->type)
-	       && pointer_type (value2->type))
+      else if (value1->type->is_pointer_or_reference ()
+	       && value2->type->is_pointer_or_reference ())
 	/* FIXME --- result type should be ptrdiff_t */
 	gen_ptrdiff (ax, value, value1, value2,
 		     builtin_type (ax->gdbarch)->builtin_long);
@@ -2351,12 +2149,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"));
 	      }
@@ -2417,10 +2215,107 @@ gen_expr_binop_rest (struct expression *
     default:
       /* We should only list operators in the outer case statement
 	 that we actually handle in the inner case statement.  */
-      internal_error (__FILE__, __LINE__,
-		      _("gen_expr: op case sets don't match"));
+      internal_error (_("gen_expr: op case sets don't match"));
     }
 }
+
+/* A helper function that emits a binop based on two operations.  */
+
+void
+gen_expr_binop (struct expression *exp,
+		enum exp_opcode op,
+		expr::operation *lhs, expr::operation *rhs,
+		struct agent_expr *ax, struct axs_value *value)
+{
+  struct axs_value value1, value2;
+
+  lhs->generate_ax (exp, ax, &value1);
+  gen_usual_unary (ax, &value1);
+  rhs->generate_ax (exp, ax, &value2);
+  gen_expr_binop_rest (exp, op, ax, value, &value1, &value2);
+}
+
+/* A helper function that emits a structop based on an operation and a
+   member name.  */
+
+void
+gen_expr_structop (struct expression *exp,
+		   enum exp_opcode op,
+		   expr::operation *lhs,
+		   const char *name,
+		   struct agent_expr *ax, struct axs_value *value)
+{
+  lhs->generate_ax (exp, ax, value);
+  if (op == STRUCTOP_STRUCT)
+    gen_struct_ref (ax, value, name, ".", "structure or union");
+  else if (op == STRUCTOP_PTR)
+    gen_struct_ref (ax, value, name, "->",
+		    "pointer to a structure or union");
+  else
+    /* If this `if' chain doesn't handle it, then the case list
+       shouldn't mention it, and we shouldn't be here.  */
+    internal_error (_("gen_expr: unhandled struct case"));
+}
+
+/* A helper function that emits a unary operation.  */
+
+void
+gen_expr_unop (struct expression *exp,
+	       enum exp_opcode op,
+	       expr::operation *lhs,
+	       struct agent_expr *ax, struct axs_value *value)
+{
+  struct axs_value value1, value2;
+
+  switch (op)
+    {
+    case UNOP_NEG:
+      gen_int_literal (ax, &value1, 0,
+		       builtin_type (ax->gdbarch)->builtin_int);
+      gen_usual_unary (ax, &value1);	/* shouldn't do much */
+      lhs->generate_ax (exp, ax, &value2);
+      gen_usual_unary (ax, &value2);
+      gen_usual_arithmetic (ax, &value1, &value2);
+      gen_binop (ax, value, &value1, &value2, aop_sub, aop_sub, 1, "negation");
+      break;
+
+    case UNOP_PLUS:
+      /* + FOO is equivalent to 0 + FOO, which can be optimized.  */
+      lhs->generate_ax (exp, ax, value);
+      gen_usual_unary (ax, value);
+      break;
+
+    case UNOP_LOGICAL_NOT:
+      lhs->generate_ax (exp, ax, value);
+      gen_usual_unary (ax, value);
+      gen_logical_not (ax, value,  builtin_type (ax->gdbarch)->builtin_int);
+      break;
+
+    case UNOP_COMPLEMENT:
+      lhs->generate_ax (exp, ax, value);
+      gen_usual_unary (ax, value);
+      gen_integral_promotions (ax, value);
+      gen_complement (ax, value);
+      break;
+
+    case UNOP_IND:
+      lhs->generate_ax (exp, ax, value);
+      gen_usual_unary (ax, value);
+      if (!value->type->is_pointer_or_reference ())
+	error (_("Argument of unary `*' is not a pointer."));
+      gen_deref (value);
+      break;
+
+    case UNOP_ADDR:
+      lhs->generate_ax (exp, ax, value);
+      gen_address_of (value);
+      break;
+
+    default:
+      gdb_assert_not_reached ("invalid case in gen_expr_unop");
+    }
+}
+
 
 
 /* Given a single variable and a scope, generate bytecodes to trace
@@ -2435,7 +2330,7 @@ gen_trace_for_var (CORE_ADDR scope, stru
   agent_expr_up ax (new agent_expr (gdbarch, scope));
   struct axs_value value;
 
-  ax->tracing = 1;
+  ax->tracing = true;
   ax->trace_string = trace_string;
   gen_var_ref (ax.get (), &value, var);
 
@@ -2466,14 +2361,12 @@ gen_trace_for_expr (CORE_ADDR scope, str
 		    int trace_string)
 {
   agent_expr_up ax (new agent_expr (expr->gdbarch, scope));
-  union exp_element *pc;
   struct axs_value value;
 
-  pc = expr->elts;
-  ax->tracing = 1;
+  ax->tracing = true;
   ax->trace_string = trace_string;
   value.optimized_out = 0;
-  gen_expr (expr, &pc, ax.get (), &value);
+  expr->op->generate_ax (expr, ax.get (), &value);
 
   /* Make sure we record the final object, and get rid of it.  */
   gen_traced_pop (ax.get (), &value);
@@ -2495,13 +2388,11 @@ agent_expr_up
 gen_eval_for_expr (CORE_ADDR scope, struct expression *expr)
 {
   agent_expr_up ax (new agent_expr (expr->gdbarch, scope));
-  union exp_element *pc;
   struct axs_value value;
 
-  pc = expr->elts;
-  ax->tracing = 0;
+  ax->tracing = false;
   value.optimized_out = 0;
-  gen_expr (expr, &pc, ax.get (), &value);
+  expr->op->generate_ax (expr, ax.get (), &value);
 
   require_rvalue (ax.get (), &value);
 
@@ -2518,7 +2409,7 @@ gen_trace_for_return_address (CORE_ADDR
   agent_expr_up ax (new agent_expr (gdbarch, scope));
   struct axs_value value;
 
-  ax->tracing = 1;
+  ax->tracing = true;
   ax->trace_string = trace_string;
 
   gdbarch_gen_return_address (gdbarch, ax.get (), &value, scope);
@@ -2543,20 +2434,18 @@ gen_printf (CORE_ADDR scope, struct gdba
 	    int nargs, struct expression **exprs)
 {
   agent_expr_up ax (new agent_expr (gdbarch, scope));
-  union exp_element *pc;
   struct axs_value value;
   int tem;
 
   /* We're computing values, not doing side effects.  */
-  ax->tracing = 0;
+  ax->tracing = false;
 
   /* Evaluate and push the args on the stack in reverse order,
      for simplicity of collecting them on the target side.  */
   for (tem = nargs - 1; tem >= 0; --tem)
     {
-      pc = exprs[tem]->elts;
       value.optimized_out = 0;
-      gen_expr (exprs[tem], &pc, ax.get (), &value);
+      exprs[tem]->op->generate_ax (exprs[tem], ax.get (), &value);
       require_rvalue (ax.get (), &value);
     }
 
@@ -2584,7 +2473,7 @@ agent_eval_command_one (const char *exp,
   if (!eval)
     {
       if (*exp == '/')
-        exp = decode_agent_options (exp, &trace_string);
+	exp = decode_agent_options (exp, &trace_string);
     }
 
   agent_expr_up agent;
@@ -2618,7 +2507,7 @@ agent_eval_command_one (const char *exp,
 }
 
 static void
-agent_command_1 (const char *exp, int eval)
+maint_agent_command_1 (const char *exp, int eval)
 {
   /* We don't deal with overlay debugging at the moment.  We need to
      think more carefully about this.  If you copy this code into
@@ -2634,14 +2523,14 @@ agent_command_1 (const char *exp, int ev
     {
       struct linespec_result canonical;
 
-      event_location_up location
-	= new_linespec_location (&exp, symbol_name_match_type::WILD);
-      decode_line_full (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
+      location_spec_up locspec
+	= new_linespec_location_spec (&exp, symbol_name_match_type::WILD);
+      decode_line_full (locspec.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
 			NULL, 0, &canonical,
 			NULL, NULL);
       exp = skip_spaces (exp);
       if (exp[0] == ',')
-        {
+	{
 	  exp++;
 	  exp = skip_spaces (exp);
 	}
@@ -2656,9 +2545,9 @@ agent_command_1 (const char *exp, int ev
 }
 
 static void
-agent_command (const char *exp, int from_tty)
+maint_agent_command (const char *exp, int from_tty)
 {
-  agent_command_1 (exp, 0);
+  maint_agent_command_1 (exp, 0);
 }
 
 /* Parse the given expression, compile it into an agent expression
@@ -2666,9 +2555,9 @@ agent_command (const char *exp, int from
    expression.  */
 
 static void
-agent_eval_command (const char *exp, int from_tty)
+maint_agent_eval_command (const char *exp, int from_tty)
 {
-  agent_command_1 (exp, 1);
+  maint_agent_command_1 (exp, 1);
 }
 
 /* Parse the given expression, compile it into an agent expression
@@ -2677,7 +2566,7 @@ agent_eval_command (const char *exp, int
 static void
 maint_agent_printf_command (const char *cmdrest, int from_tty)
 {
-  struct frame_info *fi = get_current_frame ();	/* need current scope */
+  frame_info_ptr fi = get_current_frame ();	/* need current scope */
   const char *format_start, *format_end;
 
   /* We don't deal with overlay debugging at the moment.  We need to
@@ -2719,7 +2608,8 @@ maint_agent_printf_command (const char *
       const char *cmd1;
 
       cmd1 = cmdrest;
-      expression_up expr = parse_exp_1 (&cmd1, 0, (struct block *) 0, 1);
+      expression_up expr = parse_exp_1 (&cmd1, 0, (struct block *) 0,
+					PARSER_COMMA_TERMINATES);
       argvec.push_back (expr.release ());
       cmdrest = cmd1;
       if (*cmdrest == ',')
@@ -2743,10 +2633,9 @@ maint_agent_printf_command (const char *
 
 /* Initialization code.  */
 
-void
-_initialize_ax_gdb (void)
+INIT_GDB_FILE (ax_gdb)
 {
-  add_cmd ("agent", class_maintenance, agent_command,
+  add_cmd ("agent", class_maintenance, maint_agent_command,
 	   _("\
 Translate an expression into remote agent bytecode for tracing.\n\
 Usage: maint agent [-at LOCATION,] EXPRESSION\n\
@@ -2754,7 +2643,7 @@ If -at is given, generate remote agent b
 If not, generate remote agent bytecode for current frame pc address."),
 	   &maintenancelist);
 
-  add_cmd ("agent-eval", class_maintenance, agent_eval_command,
+  add_cmd ("agent-eval", class_maintenance, maint_agent_eval_command,
 	   _("\
 Translate an expression into remote agent bytecode for evaluation.\n\
 Usage: maint agent-eval [-at LOCATION,] EXPRESSION\n\
@@ -2763,7 +2652,9 @@ If not, generate remote agent bytecode f
 	   &maintenancelist);
 
   add_cmd ("agent-printf", class_maintenance, maint_agent_printf_command,
-	   _("Translate an expression into remote "
-	     "agent bytecode for evaluation and display the bytecodes."),
+	   _("\
+Translate a printf into remote agent bytecode and display the bytecodes.\n\
+Usage: maint agent-printf FORMAT, EXPR...\n\
+The expressions are translated for evaluation, not tracing."),
 	   &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.20200303/gdb/ax-gdb.h ./gdb/ax-gdb.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ax-gdb.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ax-gdb.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,13 +16,12 @@
    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 AX_GDB_H
-#define AX_GDB_H
+#ifndef GDB_AX_GDB_H
+#define GDB_AX_GDB_H
 
-#include "ax.h"  /* For agent_expr_up.  */
+#include "ax.h"
 
 struct expression;
-union exp_element;
 
 /* Types and enums */
 
@@ -124,4 +123,4 @@ extern agent_expr_up gen_printf (CORE_AD
 				 CORE_ADDR, LONGEST, const char *, int,
 				 int, struct expression **);
 
-#endif /* AX_GDB_H */
+#endif /* GDB_AX_GDB_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.20200303/gdb/ax-general.c ./gdb/ax-general.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ax-general.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ax-general.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,15 +21,12 @@
    dependencies, since we want to be able to use them in contexts
    outside of GDB (test suites, the stub, etc.)  */
 
-#include "defs.h"
 #include "ax.h"
 #include "gdbarch.h"
 
 #include "value.h"
 #include "user-regs.h"
 
-static void grow_expr (struct agent_expr *x, int n);
-
 static void append_const (struct agent_expr *x, LONGEST val, int n);
 
 static LONGEST read_const (struct agent_expr *x, int o, int n);
@@ -38,59 +35,18 @@ static void generic_ext (struct agent_ex
 
 /* Functions for building expressions.  */
 
-agent_expr::agent_expr (struct gdbarch *gdbarch, CORE_ADDR scope)
-{
-  this->len = 0;
-  this->size = 1;		/* Change this to a larger value once
-				   reallocation code is tested.  */
-  this->buf = (unsigned char *) xmalloc (this->size);
-
-  this->gdbarch = gdbarch;
-  this->scope = scope;
-
-  /* Bit vector for registers used.  */
-  this->reg_mask_len = 1;
-  this->reg_mask = XCNEWVEC (unsigned char, this->reg_mask_len);
-
-  this->tracing = 0;
-  this->trace_string = 0;
-}
-
-agent_expr::~agent_expr ()
-{
-  xfree (this->buf);
-  xfree (this->reg_mask);
-}
-
-/* Make sure that X has room for at least N more bytes.  This doesn't
-   affect the length, just the allocated size.  */
-static void
-grow_expr (struct agent_expr *x, int n)
-{
-  if (x->len + n > x->size)
-    {
-      x->size *= 2;
-      if (x->size < x->len + n)
-	x->size = x->len + n + 10;
-      x->buf = (unsigned char *) xrealloc (x->buf, x->size);
-    }
-}
-
-
 /* Append the low N bytes of VAL as an N-byte integer to the
    expression X, in big-endian order.  */
 static void
 append_const (struct agent_expr *x, LONGEST val, int n)
 {
-  int i;
-
-  grow_expr (x, n);
-  for (i = n - 1; i >= 0; i--)
+  size_t len = x->buf.size ();
+  x->buf.resize (len + n);
+  for (int i = n - 1; i >= 0; i--)
     {
-      x->buf[x->len + i] = val & 0xff;
+      x->buf[len + i] = val & 0xff;
       val >>= 8;
     }
-  x->len += n;
 }
 
 
@@ -103,7 +59,7 @@ read_const (struct agent_expr *x, int o,
   LONGEST accum = 0;
 
   /* Make sure we're not reading off the end of the expression.  */
-  if (o + n > x->len)
+  if (o + n > x->buf.size ())
     error (_("GDB bug: ax-general.c (read_const): incomplete constant"));
 
   for (i = 0; i < n; i++)
@@ -117,8 +73,7 @@ read_const (struct agent_expr *x, int o,
 void
 ax_raw_byte (struct agent_expr *x, gdb_byte byte)
 {
-  grow_expr (x, 1);
-  x->buf[x->len++] = byte;
+  x->buf.push_back (byte);
 }
 
 /* Append a simple operator OP to EXPR.  */
@@ -154,9 +109,8 @@ generic_ext (struct agent_expr *x, enum
     error (_("GDB bug: ax-general.c (generic_ext): "
 	     "opcode has inadequate range"));
 
-  grow_expr (x, 2);
-  x->buf[x->len++] = op;
-  x->buf[x->len++] = n;
+  x->buf.push_back (op);
+  x->buf.push_back (n);
 }
 
 
@@ -185,9 +139,8 @@ ax_trace_quick (struct agent_expr *x, in
     error (_("GDB bug: ax-general.c (ax_trace_quick): "
 	     "size out of range for trace_quick"));
 
-  grow_expr (x, 2);
-  x->buf[x->len++] = aop_trace_quick;
-  x->buf[x->len++] = n;
+  x->buf.push_back (aop_trace_quick);
+  x->buf.push_back (n);
 }
 
 
@@ -200,12 +153,10 @@ ax_trace_quick (struct agent_expr *x, in
 int
 ax_goto (struct agent_expr *x, enum agent_op op)
 {
-  grow_expr (x, 3);
-  x->buf[x->len + 0] = op;
-  x->buf[x->len + 1] = 0xff;
-  x->buf[x->len + 2] = 0xff;
-  x->len += 3;
-  return x->len - 2;
+  x->buf.push_back (op);
+  x->buf.push_back (0xff);
+  x->buf.push_back (0xff);
+  return x->buf.size () - 2;
 }
 
 /* Suppose a given call to ax_goto returns some value PATCH.  When you
@@ -244,7 +195,7 @@ ax_const_l (struct agent_expr *x, LONGES
       LONGEST lim = ((LONGEST) 1) << (size - 1);
 
       if (-lim <= l && l <= lim - 1)
-        break;
+	break;
     }
 
   /* Emit the right opcode...  */
@@ -292,13 +243,11 @@ ax_reg (struct agent_expr *x, int reg)
 
       /* Make sure the register number is in range.  */
       if (reg < 0 || reg > 0xffff)
-        error (_("GDB bug: ax-general.c (ax_reg): "
+	error (_("GDB bug: ax-general.c (ax_reg): "
 		 "register number out of range"));
-      grow_expr (x, 3);
-      x->buf[x->len] = aop_reg;
-      x->buf[x->len + 1] = (reg >> 8) & 0xff;
-      x->buf[x->len + 2] = (reg) & 0xff;
-      x->len += 3;
+      x->buf.push_back (aop_reg);
+      x->buf.push_back ((reg >> 8) & 0xff);
+      x->buf.push_back ((reg) & 0xff);
     }
 }
 
@@ -309,15 +258,12 @@ ax_tsv (struct agent_expr *x, enum agent
 {
   /* Make sure the tsv number is in range.  */
   if (num < 0 || num > 0xffff)
-    internal_error (__FILE__, __LINE__, 
-		    _("ax-general.c (ax_tsv): variable "
+    internal_error (_("ax-general.c (ax_tsv): variable "
 		      "number is %d, out of range"), num);
 
-  grow_expr (x, 3);
-  x->buf[x->len] = op;
-  x->buf[x->len + 1] = (num >> 8) & 0xff;
-  x->buf[x->len + 2] = (num) & 0xff;
-  x->len += 3;
+  x->buf.push_back (op);
+  x->buf.push_back ((num >> 8) & 0xff);
+  x->buf.push_back ((num) & 0xff);
 }
 
 /* Append a string to the expression.  Note that the string is going
@@ -332,16 +278,14 @@ ax_string (struct agent_expr *x, const c
 
   /* Make sure the string length is reasonable.  */
   if (slen < 0 || slen > 0xffff)
-    internal_error (__FILE__, __LINE__, 
-		    _("ax-general.c (ax_string): string "
+    internal_error (_("ax-general.c (ax_string): string "
 		      "length is %d, out of allowed range"), slen);
 
-  grow_expr (x, 2 + slen + 1);
-  x->buf[x->len++] = ((slen + 1) >> 8) & 0xff;
-  x->buf[x->len++] = (slen + 1) & 0xff;
+  x->buf.push_back (((slen + 1) >> 8) & 0xff);
+  x->buf.push_back ((slen + 1) & 0xff);
   for (i = 0; i < slen; ++i)
-    x->buf[x->len++] = str[i];
-  x->buf[x->len++] = '\0';
+    x->buf.push_back (str[i]);
+  x->buf.push_back ('\0');
 }
 
 
@@ -349,7 +293,36 @@ ax_string (struct agent_expr *x, const c
 /* Functions for disassembling agent expressions, and otherwise
    debugging the expression compiler.  */
 
-struct aop_map aop_map[] =
+/* An entry in the opcode map.  */
+struct aop_map
+  {
+
+    /* The name of the opcode.  Null means that this entry is not a
+       valid opcode --- a hole in the opcode space.  */
+    const char *name;
+
+    /* All opcodes take no operands from the bytecode stream, or take
+       unsigned integers of various sizes.  If this is a positive number
+       n, then the opcode is followed by an n-byte operand, which should
+       be printed as an unsigned integer.  If this is zero, then the
+       opcode takes no operands from the bytecode stream.
+
+       If we get more complicated opcodes in the future, don't add other
+       magic values of this; that's a crock.  Add an `enum encoding'
+       field to this, or something like that.  */
+    int op_size;
+
+    /* The size of the data operated upon, in bits, for bytecodes that
+       care about that (ref and const).  Zero for all others.  */
+    int data_size;
+
+    /* Number of stack elements consumed, and number produced.  */
+    int consumed, produced;
+  };
+
+/* Map of the bytecodes, indexed by bytecode number.  */
+
+static struct aop_map aop_map[] =
 {
   {0, 0, 0, 0, 0}
 #define DEFOP(NAME, SIZE, DATA_SIZE, CONSUMED, PRODUCED, VALUE) \
@@ -365,40 +338,37 @@ ax_print (struct ui_file *f, struct agen
 {
   int i;
 
-  fprintf_filtered (f, _("Scope: %s\n"), paddress (x->gdbarch, x->scope));
-  fprintf_filtered (f, _("Reg mask:"));
-  for (i = 0; i < x->reg_mask_len; ++i)
-    fprintf_filtered (f, _(" %02x"), x->reg_mask[i]);
-  fprintf_filtered (f, _("\n"));
-
-  /* Check the size of the name array against the number of entries in
-     the enum, to catch additions that people didn't sync.  */
-  if ((sizeof (aop_map) / sizeof (aop_map[0]))
-      != aop_last)
-    error (_("GDB bug: ax-general.c (ax_print): opcode map out of sync"));
+  gdb_printf (f, _("Scope: %s\n"), paddress (x->gdbarch, x->scope));
+  gdb_printf (f, _("Reg mask:"));
+  for (i = 0; i < x->reg_mask.size (); ++i)
+    {
+      if ((i % 8) == 0)
+	gdb_printf (f, " ");
+      gdb_printf (f, _("%d"), (int) x->reg_mask[i]);
+    }
+  gdb_printf (f, _("\n"));
 
-  for (i = 0; i < x->len;)
+  for (i = 0; i < x->buf.size ();)
     {
       enum agent_op op = (enum agent_op) x->buf[i];
 
-      if (op >= (sizeof (aop_map) / sizeof (aop_map[0]))
-	  || !aop_map[op].name)
+      if (op >= ARRAY_SIZE (aop_map) || aop_map[op].name == nullptr)
 	{
-	  fprintf_filtered (f, _("%3d  <bad opcode %02x>\n"), i, op);
+	  gdb_printf (f, _("%3d  <bad opcode %02x>\n"), i, op);
 	  i++;
 	  continue;
 	}
-      if (i + 1 + aop_map[op].op_size > x->len)
+      if (i + 1 + aop_map[op].op_size > x->buf.size ())
 	{
-	  fprintf_filtered (f, _("%3d  <incomplete opcode %s>\n"),
-			    i, aop_map[op].name);
+	  gdb_printf (f, _("%3d  <incomplete opcode %s>\n"),
+		      i, aop_map[op].name);
 	  break;
 	}
 
-      fprintf_filtered (f, "%3d  %s", i, aop_map[op].name);
+      gdb_printf (f, "%3d  %s", i, aop_map[op].name);
       if (aop_map[op].op_size > 0)
 	{
-	  fputs_filtered (" ", f);
+	  gdb_puts (" ", f);
 
 	  print_longest (f, 'd', 0,
 			 read_const (x, i + 1, aop_map[op].op_size));
@@ -412,11 +382,11 @@ ax_print (struct ui_file *f, struct agen
 	  nargs = x->buf[i++];
 	  slen = x->buf[i++];
 	  slen = slen * 256 + x->buf[i++];
-	  fprintf_filtered (f, _(" \"%s\", %d args"),
-			    &(x->buf[i]), nargs);
+	  gdb_printf (f, _(" \"%s\", %d args"),
+		      &(x->buf[i]), nargs);
 	  i += slen - 1;
 	}
-      fprintf_filtered (f, "\n");
+      gdb_printf (f, "\n");
       i += 1 + aop_map[op].op_size;
     }
 }
@@ -438,28 +408,14 @@ ax_reg_mask (struct agent_expr *ax, int
     }
   else
     {
-      int byte;
-
       /* Get the remote register number.  */
       reg = gdbarch_remote_register_number (ax->gdbarch, reg);
-      byte = reg / 8;
 
       /* Grow the bit mask if necessary.  */
-      if (byte >= ax->reg_mask_len)
-        {
-          /* It's not appropriate to double here.  This isn't a
-	     string buffer.  */
-          int new_len = byte + 1;
-          unsigned char *new_reg_mask
-	    = XRESIZEVEC (unsigned char, ax->reg_mask, new_len);
-
-          memset (new_reg_mask + ax->reg_mask_len, 0,
-	          (new_len - ax->reg_mask_len) * sizeof (ax->reg_mask[0]));
-          ax->reg_mask_len = new_len;
-          ax->reg_mask = new_reg_mask;
-        }
+      if (reg >= ax->reg_mask.size ())
+	ax->reg_mask.resize (reg + 1);
 
-      ax->reg_mask[byte] |= 1 << (reg % 8);
+      ax->reg_mask[reg] = true;
     }
 }
 
@@ -473,30 +429,30 @@ ax_reqs (struct agent_expr *ax)
 
   /* Jump target table.  targets[i] is non-zero iff we have found a
      jump to offset i.  */
-  char *targets = (char *) alloca (ax->len * sizeof (targets[0]));
+  char *targets = (char *) alloca (ax->buf.size () * sizeof (targets[0]));
 
   /* Instruction boundary table.  boundary[i] is non-zero iff our scan
      has reached an instruction starting at offset i.  */
-  char *boundary = (char *) alloca (ax->len * sizeof (boundary[0]));
+  char *boundary = (char *) alloca (ax->buf.size () * sizeof (boundary[0]));
 
   /* Stack height record.  If either targets[i] or boundary[i] is
      non-zero, heights[i] is the height the stack should have before
      executing the bytecode at that point.  */
-  int *heights = (int *) alloca (ax->len * sizeof (heights[0]));
+  int *heights = (int *) alloca (ax->buf.size () * sizeof (heights[0]));
 
   /* Pointer to a description of the present op.  */
   struct aop_map *op;
 
-  memset (targets, 0, ax->len * sizeof (targets[0]));
-  memset (boundary, 0, ax->len * sizeof (boundary[0]));
+  memset (targets, 0, ax->buf.size () * sizeof (targets[0]));
+  memset (boundary, 0, ax->buf.size () * sizeof (boundary[0]));
 
   ax->max_height = ax->min_height = height = 0;
   ax->flaw = agent_flaw_none;
   ax->max_data_size = 0;
 
-  for (i = 0; i < ax->len; i += 1 + op->op_size)
+  for (i = 0; i < ax->buf.size (); i += 1 + op->op_size)
     {
-      if (ax->buf[i] > (sizeof (aop_map) / sizeof (aop_map[0])))
+      if (ax->buf[i] >= ARRAY_SIZE (aop_map))
 	{
 	  ax->flaw = agent_flaw_bad_instruction;
 	  return;
@@ -510,15 +466,15 @@ ax_reqs (struct agent_expr *ax)
 	  return;
 	}
 
-      if (i + 1 + op->op_size > ax->len)
+      if (i + 1 + op->op_size > ax->buf.size ())
 	{
 	  ax->flaw = agent_flaw_incomplete_instruction;
 	  return;
 	}
 
       /* If this instruction is a forward jump target, does the
-         current stack height match the stack height at the jump
-         source?  */
+	 current stack height match the stack height at the jump
+	 source?  */
       if (targets[i] && (heights[i] != height))
 	{
 	  ax->flaw = agent_flaw_height_mismatch;
@@ -539,20 +495,20 @@ ax_reqs (struct agent_expr *ax)
 	ax->max_data_size = op->data_size;
 
       /* For jump instructions, check that the target is a valid
-         offset.  If it is, record the fact that that location is a
-         jump target, and record the height we expect there.  */
+	 offset.  If it is, record the fact that that location is a
+	 jump target, and record the height we expect there.  */
       if (aop_goto == op - aop_map
 	  || aop_if_goto == op - aop_map)
 	{
 	  int target = read_const (ax, i + 1, 2);
-	  if (target < 0 || target >= ax->len)
+	  if (target < 0 || target >= ax->buf.size ())
 	    {
 	      ax->flaw = agent_flaw_bad_jump;
 	      return;
 	    }
 
 	  /* Do we have any information about what the stack height
-             should be at the target?  */
+	     should be at the target?  */
 	  if (targets[target] || boundary[target])
 	    {
 	      if (heights[target] != height)
@@ -562,15 +518,15 @@ ax_reqs (struct agent_expr *ax)
 		}
 	    }
 
-          /* Record the target, along with the stack height we expect.  */
-          targets[target] = 1;
-          heights[target] = height;
+	  /* Record the target, along with the stack height we expect.  */
+	  targets[target] = 1;
+	  heights[target] = height;
 	}
 
       /* For unconditional jumps with a successor, check that the
-         successor is a target, and pick up its stack height.  */
+	 successor is a target, and pick up its stack height.  */
       if (aop_goto == op - aop_map
-	  && i + 3 < ax->len)
+	  && i + 3 < ax->buf.size ())
 	{
 	  if (!targets[i + 3])
 	    {
@@ -591,7 +547,7 @@ ax_reqs (struct agent_expr *ax)
     }
 
   /* Check that all the targets are on boundaries.  */
-  for (i = 0; i < ax->len; i++)
+  for (i = 0; i < ax->buf.size (); i++)
     if (targets[i] && !boundary[i])
       {
 	ax->flaw = agent_flaw_bad_jump;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ax.h ./gdb/ax.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ax.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ax.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,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/>.  */
 
-#ifndef AX_H
-#define AX_H
+#ifndef GDB_AX_H
+#define GDB_AX_H
 
 /* It's sometimes useful to be able to debug programs that you can't
    really stop for more than a fraction of a second.  To this end, the
@@ -81,18 +81,13 @@ enum agent_flaws
 struct agent_expr
   {
     /* Construct an empty agent expression.  */
-    explicit agent_expr (struct gdbarch *gdbarch, CORE_ADDR scope);
-
-    ~agent_expr ();
+    agent_expr (struct gdbarch *gdbarch, CORE_ADDR scope)
+      : gdbarch (gdbarch),
+	scope (scope)
+    { }
 
     /* The bytes of the expression.  */
-    unsigned char *buf;
-
-    /* The number of bytecode in the expression.  */
-    int len;
-
-    /* Allocated space available currently.  */
-    int size;
+    gdb::byte_vector buf;
 
     /* The target architecture assumed to be in effect.  */
     struct gdbarch *gdbarch;
@@ -116,14 +111,10 @@ struct agent_expr
     int max_data_size;
 
     /* Bit vector of registers needed.  Register R is needed iff
-
-       reg_mask[R / 8] & (1 << (R % 8))
-
-       is non-zero.  Note!  You may not assume that this bitmask is long
-       enough to hold bits for all the registers of the machine; the
-       agent expression code has no idea how many registers the machine
-       has.  However, the bitmask is reg_mask_len bytes long, so the
-       valid register numbers run from 0 to reg_mask_len * 8 - 1.
+       reg_mask[R] is non-zero.  Note!  You may not assume that this
+       bitmask is long enough to hold bits for all the registers of
+       the machine; the agent expression code has no idea how many
+       registers the machine has.
 
        Also note that this mask may contain registers that are needed
        for the original collection expression to work, but that are
@@ -132,8 +123,7 @@ struct agent_expr
        compiler sets the mask bit and skips generating a bytecode whose
        result is going to be discarded anyway.
     */
-    int reg_mask_len;
-    unsigned char *reg_mask;
+    std::vector<bool> reg_mask;
 
     /* For the data tracing facility, we need to insert `trace' bytecodes
        before each data fetch; this records all the memory that the
@@ -141,16 +131,16 @@ struct agent_expr
        be available when the user later tries to evaluate the expression
        in GDB.
 
-       Setting the flag 'tracing' to non-zero enables the code that
+       Setting the flag 'tracing' to true enables the code that
        emits the trace bytecodes at the appropriate points.  */
 
-    unsigned int tracing : 1;
+    bool tracing = false;
 
     /* This indicates that pointers to chars should get an added
        tracenz bytecode to record nonzero bytes, up to a length that
        is the value of trace_string.  */
 
-    int trace_string;
+    int trace_string = 0;
   };
 
 /* An agent_expr owning pointer.  */
@@ -164,7 +154,6 @@ enum agent_op
     aop_ ## NAME = VALUE,
 #include "gdbsupport/ax.def"
 #undef DEFOP
-    aop_last
   };
 
 
@@ -231,38 +220,8 @@ extern void ax_string (struct agent_expr
 /* Disassemble the expression EXPR, writing to F.  */
 extern void ax_print (struct ui_file *f, struct agent_expr * EXPR);
 
-/* An entry in the opcode map.  */
-struct aop_map
-  {
-
-    /* The name of the opcode.  Null means that this entry is not a
-       valid opcode --- a hole in the opcode space.  */
-    const char *name;
-
-    /* All opcodes take no operands from the bytecode stream, or take
-       unsigned integers of various sizes.  If this is a positive number
-       n, then the opcode is followed by an n-byte operand, which should
-       be printed as an unsigned integer.  If this is zero, then the
-       opcode takes no operands from the bytecode stream.
-
-       If we get more complicated opcodes in the future, don't add other
-       magic values of this; that's a crock.  Add an `enum encoding'
-       field to this, or something like that.  */
-    int op_size;
-
-    /* The size of the data operated upon, in bits, for bytecodes that
-       care about that (ref and const).  Zero for all others.  */
-    int data_size;
-
-    /* Number of stack elements consumed, and number produced.  */
-    int consumed, produced;
-  };
-
-/* Map of the bytecodes, indexed by bytecode number.  */
-extern struct aop_map aop_map[];
-
 /* Given an agent expression AX, analyze and update its requirements.  */
 
 extern void ax_reqs (struct agent_expr *ax);
 
-#endif /* AX_H */
+#endif /* GDB_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.20200303/gdb/bcache.c ./gdb/bcache.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bcache.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bcache.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,8 +19,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/>.  */
 
-#include "defs.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
 #include "bcache.h"
 
 #include <algorithm>
@@ -68,7 +67,7 @@ bcache::expand_hash_table ()
      so we roughly double the table size each time.  After we fall off 
      the end of this table, we just double.  Don't laugh --- there have
      been executables sighted with a gigabyte of debug info.  */
-  static unsigned long sizes[] = { 
+  static const unsigned long sizes[] = {
     1021, 2053, 4099, 8191, 16381, 32771,
     65537, 131071, 262144, 524287, 1048573, 2097143,
     4194301, 8388617, 16777213, 33554467, 67108859, 134217757,
@@ -85,10 +84,10 @@ bcache::expand_hash_table ()
 
   /* Find the next size.  */
   new_num_buckets = m_num_buckets * 2;
-  for (i = 0; i < (sizeof (sizes) / sizeof (sizes[0])); i++)
-    if (sizes[i] > m_num_buckets)
+  for (unsigned long a_size : sizes)
+    if (a_size > m_num_buckets)
       {
-	new_num_buckets = sizes[i];
+	new_num_buckets = a_size;
 	break;
       }
 
@@ -113,7 +112,7 @@ bcache::expand_hash_table ()
 	  struct bstring **new_bucket;
 	  next = s->next;
 
-	  new_bucket = &new_buckets[(m_hash_function (&s->d.data, s->length)
+	  new_bucket = &new_buckets[(this->hash (&s->d.data, s->length)
 				     % new_num_buckets)];
 	  s->next = *new_bucket;
 	  *new_bucket = s;
@@ -140,15 +139,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.  */
@@ -167,7 +166,7 @@ bcache::insert (const void *addr, int le
   m_total_count++;
   m_total_size += length;
 
-  full_hash = m_hash_function (addr, length);
+  full_hash = this->hash (addr, length);
 
   half_hash = (full_hash >> 16);
   hash_index = full_hash % m_num_buckets;
@@ -180,7 +179,7 @@ bcache::insert (const void *addr, int le
       if (s->half_hash == half_hash)
 	{
 	  if (s->length == length
-	      && m_compare_function (&s->d.data, addr, length))
+	      && this->compare (&s->d.data, addr, length))
 	    return &s->d.data;
 	  else
 	    m_half_hash_miss_count++;
@@ -203,21 +202,28 @@ 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;
   }
 }
 
 
-/* Compare the byte string at ADDR1 of lenght LENGHT to the
-   string at ADDR2.  Return 1 if they are equal.  */
+/* See bcache.h.  */
+
+unsigned long
+bcache::hash (const void *addr, int length)
+{
+  return fast_hash (addr, length, 0);
+}
+
+/* See bcache.h.  */
 
 int
-bcache::compare (const void *addr1, const void *addr2, int length)
+bcache::compare (const void *left, const void *right, int length)
 {
-  return memcmp (addr1, addr2, length) == 0;
+  return memcmp (left, right, length) == 0;
 }
 
 /* Free all the storage associated with BCACHE.  */
@@ -238,15 +244,15 @@ print_percentage (int portion, int total
 {
   if (total == 0)
     /* i18n: Like "Percentage of duplicates, by count: (not applicable)".  */
-    printf_filtered (_("(not applicable)\n"));
+    gdb_printf (_("(not applicable)\n"));
   else
-    printf_filtered ("%3d%%\n", (int) (portion * 100.0 / total));
+    gdb_printf ("%3d%%\n", (int) (portion * 100.0 / total));
 }
 
 
-/* Print statistics on BCACHE's memory usage and efficacity at
+/* Print statistics on BCACHE's memory usage and efficacy at
    eliminating duplication.  NAME should describe the kind of data
-   BCACHE holds.  Statistics are printed using `printf_filtered' and
+   BCACHE holds.  Statistics are printed using `gdb_printf' and
    its ilk.  */
 void
 bcache::print_statistics (const char *type)
@@ -318,59 +324,59 @@ bcache::print_statistics (const char *ty
     xfree (entry_size);
   }
 
-  printf_filtered (_("  M_Cached '%s' statistics:\n"), type);
-  printf_filtered (_("    Total object count:  %ld\n"), m_total_count);
-  printf_filtered (_("    Unique object count: %lu\n"), m_unique_count);
-  printf_filtered (_("    Percentage of duplicates, by count: "));
+  gdb_printf (_("  M_Cached '%s' statistics:\n"), type);
+  gdb_printf (_("    Total object count:  %ld\n"), m_total_count);
+  gdb_printf (_("    Unique object count: %lu\n"), m_unique_count);
+  gdb_printf (_("    Percentage of duplicates, by count: "));
   print_percentage (m_total_count - m_unique_count, m_total_count);
-  printf_filtered ("\n");
+  gdb_printf ("\n");
 
-  printf_filtered (_("    Total object size:   %ld\n"), m_total_size);
-  printf_filtered (_("    Unique object size:  %ld\n"), m_unique_size);
-  printf_filtered (_("    Percentage of duplicates, by size:  "));
+  gdb_printf (_("    Total object size:   %ld\n"), m_total_size);
+  gdb_printf (_("    Unique object size:  %ld\n"), m_unique_size);
+  gdb_printf (_("    Percentage of duplicates, by size:  "));
   print_percentage (m_total_size - m_unique_size, m_total_size);
-  printf_filtered ("\n");
+  gdb_printf ("\n");
 
-  printf_filtered (_("    Max entry size:     %d\n"), max_entry_size);
-  printf_filtered (_("    Average entry size: "));
+  gdb_printf (_("    Max entry size:     %d\n"), max_entry_size);
+  gdb_printf (_("    Average entry size: "));
   if (m_unique_count > 0)
-    printf_filtered ("%ld\n", m_unique_size / m_unique_count);
+    gdb_printf ("%ld\n", m_unique_size / m_unique_count);
   else
     /* i18n: "Average entry size: (not applicable)".  */
-    printf_filtered (_("(not applicable)\n"));    
-  printf_filtered (_("    Median entry size:  %d\n"), median_entry_size);
-  printf_filtered ("\n");
+    gdb_printf (_("(not applicable)\n"));    
+  gdb_printf (_("    Median entry size:  %d\n"), median_entry_size);
+  gdb_printf ("\n");
 
-  printf_filtered (_("    \
+  gdb_printf (_("    \
 Total memory used by bcache, including overhead: %ld\n"),
-		   m_structure_size);
-  printf_filtered (_("    Percentage memory overhead: "));
+	      m_structure_size);
+  gdb_printf (_("    Percentage memory overhead: "));
   print_percentage (m_structure_size - m_unique_size, m_unique_size);
-  printf_filtered (_("    Net memory savings:         "));
+  gdb_printf (_("    Net memory savings:         "));
   print_percentage (m_total_size - m_structure_size, m_total_size);
-  printf_filtered ("\n");
+  gdb_printf ("\n");
 
-  printf_filtered (_("    Hash table size:           %3d\n"), 
-		   m_num_buckets);
-  printf_filtered (_("    Hash table expands:        %lu\n"),
-		   m_expand_count);
-  printf_filtered (_("    Hash table hashes:         %lu\n"),
-		   m_total_count + m_expand_hash_count);
-  printf_filtered (_("    Half hash misses:          %lu\n"),
-		   m_half_hash_miss_count);
-  printf_filtered (_("    Hash table population:     "));
+  gdb_printf (_("    Hash table size:           %3d\n"), 
+	      m_num_buckets);
+  gdb_printf (_("    Hash table expands:        %lu\n"),
+	      m_expand_count);
+  gdb_printf (_("    Hash table hashes:         %lu\n"),
+	      m_total_count + m_expand_hash_count);
+  gdb_printf (_("    Half hash misses:          %lu\n"),
+	      m_half_hash_miss_count);
+  gdb_printf (_("    Hash table population:     "));
   print_percentage (occupied_buckets, m_num_buckets);
-  printf_filtered (_("    Median hash chain length:  %3d\n"),
-		   median_chain_length);
-  printf_filtered (_("    Average hash chain length: "));
+  gdb_printf (_("    Median hash chain length:  %3d\n"),
+	      median_chain_length);
+  gdb_printf (_("    Average hash chain length: "));
   if (m_num_buckets > 0)
-    printf_filtered ("%3lu\n", m_unique_count / m_num_buckets);
+    gdb_printf ("%3lu\n", m_unique_count / m_num_buckets);
   else
     /* i18n: "Average hash chain length: (not applicable)".  */
-    printf_filtered (_("(not applicable)\n"));
-  printf_filtered (_("    Maximum hash chain length: %3d\n"), 
-		   max_chain_length);
-  printf_filtered ("\n");
+    gdb_printf (_("(not applicable)\n"));
+  gdb_printf (_("    Maximum hash chain length: %3d\n"), 
+	      max_chain_length);
+  gdb_printf ("\n");
 }
 
 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.20200303/gdb/bcache.h ./gdb/bcache.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bcache.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bcache.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,8 +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/>.  */
 
-#ifndef BCACHE_H
-#define BCACHE_H 1
+#ifndef GDB_BCACHE_H
+#define GDB_BCACHE_H
 
 /* A bcache is a data structure for factoring out duplication in
    read-only structures.  You give the bcache some string of bytes S.
@@ -142,41 +142,60 @@ struct bstring;
 
 struct bcache
 {
-  /* Allocate a bcache.  HASH_FN and COMPARE_FN can be used to pass in
-     custom hash, and compare functions to be used by this bcache.  If
-     HASH_FUNCTION is NULL fast_hash() is used and if COMPARE_FUNCTION is
-     NULL memcmp() is used.  */
-
-  explicit bcache (unsigned long (*hash_fn)(const void *,
-					    int length) = nullptr,
-		   int (*compare_fn)(const void *, const void *,
-				     int length) = nullptr)
-    : m_hash_function (hash_fn == nullptr ? default_hash : hash_fn),
-      m_compare_function (compare_fn == nullptr ? compare : compare_fn)
-  {
-  }
-
-  ~bcache ();
+  virtual ~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);
+  template<typename T, typename = gdb::Requires<std::is_trivially_copyable<T>>>
+  const T *insert (const T *addr, int length, bool *added = nullptr)
+  {
+    return (const T *) this->insert ((const void *) addr, length, added);
+  }
+
+  /* Find a copy of OBJECT in this 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 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.  */
 
-  /* Print statistics on this bcache's memory usage and efficacity at
+  template<typename T, typename = gdb::Requires<std::is_trivially_copyable<T>>>
+  const T *insert (const T &object, bool *added = nullptr)
+  {
+    return (const T *) this->insert ((const void *) &object, sizeof (object),
+				     added);
+  }
+
+  /* Print statistics on this bcache's memory usage and efficacy at
      eliminating duplication.  TYPE should be a string describing the
      kind of data this bcache holds.  Statistics are printed using
-     `printf_filtered' and its ilk.  */
+     `gdb_printf' and its ilk.  */
   void print_statistics (const char *type);
   int memory_used ();
 
+protected:
+
+  /* Hash function to be used for this bcache object.  Defaults to
+     fast_hash.  */
+  virtual unsigned long hash (const void *addr, int length);
+
+  /* Compare function to be used for this bcache object.  Defaults to
+     memcmp.  */
+  virtual int compare (const void *left, const void *right, int length);
+
 private:
 
+  /* Implementation of the templated 'insert' methods.  */
+
+  const void *insert (const void *addr, int length, bool *added);
+
   /* All the bstrings are allocated here.  */
   struct obstack m_cache {};
 
@@ -205,25 +224,10 @@ private:
      length/data compare missed.  */
   unsigned long m_half_hash_miss_count = 0;
 
-  /* Hash function to be used for this bcache object.  */
-  unsigned long (*m_hash_function)(const void *addr, int length);
-
-  /* Compare function to be used for this bcache object.  */
-  int (*m_compare_function)(const void *, const void *, int length);
-
-  /* Default compare function.  */
-  static int compare (const void *addr1, const void *addr2, int length);
-
-  /* Default hash function.  */
-  static unsigned long default_hash (const void *ptr, int length)
-  {
-    return fast_hash (ptr, length, 0);
-  }
-
   /* Expand the hash table.  */
   void expand_hash_table ();
 };
 
 } /* namespace gdb */
 
-#endif /* BCACHE_H */
+#endif /* GDB_BCACHE_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.20200303/gdb/bfd-target.c ./gdb/bfd-target.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bfd-target.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bfd-target.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "target.h"
 #include "bfd-target.h"
 #include "exec.h"
@@ -34,8 +33,7 @@ static const target_info target_bfd_targ
 class target_bfd : public target_ops
 {
 public:
-  explicit target_bfd (struct bfd *bfd);
-  ~target_bfd () override;
+  explicit target_bfd (const gdb_bfd_ref_ptr &bfd);
 
   const target_info &info () const override
   { return target_bfd_target_info; }
@@ -51,7 +49,7 @@ public:
 		  ULONGEST offset, ULONGEST len,
 		  ULONGEST *xfered_len) override;
 
-  target_section_table *get_section_table () override;
+  const std::vector<target_section> *get_section_table () override;
 
 private:
   /* The BFD we're wrapping.  */
@@ -60,7 +58,7 @@ private:
   /* The section table build from the ALLOC sections in BFD.  Note
      that we can't rely on extracting the BFD from a random section in
      the table, since the table can be legitimately empty.  */
-  struct target_section_table m_table;
+  std::vector<target_section> m_table;
 };
 
 target_xfer_status
@@ -76,38 +74,29 @@ 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);
       }
     default:
       return TARGET_XFER_E_IO;
     }
 }
 
-target_section_table *
+const std::vector<target_section> *
 target_bfd::get_section_table ()
 {
   return &m_table;
 }
 
-target_bfd::target_bfd (struct bfd *abfd)
-  : m_bfd (gdb_bfd_ref_ptr::new_reference (abfd))
+target_bfd::target_bfd (const gdb_bfd_ref_ptr &abfd)
+  : m_bfd (abfd),
+    m_table (build_section_table (abfd.get ()))
 {
-  m_table.sections = NULL;
-  m_table.sections_end = NULL;
-  build_section_table (abfd, &m_table.sections, &m_table.sections_end);
 }
 
-target_bfd::~target_bfd ()
+target_ops_up
+target_bfd_reopen (const gdb_bfd_ref_ptr &abfd)
 {
-  xfree (m_table.sections);
-}
-
-target_ops *
-target_bfd_reopen (struct bfd *abfd)
-{
-  return new target_bfd (abfd);
+  return target_ops_up (new target_bfd (abfd));
 }
 
 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.20200303/gdb/bfd-target.h ./gdb/bfd-target.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bfd-target.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bfd-target.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,15 +17,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/>.  */
 
-#ifndef BFD_TARGET_H
-#define BFD_TARGET_H
+#ifndef GDB_BFD_TARGET_H
+#define GDB_BFD_TARGET_H
+
+#include "gdb_bfd.h"
 
-struct bfd;
 struct target_ops;
 
-/* Given an existing BFD, re-open it as a "struct target_ops".  This
-   acquires a new reference to the BFD.  This reference will be
-   released when the target is closed.  */
-struct target_ops *target_bfd_reopen (struct bfd *bfd);
+/* Given an existing BFD, re-open it as a "struct target_ops".  */
+target_ops_up target_bfd_reopen (const gdb_bfd_ref_ptr &bfd);
 
-#endif
+#endif /* GDB_BFD_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.20200303/gdb/bfin-linux-tdep.c ./gdb/bfin-linux-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bfin-linux-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bfin-linux-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    Contributed by Analog Devices, Inc.
 
@@ -19,8 +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/>.  */
 
-#include "defs.h"
 #include "arch-utils.h"
+#include "extract-store-integer.h"
 #include "regcache.h"
 #include "tramp-frame.h"
 #include "trad-frame.h"
@@ -95,7 +95,7 @@ static const int bfin_linux_sigcontext_r
 
 static void
 bfin_linux_sigframe_init (const struct tramp_frame *self,
-			  struct frame_info *this_frame,
+			  const frame_info_ptr &this_frame,
 			  struct trad_frame_cache *this_cache,
 			  CORE_ADDR func)
 {
@@ -150,7 +150,7 @@ bfin_linux_get_syscall_number (struct gd
 static void
 bfin_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
-  linux_init_abi (info, gdbarch);
+  linux_init_abi (info, gdbarch, 0);
 
   /* Set the sigtramp frame sniffer.  */
   tramp_frame_prepend_unwinder (gdbarch, &bfin_linux_sigframe);
@@ -158,12 +158,11 @@ bfin_linux_init_abi (struct gdbarch_info
   /* Functions for 'catch syscall'.  */
   set_xml_syscall_file_name (gdbarch, "syscalls/bfin-linux.xml");
   set_gdbarch_get_syscall_number (gdbarch,
-                                  bfin_linux_get_syscall_number);
+				  bfin_linux_get_syscall_number);
 }
 
-void
-_initialize_bfin_linux_tdep (void)
+INIT_GDB_FILE (bfin_linux_tdep)
 {
   gdbarch_register_osabi (bfd_arch_bfin, 0, GDB_OSABI_LINUX,
-                          bfin_linux_init_abi);
+			  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.20200303/gdb/bfin-tdep.c ./gdb/bfin-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bfin-tdep.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bfin-tdep.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    Contributed by Analog Devices, Inc.
 
@@ -19,7 +19,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/>.  */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "inferior.h"
 #include "gdbcore.h"
 #include "arch-utils.h"
@@ -30,8 +30,8 @@
 #include "trad-frame.h"
 #include "dis-asm.h"
 #include "sim-regno.h"
-#include "gdb/sim-bfin.h"
-#include "dwarf2-frame.h"
+#include "sim/sim-bfin.h"
+#include "dwarf2/frame.h"
 #include "symtab.h"
 #include "elf-bfd.h"
 #include "elf/bfin.h"
@@ -288,7 +288,7 @@ bfin_alloc_frame_cache (void)
 }
 
 static struct bfin_frame_cache *
-bfin_frame_cache (struct frame_info *this_frame, void **this_cache)
+bfin_frame_cache (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct bfin_frame_cache *cache;
   int i;
@@ -340,7 +340,7 @@ bfin_frame_cache (struct frame_info *thi
 }
 
 static void
-bfin_frame_this_id (struct frame_info *this_frame,
+bfin_frame_this_id (const frame_info_ptr &this_frame,
 		    void **this_cache,
 		    struct frame_id *this_id)
 {
@@ -355,7 +355,7 @@ bfin_frame_this_id (struct frame_info *t
 }
 
 static struct value *
-bfin_frame_prev_register (struct frame_info *this_frame,
+bfin_frame_prev_register (const frame_info_ptr &this_frame,
 			  void **this_cache,
 			  int regnum)
 {
@@ -372,15 +372,16 @@ bfin_frame_prev_register (struct frame_i
   return frame_unwind_got_register (this_frame, regnum, regnum);
 }
 
-static const struct frame_unwind bfin_frame_unwind =
-{
+static const struct frame_unwind_legacy bfin_frame_unwind (
+  "bfin prologue",
   NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
   default_frame_unwind_stop_reason,
   bfin_frame_this_id,
   bfin_frame_prev_register,
   NULL,
   default_frame_sniffer
-};
+);
 
 /* Check for "[--SP] = <reg>;" insns.  These are appear in function
    prologues to save misc registers onto the stack.  */
@@ -464,7 +465,7 @@ bfin_skip_prologue (struct gdbarch *gdba
 
    /* TODO:
       Dwarf2 uses entry point value AFTER some register initializations.
-      We should perhaps skip such asssignments as well (R6 = R1, ...).  */
+      We should perhaps skip such assignments as well (R6 = R1, ...).  */
 
   return pc;
 }
@@ -508,9 +509,9 @@ bfin_push_dummy_call (struct gdbarch *gd
 
   for (i = nargs - 1; i >= 0; i--)
     {
-      struct type *value_type = value_enclosing_type (args[i]);
+      struct type *value_type = args[i]->enclosing_type ();
 
-      total_len += (TYPE_LENGTH (value_type) + 3) & ~3;
+      total_len += align_up (value_type->length (), 4);
     }
 
   /* At least twelve bytes of stack space must be allocated for the function's
@@ -524,12 +525,12 @@ bfin_push_dummy_call (struct gdbarch *gd
 
   for (i = nargs - 1; i >= 0; i--)
     {
-      struct type *value_type = value_enclosing_type (args[i]);
+      struct type *value_type = args[i]->enclosing_type ();
       struct type *arg_type = check_typedef (value_type);
-      int container_len = (TYPE_LENGTH (arg_type) + 3) & ~3;
+      int container_len = align_up (arg_type->length (), 4);
 
       sp -= container_len;
-      write_memory (sp, value_contents (args[i]), container_len);
+      write_memory (sp, args[i]->contents ().data (), container_len);
     }
 
   /* Initialize R0, R1, and R2 to the first 3 words of parameters.  */
@@ -597,7 +598,7 @@ bfin_sw_breakpoint_from_kind (struct gdb
 
   *size = kind;
 
-  if (strcmp (target_shortname, "sim") == 0)
+  if (strcmp (target_shortname (), "sim") == 0)
     return bfin_sim_breakpoint;
   else
     return bfin_breakpoint;
@@ -611,7 +612,7 @@ bfin_extract_return_value (struct type *
   struct gdbarch *gdbarch = regs->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   bfd_byte *valbuf = dst;
-  int len = TYPE_LENGTH (type);
+  int len = type->length ();
   ULONGEST tmp;
   int regno = BFIN_R0_REGNUM;
 
@@ -640,7 +641,7 @@ bfin_store_return_value (struct type *ty
      registers starting with R0.  This will always be a multiple of
      the register size.  */
 
-  int len = TYPE_LENGTH (type);
+  int len = type->length ();
   int regno = BFIN_R0_REGNUM;
 
   gdb_assert (len <= 8);
@@ -667,7 +668,7 @@ bfin_return_value (struct gdbarch *gdbar
 		   gdb_byte *readbuf,
 		   const gdb_byte *writebuf)
 {
-  if (TYPE_LENGTH (type) > 8)
+  if (type->length () > 8)
     return RETURN_VALUE_STRUCT_CONVENTION;
 
   if (readbuf)
@@ -695,8 +696,7 @@ bfin_pseudo_register_read (struct gdbarc
   enum register_status status;
 
   if (regnum != BFIN_CC_REGNUM)
-    internal_error (__FILE__, __LINE__,
-		    _("invalid register number %d"), regnum);
+    internal_error (_("invalid register number %d"), regnum);
 
   /* Extract the CC bit from the ASTAT register.  */
   status = regcache->raw_read (BFIN_ASTAT_REGNUM, buf);
@@ -715,8 +715,7 @@ bfin_pseudo_register_write (struct gdbar
   gdb_byte buf[BFIN_MAX_REGISTER_SIZE];
 
   if (regnum != BFIN_CC_REGNUM)
-    internal_error (__FILE__, __LINE__,
-		    _("invalid register number %d"), regnum);
+    internal_error (_("invalid register number %d"), regnum);
 
   /* Overlay the CC bit in the ASTAT register.  */
   regcache->raw_read (BFIN_ASTAT_REGNUM, buf);
@@ -725,7 +724,7 @@ bfin_pseudo_register_write (struct gdbar
 }
 
 static CORE_ADDR
-bfin_frame_base_address (struct frame_info *this_frame, void **this_cache)
+bfin_frame_base_address (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct bfin_frame_cache *cache = bfin_frame_cache (this_frame, this_cache);
 
@@ -733,7 +732,7 @@ bfin_frame_base_address (struct frame_in
 }
 
 static CORE_ADDR
-bfin_frame_local_address (struct frame_info *this_frame, void **this_cache)
+bfin_frame_local_address (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct bfin_frame_cache *cache = bfin_frame_cache (this_frame, this_cache);
 
@@ -741,7 +740,7 @@ bfin_frame_local_address (struct frame_i
 }
 
 static CORE_ADDR
-bfin_frame_args_address (struct frame_info *this_frame, void **this_cache)
+bfin_frame_args_address (const frame_info_ptr &this_frame, void **this_cache)
 {
   struct bfin_frame_cache *cache = bfin_frame_cache (this_frame, this_cache);
 
@@ -759,17 +758,18 @@ static const struct frame_base bfin_fram
 static CORE_ADDR
 bfin_frame_align (struct gdbarch *gdbarch, CORE_ADDR address)
 {
-  return (address & ~0x3);
+  return align_down (address, 4);
 }
 
 enum bfin_abi
 bfin_abi (struct gdbarch *gdbarch)
 {
-  return gdbarch_tdep (gdbarch)->bfin_abi;
+  bfin_gdbarch_tdep *tdep = gdbarch_tdep<bfin_gdbarch_tdep> (gdbarch);
+  return tdep->bfin_abi;
 }
 
 /* Initialize the current architecture based on INFO.  If possible,
-   re-use an architecture from ARCHES, which is a list of
+   reuse an architecture from ARCHES, which is a list of
    architectures already created during this debugging session.
 
    Called e.g. at program startup, when reading a core file, and when
@@ -778,8 +778,6 @@ bfin_abi (struct gdbarch *gdbarch)
 static struct gdbarch *
 bfin_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
-  struct gdbarch_tdep *tdep;
-  struct gdbarch *gdbarch;
   enum bfin_abi abi;
 
   abi = BFIN_ABI_FLAT;
@@ -790,19 +788,25 @@ bfin_gdbarch_init (struct gdbarch_info i
        arches != NULL;
        arches = gdbarch_list_lookup_by_info (arches->next, &info))
     {
-      if (gdbarch_tdep (arches->gdbarch)->bfin_abi != abi)
+      bfin_gdbarch_tdep *tdep
+	= gdbarch_tdep<bfin_gdbarch_tdep> (arches->gdbarch);
+
+      if (tdep->bfin_abi != abi)
 	continue;
+
       return arches->gdbarch;
     }
 
-  tdep = XCNEW (struct gdbarch_tdep);
-  gdbarch = gdbarch_alloc (&info, tdep);
+  gdbarch *gdbarch
+    = gdbarch_alloc (&info, gdbarch_tdep_up (new bfin_gdbarch_tdep));
+  bfin_gdbarch_tdep *tdep = gdbarch_tdep<bfin_gdbarch_tdep> (gdbarch);
 
   tdep->bfin_abi = abi;
 
   set_gdbarch_num_regs (gdbarch, BFIN_NUM_REGS);
   set_gdbarch_pseudo_register_read (gdbarch, bfin_pseudo_register_read);
-  set_gdbarch_pseudo_register_write (gdbarch, bfin_pseudo_register_write);
+  set_gdbarch_deprecated_pseudo_register_write (gdbarch,
+						bfin_pseudo_register_write);
   set_gdbarch_num_pseudo_regs (gdbarch, BFIN_NUM_PSEUDO_REGS);
   set_gdbarch_sp_regnum (gdbarch, BFIN_SP_REGNUM);
   set_gdbarch_pc_regnum (gdbarch, BFIN_PC_REGNUM);
@@ -833,8 +837,7 @@ bfin_gdbarch_init (struct gdbarch_info i
   return gdbarch;
 }
 
-void
-_initialize_bfin_tdep (void)
+INIT_GDB_FILE (bfin_tdep)
 {
-  register_gdbarch_init (bfd_arch_bfin, bfin_gdbarch_init);
+  gdbarch_register (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.20200303/gdb/bfin-tdep.h ./gdb/bfin-tdep.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bfin-tdep.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bfin-tdep.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    Contributed by Analog Devices, Inc.
 
@@ -19,8 +19,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/>.  */
 
-#ifndef BFIN_TDEP_H
-#define BFIN_TDEP_H
+#ifndef GDB_BFIN_TDEP_H
+#define GDB_BFIN_TDEP_H
+
+#include "gdbarch.h"
 
 enum gdb_regnum {
   /* Core Registers */
@@ -94,13 +96,13 @@ enum bfin_abi
 };
 
 /* Target-dependent structure in gdbarch.  */
-struct gdbarch_tdep
+struct bfin_gdbarch_tdep : gdbarch_tdep_base
 {
   /* Which ABI is in use?  */
-  enum bfin_abi bfin_abi;
+  enum bfin_abi bfin_abi {};
 };
 
 /* Return the Blackfin ABI associated with GDBARCH.  */
 extern enum bfin_abi bfin_abi (struct gdbarch *gdbarch);
 
-#endif /* BFIN_TDEP_H */
+#endif /* GDB_BFIN_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.20200303/gdb/block.c ./gdb/block.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/block.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/block.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,114 +17,105 @@
    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 "block.h"
 #include "symtab.h"
 #include "symfile.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
 #include "cp-support.h"
 #include "addrmap.h"
 #include "gdbtypes.h"
 #include "objfiles.h"
+#include "cli/cli-cmds.h"
+#include "inferior.h"
 
 /* This is used by struct block to store namespace-related info for
    C++ files, namely using declarations and the current namespace in
    scope.  */
 
-struct block_namespace_info : public allocate_on_obstack
+struct block_namespace_info : public allocate_on_obstack<block_namespace_info>
 {
   const char *scope = nullptr;
   struct using_direct *using_decl = nullptr;
 };
 
-static void block_initialize_namespace (struct block *block,
-					struct obstack *obstack);
-
 /* See block.h.  */
 
 struct objfile *
-block_objfile (const struct block *block)
+block::objfile () const
 {
-  const struct global_block *global_block;
-
-  if (BLOCK_FUNCTION (block) != NULL)
-    return symbol_objfile (BLOCK_FUNCTION (block));
+  if (function () != nullptr)
+    return function ()->objfile ();
 
-  global_block = (struct global_block *) block_global_block (block);
-  return COMPUNIT_OBJFILE (global_block->compunit_symtab);
+  return this->global_block ()->compunit ()->objfile ();
 }
 
 /* See block.  */
 
 struct gdbarch *
-block_gdbarch (const struct block *block)
+block::gdbarch () const
 {
-  if (BLOCK_FUNCTION (block) != NULL)
-    return symbol_arch (BLOCK_FUNCTION (block));
+  if (function () != nullptr)
+    return function ()->arch ();
 
-  return get_objfile_arch (block_objfile (block));
+  return objfile ()->arch ();
 }
 
 /* See block.h.  */
 
 bool
-contained_in (const struct block *a, const struct block *b,
-	      bool allow_nested)
+block::contains (const struct block *a, bool allow_nested) const
 {
-  if (!a || !b)
+  if (a == nullptr)
     return false;
 
   do
     {
-      if (a == b)
+      if (a == this)
 	return true;
       /* If A is a function block, then A cannot be contained in B,
-         except if A was inlined.  */
-      if (!allow_nested && BLOCK_FUNCTION (a) != NULL && !block_inlined_p (a))
-        return false;
-      a = BLOCK_SUPERBLOCK (a);
+	 except if A was inlined.  */
+      if (!allow_nested && a->function () != NULL && !a->inlined_p ())
+	return false;
+      a = a->superblock ();
     }
   while (a != NULL);
 
   return false;
 }
 
-
-/* Return the symbol for the function which contains a specified
-   lexical block, described by a struct block BL.  The return value
-   will not be an inlined function; the containing function will be
-   returned instead.  */
+/* See block.h.  */
 
 struct symbol *
-block_linkage_function (const struct block *bl)
+block::linkage_function () const
 {
-  while ((BLOCK_FUNCTION (bl) == NULL || block_inlined_p (bl))
-	 && BLOCK_SUPERBLOCK (bl) != NULL)
-    bl = BLOCK_SUPERBLOCK (bl);
+  const block *bl = this;
+
+  while ((bl->function () == NULL || bl->inlined_p ())
+	 && bl->superblock () != NULL)
+    bl = bl->superblock ();
 
-  return BLOCK_FUNCTION (bl);
+  return bl->function ();
 }
 
-/* Return the symbol for the function which contains a specified
-   block, described by a struct block BL.  The return value will be
-   the closest enclosing function, which might be an inline
-   function.  */
+/* See block.h.  */
 
 struct symbol *
-block_containing_function (const struct block *bl)
+block::containing_function () const
 {
-  while (BLOCK_FUNCTION (bl) == NULL && BLOCK_SUPERBLOCK (bl) != NULL)
-    bl = BLOCK_SUPERBLOCK (bl);
+  const block *bl = this;
 
-  return BLOCK_FUNCTION (bl);
+  while (bl->function () == NULL && bl->superblock () != NULL)
+    bl = bl->superblock ();
+
+  return bl->function ();
 }
 
-/* Return one if BL represents an inlined function.  */
+/* See block.h.  */
 
-int
-block_inlined_p (const struct block *bl)
+bool
+block::inlined_p () const
 {
-  return BLOCK_FUNCTION (bl) != NULL && SYMBOL_INLINED (BLOCK_FUNCTION (bl));
+  return function () != nullptr && function ()->is_inlined ();
 }
 
 /* A helper function that checks whether PC is in the blockvector BL.
@@ -138,8 +129,8 @@ find_block_in_blockvector (const struct
 
   /* If we have an addrmap mapping code addresses to blocks, then use
      that.  */
-  if (BLOCKVECTOR_MAP (bl))
-    return (const struct block *) addrmap_find (BLOCKVECTOR_MAP (bl), pc);
+  if (bl->map ())
+    return (const struct block *) bl->map ()->find (pc);
 
   /* Otherwise, use binary search to find the last block that starts
      before PC.
@@ -147,15 +138,15 @@ find_block_in_blockvector (const struct
      They both have the same START,END values.
      Historically this code would choose STATIC_BLOCK over GLOBAL_BLOCK but the
      fact that this choice was made was subtle, now we make it explicit.  */
-  gdb_assert (BLOCKVECTOR_NBLOCKS (bl) >= 2);
+  gdb_assert (bl->blocks ().size () >= 2);
   bot = STATIC_BLOCK;
-  top = BLOCKVECTOR_NBLOCKS (bl);
+  top = bl->blocks ().size ();
 
   while (top - bot > 1)
     {
       half = (top - bot + 1) >> 1;
-      b = BLOCKVECTOR_BLOCK (bl, bot + half);
-      if (BLOCK_START (b) <= pc)
+      b = bl->block (bot + half);
+      if (b->start () <= pc)
 	bot += half;
       else
 	top = bot + half;
@@ -165,8 +156,10 @@ find_block_in_blockvector (const struct
 
   while (bot >= STATIC_BLOCK)
     {
-      b = BLOCKVECTOR_BLOCK (bl, bot);
-      if (BLOCK_END (b) > pc)
+      b = bl->block (bot);
+      if (!(b->start () <= pc))
+	return NULL;
+      if (b->end () > pc)
 	return b;
       bot--;
     }
@@ -195,7 +188,7 @@ blockvector_for_pc_sect (CORE_ADDR pc, s
 	return 0;
     }
 
-  bl = COMPUNIT_BLOCKVECTOR (cust);
+  bl = cust->blockvector ();
 
   /* Then search that symtab for the smallest block that wins.  */
   b = find_block_in_blockvector (bl, pc);
@@ -223,17 +216,17 @@ struct call_site *
 call_site_for_pc (struct gdbarch *gdbarch, CORE_ADDR pc)
 {
   struct compunit_symtab *cust;
-  void **slot = NULL;
+  call_site *cs = nullptr;
 
   /* -1 as tail call PC can be already after the compilation unit range.  */
   cust = find_pc_compunit_symtab (pc - 1);
 
-  if (cust != NULL && COMPUNIT_CALL_SITE_HTAB (cust) != NULL)
-    slot = htab_find_slot (COMPUNIT_CALL_SITE_HTAB (cust), &pc, NO_INSERT);
+  if (cust != nullptr)
+    cs = cust->find_call_site (pc);
 
-  if (slot == NULL)
+  if (cs == nullptr)
     {
-      struct bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (pc);
+      bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (pc);
 
       /* DW_TAG_gnu_call_site will be missing just if GCC could not determine
 	 the call target.  */
@@ -245,7 +238,7 @@ call_site_for_pc (struct gdbarch *gdbarc
 		    : msym.minsym->print_name ()));
     }
 
-  return (struct call_site *) *slot;
+  return cs;
 }
 
 /* Return the blockvector immediately containing the innermost lexical block
@@ -286,204 +279,179 @@ block_for_pc (CORE_ADDR pc)
 /* Now come some functions designed to deal with C++ namespace issues.
    The accessors are safe to use even in the non-C++ case.  */
 
-/* This returns the namespace that BLOCK is enclosed in, or "" if it
-   isn't enclosed in a namespace at all.  This travels the chain of
-   superblocks looking for a scope, if necessary.  */
+/* See block.h.  */
 
 const char *
-block_scope (const struct block *block)
+block::scope () const
 {
-  for (; block != NULL; block = BLOCK_SUPERBLOCK (block))
-    {
-      if (BLOCK_NAMESPACE (block) != NULL
-	  && BLOCK_NAMESPACE (block)->scope != NULL)
-	return BLOCK_NAMESPACE (block)->scope;
+  for (const block *block = this;
+       block != nullptr;
+       block = block->superblock ())
+    {
+      if (block->m_namespace_info != nullptr
+	  && block->m_namespace_info->scope != nullptr)
+	return block->m_namespace_info->scope;
     }
 
   return "";
 }
 
-/* Set BLOCK's scope member to SCOPE; if needed, allocate memory via
-   OBSTACK.  (It won't make a copy of SCOPE, however, so that already
-   has to be allocated correctly.)  */
+/* See block.h.  */
 
 void
-block_set_scope (struct block *block, const char *scope,
-		 struct obstack *obstack)
+block::initialize_namespace (struct obstack *obstack)
 {
-  block_initialize_namespace (block, obstack);
-
-  BLOCK_NAMESPACE (block)->scope = scope;
+  if (m_namespace_info == nullptr)
+    m_namespace_info = new (obstack) struct block_namespace_info;
 }
 
-/* This returns the using directives list associated with BLOCK, if
-   any.  */
+/* See block.h.  */
 
-struct using_direct *
-block_using (const struct block *block)
+void
+block::set_scope (const char *scope, struct obstack *obstack)
 {
-  if (block == NULL || BLOCK_NAMESPACE (block) == NULL)
-    return NULL;
-  else
-    return BLOCK_NAMESPACE (block)->using_decl;
+  if (scope == nullptr || scope[0] == '\0')
+    {
+      /* Don't bother.  */
+      return;
+    }
+
+  initialize_namespace (obstack);
+  m_namespace_info->scope = scope;
 }
 
-/* Set BLOCK's using member to USING; if needed, allocate memory via
-   OBSTACK.  (It won't make a copy of USING, however, so that already
-   has to be allocated correctly.)  */
+/* See block.h.  */
 
-void
-block_set_using (struct block *block,
-		 struct using_direct *using_decl,
-		 struct obstack *obstack)
+next_range<using_direct>
+block::get_using () const
 {
-  block_initialize_namespace (block, obstack);
-
-  BLOCK_NAMESPACE (block)->using_decl = using_decl;
+  if (m_namespace_info == nullptr)
+    return {};
+  else
+    return next_range<using_direct> (m_namespace_info->using_decl);
 }
 
-/* If BLOCK_NAMESPACE (block) is NULL, allocate it via OBSTACK and
-   initialize its members to zero.  */
+/* See block.h.  */
 
-static void
-block_initialize_namespace (struct block *block, struct obstack *obstack)
+void
+block::set_using (struct using_direct *using_decl, struct obstack *obstack)
 {
-  if (BLOCK_NAMESPACE (block) == NULL)
-    BLOCK_NAMESPACE (block) = new (obstack) struct block_namespace_info ();
+  if (using_decl == nullptr)
+    {
+      /* Don't bother.  */
+      return;
+    }
+
+  initialize_namespace (obstack);
+  m_namespace_info->using_decl = using_decl;
 }
 
-/* Return the static block associated to BLOCK.  Return NULL if block
-   is NULL or if block is a global block.  */
+/* See block.h.  */
 
 const struct block *
-block_static_block (const struct block *block)
+block::static_block () const
 {
-  if (block == NULL || BLOCK_SUPERBLOCK (block) == NULL)
-    return NULL;
+  if (superblock () == nullptr)
+    return nullptr;
 
-  while (BLOCK_SUPERBLOCK (BLOCK_SUPERBLOCK (block)) != NULL)
-    block = BLOCK_SUPERBLOCK (block);
+  const block *block = this;
+  while (block->superblock ()->superblock () != NULL)
+    block = block->superblock ();
 
   return block;
 }
 
-/* Return the static block associated to BLOCK.  Return NULL if block
-   is NULL.  */
+/* See block.h.  */
 
-const struct block *
-block_global_block (const struct block *block)
+const struct global_block *
+block::global_block () const
 {
-  if (block == NULL)
-    return NULL;
+  const block *block = this;
 
-  while (BLOCK_SUPERBLOCK (block) != NULL)
-    block = BLOCK_SUPERBLOCK (block);
+  while (block->superblock () != NULL)
+    block = block->superblock ();
 
-  return block;
+  return block->as_global_block ();
 }
 
-/* Allocate a block on OBSTACK, and initialize its elements to
-   zero/NULL.  This is useful for creating "dummy" blocks that don't
-   correspond to actual source files.
-
-   Warning: it sets the block's BLOCK_MULTIDICT to NULL, which isn't a
-   valid value.  If you really don't want the block to have a
-   dictionary, then you should subsequently set its BLOCK_MULTIDICT to
-   dict_create_linear (obstack, NULL).  */
+/* See block.h.  */
 
-struct block *
-allocate_block (struct obstack *obstack)
+struct global_block *
+block::as_global_block ()
 {
-  struct block *bl = OBSTACK_ZALLOC (obstack, struct block);
+  gdb_assert (this->is_global_block ());
 
-  return bl;
+  return static_cast<struct global_block *>(this);
 }
 
-/* Allocate a global block.  */
+/* See block.h.  */
 
-struct block *
-allocate_global_block (struct obstack *obstack)
+const struct global_block *
+block::as_global_block () const
 {
-  struct global_block *bl = OBSTACK_ZALLOC (obstack, struct global_block);
+  gdb_assert (this->is_global_block ());
 
-  return &bl->block;
+  return static_cast<const struct global_block *>(this);
 }
 
-/* Set the compunit of the global block.  */
+/* See block.h.  */
 
-void
-set_block_compunit_symtab (struct block *block, struct compunit_symtab *cu)
+const struct block *
+block::function_block () const
 {
-  struct global_block *gb;
+  const block *block = this;
+
+  while (block != nullptr && block->function () == nullptr)
+    block = block->superblock ();
 
-  gdb_assert (BLOCK_SUPERBLOCK (block) == NULL);
-  gb = (struct global_block *) block;
-  gdb_assert (gb->compunit_symtab == NULL);
-  gb->compunit_symtab = cu;
+  return block;
 }
 
 /* See block.h.  */
 
 struct dynamic_prop *
-block_static_link (const struct block *block)
+block::static_link () const
 {
-  struct objfile *objfile = block_objfile (block);
+  struct objfile *objfile = this->objfile ();
 
   /* Only objfile-owned blocks that materialize top function scopes can have
      static links.  */
-  if (objfile == NULL || BLOCK_FUNCTION (block) == NULL)
+  if (objfile == NULL || function () == NULL)
     return NULL;
 
-  return (struct dynamic_prop *) objfile_lookup_static_link (objfile, block);
+  return (struct dynamic_prop *) objfile_lookup_static_link (objfile, this);
 }
 
-/* Return the compunit of the global block.  */
-
-static struct compunit_symtab *
-get_block_compunit_symtab (const struct block *block)
-{
-  struct global_block *gb;
-
-  gdb_assert (BLOCK_SUPERBLOCK (block) == NULL);
-  gb = (struct global_block *) block;
-  gdb_assert (gb->compunit_symtab != NULL);
-  return gb->compunit_symtab;
-}
-
-
-
 /* Initialize a block iterator, either to iterate over a single block,
    or, for static and global blocks, all the included symtabs as
    well.  */
 
 static void
 initialize_block_iterator (const struct block *block,
-			   struct block_iterator *iter)
+			   struct block_iterator *iter,
+			   const lookup_name_info *name)
 {
   enum block_enum which;
-  struct compunit_symtab *cu;
 
   iter->idx = -1;
+  iter->name = name;
 
-  if (BLOCK_SUPERBLOCK (block) == NULL)
-    {
-      which = GLOBAL_BLOCK;
-      cu = get_block_compunit_symtab (block);
-    }
-  else if (BLOCK_SUPERBLOCK (BLOCK_SUPERBLOCK (block)) == NULL)
-    {
-      which = STATIC_BLOCK;
-      cu = get_block_compunit_symtab (BLOCK_SUPERBLOCK (block));
-    }
+  if (block->is_global_block ())
+    which = GLOBAL_BLOCK;
+  else if (block->is_static_block ())
+    which = STATIC_BLOCK;
   else
     {
       iter->d.block = block;
+
       /* A signal value meaning that we're iterating over a single
 	 block.  */
       iter->which = FIRST_LOCAL_BLOCK;
       return;
     }
 
+  compunit_symtab *cu = block->global_block ()->compunit ();
+
   /* If this is an included symtab, find the canonical includer and
      use it instead.  */
   while (cu->user != NULL)
@@ -541,9 +509,8 @@ block_iterator_step (struct block_iterat
 	  if (cust == NULL)
 	    return  NULL;
 
-	  block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust),
-				     iterator->which);
-	  sym = mdict_iterator_first (BLOCK_MULTIDICT (block),
+	  block = cust->blockvector ()->block (iterator->which);
+	  sym = mdict_iterator_first (block->multidict (),
 				      &iterator->mdict_iter);
 	}
       else
@@ -560,38 +527,12 @@ block_iterator_step (struct block_iterat
     }
 }
 
-/* See block.h.  */
-
-struct symbol *
-block_iterator_first (const struct block *block,
-		      struct block_iterator *iterator)
-{
-  initialize_block_iterator (block, iterator);
-
-  if (iterator->which == FIRST_LOCAL_BLOCK)
-    return mdict_iterator_first (block->multidict, &iterator->mdict_iter);
-
-  return block_iterator_step (iterator, 1);
-}
-
-/* See block.h.  */
-
-struct symbol *
-block_iterator_next (struct block_iterator *iterator)
-{
-  if (iterator->which == FIRST_LOCAL_BLOCK)
-    return mdict_iterator_next (&iterator->mdict_iter);
-
-  return block_iterator_step (iterator, 0);
-}
-
 /* Perform a single step for a "match" block iterator, iterating
    across symbol tables as needed.  Returns the next symbol, or NULL
    when iteration is complete.  */
 
 static struct symbol *
 block_iter_match_step (struct block_iterator *iterator,
-		       const lookup_name_info &name,
 		       int first)
 {
   struct symbol *sym;
@@ -610,13 +551,12 @@ block_iter_match_step (struct block_iter
 	  if (cust == NULL)
 	    return  NULL;
 
-	  block = BLOCKVECTOR_BLOCK (COMPUNIT_BLOCKVECTOR (cust),
-				     iterator->which);
-	  sym = mdict_iter_match_first (BLOCK_MULTIDICT (block), name,
+	  block = cust->blockvector ()->block (iterator->which);
+	  sym = mdict_iter_match_first (block->multidict (), *iterator->name,
 					&iterator->mdict_iter);
 	}
       else
-	sym = mdict_iter_match_next (name, &iterator->mdict_iter);
+	sym = mdict_iter_match_next (*iterator->name, &iterator->mdict_iter);
 
       if (sym != NULL)
 	return sym;
@@ -632,63 +572,82 @@ block_iter_match_step (struct block_iter
 /* See block.h.  */
 
 struct symbol *
-block_iter_match_first (const struct block *block,
-			const lookup_name_info &name,
-			struct block_iterator *iterator)
+block_iterator_first (const struct block *block,
+		      struct block_iterator *iterator,
+		      const lookup_name_info *name)
 {
-  initialize_block_iterator (block, iterator);
+  initialize_block_iterator (block, iterator, name);
+
+  if (name == nullptr)
+    {
+      if (iterator->which == FIRST_LOCAL_BLOCK)
+	return mdict_iterator_first (block->multidict (),
+				     &iterator->mdict_iter);
+
+      return block_iterator_step (iterator, 1);
+    }
 
   if (iterator->which == FIRST_LOCAL_BLOCK)
-    return mdict_iter_match_first (block->multidict, name,
+    return mdict_iter_match_first (block->multidict (), *name,
 				   &iterator->mdict_iter);
 
-  return block_iter_match_step (iterator, name, 1);
+  return block_iter_match_step (iterator, 1);
 }
 
 /* See block.h.  */
 
 struct symbol *
-block_iter_match_next (const lookup_name_info &name,
-		       struct block_iterator *iterator)
+block_iterator_next (struct block_iterator *iterator)
 {
+  if (iterator->name == nullptr)
+    {
+      if (iterator->which == FIRST_LOCAL_BLOCK)
+	return mdict_iterator_next (&iterator->mdict_iter);
+
+      return block_iterator_step (iterator, 0);
+    }
+
   if (iterator->which == FIRST_LOCAL_BLOCK)
-    return mdict_iter_match_next (name, &iterator->mdict_iter);
+    return mdict_iter_match_next (*iterator->name, &iterator->mdict_iter);
 
-  return block_iter_match_step (iterator, name, 0);
+  return block_iter_match_step (iterator, 0);
 }
 
-/* Return true if symbol A is the best match possible for DOMAIN.  */
+/* See block.h.  */
 
-static bool
-best_symbol (struct symbol *a, const domain_enum domain)
+bool
+best_symbol (struct symbol *a, const domain_search_flags domain)
 {
-  return (SYMBOL_DOMAIN (a) == domain
-	  && SYMBOL_CLASS (a) != LOC_UNRESOLVED);
+  if (a->loc_class () == LOC_UNRESOLVED)
+    return false;
+
+  if ((domain & SEARCH_VAR_DOMAIN) != 0)
+    return a->domain () == VAR_DOMAIN;
+
+  return a->matches (domain);
 }
 
-/* Return symbol B if it is a better match than symbol A for DOMAIN.
-   Otherwise return A.  */
+/* See block.h.  */
 
-static struct symbol *
-better_symbol (struct symbol *a, struct symbol *b, const domain_enum domain)
+struct symbol *
+better_symbol (struct symbol *a, struct symbol *b,
+	       const domain_search_flags domain)
 {
   if (a == NULL)
     return b;
   if (b == NULL)
     return a;
 
-  if (SYMBOL_DOMAIN (a) == domain
-      && SYMBOL_DOMAIN (b) != domain)
+  if (a->matches (domain) && !b->matches (domain))
     return a;
-  if (SYMBOL_DOMAIN (b) == domain
-      && SYMBOL_DOMAIN (a) != domain)
+
+  if (b->matches (domain) && !a->matches (domain))
     return b;
 
-  if (SYMBOL_CLASS (a) != LOC_UNRESOLVED
-      && SYMBOL_CLASS (b) == LOC_UNRESOLVED)
+  if (a->loc_class () != LOC_UNRESOLVED && b->loc_class () == LOC_UNRESOLVED)
     return a;
-  if (SYMBOL_CLASS (b) != LOC_UNRESOLVED
-      && SYMBOL_CLASS (a) == LOC_UNRESOLVED)
+
+  if (b->loc_class () != LOC_UNRESOLVED && a->loc_class () == LOC_UNRESOLVED)
     return b;
 
   return a;
@@ -706,20 +665,14 @@ better_symbol (struct symbol *a, struct
    non-encoded names tested for a match.  */
 
 struct symbol *
-block_lookup_symbol (const struct block *block, const char *name,
-		     symbol_name_match_type match_type,
-		     const domain_enum domain)
+block_lookup_symbol (const struct block *block, const lookup_name_info &name,
+		     const domain_search_flags domain)
 {
-  struct block_iterator iter;
-  struct symbol *sym;
-
-  lookup_name_info lookup_name (name, match_type);
-
-  if (!BLOCK_FUNCTION (block))
+  if (!block->function ())
     {
       struct symbol *other = NULL;
 
-      ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
+      for (struct symbol *sym : block_iterator_range (block, &name))
 	{
 	  /* See comment related to PR gcc/debug/91507 in
 	     block_lookup_symbol_primary.  */
@@ -729,8 +682,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),
-				     SYMBOL_DOMAIN (sym), domain))
+	  if (sym->matches (domain))
 	    other = better_symbol (other, sym, domain);
 	}
       return other;
@@ -748,13 +700,12 @@ block_lookup_symbol (const struct block
 
       struct symbol *sym_found = NULL;
 
-      ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
+      for (struct symbol *sym : block_iterator_range (block, &name))
 	{
-	  if (symbol_matches_domain (SYMBOL_LANGUAGE (sym),
-				     SYMBOL_DOMAIN (sym), domain))
+	  if (sym->matches (domain))
 	    {
 	      sym_found = sym;
-	      if (!SYMBOL_IS_ARGUMENT (sym))
+	      if (!sym->is_argument ())
 		{
 		  break;
 		}
@@ -768,7 +719,7 @@ block_lookup_symbol (const struct block
 
 struct symbol *
 block_lookup_symbol_primary (const struct block *block, const char *name,
-			     const domain_enum domain)
+			     const domain_search_flags domain)
 {
   struct symbol *sym, *other;
   struct mdict_iterator mdict_iter;
@@ -776,12 +727,12 @@ block_lookup_symbol_primary (const struc
   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
 
   /* Verify BLOCK is STATIC_BLOCK or GLOBAL_BLOCK.  */
-  gdb_assert (BLOCK_SUPERBLOCK (block) == NULL
-	      || BLOCK_SUPERBLOCK (BLOCK_SUPERBLOCK (block)) == NULL);
+  gdb_assert (block->superblock () == NULL
+	      || block->superblock ()->superblock () == NULL);
 
   other = NULL;
-  for (sym
-	 = mdict_iter_match_first (block->multidict, lookup_name, &mdict_iter);
+  for (sym = mdict_iter_match_first (block->multidict (), lookup_name,
+				     &mdict_iter);
        sym != NULL;
        sym = mdict_iter_match_next (lookup_name, &mdict_iter))
     {
@@ -815,12 +766,11 @@ block_lookup_symbol_primary (const struc
       if (best_symbol (sym, domain))
 	return sym;
 
-      /* This is a bit of a hack, but symbol_matches_domain might ignore
+      /* This is a bit of a hack, but 'matches' might ignore
 	 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 (sym->matches (domain))
 	other = better_symbol (other, sym, domain);
     }
 
@@ -830,64 +780,39 @@ block_lookup_symbol_primary (const struc
 /* See block.h.  */
 
 struct symbol *
-block_find_symbol (const struct block *block, const char *name,
-		   const domain_enum domain,
-		   block_symbol_matcher_ftype *matcher, void *data)
+block_find_symbol (const struct block *block, const lookup_name_info &name,
+		   const domain_search_flags domain, struct symbol **stub)
 {
-  struct block_iterator iter;
-  struct symbol *sym;
-
-  lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
-
   /* Verify BLOCK is STATIC_BLOCK or GLOBAL_BLOCK.  */
-  gdb_assert (BLOCK_SUPERBLOCK (block) == NULL
-	      || BLOCK_SUPERBLOCK (BLOCK_SUPERBLOCK (block)) == NULL);
+  gdb_assert (block->superblock () == NULL
+	      || block->superblock ()->superblock () == NULL);
 
-  ALL_BLOCK_SYMBOLS_WITH_NAME (block, lookup_name, iter, sym)
+  for (struct symbol *sym : block_iterator_range (block, &name))
     {
-      /* 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)
-	  && matcher (sym, data))
-	return sym;
-    }
-  return NULL;
-}
-
-/* See block.h.  */
+      if (!sym->matches (domain))
+	continue;
 
-int
-block_find_non_opaque_type (struct symbol *sym, void *data)
-{
-  return !TYPE_IS_OPAQUE (SYMBOL_TYPE (sym));
-}
-
-/* See block.h.  */
-
-int
-block_find_non_opaque_type_preferred (struct symbol *sym, void *data)
-{
-  struct symbol **best = (struct symbol **) data;
+      if (!TYPE_IS_OPAQUE (sym->type ()))
+	return sym;
 
-  if (!TYPE_IS_OPAQUE (SYMBOL_TYPE (sym)))
-    return 1;
-  *best = sym;
-  return 0;
+      if (stub != nullptr)
+	*stub = sym;
+    }
+  return nullptr;
 }
 
 /* See block.h.  */
 
 struct blockranges *
 make_blockranges (struct objfile *objfile,
-                  const std::vector<blockrange> &rangevec)
+		  const std::vector<blockrange> &rangevec)
 {
   struct blockranges *blr;
   size_t n = rangevec.size();
 
   blr = (struct blockranges *)
     obstack_alloc (&objfile->objfile_obstack,
-                   sizeof (struct blockranges)
+		   sizeof (struct blockranges)
 		   + (n - 1) * sizeof (struct blockrange));
 
   blr->nranges = n;
@@ -896,3 +821,122 @@ make_blockranges (struct objfile *objfil
   return blr;
 }
 
+/* Implement 'maint info blocks' command.  If passed an argument then
+   print a list of all blocks at the given address.  With no arguments
+   then list all blocks at the current address of the current inferior.  */
+
+static void
+maintenance_info_blocks (const char *arg, int from_tty)
+{
+  CORE_ADDR address;
+
+  /* With no argument use the program counter of the current thread.  If
+     there is an argument then use this as the address to examine.  */
+  if (arg == nullptr)
+    {
+      if (inferior_ptid == null_ptid)
+	error (_("no inferior thread"));
+
+      struct regcache *regcache = get_thread_regcache (inferior_thread ());
+      address = regcache_read_pc (regcache);
+    }
+  else
+    address = parse_and_eval_address (arg);
+
+  /* Find the inner most block for ADDRESS.  */
+  const struct block *cur_block = block_for_pc (address);
+  if (cur_block == nullptr)
+    {
+      gdb_printf (_("No blocks at %s\n"), core_addr_to_string_nz (address));
+      return;
+    }
+
+  gdb_printf (_("Blocks at %s:\n"), core_addr_to_string_nz (address));
+
+  const struct objfile *toplevel_objfile = cur_block->objfile ();
+  if (toplevel_objfile != nullptr)
+    gdb_printf (_("  from objfile: [(objfile *) %s] %s\n"),
+		host_address_to_string (toplevel_objfile),
+		objfile_name (toplevel_objfile));
+
+  gdb_printf ("\n");
+
+  /* List the blocks backwards; global block (widest scope) first, down to
+     the smallest scoped block last.  To do this we need to build the list
+     of blocks starting from the inner block, then print that list
+     backwards.  */
+  std::vector<const struct block *> blocks;
+  while (cur_block != nullptr)
+    {
+      blocks.emplace_back (cur_block);
+      cur_block = cur_block->superblock ();
+    }
+
+  for (auto it = blocks.rbegin (); it != blocks.rend (); ++it)
+    {
+      cur_block = *it;
+
+      gdb_assert (cur_block->objfile () == toplevel_objfile);
+
+      gdb_printf (_("[(block *) %s] %s..%s\n"),
+		  host_address_to_string (cur_block),
+		  core_addr_to_string_nz (cur_block->start ()),
+		  core_addr_to_string_nz (cur_block->end ()));
+      gdb_printf (_("  entry pc: %s\n"),
+		  core_addr_to_string_nz (cur_block->entry_pc ()));
+
+      if (cur_block->is_static_block ())
+	gdb_printf (_("  is static block\n"));
+
+      if (cur_block->is_global_block ())
+	gdb_printf (_("  is global block\n"));
+
+      if (cur_block->function () != nullptr)
+	{
+	  if (cur_block->inlined_p ())
+	    gdb_printf (_("  inline function: %s\n"),
+			cur_block->function ()->print_name ());
+	  else
+	    gdb_printf (_("  function: %s\n"),
+			cur_block->function ()->print_name ());
+	}
+
+      if (cur_block->scope () != nullptr
+	  && *cur_block->scope () != '\0')
+	gdb_printf (_("  scope: %s\n"), cur_block->scope ());
+
+      if (int symbol_count = mdict_size (cur_block->multidict ());
+	  symbol_count > 0)
+	gdb_printf (_("  symbol count: %d\n"), symbol_count);
+
+      if (cur_block->is_contiguous ())
+	gdb_printf (_("  is contiguous\n"));
+      else
+	{
+	  gdb_printf (_("  address ranges:\n"));
+	  for (const blockrange &rng : cur_block->ranges ())
+	    gdb_printf (_("    %s..%s\n"),
+			core_addr_to_string_nz (rng.start ()),
+			core_addr_to_string_nz (rng.end ()));
+	}
+    }
+}
+
+
+
+INIT_GDB_FILE (block)
+{
+  add_cmd ("blocks", class_maintenance, maintenance_info_blocks,
+	   _("\
+Display block information for current thread.\n\
+\n\
+Usage:\n\
+\n\
+  maintenance info blocks [ADDRESS]\n\
+\n\
+With no ADDRESS show all blocks at the current address, starting with the\n\
+global block and working down to the inner most block.\n\
+\n\
+When ADDRESS is given, list the blocks at ADDRESS."),
+	   &maintenanceinfolist);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/blockframe.c ./gdb/blockframe.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/blockframe.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/blockframe.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,7 +18,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/>.  */
 
-#include "defs.h"
 #include "symtab.h"
 #include "bfd.h"
 #include "objfiles.h"
@@ -31,7 +30,7 @@
 #include "regcache.h"
 #include "dummy-frame.h"
 #include "command.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "block.h"
 #include "inline-frame.h"
 
@@ -52,7 +51,7 @@
    slot instruction.  */
 
 const struct block *
-get_frame_block (struct frame_info *frame, CORE_ADDR *addr_in_block)
+get_frame_block (const frame_info_ptr &frame, CORE_ADDR *addr_in_block)
 {
   CORE_ADDR pc;
   const struct block *bl;
@@ -72,10 +71,10 @@ get_frame_block (struct frame_info *fram
 
   while (inline_count > 0)
     {
-      if (block_inlined_p (bl))
+      if (bl->inlined_p ())
 	inline_count--;
 
-      bl = BLOCK_SUPERBLOCK (bl);
+      bl = bl->superblock ();
       gdb_assert (bl != NULL);
     }
 
@@ -86,24 +85,23 @@ CORE_ADDR
 get_pc_function_start (CORE_ADDR pc)
 {
   const struct block *bl;
-  struct bound_minimal_symbol msymbol;
 
   bl = block_for_pc (pc);
   if (bl)
     {
-      struct symbol *symbol = block_linkage_function (bl);
+      struct symbol *symbol = bl->linkage_function ();
 
       if (symbol)
 	{
-	  bl = SYMBOL_BLOCK_VALUE (symbol);
-	  return BLOCK_ENTRY_PC (bl);
+	  bl = symbol->value_block ();
+	  return bl->entry_pc ();
 	}
     }
 
-  msymbol = lookup_minimal_symbol_by_pc (pc);
+  bound_minimal_symbol msymbol = lookup_minimal_symbol_by_pc (pc);
   if (msymbol.minsym)
     {
-      CORE_ADDR fstart = BMSYMBOL_VALUE_ADDRESS (msymbol);
+      CORE_ADDR fstart = msymbol.value_address ();
 
       if (find_pc_section (fstart))
 	return fstart;
@@ -115,17 +113,17 @@ get_pc_function_start (CORE_ADDR pc)
 /* Return the symbol for the function executing in frame FRAME.  */
 
 struct symbol *
-get_frame_function (struct frame_info *frame)
+get_frame_function (const frame_info_ptr &frame)
 {
   const struct block *bl = get_frame_block (frame, 0);
 
   if (bl == NULL)
     return NULL;
 
-  while (BLOCK_FUNCTION (bl) == NULL && BLOCK_SUPERBLOCK (bl) != NULL)
-    bl = BLOCK_SUPERBLOCK (bl);
+  while (bl->function () == NULL && bl->superblock () != NULL)
+    bl = bl->superblock ();
 
-  return BLOCK_FUNCTION (bl);
+  return bl->function ();
 }
 
 
@@ -139,7 +137,7 @@ find_pc_sect_function (CORE_ADDR pc, str
 
   if (b == 0)
     return 0;
-  return block_linkage_function (b);
+  return b->linkage_function ();
 }
 
 /* Return the function containing pc value PC.
@@ -162,7 +160,7 @@ find_pc_sect_containing_function (CORE_A
   if (bl == nullptr)
     return nullptr;
 
-  return block_containing_function (bl);
+  return bl->containing_function ();
 }
 
 /* These variables are used to cache the most recent result of
@@ -191,7 +189,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 +200,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,14 +208,16 @@ 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;
-  struct bound_minimal_symbol msymbol;
   struct compunit_symtab *compunit_symtab = NULL;
   CORE_ADDR mapped_pc;
+  bound_minimal_symbol msymbol;
 
   /* To ensure that the symbol returned belongs to the correct section
      (and that the last [random] symbol from the previous section
@@ -236,19 +236,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)
     {
@@ -264,12 +252,12 @@ find_pc_partial_function (CORE_ADDR pc,
       f = find_pc_sect_function (mapped_pc, section);
       if (f != NULL
 	  && (msymbol.minsym == NULL
-	      || (BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (f))
-		  >= BMSYMBOL_VALUE_ADDRESS (msymbol))))
+	      || (f->value_block ()->entry_pc ()
+		  >= msymbol.value_address ())))
 	{
-	  const struct block *b = SYMBOL_BLOCK_VALUE (f);
+	  const struct block *b = f->value_block ();
 
-	  cache_pc_function_name = f->linkage_name ();
+	  cache_pc_function_sym = f;
 	  cache_pc_function_section = section;
 	  cache_pc_function_block = b;
 
@@ -286,26 +274,26 @@ find_pc_partial_function (CORE_ADDR pc,
 	     comment preceding declaration of find_pc_partial_function
 	     in symtab.h for more information.  */
 
-	  if (BLOCK_CONTIGUOUS_P (b))
+	  if (b->is_contiguous ())
 	    {
-	      cache_pc_function_low = BLOCK_START (b);
-	      cache_pc_function_high = BLOCK_END (b);
+	      cache_pc_function_low = b->start ();
+	      cache_pc_function_high = b->end ();
 	    }
 	  else
 	    {
-	      int i;
-	      for (i = 0; i < BLOCK_NRANGES (b); i++)
-	        {
-		  if (BLOCK_RANGE_START (b, i) <= mapped_pc
-		      && mapped_pc < BLOCK_RANGE_END (b, i))
+	      bool found = false;
+	      for (const blockrange &range : b->ranges ())
+		{
+		  if (range.start () <= mapped_pc && mapped_pc < range.end ())
 		    {
-		      cache_pc_function_low = BLOCK_RANGE_START (b, i);
-		      cache_pc_function_high = BLOCK_RANGE_END (b, i);
+		      cache_pc_function_low = range.start ();
+		      cache_pc_function_high = range.end ();
+		      found = true;
 		      break;
 		    }
 		}
 	      /* Above loop should exit via the break.  */
-	      gdb_assert (i < BLOCK_NRANGES (b));
+	      gdb_assert (found);
 	    }
 
 
@@ -325,8 +313,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)
@@ -336,8 +324,8 @@ find_pc_partial_function (CORE_ADDR pc,
       return false;
     }
 
-  cache_pc_function_low = BMSYMBOL_VALUE_ADDRESS (msymbol);
-  cache_pc_function_name = msymbol.minsym->linkage_name ();
+  cache_pc_function_low = msymbol.value_address ();
+  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 +340,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,35 +368,47 @@ 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)
 {
   const struct block *block;
   bool status = find_pc_partial_function (pc, name, address, endaddr, &block);
 
-  if (status && block != nullptr && !BLOCK_CONTIGUOUS_P (block))
+  if (status && block != nullptr && !block->is_contiguous ())
     {
-      CORE_ADDR entry_pc = BLOCK_ENTRY_PC (block);
+      CORE_ADDR entry_pc = block->entry_pc ();
 
-      for (int i = 0; i < BLOCK_NRANGES (block); i++)
-        {
-	  if (BLOCK_RANGE_START (block, i) <= entry_pc
-	      && entry_pc < BLOCK_RANGE_END (block, i))
+      for (const blockrange &range : block->ranges ())
+	{
+	  if (range.start () <= entry_pc && entry_pc < range.end ())
 	    {
 	      if (address != nullptr)
-	        *address = BLOCK_RANGE_START (block, i);
+		*address = range.start ();
 
 	      if (endaddr != nullptr)
-	        *endaddr = BLOCK_RANGE_END (block, i);
+		*endaddr = range.end ();
 
 	      return status;
 	    }
 	}
 
       /* It's an internal error if we exit the above loop without finding
-         the range.  */
-      internal_error (__FILE__, __LINE__,
-                      _("Entry block not found in find_function_entry_range_from_pc"));
+	 the range.  */
+      internal_error (_("Entry block not found in find_function_entry_range_from_pc"));
     }
 
   return status;
@@ -421,8 +421,8 @@ find_function_type (CORE_ADDR pc)
 {
   struct symbol *sym = find_pc_function (pc);
 
-  if (sym != NULL && BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (sym)) == pc)
-    return SYMBOL_TYPE (sym);
+  if (sym != NULL && sym->value_block ()->entry_pc () == pc)
+    return sym->type ();
 
   return NULL;
 }
@@ -437,15 +437,15 @@ find_gnu_ifunc_target_type (CORE_ADDR re
     {
       /* Get the return type of the resolver.  */
       struct type *resolver_ret_type
-	= check_typedef (TYPE_TARGET_TYPE (resolver_type));
+	= check_typedef (resolver_type->target_type ());
 
       /* 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)
+	    = resolver_ret_type->target_type ();
+	  if (check_typedef (resolved_type)->code () == TYPE_CODE_FUNC)
 	    return resolved_type;
 	}
     }
@@ -457,21 +457,17 @@ find_gnu_ifunc_target_type (CORE_ADDR re
    at least as old as the selected frame. Return NULL if there is no
    such frame.  If BLOCK is NULL, just return NULL.  */
 
-struct frame_info *
+frame_info_ptr
 block_innermost_frame (const struct block *block)
 {
-  struct frame_info *frame;
-
   if (block == NULL)
     return NULL;
 
-  frame = get_selected_frame_if_set ();
-  if (frame == NULL)
-    frame = get_current_frame ();
+  frame_info_ptr frame = get_selected_frame ();
   while (frame != NULL)
     {
       const struct block *frame_block = get_frame_block (frame, NULL);
-      if (frame_block != NULL && contained_in (frame_block, block))
+      if (frame_block != NULL && block->contains (frame_block))
 	return frame;
 
       frame = get_prev_frame (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.20200303/gdb/block.h ./gdb/block.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/block.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/block.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Code dealing with blocks for GDB.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,10 +17,12 @@
    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 BLOCK_H
-#define BLOCK_H
+#ifndef GDB_BLOCK_H
+#define GDB_BLOCK_H
 
 #include "dictionary.h"
+#include "gdbsupport/array-view.h"
+#include "gdbsupport/next-iterator.h"
 
 /* Opaque declarations.  */
 
@@ -29,7 +31,7 @@ struct compunit_symtab;
 struct block_namespace_info;
 struct using_direct;
 struct obstack;
-struct addrmap;
+struct addrmap_fixed;
 
 /* Blocks can occupy non-contiguous address ranges.  When this occurs,
    startaddr and endaddr within struct block (still) specify the lowest
@@ -38,19 +40,35 @@ struct addrmap;
 
 struct blockrange
 {
-  blockrange (CORE_ADDR startaddr_, CORE_ADDR endaddr_)
-    : startaddr (startaddr_),
-      endaddr (endaddr_)
+  blockrange (CORE_ADDR start, CORE_ADDR end)
+    : m_start (start),
+      m_end (end)
   {
   }
 
+  /* Return this blockrange's start address.  */
+  CORE_ADDR start () const
+  { return m_start; }
+
+  /* Set this blockrange's start address.  */
+  void set_start (CORE_ADDR start)
+  { m_start = start; }
+
+  /* Return this blockrange's end address.  */
+  CORE_ADDR end () const
+  { return m_end; }
+
+  /* Set this blockrange's end address.  */
+  void set_end (CORE_ADDR end)
+  { m_end = end; }
+
   /* Lowest address in this range.  */
 
-  CORE_ADDR startaddr;
+  CORE_ADDR m_start;
 
   /* One past the highest address in the range.  */
 
-  CORE_ADDR endaddr;
+  CORE_ADDR m_end;
 };
 
 /* Two or more non-contiguous ranges in the same order as that provided
@@ -88,195 +106,411 @@ struct blockranges
    This implies that within the body of one function
    the blocks appear in the order of a depth-first tree walk.  */
 
-struct block
+struct block : public allocate_on_obstack<block>
 {
+  /* Return this block's start address.  */
+  CORE_ADDR start () const
+  { return m_start; }
+
+  /* Set this block's start address.  */
+  void set_start (CORE_ADDR start)
+  { m_start = start; }
+
+  /* Return this block's end address.  */
+  CORE_ADDR end () const
+  { return m_end; }
+
+  /* Set this block's end address.  */
+  void set_end (CORE_ADDR end)
+  { m_end = end; }
+
+  /* Return this block's function symbol.  */
+  symbol *function () const
+  { return m_function; }
+
+  /* Set this block's function symbol.  */
+  void set_function (symbol *function)
+  { m_function = function; }
+
+  /* Return this block's superblock.  */
+  const block *superblock () const
+  { return m_superblock; }
+
+  /* Set this block's superblock.  */
+  void set_superblock (const block *superblock)
+  { m_superblock = superblock; }
+
+  /* Return this block's multidict.  */
+  multidictionary *multidict () const
+  { return m_multidict; }
+
+  /* Return an iterator range for this block's multidict.  */
+  iterator_range<mdict_iterator_wrapper> multidict_symbols () const
+  { return iterator_range<mdict_iterator_wrapper> (m_multidict); }
+
+  /* Set this block's multidict.  */
+  void set_multidict (multidictionary *multidict)
+  { m_multidict = multidict; }
 
-  /* Addresses in the executable code that are in this block.  */
+  /* Return a view on this block's ranges.  */
+  gdb::array_view<blockrange> ranges ()
+  {
+    if (m_ranges == nullptr)
+      return {};
+    else
+      return gdb::make_array_view (m_ranges->range, m_ranges->nranges);
+  }
 
-  CORE_ADDR startaddr;
-  CORE_ADDR endaddr;
+  /* Const version of the above.  */
+  gdb::array_view<const blockrange> ranges () const
+  {
+    if (m_ranges == nullptr)
+      return {};
+    else
+      return gdb::make_array_view (m_ranges->range, m_ranges->nranges);
+  }
 
-  /* The symbol that names this block, if the block is the body of a
-     function (real or inlined); otherwise, zero.  */
+  /* Set this block's ranges array.  */
+  void set_ranges (blockranges *ranges)
+  { m_ranges = ranges; }
 
-  struct symbol *function;
+  /* Return true if all addresses within this block are contiguous.  */
+  bool is_contiguous () const
+  { return this->ranges ().size () <= 1; }
 
-  /* The `struct block' for the containing block, or 0 if none.
+  /* Return the entry-pc of this block.
 
-     The superblock of a top-level local block (i.e. a function in the
-     case of C) is the STATIC_BLOCK.  The superblock of the
-     STATIC_BLOCK is the GLOBAL_BLOCK.  */
+     If the entry PC has been set to a specific value then this is
+     returned.  Otherwise, the default_entry_pc() address is returned.  */
 
-  const struct block *superblock;
+  CORE_ADDR entry_pc () const
+  {
+    return default_entry_pc () + m_entry_pc_offset;
+  }
 
-  /* This is used to store the symbols in the block.  */
+  /* Set this block's entry-pc to ADDR, which must lie between start() and
+     end().  The entry-pc is stored as the signed offset from the
+     default_entry_pc() address.
 
-  struct multidictionary *multidict;
+     Note that block sub-ranges can be out of order, as such the offset of
+     the entry-pc might be negative.  */
 
-  /* Contains information about namespace-related info relevant to this block:
-     using directives and the current namespace scope.  */
+  void set_entry_pc (CORE_ADDR addr)
+  {
+    CORE_ADDR start = default_entry_pc ();
 
-  struct block_namespace_info *namespace_info;
+    gdb_assert (addr >= this->start () && addr < this->end ());
+    gdb_assert (start >= this->start () && start < this->end ());
 
-  /* Address ranges for blocks with non-contiguous ranges.  If this
-     is NULL, then there is only one range which is specified by
-     startaddr and endaddr above.  */
+    m_entry_pc_offset = addr - start;
+  }
 
-  struct blockranges *ranges;
-};
+  /* Return the objfile of this block.  */
 
-/* The global block is singled out so that we can provide a back-link
-   to the compunit symtab.  */
+  struct objfile *objfile () const;
 
-struct global_block
-{
-  /* The block.  */
+  /* Return the architecture of this block.  */
 
-  struct block block;
+  struct gdbarch *gdbarch () const;
 
-  /* This holds a pointer to the compunit symtab holding this block.  */
+  /* Return true if BL represents an inlined function.  */
 
-  struct compunit_symtab *compunit_symtab;
-};
+  bool inlined_p () const;
 
-#define BLOCK_START(bl)		(bl)->startaddr
-#define BLOCK_END(bl)		(bl)->endaddr
-#define BLOCK_FUNCTION(bl)	(bl)->function
-#define BLOCK_SUPERBLOCK(bl)	(bl)->superblock
-#define BLOCK_MULTIDICT(bl)	(bl)->multidict
-#define BLOCK_NAMESPACE(bl)	(bl)->namespace_info
+  /* This returns the namespace that this block is enclosed in, or ""
+     if it isn't enclosed in a namespace at all.  This travels the
+     chain of superblocks looking for a scope, if necessary.  */
 
-/* Accessor for ranges field within block BL.  */
+  const char *scope () const;
 
-#define BLOCK_RANGES(bl)	(bl)->ranges
+  /* Set this block's scope member to SCOPE; if needed, allocate
+     memory via OBSTACK.  (It won't make a copy of SCOPE, however, so
+     that already has to be allocated correctly.)  */
 
-/* Number of ranges within a block.  */
+  void set_scope (const char *scope, struct obstack *obstack);
 
-#define BLOCK_NRANGES(bl)	(bl)->ranges->nranges
+  /* This returns the using directives list associated with this
+     block, if any.  */
 
-/* Access range array for block BL.  */
+  next_range<using_direct> get_using () const;
 
-#define BLOCK_RANGE(bl)		(bl)->ranges->range
+  /* Set this block's using member to USING; if needed, allocate
+     memory via OBSTACK.  (It won't make a copy of USING, however, so
+     that already has to be allocated correctly.)  */
 
-/* Are all addresses within a block contiguous?  */
+  void set_using (struct using_direct *using_decl, struct obstack *obstack);
 
-#define BLOCK_CONTIGUOUS_P(bl)	(BLOCK_RANGES (bl) == nullptr \
-				 || BLOCK_NRANGES (bl) <= 1)
+  /* Return the symbol for the function which contains a specified
+     lexical block, described by a struct block.  The return value
+     will not be an inlined function; the containing function will be
+     returned instead.  */
 
-/* Obtain the start address of the Nth range for block BL.  */
+  struct symbol *linkage_function () const;
 
-#define BLOCK_RANGE_START(bl,n) (BLOCK_RANGE (bl)[n].startaddr)
+  /* Return the symbol for the function which contains a specified
+     block, described by a struct block.  The return value will be the
+     closest enclosing function, which might be an inline
+     function.  */
 
-/* Obtain the end address of the Nth range for block BL.  */
+  struct symbol *containing_function () const;
 
-#define BLOCK_RANGE_END(bl,n)	(BLOCK_RANGE (bl)[n].endaddr)
+  /* Return the static block associated with this block.  Return NULL
+     if block is a global block.  */
 
-/* Define the "entry pc" for a block BL to be the lowest (start) address
-   for the block when all addresses within the block are contiguous.  If
-   non-contiguous, then use the start address for the first range in the
-   block.
+  const struct block *static_block () const;
 
-   At the moment, this almost matches what DWARF specifies as the entry
-   pc.  (The missing bit is support for DW_AT_entry_pc which should be
-   preferred over range data and the low_pc.)
+  /* Return true if this block is a static block.  */
 
-   Once support for DW_AT_entry_pc is added, I expect that an entry_pc
-   field will be added to one of these data structures.  Once that's done,
-   the entry_pc field can be set from the dwarf reader (and other readers
-   too).  BLOCK_ENTRY_PC can then be redefined to be less DWARF-centric.  */
+  bool is_static_block () const
+  {
+    const block *sup = superblock ();
+    if (sup == nullptr)
+      return false;
+    return sup->is_global_block ();
+  }
 
-#define BLOCK_ENTRY_PC(bl)	(BLOCK_CONTIGUOUS_P (bl) \
-				 ? BLOCK_START (bl) \
-				 : BLOCK_RANGE_START (bl,0))
+  /* Return the global block associated with block.  */
 
-struct blockvector
-{
-  /* Number of blocks in the list.  */
-  int nblocks;
-  /* An address map mapping addresses to blocks in this blockvector.
-     This pointer is zero if the blocks' start and end addresses are
-     enough.  */
-  struct addrmap *map;
-  /* The blocks themselves.  */
-  struct block *block[1];
-};
+  const struct global_block *global_block () const;
 
-#define BLOCKVECTOR_NBLOCKS(blocklist) (blocklist)->nblocks
-#define BLOCKVECTOR_BLOCK(blocklist,n) (blocklist)->block[n]
-#define BLOCKVECTOR_MAP(blocklist) ((blocklist)->map)
+  /* Return true if this block is a global block.  */
 
-/* Return the objfile of BLOCK, which must be non-NULL.  */
+  bool is_global_block () const
+  { return superblock () == nullptr; }
 
-extern struct objfile *block_objfile (const struct block *block);
+  /* Return this block as a global_block.  This block must be a global
+     block.  */
+  struct global_block *as_global_block ();
+  const struct global_block *as_global_block () const;
 
-/* Return the architecture of BLOCK, which must be non-NULL.  */
+  /* Return the function block for this block.  Returns nullptr if
+     there is no enclosing function, i.e., if this block is a static
+     or global block.  */
 
-extern struct gdbarch *block_gdbarch (const struct block *block);
+  const struct block *function_block () const;
 
-extern struct symbol *block_linkage_function (const struct block *);
+  /* Return a property to evaluate the static link associated to this
+     block.
 
-extern struct symbol *block_containing_function (const struct block *);
+     In the context of nested functions (available in Pascal, Ada and
+     GNU C, for instance), a static link (as in DWARF's
+     DW_AT_static_link attribute) for a function is a way to get the
+     frame corresponding to the enclosing function.
 
-extern int block_inlined_p (const struct block *block);
+     Note that only objfile-owned and function-level blocks can have a
+     static link.  Return NULL if there is no such property.  */
 
-/* Return true if block A is lexically nested within block B, or if a
-   and b have the same pc range.  Return false otherwise.  If
-   ALLOW_NESTED is true, then block A is considered to be in block B
-   if A is in a nested function in B's function.  If ALLOW_NESTED is
-   false (the default), then blocks in nested functions are not
-   considered to be contained.  */
+  struct dynamic_prop *static_link () const;
 
-extern bool contained_in (const struct block *a, const struct block *b,
-			  bool allow_nested = false);
+  /* Return true if block A is lexically nested within this block, or
+     if A and this block have the same pc range.  Return false
+     otherwise.  If ALLOW_NESTED is true, then block A is considered
+     to be in this block if A is in a nested function in this block's
+     function.  If ALLOW_NESTED is false (the default), then blocks in
+     nested functions are not considered to be contained.  */
 
-extern const struct blockvector *blockvector_for_pc (CORE_ADDR,
-					       const struct block **);
+  bool contains (const struct block *a, bool allow_nested = false) const;
 
-extern const struct blockvector *
-  blockvector_for_pc_sect (CORE_ADDR, struct obj_section *,
-			   const struct block **, struct compunit_symtab *);
+private:
 
-extern int blockvector_contains_pc (const struct blockvector *bv, CORE_ADDR pc);
+  /* Return the default entry-pc of this block.  The default is the address
+     we use if the debug information hasn't specifically set a different
+     entry-pc value.  This is the lowest address for the block when all
+     addresses within the block are contiguous.  If non-contiguous, then
+     use the start address for the first range in the block.
 
-extern struct call_site *call_site_for_pc (struct gdbarch *gdbarch,
-					   CORE_ADDR pc);
+     This almost matches what DWARF specifies as the entry pc, except that
+     the final case, using the first address of the first range, is a GDB
+     extension.  However, the DWARF reader sets the specific entry-pc
+     wherever possible, so this non-standard fallback case is only used as
+     a last resort.  */
 
-extern const struct block *block_for_pc (CORE_ADDR);
+  CORE_ADDR default_entry_pc () const
+  {
+    if (this->is_contiguous ())
+      return this->start ();
+    else
+      return this->ranges ()[0].start ();
+  }
 
-extern const struct block *block_for_pc_sect (CORE_ADDR, struct obj_section *);
+  /* If the namespace_info is NULL, allocate it via OBSTACK and
+     initialize its members to zero.  */
+  void initialize_namespace (struct obstack *obstack);
+
+  /* Addresses in the executable code that are in this block.  */
+
+  CORE_ADDR m_start = 0;
+  CORE_ADDR m_end = 0;
+
+  /* The symbol that names this block, if the block is the body of a
+     function (real or inlined); otherwise, zero.  */
+
+  struct symbol *m_function = nullptr;
+
+  /* The `struct block' for the containing block, or 0 if none.
+
+     The superblock of a top-level local block (i.e. a function in the
+     case of C) is the STATIC_BLOCK.  The superblock of the
+     STATIC_BLOCK is the GLOBAL_BLOCK.  */
+
+  const struct block *m_superblock = nullptr;
+
+  /* This is used to store the symbols in the block.  */
+
+  struct multidictionary *m_multidict = nullptr;
+
+  /* Contains information about namespace-related info relevant to this block:
+     using directives and the current namespace scope.  */
+
+  struct block_namespace_info *m_namespace_info = nullptr;
+
+  /* Address ranges for blocks with non-contiguous ranges.  If this
+     is NULL, then there is only one range which is specified by
+     startaddr and endaddr above.  */
 
-extern const char *block_scope (const struct block *block);
+  struct blockranges *m_ranges = nullptr;
 
-extern void block_set_scope (struct block *block, const char *scope,
-			     struct obstack *obstack);
+  /* The offset of the actual entry-pc value from the default entry-pc
+     value.  If space was no object then we'd store an actual address along
+     with a flag to indicate if the address has been set or not.  But we'd
+     like to keep the size of block low, so we'd like to use a single
+     member variable.
+
+     We would also like to avoid using 0 as a special address; some targets
+     do allow for accesses to address 0.
+
+     So instead we store the offset of the defined entry-pc from the
+     default entry-pc.  See default_entry_pc() for the definition of the
+     default entry-pc.  See entry_pc() for how this offset is used.  */
 
-extern struct using_direct *block_using (const struct block *block);
+  LONGEST m_entry_pc_offset = 0;
+};
 
-extern void block_set_using (struct block *block,
-			     struct using_direct *using_decl,
-			     struct obstack *obstack);
+/* The global block is singled out so that we can provide a back-link
+   to the compunit.  */
 
-extern const struct block *block_static_block (const struct block *block);
+struct global_block : public block
+{
+  /* Set the compunit of this global block.
 
-extern const struct block *block_global_block (const struct block *block);
+     The compunit must not have been set previously.  */
+  void set_compunit (compunit_symtab *cu)
+  {
+    gdb_assert (m_compunit == nullptr);
+    m_compunit = cu;
+  }
 
-extern struct block *allocate_block (struct obstack *obstack);
+  /* Return the compunit of this global block.
 
-extern struct block *allocate_global_block (struct obstack *obstack);
+     The compunit must have been set previously.  */
+  compunit_symtab *compunit () const
+  {
+    gdb_assert (m_compunit != nullptr);
+    return m_compunit;
+  }
 
-extern void set_block_compunit_symtab (struct block *,
-				       struct compunit_symtab *);
+private:
+  /* This holds a pointer to the compunit holding this block.  */
+  compunit_symtab *m_compunit = nullptr;
+};
 
-/* Return a property to evaluate the static link associated to BLOCK.
+struct blockvector
+{
+  /* Return a view on the blocks of this blockvector.  */
+  gdb::array_view<struct block *> blocks ()
+  {
+    return gdb::array_view<struct block *> (m_blocks, m_num_blocks);
+  }
 
-   In the context of nested functions (available in Pascal, Ada and GNU C, for
-   instance), a static link (as in DWARF's DW_AT_static_link attribute) for a
-   function is a way to get the frame corresponding to the enclosing function.
+  /* Const version of the above.  */
+  gdb::array_view<const struct block *const> blocks () const
+  {
+    const struct block **blocks = (const struct block **) m_blocks;
+    return gdb::array_view<const struct block *const> (blocks, m_num_blocks);
+  }
 
-   Note that only objfile-owned and function-level blocks can have a static
-   link.  Return NULL if there is no such property.  */
+  /* Return the block at index I.  */
+  struct block *block (size_t i)
+  { return this->blocks ()[i]; }
+
+  /* Const version of the above.  */
+  const struct block *block (size_t i) const
+  { return this->blocks ()[i]; }
+
+  /* Set the block at index I.  */
+  void set_block (int i, struct block *block)
+  { m_blocks[i] = block; }
+
+  /* Set the number of blocks of this blockvector.
+
+     The storage of blocks is done using a flexible array member, so the number
+     of blocks set here must agree with what was effectively allocated.  */
+  void set_num_blocks (int num_blocks)
+  { m_num_blocks = num_blocks; }
+
+  /* Return the number of blocks in this blockvector.  */
+  int num_blocks () const
+  { return m_num_blocks; }
+
+  /* Return the global block of this blockvector.  */
+  struct global_block *global_block ()
+  { return static_cast<struct global_block *> (this->block (GLOBAL_BLOCK)); }
 
-extern struct dynamic_prop *block_static_link (const struct block *block);
+  /* Const version of the above.  */
+  const struct global_block *global_block () const
+  {
+    return static_cast<const struct global_block *>
+      (this->block (GLOBAL_BLOCK));
+  }
+
+  /* Return the static block of this blockvector.  */
+  struct block *static_block ()
+  { return this->block (STATIC_BLOCK); }
+
+  /* Const version of the above.  */
+  const struct block *static_block () const
+  { return this->block (STATIC_BLOCK); }
+
+  /* Return the address -> block map of this blockvector.  */
+  addrmap_fixed *map ()
+  { return m_map; }
+
+  /* Const version of the above.  */
+  const addrmap_fixed *map () const
+  { return m_map; }
+
+  /* Set this blockvector's address -> block map.  */
+  void set_map (addrmap_fixed *map)
+  { m_map = map; }
+
+private:
+  /* An address map mapping addresses to blocks in this blockvector.
+     This pointer is zero if the blocks' start and end addresses are
+     enough.  */
+  addrmap_fixed *m_map;
+
+  /* Number of blocks in the list.  */
+  int m_num_blocks;
+
+  /* The blocks themselves.  */
+  struct block *m_blocks[1];
+};
+
+extern const struct blockvector *blockvector_for_pc (CORE_ADDR,
+					       const struct block **);
+
+extern const struct blockvector *
+  blockvector_for_pc_sect (CORE_ADDR, struct obj_section *,
+			   const struct block **, struct compunit_symtab *);
+
+extern int blockvector_contains_pc (const struct blockvector *bv, CORE_ADDR pc);
+
+extern struct call_site *call_site_for_pc (struct gdbarch *gdbarch,
+					   CORE_ADDR pc);
+
+extern const struct block *block_for_pc (CORE_ADDR);
+
+extern const struct block *block_for_pc_sect (CORE_ADDR, struct obj_section *);
 
 /* A block iterator.  This structure should be treated as though it
    were opaque; it is only defined here because we want to support
@@ -293,6 +527,9 @@ struct block_iterator
     const struct block *block;
   } d;
 
+  /* If we're trying to match a name, this will be non-NULL.  */
+  const lookup_name_info *name;
+
   /* If we're iterating over a single block, this is always -1.
      Otherwise, it holds the index of the current "included" symtab in
      the canonical symtab (that is, d.symtab->includes[idx]), with -1
@@ -312,10 +549,13 @@ struct block_iterator
 };
 
 /* Initialize ITERATOR to point at the first symbol in BLOCK, and
-   return that first symbol, or NULL if BLOCK is empty.  */
+   return that first symbol, or NULL if BLOCK is empty.  If NAME is
+   not NULL, only return symbols matching that name.  */
 
-extern struct symbol *block_iterator_first (const struct block *block,
-					    struct block_iterator *iterator);
+extern struct symbol *block_iterator_first
+     (const struct block *block,
+      struct block_iterator *iterator,
+      const lookup_name_info *name = nullptr);
 
 /* Advance ITERATOR, and return the next symbol, or NULL if there are
    no more symbols.  Don't call this if you've previously received
@@ -324,95 +564,94 @@ extern struct symbol *block_iterator_fir
 
 extern struct symbol *block_iterator_next (struct block_iterator *iterator);
 
-/* Initialize ITERATOR to point at the first symbol in BLOCK whose
-   search_name () matches NAME, and return that first symbol, or
-   NULL if there are no such symbols.  */
-
-extern struct symbol *block_iter_match_first (const struct block *block,
-					      const lookup_name_info &name,
-					      struct block_iterator *iterator);
-
-/* Advance ITERATOR to point at the next symbol in BLOCK whose
-   search_name () matches NAME, or NULL if there are no more such
-   symbols.  Don't call this if you've previously received NULL from
-   block_iterator_match_first or block_iterator_match_next on this
-   iteration.  And don't call it unless ITERATOR was created by a
-   previous call to block_iter_match_first with the same NAME.  */
+/* An iterator that wraps a block_iterator.  The naming here is
+   unfortunate, but block_iterator was named before gdb switched to
+   C++.  */
+struct block_iterator_wrapper
+{
+  typedef block_iterator_wrapper self_type;
+  typedef struct symbol *value_type;
+
+  explicit block_iterator_wrapper (const struct block *block,
+				   const lookup_name_info *name = nullptr)
+    : m_sym (block_iterator_first (block, &m_iter, name))
+  {
+  }
+
+  block_iterator_wrapper ()
+    : m_sym (nullptr)
+  {
+  }
+
+  value_type operator* () const
+  {
+    return m_sym;
+  }
+
+  bool operator== (const self_type &other) const
+  {
+    return m_sym == other.m_sym;
+  }
+
+  bool operator!= (const self_type &other) const
+  {
+    return m_sym != other.m_sym;
+  }
+
+  self_type &operator++ ()
+  {
+    m_sym = block_iterator_next (&m_iter);
+    return *this;
+  }
+
+private:
+
+  struct symbol *m_sym;
+  struct block_iterator m_iter;
+};
+
+/* An iterator range for block_iterator_wrapper.  */
+
+typedef iterator_range<block_iterator_wrapper> block_iterator_range;
+
+/* Return true if symbol A is the best match possible for DOMAIN.  */
+
+extern bool best_symbol (struct symbol *a, const domain_search_flags domain);
 
-extern struct symbol *block_iter_match_next
-  (const lookup_name_info &name, struct block_iterator *iterator);
+/* 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_search_flags domain);
 
 /* Search BLOCK for symbol NAME in DOMAIN.  */
 
 extern struct symbol *block_lookup_symbol (const struct block *block,
-					   const char *name,
-					   symbol_name_match_type match_type,
-					   const domain_enum domain);
+					   const lookup_name_info &name,
+					   const domain_search_flags domain);
 
 /* Search BLOCK for symbol NAME in DOMAIN but only in primary symbol table of
    BLOCK.  BLOCK must be STATIC_BLOCK or GLOBAL_BLOCK.  Function is useful if
    one iterates all global/static blocks of an objfile.  */
 
-extern struct symbol *block_lookup_symbol_primary (const struct block *block,
-						   const char *name,
-						   const domain_enum domain);
-
-/* The type of the MATCHER argument to block_find_symbol.  */
-
-typedef int (block_symbol_matcher_ftype) (struct symbol *, void *);
-
-/* Find symbol NAME in BLOCK and in DOMAIN that satisfies MATCHER.
-   DATA is passed unchanged to MATCHER.
-   BLOCK must be STATIC_BLOCK or GLOBAL_BLOCK.  */
+extern struct symbol *block_lookup_symbol_primary
+     (const struct block *block,
+      const char *name,
+      const domain_search_flags domain);
+
+/* Find symbol NAME in BLOCK and in DOMAIN.  This will return a
+   matching symbol whose type is not a "opaque", see TYPE_IS_OPAQUE.
+   If STUB is non-NULL, an otherwise matching symbol whose type is a
+   opaque will be stored here.  */
 
 extern struct symbol *block_find_symbol (const struct block *block,
-					 const char *name,
-					 const domain_enum domain,
-					 block_symbol_matcher_ftype *matcher,
-					 void *data);
-
-/* A matcher function for block_find_symbol to find only symbols with
-   non-opaque types.  */
-
-extern int block_find_non_opaque_type (struct symbol *sym, void *data);
-
-/* A matcher function for block_find_symbol to prefer symbols with
-   non-opaque types.  The way to use this function is as follows:
-
-   struct symbol *with_opaque = NULL;
-   struct symbol *sym
-     = block_find_symbol (block, name, domain,
-                          block_find_non_opaque_type_preferred, &with_opaque);
-
-   At this point if SYM is non-NULL then a non-opaque type has been found.
-   Otherwise, if WITH_OPAQUE is non-NULL then an opaque type has been found.
-   Otherwise, the symbol was not found.  */
-
-extern int block_find_non_opaque_type_preferred (struct symbol *sym,
-						 void *data);
-
-/* Macro to loop through all symbols in BLOCK, in no particular
-   order.  ITER helps keep track of the iteration, and must be a
-   struct block_iterator.  SYM points to the current symbol.  */
-
-#define ALL_BLOCK_SYMBOLS(block, iter, sym)		\
-  for ((sym) = block_iterator_first ((block), &(iter));	\
-       (sym);						\
-       (sym) = block_iterator_next (&(iter)))
-
-/* Macro to loop through all symbols in BLOCK with a name that matches
-   NAME, in no particular order.  ITER helps keep track of the
-   iteration, and must be a struct block_iterator.  SYM points to the
-   current symbol.  */
-
-#define ALL_BLOCK_SYMBOLS_WITH_NAME(block, name, iter, sym)		\
-  for ((sym) = block_iter_match_first ((block), (name), &(iter));	\
-       (sym) != NULL;							\
-       (sym) = block_iter_match_next ((name), &(iter)))
+					 const lookup_name_info &name,
+					 const domain_search_flags domain,
+					 struct symbol **stub);
 
 /* Given a vector of pairs, allocate and build an obstack allocated
    blockranges struct for a block.  */
 struct blockranges *make_blockranges (struct objfile *objfile,
-                                      const std::vector<blockrange> &rangevec);
+				      const std::vector<blockrange> &rangevec);
 
-#endif /* BLOCK_H */
+#endif /* GDB_BLOCK_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.20200303/gdb/bpf-tdep.c ./gdb/bpf-tdep.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bpf-tdep.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/bpf-tdep.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,384 @@
+/* Target-dependent code for BPF.
+
+   Copyright (C) 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "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 "cli/cli-cmds.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"
+#include "gdbarch.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 bpf_gdbarch_tdep : gdbarch_tdep_base
+{
+};
+
+
+/* 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)
+{
+  gdb_printf (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)
+{
+  static_assert (ARRAY_SIZE (bpf_register_names) == BPF_NUM_REGS);
+  return bpf_register_names[reg];
+}
+
+/* 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)
+{
+  gdb_printf (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 (const frame_info_ptr &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 (const frame_info_ptr &this_frame,
+			      void **this_cache)
+{
+  return UNWIND_OUTERMOST;
+}
+
+/* Ask THIS_FRAME to unwind its register.  */
+
+static struct value *
+bpf_frame_prev_register (const frame_info_ptr &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_legacy bpf_frame_unwind (
+  "bpf prologue",
+  NORMAL_FRAME,
+  FRAME_UNWIND_ARCH,
+  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, const frame_info_ptr &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)
+{
+  gdb_printf (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 ();
+  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 ();
+  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 ();
+
+  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, reuse 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.  */
+  gdbarch *gdbarch
+    = gdbarch_alloc (&info, gdbarch_tdep_up (new bpf_gdbarch_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;
+}
+
+INIT_GDB_FILE (bpf_tdep)
+{
+  gdbarch_register (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.20200303/gdb/break-catch-exec.c ./gdb/break-catch-exec.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-exec.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/break-catch-exec.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,223 @@
+/* Everything about exec catchpoints, for GDB.
+
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "annotate.h"
+#include "arch-utils.h"
+#include "breakpoint.h"
+#include "cli/cli-decode.h"
+#include "inferior.h"
+#include "mi/mi-common.h"
+#include "target.h"
+#include "valprint.h"
+
+/* Exec catchpoints.  */
+
+/* An instance of this type is used to represent an exec catchpoint.
+   A breakpoint is really of this type iff its ops pointer points to
+   CATCH_EXEC_BREAKPOINT_OPS.  */
+
+struct exec_catchpoint : public catchpoint
+{
+  exec_catchpoint (struct gdbarch *gdbarch, bool temp, const char *cond_string)
+    : catchpoint (gdbarch, temp, cond_string)
+  {
+  }
+
+  int insert_location (struct bp_location *) override;
+  int remove_location (struct bp_location *,
+		       enum remove_bp_reason reason) override;
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  bool print_one (const bp_location **) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+
+  /* Filename of a program whose exec triggered this catchpoint.
+     This field is only valid immediately after this catchpoint has
+     triggered.  */
+  gdb::unique_xmalloc_ptr<char> exec_pathname;
+};
+
+int
+exec_catchpoint::insert_location (struct bp_location *bl)
+{
+  return target_insert_exec_catchpoint (inferior_ptid.pid ());
+}
+
+int
+exec_catchpoint::remove_location (struct bp_location *bl,
+				  enum remove_bp_reason reason)
+{
+  return target_remove_exec_catchpoint (inferior_ptid.pid ());
+}
+
+int
+exec_catchpoint::breakpoint_hit (const struct bp_location *bl,
+				 const address_space *aspace,
+				 CORE_ADDR bp_addr,
+				 const target_waitstatus &ws)
+{
+  if (ws.kind () != TARGET_WAITKIND_EXECD)
+    return 0;
+
+  exec_pathname = make_unique_xstrdup (ws.execd_pathname ());
+  return 1;
+}
+
+enum print_stop_action
+exec_catchpoint::print_it (const bpstat *bs) const
+{
+  struct ui_out *uiout = current_uiout;
+
+  annotate_catchpoint (number);
+  maybe_print_thread_hit_breakpoint (uiout);
+  if (disposition == disp_del)
+    uiout->text ("Temporary catchpoint ");
+  else
+    uiout->text ("Catchpoint ");
+  if (uiout->is_mi_like_p ())
+    {
+      uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
+      uiout->field_string ("disp", bpdisp_text (disposition));
+    }
+  uiout->field_signed ("bkptno", number);
+  uiout->text (" (exec'd ");
+  uiout->field_string ("new-exec", exec_pathname.get ());
+  uiout->text ("), ");
+
+  return PRINT_SRC_AND_LOC;
+}
+
+bool
+exec_catchpoint::print_one (const bp_location **last_loc) const
+{
+  struct value_print_options opts;
+  struct ui_out *uiout = current_uiout;
+
+  get_user_print_options (&opts);
+
+  /* Field 4, the address, is omitted (which makes the columns
+     not line up too nicely with the headers, but the effect
+     is relatively readable).  */
+  if (opts.addressprint)
+    uiout->field_skip ("addr");
+  annotate_field (5);
+  uiout->text ("exec");
+  if (exec_pathname != NULL)
+    {
+      uiout->text (", program \"");
+      uiout->field_string ("what", exec_pathname.get ());
+      uiout->text ("\" ");
+    }
+
+  if (uiout->is_mi_like_p ())
+    uiout->field_string ("catch-type", "exec");
+
+  return true;
+}
+
+void
+exec_catchpoint::print_mention () const
+{
+  gdb_printf (_("Catchpoint %d (exec)"), number);
+}
+
+/* Implement the "print_recreate" method for exec catchpoints.  */
+
+void
+exec_catchpoint::print_recreate (struct ui_file *fp) const
+{
+  gdb_printf (fp, "catch exec");
+  print_recreate_thread (fp);
+}
+
+/* This function attempts to parse an optional "if <cond>" clause
+   from the arg string.  If one is not found, it returns NULL.
+
+   Else, it returns a pointer to the condition string.  (It does not
+   attempt to evaluate the string against a particular block.)  And,
+   it updates arg to point to the first character following the parsed
+   if clause in the arg string.  */
+
+const char *
+ep_parse_optional_if_clause (const char **arg)
+{
+  const char *cond_string;
+
+  if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
+    return NULL;
+
+  /* Skip the "if" keyword.  */
+  (*arg) += 2;
+
+  /* Skip any extra leading whitespace, and record the start of the
+     condition string.  */
+  *arg = skip_spaces (*arg);
+  cond_string = *arg;
+
+  /* Assume that the condition occupies the remainder of the arg
+     string.  */
+  (*arg) += strlen (cond_string);
+
+  return cond_string;
+}
+
+/* Commands to deal with catching events, such as signals, exceptions,
+   process start/exit, etc.  */
+
+static void
+catch_exec_command_1 (const char *arg, int from_tty,
+		      struct cmd_list_element *command)
+{
+  struct gdbarch *gdbarch = get_current_arch ();
+  const char *cond_string = NULL;
+  bool temp = command->context () == CATCH_TEMPORARY;
+
+  if (!arg)
+    arg = "";
+  arg = skip_spaces (arg);
+
+  /* The allowed syntax is:
+     catch exec
+     catch exec if <cond>
+
+     First, check if there's an if clause.  */
+  cond_string = ep_parse_optional_if_clause (&arg);
+
+  if ((*arg != '\0') && !isspace (*arg))
+    error (_("Junk at end of arguments."));
+
+  std::unique_ptr<exec_catchpoint> c
+    (new exec_catchpoint (gdbarch, temp, cond_string));
+
+  install_breakpoint (0, std::move (c), 1);
+}
+
+INIT_GDB_FILE (break_catch_exec)
+{
+  add_catch_command ("exec", _("Catch calls to exec."),
+		     catch_exec_command_1,
+		     NULL,
+		     CATCH_PERMANENT,
+		     CATCH_TEMPORARY);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-fork.c ./gdb/break-catch-fork.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-fork.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/break-catch-fork.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,257 @@
+/* Everything about vfork catchpoints, for GDB.
+
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "annotate.h"
+#include "arch-utils.h"
+#include "breakpoint.h"
+#include "cli/cli-decode.h"
+#include "inferior.h"
+#include "mi/mi-common.h"
+#include "target.h"
+#include "valprint.h"
+
+/* An instance of this type is used to represent a fork or vfork
+   catchpoint.  A breakpoint is really of this type iff its ops pointer points
+   to CATCH_FORK_BREAKPOINT_OPS.  */
+
+struct fork_catchpoint : public catchpoint
+{
+  fork_catchpoint (struct gdbarch *gdbarch, bool temp,
+		   const char *cond_string, bool is_vfork_)
+    : catchpoint (gdbarch, temp, cond_string),
+      is_vfork (is_vfork_)
+  {
+  }
+
+  int insert_location (struct bp_location *) override;
+  int remove_location (struct bp_location *,
+		       enum remove_bp_reason reason) override;
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  bool print_one (const bp_location **) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+
+  /* True if the breakpoint is for vfork, false for fork.  */
+  bool is_vfork;
+
+  /* Process id of a child process whose forking triggered this
+     catchpoint.  This field is only valid immediately after this
+     catchpoint has triggered.  */
+  ptid_t forked_inferior_pid = null_ptid;
+};
+
+/* Implement the "insert" method for fork catchpoints.  */
+
+int
+fork_catchpoint::insert_location (struct bp_location *bl)
+{
+  if (is_vfork)
+    return target_insert_vfork_catchpoint (inferior_ptid.pid ());
+  else
+    return target_insert_fork_catchpoint (inferior_ptid.pid ());
+}
+
+/* Implement the "remove" method for fork catchpoints.  */
+
+int
+fork_catchpoint::remove_location (struct bp_location *bl,
+				  enum remove_bp_reason reason)
+{
+  if (is_vfork)
+    return target_remove_vfork_catchpoint (inferior_ptid.pid ());
+  else
+    return target_remove_fork_catchpoint (inferior_ptid.pid ());
+}
+
+/* Implement the "breakpoint_hit" method for fork catchpoints.  */
+
+int
+fork_catchpoint::breakpoint_hit (const struct bp_location *bl,
+				 const address_space *aspace,
+				 CORE_ADDR bp_addr,
+				 const target_waitstatus &ws)
+{
+  if (ws.kind () != (is_vfork
+		     ? TARGET_WAITKIND_VFORKED
+		     : TARGET_WAITKIND_FORKED))
+    return 0;
+
+  forked_inferior_pid = ws.child_ptid ();
+  return 1;
+}
+
+/* Implement the "print_it" method for fork catchpoints.  */
+
+enum print_stop_action
+fork_catchpoint::print_it (const bpstat *bs) const
+{
+  struct ui_out *uiout = current_uiout;
+
+  annotate_catchpoint (number);
+  maybe_print_thread_hit_breakpoint (uiout);
+  if (disposition == disp_del)
+    uiout->text ("Temporary catchpoint ");
+  else
+    uiout->text ("Catchpoint ");
+  if (uiout->is_mi_like_p ())
+    {
+      uiout->field_string ("reason",
+			   async_reason_lookup (is_vfork
+						? EXEC_ASYNC_VFORK
+						: EXEC_ASYNC_FORK));
+      uiout->field_string ("disp", bpdisp_text (disposition));
+    }
+  uiout->field_signed ("bkptno", number);
+  if (is_vfork)
+    uiout->text (" (vforked process ");
+  else
+    uiout->text (" (forked process ");
+  uiout->field_signed ("newpid", forked_inferior_pid.pid ());
+  uiout->text ("), ");
+  return PRINT_SRC_AND_LOC;
+}
+
+/* Implement the "print_one" method for fork catchpoints.  */
+
+bool
+fork_catchpoint::print_one (const bp_location **last_loc) const
+{
+  struct value_print_options opts;
+  struct ui_out *uiout = current_uiout;
+
+  get_user_print_options (&opts);
+
+  /* Field 4, the address, is omitted (which makes the columns not
+     line up too nicely with the headers, but the effect is relatively
+     readable).  */
+  if (opts.addressprint)
+    uiout->field_skip ("addr");
+  annotate_field (5);
+  const char *name = is_vfork ? "vfork" : "fork";
+  uiout->text (name);
+  if (forked_inferior_pid != null_ptid)
+    {
+      uiout->text (", process ");
+      uiout->field_signed ("what", forked_inferior_pid.pid ());
+      uiout->spaces (1);
+    }
+
+  if (uiout->is_mi_like_p ())
+    uiout->field_string ("catch-type", name);
+
+  return true;
+}
+
+/* Implement the "print_mention" method for fork catchpoints.  */
+
+void
+fork_catchpoint::print_mention () const
+{
+  gdb_printf (_("Catchpoint %d (%s)"), number,
+	      is_vfork ? "vfork" : "fork");
+}
+
+/* Implement the "print_recreate" method for fork catchpoints.  */
+
+void
+fork_catchpoint::print_recreate (struct ui_file *fp) const
+{
+  gdb_printf (fp, "catch %s", is_vfork ? "vfork" : "fork");
+  print_recreate_thread (fp);
+}
+
+static void
+create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
+				    bool temp, const char *cond_string,
+				    bool is_vfork)
+{
+  std::unique_ptr<fork_catchpoint> c
+    (new fork_catchpoint (gdbarch, temp, cond_string, is_vfork));
+
+  install_breakpoint (0, std::move (c), 1);
+}
+
+enum catch_fork_kind
+{
+  catch_fork_temporary, catch_vfork_temporary,
+  catch_fork_permanent, catch_vfork_permanent
+};
+
+static void
+catch_fork_command_1 (const char *arg, int from_tty,
+		      struct cmd_list_element *command)
+{
+  struct gdbarch *gdbarch = get_current_arch ();
+  const char *cond_string = NULL;
+  catch_fork_kind fork_kind;
+
+  fork_kind = (catch_fork_kind) (uintptr_t) command->context ();
+  bool temp = (fork_kind == catch_fork_temporary
+	       || fork_kind == catch_vfork_temporary);
+
+  if (!arg)
+    arg = "";
+  arg = skip_spaces (arg);
+
+  /* The allowed syntax is:
+     catch [v]fork
+     catch [v]fork if <cond>
+
+     First, check if there's an if clause.  */
+  cond_string = ep_parse_optional_if_clause (&arg);
+
+  if ((*arg != '\0') && !isspace (*arg))
+    error (_("Junk at end of arguments."));
+
+  /* If this target supports it, create a fork or vfork catchpoint
+     and enable reporting of such events.  */
+  switch (fork_kind)
+    {
+    case catch_fork_temporary:
+    case catch_fork_permanent:
+      create_fork_vfork_event_catchpoint (gdbarch, temp, cond_string, false);
+      break;
+    case catch_vfork_temporary:
+    case catch_vfork_permanent:
+      create_fork_vfork_event_catchpoint (gdbarch, temp, cond_string, true);
+      break;
+    default:
+      error (_("unsupported or unknown fork kind; cannot catch it"));
+      break;
+    }
+}
+
+INIT_GDB_FILE (break_catch_fork)
+{
+  add_catch_command ("fork", _("Catch calls to fork."),
+		     catch_fork_command_1,
+		     NULL,
+		     (void *) (uintptr_t) catch_fork_permanent,
+		     (void *) (uintptr_t) catch_fork_temporary);
+  add_catch_command ("vfork", _("Catch calls to vfork."),
+		     catch_fork_command_1,
+		     NULL,
+		     (void *) (uintptr_t) catch_vfork_permanent,
+		     (void *) (uintptr_t) catch_vfork_temporary);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-load.c ./gdb/break-catch-load.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-load.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/break-catch-load.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,282 @@
+/* Everything about load/unload catchpoints, for GDB.
+
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "annotate.h"
+#include "arch-utils.h"
+#include "breakpoint.h"
+#include "cli/cli-decode.h"
+#include "progspace.h"
+#include "solib.h"
+#include "target.h"
+#include "valprint.h"
+
+/* An instance of this type is used to represent an solib catchpoint.
+   A breakpoint is really of this type iff its ops pointer points to
+   CATCH_SOLIB_BREAKPOINT_OPS.  */
+
+struct solib_catchpoint : public catchpoint
+{
+  solib_catchpoint (struct gdbarch *gdbarch, bool temp,
+		    const char *cond_string,
+		    bool is_load_, const char *arg)
+    : catchpoint (gdbarch, temp, cond_string),
+      is_load (is_load_),
+      regex (arg == nullptr ? nullptr : make_unique_xstrdup (arg)),
+      compiled (arg == nullptr
+		? nullptr
+		: new compiled_regex (arg, REG_NOSUB, _("Invalid regexp")))
+  {
+  }
+
+  int insert_location (struct bp_location *) override;
+  int remove_location (struct bp_location *,
+		       enum remove_bp_reason reason) override;
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  void check_status (struct bpstat *bs) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  bool print_one (const bp_location **) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+
+  /* True for "catch load", false for "catch unload".  */
+  bool is_load;
+
+  /* Regular expression to match, if any.  COMPILED is only valid when
+     REGEX is non-NULL.  */
+  gdb::unique_xmalloc_ptr<char> regex;
+  std::unique_ptr<compiled_regex> compiled;
+};
+
+int
+solib_catchpoint::insert_location (struct bp_location *ignore)
+{
+  return 0;
+}
+
+int
+solib_catchpoint::remove_location (struct bp_location *ignore,
+				   enum remove_bp_reason reason)
+{
+  return 0;
+}
+
+int
+solib_catchpoint::breakpoint_hit (const struct bp_location *bl,
+				  const address_space *aspace,
+				  CORE_ADDR bp_addr,
+				  const target_waitstatus &ws)
+{
+  if (ws.kind () == TARGET_WAITKIND_LOADED)
+    return 1;
+
+  for (breakpoint &other : all_breakpoints ())
+    {
+      if (&other == bl->owner)
+	continue;
+
+      if (other.type != bp_shlib_event)
+	continue;
+
+      if (pspace != NULL && other.pspace != pspace)
+	continue;
+
+      for (bp_location &other_bl : other.locations ())
+	{
+	  if (other.breakpoint_hit (&other_bl, aspace, bp_addr, ws))
+	    return 1;
+	}
+    }
+
+  return 0;
+}
+
+void
+solib_catchpoint::check_status (struct bpstat *bs)
+{
+  if (is_load)
+    {
+      for (solib *iter : current_program_space->added_solibs)
+	{
+	  if (!regex
+	      || compiled->exec (iter->name.c_str (), 0, nullptr, 0) == 0)
+	    return;
+	}
+    }
+  else
+    {
+      for (const std::string &iter : current_program_space->deleted_solibs)
+	{
+	  if (!regex
+	      || compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
+	    return;
+	}
+    }
+
+  bs->stop = false;
+  bs->print_it = print_it_noop;
+}
+
+enum print_stop_action
+solib_catchpoint::print_it (const bpstat *bs) const
+{
+  struct ui_out *uiout = current_uiout;
+
+  annotate_catchpoint (this->number);
+  maybe_print_thread_hit_breakpoint (uiout);
+  if (this->disposition == disp_del)
+    uiout->text ("Temporary catchpoint ");
+  else
+    uiout->text ("Catchpoint ");
+  uiout->field_signed ("bkptno", this->number);
+  uiout->text ("\n");
+  if (uiout->is_mi_like_p ())
+    uiout->field_string ("disp", bpdisp_text (this->disposition));
+  print_solib_event (true);
+  return PRINT_SRC_AND_LOC;
+}
+
+bool
+solib_catchpoint::print_one (const bp_location **locs) const
+{
+  struct value_print_options opts;
+  struct ui_out *uiout = current_uiout;
+
+  get_user_print_options (&opts);
+  /* Field 4, the address, is omitted (which makes the columns not
+     line up too nicely with the headers, but the effect is relatively
+     readable).  */
+  if (opts.addressprint)
+    {
+      annotate_field (4);
+      uiout->field_skip ("addr");
+    }
+
+  std::string msg;
+  annotate_field (5);
+  if (is_load)
+    {
+      if (regex)
+	msg = string_printf (_("load of library matching %s"),
+			     regex.get ());
+      else
+	msg = _("load of library");
+    }
+  else
+    {
+      if (regex)
+	msg = string_printf (_("unload of library matching %s"),
+			     regex.get ());
+      else
+	msg = _("unload of library");
+    }
+  uiout->field_string ("what", msg);
+
+  if (uiout->is_mi_like_p ())
+    uiout->field_string ("catch-type", is_load ? "load" : "unload");
+
+  return true;
+}
+
+void
+solib_catchpoint::print_mention () const
+{
+  gdb_printf (_("Catchpoint %d (%s)"), number,
+	      is_load ? "load" : "unload");
+}
+
+void
+solib_catchpoint::print_recreate (struct ui_file *fp) const
+{
+  gdb_printf (fp, "%s %s",
+	      disposition == disp_del ? "tcatch" : "catch",
+	      is_load ? "load" : "unload");
+  if (regex)
+    gdb_printf (fp, " %s", regex.get ());
+  gdb_printf (fp, "\n");
+}
+
+/* See breakpoint.h.  */
+
+void
+add_solib_catchpoint (const char *arg, bool is_load, bool is_temp, bool enabled)
+{
+  struct gdbarch *gdbarch = get_current_arch ();
+
+  if (!arg)
+    arg = "";
+  arg = skip_spaces (arg);
+  if (*arg == '\0')
+    arg = nullptr;
+
+  auto c = std::make_unique<solib_catchpoint> (gdbarch, is_temp, nullptr,
+					       is_load, arg);
+
+  c->enable_state = enabled ? bp_enabled : bp_disabled;
+
+  install_breakpoint (0, std::move (c), 1);
+}
+
+/* A helper function that does all the work for "catch load" and
+   "catch unload".  */
+
+static void
+catch_load_or_unload (const char *arg, int from_tty, int is_load,
+		      struct cmd_list_element *command)
+{
+  const int enabled = 1;
+  bool temp = command->context () == CATCH_TEMPORARY;
+
+  add_solib_catchpoint (arg, is_load, temp, enabled);
+}
+
+static void
+catch_load_command_1 (const char *arg, int from_tty,
+		      struct cmd_list_element *command)
+{
+  catch_load_or_unload (arg, from_tty, 1, command);
+}
+
+static void
+catch_unload_command_1 (const char *arg, int from_tty,
+			struct cmd_list_element *command)
+{
+  catch_load_or_unload (arg, from_tty, 0, command);
+}
+
+INIT_GDB_FILE (break_catch_load)
+{
+  add_catch_command ("load", _("Catch loads of shared libraries.\n\
+Usage: catch load [REGEX]\n\
+If REGEX is given, only stop for libraries matching the regular expression."),
+		     catch_load_command_1,
+		     NULL,
+		     CATCH_PERMANENT,
+		     CATCH_TEMPORARY);
+  add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
+Usage: catch unload [REGEX]\n\
+If REGEX is given, only stop for libraries matching the regular expression."),
+		     catch_unload_command_1,
+		     NULL,
+		     CATCH_PERMANENT,
+		     CATCH_TEMPORARY);
+}
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-sig.c ./gdb/break-catch-sig.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-sig.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/break-catch-sig.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Everything about signal catchpoints, for GDB.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,11 +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 "defs.h"
 #include "arch-utils.h"
-#include <ctype.h>
 #include "breakpoint.h"
-#include "gdbcmd.h"
 #include "inferior.h"
 #include "infrun.h"
 #include "annotate.h"
@@ -29,17 +26,39 @@
 #include "cli/cli-utils.h"
 #include "completer.h"
 #include "cli/cli-style.h"
+#include "cli/cli-decode.h"
 
 #include <string>
 
 #define INTERNAL_SIGNAL(x) ((x) == GDB_SIGNAL_TRAP || (x) == GDB_SIGNAL_INT)
 
-/* An instance of this type is used to represent a signal catchpoint.
-   A breakpoint is really of this type iff its ops pointer points to
-   SIGNAL_CATCHPOINT_OPS.  */
+/* An instance of this type is used to represent a signal
+   catchpoint.  */
 
-struct signal_catchpoint : public breakpoint
+struct signal_catchpoint : public catchpoint
 {
+  signal_catchpoint (struct gdbarch *gdbarch, bool temp,
+		     std::vector<gdb_signal> &&sigs,
+		     bool catch_all_)
+    : catchpoint (gdbarch, temp, nullptr),
+      signals_to_be_caught (std::move (sigs)),
+      catch_all (catch_all_)
+  {
+  }
+
+  int insert_location (struct bp_location *) override;
+  int remove_location (struct bp_location *,
+		       enum remove_bp_reason reason) override;
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  bool print_one (const bp_location **) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+  bool explains_signal (enum gdb_signal) override;
+
   /* Signal numbers used for the 'catch signal' feature.  If no signal
      has been specified for filtering, it is empty.  Otherwise,
      it holds a list of all signals to be caught.  */
@@ -54,13 +73,9 @@ struct signal_catchpoint : public breakp
   bool catch_all;
 };
 
-/* The breakpoint_ops structure to be used in signal catchpoints.  */
-
-static struct breakpoint_ops signal_catchpoint_ops;
-
 /* Count of each signal.  */
 
-static unsigned int *signal_catch_counts;
+static unsigned int signal_catch_counts[GDB_SIGNAL_LAST];
 
 
 
@@ -80,13 +95,13 @@ signal_to_name_or_int (enum gdb_signal s
 
 
 
-/* Implement the "insert_location" breakpoint_ops method for signal
-   catchpoints.  */
+/* Implement the "insert_location" method for signal catchpoints.  */
 
-static int
-signal_catchpoint_insert_location (struct bp_location *bl)
+int
+signal_catchpoint::insert_location (struct bp_location *bl)
 {
-  struct signal_catchpoint *c = (struct signal_catchpoint *) bl->owner;
+  signal_catchpoint *c
+    = gdb::checked_static_cast<signal_catchpoint *> (bl->owner);
 
   if (!c->signals_to_be_caught.empty ())
     {
@@ -107,14 +122,14 @@ signal_catchpoint_insert_location (struc
   return 0;
 }
 
-/* Implement the "remove_location" breakpoint_ops method for signal
-   catchpoints.  */
+/* Implement the "remove_location" method for signal catchpoints.  */
 
-static int
-signal_catchpoint_remove_location (struct bp_location *bl,
-				   enum remove_bp_reason reason)
+int
+signal_catchpoint::remove_location (struct bp_location *bl,
+				    enum remove_bp_reason reason)
 {
-  struct signal_catchpoint *c = (struct signal_catchpoint *) bl->owner;
+  signal_catchpoint *c
+    = gdb::checked_static_cast<signal_catchpoint *> (bl->owner);
 
   if (!c->signals_to_be_caught.empty ())
     {
@@ -141,23 +156,22 @@ signal_catchpoint_remove_location (struc
   return 0;
 }
 
-/* Implement the "breakpoint_hit" breakpoint_ops method for signal
-   catchpoints.  */
+/* Implement the "breakpoint_hit" method for signal catchpoints.  */
 
-static int
-signal_catchpoint_breakpoint_hit (const struct bp_location *bl,
-				  const address_space *aspace,
-				  CORE_ADDR bp_addr,
-				  const struct target_waitstatus *ws)
+int
+signal_catchpoint::breakpoint_hit (const struct bp_location *bl,
+				   const address_space *aspace,
+				   CORE_ADDR bp_addr,
+				   const target_waitstatus &ws)
 {
-  const struct signal_catchpoint *c
-    = (const struct signal_catchpoint *) bl->owner;
+  const signal_catchpoint *c
+    = gdb::checked_static_cast<const signal_catchpoint *> (bl->owner);
   gdb_signal signal_number;
 
-  if (ws->kind != TARGET_WAITKIND_STOPPED)
+  if (ws.kind () != TARGET_WAITKIND_STOPPED)
     return 0;
 
-  signal_number = ws->value.sig;
+  signal_number = ws.sig ();
 
   /* If we are catching specific signals in this breakpoint, then we
      must guarantee that the called signal is the same signal we are
@@ -174,38 +188,32 @@ signal_catchpoint_breakpoint_hit (const
     return c->catch_all || !INTERNAL_SIGNAL (signal_number);
 }
 
-/* Implement the "print_it" breakpoint_ops method for signal
-   catchpoints.  */
+/* Implement the "print_it" method for signal catchpoints.  */
 
-static enum print_stop_action
-signal_catchpoint_print_it (bpstat bs)
+enum print_stop_action
+signal_catchpoint::print_it (const bpstat *bs) const
 {
-  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);
+  signal_name = signal_to_name_or_int (last.sig ());
 
-  annotate_catchpoint (b->number);
+  annotate_catchpoint (number);
   maybe_print_thread_hit_breakpoint (uiout);
 
-  printf_filtered (_("Catchpoint %d (signal %s), "), b->number, signal_name);
+  gdb_printf (_("Catchpoint %d (signal %s), "), number, signal_name);
 
   return PRINT_SRC_AND_LOC;
 }
 
-/* Implement the "print_one" breakpoint_ops method for signal
-   catchpoints.  */
+/* Implement the "print_one" method for signal catchpoints.  */
 
-static void
-signal_catchpoint_print_one (struct breakpoint *b,
-			     struct bp_location **last_loc)
+bool
+signal_catchpoint::print_one (const bp_location **last_loc) const
 {
-  struct signal_catchpoint *c = (struct signal_catchpoint *) b;
   struct value_print_options opts;
   struct ui_out *uiout = current_uiout;
 
@@ -218,18 +226,18 @@ signal_catchpoint_print_one (struct brea
     uiout->field_skip ("addr");
   annotate_field (5);
 
-  if (c->signals_to_be_caught.size () > 1)
+  if (signals_to_be_caught.size () > 1)
     uiout->text ("signals \"");
   else
     uiout->text ("signal \"");
 
-  if (!c->signals_to_be_caught.empty ())
+  if (!signals_to_be_caught.empty ())
     {
       std::string text;
 
       bool first = true;
-      for (gdb_signal iter : c->signals_to_be_caught)
-        {
+      for (gdb_signal iter : signals_to_be_caught)
+	{
 	  const char *name = signal_to_name_or_int (iter);
 
 	  if (!first)
@@ -237,75 +245,70 @@ signal_catchpoint_print_one (struct brea
 	  first = false;
 
 	  text += name;
-        }
-      uiout->field_string ("what", text.c_str ());
+	}
+      uiout->field_string ("what", text);
     }
   else
     uiout->field_string ("what",
-			 c->catch_all ? "<any signal>" : "<standard signals>",
+			 catch_all ? "<any signal>" : "<standard signals>",
 			 metadata_style.style ());
   uiout->text ("\" ");
 
   if (uiout->is_mi_like_p ())
     uiout->field_string ("catch-type", "signal");
+
+  return true;
 }
 
-/* Implement the "print_mention" breakpoint_ops method for signal
-   catchpoints.  */
+/* Implement the "print_mention" method for signal catchpoints.  */
 
-static void
-signal_catchpoint_print_mention (struct breakpoint *b)
+void
+signal_catchpoint::print_mention () const
 {
-  struct signal_catchpoint *c = (struct signal_catchpoint *) b;
-
-  if (!c->signals_to_be_caught.empty ())
+  if (!signals_to_be_caught.empty ())
     {
-      if (c->signals_to_be_caught.size () > 1)
-        printf_filtered (_("Catchpoint %d (signals"), b->number);
+      if (signals_to_be_caught.size () > 1)
+	gdb_printf (_("Catchpoint %d (signals"), number);
       else
-        printf_filtered (_("Catchpoint %d (signal"), b->number);
+	gdb_printf (_("Catchpoint %d (signal"), number);
 
-      for (gdb_signal iter : c->signals_to_be_caught)
-        {
+      for (gdb_signal iter : signals_to_be_caught)
+	{
 	  const char *name = signal_to_name_or_int (iter);
 
-	  printf_filtered (" %s", name);
-        }
-      printf_filtered (")");
+	  gdb_printf (" %s", name);
+	}
+      gdb_printf (")");
     }
-  else if (c->catch_all)
-    printf_filtered (_("Catchpoint %d (any signal)"), b->number);
+  else if (catch_all)
+    gdb_printf (_("Catchpoint %d (any signal)"), number);
   else
-    printf_filtered (_("Catchpoint %d (standard signals)"), b->number);
+    gdb_printf (_("Catchpoint %d (standard signals)"), number);
 }
 
-/* Implement the "print_recreate" breakpoint_ops method for signal
-   catchpoints.  */
+/* Implement the "print_recreate" method for signal catchpoints.  */
 
-static void
-signal_catchpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
+void
+signal_catchpoint::print_recreate (struct ui_file *fp) const
 {
-  struct signal_catchpoint *c = (struct signal_catchpoint *) b;
-
-  fprintf_unfiltered (fp, "catch signal");
+  gdb_printf (fp, "catch signal");
 
-  if (!c->signals_to_be_caught.empty ())
+  if (!signals_to_be_caught.empty ())
     {
-      for (gdb_signal iter : c->signals_to_be_caught)
-	fprintf_unfiltered (fp, " %s", signal_to_name_or_int (iter));
+      for (gdb_signal iter : signals_to_be_caught)
+	gdb_printf (fp, " %s", signal_to_name_or_int (iter));
     }
-  else if (c->catch_all)
-    fprintf_unfiltered (fp, " all");
-  fputc_unfiltered ('\n', fp);
+  else if (catch_all)
+    gdb_printf (fp, " all");
+  gdb_putc ('\n', fp);
 }
 
-/* Implement the "explains_signal" breakpoint_ops method for signal
-   catchpoints.  */
+/* Implement the "explains_signal" method for signal catchpoints.  */
 
-static int
-signal_catchpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
+bool
+signal_catchpoint::explains_signal (enum gdb_signal sig)
 {
-  return 1;
+  return true;
 }
 
 /* Create a new signal catchpoint.  TEMPFLAG is true if this should be
@@ -321,10 +324,8 @@ create_signal_catchpoint (int tempflag,
 {
   struct gdbarch *gdbarch = get_current_arch ();
 
-  std::unique_ptr<signal_catchpoint> c (new signal_catchpoint ());
-  init_catchpoint (c.get (), gdbarch, tempflag, NULL, &signal_catchpoint_ops);
-  c->signals_to_be_caught = std::move (filter);
-  c->catch_all = catch_all;
+  std::unique_ptr<signal_catchpoint> c
+    (new signal_catchpoint (gdbarch, tempflag, std::move (filter), catch_all));
 
   install_breakpoint (0, std::move (c), 1);
 }
@@ -390,7 +391,7 @@ catch_signal_command (const char *arg, i
   bool catch_all = false;
   std::vector<gdb_signal> filter;
 
-  tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+  tempflag = command->context () == CATCH_TEMPORARY;
 
   arg = skip_spaces (arg);
 
@@ -406,32 +407,8 @@ catch_signal_command (const char *arg, i
   create_signal_catchpoint (tempflag, std::move (filter), catch_all);
 }
 
-static void
-initialize_signal_catchpoint_ops (void)
+INIT_GDB_FILE (break_catch_sig)
 {
-  struct breakpoint_ops *ops;
-
-  initialize_breakpoint_ops ();
-
-  ops = &signal_catchpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->insert_location = signal_catchpoint_insert_location;
-  ops->remove_location = signal_catchpoint_remove_location;
-  ops->breakpoint_hit = signal_catchpoint_breakpoint_hit;
-  ops->print_it = signal_catchpoint_print_it;
-  ops->print_one = signal_catchpoint_print_one;
-  ops->print_mention = signal_catchpoint_print_mention;
-  ops->print_recreate = signal_catchpoint_print_recreate;
-  ops->explains_signal = signal_catchpoint_explains_signal;
-}
-
-void
-_initialize_break_catch_sig (void)
-{
-  initialize_signal_catchpoint_ops ();
-
-  signal_catch_counts = XCNEWVEC (unsigned int, GDB_SIGNAL_LAST);
-
   add_catch_command ("signal", _("\
 Catch signals by their names and/or numbers.\n\
 Usage: catch signal [[NAME|NUMBER] [NAME|NUMBER]...|all]\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.20200303/gdb/break-catch-syscall.c ./gdb/break-catch-syscall.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-syscall.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/break-catch-syscall.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Everything about syscall catchpoints, for GDB.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,10 +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 "defs.h"
 #include <ctype.h>
 #include "breakpoint.h"
-#include "gdbcmd.h"
 #include "inferior.h"
 #include "cli/cli-utils.h"
 #include "annotate.h"
@@ -30,13 +28,32 @@
 #include "observable.h"
 #include "xml-syscall.h"
 #include "cli/cli-style.h"
+#include "cli/cli-decode.h"
 
-/* An instance of this type is used to represent a syscall catchpoint.
-   A breakpoint is really of this type iff its ops pointer points to
-   CATCH_SYSCALL_BREAKPOINT_OPS.  */
+/* An instance of this type is used to represent a syscall
+   catchpoint.  */
 
-struct syscall_catchpoint : public breakpoint
+struct syscall_catchpoint : public catchpoint
 {
+  syscall_catchpoint (struct gdbarch *gdbarch, bool tempflag,
+		      std::vector<int> &&calls)
+    : catchpoint (gdbarch, tempflag, nullptr),
+      syscalls_to_be_caught (std::move (calls))
+  {
+  }
+
+  int insert_location (struct bp_location *) override;
+  int remove_location (struct bp_location *,
+		       enum remove_bp_reason reason) override;
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  bool print_one (const bp_location **) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+
   /* Syscall numbers used for the 'catch syscall' feature.  If no
      syscall has been specified for filtering, it is empty.
      Otherwise, it holds a list of all syscalls to be caught.  */
@@ -60,7 +77,7 @@ struct catch_syscall_inferior_data
   int total_syscalls_count;
 };
 
-static const struct inferior_key<struct catch_syscall_inferior_data>
+static const registry<inferior>::key<catch_syscall_inferior_data>
   catch_syscall_inferior_data;
 
 static struct catch_syscall_inferior_data *
@@ -75,23 +92,21 @@ get_catch_syscall_inferior_data (struct
   return inf_data;
 }
 
-/* Implement the "insert" breakpoint_ops method for syscall
-   catchpoints.  */
+/* Implement the "insert" method for syscall catchpoints.  */
 
-static int
-insert_catch_syscall (struct bp_location *bl)
+int
+syscall_catchpoint::insert_location (struct bp_location *bl)
 {
-  struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
   struct inferior *inf = current_inferior ();
   struct catch_syscall_inferior_data *inf_data
     = get_catch_syscall_inferior_data (inf);
 
   ++inf_data->total_syscalls_count;
-  if (c->syscalls_to_be_caught.empty ())
+  if (syscalls_to_be_caught.empty ())
     ++inf_data->any_syscall_count;
   else
     {
-      for (int iter : c->syscalls_to_be_caught)
+      for (int iter : syscalls_to_be_caught)
 	{
 	  if (iter >= inf_data->syscalls_counts.size ())
 	    inf_data->syscalls_counts.resize (iter + 1);
@@ -105,29 +120,28 @@ insert_catch_syscall (struct bp_location
 					inf_data->syscalls_counts);
 }
 
-/* Implement the "remove" breakpoint_ops method for syscall
-   catchpoints.  */
+/* Implement the "remove" method for syscall catchpoints.  */
 
-static int
-remove_catch_syscall (struct bp_location *bl, enum remove_bp_reason reason)
+int
+syscall_catchpoint::remove_location (struct bp_location *bl,
+				     enum remove_bp_reason reason)
 {
-  struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
   struct inferior *inf = current_inferior ();
   struct catch_syscall_inferior_data *inf_data
     = get_catch_syscall_inferior_data (inf);
 
   --inf_data->total_syscalls_count;
-  if (c->syscalls_to_be_caught.empty ())
+  if (syscalls_to_be_caught.empty ())
     --inf_data->any_syscall_count;
   else
     {
-      for (int iter : c->syscalls_to_be_caught)
+      for (int iter : syscalls_to_be_caught)
 	{
 	  if (iter >= inf_data->syscalls_counts.size ())
 	    /* Shouldn't happen.  */
 	    continue;
-          --inf_data->syscalls_counts[iter];
-        }
+	  --inf_data->syscalls_counts[iter];
+	}
     }
 
   return target_set_syscall_catchpoint (inferior_ptid.pid (),
@@ -136,31 +150,29 @@ remove_catch_syscall (struct bp_location
 					inf_data->syscalls_counts);
 }
 
-/* Implement the "breakpoint_hit" breakpoint_ops method for syscall
-   catchpoints.  */
+/* Implement the "breakpoint_hit" method for syscall catchpoints.  */
 
-static int
-breakpoint_hit_catch_syscall (const struct bp_location *bl,
-			      const address_space *aspace, CORE_ADDR bp_addr,
-			      const struct target_waitstatus *ws)
+int
+syscall_catchpoint::breakpoint_hit (const struct bp_location *bl,
+				    const address_space *aspace,
+				    CORE_ADDR bp_addr,
+				    const target_waitstatus &ws)
 {
   /* We must check if we are catching specific syscalls in this
      breakpoint.  If we are, then we must guarantee that the called
      syscall is the same syscall we are catching.  */
   int syscall_number = 0;
-  const struct syscall_catchpoint *c
-    = (const struct syscall_catchpoint *) bl->owner;
 
-  if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
-      && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
+  if (ws.kind () != TARGET_WAITKIND_SYSCALL_ENTRY
+      && ws.kind () != TARGET_WAITKIND_SYSCALL_RETURN)
     return 0;
 
-  syscall_number = ws->value.syscall_number;
+  syscall_number = ws.syscall_number ();
 
   /* Now, checking if the syscall is the same.  */
-  if (!c->syscalls_to_be_caught.empty ())
+  if (!syscalls_to_be_caught.empty ())
     {
-      for (int iter : c->syscalls_to_be_caught)
+      for (int iter : syscalls_to_be_caught)
 	if (syscall_number == iter)
 	  return 1;
 
@@ -170,51 +182,47 @@ breakpoint_hit_catch_syscall (const stru
   return 1;
 }
 
-/* Implement the "print_it" breakpoint_ops method for syscall
-   catchpoints.  */
+/* Implement the "print_it" method for syscall catchpoints.  */
 
-static enum print_stop_action
-print_it_catch_syscall (bpstat bs)
+enum print_stop_action
+syscall_catchpoint::print_it (const bpstat *bs) const
 {
   struct ui_out *uiout = current_uiout;
-  struct breakpoint *b = bs->breakpoint_at;
   /* These are needed because we want to know in which state a
      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);
+  get_syscall_by_number (gdbarch, last.syscall_number (), &s);
 
-  annotate_catchpoint (b->number);
+  annotate_catchpoint (this->number);
   maybe_print_thread_hit_breakpoint (uiout);
 
-  if (b->disposition == disp_del)
+  if (this->disposition == disp_del)
     uiout->text ("Temporary catchpoint ");
   else
     uiout->text ("Catchpoint ");
   if (uiout->is_mi_like_p ())
     {
       uiout->field_string ("reason",
-			   async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
+			   async_reason_lookup (last.kind () == TARGET_WAITKIND_SYSCALL_ENTRY
 						? EXEC_ASYNC_SYSCALL_ENTRY
 						: EXEC_ASYNC_SYSCALL_RETURN));
-      uiout->field_string ("disp", bpdisp_text (b->disposition));
+      uiout->field_string ("disp", bpdisp_text (this->disposition));
     }
-  uiout->field_signed ("bkptno", b->number);
+  print_num_locno (bs, uiout);
 
-  if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
+  if (last.kind () == TARGET_WAITKIND_SYSCALL_ENTRY)
     uiout->text (" (call to syscall ");
   else
     uiout->text (" (returned from syscall ");
 
   if (s.name == NULL || uiout->is_mi_like_p ())
-    uiout->field_signed ("syscall-number", last.value.syscall_number);
+    uiout->field_signed ("syscall-number", last.syscall_number ());
   if (s.name != NULL)
     uiout->field_string ("syscall-name", s.name);
 
@@ -223,17 +231,13 @@ print_it_catch_syscall (bpstat bs)
   return PRINT_SRC_AND_LOC;
 }
 
-/* Implement the "print_one" breakpoint_ops method for syscall
-   catchpoints.  */
+/* Implement the "print_one" method for syscall catchpoints.  */
 
-static void
-print_one_catch_syscall (struct breakpoint *b,
-			 struct bp_location **last_loc)
+bool
+syscall_catchpoint::print_one (const bp_location **last_loc) const
 {
-  struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
   struct value_print_options opts;
   struct ui_out *uiout = current_uiout;
-  struct gdbarch *gdbarch = b->loc->gdbarch;
 
   get_user_print_options (&opts);
   /* Field 4, the address, is omitted (which makes the columns not
@@ -243,35 +247,31 @@ print_one_catch_syscall (struct breakpoi
     uiout->field_skip ("addr");
   annotate_field (5);
 
-  if (c->syscalls_to_be_caught.size () > 1)
+  if (syscalls_to_be_caught.size () > 1)
     uiout->text ("syscalls \"");
   else
     uiout->text ("syscall \"");
 
-  if (!c->syscalls_to_be_caught.empty ())
+  if (!syscalls_to_be_caught.empty ())
     {
-      char *text = xstrprintf ("%s", "");
+      std::string text;
 
-      for (int iter : c->syscalls_to_be_caught)
-        {
-          char *previous_text = text;
-          struct syscall s;
-          get_syscall_by_number (gdbarch, iter, &s);
-
-          if (s.name != NULL)
-            text = xstrprintf ("%s%s, ", text, s.name);
-          else
-            text = xstrprintf ("%s%d, ", text, iter);
-
-          /* We have to xfree previous_text because xstrprintf dynamically
-	     allocates new space for text on every call.  */
-	  xfree (previous_text);
-        }
-      /* Remove the last comma.  */
-      text[strlen (text) - 2] = '\0';
-      uiout->field_string ("what", text);
-      /* xfree last text.  */
-      xfree (text);
+      bool first = true;
+      for (int iter : syscalls_to_be_caught)
+	{
+	  struct syscall s;
+	  get_syscall_by_number (gdbarch, iter, &s);
+
+	  if (!first)
+	    text += ", ";
+	  first = false;
+
+	  if (s.name != NULL)
+	    text += s.name;
+	  else
+	    text += std::to_string (iter);
+	}
+      uiout->field_string ("what", text.c_str ());
     }
   else
     uiout->field_string ("what", "<any syscall>", metadata_style.style ());
@@ -279,87 +279,74 @@ print_one_catch_syscall (struct breakpoi
 
   if (uiout->is_mi_like_p ())
     uiout->field_string ("catch-type", "syscall");
+
+  return true;
 }
 
-/* Implement the "print_mention" breakpoint_ops method for syscall
-   catchpoints.  */
+/* Implement the "print_mention" method for syscall catchpoints.  */
 
-static void
-print_mention_catch_syscall (struct breakpoint *b)
+void
+syscall_catchpoint::print_mention () const
 {
-  struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
-  struct gdbarch *gdbarch = b->loc->gdbarch;
-
-  if (!c->syscalls_to_be_caught.empty ())
+  if (!syscalls_to_be_caught.empty ())
     {
-      if (c->syscalls_to_be_caught.size () > 1)
-        printf_filtered (_("Catchpoint %d (syscalls"), b->number);
+      if (syscalls_to_be_caught.size () > 1)
+	gdb_printf (_("Catchpoint %d (syscalls"), number);
       else
-        printf_filtered (_("Catchpoint %d (syscall"), b->number);
+	gdb_printf (_("Catchpoint %d (syscall"), number);
+
+      for (int iter : syscalls_to_be_caught)
+	{
+	  struct syscall s;
+	  get_syscall_by_number (gdbarch, iter, &s);
 
-      for (int iter : c->syscalls_to_be_caught)
-        {
-          struct syscall s;
-          get_syscall_by_number (gdbarch, iter, &s);
-
-          if (s.name != NULL)
-            printf_filtered (" '%s' [%d]", s.name, s.number);
-          else
-            printf_filtered (" %d", s.number);
-        }
-      printf_filtered (")");
+	  if (s.name != NULL)
+	    gdb_printf (" '%s' [%d]", s.name, s.number);
+	  else
+	    gdb_printf (" %d", s.number);
+	}
+      gdb_printf (")");
     }
   else
-    printf_filtered (_("Catchpoint %d (any syscall)"),
-                     b->number);
+    gdb_printf (_("Catchpoint %d (any syscall)"), number);
 }
 
-/* Implement the "print_recreate" breakpoint_ops method for syscall
-   catchpoints.  */
+/* Implement the "print_recreate" method for syscall catchpoints.  */
 
-static void
-print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
+void
+syscall_catchpoint::print_recreate (struct ui_file *fp) const
 {
-  struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
-  struct gdbarch *gdbarch = b->loc->gdbarch;
-
-  fprintf_unfiltered (fp, "catch syscall");
+  gdb_printf (fp, "catch syscall");
 
-  for (int iter : c->syscalls_to_be_caught)
+  for (int iter : syscalls_to_be_caught)
     {
       struct syscall s;
 
       get_syscall_by_number (gdbarch, iter, &s);
       if (s.name != NULL)
-	fprintf_unfiltered (fp, " %s", s.name);
+	gdb_printf (fp, " %s", s.name);
       else
-	fprintf_unfiltered (fp, " %d", s.number);
+	gdb_printf (fp, " %d", s.number);
     }
 
-  print_recreate_thread (b, fp);
+  print_recreate_thread (fp);
 }
 
-/* The breakpoint_ops structure to be used in syscall catchpoints.  */
-
-static struct breakpoint_ops catch_syscall_breakpoint_ops;
-
 /* Returns non-zero if 'b' is a syscall catchpoint.  */
 
 static int
 syscall_catchpoint_p (struct breakpoint *b)
 {
-  return (b->ops == &catch_syscall_breakpoint_ops);
+  return dynamic_cast<syscall_catchpoint *> (b) != nullptr;
 }
 
 static void
-create_syscall_event_catchpoint (int tempflag, std::vector<int> &&filter,
-                                 const struct breakpoint_ops *ops)
+create_syscall_event_catchpoint (int tempflag, std::vector<int> &&filter)
 {
   struct gdbarch *gdbarch = get_current_arch ();
 
-  std::unique_ptr<syscall_catchpoint> c (new syscall_catchpoint ());
-  init_catchpoint (c.get (), gdbarch, tempflag, NULL, ops);
-  c->syscalls_to_be_caught = std::move (filter);
+  std::unique_ptr<syscall_catchpoint> c
+    (new syscall_catchpoint (gdbarch, tempflag, std::move (filter)));
 
   install_breakpoint (0, std::move (c), 1);
 }
@@ -370,7 +357,7 @@ static std::vector<int>
 catch_syscall_split_args (const char *arg)
 {
   std::vector<int> result;
-  struct gdbarch *gdbarch = target_gdbarch ();
+  gdbarch *gdbarch = current_inferior ()->arch ();
 
   while (*arg != '\0')
     {
@@ -391,6 +378,8 @@ catch_syscall_split_args (const char *ar
       syscall_number = (int) strtol (cur_name, &endptr, 0);
       if (*endptr == '\0')
 	{
+	  if (syscall_number < 0)
+	    error (_("Unknown syscall number '%d'."), syscall_number);
 	  get_syscall_by_number (gdbarch, syscall_number, &s);
 	  result.push_back (s.number);
 	}
@@ -433,12 +422,12 @@ catch_syscall_command_1 (const char *arg
   struct syscall s;
   struct gdbarch *gdbarch = get_current_arch ();
 
-  /* Checking if the feature if supported.  */
+  /* Checking if the feature is supported.  */
   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
     error (_("The feature 'catch syscall' is not supported on \
 this architecture yet."));
 
-  tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+  tempflag = command->context () == CATCH_TEMPORARY;
 
   arg = skip_spaces (arg);
 
@@ -457,8 +446,7 @@ this architecture yet."));
   if (arg != NULL)
     filter = catch_syscall_split_args (arg);
 
-  create_syscall_event_catchpoint (tempflag, std::move (filter),
-				   &catch_syscall_breakpoint_ops);
+  create_syscall_event_catchpoint (tempflag, std::move (filter));
 }
 
 
@@ -475,8 +463,10 @@ is_syscall_catchpoint_enabled (struct br
     return 0;
 }
 
-int
-catch_syscall_enabled (void)
+/* See breakpoint.h.  */
+
+bool
+catch_syscall_enabled ()
 {
   struct catch_syscall_inferior_data *inf_data
     = get_catch_syscall_inferior_data (current_inferior ());
@@ -484,40 +474,38 @@ catch_syscall_enabled (void)
   return inf_data->total_syscalls_count != 0;
 }
 
-/* Helper function for catching_syscall_number.  If B is a syscall
-   catchpoint for SYSCALL_NUMBER, return 1 (which will make
-   'breakpoint_find_if' return).  Otherwise, return 0.  */
+/* Helper function for catching_syscall_number.  return true if B is a syscall
+   catchpoint for SYSCALL_NUMBER, else false.  */
 
-static int
-catching_syscall_number_1 (struct breakpoint *b,
-			   void *data)
+static bool
+catching_syscall_number_1 (struct breakpoint *b, int syscall_number)
 {
-  int syscall_number = (int) (uintptr_t) data;
-
   if (is_syscall_catchpoint_enabled (b))
     {
-      struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
+      syscall_catchpoint *c
+	= gdb::checked_static_cast<syscall_catchpoint *> (b);
 
       if (!c->syscalls_to_be_caught.empty ())
 	{
 	  for (int iter : c->syscalls_to_be_caught)
 	    if (syscall_number == iter)
-	      return 1;
+	      return true;
 	}
       else
-	return 1;
+	return true;
     }
 
-  return 0;
+  return false;
 }
 
-int
+bool
 catching_syscall_number (int syscall_number)
 {
-  struct breakpoint *b = breakpoint_find_if (catching_syscall_number_1,
-					 (void *) (uintptr_t) syscall_number);
+  for (breakpoint &b : all_breakpoints ())
+    if (catching_syscall_number_1 (&b, syscall_number))
+      return true;
 
-  return b != NULL;
+  return false;
 }
 
 /* Complete syscall names.  Used by "catch syscall".  */
@@ -525,7 +513,7 @@ catching_syscall_number (int syscall_num
 static void
 catch_syscall_completer (struct cmd_list_element *cmd,
 			 completion_tracker &tracker,
-                         const char *text, const char *word)
+			 const char *text, const char *word)
 {
   struct gdbarch *gdbarch = get_current_arch ();
   gdb::unique_xmalloc_ptr<const char *> group_list;
@@ -581,31 +569,10 @@ clear_syscall_counts (struct inferior *i
   inf_data->syscalls_counts.clear ();
 }
 
-static void
-initialize_syscall_catchpoint_ops (void)
+INIT_GDB_FILE (break_catch_syscall)
 {
-  struct breakpoint_ops *ops;
-
-  initialize_breakpoint_ops ();
-
-  /* Syscall catchpoints.  */
-  ops = &catch_syscall_breakpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->insert_location = insert_catch_syscall;
-  ops->remove_location = remove_catch_syscall;
-  ops->breakpoint_hit = breakpoint_hit_catch_syscall;
-  ops->print_it = print_it_catch_syscall;
-  ops->print_one = print_one_catch_syscall;
-  ops->print_mention = print_mention_catch_syscall;
-  ops->print_recreate = print_recreate_catch_syscall;
-}
-
-void
-_initialize_break_catch_syscall (void)
-{
-  initialize_syscall_catchpoint_ops ();
-
-  gdb::observers::inferior_exit.attach (clear_syscall_counts);
+  gdb::observers::inferior_exit.attach (clear_syscall_counts,
+					"break-catch-syscall");
 
   add_catch_command ("syscall", _("\
 Catch system calls by their names, groups and/or numbers.\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.20200303/gdb/break-catch-throw.c ./gdb/break-catch-throw.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-catch-throw.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/break-catch-throw.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Everything about catch/throw catchpoints, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,25 +17,21 @@
    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 <ctype.h>
 #include "breakpoint.h"
-#include "gdbcmd.h"
+#include "exceptions.h"
 #include "inferior.h"
 #include "annotate.h"
 #include "valprint.h"
 #include "cli/cli-utils.h"
-#include "completer.h"
-#include "gdb_obstack.h"
 #include "mi/mi-common.h"
-#include "linespec.h"
 #include "probe.h"
-#include "objfiles.h"
 #include "cp-abi.h"
-#include "gdb_regex.h"
+#include "gdbsupport/gdb_regex.h"
 #include "cp-support.h"
 #include "location.h"
+#include "cli/cli-decode.h"
 
 /* Each spot where we may place an exception-related catchpoint has
    two names: the SDT probe point and the function name.  This
@@ -62,12 +58,37 @@ static const struct exception_names exce
   { "-probe-stap libstdcxx:catch", "__cxa_begin_catch" }
 };
 
-static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
+/* The type of an exception catchpoint.  Unlike most catchpoints, this
+   one is implemented with code breakpoints, so it inherits struct
+   code_breakpoint, not struct catchpoint.  */
+
+struct exception_catchpoint : public code_breakpoint
+{
+  exception_catchpoint (struct gdbarch *gdbarch,
+			bool temp, const char *cond_string_,
+			enum exception_event_kind kind_,
+			std::string &&except_rx)
+    : code_breakpoint (gdbarch, bp_catchpoint, temp, cond_string_),
+      kind (kind_),
+      exception_rx (std::move (except_rx)),
+      pattern (exception_rx.empty ()
+	       ? nullptr
+	       : new compiled_regex (exception_rx.c_str (), REG_NOSUB,
+				     _("invalid type-matching regexp")))
+  {
+    pspace = current_program_space;
+    re_set (pspace);
+  }
+
+  void re_set (program_space *pspace) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  bool print_one (const bp_location **) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+  void print_one_detail (struct ui_out *) const override;
+  void check_status (struct bpstat *bs) override;
+  struct bp_location *allocate_location () override;
 
-/* The type of an exception catchpoint.  */
-
-struct exception_catchpoint : public breakpoint
-{
   /* The kind of exception catchpoint.  */
 
   enum exception_event_kind kind;
@@ -88,7 +109,7 @@ struct exception_catchpoint : public bre
 bool
 is_exception_catchpoint (breakpoint *bp)
 {
-  return bp->ops == &gnu_v3_exception_catchpoint_ops;
+  return dynamic_cast<exception_catchpoint *> (bp) != nullptr;
 }
 
 
@@ -100,7 +121,7 @@ is_exception_catchpoint (breakpoint *bp)
 static void
 fetch_probe_arguments (struct value **arg0, struct value **arg1)
 {
-  struct frame_info *frame = get_selected_frame (_("No frame selected"));
+  frame_info_ptr frame = get_selected_frame (_("No frame selected"));
   CORE_ADDR pc = get_frame_pc (frame);
   struct bound_probe pc_probe;
   unsigned n_args;
@@ -129,72 +150,60 @@ fetch_probe_arguments (struct value **ar
 
 
 
-/* A helper function that returns a value indicating the kind of the
-   exception catchpoint B.  */
-
-static enum exception_event_kind
-classify_exception_breakpoint (struct breakpoint *b)
-{
-  struct exception_catchpoint *cp = (struct exception_catchpoint *) b;
-
-  return cp->kind;
-}
-
 /* Implement the 'check_status' method.  */
 
-static void
-check_status_exception_catchpoint (struct bpstats *bs)
+void
+exception_catchpoint::check_status (struct bpstat *bs)
 {
-  struct exception_catchpoint *self
-    = (struct exception_catchpoint *) bs->breakpoint_at;
   std::string type_name;
 
-  bkpt_breakpoint_ops.check_status (bs);
-  if (bs->stop == 0)
+  this->breakpoint::check_status (bs);
+  if (!bs->stop)
     return;
 
-  if (self->pattern == NULL)
+  if (this->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)
-	bs->stop = 0;
+      if (this->pattern->exec (name, 0, NULL, 0) != 0)
+	bs->stop = false;
     }
 }
 
 /* Implement the 're_set' method.  */
 
-static void
-re_set_exception_catchpoint (struct breakpoint *self)
+void
+exception_catchpoint::re_set (program_space *pspace)
 {
   std::vector<symtab_and_line> sals;
-  enum exception_event_kind kind = classify_exception_breakpoint (self);
   struct program_space *filter_pspace = current_program_space;
 
   /* We first try to use the probe interface.  */
   try
     {
-      event_location_up location
-	= new_probe_location (exception_functions[kind].probe);
-      sals = parse_probes (location.get (), filter_pspace, NULL);
+      location_spec_up locspec
+	= new_probe_location_spec (exception_functions[kind].probe);
+      sals = parse_probes (locspec.get (), filter_pspace, NULL);
     }
   catch (const gdb_exception_error &e)
     {
@@ -202,14 +211,10 @@ re_set_exception_catchpoint (struct brea
 	 catchpoint mode.  */
       try
 	{
-	  struct explicit_location explicit_loc;
-
-	  initialize_explicit_location (&explicit_loc);
-	  explicit_loc.function_name
-	    = ASTRDUP (exception_functions[kind].function);
-	  event_location_up location = new_explicit_location (&explicit_loc);
-	  sals = self->ops->decode_location (self, location.get (),
-					     filter_pspace);
+	  location_spec_up locspec
+	    = (new_explicit_location_spec_function
+	       (exception_functions[kind].function));
+	  sals = this->decode_location_spec (locspec.get (), filter_pspace);
 	}
       catch (const gdb_exception_error &ex)
 	{
@@ -220,24 +225,22 @@ re_set_exception_catchpoint (struct brea
 	}
     }
 
-  update_breakpoint_locations (self, filter_pspace, sals, {});
+  update_breakpoint_locations (this, filter_pspace, sals, {});
 }
 
-static enum print_stop_action
-print_it_exception_catchpoint (bpstat bs)
+enum print_stop_action
+exception_catchpoint::print_it (const bpstat *bs) const
 {
   struct ui_out *uiout = current_uiout;
-  struct breakpoint *b = bs->breakpoint_at;
   int bp_temp;
-  enum exception_event_kind kind = classify_exception_breakpoint (b);
 
-  annotate_catchpoint (b->number);
+  annotate_catchpoint (number);
   maybe_print_thread_hit_breakpoint (uiout);
 
-  bp_temp = b->disposition == disp_del;
+  bp_temp = disposition == disp_del;
   uiout->text (bp_temp ? "Temporary catchpoint "
 		       : "Catchpoint ");
-  uiout->field_signed ("bkptno", b->number);
+  print_num_locno (bs, uiout);
   uiout->text ((kind == EX_EVENT_THROW ? " (exception thrown), "
 		: (kind == EX_EVENT_CATCH ? " (exception caught), "
 		   : " (exception rethrown), ")));
@@ -245,18 +248,16 @@ print_it_exception_catchpoint (bpstat bs
     {
       uiout->field_string ("reason",
 			   async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
-      uiout->field_string ("disp", bpdisp_text (b->disposition));
+      uiout->field_string ("disp", bpdisp_text (disposition));
     }
   return PRINT_SRC_AND_LOC;
 }
 
-static void
-print_one_exception_catchpoint (struct breakpoint *b, 
-				struct bp_location **last_loc)
+bool
+exception_catchpoint::print_one (const bp_location **last_loc) const
 {
   struct value_print_options opts;
   struct ui_out *uiout = current_uiout;
-  enum exception_event_kind kind = classify_exception_breakpoint (b);
 
   get_user_print_options (&opts);
 
@@ -284,75 +285,70 @@ print_one_exception_catchpoint (struct b
 	uiout->field_string ("catch-type", "catch");
       break;
     }
+
+  return true;
 }
 
 /* Implement the 'print_one_detail' method.  */
 
-static void
-print_one_detail_exception_catchpoint (const struct breakpoint *b,
-				       struct ui_out *uiout)
+void
+exception_catchpoint::print_one_detail (struct ui_out *uiout) const
 {
-  const struct exception_catchpoint *cp
-    = (const struct exception_catchpoint *) b;
-
-  if (!cp->exception_rx.empty ())
+  if (!exception_rx.empty ())
     {
       uiout->text (_("\tmatching: "));
-      uiout->field_string ("regexp", cp->exception_rx.c_str ());
+      uiout->field_string ("regexp", exception_rx);
       uiout->text ("\n");
     }
 }
 
-static void
-print_mention_exception_catchpoint (struct breakpoint *b)
+void
+exception_catchpoint::print_mention () const
 {
   struct ui_out *uiout = current_uiout;
   int bp_temp;
-  enum exception_event_kind kind = classify_exception_breakpoint (b);
 
-  bp_temp = b->disposition == disp_del;
+  bp_temp = disposition == disp_del;
   uiout->message ("%s %d %s",
 		  (bp_temp ? _("Temporary catchpoint ") : _("Catchpoint")),
-		  b->number,
+		  number,
 		  (kind == EX_EVENT_THROW
 		   ? _("(throw)") : (kind == EX_EVENT_CATCH
 				     ? _("(catch)") : _("(rethrow)"))));
 }
 
-/* Implement the "print_recreate" breakpoint_ops method for throw and
-   catch catchpoints.  */
+/* Implement the "print_recreate" method for throw and catch
+   catchpoints.  */
 
-static void
-print_recreate_exception_catchpoint (struct breakpoint *b, 
-				     struct ui_file *fp)
+void
+exception_catchpoint::print_recreate (struct ui_file *fp) const
 {
   int bp_temp;
-  enum exception_event_kind kind = classify_exception_breakpoint (b);
 
-  bp_temp = b->disposition == disp_del;
-  fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
+  bp_temp = disposition == disp_del;
+  gdb_printf (fp, bp_temp ? "tcatch " : "catch ");
   switch (kind)
     {
     case EX_EVENT_THROW:
-      fprintf_unfiltered (fp, "throw");
+      gdb_printf (fp, "throw");
       break;
     case EX_EVENT_CATCH:
-      fprintf_unfiltered (fp, "catch");
+      gdb_printf (fp, "catch");
       break;
     case EX_EVENT_RETHROW:
-      fprintf_unfiltered (fp, "rethrow");
+      gdb_printf (fp, "rethrow");
       break;
     }
-  print_recreate_thread (b, fp);
+  print_recreate_thread (fp);
 }
 
-/* Implement the "allocate_location" breakpoint_ops method for throw
-   and catch catchpoints.  */
+/* Implement the "allocate_location" method for throw and catch
+   catchpoints.  */
 
-static bp_location *
-allocate_location_exception_catchpoint (breakpoint *self)
+bp_location *
+exception_catchpoint::allocate_location ()
 {
-  return new bp_location (self, bp_loc_software_breakpoint);
+  return new bp_location (this, bp_loc_software_breakpoint);
 }
 
 static void
@@ -360,23 +356,11 @@ handle_gnu_v3_exceptions (int tempflag,
 			  const char *cond_string,
 			  enum exception_event_kind ex_event, int from_tty)
 {
-  std::unique_ptr<compiled_regex> pattern;
-
-  if (!except_rx.empty ())
-    {
-      pattern.reset (new compiled_regex (except_rx.c_str (), REG_NOSUB,
-					 _("invalid type-matching regexp")));
-    }
-
-  std::unique_ptr<exception_catchpoint> cp (new exception_catchpoint ());
+  struct gdbarch *gdbarch = get_current_arch ();
 
-  init_catchpoint (cp.get (), get_current_arch (), tempflag, cond_string,
-		   &gnu_v3_exception_catchpoint_ops);
-  cp->kind = ex_event;
-  cp->exception_rx = std::move (except_rx);
-  cp->pattern = std::move (pattern);
-
-  re_set_exception_catchpoint (cp.get ());
+  std::unique_ptr<exception_catchpoint> cp
+    (new exception_catchpoint (gdbarch, tempflag, cond_string,
+			       ex_event, std::move (except_rx)));
 
   install_breakpoint (0, std::move (cp), 1);
 }
@@ -454,7 +438,7 @@ static void
 catch_catch_command (const char *arg, int from_tty,
 		     struct cmd_list_element *command)
 {
-  bool tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+  bool tempflag = command->context () == CATCH_TEMPORARY;
 
   catch_exception_event (EX_EVENT_CATCH, arg, tempflag, from_tty);
 }
@@ -465,7 +449,7 @@ static void
 catch_throw_command (const char *arg, int from_tty,
 		     struct cmd_list_element *command)
 {
-  bool tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+  bool tempflag = command->context () == CATCH_TEMPORARY;
 
   catch_exception_event (EX_EVENT_THROW, arg, tempflag, from_tty);
 }
@@ -476,7 +460,7 @@ static void
 catch_rethrow_command (const char *arg, int from_tty,
 		       struct cmd_list_element *command)
 {
-  bool tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
+  bool tempflag = command->context () == CATCH_TEMPORARY;
 
   catch_exception_event (EX_EVENT_RETHROW, arg, tempflag, from_tty);
 }
@@ -507,53 +491,29 @@ static const struct internalvar_funcs ex
 {
   compute_exception,
   NULL,
-  NULL
 };
 
 
 
-static void
-initialize_throw_catchpoint_ops (void)
+INIT_GDB_FILE (break_catch_throw)
 {
-  struct breakpoint_ops *ops;
-
-  initialize_breakpoint_ops ();
-
-  /* GNU v3 exception catchpoints.  */
-  ops = &gnu_v3_exception_catchpoint_ops;
-  *ops = bkpt_breakpoint_ops;
-  ops->re_set = re_set_exception_catchpoint;
-  ops->print_it = print_it_exception_catchpoint;
-  ops->print_one = print_one_exception_catchpoint;
-  ops->print_mention = print_mention_exception_catchpoint;
-  ops->print_recreate = print_recreate_exception_catchpoint;
-  ops->print_one_detail = print_one_detail_exception_catchpoint;
-  ops->check_status = check_status_exception_catchpoint;
-  ops->allocate_location = allocate_location_exception_catchpoint;
-}
-
-void
-_initialize_break_catch_throw (void)
-{
-  initialize_throw_catchpoint_ops ();
-
   /* Add catch and tcatch sub-commands.  */
   add_catch_command ("catch", _("\
 Catch an exception, when caught."),
 		     catch_catch_command,
-                     NULL,
+		     NULL,
 		     CATCH_PERMANENT,
 		     CATCH_TEMPORARY);
   add_catch_command ("throw", _("\
 Catch an exception, when thrown."),
 		     catch_throw_command,
-                     NULL,
+		     NULL,
 		     CATCH_PERMANENT,
 		     CATCH_TEMPORARY);
   add_catch_command ("rethrow", _("\
 Catch an exception, when rethrown."),
 		     catch_rethrow_command,
-                     NULL,
+		     NULL,
 		     CATCH_PERMANENT,
 		     CATCH_TEMPORARY);
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-cond-parse.c ./gdb/break-cond-parse.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-cond-parse.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/break-cond-parse.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,693 @@
+/* Copyright (C) 2023-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+#include "defs.h"
+#include "gdbsupport/gdb_assert.h"
+#include "gdbsupport/selftest.h"
+#include "test-target.h"
+#include "scoped-mock-context.h"
+#include "break-cond-parse.h"
+#include "tid-parse.h"
+#include "ada-lang.h"
+
+/* When parsing tokens from a string, which direction are we parsing?
+
+   Given the following string and pointer 'ptr':
+
+	ABC DEF GHI JKL
+	       ^
+	       ptr
+
+   Parsing 'forward' will return the token 'GHI' and update 'ptr' to point
+   between GHI and JKL.  Parsing 'backward' will return the token 'DEF' and
+   update 'ptr' to point between ABC and DEF.
+*/
+
+enum class parse_direction
+{
+  /* Parse the next token forwards.  */
+  forward,
+
+  /* Parse the previous token backwards.  */
+  backward
+};
+
+/* Find the next token in DIRECTION from *CURR.  */
+
+static std::string_view
+find_next_token (const char **curr, parse_direction direction)
+{
+  const char *tok_start, *tok_end;
+
+  gdb_assert (**curr != '\0');
+
+  if (direction == parse_direction::forward)
+    {
+      *curr = skip_spaces (*curr);
+      tok_start = *curr;
+      *curr = skip_to_space (*curr);
+      tok_end = *curr - 1;
+    }
+  else
+    {
+      gdb_assert (direction == parse_direction::backward);
+
+      while (isspace (**curr))
+	--(*curr);
+
+      tok_end = *curr;
+
+      while (!isspace (**curr))
+	--(*curr);
+
+      tok_start = (*curr) + 1;
+    }
+
+  return std::string_view (tok_start, tok_end - tok_start + 1);
+}
+
+/* A class that represents a complete parsed token.  Each token has a type
+   and a std::string_view into the original breakpoint condition string.  */
+
+struct token
+{
+  /* The types a token might take.  */
+  enum class type
+  {
+    /* These are the token types for the 'if', 'thread', 'inferior', and
+       'task' keywords.  The m_content for these token types is the value
+       passed to the keyword, not the keyword itself.  */
+    CONDITION,
+    THREAD,
+    INFERIOR,
+    TASK,
+
+    /* This is the token used when we find unknown content, the m_content
+       for this token is the rest of the input string.  */
+    REST,
+
+    /* This is the token for the -force-condition token, the m_content for
+       this token contains the keyword itself.  */
+    FORCE
+  };
+
+  token (enum type type, std::string_view content)
+    : m_type (type),
+      m_content (std::move (content))
+  {
+    /* Nothing.  */
+  }
+
+  /* Return a string representing this token.  Only used for debug.  */
+  std::string to_string () const
+  {
+    switch (m_type)
+      {
+      case type::CONDITION:
+	return string_printf ("{ CONDITION: \"%s\" }",
+			      std::string (m_content).c_str ());
+      case type::THREAD:
+	return string_printf ("{ THREAD: \"%s\" }",
+			      std::string (m_content).c_str ());
+      case type::INFERIOR:
+	return string_printf ("{ INFERIOR: \"%s\" }",
+			      std::string (m_content).c_str ());
+      case type::TASK:
+	return string_printf ("{ TASK: \"%s\" }",
+			      std::string (m_content).c_str ());
+      case type::REST:
+	return string_printf ("{ REST: \"%s\" }",
+			      std::string (m_content).c_str ());
+      case type::FORCE:
+	return string_printf ("{ FORCE }");
+      default:
+	return "** unknown **";
+      }
+  }
+
+  /* The type of this token.  */
+  const type &get_type () const
+  {
+    return m_type;
+  }
+
+  /* Return the value of this token.  */
+  const std::string_view &get_value () const
+  {
+    gdb_assert (m_content.size () > 0);
+    return m_content;
+  }
+
+  /* Extend this token with the contents of OTHER.  This only makes sense
+     if OTHER is the next token after this one in the original string,
+     however, enforcing that restriction is left to the caller of this
+     function.
+
+     When OTHER is a keyword/value token, e.g. 'thread 1', the m_content
+     for OTHER will only point to the '1'.  However, as the m_content is a
+     std::string_view, then when we merge the m_content of OTHER into this
+     token we automatically merge in the 'thread' part too, as it
+     naturally sits between this token and OTHER.  */
+
+  void
+  extend (const token &other)
+  {
+    m_content = std::string_view (this->m_content.data (),
+				  (other.m_content.data ()
+				   - this->m_content.data ()
+				   + other.m_content.size ()));
+  }
+
+private:
+  /* The type of this token.  */
+  type m_type;
+
+  /* The important content part of this token.  The extend member function
+     depends on this being a std::string_view.  */
+  std::string_view m_content;
+};
+
+/* Split STR, a breakpoint condition string, into a vector of tokens where
+   each token represents a component of the condition.  Tokens are first
+   parsed from the front of STR until we encounter an 'if' token.  At this
+   point tokens are parsed from the end of STR until we encounter an
+   unknown token, which we assume is the other end of the 'if' condition.
+   If when scanning forward we encounter an unknown token then the
+   remainder of STR is placed into a 'rest' token (the rest of the
+   string), and no backward scan is performed.  */
+
+static std::vector<token>
+parse_all_tokens (const char *str)
+{
+  gdb_assert (str != nullptr);
+
+  std::vector<token> forward_results;
+  std::vector<token> backward_results;
+
+  const char *cond_start = nullptr;
+  const char *cond_end = nullptr;
+  parse_direction direction = parse_direction::forward;
+  std::vector<token> *curr_results = &forward_results;
+  while (*str != '\0')
+    {
+      /* Find the next token.  If moving backward and this token starts at
+	 the same location as the condition then we must have found the
+	 other end of the condition string -- we're done.  */
+      std::string_view t = find_next_token (&str, direction);
+      if (direction == parse_direction::backward && t.data () <= cond_start)
+	{
+	  cond_end = &t.back ();
+	  break;
+	}
+
+      /* We only have a single flag option to check for.  All the other
+	 options take a value so require an additional token to be found.
+	 Additionally, we require that this flag be at least '-f', we
+	 don't allow it to be abbreviated to '-'.  */
+      if (t.length () > 1 && startswith ("-force-condition", t))
+	{
+	  curr_results->emplace_back (token::type::FORCE, t);
+	  continue;
+	}
+
+      /* Maybe the first token was the last token in the string.  If this
+	 is the case then we definitely can't try to extract a value
+	 token.  This also means that the token T is meaningless.  Reset
+	 TOK to point at the start of the unknown content and break out of
+	 the loop.  We'll record the unknown part of the string outside of
+	 the scanning loop (below).  */
+      if (direction == parse_direction::forward && *str == '\0')
+	{
+	  str = t.data ();
+	  break;
+	}
+
+      /* As before, find the next token and, if we are scanning backwards,
+	 check that we have not reached the start of the condition string.  */
+      std::string_view v = find_next_token (&str, direction);
+      if (direction == parse_direction::backward && v.data () <= cond_start)
+	{
+	  /* Use token T here as that must also be part of the condition
+	     string.  */
+	  cond_end = &t.back ();
+	  break;
+	}
+
+      /* When moving backward we will first parse the value token then the
+	 keyword token, so swap them now.  */
+      if (direction == parse_direction::backward)
+	std::swap (t, v);
+
+      /* Check for valid option in token T.  If we find a valid option then
+	 parse the value from the token V.  Except for 'if', that's handled
+	 differently.
+
+	 For the 'if' token we need to capture the entire condition
+	 string, so record the start of the condition string and then
+	 start scanning backwards looking for the end of the condition
+	 string.
+
+	 The order of these checks is important, at least the check for
+	 'thread' must occur before the check for 'task'.  We accept
+	 abbreviations of these token names, and 't' should resolve to
+	 'thread', which will only happen if we check 'thread' first.  */
+      if (direction == parse_direction::forward && startswith ("if", t))
+	{
+	  cond_start = v.data ();
+	  str = str + strlen (str);
+	  gdb_assert (*str == '\0');
+	  --str;
+	  direction = parse_direction::backward;
+	  curr_results = &backward_results;
+	  continue;
+	}
+      else if (startswith ("thread", t))
+	curr_results->emplace_back (token::type::THREAD, v);
+      else if (startswith ("inferior", t))
+	curr_results->emplace_back (token::type::INFERIOR, v);
+      else if (startswith ("task", t))
+	curr_results->emplace_back (token::type::TASK, v);
+      else
+	{
+	  /* An unknown token.  If we are scanning forward then reset TOK
+	     to point at the start of the unknown content, we record this
+	     outside of the scanning loop (below).
+
+	     If we are scanning backward then unknown content is assumed to
+	     be the other end of the condition string, obviously, this is
+	     just a heuristic, we could be looking at a mistyped command
+	     line, but this will be spotted when the condition is
+	     eventually evaluated.
+
+	     Either way, no more scanning is required after this.  */
+	  if (direction == parse_direction::forward)
+	    str = t.data ();
+	  else
+	    {
+	      gdb_assert (direction == parse_direction::backward);
+	      cond_end = &v.back ();
+	    }
+	  break;
+	}
+    }
+
+  if (cond_start != nullptr)
+    {
+      /* If we found the start of a condition string then we should have
+	 switched to backward scan mode, and found the end of the condition
+	 string.  Capture the whole condition string into COND_STRING
+	 now.  */
+      gdb_assert (direction == parse_direction::backward);
+      gdb_assert (cond_end != nullptr);
+
+      std::string_view v (cond_start, cond_end - cond_start + 1);
+
+      forward_results.emplace_back (token::type::CONDITION, v);
+    }
+  else if (*str != '\0')
+    {
+      /* If we didn't have a condition start pointer then we should still
+	 be in forward scanning mode.  If we didn't reach the end of the
+	 input string (TOK is not at the null character) then the rest of
+	 the input string is garbage that we didn't understand.
+
+	 Record the unknown content into REST.  The caller of this function
+	 will report this as an error later on.  We could report the error
+	 here, but we prefer to allow the caller to run other checks, and
+	 prioritise other errors before reporting this problem.  */
+      gdb_assert (direction == parse_direction::forward);
+      gdb_assert (cond_end == nullptr);
+
+      std::string_view v (str, strlen (str));
+
+      forward_results.emplace_back (token::type::REST, v);
+    }
+
+  /* If we have tokens in the BACKWARD_RESULTS vector then this means that
+     we found an 'if' condition (which will be the last thing in the
+     FORWARD_RESULTS vector), and then we started a backward scan.
+
+     The last tokens from the input string (those after the 'if' condition)
+     will be the first tokens added to the BACKWARD_RESULTS vector, so the
+     last items in the BACKWARD_RESULTS vector are those next to the 'if'
+     condition.
+
+     Check the tokens in the BACKWARD_RESULTS vector from back to front.
+     If the tokens look invalid then we assume that they are actually part
+     of the 'if' condition, and merge the token with the 'if' condition.
+     If it turns out that this was incorrect and that instead the user just
+     messed up entering the token value, then this will show as an error
+     when parsing the 'if' condition.
+
+     Doing this allows us to handle things like:
+
+       break function if ( variable == thread )
+
+     Where 'thread' is a local variable within 'function'.  When parsing
+     this we will initially see 'thread )' as a thread token with ')' as
+     the value.  However, the following code will spot that ')' is not a
+     valid thread-id, and so we merge 'thread )' into the 'if' condition
+     string.
+
+     This code also handles the special treatment for '-force-condition',
+     which exists for backwards compatibility reasons.  Traditionally this
+     flag, if it occurred immediately after the 'if' condition, would be
+     treated as part of the 'if' condition.  When the breakpoint condition
+     parsing code was rewritten, this behavior was retained.  */
+  gdb_assert (backward_results.empty ()
+	      || (forward_results.back ().get_type ()
+		  == token::type::CONDITION));
+  while (!backward_results.empty ())
+    {
+      token &t = backward_results.back ();
+
+      if (t.get_type () == token::type::FORCE)
+	forward_results.back ().extend (std::move (t));
+      else if (t.get_type () == token::type::THREAD)
+	{
+	  const char *end;
+	  std::string v (t.get_value ());
+	  if (is_thread_id (v.c_str (), &end) && *end == '\0')
+	    break;
+	  forward_results.back ().extend (std::move (t));
+	}
+      else if (t.get_type () == token::type::INFERIOR
+	       || t.get_type () == token::type::TASK)
+	{
+	  /* Place the token's value into a null-terminated string, parse
+	     the string as a number and check that the entire string was
+	     parsed.  If this is true then this looks like a valid inferior
+	     or task number, otherwise, assume an invalid id, and merge
+	     this token with the 'if' token.  */
+	  char *end;
+	  std::string v (t.get_value ());
+	  (void) strtol (v.c_str (), &end, 0);
+	  if (end > v.c_str () && *end == '\0')
+	    break;
+	  forward_results.back ().extend (std::move (t));
+	}
+      else
+	gdb_assert_not_reached ("unexpected token type");
+
+      /* If we found an actual valid token above then we will have broken
+	 out of the loop.  We only get here if the token was merged with
+	 the 'if' condition, in which case we can discard the last token
+	 and then check the token before that.  */
+      backward_results.pop_back ();
+    }
+
+  /* If after the above checks we still have some tokens in the
+     BACKWARD_RESULTS vector, then these need to be appended to the
+     FORWARD_RESULTS vector.  However, we first reverse the order so that
+     FORWARD_RESULTS retains the tokens in the order they appeared in the
+     input string.  */
+  if (!backward_results.empty ())
+    forward_results.insert (forward_results.end (),
+			    backward_results.rbegin (),
+			    backward_results.rend ());
+
+  return forward_results;
+}
+
+/* Called when the global debug_breakpoint is true.  Prints VEC to the
+   debug output stream.  */
+
+static void
+dump_condition_tokens (const std::vector<token> &vec)
+{
+  gdb_assert (debug_breakpoint);
+
+  bool first = true;
+  std::string str = "Tokens: ";
+  for (const token &t : vec)
+    {
+      if (!first)
+	str += " ";
+      first = false;
+      str += t.to_string ();
+    }
+  breakpoint_debug_printf ("%s", str.c_str ());
+}
+
+/* See break-cond-parse.h.  */
+
+void
+create_breakpoint_parse_arg_string
+  (const char *str, gdb::unique_xmalloc_ptr<char> *cond_string_ptr,
+   int *thread_ptr, int *inferior_ptr, int *task_ptr,
+   gdb::unique_xmalloc_ptr<char> *rest_ptr, bool *force_ptr)
+{
+  /* Set up the defaults.  */
+  cond_string_ptr->reset ();
+  rest_ptr->reset ();
+  *thread_ptr = -1;
+  *inferior_ptr = -1;
+  *task_ptr = -1;
+  *force_ptr = false;
+
+  if (str == nullptr)
+    return;
+
+  /* Split STR into a series of tokens.  */
+  std::vector<token> tokens = parse_all_tokens (str);
+  if (debug_breakpoint)
+    dump_condition_tokens (tokens);
+
+  /* Temporary variables.  Initialised to the default state, then updated
+     as we parse TOKENS.  If all of TOKENS is parsed successfully then the
+     state from these variables is copied into the output arguments before
+     the function returns.  */
+  int thread = -1, inferior = -1, task = -1;
+  bool force = false;
+  gdb::unique_xmalloc_ptr<char> cond_string, rest;
+
+  for (const token &t : tokens)
+    {
+      std::string tok_value (t.get_value ());
+      switch (t.get_type ())
+	{
+	case token::type::FORCE:
+	  force = true;
+	  break;
+	case token::type::THREAD:
+	  {
+	    if (thread != -1)
+	      error ("You can specify only one thread.");
+	    if (task != -1 || inferior != -1)
+	      error ("You can specify only one of thread, inferior, or task.");
+	    const char *tmptok;
+	    thread_info *thr = parse_thread_id (tok_value.c_str (), &tmptok);
+	    gdb_assert (*tmptok == '\0');
+	    thread = thr->global_num;
+	  }
+	  break;
+	case token::type::INFERIOR:
+	  {
+	    if (inferior != -1)
+	      error ("You can specify only one inferior.");
+	    if (task != -1 || thread != -1)
+	      error ("You can specify only one of thread, inferior, or task.");
+	    char *tmptok;
+	    long inferior_id = strtol (tok_value.c_str (), &tmptok, 0);
+	    if (*tmptok != '\0')
+	      error (_("Junk '%s' after inferior keyword."), tmptok);
+	    if (inferior_id > INT_MAX)
+	      error (_("No inferior number '%ld'"), inferior_id);
+	    inferior = static_cast<int> (inferior_id);
+	    struct inferior *inf = find_inferior_id (inferior);
+	    if (inf == nullptr)
+	      error (_("No inferior number '%d'"), inferior);
+	  }
+	  break;
+	case token::type::TASK:
+	  {
+	    if (task != -1)
+	      error ("You can specify only one task.");
+	    if (inferior != -1 || thread != -1)
+	      error ("You can specify only one of thread, inferior, or task.");
+	    char *tmptok;
+	    long task_id = strtol (tok_value.c_str (), &tmptok, 0);
+	    if (*tmptok != '\0')
+	      error (_("Junk '%s' after task keyword."), tmptok);
+	    if (task_id > INT_MAX)
+	      error (_("Unknown task %ld"), task_id);
+	    task = static_cast<int> (task_id);
+	    if (!valid_task_id (task))
+	      error (_("Unknown task %d."), task);
+	  }
+	  break;
+	case token::type::CONDITION:
+	  cond_string.reset (savestring (t.get_value ().data (),
+					 t.get_value ().size ()));
+	  break;
+	case token::type::REST:
+	  rest.reset (savestring (t.get_value ().data (),
+				  t.get_value ().size ()));
+	  break;
+	}
+    }
+
+  /* Move results into the output locations.  */
+  *force_ptr = force;
+  *thread_ptr = thread;
+  *inferior_ptr = inferior;
+  *task_ptr = task;
+  rest_ptr->reset (rest.release ());
+  cond_string_ptr->reset (cond_string.release ());
+}
+
+#if GDB_SELF_TEST
+
+namespace selftests {
+
+/* Run a single test of the create_breakpoint_parse_arg_string function.
+   INPUT is passed to create_breakpoint_parse_arg_string while all other
+   arguments are the expected output from
+   create_breakpoint_parse_arg_string.  */
+
+static void
+test (const char *input, const char *condition, int thread = -1,
+      int inferior = -1, int task = -1, bool force = false,
+      const char *rest = nullptr, const char *error_msg = nullptr)
+{
+  gdb::unique_xmalloc_ptr<char> extracted_condition;
+  gdb::unique_xmalloc_ptr<char> extracted_rest;
+  int extracted_thread, extracted_inferior, extracted_task;
+  bool extracted_force_condition;
+  std::string exception_msg;
+
+  if (error_msg == nullptr)
+    error_msg = "";
+
+  try
+    {
+      create_breakpoint_parse_arg_string (input, &extracted_condition,
+					  &extracted_thread,
+					  &extracted_inferior,
+					  &extracted_task, &extracted_rest,
+					  &extracted_force_condition);
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      exception_msg = ex.what ();
+    }
+
+  if ((condition == nullptr) != (extracted_condition.get () == nullptr)
+      || (condition != nullptr
+	  && strcmp (condition, extracted_condition.get ()) != 0)
+      || (rest == nullptr) != (extracted_rest.get () == nullptr)
+      || (rest != nullptr && strcmp (rest, extracted_rest.get ()) != 0)
+      || thread != extracted_thread
+      || inferior != extracted_inferior
+      || task != extracted_task
+      || force != extracted_force_condition
+      || exception_msg != error_msg)
+    {
+      if (run_verbose ())
+	{
+	  debug_printf ("input: '%s'\n", input);
+	  debug_printf ("condition: '%s'\n", extracted_condition.get ());
+	  debug_printf ("rest: '%s'\n", extracted_rest.get ());
+	  debug_printf ("thread: %d\n", extracted_thread);
+	  debug_printf ("inferior: %d\n", extracted_inferior);
+	  debug_printf ("task: %d\n", extracted_task);
+	  debug_printf ("forced: %s\n",
+			extracted_force_condition ? "true" : "false");
+	  debug_printf ("exception: '%s'\n", exception_msg.c_str ());
+	}
+
+      /* Report the failure.  */
+      SELF_CHECK (false);
+    }
+}
+
+/* Wrapper for test function.  Pass through the default values for all
+   parameters, except the last parameter, which indicates that we expect
+   INPUT to trigger an error.  */
+
+static void
+test_error (const char *input, const char *error_msg)
+{
+  test (input, nullptr, -1, -1, -1, false, nullptr, error_msg);
+}
+
+/* Test the create_breakpoint_parse_arg_string function.  Just wraps
+   multiple calls to the test function above.  */
+
+static void
+create_breakpoint_parse_arg_string_tests ()
+{
+  gdbarch *arch = current_inferior ()->arch ();
+  scoped_restore_current_pspace_and_thread restore;
+  scoped_mock_context<test_target_ops> mock_target (arch);
+
+  int global_thread_num = mock_target.mock_thread.global_num;
+
+  /* Test parsing valid breakpoint condition strings.  */
+  test ("  if blah  ", "blah");
+  test (" if blah thread 1", "blah", global_thread_num);
+  test (" if blah inferior 1", "blah", -1, 1);
+  test (" if blah thread 1  ", "blah", global_thread_num);
+  test ("thread 1 woof", nullptr, global_thread_num, -1, -1, false, "woof");
+  test ("thread 1 X", nullptr, global_thread_num, -1, -1, false, "X");
+  test (" if blah thread 1 -force-condition", "blah", global_thread_num,
+	-1, -1, true);
+  test (" -force-condition if blah thread 1", "blah", global_thread_num,
+	-1, -1, true);
+  test (" -force-condition if blah thread 1  ", "blah", global_thread_num,
+	-1, -1, true);
+  test ("thread 1 -force-condition if blah", "blah", global_thread_num,
+	-1, -1, true);
+  test ("if (A::outer::func ())", "(A::outer::func ())");
+  test ("if ( foo == thread )", "( foo == thread )");
+  test ("if ( foo == thread ) inferior 1", "( foo == thread )", -1, 1);
+  test ("if ( foo == thread ) thread 1", "( foo == thread )",
+	global_thread_num);
+  test ("if foo == thread", "foo == thread");
+  test ("if foo == thread 1", "foo ==", global_thread_num);
+
+  /* Test parsing some invalid breakpoint condition strings.  */
+  test_error ("thread 1 if foo == 123 thread 1",
+	      "You can specify only one thread.");
+  test_error ("thread 1 if foo == 123 inferior 1",
+	      "You can specify only one of thread, inferior, or task.");
+  test_error ("thread 1 if foo == 123 task 1",
+	      "You can specify only one of thread, inferior, or task.");
+  test_error ("inferior 1 if foo == 123 inferior 1",
+	      "You can specify only one inferior.");
+  test_error ("inferior 1 if foo == 123 thread 1",
+	      "You can specify only one of thread, inferior, or task.");
+  test_error ("inferior 1 if foo == 123 task 1",
+	      "You can specify only one of thread, inferior, or task.");
+  test_error ("thread 1.2.3", "Invalid thread ID: 1.2.3");
+  test_error ("thread 1/2", "Invalid thread ID: 1/2");
+  test_error ("thread 1xxx", "Invalid thread ID: 1xxx");
+  test_error ("inferior 1xxx", "Junk 'xxx' after inferior keyword.");
+  test_error ("task 1xxx", "Junk 'xxx' after task keyword.");
+}
+
+} /* namespace selftests */
+#endif /* GDB_SELF_TEST */
+
+INIT_GDB_FILE (break_cond_parse)
+{
+#if GDB_SELF_TEST
+  selftests::register_test
+    ("create_breakpoint_parse_arg_string",
+     selftests::create_breakpoint_parse_arg_string_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.20200303/gdb/break-cond-parse.h ./gdb/break-cond-parse.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/break-cond-parse.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/break-cond-parse.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,52 @@
+/* Copyright (C) 2023-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_BREAK_COND_PARSE_H
+#define GDB_BREAK_COND_PARSE_H
+
+/* Given TOK, a string possibly containing a condition, thread, inferior,
+   task and force-condition flag, as accepted by the 'break' command,
+   extract the condition string, thread, inferior, task number, and the
+   force_condition flag, then set *COND_STRING, *THREAD, *INFERIOR, *TASK,
+   and *FORCE.
+
+   As TOK is parsed, if an unknown keyword is encountered before the 'if'
+   keyword then everything starting from the unknown keyword is placed into
+   *REST.
+
+   Both *COND and *REST are initialized to nullptr.  If no 'if' keyword is
+   found then *COND will be returned as nullptr.  If no unknown content is
+   found then *REST is returned as nullptr.
+
+   If no thread is found, *THREAD is set to -1.  If no inferior is found,
+   *INFERIOR is set to -1.  If no task is found, *TASK is set to -1.  If
+   the -force-condition flag is not found then *FORCE is set to false.
+
+   Due to the free-form nature that the string TOK might take (a 'thread'
+   keyword can appear before or after an 'if' condition) then we end up
+   having to check for keywords from both the start of TOK and the end of
+   TOK.
+
+   If TOK is nullptr, or TOK is the empty string, then the output variables
+   are all given their default values.  */
+
+extern void create_breakpoint_parse_arg_string
+  (const char *tok, gdb::unique_xmalloc_ptr<char> *cond_string,
+   int *thread, int *inferior, int *task,
+   gdb::unique_xmalloc_ptr<char> *rest, bool *force);
+
+#endif /* GDB_BREAK_COND_PARSE_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.20200303/gdb/breakpoint.c ./gdb/breakpoint.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/breakpoint.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/breakpoint.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Everything about breakpoints, for GDB.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,10 +17,12 @@
    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 <ctype.h>
-#include "hashtab.h"
+#include "event-top.h"
+#include "exceptions.h"
+#include "gdbsupport/gdb_vecs.h"
+#include "gdbsupport/unordered_set.h"
 #include "symtab.h"
 #include "frame.h"
 #include "breakpoint.h"
@@ -28,7 +30,7 @@
 #include "gdbtypes.h"
 #include "expression.h"
 #include "gdbcore.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "value.h"
 #include "command.h"
 #include "inferior.h"
@@ -48,15 +50,14 @@
 #include "cli/cli-script.h"
 #include "block.h"
 #include "solib.h"
-#include "solist.h"
 #include "observable.h"
 #include "memattr.h"
 #include "ada-lang.h"
 #include "top.h"
+#include "ui.h"
 #include "valprint.h"
 #include "jit.h"
 #include "parser-defs.h"
-#include "gdb_regex.h"
 #include "probe.h"
 #include "cli/cli-utils.h"
 #include "stack.h"
@@ -67,6 +68,8 @@
 #include "thread-fsm.h"
 #include "tid-parse.h"
 #include "cli/cli-style.h"
+#include "cli/cli-decode.h"
+#include "break-cond-parse.h"
 
 /* readline include files */
 #include "readline/tilde.h"
@@ -79,83 +82,70 @@
 #include <algorithm>
 #include "progspace-and-thread.h"
 #include "gdbsupport/array-view.h"
-#include "gdbsupport/gdb_optional.h"
+#include <optional>
+#include "gdbsupport/common-utils.h"
 
 /* Prototypes for local functions.  */
 
 static void map_breakpoint_numbers (const char *,
 				    gdb::function_view<void (breakpoint *)>);
 
-static void breakpoint_re_set_default (struct breakpoint *);
-
-static void
-  create_sals_from_location_default (const struct event_location *location,
-				     struct linespec_result *canonical,
-				     enum bptype type_wanted);
-
-static void create_breakpoints_sal_default (struct gdbarch *,
-					    struct linespec_result *,
-					    gdb::unique_xmalloc_ptr<char>,
-					    gdb::unique_xmalloc_ptr<char>,
-					    enum bptype,
-					    enum bpdisp, int, int,
-					    int,
-					    const struct breakpoint_ops *,
-					    int, int, int, unsigned);
-
-static std::vector<symtab_and_line> decode_location_default
-  (struct breakpoint *b, const struct event_location *location,
-   struct program_space *search_pspace);
+static void parse_breakpoint_sals (location_spec *locspec,
+				   linespec_result *canonical,
+				   program_space *search_pspace);
+
+static void breakpoint_re_set_one (breakpoint *b,
+				   program_space *filter_pspace);
+
+static void create_breakpoints_sal (struct gdbarch *,
+				    struct linespec_result *,
+				    gdb::unique_xmalloc_ptr<char>,
+				    gdb::unique_xmalloc_ptr<char>,
+				    enum bptype,
+				    enum bpdisp, int, int, int,
+				    int,
+				    int, int, int, unsigned);
 
 static int can_use_hardware_watchpoint
     (const std::vector<value_ref_ptr> &vals);
 
-static void mention (struct breakpoint *);
+static void mention (const breakpoint *);
+
+static breakpoint *add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b);
 
-static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
-							       enum bptype,
-							       const struct breakpoint_ops *);
-static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
-						       const struct symtab_and_line *);
-
-/* This function is used in gdbtk sources and thus can not be made
-   static.  */
-struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
-				       struct symtab_and_line,
-				       enum bptype,
-				       const struct breakpoint_ops *);
+static breakpoint *add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b);
 
 static struct breakpoint *
   momentary_breakpoint_from_master (struct breakpoint *orig,
 				    enum bptype type,
-				    const struct breakpoint_ops *ops,
-				    int loc_enabled);
+				    int loc_enabled, int thread);
 
-static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
+static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, bool);
 
 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
 					    CORE_ADDR bpaddr,
-                                            enum bptype bptype);
+					    enum bptype bptype,
+					    struct program_space *pspace);
 
-static void describe_other_breakpoints (struct gdbarch *,
-					struct program_space *, CORE_ADDR,
-					struct obj_section *, int);
-
-static int watchpoint_locations_match (struct bp_location *loc1,
-				       struct bp_location *loc2);
-
-static int breakpoint_location_address_match (struct bp_location *bl,
-					      const struct address_space *aspace,
-					      CORE_ADDR addr);
-
-static int breakpoint_location_address_range_overlap (struct bp_location *,
-						      const address_space *,
-						      CORE_ADDR, int);
+static bool watchpoint_locations_match (const struct bp_location *loc1,
+					const struct bp_location *loc2);
+
+static bool breakpoint_locations_match (const struct bp_location *loc1,
+					const struct bp_location *loc2,
+					bool sw_hw_bps_match = false);
+
+static bool breakpoint_location_address_match (struct bp_location *bl,
+					       const struct address_space *aspace,
+					       CORE_ADDR addr);
+
+static bool breakpoint_location_address_range_overlap (struct bp_location *,
+						       const address_space *,
+						       CORE_ADDR, int);
 
 static int remove_breakpoint (struct bp_location *);
 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
 
-static enum print_stop_action print_bp_stop_message (bpstat bs);
+static enum print_stop_action print_bp_stop_message (bpstat *bs);
 
 static int hw_breakpoint_used_count (void);
 
@@ -168,11 +158,16 @@ static int hw_watchpoint_used_count_othe
 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
 				    int count);
 
-static void free_bp_location (struct bp_location *loc);
-static void incref_bp_location (struct bp_location *loc);
 static void decref_bp_location (struct bp_location **loc);
 
-static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
+static std::vector<symtab_and_line> bkpt_probe_decode_location_spec
+     (struct breakpoint *b,
+      location_spec *locspec,
+      struct program_space *search_pspace);
+
+static bool bl_address_is_meaningful (const bp_location *loc);
+
+static int find_loc_num_by_location (const bp_location *loc);
 
 /* update_global_location_list's modes of operation wrt to whether to
    insert locations now.  */
@@ -209,6 +204,76 @@ enum ugll_insert_mode
   UGLL_INSERT
 };
 
+/* Return a textual version of INSERT_MODE.  */
+
+static const char *
+ugll_insert_mode_text (ugll_insert_mode insert_mode)
+{
+/* Make sure the compiler warns if a new ugll_insert_mode enumerator is added
+   but not handled here.  */
+DIAGNOSTIC_PUSH
+DIAGNOSTIC_ERROR_SWITCH
+  switch (insert_mode)
+    {
+    case UGLL_DONT_INSERT:
+      return "UGLL_DONT_INSERT";
+    case UGLL_MAY_INSERT:
+      return "UGLL_MAY_INSERT";
+    case UGLL_INSERT:
+      return "UGLL_INSERT";
+    }
+DIAGNOSTIC_POP
+
+  gdb_assert_not_reached ("must handle all enum values");
+}
+
+/* Return a textual version of REASON.  */
+
+static const char *
+remove_bp_reason_str (remove_bp_reason reason)
+{
+/* Make sure the compiler warns if a new remove_bp_reason enumerator is added
+   but not handled here.  */
+DIAGNOSTIC_PUSH
+DIAGNOSTIC_ERROR_SWITCH
+  switch (reason)
+    {
+    case REMOVE_BREAKPOINT:
+      return "regular remove";
+    case DETACH_BREAKPOINT:
+      return "detach";
+    }
+DIAGNOSTIC_POP
+
+  gdb_assert_not_reached ("must handle all enum values");
+}
+
+/* Return a textual version of breakpoint location BL describing number,
+   location and address.  */
+
+static std::string
+breakpoint_location_address_str (const bp_location *bl)
+{
+  std::string str = string_printf ("Breakpoint %d (%s) ",
+				   bl->owner->number,
+				   host_address_to_string (bl));
+
+  if (bl_address_is_meaningful (bl))
+    {
+      gdb_assert (bl->gdbarch != nullptr);
+      str += string_printf ("at address %s",
+			    paddress (bl->gdbarch, bl->address));
+
+      std::string loc_string = bl->to_string ();
+      if (!loc_string.empty ())
+	str += string_printf (" %s", loc_string.c_str ());
+    }
+  else
+    str += "with dummy location";
+
+  return str;
+}
+
 static void update_global_location_list (enum ugll_insert_mode);
 
 static void update_global_location_list_nothrow (enum ugll_insert_mode);
@@ -221,36 +286,180 @@ static void set_tracepoint_count (int nu
 
 static bool is_masked_watchpoint (const struct breakpoint *b);
 
-static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
+/* Return true if B refers to a static tracepoint set by marker ("-m"),
+   zero otherwise.  */
 
-/* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
-   otherwise.  */
+static bool strace_marker_p (struct breakpoint *b);
 
-static int strace_marker_p (struct breakpoint *b);
+static void bkpt_probe_create_sals_from_location_spec
+     (location_spec *locspec,
+      struct linespec_result *canonical,
+      struct program_space *search_pspace);
 
-/* The breakpoint_ops structure to be inherited by all breakpoint_ops
-   that are implemented on top of software or hardware breakpoints
-   (user breakpoints, internal and momentary breakpoints, etc.).  */
-static struct breakpoint_ops bkpt_base_breakpoint_ops;
+const struct breakpoint_ops code_breakpoint_ops =
+{
+  parse_breakpoint_sals,
+  create_breakpoints_sal,
+};
 
-/* Internal breakpoints class type.  */
-static struct breakpoint_ops internal_breakpoint_ops;
+/* Breakpoints set on probes.  */
+static const struct breakpoint_ops bkpt_probe_breakpoint_ops =
+{
+  bkpt_probe_create_sals_from_location_spec,
+  create_breakpoints_sal,
+};
 
-/* Momentary breakpoints class type.  */
-static struct breakpoint_ops momentary_breakpoint_ops;
+/* Tracepoints set on probes.  We use the same methods as for breakpoints
+   on probes.  */
+static const struct breakpoint_ops tracepoint_probe_breakpoint_ops =
+{
+  bkpt_probe_create_sals_from_location_spec,
+  create_breakpoints_sal,
+};
 
-/* The breakpoint_ops structure to be used in regular user created
-   breakpoints.  */
-struct breakpoint_ops bkpt_breakpoint_ops;
+/* Implementation of abstract dtors.  These must exist to satisfy the
+   linker.  */
 
-/* Breakpoints set on probes.  */
-static struct breakpoint_ops bkpt_probe_breakpoint_ops;
+breakpoint::~breakpoint ()
+{
+}
+
+code_breakpoint::~code_breakpoint ()
+{
+}
+
+catchpoint::~catchpoint ()
+{
+}
+
+/* The structure to be used in regular breakpoints.  */
+struct ordinary_breakpoint : public code_breakpoint
+{
+  using code_breakpoint::code_breakpoint;
+
+  int resources_needed (const struct bp_location *) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+};
+
+/* Internal breakpoints.  These typically have a lifetime the same as
+   the program, and they end up installed on the breakpoint chain with
+   a negative breakpoint number.  They're visible in "maint info
+   breakpoints", but not "info breakpoints".  */
+struct internal_breakpoint : public code_breakpoint
+{
+  internal_breakpoint (struct gdbarch *gdbarch,
+		       enum bptype type, CORE_ADDR address)
+    : code_breakpoint (gdbarch, type)
+  {
+    symtab_and_line sal;
+    sal.pc = address;
+    sal.section = find_pc_overlay (sal.pc);
+    sal.pspace = current_program_space;
+    add_location (sal);
+
+    pspace = current_program_space;
+    disposition = disp_donttouch;
+  }
+
+  void re_set (program_space *pspace) override;
+  void check_status (struct bpstat *bs) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  void print_mention () const override;
+};
+
+/* Momentary breakpoints.  These typically have a lifetime of some run
+   control command only, are always thread-specific, and have 0 for
+   breakpoint number.  I.e., there can be many momentary breakpoints
+   on the breakpoint chain and they all same the same number (zero).
+   They're visible in "maint info breakpoints", but not "info
+   breakpoints".  */
+struct momentary_breakpoint : public code_breakpoint
+{
+  momentary_breakpoint (struct gdbarch *gdbarch_, enum bptype bptype,
+			program_space *pspace_,
+			const struct frame_id &frame_id_,
+			int thread_)
+    : code_breakpoint (gdbarch_, bptype)
+  {
+    /* If FRAME_ID is valid, it should be a real frame, not an inlined
+       or tail-called one.  */
+    gdb_assert (!frame_id_artificial_p (frame_id));
+
+    /* Momentary breakpoints are always thread-specific.  */
+    gdb_assert (thread_ > 0);
+
+    pspace = pspace_;
+    enable_state = bp_enabled;
+    disposition = disp_donttouch;
+    frame_id = frame_id_;
+    thread = thread_;
 
-/* Tracepoints set on probes.  */
-static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
+    /* The inferior should have been set by the parent constructor.  */
+    gdb_assert (inferior == -1);
+  }
+
+  void re_set (program_space *pspace) override;
+  void check_status (struct bpstat *bs) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  void print_mention () const override;
+};
 
-/* Dynamic printf class type.  */
-struct breakpoint_ops dprintf_breakpoint_ops;
+/* DPrintf breakpoints.  */
+struct dprintf_breakpoint : public ordinary_breakpoint
+{
+  using ordinary_breakpoint::ordinary_breakpoint;
+
+  void re_set (program_space *pspace) override;
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  void print_recreate (struct ui_file *fp) const override;
+  void after_condition_true (struct bpstat *bs) override;
+};
+
+/* Ranged breakpoints.  */
+struct ranged_breakpoint : public ordinary_breakpoint
+{
+  explicit ranged_breakpoint (struct gdbarch *gdbarch,
+			      const symtab_and_line &sal_start,
+			      int length,
+			      location_spec_up start_locspec,
+			      location_spec_up end_locspec)
+    : ordinary_breakpoint (gdbarch, bp_hardware_breakpoint)
+  {
+    bp_location *bl = add_location (sal_start);
+    bl->length = length;
+
+    disposition = disp_donttouch;
+
+    locspec = std::move (start_locspec);
+    locspec_range_end = std::move (end_locspec);
+  }
+
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  int resources_needed (const struct bp_location *) override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  bool print_one (const bp_location **) const override;
+  void print_one_detail (struct ui_out *) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+};
+
+/* Static tracepoints with marker (`-m').  */
+struct static_marker_tracepoint : public tracepoint
+{
+  using tracepoint::tracepoint;
+
+  std::vector<symtab_and_line> decode_location_spec
+       (struct location_spec *locspec,
+	struct program_space *search_pspace) override;
+};
 
 /* The style in which to perform a dynamic printf.  This is a user
    option because different output options have different tradeoffs;
@@ -275,7 +484,7 @@ static const char *dprintf_style = dprin
    copied into the command, so it can be anything that GDB can
    evaluate to a callable address, not necessarily a function name.  */
 
-static char *dprintf_function;
+static std::string dprintf_function = "printf";
 
 /* The channel to use for dynamic printf if the preferred style is to
    call into the inferior; if a nonempty string, it will be passed to
@@ -285,7 +494,7 @@ static char *dprintf_function;
    "stderr", this could be an app-specific expression like
    "mystreams[curlogger]".  */
 
-static char *dprintf_channel;
+static std::string dprintf_channel;
 
 /* True if dprintf commands should continue to operate even if GDB
    has disconnected.  */
@@ -323,10 +532,10 @@ show_can_use_hw_watchpoints (struct ui_f
 			     struct cmd_list_element *c,
 			     const char *value)
 {
-  fprintf_filtered (file,
-		    _("Debugger's willingness to use "
-		      "watchpoint hardware is %s.\n"),
-		    value);
+  gdb_printf (file,
+	      _("Debugger's willingness to use "
+		"watchpoint hardware is %s.\n"),
+	      value);
 }
 
 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
@@ -339,10 +548,10 @@ show_pending_break_support (struct ui_fi
 			    struct cmd_list_element *c,
 			    const char *value)
 {
-  fprintf_filtered (file,
-		    _("Debugger's behavior regarding "
-		      "pending breakpoints is %s.\n"),
-		    value);
+  gdb_printf (file,
+	      _("Debugger's behavior regarding "
+		"pending breakpoints is %s.\n"),
+	      value);
 }
 
 /* If true, gdb will automatically use hardware breakpoints for breakpoints
@@ -355,9 +564,9 @@ show_automatic_hardware_breakpoints (str
 				     struct cmd_list_element *c,
 				     const char *value)
 {
-  fprintf_filtered (file,
-		    _("Automatic usage of hardware breakpoints is %s.\n"),
-		    value);
+  gdb_printf (file,
+	      _("Automatic usage of hardware breakpoints is %s.\n"),
+	      value);
 }
 
 /* If on, GDB keeps breakpoints inserted even if the inferior is
@@ -373,8 +582,19 @@ static void
 show_always_inserted_mode (struct ui_file *file, int from_tty,
 		     struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
-		    value);
+  gdb_printf (file, _("Always inserted breakpoint mode is %s.\n"),
+	      value);
+}
+
+/* See breakpoint.h.  */
+bool debug_breakpoint = false;
+
+/* "show debug breakpoint" implementation.  */
+static void
+show_debug_breakpoint (struct ui_file *file, int from_tty,
+		       struct cmd_list_element *c, const char *value)
+{
+  gdb_printf (file, _("Breakpoint location debugging is %s.\n"), value);
 }
 
 /* See breakpoint.h.  */
@@ -382,14 +602,14 @@ show_always_inserted_mode (struct ui_fil
 int
 breakpoints_should_be_inserted_now (void)
 {
-  if (gdbarch_has_global_breakpoints (target_gdbarch ()))
+  if (gdbarch_has_global_breakpoints (current_inferior ()->arch ()))
     {
       /* If breakpoints are global, they should be inserted even if no
 	 thread under gdb's control is running, or even if there are
 	 no threads under GDB's control yet.  */
       return 1;
     }
-  else if (target_has_execution)
+  else
     {
       if (always_inserted_mode)
 	{
@@ -398,14 +618,15 @@ 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.  */
       for (thread_info *tp : all_non_exited_threads ())
-	if (tp->resumed
-	    && tp->suspend.waitstatus_pending_p)
+	if (tp->resumed () && tp->has_pending_waitstatus ())
 	  return 1;
     }
   return 0;
@@ -461,7 +682,7 @@ breakpoint_condition_evaluation_mode (vo
 /* Return true if GDB should evaluate breakpoint conditions or false
    otherwise.  */
 
-static int
+static bool
 gdb_evaluates_breakpoint_condition_p (void)
 {
   const char *mode = breakpoint_condition_evaluation_mode ();
@@ -478,57 +699,106 @@ static int overlay_events_enabled;
 /* See description in breakpoint.h. */
 bool target_exact_watchpoints = false;
 
-/* Walk the following statement or block through all breakpoints.
-   ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
-   current breakpoint.  */
+/* Chains of all breakpoints defined.  */
 
-#define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
+static intrusive_list<breakpoint> breakpoint_chain;
 
-#define ALL_BREAKPOINTS_SAFE(B,TMP)	\
-	for (B = breakpoint_chain;	\
-	     B ? (TMP=B->next, 1): 0;	\
-	     B = TMP)
-
-/* Similar iterator for the low-level breakpoints.  SAFE variant is
-   not provided so update_global_location_list must not be called
-   while executing the block of ALL_BP_LOCATIONS.  */
-
-#define ALL_BP_LOCATIONS(B,BP_TMP)					\
-	for (BP_TMP = bp_locations;					\
-	     BP_TMP < bp_locations + bp_locations_count && (B = *BP_TMP);\
-	     BP_TMP++)
-
-/* Iterates through locations with address ADDRESS for the currently selected
-   program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
-   to where the loop should start from.
-   If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
-   appropriate location to start with.  */
-
-#define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)	\
-	for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
-	     BP_LOCP_TMP = BP_LOCP_START;				\
-	     BP_LOCP_START						\
-	     && (BP_LOCP_TMP < bp_locations + bp_locations_count	\
-	     && (*BP_LOCP_TMP)->address == ADDRESS);			\
-	     BP_LOCP_TMP++)
-
-/* Iterator for tracepoints only.  */
-
-#define ALL_TRACEPOINTS(B)  \
-  for (B = breakpoint_chain; B; B = B->next)  \
-    if (is_tracepoint (B))
+/* See breakpoint.h.  */
 
-/* Chains of all breakpoints defined.  */
+breakpoint_range
+all_breakpoints ()
+{
+  return breakpoint_range (breakpoint_chain.begin (), breakpoint_chain.end ());
+}
+
+/* See breakpoint.h.  */
+
+breakpoint_safe_range
+all_breakpoints_safe ()
+{
+  return breakpoint_safe_range (all_breakpoints ());
+}
+
+/* See breakpoint.h.  */
 
-static struct breakpoint *breakpoint_chain;
+tracepoint_range
+all_tracepoints ()
+{
+  return tracepoint_range (tracepoint_iterator (breakpoint_chain.begin ()),
+			   tracepoint_iterator (breakpoint_chain.end ()));
+}
 
-/* Array is sorted by bp_location_is_less_than - primarily by the ADDRESS.  */
+/* Array is sorted by bp_location_ptr_is_less_than - primarily by the
+   ADDRESS.  */
 
-static struct bp_location **bp_locations;
+static std::vector<bp_location *> bp_locations;
 
-/* Number of elements of BP_LOCATIONS.  */
+/* See breakpoint.h.  */
 
-static unsigned bp_locations_count;
+const std::vector<bp_location *> &
+all_bp_locations ()
+{
+  return bp_locations;
+}
+
+/* Range to iterate over breakpoint locations at a given address.  */
+
+struct bp_locations_at_addr_range
+{
+  using iterator = std::vector<bp_location *>::iterator;
+
+  bp_locations_at_addr_range (CORE_ADDR addr)
+  {
+    struct compare
+    {
+      bool operator() (const bp_location *loc, CORE_ADDR addr_) const
+      { return loc->address < addr_; }
+
+      bool operator() (CORE_ADDR addr_, const bp_location *loc) const
+      { return addr_ < loc->address; }
+    };
+
+    auto it_pair = std::equal_range (bp_locations.begin (), bp_locations.end (),
+				     addr, compare ());
+
+    m_begin = it_pair.first;
+    m_end = it_pair.second;
+  }
+
+  iterator begin () const
+  { return m_begin; }
+
+  iterator end () const
+  { return m_end; }
+
+private:
+  iterator m_begin;
+  iterator m_end;
+};
+
+/* Return a range to iterate over all breakpoint locations exactly at address
+   ADDR.
+
+   If it's needed to iterate multiple times on the same range, it's possible
+   to save the range in a local variable and use it multiple times:
+
+     auto range = all_bp_locations_at_addr (addr);
+
+     for (bp_location *loc : range)
+       // use loc
+
+     for (bp_location *loc : range)
+       // use loc
+
+   This saves a bit of time, as it avoids re-doing the binary searches to find
+   the range's boundaries.  Just remember not to change the bp_locations vector
+   in the mean time, as it could make the range's iterators stale.  */
+
+static bp_locations_at_addr_range
+all_bp_locations_at_addr (CORE_ADDR addr)
+{
+  return bp_locations_at_addr_range (addr);
+}
 
 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
    ADDRESS for the current elements of BP_LOCATIONS which get a valid
@@ -569,25 +839,8 @@ static struct cmd_list_element *breakpoi
 static struct cmd_list_element *breakpoint_show_cmdlist;
 struct cmd_list_element *save_cmdlist;
 
-/* See declaration at breakpoint.h.  */
-
-struct breakpoint *
-breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
-		    void *user_data)
-{
-  struct breakpoint *b = NULL;
-
-  ALL_BREAKPOINTS (b)
-    {
-      if (func (b, user_data) != 0)
-	break;
-    }
-
-  return b;
-}
-
 /* Return whether a breakpoint is an active enabled breakpoint.  */
-static int
+static bool
 breakpoint_enabled (struct breakpoint *b)
 {
   return (b->enable_state == bp_enabled);
@@ -623,15 +876,31 @@ scoped_rbreak_breakpoints::~scoped_rbrea
   prev_breakpoint_count = rbreak_start_breakpoint_count;
 }
 
+/* See breakpoint.h.  */
+
+int
+scoped_rbreak_breakpoints::first_breakpoint () const
+{
+  return rbreak_start_breakpoint_count + 1;
+}
+
+/* See breakpoint.h.  */
+
+int
+scoped_rbreak_breakpoints::last_breakpoint () const
+{
+  return (rbreak_start_breakpoint_count == breakpoint_count
+	  ? -1
+	  : breakpoint_count);
+}
+
 /* Used in run_command to zero the hit count when a new run starts.  */
 
 void
 clear_breakpoint_hit_counts (void)
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-    b->hit_count = 0;
+  for (breakpoint &b : all_breakpoints ())
+    b.hit_count = 0;
 }
 
 
@@ -641,13 +910,24 @@ clear_breakpoint_hit_counts (void)
 struct breakpoint *
 get_breakpoint (int num)
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-    if (b->number == num)
-      return b;
+  for (breakpoint &b : all_breakpoints ())
+    if (b.number == num)
+      return &b;
   
-  return NULL;
+  return nullptr;
+}
+
+/* Return TRUE if NUM refer to an existing breakpoint that has
+   multiple code locations.  */
+
+static bool
+has_multiple_locations (int num)
+{
+  for (breakpoint &b : all_breakpoints ())
+    if (b.number == num)
+      return b.has_multiple_locations ();
+
+  return false;
 }
 
 
@@ -658,8 +938,6 @@ get_breakpoint (int num)
 static void
 mark_breakpoint_modified (struct breakpoint *b)
 {
-  struct bp_location *loc;
-
   /* This is only meaningful if the target is
      evaluating conditions and if the user has
      opted for condition evaluation on the target's
@@ -671,8 +949,8 @@ mark_breakpoint_modified (struct breakpo
   if (!is_breakpoint (b))
     return;
 
-  for (loc = b->loc; loc; loc = loc->next)
-    loc->condition_changed = condition_modified;
+  for (bp_location &loc : b->locations ())
+    loc.condition_changed = condition_modified;
 }
 
 /* Mark location as "conditions have changed" in case the target supports
@@ -724,7 +1002,6 @@ set_condition_evaluation_mode (const cha
   /* Only update the mode if the user picked a different one.  */
   if (new_mode != old_mode)
     {
-      struct bp_location *loc, **loc_tmp;
       /* If the user switched to a different evaluation mode, we
 	 need to synch the changes with the target as follows:
 
@@ -736,15 +1013,15 @@ set_condition_evaluation_mode (const cha
 	{
 	  /* Mark everything modified and synch conditions with the
 	     target.  */
-	  ALL_BP_LOCATIONS (loc, loc_tmp)
+	  for (bp_location *loc : all_bp_locations ())
 	    mark_breakpoint_location_modified (loc);
-  	}
+	}
       else
 	{
 	  /* Manually mark non-duplicate locations to synch conditions
 	     with the target.  We do this to remove all the conditions the
 	     target knows about.  */
-	  ALL_BP_LOCATIONS (loc, loc_tmp)
+	  for (bp_location *loc : all_bp_locations ())
 	    if (is_breakpoint (loc->owner) && loc->inserted)
 	      loc->needs_update = 1;
 	}
@@ -764,136 +1041,227 @@ show_condition_evaluation_mode (struct u
 				struct cmd_list_element *c, const char *value)
 {
   if (condition_evaluation_mode == condition_evaluation_auto)
-    fprintf_filtered (file,
-		      _("Breakpoint condition evaluation "
-			"mode is %s (currently %s).\n"),
-		      value,
-		      breakpoint_condition_evaluation_mode ());
-  else
-    fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
-		      value);
-}
-
-/* A comparison function for bp_location AP and BP that is used by
-   bsearch.  This comparison function only cares about addresses, unlike
-   the more general bp_location_is_less_than function.  */
-
-static int
-bp_locations_compare_addrs (const void *ap, const void *bp)
-{
-  const struct bp_location *a = *(const struct bp_location **) ap;
-  const struct bp_location *b = *(const struct bp_location **) bp;
-
-  if (a->address == b->address)
-    return 0;
+    gdb_printf (file,
+		_("Breakpoint condition evaluation "
+		  "mode is %s (currently %s).\n"),
+		value,
+		breakpoint_condition_evaluation_mode ());
   else
-    return ((a->address > b->address) - (a->address < b->address));
+    gdb_printf (file, _("Breakpoint condition evaluation mode is %s.\n"),
+		value);
 }
 
-/* Helper function to skip all bp_locations with addresses
-   less than ADDRESS.  It returns the first bp_location that
-   is greater than or equal to ADDRESS.  If none is found, just
-   return NULL.  */
+/* Parse COND_STRING in the context of LOC and set as the condition
+   expression of LOC.  BP_NUM is the number of LOC's owner, LOC_NUM is
+   the number of LOC within its owner.  In case of parsing error, mark
+   LOC as DISABLED_BY_COND.  In case of success, unset DISABLED_BY_COND.  */
 
-static struct bp_location **
-get_first_locp_gte_addr (CORE_ADDR address)
+static void
+set_breakpoint_location_condition (const char *cond_string, bp_location *loc,
+				   int bp_num, int loc_num)
 {
-  struct bp_location dummy_loc;
-  struct bp_location *dummy_locp = &dummy_loc;
-  struct bp_location **locp_found = NULL;
+  bool has_junk = false;
+  try
+    {
+      expression_up new_exp = parse_exp_1 (&cond_string, loc->address,
+					   block_for_pc (loc->address), 0);
+      if (*cond_string != 0)
+	has_junk = true;
+      else
+	{
+	  loc->cond = std::move (new_exp);
+	  if (loc->disabled_by_cond && loc->enabled)
+	    gdb_printf (_("Breakpoint %d's condition is now valid at "
+			  "location %d, enabling.\n"),
+			bp_num, loc_num);
 
-  /* Initialize the dummy location's address field.  */
-  dummy_loc.address = address;
+	  loc->disabled_by_cond = false;
+	}
+    }
+  catch (const gdb_exception_error &e)
+    {
+      if (loc->enabled)
+	{
+	  /* Warn if a user-enabled location is now becoming disabled-by-cond.
+	     BP_NUM is 0 if the breakpoint is being defined for the first
+	     time using the "break ... if ..." command, and non-zero if
+	     already defined.  */
+	  if (bp_num != 0)
+	    warning (_("failed to validate condition at location %d.%d, "
+		       "disabling:\n  %s"), bp_num, loc_num, e.what ());
+	  else
+	    warning (_("failed to validate condition at location %d, "
+		       "disabling:\n  %s"), loc_num, e.what ());
+	}
 
-  /* Find a close match to the first location at ADDRESS.  */
-  locp_found = ((struct bp_location **)
-		bsearch (&dummy_locp, bp_locations, bp_locations_count,
-			 sizeof (struct bp_location **),
-			 bp_locations_compare_addrs));
+      loc->disabled_by_cond = true;
+    }
 
-  /* Nothing was found, nothing left to do.  */
-  if (locp_found == NULL)
-    return NULL;
+  if (has_junk)
+    error (_("Garbage '%s' follows condition"), cond_string);
+}
 
-  /* We may have found a location that is at ADDRESS but is not the first in the
-     location's list.  Go backwards (if possible) and locate the first one.  */
-  while ((locp_found - 1) >= bp_locations
-	 && (*(locp_found - 1))->address == address)
-    locp_found--;
+/* See breakpoint.h.  */
 
-  return locp_found;
+void
+notify_breakpoint_modified (breakpoint *b)
+{
+  interps_notify_breakpoint_modified (b);
+  gdb::observers::breakpoint_modified.notify (b);
 }
 
 void
 set_breakpoint_condition (struct breakpoint *b, const char *exp,
-			  int from_tty)
+			  int from_tty, bool force)
 {
-  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;
+      b->cond_string.reset ();
 
-      for (loc = b->loc; loc; loc = loc->next)
+      if (is_watchpoint (b))
+	gdb::checked_static_cast<watchpoint *> (b)->cond_exp.reset ();
+      else
 	{
-	  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.  */
+	  int loc_num = 1;
+	  for (bp_location &loc : b->locations ())
+	    {
+	      loc.cond.reset ();
+	      if (loc.disabled_by_cond && loc.enabled)
+		gdb_printf (_("Breakpoint %d's condition is now valid at "
+			      "location %d, enabling.\n"),
+			    b->number, loc_num);
+	      loc.disabled_by_cond = false;
+	      loc_num++;
+
+	      /* 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);
+	gdb_printf (_("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 = gdb::checked_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 at least one location.  If so, the condition
+	     would be accepted.  So we go ahead and set the locations'
+	     conditions.  In case no valid 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 (const bp_location &loc : b->locations ())
+	    {
+	      try
+		{
+		  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"));
+		  break;
+		}
+	      catch (const gdb_exception_error &e)
+		{
+		  /* Condition string is invalid.  If this happens to
+		     be the last loc, abandon (if not forced) or continue
+		     (if forced).  */
+		  if (&loc == &b->last_loc () && !force)
+		    throw;
+		}
+	    }
 
-	  for (loc = b->loc; loc; loc = loc->next)
+	  /* If we reach here, the condition is valid at some locations.  */
+	  int loc_num = 1;
+	  for (bp_location &loc : b->locations ())
 	    {
-	      arg = exp;
-	      loc->cond =
-		parse_exp_1 (&arg, loc->address,
-			     block_for_pc (loc->address), 0);
-	      if (*arg)
-		error (_("Junk at end of expression"));
+	      set_breakpoint_location_condition (exp, &loc, b->number, loc_num);
+	      loc_num++;
 	    }
 	}
+
+      /* We know that the new condition parsed successfully.  The
+	 condition string of the breakpoint can be safely updated.  */
+      b->cond_string = make_unique_xstrdup (exp);
+      b->condition_not_parsed = 0;
     }
   mark_breakpoint_modified (b);
 
-  gdb::observers::breakpoint_modified.notify (b);
+  notify_breakpoint_modified (b);
+}
+
+/* See breakpoint.h.  */
+
+void
+set_breakpoint_condition (int bpnum, const char *exp, int from_tty,
+			  bool force)
+{
+  for (breakpoint &b : all_breakpoints ())
+    if (b.number == bpnum)
+      {
+	/* Check if this breakpoint has a "stop" method implemented in an
+	   extension language.  This method and conditions entered into GDB
+	   from the CLI are mutually exclusive.  */
+	const struct extension_language_defn *extlang
+	  = get_breakpoint_cond_ext_lang (&b, EXT_LANG_NONE);
+
+	if (extlang != NULL)
+	  {
+	    error (_("Only one stop condition allowed.  There is currently"
+		     " a %s stop condition defined for this breakpoint."),
+		   ext_lang_capitalized_name (extlang));
+	  }
+	set_breakpoint_condition (&b, exp, from_tty, force);
+
+	if (is_breakpoint (&b))
+	  update_global_location_list (UGLL_MAY_INSERT);
+
+	return;
+      }
+
+  error (_("No breakpoint number %d."), bpnum);
+}
+
+/* The options for the "condition" command.  */
+
+struct condition_command_opts
+{
+  /* For "-force".  */
+  bool force_condition = false;
+};
+
+static const gdb::option::option_def condition_command_option_defs[] = {
+
+  gdb::option::flag_option_def<condition_command_opts> {
+    "force",
+    [] (condition_command_opts *opts) { return &opts->force_condition; },
+    N_("Set the condition even if it is invalid for all current locations."),
+  },
+
+};
+
+/* Create an option_def_group for the "condition" options, with
+   CC_OPTS as context.  */
+
+static inline gdb::option::option_def_group
+make_condition_command_options_def_group (condition_command_opts *cc_opts)
+{
+  return {{condition_command_option_defs}, cc_opts};
 }
 
 /* Completion for the "condition" command.  */
@@ -901,33 +1269,45 @@ set_breakpoint_condition (struct breakpo
 static void
 condition_completer (struct cmd_list_element *cmd,
 		     completion_tracker &tracker,
-		     const char *text, const char *word)
+		     const char *text, const char * /*word*/)
 {
-  const char *space;
+  bool has_no_arguments = (*text == '\0');
+  condition_command_opts cc_opts;
+  const auto group = make_condition_command_options_def_group (&cc_opts);
+  if (gdb::option::complete_options
+      (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group))
+    return;
 
   text = skip_spaces (text);
-  space = skip_to_space (text);
+  const char *space = skip_to_space (text);
   if (*space == '\0')
     {
       int len;
-      struct breakpoint *b;
 
       if (text[0] == '$')
 	{
+	  tracker.advance_custom_word_point_by (1);
 	  /* We don't support completion of history indices.  */
 	  if (!isdigit (text[1]))
 	    complete_internalvar (tracker, &text[1]);
 	  return;
 	}
 
+      /* Suggest the "-force" flag if no arguments are given.  If
+	 arguments were passed, they either already include the flag,
+	 or we are beyond the point of suggesting it because it's
+	 positionally the first argument.  */
+      if (has_no_arguments)
+	gdb::option::complete_on_all_options (tracker, group);
+
       /* We're completing the breakpoint number.  */
       len = strlen (text);
 
-      ALL_BREAKPOINTS (b)
+      for (breakpoint &b : all_breakpoints ())
 	{
 	  char number[50];
 
-	  xsnprintf (number, sizeof (number), "%d", b->number);
+	  xsnprintf (number, sizeof (number), "%d", b.number);
 
 	  if (strncmp (number, text, len) == 0)
 	    tracker.add_completion (make_unique_xstrdup (number));
@@ -936,8 +1316,11 @@ condition_completer (struct cmd_list_ele
       return;
     }
 
-  /* We're completing the expression part.  */
-  text = skip_spaces (space);
+  /* We're completing the expression part.  Skip the breakpoint num.  */
+  const char *exp_start = skip_spaces (space);
+  tracker.advance_custom_word_point_by (exp_start - text);
+  text = exp_start;
+  const char *word = advance_to_expression_complete_word_point (tracker, text);
   expression_completer (cmd, tracker, text, word);
 }
 
@@ -946,7 +1329,6 @@ condition_completer (struct cmd_list_ele
 static void
 condition_command (const char *arg, int from_tty)
 {
-  struct breakpoint *b;
   const char *p;
   int bnum;
 
@@ -954,34 +1336,18 @@ condition_command (const char *arg, int
     error_no_arg (_("breakpoint number"));
 
   p = arg;
+
+  /* Check if the "-force" flag was passed.  */
+  condition_command_opts cc_opts;
+  const auto group = make_condition_command_options_def_group (&cc_opts);
+  gdb::option::process_options
+    (&p, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group);
+
   bnum = get_number (&p);
   if (bnum == 0)
     error (_("Bad breakpoint argument: '%s'"), arg);
 
-  ALL_BREAKPOINTS (b)
-    if (b->number == bnum)
-      {
-	/* Check if this breakpoint has a "stop" method implemented in an
-	   extension language.  This method and conditions entered into GDB
-	   from the CLI are mutually exclusive.  */
-	const struct extension_language_defn *extlang
-	  = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
-
-	if (extlang != NULL)
-	  {
-	    error (_("Only one stop condition allowed.  There is currently"
-		     " a %s stop condition defined for this breakpoint."),
-		   ext_lang_capitalized_name (extlang));
-	  }
-	set_breakpoint_condition (b, p, from_tty);
-
-	if (is_breakpoint (b))
-	  update_global_location_list (UGLL_MAY_INSERT);
-
-	return;
-      }
-
-  error (_("No breakpoint number %d."), bnum);
+  set_breakpoint_condition (bnum, p, from_tty, cc_opts.force_condition);
 }
 
 /* Check that COMMAND do not contain commands that are suitable
@@ -1013,8 +1379,10 @@ check_no_tracepoint_commands (struct com
     }
 }
 
-struct longjmp_breakpoint : public breakpoint
+struct longjmp_breakpoint : public momentary_breakpoint
 {
+  using momentary_breakpoint::momentary_breakpoint;
+
   ~longjmp_breakpoint () override;
 };
 
@@ -1025,13 +1393,8 @@ is_tracepoint_type (bptype type)
 {
   return (type == bp_tracepoint
 	  || type == bp_fast_tracepoint
-	  || type == bp_static_tracepoint);
-}
-
-static bool
-is_longjmp_type (bptype type)
-{
-  return type == bp_longjmp || type == bp_exception;
+	  || type == bp_static_tracepoint
+	  || type == bp_static_marker_tracepoint);
 }
 
 /* See breakpoint.h.  */
@@ -1045,19 +1408,43 @@ is_tracepoint (const struct breakpoint *
 /* Factory function to create an appropriate instance of breakpoint given
    TYPE.  */
 
-static std::unique_ptr<breakpoint>
-new_breakpoint_from_type (bptype type)
+template<typename... Arg>
+static std::unique_ptr<code_breakpoint>
+new_breakpoint_from_type (struct gdbarch *gdbarch, bptype type,
+			  Arg&&... args)
 {
-  breakpoint *b;
+  code_breakpoint *b;
 
-  if (is_tracepoint_type (type))
-    b = new tracepoint ();
-  else if (is_longjmp_type (type))
-    b = new longjmp_breakpoint ();
-  else
-    b = new breakpoint ();
+  switch (type)
+    {
+    case bp_breakpoint:
+    case bp_hardware_breakpoint:
+      b = new ordinary_breakpoint (gdbarch, type,
+				   std::forward<Arg> (args)...);
+      break;
 
-  return std::unique_ptr<breakpoint> (b);
+    case bp_fast_tracepoint:
+    case bp_static_tracepoint:
+    case bp_tracepoint:
+      b = new tracepoint (gdbarch, type,
+			  std::forward<Arg> (args)...);
+      break;
+
+    case bp_static_marker_tracepoint:
+      b = new static_marker_tracepoint (gdbarch, type,
+					std::forward<Arg> (args)...);
+      break;
+
+    case bp_dprintf:
+      b = new dprintf_breakpoint (gdbarch, type,
+				  std::forward<Arg> (args)...);
+      break;
+
+    default:
+      gdb_assert_not_reached ("invalid type");
+    }
+
+  return std::unique_ptr<code_breakpoint> (b);
 }
 
 /* A helper function that validates that COMMANDS are valid for a
@@ -1070,13 +1457,13 @@ validate_commands_for_breakpoint (struct
 {
   if (is_tracepoint (b))
     {
-      struct tracepoint *t = (struct tracepoint *) b;
+      tracepoint *t = gdb::checked_static_cast<tracepoint *> (b);
       struct command_line *c;
       struct command_line *while_stepping = 0;
 
       /* Reset the while-stepping step count.  The previous commands
-         might have included a while-stepping action, while the new
-         ones might not.  */
+	 might have included a while-stepping action, while the new
+	 ones might not.  */
       t->step_count = 0;
 
       /* We need to verify that each top-level element of commands is
@@ -1096,7 +1483,8 @@ validate_commands_for_breakpoint (struct
 	      if (b->type == bp_fast_tracepoint)
 		error (_("The 'while-stepping' command "
 			 "cannot be used for fast tracepoint"));
-	      else if (b->type == bp_static_tracepoint)
+	      else if (b->type == bp_static_tracepoint
+		       || b->type == bp_static_marker_tracepoint)
 		error (_("The 'while-stepping' command "
 			 "cannot be used for static tracepoint"));
 
@@ -1107,7 +1495,7 @@ validate_commands_for_breakpoint (struct
 		while_stepping = c;
 	    }
 
-	  validate_actionline (c->line, b);
+	  validate_actionline (c->line, t);
 	}
       if (while_stepping)
 	{
@@ -1134,16 +1522,15 @@ validate_commands_for_breakpoint (struct
 std::vector<breakpoint *>
 static_tracepoints_here (CORE_ADDR addr)
 {
-  struct breakpoint *b;
   std::vector<breakpoint *> found;
-  struct bp_location *loc;
 
-  ALL_BREAKPOINTS (b)
-    if (b->type == bp_static_tracepoint)
+  for (breakpoint &b : all_breakpoints ())
+    if (b.type == bp_static_tracepoint
+	|| b.type == bp_static_marker_tracepoint)
       {
-	for (loc = b->loc; loc; loc = loc->next)
-	  if (loc->address == addr)
-	    found.push_back (b);
+	for (bp_location &loc : b.locations ())
+	  if (loc.address == addr)
+	    found.push_back (&b);
       }
 
   return found;
@@ -1156,10 +1543,15 @@ void
 breakpoint_set_commands (struct breakpoint *b, 
 			 counted_command_line &&commands)
 {
+  /* If the commands have not changed then there's no need to update
+     anything, and no need to emit a breakpoint modified event.  */
+  if (commands_equal (b->commands.get (), commands.get ()))
+    return;
+
   validate_commands_for_breakpoint (b, commands.get ());
 
   b->commands = std::move (commands);
-  gdb::observers::breakpoint_modified.notify (b);
+  notify_breakpoint_modified (b);
 }
 
 /* Set the internal `silent' flag on the breakpoint.  Note that this
@@ -1173,33 +1565,141 @@ breakpoint_set_silent (struct breakpoint
 
   b->silent = silent;
   if (old_silent != silent)
-    gdb::observers::breakpoint_modified.notify (b);
+    notify_breakpoint_modified (b);
 }
 
-/* Set the thread for this breakpoint.  If THREAD is -1, make the
-   breakpoint work for any thread.  */
+/* See breakpoint.h.  */
 
 void
 breakpoint_set_thread (struct breakpoint *b, int thread)
 {
-  int old_thread = b->thread;
+  /* THREAD should be -1, meaning no thread restriction, or it should be a
+     valid global thread-id, which are greater than zero.  */
+  gdb_assert (thread == -1 || thread > 0);
+
+  /* It is not valid to set a thread restriction for a breakpoint that
+     already has task or inferior restriction.  */
+  gdb_assert (thread == -1 || (b->task == -1 && b->inferior == -1));
 
+  int old_thread = b->thread;
   b->thread = thread;
   if (old_thread != thread)
-    gdb::observers::breakpoint_modified.notify (b);
+    {
+      /* If THREAD is in a different program_space than OLD_THREAD, or the
+	 breakpoint has switched to or from being thread-specific, then we
+	 need to re-set the locations of this breakpoint.  First, figure
+	 out the program_space for the old and new threads, use a value of
+	 nullptr to indicate the breakpoint is in all program spaces.  */
+      program_space *old_pspace = nullptr;
+      if (old_thread != -1)
+	{
+	  struct thread_info *thr = find_thread_global_id (old_thread);
+	  gdb_assert (thr != nullptr);
+	  old_pspace = thr->inf->pspace;
+	}
+
+      program_space *new_pspace = nullptr;
+      if (thread != -1)
+	{
+	  struct thread_info *thr = find_thread_global_id (thread);
+	  gdb_assert (thr != nullptr);
+	  new_pspace = thr->inf->pspace;
+	}
+
+      /* If the program space has changed for this breakpoint, then
+	 re-evaluate it's locations.  */
+      if (old_pspace != new_pspace)
+	{
+	  /* The breakpoint is now associated with a completely different
+	     program space.  Discard all of the current locations and then
+	     re-set the breakpoint in the new program space, this will
+	     create the new locations.  */
+	  b->clear_locations ();
+	  breakpoint_re_set_one (b, new_pspace);
+	}
+
+      /* If the program space didn't change, or the breakpoint didn't
+	 acquire any new locations after the clear_locations call, then we
+	 need to notify of the breakpoint modification now.  */
+      if (old_pspace == new_pspace || !b->has_locations ())
+	notify_breakpoint_modified (b);
+    }
 }
 
-/* Set the task for this breakpoint.  If TASK is 0, make the
-   breakpoint work for any task.  */
+/* See breakpoint.h.  */
+
+void
+breakpoint_set_inferior (struct breakpoint *b, int inferior)
+{
+  /* INFERIOR should be -1, meaning no inferior restriction, or it should
+     be a valid inferior number, which are greater than zero.  */
+  gdb_assert (inferior == -1 || inferior > 0);
+
+  /* It is not valid to set an inferior restriction for a breakpoint that
+     already has a task or thread restriction.  */
+  gdb_assert (inferior == -1 || (b->task == -1 && b->thread == -1));
+
+  int old_inferior = b->inferior;
+  b->inferior = inferior;
+  if (old_inferior != inferior)
+    {
+      /* If INFERIOR is in a different program_space than OLD_INFERIOR, or
+	 the breakpoint has switch to or from inferior-specific, then we
+	 need to re-set the locations of this breakpoint.  First, figure
+	 out the program_space for the old and new inferiors, use a value
+	 of nullptr to indicate the breakpoint is in all program
+	 spaces.  */
+      program_space *old_pspace = nullptr;
+      if (old_inferior != -1)
+	{
+	  struct inferior *inf = find_inferior_id (old_inferior);
+	  gdb_assert (inf != nullptr);
+	  old_pspace = inf->pspace;
+	}
+
+      program_space *new_pspace = nullptr;
+      if (inferior != -1)
+	{
+	  struct inferior *inf = find_inferior_id (inferior);
+	  gdb_assert (inf != nullptr);
+	  new_pspace = inf->pspace;
+	}
+
+      if (old_pspace != new_pspace)
+	{
+	  /* The breakpoint is now associated with a completely different
+	     program space.  Discard all of the current locations and then
+	     re-set the breakpoint in the new program space, this will
+	     create the new locations.  */
+	  b->clear_locations ();
+	  breakpoint_re_set_one (b, new_pspace);
+	}
+
+      /* If the program space didn't change, or the breakpoint didn't
+	 acquire any new locations after the clear_locations call, then we
+	 need to notify of the breakpoint modification now.  */
+      if (old_pspace == new_pspace || !b->has_locations ())
+	notify_breakpoint_modified (b);
+    }
+}
+
+/* See breakpoint.h.  */
 
 void
 breakpoint_set_task (struct breakpoint *b, int task)
 {
-  int old_task = b->task;
+  /* TASK should be -1, meaning no task restriction, or it should be a
+     valid task-id, which are greater than zero.  */
+  gdb_assert (task == -1 || task > 0);
+
+  /* It is not valid to set a task restriction for a breakpoint that
+     already has a thread or inferior restriction.  */
+  gdb_assert (task == -1 || (b->thread == -1 && b->inferior == -1));
 
+  int old_task = b->task;
   b->task = task;
   if (old_task != task)
-    gdb::observers::breakpoint_modified.notify (b);
+    notify_breakpoint_modified (b);
 }
 
 static void
@@ -1216,13 +1716,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)
@@ -1241,7 +1751,9 @@ commands_command_1 (const char *arg, int
 
 	       auto do_validate = [=] (const char *line)
 				  {
-				    validate_actionline (line, b);
+				    tracepoint *t
+				      = gdb::checked_static_cast<tracepoint *> (b);
+				    validate_actionline (line, t);
 				  };
 	       gdb::function_view<void (const char *)> validator;
 	       if (is_tracepoint (b))
@@ -1258,7 +1770,7 @@ commands_command_1 (const char *arg, int
 	 {
 	   validate_commands_for_breakpoint (b, cmd.get ());
 	   b->commands = cmd;
-	   gdb::observers::breakpoint_modified.notify (b);
+	   notify_breakpoint_modified (b);
 	 }
      });
 }
@@ -1281,19 +1793,19 @@ commands_from_control_command (const cha
   return simple_control;
 }
 
-/* Return non-zero if BL->TARGET_INFO contains valid information.  */
+/* Return true if BL->TARGET_INFO contains valid information.  */
 
-static int
+static bool
 bp_location_has_shadow (struct bp_location *bl)
 {
   if (bl->loc_type != bp_loc_software_breakpoint)
-    return 0;
+    return false;
   if (!bl->inserted)
-    return 0;
+    return false;
   if (bl->target_info.shadow_len == 0)
     /* BL isn't valid, or doesn't shadow memory.  */
-    return 0;
-  return 1;
+    return false;
+  return true;
 }
 
 /* Update BUF, which is LEN bytes read from the target address
@@ -1317,7 +1829,7 @@ one_breakpoint_xfer_memory (gdb_byte *re
   int bptoffset = 0;
 
   if (!breakpoint_address_match (target_info->placed_address_space, 0,
-				 current_program_space->aspace, 0))
+				 current_program_space->aspace.get (), 0))
     {
       /* The breakpoint is inserted in a different address space.  */
       return;
@@ -1422,7 +1934,7 @@ breakpoint_xfer_memory (gdb_byte *readbu
      report higher one.  */
 
   bc_l = 0;
-  bc_r = bp_locations_count;
+  bc_r = bp_locations.size ();
   while (bc_l + 1 < bc_r)
     {
       struct bp_location *bl;
@@ -1467,29 +1979,30 @@ breakpoint_xfer_memory (gdb_byte *readbu
 
   /* Now do full processing of the found relevant range of elements.  */
 
-  for (bc = bc_l; bc < bp_locations_count; bc++)
-  {
-    struct bp_location *bl = bp_locations[bc];
+  for (bc = bc_l; bc < bp_locations.size (); bc++)
+    {
+      struct bp_location *bl = bp_locations[bc];
 
-    /* bp_location array has BL->OWNER always non-NULL.  */
-    if (bl->owner->type == bp_none)
-      warning (_("reading through apparently deleted breakpoint #%d?"),
-	       bl->owner->number);
-
-    /* Performance optimization: any further element can no longer affect BUF
-       content.  */
-
-    if (bl->address >= bp_locations_placed_address_before_address_max
-	&& memaddr + len <= (bl->address
-			     - bp_locations_placed_address_before_address_max))
-      break;
+      /* bp_location array has BL->OWNER always non-NULL.  */
+      if (bl->owner->type == bp_none)
+	warning (_("reading through apparently deleted breakpoint #%d?"),
+		 bl->owner->number);
 
-    if (!bp_location_has_shadow (bl))
-      continue;
+      /* Performance optimization: any further element can no longer affect BUF
+	 content.  */
 
-    one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
-				memaddr, len, &bl->target_info, bl->gdbarch);
-  }
+      if (bl->address >= bp_locations_placed_address_before_address_max
+	  && (memaddr + len
+	      <= (bl->address
+		  - bp_locations_placed_address_before_address_max)))
+	break;
+
+      if (!bp_location_has_shadow (bl))
+	continue;
+
+      one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
+				  memaddr, len, &bl->target_info, bl->gdbarch);
+    }
 }
 
 /* See breakpoint.h.  */
@@ -1530,13 +2043,13 @@ is_watchpoint (const struct breakpoint *
    and in any state.  It is presently left to the target allowing
    memory accesses when threads are running.  */
 
-static int
+static bool
 watchpoint_in_thread_scope (struct watchpoint *b)
 {
   return (b->pspace == current_program_space
 	  && (b->watchpoint_thread == null_ptid
 	      || (inferior_ptid == b->watchpoint_thread
-		  && !inferior_thread ()->executing)));
+		  && !inferior_thread ()->executing ())));
 }
 
 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
@@ -1554,6 +2067,7 @@ watchpoint_del_at_next_stop (struct watc
       w->related_breakpoint = w;
     }
   w->disposition = disp_del_at_next_stop;
+  disable_breakpoint (w);
 }
 
 /* Extract a bitfield value from value VAL using the bit parameters contained in
@@ -1567,50 +2081,34 @@ extract_bitfield_from_watchpoint_value (
   if (val == NULL)
     return NULL;
 
-  bit_val = allocate_value (value_type (val));
+  bit_val = value::allocate (val->type ());
 
-  unpack_value_bitfield (bit_val,
-			 w->val_bitpos,
-			 w->val_bitsize,
-			 value_contents_for_printing (val),
-			 value_offset (val),
-			 val);
+  val->unpack_bitfield (bit_val,
+			w->val_bitpos,
+			w->val_bitsize,
+			val->contents_for_printing ().data (),
+			val->offset ());
 
   return bit_val;
 }
 
-/* Allocate a dummy location and add it to B, which must be a software
-   watchpoint.  This is required because even if a software watchpoint
-   is not watching any memory, bpstat_stop_status requires a location
-   to be able to report stops.  */
+/* Allocate a dummy location and add it to B.  This is required
+   because bpstat_stop_status requires a location to be able to report
+   stops.  */
 
 static void
-software_watchpoint_add_no_memory_location (struct breakpoint *b,
-					    struct program_space *pspace)
+add_dummy_location (struct breakpoint *b,
+		    struct program_space *pspace)
 {
-  gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
-
-  b->loc = allocate_bp_location (b);
-  b->loc->pspace = pspace;
-  b->loc->address = -1;
-  b->loc->length = -1;
-}
+  gdb_assert (!b->has_locations ());
 
-/* Returns true if B is a software watchpoint that is not watching any
-   memory (e.g., "watch $pc").  */
-
-static bool
-is_no_memory_software_watchpoint (struct breakpoint *b)
-{
-  return (b->type == bp_watchpoint
-	  && b->loc != NULL
-	  && b->loc->next == NULL
-	  && b->loc->address == -1
-	  && b->loc->length == -1);
+  bp_location *loc = new bp_location (b, bp_loc_other);
+  loc->pspace = pspace;
+  b->add_location (*loc);
 }
 
 /* Assuming that B is a watchpoint:
-   - Reparse watchpoint expression, if REPARSE is non-zero
+   - Reparse watchpoint expression, if REPARSE is true
    - Evaluate expression and store the result in B->val
    - Evaluate the condition if there is one, and store the result
      in b->loc->cond.
@@ -1662,11 +2160,9 @@ is_no_memory_software_watchpoint (struct
    watchpoint removal from inferior.  */
 
 static void
-update_watchpoint (struct watchpoint *b, int reparse)
+update_watchpoint (struct watchpoint *b, bool reparse)
 {
-  int within_current_scope;
-  struct frame_id saved_frame_id;
-  int frame_saved;
+  bool within_current_scope;
 
   /* If this is a local watchpoint, we only want to check if the
      watchpoint frame is in scope if the current thread is the thread
@@ -1676,15 +2172,15 @@ update_watchpoint (struct watchpoint *b,
 
   if (b->disposition == disp_del_at_next_stop)
     return;
- 
-  frame_saved = 0;
+
+  std::optional<scoped_restore_selected_frame> restore_frame;
 
   /* Determine if the watchpoint is within scope.  */
   if (b->exp_valid_block == NULL)
-    within_current_scope = 1;
+    within_current_scope = true;
   else
     {
-      struct frame_info *fi = get_current_frame ();
+      frame_info_ptr fi = get_current_frame ();
       struct gdbarch *frame_arch = get_frame_arch (fi);
       CORE_ADDR frame_pc = get_frame_pc (fi);
 
@@ -1696,12 +2192,11 @@ update_watchpoint (struct watchpoint *b,
 	return;
 
       /* Save the current frame's ID so we can restore it after
-         evaluating the watchpoint expression on its own frame.  */
+	 evaluating the watchpoint expression on its own frame.  */
       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
-         took a frame parameter, so that we didn't have to change the
-         selected frame.  */
-      frame_saved = 1;
-      saved_frame_id = get_frame_id (get_selected_frame (NULL));
+	 took a frame parameter, so that we didn't have to change the
+	 selected frame.  */
+      restore_frame.emplace ();
 
       fi = frame_find_by_id (b->watchpoint_frame);
       within_current_scope = (fi != NULL);
@@ -1712,14 +2207,16 @@ update_watchpoint (struct watchpoint *b,
   /* We don't free locations.  They are stored in the bp_location array
      and update_global_location_list will eventually delete them and
      remove breakpoints if needed.  */
-  b->loc = NULL;
+  b->clear_locations ();
 
   if (within_current_scope && reparse)
     {
       const char *s;
 
       b->exp.reset ();
-      s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
+      s = (b->exp_string_reparse
+	   ? b->exp_string_reparse.get ()
+	   : b->exp_string.get ());
       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
       /* If the meaning of expression itself changed, the old value is
 	 no longer relevant.  We don't want to report a watchpoint hit
@@ -1735,7 +2232,7 @@ update_watchpoint (struct watchpoint *b,
 	{
 	  b->cond_exp.reset ();
 
-	  s = b->cond_string;
+	  s = b->cond_string.get ();
 	  b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
 	}
     }
@@ -1745,14 +2242,14 @@ update_watchpoint (struct watchpoint *b,
      don't try to insert watchpoint.  We don't automatically delete
      such watchpoint, though, since failure to parse expression
      is different from out-of-scope watchpoint.  */
-  if (!target_has_execution)
+  if (!target_has_execution ())
     {
       /* Without execution, memory can't change.  No use to try and
 	 set watchpoint locations.  The watchpoint will be reset when
 	 the target gains execution, through breakpoint_re_set.  */
       if (!can_use_hw_watchpoints)
 	{
-	  if (b->ops->works_in_software_mode (b))
+	  if (b->works_in_software_mode ())
 	    b->type = bp_watchpoint;
 	  else
 	    error (_("Can't set read/access watchpoint when "
@@ -1761,12 +2258,12 @@ update_watchpoint (struct watchpoint *b,
     }
   else if (within_current_scope && b->exp)
     {
-      int pc = 0;
       std::vector<value_ref_ptr> val_chain;
       struct value *v, *result;
-      struct program_space *frame_pspace;
+      struct program_space *wp_pspace;
 
-      fetch_subexp_value (b->exp.get (), &pc, &v, &result, &val_chain, 0);
+      fetch_subexp_value (b->exp.get (), b->exp->op.get (), &v, &result,
+			  &val_chain, false);
 
       /* Avoid setting b->val if it's already set.  The meaning of
 	 b->val is 'the last value' user saw, and we should update
@@ -1782,7 +2279,10 @@ update_watchpoint (struct watchpoint *b,
 	  b->val_valid = true;
 	}
 
-      frame_pspace = get_frame_program_space (get_selected_frame (NULL));
+      if (b->exp_valid_block == nullptr)
+	wp_pspace = current_program_space;
+      else
+	wp_pspace = get_frame_program_space (get_selected_frame (NULL));
 
       /* Look at each value on the value chain.  */
       gdb_assert (!val_chain.empty ());
@@ -1795,29 +2295,28 @@ update_watchpoint (struct watchpoint *b,
 	     must watch it.  If the first value returned is
 	     still lazy, that means an error occurred reading it;
 	     watch it anyway in case it becomes readable.  */
-	  if (VALUE_LVAL (v) == lval_memory
-	      && (v == val_chain[0] || ! value_lazy (v)))
+	  if (v->lval () == lval_memory
+	      && (v == val_chain[0] || ! v->lazy ()))
 	    {
-	      struct type *vtype = check_typedef (value_type (v));
+	      struct type *vtype = check_typedef (v->type ());
 
 	      /* We only watch structs and arrays if user asked
 		 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;
-		  struct bp_location *loc, **tmp;
 		  int bitpos = 0, bitsize = 0;
 
-		  if (value_bitsize (v) != 0)
+		  if (v->bitsize () != 0)
 		    {
 		      /* Extract the bit parameters out from the bitfield
 			 sub-expression.  */
-		      bitpos = value_bitpos (v);
-		      bitsize = value_bitsize (v);
+		      bitpos = v->bitpos ();
+		      bitsize = v->bitsize ();
 		    }
 		  else if (v == result && b->val_bitsize != 0)
 		    {
@@ -1828,7 +2327,7 @@ update_watchpoint (struct watchpoint *b,
 		      bitsize = b->val_bitsize;
 		    }
 
-		  addr = value_address (v);
+		  addr = v->address ();
 		  if (bitsize != 0)
 		    {
 		      /* Skip the bytes that don't contain the bitfield.  */
@@ -1841,14 +2340,13 @@ update_watchpoint (struct watchpoint *b,
 		  else if (b->type == bp_access_watchpoint)
 		    type = hw_access;
 
-		  loc = allocate_bp_location (b);
-		  for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
-		    ;
-		  *tmp = loc;
-		  loc->gdbarch = get_type_arch (value_type (v));
-
-		  loc->pspace = frame_pspace;
-		  loc->address = address_significant (loc->gdbarch, addr);
+		  bp_location *loc = b->allocate_location ();
+		  loc->gdbarch = v->type ()->arch ();
+		  loc->pspace = wp_pspace;
+		  loc->address
+		    = gdbarch_remove_non_address_bits_watchpoint (loc->gdbarch,
+								  addr);
+		  b->add_location (*loc);
 
 		  if (bitsize != 0)
 		    {
@@ -1856,22 +2354,35 @@ update_watchpoint (struct watchpoint *b,
 		      loc->length = ((bitpos % 8) + bitsize + 7) / 8;
 		    }
 		  else
-		    loc->length = TYPE_LENGTH (value_type (v));
+		    loc->length = v->type ()->length ();
 
 		  loc->watchpoint_type = type;
 		}
 	    }
 	}
 
+      /* Helper function to bundle possibly emitting a warning along with
+	 changing the type of B to bp_watchpoint.  */
+      auto change_type_to_bp_watchpoint = [] (breakpoint *bp)
+      {
+	/* Only warn for breakpoints that have been assigned a +ve number,
+	   anything else is either an internal watchpoint (which we don't
+	   currently create) or has not yet been finalized, in which case
+	   this change of type will be occurring before the user is told
+	   the type of this watchpoint.  */
+	if (bp->type == bp_hardware_watchpoint && bp->number > 0)
+	  warning (_("watchpoint %d downgraded to software watchpoint"),
+		   bp->number);
+	bp->type = bp_watchpoint;
+      };
+
       /* Change the type of breakpoint between hardware assisted or
-	 an ordinary watchpoint depending on the hardware support
-	 and free hardware slots.  REPARSE is set when the inferior
-	 is started.  */
-      if (reparse)
+	 an ordinary watchpoint depending on the hardware support and
+	 free hardware slots.  Recheck the number of free hardware slots
+	 as the value chain may have changed.  */
 	{
 	  int reg_cnt;
 	  enum bp_loc_type loc_type;
-	  struct bp_location *bl;
 
 	  reg_cnt = can_use_hardware_watchpoint (val_chain);
 
@@ -1912,7 +2423,7 @@ update_watchpoint (struct watchpoint *b,
 		= target_can_use_hardware_watchpoint (type, i, other_type_used);
 	      if (target_resources_ok <= 0)
 		{
-		  int sw_mode = b->ops->works_in_software_mode (b);
+		  bool sw_mode = b->works_in_software_mode ();
 
 		  if (target_resources_ok == 0 && !sw_mode)
 		    error (_("Target does not support this type of "
@@ -1922,7 +2433,7 @@ update_watchpoint (struct watchpoint *b,
 			     "resources for this watchpoint."));
 
 		  /* Downgrade to software watchpoint.  */
-		  b->type = bp_watchpoint;
+		  change_type_to_bp_watchpoint (b);
 		}
 	      else
 		{
@@ -1933,7 +2444,7 @@ update_watchpoint (struct watchpoint *b,
 		  b->type = type;
 		}
 	    }
-	  else if (!b->ops->works_in_software_mode (b))
+	  else if (!b->works_in_software_mode ())
 	    {
 	      if (!can_use_hw_watchpoints)
 		error (_("Can't set read/access watchpoint when "
@@ -1943,55 +2454,53 @@ update_watchpoint (struct watchpoint *b,
 			 "read/access watchpoint."));
 	    }
 	  else
-	    b->type = bp_watchpoint;
+	    change_type_to_bp_watchpoint (b);
 
-	  loc_type = (b->type == bp_watchpoint? bp_loc_other
+	  loc_type = (b->type == bp_watchpoint? bp_loc_software_watchpoint
 		      : bp_loc_hardware_watchpoint);
-	  for (bl = b->loc; bl; bl = bl->next)
-	    bl->loc_type = loc_type;
+
+	  for (bp_location &bl : b->locations ())
+	    bl.loc_type = loc_type;
 	}
 
       /* If a software watchpoint is not watching any memory, then the
 	 above left it without any location set up.  But,
 	 bpstat_stop_status requires a location to be able to report
 	 stops, so make sure there's at least a dummy one.  */
-      if (b->type == bp_watchpoint && b->loc == NULL)
-	software_watchpoint_add_no_memory_location (b, frame_pspace);
+      if (b->type == bp_watchpoint && !b->has_locations ())
+	add_dummy_location (b, wp_pspace);
     }
   else if (!within_current_scope)
     {
-      printf_filtered (_("\
+      gdb_printf (_("\
 Watchpoint %d deleted because the program has left the block\n\
 in which its expression is valid.\n"),
-		       b->number);
+		  b->number);
       watchpoint_del_at_next_stop (b);
     }
-
-  /* Restore the selected frame.  */
-  if (frame_saved)
-    select_frame (frame_find_by_id (saved_frame_id));
 }
 
-
-/* Returns 1 iff breakpoint location should be
+/* Returns true iff breakpoint location should be
    inserted in the inferior.  We don't differentiate the type of BL's owner
    (breakpoint vs. tracepoint), although insert_location in tracepoint's
    breakpoint_ops is not defined, because in insert_bp_location,
    tracepoint's insert_location will not be called.  */
-static int
+
+static bool
 should_be_inserted (struct bp_location *bl)
 {
   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
-    return 0;
+    return false;
 
   if (bl->owner->disposition == disp_del_at_next_stop)
-    return 0;
+    return false;
 
-  if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
-    return 0;
+  if (!bl->enabled || bl->disabled_by_cond
+      || bl->shlib_disabled || bl->duplicate)
+    return false;
 
   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
-    return 0;
+    return false;
 
   /* This is set for example, when we're attached to the parent of a
      vfork, and have detached from the child.  The child is running
@@ -2002,7 +2511,7 @@ should_be_inserted (struct bp_location *
      the child could still trip on the parent's breakpoints.  Since
      the parent is blocked anyway, it won't miss any breakpoint.  */
   if (bl->pspace->breakpoints_not_allowed)
-    return 0;
+    return false;
 
   /* Don't insert a breakpoint if we're trying to step past its
      location, except if the breakpoint is a single-step breakpoint,
@@ -2010,7 +2519,7 @@ should_be_inserted (struct bp_location *
      a breakpoint.  */
   if ((bl->loc_type == bp_loc_software_breakpoint
        || bl->loc_type == bp_loc_hardware_breakpoint)
-      && stepping_past_instruction_at (bl->pspace->aspace,
+      && stepping_past_instruction_at (bl->pspace->aspace.get (),
 				       bl->address)
       /* The single-step breakpoint may be inserted at the location
 	 we're trying to step if the instruction branches to itself.
@@ -2022,14 +2531,9 @@ 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));
-	}
-      return 0;
+      infrun_debug_printf ("skipping breakpoint: stepping past insn at: %s",
+			   paddress (bl->gdbarch, bl->address));
+      return false;
     }
 
   /* Don't insert watchpoints if we're trying to step past the
@@ -2037,33 +2541,25 @@ 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);
-	}
-      return 0;
+      infrun_debug_printf ("stepping past non-steppable watchpoint. "
+			   "skipping watchpoint at %s:%d",
+			   paddress (bl->gdbarch, bl->address), bl->length);
+      return false;
     }
 
-  return 1;
+  return true;
 }
 
 /* Same as should_be_inserted but does the check assuming
    that the location is not duplicated.  */
 
-static int
+static bool
 unduplicated_should_be_inserted (struct bp_location *bl)
 {
-  int result;
-  const int save_duplicate = bl->duplicate;
+  scoped_restore restore_bl_duplicate
+    = make_scoped_restore (&bl->duplicate, 0);
 
-  bl->duplicate = 0;
-  result = should_be_inserted (bl);
-  bl->duplicate = save_duplicate;
-  return result;
+  return should_be_inserted (bl);
 }
 
 /* Parses a conditional described by an expression COND into an
@@ -2106,10 +2602,8 @@ parse_cond_to_aexpr (CORE_ADDR scope, st
 static void
 build_target_condition_list (struct bp_location *bl)
 {
-  struct bp_location **locp = NULL, **loc2p;
-  int null_condition_or_parse_error = 0;
+  bool null_condition_or_parse_error = false;
   int modified = bl->needs_update;
-  struct bp_location *loc;
 
   /* Release conditions left over from a previous insert.  */
   bl->target_info.conditions.clear ();
@@ -2122,14 +2616,19 @@ build_target_condition_list (struct bp_l
       || !target_supports_evaluation_of_breakpoint_conditions ())
     return;
 
+  auto loc_range = all_bp_locations_at_addr (bl->address);
+
   /* 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.  */
-  ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
+     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).  */
+  for (bp_location *loc : loc_range)
     {
-      loc = (*loc2p);
       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
 	{
 	  if (modified)
@@ -2146,7 +2645,7 @@ build_target_condition_list (struct bp_l
 	     went wrong or we have a null condition expression.  */
 	  if (!loc->cond_bytecode)
 	    {
-	      null_condition_or_parse_error = 1;
+	      null_condition_or_parse_error = true;
 	      break;
 	    }
 	}
@@ -2160,9 +2659,8 @@ build_target_condition_list (struct bp_l
      being evaluated by GDB or the remote stub.  */
   if (null_condition_or_parse_error)
     {
-      ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
+      for (bp_location *loc : loc_range)
 	{
-	  loc = (*loc2p);
 	  if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
 	    {
 	      /* Only go as far as the first NULL bytecode is
@@ -2175,22 +2673,24 @@ build_target_condition_list (struct bp_l
 	}
     }
 
-  /* No NULL conditions or failed bytecode generation.  Build a condition list
-     for this location's address.  */
-  ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
-    {
-      loc = (*loc2p);
-      if (loc->cond
-	  && is_breakpoint (loc->owner)
-	  && loc->pspace->num == bl->pspace->num
-	  && loc->owner->enable_state == bp_enabled
-	  && loc->enabled)
-	{
-	  /* Add the condition to the vector.  This will be used later
-	     to send the conditions to the target.  */
-	  bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
-	}
-    }
+  /* 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 merge all the conditions
+     anyway, as it's simpler, and doesn't really make a practical
+     difference.  */
+  for (bp_location *loc : loc_range)
+    if (loc->cond
+	&& is_breakpoint (loc->owner)
+	&& loc->pspace->num == bl->pspace->num
+	&& loc->owner->enable_state == bp_enabled
+	&& loc->enabled
+	&& !loc->disabled_by_cond)
+      {
+	/* Add the condition to the vector.  This will be used later
+	   to send the conditions to the target.  */
+	bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
+      }
 
   return;
 }
@@ -2244,7 +2744,8 @@ parse_cmd_to_aexpr (CORE_ADDR scope, cha
       const char *cmd1;
 
       cmd1 = cmdrest;
-      expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
+      expression_up expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope),
+					PARSER_COMMA_TERMINATES);
       argvec.push_back (expr.release ());
       cmdrest = cmd1;
       if (*cmdrest == ',')
@@ -2279,10 +2780,8 @@ parse_cmd_to_aexpr (CORE_ADDR scope, cha
 static void
 build_target_command_list (struct bp_location *bl)
 {
-  struct bp_location **locp = NULL, **loc2p;
-  int null_command_or_parse_error = 0;
+  bool null_command_or_parse_error = false;
   int modified = bl->needs_update;
-  struct bp_location *loc;
 
   /* Clear commands left over from a previous insert.  */
   bl->target_info.tcommands.clear ();
@@ -2294,27 +2793,25 @@ 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
+  auto loc_range = all_bp_locations_at_addr (bl->address);
+
+  /* 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)
-    {
-      loc = (*loc2p);
-      if (is_breakpoint (loc->owner)
-	  && loc->pspace->num == bl->pspace->num
-	  && loc->owner->type != bp_dprintf)
-	return;
-    }
+  for (bp_location *loc : loc_range)
+    if (is_breakpoint (loc->owner)
+	&& loc->pspace->num == bl->pspace->num
+	&& loc->owner->type != bp_dprintf)
+      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.  */
-  ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
+  for (bp_location *loc : loc_range)
     {
-      loc = (*loc2p);
       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
 	{
 	  if (modified)
@@ -2325,14 +2822,14 @@ build_target_command_list (struct bp_loc
 		 need to parse the command to bytecodes again.  */
 	      loc->cmd_bytecode
 		= parse_cmd_to_aexpr (bl->address,
-				      loc->owner->extra_string);
+				      loc->owner->extra_string.get ());
 	    }
 
 	  /* If we have a NULL bytecode expression, it means something
 	     went wrong or we have a null command expression.  */
 	  if (!loc->cmd_bytecode)
 	    {
-	      null_command_or_parse_error = 1;
+	      null_command_or_parse_error = true;
 	      break;
 	    }
 	}
@@ -2342,38 +2839,40 @@ build_target_command_list (struct bp_loc
      and so clean up.  */
   if (null_command_or_parse_error)
     {
-      ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
-	{
-	  loc = (*loc2p);
-	  if (is_breakpoint (loc->owner)
-	      && loc->pspace->num == bl->pspace->num)
-	    {
-	      /* Only go as far as the first NULL bytecode is
-		 located.  */
-	      if (loc->cmd_bytecode == NULL)
-		return;
+      for (bp_location *loc : loc_range)
+	if (is_breakpoint (loc->owner)
+	    && loc->pspace->num == bl->pspace->num)
+	  {
+	    /* Only go as far as the first NULL bytecode is
+	       located.  */
+	    if (loc->cmd_bytecode == NULL)
+	      return;
 
-	      loc->cmd_bytecode.reset ();
-	    }
-	}
+	    loc->cmd_bytecode.reset ();
+	  }
     }
 
-  /* No NULL commands or failed bytecode generation.  Build a command list
-     for this location's address.  */
-  ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
-    {
-      loc = (*loc2p);
-      if (loc->owner->extra_string
-	  && is_breakpoint (loc->owner)
-	  && loc->pspace->num == bl->pspace->num
-	  && loc->owner->enable_state == bp_enabled
-	  && loc->enabled)
-	{
-	  /* Add the command to the vector.  This will be used later
-	     to send the commands to the target.  */
-	  bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
-	}
-    }
+  /* 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.  */
+  for (bp_location *loc : loc_range)
+    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
+	&& loc->enabled
+	&& !loc->disabled_by_cond)
+      {
+	/* Add the command to the vector.  This will be used later
+	   to send the commands to the target.  */
+	bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
+      }
 
   bl->target_info.persist = 0;
   /* Maybe flag this location as persistent.  */
@@ -2387,7 +2886,7 @@ build_target_command_list (struct bp_loc
    registers state.  */
 
 static int
-breakpoint_kind (struct bp_location *bl, CORE_ADDR *addr)
+breakpoint_kind (const struct bp_location *bl, CORE_ADDR *addr)
 {
   if (bl->owner->type == bp_single_step)
     {
@@ -2403,6 +2902,29 @@ breakpoint_kind (struct bp_location *bl,
     return gdbarch_breakpoint_kind_from_pc (bl->gdbarch, addr);
 }
 
+/* Rethrow the currently handled exception, if it's a TARGET_CLOSE_ERROR.
+   E is either the currently handled exception, or a copy, or a sliced copy,
+   so we can't rethrow that one, but we can use it to inspect the properties
+   of the currently handled exception.  */
+
+static void
+rethrow_on_target_close_error (const gdb_exception &e)
+{
+  if (e.reason == 0)
+    return;
+  /* Can't set the breakpoint.  */
+
+  if (e.error != TARGET_CLOSE_ERROR)
+    return;
+
+  /* If the target has closed then it will have deleted any breakpoints
+     inserted within the target inferior, as a result any further attempts
+     to interact with the breakpoint objects is not possible.  Just rethrow
+     the error.  Don't use e to rethrow, to prevent object slicing of the
+     exception.  */
+  throw;
+}
+
 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
    location.  Any error messages are printed to TMP_ERROR_STREAM; and
    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
@@ -2423,6 +2945,8 @@ insert_bp_location (struct bp_location *
   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
     return 0;
 
+  breakpoint_debug_printf ("%s", breakpoint_location_address_str (bl).c_str ());
+
   /* Note we don't initialize bl->target_info, as that wipes out
      the breakpoint location's shadow_contents if the breakpoint
      is still inserted at that location.  This in turn breaks
@@ -2433,7 +2957,7 @@ insert_bp_location (struct bp_location *
      read the breakpoint instead of returning the data saved in
      the breakpoint location's shadow contents.  */
   bl->target_info.reqstd_address = bl->address;
-  bl->target_info.placed_address_space = bl->pspace->aspace;
+  bl->target_info.placed_address_space = bl->pspace->aspace.get ();
   bl->target_info.length = bl->length;
 
   /* When working with target-side conditions, we must pass all the conditions
@@ -2449,72 +2973,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)
+	{
+	  gdb_printf (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
@@ -2525,12 +3008,13 @@ insert_bp_location (struct bp_location *
 	    {
 	      int val;
 
-	      val = bl->owner->ops->insert_location (bl);
+	      val = bl->owner->insert_location (bl);
 	      if (val)
 		bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
 	    }
 	  catch (gdb_exception &e)
 	    {
+	      rethrow_on_target_close_error (e);
 	      bp_excpt = std::move (e);
 	    }
 	}
@@ -2570,14 +3054,15 @@ insert_bp_location (struct bp_location *
 		    }
 		  catch (gdb_exception &e)
 		    {
+		      rethrow_on_target_close_error (e);
 		      bp_excpt = std::move (e);
 		    }
 
 		  if (bp_excpt.reason != 0)
-		    fprintf_unfiltered (tmp_error_stream,
-					"Overlay breakpoint %d "
-					"failed: in ROM?\n",
-					bl->owner->number);
+		    gdb_printf (tmp_error_stream,
+				"Overlay breakpoint %d "
+				"failed: in ROM?\n",
+				bl->owner->number);
 		}
 	    }
 	  /* Shall we set a breakpoint at the VMA? */
@@ -2585,17 +3070,18 @@ insert_bp_location (struct bp_location *
 	    {
 	      /* Yes.  This overlay section is mapped into memory.  */
 	      try
-	        {
+		{
 		  int val;
 
-	          val = bl->owner->ops->insert_location (bl);
+		  val = bl->owner->insert_location (bl);
 		  if (val)
 		    bp_excpt = gdb_exception {RETURN_ERROR, GENERIC_ERROR};
-	        }
-	      catch (gdb_exception &e)
-	        {
+		}
+	      catch (gdb_exception_error &e)
+		{
+		  rethrow_on_target_close_error (e);
 		  bp_excpt = std::move (e);
-	        }
+		}
 	    }
 	  else
 	    {
@@ -2608,6 +3094,7 @@ insert_bp_location (struct bp_location *
       if (bp_excpt.reason != 0)
 	{
 	  /* Can't set the breakpoint.  */
+	  gdb_assert (bl->owner != nullptr);
 
 	  /* In some cases, we might not be able to insert a
 	     breakpoint in a shared library that has already been
@@ -2625,21 +3112,20 @@ insert_bp_location (struct bp_location *
 		  || shared_objfile_contains_address_p (bl->pspace,
 							bl->address)))
 	    {
-	      /* See also: disable_breakpoints_in_shlibs.  */
 	      bl->shlib_disabled = 1;
-	      gdb::observers::breakpoint_modified.notify (bl->owner);
+	      notify_breakpoint_modified (bl->owner);
 	      if (!*disabled_breaks)
 		{
-		  fprintf_unfiltered (tmp_error_stream, 
-				      "Cannot insert breakpoint %d.\n", 
-				      bl->owner->number);
-		  fprintf_unfiltered (tmp_error_stream, 
-				      "Temporarily disabling shared "
-				      "library breakpoints:\n");
+		  gdb_printf (tmp_error_stream, 
+			      "Cannot insert breakpoint %d.\n", 
+			      bl->owner->number);
+		  gdb_printf (tmp_error_stream, 
+			      "Temporarily disabling shared "
+			      "library breakpoints:\n");
 		}
 	      *disabled_breaks = 1;
-	      fprintf_unfiltered (tmp_error_stream,
-				  "breakpoint #%d\n", bl->owner->number);
+	      gdb_printf (tmp_error_stream,
+			  "breakpoint #%d\n", bl->owner->number);
 	      return 0;
 	    }
 	  else
@@ -2648,13 +3134,13 @@ insert_bp_location (struct bp_location *
 		{
 		  *hw_breakpoint_error = 1;
 		  *hw_bp_error_explained_already = bp_excpt.message != NULL;
-                  fprintf_unfiltered (tmp_error_stream,
-                                      "Cannot insert hardware breakpoint %d%s",
-                                      bl->owner->number,
-				      bp_excpt.message ? ":" : ".\n");
-                  if (bp_excpt.message != NULL)
-                    fprintf_unfiltered (tmp_error_stream, "%s.\n",
-					bp_excpt.what ());
+		  gdb_printf (tmp_error_stream,
+			      "Cannot insert hardware breakpoint %d%s",
+			      bl->owner->number,
+			      bp_excpt.message ? ":" : ".\n");
+		  if (bp_excpt.message != NULL)
+		    gdb_printf (tmp_error_stream, "%s.\n",
+				bp_excpt.what ());
 		}
 	      else
 		{
@@ -2664,17 +3150,17 @@ insert_bp_location (struct bp_location *
 			= memory_error_message (TARGET_XFER_E_IO,
 						bl->gdbarch, bl->address);
 
-		      fprintf_unfiltered (tmp_error_stream,
-					  "Cannot insert breakpoint %d.\n"
-					  "%s\n",
-					  bl->owner->number, message.c_str ());
+		      gdb_printf (tmp_error_stream,
+				  "Cannot insert breakpoint %d.\n"
+				  "%s\n",
+				  bl->owner->number, message.c_str ());
 		    }
 		  else
 		    {
-		      fprintf_unfiltered (tmp_error_stream,
-					  "Cannot insert breakpoint %d: %s\n",
-					  bl->owner->number,
-					  bp_excpt.what ());
+		      gdb_printf (tmp_error_stream,
+				  "Cannot insert breakpoint %d: %s\n",
+				  bl->owner->number,
+				  bp_excpt.what ());
 		    }
 		}
 	      return 1;
@@ -2688,27 +3174,20 @@ insert_bp_location (struct bp_location *
     }
 
   else if (bl->loc_type == bp_loc_hardware_watchpoint
-	   /* NOTE drow/2003-09-08: This state only exists for removing
-	      watchpoints.  It's not clear that it's necessary...  */
 	   && bl->owner->disposition != disp_del_at_next_stop)
     {
       int val;
 
-      gdb_assert (bl->owner->ops != NULL
-		  && bl->owner->ops->insert_location != NULL);
-
-      val = bl->owner->ops->insert_location (bl);
+      val = bl->owner->insert_location (bl);
 
       /* If trying to set a read-watchpoint, and it turns out it's not
 	 supported, try emulating one with an access watchpoint.  */
       if (val == 1 && bl->watchpoint_type == hw_read)
 	{
-	  struct bp_location *loc, **loc_temp;
-
 	  /* But don't try to insert it, if there's already another
 	     hw_access location that would be considered a duplicate
 	     of this one.  */
-	  ALL_BP_LOCATIONS (loc, loc_temp)
+	  for (bp_location *loc : all_bp_locations ())
 	    if (loc != bl
 		&& loc->watchpoint_type == hw_access
 		&& watchpoint_locations_match (bl, loc))
@@ -2724,7 +3203,7 @@ insert_bp_location (struct bp_location *
 	  if (val == 1)
 	    {
 	      bl->watchpoint_type = hw_access;
-	      val = bl->owner->ops->insert_location (bl);
+	      val = bl->owner->insert_location (bl);
 
 	      if (val)
 		/* Back to the original value.  */
@@ -2739,10 +3218,7 @@ insert_bp_location (struct bp_location *
     {
       int val;
 
-      gdb_assert (bl->owner->ops != NULL
-		  && bl->owner->ops->insert_location != NULL);
-
-      val = bl->owner->ops->insert_location (bl);
+      val = bl->owner->insert_location (bl);
       if (val)
 	{
 	  bl->owner->enable_state = bp_disabled;
@@ -2773,36 +3249,19 @@ of catchpoint."), bl->owner->number);
 void
 breakpoint_program_space_exit (struct program_space *pspace)
 {
-  struct breakpoint *b, *b_temp;
-  struct bp_location *loc, **loc_temp;
-
   /* Remove any breakpoint that was set through this program space.  */
-  ALL_BREAKPOINTS_SAFE (b, b_temp)
-    {
-      if (b->pspace == pspace)
-	delete_breakpoint (b);
-    }
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.pspace == pspace)
+      delete_breakpoint (&b);
 
   /* Breakpoints set through other program spaces could have locations
      bound to PSPACE as well.  Remove those.  */
-  ALL_BP_LOCATIONS (loc, loc_temp)
-    {
-      struct bp_location *tmp;
-
-      if (loc->pspace == pspace)
-	{
-	  /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
-	  if (loc->owner->loc == loc)
-	    loc->owner->loc = loc->next;
-	  else
-	    for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
-	      if (tmp->next == loc)
-		{
-		  tmp->next = loc->next;
-		  break;
-		}
-	}
-    }
+  for (bp_location *loc : all_bp_locations ())
+    if (loc->pspace == pspace)
+      {
+	/* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
+	loc->owner->unadd_location (*loc);
+      }
 
   /* Now update the global location list to permanently delete the
      removed locations above.  */
@@ -2816,35 +3275,24 @@ breakpoint_program_space_exit (struct pr
 void
 insert_breakpoints (void)
 {
-  struct breakpoint *bpt;
-
-  ALL_BREAKPOINTS (bpt)
-    if (is_hardware_watchpoint (bpt))
+  for (breakpoint &bpt : all_breakpoints ())
+    if (is_hardware_watchpoint (&bpt))
       {
-	struct watchpoint *w = (struct watchpoint *) bpt;
+	watchpoint &w = gdb::checked_static_cast<watchpoint &> (bpt);
 
-	update_watchpoint (w, 0 /* don't reparse.  */);
+	update_watchpoint (&w, false /* don't reparse.  */);
       }
 
   /* 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);
 }
 
-/* Invoke CALLBACK for each of bp_location.  */
-
-void
-iterate_over_bp_locations (walk_bp_location_callback callback)
-{
-  struct bp_location *loc, **loc_tmp;
-
-  ALL_BP_LOCATIONS (loc, loc_tmp)
-    {
-      callback (loc, NULL);
-    }
-}
-
 /* This is used when we need to synch breakpoint conditions between GDB and the
    target.  It is the case with deleting and disabling of breakpoints when using
    always-inserted mode.  */
@@ -2852,7 +3300,6 @@ iterate_over_bp_locations (walk_bp_locat
 static void
 update_inserted_breakpoint_locations (void)
 {
-  struct bp_location *bl, **blp_tmp;
   int error_flag = 0;
   int val = 0;
   int disabled_breaks = 0;
@@ -2867,7 +3314,7 @@ update_inserted_breakpoint_locations (vo
 
   scoped_restore_current_pspace_and_thread restore_pspace_thread;
 
-  ALL_BP_LOCATIONS (bl, blp_tmp)
+  for (bp_location *bl : all_bp_locations ())
     {
       /* We only want to update software breakpoints and hardware
 	 breakpoints.  */
@@ -2886,8 +3333,8 @@ update_inserted_breakpoint_locations (vo
 	 to select an inferior to insert breakpoint to.  In fact, even
 	 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)
+      if (!gdbarch_has_global_breakpoints (current_inferior ()->arch ())
+	  && (inferior_ptid == null_ptid || !target_has_execution ()))
 	continue;
 
       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
@@ -2899,7 +3346,7 @@ update_inserted_breakpoint_locations (vo
   if (error_flag)
     {
       target_terminal::ours_for_output ();
-      error_stream (tmp_error_stream);
+      error (("%s"), tmp_error_stream.c_str ());
     }
 }
 
@@ -2908,8 +3355,6 @@ update_inserted_breakpoint_locations (vo
 static void
 insert_breakpoint_locations (void)
 {
-  struct breakpoint *bpt;
-  struct bp_location *bl, **blp_tmp;
   int error_flag = 0;
   int val = 0;
   int disabled_breaks = 0;
@@ -2924,7 +3369,7 @@ insert_breakpoint_locations (void)
 
   scoped_restore_current_pspace_and_thread restore_pspace_thread;
 
-  ALL_BP_LOCATIONS (bl, blp_tmp)
+  for (bp_location *bl : all_bp_locations ())
     {
       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
 	continue;
@@ -2936,14 +3381,20 @@ insert_breakpoint_locations (void)
 	  && !valid_global_thread_id (bl->owner->thread))
 	continue;
 
+      /* Or inferior specific breakpoints if the inferior no longer
+	 exists.  */
+      if (bl->owner->inferior != -1
+	  && !valid_global_inferior_id (bl->owner->inferior))
+	continue;
+
       switch_to_program_space_and_thread (bl->pspace);
 
       /* For targets that support global breakpoints, there's no need
 	 to select an inferior to insert breakpoint to.  In fact, even
 	 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)
+      if (!gdbarch_has_global_breakpoints (current_inferior ()->arch ())
+	  && (inferior_ptid == null_ptid || !target_has_execution ()))
 	continue;
 
       val = insert_bp_location (bl, &tmp_error_stream, &disabled_breaks,
@@ -2954,36 +3405,36 @@ insert_breakpoint_locations (void)
 
   /* If we failed to insert all locations of a watchpoint, remove
      them, as half-inserted watchpoint is of limited use.  */
-  ALL_BREAKPOINTS (bpt)  
+  for (breakpoint &bpt : all_breakpoints ())
     {
-      int some_failed = 0;
-      struct bp_location *loc;
+      bool some_failed = false;
 
-      if (!is_hardware_watchpoint (bpt))
+      if (!is_hardware_watchpoint (&bpt))
 	continue;
 
-      if (!breakpoint_enabled (bpt))
+      if (!breakpoint_enabled (&bpt))
 	continue;
 
-      if (bpt->disposition == disp_del_at_next_stop)
+      if (bpt.disposition == disp_del_at_next_stop)
 	continue;
-      
-      for (loc = bpt->loc; loc; loc = loc->next)
-	if (!loc->inserted && should_be_inserted (loc))
+
+      for (bp_location &loc : bpt.locations ())
+	if (!loc.inserted && should_be_inserted (&loc))
 	  {
-	    some_failed = 1;
+	    some_failed = true;
 	    break;
 	  }
+
       if (some_failed)
 	{
-	  for (loc = bpt->loc; loc; loc = loc->next)
-	    if (loc->inserted)
-	      remove_breakpoint (loc);
+	  for (bp_location &loc : bpt.locations ())
+	    if (loc.inserted)
+	      remove_breakpoint (&loc);
 
 	  hw_breakpoint_error = 1;
 	  tmp_error_stream.printf ("Could not insert "
 				   "hardware watchpoint %d.\n",
-				   bpt->number);
+				   bpt.number);
 	  error_flag = -1;
 	}
     }
@@ -2991,14 +3442,14 @@ insert_breakpoint_locations (void)
   if (error_flag)
     {
       /* If a hardware breakpoint or watchpoint was inserted, add a
-         message about possibly exhausted resources.  */
+	 message about possibly exhausted resources.  */
       if (hw_breakpoint_error && !hw_bp_error_explained_already)
 	{
 	  tmp_error_stream.printf ("Could not insert hardware breakpoints:\n\
 You may have requested too many hardware breakpoints/watchpoints.\n");
 	}
       target_terminal::ours_for_output ();
-      error_stream (tmp_error_stream);
+      error (("%s"), tmp_error_stream.c_str ());
     }
 }
 
@@ -3009,14 +3460,12 @@ You may have requested too many hardware
 int
 remove_breakpoints (void)
 {
-  struct bp_location *bl, **blp_tmp;
   int val = 0;
 
-  ALL_BP_LOCATIONS (bl, blp_tmp)
-  {
+  for (bp_location *bl : all_bp_locations ())
     if (bl->inserted && !is_tracepoint (bl->owner))
       val |= remove_breakpoint (bl);
-  }
+
   return val;
 }
 
@@ -3024,22 +3473,41 @@ remove_breakpoints (void)
    that thread.  */
 
 static void
-remove_threaded_breakpoints (struct thread_info *tp, int silent)
+remove_threaded_breakpoints (thread_info *tp,
+			     std::optional<ULONGEST> /* exit_code */,
+			     int /* silent */)
 {
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
+  for (breakpoint &b : all_breakpoints_safe ())
     {
-      if (b->thread == tp->global_num && user_breakpoint_p (b))
+      if (b.thread == tp->global_num && user_breakpoint_p (&b))
 	{
-	  b->disposition = disp_del_at_next_stop;
-
-	  printf_filtered (_("\
+	  gdb_printf (_("\
 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
-			   b->number, print_thread_id (tp));
+		      b.number, print_thread_id (tp));
+	  delete_breakpoint (&b);
+       }
+    }
+}
+
+/* Called when inferior INF has been removed from GDB.  Remove associated
+   per-inferior breakpoints.  */
 
-	  /* Hide it from the user.  */
-	  b->number = 0;
+static void
+remove_inferior_breakpoints (struct inferior *inf)
+{
+  for (breakpoint &b : all_breakpoints_safe ())
+    {
+      if (b.inferior == inf->num && user_breakpoint_p (&b))
+	{
+	  /* Tell the user the breakpoint has been deleted.  But only for
+	     breakpoints that would not normally have been deleted at the
+	     next stop anyway.  */
+	  if (b.disposition != disp_del
+	      && b.disposition != disp_del_at_next_stop)
+	    gdb_printf (_("\
+Inferior-specific breakpoint %d deleted - inferior %d has been removed.\n"),
+			b.number, inf->num);
+	  delete_breakpoint (&b);
        }
     }
 }
@@ -3049,21 +3517,22 @@ Thread-specific breakpoint %d deleted -
 void
 remove_breakpoints_inf (inferior *inf)
 {
-  struct bp_location *bl, **blp_tmp;
   int val;
 
-  ALL_BP_LOCATIONS (bl, blp_tmp)
-  {
-    if (bl->pspace != inf->pspace)
-      continue;
+  breakpoint_debug_printf ("inf->num = %d", inf->num);
 
-    if (bl->inserted && !bl->target_info.persist)
-      {
-	val = remove_breakpoint (bl);
-	if (val != 0)
-	  return;
-      }
-  }
+  for (bp_location *bl : all_bp_locations ())
+    {
+      if (bl->pspace != inf->pspace)
+	continue;
+
+      if (bl->inserted && !bl->target_info.persist)
+	{
+	  val = remove_breakpoint (bl);
+	  if (val != 0)
+	    return;
+	}
+    }
 }
 
 static int internal_breakpoint_number = -1;
@@ -3086,21 +3555,45 @@ set_breakpoint_number (int internal, str
     }
 }
 
+/* Create a TYPE breakpoint on ADDRESS from an object file with GDBARCH.  */
+
 static struct breakpoint *
 create_internal_breakpoint (struct gdbarch *gdbarch,
-			    CORE_ADDR address, enum bptype type,
-			    const struct breakpoint_ops *ops)
+			    CORE_ADDR address, enum bptype type)
 {
-  symtab_and_line sal;
-  sal.pc = address;
-  sal.section = find_pc_overlay (sal.pc);
-  sal.pspace = current_program_space;
+  std::unique_ptr<internal_breakpoint> b
+    (new internal_breakpoint (gdbarch, type, address));
 
-  breakpoint *b = set_raw_breakpoint (gdbarch, sal, type, ops);
   b->number = internal_breakpoint_number--;
-  b->disposition = disp_donttouch;
 
-  return b;
+  return add_to_breakpoint_chain (std::move (b));
+}
+
+/* Create a TYPE breakpoint on minimal symbol MSYM from an object file with
+   GDBARCH.  */
+
+static struct breakpoint *
+create_internal_breakpoint (struct gdbarch *gdbarch,
+			    bound_minimal_symbol &msym, enum bptype type)
+{
+  CORE_ADDR address;
+
+  address = msym.value_address ();
+
+  address = gdbarch_convert_from_func_ptr_addr
+    (gdbarch, address, current_inferior ()->top_target ());
+
+  /* Note that we're not using gdbarch_addr_bits_remove here, because that's
+     related to addresses in $pc.  We're getting the address from the
+     minimal symbol table.  */
+
+  /* Is gdbarch_deprecated_function_start_offset needed here?  Or is that dealt
+     with elsewhere?  Needs testing on vax.  */
+
+  if (gdbarch_skip_entrypoint_p (gdbarch))
+    address = gdbarch_skip_entrypoint (gdbarch, address);
+
+  return create_internal_breakpoint (gdbarch, address, type);
 }
 
 static const char *const longjmp_names[] =
@@ -3113,10 +3606,10 @@ static const char *const longjmp_names[]
 struct breakpoint_objfile_data
 {
   /* Minimal symbol for "_ovly_debug_event" (if any).  */
-  struct bound_minimal_symbol overlay_msym {};
+  bound_minimal_symbol overlay_msym;
 
   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
-  struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES] {};
+  bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
 
   /* True if we have looked for longjmp probes.  */
   int longjmp_searched = 0;
@@ -3126,10 +3619,10 @@ struct breakpoint_objfile_data
   std::vector<probe *> longjmp_probes;
 
   /* Minimal symbol for "std::terminate()" (if any).  */
-  struct bound_minimal_symbol terminate_msym {};
+  bound_minimal_symbol terminate_msym;
 
   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
-  struct bound_minimal_symbol exception_msym {};
+  bound_minimal_symbol exception_msym;
 
   /* True if we have looked for exception probes.  */
   int exception_searched = 0;
@@ -3139,7 +3632,7 @@ struct breakpoint_objfile_data
   std::vector<probe *> exception_probes;
 };
 
-static const struct objfile_key<breakpoint_objfile_data>
+static const registry<objfile>::key<breakpoint_objfile_data>
   breakpoint_objfile_key;
 
 /* Minimal symbol not found sentinel.  */
@@ -3147,7 +3640,7 @@ static struct minimal_symbol msym_not_fo
 
 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
 
-static int
+static bool
 msym_not_found_p (const struct minimal_symbol *msym)
 {
   return msym == &msym_not_found;
@@ -3177,7 +3670,6 @@ create_overlay_event_breakpoint (void)
       struct breakpoint *b;
       struct breakpoint_objfile_data *bp_objfile_data;
       CORE_ADDR addr;
-      struct explicit_location explicit_loc;
 
       bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
@@ -3186,9 +3678,9 @@ create_overlay_event_breakpoint (void)
 
       if (bp_objfile_data->overlay_msym.minsym == NULL)
 	{
-	  struct bound_minimal_symbol m;
-
-	  m = lookup_minimal_symbol_text (func_name, objfile);
+	  bound_minimal_symbol m
+	    = lookup_minimal_symbol_text (current_program_space, func_name,
+					  objfile);
 	  if (m.minsym == NULL)
 	    {
 	      /* Avoid future lookups in this objfile.  */
@@ -3198,282 +3690,322 @@ create_overlay_event_breakpoint (void)
 	  bp_objfile_data->overlay_msym = m;
 	}
 
-      addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
-      b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
-                                      bp_overlay_event,
-				      &internal_breakpoint_ops);
-      initialize_explicit_location (&explicit_loc);
-      explicit_loc.function_name = ASTRDUP (func_name);
-      b->location = new_explicit_location (&explicit_loc);
+      addr = bp_objfile_data->overlay_msym.value_address ();
+      b = create_internal_breakpoint (objfile->arch (), addr,
+				      bp_overlay_event);
+      b->locspec = new_explicit_location_spec_function (func_name);
 
       if (overlay_debugging == ovly_auto)
-        {
-          b->enable_state = bp_enabled;
-          overlay_events_enabled = 1;
-        }
+	{
+	  b->enable_state = bp_enabled;
+	  overlay_events_enabled = 1;
+	}
       else
        {
-         b->enable_state = bp_disabled;
-         overlay_events_enabled = 0;
+	 b->enable_state = bp_disabled;
+	 overlay_events_enabled = 0;
        }
     }
 }
 
-static void
-create_longjmp_master_breakpoint (void)
-{
-  struct program_space *pspace;
+/* Install a master longjmp breakpoint for OBJFILE using a probe.  Return
+   true if a breakpoint was installed.  */
 
-  scoped_restore_current_program_space restore_pspace;
+static bool
+create_longjmp_master_breakpoint_probe (objfile *objfile)
+{
+  struct gdbarch *gdbarch = objfile->arch ();
+  struct breakpoint_objfile_data *bp_objfile_data
+    = get_breakpoint_objfile_data (objfile);
 
-  ALL_PSPACES (pspace)
-  {
-    set_current_program_space (pspace);
+  if (!bp_objfile_data->longjmp_searched)
+    {
+      std::vector<probe *> ret
+	= find_probes_in_objfile (objfile, "libc", "longjmp");
 
-    for (objfile *objfile : current_program_space->objfiles ())
-      {
-	int i;
-	struct gdbarch *gdbarch;
-	struct breakpoint_objfile_data *bp_objfile_data;
+      if (!ret.empty ())
+	{
+	  /* We are only interested in checking one element.  */
+	  probe *p = ret[0];
 
-	gdbarch = get_objfile_arch (objfile);
+	  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;
+    }
 
-	bp_objfile_data = get_breakpoint_objfile_data (objfile);
+  if (bp_objfile_data->longjmp_probes.empty ())
+    return false;
 
-	if (!bp_objfile_data->longjmp_searched)
-	  {
-	    std::vector<probe *> ret
-	      = find_probes_in_objfile (objfile, "libc", "longjmp");
+  for (probe *p : bp_objfile_data->longjmp_probes)
+    {
+      struct breakpoint *b;
 
-	    if (!ret.empty ())
-	      {
-		/* We are only interested in checking one element.  */
-		probe *p = ret[0];
+      b = create_internal_breakpoint (gdbarch,
+				      p->get_relocated_address (objfile),
+				      bp_longjmp_master);
+      b->locspec = new_probe_location_spec ("-probe-stap libc:longjmp");
+      b->enable_state = bp_disabled;
+    }
 
-		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;
-	  }
+  return true;
+}
 
-	if (!bp_objfile_data->longjmp_probes.empty ())
-	  {
-	    for (probe *p : bp_objfile_data->longjmp_probes)
-	      {
-		struct breakpoint *b;
+/* Install master longjmp breakpoints for OBJFILE using longjmp_names.
+   Return true if at least one breakpoint was installed.  */
 
-		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;
-	      }
+static bool
+create_longjmp_master_breakpoint_names (objfile *objfile)
+{
+  struct gdbarch *gdbarch = objfile->arch ();
+  if (!gdbarch_get_longjmp_target_p (gdbarch))
+    return false;
 
-	    continue;
-	  }
+  struct breakpoint_objfile_data *bp_objfile_data
+    = get_breakpoint_objfile_data (objfile);
+  unsigned int installed_bp = 0;
 
-	if (!gdbarch_get_longjmp_target_p (gdbarch))
-	  continue;
+  for (int i = 0; i < NUM_LONGJMP_NAMES; i++)
+    {
+      struct breakpoint *b;
+      const char *func_name;
+      CORE_ADDR addr;
 
-	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))
+      func_name = longjmp_names[i];
+      if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
+	{
+	  bound_minimal_symbol m
+	    = lookup_minimal_symbol_text (objfile->pspace (), 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;
+	}
 
-	    func_name = longjmp_names[i];
-	    if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
-	      {
-		struct bound_minimal_symbol m;
+      addr = bp_objfile_data->longjmp_msym[i].value_address ();
+      b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master);
+      b->locspec = new_explicit_location_spec_function (func_name);
+      b->enable_state = bp_disabled;
+      installed_bp++;
+    }
 
-		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;
-	      }
+  return installed_bp > 0;
+}
 
-	    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 longjmp breakpoint.  */
+
+static void
+create_longjmp_master_breakpoint (void)
+{
+  scoped_restore_current_program_space restore_pspace;
+
+  for (struct program_space *pspace : program_spaces)
+    {
+      set_current_program_space (pspace);
+
+      for (objfile *obj : pspace->objfiles ())
+	{
+	  /* Skip separate debug object, it's handled in the loop below.  */
+	  if (obj->separate_debug_objfile_backlink != nullptr)
+	    continue;
+
+	  /* Try a probe kind breakpoint on main objfile.  */
+	  if (create_longjmp_master_breakpoint_probe (obj))
+	    continue;
+
+	  /* Try longjmp_names kind breakpoints on main and separate_debug
+	     objfiles.  */
+	  for (objfile *debug_objfile : obj->separate_debug_objfiles ())
+	    if (create_longjmp_master_breakpoint_names (debug_objfile))
+	      break;
+	}
+    }
 }
 
 /* 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;
+  scoped_restore_current_language save_language (language_cplus);
 
-  ALL_PSPACES (pspace)
-  {
-    CORE_ADDR addr;
-
-    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 (struct program_space *pspace : program_spaces)
+    {
+      set_current_program_space (pspace);
 
-	bp_objfile_data = get_breakpoint_objfile_data (objfile);
+      for (objfile *objfile : pspace->objfiles ())
+	{
+	  struct breakpoint *b;
+	  struct breakpoint_objfile_data *bp_objfile_data;
 
-	if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
-	  continue;
+	  bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
-	if (bp_objfile_data->terminate_msym.minsym == NULL)
-	  {
-	    struct bound_minimal_symbol m;
+	  if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
+	    continue;
 
-	    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;
-	  }
+	  if (bp_objfile_data->terminate_msym.minsym == NULL)
+	    {
+	      bound_minimal_symbol m
+		= lookup_minimal_symbol (current_program_space, func_name,
+					 objfile);
+	      if (m.minsym == NULL || (m.minsym->type () != mst_text
+				       && m.minsym->type () != 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;
-      }
-  }
+	  b = create_internal_breakpoint (objfile->arch (),
+					  bp_objfile_data->terminate_msym,
+					  bp_std_terminate_master);
+	  b->locspec = new_explicit_location_spec_function (func_name);
+	  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);
+      b->locspec = new_probe_location_spec ("-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.  */
+
+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;
 
-      gdbarch = get_objfile_arch (objfile);
+  bp_objfile_data = get_breakpoint_objfile_data (objfile);
 
-      if (bp_objfile_data->exception_msym.minsym == NULL)
-	{
-	  struct bound_minimal_symbol debug_hook;
+  if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
+    return false;
 
-	  debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
-	  if (debug_hook.minsym == NULL)
-	    {
-	      bp_objfile_data->exception_msym.minsym = &msym_not_found;
-	      continue;
-	    }
+  gdbarch = objfile->arch ();
 
-	  bp_objfile_data->exception_msym = debug_hook;
+  if (bp_objfile_data->exception_msym.minsym == NULL)
+    {
+      bound_minimal_symbol debug_hook
+	= lookup_minimal_symbol_text (objfile->pspace (), func_name, 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;
+    }
+
+  b = create_internal_breakpoint (gdbarch, bp_objfile_data->exception_msym,
+				  bp_exception_master);
+  b->locspec = new_explicit_location_spec_function (func_name);
+  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;
     }
 }
 
 /* Does B have a location spec?  */
 
-static int
-breakpoint_event_location_empty_p (const struct breakpoint *b)
+static bool
+breakpoint_location_spec_empty_p (const struct breakpoint *b)
 {
-  return b->location != NULL && event_location_empty_p (b->location.get ());
+  return (b->locspec != nullptr && b->locspec->empty_p ());
 }
 
 void
 update_breakpoints_after_exec (void)
 {
-  struct breakpoint *b, *b_tmp;
-  struct bp_location *bploc, **bplocp_tmp;
-
   /* We're about to delete breakpoints from GDB's lists.  If the
      INSERTED flag is true, GDB will try to lift the breakpoints by
      writing the breakpoints' "shadow contents" back into memory.  The
@@ -3482,118 +4014,117 @@ update_breakpoints_after_exec (void)
      breakpoints out as soon as it detects an exec.  We don't do that
      here instead, because there may be other attempts to delete
      breakpoints after detecting an exec and before reaching here.  */
-  ALL_BP_LOCATIONS (bploc, bplocp_tmp)
+  for (bp_location *bploc : all_bp_locations ())
     if (bploc->pspace == current_program_space)
       gdb_assert (!bploc->inserted);
 
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-  {
-    if (b->pspace != current_program_space)
-      continue;
-
-    /* Solib breakpoints must be explicitly reset after an exec().  */
-    if (b->type == bp_shlib_event)
-      {
-	delete_breakpoint (b);
+  for (breakpoint &b : all_breakpoints_safe ())
+    {
+      if (b.pspace != current_program_space)
 	continue;
-      }
 
-    /* JIT breakpoints must be explicitly reset after an exec().  */
-    if (b->type == bp_jit_event)
-      {
-	delete_breakpoint (b);
-	continue;
-      }
+      /* Solib breakpoints must be explicitly reset after an exec().  */
+      if (b.type == bp_shlib_event)
+	{
+	  delete_breakpoint (&b);
+	  continue;
+	}
 
-    /* Thread event breakpoints must be set anew after an exec(),
-       as must overlay event and longjmp master breakpoints.  */
-    if (b->type == bp_thread_event || b->type == bp_overlay_event
-	|| b->type == bp_longjmp_master || b->type == bp_std_terminate_master
-	|| b->type == bp_exception_master)
-      {
-	delete_breakpoint (b);
-	continue;
-      }
+      /* JIT breakpoints must be explicitly reset after an exec().  */
+      if (b.type == bp_jit_event)
+	{
+	  delete_breakpoint (&b);
+	  continue;
+	}
 
-    /* Step-resume breakpoints are meaningless after an exec().  */
-    if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
-      {
-	delete_breakpoint (b);
-	continue;
-      }
+      /* Thread event breakpoints must be set anew after an exec(),
+	 as must overlay event and longjmp master breakpoints.  */
+      if (b.type == bp_thread_event || b.type == bp_overlay_event
+	  || b.type == bp_longjmp_master || b.type == bp_std_terminate_master
+	  || b.type == bp_exception_master)
+	{
+	  delete_breakpoint (&b);
+	  continue;
+	}
 
-    /* Just like single-step breakpoints.  */
-    if (b->type == bp_single_step)
-      {
-	delete_breakpoint (b);
-	continue;
-      }
+      /* Step-resume breakpoints are meaningless after an exec().  */
+      if (b.type == bp_step_resume || b.type == bp_hp_step_resume)
+	{
+	  delete_breakpoint (&b);
+	  continue;
+	}
 
-    /* Longjmp and longjmp-resume breakpoints are also meaningless
-       after an exec.  */
-    if (b->type == bp_longjmp || b->type == bp_longjmp_resume
-	|| b->type == bp_longjmp_call_dummy
-	|| b->type == bp_exception || b->type == bp_exception_resume)
-      {
-	delete_breakpoint (b);
-	continue;
-      }
+      /* Just like single-step breakpoints.  */
+      if (b.type == bp_single_step)
+	{
+	  delete_breakpoint (&b);
+	  continue;
+	}
 
-    if (b->type == bp_catchpoint)
-      {
-        /* For now, none of the bp_catchpoint breakpoints need to
-           do anything at this point.  In the future, if some of
-           the catchpoints need to something, we will need to add
-           a new method, and call this method from here.  */
-        continue;
-      }
+      /* Longjmp and longjmp-resume breakpoints are also meaningless
+	 after an exec.  */
+      if (b.type == bp_longjmp || b.type == bp_longjmp_resume
+	  || b.type == bp_longjmp_call_dummy
+	  || b.type == bp_exception || b.type == bp_exception_resume)
+	{
+	  delete_breakpoint (&b);
+	  continue;
+	}
 
-    /* bp_finish is a special case.  The only way we ought to be able
-       to see one of these when an exec() has happened, is if the user
-       caught a vfork, and then said "finish".  Ordinarily a finish just
-       carries them to the call-site of the current callee, by setting
-       a temporary bp there and resuming.  But in this case, the finish
-       will carry them entirely through the vfork & exec.
-
-       We don't want to allow a bp_finish to remain inserted now.  But
-       we can't safely delete it, 'cause finish_command has a handle to
-       the bp on a bpstat, and will later want to delete it.  There's a
-       chance (and I've seen it happen) that if we delete the bp_finish
-       here, that its storage will get reused by the time finish_command
-       gets 'round to deleting the "use to be a bp_finish" breakpoint.
-       We really must allow finish_command to delete a bp_finish.
-
-       In the absence of a general solution for the "how do we know
-       it's safe to delete something others may have handles to?"
-       problem, what we'll do here is just uninsert the bp_finish, and
-       let finish_command delete it.
-
-       (We know the bp_finish is "doomed" in the sense that it's
-       momentary, and will be deleted as soon as finish_command sees
-       the inferior stopped.  So it doesn't matter that the bp's
-       address is probably bogus in the new a.out, unlike e.g., the
-       solib breakpoints.)  */
+      if (b.type == bp_catchpoint)
+	{
+	  /* For now, none of the bp_catchpoint breakpoints need to
+	     do anything at this point.  In the future, if some of
+	     the catchpoints need to something, we will need to add
+	     a new method, and call this method from here.  */
+	  continue;
+	}
 
-    if (b->type == bp_finish)
-      {
-	continue;
-      }
+      /* bp_finish is a special case.  The only way we ought to be able
+	 to see one of these when an exec() has happened, is if the user
+	 caught a vfork, and then said "finish".  Ordinarily a finish just
+	 carries them to the call-site of the current callee, by setting
+	 a temporary bp there and resuming.  But in this case, the finish
+	 will carry them entirely through the vfork & exec.
+
+	 We don't want to allow a bp_finish to remain inserted now.  But
+	 we can't safely delete it, 'cause finish_command has a handle to
+	 the bp on a bpstat, and will later want to delete it.  There's a
+	 chance (and I've seen it happen) that if we delete the bp_finish
+	 here, that its storage will get reused by the time finish_command
+	 gets 'round to deleting the "use to be a bp_finish" breakpoint.
+	 We really must allow finish_command to delete a bp_finish.
+
+	 In the absence of a general solution for the "how do we know
+	 it's safe to delete something others may have handles to?"
+	 problem, what we'll do here is just uninsert the bp_finish, and
+	 let finish_command delete it.
+
+	 (We know the bp_finish is "doomed" in the sense that it's
+	 momentary, and will be deleted as soon as finish_command sees
+	 the inferior stopped.  So it doesn't matter that the bp's
+	 address is probably bogus in the new a.out, unlike e.g., the
+	 solib breakpoints.)  */
 
-    /* Without a symbolic address, we have little hope of the
-       pre-exec() address meaning the same thing in the post-exec()
-       a.out.  */
-    if (breakpoint_event_location_empty_p (b))
-      {
-	delete_breakpoint (b);
-	continue;
-      }
-  }
+      if (b.type == bp_finish)
+	{
+	  continue;
+	}
+
+      /* Without a symbolic address, we have little hope of the
+	 pre-exec() address meaning the same thing in the post-exec()
+	 a.out.  */
+      if (breakpoint_location_spec_empty_p (&b))
+	{
+	  delete_breakpoint (&b);
+	  continue;
+	}
+    }
 }
 
 int
 detach_breakpoints (ptid_t ptid)
 {
-  struct bp_location *bl, **blp_tmp;
   int val = 0;
   scoped_restore save_inferior_ptid = make_scoped_restore (&inferior_ptid);
   struct inferior *inf = current_inferior ();
@@ -3603,23 +4134,24 @@ detach_breakpoints (ptid_t ptid)
 
   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
   inferior_ptid = ptid;
-  ALL_BP_LOCATIONS (bl, blp_tmp)
-  {
-    if (bl->pspace != inf->pspace)
-      continue;
+  for (bp_location *bl : all_bp_locations ())
+    {
+      if (bl->pspace != inf->pspace)
+	continue;
 
-    /* This function must physically remove breakpoints locations
-       from the specified ptid, without modifying the breakpoint
-       package's state.  Locations of type bp_loc_other are only
-       maintained at GDB side.  So, there is no need to remove
-       these bp_loc_other locations.  Moreover, removing these
-       would modify the breakpoint package's state.  */
-    if (bl->loc_type == bp_loc_other)
-      continue;
+      /* This function must physically remove breakpoints locations
+	 from the specified ptid, without modifying the breakpoint
+	 package's state.  Locations of type bp_loc_other and
+	 bp_loc_software_watchpoint are only maintained at GDB side,
+	 so there is no need to remove them.  Moreover, removing these
+	 would modify the breakpoint package's state.  */
+      if (bl->loc_type == bp_loc_other
+	  || bl->loc_type == bp_loc_software_watchpoint)
+	continue;
 
-    if (bl->inserted)
-      val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
-  }
+      if (bl->inserted)
+	val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
+    }
 
   return val;
 }
@@ -3633,6 +4165,10 @@ detach_breakpoints (ptid_t ptid)
 static int
 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
 {
+  breakpoint_debug_printf ("%s due to %s",
+			   breakpoint_location_address_str (bl).c_str (),
+			   remove_bp_reason_str (reason));
+
   int val;
 
   /* BL is never in moribund_locations by our callers.  */
@@ -3679,7 +4215,7 @@ remove_breakpoint_1 (struct bp_location
 	      && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
 	    val = 0;
 	  else
-	    val = bl->owner->ops->remove_location (bl, reason);
+	    val = bl->owner->remove_location (bl, reason);
 	}
       else
 	{
@@ -3714,7 +4250,7 @@ remove_breakpoint_1 (struct bp_location
 		 wrong code with the saved shadow contents.  */
 	      if (bl->loc_type == bp_loc_hardware_breakpoint
 		  || section_is_mapped (bl->section))
-		val = bl->owner->ops->remove_location (bl, reason);
+		val = bl->owner->remove_location (bl, reason);
 	      else
 		val = 0;
 	    }
@@ -3748,11 +4284,8 @@ remove_breakpoint_1 (struct bp_location
     }
   else if (bl->loc_type == bp_loc_hardware_watchpoint)
     {
-      gdb_assert (bl->owner->ops != NULL
-		  && bl->owner->ops->remove_location != NULL);
-
       bl->inserted = (reason == DETACH_BREAKPOINT);
-      bl->owner->ops->remove_location (bl, reason);
+      bl->owner->remove_location (bl, reason);
 
       /* Failure to remove any of the hardware watchpoints comes here.  */
       if (reason == REMOVE_BREAKPOINT && bl->inserted)
@@ -3760,13 +4293,10 @@ remove_breakpoint_1 (struct bp_location
 		 bl->owner->number);
     }
   else if (bl->owner->type == bp_catchpoint
-           && breakpoint_enabled (bl->owner)
-           && !bl->duplicate)
+	   && breakpoint_enabled (bl->owner)
+	   && !bl->duplicate)
     {
-      gdb_assert (bl->owner->ops != NULL
-		  && bl->owner->ops->remove_location != NULL);
-
-      val = bl->owner->ops->remove_location (bl, reason);
+      val = bl->owner->remove_location (bl, reason);
       if (val)
 	return val;
 
@@ -3793,121 +4323,106 @@ remove_breakpoint (struct bp_location *b
   return remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
 }
 
-/* Clear the "inserted" flag in all breakpoints.  */
+/* See breakpoint.h.  */
 
 void
-mark_breakpoints_out (void)
+mark_breakpoints_out (program_space *pspace)
 {
-  struct bp_location *bl, **blp_tmp;
-
-  ALL_BP_LOCATIONS (bl, blp_tmp)
-    if (bl->pspace == current_program_space)
+  for (bp_location *bl : all_bp_locations ())
+    if (bl->pspace == pspace)
       bl->inserted = 0;
 }
 
-/* Clear the "inserted" flag in all breakpoints and delete any
-   breakpoints which should go away between runs of the program.
-
-   Plus other such housekeeping that has to be done for breakpoints
-   between runs.
-
-   Note: this function gets called at the end of a run (by
-   generic_mourn_inferior) and when a run begins (by
-   init_wait_for_inferior).  */
-
-
+/* See breakpoint.h.  */
 
 void
-breakpoint_init_inferior (enum inf_context context)
+breakpoint_init_inferior (inferior *inf, inf_context context)
 {
-  struct breakpoint *b, *b_tmp;
-  struct program_space *pspace = current_program_space;
-
   /* If breakpoint locations are shared across processes, then there's
      nothing to do.  */
-  if (gdbarch_has_global_breakpoints (target_gdbarch ()))
+  if (gdbarch_has_global_breakpoints (inf->arch ()))
     return;
 
-  mark_breakpoints_out ();
+  mark_breakpoints_out (inf->pspace);
 
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-  {
-    if (b->loc && b->loc->pspace != pspace)
-      continue;
+  for (breakpoint &b : all_breakpoints_safe ())
+    {
+      if (b.has_locations () && b.first_loc ().pspace != inf->pspace)
+	continue;
 
-    switch (b->type)
-      {
-      case bp_call_dummy:
-      case bp_longjmp_call_dummy:
+      switch (b.type)
+	{
+	case bp_call_dummy:
+	case bp_longjmp_call_dummy:
 
-	/* If the call dummy breakpoint is at the entry point it will
-	   cause problems when the inferior is rerun, so we better get
-	   rid of it.  */
+	  /* If the call dummy breakpoint is at the entry point it will
+	     cause problems when the inferior is rerun, so we better get
+	     rid of it.  */
 
-      case bp_watchpoint_scope:
+	case bp_watchpoint_scope:
 
-	/* Also get rid of scope breakpoints.  */
+	  /* Also get rid of scope breakpoints.  */
 
-      case bp_shlib_event:
+	case bp_shlib_event:
 
-	/* Also remove solib event breakpoints.  Their addresses may
-	   have changed since the last time we ran the program.
-	   Actually we may now be debugging against different target;
-	   and so the solib backend that installed this breakpoint may
-	   not be used in by the target.  E.g.,
+	  /* Also remove solib event breakpoints.  Their addresses may
+	     have changed since the last time we ran the program.
+	     Actually we may now be debugging against different target;
+	     and so the solib backend that installed this breakpoint may
+	     not be used in by the target.  E.g.,
+
+	     (gdb) file prog-linux
+	     (gdb) run               # native linux target
+	     ...
+	     (gdb) kill
+	     (gdb) file prog-win.exe
+	     (gdb) tar rem :9999     # remote Windows gdbserver.
+	  */
 
-	   (gdb) file prog-linux
-	   (gdb) run               # native linux target
-	   ...
-	   (gdb) kill
-	   (gdb) file prog-win.exe
-	   (gdb) tar rem :9999     # remote Windows gdbserver.
-	*/
+	case bp_step_resume:
 
-      case bp_step_resume:
+	  /* Also remove step-resume breakpoints.  */
 
-	/* Also remove step-resume breakpoints.  */
+	case bp_single_step:
 
-      case bp_single_step:
+	  /* Also remove single-step breakpoints.  */
 
-	/* Also remove single-step breakpoints.  */
+	  delete_breakpoint (&b);
+	  break;
 
-	delete_breakpoint (b);
-	break;
+	case bp_watchpoint:
+	case bp_hardware_watchpoint:
+	case bp_read_watchpoint:
+	case bp_access_watchpoint:
+	  {
+	    watchpoint &w = gdb::checked_static_cast<watchpoint &> (b);
 
-      case bp_watchpoint:
-      case bp_hardware_watchpoint:
-      case bp_read_watchpoint:
-      case bp_access_watchpoint:
-	{
-	  struct watchpoint *w = (struct watchpoint *) b;
-
-	  /* Likewise for watchpoints on local expressions.  */
-	  if (w->exp_valid_block != NULL)
-	    delete_breakpoint (b);
-	  else
-	    {
-	      /* Get rid of existing locations, which are no longer
-		 valid.  New ones will be created in
-		 update_watchpoint, when the inferior is restarted.
-		 The next update_global_location_list call will
-		 garbage collect them.  */
-	      b->loc = NULL;
+	    /* Likewise for watchpoints on local expressions.  */
+	    if (w.exp_valid_block != NULL)
+	      delete_breakpoint (&b);
+	    else
+	      {
+		/* Get rid of existing locations, which are no longer
+		   valid.  New ones will be created in
+		   update_watchpoint, when the inferior is restarted.
+		   The next update_global_location_list call will
+		   garbage collect them.  */
+		b.clear_locations ();
 
-	      if (context == inf_starting)
-		{
-		  /* Reset val field to force reread of starting value in
-		     insert_breakpoints.  */
-		  w->val.reset (nullptr);
-		  w->val_valid = false;
-		}
-	    }
+		if (context == inf_starting)
+		  {
+		    /* Reset val field to force reread of starting value in
+		       insert_breakpoints.  */
+		    w.val.reset (nullptr);
+		    w.val_valid = false;
+		  }
+	      }
+	  }
+	  break;
+	default:
+	  break;
 	}
-	break;
-      default:
-	break;
-      }
-  }
+    }
 
   /* Get rid of the moribund locations.  */
   for (bp_location *bl : moribund_locations)
@@ -3933,10 +4448,9 @@ breakpoint_init_inferior (enum inf_conte
 enum breakpoint_here
 breakpoint_here_p (const address_space *aspace, CORE_ADDR pc)
 {
-  struct bp_location *bl, **blp_tmp;
-  int any_breakpoint_here = 0;
+  bool any_breakpoint_here = false;
 
-  ALL_BP_LOCATIONS (bl, blp_tmp)
+  for (bp_location *bl : all_bp_locations ())
     {
       if (bl->loc_type != bp_loc_software_breakpoint
 	  && bl->loc_type != bp_loc_hardware_breakpoint)
@@ -3954,7 +4468,7 @@ breakpoint_here_p (const address_space *
 	  else if (bl->permanent)
 	    return permanent_breakpoint_here;
 	  else
-	    any_breakpoint_here = 1;
+	    any_breakpoint_here = true;
 	}
     }
 
@@ -3967,9 +4481,7 @@ int
 breakpoint_in_range_p (const address_space *aspace,
 		       CORE_ADDR addr, ULONGEST len)
 {
-  struct bp_location *bl, **blp_tmp;
-
-  ALL_BP_LOCATIONS (bl, blp_tmp)
+  for (bp_location *bl : all_bp_locations ())
     {
       if (bl->loc_type != bp_loc_software_breakpoint
 	  && bl->loc_type != bp_loc_hardware_breakpoint)
@@ -4007,25 +4519,22 @@ moribund_breakpoint_here_p (const addres
   return 0;
 }
 
-/* Returns non-zero iff BL is inserted at PC, in address space
-   ASPACE.  */
+/* Returns true iff BL is inserted at PC, in address space ASPACE.  */
 
-static int
-bp_location_inserted_here_p (struct bp_location *bl,
+static bool
+bp_location_inserted_here_p (const struct bp_location *bl,
 			     const address_space *aspace, CORE_ADDR pc)
 {
   if (bl->inserted
-      && breakpoint_address_match (bl->pspace->aspace, bl->address,
+      && breakpoint_address_match (bl->pspace->aspace.get (), bl->address,
 				   aspace, pc))
     {
-      if (overlay_debugging
-	  && section_is_overlay (bl->section)
-	  && !section_is_mapped (bl->section))
-	return 0;		/* unmapped overlay -- can't be a match */
-      else
-	return 1;
+      /* An unmapped overlay can't be a match.  */
+      return !(overlay_debugging
+	       && section_is_overlay (bl->section)
+	       && !section_is_mapped (bl->section));
     }
-  return 0;
+  return false;
 }
 
 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
@@ -4033,12 +4542,8 @@ bp_location_inserted_here_p (struct bp_l
 int
 breakpoint_inserted_here_p (const address_space *aspace, CORE_ADDR pc)
 {
-  struct bp_location **blp, **blp_tmp = NULL;
-
-  ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
+  for (bp_location *bl : all_bp_locations_at_addr (pc))
     {
-      struct bp_location *bl = *blp;
-
       if (bl->loc_type != bp_loc_software_breakpoint
 	  && bl->loc_type != bp_loc_hardware_breakpoint)
 	continue;
@@ -4056,12 +4561,8 @@ int
 software_breakpoint_inserted_here_p (const address_space *aspace,
 				     CORE_ADDR pc)
 {
-  struct bp_location **blp, **blp_tmp = NULL;
-
-  ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
+  for (bp_location *bl : all_bp_locations_at_addr (pc))
     {
-      struct bp_location *bl = *blp;
-
       if (bl->loc_type != bp_loc_software_breakpoint)
 	continue;
 
@@ -4078,12 +4579,8 @@ int
 hardware_breakpoint_inserted_here_p (const address_space *aspace,
 				     CORE_ADDR pc)
 {
-  struct bp_location **blp, **blp_tmp = NULL;
-
-  ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
+  for (bp_location *bl : all_bp_locations_at_addr (pc))
     {
-      struct bp_location *bl = *blp;
-
       if (bl->loc_type != bp_loc_hardware_breakpoint)
 	continue;
 
@@ -4098,27 +4595,23 @@ int
 hardware_watchpoint_inserted_in_range (const address_space *aspace,
 				       CORE_ADDR addr, ULONGEST len)
 {
-  struct breakpoint *bpt;
-
-  ALL_BREAKPOINTS (bpt)
+  for (breakpoint &bpt : all_breakpoints ())
     {
-      struct bp_location *loc;
-
-      if (bpt->type != bp_hardware_watchpoint
-	  && bpt->type != bp_access_watchpoint)
+      if (bpt.type != bp_hardware_watchpoint
+	  && bpt.type != bp_access_watchpoint)
 	continue;
 
-      if (!breakpoint_enabled (bpt))
+      if (!breakpoint_enabled (&bpt))
 	continue;
 
-      for (loc = bpt->loc; loc; loc = loc->next)
-	if (loc->pspace->aspace == aspace && loc->inserted)
+      for (bp_location &loc : bpt.locations ())
+	if (loc.pspace->aspace.get () == aspace && loc.inserted)
 	  {
 	    CORE_ADDR l, h;
 
 	    /* Check for intersection.  */
-	    l = std::max<CORE_ADDR> (loc->address, addr);
-	    h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
+	    l = std::max<CORE_ADDR> (loc.address, addr);
+	    h = std::min<CORE_ADDR> (loc.address + loc.length, addr + len);
 	    if (l < h)
 	      return 1;
 	  }
@@ -4134,23 +4627,14 @@ is_catchpoint (struct breakpoint *b)
   return (b->type == bp_catchpoint);
 }
 
-/* Frees any storage that is part of a bpstat.  Does not walk the
-   'next' chain.  */
-
-bpstats::~bpstats ()
-{
-  if (bp_location_at != NULL)
-    decref_bp_location (&bp_location_at);
-}
-
 /* Clear a bpstat so that it says we are not at any breakpoint.
    Also free any storage that is part of a bpstat.  */
 
 void
-bpstat_clear (bpstat *bsp)
+bpstat_clear (bpstat **bsp)
 {
-  bpstat p;
-  bpstat q;
+  bpstat *p;
+  bpstat *q;
 
   if (bsp == 0)
     return;
@@ -4164,7 +4648,7 @@ bpstat_clear (bpstat *bsp)
   *bsp = NULL;
 }
 
-bpstats::bpstats (const bpstats &other)
+bpstat::bpstat (const bpstat &other)
   : next (NULL),
     bp_location_at (other.bp_location_at),
     breakpoint_at (other.breakpoint_at),
@@ -4174,26 +4658,25 @@ bpstats::bpstats (const bpstats &other)
     print_it (other.print_it)
 {
   if (other.old_val != NULL)
-    old_val = release_value (value_copy (other.old_val.get ()));
-  incref_bp_location (bp_location_at);
+    old_val = release_value (other.old_val->copy ());
 }
 
 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
    is part of the bpstat is copied as well.  */
 
-bpstat
-bpstat_copy (bpstat bs)
+bpstat *
+bpstat_copy (bpstat *bs)
 {
-  bpstat p = NULL;
-  bpstat tmp;
-  bpstat retval = NULL;
+  bpstat *p = nullptr;
+  bpstat *tmp;
+  bpstat *retval = nullptr;
 
   if (bs == NULL)
     return bs;
 
   for (; bs != NULL; bs = bs->next)
     {
-      tmp = new bpstats (*bs);
+      tmp = new bpstat (*bs);
 
       if (p == NULL)
 	/* This is the first thing in the chain.  */
@@ -4208,8 +4691,8 @@ bpstat_copy (bpstat bs)
 
 /* Find the bpstat associated with this breakpoint.  */
 
-bpstat
-bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
+bpstat *
+bpstat_find_breakpoint (bpstat *bsp, struct breakpoint *breakpoint)
 {
   if (bsp == NULL)
     return NULL;
@@ -4225,7 +4708,7 @@ bpstat_find_breakpoint (bpstat bsp, stru
 /* See breakpoint.h.  */
 
 bool
-bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
+bpstat_explains_signal (bpstat *bsp, enum gdb_signal sig)
 {
   for (; bsp != NULL; bsp = bsp->next)
     {
@@ -4238,8 +4721,7 @@ bpstat_explains_signal (bpstat bsp, enum
 	}
       else
 	{
-	  if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
-							sig))
+	  if (bsp->breakpoint_at->explains_signal (sig))
 	    return true;
 	}
     }
@@ -4247,18 +4729,10 @@ bpstat_explains_signal (bpstat bsp, enum
   return false;
 }
 
-/* Put in *NUM the breakpoint number of the first breakpoint we are
-   stopped at.  *BSP upon return is a bpstat which points to the
-   remaining breakpoints stopped at (but which is not guaranteed to be
-   good for anything but further calls to bpstat_num).
-
-   Return 0 if passed a bpstat which does not indicate any breakpoints.
-   Return -1 if stopped at a breakpoint that has been deleted since
-   we set it.
-   Return 1 otherwise.  */
+/* See breakpoint.h.  */
 
 int
-bpstat_num (bpstat *bsp, int *num)
+bpstat_num (bpstat **bsp, int *num)
 {
   struct breakpoint *b;
 
@@ -4277,12 +4751,58 @@ bpstat_num (bpstat *bsp, int *num)
   return 1;
 }
 
+/* See breakpoint.h  */
+
+int
+bpstat_locno (const bpstat *bs)
+{
+  const struct breakpoint *b = bs->breakpoint_at;
+  const struct bp_location *bl = bs->bp_location_at.get ();
+
+  if (b != nullptr && b->has_multiple_locations ())
+    {
+      int locno = 1;
+
+      for (bp_location &loc : b->locations ())
+	{
+	  if (bl == &loc)
+	    return locno;
+
+	  ++locno;
+	}
+
+      warning (_("location number not found for breakpoint %d address %s."),
+	       b->number, paddress (bl->gdbarch, bl->address));
+    }
+
+  return 0;
+}
+
+/* See breakpoint.h.  */
+
+void
+print_num_locno (const bpstat *bs, struct ui_out *uiout)
+{
+  struct breakpoint *b = bs->breakpoint_at;
+
+  if (b == nullptr)
+    uiout->text (_("deleted breakpoint"));
+  else
+    {
+      uiout->field_signed ("bkptno", b->number);
+
+      int locno = bpstat_locno (bs);
+      if (locno != 0)
+	uiout->message (".%pF", signed_field ("locno", locno));
+    }
+}
+
 /* See breakpoint.h.  */
 
 void
 bpstat_clear_actions (void)
 {
-  bpstat bs;
+  bpstat *bs;
 
   if (inferior_ptid == null_ptid)
     return;
@@ -4315,15 +4835,28 @@ breakpoint_about_to_proceed (void)
   breakpoint_proceeded = 1;
 }
 
-/* Return non-zero iff CMD as the first line of a command sequence is `silent'
+/* Return true iff CMD as the first line of a command sequence is `silent'
    or its equivalent.  */
 
-static int
+static bool
 command_line_is_silent (struct command_line *cmd)
 {
   return cmd && (strcmp ("silent", cmd->line) == 0);
 }
 
+/* Sets the $_hit_bpnum and $_hit_locno to bpnum and locno.
+   A locno 0 is changed to 1 to e.g. let the user do
+     (gdb) disable $_hit_bpnum.$_hit_locno
+   for a single location breakpoint.  */
+
+static void
+set_hit_convenience_vars (int bpnum, int locno)
+{
+  set_internalvar_integer (lookup_internalvar ("_hit_bpnum"), bpnum);
+  set_internalvar_integer (lookup_internalvar ("_hit_locno"),
+			   (locno > 0 ? locno : 1));
+}
+
 /* Execute all the commands associated with all the breakpoints at
    this location.  Any of these commands could cause the process to
    proceed beyond this point, etc.  We look out for such changes by
@@ -4333,16 +4866,16 @@ command_line_is_silent (struct command_l
    case, it is the caller's responsibility to recall it again with the
    bpstat of the current thread.  */
 
-static int
-bpstat_do_actions_1 (bpstat *bsp)
+static bool
+bpstat_do_actions_1 (bpstat **bsp)
 {
-  bpstat bs;
-  int again = 0;
+  bpstat *bs;
+  bool again = false;
 
   /* Avoid endless recursion if a `source' command is contained
      in bs->commands.  */
   if (executing_breakpoint_commands)
-    return 0;
+    return false;
 
   scoped_restore save_executing
     = make_scoped_restore (&executing_breakpoint_commands, 1);
@@ -4352,21 +4885,45 @@ bpstat_do_actions_1 (bpstat *bsp)
   /* This pointer will iterate over the list of bpstat's.  */
   bs = *bsp;
 
+  /* The $_hit_* convenience variables are set before running the
+     commands of BS.  In case we have several bs, after the loop,
+     we set again the variables to the first printed bpnum and locno.
+     For multiple breakpoints, this ensures the variables are set to the
+     breakpoint printed for the user. */
+  int printed_hit_bpnum = -1;
+  int printed_hit_locno = -1;
+
   breakpoint_proceeded = 0;
   for (; bs != NULL; bs = bs->next)
     {
       struct command_line *cmd = NULL;
 
+      /* Set the _hit_* convenience variables before running BS's commands.  */
+      {
+	const struct breakpoint *b = bs->breakpoint_at;
+	if (b != nullptr)
+	  {
+	    int locno = bpstat_locno (bs);
+
+	    set_hit_convenience_vars (b->number, locno);
+	    if (printed_hit_locno == -1 && bs->print)
+	      {
+		printed_hit_bpnum = b->number;
+		printed_hit_locno = locno;
+	      }
+	  }
+      }
+
       /* Take ownership of the BSP's command tree, if it has one.
 
-         The command tree could legitimately contain commands like
-         'step' and 'next', which call clear_proceed_status, which
-         frees stop_bpstat's command tree.  To make sure this doesn't
-         free the tree we're executing out from under us, we need to
-         take ownership of the tree ourselves.  Since a given bpstat's
-         commands are only executed once, we don't need to copy it; we
-         can clear the pointer in the bpstat, and make sure we free
-         the tree when we're done.  */
+	 The command tree could legitimately contain commands like
+	 'step' and 'next', which call clear_proceed_status, which
+	 frees the bpstat BS and its command tree.  To make sure this doesn't
+	 free the tree we're executing out from under us, we need to
+	 take ownership of the tree ourselves.  Since a given bpstat's
+	 commands are only executed once, we don't need to copy it; we
+	 can clear the pointer in the bpstat, and make sure we free
+	 the tree when we're done.  */
       counted_command_line ccmd = bs->commands;
       bs->commands = NULL;
       if (ccmd != NULL)
@@ -4380,6 +4937,8 @@ bpstat_do_actions_1 (bpstat *bsp)
       while (cmd != NULL)
 	{
 	  execute_control_command (cmd);
+	  /* After execute_control_command, if breakpoint_proceeded is true,
+	     BS has been freed and cannot be accessed anymore.  */
 
 	  if (breakpoint_proceeded)
 	    break;
@@ -4408,10 +4967,16 @@ bpstat_do_actions_1 (bpstat *bsp)
 	       command, and can easily blow up GDB stack.  Instead, we
 	       return true, which will trigger the caller to recall us
 	       with the new stop_bpstat.  */
-	    again = 1;
+	    again = true;
 	  break;
 	}
     }
+
+  /* Now that we have executed the commands of all bs, set the _hit_*
+     convenience variables to the printed values.  */
+  if (printed_hit_locno != -1)
+    set_hit_convenience_vars (printed_hit_bpnum, printed_hit_locno);
+
   return again;
 }
 
@@ -4421,11 +4986,11 @@ bpstat_do_actions_1 (bpstat *bsp)
 static thread_info *
 get_bpstat_thread ()
 {
-  if (inferior_ptid == null_ptid || !target_has_execution)
+  if (inferior_ptid == null_ptid || !target_has_execution ())
     return NULL;
 
   thread_info *tp = inferior_thread ();
-  if (tp->state == THREAD_EXITED || tp->executing)
+  if (tp->state == THREAD_EXITED || tp->executing ())
     return NULL;
   return tp;
 }
@@ -4478,13 +5043,12 @@ maybe_print_thread_hit_breakpoint (struc
 
   if (show_thread_that_caused_stop ())
     {
-      const char *name;
       struct thread_info *thr = inferior_thread ();
 
       uiout->text ("Thread ");
       uiout->field_string ("thread-id", print_thread_id (thr));
 
-      name = thr->name != NULL ? thr->name : target_thread_name (thr);
+      const char *name = thread_name (thr);
       if (name != NULL)
 	{
 	  uiout->text (" \"");
@@ -4503,20 +5067,18 @@ maybe_print_thread_hit_breakpoint (struc
    normal_stop().  */
 
 static enum print_stop_action
-print_bp_stop_message (bpstat bs)
+print_bp_stop_message (bpstat *bs)
 {
   switch (bs->print_it)
     {
     case print_it_noop:
       /* Nothing should be printed for this bpstat entry.  */
       return PRINT_UNKNOWN;
-      break;
 
     case print_it_done:
       /* We still want to print the frame, but we already printed the
-         relevant messages.  */
+	 relevant messages.  */
       return PRINT_SRC_AND_LOC;
-      break;
 
     case print_it_normal:
       {
@@ -4528,21 +5090,18 @@ print_bp_stop_message (bpstat bs)
 	  return PRINT_UNKNOWN;
 
 	/* Normal case.  Call the breakpoint's print_it method.  */
-	return b->ops->print_it (bs);
+	return b->print_it (bs);
       }
-      break;
 
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("print_bp_stop_message: unrecognized enum value"));
-      break;
+      internal_error (_("print_bp_stop_message: unrecognized enum value"));
     }
 }
 
-/* A helper function that prints a shared library stopped event.  */
+/* See breakpoint.h.  */
 
-static void
-print_solib_event (int is_catchpoint)
+void
+print_solib_event (bool is_catchpoint)
 {
   bool any_deleted = !current_program_space->deleted_solibs.empty ();
   bool any_added = !current_program_space->added_solibs.empty ();
@@ -4580,12 +5139,12 @@ print_solib_event (int is_catchpoint)
       current_uiout->text (_("  Inferior loaded "));
       ui_out_emit_list list_emitter (current_uiout, "added");
       bool first = true;
-      for (so_list *iter : current_program_space->added_solibs)
+      for (solib *iter : current_program_space->added_solibs)
 	{
 	  if (!first)
 	    current_uiout->text ("    ");
 	  first = false;
-	  current_uiout->field_string ("library", iter->so_name);
+	  current_uiout->field_string ("library", iter->name);
 	  current_uiout->text ("\n");
 	}
     }
@@ -4613,7 +5172,7 @@ print_solib_event (int is_catchpoint)
    further info to be printed.  */
 
 enum print_stop_action
-bpstat_print (bpstat bs, int kind)
+bpstat_print (bpstat *bs, target_waitkind kind)
 {
   enum print_stop_action val;
 
@@ -4625,7 +5184,7 @@ bpstat_print (bpstat bs, int kind)
     {
       val = print_bp_stop_message (bs);
       if (val == PRINT_SRC_ONLY 
-	  || val == PRINT_SRC_AND_LOC 
+	  || val == PRINT_SRC_AND_LOC
 	  || val == PRINT_NOTHING)
 	return val;
     }
@@ -4635,7 +5194,7 @@ bpstat_print (bpstat bs, int kind)
      OS-level shared library event, do the same thing.  */
   if (kind == TARGET_WAITKIND_LOADED)
     {
-      print_solib_event (0);
+      print_solib_event (false);
       return PRINT_NOTHING;
     }
 
@@ -4649,32 +5208,27 @@ bpstat_print (bpstat bs, int kind)
 static bool
 breakpoint_cond_eval (expression *exp)
 {
-  struct value *mark = value_mark ();
-  bool res = value_true (evaluate_expression (exp));
-
-  value_free_to_mark (mark);
-  return res;
+  scoped_value_mark mark;
+  return value_true (exp->evaluate ());
 }
 
 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
 
-bpstats::bpstats (struct bp_location *bl, bpstat **bs_link_pointer)
+bpstat::bpstat (struct bp_location *bl, bpstat ***bs_link_pointer)
   : next (NULL),
-    bp_location_at (bl),
+    bp_location_at (bp_location_ref_ptr::new_reference (bl)),
     breakpoint_at (bl->owner),
     commands (NULL),
     print (0),
     stop (0),
     print_it (print_it_normal)
 {
-  incref_bp_location (bl);
   **bs_link_pointer = this;
   *bs_link_pointer = &next;
 }
 
-bpstats::bpstats ()
+bpstat::bpstat ()
   : next (NULL),
-    bp_location_at (NULL),
     breakpoint_at (NULL),
     commands (NULL),
     print (0),
@@ -4687,37 +5241,36 @@ bpstats::bpstats ()
    watchpoints have triggered, according to the target.  */
 
 int
-watchpoints_triggered (struct target_waitstatus *ws)
+watchpoints_triggered (const target_waitstatus &ws)
 {
   bool stopped_by_watchpoint = target_stopped_by_watchpoint ();
   CORE_ADDR addr;
-  struct breakpoint *b;
 
   if (!stopped_by_watchpoint)
     {
       /* We were not stopped by a watchpoint.  Mark all watchpoints
 	 as not triggered.  */
-      ALL_BREAKPOINTS (b)
-	if (is_hardware_watchpoint (b))
+      for (breakpoint &b : all_breakpoints ())
+	if (is_hardware_watchpoint (&b))
 	  {
-	    struct watchpoint *w = (struct watchpoint *) b;
+	    watchpoint &w = gdb::checked_static_cast<watchpoint &> (b);
 
-	    w->watchpoint_triggered = watch_triggered_no;
+	    w.watchpoint_triggered = watch_triggered_no;
 	  }
 
       return 0;
     }
 
-  if (!target_stopped_data_address (current_top_target (), &addr))
+  if (!target_stopped_data_address (current_inferior ()->top_target (), &addr))
     {
       /* We were stopped by a watchpoint, but we don't know where.
 	 Mark all watchpoints as unknown.  */
-      ALL_BREAKPOINTS (b)
-	if (is_hardware_watchpoint (b))
+      for (breakpoint &b : all_breakpoints ())
+	if (is_hardware_watchpoint (&b))
 	  {
-	    struct watchpoint *w = (struct watchpoint *) b;
+	    watchpoint &w = gdb::checked_static_cast<watchpoint &> (b);
 
-	    w->watchpoint_triggered = watch_triggered_unknown;
+	    w.watchpoint_triggered = watch_triggered_unknown;
 	  }
 
       return 1;
@@ -4727,32 +5280,31 @@ watchpoints_triggered (struct target_wai
      affected by this data address as triggered, and all others as not
      triggered.  */
 
-  ALL_BREAKPOINTS (b)
-    if (is_hardware_watchpoint (b))
+  for (breakpoint &b : all_breakpoints ())
+    if (is_hardware_watchpoint (&b))
       {
-	struct watchpoint *w = (struct watchpoint *) b;
-	struct bp_location *loc;
+	watchpoint &w = gdb::checked_static_cast<watchpoint &> (b);
 
-	w->watchpoint_triggered = watch_triggered_no;
-	for (loc = b->loc; loc; loc = loc->next)
+	w.watchpoint_triggered = watch_triggered_no;
+	for (bp_location &loc : b.locations ())
 	  {
-	    if (is_masked_watchpoint (b))
+	    if (is_masked_watchpoint (&b))
 	      {
-		CORE_ADDR newaddr = addr & w->hw_wp_mask;
-		CORE_ADDR start = loc->address & w->hw_wp_mask;
+		CORE_ADDR newaddr = addr & w.hw_wp_mask;
+		CORE_ADDR start = loc.address & w.hw_wp_mask;
 
 		if (newaddr == start)
 		  {
-		    w->watchpoint_triggered = watch_triggered_yes;
+		    w.watchpoint_triggered = watch_triggered_yes;
 		    break;
 		  }
 	      }
 	    /* Exact match not required.  Within range is sufficient.  */
-	    else if (target_watchpoint_addr_within_range (current_top_target (),
-							 addr, loc->address,
-							 loc->length))
+	    else if (target_watchpoint_addr_within_range
+		       (current_inferior ()->top_target (), addr, loc.address,
+			loc.length))
 	      {
-		w->watchpoint_triggered = watch_triggered_yes;
+		w.watchpoint_triggered = watch_triggered_yes;
 		break;
 	      }
 	  }
@@ -4784,15 +5336,14 @@ enum wp_check_result
    changed.  */
 
 static wp_check_result
-watchpoint_check (bpstat bs)
+watchpoint_check (bpstat *bs)
 {
-  struct watchpoint *b;
-  struct frame_info *fr;
-  int within_current_scope;
+  frame_info_ptr fr;
+  bool within_current_scope;
 
   /* BS is built from an existing struct breakpoint.  */
   gdb_assert (bs->breakpoint_at != NULL);
-  b = (struct watchpoint *) bs->breakpoint_at;
+  watchpoint *b = gdb::checked_static_cast<watchpoint *> (bs->breakpoint_at);
 
   /* If this is a local watchpoint, we only want to check if the
      watchpoint frame is in scope if the current thread is the thread
@@ -4801,10 +5352,10 @@ watchpoint_check (bpstat bs)
     return WP_IGNORE;
 
   if (b->exp_valid_block == NULL)
-    within_current_scope = 1;
+    within_current_scope = true;
   else
     {
-      struct frame_info *frame = get_current_frame ();
+      frame_info_ptr frame = get_current_frame ();
       struct gdbarch *frame_arch = get_frame_arch (frame);
       CORE_ADDR frame_pc = get_frame_pc (frame);
 
@@ -4831,9 +5382,8 @@ watchpoint_check (bpstat bs)
 
 	  function = get_frame_function (fr);
 	  if (function == NULL
-	      || !contained_in (b->exp_valid_block,
-				SYMBOL_BLOCK_VALUE (function)))
-	    within_current_scope = 0;
+	      || !function->value_block ()->contains (b->exp_valid_block))
+	    within_current_scope = false;
 	}
 
       if (within_current_scope)
@@ -4846,11 +5396,10 @@ watchpoint_check (bpstat bs)
   if (within_current_scope)
     {
       /* We use value_{,free_to_}mark because it could be a *long*
-         time before we return to the command level and call
-         free_all_values.  We can't call free_all_values because we
-         might be in the middle of evaluating a function call.  */
+	 time before we return to the command level and call
+	 free_all_values.  We can't call free_all_values because we
+	 might be in the middle of evaluating a function call.  */
 
-      int pc = 0;
       struct value *mark;
       struct value *new_val;
 
@@ -4861,7 +5410,8 @@ watchpoint_check (bpstat bs)
 	return WP_VALUE_CHANGED;
 
       mark = value_mark ();
-      fetch_subexp_value (b->exp.get (), &pc, &new_val, NULL, NULL, 0);
+      fetch_subexp_value (b->exp.get (), b->exp->op.get (), &new_val,
+			  NULL, NULL, false);
 
       if (b->val_bitsize != 0)
 	new_val = extract_bitfield_from_watchpoint_value (b, new_val);
@@ -4891,21 +5441,21 @@ watchpoint_check (bpstat bs)
   else
     {
       /* This seems like the only logical thing to do because
-         if we temporarily ignored the watchpoint, then when
-         we reenter the block in which it is valid it contains
-         garbage (in the case of a function, it may have two
-         garbage values, one before and one after the prologue).
-         So we can't even detect the first assignment to it and
-         watch after that (since the garbage may or may not equal
-         the first value assigned).  */
+	 if we temporarily ignored the watchpoint, then when
+	 we reenter the block in which it is valid it contains
+	 garbage (in the case of a function, it may have two
+	 garbage values, one before and one after the prologue).
+	 So we can't even detect the first assignment to it and
+	 watch after that (since the garbage may or may not equal
+	 the first value assigned).  */
       /* We print all the stop information in
-	 breakpoint_ops->print_it, but in this case, by the time we
-	 call breakpoint_ops->print_it this bp will be deleted
+	 breakpointprint_it, but in this case, by the time we
+	 call breakpoint->print_it this bp will be deleted
 	 already.  So we have no choice but print the information
 	 here.  */
 
       SWITCH_THRU_ALL_UIS ()
-        {
+	{
 	  struct ui_out *uiout = current_uiout;
 
 	  if (uiout->is_mi_like_p ())
@@ -4929,185 +5479,179 @@ watchpoint_check (bpstat bs)
    breakpoint location BL.  This function does not check if we should
    stop, only if BL explains the stop.  */
 
-static int
+static bool
 bpstat_check_location (const struct bp_location *bl,
 		       const address_space *aspace, CORE_ADDR bp_addr,
-		       const struct target_waitstatus *ws)
+		       const target_waitstatus &ws)
 {
   struct breakpoint *b = bl->owner;
 
   /* BL is from an existing breakpoint.  */
   gdb_assert (b != NULL);
 
-  return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
+  return b->breakpoint_hit (bl, aspace, bp_addr, ws);
 }
 
 /* Determine if the watched values have actually changed, and we
-   should stop.  If not, set BS->stop to 0.  */
+   should stop.  If not, set BS->stop to false.  */
 
 static void
-bpstat_check_watchpoint (bpstat bs)
+bpstat_check_watchpoint (bpstat *bs)
 {
   const struct bp_location *bl;
-  struct watchpoint *b;
 
   /* BS is built for existing struct breakpoint.  */
-  bl = bs->bp_location_at;
+  bl = bs->bp_location_at.get ();
   gdb_assert (bl != NULL);
-  b = (struct watchpoint *) bs->breakpoint_at;
-  gdb_assert (b != NULL);
+  watchpoint *b = gdb::checked_static_cast<watchpoint *> (bs->breakpoint_at);
+
+  bool must_check_value = false;
+
+  if (b->type == bp_watchpoint)
+    /* For a software watchpoint, we must always check the
+       watched value.  */
+    must_check_value = true;
+  else if (b->watchpoint_triggered == watch_triggered_yes)
+    /* We have a hardware watchpoint (read, write, or access)
+       and the target earlier reported an address watched by
+       this watchpoint.  */
+    must_check_value = true;
+  else if (b->watchpoint_triggered == watch_triggered_unknown
+	   && b->type == bp_hardware_watchpoint)
+    /* We were stopped by a hardware watchpoint, but the target could
+       not report the data address.  We must check the watchpoint's
+       value.  Access and read watchpoints are out of luck; without
+       a data address, we can't figure it out.  */
+    must_check_value = true;
 
+  if (must_check_value)
     {
-      int must_check_value = 0;
-      
-      if (b->type == bp_watchpoint)
-	/* For a software watchpoint, we must always check the
-	   watched value.  */
-	must_check_value = 1;
-      else if (b->watchpoint_triggered == watch_triggered_yes)
-	/* We have a hardware watchpoint (read, write, or access)
-	   and the target earlier reported an address watched by
-	   this watchpoint.  */
-	must_check_value = 1;
-      else if (b->watchpoint_triggered == watch_triggered_unknown
-	       && b->type == bp_hardware_watchpoint)
-	/* We were stopped by a hardware watchpoint, but the target could
-	   not report the data address.  We must check the watchpoint's
-	   value.  Access and read watchpoints are out of luck; without
-	   a data address, we can't figure it out.  */
-	must_check_value = 1;
+      wp_check_result e;
 
-      if (must_check_value)
+      try
 	{
-	  wp_check_result e;
+	  e = watchpoint_check (bs);
+	}
+      catch (const gdb_exception_error &ex)
+	{
+	  exception_fprintf (gdb_stderr, ex,
+			     "Error evaluating expression "
+			     "for watchpoint %d\n",
+			     b->number);
 
-	  try
+	  SWITCH_THRU_ALL_UIS ()
 	    {
-	      e = watchpoint_check (bs);
-	    }
-	  catch (const gdb_exception &ex)
-	    {
-	      exception_fprintf (gdb_stderr, ex,
-				 "Error evaluating expression "
-				 "for watchpoint %d\n",
-				 b->number);
-
-	      SWITCH_THRU_ALL_UIS ()
-		{
-		  printf_filtered (_("Watchpoint %d deleted.\n"),
-				   b->number);
-		}
-	      watchpoint_del_at_next_stop (b);
-	      e = WP_DELETED;
+	      gdb_printf (_("Watchpoint %d deleted.\n"),
+			  b->number);
 	    }
+	  watchpoint_del_at_next_stop (b);
+	  e = WP_DELETED;
+	}
 
-	  switch (e)
+      switch (e)
+	{
+	case WP_DELETED:
+	  /* We've already printed what needs to be printed.  */
+	  bs->print_it = print_it_done;
+	  /* Stop.  */
+	  break;
+	case WP_IGNORE:
+	  bs->print_it = print_it_noop;
+	  bs->stop = false;
+	  break;
+	case WP_VALUE_CHANGED:
+	  if (b->type == bp_read_watchpoint)
 	    {
-	    case WP_DELETED:
-	      /* We've already printed what needs to be printed.  */
-	      bs->print_it = print_it_done;
-	      /* Stop.  */
-	      break;
-	    case WP_IGNORE:
-	      bs->print_it = print_it_noop;
-	      bs->stop = 0;
-	      break;
-	    case WP_VALUE_CHANGED:
-	      if (b->type == bp_read_watchpoint)
-		{
-		  /* There are two cases to consider here:
+	      /* There are two cases to consider here:
 
-		     1. We're watching the triggered memory for reads.
-		     In that case, trust the target, and always report
-		     the watchpoint hit to the user.  Even though
-		     reads don't cause value changes, the value may
-		     have changed since the last time it was read, and
-		     since we're not trapping writes, we will not see
-		     those, and as such we should ignore our notion of
-		     old value.
-
-		     2. We're watching the triggered memory for both
-		     reads and writes.  There are two ways this may
-		     happen:
-
-		     2.1. This is a target that can't break on data
-		     reads only, but can break on accesses (reads or
-		     writes), such as e.g., x86.  We detect this case
-		     at the time we try to insert read watchpoints.
-
-		     2.2. Otherwise, the target supports read
-		     watchpoints, but, the user set an access or write
-		     watchpoint watching the same memory as this read
-		     watchpoint.
-
-		     If we're watching memory writes as well as reads,
-		     ignore watchpoint hits when we find that the
-		     value hasn't changed, as reads don't cause
-		     changes.  This still gives false positives when
-		     the program writes the same value to memory as
-		     what there was already in memory (we will confuse
-		     it for a read), but it's much better than
-		     nothing.  */
+		 1. We're watching the triggered memory for reads.
+		 In that case, trust the target, and always report
+		 the watchpoint hit to the user.  Even though
+		 reads don't cause value changes, the value may
+		 have changed since the last time it was read, and
+		 since we're not trapping writes, we will not see
+		 those, and as such we should ignore our notion of
+		 old value.
+
+		 2. We're watching the triggered memory for both
+		 reads and writes.  There are two ways this may
+		 happen:
+
+		 2.1. This is a target that can't break on data
+		 reads only, but can break on accesses (reads or
+		 writes), such as e.g., x86.  We detect this case
+		 at the time we try to insert read watchpoints.
+
+		 2.2. Otherwise, the target supports read
+		 watchpoints, but, the user set an access or write
+		 watchpoint watching the same memory as this read
+		 watchpoint.
+
+		 If we're watching memory writes as well as reads,
+		 ignore watchpoint hits when we find that the
+		 value hasn't changed, as reads don't cause
+		 changes.  This still gives false positives when
+		 the program writes the same value to memory as
+		 what there was already in memory (we will confuse
+		 it for a read), but it's much better than
+		 nothing.  */
 
-		  int other_write_watchpoint = 0;
+	      int other_write_watchpoint = 0;
 
-		  if (bl->watchpoint_type == hw_read)
-		    {
-		      struct breakpoint *other_b;
+	      if (bl->watchpoint_type == hw_read)
+		{
+		  for (breakpoint &other_b : all_breakpoints ())
+		    if (other_b.type == bp_hardware_watchpoint
+			|| other_b.type == bp_access_watchpoint)
+		      {
+			watchpoint &other_w =
+			  gdb::checked_static_cast<watchpoint &> (other_b);
 
-		      ALL_BREAKPOINTS (other_b)
-			if (other_b->type == bp_hardware_watchpoint
-			    || other_b->type == bp_access_watchpoint)
+			if (other_w.watchpoint_triggered
+			    == watch_triggered_yes)
 			  {
-			    struct watchpoint *other_w =
-			      (struct watchpoint *) other_b;
-
-			    if (other_w->watchpoint_triggered
-				== watch_triggered_yes)
-			      {
-				other_write_watchpoint = 1;
-				break;
-			      }
+			    other_write_watchpoint = 1;
+			    break;
 			  }
-		    }
-
-		  if (other_write_watchpoint
-		      || bl->watchpoint_type == hw_access)
-		    {
-		      /* We're watching the same memory for writes,
-			 and the value changed since the last time we
-			 updated it, so this trap must be for a write.
-			 Ignore it.  */
-		      bs->print_it = print_it_noop;
-		      bs->stop = 0;
-		    }
+		      }
 		}
-	      break;
-	    case WP_VALUE_NOT_CHANGED:
-	      if (b->type == bp_hardware_watchpoint
-		  || b->type == bp_watchpoint)
+
+	      if (other_write_watchpoint
+		  || bl->watchpoint_type == hw_access)
 		{
-		  /* Don't stop: write watchpoints shouldn't fire if
-		     the value hasn't changed.  */
+		  /* We're watching the same memory for writes,
+		     and the value changed since the last time we
+		     updated it, so this trap must be for a write.
+		     Ignore it.  */
 		  bs->print_it = print_it_noop;
-		  bs->stop = 0;
+		  bs->stop = false;
 		}
-	      /* Stop.  */
-	      break;
-	    default:
-	      /* Can't happen.  */
-	      break;
 	    }
+	  break;
+	case WP_VALUE_NOT_CHANGED:
+	  if (b->type == bp_hardware_watchpoint
+	      || b->type == bp_watchpoint)
+	    {
+	      /* Don't stop: write watchpoints shouldn't fire if
+		 the value hasn't changed.  */
+	      bs->print_it = print_it_noop;
+	      bs->stop = false;
+	    }
+	  /* Stop.  */
+	  break;
+	default:
+	  /* Can't happen.  */
+	  break;
 	}
-      else	/* must_check_value == 0 */
-	{
-	  /* This is a case where some watchpoint(s) triggered, but
-	     not at the address of this watchpoint, or else no
-	     watchpoint triggered after all.  So don't print
-	     anything for this watchpoint.  */
-	  bs->print_it = print_it_noop;
-	  bs->stop = 0;
-	}
+    }
+  else	/* !must_check_value */
+    {
+      /* This is a case where some watchpoint(s) triggered, but
+	 not at the address of this watchpoint, or else no
+	 watchpoint triggered after all.  So don't print
+	 anything for this watchpoint.  */
+      bs->print_it = print_it_noop;
+      bs->stop = false;
     }
 }
 
@@ -5117,8 +5661,10 @@ bpstat_check_watchpoint (bpstat bs)
    breakpoint, set BS->stop to 0.  */
 
 static void
-bpstat_check_breakpoint_conditions (bpstat bs, thread_info *thread)
+bpstat_check_breakpoint_conditions (bpstat *bs, thread_info *thread)
 {
+  INFRUN_SCOPED_DEBUG_ENTER_EXIT;
+
   const struct bp_location *bl;
   struct breakpoint *b;
   /* Assume stop.  */
@@ -5128,19 +5674,26 @@ bpstat_check_breakpoint_conditions (bpst
   gdb_assert (bs->stop);
 
   /* BS is built for existing struct breakpoint.  */
-  bl = bs->bp_location_at;
+  bl = bs->bp_location_at.get ();
   gdb_assert (bl != NULL);
   b = bs->breakpoint_at;
   gdb_assert (b != NULL);
 
+  infrun_debug_printf ("thread = %s, breakpoint %d.%d",
+		       thread->ptid.to_string ().c_str (),
+		       b->number, find_loc_num_by_location (bl));
+
   /* Even if the target evaluated the condition on its end and notified GDB, we
      need to do so again since GDB does not know if we stopped due to a
      breakpoint or a single step breakpoint.  */
 
   if (frame_id_p (b->frame_id)
-      && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
+      && b->frame_id != get_stack_frame_id (get_current_frame ()))
     {
-      bs->stop = 0;
+      infrun_debug_printf ("incorrect frame %s not %s, not stopping",
+			   get_stack_frame_id (get_current_frame ()).to_string ().c_str (),
+			   b->frame_id.to_string ().c_str ());
+      bs->stop = false;
       return;
     }
 
@@ -5148,9 +5701,11 @@ bpstat_check_breakpoint_conditions (bpst
      evaluating the condition if this isn't the specified
      thread/task.  */
   if ((b->thread != -1 && b->thread != thread->global_num)
-      || (b->task != 0 && b->task != ada_get_task_number (thread)))
+      || (b->inferior != -1 && b->inferior != thread->inf->num)
+      || (b->task != -1 && b->task != ada_get_task_number (thread)))
     {
-      bs->stop = 0;
+      infrun_debug_printf ("incorrect thread or task, not stopping");
+      bs->stop = false;
       return;
     }
 
@@ -5160,29 +5715,26 @@ bpstat_check_breakpoint_conditions (bpst
 
   if (is_watchpoint (b))
     {
-      struct watchpoint *w = (struct watchpoint *) b;
+      watchpoint *w = gdb::checked_static_cast<watchpoint *> (b);
 
       cond = w->cond_exp.get ();
     }
   else
     cond = bl->cond.get ();
 
-  if (cond && b->disposition != disp_del_at_next_stop)
+  if (cond != nullptr && b->disposition != disp_del_at_next_stop)
     {
-      int within_current_scope = 1;
-      struct watchpoint * w;
+      bool within_current_scope = true;
 
-      /* We use value_mark and value_free_to_mark because it could
-	 be a long time before we return to the command level and
-	 call free_all_values.  We can't call free_all_values
-	 because we might be in the middle of evaluating a
-	 function call.  */
-      struct value *mark = value_mark ();
+      /* We use scoped_value_mark because it could be a long time
+	 before we return to the command level and call
+	 free_all_values.  We can't call free_all_values because we
+	 might be in the middle of evaluating a function call.  */
+      scoped_value_mark mark;
 
+      watchpoint *w = nullptr;
       if (is_watchpoint (b))
-	w = (struct watchpoint *) b;
-      else
-	w = NULL;
+	w = gdb::checked_static_cast<watchpoint *> (b);
 
       /* Need to select the frame, with all that implies so that
 	 the conditions will have the right context.  Because we
@@ -5194,7 +5746,7 @@ bpstat_check_breakpoint_conditions (bpst
 	select_frame (get_current_frame ());
       else
 	{
-	  struct frame_info *frame;
+	  frame_info_ptr frame;
 
 	  /* For local watchpoint expressions, which particular
 	     instance of a local is being watched matters, so we
@@ -5214,18 +5766,29 @@ bpstat_check_breakpoint_conditions (bpst
 	  if (frame != NULL)
 	    select_frame (frame);
 	  else
-	    within_current_scope = 0;
+	    within_current_scope = false;
 	}
       if (within_current_scope)
 	{
 	  try
 	    {
+	      scoped_restore reset_in_cond_eval
+		= make_scoped_restore (&thread->control.in_cond_eval, true);
 	      condition_result = breakpoint_cond_eval (cond);
 	    }
-	  catch (const gdb_exception &ex)
+	  catch (const gdb_exception_error &ex)
 	    {
-	      exception_fprintf (gdb_stderr, ex,
-				 "Error in testing breakpoint condition:\n");
+	      int locno = bpstat_locno (bs);
+	      if (locno != 0)
+		exception_fprintf
+		  (gdb_stderr, ex,
+		   "Error in testing condition for breakpoint %d.%d:\n",
+		   b->number, locno);
+	      else
+		exception_fprintf
+		  (gdb_stderr, ex,
+		   "Error in testing condition for breakpoint %d:\n",
+		   b->number);
 	    }
 	}
       else
@@ -5236,28 +5799,37 @@ bpstat_check_breakpoint_conditions (bpst
 	     watchpoint, unconditionally report it.  */
 	}
       /* FIXME-someday, should give breakpoint #.  */
-      value_free_to_mark (mark);
     }
 
-  if (cond && !condition_result)
+  if (cond != nullptr && !condition_result)
     {
-      bs->stop = 0;
+      infrun_debug_printf ("condition_result = false, not stopping");
+      bs->stop = false;
+      return;
     }
   else if (b->ignore_count > 0)
     {
+      infrun_debug_printf ("ignore count %d, not stopping",
+			   b->ignore_count);
       b->ignore_count--;
-      bs->stop = 0;
+      bs->stop = false;
       /* Increase the hit count even though we don't stop.  */
       ++(b->hit_count);
-      gdb::observers::breakpoint_modified.notify (b);
-    }	
+      notify_breakpoint_modified (b);
+      return;
+    }
+
+  if (bs->stop)
+    infrun_debug_printf ("stopping at this breakpoint");
+  else
+    infrun_debug_printf ("not stopping at this breakpoint");
 }
 
 /* Returns true if we need to track moribund locations of LOC's type
    on the current target.  */
 
-static int
-need_moribund_for_location_type (struct bp_location *loc)
+static bool
+need_moribund_for_location_type (const struct bp_location *loc)
 {
   return ((loc->loc_type == bp_loc_software_breakpoint
 	   && !target_supports_stopped_by_sw_breakpoint ())
@@ -5267,53 +5839,53 @@ need_moribund_for_location_type (struct
 
 /* See breakpoint.h.  */
 
-bpstat
+bpstat *
 build_bpstat_chain (const address_space *aspace, CORE_ADDR bp_addr,
-		    const struct target_waitstatus *ws)
+		    const target_waitstatus &ws)
 {
-  struct breakpoint *b;
-  bpstat bs_head = NULL, *bs_link = &bs_head;
+  bpstat *bs_head = nullptr, **bs_link = &bs_head;
 
-  ALL_BREAKPOINTS (b)
+  for (breakpoint &b : all_breakpoints ())
     {
-      if (!breakpoint_enabled (b))
+      if (!breakpoint_enabled (&b))
 	continue;
 
-      for (bp_location *bl = b->loc; bl != NULL; bl = bl->next)
+      for (bp_location &bl : b.locations ())
 	{
 	  /* For hardware watchpoints, we look only at the first
 	     location.  The watchpoint_check function will work on the
 	     entire expression, not the individual locations.  For
 	     read watchpoints, the watchpoints_triggered function has
 	     checked all locations already.  */
-	  if (b->type == bp_hardware_watchpoint && bl != b->loc)
+	  if (b.type == bp_hardware_watchpoint && &bl != &b.first_loc ())
 	    break;
 
-	  if (!bl->enabled || bl->shlib_disabled)
+	  if (!bl.enabled || bl.disabled_by_cond || bl.shlib_disabled)
 	    continue;
 
-	  if (!bpstat_check_location (bl, aspace, bp_addr, ws))
+	  if (!bpstat_check_location (&bl, aspace, bp_addr, ws))
 	    continue;
 
 	  /* Come here if it's a watchpoint, or if the break address
 	     matches.  */
 
-	  bpstat bs = new bpstats (bl, &bs_link);	/* Alloc a bpstat to
+	  bpstat *bs = new bpstat (&bl, &bs_link);	/* Alloc a bpstat to
 							   explain stop.  */
 
 	  /* Assume we stop.  Should we find a watchpoint that is not
 	     actually triggered, or if the condition of the breakpoint
 	     evaluates as false, we'll reset 'stop' to 0.  */
-	  bs->stop = 1;
-	  bs->print = 1;
+	  bs->stop = true;
+	  bs->print = true;
 
 	  /* If this is a scope breakpoint, mark the associated
 	     watchpoint as triggered so that we will handle the
 	     out-of-scope event.  We'll get to the watchpoint next
 	     iteration.  */
-	  if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
+	  if (b.type == bp_watchpoint_scope && b.related_breakpoint != &b)
 	    {
-	      struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
+	      watchpoint *w
+		= gdb::checked_static_cast<watchpoint *> (b.related_breakpoint);
 
 	      w->watchpoint_triggered = watch_triggered_yes;
 	    }
@@ -5329,10 +5901,10 @@ build_bpstat_chain (const address_space
 	  if (breakpoint_location_address_match (loc, aspace, bp_addr)
 	      && need_moribund_for_location_type (loc))
 	    {
-	      bpstat bs = new bpstats (loc, &bs_link);
+	      bpstat *bs = new bpstat (loc, &bs_link);
 	      /* For hits of moribund locations, we should just proceed.  */
-	      bs->stop = 0;
-	      bs->print = 0;
+	      bs->stop = false;
+	      bs->print = false;
 	      bs->print_it = print_it_noop;
 	    }
 	}
@@ -5343,16 +5915,16 @@ build_bpstat_chain (const address_space
 
 /* See breakpoint.h.  */
 
-bpstat
+bpstat *
 bpstat_stop_status (const address_space *aspace,
 		    CORE_ADDR bp_addr, thread_info *thread,
-		    const struct target_waitstatus *ws,
-		    bpstat stop_chain)
+		    const target_waitstatus &ws,
+		    bpstat *stop_chain)
 {
   struct breakpoint *b = NULL;
   /* First item of allocated bpstat's.  */
-  bpstat bs_head = stop_chain;
-  bpstat bs;
+  bpstat *bs_head = stop_chain;
+  bpstat *bs;
   int need_remove_insert;
   int removed_any;
 
@@ -5390,7 +5962,7 @@ bpstat_stop_status (const address_space
 	continue;
 
       b = bs->breakpoint_at;
-      b->ops->check_status (bs);
+      b->check_status (bs);
       if (bs->stop)
 	{
 	  bpstat_check_breakpoint_conditions (bs, thread);
@@ -5398,7 +5970,6 @@ bpstat_stop_status (const address_space
 	  if (bs->stop)
 	    {
 	      ++(b->hit_count);
-	      gdb::observers::breakpoint_modified.notify (b);
 
 	      /* We will stop here.  */
 	      if (b->disposition == disp_disable)
@@ -5408,14 +5979,15 @@ bpstat_stop_status (const address_space
 		    b->enable_state = bp_disabled;
 		  removed_any = 1;
 		}
+	      notify_breakpoint_modified (b);
 	      if (b->silent)
-		bs->print = 0;
+		bs->print = false;
 	      bs->commands = b->commands;
 	      if (command_line_is_silent (bs->commands
 					  ? bs->commands.get () : NULL))
-		bs->print = 0;
+		bs->print = false;
 
-	      b->ops->after_condition_true (bs);
+	      b->after_condition_true (bs);
 	    }
 
 	}
@@ -5437,9 +6009,10 @@ bpstat_stop_status (const address_space
 	  && bs->breakpoint_at
 	  && is_hardware_watchpoint (bs->breakpoint_at))
 	{
-	  struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
+	  watchpoint *w
+	    = gdb::checked_static_cast<watchpoint *> (bs->breakpoint_at);
 
-	  update_watchpoint (w, 0 /* don't reparse.  */);
+	  update_watchpoint (w, false /* don't reparse.  */);
 	  need_remove_insert = 1;
 	}
 
@@ -5451,23 +6024,44 @@ bpstat_stop_status (const address_space
   return bs_head;
 }
 
+/* See breakpoint.h.  */
+
+bpstat *
+bpstat_stop_status_nowatch (const address_space *aspace, CORE_ADDR bp_addr,
+			    thread_info *thread, const target_waitstatus &ws)
+{
+  gdb_assert (!target_stopped_by_watchpoint ());
+
+  /* Clear all watchpoints' 'watchpoint_triggered' value from a
+     previous stop to avoid confusing bpstat_stop_status.  */
+  watchpoints_triggered (ws);
+
+  return bpstat_stop_status (aspace, bp_addr, thread, ws);
+}
+
 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);
+  objfile *objfile = jit_bp_sym.objfile;
+  if (objfile->separate_debug_objfile_backlink)
+    objfile = objfile->separate_debug_objfile_backlink;
+  jit_event_handler (gdbarch, objfile);
 
   target_terminal::inferior ();
 }
@@ -5477,10 +6071,10 @@ handle_jit_event (void)
 /* Decide what infrun needs to do with this bpstat.  */
 
 struct bpstat_what
-bpstat_what (bpstat bs_head)
+bpstat_what (bpstat *bs_head)
 {
   struct bpstat_what retval;
-  bpstat bs;
+  bpstat *bs;
 
   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
   retval.call_dummy = STOP_NONE;
@@ -5598,7 +6192,8 @@ bpstat_what (bpstat bs_head)
 	    {
 	      /* Some catchpoints are implemented with breakpoints.
 		 For those, we need to step over the breakpoint.  */
-	      if (bs->bp_location_at->loc_type != bp_loc_other)
+	      if (bs->bp_location_at->loc_type == bp_loc_software_breakpoint
+		  || bs->bp_location_at->loc_type == bp_loc_hardware_breakpoint)
 		this_action = BPSTAT_WHAT_SINGLE;
 	    }
 	  break;
@@ -5620,11 +6215,11 @@ bpstat_what (bpstat bs_head)
 	case bp_tracepoint:
 	case bp_fast_tracepoint:
 	case bp_static_tracepoint:
+	case bp_static_marker_tracepoint:
 	  /* Tracepoint hits should not be reported back to GDB, and
 	     if one got through somehow, it should have been filtered
 	     out already.  */
-	  internal_error (__FILE__, __LINE__,
-			  _("bpstat_what: tracepoint encountered"));
+	  internal_error (_("bpstat_what: tracepoint encountered"));
 	  break;
 	case bp_gnu_ifunc_resolver:
 	  /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
@@ -5644,8 +6239,7 @@ bpstat_what (bpstat bs_head)
 	  break;
 
 	default:
-	  internal_error (__FILE__, __LINE__,
-			  _("bpstat_what: unhandled bptype %d"), (int) bptype);
+	  internal_error (_("bpstat_what: unhandled bptype %d"), (int) bptype);
 	}
 
       retval.main_action = std::max (retval.main_action, this_action);
@@ -5655,9 +6249,9 @@ bpstat_what (bpstat bs_head)
 }
 
 void
-bpstat_run_callbacks (bpstat bs_head)
+bpstat_run_callbacks (bpstat *bs_head)
 {
-  bpstat bs;
+  bpstat *bs;
 
   for (bs = bs_head; bs != NULL; bs = bs->next)
     {
@@ -5668,13 +6262,15 @@ 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);
+	  gnu_ifunc_resolver_stop
+	    (gdb::checked_static_cast<code_breakpoint *> (b));
 	  break;
 	case bp_gnu_ifunc_resolver_return:
-	  gnu_ifunc_resolver_return_stop (b);
+	  gnu_ifunc_resolver_return_stop
+	    (gdb::checked_static_cast<code_breakpoint *> (b));
 	  break;
 	}
     }
@@ -5685,18 +6281,19 @@ bpstat_run_callbacks (bpstat bs_head)
 bool
 bpstat_should_step ()
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-    if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
+  for (breakpoint &b : all_breakpoints ())
+    if (breakpoint_enabled (&b)
+	&& b.type == bp_watchpoint
+	&& b.has_locations ())
       return true;
+
   return false;
 }
 
 /* See breakpoint.h.  */
 
 bool
-bpstat_causes_stop (bpstat bs)
+bpstat_causes_stop (bpstat *bs)
 {
   for (; bs != NULL; bs = bs->next)
     if (bs->stop)
@@ -5707,14 +6304,13 @@ bpstat_causes_stop (bpstat bs)
 
 
 
-/* Compute a string of spaces suitable to indent the next line
+/* Compute a number of spaces suitable to indent the next line
    so it starts at the position corresponding to the table column
    named COL_NAME in the currently active table of UIOUT.  */
 
-static char *
+static int
 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
 {
-  static char wrap_indent[80];
   int i, total_width, width, align;
   const char *text;
 
@@ -5722,18 +6318,12 @@ wrap_indent_at_field (struct ui_out *uio
   for (i = 1; uiout->query_table_field (i, &width, &align, &text); i++)
     {
       if (strcmp (text, col_name) == 0)
-	{
-	  gdb_assert (total_width < sizeof wrap_indent);
-	  memset (wrap_indent, ' ', total_width);
-	  wrap_indent[total_width] = 0;
-
-	  return wrap_indent;
-	}
+	return total_width;
 
       total_width += width + 1;
     }
 
-  return NULL;
+  return 0;
 }
 
 /* Determine if the locations of this breakpoint will have their conditions
@@ -5745,9 +6335,8 @@ wrap_indent_at_field (struct ui_out *uio
 */
 
 static const char *
-bp_condition_evaluator (struct breakpoint *b)
+bp_condition_evaluator (const breakpoint *b)
 {
-  struct bp_location *bl;
   char host_evals = 0;
   char target_evals = 0;
 
@@ -5761,9 +6350,9 @@ bp_condition_evaluator (struct breakpoin
       || !target_supports_evaluation_of_breakpoint_conditions ())
     return condition_evaluation_host;
 
-  for (bl = b->loc; bl; bl = bl->next)
+  for (bp_location &bl : b->locations ())
     {
-      if (bl->cond_bytecode)
+      if (bl.cond_bytecode)
 	target_evals++;
       else
 	host_evals++;
@@ -5781,7 +6370,7 @@ bp_condition_evaluator (struct breakpoin
    similar to bp_condition_evaluator, but for locations.  */
 
 static const char *
-bp_location_condition_evaluator (struct bp_location *bl)
+bp_location_condition_evaluator (const struct bp_location *bl)
 {
   if (bl && !is_breakpoint (bl->owner))
     return NULL;
@@ -5799,8 +6388,7 @@ bp_location_condition_evaluator (struct
 /* Print the LOC location out of the list of B->LOC locations.  */
 
 static void
-print_breakpoint_location (struct breakpoint *b,
-			   struct bp_location *loc)
+print_breakpoint_location (const breakpoint *b, const bp_location *loc)
 {
   struct ui_out *uiout = current_uiout;
 
@@ -5813,7 +6401,7 @@ print_breakpoint_location (struct breakp
     set_current_program_space (loc->pspace);
 
   if (b->display_canonical)
-    uiout->field_string ("what", event_location_to_string (b->location.get ()));
+    uiout->field_string ("what", b->locspec->to_string ());
   else if (loc && loc->symtab)
     {
       const struct symbol *sym = loc->symbol;
@@ -5835,7 +6423,8 @@ print_breakpoint_location (struct breakp
       if (uiout->is_mi_like_p ())
 	uiout->field_string ("fullname", symtab_to_fullname (loc->symtab));
       
-      uiout->field_signed ("line", loc->line_number);
+      uiout->field_signed ("line", loc->line_number,
+			   line_number_style.style ());
     }
   else if (loc)
     {
@@ -5847,19 +6436,26 @@ print_breakpoint_location (struct breakp
     }
   else
     {
-      uiout->field_string ("pending",
-			   event_location_to_string (b->location.get ()));
-      /* If extra_string is available, it could be holding a condition
-	 or dprintf arguments.  In either case, make sure it is printed,
-	 too, but only for non-MI streams.  */
-      if (!uiout->is_mi_like_p () && b->extra_string != NULL)
-	{
-	  if (b->type == bp_dprintf)
-	    uiout->text (",");
-	  else
-	    uiout->text (" ");
-	  uiout->text (b->extra_string);
-	}
+      /* Internal breakpoints don't have a locspec string, but can become
+	 pending if the shared library the breakpoint is in is unloaded.
+	 For most internal breakpoint types though, after unloading the
+	 shared library, the breakpoint will be deleted and never recreated
+	 (see internal_breakpoint::re_set).  But for two internal
+	 breakpoint types bp_shlib_event and bp_thread_event this is not
+	 true.  Usually we don't expect the libraries that contain these
+	 breakpoints to ever be unloaded, but a buggy inferior might do
+	 such a thing, in which case GDB should be prepared to handle this
+	 case.
+
+	 If these two breakpoint types become pending then there will be no
+	 locspec string.  */
+      gdb_assert (b->locspec != nullptr
+		  || (!user_breakpoint_p (b)
+		      && (b->type == bp_shlib_event
+			  || b->type == bp_thread_event)));
+      const char *locspec_str
+	= (b->locspec != nullptr ? b->locspec->to_string () : "");
+      uiout->field_string ("pending", locspec_str);
     }
 
   if (loc && is_breakpoint (b)
@@ -5913,6 +6509,7 @@ bptype_string (enum bptype type)
     {bp_tracepoint, "tracepoint"},
     {bp_fast_tracepoint, "fast tracepoint"},
     {bp_static_tracepoint, "static tracepoint"},
+    {bp_static_marker_tracepoint, "static marker tracepoint"},
     {bp_dprintf, "dprintf"},
     {bp_jit_event, "jit events"},
     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
@@ -5921,8 +6518,7 @@ bptype_string (enum bptype type)
 
   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
       || ((int) type != bptypes[(int) type].type))
-    internal_error (__FILE__, __LINE__,
-		    _("bptypes table does not describe type #%d."),
+    internal_error (_("bptypes table does not describe type #%d."),
 		    (int) type);
 
   return bptypes[(int) type].description;
@@ -5967,25 +6563,30 @@ output_thread_groups (struct ui_out *uio
     }
 }
 
+/* See breakpoint.h. */
+
+bool fix_breakpoint_script_output_globally = false;
+
 /* Print B to gdb_stdout.  If RAW_LOC, print raw breakpoint locations
    instead of going via breakpoint_ops::print_one.  This makes "maint
    info breakpoints" show the software breakpoint locations of
    catchpoints, which are considered internal implementation
-   detail.  */
+   detail.  Returns true if RAW_LOC is false and if the breakpoint's
+   print_one method did something; false otherwise.  */
 
-static void
+static bool
 print_one_breakpoint_location (struct breakpoint *b,
 			       struct bp_location *loc,
 			       int loc_number,
-			       struct bp_location **last_loc,
+			       const bp_location **last_loc,
 			       int allflag, bool raw_loc)
 {
   struct command_line *l;
   static char bpenables[] = "nynny";
 
   struct ui_out *uiout = current_uiout;
-  int header_of_multiple = 0;
-  int part_of_multiple = (loc != NULL);
+  bool header_of_multiple = false;
+  bool part_of_multiple = (loc != NULL);
   struct value_print_options opts;
 
   get_user_print_options (&opts);
@@ -5994,11 +6595,13 @@ print_one_breakpoint_location (struct br
   /* See comment in print_one_breakpoint concerning treatment of
      breakpoints with single disabled location.  */
   if (loc == NULL 
-      && (b->loc != NULL 
-	  && (b->loc->next != NULL || !b->loc->enabled)))
-    header_of_multiple = 1;
-  if (loc == NULL)
-    loc = b->loc;
+      && (b->has_locations ()
+	  && (b->has_multiple_locations ()
+	      || !b->first_loc ().enabled || b->first_loc ().disabled_by_cond)))
+    header_of_multiple = true;
+
+  if (loc == NULL && b->has_locations ())
+    loc = &b->first_loc ();
 
   annotate_record ();
 
@@ -6026,18 +6629,49 @@ print_one_breakpoint_location (struct br
   /* 4 */
   annotate_field (3);
   if (part_of_multiple)
-    uiout->field_string ("enabled", loc->enabled ? "y" : "n");
+    {
+      /* For locations that are disabled because of an invalid
+	 condition, display "N*" on the CLI, where "*" refers to a
+	 footnote below the table.  For MI, simply display a "N"
+	 without a footnote.  On the CLI, for enabled locations whose
+	 breakpoint is disabled, display "y-".  */
+      auto get_enable_state = [uiout, loc] () -> const char *
+	{
+	  if (uiout->is_mi_like_p ())
+	    {
+	      if (loc->disabled_by_cond)
+		return "N";
+	      else if (!loc->enabled)
+		return "n";
+	      else
+		return "y";
+	    }
+	  else
+	    {
+	      if (loc->disabled_by_cond)
+		return "N*";
+	      else if (!loc->enabled)
+		return "n";
+	      else if (!breakpoint_enabled (loc->owner))
+		return "y-";
+	      else
+		return "y";
+	    }
+	};
+      uiout->field_string ("enabled", get_enable_state ());
+    }
   else
     uiout->field_fmt ("enabled", "%c", bpenables[(int) b->enable_state]);
 
   /* 5 and 6 */
-  if (!raw_loc && b->ops != NULL && b->ops->print_one != NULL)
-    b->ops->print_one (b, last_loc);
+  bool result = false;
+  if (!raw_loc && b->print_one (last_loc))
+    result = true;
   else
     {
       if (is_watchpoint (b))
 	{
-	  struct watchpoint *w = (struct watchpoint *) b;
+	  watchpoint *w = gdb::checked_static_cast<watchpoint *> (b);
 
 	  /* Field 4, the address, is omitted (which makes the columns
 	     not line up too nicely with the headers, but the effect
@@ -6045,7 +6679,7 @@ print_one_breakpoint_location (struct br
 	  if (opts.addressprint)
 	    uiout->field_skip ("addr");
 	  annotate_field (5);
-	  uiout->field_string ("what", w->exp_string);
+	  uiout->field_string ("what", w->exp_string.get ());
 	}
       else if (!is_catchpoint (b) || is_exception_catchpoint (b)
 	       || is_ada_exception_catchpoint (b))
@@ -6056,7 +6690,7 @@ print_one_breakpoint_location (struct br
 	      if (header_of_multiple)
 		uiout->field_string ("addr", "<MULTIPLE>",
 				     metadata_style.style ());
-	      else if (b->loc == NULL || loc->shlib_disabled)
+	      else if (!b->has_locations () || loc->shlib_disabled)
 		uiout->field_string ("addr", "<PENDING>",
 				     metadata_style.style ());
 	      else
@@ -6066,12 +6700,12 @@ print_one_breakpoint_location (struct br
 	  annotate_field (5);
 	  if (!header_of_multiple)
 	    print_breakpoint_location (b, loc);
-	  if (b->loc)
-	    *last_loc = b->loc;
+	  if (b->has_locations ())
+	    *last_loc = &b->first_loc ();
 	}
     }
 
-  if (loc != NULL && !header_of_multiple)
+  if (loc != nullptr && !header_of_multiple && !loc->shlib_disabled)
     {
       std::vector<int> inf_nums;
       int mi_only = 1;
@@ -6082,46 +6716,47 @@ print_one_breakpoint_location (struct br
 	    inf_nums.push_back (inf->num);
 	}
 
-        /* For backward compatibility, don't display inferiors in CLI unless
-	   there are several.  Always display for MI. */
-	if (allflag
-	    || (!gdbarch_has_global_breakpoints (target_gdbarch ())
-		&& (number_of_program_spaces () > 1
-		    || number_of_inferiors () > 1)
-		/* LOC is for existing B, it cannot be in
-		   moribund_locations and thus having NULL OWNER.  */
-		&& loc->owner->type != bp_catchpoint))
+      /* For backward compatibility, don't display inferiors in CLI unless
+	 there are several.  Always display for MI. */
+      if (allflag
+	  || (!gdbarch_has_global_breakpoints (current_inferior ()->arch ())
+	      && (program_spaces.size () > 1
+		  || number_of_inferiors () > 1)
+	      /* LOC is for existing B, it cannot be in
+		 moribund_locations and thus having NULL OWNER.  */
+	      && loc->owner->type != bp_catchpoint))
 	mi_only = 0;
       output_thread_groups (uiout, "thread-groups", inf_nums, mi_only);
     }
 
-  if (!part_of_multiple)
+  /* In the MI output, each location of a thread or task specific
+     breakpoint includes the relevant thread or task ID.  This is done for
+     backwards compatibility reasons.
+
+     For the CLI output, the thread/task information is printed on a
+     separate line, see the 'stop only in thread' and 'stop only in task'
+     output below.  */
+  if (part_of_multiple && uiout->is_mi_like_p ())
     {
       if (b->thread != -1)
-	{
-	  /* FIXME: This seems to be redundant and lost here; see the
-	     "stop only in" line a little further down.  */
-	  uiout->text (" thread ");
-	  uiout->field_signed ("thread", b->thread);
-	}
-      else if (b->task != 0)
-	{
-	  uiout->text (" task ");
-	  uiout->field_signed ("task", b->task);
-	}
+	uiout->field_signed ("thread", b->thread);
+      else if (b->task != -1)
+	uiout->field_signed ("task", b->task);
+      else if (b->inferior != -1)
+	uiout->field_signed ("inferior", b->inferior);
     }
 
   uiout->text ("\n");
 
   if (!part_of_multiple)
-    b->ops->print_one_detail (b, uiout);
+    b->print_one_detail (uiout);
 
   if (part_of_multiple && frame_id_p (b->frame_id))
     {
       annotate_field (6);
       uiout->text ("\tstop only in stack frame at ");
       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
-         the frame ID.  */
+	 the frame ID.  */
       uiout->field_core_addr ("frame",
 			      b->gdbarch, b->frame_id.stack_addr);
       uiout->text ("\n");
@@ -6134,7 +6769,7 @@ print_one_breakpoint_location (struct br
 	uiout->text ("\ttrace only if ");
       else
 	uiout->text ("\tstop only if ");
-      uiout->field_string ("cond", b->cond_string);
+      uiout->field_string ("cond", b->cond_string.get ());
 
       /* Print whether the target is doing the breakpoint's condition
 	 evaluation.  If GDB is doing the evaluation, don't print anything.  */
@@ -6163,7 +6798,21 @@ print_one_breakpoint_location (struct br
 	}
       uiout->text ("\n");
     }
-  
+
+  if (!part_of_multiple && b->task != -1)
+    {
+      uiout->text ("\tstop only in task ");
+      uiout->field_signed ("task", b->task);
+      uiout->text ("\n");
+    }
+
+  if (!part_of_multiple && b->inferior != -1)
+    {
+      uiout->text ("\tstop only in inferior ");
+      uiout->field_signed ("inferior", b->inferior);
+      uiout->text ("\n");
+    }
+
   if (!part_of_multiple)
     {
       if (b->hit_count)
@@ -6216,7 +6865,7 @@ print_one_breakpoint_location (struct br
 
   if (!part_of_multiple && is_tracepoint (b))
     {
-      struct tracepoint *tp = (struct tracepoint *) b;
+      tracepoint *tp = gdb::checked_static_cast<tracepoint *> (b);
 
       if (tp->traceframe_usage)
 	{
@@ -6230,13 +6879,25 @@ print_one_breakpoint_location (struct br
   if (!part_of_multiple && l)
     {
       annotate_field (9);
-      ui_out_emit_tuple tuple_emitter (uiout, "script");
+
+      bool use_fixed_output =
+	(uiout->test_flags (fix_breakpoint_script_output)
+	 || fix_breakpoint_script_output_globally);
+
+      std::optional<ui_out_emit_tuple> tuple_emitter;
+      std::optional<ui_out_emit_list> list_emitter;
+
+      if (use_fixed_output)
+	list_emitter.emplace (uiout, "script");
+      else
+	tuple_emitter.emplace (uiout, "script");
+
       print_command_lines (uiout, l, 4);
     }
 
   if (is_tracepoint (b))
     {
-      struct tracepoint *t = (struct tracepoint *) b;
+      tracepoint *t = gdb::checked_static_cast<tracepoint *> (b);
 
       if (!part_of_multiple && t->pass_count)
 	{
@@ -6270,15 +6931,19 @@ print_one_breakpoint_location (struct br
     {
       if (is_watchpoint (b))
 	{
-	  struct watchpoint *w = (struct watchpoint *) b;
+	  watchpoint *w = gdb::checked_static_cast<watchpoint *> (b);
 
-	  uiout->field_string ("original-location", w->exp_string);
+	  uiout->field_string ("original-location", w->exp_string.get ());
+	}
+      else if (b->locspec != nullptr)
+	{
+	  const char *str = b->locspec->to_string ();
+	  if (str != nullptr)
+	    uiout->field_string ("original-location", str);
 	}
-      else if (b->location != NULL
-	       && event_location_to_string (b->location.get ()) != NULL)
-	uiout->field_string ("original-location",
-			     event_location_to_string (b->location.get ()));
     }
+
+  return result;
 }
 
 /* See breakpoint.h. */
@@ -6286,17 +6951,17 @@ print_one_breakpoint_location (struct br
 bool fix_multi_location_breakpoint_output_globally = false;
 
 static void
-print_one_breakpoint (struct breakpoint *b,
-		      struct bp_location **last_loc, 
-		      int allflag)
+print_one_breakpoint (breakpoint *b, const bp_location **last_loc, int allflag)
 {
   struct ui_out *uiout = current_uiout;
   bool use_fixed_output
     = (uiout->test_flags (fix_multi_location_breakpoint_output)
        || fix_multi_location_breakpoint_output_globally);
 
-  gdb::optional<ui_out_emit_tuple> bkpt_tuple_emitter (gdb::in_place, uiout, "bkpt");
-  print_one_breakpoint_location (b, NULL, 0, last_loc, allflag, false);
+  std::optional<ui_out_emit_tuple> bkpt_tuple_emitter (std::in_place, uiout,
+						       "bkpt");
+  bool printed = print_one_breakpoint_location (b, NULL, 0, last_loc,
+						allflag, false);
 
   /* The mi2 broken format: the main breakpoint tuple ends here, the locations
      are outside.  */
@@ -6306,9 +6971,7 @@ print_one_breakpoint (struct breakpoint
   /* If this breakpoint has custom print function,
      it's already printed.  Otherwise, print individual
      locations, if any.  */
-  if (b->ops == NULL
-      || b->ops->print_one == NULL
-      || allflag)
+  if (!printed || allflag)
     {
       /* If breakpoint has a single location that is disabled, we
 	 print it as if it had several locations, since otherwise it's
@@ -6326,9 +6989,12 @@ print_one_breakpoint (struct breakpoint
 	  && (!is_catchpoint (b) || is_exception_catchpoint (b)
 	      || is_ada_exception_catchpoint (b))
 	  && (allflag
-	      || (b->loc && (b->loc->next || !b->loc->enabled))))
+	      || (b->has_locations ()
+		  && (b->has_multiple_locations ()
+		      || !b->first_loc ().enabled
+		      || b->first_loc ().disabled_by_cond))))
 	{
-	  gdb::optional<ui_out_emit_list> locations_list;
+	  std::optional<ui_out_emit_list> locations_list;
 
 	  /* For MI version <= 2, keep the behavior where GDB outputs an invalid
 	     MI record.  For later versions, place breakpoint locations in a
@@ -6337,11 +7003,12 @@ print_one_breakpoint (struct breakpoint
 	    locations_list.emplace (uiout, "locations");
 
 	  int n = 1;
-	  for (bp_location *loc = b->loc; loc != NULL; loc = loc->next, ++n)
+	  for (bp_location &loc : b->locations ())
 	    {
 	      ui_out_emit_tuple loc_tuple_emitter (uiout, NULL);
-	      print_one_breakpoint_location (b, loc, n, last_loc,
+	      print_one_breakpoint_location (b, &loc, n, last_loc,
 					     allflag, allflag);
+	      n++;
 	    }
 	}
     }
@@ -6351,18 +7018,13 @@ static int
 breakpoint_address_bits (struct breakpoint *b)
 {
   int print_address_bits = 0;
-  struct bp_location *loc;
-
-  /* Software watchpoints that aren't watching memory don't have an
-     address to print.  */
-  if (is_no_memory_software_watchpoint (b))
-    return 0;
 
-  for (loc = b->loc; loc; loc = loc->next)
+  for (bp_location &loc : b->locations ())
     {
-      int addr_bit;
+      if (!bl_address_is_meaningful (&loc))
+	continue;
 
-      addr_bit = gdbarch_addr_bit (loc->gdbarch);
+      int addr_bit = gdbarch_addr_bit (loc.gdbarch);
       if (addr_bit > print_address_bits)
 	print_address_bits = addr_bit;
     }
@@ -6375,7 +7037,7 @@ breakpoint_address_bits (struct breakpoi
 void
 print_breakpoint (breakpoint *b)
 {
-  struct bp_location *dummy_loc = NULL;
+  const bp_location *dummy_loc = nullptr;
   print_one_breakpoint (b, &dummy_loc, 0);
 }
 
@@ -6383,7 +7045,7 @@ print_breakpoint (breakpoint *b)
    internal or momentary.  */
 
 int
-user_breakpoint_p (struct breakpoint *b)
+user_breakpoint_p (const breakpoint *b)
 {
   return b->number > 0;
 }
@@ -6391,9 +7053,9 @@ user_breakpoint_p (struct breakpoint *b)
 /* See breakpoint.h.  */
 
 int
-pending_breakpoint_p (struct breakpoint *b)
+pending_breakpoint_p (const breakpoint *b)
 {
-  return b->loc == NULL;
+  return !b->has_locations ();
 }
 
 /* Print information on breakpoints (including watchpoints and tracepoints).
@@ -6413,44 +7075,44 @@ static int
 breakpoint_1 (const char *bp_num_list, bool show_internal,
 	      bool (*filter) (const struct breakpoint *))
 {
-  struct breakpoint *b;
-  struct bp_location *last_loc = NULL;
+  const bp_location *last_loc = nullptr;
   int nr_printable_breakpoints;
   struct value_print_options opts;
   int print_address_bits = 0;
   int print_type_col_width = 14;
   struct ui_out *uiout = current_uiout;
+  bool has_disabled_by_cond_location = false;
 
   get_user_print_options (&opts);
 
   /* Compute the number of rows in the table, as well as the size
      required for address fields.  */
   nr_printable_breakpoints = 0;
-  ALL_BREAKPOINTS (b)
+  for (breakpoint &b : all_breakpoints ())
     {
       /* If we have a filter, only list the breakpoints it accepts.  */
-      if (filter && !filter (b))
+      if (filter && !filter (&b))
 	continue;
 
       /* If we have a BP_NUM_LIST string, it is a list of breakpoints to
 	 accept.  Skip the others.  */
       if (bp_num_list != NULL && *bp_num_list != '\0')
 	{
-	  if (show_internal && parse_and_eval_long (bp_num_list) != b->number)
+	  if (show_internal && parse_and_eval_long (bp_num_list) != b.number)
 	    continue;
-	  if (!show_internal && !number_is_in_list (bp_num_list, b->number))
+	  if (!show_internal && !number_is_in_list (bp_num_list, b.number))
 	    continue;
 	}
 
-      if (show_internal || user_breakpoint_p (b))
+      if (show_internal || user_breakpoint_p (&b))
 	{
 	  int addr_bit, type_len;
 
-	  addr_bit = breakpoint_address_bits (b);
+	  addr_bit = breakpoint_address_bits (&b);
 	  if (addr_bit > print_address_bits)
 	    print_address_bits = addr_bit;
 
-	  type_len = strlen (bptype_string (b->type));
+	  type_len = strlen (bptype_string (b.type));
 	  if (type_len > print_type_col_width)
 	    print_type_col_width = type_len;
 
@@ -6494,11 +7156,11 @@ breakpoint_1 (const char *bp_num_list, b
     if (nr_printable_breakpoints > 0)
       annotate_breakpoints_table ();
 
-    ALL_BREAKPOINTS (b)
+    for (breakpoint &b : all_breakpoints ())
       {
 	QUIT;
 	/* If we have a filter, only list the breakpoints it accepts.  */
-	if (filter && !filter (b))
+	if (filter && !filter (&b))
 	  continue;
 
 	/* If we have a BP_NUM_LIST string, it is a list of breakpoints to
@@ -6508,19 +7170,24 @@ breakpoint_1 (const char *bp_num_list, b
 	  {
 	    if (show_internal)	/* maintenance info breakpoint */
 	      {
-		if (parse_and_eval_long (bp_num_list) != b->number)
+		if (parse_and_eval_long (bp_num_list) != b.number)
 		  continue;
 	      }
 	    else		/* all others */
 	      {
-		if (!number_is_in_list (bp_num_list, b->number))
+		if (!number_is_in_list (bp_num_list, b.number))
 		  continue;
 	      }
 	  }
 	/* We only print out user settable breakpoints unless the
 	   show_internal is set.  */
-	if (show_internal || user_breakpoint_p (b))
-	  print_one_breakpoint (b, &last_loc, show_internal);
+	if (show_internal || user_breakpoint_p (&b))
+	  {
+	    print_one_breakpoint (&b, &last_loc, show_internal);
+	    for (bp_location &loc : b.locations ())
+	      if (loc.disabled_by_cond)
+		has_disabled_by_cond_location = true;
+	  }
       }
   }
 
@@ -6531,16 +7198,21 @@ breakpoint_1 (const char *bp_num_list, b
       if (!filter)
 	{
 	  if (bp_num_list == NULL || *bp_num_list == '\0')
-	    uiout->message ("No breakpoints or watchpoints.\n");
+	    uiout->message ("No breakpoints, watchpoints, tracepoints, "
+			    "or catchpoints.\n");
 	  else
-	    uiout->message ("No breakpoint or watchpoint matching '%s'.\n",
-			    bp_num_list);
+	    uiout->message ("No breakpoint, watchpoint, tracepoint, "
+			    "or catchpoint matching '%s'.\n", bp_num_list);
 	}
     }
   else
     {
       if (last_loc && !server_command)
 	set_next_address (last_loc->gdbarch, last_loc->address);
+
+      if (has_disabled_by_cond_location && !uiout->is_mi_like_p ())
+	uiout->message (_("(*): Breakpoint condition is invalid at this "
+			  "location.\n"));
     }
 
   /* FIXME?  Should this be moved up so that it is only called when
@@ -6561,7 +7233,7 @@ default_collect_info (void)
   /* If it has no value (which is frequently the case), say nothing; a
      message like "No default-collect." gets in user's face when it's
      not wanted.  */
-  if (!*default_collect)
+  if (default_collect.empty ())
     return;
 
   /* The following phrase lines up nicely with per-tracepoint collect
@@ -6602,60 +7274,62 @@ maintenance_info_breakpoints (const char
   default_collect_info ();
 }
 
-static int
+static bool
 breakpoint_has_pc (struct breakpoint *b,
 		   struct program_space *pspace,
 		   CORE_ADDR pc, struct obj_section *section)
 {
-  struct bp_location *bl = b->loc;
-
-  for (; bl; bl = bl->next)
+  for (bp_location &bl : b->locations ())
     {
-      if (bl->pspace == pspace
-	  && bl->address == pc
-	  && (!overlay_debugging || bl->section == section))
-	return 1;	  
+      if (bl.pspace == pspace
+	  && bl.address == pc
+	  && (!overlay_debugging || bl.section == section))
+	return true;
     }
-  return 0;
+  return false;
 }
 
-/* Print a message describing any user-breakpoints set at PC.  This
-   concerns with logical breakpoints, so we match program spaces, not
-   address spaces.  */
+/* See breakpoint.h.  */
 
-static void
+void
 describe_other_breakpoints (struct gdbarch *gdbarch,
 			    struct program_space *pspace, CORE_ADDR pc,
 			    struct obj_section *section, int thread)
 {
   int others = 0;
-  struct breakpoint *b;
 
-  ALL_BREAKPOINTS (b)
-    others += (user_breakpoint_p (b)
-               && breakpoint_has_pc (b, pspace, pc, section));
+  for (breakpoint &b : all_breakpoints ())
+    others += (user_breakpoint_p (&b)
+	       && breakpoint_has_pc (&b, pspace, pc, section));
+
   if (others > 0)
     {
       if (others == 1)
-	printf_filtered (_("Note: breakpoint "));
+	gdb_printf (_("Note: breakpoint "));
       else /* if (others == ???) */
-	printf_filtered (_("Note: breakpoints "));
-      ALL_BREAKPOINTS (b)
-	if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
+	gdb_printf (_("Note: breakpoints "));
+      for (breakpoint &b : all_breakpoints ())
+	if (user_breakpoint_p (&b)
+	    && breakpoint_has_pc (&b, pspace, pc, section))
 	  {
 	    others--;
-	    printf_filtered ("%d", b->number);
-	    if (b->thread == -1 && thread != -1)
-	      printf_filtered (" (all threads)");
-	    else if (b->thread != -1)
-	      printf_filtered (" (thread %d)", b->thread);
-	    printf_filtered ("%s%s ",
-			     ((b->enable_state == bp_disabled
-			       || b->enable_state == bp_call_disabled)
-			      ? " (disabled)"
-			      : ""),
-			     (others > 1) ? "," 
-			     : ((others == 1) ? " and" : ""));
+	    gdb_printf ("%d", b.number);
+	    if (b.thread == -1 && thread != -1)
+	      gdb_printf (" (all threads)");
+	    else if (b.thread != -1)
+	      {
+		struct thread_info *thr = find_thread_global_id (b.thread);
+		gdb_printf (" (thread %s)", print_thread_id (thr));
+	      }
+	    else if (b.task != -1)
+	      gdb_printf (" (task %d)", b.task);
+	    gdb_printf ("%s%s ",
+			((b.enable_state == bp_disabled
+			  || b.enable_state == bp_call_disabled)
+			 ? " (disabled)"
+			 : ""),
+			(others > 1) ? "," 
+			: ((others == 1) ? " and" : ""));
 	  }
       current_uiout->message (_("also set at pc %ps.\n"),
 			      styled_string (address_style.style (),
@@ -6676,7 +7350,7 @@ describe_other_breakpoints (struct gdbar
    zero.  */
 
 static bool
-bl_address_is_meaningful (bp_location *loc)
+bl_address_is_meaningful (const bp_location *loc)
 {
   return loc->loc_type != bp_loc_other;
 }
@@ -6684,12 +7358,12 @@ bl_address_is_meaningful (bp_location *l
 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
    true if LOC1 and LOC2 represent the same watchpoint location.  */
 
-static int
-watchpoint_locations_match (struct bp_location *loc1, 
-			    struct bp_location *loc2)
+static bool
+watchpoint_locations_match (const struct bp_location *loc1,
+			    const struct bp_location *loc2)
 {
-  struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
-  struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
+  watchpoint *w1 = gdb::checked_static_cast<watchpoint *> (loc1->owner);
+  watchpoint *w2 = gdb::checked_static_cast<watchpoint *> (loc2->owner);
 
   /* Both of them must exist.  */
   gdb_assert (w1 != NULL);
@@ -6711,7 +7385,7 @@ watchpoint_locations_match (struct bp_lo
 						    loc2->length,
 						    loc2->watchpoint_type,
 						    w2->cond_exp.get ())))
-    return 0;
+    return false;
 
   /* Note that this checks the owner's type, not the location's.  In
      case the target does not support read watchpoints, but does
@@ -6731,7 +7405,7 @@ int
 breakpoint_address_match (const address_space *aspace1, CORE_ADDR addr1,
 			  const address_space *aspace2, CORE_ADDR addr2)
 {
-  return ((gdbarch_has_global_breakpoints (target_gdbarch ())
+  return ((gdbarch_has_global_breakpoints (current_inferior ()->arch ())
 	   || aspace1 == aspace2)
 	  && addr1 == addr2);
 }
@@ -6741,13 +7415,13 @@ breakpoint_address_match (const address_
    matches ASPACE2.  On targets that have global breakpoints, the address
    space doesn't really matter.  */
 
-static int
+static bool
 breakpoint_address_match_range (const address_space *aspace1,
 				CORE_ADDR addr1,
 				int len1, const address_space *aspace2,
 				CORE_ADDR addr2)
 {
-  return ((gdbarch_has_global_breakpoints (target_gdbarch ())
+  return ((gdbarch_has_global_breakpoints (current_inferior ()->arch ())
 	   || aspace1 == aspace2)
 	  && addr2 >= addr1 && addr2 < addr1 + len1);
 }
@@ -6757,15 +7431,15 @@ breakpoint_address_match_range (const ad
    matches the breakpoint's address space.  On targets that have global
    breakpoints, the address space doesn't really matter.  */
 
-static int
+static bool
 breakpoint_location_address_match (struct bp_location *bl,
 				   const address_space *aspace,
 				   CORE_ADDR addr)
 {
-  return (breakpoint_address_match (bl->pspace->aspace, bl->address,
+  return (breakpoint_address_match (bl->pspace->aspace.get (), bl->address,
 				    aspace, addr)
 	  || (bl->length
-	      && breakpoint_address_match_range (bl->pspace->aspace,
+	      && breakpoint_address_match_range (bl->pspace->aspace.get (),
 						 bl->address, bl->length,
 						 aspace, addr)));
 }
@@ -6776,13 +7450,13 @@ breakpoint_location_address_match (struc
    space.  On targets that have global breakpoints, the address space
    doesn't really matter.  */
 
-static int
+static bool
 breakpoint_location_address_range_overlap (struct bp_location *bl,
 					   const address_space *aspace,
 					   CORE_ADDR addr, int len)
 {
-  if (gdbarch_has_global_breakpoints (target_gdbarch ())
-      || bl->pspace->aspace == aspace)
+  if (gdbarch_has_global_breakpoints (current_inferior ()->arch ())
+      || bl->pspace->aspace.get () == aspace)
     {
       int bl_len = bl->length != 0 ? bl->length : 1;
 
@@ -6796,9 +7470,9 @@ breakpoint_location_address_range_overla
    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
    true, otherwise returns false.  */
 
-static int
-tracepoint_locations_match (struct bp_location *loc1,
-			    struct bp_location *loc2)
+static bool
+tracepoint_locations_match (const struct bp_location *loc1,
+			    const struct bp_location *loc2)
 {
   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
     /* Since tracepoint locations are never duplicated with others', tracepoint
@@ -6806,16 +7480,19 @@ tracepoint_locations_match (struct bp_lo
        different locations.  */
     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
   else
-    return 0;
+    return false;
 }
 
 /* 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)
+static bool
+breakpoint_locations_match (const struct bp_location *loc1,
+			    const struct bp_location *loc2,
+			    bool sw_hw_bps_match)
 {
   int hw_point1, hw_point2;
 
@@ -6827,21 +7504,26 @@ breakpoint_locations_match (struct bp_lo
   hw_point2 = is_hardware_watchpoint (loc2->owner);
 
   if (hw_point1 != hw_point2)
-    return 0;
+    return false;
   else if (hw_point1)
     return watchpoint_locations_match (loc1, loc2);
   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.  */
-    return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
-				     loc2->pspace->aspace, loc2->address)
+    /* We compare bp_location.length in order to cover ranged
+       breakpoints.  Keep this in sync with
+       bp_location_ptr_is_less_than.  */
+    return (breakpoint_address_match (loc1->pspace->aspace.get (),
+				      loc1->address,
+				      loc2->pspace->aspace.get (),
+				      loc2->address)
+	    && (loc1->loc_type == loc2->loc_type || sw_hw_bps_match)
 	    && loc1->length == loc2->length);
 }
 
 static void
 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
-                               int bnum, int have_bnum)
+			       int bnum, bool have_bnum)
 {
   /* The longest string possibly returned by hex_string_custom
      is 50 chars.  These must be at least that big for safety.  */
@@ -6852,7 +7534,7 @@ breakpoint_adjustment_warning (CORE_ADDR
   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
   if (have_bnum)
     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
-             bnum, astr1, astr2);
+	     bnum, astr1, astr2);
   else
     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
 }
@@ -6864,8 +7546,11 @@ breakpoint_adjustment_warning (CORE_ADDR
 
 static CORE_ADDR
 adjust_breakpoint_address (struct gdbarch *gdbarch,
-			   CORE_ADDR bpaddr, enum bptype bptype)
+			   CORE_ADDR bpaddr, enum bptype bptype,
+			   struct program_space *pspace)
 {
+  gdb_assert (pspace != nullptr);
+
   if (bptype == bp_watchpoint
       || bptype == bp_hardware_watchpoint
       || bptype == bp_read_watchpoint
@@ -6873,7 +7558,7 @@ adjust_breakpoint_address (struct gdbarc
       || bptype == bp_catchpoint)
     {
       /* Watchpoints and the various bp_catch_* eventpoints should not
-         have their addresses modified.  */
+	 have their addresses modified.  */
       return bpaddr;
     }
   else if (bptype == bp_single_step)
@@ -6890,20 +7575,28 @@ adjust_breakpoint_address (struct gdbarc
     {
       CORE_ADDR adjusted_bpaddr = bpaddr;
 
+      /* Some targets have architectural constraints on the placement
+	 of breakpoint instructions.  Obtain the adjusted address.  */
       if (gdbarch_adjust_breakpoint_address_p (gdbarch))
 	{
-	  /* Some targets have architectural constraints on the placement
-	     of breakpoint instructions.  Obtain the adjusted address.  */
-	  adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
+	  /* Targets that implement this adjustment function will likely
+	     inspect either the symbol table, target memory at BPADDR, or
+	     even state registers, so ensure a suitable thread (and its
+	     associated program space) are currently selected.  */
+	  scoped_restore_current_pspace_and_thread restore_pspace_thread;
+	  switch_to_program_space_and_thread (pspace);
+	  adjusted_bpaddr
+	    = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
 	}
 
-      adjusted_bpaddr = address_significant (gdbarch, adjusted_bpaddr);
+      adjusted_bpaddr
+	= gdbarch_remove_non_address_bits_breakpoint (gdbarch, adjusted_bpaddr);
 
       /* An adjusted breakpoint address can significantly alter
-         a user's expectations.  Print a warning if an adjustment
+	 a user's expectations.  Print a warning if an adjustment
 	 is required.  */
       if (adjusted_bpaddr != bpaddr)
-	breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
+	breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, false);
 
       return adjusted_bpaddr;
     }
@@ -6939,20 +7632,29 @@ bp_location_from_bp_type (bptype type)
     case bp_gnu_ifunc_resolver_return:
     case bp_dprintf:
       return bp_loc_software_breakpoint;
+
     case bp_hardware_breakpoint:
       return bp_loc_hardware_breakpoint;
+
     case bp_hardware_watchpoint:
     case bp_read_watchpoint:
     case bp_access_watchpoint:
       return bp_loc_hardware_watchpoint;
+
     case bp_watchpoint:
-    case bp_catchpoint:
+      return bp_loc_software_watchpoint;
+
     case bp_tracepoint:
     case bp_fast_tracepoint:
     case bp_static_tracepoint:
+    case bp_static_marker_tracepoint:
+      return bp_loc_tracepoint;
+
+    case bp_catchpoint:
       return bp_loc_other;
+
     default:
-      internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
+      internal_error (_("unknown breakpoint type"));
     }
 }
 
@@ -6962,6 +7664,7 @@ bp_location::bp_location (breakpoint *ow
   this->cond_bytecode = NULL;
   this->shlib_disabled = 0;
   this->enabled = 1;
+  this->disabled_by_cond = false;
 
   this->loc_type = type;
 
@@ -6969,7 +7672,7 @@ bp_location::bp_location (breakpoint *ow
       || this->loc_type == bp_loc_hardware_breakpoint)
     mark_breakpoint_location_modified (this);
 
-  this->refc = 1;
+  incref ();
 }
 
 bp_location::bp_location (breakpoint *owner)
@@ -6978,26 +7681,15 @@ bp_location::bp_location (breakpoint *ow
 {
 }
 
-/* Allocate a struct bp_location.  */
-
-static struct bp_location *
-allocate_bp_location (struct breakpoint *bpt)
-{
-  return bpt->ops->allocate_location (bpt);
-}
-
-static void
-free_bp_location (struct bp_location *loc)
-{
-  delete loc;
-}
-
-/* Increment reference count.  */
+/* See breakpoint.h.  */
 
-static void
-incref_bp_location (struct bp_location *bl)
+std::string
+bp_location::to_string () const
 {
-  ++bl->refc;
+  string_file stb;
+  ui_out_redirect_pop redir (current_uiout, &stb);
+  print_breakpoint_location (this->owner, this);
+  return stb.release ();
 }
 
 /* Decrement reference count.  If the reference count reaches 0,
@@ -7006,10 +7698,7 @@ incref_bp_location (struct bp_location *
 static void
 decref_bp_location (struct bp_location **blp)
 {
-  gdb_assert ((*blp)->refc > 0);
-
-  if (--(*blp)->refc == 0)
-    free_bp_location (*blp);
+  bp_location_ref_policy::decref (*blp);
   *blp = NULL;
 }
 
@@ -7018,55 +7707,12 @@ decref_bp_location (struct bp_location *
 static breakpoint *
 add_to_breakpoint_chain (std::unique_ptr<breakpoint> &&b)
 {
-  struct breakpoint *b1;
-  struct breakpoint *result = b.get ();
-
   /* Add this breakpoint to the end of the chain so that a list of
      breakpoints will come out in order of increasing numbers.  */
 
-  b1 = breakpoint_chain;
-  if (b1 == 0)
-    breakpoint_chain = b.release ();
-  else
-    {
-      while (b1->next)
-	b1 = b1->next;
-      b1->next = b.release ();
-    }
+  breakpoint_chain.push_back (*b.release ());
 
-  return result;
-}
-
-/* Initializes breakpoint B with type BPTYPE and no locations yet.  */
-
-static void
-init_raw_breakpoint_without_location (struct breakpoint *b,
-				      struct gdbarch *gdbarch,
-				      enum bptype bptype,
-				      const struct breakpoint_ops *ops)
-{
-  gdb_assert (ops != NULL);
-
-  b->ops = ops;
-  b->type = bptype;
-  b->gdbarch = gdbarch;
-  b->language = current_language->la_language;
-  b->input_radix = input_radix;
-  b->related_breakpoint = b;
-}
-
-/* Helper to set_raw_breakpoint below.  Creates a breakpoint
-   that has type BPTYPE and has no locations as yet.  */
-
-static struct breakpoint *
-set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
-				     enum bptype bptype,
-				     const struct breakpoint_ops *ops)
-{
-  std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
-
-  init_raw_breakpoint_without_location (b.get (), gdbarch, bptype, ops);
-  return add_to_breakpoint_chain (std::move (b));
+  return &breakpoint_chain.back ();
 }
 
 /* Initialize loc->function_name.  */
@@ -7083,21 +7729,22 @@ set_breakpoint_location_function (struct
       const char *function_name;
 
       if (loc->msymbol != NULL
-	  && (MSYMBOL_TYPE (loc->msymbol) == mst_text_gnu_ifunc
-	      || MSYMBOL_TYPE (loc->msymbol) == mst_data_gnu_ifunc))
+	  && (loc->msymbol->type () == mst_text_gnu_ifunc
+	      || loc->msymbol->type () == mst_data_gnu_ifunc))
 	{
 	  struct breakpoint *b = loc->owner;
 
 	  function_name = loc->msymbol->linkage_name ();
 
-	  if (b->type == bp_breakpoint && b->loc == loc
-	      && loc->next == NULL && b->related_breakpoint == b)
+	  if (b->type == bp_breakpoint
+	      && b->has_single_location ()
+	      && b->related_breakpoint == b)
 	    {
 	      /* Create only the whole new breakpoint of this type but do not
 		 mess more complicated breakpoints with multiple locations.  */
 	      b->type = bp_gnu_ifunc_resolver;
 	      /* Remember the resolver's address for use by the return
-	         breakpoint.  */
+		 breakpoint.  */
 	      loc->related_address = loc->address;
 	    }
 	}
@@ -7105,7 +7752,7 @@ set_breakpoint_location_function (struct
 	find_pc_partial_function (loc->address, &function_name, NULL, NULL);
 
       if (function_name)
-	loc->function_name = xstrdup (function_name);
+	loc->function_name = make_unique_xstrdup (function_name);
     }
 }
 
@@ -7114,66 +7761,13 @@ 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 sal.symtab->compunit ()->objfile ()->arch ();
 
   return NULL;
 }
 
-/* Low level routine for partially initializing a breakpoint of type
-   BPTYPE.  The newly created breakpoint's address, section, source
-   file name, and line number are provided by SAL.
-
-   It is expected that the caller will complete the initialization of
-   the newly created breakpoint struct as well as output any status
-   information regarding the creation of a new breakpoint.  */
-
-static void
-init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
-		     struct symtab_and_line sal, enum bptype bptype,
-		     const struct breakpoint_ops *ops)
-{
-  init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
-
-  add_location_to_breakpoint (b, &sal);
-
-  if (bptype != bp_catchpoint)
-    gdb_assert (sal.pspace != NULL);
-
-  /* Store the program space that was used to set the breakpoint,
-     except for ordinary breakpoints, which are independent of the
-     program space.  */
-  if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
-    b->pspace = sal.pspace;
-}
-
-/* set_raw_breakpoint is a low level routine for allocating and
-   partially initializing a breakpoint of type BPTYPE.  The newly
-   created breakpoint's address, section, source file name, and line
-   number are provided by SAL.  The newly created and partially
-   initialized breakpoint is added to the breakpoint chain and
-   is also returned as the value of this function.
-
-   It is expected that the caller will complete the initialization of
-   the newly created breakpoint struct as well as output any status
-   information regarding the creation of a new breakpoint.  In
-   particular, set_raw_breakpoint does NOT set the breakpoint
-   number!  Care should be taken to not allow an error to occur
-   prior to completing the initialization of the breakpoint.  If this
-   should happen, a bogus breakpoint will be left on the chain.  */
-
-struct breakpoint *
-set_raw_breakpoint (struct gdbarch *gdbarch,
-		    struct symtab_and_line sal, enum bptype bptype,
-		    const struct breakpoint_ops *ops)
-{
-  std::unique_ptr<breakpoint> b = new_breakpoint_from_type (bptype);
-
-  init_raw_breakpoint (b.get (), gdbarch, sal, bptype, ops);
-  return add_to_breakpoint_chain (std::move (b));
-}
-
 /* Call this routine when stepping and nexting to enable a breakpoint
    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
    initiated the operation.  */
@@ -7181,26 +7775,21 @@ set_raw_breakpoint (struct gdbarch *gdba
 void
 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
 {
-  struct breakpoint *b, *b_tmp;
   int thread = tp->global_num;
 
   /* To avoid having to rescan all objfile symbols at every step,
      we maintain a list of continually-inserted but always disabled
      longjmp "master" breakpoints.  Here, we simply create momentary
      clones of those and enable them for the requested thread.  */
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->pspace == current_program_space
-	&& (b->type == bp_longjmp_master
-	    || b->type == bp_exception_master))
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.pspace == current_program_space
+	&& (b.type == bp_longjmp_master
+	    || b.type == bp_exception_master))
       {
-	enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
-	struct breakpoint *clone;
-
+	bptype type = b.type == bp_longjmp_master ? bp_longjmp : bp_exception;
 	/* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
 	   after their removal.  */
-	clone = momentary_breakpoint_from_master (b, type,
-						  &momentary_breakpoint_ops, 1);
-	clone->thread = thread;
+	momentary_breakpoint_from_master (&b, type, 1, thread);
       }
 
   tp->initiating_frame = frame;
@@ -7210,26 +7799,28 @@ set_longjmp_breakpoint (struct thread_in
 void
 delete_longjmp_breakpoint (int thread)
 {
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->type == bp_longjmp || b->type == bp_exception)
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.type == bp_longjmp || b.type == bp_exception)
       {
-	if (b->thread == thread)
-	  delete_breakpoint (b);
+	if (b.thread == thread)
+	  {
+	    gdb_assert (b.inferior == -1);
+	    delete_breakpoint (&b);
+	  }
       }
 }
 
 void
 delete_longjmp_breakpoint_at_next_stop (int thread)
 {
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->type == bp_longjmp || b->type == bp_exception)
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.type == bp_longjmp || b.type == bp_exception)
       {
-	if (b->thread == thread)
-	  b->disposition = disp_del_at_next_stop;
+	if (b.thread == thread)
+	  {
+	    gdb_assert (b.inferior == -1);
+	    b.disposition = disp_del_at_next_stop;
+	  }
       }
 }
 
@@ -7241,17 +7832,15 @@ delete_longjmp_breakpoint_at_next_stop (
 struct breakpoint *
 set_longjmp_breakpoint_for_call_dummy (void)
 {
-  struct breakpoint *b, *retval = NULL;
+  breakpoint *retval = nullptr;
 
-  ALL_BREAKPOINTS (b)
-    if (b->pspace == current_program_space && b->type == bp_longjmp_master)
+  for (breakpoint &b : all_breakpoints ())
+    if (b.pspace == current_program_space && b.type == bp_longjmp_master)
       {
-	struct breakpoint *new_b;
-
-	new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
-						  &momentary_breakpoint_ops,
-						  1);
-	new_b->thread = inferior_thread ()->global_num;
+	int thread = inferior_thread ()->global_num;
+	breakpoint *new_b
+	  = momentary_breakpoint_from_master (&b, bp_longjmp_call_dummy,
+					      1, thread);
 
 	/* Link NEW_B into the chain of RETVAL breakpoints.  */
 
@@ -7271,64 +7860,112 @@ set_longjmp_breakpoint_for_call_dummy (v
    TP.  Remove those which can no longer be found in the current frame
    stack.
 
-   You should call this function only at places where it is safe to currently
-   unwind the whole stack.  Failed stack unwind would discard live dummy
-   frames.  */
+   If the unwind fails then there is not sufficient information to discard
+   dummy frames.  In this case, elide the clean up and the dummy frames will
+   be cleaned up next time this function is called from a location where
+   unwinding is possible.  */
 
 void
 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
 {
-  struct breakpoint *b, *b_tmp;
+  /* We would need to delete breakpoints other than the current one while
+     iterating, so all_breakpoints_safe is not sufficient to make that safe.
+     Save all breakpoints to delete in that set and delete them at the end.  */
+  gdb::unordered_set<breakpoint *> to_delete;
+
+  for (struct breakpoint &b : all_breakpoints ())
+    {
+      if (b.type == bp_longjmp_call_dummy && b.thread == tp->global_num)
+	{
+	  gdb_assert (b.inferior == -1);
+	  struct breakpoint *dummy_b = b.related_breakpoint;
+
+	  /* Find the bp_call_dummy breakpoint in the list of breakpoints
+	     chained off b->related_breakpoint.  */
+	  while (dummy_b != &b && dummy_b->type != bp_call_dummy)
+	    dummy_b = dummy_b->related_breakpoint;
+
+	  /* If there was no bp_call_dummy breakpoint then there's nothing
+	     more to do.  Or, if the dummy frame associated with the
+	     bp_call_dummy is still on the stack then we need to leave this
+	     bp_call_dummy in place.  */
+	  if (dummy_b->type != bp_call_dummy
+	      || frame_find_by_id (dummy_b->frame_id) != NULL)
+	    continue;
 
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
-      {
-	struct breakpoint *dummy_b = b->related_breakpoint;
+	  /* We didn't find the dummy frame on the stack, this could be
+	     because we have longjmp'd to a stack frame that is previous to
+	     the dummy frame, or it could be because the stack unwind is
+	     broken at some point between the longjmp frame and the dummy
+	     frame.
+
+	     Next we figure out why the stack unwind stopped.  If it looks
+	     like the unwind is complete then we assume the dummy frame has
+	     been jumped over, however, if the unwind stopped for an
+	     unexpected reason then we assume the stack unwind is currently
+	     broken, and that we will (eventually) return to the dummy
+	     frame.
+
+	     It might be tempting to consider using frame_id_inner here, but
+	     that is not safe.   There is no guarantee that the stack frames
+	     we are looking at here are even on the same stack as the
+	     original dummy frame, hence frame_id_inner can't be used.  See
+	     the comments on frame_id_inner for more details.  */
+	  bool unwind_finished_unexpectedly = false;
+	  for (frame_info_ptr fi = get_current_frame (); fi != nullptr; )
+	    {
+	      frame_info_ptr prev = get_prev_frame (fi);
+	      if (prev == nullptr)
+		{
+		  /* FI is the last stack frame.  Why did this frame not
+		     unwind further?  */
+		  auto stop_reason = get_frame_unwind_stop_reason (fi);
+		  if (stop_reason != UNWIND_NO_REASON
+		      && stop_reason != UNWIND_OUTERMOST)
+		    unwind_finished_unexpectedly = true;
+		}
+	      fi = prev;
+	    }
+	  if (unwind_finished_unexpectedly)
+	    continue;
 
-	while (dummy_b != b && dummy_b->type != bp_call_dummy)
-	  dummy_b = dummy_b->related_breakpoint;
-	if (dummy_b->type != bp_call_dummy
-	    || frame_find_by_id (dummy_b->frame_id) != NULL)
-	  continue;
-	
-	dummy_frame_discard (dummy_b->frame_id, tp);
+	  dummy_frame_discard (dummy_b->frame_id, tp);
 
-	while (b->related_breakpoint != b)
-	  {
-	    if (b_tmp == b->related_breakpoint)
-	      b_tmp = b->related_breakpoint->next;
-	    delete_breakpoint (b->related_breakpoint);
-	  }
-	delete_breakpoint (b);
-      }
+	  for (breakpoint *related_breakpoint = b.related_breakpoint;
+	       related_breakpoint != &b;
+	       related_breakpoint = related_breakpoint->related_breakpoint)
+	    to_delete.insert (b.related_breakpoint);
+
+	  to_delete.insert (&b);
+	}
+    }
+
+  for (breakpoint *b : to_delete)
+    delete_breakpoint (b);
 }
 
 void
 enable_overlay_breakpoints (void)
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-    if (b->type == bp_overlay_event)
-    {
-      b->enable_state = bp_enabled;
-      update_global_location_list (UGLL_MAY_INSERT);
-      overlay_events_enabled = 1;
-    }
+  for (breakpoint &b : all_breakpoints ())
+    if (b.type == bp_overlay_event)
+      {
+	b.enable_state = bp_enabled;
+	update_global_location_list (UGLL_MAY_INSERT);
+	overlay_events_enabled = 1;
+      }
 }
 
 void
 disable_overlay_breakpoints (void)
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-    if (b->type == bp_overlay_event)
-    {
-      b->enable_state = bp_disabled;
-      update_global_location_list (UGLL_DONT_INSERT);
-      overlay_events_enabled = 0;
-    }
+  for (breakpoint &b : all_breakpoints ())
+    if (b.type == bp_overlay_event)
+      {
+	b.enable_state = bp_disabled;
+	update_global_location_list (UGLL_DONT_INSERT);
+	overlay_events_enabled = 0;
+      }
 }
 
 /* Set an active std::terminate breakpoint for each std::terminate
@@ -7336,14 +7973,12 @@ disable_overlay_breakpoints (void)
 void
 set_std_terminate_breakpoint (void)
 {
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->pspace == current_program_space
-	&& b->type == bp_std_terminate_master)
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.pspace == current_program_space
+	&& b.type == bp_std_terminate_master)
       {
-	momentary_breakpoint_from_master (b, bp_std_terminate,
-					  &momentary_breakpoint_ops, 1);
+	momentary_breakpoint_from_master (&b, bp_std_terminate, 1,
+					  inferior_thread ()->global_num);
       }
 }
 
@@ -7351,11 +7986,9 @@ set_std_terminate_breakpoint (void)
 void
 delete_std_terminate_breakpoint (void)
 {
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->type == bp_std_terminate)
-      delete_breakpoint (b);
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.type == bp_std_terminate)
+      delete_breakpoint (&b);
 }
 
 struct breakpoint *
@@ -7363,12 +7996,11 @@ create_thread_event_breakpoint (struct g
 {
   struct breakpoint *b;
 
-  b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
-				  &internal_breakpoint_ops);
+  b = create_internal_breakpoint (gdbarch, address, bp_thread_event);
 
   b->enable_state = bp_enabled;
-  /* location has to be used or breakpoint_re_set will delete me.  */
-  b->location = new_address_location (b->loc->address, NULL, 0);
+  /* locspec has to be used or breakpoint_re_set will delete me.  */
+  b->locspec = new_address_location_spec (b->first_loc ().address, NULL, 0);
 
   update_global_location_list_nothrow (UGLL_MAY_INSERT);
 
@@ -7386,8 +8018,7 @@ struct lang_and_radix
 struct breakpoint *
 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
 {
-  return create_internal_breakpoint (gdbarch, address, bp_jit_event,
-				     &internal_breakpoint_ops);
+  return create_internal_breakpoint (gdbarch, address, bp_jit_event);
 }
 
 /* Remove JIT code registration and unregistration breakpoint(s).  */
@@ -7395,23 +8026,19 @@ create_jit_event_breakpoint (struct gdba
 void
 remove_jit_event_breakpoints (void)
 {
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->type == bp_jit_event
-	&& b->loc->pspace == current_program_space)
-      delete_breakpoint (b);
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.type == bp_jit_event
+	&& b.first_loc ().pspace == current_program_space)
+      delete_breakpoint (&b);
 }
 
 void
 remove_solib_event_breakpoints (void)
 {
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->type == bp_shlib_event
-	&& b->loc->pspace == current_program_space)
-      delete_breakpoint (b);
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.type == bp_shlib_event
+	&& b.first_loc ().pspace == current_program_space)
+      delete_breakpoint (&b);
 }
 
 /* See breakpoint.h.  */
@@ -7419,12 +8046,10 @@ remove_solib_event_breakpoints (void)
 void
 remove_solib_event_breakpoints_at_next_stop (void)
 {
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    if (b->type == bp_shlib_event
-	&& b->loc->pspace == current_program_space)
-      b->disposition = disp_del_at_next_stop;
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.type == bp_shlib_event
+	&& b.first_loc ().pspace == current_program_space)
+      b.disposition = disp_del_at_next_stop;
 }
 
 /* Helper for create_solib_event_breakpoint /
@@ -7437,8 +8062,7 @@ create_solib_event_breakpoint_1 (struct
 {
   struct breakpoint *b;
 
-  b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
-				  &internal_breakpoint_ops);
+  b = create_internal_breakpoint (gdbarch, address, bp_shlib_event);
   update_global_location_list_nothrow (insert_mode);
   return b;
 }
@@ -7459,7 +8083,7 @@ create_and_insert_solib_event_breakpoint
   /* Explicitly tell update_global_location_list to insert
      locations.  */
   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
-  if (!b->loc->inserted)
+  if (!b->first_loc ().inserted)
     {
       delete_breakpoint (b);
       return NULL;
@@ -7467,82 +8091,75 @@ create_and_insert_solib_event_breakpoint
   return b;
 }
 
-/* Disable any breakpoints that are on code in shared libraries.  Only
-   apply to enabled breakpoints, disabled ones can just stay disabled.  */
+/* Disable any breakpoints and tracepoints that are in SOLIB upon
+   notification of unloaded_shlib.  Only apply to enabled breakpoints,
+   disabled ones can just stay disabled.
 
-void
-disable_breakpoints_in_shlibs (void)
+   When STILL_IN_USE is true, SOLIB hasn't really been unmapped from
+   the inferior.  In this case, don't disable anything.
+
+   When SILENT is false notify the user if any breakpoints are disabled,
+   otherwise, still disable the breakpoints, but don't tell the user.  */
+
+static void
+disable_breakpoints_in_unloaded_shlib (program_space *pspace, const solib &solib,
+				       bool still_in_use, bool silent)
 {
-  struct bp_location *loc, **locp_tmp;
+  if (still_in_use)
+    return;
 
-  ALL_BP_LOCATIONS (loc, locp_tmp)
-  {
-    /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
-    struct breakpoint *b = loc->owner;
+  bool disabled_shlib_breaks = false;
 
-    /* We apply the check to all breakpoints, including disabled for
-       those with loc->duplicate set.  This is so that when breakpoint
-       becomes enabled, or the duplicate is removed, gdb will try to
-       insert all breakpoints.  If we don't set shlib_disabled here,
-       we'll try to insert those breakpoints and fail.  */
-    if (((b->type == bp_breakpoint)
-	 || (b->type == bp_jit_event)
-	 || (b->type == bp_hardware_breakpoint)
-	 || (is_tracepoint (b)))
-	&& loc->pspace == current_program_space
-	&& !loc->shlib_disabled
-	&& solib_name_from_address (loc->pspace, loc->address)
-	)
-      {
-	loc->shlib_disabled = 1;
-      }
-  }
-}
+  for (breakpoint &b : all_breakpoints ())
+    {
+      bool bp_modified = false;
 
-/* Disable any breakpoints and tracepoints that are in SOLIB upon
-   notification of unloaded_shlib.  Only apply to enabled breakpoints,
-   disabled ones can just stay disabled.  */
+      for (bp_location &loc : b.locations ())
+	{
+	  if (pspace != loc.pspace || loc.shlib_disabled)
+	    continue;
 
-static void
-disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
-{
-  struct bp_location *loc, **locp_tmp;
-  int disabled_shlib_breaks = 0;
+	  if (loc.loc_type != bp_loc_hardware_breakpoint
+	      && loc.loc_type != bp_loc_software_breakpoint
+	      && !is_tracepoint (&b))
+	    continue;
 
-  ALL_BP_LOCATIONS (loc, locp_tmp)
-  {
-    /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
-    struct breakpoint *b = loc->owner;
+	  if (!solib_contains_address_p (solib, loc.address))
+	    continue;
 
-    if (solib->pspace == loc->pspace
-	&& !loc->shlib_disabled
-	&& (((b->type == bp_breakpoint
-	      || b->type == bp_jit_event
-	      || b->type == bp_hardware_breakpoint)
-	     && (loc->loc_type == bp_loc_hardware_breakpoint
-		 || loc->loc_type == bp_loc_software_breakpoint))
-	    || is_tracepoint (b))
-	&& solib_contains_address_p (solib, loc->address))
-      {
-	loc->shlib_disabled = 1;
-	/* At this point, we cannot rely on remove_breakpoint
-	   succeeding so we must mark the breakpoint as not inserted
-	   to prevent future errors occurring in remove_breakpoints.  */
-	loc->inserted = 0;
+	  loc.shlib_disabled = 1;
 
-	/* This may cause duplicate notifications for the same breakpoint.  */
-	gdb::observers::breakpoint_modified.notify (b);
+	  /* At this point, we don't know whether the shared library
+	     was unmapped from the inferior or not, so leave the
+	     inserted flag alone.  We'll handle failure to uninsert
+	     quietly, in case the library was indeed unmapped.
+
+	     The test gdb.base/nostdlib.exp when run on AArch64
+	     GNU/Linux using glibc will cause the dynamic linker to be
+	     unloaded from the inferior, but the linker will never be
+	     unmapped.  Additionally, at the time the dynamic linker
+	     is unloaded the inferior will be stopped within the
+	     dynamic linker.
+
+	     If we clear the inserted flag here then GDB will fail to
+	     remove the internal breakpoints from the dynamic linker
+	     leading to unexpected SIGTRAPs.  */
+
+	  bp_modified = true;
+
+	  if (!disabled_shlib_breaks && !silent && user_breakpoint_p (&b))
+	    {
+	      target_terminal::ours_for_output ();
+	      warning (_("Temporarily disabling breakpoints "
+			 "for unloaded shared library \"%s\""),
+		       solib.name.c_str ());
+	      disabled_shlib_breaks = true;
+	    }
+	}
 
-	if (!disabled_shlib_breaks)
-	  {
-	    target_terminal::ours_for_output ();
-	    warning (_("Temporarily disabling breakpoints "
-		       "for unloaded shared library \"%s\""),
-		     solib->so_name);
-	  }
-	disabled_shlib_breaks = 1;
-      }
-  }
+      if (bp_modified)
+	notify_breakpoint_modified (&b);
+    }
 }
 
 /* Disable any breakpoints and tracepoints in OBJFILE upon
@@ -7552,11 +8169,6 @@ disable_breakpoints_in_unloaded_shlib (s
 static void
 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
 {
-  struct breakpoint *b;
-
-  if (objfile == NULL)
-    return;
-
   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
      managed by the user with add-symbol-file/remove-symbol-file.
      Similarly to how breakpoints in shared libraries are handled in
@@ -7572,562 +8184,143 @@ disable_breakpoints_in_freed_objfile (st
       || (objfile->flags & OBJF_USERLOADED) == 0)
     return;
 
-  ALL_BREAKPOINTS (b)
+  for (breakpoint &b : all_breakpoints ())
     {
-      struct bp_location *loc;
-      int bp_modified = 0;
+      bool bp_modified = false;
 
-      if (!is_breakpoint (b) && !is_tracepoint (b))
+      if (!is_breakpoint (&b) && !is_tracepoint (&b))
 	continue;
 
-      for (loc = b->loc; loc != NULL; loc = loc->next)
+      for (bp_location &loc : b.locations ())
 	{
-	  CORE_ADDR loc_addr = loc->address;
+	  CORE_ADDR loc_addr = loc.address;
 
-	  if (loc->loc_type != bp_loc_hardware_breakpoint
-	      && loc->loc_type != bp_loc_software_breakpoint)
+	  if (loc.loc_type != bp_loc_hardware_breakpoint
+	      && loc.loc_type != bp_loc_software_breakpoint)
 	    continue;
 
-	  if (loc->shlib_disabled != 0)
+	  if (loc.shlib_disabled != 0)
 	    continue;
 
-	  if (objfile->pspace != loc->pspace)
-	    continue;
-
-	  if (loc->loc_type != bp_loc_hardware_breakpoint
-	      && loc->loc_type != bp_loc_software_breakpoint)
+	  if (objfile->pspace () != loc.pspace)
 	    continue;
 
 	  if (is_addr_in_objfile (loc_addr, objfile))
 	    {
-	      loc->shlib_disabled = 1;
+	      loc.shlib_disabled = 1;
 	      /* At this point, we don't know whether the object was
 		 unmapped from the inferior or not, so leave the
 		 inserted flag alone.  We'll handle failure to
 		 uninsert quietly, in case the object was indeed
 		 unmapped.  */
 
-	      mark_breakpoint_location_modified (loc);
+	      mark_breakpoint_location_modified (&loc);
 
-	      bp_modified = 1;
+	      bp_modified = true;
 	    }
 	}
 
       if (bp_modified)
-	gdb::observers::breakpoint_modified.notify (b);
-    }
-}
-
-/* FORK & VFORK catchpoints.  */
-
-/* An instance of this type is used to represent a fork or vfork
-   catchpoint.  A breakpoint is really of this type iff its ops pointer points
-   to CATCH_FORK_BREAKPOINT_OPS.  */
-
-struct fork_catchpoint : public breakpoint
-{
-  /* Process id of a child process whose forking triggered this
-     catchpoint.  This field is only valid immediately after this
-     catchpoint has triggered.  */
-  ptid_t forked_inferior_pid;
-};
-
-/* Implement the "insert" breakpoint_ops method for fork
-   catchpoints.  */
-
-static int
-insert_catch_fork (struct bp_location *bl)
-{
-  return target_insert_fork_catchpoint (inferior_ptid.pid ());
-}
-
-/* Implement the "remove" breakpoint_ops method for fork
-   catchpoints.  */
-
-static int
-remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
-{
-  return target_remove_fork_catchpoint (inferior_ptid.pid ());
-}
-
-/* Implement the "breakpoint_hit" breakpoint_ops method for fork
-   catchpoints.  */
-
-static int
-breakpoint_hit_catch_fork (const struct bp_location *bl,
-			   const address_space *aspace, CORE_ADDR bp_addr,
-			   const struct target_waitstatus *ws)
-{
-  struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
-
-  if (ws->kind != TARGET_WAITKIND_FORKED)
-    return 0;
-
-  c->forked_inferior_pid = ws->value.related_pid;
-  return 1;
-}
-
-/* Implement the "print_it" breakpoint_ops method for fork
-   catchpoints.  */
-
-static enum print_stop_action
-print_it_catch_fork (bpstat bs)
-{
-  struct ui_out *uiout = current_uiout;
-  struct breakpoint *b = bs->breakpoint_at;
-  struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
-
-  annotate_catchpoint (b->number);
-  maybe_print_thread_hit_breakpoint (uiout);
-  if (b->disposition == disp_del)
-    uiout->text ("Temporary catchpoint ");
-  else
-    uiout->text ("Catchpoint ");
-  if (uiout->is_mi_like_p ())
-    {
-      uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_FORK));
-      uiout->field_string ("disp", bpdisp_text (b->disposition));
-    }
-  uiout->field_signed ("bkptno", b->number);
-  uiout->text (" (forked process ");
-  uiout->field_signed ("newpid", c->forked_inferior_pid.pid ());
-  uiout->text ("), ");
-  return PRINT_SRC_AND_LOC;
-}
-
-/* Implement the "print_one" breakpoint_ops method for fork
-   catchpoints.  */
-
-static void
-print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
-{
-  struct fork_catchpoint *c = (struct fork_catchpoint *) b;
-  struct value_print_options opts;
-  struct ui_out *uiout = current_uiout;
-
-  get_user_print_options (&opts);
-
-  /* Field 4, the address, is omitted (which makes the columns not
-     line up too nicely with the headers, but the effect is relatively
-     readable).  */
-  if (opts.addressprint)
-    uiout->field_skip ("addr");
-  annotate_field (5);
-  uiout->text ("fork");
-  if (c->forked_inferior_pid != null_ptid)
-    {
-      uiout->text (", process ");
-      uiout->field_signed ("what", c->forked_inferior_pid.pid ());
-      uiout->spaces (1);
-    }
-
-  if (uiout->is_mi_like_p ())
-    uiout->field_string ("catch-type", "fork");
-}
-
-/* Implement the "print_mention" breakpoint_ops method for fork
-   catchpoints.  */
-
-static void
-print_mention_catch_fork (struct breakpoint *b)
-{
-  printf_filtered (_("Catchpoint %d (fork)"), b->number);
-}
-
-/* Implement the "print_recreate" breakpoint_ops method for fork
-   catchpoints.  */
-
-static void
-print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
-{
-  fprintf_unfiltered (fp, "catch fork");
-  print_recreate_thread (b, fp);
-}
-
-/* The breakpoint_ops structure to be used in fork catchpoints.  */
-
-static struct breakpoint_ops catch_fork_breakpoint_ops;
-
-/* Implement the "insert" breakpoint_ops method for vfork
-   catchpoints.  */
-
-static int
-insert_catch_vfork (struct bp_location *bl)
-{
-  return target_insert_vfork_catchpoint (inferior_ptid.pid ());
-}
-
-/* Implement the "remove" breakpoint_ops method for vfork
-   catchpoints.  */
-
-static int
-remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
-{
-  return target_remove_vfork_catchpoint (inferior_ptid.pid ());
-}
-
-/* Implement the "breakpoint_hit" breakpoint_ops method for vfork
-   catchpoints.  */
-
-static int
-breakpoint_hit_catch_vfork (const struct bp_location *bl,
-			    const address_space *aspace, CORE_ADDR bp_addr,
-			    const struct target_waitstatus *ws)
-{
-  struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
-
-  if (ws->kind != TARGET_WAITKIND_VFORKED)
-    return 0;
-
-  c->forked_inferior_pid = ws->value.related_pid;
-  return 1;
-}
-
-/* Implement the "print_it" breakpoint_ops method for vfork
-   catchpoints.  */
-
-static enum print_stop_action
-print_it_catch_vfork (bpstat bs)
-{
-  struct ui_out *uiout = current_uiout;
-  struct breakpoint *b = bs->breakpoint_at;
-  struct fork_catchpoint *c = (struct fork_catchpoint *) b;
-
-  annotate_catchpoint (b->number);
-  maybe_print_thread_hit_breakpoint (uiout);
-  if (b->disposition == disp_del)
-    uiout->text ("Temporary catchpoint ");
-  else
-    uiout->text ("Catchpoint ");
-  if (uiout->is_mi_like_p ())
-    {
-      uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_VFORK));
-      uiout->field_string ("disp", bpdisp_text (b->disposition));
+	notify_breakpoint_modified (&b);
     }
-  uiout->field_signed ("bkptno", b->number);
-  uiout->text (" (vforked process ");
-  uiout->field_signed ("newpid", c->forked_inferior_pid.pid ());
-  uiout->text ("), ");
-  return PRINT_SRC_AND_LOC;
 }
 
-/* Implement the "print_one" breakpoint_ops method for vfork
-   catchpoints.  */
-
-static void
-print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
-{
-  struct fork_catchpoint *c = (struct fork_catchpoint *) b;
-  struct value_print_options opts;
-  struct ui_out *uiout = current_uiout;
-
-  get_user_print_options (&opts);
-  /* Field 4, the address, is omitted (which makes the columns not
-     line up too nicely with the headers, but the effect is relatively
-     readable).  */
-  if (opts.addressprint)
-    uiout->field_skip ("addr");
-  annotate_field (5);
-  uiout->text ("vfork");
-  if (c->forked_inferior_pid != null_ptid)
-    {
-      uiout->text (", process ");
-      uiout->field_signed ("what", c->forked_inferior_pid.pid ());
-      uiout->spaces (1);
-    }
-
-  if (uiout->is_mi_like_p ())
-    uiout->field_string ("catch-type", "vfork");
-}
-
-/* Implement the "print_mention" breakpoint_ops method for vfork
-   catchpoints.  */
+/* See breakpoint.h.  */
 
-static void
-print_mention_catch_vfork (struct breakpoint *b)
+breakpoint::breakpoint (struct gdbarch *gdbarch_, enum bptype bptype,
+			bool temp, const char *cond_string_)
+  : type (bptype),
+    disposition (temp ? disp_del : disp_donttouch),
+    gdbarch (gdbarch_),
+    language (current_language->la_language),
+    input_radix (::input_radix),
+    cond_string (cond_string_ != nullptr
+		 ? make_unique_xstrdup (cond_string_)
+		 : nullptr),
+    related_breakpoint (this)
 {
-  printf_filtered (_("Catchpoint %d (vfork)"), b->number);
 }
 
-/* Implement the "print_recreate" breakpoint_ops method for vfork
-   catchpoints.  */
-
-static void
-print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
-{
-  fprintf_unfiltered (fp, "catch vfork");
-  print_recreate_thread (b, fp);
-}
-
-/* The breakpoint_ops structure to be used in vfork catchpoints.  */
-
-static struct breakpoint_ops catch_vfork_breakpoint_ops;
-
-/* An instance of this type is used to represent an solib catchpoint.
-   A breakpoint is really of this type iff its ops pointer points to
-   CATCH_SOLIB_BREAKPOINT_OPS.  */
+/* See breakpoint.h.  */
 
-struct solib_catchpoint : public breakpoint
+catchpoint::catchpoint (struct gdbarch *gdbarch, bool temp,
+			const char *cond_string)
+  : breakpoint (gdbarch, bp_catchpoint, temp, cond_string)
 {
-  ~solib_catchpoint () override;
-
-  /* True for "catch load", false for "catch unload".  */
-  unsigned char is_load;
+  add_dummy_location (this, current_program_space);
 
-  /* Regular expression to match, if any.  COMPILED is only valid when
-     REGEX is non-NULL.  */
-  char *regex;
-  std::unique_ptr<compiled_regex> compiled;
-};
-
-solib_catchpoint::~solib_catchpoint ()
-{
-  xfree (this->regex);
+  pspace = current_program_space;
 }
 
-static int
-insert_catch_solib (struct bp_location *ignore)
-{
-  return 0;
-}
-
-static int
-remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
-{
-  return 0;
-}
+/* See breakpoint.h.  */
 
-static int
-breakpoint_hit_catch_solib (const struct bp_location *bl,
-			    const address_space *aspace,
-			    CORE_ADDR bp_addr,
-			    const struct target_waitstatus *ws)
+void
+catchpoint::re_set (program_space *filter_pspace)
 {
-  struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
-  struct breakpoint *other;
-
-  if (ws->kind == TARGET_WAITKIND_LOADED)
-    return 1;
-
-  ALL_BREAKPOINTS (other)
-  {
-    struct bp_location *other_bl;
-
-    if (other == bl->owner)
-      continue;
-
-    if (other->type != bp_shlib_event)
-      continue;
+  /* All catchpoints are associated with a specific program_space.  */
+  gdb_assert (pspace != nullptr);
 
-    if (self->pspace != NULL && other->pspace != self->pspace)
-      continue;
-
-    for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
-      {
-	if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
-	  return 1;
-      }
-  }
-
-  return 0;
-}
+  /* If only a single program space changed, and it's not the program space
+     for which this catchpoint applies, then there's nothing to do.  */
+  if (filter_pspace != nullptr && filter_pspace != pspace)
+    return;
 
-static void
-check_status_catch_solib (struct bpstats *bs)
-{
-  struct solib_catchpoint *self
-    = (struct solib_catchpoint *) bs->breakpoint_at;
+  /* Catchpoints have a single dummy location.  */
+  gdb_assert (locations ().size () == 1);
+  bp_location &bl = m_locations.front ();
+
+  if (cond_string == nullptr)
+    {
+      /* It shouldn't be possible to have a parsed condition expression
+	 cached on this location if the catchpoint doesn't have a condition
+	 string set.  */
+      gdb_assert (bl.cond == nullptr);
 
-  if (self->is_load)
-    {
-      for (so_list *iter : current_program_space->added_solibs)
-	{
-	  if (!self->regex
-	      || self->compiled->exec (iter->so_name, 0, NULL, 0) == 0)
-	    return;
-	}
-    }
-  else
-    {
-      for (const std::string &iter : current_program_space->deleted_solibs)
-	{
-	  if (!self->regex
-	      || self->compiled->exec (iter.c_str (), 0, NULL, 0) == 0)
-	    return;
-	}
+      /* Nothing to re-compute, and the catchpoint cannot change.  */
+      return;
     }
 
-  bs->stop = 0;
-  bs->print_it = print_it_noop;
-}
-
-static enum print_stop_action
-print_it_catch_solib (bpstat bs)
-{
-  struct breakpoint *b = bs->breakpoint_at;
-  struct ui_out *uiout = current_uiout;
+  bool previous_disabled_by_cond = bl.disabled_by_cond;
 
-  annotate_catchpoint (b->number);
-  maybe_print_thread_hit_breakpoint (uiout);
-  if (b->disposition == disp_del)
-    uiout->text ("Temporary catchpoint ");
-  else
-    uiout->text ("Catchpoint ");
-  uiout->field_signed ("bkptno", b->number);
-  uiout->text ("\n");
-  if (uiout->is_mi_like_p ())
-    uiout->field_string ("disp", bpdisp_text (b->disposition));
-  print_solib_event (1);
-  return PRINT_SRC_AND_LOC;
-}
-
-static void
-print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
-{
-  struct solib_catchpoint *self = (struct solib_catchpoint *) b;
-  struct value_print_options opts;
-  struct ui_out *uiout = current_uiout;
+  /* Start by marking the location disabled and discarding the previously
+     computed condition expression.  Now if we get an exception, even if
+     it's a quit exception, we'll leave the location disabled and there
+     will be no (possibly invalid) expression cached.  */
+  bl.disabled_by_cond = true;
+  bl.cond = nullptr;
 
-  get_user_print_options (&opts);
-  /* Field 4, the address, is omitted (which makes the columns not
-     line up too nicely with the headers, but the effect is relatively
-     readable).  */
-  if (opts.addressprint)
+  const char *s = cond_string.get ();
+  try
     {
-      annotate_field (4);
-      uiout->field_skip ("addr");
-    }
+      switch_to_program_space_and_thread (pspace);
 
-  std::string msg;
-  annotate_field (5);
-  if (self->is_load)
-    {
-      if (self->regex)
-	msg = string_printf (_("load of library matching %s"), self->regex);
-      else
-	msg = _("load of library");
+      bl.cond = parse_exp_1 (&s, bl.address, block_for_pc (bl.address),
+			     nullptr);
+      bl.disabled_by_cond = false;
     }
-  else
-    {
-      if (self->regex)
-	msg = string_printf (_("unload of library matching %s"), self->regex);
-      else
-	msg = _("unload of library");
-    }
-  uiout->field_string ("what", msg);
-
-  if (uiout->is_mi_like_p ())
-    uiout->field_string ("catch-type", self->is_load ? "load" : "unload");
-}
-
-static void
-print_mention_catch_solib (struct breakpoint *b)
-{
-  struct solib_catchpoint *self = (struct solib_catchpoint *) b;
-
-  printf_filtered (_("Catchpoint %d (%s)"), b->number,
-		   self->is_load ? "load" : "unload");
-}
-
-static void
-print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
-{
-  struct solib_catchpoint *self = (struct solib_catchpoint *) b;
-
-  fprintf_unfiltered (fp, "%s %s",
-		      b->disposition == disp_del ? "tcatch" : "catch",
-		      self->is_load ? "load" : "unload");
-  if (self->regex)
-    fprintf_unfiltered (fp, " %s", self->regex);
-  fprintf_unfiltered (fp, "\n");
-}
-
-static struct breakpoint_ops catch_solib_breakpoint_ops;
-
-/* Shared helper function (MI and CLI) for creating and installing
-   a shared object event catchpoint.  If IS_LOAD is non-zero then
-   the events to be caught are load events, otherwise they are
-   unload events.  If IS_TEMP is non-zero the catchpoint is a
-   temporary one.  If ENABLED is non-zero the catchpoint is
-   created in an enabled state.  */
-
-void
-add_solib_catchpoint (const char *arg, int is_load, int is_temp, int enabled)
-{
-  struct gdbarch *gdbarch = get_current_arch ();
-
-  if (!arg)
-    arg = "";
-  arg = skip_spaces (arg);
-
-  std::unique_ptr<solib_catchpoint> c (new solib_catchpoint ());
-
-  if (*arg != '\0')
+  catch (const gdb_exception_error &e)
     {
-      c->compiled.reset (new compiled_regex (arg, REG_NOSUB,
-					     _("Invalid regexp")));
-      c->regex = xstrdup (arg);
+      /* Any exception thrown must be from either the parse_exp_1 or
+	 earlier in the try block.  As such the following two asserts
+	 should be true.  */
+      gdb_assert (bl.disabled_by_cond);
+      gdb_assert (bl.cond == nullptr);
     }
 
-  c->is_load = is_load;
-  init_catchpoint (c.get (), gdbarch, is_temp, NULL,
-		   &catch_solib_breakpoint_ops);
-
-  c->enable_state = enabled ? bp_enabled : bp_disabled;
-
-  install_breakpoint (0, std::move (c), 1);
+  if (previous_disabled_by_cond != bl.disabled_by_cond)
+    notify_breakpoint_modified (this);
 }
 
-/* A helper function that does all the work for "catch load" and
-   "catch unload".  */
-
-static void
-catch_load_or_unload (const char *arg, int from_tty, int is_load,
-		      struct cmd_list_element *command)
-{
-  int tempflag;
-  const int enabled = 1;
-
-  tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
-
-  add_solib_catchpoint (arg, is_load, tempflag, enabled);
-}
+/* Notify interpreters and observers that breakpoint B was created.  */
 
 static void
-catch_load_command_1 (const char *arg, int from_tty,
-		      struct cmd_list_element *command)
+notify_breakpoint_created (breakpoint *b)
 {
-  catch_load_or_unload (arg, from_tty, 1, command);
-}
-
-static void
-catch_unload_command_1 (const char *arg, int from_tty,
-			struct cmd_list_element *command)
-{
-  catch_load_or_unload (arg, from_tty, 0, command);
-}
-
-/* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
-   is non-zero, then make the breakpoint temporary.  If COND_STRING is
-   not NULL, then store it in the breakpoint.  OPS, if not NULL, is
-   the breakpoint_ops structure associated to the catchpoint.  */
-
-void
-init_catchpoint (struct breakpoint *b,
-		 struct gdbarch *gdbarch, int tempflag,
-		 const char *cond_string,
-		 const struct breakpoint_ops *ops)
-{
-  symtab_and_line sal;
-  sal.pspace = current_program_space;
-
-  init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
-
-  b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
-  b->disposition = tempflag ? disp_del : disp_donttouch;
+  interps_notify_breakpoint_created (b);
+  gdb::observers::breakpoint_created.notify (b);
 }
 
-void
+breakpoint *
 install_breakpoint (int internal, std::unique_ptr<breakpoint> &&arg, int update_gll)
 {
   breakpoint *b = add_to_breakpoint_chain (std::move (arg));
@@ -8136,163 +8329,28 @@ install_breakpoint (int internal, std::u
     set_tracepoint_count (breakpoint_count);
   if (!internal)
     mention (b);
-  gdb::observers::breakpoint_created.notify (b);
+
+  notify_breakpoint_created (b);
 
   if (update_gll)
     update_global_location_list (UGLL_MAY_INSERT);
-}
-
-static void
-create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
-				    int tempflag, const char *cond_string,
-                                    const struct breakpoint_ops *ops)
-{
-  std::unique_ptr<fork_catchpoint> c (new fork_catchpoint ());
-
-  init_catchpoint (c.get (), gdbarch, tempflag, cond_string, ops);
-
-  c->forked_inferior_pid = null_ptid;
-
-  install_breakpoint (0, std::move (c), 1);
-}
-
-/* Exec catchpoints.  */
-
-/* An instance of this type is used to represent an exec catchpoint.
-   A breakpoint is really of this type iff its ops pointer points to
-   CATCH_EXEC_BREAKPOINT_OPS.  */
-
-struct exec_catchpoint : public breakpoint
-{
-  ~exec_catchpoint () override;
-
-  /* Filename of a program whose exec triggered this catchpoint.
-     This field is only valid immediately after this catchpoint has
-     triggered.  */
-  char *exec_pathname;
-};
-
-/* Exec catchpoint destructor.  */
-
-exec_catchpoint::~exec_catchpoint ()
-{
-  xfree (this->exec_pathname);
-}
-
-static int
-insert_catch_exec (struct bp_location *bl)
-{
-  return target_insert_exec_catchpoint (inferior_ptid.pid ());
-}
-
-static int
-remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
-{
-  return target_remove_exec_catchpoint (inferior_ptid.pid ());
-}
-
-static int
-breakpoint_hit_catch_exec (const struct bp_location *bl,
-			   const address_space *aspace, CORE_ADDR bp_addr,
-			   const struct target_waitstatus *ws)
-{
-  struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
 
-  if (ws->kind != TARGET_WAITKIND_EXECD)
-    return 0;
-
-  c->exec_pathname = xstrdup (ws->value.execd_pathname);
-  return 1;
-}
-
-static enum print_stop_action
-print_it_catch_exec (bpstat bs)
-{
-  struct ui_out *uiout = current_uiout;
-  struct breakpoint *b = bs->breakpoint_at;
-  struct exec_catchpoint *c = (struct exec_catchpoint *) b;
-
-  annotate_catchpoint (b->number);
-  maybe_print_thread_hit_breakpoint (uiout);
-  if (b->disposition == disp_del)
-    uiout->text ("Temporary catchpoint ");
-  else
-    uiout->text ("Catchpoint ");
-  if (uiout->is_mi_like_p ())
-    {
-      uiout->field_string ("reason", async_reason_lookup (EXEC_ASYNC_EXEC));
-      uiout->field_string ("disp", bpdisp_text (b->disposition));
-    }
-  uiout->field_signed ("bkptno", b->number);
-  uiout->text (" (exec'd ");
-  uiout->field_string ("new-exec", c->exec_pathname);
-  uiout->text ("), ");
-
-  return PRINT_SRC_AND_LOC;
-}
-
-static void
-print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
-{
-  struct exec_catchpoint *c = (struct exec_catchpoint *) b;
-  struct value_print_options opts;
-  struct ui_out *uiout = current_uiout;
-
-  get_user_print_options (&opts);
-
-  /* Field 4, the address, is omitted (which makes the columns
-     not line up too nicely with the headers, but the effect
-     is relatively readable).  */
-  if (opts.addressprint)
-    uiout->field_skip ("addr");
-  annotate_field (5);
-  uiout->text ("exec");
-  if (c->exec_pathname != NULL)
-    {
-      uiout->text (", program \"");
-      uiout->field_string ("what", c->exec_pathname);
-      uiout->text ("\" ");
-    }
-
-  if (uiout->is_mi_like_p ())
-    uiout->field_string ("catch-type", "exec");
-}
-
-static void
-print_mention_catch_exec (struct breakpoint *b)
-{
-  printf_filtered (_("Catchpoint %d (exec)"), b->number);
-}
-
-/* Implement the "print_recreate" breakpoint_ops method for exec
-   catchpoints.  */
-
-static void
-print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
-{
-  fprintf_unfiltered (fp, "catch exec");
-  print_recreate_thread (b, fp);
+  return b;
 }
 
-static struct breakpoint_ops catch_exec_breakpoint_ops;
-
 static int
 hw_breakpoint_used_count (void)
 {
   int i = 0;
-  struct breakpoint *b;
-  struct bp_location *bl;
 
-  ALL_BREAKPOINTS (b)
-  {
-    if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
-      for (bl = b->loc; bl; bl = bl->next)
+  for (breakpoint &b : all_breakpoints ())
+    if (b.type == bp_hardware_breakpoint && breakpoint_enabled (&b))
+      for (bp_location &bl : b.locations ())
 	{
 	  /* Special types of hardware breakpoints may use more than
 	     one register.  */
-	  i += b->ops->resources_needed (bl);
+	  i += b.resources_needed (&bl);
 	}
-  }
 
   return i;
 }
@@ -8304,16 +8362,15 @@ static int
 hw_watchpoint_use_count (struct breakpoint *b)
 {
   int i = 0;
-  struct bp_location *bl;
 
   if (!breakpoint_enabled (b))
     return 0;
 
-  for (bl = b->loc; bl; bl = bl->next)
+  for (bp_location &bl : b->locations ())
     {
       /* Special types of hardware watchpoints may use more than
 	 one register.  */
-      i += b->ops->resources_needed (bl);
+      i += b->resources_needed (&bl);
     }
 
   return i;
@@ -8329,19 +8386,18 @@ hw_watchpoint_used_count_others (struct
 				 enum bptype type, int *other_type_used)
 {
   int i = 0;
-  struct breakpoint *b;
 
   *other_type_used = 0;
-  ALL_BREAKPOINTS (b)
+  for (breakpoint &b : all_breakpoints ())
     {
-      if (b == except)
+      if (&b == except)
 	continue;
-      if (!breakpoint_enabled (b))
+      if (!breakpoint_enabled (&b))
 	continue;
 
-      if (b->type == type)
-	i += hw_watchpoint_use_count (b);
-      else if (is_hardware_watchpoint (b))
+      if (b.type == type)
+	i += hw_watchpoint_use_count (&b);
+      else if (is_hardware_watchpoint (&b))
 	*other_type_used = 1;
     }
 
@@ -8351,31 +8407,23 @@ hw_watchpoint_used_count_others (struct
 void
 disable_watchpoints_before_interactive_call_start (void)
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-  {
-    if (is_watchpoint (b) && breakpoint_enabled (b))
+  for (breakpoint &b : all_breakpoints ())
+    if (is_watchpoint (&b) && breakpoint_enabled (&b))
       {
-	b->enable_state = bp_call_disabled;
+	b.enable_state = bp_call_disabled;
 	update_global_location_list (UGLL_DONT_INSERT);
       }
-  }
 }
 
 void
 enable_watchpoints_after_interactive_call_stop (void)
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-  {
-    if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
+  for (breakpoint &b : all_breakpoints ())
+    if (is_watchpoint (&b) && b.enable_state == bp_call_disabled)
       {
-	b->enable_state = bp_enabled;
+	b.enable_state = bp_enabled;
 	update_global_location_list (UGLL_MAY_INSERT);
       }
-  }
 }
 
 void
@@ -8392,24 +8440,19 @@ enable_breakpoints_after_startup (void)
   breakpoint_re_set ();
 }
 
-/* Create a new single-step breakpoint for thread THREAD, with no
-   locations.  */
-
-static struct breakpoint *
-new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
-{
-  std::unique_ptr<breakpoint> b (new breakpoint ());
-
-  init_raw_breakpoint_without_location (b.get (), gdbarch, bp_single_step,
-					&momentary_breakpoint_ops);
-
-  b->disposition = disp_donttouch;
-  b->frame_id = null_frame_id;
+/* Allocate a new momentary breakpoint.  */
 
-  b->thread = thread;
-  gdb_assert (b->thread != 0);
-
-  return add_to_breakpoint_chain (std::move (b));
+template<typename... Arg>
+static momentary_breakpoint *
+new_momentary_breakpoint (struct gdbarch *gdbarch, enum bptype type,
+			  Arg&&... args)
+{
+  if (type == bp_longjmp || type == bp_exception)
+    return new longjmp_breakpoint (gdbarch, type,
+				   std::forward<Arg> (args)...);
+  else
+    return new momentary_breakpoint (gdbarch, type,
+				     std::forward<Arg> (args)...);
 }
 
 /* Set a momentary breakpoint of type TYPE at address specified by
@@ -8420,22 +8463,21 @@ breakpoint_up
 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
 			  struct frame_id frame_id, enum bptype type)
 {
-  struct breakpoint *b;
-
   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
      tail-called one.  */
   gdb_assert (!frame_id_artificial_p (frame_id));
 
-  b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
-  b->enable_state = bp_enabled;
-  b->disposition = disp_donttouch;
-  b->frame_id = frame_id;
+  std::unique_ptr<momentary_breakpoint> b
+    (new_momentary_breakpoint (gdbarch, type, sal.pspace, frame_id,
+			       inferior_thread ()->global_num));
+
+  b->add_location (sal);
 
-  b->thread = inferior_thread ()->global_num;
+  breakpoint_up bp (add_to_breakpoint_chain (std::move (b)));
 
   update_global_location_list_nothrow (UGLL_MAY_INSERT);
 
-  return breakpoint_up (b);
+  return bp;
 }
 
 /* Make a momentary breakpoint based on the master breakpoint ORIG.
@@ -8445,34 +8487,30 @@ set_momentary_breakpoint (struct gdbarch
 static struct breakpoint *
 momentary_breakpoint_from_master (struct breakpoint *orig,
 				  enum bptype type,
-				  const struct breakpoint_ops *ops,
-				  int loc_enabled)
+				  int loc_enabled,
+				  int thread)
 {
-  struct breakpoint *copy;
-
-  copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
-  copy->loc = allocate_bp_location (copy);
-  set_breakpoint_location_function (copy->loc);
-
-  copy->loc->gdbarch = orig->loc->gdbarch;
-  copy->loc->requested_address = orig->loc->requested_address;
-  copy->loc->address = orig->loc->address;
-  copy->loc->section = orig->loc->section;
-  copy->loc->pspace = orig->loc->pspace;
-  copy->loc->probe = orig->loc->probe;
-  copy->loc->line_number = orig->loc->line_number;
-  copy->loc->symtab = orig->loc->symtab;
-  copy->loc->enabled = loc_enabled;
-  copy->frame_id = orig->frame_id;
-  copy->thread = orig->thread;
-  copy->pspace = orig->pspace;
-
-  copy->enable_state = bp_enabled;
-  copy->disposition = disp_donttouch;
-  copy->number = internal_breakpoint_number--;
+  std::unique_ptr<breakpoint> copy
+    (new_momentary_breakpoint (orig->gdbarch, type, orig->pspace,
+			       orig->frame_id, thread));
+  const bp_location &orig_loc = orig->first_loc ();
+  bp_location *copy_loc = copy->allocate_location ();
+  copy->add_location (*copy_loc);
+  set_breakpoint_location_function (copy_loc);
+
+  copy_loc->gdbarch = orig_loc.gdbarch;
+  copy_loc->requested_address = orig_loc.requested_address;
+  copy_loc->address = orig_loc.address;
+  copy_loc->section = orig_loc.section;
+  copy_loc->pspace = orig_loc.pspace;
+  copy_loc->probe = orig_loc.probe;
+  copy_loc->line_number = orig_loc.line_number;
+  copy_loc->symtab = orig_loc.symtab;
+  copy_loc->enabled = loc_enabled;
 
+  breakpoint *b = add_to_breakpoint_chain (std::move (copy));
   update_global_location_list_nothrow (UGLL_DONT_INSERT);
-  return copy;
+  return b;
 }
 
 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
@@ -8485,7 +8523,8 @@ clone_momentary_breakpoint (struct break
   if (orig == NULL)
     return NULL;
 
-  return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
+  return momentary_breakpoint_from_master (orig, orig->type, 0,
+					   orig->thread);
 }
 
 breakpoint_up
@@ -8506,58 +8545,107 @@ set_momentary_breakpoint_at_pc (struct g
 /* Tell the user we have just set a breakpoint B.  */
 
 static void
-mention (struct breakpoint *b)
+mention (const breakpoint *b)
 {
-  b->ops->print_mention (b);
+  b->print_mention ();
   current_uiout->text ("\n");
 }
 
 
-static int bp_loc_is_permanent (struct bp_location *loc);
+static bool bp_loc_is_permanent (struct bp_location *loc);
 
-static struct bp_location *
-add_location_to_breakpoint (struct breakpoint *b,
-			    const struct symtab_and_line *sal)
+/* 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)
+		{
+		  gdb_printf (_("Note: automatically using "
+				"hardware breakpoints for "
+				"read-only addresses.\n"));
+		  said = true;
+		}
+	    }
+	}
+    }
+}
+
+bp_location *
+code_breakpoint::add_location (const symtab_and_line &sal)
 {
-  struct bp_location *loc, **tmp;
   CORE_ADDR adjusted_address;
-  struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
+  struct gdbarch *loc_gdbarch = get_sal_arch (sal);
 
   if (loc_gdbarch == NULL)
-    loc_gdbarch = b->gdbarch;
+    loc_gdbarch = gdbarch;
 
   /* Adjust the breakpoint's address prior to allocating a location.
-     Once we call allocate_bp_location(), that mostly uninitialized
+     Once we call allocate_location(), that mostly uninitialized
      location will be placed on the location chain.  Adjustment of the
      breakpoint may cause target_read_memory() to be called and we do
      not want its scan of the location chain to find a breakpoint and
      location that's only been partially initialized.  */
   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
-						sal->pc, b->type);
+						sal.pc, type,
+						sal.pspace);
 
   /* Sort the locations by their ADDRESS.  */
-  loc = allocate_bp_location (b);
-  for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
-       tmp = &((*tmp)->next))
-    ;
-  loc->next = *tmp;
-  *tmp = loc;
-
-  loc->requested_address = sal->pc;
-  loc->address = adjusted_address;
-  loc->pspace = sal->pspace;
-  loc->probe.prob = sal->prob;
-  loc->probe.objfile = sal->objfile;
-  gdb_assert (loc->pspace != NULL);
-  loc->section = sal->section;
-  loc->gdbarch = loc_gdbarch;
-  loc->line_number = sal->line;
-  loc->symtab = sal->symtab;
-  loc->symbol = sal->symbol;
-  loc->msymbol = sal->msymbol;
-  loc->objfile = sal->objfile;
+  bp_location *new_loc = this->allocate_location ();
+
+  new_loc->requested_address = sal.pc;
+  new_loc->address = adjusted_address;
+  new_loc->pspace = sal.pspace;
+  new_loc->probe.prob = sal.prob;
+  new_loc->probe.objfile = sal.objfile;
+  gdb_assert (new_loc->pspace != NULL);
+  new_loc->section = sal.section;
+  new_loc->gdbarch = loc_gdbarch;
+  new_loc->line_number = sal.line;
+  new_loc->symtab = sal.symtab;
+  new_loc->symbol = sal.symbol;
+  new_loc->msymbol = sal.msymbol;
+
+  breakpoint::add_location (*new_loc);
 
-  set_breakpoint_location_function (loc);
+  set_breakpoint_location_function (new_loc);
 
   /* While by definition, permanent breakpoints are already present in the
      code, we don't mark the location as inserted.  Normally one would expect
@@ -8572,49 +8660,17 @@ add_location_to_breakpoint (struct break
      (If GDB later needs to continue execution past the permanent breakpoint,
      it manually increments the PC, thus avoiding executing the breakpoint
      instruction.)  */
-  if (bp_loc_is_permanent (loc))
-    loc->permanent = 1;
+  if (bp_loc_is_permanent (new_loc))
+    new_loc->permanent = 1;
 
-  return loc;
+  return new_loc;
 }
 
 
-/* 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;
-
-  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);
+/* Return true if LOC is pointing to a permanent breakpoint,
+   return false otherwise.  */
 
-  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 +8678,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
@@ -8638,11 +8694,15 @@ bp_loc_is_permanent (struct bp_location
 static void
 update_dprintf_command_list (struct breakpoint *b)
 {
-  char *dprintf_args = b->extra_string;
-  char *printf_line = NULL;
+  gdb_assert (b->type == bp_dprintf);
+  gdb_assert (b->extra_string != nullptr);
 
-  if (!dprintf_args)
-    return;
+  const char *dprintf_args = b->extra_string.get ();
+  gdb::unique_xmalloc_ptr<char> printf_line = nullptr;
+
+  /* Trying to create a dprintf breakpoint without a format and args
+     string should be detected at creation time.  */
+  gdb_assert (dprintf_args != nullptr);
 
   dprintf_args = skip_spaces (dprintf_args);
 
@@ -8659,17 +8719,17 @@ update_dprintf_command_list (struct brea
     printf_line = xstrprintf ("printf %s", dprintf_args);
   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
     {
-      if (!dprintf_function)
+      if (dprintf_function.empty ())
 	error (_("No function supplied for dprintf call"));
 
-      if (dprintf_channel && strlen (dprintf_channel) > 0)
+      if (!dprintf_channel.empty ())
 	printf_line = xstrprintf ("call (void) %s (%s,%s)",
-				  dprintf_function,
-				  dprintf_channel,
+				  dprintf_function.c_str (),
+				  dprintf_channel.c_str (),
 				  dprintf_args);
       else
 	printf_line = xstrprintf ("call (void) %s (%s)",
-				  dprintf_function,
+				  dprintf_function.c_str (),
 				  dprintf_args);
     }
   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
@@ -8683,14 +8743,13 @@ update_dprintf_command_list (struct brea
 	}
     }
   else
-    internal_error (__FILE__, __LINE__,
-		    _("Invalid dprintf style."));
+    internal_error (_("Invalid dprintf style."));
 
   gdb_assert (printf_line != NULL);
 
   /* Manufacture a printf sequence.  */
   struct command_line *printf_cmd_line
-    = new struct command_line (simple_control, printf_line);
+    = new struct command_line (simple_control, printf_line.release ());
   breakpoint_set_commands (b, counted_command_line (printf_cmd_line,
 						    command_lines_deleter ()));
 }
@@ -8702,32 +8761,25 @@ static void
 update_dprintf_commands (const char *args, int from_tty,
 			 struct cmd_list_element *c)
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-    {
-      if (b->type == bp_dprintf)
-	update_dprintf_command_list (b);
-    }
-}
-
-/* Create a breakpoint with SAL as location.  Use LOCATION
-   as a description of the location, and COND_STRING
-   as condition expression.  If LOCATION is NULL then create an
-   "address location" from the address in the SAL.  */
-
-static void
-init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
-		     gdb::array_view<const symtab_and_line> sals,
-		     event_location_up &&location,
-		     gdb::unique_xmalloc_ptr<char> filter,
-		     gdb::unique_xmalloc_ptr<char> cond_string,
-		     gdb::unique_xmalloc_ptr<char> extra_string,
-		     enum bptype type, enum bpdisp disposition,
-		     int thread, int task, int ignore_count,
-		     const struct breakpoint_ops *ops, int from_tty,
-		     int enabled, int internal, unsigned flags,
-		     int display_canonical)
+  for (breakpoint &b : all_breakpoints ())
+    if (b.type == bp_dprintf)
+	update_dprintf_command_list (&b);
+}
+
+code_breakpoint::code_breakpoint (struct gdbarch *gdbarch_,
+				  enum bptype type_,
+				  gdb::array_view<const symtab_and_line> sals,
+				  location_spec_up &&locspec_,
+				  gdb::unique_xmalloc_ptr<char> filter_,
+				  gdb::unique_xmalloc_ptr<char> cond_string_,
+				  gdb::unique_xmalloc_ptr<char> extra_string_,
+				  enum bpdisp disposition_,
+				  int thread_, int task_, int inferior_,
+				  int ignore_count_,
+				  int from_tty,
+				  int enabled_, unsigned flags,
+				  int display_canonical_)
+  : breakpoint (gdbarch_, type_)
 {
   int i;
 
@@ -8747,136 +8799,128 @@ init_breakpoint_sal (struct breakpoint *
 
   gdb_assert (!sals.empty ());
 
-  for (const auto &sal : sals)
-    {
-      struct bp_location *loc;
+  /* At most one of thread, task, or inferior can be set on any breakpoint.  */
+  gdb_assert (((thread == -1 ? 0 : 1)
+	       + (task == -1 ? 0 : 1)
+	       + (inferior == -1 ? 0 : 1)) <= 1);
 
-      if (from_tty)
-	{
-	  struct gdbarch *loc_gdbarch = get_sal_arch (sal);
-	  if (!loc_gdbarch)
-	    loc_gdbarch = gdbarch;
+  thread = thread_;
+  task = task_;
+  inferior = inferior_;
 
-	  describe_other_breakpoints (loc_gdbarch,
-				      sal.pspace, sal.pc, sal.section, thread);
-	}
-
-      if (&sal == &sals[0])
-	{
-	  init_raw_breakpoint (b, gdbarch, sal, type, ops);
-	  b->thread = thread;
-	  b->task = task;
+  cond_string = std::move (cond_string_);
+  extra_string = std::move (extra_string_);
+  ignore_count = ignore_count_;
+  enable_state = enabled_ ? bp_enabled : bp_disabled;
+  disposition = disposition_;
 
-	  b->cond_string = cond_string.release ();
-	  b->extra_string = extra_string.release ();
-	  b->ignore_count = ignore_count;
-	  b->enable_state = enabled ? bp_enabled : bp_disabled;
-	  b->disposition = disposition;
-
-	  if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
-	    b->loc->inserted = 1;
-
-	  if (type == bp_static_tracepoint)
-	    {
-	      struct tracepoint *t = (struct tracepoint *) b;
-	      struct static_tracepoint_marker marker;
-
-	      if (strace_marker_p (b))
-		{
-		  /* We already know the marker exists, otherwise, we
-		     wouldn't see a sal for it.  */
-		  const char *p
-		    = &event_location_to_string (b->location.get ())[3];
-		  const char *endp;
-
-		  p = skip_spaces (p);
+  if (type == bp_static_tracepoint
+      || type == bp_static_marker_tracepoint)
+    {
+      auto *t = gdb::checked_static_cast<tracepoint *> (this);
+      struct static_tracepoint_marker marker;
 
-		  endp = skip_to_space (p);
+      if (strace_marker_p (this))
+	{
+	  /* We already know the marker exists, otherwise, we wouldn't
+	     see a sal for it.  */
+	  const char *p = &locspec_->to_string ()[3];
+	  const char *endp;
 
-		  t->static_trace_marker_id.assign (p, endp - p);
+	  p = skip_spaces (p);
 
-		  printf_filtered (_("Probed static tracepoint "
-				     "marker \"%s\"\n"),
-				   t->static_trace_marker_id.c_str ());
-		}
-	      else if (target_static_tracepoint_marker_at (sal.pc, &marker))
-		{
-		  t->static_trace_marker_id = std::move (marker.str_id);
+	  endp = skip_to_space (p);
 
-		  printf_filtered (_("Probed static tracepoint "
-				     "marker \"%s\"\n"),
-				   t->static_trace_marker_id.c_str ());
-		}
-	      else
-		warning (_("Couldn't determine the static "
-			   "tracepoint marker to probe"));
-	    }
+	  t->static_trace_marker_id.assign (p, endp - p);
 
-	  loc = b->loc;
+	  gdb_printf (_("Probed static tracepoint marker \"%s\"\n"),
+		      t->static_trace_marker_id.c_str ());
 	}
-      else
+      else if (target_static_tracepoint_marker_at (sals[0].pc, &marker))
 	{
-	  loc = add_location_to_breakpoint (b, &sal);
-	  if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
-	    loc->inserted = 1;
+	  t->static_trace_marker_id = std::move (marker.str_id);
+
+	  gdb_printf (_("Probed static tracepoint marker \"%s\"\n"),
+		      t->static_trace_marker_id.c_str ());
 	}
+      else
+	warning (_("Couldn't determine the static tracepoint marker to probe"));
+    }
 
-      if (b->cond_string)
+  for (const auto &sal : sals)
+    {
+      if (from_tty)
 	{
-	  const char *arg = b->cond_string;
+	  struct gdbarch *loc_gdbarch = get_sal_arch (sal);
+	  if (loc_gdbarch == nullptr)
+	    loc_gdbarch = gdbarch;
 
-	  loc->cond = parse_exp_1 (&arg, loc->address,
-				   block_for_pc (loc->address), 0);
-	  if (*arg)
-              error (_("Garbage '%s' follows condition"), arg);
+	  describe_other_breakpoints (loc_gdbarch,
+				      sal.pspace, sal.pc, sal.section, thread);
 	}
 
-      /* Dynamic printf requires and uses additional arguments on the
-	 command line, otherwise it's an error.  */
-      if (type == bp_dprintf)
-	{
-	  if (b->extra_string)
-	    update_dprintf_command_list (b);
-	  else
-	    error (_("Format string required"));
-	}
-      else if (b->extra_string)
-	error (_("Garbage '%s' at end of command"), b->extra_string);
+      bp_location *new_loc = add_location (sal);
+      if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
+	new_loc->inserted = 1;
+
+      /* Do not set breakpoint locations conditions yet.  As locations
+	 are inserted, they get sorted based on their addresses.  Let
+	 the list stabilize to have reliable location numbers.  */
     }
 
-  b->display_canonical = display_canonical;
-  if (location != NULL)
-    b->location = std::move (location);
+  /* Dynamic printf requires and uses additional arguments on the
+     command line, otherwise it's an error.  */
+  if (type == bp_dprintf)
+    update_dprintf_command_list (this);
   else
-    b->location = new_address_location (b->loc->address, NULL, 0);
-  b->filter = std::move (filter);
+    gdb_assert (extra_string == nullptr);
+
+  /* The order of the locations is now stable.  Set the location
+     condition using the location's number.  */
+  int loc_num = 1;
+  for (bp_location &bl : locations ())
+    {
+      if (cond_string != nullptr)
+	set_breakpoint_location_condition (cond_string.get (), &bl,
+					   number, loc_num);
+
+      ++loc_num;
+    }
+
+  display_canonical = display_canonical_;
+  if (locspec_ != nullptr)
+    locspec = std::move (locspec_);
+  else
+    locspec = new_address_location_spec (this->first_loc ().address, NULL, 0);
+  filter = std::move (filter_);
 }
 
 static void
 create_breakpoint_sal (struct gdbarch *gdbarch,
 		       gdb::array_view<const symtab_and_line> sals,
-		       event_location_up &&location,
+		       location_spec_up &&locspec,
 		       gdb::unique_xmalloc_ptr<char> filter,
 		       gdb::unique_xmalloc_ptr<char> cond_string,
 		       gdb::unique_xmalloc_ptr<char> extra_string,
 		       enum bptype type, enum bpdisp disposition,
-		       int thread, int task, int ignore_count,
-		       const struct breakpoint_ops *ops, int from_tty,
+		       int thread, int task, int inferior, int ignore_count,
+		       int from_tty,
 		       int enabled, int internal, unsigned flags,
 		       int display_canonical)
 {
-  std::unique_ptr<breakpoint> b = new_breakpoint_from_type (type);
-
-  init_breakpoint_sal (b.get (), gdbarch,
-		       sals, std::move (location),
-		       std::move (filter),
-		       std::move (cond_string),
-		       std::move (extra_string),
-		       type, disposition,
-		       thread, task, ignore_count,
-		       ops, from_tty,
-		       enabled, internal, flags,
-		       display_canonical);
+  std::unique_ptr<code_breakpoint> b
+    = new_breakpoint_from_type (gdbarch,
+				type,
+				sals,
+				std::move (locspec),
+				std::move (filter),
+				std::move (cond_string),
+				std::move (extra_string),
+				disposition,
+				thread, task, inferior, ignore_count,
+				from_tty,
+				enabled, flags,
+				display_canonical);
 
   install_breakpoint (internal, std::move (b), 0);
 }
@@ -8902,8 +8946,9 @@ create_breakpoints_sal (struct gdbarch *
 			gdb::unique_xmalloc_ptr<char> cond_string,
 			gdb::unique_xmalloc_ptr<char> extra_string,
 			enum bptype type, enum bpdisp disposition,
-			int thread, int task, int ignore_count,
-			const struct breakpoint_ops *ops, int from_tty,
+			int thread, int task, int inferior,
+			int ignore_count,
+			int from_tty,
 			int enabled, int internal, unsigned flags)
 {
   if (canonical->pre_expanded)
@@ -8913,41 +8958,42 @@ create_breakpoints_sal (struct gdbarch *
     {
       /* Note that 'location' can be NULL in the case of a plain
 	 'break', without arguments.  */
-      event_location_up location
-	= (canonical->location != NULL
-	   ? copy_event_location (canonical->location.get ()) : NULL);
+      location_spec_up locspec
+	= (canonical->locspec != nullptr
+	   ? canonical->locspec->clone ()
+	   : nullptr);
       gdb::unique_xmalloc_ptr<char> filter_string
 	(lsal.canonical != NULL ? xstrdup (lsal.canonical) : NULL);
 
       create_breakpoint_sal (gdbarch, lsal.sals,
-			     std::move (location),
+			     std::move (locspec),
 			     std::move (filter_string),
 			     std::move (cond_string),
 			     std::move (extra_string),
 			     type, disposition,
-			     thread, task, ignore_count, ops,
+			     thread, task, inferior, ignore_count,
 			     from_tty, enabled, internal, flags,
 			     canonical->special_display);
     }
 }
 
-/* Parse LOCATION which is assumed to be a SAL specification possibly
+/* Parse LOCSPEC which is assumed to be a SAL specification possibly
    followed by conditionals.  On return, SALS contains an array of SAL
-   addresses found.  LOCATION points to the end of the SAL (for
-   linespec locations).
+   addresses found.  LOCSPEC points to the end of the SAL (for
+   linespec locspecs).
 
    The array and the line spec strings are allocated on the heap, it is
    the caller's responsibility to free them.  */
 
 static void
-parse_breakpoint_sals (const struct event_location *location,
-		       struct linespec_result *canonical)
+parse_breakpoint_sals (location_spec *locspec,
+		       struct linespec_result *canonical,
+		       struct program_space *search_pspace)
 {
-  struct symtab_and_line cursal;
-
-  if (event_location_type (location) == LINESPEC_LOCATION)
+  if (locspec->type () == LINESPEC_LOCATION_SPEC)
     {
-      const char *spec = get_linespec_location (location)->spec_string;
+      const char *spec
+	= as_linespec_location_spec (locspec)->spec_string.get ();
 
       if (spec == NULL)
 	{
@@ -8992,20 +9038,21 @@ parse_breakpoint_sals (const struct even
 
      ObjC: However, don't match an Objective-C method name which
      may have a '+' or '-' succeeded by a '['.  */
-  cursal = get_current_source_symtab_and_line ();
+  symtab_and_line cursal
+    = get_current_source_symtab_and_line (current_program_space);
   if (last_displayed_sal_is_valid ())
     {
       const char *spec = NULL;
 
-      if (event_location_type (location) == LINESPEC_LOCATION)
-	spec = get_linespec_location (location)->spec_string;
+      if (locspec->type () == LINESPEC_LOCATION_SPEC)
+	spec = as_linespec_location_spec (locspec)->spec_string.get ();
 
       if (!cursal.symtab
 	  || (spec != NULL
 	      && strchr ("+-", spec[0]) != NULL
 	      && spec[1] != '['))
 	{
-	  decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
+	  decode_line_full (locspec, DECODE_LINE_FUNFIRSTLINE, search_pspace,
 			    get_last_displayed_symtab (),
 			    get_last_displayed_line (),
 			    canonical, NULL, NULL);
@@ -9013,7 +9060,7 @@ parse_breakpoint_sals (const struct even
 	}
     }
 
-  decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
+  decode_line_full (locspec, DECODE_LINE_FUNFIRSTLINE, search_pspace,
 		    cursal.symtab, cursal.line, canonical, NULL, NULL);
 }
 
@@ -9055,83 +9102,6 @@ check_fast_tracepoint_sals (struct gdbar
     }
 }
 
-/* Given TOK, a string specification of condition and thread, as
-   accepted by the 'break' command, extract the condition
-   string and thread number and set *COND_STRING and *THREAD.
-   PC identifies the context at which the condition should be parsed.
-   If no condition is found, *COND_STRING is set to NULL.
-   If no thread is found, *THREAD is set to -1.  */
-
-static void
-find_condition_and_thread (const char *tok, CORE_ADDR pc,
-			   char **cond_string, int *thread, int *task,
-			   char **rest)
-{
-  *cond_string = NULL;
-  *thread = -1;
-  *task = 0;
-  *rest = NULL;
-
-  while (tok && *tok)
-    {
-      const char *end_tok;
-      int toklen;
-      const char *cond_start = NULL;
-      const char *cond_end = NULL;
-
-      tok = skip_spaces (tok);
-
-      if ((*tok == '"' || *tok == ',') && rest)
-	{
-	  *rest = savestring (tok, strlen (tok));
-	  return;
-	}
-
-      end_tok = skip_to_space (tok);
-
-      toklen = end_tok - tok;
-
-      if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
-	{
-	  tok = cond_start = end_tok + 1;
-	  parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
-	  cond_end = tok;
-	  *cond_string = savestring (cond_start, cond_end - cond_start);
-	}
-      else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
-	{
-	  const char *tmptok;
-	  struct thread_info *thr;
-
-	  tok = end_tok + 1;
-	  thr = parse_thread_id (tok, &tmptok);
-	  if (tok == tmptok)
-	    error (_("Junk after thread keyword."));
-	  *thread = thr->global_num;
-	  tok = tmptok;
-	}
-      else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
-	{
-	  char *tmptok;
-
-	  tok = end_tok + 1;
-	  *task = strtol (tok, &tmptok, 0);
-	  if (tok == tmptok)
-	    error (_("Junk after task keyword."));
-	  if (!valid_task_id (*task))
-	    error (_("Unknown task %d."), *task);
-	  tok = tmptok;
-	}
-      else if (rest)
-	{
-	  *rest = savestring (tok, strlen (tok));
-	  return;
-	}
-      else
-	error (_("Junk at end of arguments."));
-    }
-}
-
 /* Decode a static tracepoint marker spec.  */
 
 static std::vector<symtab_and_line>
@@ -9170,45 +9140,79 @@ decode_static_tracepoint_spec (const cha
    according to IS_TRACEPOINT.  */
 
 static const struct breakpoint_ops *
-breakpoint_ops_for_event_location_type (enum event_location_type location_type,
-					bool is_tracepoint)
+breakpoint_ops_for_location_spec_type (enum location_spec_type locspec_type,
+				       bool is_tracepoint)
 {
   if (is_tracepoint)
     {
-      if (location_type == PROBE_LOCATION)
+      if (locspec_type == PROBE_LOCATION_SPEC)
 	return &tracepoint_probe_breakpoint_ops;
       else
-	return &tracepoint_breakpoint_ops;
+	return &code_breakpoint_ops;
     }
   else
     {
-      if (location_type == PROBE_LOCATION)
+      if (locspec_type == PROBE_LOCATION_SPEC)
 	return &bkpt_probe_breakpoint_ops;
       else
-	return &bkpt_breakpoint_ops;
+	return &code_breakpoint_ops;
     }
 }
 
+/* Return the program space to use as a filter when searching for locations
+   of a breakpoint specific to THREAD or INFERIOR.  If THREAD and INFERIOR
+   are both -1, meaning all threads/inferiors, then this function returns
+   nullptr, indicating no program space filtering should be performed.
+   Otherwise, this function returns the program space for the inferior that
+   contains THREAD (when THREAD is not -1), or the program space for
+   INFERIOR (when INFERIOR is not -1).  */
+
+static struct program_space *
+find_program_space_for_breakpoint (int thread, int inferior)
+{
+  if (thread != -1)
+    {
+      gdb_assert (inferior == -1);
+
+      struct thread_info *thr = find_thread_global_id (thread);
+      gdb_assert (thr != nullptr);
+      gdb_assert (thr->inf != nullptr);
+      return thr->inf->pspace;
+    }
+  else if (inferior != -1)
+    {
+      gdb_assert (thread == -1);
+
+      struct inferior *inf = find_inferior_id (inferior);
+      gdb_assert (inf != nullptr);
+
+      return inf->pspace;
+    }
+
+  return nullptr;
+}
+
 /* See breakpoint.h.  */
 
 const struct breakpoint_ops *
-breakpoint_ops_for_event_location (const struct event_location *location,
-				   bool is_tracepoint)
+breakpoint_ops_for_location_spec (const location_spec *locspec,
+				  bool is_tracepoint)
 {
-  if (location != nullptr)
-    return breakpoint_ops_for_event_location_type
-      (event_location_type (location), is_tracepoint);
-  return is_tracepoint ? &tracepoint_breakpoint_ops : &bkpt_breakpoint_ops;
+  if (locspec != nullptr)
+    return (breakpoint_ops_for_location_spec_type
+	    (locspec->type (), is_tracepoint));
+  return &code_breakpoint_ops;
 }
 
 /* See breakpoint.h.  */
 
 int
 create_breakpoint (struct gdbarch *gdbarch,
-		   const struct event_location *location,
+		   location_spec *locspec,
 		   const char *cond_string,
-		   int thread, const char *extra_string,
-		   int parse_extra,
+		   int thread, int inferior,
+		   const char *extra_string,
+		   bool force_condition, int parse_extra,
 		   int tempflag, enum bptype type_wanted,
 		   int ignore_count,
 		   enum auto_boolean pending_break_support,
@@ -9217,19 +9221,82 @@ create_breakpoint (struct gdbarch *gdbar
 		   unsigned flags)
 {
   struct linespec_result canonical;
-  int pending = 0;
-  int task = 0;
+  bool pending = false;
+  int task = -1;
   int prev_bkpt_count = breakpoint_count;
 
+  gdb_assert (thread == -1 || thread > 0);
+  gdb_assert (inferior == -1 || inferior > 0);
+  gdb_assert (thread == -1 || inferior == -1);
+
+  /* If PARSE_EXTRA is true then the thread and inferior details will be
+     parsed from the EXTRA_STRING, the THREAD and INFERIOR arguments
+     should be -1.  */
+  gdb_assert (!parse_extra || thread == -1);
+  gdb_assert (!parse_extra || inferior == -1);
+
   gdb_assert (ops != NULL);
 
   /* If extra_string isn't useful, set it to NULL.  */
   if (extra_string != NULL && *extra_string == '\0')
     extra_string = NULL;
 
+  /* A bp_dprintf must always have an accompanying EXTRA_STRING containing
+     the dprintf format and arguments -- PARSE_EXTRA should always be false
+     in this case.
+
+     For all other breakpoint types, EXTRA_STRING should be nullptr unless
+     PARSE_EXTRA is true.  */
+  gdb_assert ((type_wanted == bp_dprintf)
+	      ? (extra_string != nullptr && !parse_extra)
+	      : (extra_string == nullptr || parse_extra));
+
+  /* Will hold either copies of the similarly named function argument, or
+     will hold a modified version of the function argument, depending on
+     the value of PARSE_EXTRA.  */
+  gdb::unique_xmalloc_ptr<char> cond_string_copy;
+  gdb::unique_xmalloc_ptr<char> extra_string_copy;
+
+  if (parse_extra)
+    {
+      /* Parse EXTRA_STRING splitting the parts out.  */
+      create_breakpoint_parse_arg_string (extra_string, &cond_string_copy,
+					  &thread, &inferior, &task,
+					  &extra_string_copy,
+					  &force_condition);
+
+      /* We could check that EXTRA_STRING_COPY is empty at this point -- it
+	 should be, as we only get here for things that are not bp_dprintf,
+	 however, we prefer to give the location spec parser a chance to
+	 run first, this means the user will get errors about invalid
+	 location spec instead of an error about garbage at the end of the
+	 command line.
+
+	 We still do the EXTRA_STRING_COPY is empty check, just later in
+	 this function.  */
+
+      gdb_assert (thread == -1 || thread > 0);
+      gdb_assert (task == -1 || task > 0);
+      gdb_assert (inferior == -1 || inferior > 0);
+    }
+  else
+    {
+      if (cond_string != nullptr)
+	cond_string_copy.reset (xstrdup (cond_string));
+      if (extra_string != nullptr)
+	extra_string_copy.reset (xstrdup (extra_string));
+    }
+
+  /* Clear these.  Updated values are now held in the *_copy locals.  */
+  cond_string = nullptr;
+  extra_string = nullptr;
+
   try
     {
-      ops->create_sals_from_location (location, &canonical, type_wanted);
+      struct program_space *search_pspace
+	= find_program_space_for_breakpoint (thread, inferior);
+      ops->create_sals_from_location_spec (locspec, &canonical,
+					   search_pspace);
     }
   catch (const gdb_exception_error &e)
     {
@@ -9245,7 +9312,7 @@ create_breakpoint (struct gdbarch *gdbar
 
 	  exception_print (gdb_stderr, e);
 
-          /* If pending breakpoint support is auto query and the user
+	  /* If pending breakpoint support is auto query and the user
 	     selects no, then simply return the error code.  */
 	  if (pending_break_support == AUTO_BOOLEAN_AUTO
 	      && !nquery (_("Make %s pending on future shared library load? "),
@@ -9256,12 +9323,19 @@ create_breakpoint (struct gdbarch *gdbar
 	     a pending breakpoint and selected yes, or pending
 	     breakpoint behavior is on and thus a pending breakpoint
 	     is defaulted on behalf of the user.  */
-	  pending = 1;
+	  pending = true;
 	}
       else
 	throw;
     }
 
+  /* Only bp_dprintf breakpoints should have anything in EXTRA_STRING_COPY
+     by this point.  For all other breakpoints this indicates an error.  We
+     could place this check earlier in the function, but we prefer to see
+     errors from the location spec parser before we see this error message.  */
+  if (type_wanted != bp_dprintf && extra_string_copy.get () != nullptr)
+    error (_("Garbage '%s' at end of command"), extra_string_copy.get ());
+
   if (!pending && canonical.lsals.empty ())
     return 0;
 
@@ -9285,81 +9359,73 @@ create_breakpoint (struct gdbarch *gdbar
      breakpoint.  */
   if (!pending)
     {
-      gdb::unique_xmalloc_ptr<char> cond_string_copy;
-      gdb::unique_xmalloc_ptr<char> extra_string_copy;
-
-      if (parse_extra)
-        {
-	  char *rest;
-	  char *cond;
-
+      /* Check the validity of the condition.  We should error out if the
+	 condition is invalid at all of the locations and if it is not
+	 forced.  In the PARSE_EXTRA case above, this check is done when
+	 parsing the EXTRA_STRING.  */
+      if (cond_string_copy.get () != nullptr && !force_condition)
+	{
+	  int num_failures = 0;
 	  const linespec_sals &lsal = canonical.lsals[0];
-
-	  /* Here we only parse 'arg' to separate condition
-	     from thread number, so parsing in context of first
-	     sal is OK.  When setting the breakpoint we'll
-	     re-parse it in context of each sal.  */
-
-	  find_condition_and_thread (extra_string, lsal.sals[0].pc,
-				     &cond, &thread, &task, &rest);
-	  cond_string_copy.reset (cond);
-	  extra_string_copy.reset (rest);
-        }
-      else
-        {
-	  if (type_wanted != bp_dprintf
-	      && extra_string != NULL && *extra_string != '\0')
-		error (_("Garbage '%s' at end of location"), extra_string);
-
-	  /* Create a private copy of condition string.  */
-	  if (cond_string)
-	    cond_string_copy.reset (xstrdup (cond_string));
-	  /* Create a private copy of any extra string.  */
-	  if (extra_string)
-	    extra_string_copy.reset (xstrdup (extra_string));
-        }
+	  for (const auto &sal : lsal.sals)
+	    {
+	      const char *cond = cond_string_copy.get ();
+	      try
+		{
+		  parse_exp_1 (&cond, sal.pc, block_for_pc (sal.pc), 0);
+		  /* One success is sufficient to keep going.  */
+		  break;
+		}
+	      catch (const gdb_exception_error &)
+		{
+		  num_failures++;
+		  /* If this is the last sal, error out.  */
+		  if (num_failures == lsal.sals.size ())
+		    throw;
+		}
+	    }
+	}
 
       ops->create_breakpoints_sal (gdbarch, &canonical,
 				   std::move (cond_string_copy),
 				   std::move (extra_string_copy),
 				   type_wanted,
 				   tempflag ? disp_del : disp_donttouch,
-				   thread, task, ignore_count, ops,
+				   thread, task, inferior, ignore_count,
 				   from_tty, enabled, internal, flags);
     }
   else
     {
-      std::unique_ptr <breakpoint> b = new_breakpoint_from_type (type_wanted);
-
-      init_raw_breakpoint_without_location (b.get (), gdbarch, type_wanted, ops);
-      b->location = copy_event_location (location);
-
-      if (parse_extra)
-	b->cond_string = NULL;
-      else
-	{
-	  /* Create a private copy of condition string.  */
-	  b->cond_string = cond_string != NULL ? xstrdup (cond_string) : NULL;
-	  b->thread = thread;
-	}
+      std::unique_ptr <breakpoint> b = new_breakpoint_from_type (gdbarch,
+								 type_wanted);
+      b->locspec = locspec->clone ();
+
+      /* Create a private copy of the condition string.  */
+      b->cond_string = std::move (cond_string_copy);
+
+      b->thread = thread;
+      b->task = task;
+      b->inferior = inferior;
 
       /* Create a private copy of any extra string.  */
-      b->extra_string = extra_string != NULL ? xstrdup (extra_string) : NULL;
+      b->extra_string = std::move (extra_string_copy);
+
       b->ignore_count = ignore_count;
       b->disposition = tempflag ? disp_del : disp_donttouch;
       b->condition_not_parsed = 1;
       b->enable_state = enabled ? bp_enabled : bp_disabled;
-      if ((type_wanted != bp_breakpoint
-           && type_wanted != bp_hardware_breakpoint) || thread != -1)
-	b->pspace = current_program_space;
+
+      if (b->type == bp_dprintf)
+	update_dprintf_command_list (b.get ());
 
       install_breakpoint (internal, std::move (b), 0);
     }
-  
+
   if (canonical.lsals.size () > 1)
     {
       warning (_("Multiple breakpoints were set.\nUse the "
-		 "\"delete\" command to delete unwanted breakpoints."));
+		 "\"%ps\" command to delete unwanted breakpoints."),
+	       styled_string (command_style.style (), "delete"));
       prev_breakpoint_count = prev_bkpt_count;
     }
 
@@ -9383,13 +9449,16 @@ break_command_1 (const char *arg, int fl
 			     ? bp_hardware_breakpoint
 			     : bp_breakpoint);
 
-  event_location_up location = string_to_event_location (&arg, current_language);
-  const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
-    (location.get (), false /* is_tracepoint */);
+  location_spec_up locspec = string_to_location_spec (&arg, current_language);
+  const struct breakpoint_ops *ops
+    = breakpoint_ops_for_location_spec (locspec.get (),
+					false /* is_tracepoint */);
 
   create_breakpoint (get_current_arch (),
-		     location.get (),
-		     NULL, 0, arg, 1 /* parse arg */,
+		     locspec.get (),
+		     NULL,
+		     -1 /* thread */, -1 /* inferior */,
+		     arg, false, 1 /* parse arg */,
 		     tempflag, type_wanted,
 		     0 /* Ignore count */,
 		     pending_break_support,
@@ -9415,7 +9484,7 @@ resolve_sal_pc (struct symtab_and_line *
       sal->pc = pc;
 
       /* If this SAL corresponds to a breakpoint inserted using a line
-         number, then skip the function prologue if necessary.  */
+	 number, then skip the function prologue if necessary.  */
       if (sal->explicit_line)
 	skip_prologue_sal (sal);
     }
@@ -9427,29 +9496,26 @@ resolve_sal_pc (struct symtab_and_line *
       struct symbol *sym;
 
       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
-				    SYMTAB_COMPUNIT (sal->symtab));
+				    sal->symtab->compunit ());
       if (bv != NULL)
 	{
-	  sym = block_linkage_function (b);
+	  sym = b->linkage_function ();
 	  if (sym != NULL)
-	    {
-	      fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
-	      sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
-						 sym);
-	    }
+	    sal->section
+	      = sym->obj_section (sal->symtab->compunit ()->objfile ());
 	  else
 	    {
 	      /* It really is worthwhile to have the section, so we'll
-	         just have to look harder. This case can be executed
-	         if we have line numbers but no functions (as can
-	         happen in assembly source).  */
+		 just have to look harder. This case can be executed
+		 if we have line numbers but no functions (as can
+		 happen in assembly source).  */
 
 	      scoped_restore_current_pspace_and_thread restore_pspace_thread;
 	      switch_to_program_space_and_thread (sal->pspace);
 
 	      bound_minimal_symbol msym = lookup_minimal_symbol_by_pc (sal->pc);
 	      if (msym.minsym)
-		sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
+		sal->section = msym.obj_section ();
 	    }
 	}
     }
@@ -9479,79 +9545,6 @@ thbreak_command (const char *arg, int fr
   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
 }
 
-static void
-stop_command (const char *arg, int from_tty)
-{
-  printf_filtered (_("Specify the type of breakpoint to set.\n\
-Usage: stop in <function | address>\n\
-       stop at <line>\n"));
-}
-
-static void
-stopin_command (const char *arg, int from_tty)
-{
-  int badInput = 0;
-
-  if (arg == NULL)
-    badInput = 1;
-  else if (*arg != '*')
-    {
-      const char *argptr = arg;
-      int hasColon = 0;
-
-      /* Look for a ':'.  If this is a line number specification, then
-         say it is bad, otherwise, it should be an address or
-         function/method name.  */
-      while (*argptr && !hasColon)
-	{
-	  hasColon = (*argptr == ':');
-	  argptr++;
-	}
-
-      if (hasColon)
-	badInput = (*argptr != ':');	/* Not a class::method */
-      else
-	badInput = isdigit (*arg);	/* a simple line number */
-    }
-
-  if (badInput)
-    printf_filtered (_("Usage: stop in <function | address>\n"));
-  else
-    break_command_1 (arg, 0, from_tty);
-}
-
-static void
-stopat_command (const char *arg, int from_tty)
-{
-  int badInput = 0;
-
-  if (arg == NULL || *arg == '*')	/* no line number */
-    badInput = 1;
-  else
-    {
-      const char *argptr = arg;
-      int hasColon = 0;
-
-      /* Look for a ':'.  If there is a '::' then get out, otherwise
-         it is probably a line number.  */
-      while (*argptr && !hasColon)
-	{
-	  hasColon = (*argptr == ':');
-	  argptr++;
-	}
-
-      if (hasColon)
-	badInput = (*argptr == ':');	/* we have class::method */
-      else
-	badInput = !isdigit (*arg);	/* not a line number */
-    }
-
-  if (badInput)
-    printf_filtered (_("Usage: stop at LINE\n"));
-  else
-    break_command_1 (arg, 0, from_tty);
-}
-
 /* The dynamic printf command is mostly like a regular breakpoint, but
    with a prewired command list consisting of a single output command,
    built from extra arguments supplied on the dprintf command
@@ -9560,28 +9553,26 @@ stopat_command (const char *arg, int fro
 static void
 dprintf_command (const char *arg, int from_tty)
 {
-  event_location_up location = string_to_event_location (&arg, current_language);
+  location_spec_up locspec = string_to_location_spec (&arg, current_language);
 
   /* If non-NULL, ARG should have been advanced past the location;
      the next character must be ','.  */
-  if (arg != NULL)
+  if (arg == nullptr || arg[0] != ',' || arg[1] == '\0')
+    error (_("Format string required"));
+  else
     {
-      if (arg[0] != ',' || arg[1] == '\0')
-	error (_("Format string required"));
-      else
-	{
-	  /* Skip the comma.  */
-	  ++arg;
-	}
+      /* Skip the comma.  */
+      ++arg;
     }
 
   create_breakpoint (get_current_arch (),
-		     location.get (),
-		     NULL, 0, arg, 1 /* parse arg */,
+		     locspec.get (),
+		     NULL, -1, -1,
+		     arg, false, 0 /* parse arg */,
 		     0, bp_dprintf,
 		     0 /* Ignore count */,
 		     pending_break_support,
-		     &dprintf_breakpoint_ops,
+		     &code_breakpoint_ops,
 		     from_tty,
 		     1 /* enabled */,
 		     0 /* internal */,
@@ -9594,52 +9585,48 @@ agent_printf_command (const char *arg, i
   error (_("May only run agent-printf on the target"));
 }
 
-/* Implement the "breakpoint_hit" breakpoint_ops method for
-   ranged breakpoints.  */
+/* Implement the "breakpoint_hit" method for ranged breakpoints.  */
 
-static int
-breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
-				  const address_space *aspace,
-				  CORE_ADDR bp_addr,
-				  const struct target_waitstatus *ws)
+int
+ranged_breakpoint::breakpoint_hit (const struct bp_location *bl,
+				   const address_space *aspace,
+				   CORE_ADDR bp_addr,
+				   const target_waitstatus &ws)
 {
-  if (ws->kind != TARGET_WAITKIND_STOPPED
-      || ws->value.sig != GDB_SIGNAL_TRAP)
+  if (ws.kind () != TARGET_WAITKIND_STOPPED
+      || ws.sig () != GDB_SIGNAL_TRAP)
     return 0;
 
-  return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
-					 bl->length, aspace, bp_addr);
+  return breakpoint_address_match_range (bl->pspace->aspace.get (),
+					 bl->address, bl->length, aspace,
+					 bp_addr);
 }
 
-/* Implement the "resources_needed" breakpoint_ops method for
-   ranged breakpoints.  */
+/* Implement the "resources_needed" method for ranged breakpoints.  */
 
-static int
-resources_needed_ranged_breakpoint (const struct bp_location *bl)
+int
+ranged_breakpoint::resources_needed (const struct bp_location *bl)
 {
   return target_ranged_break_num_registers ();
 }
 
-/* Implement the "print_it" breakpoint_ops method for
-   ranged breakpoints.  */
+/* Implement the "print_it" method for ranged breakpoints.  */
 
-static enum print_stop_action
-print_it_ranged_breakpoint (bpstat bs)
+enum print_stop_action
+ranged_breakpoint::print_it (const bpstat *bs) const
 {
-  struct breakpoint *b = bs->breakpoint_at;
-  struct bp_location *bl = b->loc;
   struct ui_out *uiout = current_uiout;
 
-  gdb_assert (b->type == bp_hardware_breakpoint);
+  gdb_assert (type == bp_hardware_breakpoint);
 
   /* Ranged breakpoints have only one location.  */
-  gdb_assert (bl && bl->next == NULL);
+  gdb_assert (this->has_single_location ());
 
-  annotate_breakpoint (b->number);
+  annotate_breakpoint (number);
 
   maybe_print_thread_hit_breakpoint (uiout);
 
-  if (b->disposition == disp_del)
+  if (disposition == disp_del)
     uiout->text ("Temporary ranged breakpoint ");
   else
     uiout->text ("Ranged breakpoint ");
@@ -9647,96 +9634,84 @@ print_it_ranged_breakpoint (bpstat bs)
     {
       uiout->field_string ("reason",
 		      async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
-      uiout->field_string ("disp", bpdisp_text (b->disposition));
+      uiout->field_string ("disp", bpdisp_text (disposition));
     }
-  uiout->field_signed ("bkptno", b->number);
+  print_num_locno (bs, uiout);
   uiout->text (", ");
 
   return PRINT_SRC_AND_LOC;
 }
 
-/* Implement the "print_one" breakpoint_ops method for
-   ranged breakpoints.  */
+/* Implement the "print_one" method for ranged breakpoints.  */
 
-static void
-print_one_ranged_breakpoint (struct breakpoint *b,
-			     struct bp_location **last_loc)
+bool
+ranged_breakpoint::print_one (const bp_location **last_loc) const
 {
-  struct bp_location *bl = b->loc;
   struct value_print_options opts;
   struct ui_out *uiout = current_uiout;
 
   /* Ranged breakpoints have only one location.  */
-  gdb_assert (bl && bl->next == NULL);
+  gdb_assert (this->has_single_location ());
 
   get_user_print_options (&opts);
 
   if (opts.addressprint)
     /* We don't print the address range here, it will be printed later
-       by print_one_detail_ranged_breakpoint.  */
+       by ranged_breakpoint::print_one_detail.  */
     uiout->field_skip ("addr");
   annotate_field (5);
-  print_breakpoint_location (b, bl);
-  *last_loc = bl;
+  print_breakpoint_location (this, &this->first_loc ());
+  *last_loc = &this->first_loc ();
+
+  return true;
 }
 
-/* Implement the "print_one_detail" breakpoint_ops method for
-   ranged breakpoints.  */
+/* Implement the "print_one_detail" method for ranged breakpoints.  */
 
-static void
-print_one_detail_ranged_breakpoint (const struct breakpoint *b,
-				    struct ui_out *uiout)
+void
+ranged_breakpoint::print_one_detail (struct ui_out *uiout) const
 {
   CORE_ADDR address_start, address_end;
-  struct bp_location *bl = b->loc;
+  const bp_location &bl = this->first_loc ();
   string_file stb;
 
-  gdb_assert (bl);
-
-  address_start = bl->address;
-  address_end = address_start + bl->length - 1;
+  address_start = bl.address;
+  address_end = address_start + bl.length - 1;
 
   uiout->text ("\taddress range: ");
   stb.printf ("[%s, %s]",
-	      print_core_address (bl->gdbarch, address_start),
-	      print_core_address (bl->gdbarch, address_end));
+	      print_core_address (bl.gdbarch, address_start),
+	      print_core_address (bl.gdbarch, address_end));
   uiout->field_stream ("addr", stb);
   uiout->text ("\n");
 }
 
-/* Implement the "print_mention" breakpoint_ops method for
-   ranged breakpoints.  */
+/* Implement the "print_mention" method for ranged breakpoints.  */
 
-static void
-print_mention_ranged_breakpoint (struct breakpoint *b)
+void
+ranged_breakpoint::print_mention () const
 {
-  struct bp_location *bl = b->loc;
+  const bp_location &bl = this->first_loc ();
   struct ui_out *uiout = current_uiout;
 
-  gdb_assert (bl);
-  gdb_assert (b->type == bp_hardware_breakpoint);
+  gdb_assert (type == bp_hardware_breakpoint);
 
   uiout->message (_("Hardware assisted ranged breakpoint %d from %s to %s."),
-		  b->number, paddress (bl->gdbarch, bl->address),
-		  paddress (bl->gdbarch, bl->address + bl->length - 1));
+		  number, paddress (bl.gdbarch, bl.address),
+		  paddress (bl.gdbarch, bl.address + bl.length - 1));
 }
 
-/* Implement the "print_recreate" breakpoint_ops method for
-   ranged breakpoints.  */
+/* Implement the "print_recreate" method for ranged breakpoints.  */
 
-static void
-print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
+void
+ranged_breakpoint::print_recreate (struct ui_file *fp) const
 {
-  fprintf_unfiltered (fp, "break-range %s, %s",
-		      event_location_to_string (b->location.get ()),
-		      event_location_to_string (b->location_range_end.get ()));
-  print_recreate_thread (b, fp);
+  gdb_printf (fp, "break-range %s, %s",
+	      locspec->to_string (),
+	      locspec_range_end->to_string ());
+  print_recreate_thread (fp);
 }
 
-/* The breakpoint_ops structure to be used in ranged breakpoints.  */
-
-static struct breakpoint_ops ranged_breakpoint_ops;
-
 /* Find the address where the end of the breakpoint range should be
    placed, given the SAL of the end of the range.  This is so that if
    the user provides a line number, the end of the range is set to the
@@ -9776,7 +9751,6 @@ break_range_command (const char *arg, in
   struct linespec_result canonical_start, canonical_end;
   int bp_count, can_use_bp, length;
   CORE_ADDR end;
-  struct breakpoint *b;
 
   /* We don't support software ranged breakpoints.  */
   if (target_ranged_break_num_registers () < 0)
@@ -9794,9 +9768,9 @@ break_range_command (const char *arg, in
     error(_("No address range specified."));
 
   arg_start = arg;
-  event_location_up start_location = string_to_event_location (&arg,
-							       current_language);
-  parse_breakpoint_sals (start_location.get (), &canonical_start);
+  location_spec_up start_locspec
+    = string_to_location_spec (&arg, current_language);
+  parse_breakpoint_sals (start_locspec.get (), &canonical_start, nullptr);
 
   if (arg[0] != ',')
     error (_("Too few arguments."));
@@ -9815,18 +9789,19 @@ break_range_command (const char *arg, in
   arg++;	/* Skip the comma.  */
   arg = skip_spaces (arg);
 
-  /* Parse the end location.  */
+  /* Parse the end location specification.  */
 
   arg_start = arg;
 
   /* We call decode_line_full directly here instead of using
-     parse_breakpoint_sals because we need to specify the start location's
-     symtab and line as the default symtab and line for the end of the
-     range.  This makes it possible to have ranges like "foo.c:27, +14",
-     where +14 means 14 lines from the start location.  */
-  event_location_up end_location = string_to_event_location (&arg,
-							     current_language);
-  decode_line_full (end_location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
+     parse_breakpoint_sals because we need to specify the start
+     location spec's symtab and line as the default symtab and line
+     for the end of the range.  This makes it possible to have ranges
+     like "foo.c:27, +14", where +14 means 14 lines from the start
+     location spec.  */
+  location_spec_up end_locspec
+    = string_to_location_spec (&arg, current_language);
+  decode_line_full (end_locspec.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
 		    sal_start.symtab, sal_start.line,
 		    &canonical_end, NULL, NULL);
 
@@ -9857,149 +9832,47 @@ break_range_command (const char *arg, in
       return;
     }
 
-  /* Now set up the breakpoint.  */
-  b = set_raw_breakpoint (get_current_arch (), sal_start,
-			  bp_hardware_breakpoint, &ranged_breakpoint_ops);
-  set_breakpoint_count (breakpoint_count + 1);
-  b->number = breakpoint_count;
-  b->disposition = disp_donttouch;
-  b->location = std::move (start_location);
-  b->location_range_end = std::move (end_location);
-  b->loc->length = length;
+  /* Now set up the breakpoint and install it.  */
 
-  mention (b);
-  gdb::observers::breakpoint_created.notify (b);
-  update_global_location_list (UGLL_MAY_INSERT);
+  std::unique_ptr<breakpoint> br
+    (new ranged_breakpoint (get_current_arch (),
+			    sal_start, length,
+			    std::move (start_locspec),
+			    std::move (end_locspec)));
+
+  install_breakpoint (false, std::move (br), true);
 }
 
-/*  Return non-zero if EXP is verified as constant.  Returned zero
-    means EXP is variable.  Also the constant detection may fail for
-    some constant expressions and in such case still falsely return
-    zero.  */
+/* See breakpoint.h.  */
 
-static int
-watchpoint_exp_is_const (const struct expression *exp)
+watchpoint::~watchpoint ()
 {
-  int i = exp->nelts;
-
-  while (i > 0)
-    {
-      int oplenp, argsp;
-
-      /* We are only interested in the descriptor of each element.  */
-      operator_length (exp, i, &oplenp, &argsp);
-      i -= oplenp;
-
-      switch (exp->elts[i].opcode)
-	{
-	case BINOP_ADD:
-	case BINOP_SUB:
-	case BINOP_MUL:
-	case BINOP_DIV:
-	case BINOP_REM:
-	case BINOP_MOD:
-	case BINOP_LSH:
-	case BINOP_RSH:
-	case BINOP_LOGICAL_AND:
-	case BINOP_LOGICAL_OR:
-	case BINOP_BITWISE_AND:
-	case BINOP_BITWISE_IOR:
-	case BINOP_BITWISE_XOR:
-	case BINOP_EQUAL:
-	case BINOP_NOTEQUAL:
-	case BINOP_LESS:
-	case BINOP_GTR:
-	case BINOP_LEQ:
-	case BINOP_GEQ:
-	case BINOP_REPEAT:
-	case BINOP_COMMA:
-	case BINOP_EXP:
-	case BINOP_MIN:
-	case BINOP_MAX:
-	case BINOP_INTDIV:
-	case BINOP_CONCAT:
-	case TERNOP_COND:
-	case TERNOP_SLICE:
-
-	case OP_LONG:
-	case OP_FLOAT:
-	case OP_LAST:
-	case OP_COMPLEX:
-	case OP_STRING:
-	case OP_ARRAY:
-	case OP_TYPE:
-	case OP_TYPEOF:
-	case OP_DECLTYPE:
-	case OP_TYPEID:
-	case OP_NAME:
-	case OP_OBJC_NSSTRING:
-
-	case UNOP_NEG:
-	case UNOP_LOGICAL_NOT:
-	case UNOP_COMPLEMENT:
-	case UNOP_ADDR:
-	case UNOP_HIGH:
-	case UNOP_CAST:
-
-	case UNOP_CAST_TYPE:
-	case UNOP_REINTERPRET_CAST:
-	case UNOP_DYNAMIC_CAST:
-	  /* Unary, binary and ternary operators: We have to check
-	     their operands.  If they are constant, then so is the
-	     result of that operation.  For instance, if A and B are
-	     determined to be constants, then so is "A + B".
-
-	     UNOP_IND is one exception to the rule above, because the
-	     value of *ADDR is not necessarily a constant, even when
-	     ADDR is.  */
-	  break;
+  /* Make sure to unlink the destroyed watchpoint from the related
+     breakpoint ring.  */
 
-	case OP_VAR_VALUE:
-	  /* Check whether the associated symbol is a constant.
+  breakpoint *bpt = this;
+  while (bpt->related_breakpoint != this)
+    bpt = bpt->related_breakpoint;
 
-	     We use SYMBOL_CLASS rather than TYPE_CONST because it's
-	     possible that a buggy compiler could mark a variable as
-	     constant even when it is not, and TYPE_CONST would return
-	     true in this case, while SYMBOL_CLASS wouldn't.
-
-	     We also have to check for function symbols because they
-	     are always constant.  */
-	  {
-	    struct symbol *s = exp->elts[i + 2].symbol;
-
-	    if (SYMBOL_CLASS (s) != LOC_BLOCK
-		&& SYMBOL_CLASS (s) != LOC_CONST
-		&& SYMBOL_CLASS (s) != LOC_CONST_BYTES)
-	      return 0;
-	    break;
-	  }
-
-	/* The default action is to return 0 because we are using
-	   the optimistic approach here: If we don't know something,
-	   then it is not a constant.  */
-	default:
-	  return 0;
-	}
-    }
-
-  return 1;
+  bpt->related_breakpoint = this->related_breakpoint;
 }
 
-/* Watchpoint destructor.  */
+/*  Return non-zero if EXP is verified as constant.  Returned zero
+    means EXP is variable.  Also the constant detection may fail for
+    some constant expressions and in such case still falsely return
+    zero.  */
 
-watchpoint::~watchpoint ()
+static bool
+watchpoint_exp_is_const (const struct expression *exp)
 {
-  xfree (this->exp_string);
-  xfree (this->exp_string_reparse);
+  return exp->op->constant_p ();
 }
 
-/* Implement the "re_set" breakpoint_ops method for watchpoints.  */
+/* Implement the "re_set" method for watchpoints.  */
 
-static void
-re_set_watchpoint (struct breakpoint *b)
+void
+watchpoint::re_set (struct program_space *pspace)
 {
-  struct watchpoint *w = (struct watchpoint *) b;
-
   /* Watchpoint can be either on expression using entirely global
      variables, or it can be on local variables.
 
@@ -10021,44 +9894,42 @@ re_set_watchpoint (struct breakpoint *b)
      I'm not sure we'll ever be called in this case.
 
      If a local watchpoint's frame id is still valid, then
-     w->exp_valid_block is likewise valid, and we can safely use it.
+     exp_valid_block is likewise valid, and we can safely use it.
 
      Don't do anything about disabled watchpoints, since they will be
      reevaluated again when enabled.  */
-  update_watchpoint (w, 1 /* reparse */);
+  update_watchpoint (this, true /* reparse */);
 }
 
-/* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
+/* Implement the "insert" method for hardware watchpoints.  */
 
-static int
-insert_watchpoint (struct bp_location *bl)
+int
+watchpoint::insert_location (struct bp_location *bl)
 {
-  struct watchpoint *w = (struct watchpoint *) bl->owner;
-  int length = w->exact ? 1 : bl->length;
+  int length = exact ? 1 : bl->length;
 
   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
-				   w->cond_exp.get ());
+				   cond_exp.get ());
 }
 
-/* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
+/* Implement the "remove" method for hardware watchpoints.  */
 
-static int
-remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
+int
+watchpoint::remove_location (struct bp_location *bl,
+			     enum remove_bp_reason reason)
 {
-  struct watchpoint *w = (struct watchpoint *) bl->owner;
-  int length = w->exact ? 1 : bl->length;
+  int length = exact ? 1 : bl->length;
 
   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
-				   w->cond_exp.get ());
+				   cond_exp.get ());
 }
 
-static int
-breakpoint_hit_watchpoint (const struct bp_location *bl,
-			   const address_space *aspace, CORE_ADDR bp_addr,
-			   const struct target_waitstatus *ws)
+int
+watchpoint::breakpoint_hit (const struct bp_location *bl,
+			    const address_space *aspace, CORE_ADDR bp_addr,
+			    const target_waitstatus &ws)
 {
   struct breakpoint *b = bl->owner;
-  struct watchpoint *w = (struct watchpoint *) b;
 
   /* Continuable hardware watchpoints are treated as non-existent if the
      reason we stopped wasn't a hardware watchpoint (we didn't stop on
@@ -10067,75 +9938,67 @@ breakpoint_hit_watchpoint (const struct
      been defined.  Also skip watchpoints which we know did not trigger
      (did not match the data address).  */
   if (is_hardware_watchpoint (b)
-      && w->watchpoint_triggered == watch_triggered_no)
+      && watchpoint_triggered == watch_triggered_no)
     return 0;
 
   return 1;
 }
 
-static void
-check_status_watchpoint (bpstat bs)
+void
+watchpoint::check_status (bpstat *bs)
 {
-  gdb_assert (is_watchpoint (bs->breakpoint_at));
-
   bpstat_check_watchpoint (bs);
 }
 
-/* Implement the "resources_needed" breakpoint_ops method for
-   hardware watchpoints.  */
+/* Implement the "resources_needed" method for hardware
+   watchpoints.  */
 
-static int
-resources_needed_watchpoint (const struct bp_location *bl)
+int
+watchpoint::resources_needed (const struct bp_location *bl)
 {
-  struct watchpoint *w = (struct watchpoint *) bl->owner;
-  int length = w->exact? 1 : bl->length;
+  int length = exact? 1 : bl->length;
 
   return target_region_ok_for_hw_watchpoint (bl->address, length);
 }
 
-/* Implement the "works_in_software_mode" breakpoint_ops method for
-   hardware watchpoints.  */
+/* Implement the "works_in_software_mode" method for hardware
+   watchpoints.  */
 
-static int
-works_in_software_mode_watchpoint (const struct breakpoint *b)
+bool
+watchpoint::works_in_software_mode () const
 {
   /* Read and access watchpoints only work with hardware support.  */
-  return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
+  return type == bp_watchpoint || type == bp_hardware_watchpoint;
 }
 
-static enum print_stop_action
-print_it_watchpoint (bpstat bs)
+enum print_stop_action
+watchpoint::print_it (const bpstat *bs) const
 {
-  struct breakpoint *b;
   enum print_stop_action result;
-  struct watchpoint *w;
   struct ui_out *uiout = current_uiout;
 
   gdb_assert (bs->bp_location_at != NULL);
 
-  b = bs->breakpoint_at;
-  w = (struct watchpoint *) b;
-
-  annotate_watchpoint (b->number);
+  annotate_watchpoint (this->number);
   maybe_print_thread_hit_breakpoint (uiout);
 
   string_file stb;
 
-  gdb::optional<ui_out_emit_tuple> tuple_emitter;
-  switch (b->type)
+  std::optional<ui_out_emit_tuple> tuple_emitter;
+  switch (this->type)
     {
     case bp_watchpoint:
     case bp_hardware_watchpoint:
       if (uiout->is_mi_like_p ())
 	uiout->field_string
 	  ("reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
-      mention (b);
+      mention (this);
       tuple_emitter.emplace (uiout, "value");
       uiout->text ("\nOld value = ");
       watchpoint_value_print (bs->old_val.get (), &stb);
       uiout->field_stream ("old", stb);
       uiout->text ("\nNew value = ");
-      watchpoint_value_print (w->val.get (), &stb);
+      watchpoint_value_print (val.get (), &stb);
       uiout->field_stream ("new", stb);
       uiout->text ("\n");
       /* More than one watchpoint may have been triggered.  */
@@ -10146,10 +10009,10 @@ print_it_watchpoint (bpstat bs)
       if (uiout->is_mi_like_p ())
 	uiout->field_string
 	  ("reason", async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
-      mention (b);
+      mention (this);
       tuple_emitter.emplace (uiout, "value");
       uiout->text ("\nValue = ");
-      watchpoint_value_print (w->val.get (), &stb);
+      watchpoint_value_print (val.get (), &stb);
       uiout->field_stream ("value", stb);
       uiout->text ("\n");
       result = PRINT_UNKNOWN;
@@ -10162,7 +10025,7 @@ print_it_watchpoint (bpstat bs)
 	    uiout->field_string
 	      ("reason",
 	       async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
-	  mention (b);
+	  mention (this);
 	  tuple_emitter.emplace (uiout, "value");
 	  uiout->text ("\nOld value = ");
 	  watchpoint_value_print (bs->old_val.get (), &stb);
@@ -10171,7 +10034,7 @@ print_it_watchpoint (bpstat bs)
 	}
       else
 	{
-	  mention (b);
+	  mention (this);
 	  if (uiout->is_mi_like_p ())
 	    uiout->field_string
 	      ("reason",
@@ -10179,7 +10042,7 @@ print_it_watchpoint (bpstat bs)
 	  tuple_emitter.emplace (uiout, "value");
 	  uiout->text ("\nValue = ");
 	}
-      watchpoint_value_print (w->val.get (), &stb);
+      watchpoint_value_print (val.get (), &stb);
       uiout->field_stream ("new", stb);
       uiout->text ("\n");
       result = PRINT_UNKNOWN;
@@ -10191,17 +10054,15 @@ print_it_watchpoint (bpstat bs)
   return result;
 }
 
-/* Implement the "print_mention" breakpoint_ops method for hardware
-   watchpoints.  */
+/* Implement the "print_mention" method for hardware watchpoints.  */
 
-static void
-print_mention_watchpoint (struct breakpoint *b)
+void
+watchpoint::print_mention () const
 {
-  struct watchpoint *w = (struct watchpoint *) b;
   struct ui_out *uiout = current_uiout;
   const char *tuple_name;
 
-  switch (b->type)
+  switch (type)
     {
     case bp_watchpoint:
       uiout->text ("Watchpoint ");
@@ -10220,123 +10081,120 @@ print_mention_watchpoint (struct breakpo
       tuple_name = "hw-awpt";
       break;
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("Invalid hardware watchpoint type."));
+      internal_error (_("Invalid hardware watchpoint type."));
     }
 
   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
-  uiout->field_signed ("number", b->number);
+  uiout->field_signed ("number", number);
   uiout->text (": ");
-  uiout->field_string ("exp", w->exp_string);
+  uiout->field_string ("exp", exp_string.get ());
 }
 
-/* Implement the "print_recreate" breakpoint_ops method for
-   watchpoints.  */
+/* Implement the "print_recreate" method for watchpoints.  */
 
-static void
-print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
+void
+watchpoint::print_recreate (struct ui_file *fp) const
 {
-  struct watchpoint *w = (struct watchpoint *) b;
-
-  switch (b->type)
+  switch (type)
     {
     case bp_watchpoint:
     case bp_hardware_watchpoint:
-      fprintf_unfiltered (fp, "watch");
+      gdb_printf (fp, "watch");
       break;
     case bp_read_watchpoint:
-      fprintf_unfiltered (fp, "rwatch");
+      gdb_printf (fp, "rwatch");
       break;
     case bp_access_watchpoint:
-      fprintf_unfiltered (fp, "awatch");
+      gdb_printf (fp, "awatch");
       break;
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("Invalid watchpoint type."));
+      internal_error (_("Invalid watchpoint type."));
     }
 
-  fprintf_unfiltered (fp, " %s", w->exp_string);
-  print_recreate_thread (b, fp);
+  gdb_printf (fp, " %s", exp_string.get ());
+  print_recreate_thread (fp);
 }
 
-/* Implement the "explains_signal" breakpoint_ops method for
-   watchpoints.  */
+/* Implement the "explains_signal" method for watchpoints.  */
 
-static int
-explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
+bool
+watchpoint::explains_signal (enum gdb_signal sig)
 {
   /* A software watchpoint cannot cause a signal other than
      GDB_SIGNAL_TRAP.  */
-  if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
-    return 0;
+  if (type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
+    return false;
 
-  return 1;
+  return true;
 }
 
-/* The breakpoint_ops structure to be used in hardware watchpoints.  */
+struct masked_watchpoint : public watchpoint
+{
+  using watchpoint::watchpoint;
 
-static struct breakpoint_ops watchpoint_breakpoint_ops;
+  int insert_location (struct bp_location *) override;
+  int remove_location (struct bp_location *,
+		       enum remove_bp_reason reason) override;
+  int resources_needed (const struct bp_location *) override;
+  bool works_in_software_mode () const override;
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  void print_one_detail (struct ui_out *) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+};
 
-/* Implement the "insert" breakpoint_ops method for
-   masked hardware watchpoints.  */
+/* Implement the "insert" method for masked hardware watchpoints.  */
 
-static int
-insert_masked_watchpoint (struct bp_location *bl)
+int
+masked_watchpoint::insert_location (struct bp_location *bl)
 {
-  struct watchpoint *w = (struct watchpoint *) bl->owner;
-
-  return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
+  return target_insert_mask_watchpoint (bl->address, hw_wp_mask,
 					bl->watchpoint_type);
 }
 
-/* Implement the "remove" breakpoint_ops method for
-   masked hardware watchpoints.  */
+/* Implement the "remove" method for masked hardware watchpoints.  */
 
-static int
-remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
+int
+masked_watchpoint::remove_location (struct bp_location *bl,
+				    enum remove_bp_reason reason)
 {
-  struct watchpoint *w = (struct watchpoint *) bl->owner;
-
-  return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
-				        bl->watchpoint_type);
+  return target_remove_mask_watchpoint (bl->address, hw_wp_mask,
+					bl->watchpoint_type);
 }
 
-/* Implement the "resources_needed" breakpoint_ops method for
-   masked hardware watchpoints.  */
+/* Implement the "resources_needed" method for masked hardware
+   watchpoints.  */
 
-static int
-resources_needed_masked_watchpoint (const struct bp_location *bl)
+int
+masked_watchpoint::resources_needed (const struct bp_location *bl)
 {
-  struct watchpoint *w = (struct watchpoint *) bl->owner;
-
-  return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
+  return target_masked_watch_num_registers (bl->address, hw_wp_mask);
 }
 
-/* Implement the "works_in_software_mode" breakpoint_ops method for
-   masked hardware watchpoints.  */
+/* Implement the "works_in_software_mode" method for masked hardware
+   watchpoints.  */
 
-static int
-works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
+bool
+masked_watchpoint::works_in_software_mode () const
 {
-  return 0;
+  return false;
 }
 
-/* Implement the "print_it" breakpoint_ops method for
-   masked hardware watchpoints.  */
+/* Implement the "print_it" method for masked hardware
+   watchpoints.  */
 
-static enum print_stop_action
-print_it_masked_watchpoint (bpstat bs)
+enum print_stop_action
+masked_watchpoint::print_it (const bpstat *bs) const
 {
-  struct breakpoint *b = bs->breakpoint_at;
   struct ui_out *uiout = current_uiout;
 
   /* Masked watchpoints have only one location.  */
-  gdb_assert (b->loc && b->loc->next == NULL);
+  gdb_assert (this->has_single_location ());
 
-  annotate_watchpoint (b->number);
+  annotate_watchpoint (this->number);
   maybe_print_thread_hit_breakpoint (uiout);
 
-  switch (b->type)
+  switch (this->type)
     {
     case bp_hardware_watchpoint:
       if (uiout->is_mi_like_p ())
@@ -10357,11 +10215,10 @@ print_it_masked_watchpoint (bpstat bs)
 	   async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
       break;
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("Invalid hardware watchpoint type."));
+      internal_error (_("Invalid hardware watchpoint type."));
     }
 
-  mention (b);
+  mention (this);
   uiout->text (_("\n\
 Check the underlying instruction at PC for the memory\n\
 address and value which triggered this watchpoint.\n"));
@@ -10371,34 +10228,30 @@ address and value which triggered this w
   return PRINT_UNKNOWN;
 }
 
-/* Implement the "print_one_detail" breakpoint_ops method for
-   masked hardware watchpoints.  */
+/* Implement the "print_one_detail" method for masked hardware
+   watchpoints.  */
 
-static void
-print_one_detail_masked_watchpoint (const struct breakpoint *b,
-				    struct ui_out *uiout)
+void
+masked_watchpoint::print_one_detail (struct ui_out *uiout) const
 {
-  struct watchpoint *w = (struct watchpoint *) b;
-
   /* Masked watchpoints have only one location.  */
-  gdb_assert (b->loc && b->loc->next == NULL);
+  gdb_assert (this->has_single_location ());
 
   uiout->text ("\tmask ");
-  uiout->field_core_addr ("mask", b->loc->gdbarch, w->hw_wp_mask);
+  uiout->field_core_addr ("mask", this->first_loc ().gdbarch, hw_wp_mask);
   uiout->text ("\n");
 }
 
-/* Implement the "print_mention" breakpoint_ops method for
-   masked hardware watchpoints.  */
+/* Implement the "print_mention" method for masked hardware
+   watchpoints.  */
 
-static void
-print_mention_masked_watchpoint (struct breakpoint *b)
+void
+masked_watchpoint::print_mention () const
 {
-  struct watchpoint *w = (struct watchpoint *) b;
   struct ui_out *uiout = current_uiout;
   const char *tuple_name;
 
-  switch (b->type)
+  switch (type)
     {
     case bp_hardware_watchpoint:
       uiout->text ("Masked hardware watchpoint ");
@@ -10413,64 +10266,55 @@ print_mention_masked_watchpoint (struct
       tuple_name = "hw-awpt";
       break;
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("Invalid hardware watchpoint type."));
+      internal_error (_("Invalid hardware watchpoint type."));
     }
 
   ui_out_emit_tuple tuple_emitter (uiout, tuple_name);
-  uiout->field_signed ("number", b->number);
+  uiout->field_signed ("number", number);
   uiout->text (": ");
-  uiout->field_string ("exp", w->exp_string);
+  uiout->field_string ("exp", exp_string.get ());
 }
 
-/* Implement the "print_recreate" breakpoint_ops method for
-   masked hardware watchpoints.  */
+/* Implement the "print_recreate" method for masked hardware
+   watchpoints.  */
 
-static void
-print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
+void
+masked_watchpoint::print_recreate (struct ui_file *fp) const
 {
-  struct watchpoint *w = (struct watchpoint *) b;
-  char tmp[40];
-
-  switch (b->type)
+  switch (type)
     {
     case bp_hardware_watchpoint:
-      fprintf_unfiltered (fp, "watch");
+      gdb_printf (fp, "watch");
       break;
     case bp_read_watchpoint:
-      fprintf_unfiltered (fp, "rwatch");
+      gdb_printf (fp, "rwatch");
       break;
     case bp_access_watchpoint:
-      fprintf_unfiltered (fp, "awatch");
+      gdb_printf (fp, "awatch");
       break;
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("Invalid hardware watchpoint type."));
+      internal_error (_("Invalid hardware watchpoint type."));
     }
 
-  sprintf_vma (tmp, w->hw_wp_mask);
-  fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
-  print_recreate_thread (b, fp);
+  gdb_printf (fp, " %s mask 0x%s", exp_string.get (),
+	      phex (hw_wp_mask));
+  print_recreate_thread (fp);
 }
 
-/* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
-
-static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
-
 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
 
 static bool
 is_masked_watchpoint (const struct breakpoint *b)
 {
-  return b->ops == &masked_watchpoint_breakpoint_ops;
+  return dynamic_cast<const masked_watchpoint *> (b) != nullptr;
 }
 
 /* accessflag:  hw_write:  watch write, 
-                hw_read:   watch read, 
+		hw_read:   watch read, 
 		hw_access: watch access (read or write) */
 static void
 watch_command_1 (const char *arg, int accessflag, int from_tty,
-		 int just_location, int internal)
+		 bool just_location, bool internal)
 {
   struct breakpoint *scope_breakpoint = NULL;
   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
@@ -10484,11 +10328,12 @@ watch_command_1 (const char *arg, int ac
   const char *cond_end = NULL;
   enum bptype bp_type;
   int thread = -1;
-  int pc = 0;
+  int inferior = -1;
   /* Flag to indicate whether we are going to use masks for
      the hardware watchpoint.  */
-  int use_mask = 0;
+  bool use_mask = false;
   CORE_ADDR mask = 0;
+  int task = -1;
 
   /* Make sure that we actually have parameters to parse.  */
   if (arg != NULL && arg[0] != '\0')
@@ -10535,31 +10380,58 @@ watch_command_1 (const char *arg, int ac
 	      if (thread != -1)
 		error(_("You can specify only one thread."));
 
+	      if (task != -1)
+		error (_("You can specify only one of thread or task."));
+
+	      if (inferior != -1)
+		error (_("You can specify only one of inferior or thread."));
+
 	      /* Extract the thread ID from the next token.  */
 	      thr = parse_thread_id (value_start, &endp);
-
-	      /* Check if the user provided a valid thread ID.  */
-	      if (*endp != ' ' && *endp != '\t' && *endp != '\0')
-		invalid_thread_id_error (value_start);
+	      if (value_start == endp)
+		error (_("Junk after thread keyword."));
 
 	      thread = thr->global_num;
 	    }
+	  else if (toklen == 4 && startswith (tok, "task"))
+	    {
+	      char *tmp;
+
+	      if (task != -1)
+		error(_("You can specify only one task."));
+
+	      if (thread != -1)
+		error (_("You can specify only one of thread or task."));
+
+	      if (inferior != -1)
+		error (_("You can specify only one of inferior or task."));
+
+	      task = strtol (value_start, &tmp, 0);
+	      if (tmp == value_start)
+		error (_("Junk after task keyword."));
+	      if (!valid_task_id (task))
+		error (_("Unknown task %d."), task);
+	    }
+	  else if (toklen == 8 && startswith (tok, "inferior"))
+	    {
+	      /* Support for watchpoints will be added in a later commit.  */
+	      error (_("Cannot use 'inferior' keyword with watchpoints"));
+	    }
 	  else if (toklen == 4 && startswith (tok, "mask"))
 	    {
 	      /* We've found a "mask" token, which means the user wants to
 		 create a hardware watchpoint that is going to have the mask
 		 facility.  */
-	      struct value *mask_value, *mark;
+	      struct value *mask_value;
 
 	      if (use_mask)
 		error(_("You can specify only one mask."));
 
-	      use_mask = just_location = 1;
+	      use_mask = just_location = true;
 
-	      mark = value_mark ();
+	      scoped_value_mark mark;
 	      mask_value = parse_to_comma_and_eval (&value_start);
 	      mask = value_as_address (mask_value);
-	      value_free_to_mark (mark);
 	    }
 	  else
 	    /* We didn't recognize what we found.  We should stop here.  */
@@ -10601,13 +10473,13 @@ watch_command_1 (const char *arg, int ac
   exp_valid_block = tracker.block ();
   struct value *mark = value_mark ();
   struct value *val_as_value = nullptr;
-  fetch_subexp_value (exp.get (), &pc, &val_as_value, &result, NULL,
+  fetch_subexp_value (exp.get (), exp->op.get (), &val_as_value, &result, NULL,
 		      just_location);
 
   if (val_as_value != NULL && just_location)
     {
-      saved_bitpos = value_bitpos (val_as_value);
-      saved_bitsize = value_bitsize (val_as_value);
+      saved_bitpos = val_as_value->bitpos ();
+      saved_bitsize = val_as_value->bitsize ();
     }
 
   value_ref_ptr val;
@@ -10651,51 +10523,12 @@ watch_command_1 (const char *arg, int ac
   if (*tok)
     error (_("Junk at end of command."));
 
-  frame_info *wp_frame = block_innermost_frame (exp_valid_block);
+  frame_info_ptr wp_frame = block_innermost_frame (exp_valid_block);
 
   /* Save this because create_internal_breakpoint below invalidates
      'wp_frame'.  */
   frame_id watchpoint_frame = get_frame_id (wp_frame);
 
-  /* If the expression is "local", then set up a "watchpoint scope"
-     breakpoint at the point where we've left the scope of the watchpoint
-     expression.  Create the scope breakpoint before the watchpoint, so
-     that we will encounter it first in bpstat_stop_status.  */
-  if (exp_valid_block != NULL && wp_frame != NULL)
-    {
-      frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
-
-      if (frame_id_p (caller_frame_id))
-	{
-	  gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
-	  CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
-
- 	  scope_breakpoint
-	    = create_internal_breakpoint (caller_arch, caller_pc,
-					  bp_watchpoint_scope,
-					  &momentary_breakpoint_ops);
-
-	  /* create_internal_breakpoint could invalidate WP_FRAME.  */
-	  wp_frame = NULL;
-
-	  scope_breakpoint->enable_state = bp_enabled;
-
-	  /* Automatically delete the breakpoint when it hits.  */
-	  scope_breakpoint->disposition = disp_del;
-
-	  /* Only break in the proper frame (help with recursion).  */
-	  scope_breakpoint->frame_id = caller_frame_id;
-
-	  /* Set the address at which we will stop.  */
-	  scope_breakpoint->loc->gdbarch = caller_arch;
-	  scope_breakpoint->loc->requested_address = caller_pc;
-	  scope_breakpoint->loc->address
-	    = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
-					 scope_breakpoint->loc->requested_address,
-					 scope_breakpoint->type);
-	}
-    }
-
   /* Now set up the breakpoint.  We create all watchpoints as hardware
      watchpoints here even if hardware watchpoints are turned off, a call
      to update_watchpoint later in this function will cause the type to
@@ -10708,15 +10541,17 @@ watch_command_1 (const char *arg, int ac
   else
     bp_type = bp_hardware_watchpoint;
 
-  std::unique_ptr<watchpoint> w (new watchpoint ());
-
+  std::unique_ptr<watchpoint> w;
   if (use_mask)
-    init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
-					  &masked_watchpoint_breakpoint_ops);
+    w = std::make_unique<masked_watchpoint> (nullptr, bp_type);
   else
-    init_raw_breakpoint_without_location (w.get (), NULL, bp_type,
-					  &watchpoint_breakpoint_ops);
+    w = std::make_unique<watchpoint> (nullptr, bp_type);
+
+  /* At most one of thread or task can be set on a watchpoint.  */
+  gdb_assert (thread == -1 || task == -1);
   w->thread = thread;
+  w->inferior = inferior;
+  w->task = task;
   w->disposition = disp_donttouch;
   w->pspace = current_program_space;
   w->exp = std::move (exp);
@@ -10724,17 +10559,17 @@ watch_command_1 (const char *arg, int ac
   w->cond_exp_valid_block = cond_exp_valid_block;
   if (just_location)
     {
-      struct type *t = value_type (val.get ());
+      struct type *t = val->type ();
       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);
 
       w->exp_string = xstrprintf ("-location %.*s",
 				  (int) (exp_end - exp_start), exp_start);
     }
   else
-    w->exp_string = savestring (exp_start, exp_end - exp_start);
+    w->exp_string.reset (savestring (exp_start, exp_end - exp_start));
 
   if (use_mask)
     {
@@ -10749,7 +10584,7 @@ watch_command_1 (const char *arg, int ac
     }
 
   if (cond_start)
-    w->cond_string = savestring (cond_start, cond_end - cond_start);
+    w->cond_string.reset (savestring (cond_start, cond_end - cond_start));
   else
     w->cond_string = 0;
 
@@ -10764,7 +10599,53 @@ watch_command_1 (const char *arg, int ac
       w->watchpoint_thread = null_ptid;
     }
 
-  if (scope_breakpoint != NULL)
+  if (!just_location)
+    value_free_to_mark (mark);
+
+  /* Finally update the new watchpoint.  This creates the locations
+     that should be inserted.  */
+  update_watchpoint (w.get (), true /* reparse */);
+
+  /* If the expression is "local", then set up a "watchpoint scope"
+     breakpoint at the point where we've left the scope of the watchpoint
+     expression.  Create the scope breakpoint before the watchpoint, so
+     that we will encounter it first in bpstat_stop_status.  */
+  if (exp_valid_block != nullptr && wp_frame != nullptr)
+    {
+      frame_id caller_frame_id = frame_unwind_caller_id (wp_frame);
+
+      if (frame_id_p (caller_frame_id))
+	{
+	  gdbarch *caller_arch = frame_unwind_caller_arch (wp_frame);
+	  CORE_ADDR caller_pc = frame_unwind_caller_pc (wp_frame);
+
+	  scope_breakpoint
+	    = create_internal_breakpoint (caller_arch, caller_pc,
+					  bp_watchpoint_scope);
+
+	  /* create_internal_breakpoint could invalidate WP_FRAME.  */
+	  wp_frame = nullptr;
+
+	  scope_breakpoint->enable_state = bp_enabled;
+
+	  /* Automatically delete the breakpoint when it hits.  */
+	  scope_breakpoint->disposition = disp_del;
+
+	  /* Only break in the proper frame (help with recursion).  */
+	  scope_breakpoint->frame_id = caller_frame_id;
+
+	  /* Set the address at which we will stop.  */
+	  bp_location &loc = scope_breakpoint->first_loc ();
+	  loc.gdbarch = caller_arch;
+	  loc.requested_address = caller_pc;
+	  loc.address
+	    = adjust_breakpoint_address (loc.gdbarch, loc.requested_address,
+					 scope_breakpoint->type,
+					 current_program_space);
+	}
+  }
+
+  if (scope_breakpoint != nullptr)
     {
       /* The scope breakpoint is related to the watchpoint.  We will
 	 need to act on them together.  */
@@ -10772,14 +10653,13 @@ watch_command_1 (const char *arg, int ac
       scope_breakpoint->related_breakpoint = w.get ();
     }
 
-  if (!just_location)
-    value_free_to_mark (mark);
-
-  /* Finally update the new watchpoint.  This creates the locations
-     that should be inserted.  */
-  update_watchpoint (w.get (), 1);
-
+  /* Verify that the scope breakpoint comes before the watchpoint in the
+     breakpoint chain.  */
+  gdb_assert (scope_breakpoint == nullptr
+	      || &breakpoint_chain.back () == scope_breakpoint);
+  watchpoint *watchpoint_ptr = w.get ();
   install_breakpoint (internal, std::move (w), 1);
+  gdb_assert (&breakpoint_chain.back () == watchpoint_ptr);
 }
 
 /* Return count of debug registers needed to watch the given expression.
@@ -10820,9 +10700,9 @@ can_use_hardware_watchpoint (const std::
     {
       struct value *v = iter.get ();
 
-      if (VALUE_LVAL (v) == lval_memory)
+      if (v->lval () == lval_memory)
 	{
-	  if (v != head && value_lazy (v))
+	  if (v != head && v->lazy ())
 	    /* A lazy memory lvalue in the chain is one that GDB never
 	       needed to fetch; we either just used its address (e.g.,
 	       `a' in `a.b') or we never needed it at all (e.g., `a'
@@ -10832,23 +10712,23 @@ can_use_hardware_watchpoint (const std::
 	  else
 	    {
 	      /* Ahh, memory we actually used!  Check if we can cover
-                 it with hardware watchpoints.  */
-	      struct type *vtype = check_typedef (value_type (v));
+		 it with hardware watchpoints.  */
+	      struct type *vtype = check_typedef (v->type ());
 
 	      /* We only watch structs and arrays if user asked for it
 		 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);
+		  CORE_ADDR vaddr = v->address ();
 		  int len;
 		  int num_regs;
 
 		  len = (target_exact_watchpoints
 			 && is_scalar_type_recursive (vtype))?
-		    1 : TYPE_LENGTH (value_type (v));
+		    1 : v->type ()->length ();
 
 		  num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
 		  if (!num_regs)
@@ -10858,10 +10738,9 @@ can_use_hardware_watchpoint (const std::
 		}
 	    }
 	}
-      else if (VALUE_LVAL (v) != not_lval
-	       && deprecated_value_modifiable (v) == 0)
+      else if (v->lval () != not_lval && !v->deprecated_modifiable ())
 	return 0;	/* These are values from the history (e.g., $1).  */
-      else if (VALUE_LVAL (v) == lval_register)
+      else if (v->lval () == lval_register)
 	return 0;	/* Cannot watch a register with a HW watchpoint.  */
     }
 
@@ -10871,25 +10750,79 @@ can_use_hardware_watchpoint (const std::
 }
 
 void
-watch_command_wrapper (const char *arg, int from_tty, int internal)
+watch_command_wrapper (const char *arg, int from_tty, bool internal)
 {
   watch_command_1 (arg, hw_write, from_tty, 0, internal);
 }
 
+/* Options for the watch, awatch, and rwatch commands.  */
+
+struct watch_options
+{
+  /* For -location.  */
+  bool location = false;
+};
+
+/* Definitions of options for the "watch", "awatch", and "rwatch" commands.
+
+   Historically GDB always accepted both '-location' and '-l' flags for
+   these commands (both flags being synonyms).  When converting to the
+   newer option scheme only '-location' is added here.  That's fine (for
+   backward compatibility) as any non-ambiguous prefix of a flag will be
+   accepted, so '-l', '-loc', are now all accepted.
+
+   What this means is that, if in the future, we add any new flag here
+   that starts with '-l' then this will break backward compatibility, so
+   please, don't do that!  */
+
+static const gdb::option::option_def watch_option_defs[] = {
+  gdb::option::flag_option_def<watch_options> {
+    "location",
+    [] (watch_options *opt) { return &opt->location; },
+    N_("\
+This evaluates EXPRESSION and watches the memory to which it refers.\n\
+-l can be used as a short form of -location."),
+  },
+};
+
+/* Returns the option group used by 'watch', 'awatch', and 'rwatch'
+   commands.  */
+
+static gdb::option::option_def_group
+make_watch_options_def_group (watch_options *opts)
+{
+  return {{watch_option_defs}, opts};
+}
+
 /* A helper function that looks for the "-location" argument and then
    calls watch_command_1.  */
 
 static void
 watch_maybe_just_location (const char *arg, int accessflag, int from_tty)
 {
-  int just_location = 0;
+  watch_options opts;
+  auto grp = make_watch_options_def_group (&opts);
+  gdb::option::process_options
+    (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
+  if (arg != nullptr && *arg == '\0')
+    arg = nullptr;
 
-  if (arg
-      && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
-	  || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
-    just_location = 1;
+  watch_command_1 (arg, accessflag, from_tty, opts.location, false);
+}
 
-  watch_command_1 (arg, accessflag, from_tty, just_location, 0);
+/* Command completion for 'watch', 'awatch', and 'rwatch' commands.   */
+static void
+watch_command_completer (struct cmd_list_element *ignore,
+			 completion_tracker &tracker,
+			 const char *text, const char * /*word*/)
+{
+  const auto group = make_watch_options_def_group (nullptr);
+  if (gdb::option::complete_options
+      (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, group))
+    return;
+
+  const char *word = advance_to_expression_complete_word_point (tracker, text);
+  expression_completer (ignore, tracker, text, word);
 }
 
 static void
@@ -10899,7 +10832,7 @@ watch_command (const char *arg, int from
 }
 
 void
-rwatch_command_wrapper (const char *arg, int from_tty, int internal)
+rwatch_command_wrapper (const char *arg, int from_tty, bool internal)
 {
   watch_command_1 (arg, hw_read, from_tty, 0, internal);
 }
@@ -10911,7 +10844,7 @@ rwatch_command (const char *arg, int fro
 }
 
 void
-awatch_command_wrapper (const char *arg, int from_tty, int internal)
+awatch_command_wrapper (const char *arg, int from_tty, bool internal)
 {
   watch_command_1 (arg, hw_access, from_tty, 0, internal);
 }
@@ -10932,20 +10865,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 +10888,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 +10906,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);
 }
 
@@ -10994,7 +10922,7 @@ until_break_fsm::do_async_reply_reason (
 void
 until_break_command (const char *arg, int from_tty, int anywhere)
 {
-  struct frame_info *frame;
+  frame_info_ptr frame;
   struct gdbarch *frame_gdbarch;
   struct frame_id stack_frame_id;
   struct frame_id caller_frame_id;
@@ -11006,26 +10934,22 @@ until_break_command (const char *arg, in
   /* Set a breakpoint where the user wants it and at return from
      this function.  */
 
-  event_location_up location = string_to_event_location (&arg, current_language);
+  location_spec_up locspec = string_to_location_spec (&arg, current_language);
 
   std::vector<symtab_and_line> sals
     = (last_displayed_sal_is_valid ()
-       ? decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
+       ? decode_line_1 (locspec.get (), DECODE_LINE_FUNFIRSTLINE, NULL,
 			get_last_displayed_symtab (),
 			get_last_displayed_line ())
-       : decode_line_1 (location.get (), DECODE_LINE_FUNFIRSTLINE,
+       : decode_line_1 (locspec.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,9 +10966,9 @@ 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;
+  std::optional<delete_longjmp_breakpoint_cleanup> lj_deleter;
 
   if (frame_id_p (caller_frame_id))
     {
@@ -11054,33 +10978,36 @@ 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);
 
-      set_longjmp_breakpoint (tp, caller_frame_id);
+      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, stack_frame_id);
       lj_deleter.emplace (thread);
     }
 
-  /* 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);
-
-  tp->thread_fsm = new until_break_fsm (command_interp (), tp->global_num,
-					std::move (location_breakpoint),
-					std::move (caller_breakpoint));
+  /* 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->set_thread_fsm
+    (std::unique_ptr<thread_fsm>
+     (new until_break_fsm (command_interp (), tp->global_num,
+			   std::move (breakpoints))));
 
   if (lj_deleter)
     lj_deleter->release ();
@@ -11088,176 +11015,8 @@ until_break_command (const char *arg, in
   proceed (-1, GDB_SIGNAL_DEFAULT);
 }
 
-/* This function attempts to parse an optional "if <cond>" clause
-   from the arg string.  If one is not found, it returns NULL.
-
-   Else, it returns a pointer to the condition string.  (It does not
-   attempt to evaluate the string against a particular block.)  And,
-   it updates arg to point to the first character following the parsed
-   if clause in the arg string.  */
-
-const char *
-ep_parse_optional_if_clause (const char **arg)
-{
-  const char *cond_string;
-
-  if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
-    return NULL;
-
-  /* Skip the "if" keyword.  */
-  (*arg) += 2;
-
-  /* Skip any extra leading whitespace, and record the start of the
-     condition string.  */
-  *arg = skip_spaces (*arg);
-  cond_string = *arg;
-
-  /* Assume that the condition occupies the remainder of the arg
-     string.  */
-  (*arg) += strlen (cond_string);
-
-  return cond_string;
-}
-
-/* Commands to deal with catching events, such as signals, exceptions,
-   process start/exit, etc.  */
-
-typedef enum
-{
-  catch_fork_temporary, catch_vfork_temporary,
-  catch_fork_permanent, catch_vfork_permanent
-}
-catch_fork_kind;
-
-static void
-catch_fork_command_1 (const char *arg, int from_tty,
-		      struct cmd_list_element *command)
-{
-  struct gdbarch *gdbarch = get_current_arch ();
-  const char *cond_string = NULL;
-  catch_fork_kind fork_kind;
-  int tempflag;
-
-  fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
-  tempflag = (fork_kind == catch_fork_temporary
-	      || fork_kind == catch_vfork_temporary);
-
-  if (!arg)
-    arg = "";
-  arg = skip_spaces (arg);
-
-  /* The allowed syntax is:
-     catch [v]fork
-     catch [v]fork if <cond>
-
-     First, check if there's an if clause.  */
-  cond_string = ep_parse_optional_if_clause (&arg);
-
-  if ((*arg != '\0') && !isspace (*arg))
-    error (_("Junk at end of arguments."));
-
-  /* If this target supports it, create a fork or vfork catchpoint
-     and enable reporting of such events.  */
-  switch (fork_kind)
-    {
-    case catch_fork_temporary:
-    case catch_fork_permanent:
-      create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
-                                          &catch_fork_breakpoint_ops);
-      break;
-    case catch_vfork_temporary:
-    case catch_vfork_permanent:
-      create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
-                                          &catch_vfork_breakpoint_ops);
-      break;
-    default:
-      error (_("unsupported or unknown fork kind; cannot catch it"));
-      break;
-    }
-}
-
-static void
-catch_exec_command_1 (const char *arg, int from_tty,
-		      struct cmd_list_element *command)
-{
-  struct gdbarch *gdbarch = get_current_arch ();
-  int tempflag;
-  const char *cond_string = NULL;
-
-  tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
-
-  if (!arg)
-    arg = "";
-  arg = skip_spaces (arg);
-
-  /* The allowed syntax is:
-     catch exec
-     catch exec if <cond>
-
-     First, check if there's an if clause.  */
-  cond_string = ep_parse_optional_if_clause (&arg);
-
-  if ((*arg != '\0') && !isspace (*arg))
-    error (_("Junk at end of arguments."));
-
-  std::unique_ptr<exec_catchpoint> c (new exec_catchpoint ());
-  init_catchpoint (c.get (), gdbarch, tempflag, cond_string,
-		   &catch_exec_breakpoint_ops);
-  c->exec_pathname = NULL;
-
-  install_breakpoint (0, std::move (c), 1);
-}
-
-void
-init_ada_exception_breakpoint (struct breakpoint *b,
-			       struct gdbarch *gdbarch,
-			       struct symtab_and_line sal,
-			       const char *addr_string,
-			       const struct breakpoint_ops *ops,
-			       int tempflag,
-			       int enabled,
-			       int from_tty)
-{
-  if (from_tty)
-    {
-      struct gdbarch *loc_gdbarch = get_sal_arch (sal);
-      if (!loc_gdbarch)
-	loc_gdbarch = gdbarch;
-
-      describe_other_breakpoints (loc_gdbarch,
-				  sal.pspace, sal.pc, sal.section, -1);
-      /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
-         version for exception catchpoints, because two catchpoints
-         used for different exception names will use the same address.
-         In this case, a "breakpoint ... also set at..." warning is
-         unproductive.  Besides, the warning phrasing is also a bit
-         inappropriate, we should use the word catchpoint, and tell
-         the user what type of catchpoint it is.  The above is good
-         enough for now, though.  */
-    }
-
-  init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
-
-  b->enable_state = enabled ? bp_enabled : bp_disabled;
-  b->disposition = tempflag ? disp_del : disp_donttouch;
-  b->location = string_to_event_location (&addr_string,
-					  language_def (language_ada));
-  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
@@ -11283,7 +11042,6 @@ compare_breakpoints (const breakpoint *a
 static void
 clear_command (const char *arg, int from_tty)
 {
-  struct breakpoint *b;
   int default_match;
 
   std::vector<symtab_and_line> decoded_sals;
@@ -11339,46 +11097,46 @@ clear_command (const char *arg, int from
       const char *sal_fullname;
 
       /* If exact pc given, clear bpts at that pc.
-         If line given (pc == 0), clear all bpts on specified line.
-         If defaulting, clear all bpts on default line
-         or at default pc.
-
-         defaulting    sal.pc != 0    tests to do
-
-         0              1             pc
-         1              1             pc _and_ line
-         0              0             line
-         1              0             <can't happen> */
+	 If line given (pc == 0), clear all bpts on specified line.
+	 If defaulting, clear all bpts on default line
+	 or at default pc.
+
+	 defaulting    sal.pc != 0    tests to do
+
+	 0              1             pc
+	 1              1             pc _and_ line
+	 0              0             line
+	 1              0             <can't happen> */
 
       sal_fullname = (sal.symtab == NULL
 		      ? NULL : symtab_to_fullname (sal.symtab));
 
       /* Find all matching breakpoints and add them to 'found'.  */
-      ALL_BREAKPOINTS (b)
+      for (breakpoint &b : all_breakpoints ())
 	{
 	  int match = 0;
 	  /* Are we going to delete b?  */
-	  if (b->type != bp_none && !is_watchpoint (b))
+	  if (b.type != bp_none && !is_watchpoint (&b)
+	      && user_breakpoint_p (&b))
 	    {
-	      struct bp_location *loc = b->loc;
-	      for (; loc; loc = loc->next)
+	      for (bp_location &loc : b.locations ())
 		{
 		  /* If the user specified file:line, don't allow a PC
 		     match.  This matches historical gdb behavior.  */
 		  int pc_match = (!sal.explicit_line
 				  && sal.pc
-				  && (loc->pspace == sal.pspace)
-				  && (loc->address == sal.pc)
-				  && (!section_is_overlay (loc->section)
-				      || loc->section == sal.section));
+				  && (loc.pspace == sal.pspace)
+				  && (loc.address == sal.pc)
+				  && (!section_is_overlay (loc.section)
+				      || loc.section == sal.section));
 		  int line_match = 0;
 
 		  if ((default_match || sal.explicit_line)
-		      && loc->symtab != NULL
+		      && loc.symtab != NULL
 		      && sal_fullname != NULL
-		      && sal.pspace == loc->pspace
-		      && loc->line_number == sal.line
-		      && filename_cmp (symtab_to_fullname (loc->symtab),
+		      && sal.pspace == loc.pspace
+		      && loc.line_number == sal.line
+		      && filename_cmp (symtab_to_fullname (loc.symtab),
 				       sal_fullname) == 0)
 		    line_match = 1;
 
@@ -11391,11 +11149,11 @@ clear_command (const char *arg, int from
 	    }
 
 	  if (match)
-	    found.push_back (b);
+	    found.push_back (&b);
 	}
     }
 
-  /* Now go thru the 'found' chain and delete them.  */
+  /* Now go through the 'found' chain and delete them.  */
   if (found.empty ())
     {
       if (arg)
@@ -11422,19 +11180,19 @@ clear_command (const char *arg, int from
   if (from_tty)
     {
       if (found.size () == 1)
-	printf_unfiltered (_("Deleted breakpoint "));
+	gdb_printf (_("Deleted breakpoint "));
       else
-	printf_unfiltered (_("Deleted breakpoints "));
+	gdb_printf (_("Deleted breakpoints "));
     }
 
   for (breakpoint *iter : found)
     {
       if (from_tty)
-	printf_unfiltered ("%d ", iter->number);
+	gdb_printf ("%d ", iter->number);
       delete_breakpoint (iter);
     }
   if (from_tty)
-    putchar_unfiltered ('\n');
+    gdb_putc ('\n');
 }
 
 /* Delete breakpoint in BS if they are `delete' breakpoints and
@@ -11442,31 +11200,30 @@ clear_command (const char *arg, int from
    This is called after any breakpoint is hit, or after errors.  */
 
 void
-breakpoint_auto_delete (bpstat bs)
+breakpoint_auto_delete (bpstat *bs)
 {
-  struct breakpoint *b, *b_tmp;
-
   for (; bs; bs = bs->next)
     if (bs->breakpoint_at
 	&& bs->breakpoint_at->disposition == disp_del
 	&& bs->stop)
       delete_breakpoint (bs->breakpoint_at);
 
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-  {
-    if (b->disposition == disp_del_at_next_stop)
-      delete_breakpoint (b);
-  }
+  for (breakpoint &b : all_breakpoints_safe ())
+    if (b.disposition == disp_del_at_next_stop)
+      delete_breakpoint (&b);
 }
 
-/* A comparison function for bp_location AP and BP being interfaced to
-   std::sort.  Sort elements primarily by their ADDRESS (no matter what
-   bl_address_is_meaningful says), secondarily by ordering first
-   permanent elements and terciarily just ensuring the array is sorted
-   stable way despite std::sort being an unstable algorithm.  */
+/* A comparison function for bp_location pointers A and B being interfaced to
+   std::sort, for instance to sort an std::vector<bp_location *>.  Sort
+   elements:
+   - primarily by their ADDRESS (no matter what bl_address_is_meaningful
+     says),
+   - secondarily by ordering first permanent elements, and
+   - tertiarily just ensuring the array is sorted in a stable way despite
+     std::sort being an unstable algorithm.  */
 
-static int
-bp_location_is_less_than (const bp_location *a, const bp_location *b)
+static bool
+bp_location_ptr_is_less_than (const bp_location *a, const bp_location *b)
 {
   if (a->address != b->address)
     return a->address < b->address;
@@ -11482,6 +11239,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.  */
@@ -11492,6 +11261,15 @@ bp_location_is_less_than (const bp_locat
   return a < b;
 }
 
+/* A comparison function for bp_locations A and B being interfaced to
+   std::sort, for instance to sort an std::vector<bp_location>.  */
+
+static bool
+bp_location_is_less_than (const bp_location &a, const bp_location &b)
+{
+  return bp_location_ptr_is_less_than (&a, &b);
+}
+
 /* Set bp_locations_placed_address_before_address_max and
    bp_locations_shadow_len_after_address_max according to the current
    content of the bp_locations array.  */
@@ -11499,12 +11277,10 @@ bp_location_is_less_than (const bp_locat
 static void
 bp_locations_target_extensions_update (void)
 {
-  struct bp_location *bl, **blp_tmp;
-
   bp_locations_placed_address_before_address_max = 0;
   bp_locations_shadow_len_after_address_max = 0;
 
-  ALL_BP_LOCATIONS (bl, blp_tmp)
+  for (bp_location *bl : all_bp_locations ())
     {
       CORE_ADDR start, end, addr;
 
@@ -11533,18 +11309,15 @@ bp_locations_target_extensions_update (v
 static void
 download_tracepoint_locations (void)
 {
-  struct breakpoint *b;
   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
 
   scoped_restore_current_pspace_and_thread restore_pspace_thread;
 
-  ALL_TRACEPOINTS (b)
+  for (breakpoint &b : all_tracepoints ())
     {
-      struct bp_location *bl;
-      struct tracepoint *t;
-      int bp_location_downloaded = 0;
+      bool bp_location_downloaded = false;
 
-      if ((b->type == bp_fast_tracepoint
+      if ((b.type == bp_fast_tracepoint
 	   ? !may_insert_fast_tracepoints
 	   : !may_insert_tracepoints))
 	continue;
@@ -11560,25 +11333,26 @@ download_tracepoint_locations (void)
       if (can_download_tracepoint == TRIBOOL_FALSE)
 	break;
 
-      for (bl = b->loc; bl; bl = bl->next)
+      for (bp_location &bl : b.locations ())
 	{
 	  /* In tracepoint, locations are _never_ duplicated, so
 	     should_be_inserted is equivalent to
 	     unduplicated_should_be_inserted.  */
-	  if (!should_be_inserted (bl) || bl->inserted)
+	  if (!should_be_inserted (&bl) || bl.inserted)
 	    continue;
 
-	  switch_to_program_space_and_thread (bl->pspace);
+	  switch_to_program_space_and_thread (bl.pspace);
 
-	  target_download_tracepoint (bl);
+	  target_download_tracepoint (&bl);
 
-	  bl->inserted = 1;
-	  bp_location_downloaded = 1;
+	  bl.inserted = 1;
+	  bp_location_downloaded = true;
 	}
-      t = (struct tracepoint *) b;
-      t->number_on_target = b->number;
+
+      tracepoint &t = gdb::checked_static_cast<tracepoint &> (b);
+      t.number_on_target = b.number;
       if (bp_location_downloaded)
-	gdb::observers::breakpoint_modified.notify (b);
+	notify_breakpoint_modified (&b);
     }
 }
 
@@ -11616,8 +11390,6 @@ swap_insertion (struct bp_location *left
 static void
 force_breakpoint_reinsertion (struct bp_location *bl)
 {
-  struct bp_location **locp = NULL, **loc2p;
-  struct bp_location *loc;
   CORE_ADDR address = 0;
   int pspace_num;
 
@@ -11636,10 +11408,8 @@ force_breakpoint_reinsertion (struct bp_
      the same program space as the location
      as "its condition has changed".  We need to
      update the conditions on the target's side.  */
-  ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
+  for (bp_location *loc : all_bp_locations_at_addr (address))
     {
-      loc = *loc2p;
-
       if (!is_breakpoint (loc->owner)
 	  || pspace_num != loc->pspace->num)
 	continue;
@@ -11656,6 +11426,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.
@@ -11667,13 +11438,14 @@ force_breakpoint_reinsertion (struct bp_
 static void
 update_global_location_list (enum ugll_insert_mode insert_mode)
 {
-  struct breakpoint *b;
-  struct bp_location **locp, *loc;
   /* Last breakpoint location address that was marked for update.  */
   CORE_ADDR last_addr = 0;
   /* Last breakpoint location program space that was marked for update.  */
   int last_pspace_num = -1;
 
+  breakpoint_debug_printf ("insert_mode = %s",
+			   ugll_insert_mode_text (insert_mode));
+
   /* Used in the duplicates detection below.  When iterating over all
      bp_locations, points to the first bp_location of a given address.
      Breakpoints and watchpoints of different types are never
@@ -11687,25 +11459,23 @@ update_global_location_list (enum ugll_i
 
   /* Saved former bp_locations array which we compare against the newly
      built bp_locations from the current state of ALL_BREAKPOINTS.  */
-  struct bp_location **old_locp;
-  unsigned old_locations_count;
-  gdb::unique_xmalloc_ptr<struct bp_location *> old_locations (bp_locations);
-
-  old_locations_count = bp_locations_count;
-  bp_locations = NULL;
-  bp_locations_count = 0;
-
-  ALL_BREAKPOINTS (b)
-    for (loc = b->loc; loc; loc = loc->next)
-      bp_locations_count++;
-
-  bp_locations = XNEWVEC (struct bp_location *, bp_locations_count);
-  locp = bp_locations;
-  ALL_BREAKPOINTS (b)
-    for (loc = b->loc; loc; loc = loc->next)
-      *locp++ = loc;
-  std::sort (bp_locations, bp_locations + bp_locations_count,
-	     bp_location_is_less_than);
+  std::vector<bp_location *> old_locations = std::move (bp_locations);
+  bp_locations.clear ();
+
+  for (breakpoint &b : all_breakpoints ())
+    for (bp_location &loc : b.locations ())
+      bp_locations.push_back (&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 (bp_location *loc : bp_locations)
+    if (!loc->inserted && should_be_inserted (loc))
+	handle_automatic_hardware_breakpoints (loc);
+
+  std::sort (bp_locations.begin (), bp_locations.end (),
+	     bp_location_ptr_is_less_than);
 
   bp_locations_target_extensions_update ();
 
@@ -11719,46 +11489,41 @@ update_global_location_list (enum ugll_i
      LOCP is kept in sync with OLD_LOCP, each pointing to the current
      and former bp_location array state respectively.  */
 
-  locp = bp_locations;
-  for (old_locp = old_locations.get ();
-       old_locp < old_locations.get () + old_locations_count;
-       old_locp++)
+  size_t loc_i = 0;
+  for (bp_location *old_loc : old_locations)
     {
-      struct bp_location *old_loc = *old_locp;
-      struct bp_location **loc2p;
-
       /* Tells if 'old_loc' is found among the new locations.  If
 	 not, we have to free it.  */
-      int found_object = 0;
+      bool found_object = false;
       /* Tells if the location should remain inserted in the target.  */
-      int keep_in_target = 0;
-      int removed = 0;
+      bool keep_in_target = false;
+      bool removed = false;
 
       /* Skip LOCP entries which will definitely never be needed.
 	 Stop either at or being the one matching OLD_LOC.  */
-      while (locp < bp_locations + bp_locations_count
-	     && (*locp)->address < old_loc->address)
-	locp++;
-
-      for (loc2p = locp;
-	   (loc2p < bp_locations + bp_locations_count
-	    && (*loc2p)->address == old_loc->address);
-	   loc2p++)
+      while (loc_i < bp_locations.size ()
+	     && bp_locations[loc_i]->address < old_loc->address)
+	loc_i++;
+
+      for (size_t loc2_i = loc_i;
+	   (loc2_i < bp_locations.size ()
+	    && bp_locations[loc2_i]->address == old_loc->address);
+	   loc2_i++)
 	{
 	  /* Check if this is a new/duplicated location or a duplicated
 	     location that had its condition modified.  If so, we want to send
 	     its condition to the target if evaluation of conditions is taking
 	     place there.  */
-	  if ((*loc2p)->condition_changed == condition_modified
+	  if (bp_locations[loc2_i]->condition_changed == condition_modified
 	      && (last_addr != old_loc->address
 		  || last_pspace_num != old_loc->pspace->num))
 	    {
-	      force_breakpoint_reinsertion (*loc2p);
+	      force_breakpoint_reinsertion (bp_locations[loc2_i]);
 	      last_pspace_num = old_loc->pspace->num;
 	    }
 
-	  if (*loc2p == old_loc)
-	    found_object = 1;
+	  if (bp_locations[loc2_i] == old_loc)
+	    found_object = true;
 	}
 
       /* We have already handled this address, update it so that we don't
@@ -11784,7 +11549,7 @@ update_global_location_list (enum ugll_i
 	    {
 	      /* The location is still present in the location list,
 		 and still should be inserted.  Don't do anything.  */
-	      keep_in_target = 1;
+	      keep_in_target = true;
 	    }
 	  else
 	    {
@@ -11800,12 +11565,15 @@ update_global_location_list (enum ugll_i
 	      /* OLD_LOC comes from existing struct breakpoint.  */
 	      if (bl_address_is_meaningful (old_loc))
 		{
-		  for (loc2p = locp;
-		       (loc2p < bp_locations + bp_locations_count
-			&& (*loc2p)->address == old_loc->address);
-		       loc2p++)
+		  for (size_t loc2_i = loc_i;
+		       (loc2_i < bp_locations.size ()
+			&& bp_locations[loc2_i]->address == old_loc->address);
+		       loc2_i++)
 		    {
-		      struct bp_location *loc2 = *loc2p;
+		      bp_location *loc2 = bp_locations[loc2_i];
+
+		      if (loc2 == old_loc)
+			continue;
 
 		      if (breakpoint_locations_match (loc2, old_loc))
 			{
@@ -11821,11 +11589,10 @@ 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;
+			      keep_in_target = true;
 			      break;
 			    }
 			}
@@ -11845,11 +11612,11 @@ update_global_location_list (enum ugll_i
 		     Note that at this point, old_loc->owner is still
 		     valid, as delete_breakpoint frees the breakpoint
 		     only after calling us.  */
-		  printf_filtered (_("warning: Error removing "
-				     "breakpoint %d\n"), 
-				   old_loc->owner->number);
+		  warning (_("error removing breakpoint %d at %s"),
+			   old_loc->owner->number,
+			   paddress (old_loc->gdbarch, old_loc->address));
 		}
-	      removed = 1;
+	      removed = true;
 	    }
 	}
 
@@ -11903,7 +11670,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);
@@ -11930,12 +11708,13 @@ update_global_location_list (enum ugll_i
   wp_loc_first = NULL;
   awp_loc_first = NULL;
   rwp_loc_first = NULL;
-  ALL_BP_LOCATIONS (loc, locp)
+
+  for (bp_location *loc : all_bp_locations ())
     {
       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
 	 non-NULL.  */
       struct bp_location **loc_first_p;
-      b = loc->owner;
+      breakpoint *b = loc->owner;
 
       if (!unduplicated_should_be_inserted (loc)
 	  || !bl_address_is_meaningful (loc)
@@ -12037,9 +11816,9 @@ update_global_location_list_nothrow (enu
 /* Clear BKP from a BPS.  */
 
 static void
-bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
+bpstat_remove_bp_location (bpstat *bps, struct breakpoint *bpt)
 {
-  bpstat bs;
+  bpstat *bs;
 
   for (bs = bps; bs; bs = bs->next)
     if (bs->breakpoint_at == bpt)
@@ -12050,21 +11829,10 @@ bpstat_remove_bp_location (bpstat bps, s
       }
 }
 
-/* Callback for iterate_over_threads.  */
-static int
-bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
-{
-  struct breakpoint *bpt = (struct breakpoint *) data;
-
-  bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
-  return 0;
-}
-
-/* Helper for breakpoint and tracepoint breakpoint_ops->mention
-   callbacks.  */
+/* See breakpoint.h.  */
 
-static void
-say_where (struct breakpoint *b)
+void
+code_breakpoint::say_where () const
 {
   struct value_print_options opts;
 
@@ -12072,287 +11840,220 @@ say_where (struct breakpoint *b)
 
   /* i18n: cagney/2005-02-11: Below needs to be merged into a
      single string.  */
-  if (b->loc == NULL)
+  if (!this->has_locations ())
     {
       /* For pending locations, the output differs slightly based
-	 on b->extra_string.  If this is non-NULL, it contains either
+	 on extra_string.  If this is non-NULL, it contains either
 	 a condition or dprintf arguments.  */
-      if (b->extra_string == NULL)
+      if (extra_string == NULL)
 	{
-	  printf_filtered (_(" (%s) pending."),
-			   event_location_to_string (b->location.get ()));
+	  gdb_printf (_(" (%s) pending."), locspec->to_string ());
 	}
-      else if (b->type == bp_dprintf)
+      else if (type == bp_dprintf)
 	{
-	  printf_filtered (_(" (%s,%s) pending."),
-			   event_location_to_string (b->location.get ()),
-			   b->extra_string);
+	  gdb_printf (_(" (%s,%s) pending."),
+		      locspec->to_string (),
+		      extra_string.get ());
 	}
       else
 	{
-	  printf_filtered (_(" (%s %s) pending."),
-			   event_location_to_string (b->location.get ()),
-			   b->extra_string);
+	  gdb_printf (_(" (%s %s) pending."),
+		      locspec->to_string (),
+		      extra_string.get ());
 	}
     }
   else
     {
-      if (opts.addressprint || b->loc->symtab == NULL)
-	printf_filtered (" at %ps",
-			 styled_string (address_style.style (),
-					paddress (b->loc->gdbarch,
-						  b->loc->address)));
-      if (b->loc->symtab != NULL)
+      const bp_location &bl = this->first_loc ();
+      if (opts.addressprint || bl.symtab == nullptr)
+	gdb_printf (" at %ps",
+		    styled_string (address_style.style (),
+				   paddress (bl.gdbarch,
+					     bl.address)));
+      if (bl.symtab != NULL)
 	{
 	  /* If there is a single location, we can print the location
 	     more nicely.  */
-	  if (b->loc->next == NULL)
+	  if (!this->has_multiple_locations ())
 	    {
 	      const char *filename
-		= symtab_to_filename_for_display (b->loc->symtab);
-	      printf_filtered (": file %ps, line %d.",
-			       styled_string (file_name_style.style (),
-					      filename),
-			       b->loc->line_number);
+		= symtab_to_filename_for_display (bl.symtab);
+	      gdb_printf (": file %ps, line %ps.",
+			  styled_string (file_name_style.style (),
+					 filename),
+			  styled_string (line_number_style.style (),
+					 pulongest (bl.line_number)));
 	    }
 	  else
 	    /* This is not ideal, but each location may have a
 	       different file name, and this at least reflects the
 	       real situation somewhat.  */
-	    printf_filtered (": %s.",
-			     event_location_to_string (b->location.get ()));
+	    gdb_printf (": %s.", locspec->to_string ());
 	}
 
-      if (b->loc->next)
+      if (this->has_multiple_locations ())
 	{
-	  struct bp_location *loc = b->loc;
-	  int n = 0;
-	  for (; loc; loc = loc->next)
-	    ++n;
-	  printf_filtered (" (%d locations)", n);
+	  int n = std::distance (m_locations.begin (), m_locations.end ());
+	  gdb_printf (" (%d locations)", n);
 	}
     }
 }
 
-bp_location::~bp_location ()
-{
-  xfree (function_name);
-}
-
-/* Destructor for the breakpoint base class.  */
-
-breakpoint::~breakpoint ()
-{
-  xfree (this->cond_string);
-  xfree (this->extra_string);
-}
+/* See breakpoint.h.  */
 
-static struct bp_location *
-base_breakpoint_allocate_location (struct breakpoint *self)
+bp_location_range
+breakpoint::locations () const
 {
-  return new bp_location (self);
+  return bp_location_range (m_locations.begin (), m_locations.end ());
 }
 
-static void
-base_breakpoint_re_set (struct breakpoint *b)
+struct bp_location *
+breakpoint::allocate_location ()
 {
-  /* Nothing to re-set. */
+  return new bp_location (this);
 }
 
-#define internal_error_pure_virtual_called() \
-  gdb_assert_not_reached ("pure virtual function called")
+/* See breakpoint.h.  */
 
-static int
-base_breakpoint_insert_location (struct bp_location *bl)
+void
+breakpoint::add_location (bp_location &loc)
 {
-  internal_error_pure_virtual_called ();
-}
+  gdb_assert (loc.owner == this);
+  gdb_assert (!loc.is_linked ());
 
-static int
-base_breakpoint_remove_location (struct bp_location *bl,
-				 enum remove_bp_reason reason)
-{
-  internal_error_pure_virtual_called ();
+  auto ub = std::upper_bound (m_locations.begin (), m_locations.end (),
+			      loc,
+			      bp_location_is_less_than);
+  m_locations.insert (ub, loc);
 }
 
-static int
-base_breakpoint_breakpoint_hit (const struct bp_location *bl,
-				const address_space *aspace,
-				CORE_ADDR bp_addr,
-				const struct target_waitstatus *ws)
-{
-  internal_error_pure_virtual_called ();
-}
+/* See breakpoint.h.  */
 
-static void
-base_breakpoint_check_status (bpstat bs)
+void
+breakpoint::unadd_location (bp_location &loc)
 {
-  /* Always stop.   */
-}
+  gdb_assert (loc.owner == this);
+  gdb_assert (loc.is_linked ());
 
-/* A "works_in_software_mode" breakpoint_ops method that just internal
-   errors.  */
-
-static int
-base_breakpoint_works_in_software_mode (const struct breakpoint *b)
-{
-  internal_error_pure_virtual_called ();
+  m_locations.erase (m_locations.iterator_to (loc));
 }
 
-/* A "resources_needed" breakpoint_ops method that just internal
-   errors.  */
+#define internal_error_pure_virtual_called() \
+  gdb_assert_not_reached ("pure virtual function called")
 
-static int
-base_breakpoint_resources_needed (const struct bp_location *bl)
+int
+breakpoint::insert_location (struct bp_location *bl)
 {
   internal_error_pure_virtual_called ();
 }
 
-static enum print_stop_action
-base_breakpoint_print_it (bpstat bs)
+int
+breakpoint::remove_location (struct bp_location *bl,
+			     enum remove_bp_reason reason)
 {
   internal_error_pure_virtual_called ();
 }
 
-static void
-base_breakpoint_print_one_detail (const struct breakpoint *self,
-				  struct ui_out *uiout)
-{
-  /* nothing */
-}
-
-static void
-base_breakpoint_print_mention (struct breakpoint *b)
+int
+breakpoint::breakpoint_hit (const struct bp_location *bl,
+			    const address_space *aspace,
+			    CORE_ADDR bp_addr,
+			    const target_waitstatus &ws)
 {
   internal_error_pure_virtual_called ();
 }
 
-static void
-base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
+int
+breakpoint::resources_needed (const struct bp_location *bl)
 {
   internal_error_pure_virtual_called ();
 }
 
-static void
-base_breakpoint_create_sals_from_location
-  (const struct event_location *location,
-   struct linespec_result *canonical,
-   enum bptype type_wanted)
+enum print_stop_action
+breakpoint::print_it (const bpstat *bs) const
 {
   internal_error_pure_virtual_called ();
 }
 
-static void
-base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
-					struct linespec_result *c,
-					gdb::unique_xmalloc_ptr<char> cond_string,
-					gdb::unique_xmalloc_ptr<char> extra_string,
-					enum bptype type_wanted,
-					enum bpdisp disposition,
-					int thread,
-					int task, int ignore_count,
-					const struct breakpoint_ops *o,
-					int from_tty, int enabled,
-					int internal, unsigned flags)
+void
+breakpoint::print_mention () const
 {
   internal_error_pure_virtual_called ();
 }
 
-static std::vector<symtab_and_line>
-base_breakpoint_decode_location (struct breakpoint *b,
-				 const struct event_location *location,
-				 struct program_space *search_pspace)
+void
+breakpoint::print_recreate (struct ui_file *fp) const
 {
   internal_error_pure_virtual_called ();
 }
 
-/* The default 'explains_signal' method.  */
-
-static int
-base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
-{
-  return 1;
-}
-
-/* The default "after_condition_true" method.  */
-
-static void
-base_breakpoint_after_condition_true (struct bpstats *bs)
-{
-  /* Nothing to do.   */
-}
-
-struct breakpoint_ops base_breakpoint_ops =
-{
-  base_breakpoint_allocate_location,
-  base_breakpoint_re_set,
-  base_breakpoint_insert_location,
-  base_breakpoint_remove_location,
-  base_breakpoint_breakpoint_hit,
-  base_breakpoint_check_status,
-  base_breakpoint_resources_needed,
-  base_breakpoint_works_in_software_mode,
-  base_breakpoint_print_it,
-  NULL,
-  base_breakpoint_print_one_detail,
-  base_breakpoint_print_mention,
-  base_breakpoint_print_recreate,
-  base_breakpoint_create_sals_from_location,
-  base_breakpoint_create_breakpoints_sal,
-  base_breakpoint_decode_location,
-  base_breakpoint_explains_signal,
-  base_breakpoint_after_condition_true,
-};
-
 /* Default breakpoint_ops methods.  */
 
-static void
-bkpt_re_set (struct breakpoint *b)
+void
+code_breakpoint::re_set (struct program_space *pspace)
 {
   /* FIXME: is this still reachable?  */
-  if (breakpoint_event_location_empty_p (b))
+  if (breakpoint_location_spec_empty_p (this))
     {
       /* Anything without a location can't be re-set.  */
-      delete_breakpoint (b);
+      delete_breakpoint (this);
       return;
     }
 
-  breakpoint_re_set_default (b);
+  re_set_default (pspace);
 }
 
-static int
-bkpt_insert_location (struct bp_location *bl)
+int
+code_breakpoint::insert_location (struct bp_location *bl)
 {
   CORE_ADDR addr = bl->target_info.reqstd_address;
 
   bl->target_info.kind = breakpoint_kind (bl, &addr);
   bl->target_info.placed_address = addr;
 
+  int result;
   if (bl->loc_type == bp_loc_hardware_breakpoint)
-    return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
+    result = target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
   else
-    return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
+    result = target_insert_breakpoint (bl->gdbarch, &bl->target_info);
+
+  if (result == 0 && bl->probe.prob != nullptr)
+    {
+      /* The insertion was successful, now let's set the probe's semaphore
+	 if needed.  */
+      bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
+    }
+
+  return result;
 }
 
-static int
-bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
+int
+code_breakpoint::remove_location (struct bp_location *bl,
+				  enum remove_bp_reason reason)
 {
+  if (bl->probe.prob != nullptr)
+    {
+      /* Let's clear the semaphore before removing the location.  */
+      bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
+    }
+
   if (bl->loc_type == bp_loc_hardware_breakpoint)
     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
   else
     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
 }
 
-static int
-bkpt_breakpoint_hit (const struct bp_location *bl,
-		     const address_space *aspace, CORE_ADDR bp_addr,
-		     const struct target_waitstatus *ws)
+int
+code_breakpoint::breakpoint_hit (const struct bp_location *bl,
+				 const address_space *aspace,
+				 CORE_ADDR bp_addr,
+				 const target_waitstatus &ws)
 {
-  if (ws->kind != TARGET_WAITKIND_STOPPED
-      || ws->value.sig != GDB_SIGNAL_TRAP)
+  if (ws.kind () != TARGET_WAITKIND_STOPPED
+      || ws.sig () != GDB_SIGNAL_TRAP)
     return 0;
 
-  if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
+  if (!breakpoint_address_match (bl->pspace->aspace.get (), bl->address,
 				 aspace, bp_addr))
     return 0;
 
@@ -12364,10 +12065,11 @@ bkpt_breakpoint_hit (const struct bp_loc
   return 1;
 }
 
-static int
-dprintf_breakpoint_hit (const struct bp_location *bl,
-			const address_space *aspace, CORE_ADDR bp_addr,
-			const struct target_waitstatus *ws)
+int
+dprintf_breakpoint::breakpoint_hit (const struct bp_location *bl,
+				    const address_space *aspace,
+				    CORE_ADDR bp_addr,
+				    const target_waitstatus &ws)
 {
   if (dprintf_style == dprintf_style_agent
       && target_can_run_breakpoint_commands ())
@@ -12378,154 +12080,135 @@ dprintf_breakpoint_hit (const struct bp_
       return 0;
     }
 
-  return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
+  return this->ordinary_breakpoint::breakpoint_hit (bl, aspace, bp_addr, ws);
 }
 
-static int
-bkpt_resources_needed (const struct bp_location *bl)
+int
+ordinary_breakpoint::resources_needed (const struct bp_location *bl)
 {
-  gdb_assert (bl->owner->type == bp_hardware_breakpoint);
+  gdb_assert (type == bp_hardware_breakpoint);
 
   return 1;
 }
 
-static enum print_stop_action
-bkpt_print_it (bpstat bs)
+enum print_stop_action
+ordinary_breakpoint::print_it (const bpstat *bs) const
 {
-  struct breakpoint *b;
   const struct bp_location *bl;
   int bp_temp;
   struct ui_out *uiout = current_uiout;
 
-  gdb_assert (bs->bp_location_at != NULL);
-
-  bl = bs->bp_location_at;
-  b = bs->breakpoint_at;
+  bl = bs->bp_location_at.get ();
 
-  bp_temp = b->disposition == disp_del;
+  bp_temp = disposition == disp_del;
   if (bl->address != bl->requested_address)
     breakpoint_adjustment_warning (bl->requested_address,
 				   bl->address,
-				   b->number, 1);
-  annotate_breakpoint (b->number);
+				   number, true);
+  annotate_breakpoint (number);
   maybe_print_thread_hit_breakpoint (uiout);
 
   if (uiout->is_mi_like_p ())
     {
       uiout->field_string ("reason",
 			   async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
-      uiout->field_string ("disp", bpdisp_text (b->disposition));
+      uiout->field_string ("disp", bpdisp_text (disposition));
     }
+
   if (bp_temp)
-    uiout->message ("Temporary breakpoint %pF, ",
-		    signed_field ("bkptno", b->number));
+    uiout->text ("Temporary breakpoint ");
   else
-    uiout->message ("Breakpoint %pF, ",
-		    signed_field ("bkptno", b->number));
+    uiout->text ("Breakpoint ");
+  print_num_locno (bs, uiout);
+  uiout->text (", ");
 
   return PRINT_SRC_AND_LOC;
 }
 
-static void
-bkpt_print_mention (struct breakpoint *b)
+void
+ordinary_breakpoint::print_mention () const
 {
   if (current_uiout->is_mi_like_p ())
     return;
 
-  switch (b->type)
+  switch (type)
     {
     case bp_breakpoint:
     case bp_gnu_ifunc_resolver:
-      if (b->disposition == disp_del)
-	printf_filtered (_("Temporary breakpoint"));
+      if (disposition == disp_del)
+	gdb_printf (_("Temporary breakpoint"));
       else
-	printf_filtered (_("Breakpoint"));
-      printf_filtered (_(" %d"), b->number);
-      if (b->type == bp_gnu_ifunc_resolver)
-	printf_filtered (_(" at gnu-indirect-function resolver"));
+	gdb_printf (_("Breakpoint"));
+      gdb_printf (_(" %d"), number);
+      if (type == bp_gnu_ifunc_resolver)
+	gdb_printf (_(" at gnu-indirect-function resolver"));
       break;
     case bp_hardware_breakpoint:
-      printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
+      gdb_printf (_("Hardware assisted breakpoint %d"), number);
       break;
     case bp_dprintf:
-      printf_filtered (_("Dprintf %d"), b->number);
+      gdb_printf (_("Dprintf %d"), number);
       break;
     }
 
-  say_where (b);
+  say_where ();
 }
 
-static void
-bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
+void
+ordinary_breakpoint::print_recreate (struct ui_file *fp) const
 {
-  if (tp->type == bp_breakpoint && tp->disposition == disp_del)
-    fprintf_unfiltered (fp, "tbreak");
-  else if (tp->type == bp_breakpoint)
-    fprintf_unfiltered (fp, "break");
-  else if (tp->type == bp_hardware_breakpoint
-	   && tp->disposition == disp_del)
-    fprintf_unfiltered (fp, "thbreak");
-  else if (tp->type == bp_hardware_breakpoint)
-    fprintf_unfiltered (fp, "hbreak");
+  if (type == bp_breakpoint && disposition == disp_del)
+    gdb_printf (fp, "tbreak");
+  else if (type == bp_breakpoint)
+    gdb_printf (fp, "break");
+  else if (type == bp_hardware_breakpoint
+	   && disposition == disp_del)
+    gdb_printf (fp, "thbreak");
+  else if (type == bp_hardware_breakpoint)
+    gdb_printf (fp, "hbreak");
   else
-    internal_error (__FILE__, __LINE__,
-		    _("unhandled breakpoint type %d"), (int) tp->type);
+    internal_error (_("unhandled breakpoint type %d"), (int) type);
 
-  fprintf_unfiltered (fp, " %s",
-		      event_location_to_string (tp->location.get ()));
+  gdb_printf (fp, " %s", locspec->to_string ());
 
   /* Print out extra_string if this breakpoint is pending.  It might
      contain, for example, conditions that were set by the user.  */
-  if (tp->loc == NULL && tp->extra_string != NULL)
-    fprintf_unfiltered (fp, " %s", tp->extra_string);
+  if (!this->has_locations () && extra_string != NULL)
+    gdb_printf (fp, " %s", extra_string.get ());
 
-  print_recreate_thread (tp, fp);
+  print_recreate_thread (fp);
 }
 
-static void
-bkpt_create_sals_from_location (const struct event_location *location,
-				struct linespec_result *canonical,
-				enum bptype type_wanted)
+std::vector<symtab_and_line>
+code_breakpoint::decode_location_spec (location_spec *locspec,
+				       program_space *search_pspace)
 {
-  create_sals_from_location_default (location, canonical, type_wanted);
-}
+  if (locspec->type () == PROBE_LOCATION_SPEC)
+    return bkpt_probe_decode_location_spec (this, locspec, search_pspace);
 
-static void
-bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
-			     struct linespec_result *canonical,
-			     gdb::unique_xmalloc_ptr<char> cond_string,
-			     gdb::unique_xmalloc_ptr<char> extra_string,
-			     enum bptype type_wanted,
-			     enum bpdisp disposition,
-			     int thread,
-			     int task, int ignore_count,
-			     const struct breakpoint_ops *ops,
-			     int from_tty, int enabled,
-			     int internal, unsigned flags)
-{
-  create_breakpoints_sal_default (gdbarch, canonical,
-				  std::move (cond_string),
-				  std::move (extra_string),
-				  type_wanted,
-				  disposition, thread, task,
-				  ignore_count, ops, from_tty,
-				  enabled, internal, flags);
-}
+  struct linespec_result canonical;
 
-static std::vector<symtab_and_line>
-bkpt_decode_location (struct breakpoint *b,
-		      const struct event_location *location,
-		      struct program_space *search_pspace)
-{
-  return decode_location_default (b, location, search_pspace);
+  decode_line_full (locspec, DECODE_LINE_FUNFIRSTLINE, search_pspace,
+		    NULL, 0, &canonical, multiple_symbols_all,
+		    filter.get ());
+
+  /* We should get 0 or 1 resulting SALs.  */
+  gdb_assert (canonical.lsals.size () < 2);
+
+  if (!canonical.lsals.empty ())
+    {
+      const linespec_sals &lsal = canonical.lsals[0];
+      return std::move (lsal.sals);
+    }
+  return {};
 }
 
 /* Virtual table for internal breakpoints.  */
 
-static void
-internal_bkpt_re_set (struct breakpoint *b)
+void
+internal_breakpoint::re_set (struct program_space *pspace)
 {
-  switch (b->type)
+  switch (type)
     {
       /* Delete overlay event and longjmp master breakpoints; they
 	 will be reset later by breakpoint_re_set.  */
@@ -12533,11 +12216,11 @@ internal_bkpt_re_set (struct breakpoint
     case bp_longjmp_master:
     case bp_std_terminate_master:
     case bp_exception_master:
-      delete_breakpoint (b);
+      delete_breakpoint (this);
       break;
 
       /* This breakpoint is special, it's set up when the inferior
-         starts and we really don't want to touch it.  */
+	 starts and we really don't want to touch it.  */
     case bp_shlib_event:
 
       /* Like bp_shlib_event, this breakpoint type is special.  Once
@@ -12547,80 +12230,76 @@ internal_bkpt_re_set (struct breakpoint
     }
 }
 
-static void
-internal_bkpt_check_status (bpstat bs)
+void
+internal_breakpoint::check_status (bpstat *bs)
 {
-  if (bs->breakpoint_at->type == bp_shlib_event)
+  if (type == bp_shlib_event)
     {
       /* If requested, stop when the dynamic linker notifies GDB of
 	 events.  This allows the user to get control and place
 	 breakpoints in initializer routines for dynamically loaded
 	 objects (among other things).  */
-      bs->stop = stop_on_solib_events;
-      bs->print = stop_on_solib_events;
+      bs->stop = stop_on_solib_events != 0;
+      bs->print = stop_on_solib_events != 0;
     }
   else
-    bs->stop = 0;
+    bs->stop = false;
 }
 
-static enum print_stop_action
-internal_bkpt_print_it (bpstat bs)
+enum print_stop_action
+internal_breakpoint::print_it (const bpstat *bs) const
 {
-  struct breakpoint *b;
-
-  b = bs->breakpoint_at;
-
-  switch (b->type)
+  switch (type)
     {
     case bp_shlib_event:
       /* Did we stop because the user set the stop_on_solib_events
 	 variable?  (If so, we report this as a generic, "Stopped due
 	 to shlib event" message.) */
-      print_solib_event (0);
+      print_solib_event (false);
       break;
 
     case bp_thread_event:
       /* Not sure how we will get here.
 	 GDB should not stop for these breakpoints.  */
-      printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
+      gdb_printf (_("Thread Event Breakpoint: gdb should not stop!\n"));
       break;
 
     case bp_overlay_event:
       /* By analogy with the thread event, GDB should not stop for these.  */
-      printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
+      gdb_printf (_("Overlay Event Breakpoint: gdb should not stop!\n"));
       break;
 
     case bp_longjmp_master:
       /* These should never be enabled.  */
-      printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
+      gdb_printf (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
       break;
 
     case bp_std_terminate_master:
       /* These should never be enabled.  */
-      printf_filtered (_("std::terminate Master Breakpoint: "
-			 "gdb should not stop!\n"));
+      gdb_printf (_("std::terminate Master Breakpoint: "
+		    "gdb should not stop!\n"));
       break;
 
     case bp_exception_master:
       /* These should never be enabled.  */
-      printf_filtered (_("Exception Master Breakpoint: "
-			 "gdb should not stop!\n"));
+      gdb_printf (_("Exception Master Breakpoint: "
+		    "gdb should not stop!\n"));
       break;
     }
 
   return PRINT_NOTHING;
 }
 
-static void
-internal_bkpt_print_mention (struct breakpoint *b)
+void
+internal_breakpoint::print_mention () const
 {
   /* Nothing to mention.  These breakpoints are internal.  */
 }
 
 /* Virtual table for momentary breakpoints  */
 
-static void
-momentary_bkpt_re_set (struct breakpoint *b)
+void
+momentary_breakpoint::re_set (struct program_space *pspace)
 {
   /* Keep temporary breakpoints, which can be encountered when we step
      over a dlopen call and solib_add is resetting the breakpoints.
@@ -12628,20 +12307,20 @@ momentary_bkpt_re_set (struct breakpoint
      or by breakpoint_init_inferior when we rerun the executable.  */
 }
 
-static void
-momentary_bkpt_check_status (bpstat bs)
+void
+momentary_breakpoint::check_status (bpstat *bs)
 {
   /* Nothing.  The point of these breakpoints is causing a stop.  */
 }
 
-static enum print_stop_action
-momentary_bkpt_print_it (bpstat bs)
+enum print_stop_action
+momentary_breakpoint::print_it (const bpstat *bs) const
 {
   return PRINT_UNKNOWN;
 }
 
-static void
-momentary_bkpt_print_mention (struct breakpoint *b)
+void
+momentary_breakpoint::print_mention () const
 {
   /* Nothing to mention.  These breakpoints are internal.  */
 }
@@ -12659,211 +12338,107 @@ longjmp_breakpoint::~longjmp_breakpoint
     tp->initiating_frame = null_frame_id;
 }
 
-/* Specific methods for probe breakpoints.  */
-
-static int
-bkpt_probe_insert_location (struct bp_location *bl)
-{
-  int v = bkpt_insert_location (bl);
-
-  if (v == 0)
-    {
-      /* The insertion was successful, now let's set the probe's semaphore
-	 if needed.  */
-      bl->probe.prob->set_semaphore (bl->probe.objfile, bl->gdbarch);
-    }
-
-  return v;
-}
-
-static int
-bkpt_probe_remove_location (struct bp_location *bl,
-			    enum remove_bp_reason reason)
-{
-  /* Let's clear the semaphore before removing the location.  */
-  bl->probe.prob->clear_semaphore (bl->probe.objfile, bl->gdbarch);
-
-  return bkpt_remove_location (bl, reason);
-}
-
 static void
-bkpt_probe_create_sals_from_location (const struct event_location *location,
-				      struct linespec_result *canonical,
-				      enum bptype type_wanted)
+bkpt_probe_create_sals_from_location_spec (location_spec *locspec,
+					   struct linespec_result *canonical,
+					   struct program_space *search_pspace)
+
 {
   struct linespec_sals lsal;
 
-  lsal.sals = parse_probes (location, NULL, canonical);
-  lsal.canonical
-    = xstrdup (event_location_to_string (canonical->location.get ()));
+  lsal.sals = parse_probes (locspec, search_pspace, canonical);
+  lsal.canonical = xstrdup (canonical->locspec->to_string ());
   canonical->lsals.push_back (std::move (lsal));
 }
 
 static std::vector<symtab_and_line>
-bkpt_probe_decode_location (struct breakpoint *b,
-			    const struct event_location *location,
-			    struct program_space *search_pspace)
+bkpt_probe_decode_location_spec (struct breakpoint *b,
+				 location_spec *locspec,
+				 program_space *search_pspace)
 {
-  std::vector<symtab_and_line> sals = parse_probes (location, search_pspace, NULL);
+  std::vector<symtab_and_line> sals
+    = parse_probes (locspec, search_pspace, NULL);
   if (sals.empty ())
     error (_("probe not found"));
   return sals;
 }
 
-/* The breakpoint_ops structure to be used in tracepoints.  */
-
-static void
-tracepoint_re_set (struct breakpoint *b)
-{
-  breakpoint_re_set_default (b);
-}
-
-static int
-tracepoint_breakpoint_hit (const struct bp_location *bl,
-			   const address_space *aspace, CORE_ADDR bp_addr,
-			   const struct target_waitstatus *ws)
+int
+tracepoint::breakpoint_hit (const struct bp_location *bl,
+			    const address_space *aspace, CORE_ADDR bp_addr,
+			    const target_waitstatus &ws)
 {
   /* By definition, the inferior does not report stops at
      tracepoints.  */
   return 0;
 }
 
-static void
-tracepoint_print_one_detail (const struct breakpoint *self,
-			     struct ui_out *uiout)
+void
+tracepoint::print_one_detail (struct ui_out *uiout) const
 {
-  struct tracepoint *tp = (struct tracepoint *) self;
-  if (!tp->static_trace_marker_id.empty ())
+  if (!static_trace_marker_id.empty ())
     {
-      gdb_assert (self->type == bp_static_tracepoint);
+      gdb_assert (type == bp_static_tracepoint
+		  || type == bp_static_marker_tracepoint);
 
       uiout->message ("\tmarker id is %pF\n",
 		      string_field ("static-tracepoint-marker-string-id",
-				    tp->static_trace_marker_id.c_str ()));
+				    static_trace_marker_id.c_str ()));
     }
 }
 
-static void
-tracepoint_print_mention (struct breakpoint *b)
+void
+tracepoint::print_mention () const
 {
   if (current_uiout->is_mi_like_p ())
     return;
 
-  switch (b->type)
+  switch (type)
     {
     case bp_tracepoint:
-      printf_filtered (_("Tracepoint"));
-      printf_filtered (_(" %d"), b->number);
+      gdb_printf (_("Tracepoint"));
+      gdb_printf (_(" %d"), number);
       break;
     case bp_fast_tracepoint:
-      printf_filtered (_("Fast tracepoint"));
-      printf_filtered (_(" %d"), b->number);
+      gdb_printf (_("Fast tracepoint"));
+      gdb_printf (_(" %d"), number);
       break;
     case bp_static_tracepoint:
-      printf_filtered (_("Static tracepoint"));
-      printf_filtered (_(" %d"), b->number);
+    case bp_static_marker_tracepoint:
+      gdb_printf (_("Static tracepoint"));
+      gdb_printf (_(" %d"), number);
       break;
     default:
-      internal_error (__FILE__, __LINE__,
-		      _("unhandled tracepoint type %d"), (int) b->type);
+      internal_error (_("unhandled tracepoint type %d"), (int) type);
     }
 
-  say_where (b);
+  say_where ();
 }
 
-static void
-tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
+void
+tracepoint::print_recreate (struct ui_file *fp) const
 {
-  struct tracepoint *tp = (struct tracepoint *) self;
-
-  if (self->type == bp_fast_tracepoint)
-    fprintf_unfiltered (fp, "ftrace");
-  else if (self->type == bp_static_tracepoint)
-    fprintf_unfiltered (fp, "strace");
-  else if (self->type == bp_tracepoint)
-    fprintf_unfiltered (fp, "trace");
+  if (type == bp_fast_tracepoint)
+    gdb_printf (fp, "ftrace");
+  else if (type == bp_static_tracepoint
+	   || type == bp_static_marker_tracepoint)
+    gdb_printf (fp, "strace");
+  else if (type == bp_tracepoint)
+    gdb_printf (fp, "trace");
   else
-    internal_error (__FILE__, __LINE__,
-		    _("unhandled tracepoint type %d"), (int) self->type);
-
-  fprintf_unfiltered (fp, " %s",
-		      event_location_to_string (self->location.get ()));
-  print_recreate_thread (self, fp);
-
-  if (tp->pass_count)
-    fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
-}
-
-static void
-tracepoint_create_sals_from_location (const struct event_location *location,
-				      struct linespec_result *canonical,
-				      enum bptype type_wanted)
-{
-  create_sals_from_location_default (location, canonical, type_wanted);
-}
+    internal_error (_("unhandled tracepoint type %d"), (int) type);
 
-static void
-tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
-				   struct linespec_result *canonical,
-				   gdb::unique_xmalloc_ptr<char> cond_string,
-				   gdb::unique_xmalloc_ptr<char> extra_string,
-				   enum bptype type_wanted,
-				   enum bpdisp disposition,
-				   int thread,
-				   int task, int ignore_count,
-				   const struct breakpoint_ops *ops,
-				   int from_tty, int enabled,
-				   int internal, unsigned flags)
-{
-  create_breakpoints_sal_default (gdbarch, canonical,
-				  std::move (cond_string),
-				  std::move (extra_string),
-				  type_wanted,
-				  disposition, thread, task,
-				  ignore_count, ops, from_tty,
-				  enabled, internal, flags);
-}
+  gdb_printf (fp, " %s", locspec->to_string ());
+  print_recreate_thread (fp);
 
-static std::vector<symtab_and_line>
-tracepoint_decode_location (struct breakpoint *b,
-			    const struct event_location *location,
-			    struct program_space *search_pspace)
-{
-  return decode_location_default (b, location, search_pspace);
+  if (pass_count)
+    gdb_printf (fp, "  passcount %d\n", pass_count);
 }
 
-struct breakpoint_ops tracepoint_breakpoint_ops;
-
-/* Virtual table for tracepoints on static probes.  */
-
-static void
-tracepoint_probe_create_sals_from_location
-  (const struct event_location *location,
-   struct linespec_result *canonical,
-   enum bptype type_wanted)
-{
-  /* We use the same method for breakpoint on probes.  */
-  bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
-}
-
-static std::vector<symtab_and_line>
-tracepoint_probe_decode_location (struct breakpoint *b,
-				  const struct event_location *location,
-				  struct program_space *search_pspace)
-{
-  /* We use the same method for breakpoint on probes.  */
-  return bkpt_probe_decode_location (b, location, search_pspace);
-}
-
-/* Dprintf breakpoint_ops methods.  */
-
-static void
-dprintf_re_set (struct breakpoint *b)
+void
+dprintf_breakpoint::re_set (struct program_space *pspace)
 {
-  breakpoint_re_set_default (b);
-
-  /* extra_string should never be non-NULL for dprintf.  */
-  gdb_assert (b->extra_string != NULL);
+  re_set_default (pspace);
 
   /* 1 - connect to target 1, that can run breakpoint commands.
      2 - create a dprintf, which resolves fine.
@@ -12875,23 +12450,19 @@ dprintf_re_set (struct breakpoint *b)
      answers for target_can_run_breakpoint_commands().
      Given absence of finer grained resetting, we get to do
      it all the time.  */
-  if (b->extra_string != NULL)
-    update_dprintf_command_list (b);
+  update_dprintf_command_list (this);
 }
 
-/* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
+/* Implement the "print_recreate" method for dprintf.  */
 
-static void
-dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
+void
+dprintf_breakpoint::print_recreate (struct ui_file *fp) const
 {
-  fprintf_unfiltered (fp, "dprintf %s,%s",
-		      event_location_to_string (tp->location.get ()),
-		      tp->extra_string);
-  print_recreate_thread (tp, fp);
+  gdb_printf (fp, "dprintf %s,%s", locspec->to_string (), extra_string.get ());
+  print_recreate_thread (fp);
 }
 
-/* Implement the "after_condition_true" breakpoint_ops method for
-   dprintf.
+/* Implement the "after_condition_true" method for dprintf.
 
    dprintf's are implemented with regular commands in their command
    list, but we run the commands here instead of before presenting the
@@ -12899,53 +12470,45 @@ dprintf_print_recreate (struct breakpoin
    also makes it so that the commands of multiple dprintfs at the same
    address are all handled.  */
 
-static void
-dprintf_after_condition_true (struct bpstats *bs)
+void
+dprintf_breakpoint::after_condition_true (struct bpstat *bs)
 {
-  struct bpstats tmp_bs;
-  struct bpstats *tmp_bs_p = &tmp_bs;
-
   /* dprintf's never cause a stop.  This wasn't set in the
      check_status hook instead because that would make the dprintf's
      condition not be evaluated.  */
-  bs->stop = 0;
+  bs->stop = false;
 
   /* Run the command list here.  Take ownership of it instead of
      copying.  We never want these commands to run later in
      bpstat_do_actions, if a breakpoint that causes a stop happens to
      be set at same address as this dprintf, or even if running the
      commands here throws.  */
-  tmp_bs.commands = bs->commands;
-  bs->commands = NULL;
-
-  bpstat_do_actions_1 (&tmp_bs_p);
-
-  /* 'tmp_bs.commands' will usually be NULL by now, but
-     bpstat_do_actions_1 may return early without processing the whole
-     list.  */
+  counted_command_line cmds = std::move (bs->commands);
+  gdb_assert (cmds != nullptr);
+  execute_control_commands (cmds.get (), 0);
 }
 
 /* The breakpoint_ops structure to be used on static tracepoints with
    markers (`-m').  */
 
 static void
-strace_marker_create_sals_from_location (const struct event_location *location,
-					 struct linespec_result *canonical,
-					 enum bptype type_wanted)
+strace_marker_create_sals_from_location_spec
+	(location_spec *locspec,
+	 struct linespec_result *canonical,
+	 struct program_space *search_pspace)
 {
   struct linespec_sals lsal;
   const char *arg_start, *arg;
 
-  arg = arg_start = get_linespec_location (location)->spec_string;
+  arg = arg_start = as_linespec_location_spec (locspec)->spec_string.get ();
   lsal.sals = decode_static_tracepoint_spec (&arg);
 
   std::string str (arg_start, arg - arg_start);
   const char *ptr = str.c_str ();
-  canonical->location
-    = new_linespec_location (&ptr, symbol_name_match_type::FULL);
+  canonical->locspec
+    = new_linespec_location_spec (&ptr, symbol_name_match_type::FULL);
 
-  lsal.canonical
-    = xstrdup (event_location_to_string (canonical->location.get ()));
+  lsal.canonical = xstrdup (canonical->locspec->to_string ());
   canonical->lsals.push_back (std::move (lsal));
 }
 
@@ -12957,8 +12520,8 @@ strace_marker_create_breakpoints_sal (st
 				      enum bptype type_wanted,
 				      enum bpdisp disposition,
 				      int thread,
-				      int task, int ignore_count,
-				      const struct breakpoint_ops *ops,
+				      int task, int inferior,
+				      int ignore_count,
 				      int from_tty, int enabled,
 				      int internal, unsigned flags)
 {
@@ -12973,18 +12536,21 @@ strace_marker_create_breakpoints_sal (st
 
   for (size_t i = 0; i < lsal.sals.size (); i++)
     {
-      event_location_up location
-	= copy_event_location (canonical->location.get ());
+      location_spec_up locspec = canonical->locspec->clone ();
+
+      std::unique_ptr<tracepoint> tp
+	(new tracepoint (gdbarch,
+			 type_wanted,
+			 lsal.sals[i],
+			 std::move (locspec),
+			 NULL,
+			 std::move (cond_string),
+			 std::move (extra_string),
+			 disposition,
+			 thread, task, inferior, ignore_count,
+			 from_tty, enabled, flags,
+			 canonical->special_display));
 
-      std::unique_ptr<tracepoint> tp (new tracepoint ());
-      init_breakpoint_sal (tp.get (), gdbarch, lsal.sals[i],
-			   std::move (location), NULL,
-			   std::move (cond_string),
-			   std::move (extra_string),
-			   type_wanted, disposition,
-			   thread, task, ignore_count, ops,
-			   from_tty, enabled, internal, flags,
-			   canonical->special_display);
       /* Given that its possible to have multiple markers with
 	 the same string id, if the user is creating a static
 	 tracepoint by marker id ("strace -m MARKER_ID"), then
@@ -12997,31 +12563,43 @@ 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 program_space *search_pspace)
+std::vector<symtab_and_line>
+static_marker_tracepoint::decode_location_spec (location_spec *locspec,
+						program_space *search_pspace)
 {
-  struct tracepoint *tp = (struct tracepoint *) b;
-  const char *s = get_linespec_location (location)->spec_string;
+  const char *s = as_linespec_location_spec (locspec)->spec_string.get ();
 
   std::vector<symtab_and_line> sals = decode_static_tracepoint_spec (&s);
-  if (sals.size () > tp->static_trace_marker_id_idx)
+  if (sals.size () > static_trace_marker_id_idx)
     {
-      sals[0] = sals[tp->static_trace_marker_id_idx];
+      sals[0] = sals[static_trace_marker_id_idx];
       sals.resize (1);
       return sals;
     }
   else
-    error (_("marker %s not found"), tp->static_trace_marker_id.c_str ());
+    error (_("marker %s not found"), static_trace_marker_id.c_str ());
 }
 
-static struct breakpoint_ops strace_marker_breakpoint_ops;
+/* Static tracepoints with marker (`-m').  */
+static struct breakpoint_ops strace_marker_breakpoint_ops =
+{
+  strace_marker_create_sals_from_location_spec,
+  strace_marker_create_breakpoints_sal,
+};
 
-static int
+static bool
 strace_marker_p (struct breakpoint *b)
 {
-  return b->ops == &strace_marker_breakpoint_ops;
+  return b->type == bp_static_marker_tracepoint;
+}
+
+/* Notify interpreters and observers that breakpoint B was deleted.  */
+
+static void
+notify_breakpoint_deleted (breakpoint *b)
+{
+  interps_notify_breakpoint_deleted (b);
+  gdb::observers::breakpoint_deleted.notify (b);
 }
 
 /* Delete a breakpoint and clean up all traces of it in the data
@@ -13030,8 +12608,6 @@ strace_marker_p (struct breakpoint *b)
 void
 delete_breakpoint (struct breakpoint *bpt)
 {
-  struct breakpoint *b;
-
   gdb_assert (bpt != NULL);
 
   /* Has this bp already been deleted?  This can happen because
@@ -13061,9 +12637,9 @@ delete_breakpoint (struct breakpoint *bp
       struct watchpoint *w;
 
       if (bpt->type == bp_watchpoint_scope)
-	w = (struct watchpoint *) bpt->related_breakpoint;
+	w = gdb::checked_static_cast<watchpoint *> (bpt->related_breakpoint);
       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
-	w = (struct watchpoint *) bpt;
+	w = gdb::checked_static_cast<watchpoint *> (bpt);
       else
 	w = NULL;
       if (w != NULL)
@@ -13081,17 +12657,9 @@ delete_breakpoint (struct breakpoint *bp
      a problem in that process, we'll be asked to delete the half-created
      watchpoint.  In that case, don't announce the deletion.  */
   if (bpt->number)
-    gdb::observers::breakpoint_deleted.notify (bpt);
+    notify_breakpoint_deleted (bpt);
 
-  if (breakpoint_chain == bpt)
-    breakpoint_chain = bpt->next;
-
-  ALL_BREAKPOINTS (b)
-    if (b->next == bpt)
-    {
-      b->next = bpt->next;
-      break;
-    }
+  breakpoint_chain.erase (breakpoint_chain.iterator_to (*bpt));
 
   /* Be sure no bpstat's are pointing at the breakpoint after it's
      been freed.  */
@@ -13103,14 +12671,22 @@ delete_breakpoint (struct breakpoint *bp
      event-top.c won't do anything, and temporary breakpoints with
      commands won't work.  */
 
-  iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
+  iterate_over_threads ([&] (struct thread_info *th)
+    {
+      bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
+      return false;
+    });
 
   /* Now that breakpoint is removed from breakpoint list, update the
      global location list.  This will remove locations that used to
      belong to this breakpoint.  Do this before freeing the breakpoint
      itself, since remove_breakpoint looks at location's owner.  It
      might be better design to have location completely
-     self-contained, but it's not the case now.  */
+     self-contained, but it's not the case now.
+
+     Clear the location linked list first, otherwise, the intrusive_list
+     destructor accesses the locations after they are freed.  */
+  bpt->clear_locations ();
   update_global_location_list (UGLL_DONT_INSERT);
 
   /* On the chance that someone will soon try again to delete this
@@ -13157,19 +12733,17 @@ iterate_over_related_breakpoints (struct
 static void
 delete_command (const char *arg, int from_tty)
 {
-  struct breakpoint *b, *b_tmp;
-
   dont_repeat ();
 
   if (arg == 0)
     {
       int breaks_to_delete = 0;
 
-      /* Delete all breakpoints if no argument.  Do not delete
-         internal breakpoints, these have to be deleted with an
-         explicit breakpoint number argument.  */
-      ALL_BREAKPOINTS (b)
-	if (user_breakpoint_p (b))
+      /* Delete all breakpoints, watchpoints, tracepoints, and catchpoints
+	 if no argument.  Do not delete internal breakpoints, these have to
+	 be deleted with an explicit breakpoint number argument.  */
+      for (breakpoint &b : all_breakpoints ())
+	if (user_breakpoint_p (&b))
 	  {
 	    breaks_to_delete = 1;
 	    break;
@@ -13177,12 +12751,12 @@ delete_command (const char *arg, int fro
 
       /* Ask user only if there are some breakpoints to delete.  */
       if (!from_tty
-	  || (breaks_to_delete && query (_("Delete all breakpoints? "))))
-	{
-	  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-	    if (user_breakpoint_p (b))
-	      delete_breakpoint (b);
-	}
+	  || (breaks_to_delete
+	      && query (_("Delete all breakpoints, watchpoints, tracepoints, "
+			  "and catchpoints? "))))
+	for (breakpoint &b : all_breakpoints_safe ())
+	  if (user_breakpoint_p (&b))
+	    delete_breakpoint (&b);
     }
   else
     map_breakpoint_numbers
@@ -13196,54 +12770,40 @@ delete_command (const char *arg, int fro
    PSPACE is NULL, all locations of all program spaces are
    considered.  */
 
-static int
+static bool
 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
 {
-  struct bp_location *loc;
-
-  for (loc = b->loc; loc != NULL; loc = loc->next)
+  for (bp_location &loc : b->locations ())
     if ((pspace == NULL
-	 || loc->pspace == pspace)
-	&& !loc->shlib_disabled
-	&& !loc->pspace->executing_startup)
-      return 0;
-  return 1;
+	 || loc.pspace == pspace)
+	&& !loc.shlib_disabled
+	&& !loc.pspace->executing_startup)
+      return false;
+  return true;
 }
 
 /* Subroutine of update_breakpoint_locations to simplify it.
-   Return non-zero if multiple fns in list LOC have the same name.
+   Return true if multiple fns in list LOCS have the same name.
    Null names are ignored.  */
 
-static int
-ambiguous_names_p (struct bp_location *loc)
+static bool
+ambiguous_names_p (const bp_location_range &locs)
 {
-  struct bp_location *l;
-  htab_t htab = htab_create_alloc (13, htab_hash_string, streq_hash, NULL,
-				   xcalloc, xfree);
+  gdb::unordered_set<std::string_view> htab;
 
-  for (l = loc; l != NULL; l = l->next)
+  for (const bp_location &l : locs)
     {
-      const char **slot;
-      const char *name = l->function_name;
+      const char *name = l.function_name.get ();
 
       /* Allow for some names to be NULL, ignore them.  */
       if (name == NULL)
 	continue;
 
-      slot = (const char **) htab_find_slot (htab, (const void *) name,
-					     INSERT);
-      /* NOTE: We can assume slot != NULL here because xcalloc never
-	 returns NULL.  */
-      if (*slot != NULL)
-	{
-	  htab_delete (htab);
-	  return 1;
-	}
-      *slot = name;
+      if (!htab.insert (name).second)
+	return true;
     }
 
-  htab_delete (htab);
-  return 0;
+  return false;
 }
 
 /* When symbols change, it probably means the sources changed as well,
@@ -13280,9 +12840,8 @@ ambiguous_names_p (struct bp_location *l
    precisely because it confuses tools).  */
 
 static struct symtab_and_line
-update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
+update_static_tracepoint (tracepoint *tp, struct symtab_and_line sal)
 {
-  struct tracepoint *tp = (struct tracepoint *) b;
   struct static_tracepoint_marker marker;
   CORE_ADDR pc;
 
@@ -13294,7 +12853,7 @@ update_static_tracepoint (struct breakpo
     {
       if (tp->static_trace_marker_id != marker.str_id)
 	warning (_("static tracepoint %d changed probed marker from %s to %s"),
-		 b->number, tp->static_trace_marker_id.c_str (),
+		 tp->number, tp->static_trace_marker_id.c_str (),
 		 marker.str_id.c_str ());
 
       tp->static_trace_marker_id = std::move (marker.str_id);
@@ -13318,7 +12877,6 @@ update_static_tracepoint (struct breakpo
 	  struct symbol *sym;
 	  struct static_tracepoint_marker *tpmarker;
 	  struct ui_out *uiout = current_uiout;
-	  struct explicit_location explicit_loc;
 
 	  tpmarker = &markers[0];
 
@@ -13326,7 +12884,7 @@ update_static_tracepoint (struct breakpo
 
 	  warning (_("marker for static tracepoint %d (%s) not "
 		     "found at previous line number"),
-		   b->number, tp->static_trace_marker_id.c_str ());
+		   tp->number, tp->static_trace_marker_id.c_str ());
 
 	  symtab_and_line sal2 = find_pc_line (tpmarker->address, 0);
 	  sym = find_pc_sect_function (tpmarker->address, NULL);
@@ -13349,19 +12907,19 @@ update_static_tracepoint (struct breakpo
 	      uiout->field_string ("fullname", fullname);
 	    }
 
-	  uiout->field_signed ("line", sal2.line);
+	  uiout->field_signed ("line", sal2.line, line_number_style.style ());
 	  uiout->text ("\n");
 
-	  b->loc->line_number = sal2.line;
-	  b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
+	  tp->first_loc ().line_number = sal2.line;
+	  tp->first_loc ().symtab = sym != NULL ? sal2.symtab : NULL;
+
+	  std::unique_ptr<explicit_location_spec> els
+	    (new explicit_location_spec
+	     (symtab_to_filename_for_display (sal2.symtab)));
+	  els->line_offset.offset = tp->first_loc ().line_number;
+	  els->line_offset.sign = LINE_OFFSET_NONE;
 
-	  b->location.reset (NULL);
-	  initialize_explicit_location (&explicit_loc);
-	  explicit_loc.source_filename
-	    = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
-	  explicit_loc.line_offset.offset = b->loc->line_number;
-	  explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
-	  b->location = new_explicit_location (&explicit_loc);
+	  tp->locspec = std::move (els);
 
 	  /* Might be nice to check if function changed, and warn if
 	     so.  */
@@ -13370,69 +12928,63 @@ update_static_tracepoint (struct breakpo
   return sal;
 }
 
-/* Returns 1 iff locations A and B are sufficiently same that
+/* Returns true iff location lists A and B are sufficiently same that
    we don't need to report breakpoint as changed.  */
 
-static int
-locations_are_equal (struct bp_location *a, struct bp_location *b)
+static bool
+locations_are_equal (const bp_location_list &a, const bp_location_range &b)
 {
-  while (a && b)
+  auto a_iter = a.begin ();
+  auto b_iter = b.begin ();
+
+  for (; a_iter != a.end () && b_iter != b.end (); ++a_iter, ++b_iter)
     {
-      if (a->address != b->address)
-	return 0;
+      if (a_iter->address != b_iter->address)
+	return false;
 
-      if (a->shlib_disabled != b->shlib_disabled)
-	return 0;
+      if (a_iter->shlib_disabled != b_iter->shlib_disabled)
+	return false;
 
-      if (a->enabled != b->enabled)
-	return 0;
+      if (a_iter->enabled != b_iter->enabled)
+	return false;
 
-      a = a->next;
-      b = b->next;
-    }
+      if (a_iter->disabled_by_cond != b_iter->disabled_by_cond)
+	return false;
 
-  if ((a == NULL) != (b == NULL))
-    return 0;
+      /* When a breakpoint is set by address, it is not created as
+	 pending; but then during an solib event or the like it may
+	 acquire a symbol.  So, check this here.  */
+      if (a_iter->symbol != b_iter->symbol
+	  || a_iter->msymbol != b_iter->msymbol)
+	return false;
+    }
 
-  return 1;
+  return (a_iter == a.end ()) == (b_iter == b.end ());
 }
 
-/* Split all locations of B that are bound to PSPACE out of B's
-   location list to a separate list and return that list's head.  If
-   PSPACE is NULL, hoist out all locations of B.  */
+/* See breakpoint.h.  */
 
-static struct bp_location *
-hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
+bp_location_list
+breakpoint::steal_locations (program_space *pspace)
 {
-  struct bp_location head;
-  struct bp_location *i = b->loc;
-  struct bp_location **i_link = &b->loc;
-  struct bp_location *hoisted = &head;
-
   if (pspace == NULL)
-    {
-      i = b->loc;
-      b->loc = NULL;
-      return i;
-    }
+    return std::move (m_locations);
 
-  head.next = NULL;
+  bp_location_list ret;
 
-  while (i != NULL)
+  for (auto it = m_locations.begin (); it != m_locations.end (); )
     {
-      if (i->pspace == pspace)
+      if (it->pspace == pspace)
 	{
-	  *i_link = i->next;
-	  i->next = NULL;
-	  hoisted->next = i;
-	  hoisted = i;
+	  bp_location &loc = *it;
+	  it = m_locations.erase (it);
+	  ret.push_back (loc);
 	}
       else
-	i_link = &i->next;
-      i = *i_link;
+	++it;
     }
 
-  return head.next;
+  return ret;
 }
 
 /* Create new breakpoint locations for B (a hardware or software
@@ -13442,21 +12994,20 @@ hoist_existing_locations (struct breakpo
    untouched.  */
 
 void
-update_breakpoint_locations (struct breakpoint *b,
+update_breakpoint_locations (code_breakpoint *b,
 			     struct program_space *filter_pspace,
 			     gdb::array_view<const symtab_and_line> sals,
 			     gdb::array_view<const symtab_and_line> sals_end)
 {
-  struct bp_location *existing_locations;
-
   if (!sals_end.empty () && (sals.size () != 1 || sals_end.size () != 1))
     {
       /* Ranged breakpoints have only one start location and one end
 	 location.  */
       b->enable_state = bp_disabled;
-      printf_unfiltered (_("Could not reset ranged breakpoint %d: "
-			   "multiple locations found\n"),
-			 b->number);
+      gdb_printf (gdb_stderr,
+		  _("Could not reset ranged breakpoint %d: "
+		    "multiple locations found\n"),
+		  b->number);
       return;
     }
 
@@ -13469,7 +13020,7 @@ update_breakpoint_locations (struct brea
   if (all_locations_are_pending (b, filter_pspace) && sals.empty ())
     return;
 
-  existing_locations = hoist_existing_locations (b, filter_pspace);
+  bp_location_list existing_locations = b->steal_locations (filter_pspace);
 
   for (const auto &sal : sals)
     {
@@ -13477,7 +13028,7 @@ update_breakpoint_locations (struct brea
 
       switch_to_program_space_and_thread (sal.pspace);
 
-      new_loc = add_location_to_breakpoint (b, &sal);
+      new_loc = b->add_location (sal);
 
       /* Reparse conditions, they might contain references to the
 	 old symtab.  */
@@ -13485,7 +13036,7 @@ update_breakpoint_locations (struct brea
 	{
 	  const char *s;
 
-	  s = b->cond_string;
+	  s = b->cond_string.get ();
 	  try
 	    {
 	      new_loc->cond = parse_exp_1 (&s, sal.pc,
@@ -13494,10 +13045,7 @@ update_breakpoint_locations (struct brea
 	    }
 	  catch (const gdb_exception_error &e)
 	    {
-	      warning (_("failed to reevaluate condition "
-			 "for breakpoint %d: %s"), 
-		       b->number, e.what ());
-	      new_loc->enabled = 0;
+	      new_loc->disabled_by_cond = true;
 	    }
 	}
 
@@ -13510,68 +13058,74 @@ update_breakpoint_locations (struct brea
     }
 
   /* If possible, carry over 'disable' status from existing
-     breakpoints.  */
-  {
-    struct bp_location *e = existing_locations;
-    /* If there are multiple breakpoints with the same function name,
-       e.g. for inline functions, comparing function names won't work.
-       Instead compare pc addresses; this is just a heuristic as things
-       may have moved, but in practice it gives the correct answer
-       often enough until a better solution is found.  */
-    int have_ambiguous_names = ambiguous_names_p (b->loc);
+     breakpoints.
 
-    for (; e; e = e->next)
-      {
-	if (!e->enabled && e->function_name)
-	  {
-	    struct bp_location *l = b->loc;
-	    if (have_ambiguous_names)
-	      {
-		for (; l; l = l->next)
-		  if (breakpoint_locations_match (e, l))
-		    {
-		      l->enabled = 0;
-		      break;
-		    }
-	      }
-	    else
+     If there are multiple breakpoints with the same function name,
+     e.g. for inline functions, comparing function names won't work.
+     Instead compare pc addresses; this is just a heuristic as things
+     may have moved, but in practice it gives the correct answer
+     often enough until a better solution is found.  */
+  bool have_ambiguous_names = ambiguous_names_p (b->locations ());
+
+  for (const bp_location &e : existing_locations)
+    {
+      if (e.function_name == nullptr || e.enabled)
+	continue;
+
+      if (have_ambiguous_names)
+	{
+	  for (bp_location &l : b->locations ())
+	    {
+	      /* 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 = e.enabled;
+		  break;
+		}
+	    }
+	}
+      else
+	{
+	  for (bp_location &l : b->locations ())
+	    if (l.function_name
+		&& strcmp (e.function_name.get (),
+			   l.function_name.get ()) == 0)
 	      {
-		for (; l; l = l->next)
-		  if (l->function_name
-		      && strcmp (e->function_name, l->function_name) == 0)
-		    {
-		      l->enabled = 0;
-		      break;
-		    }
+		l.enabled = e.enabled;
+		break;
 	      }
-	  }
-      }
-  }
+	}
+    }
 
-  if (!locations_are_equal (existing_locations, b->loc))
-    gdb::observers::breakpoint_modified.notify (b);
+  if (!locations_are_equal (existing_locations, b->locations ()))
+    notify_breakpoint_modified (b);
 }
 
-/* Find the SaL locations corresponding to the given LOCATION.
+/* Find the SaL locations corresponding to the given LOCSPEC.
    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
 
-static std::vector<symtab_and_line>
-location_to_sals (struct breakpoint *b, struct event_location *location,
-		  struct program_space *search_pspace, int *found)
+std::vector<symtab_and_line>
+code_breakpoint::location_spec_to_sals (location_spec *locspec,
+					struct program_space *search_pspace,
+					int *found)
 {
   struct gdb_exception exception;
 
-  gdb_assert (b->ops != NULL);
-
   std::vector<symtab_and_line> sals;
 
   try
     {
-      sals = b->ops->decode_location (b, location, search_pspace);
+      sals = decode_location_spec (locspec, search_pspace);
     }
   catch (gdb_exception_error &e)
     {
-      int not_found_and_ok = 0;
+      int not_found_and_ok = false;
 
       /* For pending breakpoints, it's expected that parsing will
 	 fail until the right shared library is loaded.  User has
@@ -13581,14 +13135,15 @@ location_to_sals (struct breakpoint *b,
 	 breakpoint being disabled, and don't want to see more
 	 errors.  */
       if (e.error == NOT_FOUND_ERROR
-	  && (b->condition_not_parsed
-	      || (b->loc != NULL
+	  && (condition_not_parsed
+	      || (this->has_locations ()
 		  && search_pspace != NULL
-		  && b->loc->pspace != search_pspace)
-	      || (b->loc && b->loc->shlib_disabled)
-	      || (b->loc && b->loc->pspace->executing_startup)
-	      || b->enable_state == bp_disabled))
-	not_found_and_ok = 1;
+		  && this->first_loc ().pspace != search_pspace)
+	      || (this->has_locations () && this->first_loc ().shlib_disabled)
+	      || (this->has_locations ()
+		  && this->first_loc ().pspace->executing_startup)
+	      || enable_state == bp_disabled))
+	not_found_and_ok = true;
 
       if (!not_found_and_ok)
 	{
@@ -13598,7 +13153,7 @@ location_to_sals (struct breakpoint *b,
 	     have separate 'warning emitted' flag.  Since this
 	     happens only when a binary has changed, I don't know
 	     which approach is better.  */
-	  b->enable_state = bp_disabled;
+	  enable_state = bp_disabled;
 	  throw;
 	}
 
@@ -13609,30 +13164,13 @@ location_to_sals (struct breakpoint *b,
     {
       for (auto &sal : sals)
 	resolve_sal_pc (&sal);
-      if (b->condition_not_parsed && b->extra_string != NULL)
-	{
-	  char *cond_string, *extra_string;
-	  int thread, task;
 
-	  find_condition_and_thread (b->extra_string, sals[0].pc,
-				     &cond_string, &thread, &task,
-				     &extra_string);
-	  gdb_assert (b->cond_string == NULL);
-	  if (cond_string)
-	    b->cond_string = cond_string;
-	  b->thread = thread;
-	  b->task = task;
-	  if (extra_string)
-	    {
-	      xfree (b->extra_string);
-	      b->extra_string = extra_string;
-	    }
-	  b->condition_not_parsed = 0;
+      if (type == bp_static_tracepoint)
+	{
+	  tracepoint *t = gdb::checked_static_cast<tracepoint *> (this);
+	  sals[0] = update_static_tracepoint (t, sals[0]);
 	}
 
-      if (b->type == bp_static_tracepoint && !strace_marker_p (b))
-	sals[0] = update_static_tracepoint (b, sals[0]);
-
       *found = 1;
     }
   else
@@ -13645,100 +13183,45 @@ location_to_sals (struct breakpoint *b,
    breakpoints.  Reevaluate the breakpoint and recreate its
    locations.  */
 
-static void
-breakpoint_re_set_default (struct breakpoint *b)
+void
+code_breakpoint::re_set_default (struct program_space *filter_pspace)
 {
-  struct program_space *filter_pspace = current_program_space;
   std::vector<symtab_and_line> expanded, expanded_end;
 
-  int found;
-  std::vector<symtab_and_line> sals = location_to_sals (b, b->location.get (),
-							filter_pspace, &found);
-  if (found)
-    expanded = std::move (sals);
-
-  if (b->location_range_end != NULL)
-    {
-      std::vector<symtab_and_line> sals_end
-	= location_to_sals (b, b->location_range_end.get (),
-			    filter_pspace, &found);
+  /* If this breakpoint is thread- or inferior-specific, then find the
+     program space in which this breakpoint exists.  Otherwise, for
+     breakpoints that are not thread- or inferior-specific, BP_PSPACE will
+     be nullptr.  */
+  program_space *bp_pspace
+    = find_program_space_for_breakpoint (this->thread, this->inferior);
+
+  /* If this is not a thread or inferior specific breakpoint, or it is a
+     thread or inferior specific breakpoint but we are looking for new
+     locations in the program space that the specific thread or inferior is
+     running, then look for new locations for this breakpoint.  */
+  if (bp_pspace == nullptr || filter_pspace == bp_pspace)
+    {
+      int found;
+      std::vector<symtab_and_line> sals
+	= location_spec_to_sals (locspec.get (), filter_pspace, &found);
       if (found)
-	expanded_end = std::move (sals_end);
-    }
-
-  update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
-}
-
-/* Default method for creating SALs from an address string.  It basically
-   calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
-
-static void
-create_sals_from_location_default (const struct event_location *location,
-				   struct linespec_result *canonical,
-				   enum bptype type_wanted)
-{
-  parse_breakpoint_sals (location, canonical);
-}
-
-/* Call create_breakpoints_sal for the given arguments.  This is the default
-   function for the `create_breakpoints_sal' method of
-   breakpoint_ops.  */
-
-static void
-create_breakpoints_sal_default (struct gdbarch *gdbarch,
-				struct linespec_result *canonical,
-				gdb::unique_xmalloc_ptr<char> cond_string,
-				gdb::unique_xmalloc_ptr<char> extra_string,
-				enum bptype type_wanted,
-				enum bpdisp disposition,
-				int thread,
-				int task, int ignore_count,
-				const struct breakpoint_ops *ops,
-				int from_tty, int enabled,
-				int internal, unsigned flags)
-{
-  create_breakpoints_sal (gdbarch, canonical,
-			  std::move (cond_string),
-			  std::move (extra_string),
-			  type_wanted, disposition,
-			  thread, task, ignore_count, ops, from_tty,
-			  enabled, internal, flags);
-}
-
-/* Decode the line represented by S by calling decode_line_full.  This is the
-   default function for the `decode_location' method of breakpoint_ops.  */
-
-static std::vector<symtab_and_line>
-decode_location_default (struct breakpoint *b,
-			 const struct event_location *location,
-			 struct program_space *search_pspace)
-{
-  struct linespec_result canonical;
+	expanded = std::move (sals);
 
-  decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
-		    NULL, 0, &canonical, multiple_symbols_all,
-		    b->filter.get ());
-
-  /* We should get 0 or 1 resulting SALs.  */
-  gdb_assert (canonical.lsals.size () < 2);
-
-  if (!canonical.lsals.empty ())
-    {
-      const linespec_sals &lsal = canonical.lsals[0];
-      return std::move (lsal.sals);
+      if (locspec_range_end != nullptr)
+	{
+	  std::vector<symtab_and_line> sals_end
+	    = location_spec_to_sals (locspec_range_end.get (),
+				     filter_pspace, &found);
+	  if (found)
+	    expanded_end = std::move (sals_end);
+	}
     }
-  return {};
-}
 
-/* Reset a breakpoint.  */
-
-static void
-breakpoint_re_set_one (breakpoint *b)
-{
-  input_radix = b->input_radix;
-  set_language (b->language);
-
-  b->ops->re_set (b);
+  /* Update the locations for this breakpoint.  For thread-specific
+     breakpoints this will remove any old locations that are for the wrong
+     program space -- this can happen if the user changes the thread of a
+     thread-specific breakpoint.  */
+  update_breakpoint_locations (this, filter_pspace, expanded, expanded_end);
 }
 
 /* Re-set breakpoint locations for the current program space.
@@ -13747,19 +13230,16 @@ breakpoint_re_set_one (breakpoint *b)
 void
 breakpoint_re_set (void)
 {
-  struct breakpoint *b, *b_tmp;
-
   {
     scoped_restore_current_language save_language;
     scoped_restore save_input_radix = make_scoped_restore (&input_radix);
     scoped_restore_current_pspace_and_thread restore_pspace_thread;
 
-    /* breakpoint_re_set_one sets the current_language to the language
-       of the breakpoint it is resetting (see prepare_re_set_context)
-       before re-evaluating the breakpoint's location.  This change can
-       unfortunately get undone by accident if the language_mode is set
-       to auto, and we either switch frames, or more likely in this context,
-       we select the current frame.
+    /* To ::re_set each breakpoint we set the current_language to the
+       language of the breakpoint before re-evaluating the breakpoint's
+       location.  This change can unfortunately get undone by accident if
+       the language_mode is set to auto, and we either switch frames, or
+       more likely in this context, we select the current frame.
 
        We prevent this by temporarily turning the language_mode to
        language_mode_manual.  We restore it once all breakpoints
@@ -13772,17 +13252,19 @@ breakpoint_re_set (void)
        breakpoint 1, we'd insert the locations of breakpoint 2, which
        hadn't been re-set yet, and thus may have stale locations.  */
 
-    ALL_BREAKPOINTS_SAFE (b, b_tmp)
+    for (breakpoint &b : all_breakpoints_safe ())
       {
 	try
 	  {
-	    breakpoint_re_set_one (b);
+	    input_radix = b.input_radix;
+	    set_language (b.language);
+	    b.re_set (current_program_space);
 	  }
 	catch (const gdb_exception &ex)
 	  {
 	    exception_fprintf (gdb_stderr, ex,
 			       "Error in re-setting breakpoint %d: ",
-			       b->number);
+			       b.number);
 	  }
       }
 
@@ -13797,6 +13279,53 @@ breakpoint_re_set (void)
   /* Now we can insert.  */
   update_global_location_list (UGLL_MAY_INSERT);
 }
+
+/* Re-set locations for breakpoint B in FILTER_PSPACE.  If FILTER_PSPACE is
+   nullptr then re-set locations for B in all program spaces.  Locations
+   bound to program spaces other than FILTER_PSPACE are left untouched.  */
+
+static void
+breakpoint_re_set_one (breakpoint *b, program_space *filter_pspace)
+{
+  {
+    scoped_restore_current_language save_language;
+    scoped_restore save_input_radix = make_scoped_restore (&input_radix);
+    scoped_restore_current_pspace_and_thread restore_pspace_thread;
+
+    /* To ::re_set each breakpoint we set the current_language to the
+       language of the breakpoint before re-evaluating the breakpoint's
+       location.  This change can unfortunately get undone by accident if
+       the language_mode is set to auto, and we either switch frames, or
+       more likely in this context, we select the current frame.
+
+       We prevent this by temporarily turning the language_mode to
+       language_mode_manual.  We restore it once all breakpoints
+       have been reset.  */
+    scoped_restore save_language_mode = make_scoped_restore (&language_mode);
+    language_mode = language_mode_manual;
+
+    /* Note: we must not try to insert locations until after all
+       breakpoints have been re-set.  Otherwise, e.g., when re-setting
+       breakpoint 1, we'd insert the locations of breakpoint 2, which
+       hadn't been re-set yet, and thus may have stale locations.  */
+
+    try
+      {
+	input_radix = b->input_radix;
+	set_language (b->language);
+	b->re_set (filter_pspace);
+      }
+    catch (const gdb_exception &ex)
+      {
+	exception_fprintf (gdb_stderr, ex,
+			   "Error in re-setting breakpoint %d: ",
+			   b->number);
+      }
+  }
+
+  /* Now we can insert.  */
+  update_global_location_list (UGLL_MAY_INSERT);
+}
 
 /* Reset the thread number of this breakpoint:
 
@@ -13813,7 +13342,7 @@ breakpoint_re_set_thread (struct breakpo
 	 selected as current, and unless this was a vfork will have a
 	 different program space from the original thread.  Reset that
 	 as well.  */
-      b->loc->pspace = current_program_space;
+      b->first_loc ().pspace = current_program_space;
     }
 }
 
@@ -13824,40 +13353,38 @@ breakpoint_re_set_thread (struct breakpo
 void
 set_ignore_count (int bptnum, int count, int from_tty)
 {
-  struct breakpoint *b;
-
   if (count < 0)
     count = 0;
 
-  ALL_BREAKPOINTS (b)
-    if (b->number == bptnum)
-    {
-      if (is_tracepoint (b))
-	{
-	  if (from_tty && count != 0)
-	    printf_filtered (_("Ignore count ignored for tracepoint %d."),
-			     bptnum);
-	  return;
-	}
-      
-      b->ignore_count = count;
-      if (from_tty)
-	{
-	  if (count == 0)
-	    printf_filtered (_("Will stop next time "
-			       "breakpoint %d is reached."),
-			     bptnum);
-	  else if (count == 1)
-	    printf_filtered (_("Will ignore next crossing of breakpoint %d."),
-			     bptnum);
-	  else
-	    printf_filtered (_("Will ignore next %d "
-			       "crossings of breakpoint %d."),
-			     count, bptnum);
-	}
-      gdb::observers::breakpoint_modified.notify (b);
-      return;
-    }
+  for (breakpoint &b : all_breakpoints ())
+    if (b.number == bptnum)
+      {
+	if (is_tracepoint (&b))
+	  {
+	    if (from_tty && count != 0)
+	      gdb_printf (_("Ignore count ignored for tracepoint %d."),
+			  bptnum);
+	    return;
+	  }
+
+	b.ignore_count = count;
+	if (from_tty)
+	  {
+	    if (count == 0)
+	      gdb_printf (_("Will stop next time "
+			    "breakpoint %d is reached."),
+			  bptnum);
+	    else if (count == 1)
+	      gdb_printf (_("Will ignore next crossing of breakpoint %d."),
+			  bptnum);
+	    else
+	      gdb_printf (_("Will ignore next %d "
+			    "crossings of breakpoint %d."),
+			  count, bptnum);
+	  }
+	notify_breakpoint_modified (&b);
+	return;
+      }
 
   error (_("No breakpoint number %d."), bptnum);
 }
@@ -13883,7 +13410,7 @@ ignore_command (const char *args, int fr
 		    longest_to_int (value_as_long (parse_and_eval (p))),
 		    from_tty);
   if (from_tty)
-    printf_filtered ("\n");
+    gdb_printf ("\n");
 }
 
 
@@ -13901,21 +13428,19 @@ map_breakpoint_number_range (std::pair<i
     }
   else
     {
-      struct breakpoint *b, *tmp;
-
       for (int i = bp_num_range.first; i <= bp_num_range.second; i++)
 	{
 	  bool match = false;
 
-	  ALL_BREAKPOINTS_SAFE (b, tmp)
-	    if (b->number == i)
+	  for (breakpoint &b : all_breakpoints_safe ())
+	    if (b.number == i)
 	      {
 		match = true;
-		function (b);
+		function (&b);
 		break;
 	      }
 	  if (!match)
-	    printf_unfiltered (_("No breakpoint number %d.\n"), i);
+	    gdb_printf (_("No breakpoint number %d.\n"), i);
 	}
     }
 }
@@ -13945,13 +13470,7 @@ map_breakpoint_numbers (const char *args
 static struct bp_location *
 find_location_by_number (int bp_num, int loc_num)
 {
-  struct breakpoint *b;
-
-  ALL_BREAKPOINTS (b)
-    if (b->number == bp_num)
-      {
-	break;
-      }
+  breakpoint *b = get_breakpoint (bp_num);
 
   if (!b || b->number != bp_num)
     error (_("Bad breakpoint number '%d'"), bp_num);
@@ -13960,9 +13479,9 @@ find_location_by_number (int bp_num, int
     error (_("Bad breakpoint location number '%d'"), loc_num);
 
   int n = 0;
-  for (bp_location *loc = b->loc; loc != NULL; loc = loc->next)
+  for (bp_location &loc : b->locations ())
     if (++n == loc_num)
-      return loc;
+      return &loc;
 
   error (_("Bad breakpoint location number '%d'"), loc_num);
 }
@@ -14101,6 +13620,10 @@ enable_disable_bp_num_loc (int bp_num, i
   struct bp_location *loc = find_location_by_number (bp_num, loc_num);
   if (loc != NULL)
     {
+      if (loc->disabled_by_cond && enable)
+	error (_("Breakpoint %d's condition is invalid at location %d, "
+		 "cannot enable."), bp_num, loc_num);
+
       if (loc->enabled != enable)
 	{
 	  loc->enabled = enable;
@@ -14113,7 +13636,64 @@ enable_disable_bp_num_loc (int bp_num, i
     }
   update_global_location_list (UGLL_DONT_INSERT);
 
-  gdb::observers::breakpoint_modified.notify (loc->owner);
+  notify_breakpoint_modified (loc->owner);
+}
+
+/* Calculates LOC_NUM for LOC by traversing the bp_location chain of LOC's
+   owner.  1-based indexing.  -1 signals NOT FOUND.  */
+
+static int
+find_loc_num_by_location (const bp_location *loc)
+{
+  if (loc != nullptr && loc->owner != nullptr)
+    {
+      /* Locations use 1-based indexing.  */
+      int loc_num = 1;
+      for (bp_location &it : loc->owner->locations ())
+	{
+	  if (&it == loc)
+	    return loc_num;
+	  loc_num++;
+	}
+    }
+  return -1;
+}
+
+/* Enable or disable a breakpoint location LOC.  ENABLE
+   specifies whether to enable or disable.  */
+
+void
+enable_disable_bp_location (bp_location *loc, bool enable)
+{
+  if (loc == nullptr)
+    error (_("Breakpoint location is invalid."));
+
+  if (loc->owner == nullptr)
+    error (_("Breakpoint location does not have an owner breakpoint."));
+
+  if (loc->disabled_by_cond && enable)
+    {
+      int loc_num = find_loc_num_by_location (loc);
+      if (loc_num == -1)
+	error (_("Breakpoint location LOC_NUM could not be found."));
+      else
+	error (_("Breakpoint %d's condition is invalid at location %d, "
+		 "cannot enable."), loc->owner->number, loc_num);
+    }
+
+  if (loc->enabled != enable)
+    {
+      loc->enabled = enable;
+      mark_breakpoint_location_modified (loc);
+    }
+
+  if (target_supports_enable_disable_tracepoint ()
+      && current_trace_status ()->running && loc->owner
+      && is_tracepoint (loc->owner))
+    target_disable_tracepoint (loc);
+
+  update_global_location_list (UGLL_DONT_INSERT);
+  notify_breakpoint_modified (loc->owner);
 }
 
 /* Enable or disable a range of breakpoint locations.  BP_NUM is the
@@ -14152,15 +13732,13 @@ disable_breakpoint (struct breakpoint *b
   if (target_supports_enable_disable_tracepoint ()
       && current_trace_status ()->running && is_tracepoint (bpt))
     {
-      struct bp_location *location;
-     
-      for (location = bpt->loc; location; location = location->next)
-	target_disable_tracepoint (location);
+      for (bp_location &location : bpt->locations ())
+	target_disable_tracepoint (&location);
     }
 
   update_global_location_list (UGLL_DONT_INSERT);
 
-  gdb::observers::breakpoint_modified.notify (bpt);
+  notify_breakpoint_modified (bpt);
 }
 
 /* Enable or disable the breakpoint(s) or breakpoint location(s)
@@ -14173,15 +13751,13 @@ enable_disable_command (const char *args
 {
   if (args == 0)
     {
-      struct breakpoint *bpt;
-
-      ALL_BREAKPOINTS (bpt)
-	if (user_breakpoint_p (bpt))
+      for (breakpoint &bpt : all_breakpoints ())
+	if (user_breakpoint_p (&bpt))
 	  {
 	    if (enable)
-	      enable_breakpoint (bpt);
+	      enable_breakpoint (&bpt);
 	    else
-	      disable_breakpoint (bpt);
+	      disable_breakpoint (&bpt);
 	  }
     }
   else
@@ -14195,9 +13771,13 @@ enable_disable_command (const char *args
 	  extract_bp_number_and_location (num, bp_num_range, bp_loc_range);
 
 	  if (bp_loc_range.first == bp_loc_range.second
-	      && bp_loc_range.first == 0)
+	      && (bp_loc_range.first == 0
+		  || (bp_loc_range.first == 1
+		      && bp_num_range.first == bp_num_range.second
+		      && !has_multiple_locations (bp_num_range.first))))
 	    {
-	      /* Handle breakpoint ids with formats 'x' or 'x-z'.  */
+	      /* Handle breakpoint ids with formats 'x' or 'x-z'
+		 or 'y.1' where y has only one code location.  */
 	      map_breakpoint_number_range (bp_num_range,
 					   enable
 					   ? enable_breakpoint
@@ -14252,13 +13832,13 @@ enable_breakpoint_disp (struct breakpoin
 
       try
 	{
-	  struct watchpoint *w = (struct watchpoint *) bpt;
+	  watchpoint *w = gdb::checked_static_cast<watchpoint *> (bpt);
 
 	  orig_enable_state = bpt->enable_state;
 	  bpt->enable_state = bp_enabled;
-	  update_watchpoint (w, 1 /* reparse */);
+	  update_watchpoint (w, true /* reparse */);
 	}
-      catch (const gdb_exception &e)
+      catch (const gdb_exception_error &e)
 	{
 	  bpt->enable_state = orig_enable_state;
 	  exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
@@ -14275,17 +13855,15 @@ enable_breakpoint_disp (struct breakpoin
   if (target_supports_enable_disable_tracepoint ()
       && current_trace_status ()->running && is_tracepoint (bpt))
     {
-      struct bp_location *location;
-
-      for (location = bpt->loc; location; location = location->next)
-	target_enable_tracepoint (location);
+      for (bp_location &location : bpt->locations ())
+	target_enable_tracepoint (&location);
     }
 
   bpt->disposition = disposition;
   bpt->enable_count = count;
   update_global_location_list (UGLL_MAY_INSERT);
 
-  gdb::observers::breakpoint_modified.notify (bpt);
+  notify_breakpoint_modified (bpt);
 }
 
 
@@ -14355,16 +13933,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.  */
@@ -14374,25 +13942,21 @@ invalidate_bp_value_on_memory_change (st
 				      CORE_ADDR addr, ssize_t len,
 				      const bfd_byte *data)
 {
-  struct breakpoint *bp;
-
-  ALL_BREAKPOINTS (bp)
-    if (bp->enable_state == bp_enabled
-	&& bp->type == bp_hardware_watchpoint)
+  for (breakpoint &bp : all_breakpoints ())
+    if (bp.enable_state == bp_enabled
+	&& bp.type == bp_hardware_watchpoint)
       {
-	struct watchpoint *wp = (struct watchpoint *) bp;
+	watchpoint &wp = gdb::checked_static_cast<watchpoint &> (bp);
 
-	if (wp->val_valid && wp->val != nullptr)
+	if (wp.val_valid && wp.val != nullptr)
 	  {
-	    struct bp_location *loc;
-
-	    for (loc = bp->loc; loc != NULL; loc = loc->next)
-	      if (loc->loc_type == bp_loc_hardware_watchpoint
-		  && loc->address + loc->length > addr
-		  && addr + len > loc->address)
+	    for (bp_location &loc : bp.locations ())
+	      if (loc.loc_type == bp_loc_hardware_watchpoint
+		  && loc.address + loc.length > addr
+		  && addr + len > loc.address)
 		{
-		  wp->val = NULL;
-		  wp->val_valid = false;
+		  wp.val = NULL;
+		  wp.val_valid = false;
 		}
 	  }
       }
@@ -14411,15 +13975,25 @@ insert_single_step_breakpoint (struct gd
 
   if (tp->control.single_step_breakpoints == NULL)
     {
+      std::unique_ptr<breakpoint> b
+	(new momentary_breakpoint (gdbarch, bp_single_step,
+				   current_program_space,
+				   null_frame_id,
+				   tp->global_num));
+
       tp->control.single_step_breakpoints
-	= new_single_step_breakpoint (tp->global_num, gdbarch);
+	= add_to_breakpoint_chain (std::move (b));
     }
 
   sal = find_pc_line (pc, 0);
   sal.pc = pc;
   sal.section = find_pc_overlay (pc);
   sal.explicit_pc = 1;
-  add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
+
+  auto *ss_bp
+    = (gdb::checked_static_cast<momentary_breakpoint *>
+       (tp->control.single_step_breakpoints));
+  ss_bp->add_location (sal);
 
   update_global_location_list (UGLL_INSERT);
 }
@@ -14429,14 +14003,12 @@ insert_single_step_breakpoint (struct gd
 int
 insert_single_step_breakpoints (struct gdbarch *gdbarch)
 {
-  struct regcache *regcache = get_current_regcache ();
-  std::vector<CORE_ADDR> next_pcs;
-
-  next_pcs = gdbarch_software_single_step (gdbarch, regcache);
+  regcache *regcache = get_thread_regcache (inferior_thread ());
+  std::vector<CORE_ADDR> next_pcs = gdbarch_get_next_pcs (gdbarch, regcache);
 
   if (!next_pcs.empty ())
     {
-      struct frame_info *frame = get_current_frame ();
+      frame_info_ptr frame = get_current_frame ();
       const address_space *aspace = get_frame_address_space (frame);
 
       for (CORE_ADDR pc : next_pcs)
@@ -14455,11 +14027,9 @@ breakpoint_has_location_inserted_here (s
 				       const address_space *aspace,
 				       CORE_ADDR pc)
 {
-  struct bp_location *loc;
-
-  for (loc = bp->loc; loc != NULL; loc = loc->next)
-    if (loc->inserted
-	&& breakpoint_location_address_match (loc, aspace, pc))
+  for (bp_location &loc : bp->locations ())
+    if (loc.inserted
+	&& breakpoint_location_address_match (&loc, aspace, pc))
       return 1;
 
   return 0;
@@ -14472,12 +14042,10 @@ int
 single_step_breakpoint_inserted_here_p (const address_space *aspace,
 					CORE_ADDR pc)
 {
-  struct breakpoint *bpt;
-
-  ALL_BREAKPOINTS (bpt)
+  for (breakpoint &bpt : all_breakpoints ())
     {
-      if (bpt->type == bp_single_step
-	  && breakpoint_has_location_inserted_here (bpt, aspace, pc))
+      if (bpt.type == bp_single_step
+	  && breakpoint_has_location_inserted_here (&bpt, aspace, pc))
 	return 1;
     }
   return 0;
@@ -14496,14 +14064,14 @@ set_tracepoint_count (int num)
 static void
 trace_command (const char *arg, int from_tty)
 {
-  event_location_up location = string_to_event_location (&arg,
-							 current_language);
-  const struct breakpoint_ops *ops = breakpoint_ops_for_event_location
-    (location.get (), true /* is_tracepoint */);
+  location_spec_up locspec = string_to_location_spec (&arg,
+						      current_language);
+  const struct breakpoint_ops *ops = breakpoint_ops_for_location_spec
+    (locspec.get (), true /* is_tracepoint */);
 
   create_breakpoint (get_current_arch (),
-		     location.get (),
-		     NULL, 0, arg, 1 /* parse arg */,
+		     locspec.get (),
+		     NULL, -1, -1, arg, false, 1 /* parse arg */,
 		     0 /* tempflag */,
 		     bp_tracepoint /* type_wanted */,
 		     0 /* Ignore count */,
@@ -14517,16 +14085,16 @@ trace_command (const char *arg, int from
 static void
 ftrace_command (const char *arg, int from_tty)
 {
-  event_location_up location = string_to_event_location (&arg,
-							 current_language);
+  location_spec_up locspec = string_to_location_spec (&arg,
+						      current_language);
   create_breakpoint (get_current_arch (),
-		     location.get (),
-		     NULL, 0, arg, 1 /* parse arg */,
+		     locspec.get (),
+		     NULL, -1, -1, arg, false, 1 /* parse arg */,
 		     0 /* tempflag */,
 		     bp_fast_tracepoint /* type_wanted */,
 		     0 /* Ignore count */,
 		     pending_break_support,
-		     &tracepoint_breakpoint_ops,
+		     &code_breakpoint_ops,
 		     from_tty,
 		     1 /* enabled */,
 		     0 /* internal */, 0);
@@ -14537,27 +14105,31 @@ ftrace_command (const char *arg, int fro
 static void
 strace_command (const char *arg, int from_tty)
 {
-  struct breakpoint_ops *ops;
-  event_location_up location;
+  const struct breakpoint_ops *ops;
+  location_spec_up locspec;
+  enum bptype type;
 
   /* Decide if we are dealing with a static tracepoint marker (`-m'),
      or with a normal static tracepoint.  */
   if (arg && startswith (arg, "-m") && isspace (arg[2]))
     {
       ops = &strace_marker_breakpoint_ops;
-      location = new_linespec_location (&arg, symbol_name_match_type::FULL);
+      locspec = new_linespec_location_spec (&arg,
+					    symbol_name_match_type::FULL);
+      type = bp_static_marker_tracepoint;
     }
   else
     {
-      ops = &tracepoint_breakpoint_ops;
-      location = string_to_event_location (&arg, current_language);
+      ops = &code_breakpoint_ops;
+      locspec = string_to_location_spec (&arg, current_language);
+      type = bp_static_tracepoint;
     }
 
   create_breakpoint (get_current_arch (),
-		     location.get (),
-		     NULL, 0, arg, 1 /* parse arg */,
+		     locspec.get (),
+		     NULL, -1, -1, arg, false, 1 /* parse arg */,
 		     0 /* tempflag */,
-		     bp_static_tracepoint /* type_wanted */,
+		     type /* type_wanted */,
 		     0 /* Ignore count */,
 		     pending_break_support,
 		     ops,
@@ -14572,8 +14144,8 @@ strace_command (const char *arg, int fro
 static struct uploaded_tp *this_utp;
 static int next_cmd;
 
-static char *
-read_uploaded_action (void)
+static const char *
+read_uploaded_action (std::string &buffer)
 {
   char *rslt = nullptr;
 
@@ -14620,17 +14192,24 @@ create_tracepoint_from_upload (struct up
 	       "has no source form, ignoring it"),
 	     utp->number);
 
-  event_location_up location = string_to_event_location (&addr_str,
-							 current_language);
+  location_spec_up locspec = string_to_location_spec (&addr_str,
+						      current_language);
+
+
+  gdb_assert (addr_str != nullptr);
+  if (*addr_str != '\0')
+    error (_("Garbage '%s' at end of location"), addr_str);
+
   if (!create_breakpoint (get_current_arch (),
-			  location.get (),
-			  utp->cond_string.get (), -1, addr_str,
+			  locspec.get (),
+			  utp->cond_string.get (), -1, -1, addr_str,
+			  false /* force_condition */,
 			  0 /* parse cond/thread */,
 			  0 /* tempflag */,
 			  utp->type /* type_wanted */,
 			  0 /* Ignore count */,
 			  pending_break_support,
-			  &tracepoint_breakpoint_ops,
+			  &code_breakpoint_ops,
 			  0 /* from_tty */,
 			  utp->enabled /* enabled */,
 			  0 /* internal */,
@@ -14719,20 +14298,18 @@ disable_trace_command (const char *args,
 static void
 delete_trace_command (const char *arg, int from_tty)
 {
-  struct breakpoint *b, *b_tmp;
-
   dont_repeat ();
 
   if (arg == 0)
     {
       int breaks_to_delete = 0;
 
-      /* Delete all breakpoints if no argument.
-         Do not delete internal or call-dummy breakpoints, these
-         have to be deleted with an explicit breakpoint number 
+      /* Delete all tracepoints if no argument.
+	 Do not delete internal or call-dummy breakpoints, these
+	 have to be deleted with an explicit breakpoint number 
 	 argument.  */
-      ALL_TRACEPOINTS (b)
-	if (is_tracepoint (b) && user_breakpoint_p (b))
+      for (breakpoint &tp : all_tracepoints ())
+	if (is_tracepoint (&tp) && user_breakpoint_p (&tp))
 	  {
 	    breaks_to_delete = 1;
 	    break;
@@ -14742,9 +14319,9 @@ delete_trace_command (const char *arg, i
       if (!from_tty
 	  || (breaks_to_delete && query (_("Delete all tracepoints? "))))
 	{
-	  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-	    if (is_tracepoint (b) && user_breakpoint_p (b))
-	      delete_breakpoint (b);
+	  for (breakpoint &b : all_breakpoints_safe ())
+	    if (is_tracepoint (&b) && user_breakpoint_p (&b))
+	      delete_breakpoint (&b);
 	}
     }
   else
@@ -14761,10 +14338,10 @@ static void
 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
 {
   tp->pass_count = count;
-  gdb::observers::breakpoint_modified.notify (tp);
+  notify_breakpoint_modified (tp);
   if (from_tty)
-    printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
-		     tp->number, count);
+    gdb_printf (_("Setting tracepoint %d's passcount to %d\n"),
+		tp->number, count);
 }
 
 /* Set passcount for tracepoint.
@@ -14776,7 +14353,6 @@ trace_pass_set_count (struct tracepoint
 static void
 trace_pass_command (const char *args, int from_tty)
 {
-  struct tracepoint *t1;
   ULONGEST count;
 
   if (args == 0 || *args == 0)
@@ -14788,21 +14364,19 @@ trace_pass_command (const char *args, in
   args = skip_spaces (args);
   if (*args && strncasecmp (args, "all", 3) == 0)
     {
-      struct breakpoint *b;
-
       args += 3;			/* Skip special argument "all".  */
       if (*args)
 	error (_("Junk at end of arguments."));
 
-      ALL_TRACEPOINTS (b)
-      {
-	t1 = (struct tracepoint *) b;
-	trace_pass_set_count (t1, count, from_tty);
-      }
+      for (breakpoint &b : all_tracepoints ())
+	{
+	  tracepoint &t1 = gdb::checked_static_cast<tracepoint &> (b);
+	  trace_pass_set_count (&t1, count, from_tty);
+	}
     }
   else if (*args == '\0')
     {
-      t1 = get_tracepoint_by_number (&args, NULL);
+      tracepoint *t1 = get_tracepoint_by_number (&args, NULL);
       if (t1)
 	trace_pass_set_count (t1, count, from_tty);
     }
@@ -14811,7 +14385,7 @@ trace_pass_command (const char *args, in
       number_or_range_parser parser (args);
       while (!parser.finished ())
 	{
-	  t1 = get_tracepoint_by_number (&args, &parser);
+	  tracepoint *t1 = get_tracepoint_by_number (&args, &parser);
 	  if (t1)
 	    trace_pass_set_count (t1, count, from_tty);
 	}
@@ -14821,11 +14395,9 @@ trace_pass_command (const char *args, in
 struct tracepoint *
 get_tracepoint (int num)
 {
-  struct breakpoint *t;
-
-  ALL_TRACEPOINTS (t)
-    if (t->number == num)
-      return (struct tracepoint *) t;
+  for (breakpoint &t : all_tracepoints ())
+    if (t.number == num)
+      return gdb::checked_static_cast<tracepoint *> (&t);
 
   return NULL;
 }
@@ -14837,14 +14409,12 @@ get_tracepoint (int num)
 struct tracepoint *
 get_tracepoint_by_number_on_target (int num)
 {
-  struct breakpoint *b;
-
-  ALL_TRACEPOINTS (b)
+  for (breakpoint &b : all_tracepoints ())
     {
-      struct tracepoint *t = (struct tracepoint *) b;
+      tracepoint &t = gdb::checked_static_cast<tracepoint &> (b);
 
-      if (t->number_on_target == num)
-	return t;
+      if (t.number_on_target == num)
+	return &t;
     }
 
   return NULL;
@@ -14859,7 +14429,6 @@ struct tracepoint *
 get_tracepoint_by_number (const char **arg,
 			  number_or_range_parser *parser)
 {
-  struct breakpoint *t;
   int tpnum;
   const char *instring = arg == NULL ? NULL : *arg;
 
@@ -14876,33 +14445,34 @@ get_tracepoint_by_number (const char **a
   if (tpnum <= 0)
     {
       if (instring && *instring)
-	printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
-			 instring);
+	gdb_printf (_("bad tracepoint number at or near '%s'\n"), 
+		    instring);
       else
-	printf_filtered (_("No previous tracepoint\n"));
+	gdb_printf (_("No previous tracepoint\n"));
       return NULL;
     }
 
-  ALL_TRACEPOINTS (t)
-    if (t->number == tpnum)
-    {
-      return (struct tracepoint *) t;
-    }
+  for (breakpoint &t : all_tracepoints ())
+    if (t.number == tpnum)
+      return gdb::checked_static_cast<tracepoint *> (&t);
 
-  printf_unfiltered ("No tracepoint number %d.\n", tpnum);
+  gdb_printf ("No tracepoint number %d.\n", tpnum);
   return NULL;
 }
 
 void
-print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
+breakpoint::print_recreate_thread (struct ui_file *fp) const
 {
-  if (b->thread != -1)
-    fprintf_unfiltered (fp, " thread %d", b->thread);
+  if (thread != -1)
+    {
+      struct thread_info *thr = find_thread_global_id (thread);
+      gdb_printf (fp, " thread %s", print_full_thread_id (thr));
+    }
 
-  if (b->task != 0)
-    fprintf_unfiltered (fp, " task %d", b->task);
+  if (task != -1)
+    gdb_printf (fp, " task %d", task);
 
-  fprintf_unfiltered (fp, "\n");
+  gdb_printf (fp, "\n");
 }
 
 /* Save information on user settable breakpoints (watchpoints, etc) to
@@ -14914,34 +14484,33 @@ static void
 save_breakpoints (const char *filename, int from_tty,
 		  bool (*filter) (const struct breakpoint *))
 {
-  struct breakpoint *tp;
-  int any = 0;
+  bool any = false;
   int extra_trace_bits = 0;
 
   if (filename == 0 || *filename == 0)
     error (_("Argument required (file name in which to save)"));
 
   /* See if we have anything to save.  */
-  ALL_BREAKPOINTS (tp)
-  {
-    /* Skip internal and momentary breakpoints.  */
-    if (!user_breakpoint_p (tp))
-      continue;
+  for (breakpoint &tp : all_breakpoints ())
+    {
+      /* Skip internal and momentary breakpoints.  */
+      if (!user_breakpoint_p (&tp))
+	continue;
 
-    /* If we have a filter, only save the breakpoints it accepts.  */
-    if (filter && !filter (tp))
-      continue;
+      /* If we have a filter, only save the breakpoints it accepts.  */
+      if (filter && !filter (&tp))
+	continue;
 
-    any = 1;
+      any = true;
 
-    if (is_tracepoint (tp))
-      {
-	extra_trace_bits = 1;
+      if (is_tracepoint (&tp))
+	{
+	  extra_trace_bits = 1;
 
-	/* We can stop searching.  */
-	break;
-      }
-  }
+	  /* We can stop searching.  */
+	  break;
+	}
+    }
 
   if (!any)
     {
@@ -14960,69 +14529,63 @@ save_breakpoints (const char *filename,
   if (extra_trace_bits)
     save_trace_state_variables (&fp);
 
-  ALL_BREAKPOINTS (tp)
-  {
-    /* Skip internal and momentary breakpoints.  */
-    if (!user_breakpoint_p (tp))
-      continue;
+  for (breakpoint &tp : all_breakpoints ())
+    {
+      /* Skip internal and momentary breakpoints.  */
+      if (!user_breakpoint_p (&tp))
+	continue;
 
-    /* If we have a filter, only save the breakpoints it accepts.  */
-    if (filter && !filter (tp))
-      continue;
+      /* If we have a filter, only save the breakpoints it accepts.  */
+      if (filter && !filter (&tp))
+	continue;
 
-    tp->ops->print_recreate (tp, &fp);
+      tp.print_recreate (&fp);
 
-    /* Note, we can't rely on tp->number for anything, as we can't
-       assume the recreated breakpoint numbers will match.  Use $bpnum
-       instead.  */
+      /* Note, we can't rely on tp->number for anything, as we can't
+	 assume the recreated breakpoint numbers will match.  Use $bpnum
+	 instead.  */
 
-    if (tp->cond_string)
-      fp.printf ("  condition $bpnum %s\n", tp->cond_string);
+      if (tp.cond_string)
+	fp.printf ("  condition $bpnum %s\n", tp.cond_string.get ());
 
-    if (tp->ignore_count)
-      fp.printf ("  ignore $bpnum %d\n", tp->ignore_count);
+      if (tp.ignore_count)
+	fp.printf ("  ignore $bpnum %d\n", tp.ignore_count);
 
-    if (tp->type != bp_dprintf && tp->commands)
-      {
-	fp.puts ("  commands\n");
-	
-	current_uiout->redirect (&fp);
-	try
-	  {
-	    print_command_lines (current_uiout, tp->commands.get (), 2);
-	  }
-	catch (const gdb_exception &ex)
-	  {
-	  current_uiout->redirect (NULL);
-	    throw;
-	  }
+      if (tp.type != bp_dprintf && tp.commands)
+	{
+	  fp.puts ("  commands\n");
 
-	current_uiout->redirect (NULL);
-	fp.puts ("  end\n");
-      }
+	  ui_out_redirect_pop redir (current_uiout, &fp);
+	  print_command_lines (current_uiout, tp.commands.get (), 2);
 
-    if (tp->enable_state == bp_disabled)
-      fp.puts ("disable $bpnum\n");
+	  fp.puts ("  end\n");
+	}
 
-    /* If this is a multi-location breakpoint, check if the locations
-       should be individually disabled.  Watchpoint locations are
-       special, and not user visible.  */
-    if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
-      {
-	struct bp_location *loc;
-	int n = 1;
+      if (tp.enable_state == bp_disabled)
+	fp.puts ("disable $bpnum\n");
 
-	for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
-	  if (!loc->enabled)
-	    fp.printf ("disable $bpnum.%d\n", n);
-      }
-  }
+      /* If this is a multi-location breakpoint, check if the locations
+	 should be individually disabled.  Watchpoint locations are
+	 special, and not user visible.  */
+      if (!is_watchpoint (&tp) && tp.has_multiple_locations ())
+	{
+	  int n = 1;
+
+	  for (bp_location &loc : tp.locations ())
+	    {
+	      if (!loc.enabled)
+		fp.printf ("disable $bpnum.%d\n", n);
 
-  if (extra_trace_bits && *default_collect)
-    fp.printf ("set default-collect %s\n", default_collect);
+	      n++;
+	    }
+	}
+    }
+
+  if (extra_trace_bits && !default_collect.empty ())
+    fp.printf ("set default-collect %s\n", default_collect.c_str ());
 
   if (from_tty)
-    printf_filtered (_("Saved to file '%s'.\n"), expanded_filename.get ());
+    gdb_printf (_("Saved to file '%s'.\n"), expanded_filename.get ());
 }
 
 /* The `save breakpoints' command.  */
@@ -15041,27 +14604,11 @@ save_tracepoints_command (const char *ar
   save_breakpoints (args, from_tty, is_tracepoint);
 }
 
-/* Create a vector of all tracepoints.  */
-
-std::vector<breakpoint *>
-all_tracepoints (void)
-{
-  std::vector<breakpoint *> tp_vec;
-  struct breakpoint *tp;
-
-  ALL_TRACEPOINTS (tp)
-  {
-    tp_vec.push_back (tp);
-  }
-
-  return tp_vec;
-}
-
 
 /* This help string is used to consolidate all the help string for specifying
    locations used by several commands.  */
 
-#define LOCATION_HELP_STRING \
+#define LOCATION_SPEC_HELP_STRING \
 "Linespecs are colon-separated lists of location parameters, such as\n\
 source filename, function name, label name, and line number.\n\
 Example: To specify the start of a label named \"the_top\" in the\n\
@@ -15091,10 +14638,11 @@ specified name as a complete fully-quali
    command.  */
 
 #define BREAK_ARGS_HELP(command) \
-command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
+command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM]\n\
+\t[-force-condition] [if CONDITION]\n\
 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
-guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
+guessed probe type), `-probe-stap' (for a SystemTap probe) or\n\
 `-probe-dtrace' (for a DTrace probe).\n\
 LOCATION may be a linespec, address, or explicit location as described\n\
 below.\n\
@@ -15104,7 +14652,10 @@ stack frame.  This is useful for breakin
 \n\
 THREADNUM is the number from \"info threads\".\n\
 CONDITION is a boolean expression.\n\
-\n" LOCATION_HELP_STRING "\n\n\
+\n\
+With the \"-force-condition\" flag, the condition is defined even when\n\
+it is invalid for all current locations.\n\
+\n" LOCATION_SPEC_HELP_STRING "\n\n\
 Multiple breakpoints at one place are permitted, and useful if their\n\
 conditions are different.\n\
 \n\
@@ -15118,7 +14669,7 @@ static struct cmd_list_element *tcatch_c
 
 void
 add_catch_command (const char *name, const char *docstring,
-		   cmd_const_sfunc_ftype *sfunc,
+		   cmd_func_ftype *func,
 		   completer_ftype *completer,
 		   void *user_data_catch,
 		   void *user_data_tcatch)
@@ -15127,51 +14678,26 @@ add_catch_command (const char *name, con
 
   command = add_cmd (name, class_breakpoint, docstring,
 		     &catch_cmdlist);
-  set_cmd_sfunc (command, sfunc);
-  set_cmd_context (command, user_data_catch);
+  command->func = func;
+  command->set_context (user_data_catch);
   set_cmd_completer (command, completer);
 
   command = add_cmd (name, class_breakpoint, docstring,
 		     &tcatch_cmdlist);
-  set_cmd_sfunc (command, sfunc);
-  set_cmd_context (command, user_data_tcatch);
+  command->func = func;
+  command->set_context (user_data_tcatch);
   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)
-{
-  struct breakpoint *b, *b_tmp;
-
-  ALL_BREAKPOINTS_SAFE (b, b_tmp)
-    {
-      if (callback (b))
-	return b;
-    }
+/* False if any of the breakpoint's locations could be a location where
+   functions have been inlined, true otherwise.  */
 
-  return NULL;
-}
-
-/* Zero if any of the breakpoint's locations could be a location where
-   functions have been inlined, nonzero otherwise.  */
-
-static int
+static bool
 is_non_inline_function (struct breakpoint *b)
 {
   /* The shared library event breakpoint is set on the address of a
      non-inline function.  */
-  if (b->type == bp_shlib_event)
-    return 1;
-
-  return 0;
+  return (b->type == bp_shlib_event);
 }
 
 /* Nonzero if the specified PC cannot be a location where functions
@@ -15179,20 +14705,17 @@ is_non_inline_function (struct breakpoin
 
 int
 pc_at_non_inline_function (const address_space *aspace, CORE_ADDR pc,
-			   const struct target_waitstatus *ws)
+			   const target_waitstatus &ws)
 {
-  struct breakpoint *b;
-  struct bp_location *bl;
-
-  ALL_BREAKPOINTS (b)
+  for (breakpoint &b : all_breakpoints ())
     {
-      if (!is_non_inline_function (b))
+      if (!is_non_inline_function (&b))
 	continue;
 
-      for (bl = b->loc; bl != NULL; bl = bl->next)
+      for (bp_location &bl : b.locations ())
 	{
-	  if (!bl->shlib_disabled
-	      && bpstat_check_location (bl, aspace, pc, ws))
+	  if (!bl.shlib_disabled
+	      && bpstat_check_location (&bl, aspace, pc, ws))
 	    return 1;
 	}
     }
@@ -15205,187 +14728,31 @@ pc_at_non_inline_function (const address
 void
 breakpoint_free_objfile (struct objfile *objfile)
 {
-  struct bp_location **locp, *loc;
-
-  ALL_BP_LOCATIONS (loc, locp)
-    if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
-      loc->symtab = NULL;
-}
-
-void
-initialize_breakpoint_ops (void)
-{
-  static int initialized = 0;
-
-  struct breakpoint_ops *ops;
+  for (bp_location *loc : all_bp_locations ())
+    {
+      if (loc->symtab != nullptr
+	  && loc->symtab->compunit ()->objfile () == objfile)
+	{
+	  loc->symtab = nullptr;
+	  loc->symbol = nullptr;
+	  loc->msymbol = nullptr;
+	}
 
-  if (initialized)
-    return;
-  initialized = 1;
+      if (loc->section != nullptr
+	  && loc->section->objfile == objfile)
+	{
+	  /* If symtab was set then it should have already been cleared.
+	     But if bp_location::msymbol was set then the symbol and symtab
+	     might already have been nullptr.  */
+	  gdb_assert (loc->symtab == nullptr);
+	  loc->section = nullptr;
+	  loc->symbol = nullptr;
+	  loc->msymbol = nullptr;
+	}
 
-  /* The breakpoint_ops structure to be inherit by all kinds of
-     breakpoints (real breakpoints, i.e., user "break" breakpoints,
-     internal and momentary breakpoints, etc.).  */
-  ops = &bkpt_base_breakpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->re_set = bkpt_re_set;
-  ops->insert_location = bkpt_insert_location;
-  ops->remove_location = bkpt_remove_location;
-  ops->breakpoint_hit = bkpt_breakpoint_hit;
-  ops->create_sals_from_location = bkpt_create_sals_from_location;
-  ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
-  ops->decode_location = bkpt_decode_location;
-
-  /* The breakpoint_ops structure to be used in regular breakpoints.  */
-  ops = &bkpt_breakpoint_ops;
-  *ops = bkpt_base_breakpoint_ops;
-  ops->re_set = bkpt_re_set;
-  ops->resources_needed = bkpt_resources_needed;
-  ops->print_it = bkpt_print_it;
-  ops->print_mention = bkpt_print_mention;
-  ops->print_recreate = bkpt_print_recreate;
-
-  /* Ranged breakpoints.  */
-  ops = &ranged_breakpoint_ops;
-  *ops = bkpt_breakpoint_ops;
-  ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
-  ops->resources_needed = resources_needed_ranged_breakpoint;
-  ops->print_it = print_it_ranged_breakpoint;
-  ops->print_one = print_one_ranged_breakpoint;
-  ops->print_one_detail = print_one_detail_ranged_breakpoint;
-  ops->print_mention = print_mention_ranged_breakpoint;
-  ops->print_recreate = print_recreate_ranged_breakpoint;
-
-  /* Internal breakpoints.  */
-  ops = &internal_breakpoint_ops;
-  *ops = bkpt_base_breakpoint_ops;
-  ops->re_set = internal_bkpt_re_set;
-  ops->check_status = internal_bkpt_check_status;
-  ops->print_it = internal_bkpt_print_it;
-  ops->print_mention = internal_bkpt_print_mention;
-
-  /* Momentary breakpoints.  */
-  ops = &momentary_breakpoint_ops;
-  *ops = bkpt_base_breakpoint_ops;
-  ops->re_set = momentary_bkpt_re_set;
-  ops->check_status = momentary_bkpt_check_status;
-  ops->print_it = momentary_bkpt_print_it;
-  ops->print_mention = momentary_bkpt_print_mention;
-
-  /* Probe breakpoints.  */
-  ops = &bkpt_probe_breakpoint_ops;
-  *ops = bkpt_breakpoint_ops;
-  ops->insert_location = bkpt_probe_insert_location;
-  ops->remove_location = bkpt_probe_remove_location;
-  ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
-  ops->decode_location = bkpt_probe_decode_location;
-
-  /* Watchpoints.  */
-  ops = &watchpoint_breakpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->re_set = re_set_watchpoint;
-  ops->insert_location = insert_watchpoint;
-  ops->remove_location = remove_watchpoint;
-  ops->breakpoint_hit = breakpoint_hit_watchpoint;
-  ops->check_status = check_status_watchpoint;
-  ops->resources_needed = resources_needed_watchpoint;
-  ops->works_in_software_mode = works_in_software_mode_watchpoint;
-  ops->print_it = print_it_watchpoint;
-  ops->print_mention = print_mention_watchpoint;
-  ops->print_recreate = print_recreate_watchpoint;
-  ops->explains_signal = explains_signal_watchpoint;
-
-  /* Masked watchpoints.  */
-  ops = &masked_watchpoint_breakpoint_ops;
-  *ops = watchpoint_breakpoint_ops;
-  ops->insert_location = insert_masked_watchpoint;
-  ops->remove_location = remove_masked_watchpoint;
-  ops->resources_needed = resources_needed_masked_watchpoint;
-  ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
-  ops->print_it = print_it_masked_watchpoint;
-  ops->print_one_detail = print_one_detail_masked_watchpoint;
-  ops->print_mention = print_mention_masked_watchpoint;
-  ops->print_recreate = print_recreate_masked_watchpoint;
-
-  /* Tracepoints.  */
-  ops = &tracepoint_breakpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->re_set = tracepoint_re_set;
-  ops->breakpoint_hit = tracepoint_breakpoint_hit;
-  ops->print_one_detail = tracepoint_print_one_detail;
-  ops->print_mention = tracepoint_print_mention;
-  ops->print_recreate = tracepoint_print_recreate;
-  ops->create_sals_from_location = tracepoint_create_sals_from_location;
-  ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
-  ops->decode_location = tracepoint_decode_location;
-
-  /* Probe tracepoints.  */
-  ops = &tracepoint_probe_breakpoint_ops;
-  *ops = tracepoint_breakpoint_ops;
-  ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
-  ops->decode_location = tracepoint_probe_decode_location;
-
-  /* Static tracepoints with marker (`-m').  */
-  ops = &strace_marker_breakpoint_ops;
-  *ops = tracepoint_breakpoint_ops;
-  ops->create_sals_from_location = strace_marker_create_sals_from_location;
-  ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
-  ops->decode_location = strace_marker_decode_location;
-
-  /* Fork catchpoints.  */
-  ops = &catch_fork_breakpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->insert_location = insert_catch_fork;
-  ops->remove_location = remove_catch_fork;
-  ops->breakpoint_hit = breakpoint_hit_catch_fork;
-  ops->print_it = print_it_catch_fork;
-  ops->print_one = print_one_catch_fork;
-  ops->print_mention = print_mention_catch_fork;
-  ops->print_recreate = print_recreate_catch_fork;
-
-  /* Vfork catchpoints.  */
-  ops = &catch_vfork_breakpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->insert_location = insert_catch_vfork;
-  ops->remove_location = remove_catch_vfork;
-  ops->breakpoint_hit = breakpoint_hit_catch_vfork;
-  ops->print_it = print_it_catch_vfork;
-  ops->print_one = print_one_catch_vfork;
-  ops->print_mention = print_mention_catch_vfork;
-  ops->print_recreate = print_recreate_catch_vfork;
-
-  /* Exec catchpoints.  */
-  ops = &catch_exec_breakpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->insert_location = insert_catch_exec;
-  ops->remove_location = remove_catch_exec;
-  ops->breakpoint_hit = breakpoint_hit_catch_exec;
-  ops->print_it = print_it_catch_exec;
-  ops->print_one = print_one_catch_exec;
-  ops->print_mention = print_mention_catch_exec;
-  ops->print_recreate = print_recreate_catch_exec;
-
-  /* Solib-related catchpoints.  */
-  ops = &catch_solib_breakpoint_ops;
-  *ops = base_breakpoint_ops;
-  ops->insert_location = insert_catch_solib;
-  ops->remove_location = remove_catch_solib;
-  ops->breakpoint_hit = breakpoint_hit_catch_solib;
-  ops->check_status = check_status_catch_solib;
-  ops->print_it = print_it_catch_solib;
-  ops->print_one = print_one_catch_solib;
-  ops->print_mention = print_mention_catch_solib;
-  ops->print_recreate = print_recreate_catch_solib;
-
-  ops = &dprintf_breakpoint_ops;
-  *ops = bkpt_base_breakpoint_ops;
-  ops->re_set = dprintf_re_set;
-  ops->resources_needed = bkpt_resources_needed;
-  ops->print_it = bkpt_print_it;
-  ops->print_mention = bkpt_print_mention;
-  ops->print_recreate = dprintf_print_recreate;
-  ops->after_condition_true = dprintf_after_condition_true;
-  ops->breakpoint_hit = dprintf_breakpoint_hit;
+      if (loc->probe.objfile == objfile)
+	loc->probe = bound_probe ();
+    }
 }
 
 /* Chain containing all defined "enable breakpoint" subcommands.  */
@@ -15396,18 +14763,17 @@ static struct cmd_list_element *enablebr
 
 cmd_list_element *commands_cmd_element = nullptr;
 
-void
-_initialize_breakpoint (void)
+INIT_GDB_FILE (breakpoint)
 {
   struct cmd_list_element *c;
 
-  initialize_breakpoint_ops ();
+  gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib,
+					 "breakpoint");
+  gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile,
+				       "breakpoint");
+  gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change,
+					 "breakpoint");
 
-  gdb::observers::solib_unloaded.attach (disable_breakpoints_in_unloaded_shlib);
-  gdb::observers::free_objfile.attach (disable_breakpoints_in_freed_objfile);
-  gdb::observers::memory_changed.attach (invalidate_bp_value_on_memory_change);
-
-  breakpoint_chain = 0;
   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
      before a breakpoint is set.  */
   breakpoint_count = 0;
@@ -15430,11 +14796,19 @@ Type a line containing \"end\" to indica
 Give \"silent\" as the first line to make the breakpoint silent;\n\
 then no output is printed when it is hit, except what the commands print."));
 
-  c = add_com ("condition", class_breakpoint, condition_command, _("\
+  const auto cc_opts = make_condition_command_options_def_group (nullptr);
+  static std::string condition_command_help
+    = gdb::option::build_help (_("\
 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."));
-  set_cmd_completer (c, condition_completer);
+Usage is `condition [OPTION] N COND', where N is an integer and COND\n\
+is an expression to be evaluated whenever breakpoint N is reached.\n\
+\n\
+Options:\n\
+%OPTIONS%"), cc_opts);
+
+  c = add_com ("condition", class_breakpoint, condition_command,
+	       condition_command_help.c_str ());
+  set_cmd_completer_handle_brkchars (c, condition_completer);
 
   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
 Set a temporary breakpoint.\n\
@@ -15461,16 +14835,17 @@ so it will be deleted when hit.\n\
 BREAK_ARGS_HELP ("thbreak")));
   set_cmd_completer (c, location_completer);
 
-  add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
+  cmd_list_element *enable_cmd
+    = add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
 Enable all or some breakpoints.\n\
 Usage: enable [BREAKPOINTNUM]...\n\
 Give breakpoint numbers (separated by spaces) as arguments.\n\
 With no subcommand, breakpoints are enabled until you command otherwise.\n\
 This is used to cancel the effect of the \"disable\" command.\n\
 With a subcommand you can enable temporarily."),
-		  &enablelist, "enable ", 1, &cmdlist);
+		      &enablelist, 1, &cmdlist);
 
-  add_com_alias ("en", "enable", class_breakpoint, 1);
+  add_com_alias ("en", enable_cmd, class_breakpoint, 1);
 
   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
 Enable all or some breakpoints.\n\
@@ -15478,7 +14853,7 @@ Usage: enable breakpoints [BREAKPOINTNUM
 Give breakpoint numbers (separated by spaces) as arguments.\n\
 This is used to cancel the effect of the \"disable\" command.\n\
 May be abbreviated to simply \"enable\"."),
-		   &enablebreaklist, "enable breakpoints ", 1, &enablelist);
+		   &enablebreaklist, 1, &enablelist);
 
   add_cmd ("once", no_class, enable_once_command, _("\
 Enable some breakpoints for one hit.\n\
@@ -15518,17 +14893,18 @@ If a breakpoint is hit while enabled in
 the count is decremented; when it reaches zero, the breakpoint is disabled."),
 	   &enablelist);
 
-  add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
+  cmd_list_element *disable_cmd
+    = add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
 Disable all or some breakpoints.\n\
 Usage: disable [BREAKPOINTNUM]...\n\
 Arguments are breakpoint numbers with spaces in between.\n\
 To disable all breakpoints, give no argument.\n\
 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
-		  &disablelist, "disable ", 1, &cmdlist);
-  add_com_alias ("dis", "disable", class_breakpoint, 1);
-  add_com_alias ("disa", "disable", class_breakpoint, 1);
+		      &disablelist, 1, &cmdlist);
+  add_com_alias ("dis", disable_cmd, class_breakpoint, 1);
+  add_com_alias ("disa", disable_cmd, 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\
@@ -15537,72 +14913,52 @@ A disabled breakpoint is not forgotten,
 This command may be abbreviated \"disable\"."),
 	   &disablelist);
 
-  add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
+  cmd_list_element *delete_cmd
+    = add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
 Delete all or some breakpoints.\n\
 Usage: delete [BREAKPOINTNUM]...\n\
 Arguments are breakpoint numbers with spaces in between.\n\
-To delete all breakpoints, give no argument.\n\
+To delete all breakpoints, watchpoints, tracepoints, and catchpoints,\n\
+give no argument.\n\
 \n\
 Also a prefix command for deletion of other GDB objects."),
-		  &deletelist, "delete ", 1, &cmdlist);
-  add_com_alias ("d", "delete", class_breakpoint, 1);
-  add_com_alias ("del", "delete", class_breakpoint, 1);
+		      &deletelist, 1, &cmdlist);
+  add_com_alias ("d", delete_cmd, class_breakpoint, 1);
+  add_com_alias ("del", delete_cmd, 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\
-To delete all breakpoints, give no argument.\n\
+To delete all breakpoints, watchpoints, tracepoints, and catchpoints,\n\
+give no argument.\n\
 This command may be abbreviated \"delete\"."),
 	   &deletelist);
 
-  add_com ("clear", class_breakpoint, clear_command, _("\
+  cmd_list_element *clear_cmd
+   = add_com ("clear", class_breakpoint, clear_command, _("\
 Clear breakpoint at specified location.\n\
 Argument may be a linespec, explicit, or address location as described below.\n\
 \n\
 With no argument, clears all breakpoints in the line that the selected frame\n\
 is executing in.\n"
-"\n" LOCATION_HELP_STRING "\n\n\
+"\n" LOCATION_SPEC_HELP_STRING "\n\n\
 See also the \"delete\" command which clears breakpoints by number."));
-  add_com_alias ("cl", "clear", class_breakpoint, 1);
+  add_com_alias ("cl", clear_cmd, class_breakpoint, 1);
 
-  c = add_com ("break", class_breakpoint, break_command, _("\
+  cmd_list_element *break_cmd
+    = add_com ("break", class_breakpoint, break_command, _("\
 Set breakpoint at specified location.\n"
 BREAK_ARGS_HELP ("break")));
-  set_cmd_completer (c, location_completer);
+  set_cmd_completer (break_cmd, location_completer);
 
-  add_com_alias ("b", "break", class_run, 1);
-  add_com_alias ("br", "break", class_run, 1);
-  add_com_alias ("bre", "break", class_run, 1);
-  add_com_alias ("brea", "break", class_run, 1);
-
-  if (dbx_commands)
-    {
-      add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
-Break in function/address or break at a line in the current file."),
-			     &stoplist, "stop ", 1, &cmdlist);
-      add_cmd ("in", class_breakpoint, stopin_command,
-	       _("Break in function or address."), &stoplist);
-      add_cmd ("at", class_breakpoint, stopat_command,
-	       _("Break at a line in the current file."), &stoplist);
-      add_com ("status", class_info, info_breakpoints_command, _("\
-Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
-The \"Type\" column indicates one of:\n\
-\tbreakpoint     - normal breakpoint\n\
-\twatchpoint     - watchpoint\n\
-The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
-the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
-breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
-address and file/line number respectively.\n\
-\n\
-Convenience variable \"$_\" and default examine address for \"x\"\n\
-are set to the address of the last breakpoint listed unless the command\n\
-is prefixed with \"server \".\n\n\
-Convenience variable \"$bpnum\" contains the number of the last\n\
-breakpoint set."));
-    }
+  add_com_alias ("b", break_cmd, class_run, 1);
+  add_com_alias ("br", break_cmd, class_run, 1);
+  add_com_alias ("bre", break_cmd, class_run, 1);
+  add_com_alias ("brea", break_cmd, class_run, 1);
 
-  add_info ("breakpoints", info_breakpoints_command, _("\
+  cmd_list_element *info_breakpoints_cmd
+    = add_info ("breakpoints", info_breakpoints_command, _("\
 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
 The \"Type\" column indicates one of:\n\
 \tbreakpoint     - normal breakpoint\n\
@@ -15618,7 +14974,7 @@ is prefixed with \"server \".\n\n\
 Convenience variable \"$bpnum\" contains the number of the last\n\
 breakpoint set."));
 
-  add_info_alias ("b", "breakpoints", 1);
+  add_info_alias ("b", info_breakpoints_cmd, 1);
 
   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
 Status of all breakpoints, or breakpoint number NUMBER.\n\
@@ -15641,72 +14997,56 @@ 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,
+			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,
+			0/*allow-unknown*/, &cmdlist);
 
-  add_catch_command ("fork", _("Catch calls to fork."),
-		     catch_fork_command_1,
-                     NULL,
-		     (void *) (uintptr_t) catch_fork_permanent,
-		     (void *) (uintptr_t) catch_fork_temporary);
-  add_catch_command ("vfork", _("Catch calls to vfork."),
-		     catch_fork_command_1,
-                     NULL,
-		     (void *) (uintptr_t) catch_vfork_permanent,
-		     (void *) (uintptr_t) catch_vfork_temporary);
-  add_catch_command ("exec", _("Catch calls to exec."),
-		     catch_exec_command_1,
-                     NULL,
-		     CATCH_PERMANENT,
-		     CATCH_TEMPORARY);
-  add_catch_command ("load", _("Catch loads of shared libraries.\n\
-Usage: catch load [REGEX]\n\
-If REGEX is given, only stop for libraries matching the regular expression."),
-		     catch_load_command_1,
-		     NULL,
-		     CATCH_PERMANENT,
-		     CATCH_TEMPORARY);
-  add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
-Usage: catch unload [REGEX]\n\
-If REGEX is given, only stop for libraries matching the regular expression."),
-		     catch_unload_command_1,
-		     NULL,
-		     CATCH_PERMANENT,
-		     CATCH_TEMPORARY);
+  const auto opts = make_watch_options_def_group (nullptr);
 
-  c = add_com ("watch", class_breakpoint, watch_command, _("\
-Set a watchpoint for an expression.\n\
-Usage: watch [-l|-location] EXPRESSION\n\
-A watchpoint stops execution of your program whenever the value of\n\
-an expression changes.\n\
-If -l or -location is given, this evaluates EXPRESSION and watches\n\
-the memory to which it refers."));
-  set_cmd_completer (c, expression_completer);
-
-  c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
-Set a read watchpoint for an expression.\n\
-Usage: rwatch [-l|-location] EXPRESSION\n\
-A watchpoint stops execution of your program whenever the value of\n\
-an expression is read.\n\
-If -l or -location is given, this evaluates EXPRESSION and watches\n\
-the memory to which it refers."));
-  set_cmd_completer (c, expression_completer);
-
-  c = add_com ("awatch", class_breakpoint, awatch_command, _("\
-Set a watchpoint for an expression.\n\
-Usage: awatch [-l|-location] EXPRESSION\n\
+  static const std::string watch_help = gdb::option::build_help (_("\
+Set a watchpoint for EXPRESSION.\n\
+Usage: watch [-location] EXPRESSION\n\
+\n\
+Options:\n\
+%OPTIONS%\n\
+\n\
 A watchpoint stops execution of your program whenever the value of\n\
-an expression is either read or written.\n\
-If -l or -location is given, this evaluates EXPRESSION and watches\n\
-the memory to which it refers."));
-  set_cmd_completer (c, expression_completer);
+an expression changes."), opts);
+  c = add_com ("watch", class_breakpoint, watch_command,
+	       watch_help.c_str ());
+  set_cmd_completer_handle_brkchars (c, watch_command_completer);
+
+  static const std::string rwatch_help = gdb::option::build_help (_("\
+Set a read watchpoint for EXPRESSION.\n\
+Usage: rwatch [-location] EXPRESSION\n\
+\n\
+Options:\n\
+%OPTIONS%\n\
+\n\
+A read watchpoint stops execution of your program whenever the value of\n\
+an expression is read."), opts);
+  c = add_com ("rwatch", class_breakpoint, rwatch_command,
+	       rwatch_help.c_str ());
+  set_cmd_completer_handle_brkchars (c, watch_command_completer);
+
+  static const std::string awatch_help = gdb::option::build_help (_("\
+Set an access watchpoint for EXPRESSION.\n\
+Usage: awatch [-location] EXPRESSION\n\
+\n\
+Options:\n\
+%OPTIONS%\n\
+\n\
+An access watchpoint stops execution of your program whenever the value\n\
+of an expression is either read or written."), opts);
+  c = add_com ("awatch", class_breakpoint, awatch_command,
+	       awatch_help.c_str ());
+  set_cmd_completer_handle_brkchars (c, watch_command_completer);
 
   add_info ("watchpoints", info_watchpoints_command, _("\
 Status of specified watchpoints (all watchpoints if no argument)."));
@@ -15729,17 +15069,18 @@ hardware.)"),
 
   /* Tracepoint manipulation commands.  */
 
-  c = add_com ("trace", class_breakpoint, trace_command, _("\
+  cmd_list_element *trace_cmd
+    = add_com ("trace", class_breakpoint, trace_command, _("\
 Set a tracepoint at specified location.\n\
 \n"
 BREAK_ARGS_HELP ("trace") "\n\
 Do \"help tracepoints\" for info on other tracepoint commands."));
-  set_cmd_completer (c, location_completer);
+  set_cmd_completer (trace_cmd, 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_cmd, class_breakpoint, 0);
+  add_com_alias ("tr", trace_cmd, class_breakpoint, 1);
+  add_com_alias ("tra", trace_cmd, class_breakpoint, 1);
+  add_com_alias ("trac", trace_cmd, class_breakpoint, 1);
 
   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
 Set a fast tracepoint at specified location.\n\
@@ -15752,7 +15093,7 @@ Do \"help tracepoints\" for info on othe
 Set a static tracepoint at location or marker.\n\
 \n\
 strace [LOCATION] [if CONDITION]\n\
-LOCATION may be a linespec, explicit, or address location (described below) \n\
+LOCATION may be a linespec, explicit, or address location (described below)\n\
 or -m MARKER_ID.\n\n\
 If a marker id is specified, probe the marker with that name.  With\n\
 no LOCATION, uses current execution address of the selected stack frame.\n\
@@ -15762,7 +15103,7 @@ tracing library.  You can inspect it whe
 by printing the $_sdata variable like any other convenience variable.\n\
 \n\
 CONDITION is a boolean expression.\n\
-\n" LOCATION_HELP_STRING "\n\n\
+\n" LOCATION_SPEC_HELP_STRING "\n\n\
 Multiple tracepoints at one place are permitted, and useful if their\n\
 conditions are different.\n\
 \n\
@@ -15770,19 +15111,21 @@ Do \"help breakpoints\" for info on othe
 Do \"help tracepoints\" for info on other tracepoint commands."));
   set_cmd_completer (c, location_completer);
 
-  add_info ("tracepoints", info_tracepoints_command, _("\
+  cmd_list_element *info_tracepoints_cmd
+    = add_info ("tracepoints", info_tracepoints_command, _("\
 Status of specified tracepoints (all tracepoints if no argument).\n\
 Convenience variable \"$tpnum\" contains the number of the\n\
 last tracepoint set."));
 
-  add_info_alias ("tp", "tracepoints", 1);
+  add_info_alias ("tp", info_tracepoints_cmd, 1);
 
-  add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
+  cmd_list_element *delete_tracepoints_cmd
+    = add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
 Delete specified tracepoints.\n\
 Arguments are tracepoint numbers, separated by spaces.\n\
 No argument means delete all tracepoints."),
 	   &deletelist);
-  add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
+  add_alias_cmd ("tr", delete_tracepoints_cmd, class_trace, 1, &deletelist);
 
   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
 Disable specified tracepoints.\n\
@@ -15804,10 +15147,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,
+			0/*allow-unknown*/, &cmdlist);
 
   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
 Save current breakpoint definitions as a script.\n\
@@ -15815,29 +15158,29 @@ This includes all types of breakpoints (
 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
 session to restore them."),
 	       &save_cmdlist);
-  set_cmd_completer (c, filename_completer);
+  set_cmd_completer (c, deprecated_filename_completer);
 
-  c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
+  cmd_list_element *save_tracepoints_cmd
+    = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
 Save current tracepoint definitions as a script.\n\
 Use the 'source' command in another debug session to restore them."),
 	       &save_cmdlist);
-  set_cmd_completer (c, filename_completer);
+  set_cmd_completer (save_tracepoints_cmd, deprecated_filename_completer);
 
-  c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
+  c = add_com_alias ("save-tracepoints", save_tracepoints_cmd, class_trace, 0);
   deprecate_cmd (c, "save tracepoints");
 
-  add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
+  add_setshow_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 specific settings.\n\
 Configure various breakpoint-specific variables such as\n\
 pending breakpoint behavior."),
-		  &breakpoint_show_cmdlist, "show breakpoint ",
-		  0/*allow-unknown*/, &showlist);
+			  &breakpoint_set_cmdlist, &breakpoint_show_cmdlist,
+			  &setlist, &showlist);
 
   add_setshow_auto_boolean_cmd ("pending", no_class,
 				&pending_break_support, _("\
@@ -15880,6 +15223,15 @@ when execution stops."),
 				&breakpoint_set_cmdlist,
 				&breakpoint_show_cmdlist);
 
+  add_setshow_boolean_cmd ("breakpoint", class_maintenance,
+			   &debug_breakpoint, _("\
+Set breakpoint location debugging."), _("\
+Show breakpoint location debugging."), _("\
+When on, breakpoint location specific debugging is enabled."),
+			   NULL,
+			   show_debug_breakpoint,
+			   &setdebuglist, &showdebuglist);
+
   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
 			condition_evaluation_enums,
 			&condition_evaluation_mode_1, _("\
@@ -15891,7 +15243,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,
@@ -15904,7 +15256,7 @@ where START-LOCATION and END-LOCATION ca
   LINENUM, for that line in the current file,\n\
   FILE:LINENUM, for that line in that file,\n\
   +OFFSET, for that number of lines after the current line\n\
-           or the start of the range\n\
+	   or the start of the range\n\
   FUNCTION, for the first line in that function,\n\
   FILE:FUNCTION, to distinguish among like-named static functions.\n\
   *ADDRESS, for the instruction at that address.\n\
@@ -15917,7 +15269,7 @@ range (including START-LOCATION and END-
 Set a dynamic printf at specified location.\n\
 dprintf location,format string,arg1,arg2,...\n\
 location may be a linespec, explicit, or address location.\n"
-"\n" LOCATION_HELP_STRING));
+"\n" LOCATION_SPEC_HELP_STRING));
   set_cmd_completer (c, location_completer);
 
   add_setshow_enum_cmd ("dprintf-style", class_support,
@@ -15933,7 +15285,6 @@ output stream by setting dprintf-functio
 			update_dprintf_commands, NULL,
 			&setlist, &showlist);
 
-  dprintf_function = xstrdup ("printf");
   add_setshow_string_cmd ("dprintf-function", class_support,
 			  &dprintf_function, _("\
 Set the function to use for dynamic printf."), _("\
@@ -15941,7 +15292,6 @@ Show the function to use for dynamic pri
 			  update_dprintf_commands, NULL,
 			  &setlist, &showlist);
 
-  dprintf_channel = xstrdup ("");
   add_setshow_string_cmd ("dprintf-channel", class_support,
 			  &dprintf_channel, _("\
 Set the channel to use for dynamic printf."), _("\
@@ -15967,6 +15317,10 @@ This is useful for formatted output in u
 
   automatic_hardware_breakpoints = true;
 
-  gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed);
-  gdb::observers::thread_exit.attach (remove_threaded_breakpoints);
+  gdb::observers::about_to_proceed.attach (breakpoint_about_to_proceed,
+					   "breakpoint");
+  gdb::observers::thread_exit.attach (remove_threaded_breakpoints,
+				      "breakpoint");
+  gdb::observers::inferior_removed.attach (remove_inferior_breakpoints,
+					   "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.20200303/gdb/breakpoint.h ./gdb/breakpoint.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/breakpoint.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/breakpoint.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* Data structures associated with breakpoints in GDB.
-   Copyright (C) 1992-2020 Free Software Foundation, Inc.
+   Copyright (C) 1992-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,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 !defined (BREAKPOINT_H)
-#define BREAKPOINT_H 1
+#ifndef GDB_BREAKPOINT_H
+#define GDB_BREAKPOINT_H
 
 #include "frame.h"
 #include "value.h"
@@ -28,20 +28,32 @@
 #include "location.h"
 #include <vector>
 #include "gdbsupport/array-view.h"
-#include "gdbsupport/function-view.h"
+#include "gdbsupport/filtered-iterator.h"
+#include "gdbsupport/iterator-range.h"
+#include "gdbsupport/refcounted-object.h"
+#include "gdbsupport/safe-iterator.h"
 #include "cli/cli-script.h"
+#include "target/waitstatus.h"
 
 struct block;
 struct gdbpy_breakpoint_object;
 struct gdbscm_breakpoint_object;
 struct number_or_range_parser;
 struct thread_info;
-struct bpstats;
+struct bpstat;
 struct bp_location;
 struct linespec_result;
 struct linespec_sals;
 struct inferior;
 
+/* True if breakpoint debug output is enabled.  */
+extern bool debug_breakpoint;
+
+/* Print a "breakpoint" debug statement.  */
+#define breakpoint_debug_printf(fmt, ...) \
+  debug_prefixed_printf_cond (debug_breakpoint, "breakpoint", fmt, \
+			      ##__VA_ARGS__)
+
 /* Enum for exception-handling support in 'catch throw', 'catch rethrow',
    'catch catch' and the MI equivalent.  */
 
@@ -178,6 +190,8 @@ enum bptype
     bp_tracepoint,
     bp_fast_tracepoint,
     bp_static_tracepoint,
+    /* Like bp_static_tracepoint but for static markers.  */
+    bp_static_marker_tracepoint,
 
     /* A dynamic printf stops at the given location, does a formatted
        print, then automatically continues.  (Although this is sort of
@@ -307,15 +321,15 @@ enum bp_loc_type
 {
   bp_loc_software_breakpoint,
   bp_loc_hardware_breakpoint,
+  bp_loc_software_watchpoint,
   bp_loc_hardware_watchpoint,
+  bp_loc_tracepoint,
   bp_loc_other			/* Miscellaneous...  */
 };
 
-class bp_location
+class bp_location : public refcounted_object, public intrusive_list_node<bp_location>
 {
 public:
-  bp_location () = default;
-
   /* Construct a bp_location with the type inferred from OWNER's
      type.  */
   explicit bp_location (breakpoint *owner);
@@ -323,14 +337,7 @@ public:
   /* Construct a bp_location with type TYPE.  */
   bp_location (breakpoint *owner, bp_loc_type type);
 
-  virtual ~bp_location ();
-
-  /* Chain pointer to the next breakpoint location for
-     the same parent breakpoint.  */
-  bp_location *next = NULL;
-
-  /* The reference count.  */
-  int refc = 0;
+  virtual ~bp_location () = default;
 
   /* Type of this breakpoint location.  */
   bp_loc_type loc_type {};
@@ -387,6 +394,12 @@ public:
   /* Is this particular location enabled.  */
   bool enabled = false;
   
+  /* Is this particular location disabled because the condition
+     expression is invalid at this location.  For a location to be
+     reported as enabled, the ENABLED field above has to be true *and*
+     the DISABLED_BY_COND field has to be false.  */
+  bool disabled_by_cond = false;
+
   /* True if this breakpoint is now inserted.  */
   bool inserted = false;
 
@@ -412,7 +425,9 @@ public:
      simplicity is more important than memory usage for breakpoints.  */
 
   /* Architecture associated with this location's address.  May be
-     different from the breakpoint architecture.  */
+     different from the breakpoint architecture.  Not every location has
+     an address (e.g. see add_dummy_location), so not every location has
+     an associated gdbarch -- this can be NULL for a valid location.  */
   struct gdbarch *gdbarch = NULL;
 
   /* The program space associated with this breakpoint location
@@ -447,7 +462,7 @@ public:
      as ``address'' (above) except for cases in which
      ADJUST_BREAKPOINT_ADDRESS has computed a different address at
      which to place the breakpoint in order to comply with a
-     processor's architectual constraints.  */
+     processor's architectural constraints.  */
   CORE_ADDR requested_address = 0;
 
   /* An additional address assigned with this location.  This is currently
@@ -459,7 +474,7 @@ public:
      with it.  */
   bound_probe probe {};
 
-  char *function_name = NULL;
+  gdb::unique_xmalloc_ptr<char> function_name;
 
   /* Details of the placed breakpoint, when inserted.  */
   bp_target_info target_info {};
@@ -491,7 +506,7 @@ public:
   struct symtab *symtab = NULL;
 
   /* The symbol found by the location parser, if any.  This may be used to
-     ascertain when an event location was set at a different location than
+     ascertain when a location spec was set at a different location than
      the one originally selected by parsing, e.g., inlined symbols.  */
   const struct symbol *symbol = NULL;
 
@@ -500,10 +515,32 @@ public:
      originally set on a GNU ifunc symbol.  */
   const minimal_symbol *msymbol = NULL;
 
-  /* The objfile the symbol or minimal symbol were found in.  */
-  const struct objfile *objfile = NULL;
+  /* Return a string representation of the bp_location.
+     This is only meant to be used in debug messages.  */
+  std::string to_string () const;
+};
+
+/* A policy class for bp_location reference counting.  */
+struct bp_location_ref_policy
+{
+  static void incref (bp_location *loc)
+  {
+    loc->incref ();
+  }
+
+  static void decref (bp_location *loc)
+  {
+    gdb_assert (loc->refcount () > 0);
+    loc->decref ();
+    if (loc->refcount () == 0)
+      delete loc;
+  }
 };
 
+/* A gdb::ref_ptr that has been specialized for bp_location.  */
+typedef gdb::ref_ptr<bp_location, bp_location_ref_policy>
+     bp_location_ref_ptr;
+
 /* The possible return values for print_bpstat, print_it_normal,
    print_it_done, print_it_noop.  */
 enum print_stop_action
@@ -530,24 +567,171 @@ enum print_stop_action
 
 struct breakpoint_ops
 {
+  /* Create SALs from LOCSPEC, storing the result in linespec_result
+     CANONICAL.  If SEARCH_PSPACE is not nullptr then only results in the
+     corresponding program space are returned.  If SEARCH_PSPACE is nullptr
+     then results for all program spaces are returned.
+
+     This function is called inside `create_breakpoint'.  */
+  void (*create_sals_from_location_spec) (location_spec *locspec,
+					  linespec_result *canonical,
+					  program_space *search_pspace);
+
+  /* This method will be responsible for creating a breakpoint given its SALs.
+     Usually, it just calls `create_breakpoints_sal' (for ordinary
+     breakpoints).  However, there may be some special cases where we might
+     need to do some tweaks, e.g., see
+     `strace_marker_create_breakpoints_sal'.
+
+     This function is called inside `create_breakpoint'.  */
+  void (*create_breakpoints_sal) (struct gdbarch *,
+				  struct linespec_result *,
+				  gdb::unique_xmalloc_ptr<char>,
+				  gdb::unique_xmalloc_ptr<char>,
+				  enum bptype, enum bpdisp, int, int, int,
+				  int, int, int, int, unsigned);
+};
+
+enum watchpoint_triggered
+{
+  /* This watchpoint definitely did not trigger.  */
+  watch_triggered_no = 0,
+
+  /* Some hardware watchpoint triggered, and it might have been this
+     one, but we do not know which it was.  */
+  watch_triggered_unknown,
+
+  /* This hardware watchpoint definitely did trigger.  */
+  watch_triggered_yes  
+};
+
+/* Some targets (e.g., embedded PowerPC) need two debug registers to set
+   a watchpoint over a memory region.  If this flag is true, GDB will use
+   only one register per watchpoint, thus assuming that all accesses that
+   modify a memory location happen at its starting address. */
+
+extern bool target_exact_watchpoints;
+
+using bp_location_list = intrusive_list<bp_location>;
+using bp_location_iterator = bp_location_list::iterator;
+using bp_location_range = iterator_range<bp_location_iterator>;
+
+/* Note that the ->silent field is not currently used by any commands
+   (though the code is in there if it was to be, and set_raw_breakpoint
+   does set it to 0).  I implemented it because I thought it would be
+   useful for a hack I had to put in; I'm going to leave it in because
+   I can see how there might be times when it would indeed be useful */
+
+/* Abstract base class representing all kinds of breakpoints.  */
+
+struct breakpoint : public intrusive_list_node<breakpoint>
+{
+  breakpoint (struct gdbarch *gdbarch_, enum bptype bptype,
+	      bool temp = true, const char *cond_string = nullptr);
+
+  DISABLE_COPY_AND_ASSIGN (breakpoint);
+
+  virtual ~breakpoint () = 0;
+
   /* Allocate a location for this breakpoint.  */
-  struct bp_location * (*allocate_location) (struct breakpoint *);
+  virtual struct bp_location *allocate_location ();
+
+  /* Return a range of this breakpoint's locations.  */
+  bp_location_range locations () const;
+
+  /* Add LOC to the location list of this breakpoint, sorted by address
+     (using LOC.ADDRESS).
+
+     LOC must have this breakpoint as its owner.  LOC must not already be linked
+     in a location list.  */
+  void add_location (bp_location &loc);
+
+  /* Remove LOC from this breakpoint's location list.  The name is a bit funny
+     because remove_location is already taken, and means something else.
+
+     LOC must be have this breakpoints as its owner.  LOC must be linked in this
+     breakpoint's location list.  */
+  void unadd_location (bp_location &loc);
+
+  /* Clear the location list of this breakpoint.  */
+  void clear_locations ()
+  { m_locations.clear (); }
+
+  /* Split all locations of this breakpoint that are bound to PSPACE out of its
+     location list to a separate list and return that list.  If
+     PSPACE is nullptr, hoist out all locations.  */
+  bp_location_list steal_locations (program_space *pspace);
+
+  /* Return true if this breakpoint has a least one location.  */
+  bool has_locations () const
+  { return !m_locations.empty (); }
+
+  /* Return true if this breakpoint has a single location.  */
+  bool has_single_location () const
+  {
+    if (!this->has_locations ())
+      return false;
+
+    return std::next (m_locations.begin ()) == m_locations.end ();
+  }
+
+  /* Return true if this breakpoint has multiple locations.  */
+  bool has_multiple_locations () const
+  {
+    if (!this->has_locations ())
+      return false;
+
+    return std::next (m_locations.begin ()) != m_locations.end ();
+  }
+
+  /* Return a reference to the first location of this breakpoint.  */
+  bp_location &first_loc ()
+  {
+    gdb_assert (this->has_locations ());
+    return m_locations.front ();
+  }
+
+  /* Return a reference to the first location of this breakpoint.  */
+  const bp_location &first_loc () const
+  {
+    gdb_assert (this->has_locations ());
+    return m_locations.front ();
+  }
+
+  /* Return a reference to the last location of this breakpoint.  */
+  const bp_location &last_loc () const
+  {
+    gdb_assert (this->has_locations ());
+    return m_locations.back ();
+  }
 
   /* Reevaluate a breakpoint.  This is necessary after symbols change
      (e.g., an executable or DSO was loaded, or the inferior just
-     started).  */
-  void (*re_set) (struct breakpoint *self);
+     started).
+
+     If not nullptr, then FILTER_PSPACE is the program space in which
+     symbols may have changed, we only need to add new locations in
+     FILTER_PSPACE.
+
+     If FILTER_PSPACE is nullptr then all program spaces may have changed,
+     new locations need to be searched for in every program space.
+
+     This is pure virtual as, at a minimum, each sub-class must recompute
+     any cached condition expressions based off of the cond_string member
+     variable.  */
+  virtual void re_set (program_space *filter_pspace) = 0;
 
   /* Insert the breakpoint or watchpoint or activate the catchpoint.
      Return 0 for success, 1 if the breakpoint, watchpoint or
      catchpoint type is not supported, -1 for failure.  */
-  int (*insert_location) (struct bp_location *);
+  virtual int insert_location (struct bp_location *);
 
   /* Remove the breakpoint/catchpoint that was previously inserted
      with the "insert" method above.  Return 0 for success, 1 if the
      breakpoint, watchpoint or catchpoint type is not supported,
      -1 for failure.  */
-  int (*remove_location) (struct bp_location *, enum remove_bp_reason reason);
+  virtual int remove_location (struct bp_location *,
+			       enum remove_bp_reason reason);
 
   /* Return true if it the target has stopped due to hitting
      breakpoint location BL.  This function does not check if we
@@ -555,38 +739,41 @@ struct breakpoint_ops
      space in which the event occurred, BP_ADDR is the address at
      which the inferior stopped, and WS is the target_waitstatus
      describing the event.  */
-  int (*breakpoint_hit) (const struct bp_location *bl,
-			 const address_space *aspace,
-			 CORE_ADDR bp_addr,
-			 const struct target_waitstatus *ws);
+  virtual int breakpoint_hit (const struct bp_location *bl,
+			      const address_space *aspace,
+			      CORE_ADDR bp_addr,
+			      const target_waitstatus &ws);
 
   /* Check internal conditions of the breakpoint referred to by BS.
-     If we should not stop for this breakpoint, set BS->stop to 0.  */
-  void (*check_status) (struct bpstats *bs);
+     If we should not stop for this breakpoint, set BS->stop to
+     false.  */
+  virtual void check_status (struct bpstat *bs)
+  {
+    /* Always stop.  */
+  }
 
   /* Tell how many hardware resources (debug registers) are needed
      for this breakpoint.  If this function is not provided, then
      the breakpoint or watchpoint needs one debug register.  */
-  int (*resources_needed) (const struct bp_location *);
-
-  /* Tell whether we can downgrade from a hardware watchpoint to a software
-     one.  If not, the user will not be able to enable the watchpoint when
-     there are not enough hardware resources available.  */
-  int (*works_in_software_mode) (const struct breakpoint *);
+  virtual int resources_needed (const struct bp_location *);
 
   /* The normal print routine for this breakpoint, called when we
      hit it.  */
-  enum print_stop_action (*print_it) (struct bpstats *bs);
+  virtual enum print_stop_action print_it (const bpstat *bs) const;
 
   /* Display information about this breakpoint, for "info
-     breakpoints".  */
-  void (*print_one) (struct breakpoint *, struct bp_location **);
+     breakpoints".  Returns false if this method should use the
+     default behavior.  */
+  virtual bool print_one (const bp_location **) const
+  {
+    return false;
+  }
 
   /* Display extra information about this breakpoint, below the normal
      breakpoint description in "info breakpoints".
 
      In the example below, the "address range" line was printed
-     by print_one_detail_ranged_breakpoint.
+     by ranged_breakpoint::print_one_detail.
 
      (gdb) info breakpoints
      Num     Type           Disp Enb Address    What
@@ -594,105 +781,32 @@ struct breakpoint_ops
 	     address range: [0x10000458, 0x100004c7]
 
    */
-  void (*print_one_detail) (const struct breakpoint *, struct ui_out *);
+  virtual void print_one_detail (struct ui_out *) const
+  {
+    /* Nothing.  */
+  }
 
   /* Display information about this breakpoint after setting it
      (roughly speaking; this is called from "mention").  */
-  void (*print_mention) (struct breakpoint *);
+  virtual void print_mention () const;
 
   /* Print to FP the CLI command that recreates this breakpoint.  */
-  void (*print_recreate) (struct breakpoint *, struct ui_file *fp);
-
-  /* Create SALs from location, storing the result in linespec_result.
-
-     For an explanation about the arguments, see the function
-     `create_sals_from_location_default'.
-
-     This function is called inside `create_breakpoint'.  */
-  void (*create_sals_from_location) (const struct event_location *location,
-				     struct linespec_result *canonical,
-				     enum bptype type_wanted);
-
-  /* This method will be responsible for creating a breakpoint given its SALs.
-     Usually, it just calls `create_breakpoints_sal' (for ordinary
-     breakpoints).  However, there may be some special cases where we might
-     need to do some tweaks, e.g., see
-     `strace_marker_create_breakpoints_sal'.
-
-     This function is called inside `create_breakpoint'.  */
-  void (*create_breakpoints_sal) (struct gdbarch *,
-				  struct linespec_result *,
-				  gdb::unique_xmalloc_ptr<char>,
-				  gdb::unique_xmalloc_ptr<char>,
-				  enum bptype, enum bpdisp, int, int,
-				  int, const struct breakpoint_ops *,
-				  int, int, int, unsigned);
-
-  /* Given the location (second parameter), this method decodes it and
-     returns the SAL locations related to it.  For ordinary
-     breakpoints, it calls `decode_line_full'.  If SEARCH_PSPACE is
-     not NULL, symbol search is restricted to just that program space.
-
-     This function is called inside `location_to_sals'.  */
-  std::vector<symtab_and_line> (*decode_location)
-    (struct breakpoint *b,
-     const struct event_location *location,
-     struct program_space *search_pspace);
+  virtual void print_recreate (struct ui_file *fp) const;
 
   /* Return true if this breakpoint explains a signal.  See
      bpstat_explains_signal.  */
-  int (*explains_signal) (struct breakpoint *, enum gdb_signal);
+  virtual bool explains_signal (enum gdb_signal)
+  {
+    return true;
+  }
 
   /* Called after evaluating the breakpoint's condition,
      and only if it evaluated true.  */
-  void (*after_condition_true) (struct bpstats *bs);
-};
-
-/* Helper for breakpoint_ops->print_recreate implementations.  Prints
-   the "thread" or "task" condition of B, and then a newline.
-
-   Necessary because most breakpoint implementations accept
-   thread/task conditions at the end of the spec line, like "break foo
-   thread 1", which needs outputting before any breakpoint-type
-   specific extra command necessary for B's recreation.  */
-extern void print_recreate_thread (struct breakpoint *b, struct ui_file *fp);
-
-enum watchpoint_triggered
-{
-  /* This watchpoint definitely did not trigger.  */
-  watch_triggered_no = 0,
-
-  /* Some hardware watchpoint triggered, and it might have been this
-     one, but we do not know which it was.  */
-  watch_triggered_unknown,
-
-  /* This hardware watchpoint definitely did trigger.  */
-  watch_triggered_yes  
-};
-
-/* Some targets (e.g., embedded PowerPC) need two debug registers to set
-   a watchpoint over a memory region.  If this flag is true, GDB will use
-   only one register per watchpoint, thus assuming that all accesses that
-   modify a memory location happen at its starting address. */
-
-extern bool target_exact_watchpoints;
-
-/* Note that the ->silent field is not currently used by any commands
-   (though the code is in there if it was to be, and set_raw_breakpoint
-   does set it to 0).  I implemented it because I thought it would be
-   useful for a hack I had to put in; I'm going to leave it in because
-   I can see how there might be times when it would indeed be useful */
-
-/* This is for all kinds of breakpoints.  */
-
-struct breakpoint
-{
-  virtual ~breakpoint ();
-
-  /* Methods associated with this breakpoint.  */
-  const breakpoint_ops *ops = NULL;
+  virtual void after_condition_true (struct bpstat *bs)
+  {
+    /* Nothing to do.  */
+  }
 
-  breakpoint *next = NULL;
   /* Type of breakpoint.  */
   bptype type = bp_none;
   /* Zero means disabled; remember the info but don't break here.  */
@@ -702,9 +816,6 @@ struct breakpoint
   /* Number assigned to distinguish breakpoints.  */
   int number = 0;
 
-  /* Location(s) associated with this high-level breakpoint.  */
-  bp_location *loc = NULL;
-
   /* True means a silent breakpoint (don't print frame info if we stop
      here).  */
   bool silent = false;
@@ -725,49 +836,65 @@ struct breakpoint
      equals this.  */
   struct frame_id frame_id = null_frame_id;
 
-  /* The program space used to set the breakpoint.  This is only set
-     for breakpoints which are specific to a program space; for
-     non-thread-specific ordinary breakpoints this is NULL.  */
+  /* The program space used to set the breakpoint.  This is only set for
+     breakpoints that are not type bp_breakpoint or bp_hardware_breakpoint.
+     For thread or inferior specific breakpoints, the breakpoints are
+     managed via the thread and inferior member variables.  */
+
+  /* If not nullptr then this is the program space for which this
+     breakpoint was created.  All watchpoint and catchpoint sub-types set
+     this field, but not all of the code_breakpoint sub-types do;
+     generally, user created breakpoint types don't set this field, though
+     things might be more consistent if they did.
+
+     When this variable is nullptr then a breakpoint might be associated
+     with multiple program spaces, though you need to check the thread,
+     inferior and task variables to see if a breakpoint was created for a
+     specific thread, inferior, or Ada task respectively.  */
   program_space *pspace = NULL;
 
-  /* Location we used to set the breakpoint.  */
-  event_location_up location;
+  /* The location specification we used to set the breakpoint.  */
+  location_spec_up locspec;
 
   /* The filter that should be passed to decode_line_full when
      re-setting this breakpoint.  This may be NULL.  */
   gdb::unique_xmalloc_ptr<char> filter;
 
-  /* For a ranged breakpoint, the location we used to find the end of
-     the range.  */
-  event_location_up location_range_end;
+  /* For a ranged breakpoint, the location specification we used to
+     find the end of the range.  */
+  location_spec_up locspec_range_end;
 
   /* Architecture we used to set the breakpoint.  */
-  struct gdbarch *gdbarch = NULL;
+  struct gdbarch *gdbarch;
   /* Language we used to set the breakpoint.  */
-  enum language language = language_unknown;
+  enum language language;
   /* Input radix we used to set the breakpoint.  */
-  int input_radix = 0;
+  int input_radix;
   /* String form of the breakpoint condition (malloc'd), or NULL if
      there is no condition.  */
-  char *cond_string = NULL;
+  gdb::unique_xmalloc_ptr<char> cond_string;
 
   /* String form of extra parameters, or NULL if there are none.
      Malloc'd.  */
-  char *extra_string = NULL;
+  gdb::unique_xmalloc_ptr<char> extra_string;
 
   /* Holds the address of the related watchpoint_scope breakpoint when
      using watchpoints on local variables (might the concept of a
      related breakpoint be useful elsewhere, if not just call it the
      watchpoint_scope breakpoint or something like that.  FIXME).  */
-  breakpoint *related_breakpoint = NULL;
+  breakpoint *related_breakpoint;
 
   /* Thread number for thread-specific breakpoint, or -1 if don't
      care.  */
   int thread = -1;
 
-  /* Ada task number for task-specific breakpoint, or 0 if don't
+  /* Inferior number for inferior-specific breakpoint, or -1 if this
+     breakpoint is for all inferiors.  */
+  int inferior = -1;
+
+  /* Ada task number for task-specific breakpoint, or -1 if don't
      care.  */
-  int task = 0;
+  int task = -1;
 
   /* Count of the number of times this breakpoint was taken, dumped
      with the info, but not used for anything else.  Useful for seeing
@@ -789,19 +916,123 @@ struct breakpoint
 
   /* Same as py_bp_object, but for Scheme.  */
   gdbscm_breakpoint_object *scm_bp_object = NULL;
+
+protected:
+
+  /* Helper for breakpoint_ops->print_recreate implementations.  Prints
+     the "thread" or "task" condition of B, and then a newline.
+
+     Necessary because most breakpoint implementations accept
+     thread/task conditions at the end of the spec line, like "break foo
+     thread 1", which needs outputting before any breakpoint-type
+     specific extra command necessary for B's recreation.  */
+  void print_recreate_thread (struct ui_file *fp) const;
+
+  /* Location(s) associated with this high-level breakpoint.  */
+  bp_location_list m_locations;
+};
+
+/* Abstract base class representing code breakpoints.  User "break"
+   breakpoints, internal and momentary breakpoints, etc.  IOW, any
+   kind of breakpoint whose locations are created from SALs.  */
+struct code_breakpoint : public breakpoint
+{
+  using breakpoint::breakpoint;
+
+  /* Create a breakpoint with SALS as locations.  Use LOCATION as a
+     description of the location, and COND_STRING as condition
+     expression.  If LOCATION is NULL then create an "address
+     location" from the address in the SAL.  */
+  code_breakpoint (struct gdbarch *gdbarch, bptype type,
+		   gdb::array_view<const symtab_and_line> sals,
+		   location_spec_up &&locspec,
+		   gdb::unique_xmalloc_ptr<char> filter,
+		   gdb::unique_xmalloc_ptr<char> cond_string,
+		   gdb::unique_xmalloc_ptr<char> extra_string,
+		   enum bpdisp disposition,
+		   int thread, int task, int inferior, int ignore_count,
+		   int from_tty,
+		   int enabled, unsigned flags,
+		   int display_canonical);
+
+  ~code_breakpoint () override = 0;
+
+  /* Add a location for SAL to this breakpoint.  */
+  bp_location *add_location (const symtab_and_line &sal);
+
+  void re_set (program_space *pspace) override;
+  int insert_location (struct bp_location *) override;
+  int remove_location (struct bp_location *,
+		       enum remove_bp_reason reason) override;
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+
+protected:
+
+  /* Given the location spec, this method decodes it and returns the
+     SAL locations related to it.  For ordinary breakpoints, it calls
+     `decode_line_full'.  If SEARCH_PSPACE is not NULL, symbol search
+     is restricted to just that program space.
+
+     This function is called inside `location_spec_to_sals'.  */
+  virtual std::vector<symtab_and_line> decode_location_spec
+    (location_spec *locspec,
+     struct program_space *search_pspace);
+
+  /* Helper method that does the basic work of re_set.  */
+  void re_set_default (program_space *pspace);
+
+  /* Find the SaL locations corresponding to the given LOCATION.
+     On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
+
+  std::vector<symtab_and_line> location_spec_to_sals
+       (location_spec *locspec,
+	struct program_space *search_pspace,
+	int *found);
+
+  /* Helper for breakpoint and tracepoint breakpoint->mention
+     callbacks.  */
+  void say_where () const;
 };
 
-/* An instance of this type is used to represent a watchpoint.  */
+/* An instance of this type is used to represent a watchpoint,
+   a.k.a. a data breakpoint.  */
 
 struct watchpoint : public breakpoint
 {
-  ~watchpoint () override;
+  using breakpoint::breakpoint;
+
+  void re_set (program_space *pspace) override;
+  int insert_location (struct bp_location *) override;
+  int remove_location (struct bp_location *,
+		       enum remove_bp_reason reason) override;
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace,
+		      CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  void check_status (struct bpstat *bs) override;
+  int resources_needed (const struct bp_location *) override;
+
+  /* Tell whether we can downgrade from a hardware watchpoint to a software
+     one.  If not, the user will not be able to enable the watchpoint when
+     there are not enough hardware resources available.  */
+  virtual bool works_in_software_mode () const;
+
+  enum print_stop_action print_it (const bpstat *bs) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+  bool explains_signal (enum gdb_signal) override;
+
+  /* Destructor for WATCHPOINT.  */
+  ~watchpoint ();
 
   /* String form of exp to use for displaying to the user (malloc'd),
      or NULL if none.  */
-  char *exp_string;
+  gdb::unique_xmalloc_ptr<char> exp_string;
   /* String form to use for reparsing of EXP (malloc'd) or NULL.  */
-  char *exp_string_reparse;
+  gdb::unique_xmalloc_ptr<char> exp_string_reparse;
 
   /* The expression we are watching, or NULL if not a watchpoint.  */
   expression_up exp;
@@ -849,20 +1080,6 @@ struct watchpoint : public breakpoint
   CORE_ADDR hw_wp_mask;
 };
 
-/* Given a function FUNC (struct breakpoint *B, void *DATA) and
-   USER_DATA, call FUNC for every known breakpoint passing USER_DATA
-   as argument.
-
-   If FUNC returns 1, the loop stops and the current
-   'struct breakpoint' being processed is returned.  If FUNC returns
-   zero, the loop continues.
-
-   This function returns either a 'struct breakpoint' pointer or NULL.
-   It was based on BFD's bfd_sections_find_if function.  */
-
-extern struct breakpoint *breakpoint_find_if
-  (int (*func) (struct breakpoint *b, void *d), void *user_data);
-
 /* Return true if BPT is either a software breakpoint or a hardware
    breakpoint.  */
 
@@ -881,22 +1098,31 @@ extern bool is_exception_catchpoint (bre
 /* An instance of this type is used to represent all kinds of
    tracepoints.  */
 
-struct tracepoint : public breakpoint
+struct tracepoint : public code_breakpoint
 {
+  using code_breakpoint::code_breakpoint;
+
+  int breakpoint_hit (const struct bp_location *bl,
+		      const address_space *aspace, CORE_ADDR bp_addr,
+		      const target_waitstatus &ws) override;
+  void print_one_detail (struct ui_out *uiout) const override;
+  void print_mention () const override;
+  void print_recreate (struct ui_file *fp) const override;
+
   /* Number of times this tracepoint should single-step and collect
      additional data.  */
-  long step_count;
+  long step_count = 0;
 
   /* Number of times this tracepoint should be hit before
      disabling/ending.  */
-  int pass_count;
+  int pass_count = 0;
 
   /* The number of the tracepoint on the target.  */
-  int number_on_target;
+  int number_on_target = 0;
 
   /* The total space taken by all the trace frames for this
      tracepoint.  */
-  ULONGEST traceframe_usage;
+  ULONGEST traceframe_usage = 0;
 
   /* The static tracepoint marker id, if known.  */
   std::string static_trace_marker_id;
@@ -907,7 +1133,22 @@ struct tracepoint : public breakpoint
      the array of markers we found for the given marker ID for which
      this static tracepoint corresponds.  When resetting breakpoints,
      we will use this index to try to find the same marker again.  */
-  int static_trace_marker_id_idx;
+  int static_trace_marker_id_idx = 0;
+};
+
+/* The abstract base class for catchpoints.  */
+
+struct catchpoint : public breakpoint
+{
+  /* If TEMP is true, then make the breakpoint temporary.  If
+     COND_STRING is not NULL, then store it in the breakpoint.  */
+  catchpoint (struct gdbarch *gdbarch, bool temp, const char *cond_string);
+
+  ~catchpoint () override = 0;
+
+  /* If the catchpoint has a condition set then recompute the cached
+     expression within the single dummy location.  */
+  void re_set (program_space *filter_pspace) override;
 };
 
 
@@ -915,22 +1156,20 @@ struct tracepoint : public breakpoint
    status").  This provides the ability to determine whether we have
    stopped at a breakpoint, and what we should do about it.  */
 
-typedef struct bpstats *bpstat;
-
 /* Clears a chain of bpstat, freeing storage
    of each.  */
-extern void bpstat_clear (bpstat *);
+extern void bpstat_clear (bpstat **);
 
 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
    is part of the bpstat is copied as well.  */
-extern bpstat bpstat_copy (bpstat);
+extern bpstat *bpstat_copy (bpstat *);
 
 /* Build the (raw) bpstat chain for the stop information given by ASPACE,
    BP_ADDR, and WS.  Returns the head of the bpstat chain.  */
 
-extern bpstat build_bpstat_chain (const address_space *aspace,
+extern bpstat *build_bpstat_chain (const address_space *aspace,
 				  CORE_ADDR bp_addr,
-				  const struct target_waitstatus *ws);
+				  const target_waitstatus &ws);
 
 /* Get a bpstat associated with having just stopped at address
    BP_ADDR in thread PTID.  STOP_CHAIN may be supplied as a previously
@@ -950,13 +1189,31 @@ extern bpstat build_bpstat_chain (const
    several reasons concurrently.)
 
    Each element of the chain has valid next, breakpoint_at,
-   commands, FIXME??? fields.  */
+   commands, FIXME??? fields.
 
-extern bpstat bpstat_stop_status (const address_space *aspace,
+   watchpoints_triggered must be called beforehand to set up each
+   watchpoint's watchpoint_triggered value.
+
+*/
+
+extern bpstat *bpstat_stop_status (const address_space *aspace,
 				  CORE_ADDR pc, thread_info *thread,
-				  const struct target_waitstatus *ws,
-				  bpstat stop_chain = NULL);
+				  const target_waitstatus &ws,
+				  bpstat *stop_chain = nullptr);
+
+/* Like bpstat_stop_status, but clears all watchpoints'
+   watchpoint_triggered flag.  Unlike with bpstat_stop_status, there's
+   no need to call watchpoint_triggered beforehand.  You'll typically
+   use this variant when handling a known-non-watchpoint event, like a
+   fork or exec event.  */
+
+extern bpstat *bpstat_stop_status_nowatch (const address_space *aspace,
+					   CORE_ADDR bp_addr,
+					   thread_info *thread,
+					   const target_waitstatus &ws);
 
+
+
 /* This bpstat_what stuff tells wait_for_inferior what to do with a
    breakpoint (a challenging task).
 
@@ -1053,32 +1310,30 @@ struct bpstat_what
   };
 
 /* Tell what to do about this bpstat.  */
-struct bpstat_what bpstat_what (bpstat);
+struct bpstat_what bpstat_what (bpstat *);
 
 /* Run breakpoint event callbacks associated with the breakpoints that
    triggered.  */
-extern void bpstat_run_callbacks (bpstat bs_head);
+extern void bpstat_run_callbacks (bpstat *bs_head);
 
 /* Find the bpstat associated with a breakpoint.  NULL otherwise.  */
-bpstat bpstat_find_breakpoint (bpstat, struct breakpoint *);
+bpstat *bpstat_find_breakpoint (bpstat *, struct breakpoint *);
 
 /* True if a signal that we got in target_wait() was due to
    circumstances explained by the bpstat; the signal is therefore not
    random.  */
-extern bool bpstat_explains_signal (bpstat, enum gdb_signal);
+extern bool bpstat_explains_signal (bpstat *, enum gdb_signal);
 
 /* True if this bpstat causes a stop.  */
-extern bool bpstat_causes_stop (bpstat);
+extern bool bpstat_causes_stop (bpstat *);
 
 /* True if we should step constantly (e.g. watchpoints on machines
    without hardware support).  This isn't related to a specific bpstat,
    just to things like whether watchpoints are set.  */
 extern bool bpstat_should_step ();
 
-/* Print a message indicating what happened.  Returns nonzero to
-   say that only the source line should be printed after this (zero
-   return means print the frame as well as the source line).  */
-extern enum print_stop_action bpstat_print (bpstat, int);
+/* Print a message indicating what happened.  */
+extern enum print_stop_action bpstat_print (bpstat *bs, target_waitkind kind);
 
 /* Put in *NUM the breakpoint number of the first breakpoint we are
    stopped at.  *BSP upon return is a bpstat which points to the
@@ -1089,7 +1344,21 @@ extern enum print_stop_action bpstat_pri
    Return -1 if stopped at a breakpoint that has been deleted since
    we set it.
    Return 1 otherwise.  */
-extern int bpstat_num (bpstat *, int *);
+extern int bpstat_num (bpstat **, int *);
+
+/* If BS indicates a breakpoint and this breakpoint has several code locations,
+   return the location number of BS, otherwise return 0.  */
+
+extern int bpstat_locno (const bpstat *bs);
+
+/* Print BS breakpoint number optionally followed by a . and breakpoint locno.
+
+   For a breakpoint with only one code location, outputs the signed field
+   "bkptno" breakpoint number of BS (as returned by bpstat_num).
+   If BS has several code locations, outputs a '.' character followed by
+   the signed field "locno" (as returned by bpstat_locno).  */
+
+extern void print_num_locno (const bpstat *bs, struct ui_out *);
 
 /* Perform actions associated with the stopped inferior.  Actually, we
    just use this for breakpoint commands.  Perhaps other actions will
@@ -1120,19 +1389,18 @@ enum bp_print_how
     print_it_done
   };
 
-struct bpstats
+struct bpstat
   {
-    bpstats ();
-    bpstats (struct bp_location *bl, bpstat **bs_link_pointer);
-    ~bpstats ();
+    bpstat ();
+    bpstat (struct bp_location *bl, bpstat ***bs_link_pointer);
 
-    bpstats (const bpstats &);
-    bpstats &operator= (const bpstats &) = delete;
+    bpstat (const bpstat &);
+    bpstat &operator= (const bpstat &) = delete;
 
     /* Linked list because there can be more than one breakpoint at
        the same place, and a bpstat reflects the fact that all have
        been hit.  */
-    bpstat next;
+    bpstat *next;
 
     /* Location that caused the stop.  Locations are refcounted, so
        this will never be NULL.  Note that this location may end up
@@ -1149,7 +1417,7 @@ struct bpstats
        What this means is that we should not (in most cases) follow
        the `bpstat->bp_location->owner' link, but instead use the
        `breakpoint_at' field below.  */
-    struct bp_location *bp_location_at;
+    bp_location_ref_ptr bp_location_at;
 
     /* Breakpoint that caused the stop.  This is nullified if the
        breakpoint ends up being deleted.  See comments on
@@ -1163,11 +1431,11 @@ struct bpstats
     /* Old value associated with a watchpoint.  */
     value_ref_ptr old_val;
 
-    /* Nonzero if this breakpoint tells us to print the frame.  */
-    char print;
+    /* True if this breakpoint tells us to print the frame.  */
+    bool print;
 
-    /* Nonzero if this breakpoint tells us to stop.  */
-    char stop;
+    /* True if this breakpoint tells us to stop.  */
+    bool stop;
 
     /* Tell bpstat_print and print_bp_stop_message how to print stuff
        associated with this element of the bpstat chain.  */
@@ -1194,11 +1462,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);
 
@@ -1250,7 +1513,7 @@ extern void until_break_command (const c
 /* Initialize a struct bp_location.  */
 
 extern void update_breakpoint_locations
-  (struct breakpoint *b,
+  (code_breakpoint *b,
    struct program_space *filter_pspace,
    gdb::array_view<const symtab_and_line> sals,
    gdb::array_view<const symtab_and_line> sals_end);
@@ -1281,13 +1544,19 @@ extern struct breakpoint *clone_momentar
 
 extern void set_ignore_count (int, int, int);
 
-extern void breakpoint_init_inferior (enum inf_context);
+/* Clear the "inserted" flag in all breakpoint locations of INF's program space
+   and delete any breakpoints which should go away between runs of the program.
+
+   Plus other such housekeeping that has to be done for breakpoints
+   between runs.
 
-extern void breakpoint_auto_delete (bpstat);
+   Note: this function gets called at the end of a run (by
+   generic_mourn_inferior) and when a run begins (by
+   init_wait_for_inferior).  */
 
-typedef void (*walk_bp_location_callback) (struct bp_location *, void *);
+extern void breakpoint_init_inferior (inferior *inf, inf_context context);
 
-extern void iterate_over_bp_locations (walk_bp_location_callback);
+extern void breakpoint_auto_delete (bpstat *);
 
 /* Return the chain of command lines to execute when this breakpoint
    is hit.  */
@@ -1299,17 +1568,12 @@ const char *bpdisp_text (enum bpdisp dis
 
 extern void break_command (const char *, int);
 
-extern void watch_command_wrapper (const char *, int, int);
-extern void awatch_command_wrapper (const char *, int, int);
-extern void rwatch_command_wrapper (const char *, int, int);
+extern void watch_command_wrapper (const char *, int, bool);
+extern void awatch_command_wrapper (const char *, int, bool);
+extern void rwatch_command_wrapper (const char *, int, bool);
 extern void tbreak_command (const char *, int);
 
-extern struct breakpoint_ops base_breakpoint_ops;
-extern struct breakpoint_ops bkpt_breakpoint_ops;
-extern struct breakpoint_ops tracepoint_breakpoint_ops;
-extern struct breakpoint_ops dprintf_breakpoint_ops;
-
-extern void initialize_breakpoint_ops (void);
+extern const struct breakpoint_ops code_breakpoint_ops;
 
 /* Arguments to pass as context to some catch command handlers.  */
 #define CATCH_PERMANENT ((void *) (uintptr_t) 0)
@@ -1321,45 +1585,30 @@ extern void initialize_breakpoint_ops (v
 
 extern void
   add_catch_command (const char *name, const char *docstring,
-		     cmd_const_sfunc_ftype *sfunc,
+		     cmd_func_ftype *func,
 		     completer_ftype *completer,
 		     void *user_data_catch,
 		     void *user_data_tcatch);
 
-/* Initialize a breakpoint struct for Ada exception catchpoints.  */
-
-extern void
-  init_ada_exception_breakpoint (struct breakpoint *b,
-				 struct gdbarch *gdbarch,
-				 struct symtab_and_line sal,
-				 const char *addr_string,
-				 const struct breakpoint_ops *ops,
-				 int tempflag,
-				 int enabled,
-				 int from_tty);
-
-extern void init_catchpoint (struct breakpoint *b,
-			     struct gdbarch *gdbarch, int tempflag,
-			     const char *cond_string,
-			     const struct breakpoint_ops *ops);
-
 /* Add breakpoint B on the breakpoint list, and notify the user, the
    target and breakpoint_created observers of its existence.  If
    INTERNAL is non-zero, the breakpoint number will be allocated from
    the internal breakpoint count.  If UPDATE_GLL is non-zero,
-   update_global_location_list will be called.  */
+   update_global_location_list will be called.
 
-extern void install_breakpoint (int internal, std::unique_ptr<breakpoint> &&b,
-				int update_gll);
+   Takes ownership of B, and returns a non-owning reference to it.  */
 
-/* Returns the breakpoint ops appropriate for use with with LOCATION and
-   according to IS_TRACEPOINT.  Use this to ensure, for example, that you pass
-   the correct ops to create_breakpoint for probe locations.  If LOCATION is
-   NULL, returns bkpt_breakpoint_ops (or tracepoint_breakpoint_ops, if
-   IS_TRACEPOINT is true).  */
+extern breakpoint *install_breakpoint
+  (int internal, std::unique_ptr<breakpoint> &&b, int update_gll);
 
-extern const struct breakpoint_ops *breakpoint_ops_for_event_location
-  (const struct event_location *location, bool is_tracepoint);
+/* Returns the breakpoint ops appropriate for use with with LOCSPEC
+   and according to IS_TRACEPOINT.  Use this to ensure, for example,
+   that you pass the correct ops to create_breakpoint for probe
+   location specs.  If LOCSPEC is NULL, returns
+   code_breakpoint_ops.  */
+
+extern const struct breakpoint_ops *breakpoint_ops_for_location_spec
+  (const location_spec *locspec, bool is_tracepoint);
 
 /* Flags that can be passed down to create_breakpoint, etc., to affect
    breakpoint creation in several ways.  */
@@ -1371,19 +1620,50 @@ enum breakpoint_create_flags
     CREATE_BREAKPOINT_FLAGS_INSERTED = 1 << 0
   };
 
-/* Set a breakpoint.  This function is shared between CLI and MI functions
-   for setting a breakpoint at LOCATION.
+/* Set a breakpoint.  This function is shared between CLI and MI
+   functions for setting a breakpoint at LOCSPEC.
 
    This function has two major modes of operations, selected by the
-   PARSE_EXTRA parameter.
+   PARSE_EXTRA and WANTED_TYPE parameters.
+
+   When WANTED_TYPE is not bp_dprintf the following rules apply:
 
-   If PARSE_EXTRA is zero, LOCATION is just the breakpoint's location,
-   with condition, thread, and extra string specified by the COND_STRING,
-   THREAD, and EXTRA_STRING parameters.
-
-   If PARSE_EXTRA is non-zero, this function will attempt to extract
-   the condition, thread, and extra string from EXTRA_STRING, ignoring
-   the similarly named parameters.
+     If PARSE_EXTRA is zero, LOCSPEC is just the breakpoint's location
+     spec, with condition, thread, and extra string specified by the
+     COND_STRING, THREAD, and EXTRA_STRING parameters.
+
+     If PARSE_EXTRA is non-zero, this function will attempt to extract the
+     condition, thread, and extra string from EXTRA_STRING, ignoring the
+     similarly named parameters.
+
+   When WANTED_TYPE is bp_dprintf the following rules apply:
+
+     PARSE_EXTRA must always be zero, LOCSPEC is just the breakpoint's
+     location spec, with condition, thread, and extra string (which
+     contains the dprintf format and arguments) specified by the
+     COND_STRING, THREAD, and EXTRA_STRING parameters.
+
+   If FORCE_CONDITION is true, the condition (in COND_STRING) is accepted
+   even when it is invalid at all of the locations.  However, if
+   PARSE_EXTRA is non-zero and WANTED_TYPE is not bp_dprintf, the
+   FORCE_CONDITION parameter is ignored and the corresponding argument is
+   parsed from EXTRA_STRING.
+
+   The THREAD should be a global thread number, the created breakpoint will
+   only apply for that thread.  If the breakpoint should apply for all
+   threads then pass -1.  However, if PARSE_EXTRA is non-zero and
+   WANTED_TYPE is not bp_dprintf, then the THREAD parameter is ignored and
+   an optional thread number will be parsed from EXTRA_STRING.
+
+   The INFERIOR should be a global inferior number, the created breakpoint
+   will only apply for that inferior.  If the breakpoint should apply for
+   all inferiors then pass -1.  However, if PARSE_EXTRA is non-zero and
+   WANTED_TYPE is not bp_dprintf, then the INFERIOR parameter is ignored
+   and an optional inferior number will be parsed from EXTRA_STRING.
+
+   At most one of THREAD and INFERIOR should be set to a value other than
+   -1; breakpoints can be thread specific, or inferior specific, but not
+   both.
 
    If INTERNAL is non-zero, the breakpoint number will be allocated
    from the internal breakpoint count.
@@ -1391,9 +1671,11 @@ 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 location_spec *locspec,
 			      const char *cond_string, int thread,
+			      int inferior,
 			      const char *extra_string,
+			      bool force_condition,
 			      int parse_extra,
 			      int tempflag, enum bptype wanted_type,
 			      int ignore_count,
@@ -1460,7 +1742,7 @@ extern void disable_overlay_breakpoints
 extern void set_std_terminate_breakpoint (void);
 extern void delete_std_terminate_breakpoint (void);
 
-/* These functions respectively disable or reenable all currently
+/* These functions respectively disable or re-enable all currently
    enabled watchpoints.  When disabled, the watchpoints are marked
    call_disabled.  When re-enabled, they are marked enabled.
 
@@ -1528,15 +1810,31 @@ extern void breakpoint_set_commands (str
 
 extern void breakpoint_set_silent (struct breakpoint *b, int silent);
 
+/* Set the thread for this breakpoint.  If THREAD is -1, make the
+   breakpoint work for any thread.  Passing a value other than -1 for
+   THREAD should only be done if b->task is 0; it is not valid to try and
+   set both a thread and task restriction on a breakpoint.  */
+
 extern void breakpoint_set_thread (struct breakpoint *b, int thread);
 
+/* Set the inferior for breakpoint B to INFERIOR.  If INFERIOR is -1, make
+   the breakpoint work for any inferior.  */
+
+extern void breakpoint_set_inferior (struct breakpoint *b, int inferior);
+
+/* Set the task for this breakpoint.  If TASK is -1, make the breakpoint
+   work for any task.  Passing a value other than -1 for TASK should only
+   be done if b->thread is -1; it is not valid to try and set both a thread
+   and task restriction on a breakpoint.  */
+
 extern void breakpoint_set_task (struct breakpoint *b, int task);
 
-/* Clear the "inserted" flag in all breakpoints.  */
-extern void mark_breakpoints_out (void);
+/* Clear the "inserted" flag in all breakpoints locations in PSPACE.  */
+
+extern void mark_breakpoints_out (program_space *pspace);
 
 extern struct breakpoint *create_jit_event_breakpoint (struct gdbarch *,
-                                                       CORE_ADDR);
+						       CORE_ADDR);
 
 extern struct breakpoint *create_solib_event_breakpoint (struct gdbarch *,
 							 CORE_ADDR);
@@ -1559,16 +1857,24 @@ extern void remove_solib_event_breakpoin
    delete at next stop disposition.  */
 extern void remove_solib_event_breakpoints_at_next_stop (void);
 
-extern void disable_breakpoints_in_shlibs (void);
+/* Disable any breakpoints that are on code in shared libraries in PSPACE.
+   Only apply to enabled breakpoints, disabled ones can just stay disabled.  */
+
+extern void disable_breakpoints_in_shlibs (program_space *pspace);
 
 /* This function returns true if B is a catchpoint.  */
 
 extern bool is_catchpoint (struct breakpoint *b);
 
 /* Shared helper function (MI and CLI) for creating and installing
-   a shared object event catchpoint.  */
-extern void add_solib_catchpoint (const char *arg, int is_load, int is_temp,
-                                  int enabled);
+   a shared object event catchpoint.  If IS_LOAD is true then
+   the events to be caught are load events, otherwise they are
+   unload events.  If IS_TEMP is true the catchpoint is a
+   temporary one.  If ENABLED is true the catchpoint is
+   created in an enabled state.  */
+
+extern void add_solib_catchpoint (const char *arg, bool is_load, bool is_temp,
+				  bool enabled);
 
 /* Create and insert a new software single step breakpoint for the
    current thread.  May be called multiple times; each time will add a
@@ -1583,9 +1889,10 @@ extern void insert_single_step_breakpoin
    otherwise, return false.  */
 extern int insert_single_step_breakpoints (struct gdbarch *);
 
-/* Check if any hardware watchpoints have triggered, according to the
-   target.  */
-int watchpoints_triggered (struct target_waitstatus *);
+/* Check whether any hardware watchpoints have triggered or not,
+   according to the target, and record it in each watchpoint's
+   'watchpoint_triggered' field.  */
+int watchpoints_triggered (const target_waitstatus &);
 
 /* Helper for transparent breakpoint hiding for memory read and write
    routines.
@@ -1616,18 +1923,27 @@ extern int breakpoints_should_be_inserte
    in our opinion won't ever trigger.  */
 extern void breakpoint_retire_moribund (void);
 
-/* Set break condition of breakpoint B to EXP.  */
+/* Set break condition of breakpoint B to EXP.
+   If FORCE, define the condition even if it is invalid in
+   all of the breakpoint locations.  */
 extern void set_breakpoint_condition (struct breakpoint *b, const char *exp,
-				      int from_tty);
+				      int from_tty, bool force);
+
+/* Set break condition for the breakpoint with number BPNUM to EXP.
+   Raise an error if no breakpoint with the given number is found.
+   Also raise an error if the breakpoint already has stop conditions.
+   If FORCE, define the condition even if it is invalid in
+   all of the breakpoint locations.  */
+extern void set_breakpoint_condition (int bpnum, const char *exp,
+				      int from_tty, bool force);
 
-/* Checks if we are catching syscalls or not.
-   Returns 0 if not, greater than 0 if we are.  */
-extern int catch_syscall_enabled (void);
+/* Checks if we are catching syscalls or not.  */
+extern bool catch_syscall_enabled ();
 
 /* Checks if we are catching syscalls with the specific
    syscall_number.  Used for "filtering" the catchpoints.
-   Returns 0 if not, greater than 0 if we are.  */
-extern int catching_syscall_number (int syscall_number);
+   Returns false if not, true if we are.  */
+extern bool catching_syscall_number (int syscall_number);
 
 /* Return a tracepoint with the given number if found.  */
 extern struct tracepoint *get_tracepoint (int num);
@@ -1639,9 +1955,6 @@ extern struct tracepoint *
   get_tracepoint_by_number (const char **arg,
 			    number_or_range_parser *parser);
 
-/* Return a vector of all tracepoints currently defined.  */
-extern std::vector<breakpoint *> all_tracepoints (void);
-
 /* Return true if B is of tracepoint kind.  */
 
 extern bool is_tracepoint (const struct breakpoint *b);
@@ -1659,31 +1972,77 @@ public:
   scoped_rbreak_breakpoints ();
   ~scoped_rbreak_breakpoints ();
 
+  /* Return the number of first breakpoint made while this object is
+     in scope.  */
+  int first_breakpoint () const;
+
+  /* Return the number of the most recent breakpoint made while this
+     object is in scope, or -1 if no breakpoints were made.  */
+  int last_breakpoint () const;
+
   DISABLE_COPY_AND_ASSIGN (scoped_rbreak_breakpoints);
 };
 
-/* Breakpoint iterator function.
+/* Breakpoint linked list iterator.  */
+
+using breakpoint_list = intrusive_list<breakpoint>;
+
+using breakpoint_iterator = breakpoint_list::iterator;
+
+/* Breakpoint linked list range.  */
+
+using breakpoint_range = iterator_range<breakpoint_iterator>;
+
+/* Return a range to iterate over all breakpoints.  */
+
+breakpoint_range all_breakpoints ();
+
+/* Breakpoint linked list range, safe against deletion of the current
+   breakpoint while iterating.  */
+
+using breakpoint_safe_range = basic_safe_range<breakpoint_range>;
+
+/* Return a range to iterate over all breakpoints.  This range is safe against
+   deletion of the current breakpoint while iterating.  */
+
+breakpoint_safe_range all_breakpoints_safe ();
+
+/* Breakpoint filter to only keep tracepoints.  */
+
+struct tracepoint_filter
+{
+  bool operator() (breakpoint &b)
+  { return is_tracepoint (&b); }
+};
+
+/* Breakpoint linked list iterator, filtering to only keep tracepoints.  */
+
+using tracepoint_iterator
+  = filtered_iterator<breakpoint_iterator, tracepoint_filter>;
+
+/* Breakpoint linked list range, filtering to only keep tracepoints.  */
 
-   Calls a callback function once for each breakpoint, so long as the
-   callback function returns false.  If the callback function returns
-   true, the iteration will end and the current breakpoint will be
-   returned.  This can be useful for implementing a search for a
-   breakpoint with arbitrary attributes, or for applying an operation
-   to every breakpoint.  */
-extern struct breakpoint *iterate_over_breakpoints
-  (gdb::function_view<bool (breakpoint *)>);
+using tracepoint_range = iterator_range<tracepoint_iterator>;
+
+/* Return a range to iterate over all tracepoints.  */
+
+tracepoint_range all_tracepoints ();
+
+/* Return a range to iterate over all breakpoint locations.  */
+
+const std::vector<bp_location *> &all_bp_locations ();
 
 /* Nonzero if the specified PC cannot be a location where functions
    have been inlined.  */
 
 extern int pc_at_non_inline_function (const address_space *aspace,
 				      CORE_ADDR pc,
-				      const struct target_waitstatus *ws);
+				      const target_waitstatus &ws);
 
-extern int user_breakpoint_p (struct breakpoint *);
+extern int user_breakpoint_p (const breakpoint *);
 
 /* Return true if this breakpoint is pending, false if not.  */
-extern int pending_breakpoint_p (struct breakpoint *);
+extern int pending_breakpoint_p (const breakpoint *);
 
 /* Attempt to determine architecture of location identified by SAL.  */
 extern struct gdbarch *get_sal_arch (struct symtab_and_line sal);
@@ -1707,6 +2066,11 @@ extern cmd_list_element *commands_cmd_el
 
 extern bool fix_multi_location_breakpoint_output_globally;
 
+/* Whether to use the fixed output when printing information about
+   commands attached to a breakpoint.  */
+
+extern bool fix_breakpoint_script_output_globally;
+
 /* Deal with "catch catch", "catch throw", and "catch rethrow" commands and
    the MI equivalents.  Sets up to catch events of type EX_EVENT.  When
    TEMPFLAG is true only the next matching event is caught after which the
@@ -1717,4 +2081,28 @@ extern void catch_exception_event (enum
 				   const char *regex, bool tempflag,
 				   int from_tty);
 
-#endif /* !defined (BREAKPOINT_H) */
+/* A helper function that prints a shared library stopped event.
+   IS_CATCHPOINT is true if the event is due to a "catch load"
+   catchpoint, false otherwise.  */
+
+extern void print_solib_event (bool is_catchpoint);
+
+/* Print a message describing any user-breakpoints set at PC.  This
+   concerns with logical breakpoints, so we match program spaces, not
+   address spaces.  */
+
+extern void describe_other_breakpoints (struct gdbarch *,
+					struct program_space *, CORE_ADDR,
+					struct obj_section *, int);
+
+/* Enable or disable a breakpoint location LOC.  ENABLE
+   specifies whether to enable or disable.  */
+
+extern void enable_disable_bp_location (bp_location *loc, bool enable);
+
+
+/* Notify interpreters and observers that breakpoint B was modified.  */
+
+extern void notify_breakpoint_modified (breakpoint *b);
+
+#endif /* GDB_BREAKPOINT_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.20200303/gdb/bsd-kvm.c ./gdb/bsd-kvm.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bsd-kvm.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bsd-kvm.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* BSD Kernel Data Access Library (libkvm) interface.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,17 +18,19 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #define _KMEMUSER
-#include "defs.h"
 #include "cli/cli-cmds.h"
 #include "command.h"
+#include "filenames.h"
 #include "frame.h"
 #include "regcache.h"
 #include "target.h"
 #include "process-stratum-target.h"
 #include "value.h"
 #include "gdbcore.h"
-#include "inferior.h"          /* for get_exec_file */
+#include "inferior.h"
 #include "gdbthread.h"
+#include "gdbsupport/pathstuff.h"
+#include "gdbsupport/gdb_tilde_expand.h"
 
 #include <fcntl.h>
 #include <kvm.h>
@@ -46,7 +48,7 @@
 #include "bsd-kvm.h"
 
 /* Kernel memory device file.  */
-static const char *bsd_kvm_corefile;
+static std::string bsd_kvm_corefile;
 
 /* Kernel memory interface descriptor.  */
 static kvm_t *core_kd;
@@ -106,40 +108,33 @@ static void
 bsd_kvm_target_open (const char *arg, int from_tty)
 {
   char errbuf[_POSIX2_LINE_MAX];
-  char *execfile = NULL;
   kvm_t *temp_kd;
-  char *filename = NULL;
+  std::string filename;
 
   target_preopen (from_tty);
 
   if (arg)
     {
-      char *temp;
-
-      filename = tilde_expand (arg);
-      if (filename[0] != '/')
-	{
-	  temp = concat (current_directory, "/", filename, (char *)NULL);
-	  xfree (filename);
-	  filename = temp;
-	}
+      filename = gdb_tilde_expand (arg);
+      if (!IS_ABSOLUTE_PATH (filename))
+	filename = gdb_abspath (filename);
     }
 
-  execfile = get_exec_file (0);
-  temp_kd = kvm_openfiles (execfile, filename, NULL,
+  const char *execfile = current_program_space->exec_filename ();
+  temp_kd = kvm_openfiles (execfile, filename.c_str (), NULL,
 			   write_files ? O_RDWR : O_RDONLY, errbuf);
   if (temp_kd == NULL)
     error (("%s"), errbuf);
 
   bsd_kvm_corefile = filename;
-  unpush_target (&bsd_kvm_ops);
+  current_inferior ()->unpush_target (&bsd_kvm_ops);
   core_kd = temp_kd;
-  push_target (&bsd_kvm_ops);
+  current_inferior ()->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);
+  target_fetch_registers (get_thread_regcache (thr), -1);
 
   reinit_frame_cache ();
   print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC, 1);
@@ -155,8 +150,9 @@ bsd_kvm_target::close ()
       core_kd = NULL;
     }
 
-  inferior_ptid = null_ptid;
-  discard_all_inferiors ();
+  bsd_kvm_corefile.clear ();
+  switch_to_no_thread ();
+  exit_inferior (current_inferior ());
 }
 
 static LONGEST
@@ -203,11 +199,11 @@ bsd_kvm_target::xfer_partial (enum targe
 void
 bsd_kvm_target::files_info ()
 {
-  if (bsd_kvm_corefile && strcmp (bsd_kvm_corefile, _PATH_MEM) != 0)
-    printf_filtered (_("\tUsing the kernel crash dump %s.\n"),
-		     bsd_kvm_corefile);
+  if (bsd_kvm_corefile != _PATH_MEM)
+    gdb_printf (_("\tUsing the kernel crash dump %s.\n"),
+		bsd_kvm_corefile.c_str ());
   else
-    printf_filtered (_("\tUsing the currently running kernel.\n"));
+    gdb_printf (_("\tUsing the currently running kernel.\n"));
 }
 
 /* Fetch process control block at address PADDR.  */
@@ -238,7 +234,7 @@ bsd_kvm_target::fetch_registers (struct
   /* On dumping core, BSD kernels store the faulting context (PCB)
      in the variable "dumppcb".  */
   memset (nl, 0, sizeof nl);
-  nl[0].n_name = "_dumppcb";
+  nl[0].n_name = (char *) "_dumppcb";
 
   if (kvm_nlist (core_kd, nl) == -1)
     error (("%s"), kvm_geterr (core_kd));
@@ -256,7 +252,7 @@ bsd_kvm_target::fetch_registers (struct
      "proc0paddr".  */
 
   memset (nl, 0, sizeof nl);
-  nl[0].n_name = "_proc0paddr";
+  nl[0].n_name = (char *) "_proc0paddr";
 
   if (kvm_nlist (core_kd, nl) == -1)
     error (("%s"), kvm_geterr (core_kd));
@@ -280,7 +276,7 @@ bsd_kvm_target::fetch_registers (struct
      variable "thread0".  */
 
   memset (nl, 0, sizeof nl);
-  nl[0].n_name = "_thread0";
+  nl[0].n_name = (char *) "_thread0";
 
   if (kvm_nlist (core_kd, nl) == -1)
     error (("%s"), kvm_geterr (core_kd));
@@ -336,7 +332,7 @@ bsd_kvm_proc_cmd (const char *arg, int f
   if (kvm_read (core_kd, addr, &bsd_kvm_paddr, sizeof bsd_kvm_paddr) == -1)
     error (("%s"), kvm_geterr (core_kd));
 
-  target_fetch_registers (get_current_regcache (), -1);
+  target_fetch_registers (get_thread_regcache (inferior_thread ()), -1);
 
   reinit_frame_cache ();
   print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC, 1);
@@ -356,7 +352,7 @@ bsd_kvm_pcb_cmd (const char *arg, int fr
 
   bsd_kvm_paddr = (struct pcb *)(u_long) parse_and_eval_address (arg);
 
-  target_fetch_registers (get_current_regcache (), -1);
+  target_fetch_registers (get_thread_regcache (inferior_thread ()), -1);
 
   reinit_frame_cache ();
   print_stack_frame (get_selected_frame (NULL), 0, SRC_AND_LOC, 1);
@@ -388,15 +384,15 @@ bsd_kvm_add_target (int (*supply_pcb)(st
   
   add_prefix_cmd ("kvm", class_obscure, bsd_kvm_cmd, _("\
 Generic command for manipulating the kernel memory interface."),
-		  &bsd_kvm_cmdlist, "kvm ", 0, &cmdlist);
+		  &bsd_kvm_cmdlist, 0, &cmdlist);
 
 #ifndef HAVE_STRUCT_THREAD_TD_PCB
   add_cmd ("proc", class_obscure, bsd_kvm_proc_cmd,
-	   _("Set current context from proc address"), &bsd_kvm_cmdlist);
+	   _("Set current context from proc address."), &bsd_kvm_cmdlist);
 #endif
   add_cmd ("pcb", class_obscure, bsd_kvm_pcb_cmd,
 	   /* i18n: PCB == "Process Control Block".  */
-	   _("Set current context from pcb address"), &bsd_kvm_cmdlist);
+	   _("Set current context from pcb address."), &bsd_kvm_cmdlist);
 
   /* Some notes on the ptid usage on this 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.20200303/gdb/bsd-kvm.h ./gdb/bsd-kvm.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bsd-kvm.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bsd-kvm.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* BSD Kernel Data Access Library (libkvm) interface.
 
-   Copyright (C) 2004-2020 Free Software Foundation, Inc.
+   Copyright (C) 2004-2025 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/>.  */
 
-#ifndef BSD_KVM_H
-#define BSD_KVM_H
+#ifndef GDB_BSD_KVM_H
+#define GDB_BSD_KVM_H
 
 struct pcb;
 struct regcache;
@@ -30,4 +30,4 @@ struct regcache;
 extern void
   bsd_kvm_add_target (int (*supply_pcb)(struct regcache *, struct pcb *));
 
-#endif /* bsd-kvm.h */
+#endif /* GDB_BSD_KVM_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.20200303/gdb/bsd-uthread.c ./gdb/bsd-uthread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bsd-uthread.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bsd-uthread.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* BSD user-level threads support.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "gdbcore.h"
 #include "gdbthread.h"
 #include "inferior.h"
@@ -25,11 +25,10 @@
 #include "observable.h"
 #include "regcache.h"
 #include "solib.h"
-#include "solist.h"
 #include "symfile.h"
 #include "target.h"
 
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
 
 #include "bsd-uthread.h"
 
@@ -53,7 +52,7 @@ struct bsd_uthread_target final : public
   void fetch_registers (struct regcache *, int) override;
   void store_registers (struct regcache *, int) override;
 
-  ptid_t wait (ptid_t, struct target_waitstatus *, int) override;
+  ptid_t wait (ptid_t, struct target_waitstatus *, target_wait_flags) override;
   void resume (ptid_t, int, enum gdb_signal) override;
 
   bool thread_alive (ptid_t ptid) override;
@@ -70,24 +69,24 @@ static bsd_uthread_target bsd_uthread_op
 
 /* Architecture-specific operations.  */
 
-/* Per-architecture data key.  */
-static struct gdbarch_data *bsd_uthread_data;
-
 struct bsd_uthread_ops
 {
   /* Supply registers for an inactive thread to a register cache.  */
-  void (*supply_uthread)(struct regcache *, int, CORE_ADDR);
+  void (*supply_uthread)(struct regcache *, int, CORE_ADDR) = nullptr;
 
   /* Collect registers for an inactive thread from a register cache.  */
-  void (*collect_uthread)(const struct regcache *, int, CORE_ADDR);
+  void (*collect_uthread)(const struct regcache *, int, CORE_ADDR) = nullptr;
 };
 
-static void *
-bsd_uthread_init (struct obstack *obstack)
-{
-  struct bsd_uthread_ops *ops;
+/* Per-architecture data key.  */
+static const registry<gdbarch>::key<struct bsd_uthread_ops> bsd_uthread_data;
 
-  ops = OBSTACK_ZALLOC (obstack, struct bsd_uthread_ops);
+static struct bsd_uthread_ops *
+get_bsd_uthread (struct gdbarch *gdbarch)
+{
+  struct bsd_uthread_ops *ops = bsd_uthread_data.get (gdbarch);
+  if (ops == nullptr)
+    ops = bsd_uthread_data.emplace (gdbarch);
   return ops;
 }
 
@@ -99,8 +98,7 @@ bsd_uthread_set_supply_uthread (struct g
 				void (*supply_uthread) (struct regcache *,
 							int, CORE_ADDR))
 {
-  struct bsd_uthread_ops *ops
-    = (struct bsd_uthread_ops *) gdbarch_data (gdbarch, bsd_uthread_data);
+  struct bsd_uthread_ops *ops = get_bsd_uthread (gdbarch);
 
   ops->supply_uthread = supply_uthread;
 }
@@ -113,8 +111,7 @@ bsd_uthread_set_collect_uthread (struct
 			 void (*collect_uthread) (const struct regcache *,
 						  int, CORE_ADDR))
 {
-  struct bsd_uthread_ops *ops
-    = (struct bsd_uthread_ops *) gdbarch_data (gdbarch, bsd_uthread_data);
+  struct bsd_uthread_ops *ops = get_bsd_uthread (gdbarch);
 
   ops->collect_uthread = collect_uthread;
 }
@@ -127,7 +124,7 @@ bsd_uthread_set_collect_uthread (struct
 static void
 bsd_uthread_check_magic (CORE_ADDR addr)
 {
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
+  bfd_endian byte_order = gdbarch_byte_order (current_inferior ()->arch ());
   ULONGEST magic = read_memory_unsigned_integer (addr, 4, byte_order);
 
   if (magic != BSD_UTHREAD_PTHREAD_MAGIC)
@@ -151,19 +148,18 @@ static int bsd_uthread_thread_next_offse
 static int bsd_uthread_thread_ctx_offset;
 
 /* Name of shared threads library.  */
-static const char *bsd_uthread_solib_name;
+static std::string bsd_uthread_solib_name;
 
-/* Non-zero if the thread startum implemented by this module is active.  */
+/* Non-zero if the thread stratum implemented by this module is active.  */
 static int bsd_uthread_active;
 
 static CORE_ADDR
 bsd_uthread_lookup_address (const char *name, struct objfile *objfile)
 {
-  struct bound_minimal_symbol sym;
-
-  sym = lookup_minimal_symbol (name, NULL, objfile);
+  bound_minimal_symbol sym
+    = lookup_minimal_symbol (current_program_space, name, objfile);
   if (sym.minsym)
-    return BMSYMBOL_VALUE_ADDRESS (sym);
+    return sym.value_address ();
 
   return 0;
 }
@@ -171,7 +167,7 @@ bsd_uthread_lookup_address (const char *
 static int
 bsd_uthread_lookup_offset (const char *name, struct objfile *objfile)
 {
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
+  bfd_endian byte_order = gdbarch_byte_order (current_inferior ()->arch ());
   CORE_ADDR addr;
 
   addr = bsd_uthread_lookup_address (name, objfile);
@@ -184,7 +180,8 @@ bsd_uthread_lookup_offset (const char *n
 static CORE_ADDR
 bsd_uthread_read_memory_address (CORE_ADDR addr)
 {
-  struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr;
+  type *ptr_type
+    = builtin_type (current_inferior ()->arch ())->builtin_data_ptr;
   return read_memory_typed_address (addr, ptr_type);
 }
 
@@ -195,9 +192,8 @@ bsd_uthread_read_memory_address (CORE_AD
 static int
 bsd_uthread_activate (struct objfile *objfile)
 {
-  struct gdbarch *gdbarch = target_gdbarch ();
-  struct bsd_uthread_ops *ops
-    = (struct bsd_uthread_ops *) gdbarch_data (gdbarch, bsd_uthread_data);
+  gdbarch *gdbarch = current_inferior ()->arch ();
+  struct bsd_uthread_ops *ops = get_bsd_uthread (gdbarch);
 
   /* Skip if the thread stratum has already been activated.  */
   if (bsd_uthread_active)
@@ -231,7 +227,7 @@ bsd_uthread_activate (struct objfile *ob
   bsd_uthread_thread_ctx_offset =
     bsd_uthread_lookup_offset ("_thread_ctx_offset", objfile);
 
-  push_target (&bsd_uthread_ops);
+  current_inferior ()->push_target (&bsd_uthread_ops);
   bsd_uthread_active = 1;
   return 1;
 }
@@ -247,7 +243,7 @@ bsd_uthread_target::close ()
   bsd_uthread_thread_state_offset = 0;
   bsd_uthread_thread_next_offset = 0;
   bsd_uthread_thread_ctx_offset = 0;
-  bsd_uthread_solib_name = NULL;
+  bsd_uthread_solib_name.clear ();
 }
 
 /* Deactivate the thread stratum implemented by this module.  */
@@ -259,17 +255,17 @@ bsd_uthread_deactivate (void)
   if (!bsd_uthread_active)
     return;
 
-  unpush_target (&bsd_uthread_ops);
+  current_inferior ()->unpush_target (&bsd_uthread_ops);
 }
 
 static void
-bsd_uthread_inferior_created (struct target_ops *ops, int from_tty)
+bsd_uthread_inferior_created (inferior *inf)
 {
   bsd_uthread_activate (NULL);
 }
 
 /* Likely candidates for the threads library.  */
-static const char *bsd_uthread_solib_names[] =
+static const char * const bsd_uthread_solib_names[] =
 {
   "/usr/lib/libc_r.so",		/* FreeBSD */
   "/usr/lib/libpthread.so",	/* OpenBSD */
@@ -277,19 +273,19 @@ static const char *bsd_uthread_solib_nam
 };
 
 static void
-bsd_uthread_solib_loaded (struct so_list *so)
+bsd_uthread_solib_loaded (solib &so)
 {
-  const char **names = bsd_uthread_solib_names;
+  const char * const *names = bsd_uthread_solib_names;
 
   for (names = bsd_uthread_solib_names; *names; names++)
     {
-      if (startswith (so->so_original_name, *names))
+      if (startswith (so.original_name, *names))
 	{
 	  solib_read_symbols (so, 0);
 
-	  if (bsd_uthread_activate (so->objfile))
+	  if (bsd_uthread_activate (so.objfile))
 	    {
-	      bsd_uthread_solib_name = so->so_original_name;
+	      bsd_uthread_solib_name = so.original_name;
 	      return;
 	    }
 	}
@@ -297,12 +293,13 @@ bsd_uthread_solib_loaded (struct so_list
 }
 
 static void
-bsd_uthread_solib_unloaded (struct so_list *so)
+bsd_uthread_solib_unloaded (program_space *pspace, const solib &so,
+			    bool still_in_use, bool /* silent */)
 {
-  if (!bsd_uthread_solib_name)
+  if (bsd_uthread_solib_name.empty () || still_in_use)
     return;
 
-  if (strcmp (so->so_original_name, bsd_uthread_solib_name) == 0)
+  if (so.original_name == bsd_uthread_solib_name)
     bsd_uthread_deactivate ();
 }
 
@@ -317,8 +314,7 @@ void
 bsd_uthread_target::fetch_registers (struct regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct bsd_uthread_ops *uthread_ops
-    = (struct bsd_uthread_ops *) gdbarch_data (gdbarch, bsd_uthread_data);
+  struct bsd_uthread_ops *uthread_ops = get_bsd_uthread (gdbarch);
   ptid_t ptid = regcache->ptid ();
   CORE_ADDR addr = ptid.tid ();
   CORE_ADDR active_addr;
@@ -349,8 +345,7 @@ void
 bsd_uthread_target::store_registers (struct regcache *regcache, int regnum)
 {
   struct gdbarch *gdbarch = regcache->arch ();
-  struct bsd_uthread_ops *uthread_ops
-    = (struct bsd_uthread_ops *) gdbarch_data (gdbarch, bsd_uthread_data);
+  struct bsd_uthread_ops *uthread_ops = get_bsd_uthread (gdbarch);
   ptid_t ptid = regcache->ptid ();
   CORE_ADDR addr = ptid.tid ();
   CORE_ADDR active_addr;
@@ -370,25 +365,27 @@ bsd_uthread_target::store_registers (str
   else
     {
       /* Updating the thread that is currently running; pass the
-         request to the layer beneath.  */
+	 request to the layer beneath.  */
       beneath ()->store_registers (regcache, regnum);
     }
 }
 
 ptid_t
 bsd_uthread_target::wait (ptid_t ptid, struct target_waitstatus *status,
-			  int options)
+			  target_wait_flags options)
 {
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
+  bfd_endian byte_order = gdbarch_byte_order (current_inferior ()->arch ());
   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.  */
-  if (status->kind == TARGET_WAITKIND_SIGNALLED
-      || status->kind == TARGET_WAITKIND_EXITED)
+  if (status->kind () == TARGET_WAITKIND_SIGNALLED
+      || status->kind () == TARGET_WAITKIND_EXITED)
     return ptid;
 
   /* Fetch the corresponding thread ID, and augment the returned
@@ -399,9 +396,9 @@ bsd_uthread_target::wait (ptid_t ptid, s
       gdb_byte buf[4];
 
       /* FIXME: For executables linked statically with the threads
-         library, we end up here before the program has actually been
-         executed.  In that case ADDR will be garbage since it has
-         been read from the wrong virtual memory image.  */
+	 library, we end up here before the program has actually been
+	 executed.  In that case ADDR will be garbage since it has
+	 been read from the wrong virtual memory image.  */
       if (target_read_memory (addr, buf, 4) == 0)
 	{
 	  ULONGEST magic = extract_unsigned_integer (buf, 4, byte_order);
@@ -414,13 +411,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 = beneath->find_thread (ptid);
   if (thread == NULL || thread->state == THREAD_EXITED)
-    add_thread (ptid);
+    add_thread (beneath, ptid);
 
   return ptid;
 }
@@ -435,7 +432,7 @@ bsd_uthread_target::resume (ptid_t ptid,
 bool
 bsd_uthread_target::thread_alive (ptid_t ptid)
 {
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
+  bfd_endian byte_order = gdbarch_byte_order (current_inferior ()->arch ());
   CORE_ADDR addr = ptid.tid ();
 
   if (addr != 0)
@@ -467,16 +464,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 = proc_target->find_thread (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);
@@ -484,7 +483,7 @@ bsd_uthread_target::update_thread_list (
 }
 
 /* Possible states a thread can be in.  */
-static const char *bsd_uthread_state[] =
+static const char * const bsd_uthread_state[] =
 {
   "RUNNING",
   "SIGTHREAD",
@@ -514,7 +513,7 @@ static const char *bsd_uthread_state[] =
 const char *
 bsd_uthread_target::extra_thread_info (thread_info *info)
 {
-  enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch ());
+  bfd_endian byte_order = gdbarch_byte_order (current_inferior ()->arch ());
   CORE_ADDR addr = info->ptid.tid ();
 
   if (addr != 0)
@@ -534,18 +533,19 @@ std::string
 bsd_uthread_target::pid_to_str (ptid_t ptid)
 {
   if (ptid.tid () != 0)
-    return string_printf ("process %d, thread 0x%lx",
-			  ptid.pid (), ptid.tid ());
+    return string_printf ("process %d, thread 0x%s",
+			  ptid.pid (),
+			  phex_nz (ptid.tid ()));
 
   return normal_pid_to_str (ptid);
 }
 
-void
-_initialize_bsd_uthread (void)
+INIT_GDB_FILE (bsd_uthread)
 {
-  bsd_uthread_data = gdbarch_data_register_pre_init (bsd_uthread_init);
-
-  gdb::observers::inferior_created.attach (bsd_uthread_inferior_created);
-  gdb::observers::solib_loaded.attach (bsd_uthread_solib_loaded);
-  gdb::observers::solib_unloaded.attach (bsd_uthread_solib_unloaded);
+  gdb::observers::inferior_created.attach (bsd_uthread_inferior_created,
+					   "bsd-uthread");
+  gdb::observers::solib_loaded.attach (bsd_uthread_solib_loaded,
+				       "bsd-uthread");
+  gdb::observers::solib_unloaded.attach (bsd_uthread_solib_unloaded,
+					 "bsd-uthread");
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bsd-uthread.h ./gdb/bsd-uthread.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bsd-uthread.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/bsd-uthread.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* BSD user-level threads support.
 
-   Copyright (C) 2005-2020 Free Software Foundation, Inc.
+   Copyright (C) 2005-2025 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/>.  */
 
-#ifndef BSD_UTHREAD_H
-#define BSD_UTHREAD_H 1
+#ifndef GDB_BSD_UTHREAD_H
+#define GDB_BSD_UTHREAD_H
 
 /* Set the function that supplies registers for an inactive thread for
    architecture GDBARCH to SUPPLY_UTHREAD.  */
@@ -35,4 +35,4 @@ extern void bsd_uthread_set_collect_uthr
 			     void (*collect_uthread) (const struct regcache *,
 						      int, CORE_ADDR));
 
-#endif /* bsd-uthread.h */
+#endif /* GDB_BSD_UTHREAD_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.20200303/gdb/btrace.c ./gdb/btrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/btrace.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/btrace.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>
 
@@ -19,7 +19,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/>.  */
 
-#include "defs.h"
 #include "btrace.h"
 #include "gdbthread.h"
 #include "inferior.h"
@@ -29,11 +28,11 @@
 #include "disasm.h"
 #include "source.h"
 #include "filenames.h"
-#include "xml-support.h"
 #include "regcache.h"
 #include "gdbsupport/rsp-low.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "cli/cli-utils.h"
+#include "extension.h"
 #include "gdbarch.h"
 
 /* For maintenance commands.  */
@@ -42,6 +41,7 @@
 #include <inttypes.h>
 #include <ctype.h>
 #include <algorithm>
+#include <string>
 
 /* Command lists for btrace maintenance commands.  */
 static struct cmd_list_element *maint_btrace_cmdlist;
@@ -62,8 +62,8 @@ static void btrace_add_pc (struct thread
   do									\
     {									\
       if (record_debug != 0)						\
-        fprintf_unfiltered (gdb_stdlog,					\
-			    "[btrace] " msg "\n", ##args);		\
+	gdb_printf (gdb_stdlog,						\
+		    "[btrace] " msg "\n", ##args);			\
     }									\
   while (0)
 
@@ -102,7 +102,7 @@ ftrace_print_filename (const struct btra
   sym = bfun->sym;
 
   if (sym != NULL)
-    filename = symtab_to_filename_for_display (symbol_symtab (sym));
+    filename = symtab_to_filename_for_display (sym->symtab ());
   else
     filename = "<unknown>";
 
@@ -210,8 +210,8 @@ ftrace_function_switched (const struct b
 	return 1;
 
       /* Check the location of those functions, as well.  */
-      bfname = symtab_to_fullname (symbol_symtab (sym));
-      fname = symtab_to_fullname (symbol_symtab (fun));
+      bfname = symtab_to_fullname (sym->symtab ());
+      fname = symtab_to_fullname (fun->symtab ());
       if (filename_cmp (fname, bfname) != 0)
 	return 1;
     }
@@ -256,8 +256,8 @@ ftrace_new_function (struct btrace_threa
       insn_offset = prev->insn_offset + ftrace_call_num_insn (prev);
     }
 
-  btinfo->functions.emplace_back (mfun, fun, number, insn_offset, level);
-  return &btinfo->functions.back ();
+  return &btinfo->functions.emplace_back (mfun, fun, number, insn_offset,
+					  level);
 }
 
 /* Update the UP field of a function segment.  */
@@ -265,7 +265,7 @@ ftrace_new_function (struct btrace_threa
 static void
 ftrace_update_caller (struct btrace_function *bfun,
 		      struct btrace_function *caller,
-		      enum btrace_function_flag flags)
+		      btrace_function_flags flags)
 {
   if (bfun->up != 0)
     ftrace_debug (bfun, "updating caller");
@@ -283,7 +283,7 @@ static void
 ftrace_fixup_caller (struct btrace_thread_info *btinfo,
 		     struct btrace_function *bfun,
 		     struct btrace_function *caller,
-		     enum btrace_function_flag flags)
+		     btrace_function_flags flags)
 {
   unsigned int prev, next;
 
@@ -547,32 +547,39 @@ ftrace_new_gap (struct btrace_thread_inf
    Return the chronologically latest function segment, never NULL.  */
 
 static struct btrace_function *
-ftrace_update_function (struct btrace_thread_info *btinfo, CORE_ADDR pc)
+ftrace_update_function (struct btrace_thread_info *btinfo,
+			std::optional<CORE_ADDR> pc)
 {
-  struct bound_minimal_symbol bmfun;
-  struct minimal_symbol *mfun;
-  struct symbol *fun;
-  struct btrace_function *bfun;
+  struct minimal_symbol *mfun = nullptr;
+  struct symbol *fun = nullptr;
 
   /* Try to determine the function we're in.  We use both types of symbols
      to avoid surprises when we sometimes get a full symbol and sometimes
      only a minimal symbol.  */
-  fun = find_pc_function (pc);
-  bmfun = lookup_minimal_symbol_by_pc (pc);
-  mfun = bmfun.minsym;
+  if (pc.has_value ())
+    {
+      fun = find_pc_function (*pc);
+      bound_minimal_symbol bmfun = lookup_minimal_symbol_by_pc (*pc);
+      mfun = bmfun.minsym;
 
-  if (fun == NULL && mfun == NULL)
-    DEBUG_FTRACE ("no symbol at %s", core_addr_to_string_nz (pc));
+      if (fun == nullptr && mfun == nullptr)
+	DEBUG_FTRACE ("no symbol at %s", core_addr_to_string_nz (*pc));
+    }
 
   /* If we didn't have a function, we create one.  */
   if (btinfo->functions.empty ())
     return ftrace_new_function (btinfo, mfun, fun);
 
   /* If we had a gap before, we create a function.  */
-  bfun = &btinfo->functions.back ();
+  btrace_function *bfun = &btinfo->functions.back ();
   if (bfun->errcode != 0)
     return ftrace_new_function (btinfo, mfun, fun);
 
+  /* If there is no valid PC, which can happen for events with a
+     suppressed IP, we can't do more than return the last bfun.  */
+  if (!pc.has_value ())
+    return bfun;
+
   /* Check the last instruction, if we have one.
      We do this check first, since it allows us to fill in the call stack
      links in addition to the normal flow links.  */
@@ -606,7 +613,7 @@ ftrace_update_function (struct btrace_th
 
 	case BTRACE_INSN_CALL:
 	  /* Ignore calls to the next instruction.  They are used for PIC.  */
-	  if (last->pc + last->size == pc)
+	  if (last->pc + last->size == *pc)
 	    break;
 
 	  return ftrace_new_call (btinfo, mfun, fun);
@@ -615,10 +622,10 @@ ftrace_update_function (struct btrace_th
 	  {
 	    CORE_ADDR start;
 
-	    start = get_pc_function_start (pc);
+	    start = get_pc_function_start (*pc);
 
 	    /* A jump to the start of a function is (typically) a tail call.  */
-	    if (start == pc)
+	    if (start == *pc)
 	      return ftrace_new_tailcall (btinfo, mfun, fun);
 
 	    /* Some versions of _Unwind_RaiseException use an indirect
@@ -643,6 +650,18 @@ ftrace_update_function (struct btrace_th
 
 	    break;
 	  }
+
+	case BTRACE_INSN_AUX:
+	  /* An aux insn couldn't have switched the function.  But the
+	     segment might not have had a symbol name resolved yet, as events
+	     might not have an IP.  Use the current IP in that case and update
+	     the name.  */
+	  if (bfun->sym == nullptr && bfun->msym == nullptr)
+	    {
+	      bfun->sym = fun;
+	      bfun->msym = mfun;
+	    }
+	  break;
 	}
     }
 
@@ -667,6 +686,11 @@ ftrace_update_insns (struct btrace_funct
 {
   bfun->insn.push_back (insn);
 
+  if (insn.iclass == BTRACE_INSN_AUX)
+    bfun->flags |= BFUN_CONTAINS_AUX;
+  else
+    bfun->flags |= BFUN_CONTAINS_NON_AUX;
+
   if (record_debug > 1)
     ftrace_debug (bfun, "update insn");
 }
@@ -1052,12 +1076,17 @@ btrace_compute_ftrace_bts (struct thread
 			   const struct btrace_data_bts *btrace,
 			   std::vector<unsigned int> &gaps)
 {
+ /* We may end up doing target calls that require the current thread to be TP,
+    for example reading memory through gdb_insn_length.  Make sure TP is the
+    current thread.  */
+  scoped_restore_current_thread restore_thread;
+  switch_to_thread (tp);
+
   struct btrace_thread_info *btinfo;
-  struct gdbarch *gdbarch;
   unsigned int blk;
   int level;
 
-  gdbarch = target_gdbarch ();
+  gdbarch *gdbarch = current_inferior ()->arch ();
   btinfo = &tp->btrace;
   blk = btrace->blocks->size ();
 
@@ -1094,7 +1123,8 @@ btrace_compute_ftrace_bts (struct thread
 	      break;
 	    }
 
-	  bfun = ftrace_update_function (btinfo, pc);
+	  bfun = ftrace_update_function (btinfo,
+					 std::make_optional<CORE_ADDR> (pc));
 
 	  /* Maintain the function level offset.
 	     For all but the last block, we do it here.  */
@@ -1193,11 +1223,69 @@ pt_btrace_insn_flags (const struct pt_in
 static btrace_insn
 pt_btrace_insn (const struct pt_insn &insn)
 {
-  return {(CORE_ADDR) insn.ip, (gdb_byte) insn.size,
+  return {{static_cast<CORE_ADDR> (insn.ip)},
+	  static_cast<gdb_byte> (insn.size),
 	  pt_reclassify_insn (insn.iclass),
 	  pt_btrace_insn_flags (insn)};
 }
 
+#if defined (HAVE_PT_INSN_EVENT)
+/* Helper for events that will result in an aux_insn.  */
+
+static void
+handle_pt_aux_insn (btrace_thread_info *btinfo, std::string &aux_str,
+		    std::optional<CORE_ADDR> pc)
+{
+  btinfo->aux_data.emplace_back (std::move (aux_str));
+  struct btrace_function *bfun = ftrace_update_function (btinfo, pc);
+
+  btrace_insn insn {{btinfo->aux_data.size () - 1}, 0,
+		    BTRACE_INSN_AUX, 0};
+
+  ftrace_update_insns (bfun, insn);
+}
+
+/* Check if the recording contains real instructions and not only auxiliary
+   instructions since the last gap (or since the beginning).  */
+
+static bool
+ftrace_contains_non_aux_since_last_gap (const btrace_thread_info *btinfo)
+{
+  const std::vector<btrace_function> &functions = btinfo->functions;
+
+  std::vector<btrace_function>::const_reverse_iterator rit;
+  for (rit = functions.crbegin (); rit != functions.crend (); ++rit)
+    {
+      if (rit->errcode != 0)
+	return false;
+
+      if ((rit->flags & BFUN_CONTAINS_NON_AUX) != 0)
+	return true;
+    }
+
+  return false;
+}
+#endif /* defined (HAVE_PT_INSN_EVENT) */
+
+#if (LIBIPT_VERSION >= 0x201)
+/* Translate an interrupt vector to a mnemonic string as defined for x86.
+   Returns nullptr if there is none.  */
+
+static const char *
+decode_interrupt_vector (const uint8_t vector)
+{
+  static const char *mnemonic[]
+    = { "#de", "#db", nullptr, "#bp", "#of", "#br", "#ud", "#nm",
+	"#df", "#mf", "#ts", "#np", "#ss", "#gp", "#pf", nullptr,
+	"#mf", "#ac", "#mc", "#xm", "#ve", "#cp" };
+
+  if (vector < (sizeof (mnemonic) / sizeof (mnemonic[0])))
+    return mnemonic[vector];
+
+  return nullptr;
+}
+#endif /* defined (LIBIPT_VERSION >= 0x201) */
+
 /* Handle instruction decode events (libipt-v2).  */
 
 static int
@@ -1208,9 +1296,9 @@ handle_pt_insn_events (struct btrace_thr
 #if defined (HAVE_PT_INSN_EVENT)
   while (status & pts_event_pending)
     {
-      struct btrace_function *bfun;
       struct pt_event event;
       uint64_t offset;
+      std::optional<CORE_ADDR> pc;
 
       status = pt_insn_event (decoder, &event, sizeof (event));
       if (status < 0)
@@ -1222,27 +1310,294 @@ handle_pt_insn_events (struct btrace_thr
 	  break;
 
 	case ptev_enabled:
-	  if (event.variant.enabled.resumed == 0 && !btinfo->functions.empty ())
-	    {
-	      bfun = ftrace_new_gap (btinfo, BDE_PT_DISABLED, gaps);
+	  {
+	    if (event.status_update != 0)
+	      break;
 
-	      pt_insn_get_offset (decoder, &offset);
+	    /* Only create a new gap if there are non-aux instructions in
+	       the trace since the last gap.  We could be at the beginning
+	       of the recording and could already have handled one or more
+	       events, like ptev_iret, that created aux insns.  In that
+	       case we don't want to create a gap or print a warning.  */
+	    if (event.variant.enabled.resumed == 0
+		&& ftrace_contains_non_aux_since_last_gap (btinfo))
+	      {
+		struct btrace_function *bfun
+		  = ftrace_new_gap (btinfo, BDE_PT_NON_CONTIGUOUS, gaps);
 
-	      warning (_("Non-contiguous trace at instruction %u (offset = 0x%"
-			 PRIx64 ")."), bfun->insn_offset - 1, offset);
-	    }
+		pt_insn_get_offset (decoder, &offset);
 
-	  break;
+		warning
+		  (_("Non-contiguous trace at instruction %u (offset = 0x%"
+		     PRIx64 ")."), bfun->insn_offset - 1, offset);
+	      }
+
+	    break;
+	  }
 
 	case ptev_overflow:
-	  bfun = ftrace_new_gap (btinfo, BDE_PT_OVERFLOW, gaps);
+	  {
+	    struct btrace_function *bfun
+	      = ftrace_new_gap (btinfo, BDE_PT_OVERFLOW, gaps);
 
-	  pt_insn_get_offset (decoder, &offset);
+	    pt_insn_get_offset (decoder, &offset);
 
-	  warning (_("Overflow at instruction %u (offset = 0x%" PRIx64 ")."),
-		   bfun->insn_offset - 1, offset);
+	    warning (_("Overflow at instruction %u (offset = 0x%" PRIx64 ")."),
+		     bfun->insn_offset - 1, offset);
 
-	  break;
+	    break;
+	  }
+#if defined (HAVE_STRUCT_PT_EVENT_VARIANT_PTWRITE)
+	case ptev_ptwrite:
+	  {
+	    std::optional<std::string> ptw_string;
+
+	    /* Lookup the PC if available.  The event often doesn't provide
+	       one, so we look into the last function segment as well.
+	       Looking further back makes limited sense for ptwrite.  */
+	    if (event.ip_suppressed == 0)
+	      pc = event.variant.ptwrite.ip;
+	    else if (!btinfo->functions.empty ())
+	      {
+		std::vector<btrace_insn> &insns
+		  = btinfo->functions.back ().insn;
+		for (auto insn = insns.rbegin (); insn != insns.rend ();
+		     ++insn)
+		  {
+		    switch (insn->iclass)
+		    {
+		    case BTRACE_INSN_AUX:
+		      continue;
+
+		    case BTRACE_INSN_OTHER:
+		    case BTRACE_INSN_CALL:
+		    case BTRACE_INSN_RETURN:
+		    case BTRACE_INSN_JUMP:
+		      pc = insn->pc;
+		      break;
+		    /* No default to rely on compiler warnings.  */
+		    }
+		    break;
+		  }
+	      }
+
+	    if (!pc.has_value ())
+	      warning (_("Failed to determine the PC for ptwrite."));
+
+
+	    if (btinfo->ptw_callback_fun != nullptr)
+	      ptw_string
+		= btinfo->ptw_callback_fun (event.variant.ptwrite.payload,
+					    pc, btinfo->ptw_context);
+
+	    if (ptw_string.has_value () && (*ptw_string).empty ())
+	      continue;
+
+	    if (!ptw_string.has_value ())
+	      *ptw_string = hex_string (event.variant.ptwrite.payload);
+
+	    handle_pt_aux_insn (btinfo, *ptw_string, pc);
+
+	    break;
+	  }
+#endif /* defined (HAVE_STRUCT_PT_EVENT_VARIANT_PTWRITE) */
+
+#if (LIBIPT_VERSION >= 0x201)
+	case ptev_interrupt:
+	  {
+	    std::string aux_string = std::string (_("interrupt: vector = "))
+	      + hex_string (event.variant.interrupt.vector);
+
+	    const char *decoded
+	      = decode_interrupt_vector (event.variant.interrupt.vector);
+	    if (decoded != nullptr)
+	      aux_string += std::string (" (") + decoded + ")";
+
+	    if (event.variant.interrupt.has_cr2 != 0)
+	      {
+		aux_string += std::string (", cr2 = ")
+		  + hex_string (event.variant.interrupt.cr2);
+	      }
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.interrupt.ip;
+		aux_string += std::string (", ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_iret:
+	  {
+	    std::string aux_string = std::string (_("iret"));
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.iret.ip;
+		aux_string += std::string (": ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_smi:
+	  {
+	    std::string aux_string = std::string (_("smi"));
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.smi.ip;
+		aux_string += std::string (": ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_rsm:
+	  {
+	    std::string aux_string = std::string (_("rsm"));
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.rsm.ip;
+		aux_string += std::string (": ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_sipi:
+	  {
+	    std::string aux_string = std::string (_("sipi: vector = "))
+	      + hex_string (event.variant.sipi.vector);
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_init:
+	  {
+	    std::string aux_string = std::string (_("init"));
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.init.ip;
+		aux_string += std::string (": ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_vmentry:
+	  {
+	    std::string aux_string = std::string (_("vmentry"));
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.vmentry.ip;
+		aux_string += std::string (": ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_vmexit:
+	  {
+	    std::string aux_string = std::string (_("vmexit"));
+
+	    if (event.variant.vmexit.has_vector != 0
+		|| event.variant.vmexit.has_vmxr != 0
+		|| event.variant.vmexit.has_vmxq != 0
+		|| event.ip_suppressed != 0)
+	      aux_string += std::string (":");
+
+	    if (event.variant.vmexit.has_vector != 0)
+	      {
+		aux_string += std::string (_(" vector = "))
+			      + hex_string (event.variant.vmexit.vector);
+
+		const char* decoded = decode_interrupt_vector
+					(event.variant.vmexit.vector);
+		if (decoded != nullptr)
+		  aux_string += std::string (" (") + decoded + ")";
+	      }
+
+	    if (event.variant.vmexit.has_vmxr != 0)
+	      {
+		std::string separator = aux_string.back () == ':' ? "" : ",";
+		aux_string += separator + std::string (" vmxr = ")
+			      + hex_string (event.variant.vmexit.vmxr);
+	      }
+
+	    if (event.variant.vmexit.has_vmxq != 0)
+	      {
+		std::string separator = aux_string.back () == ':' ? "" : ",";
+		aux_string += separator + std::string (" vmxq = ")
+			      + hex_string (event.variant.vmexit.vmxq);
+	      }
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.vmexit.ip;
+		std::string separator = aux_string.back () == ':' ? "" : ",";
+		aux_string += separator + std::string (" ip = ")
+			      + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_shutdown:
+	  {
+	    std::string aux_string = std::string (_("shutdown"));
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.shutdown.ip;
+		aux_string += std::string (": ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_uintr:
+	  {
+	    std::string aux_string = std::string (_("uintr: vector = "))
+				     + hex_string (event.variant.uintr.vector);
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.uintr.ip;
+		aux_string += std::string (", ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+
+	case ptev_uiret:
+	  {
+	    std::string aux_string = std::string (_("uiret"));
+
+	    if (event.ip_suppressed == 0)
+	      {
+		pc = event.variant.uiret.ip;
+		aux_string += std::string (": ip = ") + hex_string (*pc);
+	      }
+
+	    handle_pt_aux_insn (btinfo, aux_string, pc);
+	    break;
+	  }
+#endif /* defined (LIBIPT_VERSION >= 0x201) */
 	}
     }
 #endif /* defined (HAVE_PT_INSN_EVENT) */
@@ -1269,7 +1624,7 @@ handle_pt_insn_event_flags (struct btrac
       struct btrace_function *bfun;
       uint64_t offset;
 
-      bfun = ftrace_new_gap (btinfo, BDE_PT_DISABLED, gaps);
+      bfun = ftrace_new_gap (btinfo, BDE_PT_NON_CONTIGUOUS, gaps);
 
       pt_insn_get_offset (decoder, &offset);
 
@@ -1308,6 +1663,9 @@ ftrace_add_pt (struct btrace_thread_info
   uint64_t offset;
   int status;
 
+  /* Register the ptwrite filter.  */
+  apply_ext_lang_ptwrite_filter (btinfo);
+
   for (;;)
     {
       struct pt_insn insn;
@@ -1335,7 +1693,9 @@ ftrace_add_pt (struct btrace_thread_info
 	  /* Handle events indicated by flags in INSN.  */
 	  handle_pt_insn_event_flags (btinfo, decoder, insn, gaps);
 
-	  bfun = ftrace_update_function (btinfo, insn.ip);
+	  bfun
+	    = ftrace_update_function (btinfo,
+				      std::make_optional<CORE_ADDR> (insn.ip));
 
 	  /* Maintain the function level offset.  */
 	  *plevel = std::min (*plevel, bfun->level);
@@ -1424,6 +1784,12 @@ btrace_compute_ftrace_pt (struct thread_
 			  const struct btrace_data_pt *btrace,
 			  std::vector<unsigned int> &gaps)
 {
+ /* We may end up doing target calls that require the current thread to be TP,
+    for example reading memory through btrace_pt_readmem_callback.  Make sure
+    TP is the current thread.  */
+  scoped_restore_current_thread restore_thread;
+  switch_to_thread (tp);
+
   struct btrace_thread_info *btinfo;
   struct pt_insn_decoder *decoder;
   struct pt_config config;
@@ -1497,7 +1863,7 @@ btrace_compute_ftrace_pt (struct thread_
 			  const struct btrace_data_pt *btrace,
 			  std::vector<unsigned int> &gaps)
 {
-  internal_error (__FILE__, __LINE__, _("Unexpected branch trace format."));
+  internal_error (_("Unexpected branch trace format."));
 }
 
 #endif /* defined (HAVE_LIBIPT)  */
@@ -1533,7 +1899,7 @@ btrace_compute_ftrace_1 (struct thread_i
       return;
     }
 
-  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
+  internal_error (_("Unknown branch trace format."));
 }
 
 static void
@@ -1592,7 +1958,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)
@@ -1600,13 +1967,13 @@ btrace_enable (struct thread_info *tp, c
 #endif /* !defined (HAVE_LIBIPT) */
 
   DEBUG ("enable thread %s (%s)", print_thread_id (tp),
-	 target_pid_to_str (tp->ptid).c_str ());
+	 tp->ptid.to_string ().c_str ());
 
-  tp->btrace.target = target_enable_btrace (tp->ptid, conf);
+  tp->btrace.target = target_enable_btrace (tp, 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,10 +2018,11 @@ 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 ());
+	 tp->ptid.to_string ().c_str ());
 
   target_disable_btrace (btp->target);
   btp->target = NULL;
@@ -1673,7 +2041,7 @@ btrace_teardown (struct thread_info *tp)
     return;
 
   DEBUG ("teardown thread %s (%s)", print_thread_id (tp),
-	 target_pid_to_str (tp->ptid).c_str ());
+	 tp->ptid.to_string ().c_str ());
 
   target_teardown_btrace (btp->target);
   btp->target = NULL;
@@ -1768,7 +2136,7 @@ btrace_stitch_bts (struct btrace_data_bt
 /* Adjust the block trace in order to stitch old and new trace together.
    BTRACE is the new delta trace between the last and the current stop.
    TP is the traced thread.
-   May modifx BTRACE as well as the existing trace in TP.
+   May modify BTRACE as well as the existing trace in TP.
    Return 0 on success, -1 otherwise.  */
 
 static int
@@ -1791,7 +2159,7 @@ btrace_stitch_trace (struct btrace_data
       return -1;
     }
 
-  internal_error (__FILE__, __LINE__, _("Unkown branch trace format."));
+  internal_error (_("Unknown branch trace format."));
 }
 
 /* Clear the branch trace histories in BTINFO.  */
@@ -1806,6 +2174,8 @@ btrace_clear_history (struct btrace_thre
   btinfo->insn_history = NULL;
   btinfo->call_history = NULL;
   btinfo->replay = NULL;
+
+  btinfo->aux_data.clear ();
 }
 
 /* Clear the branch trace maintenance histories in BTINFO.  */
@@ -1863,8 +2233,8 @@ btrace_decode_error (enum btrace_format
 	case BDE_PT_USER_QUIT:
 	  return _("trace decode cancelled");
 
-	case BDE_PT_DISABLED:
-	  return _("disabled");
+	case BDE_PT_NON_CONTIGUOUS:
+	  return _("non-contiguous");
 
 	case BDE_PT_OVERFLOW:
 	  return _("overflow");
@@ -1895,7 +2265,7 @@ btrace_fetch (struct thread_info *tp, co
   int errcode;
 
   DEBUG ("fetch thread %s (%s)", print_thread_id (tp),
-	 target_pid_to_str (tp->ptid).c_str ());
+	 tp->ptid.to_string ().c_str ());
 
   btinfo = &tp->btrace;
   tinfo = btinfo->target;
@@ -1908,11 +2278,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));
@@ -1971,7 +2342,7 @@ btrace_clear (struct thread_info *tp)
   struct btrace_thread_info *btinfo;
 
   DEBUG ("clear thread %s (%s)", print_thread_id (tp),
-	 target_pid_to_str (tp->ptid).c_str ());
+	 tp->ptid.to_string ().c_str ());
 
   /* Make sure btrace frames that may hold a pointer into the branch
      trace data are destroyed.  */
@@ -1999,323 +2370,6 @@ btrace_free_objfile (struct objfile *obj
     btrace_clear (tp);
 }
 
-#if defined (HAVE_LIBEXPAT)
-
-/* Check the btrace document version.  */
-
-static void
-check_xml_btrace_version (struct gdb_xml_parser *parser,
-			  const struct gdb_xml_element *element,
-			  void *user_data,
-			  std::vector<gdb_xml_value> &attributes)
-{
-  const char *version
-    = (const char *) xml_find_attribute (attributes, "version")->value.get ();
-
-  if (strcmp (version, "1.0") != 0)
-    gdb_xml_error (parser, _("Unsupported btrace version: \"%s\""), version);
-}
-
-/* Parse a btrace "block" xml record.  */
-
-static void
-parse_xml_btrace_block (struct gdb_xml_parser *parser,
-			const struct gdb_xml_element *element,
-			void *user_data,
-			std::vector<gdb_xml_value> &attributes)
-{
-  struct btrace_data *btrace;
-  ULONGEST *begin, *end;
-
-  btrace = (struct btrace_data *) user_data;
-
-  switch (btrace->format)
-    {
-    case BTRACE_FORMAT_BTS:
-      break;
-
-    case BTRACE_FORMAT_NONE:
-      btrace->format = BTRACE_FORMAT_BTS;
-      btrace->variant.bts.blocks = new std::vector<btrace_block>;
-      break;
-
-    default:
-      gdb_xml_error (parser, _("Btrace format error."));
-    }
-
-  begin = (ULONGEST *) xml_find_attribute (attributes, "begin")->value.get ();
-  end = (ULONGEST *) xml_find_attribute (attributes, "end")->value.get ();
-  btrace->variant.bts.blocks->emplace_back (*begin, *end);
-}
-
-/* Parse a "raw" xml record.  */
-
-static void
-parse_xml_raw (struct gdb_xml_parser *parser, const char *body_text,
-	       gdb_byte **pdata, size_t *psize)
-{
-  gdb_byte *bin;
-  size_t len, size;
-
-  len = strlen (body_text);
-  if (len % 2 != 0)
-    gdb_xml_error (parser, _("Bad raw data size."));
-
-  size = len / 2;
-
-  gdb::unique_xmalloc_ptr<gdb_byte> data ((gdb_byte *) xmalloc (size));
-  bin = data.get ();
-
-  /* We use hex encoding - see gdbsupport/rsp-low.h.  */
-  while (len > 0)
-    {
-      char hi, lo;
-
-      hi = *body_text++;
-      lo = *body_text++;
-
-      if (hi == 0 || lo == 0)
-	gdb_xml_error (parser, _("Bad hex encoding."));
-
-      *bin++ = fromhex (hi) * 16 + fromhex (lo);
-      len -= 2;
-    }
-
-  *pdata = data.release ();
-  *psize = size;
-}
-
-/* Parse a btrace pt-config "cpu" xml record.  */
-
-static void
-parse_xml_btrace_pt_config_cpu (struct gdb_xml_parser *parser,
-				const struct gdb_xml_element *element,
-				void *user_data,
-				std::vector<gdb_xml_value> &attributes)
-{
-  struct btrace_data *btrace;
-  const char *vendor;
-  ULONGEST *family, *model, *stepping;
-
-  vendor =
-    (const char *) xml_find_attribute (attributes, "vendor")->value.get ();
-  family
-    = (ULONGEST *) xml_find_attribute (attributes, "family")->value.get ();
-  model
-    = (ULONGEST *) xml_find_attribute (attributes, "model")->value.get ();
-  stepping
-    = (ULONGEST *) xml_find_attribute (attributes, "stepping")->value.get ();
-
-  btrace = (struct btrace_data *) user_data;
-
-  if (strcmp (vendor, "GenuineIntel") == 0)
-    btrace->variant.pt.config.cpu.vendor = CV_INTEL;
-
-  btrace->variant.pt.config.cpu.family = *family;
-  btrace->variant.pt.config.cpu.model = *model;
-  btrace->variant.pt.config.cpu.stepping = *stepping;
-}
-
-/* Parse a btrace pt "raw" xml record.  */
-
-static void
-parse_xml_btrace_pt_raw (struct gdb_xml_parser *parser,
-			 const struct gdb_xml_element *element,
-			 void *user_data, const char *body_text)
-{
-  struct btrace_data *btrace;
-
-  btrace = (struct btrace_data *) user_data;
-  parse_xml_raw (parser, body_text, &btrace->variant.pt.data,
-		 &btrace->variant.pt.size);
-}
-
-/* Parse a btrace "pt" xml record.  */
-
-static void
-parse_xml_btrace_pt (struct gdb_xml_parser *parser,
-		     const struct gdb_xml_element *element,
-		     void *user_data,
-		     std::vector<gdb_xml_value> &attributes)
-{
-  struct btrace_data *btrace;
-
-  btrace = (struct btrace_data *) user_data;
-  btrace->format = BTRACE_FORMAT_PT;
-  btrace->variant.pt.config.cpu.vendor = CV_UNKNOWN;
-  btrace->variant.pt.data = NULL;
-  btrace->variant.pt.size = 0;
-}
-
-static const struct gdb_xml_attribute block_attributes[] = {
-  { "begin", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL },
-  { "end", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL },
-  { NULL, GDB_XML_AF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_attribute btrace_pt_config_cpu_attributes[] = {
-  { "vendor", GDB_XML_AF_NONE, NULL, NULL },
-  { "family", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL },
-  { "model", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL },
-  { "stepping", GDB_XML_AF_NONE, gdb_xml_parse_attr_ulongest, NULL },
-  { NULL, GDB_XML_AF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_element btrace_pt_config_children[] = {
-  { "cpu", btrace_pt_config_cpu_attributes, NULL, GDB_XML_EF_OPTIONAL,
-    parse_xml_btrace_pt_config_cpu, NULL },
-  { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_element btrace_pt_children[] = {
-  { "pt-config", NULL, btrace_pt_config_children, GDB_XML_EF_OPTIONAL, NULL,
-    NULL },
-  { "raw", NULL, NULL, GDB_XML_EF_OPTIONAL, NULL, parse_xml_btrace_pt_raw },
-  { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_attribute btrace_attributes[] = {
-  { "version", GDB_XML_AF_NONE, NULL, NULL },
-  { NULL, GDB_XML_AF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_element btrace_children[] = {
-  { "block", block_attributes, NULL,
-    GDB_XML_EF_REPEATABLE | GDB_XML_EF_OPTIONAL, parse_xml_btrace_block, NULL },
-  { "pt", NULL, btrace_pt_children, GDB_XML_EF_OPTIONAL, parse_xml_btrace_pt,
-    NULL },
-  { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_element btrace_elements[] = {
-  { "btrace", btrace_attributes, btrace_children, GDB_XML_EF_NONE,
-    check_xml_btrace_version, NULL },
-  { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
-};
-
-#endif /* defined (HAVE_LIBEXPAT) */
-
-/* See btrace.h.  */
-
-void
-parse_xml_btrace (struct btrace_data *btrace, const char *buffer)
-{
-#if defined (HAVE_LIBEXPAT)
-
-  int errcode;
-  btrace_data result;
-  result.format = BTRACE_FORMAT_NONE;
-
-  errcode = gdb_xml_parse_quick (_("btrace"), "btrace.dtd", btrace_elements,
-				 buffer, &result);
-  if (errcode != 0)
-    error (_("Error parsing branch trace."));
-
-  /* Keep parse results.  */
-  *btrace = std::move (result);
-
-#else  /* !defined (HAVE_LIBEXPAT) */
-
-  error (_("Cannot process branch trace.  XML support was disabled at "
-	   "compile time."));
-
-#endif  /* !defined (HAVE_LIBEXPAT) */
-}
-
-#if defined (HAVE_LIBEXPAT)
-
-/* Parse a btrace-conf "bts" xml record.  */
-
-static void
-parse_xml_btrace_conf_bts (struct gdb_xml_parser *parser,
-			  const struct gdb_xml_element *element,
-			  void *user_data,
-			  std::vector<gdb_xml_value> &attributes)
-{
-  struct btrace_config *conf;
-  struct gdb_xml_value *size;
-
-  conf = (struct btrace_config *) user_data;
-  conf->format = BTRACE_FORMAT_BTS;
-  conf->bts.size = 0;
-
-  size = xml_find_attribute (attributes, "size");
-  if (size != NULL)
-    conf->bts.size = (unsigned int) *(ULONGEST *) size->value.get ();
-}
-
-/* Parse a btrace-conf "pt" xml record.  */
-
-static void
-parse_xml_btrace_conf_pt (struct gdb_xml_parser *parser,
-			  const struct gdb_xml_element *element,
-			  void *user_data,
-			  std::vector<gdb_xml_value> &attributes)
-{
-  struct btrace_config *conf;
-  struct gdb_xml_value *size;
-
-  conf = (struct btrace_config *) user_data;
-  conf->format = BTRACE_FORMAT_PT;
-  conf->pt.size = 0;
-
-  size = xml_find_attribute (attributes, "size");
-  if (size != NULL)
-    conf->pt.size = (unsigned int) *(ULONGEST *) size->value.get ();
-}
-
-static const struct gdb_xml_attribute btrace_conf_pt_attributes[] = {
-  { "size", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL },
-  { NULL, GDB_XML_AF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_attribute btrace_conf_bts_attributes[] = {
-  { "size", GDB_XML_AF_OPTIONAL, gdb_xml_parse_attr_ulongest, NULL },
-  { NULL, GDB_XML_AF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_element btrace_conf_children[] = {
-  { "bts", btrace_conf_bts_attributes, NULL, GDB_XML_EF_OPTIONAL,
-    parse_xml_btrace_conf_bts, NULL },
-  { "pt", btrace_conf_pt_attributes, NULL, GDB_XML_EF_OPTIONAL,
-    parse_xml_btrace_conf_pt, NULL },
-  { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_attribute btrace_conf_attributes[] = {
-  { "version", GDB_XML_AF_NONE, NULL, NULL },
-  { NULL, GDB_XML_AF_NONE, NULL, NULL }
-};
-
-static const struct gdb_xml_element btrace_conf_elements[] = {
-  { "btrace-conf", btrace_conf_attributes, btrace_conf_children,
-    GDB_XML_EF_NONE, NULL, NULL },
-  { NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
-};
-
-#endif /* defined (HAVE_LIBEXPAT) */
-
-/* See btrace.h.  */
-
-void
-parse_xml_btrace_conf (struct btrace_config *conf, const char *xml)
-{
-#if defined (HAVE_LIBEXPAT)
-
-  int errcode;
-  errcode = gdb_xml_parse_quick (_("btrace-conf"), "btrace-conf.dtd",
-				 btrace_conf_elements, xml, conf);
-  if (errcode != 0)
-    error (_("Error parsing branch trace configuration."));
-
-#else  /* !defined (HAVE_LIBEXPAT) */
-
-  error (_("Cannot process the branch trace configuration.  XML support "
-	   "was disabled at compile time."));
-
-#endif  /* !defined (HAVE_LIBEXPAT) */
-}
-
 /* See btrace.h.  */
 
 const struct btrace_insn *
@@ -2834,123 +2888,144 @@ pt_print_packet (const struct pt_packet
   switch (packet->type)
     {
     default:
-      printf_unfiltered (("[??: %x]"), packet->type);
+      gdb_printf (("[??: %x]"), packet->type);
       break;
 
     case ppt_psb:
-      printf_unfiltered (("psb"));
+      gdb_printf (("psb"));
       break;
 
     case ppt_psbend:
-      printf_unfiltered (("psbend"));
+      gdb_printf (("psbend"));
       break;
 
     case ppt_pad:
-      printf_unfiltered (("pad"));
+      gdb_printf (("pad"));
       break;
 
     case ppt_tip:
-      printf_unfiltered (("tip %u: 0x%" PRIx64 ""),
-			 packet->payload.ip.ipc,
-			 packet->payload.ip.ip);
+      gdb_printf (("tip %u: 0x%" PRIx64 ""),
+		  packet->payload.ip.ipc,
+		  packet->payload.ip.ip);
       break;
 
     case ppt_tip_pge:
-      printf_unfiltered (("tip.pge %u: 0x%" PRIx64 ""),
-			 packet->payload.ip.ipc,
-			 packet->payload.ip.ip);
+      gdb_printf (("tip.pge %u: 0x%" PRIx64 ""),
+		  packet->payload.ip.ipc,
+		  packet->payload.ip.ip);
       break;
 
     case ppt_tip_pgd:
-      printf_unfiltered (("tip.pgd %u: 0x%" PRIx64 ""),
-			 packet->payload.ip.ipc,
-			 packet->payload.ip.ip);
+      gdb_printf (("tip.pgd %u: 0x%" PRIx64 ""),
+		  packet->payload.ip.ipc,
+		  packet->payload.ip.ip);
       break;
 
     case ppt_fup:
-      printf_unfiltered (("fup %u: 0x%" PRIx64 ""),
-			 packet->payload.ip.ipc,
-			 packet->payload.ip.ip);
+      gdb_printf (("fup %u: 0x%" PRIx64 ""),
+		  packet->payload.ip.ipc,
+		  packet->payload.ip.ip);
       break;
 
     case ppt_tnt_8:
-      printf_unfiltered (("tnt-8 %u: 0x%" PRIx64 ""),
-			 packet->payload.tnt.bit_size,
-			 packet->payload.tnt.payload);
+      gdb_printf (("tnt-8 %u: 0x%" PRIx64 ""),
+		  packet->payload.tnt.bit_size,
+		  packet->payload.tnt.payload);
       break;
 
     case ppt_tnt_64:
-      printf_unfiltered (("tnt-64 %u: 0x%" PRIx64 ""),
-			 packet->payload.tnt.bit_size,
-			 packet->payload.tnt.payload);
+      gdb_printf (("tnt-64 %u: 0x%" PRIx64 ""),
+		  packet->payload.tnt.bit_size,
+		  packet->payload.tnt.payload);
       break;
 
     case ppt_pip:
-      printf_unfiltered (("pip %" PRIx64 "%s"), packet->payload.pip.cr3,
-			 packet->payload.pip.nr ? (" nr") : (""));
+      gdb_printf (("pip %" PRIx64 "%s"), packet->payload.pip.cr3,
+		  packet->payload.pip.nr ? (" nr") : (""));
       break;
 
     case ppt_tsc:
-      printf_unfiltered (("tsc %" PRIx64 ""), packet->payload.tsc.tsc);
+      gdb_printf (("tsc %" PRIx64 ""), packet->payload.tsc.tsc);
       break;
 
     case ppt_cbr:
-      printf_unfiltered (("cbr %u"), packet->payload.cbr.ratio);
+      gdb_printf (("cbr %u"), packet->payload.cbr.ratio);
       break;
 
     case ppt_mode:
       switch (packet->payload.mode.leaf)
 	{
 	default:
-	  printf_unfiltered (("mode %u"), packet->payload.mode.leaf);
+	  gdb_printf (("mode %u"), packet->payload.mode.leaf);
 	  break;
 
 	case pt_mol_exec:
-	  printf_unfiltered (("mode.exec%s%s"),
-			     packet->payload.mode.bits.exec.csl
-			     ? (" cs.l") : (""),
-			     packet->payload.mode.bits.exec.csd
-			     ? (" cs.d") : (""));
+	  gdb_printf (("mode.exec%s%s"),
+		      packet->payload.mode.bits.exec.csl
+		      ? (" cs.l") : (""),
+		      packet->payload.mode.bits.exec.csd
+		      ? (" cs.d") : (""));
 	  break;
 
 	case pt_mol_tsx:
-	  printf_unfiltered (("mode.tsx%s%s"),
-			     packet->payload.mode.bits.tsx.intx
-			     ? (" intx") : (""),
-			     packet->payload.mode.bits.tsx.abrt
-			     ? (" abrt") : (""));
+	  gdb_printf (("mode.tsx%s%s"),
+		      packet->payload.mode.bits.tsx.intx
+		      ? (" intx") : (""),
+		      packet->payload.mode.bits.tsx.abrt
+		      ? (" abrt") : (""));
 	  break;
 	}
       break;
 
     case ppt_ovf:
-      printf_unfiltered (("ovf"));
+      gdb_printf (("ovf"));
       break;
 
     case ppt_stop:
-      printf_unfiltered (("stop"));
+      gdb_printf (("stop"));
       break;
 
     case ppt_vmcs:
-      printf_unfiltered (("vmcs %" PRIx64 ""), packet->payload.vmcs.base);
+      gdb_printf (("vmcs %" PRIx64 ""), packet->payload.vmcs.base);
       break;
 
     case ppt_tma:
-      printf_unfiltered (("tma %x %x"), packet->payload.tma.ctc,
-			 packet->payload.tma.fc);
+      gdb_printf (("tma %x %x"), packet->payload.tma.ctc,
+		  packet->payload.tma.fc);
       break;
 
     case ppt_mtc:
-      printf_unfiltered (("mtc %x"), packet->payload.mtc.ctc);
+      gdb_printf (("mtc %x"), packet->payload.mtc.ctc);
       break;
 
     case ppt_cyc:
-      printf_unfiltered (("cyc %" PRIx64 ""), packet->payload.cyc.value);
+      gdb_printf (("cyc %" PRIx64 ""), packet->payload.cyc.value);
       break;
 
     case ppt_mnt:
-      printf_unfiltered (("mnt %" PRIx64 ""), packet->payload.mnt.payload);
+      gdb_printf (("mnt %" PRIx64 ""), packet->payload.mnt.payload);
+      break;
+
+#if (LIBIPT_VERSION >= 0x200)
+    case ppt_ptw:
+      gdb_printf (("ptw %u: 0x%" PRIx64 "%s"), packet->payload.ptw.plc,
+		  packet->payload.ptw.payload,
+		  packet->payload.ptw.ip ? (" ip") : (""));
       break;
+#endif /* defined (LIBIPT_VERSION >= 0x200)  */
+
+#if (LIBIPT_VERSION >= 0x201)
+    case ppt_cfe:
+      gdb_printf (("cfe %u: 0x%x%s"), packet->payload.cfe.type,
+		  packet->payload.cfe.vector,
+		  packet->payload.cfe.ip ? (" ip") : (""));
+      break;
+
+    case ppt_evd:
+      gdb_printf (("evd %u: 0x%" PRIx64 ""), packet->payload.evd.type,
+		  packet->payload.evd.payload);
+      break;
+#endif /* defined (LIBIPT_VERSION >= 0x201)  */
     }
 }
 
@@ -3131,9 +3206,9 @@ btrace_maint_print_packets (struct btrac
 	  {
 	    const btrace_block &block = blocks.at (blk);
 
-	    printf_unfiltered ("%u\tbegin: %s, end: %s\n", blk,
-			       core_addr_to_string_nz (block.begin),
-			       core_addr_to_string_nz (block.end));
+	    gdb_printf ("%u\tbegin: %s, end: %s\n", blk,
+			core_addr_to_string_nz (block.begin),
+			core_addr_to_string_nz (block.end));
 	  }
 
 	btinfo->maint.variant.bts.packet_history.begin = begin;
@@ -3152,15 +3227,15 @@ btrace_maint_print_packets (struct btrac
 	  {
 	    const struct btrace_pt_packet &packet = packets.at (pkt);
 
-	    printf_unfiltered ("%u\t", pkt);
-	    printf_unfiltered ("0x%" PRIx64 "\t", packet.offset);
+	    gdb_printf ("%u\t", pkt);
+	    gdb_printf ("0x%" PRIx64 "\t", packet.offset);
 
 	    if (packet.errcode == pte_ok)
 	      pt_print_packet (&packet.packet);
 	    else
-	      printf_unfiltered ("[error: %s]", pt_errstr (packet.errcode));
+	      gdb_printf ("[error: %s]", pt_errstr (packet.errcode));
 
-	    printf_unfiltered ("\n");
+	    gdb_printf ("\n");
 	  }
 
 	btinfo->maint.variant.pt.packet_history.begin = begin;
@@ -3228,7 +3303,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 = current_inferior ()->find_thread (inferior_ptid);
   if (tp == NULL)
     error (_("No thread."));
 
@@ -3238,7 +3313,7 @@ maint_btrace_packet_history_cmd (const c
   btrace_maint_update_packets (btinfo, &begin, &end, &from, &to);
   if (begin == end)
     {
-      printf_unfiltered (_("No trace.\n"));
+      gdb_printf (_("No trace.\n"));
       return;
     }
 
@@ -3358,51 +3433,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
@@ -3425,8 +3455,8 @@ maint_info_btrace_cmd (const char *args,
   if (conf == NULL)
     error (_("No btrace configuration."));
 
-  printf_unfiltered (_("Format: %s.\n"),
-		     btrace_format_string (conf->format));
+  gdb_printf (_("Format: %s.\n"),
+	      btrace_format_string (conf->format));
 
   switch (conf->format)
     {
@@ -3434,8 +3464,8 @@ maint_info_btrace_cmd (const char *args,
       break;
 
     case BTRACE_FORMAT_BTS:
-      printf_unfiltered (_("Number of packets: %zu.\n"),
-			 btinfo->data.variant.bts.blocks->size ());
+      gdb_printf (_("Number of packets: %zu.\n"),
+		  btinfo->data.variant.bts.blocks->size ());
       break;
 
 #if defined (HAVE_LIBIPT)
@@ -3444,14 +3474,14 @@ maint_info_btrace_cmd (const char *args,
 	struct pt_version version;
 
 	version = pt_library_version ();
-	printf_unfiltered (_("Version: %u.%u.%u%s.\n"), version.major,
-			   version.minor, version.build,
-			   version.ext != NULL ? version.ext : "");
+	gdb_printf (_("Version: %u.%u.%u%s.\n"), version.major,
+		    version.minor, version.build,
+		    version.ext != NULL ? version.ext : "");
 
 	btrace_maint_update_pt_packets (btinfo);
-	printf_unfiltered (_("Number of packets: %zu.\n"),
-			   ((btinfo->maint.variant.pt.packets == nullptr)
-			    ? 0 : btinfo->maint.variant.pt.packets->size ()));
+	gdb_printf (_("Number of packets: %zu.\n"),
+		    ((btinfo->maint.variant.pt.packets == nullptr)
+		     ? 0 : btinfo->maint.variant.pt.packets->size ()));
       }
       break;
 #endif /* defined (HAVE_LIBIPT)  */
@@ -3465,42 +3495,36 @@ show_maint_btrace_pt_skip_pad  (struct u
 				  struct cmd_list_element *c,
 				  const char *value)
 {
-  fprintf_filtered (file, _("Skip PAD packets is %s.\n"), value);
+  gdb_printf (file, _("Skip PAD packets is %s.\n"), value);
 }
 
 
 /* Initialize btrace maintenance commands.  */
 
-void
-_initialize_btrace (void)
+INIT_GDB_FILE (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_prefix_cmd ("btrace", class_maintenance, maint_btrace_set_cmd, _("\
-Set branch tracing specific variables."),
-                  &maint_btrace_set_cmdlist, "maintenance set btrace ",
-                  0, &maintenance_set_cmdlist);
-
-  add_prefix_cmd ("pt", class_maintenance, maint_btrace_pt_set_cmd, _("\
-Set Intel Processor Trace specific variables."),
-                  &maint_btrace_pt_set_cmdlist, "maintenance set btrace pt ",
-                  0, &maint_btrace_set_cmdlist);
-
-  add_prefix_cmd ("btrace", class_maintenance, maint_btrace_show_cmd, _("\
-Show branch tracing specific variables."),
-                  &maint_btrace_show_cmdlist, "maintenance show btrace ",
-                  0, &maintenance_show_cmdlist);
-
-  add_prefix_cmd ("pt", class_maintenance, maint_btrace_pt_show_cmd, _("\
-Show Intel Processor Trace specific variables."),
-                  &maint_btrace_pt_show_cmdlist, "maintenance show btrace pt ",
-                  0, &maint_btrace_show_cmdlist);
+  add_basic_prefix_cmd ("btrace", class_maintenance,
+			_("Branch tracing maintenance commands."),
+			&maint_btrace_cmdlist, 0, &maintenancelist);
+
+  add_setshow_prefix_cmd ("btrace", class_maintenance,
+			  _("Set branch tracing specific variables."),
+			  _("Show branch tracing specific variables."),
+			  &maint_btrace_set_cmdlist,
+			  &maint_btrace_show_cmdlist,
+			  &maintenance_set_cmdlist,
+			  &maintenance_show_cmdlist);
+
+  add_setshow_prefix_cmd ("pt", class_maintenance,
+			  _("Set Intel Processor Trace specific variables."),
+			  _("Show Intel Processor Trace specific variables."),
+			  &maint_btrace_pt_set_cmdlist,
+			  &maint_btrace_pt_show_cmdlist,
+			  &maint_btrace_set_cmdlist,
+			  &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.20200303/gdb/btrace.h ./gdb/btrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/btrace.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/btrace.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    Contributed by Intel Corp. <markus.t.metzger@intel.com>.
 
@@ -19,15 +19,15 @@
    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 BTRACE_H
-#define BTRACE_H
+#ifndef GDB_BTRACE_H
+#define GDB_BTRACE_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.  */
 
 #include "gdbsupport/btrace-common.h"
-#include "target/waitstatus.h" /* For enum target_stop_reason.  */
+#include "target/waitstatus.h"
 #include "gdbsupport/enum-flags.h"
 
 #if defined (HAVE_LIBIPT)
@@ -35,6 +35,7 @@
 #endif
 
 #include <vector>
+#include <string>
 
 struct thread_info;
 struct btrace_function;
@@ -52,7 +53,10 @@ enum btrace_insn_class
   BTRACE_INSN_RETURN,
 
   /* The instruction is an unconditional jump.  */
-  BTRACE_INSN_JUMP
+  BTRACE_INSN_JUMP,
+
+  /* The instruction is a pseudo instruction containing auxiliary data.  */
+  BTRACE_INSN_AUX
 };
 
 /* Instruction flags.  */
@@ -68,8 +72,19 @@ DEF_ENUM_FLAGS_TYPE (enum btrace_insn_fl
    This represents a single instruction in a branch trace.  */
 struct btrace_insn
 {
-  /* The address of this instruction.  */
-  CORE_ADDR pc;
+  union
+  {
+    /* The address of this instruction.  Applies to btrace_insn with
+       iclass == BTRACE_INSN_OTHER or
+       iclass == BTRACE_INSN_CALL or
+       iclass == BTRACE_INSN_RETURN or
+       iclass == BTRACE_INSN_JUMP.  */
+    CORE_ADDR pc;
+
+    /* Index into btrace_info::aux_data.  Applies to btrace_insn with
+       iclass == BTRACE_INSN_AUX.  */
+    uint64_t aux_data_index;
+  };
 
   /* The size of this instruction in bytes.  */
   gdb_byte size;
@@ -91,7 +106,15 @@ enum btrace_function_flag
 
   /* The 'up' link points to a tail call.  This obviously only makes sense
      if bfun_up_links_to_ret is clear.  */
-  BFUN_UP_LINKS_TO_TAILCALL = (1 << 1)
+  BFUN_UP_LINKS_TO_TAILCALL = (1 << 1),
+
+  /* Indicates that at least one auxiliary instruction is in the current
+     function segment.  */
+  BFUN_CONTAINS_AUX = (1 << 2),
+
+  /* Indicates that at least one instruction not of type BTRACE_INSN_AUX
+     is in the current function segment.  */
+  BFUN_CONTAINS_NON_AUX = (1 << 3)
 };
 DEF_ENUM_FLAGS_TYPE (enum btrace_function_flag, btrace_function_flags);
 
@@ -112,7 +135,7 @@ enum btrace_pt_error
   BDE_PT_USER_QUIT = 1,
 
   /* Tracing was temporarily disabled.  */
-  BDE_PT_DISABLED,
+  BDE_PT_NON_CONTIGUOUS,
 
   /* Trace recording overflowed.  */
   BDE_PT_OVERFLOW
@@ -165,7 +188,7 @@ struct btrace_function
 
   /* The instruction number offset for the first instruction in this
      function segment.
-     If INSN is empty this is the insn_offset of the succeding function
+     If INSN is empty this is the insn_offset of the succeeding function
      segment in control-flow order.  */
   unsigned int insn_offset;
 
@@ -330,6 +353,20 @@ struct btrace_thread_info
      function segment i will be at index (i - 1).  */
   std::vector<btrace_function> functions;
 
+  /* Optional auxiliary information that is printed in all commands
+     displaying or stepping through the execution history.  */
+  std::vector<std::string> aux_data;
+
+  /* Function pointer to the ptwrite callback.  Returns the string returned
+     by the ptwrite filter function.  */
+  std::optional<std::string> (*ptw_callback_fun) (const uint64_t payload,
+						  std::optional<uint64_t> ip,
+						  const void *ptw_context)
+						    = nullptr;
+
+  /* Context for the ptw_callback_fun.  */
+  void *ptw_context = nullptr;
+
   /* The function level offset.  When added to each function's LEVEL,
      this normalizes the function levels such that the smallest level
      becomes zero.  */
@@ -393,12 +430,6 @@ extern void btrace_clear (struct thread_
 /* Clear the branch trace for all threads when an object file goes away.  */
 extern void btrace_free_objfile (struct objfile *);
 
-/* Parse a branch trace xml document XML into DATA.  */
-extern void parse_xml_btrace (struct btrace_data *data, const char *xml);
-
-/* Parse a branch trace configuration xml document XML into CONF.  */
-extern void parse_xml_btrace_conf (struct btrace_config *conf, const char *xml);
-
 /* Dereference a branch trace instruction iterator.  Return a pointer to the
    instruction the iterator points to.
    May return NULL if the iterator points to a gap in the trace.  */
@@ -504,4 +535,4 @@ extern int btrace_is_replaying (struct t
 /* Return non-zero if the branch trace for TP is empty; zero otherwise.  */
 extern int btrace_is_empty (struct thread_info *tp);
 
-#endif /* BTRACE_H */
+#endif /* GDB_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.20200303/gdb/bt-utils.c ./gdb/bt-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bt-utils.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/bt-utils.c	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,179 @@
+/* Copyright (C) 2021-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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 "bt-utils.h"
+#include "command.h"
+#include "cli/cli-cmds.h"
+#include "ui.h"
+#include "cli/cli-decode.h"
+
+/* See bt-utils.h.  */
+
+void
+gdb_internal_backtrace_set_cmd (const char *args, int from_tty,
+				cmd_list_element *c)
+{
+  gdb_assert (c->type == set_cmd);
+  gdb_assert (c->var.has_value ());
+  gdb_assert (c->var->type () == var_boolean);
+
+#ifndef GDB_PRINT_INTERNAL_BACKTRACE
+  if (c->var->get<bool> ())
+    {
+      c->var->set<bool> (false);
+      error (_("support for this feature is not compiled into GDB"));
+    }
+#endif
+}
+
+/* See bt-utils.h.  */
+
+void
+sig_write (const char *msg)
+{
+  if (gdb_stderr == nullptr || gdb_stderr->fd () == -1)
+    std::ignore = ::write (2, msg, strlen (msg));
+  else
+    gdb_stderr->write_async_safe (msg, strlen (msg));
+}
+
+#ifdef GDB_PRINT_INTERNAL_BACKTRACE
+#ifdef GDB_PRINT_INTERNAL_BACKTRACE_USING_LIBBACKTRACE
+
+/* Callback used by libbacktrace if it encounters an error.  */
+
+static void
+libbacktrace_error (void *data, const char *errmsg, int errnum)
+{
+  /* A negative errnum indicates no debug info was available, just
+     skip printing a backtrace in this case.  */
+  if (errnum < 0)
+    return;
+
+  sig_write ("error creating backtrace: ");
+  sig_write (errmsg);
+  if (errnum > 0)
+    {
+      char buf[20];
+      snprintf (buf, sizeof (buf), ": %d", errnum);
+      buf[sizeof (buf) - 1] = '\0';
+
+      sig_write (buf);
+    }
+  sig_write ("\n");
+}
+
+/* Callback used by libbacktrace to print a single stack frame.  */
+
+static int
+libbacktrace_print (void *data, uintptr_t pc, const char *filename,
+		    int lineno, const char *function)
+{
+  /* Buffer to print addresses and line numbers into.  An 8-byte address
+     with '0x' prefix and a null terminator requires 20 characters.  This
+     also feels like it should be enough to represent line numbers in most
+     files.  We are also careful to ensure we don't overflow this buffer.  */
+  char buf[20];
+
+  snprintf (buf, sizeof (buf), "0x%" PRIxPTR " ", pc);
+  buf[sizeof (buf) - 1] = '\0';
+  sig_write (buf);
+  sig_write (function == nullptr ? "???" : function);
+  if (filename != nullptr)
+    {
+      sig_write ("\n\t");
+      sig_write (filename);
+      sig_write (":");
+      snprintf (buf, sizeof (buf), "%d", lineno);
+      buf[sizeof (buf) - 1] = '\0';
+      sig_write (buf);
+    }
+  sig_write ("\n");
+
+  return function != nullptr && strcmp (function, "main") == 0;
+}
+
+/* Write a backtrace to GDB's stderr in an async safe manner.  This is a
+   backtrace of GDB, not any running inferior, and is to be used when GDB
+   crashes or hits some other error condition.  */
+
+static void
+gdb_internal_backtrace_1 ()
+{
+  static struct backtrace_state *state = nullptr;
+
+  if (state == nullptr)
+    state = backtrace_create_state (nullptr, 0, libbacktrace_error, nullptr);
+
+  backtrace_full (state, 0, libbacktrace_print, libbacktrace_error, nullptr);
+}
+
+#elif defined GDB_PRINT_INTERNAL_BACKTRACE_USING_EXECINFO
+
+/* See the comment on previous version of this function.  */
+
+static void
+gdb_internal_backtrace_1 ()
+{
+  /* Allow up to 25 frames of backtrace.  */
+  void *buffer[25];
+  int frames = backtrace (buffer, ARRAY_SIZE (buffer));
+
+  int fd = ((gdb_stderr == nullptr || gdb_stderr->fd () == -1)
+	    ? 2
+	    : gdb_stderr->fd ());
+  backtrace_symbols_fd (buffer, frames, fd);
+  if (frames == ARRAY_SIZE (buffer))
+    sig_write (_("Backtrace might be incomplete.\n"));
+}
+
+#else
+#error "unexpected internal backtrace policy"
+#endif
+
+static const char *str_backtrace = "----- Backtrace -----\n";
+static const char *str_backtrace_unavailable = "Backtrace unavailable\n";
+
+#endif /* GDB_PRINT_INTERNAL_BACKTRACE */
+
+/* See bt-utils.h.  */
+
+void
+gdb_internal_backtrace_init_str ()
+{
+#ifdef GDB_PRINT_INTERNAL_BACKTRACE
+  str_backtrace = _("----- Backtrace -----\n");
+  str_backtrace_unavailable = _("Backtrace unavailable\n");
+#endif
+}
+
+/* See bt-utils.h.  */
+
+void
+gdb_internal_backtrace ()
+{
+  if (current_ui == nullptr)
+    return;
+
+#ifdef GDB_PRINT_INTERNAL_BACKTRACE
+  sig_write (str_backtrace);
+
+  gdb_internal_backtrace_1 ();
+
+  sig_write ("---------------------\n");
+#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.20200303/gdb/bt-utils.h ./gdb/bt-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/bt-utils.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/bt-utils.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,83 @@
+/* Copyright (C) 2021-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
+
+/* Support for printing a backtrace when GDB hits an error.  This is not
+   for printing backtraces of the inferior, but backtraces of GDB itself.  */
+
+#ifndef GDB_BT_UTILS_H
+#define GDB_BT_UTILS_H
+
+#ifdef HAVE_LIBBACKTRACE
+# include "backtrace.h"
+# include "backtrace-supported.h"
+# if BACKTRACE_SUPPORTED && (! BACKTRACE_USES_MALLOC)
+#  define GDB_PRINT_INTERNAL_BACKTRACE
+#  define GDB_PRINT_INTERNAL_BACKTRACE_USING_LIBBACKTRACE
+# endif
+#endif
+
+#if defined HAVE_EXECINFO_H			\
+  && defined HAVE_EXECINFO_BACKTRACE		\
+  && !defined GDB_PRINT_INTERNAL_BACKTRACE_USING_LIBBACKTRACE
+# include <execinfo.h>
+# define GDB_PRINT_INTERNAL_BACKTRACE
+# define GDB_PRINT_INTERNAL_BACKTRACE_USING_EXECINFO
+#endif
+
+/* Define GDB_PRINT_INTERNAL_BACKTRACE_INIT_ON.  This is a boolean value
+   that can be used as an initial value for a set/show user setting, where
+   the setting controls printing a GDB internal backtrace.
+
+   If backtrace printing is supported then this will have the value true,
+   but if backtrace printing is not supported then this has the value
+   false.  */
+#ifdef GDB_PRINT_INTERNAL_BACKTRACE
+# define GDB_PRINT_INTERNAL_BACKTRACE_INIT_ON true
+#else
+# define GDB_PRINT_INTERNAL_BACKTRACE_INIT_ON false
+#endif
+
+/* Print a backtrace of the current GDB process to the current
+   gdb_stderr.  The output is done in a signal async manner, so it is safe
+   to call from signal handlers.  */
+
+extern void gdb_internal_backtrace ();
+
+/* A generic function that can be used as the set function for any set
+   command that enables printing of an internal backtrace.  Command C must
+   be a boolean set command.
+
+   If GDB doesn't support printing a backtrace, and the user has tried to
+   set the variable associated with command C to true, then the associated
+   variable will be set back to false, and an error thrown.
+
+   If GDB does support printing a backtrace then this function does
+   nothing.  */
+
+extern void gdb_internal_backtrace_set_cmd (const char *args, int from_tty,
+					    cmd_list_element *c);
+
+/* Initialize language specific strings.  */
+
+extern void gdb_internal_backtrace_init_str ();
+
+/* Print MSG to gdb_stderr or stderr in a way that is safe to do from an
+   interrupt handler.  */
+
+extern void sig_write (const char *msg);
+
+#endif /* GDB_BT_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.20200303/gdb/build-id.c ./gdb/build-id.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/build-id.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/build-id.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* build-id-related functions.
 
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "bfd.h"
 #include "gdb_bfd.h"
 #include "build-id.h"
@@ -26,12 +25,23 @@
 #include "objfiles.h"
 #include "filenames.h"
 #include "gdbcore.h"
+#include "cli/cli-style.h"
+#include "gdbsupport/scoped_fd.h"
+#include "debuginfod-support.h"
+#include "extension.h"
+#include "inferior.h"
 
 /* See build-id.h.  */
 
 const struct bfd_build_id *
 build_id_bfd_get (bfd *abfd)
 {
+  /* Dynamic objfiles such as ones created by JIT reader API
+     have no underlying bfd structure (that is, objfile->obfd
+     is NULL).  */
+  if (abfd == nullptr)
+    return nullptr;
+
   if (!bfd_check_format (abfd, bfd_object)
       && !bfd_check_format (abfd, bfd_core))
     return NULL;
@@ -54,83 +64,196 @@ build_id_verify (bfd *abfd, size_t check
   found = build_id_bfd_get (abfd);
 
   if (found == NULL)
-    warning (_("File \"%s\" has no build-id, file skipped"),
-	     bfd_get_filename (abfd));
-  else if (found->size != check_len
-           || memcmp (found->data, check, found->size) != 0)
-    warning (_("File \"%s\" has a different build-id, file skipped"),
-	     bfd_get_filename (abfd));
+    warning (_("File \"%ps\" has no build-id, file skipped"),
+	     styled_string (file_name_style.style (),
+			    bfd_get_filename (abfd)));
+  else if (!build_id_equal (found, check_len, check))
+    warning (_("File \"%ps\" has a different build-id, file skipped"),
+	     styled_string (file_name_style.style (),
+			    bfd_get_filename (abfd)));
   else
     retval = 1;
 
   return retval;
 }
 
-/* Helper for build_id_to_debug_bfd.  LINK is a path to a potential
-   build-id-based separate debug file, potentially a symlink to the real file.
-   If the file exists and matches BUILD_ID, return a BFD reference to it.  */
+/* Helper for build_id_to_debug_bfd.  ORIGINAL_LINK with SUFFIX appended is
+   a path to a potential build-id-based separate debug file, potentially a
+   symlink to the real file.  If the file exists and matches BUILD_ID,
+   return a BFD reference to it.  */
 
 static gdb_bfd_ref_ptr
-build_id_to_debug_bfd_1 (const std::string &link, size_t build_id_len,
-			 const bfd_byte *build_id)
+build_id_to_debug_bfd_1 (const std::string &original_link,
+			 size_t build_id_len, const bfd_byte *build_id,
+			 const char *suffix)
 {
-  if (separate_debug_file_debug)
-    {
-      printf_unfiltered (_("  Trying %s..."), link.c_str ());
-      gdb_flush (gdb_stdout);
-    }
+  tribool supports_target_stat = TRIBOOL_UNKNOWN;
 
-  /* lrealpath() is expensive even for the usually non-existent files.  */
-  gdb::unique_xmalloc_ptr<char> filename;
-  if (access (link.c_str (), F_OK) == 0)
-    filename.reset (lrealpath (link.c_str ()));
+  /* Drop the 'target:' prefix if the target filesystem is local.  */
+  std::string_view original_link_view (original_link);
+  if (is_target_filename (original_link) && target_filesystem_is_local ())
+    original_link_view
+      = original_link_view.substr (strlen (TARGET_SYSROOT_PREFIX));
+
+  /* The upper bound of '10' here is completely arbitrary.  The loop should
+     terminate via 'break' when either (a) a readable symlink is found, or
+     (b) a non-existing entry is found.
+
+     However, for remote targets, we rely on the remote returning sane
+     error codes.  If a remote sends back the wrong error code then it
+     might trick GDB into thinking that the symlink exists, but points to a
+     missing file, in which case GDB will try the next seqno.  We don't
+     want a broken remote to cause GDB to spin here forever, hence a fixed
+     upper bound.  */
 
-  if (filename == NULL)
+  for (unsigned seqno = 0; seqno < 10; seqno++)
     {
-      if (separate_debug_file_debug)
-	printf_unfiltered (_(" no, unable to compute real path\n"));
+      std::string link (original_link_view);
 
-      return {};
-    }
+      if (seqno > 0)
+	string_appendf (link, ".%u", seqno);
 
-  /* We expect to be silent on the non-existing files.  */
-  gdb_bfd_ref_ptr debug_bfd = gdb_bfd_open (filename.get (), gnutarget, -1);
+      link += suffix;
 
-  if (debug_bfd == NULL)
-    {
-      if (separate_debug_file_debug)
-	printf_unfiltered (_(" no, unable to open.\n"));
+      separate_debug_file_debug_printf ("Trying %s...", link.c_str ());
 
-      return {};
-    }
+      gdb::unique_xmalloc_ptr<char> filename_holder;
+      const char *filename = nullptr;
+      if (is_target_filename (link))
+	{
+	  gdb_assert (link.length () >= strlen (TARGET_SYSROOT_PREFIX));
+	  const char *link_on_target
+	    = link.c_str () + strlen (TARGET_SYSROOT_PREFIX);
+
+	  fileio_error target_errno;
+	  if (supports_target_stat != TRIBOOL_FALSE)
+	    {
+	      struct stat sb;
+	      int res = target_fileio_lstat (current_inferior (),
+					     link_on_target, &sb,
+					     &target_errno);
+
+	      if (res != 0 && target_errno != FILEIO_ENOSYS)
+		{
+		  separate_debug_file_debug_printf ("path doesn't exist");
+		  break;
+		}
+	      else if (res != 0 && target_errno == FILEIO_ENOSYS)
+		supports_target_stat = TRIBOOL_FALSE;
+	      else
+		{
+		  supports_target_stat = TRIBOOL_TRUE;
+		  filename = link.c_str ();
+		}
+	    }
+
+	  if (supports_target_stat == TRIBOOL_FALSE)
+	    {
+	      gdb_assert (filename == nullptr);
+
+	      /* Connecting to a target that doesn't support 'stat'.  Try
+		 'readlink' as an alternative.  This isn't ideal, but is
+		 maybe better than nothing.  Returns EINVAL if the path
+		 isn't a symbolic link, which hints that the path is
+		 available -- there are other errors e.g. ENOENT for when
+		 the path doesn't exist, but we just assume that anything
+		 other than EINVAL indicates the path doesn't exist.  */
+	      std::optional<std::string> link_target
+		= target_fileio_readlink (current_inferior (), link_on_target,
+					  &target_errno);
+	      if (link_target.has_value ()
+		  || target_errno == FILEIO_EINVAL)
+		filename = link.c_str ();
+	      else
+		{
+		  separate_debug_file_debug_printf ("path doesn't exist");
+		  break;
+		}
+	    }
+	}
+      else
+	{
+	  struct stat buf;
 
-  if (!build_id_verify (debug_bfd.get(), build_id_len, build_id))
-    {
-      if (separate_debug_file_debug)
-	printf_unfiltered (_(" no, build-id does not match.\n"));
+	  /* The `access' call below automatically dereferences LINK, but
+	     we want to stop incrementing SEQNO once we find a symlink
+	     that doesn't exist.  */
+	  if (lstat (link.c_str (), &buf) != 0)
+	    {
+	      separate_debug_file_debug_printf ("path doesn't exist");
+	      break;
+	    }
+
+	  /* Can LINK be accessed, or if LINK is a symlink, can the file
+	     pointed too be accessed?  Do this as lrealpath() is
+	     expensive, even for the usually non-existent files.  */
+	  if (access (link.c_str (), F_OK) == 0)
+	    {
+	      filename_holder.reset (lrealpath (link.c_str ()));
+	      filename = filename_holder.get ();
+	    }
+	}
 
-      return {};
-    }
+      if (filename == nullptr)
+	{
+	  separate_debug_file_debug_printf ("unable to compute real path");
+	  continue;
+	}
+
+      /* We expect to be silent on the non-existing files.  */
+      gdb_bfd_ref_ptr debug_bfd = gdb_bfd_open (filename, gnutarget);
+
+      if (debug_bfd == NULL)
+	{
+	  separate_debug_file_debug_printf ("unable to open `%s`", filename);
+	  continue;
+	}
 
-  if (separate_debug_file_debug)
-    printf_unfiltered (_(" yes!\n"));
+      if (!build_id_verify (debug_bfd.get(), build_id_len, build_id))
+	{
+	  separate_debug_file_debug_printf ("build-id does not match");
+	  continue;
+	}
 
-  return debug_bfd;
+      separate_debug_file_debug_printf ("found a match");
+      return debug_bfd;
+    }
+
+  separate_debug_file_debug_printf ("no suitable file found");
+  return {};
 }
 
 /* Common code for finding BFDs of a given build-id.  This function
    works with both debuginfo files (SUFFIX == ".debug") and executable
-   files (SUFFIX == "").  */
+   files (SUFFIX == "").
+
+   The build-id will be split into a single byte sub-directory, followed by
+   the remaining build-id bytes as the filename, i.e. we use the lookup
+   format: `.build-id/xx/yy....zz`.  As a consequence, if BUILD_ID_LEN is
+   less than 2 (bytes), no results will be found as there are not enough
+   bytes to form the `yy....zz` part of the lookup filename.  */
 
 static gdb_bfd_ref_ptr
 build_id_to_bfd_suffix (size_t build_id_len, const bfd_byte *build_id,
 			const char *suffix)
 {
+  SEPARATE_DEBUG_FILE_SCOPED_DEBUG_ENTER_EXIT;
+
+  if (build_id_len < 2)
+    {
+      /* Zero length build-ids are ignored by bfd.  */
+      gdb_assert (build_id_len > 0);
+      separate_debug_file_debug_printf
+	("Ignoring short build-id `%s' for build-id based lookup",
+	 bin2hex (build_id, build_id_len).c_str ());
+      return {};
+    }
+
   /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
      cause "/.build-id/..." lookups.  */
 
   std::vector<gdb::unique_xmalloc_ptr<char>> debugdir_vec
-    = dirnames_to_char_ptr_vec (debug_file_directory);
+    = dirnames_to_char_ptr_vec (debug_file_directory.c_str ());
 
   for (const gdb::unique_xmalloc_ptr<char> &debugdir : debugdir_vec)
     {
@@ -140,37 +263,37 @@ build_id_to_bfd_suffix (size_t build_id_
       /* Compute where the file named after the build-id would be.
 
 	 If debugdir is "/usr/lib/debug" and the build-id is abcdef, this will
-         give "/usr/lib/debug/.build-id/ab/cdef.debug".  */
+	 give "/usr/lib/debug/.build-id/ab/cdef.debug".  */
       std::string link = debugdir.get ();
       link += "/.build-id/";
 
-      if (size > 0)
-	{
-	  size--;
-	  string_appendf (link, "%02x/", (unsigned) *data++);
-	}
+      gdb_assert (size > 1);
+      size--;
+      string_appendf (link, "%02x/", (unsigned) *data++);
 
       while (size-- > 0)
 	string_appendf (link, "%02x", (unsigned) *data++);
 
-      link += suffix;
-
       gdb_bfd_ref_ptr debug_bfd
-	= build_id_to_debug_bfd_1 (link, build_id_len, build_id);
+	= build_id_to_debug_bfd_1 (link, build_id_len, build_id, suffix);
       if (debug_bfd != NULL)
 	return debug_bfd;
 
       /* Try to look under the sysroot as well.  If the sysroot is
-         "/the/sysroot", it will give
-         "/the/sysroot/usr/lib/debug/.build-id/ab/cdef.debug".
+	 "/the/sysroot", it will give
+	 "/the/sysroot/usr/lib/debug/.build-id/ab/cdef.debug".
 
-         Don't do it if the sysroot is the target system ("target:").  It
-         could work in theory, but the lrealpath in build_id_to_debug_bfd_1
-         only works with local paths.  */
-      if (strcmp (gdb_sysroot, TARGET_SYSROOT_PREFIX) != 0)
+	 If the sysroot is 'target:' and the target filesystem is local to
+	 GDB then 'target:/path/to/check' becomes '/path/to/check' which
+	 we just checked above.  */
+
+      if (!gdb_sysroot.empty ()
+	  && (gdb_sysroot != TARGET_SYSROOT_PREFIX
+	      || !target_filesystem_is_local ()))
 	{
 	  link = gdb_sysroot + link;
-	  debug_bfd = build_id_to_debug_bfd_1 (link, build_id_len, build_id);
+	  debug_bfd = build_id_to_debug_bfd_1 (link, build_id_len, build_id,
+					       suffix);
 	  if (debug_bfd != NULL)
 	    return debug_bfd;
 	}
@@ -187,9 +310,11 @@ build_id_to_debug_bfd (size_t build_id_l
   return build_id_to_bfd_suffix (build_id_len, build_id, ".debug");
 }
 
-/* See build-id.h.  */
+/* Find and open a BFD for an executable file given a build-id.  If no BFD
+   can be found, return NULL.  The returned reference to the BFD must be
+   released by the caller.  */
 
-gdb_bfd_ref_ptr
+static gdb_bfd_ref_ptr
 build_id_to_exec_bfd (size_t build_id_len, const bfd_byte *build_id)
 {
   return build_id_to_bfd_suffix (build_id_len, build_id, "");
@@ -198,16 +323,17 @@ build_id_to_exec_bfd (size_t build_id_le
 /* See build-id.h.  */
 
 std::string
-find_separate_debug_file_by_buildid (struct objfile *objfile)
+find_separate_debug_file_by_buildid (struct objfile *objfile,
+				     deferred_warnings *warnings)
 {
   const struct bfd_build_id *build_id;
 
-  build_id = build_id_bfd_get (objfile->obfd);
+  build_id = build_id_bfd_get (objfile->obfd.get ());
   if (build_id != NULL)
     {
-      if (separate_debug_file_debug)
-	printf_unfiltered (_("\nLooking for separate debug info (build-id) for "
-			     "%s\n"), objfile_name (objfile));
+      SEPARATE_DEBUG_FILE_SCOPED_DEBUG_START_END
+	("looking for separate debug info (build-id) for %s",
+	 objfile_name (objfile));
 
       gdb_bfd_ref_ptr abfd (build_id_to_debug_bfd (build_id->size,
 						   build_id->data));
@@ -215,11 +341,93 @@ find_separate_debug_file_by_buildid (str
       if (abfd != NULL
 	  && filename_cmp (bfd_get_filename (abfd.get ()),
 			   objfile_name (objfile)) == 0)
-	warning (_("\"%s\": separate debug info file has no debug info"),
-		 bfd_get_filename (abfd.get ()));
+	{
+	  separate_debug_file_debug_printf
+	    ("\"%s\": separate debug info file has no debug info",
+	     bfd_get_filename (abfd.get ()));
+	  warnings->warn (_("\"%ps\": separate debug info file has no "
+			    "debug info"),
+			  styled_string (file_name_style.style (),
+					 bfd_get_filename (abfd.get ())));
+	}
       else if (abfd != NULL)
 	return std::string (bfd_get_filename (abfd.get ()));
     }
 
   return std::string ();
 }
+
+/* See build-id.h.  */
+
+gdb_bfd_ref_ptr
+find_objfile_by_build_id (program_space *pspace,
+			  const bfd_build_id *build_id,
+			  const char *expected_filename)
+{
+  gdb_bfd_ref_ptr abfd;
+
+  for (unsigned attempt = 0, max_attempts = 1;
+       attempt < max_attempts && abfd == nullptr;
+       ++attempt)
+    {
+      /* Try to find the executable (or shared object) by looking for a
+	 (sym)link on disk from the build-id to the object file.  */
+      abfd = build_id_to_exec_bfd (build_id->size, build_id->data);
+
+      if (abfd != nullptr || attempt > 0)
+	break;
+
+      /* Attempt to query debuginfod for the executable.  This will only
+	 get run during the first attempt, if an extension language hook
+	 (see below) asked for a second attempt then we will have already
+	 broken out of the loop above.  */
+      gdb::unique_xmalloc_ptr<char> path;
+      scoped_fd fd = debuginfod_exec_query (build_id->data, build_id->size,
+					    expected_filename, &path);
+      if (fd.get () >= 0)
+	{
+	  abfd = gdb_bfd_open (path.get (), gnutarget);
+
+	  if (abfd == nullptr)
+	    warning (_("\"%ps\" from debuginfod cannot be opened as bfd: %s"),
+		     styled_string (file_name_style.style (), path.get ()),
+		     gdb_bfd_errmsg (bfd_get_error (), nullptr).c_str ());
+	  else if (!build_id_verify (abfd.get (), build_id->size,
+				     build_id->data))
+	    abfd = nullptr;
+	}
+
+      if (abfd != nullptr)
+	break;
+
+      ext_lang_missing_file_result ext_result
+	= ext_lang_find_objfile_from_buildid (pspace, build_id,
+					      expected_filename);
+      if (!ext_result.filename ().empty ())
+	{
+	  /* The extension identified the file for us.  */
+	  abfd = gdb_bfd_open (ext_result.filename ().c_str (), gnutarget);
+	  if (abfd == nullptr)
+	    {
+	      warning (_("\"%ps\" from extension cannot be opened as bfd: %s"),
+		       styled_string (file_name_style.style (),
+				      ext_result.filename ().c_str ()),
+		       gdb_bfd_errmsg (bfd_get_error (), nullptr).c_str ());
+	      break;
+	    }
+
+	  /* If the extension gave us a path to a file then we always
+	     assume that it is the correct file, we do no additional check
+	     of its build-id.  */
+	}
+      else if (ext_result.try_again ())
+	{
+	  /* The extension might have installed the file in the expected
+	     location, we should try again.  */
+	  max_attempts = 2;
+	  continue;
+	}
+    }
+
+  return 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.20200303/gdb/build-id.h ./gdb/build-id.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/build-id.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/build-id.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* build-id-related functions.
 
-   Copyright (C) 1991-2020 Free Software Foundation, Inc.
+   Copyright (C) 1991-2025 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/>.  */
 
-#ifndef BUILD_ID_H
-#define BUILD_ID_H
+#ifndef GDB_BUILD_ID_H
+#define GDB_BUILD_ID_H
 
 #include "gdb_bfd.h"
 #include "gdbsupport/rsp-low.h"
@@ -40,19 +40,34 @@ extern int build_id_verify (bfd *abfd,
 extern gdb_bfd_ref_ptr build_id_to_debug_bfd (size_t build_id_len,
 					      const bfd_byte *build_id);
 
-/* Find and open a BFD for an executable file given a build-id.  If no BFD
-   can be found, return NULL.  The returned reference to the BFD must be
-   released by the caller.  */
-
-extern gdb_bfd_ref_ptr build_id_to_exec_bfd (size_t build_id_len,
-					     const bfd_byte *build_id);
-
 /* Find the separate debug file for OBJFILE, by using the build-id
    associated with OBJFILE's BFD.  If successful, returns the file name for the
-   separate debug file, otherwise, return an empty string.  */
+   separate debug file, otherwise, return an empty string.
+
+   Any warnings that are generated by the lookup process should be added to
+   WARNINGS.  If some other mechanism can be used to lookup the debug
+   information then the warning will not be shown, however, if GDB fails to
+   find suitable debug information using any approach, then any warnings
+   will be printed.  */
 
 extern std::string find_separate_debug_file_by_buildid
-  (struct objfile *objfile);
+  (struct objfile *objfile, deferred_warnings *warnings);
+
+/* Find an objfile (executable or shared library) that matches BUILD_ID.
+   This is done by first checking in the debug-file-directory for a
+   suitable .build-id/ sub-directory, and looking for a file with the
+   required build-id (usually a symbolic link or hard link to the actual
+   file).
+
+   If that doesn't find us a file then we call to debuginfod to see if it
+   can provide the required file.
+
+   EXPECTED_FILENAME is used in output messages from debuginfod, this
+   should be the file we were looking for but couldn't find.  */
+
+extern gdb_bfd_ref_ptr find_objfile_by_build_id
+  (struct program_space *pspace, const bfd_build_id *build_id,
+   const char *expected_filename);
 
 /* Return an hex-string representation of BUILD_ID.  */
 
@@ -64,4 +79,30 @@ build_id_to_string (const bfd_build_id *
   return bin2hex (build_id->data, build_id->size);
 }
 
-#endif /* BUILD_ID_H */
+/* Compare the content of two build-ids.  One build-id (A) is passed as a
+   build-id pointer, while the second is passed using BUILD_ID_LEN and
+   BUILD_ID_DATA.  Return true if the build-ids match, otherwise false.  */
+
+static inline bool
+build_id_equal (const bfd_build_id *a, const bfd_size_type build_id_len,
+		const bfd_byte *build_id_data)
+{
+  gdb_assert (a != nullptr);
+  gdb_assert (build_id_data != nullptr);
+
+  return (a->size == build_id_len
+	  && memcmp (a->data, build_id_data, a->size) == 0);
+}
+
+/* Like the above, but take two build-id pointers A and B.  */
+
+static inline bool
+build_id_equal (const bfd_build_id *a, const bfd_build_id *b)
+{
+  gdb_assert (a != nullptr);
+  gdb_assert (b != nullptr);
+
+  return build_id_equal (a, b->size, b->data);
+}
+
+#endif /* GDB_BUILD_ID_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.20200303/gdb/buildsym.c ./gdb/buildsym.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/buildsym.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/buildsym.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,23 +16,22 @@
    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 "buildsym-legacy.h"
 #include "bfd.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
+#include "gdbsupport/pathstuff.h"
 #include "symtab.h"
 #include "symfile.h"
 #include "objfiles.h"
 #include "gdbtypes.h"
 #include "complaints.h"
-#include "expression.h"		/* For "enum exp_opcode" used by...  */
-#include "filenames.h"		/* For DOSish file names.  */
+#include "expression.h"
+#include "filenames.h"
 #include "macrotab.h"
-#include "demangle.h"		/* Needed by SYMBOL_INIT_DEMANGLED_NAME.  */
+#include "demangle.h"
 #include "block.h"
 #include "cp-support.h"
 #include "dictionary.h"
-#include "addrmap.h"
 #include <algorithm>
 
 /* For cleanup_undefined_stabs_types and finish_global_stabs (somewhat
@@ -49,21 +48,15 @@ struct pending_block
     struct block *block;
   };
 
-/* Initial sizes of data structures.  These are realloc'd larger if
-   needed, and realloc'd down to the size actually used, when
-   completed.  */
-
-#define	INITIAL_LINE_VECTOR_LENGTH	1000
-
-
 buildsym_compunit::buildsym_compunit (struct objfile *objfile_,
 				      const char *name,
 				      const char *comp_dir_,
+				      const char *name_for_id,
 				      enum language language_,
 				      CORE_ADDR last_addr)
   : m_objfile (objfile_),
     m_last_source_file (name == nullptr ? nullptr : xstrdup (name)),
-    m_comp_dir (comp_dir_ == nullptr ? nullptr : xstrdup (comp_dir_)),
+    m_comp_dir (comp_dir_ == nullptr ? "" : comp_dir_),
     m_language (language_),
     m_last_source_start_addr (last_addr)
 {
@@ -77,7 +70,7 @@ buildsym_compunit::buildsym_compunit (st
      It can happen that the debug info provides a different path to NAME than
      DIRNAME,NAME.  We cope with this in watch_main_source_file_lossage but
      that only works if the main_subfile doesn't have a symtab yet.  */
-  start_subfile (name);
+  start_subfile (name, name_for_id);
   /* Save this so that we don't have to go looking for it at the end
      of the subfiles list.  */
   m_main_subfile = m_current_subfile;
@@ -95,9 +88,7 @@ buildsym_compunit::~buildsym_compunit ()
        subfile = nextsub)
     {
       nextsub = subfile->next;
-      xfree (subfile->name);
-      xfree (subfile->line_vector);
-      xfree (subfile);
+      delete subfile;
     }
 
   struct pending *next, *next1;
@@ -120,7 +111,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 +126,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,80 +204,79 @@ 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;
   struct pending_block *opblock;
 
-  block = (is_global
-	   ? allocate_global_block (&m_objfile->objfile_obstack)
-	   : allocate_block (&m_objfile->objfile_obstack));
+  if (is_global)
+    block = new (&m_objfile->objfile_obstack) global_block;
+  else
+    block = new (&m_objfile->objfile_obstack) struct block;
 
   if (symbol)
     {
-      BLOCK_MULTIDICT (block)
-	= mdict_create_linear (&m_objfile->objfile_obstack, *listhead);
+      block->set_multidict
+	(mdict_create_linear (&m_objfile->objfile_obstack, *listhead));
     }
   else
     {
       if (expandable)
 	{
-	  BLOCK_MULTIDICT (block) = mdict_create_hashed_expandable (m_language);
-	  mdict_add_pending (BLOCK_MULTIDICT (block), *listhead);
+	  block->set_multidict
+	    (mdict_create_hashed_expandable (m_language));
+	  mdict_add_pending (block->multidict (), *listhead);
 	}
       else
 	{
-	  BLOCK_MULTIDICT (block) =
-	    mdict_create_hashed (&m_objfile->objfile_obstack, *listhead);
+	  block->set_multidict
+	    (mdict_create_hashed (&m_objfile->objfile_obstack, *listhead));
 	}
     }
 
-  BLOCK_START (block) = start;
-  BLOCK_END (block) = end;
+  block->set_start (start);
+  block->set_end (end);
 
   /* Put the block in as the value of the symbol that names it.  */
 
   if (symbol)
     {
-      struct type *ftype = SYMBOL_TYPE (symbol);
-      struct mdict_iterator miter;
-      SYMBOL_BLOCK_VALUE (symbol) = block;
-      BLOCK_FUNCTION (block) = symbol;
+      struct type *ftype = symbol->type ();
+      symbol->set_value_block (block);
+      symbol->set_section_index (SECT_OFF_TEXT (m_objfile));
+      block->set_function (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
 	     parameter symbols.  */
 	  int nparams = 0, iparams;
-	  struct symbol *sym;
 
 	  /* Here we want to directly access the dictionary, because
 	     we haven't fully initialized the block yet.  */
-	  ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (block), miter, sym)
+	  for (struct symbol *sym : block->multidict_symbols ())
 	    {
-	      if (SYMBOL_IS_ARGUMENT (sym))
+	      if (sym->is_argument ())
 		nparams++;
 	    }
 	  if (nparams > 0)
 	    {
-	      TYPE_NFIELDS (ftype) = nparams;
-	      TYPE_FIELDS (ftype) = (struct field *)
-		TYPE_ALLOC (ftype, nparams * sizeof (struct field));
+	      ftype->alloc_fields (nparams);
 
 	      iparams = 0;
 	      /* Here we want to directly access the dictionary, because
 		 we haven't fully initialized the block yet.  */
-	      ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (block), miter, sym)
+	      for (struct symbol *sym : block->multidict_symbols ())
 		{
 		  if (iparams == nparams)
 		    break;
 
-		  if (SYMBOL_IS_ARGUMENT (sym))
+		  if (sym->is_argument ())
 		    {
-		      TYPE_FIELD_TYPE (ftype, iparams) = SYMBOL_TYPE (sym);
-		      TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
+		      ftype->field (iparams).set_type (sym->type ());
+		      ftype->field (iparams).set_is_artificial (false);
 		      iparams++;
 		    }
 		}
@@ -294,9 +284,7 @@ buildsym_compunit::finish_block_internal
 	}
     }
   else
-    {
-      BLOCK_FUNCTION (block) = NULL;
-    }
+    block->set_function (nullptr);
 
   if (static_link != NULL)
     objfile_register_static_link (m_objfile, block, static_link);
@@ -313,7 +301,7 @@ buildsym_compunit::finish_block_internal
   /* Check to be sure that the blocks have an end address that is
      greater than starting address.  */
 
-  if (BLOCK_END (block) < BLOCK_START (block))
+  if (block->end () < block->start ())
     {
       if (symbol)
 	{
@@ -325,11 +313,11 @@ buildsym_compunit::finish_block_internal
 	{
 	  complaint (_("block end address %s less than block "
 		       "start address %s (patched it)"),
-		     paddress (gdbarch, BLOCK_END (block)),
-		     paddress (gdbarch, BLOCK_START (block)));
+		     paddress (gdbarch, block->end ()),
+		     paddress (gdbarch, block->start ()));
 	}
       /* Better than nothing.  */
-      BLOCK_END (block) = BLOCK_START (block);
+      block->set_end (block->start ());
     }
 
   /* Install this block as the superblock of all blocks made since the
@@ -340,7 +328,7 @@ buildsym_compunit::finish_block_internal
        pblock && pblock != old_blocks; 
        pblock = pblock->next)
     {
-      if (BLOCK_SUPERBLOCK (pblock->block) == NULL)
+      if (pblock->block->superblock () == NULL)
 	{
 	  /* Check to be sure the blocks are nested as we receive
 	     them.  If the compiler/assembler/linker work, this just
@@ -349,9 +337,9 @@ buildsym_compunit::finish_block_internal
 	     Skip blocks which correspond to a function; they're not
 	     physically nested inside this other blocks, only
 	     lexically nested.  */
-	  if (BLOCK_FUNCTION (pblock->block) == NULL
-	      && (BLOCK_START (pblock->block) < BLOCK_START (block)
-		  || BLOCK_END (pblock->block) > BLOCK_END (block)))
+	  if (pblock->block->function () == NULL
+	      && (pblock->block->start () < block->start ()
+		  || pblock->block->end () > block->end ()))
 	    {
 	      if (symbol)
 		{
@@ -362,26 +350,27 @@ buildsym_compunit::finish_block_internal
 		{
 		  complaint (_("inner block (%s-%s) not "
 			       "inside outer block (%s-%s)"),
-			     paddress (gdbarch, BLOCK_START (pblock->block)),
-			     paddress (gdbarch, BLOCK_END (pblock->block)),
-			     paddress (gdbarch, BLOCK_START (block)),
-			     paddress (gdbarch, BLOCK_END (block)));
+			     paddress (gdbarch, pblock->block->start ()),
+			     paddress (gdbarch, pblock->block->end ()),
+			     paddress (gdbarch, block->start ()),
+			     paddress (gdbarch, block->end ()));
 		}
-	      if (BLOCK_START (pblock->block) < BLOCK_START (block))
-		BLOCK_START (pblock->block) = BLOCK_START (block);
-	      if (BLOCK_END (pblock->block) > BLOCK_END (block))
-		BLOCK_END (pblock->block) = BLOCK_END (block);
+
+	      if (pblock->block->start () < block->start ())
+		pblock->block->set_start (block->start ());
+
+	      if (pblock->block->end () > block->end ())
+		pblock->block->set_end (block->end ());
 	    }
-	  BLOCK_SUPERBLOCK (pblock->block) = block;
+	  pblock->block->set_superblock (block);
 	}
       opblock = pblock;
     }
 
-  block_set_using (block,
-		   (is_global
-		    ? m_global_using_directives
-		    : m_local_using_directives),
-		   &m_objfile->objfile_obstack);
+  block->set_using ((is_global
+		     ? m_global_using_directives
+		     : m_local_using_directives),
+		    &m_objfile->objfile_obstack);
   if (is_global)
     m_global_using_directives = NULL;
   else
@@ -420,14 +409,11 @@ buildsym_compunit::record_block_range (s
      become interesting.  Note that even if this block doesn't have
      any "interesting" ranges, some later block might, so we still
      need to record this block in the addrmap.  */
-  if (start != BLOCK_START (block)
-      || end_inclusive + 1 != BLOCK_END (block))
+  if (start != block->start ()
+      || end_inclusive + 1 != block->end ())
     m_pending_addrmap_interesting = true;
 
-  if (m_pending_addrmap == nullptr)
-    m_pending_addrmap = addrmap_create_mutable (&m_pending_addrmap_obstack);
-
-  addrmap_set_empty (m_pending_addrmap, start, end_inclusive, block);
+  m_pending_addrmap.set_empty (start, end_inclusive, block);
 }
 
 struct blockvector *
@@ -454,21 +440,20 @@ buildsym_compunit::make_blockvector ()
      each block into the list after its subblocks in order to make
      sure this is true.  */
 
-  BLOCKVECTOR_NBLOCKS (blockvector) = i;
+  blockvector->set_num_blocks (i);
   for (next = m_pending_blocks; next; next = next->next)
-    {
-      BLOCKVECTOR_BLOCK (blockvector, --i) = next->block;
-    }
+    blockvector->set_block (--i, next->block);
 
   free_pending_blocks ();
 
   /* If we needed an address map for this symtab, record it in the
      blockvector.  */
-  if (m_pending_addrmap != nullptr && m_pending_addrmap_interesting)
-    BLOCKVECTOR_MAP (blockvector)
-      = addrmap_create_fixed (m_pending_addrmap, &m_objfile->objfile_obstack);
+  if (m_pending_addrmap_interesting)
+    blockvector->set_map
+      (new (&m_objfile->objfile_obstack) addrmap_fixed
+       (&m_objfile->objfile_obstack, &m_pending_addrmap));
   else
-    BLOCKVECTOR_MAP (blockvector) = 0;
+    blockvector->set_map (nullptr);
 
   /* Some compilers output blocks in the wrong order, but we depend on
      their being in the right order so we can binary search.  Check the
@@ -476,15 +461,15 @@ buildsym_compunit::make_blockvector ()
      Note: Remember that the first two blocks are the global and static
      blocks.  We could special case that fact and begin checking at block 2.
      To avoid making that assumption we do not.  */
-  if (BLOCKVECTOR_NBLOCKS (blockvector) > 1)
+  if (blockvector->num_blocks () > 1)
     {
-      for (i = 1; i < BLOCKVECTOR_NBLOCKS (blockvector); i++)
+      for (i = 1; i < blockvector->num_blocks (); i++)
 	{
-	  if (BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i - 1))
-	      > BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i)))
+	  if (blockvector->block (i - 1)->start ()
+	      > blockvector->block (i)->start ())
 	    {
 	      CORE_ADDR start
-		= BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i));
+		= blockvector->block (i)->start ();
 
 	      complaint (_("block at %s out of order"),
 			 hex_string ((LONGEST) start));
@@ -494,61 +479,32 @@ buildsym_compunit::make_blockvector ()
 
   return (blockvector);
 }
-
-/* Start recording information about source code that came from an
-   included (or otherwise merged-in) source file with a different
-   name.  NAME is the name of the file (cannot be NULL).  */
+
+/* See buildsym.h.  */
 
 void
-buildsym_compunit::start_subfile (const char *name)
+buildsym_compunit::start_subfile (const char *name, const char *name_for_id)
 {
-  const char *subfile_dirname;
-  struct subfile *subfile;
-
-  subfile_dirname = m_comp_dir.get ();
-
   /* See if this subfile is already registered.  */
 
-  for (subfile = m_subfiles; subfile; subfile = subfile->next)
-    {
-      char *subfile_name;
-
-      /* If NAME is an absolute path, and this subfile is not, then
-	 attempt to create an absolute path to compare.  */
-      if (IS_ABSOLUTE_PATH (name)
-	  && !IS_ABSOLUTE_PATH (subfile->name)
-	  && subfile_dirname != NULL)
-	subfile_name = concat (subfile_dirname, SLASH_STRING,
-			       subfile->name, (char *) NULL);
-      else
-	subfile_name = subfile->name;
+  symtab_create_debug_printf ("name = %s, name_for_id = %s", name, name_for_id);
 
-      if (FILENAME_CMP (subfile_name, name) == 0)
-	{
-	  m_current_subfile = subfile;
-	  if (subfile_name != subfile->name)
-	    xfree (subfile_name);
-	  return;
-	}
-      if (subfile_name != subfile->name)
-	xfree (subfile_name);
-    }
+  for (subfile *subfile = m_subfiles; subfile; subfile = subfile->next)
+    if (FILENAME_CMP (subfile->name_for_id.c_str (), name_for_id) == 0)
+      {
+	symtab_create_debug_printf ("found existing symtab with name_for_id %s",
+				    subfile->name_for_id.c_str ());
+	m_current_subfile = subfile;
+	return;
+      }
 
   /* This subfile is not known.  Add an entry for it.  */
 
-  subfile = XNEW (struct subfile);
-  memset (subfile, 0, sizeof (struct subfile));
-  subfile->buildsym_compunit = this;
-
-  subfile->next = m_subfiles;
-  m_subfiles = subfile;
-
-  m_current_subfile = subfile;
-
-  subfile->name = xstrdup (name);
+  subfile_up subfile (new struct subfile);
+  subfile->name = name;
+  subfile->name_for_id = name_for_id;
 
-  /* Initialize line-number recording for this subfile.  */
-  subfile->line_vector = NULL;
+  m_current_subfile = subfile.get ();
 
   /* Default the source language to whatever can be deduced from the
      filename.  If nothing can be deduced (such as for a C/C++ include
@@ -561,22 +517,19 @@ buildsym_compunit::start_subfile (const
      until after all the symbols have been processed for a given
      source file.  */
 
-  subfile->language = deduce_language_from_filename (subfile->name);
-  if (subfile->language == language_unknown
-      && subfile->next != NULL)
-    {
-      subfile->language = subfile->next->language;
-    }
+  subfile->language = deduce_language_from_filename (subfile->name.c_str ());
+  if (subfile->language == language_unknown && m_subfiles != nullptr)
+    subfile->language = m_subfiles->language;
 
   /* If the filename of this subfile ends in .C, then change the
      language of any pending subfiles from C to C++.  We also accept
      any other C++ suffixes accepted by deduce_language_from_filename.  */
   /* Likewise for f2c.  */
 
-  if (subfile->name)
+  if (!subfile->name.empty ())
     {
       struct subfile *s;
-      enum language sublang = deduce_language_from_filename (subfile->name);
+      language sublang = deduce_language_from_filename (subfile->name.c_str ());
 
       if (sublang == language_cplus || sublang == language_fortran)
 	for (s = m_subfiles; s != NULL; s = s->next)
@@ -586,12 +539,14 @@ buildsym_compunit::start_subfile (const
 
   /* And patch up this file if necessary.  */
   if (subfile->language == language_c
-      && subfile->next != NULL
-      && (subfile->next->language == language_cplus
-	  || subfile->next->language == language_fortran))
-    {
-      subfile->language = subfile->next->language;
-    }
+      && m_subfiles != nullptr
+      && (m_subfiles->language == language_cplus
+	  || m_subfiles->language == language_fortran))
+    subfile->language = m_subfiles->language;
+
+  /* Link this subfile at the front of the subfile list.  */
+  subfile->next = m_subfiles;
+  m_subfiles = subfile.release ();
 }
 
 /* For stabs readers, the first N_SO symbol is assumed to be the
@@ -611,26 +566,28 @@ buildsym_compunit::patch_subfile_names (
 					const char *name)
 {
   if (subfile != NULL
-      && m_comp_dir == NULL
-      && subfile->name != NULL
-      && IS_DIR_SEPARATOR (subfile->name[strlen (subfile->name) - 1]))
-    {
-      m_comp_dir.reset (subfile->name);
-      subfile->name = xstrdup (name);
+      && m_comp_dir.empty ()
+      && !subfile->name.empty ()
+      && IS_DIR_SEPARATOR (subfile->name.back ()))
+    {
+      m_comp_dir = std::move (subfile->name);
+      subfile->name = name;
+      subfile->name_for_id = name;
       set_last_source_file (name);
 
       /* Default the source language to whatever can be deduced from
-         the filename.  If nothing can be deduced (such as for a C/C++
-         include file with a ".h" extension), then inherit whatever
-         language the previous subfile had.  This kludgery is
-         necessary because there is no standard way in some object
-         formats to record the source language.  Also, when symtabs
-         are allocated we try to deduce a language then as well, but
-         it is too late for us to use that information while reading
-         symbols, since symtabs aren't allocated until after all the
-         symbols have been processed for a given source file.  */
+	 the filename.  If nothing can be deduced (such as for a C/C++
+	 include file with a ".h" extension), then inherit whatever
+	 language the previous subfile had.  This kludgery is
+	 necessary because there is no standard way in some object
+	 formats to record the source language.  Also, when symtabs
+	 are allocated we try to deduce a language then as well, but
+	 it is too late for us to use that information while reading
+	 symbols, since symtabs aren't allocated until after all the
+	 symbols have been processed for a given source file.  */
 
-      subfile->language = deduce_language_from_filename (subfile->name);
+      subfile->language
+	= deduce_language_from_filename (subfile->name.c_str ());
       if (subfile->language == language_unknown
 	  && subfile->next != NULL)
 	{
@@ -648,8 +605,8 @@ void
 buildsym_compunit::push_subfile ()
 {
   gdb_assert (m_current_subfile != NULL);
-  gdb_assert (m_current_subfile->name != NULL);
-  m_subfile_stack.push_back (m_current_subfile->name);
+  gdb_assert (!m_current_subfile->name.empty ());
+  m_subfile_stack.push_back (m_current_subfile->name.c_str ());
 }
 
 const char *
@@ -666,36 +623,9 @@ buildsym_compunit::pop_subfile ()
 
 void
 buildsym_compunit::record_line (struct subfile *subfile, int line,
-				CORE_ADDR pc)
+				unrelocated_addr pc, linetable_entry_flags flags)
 {
-  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)
-    {
-      subfile->line_vector_length = INITIAL_LINE_VECTOR_LENGTH;
-      subfile->line_vector = (struct linetable *)
-	xmalloc (sizeof (struct linetable)
-	   + subfile->line_vector_length * sizeof (struct linetable_entry));
-      subfile->line_vector->nitems = 0;
-      m_have_line_numbers = true;
-    }
-
-  if (subfile->line_vector->nitems + 1 >= subfile->line_vector_length)
-    {
-      subfile->line_vector_length *= 2;
-      subfile->line_vector = (struct linetable *)
-	xrealloc ((char *) subfile->line_vector,
-		  (sizeof (struct linetable)
-		   + (subfile->line_vector_length
-		      * sizeof (struct linetable_entry))));
-    }
+  m_have_line_numbers = true;
 
   /* Normally, we treat lines as unsorted.  But the end of sequence
      marker is special.  We sort line markers at the same PC by line
@@ -710,40 +640,36 @@ 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)
-	{
-	  e--;
-	  subfile->line_vector->nitems--;
-	}
-    }
+      std::optional<int> last_line;
 
-  e = subfile->line_vector->item + subfile->line_vector->nitems++;
-  e->line = line;
-  e->pc = pc;
-}
+      while (!subfile->line_vector_entries.empty ())
+	{
+	  linetable_entry *last = &subfile->line_vector_entries.back ();
+	  last_line = last->line;
 
-/* Needed in order to sort line tables from IBM xcoff files.  Sigh!  */
+	  if (last->unrelocated_pc () != pc)
+	    break;
 
-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;
+	  subfile->line_vector_entries.pop_back ();
+	}
 
-  if (ln1.pc > ln2.pc)
-    return false;
+      /* Ignore an end-of-sequence marker marking an empty sequence.  */
+      if (!last_line.has_value () || *last_line == 0)
+	return;
+    }
 
-  /* 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;
+  linetable_entry &e = subfile->line_vector_entries.emplace_back ();
+  e.line = line;
+  e.is_stmt = (flags & LEF_IS_STMT) != 0;
+  e.set_unrelocated_pc (pc);
+  e.prologue_end = (flags & LEF_PROLOGUE_END) != 0;
+  e.epilogue_begin = (flags & LEF_EPILOGUE_BEGIN) != 0;
 }
+
 
-/* Subroutine of end_symtab to simplify it.  Look for a subfile that
+/* Subroutine of end_compunit_symtab to simplify it.  Look for a subfile that
    matches the main source file's basename.  If there is only one, and
    if the main source file doesn't have any symbol or line number
    information, then copy this file's symtab and line_vector to the
@@ -764,10 +690,10 @@ buildsym_compunit::watch_main_source_fil
   /* If the main source file doesn't have any line number or symbol
      info, look for an alias in another subfile.  */
 
-  if (mainsub->line_vector == NULL
+  if (mainsub->line_vector_entries.empty ()
       && mainsub->symtab == NULL)
     {
-      const char *mainbase = lbasename (mainsub->name);
+      const char *mainbase = lbasename (mainsub->name.c_str ());
       int nr_matches = 0;
       struct subfile *prevsub;
       struct subfile *mainsub_alias = NULL;
@@ -780,7 +706,7 @@ buildsym_compunit::watch_main_source_fil
 	{
 	  if (subfile == mainsub)
 	    continue;
-	  if (filename_cmp (lbasename (subfile->name), mainbase) == 0)
+	  if (filename_cmp (lbasename (subfile->name.c_str ()), mainbase) == 0)
 	    {
 	      ++nr_matches;
 	      mainsub_alias = subfile;
@@ -797,27 +723,31 @@ buildsym_compunit::watch_main_source_fil
 	     Copy its line_vector and symtab to the main subfile
 	     and then discard it.  */
 
-	  mainsub->line_vector = mainsub_alias->line_vector;
-	  mainsub->line_vector_length = mainsub_alias->line_vector_length;
+	  symtab_create_debug_printf ("using subfile %s as the main subfile",
+				      mainsub_alias->name.c_str ());
+
+	  mainsub->line_vector_entries
+	    = std::move (mainsub_alias->line_vector_entries);
 	  mainsub->symtab = mainsub_alias->symtab;
 
 	  if (prev_mainsub_alias == NULL)
 	    m_subfiles = mainsub_alias->next;
 	  else
 	    prev_mainsub_alias->next = mainsub_alias->next;
-	  xfree (mainsub_alias->name);
-	  xfree (mainsub_alias);
+
+	  delete mainsub_alias;
 	}
     }
 }
 
-/* Implementation of the first part of end_symtab.  It allows modifying
-   STATIC_BLOCK before it gets finalized by end_symtab_from_static_block.
-   If the returned value is NULL there is no blockvector created for
-   this symtab (you still must call end_symtab_from_static_block).
+/* Implementation of the first part of end_compunit_symtab.  It allows modifying
+   STATIC_BLOCK before it gets finalized by
+   end_compunit_symtab_from_static_block.  If the returned value is NULL there
+   is no blockvector created for this symtab (you still must call
+   end_compunit_symtab_from_static_block).
 
-   END_ADDR is the same as for end_symtab: the address of the end of the
-   file's text.
+   END_ADDR is the same as for end_compunit_symtab: the address of the end of
+   the file's text.
 
    If EXPANDABLE is non-zero the STATIC_BLOCK dictionary is made
    expandable.
@@ -826,8 +756,9 @@ buildsym_compunit::watch_main_source_fil
    not contain any symbols.  */
 
 struct block *
-buildsym_compunit::end_symtab_get_static_block (CORE_ADDR end_addr,
-						int expandable, int required)
+buildsym_compunit::end_compunit_symtab_get_static_block (CORE_ADDR end_addr,
+							 int expandable,
+							 int required)
 {
   /* Finish the lexical context of the last function in the file; pop
      the context stack.  */
@@ -847,15 +778,14 @@ buildsym_compunit::end_symtab_get_static
 	     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().  */
-	  complaint (_("Context stack not empty in end_symtab"));
+	  complaint (_("Context stack not empty in end_compunit_symtab"));
 	  m_context_stack.clear ();
 	}
     }
 
-  /* Reordered executables may have out of order pending blocks; if
-     OBJF_REORDERED is true, then sort the pending blocks.  */
-
-  if ((m_objfile->flags & OBJF_REORDERED) && m_pending_blocks)
+  /* Executables may have out of order pending blocks; sort the
+     pending blocks.  */
+  if (m_pending_blocks != nullptr)
     {
       struct pending_block *pb;
 
@@ -870,7 +800,7 @@ buildsym_compunit::end_symtab_get_static
       std::stable_sort (barray.begin (), barray.end (),
 			[] (const block *a, const block *b)
 			{
-			  return BLOCK_START (a) > BLOCK_START (b);
+			  return a->start () > b->start ();
 			});
 
       int i = 0;
@@ -911,13 +841,14 @@ buildsym_compunit::end_symtab_get_static
     }
 }
 
-/* Subroutine of end_symtab_from_static_block to simplify it.
+/* Subroutine of end_compunit_symtab_from_static_block to simplify it.
    Handle the "have blockvector" case.
-   See end_symtab_from_static_block for a description of the arguments.  */
+   See end_compunit_symtab_from_static_block for a description of the
+   arguments.  */
 
 struct compunit_symtab *
-buildsym_compunit::end_symtab_with_blockvector (struct block *static_block,
-						int section, int expandable)
+buildsym_compunit::end_compunit_symtab_with_blockvector
+  (struct block *static_block, int expandable)
 {
   struct compunit_symtab *cu = m_compunit_symtab;
   struct blockvector *blockvector;
@@ -927,7 +858,7 @@ buildsym_compunit::end_symtab_with_block
   gdb_assert (static_block != NULL);
   gdb_assert (m_subfiles != NULL);
 
-  end_addr = BLOCK_END (static_block);
+  end_addr = static_block->end ();
 
   /* Create the GLOBAL_BLOCK and build the blockvector.  */
   finish_block_internal (NULL, get_global_symbols (), NULL, NULL,
@@ -952,42 +883,45 @@ buildsym_compunit::end_symtab_with_block
        subfile != NULL;
        subfile = subfile->next)
     {
-      int linetablesize = 0;
-
-      if (subfile->line_vector)
+      if (!subfile->line_vector_entries.empty ())
 	{
-	  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.  */
-	  if (m_objfile->flags & OBJF_REORDERED)
-	    std::sort (subfile->line_vector->item,
-		       subfile->line_vector->item
-			 + subfile->line_vector->nitems,
-		       lte_is_less_than);
+	  /* Like the pending blocks, the line table may be scrambled
+	     in reordered executables.  Sort it.  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.  */
+	  std::stable_sort (subfile->line_vector_entries.begin (),
+			    subfile->line_vector_entries.end ());
 	}
 
       /* Allocate a symbol table if necessary.  */
       if (subfile->symtab == NULL)
-	subfile->symtab = allocate_symtab (cu, subfile->name);
+	subfile->symtab = allocate_symtab (cu, subfile->name.c_str (),
+					   subfile->name_for_id.c_str ());
+
       struct symtab *symtab = subfile->symtab;
 
       /* Fill in its components.  */
 
-      if (subfile->line_vector)
+      if (!subfile->line_vector_entries.empty ())
 	{
-	  /* Reallocate the line table on the symbol obstack.  */
-	  SYMTAB_LINETABLE (symtab) = (struct linetable *)
-	    obstack_alloc (&m_objfile->objfile_obstack, linetablesize);
-	  memcpy (SYMTAB_LINETABLE (symtab), subfile->line_vector,
-		  linetablesize);
+	  /* Reallocate the line table on the objfile obstack.  */
+	  size_t n_entries = subfile->line_vector_entries.size ();
+	  size_t entry_array_size = n_entries * sizeof (struct linetable_entry);
+	  int linetablesize = sizeof (struct linetable) + entry_array_size;
+
+	  struct linetable *new_table
+	    = XOBNEWVAR (&m_objfile->objfile_obstack, struct linetable,
+			 linetablesize);
+
+	  new_table->nitems = n_entries;
+	  memcpy (new_table->item,
+		  subfile->line_vector_entries.data (), entry_array_size);
+
+	  symtab->set_linetable (new_table);
 	}
       else
-	{
-	  SYMTAB_LINETABLE (symtab) = NULL;
-	}
+	symtab->set_linetable (nullptr);
 
       /* Use whatever language we have been using for this
 	 subfile, not the one that was deduced in allocate_symtab
@@ -995,84 +929,56 @@ buildsym_compunit::end_symtab_with_block
 	 we created the subfile, and we may have altered our
 	 opinion of what language it is from things we found in
 	 the symbols.  */
-      symtab->language = subfile->language;
+      symtab->set_language (subfile->language);
     }
 
-  /* Make sure the symtab of main_subfile is the first in its list.  */
-  {
-    struct symtab *main_symtab, *prev_symtab;
-
-    main_symtab = m_main_subfile->symtab;
-    prev_symtab = NULL;
-    for (symtab *symtab : compunit_filetabs (cu))
-      {
-	if (symtab == main_symtab)
-	  {
-	    if (prev_symtab != NULL)
-	      {
-		prev_symtab->next = main_symtab->next;
-		main_symtab->next = COMPUNIT_FILETABS (cu);
-		COMPUNIT_FILETABS (cu) = main_symtab;
-	      }
-	    break;
-	  }
-	prev_symtab = symtab;
-      }
-    gdb_assert (main_symtab == COMPUNIT_FILETABS (cu));
-  }
+  /* Make sure the filetab of main_subfile is the primary filetab of the CU.  */
+  cu->set_primary_filetab (m_main_subfile->symtab);
 
   /* Fill out the compunit symtab.  */
 
-  if (m_comp_dir != NULL)
+  if (!m_comp_dir.empty ())
     {
       /* Reallocate the dirname on the symbol obstack.  */
-      const char *comp_dir = m_comp_dir.get ();
-      COMPUNIT_DIRNAME (cu) = obstack_strdup (&m_objfile->objfile_obstack,
-					      comp_dir);
+      cu->set_dirname (obstack_strdup (&m_objfile->objfile_obstack,
+				       m_comp_dir.c_str ()));
     }
 
   /* Save the debug format string (if any) in the symtab.  */
-  COMPUNIT_DEBUGFORMAT (cu) = m_debugformat;
+  cu->set_debugformat (m_debugformat);
 
   /* Similarly for the producer.  */
-  COMPUNIT_PRODUCER (cu) = m_producer;
+  cu->set_producer (m_producer);
 
-  COMPUNIT_BLOCKVECTOR (cu) = blockvector;
-  {
-    struct block *b = BLOCKVECTOR_BLOCK (blockvector, GLOBAL_BLOCK);
+  cu->set_blockvector (blockvector);
+  blockvector->global_block ()->set_compunit (cu);
 
-    set_block_compunit_symtab (b, cu);
-  }
-
-  COMPUNIT_BLOCK_LINE_SECTION (cu) = section;
-
-  COMPUNIT_MACRO_TABLE (cu) = release_macros ();
+  cu->set_macro_table (release_macros ());
 
   /* Default any symbols without a specified symtab to the primary symtab.  */
   {
     int block_i;
 
     /* The main source file's symtab.  */
-    struct symtab *symtab = COMPUNIT_FILETABS (cu);
+    struct symtab *symtab = cu->primary_filetab ();
 
-    for (block_i = 0; block_i < BLOCKVECTOR_NBLOCKS (blockvector); block_i++)
+    for (block_i = 0; block_i < blockvector->num_blocks (); block_i++)
       {
-	struct block *block = BLOCKVECTOR_BLOCK (blockvector, block_i);
-	struct symbol *sym;
-	struct mdict_iterator miter;
+	struct block *block = blockvector->block (block_i);
 
 	/* Inlined functions may have symbols not in the global or
 	   static symbol lists.  */
-	if (BLOCK_FUNCTION (block) != NULL)
-	  if (symbol_symtab (BLOCK_FUNCTION (block)) == NULL)
-	    symbol_set_symtab (BLOCK_FUNCTION (block), symtab);
+	if (block->function () != nullptr
+	    && block->function ()->symtab () == nullptr)
+	    block->function ()->set_symtab (symtab);
 
 	/* Note that we only want to fix up symbols from the local
-	   blocks, not blocks coming from included symtabs.  That is why
-	   we use ALL_DICT_SYMBOLS here and not ALL_BLOCK_SYMBOLS.  */
-	ALL_DICT_SYMBOLS (BLOCK_MULTIDICT (block), miter, sym)
-	  if (symbol_symtab (sym) == NULL)
-	    symbol_set_symtab (sym, symtab);
+	   blocks, not blocks coming from included symtabs.  That is
+	   why we use an mdict iterator here and not a block
+	   iterator.  */
+	for (struct symbol *sym : block->multidict_symbols ())
+	  if (sym->symtab () == NULL)
+	    sym->set_symtab (symtab);
       }
   }
 
@@ -1081,18 +987,15 @@ buildsym_compunit::end_symtab_with_block
   return cu;
 }
 
-/* Implementation of the second part of end_symtab.  Pass STATIC_BLOCK
-   as value returned by end_symtab_get_static_block.
-
-   SECTION is the same as for end_symtab: the section number
-   (in objfile->section_offsets) of the blockvector and linetable.
+/* Implementation of the second part of end_compunit_symtab.  Pass STATIC_BLOCK
+   as value returned by end_compunit_symtab_get_static_block.
 
    If EXPANDABLE is non-zero the GLOBAL_BLOCK dictionary is made
    expandable.  */
 
 struct compunit_symtab *
-buildsym_compunit::end_symtab_from_static_block (struct block *static_block,
-						 int section, int expandable)
+buildsym_compunit::end_compunit_symtab_from_static_block
+  (struct block *static_block, int expandable)
 {
   struct compunit_symtab *cu;
 
@@ -1110,7 +1013,7 @@ buildsym_compunit::end_symtab_from_stati
       cu = NULL;
     }
   else
-    cu = end_symtab_with_blockvector (static_block, section, expandable);
+    cu = end_compunit_symtab_with_blockvector (static_block, expandable);
 
   return cu;
 }
@@ -1120,11 +1023,9 @@ buildsym_compunit::end_symtab_from_stati
    them), then make the struct symtab for that file and put it in the
    list of all such.
 
-   END_ADDR is the address of the end of the file's text.  SECTION is
-   the section number (in objfile->section_offsets) of the blockvector
-   and linetable.
+   END_ADDR is the address of the end of the file's text.
 
-   Note that it is possible for end_symtab() to return NULL.  In
+   Note that it is possible for end_compunit_symtab() to return NULL.  In
    particular, for the DWARF case at least, it will return NULL when
    it finds a compilation unit that has exactly one DIE, a
    TAG_compile_unit DIE.  This can happen when we link in an object
@@ -1133,27 +1034,28 @@ buildsym_compunit::end_symtab_from_stati
    never know about this empty file (FIXME).
 
    If you need to modify STATIC_BLOCK before it is finalized you should
-   call end_symtab_get_static_block and end_symtab_from_static_block
-   yourself.  */
+   call end_compunit_symtab_get_static_block and
+   end_compunit_symtab_from_static_block yourself.  */
 
 struct compunit_symtab *
-buildsym_compunit::end_symtab (CORE_ADDR end_addr, int section)
+buildsym_compunit::end_compunit_symtab (CORE_ADDR end_addr)
 {
   struct block *static_block;
 
-  static_block = end_symtab_get_static_block (end_addr, 0, 0);
-  return end_symtab_from_static_block (static_block, section, 0);
+  static_block = end_compunit_symtab_get_static_block (end_addr, 0, 0);
+  return end_compunit_symtab_from_static_block (static_block, 0);
 }
 
-/* Same as end_symtab except create a symtab that can be later added to.  */
+/* Same as end_compunit_symtab except create a symtab that can be later added
+   to.  */
 
 struct compunit_symtab *
-buildsym_compunit::end_expandable_symtab (CORE_ADDR end_addr, int section)
+buildsym_compunit::end_expandable_symtab (CORE_ADDR end_addr)
 {
   struct block *static_block;
 
-  static_block = end_symtab_get_static_block (end_addr, 1, 0);
-  return end_symtab_from_static_block (static_block, section, 1);
+  static_block = end_compunit_symtab_get_static_block (end_addr, 1, 0);
+  return end_compunit_symtab_from_static_block (static_block, 1);
 }
 
 /* Subroutine of augment_type_symtab to simplify it.
@@ -1171,13 +1073,13 @@ set_missing_symtab (struct pending *pend
     {
       for (i = 0; i < pending->nsyms; ++i)
 	{
-	  if (symbol_symtab (pending->symbol[i]) == NULL)
-	    symbol_set_symtab (pending->symbol[i], COMPUNIT_FILETABS (cu));
+	  if (pending->symbol[i]->symtab () == NULL)
+	    pending->symbol[i]->set_symtab (cu->primary_filetab ());
 	}
     }
 }
 
-/* Same as end_symtab, but for the case where we're adding more symbols
+/* Same as end_compunit_symtab, but for the case where we're adding more symbols
    to an existing symtab that is known to contain only type information.
    This is the case for DWARF4 Type Units.  */
 
@@ -1185,7 +1087,7 @@ void
 buildsym_compunit::augment_type_symtab ()
 {
   struct compunit_symtab *cust = m_compunit_symtab;
-  const struct blockvector *blockvector = COMPUNIT_BLOCKVECTOR (cust);
+  struct blockvector *blockvector = cust->blockvector ();
 
   if (!m_context_stack.empty ())
     complaint (_("Context stack not empty in augment_type_symtab"));
@@ -1198,25 +1100,24 @@ buildsym_compunit::augment_type_symtab (
 
   if (m_file_symbols != NULL)
     {
-      struct block *block = BLOCKVECTOR_BLOCK (blockvector, STATIC_BLOCK);
+      struct block *block = blockvector->static_block ();
 
       /* First mark any symbols without a specified symtab as belonging
 	 to the primary symtab.  */
       set_missing_symtab (m_file_symbols, cust);
 
-      mdict_add_pending (BLOCK_MULTIDICT (block), m_file_symbols);
+      mdict_add_pending (block->multidict (), m_file_symbols);
     }
 
   if (m_global_symbols != NULL)
     {
-      struct block *block = BLOCKVECTOR_BLOCK (blockvector, GLOBAL_BLOCK);
+      struct block *block = blockvector->global_block ();
 
       /* First mark any symbols without a specified symtab as belonging
 	 to the primary symtab.  */
       set_missing_symtab (m_global_symbols, cust);
 
-      mdict_add_pending (BLOCK_MULTIDICT (block),
-			m_global_symbols);
+      mdict_add_pending (block->multidict (), m_global_symbols);
     }
 }
 
@@ -1227,8 +1128,7 @@ buildsym_compunit::augment_type_symtab (
 struct context_stack *
 buildsym_compunit::push_context (int desc, CORE_ADDR valu)
 {
-  m_context_stack.emplace_back ();
-  struct context_stack *newobj = &m_context_stack.back ();
+  struct context_stack *newobj = &m_context_stack.emplace_back ();
 
   newobj->depth = desc;
   newobj->locals = m_local_symbols;
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/buildsym.h ./gdb/buildsym.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/buildsym.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/buildsym.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,14 +16,15 @@
    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 (BUILDSYM_H)
-#define BUILDSYM_H 1
+#ifndef GDB_BUILDSYM_H
+#define GDB_BUILDSYM_H
 
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
+#include "symtab.h"
+#include "addrmap.h"
 
 struct objfile;
 struct symbol;
-struct addrmap;
 struct compunit_symtab;
 enum language;
 
@@ -45,18 +46,27 @@ struct dynamic_prop;
 
 struct subfile
 {
-  struct subfile *next;
-  /* Space for this is malloc'd.  */
-  char *name;
-  /* Space for this is malloc'd.  */
-  struct linetable *line_vector;
-  int line_vector_length;
-  /* The "containing" compunit.  */
-  struct buildsym_compunit *buildsym_compunit;
-  enum language language;
-  struct symtab *symtab;
+  subfile () = default;
+
+  /* There's nothing wrong with copying a subfile, but we don't need to, so use
+     this to avoid copying one by mistake.  */
+  DISABLE_COPY_AND_ASSIGN (subfile);
+
+  struct subfile *next = nullptr;
+  std::string name;
+
+  /* This field is analogous in function to symtab::filename_for_id.
+
+     It is used to look up existing subfiles in calls to start_subfile.  */
+  std::string name_for_id;
+
+  std::vector<linetable_entry> line_vector_entries;
+  enum language language = language_unknown;
+  struct symtab *symtab = nullptr;
 };
 
+using subfile_up = std::unique_ptr<subfile>;
+
 /* Record the symbols defined for each context in a list.  We don't
    create a struct block for the context until we know how long to
    make it.  */
@@ -110,18 +120,48 @@ struct context_stack
 
   };
 
+/* Flags associated with a linetable entry.  */
+
+enum linetable_entry_flag : unsigned
+{
+  /* Indicates this PC is a good location to place a breakpoint at LINE.  */
+  LEF_IS_STMT = 1 << 1,
+
+  /* Indicates this PC is a good location to place a breakpoint at the first
+     instruction past a function prologue.  */
+  LEF_PROLOGUE_END = 1 << 2,
+
+  /* Indicated that this PC is part of the epilogue of a function, making
+     software watchpoints unreliable.  */
+  LEF_EPILOGUE_BEGIN = 1 << 3,
+};
+DEF_ENUM_FLAGS_TYPE (enum linetable_entry_flag, linetable_entry_flags);
+
+
 /* Buildsym's counterpart to struct compunit_symtab.  */
 
 struct buildsym_compunit
 {
   /* Start recording information about a primary source file (IOW, not an
      included source file).
+
      COMP_DIR is the directory in which the compilation unit was compiled
-     (or NULL if not known).  */
+     (or NULL if not known).
+
+     NAME and NAME_FOR_ID have the same purpose as for the start_subfile
+     method.  */
+
+  buildsym_compunit (struct objfile *objfile_, const char *name,
+		     const char *comp_dir_, const char *name_for_id,
+		     enum language language_, CORE_ADDR last_addr);
+
+  /* Same as above, but passes NAME for NAME_FOR_ID.  */
 
   buildsym_compunit (struct objfile *objfile_, const char *name,
 		     const char *comp_dir_, enum language language_,
-		     CORE_ADDR last_addr);
+		     CORE_ADDR last_addr)
+    : buildsym_compunit (objfile_, name, comp_dir_, name, language_, last_addr)
+  {}
 
   /* Reopen an existing compunit_symtab so that additional symbols can
      be added to it.  Arguments are as for the main constructor.  CUST
@@ -132,7 +172,7 @@ struct buildsym_compunit
 		     CORE_ADDR last_addr, struct compunit_symtab *cust)
     : m_objfile (objfile_),
       m_last_source_file (name == nullptr ? nullptr : xstrdup (name)),
-      m_comp_dir (comp_dir_ == nullptr ? nullptr : xstrdup (comp_dir_)),
+      m_comp_dir (comp_dir_ == nullptr ? "" : comp_dir_),
       m_compunit_symtab (cust),
       m_language (language_),
       m_last_source_start_addr (last_addr)
@@ -179,7 +219,22 @@ struct buildsym_compunit
   void record_block_range (struct block *block,
 			   CORE_ADDR start, CORE_ADDR end_inclusive);
 
-  void start_subfile (const char *name);
+  /* Start recording information about source code that comes from a source
+     file.  This sets the current subfile, creating it if necessary.
+
+     NAME is the user-visible name of the subfile.
+
+     NAME_FOR_ID is a name that must be stable between the different calls to
+     start_subfile referring to the same file (it is used for looking up
+     existing subfiles).  It can be equal to NAME if NAME follows that rule.  */
+  void start_subfile (const char *name, const char *name_for_id);
+
+  /* Same as above, but passes NAME for NAME_FOR_ID.  */
+
+  void start_subfile (const char *name)
+  {
+    return start_subfile (name, name);
+  }
 
   void patch_subfile_names (struct subfile *subfile, const char *name);
 
@@ -187,7 +242,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, unrelocated_addr pc,
+		    linetable_entry_flags flags);
 
   struct compunit_symtab *get_compunit_symtab ()
   {
@@ -270,16 +326,15 @@ struct buildsym_compunit
 
   struct context_stack pop_context ();
 
-  struct block *end_symtab_get_static_block (CORE_ADDR end_addr,
-					     int expandable, int required);
+  struct block *end_compunit_symtab_get_static_block
+    (CORE_ADDR end_addr, int expandable, int required);
 
-  struct compunit_symtab *end_symtab_from_static_block
-      (struct block *static_block, int section, int expandable);
+  struct compunit_symtab *end_compunit_symtab_from_static_block
+    (struct block *static_block, int expandable);
 
-  struct compunit_symtab *end_symtab (CORE_ADDR end_addr, int section);
+  struct compunit_symtab *end_compunit_symtab (CORE_ADDR end_addr);
 
-  struct compunit_symtab *end_expandable_symtab (CORE_ADDR end_addr,
-						 int section);
+  struct compunit_symtab *end_expandable_symtab (CORE_ADDR end_addr);
 
   void augment_type_symtab ();
 
@@ -298,8 +353,8 @@ private:
 
   void watch_main_source_file_lossage ();
 
-  struct compunit_symtab *end_symtab_with_blockvector
-      (struct block *static_block, int section, int expandable);
+  struct compunit_symtab *end_compunit_symtab_with_blockvector
+    (struct block *static_block, int expandable);
 
   /* The objfile we're reading debug info from.  */
   struct objfile *m_objfile;
@@ -319,7 +374,7 @@ private:
   gdb::unique_xmalloc_ptr<char> m_last_source_file;
 
   /* E.g., DW_AT_comp_dir if DWARF.  Space for this is malloc'd.  */
-  gdb::unique_xmalloc_ptr<char> m_comp_dir;
+  std::string m_comp_dir;
 
   /* Space for this is not malloc'd, and is assumed to have at least
      the same lifetime as objfile.  */
@@ -366,12 +421,7 @@ private:
   /* The mutable address map for the compilation unit whose symbols
      we're currently reading.  The symtabs' shared blockvector will
      point to a fixed copy of this.  */
-  struct addrmap *m_pending_addrmap = nullptr;
-
-  /* The obstack on which we allocate pending_addrmap.
-     If pending_addrmap is NULL, this is uninitialized; otherwise, it is
-     initialized (and holds pending_addrmap).  */
-  auto_obstack m_pending_addrmap_obstack;
+  struct addrmap_mutable m_pending_addrmap;
 
   /* True if we recorded any ranges in the addrmap that are different
      from those in the blockvector already.  We set this to false when
@@ -398,7 +448,7 @@ private:
   struct pending *m_local_symbols = nullptr;
 };
 
-
+using buildsym_compunit_up = std::unique_ptr<buildsym_compunit>;
 
 extern void add_symbol_to_list (struct symbol *symbol,
 				struct pending **listhead);
@@ -406,4 +456,4 @@ extern void add_symbol_to_list (struct s
 extern struct symbol *find_symbol_in_list (struct pending *list,
 					   char *name, int length);
 
-#endif /* defined (BUILDSYM_H) */
+#endif /* GDB_BUILDSYM_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.20200303/gdb/buildsym-legacy.c ./gdb/buildsym-legacy.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/buildsym-legacy.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/buildsym-legacy.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,12 +16,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/>.  */
 
-#include "defs.h"
 #include "buildsym-legacy.h"
 #include "symtab.h"
 
 /* The work-in-progress of the compunit we are building.
-   This is created first, before any subfiles by start_symtab.  */
+   This is created first, before any subfiles by start_compunit_symtab.  */
 
 static struct buildsym_compunit *buildsym_compunit;
 
@@ -79,33 +78,6 @@ get_last_source_start_addr ()
 
 /* See buildsym.h.  */
 
-struct using_direct **
-get_local_using_directives ()
-{
-  gdb_assert (buildsym_compunit != nullptr);
-  return buildsym_compunit->get_local_using_directives ();
-}
-
-/* See buildsym.h.  */
-
-void
-set_local_using_directives (struct using_direct *new_local)
-{
-  gdb_assert (buildsym_compunit != nullptr);
-  buildsym_compunit->set_local_using_directives (new_local);
-}
-
-/* See buildsym.h.  */
-
-struct using_direct **
-get_global_using_directives ()
-{
-  gdb_assert (buildsym_compunit != nullptr);
-  return buildsym_compunit->get_global_using_directives ();
-}
-
-/* See buildsym.h.  */
-
 bool
 outermost_context_p ()
 {
@@ -115,15 +87,6 @@ outermost_context_p ()
 
 /* See buildsym.h.  */
 
-struct context_stack *
-get_current_context_stack ()
-{
-  gdb_assert (buildsym_compunit != nullptr);
-  return buildsym_compunit->get_current_context_stack ();
-}
-
-/* See buildsym.h.  */
-
 int
 get_context_stack_depth ()
 {
@@ -207,11 +170,11 @@ free_buildsym_compunit (void)
 }
 
 struct compunit_symtab *
-end_symtab (CORE_ADDR end_addr, int section)
+end_compunit_symtab (CORE_ADDR end_addr)
 {
   gdb_assert (buildsym_compunit != nullptr);
   struct compunit_symtab *result
-    = buildsym_compunit->end_symtab (end_addr, section);
+    = buildsym_compunit->end_compunit_symtab (end_addr);
   free_buildsym_compunit ();
   return result;
 }
@@ -241,24 +204,18 @@ finish_block (struct symbol *symbol, str
 }
 
 void
-record_block_range (struct block *block, CORE_ADDR start,
-		    CORE_ADDR end_inclusive)
+record_line (struct subfile *subfile, int line, unrelocated_addr pc)
 {
   gdb_assert (buildsym_compunit != nullptr);
-  buildsym_compunit->record_block_range (block, start, end_inclusive);
+  /* 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, LEF_IS_STMT);
 }
 
-void
-record_line (struct subfile *subfile, int line, CORE_ADDR pc)
-{
-  gdb_assert (buildsym_compunit != nullptr);
-  buildsym_compunit->record_line (subfile, line, pc);
-}
-
-/* Start a new symtab for a new source file in OBJFILE.  Called, for example,
-   when a stabs symbol of type N_SO is seen, or when a DWARF
-   TAG_compile_unit DIE is seen.  It indicates the start of data for
-   one original source file.
+/* Start a new compunit_symtab for a new source file in OBJFILE.  Called, for
+   example, when a stabs symbol of type N_SO is seen, or when a DWARF
+   DW_TAG_compile_unit DIE is seen.  It indicates the start of data for one
+   original source file.
 
    NAME is the name of the file (cannot be NULL).  COMP_DIR is the
    directory in which the file was compiled (or NULL if not known).
@@ -268,8 +225,9 @@ record_line (struct subfile *subfile, in
    the filename.  */
 
 struct compunit_symtab *
-start_symtab (struct objfile *objfile, const char *name, const char *comp_dir,
-	      CORE_ADDR start_addr, enum language language)
+start_compunit_symtab (struct objfile *objfile, const char *name,
+		       const char *comp_dir, CORE_ADDR start_addr,
+		       enum language language)
 {
   /* These should have been reset either by successful completion of building
      a symtab, or by the scoped_free_pendings destructor.  */
@@ -281,51 +239,6 @@ start_symtab (struct objfile *objfile, c
   return buildsym_compunit->get_compunit_symtab ();
 }
 
-/* Restart compilation for a symtab.
-   CUST is the result of end_expandable_symtab.
-   NAME, START_ADDR are the source file we are resuming with.
-
-   This is used when a symtab is built from multiple sources.
-   The symtab is first built with start_symtab/end_expandable_symtab
-   and then for each additional piece call restart_symtab/augment_*_symtab.
-   Note: At the moment there is only augment_type_symtab.  */
-
-void
-restart_symtab (struct compunit_symtab *cust,
-		const char *name, CORE_ADDR start_addr)
-{
-  /* These should have been reset either by successful completion of building
-     a symtab, or by the scoped_free_pendings destructor.  */
-  gdb_assert (buildsym_compunit == nullptr);
-
-  buildsym_compunit
-    = new struct buildsym_compunit (COMPUNIT_OBJFILE (cust),
-				    name,
-				    COMPUNIT_DIRNAME (cust),
-				    compunit_language (cust),
-				    start_addr,
-				    cust);
-}
-
-/* See buildsym.h.  */
-
-struct compunit_symtab *
-buildsym_compunit_symtab (void)
-{
-  gdb_assert (buildsym_compunit != NULL);
-
-  return buildsym_compunit->get_compunit_symtab ();
-}
-
-/* See buildsym.h.  */
-
-struct macro_table *
-get_macro_table (void)
-{
-  gdb_assert (buildsym_compunit != NULL);
-  return buildsym_compunit->get_macro_table ();
-}
-
 /* At end of reading syms, or in case of quit, ensure everything
    associated with building symtabs is freed.
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/buildsym-legacy.h ./gdb/buildsym-legacy.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/buildsym-legacy.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/buildsym-legacy.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,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/>.  */
 
-#ifndef BUILDSYM_LEGACY_H
-#define BUILDSYM_LEGACY_H
+#ifndef GDB_BUILDSYM_LEGACY_H
+#define GDB_BUILDSYM_LEGACY_H
 
 #include "buildsym.h"
 
@@ -30,20 +30,20 @@
    The basic way this module is used is as follows:
 
    scoped_free_pendings free_pending;
-   cust = start_symtab (...);
+   cust = start_compunit_symtab (...);
    ... read debug info ...
-   cust = end_symtab (...);
+   cust = end_compunit_symtab (...);
 
-   The compunit symtab pointer ("cust") is returned from both start_symtab
-   and end_symtab to simplify the debug info readers.
+   The compunit symtab pointer ("cust") is returned from both
+   start_compunit_symtab and end_compunit_symtab to simplify the debug info readers.
 
    dbxread.c and xcoffread.c use another variation:
 
    scoped_free_pendings free_pending;
-   cust = start_symtab (...);
+   cust = start_compunit_symtab (...);
    ... read debug info ...
-   cust = end_symtab (...);
-   ... start_symtab + read + end_symtab repeated ...
+   cust = end_compunit_symtab (...);
+   ... start_compunit_symtab + read + end_compunit_symtab repeated ...
 */
 
 class scoped_free_pendings
@@ -62,9 +62,6 @@ extern struct block *finish_block (struc
 				   CORE_ADDR start,
 				   CORE_ADDR end);
 
-extern void record_block_range (struct block *,
-                                CORE_ADDR start, CORE_ADDR end_inclusive);
-
 extern void start_subfile (const char *name);
 
 extern void patch_subfile_names (struct subfile *subfile, const char *name);
@@ -73,22 +70,20 @@ extern void push_subfile ();
 
 extern const char *pop_subfile ();
 
-extern struct compunit_symtab *end_symtab (CORE_ADDR end_addr, int section);
+extern struct compunit_symtab *end_compunit_symtab (CORE_ADDR end_addr);
 
 extern struct context_stack *push_context (int desc, CORE_ADDR valu);
 
 extern struct context_stack pop_context ();
 
-extern void record_line (struct subfile *subfile, int line, CORE_ADDR pc);
-
-extern struct compunit_symtab *start_symtab (struct objfile *objfile,
-					     const char *name,
-					     const char *comp_dir,
-					     CORE_ADDR start_addr,
-					     enum language language);
+extern void record_line (struct subfile *subfile, int line,
+			 unrelocated_addr pc);
 
-extern void restart_symtab (struct compunit_symtab *cust,
-			    const char *name, CORE_ADDR start_addr);
+extern struct compunit_symtab *start_compunit_symtab (struct objfile *objfile,
+						      const char *name,
+						      const char *comp_dir,
+						      CORE_ADDR start_addr,
+						      enum language language);
 
 /* Record the name of the debug format in the current pending symbol
    table.  FORMAT must be a string with a lifetime at least as long as
@@ -111,50 +106,20 @@ extern void set_last_source_file (const
 
 extern const char *get_last_source_file (void);
 
-/* Return the compunit symtab object.
-   It is only valid to call this between calls to start_symtab and the
-   end_symtab* functions.  */
-
-extern struct compunit_symtab *buildsym_compunit_symtab (void);
-
-/* Return the macro table.
-   Initialize it if this is the first use.
-   It is only valid to call this between calls to start_symtab and the
-   end_symtab* functions.  */
-
-extern struct macro_table *get_macro_table (void);
-
 /* Set the last source start address.  Can only be used between
-   start_symtab and end_symtab* calls.  */
+   start_compunit_symtab and end_compunit_symtab* calls.  */
 
 extern void set_last_source_start_addr (CORE_ADDR addr);
 
 /* Get the last source start address.  Can only be used between
-   start_symtab and end_symtab* calls.  */
+   start_compunit_symtab and end_compunit_symtab* calls.  */
 
 extern CORE_ADDR get_last_source_start_addr ();
 
-/* Return the local using directives.  */
-
-extern struct using_direct **get_local_using_directives ();
-
-/* Set the list of local using directives.  */
-
-extern void set_local_using_directives (struct using_direct *new_local);
-
-/* Return the global using directives.  */
-
-extern struct using_direct **get_global_using_directives ();
-
 /* True if the context stack is empty.  */
 
 extern bool outermost_context_p ();
 
-/* Return the top of the context stack, or nullptr if there is an
-   entry.  */
-
-extern struct context_stack *get_current_context_stack ();
-
 /* Return the context stack depth.  */
 
 extern int get_context_stack_depth ();
@@ -179,4 +144,4 @@ extern struct pending **get_global_symbo
 
 extern struct buildsym_compunit *get_buildsym_compunit ();
 
-#endif /* BUILDSYM_LEGACY_H */
+#endif /* GDB_BUILDSYM_LEGACY_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.20200303/gdb/c-exp.c ./gdb/c-exp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/c-exp.c	2020-03-03 02:12:50.000000000 +0000
+++ ./gdb/c-exp.c	2026-03-05 02:15:32.000000000 +0000
@@ -1,21 +1,19 @@
+/* A Bison parser, made by GNU Bison 3.0.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 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,7 +26,7 @@
    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.  */
 
@@ -46,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.4.1"
+#define YYBISON_VERSION "3.0.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -60,18 +58,13 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-/* Using locations.  */
-#define YYLSP_NEEDED 0
 
 
 
 /* Copy the first part of user declarations.  */
+#line 36 "c-exp.y" /* yacc.c:339  */
 
-/* Line 189 of yacc.c  */
-#line 36 "c-exp.y"
 
-
-#include "defs.h"
 #include <ctype.h>
 #include "expression.h"
 #include "value.h"
@@ -79,9 +72,6 @@
 #include "language.h"
 #include "c-lang.h"
 #include "c-support.h"
-#include "bfd.h" /* Required by objfiles.h.  */
-#include "symfile.h" /* Required by objfiles.h.  */
-#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
 #include "charset.h"
 #include "block.h"
 #include "cp-support.h"
@@ -90,6 +80,8 @@
 #include "typeprint.h"
 #include "cp-abi.h"
 #include "type-stack.h"
+#include "target-float.h"
+#include "c-exp.h"
 
 #define parse_type(ps) builtin_type (ps->gdbarch ())
 
@@ -158,15 +150,17 @@ static void yyerror (const char *);
 
 static int type_aggregate_p (struct type *);
 
+using namespace expr;
 
+#line 156 "c-exp.c.tmp" /* yacc.c:339  */
 
-/* Line 189 of yacc.c  */
-#line 165 "c-exp.c.tmp"
-
-/* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 0
-#endif
+# ifndef YY_NULLPTRPTR
+#  if defined __cplusplus && 201103L <= __cplusplus
+#   define YY_NULLPTRPTR nullptr
+#  else
+#   define YY_NULLPTRPTR 0
+#  endif
+# endif
 
 /* Enabling verbose error messages.  */
 #ifdef YYERROR_VERBOSE
@@ -176,157 +170,168 @@ static int type_aggregate_p (struct type
 # define YYERROR_VERBOSE 0
 #endif
 
-/* Enabling the token table.  */
-#ifndef YYTOKEN_TABLE
-# define YYTOKEN_TABLE 0
-#endif
 
+/* Debug traces.  */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+#if YYDEBUG
+extern int yydebug;
+#endif
 
-/* Tokens.  */
+/* Token type.  */
 #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
+  {
+    INT = 258,
+    COMPLEX_INT = 259,
+    FLOAT = 260,
+    COMPLEX_FLOAT = 261,
+    STRING = 262,
+    NSSTRING = 263,
+    SELECTOR = 264,
+    CHAR = 265,
+    NAME = 266,
+    UNKNOWN_CPP_NAME = 267,
+    COMPLETE = 268,
+    TYPENAME = 269,
+    CLASSNAME = 270,
+    OBJC_LBRAC = 271,
+    NAME_OR_INT = 272,
+    OPERATOR = 273,
+    STRUCT = 274,
+    CLASS = 275,
+    UNION = 276,
+    ENUM = 277,
+    SIZEOF = 278,
+    ALIGNOF = 279,
+    UNSIGNED = 280,
+    COLONCOLON = 281,
+    TEMPLATE = 282,
+    ERROR = 283,
+    NEW = 284,
+    DELETE = 285,
+    REINTERPRET_CAST = 286,
+    DYNAMIC_CAST = 287,
+    STATIC_CAST = 288,
+    CONST_CAST = 289,
+    ENTRY = 290,
+    TYPEOF = 291,
+    DECLTYPE = 292,
+    TYPEID = 293,
+    SIGNED_KEYWORD = 294,
+    LONG = 295,
+    SHORT = 296,
+    INT_KEYWORD = 297,
+    CONST_KEYWORD = 298,
+    VOLATILE_KEYWORD = 299,
+    DOUBLE_KEYWORD = 300,
+    RESTRICT = 301,
+    ATOMIC = 302,
+    FLOAT_KEYWORD = 303,
+    COMPLEX = 304,
+    DOLLAR_VARIABLE = 305,
+    ASSIGN_MODIFY = 306,
+    TRUEKEYWORD = 307,
+    FALSEKEYWORD = 308,
+    ABOVE_COMMA = 309,
+    OROR = 310,
+    ANDAND = 311,
+    EQUAL = 312,
+    NOTEQUAL = 313,
+    LEQ = 314,
+    GEQ = 315,
+    LSH = 316,
+    RSH = 317,
+    UNARY = 318,
+    INCREMENT = 319,
+    DECREMENT = 320,
+    ARROW = 321,
+    ARROW_STAR = 322,
+    DOT_STAR = 323,
+    BLOCKNAME = 324,
+    FILENAME = 325,
+    DOTDOTDOT = 326
+  };
 #endif
 /* Tokens.  */
 #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 c_exp_YYSTYPE && ! defined c_exp_YYSTYPE_IS_DECLARED
 
-
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+union c_exp_YYSTYPE
 {
-
-/* Line 214 of yacc.c  */
-#line 132 "c-exp.y"
+#line 131 "c-exp.y" /* yacc.c:355  */
 
     LONGEST lval;
     struct {
@@ -354,38 +359,37 @@ typedef union YYSTYPE
     struct objc_class_str theclass;
   
 
+#line 363 "c-exp.c.tmp" /* yacc.c:355  */
+};
 
-/* Line 214 of yacc.c  */
-#line 360 "c-exp.c.tmp"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
+typedef union c_exp_YYSTYPE c_exp_YYSTYPE;
+# define c_exp_YYSTYPE_IS_TRIVIAL 1
+# define c_exp_YYSTYPE_IS_DECLARED 1
 #endif
 
 
-/* Copy the second part of user declarations.  */
+extern c_exp_YYSTYPE yylval;
+
+int yyparse (void);
 
-/* Line 264 of yacc.c  */
-#line 159 "c-exp.y"
 
-/* YYSTYPE gets defined by %union */
+
+/* Copy the second part of user declarations.  */
+#line 158 "c-exp.y" /* yacc.c:358  */
+
+/* c_exp_YYSTYPE gets defined by %union */
 static int parse_number (struct parser_state *par_state,
-			 const char *, int, int, YYSTYPE *);
+			 const char *, int, int, c_exp_YYSTYPE *);
 static struct stoken operator_stoken (const char *);
 static struct stoken typename_stoken (const char *);
 static void check_parameter_typelist (std::vector<struct type *> *);
-static void write_destructor_name (struct parser_state *par_state,
-				   struct stoken);
 
-#ifdef YYBISON
-static void c_print_token (FILE *file, int type, YYSTYPE value);
+#if defined(YYBISON) && YYBISON < 30800
+static void c_print_token (FILE *file, int type, c_exp_YYSTYPE value);
 #define YYPRINT(FILE, TYPE, VALUE) c_print_token (FILE, TYPE, VALUE)
 #endif
 
-
-/* Line 264 of yacc.c  */
-#line 389 "c-exp.c.tmp"
+#line 393 "c-exp.c.tmp" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -399,11 +403,8 @@ typedef unsigned char yytype_uint8;
 
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
 #ifdef YYTYPE_UINT16
@@ -423,8 +424,7 @@ 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 YYSIZE_T
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -435,42 +435,71 @@ typedef short int yytype_int16;
 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
 
 #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
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+#  define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
 # 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__ && 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
 
 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
@@ -487,11 +516,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 +528,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,25 +543,23 @@ 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
@@ -542,97 +569,103 @@ void xfree (void *); /* INFRINGES ON USE
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-	 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined c_exp_YYSTYPE_IS_TRIVIAL && c_exp_YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
-union yyalloc
+union c_exp_yyalloc
 {
   yytype_int16 yyss_alloc;
-  YYSTYPE yyvs_alloc;
+  c_exp_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 (sizeof (union c_exp_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) * (sizeof (yytype_int16) + sizeof (c_exp_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                                                                  \
+      {                                                                 \
+        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 (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, (Count) * sizeof (*(Src)))
+#  else
+#   define YYCOPY(Dst, Src, Count)              \
+      do                                        \
+        {                                       \
+          YYSIZE_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   1742
 
 /* 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
+#define YYNRULES  285
+/* YYNSTATES -- Number of states.  */
+#define YYNSTATES  442
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   320
+#define YYMAXUTOK   326
 
-#define YYTRANSLATE(YYX)						\
+#define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
 static const yytype_uint8 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 +683,747 @@ 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.  */
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 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,   276,   276,   277,   280,   284,   288,   292,   299,   300,
+     305,   309,   313,   317,   321,   331,   335,   339,   343,   347,
+     351,   355,   359,   363,   367,   374,   384,   393,   400,   410,
+     418,   422,   434,   444,   453,   460,   470,   478,   482,   486,
+     496,   495,   515,   514,   526,   525,   531,   533,   536,   537,
+     540,   542,   544,   551,   548,   564,   573,   572,   591,   595,
+     598,   602,   606,   621,   631,   638,   639,   642,   649,   652,
+     661,   665,   675,   681,   685,   689,   693,   697,   701,   705,
+     709,   713,   723,   733,   743,   753,   763,   773,   777,   781,
+     785,   801,   817,   834,   844,   853,   860,   873,   882,   893,
+     902,   925,   928,   934,   941,   960,   964,   968,   972,   979,
+     996,  1014,  1046,  1056,  1062,  1070,  1078,  1084,  1098,  1111,
+    1128,  1139,  1155,  1164,  1165,  1176,  1249,  1250,  1254,  1256,
+    1258,  1260,  1262,  1267,  1275,  1276,  1280,  1281,  1286,  1285,
+    1289,  1288,  1291,  1293,  1295,  1297,  1301,  1308,  1310,  1311,
+    1314,  1316,  1324,  1332,  1339,  1347,  1349,  1351,  1353,  1357,
+    1362,  1374,  1381,  1384,  1387,  1390,  1393,  1396,  1399,  1402,
+    1405,  1408,  1411,  1414,  1417,  1420,  1423,  1426,  1429,  1432,
+    1435,  1438,  1441,  1444,  1447,  1450,  1453,  1456,  1459,  1464,
+    1469,  1474,  1477,  1480,  1483,  1499,  1501,  1503,  1507,  1512,
+    1518,  1524,  1529,  1535,  1541,  1546,  1552,  1558,  1562,  1567,
+    1576,  1581,  1583,  1587,  1588,  1595,  1602,  1612,  1614,  1623,
+    1632,  1639,  1640,  1647,  1651,  1652,  1655,  1656,  1659,  1663,
+    1665,  1669,  1671,  1673,  1675,  1677,  1679,  1681,  1683,  1685,
+    1687,  1689,  1691,  1693,  1695,  1697,  1699,  1701,  1703,  1705,
+    1707,  1747,  1749,  1751,  1753,  1755,  1757,  1759,  1761,  1763,
+    1765,  1767,  1769,  1771,  1773,  1775,  1777,  1779,  1802,  1803,
+    1804,  1805,  1806,  1807,  1808,  1809,  1812,  1813,  1814,  1815,
+    1816,  1817,  1820,  1821,  1829,  1842
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+#if YYDEBUG || YYERROR_VERBOSE || 0
 /* 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",
-  "STATIC_CAST", "CONST_CAST", "ENTRY", "TYPEOF", "DECLTYPE", "TYPEID",
-  "SIGNED_KEYWORD", "LONG", "SHORT", "INT_KEYWORD", "CONST_KEYWORD",
-  "VOLATILE_KEYWORD", "DOUBLE_KEYWORD", "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", "')'",
-  "'!'", "'~'", "']'", "':'", "'{'", "'}'", "$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",
+  "$end", "error", "$undefined", "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", "RESTRICT", "ATOMIC", "FLOAT_KEYWORD", "COMPLEX",
+  "DOLLAR_VARIABLE", "ASSIGN_MODIFY", "TRUEKEYWORD", "FALSEKEYWORD", "','",
+  "ABOVE_COMMA", "'='", "'?'", "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", "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", "typebase", "type_name", "parameter_typelist",
-  "nonempty_typelist", "ptype", "conversion_type_id",
+  "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", 0
+  "oper", "field_name", "name", "name_not_typename", YY_NULLPTRPTR
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
 static const yytype_uint16 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
 
-/* 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 -225
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-225)))
+
+#define YYTABLE_NINF -128
+
+#define yytable_value_is_error(Yytable_value) \
+  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
+     408,  -225,  -225,  -225,  -225,  -225,  -225,   -24,  -225,  -225,
+     -11,    30,   592,  -225,   855,   241,   270,   278,   288,   684,
+       4,    87,    29,   208,    35,    44,    53,    59,    45,    46,
+      49,   199,   589,    83,  -225,  -225,  -225,  -225,  -225,  -225,
+    -225,   312,  -225,  -225,  -225,   776,    68,   776,   776,   776,
+     776,   776,   408,   117,  -225,   776,   776,  -225,   149,  -225,
+     101,  1380,   408,   130,  -225,   141,   184,   170,  -225,  -225,
+    -225,  1671,  -225,  -225,    73,   201,  -225,   163,   208,  -225,
+     147,    30,  -225,  1380,  -225,   118,    -2,    11,  -225,  -225,
+    -225,  -225,  -225,  -225,  -225,  -225,  -225,  -225,  -225,  -225,
+    -225,  -225,  -225,  -225,  -225,  -225,  -225,  -225,  -225,  -225,
+    -225,  -225,  -225,   119,   123,  -225,  -225,   772,  -225,  -225,
+    -225,  -225,  -225,  -225,  -225,  -225,   202,  -225,   215,  -225,
+     219,  -225,   221,    30,   408,   647,  1635,  -225,     6,   172,
+    -225,  -225,  -225,  -225,  -225,   171,  1635,  1635,  1635,  1635,
+     500,   776,   408,   150,  -225,  -225,   193,   200,   121,  -225,
+    -225,   205,   206,  -225,  -225,   647,  -225,  -225,   647,   647,
+     647,   647,   647,   162,   -30,   647,   647,  -225,   776,   776,
+     776,   776,   776,   776,   776,   776,   776,   776,   776,   776,
+     776,   776,   776,   776,   776,   776,   776,   776,   776,   776,
+     776,   776,  -225,  -225,    51,   776,   232,   776,   776,  1022,
+     161,  1380,   -29,   208,  -225,   208,  -225,    73,    73,    19,
+     -32,   187,  -225,    20,   966,   188,     1,  -225,    13,  -225,
+    -225,  -225,   176,   776,   208,   242,    40,    40,    40,  -225,
+     175,   177,   178,   186,  -225,  -225,    88,  -225,  -225,  -225,
+    -225,  -225,   190,   204,   255,  -225,  -225,  1671,   243,   246,
+     247,   249,  1128,   209,  1164,   218,  1200,   266,  -225,  -225,
+    -225,   277,   279,  -225,  -225,  -225,   776,  -225,  1380,   -22,
+    1380,  1380,   891,   317,  1441,  1475,  1502,  1536,  1563,  1563,
+     485,   485,   485,   485,   577,   577,   669,   287,   287,   647,
+     647,   647,  -225,    30,  -225,  -225,  -225,  -225,  -225,  -225,
+    -225,   208,  -225,   309,  -225,   120,  -225,   208,  -225,   311,
+     120,   -20,    34,   776,  -225,   236,   272,  -225,   776,   776,
+    -225,  -225,   302,  -225,   237,  -225,   188,   188,    73,   238,
+    -225,  -225,   245,   250,  -225,    13,  1058,  -225,  -225,  -225,
+      -5,  -225,   208,   776,   776,   239,    40,  -225,   251,   244,
+     248,  -225,  -225,  -225,  -225,  -225,  -225,  -225,  -225,  -225,
+     280,   253,   258,   262,   263,  -225,  -225,  -225,  -225,  -225,
+    -225,  -225,  -225,   647,  -225,   776,   337,  -225,   345,  -225,
+    -225,   331,   351,  -225,  -225,  -225,    21,    61,  1094,   647,
+    1380,  -225,    73,  -225,  -225,  -225,  -225,    73,  -225,  -225,
+    1380,  1380,  -225,  -225,   251,   776,  -225,  -225,  -225,   776,
+     776,   776,   776,  1414,  -225,  -225,  -225,  -225,  -225,  -225,
+    -225,  -225,  -225,  1380,  1236,  1272,  1308,  1344,  -225,  -225,
+    -225,  -225
 };
 
-/* 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_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,
+       0,    95,    96,    99,   100,   109,   112,     0,    97,   282,
+     285,   195,     0,    98,     0,     0,     0,     0,     0,     0,
+       0,   192,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   194,   163,   164,   162,   128,   129,   188,   131,   130,
+     189,     0,   102,   113,   114,     0,     0,     0,     0,     0,
+       0,     0,     0,   283,   116,     0,     0,    58,     0,     3,
+       2,     8,    59,    64,    66,     0,   111,     0,   101,   123,
+     134,     0,     4,   196,   221,   161,   284,   125,     0,    56,
+       0,    40,    42,    44,   195,     0,   231,   232,   250,   261,
+     247,   258,   257,   244,   242,   243,   253,   254,   248,   249,
+     255,   256,   251,   252,   237,   238,   239,   240,   241,   259,
+     260,   263,   262,     0,     0,   246,   245,   224,   267,   276,
+     280,   199,   278,   279,   277,   281,   198,   202,   201,   205,
+     204,   208,   207,     0,     0,    22,     0,   213,   215,   216,
+     214,   191,   285,   283,   124,     0,     0,     0,     0,     0,
+       0,     0,     0,   215,   216,   193,   171,   167,   172,   165,
+     190,   186,   184,   182,   197,    11,   132,   133,    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,   134,   211,   212,     0,
+     144,   142,   140,     0,     0,   146,   148,   222,   149,   152,
+     154,   118,     0,    59,     0,   120,     0,     0,     0,   266,
+       0,     0,     0,     0,   265,   264,   224,   223,   200,   203,
+     206,   209,     0,     0,   178,   169,   185,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   176,   168,   170,
+     166,   180,   175,   173,   187,   183,     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,   278,   275,   274,   272,   273,   271,   269,
+     270,     0,    29,    24,   268,    30,    33,     0,    36,    31,
+      37,     0,    55,    59,   219,     0,   217,    68,     0,     0,
+      69,    67,   119,   135,     0,   156,   145,   143,   137,     0,
+     155,   159,     0,     0,   138,   147,     0,   151,   153,   103,
+       0,   121,     0,     0,     0,     0,    47,    48,    46,     0,
+       0,   235,   233,   236,   234,   138,   225,   104,    23,   179,
+       0,     0,     0,     0,     0,     5,     6,     7,    21,    20,
+     177,   181,   174,    71,    39,     0,    27,    25,    34,    32,
+      38,   229,   230,    63,   228,   126,     0,   127,     0,    70,
+      61,   158,   136,   141,   157,   150,   160,   137,    57,   122,
+      52,    51,    41,    49,     0,     0,    43,    45,   210,     0,
+       0,     0,     0,    92,    28,    35,   226,   227,    54,    62,
+     218,   220,   139,    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
+    -225,  -225,     5,    15,   -12,  -225,  -225,  -225,  -124,  -225,
+      48,  -225,  -225,  -225,  -220,  -225,  -225,  -225,   194,  -225,
+    -225,  -225,  -151,     8,   -70,   -72,    14,  -114,  -225,  -225,
+    -225,   212,   197,  -224,  -222,  -122,   396,    17,   407,   234,
+    -225,  -225,  -225,   213,  -225,  -225,    -7,   256,     3,   441
 };
 
-/* 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,   355,   356,
+     357,   323,   233,    62,   212,    63,    64,    65,   328,    66,
+      67,    68,    69,   393,    70,    71,   403,   225,   407,   338,
+     226,   227,   228,   229,   230,    72,    73,    74,   141,   343,
+     326,    75,   118,   247,   394,   395,    76,   313,   358,    77
 };
 
-/* 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,
-     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,
+      83,   216,   218,   246,   347,    59,   348,   135,   125,   125,
+     125,   125,   252,   350,   240,    60,   125,   219,   126,   128,
+     130,   132,   334,   339,   178,   329,   145,   242,   263,   219,
+     221,   117,   178,   165,   178,   168,   169,   170,   171,   172,
+       9,   142,   222,   175,   176,   218,   254,    14,   255,   329,
+     211,   119,   120,   312,   122,   318,    80,   123,    14,   277,
+    -127,    78,   119,   120,   302,   303,   327,   210,   123,    14,
+     384,   125,   390,   125,    79,   329,   304,   391,   392,   166,
+     167,   232,   241,   235,   408,   223,   224,   324,   217,   136,
+     305,   306,   307,   308,   353,   243,   309,   223,   346,   310,
+     146,   137,   324,   396,   391,   392,   336,   337,   161,   147,
+     428,   335,   340,   359,   360,   143,    35,    36,   148,    38,
+      39,   347,   162,   348,   149,   163,   124,   138,   139,   140,
+     150,   151,   246,   354,   152,   370,   179,   124,   262,   264,
+     266,   253,   311,  -115,    46,   218,   271,   220,   333,   177,
+     221,   258,   259,   260,   261,   178,   -65,   265,   119,   120,
+     272,   122,   365,   273,   123,    14,   278,   213,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     267,   214,   268,   315,   279,   320,   215,   125,   231,   125,
+     204,   205,   206,   207,   208,   209,   125,   314,   125,   314,
+     239,   244,   245,   137,   256,   248,   331,   219,   332,   119,
+     120,   211,   122,   321,   324,   123,    14,   125,   249,   125,
+     125,   125,   250,   124,   251,   269,   257,   351,   234,   153,
+     154,   140,   270,   119,   120,   316,   303,   274,   275,   123,
+      14,   276,   119,   120,   121,   122,   327,   304,   123,    14,
+     220,   222,   344,   221,   383,   349,   402,   361,   352,   362,
+     363,   305,   306,   307,   308,   222,   431,   309,   364,   367,
+     310,   119,   120,   127,   122,   223,   224,   123,    14,   119,
+     120,   129,   122,   368,   124,   123,    14,   369,   376,   119,
+     120,   131,   122,   179,   125,   123,    14,   378,   380,   371,
+     125,   211,   372,   373,   386,   374,   399,   400,   124,   381,
+     388,   382,   387,   317,   389,   397,   398,   124,  -117,   401,
+     404,   412,   333,   179,   405,   402,   416,    21,   419,   406,
+     417,   410,   411,   420,   415,   125,   418,   421,   422,   125,
+     424,    31,    32,    33,    34,   409,   124,    37,   425,   414,
+      40,   199,   200,   201,   124,   202,   203,   204,   205,   206,
+     207,   208,   209,   423,   124,   426,   184,   185,   186,   187,
      188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     173,   198,   199,   200,   201,   202,   203,   178,   179,   180,
+     198,   199,   200,   201,   427,   202,   203,   204,   205,   206,
+     207,   208,   209,   433,   413,   429,   330,   434,   435,   436,
+     437,     1,     2,     3,     4,     5,     6,     7,     8,     9,
+      10,   432,    11,   345,    12,    13,    14,    15,    16,    17,
+      18,    19,    20,    21,    22,    23,   342,   164,   155,    24,
+      25,    26,    27,   325,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    40,    41,    42,   366,
+      43,    44,   319,   144,     0,     0,     0,     0,     0,     0,
+      45,     0,     0,     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,    81,    82,    12,    13,
+      14,     0,     0,     0,   156,    19,    20,     0,    22,     0,
+       0,     0,     0,    24,    25,    26,    27,     0,   157,   158,
+      30,   159,     0,     0,   160,     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,   179,    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,   133,     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,   202,   203,   204,   205,   206,
+     207,   208,   209,     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,   134,
+      53,    54,     0,     0,    55,    56,     0,     0,    57,     1,
+       2,     3,     4,     5,     6,     7,     8,     9,    10,     0,
+     133,     0,    12,    13,    14,     0,     0,     0,     0,    19,
+      20,     0,    22,     0,     0,     0,     0,    24,    25,    26,
+      27,     0,     0,     0,    30,    35,    36,     0,    38,    39,
+       0,     0,     0,     0,     0,     0,    42,     0,    43,    44,
+       0,   220,     0,     0,   221,     0,     0,     0,    45,     0,
+       0,     0,     0,    46,     0,     0,   222,     0,    47,    48,
+      49,     0,     0,     0,    50,    51,     0,     0,     0,     0,
+       0,    52,    53,    54,     0,     0,    55,    56,     0,    84,
+      57,    85,     0,     0,    15,    16,    17,    18,     0,     0,
+      21,     0,    23,     0,    86,    87,     0,     0,     0,     0,
+       0,     0,     0,     0,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,     0,    88,   179,     0,    89,
+       0,    90,     0,    91,    92,    93,    94,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,    46,   104,   105,   106,
+     107,   108,     0,   109,   110,   111,   112,     0,     0,   113,
+     114,     0,   180,     0,     0,   115,   116,   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,     0,     0,
+      84,     0,   219,     0,   385,    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,     0,
+       0,     0,     0,     0,     0,     0,    84,    46,     0,     0,
+     222,    15,    16,    17,    18,     0,     0,    21,     0,    23,
+     223,   224,     0,     0,     0,   341,     0,     0,     0,     0,
+       0,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    84,     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,    84,     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,   341,     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,   430,     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,   375,     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,
-     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,
-     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,   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,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,     0,   202,   203,   204,   205,   206,   207,   208,   209,
+       0,   180,   179,   377,     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,   379,
+       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,   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
+     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,     0,   180,   179,   440,     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,   441,     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,
+       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,     0,
+       0,     0,     0,     0,     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,   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,    84,
+       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,    84,     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,
-      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,
+      12,    71,    74,   117,   228,     0,   228,    19,    15,    16,
+      17,    18,   134,   233,    16,     0,    23,    16,    15,    16,
+      17,    18,     3,     3,    54,    54,    23,    16,   150,    16,
+      62,    14,    54,    45,    54,    47,    48,    49,    50,    51,
+      11,    12,    74,    55,    56,   117,    40,    18,    42,    54,
+      62,    11,    12,   204,    14,   206,    26,    17,    18,    89,
+      26,    85,    11,    12,    13,    14,    95,    62,    17,    18,
+      92,    78,    92,    80,    85,    54,    25,    43,    44,    11,
+      12,    78,    84,    80,    89,    84,    85,   209,    71,    85,
+      39,    40,    41,    42,    54,    84,    45,    84,    85,    48,
+      65,    14,   224,   323,    43,    44,   220,   221,    25,    65,
+      89,    92,    92,   237,   238,    86,    43,    44,    65,    46,
+      47,   345,    39,   345,    65,    42,    86,    40,    41,    42,
+      85,    85,   246,    93,    85,   257,    16,    86,   150,   151,
+     152,   136,    91,    26,    71,   217,    25,    59,   218,     0,
+      62,   146,   147,   148,   149,    54,    26,   152,    11,    12,
+      39,    14,    74,    42,    17,    18,   178,    26,   180,   181,
+     182,   183,   184,   185,   186,   187,   188,   189,   190,   191,
+     192,   193,   194,   195,   196,   197,   198,   199,   200,   201,
+      40,     7,    42,   205,   179,   207,    26,   204,    35,   206,
+      80,    81,    82,    83,    84,    85,   213,   204,   215,   206,
+      92,    92,    89,    14,    42,    13,   213,    16,   215,    11,
+      12,   233,    14,   208,   346,    17,    18,   234,    13,   236,
+     237,   238,    13,    86,    13,    42,    65,   234,    91,    40,
+      41,    42,    42,    11,    12,    13,    14,    42,    42,    17,
+      18,    89,    11,    12,    13,    14,    95,    25,    17,    18,
+      59,    74,    74,    62,   276,    89,   338,    92,    26,    92,
+      92,    39,    40,    41,    42,    74,   398,    45,    92,    89,
+      48,    11,    12,    13,    14,    84,    85,    17,    18,    11,
+      12,    13,    14,    89,    86,    17,    18,    42,    89,    11,
+      12,    13,    14,    16,   311,    17,    18,    89,    42,    66,
+     317,   323,    66,    66,   311,    66,   328,   329,    86,    42,
+     317,    42,    13,    91,    13,    89,    54,    86,    26,    92,
+      92,    92,   402,    16,    89,   407,    92,    25,    85,    89,
+      92,   353,   354,    85,    93,   352,    66,    85,    85,   356,
+      13,    39,    40,    41,    42,   352,    86,    45,    13,   356,
+      48,    74,    75,    76,    86,    78,    79,    80,    81,    82,
+      83,    84,    85,   385,    86,    44,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      14,    74,    75,    76,    77,    78,    79,    53,    54,    55,
+      73,    74,    75,    76,    43,    78,    79,    80,    81,    82,
+      83,    84,    85,   415,   356,   397,   212,   419,   420,   421,
+     422,     3,     4,     5,     6,     7,     8,     9,    10,    11,
+      12,   407,    14,   226,    16,    17,    18,    19,    20,    21,
+      22,    23,    24,    25,    26,    27,   224,    41,    31,    31,
+      32,    33,    34,   209,    36,    37,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,   246,
+      52,    53,   206,    22,    -1,    -1,    -1,    -1,    -1,    -1,
+      62,    -1,    -1,    -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,    16,    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,    78,    79,    80,    81,    82,
+      83,    84,    85,    -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,    -1,    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,    43,    44,    -1,    46,    47,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    53,
+      -1,    59,    -1,    -1,    62,    -1,    -1,    -1,    62,    -1,
+      -1,    -1,    -1,    71,    -1,    -1,    74,    -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,    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,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    14,    71,    -1,    -1,
+      74,    19,    20,    21,    22,    -1,    -1,    25,    -1,    27,
+      84,    85,    -1,    -1,    -1,    89,    -1,    -1,    -1,    -1,
+      -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,    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,    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,
-      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,
-      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,    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,
+      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,    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
+      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,
+      -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,    -1,
+      -1,    -1,    -1,    -1,    -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,    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,   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,    12,   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,   120,   133,   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,   120,     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
+  /* 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,   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
+};
 
-#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_uint8 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,     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
+};
 
 
-/* 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 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
 
-#define YYFAIL		goto yyerrlab
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)					\
-do								\
-  if (yychar == YYEMPTY && yylen == 1)				\
-    {								\
-      yychar = (Token);						\
-      yylval = (Value);						\
-      yytoken = YYTRANSLATE (yychar);				\
-      YYPOPSTACK (1);						\
-      goto yybackup;						\
-    }								\
-  else								\
-    {								\
+#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 (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
-
-
-/* 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
+      YYERROR;                                                  \
+    }                                                           \
+while (0)
+
+/* Error token number */
+#define YYTERROR        1
+#define YYERRCODE       256
 
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
-
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -1564,54 +1433,46 @@ 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))
+# 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
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+# 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 (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value 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
 static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
+yy_symbol_value_print (FILE *yyoutput, int yytype, c_exp_YYSTYPE const * const yyvaluep)
 {
+  FILE *yyo = yyoutput;
+  YYUSE (yyo);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
 # endif
-  switch (yytype)
-    {
-      default:
-	break;
-    }
+  YYUSE (yytype);
 }
 
 
@@ -1619,22 +1480,11 @@ yy_symbol_value_print (yyoutput, yytype,
 | Print this symbol on YYOUTPUT.  |
 `--------------------------------*/
 
-#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 *yyoutput, int yytype, c_exp_YYSTYPE const * const yyvaluep)
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyoutput, "%s %s (",
+             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
   YYFPRINTF (yyoutput, ")");
@@ -1645,16 +1495,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
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1665,49 +1507,42 @@ 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 (yytype_int16 *yyssp, c_exp_YYSTYPE *yyvsp, int yyrule)
 {
+  unsigned long 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);
+             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,
+                       yystos[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.  */
@@ -1721,7 +1556,7 @@ int yydebug;
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef	YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1736,7 +1571,6 @@ int yydebug;
 # define YYMAXDEPTH 10000
 #endif
 
-
 
 #if YYERROR_VERBOSE
 
@@ -1745,15 +1579,8 @@ int yydebug;
 #   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++)
@@ -1769,16 +1596,8 @@ yystrlen (yystr)
 #  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;
@@ -1808,27 +1627,27 @@ yytnamerr (char *yyres, const char *yyst
       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;
-	  }
+        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: ;
     }
 
@@ -1839,211 +1658,187 @@ yytnamerr (char *yyres, const char *yyst
 }
 # 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)
+/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
+   about the unexpected token YYTOKEN for the state stack whose top is
+   YYSSP.
+
+   Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
+   not large enough to hold the message.  In that case, also set
+   *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
+   required number of bytes is too large to store.  */
+static int
+yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+                yytype_int16 *yyssp, int yytoken)
 {
-  int yyn = yypact[yystate];
+  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTRPTR, yytname[yytoken]);
+  YYSIZE_T yysize = yysize0;
+  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+  /* Internationalized format string. */
+  const char *yyformat = YY_NULLPTRPTR;
+  /* Arguments of yyformat. */
+  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+  /* Number of reported tokens (one for the "unexpected", one per
+     "expected"). */
+  int yycount = 0;
+
+  /* There are many possibilities here to consider:
+     - If this state is a consistent state with a default action, then
+       the only way this function was invoked is if the default action
+       is an error action.  In that case, don't check for expected
+       tokens because there are none.
+     - The only way there can be no lookahead present (in yychar) is if
+       this state is a consistent state with a default action.  Thus,
+       detecting the absence of a lookahead is sufficient to determine
+       that there is no unexpected or expected token to report.  In that
+       case, just report a simple "syntax error".
+     - Don't assume there isn't a lookahead just because this state is a
+       consistent state with a default action.  There might have been a
+       previous inconsistent state, consistent state with a non-default
+       action, or user semantic action that manipulated yychar.
+     - Of course, the expected token list depends on states to have
+       correct lookahead information, and it depends on the parser not
+       to perform extra reductions after fetching a lookahead from the
+       scanner and before detecting a syntax error.  Thus, state merging
+       (from LALR or IELR) and default reductions corrupt the expected
+       token list.  However, the list is correct for canonical LR with
+       one exception: it will still contain any token that will not be
+       accepted due to an error action in a later state.
+  */
+  if (yytoken != YYEMPTY)
+    {
+      int yyn = yypact[*yyssp];
+      yyarg[yycount++] = yytname[yytoken];
+      if (!yypact_value_is_default (yyn))
+        {
+          /* Start YYX at -YYN if negative to avoid negative indexes in
+             YYCHECK.  In other words, skip the first -YYN actions for
+             this state because they are default actions.  */
+          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 yyx;
+
+          for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+            if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
+                && !yytable_value_is_error (yytable[yyx + yyn]))
+              {
+                if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+                  {
+                    yycount = 1;
+                    yysize = yysize0;
+                    break;
+                  }
+                yyarg[yycount++] = yytname[yyx];
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTRPTR, yytname[yyx]);
+                  if (! (yysize <= yysize1
+                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
+              }
+        }
+    }
 
-  if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
-    return 0;
-  else
+  switch (yycount)
     {
-      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;
+# define YYCASE_(N, S)                      \
+      case N:                               \
+        yyformat = S;                       \
+      break
+      YYCASE_(0, YY_("syntax error"));
+      YYCASE_(1, YY_("syntax error, unexpected %s"));
+      YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
+      YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
+      YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
+      YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
+# undef YYCASE_
     }
+
+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
+
+  if (*yymsg_alloc < yysize)
+    {
+      *yymsg_alloc = 2 * yysize;
+      if (! (yysize <= *yymsg_alloc
+             && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
+        *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
+      return 1;
+    }
+
+  /* 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 = *yymsg;
+    int yyi = 0;
+    while ((*yyp = *yyformat) != '\0')
+      if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
+        {
+          yyp += yytnamerr (yyp, yyarg[yyi++]);
+          yyformat += 2;
+        }
+      else
+        {
+          yyp++;
+          yyformat++;
+        }
+  }
+  return 0;
 }
 #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, int yytype, c_exp_YYSTYPE *yyvaluep)
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-
-      default:
-	break;
-    }
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+  YYUSE (yytype);
+  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;
-
+c_exp_YYSTYPE yylval;
 /* Number of syntax errors so far.  */
 int yynerrs;
 
 
+/*----------.
+| yyparse.  |
+`----------*/
 
-/*-------------------------.
-| 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)
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
-
-
     int 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.  */
 
     /* The state stack.  */
@@ -2052,19 +1847,19 @@ yyparse ()
     yytype_int16 *yyssp;
 
     /* The semantic value stack.  */
-    YYSTYPE yyvsa[YYINITDEPTH];
-    YYSTYPE *yyvs;
-    YYSTYPE *yyvsp;
+    c_exp_YYSTYPE yyvsa[YYINITDEPTH];
+    c_exp_YYSTYPE *yyvs;
+    c_exp_YYSTYPE *yyvsp;
 
     YYSIZE_T yystacksize;
 
   int yyn;
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  int yytoken = 0;
   /* The variables used to return semantic value and location from the
      action routines.  */
-  YYSTYPE yyval;
+  c_exp_YYSTYPE yyval;
 
 #if YYERROR_VERBOSE
   /* Buffer for error messages, and its allocated size.  */
@@ -2079,9 +1874,8 @@ yyparse ()
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
   yystacksize = YYINITDEPTH;
 
   YYDPRINTF ((stderr, "Starting parse\n"));
@@ -2090,14 +1884,6 @@ yyparse ()
   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;
 
 /*------------------------------------------------------------.
@@ -2118,23 +1904,23 @@ yyparse ()
 
 #ifdef 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);
+        /* Give user a chance to xreallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        c_exp_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;
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
@@ -2142,22 +1928,22 @@ yyparse ()
 # else
       /* 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);
+        yytype_int16 *yyss1 = yyss;
+        union c_exp_yyalloc *yyptr =
+          (union c_exp_yyalloc *) YYSTACK_ALLOC (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 */
@@ -2166,10 +1952,10 @@ yyparse ()
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-		  (unsigned long int) yystacksize));
+                  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-	YYABORT;
+        YYABORT;
     }
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -2189,7 +1975,7 @@ yybackup:
 
   /* 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.  */
@@ -2198,7 +1984,7 @@ yybackup:
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
@@ -2220,8 +2006,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;
     }
@@ -2238,7 +2024,9 @@ yybackup:
   yychar = YYEMPTY;
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   goto yynewstate;
 
@@ -2261,7 +2049,7 @@ yyreduce:
   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
@@ -2275,804 +2063,836 @@ yyreduce:
   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));
-			  write_exp_elt_opcode(pstate, OP_TYPE);}
+#line 281 "c-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<type_operation> ((yyvsp[0].tval));
+			}
+#line 2072 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 5:
-
-/* Line 1455 of yacc.c  */
-#line 286 "c-exp.y"
+#line 285 "c-exp.y" /* yacc.c:1646  */
     {
-			  write_exp_elt_opcode (pstate, OP_TYPEOF);
+			  pstate->wrap<typeof_operation> ();
 			}
+#line 2080 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 6:
-
-/* Line 1455 of yacc.c  */
-#line 290 "c-exp.y"
+#line 289 "c-exp.y" /* yacc.c:1646  */
     {
-			  write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate, (yyvsp[(3) - (4)].tval));
-			  write_exp_elt_opcode (pstate, OP_TYPE);
+			  pstate->push_new<type_operation> ((yyvsp[-1].tval));
 			}
+#line 2088 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 7:
-
-/* Line 1455 of yacc.c  */
-#line 296 "c-exp.y"
+#line 293 "c-exp.y" /* yacc.c:1646  */
     {
-			  write_exp_elt_opcode (pstate, OP_DECLTYPE);
+			  pstate->wrap<decltype_operation> ();
 			}
+#line 2096 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 9:
-
-/* Line 1455 of yacc.c  */
-#line 304 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_COMMA); }
+#line 301 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<comma_operation> (); }
+#line 2102 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 10:
-
-/* Line 1455 of yacc.c  */
-#line 309 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_IND); }
+#line 306 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap<unop_ind_operation> (); }
+#line 2108 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 11:
-
-/* Line 1455 of yacc.c  */
-#line 313 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_ADDR); }
+#line 310 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap<unop_addr_operation> (); }
+#line 2114 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 12:
-
-/* Line 1455 of yacc.c  */
-#line 317 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_NEG); }
+#line 314 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap<unary_neg_operation> (); }
+#line 2120 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 13:
-
-/* Line 1455 of yacc.c  */
-#line 321 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_PLUS); }
+#line 318 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap<unary_plus_operation> (); }
+#line 2126 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 14:
-
-/* Line 1455 of yacc.c  */
-#line 325 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+#line 322 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap<opencl_not_operation> ();
+			  else
+			    pstate->wrap<unary_logical_not_operation> ();
+			}
+#line 2138 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<unary_complement_operation> (); }
+#line 2144 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<preinc_operation> (); }
+#line 2150 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<predec_operation> (); }
+#line 2156 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<postinc_operation> (); }
+#line 2162 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<postdec_operation> (); }
+#line 2168 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<typeid_operation> (); }
+#line 2174 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<typeid_operation> (); }
+#line 2180 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<unop_sizeof_operation> (); }
+#line 2186 "c-exp.c.tmp" /* yacc.c:1646  */
     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" /* yacc.c:1646  */
+    { pstate->wrap<unop_alignof_operation> (); }
+#line 2192 "c-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 368 "c-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<structop_ptr_operation>
+			    (pstate->pop (), copy_name ((yyvsp[0].sval)));
+			}
+#line 2201 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 25:
-
-/* Line 1455 of yacc.c  */
-#line 371 "c-exp.y"
-    { pstate->mark_struct_expression ();
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_exp_string (pstate, (yyvsp[(3) - (4)].sval));
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 375 "c-exp.y" /* yacc.c:1646  */
+    {
+			  structop_base_operation *op
+			    = new structop_ptr_operation (pstate->pop (),
+							  copy_name ((yyvsp[-1].sval)));
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
+#line 2213 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 26:
-
-/* Line 1455 of yacc.c  */
-#line 378 "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 385 "c-exp.y" /* yacc.c:1646  */
+    {
+			  structop_base_operation *op
+			    = new structop_ptr_operation (pstate->pop (), "");
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
+#line 2224 "c-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 394 "c-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<structop_ptr_operation>
+			    (pstate->pop (), "~" + copy_name ((yyvsp[0].sval)));
+			}
+#line 2233 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 28:
-
-/* Line 1455 of yacc.c  */
-#line 394 "c-exp.y"
-    { pstate->mark_struct_expression ();
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_destructor_name (pstate, (yyvsp[(4) - (5)].sval));
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+#line 401 "c-exp.y" /* yacc.c:1646  */
+    {
+			  structop_base_operation *op
+			    = new structop_ptr_operation (pstate->pop (),
+							  "~" + copy_name ((yyvsp[-1].sval)));
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
+#line 2245 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 29:
-
-/* Line 1455 of yacc.c  */
-#line 401 "c-exp.y"
+#line 411 "c-exp.y" /* yacc.c:1646  */
     { /* 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); }
+			  pstate->wrap<unop_addr_operation> ();
+			  pstate->wrap2<structop_mptr_operation> (); }
+#line 2255 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 30:
-
-/* Line 1455 of yacc.c  */
-#line 409 "c-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_MPTR); }
+#line 419 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<structop_mptr_operation> (); }
+#line 2261 "c-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 423 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->push_new<opencl_structop_operation>
+			      (pstate->pop (), copy_name ((yyvsp[0].sval)));
+			  else
+			    pstate->push_new<structop_operation>
+			      (pstate->pop (), copy_name ((yyvsp[0].sval)));
+			}
+#line 2275 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 32:
-
-/* Line 1455 of yacc.c  */
-#line 419 "c-exp.y"
-    { pstate->mark_struct_expression ();
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, (yyvsp[(3) - (4)].sval));
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 435 "c-exp.y" /* yacc.c:1646  */
+    {
+			  structop_base_operation *op
+			    = new structop_operation (pstate->pop (),
+						      copy_name ((yyvsp[-1].sval)));
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
+#line 2287 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 33:
-
-/* Line 1455 of yacc.c  */
-#line 426 "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 445 "c-exp.y" /* yacc.c:1646  */
+    {
+			  structop_base_operation *op
+			    = new structop_operation (pstate->pop (), "");
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
+#line 2298 "c-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 454 "c-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<structop_operation>
+			    (pstate->pop (), "~" + copy_name ((yyvsp[0].sval)));
+			}
+#line 2307 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 35:
-
-/* Line 1455 of yacc.c  */
-#line 442 "c-exp.y"
-    { pstate->mark_struct_expression ();
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_destructor_name (pstate, (yyvsp[(4) - (5)].sval));
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+#line 461 "c-exp.y" /* yacc.c:1646  */
+    {
+			  structop_base_operation *op
+			    = new structop_operation (pstate->pop (),
+						      "~" + copy_name ((yyvsp[-1].sval)));
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
+#line 2319 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 36:
-
-/* Line 1455 of yacc.c  */
-#line 449 "c-exp.y"
+#line 471 "c-exp.y" /* yacc.c:1646  */
     { /* 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); }
+			  pstate->wrap<unop_addr_operation> ();
+			  pstate->wrap2<structop_member_operation> (); }
+#line 2329 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 37:
-
-/* Line 1455 of yacc.c  */
-#line 457 "c-exp.y"
-    { write_exp_elt_opcode (pstate, STRUCTOP_MEMBER); }
+#line 479 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<structop_member_operation> (); }
+#line 2335 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 38:
-
-/* Line 1455 of yacc.c  */
-#line 461 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 483 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<subscript_operation> (); }
+#line 2341 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 39:
-
-/* Line 1455 of yacc.c  */
-#line 465 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+#line 487 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<subscript_operation> (); }
+#line 2347 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 40:
-
-/* Line 1455 of yacc.c  */
-#line 474 "c-exp.y"
+#line 496 "c-exp.y" /* yacc.c:1646  */
     {
 			  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)
 			    error (_("%s is not an ObjC Class"),
 				   copy.c_str ());
-			  write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate,
-					      parse_type (pstate)->builtin_int);
-			  write_exp_elt_longcst (pstate, (LONGEST) theclass);
-			  write_exp_elt_opcode (pstate, OP_LONG);
+			  pstate->push_new<long_const_operation>
+			    (parse_type (pstate)->builtin_int,
+			     (LONGEST) theclass);
 			  start_msglist();
 			}
+#line 2366 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 41:
-
-/* Line 1455 of yacc.c  */
-#line 491 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			  end_msglist (pstate);
-			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			}
+#line 511 "c-exp.y" /* yacc.c:1646  */
+    { end_msglist (pstate); }
+#line 2372 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 42:
-
-/* Line 1455 of yacc.c  */
-#line 498 "c-exp.y"
+#line 515 "c-exp.y" /* yacc.c:1646  */
     {
-			  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_opcode (pstate, OP_LONG);
+			  pstate->push_new<long_const_operation>
+			    (parse_type (pstate)->builtin_int,
+			     (LONGEST) (yyvsp[0].theclass).theclass);
 			  start_msglist();
 			}
+#line 2383 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 43:
-
-/* Line 1455 of yacc.c  */
-#line 507 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			  end_msglist (pstate);
-			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			}
+#line 522 "c-exp.y" /* yacc.c:1646  */
+    { end_msglist (pstate); }
+#line 2389 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 44:
-
-/* Line 1455 of yacc.c  */
-#line 514 "c-exp.y"
+#line 526 "c-exp.y" /* yacc.c:1646  */
     { start_msglist(); }
+#line 2395 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 45:
-
-/* Line 1455 of yacc.c  */
-#line 516 "c-exp.y"
-    { write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			  end_msglist (pstate);
-			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			}
+#line 528 "c-exp.y" /* yacc.c:1646  */
+    { end_msglist (pstate); }
+#line 2401 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 46:
-
-/* Line 1455 of yacc.c  */
-#line 523 "c-exp.y"
-    { add_msglist(&(yyvsp[(1) - (1)].sval), 0); }
+#line 532 "c-exp.y" /* yacc.c:1646  */
+    { add_msglist(&(yyvsp[0].sval), 0); }
+#line 2407 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 50:
-
-/* Line 1455 of yacc.c  */
-#line 532 "c-exp.y"
-    { add_msglist(&(yyvsp[(1) - (3)].sval), 1); }
+#line 541 "c-exp.y" /* yacc.c:1646  */
+    { add_msglist(&(yyvsp[-2].sval), 1); }
+#line 2413 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 51:
-
-/* Line 1455 of yacc.c  */
-#line 534 "c-exp.y"
+#line 543 "c-exp.y" /* yacc.c:1646  */
     { add_msglist(0, 1);   }
+#line 2419 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 52:
-
-/* Line 1455 of yacc.c  */
-#line 536 "c-exp.y"
+#line 545 "c-exp.y" /* yacc.c:1646  */
     { add_msglist(0, 0);   }
+#line 2425 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 53:
-
-/* Line 1455 of yacc.c  */
-#line 542 "c-exp.y"
+#line 551 "c-exp.y" /* yacc.c:1646  */
     { pstate->start_arglist (); }
+#line 2431 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 54:
-
-/* Line 1455 of yacc.c  */
-#line 544 "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 553 "c-exp.y" /* yacc.c:1646  */
+    {
+			  std::vector<operation_up> args
+			    = pstate->pop_vector (pstate->end_arglist ());
+			  pstate->push_new<funcall_operation>
+			    (pstate->pop (), std::move (args));
+			}
+#line 2442 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 55:
-
-/* Line 1455 of yacc.c  */
-#line 554 "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 565 "c-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<funcall_operation>
+			    (pstate->pop (), std::vector<operation_up> ());
+			}
+#line 2451 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 56:
-
-/* Line 1455 of yacc.c  */
-#line 563 "c-exp.y"
+#line 573 "c-exp.y" /* yacc.c:1646  */
     {
 			  /* This could potentially be a an argument defined
 			     lookup function (Koenig).  */
-			  write_exp_elt_opcode (pstate, OP_ADL_FUNC);
-			  write_exp_elt_block
-			    (pstate, pstate->expression_context_block);
-			  write_exp_elt_sym (pstate,
-					     NULL); /* Placeholder.  */
-			  write_exp_string (pstate, (yyvsp[(1) - (2)].ssym).stoken);
-			  write_exp_elt_opcode (pstate, OP_ADL_FUNC);
-
-			/* This is to save the value of arglist_len
-			   being accumulated by an outer function call.  */
-
+			  /* This is to save the value of arglist_len
+			     being accumulated by an outer function call.  */
 			  pstate->start_arglist ();
 			}
+#line 2463 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 57:
-
-/* Line 1455 of yacc.c  */
-#line 580 "c-exp.y"
+#line 581 "c-exp.y" /* yacc.c:1646  */
     {
-			  write_exp_elt_opcode (pstate, OP_FUNCALL);
-			  write_exp_elt_longcst (pstate,
-						 pstate->end_arglist ());
-			  write_exp_elt_opcode (pstate, OP_FUNCALL);
+			  std::vector<operation_up> args
+			    = pstate->pop_vector (pstate->end_arglist ());
+			  pstate->push_new<adl_func_operation>
+			    (copy_name ((yyvsp[-4].ssym).stoken),
+			     pstate->expression_context_block,
+			     std::move (args));
 			}
+#line 2476 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 58:
-
-/* Line 1455 of yacc.c  */
-#line 589 "c-exp.y"
+#line 592 "c-exp.y" /* yacc.c:1646  */
     { pstate->start_arglist (); }
+#line 2482 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 60:
-
-/* Line 1455 of yacc.c  */
-#line 596 "c-exp.y"
+#line 599 "c-exp.y" /* yacc.c:1646  */
     { pstate->arglist_len = 1; }
+#line 2488 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 61:
-
-/* Line 1455 of yacc.c  */
-#line 600 "c-exp.y"
+#line 603 "c-exp.y" /* yacc.c:1646  */
     { pstate->arglist_len++; }
+#line 2494 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 62:
-
-/* Line 1455 of yacc.c  */
-#line 604 "c-exp.y"
+#line 607 "c-exp.y" /* yacc.c:1646  */
     {
-			  std::vector<struct type *> *type_list = (yyvsp[(3) - (5)].tvec);
-			  LONGEST len = type_list->size ();
-
-			  write_exp_elt_opcode (pstate, TYPE_INSTANCE);
+			  std::vector<struct type *> *type_list = (yyvsp[-2].tvec);
 			  /* Save the const/volatile qualifiers as
 			     recorded by the const_or_volatile
 			     production's actions.  */
-			  write_exp_elt_longcst
-			    (pstate,
-			     (cpstate->type_stack
-			      .follow_type_instance_flags ()));
-			  write_exp_elt_longcst (pstate, len);
-			  for (type *type_elt : *type_list)
-			    write_exp_elt_type (pstate, type_elt);
-			  write_exp_elt_longcst(pstate, len);
-			  write_exp_elt_opcode (pstate, TYPE_INSTANCE);
+			  type_instance_flags flags
+			    = (cpstate->type_stack
+			       .follow_type_instance_flags ());
+			  pstate->push_new<type_instance_operation>
+			    (flags, std::move (*type_list),
+			     pstate->pop ());
 			}
+#line 2511 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 63:
-
-/* Line 1455 of yacc.c  */
-#line 625 "c-exp.y"
-    { write_exp_elt_opcode (pstate, TYPE_INSTANCE);
-			 /* See above.  */
-			 write_exp_elt_longcst
-			   (pstate,
-			    cpstate->type_stack.follow_type_instance_flags ());
-			 write_exp_elt_longcst (pstate, 0);
-			 write_exp_elt_longcst (pstate, 0);
-			 write_exp_elt_opcode (pstate, TYPE_INSTANCE);
+#line 622 "c-exp.y" /* yacc.c:1646  */
+    {
+			  type_instance_flags flags
+			    = (cpstate->type_stack
+			       .follow_type_instance_flags ());
+			  pstate->push_new<type_instance_operation>
+			    (flags, std::vector<type *> (), pstate->pop ());
 		       }
+#line 2523 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 67:
-
-/* Line 1455 of yacc.c  */
-#line 648 "c-exp.y"
+#line 643 "c-exp.y" /* yacc.c:1646  */
     {
-			  write_exp_elt_opcode (pstate, OP_FUNC_STATIC_VAR);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
-			  write_exp_elt_opcode (pstate, OP_FUNC_STATIC_VAR);
+			  pstate->push_new<func_static_var_operation>
+			    (pstate->pop (), copy_name ((yyvsp[0].sval)));
 			}
+#line 2532 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 68:
-
-/* Line 1455 of yacc.c  */
-#line 656 "c-exp.y"
+#line 650 "c-exp.y" /* yacc.c:1646  */
     { (yyval.lval) = pstate->end_arglist () - 1; }
+#line 2538 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 69:
-
-/* Line 1455 of yacc.c  */
-#line 659 "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_opcode (pstate, OP_ARRAY); }
+#line 653 "c-exp.y" /* yacc.c:1646  */
+    {
+			  std::vector<operation_up> args
+			    = pstate->pop_vector ((yyvsp[0].lval) + 1);
+			  pstate->push_new<array_operation> (0, (yyvsp[0].lval),
+							     std::move (args));
+			}
+#line 2549 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 70:
-
-/* Line 1455 of yacc.c  */
-#line 666 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_MEMVAL_TYPE); }
+#line 662 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<unop_memval_type_operation> (); }
+#line 2555 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 71:
-
-/* Line 1455 of yacc.c  */
-#line 670 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+#line 666 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_cast_type_operation> ();
+			  else
+			    pstate->wrap2<unop_cast_type_operation> ();
+			}
+#line 2567 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 72:
-
-/* Line 1455 of yacc.c  */
-#line 674 "c-exp.y"
+#line 676 "c-exp.y" /* yacc.c:1646  */
     { }
+#line 2573 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 73:
-
-/* Line 1455 of yacc.c  */
-#line 680 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+#line 682 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<repeat_operation> (); }
+#line 2579 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 74:
-
-/* Line 1455 of yacc.c  */
-#line 684 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_MUL); }
+#line 686 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<mul_operation> (); }
+#line 2585 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 75:
-
-/* Line 1455 of yacc.c  */
-#line 688 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_DIV); }
+#line 690 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<div_operation> (); }
+#line 2591 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 76:
-
-/* Line 1455 of yacc.c  */
-#line 692 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_REM); }
+#line 694 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<rem_operation> (); }
+#line 2597 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 77:
-
-/* Line 1455 of yacc.c  */
-#line 696 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ADD); }
+#line 698 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<add_operation> (); }
+#line 2603 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 78:
-
-/* Line 1455 of yacc.c  */
-#line 700 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_SUB); }
+#line 702 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<sub_operation> (); }
+#line 2609 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 79:
-
-/* Line 1455 of yacc.c  */
-#line 704 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LSH); }
+#line 706 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<lsh_operation> (); }
+#line 2615 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 80:
-
-/* Line 1455 of yacc.c  */
-#line 708 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_RSH); }
+#line 710 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<rsh_operation> (); }
+#line 2621 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 81:
-
-/* Line 1455 of yacc.c  */
-#line 712 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+#line 714 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_equal_operation> ();
+			  else
+			    pstate->wrap2<equal_operation> ();
+			}
+#line 2633 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 82:
-
-/* Line 1455 of yacc.c  */
-#line 716 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+#line 724 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_notequal_operation> ();
+			  else
+			    pstate->wrap2<notequal_operation> ();
+			}
+#line 2645 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 83:
-
-/* Line 1455 of yacc.c  */
-#line 720 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LEQ); }
+#line 734 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_leq_operation> ();
+			  else
+			    pstate->wrap2<leq_operation> ();
+			}
+#line 2657 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 84:
-
-/* Line 1455 of yacc.c  */
-#line 724 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GEQ); }
+#line 744 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_geq_operation> ();
+			  else
+			    pstate->wrap2<geq_operation> ();
+			}
+#line 2669 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 85:
-
-/* Line 1455 of yacc.c  */
-#line 728 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LESS); }
+#line 754 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_less_operation> ();
+			  else
+			    pstate->wrap2<less_operation> ();
+			}
+#line 2681 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 86:
-
-/* Line 1455 of yacc.c  */
-#line 732 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_GTR); }
+#line 764 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_gtr_operation> ();
+			  else
+			    pstate->wrap2<gtr_operation> ();
+			}
+#line 2693 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 87:
-
-/* Line 1455 of yacc.c  */
-#line 736 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+#line 774 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<bitwise_and_operation> (); }
+#line 2699 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 88:
-
-/* Line 1455 of yacc.c  */
-#line 740 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+#line 778 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<bitwise_xor_operation> (); }
+#line 2705 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 89:
-
-/* Line 1455 of yacc.c  */
-#line 744 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+#line 782 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<bitwise_ior_operation> (); }
+#line 2711 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 90:
-
-/* Line 1455 of yacc.c  */
-#line 748 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+#line 786 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    {
+			      operation_up rhs = pstate->pop ();
+			      operation_up lhs = pstate->pop ();
+			      pstate->push_new<opencl_logical_binop_operation>
+				(BINOP_LOGICAL_AND, std::move (lhs),
+				 std::move (rhs));
+			    }
+			  else
+			    pstate->wrap2<logical_and_operation> ();
+			}
+#line 2729 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 91:
-
-/* Line 1455 of yacc.c  */
-#line 752 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+#line 802 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    {
+			      operation_up rhs = pstate->pop ();
+			      operation_up lhs = pstate->pop ();
+			      pstate->push_new<opencl_logical_binop_operation>
+				(BINOP_LOGICAL_OR, std::move (lhs),
+				 std::move (rhs));
+			    }
+			  else
+			    pstate->wrap2<logical_or_operation> ();
+			}
+#line 2747 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 92:
-
-/* Line 1455 of yacc.c  */
-#line 756 "c-exp.y"
-    { write_exp_elt_opcode (pstate, TERNOP_COND); }
+#line 818 "c-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up last = pstate->pop ();
+			  operation_up mid = pstate->pop ();
+			  operation_up first = pstate->pop ();
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->push_new<opencl_ternop_cond_operation>
+			      (std::move (first), std::move (mid),
+			       std::move (last));
+			  else
+			    pstate->push_new<ternop_cond_operation>
+			      (std::move (first), std::move (mid),
+			       std::move (last));
+			}
+#line 2766 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 93:
-
-/* Line 1455 of yacc.c  */
-#line 760 "c-exp.y"
-    { write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+#line 835 "c-exp.y" /* yacc.c:1646  */
+    {
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_assign_operation> ();
+			  else
+			    pstate->wrap2<assign_operation> ();
+			}
+#line 2778 "c-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  write_exp_elt_opcode (pstate,
-						BINOP_ASSIGN_MODIFY); }
+#line 845 "c-exp.y" /* yacc.c:1646  */
+    {
+			  operation_up rhs = pstate->pop ();
+			  operation_up lhs = pstate->pop ();
+			  pstate->push_new<assign_modify_operation>
+			    ((yyvsp[-1].opcode), std::move (lhs), std::move (rhs));
+			}
+#line 2789 "c-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  write_exp_elt_opcode (pstate, OP_LONG); }
+#line 854 "c-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<long_const_operation>
+			    ((yyvsp[0].typed_val_int).type, (yyvsp[0].typed_val_int).val);
+			}
+#line 2798 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 96:
-
-/* Line 1455 of yacc.c  */
-#line 778 "c-exp.y"
+#line 861 "c-exp.y" /* yacc.c:1646  */
     {
-			  struct stoken_vector vec;
-			  vec.len = 1;
-			  vec.tokens = &(yyvsp[(1) - (1)].tsval);
-			  write_exp_string_vector (pstate, (yyvsp[(1) - (1)].tsval).type, &vec);
+			  operation_up real
+			    = (make_operation<long_const_operation>
+			       ((yyvsp[0].typed_val_int).type->target_type (), 0));
+			  operation_up imag
+			    = (make_operation<long_const_operation>
+			       ((yyvsp[0].typed_val_int).type->target_type (), (yyvsp[0].typed_val_int).val));
+			  pstate->push_new<complex_operation>
+			    (std::move (real), std::move (imag), (yyvsp[0].typed_val_int).type);
 			}
+#line 2813 "c-exp.c.tmp" /* yacc.c:1646  */
     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);
-			  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 874 "c-exp.y" /* yacc.c:1646  */
+    {
+			  struct stoken_vector vec;
+			  vec.len = 1;
+			  vec.tokens = &(yyvsp[0].tsval);
+			  pstate->push_c_string ((yyvsp[0].tsval).type, &vec);
 			}
+#line 2824 "c-exp.c.tmp" /* yacc.c:1646  */
     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);
-			  write_exp_elt_opcode (pstate, OP_FLOAT); }
+#line 883 "c-exp.y" /* yacc.c:1646  */
+    { c_exp_YYSTYPE val;
+			  parse_number (pstate, (yyvsp[0].ssym).stoken.ptr,
+					(yyvsp[0].ssym).stoken.length, 0, &val);
+			  pstate->push_new<long_const_operation>
+			    (val.typed_val_int.type,
+			     val.typed_val_int.val);
+			}
+#line 2836 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 99:
+#line 894 "c-exp.y" /* yacc.c:1646  */
+    {
+			  float_data data;
+			  std::copy (std::begin ((yyvsp[0].typed_val_float).val), std::end ((yyvsp[0].typed_val_float).val),
+				     std::begin (data));
+			  pstate->push_new<float_const_operation> ((yyvsp[0].typed_val_float).type, data);
+			}
+#line 2847 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 100:
-
-/* Line 1455 of yacc.c  */
-#line 810 "c-exp.y"
+#line 903 "c-exp.y" /* yacc.c:1646  */
     {
-			  write_dollar_variable (pstate, (yyvsp[(1) - (1)].sval));
+			  struct type *underlying = (yyvsp[0].typed_val_float).type->target_type ();
+
+			  float_data val;
+			  target_float_from_host_double (val.data (),
+							 underlying, 0);
+			  operation_up real
+			    = (make_operation<float_const_operation>
+			       (underlying, val));
+
+			  std::copy (std::begin ((yyvsp[0].typed_val_float).val), std::end ((yyvsp[0].typed_val_float).val),
+				     std::begin (val));
+			  operation_up imag
+			    = (make_operation<float_const_operation>
+			       (underlying, val));
+
+			  pstate->push_new<complex_operation>
+			    (std::move (real), std::move (imag),
+			     (yyvsp[0].typed_val_float).type);
 			}
+#line 2872 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 101:
-
-/* Line 1455 of yacc.c  */
-#line 816 "c-exp.y"
+  case 102:
+#line 929 "c-exp.y" /* yacc.c:1646  */
     {
-			  write_exp_elt_opcode (pstate, OP_OBJC_SELECTOR);
-			  write_exp_string (pstate, (yyvsp[(3) - (4)].sval));
-			  write_exp_elt_opcode (pstate, OP_OBJC_SELECTOR); }
+			  pstate->push_dollar ((yyvsp[0].sval));
+			}
+#line 2880 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 102:
+  case 103:
+#line 935 "c-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<objc_selector_operation>
+			    (copy_name ((yyvsp[-1].sval)));
+			}
+#line 2889 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 823 "c-exp.y"
-    { struct type *type = (yyvsp[(3) - (4)].tval);
-			  write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate, lookup_signed_typename
-					      (pstate->language (),
-					       "int"));
+  case 104:
+#line 942 "c-exp.y" /* yacc.c:1646  */
+    { struct type *type = (yyvsp[-1].tval);
+			  struct type *int_type
+			    = lookup_signed_typename (pstate->language (),
+						      "int");
 			  type = check_typedef (type);
 
 			    /* $5.3.3/2 of the C++ Standard (n3290 draft)
@@ -3080,47 +2900,42 @@ yyreduce:
 			       or a reference type, the result is the size of
 			       the referenced type."  */
 			  if (TYPE_IS_REFERENCE (type))
-			    type = check_typedef (TYPE_TARGET_TYPE (type));
-			  write_exp_elt_longcst (pstate,
-						 (LONGEST) TYPE_LENGTH (type));
-			  write_exp_elt_opcode (pstate, OP_LONG); }
-    break;
+			    type = check_typedef (type->target_type ());
 
-  case 103:
-
-/* Line 1455 of yacc.c  */
-#line 842 "c-exp.y"
-    { write_exp_elt_opcode (pstate,
-						UNOP_REINTERPRET_CAST); }
-    break;
-
-  case 104:
-
-/* Line 1455 of yacc.c  */
-#line 847 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+			  pstate->push_new<long_const_operation>
+			    (int_type, type->length ());
+			}
+#line 2910 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 105:
-
-/* Line 1455 of yacc.c  */
-#line 851 "c-exp.y"
-    { write_exp_elt_opcode (pstate, UNOP_DYNAMIC_CAST); }
+#line 961 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<reinterpret_cast_operation> (); }
+#line 2916 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
   case 106:
+#line 965 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<unop_cast_type_operation> (); }
+#line 2922 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 855 "c-exp.y"
+  case 107:
+#line 969 "c-exp.y" /* yacc.c:1646  */
+    { pstate->wrap2<dynamic_cast_operation> (); }
+#line 2928 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 108:
+#line 973 "c-exp.y" /* yacc.c:1646  */
     { /* We could do more error checking here, but
 			     it doesn't seem worthwhile.  */
-			  write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+			  pstate->wrap2<unop_cast_type_operation> (); }
+#line 2936 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 107:
-
-/* Line 1455 of yacc.c  */
-#line 862 "c-exp.y"
+  case 109:
+#line 980 "c-exp.y" /* yacc.c:1646  */
     {
 			  /* We copy the string here, and not in the
 			     lexer, to guarantee that we do not leak a
@@ -3131,17 +2946,16 @@ 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 2956 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 108:
-
-/* Line 1455 of yacc.c  */
-#line 879 "c-exp.y"
+  case 110:
+#line 997 "c-exp.y" /* yacc.c:1646  */
     {
 			  /* Note that we NUL-terminate here, but just
 			     for convenience.  */
@@ -3150,26 +2964,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 2976 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 109:
-
-/* Line 1455 of yacc.c  */
-#line 897 "c-exp.y"
+  case 111:
+#line 1015 "c-exp.y" /* yacc.c:1646  */
     {
 			  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,120 +2990,107 @@ 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 */
-				  internal_error (__FILE__, __LINE__,
-						  "unrecognized type in string concatenation");
+				  internal_error ("unrecognized type in string concatenation");
 				}
 			    }
 
-			  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);
+			  pstate->push_c_string (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 3010 "c-exp.c.tmp" /* yacc.c:1646  */
     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));
-			  write_exp_elt_opcode (pstate, OP_OBJC_NSSTRING); }
+  case 112:
+#line 1049 "c-exp.y" /* yacc.c:1646  */
+    {
+			  pstate->push_new<objc_nsstring_operation>
+			    (copy_name ((yyvsp[0].sval)));
+			}
+#line 3019 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 111:
-
-/* Line 1455 of yacc.c  */
-#line 939 "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); }
+  case 113:
+#line 1057 "c-exp.y" /* yacc.c:1646  */
+    { pstate->push_new<long_const_operation>
+			    (parse_type (pstate)->builtin_bool, 1);
+			}
+#line 3027 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 112:
-
-/* Line 1455 of yacc.c  */
-#line 947 "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); }
+  case 114:
+#line 1063 "c-exp.y" /* yacc.c:1646  */
+    { pstate->push_new<long_const_operation>
+			    (parse_type (pstate)->builtin_bool, 0);
+			}
+#line 3035 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 113:
-
-/* Line 1455 of yacc.c  */
-#line 957 "c-exp.y"
+  case 115:
+#line 1071 "c-exp.y" /* yacc.c:1646  */
     {
-			  if ((yyvsp[(1) - (1)].ssym).sym.symbol)
-			    (yyval.bval) = SYMBOL_BLOCK_VALUE ((yyvsp[(1) - (1)].ssym).sym.symbol);
+			  if ((yyvsp[0].ssym).sym.symbol)
+			    (yyval.bval) = (yyvsp[0].ssym).sym.symbol->value_block ();
 			  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 3047 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 114:
-
-/* Line 1455 of yacc.c  */
-#line 965 "c-exp.y"
+  case 116:
+#line 1079 "c-exp.y" /* yacc.c:1646  */
     {
-			  (yyval.bval) = (yyvsp[(1) - (1)].bval);
+			  (yyval.bval) = (yyvsp[0].bval);
 			}
+#line 3055 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 115:
-
-/* Line 1455 of yacc.c  */
-#line 971 "c-exp.y"
+  case 117:
+#line 1085 "c-exp.y" /* yacc.c:1646  */
     {
-			  std::string copy = copy_name ((yyvsp[(3) - (3)].sval));
+			  std::string copy = copy_name ((yyvsp[0].sval));
 			  struct symbol *tem
-			    = lookup_symbol (copy.c_str (), (yyvsp[(1) - (3)].bval),
-					     VAR_DOMAIN, NULL).symbol;
+			    = lookup_symbol (copy.c_str (), (yyvsp[-2].bval),
+					     SEARCH_FUNCTION_DOMAIN,
+					     nullptr).symbol;
 
-			  if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
+			  if (tem == nullptr)
 			    error (_("No function \"%s\" in specified context."),
 				   copy.c_str ());
-			  (yyval.bval) = SYMBOL_BLOCK_VALUE (tem); }
+			  (yyval.bval) = tem->value_block (); }
+#line 3071 "c-exp.c.tmp" /* yacc.c:1646  */
     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 1099 "c-exp.y" /* yacc.c:1646  */
+    { struct symbol *sym = (yyvsp[-1].ssym).sym.symbol;
 
-			  if (sym == NULL || !SYMBOL_IS_ARGUMENT (sym)
+			  if (sym == NULL || !sym->is_argument ()
 			      || !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);
+			  pstate->push_new<var_entry_value_operation> (sym);
 			}
+#line 3086 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 117:
-
-/* Line 1455 of yacc.c  */
-#line 999 "c-exp.y"
+  case 119:
+#line 1112 "c-exp.y" /* yacc.c:1646  */
     {
-			  std::string copy = copy_name ((yyvsp[(3) - (3)].sval));
+			  std::string copy = copy_name ((yyvsp[0].sval));
 			  struct block_symbol sym
-			    = lookup_symbol (copy.c_str (), (yyvsp[(1) - (3)].bval),
-					     VAR_DOMAIN, NULL);
+			    = lookup_symbol (copy.c_str (), (yyvsp[-2].bval),
+					     SEARCH_VFT, NULL);
 
 			  if (sym.symbol == 0)
 			    error (_("No symbol \"%s\" in specified context."),
@@ -3298,109 +3098,73 @@ yyreduce:
 			  if (symbol_read_needs_frame (sym.symbol))
 			    pstate->block_tracker->update (sym);
 
-			  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-			  write_exp_elt_block (pstate, sym.block);
-			  write_exp_elt_sym (pstate, sym.symbol);
-			  write_exp_elt_opcode (pstate, OP_VAR_VALUE); }
+			  pstate->push_new<var_value_operation> (sym);
+			}
+#line 3105 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 118:
-
-/* Line 1455 of yacc.c  */
-#line 1018 "c-exp.y"
+  case 120:
+#line 1129 "c-exp.y" /* yacc.c:1646  */
     {
-			  struct type *type = (yyvsp[(1) - (3)].tsym).type;
+			  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."),
 				   TYPE_SAFE_NAME (type));
 
-			  write_exp_elt_opcode (pstate, OP_SCOPE);
-			  write_exp_elt_type (pstate, type);
-			  write_exp_string (pstate, (yyvsp[(3) - (3)].sval));
-			  write_exp_elt_opcode (pstate, OP_SCOPE);
+			  pstate->push_new<scope_operation> (type,
+							     copy_name ((yyvsp[0].sval)));
 			}
+#line 3120 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 119:
-
-/* Line 1455 of yacc.c  */
-#line 1031 "c-exp.y"
+  case 121:
+#line 1140 "c-exp.y" /* yacc.c:1646  */
     {
-			  struct type *type = (yyvsp[(1) - (4)].tsym).type;
-			  struct stoken tmp_token;
-			  char *buf;
+			  struct type *type = (yyvsp[-3].tsym).type;
 
 			  type = check_typedef (type);
 			  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);
-			  tmp_token.ptr = buf;
-			  tmp_token.length = (yyvsp[(4) - (4)].sval).length + 1;
-			  buf[0] = '~';
-			  memcpy (buf+1, (yyvsp[(4) - (4)].sval).ptr, (yyvsp[(4) - (4)].sval).length);
-			  buf[tmp_token.length] = 0;
+			  std::string name = "~" + std::string ((yyvsp[0].sval).ptr,
+								(yyvsp[0].sval).length);
 
 			  /* Check for valid destructor name.  */
-			  destructor_name_p (tmp_token.ptr, (yyvsp[(1) - (4)].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);
+			  destructor_name_p (name.c_str (), (yyvsp[-3].tsym).type);
+			  pstate->push_new<scope_operation> (type,
+							     std::move (name));
 			}
+#line 3140 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 120:
-
-/* Line 1455 of yacc.c  */
-#line 1055 "c-exp.y"
+  case 122:
+#line 1156 "c-exp.y" /* yacc.c:1646  */
     {
-			  std::string copy = copy_name ((yyvsp[(3) - (5)].sval));
+			  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 3151 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 122:
-
-/* Line 1455 of yacc.c  */
-#line 1065 "c-exp.y"
+  case 124:
+#line 1166 "c-exp.y" /* yacc.c:1646  */
     {
-			  std::string name = copy_name ((yyvsp[(2) - (2)].ssym).stoken);
-			  struct symbol *sym;
-			  struct bound_minimal_symbol msymbol;
-
-			  sym
+			  std::string name = copy_name ((yyvsp[0].ssym).stoken);
+			  struct block_symbol sym
 			    = lookup_symbol (name.c_str (),
 					     (const struct block *) NULL,
-					     VAR_DOMAIN, NULL).symbol;
-			  if (sym)
-			    {
-			      write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-			      write_exp_elt_block (pstate, NULL);
-			      write_exp_elt_sym (pstate, sym);
-			      write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-			      break;
-			    }
-
-			  msymbol = lookup_bound_minimal_symbol (name.c_str ());
-			  if (msymbol.minsym != NULL)
-			    write_exp_msymbol (pstate, msymbol);
-			  else if (!have_full_symbols () && !have_partial_symbols ())
-			    error (_("No symbol table is loaded.  Use the \"file\" command."));
-			  else
-			    error (_("No symbol \"%s\" in current context."),
-				   name.c_str ());
+					     SEARCH_VFT, NULL);
+			  pstate->push_symbol (name.c_str (), sym);
 			}
+#line 3164 "c-exp.c.tmp" /* yacc.c:1646  */
     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 1177 "c-exp.y" /* yacc.c:1646  */
+    { struct block_symbol sym = (yyvsp[0].ssym).sym;
 
 			  if (sym.symbol)
 			    {
@@ -3415,36 +3179,32 @@ yyreduce:
 			      bound_minimal_symbol resolver
 				= find_gnu_ifunc (sym.symbol);
 			      if (resolver.minsym != NULL)
-				write_exp_msymbol (pstate, resolver);
+				pstate->push_new<var_msym_value_operation>
+				  (resolver);
 			      else
-				{
-				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-				  write_exp_elt_block (pstate, sym.block);
-				  write_exp_elt_sym (pstate, sym.symbol);
-				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-				}
+				pstate->push_new<var_value_operation> (sym);
 			    }
-			  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
+				 not inadvertently convert from a method call
 				 to data ref.  */
 			      pstate->block_tracker->update (sym);
-			      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_elt_opcode (pstate, STRUCTOP_PTR);
+			      operation_up thisop
+				= make_operation<op_this_operation> ();
+			      pstate->push_new<structop_ptr_operation>
+				(std::move (thisop), copy_name ((yyvsp[0].ssym).stoken));
 			    }
 			  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 ());
+				= lookup_minimal_symbol (current_program_space, arg.c_str ());
 			      if (msymbol.minsym == NULL)
 				{
-				  if (!have_full_symbols () && !have_partial_symbols ())
+				  if (!have_full_symbols (current_program_space)
+				      && !have_partial_symbols (current_program_space))
 				    error (_("No symbol table is loaded.  Use the \"file\" command."));
 				  else
 				    error (_("No symbol \"%s\" in current context."),
@@ -3459,867 +3219,822 @@ yyreduce:
 				 is important for example for "p
 				 *__errno_location()".  */
 			      symbol *alias_target
-				= ((msymbol.minsym->type != mst_text_gnu_ifunc
-				    && msymbol.minsym->type != mst_data_gnu_ifunc)
+				= ((msymbol.minsym->type () != mst_text_gnu_ifunc
+				    && msymbol.minsym->type () != mst_data_gnu_ifunc)
 				   ? find_function_alias_target (msymbol)
 				   : NULL);
 			      if (alias_target != NULL)
 				{
-				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-				  write_exp_elt_block
-				    (pstate, SYMBOL_BLOCK_VALUE (alias_target));
-				  write_exp_elt_sym (pstate, alias_target);
-				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
+				  block_symbol bsym { alias_target,
+				    alias_target->value_block () };
+				  pstate->push_new<var_value_operation> (bsym);
 				}
 			      else
-				write_exp_msymbol (pstate, msymbol);
+				pstate->push_new<var_msym_value_operation>
+				  (msymbol);
 			    }
 			}
+#line 3239 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 124:
+  case 128:
+#line 1255 "c-exp.y" /* yacc.c:1646  */
+    { cpstate->type_stack.insert (tp_const); }
+#line 3245 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 129:
+#line 1257 "c-exp.y" /* yacc.c:1646  */
+    { cpstate->type_stack.insert (tp_volatile); }
+#line 3251 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 130:
+#line 1259 "c-exp.y" /* yacc.c:1646  */
+    { cpstate->type_stack.insert (tp_atomic); }
+#line 3257 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1173 "c-exp.y"
+  case 131:
+#line 1261 "c-exp.y" /* yacc.c:1646  */
+    { cpstate->type_stack.insert (tp_restrict); }
+#line 3263 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 132:
+#line 1263 "c-exp.y" /* yacc.c:1646  */
     {
 		  cpstate->type_stack.insert (pstate,
-					      copy_name ((yyvsp[(2) - (2)].ssym).stoken).c_str ());
+					      copy_name ((yyvsp[0].ssym).stoken).c_str ());
 		}
+#line 3272 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 132:
+  case 133:
+#line 1268 "c-exp.y" /* yacc.c:1646  */
+    {
+		  cpstate->type_stack.insert (pstate,
+					      copy_name ((yyvsp[0].ssym).stoken).c_str ());
+		}
+#line 3281 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1197 "c-exp.y"
+  case 138:
+#line 1286 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_pointer); }
+#line 3287 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 134:
-
-/* Line 1455 of yacc.c  */
-#line 1200 "c-exp.y"
+  case 140:
+#line 1289 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_pointer); }
+#line 3293 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 136:
-
-/* Line 1455 of yacc.c  */
-#line 1203 "c-exp.y"
+  case 142:
+#line 1292 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_reference); }
+#line 3299 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 137:
-
-/* Line 1455 of yacc.c  */
-#line 1205 "c-exp.y"
+  case 143:
+#line 1294 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_reference); }
+#line 3305 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 138:
-
-/* Line 1455 of yacc.c  */
-#line 1207 "c-exp.y"
+  case 144:
+#line 1296 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_rvalue_reference); }
+#line 3311 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 139:
-
-/* Line 1455 of yacc.c  */
-#line 1209 "c-exp.y"
+  case 145:
+#line 1298 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_rvalue_reference); }
+#line 3317 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 140:
-
-/* Line 1455 of yacc.c  */
-#line 1213 "c-exp.y"
+  case 146:
+#line 1302 "c-exp.y" /* yacc.c:1646  */
     {
 			  (yyval.type_stack) = cpstate->type_stack.create ();
 			  cpstate->type_stacks.emplace_back ((yyval.type_stack));
 			}
+#line 3326 "c-exp.c.tmp" /* yacc.c:1646  */
     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 147:
+#line 1309 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.type_stack) = (yyvsp[0].type_stack)->append ((yyvsp[-1].type_stack)); }
+#line 3332 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 144:
-
-/* Line 1455 of yacc.c  */
-#line 1226 "c-exp.y"
-    { (yyval.type_stack) = (yyvsp[(2) - (3)].type_stack); }
+  case 150:
+#line 1315 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.type_stack) = (yyvsp[-1].type_stack); }
+#line 3338 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 145:
-
-/* Line 1455 of yacc.c  */
-#line 1228 "c-exp.y"
+  case 151:
+#line 1317 "c-exp.y" /* yacc.c:1646  */
     {
-			  cpstate->type_stack.push ((yyvsp[(1) - (2)].type_stack));
-			  cpstate->type_stack.push ((yyvsp[(2) - (2)].lval));
+			  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 3350 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 146:
-
-/* Line 1455 of yacc.c  */
-#line 1236 "c-exp.y"
+  case 152:
+#line 1325 "c-exp.y" /* yacc.c:1646  */
     {
-			  cpstate->type_stack.push ((yyvsp[(1) - (1)].lval));
+			  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 3361 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 147:
-
-/* Line 1455 of yacc.c  */
-#line 1244 "c-exp.y"
+  case 153:
+#line 1333 "c-exp.y" /* yacc.c:1646  */
     {
-			  cpstate->type_stack.push ((yyvsp[(1) - (2)].type_stack));
-			  cpstate->type_stack.push ((yyvsp[(2) - (2)].tvec));
+			  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 3372 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 148:
-
-/* Line 1455 of yacc.c  */
-#line 1251 "c-exp.y"
+  case 154:
+#line 1340 "c-exp.y" /* yacc.c:1646  */
     {
-			  cpstate->type_stack.push ((yyvsp[(1) - (1)].tvec));
+			  cpstate->type_stack.push ((yyvsp[0].tvec));
 			  (yyval.type_stack) = cpstate->type_stack.create ();
 			  cpstate->type_stacks.emplace_back ((yyval.type_stack));
 			}
+#line 3382 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 149:
-
-/* Line 1455 of yacc.c  */
-#line 1259 "c-exp.y"
+  case 155:
+#line 1348 "c-exp.y" /* yacc.c:1646  */
     { (yyval.lval) = -1; }
+#line 3388 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 150:
-
-/* Line 1455 of yacc.c  */
-#line 1261 "c-exp.y"
+  case 156:
+#line 1350 "c-exp.y" /* yacc.c:1646  */
     { (yyval.lval) = -1; }
+#line 3394 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 151:
-
-/* Line 1455 of yacc.c  */
-#line 1263 "c-exp.y"
-    { (yyval.lval) = (yyvsp[(2) - (3)].typed_val_int).val; }
+  case 157:
+#line 1352 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = (yyvsp[-1].typed_val_int).val; }
+#line 3400 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 152:
-
-/* Line 1455 of yacc.c  */
-#line 1265 "c-exp.y"
-    { (yyval.lval) = (yyvsp[(2) - (3)].typed_val_int).val; }
+  case 158:
+#line 1354 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.lval) = (yyvsp[-1].typed_val_int).val; }
+#line 3406 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 153:
-
-/* Line 1455 of yacc.c  */
-#line 1269 "c-exp.y"
+  case 159:
+#line 1358 "c-exp.y" /* yacc.c:1646  */
     {
 			  (yyval.tvec) = new std::vector<struct type *>;
 			  cpstate->type_lists.emplace_back ((yyval.tvec));
 			}
+#line 3415 "c-exp.c.tmp" /* yacc.c:1646  */
     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 160:
+#line 1363 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tvec) = (yyvsp[-1].tvec); }
+#line 3421 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 157:
-
-/* Line 1455 of yacc.c  */
-#line 1302 "c-exp.y"
+  case 162:
+#line 1382 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "int"); }
+#line 3428 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 158:
-
-/* Line 1455 of yacc.c  */
-#line 1305 "c-exp.y"
+  case 163:
+#line 1385 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3435 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 159:
-
-/* Line 1455 of yacc.c  */
-#line 1308 "c-exp.y"
+  case 164:
+#line 1388 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "short"); }
+#line 3442 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 160:
-
-/* Line 1455 of yacc.c  */
-#line 1311 "c-exp.y"
+  case 165:
+#line 1391 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3449 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 161:
-
-/* Line 1455 of yacc.c  */
-#line 1314 "c-exp.y"
+  case 166:
+#line 1394 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3456 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 162:
-
-/* Line 1455 of yacc.c  */
-#line 1317 "c-exp.y"
+  case 167:
+#line 1397 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3463 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 163:
-
-/* Line 1455 of yacc.c  */
-#line 1320 "c-exp.y"
+  case 168:
+#line 1400 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long"); }
+#line 3470 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 164:
-
-/* Line 1455 of yacc.c  */
-#line 1323 "c-exp.y"
+  case 169:
+#line 1403 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long"); }
+#line 3477 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 165:
-
-/* Line 1455 of yacc.c  */
-#line 1326 "c-exp.y"
+  case 170:
+#line 1406 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long"); }
+#line 3484 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 166:
-
-/* Line 1455 of yacc.c  */
-#line 1329 "c-exp.y"
+  case 171:
+#line 1409 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long"); }
+#line 3491 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 167:
-
-/* Line 1455 of yacc.c  */
-#line 1332 "c-exp.y"
+  case 172:
+#line 1412 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3498 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 168:
-
-/* Line 1455 of yacc.c  */
-#line 1335 "c-exp.y"
+  case 173:
+#line 1415 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3505 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 169:
-
-/* Line 1455 of yacc.c  */
-#line 1338 "c-exp.y"
+  case 174:
+#line 1418 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3512 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 170:
-
-/* Line 1455 of yacc.c  */
-#line 1341 "c-exp.y"
+  case 175:
+#line 1421 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3519 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 171:
-
-/* Line 1455 of yacc.c  */
-#line 1344 "c-exp.y"
+  case 176:
+#line 1424 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3526 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 172:
-
-/* Line 1455 of yacc.c  */
-#line 1347 "c-exp.y"
+  case 177:
+#line 1427 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "long long"); }
+#line 3533 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 173:
-
-/* Line 1455 of yacc.c  */
-#line 1350 "c-exp.y"
+  case 178:
+#line 1430 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long long"); }
+#line 3540 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 174:
-
-/* Line 1455 of yacc.c  */
-#line 1353 "c-exp.y"
+  case 179:
+#line 1433 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long long"); }
+#line 3547 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 175:
-
-/* Line 1455 of yacc.c  */
-#line 1356 "c-exp.y"
+  case 180:
+#line 1436 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long long"); }
+#line 3554 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 176:
-
-/* Line 1455 of yacc.c  */
-#line 1359 "c-exp.y"
+  case 181:
+#line 1439 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "long long"); }
+#line 3561 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 177:
-
-/* Line 1455 of yacc.c  */
-#line 1362 "c-exp.y"
+  case 182:
+#line 1442 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "short"); }
+#line 3568 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 178:
-
-/* Line 1455 of yacc.c  */
-#line 1365 "c-exp.y"
+  case 183:
+#line 1445 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "short"); }
+#line 3575 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 179:
-
-/* Line 1455 of yacc.c  */
-#line 1368 "c-exp.y"
+  case 184:
+#line 1448 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_signed_typename (pstate->language (),
 						       "short"); }
+#line 3582 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 180:
-
-/* Line 1455 of yacc.c  */
-#line 1371 "c-exp.y"
+  case 185:
+#line 1451 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "short"); }
+#line 3589 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 181:
-
-/* Line 1455 of yacc.c  */
-#line 1374 "c-exp.y"
+  case 186:
+#line 1454 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "short"); }
+#line 3596 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 182:
-
-/* Line 1455 of yacc.c  */
-#line 1377 "c-exp.y"
+  case 187:
+#line 1457 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
 							 "short"); }
+#line 3603 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 183:
-
-/* Line 1455 of yacc.c  */
-#line 1380 "c-exp.y"
+  case 188:
+#line 1460 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_typename (pstate->language (),
 						"double",
 						NULL,
 						0); }
+#line 3612 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 184:
+  case 189:
+#line 1465 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = lookup_typename (pstate->language (),
+						"float",
+						NULL,
+						0); }
+#line 3621 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1385 "c-exp.y"
+  case 190:
+#line 1470 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_typename (pstate->language (),
 						"long double",
 						NULL,
 						0); }
+#line 3630 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 185:
+  case 191:
+#line 1475 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+							 (yyvsp[0].tsym).type->name ()); }
+#line 3637 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 192:
+#line 1478 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = lookup_unsigned_typename (pstate->language (),
+							 "int"); }
+#line 3644 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 193:
+#line 1481 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+						       (yyvsp[0].tsym).type->name ()); }
+#line 3651 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 194:
+#line 1484 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = lookup_signed_typename (pstate->language (),
+						       "int"); }
+#line 3658 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 195:
+#line 1500 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = (yyvsp[0].tsym).type; }
+#line 3664 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 196:
+#line 1502 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = (yyvsp[0].tval); }
+#line 3670 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1390 "c-exp.y"
+  case 197:
+#line 1504 "c-exp.y" /* yacc.c:1646  */
+    {
+			  (yyval.tval) = init_complex_type (nullptr, (yyvsp[0].tval));
+			}
+#line 3678 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
+
+  case 198:
+#line 1508 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval)
-			    = lookup_struct (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
+			    = lookup_struct (copy_name ((yyvsp[0].sval)).c_str (),
 					     pstate->expression_context_block);
 			}
+#line 3687 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 186:
-
-/* Line 1455 of yacc.c  */
-#line 1395 "c-exp.y"
+  case 199:
+#line 1513 "c-exp.y" /* yacc.c:1646  */
     {
 			  pstate->mark_completion_tag (TYPE_CODE_STRUCT,
 						       "", 0);
 			  (yyval.tval) = NULL;
 			}
+#line 3697 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 187:
-
-/* Line 1455 of yacc.c  */
-#line 1401 "c-exp.y"
+  case 200:
+#line 1519 "c-exp.y" /* yacc.c:1646  */
     {
 			  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 3707 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 188:
-
-/* Line 1455 of yacc.c  */
-#line 1407 "c-exp.y"
+  case 201:
+#line 1525 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_struct
-			    (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
+			    (copy_name ((yyvsp[0].sval)).c_str (),
 			     pstate->expression_context_block);
 			}
+#line 3716 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 189:
-
-/* Line 1455 of yacc.c  */
-#line 1412 "c-exp.y"
+  case 202:
+#line 1530 "c-exp.y" /* yacc.c:1646  */
     {
 			  pstate->mark_completion_tag (TYPE_CODE_STRUCT,
 						       "", 0);
 			  (yyval.tval) = NULL;
 			}
+#line 3726 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 190:
-
-/* Line 1455 of yacc.c  */
-#line 1418 "c-exp.y"
+  case 203:
+#line 1536 "c-exp.y" /* yacc.c:1646  */
     {
 			  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 3736 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 191:
-
-/* Line 1455 of yacc.c  */
-#line 1424 "c-exp.y"
+  case 204:
+#line 1542 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval)
-			    = lookup_union (copy_name ((yyvsp[(2) - (2)].sval)).c_str (),
+			    = lookup_union (copy_name ((yyvsp[0].sval)).c_str (),
 					    pstate->expression_context_block);
 			}
+#line 3745 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 192:
-
-/* Line 1455 of yacc.c  */
-#line 1429 "c-exp.y"
+  case 205:
+#line 1547 "c-exp.y" /* yacc.c:1646  */
     {
 			  pstate->mark_completion_tag (TYPE_CODE_UNION,
 						       "", 0);
 			  (yyval.tval) = NULL;
 			}
+#line 3755 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 193:
-
-/* Line 1455 of yacc.c  */
-#line 1435 "c-exp.y"
+  case 206:
+#line 1553 "c-exp.y" /* yacc.c:1646  */
     {
 			  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 3765 "c-exp.c.tmp" /* yacc.c:1646  */
     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 207:
+#line 1559 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = lookup_enum (copy_name ((yyvsp[0].sval)).c_str (),
 					    pstate->expression_context_block);
 			}
+#line 3773 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 195:
-
-/* Line 1455 of yacc.c  */
-#line 1445 "c-exp.y"
+  case 208:
+#line 1563 "c-exp.y" /* yacc.c:1646  */
     {
 			  pstate->mark_completion_tag (TYPE_CODE_ENUM, "", 0);
 			  (yyval.tval) = NULL;
 			}
+#line 3782 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 196:
-
-/* Line 1455 of yacc.c  */
-#line 1450 "c-exp.y"
+  case 209:
+#line 1568 "c-exp.y" /* yacc.c:1646  */
     {
-			  pstate->mark_completion_tag (TYPE_CODE_ENUM, (yyvsp[(2) - (3)].sval).ptr,
-						       (yyvsp[(2) - (3)].sval).length);
+			  pstate->mark_completion_tag (TYPE_CODE_ENUM, (yyvsp[-1].sval).ptr,
+						       (yyvsp[-1].sval).length);
 			  (yyval.tval) = NULL;
 			}
+#line 3792 "c-exp.c.tmp" /* yacc.c:1646  */
     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"
+  case 210:
+#line 1577 "c-exp.y" /* yacc.c:1646  */
     { (yyval.tval) = lookup_template_type
-			    (copy_name((yyvsp[(2) - (5)].sval)).c_str (), (yyvsp[(4) - (5)].tval),
+			    (copy_name((yyvsp[-3].sval)).c_str (), (yyvsp[-1].tval),
 			     pstate->expression_context_block);
 			}
+#line 3801 "c-exp.c.tmp" /* yacc.c:1646  */
     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 211:
+#line 1582 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[0].tval)); }
+#line 3807 "c-exp.c.tmp" /* yacc.c:1646  */
     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 212:
+#line 1584 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[-1].tval)); }
+#line 3813 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 205:
-
-/* Line 1455 of yacc.c  */
-#line 1483 "c-exp.y"
+  case 214:
+#line 1589 "c-exp.y" /* yacc.c:1646  */
     {
 		  (yyval.tsym).stoken.ptr = "int";
 		  (yyval.tsym).stoken.length = 3;
 		  (yyval.tsym).type = lookup_signed_typename (pstate->language (),
 						    "int");
 		}
+#line 3824 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 206:
-
-/* Line 1455 of yacc.c  */
-#line 1490 "c-exp.y"
+  case 215:
+#line 1596 "c-exp.y" /* yacc.c:1646  */
     {
 		  (yyval.tsym).stoken.ptr = "long";
 		  (yyval.tsym).stoken.length = 4;
 		  (yyval.tsym).type = lookup_signed_typename (pstate->language (),
 						    "long");
 		}
+#line 3835 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 207:
-
-/* Line 1455 of yacc.c  */
-#line 1497 "c-exp.y"
+  case 216:
+#line 1603 "c-exp.y" /* yacc.c:1646  */
     {
 		  (yyval.tsym).stoken.ptr = "short";
 		  (yyval.tsym).stoken.length = 5;
 		  (yyval.tsym).type = lookup_signed_typename (pstate->language (),
 						    "short");
 		}
+#line 3846 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 208:
-
-/* Line 1455 of yacc.c  */
-#line 1507 "c-exp.y"
-    { check_parameter_typelist ((yyvsp[(1) - (1)].tvec)); }
+  case 217:
+#line 1613 "c-exp.y" /* yacc.c:1646  */
+    { check_parameter_typelist ((yyvsp[0].tvec)); }
+#line 3852 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 209:
-
-/* Line 1455 of yacc.c  */
-#line 1509 "c-exp.y"
+  case 218:
+#line 1615 "c-exp.y" /* yacc.c:1646  */
     {
-			  (yyvsp[(1) - (3)].tvec)->push_back (NULL);
-			  check_parameter_typelist ((yyvsp[(1) - (3)].tvec));
-			  (yyval.tvec) = (yyvsp[(1) - (3)].tvec);
+			  (yyvsp[-2].tvec)->push_back (NULL);
+			  check_parameter_typelist ((yyvsp[-2].tvec));
+			  (yyval.tvec) = (yyvsp[-2].tvec);
 			}
+#line 3862 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 210:
-
-/* Line 1455 of yacc.c  */
-#line 1518 "c-exp.y"
+  case 219:
+#line 1624 "c-exp.y" /* yacc.c:1646  */
     {
 		  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 3875 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 211:
-
-/* Line 1455 of yacc.c  */
-#line 1527 "c-exp.y"
+  case 220:
+#line 1633 "c-exp.y" /* yacc.c:1646  */
     {
-		  (yyvsp[(1) - (3)].tvec)->push_back ((yyvsp[(3) - (3)].tval));
-		  (yyval.tvec) = (yyvsp[(1) - (3)].tvec);
+		  (yyvsp[-2].tvec)->push_back ((yyvsp[0].tval));
+		  (yyval.tvec) = (yyvsp[-2].tvec);
 		}
+#line 3884 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 213:
-
-/* Line 1455 of yacc.c  */
-#line 1535 "c-exp.y"
+  case 222:
+#line 1641 "c-exp.y" /* yacc.c:1646  */
     {
-		  cpstate->type_stack.push ((yyvsp[(2) - (2)].type_stack));
-		  (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[(1) - (2)].tval));
+		  cpstate->type_stack.push ((yyvsp[0].type_stack));
+		  (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[-1].tval));
 		}
+#line 3893 "c-exp.c.tmp" /* yacc.c:1646  */
     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 223:
+#line 1648 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.tval) = cpstate->type_stack.follow_types ((yyvsp[-1].tval)); }
+#line 3899 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 219:
-
-/* Line 1455 of yacc.c  */
-#line 1554 "c-exp.y"
+  case 228:
+#line 1660 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_const);
 			  cpstate->type_stack.insert (tp_volatile);
 			}
+#line 3907 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 220:
-
-/* Line 1455 of yacc.c  */
-#line 1558 "c-exp.y"
+  case 229:
+#line 1664 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_const); }
+#line 3913 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 221:
-
-/* Line 1455 of yacc.c  */
-#line 1560 "c-exp.y"
+  case 230:
+#line 1666 "c-exp.y" /* yacc.c:1646  */
     { cpstate->type_stack.insert (tp_volatile); }
+#line 3919 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 222:
-
-/* Line 1455 of yacc.c  */
-#line 1564 "c-exp.y"
+  case 231:
+#line 1670 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (" new"); }
+#line 3925 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 223:
-
-/* Line 1455 of yacc.c  */
-#line 1566 "c-exp.y"
+  case 232:
+#line 1672 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (" delete"); }
+#line 3931 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 224:
-
-/* Line 1455 of yacc.c  */
-#line 1568 "c-exp.y"
+  case 233:
+#line 1674 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (" new[]"); }
+#line 3937 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 225:
-
-/* Line 1455 of yacc.c  */
-#line 1570 "c-exp.y"
+  case 234:
+#line 1676 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (" delete[]"); }
+#line 3943 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 226:
-
-/* Line 1455 of yacc.c  */
-#line 1572 "c-exp.y"
+  case 235:
+#line 1678 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (" new[]"); }
+#line 3949 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 227:
-
-/* Line 1455 of yacc.c  */
-#line 1574 "c-exp.y"
+  case 236:
+#line 1680 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (" delete[]"); }
+#line 3955 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 228:
-
-/* Line 1455 of yacc.c  */
-#line 1576 "c-exp.y"
+  case 237:
+#line 1682 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("+"); }
+#line 3961 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 229:
-
-/* Line 1455 of yacc.c  */
-#line 1578 "c-exp.y"
+  case 238:
+#line 1684 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("-"); }
+#line 3967 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 230:
-
-/* Line 1455 of yacc.c  */
-#line 1580 "c-exp.y"
+  case 239:
+#line 1686 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("*"); }
+#line 3973 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 231:
-
-/* Line 1455 of yacc.c  */
-#line 1582 "c-exp.y"
+  case 240:
+#line 1688 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("/"); }
+#line 3979 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 232:
-
-/* Line 1455 of yacc.c  */
-#line 1584 "c-exp.y"
+  case 241:
+#line 1690 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("%"); }
+#line 3985 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 233:
-
-/* Line 1455 of yacc.c  */
-#line 1586 "c-exp.y"
+  case 242:
+#line 1692 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("^"); }
+#line 3991 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 234:
-
-/* Line 1455 of yacc.c  */
-#line 1588 "c-exp.y"
+  case 243:
+#line 1694 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("&"); }
+#line 3997 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 235:
-
-/* Line 1455 of yacc.c  */
-#line 1590 "c-exp.y"
+  case 244:
+#line 1696 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("|"); }
+#line 4003 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 236:
-
-/* Line 1455 of yacc.c  */
-#line 1592 "c-exp.y"
+  case 245:
+#line 1698 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("~"); }
+#line 4009 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 237:
-
-/* Line 1455 of yacc.c  */
-#line 1594 "c-exp.y"
+  case 246:
+#line 1700 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("!"); }
+#line 4015 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 238:
-
-/* Line 1455 of yacc.c  */
-#line 1596 "c-exp.y"
+  case 247:
+#line 1702 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("="); }
+#line 4021 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 239:
-
-/* Line 1455 of yacc.c  */
-#line 1598 "c-exp.y"
+  case 248:
+#line 1704 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("<"); }
+#line 4027 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 240:
-
-/* Line 1455 of yacc.c  */
-#line 1600 "c-exp.y"
+  case 249:
+#line 1706 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (">"); }
+#line 4033 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 241:
-
-/* Line 1455 of yacc.c  */
-#line 1602 "c-exp.y"
+  case 250:
+#line 1708 "c-exp.y" /* yacc.c:1646  */
     { const char *op = " unknown";
-			  switch ((yyvsp[(2) - (2)].opcode))
+			  switch ((yyvsp[0].opcode))
 			    {
 			    case BINOP_RSH:
 			      op = ">>=";
@@ -4357,246 +4072,234 @@ yyreduce:
 
 			  (yyval.sval) = operator_stoken (op);
 			}
+#line 4077 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 242:
-
-/* Line 1455 of yacc.c  */
-#line 1642 "c-exp.y"
+  case 251:
+#line 1748 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("<<"); }
+#line 4083 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 243:
-
-/* Line 1455 of yacc.c  */
-#line 1644 "c-exp.y"
+  case 252:
+#line 1750 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (">>"); }
+#line 4089 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 244:
-
-/* Line 1455 of yacc.c  */
-#line 1646 "c-exp.y"
+  case 253:
+#line 1752 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("=="); }
+#line 4095 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 245:
-
-/* Line 1455 of yacc.c  */
-#line 1648 "c-exp.y"
+  case 254:
+#line 1754 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("!="); }
+#line 4101 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 246:
-
-/* Line 1455 of yacc.c  */
-#line 1650 "c-exp.y"
+  case 255:
+#line 1756 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("<="); }
+#line 4107 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 247:
-
-/* Line 1455 of yacc.c  */
-#line 1652 "c-exp.y"
+  case 256:
+#line 1758 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (">="); }
+#line 4113 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 248:
-
-/* Line 1455 of yacc.c  */
-#line 1654 "c-exp.y"
+  case 257:
+#line 1760 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("&&"); }
+#line 4119 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 249:
-
-/* Line 1455 of yacc.c  */
-#line 1656 "c-exp.y"
+  case 258:
+#line 1762 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("||"); }
+#line 4125 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 250:
-
-/* Line 1455 of yacc.c  */
-#line 1658 "c-exp.y"
+  case 259:
+#line 1764 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("++"); }
+#line 4131 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 251:
-
-/* Line 1455 of yacc.c  */
-#line 1660 "c-exp.y"
+  case 260:
+#line 1766 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("--"); }
+#line 4137 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 252:
-
-/* Line 1455 of yacc.c  */
-#line 1662 "c-exp.y"
+  case 261:
+#line 1768 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken (","); }
+#line 4143 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 253:
-
-/* Line 1455 of yacc.c  */
-#line 1664 "c-exp.y"
+  case 262:
+#line 1770 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("->*"); }
+#line 4149 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 254:
-
-/* Line 1455 of yacc.c  */
-#line 1666 "c-exp.y"
+  case 263:
+#line 1772 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("->"); }
+#line 4155 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 255:
-
-/* Line 1455 of yacc.c  */
-#line 1668 "c-exp.y"
+  case 264:
+#line 1774 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("()"); }
+#line 4161 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 256:
-
-/* Line 1455 of yacc.c  */
-#line 1670 "c-exp.y"
+  case 265:
+#line 1776 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("[]"); }
+#line 4167 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 257:
-
-/* Line 1455 of yacc.c  */
-#line 1672 "c-exp.y"
+  case 266:
+#line 1778 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = operator_stoken ("[]"); }
+#line 4173 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 258:
-
-/* Line 1455 of yacc.c  */
-#line 1674 "c-exp.y"
-    { string_file buf;
-
-			  c_print_type ((yyvsp[(2) - (2)].tval), NULL, &buf, -1, 0,
+  case 267:
+#line 1780 "c-exp.y" /* yacc.c:1646  */
+    {
+			  string_file buf;
+			  c_print_type ((yyvsp[0].tval), NULL, &buf, -1, 0,
+					pstate->language ()->la_language,
 					&type_print_raw_options);
+			  std::string name = buf.release ();
 
 			  /* 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 ());
+			  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 4192 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 260:
-
-/* Line 1455 of yacc.c  */
-#line 1697 "c-exp.y"
+  case 269:
+#line 1803 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = typename_stoken ("double"); }
+#line 4198 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 261:
+  case 270:
+#line 1804 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.sval) = typename_stoken ("float"); }
+#line 4204 "c-exp.c.tmp" /* yacc.c:1646  */
+    break;
 
-/* Line 1455 of yacc.c  */
-#line 1698 "c-exp.y"
+  case 271:
+#line 1805 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = typename_stoken ("int"); }
+#line 4210 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 262:
-
-/* Line 1455 of yacc.c  */
-#line 1699 "c-exp.y"
+  case 272:
+#line 1806 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = typename_stoken ("long"); }
+#line 4216 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 263:
-
-/* Line 1455 of yacc.c  */
-#line 1700 "c-exp.y"
+  case 273:
+#line 1807 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = typename_stoken ("short"); }
+#line 4222 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 264:
-
-/* Line 1455 of yacc.c  */
-#line 1701 "c-exp.y"
+  case 274:
+#line 1808 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = typename_stoken ("signed"); }
+#line 4228 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 265:
-
-/* Line 1455 of yacc.c  */
-#line 1702 "c-exp.y"
+  case 275:
+#line 1809 "c-exp.y" /* yacc.c:1646  */
     { (yyval.sval) = typename_stoken ("unsigned"); }
+#line 4234 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 266:
-
-/* Line 1455 of yacc.c  */
-#line 1705 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+  case 276:
+#line 1812 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 4240 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 267:
-
-/* Line 1455 of yacc.c  */
-#line 1706 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+  case 277:
+#line 1813 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 4246 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 268:
-
-/* Line 1455 of yacc.c  */
-#line 1707 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].tsym).stoken; }
+  case 278:
+#line 1814 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.sval) = (yyvsp[0].tsym).stoken; }
+#line 4252 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 269:
-
-/* Line 1455 of yacc.c  */
-#line 1708 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+  case 279:
+#line 1815 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 4258 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 270:
-
-/* Line 1455 of yacc.c  */
-#line 1709 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].ssym).stoken; }
+  case 280:
+#line 1816 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.sval) = (yyvsp[0].ssym).stoken; }
+#line 4264 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 271:
-
-/* Line 1455 of yacc.c  */
-#line 1710 "c-exp.y"
-    { (yyval.sval) = (yyvsp[(1) - (1)].sval); }
+  case 281:
+#line 1817 "c-exp.y" /* yacc.c:1646  */
+    { (yyval.sval) = (yyvsp[0].sval); }
+#line 4270 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
-  case 274:
-
-/* Line 1455 of yacc.c  */
-#line 1723 "c-exp.y"
+  case 284:
+#line 1830 "c-exp.y" /* yacc.c:1646  */
     {
 			  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,
+					     SEARCH_VFT,
 					     &is_a_field_of_this);
 			  (yyval.ssym).is_a_field_of_this
 			    = is_a_field_of_this.type != NULL;
 			}
+#line 4287 "c-exp.c.tmp" /* yacc.c:1646  */
     break;
 
 
-
-/* Line 1455 of yacc.c  */
-#line 4599 "c-exp.c.tmp"
+#line 4291 "c-exp.c.tmp" /* yacc.c:1646  */
       default: break;
     }
+  /* 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 ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
 
   YYPOPSTACK (yylen);
@@ -4605,7 +4308,7 @@ yyreduce:
 
   *++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.  */
 
@@ -4620,10 +4323,14 @@ yyreduce:
   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 ? YYEMPTY : YYTRANSLATE (yychar);
+
   /* If not already recovering from an error, report this error.  */
   if (!yyerrstatus)
     {
@@ -4631,37 +4338,36 @@ yyerrlab:
 #if ! YYERROR_VERBOSE
       yyerror (YY_("syntax error"));
 #else
+# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
+                                        yyssp, yytoken)
       {
-	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;
-	  }
+        char const *yymsgp = YY_("syntax error");
+        int yysyntax_error_status;
+        yysyntax_error_status = YYSYNTAX_ERROR;
+        if (yysyntax_error_status == 0)
+          yymsgp = yymsg;
+        else if (yysyntax_error_status == 1)
+          {
+            if (yymsg != yymsgbuf)
+              YYSTACK_FREE (yymsg);
+            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            if (!yymsg)
+              {
+                yymsg = yymsgbuf;
+                yymsg_alloc = sizeof yymsgbuf;
+                yysyntax_error_status = 2;
+              }
+            else
+              {
+                yysyntax_error_status = YYSYNTAX_ERROR;
+                yymsgp = yymsg;
+              }
+          }
+        yyerror (yymsgp);
+        if (yysyntax_error_status == 2)
+          goto yyexhaustedlab;
       }
+# undef YYSYNTAX_ERROR
 #endif
     }
 
@@ -4670,20 +4376,20 @@ yyerrlab:
   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
@@ -4702,7 +4408,7 @@ yyerrorlab:
   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,35 +4421,37 @@ 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.  */
 
   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 += YYTERROR;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+            {
+              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);
+                  yystos[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.  */
@@ -4767,7 +4475,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
-#if !defined(yyoverflow) || YYERROR_VERBOSE
+#if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
 `-------------------------------------------------*/
@@ -4779,16 +4487,21 @@ yyexhaustedlab:
 
 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);
+                  yystos[*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -4799,32 +4512,11 @@ yyreturn:
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
 #endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
+  return yyresult;
 }
+#line 1845 "c-exp.y" /* yacc.c:1906  */
 
 
-
-/* Line 1675 of yacc.c  */
-#line 1738 "c-exp.y"
-
-
-/* Like write_exp_string, but prepends a '~'.  */
-
-static void
-write_destructor_name (struct parser_state *par_state, struct stoken token)
-{
-  char *copy = (char *) alloca (token.length + 1);
-
-  copy[0] = '~';
-  memcpy (&copy[1], token.ptr, token.length);
-
-  token.ptr = copy;
-  ++token.length;
-
-  write_exp_string (par_state, token);
-}
-
 /* Returns a stoken of the operator name given by OP (which does not
    include the string "operator").  */
 
@@ -4860,11 +4552,11 @@ 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
-	      && TYPE_DECLARED_CLASS (type)));
+  return (type->code () == TYPE_CODE_STRUCT
+	  || type->code () == TYPE_CODE_UNION
+	  || type->code () == TYPE_CODE_NAMESPACE
+	  || (type->code () == TYPE_CODE_ENUM
+	      && type->is_declared_class ()));
 }
 
 /* Validate a parameter typelist.  */
@@ -4878,7 +4570,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)
 	    {
@@ -4903,11 +4595,10 @@ check_parameter_typelist (std::vector<st
 
 static int
 parse_number (struct parser_state *par_state,
-	      const char *buf, int len, int parsed_float, YYSTYPE *putithere)
+	      const char *buf, int len, int parsed_float, c_exp_YYSTYPE *putithere)
 {
   ULONGEST n = 0;
   ULONGEST prevn = 0;
-  ULONGEST un;
 
   int i = 0;
   int c;
@@ -4917,46 +4608,47 @@ parse_number (struct parser_state *par_s
   /* Number of "L" suffixes encountered.  */
   int long_p = 0;
 
-  /* We have found a "L" or "U" suffix.  */
-  int found_suffix = 0;
-
-  ULONGEST high_bit;
-  struct type *signed_type;
-  struct type *unsigned_type;
-  char *p;
+  /* Imaginary number.  */
+  bool imaginary_p = false;
 
-  p = (char *) alloca (len);
-  memcpy (p, buf, len);
+  /* We have found a "L" or "U" (or "i") suffix.  */
+  int found_suffix = 0;
 
   if (parsed_float)
     {
+      if (len >= 1 && buf[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')
+      if (len >= 2 && buf[len - 2] == 'd' && buf[len - 1] == 'f')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_decfloat;
 	  len -= 2;
 	}
-      else if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'd')
+      else if (len >= 2 && buf[len - 2] == 'd' && buf[len - 1] == 'd')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_decdouble;
 	  len -= 2;
 	}
-      else if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'l')
+      else if (len >= 2 && buf[len - 2] == 'd' && buf[len - 1] == 'l')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_declong;
 	  len -= 2;
 	}
       /* Handle suffixes: 'f' for float, 'l' for long double.  */
-      else if (len >= 1 && TOLOWER (p[len - 1]) == 'f')
+      else if (len >= 1 && TOLOWER (buf[len - 1]) == 'f')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_float;
 	  len -= 1;
 	}
-      else if (len >= 1 && TOLOWER (p[len - 1]) == 'l')
+      else if (len >= 1 && TOLOWER (buf[len - 1]) == 'l')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_long_double;
@@ -4969,22 +4661,27 @@ parse_number (struct parser_state *par_s
 	    = parse_type (par_state)->builtin_double;
 	}
 
-      if (!parse_float (p, len,
+      if (!parse_float (buf, len,
 			putithere->typed_val_float.type,
 			putithere->typed_val_float.val))
-        return ERROR;
-      return FLOAT;
+	return ERROR;
+
+      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 */
-  if (p[0] == '0' && len > 1)
-    switch (p[1])
+  if (buf[0] == '0' && len > 1)
+    switch (buf[1])
       {
       case 'x':
       case 'X':
 	if (len >= 3)
 	  {
-	    p += 2;
+	    buf += 2;
 	    base = 16;
 	    len -= 2;
 	  }
@@ -4994,7 +4691,7 @@ parse_number (struct parser_state *par_s
       case 'B':
 	if (len >= 3)
 	  {
-	    p += 2;
+	    buf += 2;
 	    base = 2;
 	    len -= 2;
 	  }
@@ -5006,7 +4703,7 @@ parse_number (struct parser_state *par_s
       case 'D':
 	if (len >= 3)
 	  {
-	    p += 2;
+	    buf += 2;
 	    base = 10;
 	    len -= 2;
 	  }
@@ -5019,10 +4716,10 @@ parse_number (struct parser_state *par_s
 
   while (len-- > 0)
     {
-      c = *p++;
+      c = *buf++;
       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,24 +4745,23 @@ 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 */
 	}
       if (i >= base)
 	return ERROR;		/* Invalid digit in this base */
 
-      /* 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)
-	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 (unsigned_p && prevn >= n)
+      if (c != 'l' && c != 'u' && c != 'i')
+	{
+	  /* Test for overflow.  */
+	  if (prevn == 0 && n == 0)
+	    ;
+	  else if (prevn >= n)
 	    error (_("Numeric constant too large."));
 	}
       prevn = n;
@@ -5082,60 +4778,51 @@ parse_number (struct parser_state *par_s
      or gdbarch_long_bit will be that big, sometimes not.  To deal with
      the case where it is we just always shift the value more than
      once, with fewer bits each time.  */
-
-  un = n >> 2;
-  if (long_p == 0
-      && (un >> (gdbarch_int_bit (par_state->gdbarch ()) - 2)) == 0)
-    {
-      high_bit
-	= ((ULONGEST)1) << (gdbarch_int_bit (par_state->gdbarch ()) - 1);
-
-      /* A large decimal (not hex or octal) constant (between INT_MAX
-	 and UINT_MAX) is a long or unsigned long, according to ANSI,
-	 never an unsigned int, but this code treats it as unsigned
-	 int.  This probably should be fixed.  GCC gives a warning on
-	 such constants.  */
-
-      unsigned_type = parse_type (par_state)->builtin_unsigned_int;
-      signed_type = parse_type (par_state)->builtin_int;
-    }
-  else if (long_p <= 1
-	   && (un >> (gdbarch_long_bit (par_state->gdbarch ()) - 2)) == 0)
-    {
-      high_bit
-	= ((ULONGEST)1) << (gdbarch_long_bit (par_state->gdbarch ()) - 1);
-      unsigned_type = parse_type (par_state)->builtin_unsigned_long;
-      signed_type = parse_type (par_state)->builtin_long;
-    }
+  int int_bits = gdbarch_int_bit (par_state->gdbarch ());
+  int long_bits = gdbarch_long_bit (par_state->gdbarch ());
+  int long_long_bits = gdbarch_long_long_bit (par_state->gdbarch ());
+  bool have_signed
+    /* No 'u' suffix.  */
+    = !unsigned_p;
+  bool have_unsigned
+    = ((/* 'u' suffix.  */
+	unsigned_p)
+       || (/* Not a decimal.  */
+	   base != 10)
+       || (/* Allowed as a convenience, in case decimal doesn't fit in largest
+	      signed type.  */
+	   !fits_in_type (1, n, long_long_bits, true)));
+  bool have_int
+    /* No 'l' or 'll' suffix.  */
+    = long_p == 0;
+  bool have_long
+    /* No 'll' suffix.  */
+    = long_p <= 1;
+  if (have_int && have_signed && fits_in_type (1, n, int_bits, true))
+    putithere->typed_val_int.type = parse_type (par_state)->builtin_int;
+  else if (have_int && have_unsigned && fits_in_type (1, n, int_bits, false))
+    putithere->typed_val_int.type
+      = parse_type (par_state)->builtin_unsigned_int;
+  else if (have_long && have_signed && fits_in_type (1, n, long_bits, true))
+    putithere->typed_val_int.type = parse_type (par_state)->builtin_long;
+  else if (have_long && have_unsigned && fits_in_type (1, n, long_bits, false))
+    putithere->typed_val_int.type
+      = parse_type (par_state)->builtin_unsigned_long;
+  else if (have_signed && fits_in_type (1, n, long_long_bits, true))
+    putithere->typed_val_int.type
+      = parse_type (par_state)->builtin_long_long;
+  else if (have_unsigned && fits_in_type (1, n, long_long_bits, false))
+    putithere->typed_val_int.type
+      = parse_type (par_state)->builtin_unsigned_long_long;
   else
-    {
-      int shift;
-      if (sizeof (ULONGEST) * HOST_CHAR_BIT
-	  < gdbarch_long_long_bit (par_state->gdbarch ()))
-	/* A long long does not fit in a LONGEST.  */
-	shift = (sizeof (ULONGEST) * HOST_CHAR_BIT - 1);
-      else
-	shift = (gdbarch_long_long_bit (par_state->gdbarch ()) - 1);
-      high_bit = (ULONGEST) 1 << shift;
-      unsigned_type = parse_type (par_state)->builtin_unsigned_long_long;
-      signed_type = parse_type (par_state)->builtin_long_long;
-    }
-
-   putithere->typed_val_int.val = n;
-
-   /* If the high bit of the worked out type is set then this number
-      has to be unsigned. */
-
-   if (unsigned_p || (n & high_bit))
-     {
-       putithere->typed_val_int.type = unsigned_type;
-     }
-   else
-     {
-       putithere->typed_val_int.type = signed_type;
-     }
+    error (_("Numeric constant too large."));
+  putithere->typed_val_int.val = n;
+
+   if (imaginary_p)
+     putithere->typed_val_int.type
+       = init_complex_type (nullptr, putithere->typed_val_int.type);
 
-   return INT;
+   return imaginary_p ? COMPLEX_INT : INT;
 }
 
 /* Temporary obstack used for holding strings.  */
@@ -5417,15 +5104,19 @@ 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);
 
-struct token
+struct c_token
 {
   const char *oper;
   int token;
@@ -5433,15 +5124,15 @@ struct token
   token_flags flags;
 };
 
-static const struct token tokentab3[] =
+static const struct c_token tokentab3[] =
   {
     {">>=", ASSIGN_MODIFY, BINOP_RSH, 0},
     {"<<=", ASSIGN_MODIFY, BINOP_LSH, 0},
-    {"->*", ARROW_STAR, BINOP_END, FLAG_CXX},
-    {"...", DOTDOTDOT, BINOP_END, 0}
+    {"->*", ARROW_STAR, OP_NULL, FLAG_CXX},
+    {"...", DOTDOTDOT, OP_NULL, 0}
   };
 
-static const struct token tokentab2[] =
+static const struct c_token tokentab2[] =
   {
     {"+=", ASSIGN_MODIFY, BINOP_ADD, 0},
     {"-=", ASSIGN_MODIFY, BINOP_SUB, 0},
@@ -5451,28 +5142,28 @@ static const struct token tokentab2[] =
     {"|=", ASSIGN_MODIFY, BINOP_BITWISE_IOR, 0},
     {"&=", ASSIGN_MODIFY, BINOP_BITWISE_AND, 0},
     {"^=", ASSIGN_MODIFY, BINOP_BITWISE_XOR, 0},
-    {"++", INCREMENT, BINOP_END, 0},
-    {"--", DECREMENT, BINOP_END, 0},
-    {"->", ARROW, BINOP_END, 0},
-    {"&&", ANDAND, BINOP_END, 0},
-    {"||", OROR, BINOP_END, 0},
+    {"++", INCREMENT, OP_NULL, 0},
+    {"--", DECREMENT, OP_NULL, 0},
+    {"->", ARROW, OP_NULL, 0},
+    {"&&", ANDAND, OP_NULL, 0},
+    {"||", OROR, OP_NULL, 0},
     /* "::" is *not* only C++: gdb overrides its meaning in several
        different ways, e.g., 'filename'::func, function::variable.  */
-    {"::", COLONCOLON, BINOP_END, 0},
-    {"<<", LSH, BINOP_END, 0},
-    {">>", RSH, BINOP_END, 0},
-    {"==", EQUAL, BINOP_END, 0},
-    {"!=", NOTEQUAL, BINOP_END, 0},
-    {"<=", LEQ, BINOP_END, 0},
-    {">=", GEQ, BINOP_END, 0},
-    {".*", DOT_STAR, BINOP_END, FLAG_CXX}
+    {"::", COLONCOLON, OP_NULL, 0},
+    {"<<", LSH, OP_NULL, 0},
+    {">>", RSH, OP_NULL, 0},
+    {"==", EQUAL, OP_NULL, 0},
+    {"!=", NOTEQUAL, OP_NULL, 0},
+    {"<=", LEQ, OP_NULL, 0},
+    {">=", GEQ, OP_NULL, 0},
+    {".*", DOT_STAR, OP_NULL, FLAG_CXX}
   };
 
 /* 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.  */
-static const struct token ident_tokens[] =
+   single word (like 'char') are handled by the classify_name function.  */
+static const struct c_token ident_tokens[] =
   {
     {"unsigned", UNSIGNED, OP_NULL, 0},
     {"template", TEMPLATE, OP_NULL, FLAG_CXX},
@@ -5483,27 +5174,35 @@ 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},
     {"delete", DELETE, OP_NULL, FLAG_CXX},
     {"operator", OPERATOR, OP_NULL, FLAG_CXX},
 
-    {"and", ANDAND, BINOP_END, FLAG_CXX},
+    {"and", ANDAND, OP_NULL, FLAG_CXX},
     {"and_eq", ASSIGN_MODIFY, BINOP_BITWISE_AND, FLAG_CXX},
     {"bitand", '&', OP_NULL, FLAG_CXX},
     {"bitor", '|', OP_NULL, FLAG_CXX},
     {"compl", '~', OP_NULL, FLAG_CXX},
     {"not", '!', OP_NULL, FLAG_CXX},
-    {"not_eq", NOTEQUAL, BINOP_END, FLAG_CXX},
-    {"or", OROR, BINOP_END, FLAG_CXX},
+    {"not_eq", NOTEQUAL, OP_NULL, FLAG_CXX},
+    {"or", OROR, OP_NULL, FLAG_CXX},
     {"or_eq", ASSIGN_MODIFY, BINOP_BITWISE_IOR, FLAG_CXX},
     {"xor", '^', OP_NULL, FLAG_CXX},
     {"xor_eq", ASSIGN_MODIFY, BINOP_BITWISE_XOR, FLAG_CXX},
@@ -5524,17 +5223,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.  */
@@ -5592,7 +5287,6 @@ lex_one_token (struct parser_state *par_
 {
   int c;
   int namelen;
-  unsigned int i;
   const char *tokstart;
   bool saw_structop = last_was_structop;
 
@@ -5604,59 +5298,60 @@ 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;
 
   tokstart = pstate->lexptr;
   /* See if it is a special token of length 3.  */
-  for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++)
-    if (strncmp (tokstart, tokentab3[i].oper, 3) == 0)
+  for (const auto &token : tokentab3)
+    if (strncmp (tokstart, token.oper, 3) == 0)
       {
-	if ((tokentab3[i].flags & FLAG_CXX) != 0
+	if ((token.flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	gdb_assert ((token.flags & FLAG_C) == 0);
 
 	pstate->lexptr += 3;
-	yylval.opcode = tokentab3[i].opcode;
-	return tokentab3[i].token;
+	yylval.opcode = token.opcode;
+	return token.token;
       }
 
   /* See if it is a special token of length 2.  */
-  for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++)
-    if (strncmp (tokstart, tokentab2[i].oper, 2) == 0)
+  for (const auto &token : tokentab2)
+    if (strncmp (tokstart, token.oper, 2) == 0)
       {
-	if ((tokentab2[i].flags & FLAG_CXX) != 0
+	if ((token.flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	gdb_assert ((token.flags & FLAG_C) == 0);
 
 	pstate->lexptr += 2;
-	yylval.opcode = tokentab2[i].opcode;
-	if (tokentab2[i].token == ARROW)
+	yylval.opcode = token.opcode;
+	if (token.token == ARROW)
 	  last_was_structop = 1;
-	return tokentab2[i].token;
+	return token.token;
       }
 
   switch (c = *tokstart)
     {
     case 0:
       /* If we were just scanning the result of a macro expansion,
-         then we need to resume scanning the original text.
+	 then we need to resume scanning the original text.
 	 If we're parsing for field name completion, and the previous
 	 token allows such completion, return a COMPLETE token.
-         Otherwise, we were already scanning the original text, and
-         we're really done.  */
+	 Otherwise, we were already scanning the original text, and
+	 we're really done.  */
       if (scanning_macro_expansion ())
-        {
-          finished_macro_expansion ();
-          goto retry;
-        }
+	{
+	  finished_macro_expansion ();
+	  goto retry;
+	}
       else if (saw_name_at_eof)
 	{
 	  saw_name_at_eof = 0;
@@ -5665,7 +5360,7 @@ lex_one_token (struct parser_state *par_
       else if (par_state->parse_completion && saw_structop)
 	return COMPLETE;
       else
-        return 0;
+	return 0;
 
     case ' ':
     case '\t':
@@ -5692,8 +5387,8 @@ lex_one_token (struct parser_state *par_
 
     case ',':
       if (pstate->comma_terminates
-          && paren_depth == 0
-          && ! scanning_macro_expansion ())
+	  && paren_depth == 0
+	  && ! scanning_macro_expansion ())
 	return 0;
       pstate->lexptr++;
       return c;
@@ -5705,7 +5400,7 @@ lex_one_token (struct parser_state *par_
 	  last_was_structop = true;
 	  goto symbol;		/* Nope, must be a symbol. */
 	}
-      /* FALL THRU.  */
+      [[fallthrough]];
 
     case '0':
     case '1':
@@ -5719,7 +5414,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;
 
@@ -5734,39 +5429,55 @@ lex_one_token (struct parser_state *par_
 	    hex = 0;
 	  }
 
+	/* If the token includes the C++14 digits separator, we make a
+	   copy so that we don't have to handle the separator in
+	   parse_number.  */
+	std::optional<std::string> no_tick;
 	for (;; ++p)
 	  {
 	    /* 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.  */
-	      continue;
+	      {
+		/* This is the sign of the exponent, not the end of
+		   the number.  */
+	      }
+	    else if (*p == '\'')
+	      {
+		if (!no_tick.has_value ())
+		  no_tick.emplace (tokstart, p);
+		continue;
+	      }
 	    /* We will take any letters or digits.  parse_number will
 	       complain if past the radix, or if L or U are not final.  */
 	    else if ((*p < '0' || *p > '9')
 		     && ((*p < 'a' || *p > 'z')
 				  && (*p < 'A' || *p > 'Z')))
 	      break;
+	    if (no_tick.has_value ())
+	      no_tick->push_back (*p);
 	  }
-	toktype = parse_number (par_state, tokstart, p - tokstart,
-				got_dot|got_e, &yylval);
-        if (toktype == ERROR)
-	  {
-	    char *err_copy = (char *) alloca (p - tokstart + 1);
-
-	    memcpy (err_copy, tokstart, p - tokstart);
-	    err_copy[p - tokstart] = 0;
-	    error (_("Invalid number \"%s\"."), err_copy);
-	  }
+	if (no_tick.has_value ())
+	  toktype = parse_number (par_state, no_tick->c_str (),
+				  no_tick->length (),
+				  got_dot | got_e | got_p, &yylval);
+	else
+	  toktype = parse_number (par_state, tokstart, p - tokstart,
+				  got_dot | got_e | got_p, &yylval);
+	if (toktype == ERROR)
+	  error (_("Invalid number \"%.*s\"."), (int) (p - tokstart),
+		 tokstart);
 	pstate->lexptr = p;
 	return toktype;
       }
@@ -5799,7 +5510,7 @@ lex_one_token (struct parser_state *par_
 	    return ENTRY;
 	  }
       }
-      /* FALLTHRU */
+      [[fallthrough]];
     case '+':
     case '-':
     case '*':
@@ -5826,7 +5537,7 @@ lex_one_token (struct parser_state *par_
     case 'U':
       if (tokstart[1] != '"' && tokstart[1] != '\'')
 	break;
-      /* Fall through.  */
+      [[fallthrough]];
     case '\'':
     case '"':
 
@@ -5923,22 +5634,26 @@ lex_one_token (struct parser_state *par_
 
   /* Catch specific keywords.  */
   std::string copy = copy_name (yylval.sval);
-  for (i = 0; i < sizeof ident_tokens / sizeof ident_tokens[0]; i++)
-    if (copy == ident_tokens[i].oper)
+  for (const auto &token : ident_tokens)
+    if (copy == token.oper)
       {
-	if ((ident_tokens[i].flags & FLAG_CXX) != 0
+	if ((token.flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	if ((token.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)
+	if ((token.flags & FLAG_SHADOW) != 0)
 	  {
 	    struct field_of_this_result is_a_field_of_this;
 
 	    if (lookup_symbol (copy.c_str (),
 			       pstate->expression_context_block,
-			       VAR_DOMAIN,
+			       SEARCH_VFT,
 			       (par_state->language ()->la_language
-			        == language_cplus ? &is_a_field_of_this
+				== language_cplus ? &is_a_field_of_this
 				: NULL)).symbol
 		!= NULL)
 	      {
@@ -5949,8 +5664,8 @@ lex_one_token (struct parser_state *par_
 
 	/* It is ok to always set this, even though we don't always
 	   strictly need to.  */
-	yylval.opcode = ident_tokens[i].opcode;
-	return ident_tokens[i].token;
+	yylval.opcode = token.opcode;
+	return token.token;
       }
 
   if (*tokstart == '$')
@@ -5967,22 +5682,22 @@ lex_one_token (struct parser_state *par_
 }
 
 /* An object of this type is pushed on a FIFO by the "outer" lexer.  */
-struct token_and_value
+struct c_token_and_value
 {
   int token;
-  YYSTYPE value;
+  c_exp_YYSTYPE value;
 };
 
 /* A FIFO of tokens that have been read but not yet returned to the
    parser.  */
-static std::vector<token_and_value> token_fifo;
+static std::vector<c_token_and_value> token_fifo;
 
 /* Non-zero if the lexer should return tokens from the FIFO.  */
 static int popping;
 
 /* Temporary storage for c_lex; this holds symbol names as they are
    built up.  */
-auto_obstack name_obstack;
+static auto_obstack name_obstack;
 
 /* Classify a NAME token.  The contents of the token are in `yylval'.
    Updates yylval and returns the new token type.  BLOCK is the block
@@ -6000,15 +5715,11 @@ classify_name (struct parser_state *par_
 
   std::string copy = copy_name (yylval.sval);
 
-  /* Initialize this in case we *don't* use it in this call; that way
-     we can refer to it unconditionally below.  */
-  memset (&is_a_field_of_this, 0, sizeof (is_a_field_of_this));
-
-  bsym = lookup_symbol (copy.c_str (), block, VAR_DOMAIN,
-			par_state->language ()->la_name_of_this
+  bsym = lookup_symbol (copy.c_str (), block, SEARCH_VFT,
+			par_state->language ()->name_of_this ()
 			? &is_a_field_of_this : NULL);
 
-  if (bsym.symbol && SYMBOL_CLASS (bsym.symbol) == LOC_BLOCK)
+  if (bsym.symbol && bsym.symbol->loc_class () == LOC_BLOCK)
     {
       yylval.ssym.sym = bsym;
       yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
@@ -6027,11 +5738,11 @@ classify_name (struct parser_state *par_
 	{
 	  struct field_of_this_result inner_is_a_field_of_this;
 
-	  bsym = lookup_symbol (copy.c_str (), block, STRUCT_DOMAIN,
+	  bsym = lookup_symbol (copy.c_str (), block, SEARCH_STRUCT_DOMAIN,
 				&inner_is_a_field_of_this);
 	  if (bsym.symbol != NULL)
 	    {
-	      yylval.tsym.type = SYMBOL_TYPE (bsym.symbol);
+	      yylval.tsym.type = bsym.symbol->type ();
 	      return TYPENAME;
 	    }
 	}
@@ -6045,21 +5756,20 @@ classify_name (struct parser_state *par_
 	  || is_quoted_name)
 	{
 	  /* See if it's a file name. */
-	  struct symtab *symtab;
-
-	  symtab = lookup_symtab (copy.c_str ());
-	  if (symtab)
+	  if (auto symtab = lookup_symtab (current_program_space, copy.c_str ());
+	      symtab != nullptr)
 	    {
-	      yylval.bval = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab),
-					       STATIC_BLOCK);
+	      yylval.bval
+		= symtab->compunit ()->blockvector ()->static_block ();
+
 	      return FILENAME;
 	    }
 	}
     }
 
-  if (bsym.symbol && SYMBOL_CLASS (bsym.symbol) == LOC_TYPEDEF)
+  if (bsym.symbol && bsym.symbol->loc_class () == LOC_TYPEDEF)
     {
-      yylval.tsym.type = SYMBOL_TYPE (bsym.symbol);
+      yylval.tsym.type = bsym.symbol->type ();
       return TYPENAME;
     }
 
@@ -6076,7 +5786,7 @@ classify_name (struct parser_state *par_
 	  sym = lookup_struct_typedef (copy.c_str (),
 				       par_state->expression_context_block, 1);
 	  if (sym)
-	    yylval.theclass.type = SYMBOL_TYPE (sym);
+	    yylval.theclass.type = sym->type ();
 	  return CLASSNAME;
 	}
     }
@@ -6088,7 +5798,7 @@ classify_name (struct parser_state *par_
       && ((copy[0] >= 'a' && copy[0] < 'a' + input_radix - 10)
 	  || (copy[0] >= 'A' && copy[0] < 'A' + input_radix - 10)))
     {
-      YYSTYPE newlval;	/* Its value is ignored.  */
+      c_exp_YYSTYPE newlval;	/* Its value is ignored.  */
       int hextype = parse_number (par_state, copy.c_str (), yylval.sval.length,
 				  0, &newlval);
 
@@ -6107,7 +5817,7 @@ classify_name (struct parser_state *par_
   if (bsym.symbol == NULL
       && par_state->language ()->la_language == language_cplus
       && is_a_field_of_this.type == NULL
-      && lookup_minimal_symbol (copy.c_str (), NULL, NULL).minsym == NULL)
+      && lookup_minimal_symbol (current_program_space, copy.c_str ()).minsym == nullptr)
     return UNKNOWN_CPP_NAME;
 
   return NAME;
@@ -6133,7 +5843,7 @@ classify_inner_name (struct parser_state
   std::string copy = copy_name (yylval.ssym.stoken);
   /* N.B. We assume the symbol can only be in VAR_DOMAIN.  */
   yylval.ssym.sym = cp_lookup_nested_symbol (type, copy.c_str (), block,
-					     VAR_DOMAIN);
+					     SEARCH_VFT);
 
   /* If no symbol was found, search for a matching base class named
      COPY.  This will allow users to enter qualified names of class members
@@ -6152,7 +5862,7 @@ classify_inner_name (struct parser_state
       return ERROR;
     }
 
-  switch (SYMBOL_CLASS (yylval.ssym.sym.symbol))
+  switch (yylval.ssym.sym.symbol->loc_class ())
     {
     case LOC_BLOCK:
     case LOC_LABEL:
@@ -6172,13 +5882,13 @@ classify_inner_name (struct parser_state
       return ERROR;
 
     case LOC_TYPEDEF:
-      yylval.tsym.type = SYMBOL_TYPE (yylval.ssym.sym.symbol);
+      yylval.tsym.type = yylval.ssym.sym.symbol->type ();
       return TYPENAME;
 
     default:
       return NAME;
     }
-  internal_error (__FILE__, __LINE__, _("not reached"));
+  internal_error (_("not reached"));
 }
 
 /* The outer level of a two-level lexer.  This calls the inner lexer
@@ -6196,7 +5906,7 @@ classify_inner_name (struct parser_state
 static int
 yylex (void)
 {
-  token_and_value current;
+  c_token_and_value current;
   int first_was_coloncolon, last_was_coloncolon;
   struct type *context_type = NULL;
   int last_to_examine, next_to_examine, checkpoint;
@@ -6272,7 +5982,7 @@ yylex (void)
 
   while (next_to_examine <= last_to_examine)
     {
-      token_and_value next;
+      c_token_and_value next;
 
       next = token_fifo[next_to_examine];
       ++next_to_examine;
@@ -6355,21 +6065,21 @@ c_parse (struct parser_state *par_state)
   c_parse_state cstate;
   scoped_restore cstate_restore = make_scoped_restore (&cpstate, &cstate);
 
-  gdb::unique_xmalloc_ptr<struct macro_scope> macro_scope;
+  macro_scope macro_scope;
 
   if (par_state->expression_context_block)
     macro_scope
       = sal_macro_scope (find_pc_line (par_state->expression_context_pc, 0));
   else
     macro_scope = default_macro_scope ();
-  if (! macro_scope)
+  if (!macro_scope.is_valid ())
     macro_scope = user_macro_scope ();
 
   scoped_restore restore_macro_scope
-    = make_scoped_restore (&expression_macro_scope, macro_scope.get ());
+    = make_scoped_restore (&expression_macro_scope, &macro_scope);
 
   scoped_restore restore_yydebug = make_scoped_restore (&yydebug,
-							parser_debug);
+							par_state->debug);
 
   /* Initialize some state used by the lexer.  */
   last_was_structop = false;
@@ -6380,16 +6090,20 @@ c_parse (struct parser_state *par_state)
   popping = 0;
   name_obstack.clear ();
 
-  return yyparse ();
+  int result = yyparse ();
+  if (!result)
+    pstate->set_operation (pstate->pop ());
+  return result;
 }
 
-#ifdef YYBISON
+#if defined(YYBISON) && YYBISON < 30800
+
 
 /* This is called via the YYPRINT macro when parser debugging is
    enabled.  It prints a token's value.  */
 
 static void
-c_print_token (FILE *file, int type, YYSTYPE value)
+c_print_token (FILE *file, int type, c_exp_YYSTYPE value)
 {
   switch (type)
     {
@@ -6401,14 +6115,8 @@ c_print_token (FILE *file, int type, YYS
 
     case CHAR:
     case STRING:
-      {
-	char *copy = (char *) alloca (value.tsval.length + 1);
-
-	memcpy (copy, value.tsval.ptr, value.tsval.length);
-	copy[value.tsval.length] = '\0';
-
-	parser_fprintf (file, "tsval<type=%d, %s>", value.tsval.type, copy);
-      }
+      parser_fprintf (file, "tsval<type=%d, %.*s>", value.tsval.type,
+		      value.tsval.length, value.tsval.ptr);
       break;
 
     case NSSTRING:
@@ -6444,9 +6152,5 @@ c_print_token (FILE *file, int type, YYS
 static void
 yyerror (const char *msg)
 {
-  if (pstate->prev_lexptr)
-    pstate->lexptr = pstate->prev_lexptr;
-
-  error (_("A %s in expression, near `%s'."), msg, pstate->lexptr);
+  pstate->parse_error (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.20200303/gdb/c-exp.h ./gdb/c-exp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/c-exp.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/c-exp.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,220 @@
+/* Definitions for C expressions
+
+   Copyright (C) 2020-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_C_EXP_H
+#define GDB_C_EXP_H
+
+#include "expop.h"
+#include "objc-lang.h"
+
+extern struct value *eval_op_objc_selector (struct type *expect_type,
+					    struct expression *exp,
+					    enum noside noside,
+					    const char *sel);
+extern struct value *opencl_value_cast (struct type *type, struct value *arg);
+extern struct value *eval_opencl_assign (struct type *expect_type,
+					 struct expression *exp,
+					 enum noside noside,
+					 enum exp_opcode op,
+					 struct value *arg1,
+					 struct value *arg2);
+extern struct value *opencl_relop (struct type *expect_type,
+				   struct expression *exp,
+				   enum noside noside, enum exp_opcode op,
+				   struct value *arg1, struct value *arg2);
+extern struct value *opencl_logical_not (struct type *expect_type,
+					 struct expression *exp,
+					 enum noside noside,
+					 enum exp_opcode op,
+					 struct value *arg);
+
+namespace expr
+{
+
+class c_string_operation
+  : public tuple_holding_operation<enum c_string_type_values,
+				   std::vector<std::string>>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return OP_STRING; }
+};
+
+class objc_nsstring_operation
+  : public tuple_holding_operation<std::string>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    const std::string &str = std::get<0> (m_storage);
+    return value_nsstring (exp->gdbarch, str.c_str (), str.size () + 1);
+  }
+
+  enum exp_opcode opcode () const override
+  { return OP_OBJC_NSSTRING; }
+};
+
+class objc_selector_operation
+  : public tuple_holding_operation<std::string>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    return eval_op_objc_selector (expect_type, exp, noside,
+				  std::get<0> (m_storage).c_str ());
+  }
+
+  enum exp_opcode opcode () const override
+  { return OP_OBJC_SELECTOR; }
+};
+
+/* An Objective C message call.  */
+class objc_msgcall_operation
+  : public tuple_holding_operation<CORE_ADDR, operation_up,
+				   std::vector<operation_up>>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return OP_OBJC_MSGCALL; }
+};
+
+using opencl_cast_type_operation = cxx_cast_operation<UNOP_CAST_TYPE,
+						      opencl_value_cast>;
+
+/* Binary operations, as needed for OpenCL.  */
+template<enum exp_opcode OP, binary_ftype FUNC,
+	 typename BASE = maybe_constant_operation<operation_up, operation_up>>
+class opencl_binop_operation
+  : public BASE
+{
+public:
+
+  using BASE::BASE;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override
+  {
+    value *lhs
+      = std::get<0> (this->m_storage)->evaluate (nullptr, exp, noside);
+    value *rhs
+      = std::get<1> (this->m_storage)->evaluate (lhs->type (), exp,
+						 noside);
+    return FUNC (expect_type, exp, noside, OP, lhs, rhs);
+  }
+
+  enum exp_opcode opcode () const override
+  { return OP; }
+};
+
+using opencl_assign_operation = opencl_binop_operation<BINOP_ASSIGN,
+						       eval_opencl_assign,
+						       assign_operation>;
+using opencl_equal_operation = opencl_binop_operation<BINOP_EQUAL,
+						      opencl_relop>;
+using opencl_notequal_operation = opencl_binop_operation<BINOP_NOTEQUAL,
+							 opencl_relop>;
+using opencl_less_operation = opencl_binop_operation<BINOP_LESS,
+						     opencl_relop>;
+using opencl_gtr_operation = opencl_binop_operation<BINOP_GTR,
+						    opencl_relop>;
+using opencl_geq_operation = opencl_binop_operation<BINOP_GEQ,
+						    opencl_relop>;
+using opencl_leq_operation = opencl_binop_operation<BINOP_LEQ,
+						    opencl_relop>;
+
+using opencl_not_operation = unop_operation<UNOP_LOGICAL_NOT,
+					    opencl_logical_not>;
+
+/* STRUCTOP_STRUCT implementation for OpenCL.  */
+class opencl_structop_operation
+  : public structop_base_operation
+{
+public:
+
+  using structop_base_operation::structop_base_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return STRUCTOP_STRUCT; }
+};
+
+/* This handles the "&&" and "||" operations for OpenCL.  */
+class opencl_logical_binop_operation
+  : public tuple_holding_operation<enum exp_opcode,
+				   operation_up, operation_up>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return std::get<0> (m_storage); }
+};
+
+/* The ?: ternary operator for OpenCL.  */
+class opencl_ternop_cond_operation
+  : public tuple_holding_operation<operation_up, operation_up, operation_up>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+		   struct expression *exp,
+		   enum noside noside) override;
+
+  enum exp_opcode opcode () const override
+  { return TERNOP_COND; }
+};
+
+}/* namespace expr */
+
+#endif /* GDB_C_EXP_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.20200303/gdb/c-exp.y ./gdb/c-exp.y
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/c-exp.y	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/c-exp.y	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* YACC parser for C expressions, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -35,7 +35,6 @@
 
 %{
 
-#include "defs.h"
 #include <ctype.h>
 #include "expression.h"
 #include "value.h"
@@ -43,9 +42,6 @@
 #include "language.h"
 #include "c-lang.h"
 #include "c-support.h"
-#include "bfd.h" /* Required by objfiles.h.  */
-#include "symfile.h" /* Required by objfiles.h.  */
-#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
 #include "charset.h"
 #include "block.h"
 #include "cp-support.h"
@@ -54,6 +50,8 @@
 #include "typeprint.h"
 #include "cp-abi.h"
 #include "type-stack.h"
+#include "target-float.h"
+#include "c-exp.h"
 
 #define parse_type(ps) builtin_type (ps->gdbarch ())
 
@@ -122,6 +120,7 @@ static void yyerror (const char *);
 
 static int type_aggregate_p (struct type *);
 
+using namespace expr;
 %}
 
 /* Although the yacc "value" of an expression is not used,
@@ -163,10 +162,8 @@ static int parse_number (struct parser_s
 static struct stoken operator_stoken (const char *);
 static struct stoken typename_stoken (const char *);
 static void check_parameter_typelist (std::vector<struct type *> *);
-static void write_destructor_name (struct parser_state *par_state,
-				   struct stoken);
 
-#ifdef YYBISON
+#if defined(YYBISON) && YYBISON < 30800
 static void c_print_token (FILE *file, int type, YYSTYPE value);
 #define YYPRINT(FILE, TYPE, VALUE) c_print_token (FILE, TYPE, VALUE)
 #endif
@@ -174,7 +171,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 +182,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 +234,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
 
@@ -279,190 +278,213 @@ start   :	exp1
 	;
 
 type_exp:	type
-			{ write_exp_elt_opcode(pstate, OP_TYPE);
-			  write_exp_elt_type(pstate, $1);
-			  write_exp_elt_opcode(pstate, OP_TYPE);}
+			{
+			  pstate->push_new<type_operation> ($1);
+			}
 	|	TYPEOF '(' exp ')'
 			{
-			  write_exp_elt_opcode (pstate, OP_TYPEOF);
+			  pstate->wrap<typeof_operation> ();
 			}
 	|	TYPEOF '(' type ')'
 			{
-			  write_exp_elt_opcode (pstate, OP_TYPE);
-			  write_exp_elt_type (pstate, $3);
-			  write_exp_elt_opcode (pstate, OP_TYPE);
+			  pstate->push_new<type_operation> ($3);
 			}
 	|	DECLTYPE '(' exp ')'
 			{
-			  write_exp_elt_opcode (pstate, OP_DECLTYPE);
+			  pstate->wrap<decltype_operation> ();
 			}
 	;
 
 /* Expressions, including the comma operator.  */
 exp1	:	exp
 	|	exp1 ',' exp
-			{ write_exp_elt_opcode (pstate, BINOP_COMMA); }
+			{ pstate->wrap2<comma_operation> (); }
 	;
 
 /* Expressions, not including the comma operator.  */
 exp	:	'*' exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_IND); }
+			{ pstate->wrap<unop_ind_operation> (); }
 	;
 
 exp	:	'&' exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_ADDR); }
+			{ pstate->wrap<unop_addr_operation> (); }
 	;
 
 exp	:	'-' exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_NEG); }
+			{ pstate->wrap<unary_neg_operation> (); }
 	;
 
 exp	:	'+' exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_PLUS); }
+			{ pstate->wrap<unary_plus_operation> (); }
 	;
 
 exp	:	'!' exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_LOGICAL_NOT); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap<opencl_not_operation> ();
+			  else
+			    pstate->wrap<unary_logical_not_operation> ();
+			}
 	;
 
 exp	:	'~' exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_COMPLEMENT); }
+			{ pstate->wrap<unary_complement_operation> (); }
 	;
 
 exp	:	INCREMENT exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_PREINCREMENT); }
+			{ pstate->wrap<preinc_operation> (); }
 	;
 
 exp	:	DECREMENT exp    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_PREDECREMENT); }
+			{ pstate->wrap<predec_operation> (); }
 	;
 
 exp	:	exp INCREMENT    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_POSTINCREMENT); }
+			{ pstate->wrap<postinc_operation> (); }
 	;
 
 exp	:	exp DECREMENT    %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_POSTDECREMENT); }
+			{ pstate->wrap<postdec_operation> (); }
 	;
 
 exp	:	TYPEID '(' exp ')' %prec UNARY
-			{ write_exp_elt_opcode (pstate, OP_TYPEID); }
+			{ pstate->wrap<typeid_operation> (); }
 	;
 
 exp	:	TYPEID '(' type_exp ')' %prec UNARY
-			{ write_exp_elt_opcode (pstate, OP_TYPEID); }
+			{ pstate->wrap<typeid_operation> (); }
 	;
 
 exp	:	SIZEOF exp       %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_SIZEOF); }
+			{ pstate->wrap<unop_sizeof_operation> (); }
 	;
 
 exp	:	ALIGNOF '(' type_exp ')'	%prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_ALIGNOF); }
+			{ pstate->wrap<unop_alignof_operation> (); }
 	;
 
 exp	:	exp ARROW field_name
-			{ write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_exp_string (pstate, $3);
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+			{
+			  pstate->push_new<structop_ptr_operation>
+			    (pstate->pop (), copy_name ($3));
+			}
 	;
 
 exp	:	exp ARROW field_name COMPLETE
-			{ pstate->mark_struct_expression ();
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_exp_string (pstate, $3);
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+			{
+			  structop_base_operation *op
+			    = new structop_ptr_operation (pstate->pop (),
+							  copy_name ($3));
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
 	;
 
 exp	:	exp ARROW COMPLETE
-			{ 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); }
+			{
+			  structop_base_operation *op
+			    = new structop_ptr_operation (pstate->pop (), "");
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
 	;
 
 exp	:	exp ARROW '~' name
-			{ write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_destructor_name (pstate, $4);
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+			{
+			  pstate->push_new<structop_ptr_operation>
+			    (pstate->pop (), "~" + copy_name ($4));
+			}
 	;
 
 exp	:	exp ARROW '~' name COMPLETE
-			{ pstate->mark_struct_expression ();
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR);
-			  write_destructor_name (pstate, $4);
-			  write_exp_elt_opcode (pstate, STRUCTOP_PTR); }
+			{
+			  structop_base_operation *op
+			    = new structop_ptr_operation (pstate->pop (),
+							  "~" + copy_name ($4));
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
 	;
 
 exp	:	exp ARROW qualified_name
 			{ /* 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); }
+			  pstate->wrap<unop_addr_operation> ();
+			  pstate->wrap2<structop_mptr_operation> (); }
 	;
 
 exp	:	exp ARROW_STAR exp
-			{ write_exp_elt_opcode (pstate, STRUCTOP_MPTR); }
+			{ pstate->wrap2<structop_mptr_operation> (); }
 	;
 
 exp	:	exp '.' field_name
-			{ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, $3);
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->push_new<opencl_structop_operation>
+			      (pstate->pop (), copy_name ($3));
+			  else
+			    pstate->push_new<structop_operation>
+			      (pstate->pop (), copy_name ($3));
+			}
 	;
 
 exp	:	exp '.' field_name COMPLETE
-			{ pstate->mark_struct_expression ();
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_exp_string (pstate, $3);
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+			{
+			  structop_base_operation *op
+			    = new structop_operation (pstate->pop (),
+						      copy_name ($3));
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
 	;
 
 exp	:	exp '.' COMPLETE
-			{ 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); }
+			{
+			  structop_base_operation *op
+			    = new structop_operation (pstate->pop (), "");
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
 	;
 
 exp	:	exp '.' '~' name
-			{ write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_destructor_name (pstate, $4);
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+			{
+			  pstate->push_new<structop_operation>
+			    (pstate->pop (), "~" + copy_name ($4));
+			}
 	;
 
 exp	:	exp '.' '~' name COMPLETE
-			{ pstate->mark_struct_expression ();
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT);
-			  write_destructor_name (pstate, $4);
-			  write_exp_elt_opcode (pstate, STRUCTOP_STRUCT); }
+			{
+			  structop_base_operation *op
+			    = new structop_operation (pstate->pop (),
+						      "~" + copy_name ($4));
+			  pstate->mark_struct_expression (op);
+			  pstate->push (operation_up (op));
+			}
 	;
 
 exp	:	exp '.' qualified_name
 			{ /* 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); }
+			  pstate->wrap<unop_addr_operation> ();
+			  pstate->wrap2<structop_member_operation> (); }
 	;
 
 exp	:	exp DOT_STAR exp
-			{ write_exp_elt_opcode (pstate, STRUCTOP_MEMBER); }
+			{ pstate->wrap2<structop_member_operation> (); }
 	;
 
 exp	:	exp '[' exp1 ']'
-			{ write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+			{ pstate->wrap2<subscript_operation> (); }
 	;
 
 exp	:	exp OBJC_LBRAC exp1 ']'
-			{ write_exp_elt_opcode (pstate, BINOP_SUBSCRIPT); }
+			{ pstate->wrap2<subscript_operation> (); }
 	;
 
 /*
@@ -480,43 +502,30 @@ exp	: 	OBJC_LBRAC TYPENAME
 			  if (theclass == 0)
 			    error (_("%s is not an ObjC Class"),
 				   copy.c_str ());
-			  write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate,
-					      parse_type (pstate)->builtin_int);
-			  write_exp_elt_longcst (pstate, (LONGEST) theclass);
-			  write_exp_elt_opcode (pstate, OP_LONG);
+			  pstate->push_new<long_const_operation>
+			    (parse_type (pstate)->builtin_int,
+			     (LONGEST) theclass);
 			  start_msglist();
 			}
 		msglist ']'
-			{ write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			  end_msglist (pstate);
-			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			}
+			{ end_msglist (pstate); }
 	;
 
 exp	:	OBJC_LBRAC CLASSNAME
 			{
-			  write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate,
-					    parse_type (pstate)->builtin_int);
-			  write_exp_elt_longcst (pstate, (LONGEST) $2.theclass);
-			  write_exp_elt_opcode (pstate, OP_LONG);
+			  pstate->push_new<long_const_operation>
+			    (parse_type (pstate)->builtin_int,
+			     (LONGEST) $2.theclass);
 			  start_msglist();
 			}
 		msglist ']'
-			{ write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			  end_msglist (pstate);
-			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			}
+			{ end_msglist (pstate); }
 	;
 
 exp	:	OBJC_LBRAC exp
 			{ start_msglist(); }
 		msglist ']'
-			{ write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			  end_msglist (pstate);
-			  write_exp_elt_opcode (pstate, OP_OBJC_MSGCALL);
-			}
+			{ end_msglist (pstate); }
 	;
 
 msglist :	name
@@ -541,21 +550,22 @@ exp	:	exp '('
 			   being accumulated by an outer function call.  */
 			{ pstate->start_arglist (); }
 		arglist ')'	%prec ARROW
-			{ write_exp_elt_opcode (pstate, OP_FUNCALL);
-			  write_exp_elt_longcst (pstate,
-						 pstate->end_arglist ());
-			  write_exp_elt_opcode (pstate, OP_FUNCALL); }
+			{
+			  std::vector<operation_up> args
+			    = pstate->pop_vector (pstate->end_arglist ());
+			  pstate->push_new<funcall_operation>
+			    (pstate->pop (), std::move (args));
+			}
 	;
 
 /* This is here to disambiguate with the production for
    "func()::static_var" further below, which uses
    function_method_void.  */
 exp	:	exp '(' ')' %prec ARROW
-			{ 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); }
+			{
+			  pstate->push_new<funcall_operation>
+			    (pstate->pop (), std::vector<operation_up> ());
+			}
 	;
 
 
@@ -563,25 +573,18 @@ exp	:	UNKNOWN_CPP_NAME '('
 			{
 			  /* This could potentially be a an argument defined
 			     lookup function (Koenig).  */
-			  write_exp_elt_opcode (pstate, OP_ADL_FUNC);
-			  write_exp_elt_block
-			    (pstate, pstate->expression_context_block);
-			  write_exp_elt_sym (pstate,
-					     NULL); /* Placeholder.  */
-			  write_exp_string (pstate, $1.stoken);
-			  write_exp_elt_opcode (pstate, OP_ADL_FUNC);
-
-			/* This is to save the value of arglist_len
-			   being accumulated by an outer function call.  */
-
+			  /* This is to save the value of arglist_len
+			     being accumulated by an outer function call.  */
 			  pstate->start_arglist ();
 			}
 		arglist ')'	%prec ARROW
 			{
-			  write_exp_elt_opcode (pstate, OP_FUNCALL);
-			  write_exp_elt_longcst (pstate,
-						 pstate->end_arglist ());
-			  write_exp_elt_opcode (pstate, OP_FUNCALL);
+			  std::vector<operation_up> args
+			    = pstate->pop_vector (pstate->end_arglist ());
+			  pstate->push_new<adl_func_operation>
+			    (copy_name ($1.stoken),
+			     pstate->expression_context_block,
+			     std::move (args));
 			}
 	;
 
@@ -603,33 +606,25 @@ arglist	:	arglist ',' exp   %prec ABOVE_
 function_method:       exp '(' parameter_typelist ')' const_or_volatile
 			{
 			  std::vector<struct type *> *type_list = $3;
-			  LONGEST len = type_list->size ();
-
-			  write_exp_elt_opcode (pstate, TYPE_INSTANCE);
 			  /* Save the const/volatile qualifiers as
 			     recorded by the const_or_volatile
 			     production's actions.  */
-			  write_exp_elt_longcst
-			    (pstate,
-			     (cpstate->type_stack
-			      .follow_type_instance_flags ()));
-			  write_exp_elt_longcst (pstate, len);
-			  for (type *type_elt : *type_list)
-			    write_exp_elt_type (pstate, type_elt);
-			  write_exp_elt_longcst(pstate, len);
-			  write_exp_elt_opcode (pstate, TYPE_INSTANCE);
+			  type_instance_flags flags
+			    = (cpstate->type_stack
+			       .follow_type_instance_flags ());
+			  pstate->push_new<type_instance_operation>
+			    (flags, std::move (*type_list),
+			     pstate->pop ());
 			}
 	;
 
 function_method_void:	    exp '(' ')' const_or_volatile
-		       { write_exp_elt_opcode (pstate, TYPE_INSTANCE);
-			 /* See above.  */
-			 write_exp_elt_longcst
-			   (pstate,
-			    cpstate->type_stack.follow_type_instance_flags ());
-			 write_exp_elt_longcst (pstate, 0);
-			 write_exp_elt_longcst (pstate, 0);
-			 write_exp_elt_opcode (pstate, TYPE_INSTANCE);
+		       {
+			  type_instance_flags flags
+			    = (cpstate->type_stack
+			       .follow_type_instance_flags ());
+			  pstate->push_new<type_instance_operation>
+			    (flags, std::vector<type *> (), pstate->pop ());
 		       }
        ;
 
@@ -646,9 +641,8 @@ function_method_void_or_typelist: functi
 
 exp     :       function_method_void_or_typelist COLONCOLON name
 			{
-			  write_exp_elt_opcode (pstate, OP_FUNC_STATIC_VAR);
-			  write_exp_string (pstate, $3);
-			  write_exp_elt_opcode (pstate, OP_FUNC_STATIC_VAR);
+			  pstate->push_new<func_static_var_operation>
+			    (pstate->pop (), copy_name ($3));
 			}
 	;
 
@@ -656,18 +650,26 @@ rcurly	:	'}'
 			{ $$ = pstate->end_arglist () - 1; }
 	;
 exp	:	lcurly arglist rcurly	%prec ARROW
-			{ write_exp_elt_opcode (pstate, OP_ARRAY);
-			  write_exp_elt_longcst (pstate, (LONGEST) 0);
-			  write_exp_elt_longcst (pstate, (LONGEST) $3);
-			  write_exp_elt_opcode (pstate, OP_ARRAY); }
+			{
+			  std::vector<operation_up> args
+			    = pstate->pop_vector ($3 + 1);
+			  pstate->push_new<array_operation> (0, $3,
+							     std::move (args));
+			}
 	;
 
 exp	:	lcurly type_exp rcurly exp  %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_MEMVAL_TYPE); }
+			{ pstate->wrap2<unop_memval_type_operation> (); }
 	;
 
 exp	:	'(' type_exp ')' exp  %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_cast_type_operation> ();
+			  else
+			    pstate->wrap2<unop_cast_type_operation> ();
+			}
 	;
 
 exp	:	'(' exp1 ')'
@@ -677,101 +679,195 @@ exp	:	'(' exp1 ')'
 /* Binary operators in order of decreasing precedence.  */
 
 exp	:	exp '@' exp
-			{ write_exp_elt_opcode (pstate, BINOP_REPEAT); }
+			{ pstate->wrap2<repeat_operation> (); }
 	;
 
 exp	:	exp '*' exp
-			{ write_exp_elt_opcode (pstate, BINOP_MUL); }
+			{ pstate->wrap2<mul_operation> (); }
 	;
 
 exp	:	exp '/' exp
-			{ write_exp_elt_opcode (pstate, BINOP_DIV); }
+			{ pstate->wrap2<div_operation> (); }
 	;
 
 exp	:	exp '%' exp
-			{ write_exp_elt_opcode (pstate, BINOP_REM); }
+			{ pstate->wrap2<rem_operation> (); }
 	;
 
 exp	:	exp '+' exp
-			{ write_exp_elt_opcode (pstate, BINOP_ADD); }
+			{ pstate->wrap2<add_operation> (); }
 	;
 
 exp	:	exp '-' exp
-			{ write_exp_elt_opcode (pstate, BINOP_SUB); }
+			{ pstate->wrap2<sub_operation> (); }
 	;
 
 exp	:	exp LSH exp
-			{ write_exp_elt_opcode (pstate, BINOP_LSH); }
+			{ pstate->wrap2<lsh_operation> (); }
 	;
 
 exp	:	exp RSH exp
-			{ write_exp_elt_opcode (pstate, BINOP_RSH); }
+			{ pstate->wrap2<rsh_operation> (); }
 	;
 
 exp	:	exp EQUAL exp
-			{ write_exp_elt_opcode (pstate, BINOP_EQUAL); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_equal_operation> ();
+			  else
+			    pstate->wrap2<equal_operation> ();
+			}
 	;
 
 exp	:	exp NOTEQUAL exp
-			{ write_exp_elt_opcode (pstate, BINOP_NOTEQUAL); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_notequal_operation> ();
+			  else
+			    pstate->wrap2<notequal_operation> ();
+			}
 	;
 
 exp	:	exp LEQ exp
-			{ write_exp_elt_opcode (pstate, BINOP_LEQ); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_leq_operation> ();
+			  else
+			    pstate->wrap2<leq_operation> ();
+			}
 	;
 
 exp	:	exp GEQ exp
-			{ write_exp_elt_opcode (pstate, BINOP_GEQ); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_geq_operation> ();
+			  else
+			    pstate->wrap2<geq_operation> ();
+			}
 	;
 
 exp	:	exp '<' exp
-			{ write_exp_elt_opcode (pstate, BINOP_LESS); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_less_operation> ();
+			  else
+			    pstate->wrap2<less_operation> ();
+			}
 	;
 
 exp	:	exp '>' exp
-			{ write_exp_elt_opcode (pstate, BINOP_GTR); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_gtr_operation> ();
+			  else
+			    pstate->wrap2<gtr_operation> ();
+			}
 	;
 
 exp	:	exp '&' exp
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_AND); }
+			{ pstate->wrap2<bitwise_and_operation> (); }
 	;
 
 exp	:	exp '^' exp
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_XOR); }
+			{ pstate->wrap2<bitwise_xor_operation> (); }
 	;
 
 exp	:	exp '|' exp
-			{ write_exp_elt_opcode (pstate, BINOP_BITWISE_IOR); }
+			{ pstate->wrap2<bitwise_ior_operation> (); }
 	;
 
 exp	:	exp ANDAND exp
-			{ write_exp_elt_opcode (pstate, BINOP_LOGICAL_AND); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    {
+			      operation_up rhs = pstate->pop ();
+			      operation_up lhs = pstate->pop ();
+			      pstate->push_new<opencl_logical_binop_operation>
+				(BINOP_LOGICAL_AND, std::move (lhs),
+				 std::move (rhs));
+			    }
+			  else
+			    pstate->wrap2<logical_and_operation> ();
+			}
 	;
 
 exp	:	exp OROR exp
-			{ write_exp_elt_opcode (pstate, BINOP_LOGICAL_OR); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    {
+			      operation_up rhs = pstate->pop ();
+			      operation_up lhs = pstate->pop ();
+			      pstate->push_new<opencl_logical_binop_operation>
+				(BINOP_LOGICAL_OR, std::move (lhs),
+				 std::move (rhs));
+			    }
+			  else
+			    pstate->wrap2<logical_or_operation> ();
+			}
 	;
 
 exp	:	exp '?' exp ':' exp	%prec '?'
-			{ write_exp_elt_opcode (pstate, TERNOP_COND); }
+			{
+			  operation_up last = pstate->pop ();
+			  operation_up mid = pstate->pop ();
+			  operation_up first = pstate->pop ();
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->push_new<opencl_ternop_cond_operation>
+			      (std::move (first), std::move (mid),
+			       std::move (last));
+			  else
+			    pstate->push_new<ternop_cond_operation>
+			      (std::move (first), std::move (mid),
+			       std::move (last));
+			}
 	;
 
 exp	:	exp '=' exp
-			{ write_exp_elt_opcode (pstate, BINOP_ASSIGN); }
+			{
+			  if (pstate->language ()->la_language
+			      == language_opencl)
+			    pstate->wrap2<opencl_assign_operation> ();
+			  else
+			    pstate->wrap2<assign_operation> ();
+			}
 	;
 
 exp	:	exp ASSIGN_MODIFY exp
-			{ write_exp_elt_opcode (pstate, BINOP_ASSIGN_MODIFY);
-			  write_exp_elt_opcode (pstate, $2);
-			  write_exp_elt_opcode (pstate,
-						BINOP_ASSIGN_MODIFY); }
+			{
+			  operation_up rhs = pstate->pop ();
+			  operation_up lhs = pstate->pop ();
+			  pstate->push_new<assign_modify_operation>
+			    ($2, std::move (lhs), std::move (rhs));
+			}
 	;
 
 exp	:	INT
-			{ write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate, $1.type);
-			  write_exp_elt_longcst (pstate, (LONGEST) ($1.val));
-			  write_exp_elt_opcode (pstate, OP_LONG); }
+			{
+			  pstate->push_new<long_const_operation>
+			    ($1.type, $1.val);
+			}
+	;
+
+exp	:	COMPLEX_INT
+			{
+			  operation_up real
+			    = (make_operation<long_const_operation>
+			       ($1.type->target_type (), 0));
+			  operation_up imag
+			    = (make_operation<long_const_operation>
+			       ($1.type->target_type (), $1.val));
+			  pstate->push_new<complex_operation>
+			    (std::move (real), std::move (imag), $1.type);
+			}
 	;
 
 exp	:	CHAR
@@ -779,7 +875,7 @@ exp	:	CHAR
 			  struct stoken_vector vec;
 			  vec.len = 1;
 			  vec.tokens = &$1;
-			  write_exp_string_vector (pstate, $1.type, &vec);
+			  pstate->push_c_string ($1.type, &vec);
 			}
 	;
 
@@ -787,20 +883,43 @@ exp	:	NAME_OR_INT
 			{ YYSTYPE val;
 			  parse_number (pstate, $1.stoken.ptr,
 					$1.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);
+			  pstate->push_new<long_const_operation>
+			    (val.typed_val_int.type,
+			     val.typed_val_int.val);
 			}
 	;
 
 
 exp	:	FLOAT
-			{ write_exp_elt_opcode (pstate, OP_FLOAT);
-			  write_exp_elt_type (pstate, $1.type);
-			  write_exp_elt_floatcst (pstate, $1.val);
-			  write_exp_elt_opcode (pstate, OP_FLOAT); }
+			{
+			  float_data data;
+			  std::copy (std::begin ($1.val), std::end ($1.val),
+				     std::begin (data));
+			  pstate->push_new<float_const_operation> ($1.type, data);
+			}
+	;
+
+exp	:	COMPLEX_FLOAT
+			{
+			  struct type *underlying = $1.type->target_type ();
+
+			  float_data val;
+			  target_float_from_host_double (val.data (),
+							 underlying, 0);
+			  operation_up real
+			    = (make_operation<float_const_operation>
+			       (underlying, val));
+
+			  std::copy (std::begin ($1.val), std::end ($1.val),
+				     std::begin (val));
+			  operation_up imag
+			    = (make_operation<float_const_operation>
+			       (underlying, val));
+
+			  pstate->push_new<complex_operation>
+			    (std::move (real), std::move (imag),
+			     $1.type);
+			}
 	;
 
 exp	:	variable
@@ -808,23 +927,22 @@ exp	:	variable
 
 exp	:	DOLLAR_VARIABLE
 			{
-			  write_dollar_variable (pstate, $1);
+			  pstate->push_dollar ($1);
 			}
 	;
 
 exp	:	SELECTOR '(' name ')'
 			{
-			  write_exp_elt_opcode (pstate, OP_OBJC_SELECTOR);
-			  write_exp_string (pstate, $3);
-			  write_exp_elt_opcode (pstate, OP_OBJC_SELECTOR); }
+			  pstate->push_new<objc_selector_operation>
+			    (copy_name ($3));
+			}
 	;
 
 exp	:	SIZEOF '(' type ')'	%prec UNARY
 			{ struct type *type = $3;
-			  write_exp_elt_opcode (pstate, OP_LONG);
-			  write_exp_elt_type (pstate, lookup_signed_typename
-					      (pstate->language (),
-					       "int"));
+			  struct type *int_type
+			    = lookup_signed_typename (pstate->language (),
+						      "int");
 			  type = check_typedef (type);
 
 			    /* $5.3.3/2 of the C++ Standard (n3290 draft)
@@ -832,29 +950,29 @@ exp	:	SIZEOF '(' type ')'	%prec UNARY
 			       or a reference type, the result is the size of
 			       the referenced type."  */
 			  if (TYPE_IS_REFERENCE (type))
-			    type = check_typedef (TYPE_TARGET_TYPE (type));
-			  write_exp_elt_longcst (pstate,
-						 (LONGEST) TYPE_LENGTH (type));
-			  write_exp_elt_opcode (pstate, OP_LONG); }
+			    type = check_typedef (type->target_type ());
+
+			  pstate->push_new<long_const_operation>
+			    (int_type, type->length ());
+			}
 	;
 
 exp	:	REINTERPRET_CAST '<' type_exp '>' '(' exp ')' %prec UNARY
-			{ write_exp_elt_opcode (pstate,
-						UNOP_REINTERPRET_CAST); }
+			{ pstate->wrap2<reinterpret_cast_operation> (); }
 	;
 
 exp	:	STATIC_CAST '<' type_exp '>' '(' exp ')' %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+			{ pstate->wrap2<unop_cast_type_operation> (); }
 	;
 
 exp	:	DYNAMIC_CAST '<' type_exp '>' '(' exp ')' %prec UNARY
-			{ write_exp_elt_opcode (pstate, UNOP_DYNAMIC_CAST); }
+			{ pstate->wrap2<dynamic_cast_operation> (); }
 	;
 
 exp	:	CONST_CAST '<' type_exp '>' '(' exp ')' %prec UNARY
 			{ /* We could do more error checking here, but
 			     it doesn't seem worthwhile.  */
-			  write_exp_elt_opcode (pstate, UNOP_CAST_TYPE); }
+			  pstate->wrap2<unop_cast_type_operation> (); }
 	;
 
 string_exp:
@@ -914,12 +1032,11 @@ exp	:	string_exp
 				  break;
 				default:
 				  /* internal error */
-				  internal_error (__FILE__, __LINE__,
-						  "unrecognized type in string concatenation");
+				  internal_error ("unrecognized type in string concatenation");
 				}
 			    }
 
-			  write_exp_string_vector (pstate, type, &$1);
+			  pstate->push_c_string (type, &$1);
 			  for (i = 0; i < $1.len; ++i)
 			    free ($1.tokens[i].ptr);
 			  free ($1.tokens);
@@ -929,26 +1046,23 @@ exp	:	string_exp
 exp     :	NSSTRING	/* ObjC NextStep NSString constant
 				 * of the form '@' '"' string '"'.
 				 */
-			{ write_exp_elt_opcode (pstate, OP_OBJC_NSSTRING);
-			  write_exp_string (pstate, $1);
-			  write_exp_elt_opcode (pstate, OP_OBJC_NSSTRING); }
+			{
+			  pstate->push_new<objc_nsstring_operation>
+			    (copy_name ($1));
+			}
 	;
 
 /* C++.  */
 exp     :       TRUEKEYWORD
-                        { 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); }
+			{ pstate->push_new<long_const_operation>
+			    (parse_type (pstate)->builtin_bool, 1);
+			}
 	;
 
 exp     :       FALSEKEYWORD
-                        { 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); }
+			{ pstate->push_new<long_const_operation>
+			    (parse_type (pstate)->builtin_bool, 0);
+			}
 	;
 
 /* end of C++.  */
@@ -956,7 +1070,7 @@ exp     :       FALSEKEYWORD
 block	:	BLOCKNAME
 			{
 			  if ($1.sym.symbol)
-			    $$ = SYMBOL_BLOCK_VALUE ($1.sym.symbol);
+			    $$ = $1.sym.symbol->value_block ();
 			  else
 			    error (_("No file or function \"%s\"."),
 				   copy_name ($1.stoken).c_str ());
@@ -972,26 +1086,25 @@ block	:	block COLONCOLON name
 			  std::string copy = copy_name ($3);
 			  struct symbol *tem
 			    = lookup_symbol (copy.c_str (), $1,
-					     VAR_DOMAIN, NULL).symbol;
+					     SEARCH_FUNCTION_DOMAIN,
+					     nullptr).symbol;
 
-			  if (!tem || SYMBOL_CLASS (tem) != LOC_BLOCK)
+			  if (tem == nullptr)
 			    error (_("No function \"%s\" in specified context."),
 				   copy.c_str ());
-			  $$ = SYMBOL_BLOCK_VALUE (tem); }
+			  $$ = tem->value_block (); }
 	;
 
 variable:	name_not_typename ENTRY
 			{ struct symbol *sym = $1.sym.symbol;
 
-			  if (sym == NULL || !SYMBOL_IS_ARGUMENT (sym)
+			  if (sym == NULL || !sym->is_argument ()
 			      || !symbol_read_needs_frame (sym))
 			    error (_("@entry can be used only for function "
 				     "parameters, not for \"%s\""),
 				   copy_name ($1.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);
+			  pstate->push_new<var_entry_value_operation> (sym);
 			}
 	;
 
@@ -1000,7 +1113,7 @@ variable:	block COLONCOLON name
 			  std::string copy = copy_name ($3);
 			  struct block_symbol sym
 			    = lookup_symbol (copy.c_str (), $1,
-					     VAR_DOMAIN, NULL);
+					     SEARCH_VFT, NULL);
 
 			  if (sym.symbol == 0)
 			    error (_("No symbol \"%s\" in specified context."),
@@ -1008,10 +1121,8 @@ variable:	block COLONCOLON name
 			  if (symbol_read_needs_frame (sym.symbol))
 			    pstate->block_tracker->update (sym);
 
-			  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-			  write_exp_elt_block (pstate, sym.block);
-			  write_exp_elt_sym (pstate, sym.symbol);
-			  write_exp_elt_opcode (pstate, OP_VAR_VALUE); }
+			  pstate->push_new<var_value_operation> (sym);
+			}
 	;
 
 qualified_name:	TYPENAME COLONCOLON name
@@ -1022,34 +1133,24 @@ qualified_name:	TYPENAME COLONCOLON name
 			    error (_("`%s' is not defined as an aggregate type."),
 				   TYPE_SAFE_NAME (type));
 
-			  write_exp_elt_opcode (pstate, OP_SCOPE);
-			  write_exp_elt_type (pstate, type);
-			  write_exp_string (pstate, $3);
-			  write_exp_elt_opcode (pstate, OP_SCOPE);
+			  pstate->push_new<scope_operation> (type,
+							     copy_name ($3));
 			}
 	|	TYPENAME COLONCOLON '~' name
 			{
 			  struct type *type = $1.type;
-			  struct stoken tmp_token;
-			  char *buf;
 
 			  type = check_typedef (type);
 			  if (!type_aggregate_p (type))
 			    error (_("`%s' is not defined as an aggregate type."),
 				   TYPE_SAFE_NAME (type));
-			  buf = (char *) alloca ($4.length + 2);
-			  tmp_token.ptr = buf;
-			  tmp_token.length = $4.length + 1;
-			  buf[0] = '~';
-			  memcpy (buf+1, $4.ptr, $4.length);
-			  buf[tmp_token.length] = 0;
+			  std::string name = "~" + std::string ($4.ptr,
+								$4.length);
 
 			  /* Check for valid destructor name.  */
-			  destructor_name_p (tmp_token.ptr, $1.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);
+			  destructor_name_p (name.c_str (), $1.type);
+			  pstate->push_new<scope_operation> (type,
+							     std::move (name));
 			}
 	|	TYPENAME COLONCOLON name COLONCOLON name
 			{
@@ -1064,30 +1165,11 @@ variable:	qualified_name
 	|	COLONCOLON name_not_typename
 			{
 			  std::string name = copy_name ($2.stoken);
-			  struct symbol *sym;
-			  struct bound_minimal_symbol msymbol;
-
-			  sym
+			  struct block_symbol sym
 			    = lookup_symbol (name.c_str (),
 					     (const struct block *) NULL,
-					     VAR_DOMAIN, NULL).symbol;
-			  if (sym)
-			    {
-			      write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-			      write_exp_elt_block (pstate, NULL);
-			      write_exp_elt_sym (pstate, sym);
-			      write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-			      break;
-			    }
-
-			  msymbol = lookup_bound_minimal_symbol (name.c_str ());
-			  if (msymbol.minsym != NULL)
-			    write_exp_msymbol (pstate, msymbol);
-			  else if (!have_full_symbols () && !have_partial_symbols ())
-			    error (_("No symbol table is loaded.  Use the \"file\" command."));
-			  else
-			    error (_("No symbol \"%s\" in current context."),
-				   name.c_str ());
+					     SEARCH_VFT, NULL);
+			  pstate->push_symbol (name.c_str (), sym);
 			}
 	;
 
@@ -1107,36 +1189,32 @@ variable:	name_not_typename
 			      bound_minimal_symbol resolver
 				= find_gnu_ifunc (sym.symbol);
 			      if (resolver.minsym != NULL)
-				write_exp_msymbol (pstate, resolver);
+				pstate->push_new<var_msym_value_operation>
+				  (resolver);
 			      else
-				{
-				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-				  write_exp_elt_block (pstate, sym.block);
-				  write_exp_elt_sym (pstate, sym.symbol);
-				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-				}
+				pstate->push_new<var_value_operation> (sym);
 			    }
 			  else if ($1.is_a_field_of_this)
 			    {
 			      /* C++: it hangs off of `this'.  Must
-			         not inadvertently convert from a method call
+				 not inadvertently convert from a method call
 				 to data ref.  */
 			      pstate->block_tracker->update (sym);
-			      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, $1.stoken);
-			      write_exp_elt_opcode (pstate, STRUCTOP_PTR);
+			      operation_up thisop
+				= make_operation<op_this_operation> ();
+			      pstate->push_new<structop_ptr_operation>
+				(std::move (thisop), copy_name ($1.stoken));
 			    }
 			  else
 			    {
 			      std::string arg = copy_name ($1.stoken);
 
 			      bound_minimal_symbol msymbol
-				= lookup_bound_minimal_symbol (arg.c_str ());
+				= lookup_minimal_symbol (current_program_space, arg.c_str ());
 			      if (msymbol.minsym == NULL)
 				{
-				  if (!have_full_symbols () && !have_partial_symbols ())
+				  if (!have_full_symbols (current_program_space)
+				      && !have_partial_symbols (current_program_space))
 				    error (_("No symbol table is loaded.  Use the \"file\" command."));
 				  else
 				    error (_("No symbol \"%s\" in current context."),
@@ -1151,54 +1229,65 @@ variable:	name_not_typename
 				 is important for example for "p
 				 *__errno_location()".  */
 			      symbol *alias_target
-				= ((msymbol.minsym->type != mst_text_gnu_ifunc
-				    && msymbol.minsym->type != mst_data_gnu_ifunc)
+				= ((msymbol.minsym->type () != mst_text_gnu_ifunc
+				    && msymbol.minsym->type () != mst_data_gnu_ifunc)
 				   ? find_function_alias_target (msymbol)
 				   : NULL);
 			      if (alias_target != NULL)
 				{
-				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
-				  write_exp_elt_block
-				    (pstate, SYMBOL_BLOCK_VALUE (alias_target));
-				  write_exp_elt_sym (pstate, alias_target);
-				  write_exp_elt_opcode (pstate, OP_VAR_VALUE);
+				  block_symbol bsym { alias_target,
+				    alias_target->value_block () };
+				  pstate->push_new<var_value_operation> (bsym);
 				}
 			      else
-				write_exp_msymbol (pstate, msymbol);
+				pstate->push_new<var_msym_value_operation>
+				  (msymbol);
 			    }
 			}
 	;
 
-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 ());
+		}
+	|	'@' UNKNOWN_CPP_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_noopt 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 +1374,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 +1461,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,29 +1570,17 @@ 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. */
+		/* It appears that this rule for templates is never
+		   reduced; template recognition happens by lookahead
+		   in the token processing code in yylex. */
 	|	TEMPLATE name '<' type '>'
 			{ $$ = lookup_template_type
 			    (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); }
 	;
 
@@ -1671,17 +1777,19 @@ oper:	OPERATOR NEW
 	|	OPERATOR OBJC_LBRAC ']'
 			{ $$ = operator_stoken ("[]"); }
 	|	OPERATOR conversion_type_id
-			{ string_file buf;
-
+			{
+			  string_file buf;
 			  c_print_type ($2, NULL, &buf, -1, 0,
+					pstate->language ()->la_language,
 					&type_print_raw_options);
+			  std::string name = buf.release ();
 
 			  /* 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 +1797,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"); }
@@ -1727,7 +1834,7 @@ name_not_typename :	NAME
 			  $$.sym
 			    = lookup_symbol ($1.ptr,
 					     pstate->expression_context_block,
-					     VAR_DOMAIN,
+					     SEARCH_VFT,
 					     &is_a_field_of_this);
 			  $$.is_a_field_of_this
 			    = is_a_field_of_this.type != NULL;
@@ -1737,22 +1844,6 @@ name_not_typename :	NAME
 
 %%
 
-/* Like write_exp_string, but prepends a '~'.  */
-
-static void
-write_destructor_name (struct parser_state *par_state, struct stoken token)
-{
-  char *copy = (char *) alloca (token.length + 1);
-
-  copy[0] = '~';
-  memcpy (&copy[1], token.ptr, token.length);
-
-  token.ptr = copy;
-  ++token.length;
-
-  write_exp_string (par_state, token);
-}
-
 /* Returns a stoken of the operator name given by OP (which does not
    include the string "operator").  */
 
@@ -1788,11 +1879,11 @@ 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
-	      && TYPE_DECLARED_CLASS (type)));
+  return (type->code () == TYPE_CODE_STRUCT
+	  || type->code () == TYPE_CODE_UNION
+	  || type->code () == TYPE_CODE_NAMESPACE
+	  || (type->code () == TYPE_CODE_ENUM
+	      && type->is_declared_class ()));
 }
 
 /* Validate a parameter typelist.  */
@@ -1806,7 +1897,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)
 	    {
@@ -1835,7 +1926,6 @@ parse_number (struct parser_state *par_s
 {
   ULONGEST n = 0;
   ULONGEST prevn = 0;
-  ULONGEST un;
 
   int i = 0;
   int c;
@@ -1845,46 +1935,47 @@ parse_number (struct parser_state *par_s
   /* Number of "L" suffixes encountered.  */
   int long_p = 0;
 
-  /* We have found a "L" or "U" suffix.  */
-  int found_suffix = 0;
-
-  ULONGEST high_bit;
-  struct type *signed_type;
-  struct type *unsigned_type;
-  char *p;
+  /* Imaginary number.  */
+  bool imaginary_p = false;
 
-  p = (char *) alloca (len);
-  memcpy (p, buf, len);
+  /* We have found a "L" or "U" (or "i") suffix.  */
+  int found_suffix = 0;
 
   if (parsed_float)
     {
+      if (len >= 1 && buf[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')
+      if (len >= 2 && buf[len - 2] == 'd' && buf[len - 1] == 'f')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_decfloat;
 	  len -= 2;
 	}
-      else if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'd')
+      else if (len >= 2 && buf[len - 2] == 'd' && buf[len - 1] == 'd')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_decdouble;
 	  len -= 2;
 	}
-      else if (len >= 2 && p[len - 2] == 'd' && p[len - 1] == 'l')
+      else if (len >= 2 && buf[len - 2] == 'd' && buf[len - 1] == 'l')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_declong;
 	  len -= 2;
 	}
       /* Handle suffixes: 'f' for float, 'l' for long double.  */
-      else if (len >= 1 && TOLOWER (p[len - 1]) == 'f')
+      else if (len >= 1 && TOLOWER (buf[len - 1]) == 'f')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_float;
 	  len -= 1;
 	}
-      else if (len >= 1 && TOLOWER (p[len - 1]) == 'l')
+      else if (len >= 1 && TOLOWER (buf[len - 1]) == 'l')
 	{
 	  putithere->typed_val_float.type
 	    = parse_type (par_state)->builtin_long_double;
@@ -1897,22 +1988,27 @@ parse_number (struct parser_state *par_s
 	    = parse_type (par_state)->builtin_double;
 	}
 
-      if (!parse_float (p, len,
+      if (!parse_float (buf, len,
 			putithere->typed_val_float.type,
 			putithere->typed_val_float.val))
-        return ERROR;
-      return FLOAT;
+	return ERROR;
+
+      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 */
-  if (p[0] == '0' && len > 1)
-    switch (p[1])
+  if (buf[0] == '0' && len > 1)
+    switch (buf[1])
       {
       case 'x':
       case 'X':
 	if (len >= 3)
 	  {
-	    p += 2;
+	    buf += 2;
 	    base = 16;
 	    len -= 2;
 	  }
@@ -1922,7 +2018,7 @@ parse_number (struct parser_state *par_s
       case 'B':
 	if (len >= 3)
 	  {
-	    p += 2;
+	    buf += 2;
 	    base = 2;
 	    len -= 2;
 	  }
@@ -1934,7 +2030,7 @@ parse_number (struct parser_state *par_s
       case 'D':
 	if (len >= 3)
 	  {
-	    p += 2;
+	    buf += 2;
 	    base = 10;
 	    len -= 2;
 	  }
@@ -1947,10 +2043,10 @@ parse_number (struct parser_state *par_s
 
   while (len-- > 0)
     {
-      c = *p++;
+      c = *buf++;
       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,24 +2072,23 @@ 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 */
 	}
       if (i >= base)
 	return ERROR;		/* Invalid digit in this base */
 
-      /* 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)
-	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 (unsigned_p && prevn >= n)
+      if (c != 'l' && c != 'u' && c != 'i')
+	{
+	  /* Test for overflow.  */
+	  if (prevn == 0 && n == 0)
+	    ;
+	  else if (prevn >= n)
 	    error (_("Numeric constant too large."));
 	}
       prevn = n;
@@ -2010,60 +2105,51 @@ parse_number (struct parser_state *par_s
      or gdbarch_long_bit will be that big, sometimes not.  To deal with
      the case where it is we just always shift the value more than
      once, with fewer bits each time.  */
-
-  un = n >> 2;
-  if (long_p == 0
-      && (un >> (gdbarch_int_bit (par_state->gdbarch ()) - 2)) == 0)
-    {
-      high_bit
-	= ((ULONGEST)1) << (gdbarch_int_bit (par_state->gdbarch ()) - 1);
-
-      /* A large decimal (not hex or octal) constant (between INT_MAX
-	 and UINT_MAX) is a long or unsigned long, according to ANSI,
-	 never an unsigned int, but this code treats it as unsigned
-	 int.  This probably should be fixed.  GCC gives a warning on
-	 such constants.  */
-
-      unsigned_type = parse_type (par_state)->builtin_unsigned_int;
-      signed_type = parse_type (par_state)->builtin_int;
-    }
-  else if (long_p <= 1
-	   && (un >> (gdbarch_long_bit (par_state->gdbarch ()) - 2)) == 0)
-    {
-      high_bit
-	= ((ULONGEST)1) << (gdbarch_long_bit (par_state->gdbarch ()) - 1);
-      unsigned_type = parse_type (par_state)->builtin_unsigned_long;
-      signed_type = parse_type (par_state)->builtin_long;
-    }
+  int int_bits = gdbarch_int_bit (par_state->gdbarch ());
+  int long_bits = gdbarch_long_bit (par_state->gdbarch ());
+  int long_long_bits = gdbarch_long_long_bit (par_state->gdbarch ());
+  bool have_signed
+    /* No 'u' suffix.  */
+    = !unsigned_p;
+  bool have_unsigned
+    = ((/* 'u' suffix.  */
+	unsigned_p)
+       || (/* Not a decimal.  */
+	   base != 10)
+       || (/* Allowed as a convenience, in case decimal doesn't fit in largest
+	      signed type.  */
+	   !fits_in_type (1, n, long_long_bits, true)));
+  bool have_int
+    /* No 'l' or 'll' suffix.  */
+    = long_p == 0;
+  bool have_long
+    /* No 'll' suffix.  */
+    = long_p <= 1;
+  if (have_int && have_signed && fits_in_type (1, n, int_bits, true))
+    putithere->typed_val_int.type = parse_type (par_state)->builtin_int;
+  else if (have_int && have_unsigned && fits_in_type (1, n, int_bits, false))
+    putithere->typed_val_int.type
+      = parse_type (par_state)->builtin_unsigned_int;
+  else if (have_long && have_signed && fits_in_type (1, n, long_bits, true))
+    putithere->typed_val_int.type = parse_type (par_state)->builtin_long;
+  else if (have_long && have_unsigned && fits_in_type (1, n, long_bits, false))
+    putithere->typed_val_int.type
+      = parse_type (par_state)->builtin_unsigned_long;
+  else if (have_signed && fits_in_type (1, n, long_long_bits, true))
+    putithere->typed_val_int.type
+      = parse_type (par_state)->builtin_long_long;
+  else if (have_unsigned && fits_in_type (1, n, long_long_bits, false))
+    putithere->typed_val_int.type
+      = parse_type (par_state)->builtin_unsigned_long_long;
   else
-    {
-      int shift;
-      if (sizeof (ULONGEST) * HOST_CHAR_BIT
-	  < gdbarch_long_long_bit (par_state->gdbarch ()))
-	/* A long long does not fit in a LONGEST.  */
-	shift = (sizeof (ULONGEST) * HOST_CHAR_BIT - 1);
-      else
-	shift = (gdbarch_long_long_bit (par_state->gdbarch ()) - 1);
-      high_bit = (ULONGEST) 1 << shift;
-      unsigned_type = parse_type (par_state)->builtin_unsigned_long_long;
-      signed_type = parse_type (par_state)->builtin_long_long;
-    }
-
-   putithere->typed_val_int.val = n;
-
-   /* If the high bit of the worked out type is set then this number
-      has to be unsigned. */
-
-   if (unsigned_p || (n & high_bit))
-     {
-       putithere->typed_val_int.type = unsigned_type;
-     }
-   else
-     {
-       putithere->typed_val_int.type = signed_type;
-     }
+    error (_("Numeric constant too large."));
+  putithere->typed_val_int.val = n;
+
+   if (imaginary_p)
+     putithere->typed_val_int.type
+       = init_complex_type (nullptr, putithere->typed_val_int.type);
 
-   return INT;
+   return imaginary_p ? COMPLEX_INT : INT;
 }
 
 /* Temporary obstack used for holding strings.  */
@@ -2345,15 +2431,19 @@ 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);
 
-struct token
+struct c_token
 {
   const char *oper;
   int token;
@@ -2361,15 +2451,15 @@ struct token
   token_flags flags;
 };
 
-static const struct token tokentab3[] =
+static const struct c_token tokentab3[] =
   {
     {">>=", ASSIGN_MODIFY, BINOP_RSH, 0},
     {"<<=", ASSIGN_MODIFY, BINOP_LSH, 0},
-    {"->*", ARROW_STAR, BINOP_END, FLAG_CXX},
-    {"...", DOTDOTDOT, BINOP_END, 0}
+    {"->*", ARROW_STAR, OP_NULL, FLAG_CXX},
+    {"...", DOTDOTDOT, OP_NULL, 0}
   };
 
-static const struct token tokentab2[] =
+static const struct c_token tokentab2[] =
   {
     {"+=", ASSIGN_MODIFY, BINOP_ADD, 0},
     {"-=", ASSIGN_MODIFY, BINOP_SUB, 0},
@@ -2379,28 +2469,28 @@ static const struct token tokentab2[] =
     {"|=", ASSIGN_MODIFY, BINOP_BITWISE_IOR, 0},
     {"&=", ASSIGN_MODIFY, BINOP_BITWISE_AND, 0},
     {"^=", ASSIGN_MODIFY, BINOP_BITWISE_XOR, 0},
-    {"++", INCREMENT, BINOP_END, 0},
-    {"--", DECREMENT, BINOP_END, 0},
-    {"->", ARROW, BINOP_END, 0},
-    {"&&", ANDAND, BINOP_END, 0},
-    {"||", OROR, BINOP_END, 0},
+    {"++", INCREMENT, OP_NULL, 0},
+    {"--", DECREMENT, OP_NULL, 0},
+    {"->", ARROW, OP_NULL, 0},
+    {"&&", ANDAND, OP_NULL, 0},
+    {"||", OROR, OP_NULL, 0},
     /* "::" is *not* only C++: gdb overrides its meaning in several
        different ways, e.g., 'filename'::func, function::variable.  */
-    {"::", COLONCOLON, BINOP_END, 0},
-    {"<<", LSH, BINOP_END, 0},
-    {">>", RSH, BINOP_END, 0},
-    {"==", EQUAL, BINOP_END, 0},
-    {"!=", NOTEQUAL, BINOP_END, 0},
-    {"<=", LEQ, BINOP_END, 0},
-    {">=", GEQ, BINOP_END, 0},
-    {".*", DOT_STAR, BINOP_END, FLAG_CXX}
+    {"::", COLONCOLON, OP_NULL, 0},
+    {"<<", LSH, OP_NULL, 0},
+    {">>", RSH, OP_NULL, 0},
+    {"==", EQUAL, OP_NULL, 0},
+    {"!=", NOTEQUAL, OP_NULL, 0},
+    {"<=", LEQ, OP_NULL, 0},
+    {">=", GEQ, OP_NULL, 0},
+    {".*", DOT_STAR, OP_NULL, FLAG_CXX}
   };
 
 /* 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.  */
-static const struct token ident_tokens[] =
+   single word (like 'char') are handled by the classify_name function.  */
+static const struct c_token ident_tokens[] =
   {
     {"unsigned", UNSIGNED, OP_NULL, 0},
     {"template", TEMPLATE, OP_NULL, FLAG_CXX},
@@ -2411,27 +2501,35 @@ 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},
     {"delete", DELETE, OP_NULL, FLAG_CXX},
     {"operator", OPERATOR, OP_NULL, FLAG_CXX},
 
-    {"and", ANDAND, BINOP_END, FLAG_CXX},
+    {"and", ANDAND, OP_NULL, FLAG_CXX},
     {"and_eq", ASSIGN_MODIFY, BINOP_BITWISE_AND, FLAG_CXX},
     {"bitand", '&', OP_NULL, FLAG_CXX},
     {"bitor", '|', OP_NULL, FLAG_CXX},
     {"compl", '~', OP_NULL, FLAG_CXX},
     {"not", '!', OP_NULL, FLAG_CXX},
-    {"not_eq", NOTEQUAL, BINOP_END, FLAG_CXX},
-    {"or", OROR, BINOP_END, FLAG_CXX},
+    {"not_eq", NOTEQUAL, OP_NULL, FLAG_CXX},
+    {"or", OROR, OP_NULL, FLAG_CXX},
     {"or_eq", ASSIGN_MODIFY, BINOP_BITWISE_IOR, FLAG_CXX},
     {"xor", '^', OP_NULL, FLAG_CXX},
     {"xor_eq", ASSIGN_MODIFY, BINOP_BITWISE_XOR, FLAG_CXX},
@@ -2452,17 +2550,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.  */
@@ -2520,7 +2614,6 @@ lex_one_token (struct parser_state *par_
 {
   int c;
   int namelen;
-  unsigned int i;
   const char *tokstart;
   bool saw_structop = last_was_structop;
 
@@ -2532,59 +2625,60 @@ 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;
 
   tokstart = pstate->lexptr;
   /* See if it is a special token of length 3.  */
-  for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++)
-    if (strncmp (tokstart, tokentab3[i].oper, 3) == 0)
+  for (const auto &token : tokentab3)
+    if (strncmp (tokstart, token.oper, 3) == 0)
       {
-	if ((tokentab3[i].flags & FLAG_CXX) != 0
+	if ((token.flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	gdb_assert ((token.flags & FLAG_C) == 0);
 
 	pstate->lexptr += 3;
-	yylval.opcode = tokentab3[i].opcode;
-	return tokentab3[i].token;
+	yylval.opcode = token.opcode;
+	return token.token;
       }
 
   /* See if it is a special token of length 2.  */
-  for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++)
-    if (strncmp (tokstart, tokentab2[i].oper, 2) == 0)
+  for (const auto &token : tokentab2)
+    if (strncmp (tokstart, token.oper, 2) == 0)
       {
-	if ((tokentab2[i].flags & FLAG_CXX) != 0
+	if ((token.flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	gdb_assert ((token.flags & FLAG_C) == 0);
 
 	pstate->lexptr += 2;
-	yylval.opcode = tokentab2[i].opcode;
-	if (tokentab2[i].token == ARROW)
+	yylval.opcode = token.opcode;
+	if (token.token == ARROW)
 	  last_was_structop = 1;
-	return tokentab2[i].token;
+	return token.token;
       }
 
   switch (c = *tokstart)
     {
     case 0:
       /* If we were just scanning the result of a macro expansion,
-         then we need to resume scanning the original text.
+	 then we need to resume scanning the original text.
 	 If we're parsing for field name completion, and the previous
 	 token allows such completion, return a COMPLETE token.
-         Otherwise, we were already scanning the original text, and
-         we're really done.  */
+	 Otherwise, we were already scanning the original text, and
+	 we're really done.  */
       if (scanning_macro_expansion ())
-        {
-          finished_macro_expansion ();
-          goto retry;
-        }
+	{
+	  finished_macro_expansion ();
+	  goto retry;
+	}
       else if (saw_name_at_eof)
 	{
 	  saw_name_at_eof = 0;
@@ -2593,7 +2687,7 @@ lex_one_token (struct parser_state *par_
       else if (par_state->parse_completion && saw_structop)
 	return COMPLETE;
       else
-        return 0;
+	return 0;
 
     case ' ':
     case '\t':
@@ -2620,8 +2714,8 @@ lex_one_token (struct parser_state *par_
 
     case ',':
       if (pstate->comma_terminates
-          && paren_depth == 0
-          && ! scanning_macro_expansion ())
+	  && paren_depth == 0
+	  && ! scanning_macro_expansion ())
 	return 0;
       pstate->lexptr++;
       return c;
@@ -2633,7 +2727,7 @@ lex_one_token (struct parser_state *par_
 	  last_was_structop = true;
 	  goto symbol;		/* Nope, must be a symbol. */
 	}
-      /* FALL THRU.  */
+      [[fallthrough]];
 
     case '0':
     case '1':
@@ -2647,7 +2741,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;
 
@@ -2662,39 +2756,55 @@ lex_one_token (struct parser_state *par_
 	    hex = 0;
 	  }
 
+	/* If the token includes the C++14 digits separator, we make a
+	   copy so that we don't have to handle the separator in
+	   parse_number.  */
+	std::optional<std::string> no_tick;
 	for (;; ++p)
 	  {
 	    /* 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.  */
-	      continue;
+	      {
+		/* This is the sign of the exponent, not the end of
+		   the number.  */
+	      }
+	    else if (*p == '\'')
+	      {
+		if (!no_tick.has_value ())
+		  no_tick.emplace (tokstart, p);
+		continue;
+	      }
 	    /* We will take any letters or digits.  parse_number will
 	       complain if past the radix, or if L or U are not final.  */
 	    else if ((*p < '0' || *p > '9')
 		     && ((*p < 'a' || *p > 'z')
 				  && (*p < 'A' || *p > 'Z')))
 	      break;
+	    if (no_tick.has_value ())
+	      no_tick->push_back (*p);
 	  }
-	toktype = parse_number (par_state, tokstart, p - tokstart,
-				got_dot|got_e, &yylval);
-        if (toktype == ERROR)
-	  {
-	    char *err_copy = (char *) alloca (p - tokstart + 1);
-
-	    memcpy (err_copy, tokstart, p - tokstart);
-	    err_copy[p - tokstart] = 0;
-	    error (_("Invalid number \"%s\"."), err_copy);
-	  }
+	if (no_tick.has_value ())
+	  toktype = parse_number (par_state, no_tick->c_str (),
+				  no_tick->length (),
+				  got_dot | got_e | got_p, &yylval);
+	else
+	  toktype = parse_number (par_state, tokstart, p - tokstart,
+				  got_dot | got_e | got_p, &yylval);
+	if (toktype == ERROR)
+	  error (_("Invalid number \"%.*s\"."), (int) (p - tokstart),
+		 tokstart);
 	pstate->lexptr = p;
 	return toktype;
       }
@@ -2727,7 +2837,7 @@ lex_one_token (struct parser_state *par_
 	    return ENTRY;
 	  }
       }
-      /* FALLTHRU */
+      [[fallthrough]];
     case '+':
     case '-':
     case '*':
@@ -2754,7 +2864,7 @@ lex_one_token (struct parser_state *par_
     case 'U':
       if (tokstart[1] != '"' && tokstart[1] != '\'')
 	break;
-      /* Fall through.  */
+      [[fallthrough]];
     case '\'':
     case '"':
 
@@ -2851,22 +2961,26 @@ lex_one_token (struct parser_state *par_
 
   /* Catch specific keywords.  */
   std::string copy = copy_name (yylval.sval);
-  for (i = 0; i < sizeof ident_tokens / sizeof ident_tokens[0]; i++)
-    if (copy == ident_tokens[i].oper)
+  for (const auto &token : ident_tokens)
+    if (copy == token.oper)
       {
-	if ((ident_tokens[i].flags & FLAG_CXX) != 0
+	if ((token.flags & FLAG_CXX) != 0
 	    && par_state->language ()->la_language != language_cplus)
 	  break;
+	if ((token.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)
+	if ((token.flags & FLAG_SHADOW) != 0)
 	  {
 	    struct field_of_this_result is_a_field_of_this;
 
 	    if (lookup_symbol (copy.c_str (),
 			       pstate->expression_context_block,
-			       VAR_DOMAIN,
+			       SEARCH_VFT,
 			       (par_state->language ()->la_language
-			        == language_cplus ? &is_a_field_of_this
+				== language_cplus ? &is_a_field_of_this
 				: NULL)).symbol
 		!= NULL)
 	      {
@@ -2877,8 +2991,8 @@ lex_one_token (struct parser_state *par_
 
 	/* It is ok to always set this, even though we don't always
 	   strictly need to.  */
-	yylval.opcode = ident_tokens[i].opcode;
-	return ident_tokens[i].token;
+	yylval.opcode = token.opcode;
+	return token.token;
       }
 
   if (*tokstart == '$')
@@ -2895,7 +3009,7 @@ lex_one_token (struct parser_state *par_
 }
 
 /* An object of this type is pushed on a FIFO by the "outer" lexer.  */
-struct token_and_value
+struct c_token_and_value
 {
   int token;
   YYSTYPE value;
@@ -2903,14 +3017,14 @@ struct token_and_value
 
 /* A FIFO of tokens that have been read but not yet returned to the
    parser.  */
-static std::vector<token_and_value> token_fifo;
+static std::vector<c_token_and_value> token_fifo;
 
 /* Non-zero if the lexer should return tokens from the FIFO.  */
 static int popping;
 
 /* Temporary storage for c_lex; this holds symbol names as they are
    built up.  */
-auto_obstack name_obstack;
+static auto_obstack name_obstack;
 
 /* Classify a NAME token.  The contents of the token are in `yylval'.
    Updates yylval and returns the new token type.  BLOCK is the block
@@ -2928,15 +3042,11 @@ classify_name (struct parser_state *par_
 
   std::string copy = copy_name (yylval.sval);
 
-  /* Initialize this in case we *don't* use it in this call; that way
-     we can refer to it unconditionally below.  */
-  memset (&is_a_field_of_this, 0, sizeof (is_a_field_of_this));
-
-  bsym = lookup_symbol (copy.c_str (), block, VAR_DOMAIN,
-			par_state->language ()->la_name_of_this
+  bsym = lookup_symbol (copy.c_str (), block, SEARCH_VFT,
+			par_state->language ()->name_of_this ()
 			? &is_a_field_of_this : NULL);
 
-  if (bsym.symbol && SYMBOL_CLASS (bsym.symbol) == LOC_BLOCK)
+  if (bsym.symbol && bsym.symbol->loc_class () == LOC_BLOCK)
     {
       yylval.ssym.sym = bsym;
       yylval.ssym.is_a_field_of_this = is_a_field_of_this.type != NULL;
@@ -2955,11 +3065,11 @@ classify_name (struct parser_state *par_
 	{
 	  struct field_of_this_result inner_is_a_field_of_this;
 
-	  bsym = lookup_symbol (copy.c_str (), block, STRUCT_DOMAIN,
+	  bsym = lookup_symbol (copy.c_str (), block, SEARCH_STRUCT_DOMAIN,
 				&inner_is_a_field_of_this);
 	  if (bsym.symbol != NULL)
 	    {
-	      yylval.tsym.type = SYMBOL_TYPE (bsym.symbol);
+	      yylval.tsym.type = bsym.symbol->type ();
 	      return TYPENAME;
 	    }
 	}
@@ -2973,21 +3083,20 @@ classify_name (struct parser_state *par_
 	  || is_quoted_name)
 	{
 	  /* See if it's a file name. */
-	  struct symtab *symtab;
-
-	  symtab = lookup_symtab (copy.c_str ());
-	  if (symtab)
+	  if (auto symtab = lookup_symtab (current_program_space, copy.c_str ());
+	      symtab != nullptr)
 	    {
-	      yylval.bval = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (symtab),
-					       STATIC_BLOCK);
+	      yylval.bval
+		= symtab->compunit ()->blockvector ()->static_block ();
+
 	      return FILENAME;
 	    }
 	}
     }
 
-  if (bsym.symbol && SYMBOL_CLASS (bsym.symbol) == LOC_TYPEDEF)
+  if (bsym.symbol && bsym.symbol->loc_class () == LOC_TYPEDEF)
     {
-      yylval.tsym.type = SYMBOL_TYPE (bsym.symbol);
+      yylval.tsym.type = bsym.symbol->type ();
       return TYPENAME;
     }
 
@@ -3004,7 +3113,7 @@ classify_name (struct parser_state *par_
 	  sym = lookup_struct_typedef (copy.c_str (),
 				       par_state->expression_context_block, 1);
 	  if (sym)
-	    yylval.theclass.type = SYMBOL_TYPE (sym);
+	    yylval.theclass.type = sym->type ();
 	  return CLASSNAME;
 	}
     }
@@ -3035,7 +3144,7 @@ classify_name (struct parser_state *par_
   if (bsym.symbol == NULL
       && par_state->language ()->la_language == language_cplus
       && is_a_field_of_this.type == NULL
-      && lookup_minimal_symbol (copy.c_str (), NULL, NULL).minsym == NULL)
+      && lookup_minimal_symbol (current_program_space, copy.c_str ()).minsym == nullptr)
     return UNKNOWN_CPP_NAME;
 
   return NAME;
@@ -3061,7 +3170,7 @@ classify_inner_name (struct parser_state
   std::string copy = copy_name (yylval.ssym.stoken);
   /* N.B. We assume the symbol can only be in VAR_DOMAIN.  */
   yylval.ssym.sym = cp_lookup_nested_symbol (type, copy.c_str (), block,
-					     VAR_DOMAIN);
+					     SEARCH_VFT);
 
   /* If no symbol was found, search for a matching base class named
      COPY.  This will allow users to enter qualified names of class members
@@ -3080,7 +3189,7 @@ classify_inner_name (struct parser_state
       return ERROR;
     }
 
-  switch (SYMBOL_CLASS (yylval.ssym.sym.symbol))
+  switch (yylval.ssym.sym.symbol->loc_class ())
     {
     case LOC_BLOCK:
     case LOC_LABEL:
@@ -3100,13 +3209,13 @@ classify_inner_name (struct parser_state
       return ERROR;
 
     case LOC_TYPEDEF:
-      yylval.tsym.type = SYMBOL_TYPE (yylval.ssym.sym.symbol);
+      yylval.tsym.type = yylval.ssym.sym.symbol->type ();
       return TYPENAME;
 
     default:
       return NAME;
     }
-  internal_error (__FILE__, __LINE__, _("not reached"));
+  internal_error (_("not reached"));
 }
 
 /* The outer level of a two-level lexer.  This calls the inner lexer
@@ -3124,7 +3233,7 @@ classify_inner_name (struct parser_state
 static int
 yylex (void)
 {
-  token_and_value current;
+  c_token_and_value current;
   int first_was_coloncolon, last_was_coloncolon;
   struct type *context_type = NULL;
   int last_to_examine, next_to_examine, checkpoint;
@@ -3200,7 +3309,7 @@ yylex (void)
 
   while (next_to_examine <= last_to_examine)
     {
-      token_and_value next;
+      c_token_and_value next;
 
       next = token_fifo[next_to_examine];
       ++next_to_examine;
@@ -3283,21 +3392,21 @@ c_parse (struct parser_state *par_state)
   c_parse_state cstate;
   scoped_restore cstate_restore = make_scoped_restore (&cpstate, &cstate);
 
-  gdb::unique_xmalloc_ptr<struct macro_scope> macro_scope;
+  macro_scope macro_scope;
 
   if (par_state->expression_context_block)
     macro_scope
       = sal_macro_scope (find_pc_line (par_state->expression_context_pc, 0));
   else
     macro_scope = default_macro_scope ();
-  if (! macro_scope)
+  if (!macro_scope.is_valid ())
     macro_scope = user_macro_scope ();
 
   scoped_restore restore_macro_scope
-    = make_scoped_restore (&expression_macro_scope, macro_scope.get ());
+    = make_scoped_restore (&expression_macro_scope, &macro_scope);
 
   scoped_restore restore_yydebug = make_scoped_restore (&yydebug,
-							parser_debug);
+							par_state->debug);
 
   /* Initialize some state used by the lexer.  */
   last_was_structop = false;
@@ -3308,10 +3417,14 @@ c_parse (struct parser_state *par_state)
   popping = 0;
   name_obstack.clear ();
 
-  return yyparse ();
+  int result = yyparse ();
+  if (!result)
+    pstate->set_operation (pstate->pop ());
+  return result;
 }
 
-#ifdef YYBISON
+#if defined(YYBISON) && YYBISON < 30800
+
 
 /* This is called via the YYPRINT macro when parser debugging is
    enabled.  It prints a token's value.  */
@@ -3329,14 +3442,8 @@ c_print_token (FILE *file, int type, YYS
 
     case CHAR:
     case STRING:
-      {
-	char *copy = (char *) alloca (value.tsval.length + 1);
-
-	memcpy (copy, value.tsval.ptr, value.tsval.length);
-	copy[value.tsval.length] = '\0';
-
-	parser_fprintf (file, "tsval<type=%d, %s>", value.tsval.type, copy);
-      }
+      parser_fprintf (file, "tsval<type=%d, %.*s>", value.tsval.type,
+		      value.tsval.length, value.tsval.ptr);
       break;
 
     case NSSTRING:
@@ -3372,8 +3479,5 @@ c_print_token (FILE *file, int type, YYS
 static void
 yyerror (const char *msg)
 {
-  if (pstate->prev_lexptr)
-    pstate->lexptr = pstate->prev_lexptr;
-
-  error (_("A %s in expression, near `%s'."), msg, pstate->lexptr);
+  pstate->parse_error (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.20200303/gdb/cgen-remap.h ./gdb/cgen-remap.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cgen-remap.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/cgen-remap.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,53 @@
+/* Copyright (C) 2023-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_CGEN_REMAP_H
+#define GDB_CGEN_REMAP_H
+
+/* Remap cgen interface names, so we can have multiple cgen generated include
+   files in gdb without violating c++ ODR.  */
+
+/* Define GDB_CGEN_REMAP_PREFIX to the desired remapping prefix before
+   including this file.  */
+#ifndef GDB_CGEN_REMAP_PREFIX
+# error "GDB_CGEN_REMAP_PREFIX not defined"
+#endif
+
+#define GDB_CGEN_REMAP_2(PREFIX, SYM) PREFIX ## _ ## SYM
+#define GDB_CGEN_REMAP_1(PREFIX, SYM) GDB_CGEN_REMAP_2 (PREFIX, SYM)
+#define GDB_CGEN_REMAP(SYM) GDB_CGEN_REMAP_1 (GDB_CGEN_REMAP_PREFIX, SYM)
+
+#define cgen_operand_type	GDB_CGEN_REMAP (cgen_operand_type)
+#define cgen_hw_type		GDB_CGEN_REMAP (cgen_hw_type)
+#define cgen_ifld		GDB_CGEN_REMAP (cgen_ifld)
+#define cgen_insn		GDB_CGEN_REMAP (cgen_insn)
+#define cgen_cpu_desc		GDB_CGEN_REMAP (cgen_cpu_desc)
+#define cgen_fields		GDB_CGEN_REMAP (cgen_fields)
+#define cgen_insn_list		GDB_CGEN_REMAP (cgen_insn_list)
+#define cgen_maybe_multi_ifield	GDB_CGEN_REMAP (cgen_maybe_multi_ifield)
+#define CGEN_OPINST             GDB_CGEN_REMAP (CGEN_OPINST)
+#define CGEN_IFMT_IFLD		GDB_CGEN_REMAP (CGEN_IFMT_IFLD)
+#define CGEN_INSN_ATTR_TYPE	GDB_CGEN_REMAP (CGEN_INSN_ATTR_TYPE)
+#define CGEN_IBASE		GDB_CGEN_REMAP (CGEN_IBASE)
+#define CGEN_HW_ENTRY		GDB_CGEN_REMAP (CGEN_HW_ENTRY)
+#define CGEN_HW_TABLE		GDB_CGEN_REMAP (CGEN_HW_TABLE)
+#define CGEN_INSN_TABLE		GDB_CGEN_REMAP (CGEN_INSN_TABLE)
+#define CGEN_OPERAND_TABLE	GDB_CGEN_REMAP (CGEN_OPERAND_TABLE)
+#define CGEN_OPERAND		GDB_CGEN_REMAP (CGEN_OPERAND)
+#define CGEN_MAYBE_MULTI_IFLD	GDB_CGEN_REMAP (CGEN_MAYBE_MULTI_IFLD)
+
+#endif /* GDB_CGEN_REMAP_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.20200303/gdb/ChangeLog ./gdb/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog	1970-01-01 00:00:00.000000000 +0000
@@ -1,16600 +0,0 @@
-2020-02-22  Eli Zaretskii  <eliz@gnu.org>
-
-	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>.
-
-2020-02-08  Joel Brobecker  <brobecker@adacore.com>
-
-	* version.in: Set GDB version number to 9.1.90.DATE-git.
-
-2020-02-08  Joel Brobecker  <brobecker@adacore.com>
-
-	GDB 9.1 released.
-
-2020-02-08  Joel Brobecker  <brobecker@adacore.com>
-
-	* version.in: Set GDB version number to 9.1.
-
-2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>
-
-	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.
-
-2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>
-
-        * 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.
-
-2020-02-07  Tom Tromey  <tromey@adacore.com>
-
-	PR breakpoints/24915:
-	* source.c (find_and_open_source): Do not check basenames_may_differ.
-
-2020-01-10  Christian Biesinger  <cbiesinger@google.com>
-
-	* gdbsupport/common-defs.h: Don't define _FORTIFY_SOURCE on MinGW.
-
-2020-01-07  Tom Tromey  <tromey@adacore.com>
-
-	PR build/24937:
-	* stap-probe.c (class stap_static_probe_ops): Add constructor.
-
-2020-01-06  Andrew Burgess  <andrew.burgess@embecosm.com>
-
-	* stack.c (print_frame_info): Move disassemble_next_line code
-	inside source_print block.
-
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* gdbarch.sh: Update copyright year range of generated files.
-
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	Update copyright year range in all the GDB files automatically
-	handled by our copyright.py script.
-
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* copyright.py: Convert to Python 3.
-
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* copyright.py: Adapt after move of gnulib directory from gdb
-	directory to toplevel directory.
-
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* copyright.py (main): Exit if run from the wrong directory.
-
-2020-01-01  Joel Brobecker  <brobecker@adacore.com>
-
-	* top.c (print_gdb_version): Change copyright year to 2020.
-
-2019-12-26  Christian Biesinger  <cbiesinger@google.com>
-
-	* configure: Regenerate.
-	* configure.ac: Quote variable arguments of test.
-	* gdbsupport/common.m4: Likewise.
-
-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-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  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-16  Simon Marchi  <simon.marchi@polymtl.ca>
-
-	* jit.c (finalize_symtab): Set gdb_block_iter_tmp in loop.
-
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
-
-	* version.in: Set GDB version number to 9.0.90.DATE-git.
-
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
-
-	GDB 9.0.90 released.
-
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
-
-	* version.in: Set GDB version number to 9.0.90.
-
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
-
-	* NEWS: Change "Changes since GDB 8.3" into "Changes in GDB 9".
-
-2019-12-11  Joel Brobecker  <brobecker@adacore.com>
-
-	GDB 9 branch created (27f7b2f64062ac9e52afc60509263c2702a9ebd0):
-	* version.in: Bump version to 9.0.90.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.
-	* 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.
-
-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>
-
-	* 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.
-
-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).
-	* 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).
-
-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>
-
-	*gdb/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>
-
-        * 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.
-
-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:
-	* gdb/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
-	* 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.
-
-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>
-	* 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.
-
-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.
-	* testsuite/lib/dwarf.exp (_handle_DW_FORM): Add DW_FORM_strx.
-
-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>
-
-	* 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.
-
-2019-04-23  Andrew Burgess  <andrew.burgess@embecosm.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.
-
-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.
-	* 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.
-
-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>
-
-	* 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.
-
-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.20200303/gdb/ChangeLog-1992 ./gdb/ChangeLog-1992
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-1992	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-1992	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-1993 ./gdb/ChangeLog-1993
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-1993	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-1993	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-1995 ./gdb/ChangeLog-1995
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-1995	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-1995	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-1996 ./gdb/ChangeLog-1996
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-1996	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-1996	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-1998 ./gdb/ChangeLog-1998
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-1998	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-1998	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-1999 ./gdb/ChangeLog-1999
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-1999	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-1999	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2000 ./gdb/ChangeLog-2000
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2000	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2000	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2001 ./gdb/ChangeLog-2001
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2001	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2001	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2002 ./gdb/ChangeLog-2002
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2002	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2002	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2003 ./gdb/ChangeLog-2003
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2003	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2003	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2004 ./gdb/ChangeLog-2004
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2004	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2004	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2005 ./gdb/ChangeLog-2005
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2005	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2005	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2006 ./gdb/ChangeLog-2006
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2006	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2006	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2007 ./gdb/ChangeLog-2007
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2007	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2007	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2008 ./gdb/ChangeLog-2008
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2008	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2008	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2009 ./gdb/ChangeLog-2009
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2009	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2009	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2010 ./gdb/ChangeLog-2010
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2010	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2010	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2011 ./gdb/ChangeLog-2011
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2011	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2011	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2012 ./gdb/ChangeLog-2012
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2012	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2012	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2013 ./gdb/ChangeLog-2013
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2013	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2013	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2014 ./gdb/ChangeLog-2014
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2014	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2014	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2015 ./gdb/ChangeLog-2015
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2015	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2015	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2016 ./gdb/ChangeLog-2016
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2016	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2016	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2017 ./gdb/ChangeLog-2017
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2017	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2017	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2018 ./gdb/ChangeLog-2018
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2018	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/ChangeLog-2018	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2019 ./gdb/ChangeLog-2019
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2019	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/ChangeLog-2019	2026-03-05 02:07:22.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.20200303/gdb/ChangeLog-2020 ./gdb/ChangeLog-2020
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2020	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/ChangeLog-2020	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,18751 @@
+2020-12-27  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (evaluate_subexp_standard) <case MULTI_SUBSCRIPT>:
+	Simplify.
+
+2020-12-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/27059
+	* eval.c (evaluate_subexp_for_sizeof): Handle not allocated and
+	not associated arrays.
+	* f-lang.c (fortran_adjust_dynamic_array_base_address_hack): Don't
+	adjust arrays that are not allocated/associated.
+	* gdbtypes.c (resolve_dynamic_range): Update header comment.  Add
+	new parameter which is used to sometimes set dynamic properties to
+	undefined.
+	(resolve_dynamic_array_or_string): Update header comment.  Add new
+	parameter which is used to guard evaluating dynamic properties.
+	Resolve allocated/associated properties first.
+
+2020-12-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbtypes (recursive_dump_type): Include allocated and associated
+	properties.
+
+2020-12-24  Lancelot SIX  <lsix@lancelotsix.com>
+
+	* gdbtypes.c (is_scalar_type_recursive): Prevent comparison
+	between uninitialized values.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* expprint.c (print_subexp_standard): Replace uses of
+	LA_PRINT_STRING.
+	* f-valprint.c (f_language::value_print_inner): Likewise.
+	* guile/scm-pretty-print.c (ppscm_print_string_repr): Likewise.
+	* p-valprint.c (pascal_language::value_print_inner): Likewise.
+	* python/py-prettyprint.c (print_string_repr): Likewise.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* rust-exp.y (rust_parse): Rename to...
+	(rust_language::parser): ...this.
+	* rust-lang.c (-rust_printstr): Rename to...
+	(rust_language::printstr): ...this.
+	(rust_value_print_inner): Delete declaration.
+	(val_print_struct): Rename to...
+	(rust_language::val_print_struct): ...this.  Update calls to
+	member functions.
+	(rust_print_enum): Rename to...
+	(rust_language::print_enum): ...this.  Update calls to member
+	functions.
+	(rust_value_print_inner): Rename to...
+	(rust_language::value_print_inner): ...this.  Update calls to
+	member functions.
+	(exp_descriptor_rust): Rename to...
+	(rust_language::exp_descriptor_tab): ...this.
+	(class rust_language): Move to rust-lang.h.
+	(rust_language::language_arch_info): Implementation moved to here
+	from class declaration.
+	(rust_language::print_type): Likewise.
+	(rust_language::emitchar): Likewise.
+	(rust_language::is_string_type_p): Likewise.
+	* rust-lang.h: Add 'demangle.h', 'language.h', 'value.h', and
+	'c-lang.h' includes.
+	(rust_parse): Delete declaration.
+	(class rust_language): Class declaration moved here from
+	rust-lang.c.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* objc-lang.c (objc_language::opcode_print_table): Return
+	objc_op_print_tab.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* p-exp.y (exp): Update call to pascal_is_string_type.
+	(pascal_parse): Rename to...
+	(pascal_language::parser): ...this.
+	* p-lang.c (is_pascal_string_type): Rename to...
+	(pascal_is_string_type): ...this.
+	(pascal_one_char): Rename to...
+	(pascal_language::print_one_char): ...this.
+	(pascal_printchar): Rename to...
+	(pascal_language::printchar): ...this.  Update call to
+	print_one_char member function.
+	(pascal_op_print_tab): Rename to...
+	(pascal_language::op_print_tab): ...this.
+	(class pascal_language): Moved to p-lang.h.
+	(pascal_language::language_arch_info): Function implementation
+	moved out of class declaration.
+	(pascal_language::printstr): Likewise.
+	* p-lang.h (pascal_parse): Delete declaration.
+	(pascal_is_string_type): Declare.
+	(pascal_print_type): Delete declaration.
+	(pascal_print_typedef): Delete declaration.
+	(pascal_value_print_inner): Delete declaration.
+	(pascal_value_print): Delete declaration.
+	(pascal_type_print_method_args): Delete declaration.
+	(is_pascal_string_type): Delete declaration.
+	(pascal_printchar): Delete declaration.
+	(pascal_builtin_types): Delete declaration.
+	(pascal_type_print_base): Delete declaration.
+	(pascal_type_print_varspec_prefix): Delete declaration.
+	(class pascal_language): Moved here from p-lang.c.
+	* p-typeprint.c (pascal_type_print_varspec_suffix): Delete
+	declaration.
+	(pascal_type_print_derivation_info): Delete declaration.
+	(pascal_print_type): Rename to...
+	(pascal_language::print_type): ...this.  Update calls to member
+	functions.
+	(pascal_print_typedef): Rename to...
+	(pascal_language::print_typedef): ...this.  Update calls to member
+	functions.
+	(pascal_type_print_derivation_info): Rename to...
+	(pascal_language::type_print_derivation_info): ...this.
+	(pascal_type_print_method_args): Rename to...
+	(pascal_language::type_print_method_args): ...this.
+	(pascal_type_print_varspec_prefix): Rename to...
+	(pascal_language::type_print_varspec_prefix): ...this.  Update
+	calls to member functions.
+	(pascal_print_func_args): Rename to...
+	(pascal_language::print_func_args): ...this.  Update calls to
+	member functions.
+	(pascal_type_print_func_varspec_suffix): Rename to...
+	(pascal_language::type_print_func_varspec_suffix): ...this.
+	Update calls to member functions.
+	(pascal_type_print_varspec_suffix): Rename to...
+	(pascal_language::type_print_varspec_suffix): ...this.  Update
+	calls to member functions.
+	(pascal_type_print_base): Rename to...
+	(pascal_language::type_print_base): ...this.  Update calls to
+	member functions.
+	* p-valprint.c (pascal_value_print_inner): Rename to...
+	(pascal_language::value_print_inner): ...this.  Update calls to
+	member functions.
+	(pascal_value_print): Rename to...
+	(pascal_language::value_print): ...this.  Update calls to member
+	functions.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* go-exp.y (go_parse): Rename to...
+	(go_language::parser): ...this.
+	* go-lang.c (go_demangle): Rename to...
+	(go_language::demangle_symbol): ...this.
+	(go_language::expression_ops): Implementation moved here out of
+	class declaration.
+	(go_op_print_tab): Rename to...
+	(go_language::op_print_tab): ...this, update comment.
+	(class go_language): Declaration moved to go-lang.h.
+	(go_language::language_arch_info): Implementation moved here out
+	of class declaration.
+	* go-lang.h (go_parse): Delete declaration.
+	(go_demangle): Delete declaration.
+	(go_print_type): Delete declaration.
+	(go_value_print_inner): Delete declaration.
+	(class go_language): Declaration moved here from go-lang.c.
+	* go-typeprint.c (go_print_type): Rename to...
+	(go_language::print_type): ...this.
+	* go-valprint.c (go_value_print_inner): Rename to...
+	(go_language::value_print_inner): ...this.
+	* symtab.c (demangle_for_lookup): Call demangle_symbol method on
+	the go_language object.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* c-lang.c (language_defn::printchar): Call emitchar, not
+	LA_EMIT_CHAR.
+	* f-lang.h (f_language::printchar): Likewise.
+	* language.h (LA_EMIT_CHAR): Delete macro.
+	* rust-lang.c (rust_language::printchar): Call emitchar, not
+	LA_EMIT_CHAR.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* c-lang.c (c_printchar): Rename to...
+	(language_defn::printchar): ...this.
+	* c-lang.h (c_printchar): Delete declaration.
+	* language.c (language_defn::printchar): Delete this
+	implementation.  Is now implemented in c-lang.c.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2/read.c (dwarf2_compute_name): Call methods on C++
+	language object instead of calling global functions directly.
+
+2020-12-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* valprint.c (print_char_chars): Delete definition.
+	* valprint.h (print_char_chars): Delete declaration.
+
+2020-12-23  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* i386-gnu-tdep.c (I386_GNU_UCONTEXT_T_THREAD_STATE_OFFSET): New
+	macro.
+	(i386_gnu_sigcontext_addr): Detect between legacy and siginfo from the
+	second parameter, which is a small sigcode in the legacy case, and a
+	pointer in the siginfo case.
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-12-22  Shahab Vahedi  <shahab@synopsys.com>
+
+	* frame.c: Remove trailing white spaces.
+	* frame.h: Likewise.
+
+2020-12-22  Shahab Vahedi  <shahab@synopsys.com>
+
+	* arc-linux-tdep.c: Replace "regnum" with "REGNUM" in comments.
+
+2020-12-22  Anton Kolesov  <anton.kolesov@synopsys.com>
+
+	* Makefile.in (ALLDEPFILES): Add arc-linux-nat.c.
+	* configure.host (host to gdb names): Add arc*-*-linux*.
+	* configure.nat (gdb_host_cpu): Add arc.
+	* arc-linux-nat.c: New.
+
+2020-12-22  Shahab Vahedi  <shahab@synopsys.com>
+
+	* arc-linux-tdep.c (supply_register): New.
+	(arc_linux_supply_gregset, arc_linux_supply_v2_regset,
+	arc_linux_collect_v2_regset): Consider REGNUM.
+
+2020-12-22  Anton Kolesov  <anton.kolesov@synopsys.com>
+
+	* arc-linux-tdep.c (arc_linux_sc_reg_offsets): New static variable.
+	(arc_linux_is_sigtramp): New function.
+	(arc_linux_sigcontext_addr): Likewise.
+	(arc_linux_init_osabi): Use them.
+
+2020-12-22  Anton Kolesov  <anton.kolesov@synopsys.com>
+
+	* arc-tdep.c (arc_make_sigtramp_frame_cache): New function.
+	(arc_sigtramp_frame_this_id): Likewise.
+	(arc_sigtramp_frame_prev_register): Likewise.
+	(arc_sigtramp_frame_sniffer): Likewise.
+	(arc_siftramp_frame_unwind): New global variable.
+	(arc_gdbarch_init): Use sigtramp capabilities.
+	(arc_dump_tdep): Print sigtramp fields.
+	* arc-tdep.h (gdbarch_tdep): Add sigtramp fields.
+
+2020-12-21  Tom Tromey  <tom@tromey.com>
+
+	* expression.h (enum noside): Move earlier.
+
+2020-12-21  Peter Waller  <p@pwaller.net>
+
+	* interps.c (interpreter_exec_cmd): Restore streams pointers.
+
+2020-12-21  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* record.c (require_record_target): Rephrase error message.
+	(info_record_command): Likewise.
+
+2020-12-19  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR exp/27070
+	* gdbtypes.c (check_types_equal): Don't compare types of enum fields.
+
+2020-12-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* configure.ac: Move the static libs vs. source-highlight
+	error message to a better place.
+	* configure: Regenerate.
+
+2020-12-18  Hannes Domani  <ssbssa@yahoo.de>
+
+	* gdb-gdb.py.in: Fix main_type field name.
+
+2020-12-18  Hannes Domani  <ssbssa@yahoo.de>
+
+	* python/py-value.c (valpy_format_string): Implement address keyword.
+
+2020-12-18  Hannes Domani  <ssbssa@yahoo.de>
+
+	* python/py-type.c (typy_get_composite): Add TYPE_CODE_METHOD.
+
+2020-12-18  Jameson Nash  <vtjnash@gmail.com>
+
+	* coffread.c (linetab_offset): Change type to file_ptr.
+	(linetab_size): Likewise.
+	(enter_linenos): Change parameter type to file_ptr.
+	(init_lineno): Likewise.
+	(init_stringtab): Likewise.
+	(coff_symtab_read): Likewise.
+	(coff_symfile_read): Change variable types to file_ptr.
+
+2020-12-17  Tom Tromey  <tromey@adacore.com>
+
+	* printcmd.c (print_variable_and_value): Don't use n_spaces.
+
+2020-12-17  Tom Tromey  <tromey@adacore.com>
+
+	* gdbtypes.c (print_args, dump_fn_fieldlists, print_cplus_stuff)
+	(print_gnat_stuff, print_fixed_point_type_info)
+	(recursive_dump_type): Update.
+	* go32-nat.c (go32_sysinfo, display_descriptor): Update.
+	* c-typeprint.c (c_type_print_base_struct_union)
+	(c_type_print_base_1): Update.
+	* rust-lang.c (rust_internal_print_type): Update.
+	* f-typeprint.c (f_language::f_type_print_base): Update.
+	* utils.h (fprintfi_filtered, printfi_filtered): Remove.
+	* m2-typeprint.c (m2_record_fields): Update.
+	* p-typeprint.c (pascal_type_print_base): Update.
+	* compile/compile-loc2c.c (push, pushf, unary, binary)
+	(do_compile_dwarf_expr_to_c): Update.
+	* utils.c (fprintfi_filtered, printfi_filtered): Remove.
+
+2020-12-16  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y (rust_lex_tests): Update.
+	* parser-defs.h (parser_state): Add void_p parameter.
+	<void_context_p>: New member.
+	* parse.c (parse_exp_in_context): Update.
+	* language.h (language_defn::post_parser): Remove void_context_p,
+	completing, tracker parameters.  Add parser state.
+	* ada-lang.c (ada_language::post_parser): Update.
+
+2020-12-16  Tom Tromey  <tom@tromey.com>
+
+	* parse.c (parse_exp_1, parse_expression_for_completion): Update.
+	(parse_exp_in_context): Change void_context_p to bool.
+	* language.h (struct language_defn) <post_parser>: Change
+	void_context_p to bool.
+	* ada-lang.c (class ada_language) <post_parser>: Update.
+
+2020-12-16  Tom Tromey  <tom@tromey.com>
+	    Tom Tromey  <tromey@redhat.com>
+	    Tom de Vries  <tdevries@suse.de>
+
+	* utils.h (get_chars_per_line): Declare.
+	* utils.c (get_chars_per_line): New function.
+	(fputs_maybe_filtered): Handle '\r'.
+	* ui-out.h (ui_out::progress_meter): New class.
+	(ui_out::progress, ui_out::do_progress_start)
+	(ui_out::do_progress_notify, ui_out::do_progress_end): New
+	methods.
+	* ui-out.c (do_progress_end)
+	(make_cleanup_ui_out_progress_begin_end, ui_out_progress): New
+	functions.
+	* mi/mi-out.h (mi_ui_out::do_progress_start)
+	(mi_ui_out::do_progress_notify, mi_ui_out::do_progress_end): New
+	methods.
+	* cli-out.h (struct cli_ui_out) <do_progress_start,
+	do_progress_notify, do_progress_end>: New methods.
+	<enum meter_stat, struct cli_progress_info>: New.
+	<m_meters>: New member.
+	* cli-out.c (cli_ui_out::do_progress_start)
+	(cli_ui_out::do_progress_notify, cli_ui_out::do_progress_end): New
+	methods.
+
+2020-12-16  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-tdep.c (aarch64_record_data_proc_simd_fp): Record FPSR.
+
+2020-12-16  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-nat.c
+	(aarch64_linux_nat_target::stopped_data_address): Handle the TBI.
+
+2020-12-15  Rae Kim  <rae.kim@gmail.com>
+
+	* cli/cli-script.c (do_document_command): Rename from
+	document_command. Handle multi-line input.
+	(multi_line_command_p): Handle document_control.
+	(build_command_line): Likewise.
+	(execute_control_command_1): Likewise.
+	(process_next_line): Likewise.
+	(document_command): Call do_document_command.
+	* cli/cli-script.h (enum command_control_type): Add
+	document_control.
+
+2020-12-15  Tom Tromey  <tom@tromey.com>
+
+	* stap-probe.c (stap_probe::evaluate_argument): Use
+	evaluate_expression.
+	* dtrace-probe.c (dtrace_probe::evaluate_argument): Use
+	evaluate_expression.
+	* value.h (evaluate_expression): Add expect_type parameter.
+	* objc-lang.c (print_object_command): Call evaluate_expression.
+	* eval.c (evaluate_expression): Add expect_type parameter.
+
+2020-12-15  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (varobj_create): Use first_opcode.
+	* value.c (init_if_undefined_command): Use first_opcode.
+	* typeprint.c (whatis_exp): Use first_opcode.
+	* tracepoint.c (validate_actionline): Use first_opcode.
+	(encode_actions_1): Use first_opcode.
+	* stack.c (return_command): Use first_opcode.
+	* expression.h (struct expression) <first_opcode>: New method.
+	* eval.c (parse_and_eval_type): Use first_opcode.
+	* dtrace-probe.c (dtrace_process_dof_probe): Use first_opcode.
+
+2020-12-15  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (evaluate_subexp_f): Update.
+	* expression.h (evaluate_subexp_do_call): Update.
+	* eval.c (evaluate_subexp_do_call): Add callee parameter.  Replace
+	nargs, argvec with array_view.
+	(evaluate_funcall): Update.
+
+2020-12-15  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (num_component_specs): Remove.
+	(assign_aggregate): Update.
+	(aggregate_assign_positional, aggregate_assign_from_choices)
+	(aggregate_assign_others, add_component_interval): Change
+	arguments.
+
+2020-12-15  Tom Tromey  <tromey@adacore.com>
+
+	* cli/cli-decode.c (deprecated_cmd_warning): Use title style for
+	command names.
+
+2020-12-14  Tom Tromey  <tom@tromey.com>
+
+	* dtrace-probe.c (dtrace_process_dof_probe): Use value_type.
+	* typeprint.c (whatis_exp): Always use evaluate_type.
+	(maintenance_print_type): Likewise.  Simplify.
+
+2020-12-14  Tom Tromey  <tromey@adacore.com>
+
+	* dictionary.c (language_defn::search_name_hash): Ignore "B".
+	* ada-lang.c (advance_wild_match): Ignore "B".
+	(full_match): Remove.
+	(do_full_match): Rewrite.
+
+2020-12-14  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (get_var_value): Only consider exact matches.
+
+2020-12-14  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (rewrite_array_type): New function.
+        (quirk_ada_thick_pointer_struct): Use rewrite_array_type.
+
+2020-12-14  Tom Tromey  <tromey@adacore.com>
+
+	* valarith.c (fixed_point_binop): Call error on division by zero.
+
+2020-12-13  Tom Tromey  <tom@tromey.com>
+
+	* gdbtypes.c (safe_parse_type): Make argument const.
+	* value.h (parse_and_eval_type): Make argument const.
+	* eval.c (parse_and_eval_type): Make argument const.
+
+2020-12-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new commands.
+	* target-dcache.c: Add 'cli/cli-cmds.h' include.
+	(maint_flush_dcache_command): New function.
+	(_initialize_target_dcache): Create new 'maint flush dcache'
+	command.
+
+2020-12-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new commands, and that the old commands are now
+	deprecated.
+	* cli/cli-cmds.c (maintenanceflushlist): Define.
+	* cli/cli-cmds.h (maintenanceflushlist): Declare.
+	* maint.c (_initialize_maint_cmds): Initialise
+	maintenanceflushlist.
+	* regcache.c: Add 'cli/cli-cmds.h' include.
+	(reg_flush_command): Add header comment.
+	(_initialize_regcache): Create new 'maint flush register-cache'
+	command, make 'flushregs' an alias.
+	* symtab.c: Add 'cli/cli-cmds.h' include.
+	(_initialize_symtab): Create new 'maint flush symbol-cache'
+	command, make old command an alias.
+
+2020-12-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-decode.c (deprecated_cmd_warning): Ignore the prefix
+	result from lookup_cmd_composition_1, use the prefixes from both
+	the command and the alias instead.
+	(lookup_cmd_composition_1): Initial prefix command is the based on
+	the search list being passed in.  Simplify the logic for tracking
+	the prefix command.  Replace a use of alloca with a local
+	std::string.
+
+2020-12-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-decode.c (deprecated_cmd_warning): Use nullptr instead
+	of NULL.  Don't print message piece by piece, but sentence at a
+	time to allow internationalisation.  Some whitespace cleanup.
+
+2020-12-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR cli/15104
+	* cli/cli-decode.c (lookup_cmd_1): Pass command list to
+	deprecated_cmd_warning.
+	(deprecated_cmd_warning): Take extra parameter, call
+	lookup_cmd_composition_1 and pass new parameter through.
+	(lookup_cmd_composition_1): New function, takes implementation of
+	lookup_cmd_composition but with extra parameter.
+	(lookup_cmd_composition): Now calls lookup_cmd_composition_1
+	passing in cmdlist.
+	* command.h (deprecated_cmd_warning): Add extra parameter to
+	declaration.
+	* top.c (execute_command): Pass cmdlist to deprecated_cmd_warning.
+
+2020-12-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-decode.c (lookup_cmd_1): Move header comment into
+	command.h, add extra parameter, and use this to guard giving a
+	warning.
+	* command.h (lookup_cmd_1): Add comment from cli/cli-decode.c,
+	include argument names in declaration, add new argument.
+	* completer.c (complete_line_internal_1): Remove unneeded
+	brackets, pass extra argument to lookup_cmd_1.
+
+2020-12-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.h (debug_infrun): Make a bool.
+	* infrun.c (debug_infrun): Make a bool.
+	(_initialize_infrun): Use add_setshow_boolean_cmd to define "set
+	debug infrun".
+
+2020-12-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* displaced-stepping.h (displaced_debug_printf): Use
+	debug_prefixed_printf_cond.
+	* dwarf2/read.c (dwarf_read_debug_printf): Likewise.
+	(dwarf_read_debug_printf_v): Likewise.
+	* infrun.h (infrun_debug_printf): Likewise.
+	* linux-nat.c (linux_nat_debug_printf): Likewise.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* p-exp.y (intvar): Remove global.
+	(DOLLAR_VARIABLE): Change type.
+	(start): Update.
+	(exp): Call write_dollar_variable here...
+	(yylex): ... not here.
+	* m2-exp.y (DOLLAR_VARIABLE): Change type.
+	(variable): Call write_dollar_variable here...
+	(yylex): ... not here.
+	* f-exp.y (DOLLAR_VARIABLE): Change type.
+	(exp): Call write_dollar_variable here...
+	(yylex): ... not here.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (varobj_create): Update.
+	(install_variable): Return void.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (instantiate_pretty_printer): Use gdbpy_ref.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (varobj_clear_saved_item): Remove.
+	(update_dynamic_varobj_children): Update.
+	(varobj::~varobj): Don't call varobj_clear_saved_item.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (install_dynamic_child, varobj_clear_saved_item)
+	(update_dynamic_varobj_children, create_child)
+	(create_child_with_value): Update.
+	* varobj-iter.h (struct varobj_item) <value>: Now a
+	value_ref_ptr.
+	* python/py-varobj.c (py_varobj_iter::next): Call release_value.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (struct varobj_dynamic) <child_iter>: Now unique_ptr.
+	(varobj_get_iterator): Return unique_ptr.
+	(update_dynamic_varobj_children, install_visualizer)
+	(varobj::~varobj): Update.
+	* python/python-internal.h (py_varobj_get_iterator): Return
+	unique_ptr.
+	* python/py-varobj.c (py_varobj_get_iterator): Return unique_ptr.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (struct varobj_dynamic) <saved_item>: Now unique_ptr.
+	(varobj_clear_saved_item, update_dynamic_varobj_children):
+	Update.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (update_dynamic_varobj_children): Update.
+	* varobj-iter.h (struct varobj_iter) <next>: Change return type.
+	* python/py-varobj.c (struct py_varobj_iter) <next>: Change return
+	type.
+	(py_varobj_iter::next): Likewise.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (update_dynamic_varobj_children, install_visualizer)
+	(varobj::~varobj): Update.
+	* varobj-iter.h (struct varobj_iter): Change to interface class.
+	(struct varobj_iter_ops): Remove.
+	(varobj_iter_next, varobj_iter_delete): Remove.
+	* python/py-varobj.c (struct py_varobj_iter): Derive from
+	varobj_iter.  Add constructor, destructor.  Rename members.
+	(py_varobj_iter::~py_varobj_iter): Rename from
+	py_varobj_iter_dtor.
+	(py_varobj_iter::next): Rename from py_varobj_iter_next.
+	(py_varobj_iter_ops): Remove.
+	(py_varobj_iter): Rename from py_varobj_iter_ctor.
+	(py_varobj_iter_new): Remove.
+	(py_varobj_get_iterator): Update.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.h (all_root_varobjs): Take a function_view.
+	* varobj.c (all_root_varobjs): Take a function_view.
+	(varobj_invalidate_iter): Remove unused parameter.
+	(varobj_invalidate): Update.
+	* mi/mi-cmd-var.c (struct mi_cmd_var_update): Remove.
+	(mi_cmd_var_update_iter): Change parameters.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (struct varobj_root) <next>: Remove.
+	(struct vlist): Remove.
+	(rootlist): Now a std::list.
+	(install_variable, uninstall_variable, all_root_varobjs): Update.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* varobj.c (VAROBJ_TABLE_SIZE): Remove.
+	(varobj_table): Now htab_t.
+	(varobj_get_handle, install_variable, uninstall_variable):
+	Update.
+	(hash_varobj, eq_varobj_and_string): New functions.
+	(hash_varobj): Update.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* inline-frame.c (stopped_by_user_bp_inline_frame): Update.
+	* ada-lang.c (check_status_exception): Update.
+	* breakpoint.c (free_bp_location): Remove.
+	(decref_bp_location): Use bp_location_ref_policy.
+	(bpstats::bpstats): Don't call incref_bp_location.
+	(bpstats::~bpstats): Remove.
+	(bpstats::bpstats): Update.
+	(bpstat_check_watchpoint, bpstat_check_breakpoint_conditions)
+	(bp_location::bp_location): Update.
+	(incref_bp_location): Remove.
+	(bkpt_print_it): Update.
+	* breakpoint.h (class bp_location): Derive from
+	refcounted_object.
+	(struct bpstats): Remove destructor.
+	<bp_location_at>: Now a bp_location_ref_ptr.
+	<refc>: Remove.
+	(bp_location_ref_ptr): New typedef.
+	(struct bp_location_ref_policy): New.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* thread.c (class scoped_inc_dec_ref): Remove.
+	(tp_array_compar_ascending, tp_array_compar_descending): Change
+	parameter types.
+	(thread_apply_all_command): Use thread_info_ref.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* infrun.c (struct stop_context) <thread>: Now a thread_info_ref.
+	(stop_context::stop_context): Update.
+	(stop_context::~stop_context): Remove.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* inferior.c (current_inferior_): Change type.
+	(current_inferior, set_current_inferior, initialize_inferiors):
+	Update.
+
+2020-12-11  Tom Tromey  <tom@tromey.com>
+
+	* gdbthread.h (class enable_thread_stack_temporaries) <m_thr>:
+	Change type.
+
+2020-12-11  Tom Tromey  <tromey@adacore.com>
+
+	* ada-tasks.c (struct ada_tasks_pspace_data) <cpu_id_offset>: New
+	field.
+	(ada_get_tcb_types_info): Look for __gnat_gdb_cpu_first_id.
+	(read_atcb): Use cpu_id_offset.
+
+2020-12-10  Kevin Buettner  <kevinb@redhat.com>
+
+	* ada-lang.c (ada_fold_name): Fix off-by-one error.
+
+2020-12-10  Luis Machado  <luis.machado@linaro.org>
+
+	* breakpoint.c (should_be_inserted): Don't output newline.
+
+2020-12-10  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c (aarch64_linux_restore_vreg) New function.
+	(aarch64_linux_sigframe_init): Call aarch64_linux_restore_vreg.
+	* aarch64-tdep.h (V_REGISTER_SIZE): Move to ...
+	* arch/aarch64.h: ... here.
+	* nat/aarch64-sve-linux-ptrace.c: Include endian.h.
+	(aarch64_maybe_swab128): New function.
+	(aarch64_sve_regs_copy_to_reg_buf)
+	(aarch64_sve_regs_copy_from_reg_buf): Adjust FPSIMD entries.
+	* trad-frame.c (trad_frame_reset_saved_regs): Initialize
+	the data field.
+	(TF_REG_VALUE_BYTES): New enum value.
+	(trad_frame_value_bytes_p): New function.
+	(trad_frame_set_value_bytes): New function.
+	(trad_frame_set_reg_value_bytes): New function.
+	(trad_frame_get_prev_register): Handle register values saved as bytes.
+	* trad-frame.h (trad_frame_set_reg_value_bytes): New prototype.
+	(struct trad_frame_saved_reg) <data>: New field.
+	(trad_frame_set_value_bytes): New prototype.
+	(trad_frame_value_bytes_p): New prototype.
+
+2020-12-07  Mihails Strasuns  <mihails.strasuns@intel.com>
+
+	* jit.c (mem_bfd*, bfd_open_from_target_memory): Removed.
+	* gdb_bfd.h (gdb_bfd_open_from_target_memory): New function.
+	* gdb_bfd.c (mem_bfd*, gdb_bfd_open_from_target_memory): New functions.	
+
+2020-12-09  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_lookup_encoded_symbol): Use add_angle_brackets.
+
+2020-12-09  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (get_dwarf2_rational_constant): Change "numerator"
+	and "denominator" to gdb_mpz.  Handle block forms.
+	(get_dwarf2_unsigned_rational_constant): Change "numerator" and
+	"denominator" to gdb_mpz.
+	(finish_fixed_point_type): Update.
+	(has_zero_over_zero_small_attribute): Update.
+
+2020-12-09  Tom Tromey  <tromey@adacore.com>
+
+	* expprint.c (op_name): Update.
+	* expression.h (enum exp_opcode): Update.
+	* std-operator.def: Add more opcodes.
+	* ada-operator.def, fortran-operator.def: Remove, moving contents
+	into std-operator.def.
+
+2020-12-09  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
+
+	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.
+
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (get_discrete_bounds): Return bool, adjust all
+	callers.
+	* gdbtypes.c (get_discrete_bounds): Return bool.
+
+2020-12-09  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-12-07  Tom Tromey  <tromey@adacore.com>
+
+	* maint.c (_initialize_maint_cmds): Use expression command
+	completer for "maint print type".
+
+2020-12-07  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* completer.c (complete_explicit_location): Also add keywords
+	that start with '-' to the completion list.
+
+2020-12-07  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* linespec.c (linespec_lexer_lex_keyword): The "-force-condition"
+	keyword may be followed by any keyword.
+	* breakpoint.c (find_condition_and_thread): Advance 'tok' by
+	'toklen' in the case for "-force-condition".
+
+2020-12-07  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* main.c (catch_command_errors): Add a flag parameter; invoke
+	`bpstat_do_actions` if the flag is set.
+	(execute_cmdargs): Update a call to `catch_command_errors`.
+
+2020-12-07  Tom de Vries  <tdevries@suse.de>
+
+	* ada-lang.c (replace_operator_with_call): Handle shrink resize.
+
+2020-12-06  Tom Tromey  <tom@tromey.com>
+
+	PR ada/26999
+	* ada-lang.c (replace_operator_with_call): Rewrite.
+
+2020-12-06  Giancarlo Frix  <gfrix@rocketsoftware.com>  (tiny change)
+
+	PR breakpoints/27009
+	* s390-tdep.h (op_bc): Correct BC opcode value.
+
+2020-12-06  Joel Brobecker  <brobecker@adacore.com>
+
+	* gmp-utils.h (gdb_mpz::safe_export): New private method.
+	(gdb_mpz::as_integer): Reimplement using gdb_mpz::safe_export.
+	* gmp-utils.c (gdb_mpz::write): Rewrite using gdb_mpz::safe_export.
+	(gdb_mpz::safe_export): New method.
+	* unittests/gmp-utils-selftests .c (gdb_mpz_as_integer):
+	Update function description.
+	(check_as_integer_raises_out_of_range_error): New function.
+	(gdb_mpz_as_integer_out_of_range): New function.
+	(_initialize_gmp_utils_selftests): Register
+	gdb_mpz_as_integer_out_of_range as a selftest.
+
+2020-12-05  Joel Brobecker  <brobecker@adacore.com>
+
+	* gmp-utils.c (gdb_mpz::read): Use HOST_CHAR_BIT instead of
+	TARGET_CHAR_BIT.
+	(gdb_mpz::write): Likewise.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* amd64-linux-tdep.c (amd64_linux_init_abi): Pass 2 as the
+	number of displaced step buffers.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* displaced-stepping.h (struct displaced_step_buffer): Rename
+	to...
+	(struct displaced_step_buffers): ... this.
+	<m_addr, m_current_thread, m_copy_insn_closure>: Remove.
+	<struct displaced_step_buffer>: New inner class.
+	<m_buffers>: New.
+	* displaced-stepping.c (displaced_step_buffer::prepare): Rename
+	to...
+	(displaced_step_buffers::prepare): ... this, adjust for multiple
+	buffers.
+	(displaced_step_buffer::finish):  Rename to...
+	(displaced_step_buffers::finish): ... this, adjust for multiple
+	buffers.
+	(displaced_step_buffer::copy_insn_closure_by_addr): Rename to...
+	(displaced_step_buffers::copy_insn_closure_by_addr): ... this,
+	adjust for multiple buffers.
+	(displaced_step_buffer::restore_in_ptid): Rename to...
+	(displaced_step_buffers::restore_in_ptid): ... this, adjust for
+	multiple buffers.
+	* linux-tdep.h (linux_init_abi): Change supports_displaced_step
+	for num_disp_step_buffers.
+	* linux-tdep.c (struct linux_gdbarch_data)
+	<num_disp_step_buffers>: New field.
+	(struct linux_info) <disp_step_buf>: Rename to...
+	<disp_step_bufs>: ... this, change type to
+	displaced_step_buffers.
+	(linux_displaced_step_prepare): Use
+	linux_gdbarch_data::num_disp_step_buffers to create that number
+	of buffers.
+	(linux_displaced_step_finish): Adjust.
+	(linux_displaced_step_copy_insn_closure_by_addr): Adjust.
+	(linux_displaced_step_restore_all_in_ptid): Adjust.
+	(linux_init_abi): Change supports_displaced_step parameter for
+	num_disp_step_buffers, save it in linux_gdbarch_data.
+	* aarch64-linux-tdep.c (aarch64_linux_init_abi): Adjust.
+	* alpha-linux-tdep.c (alpha_linux_init_abi): Adjust.
+	* amd64-linux-tdep.c (amd64_linux_init_abi_common): Change
+	supports_displaced_step parameter for num_disp_step_buffers.
+	(amd64_linux_init_abi): Adjust.
+	(amd64_x32_linux_init_abi): Adjust.
+	* arc-linux-tdep.c (arc_linux_init_osabi): Adjust.
+	* arm-linux-tdep.c (arm_linux_init_abi): Adjust.
+	* bfin-linux-tdep.c (bfin_linux_init_abi): Adjust.
+	* cris-linux-tdep.c (cris_linux_init_abi): Adjust.
+	* csky-linux-tdep.c (csky_linux_init_abi): Adjust.
+	* frv-linux-tdep.c (frv_linux_init_abi): Adjust.
+	* hppa-linux-tdep.c (hppa_linux_init_abi): Adjust.
+	* i386-linux-tdep.c (i386_linux_init_abi): Adjust.
+	* ia64-linux-tdep.c (ia64_linux_init_abi): Adjust.
+	* m32r-linux-tdep.c (m32r_linux_init_abi): Adjust.
+	* m68k-linux-tdep.c (m68k_linux_init_abi):
+	* microblaze-linux-tdep.c (microblaze_linux_init_abi):
+	* mips-linux-tdep.c (mips_linux_init_abi): Adjust.
+	* mn10300-linux-tdep.c (am33_linux_init_osabi): Adjust.
+	* nios2-linux-tdep.c (nios2_linux_init_abi): Adjust.
+	* or1k-linux-tdep.c (or1k_linux_init_abi): Adjust.
+	* ppc-linux-tdep.c (ppc_linux_init_abi): Adjust.
+	* riscv-linux-tdep.c (riscv_linux_init_abi): Adjust.
+	* rs6000-tdep.c (struct ppc_inferior_data) <disp_step_buf>:
+	Change type to displaced_step_buffers.
+	* s390-linux-tdep.c (s390_linux_init_abi_any): Adjust.
+	* sh-linux-tdep.c (sh_linux_init_abi): Adjust.
+	* sparc-linux-tdep.c (sparc32_linux_init_abi): Adjust.
+	* sparc64-linux-tdep.c (sparc64_linux_init_abi): Adjust.
+	* tic6x-linux-tdep.c (tic6x_uclinux_init_abi): Adjust.
+	* tilegx-linux-tdep.c (tilegx_linux_init_abi): Adjust.
+	* xtensa-linux-tdep.c (xtensa_linux_init_abi): Adjust.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* linux-tdep.c (init_linux_gdbarch_data): Change parameter to
+	obkstack.
+	(_initialize_linux_tdep): Register pre-init gdb data instead of
+	post-init.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* displaced-stepping.h (struct
+	displaced_step_copy_insn_closure): Adjust comments.
+	(struct displaced_step_inferior_state) <step_thread,
+	step_gdbarch, step_closure, step_original, step_copy,
+	step_saved_copy>: Remove fields.
+	(struct displaced_step_thread_state): New.
+	(struct displaced_step_buffer): New.
+	* displaced-stepping.c (displaced_step_buffer::prepare): New.
+	(write_memory_ptid): Move from infrun.c.
+	(displaced_step_instruction_executed_successfully): New,
+	factored out of displaced_step_finish.
+	(displaced_step_buffer::finish): New.
+	(displaced_step_buffer::copy_insn_closure_by_addr): New.
+	(displaced_step_buffer::restore_in_ptid): New.
+	* gdbarch.sh (displaced_step_location): Remove.
+	(displaced_step_prepare, displaced_step_finish,
+	displaced_step_copy_insn_closure_by_addr,
+	displaced_step_restore_all_in_ptid): New.
+	* gdbarch.c: Re-generate.
+	* gdbarch.h: Re-generate.
+	* gdbthread.h (class thread_info) <displaced_step_state>: New
+	field.
+	(thread_step_over_chain_remove): New declaration.
+	(thread_step_over_chain_next): New declaration.
+	(thread_step_over_chain_length): New declaration.
+	* thread.c (thread_step_over_chain_remove): Make non-static.
+	(thread_step_over_chain_next): New.
+	(global_thread_step_over_chain_next): Use
+	thread_step_over_chain_next.
+	(thread_step_over_chain_length): New.
+	(global_thread_step_over_chain_enqueue): Add debug print.
+	(global_thread_step_over_chain_remove): Add debug print.
+	* infrun.h (get_displaced_step_copy_insn_closure_by_addr):
+	Remove.
+	* infrun.c (get_displaced_stepping_state): New.
+	(displaced_step_in_progress_any_inferior): Remove.
+	(displaced_step_in_progress_thread): Adjust.
+	(displaced_step_in_progress): Adjust.
+	(displaced_step_in_progress_any_thread): New.
+	(get_displaced_step_copy_insn_closure_by_addr): Remove.
+	(gdbarch_supports_displaced_stepping): Use
+	gdbarch_displaced_step_prepare_p.
+	(displaced_step_reset): Change parameter from inferior to
+	thread.
+	(displaced_step_prepare_throw): Implement using
+	gdbarch_displaced_step_prepare.
+	(write_memory_ptid): Move to displaced-step.c.
+	(displaced_step_restore): Remove.
+	(displaced_step_finish): Implement using
+	gdbarch_displaced_step_finish.
+	(start_step_over): Allow starting more than one displaced step.
+	(prepare_for_detach): Handle possibly multiple threads doing
+	displaced steps.
+	(handle_inferior_event): Handle possibility that fork event
+	happens while another thread displaced steps.
+	* linux-tdep.h (linux_displaced_step_prepare): New.
+	(linux_displaced_step_finish): New.
+	(linux_displaced_step_copy_insn_closure_by_addr): New.
+	(linux_displaced_step_restore_all_in_ptid): New.
+	(linux_init_abi): Add supports_displaced_step parameter.
+	* linux-tdep.c (struct linux_info) <disp_step_buf>: New field.
+	(linux_displaced_step_prepare): New.
+	(linux_displaced_step_finish): New.
+	(linux_displaced_step_copy_insn_closure_by_addr): New.
+	(linux_displaced_step_restore_all_in_ptid): New.
+	(linux_init_abi): Add supports_displaced_step parameter,
+	register displaced step methods if true.
+	(_initialize_linux_tdep): Register inferior_execd observer.
+	* amd64-linux-tdep.c (amd64_linux_init_abi_common): Add
+	supports_displaced_step parameter, adjust call to
+	linux_init_abi.  Remove call to
+	set_gdbarch_displaced_step_location.
+	(amd64_linux_init_abi): Adjust call to
+	amd64_linux_init_abi_common.
+	(amd64_x32_linux_init_abi): Likewise.
+	* aarch64-linux-tdep.c (aarch64_linux_init_abi): Adjust call to
+	linux_init_abi.  Remove call to
+	set_gdbarch_displaced_step_location.
+	* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
+	* i386-linux-tdep.c (i386_linux_init_abi): Likewise.
+	* alpha-linux-tdep.c (alpha_linux_init_abi): Adjust call to
+	linux_init_abi.
+	* arc-linux-tdep.c (arc_linux_init_osabi): Likewise.
+	* bfin-linux-tdep.c (bfin_linux_init_abi): Likewise.
+	* cris-linux-tdep.c (cris_linux_init_abi): Likewise.
+	* csky-linux-tdep.c (csky_linux_init_abi): Likewise.
+	* frv-linux-tdep.c (frv_linux_init_abi): Likewise.
+	* hppa-linux-tdep.c (hppa_linux_init_abi): Likewise.
+	* ia64-linux-tdep.c (ia64_linux_init_abi): Likewise.
+	* m32r-linux-tdep.c (m32r_linux_init_abi): Likewise.
+	* m68k-linux-tdep.c (m68k_linux_init_abi): Likewise.
+	* microblaze-linux-tdep.c (microblaze_linux_init_abi): Likewise.
+	* mips-linux-tdep.c (mips_linux_init_abi): Likewise.
+	* mn10300-linux-tdep.c (am33_linux_init_osabi): Likewise.
+	* nios2-linux-tdep.c (nios2_linux_init_abi): Likewise.
+	* or1k-linux-tdep.c (or1k_linux_init_abi): Likewise.
+	* riscv-linux-tdep.c (riscv_linux_init_abi): Likewise.
+	* s390-linux-tdep.c (s390_linux_init_abi_any): Likewise.
+	* sh-linux-tdep.c (sh_linux_init_abi): Likewise.
+	* sparc-linux-tdep.c (sparc32_linux_init_abi): Likewise.
+	* sparc64-linux-tdep.c (sparc64_linux_init_abi): Likewise.
+	* tic6x-linux-tdep.c (tic6x_uclinux_init_abi): Likewise.
+	* tilegx-linux-tdep.c (tilegx_linux_init_abi): Likewise.
+	* xtensa-linux-tdep.c (xtensa_linux_init_abi): Likewise.
+	* ppc-linux-tdep.c (ppc_linux_init_abi): Adjust call to
+	linux_init_abi.  Remove call to
+	set_gdbarch_displaced_step_location.
+	* arm-tdep.c (arm_pc_is_thumb): Call
+	gdbarch_displaced_step_copy_insn_closure_by_addr instead of
+	get_displaced_step_copy_insn_closure_by_addr.
+	* rs6000-aix-tdep.c (rs6000_aix_init_osabi): Adjust calls to
+	clear gdbarch methods.
+	* rs6000-tdep.c (struct ppc_inferior_data): New structure.
+	(get_ppc_per_inferior): New function.
+	(ppc_displaced_step_prepare): New function.
+	(ppc_displaced_step_finish): New function.
+	(ppc_displaced_step_restore_all_in_ptid): New function.
+	(rs6000_gdbarch_init): Register new gdbarch methods.
+	* s390-tdep.c (s390_gdbarch_init): Don't call
+	set_gdbarch_displaced_step_location, set new gdbarch methods.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (COMMON_SFILES): Add displaced-stepping.c.
+	* aarch64-tdep.h: Include displaced-stepping.h.
+	* displaced-stepping.h (struct displaced_step_copy_insn_closure):
+	Move here.
+	(displaced_step_copy_insn_closure_up): Move here.
+	(struct buf_displaced_step_copy_insn_closure): Move here.
+	(struct displaced_step_inferior_state): Move here.
+	(debug_displaced): Move here.
+	(displaced_debug_printf_1): Move here.
+	(displaced_debug_printf): Move here.
+	* displaced-stepping.c: New file.
+	* gdbarch.sh: Include displaced-stepping.h in gdbarch.h.
+	* gdbarch.h: Re-generate.
+	* inferior.h: Include displaced-stepping.h.
+	* infrun.h (debug_displaced): Move to displaced-stepping.h.
+	(displaced_debug_printf_1): Likewise.
+	(displaced_debug_printf): Likewise.
+	(struct displaced_step_copy_insn_closure): Likewise.
+	(displaced_step_copy_insn_closure_up): Likewise.
+	(struct buf_displaced_step_copy_insn_closure): Likewise.
+	(struct displaced_step_inferior_state): Likewise.
+	* infrun.c (show_debug_displaced): Move to displaced-stepping.c.
+	(displaced_debug_printf_1): Likewise.
+	(displaced_step_copy_insn_closure::~displaced_step_copy_insn_closure):
+	Likewise.
+	(_initialize_infrun): Don't register "set/show debug displaced".
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* linux-tdep.c (get_linux_inferior_data): Add inferior
+	parameter.
+	(linux_vsyscall_range): Pass current inferior.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (displaced_step_prepare_throw): Change return type to
+	displaced_step_prepare_status.
+	(displaced_step_prepare): Likewise.
+	(displaced_step_finish): Change return type to
+	displaced_step_finish_status.
+	(resume_1): Adjust.
+	(stop_all_threads): Adjust.
+	* displaced-stepping.h: New file.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (displaced_step_fixup): Rename to...
+	(displaced_step_finish): ... this, update all callers.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.h (get_displaced_step_closure_by_addr): Rename to...
+	(get_displaced_step_copy_insn_closure_by_addr): ... this.
+	Update all users.
+	(displaced_step_closure): Rename to...
+	(displaced_step_copy_insn_closure): ... this.  Update all users.
+	(displaced_step_closure_up): Rename to...
+	(displaced_step_copy_insn_closure_up). ... this.  Update all
+	users.
+	(buf_displaced_step_closure): Rename to...
+	(buf_displaced_step_copy_insn_closure): ... this.  Update all
+	users.
+	* infrun.c (get_displaced_step_closure_by_addr): Rename to...
+	(get_displaced_step_copy_insn_closure_by_addr): ... this.
+	Update all users.
+	* aarch64-tdep.c (aarch64_displaced_step_closure): Rename to...
+	(aarch64_displaced_step_copy_insn_closure): ... this.  Update
+	all users.
+	* amd64-tdep.c (amd64_displaced_step_closure): Rename to...
+	(amd64_displaced_step_copy_insn_closure): ... this.  Update all
+	users.
+	* arm-tdep.h (arm_displaced_step_closure): Rename to...
+	(arm_displaced_step_copy_insn_closure): ... this.  Update all
+	users.
+	* i386-tdep.h (i386_displaced_step_closure): Rename to...
+	(i386_displaced_step_copy_insn_closure): ... this.  Update all
+	users.
+	* rs6000-tdep.c (ppc_displaced_step_closure): Rename to...
+	(ppc_displaced_step_copy_insn_closure): ... this.  Update all
+	users.
+	* s390-tdep.c (s390_displaced_step_closure): Rename to...
+	(s390_displaced_step_copy_insn_closure): ... this.  Update all
+	users.
+	* gdbarch.h: Re-generate.
+	* gdbarch.c: Re-generate.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbthread.h (thread_step_over_chain_enqueue): Rename to...
+	(global_thread_step_over_chain_enqueue): ... this.  Update all
+	users.
+	(thread_step_over_chain_remove): Rename to...
+	(global_thread_step_over_chain_remove): ... this.  Update all
+	users.
+	(thread_step_over_chain_next): Rename to...
+	(global_thread_step_over_chain_next): ... this.  Update all
+	users.
+	* infrun.h (step_over_queue_head): Rename to...
+	(global_thread_step_over_chain_head): ... this.  Update all
+	users.
+	* infrun.c (step_over_queue_head): Rename to...
+	(global_thread_step_over_chain_head): ... this.  Update all
+	users.
+	* thread.c (step_over_chain_remove): Rename to...
+	(thread_step_over_chain_remove): ... this.  Update all users.
+	(thread_step_over_chain_next): Rename to...
+	(global_thread_step_over_chain_next): ... this.  Update all
+	users.
+	(thread_step_over_chain_enqueue): Rename to...
+	(global_thread_step_over_chain_enqueue): ... this.  Update all
+	users.
+	(thread_step_over_chain_remove): Rename to...
+	(global_thread_step_over_chain_remove): ... this.  Update all
+	users.
+
+2020-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (get_displaced_stepping_state): Remove, change
+	callers to access the field directly.
+
+2020-12-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (handle_inferior_event): Restore displaced step
+	buffer bytes in child process when handling fork, even if fork
+	happened in another thread than the displaced-stepping one.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (infrun_inferior_execd): New function.
+	(_initialize_infrun): Attach inferior_execd observer.
+
+2020-12-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* observable.h (inferior_execd): Declare new observable.
+	* observable.c (inferior_execd): Declare new observable.
+	* infrun.c (follow_exec): Notify inferior_execd observer.
+	* jit.c (jit_inferior_created_hook): Make static.
+	(_initialize_jit): Register inferior_execd observer.
+	* jit.h (jit_inferior_created_hook): Remove declaration.
+	* solib.c (_initialize_solib): Register inferior_execd observer.
+
+2020-12-04  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/27003
+	* completer.c (completion_tracker::build_completion_result): Don't
+	access match_list[0][-1].
+
+2020-12-04  Tom Tromey  <tromey@adacore.com>
+
+	* linespec.c (struct linespec_token): Rename; remove typedef.
+	* guile/scm-block.c (struct block_smob): Remove typedef.
+	(struct block_syms_progress_smob): Likewise.
+	* guile/scm-symbol.c (struct symbol_smob): Remove typedef.
+	* guile/scm-symtab.c (symtab_smob): Remove typedef.
+	(struct sal_smob): Remove typedef.
+	* guile/scm-param.c (struct param_smob): Remove typedef.
+	* guile/scm-progspace.c (struct pspace_smob): Rename.
+	* guile/scm-objfile.c (struct objfile_smob): Rename.
+	* guile/scm-iterator.c (struct iterator_smob): Rename.
+	* guile/scm-frame.c (struct frame_smob): Rename.
+	* guile/scm-arch.c (struct arch_smob): Rename.
+	* guile/scm-type.c (struct field_smob): Remove typedef.
+	(struct type_smob): Rename.
+	* guile/scm-cmd.c (struct command_smob): Remove typedef.
+	* guile/scm-ports.c (struct ioscm_memory_port): Remove typedef.
+	* guile/scm-value.c (struct value_smob): Remove typedef.
+	* guile/scm-lazy-string.c (lazy_string_smob): Remove typedef.
+	* guile/guile-internal.h (struct scheme_variable)
+	(struct scheme_function, struct scheme_integer_constant)
+	(struct gdb_smob, struct chained_gdb_smob)
+	(struct eqable_gdb_smob, arch_smob, frame_smob, iterator_smob)
+	(objfile_smob, pspace_smob, type_smob): Remove typedef.
+	* guile/scm-pretty-print.c (pretty_printer_smob): Remove typedef.
+	(struct pretty_printer_worker_smob): Remove typedef.
+	* guile/scm-exception.c (struct exception_smob): Remove typedef.
+	* python/py-block.c (struct block_object): Remove typedef.
+	(block_syms_iterator_object): Update.
+	(set_block): Update.
+	(block_syms_iterator_object): Remove typedef.
+	* python/py-inferior.c (struct membuf_object): Remove typedef.
+	* python/py-symtab.c (struct symtab_object): Remove typedef.
+	(set_symtab): Update.
+	(sal_object): Remove typedef.
+	(set_sal): Update.
+	* python/py-frame.c (frame_object): Remove typedef.
+	* python/py-record-btrace.c (struct btpy_list_object): Remove
+	typedef.
+	* python/py-arch.c (struct arch_object): Remove typedef.
+	* python/py-linetable.c (struct linetable_entry_object)
+	(linetable_object, struct ltpy_iterator_object): Remove typedef.
+	* python/py-events.h (eventregistry_object): Remove typedef.
+	(struct events_object): Remove typedef.
+	* python/python-internal.h (gdbpy_breakpoint_object): Remove
+	typedef.
+	(thread_object): Remove typedef.
+	* python/py-progspace.c (pspace_object): Remove typedef.
+	* python/py-value.c (struct value_object): Remove typedef.
+	* python/py-record.h (recpy_record_object): Remove typedef.
+	(struct recpy_element_object): Remove typedef.
+	* python/py-lazy-string.c (lazy_string_object): Remove typedef.
+	* python/py-objfile.c (objfile_object): Remove typedef.
+	* python/py-cmd.c (struct cmdpy_object): Remove typedef.
+	* python/py-type.c (type_object): Remove typedef.
+	(typy_iterator_object): Update.
+	(set_type): Update.
+	(field_object): Remove typedef.
+	(typy_iterator_object): Remove typedef.
+	* python/py-registers.c (register_descriptor_iterator_object):
+	Remove typedef.
+	(struct register_descriptor_object)
+	(struct reggroup_iterator_object, struct reggroup_object): Remove
+	typedef.
+	* python/py-record.c (recpy_gap_object): Remove typedef.
+	* python/py-symbol.c (symbol_object): Remove typedef.
+	(set_symbol): Update.
+	* python/py-event.h (event_object): Remove typedef.
+	* python/py-param.c (parmpy_object): Remove typedef.
+	* python/py-instruction.c (struct py_insn_obj): Remove typedef.
+	* python/py-unwind.c (struct pending_frame_object): Remove typedef.
+	(unwind_info_object, struct cached_frame_info): Likewise.
+
+2020-12-04  Tom Tromey  <tromey@adacore.com>
+
+	* value.c (value_internal_function_name): Make return type const.
+	* value.h (value_internal_function_name): Make return type const.
+
+2020-12-04  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-tdep.c (submask, bit, bits): Remove.
+	* arch/aarch64-insn.c (extract_signed_bitfield): Remove.
+	(aarch64_decode_adr, aarch64_decode_b aarch64_decode_bcond)
+	(aarch64_decode_cb, aarch64_decode_tb)
+	(aarch64_decode_ldr_literal): Use sbits to extract a signed
+	immediate.
+	* arch/aarch64-insn.h (submask, bits, bit, sbits): New macros.
+
+2020-12-04  Tom de Vries  <tdevries@suse.de>
+
+	PR tdep/27007
+	* i386-tdep.c (i386_16_byte_align_p): Skip static fields.
+
+2020-12-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/26876
+	* dwarf2/frame.c (find_comp_unit, set_comp_unit): Reverse use of
+	dwarf2_frame_bfd_data and dwarf2_frame_objfile_data.
+
+2020-12-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arch/riscv.c: Include 'rv32e-xregs.c'.
+	(riscv_create_target_description): Update to handle rv32e.
+	* arch/riscv.h (struct riscv_gdbarch_features) <embedded>: New
+	member variable.
+	<operator==>: Update to account for new field.
+	<hash>: Likewise.
+	* features/Makefile (FEATURE_XMLFILES): Add riscv/rv32e-xregs.xml.
+	* features/riscv/rv32e-xregs.c: Generated.
+	* features/riscv/rv32e-xregs.xml: New file.
+	* riscv-tdep.c (riscv_debug_breakpoints): Move from later in the
+	file.
+	(riscv_debug_infcall): Likewise.
+	(riscv_debug_unwinder): Likewise.
+	(riscv_debug_gdbarch): Likewise.
+	(enum riscv_register_required_status): Delete.
+	(struct riscv_register_feature): Add constructor, delete default
+	constructor, copy, and assign constructors.
+	(struct riscv_register_feature::register_info) <required>: Delete.
+	<check>: Update comment and arguments.
+	(struct riscv_register_feature) <name>: Change to member function.
+	<prefer_first_name>: Delete.
+	<tdesc_feature>: New member function.
+	<registers>: Rename to...
+	<m_registers>: ...this.
+	<m_feature_name>: New member variable.
+	(riscv_register_feature::register_info::check): Update arguments.
+	(riscv_xreg_feature): Rewrite as class, create a single static
+	instance of the class.
+	(riscv_freg_feature): Likewise.
+	(riscv_virtual_feature): Likewise.
+	(riscv_csr_feature): Likewise.
+	(riscv_create_csr_aliases): Has become a member function inside
+	riscv_csr_feature class.
+	(riscv_abi_embedded): New function definition.
+	(riscv_register_name): Adjust to use new feature objects.
+	(struct riscv_call_info) <riscv_call_info>: Check for rv32e abi,
+	and adjust available argument registers.
+	(riscv_features_from_gdbarch_info): Check for EF_RISCV_RVE flag.
+	(riscv_check_tdesc_feature): Delete.
+	(riscv_tdesc_unknown_reg): Adjust to use new feature objects.
+	(riscv_gdbarch_init): Delete target description checking code, and
+	instead call to the new feature objects to perform the checks.
+	Reorder handling of no abi information case, allows small code
+	simplification.
+	(_initialize_riscv_tdep): Remove call, this is now done in the
+	riscv_csr_feature constructor.
+	* riscv-tdep.h (riscv_abi_embedded): Declare.
+
+2020-12-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_create_csr_aliases): Remove use of
+	DECLARE_CSR_ALIAS.
+
+2020-12-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_is_unknown_csr): New function,
+	implementation moved from riscv_register_reggroup_p.
+	(riscv_register_reggroup_p): Update group handling for unknown
+	CSRs.
+
+2020-12-01  Sergio Durigan Junior  <sergiodj@sergiodj.net>
+
+	* dwarf2/read.c (dwz_search_other_debugdirs): New function.
+	(dwarf2_get_dwz_file): Convert 'filename' to a
+	std::string.  Use dwz_search_other_debugdirs to search for DWZ
+	files in the debug-file-directories provided by the user as well.
+
+2020-12-01  Tom Tromey  <tom@tromey.com>
+
+	* parse.c (expr_builder::expr_builder): Initialize expout.
+	(expr_builder::release): Use expression::resize.
+	(expression::expression, expression::~expression)
+	(expression::resize): New methods.
+	(write_exp_elt): Use expression::resize.
+	(prefixify_expression): Update.
+	(increase_expout_size): Use expression::resize.
+	* expression.h (struct expression): Add constructor, destructor.
+	<resize>: New method.
+	(expression_up): Change type.
+
+2020-12-01  Rogerio A. Cardoso  <rcardoso@linux.ibm.com>
+	* ppc-linux-nat.c: (PPC_DEBUG_FEATURE_DATA_BP_ARCH_31): New define.
+	(region_ok_for_hw_watchpoint): Check if 2nd DAWR is avaliable before
+	set region.
+
+2020-11-30  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26905
+	* dwarf2/loc.c (dwarf2_locexpr_baton_eval): Add and handle
+	is_reference parameter.
+	(dwarf2_evaluate_property): Update dwarf2_locexpr_baton_eval call.
+
+2020-11-30  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_op_name): Remove.
+	(exp_descriptor_rust): Update.
+	* parser-defs.h (op_name_standard): Don't declare.
+	(struct exp_descriptor) <op_name>: Remove.
+	* parse.c (exp_descriptor_standard): Update.
+	* opencl-lang.c (exp_descriptor_opencl): Update.
+	* m2-lang.c (m2_language::exp_descriptor_modula2): Update.
+	* f-lang.c (op_name_f): Remove.
+	(f_language::exp_descriptor_tab): Update.
+	* expression.h (op_name): Update.
+	* expprint.c (op_name): Rewrite.
+	(op_name_standard): Remove.
+	(dump_raw_expression, dump_subexp): Update.
+	* c-lang.c (exp_descriptor_c): Update.
+	* ax-gdb.c (gen_expr): Update.
+	* ada-lang.c (ada_op_name): Remove.
+	(ada_exp_descriptor): Update.
+
+2020-11-30  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (init_array_element): Remove.
+	(evaluate_subexp_standard) <OP_ARRAY>: Remove "index_pc".
+
+2020-11-29  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR tui/26973
+	* tui/tui-layout.c (tui_apply_current_layout): Don't delete the
+	static locator win info.
+
+2020-11-28  Alex Richardson  <Alexander.Richardson@cl.cam.ac.uk>
+
+	* acincludde.m4 (GDB_AC_CHECK_BFD): Include string.h in the test
+	program.
+
+2020-11-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* printcmd.c (skip_over_slash_fmt): Reorder code to ensure in_fmt
+	is always initialized.
+
+2020-11-26  Rogerio Alves <rcardoso@linux.ibm.com>
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-11-26  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
+
+	* features/aarch64-fpu.c (create_feature_aarch64_fpu): Regenerate.
+	* features/aarch64-fpu.xml: Add named FPCR and FPSR register bit-fields.
+
+2020-11-25  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (evaluate_subexp_standard): Remove unnecessary
+	variables.
+
+2020-11-25  Tom Tromey  <tom@tromey.com>
+
+	* d-lang.c: Include parser-defs.h.
+	* rust-lang.c: Include parser-defs.h.
+	* c-lang.h: Do not include parser-defs.h.
+
+2020-11-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* regcache.h (struct cached_reg): Remove typedef.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* README: Fix the URL of the MPFR library.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* README: Document the --with-libgmp-prefix configure option.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* NEWS: Add entry documenting support for DWARF-based fixed
+	point types.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* NEWS: Document that building GDB now requires GMP.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* typeprint.c (print_type_scalar): Add handling of
+	TYPE_CODE_FIXED_POINT.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* valarith.c (fixed_point_binop): Replace the
+	INIT_VAL_WITH_FIXED_POINT_VAL macro by a lambda.  Update all
+	users accordingly.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbtypes.h (struct type) <fixed_point_scaling_factor>: New method,
+	replacing fixed_point_scaling_factor.  All callers updated
+	throughout this project.
+	(fixed_point_scaling_factor): Delete declaration.
+	* gdbtypes.c (type::fixed_point_scaling_factor): Replaces
+	fixed_point_scaling_factor.  Adjust implementation accordingly.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbtypes.h (struct type) <fixed_point_type_base_type> New method,
+	replacing the fixed_point_type_base_type function. All callers
+	updated throughout this project.
+	(fixed_point_type_base_type): Remove declaration.
+	* gdbtypes.c (type::fixed_point_type_base_type): Replaces
+	fixed_point_type_base_type.  Adjust implementation accordingly.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbtypes.h (struct type) <fixed_point_info, set_fixed_point_info>:
+	New methods.
+	(INIT_FIXED_POINT_SPECIFIC): Adjust.
+	(TYPE_FIXED_POINT_INFO): Delete macro.
+	(allocate_fixed_point_type_info): Change return type to void.
+	* gdbtypes.c (copy_type_recursive): Replace the use of
+	TYPE_FIXED_POINT_INFO by a call to the fixed_point_info method.
+	(fixed_point_scaling_factor): Likewise.
+	(allocate_fixed_point_type_info): Change return type to void.
+	Adjust implementation accordingly.
+	* dwarf2/read.c (finish_fixed_point_type): Replace the use of
+	TYPE_FIXED_POINT_INFO by a call to the fixed_point_info method.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* gmp-utils.h (gdb_mpz::read): Change buf and len parameters
+	into one single gdb::array_view parameter.
+	(gdb_mpz::write): Likewise.
+	(gdb_mpq::read_fixed_point, gdb_mpq::write_fixed_point): Likewise.
+	* gmp-utils.c (gdb_mpz::read): Change buf and len parameters
+	into one single gdb::array_view parameter.
+	Adjust implementation accordingly.
+	(gdb_mpz::write): Likewise.
+	(gdb_mpq::read_fixed_point, gdb_mpq::write_fixed_point): Likewise.
+	* unittests/gmp-utils-selftests.c: Adapt following changes above.
+	* valarith.c, valops.c, valprint.c, value.c: Likewise.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* gmp-utils.h (gmp_string_printf): Rename from gmp_string_asprintf.
+	Change return type to std::string. Update all callers.
+	* gmp-utils.c (gmp_string_printf): Likewise.
+
+2020-11-24  Joel Brobecker  <brobecker@adacore.com>
+
+	* unittests/gmp-utils-selftests.c (write_fp_test): Use mpq_set_si
+	instead of mpq_set_ui to initialize our GMP rational.
+
+2020-11-23  Tom de Vries  <tdevries@suse.de>
+
+	* debuginfod-support.c (debuginfod_source_query)
+	(debuginfod_debuginfo_query): Only set DESTNAME if successful.
+
+2020-11-21  Tom Tromey  <tom@tromey.com>
+
+	* breakpoint.c (watchpoint_exp_is_const): Return bool.
+
+2020-11-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* unittests/gmp-utils-selftests.c (gdb_mpz_read_all_from_small):
+	Pass 2.0 to pow.
+	(gdb_mpz_write_all_from_small): Likewise.
+
+2020-11-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (finish_fixed_point_type): Use std::abs instead
+	of abs.
+
+2020-11-20  Nick Alcock  <nick.alcock@oracle.com>
+
+	* ctfread.c (elfctf_build_psymtabs): Use ctf_dict_open, not
+	ctf_arc_open_by_name.
+
+2020-11-20  Nick Alcock  <nick.alcock@oracle.com>
+
+	* ctfread.c: Change uses of ctf_file_t to ctf_dict_t.
+	(ctf_fp_info::~ctf_fp_info): Call ctf_dict_close, not ctf_file_close.
+
+2020-11-20  Pedro Alves  <pedro@palves.net>
+
+	* language.c (language_arch_info::lookup_primitive_type): Use
+	gdb::function_view instead of gdb::function.
+	(template language_lookup_primitive_type): Rename to ...
+	(language_lookup_primitive_type_1): ... this, and make static.
+	(language_lookup_primitive_type(const struct language_defn *,
+	struct gdbarch *, const char *): Make non-template.
+	(language_lookup_primitive_type(const struct language_defn *,
+	struct gdbarch *, std::function<bool (struct type *)>): Make
+	non-template and use gdb::function_view.
+	* language.h (language_arch_info::lookup_primitive_type): Use
+	gdb::function_view instead of std::function.
+	(language_lookup_primitive_type): No longer template.
+	* opencl-lang.c (lookup_opencl_vector_type): 'filter' is now a
+	lambda instead of a std::function.
+
+2020-11-19  Andreas Arnez  <arnez@linux.ibm.com>
+
+	PR tdep/26916
+	* s390-tdep.c (s390_process_record): Fix recording of STOC, STOCG,
+	and STOCFH.
+
+2020-11-19  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* f-lang.c (fortran_value_subarray): Use plongest/pulongest.
+
+2020-11-19  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh (read_core_file_mappings): Remove `other` parameter
+	in `loop_cb` parameter.
+	* gdbarch.c: Re-generate.
+	* gdbarch.h: Re-generate.
+	* arch-utils.c (default_read_core_file_mappings): Remove `other`
+	parameter.
+	* arch-utils.h (default_read_core_file_mappings): Likewise.
+	* corelow.c (core_target::build_file_mappings): Likewise.
+	* linux-tdep.c (linux_read_core_file_mappings): Likewise.
+	(linux_core_info_proc_mappings): Likewise.
+
+2020-11-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in (HFILES_NO_SRCDIR): Add f-array-walker.h.
+	* NEWS: Mention new options.
+	* f-array-walker.h: New file.
+	* f-lang.c: Include 'gdbcmd.h' and 'f-array-walker.h'.
+	(repack_array_slices): New static global.
+	(show_repack_array_slices): New function.
+	(fortran_array_slicing_debug): New static global.
+	(show_fortran_array_slicing_debug): New function.
+	(value_f90_subarray): Delete.
+	(skip_undetermined_arglist): Delete.
+	(class fortran_array_repacker_base_impl): New class.
+	(class fortran_lazy_array_repacker_impl): New class.
+	(class fortran_array_repacker_impl): New class.
+	(fortran_value_subarray): Complete rewrite.
+	(set_fortran_list): New static global.
+	(show_fortran_list): Likewise.
+	(_initialize_f_language): Register new commands.
+	(fortran_adjust_dynamic_array_base_address_hack): New function.
+	* f-lang.h (fortran_adjust_dynamic_array_base_address_hack):
+	Declare.
+	* f-valprint.c: Include 'f-array-walker.h'.
+	(class fortran_array_printer_impl): New class.
+	(f77_print_array_1): Delete.
+	(f77_print_array): Delete.
+	(fortran_print_array): New.
+	(f_value_print_inner): Update to call fortran_print_array.
+	* gdbtypes.c: Include 'f-lang.h'.
+	(resolve_dynamic_type_internal): Call
+	fortran_adjust_dynamic_array_base_address_hack.
+
+2020-11-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* breakpoint.c (struct watch_options): New struct.
+	(watch_option_defs): New static global.
+	(make_watch_options_def_group): New function.
+	(watch_maybe_just_location): Convert option parsing.
+	(watch_command_completer): New function.
+	(_initialize_breakpoint): Build help text using options mechanism.
+
+2020-11-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* breakpoint.c (update_watchpoint): Pass 'false' not '0'.
+	(watch_command_1): Update parameter types.  Convert locals to
+	bool.
+	(watch_command_wrapper): Change parameter type.
+	(watch_maybe_just_location): Change locals to bool.
+	(rwatch_command_wrapper): Update parameter type.
+	(awatch_command_wrapper): Update parameter type.
+	* breakpoint.h (watch_command_wrapper): Change parameter type.
+	(rwatch_command_wrapper): Update parameter type.
+	(awatch_command_wrapper): Update parameter type.
+	* eval.c (fetch_subexp_value): Change parameter type.
+	* ppc-linux-nat.c (ppc_linux_nat_target::check_condition): Pass
+	'false' not '0'.
+	* value.h (fetch_subexp_value): Change parameter type in
+	declaration.
+
+2020-11-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* printcmd.c (skip_over_slash_fmt): Make use of skip_to_space and
+	skip_spaces.
+
+2020-11-18  Keith Seitz  <keiths@redhat.com>
+
+	* linux-tdep.c (dump_note_entry_p): Return true instead of
+	checking `filename'.
+
+2020-11-18  Tom de Vries  <tdevries@suse.de>
+
+	* debuginfod-support.c (debuginfod_source_query)
+	(debuginfod_debuginfo_query): Also do early exit if
+	"(getenv (DEBUGINFOD_URLS_ENV_VAR))[0] == '\0'".
+
+2020-11-18  Tom de Vries  <tdevries@suse.de>
+
+	* gdbtypes.c (update_static_array_size): Fix -Werror=bool-compare
+	warning.
+
+2020-11-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (get_array_bounds): Return bool, adjust some
+	callers.  Move doc here.
+	* gdbtypes.c (get_array_bounds): Return bool
+
+2020-11-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arc-linux-tdep.c (arc_linux_sw_breakpoint_from_kind): Add an
+	assert.
+	* arc-tdep.c (arc_breakpoint_kind_from_pc): Likewise.
+	* disasm-selftests.c (print_one_insn_test): Fall throough from ARC
+	case to the default.
+
+2020-11-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* printcmd.c: Include 'safe-ctype.c'.
+	(skip_over_slash_fmt): New function.
+	(print_command_completer): Call skip_over_slash_fmt.
+	(display_and_x_command_completer): New function.
+	(_initialize_printcmd): Add command completion for 'x' and
+	'display'.
+
+2020-11-16  Pedro Alves  <pedro@palves.net>
+
+	* frame.c (get_prev_frame): Move get_frame_id call from here ...
+	(get_prev_frame_always_1): ... to here.
+	* inline-frame.c (inline_frame_this_id): Mention
+	get_prev_frame_always_1 in comment.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* valarith.c (fixed_point_binop): Add BINOP_EQUAL and BINOP_LESS
+	handling.
+	(value_less): Add fixed-point handling.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* eval.c (binop_promote): Add fixed-point type handling.
+	* valarith.c (fixed_point_binop): New function.
+	(scalar_binop): Add fixed-point type handling.
+	(value_neg): Add fixed-point type handling.
+	* valops.c (value_cast_to_fixed_point): New function.
+	(value_cast): Add fixed-point type handling.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-typeprint.c (ada_print_type): Add handing of fixed-point
+	range types.
+	* c-typeprint.c (c_type_print_varspec_prefix)
+	(c_type_print_varspec_suffix, c_type_print_base_1): Add
+	TYPE_CODE_FIXED_POINT handling.
+	* p-typeprint.c (pascal_type_print_varspec_prefix)
+	(pascal_type_print_varspec_suffix): Likewise.
+	* typeprint.c (print_type_fixed_point): New function.
+	* typeprint.h (print_type_fixed_point): Add declaration.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* printcmd.c (print_scalar_formatted): Add fixed-point type
+	handling when options->format is set.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-valprint.c (ada_value_print_1): Add fixed-point type handling.
+	* dwarf2/read.c (get_dwarf2_rational_constant)
+	(get_dwarf2_unsigned_rational_constant, finish_fixed_point_type)
+	(has_zero_over_zero_small_attribute): New functions.
+	read_base_type, set_die_type): Add fixed-point type handling.
+	* gdb-gdb.py.in: Add fixed-point type handling.
+	* gdbtypes.c: #include "gmp-utils.h".
+	(create_range_type, set_type_code): Add fixed-point type handling.
+	(init_fixed_point_type): New function.
+	(is_integral_type, is_scalar_type): Add fixed-point type handling.
+	(print_fixed_point_type_info): New function.
+	(recursive_dump_type, copy_type_recursive): Add fixed-point type
+	handling.
+	(fixed_point_type_storage): New typedef.
+	(fixed_point_objfile_key): New static global.
+	(allocate_fixed_point_type_info, is_fixed_point_type): New functions.
+	(fixed_point_type_base_type, fixed_point_scaling_factor): New
+	functions.
+	* gdbtypes.h: #include "gmp-utils.h".
+	(enum type_code) <TYPE_SPECIFIC_FIXED_POINT>: New enum.
+	(union type_specific) <fixed_point_info>: New field.
+	(struct fixed_point_type_info): New struct.
+	(INIT_FIXED_POINT_SPECIFIC, TYPE_FIXED_POINT_INFO): New macros.
+	(init_fixed_point_type, is_fixed_point_type)
+	(fixed_point_type_base_type, fixed_point_scaling_factor)
+	(allocate_fixed_point_type_info): Add declarations.
+	* valprint.c (generic_val_print_fixed_point): New function.
+	(generic_value_print): Add fixed-point type handling.
+	* value.c (value_as_address, unpack_long): Add fixed-point type
+	handling.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* utils.h (uinteger_pow): Add declaration.
+	* utils.c (uinteger_pow): Moved here (without changes)...
+	* valarith.c (uinteger_pow): ... from here.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* gmp-utils.h,  gmp-utils.c: New file.
+	* unittests/gmp-utils-selftests.c: New file.
+	* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
+	unittests/gmp-utils-selftests.c.
+	(COMMON_SFILES) Add gmp-utils.c.
+	(HFILES_NO_SRCDIR): Add gmp-utils.h.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: Generate an error if a usable GMP library
+	could not be found.
+	* configure: Regenerate.
+
+2020-11-15  Joel Brobecker  <brobecker@adacore.com>
+
+	* configure.ac: Add support for --with-libgmp-prefix.
+	* Makefile.in (LIBGMP): New variable.
+	(CLIBS): Include $(LIBGMP).
+	* configure, config.in: Regenerate
+
+2020-11-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR cli/26879
+	* f-exp.y (COMPLETE): New token.
+	(exp): Two new rules for tab-completion.
+	(saw_name_at_eof): New static global.
+	(last_was_structop): Likewise.
+	(yylex): Set new variables, and return COMPLETE token at the end
+	of the input stream in some cases.
+
+2020-11-14  Tom Tromey  <tom@tromey.com>
+
+	* infrun.c (fetch_inferior_event): Use "bool" for should_stop.
+
+2020-11-14  Tom Tromey  <tom@tromey.com>
+
+	* opencl-lang.c (opencl_component_ref): Make "comps" const.
+
+2020-11-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* arm-tdep.c (class arm_instruction_reader) <read>: Fix comment.
+
+2020-11-13  Tom Tromey  <tom@tromey.com>
+
+	* c-lang.c (convert_ucn, convert_octal, convert_hex)
+	(convert_escape, parse_one_string): Constify.
+
+2020-11-13  Keith Seitz  <keiths@redhat.com>
+
+	https://bugzilla.redhat.com/show_bug.cgi?id=1553086
+	* elfread.c (elf_symfile_segments): Omit "Loadable section ...
+	outside of ELF segments" warning for debugin
+
+2020-11-13  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/23034
+	* elfread.c (elf_symfile_segments): Output a BFD file name
+	for the "Loadable section ... outside of ELF segments" warning.
+
+2020-11-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/26835
+	* arm-tdep.c (class arm_instruction_reader): New.
+	(target_arm_instruction_reader): New.
+	(arm_analyze_prologue): Add instruction reader parameter and use
+	it.  Use arm_expand_immediate.
+	(class target_arm_instruction_reader): Adjust.
+	(arm_skip_prologue): Adjust.
+	(arm_expand_immediate): New.
+	(arm_scan_prologue): Adjust.
+	(arm_analyze_prologue_test): New.
+	(class test_arm_instruction_reader): New.
+
+2020-11-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (fortran_argument_convert): Add declaration.  Add
+	header comment, taken from f-lang.h.  Make static.
+	* f-lang.h (f77_get_dynamic_array_length): Delete declaration.
+	(fortran_argument_convert): Delete declaration.
+
+2020-11-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-exp.y (find_primitive_type): Make parameter const.
+	* ada-lang.c (enum ada_primitive_types): Delete.
+	(ada_language::language_arch_info): Update.
+	* c-lang.c (enum c_primitive_types): Delete.
+	(c_language_arch_info): Update.
+	(enum cplus_primitive_types): Delete.
+	(cplus_language::language_arch_info): Update.
+	* d-lang.c (enum d_primitive_types): Delete.
+	(d_language::language_arch_info): Update.
+	* f-lang.c (enum f_primitive_types): Delete.
+	(f_language::language_arch_info): Update.
+	* go-lang.c (enum go_primitive_types): Delete.
+	(go_language::language_arch_info): Update.
+	* language.c (auto_or_unknown_language::language_arch_info):
+	Update.
+	(language_gdbarch_post_init): Use obstack_new, use array indexing.
+	(language_string_char_type): Add header comment, call function in
+	language_arch_info.
+	(language_bool_type): Likewise
+	(language_arch_info::bool_type): Define.
+	(language_lookup_primitive_type_1): Delete.
+	(language_lookup_primitive_type): Rewrite as a templated function
+	to call function in language_arch_info, then instantiate twice.
+	(language_arch_info::type_and_symbol::alloc_type_symbol): Define.
+	(language_arch_info::lookup_primitive_type_and_symbol): Define.
+	(language_arch_info::lookup_primitive_type): Define twice with
+	different signatures.
+	(language_arch_info::lookup_primitive_type_as_symbol): Define.
+	(language_lookup_primitive_type_as_symbol): Rewrite to call a
+	member function in language_arch_info.
+	* language.h (language_arch_info): Complete rewrite.
+	(language_lookup_primitive_type): Make templated.
+	* m2-lang.c (enum m2_primitive_types): Delete.
+	(m2_language::language_arch_info): Update.
+	* opencl-lang.c (OCL_P_TYPE): Delete.
+	(enum opencl_primitive_types): Delete.
+	(opencl_type_data): Delete.
+	(builtin_opencl_type): Delete.
+	(lookup_opencl_vector_type): Update.
+	(opencl_language::language_arch_info): Update, lots of content
+	moved from...
+	(build_opencl_types): ...here.  This function is now deleted.
+	(_initialize_opencl_language): Delete.
+	* p-lang.c (enum pascal_primitive_types): Delete.
+	(pascal_language::language_arch_info): Update.
+	* rust-lang.c (enum rust_primitive_types): Delete.
+	(rust_language::language_arch_info): Update.
+
+2020-11-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (dw2_do_instantiate_symtab): Fix call to
+	dwarf2_queue_guard.
+
+2020-11-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (dw2_do_instantiate_symtab): Fix typo in
+	comment.
+
+2020-11-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (dwarf_read_debug_printf,
+	dwarf_read_debug_printf_v): New macros, use throughout the file.
+
+2020-11-12  Shahab Vahedi  <shahab@synopsys.com>
+
+	PR tdep/27015
+	* arc-linux-tdep.c (collect_register): Populate "eret" by
+	"pc" value from the regcache when asked for "pc" value.
+
+2020-11-12  Tom Tromey  <tom@tromey.com>
+
+	PR rust/26799:
+	* symtab.c (find_symbol_at_address): Search symtabs if no psymtabs
+	exist.
+
+2020-11-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* features/Makefile (XMLTOC): Add rx.xml.
+	(FEATURE_XMLFILES): Remove rx.xml.
+	(FEATURE_CFILES rule): Pass '-single-feature' flag.
+	* features/rx.c: Regenerate.
+	* features/rx.xml: Wrap in `target` tags, and reindent.
+	* target-descriptions.c (struct maint_print_c_tdesc_options): New
+	structure.
+	(maint_print_c_tdesc_opt_def): New typedef.
+	(maint_print_c_tdesc_opt_defs): New static global.
+	(make_maint_print_c_tdesc_options_def_group): New function.
+	(maint_print_c_tdesc_cmd): Make use of command line flags, only
+	print single feature C file for target descriptions containing a
+	single feature.
+	(maint_print_c_tdesc_cmd_completer): New function.
+	(_initialize_target_descriptions): Update call to register command
+	completer, and include command line flag in help text.
+
+2020-11-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_dwarf_reg_to_regnum): Decode DWARF CSR
+	numbers.
+	* riscv-tdep.h (RISCV_DWARF_FIRST_CSR, RISCV_DWARF_LAST_CSR): New
+	enum values.
+
+2020-11-10  Tom Tromey  <tom@tromey.com>
+
+	* value.h (internalvar_name): Update.
+	* value.c (internalvar_name): Make return type const.
+
+2020-11-10  Tom Tromey  <tom@tromey.com>
+
+	* ax-gdb.c (gen_struct_elt_for_reference, gen_namespace_elt)
+	(gen_maybe_namespace_elt, gen_aggregate_elt_ref, gen_expr): Use
+	const.
+
+2020-11-10  Tom Tromey  <tom@tromey.com>
+
+	* objc-lang.h (value_nsstring): Update.
+	* objc-lang.c (value_nsstring): Make "ptr" const.
+
+2020-11-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* expprint.c (print_subexp_funcall): Increment expression position
+	after reading argument count.
+	* f-lang.c (print_subexp_f): Skip over opcode before calling
+	common function.
+	(dump_subexp_body_f): Likewise.
+
+2020-11-06  Romain Geissler  <romain.geissler@amadeus.com>
+
+	PR python/26832
+	* configure: Regenerate.
+	* configure.ac: Check for python modules ctypes instead of
+	itertools.
+
+2020-11-06  Pedro Alves  <pedro@palves.net>
+
+	* macroexp.c (struct macro_buffer): Split in two classes.  Add
+	uses adjusted.
+	(struct shared_macro_buffer): New, factored out from struct
+	macro_buffer.
+	(struct growable_macro_buffer): New, factored out from struct
+	macro_buffer.
+	(set_token, get_comment, get_identifier, get_pp_number)
+	(get_character_constant, get_string_literal, get_punctuator)
+	(get_next_token_for_substitution): Constify parameters.
+	(substitute_args): Constify locals.
+
+2020-11-05  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_cutu_die_from_dwo)
+	(cutu_reader::cutu_reader, cutu_reader::cutu_reader)
+	(build_type_psymtabs_1): Update.
+	* dwarf2/abbrev.h (struct abbrev_table): Remove objfile
+	parameter.
+	* dwarf2/abbrev.c (abbrev_table::read): Remove objfile parameter.
+	Don't read section.  Add assert.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-typeprint.c (ada_print_type): Handle __XVL fields.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-typeprint.c (ada_print_type): Handle __T types.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (add_partial_symbol, process_die):
+	Handle DW_TAG_array_type.
+	(is_type_tag_for_partial): Add "lang" parameter.
+	(load_partial_dies, new_symbol): Handle DW_TAG_array_type.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_value_slice_from_ptr): Use bit size.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (read_array_type): Only apply stride to innermost
+	array.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* gdbtypes.c (update_static_array_size): Handle bit stride.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_value_struct_elt): Resolve dynamic type.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_is_any_packed_array_type): New function.
+	(ada_evaluate_subexp) <case TERNOP_SLICE>: Use it.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (recognize_bound_expression)
+	(quirk_ada_thick_pointer): New functions.
+	(read_array_type): Call quirk_ada_thick_pointer.
+	(set_die_type): Add "skip_data_location" parameter.
+	(quirk_ada_thick_pointer): New function.
+	(process_structure_scope): Call quirk_ada_thick_pointer.
+	* ada-lang.c (ada_is_unconstrained_packed_array_type)
+	(decode_packed_array_bitsize): Handle thick pointers without
+	parallel types.
+	(ada_is_gnat_encoded_packed_array_type): Rename from
+	ada_is_packed_array_type.
+	(ada_is_constrained_packed_array_type): Update.
+	* ada-valprint.c (ada_val_print_gnat_array): Remove.
+	(ada_value_print_1): Use ada_get_decoded_value.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (recursively_update_array_bitsize): New function.
+	(decode_constrained_packed_array_type): Call it.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (to_fixed_array_type): Error if
+	decode_constrained_packed_array_type returns NULL.
+
+2020-11-04  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/leb.h (read_3_bytes): Use bfd_get_24.
+
+2020-11-02  Tom Tromey  <tromey@adacore.com>
+
+	* Makefile.in (ALL_64_TARGET_OBS): Add amd64-ravenscar-thread.o.
+	(ALLDEPFILES): Add amd64-ravenscar-thread.c.
+	(HFILES_NO_SRCDIR): Add amd64-ravenscar-thread.h.
+	* amd64-ravenscar-thread.c: New file.
+	* amd64-ravenscar-thread.h: New file.
+	* amd64-tdep.c (amd64_init_abi): Register ravenscar ops.
+	* configure.tgt (amd64_tobjs): Add ravenscar objects.
+
+2020-11-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* main.c (execute_cmdargs): New function.
+	(captured_main_1): Make use of execute_cmdargs.
+
+2020-11-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention changes to config file search path.
+	* main.c
+
+2020-11-02  Tom Tromey  <tromey@adacore.com>
+
+	* python/python.c: Consolidate two HAVE_PYTHON blocks.
+	(python_GdbModuleDef): Move earlier.  Now static.
+	(do_start_initialization): Consolidate some IS_PY3K blocks.
+
+2020-11-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* aarch64-linux-tdep.c: Fix indentation.
+	* aarch64-ravenscar-thread.c: Fix indentation.
+	* aarch64-tdep.c: Fix indentation.
+	* aarch64-tdep.h: Fix indentation.
+	* ada-lang.c: Fix indentation.
+	* ada-lang.h: Fix indentation.
+	* ada-tasks.c: Fix indentation.
+	* ada-typeprint.c: Fix indentation.
+	* ada-valprint.c: Fix indentation.
+	* ada-varobj.c: Fix indentation.
+	* addrmap.c: Fix indentation.
+	* addrmap.h: Fix indentation.
+	* agent.c: Fix indentation.
+	* aix-thread.c: Fix indentation.
+	* alpha-bsd-nat.c: Fix indentation.
+	* alpha-linux-tdep.c: Fix indentation.
+	* alpha-mdebug-tdep.c: Fix indentation.
+	* alpha-nbsd-tdep.c: Fix indentation.
+	* alpha-obsd-tdep.c: Fix indentation.
+	* alpha-tdep.c: Fix indentation.
+	* amd64-bsd-nat.c: Fix indentation.
+	* amd64-darwin-tdep.c: Fix indentation.
+	* amd64-linux-nat.c: Fix indentation.
+	* amd64-linux-tdep.c: Fix indentation.
+	* amd64-nat.c: Fix indentation.
+	* amd64-obsd-tdep.c: Fix indentation.
+	* amd64-tdep.c: Fix indentation.
+	* amd64-windows-tdep.c: Fix indentation.
+	* annotate.c: Fix indentation.
+	* arc-tdep.c: Fix indentation.
+	* arch-utils.c: Fix indentation.
+	* arch/arm-get-next-pcs.c: Fix indentation.
+	* arch/arm.c: Fix indentation.
+	* arm-linux-nat.c: Fix indentation.
+	* arm-linux-tdep.c: Fix indentation.
+	* arm-nbsd-tdep.c: Fix indentation.
+	* arm-pikeos-tdep.c: Fix indentation.
+	* arm-tdep.c: Fix indentation.
+	* arm-tdep.h: Fix indentation.
+	* arm-wince-tdep.c: Fix indentation.
+	* auto-load.c: Fix indentation.
+	* auxv.c: Fix indentation.
+	* avr-tdep.c: Fix indentation.
+	* ax-gdb.c: Fix indentation.
+	* ax-general.c: Fix indentation.
+	* bfin-linux-tdep.c: Fix indentation.
+	* block.c: Fix indentation.
+	* block.h: Fix indentation.
+	* blockframe.c: Fix indentation.
+	* bpf-tdep.c: Fix indentation.
+	* break-catch-sig.c: Fix indentation.
+	* break-catch-syscall.c: Fix indentation.
+	* break-catch-throw.c: Fix indentation.
+	* breakpoint.c: Fix indentation.
+	* breakpoint.h: Fix indentation.
+	* bsd-uthread.c: Fix indentation.
+	* btrace.c: Fix indentation.
+	* build-id.c: Fix indentation.
+	* buildsym-legacy.h: Fix indentation.
+	* buildsym.c: Fix indentation.
+	* c-typeprint.c: Fix indentation.
+	* c-valprint.c: Fix indentation.
+	* c-varobj.c: Fix indentation.
+	* charset.c: Fix indentation.
+	* cli/cli-cmds.c: Fix indentation.
+	* cli/cli-decode.c: Fix indentation.
+	* cli/cli-decode.h: Fix indentation.
+	* cli/cli-script.c: Fix indentation.
+	* cli/cli-setshow.c: Fix indentation.
+	* coff-pe-read.c: Fix indentation.
+	* coffread.c: Fix indentation.
+	* compile/compile-cplus-types.c: Fix indentation.
+	* compile/compile-object-load.c: Fix indentation.
+	* compile/compile-object-run.c: Fix indentation.
+	* completer.c: Fix indentation.
+	* corefile.c: Fix indentation.
+	* corelow.c: Fix indentation.
+	* cp-abi.h: Fix indentation.
+	* cp-namespace.c: Fix indentation.
+	* cp-support.c: Fix indentation.
+	* cp-valprint.c: Fix indentation.
+	* cris-linux-tdep.c: Fix indentation.
+	* cris-tdep.c: Fix indentation.
+	* darwin-nat-info.c: Fix indentation.
+	* darwin-nat.c: Fix indentation.
+	* darwin-nat.h: Fix indentation.
+	* dbxread.c: Fix indentation.
+	* dcache.c: Fix indentation.
+	* disasm.c: Fix indentation.
+	* dtrace-probe.c: Fix indentation.
+	* dwarf2/abbrev.c: Fix indentation.
+	* dwarf2/attribute.c: Fix indentation.
+	* dwarf2/expr.c: Fix indentation.
+	* dwarf2/frame.c: Fix indentation.
+	* dwarf2/index-cache.c: Fix indentation.
+	* dwarf2/index-write.c: Fix indentation.
+	* dwarf2/line-header.c: Fix indentation.
+	* dwarf2/loc.c: Fix indentation.
+	* dwarf2/macro.c: Fix indentation.
+	* dwarf2/read.c: Fix indentation.
+	* dwarf2/read.h: Fix indentation.
+	* elfread.c: Fix indentation.
+	* eval.c: Fix indentation.
+	* event-top.c: Fix indentation.
+	* exec.c: Fix indentation.
+	* exec.h: Fix indentation.
+	* expprint.c: Fix indentation.
+	* f-lang.c: Fix indentation.
+	* f-typeprint.c: Fix indentation.
+	* f-valprint.c: Fix indentation.
+	* fbsd-nat.c: Fix indentation.
+	* fbsd-tdep.c: Fix indentation.
+	* findvar.c: Fix indentation.
+	* fork-child.c: Fix indentation.
+	* frame-unwind.c: Fix indentation.
+	* frame-unwind.h: Fix indentation.
+	* frame.c: Fix indentation.
+	* frv-linux-tdep.c: Fix indentation.
+	* frv-tdep.c: Fix indentation.
+	* frv-tdep.h: Fix indentation.
+	* ft32-tdep.c: Fix indentation.
+	* gcore.c: Fix indentation.
+	* gdb_bfd.c: Fix indentation.
+	* gdbarch.sh: Fix indentation.
+	* gdbarch.c: Re-generate
+	* gdbarch.h: Re-generate.
+	* gdbcore.h: Fix indentation.
+	* gdbthread.h: Fix indentation.
+	* gdbtypes.c: Fix indentation.
+	* gdbtypes.h: Fix indentation.
+	* glibc-tdep.c: Fix indentation.
+	* gnu-nat.c: Fix indentation.
+	* gnu-nat.h: Fix indentation.
+	* gnu-v2-abi.c: Fix indentation.
+	* gnu-v3-abi.c: Fix indentation.
+	* go32-nat.c: Fix indentation.
+	* guile/guile-internal.h: Fix indentation.
+	* guile/scm-cmd.c: Fix indentation.
+	* guile/scm-frame.c: Fix indentation.
+	* guile/scm-iterator.c: Fix indentation.
+	* guile/scm-math.c: Fix indentation.
+	* guile/scm-ports.c: Fix indentation.
+	* guile/scm-pretty-print.c: Fix indentation.
+	* guile/scm-value.c: Fix indentation.
+	* h8300-tdep.c: Fix indentation.
+	* hppa-linux-nat.c: Fix indentation.
+	* hppa-linux-tdep.c: Fix indentation.
+	* hppa-nbsd-nat.c: Fix indentation.
+	* hppa-nbsd-tdep.c: Fix indentation.
+	* hppa-obsd-nat.c: Fix indentation.
+	* hppa-tdep.c: Fix indentation.
+	* hppa-tdep.h: Fix indentation.
+	* i386-bsd-nat.c: Fix indentation.
+	* i386-darwin-nat.c: Fix indentation.
+	* i386-darwin-tdep.c: Fix indentation.
+	* i386-dicos-tdep.c: Fix indentation.
+	* i386-gnu-nat.c: Fix indentation.
+	* i386-linux-nat.c: Fix indentation.
+	* i386-linux-tdep.c: Fix indentation.
+	* i386-nto-tdep.c: Fix indentation.
+	* i386-obsd-tdep.c: Fix indentation.
+	* i386-sol2-nat.c: Fix indentation.
+	* i386-tdep.c: Fix indentation.
+	* i386-tdep.h: Fix indentation.
+	* i386-windows-tdep.c: Fix indentation.
+	* i387-tdep.c: Fix indentation.
+	* i387-tdep.h: Fix indentation.
+	* ia64-libunwind-tdep.c: Fix indentation.
+	* ia64-libunwind-tdep.h: Fix indentation.
+	* ia64-linux-nat.c: Fix indentation.
+	* ia64-linux-tdep.c: Fix indentation.
+	* ia64-tdep.c: Fix indentation.
+	* ia64-tdep.h: Fix indentation.
+	* ia64-vms-tdep.c: Fix indentation.
+	* infcall.c: Fix indentation.
+	* infcmd.c: Fix indentation.
+	* inferior.c: Fix indentation.
+	* infrun.c: Fix indentation.
+	* iq2000-tdep.c: Fix indentation.
+	* language.c: Fix indentation.
+	* linespec.c: Fix indentation.
+	* linux-fork.c: Fix indentation.
+	* linux-nat.c: Fix indentation.
+	* linux-tdep.c: Fix indentation.
+	* linux-thread-db.c: Fix indentation.
+	* lm32-tdep.c: Fix indentation.
+	* m2-lang.c: Fix indentation.
+	* m2-typeprint.c: Fix indentation.
+	* m2-valprint.c: Fix indentation.
+	* m32c-tdep.c: Fix indentation.
+	* m32r-linux-tdep.c: Fix indentation.
+	* m32r-tdep.c: Fix indentation.
+	* m68hc11-tdep.c: Fix indentation.
+	* m68k-bsd-nat.c: Fix indentation.
+	* m68k-linux-nat.c: Fix indentation.
+	* m68k-linux-tdep.c: Fix indentation.
+	* m68k-tdep.c: Fix indentation.
+	* machoread.c: Fix indentation.
+	* macrocmd.c: Fix indentation.
+	* macroexp.c: Fix indentation.
+	* macroscope.c: Fix indentation.
+	* macrotab.c: Fix indentation.
+	* macrotab.h: Fix indentation.
+	* main.c: Fix indentation.
+	* mdebugread.c: Fix indentation.
+	* mep-tdep.c: Fix indentation.
+	* mi/mi-cmd-catch.c: Fix indentation.
+	* mi/mi-cmd-disas.c: Fix indentation.
+	* mi/mi-cmd-env.c: Fix indentation.
+	* mi/mi-cmd-stack.c: Fix indentation.
+	* mi/mi-cmd-var.c: Fix indentation.
+	* mi/mi-cmds.c: Fix indentation.
+	* mi/mi-main.c: Fix indentation.
+	* mi/mi-parse.c: Fix indentation.
+	* microblaze-tdep.c: Fix indentation.
+	* minidebug.c: Fix indentation.
+	* minsyms.c: Fix indentation.
+	* mips-linux-nat.c: Fix indentation.
+	* mips-linux-tdep.c: Fix indentation.
+	* mips-nbsd-tdep.c: Fix indentation.
+	* mips-tdep.c: Fix indentation.
+	* mn10300-linux-tdep.c: Fix indentation.
+	* mn10300-tdep.c: Fix indentation.
+	* moxie-tdep.c: Fix indentation.
+	* msp430-tdep.c: Fix indentation.
+	* namespace.h: Fix indentation.
+	* nat/fork-inferior.c: Fix indentation.
+	* nat/gdb_ptrace.h: Fix indentation.
+	* nat/linux-namespaces.c: Fix indentation.
+	* nat/linux-osdata.c: Fix indentation.
+	* nat/netbsd-nat.c: Fix indentation.
+	* nat/x86-dregs.c: Fix indentation.
+	* nbsd-nat.c: Fix indentation.
+	* nbsd-tdep.c: Fix indentation.
+	* nios2-linux-tdep.c: Fix indentation.
+	* nios2-tdep.c: Fix indentation.
+	* nto-procfs.c: Fix indentation.
+	* nto-tdep.c: Fix indentation.
+	* objfiles.c: Fix indentation.
+	* objfiles.h: Fix indentation.
+	* opencl-lang.c: Fix indentation.
+	* or1k-tdep.c: Fix indentation.
+	* osabi.c: Fix indentation.
+	* osabi.h: Fix indentation.
+	* osdata.c: Fix indentation.
+	* p-lang.c: Fix indentation.
+	* p-typeprint.c: Fix indentation.
+	* p-valprint.c: Fix indentation.
+	* parse.c: Fix indentation.
+	* ppc-linux-nat.c: Fix indentation.
+	* ppc-linux-tdep.c: Fix indentation.
+	* ppc-nbsd-nat.c: Fix indentation.
+	* ppc-nbsd-tdep.c: Fix indentation.
+	* ppc-obsd-nat.c: Fix indentation.
+	* ppc-ravenscar-thread.c: Fix indentation.
+	* ppc-sysv-tdep.c: Fix indentation.
+	* ppc64-tdep.c: Fix indentation.
+	* printcmd.c: Fix indentation.
+	* proc-api.c: Fix indentation.
+	* producer.c: Fix indentation.
+	* producer.h: Fix indentation.
+	* prologue-value.c: Fix indentation.
+	* prologue-value.h: Fix indentation.
+	* psymtab.c: Fix indentation.
+	* python/py-arch.c: Fix indentation.
+	* python/py-bpevent.c: Fix indentation.
+	* python/py-event.c: Fix indentation.
+	* python/py-event.h: Fix indentation.
+	* python/py-finishbreakpoint.c: Fix indentation.
+	* python/py-frame.c: Fix indentation.
+	* python/py-framefilter.c: Fix indentation.
+	* python/py-inferior.c: Fix indentation.
+	* python/py-infthread.c: Fix indentation.
+	* python/py-objfile.c: Fix indentation.
+	* python/py-prettyprint.c: Fix indentation.
+	* python/py-registers.c: Fix indentation.
+	* python/py-signalevent.c: Fix indentation.
+	* python/py-stopevent.c: Fix indentation.
+	* python/py-stopevent.h: Fix indentation.
+	* python/py-threadevent.c: Fix indentation.
+	* python/py-tui.c: Fix indentation.
+	* python/py-unwind.c: Fix indentation.
+	* python/py-value.c: Fix indentation.
+	* python/py-xmethods.c: Fix indentation.
+	* python/python-internal.h: Fix indentation.
+	* python/python.c: Fix indentation.
+	* ravenscar-thread.c: Fix indentation.
+	* record-btrace.c: Fix indentation.
+	* record-full.c: Fix indentation.
+	* record.c: Fix indentation.
+	* reggroups.c: Fix indentation.
+	* regset.h: Fix indentation.
+	* remote-fileio.c: Fix indentation.
+	* remote.c: Fix indentation.
+	* reverse.c: Fix indentation.
+	* riscv-linux-tdep.c: Fix indentation.
+	* riscv-ravenscar-thread.c: Fix indentation.
+	* riscv-tdep.c: Fix indentation.
+	* rl78-tdep.c: Fix indentation.
+	* rs6000-aix-tdep.c: Fix indentation.
+	* rs6000-lynx178-tdep.c: Fix indentation.
+	* rs6000-nat.c: Fix indentation.
+	* rs6000-tdep.c: Fix indentation.
+	* rust-lang.c: Fix indentation.
+	* rx-tdep.c: Fix indentation.
+	* s12z-tdep.c: Fix indentation.
+	* s390-linux-tdep.c: Fix indentation.
+	* score-tdep.c: Fix indentation.
+	* ser-base.c: Fix indentation.
+	* ser-mingw.c: Fix indentation.
+	* ser-uds.c: Fix indentation.
+	* ser-unix.c: Fix indentation.
+	* serial.c: Fix indentation.
+	* sh-linux-tdep.c: Fix indentation.
+	* sh-nbsd-tdep.c: Fix indentation.
+	* sh-tdep.c: Fix indentation.
+	* skip.c: Fix indentation.
+	* sol-thread.c: Fix indentation.
+	* solib-aix.c: Fix indentation.
+	* solib-darwin.c: Fix indentation.
+	* solib-frv.c: Fix indentation.
+	* solib-svr4.c: Fix indentation.
+	* solib.c: Fix indentation.
+	* source.c: Fix indentation.
+	* sparc-linux-tdep.c: Fix indentation.
+	* sparc-nbsd-tdep.c: Fix indentation.
+	* sparc-obsd-tdep.c: Fix indentation.
+	* sparc-ravenscar-thread.c: Fix indentation.
+	* sparc-tdep.c: Fix indentation.
+	* sparc64-linux-tdep.c: Fix indentation.
+	* sparc64-nbsd-tdep.c: Fix indentation.
+	* sparc64-obsd-tdep.c: Fix indentation.
+	* sparc64-tdep.c: Fix indentation.
+	* stabsread.c: Fix indentation.
+	* stack.c: Fix indentation.
+	* stap-probe.c: Fix indentation.
+	* stubs/ia64vms-stub.c: Fix indentation.
+	* stubs/m32r-stub.c: Fix indentation.
+	* stubs/m68k-stub.c: Fix indentation.
+	* stubs/sh-stub.c: Fix indentation.
+	* stubs/sparc-stub.c: Fix indentation.
+	* symfile-mem.c: Fix indentation.
+	* symfile.c: Fix indentation.
+	* symfile.h: Fix indentation.
+	* symmisc.c: Fix indentation.
+	* symtab.c: Fix indentation.
+	* symtab.h: Fix indentation.
+	* target-float.c: Fix indentation.
+	* target.c: Fix indentation.
+	* target.h: Fix indentation.
+	* tic6x-tdep.c: Fix indentation.
+	* tilegx-linux-tdep.c: Fix indentation.
+	* tilegx-tdep.c: Fix indentation.
+	* top.c: Fix indentation.
+	* tracefile-tfile.c: Fix indentation.
+	* tracepoint.c: Fix indentation.
+	* tui/tui-disasm.c: Fix indentation.
+	* tui/tui-io.c: Fix indentation.
+	* tui/tui-regs.c: Fix indentation.
+	* tui/tui-stack.c: Fix indentation.
+	* tui/tui-win.c: Fix indentation.
+	* tui/tui-winsource.c: Fix indentation.
+	* tui/tui.c: Fix indentation.
+	* typeprint.c: Fix indentation.
+	* ui-out.h: Fix indentation.
+	* unittests/copy_bitwise-selftests.c: Fix indentation.
+	* unittests/memory-map-selftests.c: Fix indentation.
+	* utils.c: Fix indentation.
+	* v850-tdep.c: Fix indentation.
+	* valarith.c: Fix indentation.
+	* valops.c: Fix indentation.
+	* valprint.c: Fix indentation.
+	* valprint.h: Fix indentation.
+	* value.c: Fix indentation.
+	* value.h: Fix indentation.
+	* varobj.c: Fix indentation.
+	* vax-tdep.c: Fix indentation.
+	* windows-nat.c: Fix indentation.
+	* windows-tdep.c: Fix indentation.
+	* xcoffread.c: Fix indentation.
+	* xml-syscall.c: Fix indentation.
+	* xml-tdesc.c: Fix indentation.
+	* xstormy16-tdep.c: Fix indentation.
+	* xtensa-config.c: Fix indentation.
+	* xtensa-linux-nat.c: Fix indentation.
+	* xtensa-linux-tdep.c: Fix indentation.
+	* xtensa-tdep.c: Fix indentation.
+
+2020-11-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Craig Blackmore   <craig.blackmore@embecosm.com>
+
+	* riscv-tdep.c (riscv_frame_cache): Read the frame base register
+	as an unsigned value.
+
+2020-11-01  Tom Tromey  <tom@tromey.com>
+
+	* dbxread.c (dbx_end_psymtab): Update.
+	* dwarf2/read.c (process_psymtab_comp_unit_reader)
+	(build_type_psymtabs_reader): Update.
+	* xcoffread.c (xcoff_end_psymtab): Update.
+	* ctfread.c (scan_partial_symbols): Update.
+	* psymtab.c (sort_pst_symbols): Remove.
+	(partial_symtab::end): Rename from end_psymtab_common.  Inline
+	sort_pst_symbols.
+	* psympriv.h (struct partial_symtab) <end>: New method.
+	(end_psymtab_common): Don't declare.
+
+2020-11-01  Tom Tromey  <tom@tromey.com>
+
+	* symmisc.c (count_psyms): New function.
+	(print_objfile_statistics): Use it.
+	* psymtab.c (append_psymbol_to_list): Remove.
+	(partial_symtab::add_psymbol): Inline append_psymbol_to_list.
+	* objfiles.h (struct objstats) <n_psyms>: Remove.
+
+2020-11-01  Tom Tromey  <tom@tromey.com>
+
+	* dbxread.c (dbx_end_psymtab): Update.
+	* dwarf2/read.c (process_psymtab_comp_unit_reader): Update.
+	(build_type_psymtabs_reader): Update.
+	* xcoffread.c (xcoff_end_psymtab): Update.
+	* ctfread.c (scan_partial_symbols): Update.
+	* psympriv.h (end_psymtab_common): Update.
+	* psymtab.c (end_psymtab_common): Remove objfile parameter.
+	(sort_pst_symbols): Likewise.
+
+2020-11-01  Tom Tromey  <tom@tromey.com>
+
+	* dbxread.c (dbx_symfile_read): Update.
+	* dwarf2/read.c (dwarf2_build_psymtabs): Update.
+	* xcoffread.c (xcoff_initial_scan): Update.
+	* psympriv.h (init_psymbol_list): Don't declare.
+	* psymtab.c (init_psymbol_list): Remove.
+
+2020-11-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-lang.c (gnat_encoded_fixed_point_type_info): Renames
+	gnat_encoded_fixed_type_info.  Update all callers.
+
+2020-11-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-lang.c (cast_from_gnat_encoded_fixed_point_type): Split
+	line too long.
+
+2020-11-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-lang.c (cast_from_gnat_encoded_fixed_point_type): Renames
+	cast_from_fixed.  Update all callers.
+	(cast_to_gnat_encoded_fixed_point_type): Renames cast_to_fixed.
+	Update all callers.
+	(gnat_encoded_fixed_point_scaling_factor): Renames ada_scaling_factor.
+	Update all callers.
+	* ada-lang.h (gnat_encoded_fixed_point_scaling_factor): Renames
+	ada_scaling_factor.
+	* ada-typeprint.c: Replace call to ada_scaling_factor by call
+	to print_gnat_encoded_fixed_point_type.
+	* ada-valprint.c: Likewise.
+
+2020-10-31  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* infrun.h (infrun_debug_printf): Add check of debug_infrun flag.
+	(debug_prefixed_printf): Add check of debug_displaced flag.
+	* linux-nat.c (linux_nat_debug_printf): Add check of
+	debug_linux_nat flag.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (infrun_debug_printf_1): Remove.
+	(displaced_debug_printf_1): Remove.
+	(stop_all_threads): Use debug_prefixed_printf.
+	* infrun.h (infrun_debug_printf_1): Remove.
+	(infrun_debug_printf): Use debug_prefixed_printf.
+	(displaced_debug_printf_1): Remove.
+	(displaced_debug_printf): Use debug_prefixed_printf.
+	* linux-nat.c (linux_nat_debug_printf_1): Remove.
+	(linux_nat_debug_printf): Use debug_prefixed_printf.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* configure: Re-generate.
+	* sanitize.m4: Replace AC_TRY_LINK with AC_LINK_IFELSE +
+	AC_LANG_PROGRAM.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* configure: Re-generate.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* configure: Re-generate.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* configure: Re-generate.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* configure: Re-generate.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* acinclude.m4: Modernize.
+	* configure: Re-generate.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* configure.ac: Modernize.
+	* configure: Re-generate.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* acinclude.m4 (AM_PROG_CC_STDC): Remove.
+	* configure: Re-generate.
+	* configure.ac: Remove AM_PROG_CC_STDC.
+
+2020-10-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* configure.ac: Use AC_CANONICAL_{BUILD,HOST,TARGET} instead of
+	AC_CANONICAL_SYSTEM.
+	* configure: Re-generate.
+
+2020-10-30  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.h (displaced_debug_printf): New macro.  Replace
+	displaced debug prints throughout to use it.
+	(displaced_debug_printf_1): New declaration.
+	(displaced_step_dump_bytes): Return string, remove ui_file
+	parameter, update all callers.
+	* infrun.c (displaced_debug_printf_1): New function.
+	(displaced_step_dump_bytes): Return string, remove ui_file
+	parameter
+
+2020-10-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* rs6000-tdep.c (rs6000_dwarf2_reg_to_regnum): Return -1 for
+
+2020-10-30  Tom Tromey  <tromey@adacore.com>
+
+	* Makefile.in (stamp-init): Depend on config.status.
+
+2020-10-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infrun.c (fetch_inferior_event): Temporarily disable pagination.
+
+2020-10-30  Pedro Alves  <pedro@palves.net>
+
+	* thread.c (lookup_selected_frame): Move ...
+	* frame.c (lookup_selected_frame): ... here.
+
+2020-10-30  Pedro Alves  <pedro@palves.net>
+
+	* blockframe.c (block_innermost_frame): Use get_selected_frame.
+	* frame.c
+	(scoped_restore_selected_frame::scoped_restore_selected_frame):
+	Use save_selected_frame.  Save language as well.
+	(scoped_restore_selected_frame::~scoped_restore_selected_frame):
+	Use restore_selected_frame, and restore language as well.
+	(selected_frame_id, selected_frame_level): New.
+	(selected_frame): Update comments.
+	(save_selected_frame, restore_selected_frame): New.
+	(get_selected_frame): Use lookup_selected_frame.
+	(get_selected_frame_if_set): Delete.
+	(select_frame): Record selected_frame_level and selected_frame_id.
+	* frame.h (scoped_restore_selected_frame) <m_level, m_lang>: New
+	fields.
+	(get_selected_frame): Make 'message' parameter optional.
+	(get_selected_frame_if_set): Delete declaration.
+	(select_frame): Update comments.
+	(save_selected_frame, restore_selected_frame)
+	(lookup_selected_frame): Declare.
+	* gdbthread.h (scoped_restore_current_thread) <m_lang>: New field.
+	* infrun.c (struct infcall_control_state) <selected_frame_level>:
+	New field.
+	(save_infcall_control_state): Use save_selected_frame.
+	(restore_selected_frame): Delete.
+	(restore_infcall_control_state): Use restore_selected_frame.
+	* stack.c (select_frame_command_core, frame_command_core): Use
+	get_selected_frame.
+	* thread.c (restore_selected_frame): Rename to ...
+	(lookup_selected_frame): ... this and make extern.  Select the
+	current frame if the frame level is -1.
+	(scoped_restore_current_thread::restore): Also restore the
+	language.
+	(scoped_restore_current_thread::~scoped_restore_current_thread):
+	Don't try/catch.
+	(scoped_restore_current_thread::scoped_restore_current_thread):
+	Save the language as well.  Use save_selected_frame.
+
+2020-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh (displaced_step_hw_singlestep): Adjust
+	documentation.
+	* gdbarch.h: Re-generate.
+
+2020-10-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh (displaced_step_hw_singlestep): Remove closure
+	parameter.
+	* aarch64-tdep.c (aarch64_displaced_step_hw_singlestep):
+	Likewise.
+	* aarch64-tdep.h (aarch64_displaced_step_hw_singlestep):
+	Likewise.
+	* arch-utils.c (default_displaced_step_hw_singlestep):
+	Likewise.
+	* arch-utils.h (default_displaced_step_hw_singlestep):
+	Likewise.
+	* rs6000-tdep.c (ppc_displaced_step_hw_singlestep):
+	Likewise.
+	* s390-tdep.c (s390_displaced_step_hw_singlestep):
+	Likewise.
+	* gdbarch.c: Re-generate.
+	* gdbarch.h: Re-generate.
+	* infrun.c (resume_1): Adjust.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* progspace.c (program_space::~program_space): Don't call
+	exec_close.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* exec.c (exec_target::close): Don't change current program
+	space.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (add_symbol_file_command): Update.
+	* exec.c (program_space::add_target_sections): Rename.
+	* symfile-mem.c (symbol_file_add_from_memory): Update.
+	* progspace.h (struct program_space) <add_target_sections>:
+	Declare new overload.
+	* exec.h (add_target_sections_of_objfile): Don't declare.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* solib.c (solib_map_sections): Update.
+	* exec.c (program_space::add_target_sections): Now a method.
+	(exec_file_attach): Update.
+	* exec.h (add_target_sections): Don't declare.
+	* progspace.h (struct program_space) <add_target_sections>:
+	Declare.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* progspace.h (struct program_space) <remove_target_sections>:
+	Declare.
+	* exec.c (program_space::remove_target_sections): Now a method.
+	* exec.h (remove_target_sections): Don't declare.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* inferior.c (delete_inferior): Update.
+	* progspace.c (program_space::empty): Rename from
+	program_space_empty_p.  Return bool.
+	* progspace.h (struct program_space) <empty>: New method.
+	(program_space_empty_p): Don't declare.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* progspace.c (program_space::~program_space): Don't call
+	clear_program_space_solib_cache.
+	(program_space::clear_solib_cache): Rename from
+	clear_solib_cache.
+	* solib.c (handle_solib_event): Update.
+	* progspace.h (struct program_space) <clear_solib_cache>: New
+	method.
+	(clear_program_space_solib_cache): Don't declare.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* windows-tdep.c (windows_solib_create_inferior_hook): Update.
+	* target.c (info_target_command): Update.
+	* symfile.c (syms_from_objfile_1, finish_new_objfile)
+	(symbol_file_clear, reread_symbols): Update.
+	* symfile-mem.c (add_symbol_file_from_memory_command): Update.
+	* stabsread.c (scan_file_globals): Update.
+	* solib.c (update_solib_list): Update.
+	* solib-svr4.c (elf_locate_base, open_symbol_file_object)
+	(svr4_fetch_objfile_link_map, enable_break)
+	(svr4_relocate_main_executable)
+	(svr4_iterate_over_objfiles_in_search_order): Update.
+	* solib-frv.c (lm_base, enable_break)
+	(frv_relocate_main_executable): Update.
+	(main_got, frv_fdpic_find_canonical_descriptor): Update.
+	(frv_fetch_objfile_link_map): Update.
+	* solib-dsbt.c (lm_base, dsbt_relocate_main_executable): Update.
+	* solib-darwin.c (darwin_solib_create_inferior_hook): Update.
+	* solib-aix.c (solib_aix_solib_create_inferior_hook): Update.
+	* remote.c (remote_target::get_offsets): Update.
+	(remote_target::start_remote)
+	(extended_remote_target::post_attach): Update.
+	* objfiles.c (entry_point_address_query): Update.
+	* nto-procfs.c (nto_procfs_target::create_inferior): Update.
+	* minsyms.c (get_symbol_leading_char): Update.
+	* frame.c (inside_main_func): Update.
+	* progspace.h (symfile_objfile): Remove macro.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* exec.c (exec_file_attach): Update.
+	* progspace.c (program_space::exec_close): Update.
+	* progspace.h (struct program_space) <ebfd>: Now a
+	gdb_bfd_ref_ptr.
+	<set_exec_bfd>: Change argument type.
+	<exec_bfd>: Update.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* windows-tdep.c (windows_solib_create_inferior_hook): Update.
+	* symfile.c (reread_symbols): Update.
+	* symfile-mem.c (add_symbol_file_from_memory_command)
+	(add_vsyscall_page): Update.
+	* source-cache.c (source_cache::get_plain_source_lines): Update.
+	* solib-svr4.c (find_program_interpreter, elf_locate_base)
+	(svr4_current_sos_direct, svr4_exec_displacement)
+	(svr4_relocate_main_executable): Update.
+	(svr4_iterate_over_objfiles_in_search_order): Update.
+	* solib-frv.c (enable_break2, enable_break): Update.
+	* solib-dsbt.c (lm_base, enable_break): Update.
+	* solib-darwin.c (find_program_interpreter)
+	(darwin_solib_create_inferior_hook): Update.
+	* sol-thread.c (rw_common, ps_pdmodel): Update.
+	* rs6000-nat.c (rs6000_nat_target::create_inferior): Update.
+	* remote.c (compare_sections_command)
+	(remote_target::trace_set_readonly_regions): Update.
+	* remote-sim.c (get_sim_inferior_data)
+	(gdbsim_target::create_inferior, gdbsim_target::create_inferior): Update.
+	(gdbsim_target_open, gdbsim_target::files_info): Update.
+	* exec.h (exec_bfd): Remove macro.
+	* progspace.c (initialize_progspace): Update.
+	* proc-service.c (ps_addr_to_core_addr, core_addr_to_ps_addr):
+	Update.
+	* nto-procfs.c (nto_procfs_target::post_attach)
+	(nto_procfs_target::create_inferior): Update.
+	* maint.c (maintenance_info_sections): Update.
+	* linux-thread-db.c (thread_db_target::get_thread_local_address):
+	Update.
+	* infcmd.c (post_create_inferior): Update.
+	* gcore.c (default_gcore_arch, default_gcore_target): Update.
+	(objfile_find_memory_regions): Update.
+	* exec.c (validate_exec_file, exec_file_attach)
+	(exec_read_partial_read_only, print_section_info): Update.
+	* corelow.c (core_target_open): Update.
+	* corefile.c (reopen_exec_file, validate_files): Update.
+	* arm-tdep.c (gdb_print_insn_arm): Update.
+	* arch-utils.c (gdbarch_update_p, default_print_insn): Update.
+	* progspace.h (struct program_space) <exec_bfd, set_exec_bfd>: New
+	methods.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* progspace.h (current_target_sections): Remove macro.
+	* solib-svr4.c (scan_dyntag): Update.
+	* solib-dsbt.c (scan_dyntag): Update.
+	* exec.c (exec_target::close): Update.
+	(add_target_sections, add_target_sections_of_objfile)
+	(remove_target_sections, exec_target::get_section_table)
+	(exec_target::files_info, set_section_command)
+	(exec_set_section_address, exec_target::has_memory)
+	(exec_target::has_memory): Update.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* source-cache.c (source_cache::get_plain_source_lines): Use
+	current_program_space.
+	* corefile.c (reopen_exec_file): Use current_program_space.
+	* exec.c (exec_file_attach): Use current_program_space.
+	* exec.h (exec_bfd_mtime): Remove.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* gcore.c (default_gcore_mach): Remove.
+	(create_gcore_bfd): Update.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* progspace.c (program_space::exec_close): New method, from
+	exec_close in exec.c.
+	* exec.c (exec_close): Move to progspace.c.
+	(exec_target::close, exec_file_attach): Update.
+	* progspace.h (struct program_space) <exec_close>: Declare
+	method.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* progspace.h (struct program_space) <exec_filename>: Rename from
+	pspace_exec_filename.  Now a unique_xmalloc_ptr.
+	* inferior.c (print_selected_inferior): Update.
+	(print_inferior): Update.
+	* mi/mi-main.c (print_one_inferior): Update.
+	* exec.h (exec_filename): Remove macro.
+	* corefile.c (get_exec_file): Update.
+	* exec.c (exec_close): Update.
+	(exec_file_attach): Update.
+	* progspace.c (clone_program_space): Update.
+	(print_program_space): Update.
+
+2020-10-29  Tom Tromey  <tom@tromey.com>
+
+	* target-section.h (struct target_section): Add constructor.
+	* exec.c (build_section_table, add_target_sections_of_objfile):
+	Update.
+	* corelow.c (core_target::build_file_mappings): Update.
+
+2020-10-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	PR gdb/19318
+	* inferior.c (detach_inferior_command): Restore the current thread.
+	(kill_inferior_command): Ditto.
+
+2020-10-28  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26772
+	* symtab.c (find_pc_sect_compunit_symtab): In case there's an address
+	map, check it in the "best match" loop.
+
+2020-10-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* m32c-tdep.c: Remove unused includes.
+
+2020-10-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* xtensa-tdep.c: Remove includes.
+
+2020-10-27  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.c (struct condition_command_opts): New struct.
+	(condition_command_option_defs): New static global.
+	(make_condition_command_options_def_group): New function.
+	(condition_completer): Update to consider the '-force' flag.
+	(condition_command): Use gdb::option for the '-force' flag.
+
+2020-10-27  Tom de Vries  <tdevries@suse.de>
+
+	* symtab.c (find_pc_sect_compunit_symtab): Include STATIC_BLOCK
+	symbols in section check.
+
+2020-10-27  Tom de Vries  <tdevries@suse.de>
+
+	* symtab.c (find_pc_sect_compunit_symtab): Use early continue.
+
+2020-10-27  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.h (set_breakpoint_condition): Add a new bool parameter.
+	* breakpoint.c: Update the help text of the 'condition' and 'break'
+	commands.
+	(set_breakpoint_condition): Take a new bool parameter
+	to control whether condition definition should be forced even when
+	the condition expression is invalid in all of the current locations.
+	(condition_command): Update the call to 'set_breakpoint_condition'.
+	(find_condition_and_thread): Take the "-force-condition" flag into
+	account.
+	* linespec.c (linespec_keywords): Add "-force-condition" as an
+	element.
+	(FORCE_KEYWORD_INDEX): New #define.
+	(linespec_lexer_lex_keyword): Update to consider "-force-condition"
+	as a keyword.
+	* ada-lang.c (create_ada_exception_catchpoint): Ditto.
+	* guile/scm-breakpoint.c (gdbscm_set_breakpoint_condition_x): Ditto.
+	* python/py-breakpoint.c (bppy_set_condition): Ditto.
+	* NEWS: Mention the changes to the 'break' and 'condition' commands.
+
+2020-10-27  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.h (class bp_location) <disabled_by_cond>: New field.
+	* breakpoint.c (set_breakpoint_location_condition): New function.
+	(set_breakpoint_condition): Disable a breakpoint location if parsing
+	the condition string gives an error.
+	(should_be_inserted): Update to consider the 'disabled_by_cond' field.
+	(build_target_condition_list): Ditto.
+	(build_target_command_list): Ditto.
+	(build_bpstat_chain): Ditto.
+	(print_one_breakpoint_location): Ditto.
+	(print_one_breakpoint): Ditto.
+	(breakpoint_1): Ditto.
+	(bp_location::bp_location): Ditto.
+	(locations_are_equal): Ditto.
+	(update_breakpoint_locations): Ditto.
+	(enable_disable_bp_num_loc): Ditto.
+	(init_breakpoint_sal): Use set_breakpoint_location_condition.
+	(find_condition_and_thread_for_sals): New static function.
+	(create_breakpoint): Call find_condition_and_thread_for_sals.
+	(location_to_sals): Call find_condition_and_thread_for_sals instead
+	of find_condition_and_thread.
+
+2020-10-26  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/read.c (process_full_comp_unit): Call
+	dwarf2_find_base_address.
+
+2020-10-26  Tom Tromey  <tromey@adacore.com>
+
+	* gdbtypes.c (create_range_type): Revert previous patch.  Add
+	comment.
+
+2020-10-26  Pedro Alves  <pedro@palves.net>
+
+	* nat/linux-waitpid.c: Include "gdbsupport/eintr.h".
+	(my_waitpid): Use gdb::handle_eintr.
+
+2020-10-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* acinclude.m4: Update ptrace.m4 path.
+	* ptrace.m4: Moved to gdbsupport.
+
+2020-10-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* symfile-mem.c (add_vsyscall_page): Use inferior parameter
+	instead of target_gdbarch.
+
+2020-10-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (jit_reader_load_command): Pass current inferior.
+	(jit_inferior_init): Change parameter type to inferior, use it.
+	(jit_inferior_created): Remove.
+	(jit_inferior_created_hook): Pass inferior parameter down.
+	(_initialize_jit): Use jit_inferior_created_hook instead of
+	jit_inferior_created.
+	* jit.h (jit_inferior_created_hook): Add inferior parameter.
+	* infrun.c (follow_exec): Pass inferior to
+	jit_inferior_created_hook.
+
+2020-10-24  Simon Marchi  <simon.marchi@efficios.com>
+
+	* linux-thread-db.c (check_pid_namespace_match): Add inferior
+	parameter and use it.
+	(thread_db_inferior_created): Pass inferior argument.
+
+2020-10-24  Simon Marchi  <simon.marchi@efficios.com>
+
+	* aix-thread.c (aix_thread_inferior_created): Add inferior
+	parameter.
+	* bsd-uthread.c (bsd_uthread_inferior_created): Likewise.
+	* dummy-frame.c (cleanup_dummy_frames): Likewise.
+	* jit.c (jit_inferior_created): Likewise.
+	* linux-thread-db.c (thread_db_inferior_created): Likewise.
+	* m68k-linux-tdep.c (m68k_linux_inferior_created): Likewise.
+	* observable.h (inferior_created): Likewise.
+	* ravenscar-thread.c (ravenscar_inferior_created): Likewise.
+	* symfile-mem.c (add_vsyscall_page): Likewise.
+	* infcmd.c (post_create_inferior): Pass inferior argument.
+
+2020-10-24  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 10.1 released.
+
+2020-10-23  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-typeprint.c (ada_print_type): Remove superfluous second call
+	to ada_check_typedef.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (f_parse): Rename to...
+	(f_language::parser): ...this.
+	* f-lang.c (f_get_encoding): Rename to...
+	(f_language::get_encoding): ...this.
+	(f_op_print_tab): Rename to...
+	(f_language::op_print_tab): ...this.
+	(exp_descriptor_f): Rename to...
+	(f_language::exp_descriptor_tab): ...this.
+	(class f_language): Moved to f-lang.h.
+	(f_language::language_arch_info): New function, moved out of class
+	declaration.
+	(f_language::search_name_hash): Likewise.
+	(f_language::lookup_symbol_nonlocal): Likewise.
+	(f_language::get_symbol_name_matcher_inner): Likewise.
+	* f-lang.h: Add 'valprint.h' include.
+	(class f_language): Moved here from f-lang.c.
+	* f-typeprint.c (f_type_print_args): Delete commented out
+	declaration.
+	(f_print_typedef): Rename to...
+	(f_language::print_typedef): ...this.
+	(f_print_type): Rename to...
+	(f_language::print_type): ...this.
+	(f_type_print_varspec_prefix): Delete declaration and rename to...
+	(f_language::f_type_print_varspec_prefix): ...this.
+	(f_type_print_varspec_suffix): Delete declaration and rename to...
+	(f_language::f_type_print_varspec_suffix): ...this.
+	(f_type_print_base): Delete declaration and rename to...
+	(f_language::f_type_print_base): ...this.
+	* f-valprint.c (f_value_print_inner): Rename to...
+	(f_language::value_print_inner): ...this.
+	* parse.c: Delete 'f-lang.h' include.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* language.h (language_defn::print_type): Add variable names in
+	declaration, and update header comment.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language::demangle): Rename to...
+	(ada_language::demangle_symbol): ...this.
+	* c-lang.c (cplus_language::demangle): Rename to...
+	(cplus_language::demangle_symbol): ...this.
+	* d-lang.c (d_language::demangle): Rename to...
+	(d_language::demangle_symbol): ...this.
+	* f-lang.c (f_language::demangle): Rename to...
+	(f_language::demangle_symbol): ...this.
+	* go-lang.c (go_language::demangle): Rename to...
+	(go_language::demangle_symbol): ...this.
+	* language.c (language_demangle): Update call to demangle_symbol.
+	(auto_or_unknown_language::demangle): Rename to...
+	(auto_or_unknown_language::demangle_symbol): ...this.
+	* language.h (language_defn::demangle): Rename to...
+	(language_defn::demangle_symbol): ...this.
+	* objc-lang.c (objc_language::demangle): Rename to...
+	(objc_language::demangle_symbol): ...this.
+	* rust-lang.c (rust_language::demangle): Rename to...
+	(rust_language::demangle_symbol): ...this.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* language.h (LA_ITERATE_OVER_SYMBOLS): Delete.
+	(iterate_over_file_blocks): Replace use of macro with the macros
+	definition.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* language.h (LA_PRINT_ARRAY_INDEX): Delete.
+	* valprint.c (maybe_print_array_index): Replace use of macro with
+	the macros definition.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language::print_array_index): Call value_print
+	directly.
+	* language.c (language_defn::print_array_index): Likewise.
+	* language.h (LA_VALUE_PRINT): Delete.
+	* valprint.c (value_print): Call value_print on the
+	current_language directly.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* language.h (LA_PRINT_TYPEDEF): Delete.
+	* typeprint.c (typedef_print): Call print_typedef directly on the
+	current_language object.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* m2-exp.y (m2_parse): Rename to...
+	(m2_language::parser): ...this.  Update function signature.
+	* m2-lang.c (m2_printchar): Renamed to m2_language::printchar.
+	(m2_op_print): Rename to...
+	(m2_language::op_print_tab): ...this, and make const.
+	(exp_descriptor_modula2): Rename to...
+	(m2_language::exp_descriptor_modula2): ...this.
+	(class m2_language): Move to m2-lang.h.
+	(m2_language::language_arch_info): New function, moved out of
+	class declaration.
+	(m2_language::printchar): New function, body from m2_printchar.
+	(m2_language::printstr): New function, moved out of class
+	declaration.
+	(m2_language::emitchar): Likewise.
+	* m2-lang.h (m2_parse): Delete declaration.
+	(m2_print_typedef): Delete declaration.
+	(m2_value_print_inner): Delete declaration.
+	(class m2_language): Class declaration moved from m2-lang.c,
+	larger functions are left in m2-lang.c.
+	* m2-typeprint.c (m2_print_typedef): Rename to...
+	(m2_language::print_typedef): ...this, and update function
+	signature.
+	* m2-valprint.c (m2_value_print_inner): Rename to...
+	(m2_language::value_print_inner): ...this, replace use of
+	LA_PRINT_STRING with a direct call to printstr member function,
+	and update recursive call.
+
+2020-10-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* language.c (default_is_string_type_p): Delete, implementation
+	moved into auto_or_unknown_language::is_string_type_p.
+	(unk_op_print_tab): Moved into
+	auto_or_unknown_language::opcode_print_table.
+	(unknown_language_arch_info): Delete, implementation moved into
+	auto_or_unknown_language::language_arch_info.
+	(class auto_or_unknown_language): New class, member functions
+	copied from unknown_language class, with some updates.
+	(class unknown_language): Most member functions moved into
+	auto_or_unknown_language class.  Inherit from
+	auto_or_unknown_language class.
+	(class auto_language): Inherit from auto_or_unknown_language.
+	Delete most member functions.
+
+2020-10-22  Hannes Domani  <ssbssa@yahoo.de>
+
+	* stabsread.c (read_member_functions): Remove gdb_assert.
+
+2020-10-22  Hannes Domani  <ssbssa@yahoo.de>
+
+	* gdbtypes.c (init_complex_type): Check target type name.
+
+2020-10-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target-debug.h (target_debug_print_struct_target_ops_p):
+	Remove.
+	(target_debug_print_async_callback_ftype_p): Remove.
+	(target_debug_print_struct_trace_state_variable_p): Remove.
+	(target_debug_print_struct_traceframe_info_p): Remove.
+	(target_debug_print_VEC__btrace_block_s__pp): Remove.
+	(target_debug_print_enum_btrace_format): Remove.
+	(target_debug_print_enum_info_proc_what): Remove.
+	(target_debug_print_thread_info_pp): Remove.
+
+2020-10-22  Simon Marchi  <simon.marchi@efficios.com>
+
+	* target.h (struct target_ops) <make_corefile_notes>:
+	Change return type to unique pointer.
+	* target.c (dummy_make_corefile_notes): Likewise.
+	* exec.c (struct exec_target) <make_corefile_notes>:
+	Likewise.
+	(exec_target::make_corefile_notes): Likewise.
+	* procfs.c (class procfs_target) <make_corefile_notes>:
+	Likewise.
+	(procfs_do_thread_registers): Adjust to unique pointer.
+	(struct procfs_corefile_thread_data): Add constructor.
+	<note_data>: Change type to unique pointer.
+	(procfs_corefile_thread_callback): Adjust to unique pointer.
+	(procfs_target::make_corefile_notes): Change return type to
+	unique pointer.
+	* target-delegates.c: Re-generate.
+	* gcore.c (write_gcore_file_1): Adjust.
+	* target-debug.h (target_debug_print_gdb_unique_xmalloc_ptr_char):
+	New.
+
+2020-10-22  Tom de Vries  <tdevries@suse.de>
+
+	* block.c (find_block_in_blockvector): Make sure the returned block
+	contains pc.
+
+2020-10-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	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.
+
+2020-10-22  Luis Machado  <luis.machado@linaro.org>
+
+	* corelow.c (core_target::xfer_partial): Also check for an empty
+	m_core_unavailable_mappings vector.
+
+2020-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* expprint.c (dump_subexp_body_standard): Print RANGE_HAS_STRIDE.
+	* expression.h (enum range_type): Add RANGE_HAS_STRIDE.
+	* f-exp.y (arglist): Allow for a series of subranges.
+	(subrange): Add cases for subranges with strides.
+	* f-lang.c (value_f90_subarray): Catch use of array strides and
+	throw an error.
+	* parse.c (operator_length_standard): Handle RANGE_HAS_STRIDE.
+
+2020-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* expprint.c (print_subexp_standard): Change enum range_type to
+	range_flag and rename variables to match.
+	(dump_subexp_body_standard): Likewise.
+	* expression.h (enum range_type): Rename to...
+	(enum range_flag): ...this.
+	(range_types): Rename to...
+	(range_flags): ...this.
+	* f-lang.c (value_f90_subarray): Change enum range_type to
+	range_flag and rename variables to match.
+	* parse.c (operator_length_standard): Likewise.
+	* rust-exp.y (rust_parser::convert_ast_to_expression): Change enum
+	range_type to range_flag.
+	* rust-lang.c (rust_evaluate_funcall): Likewise.
+	(rust_range): Likewise.
+	(rust_compute_range): Likewise.
+	(rust_subscript): Likewise.
+
+2020-10-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* expprint.c (print_subexp_standard): Update to reflect changes to
+	enum range_type.
+	(dump_subexp_body_standard): Likewise.
+	* expression.h (enum range_type): Convert to a bit field enum, and
+	make the enum unsigned.
+	* f-exp.y (subrange): Update to reflect changes to enum
+	range_type.
+	* f-lang.c (value_f90_subarray): Likewise.
+	* parse.c (operator_length_standard): Likewise.
+	* rust-exp.y (rust_parser::convert_ast_to_expression): Likewise.
+	* rust-lang.c (rust_range): Likewise.
+	(rust_compute_range): Likewise.
+	(rust_subscript): Likewise.
+
+2020-10-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (displaced_step_in_progress_thread): Fix comment.
+	(displaced_step_in_progress): Fix comment.
+
+2020-10-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh (make_corefile_notes): Return unique pointer.
+	* gdbarch.c: Re-generate.
+	* gdbarch.h: Re-generate.
+	* gcore.c (write_gcore_file_1): Adjust.
+	* fbsd-tdep.c (struct fbsd_collect_regset_section_cb_data): Add
+	constructor.
+	<note_data>: Change type to unique pointer.
+	<abort_iteration>: Change type to bool.
+	(fbsd_collect_regset_section_cb): Adjust to unique pointer.
+	(fbsd_collect_thread_registers): Return void, adjust.
+	(struct fbsd_corefile_thread_data): Add construtor.
+	<note_data>: Change type to unique pointer.
+	(fbsd_corefile_thread): Adjust.
+	(fbsd_make_corefile_notes): Return unique pointer, adjust.
+	* linux-tdep.c (linux_make_mappings_corefile_notes): Change type
+	to unique pointer, adjust.
+	(struct linux_collect_regset_section_cb_data): Add constructor.
+	<note_data>: Change type to unique pointer.
+	<abort_iteration>: Change type to bool.
+	(linux_collect_thread_registers): Return void, adjust.
+	(struct linux_corefile_thread_data): Add constructor.
+	<note_data>: Change type to unique pointer.
+	(linux_corefile_thread): Adjust.
+	(linux_make_corefile_notes): Return unique pointer, adjust.
+
+2020-10-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh (displaced_step_hw_singlestep): Return bool.
+	* gdbarch.c: Re-generate.
+	* gdbarch.h: Re-generate.
+	* aarch64-tdep.c (aarch64_displaced_step_hw_singlestep): Return
+	bool.
+	* aarch64-tdep.h (aarch64_displaced_step_hw_singlestep):
+	Likewise.
+	* arch-utils.h (default_displaced_step_hw_singlestep): Likewise.
+	* arch-utils.c (default_displaced_step_hw_singlestep): Likewise.
+	* rs6000-tdep.c (ppc_displaced_step_hw_singlestep): Likewise.
+	* s390-tdep.c (s390_displaced_step_hw_singlestep): Likewise.
+
+2020-10-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh: Make generated predicates return bool.
+	* gdbarch.c: Re-generate.
+	* gdbarch.h: Re-generate.
+
+2020-10-20  Tom Tromey  <tom@tromey.com>
+
+	* varobj-iter.h (struct varobj_item): Remove typedef.
+
+2020-10-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (currently_stepping): Change int to bool
+	(maybe_software_singlestep): Likewise.
+	(show_stop_on_solib_events): Likewise.
+	(stepping_past_nonsteppable_watchpoint): Likewise.
+	(displaced_step_in_progress_any_inferior): Likewise.
+	(displaced_step_in_progress_thread): Likewise.
+	(keep_going_stepped_thread): Likewise.
+	(thread_still_needs_step_over): Likewise.
+	(start_step_over): Likewise.
+	(do_target_resume): Likewise.
+	(resume_1): Likewise.
+	(clear_proceed_status): Likewise.
+	(thread_still_needs_step_over_bp): Likewise.
+	(proceed): Likewise.
+	(switch_back_to_stepped_thread): Likewise.
+	(adjust_pc_after_break): Likewise.
+	(stepped_in_from): Likewise.
+	(handle_stop_requested): Likewise.
+	(handle_syscall_event): Likewise.
+	(handle_no_resumed): Likewise.
+	(handle_inferior_event): Likewise.
+	(finish_step_over): Likewise.
+	(handle_signal_stop): Likewise.
+	(process_event_stop_test): Likewise.
+
+2020-10-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (get_displaced_stepping_state): Fix comment.
+
+2020-10-20  Andreas Schwab  <schwab@linux-m68k.org>
+
+	* cli/cli-cmds.c (_initialize_cli_cmds): Fix alias command help.
+
+2020-10-19  Tom Tromey  <tromey@adacore.com>
+
+	PR tui/26719
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<refresh_window>: Rename from refresh_pad.
+	* tui/tui-winsource.c (tui_source_window_base::refresh_window):
+	Rename from refresh_pad.
+	(tui_source_window_base::show_source_content)
+	(tui_source_window_base::do_scroll_horizontal): Update.
+
+2020-10-19  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* thread.c (_initialize_thread): Fine-tune the help text of
+	'info threads'.
+
+2020-10-19  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* frame.c: Remove the unused 'uinteger_option_def' type alias.
+
+2020-10-14  Mihails Strasuns  <mihails.strasuns@intel.com>
+
+	* breakpoint.c (handle_jit_event): Add an argument, change how
+	`jit_event_handler` is called.
+
+2020-10-17  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_end_psymtab): Use partial_symtab::empty.
+	(scan_xcoff_symtab): Update.
+	* psymtab.h (class psymtab_storage) <global_psymbols,
+	static_psymbols, current_global_psymbols,
+	current_static_psymbols>: Remove.
+	* psymtab.c (require_partial_symbols, find_pc_sect_psymbol)
+	(match_partial_symbol, lookup_partial_symbol): Update.
+	(print_partial_symbols): Change parameters.
+	(dump_psymtab, recursively_search_psymtabs)
+	(psym_fill_psymbol_map, psym_find_compunit_symtab_by_address)
+	(sort_pst_symbols, partial_symtab::partial_symtab): Update.
+	(concat): Remove.
+	(end_psymtab_common): Simplify.
+	(append_psymbol_to_list): Change parameters.
+	(partial_symtabs::add_psymbol): Rename from add_psymbol_to_list.
+	(init_psymbol_list): Simplify.
+	(maintenance_info_psymtabs, maintenance_check_psymtabs): Update.
+	* psympriv.h (struct partial_symtab) <empty>: New method.
+	<globals_offset, n_global_syms, statics_offset, n_static_syms>:
+	Remove.
+	<global_psymbols, static_psymbols>: New members.
+	<add_psymbol>: New methods.
+	(add_psymbol_to_list): Don't declare.
+	(psymbol_placement): Move earlier.
+	* mdebugread.c (parse_partial_symbols): Update.
+	(handle_psymbol_enumerators): Change parameters.
+	(mdebug_expand_psymtab): Update.
+	* dwarf2/read.c (process_psymtab_comp_unit_reader)
+	(add_partial_symbol): Update.
+	* dwarf2/index-write.c (write_psymbols): Change parameters.
+	(write_one_signatured_type): Update.
+	(recursively_count_psymbols): Update.
+	(recursively_write_psymbols): Update.
+	(class debug_names) <recursively_write_psymbols>: Update.
+	<write_psymbols>: Change parameters.
+	<write_one_signatured_type>: Update.
+	* dbxread.c (read_dbx_symtab): Update.
+	(dbx_end_psymtab): Use partial_symtab::empty.
+	* ctfread.c (struct ctf_context) <pst>: New member.
+	(create_partial_symtab): Set it.
+	(ctf_psymtab_type_cb, ctf_psymtab_var_cb): Update.
+	(scan_partial_symbols): Use the psymtab's context.  Update.
+
+2020-10-17  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_value_print): Remove comment.
+	* m2-valprint.c (m2_value_print_inner): Remove comment.
+	* gdbtypes.c (create_range_type): Set TYPE_UNSIGNED from base
+	type.
+
+2020-10-17  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26317
+	* source.c (select_source_symtab): Handling sal.symtab == NULL for
+	symbol main.
+
+2020-10-14  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/26733
+	* solib.c (solib_contains_address_p): Handle
+	'solib->sections == nullptr'.
+
+2020-10-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	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.
+
+2020-10-13  Kamil Rytarowski  <n54@gmx.com>
+
+	* Makefile.in (ALL_64_TARGET_OBS, ALL_TARGET_OBS)
+	HFILES_NO_SRCDIR, ALLDEPFILES): Rename files.
+	* alpha-bsd-nat.c: Adjust include.
+	* alpha-bsd-tdep.h: Adjust comment.
+	* alpha-nbsd-tdep.c: Rename to ...
+	* alpha-netbsd-tdep.c: ... this, adjust include.
+	* amd64-nbsd-nat.c: Rename to ...
+	* amd64-netbsd-nat.c: ... this, adjust include.
+	* amd64-nbsd-tdep.c: Rename to ...
+	* amd64-netbsd-tdep.c: ... this, adjust include.
+	* amd64-tdep.h: Adjust include.
+	* arm-nbsd-nat.c: Rename to ...
+	* arm-netbsd-nat.c: ... this, adjust include.
+	* arm-nbsd-tdep.c: Rename to ...
+	* arm-netbsd-tdep.c: ... this, adjust include.
+	* arm-nbsd-tdep.h: Rename to ...
+	* arm-netbsd-tdep.h: ... this, adjust include.
+	* configure.nat: Adjust file lists.
+	* configure.tgt: Likewise.
+	* hppa-nbsd-nat.c: Rename to ...
+	* hppa-netbsd-nat.c: ... this, adjust include.
+	* hppa-nbsd-tdep.c: Rename to ...
+	* hppa-netbsd-tdep.c: ... this, adjust include.
+	* i386-nbsd-nat.c: Rename to ...
+	* i386-netbsd-nat.c: ... this, adjust include.
+	* i386-nbsd-tdep.c: Rename to ...
+	* i386-netbsd-tdep.c: ... this, adjust include.
+	* m68k-bsd-nat.c: Adjust include.
+	* mips-nbsd-nat.c: Rename to ...
+	* mips-netbsd-nat.c: ... this, adjust include.
+	* mips-nbsd-tdep.c: Rename to ...
+	* mips-netbsd-tdep.c: ... this, adjust include.
+	* mips-nbsd-tdep.h: Rename to ...
+	* mips-netbsd-tdep.h: ... this.
+	* nbsd-nat.c: Rename to ...
+	* netbsd-nat.c: ... this, adjust include.
+	* nbsd-nat.h: Rename to ...
+	* netbsd-nat.h: ... this, adjust include.
+	* nbsd-tdep.c: Rename to ...
+	* netbsd-tdep.c: ... this, adjust include.
+	* nbsd-tdep.h: Rename to ...
+	* netbsd-tdep.h: ... this.
+	* ppc-nbsd-nat.c: Rename to ...
+	* ppc-netbsd-nat.c: ... this, adjust include.
+	* ppc-nbsd-tdep.c: Rename to ...
+	* ppc-netbsd-tdep.c: ... this, adjust include and comment.
+	* ppc-nbsd-tdep.h: Rename to ...
+	* ppc-netbsd-tdep.h: ... this.
+	* sh-nbsd-nat.c: Rename to ...
+	* sh-netbsd-nat.c: ... this, adjust include.
+	* sh-nbsd-tdep.c: Rename to ...
+	* sh-netbsd-tdep.c: ... this, adjust include.
+	* sparc-nbsd-nat.c: Rename to ...
+	* sparc-netbsd-nat.c: ... this.
+	* sparc-nbsd-tdep.c: Rename to ...
+	* sparc-netbsd-tdep.c: ... this, adjust include.
+	* sparc64-nbsd-nat.c: Rename to ...
+	* sparc64-netbsd-nat.c: ... this.
+	* sparc64-nbsd-tdep.c: Rename to ...
+	* sparc64-netbsd-tdep.c: ... this, adjust include.
+	* sparc64-tdep.h: Adjust comment.
+	* vax-bsd-nat.c: Adjust include.
+	* vax-nbsd-tdep.c: Rename to ...
+	* vax-netbsd-tdep.c: ... this, adjust include.
+
+2020-10-12  Tom Tromey  <tom@tromey.com>
+
+	* target.h (struct target_ops) <get_section_table>: Update.
+	(target_get_section_table): Update.
+	* target.c (target_get_section_table, target_section_by_addr)
+	(memory_xfer_partial_1): Update.
+	* target-section.h (target_section_table): Now an alias.
+	* target-delegates.c: Rebuild.
+	* target-debug.h (target_debug_print_target_section_table_p):
+	Rename from target_debug_print_struct_target_section_table_p.
+	* symfile.c (build_section_addr_info_from_section_table): Update.
+	* solib.c (solib_map_sections, solib_contains_address_p): Update.
+	* solib-svr4.c (scan_dyntag): Update.
+	* solib-dsbt.c (scan_dyntag): Update.
+	* remote.c (remote_target::remote_xfer_live_readonly_partial):
+	Update.
+	* record-full.c (record_full_core_target::xfer_partial): Update.
+	* progspace.h (struct program_space) <target_sections>: Update.
+	* exec.h (print_section_info): Update.
+	* exec.c (exec_target::close, build_section_table)
+	(add_target_sections, add_target_sections_of_objfile)
+	(remove_target_sections, exec_on_vfork)
+	(section_table_available_memory)
+	(section_table_xfer_memory_partial)
+	(exec_target::get_section_table, exec_target::xfer_partial)
+	(print_section_info, set_section_command)
+	(exec_set_section_address, exec_target::has_memory): Update.
+	* corelow.c (core_target::build_file_mappings)
+	(core_target::xfer_partial, core_target::info_proc_mappings)
+	(core_target::info_proc_mappings): Update.
+	* bfd-target.c (class target_bfd): Update
+
+2020-10-12  Tom Tromey  <tom@tromey.com>
+
+	* progspace.c (program_space::~program_space): Don't call
+	clear_section_table.
+	* exec.h (clear_section_table): Don't declare.
+	* exec.c (exec_target::close): Update.
+	(clear_section_table): Remove.
+
+2020-10-12  Tom Tromey  <tom@tromey.com>
+
+	* exec.c (add_target_sections_of_objfile): Simplify.
+
+2020-10-12  Tom Tromey  <tom@tromey.com>
+
+	* solib.c (solib_map_sections): Update.
+	* record-full.c (record_full_core_open_1): Update.
+	* exec.h (build_section_table): Return a target_section_table.
+	* exec.c (exec_file_attach): Update.
+	(build_section_table): Return a target_section_table.
+	* corelow.c (core_target::core_target): Update.
+	* bfd-target.c (target_bfd::target_bfd): Update.
+
+2020-10-12  Tom Tromey  <tom@tromey.com>
+
+	* target.c (target_section_by_addr, memory_xfer_partial_1):
+	Update.
+	* target-section.h (struct target_section_table): Use
+	std::vector.
+	* symfile.h (build_section_addr_info_from_section_table): Take a
+	target_section_table.
+	* symfile.c (build_section_addr_info_from_section_table): Take a
+	target_section_table.
+	* solist.h (struct so_list) <sections>: Change type.
+	<sections_end>: Remove.
+	* solib.c (solib_map_sections, clear_so, solib_read_symbols)
+	(solib_contains_address_p): Update.
+	* solib-svr4.c (scan_dyntag): Update.
+	* solib-dsbt.c (scan_dyntag): Update.
+	* remote.c (remote_target::remote_xfer_live_readonly_partial):
+	Update.
+	* record-full.c (record_full_core_start, record_full_core_end):
+	Remove.
+	(record_full_core_sections): New global.
+	(record_full_core_open_1, record_full_core_target::xfer_partial):
+	Update.
+	* exec.h (build_section_table, section_table_xfer_memory_partial)
+	(add_target_sections): Take a target_section_table.
+	* exec.c (exec_file_attach, clear_section_table): Update.
+	(resize_section_table): Remove.
+	(build_section_table, add_target_sections): Take a
+	target_section_table.
+	(add_target_sections_of_objfile, remove_target_sections)
+	(exec_on_vfork): Update.
+	(section_table_available_memory): Take a target_section_table.
+	(section_table_read_available_memory): Update.
+	(section_table_xfer_memory_partial): Take a target_section_table.
+	(print_section_info, set_section_command)
+	(exec_set_section_address, exec_target::has_memory): Update.
+	* corelow.c (class core_target) <m_core_section_table,
+	m_core_file_mappings>: Remove braces.
+	<~core_target>: Remove.
+	(core_target::core_target): Update.
+	(core_target::~core_target): Remove.
+	(core_target::build_file_mappings)
+	(core_target::xfer_memory_via_mappings)
+	(core_target::xfer_partial, core_target::info_proc_mappings):
+	Update.
+	* bfd-target.c (target_bfd::xfer_partial): Update.
+	(target_bfd::target_bfd): Update.
+	(target_bfd::~target_bfd): Remove.
+
+2020-10-12  Tom Tromey  <tom@tromey.com>
+
+	* target.h (struct target_section, struct target_section_table):
+	Move to target-section.h.
+	* target-section.h: New file.
+
+2020-10-12  Pedro Alves  <pedro@palves.net>
+
+	PR exp/26602
+	* valops.c (struct struct_field_searcher): New.
+	(update_search_result): Rename to ...
+	(struct_field_searcher::update_result): ... this.  Simplify
+	prototype.  Record all found fields.
+	(do_search_struct_field): Rename to ...
+	(struct_field_searcher::search): ... this.  Simplify prototype.
+	Maintain stack of visited baseclass path.  Call update_result for
+	fields too.  Keep searching fields in baseclasses instead of
+	stopping at the first found field.
+	(search_struct_field): Use struct_field_searcher.  When looking
+	for fields, report ambiguous access attempts.
+
+2020-10-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* frame.c (inside_main_func): Check full symbols as well as
+	minimal symbols.
+
+2020-10-09  Joel Brobecker  <brobecker@adacore.com>
+
+	* ada-lang.c (advance_wild_match): Rewrite the function's
+	description.  Change the type of target0, t0 and t1 to char.
+
+2020-10-09  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (dwarf2_add_field): Handle signed offsets.
+
+2020-10-09  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.h (ada_encode): Return std::string.
+	* ada-lang.c (ada_encode_1): Return std::string.
+	(ada_encode): Likewise.
+	(type_from_tag, ada_lookup_name_info::ada_lookup_name_info):
+	Update.
+	* ada-exp.y (block_lookup, write_var_or_type): Update.
+
+2020-10-09  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR exp/26714
+	* printcmd.c (print_formatted): Handle void results as
+	unformatted prints.
+
+2020-10-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arch/aarch32.c (aarch32_create_target_description): Release the
+	target_desc_up as late as possible.
+	* arch/aarch64.c (aarch64_create_target_description): Likewise.
+	* arch/amd64.c (amd64_create_target_description): Likewise.
+	* arch/arc.c (arc_create_target_description): Return a
+	target_desc_up, don't release it.
+	* arch/arc.h (arc_create_target_description): Update declaration.
+	(arc_lookup_target_description): Move target_desc_up into the
+	cache, and return a borrowed pointer.
+	* arch/arm.c (arm_create_target_description): Release the
+	target_desc_up as late as possible.
+	* arch/i386.c (i386_create_target_description): Likewise.
+	* arch/riscv.h (riscv_create_target_description): Update
+	declaration to match definition.
+	* arch/tic6x.c (tic6x_create_target_description): Release the
+	target_desc_up as late as possible.
+
+2020-10-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in: Include Makefile.gnulib.inc.  Don't define LIBGNU
+	or INCGNU.  Make use of LIBGNU_EXTRA_LIBS when linking.
+
+2020-10-09  Jan Vrany  <jan.vrany@labware.com>
+
+	* source.c (directory_command): Notify observers that "directories"
+	parameter has changed.
+
+2020-10-08  Tom Tromey  <tom@tromey.com>
+
+	* cli/cli-cmds.c (print_disassembly): Style function name and
+	addresses.  Add _() wrappers.
+
+2020-10-08  Shahab Vahedi  <shahab@synopsys.com>
+
+	* NEWS: Mention ARC support in GDBserver.
+
+2020-10-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arch/aarch32.c (aarch32_create_target_description): Release
+	unique_ptr returned from allocate_target_description.
+	* arch/aarch64.c (aarch64_create_target_description): Likewise.
+	* arch/amd64.c (amd64_create_target_description): Likewise.
+	* arch/arc.c (arc_create_target_description): Likewise.
+	* arch/arm.c (arm_create_target_description): Likewise.
+	* arch/i386.c (i386_create_target_description): Likewise.
+	* arch/riscv.c (riscv_create_target_description): Update return
+	type.  Handle allocate_target_description returning a unique_ptr.
+	(riscv_lookup_target_description): Update to handle unique_ptr.
+	* arch/tic6x.c (tic6x_create_target_description): Release
+	unique_ptr returned from allocate_target_description.
+	* features/microblaze-with-stack-protect.c: Regenerate.
+	* features/microblaze.c: Regenerate.
+	* features/mips-dsp-linux.c: Regenerate.
+	* features/mips-linux.c: Regenerate.
+	* features/mips64-dsp-linux.c: Regenerate.
+	* features/mips64-linux.c: Regenerate.
+	* features/nds32.c: Regenerate.
+	* features/nios2.c: Regenerate.
+	* features/or1k.c: Regenerate.
+	* features/rs6000/powerpc-32.c: Regenerate.
+	* features/rs6000/powerpc-32l.c: Regenerate.
+	* features/rs6000/powerpc-403.c: Regenerate.
+	* features/rs6000/powerpc-403gc.c: Regenerate.
+	* features/rs6000/powerpc-405.c: Regenerate.
+	* features/rs6000/powerpc-505.c: Regenerate.
+	* features/rs6000/powerpc-601.c: Regenerate.
+	* features/rs6000/powerpc-602.c: Regenerate.
+	* features/rs6000/powerpc-603.c: Regenerate.
+	* features/rs6000/powerpc-604.c: Regenerate.
+	* features/rs6000/powerpc-64.c: Regenerate.
+	* features/rs6000/powerpc-64l.c: Regenerate.
+	* features/rs6000/powerpc-7400.c: Regenerate.
+	* features/rs6000/powerpc-750.c: Regenerate.
+	* features/rs6000/powerpc-860.c: Regenerate.
+	* features/rs6000/powerpc-altivec32.c: Regenerate.
+	* features/rs6000/powerpc-altivec32l.c: Regenerate.
+	* features/rs6000/powerpc-altivec64.c: Regenerate.
+	* features/rs6000/powerpc-altivec64l.c: Regenerate.
+	* features/rs6000/powerpc-e500.c: Regenerate.
+	* features/rs6000/powerpc-e500l.c: Regenerate.
+	* features/rs6000/powerpc-isa205-32l.c: Regenerate.
+	* features/rs6000/powerpc-isa205-64l.c: Regenerate.
+	* features/rs6000/powerpc-isa205-altivec32l.c: Regenerate.
+	* features/rs6000/powerpc-isa205-altivec64l.c: Regenerate.
+	* features/rs6000/powerpc-isa205-ppr-dscr-vsx32l.c: Regenerate.
+	* features/rs6000/powerpc-isa205-ppr-dscr-vsx64l.c: Regenerate.
+	* features/rs6000/powerpc-isa205-vsx32l.c: Regenerate.
+	* features/rs6000/powerpc-isa205-vsx64l.c: Regenerate.
+	* features/rs6000/powerpc-isa207-htm-vsx32l.c: Regenerate.
+	* features/rs6000/powerpc-isa207-htm-vsx64l.c: Regenerate.
+	* features/rs6000/powerpc-isa207-vsx32l.c: Regenerate.
+	* features/rs6000/powerpc-isa207-vsx64l.c: Regenerate.
+	* features/rs6000/powerpc-vsx32.c: Regenerate.
+	* features/rs6000/powerpc-vsx32l.c: Regenerate.
+	* features/rs6000/powerpc-vsx64.c: Regenerate.
+	* features/rs6000/powerpc-vsx64l.c: Regenerate.
+	* features/rs6000/rs6000.c: Regenerate.
+	* features/rx.c: Regenerate.
+	* features/s390-gs-linux64.c: Regenerate.
+	* features/s390-linux32.c: Regenerate.
+	* features/s390-linux32v1.c: Regenerate.
+	* features/s390-linux32v2.c: Regenerate.
+	* features/s390-linux64.c: Regenerate.
+	* features/s390-linux64v1.c: Regenerate.
+	* features/s390-linux64v2.c: Regenerate.
+	* features/s390-te-linux64.c: Regenerate.
+	* features/s390-tevx-linux64.c: Regenerate.
+	* features/s390-vx-linux64.c: Regenerate.
+	* features/s390x-gs-linux64.c: Regenerate.
+	* features/s390x-linux64.c: Regenerate.
+	* features/s390x-linux64v1.c: Regenerate.
+	* features/s390x-linux64v2.c: Regenerate.
+	* features/s390x-te-linux64.c: Regenerate.
+	* features/s390x-tevx-linux64.c: Regenerate.
+	* features/s390x-vx-linux64.c: Regenerate.
+	* mips-tdep.c (_initialize_mips_tdep): Release unique_ptr returned
+	from allocate_target_description.
+	* target-descriptions.c (allocate_target_description): Update
+	return type.
+	(print_c_tdesc::visit_pre): Release unique_ptr returned from
+	allocate_target_description.
+
+2020-10-07  Tom Tromey  <tromey@adacore.com>
+
+	* unittests/search-memory-selftests.c: New file.
+	* Makefile.in (SELFTESTS_SRCS): Add
+	unittests/search-memory-selftests.c.
+
+2020-10-07  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/16930:
+	* findcmd.c (_initialize_mem_search): Mention that the range is
+	inclusive.
+
+2020-10-07  Tom Tromey  <tromey@adacore.com>
+
+	* target.h (simple_search_memory): Don't declare.
+	* target.c (simple_search_memory): Move to gdbsupport.
+	(default_search_memory): Update.
+	* remote.c (remote_target::search_memory): Update.
+
+2020-10-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (COMPILE): Add CXXFLAGS.
+	(INTERNAL_CFLAGS_BASE): Remove CXXFLAGS.
+	(check-headers): Add CXXFLAGS.
+
+2020-10-07  Anton Kolesov  <anton.kolesov@synopsys.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.
+
+2020-10-07  Shahab Vahedi  <shahab@synopsys.com>
+
+	* arch/arc.h: Rename "arc_gdbarch_features" to
+	"arc_arch_features".
+	* arc-tdep.h: Likewise.
+	* arc-tdep.c: Likewise.
+
+2020-10-07  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infcmd.c (attach_command): Remove the redundant call to
+	`clear_proceed_status`.
+
+2020-10-07  Kamil Rytarowski  <n54@gmx.com>
+
+	* nat/netbsd-nat.c (write_memory, read_memory): Update.
+
+2020-10-07  Kamil Rytarowski  <n54@gmx.com>
+
+	* nat/netbsd-nat.c (write_memory, read_memory): Add.
+	* nat/netbsd-nat.h (write_memory, read_memory): Likewise.
+	* nbsd-nat.c (nbsd_nat_target::xfer_partial): Update.
+
+2020-10-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* break-catch-sig.c (signal_catch_counts): Make a static arrray.
+	(_initialize_break_catch_sig): Don't allocate array.
+
+2020-10-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (find_pc_line): Return unmapped addresses when the
+	requested address is also unmapped.
+
+2020-10-05  Simon Marchi  <simon.marchi@efficios.com>
+
+	* Makefile.in (HFILES_NO_SRCDIR): Remove tui/tui-windata.h, add
+	tui/tui-out.h.
+
+2020-10-05  Simon Marchi  <simon.marchi@efficios.com>
+
+	* amd64-windows-tdep.c (amd64_windows_return_value): Use
+	type::is_vector instead of TYPE_VECTOR.
+
+2020-10-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* auto-load.c (auto_load_objfile_script_1): Don't use
+	debugfile_holder as temporary variable when stripping drive
+	letter.
+
+2020-10-05  Hannes Domani  <ssbssa@yahoo.de>
+
+	* amd64-windows-tdep.c (amd64_windows_passed_by_integer_register):
+	Add TYPE_CODE_COMPLEX.
+	(amd64_windows_return_value): Fix types returned via XMM0.
+
+2020-10-05  Alan Hayward  <alan.hayward@arm.com>
+
+	* MAINTAINERS (Responsible Maintainers): Add Luis Machado to
+	AArch64/ARM maintainers.
+
+2020-10-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* NEWS: Mention set/show debug event-loop.
+
+2020-10-02  Tom Tromey  <tromey@adacore.com>
+
+	* skip.c (skiplist_entry::skiplist_entry): Unconditionally use
+	REG_EXTENDED.
+
+2020-10-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* aix-thread.c (aix_thread_inferior_created): Remove parameters.
+	* procfs.c (procfs_inferior_created): Remove.
+	(_initialize_procfs): Don't register procfs_inferior_created.
+
+2020-10-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* async-event.c (invoke_async_signal_handlers): Add debug
+	print.
+	(check_async_event_handlers): Likewise.
+	* event-top.c (show_debug_event_loop): New function.
+	(_initialize_event_top): Register "set debug event-loop"
+	setting.
+
+2020-10-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* debug.c (debug_prefixed_vprintf): Move to gdbsupport.
+	* debug.h: Remove.
+	* infrun.c: Include gdbsupport/common-debug.h.
+	* linux-nat.c: Likewise.
+
+2020-10-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* async-event.h (create_async_signal_handler): Add name
+	parameter.
+	(create_async_event_handler): Likewise.
+	* async-event.c (struct async_signal_handler) <name>: New field.
+	(struct async_event_handler) <name>: New field.
+	(create_async_signal_handler): Assign name.
+	(create_async_event_handler): Assign name.
+	* event-top.c (async_init_signals): Pass name when creating
+	handler.
+	* infrun.c (_initialize_infrun): Likewise.
+	* record-btrace.c (record_btrace_push_target): Likewise.
+	* record-full.c (record_full_open): Likewise.
+	* remote-notif.c (remote_notif_state_allocate): Likewise.
+	* remote.c (remote_target::open_1): Likewise.
+	* tui/tui-win.c (tui_initialize_win): Likewise.
+
+2020-10-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* async-event.c (initialize_async_signal_handlers): Pass name to
+	add_file_handler
+	* event-top.c (ui_register_input_event_handler): Likewise.
+	* linux-nat.c (linux_nat_target::async): Likewise.
+	* run-on-main-thread.c (_initialize_run_on_main_thread):
+	Likewise
+	* ser-base.c (reschedule): Likewise.
+	(ser_base_async): Likewise.
+	* tui/tui-io.c: Likewise.
+	* top.h (struct ui) <num>: New field.
+	* top.c (highest_ui_num): New variable.
+	(ui::ui): Initialize num.
+
+2020-10-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* observable.h <inferior_created>: Remove parameters.  Update all
+	listeners.
+	* inferior.h (post_create_inferior): Remove target parameter.
+	Update all callers.
+
+2020-10-02  Nitika Achra  <Nitika.Achra@amd.com>
+
+	* dwarf2/macro.c (dwarf_decode_macro_bytes): Handle DW_MACRO_define_strx
+	and DW_MACRO_undef_strx.
+	(dwarf_decode_macros): Likewise
+	* dwarf2/read.c (dwarf_decode_macros): Pass str_offsets_base in the parameters
+	which is the value of DW_AT_str_offsets_base.
+	 * dwarf2/macro.h (dwarf_decode_macros): Modify the definition to include
+	str_offsets_base.
+
+2020-10-01  Kamil Rytarowski  <n54@gmx.com>
+
+	* i386-tdep.h (i386nbsd_sc_reg_offset): Remove.
+
+2020-10-01  Kamil Rytarowski  <n54@gmx.com>
+
+	* i386-bsd-nat.c (_initialize_i386bsd_nat): Update.
+	* i386-nbsd-tdep.c (i386nbsd_sc_reg_offset): Now static.
+
+2020-10-01  Kamil Rytarowski  <n54@gmx.com>
+
+	* i386-bsd-nat.c: Include "x86-bsd-nat.h".
+
+2020-09-30  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26683
+	* dwarf2/read.c (dwarf2_name): Update attr_name after attr is updated.
+
+2020-09-30  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (handle_variant): Use constant_value.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (lookup_dwo_id, get_type_unit_group)
+	(read_file_scope, dwarf2_get_pc_bounds)
+	(dwarf2_record_block_ranges, dwarf2_add_field, get_alignment)
+	(read_structure_type, handle_struct_member_die)
+	(read_enumeration_type, read_array_type, read_set_type)
+	(read_tag_pointer_type, read_tag_reference_type)
+	(read_subroutine_type, read_base_type, read_subrange_type)
+	(read_full_die_1, partial_die_info::read)
+	(partial_die_info::read, by, new_symbol)
+	(dwarf2_const_value_data, dwarf2_const_value_attr)
+	(dump_die_shallow, dwarf2_fetch_constant_bytes)
+	(prepare_one_comp_unit): Update.
+	* dwarf2/attribute.h (DW_UNSND): Remove.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_func_scope, prototyped_function_p)
+	(read_subroutine_type, partial_die_info::read)
+	(dwarf2_flag_true_p, new_symbol, dump_die_shallow)
+	(dwarf2_add_member_fn): Update.
+	* dwarf2/attribute.h (struct attribute) <as_boolean>: Declare.
+	* dwarf2/attribute.c (attribute::as_boolean): New method.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_add_field, dwarf2_add_member_fn): Update.
+	* dwarf2/attribute.h (struct attribute) <as_virtuality>: New
+	method.
+	* dwarf2/attribute.c (attribute::as_virtuality): New method.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/die.h (struct die_info) <addr_base, ranges_base>: Check
+	the attribute's form.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (is_valid_DW_AT_defaulted): Move to attribute.c.
+	(dwarf2_add_member_fn): Update.
+	* dwarf2/attribute.h (struct attribute) <defaulted>: Declare.
+	* dwarf2/attribute.c (attribute::defaulted): New method, from
+	is_valid_DW_AT_defaulted.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dw2_get_file_names_reader)
+	(dwarf2_build_include_psymtabs, handle_DW_AT_stmt_list)
+	(dwarf2_cu::setup_type_unit_groups, fill_in_loclist_baton)
+	(dwarf2_symbol_mark_computed): Use as_unsigned.
+	* dwarf2/attribute.h (struct attribute) <as_unsigned>: New
+	method.
+	<form_is_section_offset>: Update comment.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_access_attribute): Rename from
+	dwarf2_default_access_attribute.  Look up attribute.
+	(dwarf2_add_field, dwarf2_add_type_defn, dwarf2_add_member_fn):
+	Update.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (skip_one_die): Update.
+	(read_full_die_1): Change how reprocessing is done.
+	(partial_die_info::read): Update.
+	(read_attribute_value): Remove need_reprocess parameter.
+	(read_attribute): Likewise.
+	* dwarf2/attribute.h (struct attribute) <requires_reprocessing_p>:
+	New method.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_attribute_reprocess, read_attribute_value)
+	(dwarf2_const_value_attr, dump_die_shallow)
+	(dwarf2_fetch_constant_bytes): Update.
+	* dwarf2/attribute.h (struct attribute) <form_is_ref>: Update
+	comment.
+	<set_address>: New method.
+	(DW_ADDR): Remove.
+	* dwarf2/attribute.c (attribute::form_is_ref): Update comment.
+	(attribute::as_string, attribute::as_address): Add assert.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_cutu_die_from_dwo): Use OBSTACK_ZALLOC.
+	(read_attribute_reprocess, read_attribute_value): Update.
+	(read_attribute): Clear requires_reprocessing.
+	* dwarf2/attribute.h (struct attribute) <as_unsigned_reprocess,
+	form_requires_reprocessing>: New methods.
+	<string_init>: Clear requires_reprocessing.
+	<set_unsigned_reprocess>: New method.
+	<name>: Shrink by one bit.
+	<requires_reprocessing>: New member.
+	* dwarf2/attribute.c (attribute::form_requires_reprocessing): New
+	method.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_attribute_value): Update.
+	* dwarf2/attribute.h (struct attribute) <form_is_unsigned,
+	set_unsigned>: New methods.
+	* dwarf2/attribute.c (attribute::form_is_unsigned): New method.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (get_alignment, read_array_order)
+	(read_attribute_value, dwarf2_const_value_attr)
+	(dump_die_shallow, dwarf2_fetch_constant_bytes): Update.
+	* dwarf2/attribute.h (struct attribute) <as_signed, set_signed>:
+	New methods.
+	(DW_SND): Remove.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_attribute_value, lookup_die_type)
+	(dump_die_shallow, follow_die_sig, get_DW_AT_signature_type):
+	Update.
+	* dwarf2/attribute.h (struct attribute) <as_signature,
+	set_signature>: New methods.
+	(DW_SIGNATURE): Remove.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_call_site_scope)
+	(handle_data_member_location, dwarf2_add_member_fn)
+	(mark_common_block_symbol_computed, attr_to_dynamic_prop)
+	(partial_die_info::read, read_attribute_value)
+	(var_decode_location, dwarf2_const_value_attr, dump_die_shallow)
+	(dwarf2_fetch_die_loc_sect_off, dwarf2_fetch_constant_bytes)
+	(dwarf2_symbol_mark_computed): Update.
+	* dwarf2/attribute.h (struct attribute) <as_block, set_block>: New
+	methods.
+	(DW_BLOCK): Remove.
+	* dwarf2/attribute.c (attribute::form_is_block): Add
+	DW_FORM_data16.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_cutu_die_from_dwo)
+	(read_attribute_reprocess, read_attribute_value, read_attribute)
+	(dwarf2_const_value_attr, dwarf2_name, dump_die_shallow)
+	(dwarf2_fetch_constant_bytes): Update.
+	* dwarf2/attribute.h (struct attribute) <form_is_string>: Declare.
+	<set_string_noncanonical, set_string_canonical>: New methods.
+	<string_is_canonical>: Update comment.
+	<canonical_string_p>: Add assert.
+	(DW_STRING, DW_STRING_IS_CANONICAL): Remove.
+	* dwarf2/attribute.c (attribute::form_is_string): New method.
+	(attribute::string): Use it.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (anonymous_struct_prefix, dwarf2_name)
+	(dump_die_shallow): Use canonical_string_p.
+	* dwarf2/attribute.h (struct attribute) <canonical_string_p>: New
+	method.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (partial_die_info::read)
+	(dwarf2_const_value_attr, anonymous_struct_prefix, )
+	(dwarf2_name, dwarf2_fetch_constant_bytes): Use
+	attribute::as_string.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/attribute.c (attribute::address): Don't use DW_UNSND or
+	DW_ADDR.
+	(attribute::string): Don't use DW_STRING.
+	(attribute::get_ref_die_offset): Don't use DW_UNSND.
+	(attribute::constant_value): Don't use DW_UNSND or DW_SND.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_find_base_address, read_call_site_scope)
+	(dwarf2_get_pc_bounds, dwarf2_record_block_ranges)
+	(partial_die_info::read, dwarf2_string_attr, new_symbol): Update.
+	* dwarf2/attribute.h (struct attribute): Rename methods.
+	* dwarf2/attribute.c (attribute::as_address): Rename from
+	value_as_address.
+	(attribute::as_string): Rename from value_as_string.
+
+2020-09-29  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-09-29  Pedro Alves  <pedro@palves.net>
+
+	* unittests/enum-flags-selftests.c: Check whether __GNUC__ is
+	defined before using '#pragma GCC diagnostic' instead of checking
+	__clang__.
+
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+	* infrun.c (displaced_step_fixup, thread_still_needs_step_over)
+	(handle_signal_stop): Update.
+	* procfs.c (procfs_target::insert_watchpoint): Update.
+	* target.h (target_have_steppable_watchpoint): Now a function.
+
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+	* infrun.c (set_schedlock_func): Update.
+	* target.h (target_can_lock_scheduler): Now a function.
+
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+	* inferior.h (class inferior) <has_execution>: Update.
+	* windows-tdep.c (windows_solib_create_inferior_hook): Update.
+	* valops.c (find_function_in_inferior)
+	(value_allocate_space_in_inferior): Update.
+	* top.c (kill_or_detach): Update.
+	* target.c (target_preopen, set_target_permissions): Update.
+	(target_has_execution_current): Remove.
+	* sparc64-tdep.c (adi_examine_command, adi_assign_command):
+	Update.
+	* solib.c (update_solib_list, reload_shared_libraries): Update.
+	* solib-svr4.c (svr4_solib_create_inferior_hook): Update.
+	* solib-dsbt.c (enable_break): Update.
+	* score-tdep.c (score7_fetch_inst): Update.
+	* rs6000-nat.c (rs6000_nat_target::xfer_shared_libraries):
+	Update.
+	* remote.c (remote_target::start_remote)
+	(remote_target::remote_check_symbols, remote_target::open_1)
+	(remote_target::remote_detach_1, remote_target::verify_memory)
+	(remote_target::xfer_partial, remote_target::read_description)
+	(remote_target::get_min_fast_tracepoint_insn_len): Update.
+	* record-full.c (record_full_open_1): Update.
+	* record-btrace.c (record_btrace_target_open): Update.
+	* objc-lang.c (lookup_objc_class, lookup_child_selector)
+	(value_nsstring): Update.
+	* linux-thread-db.c (add_thread_db_info)
+	(thread_db_find_new_threads_silently, check_thread_db_callback)
+	(try_thread_db_load_1, record_thread): Update.
+	* linux-tdep.c (linux_info_proc, linux_vsyscall_range_raw):
+	Update.
+	* linux-fork.c (checkpoint_command): Update.
+	* infrun.c (set_non_stop, set_observer_mode)
+	(check_multi_target_resumption, for_each_just_stopped_thread)
+	(maybe_remove_breakpoints, normal_stop)
+	(class infcall_suspend_state): Update.
+	* infcmd.c (ERROR_NO_INFERIOR, kill_if_already_running)
+	(info_program_command, attach_command): Update.
+	* infcall.c (call_function_by_hand_dummy): Update.
+	* inf-loop.c (inferior_event_handler): Update.
+	* gcore.c (gcore_command, derive_heap_segment): Update.
+	* exec.c (exec_file_command): Update.
+	* eval.c (evaluate_subexp): Update.
+	* compile/compile.c (compile_to_object): Update.
+	* cli/cli-dump.c (restore_command): Update.
+	* breakpoint.c (update_watchpoint)
+	(update_inserted_breakpoint_locations)
+	(insert_breakpoint_locations, get_bpstat_thread): Update.
+	* target.h (target_has_execution): Remove macro.
+	(target_has_execution_current): Don't declare.
+	(target_has_execution): Rename from target_has_execution_1.  Add
+	argument default.
+
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+	* mi/mi-main.c (exec_reverse_continue)
+	(mi_cmd_list_target_features): Update.
+	* infrun.c (set_exec_direction_func): Update.
+	* target.c (default_execution_direction): Update.
+	* reverse.c (exec_reverse_once): Update.
+	* target.h (target_can_execute_reverse): Now a function.
+
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_get_register)
+	(tui_data_window::show_registers): Update.
+	* thread.c (scoped_restore_current_thread::restore)
+	(scoped_restore_current_thread::scoped_restore_current_thread):
+	Update.
+	* regcache-dump.c (regcache_print): Update.
+	* python/py-finishbreakpoint.c (bpfinishpy_detect_out_scope_cb):
+	Update.
+	* mi/mi-main.c (mi_cmd_data_write_register_values): Update.
+	* mep-tdep.c (current_me_module, current_options): Update.
+	* linux-thread-db.c (thread_db_load): Update.
+	* infcmd.c (registers_info, info_vector_command)
+	(info_float_command): Update.
+	* ia64-tdep.c (ia64_frame_prev_register)
+	(ia64_sigtramp_frame_prev_register): Update.
+	* ia64-libunwind-tdep.c (libunwind_frame_prev_register): Update.
+	* gcore.c (derive_stack_segment): Update.
+	* frame.c (get_current_frame, has_stack_frames): Update.
+	* findvar.c (language_defn::read_var_value): Update.
+	* arm-tdep.c (arm_pc_is_thumb): Update.
+	* target.c (target_has_registers): Rename from
+	target_has_registers_1.
+	* target.h (target_has_registers): Remove macro.
+	(target_has_registers): Rename from target_has_registers_1.
+
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+	* windows-tdep.c (tlb_make_value): Update.
+	* tui/tui-regs.c (tui_data_window::show_registers): Update.
+	* thread.c (scoped_restore_current_thread::restore)
+	(scoped_restore_current_thread::scoped_restore_current_thread)
+	(thread_command): Update.
+	* stack.c (backtrace_command_1, frame_apply_level_command)
+	(frame_apply_all_command, frame_apply_command): Update.
+	* infrun.c (siginfo_make_value, restore_infcall_control_state):
+	Update.
+	* gcore.c (derive_stack_segment): Update.
+	* frame.c (get_current_frame, has_stack_frames): Update.
+	* auxv.c (info_auxv_command): Update.
+	* ada-tasks.c (ada_build_task_list): Update.
+	* target.c (target_has_stack): Rename from target_has_stack_1.
+	* target.h (target_has_stack): Remove macro.
+	(target_has_stack): Rename from target_has_stack_1.
+
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+	* target.c (target_has_memory): Rename from target_has_memory_1.
+	* tui/tui-regs.c (tui_data_window::show_registers): Update.
+	* thread.c (scoped_restore_current_thread::restore)
+	(scoped_restore_current_thread::scoped_restore_current_thread):
+	Update.
+	* frame.c (get_current_frame, has_stack_frames): Update.
+	* target.h (target_has_memory): Remove macro.
+	(target_has_memory): Rename from target_has_memory_1.
+
+2020-09-28  Tom Tromey  <tom@tromey.com>
+
+	* target.c (target_has_all_memory_1): Remove.
+	* target.h (target_has_all_memory): Remove define.
+	(target_has_all_memory_1): Don't declare.
+
+2020-09-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* ser-base.c: Adjust comments formatting.
+
+2020-09-27  Tom Tromey  <tom@tromey.com>
+
+	PR tui/25342:
+	* tui/tui-io.c (tui_puts): Rewrite.  Move earlier.
+
+2020-09-27  Tom Tromey  <tom@tromey.com>
+
+	PR tui/25342:
+	* tui/tui-winsource.c (tui_copy_source_line): Use ISNCTRL.
+
+2020-09-27  Tom Tromey  <tom@tromey.com>
+
+	* unittests/tui-selftests.c: Update.
+	* tui/tui-winsource.h (struct tui_source_window_base)
+	<extra_margin, show_line_number, refresh_pad>: New methods.
+	<m_max_length, m_pad>: New members.
+	(tui_copy_source_line): Update.
+	* tui/tui-winsource.c (tui_copy_source_line): Remove line_no,
+	first_col, line_width, ndigits parameters.  Add length.
+	(tui_source_window_base::show_source_line): Write to pad.  Line
+	number now 0-based.
+	(tui_source_window_base::refresh_pad): New method.
+	(tui_source_window_base::show_source_content): Write to pad.  Call
+	refresh_pad.
+	(tui_source_window_base::do_scroll_horizontal): Call refresh_pad,
+	not refill.
+	(tui_source_window_base::update_exec_info): Call
+	show_line_number.
+	* tui/tui-source.h (struct tui_source_window) <extra_margin>: New
+	method.
+	<m_digits>: New member.
+	* tui/tui-source.c (tui_source_window::set_contents): Set m_digits
+	and m_max_length.
+	(tui_source_window::show_line_number): New method.
+	* tui/tui-io.h (tui_puts): Fix comment.
+	* tui/tui-disasm.c (tui_disasm_window::set_contents): Set
+	m_max_length.
+
+2020-09-27  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c
+	(tui_source_window_base::set_is_exec_point_at): Don't call
+	show_source_line.
+
+2020-09-27  Tom Tromey  <tom@tromey.com>
+
+	* python/py-tui.c (class tui_py_window) <refresh_window>: New
+	method.
+	<erase>: Update.
+	<cursor_x, cursor_y>: Remove.
+	<m_inner_window>: New member.
+	(tui_py_window::rerender): Create inner window.
+	(tui_py_window::output): Write to inner window.
+
+2020-09-26  Gareth Rees <grees@undo.io>  (tiny change)
+
+	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.
+
+2020-09-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.h (infrun_debug_printf): Fix formatting.
+	* linux-nat.c (linux_nat_debug_printf): Fix formatting.
+
+2020-09-25  Saagar Jha  <saagar@saagarjha.com>
+
+	* compile/compile-object-load.h (struct munmap_list): Add
+	explicitly-defined move constructor.
+
+2020-09-24  Tom Tromey  <tromey@adacore.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.
+
+2020-09-23  Hannes Domani  <ssbssa@yahoo.de>
+
+	* 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.
+
+2020-09-23  Tom Tromey  <tom@tromey.com>
+
+	PR symtab/25470:
+	* value.c (unpack_long, pack_long, pack_unsigned_long): Handle bit
+	offset and bit size.
+	* printcmd.c (print_scalar_formatted): Handle zero-length
+	integer.
+	(print_scalar_formatted): Use bit_size_differs_p.
+	* gdbtypes.h (enum type_specific_kind) <TYPE_SPECIFIC_INT>: New
+	constant.
+	(union type_specific): <int_stuff>: New member.
+	(struct type) <bit_size_differs_p, bit_size, bit_offset>: New
+	methods.
+	* gdbtypes.c (init_integer_type, init_boolean_type): Initialize
+	TYPE_SPECIFIC_FIELD.
+	(recursive_dump_type, copy_type_recursive): Update.
+	* dwarf2/read.c (read_base_type): Handle DW_AT_bit_size and
+	DW_AT_data_bit_offset.
+
+2020-09-23  Tom Tromey  <tom@tromey.com>
+
+	* utils.h (class gdb_argv): Add move operators.
+	<append>: New methods.
+	* compile/compile.c (build_argc_argv): Remove.
+	(compile_args_argc): Remove.
+	(compile_args_argv): Change type.
+	(set_compile_args): Simplify.
+	(append_args): Remove.
+	(filter_args): Remove argcp parameter.
+	(get_args): Return gdb_argv.  Simplify.
+	(compile_to_object): Update.
+
+2020-09-23  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-object-run.c (do_module_cleanup)
+	<~do_module_cleanup> :Remove.
+	(do_module_cleanup): Update.
+	* compile/compile-object-load.h (struct munmap_list): Add move
+	assignment operator.
+	<source_file>: Now a std::string.
+	<munmap_list>: Rename.  No longer a pointer.
+	* compile/compile-object-load.c (struct setup_sections_data): Add
+	constructor.
+	<setup_one_section>: Declare.
+	<munmap_list>: Move earlier.
+	<m_bfd>: New member.
+	<m_last_size, m_last_section_first, m_last_prot,
+	m_last_max_alignment>: Rename, add initializers where needed.
+	(setup_sections_data::setup_one_section): Rename from
+	setup_sections.  Update.
+	(compile_object_load): Update.  Don't use bfd_map_over_sections.
+
+2020-09-23  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-object-run.c (struct do_module_cleanup): Add
+	parameters to constructor.  Update destructor.
+	<source_file, scope, scope_data, out_value_type, out_value_addr,
+	munmap_list_head, objfile_name_string>: Remove.
+	<module>: New member.
+	(do_module_cleanup): Update.
+	(compile_object_run): Update.
+
+2020-09-23  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile.c (eval_compile_command): Update.
+	* compile/compile-object-run.h (compile_object_run): Take a
+	compile_module_up.
+	* compile/compile-object-run.c (compile_object_run): Take a
+	compile_module_up.
+	* compile/compile-object-load.h (struct compile_module): Add
+	constructor, destructor.
+	(compile_module_up): New typedef.
+	(compile_object_load): Return compile_object_up.
+	* compile/compile-object-load.c (compile_object_load): Return
+	compile_module_up.
+
+2020-09-23  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-object-run.c (struct do_module_cleanup): Add
+	constructor, destructor.
+	<objfile_name_string>: Don't use struct hack.
+	(do_module_cleanup): Use delete.
+	(compile_object_run): Use new.
+
+2020-09-23  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-cplus-types.c
+	(compile_cplus_convert_struct_or_union): Use std::vector.
+	(compile_cplus_convert_func): Likewise.
+	* compile/compile-c-types.c (convert_func): Use std::vector.
+
+2020-09-21  Tom Tromey  <tromey@adacore.com>
+
+	* sparc-tdep.c (sparc32_skip_prologue): Use
+	skip_prologue_using_sal.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (add_section_size_callback): Remove.
+	(load_one_section): Rename from load_section_callback.  Change
+	parameters.
+	(generic_load): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* exec.c (add_to_section_table): Remove.
+	(build_section_table): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* elfread.c (elf_locate_sections): Change parameters.
+	(elf_symfile_read): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* cli/cli-dump.c (struct callback_data): Remove.
+	(restore_one_section): Rename from restore_section_callback.
+	Change parameters.
+	(restore_binary_file): Change parameters.
+	(restore_command): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* gcore.c (make_output_phdrs): Remove 'ignored' parameter.
+	(gcore_copy_callback): Likewise.
+	(gcore_memory_sections): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* osabi.h (generic_elf_osabi_sniff_abi_tag_sections): Update.
+	* osabi.c (generic_elf_osabi_sniff_abi_tag_sections): Change
+	parameters.
+	(generic_elf_osabi_sniffer): Use foreach.
+	* mips-sde-tdep.c (mips_sde_elf_osabi_sniffer): Use foreach.
+	* arm-tdep.c (arm_elf_osabi_sniffer): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (locate_dwz_sections): Change parameters.
+	(dwarf2_get_dwz_file): Use foreach.
+	(dwarf2_locate_dwo_sections): Change parameters.
+	(open_and_init_dwo_file): Use foreach.
+	(dwarf2_locate_common_dwp_sections): Change parameters.
+	(open_and_init_dwp_file): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* symfile.h: (find_lowest_section): Don't declare.
+	* symfile.c (find_lowest_section): Now static.  Change
+	parameters.
+	(struct place_section_arg): Remove.
+	(place_section): Change parameters.
+	(addr_info_make_relative): Use foreach.
+	(symfile_dummy_outputs): Remove.
+	(default_symfile_relocate): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.c (add_to_objfile_sections): Rename from
+	add_to_objfile_sections_full.
+	(add_to_objfile_sections): Remove.
+	(build_objfile_section_table): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* stap-probe.c (get_stap_base_address_1): Remove.
+	(get_stap_base_address): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* gdb_bfd.c (free_one_bfd_section): Remove 'abfd' and 'ignore'
+	parameters.
+	(gdb_bfd_close_or_warn): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* corelow.c (add_to_thread_list): Change parameters.
+	(core_target_open): Use foreach.
+
+2020-09-19  Tom Tromey  <tom@tromey.com>
+
+	* gdb_bfd.h (gdb_bfd_sections): New overload.  Fix formatting of
+	existing function.
+
+2020-09-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-valprint.c (f77_print_array_1): Adjust printing of whitespace
+	for arrays.
+
+2020-09-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* eval.c: Remove 'f-lang.h' include.
+	(value_f90_subarray): Moved to f-lang.c.
+	(eval_call): Renamed to...
+	(evaluate_subexp_do_call): ...this, is no longer static, header
+	comment moved into header file.
+	(evaluate_funcall): Update call to eval_call.
+	(skip_undetermined_arglist): Moved to f-lang.c.
+	(fortran_value_subarray): Likewise.
+	(evaluate_subexp_standard): OP_F77_UNDETERMINED_ARGLIST handling
+	moved to evaluate_subexp_f.
+	(calc_f77_array_dims): Moved to f-lang.c
+	* expprint.c (print_subexp_funcall): New function.
+	(print_subexp_standard): OP_F77_UNDETERMINED_ARGLIST handling
+	moved to print_subexp_f, OP_FUNCALL uses new function.
+	(dump_subexp_body_funcall): New function.
+	(dump_subexp_body_standard): OP_F77_UNDETERMINED_ARGLIST handling
+	moved to dump_subexp_f, OP_FUNCALL uses new function.
+	* expression.h (evaluate_subexp_do_call): Declare.
+	* f-lang.c (value_f90_subarray): Moved from eval.c.
+	(skip_undetermined_arglist): Likewise.
+	(calc_f77_array_dims): Likewise.
+	(fortran_value_subarray): Likewise.
+	(evaluate_subexp_f): Add OP_F77_UNDETERMINED_ARGLIST support.
+	(operator_length_f): Likewise.
+	(print_subexp_f): Likewise.
+	(dump_subexp_body_f): Likewise.
+	* fortran-operator.def (OP_F77_UNDETERMINED_ARGLIST): Move
+	declaration of this operation to here.
+	* parse.c (operator_length_standard): OP_F77_UNDETERMINED_ARGLIST
+	support moved to operator_length_f.
+	* parser-defs.h (dump_subexp_body_funcall): Declare.
+	(print_subexp_funcall): Declare.
+	* std-operator.def (OP_F77_UNDETERMINED_ARGLIST): Moved to
+	fortran-operator.def.
+
+2020-09-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* eval.c (fortran_value_subarray): New function, content is taken
+	from...
+	(evaluate_subexp_standard): ...here, in two places.  Now arrays
+	and strings both call the new function.
+	(calc_f77_array_dims): Add header comment, handle strings.
+
+2020-09-18  Victor Collod  <vcollod@nvidia.com>
+
+	PR gdb/26635
+	* i386-tdep.c (i386_skip_endbr): Add a helper function to skip endbr.
+	(i386_analyze_prologue): Call i386_skip_endbr.
+
+2020-09-18  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (struct windows_nat_target) <wait>: Update.
+	(windows_nat_target::wait): Update.
+	* target/wait.h (enum target_wait_flag): New.  Use
+	DEF_ENUM_FLAGS_TYPE.
+	* target/target.h (target_wait): Change type of options.
+	* target.h (target_options_to_string, default_target_wait):
+	Update.
+	(struct target_ops) <wait>: Change type of options.
+	* target.c (target_wait, default_target_wait, do_option): Change
+	type of "options".
+	(target_options_to_string): Likewise.
+	* target-delegates.c: Rebuild.
+	* target-debug.h (target_debug_print_target_wait_flags): Rename
+	from target_debug_print_options.
+	* sol-thread.c (class sol_thread_target) <wait>: Update.
+	(sol_thread_target::wait): Update.
+	* rs6000-nat.c (class rs6000_nat_target) <wait>: Update.
+	(rs6000_nat_target::wait): Update.
+	* remote.c (class remote_target) <wait, wait_ns, wait_as>:
+	Update.
+	(remote_target::wait_ns, remote_target::wait_as): Change type of
+	"options".
+	(remote_target::wait): Update.
+	* remote-sim.c (struct gdbsim_target) <wait>: Update.
+	(gdbsim_target::wait): Update.
+	* record-full.c (class record_full_base_target) <wait>: Update.
+	(record_full_wait_1): Change type of "options".
+	(record_full_base_target::wait): Update.
+	* record-btrace.c (class record_btrace_target) <wait>: Update.
+	(record_btrace_target::wait): Update.
+	* ravenscar-thread.c (struct ravenscar_thread_target) <wait>:
+	Update.
+	(ravenscar_thread_target::wait): Update.
+	* procfs.c (class procfs_target) <wait>: Update.
+	(procfs_target::wait): Update.
+	* obsd-nat.h (class obsd_nat_target) <wait>: Update.
+	* obsd-nat.c (obsd_nat_target::wait): Update.
+	* nto-procfs.c (struct nto_procfs_target) <wait>: Update.
+	(nto_procfs_target::wait): Update.
+	* nbsd-nat.h (struct nbsd_nat_target) <wait>: Update.
+	* nbsd-nat.c (nbsd_wait): Change type of "options".
+	(nbsd_nat_target::wait): Update.
+	* linux-thread-db.c (class thread_db_target) <wait>: Update.
+	(thread_db_target::wait): Update.
+	* linux-nat.h (class linux_nat_target) <wait>: Update.
+	* linux-nat.c (linux_nat_target::wait): Update.
+	(linux_nat_wait_1): Update.
+	* infrun.c (do_target_wait_1, do_target_wait): Change type of
+	"options".
+	* inf-ptrace.h (struct inf_ptrace_target) <wait>: Update.
+	* inf-ptrace.c (inf_ptrace_target::wait): Update.
+	* go32-nat.c (struct go32_nat_target) <wait>: Update.
+	(go32_nat_target::wait): Update.
+	* gnu-nat.h (struct gnu_nat_target) <wait>: Update.
+	* gnu-nat.c (gnu_nat_target::wait): Update.
+	* fbsd-nat.h (class fbsd_nat_target) <wait>: Update.
+	* fbsd-nat.c (fbsd_nat_target::wait): Update.
+	* darwin-nat.h (class darwin_nat_target) <wait>: Update.
+	* darwin-nat.c (darwin_nat_target::wait): Update.
+	* bsd-uthread.c (struct bsd_uthread_target) <wait>: Update.
+	(bsd_uthread_target::wait): Update.
+	* aix-thread.c (class aix_thread_target) <wait>: Update.
+	(aix_thread_target::wait): Update.
+
+2020-09-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* compile/compile-object-run.c (create_copied_type_recursive): New
+	function.
+	(compile_object_run): Use new function.
+
+2020-08-21  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* NEWS: Mention x86_64 Cygwin core file support.
+
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* windows-tdep.c (NOTE_INFO_MODULE, NOTE_INFO_MODULE64): Define.
+	(core_process_module_section): Handle NOTE_INFO_MODULE64.
+
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* windows-tdep.h: Add prototypes.
+	* i386-windows-tdep.c(windows_core_xfer_shared_libraries): Move.
+	(i386_windows_core_pid_to_str): Move and rename ...
+	* windows-tdep.c (windows_core_xfer_shared_libraries): ... to here
+	(windows_core_pid_to_str): ... and here.
+	* amd64-windows-tdep.c (amd64_windows_init_abi_common): Register here.
+
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
+	* amd64-windows-tdep.c(amd64_windows_gregset_reg_offset): Add.
+	(amd64_windows_init_abi_common): ... and register.
+
+2020-07-01  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* amd64-windows-tdep.c (amd64_cygwin_core_osabi_sniffer): New.
+	(_initialize_amd64_windows_tdep): Register amd64_cygwin_core_osabi_sniffer.
+
+2020-09-18  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26631
+	* thread.c (thread_find_command): Switch inferior before calling
+	target methods.
+
+2020-09-17  Tom Tromey  <tromey@adacore.com>
+
+	* tic6x-tdep.c (tic6x_gdbarch_init): Update.
+	* target-descriptions.h (struct tdesc_arch_data_deleter): New.
+	(tdesc_arch_data_up): New typedef.
+	(tdesc_use_registers, tdesc_data_alloc): Update.
+	(tdesc_data_cleanup): Don't declare.
+	* target-descriptions.c (tdesc_data_alloc): Return a
+	tdesc_arch_data_up.
+	(tdesc_arch_data_deleter::operator()): Rename from
+	tdesc_data_cleanup.  Change argument type.
+	(tdesc_use_registers): Change early_data to an rvalue reference.
+	(tdesc_use_registers): Don't use delete.
+	* sparc-tdep.c (sparc32_gdbarch_init): Update.
+	* s390-tdep.c (s390_gdbarch_init): Update.
+	* rx-tdep.c (rx_gdbarch_init): Update.
+	* rs6000-tdep.c (rs6000_gdbarch_init): Update.
+	* riscv-tdep.c (riscv_gdbarch_init): Update.
+	* or1k-tdep.c (or1k_gdbarch_init): Update.
+	* nios2-tdep.c (nios2_gdbarch_init): Update.
+	* nds32-tdep.c (nds32_gdbarch_init): Update.
+	* mips-tdep.c (mips_gdbarch_init): Update.
+	* microblaze-tdep.c (microblaze_gdbarch_init): Update.
+	* m68k-tdep.c (m68k_gdbarch_init): Update.
+	* i386-tdep.c (i386_gdbarch_init): Update.
+	* arm-tdep.c (arm_gdbarch_init): Update.
+	* arc-tdep.c (arc_tdesc_init): Update.
+	(arc_gdbarch_init): Update.
+	* aarch64-tdep.c (aarch64_gdbarch_init): Update.
+
+2020-09-17  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-nat.c (ctrl_c_handler): Use 32bit DbgUiRemoteBreakin
+	for WOW64 processes.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (compute_compunit_symtab_includes): Use htab_up.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* value.c (preserve_values): Update.
+	* python/py-type.c (save_objfile_types): Update.
+	* guile/scm-type.c (save_objfile_types): Update.
+	* gdbtypes.h (create_copied_types_hash): Return htab_up.
+	* gdbtypes.c (create_copied_types_hash): Return htab_up.
+	* compile/compile-object-run.c (compile_object_run): Update.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* typeprint.h (class typedef_hash_table) <~typedef_hash_table>:
+	Remove.
+	<m_table>: Now htab_up.
+	* typeprint.c (typedef_hash_table::recursively_update)
+	(typedef_hash_table::add_template_parameters)
+	(typedef_hash_table::typedef_hash_table): Update.
+	(typedef_hash_table::~typedef_hash_table): Remove.
+	(typedef_hash_table::typedef_hash_table)
+	(typedef_hash_table::find_global_typedef)
+	(typedef_hash_table::find_typedef): Update.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* target-descriptions.c (tdesc_use_registers): Use htab_up.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* linespec.c (class decode_compound_collector)
+	<~decode_compound_collector>: Remove.
+	<m_unique_syms>: Now htab_up.
+	(decode_compound_collector::operator ()): Update.
+	(class symtab_collector) <~symtab_collector>: Remove.
+	<m_symtab_table>: Now htab_up.
+	(symtab_collector::operator ()): Update.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* filename-seen-cache.c (filename_seen_cache::filename_seen_cache)
+	(filename_seen_cache::clear): Update.
+	(~filename_seen_cache): Remove.
+	(filename_seen_cache::seen): Update.
+	* filename-seen-cache.h (class filename_seen_cache) <m_tab>: Now
+	htab_up.
+	<~filename_seen_cache>: Remove.
+	<traverse>: Update.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* completer.c (completion_tracker::discard_completions)
+	(completion_tracker::~completion_tracker)
+	(completion_tracker::maybe_add_completion)
+	(completion_tracker::remove_completion)
+	(completion_tracker::recompute_lowest_common_denominator)
+	(completion_tracker::build_completion_result): Update.
+	* completer.h (class completion_tracker) <have_completions>:
+	Update.
+	<m_entries_hash>: Now htab_up.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* breakpoint.c (ambiguous_names_p): Use htab_up.
+
+2020-09-17  Tom Tromey  <tom@tromey.com>
+
+	* auto-load.c (struct auto_load_pspace_info)
+	<~auto_load_pspace_info, auto_load_pspace_info>: Remove.
+	<loaded_script_files, loaded_script_texts>: Change type to
+	htab_up.
+	(~auto_load_pspace_info) Remove.
+	(init_loaded_scripts_info, maybe_add_script_file)
+	(maybe_add_script_text, auto_load_info_scripts): Update.
+
+2020-09-17  Tom Tromey  <tromey@adacore.com>
+
+	* c-exp.y (name_obstack): Now static.
+
+2020-09-17  Chungyi Chi  <demonic@csie.io>
+
+	* riscv-tdep.c (riscv-insn::decode): Fix recorded insn type.
+
+2020-09-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* breakpoint.h (init_catchpoint): Change int parameter to bool.
+	(add_solib_catchpoint): Likewise.
+	* breakpoint.c (struct solib_catchpoint) <is_load>: Change type
+	to bool.
+	(add_solib_catchpoint): Change int parameter/variable to bool.
+	(catch_load_or_unload): Likewise.
+	(init_catchpoint): Likewise.
+	(create_fork_vfork_event_catchpoint): Likewise.
+	(catch_fork_command_1): Likewise.
+	(catch_exec_command_1): Likewise.
+
+2020-09-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdb-gdb.py.in (class StructTypePrettyPrinter) <to_string>:
+	Change instance_flags to m_instance_flags.
+
+2020-09-16  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/26598:
+	* infrun.c (fill_in_stop_func): Use find_pc_partial_function_sym.
+
+2020-09-16  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.c (fbsd_nat_target::wait): Always check for
+	PL_FLAG_EXEC.
+	(fbsd_nat_target::insert_exec_catchpoint)
+	(fbsd_nat_target::remove_exec_catchpoint): Always define.
+	* fbsd-nat.h (fbsd_nat_target::insert_exec_catchpoint)
+	(fbsd_nat_target::remove_exec_catchpoint): Always declare.
+
+2020-09-16  John Baldwin  <jhb@FreeBSD.org>
+
+	* configure.ac: Remove check for kinfo_getvmmap().
+	* configure, config.in: Regenerate.
+	* fbsd-nat.c (fbsd_read_mapping): Remove
+	(fbsd_nat_target::find_memory_regions): Remove the procfs version.
+	(fbsd_nat_target::info_proc): Assume kinfo_getfile() and
+	kinfo_get_vmmap() are always present.
+
+2020-09-16  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.c: Always include support for
+	TARGET_OBJECT_SIGNAL_INFO.
+
+2020-09-16  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.c (fbsd_nat_target::pid_to_exec_file): Always use
+	sysctl and remove procfs fallback.
+
+2020-09-16  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.c: Assume PT_LWPINFO is always defined.
+	* fbsd-nat.h: Likewise.
+
+2020-09-16  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.c (commands_command_1): Make a copy of the 'arg'
+	argument.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Delete.
+	(ada_language): Remove references to ada_language_data.
+	* c-lang.c (c_language_data): Delete.
+	(c_language): Remove references to c_language_data.
+	(cplus_language_data): Delete.
+	(cplus_language): Remove references to cplus_language_data.
+	(asm_language_data): Delete.
+	(asm_language): Remove references to asm_language_data.
+	(minimal_language_data): Delete.
+	(minimal_language): Remove references to minimal_language_data.
+	* d-lang.c (d_language_data): Delete.
+	(d_language): Remove references to d_language_data.
+	* f-lang.c (f_language_data): Delete.
+	(f_language): Remove references to f_language_data.
+	* go-lang.c (go_language_data): Delete.
+	(go_language): Remove references to go_language_data.
+	* language.c (unknown_language_data): Delete.
+	(unknown_language): Remove references to unknown_language_data.
+	(auto_language_data): Delete.
+	(auto_language): Remove references to auto_language_data.
+	* language.h (language_data): Delete struct.
+	(language_defn): No longer inherit from language_data.
+	* m2-lang.c (m2_language_data): Delete.
+	(m2_language): Remove references to m2_language_data.
+	* objc-lang.c (objc_language_data): Delete.
+	(objc_language): Remove references to objc_language_data.
+	* opencl-lang.c (opencl_language_data): Delete.
+	(opencl_language): Remove references to opencl_language_data.
+	* p-lang.c (pascal_language_data): Delete.
+	(pascal_language): Remove references to pascal_language_data.
+	* rust-lang.c (rust_language_data): Delete.
+	(rust_language): Remove references to rust_language_data.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_op_print_tab
+	initializer.
+	(ada_language::opcode_print_table): New member function.
+	* c-lang.c (c_language_data): Remove la_op_print_tab initializer.
+	(c_language::opcode_print_table): New member function.
+	(cplus_language_data): Remove la_op_print_tab initializer.
+	(cplus_language::opcode_print_table): New member function.
+	(asm_language_data): Remove la_op_print_tab initializer.
+	(asm_language::opcode_print_table): New member function.
+	(minimal_language_data): Remove la_op_print_tab initializer.
+	(minimal_language::opcode_print_table): New member function.
+	* d-lang.c (d_language_data): Remove la_op_print_tab initializer.
+	(d_language::opcode_print_table): New member function.
+	* expprint.c (print_subexp_standard): Update call to
+	opcode_print_table.
+	(op_string): Likewise.
+	* f-lang.c (f_language_data): Remove la_op_print_tab initializer.
+	(f_language::opcode_print_table): New member function.
+	* go-lang.c (go_language_data): Remove la_op_print_tab
+	initializer.
+	(go_language::opcode_print_table): New member function.
+	* language.c (unknown_language_data): Remove la_op_print_tab
+	initializer.
+	(unknown_language::opcode_print_table): New member function.
+	(auto_language_data): Remove la_op_print_tab initializer.
+	(auto_language::opcode_print_table): New member function.
+	* language.h (language_data): Remove la_op_print_tab field.
+	(language_defn::opcode_print_table): Declare new member function.
+	* m2-lang.c (m2_language_data): Remove la_op_print_tab
+	initializer.
+	(m2_language::opcode_print_table): New member function.
+	* objc-lang.c (objc_language_data): Remove la_op_print_tab
+	initializer.
+	(objc_language::opcode_print_table): New member function.
+	* opencl-lang.c (opencl_language_data): Remove la_op_print_tab
+	initializer.
+	(opencl_language::opcode_print_table): New member function.
+	* p-lang.c (pascal_language_data): Remove la_op_print_tab
+	initializer.
+	(pascal_language::opcode_print_table): New member function.
+	* rust-lang.c (rust_language_data): Remove la_op_print_tab
+	initializer.
+	(rust_language::opcode_print_table): New member function.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_exp_desc initializer.
+	(ada_language::expression_ops): New member function.
+	* c-lang.c (c_language_data): Remove la_exp_desc initializer.
+	(c_language::expression_ops): New member function.
+	(cplus_language_data): Remove la_exp_desc initializer.
+	(cplus_language::expression_ops): New member function.
+	(asm_language_data): Remove la_exp_desc initializer.
+	(asm_language::expression_ops): New member function.
+	(minimal_language_data): Remove la_exp_desc initializer.
+	(minimal_language::expression_ops): New member function.
+	* d-lang.c (d_language_data): Remove la_exp_desc initializer.
+	(d_language::expression_ops): New member function.
+	* eval.c (evaluate_subexp): Update call to expression_ops.
+	* expprint.c (print_subexp): Likewise.
+	(op_name): Likewise.
+	(dump_subexp_body): Likewise.
+	* f-lang.c (f_language_data): Remove la_exp_desc initializer.
+	(f_language::expression_ops): New member function.
+	* go-lang.c (go_language_data): Remove la_exp_desc initializer.
+	(go_language::expression_ops): New member function.
+	* language.c (language_defn::expression_ops): New function.
+	(unknown_language_data): Remove la_exp_desc initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Remove la_exp_desc field.
+	(language_defn::expression_ops): Declare new member function.
+	* m2-lang.c (m2_language_data): Remove la_exp_desc initializer.
+	(m2_language::expression_ops): New member function.
+	* objc-lang.c (objc_language_data): Remove la_exp_desc
+	initializer.
+	* opencl-lang.c (opencl_language_data): Remove la_exp_desc
+	initializer.
+	(opencl_language::expression_ops): New member function.
+	* p-lang.c (pascal_language_data): Remove la_exp_desc initializer.
+	* parse.c (operator_length): Update call to expression_ops.
+	(exp_iterate): Likewise.
+	* rust-lang.c (rust_language_data): Remove la_exp_desc
+	initializer.
+	(ruse_language::expression_ops): New member function.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_varobj_ops
+	initializer.
+	(ada_language::varobj_ops): New member function.
+	* c-lang.c (c_language_data): Remove la_varobj_ops
+	initializer.
+	(cplus_language_data): Likewise.
+	(cplus_language::varobj_ops): New member function.
+	(asm_language_data): Remove la_varobj_ops 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 (language_defn::varobj_ops): New function.
+	(unknown_language_data): Remove la_varobj_ops
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Remove la_varobj_ops field.
+	(language_defn::varobj_ops): Declare new member function.
+	* m2-lang.c (m2_language_data): Remove la_varobj_ops 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.
+	* varobj.c (varobj_create): Update call to varobj_ops.
+	* varobj.h (default_varobj_ops): Delete define.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_macro_expansion
+	initializer.
+	* c-lang.c (c_language_data): Likewise.
+	(c_language::macro_expansion): New member function.
+	(cplus_language_data): Likewise.
+	(cplus_language::macro_expansion): New member function.
+	(asm_language_data): Likewise.
+	(asm_language::macro_expansion): New member function.
+	(minimal_language_data): Likewise.
+	(minimal_language::macro_expansion): New member function.
+	* d-lang.c (d_language_data): Remove la_macro_expansion
+	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): Remove la_macro_expansion field.
+	(language_defn::macro_expansion): New member function.
+	* m2-lang.c (m2_language_data): Remove la_macro_expansion
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	(objc_language::macro_expansion): New member function.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	(opencl_language::macro_expansion): New member function.
+	* p-lang.c (pascal_language_data): Remove la_macro_expansion
+	initializer.
+	* rust-lang.c (rust_language_data): Likewise.
+	* symtab.c (default_collect_symbol_completion_matches_break_on):
+	Update call to macro_expansion.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_array_ordering
+	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.
+	* dwarf2/read.c (read_array_order): Update for call to
+	array_ordering.
+	* f-lang.c (f_language_data): Remove la_array_ordering
+	initializer.
+	(f_language::array_ordering): New member function.
+	* go-lang.c (go_language_data): Remove la_array_ordering
+	initializer.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_array_ordering field.
+	(language_defn::array_ordering): New member function.
+	* m2-lang.c (m2_language_data): Remove la_array_ordering
+	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-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_case_sensitivity
+	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.
+	(f_language::case_sensitivity): New member function.
+	* go-lang.c (go_language_data): Remove la_case_sensitivity
+	initializer.
+	* language.c (enum case_mode): Moved here from language.h.
+	(case_mode): Make static.
+	(show_case_command): Update for case_sensitivity being a method.
+	(set_case_command): Likewise.
+	(set_range_case): Likewise.
+	(unknown_language_data): Remove la_case_sensitivity initializer.
+	(auto_language_data): Likewise.
+	* language.h (case_mode): Delete, move enum declaration to
+	language.c.
+	(language_data): Delete la_case_sensitivity field.
+	(language_defn::case_sensitivity): New member function.
+	* m2-lang.c (m2_language_data): Remove la_case_sensitivity
+	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-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_range_check
+	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.
+	(f_language::range_checking_on_by_default): New member function.
+	* go-lang.c (go_language_data): Remove la_range_check initializer.
+	* language.c (enum range_mode): Moved here from language.h.
+	(range_mode): Made static.
+	(show_range_command): Update to use
+	range_checking_on_by_default.
+	(set_range_command): Likewise.
+	(set_range_case): Likewise.
+	(unknown_language_data): Remove la_range_check initializer.
+	(auto_language_data): Likewise.
+	* language.h (range_mode): Delete.  Enum definition moved to
+	language.c.
+	(language_data): Remove la_range_check field.
+	(language_defn::range_checking_on_by_default): New member
+	function.
+	* m2-lang.c (m2_language_data): Remove la_range_check initializer.
+	(m2_language::range_checking_on_by_default): New member function.
+	* objc-lang.c (objc_language_data): Remove la_range_check
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	(pascal_language::range_checking_on_by_default): New member
+	function.
+	* rust-lang.c (rust_language_data): Remove la_range_check
+	initializer.
+	(rust_language::range_checking_on_by_default): New member
+	function.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2/read.c (dwarf2_physname): Remove special case for
+	language_go.
+	* go-lang.c (go_language::store_sym_names_in_linkage_form_p): New
+	member function.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove
+	la_store_sym_names_in_linkage_form_p initializer.
+	(ada_language::store_sym_names_in_linkage_form_p): New member
+	function.
+	* c-lang.c (c_language_data): Remove
+	la_store_sym_names_in_linkage_form_p initializer.
+	(c_language::store_sym_names_in_linkage_form_p): New member
+	function.
+	(cplus_language_data): Remove la_store_sym_names_in_linkage_form_p
+	initializer.
+	(asm_language_data): Likewise.
+	(asm_language::store_sym_names_in_linkage_form_p): New member
+	function.
+	(minimal_language_data): Remove
+	la_store_sym_names_in_linkage_form_p initializer.
+	(minimal_language::store_sym_names_in_linkage_form_p): New member
+	function.
+	* d-lang.c (d_language_data): Remove
+	la_store_sym_names_in_linkage_form_p initializer.
+	* dwarf2/read.c (dwarf2_physname): Update call to
+	store_sym_names_in_linkage_form_p.
+	* f-lang.c (f_language_data): Remove
+	la_store_sym_names_in_linkage_form_p initializer.
+	* go-lang.c (go_language_data): Remove
+	la_store_sym_names_in_linkage_form_p initializer.
+	* language.c (unknown_language_data): Remove
+	la_store_sym_names_in_linkage_form_p initializer.
+	(unknown_language::store_sym_names_in_linkage_form_p): New member
+	function.
+	(auto_language_data): Remove la_store_sym_names_in_linkage_form_p
+	initializer.
+	(auto_language::store_sym_names_in_linkage_form_p): New member
+	function.
+	* language.h (language_data): Remove
+	la_store_sym_names_in_linkage_form_p member variable.
+	(language_defn::store_sym_names_in_linkage_form_p): New member
+	function.
+	* m2-lang.c (m2_language_data): Remove
+	la_store_sym_names_in_linkage_form_p 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-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove string_lower_bound
+	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): Remove string_lower_bound field.
+	(language_defn::string_lower_bound): New member function.
+	* m2-lang.c (m2_language_data): Remove string_lower_bound
+	initializer.
+	(m2_language::string_lower_bound): New member function.
+	* objc-lang.c (objc_language_data): Remove string_lower_bound
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+	* valops.c (value_cstring): Update call to string_lower_bound.
+	(value_string): Likewise.
+	* value.c (allocate_repeated_value): Likewise.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* valops.c (value_repeat): Fix incorrect argument name in comment.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove c_style_arrays
+	initializer.
+	(ada_language::c_style_arrays_p): New member fuction.
+	* c-lang.c (c_language_data): Remove c_style_arrays
+	initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	* eval.c (ptrmath_type_p): Update call to c_style_arrays_p.
+	* f-lang.c (f_language_data): Remove c_style_arrays initializer.
+	(f_language::c_style_arrays_p): New member function.
+	* go-lang.c (go_language_data): Remove c_style_arrays initializer.
+	* infcall.c (value_arg_coerce): Update call to c_style_arrays_p.
+	* language.c (unknown_language_data): Remove c_style_arrays
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Remove c_style_arrays field.
+	(language_defn::c_style_arrays_p): New member function.
+	* m2-lang.c (m2_language_data): Remove c_style_arrays initializer.
+	(m2_language::c_style_arrays_p): New member function.
+	* objc-lang.c (objc_language_data): Remove c_style_arrays
+	initializer.
+	* opencl-lang.c (opencl_language_data): Likewise.
+	* p-lang.c (pascal_language_data): Likewise.
+	* rust-lang.c (rust_language_data): Likewise.
+	* valarith.c (value_subscript): Update call to c_style_arrays_p,
+	and update local variable to a bool.
+	* valops.c (value_cast): Update call to c_style_arrays_p.
+	(value_array): Likewise.
+	* value.c (coerce_array): Likewise.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_language 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): Remove la_language field.
+	(language_defn::language_defn): Initialise la_language field.
+	(language_defn::la_language): New member variable.
+	* m2-lang.c (m2_language_data): Remove la_language field.
+	* 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-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_extensions): Delete, moved into
+	ada_language::filename_extensions.
+	(ada_language_data): Remove la_filename_extensions initializer.
+	(ada_language::filename_extensions): New member function.
+	* c-lang.c (c_extensions): Delete, moved into
+	c_language::filename_extensions.
+	(c_language_data): Remove la_filename_extensions initializer.
+	(c_language::filename_extensions): New member function.
+	(cplus_extensions): Delete, moved into
+	cplus_language::filename_extensions.
+	(cplus_language_data): Remove la_filename_extensions initializer.
+	(cplus_language::filename_extensions): New member function.
+	(asm_extensions): Delete, moved into
+	asm_language::filename_extensions.
+	(asm_language_data): Remove la_filename_extensions initializer.
+	(asm_language::filename_extensions): New member function.
+	(minimal_language_data): Remove la_filename_extensions
+	initializer.
+	* d-lang.c (d_extensions): Delete, moved into
+	d_language::filename_extensions.
+	(d_language_data): Remove la_filename_extensions initializer.
+	(d_language::filename_extensions): New member function.
+	* f-lang.c (f_extensions): Delete, moved into
+	f_language::filename_extensions.
+	(f_language_data): Remove la_filename_extensions initializer.
+	(f_language::filename_extensions): New member function.
+	* go-lang.c (go_language_data): Remove la_filename_extensions
+	initializer.
+	* language.c (add_set_language_command): Update now that
+	filename_extensions returns a vector.
+	(unknown_language_data): Remove la_filename_extensions
+	initializer.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Remove la_filename_extensions field.
+	(language_defn::filename_extensions): New member function.
+	* m2-lang.c (m2_language_data): Remove la_filename_extensions
+	initializer.
+	* objc-lang.c (objc_extensions): Delete, moved into
+	objc_language::filename_extensions.
+	(objc_language_data): Remove la_filename_extensions initializer.
+	(objc_language::filename_extensions): New member function.
+	* opencl-lang.c (opencl_language_data): Remove
+	la_filename_extensions initializer.
+	* p-lang.c (pascal_extensions): Delete, moved into
+	pascal_language::filename_extensions.
+	(pascal_language_data): Remove la_filename_extensions initializer.
+	(pascal_language::filename_extensions): New member function.
+	* rust-lang.c (rust_extensions): Delete, moved into
+	rust_language::filename_extensions.
+	(rust_language_data): Remove la_filename_extensions initializer.
+	(rust_language::filename_extensions): New member function.
+	* symfile.c (add_filename_language): Add new assert.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_name and
+	la_natural_name initializers.
+	(ada_language::name): New member function.
+	(ada_language::natural_name): New member function.
+	* c-lang.c (c_language_data): Remove la_name and
+	la_natural_name initializers.
+	(c_language::name): New member function.
+	(c_language::natural_name): New member function.
+	(cplus_language_data): Remove la_name and
+	la_natural_name initializers.
+	(cplus_language::name): New member function.
+	(cplus_language::natural_name): New member function.
+	(asm_language_data): Remove la_name and
+	la_natural_name initializers.
+	(asm_language::name): New member function.
+	(asm_language::natural_name): New member function.
+	(minimal_language_data): Remove la_name and
+	la_natural_name initializers.
+	(minimal_language::name): New member function.
+	(minimal_language::natural_name): New member function.
+	* compile/compile.c (compile_to_object): Update call to
+	lanugage_defn::name.
+	* d-lang.c (d_language_data): Remove la_name and
+	la_natural_name initializers.
+	(d_language::name): New member function.
+	(d_language::natural_name): New member function.
+	* expprint.c (print_subexp_standard): Update call to
+	language_defn::name.
+	(dump_raw_expression): Likewise
+	(dump_prefix_expression): Likewise.
+	* f-lang.c (f_language_data): Remove la_name and
+	la_natural_name initializers.
+	(f_language::name): New member function.
+	(f_language::natural_name): New member function.
+	* go-lang.c (go_language_data): Remove la_name and
+	la_natural_name initializers.
+	(go_language::name): New member function.
+	(go_language::natural_name): New member function.
+	* language.c (show_language_command): Update call to
+	language_defn::name.
+	(set_language_command): Likewise.
+	(language_enum): Likewise.
+	(language_str): Likewise.
+	(add_set_language_command): Likewise, use
+	language_defn::natural_name in the doc string.
+	(unknown_language_data): Remove la_name and
+	la_natural_name initializers.
+	(unknown_language::name): New member function.
+	(unknown_language::natural_name): New member function.
+	(auto_language_data): Remove la_name and
+	la_natural_name initializers.
+	(auto_language::name): New member function.
+	(auto_language::natural_name): New member function.
+	(language_lookup_primitive_type_as_symbol): Update call to
+	language_defn::name.
+	* language.h (language_data): Remove la_name and la_natural_name
+	member variables.
+	(language_defn::name): New member function.
+	(language_defn::natural_name): New member function.
+	* m2-lang.c (m2_language_data): Remove la_name and
+	la_natural_name initializers.
+	(m2_language::name): New member function.
+	(m2_language::natural_name): New member function.
+	* mi/mi-cmd-var.c (mi_cmd_var_info_expression): Update call to
+	language_defn::natural_name.
+	* objc-lang.c (objc_language_data): Remove la_name and
+	la_natural_name initializers.
+	(objc_language::name): New member function.
+	(objc_language::natural_name): New member function.
+	* opencl-lang.c (opencl_language_data): Remove la_name and
+	la_natural_name initializers.
+	(opencl_language::name): New member function.
+	(opencl_language::natural_name): New member function.
+	* p-lang.c (pascal_language_data): Remove la_name and
+	la_natural_name initializers.
+	(pascal_language::name): New member function.
+	(pascal_language::natural_name): New member function.
+	* rust-lang.c (rust_language_data): Remove la_name and
+	la_natural_name initializers.
+	(rust_language::name): New member function.
+	(rust_language::natural_name): New member function.
+	* symtab.c (lookup_language_this): Update call to
+	language_defn::name.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove la_name_of_this
+	initializer.
+	* ax-gdb.c (gen_expr): Update call to name_of_this.
+	* c-exp.y (classify_name): Likewise.
+	* c-lang.c (c_language_data): Remove la_name_of_this initializer.
+	(cplus_language_data): Likewise.
+	(cplus_language::name_of_this): New member function.
+	(asm_language_data): Remove la_name_of_this initializer.
+	(minimal_language_data): Likewise.
+	* d-lang.c (d_language_data): Likewise.
+	(d_language::name_of_this): New member function.
+	* expprint.c (print_subexp_standard): Update call to name_of_this.
+	* f-lang.c (f_language_data): Remove la_name_of_this initializer.
+	* go-lang.c (go_language_data): Likewise.
+	* language.c (unknown_language_data): Likewise.
+	(unknown_language::name_of_this): New member function.
+	(auto_language_data): Remove la_name_of_this initializer.
+	(auto_language::name_of_this): New member function.
+	* language.h (language_data): Delete la_name_of_this member
+	variable.
+	(language_defn::name_of_this): New member function.
+	* m2-lang.c (m2_language_data): Remove la_name_of_this
+	initializer.
+	* objc-lang.c (objc_language_data): Likewise.
+	(objc_language::name_of_this): New member function.
+	* opencl-lang.c (opencl_language_data): Remove la_name_of_this
+	initializer.
+	* p-lang.c (pascal_language_data): Likewise.
+	(pascal_language::name_of_this): New member function.
+	* rust-lang.c (rust_language_data): Remove la_name_of_this
+	initializer.
+	* symtab.c (lookup_language_this): Update call to name_of_this.
+	(lookup_symbol_aux): Likewise.
+	* valops.c (value_of_this): Likewise.
+
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (ada_language_data): Remove
+	la_struct_too_deep_ellipsis initializer.
+	(ada_language::struct_too_deep_ellipsis): New member function.
+	* c-lang.c (c_language_data): Remove la_struct_too_deep_ellipsis
+	initializer.
+	(cplus_language_data): Likewise.
+	(asm_language_data): Likewise.
+	(minimal_language_data): Likewise.
+	* cp-valprint.c (cp_print_value): Update call to
+	struct_too_deep_ellipsis.
+	* d-lang.c (d_language_data): Remove la_struct_too_deep_ellipsis
+	initializer.
+	* f-lang.c (f_language_data): Likewise.
+	(f_language::struct_too_deep_ellipsis): New member function.
+	* go-lang.c (go_language_data): Remove la_struct_too_deep_ellipsis
+	initializer.
+	* language.c (unknown_language_data): Likewise.
+	(auto_language_data): Likewise.
+	* language.h (language_data): Delete la_struct_too_deep_ellipsis
+	member variable.
+	(language_defn::struct_too_deep_ellipsis): New member function.
+	* m2-lang.c (m2_language_data): Remove la_struct_too_deep_ellipsis
+	initializer.Q
+	* 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.
+	* valprint.c (val_print_check_max_depth): Update call to
+	struct_too_deep_ellipsis.
+
+2020-09-16  Felix Willgerodt  <felix.willgerodt@intel.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-09-15  Tom Tromey  <tom@tromey.com>
+
+	* f-valprint.c (f_value_print_inner) <case TYPE_CODE_INT>:
+	Remove.
+
+2020-09-15  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_value_print_inner): Remove TYPE_CODE_MEMBERPTR
+	and TYPE_CODE_METHODPTR cases.
+	* c-valprint.c (c_value_print_memberptr): Move to valprint.c.
+	(c_value_print_inner): Update.
+	* valprint.c (generic_value_print_memberptr): New function, from
+	c_value_print_memberptr.
+	(generic_value_print): Use it.  Call cplus_print_method_ptr.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* python/python-internal.h (PyInt_FromLong): Remove define.
+	* python/py-value.c (convert_value_from_python): Use
+	gdb_py_object_from_longest.
+	* python/py-type.c (typy_get_code): Use
+	gdb_py_object_from_longest.
+	* python/py-symtab.c (salpy_get_line): Use
+	gdb_py_object_from_longest.
+	* python/py-symbol.c (sympy_get_addr_class, sympy_line): Use
+	gdb_py_object_from_longest.
+	* python/py-record.c (recpy_gap_reason_code): Use
+	gdb_py_object_from_longest.
+	* python/py-record-btrace.c (recpy_bt_insn_size)
+	(recpy_bt_func_level, btpy_list_count): Use
+	gdb_py_object_from_longest.
+	* python/py-infthread.c (gdbpy_create_ptid_object): Use
+	gdb_py_object_from_longest.  Fix error handling.
+	* python/py-framefilter.c (bootstrap_python_frame_filters): Use
+	gdb_py_object_from_longest.
+	* python/py-frame.c (frapy_type, frapy_unwind_stop_reason): Use
+	gdb_py_object_from_longest.
+	* python/py-breakpoint.c (bppy_get_type, bppy_get_number)
+	(bppy_get_thread, bppy_get_task, bppy_get_hit_count)
+	(bppy_get_ignore_count): Use gdb_py_object_from_longest.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* python/python.c (gdbpy_parameter_value): Use
+	gdb_py_object_from_ulongest.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* python/py-infevents.c (create_register_changed_event_object):
+	Use gdb_py_object_from_longest.
+	* python/py-exitedevent.c (create_exited_event_object): Use
+	gdb_py_object_from_longest.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* python/python.c (gdbpy_parameter_value): Use
+	gdb_py_object_from_longest.
+	* python/py-type.c (convert_field, typy_range): Use
+	gdb_py_object_from_longest.
+	* python/py-tui.c (gdbpy_tui_width, gdbpy_tui_height): Use
+	gdb_py_object_from_longest.
+	* python/py-lazy-string.c (stpy_get_length): Use
+	gdb_py_object_from_longest.
+	* python/py-infthread.c (thpy_get_num, thpy_get_global_num): Use
+	gdb_py_object_from_longest.
+	* python/py-infevents.c (create_memory_changed_event_object): Use
+	gdb_py_object_from_longest.
+	* python/py-inferior.c (infpy_get_num): Use
+	gdb_py_object_from_longest.
+	(infpy_get_pid): Likewise.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* python/python-internal.h (gdb_py_long_from_ulongest): Remove
+	defines.
+	* python/py-value.c (valpy_long): Use
+	gdb_py_object_from_ulongest.
+	* python/py-symtab.c (salpy_get_pc): Use
+	gdb_py_object_from_ulongest.
+	(salpy_get_last): Likewise.
+	* python/py-record-btrace.c (recpy_bt_insn_pc): Use
+	gdb_py_object_from_ulongest.
+	* python/py-lazy-string.c (stpy_get_address): Use
+	gdb_py_object_from_ulongest.
+	* python/py-frame.c (frapy_pc): Use gdb_py_object_from_ulongest.
+	* python/py-arch.c (archpy_disassemble): Use
+	gdb_py_object_from_ulongest and gdb_py_object_from_longest.  Fix
+	error handling.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* python/python-internal.h (gdb_py_long_from_longest): Remove
+	defines.
+	* python/py-value.c (valpy_long): Use gdb_py_object_from_longest.
+	* python/py-type.c (convert_field, typy_get_sizeof): Use
+	gdb_py_object_from_longest.
+	* python/py-record-btrace.c (btpy_list_index): Use
+	gdb_py_object_from_longest.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* python/python-internal.h (PyInt_FromSsize_t): Remove define.
+	* python/py-record.c (recpy_element_number): Use
+	gdb_py_object_from_longest.
+	(recpy_gap_number): Likewise.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* top.c (ui::ui): Update.
+	(highest_ui_num): Remove.
+	* top.h (struct ui) <num>: Remove.
+
+2020-09-15  Tom Tromey  <tromey@adacore.com>
+
+	* unittests/memory-map-selftests.c (valid_mem_map): Now array.
+	* ui-style.c (ansi_regex_text): Now array.
+	* rust-exp.y (number_regex_text): Now array.
+	* linespec.c (linespec_quote_characters): Now array.
+	* jit.c (jit_break_name, jit_descriptor_name, reader_init_fn_sym):
+	Now arrays.
+
+2020-09-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* debuginfod-support.c (debuginfod_client_deleter): New.
+	(debuginfod_client_up): New.
+	(debuginfod_init): Return debuginfod_client_up.
+	(debuginfod_source_query): Adjust.
+	(debuginfod_debuginfo_query): Adjust.
+
+2020-09-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* debuginfod-support.c (debuginfod_source_query): Use
+	make_unique_xstrdup.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_INSTANCE_FLAGS): Remove, replace all uses
+	with `type::instance_flags`.
+
+2020-09-14  Michael Mullin  <masmullin@gmail.com>
+
+	* xml-tdesc.c [!defined(HAVE_LIBEXPAT)] (tdesc_parse_xml):
+	Remove baton parameter.
+
+2020-09-14  Pedro Alves  <pedro@palves.net>
+
+	* Makefile.in (SELFTESTS_SRCS): Add
+	unittests/enum-flags-selftests.c.
+	* btrace.c (ftrace_update_caller, ftrace_fixup_calle): Use
+	btrace_function_flags instead of enum btrace_function_flag.
+	* compile/compile-c-types.c (convert_qualified): Use
+	enum_flags::raw.
+	* compile/compile-cplus-symbols.c (convert_one_symbol)
+	(convert_symbol_bmsym):
+	* compile/compile-cplus-types.c (compile_cplus_convert_method)
+	(compile_cplus_convert_struct_or_union_methods)
+	(compile_cplus_instance::convert_qualified_base):
+	* go-exp.y (parse_string_or_char): Add cast to int.
+	* unittests/enum-flags-selftests.c: New file.
+	* record-btrace.c (btrace_thread_flag_to_str): Change parameter's
+	type to btrace_thread_flags from btrace_thread_flag.
+	(record_btrace_cancel_resume, record_btrace_step_thread): Change
+	local's type to btrace_thread_flags from btrace_thread_flag.  Add
+	cast in DEBUG call.
+
+2020-09-14  Pedro Alves  <pedro@palves.net>
+
+	* c-typeprint.c (c_type_print_modifier): Adjust to rename.
+	* gdbtypes.c (address_space_name_to_int): Rename to ...
+	(address_space_name_to_type_instance_flags): ... this.
+	(address_space_int_to_name): Rename to ...
+	(address_space_type_instance_flags_to_name): ... this.
+	* gdbtypes.h (address_space_name_to_int): Rename to ...
+	(address_space_name_to_type_instance_flags): ... this.
+	(address_space_int_to_name): Rename to ...
+	(address_space_type_instance_flags_to_name): ... this.
+	* type-stack.c (type_stack::insert): Adjust to rename.
+	* type-stack.h (type_stack::insert): Likewise.
+
+2020-09-14  Pedro Alves  <pedro@palves.net>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* avr-tdep.c (avr_address_class_type_flags): Return
+	type_instance_flags.
+	(avr_address_class_type_flags_to_name): Take a
+	type_instance_flags.
+	(avr_address_class_name_to_type_flags): Return bool and take a
+	type_instance_flags.
+	* d-lang.c (build_d_types): Use type::set_instance_flags.
+	* ft32-tdep.c (ft32_address_class_type_flags): Return
+	type_instance_flags.
+	(ft32_address_class_type_flags_to_name): Take a
+	type_instance_flags.
+	(ft32_address_class_name_to_type_flags): Return bool and take a
+	type_instance_flags.
+	(ft32_gdbarch_init): Use type::set_instance_flags.
+	* eval.c (fake_method::fake_method): Use type::set_instance_flags.
+	* gdbarch.h, gdbarch.c: Regenerate.
+	* gdbarch.sh (address_class_type_flags): Use type_instance_flags.
+	(address_class_name_to_type_flags): Use type_instance_flags and
+	bool.
+	* gdbtypes.c (address_space_name_to_int)
+	(address_space_int_to_name, make_qualified_type): Use
+	type_instance_flags.
+	(make_qualified_type): Use type_instance_flags and
+	type::set_instance_flags.
+	(make_type_with_address_space, make_cv_type, make_vector_type)
+	(check_typedef): Use type_instance_flags.
+	(recursive_dump_type): Cast type_instance_flags to unsigned for
+	printing.
+	(copy_type_recursive): Use type::set_instance_flags.
+	(gdbtypes_post_init): Use type::set_instance_flags.
+	* gdbtypes.h (struct type) <instance_flags>: Rename to ...
+	<m_instance_flags>: ... this.
+	<instance_flags, set_instance_flags>: New methods.
+	(TYPE_INSTANCE_FLAGS): Use the instance_flags method.
+	(SET_TYPE_INSTANCE_FLAGS): New.
+	(address_space_name_to_int, address_space_int_to_name)
+	(make_type_with_address_space): Pass flags using
+	type_instance_flags instead of int.
+	* stabsread.c (cleanup_undefined_types_noname): Use
+	type::set_instance_flags.
+	* s390-tdep.c (s390_address_class_type_flags): Return
+	type_instance_flags.
+	(s390_address_class_type_flags_to_name): Take a
+	type_instance_flags.
+	(s390_address_class_name_to_type_flags): Return bool and take a
+	type_instance_flags.
+	* type-stack.c (type_stack::follow_types): Use
+	type_instance_flags.
+	* dwarf2/read.c (read_tag_pointer_type): Use type_instance_flags.
+
+2020-09-14  Tom Tromey  <tromey@adacore.com>
+
+	* x86-tdep.h (x86_in_indirect_branch_thunk): Update.
+	* x86-tdep.c (x86_is_thunk_register_name)
+	(x86_in_indirect_branch_thunk): Update.
+	* sparc64-tdep.c (sparc64_fpu_register_names)
+	(sparc64_cp0_register_names, sparc64_register_names)
+	(sparc64_pseudo_register_names): Now const.
+	* sparc-tdep.h (struct gdbarch_tdep) <fpu_register_names,
+	cp0_registers_num>: Now const.
+	* sparc-tdep.c (sparc_core_register_names)
+	(sparc32_fpu_register_names, sparc32_cp0_register_names)
+	(sparc32_pseudo_register_names): Now const.
+	(validate_tdesc_registers): Update.
+	* rust-lang.c (rust_extensions): Now const.
+	* p-lang.c (p_extensions): Now const.
+	* objc-lang.c (objc_extensions): Now const.
+	* nto-tdep.c (nto_thread_state_str): Now const.
+	* moxie-tdep.c (moxie_register_names): Now const.
+	* mips-tdep.h (struct gdbarch_tdep) <mips_processor_reg_names>:
+	Now const.
+	* mips-tdep.c (mips_generic_reg_names, mips_tx39_reg_names)
+	(mips_linux_reg_names): Now const.
+	(mips_gdbarch_init): Update.
+	* microblaze-tdep.c (microblaze_register_names): Now const.
+	* m68k-tdep.c (m68k_register_names): Now const.
+	* m32r-tdep.c (m32r_register_names): Now const.
+	* ia64-tdep.c (ia64_register_names): Now const.
+	* i386-tdep.h (struct gdbarch_tdep) <register_names,
+	ymmh_register_names, ymm16h_regnum, mpx_register_names,
+	k_register_names, zmmh_register_names, xmm_avx512_register_names,
+	ymm_avx512_register_names, pkeys_register_names>: Now const.
+	* i386-tdep.c (i386_register_names, i386_zmm_names)
+	(i386_zmmh_names, i386_k_names, i386_ymm_names, i386_ymmh_names)
+	(i386_mpx_names, i386_pkeys_names, i386_bnd_names)
+	(i386_mmx_names, i386_byte_names, i386_word_names): Now const.
+	* f-lang.c (f_extensions): Now const.
+	* d-lang.c (d_extensions): Now const.
+	* csky-tdep.c (csky_register_names): Now const.
+	* charset.c (default_charset_names, charset_enum): Now const.
+	(_initialize_charset): Update.
+	* c-lang.c (c_extensions, cplus_extensions, asm_extensions): Now
+	const.
+	* bsd-uthread.c (bsd_uthread_solib_names): Now const.
+	(bsd_uthread_solib_loaded): Update.
+	(bsd_uthread_state): Now const.
+	* amd64-tdep.c (amd64_register_names, amd64_ymm_names)
+	(amd64_ymm_avx512_names, amd64_ymmh_names)
+	(amd64_ymmh_avx512_names, amd64_mpx_names, amd64_k_names)
+	(amd64_zmmh_names, amd64_zmm_names, amd64_xmm_avx512_names)
+	(amd64_pkeys_names, amd64_byte_names, amd64_word_names)
+	(amd64_dword_names): Now const.
+	* agent.c (can_use_agent_enum): Now const.
+	* ada-tasks.c (task_states, long_task_states): Now const.
+	* ada-lang.c (known_runtime_file_name_patterns)
+	(known_auxiliary_function_name_patterns, attribute_names)
+	(standard_exc, ada_extensions): Now const.
+
+2020-09-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* bcache.h (struct bcache) <bcache>: Remove constructor.
+	<m_hash_function, m_compare_function>: Remove.
+	<~bcache>: Make virtual.
+	<compare>: Remove static method, introduce virtual method.
+	<default_hash>: Remove.
+	<hash>: New virtual method.
+	* bcache.c (bcache::expand_hash_table): Update.
+	(bcache::insert): Update.
+	(bcache::hash): New.
+	(bcache::compare): Update comment and parameter names.
+	* gdbtypes.c (types_deeply_equal): Update.
+	* psymtab.h (struct psymbol_bcache): New struct.
+	(class psymtab_storage) <psymtab_storage>: Make default.
+	<psymbol_cache>: Change type to psymbol_bcache.
+	* psymtab.c (psymtab_storage::psymtab_storage): Remove.
+	(psymbol_hash): Change to...
+	(psymbol_bcache::hash): ... this.
+	(psymbol_compare): Change to...
+	(psymbol_bcache::compare): ... this.
+
+2020-09-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-nat.c (linux_nat_wait_1): Don't use inferior_ptid when
+	checking for initial lwp.
+
+2020-09-14  Tom Tromey  <tromey@adacore.com>
+
+	* m68k-tdep.c (m68k_extract_return_value): Use
+	pointer_result_regnum.
+	(m68k_store_return_value): Likewise.
+	(m68k_reg_struct_return_p): Handle vectors and arrays.
+	(m68k_return_value): Handle arrays.
+	(m68k_svr4_return_value): Fix single-element aggregate handling.
+	Handle long double.  Adjust for embedded ABI.
+	(m68k_svr4_init_abi): Set pointer_result_regnum.
+	(m68k_embedded_init_abi): New function.
+	(m68k_gdbarch_init): Handle Tag_GNU_M68K_ABI_FP.
+	(m68k_osabi_sniffer): New function.
+	(_initialize_m68k_tdep): Register osabi sniffer.
+	* m68k-tdep.h (struct gdbarch_tdep) <pointer_result_regnum>: New
+	member.
+
+2020-09-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* xml-support.c (xml_fetch_content_from_file): Replace xfree
+	with gdb::unique_xmalloc_ptr<char>.
+
+2020-09-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* xml-support.h (xml_fetch_another): Change type to be a
+	function_view.
+	(xml_process_xincludes): Remove baton parameter.
+	(xml_fetch_content_from_file): Change baton parameter to
+	dirname.
+	* xml-support.c (struct xinclude_parsing_data)
+	<xinclude_parsing_data>: Remove baton parameter.
+	<fetcher_baton>: Remove.
+	(xinclude_start_include): Adjust.
+	(xml_process_xincludes): Adjust.
+	(xml_fetch_content_from_file): Replace baton parameter with
+	dirname.
+	* xml-syscall.c (syscall_parse_xml): Remove baton parameter.
+	(xml_init_syscalls_info): Use a lambda.
+	* xml-tdesc.c (tdesc_parse_xml): Remove baton parameter.
+	(file_read_description_xml): Use a lambda.
+	(fetch_available_features_from_target): Change baton parameter
+	to target_ops.
+	(target_read_description_xml): Use a lambda.
+	(target_fetch_description_xml): Use a lambda.
+	(string_read_description_xml): Update.
+
+2020-09-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (TYPE_ENDIANITY_NOT_DEFAULT): Remove, replace all
+	uses with type::endianity_is_not_default.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <endianity_is_not_default,
+	set_endianity_is_not_default>: New methods.
+	(TYPE_ENDIANITY_NOT_DEFAULT): Use
+	type::endianity_is_not_default, change all write call sites to
+	use type::set_endianity_is_not_default.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_FIXED_INSTANCE): Remove, replace all
+	uses with type::is_fixed_instance.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <is_fixed_instance,
+	set_is_fixed_instance>: New methods.
+	(TYPE_FIXED_INSTANCE): Use type::is_fixed_instance, change all
+	write call sites to use type::set_is_fixed_instance.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_GNU_IFUNC): Remove, replace all
+	uses with type::is_gnu_ifunc.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <is_gnu_ifunc, set_is_gnu_ifunc>: New methods.
+	(TYPE_GNU_IFUNC): Use type::is_gnu_ifunc, change all write call sites to
+	use type::set_is_gnu_ifunc.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_STUB_SUPPORTED): Remove, replace all
+	uses with type::stub_is_supported.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <stub_is_supported, set_stub_is_supported>: New methods.
+	(TYPE_STUB_SUPPORTED): Use type::stub_is_supported, change all write call sites to
+	use type::set_stub_is_supported.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_VECTOR): Remove, replace all
+	uses with type::is_vector.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <is_vector, set_is_vector>: New methods.
+	(TYPE_VECTOR): Use type::is_vector, change all write call sites to
+	use type::set_is_vector.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_VARARGS): Remove, replace all
+	uses with type::has_varargs.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <has_varargs, set_has_varargs>: New methods.
+	(TYPE_VARARGS): Use type::has_varargs, change all write call sites to
+	use type::set_has_varargs.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_PROTOTYPED): Remove, replace all
+	uses with type::is_prototyped.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <is_prototyped, set_is_prototyped>:
+	New methods.
+	(TYPE_PROTOTYPED): Use type::is_prototyped, change all write
+	call sites to use type::set_is_prototyped.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_TARGET_STUB): Remove, replace all
+	uses with type::target_is_stub.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <target_is_stub, set_target_is_stub>:
+	New methods.
+	(TYPE_TARGET_STUB): Use type::is_stub, change all write call
+	sites to use type::set_target_is_stub.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_STUB): Remove, replace all
+	uses with type::is_stub.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <is_stub, set_is_stub>: New methods.
+	(TYPE_STUB): Use type::is_stub, change all write call sites to
+	use type::set_is_stub.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_NOSIGN): Remove, replace all uses with
+	type::has_no_signedness.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <has_no_signedness,
+	set_has_no_signedness>: New methods.
+	(TYPE_NOSIGN): Use type::has_no_signedness, change all write
+	call sites to use type::set_has_no_signedness.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_UNSIGNED): Remove, replace all uses with
+	type::is_unsigned.
+
+2020-09-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <is_unsigned, set_is_unsigned>: New
+	methods.
+	(TYPE_UNSIGNED): Use type::is_unsigned.  Change all write call
+	sites to use type::set_is_unsigned.
+
+2020-09-14  Fredrik Hederstierna  <fredrik.hederstierna@verisure.com>
+	    Adam Renquinha <arenquinha@cimeq.qc.ca>
+
+	* arm-tdep.c (arm_m_exception_cache): Try use correct stack
+	pointer and stack frame offset when unwinding.
+
+2020-09-13  Pedro Alves  <pedro@palves.net>
+
+	* NEWS: Document "-break-insert --qualified".
+	* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Handle "--qualified".
+
+2020-09-13  Pedro Alves  <pedro@palves.net>
+
+	* linespec.c (classify_mtype, compare_msyms): Delete.
+	(search_minsyms_for_name): Remove classification logic.  Instead
+	filter out trampoline symbols if we also found an external
+	function of the same name.
+
+2020-09-13  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.
+
+2020-09-13  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 10 branch created (8087c3fa8b5d695e3e29e69d70d0b35ec902ac59):
+	* version.in: Bump version to 11.0.50.DATE-git.
+
+2020-09-12  Joel Brobecker  <brobecker@adacore.com>
+
+	* infrun.c (namespace selftests): Only define #if GDB_SELF_TEST.
+
+2020-09-11  Moritz Riesterer  <moritz.riesterer@intel.com>
+	    Felix Willgerodt  <Felix.Willgerodt@intel.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.
+
+2020-09-11  Felix Willgerodt  <felix.willgerodt@intel.com>
+
+	* i386-tdep.c (i386_zmm_type): Fix field names.
+	(i386_ymm_type): Fix field names.
+
+2020-09-11  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.c: Fix typo in the help message of the
+	"set breakpoint condition-evaluation" command.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.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.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
+
+	* fork-inferior.c (startup_inferior): Avoid double free.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
+
+	* netbsd-nat.h (netbsd_nat::qxfer_siginfo): Add.
+	* netbsd-nat.c (netbsd_nat::qxfer_siginfo): Likewise.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
+
+	* netbsd-nat.h (netbsd_nat::enable_proc_events): Add.
+	* netbsd-nat.c: Include <sys/ptrace.h>.
+	* (netbsd_nat::enable_proc_events): Add.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.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.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.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.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
+
+	* configure.nat (NATDEPFILES): Add nat/netbsd-nat.o when needed.
+
+2020-09-10  Kamil Rytarowski  <n54@gmx.com>
+
+	* netbsd-nat.h: New file.
+	* netbsd-nat.c: Likewise.
+
+2020-09-09  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (remove_extra_symbols): Do not increment when
+	removing an element
+
+2020-09-08  Tom Tromey  <tromey@adacore.com>
+
+	* gdb_bfd.c (gdb_bfd_open): Call bfd_fopen when fstat fails.
+
+2020-09-08  Tom Tromey  <tromey@adacore.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.
+
+2020-09-07  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infrun.c (fetch_inferior_event): Use
+	`switch_to_target_no_thread` to switch the target.
+
+2020-09-06  Tom Tromey  <tom@tromey.com>
+
+	* symfile.h (dwarf2_free_objfile): Don't declare.
+
+2020-09-03  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* gdb/i386-tdep.c (i386_floatformat_for_type): Added conditions
+	to match 16 byte real/complex type generated by Flang compiler.
+
+2020-09-03  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoint/26546
+	* dwarf2/read.c (new_symbol): Tag label symbol without DW_AT_low_pc as
+	LOC_OPTIMIZED_OUT instead of LOC_LABEL.
+
+2020-09-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-08-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-08-25  Shahab Vahedi  <shahab@synopsys.com>
+
+	* MAINTAINERS: Add ARC target and maintainer.
+
+2020-08-25  Anton Kolesov  <anton.kolesov@synopsys.com>
+
+	* 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.
+
+2020-08-25  Gaius Mulley  <gaiusmod2@gmail.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	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.
+
+2020-08-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-08-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-08-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* regcache.c (regcaches_test): Call registers_changed.
+
+2020-08-20  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infrun.c (process_event_stop_test): Fix typo "breapoint".
+
+2020-08-19  Alok Kumar Sharma  <AlokKumar.Sharma@amd.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.
+
+2020-08-18  Simon Marchi  <simon.marchi@efficios.com>
+
+	* linux-nat.c (linux_nat_debug_printf): New function.
+	(linux_nat_debug_printf_1): New macro.  Use throughout the file.
+
+2020-08-18  Aaron Merey  <amerey@redhat.com>
+
+	* Makefile.in (DEBUGINFOD_CFLAGS, DEBUGINFOD_LIBS): New variables.
+	(INTERNAL_CFLAGS_BASE): Add DEBUGINFOD_CFLAGS.
+	(CLIBS): Add DEBUGINFOD_LIBS.
+
+2020-08-17  Sergei Trofimovich  <siarheit@google.com>
+
+	* ia64-linux-nat.c: Include "gdbarch.h" to declare used
+	'gdbarch_num_regs'.
+
+2020-08-17  Tom Tromey  <tromey@adacore.com>
+
+	* ada-varobj.c (ada_varobj_decode_var): Handle case where
+	ada_get_decoded_value returns NULL.
+
+2020-08-17  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.
+
+2020-08-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* loc.c (class symbol_needs_eval_context): Fix indentation.
+
+2020-08-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/loc.c (dwarf2_loc_desc_get_symbol_read_needs): Use
+	bool.
+
+2020-08-17  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/26393
+	* gdbtypes.c (dump_dynamic_prop): New function.
+	(recursive_dump_type): Use dump_dynamic_prop for TYPE_CODE_RANGE.
+
+2020-08-15  Tom de Vries  <tdevries@suse.de>
+
+	PR backtrace/26390
+	* stack.c (print_frame_args): Temporarily set the selected
+	frame to FRAME while printing the frame's arguments.
+
+2020-08-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>
+
+	PR breakpoints/26385
+	* ppc-linux-nat.c (ppc_linux_nat_target::low_prepare_to_resume):
+	Always clear watchpoint with PTRACE_SET_DEBUGREG.
+
+2020-08-14  Pedro Franco de Carvalho  <pedromfc@linux.ibm.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.
+
+2020-08-14  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-08-13  Kamil Rytarowski  <n54@gmx.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 ().
+
+2020-08-13  Aaron Merey  <amerey@redhat.com>
+
+	* debuginfod-support.c: Replace global variables with user_data.
+
+2020-08-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* maint.c (maintenance_selftest): Split args and pass array_view
+	to run_tests.
+
+2020-08-12  Luis Machado  <luis.machado@linaro.org>
+
+	* value.c (check_type_length_before_alloc): Use ULONGEST to store a
+	type's length.
+	Use %s and pulongest to print the length.
+
+2020-08-12  Pedro Alves  <palves@redhat.com>
+
+	* NEWS: Move "Multi-target debugging support" item to the
+	"Changes since GDB 9" section.
+
+2020-08-12  Pedro Alves  <palves@redhat.com>
+
+	PR gdb/26336
+	* progspace.c (program_space::remove_objfile): Invalidate the
+	frame cache.
+
+2020-08-11  Tom de Vries  <tdevries@suse.de>
+
+	* MAINTAINERS: Mark ms1 as deleted.
+
+2020-08-10  Luis Machado  <luis.machado@linaro.org>
+
+	PR gdb/26310
+
+	* 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.
+
+2020-08-10  Luis Machado  <luis.machado@linaro.org>
+
+	* nat/aarch64-sve-linux-sigcontext.h (SVE_PT_REGS_OFFSET): Use
+	struct user_sve_header instead of struct sve_context.
+
+2020-08-09  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-08-08  Tom de Vries  <tdevries@suse.de>
+
+	PR build/26344
+	* arch/riscv.c (riscv_lookup_target_description): Use an explicit
+	constructor.
+	* regcache.c (get_thread_arch_aspace_regcache): Same.
+
+2020-08-07  Tom Tromey  <tromey@adacore.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.
+
+2020-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (update_thread_list): Set inferior_ptid.
+
+2020-08-07  Tom Tromey  <tromey@adacore.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.
+
+2020-08-07  Tom Tromey  <tromey@adacore.com>
+
+	* ravenscar-thread.c (ravenscar_thread_target::resume): Handle
+	"is_pid" case.
+
+2020-08-07  Tom Tromey  <tromey@adacore.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.
+
+2020-08-07  Tom Tromey  <tromey@adacore.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.
+
+2020-08-04  Simon Marchi  <simon.marchi@efficios.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.
+
+2020-08-04  Mark Wielaard  <mark@klomp.org>
+
+	* MAINTAINERS (Write After Approval): Update email address.
+
+2020-08-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (TYPE_DYN_PROP_ADDR): Remove, replace uses with
+	dynamic_prop::const_val.
+
+2020-08-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (TYPE_DYN_PROP_KIND): Remove, replace uses with
+	dynamic_prop::kind.
+
+2020-08-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (TYPE_DYN_PROP_BATON): Remove.
+
+2020-08-04  Jose E. Marchesi  <jose.marchesi@oracle.com>
+
+	* configure.tgt: Set gdb_sim for bpf-*-* targets.
+
+2020-08-04  Weimin Pan <weimin.pan@oracle.com>
+	    Jose E. Marchesi  <jose.marchesi@oracle.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.
+
+2020-08-04  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/23270
+	* dwarf2/read.c (find_partial_die): Change internal error into Dwarf
+	Error.
+
+2020-08-03  John Baldwin  <jhb@FreeBSD.org>
+
+	* syscalls/freebsd.xml: Regenerate.
+
+2020-08-03  John Baldwin  <jhb@FreeBSD.org>
+
+	* syscalls/update-freebsd.sh: Fix usage and year range.
+
+2020-08-03  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26333
+	* dwarf2/read.c (dwarf_decode_lines_1): Ignore
+	DW_LNE_lo_user/DW_LNE_hi_user range.
+
+2020-07-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR ada/26318
+	* ada-lang.c (ada_modulus): Return 0 if property is not of const
+	kind.
+
+2020-07-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.c (set_breakpoint_condition): Do minor refactoring.
+
+2020-07-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.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.
+
+2020-07-30  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.c (set_breakpoint_condition): Update the
+	condition string after parsing the new condition successfully.
+
+2020-07-30  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* proc-api.c (_STRUCTURED_PROC): Don't define.
+	* proc-events.c: Likewise.
+	* proc-flags.c: Likewise.
+	* proc-why.c: Likewise.
+	* procfs.c: Likewise.
+
+	* Makefile.in (INTERNAL_CPPFLAGS): Add LARGEFILE_CPPFLAGS.
+	* configure, config.in: Regenerate.
+
+2020-07-30  Tom de Vries  <tdevries@suse.de>
+
+	PR build/26320
+	* ui-style.h (struct ui_file_style::color): Wrap m_value and
+	m_red/m_green/m_blue in a union.
+
+2020-07-29  Tom de Vries  <tdevries@suse.de>
+
+	PR tdep/26280
+	* s390-tdep.c (s390_displaced_step_fixup): Fix Wmaybe-uninitialized.
+
+2020-07-28  Tom Tromey  <tromey@adacore.com>
+
+	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.
+
+2020-07-28  Tom Tromey  <tromey@adacore.com>
+
+	* cli/cli-cmds.c (_initialize_cli_cmds): Rearrange "disassemble"
+	help.  Add usage.
+
+2020-07-28  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/expr.c (dwarf_expr_context::execute_stack_op)
+	<DW_OP_GNU_variable_value>: Cast to address type.
+
+2020-07-28  Kamil Rytarowski  <n54@gmx.com>
+
+	* 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.
+
+2020-07-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/26301
+	* configure: Regenerated.
+
+2020-07-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR binutils/26301
+	* configure: Regenerated.
+
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.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.
+
+2020-07-28  Andrew Burgess  <andrew.burgess@embecosm.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.
+
+2020-07-27  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.h: Include <osreldate.h>.  Define USE_SIGTRAP_SIGINFO
+	for all architectures on FreeBSD 11.3 and later.
+
+2020-07-27  Tom Tromey  <tromey@adacore.com>
+
+	* gcore.h (load_corefile): Don't declare.
+
+2020-07-27  Tom de Vries  <tdevries@suse.de>
+
+	* configure.ac: Fix sys/sockets.h -> sys/socket.h typo.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+
+2020-07-26  Eli Zaretskii  <eliz@gnu.org>
+
+	* 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.
+
+2020-07-25  Andrew Burgess  <andrew.burgess@embecosm.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.
+
+2020-07-24  Aaron Merey  <amerey@redhat.com>
+
+	* Makefile.in: Replace LIBDEBUGINFOD with DEBUGINFOD_LIBS.
+	* configure: Rebuild.
+
+2020-07-23  Kevin Buettner  <kevinb@redhat.com>
+
+	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.
+
+2020-07-22  Kevin Buettner  <kevinb@redhat.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`.
+
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.h (struct jiter_objfile_data) <jiter_objfile_data, objfile>:
+	Remove.
+	* jit.c (get_jiter_objfile_data): Update.
+
+2020-07-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	    Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (jiter_objfile_data::~jiter_objfile_data): Remove some
+	checks.
+	(jit_read_descriptor): Remove NULL check.
+	(jit_event_handler): Add an assertion.
+
+2020-07-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
+
+	* 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.
+
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
+
+	* 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.
+
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
+
+	* 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.
+
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
+
+	* corelow.c (core_target_open): Invoke gdbarch report_signal_info
+	hook if present.
+
+2020-07-21  John Baldwin  <jhb@FreeBSD.org>
+
+	* 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.
+
+2020-07-21  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.
+
+2020-07-21  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.
+
+2020-07-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* linux-nat.c (stopped_pids): Make static.
+
+2020-07-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR ada/26235
+	* gdbtypes.c (ada_discrete_type_low_bound,
+	ada_discrete_type_high_bound): Handle undefined bounds.
+
+2020-07-21  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.h (nbsd_nat_target::supports_multi_process): New
+	declaration.
+	* nbsd-nat.c (nbsd_nat_target::supports_multi_process): New
+	function.
+
+2020-07-20  John Baldwin  <jhb@FreeBSD.org>
+
+	* 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.
+
+2020-07-20 Ludovic CourtÃ¨s  <ludo@gnu.org>
+
+	* 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.
+
+2020-07-18  Tom Tromey  <tom@tromey.com>
+
+	* linux-nat.c (linux_multi_process): Remove.
+	(linux_nat_target::supports_multi_process): Return true.
+
+2020-07-17  Andrew Burgess  <andrew.burgess@embecosm.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".
+
+2020-07-16  Caroline Tice  <cmtice@google.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.
+
+2020-07-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arch-utils.c (show_architecture): Update formatting of messages.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.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.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.c (TYPE_ARRAY_BIT_STRIDE): Remove.  Update all
+	callers to use the equivalent accessor methods.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_ARRAY_LOWER_BOUND_VALUE,
+	TYPE_ARRAY_UPPER_BOUND_VALUE): Remove.  Update all
+	callers to use the equivalent accessor methods instead.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_LOW_BOUND_KIND,
+	TYPE_HIGH_BOUND_KIND): Remove.  Update all callers
+	to use dynamic_prop::kind.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_LOW_BOUND, TYPE_HIGH_BOUND): Remove.  Update
+	all callers to use type::range_bounds followed by
+	dynamic_prop::{low,high}.
+
+2020-07-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-07-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (TYPE_RANGE_DATA): Remove.  Update callers to use
+	the type::bounds method directly.
+
+2020-07-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-07-11  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* exec.c (_initialize_exec): Update exec-file-mismatch help.
+
+2020-07-10  Pedro Alves  <pedro@palves.net>
+
+	* 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.
+
+2020-07-10  Pedro Alves  <pedro@palves.net>
+
+	* 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.
+
+2020-07-10  Simon Marchi  <simon.marchi@polymtl.ca>
+	    Pedro Alves  <pedro@palves.net>
+
+	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.
+
+2020-07-10  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26199
+	* infrun.c (handle_no_resumed): Transfer terminal to inferior with
+	executing threads.
+
+2020-07-10  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26199
+	* infrun.c (handle_no_resumed): Handle multiple targets.
+
+2020-07-10  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26199
+	* infrun.c (prepare_to_wait): Check target_can_async_p instead of
+	target_is_async_p.
+
+2020-07-10  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/26199
+	* target.c (target_pass_ctrlc): Look at the inferior's non-exited
+	threads, not all threads.
+
+2020-07-10  Pedro Alves  <pedro@palves.net>
+
+	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.
+
+2020-07-10  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.h (fbsd_nat_target::supports_multi_process): New
+	declaration.
+	* fbsd-nat.c (fbsd_nat_target::supports_multi_process): New
+	function.
+
+2020-07-09  John Baldwin  <jhb@FreeBSD.org>
+
+	* inf-ptrace.c (inf_ptrace_target::wait): Don't compare against
+	inferior_ptid.
+
+2020-07-09  John Baldwin  <jhb@FreeBSD.org>
+
+	* 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.
+
+2020-07-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-07-06  Tom de Vries  <tdevries@suse.de>
+
+	* 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".
+
+2020-07-06  Tom de Vries  <tdevries@suse.de>
+
+	PR tui/26205
+	* tui/tui-win.c (tui_partial_win_by_name): Don't test for NULL name.
+
+2020-07-05  Tom de Vries  <tdevries@suse.de>
+
+	PR build/26187
+	* inferior.h (struct infcall_suspend_state_deleter): If available, use
+	std::uncaught_exceptions instead of deprecated
+	std::uncaught_exception.
+
+2020-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* macroexp.h (macro_stringify): Return
+	gdb::unique_xmalloc_ptr<char>.
+	* macroexp.c (macro_stringify): Likewise.
+	* macrotab.c (fixup_definition): Update.
+
+2020-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-07-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (struct tui_win_info) <name>: Now pure virtual.
+	* tui/tui-stack.h (struct tui_locator_window) <name>: New method.
+
+2020-07-01  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.
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-stack.h (struct tui_locator_window): Remove body.
+
+2020-07-01  Tom Tromey  <tom@tromey.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.
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::show_register_group): Remove
+	useless "if".
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_data_window::show_register_group): Update.
+	* tui/tui-regs.h (struct tui_data_item_window) <name>: Remove.
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-07-01  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-regs.c (tui_reggroup_completer): Use complete_on_enum.
+
+2020-07-01  Fangrui Song  <maskray@google.com>
+
+	* dwarf2/read.c (lnp_state_machine::check_line_address): Test -1.
+
+2020-07-01  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* 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.
+
+2020-06-30  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (quirk_rust_enum): Correctly call
+	alloc_rust_variant for default-less enum.
+
+2020-06-30  Tom Tromey  <tromey@adacore.com>
+
+	PR build/26183:
+	* ada-lang.c (ada_lookup_name_info::ada_lookup_name_info): Use
+	gdb::to_string.
+
+2020-06-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh (displaced_step_copy_insn): Update doc.
+	* gdbarch.h: Re-generate.
+
+2020-06-28  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-06-27  Pedro Alves  <palves@redhat.com>
+
+	* 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.
+
+2020-06-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infcmd.c (set_inferior_io_terminal): Use make_unique_xstrdup.
+
+2020-06-25  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_print_registers_info): Loop over all
+	registers, not just the known core set of registers.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* 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.
+
+2020-06-18  Pedro Alves  <palves@redhat.com>
+
+	* linux-tdep.c (btrace_fetch): Save/restore current thread instead
+	of saving/restoring inferior_ptid.
+
+2020-06-17  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-06-15  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (dwarf2_initialize_objfile): Check for presence
+	of partial symtabs.
+
+2020-06-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-06-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-06-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* features/Makefile (XMLTOC): Remove rx.xml.
+
+2020-06-17  Pedro Alves  <palves@redhat.com>
+
+	* gdbthread.h (thread_control_state) <trap_expected> Update
+	comments.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-16  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-06-16  Tom Tromey  <tom@tromey.com>
+
+	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.
+
+2020-06-16  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-layout.c (tui_layout_split::remove_windows): Fix logic.
+	Also preserve the status window.
+
+2020-06-16  Tom Tromey  <tom@tromey.com>
+
+	* python/py-tui.c (tui_py_window::~tui_py_window): Handle case
+	where m_window==nullptr.
+
+2020-06-15  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-06-15  Tom Tromey  <tromey@adacore.com>
+
+	* linux-tdep.c (dump_mapping_p): Use target_read_memory.
+
+2020-06-15  Tom Tromey  <tromey@adacore.com>
+
+	* valprint.c (read_string): Update comment.
+	* target.c (MIN): Remove.
+	(target_read_string): Rewrite.
+
+2020-06-15  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-06-14  Hannes Domani  <ssbssa@yahoo.de>
+
+	* symtab.c (rbreak_command): Ignore Windows drive colon.
+
+2020-06-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* NEWS: Mention removed GDBserver host support.
+
+2020-06-12  Nelson Chu  <nelson.chu@sifive.com>
+
+	* features/riscv/rebuild-csr-xml.sh: Updated.
+
+2020-06-11  Tom Tromey  <tom@tromey.com>
+
+	PR gdb/18318:
+	* c-exp.y (lex_one_token): Handle 'p' like 'e'.
+
+2020-06-09  Jonny Grant  <jg@jguk.org>
+2020-06-09  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-06-11  Keith Seitz  <keiths@redhat.com>
+
+	PR gdb/21356
+	* gdbtypes.c (resolve_dynamic_union, resolve_dynamic_struct):
+	Resolve typedefs for type length calculations.
+
+2020-06-10  Tom de Vries  <tdevries@suse.de>
+
+	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.
+
+2020-06-10  Tom de Vries  <tdevries@suse.de>
+
+	* 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.
+
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_FIELD_TYPE): Remove.  Change all call sites
+	to use type::field and field::type instead.
+
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (FIELD_TYPE): Remove.  Change all call sites
+	to use field::type instead.
+
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_INDEX_TYPE): Remove.  Change all call sites
+	to use type::index_type instead.
+
+2020-06-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-06-07  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_val_print_float): Remove "embedded_offset"
+	parameter.
+	(generic_value_print): Update.
+
+2020-06-05  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	Revert commit 982a38f60b0.
+	* python/py-tui.c (gdbpy_tui_set_title): Restore use of get.
+
+2020-06-05  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-tui.c (gdbpy_tui_set_title): Use release, not get, to
+	avoid use after free.
+
+2020-06-05  Tom de Vries  <tdevries@suse.de>
+
+	* NEWS: Fix typos.
+
+2020-06-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-06-03  Tom de Vries  <tdevries@suse.de>
+
+	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.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-06-01  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* 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.
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* gnu-nat.c (gnu_xfer_auxv): Remove unused `res' variable.
+	(gnu_nat_target::find_memory_regions): Remove unused
+	`old_address' variable.
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* gnu-nat.c: Include "gdbarch.h".
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* reply_mig_hack.awk (Error return): Cast function through
+	void *, to bypass compiler function call check.
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* config/i386/i386gnu.mn (%_reply_S.c): Add dependency on
+	$(srcdir)/reply_mig_hack.awk.
+
+2020-05-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+	* gnu-nat.h (gnu_debug_flag): Set type to bool.
+
+2020-05-30  Jonny Grant  <jg@jguk.org>
+
+	* configure.ac (ACX_BUGURL): change bug URL to https.
+
+2020-05-30  Pedro Alves  <palves@redhat.com>
+
+	* cp-support.c (replace_typedefs_template): New.
+	(replace_typedefs_qualified_name): Handle
+	DEMANGLE_COMPONENT_TEMPLATE.
+
+2020-05-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/loc.c (class dwarf_evaluate_loc_desc)
+	<push_dwarf_reg_entry_value>: Add comment.
+
+2020-05-28  Kevin Buettner  <kevinb@redhat.com>
+	    Keith Seitz  <keiths@redhat.com>
+
+	* 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.
+
+2020-05-28  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/loc.c (class dwarf_evaluate_loc_desc)
+	<push_dwarf_reg_entry_value>: Remove assert.  Override
+	per_objfile with caller_per_objfile.
+
+2020-05-28  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/read.c	(dw2_symtab_iter_next, dw2_expand_marked_cus): Limit
+	PR gold/15646 workaround to symbol kind "type".
+
+2020-05-27  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (load_partial_dies): Use add_partial_symbol.
+
+2020-05-27  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-05-27  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-05-27  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-05-27  Hannes Domani  <ssbssa@yahoo.de>
+
+	* cli/cli-cmds.c (shell_escape): Move exit_status_set_internal_vars.
+
+2020-05-27  Hannes Domani  <ssbssa@yahoo.de>
+
+	* exec.c (exec_file_attach): Use errno value of first openp failure.
+
+2020-05-27  Hannes Domani  <ssbssa@yahoo.de>
+
+	* nat/windows-nat.c (windows_thread_info::~windows_thread_info):
+	Don't close thread handle.
+
+2020-05-27  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-05-27  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+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.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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>
+
+	* 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.
+
+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.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (process_full_comp_unit): Add dwarf2_per_objfile
+	parameter.
+	(process_full_type_unit): Likewise.
+	(process_queue): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (recursively_compute_inclusions): Add
+	dwarf2_per_objfile parameter.
+	(compute_compunit_symtab_includes): Likewise.
+	(process_cu_includes): Update.
+
+2020-05-27  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-05-27  Tom Tromey  <tom@tromey.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-27  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-05-27  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-05-25  Michael Weghorn  <m.weghorn@posteo.de>
+
+	* infcmd.c, inferior.h: (construct_inferior_arguments):
+	Moved function from here to gdbsupport/common-inferior.{h,cc}
+
+2020-05-23  Tom Tromey  <tom@tromey.com>
+
+	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.
+
+2020-05-24  Pedro Alves  <palves@redhat.com>
+
+	* 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.
+
+2020-05-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (TYPE_FIELD): Remove.  Replace all uses with
+	type::field.
+
+2020-05-23  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 9.2 released.
+
+2020-05-23  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-05-23  Pedro Alves  <palves@redhat.com>
+
+	* 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.
+
+2020-05-22  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <field>: New method.
+	(TYPE_FIELDS): Remove, replace all uses with either type::fields
+	or type::field.
+
+2020-05-22  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-22  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_NFIELDS): Remove.  Change all cal sites to use
+	type::num_fields instead.
+
+2020-05-22  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-22  Tom Tromey  <tromey@adacore.com>
+
+	* compile/compile-object-load.h (munmap_list_free): Don't
+	declare.
+
+2020-05-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-05-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* lm32-tdep.c (lm32_register_reggroup_p): Fix condition.
+
+2020-05-21  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	* symfile.c (reread_symbols): Clear objfile's section_offsets
+	vector and section indices, re-compute them by calling
+	sym_offsets.
+
+2020-05-20  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (bound_name, MAX_ADA_DIMENS): Remove.
+	(desc_one_bound, desc_index_type): Compute field name.
+
+2020-05-20  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25833
+	* dwarf2/read.c (dw2_map_matching_symbols): Handle .gdb_index.
+
+2020-05-20  Alan Modra  <amodra@gmail.com>
+
+	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.
+
+2020-05-19  Tom Tromey  <tromey@adacore.com>
+
+	* sparc64-tdep.c (adi_tag_fd): Update call to target_fileio_open.
+
+2020-05-19  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-17  Pedro Alves  <palves@redhat.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Keno Fischer  <keno@juliacomputing.com>
+
+	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.
+
+2020-05-16  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention changes to help and apropos.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* 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.
+
+2020-05-15  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* 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.
+
+2020-05-14  Kevin Buettner  <kevinb@redhat.com>
+
+	* nat/linux-btrace.c (btrace_this_cpu): Add check for AMD
+	processors.
+	(cpu_supports_bts): Add CV_AMD case.
+
+2020-05-14  Laurent Morichetti  <Laurent.Morichetti@amd.com>
+	    Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (stop_all_threads): Collect multiple wait events at
+	each pass.
+
+2020-05-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_CODE): Remove.  Change all call sites to use
+	type::code instead.
+
+2020-05-14  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+	    Tom de Vries  <tdevries@suse.de>
+	    Pedro Alves  <palves@redhat.com>
+
+	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.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infrun.c (handle_inferior_event): Extract out a piece of code
+	into...
+	(mark_non_executing_threads): ...this new function.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infrun.c (resume_1): Move a 'regcache_read_pc' call down to first
+	use.
+
+2020-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* 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.
+
+2020-05-13  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (align_value): Remove.
+	(ada_template_to_fixed_record_type_1): Use align_up.
+
+2020-05-13  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* async-event.c: Update the copyright year.
+	* async-event.h: Update the copyright year.
+
+2020-05-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-11  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-05-11  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-05-11  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/index-write.c (debug_names::psymbol_tag): Handle
+	MODULE_DOMAIN.
+
+2020-05-11  Tom de Vries  <tdevries@suse.de>
+
+	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.
+
+2020-05-09  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25955
+	* break-catch-throw.c (check_status_exception_catchpoint): Fix name
+	calculation.
+
+2020-05-09  Tom Tromey  <tom@tromey.com>
+
+	* top.c (server_command): Now bool.
+	* top.h (server_command): Now bool.
+
+2020-05-08  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (read_lexical_block_scope): Don't process a DIE
+	already being processed.
+
+2020-05-08  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+	(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.
+	* 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.
+
+2020-05-08  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-05-08  Tom de Vries  <tdevries@suse.de>
+
+	* infrun.c (follow_fork): Copy current_line and current_symtab to
+	child thread.
+
+2020-05-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* async-event.c (struct async_signal_handler, struct
+	async_event_handler): Reformat, remove typedef.
+
+2020-05-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_DYN_PROP_LIST): Remove.  Update all users
+	access thistype->main_type->dyn_prop_list directly.
+
+2020-05-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-07  Simon Marchi via Gdb-patches  <gdb-patches@sourceware.org>
+
+	* 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.
+
+2020-05-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-05-06  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct main_type) <flag_static>: Remove.
+
+2020-05-06  Simon Marchi  <simon.marchi@efficios.com>
+
+	* amd64-tdep.c (amd64_analyze_prologue): Check for `endbr64`
+	instruction, skip it if it's there.
+
+2020-05-05  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct main_type) <flag_incomplete>: Remove.
+
+2020-05-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_INCOMPLETE): Remove.
+	* gdbtypes.c (recursive_dump_type): Remove use of
+	TYPE_INCOMPLETE.
+
+2020-05-03  Tom Tromey  <tom@tromey.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.
+
+2020-05-02  Hannes Domani  <ssbssa@yahoo.de>
+
+	* gdbtypes.h (enum dynamic_prop_node_kind): Fix typo.
+
+2020-05-01  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* gdb-gdb.gdb-in: Remove breakpoint on disappeared function
+	info_command.
+
+2020-04-30  Kamil Rytarowski  <n54@gmx.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.
+
+2020-04-30  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* stack.c (_initialize_stack): Remove duplicated creation
+	of "frame" command and "f" alias.
+
+2020-04-30  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR gdb/18706
+	* gdbtypes.c (check_typedef): Calculate size of array of
+	stubbed type.
+
+2020-04-30  Hannes Domani  <ssbssa@yahoo.de>
+
+	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.
+
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh (do_read): Add shellcheck disable directive for
+	warning SC2162.
+
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh: Use ${foo:-} where shellcheck would report a
+	"referenced but not assigned" warning.
+
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh: Remove code that sets fallbackdefault.
+
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh: Use shell operators && and || instead of
+	-a and -o.
+
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh: Use $(...) instead of `...`.
+
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh: Use double quotes around variables.
+
+2020-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbarch.sh: Use %s with printf, instead of variables in the
+	format string.
+
+2020-04-29  Tom Tromey  <tromey@adacore.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.
+
+2020-04-29  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-tdep.c: Include "xml-syscall.h".
+	(nbsd_init_abi): Call `set_xml_syscall_file_name'.
+
+2020-04-29  Kamil Rytarowski  <n54@gmx.com>
+
+	* 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'.
+
+2020-04-29  Tom Tromey  <tom@tromey.com>
+
+	* stack.c (print_block_frame_labels): Remove.
+
+2020-04-29  Hannes Domani  <ssbssa@yahoo.de>
+
+	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.
+
+2020-04-29  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25889
+	* linespec.c (find_method): Fix ix calculation.
+
+2020-04-28  Kamil Rytarowski  <n54@gmx.com>
+
+	* syscalls/update-netbsd.sh: New file.
+	* syscalls/netbsd.xml: Regenerate.
+	* data-directory/Makefile.in: Register `netbsd.xml' in
+	`SYSCALLS_FILES'.
+
+2020-04-28  Simon Marchi  <simon.marchi@efficios.com>
+
+	* syscalls/update-freebsd.sh: Add double quotes.
+
+2020-04-28  Tom Tromey  <tom@tromey.com>
+
+	* NEWS: Update.
+	* python/py-cmd.c (gdbpy_initialize_commands): Add COMMAND_TUI.
+	(cmdpy_init): Allow class_tui.
+
+2020-04-28 Mark Williams <mark@myosotissp.com>
+
+	PR gdb/24480
+	* dwarf2read.c: Add missing assingments to list_in_scope when
+	start_symtab was already called.
+
+2020-04-28  Simon Marchi  <simon.marchi@efficios.com>
+
+	PR gdb/25881
+	* dwarf2/read.c (offset_map_type): Use
+	gdb:hash_enum<sect_offset> as hash function.
+
+2020-04-28  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/read.c (process_structure_scope): Add symbol for struct decl
+	with DW_AT_signature.
+
+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.
+	* 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.
+
+2020-04-27  Luis Machado  <luis.machado@linaro.org>
+
+	* 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.
+
+2020-04-26  Tom Tromey  <tom@tromey.com>
+
+	* command.h (enum command_class) <class_pseudo>: Remove.
+
+2020-04-26  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* cli/cli-decode.c (lookup_cmd_composition): Fix comments
+	and whitespace.
+
+2020-04-25  Kamil Rytarowski  <n54@gmx.com>
+
+	* inf-ptrace.c (inf_ptrace_target::wait): Remove
+	`PT_GET_PROCESS_STATE' block.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	PR rust/25025:
+	* dwarf2/read.c (dwarf2_physname): Do not demangle for Rust.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	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.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (add_partial_symbol): Do not call
+	compute_and_set_names.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (add_partial_symbol): Use new add_psymbol_to_list
+	overload.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (general_symbol_info::natural_name)
+	(general_symbol_info::demangled_name): Check for language_rust.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dw2_linkage_name): Move Rust "{" hack here...
+	(dwarf2_physname): ... from here.
+	(partial_die_info::read): Add Rust "{" hack.
+
+2020-04-24  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* rs6000-tdep.c (struct ppc_variant): Rename from "variant".
+	(variants, find_variant_by_arch, rs6000_gdbarch_init): Update.
+
+2020-04-24  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-tdep.c (exception_values): Add WOW64 exception numbers.
+
+2020-04-24  Kamil Rytarowski  <n54@gmx.com>
+
+	* 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.
+
+2020-04-24  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-04-24  Tom de Vries  <tdevries@suse.de>
+
+	* contrib/cc-with-tweaks.sh: Remove <exec>.gdb-index file handling.
+	Run gdb-add-index inside temp dir.
+
+2020-04-23  Tom Tromey  <tromey@adacore.com>
+
+	* windows-tdep.c (is_linked_with_cygwin_dll): Always update "iter"
+	in loop.
+
+2020-04-23  Luis Machado  <luis.machado@linaro.org>
+
+	* dwarf2/frame-tailcall.c (dwarf2_tailcall_sniffer_first): Use
+	get_frame_register instead of gdbarch_unwind_pc.
+
+2020-04-23  Tom de Vries  <tdevries@suse.de>
+
+	* symtab.c (lookup_global_symbol): Prefer def over decl.
+
+2020-04-23  Tom de Vries  <tdevries@suse.de>
+
+	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.
+
+2020-04-23  Tom Tromey  <tromey@adacore.com>
+
+	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.
+
+2020-04-23  Tom de Vries  <tdevries@suse.de>
+
+	* blockframe.c (find_pc_partial_function): Use
+	find_pc_sect_compunit_symtab rather than
+	objfile->sf->qf->find_pc_sect_compunit_symtab.
+
+2020-04-22  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25764
+	* dwarf2/read.c (scan_partial_symbols): Allow external variable decls
+	in psymtabs.
+
+2020-04-22  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25801
+	* psymtab.c (psym_map_symtabs_matching_filename): Don't skip shared
+	symtabs.
+
+2020-04-22  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/25700
+	* dwarf2/read.c (dwarf2_build_psymtabs_hard): Don't create psymtab for
+	CU if already created.
+
+2020-04-21  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infrun.c (displaced_step_fixup): Switch to the event_thread
+	before calling displaced_step_restore, not after.
+
+2020-04-21  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* 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.
+
+2020-04-21  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* 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.
+
+2020-04-21  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* record-btrace.c (record_btrace_target::fetch_registers): Forward
+	request if we do not have a thread_info.
+
+2020-04-21  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25471
+	* thread.c
+	(scoped_restore_current_thread::scoped_restore_current_thread): Catch
+	exception in get_frame_id.
+
+2020-04-20  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-04-20  Mihails Strasuns  <mihails.strasuns@intel.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-04-18  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-04-16  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac: Remove checks that are now in GDB_AC_COMMON.
+
+2020-04-13  Tom Tromey  <tom@tromey.com>
+
+	* event-loop.h (start_event_loop): Don't declare.
+	* event-loop.c (start_event_loop): Move...
+	* main.c (start_event_loop): ...here.  Now static.
+
+2020-04-13  Sergio Durigan Junior  <sergiodj@sergiodj.net>
+
+	* MAINTAINERS: Update my email address.
+
+2020-04-12  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.c (nbsd_nat_target::info_proc): Add IP_MINIMAL and
+	IP_ALL.
+
+2020-04-12  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.c (nbsd_pid_to_cmdline): Add.
+	(nbsd_nat_target::info_proc): Add do_cmdline.
+
+2020-04-12  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.c (nbsd_pid_to_cwd): Add.
+	(nbsd_nat_target::info_proc): Add do_cwd.
+
+2020-04-12  Kamil Rytarowski  <n54@gmx.com>
+
+	* nbsd-nat.c (nbsd_nat_target::info_proc): Add do_exe.
+
+2020-04-11  Kamil Rytarowski  <n54@gmx.com>
+
+	* 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.
+
+2020-04-10  Artur Shepilko  <nomadbyte@gmail.com>
+
+	* utils.c (copy_bitwise): Use unsigned 0 constant as operand of
+	bit shift.
+
+2020-04-10  Tom Tromey  <tromey@adacore.com>
+
+	* symfile.c (symbol_file_add_separate): Preserve OBJF_MAINLINE.
+
+2020-04-10  Tom Tromey  <tromey@adacore.com>
+
+	* symtab.c (get_symbol_address, get_msymbol_address): Skip
+	separate debug files.
+
+2020-04-10  Hannes Domani  <ssbssa@yahoo.de>
+
+	* 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.
+
+2020-04-10  Tom de Vries  <tdevries@suse.de>
+
+	PR cli/25808
+	* python/lib/gdb/__init__.py: Initialize lexer with stripnl=False.
+
+2020-04-09  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* MAINTAINERS (Global Maintainers): Add Tom de Vries.
+	(Write After Approval): Remove Tom de Vries.
+
+2020-04-09  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	revert partially:
+	2020-04-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* buildsym.c (record_line): Fix undefined behavior and preserve
+	lines at eof.
+
+2020-04-09  Kamil Rytarowski  <n54@gmx.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.
+
+2020-04-08  Tom Tromey  <tromey@adacore.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.
+
+2020-04-08  Tom Tromey  <tromey@adacore.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.
+
+2020-04-08  Tom Tromey  <tromey@adacore.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.
+
+2020-04-08  Tom Tromey  <tromey@adacore.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.
+
+2020-04-08  Tom Tromey  <tromey@adacore.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.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* complaints.h (stop_whining): Declare at top-level.
+	(complaint): Don't declare stop_whining.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	* nat/windows-nat.h (struct windows_thread_info): Declare
+	destructor.
+	* nat/windows-nat.c (~windows_thread_info): New.
+
+2020-04-08  Tom Tromey  <tromey@adacore.com>
+
+	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.
+
+2020-04-02  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (partial_die_info::read): Do not create a vector
+	of attributes.
+
+2020-04-02  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Bernd Edlinger <bernd.edlinger@hotmail.de>
+	    Tom Tromey  <tromey@adacore.com>
+
+	* buildsym.c (buildsym_compunit::record_line): Remove
+	deduplication code.
+
+2020-04-02  Tom de Vries  <tdevries@suse.de>
+
+	PR ada/24671
+	* dwarf2/read.c (dw2_map_matching_symbols): Handle -readnow.
+
+2020-04-02  Tom de Vries  <tdevries@suse.de>
+
+	* 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.
+
+2020-04-01  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* windows-tdep.c (is_linked_with_cygwin_dll): Fix style.
+
+2020-04-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* buildsym.c (record_line): Fix undefined behavior and preserve
+	lines at eof.
+
+2020-04-01  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* buildsym.c (record_line): Fix the resizing condition.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* value.h (value_literal_complex): Add comment.
+	* valops.c (value_literal_complex): Refer to value.h.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* 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__.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	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.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* c-exp.y (COMPLEX_INT, COMPLEX_FLOAT): New tokens.
+	(exp) <COMPLEX_INT, COMPLEX_FLOAT>: New rules.
+	(parse_number): Handle complex numbers.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* c-valprint.c (c_decorations): Change complex suffix to "i".
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-04-01  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* psympriv.h (discard_psymtab): Remove.
+	* dbxread.c (dbx_end_psymtab): Update.
+	* xcoffread.c (xcoff_end_psymtab): Update.
+
+2020-03-28  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/attribute.h (struct attribute) <form_is_constant>: Update
+	comment.
+
+2020-03-28  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_attribute_reprocess): Fix formatting.
+
+2020-03-27  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-nat.c (windows_add_all_dlls): Fix system dll paths.
+
+2020-03-26  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-tdep.c (fbsd_print_auxv_entry): Handle AT_FREEBSD_BSDFLAGS.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/die.h (struct die_info) <addr_base, ranges_base>:
+	Rewrite.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (struct die_info): Move to die.h.
+	* dwarf2/die.h: New file.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/macro.c (dwarf_decode_macro_bytes): Use objfile local
+	variable.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf_decode_macros): Split into two overloads.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-25  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-object-load.c (get_out_value_type): Mention
+	correct symbol name in error message.
+
+2020-03-25  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-nat.c (windows_add_all_dlls): Fix system dll paths.
+
+2020-03-25  Tom de Vries  <tdevries@suse.de>
+
+	* symtab.h (is_main_symtab_of_compunit_symtab): New function.
+	* symmisc.c (dump_symtab_1): Print user and includes fields.
+	(maintenance_info_symtabs): Same.
+
+2020-03-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	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.
+
+2020-03-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-03-24  Tom de Vries  <tdevries@suse.de>
+
+	* psymtab.c (maintenance_info_psymtabs): Print user field.
+
+2020-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/loc.h (dwarf2_evaluate_property): Make "addr_stack"
+	const.
+	* dwarf2/loc.c (dwarf2_evaluate_property): Make "addr_stack"
+	const.
+
+2020-03-20  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-03-20  Kamil Rytarowski  <n54@gmx.com>
+
+	* 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.
+
+2020-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* c-exp.y (lex_one_token): Fix assert.
+
+2020-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* ada-tasks.c (read_atcb): Use smaller length in strncpy call.
+	* linux-tdep.c (linux_fill_prpsinfo): Use smaller length in
+	strncpy call.
+
+2020-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* symmisc.c (maintenance_print_one_line_table): Use ui_out.
+
+2020-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* 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.
+
+2020-03-20  Kamil Rytarowski  <n54@gmx.com>
+
+	* 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.
+
+2020-03-20  Kamil Rytarowski  <n54@gmx.com>
+
+	* hppa-nbsd-nat.c (fetch_registers): New variable lwp and pass
+	it to the ptrace call.
+	* (store_registers): Likewise.
+
+2020-03-20  Kamil Rytarowski  <n54@gmx.com>
+
+	* ppc-nbsd-nat.c (fetch_registers): New variable lwp and pass
+	it to the ptrace call.
+	* (store_registers): Likewise.
+
+2020-03-19  Luis Machado  <luis.machado@linaro.org>
+
+	* nat/aarch64-sve-linux-ptrace.c (aarch64_sve_set_vq): If vg is not
+	valid, fetch vg value from ptrace.
+
+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.
+
+2020-03-19  Kamil Rytarowski  <n54@gmx.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.
+
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote.c (remote_target::process_stop_reply): Handle events for
+	all threads differently.
+
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.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.
+
+2020-03-19  Andrew Burgess  <andrew.burgess@embecosm.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.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.com>
+
+	* regformats/regdef.h: Put reg in gdb namespace.
+
+2020-03-17  Kamil Rytarowski  <n54@gmx.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.
+
+2020-03-16  Simon Marchi  <simon.marchi@efficios.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.
+
+2020-03-16  Simon Marchi  <simon.marchi@efficios.com>
+
+	* amd64-windows-tdep.c (amd64_windows_osabi_sniffer): New
+	function.
+	(_initialize_amd64_windows_tdep): Register osabi sniffer.
+
+2020-03-14  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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* alpha-bsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* 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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* vax-bsd-nat.c (vaxbsd_supply_gregset): Cast gregs to const
+	gdb_byte *.
+	* vax-bsd-nat.c (vaxbsd_collect_gregset): Cast gregs to void *.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* 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.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* mips-nbsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* ppc-nbsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
+
+2020-03-14  Kamil Rytarowski  <n54@gmx.com>
+
+	* vax-bsd-nat.c: Define _KERNTYPES to get the declaration of
+	register_t.
+
+2020-03-13  Tom Tromey  <tom@tromey.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.
+
+2020-03-13  Tom Tromey  <tom@tromey.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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* ada-valprint.c (print_field_values): Call common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* ada-valprint.c (ada_value_print): Use common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* ada-valprint.c (ada_val_print_ref): Use common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* ada-valprint.c (ada_value_print_num): New function.
+	(ada_value_print_1): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* ada-valprint.c (ada_value_print_1) <TYPE_CODE_FLT>: Rewrite.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* ada-valprint.c (ada_value_print_ptr): New function.
+	(ada_value_print_1): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* cp-valprint.c (cp_print_value_fields): Update.
+	(cp_print_value): New function.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* c-valprint.c (c_value_print_array): New function.
+	(c_value_print_inner): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* c-valprint.c (c_value_print_memberptr): New function.
+	(c_value_print_inner): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* c-valprint.c (c_value_print_int): New function.
+	(c_value_print_inner): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* c-valprint.c (c_value_print_ptr): New function.
+	(c_value_print_inner): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* c-valprint.c (c_value_print_inner): Rewrite.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_value_print_complex): New function.
+	(generic_value_print): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_val_print_float): Don't call
+	val_print_scalar_formatted.
+	(generic_val_print, generic_value_print): Update.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_value_print_char): New function
+	(generic_value_print): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_value_print_int): New function.
+	(generic_value_print): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_value_print_bool): New function.
+	(generic_value_print): Use it.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_val_print_func): Simplify.
+	(generic_val_print, generic_value_print): Update.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_val_print_flags): Remove.
+	(generic_val_print, generic_value_print): Update.
+	(val_print_type_code_flags): Add original_value parameter.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_val_print): Update.
+	(generic_value_print): Update.
+	* valprint.c (generic_val_print_enum): Don't call
+	val_print_scalar_formatted.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_value_print): Call generic_value_print_ptr.
+	* valprint.c (generic_value_print_ptr): New function.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (generic_value_print): Rewrite.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* p-valprint.c (pascal_object_print_value_fields)
+	(pascal_object_print_value): New functions.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* p-valprint.c (pascal_value_print_inner): Rewrite.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* f-valprint.c (f_value_print_innner): Rewrite.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* p-valprint.c (pascal_object_print_value_fields): Now static.
+	* p-lang.h (pascal_object_print_value_fields): Don't declare.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* c-valprint.c (c_val_print_array): Simplify.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (value_print_array_elements): New function.
+	* valprint.h (value_print_array_elements): Declare.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* printcmd.c (print_formatted): Use value_print_scalar_formatted.
+	* mips-tdep.c (mips_print_register): Use
+	value_print_scalar_formatted.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.h (value_print_scalar_formatted): Declare.
+	* valprint.c (value_print_scalar_formatted): New function.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.h (generic_value_print): Declare.
+	* valprint.c (generic_value_print): New function.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* c-valprint.c (c_value_print): Use common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* cp-valprint.c (cp_print_static_field): Use common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* f-valprint.c (f77_print_array_1, f_val_print): Use
+	common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* riscv-tdep.c (riscv_print_one_register_info): Use
+	common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* mi/mi-main.c (output_register): Use common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* infcmd.c (default_print_one_register_info): Use
+	common_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (do_val_print): New function, from val_print.
+	(val_print): Use do_val_print.
+	(common_val_print): Use do_val_print.
+
+2020-03-13  Tom Tromey  <tom@tromey.com>
+
+	* valprint.c (value_print): Use scoped_value_mark.
+
+2020-03-13  Tom de Vries  <tdevries@suse.de>
+
+	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.
+
+2020-03-12  Christian Biesinger  <cbiesinger@google.com>
+
+	* 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.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* arm-tdep.c (struct arm_mapping_symbol) <value>: Now a
+	CORE_ADDR.
+	(struct arm_exidx_entry) <addr>: Now a CORE_ADDR.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-03-12  Tom Tromey  <tom@tromey.com>
+
+	* symfile-mem.c: Update CORE_ADDR size assert.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* selftest.m4: Move to gdbsupport/.
+	* acinclude.m4: Update path to selftest.m4.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure.ac: Don't source bfd/development.sh.
+	* selftest.m4: Modify comment.
+	* configure: Re-generate.
+
+2020-03-12  Simon Marchi  <simon.marchi@efficios.com>
+
+	* selftest.m4 (GDB_AC_SELFTEST): Error out if $development is
+	not "true" or "false".
+	* configure: Re-generate.
+
+2020-03-12  Christian Biesinger  <cbiesinger@google.com>
+
+	* 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.
+
+2020-03-11  Kevin Buettner  <kevinb@redhat.com>
+
+	* symtab.c (find_pc_sect_line): Add check which prevents infinite
+	recursion.
+	
+2020-03-11  Simon Marchi  <simon.marchi@efficios.com>
+
+	* configure: Re-generate.
+
+2020-03-11  Tom Tromey  <tromey@adacore.com>
+
+	* ada-typeprint.c (print_choices): Fix comment.
+
+2020-03-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* buildsyms.c (buildsym_compunit::record_line): Avoid accessing
+	previous item in the list, when the list has no items.
+
+2020-03-11  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/loc.c (dwarf2_evaluate_property): Handle NULL frame in
+	PROP_LOCLIST handling code.
+
+2020-03-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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>
+
+	* dwarf2/read.c (read_typedef): Treat anonymous typedef as forwarder
+	DIE.
+
+2020-03-07  Tom Tromey  <tom@tromey.com>
+
+	* valops.c (value_literal_complex): Remove obsolete comment.
+	* gdbtypes.h (enum type_code) <TYPE_CODE_FLT>: Remove obsolete
+	comment.
+
+2020-03-06  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-03-06  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-tdep.c (windows_solib_create_inferior_hook):
+	Check if inferior is running.
+
+2020-03-06  Tom de Vries  <tdevries@suse.de>
+
+	* NEWS: Fix "the the".
+	* ctfread.c: Same.
+
+2020-03-06  Tom de Vries  <tdevries@suse.de>
+
+	* psymtab.c (psymtab_to_symtab): Don't print "done.".
+
+2020-03-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* .dir-locals.el: Add a comment referencing the other copies of
+	this file.
+
+2020-03-05  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-tdep.c (fbsd_make_corefile_notes): Use std::string for
+	psargs.
+
+2020-03-05  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* .gitattributes: New file.
+
+2020-03-04  Tom Tromey  <tom@tromey.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.
+
+2020-02-27  Aaron Merey  <amerey@redhat.com>
+
+	* source.c (open_source_file): Check for nullptr when computing
+	srcpath.
+
+2020-02-27  Tom Tromey  <tromey@adacore.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.
+
+2020-02-27  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbtypes.c (create_array_type_with_stride): Use std::abs not
+	abs.
+
+2020-02-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-26  Aaron Merey  <amerey@redhat.com>
+
+	* 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.
+
+2020-02-26  JÃ©rÃ©mie Galarneau  <jeremie.galarneau@efficios.com>
+
+	* thread.c (thr_try_catch_cmd): Print thread name.
+
+2020-02-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-02-26  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25603
+	* symfile.c (set_initial_language): Exit-early if
+	language_mode == language_mode_manual.
+
+2020-02-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbtypes.c (create_array_type_with_stride): Handle negative
+	array strides.
+	* valarith.c (value_subscripted_rvalue): Likewise.
+
+2020-02-25  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-tdep.c (aarch64_vnv_type): Fix comment typo.
+
+2020-02-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* 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.
+
+2020-02-25  Joel Brobecker  <brobecker@adacore.com>
+
+	* copypright.py (EXCLUDE_LIST): Add 'gnulib/config.in' and
+	'gnulib/Makefile.in' to the list.
+
+2020-02-24  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (struct type_unit_unshareable) <num_symtabs>:
+	Remove.
+	* dwarf2/read.c (dwarf2_cu::setup_type_unit_groups): Use
+	XOBNEWVEC.
+
+2020-02-24  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-24  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2read.c (dwarf2_build_psymtabs_hard): Use
+	make_scoped_restore.
+	(dwarf2_psymtab::read_symtab): Don't clear
+	reading_partial_symbols.
+
+2020-02-24  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25592
+	* stack.c (iterate_over_block_locals): Handle LOC_CONST.
+
+2020-02-24  Tom de Vries  <tdevries@suse.de>
+
+	* tui/tui-layout.c (_initialize_tui_layout): Fix help messages for
+	commands layout next/prev/regs.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/loc.h (dwarf2_compile_expr_to_ax): Don't declare.
+	* dwarf2/loc.c (dwarf2_compile_expr_to_ax): Now static.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-data.h (TUI_DISASM_WIN): Cast to tui_disasm_window.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-22  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-22  Tom Tromey  <tom@tromey.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.
+
+2020-02-21  Tom Tromey  <tom@tromey.com>
+
+	* psympriv.h (struct partial_symtab): Update comment.
+
+2020-02-21  Tom Tromey  <tromey@adacore.com>
+
+	* mips-tdep.h (mips_pc_is_mips16, mips_pc_is_micromips): Parameter
+	type is CORE_ADDR.
+
+2020-02-21  Tom de Vries  <tdevries@suse.de>
+
+	PR gdb/25534
+	* psymtab.c (partial_symtab::read_dependencies): Don't read dependency
+	if dependencies[i]->user != NULL.
+
+2020-02-21  Ali Tamur  <tamur@google.com>
+
+	* dwarf2/read.c (dwarf2_name): Add null check.
+
+2020-02-20  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-20  Nelson Chu  <nelson.chu@sifive.com>
+
+	* 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.
+
+2020-02-20  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Tom Tromey  <tom@tromey.com>
+
+	* utils.c (fputs_maybe_filtered): Call 'stream->puts' instead
+	of 'fputc_unfiltered'.
+	(putchar_unfiltered): Call 'fputc_unfiltered'.
+	(fputc_unfiltered): Call 'fputs_unfiltered'.
+
+2020-02-20  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Add --with-python-libdir option.
+	* main.c: Use WITH_PYTHON_LIBDIR.
+
+2020-02-19  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (general_symbol_info::compute_and_set_names): Use
+	obstack_strndup.  Simplify call to symbol_set_demangled_name.
+
+2020-02-19  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-02-19  Doug Evans  <dje@google.com>
+
+	PR rust/25535
+	* rust-lang.c (rust_print_enum): Apply embedded_offset to
+	rust_enum_variant calculation.
+
+2020-02-19  Tom Tromey  <tromey@adacore.com>
+
+	* mips-tdep.h (mips_pc_is_mips): Parameter type is CORE_ADDR.
+
+2020-02-19  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (cache_symbol): Use obstack_strdup.
+
+2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* configure: Regenerate.
+
+2020-02-19  Tom Tromey  <tromey@adacore.com>
+
+	* python/python.c (do_start_initialization): Use XNEWVEC.  Remove
+	NULL check.
+
+2020-02-19  Maciej W. Rozycki  <macro@wdc.com>
+
+	* NEWS: Mention RISC-V GNU/Linux GDBserver support.
+
+2020-02-19  Andrew Burgess  <andrew.burgess@embecosm.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.
+
+2020-02-14  Tom Tromey  <tromey@adacore.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.
+
+2020-02-14  Richard Biener  <rguenther@suse.de>
+
+	* dwarf2/read.c (lnp_state_machine::handle_special_opcode): Apply CSE
+	on expression with division operators.
+
+2020-02-13  Alok Kumar Sharma  <AlokKumar.Sharma@amd.com>
+
+	* MAINTAINERS (Write After Approval): Adding myself.
+
+2020-02-12  Tom Tromey  <tom@tromey.com>
+
+	* event-loop.c (event_data, gdb_event, event_handler_func):
+	Remove.
+
+2020-02-12  Tom Tromey  <tom@tromey.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.
+
+2020-02-12  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/frame.c (decode_frame_entry_1): Add gdbarch parameter.
+	(decode_frame_entry): Likewise.
+	(dwarf2_build_frame_info): Update.
+
+2020-02-12  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/frame.c (struct comp_unit) <obstack>: New member.
+	(decode_frame_entry_1): Use the comp_unit obstack.
+
+2020-02-12  Tom Tromey  <tom@tromey.com>
+
+	* 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".
+
+2020-02-12  Tom Tromey  <tom@tromey.com>
+
+	* 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".
+
+2020-02-12  Christian Biesinger  <cbiesinger@google.com>
+
+	* 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.
+
+2020-02-12  Christian Biesinger  <cbiesinger@google.com>
+
+	* arm-tdep.c (arm_dump_tdep): Print more fields of tdep.
+
+2020-02-12  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/loc.c (struct dwarf_expr_baton): Remove.
+
+2020-02-12  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-tdep.c (struct windows_gdbarch_data): Add tib_ptr_type.
+	(windows_get_tlb_type): Use windows_gdbarch_data->tib_ptr_type.
+
+2020-02-11  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.h: Update comment.
+
+2020-02-11  Tom Tromey  <tom@tromey.com>
+
+	* gdb_obstack.h (struct auto_obstack): Use
+	DISABLE_COPY_AND_ASSIGN.
+
+2020-02-11  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/frame.h (struct objfile): Don't forward declare.
+
+2020-02-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* 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.
+
+2020-02-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* arch/arm.h (enum gdb_regnum): Add comment for the FP0..7
+	registers.
+
+2020-02-11  Christian Biesinger  <cbiesinger@google.com>
+
+	* arm-tdep.c (arm_dump_tdep): Add \n in fprintf.
+
+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: Update warning.m4 path.
+	* warning.m4: Move to gdbsupport.
+
+2020-02-11  Tom Tromey  <tromey@adacore.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.
+
+2020-02-08  Tom Tromey  <tom@tromey.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.
+
+2020-02-08  Tom Tromey  <tom@tromey.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.
+
+2020-02-08  Tom Tromey  <tom@tromey.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.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-08  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (allocate_dwo_file_hash_table): Don't allocate on
+	obstack.
+
+2020-02-08  Tom Tromey  <tom@tromey.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.
+
+2020-02-08  Tom Tromey  <tom@tromey.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.
+
+2020-02-08  Tom Tromey  <tom@tromey.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.
+
+2020-02-08  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 9.1 released.
+
+2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	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.
+
+2020-02-05  Iain Buclaw  <ibuclaw@gdcproject.org>
+
+	* 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.
+
+2020-02-07  Tom Tromey  <tromey@adacore.com>
+
+	PR breakpoints/24915:
+	* source.c (find_and_open_source): Do not check basenames_may_differ.
+
+2020-02-07  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-02-06  Shahab Vahedi  <shahab@synopsys.com>
+
+	* 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.
+
+2020-02-06  Shahab Vahedi  <shahab@synopsys.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-02-05  Christian Biesinger  <cbiesinger@google.com>
+
+	* sparc-nat.h (struct sparc_target) <xfer_partial>: Fix base class
+	function call.
+
+2020-02-05  Christian Biesinger  <cbiesinger@google.com>
+
+	* ppc-nbsd-tdep.h: Fix macro name in #endif comment.
+
+2020-02-05  Maciej W. Rozycki  <macro@wdc.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.
+
+2020-02-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote-sim.c (sim_inferior_data::sim_inferior_data): Assert that
+	we don't set the fake simulator ptid to the null_ptid.
+
+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.
+
+2020-01-31  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui/tui-win.c (_initialize_tui_win): Update help text for '+',
+	'-', '<', and '>' commands.
+
+2020-01-29  Pedro Alves  <palves@redhat.com>
+	    Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* infcmd.c (construct_inferior_arguments): Assert that
+	'argc' is greater than 0.
+
+2020-01-29  Luis Machado  <luis.machado@linaro.org>
+
+	* 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.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-01-26  Tom Tromey  <tom@tromey.com>
+
+	* machoread.c: Do not include psympriv.h.
+
+2020-01-25  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* NEWS: Mention the new option and the set/show commands.
+
+2020-01-25  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* 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.
+
+2020-01-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* 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.
+
+2020-01-21  Luis Machado  <luis.machado@linaro.org>
+
+	* 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.
+
+2020-01-21  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-tdep.c (aarch64_displaced_step_fixup): Add more debugging
+	output.
+
+2020-01-21  Luis Machado  <luis.machado@linaro.org>
+
+	* 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.
+
+2020-01-19  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-01-19  Tom Tromey  <tom@tromey.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.
+
+2020-01-19  Tom Tromey  <tom@tromey.com>
+
+	* tui/tui-winsource.c (tui_update_source_windows_with_line):
+	Handle case where symtab is null.
+
+2020-01-19  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-fork.c (one_fork_p): Simplify.
+
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* 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.
+
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* mi/mi-interp.c (report_initial_inferior): Remove.
+	(mi_interp::init): Use range-based for to iterate over inferiors.
+
+2020-01-17  Simon Marchi  <simon.marchi@efficios.com>
+
+	* python/py-inferior.c (build_inferior_list): Remove.
+	(gdbpy_ref): Use range-based for loop to iterate over inferiors.
+
+2020-01-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* 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).
+
+2020-01-16  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-tdep.c (windows_get_tlb_type):
+	Add rtl_user_process_parameters type.
+
+2020-01-16  Pedro Alves  <palves@redhat.com>
+	    Norbert Lange  <nolange79@gmail.com>
+
+	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.
+
+2020-01-16  Nitika Achra  <Nitika.Achra@amd.com>
+
+	* dwarf2loc.c (decode_debug_loclists_addresses): Handle
+	DW_LLE_base_addressx, DW_LLE_startx_length, DW_LLE_start_length.
+
+2020-01-15  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infcmd.c (post_create_inferior): Use get_thread_regcache
+	instead of get_current_regcache.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	PR symtab/12535:
+	* python/python.c (gdbpy_decode_line): Treat empty string the same
+	as no argument.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (CLIBS): Remove second use of $(LIBIBERTY).
+
+2020-01-14  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>.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* configure.ac: Move many checks to ../gdbsupport/common.m4.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* 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.
+
+2020-01-14  Tom Tromey  <tom@tromey.com>
+
+	* configure: Rebuild.
+	* gdbsupport/common.m4 (GDB_AC_COMMON): Fix indentation.
+
+2020-01-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* skip.c (skip_function_command): Make skip w/o arguments use the
+	name of the inlined function if pc is inside any inlined function.
+
+2020-01-14  Luis Machado  <luis.machado@linaro.org>
+
+	* 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.
+
+2020-01-10  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* inferior.c (print_inferior): Switch inferior before printing it.
+
+2020-01-10  Aleksandar Paunovic  <aleksandar.paunovic@intel.com>
+	    Pedro Alves  <palves@redhat.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.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* gdbarch-selftests.c (register_to_value_test): Remove "target
+	already pushed" check.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+	    John Baldwin  <jhb@FreeBSD.org>
+
+	* 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.
+	(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.
+
+2020-01-10  Pedro Alves <palves@redhat.com>
+
+	* 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.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* infcmd.c (kill_command): Remove dead code.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* remote.c (remote_target::mourn_inferior): No longer check
+	whether the target is running.
+
+2020-01-10  Pedro Alves  <palves@redhat.com>
+
+	* 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.
+
+2020-01-10  George Barrett  <bob@bob131.so>
+
+	* stap-probe.c (stap_modify_semaphore): Don't check for null
+	semaphores.
+	(stap_probe::set_semaphore, stap_probe::clear_semaphore): Check
+	for null semaphores.
+
+2020-01-09  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.
+
+2020-01-09  Tom Tromey  <tom@tromey.com>
+
+	PR tui/18932:
+	* tui/tui-source.c (tui_source_window::do_scroll_vertical): Call
+	update_source_window, not print_source_lines.
+
+2020-01-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui/tui.c (tui_enable): Register tui hooks after calling
+	tui_display_main.
+
+2020-01-09  Christian Biesinger  <cbiesinger@google.com>
+
+	* gdbsupport/common-defs.h: Don't define _FORTIFY_SOURCE on MinGW.
+
+2020-01-08  Simon Marchi  <simon.marchi@efficios.com>
+
+	* thread.c (print_thread_info_1): Fix indentation.
+
+2020-01-09  Christian Biesinger  <cbiesinger@google.com>
+
+	* symtab.c (general_symbol_info::compute_and_set_names): Move the
+	unique_xmalloc_ptr outside the if to always free the demangled name.
+
+2020-01-08  Tom Tromey  <tromey@adacore.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.
+
+2020-01-08  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (parse_macro_definition): Use std::string.
+	(parse_macro_definition): Likewise.
+
+2020-01-08  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (abbrev_table_read_table): Use std::vector.
+	(ATTR_ALLOC_CHUNK): Remove.
+
+2020-01-08  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2read.c (fixup_go_packaging): Use unique_xmalloc_ptr.
+
+2020-01-08  Tom Tromey  <tromey@adacore.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.
+
+2020-01-07  Tom Tromey  <tromey@adacore.com>
+
+	PR build/24937:
+	* stap-probe.c (class stap_static_probe_ops): Add constructor.
+
+2020-01-02  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* cli/cli-style.c: Set cli_styling to 'true' in the Cygwin build.
+
+2020-01-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* stack.c (print_frame_info): Move disassemble_next_line code
+	inside source_print block.
+
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
+
+	* gdbsupport/gdb_wait.c: Include <signal.h> instead of
+	gdb/signals.h, as we are now using native signal symbols.
+
+2020-01-06  Shahab Vahedi  <shahab@synopsys.com>
+
+	* 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.
+
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
+
+	* NEWS: Mention the recent fix of $_exitsignal on MS-Windows.
+
+2020-01-02  Jon Turney  <jon.turney@dronecode.org.uk>
+
+	* coff-pe-read.c (read_pe_exported_syms): Don't try to read the
+	export table if no section contains it's RVA.
+
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
+
+	* windows-tdep.c: Fix a typo in WINDOWS_SIGABRT.
+
+2020-01-06  Hannes Domani  <ssbssa@yahoo.de>
+
+	* source.c (print_source_lines_base): Set last_line_listed.
+
+2020-01-06  Shahab Vahedi  <shahab@synopsys.com>
+
+	* tui/tui-disasm.c: Remove trailing spaces.
+
+2020-01-06  Eli Zaretskii  <eliz@gnu.org>
+	    Pedro Alves  <palves@redhat.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.
+
+2020-01-05  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui/tui-layout.c (tui_add_win_to_layout): Use tui_set_layout not
+	show_layout.
+
+2020-01-05  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-nat.c
+	(aarch64_linux_nat_target::thread_architecture): Use bfd_arch_aarch64
+	and bfd_mach_aarch64.
+
+2020-01-03  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* 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.
+
+2020-01-03  Hannes Domani  <ssbssa@yahoo.de>
+
+	* solib-target.c (struct lm_info_target):
+	Change offsets to be a unique_xmalloc_ptr.
+	(solib_target_relocate_section_addresses): Update.
+
+2020-01-03  Hannes Domani  <ssbssa@yahoo.de>
+
+	* windows-nat.c (windows_clear_solib): Free so_list linked list.
+
+2020-01-03  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-01-02  Luis Machado  <luis.machado@linaro.org>
+
+	* proc-service.c (get_ps_regcache): Remove reference to obsolete
+	Cell BE architecture.
+	* target.h (struct target_ops) <thread_architecture>: Likewise.
+
+2020-01-01  Hannes Domani  <ssbssa@yahoo.de>
+
+	* Makefile.in: Use INSTALL_PROGRAM_ENV.
+
+2020-01-01  Hannes Domani  <ssbssa@yahoo.de>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbarch.sh: Update copyright year range of generated files.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	Update copyright year range in all GDB files.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* copyright.py: Convert to Python 3.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* copyright.py: Adapt after move of gnulib directory from gdb
+	directory to toplevel directory.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* copyright.py (main): Exit if run from the wrong directory.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* top.c (print_gdb_version): Change copyright year to 2020.
+
+2020-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2019.
+
+For older changes see ChangeLog-2019.
+
+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.20200303/gdb/ChangeLog-2021 ./gdb/ChangeLog-2021
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/ChangeLog-2021	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/ChangeLog-2021	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,7545 @@
+2021-07-06  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/read.c (scan_partial_symbols): Skip top-level imports of
+	c++ CU.
+	* testsuite/gdb.dwarf2/imported-unit-bp.exp: Moved to ...
+	* testsuite/gdb.dwarf2/imported-unit-bp.exp.tcl: ... here.
+	* testsuite/gdb.dwarf2/imported-unit-bp-c++.exp: New test.
+	* testsuite/gdb.dwarf2/imported-unit-bp-c.exp: New test.
+	* testsuite/gdb.dwarf2/imported-unit.exp: Update.
+
+2021-07-03  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.
+
+2021-07-03  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 11 branch created (4b51505e33441c6165e7789fa2b6d21930242927):
+	* version.in: Bump version to 12.0.50.DATE-git.
+
+2021-07-03  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (lnp_state_machine::record_line): Use 'true'.
+	(dwarf_decode_lines): Remove '=='.
+
+2021-07-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-exp.y (chop_selector, chop_separator, write_selectors)
+	(write_ambiguous_var, get_symbol_field_type): Use const.
+
+2021-07-02  Pedro Alves  <pedro@palves.net>
+	    Hannes Domani  <ssbssa@yahoo.de>
+
+	* NEWS: Add new "TUI Improvements" section and mention mouse
+	support and that unrecognized special keys are now passed to
+	GDB.  Mention Python Window.click in the Python improvements
+	section.
+
+2021-07-01  Pedro Alves  <pedro@palves.net>
+
+	PR mi/15729
+	PR gdb/13463
+	* linux-nat.c (linux_nat_target::detach): Close the
+	/proc/<pid>/mem file if it was open for this process.
+	(linux_handle_extended_wait) <PTRACE_EVENT_EXEC>: Close the
+	/proc/<pid>/mem file if it was open for this process.
+	(linux_nat_target::mourn_inferior): Close the /proc/<pid>/mem file
+	if it was open for this process.
+	(linux_nat_target::xfer_partial): Adjust.  Do not fall back to
+	inf_ptrace_target::xfer_partial for memory accesses.
+	(last_proc_mem_file): New.
+	(maybe_close_proc_mem_file): New.
+	(linux_proc_xfer_memory_partial_pid): New, with bits factored out
+	from linux_proc_xfer_partial.
+	(linux_proc_xfer_partial): Delete.
+	(linux_proc_xfer_memory_partial): New.
+
+2021-06-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* frame.h (FRAME_SCOPED_DEBUG_ENTER_EXIT): New.
+	* frame.c (compute_frame_id, get_prev_frame_always_1,
+	get_prev_frame): Use FRAME_SCOPED_DEBUG_ENTER_EXIT.
+	* frame-unwind.c (frame_unwind_find_by_frame): Likewise.
+	(frame_unwind_register_value): Likewise.
+
+2021-06-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* frame-unwind.h (struct frame_unwind) <name>: New.  Update
+	instances everywhere to include this field.
+	* frame-unwind.c (frame_unwind_try_unwinder,
+	frame_unwind_find_by_frame): Add debug messages.
+
+2021-06-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* frame.h (frame_debug_printf): New.
+	* frame.c: Use frame_debug_printf throughout when printing frame
+	debug messages.
+	* amd64-windows-tdep.c: Likewise.
+	* value.c: Likewise.
+
+2021-06-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* frame.h (frame_debug): Change type to bool.
+	* frame.c (frame_debug): Change type to bool.
+	(_initialize_frame): Adjust.
+
+2021-06-29  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* gdbthread.h (find_thread_ptid): Remove the duplicate declaration.
+
+2021-06-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/28017
+	* machoread.c (macho_symfile_offsets): Use
+	gdb_bfd_count_sections to allocate objfile::section_offsets.
+
+2021-06-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* objfiles.h (struct obj_section): Move down.
+	<offset, set_offset, addr, endaddr>: New.
+	(obj_section_offset, obj_section_addr, obj_section_endaddr),
+	replace all users to use obj_section methods.
+	(struct objfile) <section_offset, set_section_offset>: New.
+
+2021-06-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* objfiles.h (struct obj_section): Move down.
+	<offset, set_offset, addr, endaddr>: New.
+	(obj_section_offset, obj_section_addr, obj_section_endaddr),
+	replace all users to use obj_section methods.
+	(struct objfile) <section_offset, set_section_offset>: New.
+
+2021-06-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* .flake8: New.
+
+2021-06-28  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c (aarch64_linux_memtag_matches_p): Remove the top
+	byte.
+	(aarch64_linux_set_memtags): Likewise.
+	(aarch64_linux_get_memtag): Likewise.
+	(aarch64_linux_report_signal_info): Likewise.
+
+2021-06-28  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c
+	(aarch64_linux_iterate_over_regset_sections): Fix FFR register size.
+
+2021-06-28  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c
+	(aarch64_linux_iterate_over_regset_sections): Update tag_ctl register
+	size.
+	* aarch64-linux-tdep.h (AARCH64_LINUX_SIZEOF_MTE_REGSET): Set to
+	8 and update comments.
+
+2021-06-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh (struct gdbarch_info): Initialize fields, add
+	constructor.
+	* gdbarch.h: Re-generate.
+	* arch-utils.h (gdbarch_info_init): Remove, delete all usages.
+	* arch-utils.c (gdbarch_info_init): Remove.
+
+2021-06-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh (struct gdbarch_info) <tdep_info>: Remove.
+	(gdbarch_find_by_info): Remove print.
+	* gdbarch.c, gdbarch.h: Re-generate.
+
+2021-06-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote.c (remote_target::start_remote): Set 'starting_up' using
+	boolean values instead of integers.
+
+2021-06-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* guile/scm-param.c (struct param_smob) <set_command,
+	show_command>: Remove.
+	<commands>: New.
+	(pascm_is_valid): Adjust.
+	(add_setshow_generic): Use return values of add_setshow
+	functions, return a set_show_commands.
+	(gdbscm_register_parameter_x): Adjust.
+
+2021-06-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* command.h (add_setshow_enum_cmd): Remove context parameter.
+	* cli/cli-decode.c (add_setshow_enum_cmd): Likewise, and don't
+	set context.
+	* cli/cli-style.c (cli_style_option::add_setshow_commands): Set
+	context here.
+
+2021-06-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.h (struct cmd_list_element) <set_context>: Add
+	assert.
+
+2021-06-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.h (struct cmd_list_element) <set_context,
+	context>: New.
+	<context>: Rename to...
+	<m_context>: ... this.
+	* cli/cli-decode.c (set_cmd_context, get_cmd_context): Remove.
+	* command.h (set_cmd_context, get_cmd_context): Remove, use
+	cmd_list_element::set_context and cmd_list_element::context
+	everywhere instead.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention changes to 'info sources'.
+	* symtab.c (info_sources_filter::print): Delete.
+	(struct output_source_filename_data) <print_header>: Delete
+	declaration.  <printed_filename_p>: New member function.
+	(output_source_filename_data::print_header): Delete.
+	(info_sources_worker): Update group-by-objfile style output to
+	make it CLI suitable, simplify non-group-by-objfile now this is
+	only used from the MI.
+	(info_sources_command): Make group-by-objfile be the default for
+	CLI info sources command.
+	* symtab.h (struct info_sources_filter) <print>: Delete.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention additions to -file-list-exec-source-files.
+	* mi/mi-cmd-file.c (mi_cmd_file_list_exec_source_files): Add
+	--group-by-objfile option.
+	* symtab.c (isrc_flag_option_def): Rename to...
+	(isrc_match_flag_option_def): ...this.
+	(info_sources_option_defs): Rename to...
+	(info_sources_match_option_defs): ...this, and update to rename of
+	isrc_flag_option_def.
+	(struct filename_grouping_opts): New struct.
+	(isrc_grouping_flag_option_def): New type.
+	(info_sources_grouping_option_defs): New static global.
+	(make_info_sources_options_def_group): Update to return two option
+	groups.
+	(info_sources_command_completer): Update for changes to
+	make_info_sources_options_def_group.
+	(info_sources_worker): Add extra parameter, use this to display
+	alternative output format.
+	(info_sources_command): Pass extra parameter to
+	info_sources_worker.
+	(_initialize_symtab): Update for changes to
+	make_info_sources_options_def_group.
+	* symtab.h (info_sources_worker): Add extra parameter.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention additions to -file-list-exec-source-files.
+	* mi/mi-cmd-file.c (print_partial_file_name): Delete.
+	(mi_cmd_file_list_exec_source_files): Rewrite to handle command
+	options, and make use of info_sources_worker.
+	* symtab.c (struct info_sources_filter): Moved to symtab.h.
+	(info_sources_filter::print): Take uiout argument, produce output
+	through uiout.
+	(struct output_source_filename_data)
+	<output_source_filename_data>: Take uiout argument, store into
+	m_uiout.  <output>: Rewrite comment, add additional arguments to
+	declaration.  <operator()>: Send more arguments to
+	output. <m_uiout>: New member variable.
+	(output_source_filename_data::output): Take extra arguments,
+	produce output through m_uiout, and structure for MI.
+	(output_source_filename_data::print_header): Produce output
+	through m_uiout.
+	(info_sources_worker): New function, the implementation is taken
+	from info_sources_command, but modified so produce output through
+	a ui_out.
+	(info_sources_command): The second half of this function has gone
+	to become info_sources_worker.
+	* symtab.h (struct info_sources_filter): Moved from symtab.c, add
+	extra parameter to print member function.
+	(info_sources_worker): Declare.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* symtab.c (struct info_sources_filter): New.
+	(info_sources_filter::info_sources_filter): New function.
+	(info_sources_filter::matches): New function.
+	(info_sources_filter::print): New function.
+	(struct filename_partial_match_opts): Moved to later in the file
+	and update the comment.
+	(struct output_source_filename_data)
+	<output_source_filename_data>: New constructor.  <regexp>: Delete,
+	this is now in info_sources_filter.  <c_regexp>: Delete, this is
+	now in info_sources_filter.  <reset_output>: New member function.
+	<filename_seen_cache>: Rename to m_filename_seen_cache, change
+	from being a pointer, to being an actual object.  <first>: Rename
+	to m_first.  <print_header>: New member function. <partial_match>:
+	Delete.
+	(output_source_filename_data::output): Update now
+	m_filename_seen_cache is no longer a pointer, and for other member
+	variable name changes. Add a header comment.
+	(print_info_sources_header): Renamed to...
+	(output_source_filename_data::print_header): ...this.  Update now
+	it's a member function and to take account of member variable
+	renaming.
+	(info_sources_command): Add a header comment, delete stack local
+	filename_seen_cache, initialization of output_source_filename_data
+	is now done by the constructor.  Call print_header member function
+	instead of print_info_sources_header, call reset_output member
+	function instead of manually performing the reset.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2/read.c (struct dwarf2_base_index_functions)
+	<has_unexpanded_symtabs>: Declare.
+	(dwarf2_base_index_functions::has_unexpanded_symtabs): Define new
+	function.
+	* objfiles.h (struct objfile) <has_unexpanded_symtabs>: Declare.
+	* psympriv.h (struct psymbol_functions) <has_unexpanded_symtabs>:
+	Declare.
+	* psymtab.c (psymbol_functions::has_unexpanded_symtabs): Define
+	new function.
+	* quick-symbol.h (struct quick_symbol_functions)
+	<has_unexpanded_symtabs>: Declare.
+	* symfile-debug.c (objfile::has_unexpanded_symtabs): Define new
+	function.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* infcall.c (call_function_by_hand_dummy): Add missing 'else' when
+	setting prototyped flag.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* ada-lang.c (desc_bounds): Use '{}' instead of NULL to indicate
+	an empty gdb::optional when calling value_struct_elt.
+	(desc_data): Likewise.
+	(desc_one_bound): Likewise.
+	* eval.c (structop_base_operation::evaluate_funcall): Pass
+	gdb::array_view, not a gdb::array_view* to value_struct_elt.
+	(eval_op_structop_struct): Use '{}' instead of NULL to indicate
+	an empty gdb::optional when calling value_struct_elt.
+	(eval_op_structop_ptr): Likewise.
+	* f-lang.c (fortran_structop_operation::evaluate): Likewise.
+	* guile/scm-value.c (gdbscm_value_field): Likewise.
+	* m2-lang.c (eval_op_m2_high): Likewise.
+	(eval_op_m2_subscript): Likewise.
+	* opencl-lang.c (opencl_structop_operation::evaluate): Likewise.
+	* python/py-value.c (valpy_getitem): Likewise.
+	* rust-lang.c (rust_val_print_str): Likewise.
+	(rust_range): Likewise.
+	(rust_subscript): Likewise.
+	(eval_op_rust_structop): Likewise.
+	(rust_aggregate_operation::evaluate): Likewise.
+	* valarith.c (value_user_defined_op): Likewise.
+	* valops.c (search_struct_method): Change parameter type, update
+	function body accordingly, and update header comment.
+	(value_struct_elt): Change parameter type, update function body
+	accordingly.
+	* value.h (value_struct_elt): Update declaration.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/27994
+	* eval.c (structop_base_operation::evaluate_funcall): Pass
+	array_view instead of array to value_struct_elt.
+	* valarith.c (value_user_defined_op): Likewise.
+	* valops.c (typecmp): Change parameter type from array pointer to
+	array_view.  Update header comment, and update body accordingly.
+	(search_struct_method): Likewise.
+	(value_struct_elt): Likewise.
+	* value.h (value_struct_elt): Update declaration.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/27994
+	* eval.c (structop_base_operation::evaluate_funcall): Add a
+	nullptr to the end of the args array, which should not be included
+	in the argument array_view.  Pass all the arguments through to
+	value_struct_elt.
+	* valops.c (search_struct_method): Update header comment.
+	(value_struct_elt): Likewise.
+
+2021-06-25  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (create_addrmap_from_aranges): Change padding
+	logic.
+
+2021-06-25  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (process_psymtab_comp_unit): Don't set 'lang'.
+	(scan_partial_symbols, partial_die_parent_scope)
+	(add_partial_symbol, add_partial_subprogram)
+	(compute_delayed_physnames, rust_union_quirks)
+	(process_full_comp_unit, process_full_type_unit)
+	(process_imported_unit_die, process_die, dw2_linkage_name)
+	(dwarf2_compute_name, dwarf2_physname, read_import_statement)
+	(read_file_scope, queue_and_load_dwo_tu, read_func_scope)
+	(read_variable, dwarf2_get_subprogram_pc_bounds)
+	(dwarf2_attach_fields_to_type, dwarf2_add_member_fn)
+	(dwarf2_attach_fn_fields_to_type)
+	(quirk_ada_thick_pointer_struct, read_structure_type)
+	(handle_struct_member_die, process_structure_scope)
+	(read_array_type, read_array_order, prototyped_function_p)
+	(read_subroutine_type, dwarf2_init_complex_target_type)
+	(read_base_type, read_subrange_type, read_unspecified_type)
+	(load_partial_dies, partial_die_info::fixup, set_cu_language)
+	(new_symbol, need_gnat_info, determine_prefix, typename_concat)
+	(dwarf2_canonicalize_name, follow_die_offset)
+	(prepare_one_comp_unit): Update.
+	* dwarf2/cu.c (dwarf2_cu::start_symtab): Update.
+
+2021-06-25  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_file_scope): Don't call set_cu_language.
+	(dwarf_lang_to_enum_language): Rename from set_cu_language.  Don't
+	set language_defn.  Handle DW_LANG_OpenCL.
+	(prepare_one_comp_unit): Check producer and set language_defn.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention Python BP_CATCHPOINT feature.
+	* python/py-breakpoint.c (pybp_codes): Add bp_catchpoint support.
+	(bppy_init): Likewise.
+	(gdbpy_breakpoint_created): Likewise.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* guile/scm-breakpoint.c (bpscm_type_to_string): Handle
+	bp_catchpoint.
+	(bpscm_want_scm_wrapper_p): Likewise.
+	(gdbscm_make_breakpoint): Likewise.
+	(breakpoint_integer_constants): Likewise.
+
+2021-06-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* guile/scm-breakpoint.c (gdbscm_make_breakpoint): Split the error
+	for invalid breakpoint numbers, and unsupported breakpoint
+	numbers.
+
+2021-06-25  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/index-write.c (struct addrmap_index_data): Add
+	initializers.
+	<operator()>: Declare.
+	(addrmap_index_data::operator()): Rename from
+	add_address_entry_worker.  Remove 'datap' parameter.
+	(write_address_map): Update.
+	* psymtab.c (struct dump_psymtab_addrmap_data): Remove
+	(dump_psymtab_addrmap_1): Remove 'data' parameter, add other
+	parameters.
+	(dump_psymtab_addrmap): Update.
+	* addrmap.c (struct addrmap_funcs) <foreach>: Remove 'data'
+	parameter.
+	(addrmap_foreach, addrmap_fixed_foreach): Likewise.
+	(struct mutable_foreach_data): Remove.
+	(addrmap_mutable_foreach_worker): Update.
+	(addrmap_mutable_foreach): Remove 'data' parameter.
+	* addrmap.h (addrmap_foreach_fn): Use gdb::function_view.
+	(addrmap_foreach): Remove 'data' parameter.
+
+2021-06-25  Tom Tromey  <tromey@adacore.com>
+
+	* python/py-type.c (typy_get_name): Decode an Ada type name.
+
+2021-06-25  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_decode): Add wrap parameter.
+	* ada-lang.h (ada_decode): Add wrap parameter.
+
+2021-06-25  Luis Machado  <luis.machado@linaro.org>
+
+	* corelow.c (core_target::core_target) Update to read target
+	description.
+
+2021-06-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* python/lib/gdb/__init__.py: Format.
+
+2021-06-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (do_target_wait): Remove wait_ptid parameter.
+	(fetch_inferior_event): Adjust.
+
+2021-06-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* python/lib/gdb/__init__.py (_execute_unwinders): Return tuple
+	with name of chosen unwinder.
+	* python/py-unwind.c (pyuw_sniffer): Print name of chosen
+	unwinder in debug message.
+
+2021-06-22  Andreas Schwab  <schwab@suse.de>
+
+	PR symtab/27999
+	* dwarf2/loc.c (decode_debug_loclists_addresses): Support
+	DW_LLE_start_end.
+
+2021-06-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* breakpoint.c (insert_bp_location): If we catch a
+	TARGET_CLOSE_ERROR just rethrow it, the breakpoints might have
+	been deleted.
+
+2021-06-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new target feature name.
+	* arch/riscv.c (riscv_create_target_description): GDB doesn't
+	currently create target descriptions containing vector registers.
+	* arch/riscv.h (struct riscv_gdbarch_features) <vlen>: New member
+	variable.
+	<operator==>: Also compare vlen.
+	<hash>: Also include vlen.
+	* riscv-tdep.c (riscv_feature_name_vector): New static global.
+	(struct riscv_vector_feature): New struct.
+	(riscv_vector_feature): New static global.
+	(riscv_register_reggroup_p): Ensure vector registers are part of
+	the 'all' group, and part of the 'vector' group.
+	(riscv_dwarf_reg_to_regnum): Handle vector registers.
+	(riscv_gdbarch_init): Check vector register feature.
+	* riscv-tdep.h: Add vector registers to GDB's internal register
+	numbers, and to the DWARF register numbers.
+
+2021-06-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention the two new methods.
+	* python/py-frame.c (frapy_level): New function.
+	(frame_object_methods): Register 'level' method.
+	* python/py-unwind.c (pending_framepy_level): New function.
+	(pending_frame_object_methods): Register 'level' method.
+
+2021-06-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-inferior.c (infpy_get_connection_num): Call
+	gdb_py_object_from_longest instead of PyLong_FromLong directly.
+
+2021-06-21  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-unwind.c (unwind_infopy_add_saved_register): Handle
+	saving user registers.
+
+2021-06-19  Mike Frysinger  <vapier@gentoo.org>
+
+	* acinclude.m4: Delete most m4_include's of ../config files.
+	* configure.ac: Delete m4_include call and call AC_CONFIG_MACRO_DIR.
+	* aclocal.m4: Regenerate.
+	* configure: Regenerate.
+
+2021-06-17  Pedro Alves  <pedro@palves.net>
+
+	* scoped_ignore_signal.h (scoped_ignore_signal): Add
+	ConsumePending template parameter.
+	(scoped_ignore_signal::~scoped_ignore_signal): Skip calling
+	sigtimedwait if ConsumePending is false.
+	(scoped_ignore_sigpipe): Initialize with ConsumePending=true.
+	* scoped_ignore_sigttou.h (scoped_ignore_sigttou)
+	<m_ignore_signal>: Initialize with ConsumePending=false.
+
+2021-06-17  Pedro Alves  <pedro@palves.net>
+
+	* Makefile.in (SELFTESTS_SRCS): Add
+	unittests/scoped_ignore_signal-selftests.c.
+	* unittests/scoped_ignore_signal-selftests.c: New.
+
+2021-06-17  Pedro Alves  <pedro@palves.net>
+
+	* gdbsupport/scoped_ignore_signal.h: New.
+	* compile/compile.c: Include gdbsupport/scoped_ignore_signal.h
+	instead of <signal.h>.  Don't include <unistd.h>.
+	(scoped_ignore_sigpipe): Remove.
+	* gdbsupport/scoped_ignore_sigttou.h: Include gdbsupport/scoped_ignore_signal.h
+	instead of <signal.h>.  Don't include <unistd.h>.
+	(lazy_init): New.
+	(scoped_ignore_sigttou): Reimplement using scoped_ignore_signal
+	and lazy_init.
+
+2021-06-17  Pedro Alves  <pedro@palves.net>
+
+	* Makefile.in (HFILES_NO_SRCDIR): Remove inflow.h.
+	* inf-ptrace.c, inflow.c, procfs.c: Don't include "inflow.h".
+	* inflow.h: Delete, moved to gdbsupport/ under a different name.
+	* ser-unix.c: Don't include "inflow.h".  Include
+	"gdbsupport/scoped_ignore_sigttou.h".
+
+2021-06-17  Pedro Alves  <pedro@palves.net>
+
+	* tui/tui-io.c (tui_dispatch_mouse_event): New, factored out from
+	...
+	(tui_dispatch_ctrl_char): ... this.  Move CTRL-L handling to
+	tui_getc_1.
+	(cur_seq, start_sequence): New.
+	(tui_getc_1): Pass key escape sequences for curses control keys to
+	readline.  Handle mouse and ctrl-l here.
+	(tui_resize_all): Disable/reenable the keypad if the command
+	window has the focus too.
+	* tui/tui-win.c (tui_set_focus_command): Don't change keypad
+	setting.
+	* tui/tui.c (tui_rl_other_window): Don't change keypad setting.
+
+2021-06-16  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* silent-rules.mk (ECHO_CCLD, ECHO_AR, ECHO_RANLIB): New.
+
+2021-06-16  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26327
+	* dwarf2/cu.h (dwarf2_cu::ancestor): Remove.
+	(dwarf2_cu::get_builder): Declare and move ...
+	* dwarf2/cu.c (dwarf2_cu::get_builder): ... here.  Use sym_cu instead
+	of ancestor.  Assert return value is non-null.
+	* dwarf2/read.c (read_file_scope): Set per_objfile->sym_cu.
+	(follow_die_offset, follow_die_sig_1): Remove setting of ancestor.
+	(dwarf2_per_objfile): Add sym_cu field.
+
+2021-06-15  Alan Modra  <amodra@gmail.com>
+
+	* testsuite/lib/gdb.exp (exec_is_pie): Match new PIE readelf output.
+
+2021-06-14  Mike Frysinger  <vapier@gentoo.org>
+
+	* Makefile.in (GNULIB_BUILDDIR): Rename to ...
+	(GNULIB_PARENT_DIR): ... this.  Remove "gnulib" from value.
+
+2021-06-14  John Baldwin  <jhb@FreeBSD.org>
+
+	* configure.ac: Check for <sys/procctl.h>.
+	* config.in, configure: Regenerate.
+	* fbsd-nat.c: Include <sys/procctl.h> if present.
+	[PROC_ASLR_CTL] (maybe_disable_address_space_randomization): New.
+	(fbsd_nat_target::create_inferior)
+	(fbsd_nat_target::supports_disable_randomization): New.
+	* fbsd-nat.h (fbsd_nat_target::create_inferior)
+	(fbsd_nat_target::supports_disable_randomization): New.
+
+2021-06-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* compile/compile.c: Include missing header signal.h.
+
+2021-06-12  John Baldwin  <jhb@FreeBSD.org>
+
+	* remote.c (remote_new_objfile): Fix indentation.
+
+2021-06-11  Kevin Buettner  <kevinb@redhat.com>
+
+	* solib.c (libpthread_name_p): Match "libc" in addition
+	to "libpthread".
+	* linux-thread-db.c (libpthread_objfile_p): New function.
+	(libpthread_name_p): Adjust preexisting callers to use
+	libpthread_objfile_p().
+
+2021-06-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/loc.h (struct call_site_stuff): Remove.
+
+2021-06-11  Tom Tromey  <tom@tromey.com>
+
+	PR rust/23427
+	* rust-parse.c (rust_parser::lex_identifier): Handle raw
+	identifiers.
+	(rust_lex_tests): Add raw identifier tests.
+
+2021-06-08  Lancelot Six  <lsix@lancelotsix.com>
+
+	* python/lib/gdb/FrameDecorator.py (FrameDecorator): Use 'is None'
+	instead of '== None'.
+	(FrameVars): Use 'is not None' instead of '!= None'.
+	* python/lib/gdb/command/frame_filters.py (SetFrameFilterPriority):
+	Use 'is None' instead of '== None' and 'is not None' instead of '!=
+	None'.
+
+2021-06-08  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferior.h (class inferior) <in_initial_library_scan>: New.
+	* infcmd.c (post_create_inferior): Set in_initial_library_scan.
+	* infrun.c (follow_fork_inferior): Likewise.
+	* linux-thread-db.c (try_thread_db_load): Catch exception thrown
+	by try_thread_db_load_1
+	(thread_db_load): Return early if in_initial_library_scan is
+	set.
+	* remote.c (remote_new_objfile): Return early if
+	in_initial_library_scan is set.
+
+2021-06-07  Pedro Alves  <pedro@palves.net>
+
+	* dwarf2/read.c (struct partial_die_info): Add defaulted copy
+	ctor.
+	* symtab.h (struct symbol): Add defaulted copy assignment
+	operator.
+
+2021-06-07  Pedro Alves  <pedro@palves.net>
+
+	* completer.c (RL_QF_SINGLE_QUOTE, RL_QF_DOUBLE_QUOTE)
+	(RL_QF_BACKSLASH, RL_QF_OTHER_QUOTE): Delete.
+	(gdb_rl_find_completion_word): Remove write-only 'found_quote'
+	local.
+
+2021-06-07  Pedro Alves  <pedro@palves.net>
+
+	* nat/amd64-linux-siginfo.c (union nat_sigval): Rename to ...
+	(nat_sigval_t): ... this and remove typedef of same name.
+	(struct nat_siginfo): Rename to ...
+	(nat_siginfo_t): ... this and remove typedef of same name.
+	(struct compat_sigval): Rename to ...
+	(compat_sigval_t): ... this and remove typedef of same name.
+	(struct compat_siginfo): Rename to ...
+	(compat_siginfo_t): ... this and remove typedef of same name.
+	(struct compat_x32_siginfo): Rename to ...
+	(compat_x32_siginfo_t): ... this and remove typedef of same name.
+	(amd64_linux_siginfo_fixup_common): Adjust.
+
+2021-06-07  Pedro Alves  <pedro@palves.net>
+
+	* nat/amd64-linux-siginfo.c (compat_x32_siginfo_t): Move
+	__attribute__ __aligned__ from the typedef to the struct.
+
+2021-06-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/27847
+	* amd64-tdep.c (amd64_has_unaligned_fields): Move call to
+	type_align, and spot case where the alignment is unknown.
+
+2021-06-07  Carl Love  <cel@us.ibm.com>
+
+	* ppc-tdep.h (ppc_insn_prefix_dform): Declare.
+	* ppc64-tdep.c(insn_md, insn_x, insn_xo): New macros.
+	(ppc64_plt_pcrel_entry_point, ppc64_pcrel_linkage1_target,
+	ppc64_pcrel_linkage2_target): New functions.
+	(ppc64_standard_linkage9, ppc64_standard_linkage10,
+	ppc64_standard_linkage11, ppc64_standard_linkage12): New ppc
+	instruction patterns.
+	(ppc64_standard_linkage9, ppc64_standard_linkage10,
+	ppc64_standard_linkage11, ppc64_standard_linkage12): New variables
+	in define MAX expression.
+	(ppc64_skip_trampoline_code_1): Handle ppc64_standard_linkage9,
+	ppc64_standard_linkage10, ppc64_standard_linkage11,
+	ppc64_standard_linkage12.
+	* (ppc_insn_prefix_dform): New function.
+
+2021-06-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/27899
+	* sparc-nat.c (sparc_fetch_inferior_registers): Set
+	inferior_ptid instead of using switch_to_thread.
+	(sparc_store_inferior_registers): Likewise.
+
+2021-06-05  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* compile/compile.c (scoped_ignore_sigpipe): New helper class.
+	(compile_to_object): Ignore SIGPIPE before calling the plugin.
+
+2021-06-05  Tom Tromey  <tom@tromey.com>
+
+	* data-directory/Makefile.in (Makefile): Use correct directory
+	name.
+
+2021-06-05  Tom Tromey  <tom@tromey.com>
+
+	* data-directory/Makefile.in (Makefile): Rewrite.
+
+2021-06-05  Tom Tromey  <tromey@adacore.com>
+
+	* configure: Rebuild.
+	* configure.ac: Add ACX_NONCANONICAL_TARGET.
+
+2021-06-05  Shahab Vahedi  <shahab@synopsys.com>
+
+	* NEWS: Document 'set disassembler-options' support for the ARC
+	target.
+	* arc-tdep.c (arc_gdbarch_init): Set
+	'gdbarch_valid_disassembler_options'.
+
+2021-06-04  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.h (dwarf2_fetch_die_type_sect_off): Add 'var_name'
+	parameter.
+	* dwarf2/loc.c (dwarf2_evaluate_property) <case
+	PROP_VARIABLE_NAME>: New case.
+	(compute_var_value): New function.
+	(sect_variable_value): Use compute_var_value.
+	* dwarf2/read.c (attr_to_dynamic_prop): Handle DW_TAG_variable.
+	(var_decl_name): New function.
+	(dwarf2_fetch_die_type_sect_off): Add 'var_name' parameter.
+	* gdbtypes.h (enum dynamic_prop_kind) <PROP_VARIABLE_NAME>: New
+	constant.
+	(union dynamic_prop_data) <variable_name>: New member.
+	(struct dynamic_prop) <variable_name, set_variable_name>: New
+	methods.
+
+2021-06-04  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote.c (remote_target)
+	<select_thread_for_ambiguous_stop_reply>: Add additional debug
+	output.
+
+2021-06-04  Hannes Domani  <ssbssa@yahoo.de>
+
+	* python/py-tui.c (class tui_py_window): Add click function.
+	(tui_py_window::click): Likewise.
+
+2021-06-04  Hannes Domani  <ssbssa@yahoo.de>
+
+	* ser-mingw.c (console_select_thread): Handle MOUSE_EVENT.
+	* tui/tui-data.h (struct tui_win_info): Add click function.
+	* tui/tui-io.c (tui_prep_terminal): Enable mouse events.
+	(tui_deprep_terminal): Disable mouse events.
+	(tui_dispatch_ctrl_char): Handle KEY_MOUSE.
+	* tui/tui.c (tui_disable): Disable mouse events.
+
+2021-06-03  Magne Hov  <mhov@undo.io>
+
+	PR python/27841
+	* eval.c (expression::evaluate): Check inferior_ptid.
+
+2021-06-03  Pedro Alves  <pedro@palves.net>
+
+	* MAINTAINERS (The Official FSF-appointed GDB Maintainers): Remove
+	affiliation.
+	(Global Maintainers): Update my address.
+	(Write After Approval): Remove stale entry.
+
+2021-06-03  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-tdep.c (FBSD_SI_USER, FBSD_SI_QUEUE, FBSD_SI_TIMER)
+	(FBSD_SI_ASYNCIO, FBSD_SI_MESGQ, FBSD_SI_KERNEL, FBSD_SI_LWP)
+	(FBSD_ILL_ILLOPC, FBSD_ILL_ILLOPN, FBSD_ILL_ILLADR)
+	(FBSD_ILL_ILLTRP, FBSD_ILL_PRVOPC, FBSD_ILL_PRVREG)
+	(FBSD_ILL_COPROC, FBSD_ILL_BADSTK, FBSD_BUS_ADRALN)
+	(FBSD_BUS_ADRERR, FBSD_BUS_OBJERR, FBSD_BUS_OOMERR)
+	(FBSD_SEGV_MAPERR, FBSD_SEGV_ACCERR, FBSD_SEGV_PKUERR)
+	(FBSD_FPE_INTOVF, FBSD_FPE_INTDIV, FBSD_FPE_FLTDIV)
+	(FBSD_FPE_FLTOVF, FBSD_FPE_FLTUND, FBSD_FPE_FLTRES)
+	(FBSD_FPE_FLTINV, FBSD_FPE_FLTSUB, FBSD_TRAP_BRKPT)
+	(FBSD_TRAP_TRACE, FBSD_TRAP_DTRACE, FBSD_TRAP_CAP)
+	(FBSD_CLD_EXITED, FBSD_CLD_KILLED, FBSD_CLD_DUMPED)
+	(FBSD_CLD_TRAPPED, FBSD_CLD_STOPPED, FBSD_CLD_CONTINUED)
+	(FBSD_POLL_IN, FBSD_POLL_OUT, FBSD_POLL_MSG, FBSD_POLL_ERR)
+	(FBSD_POLL_PRI, FBSD_POLL_HUP, fbsd_signal_cause)
+	(fbsd_report_signal_info): New.
+	(fbsd_init_abi): Use fbsd_report_signal_info as gdbarch
+	report_signal_info method.
+
+2021-06-03  Magne Hov  <mhov@undo.io>
+
+	* MAINTAINERS (Write After Approval): Add Magne Hov.
+
+2021-06-03  Hannes Domani  <ssbssa@yahoo.de>
+
+	* python/py-symbol.c (gdbpy_initialize_symbols): Restore
+	gdb.SYMBOL_LABEL_DOMAIN constant.
+
+2021-06-01  John Baldwin  <jhb@FreeBSD.org>
+
+	* infrun.c (handle_inferior_event): Only call
+	gdbarch_displaced_step_restore_all_in_ptid if
+	gdbarch_supports_displaced_stepping is true.
+
+2021-06-01  Tom Tromey  <tromey@adacore.com>
+
+	* Makefile.in (all-data-directory): Remove.
+	(data-directory/Makefile): Remove.
+
+2021-06-01  Tom Tromey  <tromey@adacore.com>
+
+	* configure: Rebuild.
+	* configure.ac: Use AS_HELP_STRING for enable-shared.  Fix typo.
+
+2021-06-01  Tom Tromey  <tromey@adacore.com>
+
+	* silent-rules.mk (ECHO_CC): New variable.
+
+2021-06-01  Tom Tromey  <tromey@adacore.com>
+
+	* Makefile.in (SUBDIRS): Add testsuite.
+	(all): Don't exclude testsuite.
+
+2021-06-01  Tom Tromey  <tromey@adacore.com>
+
+	* configure.ac: Copy some code from testsuite/configure.ac.
+	(enable_libctf): Subst this, not ENABLE_LIBCTF.
+	* configure: Rebuild.
+
+2021-06-01  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/26096
+	* minsyms.c (msymbol_is_cold_clone): New function.
+	(msymbol_is_function): Use msymbol_is_cold_clone.
+
+2021-06-01  Fredrik Hederstierna  <fredrik@hederstierna.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/14383
+	* Makefile.in (ALL_TARGET_OBS): Add arm-none-tdep.o.
+	(ALLDEPFILES): Add arm-none-tdep.c
+	* arm-none-tdep.c: New file.
+	* configure.tgt (arm*-*-*): Add arm-none-tdep.o to cpu_obs.
+
+2021-06-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Richard Bunt  <richard.bunt@arm.com>
+
+	* breakpoint.c (check_longjmp_breakpoint_for_call_dummy): Add
+	check for why the backtrace stopped.
+
+2021-05-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.h (struct structured_type) <signatured_type>: New.
+	Update all callers.
+	(struct dwarf2_per_bfd) <allocate_signatured_type>: Add
+	signature parameter, update all callers.
+	* dwar2/read.c (dwarf2_per_bfd::allocate_signatured_type): Add
+	signature parameter.
+
+2021-05-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.h (signatured_type_up): New, use where possible.
+
+2021-05-31  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.h (signatured_type, dwarf2_per_cu_data): Move up.
+
+2021-05-30  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_per_bfd::allocate_signatured_type): Set
+	is_debug_types.
+	(create_signatured_type_table_from_index)
+	(create_signatured_type_table_from_debug_names, add_type_unit)
+	(read_comp_units_from_section): Update.
+
+2021-05-30  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (struct dwarf2_per_bfd) <num_psymtabs,
+	m_num_psymtabs>: Remove.
+	(resize_symtabs): Update.
+	* dwarf2/read.c (dwarf2_per_bfd::allocate_per_cu)
+	(dwarf2_per_bfd::allocate_signatured_type): Update.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Fix tab after space indentation issues throughout.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Fix some indentation mistakes throughout.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (iterate_over_bp_locations): Remove.  Update
+	users to use all_bp_locations.
+	(all_bp_locations): New.
+	* breakpoint.c (all_bp_locations): Make non-static.
+	(iterate_over_bp_locations): Remove.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (iterate_over_breakpoints): Remove.  Update
+	callers to use all_breakpoints or all_breakpoints_safe.
+	(breakpoint_range, all_breakpoints, breakpoint_safe_range,
+	all_breakpoints_safe): Move here.
+	* breakpoint.c (all_breakpoints, all_breakpoints_safe): Make
+	non-static.
+	(iterate_over_breakpoints): Remove.
+	* python/py-finishbreakpoint.c (bpfinishpy_detect_out_scope_cb):
+	Return void.
+	* python/py-breakpoint.c (build_bp_list): Add comment, reverse
+	return value logic.
+	* guile/scm-breakpoint.c (bpscm_build_bp_list): Return void.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.c (get_first_locp_gte_addr): Remove.
+	(ALL_BP_LOCATIONS_AT_ADDR): Remove.  Replace all uses with
+	all_bp_locations_at_addr.
+	(struct bp_locations_at_addr_range): New.
+	(all_bp_locations_at_addr): New.
+	(bp_locations_compare_addrs): New.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.c (ALL_BP_LOCATIONS): Remove, update users to use
+	all_bp_locations.
+	(all_bp_locations): New.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.c (bp_locations): Change to std::vector, update all
+	users.
+	(bp_locations_count): Remove.
+	(update_global_location_list): Change to work with indices
+	rather than bp_location**.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (bp_locations_range): New.
+	(struct breakpoint) <locations>: New.  Use where possible.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.h (all_tracepoints): Remove.
+	(breakpoint_iterator): Move here.
+	(struct tracepoint_filter): New.
+	(tracepoint_iterator): New.
+	(tracepoint_range): New.
+	(all_tracepoints): New.
+	* breakpoint.c (ALL_TRACEPOINTS): Remove, replace all users with
+	all_tracepoints.
+	(breakpoint_iterator): Move to header.
+	(all_tracepoints): New.
+	* tracepoint.c (start_tracing): Adjust.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.c (breakpoint_safe_range): New.
+	(all_breakpoints_safe): New.  Use instead of
+	ALL_BREAKPOINTS_SAFE where possible.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.c (ALL_BREAKPOINTS): Remove, replace all uses with
+	all_breakpoints.
+	(breakpoint_iterator): New.
+	(breakpoint_range): New.
+	(all_breakpoints): New.
+
+2021-05-27  Hannes Domani  <ssbssa@yahoo.de>
+
+	* python/py-tui.c (tui_py_window::output): Add full_window
+	argument.
+	(gdbpy_tui_write): Parse "full_window" argument.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* make-init-c: Add option to reverse function calls.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Makefile.in (INIT_FILES_FILTER_OUT): New.
+	(INIT_FILES): Use INIT_FILES_FILTER_OUT.
+	(stamp-init): Use make-init-c.
+	* bpf-tdep.c (_initialize_bpf_tdep): Remove "void".
+	* silent-rules.mk (ECHO_INIT_C): Change.
+	* make-init-c: New file.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* command.h (add_alias_cmd): Accept target as
+	cmd_list_element.  Update callers.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* command.h (add_info_alias): Accept target as
+	cmd_list_element.  Update callers.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* command.h (add_com_alias): Accept target as
+	cmd_list_element.  Update callers.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* python/py-param.c (add_setshow_generic): Use return values of
+	add_setshow functions.
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* mi/mi-main.c (_initialize_mi_main):
+	* python/py-auto-load.c (gdbpy_initialize_auto_load):
+	* remote.c (_initialize_remote):
+
+2021-05-27  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* command.h (set_show_commands): New.
+	(add_setshow_enum_cmd, add_setshow_auto_boolean_cmd,
+	add_setshow_boolean_cmd, add_setshow_filename_cmd,
+	add_setshow_string_cmd, add_setshow_string_noescape_cmd,
+	add_setshow_optional_filename_cmd, add_setshow_integer_cmd,
+	add_setshow_uinteger_cmd, add_setshow_zinteger_cmd,
+	add_setshow_zuinteger_cmd, add_setshow_zuinteger_unlimited_cmd):
+	Return set_show_commands.  Adjust callers.
+	* cli/cli-decode.c (add_setshow_cmd_full): Return
+	set_show_commands, remove result parameters, adjust callers.
+
+2021-05-27  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27919
+	* dwarf2/read.c (process_psymtab_comp_unit):
+
+2021-05-27  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/read.c (find_partial_die): Fix "Cannot not" typo in dwarf
+	error.
+
+2021-05-27  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27898
+	* dwarf2/cu.c (dwarf2_cu::dwarf2_cu): Add load_all_dies init.
+	* dwarf2/cu.h (dwarf2_cu): Add load_all_dies field.
+	* dwarf2/read.c (load_partial_dies, find_partial_die): Update.
+	* dwarf2/read.h (dwarf2_per_cu_data::dwarf2_per_cu_data): Remove
+	load_all_dies init.
+	(dwarf2_per_cu_data): Remove load_all_dies field.
+
+2021-05-26  Simon Marchi  <simon.marchi@efficios.com>
+
+	* regcache.c (reg_buffer::reg_buffer): Default-initialize
+	m_registers array.
+
+2021-05-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (allocate_type_unit_groups_table)
+	(handle_DW_AT_stmt_list, allocate_dwo_file_hash_table): Use
+	htab_delete_entry.
+	(free_line_header_voidp): Remove.
+	* completer.c
+	(completion_tracker::completion_hash_entry::deleter): Remove.
+	(completion_tracker::discard_completions): Use htab_delete_entry.
+	* utils.h (htab_delete_entry): New template function.
+
+2021-05-24  Hannes Domani  <ssbssa@yahoo.de>
+
+	* python/py-tui.c (tui_py_window::refresh_window):
+	Avoid flickering.
+
+2021-05-23  Tom de Vries  <tdevries@suse.de>
+
+	PR tdep/27822
+	* target.h (struct target_ops): Mention target_thread_architecture in
+	read_description comment.
+	* x86-linux-nat.c (x86_linux_nat_target::read_description): Use
+	pid to determine if process is 64-bit or 32-bit.
+	* aarch64-linux-nat.c (aarch64_linux_nat_target::read_description):
+	Same.
+	* ppc-linux-nat.c (ppc_linux_nat_target::read_description): Same.
+        * riscv-linux-nat.c (riscv_linux_nat_target::read_description): Same.
+	* s390-linux-nat.c (s390_linux_nat_target::read_description): Same.
+	* arm-linux-nat.c (arm_linux_nat_target::read_description): Same.
+	Likewise, use pid to determine if kernel supports reading VFP
+	registers.
+
+2021-05-22  Philippe Waroquiers  <philippe.waroquiers@skynet.be>
+
+	* main.c (enum cmdarg_kind): Fix option type comments for
+	CMDARG_EARLYINIT_FILE and CMDARG_EARLYINIT_COMMAND.
+
+2021-05-21  Tom de Vries  <tdevries@suse.de>
+
+	PR testsuite/25047
+	* contrib/cc-with-tweaks.sh: Handle -l.
+
+2021-05-21  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoint/27889
+	* jit.c (jit_breakpoint_re_set_internal): Skip separate debug
+	objects.  Call get_jiter_objfile_data with the_objfile.
+
+2021-05-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linespec.c (linespec_p): Remove.  Replace all uses with
+	"linespec *".
+
+2021-05-20  Alexandra HÃ¡jkovÃ¡  <ahajkova@redhat.com>
+	    Pedro Alves  <pedro@palves.net>
+
+	* cli/cli-script.h (command_line_up): New unique_ptr typedef.
+	* cli/cli-script.c (multi_line_command_p): Use unique_ptr
+	command_line_up instead of struct command_line.
+	(build_command_line): Likewise.
+	(get_command_line): Update the cmd function call parameter.
+	(process_next_line):  Use unique_ptr command_line_up instead
+	of struct command_line.
+	(recurse_read_control_structure): Change the the type of
+	next to command_line_up.
+	(read_command_lines_1): Change type of `next' to be
+	command_line_up and update all references of `next'
+	accordingly.
+
+2021-05-20  Alexandra HÃ¡jkovÃ¡  <ahajkova@redhat.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2021-05-19  John Baldwin  <jhb@FreeBSD.org>
+
+	* dwarf2/read.c (tu_abbrev_offset::operator<): Mark const.
+
+2021-05-18  Alexandra HÃ¡jkovÃ¡  <ahajkova@redhat.com>
+
+	* inflow.c (new_tty): Do not leak tty.
+
+2021-05-17  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h: Update include.
+	* dwarf2/read.c: Update include.
+	* dwarf2/line-header.c: Update include.
+	* dwarf2/cu.h: Update include.
+	* dwarf2/comp-unit-head.h: Rename from comp-unit.h.
+	* dwarf2/comp-unit-head.c: Rename from comp-unit.c.
+	* Makefile.in (COMMON_SFILES): Update.
+
+2021-05-17  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (maybe_queue_comp_unit)
+	(dwarf2_per_objfile::age_comp_units): Update.
+	(dwarf2_add_dependence, dwarf2_mark_helper, dwarf2_mark): Move to
+	dwarf2_cu methods.
+	* dwarf2/cu.h (struct dwarf2_cu) <mark, clear_mark, is_marked,
+	add_dependence>: New methods.
+	<m_dependencies>: Add "m_" prefix.  Now private.
+	<m_mark>: Add "m_" prefix.
+	* dwarf2/cu.c (dwarf2_cu::dwarf2_cu): Update.
+	(dwarf2_mark_helper): New function.
+	(dwarf2_cu::mark, dwarf2_cu::add_dependence): New methods.
+
+2021-05-17  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_cu::addr_sized_int_type)
+	(dwarf2_cu::start_symtab, dwarf2_cu::addr_type)
+	(dwarf2_cu::dwarf2_cu): Move to cu.c.
+	* dwarf2/cu.c: New file.
+	* Makefile.in (COMMON_SFILES): Add dwarf2/cu.c.
+
+2021-05-17  Tom Tromey  <tom@tromey.com>
+
+	* Makefile.in (HFILES_NO_SRCDIR): Add dwarf2/cu.h.
+	* dwarf2/read.c (struct delayed_method_info, struct dwarf2_cu):
+	Move to cu.h.
+	* dwarf2/cu.h: New file.
+
+2021-05-17  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* .dir-locals.el: Set sentence-end-double-space for all modes, and
+	set brace-list-open to 0 for C and C++ modes.
+
+2021-05-17  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/loc.c (dwarf2_evaluate_loc_desc::get_frame_base): Throw
+	if frame is null.
+
+2021-05-17  Tom Tromey  <tromey@adacore.com>
+
+	* nat/linux-osdata.c (user_from_uid, time_from_time_t)
+	(group_from_gid): Subtract one from strncpy length.
+
+2021-05-17  Tom Tromey  <tromey@adacore.com>
+
+	* source.c (add_path): Check 'p' before using 'p[-1]'.
+
+2021-05-17  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.h (struct dwarf2_per_cu_data_deleter: New.
+	(dwarf2_per_cu_data_up): New typedef.
+	(struct dwarf2_per_bfd) <allocate_per_cu>: Change return type.
+	<all_comp_units>: Use dwarf2_per_cu_data_up.
+	* dwarf2/read.c (dwarf2_per_cu_data::operator()): New function.
+	(dwarf2_per_bfd::allocate_per_cu): Return dwarf2_per_cu_data_up.
+	(create_cu_from_index_list): Likewise.
+	(create_signatured_type_table_from_index)
+	(create_cus_from_debug_names_list, add_type_unit)
+	(read_comp_units_from_section): Update.
+	(dwarf2_find_containing_comp_unit): Change type of all_comp_units.
+	(run_test): Update.
+
+2021-05-17  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (tu_abbrev_offset::operator<): New method.
+	(sort_tu_by_abbrev_offset): Remove.
+	(build_type_psymtabs): Update.
+
+2021-05-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* py-project.toml: New.
+	* gdb-gdb.py.in: Re-format.
+
+2021-05-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.h (cmd_list_element) <is_command_class_help>:
+	New, use it.
+	* command.h (cmd_func_p): Remove.
+	* cli/cli-decode.c (cmd_func_p): Remove.
+
+2021-05-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.h (cmd_list_element) <is_alias>: New, use it.
+
+2021-05-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.h (cmd_list_element) <cmd_pointer>: Rename
+	to...
+	<alias_target>: ... this.
+	(add_alias_cmd): Rename old to target.
+	(add_info_alias): Rename old_name to target_name.
+	(add_com_alias): Likewise.
+
+2021-05-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Rename "prefixlist" parameters to "subcommands" throughout.
+	* cli/cli-decode.h (cmd_list_element) <prefixlist>: Rename to...
+	<subcommands>: ... this.
+	* cli/cli-decode.c (lookup_cmd_for_prefixlist): Rename to...
+	(lookup_cmd_with_subcommands): ... this.
+
+2021-05-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.c (add_alias_cmd): Don't handle old == 0.
+
+2021-05-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.h (prefixname): Make const, move implementation
+	to cli/cli-decode.c.
+	* cli/cli-decode.c (cmd_list_element::prefixname): New.
+
+2021-05-16  Weimin Pan  <weimin.pan@oracle.com>
+
+	* ctfread.c (new_symbol): Set function address.
+	(read_func_kind_type): Remove incorrect type name setting.
+	Don't copy name returned from ctf_type_ame_raw throughout file.
+
+2021-05-14  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_language::val_print_struct)
+	(rust_language::print_enum): Use common_val_print, not
+	value_print_inner.
+
+2021-05-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* python/py-inferior.c (infpy_get_connection_num): New function.
+	(inferior_object_getset): Add a new element for 'connection_num'.
+	* NEWS: Mention the 'connection_num' attribute of Inferior objects.
+
+2021-05-14  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* remote.c (check_pending_events_prevent_wildcard_vcont): Change
+	argument type, update and re-wrap, header comment.
+	(remote_target::commit_resumed): Convert any_process_wildcard and
+	may_global_wildcard_vcont from int to bool.
+
+2021-05-14  Kent Cheung  <kent.cheung@arm.com>
+
+	* cp-valprint.c (cp_print_value): Replaced duplicate code.
+	* guile/scm-pretty-print.c (ppscm_print_children): Check max_depth
+	just before printing child values.
+	(gdbscm_apply_val_pretty_printer): Don't check max_depth before
+	printing string representation.
+	* python/py-prettyprint.c (print_children): Check max_depth just
+	before printing child values.
+	(gdbpy_apply_val_pretty_printer): Don't check max_depth before
+	printing string representation.
+
+2021-05-14  Mike Frysinger  <vapier@gentoo.org>
+
+	* remote-sim.c: Change gdb/callback.h & gdb/remote-sim.h includes to
+	sim/callback.h & sim/sim.h.
+
+2021-05-13  Mike Frysinger  <vapier@gentoo.org>
+
+	* lm32-tdep.c: Delete gdb/callback.h, gdb/remote-sim.h, and
+	sim-regno.h include.
+
+2021-05-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* inf-child.h (inf_child_target) <follow_exec>: New.
+	* inf-child.c (inf_child_target::follow_exec): New.
+
+2021-05-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* target.h (struct target_ops) <follow_exec>: Add ptid_t
+	parameter.
+	(target_follow_exec): Likewise.
+	* target.c (target_follow_exec): Add ptid_t parameter.
+	* infrun.c (follow_exec): Adjust call to target_follow_exec,
+	don't push target nor create thread.
+	* linux-thread-db.c (class thread_db_target) <follow_exec>: New.
+	(thread_db_target::wait): Just return on TARGET_WAITKIND_EXECD.
+	(thread_db_target::follow_exec): New.
+	* remote.c (class remote_target) <follow_exec>: Add ptid_t parameter.
+	(remote_target::follow_exec): Call
+	process_stratum_target::follow_exec.
+	* target-delegates.c: Re-generate.
+
+2021-05-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (follow_exec): Call target_follow_fork when
+	follow-exec-mode is same.
+	* target.h (target_follow_fork): Improve doc.
+
+2021-05-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.h (struct cmd_list_element) <pre_show_hook>:
+	Remove.
+	* cli/cli-setshow.c (do_show_command): Adjust.
+
+2021-05-13  Luis Machado  <luis.machado@linaro.org>
+
+	* arch/aarch64-mte-linux.c (aarch64_mte_get_tag_granules): Don't
+	include the last address in the range.
+
+2021-05-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* python/python-internal.h (gdbpy_parse_command_name): Return
+	gdb::unique_xmalloc_ptr.
+	* python/py-cmd.c (gdbpy_parse_command_name): Likewise.
+	(cmdpy_init): Adjust.
+	* python/py-param.c (parmpy_init): Adjust.
+	(add_setshow_generic): Take gdb::unique_xmalloc_ptr, release it
+	when done.
+
+2021-05-12  George Barrett  <bob@bob131.so>
+
+	* NEWS (Guile API): Note the addition of the new procedure.
+	* guile/scm-value.c (gdbscm_value_const_value): Add
+	implementation of value-const-value procedure.
+	(value_functions): Add value-const-value procedure.
+
+2021-05-12  George Barrett  <bob@bob131.so>
+
+	* NEWS (Guile API): Note the addition of new procedures.
+	* guile/scm-value.c (gdbscm_reference_value): Add helper function
+	for reference value creation.
+	(gdbscm_value_reference_value): Add implementation of
+	value-reference-value procedure.
+	(gdbscm_value_rvalue_reference_value): Add implementation of
+	value-rvalue-reference-value procedure.
+	(value_functions): Add value-reference-value procedure.  Add
+	value-rvalue-reference-value procedure.
+
+2021-05-12  George Barrett  <bob@bob131.so>
+
+	* guile/scm-type.c (type_integer_constants): Add binding for
+	TYPE_CODE_RVALUE_REF.
+	* guile/scm-value.c (gdbscm_value_referenced_value): Handle
+	dereferencing of rvalue references.
+	* NEWS (Guile API): Note improvements in rvalue reference support.
+
+2021-05-12  Markus Metzger  <markus.t.metzger@intel.com>
+
+	* btrace.c (handle_pt_insn_events): Ignore status update enable
+	events.
+
+2021-05-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* arm-tdep.c (arm_record_data_proc_misc_ld_str): Fix
+	indentation.
+
+2021-05-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-decode.h (struct cmd_list_element): Fix indentation.
+
+2021-05-10  Lancelot Six  <lsix@lancelotsix.com>
+
+	PR gdb/27614
+	* contrib/gdb-add-index.sh: Fix when called with a symlink as an
+	argument.
+
+2021-05-10  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* nat/linux-waitpid.c (status_to_str): Show signal name.
+
+2021-05-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-breakpoint.c (pybp_debug): New static global.
+	(show_pybp_debug): New function.
+	(pybp_debug_printf): Define.
+	(PYBP_SCOPED_DEBUG_ENTER_EXIT): Define.
+	(gdbpy_breakpoint_created): Add some debugging.
+	(gdbpy_breakpoint_deleted): Likewise.
+	(gdbpy_breakpoint_modified): Likewise.
+	(_initialize_py_breakpoint): New function.
+
+2021-05-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-unwind.c (pyuw_debug): Convert to bool.
+	(show_pyuw_debug): New function.
+	(pyuw_debug_printf): Define.
+	(PYUW_SCOPED_DEBUG_ENTER_EXIT): Define.
+	(pyuw_this_id): Convert to new debug print macros.
+	(pyuw_prev_register): Likewise.
+	(pyuw_sniffer): Likewise.
+	(pyuw_dealloc_cache): Likewise.
+	(_initialize_py_unwind): Update now pyuw_debug is a bool, and add
+	show function when registering.
+
+2021-05-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dummy-frame.c (fprint_dummy_frames): Convert use of
+	fprint_frame_id to use frame_id::to_string.
+	* frame.c (fprint_field): Delete.
+	(fprint_frame_id): Moved to...
+	(frame_id::to_string): ...this, rewritten to return a string.
+	(fprint_frame): Convert use of fprint_frame_id to use
+	frame_id::to_string.
+	(compute_frame_id): Likewise.
+	(frame_id_p): Likewise.
+	(frame_id_eq): Likewise.
+	(frame_id_inner): Likewise.
+	* frame.h (struct frame_id) <to_string>: New member function.
+	(fprint_frame_id): Delete declaration.
+	* guile/scm-frame.c (frscm_print_frame_smob): Convert use of
+	fprint_frame_id to use frame_id::to_string.
+	* python/py-frame.c (frame_object_to_frame_info): Likewise.
+	* python/py-unwind.c (unwind_infopy_str): Likewise.
+	(pyuw_this_id): Likewise.
+
+2021-05-08  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* nat/linux-waitpid.c (status_to_str): Return std::string.
+	* nat/linux-waitpid.h (status_to_str): Likewise.
+	* linux-nat.c (linux_nat_post_attach_wait): Adjust.
+	(linux_nat_target::attach): Adjust.
+	(linux_handle_extended_wait): Adjust.
+	(wait_lwp): Adjust.
+	(stop_wait_callback): Adjust.
+	(linux_nat_filter_event): Adjust.
+	(linux_nat_wait_1): Adjust.
+	* nat/linux-waitpid.c (status_to_str): Adjust.
+	* nat/linux-waitpid.h (status_to_str): Adjust.
+
+2021-05-08  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.h (infrun_debug_printf): Add missing space.
+
+2021-05-08  Pedro Alves  <pedro@palves.net>
+
+	* linux-nat.c (linux_nat_target::supports_disable_randomization):
+	Remove references to HAVE_PERSONALITY.
+	* nat/linux-personality.c: Remove references to HAVE_PERSONALITY.
+	(maybe_disable_address_space_randomization)
+	(~maybe_disable_address_space_randomizatio): Remove references to
+	HAVE_PERSONALITY.
+	* config.in, configure: Regenerate.
+
+2021-05-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* cli/cli-cmds.c: Add 'gdbsupport/gdb_tilde_expand.h'
+	include.
+	(source_script_with_search): Perform tilde expansion.
+
+2021-05-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target-descriptions.c (struct target_desc_info) <filename>:
+	Make std::string.
+	(copy_inferior_target_desc_info): Adjust.
+	(target_desc_info_free): Adjust.
+	(target_find_description): Adjust.
+	(set_tdesc_filename_cmd): Adjust.
+	(show_tdesc_filename_cmd): Adjust.
+	(unset_tdesc_filename_cmd): Adjust.
+	(maint_print_c_tdesc_cmd): Adjust.
+
+2021-05-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target-descriptions.c (struct target_desc_info): Initialize
+	fields.
+	(get_tdesc_info): Use new.
+	(target_desc_info_free): Use delete.
+
+2021-05-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target-descriptions.c (struct target_desc_info) <fetched>:
+	bool.
+	(target_find_description): Adjust.
+	(target_clear_description): Adjust.
+
+2021-05-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target-descriptions.c (struct target_desc_info) <tdesc>:
+	Adjust doc.
+	(target_desc_fetched): Remove.
+	(current_target_desc): Remove.
+	(target_description_filename): Remove.
+	(target_find_description): Adjust.
+	(target_clear_description): Adjust.
+	(target_current_description): Adjust.
+	(set_tdesc_filename_cmd): Adjust.
+	(show_tdesc_filename_cmd): Adjust.
+	(unset_tdesc_filename_cmd): Adjust.
+	(maint_print_c_tdesc_cmd): Adjust.
+	(maint_print_xml_tdesc_cmd): Adjust.
+
+2021-05-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* infcmd.c (notice_new_inferior): Change parameter type.
+	* inferior.h (notice_new_inferior): Change parameter type.
+	* remote.c (remote_notice_new_inferior): Change parameter type to
+	bool.  Also update type of local variable to bool.
+	(remote_target::update_thread_list): Change type of local variable
+	to bool.
+	(remote_target::process_stop_reply): Pass bool instead of int to
+	remote_notice_new_inferior.
+
+2021-05-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* target.c (target_stack::unpush): Call target_ops::find_beneath
+	to get the target beneath `t`.
+
+2021-05-07  Simon Marchi  <simon.marchi@efficios.com>
+
+	* target.c (target_close): Check in all inferiors that the
+	target is not pushed.
+
+2021-05-07  Aaron Merey  <amerey@redhat.com>
+
+	* debuginfod-support.c (debuginfod_init): Remove.
+	(get_debuginfod_client): New function.
+
+2021-05-07  Tom Tromey  <tom@tromey.com>
+
+	* breakpoint.c (ambiguous_names_p): Use htab_eq_string.
+	* utils.c (streq_hash): Remove.
+	* utils.h (streq_hash): Don't declare.
+	* completer.c (completion_tracker::discard_completions): Update
+	comment.
+	* ada-lang.c (_initialize_ada_language): Use htab_eq_string.
+
+2021-05-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* Re-format all Python files using black.
+
+2021-05-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* guile/guile-internal.h (gdbscm_safe_source_script): Change
+	function return type.
+	* guile/guile.c (gdbscm_source_script): Update to handle change in
+	gdbscm_safe_source_script.
+	* guile/scm-objfile.c (gdbscm_source_objfile_script): Likewise.
+	* guile/scm-safe-call.c (gdbscm_safe_source_script): Change return
+	type.
+
+2021-05-06  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* inferior.h (class inferior) <args>: Change type to
+	unique_xmalloc_ptr.
+	* inferior.c (inferior::~inferior): Don't free args.
+	* infcmd.c (get_inferior_args): Adjust.
+	(set_inferior_args): Adjust.
+
+2021-05-06  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* guile/scm-breakpoint.c (bpscm_print_breakpoint_smob): Only print
+	breakpoint locations when the breakpoint actually has a location.
+
+2021-05-06  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* mi/mi-cmd-break.c (mi_cmd_break_condition): New function.
+	* mi/mi-cmds.c: Change the binding of "-break-condition" to
+	mi_cmd_break_condition.
+	* mi/mi-cmds.h (mi_cmd_break_condition): Declare.
+	* breakpoint.h (set_breakpoint_condition): Declare a new
+	overload.
+	* breakpoint.c (set_breakpoint_condition): New overloaded function
+	extracted out from ...
+	(condition_command): ... this.
+	* NEWS: Mention the change.
+
+2021-05-06  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Recognize the
+	'--force-condition' flag to force the condition in the
+	'-break-insert' and '-dprintf-insert' commands.
+	* NEWS: Mention the change.
+
+2021-05-04  Tom de Vries  <tdevries@suse.de>
+
+	PR guile/27806
+	* guile/guile.c	(gdbscm_initialize): Don't let guile change libgmp
+	memory functions.
+
+2021-04-30  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_initialize_objfile): Update.
+	(add_signatured_type_cu_to_table): Remove.
+	(create_debug_type_hash_table): Assume dwo_file is non-null.
+	(create_debug_types_hash_table): Update comment.
+	(create_all_type_units): Remove.
+	(sort_tu_by_abbrev_offset): Update comment.
+	(build_type_psymtabs): Rename from build_type_psymtabs_1.
+	(build_type_psymtabs): Remove.
+	(process_skeletonless_type_unit, dwarf2_build_psymtabs_hard):
+	Update.
+	(read_comp_units_from_section): Add types_htab, section_kind
+	parameters.
+	(create_all_comp_units): Read type units.
+
+2021-04-30  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (struct tu_stats) <nr_tus>: New member.
+	(struct dwarf2_per_bfd) <get_cutu, get_tu>: Remove
+	<get_cu>: Now inline.
+	<all_type_units>: Remove.
+	* dwarf2/read.c (dwarf2_per_bfd::~dwarf2_per_bfd): Update.
+	(dwarf2_per_bfd::get_cutu, dwarf2_per_bfd::get_cu)
+	(dwarf2_per_bfd::get_tu): Remove.
+	(dwarf2_per_bfd::allocate_signatured_type): Update nr_tus.
+	(create_signatured_type_table_from_index)
+	(create_signatured_type_table_from_debug_names)
+	(dw2_symtab_iter_next, dwarf2_base_index_functions::print_stats)
+	(dwarf2_base_index_functions::expand_all_symtabs)
+	(dw2_expand_marked_cus, dw_expand_symtabs_matching_file_matcher)
+	(dwarf2_base_index_functions::map_symbol_filenames)
+	(dw2_debug_names_iterator::next, dwarf2_initialize_objfile)
+	(add_signatured_type_cu_to_table, create_all_type_units)
+	(add_type_unit, build_type_psymtabs_1, print_tu_stats)
+	(create_all_comp_units): Update.
+	* dwarf2/index-write.c (check_dwarf64_offsets, write_gdbindex)
+	(write_debug_names): Update.
+
+2021-04-30  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (struct dwarf2_per_bfd) <allocate_per_cu,
+	allocate_signatured_type>: Change return type.
+	<all_comp_units, all_type_units>: Hold unique pointers.
+	(struct dwarf2_per_cu_data): Add constructor and initializers.
+	(struct signatured_type): Derive from dwarf2_per_cu_data.
+	* dwarf2/read.c (type_unit_group): Derive from
+	dwarf2_per_cu_data.
+	(dwarf2_per_bfd::get_cutu, dwarf2_per_bfd::get_cu)
+	(dwarf2_per_bfd::get_tu)
+	(dwarf2_per_bfd::allocate_signatured_type)
+	(dwarf2_per_bfd::allocate_signatured_type)
+	(create_cu_from_index_list, create_cus_from_index_list)
+	(create_signatured_type_table_from_index)
+	(create_signatured_type_table_from_debug_names)
+	(create_addrmap_from_aranges)
+	(dwarf2_base_index_functions::find_last_source_symtab)
+	(dw_expand_symtabs_matching_file_matcher)
+	(dwarf2_gdb_index::expand_symtabs_matching)
+	(dwarf2_base_index_functions::map_symbol_filenames)
+	(create_cus_from_debug_names_list)
+	(dw2_debug_names_iterator::next)
+	(dwarf2_debug_names_index::expand_symtabs_matching)
+	(create_debug_type_hash_table, add_type_unit)
+	(fill_in_sig_entry_from_dwo_entry, lookup_dwo_signatured_type):
+	Update.
+	(allocate_type_unit_groups_table): Use delete.
+	(create_type_unit_group): Change return type.  Use new.
+	(get_type_unit_group, build_type_psymtabs_1)
+	(build_type_psymtab_dependencies)
+	(process_skeletonless_type_unit, set_partial_user)
+	(dwarf2_build_psymtabs_hard, read_comp_units_from_section)
+	(create_cus_hash_table, queue_and_load_dwo_tu, follow_die_sig_1)
+	(read_signatured_type): Update.
+	(dwarf2_find_containing_comp_unit): Change type of
+	'all_comp_units'.
+	(run_test): Update.
+	(dwarf2_per_bfd::allocate_per_cu)
+	(dwarf2_per_bfd::allocate_signatured_type): Change return type.
+	Use new.
+	(add_signatured_type_cu_to_table): Update.
+	* dwarf2/index-write.c (write_one_signatured_type)
+	(check_dwarf64_offsets, psyms_seen_size, write_gdbindex)
+	(write_debug_names): Update.
+
+2021-04-30  Tom Tromey  <tromey@adacore.com>
+
+	* nat/windows-nat.h (get_image_name): Don't declare.
+	* nat/windows-nat.c (get_image_name): Now static.
+
+2021-04-30  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_nat::handle_load_dll): Update.
+	(windows_nat_target::get_windows_debug_event): Call
+	dll_loaded_event.
+	(windows_add_all_dlls, windows_add_dll): Move to
+	nat/windows-nat.c.
+	* nat/windows-nat.h (handle_load_dll): Change parameters.
+	(dll_loaded_event, windows_add_all_dlls): Declare.
+	* nat/windows-nat.c (windows_add_dll, windows_add_all_dlls): Move
+	from windows-nat.c.
+	(dll_loaded_event): New function.
+
+2021-04-30  Tom Tromey  <tromey@adacore.com>
+
+	* nat/windows-nat.h (GenerateConsoleCtrlEvent): New define.
+	(GenerateConsoleCtrlEvent_ftype, GenerateConsoleCtrlEvent):
+	Declare.
+	* nat/windows-nat.c (GenerateConsoleCtrlEvent): Define.
+	(initialize_loadable): Initialize GenerateConsoleCtrlEvent.
+
+2021-04-30  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c: Move code to nat/windows-nat.[ch].
+	(_initialize_windows_nat): Call initialize_loadable.
+	* nat/windows-nat.h (AdjustTokenPrivileges)
+	(DebugActiveProcessStop, DebugBreakProcess)
+	(DebugSetProcessKillOnExit, EnumProcessModules)
+	(EnumProcessModulesEx, GetModuleInformation)
+	(GetModuleFileNameExA, GetModuleFileNameExW)
+	(LookupPrivilegeValueA, OpenProcessToken, GetConsoleFontSize)
+	(GetCurrentConsoleFont, Wow64SuspendThread)
+	(Wow64GetThreadContext, Wow64SetThreadContext)
+	(Wow64GetThreadSelectorEntry): Move from windows-nat.c.
+	(AdjustTokenPrivileges_ftype)
+	(DebugActiveProcessStop_ftype, DebugBreakProcess_ftype)
+	(DebugSetProcessKillOnExit_ftype, EnumProcessModules_ftype)
+	(EnumProcessModulesEx_ftype, GetModuleInformation_ftype)
+	(GetModuleFileNameExA_ftype, GetModuleFileNameExW_ftype)
+	(LookupPrivilegeValueA_ftype, OpenProcessToken_ftype)
+	(GetConsoleFontSize_ftype)
+	(GetCurrentConsoleFont_ftype, Wow64SuspendThread_ftype)
+	(Wow64GetThreadContext_ftype, Wow64SetThreadContext_ftype)
+	(Wow64GetThreadSelectorEntry_ftype): Likewise.
+	(initialize_loadable): Declare.
+	* nat/windows-nat.c (AdjustTokenPrivileges)
+	(DebugActiveProcessStop, DebugBreakProcess)
+	(DebugSetProcessKillOnExit, EnumProcessModules)
+	(EnumProcessModulesEx, GetModuleInformation, GetModuleFileNameExA)
+	(GetModuleFileNameExW, LookupPrivilegeValueA, OpenProcessToken)
+	(GetCurrentConsoleFont, GetConsoleFontSize, Wow64SuspendThread)
+	(Wow64GetThreadContext, Wow64SetThreadContext)
+	(Wow64GetThreadSelectorEntry): Define.
+	(bad, bad_GetCurrentConsoleFont, bad_GetConsoleFontSize): Move
+	from windows-nat.c.
+	(initialize_loadable): Likewise, and rename.
+
+2021-04-30  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (bad_GetModuleFileNameEx): Remove define.
+	(bad_DebugActiveProcessStop, bad_DebugBreakProcess)
+	(bad_DebugSetProcessKillOnExit, bad_EnumProcessModules)
+	(bad_GetModuleFileNameExW, bad_GetModuleFileNameExA)
+	(bad_GetModuleInformation, bad_OpenProcessToken): Remove.
+	(bad): New template functions.
+	(_initialize_loadable): Update.
+
+2021-04-30  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_index_type): Use ada_check_typedef.
+
+2021-04-29  Simon Marchi  <simon.marchi@efficios.com>
+
+	* auto-load.h: Split namespace declaration.
+
+2021-04-29  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (save_waitstatus): Move variables to inner scope.
+
+2021-04-29  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Fix typo and stray full stop.
+
+2021-04-28  Tom Tromey  <tromey@adacore.com>
+
+	* ada-exp.y (primary): Use new type for null pointer.
+	* ada-lang.c (ada_type_match): Remove "may_deref"
+	parameter.  Handle null pointer.
+	(ada_args_match): Update.
+	* ada-valprint.c (ada_value_print_ptr, ada_value_print):
+	Handle null pointer.
+
+2021-04-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new commands.
+	* python/python.c (python_ignore_environment): New static global.
+	(show_python_ignore_environment): New function.
+	(set_python_ignore_environment): New function.
+	(python_dont_write_bytecode): New static global.
+	(show_python_dont_write_bytecode): New function.
+	(set_python_dont_write_bytecode): New function.
+	(_initialize_python): Register new commands.
+
+2021-04-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* extension-priv.h (struct extension_language_ops): Rename
+	'finish_initialization' to 'initialize'.
+	* extension.c (finish_ext_lang_initialization): Renamed to...
+	(ext_lang_initialization): ...this, update comment, and updated
+	the calls to reflect the change in struct extension_language_ops.
+	* extension.h (finish_ext_lang_initialization): Renamed to...
+	(ext_lang_initialization): ...this.
+	* guile/guile.c (gdbscm_finish_initialization): Renamed to...
+	(gdbscm_initialize): ...this, update comment at definition.
+	(guile_extension_ops): Update.
+	* main.c (captured_main_1): Update call to
+	finish_ext_lang_initialization.
+	* python/python.c (gdbpy_finish_initialization): Rename to...
+	(gdbpy_initialize): ...this, update comment at definition, and
+	update call to do_finish_initialization.
+	(python_extension_ops): Update.
+	(do_finish_initialization): Rename to...
+	(do_initialize): ...this, and update comment.
+
+2021-04-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* main.c (captured_main_1): Add a call to
+	finish_ext_lang_initialization.
+	* top.c (gdb_init): Remove call to finish_ext_lang_initialization.
+
+2021-04-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* guile/guile.c (gdbscm_set_backtrace): Add declaration.
+	(gdbscm_finish_initialization): Add code moved from
+	_initialize_guile.
+	(_initialize_guile): Move code to gdbscm_finish_initialization.
+	* guile/scm-arch.c (gdbscm_initialize_arches): Move some code into
+	_initialize_scm_arch.
+	(_initialize_scm_arch): New function.
+	* guile/scm-block.c (gdbscm_initialize_blocks): Move some code
+	into _initialize_scm_block.
+	(_initialize_scm_block): New function.
+	* guile/scm-frame.c (gdbscm_initialize_frames): Move some code
+	into _initialize_scm_frame.
+	(_initialize_scm_frame): New function.
+	* guile/scm-objfile.c (gdbscm_initialize_objfiles): Move some code
+	into _initialize_scm_objfile.
+	(_initialize_scm_objfile): New function.
+	* guile/scm-progspace.c (gdbscm_initialize_pspaces): Move some
+	code into _initialize_scm_progspace.
+	(_initialize_scm_progspace): New function.
+	* guile/scm-symbol.c (gdbscm_initialize_symbols): Move some code
+	into _initialize_scm_symbol.
+	(_initialize_scm_symbol): New function.
+	* guile/scm-symtab.c (gdbscm_initialize_symtabs): Move some code
+	into _initialize_scm_symtab.
+	(_initialize_scm_symtab): New function.
+	* guile/scm-type.c (gdbscm_initialize_types): Move some code into
+	_initialize_scm_type.
+	(_initialize_scm_type): New function.
+
+2021-04-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-arch.c (_initialize_py_arch): New function.
+	(gdbpy_initialize_arch): Move code to _initialize_py_arch.
+	* python/py-block.c (_initialize_py_block): New function.
+	(gdbpy_initialize_blocks): Move code to _initialize_py_block.
+	* python/py-inferior.c (_initialize_py_inferior): New function.
+	(gdbpy_initialize_inferior): Move code to _initialize_py_inferior.
+	* python/py-objfile.c (_initialize_py_objfile): New function.
+	(gdbpy_initialize_objfile): Move code to _initialize_py_objfile.
+	* python/py-progspace.c (_initialize_py_progspace): New function.
+	(gdbpy_initialize_pspace): Move code to _initialize_py_progspace.
+	* python/py-registers.c (_initialize_py_registers): New function.
+	(gdbpy_initialize_registers): Move code to
+	_initialize_py_registers.
+	* python/py-symbol.c (_initialize_py_symbol): New function.
+	(gdbpy_initialize_symbols): Move code to _initialize_py_symbol.
+	* python/py-symtab.c (_initialize_py_symtab): New function.
+	(gdbpy_initialize_symtabs): Move code to _initialize_py_symtab.
+	* python/py-type.c (_initialize_py_type): New function.
+	(gdbpy_initialize_types): Move code to _initialize_py_type.
+	* python/py-unwind.c (_initialize_py_unwind): New function.
+	(gdbpy_initialize_unwind): Move code to _initialize_py_unwind.
+	* python/python.c (_initialize_python): Move call to
+	do_start_initialization to gdbpy_finish_initialization.
+	(gdbpy_finish_initialization): Add call to
+	do_start_initialization.
+
+2021-04-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* extension.c (struct scoped_default_signal): New struct.
+	(scoped_default_sigint): New typedef.
+	(finish_ext_lang_initialization): Make use of
+	scoped_default_sigint.
+
+2021-04-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* main.c (captured_main_1): Don't pass argument to gdb_init.
+	* top.c (gdb_init): Remove unused argument, and add header
+	comment.
+	* top.h (gdb_init): Remove argument.
+
+2021-04-27  Luis Machado  <luis.machado@linaro.org>
+
+	* psymtab.c (psymbol_functions::dump): Output newline.
+	Remove wrap.
+	* symmisc.c (dump_objfile): Likewise.
+
+2021-04-27  Michael Weghorn  <m.weghorn@posteo.de>
+	    Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdb/auto-load.c (_initialize_auto_load): 'Specify token
+	when attaching the 'auto_load_new_objfile' observer, so
+	other observers can specify it as a dependency.
+	* gdb/auto-load.h (struct token): Declare
+	'auto_load_new_objfile_observer_token' as token to be used
+	for the 'auto_load_new_objfile' observer.
+	* gdb/python/py-inferior.c (gdbpy_initialize_inferior): Make
+	'python_new_objfile' observer depend on 'auto_load_new_objfile'
+	observer, so it gets notified after the latter.
+
+2021-04-27  Michael Weghorn  <m.weghorn@posteo.de>
+	    Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* unittests/observable-selftests.c (dependency_test_counters):
+	New.
+	(observer_token0, observer_token1, observer_token2,
+	observer_token3, observer_token4, observer_token5): New.
+	(struct dependency_observer_data): New struct.
+	(observer_dependency_test_callback): New function.
+	(test_observers): New.
+	(run_dependency_test): New function.
+	(test_dependency): New.
+	(_initialize_observer_selftest): Register dependency test.
+
+2021-04-26  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/27773
+	* cli/cli-dump.c (dump_binary_file): Check result of
+	gdb_fopen_cloexec.
+
+2021-04-25  Sergei Trofimovich  <siarheit@google.com>
+
+	* sparc-linux-nat.c (sparc_linux_nat_target): fix sparc build
+	by passing `process_stratum_target*` parameter.
+
+2021-04-25  Lancelot Six  <lsix@lancelotsix.com>
+
+	PR gdb/22640
+	* typeprint.h (struct type_print_options): Add print_in_hex
+	flag.
+	(struct print_offset_data): Add print_in_hex flag, add a
+	constructor accepting a type_print_options* argument.
+	* typeprint.c (type_print_raw_options, default_ptype_flags): Set
+	default value for print_in_hex.
+	(print_offset_data::indentation): Allow more horizontal space.
+	(print_offset_data::print_offset_data): Add ctor.
+	(print_offset_data::maybe_print_hole, print_offset_data::update):
+	Handle the print_in_hex flag.
+	(whatis_exp): Handle 'x' and 'd' flags.
+	(print_offsets_and_sizes_in_hex): Declare.
+	(set_print_offsets_and_sizes_in_hex): Create.
+	(show_print_offsets_and_sizes_in_hex): Create.
+	(_initialize_typeprint): Update help message for the ptype
+	command, register the 'set print type hex' and 'show print type
+	hex' commands.
+	* c-typeprint.c (c_print_type, c_type_print_base_struct_union)
+	(c_type_print_base): Construct the print_offset_data
+	object using the type_print_optons parameter.
+	* rust-lang.c (rust_language::print_type): Construct the
+	print_offset_data object using the type_print_optons parameter.
+	* NEWS: Mention the new flags of the ptype command.
+
+2021-04-25  Lancelot Six  <lsix@lancelotsix.com>
+
+	* typeprint.h (struct type_print_options): Move before
+	print_offset_data.
+
+2021-04-25  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 10.2 released.
+
+2021-04-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* observable.c (observer_debug): Change to bool.
+
+2021-04-23  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2/read.c: Add 'unordered_set' include.
+	(dwarf2_base_index_functions::map_symbol_filenames): Replace
+	'visited' hash table with 'qfn_cache' unordered_set.  Remove use
+	of per_Bfd->filenames_cache cache, and use function local
+	filenames_cache instead.  Reindent.
+	* dwarf2/read.h (struct dwarf2_per_bfd) <filenames_cache>: Delete.
+
+2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* breakpoint.c (iterate_over_bp_locations): Change callback to
+	function view, remove data parameter.
+	* breakpoint.h (iterate_over_bp_locations): Likewise.
+	* record-full.c (record_full_sync_record_breakpoints): Remove
+	data parameter.
+
+2021-04-22  Tom Tromey  <tom@tromey.com>
+
+	* c-typeprint.c (c_type_print_base_struct_union): Use
+	print_spaces_filtered_with_print_options.
+
+2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	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.
+
+2021-04-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* Makefile.in (COMMON_SFILES): Remove continuations.c.
+	* inferior.c (inferior::add_continuation): New method, adapted
+	from 'add_inferior_continuation'.
+	(inferior::do_all_continuations): New method, adapted from
+	'do_all_inferior_continuations'.
+	(inferior::~inferior): Clear the list of continuations directly.
+	* inferior.h (class inferior) <continuations>: Rename into...
+	<m_continuations>: ...this and make private.
+	* continuations.c: Remove.
+	* continuations.h: Remove.
+	* event-top.c: Don't include "continuations.h".
+
+	Update the users below.
+	* inf-loop.c (inferior_event_handler)
+	* infcmd.c (attach_command)
+	(notice_new_inferior): Update.
+
+2021-04-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* inferior.h (class inferior) <continuations>: Change the type
+	to be an std::list of std::function's.
+	Update the references and uses below.
+	* continuations.c (struct continuation): Delete.
+	(make_continuation): Delete.
+	(do_my_continuations_1): Delete.
+	(do_my_continuations): Delete.
+	(discard_my_continuations_1): Delete.
+	(discard_my_continuations): Delete.
+	(add_inferior_continuation): Update.
+	(do_all_inferior_continuations): Update.
+	(discard_all_inferior_continuations): Update.
+	* continuations.h (add_inferior_continuation): Update to take
+	an std::function as the parameter.
+	* infcmd.c (struct attach_command_continuation_args): Delete.
+	(attach_command_continuation): Delete.
+	(attach_command_continuation_free_args): Delete.
+	(attach_command): Update.
+	(notice_new_inferior): Update.
+
+2021-04-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* continuations.h: Update the general comment.
+	* inferior.h (class inferior) <continuations>: Update the comment.
+	* interps.c: Do not include "continuations.h".
+
+2021-04-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* continuations.h (do_all_inferior_continuations): Remove the 'err'
+	parameter.  Update the references below.
+	* continuations.c (do_my_continuations_1)
+	(do_my_continuations)
+	(do_all_inferior_continuations): Update.
+	* inf-loop.c (inferior_event_handler): Update.
+	* infcmd.c (attach_command_continuation): Update.
+
+2021-04-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infcmd.c (attach_post_wait): Update the function comment.
+
+2021-04-22  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* infcmd.c (attach_post_wait): Remove the unused parameter 'args'.
+	Update the references below.
+	(struct attach_command_continuation_args)
+	(attach_command_continuation)
+	(attach_command_continuation_free_args)
+	(attach_command)
+	(notice_new_inferior): Update to remove the reference to 'args'.
+
+2021-04-22  Simon Marchi  <simon.marchi@polymtl.ca>
+	    Tom de Vries  <tdevries@suse.de>
+
+	PR remote/27710
+	* remote.c (remote_target_is_non_stop_p): New function.
+	* remote.h (remote_target_is_non_stop_p): Declare.
+	* remote-notif.c (remote_async_get_pending_events_handler): Fix assert
+	to check non-stopness using notif_state->remote rather current target.
+
+2021-04-22  Tom Tromey  <tom@tromey.com>
+
+	* rust-parse.c (rust_parser::parse_sizeof): Remove KW_MUT code.
+	(struct typed_val_int) <val>: Now ULONGEST.
+	(rust_parser::parse_array_type): Remove negative check.
+	(rust_lex_int_test): Change 'value' to ULONGEST.
+
+2021-04-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* arch-utils.c (default_addressable_memory_unit_size): Return a
+	value based on bfd's bits per byte.
+
+2021-04-21  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (struct dwarf2_per_cu_data) <dwarf_version>: Now
+	unsigned char.
+	(struct dwarf2_per_cu_data): Rearrange.
+	* dwarf2/comp-unit.h (struct comp_unit_head) <version>: Now
+	unsigned char.
+	(struct comp_unit_head): Rearrange.
+	* dwarf2/comp-unit.c (read_comp_unit_head): Update.
+
+2021-04-21  Tom de Vries  <tdevries@suse.de>
+
+	PR build/27681
+	* configure.ac: Remove --without-included-regex/--with-included-regex.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* gdb_regex.h: Assume USE_INCLUDED_REGEX is defined.
+
+2021-04-21  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.h (create_breakpoint): Add a new parameter,
+	'force_condition'.
+	* breakpoint.c (create_breakpoint): Use the 'force_condition'
+	argument when 'parse_extra' is false to check if the condition
+	is invalid at all of the breakpoint locations.
+	Update the users below.
+	(break_command_1)
+	(dprintf_command)
+	(trace_command)
+	(ftrace_command)
+	(strace_command)
+	(create_tracepoint_from_upload): Update.
+	* guile/scm-breakpoint.c (gdbscm_register_breakpoint_x): Update.
+	* mi/mi-cmd-break.c (mi_cmd_break_insert_1): Update.
+	* python/py-breakpoint.c (bppy_init): Update.
+	* python/py-finishbreakpoint.c (bpfinishpy_init): Update.
+
+2021-04-21  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* breakpoint.c (print_one_breakpoint_location): Display "N" for
+	disabled-by-condition locations on MI-like output.
+	(breakpoint_1): Do not display the disabled-by-condition footnote
+	if the output is MI-like.
+
+2021-04-21  Frederic Cambus  <fred@statdns.com>
+
+	* syscalls/update-netbsd.sh: Fix script name display in usage, and
+	update year range in generated copyright notices.
+
+2021-04-20  Felix Willgerodt  <felix.willgerodt@intel.com>
+
+	* c-exp.y (qualifier_seq_noopt): Replace qualifier_seq with
+	qualifier_seq_noopt.
+
+2021-04-20  Felix Willgerodt  <felix.willgerodt@intel.com>
+
+	* c-exp.y (single_qualifier): Handle UNKNOWN_CPP_NAME.
+
+2021-04-19  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* producer.c: Replace 'regex' include with 'gdb_regex.h'.
+	(producer_is_icc): Replace use of std::regex with gdb's
+	compiled_regex.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	PR gdb/23743:
+	* dwarf2/read.c (class offset_view): New.
+	(struct symbol_table_slot): Remove.
+	(struct mapped_index) <symbol_table, constant_pool>: Change type.
+	<symbol_name_index, symbol_vec_index>: New methods.
+	<symbol_name_slot_invalid, symbol_name_at, symbol_name_count>:
+	Rewrite.
+	(read_gdb_index_from_buffer): Update.
+	(struct dw2_symtab_iterator) <vec>: Change type.
+	(dw2_symtab_iter_init_common, dw2_symtab_iter_init)
+	(dw2_symtab_iter_next, dw2_expand_marked_cus): Update.
+	* dwarf2/index-write.c (class data_buf) <append_data>: Remove.
+	<append_array, append_offset>: New methods.
+	(write_hash_table, add_address_entry, write_gdbindex_1)
+	(write_debug_names): Update.
+	* dwarf2/index-common.h (byte_swap, MAYBE_SWAP): Remove.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/index-write.c (write_psymtabs_to_index): Check
+	partial_symtabs.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (psymbol_functions::expand_matching_symbols): Rename
+	from map_matching_symbols.  Change parameters.
+	* psympriv.h (struct psymbol_functions) <expand_matching_symbols>:
+	Rename from map_matching_symbols.  Change parameters.
+	* dwarf2/read.c (struct dwarf2_gdb_index)
+	<expand_matching_symbols>: Rename from map_matching_symbols.
+	Change parameters.
+	(struct dwarf2_debug_names_index) <expand_matching_symbols>:
+	Rename from map_matching_symbols.  Change parameters.
+	(dwarf2_gdb_index::expand_matching_symbols): Rename from
+	dw2_map_matching_symbols.  Change parameters.
+	(dwarf2_gdb_index::expand_matching_symbols): Remove old
+	implementation.
+	(dwarf2_debug_names_index::expand_matching_symbols): Rename from
+	map_matching_symbols.  Change parameters.
+	* objfiles.h (struct objfile) <expand_matching_symbols>: Rename
+	from map_matching_symbols.  Change parameters.
+	* symfile-debug.c (objfile::expand_matching_symbols): Rename from
+	map_matching_symbols.  Change parameters.
+	* ada-lang.c (map_matching_symbols): New function.
+	(add_nonlocal_symbols): Update.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* quick-symbol.h (struct quick_symbol_functions)
+	<expand_symtabs_with_fullname>: Remove.
+	* psymtab.c (psymbol_functions::expand_symtabs_with_fullname):
+	Remove.
+	* psympriv.h (struct psymbol_functions)
+	<expand_symtabs_with_fullname>: Remove.
+	* dwarf2/read.c (struct dwarf2_base_index_functions)
+	<expand_symtabs_with_fullname>: Remove.
+	(dwarf2_base_index_functions::expand_symtabs_with_fullname):
+	Remove.
+	* objfiles.h (struct objfile) <expand_symtabs_with_fullname>:
+	Update comment.
+	* symfile-debug.c (objfile::expand_symtabs_with_fullname):
+	Rewrite.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* symfile-debug.c (objfile::expand_symtabs_for_function):
+	Rewrite.
+	* quick-symbol.h (struct quick_symbol_functions)
+	<expand_symtabs_for_function>: Remove.
+	* psymtab.c (psymbol_functions::expand_symtabs_for_function):
+	Remove.
+	* psympriv.h (struct psymbol_functions)
+	<expand_symtabs_for_function>: Remove.
+	* objfiles.h (struct objfile) <expand_symtabs_for_function>:
+	Update comment.
+	* dwarf2/read.c (struct dwarf2_gdb_index)
+	<expand_symtabs_for_function>: Remove.
+	(struct dwarf2_debug_names_index) <expand_symtabs_for_function>:
+	Remove.
+	(find_slot_in_mapped_hash): Remove.
+	(dw2_symtab_iter_init_common): Merge with dw2_symtab_iter_init.
+	(dw2_symtab_iter_init): Remove one overload.
+	(dwarf2_gdb_index::expand_symtabs_for_function)
+	(dwarf2_debug_names_index::expand_symtabs_for_function): Remove.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* symfile-debug.c (objfile::map_symtabs_matching_filename):
+	Rewrite.
+	* quick-symbol.h (struct quick_symbol_functions)
+	<map_symtabs_matching_filename>: Remove.
+	* psymtab.c (partial_map_expand_apply)
+	(psymbol_functions::map_symtabs_matching_filename): Remove.
+	* psympriv.h (struct psymbol_functions)
+	<map_symtabs_matching_filename>: Remove.
+	* objfiles.h (struct objfile) <map_symtabs_matching_filename>:
+	Update comment.
+	* dwarf2/read.c (struct dwarf2_base_index_functions)
+	<map_symtabs_matching_filename>: Remove.
+	(dw2_map_expand_apply)
+	(dwarf2_base_index_functions::map_symtabs_matching_filename):
+	Remove.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* symfile-debug.c (objfile::lookup_symbol): Rewrite.
+	* quick-symbol.h (struct quick_symbol_functions) <lookup_symbol>:
+	Remove.
+	* psymtab.c (psymbol_functions::lookup_symbol): Remove.
+	* psympriv.h (struct psymbol_functions) <lookup_symbol>: Remove.
+	* objfiles.h (struct objfile) <lookup_symbol>: Add comment.
+	* dwarf2/read.c (struct dwarf2_gdb_index) <lookup_symbol>:
+	Remove.
+	(struct dwarf2_debug_names_index) <lookup_symbol>: Remove.
+	(dwarf2_gdb_index::lookup_symbol)
+	(dwarf2_debug_names_index::lookup_symbol): Remove.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (global_symbol_searcher::expand_symtabs): Update.
+	* symmisc.c (maintenance_expand_symtabs): Update.
+	* symfile.c (expand_symtabs_matching): Update.
+	* symfile-debug.c (objfile::expand_symtabs_matching): Add 'domain'
+	parameter.
+	* quick-symbol.h (struct quick_symbol_functions)
+	<expand_symtabs_matching>: Add 'domain' parameter.
+	* psymtab.c (recursively_search_psymtabs)
+	(psymbol_functions::expand_symtabs_matching): Add 'domain'
+	parameter.
+	* psympriv.h (struct psymbol_functions) <expand_symtabs_matching>:
+	Add 'domain' parameter.
+	* objfiles.h (struct objfile) <expand_symtabs_matching>: Add
+	'domain' parameter.
+	* linespec.c (iterate_over_all_matching_symtabs): Update.
+	* dwarf2/read.c (struct dwarf2_gdb_index)
+	<expand_symtabs_matching>: Add 'domain' parameter.
+	(struct dwarf2_debug_names_index) <expand_symtabs_matching>: Add
+	'domain' parameter.
+	(dw2_expand_symtabs_matching)
+	(dwarf2_gdb_index::expand_symtabs_matching)
+	(dw2_debug_names_iterator)
+	(dwarf2_debug_names_index::expand_symtabs_matching): Add 'domain'
+	parameter.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (global_symbol_searcher::expand_symtabs)
+	(default_collect_symbol_completion_matches_break_on): Update.
+	* symmisc.c (maintenance_expand_symtabs): Update.
+	* symfile.h (expand_symtabs_matching): Add search_flags
+	parameter.
+	* symfile.c (expand_symtabs_matching): Add search_flags
+	parameter.
+	* symfile-debug.c (objfile::expand_symtabs_matching): Add
+	search_flags parameter.
+	* quick-symbol.h (struct quick_symbol_functions)
+	<expand_symtabs_matching>: Add search_flags parameter.
+	* python/py-symbol.c (gdbpy_lookup_static_symbols): Update.
+	* psymtab.c (recursively_search_psymtabs)
+	(psymbol_functions::expand_symtabs_matching): Add search_flags
+	parameter.
+	* psympriv.h (struct psymbol_functions) <expand_symtabs_matching>:
+	Add search_flags parameter.
+	* objfiles.h (struct objfile) <expand_symtabs_matching>: Add
+	search_flags parameter.
+	* linespec.c (iterate_over_all_matching_symtabs): Update.
+	* dwarf2/read.c (struct dwarf2_gdb_index)
+	<expand_symtabs_matching>: Add search_flags parameter.
+	(struct dwarf2_debug_names_index) <expand_symtabs_matching>: Add
+	search_flags parameter.
+	(dw2_map_matching_symbols): Update.
+	(dw2_expand_marked_cus, dw2_expand_symtabs_matching)
+	(dwarf2_gdb_index::expand_symtabs_matching): Add search_flags
+	parameter.
+	(dw2_debug_names_iterator): Change block_index to search flags.
+	<m_block_index>: Likewise.
+	(dw2_debug_names_iterator::next)
+	(dwarf2_debug_names_index::lookup_symbol)
+	(dwarf2_debug_names_index::expand_symtabs_for_function)
+	(dwarf2_debug_names_index::map_matching_symbols)
+	(dwarf2_debug_names_index::map_matching_symbols): Update.
+	(dwarf2_debug_names_index::expand_symtabs_matching): Add
+	search_flags parameter.
+	* ada-lang.c (ada_add_global_exceptions)
+	(collect_symbol_completion_matches): Update.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (default_collect_symbol_completion_matches_break_on):
+	Update.
+	* symfile.h (expand_symtabs_matching): Return bool.
+	* symfile.c (expand_symtabs_matching): Return bool.
+	* symfile-debug.c (objfile::expand_symtabs_matching): Return
+	bool.
+	* quick-symbol.h (expand_symtabs_exp_notify_ftype): Return bool.
+	(struct quick_symbol_functions) <expand_symtabs_matching>: Return
+	bool.
+	* psymtab.c (psymbol_functions::expand_symtabs_matching): Return
+	bool.
+	* psympriv.h (struct psymbol_functions)
+	<expand_symtabs_matching>: Return bool.
+	* objfiles.h (struct objfile) <expand_symtabs_matching>: Return
+	bool.
+	* dwarf2/read.c (struct dwarf2_gdb_index)
+	<expand_symtabs_matching>: Return bool.
+	(struct dwarf2_debug_names_index) <expand_symtabs_matching>:
+	Return bool.
+	(dw2_expand_symtabs_matching_symbol): Return bool.
+	(dw2_expand_symtabs_matching_one, dw2_expand_marked_cus)
+	(dw2_expand_symtabs_matching)
+	(dwarf2_gdb_index::expand_symtabs_matching)
+	(dwarf2_debug_names_index::expand_symtabs_matching)
+	(dwarf2_debug_names_index::expand_symtabs_matching): Return bool.
+
+2021-04-17  Tom Tromey  <tom@tromey.com>
+
+	* quick-symbol.h (enum block_search_flag_values): New.
+	(block_search_flags): New enum flags type.
+
+2021-04-16  Tom Tromey  <tom@tromey.com>
+
+	* rust-parse.c: New file.
+	* rust-exp.y: Remove.
+	* Makefile.in (COMMON_SFILES): Add rust-parse.c.
+	(SFILES): Remove rust-exp.y.
+	(YYFILES, local-maintainer-clean): Remove rust-exp.c.
+
+2021-04-16  Luis Machado  <luis.machado@linaro.org>
+
+	* arch-utils.c (default_floatformat_for_type): Handle bfloat16.
+
+2021-04-15  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-nat.c (fbsd_lwp_debug_printf, fbsd_nat_debug_printf): New,
+	use throughout file.
+
+2021-04-15  Tom Tromey  <tromey@adacore.com>
+
+	* ada-valprint.c (ada_value_print_array): Handle optimized-out
+	arrays.
+
+2021-04-15  Tom Tromey  <tromey@adacore.com>
+
+	* printcmd.c (print_variable_and_value): Use
+	common_val_print_checked.
+
+2021-04-15  Tom Tromey  <tromey@adacore.com>
+
+	* rust-exp.y (rust_parser::convert_ast_to_expression): Update.
+	* parse.c (parser_state::push_symbol, parser_state::push_dollar):
+	Update.
+	* p-exp.y (variable): Update.
+	* m2-exp.y (variable): Update.
+	* go-exp.y (variable): Update.
+	* expprint.c (dump_for_expression): New overload.
+	* expop.h (check_objfile): New overload.
+	(check_constant): New overload.
+	(class var_value_operation): Use block_symbol.
+	<get_symbol>: Rewrite.
+	* eval.c (var_value_operation::evaluate)
+	(var_value_operation::evaluate_funcall)
+	(var_value_operation::evaluate_for_address)
+	(var_value_operation::evaluate_for_address)
+	(var_value_operation::evaluate_with_coercion)
+	(var_value_operation::evaluate_for_sizeof)
+	(var_value_operation::evaluate_for_cast): Update.
+	* d-exp.y (PrimaryExpression): Update.
+	* c-exp.y (variable): Update.
+	* ax-gdb.c (var_value_operation::do_generate_ax): Update.
+	* ada-lang.c (ada_var_value_operation::evaluate_for_cast)
+	(ada_var_value_operation::evaluate)
+	(ada_var_value_operation::resolve)
+	(ada_funcall_operation::resolve): Update.
+	* ada-exp.y (write_var_from_sym, write_object_renaming)
+	(write_ambiguous_var, write_var_or_type, write_name_assoc)
+	(maybe_overload): Update.
+	* ada-exp.h (class ada_var_value_operation) <get_block>: Rewrite.
+
+2021-04-15  Tom Tromey  <tom@tromey.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Add entry.
+	* main.c (captured_main_1): Call check_quiet_mode.
+	* top.c (startup_quiet): New global.
+	(check_quiet_mode): New function.
+	(show_startup_quiet): New function.
+	(init_main): Register new command.
+	* top.h (check_quiet_mode): Declare.
+
+2021-04-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR cli/25956
+	* NEWS: Mention new early init files and command line options.
+	* config.in: Regenerate.
+	* configure: Regenerate.
+	* configure.ac: Define GDBEARLYINIT.
+	* main.c (get_earlyinit_files): New function.
+	(enum cmdarg_kind): Add CMDARG_EARLYINIT_FILE and
+	CMDARG_EARLYINIT_COMMAND.
+	(captured_main_1): Add support for new command line flags, and for
+	processing startup files.
+	(print_gdb_help): Include startup files in the output.
+
+2021-04-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* main.c (relocate_gdbinit_path_maybe_in_datadir): Rename to...
+	(relocate_file_path_maybe_in_datadir): ...this.
+	(class gdb_initfile_finder): New class.
+	(get_init_files): Now uses gdb_initfile_finder.
+	(print_gdb_help): Print 'None found' when there are no init files.
+
+2021-04-14  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+	* dwarf2/read.c (inherit_abstract_dies): Keep a reference to the
+	corresponding child of the abstract DIE when iterating the
+	children of the concrete DIE.
+
+2021-04-13  Tom de Vries  <tdevries@suse.de>
+
+	* ui-style.c (read_semi_number, extended_color): Change idx parameter
+	type to regoff_t *.
+
+2021-04-13  Luis Machado  <luis.machado@linaro.org>
+
+	* rs6000-tdep.c (ppc_displaced_step_fixup): Use %s to print
+	hex values.
+
+2021-04-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
+
+	* rs6000-tdep.c:  Add support for single-stepping of
+	prefixed instructions.
+
+2021-04-12  Will Schmidt  <will_schmidt@vnet.ibm.com>
+
+	PR gdb/27525
+	* gdb/rs6000-tdep.c (ppc_displaced_step_fixup): Update to
+	handle the addpcis/lnia instruction.
+
+2021-04-05  Will Schmidt  <will_schmidt@vnet.ibm.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2021-4-12  Carl Love  <cel@us.ibm.com>
+
+	* rs6000-tdep.c (rs6000_builtin_type_vec128): Add t_float128 variable.
+	(rs6000_builtin_type_vec128): Add append_composite_type_field for
+	float128.
+
+2021-04-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* nat/windows-nat.c: Remove all code guarded by _WIN32_WCE.
+	* nat/windows-nat.h: Likewise.
+
+2021-04-10  Eli Zaretskii  <eliz@gnu.org>
+
+	* windows-nat.c (windows_nat::handle_load_dll): Call
+	windows_add_dll if get_image_name failed to glean the name of the
+	DLL by using the lpImageName pointer.
+	(windows_add_all_dlls): Now a thin wrapper around windows_add_dll.
+	(windows_add_dll): Now does what windows_add_all_dlls did before,
+	but also accepts an argument LOAD_ADDR, which, if non-NULL,
+	specifies the address where the DLL was loaded into the inferior,
+	and looks for the single DLL loaded at that address.
+
+2021-04-09  Luis Machado  <luis.machado@linaro.org>
+
+	* nat/aarch64-mte-linux-ptrace.c: Update include file order.
+
+2021-04-08  Dominique Quatravaux  <dominique.quatravaux@epfl.ch>
+
+	* darwin-nat.c (darwin_nat_target::resume): Remove status
+	variable.
+
+2021-04-08  Felix Willgerodt  <felix.willgerodt@intel.com>
+
+	* i386-tdep.c (i386_skip_prologue): Use symbol table to find the
+	prologue end for Intel compilers.
+	* amd64-tdep.c (amd64_skip_prologue): Likewise.
+	* producer.c (producer_is_icc_ge_19): New function.
+	* producer.h (producer_is_icc_ge_19): New declaration.
+
+2021-04-08  Felix Willgerodt  <felix.willgerodt@intel.com>
+
+	* producer.c: (producer_is_icc): Update for new version scheme.
+	(producer_parsing_tests): Update names and expected results.
+	* producer.h: (producer_is_icc): Update comment accordingly.
+
+2021-04-07  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (struct target_ops) <follow_fork>: Return void.
+	(target_follow_fork): Likewise.
+	* target.c (default_follow_fork): Likewise.
+	(target_follow_fork): Likewise.
+	* infrun.c (follow_fork_inferior): Adjust.
+	* fbsd-nat.h (class fbsd_nat_target) <follow_fork>: Return void.
+	* fbsd-nat.c (fbsd_nat_target:::follow_fork): Likewise.
+	* linux-nat.h (class linux_nat_target) <follow_fork>: Likewise.
+	* linux-nat.c (linux_nat_target::follow_fork): Return void.
+	* obsd-nat.h (class obsd_nat_target) <follow_fork>: Return void.
+	* obsd-nat.c (obsd_nat_target::follow_fork): Likewise.
+	* remote.c (class remote_target) <follow_fork>: Likewise.
+	(remote_target::follow_fork): Likewise.
+	* target-delegates.c: Re-generate.
+
+2021-04-07  Weimin Pan  <weimin.pan@oracle.com>
+
+	* ctfread.c (fetch_tid_type): New function, use throughout file.
+	(read_forward_type): New function.
+	(read_type_record): Call read_forward_type.
+
+2021-04-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.h (class fortran_structop_operation): New class.
+	* f-exp.y (exp): Create fortran_structop_operation instead of the
+	generic structop_operation.
+	* f-lang.c (fortran_undetermined::evaluate): Re-evaluate
+	expression as EVAL_NORMAL if the result type was dynamic so we can
+	extract the actual array bounds.
+	(fortran_structop_operation::evaluate): New function.
+
+2021-04-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* eval.c (evaluate_subexp_standard): Remove
+	EVAL_AVOID_SIDE_EFFECTS handling from STRUCTOP_STRUCT and
+	STRUCTOP_PTR.
+
+2021-04-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* valops.c (value_cast): Call value_deeply_equal before performing
+	any cast.
+
+2021-04-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbtypes.c (types_equal): Move pointer equality check earlier in
+	the function.
+
+2021-04-07  Caroline Tice  <cmtice@google.com>
+
+	* dwarf2/read.c (try_open_dwop_file): Add path for the binary to
+	the search paths used resolve relative location of .dwo file.
+
+2021-04-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2/section.c (dwarf2_section_info::get_bfd_owner): Add an
+	assert.
+	(dwarf2_section_info::get_file_name): Add an assert.
+	(dwarf2_section_info::read_string): Display a minimal, sane error
+	when the dwarf2_section_info is not associated with a bfd section.
+
+2021-04-07  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* top.c (staged_gdb_datadir): Update comment.
+	(set_gdb_datadir): Copy the value of gdb_datadir back into
+	staged_datadir.
+	(init_main): Initialise staged_gdb_datadir.
+
+2021-04-06  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoints/25884
+	* infcmd.c (prepare_one_step): Using inline frame info to narrow
+	stepping range.
+
+2021-04-06  Tom de Vries  <tdevries@suse.de>
+
+	PR tui/27680
+	* tui/tui-disasm.c (len_without_escapes): Pass ptr pointing at escape
+	to style.parse.
+
+2021-04-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* avr-tdep.c (avr_frame_unwind_cache): Use
+	trad_frame_saved_reg::is_addr.
+
+2021-04-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* objfiles.c (get_objfile_bfd_data): Remove objfile parameter,
+	adjust callers.
+
+2021-04-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* psympriv.h (struct partial_symtab) <partial_symtab>: Change
+	objfile parameter for objfile_per_bfd_storage, adjust callers.
+	(struct standard_psymtab) <standard_psymtab>: Likewise.
+	(struct legacy_psymtab) <legacy_psymtab>: Likewise.
+	* psymtab.c (partial_symtab::partial_symtab): Likewise.
+	* ctfread.c (struct ctf_psymtab): Likewise.
+	* dwarf2/read.h (struct dwarf2_psymtab): Likewise.
+	* dwarf2/read.c (struct dwarf2_include_psymtab): Likewise.
+	(dwarf2_create_include_psymtab): Likewise.
+	* objfiles.h (struct objfile_per_bfd_storage)
+	<objfile_per_bfd_storage>: Add bfd parameter, adjust callers.
+	<get_bfd>: New method.
+	<m_bfd>: New field.
+	* objfiles.c (get_objfile_bfd_data): Adjust.
+
+2021-04-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* psymtab.c (partial_symtab::partial_symtab): Change
+	last_objfile_name to be an std::string.
+	* symfile.c (allocate_symtab): Likewise.
+
+2021-04-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* objfiles.h (struct objfile_per_bfd_storage) <intern>: New
+	methods.
+	(struct objfile) <intern>: Use
+	objfile::objfile_per_bfd_storage::intern.
+
+2021-04-01  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_FLAG_ENUM): Remove, replace all uses
+	with type::is_flag_enum.
+
+2021-04-01  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <is_flag_enum,
+	set_is_flag_enum>: New methods.
+	(TYPE_FLAG_ENUM): Use type::is_flag_enum, change all
+	write call sites to use type::set_is_flag_enum.
+
+2021-04-01  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_DECLARED_CLASS): Remove, replace all uses
+	with type::is_declared_class.
+
+2021-04-01  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (struct type) <is_declared_class,
+	set_is_declared_class>: New methods.
+	(TYPE_DECLARED_CLASS): Use type::is_declared_class, change all
+	write call sites to use type::set_is_declared_class.
+
+2021-02-28  Boris Staletic  <boris.staletic@gmail.com>
+
+	* gdb/python/lib/gdb/__init__.py: Use importlib on python 3.4+
+	to avoid deprecation warnings.
+
+2021-04-01  Martin Liska  <mliska@suse.cz>
+
+	* cp-name-parser.y: Use startswith instead of strncmp.
+	* m2-exp.y: Likewise.
+	* macroexp.c (substitute_args): Likewise.
+	* mi/mi-main.c (command_notifies_uscc_observer): Likewise.
+	* rust-exp.y: Likewise.
+
+2021-03-31  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_gdb_index::map_matching_symbols): Merge
+	with dw2_map_matching_symbols.
+	(dwarf2_gdb_index::expand_symtabs_matching): Merge with
+	dw2_expand_symtabs_matching.
+
+2021-03-31  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/stringify.h: Fix typo.
+
+2021-03-30  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/27541
+	* dwarf2/read.c (dwarf2_has_info): Don't share dwarf2_per_bfd
+	with objfiles using READNOW.
+
+2021-03-29  Tom Tromey  <tromey@adacore.com>
+
+	* top.c (check_frame_language_change): Update.
+	* language.c (language_info): Remove parameter.
+	* language.h (language_info): Remove parameter.
+
+2021-03-29  Luis Machado  <luis.machado@linaro.org>
+
+	* compile/compile.c (get_args): Don't add empty argv entries.
+
+2021-03-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	gdb:
+	* procfs.c (procfs_target::attach): Define inf.
+	Use it.
+	(procfs_target::create_inferior): Likewise.
+
+2021-03-28  Tom Tromey  <tom@tromey.com>
+
+	* elfread.c (can_lazily_read_symbols): Move to dwarf2/read.c.
+	(elf_symfile_read): Simplify.
+	* dwarf2/read.c (struct lazy_dwarf_reader): Move from elfread.c.
+	(make_lazy_dwarf_reader): New function.
+	(make_dwarf_gdb_index, make_dwarf_debug_names): Now static.
+	(dwarf2_initialize_objfile): Return void.  Remove index_kind
+	parameter.  Push on 'qf' list.
+	* dwarf2/public.h (dwarf2_initialize_objfile): Change return
+	type.  Remove 'index_kind' parameter.
+	(make_dwarf_gdb_index, make_dwarf_debug_names): Don't declare.
+
+2021-03-27  Tom Tromey  <tom@tromey.com>
+
+	* elfread.c (elf_sym_fns_lazy_psyms): Don't declare.
+
+2021-03-27  Tom Tromey  <tom@tromey.com>
+
+	* elfread.c (elf_symfile_read): Don't clear 'qf'.
+
+2021-03-26  Lancelot Six  <lsix@lancelotsix.com>
+
+	* contrib/gdb-add-index.sh: Avoid variable shadowing and get
+	rid of 'local'.
+
+2021-03-26  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (struct output_source_filename_data): Add 'output'
+	method and operator().
+	(output_source_filename_data::output): Rename from
+	output_source_filename.
+	(output_partial_symbol_filename): Remove.
+	(info_sources_command): Update.
+	(struct add_partial_filename_data): Add operator().
+	(add_partial_filename_data::operator()): Rename from
+	maybe_add_partial_symtab_filename.
+	(make_source_files_completion_list): Update.
+	* symfile.c (quick_symbol_functions): Update.
+	* symfile-debug.c (objfile::map_symbol_filenames): Update.
+	* quick-symbol.h (symbol_filename_ftype): Change type of 'fun' and
+	'need_fullname'.  Remove 'data' parameter.
+	(struct quick_symbol_functions) <map_symbol_filenames>: Likewise.
+	* psymtab.c (psymbol_functions::map_symbol_filenames): Update.
+	* psympriv.h (struct psymbol_functions) <map_symbol_filenames>:
+	Change type of 'fun' and 'need_fullname'.  Remove 'data'
+	parameter.
+	* objfiles.h (struct objfile) <map_symbol_filenames>: Change type
+	of 'fun' and 'need_fullname'.  Remove 'data' parameter.
+	* mi/mi-cmd-file.c (print_partial_file_name): Remove 'ignore'
+	parameter.
+	(mi_cmd_file_list_exec_source_files): Update.
+	* dwarf2/read.c
+	(dwarf2_base_index_functions::map_symbol_filenames): Update.
+
+2021-03-26  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (struct match_data): Add operator().
+	(match_data::operator()): Rename from aux_add_nonlocal_symbols.
+	(callback): Remove 'callback'.
+
+2021-03-26  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (psymbol_functions::expand_symtabs_matching): Only
+	call make_ignore_params once.
+
+2021-03-26  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (psymbol_functions::expand_symtabs_matching): Remove
+	"user" check.
+
+2021-03-26  Simon Marchi  <simon.marchi@efficios.com>
+	    Pedro Alves  <pedro@palves.net>
+
+	* async-event.c: Include "infrun.h".
+	(async_event_handler_marked): New.
+	* async-event.h (async_event_handler_marked): Declare.
+	* infrun.c (maybe_set_commit_resumed_all_targets): Switch to
+	inferior before calling target method.  Don't commit-resumed if
+	target_has_pending_events is true.
+	* remote.c (remote_target::has_pending_events): New.
+	* target-delegates.c: Regenerate.
+	* target.c (target_has_pending_events): New.
+	* target.h (target_ops::has_pending_events): New target method.
+	(target_has_pending_events): New.
+
+2021-03-26  Simon Marchi  <simon.marchi@efficios.com>
+	    Pedro Alves  <pedro@palves.net>
+
+	* infcmd.c (run_command_1, attach_command, detach_command)
+	(interrupt_target_1): Use scoped_disable_commit_resumed.
+	* infrun.c (do_target_resume): Remove
+	target_commit_resume call.
+	(commit_resume_all_targets): Remove.
+	(maybe_set_commit_resumed_all_targets): New.
+	(maybe_call_commit_resumed_all_targets): New.
+	(enable_commit_resumed): New.
+	(scoped_disable_commit_resumed::scoped_disable_commit_resumed)
+	(scoped_disable_commit_resumed::~scoped_disable_commit_resumed)
+	(scoped_disable_commit_resumed::reset)
+	(scoped_disable_commit_resumed::reset_and_commit)
+	(scoped_enable_commit_resumed::scoped_enable_commit_resumed)
+	(scoped_enable_commit_resumed::~scoped_enable_commit_resumed):
+	New.
+	(proceed): Use scoped_disable_commit_resumed and
+	maybe_call_commit_resumed_all_targets.
+	(fetch_inferior_event): Use scoped_disable_commit_resumed.
+	* infrun.h (struct scoped_disable_commit_resumed): New.
+	(maybe_call_commit_resumed_all_process_targets): New.
+	(struct scoped_enable_commit_resumed): New.
+	* mi/mi-main.c (exec_continue): Use scoped_disable_commit_resumed.
+	* process-stratum-target.h (class process_stratum_target):
+	<commit_resumed_state>: New.
+	* record-full.c (record_full_wait_1): Change commit_resumed_state
+	around calling commit_resumed.
+	* remote.c (class remote_target) <commit_resume>: Rename to...
+	<commit_resumed>: ... this.
+	(struct stop_reply): Move up.
+	(remote_target::commit_resume): Rename to...
+	(remote_target::commit_resumed): ... this.  Check if there is any
+	thread pending vCont resume.
+	(remote_target::remote_stop_ns): Generate stop replies for resumed
+	but pending vCont threads.
+	(remote_target::wait_ns): Add gdb_assert.
+	* target-delegates.c: Regenerate.
+	* target.c (target_wait, target_resume): Assert that the current
+	process_stratum target isn't in commit-resumed state.
+	(defer_target_commit_resume): Remove.
+	(target_commit_resume): Remove.
+	(target_commit_resumed): New.
+	(make_scoped_defer_target_commit_resume): Remove.
+	(target_stop): Assert that the current process_stratum target
+	isn't in commit-resumed state.
+	* target.h (struct target_ops) <commit_resume>: Rename to ...
+	 <commit_resumed>: ... this.
+	(target_commit_resume): Remove.
+	(target_commit_resumed): New.
+	(make_scoped_defer_target_commit_resume): Remove.
+	* top.c (wait_sync_command_done): Use
+	scoped_enable_commit_resumed.
+
+2021-03-26  Pedro Alves  <pedro@palves.net>
+
+	* target.c (target_always_non_stop_p): Also check whether the
+	target can async.
+
+2021-03-26  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_read_debug_names)
+	(dwarf2_build_psymtabs_hard, create_addrmap_from_aranges)
+	(dw2_debug_names_iterator::next, create_type_unit_group):
+	Simplify.
+
+2021-03-25  Pedro Alves  <pedro@palves.net>
+
+	* gdb.server/bkpt-other-inferior.exp: Only enable remote output
+	around setting the breakpoint.
+
+2021-03-25  Pedro Alves  <pedro@palves.net>
+
+	* remote.c
+	(remote_target::check_pending_events_prevent_wildcard_vcont):
+	Check whether the event's ptid is not null_ptid before looking up
+	the corresponding inferior.
+
+2021-03-24  Changbin Du  <changbin.du@gmail.com>
+
+	* riscv-tdep.c (riscv_breakpoint_kind_from_pc): Remove call to
+	read_code.
+
+2021-03-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (current_top_target): Remove, make callers use the
+	current inferior instead.
+	* target.c (current_top_target): Remove.
+
+2021-03-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (target_shortname): Change to function declaration.
+	(target_longname): Likewise.
+	(target_attach_no_wait): Likewise.
+	(target_post_attach): Likewise.
+	(target_prepare_to_store): Likewise.
+	(target_supports_enable_disable_tracepoint): Likewise.
+	(target_supports_string_tracing): Likewise.
+	(target_supports_evaluation_of_breakpoint_conditions): Likewise.
+	(target_supports_dumpcore): Likewise.
+	(target_dumpcore): Likewise.
+	(target_can_run_breakpoint_commands): Likewise.
+	(target_files_info): Likewise.
+	(target_post_startup_inferior): Likewise.
+	(target_insert_fork_catchpoint): Likewise.
+	(target_remove_fork_catchpoint): Likewise.
+	(target_insert_vfork_catchpoint): Likewise.
+	(target_remove_vfork_catchpoint): Likewise.
+	(target_insert_exec_catchpoint): Likewise.
+	(target_remove_exec_catchpoint): Likewise.
+	(target_set_syscall_catchpoint): Likewise.
+	(target_rcmd): Likewise.
+	(target_can_lock_scheduler): Likewise.
+	(target_can_async_p): Likewise.
+	(target_is_async_p): Likewise.
+	(target_execution_direction): Likewise.
+	(target_extra_thread_info): Likewise.
+	(target_pid_to_exec_file): Likewise.
+	(target_thread_architecture): Likewise.
+	(target_find_memory_regions): Likewise.
+	(target_make_corefile_notes): Likewise.
+	(target_get_bookmark): Likewise.
+	(target_goto_bookmark): Likewise.
+	(target_stopped_by_watchpoint): Likewise.
+	(target_stopped_by_sw_breakpoint): Likewise.
+	(target_supports_stopped_by_sw_breakpoint): Likewise.
+	(target_stopped_by_hw_breakpoint): Likewise.
+	(target_supports_stopped_by_hw_breakpoint): Likewise.
+	(target_have_steppable_watchpoint): Likewise.
+	(target_can_use_hardware_watchpoint): Likewise.
+	(target_region_ok_for_hw_watchpoint): Likewise.
+	(target_can_do_single_step): Likewise.
+	(target_insert_watchpoint): Likewise.
+	(target_remove_watchpoint): Likewise.
+	(target_insert_hw_breakpoint): Likewise.
+	(target_remove_hw_breakpoint): Likewise.
+	(target_can_accel_watchpoint_condition): Likewise.
+	(target_can_execute_reverse): Likewise.
+	(target_get_ada_task_ptid): Likewise.
+	(target_filesystem_is_local): Likewise.
+	(target_trace_init): Likewise.
+	(target_download_tracepoint): Likewise.
+	(target_can_download_tracepoint): Likewise.
+	(target_download_trace_state_variable): Likewise.
+	(target_enable_tracepoint): Likewise.
+	(target_disable_tracepoint): Likewise.
+	(target_trace_start): Likewise.
+	(target_trace_set_readonly_regions): Likewise.
+	(target_get_trace_status): Likewise.
+	(target_get_tracepoint_status): Likewise.
+	(target_trace_stop): Likewise.
+	(target_trace_find): Likewise.
+	(target_get_trace_state_variable_value): Likewise.
+	(target_save_trace_data): Likewise.
+	(target_upload_tracepoints): Likewise.
+	(target_upload_trace_state_variables): Likewise.
+	(target_get_raw_trace_data): Likewise.
+	(target_get_min_fast_tracepoint_insn_len): Likewise.
+	(target_set_disconnected_tracing): Likewise.
+	(target_set_circular_trace_buffer): Likewise.
+	(target_set_trace_buffer_size): Likewise.
+	(target_set_trace_notes): Likewise.
+	(target_get_tib_address): Likewise.
+	(target_set_permissions): Likewise.
+	(target_static_tracepoint_marker_at): Likewise.
+	(target_static_tracepoint_markers_by_strid): Likewise.
+	(target_traceframe_info): Likewise.
+	(target_use_agent): Likewise.
+	(target_can_use_agent): Likewise.
+	(target_augmented_libraries_svr4_read): Likewise.
+	(target_log_command): Likewise.
+	* target.c (target_shortname): New.
+	(target_longname): New.
+	(target_attach_no_wait): New.
+	(target_post_attach): New.
+	(target_prepare_to_store): New.
+	(target_supports_enable_disable_tracepoint): New.
+	(target_supports_string_tracing): New.
+	(target_supports_evaluation_of_breakpoint_conditions): New.
+	(target_supports_dumpcore): New.
+	(target_dumpcore): New.
+	(target_can_run_breakpoint_commands): New.
+	(target_files_info): New.
+	(target_post_startup_inferior): New.
+	(target_insert_fork_catchpoint): New.
+	(target_remove_fork_catchpoint): New.
+	(target_insert_vfork_catchpoint): New.
+	(target_remove_vfork_catchpoint): New.
+	(target_insert_exec_catchpoint): New.
+	(target_remove_exec_catchpoint): New.
+	(target_set_syscall_catchpoint): New.
+	(target_rcmd): New.
+	(target_can_lock_scheduler): New.
+	(target_can_async_p): New.
+	(target_is_async_p): New.
+	(target_execution_direction): New.
+	(target_extra_thread_info): New.
+	(target_pid_to_exec_file): New.
+	(target_thread_architecture): New.
+	(target_find_memory_regions): New.
+	(target_make_corefile_notes): New.
+	(target_get_bookmark): New.
+	(target_goto_bookmark): New.
+	(target_stopped_by_watchpoint): New.
+	(target_stopped_by_sw_breakpoint): New.
+	(target_supports_stopped_by_sw_breakpoint): New.
+	(target_stopped_by_hw_breakpoint): New.
+	(target_supports_stopped_by_hw_breakpoint): New.
+	(target_have_steppable_watchpoint): New.
+	(target_can_use_hardware_watchpoint): New.
+	(target_region_ok_for_hw_watchpoint): New.
+	(target_can_do_single_step): New.
+	(target_insert_watchpoint): New.
+	(target_remove_watchpoint): New.
+	(target_insert_hw_breakpoint): New.
+	(target_remove_hw_breakpoint): New.
+	(target_can_accel_watchpoint_condition): New.
+	(target_can_execute_reverse): New.
+	(target_get_ada_task_ptid): New.
+	(target_filesystem_is_local): New.
+	(target_trace_init): New.
+	(target_download_tracepoint): New.
+	(target_can_download_tracepoint): New.
+	(target_download_trace_state_variable): New.
+	(target_enable_tracepoint): New.
+	(target_disable_tracepoint): New.
+	(target_trace_start): New.
+	(target_trace_set_readonly_regions): New.
+	(target_get_trace_status): New.
+	(target_get_tracepoint_status): New.
+	(target_trace_stop): New.
+	(target_trace_find): New.
+	(target_get_trace_state_variable_value): New.
+	(target_save_trace_data): New.
+	(target_upload_tracepoints): New.
+	(target_upload_trace_state_variables): New.
+	(target_get_raw_trace_data): New.
+	(target_get_min_fast_tracepoint_insn_len): New.
+	(target_set_disconnected_tracing): New.
+	(target_set_circular_trace_buffer): New.
+	(target_set_trace_buffer_size): New.
+	(target_set_trace_notes): New.
+	(target_get_tib_address): New.
+	(target_set_permissions): New.
+	(target_static_tracepoint_marker_at): New.
+	(target_static_tracepoint_markers_by_strid): New.
+	(target_traceframe_info): New.
+	(target_use_agent): New.
+	(target_can_use_agent): New.
+	(target_augmented_libraries_svr4_read): New.
+	(target_log_command): New.
+	* bfin-tdep.c (bfin_sw_breakpoint_from_kind): Adjust.
+	* infrun.c (set_schedlock_func): Adjust.
+	* mi/mi-main.c (exec_reverse_continue): Adjust.
+	* reverse.c (exec_reverse_once): Adjust.
+	* sh-tdep.c (sh_sw_breakpoint_from_kind): Adjust.
+	* tui/tui-stack.c (tui_locator_window::make_status_line): Adjust.
+	* remote-sim.c (gdbsim_target::detach): Adjust.
+	(gdbsim_target::files_info): Adjust.
+
+2021-03-24  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dw2_map_matching_symbols): Update.
+	(dw2_expand_symtabs_matching_symbol): Remove 'kind' parameter.
+	(check_match, dw2_expand_symtabs_matching)
+	(dwarf2_debug_names_index::map_matching_symbols)
+	(dwarf2_debug_names_index::expand_symtabs_matching): Update.
+
+2021-03-24  Keith Seitz  <keiths@redhat.com>
+
+	* compile/compile-cplus-types.c
+	(compile_cplus_convert_struct_or_union): Fix TYPE_DECLARED_CLASS
+	thinko.
+
+2021-03-24  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbarch.sh (gdbarch_data_registry): Make static.
+	* gdbarch.c: Re-generate.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* NEWS: Mention memory tagging changes.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* printcmd.c (decode_format): Handle the 'm' modifier.
+	(do_examine): Display allocation tags when required/supported.
+	(should_validate_memtags): New function.
+	(print_command_1): Display memory tag mismatches.
+	* valprint.c (show_memory_tag_violations): New function.
+	(value_print_option_defs): Add new option "memory-tag-violations".
+	(user_print_options) <memory_tag_violations>: Initialize to 1.
+	* valprint.h (struct format_data) <print_tags>: New field.
+	(value_print_options) <memory_tag_violations>: New field.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* printcmd.c: Include gdbsupport/rsp-low.h.
+	(memory_tag_list): New static global.
+	(process_print_command_args): Factored out of
+	print_command_1.
+	(print_command_1): Use process_print_command_args.
+	(show_addr_not_tagged, show_memory_tagging_unsupported)
+	(memory_tag_command, memory_tag_print_tag_command)
+	(memory_tag_print_logical_tag_command)
+	(memory_tag_print_allocation_tag_command, parse_with_logical_tag_input)
+	(memory_tag_with_logical_tag_command, parse_set_allocation_tag_input)
+	(memory_tag_set_allocation_tag_command, memory_tag_check_command): New
+	functions.
+	(_initialize_printcmd): Add "memory-tag" prefix and subcommands.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c
+	(aarch64_linux_iterate_over_regset_sections): Handle MTE register set.
+	* aarch64-linux-tdep.h (AARCH64_LINUX_SIZEOF_MTE_REGSET): Define.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c
+	(aarch64_linux_report_signal_info): New function.
+	(aarch64_linux_init_abi): Register
+	aarch64_linux_report_signal_info as the report_signal_info hook.
+	* arch/aarch64-linux.h (SEGV_MTEAERR): Define.
+	(SEGV_MTESERR): Define.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c: Include gdbsupport/selftest.h.
+	(aarch64_linux_ltag_tests): New function.
+	(_initialize_aarch64_linux_tdep): Register aarch64_linux_ltag_tests.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c: Include target.h, arch-utils.h, value.h.
+	(aarch64_mte_get_atag, aarch64_linux_tagged_address_p)
+	(aarch64_linux_memtag_mismatch_p, aarch64_linux_set_memtags)
+	(aarch64_linux_get_memtag, aarch64_linux_memtag_to_string): New
+	functions.
+	(aarch64_linux_init_abi): Initialize MTE-related gdbarch hooks.
+	* arch/aarch64-mte-linux.c (aarch64_mte_make_ltag_bits)
+	(aarch64_mte_make_ltag, aarch64_linux_set_ltag)
+	(aarch64_linux_get_ltag): New functions.
+	* arch/aarch64-mte-linux.h (AARCH64_MTE_LOGICAL_TAG_START_BIT)
+	(AARCH64_MTE_LOGICAL_MAX_VALUE): Define.
+	(aarch64_mte_make_ltag_bits, aarch64_mte_make_ltag)
+	(aarch64_mte_set_ltag, aarch64_mte_get_ltag): New prototypes.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* linux-tdep.c (struct smaps_vmflags) <memory_tagging>: New flag
+	bit.
+	(struct smaps_data): New struct.
+	(decode_vmflags): Handle the 'mt' flag.
+	(parse_smaps_data): New function, refactored from
+	linux_find_memory_regions_full.
+	(linux_address_in_memtag_page): New function.
+	(linux_find_memory_regions_full): Refactor into parse_smaps_data.
+	* linux-tdep.h (linux_address_in_memtag_page): New prototype.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* linux-tdep.c (linux_find_memory_regions_full): Use std::string
+	instead of char arrays.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* Makefile.in (ALL_64_TARGET_OBS): Add arch/aarch64-mte-linux.o.
+	(HFILES_NO_SRCDIR): Add arch/aarch64-mte-linux.h and
+	nat/aarch64-mte-linux-ptrace.h.
+	* aarch64-linux-nat.c: Include nat/aarch64-mte-linux-ptrace.h.
+	(aarch64_linux_nat_target) <supports_memory_tagging>: New method
+	override.
+	<fetch_memtags>: New method override.
+	<store_memtags>: New method override.
+	(aarch64_linux_nat_target::supports_memory_tagging): New method.
+	(aarch64_linux_nat_target::fetch_memtags): New method.
+	(aarch64_linux_nat_target::store_memtags): New method.
+	* arch/aarch64-mte-linux.c: New file.
+	* arch/aarch64-mte-linux.h: Include gdbsupport/common-defs.h.
+	(AARCH64_MTE_GRANULE_SIZE): Define.
+	(aarch64_memtag_type): New enum.
+	(aarch64_mte_get_tag_granules): New prototype.
+	* configure.nat (NATDEPFILES): Add nat/aarch64-mte-linux-ptrace.o.
+	* configure.tgt (aarch64*-*-linux*): Add arch/aarch64-mte-linux.o.
+	* nat/aarch64-mte-linux-ptrace.c: New file.
+	* nat/aarch64-mte-linux-ptrace.h: New file.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* Makefile.in (HFILES_NO_SRCDIR): Add nat/aarch64-mte-linux-ptrace.h.
+	* nat/aarch64-mte-linux-ptrace.h: New file.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-nat.c (fetch_mteregs_from_thread): New function.
+	(store_mteregs_to_thread): New function.
+	(aarch64_linux_nat_target::fetch_registers): Update to call
+	fetch_mteregs_from_thread.
+	(aarch64_linux_nat_target::store_registers): Update to call
+	store_mteregs_to_thread.
+	* aarch64-tdep.c (aarch64_mte_register_names): New struct.
+	(aarch64_cannot_store_register): Handle MTE registers.
+	(aarch64_gdbarch_init): Initialize and setup MTE registers.
+	* aarch64-tdep.h (gdbarch_tdep) <mte_reg_base>: New field.
+	<has_mte>: New method.
+	* arch/aarch64-linux.h (AARCH64_LINUX_SIZEOF_MTE): Define.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-nat.c
+	(aarch64_linux_nat_target::read_description): Take MTE flag into
+	account.
+	Slight refactor to hwcap flag checking.
+	* aarch64-linux-tdep.c
+	(aarch64_linux_core_read_description): Likewise.
+	* aarch64-tdep.c (tdesc_aarch64_list): Add one more dimension for
+	MTE.
+	(aarch64_read_description): Add mte_p parameter and update to use it.
+	Update the documentation.
+	(aarch64_gdbarch_init): Update call to aarch64_read_description.
+	* aarch64-tdep.h (aarch64_read_description): Add mte_p parameter.
+	* arch/aarch64.c: Include ../features/aarch64-mte.c.
+	(aarch64_create_target_description): Add mte_p parameter and update
+	the code to use it.
+	* arch/aarch64.h (aarch64_create_target_description): Add mte_p
+	parameter.
+	* features/Makefile (FEATURE_XMLFILES): Add aarch64-mte.xml.
+	* features/aarch64-mte.c: New file, generated.
+	* features/aarch64-mte.xml: New file.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* Makefile.in (HFILES_NO_SRCDIR): Add arch/aarch64-mte-linux.h.
+	* aarch64-linux-nat.c: Include arch/aarch64-mte-linux.h.
+	* aarch64-linux-tdep.c: Likewise
+	* arch/aarch64-mte-linux.h: New file.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* remote: Include gdbsupport/selftest.h.
+	(test_memory_tagging_functions): New function.
+	(_initialize_remote): Register test_memory_tagging_functions.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* remote.c (PACKET_memory_tagging_feature): New enum.
+	(remote_memory_tagging_p): New function.
+	(remote_protocol_features): New "memory-tagging" entry.
+	(remote_target::remote_query_supported): Handle memory tagging
+	support.
+	(remote_target::supports_memory_tagging): Implement.
+	(create_fetch_memtags_request, parse_fetch_memtags_reply)
+	(create_store_memtags_request): New functions.
+	(remote_target::fetch_memtags): Implement.
+	(remote_target::store_memtags): Implement.
+	(_initialize_remote): Add new "memory-tagging-feature"
+	config command.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* arch-utils.c (default_memtag_to_string, default_tagged_address_p)
+	(default_memtag_matches_p, default_set_memtags)
+	(default_get_memtag): New functions.
+	* arch-utils.h (default_memtag_to_string, default_tagged_address_p)
+	(default_memtag_matches_p, default_set_memtags)
+	(default_get_memtag): New prototypes.
+	* gdbarch.c: Regenerate.
+	* gdbarch.h: Regenerate.
+	* gdbarch.sh (memtag_to_string, tagged_address_p, memtag_matches_p)
+	(set_memtags, get_memtag, memtag_granule_size): New gdbarch hooks.
+	(enum memtag_type): New enum.
+
+2021-03-24  Luis Machado  <luis.machado@linaro.org>
+
+	* remote.c (remote_target) <supports_memory_tagging>: New method
+	override.
+	<fetch_memtags>: New method override.
+	<store_memtags>: New method override.
+	(remote_target::supports_memory_tagging): New method.
+	(remote_target::fetch_memtags): New method.
+	(remote_target::store_memtags): New method.
+	* target-delegates.c: Regenerate.
+	* target.h (struct target_ops) <supports_memory_tagging>: New virtual
+	method.
+	<fetch_memtags>: New virtual method.
+	<store_memtags>: New virtual method.
+	(target_supports_memory_tagging): Define.
+	(target_fetch_memtags): Define.
+	(target_store_memtags): Define.
+	* target-debug.h (target_debug_print_size_t)
+	(target_debug_print_const_gdb_byte_vector_r)
+	(target_debug_print_gdb_byte_vector_r): New functions.
+
+2021-03-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (target_longname): Remove.
+
+2021-03-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (target_is_pushed): Remove, update callers to use
+	inferior::target_is_pushed instead.
+	* target.c (target_is_pushed): Remove.
+
+2021-03-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (push_target): Remove, update callers to use
+	inferior::push_target.
+	* target.c (push_target): Remove.
+	* inferior.h (class inferior) <push_target>: New overload.
+
+2021-03-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (unpush_target): Remove, update all callers
+	to use `inferior::unpush_target` instead.
+	(struct target_unpusher) <operator()>: Just declare.
+	* target.c (unpush_target): Remove.
+	(target_unpusher::operator()): New.
+
+2021-03-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* dwarf2/read.c (process_psymtab_comp_unit): Replace abort with an
+	error.
+	(process_full_comp_unit): Validate the top-level tag before
+	processing the first DIE.
+	(read_func_scope): Ensure we have a valid builder.
+
+2021-03-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* objc-lang.c (objc_demangle): Renamed to
+	objc_language::demangle_symbol, and moved later in the file.
+	(objc_language::sniff_from_mangled_name): Call demangle_symbol
+	member function.
+	(objc_language::demangle_symbol): Defined outside of class
+	declaration.  The definition is the old objc_demangle with NULL
+	changed to nullptr, and if conditions relating to nullptr pointers
+	or null character checks made explicit.
+	* objc-lang.h (objc_demangle): Delete declaration.
+
+2021-03-22  Martin Liska  <mliska@suse.cz>
+
+	* arm-tdep.c (show_disassembly_style_sfunc): Replace usage of CONST_STRNEQ with startswith.
+	(_initialize_arm_tdep): Likewise.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_initial_scan): Create partial symtabs.
+	* symfile.c (syms_from_objfile_1, reread_symbols): Update.
+	* psymtab.h (make_psymbol_functions): Don't declare.
+	* psymtab.c (make_psymbol_functions): Remove.
+	(maintenance_print_psymbols): Update.
+	* psympriv.h (struct psymbol_functions): Add no-argument
+	constructor.
+	* objfiles.h (struct objfile) <reset_psymtabs>: Remove.
+	<partial_symtabs>: Remove.
+	* mdebugread.c (mdebug_build_psymtabs): Create partial symtabs.
+	* elfread.c (read_partial_symbols): Update.
+	(elf_symfile_read): Remove check for existing partial symbols.
+	Don't clear "qf".
+	* dwarf2/read.c (dwarf2_has_info): Remove check for existing
+	partial symbols.
+	(dwarf2_build_psymtabs): Add psymbol_functions parameter.  Create
+	partial symtabs.
+	* dwarf2/public.h (dwarf2_build_psymtabs): Add psymbol_functions
+	parameter.
+	* dbxread.c (dbx_symfile_read): Create partial symtabs.
+	* ctfread.c (elfctf_build_psymtabs): Create partial symtabs.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_build_psymtabs): Update.
+	* symfile.c (syms_from_objfile_1, reread_symbols): Update.
+	* symfile-debug.c (objfile::has_partial_symbols)
+	(objfile::find_last_source_symtab)
+	(objfile::forget_cached_source_info)
+	(objfile::map_symtabs_matching_filename, objfile::lookup_symbol)
+	(objfile::print_stats, objfile::dump)
+	(objfile::expand_symtabs_for_function)
+	(objfile::expand_all_symtabs)
+	(objfile::expand_symtabs_with_fullname)
+	(objfile::map_matching_symbols)
+	(objfile::expand_symtabs_matching)
+	(objfile::find_pc_sect_compunit_symtab)
+	(objfile::map_symbol_filenames)
+	(objfile::find_compunit_symtab_by_address)
+	(objfile::lookup_global_symbol_language)
+	(objfile::require_partial_symbols): Update.
+	* psymtab.c (maintenance_print_psymbols)
+	(maintenance_info_psymtabs, maintenance_check_psymtabs): Update.
+	* objfiles.h (struct objfile) <qf>: Now a forward_list.
+	* objfiles.c (objfile_relocate1): Update.
+	* elfread.c (elf_symfile_read): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile) <psymtabs>: Remove method.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (psymbol_functions::count_psyms): Rename.
+	(psymbol_functions::print_stats): Update.
+	* psympriv.h (struct psymbol_functions) <count_psyms>: Declare
+	method.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (psymbol_functions::require_partial_symbols): Rename.
+	(psymbol_functions::find_pc_sect_psymtab): Rename.
+	(psymbol_functions::find_pc_sect_compunit_symtab)
+	(maintenance_print_psymbols, maintenance_check_psymtabs): Update.
+	* psympriv.h (struct psymbol_functions) <require_partial_symbols>:
+	Declare new method.
+	<get_partial_symtabs, find_pc_sect_psymtab>: Likewise.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_start_psymtab): Add partial_symtabs parameter.
+	(xcoff_end_psymtab, scan_xcoff_symtab): Update.
+	* psymtab.c (partial_symtab::partial_symtab): Add partial_symtabs
+	parameter.
+	(add_psymbol_to_bcache): Remove.
+	(partial_symtab::add_psymbol): Add partial_symtabs parameter.
+	(partial_symtab::add_psymbol, partial_symtab::partial_symtab):
+	Likewise.
+	* psympriv.h (partial_symtab): Add partial_symtabs parameter.
+	<add_psymbol>: Likewise.
+	(standard_psymtab, legacy_psymtab): Likewise.
+	* mdebugread.c (parse_partial_symbols): Update.
+	(handle_psymbol_enumerators): Add partial_symtabs parameter.
+	(handle_psymbol_enumerators): Update.
+	(new_psymtab): Add partial_symtabs parameter.
+	* dwarf2/read.h (dwarf2_psymtab): Add partial_symtabs parameter.
+	* dwarf2/read.c (dwarf2_include_psymtab): Add partial_symtabs
+	parameter.
+	(dwarf2_create_include_psymtab): Add partial_symtabs parameter.
+	(create_partial_symtab, add_partial_symbol, dwarf_decode_lines):
+	Update.
+	* dbxread.c (read_dbx_symtab): Update.
+	(start_psymtab): Add partial_symtabs parameter.
+	(dbx_end_psymtab): Update.
+	* ctfread.c (struct ctf_context) <partial_symtabs>: New member.
+	(ctf_psymtab): Add partial_symtabs parameter.
+	(create_partial_symtab, ctf_psymtab_type_cb, ctf_psymtab_var_cb):
+	Update.
+	(scan_partial_symbols): Add partial_symtabs parameter.
+	(scan_partial_symbols, elfctf_build_psymtabs)
+	(ctf_psymtab_add_enums): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (read_symbols): Use objfile method.
+	* symfile-debug.c (objfile::require_partial_symbols): New method.
+	* psymtab.h (require_partial_symbols): Don't declare.
+	* psymtab.c (require_partial_symbols): Use objfile method.  Now
+	static.
+	(psymbol_functions::map_symtabs_matching_filename, OBJFILE)
+	(psymbol_functions::lookup_symbol)
+	(psymbol_functions::lookup_global_symbol_language)
+	(psymbol_functions::find_last_source_symtab)
+	(psymbol_functions::forget_cached_source_info)
+	(psymbol_functions::print_stats)
+	(psymbol_functions::expand_symtabs_for_function)
+	(psymbol_functions::expand_all_symtabs)
+	(psymbol_functions::expand_symtabs_with_fullname)
+	(psymbol_functions::map_symbol_filenames)
+	(psymbol_functions::map_matching_symbols)
+	(psymbol_functions::expand_symtabs_matching)
+	(psymbol_functions::find_compunit_symtab_by_address)
+	(maintenance_print_psymbols, maintenance_info_psymtabs)
+	(maintenance_check_psymtabs): Update.
+	* objfiles.h (struct objfile) <require_partial_symbols>: Declare
+	new method.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_sym_fns): Update.
+	* symfile.h (struct sym_fns) <sym_read_psymbols>: Remove.
+	* symfile-debug.c (objfile::has_partial_symbols): Use
+	can_lazily_read_symbols.
+	(debug_sym_read_psymbols): Remove.
+	(debug_sym_fns, install_symfile_debug_logging): Update.
+	* quick-symbol.h (struct quick_symbol_functions)
+	<can_lazily_read_symbols, read_partial_symbols>: New methods.
+	* psymtab.c (require_partial_symbols): Use new 'qf' methods.
+	* mipsread.c (ecoff_sym_fns): Update.
+	* machoread.c (macho_sym_fns): Update.
+	* elfread.c (struct lazy_dwarf_reader): New.
+	(elf_symfile_read): Update.
+	(read_psyms): Now a method of lazy_dwarf_reader.
+	(elf_sym_fns): Update.
+	(elf_sym_fns_lazy_psyms): Remove.
+	* dbxread.c (aout_sym_fns): Update.
+	* coffread.c (coff_sym_fns): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (syms_from_objfile_1): Call reset_psymtabs.
+	(reread_symbols): Move reset_psymtabs call later.
+	* objfiles.c (objfile::objfile): Don't initialize
+	partial_symtabs.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_build_psymtabs): Call
+	set_partial_symtabs.
+	* symfile.c (syms_from_objfile_1, reread_symbols): Update.
+	* psymtab.h (make_psymbol_functions): Add partial_symtabs
+	parameter.
+	* psymtab.c (find_pc_sect_psymtab): Add partial_symtabs
+	parameter.
+	(psymbol_functions::find_pc_sect_compunit_symtab)
+	(psymbol_functions::print_stats, psymbol_functions::dump)
+	(psymbol_functions::has_symbols): Update.
+	(make_psymbol_functions, dump_psymtab_addrmap): Add
+	partial_symtabs parameter.
+	(maintenance_print_psymbols): Update.
+	(psymbol_functions::expand_symtabs_matching): Update.
+	* psympriv.h (struct psymbol_functions): Add constructor.
+	<m_partial_symtabs>: New member.
+	<set_partial_symtabs>: New method.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_create_include_psymtab): Add per_bfd
+	parameter.
+	(process_psymtab_comp_unit_reader)
+	(build_type_psymtab_dependencies, dwarf2_build_psymtabs_hard)
+	(add_partial_subprogram, dwarf2_ranges_read, dwarf_decode_lines):
+	Reference psymtabs via per_bfd.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/index-write.c (struct addrmap_index_data) <objfile>:
+	Remove.
+	(add_address_entry): Remove objfile parameter.
+	(add_address_entry_worker): Update.
+	(write_address_map): Replace objfile parameter with per_bfd.
+	(write_gdbindex, write_psymtabs_to_index): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_base_index_functions::print_stats): Add
+	print_bcache parameter.
+	* symfile-debug.c (objfile::print_stats): Add print_bcache
+	parameter.
+	* quick-symbol.h (struct quick_symbol_functions)
+	<print_stats>: Add print_bcache parameter.
+	* symmisc.c (print_symbol_bcache_statistics, count_psyms): Move
+	code to psymtab.c.
+	(print_objfile_statistics): Move psymtab code to psymtab.c.
+	* psymtab.c (count_psyms): Move from symmisc.c.
+	(psymbol_functions::print_stats): Print partial symbol and bcache
+	statistics.  Add print_bcache parameter.
+	* objfiles.h (print_symbol_bcache_statistics): Don't declare.
+	(struct objfile) <print_stats>: Add print_bcache parameter.
+	* maint.c (maintenance_print_statistics): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (struct dwarf2_per_bfd) <psymtabs_addrmap>: New
+	member.
+	* dwarf2/read.c (create_addrmap_from_index)
+	(create_addrmap_from_aranges): Set per_bfd addrmap.
+	(dwarf2_read_gdb_index): Don't set partial_symtabs.
+	(dwarf2_base_index_functions::find_pc_sect_compunit_symtab): Use
+	per_bfd addrmap.
+	(dwarf2_read_debug_names): Don't set partial_symtabs.
+	(dwarf2_initialize_objfile): Likewise.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_build_psymtabs): Set partial_symtabs
+	earlier.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* psympriv.h (psymtab_discarder): Take psymtab_storage parameter.
+	(~psymtab_discarder, keep): Update.
+	<m_objfile>: Remove.
+	<m_partial_symtabs>: New member.
+	* dwarf2/read.c (dwarf2_build_psymtabs): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c (xcoff_end_psymtab): Add partial_symtabs parameter.
+	(xcoff_end_psymtab): Update.
+	(scan_xcoff_symtab): Add partial_symtabs parameter.
+	(xcoff_initial_scan): Update.
+	* stabsread.h (dbx_end_psymtab): Add partial_symtabs parameter.
+	* mdebugread.c (mdebug_build_psymtabs): Update.
+	(parse_partial_symbols): Add partial_symtabs parameter.
+	* dbxread.c (dbx_symfile_read): Update.
+	(read_dbx_symtab): Add partial_symtabs parameter.
+	(read_dbx_symtab): Update.
+	(dbx_end_psymtab): Add partial_symtabs parameter.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* quick-symbol.h (struct quick_symbol_functions)
+	<relocated>: New method.
+	* psymtab.h (struct psymbol_functions) <relocated>: New
+	method.
+	<fill_psymbol_map>: Declare method.
+	<m_psymbol_map>: New member.
+	* psymtab.c (psymbol_functions::fill_psymbol_map): Rename.
+	(psymbol_functions::find_compunit_symtab_by_address): Update.
+	* objfiles.h (reset_psymtabs): Don't clear psymbol_map.
+	(struct objfile) <psymbol_map>: Remove.
+	* objfiles.c (objfile_relocate1): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* psympriv.h (struct psymbol_functions): New.
+	* symfile.c (syms_from_objfile_1, reread_symbols): Update.
+	* symfile-debug.c (objfile::find_compunit_symtab_by_address)
+	(objfile::lookup_global_symbol_language): Update.
+	* quick-symbol.h (struct quick_symbol_functions): Convert function
+	pointers to methods.  Add virtual destructor.
+	(quick_symbol_functions_up): New typedef.
+	* psymtab.h (psym_functions, dwarf2_gdb_index_functions)
+	(dwarf2_debug_names_functions): Don't declare.
+	(make_psymbol_functions): Declare.
+	* psymtab.c (psymbol_functions::map_symtabs_matching_filename)
+	(psymbol_functions::find_pc_sect_compunit_symtab)
+	(psymbol_functions::lookup_symbol)
+	(psymbol_functions::lookup_global_symbol_language)
+	(psymbol_functions::find_last_source_symtab)
+	(psymbol_functions::forget_cached_source_info)
+	(psymbol_functions::print_stats, psymbol_functions::dump)
+	(psymbol_functions::expand_symtabs_for_function)
+	(psymbol_functions::expand_all_symtabs)
+	(psymbol_functions::expand_symtabs_with_fullname)
+	(psymbol_functions::map_symbol_filenames)
+	(psymbol_functions::map_matching_symbols)
+	(psymbol_functions::expand_symtabs_matching)
+	(psymbol_functions::has_symbols)
+	(psymbol_functions::find_compunit_symtab_by_address): Rename.
+	(psym_functions): Remove.
+	(make_psymbol_functions): New function.
+	* objfiles.h (struct objfile) <qf>: Change type.
+	* elfread.c (elf_symfile_read): Update.
+	* dwarf2/read.c (struct dwarf2_base_index_functions)
+	(struct dwarf2_gdb_index, struct dwarf2_debug_names_index): New.
+	(make_dwarf_gdb_index, make_dwarf_debug_names): New functions.
+	(dwarf2_base_index_functions::find_last_source_symtab)
+	(dwarf2_base_index_functions::forget_cached_source_info)
+	(dwarf2_base_index_functions::map_symtabs_matching_filename)
+	(dwarf2_gdb_index::lookup_symbol)
+	(dwarf2_base_index_functions::print_stats)
+	(dwarf2_gdb_index::dump)
+	(dwarf2_gdb_index::expand_symtabs_for_function)
+	(dwarf2_base_index_functions::expand_all_symtabs)
+	(dwarf2_base_index_functions::expand_symtabs_with_fullname):
+	Rename.
+	(dwarf2_gdb_index::map_matching_symbols): New method.
+	(dwarf2_gdb_index::expand_symtabs_matching): New method.
+	(dwarf2_base_index_functions::find_pc_sect_compunit_symtab)
+	(dwarf2_base_index_functions::map_symbol_filenames)
+	(dwarf2_base_index_functions::has_symbols): Rename.
+	(dwarf2_gdb_index_functions): Remove.
+	(dwarf2_debug_names_index::lookup_symbol)
+	(dwarf2_debug_names_index::dump)
+	(dwarf2_debug_names_index::expand_symtabs_for_function)
+	(dwarf2_debug_names_index::map_matching_symbols)
+	(dwarf2_debug_names_index::expand_symtabs_matching): Rename.
+	(dwarf2_debug_names_functions): Remove.
+	* dwarf2/public.h (make_dwarf_gdb_index, make_dwarf_debug_names):
+	Declare.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* psymtab.c (require_partial_symbols): Check that 'sf' is not
+	null.
+	* xcoffread.c (xcoff_sym_fns): Update.
+	* symfile.h (struct sym_fns) <qf>: Remove.
+	* symfile.c (syms_from_objfile_1, reread_symbols): Update.
+	* symfile-debug.c (objfile::has_partial_symbols)
+	(objfile::find_last_source_symtab)
+	(objfile::forget_cached_source_info)
+	(objfile::map_symtabs_matching_filename, objfile::lookup_symbol)
+	(objfile::print_stats, objfile::dump)
+	(objfile::expand_symtabs_for_function)
+	(objfile::expand_all_symtabs)
+	(objfile::expand_symtabs_with_fullname)
+	(objfile::map_matching_symbols)
+	(objfile::expand_symtabs_matching)
+	(objfile::find_pc_sect_compunit_symtab)
+	(objfile::map_symbol_filenames)
+	(objfile::find_compunit_symtab_by_address)
+	(objfile::lookup_global_symbol_language, debug_sym_fns)
+	(install_symfile_debug_logging): Update.
+	* objfiles.h (struct objfile) <qf>: New member.
+	* mipsread.c (ecoff_sym_fns): Update.
+	* machoread.c (macho_sym_fns): Update.
+	* elfread.c (elf_sym_fns_gdb_index, elf_sym_fns_debug_names):
+	Don't declare.
+	(elf_symfile_read, elf_sym_fns, elf_sym_fns_lazy_psyms): Update.
+	* dbxread.c (aout_sym_fns): Update.
+	* coffread.c (coff_sym_fns): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* symfile.h (symbol_compare_ftype, symbol_filename_ftype)
+	(expand_symtabs_file_matcher_ftype)
+	(expand_symtabs_symbol_matcher_ftype)
+	(expand_symtabs_exp_notify_ftype, struct quick_symbol_functions):
+	Move to quick-symbol.h.
+	* quick-symbol.h: New file.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* symtab.c (iterate_over_symtabs, expand_symtab_containing_pc)
+	(lookup_symbol_via_quick_fns, find_quick_global_symbol_language)
+	(basic_lookup_transparent_type_quick)
+	(find_pc_sect_compunit_symtab, find_symbol_at_address)
+	(find_line_symtab, global_symbol_searcher::expand_symtabs):
+	Update.
+	* symmisc.c (print_objfile_statistics, dump_objfile)
+	(maintenance_expand_symtabs): Update.
+	* symfile.c (symbol_file_add_with_addrs)
+	(expand_symtabs_matching, map_symbol_filenames): Update.
+	* symfile-debug.c (objfile::has_partial_symbols)
+	(objfile::find_last_source_symtab)
+	(objfile::forget_cached_source_info)
+	(objfile::map_symtabs_matching_filename, objfile::lookup_symbol)
+	(objfile::print_stats, objfile::dump)
+	(objfile::expand_symtabs_for_function)
+	(objfile::expand_all_symtabs)
+	(objfile::expand_symtabs_with_fullname)
+	(objfile::map_matching_symbols)
+	(objfile::expand_symtabs_matching)
+	(objfile::find_pc_sect_compunit_symtab)
+	(objfile::map_symbol_filenames)
+	(objfile::find_compunit_symtab_by_address)
+	(objfile::lookup_global_symbol_language): New methods.
+	(debug_sym_quick_functions): Remove.
+	(debug_sym_fns, install_symfile_debug_logging): Update.
+	* source.c (forget_cached_source_info_for_objfile)
+	(select_source_symtab): Update.
+	* objfiles.h (struct objfile): Add methods corresponding to
+	quick_symbol_functions.
+	* objfiles.c (objfile::has_partial_symbols): Move to
+	symfile-debug.c.
+	* linespec.c (iterate_over_all_matching_symtabs): Update.
+	* cp-support.c (add_symbol_overload_list_qualified): Update.
+	* ada-lang.c (add_nonlocal_symbols): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* objfiles.h (struct objfile) <has_partial_symbols>: Return bool.
+	* symfile.h (struct quick_symbol_functions) <has_symbols>: Return
+	bool.
+	* symfile-debug.c (debug_qf_has_symbols): Return bool.
+	* psymtab.c (psym_has_symbols): Return bool.
+	* objfiles.c (objfile::has_partial_symbols): Return bool.
+	* dwarf2/read.c (dw2_has_symbols): Return bool.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* symfile.c (read_symbols): Update.
+	* objfiles.h (struct objfile) <has_partial_symbols>: New method.
+	(objfile_has_partial_symbols): Don't declare.
+	* objfiles.c (objfile::has_partial_symbols): Rename from
+	objfile_has_partial_symbols.
+	(objfile_has_symbols, have_partial_symbols): Update.
+	* elfread.c (elf_symfile_read): Update.
+	* dwarf2/read.c (dwarf2_has_info): Update.
+	* coffread.c (coff_symfile_read): Update.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* coffread.c: Include dwarf2/public.h.
+	* dwarf2/frame.c: Include dwarf2/public.h.
+	* dwarf2/index-write.h: Include dwarf2/public.h, not symfile.h.
+	* dwarf2/public.h: New file.
+	* dwarf2/read.c: Include dwarf2/public.h.
+	* elfread.c: Include dwarf2/public.h.
+	* machoread.c: Include dwarf2/public.h.
+	* symfile.h (dwarf2_has_info, enum dw_index_kind)
+	(dwarf2_initialize_objfile, dwarf2_build_psymtabs)
+	(dwarf2_build_frame_info): Move to dwarf2/public.h.
+	* xcoffread.c: Include dwarf2/public.h.
+
+2021-03-20  Tom Tromey  <tom@tromey.com>
+
+	* symfile.h (enum dwarf2_section_enum)
+	(dwarf2_get_section_info): Move to dwarf2/read.h.
+	* dwarf2/read.h (enum dwarf2_section_enum)
+	(dwarf2_get_section_info): Move from symfile.h.
+
+2021-03-19  Pedro Alves  <pedro@palves.net>
+
+	* thread.c (any_thread_of_inferior): Check if there's a selected
+	thread before calling inferior_thread().
+
+2021-03-18  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/stringify.c (dwarf_unit_type_name): New function.  Use
+	get_DW_UT_name.
+	* dwarf2/stringify.h (dwarf_unit_type_name): Declare.
+	* dwarf2/comp-unit.c (dwarf_unit_type_name): Remove.
+
+2021-03-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-param.c (get_set_value): Update header comment.
+
+2021-03-17  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (check_multi_target_resumption): Remove argument to
+	all_non_exited_inferiors.
+
+2021-03-16  Christian Biesinger  <cbiesinger@google.com>
+
+	* windows-nat.c (windows_init_thread_list): Add message to
+	debug log.
+
+2021-03-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-framefilter.c (py_print_frame): Use PyInt_Check as
+	well as PyLong_Check for Python 2.
+
+2021-03-15  Tom Tromey  <tromey@adacore.com>
+
+	PR build/27579:
+	* rust-exp.y (maker_map): Use gdb::hash_enum.
+	* stap-probe.c (stap_maker_map): Use gdb::hash_enum.
+
+2021-03-15  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (create_debug_type_hash_table): Remove colon at
+	end of debug print.
+
+2021-03-15  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (dw2_get_file_names_reader): Remove info_ptr
+	parameter, adjust caller.
+
+2021-03-15  Tom Tromey  <tromey@adacore.com>
+
+	* ada-exp.y (simple_exp): Always push a result for unary '+'.
+
+2021-03-15  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_unop_ind_operation::evaluate): Call
+	ada_ensure_varsize_limit.
+
+2021-03-15  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (numeric_type_p, integer_type_p): Return true for
+	fixed-point.
+	* ada-exp.y (maybe_overload): New function.
+	(ada_wrap_overload): New function.
+	(ada_un_wrap2, ada_wrap2, ada_wrap_op): Use maybe_overload.
+	(exp1, simple_exp, relation, and_exp, and_then_exp, or_exp)
+	(or_else_exp, xor_exp, primary): Update.
+
+2021-03-15  Tom Tromey  <tromey@adacore.com>
+
+	PR ada/27545:
+	* ada-lang.c (ada_var_value_operation::evaluate): Use recursive
+	call for tagged type.
+
+2021-03-15  Tom Tromey  <tromey@adacore.com>
+
+	* ada-exp.y (exp1): Handle resolution of the right hand side of an
+	assignment.
+
+2021-03-15  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_aggregate_operation::assign_aggregate): Return
+	container.
+	(ada_assign_operation::evaluate): Update.
+	* ada-exp.h (class ada_aggregate_operation) <assign_aggregate>:
+	Change return type.
+
+2021-03-15  Felix Willgerodt  <felix.willgerodt@intel.com>
+
+	* i386-tdep.c (i386_floatformat_for_type): Add COMPLEX*32 and REAL*16.
+
+2021-03-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/python.c (gdbpy_source_objfile_script): Use
+	make_scoped_restore to restore gdbpy_current_objfile.
+	(gdbpy_execute_objfile_script): Likewise.
+
+2021-03-14  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_attribute_value): Use cu_header
+	consistently.
+
+2021-03-14  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (struct die_reader_specs) <abfd>: Fix formatting.
+	(peek_die_abbrev): Use reader.abfd.
+
+2021-03-14  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (dwarf2_per_cu_data::get_header): Set
+	m_header_read_in.
+
+2021-03-13  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (struct partial_die_info): Update.
+	(peek_die_abbrev, skip_children, skip_one_die, read_full_die_1)
+	(load_partial_dies, partial_die_info::partial_die_info): Update.
+	* dwarf2/abbrev.h (lookup_abbrev): Constify.
+
+2021-03-13  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/abbrev.c (abbrev_table::read): Remove Irix 6 workaround.
+
+2021-03-12  Christian Biesinger  <cbiesinger@google.com>
+
+	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.
+
+2021-03-10  Tom Tromey  <tromey@adacore.com>
+
+	* parser-defs.h (parser_state): Change completion to bool.
+	<parse_completion>: Likewise.
+	* ada-lang.h (ada_find_operator_symbol, ada_resolve_funcall)
+	(ada_resolve_variable, ada_resolve_function): Update.
+	* ada-lang.c (ada_find_operator_symbol): Change
+	parse_completion to bool.
+	(ada_resolve_funcall, ada_resolve_variable)
+	(ada_resolve_function): Likewise.
+
+2021-03-09  Tom Tromey  <tromey@adacore.com>
+
+	* eval.c (operation::evaluate_funcall): Use function formal
+	parameter types when evaluating.
+
+2021-03-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb-gdb.py.in (StructMainTypePrettyPrinter) <owner_to_string>:
+	Updated fields names flag_objfile_owned to m_flag_objfile_owned,
+	and owner to m_owner.
+
+2021-03-09  Felix Willgerodt  <felix.willgerodt@intel.com>
+
+        * f-exp.h (eval_op_f_loc): Declare.
+        (expr::fortran_loc_operation): New typedef.
+        * f-exp.y (exp): Handle UNOP_FORTRAN_LOC after parsing an
+        UNOP_INTRINSIC.
+        (f77_keywords): Add LOC keyword.
+        * f-lang.c (eval_op_f_loc): New function.
+        * std-operator.def (UNOP_FORTRAN_LOC): New operator.
+
+2021-03-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.h (eval_op_f_array_shape): Declare.
+	(fortran_array_shape_operation): New type.
+	* f-exp.y (exp): Handle UNOP_FORTRAN_SHAPE after parsing
+	UNOP_INTRINSIC.
+	(f77_keywords): Add "shape" keyword.
+	* f-lang.c (fortran_array_shape): New function.
+	(eval_op_f_array_shape): New function.
+	* std-operator.def (UNOP_FORTRAN_SHAPE): New operator.
+
+2021-03-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (eval_op_f_array_size): Declare 1 and 2 argument forms
+	of this function.
+	(expr::fortran_array_size_1arg): New type.
+	(expr::fortran_array_size_2arg): Likewise.
+	* f-exp.y (exp): Handle FORTRAN_ARRAY_SIZE after parsing
+	UNOP_OR_BINOP_INTRINSIC.
+	(f77_keywords): Add "size" keyword.
+	* f-lang.c (fortran_array_size): New function.
+	(eval_op_f_array_size): New function, has a 1 arg and 2 arg form.
+	* std-operator.def (FORTRAN_ARRAY_SIZE): New operator.
+
+2021-03-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.h (eval_op_f_rank): Declare.
+	(expr::fortran_rank_operation): New typedef.
+	* f-exp.y (exp): Handle UNOP_FORTRAN_RANK after parsing an
+	UNOP_INTRINSIC.
+	(f77_keywords): Add "rank" keyword.
+	* f-lang.c (eval_op_f_rank): New function.
+	* std-operator.def (UNOP_FORTRAN_RANK): New operator.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* printcmd.c (set_command): Remove null check.
+	* value.c (init_if_undefined_command): Remove null check.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* parse.c (parser_state::push_symbol, parser_state::push_dollar):
+	Update.
+	* p-exp.y (variable): Update.
+	* go-exp.y (variable): Update.
+	* expprint.c (dump_for_expression): Use bound_minimal_symbol.
+	Remove overload for objfile.
+	* expop.h (eval_op_var_msym_value): Use bound_minimal_symbol
+	parameter.
+	(check_objfile): Likewise.
+	(dump_for_expression): Likewise.  Remove overload for objfile.
+	(class var_msym_value_operation): Use bound_minimal_symbol.
+	* eval.c (eval_op_var_msym_value): Use bound_minimal_symbol
+	parameter.
+	(var_msym_value_operation::evaluate_for_address)
+	(var_msym_value_operation::evaluate_for_sizeof)
+	(var_msym_value_operation::evaluate_for_cast): Update.
+	* d-exp.y (PrimaryExpression): Update.
+	* c-exp.y (variable): Update.
+	* ax-gdb.c (var_msym_value_operation::do_generate_ax): Update.
+	* ada-lang.c (ada_var_msym_value_operation::evaluate_for_cast):
+	Update.
+	* ada-exp.y (write_var_or_type): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* parser-defs.h (exp_uses_objfile): Return bool.
+	* parse.c (exp_uses_objfile): Return bool.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* value.h (eval_skip_value): Don't declare.
+	* opencl-lang.c (eval_opencl_assign): Update.
+	* m2-lang.c (eval_op_m2_high, eval_op_m2_subscript): Update.
+	* f-lang.c (eval_op_f_abs, eval_op_f_mod, eval_op_f_ceil)
+	(eval_op_f_floor, eval_op_f_modulo, eval_op_f_cmplx): Remove.
+	* expression.h (enum noside) <EVAL_SKIP>: Remove.
+	* expop.h (typeof_operation::evaluate)
+	(decltype_operation::evaluate, unop_addr_operation::evaluate)
+	(unop_sizeof_operation::evaluate, assign_operation::evaluate)
+	(cxx_cast_operation::evaluate): Update.
+	* eval.c (eval_skip_value): Remove.
+	(eval_op_scope, eval_op_var_entry_value)
+	(eval_op_func_static_var, eval_op_string, eval_op_objc_selector)
+	(eval_op_concat, eval_op_ternop, eval_op_structop_struct)
+	(eval_op_structop_ptr, eval_op_member, eval_op_add, eval_op_sub)
+	(eval_op_binary, eval_op_subscript, eval_op_equal)
+	(eval_op_notequal, eval_op_less, eval_op_gtr, eval_op_geq)
+	(eval_op_leq, eval_op_repeat, eval_op_plus, eval_op_neg)
+	(eval_op_complement, eval_op_lognot, eval_op_ind)
+	(eval_op_memval, eval_op_preinc, eval_op_predec)
+	(eval_op_postinc, eval_op_postdec, eval_op_type)
+	(eval_binop_assign_modify, eval_op_objc_msgcall)
+	(eval_multi_subscript, logical_and_operation::evaluate)
+	(logical_or_operation::evaluate, array_operation::evaluate)
+	(operation::evaluate_for_cast)
+	(var_msym_value_operation::evaluate_for_cast)
+	(var_value_operation::evaluate_for_cast): Update.
+	* c-lang.c (c_string_operation::evaluate): Update.
+	* c-exp.h (objc_nsstring_operation::evaluate)
+	(objc_selector_operation::evaluate): Update.
+	* ada-lang.c (ada_assign_operation::evaluate)
+	(eval_ternop_in_range, ada_unop_neg, ada_unop_in_range)
+	(ada_atr_size): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c: Merge "namespace" scopes.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* parser-defs.h (struct expr_builder) <expr_builder>: Inline.
+	<release>: Inline.
+	* parse.c (expr_builder::expr_builder, expr_builder::release):
+	Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* parse.c (expression::expression, expression::~expression):
+	Remove.
+	* expression.h (struct expression): Inline constructor.  Remove
+	destructor.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* std-operator.def (BINOP_END): Remove.
+	* p-exp.y (tokentab3, tokentab2): Use OP_NULL, not BINOP_END.
+	* go-exp.y (tokentab2): Use OP_NULL, not BINOP_END.
+	* f-exp.y (dot_ops, f77_keywords): Use OP_NULL, not BINOP_END.
+	* d-exp.y (tokentab2, ident_tokens): Use OP_NULL, not BINOP_END.
+	* c-exp.y (tokentab3, tokentab2, ident_tokens): Use OP_NULL, not
+	BINOP_END.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expression.h (enum exp_opcode) <OP_UNUSED_LAST>: Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* std-operator.def (OP_EXTENDED0): Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* std-operator.def (OP_NAME, OP_ATR_IMAGE, OP_ATR_MODULUS)
+	(OP_OTHERS, OP_CHOICES, OP_POSITIONAL, OP_DISCRETE_RANGE):
+	Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* std-operator.def (UNOP_CAP, UNOP_CHR, UNOP_ORD, UNOP_FLOAT)
+	(UNOP_MAX, UNOP_MIN, UNOP_ODD, UNOP_TRUNC, OP_M2_STRING): Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* std-operator.def (OP_ATR_MIN, OP_ATR_MAX): Remove.
+	* ada-lang.c (ada_binop_minmax): Update.
+	* ada-exp.h (ada_binop_min_operation, ada_binop_max_operation):
+	Use BINOP_MIN and BINOP_MAX.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* value.h (evaluate_subexp_with_coercion): Don't declare.
+	* parse.c (exp_descriptor_standard): Remove.
+	(expr_builder::expr_builder, expr_builder::release): Update.
+	(expression::expression): Remove size_t parameter.
+	(expression::~expression): Simplify.
+	(expression::resize): Remove.
+	(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): Remove.
+	* p-lang.h (class pascal_language) <opcode_print_table,
+	op_print_tab>: Remove.
+	* p-lang.c (pascal_language::op_print_tab): Remove.
+	* opencl-lang.c (class opencl_language) <opcode_print_table>:
+	Remove.
+	* objc-lang.c (objc_op_print_tab): Remove.
+	(class objc_language) <opcode_print_table>: Remove.
+	* m2-lang.h (class m2_language) <opcode_print_table,
+	op_print_tab>: Remove.
+	* m2-lang.c (m2_language::op_print_tab): Remove.
+	* language.h (struct language_defn) <post_parser, expression_ops,
+	opcode_print_table>: Remove.
+	* language.c (language_defn::expression_ops)
+	(auto_or_unknown_language::opcode_print_table): Remove.
+	* go-lang.h (class go_language) <opcode_print_table,
+	op_print_tab>: Remove.
+	* go-lang.c (go_language::op_print_tab): Remove.
+	* f-lang.h (class f_language) <opcode_print_table>: Remove
+	<op_print_tab>: Remove.
+	* f-lang.c (f_language::op_print_tab): Remove.
+	* expression.h (union exp_element): Remove.
+	(struct expression): Remove size_t parameter from constructor.
+	<resize>: Remove.
+	<first_opcode>: Update.
+	<nelts, elts>: Remove.
+	(EXP_ELEM_TO_BYTES, BYTES_TO_EXP_ELEM): Remove.
+	(evaluate_subexp_standard, print_expression, op_string)
+	(dump_raw_expression): Don't declare.
+	* expprint.c (print_expression, print_subexp)
+	(print_subexp_funcall, print_subexp_standard, op_string)
+	(dump_raw_expression, dump_subexp, dump_subexp_body)
+	(dump_subexp_body_funcall, dump_subexp_body_standard): Remove.
+	(dump_prefix_expression): Update.
+	* eval.c (evaluate_subexp): Remove.
+	(evaluate_expression, evaluate_type): Update.
+	(evaluate_subexpression_type): Remove.
+	(fetch_subexp_value): Remove "pc" parameter.  Update.
+	(extract_field_op, evaluate_struct_tuple, evaluate_funcall)
+	(evaluate_subexp_standard, evaluate_subexp_for_address)
+	(evaluate_subexp_with_coercion, evaluate_subexp_for_sizeof)
+	(evaluate_subexp_for_cast): Remove.
+	(parse_and_eval_type): Update.
+	* dtrace-probe.c (dtrace_probe::compile_to_ax): Update.
+	* d-lang.c (d_op_print_tab): Remove.
+	(class d_language) <opcode_print_table>: Remove.
+	* c-lang.h (c_op_print_tab): Don't declare.
+	* c-lang.c (c_op_print_tab): Remove.
+	(class c_language, class cplus_language, class asm_language, class
+	minimal_language) <opcode_print_table>: Remove.
+	* breakpoint.c (update_watchpoint, watchpoint_check)
+	(watchpoint_exp_is_const, watch_command_1): Update.
+	* ax-gdb.h (union exp_element): Don't declare.
+	* ax-gdb.c (const_var_ref, const_expr, maybe_const_expr)
+	(gen_repeat, gen_sizeof, gen_expr_for_cast, gen_expr)
+	(gen_expr_binop_rest): Remove.
+	(gen_trace_for_expr, gen_eval_for_expr, gen_printf): Update.
+	* ada-lang.c (ada_op_print_tab): Remove.
+	(class ada_language) <post_parser, opcode_print_table>: Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* go-lang.c (go_language::expression_ops): Don't declare.
+	* go-lang.h (class go_language) <expression_ops>: Remove.
+	* opencl-lang.c (evaluate_subexp_opencl, exp_descriptor_opencl):
+	Remove.
+	(class opencl_language) <expression_ops>: Remove.
+	* d-lang.c (class d_language) <expression_ops>: Remove.
+	* c-lang.h (evaluate_subexp_c, exp_descriptor_c): Don't declare.
+	* c-lang.c (evaluate_subexp_c, exp_descriptor_c): Remove.
+	(class c_language, class cplus_language, class asm_language)
+	(class minimal_language) <expression_ops>: Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (resolve_subexp, replace_operator_with_call)
+	(evaluate_subexp_type, assign_aggregate)
+	(aggregate_assign_positional, aggregate_assign_from_choices)
+	(aggregate_assign_others, ada_evaluate_subexp_for_cast)
+	(ada_evaluate_subexp, ADA_OPERATORS, ada_operator_length)
+	(ada_operator_check, ada_forward_operator_length)
+	(ada_dump_subexp_body, ada_print_subexp, ada_exp_descriptor):
+	Remove.
+	(post_parser): Update.
+	(class ada_language) <expresssion_ops>: Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* m2-lang.h (class m2_language) <expresssion_ops,
+	exp_descriptor_modula2>: Remove.
+	* m2-lang.c (evaluate_subexp_modula2)
+	(m2_language::exp_descriptor_modula2): Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.h (class f_language) <expresssion_ops>: Remove.
+	<exp_descriptor_tab>: Remove.
+	* f-lang.c (fortran_value_subarray, evaluate_subexp_f)
+	(operator_length_f, print_unop_subexp_f, print_binop_subexp_f)
+	(print_subexp_f, dump_subexp_body_f, operator_check_f)
+	(f_language::exp_descriptor_tab, fortran_prepare_argument):
+	Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.h (class rust_language) <expression_ops,
+	exp_descriptor_tab>: Remove.
+	* rust-lang.c (rust_evaluate_funcall): Remove.
+	(rust_range, rust_subscript, eval_op_rust_complement): Don't use
+	EVAL_SKIP.
+	(rust_evaluate_subexp): Remove.
+	(rust_aggregate_operation::evaluate): Don't use EVAL_SKIP.
+	(rust_operator_length, rust_dump_subexp_body, rust_print_subexp)
+	(rust_operator_check, rust_language::exp_descriptor_tab): Remove.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-exp.y: Create operations.
+	(empty_stoken): Remove.
+	(ada_pop, ada_wrap, ada_addrof, ada_un_wrap2, ada_wrap2)
+	(ada_wrap_op, ada_wrap3, ada_funcall): New functions.
+	(components): New global.
+	(push_component, choice_component, pop_component, pop_components):
+	New functions.
+	(associations): New global
+	(push_association, pop_association, pop_associations): New
+	functions.
+	(ada_parse): Update.
+	(write_var_from_sym, write_int): Create operations.
+	(write_exp_op_with_string): Remove.
+	(write_object_renaming, write_selectors, write_ambiguous_var)
+	(write_var_or_type, write_name_assoc): Create operations.
+	* ada-lang.h (ada_index_type): Declare.
+	* ada-lang.c (ada_index_type): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-exp.y: Create operations.
+	(f_language::parser): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* m2-exp.y: Create operations.
+	(m2_language::parser): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* p-exp.y: Create operations.
+	(pascal_language::parser): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* d-exp.y: Create operations.
+	(d_parse): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* go-exp.y: Create operations.
+	(go_language::parser): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* objc-lang.c (end_msglist): Create operations.
+	* c-exp.y: Change parser to create operations.
+	(write_destructor_name): Remove.
+	(c_parse): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-exp.y: Create operations.
+	(rust_parser::convert_params_to_expression): Change return type.
+	(binop_maker_ftype): New typedef.
+	(maker_map): New global.
+	(rust_parser::convert_ast_to_expression): Change return type.
+	(rust_language::parser): Update.
+	(_initialize_rust_exp): Initialize maker_map.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* stap-probe.c (binop_maker_ftype): New typedef.
+	(stap_maker_map): New global.
+	(stap_make_binop): New function.
+	(stap_parse_register_operand): Return operation_up.
+	(stap_parse_single_operand, stap_parse_argument_conditionally)
+	(stap_parse_argument_1): Likewise.
+	(stap_parse_argument): Create operations.
+	(stap_probe::parse_arguments): Update.
+	(_initialize_stap_probe): Initialize stap_maker_map.
+	* ppc-linux-tdep.c (ppc_stap_parse_special_token): Change return
+	type.
+	* i386-tdep.h (i386_stap_parse_special_token): Change return
+	type.
+	* i386-tdep.c (i386_stap_parse_special_token_triplet)
+	(i386_stap_parse_special_token_three_arg_disp)
+	(i386_stap_parse_special_token): Change return type.
+	* gdbarch.sh (stap_parse_special_token): Change return type.
+	* gdbarch.c: Rebuild.
+	* gdbarch.h: Rebuild.
+	* arm-linux-tdep.c (arm_stap_parse_special_token): Change return
+	type.
+	* aarch64-linux-tdep.c (aarch64_stap_parse_special_token): Change
+	return type.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* gdbarch.sh (dtrace_parse_probe_argument): Change return type.
+	* gdbarch.h: Rebuild.
+	* gdbarch.c: Rebuild.
+	* dtrace-probe.c (dtrace_probe::build_arg_exprs): Update.
+	* amd64-linux-tdep.c (amd64_dtrace_parse_probe_argument): Change
+	return type.
+	(amd64_dtrace_parse_probe_argument): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* parser-defs.h (struct parser_state) <push, push_new,
+	push_c_string, push_symbol, push_dollar, pop, pop_vector, wrap,
+	wrap2>: New methods.
+	<m_operations>: New member.
+	* parse.c (parser_state::push_c_string)
+	(parser_state::push_symbol, parser_state::push_dollar): New
+	methods.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* parser-defs.h (struct expr_completion_state) <expout_last_op>:
+	New member.
+	(struct parser_state) <mark_struct_expression>: New method.
+	* parse.c (parser_state::mark_struct_expression): Update assert.
+	(parser_state::mark_struct_expression): New method.
+	(parser_state::mark_completion_tag): Update assert.
+	(parse_expression_for_completion): Handle expout_last_op.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-exp.h (class ada_var_value_operation) <get_symbol>: Remove;
+	now in superclass.
+	* value.h (fetch_subexp_value): Add "op" parameter.
+	* value.c (init_if_undefined_command): Update.
+	* tracepoint.c (validate_actionline, encode_actions_1): Update.
+	* stap-probe.c (stap_probe::compile_to_ax): Update.
+	* printcmd.c (set_command): Update.
+	* ppc-linux-nat.c (ppc_linux_nat_target::check_condition):
+	Update.
+	* parser-defs.h (struct expr_builder) <set_operation>: New
+	method.
+	* parse.c (parse_exp_in_context, exp_uses_objfile): Update.
+	* expression.h (struct expression) <first_opcode>: Update.
+	<op>: New member.
+	* expprint.c (dump_raw_expression, dump_prefix_expression):
+	Update.
+	* expop.h (class var_value_operation) <get_symbol>: New method.
+	(class register_operation) <get_name>: New method.
+	(class equal_operation): No longer a typedef, now a subclass.
+	(class unop_memval_operation) <get_type>: New method.
+	(class assign_operation) <get_lhs>: New method.
+	(class unop_cast_operation) <get_type>: New method.
+	* eval.c (evaluate_expression, evaluate_type)
+	(evaluate_subexpression_type): Update.
+	(fetch_subexp_value): Add "op" parameter.
+	(parse_and_eval_type): Update.
+	* dtrace-probe.c (dtrace_probe::compile_to_ax): Update.
+	* breakpoint.c (update_watchpoint, watchpoint_check)
+	(watchpoint_exp_is_const, watch_command_1): Update.
+	* ax-gdb.c (gen_trace_for_expr, gen_eval_for_expr, gen_printf):
+	Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_value_binop): Do not use op_string.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expprint.c (dump_for_expression): New overload.
+	* expop.h (check_objfile, dump_for_expression): Declare new
+	overloads.
+	* ada-lang.c (check_objfile): New overload.
+	(assign_component, ada_aggregate_component::uses_objfile)
+	(ada_aggregate_component::dump, ada_aggregate_component::assign)
+	(ada_aggregate_component::assign_aggregate)
+	(ada_positional_component::uses_objfile)
+	(ada_positional_component::dump, ada_positional_component::assign)
+	(ada_discrete_range_association::uses_objfile)
+	(ada_discrete_range_association::dump)
+	(ada_discrete_range_association::assign)
+	(ada_name_association::uses_objfile, ada_name_association::dump)
+	(ada_name_association::assign)
+	(ada_choices_component::uses_objfile, ada_choices_component::dump)
+	(ada_choices_component::assign)
+	(ada_others_component::uses_objfile, ada_others_component::dump)
+	(ada_others_component::assign, ada_assign_operation::evaluate):
+	New methods.
+	* ada-exp.h (ada_string_operation) <get_name>: New method.
+	(class ada_assign_operation): New.
+	(class ada_component): New.
+	(ada_component_up): New typedef.
+	(class ada_aggregate_operation, class ada_aggregate_component)
+	(class ada_positional_component, class ada_others_component)
+	(class ada_association): New.
+	(ada_association_up): New typedef.
+	(class ada_choices_component)
+	(class ada_discrete_range_association)
+	(class ada_name_association): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_var_value_operation::resolve)
+	(ada_funcall_operation::resolve)
+	(ada_ternop_slice_operation::resolve): New methods.
+	* ada-exp.h (struct ada_resolvable): New.
+	(class ada_var_value_operation): Derive from ada_resolvable.
+	<get_block, resolve>: New methods.
+	(class ada_funcall_operation): Derive from ada_resolvable.
+	<resolve>: New method.
+	(class ada_ternop_slice_operation): Derive from ada_resolvable.
+	<resolve>: New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_funcall_operation::evaluate): New method.
+	* ada-exp.h (class ada_var_msym_value_operation) <get_symbol>: New
+	method.
+	(class ada_funcall_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_structop_operation::evaluate): New method.
+	* ada-exp.h (class ada_structop_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_unop_ind_operation::evaluate): New method.
+	* ada-exp.h (class ada_unop_ind_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_binop_exp): No longer static.
+	* ada-exp.h (ada_binop_exp_operation): New typedef.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_val_atr): No longer static.
+	(ada_atr_val_operation::evaluate): New method.
+	* ada-exp.h (class ada_atr_val_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_pos_atr): No longer static.
+	* ada-exp.h (ada_pos_operation): New typedef.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_pos_atr): Rename from value_pos_atr.  Change
+	parameters.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_binop_minmax): No longer static.
+	* ada-exp.h (ada_binop_min_operation, ada_binop_max_operation):
+	New typedefs.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_var_msym_value_operation::evaluate_for_cast):
+	New method.
+	* ada-exp.h (class ada_var_msym_value_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_var_value_operation::evaluate_for_cast)
+	(ada_var_value_operation::evaluate): New methods.
+	* ada-exp.h (class ada_var_value_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_unop_atr_operation::evaluate): New method.
+	* ada-exp.h (class ada_unop_atr_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_binop_in_bounds): No longer static.
+	* ada-exp.h (class ada_binop_in_bounds_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_ternop_slice): No longer static.
+	* ada-exp.h (class ada_ternop_slice_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-exp.h (ada_bitwise_operation): New template class.
+	(ada_bitwise_and_operation, ada_bitwise_ior_operation)
+	(ada_bitwise_xor_operation): New typedefs.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_equal_binop): No longer static.
+	* ada-exp.h (class ada_binop_equal_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_mult_binop): No longer static.
+	* ada-exp.h (ada_binop_mul_operation ada_binop_div_operation)
+	(ada_binop_rem_operation, ada_binop_mod_operation): New typedefs.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_binop_addsub_operation::evaluate): New method.
+	* ada-exp.h (class ada_binop_addsub_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.h (ada_find_operator_symbol, ada_resolve_funcall)
+	(ada_resolve_variable): Declare.
+	* ada-lang.c (ada_find_operator_symbol, ada_resolve_funcall)
+	(ada_resolve_variable): New functions.
+	(resolve_subexp): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* opencl-lang.c (opencl_ternop_cond_operation::evaluate): New
+	method.
+	* c-exp.h (class opencl_ternop_cond_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* opencl-lang.c (opencl_logical_binop_operation::evaluate): New
+	method.
+	* c-exp.h (class opencl_logical_binop_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* opencl-lang.c (opencl_structop_operation::evaluate): New
+	method.
+	* c-exp.h (class opencl_structop_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* opencl-lang.c (opencl_logical_not): No longer static.  Change
+	parameters.
+	(evaluate_subexp_opencl): Update.
+	* c-exp.h (opencl_notequal_operation): New typedef.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* opencl-lang.c (opencl_relop, eval_opencl_assign): No longer
+	static.  Change parameters.
+	(eval_opencl_assign): No longer static.  Add "op" parameter.
+	(evaluate_subexp_opencl): Update.
+	* c-exp.h (opencl_binop_operation): New template class.
+	(opencl_assign_operation, opencl_equal_operation)
+	(opencl_notequal_operation, opencl_less_operation)
+	(opencl_gtr_operation, opencl_geq_operation)
+	(opencl_leq_operation): New typedefs.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* opencl-lang.c (opencl_value_cast): No longer static.
+	* c-exp.h (opencl_cast_type_operation): New typedef.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-exp.h (eval_op_f_allocated): Declare.
+	(fortran_allocated_operation): New typedef.
+	* f-lang.c (eval_op_f_allocated): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_associated): New functions.
+	* f-exp.h (fortran_associated_1arg, fortran_associated_2arg): New
+	typedefs.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (fortran_bound_1arg::evaluate)
+	(fortran_bound_2arg::evaluate): New methods.
+	* f-exp.h (class fortran_bound_1arg, class fortran_bound_2arg):
+	New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class unop_addr_operation) <get_expression>: New
+	method.
+	* f-lang.c (fortran_undetermined::value_subarray)
+	(fortran_undetermined::evaluate): New methods.
+	(fortran_prepare_argument): New overload.
+	* f-exp.h (class fortran_range_operation)
+	(class fortran_undetermined): New classes.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_structop::evaluate_funcall): New method.
+	* rust-exp.h (class rust_structop) <evaluate_funcall>: Declare
+	method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expression.h (class operation) <evaluate_funcall>: New methods.
+	* expop.h (class scope_operation) <evaluate_funcall>: New method.
+	(class var_value_operation) <evaluate_funcall>: New method.
+	(class structop_base_operation) <evaluate_funcall>: New method.
+	(class var_msym_value_operation) <evaluate_funcall>: New method.
+	(class structop_member_base): New class.
+	(class structop_member_operation): Derive from
+	structop_member_base.
+	(class structop_mptr_operation): Derive from
+	structop_member_base.
+	(class funcall_operation): New class.
+	* eval.c (operation::evaluate_funcall)
+	(var_value_operation::evaluate_funcall)
+	(scope_operation::evaluate_funcall)
+	(structop_member_base::evaluate_funcall)
+	(structop_base_operation::evaluate_funcall): New methods.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class array_operation): New.
+	* eval.c (array_operation::evaluate_struct_tuple)
+	(array_operation::evaluate): New methods.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class adl_func_operation): New.
+	* eval.c (adl_func_operation::evaluate): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_unop_in_range): No longer static.
+	* ada-exp.h (class ada_unop_range_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_unop_neg, ada_atr_tag, ada_atr_size, ada_abs):
+	No longer static.
+	* ada-exp.h (ada_neg_operation, ada_atr_tag_operation)
+	(ada_atr_size_operation, ada_abs_operation): New typedefs.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class logical_and_operation)
+	(class logical_or_operation): New.
+	* eval.c (logical_and_operation::evaluate)
+	(logical_or_operation::evaluate): New methods.
+	* ax-gdb.c (logical_and_operation::do_generate_ax)
+	(logical_or_operation::do_generate_ax): New methods.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* m2-lang.c (eval_op_m2_high, eval_op_m2_subscript): No longer
+	static.
+	* m2-exp.h: New file.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_aggregate_operation::evaluate): New method.
+	* rust-exp.h (class rust_aggregate_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (eval_op_rust_struct_anon, eval_op_rust_structop):
+	No longer static.
+	* rust-exp.h (class rust_struct_anon): New.
+	(class rust_structop): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_range): No longer static.
+	* rust-exp.h (class rust_range_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_subscript): No longer static.
+	* rust-exp.h (class rust_subscript_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (eval_op_rust_ind): No longer static.  Add "opcode"
+	parameter.
+	(rust_evaluate_subexp): Update.
+	* rust-exp.h (class rust_unop_ind_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (eval_op_rust_complement, eval_op_rust_array): No
+	longer static.  Add "opcode" parameter.
+	(rust_evaluate_subexp): Update.
+	* rust-exp.h: New file.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_abs, eval_op_f_mod, eval_op_f_ceil)
+	(eval_op_f_floor, eval_op_f_modulo, eval_op_f_cmplx)
+	(eval_op_f_kind): No longer static.  Add "opcode" parameter.
+	(evaluate_subexp_f): Update.
+	* f-exp.h: New file.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_ternop_range_operation::evaluate): New method.
+	* ada-exp.h (class ada_ternop_range_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_qual_operation::evaluate): New method.
+	* ada-exp.h (class ada_qual_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_string_operation::evaluate): New method.
+	* ada-exp.h (class ada_string_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_wrapped_operation::evaluate): New method.
+	* ada-exp.h: New file.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class multi_subscript_operation): New.
+	* eval.c (multi_subscript_operation::evaluate): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (objc_msgcall_operation::evaluate): New method.
+	* c-exp.h (class objc_msgcall_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class var_value_operation): New.
+	* eval.c (var_value_operation::evaluate)
+	(var_value_operation::evaluate_for_address)
+	(var_value_operation::evaluate_with_coercion)
+	(var_value_operation::evaluate_for_sizeof)
+	(var_value_operation::evaluate_for_cast): New methods.
+	* ax-gdb.c (var_value_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (cxx_cast_ftype): New typedef.
+	(cxx_cast_operation): New template.
+	(dynamic_cast_operation, reinterpret_cast_operation): New
+	typedefs.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class unop_cast_type_operation): New.
+	* ax-gdb.c (unop_cast_type_operation::do_generate_ax): New
+	method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class unop_cast_operation): New.
+	* ax-gdb.c (unop_cast_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class assign_modify_operation): New.
+	* eval.c (eval_binop_assign_modify): No longer static.
+	* ax-gdb.c (assign_modify_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class assign_operation): New.
+	* ax-gdb.c (assign_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class type_instance_operation): New.
+	* eval.c (type_instance_operation::evaluate): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class op_this_operation): New.
+	* ax-gdb.c (op_this_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class unop_memval_operation)
+	(class unop_memval_type_operation): New.
+	* eval.c (eval_op_memval): No longer static.
+	(unop_memval_operation::evaluate_for_address)
+	(unop_memval_type_operation::evaluate_for_address)
+	(unop_memval_operation::evaluate_for_sizeof)
+	(unop_memval_type_operation::evaluate_for_sizeof): New methods.
+	* ax-gdb.c (unop_memval_operation::do_generate_ax)
+	(unop_memval_type_operation::do_generate_ax): New methods.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class unop_alignof_operation): New.
+	* eval.c (eval_op_alignof): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class unop_sizeof_operation): New.
+	* ax-gdb.c (unop_sizeof_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class unop_addr_operation): New.
+	* ax-gdb.c (gen_expr_unop) <case UNOP_ADDR>: New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class typeid_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class decltype_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class typeof_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class type_operation): New.
+	* eval.c (eval_op_type): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class unop_ind_base_operation)
+	(class unop_ind_operation): New.
+	* eval.c (eval_op_ind): No longer static.  Remove "op" parameter.
+	(unop_ind_base_operation::evaluate_for_address)
+	(unop_ind_base_operation::evaluate_for_sizeof): New method.
+	* ax-gdb.c (gen_expr_unop) <case UNOP_IND>: New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (unop_incr_operation): New template.
+	(preinc_operation, predec_operation, postinc_operation)
+	(postdec_operation): New typedefs.
+	* eval.c (eval_op_preinc, eval_op_predec, eval_op_postinc)
+	(eval_op_postdec): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (unary_ftype): New typedef.
+	(unop_operation, usual_ax_binop_operation): New templates.
+	(unary_plus_operation, unary_neg_operation)
+	(unary_complement_operation, unary_logical_not_operation): New
+	typedefs.
+	* eval.c (eval_op_plus, eval_op_neg, eval_op_complement)
+	(eval_op_lognot): No longer static.
+	* ax-gdb.c (gen_expr_unop): New function.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ax-gdb.c (comma_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class repeat_operation): New.
+	* eval.c (eval_op_repeat): No longer static.  Remove "op"
+	parameter.
+	(evaluate_subexp_standard): Update.
+	* ax-gdb.c (repeat_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class comparison_operation): New.
+	(equal_operation, notequal_operation, less_operation)
+	(gtr_operation, geq_operation, leq_operation): New typedefs.
+	* eval.c (eval_op_equal, eval_op_notequal, eval_op_less)
+	(eval_op_gtr, eval_op_geq, eval_op_leq): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class subscript_operation): New.
+	* eval.c (eval_op_subscript): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class binop_operation, class usual_ax_binop_operation):
+	New.
+	(exp_operation, intdiv_operation, mod_operation, mul_operation)
+	(div_operation, rem_operation, lsh_operation, rsh_operation)
+	(bitwise_and_operation, bitwise_ior_operation)
+	(bitwise_xor_operation): New typedefs.
+	* eval.c (eval_op_binary): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class sub_operation): New.
+	* eval.c (eval_op_sub): No longer static.  Remove "op" parameter.
+	(evaluate_subexp_standard): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class add_operation): New.
+	* eval.c (eval_op_add): No longer static.  Remove "op" parameter.
+	(evaluate_subexp_standard): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class concat_operation): New.
+	* eval.c (eval_op_concat): No longer static.  Remove "op"
+	parameter.
+	(evaluate_subexp_standard): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class structop_member_operation)
+	(class structop_mptr_operation): New.
+	* eval.c (eval_op_member): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class structop_ptr_operation): New.
+	* eval.c (eval_op_structop_ptr): No longer static.  Remove "op"
+	parameter.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class structop_base_operation)
+	(class structop_operation): New.
+	* eval.c (eval_op_structop_struct): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class complex_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_objc_selector): No longer static.
+	* c-exp.h (class objc_selector_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c: Include c-exp.h.
+	* c-exp.h (class objc_nsstring_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* c-lang.c (c_string_operation::evaluate): New method.
+	* c-exp.h: New file.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class ternop_cond_operation): New.
+	* ax-gdb.c (ternop_cond_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class ternop_slice_operation): New.
+	* eval.c (eval_op_ternop): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class string_operation): New.
+	* eval.c (eval_op_string): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class internalvar_operation): New.
+	* ax-gdb.c (internalvar_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class bool_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class register_operation): New.
+	* eval.c (eval_op_register): No longer static.
+	* ax-gdb.c (register_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class last_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class func_static_var_operation): New.
+	* eval.c (eval_op_func_static_var): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class var_entry_value_operation): New.
+	* eval.c (eval_op_var_entry_value): No longer static.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expression.h (class operation) <set_outermost>: New method.
+	* expop.h (class var_msym_value_operation): New.
+	* eval.c (eval_op_var_msym_value): No longer static.
+	(var_msym_value_operation::evaluate_for_address)
+	(var_msym_value_operation::evaluate_for_sizeof)
+	(var_msym_value_operation::evaluate_for_cast): New methods.
+	* ax-gdb.c (var_msym_value_operation::do_generate_ax): New
+	method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class long_const_operation): New.
+	* ax-gdb.c (long_const_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (class scope_operation): New.
+	* eval.c (eval_op_scope): No longer static.
+	(scope_operation::evaluate_for_address): New method.
+	* ax-gdb.c (scope_operation::do_generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expprint.c (float_const_operation::dump): New method.
+	* expop.h (float_data): New typedef.
+	(class float_const_operation): New.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expop.h (gen_expr_binop, gen_expr_structop): Declare.
+	* ax-gdb.c (gen_expr_binop): New function.
+	(gen_expr_structop): Likewise.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expprint.c (expr::dump_for_expression): New functions.
+	* expop.h (dump_for_expression): New overloads.
+	(tuple_holding_operation::dump, tuple_holding_operation::do_dump):
+	Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* expression.h (expr::operation): New class.
+	(expr::make_operation): New function.
+	(expr::operation_up): New typedef.
+	* expop.h: New file.
+	* eval.c (operation::evaluate_for_cast)
+	(operation::evaluate_for_address, operation::evaluate_for_sizeof):
+	New methods.
+	* ax-gdb.c (operation::generate_ax): New method.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ax-gdb.c (gen_expr_binop_rest): Remove "pc" parameter.
+	(gen_expr_binop_rest): New overload.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_multi_subscript): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_binop_exp): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_val_atr): Rename from value_val_atr.  Change
+	parameters.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_binop_minmax): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_unop_atr): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_binop_in_bounds): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_ternop_slice): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_equal_binop): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_mult_binop): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_abs): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_atr_size): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_atr_tag): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_unop_in_range): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (ada_unop_neg): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* ada-lang.c (eval_ternop_in_range): New function.
+	(ada_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* opencl-lang.c (eval_opencl_assign): New function.
+	(evaluate_subexp_opencl): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_objc_msgcall): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_binop_assign_modify): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* m2-lang.c (eval_op_m2_subscript): New function.
+	(evaluate_subexp_modula2): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* m2-lang.c (eval_op_m2_high): New function.
+	(evaluate_subexp_modula2): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (evaluate_subexp_for_address_base): New function.
+	(evaluate_subexp_for_address): Use it.
+	(evaluate_subexp_for_sizeof_base): New function.
+	(evaluate_subexp_for_sizeof): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (eval_op_rust_structop): New function.
+	(rust_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (eval_op_rust_struct_anon): New function.
+	(rust_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (eval_op_rust_array): New function.
+	(rust_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (eval_op_rust_complement): New function.
+	(rust_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (eval_op_rust_ind): New function.
+	(rust_evaluate_subexp): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_subscript): Change parameters.
+	(rust_evaluate_subexp): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* rust-lang.c (rust_range): Change parameters.
+	(rust_evaluate_subexp): Update.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_allocated): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (fortran_require_array): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_kind): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_cmplx): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_modulo): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_floor): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_ceil): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_mod): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* f-lang.c (eval_op_f_abs): New function.
+	(evaluate_subexp_f): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_type): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_postdec): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_postinc): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_predec): New file.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_preinc): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_memval): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_alignof): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_ind): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_lognot): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_complement): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_neg): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_plus): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_repeat): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_leq): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_geq): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_gtr): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_less): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_notequal): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_equal): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_subscript): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_binary): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_sub): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_add): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_member): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_structop_ptr): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_structop_struct): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_ternop): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_concat): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_objc_selector): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_string): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_register): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_func_static_var): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_var_msym_value): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_var_entry_value): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+	* eval.c (eval_op_scope): New function.
+	(evaluate_subexp_standard): Use it.
+
+2021-03-06  Chernov Sergey  <klen_s@mail.ru>
+
+	PR gdb/27528:
+	* ada-lang.c (ada_fold_name): Use gdb::to_string.
+
+2021-03-06  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/sect-names.h (dwarf2_elf_names): Declare.
+	* dwarf2/read.h (dwarf2_get_dwz_file): Move to dwz.h.
+	* dwarf2/read.c (dwarf2_elf_names): No longer static.
+	(locate_dwz_sections, dwz_search_other_debugdirs)
+	(dwarf2_get_dwz_file): Move to dwz.c.
+	* dwarf2/dwz.h (dwarf2_get_dwz_file): Move declaration from
+	read.h.
+	* dwarf2/dwz.c (locate_dwz_sections, dwz_search_other_debugdirs)
+	(dwarf2_get_dwz_file): Move from read.c.
+
+2021-03-06  Tom Tromey  <tom@tromey.com>
+
+	* debuginfod-support.h: Include scoped_fd.h.
+
+2021-03-06  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.h (dwarf2_get_dwz_file): Add 'require' parameter.
+	* dwarf2/read.c (dwarf2_get_dwz_file): Add 'require' parameter.
+	(get_abbrev_section_for_cu, read_attribute_value)
+	(get_debug_line_section): Update.
+	* dwarf2/macro.c (dwarf_decode_macro_bytes): Update.
+
+2021-03-06  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/sect-names.h (struct dwarf2_section_names) <matches>: New
+	method.
+	* dwarf2/read.c (section_is_p): Remove.
+	(dwarf2_per_bfd::locate_sections)
+	(dwarf2_per_bfd::locate_sections, locate_dwz_sections)
+	(locate_v1_virtual_dwo_sections, dwarf2_locate_dwo_sections)
+	(dwarf2_locate_common_dwp_sections)
+	(dwarf2_locate_v2_dwp_sections, dwarf2_locate_v5_dwp_sections):
+	Update.
+
+2021-03-06  Tom Tromey  <tom@tromey.com>
+
+	* xcoffread.c: Include sect-names.h.
+	* symfile.h (struct dwarf2_section_names, struct
+	dwarf2_debug_sections): Move to dwarf2/sect-names.h.
+	* dwarf2/sect-names.h: New file, from symfile.h.
+	* dwarf2/read.c: Include sect-names.h.
+
+2021-03-06  Tom Tromey  <tom@tromey.com>
+
+	* dwarf2/read.c (read_attribute): Make 'abbrev' const.
+	* dwarf2/abbrev.c (abbrev_table::alloc_abbrev): Remove.
+	(abbrev_table::read): Update.
+	* dwarf2/abbrev.h (struct attr_abbrev): Move earlier.
+	(struct abbrev_info): Reformat.
+	<attrs>: Now an array.
+	(struct abbrev_table) <alloc_abbrev>: Remove.
+
+2021-03-06  Weimin Pan  <weimin.pan@oracle.com>
+
+	* ctfread.c (ctf_psymtab_add_enums): New function.
+	(ctf_psymtab_type_cb): call ctf_psymtab_add_enums.
+
+2021-03-06  Weimin Pan  <weimin.pan@oracle.com>
+
+	* ctfread.c (read_func_kind_type): Set up function arguments.
+
+2021-03-05  Craig Blackmore  <craig.blackmore@embecosm.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-none-tdep.c: Add 'user-regs.h' and 'target-description.h'
+	includes.
+	(riscv_csrset): New static global.
+	(riscv_update_csrmap): New function.
+	(riscv_iterate_over_regset_sections): Process CSRs.
+
+2021-03-05  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_feature_name_csr): Define.
+	(riscv_feature_name_cpu): Define.
+	(riscv_feature_name_fpu): Define.
+	(riscv_feature_name_virtual): Define.
+	(riscv_xreg_feature): Use riscv_feature_name_cpu.
+	(riscv_freg_feature): Use riscv_feature_name_fpu.
+	(riscv_virtual_feature): Use riscv_feature_name_virtual.
+	(riscv_csr_feature): Use riscv_feature_name_csr.
+	* riscv-tdep.h (riscv_feature_name_csr): Declare.
+
+2021-03-05  Andrew Burgess  <andrew.burgess@embecosm.com>
+	    Craig Blackmore  <craig.blackmore@embecosm.com>
+
+	* Makefile.in (ALL_TARGET_OBS): Add riscv-none-tdep.o.
+	(ALLDEPFILES): Add riscv-none-tdep.c.
+	* configure: Regenerate.
+	* configure.ac (CONFIG_OBS): Add elf-none-tdep.o when BFD has ELF
+	support.
+	* configure.tgt (riscv*-*-*): Include riscv-none-tdep.c.
+	* elf-none-tdep.c: New file.
+	* elf-none-tdep.h: New file.
+	* riscv-none-tdep.c: New file.
+
+2021-03-05  Craig Blackmore  <craig.blackmore@embecosm.com>
+	    Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* corelow.c: Add 'xml-tdesc.h' include.
+	(core_target::read_description): Load the target description from
+	the core file when possible.
+	* fbsd-tdep.c (fbsd_make_corefile_notes): Add target description
+	note.
+	* gcore-elf.c: Add 'gdbsupport/tdesc.h' include.
+	(gcore_elf_make_tdesc_note): New function.
+	* gcore-elf.h (gcore_elf_make_tdesc_note): Declare.
+	* linux-tdep.c (linux_make_corefile_notes): Add target description
+	note.
+
+2021-03-05  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in (SFILES): Add gcore-elf.c.
+	(HFILES_NO_SRCDIR): Add gcore-elf.h
+	* configure: Regenerate.
+	* configure.ac: Add gcore-elf.o to CONFIG_OBS if we have ELF
+	support.
+	* fbsd-tdep.c: Add 'gcore-elf.h' include.
+	(struct fbsd_collect_regset_section_cb_data): Delete.
+	(fbsd_collect_regset_section_cb): Delete.
+	(fbsd_collect_thread_registers): Delete.
+	(struct fbsd_corefile_thread_data): Delete.
+	(fbsd_corefile_thread): Delete.
+	(fbsd_make_corefile_notes): Call
+	gcore_elf_build_thread_register_notes instead of the now deleted
+	FreeBSD code.
+	* gcore-elf.c: New file, the content was moved here from
+	linux-tdep.c, functions were renamed and given minor cleanup.
+	* gcore-elf.h: New file.
+	* gcore.c (gcore_find_signalled_thread): Moved here from
+	linux-tdep.c and given a new name.  Minor cleanups.
+	* gcore.h (gcore_find_signalled_thread): Declare.
+	* linux-tdep.c: Add 'gcore.h' and 'gcore-elf.h' includes.
+	(struct linux_collect_regset_section_cb_data): Delete.
+	(linux_collect_regset_section_cb): Delete.
+	(linux_collect_thread_registers): Delete.
+	(linux_corefile_thread): Call
+	gcore_elf_build_thread_register_notes.
+	(find_signalled_thread): Delete.
+	(linux_make_corefile_notes): Call gcore_find_signalled_thread.
+
+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.
+
+2021-03-04  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (struct match_data) <found_sym>: Now bool.
+	(aux_add_nonlocal_symbols): Update.
+	(ada_add_block_symbols): Change "found_sym" to bool.
+
+2021-03-03  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_resolve_function): Update comment.
+	(is_nonfunction, add_symbols_from_enclosing_procs)
+	(remove_extra_symbols): Likewise.
+	(struct match_data): Add constructor, initializers.
+	(add_nonlocal_symbols): Remove memset.
+	(aux_add_nonlocal_symbols): Update comment.
+	(ada_add_block_renamings, add_nonlocal_symbols)
+	(ada_add_all_symbols): Likewise.
+	* ada-exp.y (write_var_or_type): Clean up trailing whitespace.
+
+2021-03-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (cast_from_gnat_encoded_fixed_point_type)
+	(cast_to_gnat_encoded_fixed_point_type): Remove.
+	(ada_value_cast, ada_evaluate_subexp): Update.
+	(gnat_encoded_fixed_point_type_info)
+	(ada_is_gnat_encoded_fixed_point_type)
+	(gnat_encoded_fixed_point_delta)
+	(gnat_encoded_fixed_point_scaling_factor): Remove.
+	* ada-lang.h (ada_is_gnat_encoded_fixed_point_type)
+	(gnat_encoded_fixed_point_delta)
+	(gnat_encoded_fixed_point_scaling_factor): Don't declare.
+	* ada-typeprint.c (print_gnat_encoded_fixed_point_type): Remove.
+	(ada_print_type): Update.
+	* ada-valprint.c (ada_value_print_num): Update.
+	* dwarf2/read.c (ada_get_gnat_encoded_number)
+	(ada_get_gnat_encoded_ratio): New functions.
+	(finish_fixed_point_type): Use them.  Add parameters.
+	(GNAT_FIXED_POINT_SUFFIX): New define.
+	(gnat_encoded_fixed_point_type_info): New function.
+	(read_base_type): Handle gnat encodings.
+
+2021-03-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_fold_name, ada_variant_discrim_name)
+	(ada_enum_name, scan_discrim_bound, to_fixed_range_type): Use
+	std::string.
+	(GROW_VECT): Remove.
+	(grow_vect): Remove.
+
+2021-03-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.h (ada_lookup_symbol_list): Return a vector.
+	* ada-lang.c (resolve_subexp): Update.
+	(ada_resolve_function): Accept a vector.
+	(is_nonfunction, add_defn_to_vec)
+	(add_symbols_from_enclosing_procs): Likewise.
+	(num_defns_collected, defns_collected): Remove.
+	(remove_extra_symbols): Return a vector.
+	(remove_irrelevant_renamings): Return void.
+	(ada_add_local_symbols): Accept a vector.
+	(struct match_data) <obstackp>: Remove.
+	<resultp>: New member.
+	(aux_add_nonlocal_symbols): Update.
+	(ada_add_block_renamings, add_nonlocal_symbols)
+	(ada_add_all_symbols): Accept a vector.
+	(ada_lookup_symbol_list_worker, ada_lookup_symbol_list): Return a
+	vector.
+	(ada_lookup_symbol): Update.
+	(ada_add_block_symbols): Accept a vector.
+	(get_var_value, iterate_over_symbols): Update.
+	* ada-exp.y (block_lookup, write_var_or_type, write_name_assoc):
+	Update.
+
+2021-03-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (resolve_subexp): Use any_of and erase-remove idiom.
+
+2021-03-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (struct ada_symbol_cache) <cache_space>: Now an
+	auto_obstack.
+	<root>: Initialize.
+	(ada_pspace_data): Remove destructor.
+	<sym_cache>: Now a unique_ptr.
+	(ada_init_symbol_cache, ada_free_symbol_cache): Remove.
+	(ada_get_symbol_cache): Use 'new'.
+	(ada_clear_symbol_cache): Rewrite.
+
+2021-03-02  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (add_nonlocal_symbols): Handle case where objfile->sf
+	is null.
+
+2021-02-27  Lancelot Six  <lsix@lancelotsix.com>
+
+	PR gdb/27393
+	* source.c (add_path): Skip empty dirnames.
+
+2021-02-25  Kevin Buettner  <kevinb@redhat.com>
+
+	* nat/aarch64-sve-linux-ptrace.h: Add comment regarding
+	include order for <sys/ptrace.h> and <asm/ptrace.h>.
+
+2021-02-25  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/26861
+	* target.c (target_mourn_inferior): Only compare pids in
+	target_mourn_inferior.
+
+2021-02-25  Jan Matyas  <jmatyas@codasip.com>
+
+	PR gdb/26819
+	* remote.c (remote_target::start_remote): Ensure the single
+	thread, automatically added for remote targets without the
+	concept of threading, is initially in set to the "resumed"
+	state.
+	* remote.c (remote_target::add_current_inferior_and_thread):
+	Add return value - return the main thread.
+
+2021-02-25  Jan Vrany  <jan.vrany@labware.com>
+
+	* gdb/mi/mi-interp.c (mi_traceframe_changed): Remove trailing \n from output.
+	(mi_tsv_created): Likewise.
+	(mi_tsv_deleted): Likewise.
+
+2021-02-25  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27354
+	* dwarf2/read.c (open_and_init_dwo_file): Use rcuh_kind::COMPILE as
+	section_kind for &dwo_file->sections.info.
+
+2021-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR fortran/26155
+	* f-lang.c (fortran_argument_convert): Delete declaration.
+	(fortran_prepare_argument): New function.
+	(evaluate_subexp_f): Move logic to new function
+	fortran_prepare_argument.
+
+2021-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (f77_keywords): Add 'associated'.
+	* f-lang.c (fortran_associated): New function.
+	(evaluate_subexp_f): Handle FORTRAN_ASSOCIATED.
+	(operator_length_f): Likewise.
+	(print_unop_or_binop_subexp_f): New function.
+	(print_subexp_f): Make use of print_unop_or_binop_subexp_f for
+	FORTRAN_ASSOCIATED, FORTRAN_LBOUND, and FORTRAN_UBOUND.
+	(dump_subexp_body_f): Handle FORTRAN_ASSOCIATED.
+	(operator_check_f): Likewise.
+	* std-operator.def: Add FORTRAN_ASSOCIATED.
+
+2021-02-25  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (fortran_operators): Add ".xor.".
+
+2021-02-24  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27336
+	* dwarf2/attribute.c (attribute::form_is_signed): New function
+	factored out of ...
+	* dwarf2/attribute.h (attribute::as_signed): ... here.
+	(attribute::is_nonnegative, attribute::as_nonnegative): New function.
+	(attribute::form_is_signed): Declare.
+	* dwarf2/read.c (new_symbol): Use is_nonnegative and as_nonnegative
+	for DW_AT_decl_file.
+
+2021-02-24  Kevin Buettner  <kevinb@redhat.com>
+
+	* nat/aarch64-linux-hw-point.c: Add comment regarding include
+	order for <sys/ptrace.h> and <asm/ptrace.h>.
+
+2021-02-24  Kevin Buettner  <kevinb@redhat.com>
+
+	* nat/aarch64-linux-hw-point.c: Include <asm/ptrace.h> after
+	<sys/ptrace.h>.
+
+2021-02-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* exec.c (set_section_command): Move variable declarations into
+	the function body, and use std::string instead of a fixed size
+	buffer.
+
+2021-02-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* exec.c (exec_target::get_section_table): Delete member function.
+	(section_table_read_available_memory): Use current_top_target, not
+	just the exec_ops target.
+	* target-delegates.c: Regenerate.
+	* target.c (default_get_section_table): New function.
+	* target.h (target_ops::get_section_table): Change default
+	behaviour to call default_get_section_table.
+	(default_get_section_table): Declare.
+
+2021-02-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* exec.c (exec_target::close): Call new clear_target_sections
+	function.
+	(program_space::add_target_sections): Update name of member
+	variable.
+	(program_space::add_target_sections): Update name of member
+	variable.
+	(program_space::remove_target_sections): Likewise.
+	(exec_one_fork): Use new target_sections member function.
+	(exec_target::get_section_table): Likewise.
+	(exec_target::files_info): Likewise.
+	(set_section_command): Likewise.
+	(exec_set_section_address): Likewise.
+	(exec_target::has_memory): Use new target_sections member
+	function.
+	* progspace.h (program_space::clear_target_sections): New member
+	function.
+	(program_space::target_sections): Rename member variable to
+	m_target_sections, replace with a new member function.
+	(program_space::m_target_sections): New member variable.
+	* solib-dsbt.c (scan_dyntag): Use new member function.
+	* solib-svr4.c (scan_dyntag): Likewise.
+
+2021-02-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdb/bfd-target.c (class target_bfd) <get_section_table>: Make
+	return type const.
+	* gdb/exec.c (struct exec_target) <get_section_table>: Likewise.
+	(section_table_read_available_memory): Make local const.
+	(exec_target::xfer_partial): Make local const.
+	(print_section_info): Make parameter const.
+	* gdb/exec.h (print_section_info): Likewise.
+	* gdb/ppc64-tdep.c (ppc64_convert_from_func_ptr_addr): Make local
+	const.
+	* gdb/record-btrace.c (record_btrace_target::xfer_partial):
+	Likewise.
+	* gdb/remote.c (remote_target::remote_xfer_live_readonly_partial):
+	Likewise.
+	* gdb/s390-tdep.c (s390_load): Likewise.
+	* gdb/solib-dsbt.c (scan_dyntag): Likewise.
+	* gdb/solib-svr4.c (scan_dyntag): Likewise.
+	* gdb/target-debug.h (target_debug_print_target_section_table_p):
+	Rename to...
+	(target_debug_print_const_target_section_table_p): ...this.
+	* gdb/target-delegates.c: Regenerate.
+	* gdb/target.c (target_get_section_table): Make return type const.
+	(target_section_by_addr): Likewise.  Also make some locals const.
+	(memory_xfer_partial_1): Make some locals const.
+	* gdb/target.h (struct target_ops) <get_section_table>: Make
+	return type const.
+	(target_section_by_addr): Likewise.
+	(target_get_section_table): Likewise.
+
+2021-02-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention new 'maint info target-sections' command.
+	* maint.c (maintenance_info_target_sections): New function.
+	(_initialize_maint_cmds): Register new command.
+
+2021-02-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-tdep.c (riscv_features_from_gdbarch_info): Rename to...
+	(riscv_features_from_bfd): ...this.  Change parameter type to
+	'bfd*', and update as required.
+	(riscv_find_default_target_description): Update call to
+	riscv_features_from_bfd.  Select a default xlen based on
+	info.bfd_arch_info.
+	(riscv_gdbarch_init): Update call to riscv_features_from_bfd.
+
+2021-02-24  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* eval.c (evaluate_subexp_standard): Call value_ind for points to
+	dynamic types in UNOP_IND.
+
+2021-02-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	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.
+
+2021-02-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	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.
+
+2021-02-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* linux-nat.c (linux_nat_filter_event): Return void.
+
+2021-02-22  Tom Tromey  <tromey@adacore.com>
+
+	* solib-svr4.c (enable_break): Update.
+	* bfd-target.c (class target_bfd) <target_bfd>: Change parameter
+	type.
+	(target_bfd_reopen): Change parameter type.
+	* bfd-target.h (target_bfd_reopen): Change parameter type.
+
+2021-02-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* thread.c (add_thread_silent): Add assert.
+	(find_thread_ptid): Add assert.
+
+2021-02-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	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.
+
+2021-02-19  Kevin Buettner  <kevinb@redhat.com>
+
+	* nat/amd64-linux-siginfo.c: Include "gdbsupport/common-defs.h"
+	(which in turn includes <gnulib/config.h>) before include
+	of <signal.h>.
+
+2021-02-19  Nelson Chu  <nelson.chu@sifive.com>
+
+	PR 27158
+	* riscv-tdep.c (decode_ci_type_insn): Updated encoding macros.
+	(decode_j_type_insn): Likewise.
+	(decode_cj_type_insn): Likewise.
+	(decode_b_type_insn): Likewise.
+	(decode): Likewise.
+
+2021-02-18  Tom Tromey  <tom@tromey.com>
+
+	* expression.h (struct expression) <evaluate>: Declare method.
+	* eval.c (evaluate_subexp): Simplify.
+	(expression::evaluate): New method.
+	(evaluate_expression, evaluate_type): Use expression::evaluate.
+
+2021-02-17  Kevin Buettner  <kevinb@redhat.com>
+
+	* ada-lang.c (ada_fold_name): Check for non-empty string prior
+	to accessing it.
+	(ada_lookup_name_info): Likewise.
+
+2021-02-13  Mike Frysinger  <vapier@gentoo.org>
+
+	* aclocal.m4: Regenerate.
+
+2021-02-12  Tom de Vries  <tdevries@suse.de>
+
+	PR threads/26228
+	* linux-nat.c (lin_thread_get_thread_signals): Remove.
+	(lin_thread_signals): New static var.
+	(lin_thread_get_thread_signal_num, lin_thread_get_thread_signal):
+	New function.
+	* linux-nat.h (lin_thread_get_thread_signals): Remove.
+	(lin_thread_get_thread_signal_num, lin_thread_get_thread_signal):
+	Declare.
+	* linux-thread-db.c (check_thread_signals): Use
+	lin_thread_get_thread_signal_num and lin_thread_get_thread_signal.
+
+2021-02-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (f77_keywords): Add allocated.
+	* f-lang.c (evaluate_subexp_f): Handle UNOP_FORTRAN_ALLOCATED.
+	(operator_length_f): Likewise.
+	(print_subexp_f): Likewise.
+	(dump_subexp_body_f): Likewise.
+	(operator_check_f): Likewise.
+	* std-operator.def (UNOP_FORTRAN_ALLOCATED): New operator.
+
+2021-02-11  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27353
+	* dwarf2/attribute.c (attribute::form_requires_reprocessing):
+	Return true for DW_FORM_strx.
+
+2021-02-11  Tom Tromey  <tromey@adacore.com>
+
+	PR gdb/27383:
+	* parse.c (write_exp_symbol_reference): Write sym.block.
+
+2021-02-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* NEWS: Mention changes to 'maint info sections'.
+	* maint.c (match_substring): Return a bool, fix whitespace issue.
+	(struct single_bfd_flag_info): New struct.
+	(bfd_flag_info): New static global.
+	(match_bfd_flags): Return a bool, use bfd_flag_info.
+	(print_bfd_flags): Use bfd_flag_info.
+	(maint_print_section_info): Delete trailing whitespace.
+	(struct maint_info_sections_opts): New struct.
+	(maint_info_sections_option_defs): New static global.
+	(maint_info_sections_completer): New function.
+	(maintenance_info_sections): Use option parsing mechanism.
+	(_initialize_maint_cmds): Update command help text for 'maint info
+	sections' and register a command completer.
+
+2021-02-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* maint.c (print_bfd_section_info_maybe_relocated): Delete,
+	functionality merged into...
+	(maint_print_all_sections): ...this new function.
+	(maintenance_info_sections): Make use of maint_print_all_sections,
+	allow all objects to be printed even where there's no executable.
+
+2021-02-11  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* breakpoint.c (resolve_sal_pc): Make use of
+	bound_minimal_symbol::obj_section.
+	* maint.c (maintenance_translate_address): Likewise.
+	* minsyms.c (minimal_symbol_upper_bound): Likewise.
+	* minsyms.h (struct bound_minimal_symbol) <obj_section>: New
+	member function.
+	* printcmd.c (info_address_command): Make use of
+	bound_minimal_symbol::obj_section.
+
+2021-02-11  Alan Modra  <amodra@gmail.com>
+
+	* arm-symbian-tdep.c: Delete.
+	* NEWS: Mention arm-symbian removal.
+	* Makefile.in: Remove arm-symbian-tdep entries.
+	* configure.tgt: Remove arm*-*-symbianelf*.
+	* doc/gdb.texinfo: Remove mention of SymbianOS.
+	* osabi.c (gdb_osabi_names): Remove "Symbian".
+	* osabi.h (enum gdb_osabi): Remove GDB_OSABI_SYMBIAN.
+	* testsuite/gdb.base/ending-run.exp: Remove E32Main handling.
+	* testsuite/gdb.ada/catch_ex_std.exp: Remove arm*-*-symbianelf*
+	handling.
+	* testsuite/gdb.base/dup-sect.exp: Likewise.
+	* testsuite/gdb.base/long_long.exp: Likewise.
+	* testsuite/gdb.base/solib-weak.exp: Likewise.
+	* testsuite/gdb.guile/scm-section-script.exp: Likewise.
+	* testsuite/gdb.python/py-section-script.exp: Likewise.
+	* testsuite/lib/dwarf.exp: Likewise.
+	* testsuite/lib/gdb.exp: Likewise.
+
+2021-02-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (UNOP_OR_BINOP_INTRINSIC): New token.
+	(exp): New pattern using UNOP_OR_BINOP_INTRINSIC.
+	(one_or_two_args): New pattern.
+	(f77_keywords): Add lbound and ubound.
+	* f-lang.c (fortran_bounds_all_dims): New function.
+	(fortran_bounds_for_dimension): New function.
+	(evaluate_subexp_f): Handle FORTRAN_LBOUND and FORTRAN_UBOUND.
+	(operator_length_f): Likewise.
+	(print_subexp_f): Likewise.
+	(dump_subexp_body_f): Likewise.
+	(operator_check_f): Likewise.
+	* std-operator.def (FORTRAN_LBOUND): Define.
+	(FORTRAN_UBOUND): Define.
+
+2021-02-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* coff-pe-read.c (add_pe_forwarded_sym): Make use of section_index
+	and set_section_index member functions where appropriate.
+	* coffread.c (coff_symtab_read): Likewise.
+	(process_coff_symbol): Likewise.
+	* ctfread.c (set_symbol_address): Likewise.
+	* dwarf2/read.c (add_partial_symbol): Likewise.
+	(var_decode_location): Likewise.
+	* language.c: Likewise.
+	* minsyms.c (minimal_symbol_reader::record_full): Likewise.
+	(compact_minimal_symbols): Likewise.
+	(minimal_symbol_upper_bound): Likewise.
+	* objfiles.c (relocate_one_symbol): Likewise.
+	* psympriv.h (partial_symbol::obj_section): Likewise.
+	(partial_symbol::address): Likewise.
+	* psymtab.c (partial_symtab::add_psymbol): Likewise.
+	* stabsread.c (scan_file_globals): Likewise.
+	* symmisc.c (dump_msymbols): Likewise.
+	* symtab.c (general_symbol_info::obj_section): Likewise.
+	(fixup_section): Likewise.
+	(get_msymbol_address): Likewise.
+	* symtab.h (general_symbol_info::section): Rename to...
+	(general_symbol_info::m_section): ...this.
+	(general_symbol_info::set_section_index): New member function.
+	(general_symbol_info::section_index): Likewise.
+	(SYMBOL_SECTION): Delete.
+	(MSYMBOL_VALUE_ADDRESS): Make use of section_index and
+	set_section_index member functions where appropriate.
+	(MSYMBOL_SECTION): Delete.
+	(symbol::symbol): Update to initialize 'm_section'.
+	* xcoffread.c (read_xcoff_symtab): Make use of set_section_index.
+	(process_xcoff_symbol): Likewise.
+
+2021-02-10  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* breakpoint.c (resolve_sal_pc): Replace SYMBOL_OBJ_SECTION and
+	MSYMBOL_OBJ_SECTION.
+	* findvar.c (language_defn::read_var_value): Likewise.
+	* infcmd.c (jump_command): Likewise.
+	* linespec.c (minsym_found): Likewise.
+	* maint.c (maintenance_translate_address): Likewise.
+	* minsyms.c (lookup_minimal_symbol_by_pc_section): Likewise.
+	(minimal_symbol_upper_bound): Likewise.
+	* parse.c (find_minsym_type_and_address): Likewise.
+	(operator_check_standard): Likewise.
+	* printcmd.c (info_address_command): Likewise.
+	* symmisc.c (dump_msymbols): Likewise.
+	(print_symbol): Likewise.
+	* symtab.c (general_symbol_info::obj_section): Define new
+	function.
+	(fixup_symbol_section): Replace SYMBOL_OBJ_SECTION.
+	(find_pc_sect_compunit_symtab): Likewise.
+	(find_function_start_sal): Likewise.
+	(skip_prologue_sal): Replace SYMBOL_OBJ_SECTION and
+	MSYMBOL_OBJ_SECTION.
+	* symtab.h (struct general_symbol_info) <obj_section>: Declare new
+	function.
+	(SYMBOL_OBJ_SECTION): Delete.
+	(MSYMBOL_OBJ_SECTION): Delete.
+
+2021-02-09  Tom Tromey  <tom@tromey.com>
+
+	* stap-probe.c (stap_parse_argument_conditionally): Fix typo.
+
+2021-02-09  Tom de Vries  <tdevries@suse.de>
+
+	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-02-09  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gcore.c (struct gcore_collect_regset_section_cb_data): Delete.
+	(gcore_collect_regset_section_cb): Delete.
+	(gcore_collect_thread_registers): Delete.
+	(gcore_build_thread_register_notes): Delete.
+	(gcore_find_signalled_thread): Delete.
+	* gcore.h: Remove 'gdbsupport/gdb_signals.h' include and delete
+	'gdbarch' and 'thread_info' declarations.
+	(gcore_build_thread_register_notes): Delete declaration.
+	(gcore_find_signalled_thread): Likewise.
+	* fbsd-tdep.c: Remove 'gcore.h' include.
+	(struct fbsd_collect_regset_section_cb_data): New struct.
+	(fbsd_collect_regset_section_cb): New function.
+	(fbsd_collect_thread_registers): New function.
+	(struct fbsd_corefile_thread_data): New struct.
+	(fbsd_corefile_thread): New function.
+	(fbsd_make_corefile_notes): Call FreeBSD specific code.
+	* linux-tdep.c: Remove 'gcore.h' include.
+	(struct linux_collect_regset_section_cb_data): New struct.
+	(linux_collect_regset_section_cb): New function.
+	(linux_collect_thread_registers): New function.
+	(linux_corefile_thread): Call Linux specific code.
+	(find_signalled_thread): New function.
+	(linux_make_corefile_notes): Call find_signalled_thread.
+
+2021-02-09  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (coerce_unspec_val_to_type): Avoid making lazy
+	not_lval value.
+	* value.c (value_contents_copy_raw): Now static.
+	* value.h (value_contents_copy_raw): Don't declare.
+
+2021-02-09  Tom Tromey  <tromey@adacore.com>
+
+	* gdbtypes.c (resolve_dynamic_struct): Handle structure with no
+	fields.
+
+2021-02-08  Shahab Vahedi  <shahab@synopsys.com>
+
+	PR tdep/27369
+	* arc-linux-tdep.c (handle_atomic_sequence): New.
+	(arc_linux_software_single_step): Call handle_atomic_sequence().
+
+2021-02-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-tui.c (gdbpy_tui_window) <is_valid>: New member
+	function.
+	(REQUIRE_WINDOW): Call is_valid member function.
+	(REQUIRE_WINDOW_FOR_SETTER): New define.
+	(gdbpy_tui_is_valid): Call is_valid member function.
+	(gdbpy_tui_set_title): Call REQUIRE_WINDOW_FOR_SETTER instead.
+	* tui/tui-data.h (struct tui_win_info) <is_visible>: Check
+	tui_active too.
+	* tui/tui-layout.c (tui_apply_current_layout): Add an assert.
+	* tui/tui.c (tui_enable): Move setting of tui_active earlier in
+	the function.
+
+2021-02-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/py-tui.c (gdbpy_tui_set_title): Check that the new value
+	for the title is not nullptr.
+
+2021-02-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui-layout.c (saved_tui_windows): Delete.
+	(tui_apply_current_layout): Don't make use of saved_tui_windows,
+	call new get_windows member function instead.
+	(tui_get_window_by_name): Check in tui_windows.
+	(tui_layout_window::apply): Don't add to tui_windows.
+	* tui-layout.h (tui_layout_base::get_windows): New member function.
+	(tui_layout_window::get_windows): Likewise.
+	(tui_layout_split::get_windows): Likewise.
+
+2021-02-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui/tui-layout.c (tui_apply_current_layout): Restore the delete
+	of the window objects.
+
+2021-02-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* python/python.c (gdbpy_print_stack): Reformat an error message.
+
+2021-02-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui/tui-interp.c (tui_command_line_handler): New function.
+	(tui_interp::resume): Register tui_command_line_handler as the
+	input_handler.
+	* tui/tui-io.c (tui_inject_newline_into_command_window): New
+	function.
+	(tui_getc_1): Delete handling of '\n' and '\r'.
+	* tui-io.h (tui_inject_newline_into_command_window): Declare.
+
+2021-02-07  Hannes Domani  <ssbssa@yahoo.de>
+
+	* tui/tui-regs.c (tui_data_window::display_registers_from):
+	Mark invisible register sub windows.
+	(tui_data_window::check_register_values): Ignore invisible
+	register sub windows.
+
+2021-02-07  Hannes Domani  <ssbssa@yahoo.de>
+
+	* tui/tui-regs.c (tui_data_item_window::rerender): Don't call
+	n_spaces with a negative value.
+
+2021-02-07  Hannes Domani  <ssbssa@yahoo.de>
+
+	* tui/tui-regs.c (tui_data_window::display_registers_from):
+	Add refresh_window call.
+
+2021-02-07  Hannes Domani  <ssbssa@yahoo.de>
+
+	* python/py-frame.c (frapy_richcompare): Compare frame_id_is_next.
+
+2021-02-05  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* symmisc.c (std_in, std_out, std_err): Remove.
+	(_initialize_symmisc): Don't set std_in, std_out and std_err.
+
+2021-02-05  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoints/27330
+	* breakpoint.c (create_exception_master_breakpoint): Handle case that
+	glibc object file has debug info.
+
+2021-02-05  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27333
+	* dwarf2/read.c (process_psymtab_comp_unit): Handle DW_TAG_type_unit.
+
+2021-02-05  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoints/27313
+	* break-catch-syscall.c (catch_syscall_split_args): Reject negative
+	syscall numbers.
+
+2021-02-05  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-c-support.c (get_compile_context)
+	(c_get_compile_context, cplus_get_compile_context): Change return
+	type.
+	* language.c (language_defn::get_compile_instance): New method.
+	* language.h (language_defn::get_compile_instance): Change return
+	type.  No longer inline.
+	* c-lang.c (c_language::get_compile_instance): Change return type.
+	(cplus_language::get_compile_instance): Change return type.
+	* c-lang.h (c_get_compile_context, cplus_get_compile_context):
+	Change return type.
+	* compile/compile.c (compile_to_object): Update.
+
+2021-02-05  Tom Tromey  <tom@tromey.com>
+
+	* parser-defs.h (write_exp_symbol_reference): Declare.
+	* parse.c (write_exp_symbol_reference): New function.
+	* p-exp.y (variable): Use write_exp_symbol_reference.
+	* m2-exp.y (variable): Use write_exp_symbol_reference.
+	* f-exp.y (variable): Use write_exp_symbol_reference.
+	* d-exp.y (PrimaryExpression): Use write_exp_symbol_reference.
+	* c-exp.y (variable): Use write_exp_symbol_reference.
+
+2021-02-05  Tom de Vries  <tdevries@suse.de>
+
+	PR exp/27265
+	* valarith.c (complex_binop): Throw an error if complex type can't
+	be created.
+
+2021-02-05  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/27307
+	* dwarf2/read.c (create_cus_from_debug_names_list): Add missing
+	return.
+
+2021-02-05  Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/read.c (create_cus_from_debug_names_list): Fix indentation.
+
+2021-02-04  Mike Frysinger  <vapier@gentoo.org>
+
+	* configure.tgt (riscv*-*-*): Set gdb_sim.
+
+2021-02-04  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.c (target_is_non_stop_p): Return bool.
+	* target.h (target_is_non_stop_p): Return bool.
+
+2021-02-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* record-full.c (record_full_async_inferior_event_handler):
+	Don't clear async event handler.
+	(record_full_base_target::wait): Clear async event handler at
+	beginning.
+
+2021-02-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* record-btrace.c (record_btrace_handle_async_inferior_event):
+	Don't clear async event handler.
+	(record_btrace_target::wait): Clear async event handler at
+	beginning.
+
+2021-02-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* remote.c (remote_target::wait): Clear async event handler at
+	beginning, mark if needed at the end.
+	(remote_async_inferior_event_handler): Don't set or clear async
+	event handler.
+
+2021-02-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* async-event.h (async_event_handler_func):  Add documentation.
+	* async-event.c (check_async_event_handlers): Don't clear
+	async_event_handler ready flag.
+	* infrun.c (infrun_async_inferior_event_handler): Clear ready
+	flag.
+	* record-btrace.c (record_btrace_handle_async_inferior_event):
+	Likewise.
+	* record-full.c (record_full_async_inferior_event_handler):
+	Likewise.
+	* remote-notif.c (remote_async_get_pending_events_handler):
+	Likewise.
+	* remote.c (remote_async_inferior_event_handler): Likewise.
+
+2021-02-03  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (handle_inferior_event): Move stop_soon variable to
+	inner scope.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	* infcmd.c (detach_command): Hold strong reference to target, and
+	if all-stop on entry, restart threads on exit.
+	* infrun.c (switch_back_to_stepped_thread): Factor out bits to ...
+	(restart_stepped_thread): ... this new function.  Also handle
+	trap_expected.
+	(restart_after_all_stop_detach): New function.
+	* infrun.h (restart_after_all_stop_detach): Declare.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	* infrun.c (struct step_over_info): Initialize fields.
+	(prepare_for_detach): Handle ongoing in-line step over.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	* linux-nat.c (linux_nat_target::detach): Remove breakpoints
+	here...
+	* remote.c (remote_target::remote_detach_1): ... and here ...
+	* target.c (target_detach): ... instead of here.
+	* target.h (target_ops::detach): Add comment.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	* infrun.c (struct wait_one_event): Move higher up.
+	(prepare_for_detach): Abort in-progress displaced steps instead of
+	letting them complete.
+	(handle_one): If the inferior is detaching, don't add the thread
+	back to the global step-over chain.
+	(restart_threads): Don't restart threads if detaching.
+	(handle_signal_stop): Remove inferior::detaching reference.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	* infrun.c (prepare_for_detach): Don't release scoped_restore
+	before returning.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	* infrun.c (handle_one): New function, factored out from ...
+	(stop_all_threads): ... here.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	* remote.c (remote_notif_stop_ack): Don't error out on
+	TARGET_WAITKIND_IGNORE; instead, just ignore the notification.
+	(remote_target::discard_pending_stop_replies): Don't delete
+	in-flight notification; instead, clear its contents.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	* remote.c (extended_remote_target::attach): Set target async in
+	the target-non-stop path too.
+
+2021-02-03  Pedro Alves  <pedro@palves.net>
+
+	PR gdb/27055
+	* infrun.c (handle_signal_stop): Move main context_switch call
+	earlier, before STOP_QUIETLY_NO_SIGSTOP.
+
+2021-02-02  Lancelot SIX  <lsix@lancelotsix.com>
+
+	* NEWS (Changed commands): Add entry for the behavior change of
+	the inferior command.
+	* inferior.c (inferior_command): When no argument is given to the
+	inferior command, display info about the currently selected
+	inferior.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (read_loclist_index, read_rnglist_index): Return
+	a sect_offset.
+	(read_attribute_reprocess): Adjust.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/die.h (struct die_info) <ranges_base>: Split in...
+	<gnu_ranges_base>: ... this...
+	<rnglists_base>: ... and this.
+	* dwarf2/read.c (struct dwarf2_cu) <ranges_base>: Split in...
+	<gnu_ranges_base>: ... this...
+	<rnglists_base>: ... and this.
+	(read_cutu_die_from_dwo): Adjust
+	(dwarf2_get_pc_bounds): Adjust
+	(dwarf2_record_block_ranges): Adjust.
+	(read_full_die_1): Adjust
+	(partial_die_info::read): Adjust.
+	(read_rnglist_index): Adjust.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	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.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	PR gdb/26813
+	* dwarf2/attribute.h (struct attribute) <set_unsigned>: Clear
+	requires_reprocessing flag.
+	* dwarf2/attribute.c (attribute::form_is_unsigned): Handle
+	DW_FORM_loclistx.
+	(attribute::form_requires_reprocessing): Handle DW_FORM_rnglistx
+	and DW_FORM_loclistx.
+	* dwarf2/read.c (read_attribute_reprocess): Use set_unsigned
+	instead of set_address for DW_FORM_loclistx and
+	DW_FORM_rnglistx.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (read_loclist_index): Remove bound check for
+	start of offset.
+	(read_rnglist_index): Likewise.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (read_loclist_index): Add bound check for the end
+	of the offset.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (read_rnglist_index): Fix bound check.
+
+2021-02-02  Simon Marchi  <simon.marchi@efficios.com>
+
+	* dwarf2/read.c (read_loclist_index): Change complaints into
+	errors.
+
+2021-02-02  Tom de Vries  <tdevries@suse.de>
+
+	PR symtab/24620
+	* dwarf2/index-write.c (write_one_signatured_type): Skip if
+	psymtab == nullptr.
+
+2021-02-01  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in (HFILES_NO_SRCDIR): Add corefile.h.
+	* gcore.c (struct gcore_collect_regset_section_cb_data): Moved
+	here from linux-tdep.c and given a new name.  Minor cleanups.
+	(gcore_collect_regset_section_cb): Likewise.
+	(gcore_collect_thread_registers): Likewise.
+	(gcore_build_thread_register_notes): Likewise.
+	(gcore_find_signalled_thread): Likewise.
+	* gcore.h (gcore_build_thread_register_notes): Declare.
+	(gcore_find_signalled_thread): Declare.
+	* fbsd-tdep.c: Add 'gcore.h' include.
+	(struct fbsd_collect_regset_section_cb_data): Delete.
+	(fbsd_collect_regset_section_cb): Delete.
+	(fbsd_collect_thread_registers): Delete.
+	(struct fbsd_corefile_thread_data): Delete.
+	(fbsd_corefile_thread): Delete.
+	(fbsd_make_corefile_notes): Call
+	gcore_build_thread_register_notes instead of the now deleted
+	FreeBSD code.
+	* linux-tdep.c: Add 'gcore.h' include.
+	(struct linux_collect_regset_section_cb_data): Delete.
+	(linux_collect_regset_section_cb): Delete.
+	(linux_collect_thread_registers): Delete.
+	(linux_corefile_thread): Call
+	gcore_build_thread_register_notes.
+	(find_signalled_thread): Delete.
+	(linux_make_corefile_notes): Call gcore_find_signalled_thread.
+
+2021-01-29  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoints/26063
+	* infrun.c (process_event_stop_test): Reset
+	ecs->event_thread->current_line to 0 if is-stmt=n and frame has
+	changed.
+
+2021-01-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* thread.c (thr_try_catch_cmd): Replace swith_to_thread with an
+	assert.  Extend the header comment.
+
+2021-01-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* Makefile.in (SUBDIR_TUI_SRCS): Add tui/tui-location.c.
+	(HFILES_NO_SRCDIR): Add tui/tui-location.h.
+	* tui/tui-data.h (TUI_STATUS_WIN): Define.
+	(tui_locator_win_info_ptr): Delete declaration.
+	* tui/tui-disasm.c: Add 'tui/tui-location.h' include.
+	(tui_disasm_window::set_contents): Fetch state from tui_location
+	global.
+	(tui_get_begin_asm_address): Likewise.
+	* tui/tui-layout.c (tui_apply_current_layout): Remove special case
+	for locator window.
+	(get_locator_window): Delete.
+	(initialize_known_windows): Treat locator window just like all the
+	rest.
+	* tui/tui-source.c: Add 'tui/tui-location.h' include.
+	(tui_source_window::set_contents): Fetch state from tui_location
+	global.
+	(tui_source_window::showing_source_p): Likewise.
+	* tui/tui-stack.c: Add 'tui/tui-location.h' include.
+	(_locator): Delete.
+	(tui_locator_win_info_ptr): Delete.
+	(tui_locator_window::make_status_line): Fetch state from
+	tui_location global.
+	(tui_locator_window::rerender): Remove check of 'handle',
+	reindent function body.
+	(tui_locator_window::set_locator_fullname): Delete.
+	(tui_locator_window::set_locator_info): Delete.
+	(tui_update_locator_fullname): Delete.
+	(tui_show_frame_info): Likewise.
+	(tui_show_locator_content): Access window through TUI_STATUS_WIN.
+	* tui/tui-stack.h (tui_locator_window::set_locator_info): Moved to
+	tui/tui-location.h and renamed to
+	tui_location_tracker::set_location.
+	(tui_locator_window::set_locator_fullname): Moved to
+	tui/tui-location.h and renamed to
+	tui_location_tracker::set_fullname.
+	(tui_locator_window::full_name): Delete.
+	(tui_locator_window::proc_name): Delete.
+	(tui_locator_window::line_no): Delete.
+	(tui_locator_window::addr): Delete.
+	(tui_locator_window::gdbarch): Delete.
+	(tui_update_locator_fullname): Delete declaration.
+	* tui/tui-wingeneral.c (tui_refresh_all): Removed special handling
+	for locator window.
+	* tui/tui-winsource.c: Add 'tui/tui-location.h' include.
+	(tui_display_main): Call function on tui_location directly.
+	* tui/tui.h (enum tui_win_type): Add STATUS_WIN.
+	* tui/tui-location.c: New file.
+	* tui/tui-location.h: New file.
+
+2021-01-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (get_type_arch): Rename to...
+	(struct type) <arch>: ... this, update all users.
+
+2021-01-28  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (struct type) <arch>: Rename to...
+	<arch_owner>: ... this, update all users.
+	<objfile>: Rename to...
+	<objfile_owner>: ... this, update all users.
+
+2021-01-28  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* gdbcmd.h (execute_command_to_string): Update comment.
+	* top.c (execute_command_to_string): Update header comment.
+
+2021-01-28  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoints/27205
+	* breakpoint.c (create_longjmp_master_breakpoint_probe)
+	(create_longjmp_master_breakpoint_names): New function, factored out
+	of ...
+	(create_longjmp_master_breakpoint): ... here.  Only try to install
+	longjmp_names breakpoints in libc.so/libc.so.debug if installing probe
+	breakpoint in libc.so failed.
+
+2021-01-27  Lancelot SIX  <lsix@lancelotsix.com>
+
+	PR gdb/27133
+	* cli/cli-interp.c (cli_interp_base::set_logging): Ensure the
+	unique_ptr is released when the wrapped pointer is kept for later
+	use.
+
+2021-01-27  Matthew Malcomson  <matthew.malcomson@arm.com>
+
+	* aarch64-tdep.c (aarch64_displaced_step_others): Account for
+	BLR and BR instructions.
+	* arch/aarch64-insn.h (enum aarch64_opcodes): Add BR opcode.
+	(enum aarch64_masks): New.
+
+2021-01-26  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (DEBUG_EXEC, DEBUG_EVENTS, DEBUG_MEM)
+	(DEBUG_EXCEPT): Use debug_prefixed_printf_cond.
+	(windows_init_thread_list, windows_nat::handle_load_dll)
+	(windows_nat::handle_unload_dll, windows_nat_target::resume)
+	(windows_nat_target::resume)
+	(windows_nat_target::get_windows_debug_event)
+	(windows_nat_target::interrupt, windows_xfer_memory)
+	(windows_nat_target::close): Update.
+	* nat/windows-nat.c (DEBUG_EVENTS): Use
+	debug_prefixed_printf_cond.
+	(matching_pending_stop, fetch_pending_stop)
+	(continue_last_debug_event): Update.
+
+2020-12-17  Mihails Strasuns  <mihails.strasuns@intel.com>
+
+	* linux-tdep.c (linux_make_mappings_corefile_notes): Start using
+	elfcore_write_file_note.
+
+2021-01-26  Shahab Vahedi  <shahab@synopsys.com>
+
+	* arc-tdep.c (arc_add_reggroups): New function.
+	(arc_gdbarch_init): Call arc_add_reggroups.
+
+2021-01-26  Anton Kolesov  <anton.kolesov@synopsys.com>
+
+	* arc-tdep.c (arc_skip_prologue): Log "pc" address.
+
+2021-01-25  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+	    Simon Marchi  <simon.marchi@polymtl.ca>
+	    Tom de Vries  <tdevries@suse.de>
+
+	* dwarf2/read.c (partial_die_info::read): Use as_unsigned () for
+	DW_AT_ranges.
+
+2021-01-25  Tom Tromey  <tromey@adacore.com>
+
+	* dwarf2/read.c (get_mpz): New function.
+	(get_dwarf2_rational_constant): Use it.
+
+2021-01-25  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (resolve_subexp): Handle array context.
+
+2021-01-23  Tom Tromey  <tom@tromey.com>
+
+	PR compile/25575
+	* compile/compile-loc2c.c (note_register): New function.
+	(pushf_register_address, pushf_register): Use it.
+
+2021-01-23  Tom Tromey  <tom@tromey.com>
+
+	* symtab.h (struct symbol_computed_ops) <generate_c_location>:
+	Change type of "registers_used".
+	* dwarf2/loc.h (dwarf2_compile_property_to_c): Update.
+	* dwarf2/loc.c (dwarf2_compile_property_to_c)
+	(locexpr_generate_c_location, loclist_generate_c_location): Change
+	type of "registers_used".
+	* compile/compile.h (compile_dwarf_expr_to_c)
+	(compile_dwarf_bounds_to_c): Update.
+	* compile/compile-loc2c.c (pushf_register_address)
+	(pushf_register, do_compile_dwarf_expr_to_c)
+	(compile_dwarf_expr_to_c, compile_dwarf_bounds_to_c): Change type
+	of "registers_used".
+	* compile/compile-c.h (generate_c_for_variable_locations):
+	Update.
+	* compile/compile-c-symbols.c (generate_vla_size)
+	(generate_c_for_for_one_variable): Change type of
+	"registers_used".
+	(generate_c_for_variable_locations): Return std::vector.
+	* compile/compile-c-support.c (generate_register_struct): Change
+	type of "registers_used".
+	(compute): Update.
+
+2021-01-23  Tom Tromey  <tom@tromey.com>
+
+	* compile/compile-internal.h (class compile_instance)
+	<set_arguments>: Change return type.
+	* compile/compile.c (compile_to_object): Remove call to reset.
+	(compile_instance::set_arguments): Change return type.
+
+2021-01-23  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.c (copy_type_recursive): Use get_type_arch.
+	* gdbtypes.h (struct type) <set_owner>: Add asserts.
+
+2021-01-23  Lancelot SIX  <lsix@lancelotsix.com>
+
+	* Makefile.in (SELFTESTS_SRCS): Add
+	unittests/gdb_tilde_expand-selftests.c.
+	* unittests/gdb_tilde_expand-selftests.c: New file.
+
+2021-01-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR cli/25956
+	* NEWS: Mention new command.
+	* cli/cli-style.c: Add 'cli/cli-setshow.h' include.
+	(version_style): Define.
+	(cli_style_option::cli_style_option): Add intensity parameter, and
+	use as appropriate.
+	(_initialize_cli_style): Register version style set/show commands.
+	* cli/cli-style.h (cli_style_option): Add intensity parameter.
+	(version_style): Declare.
+	* top.c (print_gdb_version): Use version_stype, and styled_string
+	to print the GDB version string.
+
+2021-01-22  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* utils.c (emit_style_escape): Only emit an escape sequence if the
+	requested style is different than the current applied style.
+	(fputs_maybe_filtered): Adjust the juggling of the wrap_style, and
+	current applied_style.
+	(fputs_styled): Remove is_default check.
+	(fputs_styled_unfiltered): Likewise.
+	(vfprintf_styled_no_gdbfmt): Likewise.
+
+2021-01-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* remote.h (remote_debug_printf): New.
+	(remote_debug_printf_nofunc): New.
+	(REMOTE_SCOPED_DEBUG_ENTER_EXIT): New.
+	* remote.c: Use above macros throughout file.
+
+2021-01-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* remote.h (remote_debug): Change to bool.
+	* remote.c (remote_debug): Change to bool.
+	(_initialize_remote): Adjust.
+
+2021-01-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (remote_debug): Move to...
+	* remote.h (remote_debug): ... here.
+	* top.c (remote_debug): Move to...
+	* remote.c (remote_debug): ... here.
+	* remote-sim.c: Include remote.h.
+
+2021-01-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* cli/cli-cmds.c (show_remote_debug): Remove.
+	(show_remote_timeout): Remove.
+	(_initialize_cli_cmds): Don't register commands.
+	* remote.c (show_remote_debug): Move here.
+	(show_remote_timeout): Move here.
+	(_initialize_remote): Register commands.
+
+2021-01-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (TYPE_OBJFILE): Remove, change all users to use the
+	type::objfile method instead.
+
+2021-01-22  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdbtypes.h (TYPE_OBJFILE_OWNED): Remove, update all users to
+	use the type::is_objfile_owned method.
+
+2021-01-22  Simon Marchi  <simon.marchi@efficios.com>
+
+	* gdbtypes.h (TYPE_OBJFILE_OWNED): Adjust.
+	(TYPE_OWNER): Remove.
+	(TYPE_OBJFILE): Adjust.
+	(struct main_type) <flag_objfile_owned>: Rename to...
+	<m_flag_objfile_owned>: ... this.
+	<owner>: Rename to...
+	<m_owner>: ... this.
+	(struct type) <is_objfile_owned, set_owner, objfile, arch>: New
+	methods.
+	(TYPE_ALLOC): Adjust.
+	* gdbtypes.c (alloc_type): Adjust.
+	(alloc_type_arch): Adjust.
+	(alloc_type_copy): Adjust.
+	(get_type_arch): Adjust.
+	(smash_type): Adjust.
+	(lookup_array_range_type): Adjust.
+	(recursive_dump_type): Adjust.
+	(copy_type_recursive): Adjust.
+	* compile/compile-c-types.c (convert_func): Adjust.
+	(convert_type_basic): Adjust.
+	* compile/compile-cplus-types.c (compile_cplus_convert_func):
+	Adjust.
+	* language.c
+	(language_arch_info::type_and_symbol::alloc_type_symbol):
+	Adjust.
+
+2021-01-21  Luis Machado  <luis.machado@linaro.org>
+
+	* coffread.c (enter_linenos): Passing string to complaint.
+	* valops.c (value_assign): Make array view.
+
+2021-01-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* auto-load.h (debug_auto_load): Move here.
+	(auto_load_debug_printf): New.
+	* auto-load.c: Use auto_load_debug_printf.
+	(debug_auto_load): Move to header.
+	* linux-thread-db.c (try_thread_db_load): Use
+	auto_load_debug_printf.
+	* main.c (captured_main_1): Likewise.
+
+2021-01-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* f-valprint.c (f77_array_offset_tbl): Remove.
+
+2021-01-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdb_bfd.c (bfd_cache_debug_printf): New, use throughout file.
+
+2021-01-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* ser-tcp.c (wait_for_connect): Use interruptible_select instead
+	of gdb_select.
+
+2021-01-21  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR python/19151
+	* python/py-breakpoint.c (bppy_get_location): Handle
+	bp_hardware_breakpoint.
+	(bppy_init): Likewise.
+	(gdbpy_breakpoint_created): Likewise.
+
+2021-01-21  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* arm-tdep.c (arm_debug_printf): Add and use throughout file.
+
+2021-01-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* gdb_bfd.c (debug_bfd_cache): Change type to bool.
+	(_initialize_gdb_bfd): Adjust.
+
+2021-01-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	PR gdb/26828
+	* dwarf2/read.c (maybe_queue_comp_unit): Add assertion.
+
+2021-01-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* dwarf2/read.c (follow_die_offset): Add logging.
+	(dwarf2_per_objfile::age_comp_units): Add logging.
+
+2021-01-20  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* aarch64-linux-tdep.c (aarch64_linux_record_tdep): Make static.
+	* aarch64-tdep.c (tdesc_aarch64_list, aarch64_prologue_unwind,
+	aarch64_stub_unwind, aarch64_normal_base, ): Make static.
+	* arm-linux-tdep.c (arm_prologue_unwind): Make static.
+	* arm-tdep.c (struct frame_unwind): Make static.
+	* auto-load.c (auto_load_safe_path_vec): Make static.
+	* csky-tdep.c (csky_stub_unwind): Make static.
+	* gdbarch.c (gdbarch_data_registry): Make static.
+	* gnu-v2-abi.c (gnu_v2_abi_ops): Make static.
+	* i386-netbsd-tdep.c (i386nbsd_mc_reg_offset): Make static.
+	* i386-tdep.c (i386_frame_setup_skip_insns,
+	i386_tramp_chain_in_reg_insns, i386_tramp_chain_on_stack_insns):
+	Make static.
+	* infrun.c (observer_mode): Make static.
+	* linux-nat.c (sigchld_action): Make static.
+	* linux-thread-db.c (thread_db_list): Make static.
+	* maint-test-options.c (maintenance_test_options_list):
+	* mep-tdep.c (mep_csr_registers): Make static.
+	* mi/mi-cmds.c (struct mi_cmd_stats): Remove struct type name.
+	(stats): Make static.
+	* nat/linux-osdata.c (struct osdata_type): Make static.
+	* ppc-netbsd-tdep.c (ppcnbsd_reg_offsets): Make static.
+	* progspace.c (last_program_space_num): Make static.
+	* python/py-param.c (struct parm_constant): Remove struct type
+	name.
+	(parm_constants): Make static.
+	* python/py-record-btrace.c (btpy_list_methods): Make static.
+	* python/py-record.c (recpy_gap_type): Make static.
+	* record.c (record_goto_cmdlist): Make static.
+	* regcache.c (regcache_descr_handle): Make static.
+	* registry.h (DEFINE_REGISTRY): Make definition static.
+	* symmisc.c (std_in, std_out, std_err): Make static.
+	* top.c (previous_saved_command_line): Make static.
+	* tracepoint.c (trace_user, trace_notes, trace_stop_notes): Make
+	static.
+	* unittests/command-def-selftests.c (nr_duplicates,
+	nr_invalid_prefixcmd, lists): Make static.
+	* unittests/observable-selftests.c (test_notification): Make
+	static.
+	* unittests/optional/assignment/1.cc (counter): Make static.
+	* unittests/optional/assignment/2.cc (counter): Make static.
+	* unittests/optional/assignment/3.cc (counter): Make static.
+	* unittests/optional/assignment/4.cc (counter): Make static.
+	* unittests/optional/assignment/5.cc (counter): Make static.
+	* unittests/optional/assignment/6.cc (counter): Make static.
+
+2021-01-20  Joel Sherrill  <joel@rtems.org>
+
+	PR gdb/27219
+	* remote.c (struct remote_thread_info) <resume_state>: Rename
+	to...
+	<get_resume_state>: ... this.
+	(remote_target::resume): Adjust.
+	(remote_target::commit_resume): Adjust.
+	(remote_target::select_thread_for_ambiguous_stop_reply): Adjust.
+
+2021-01-20  Sergio Durigan Junior  <sergiodj@sergiodj.net>
+	    Tom Tromey <tom@tromey.com>
+
+	* stap-probe.c (stap_parse_single_operand): Handle '!'
+	operator.
+	(stap_parse_argument_conditionally): Likewise.
+	Skip spaces after processing open-parenthesis sub-expression.
+	(stap_parse_argument_1): Skip spaces after call to
+	stap_parse_argument_conditionally.
+	Handle case when right-side expression is a parenthesized
+	sub-expression.
+	Skip spaces after call to stap_parse_argument_1.
+
+2021-01-19  Lancelot SIX  <lsix@lancelotsix.com>
+
+	* top.h (switch_thru_all_uis): Use DISABLE_COPY_AND_ASSIGN.
+
+2021-01-19  Luis Machado  <luis.machado@linaro.org>
+
+	* trad-frame.h (trad_frame_saved_reg) <set_value_bytes>: Allocate
+	memory and save data.
+	(trad_frame_set_value, trad_frame_set_realreg, trad_frame_set_addr)
+	(trad_frame_set_unknown, trad_frame_set_value_bytes)
+	(trad_frame_value_p, trad_frame_addr_p, trad_frame_realreg_p)
+	(trad_frame_value_bytes_p): Remove.
+	(trad_frame_reset_saved_regs): Adjust documentation.
+	* trad-frame.c (trad_frame_alloc_saved_regs): Initialize via a
+	constructor and reset the state of the registers.
+	(trad_frame_value_p, trad_frame_addr_p, trad_frame_realreg_p)
+	(trad_frame_value_bytes_p, trad_frame_set_value)
+	(trad_frame_set_realreg, trad_frame_set_addr)
+	(trad_frame_set_unknown, trad_frame_set_value_bytes): Remove.
+	(trad_frame_set_reg_realreg): Update to call member function.
+	(trad_frame_set_reg_addr, trad_frame_set_reg_value_bytes): Likewise.
+	(trad_frame_get_prev_register): Likewise.
+
+	* aarch64-tdep.c (aarch64_analyze_prologue)
+	(aarch64_analyze_prologue_test, aarch64_make_prologue_cache_1)
+	(aarch64_prologue_prev_register): Update to use member functions.
+	* alpha-mdebug-tdep.c (alpha_mdebug_frame_unwind_cache): Likewise.
+	* alpha-tdep.c (alpha_heuristic_frame_unwind_cache): Likewise.
+	* arc-tdep.c (arc_print_frame_cache, arc_make_frame_cache): Likewise.
+	* arm-tdep.c (arm_make_prologue_cache, arm_exidx_fill_cache)
+	(arm_make_epilogue_frame_cache): Likewise.
+	* avr-tdep.c (avr_frame_unwind_cache)
+	(avr_frame_prev_register): Likewise.
+	* cris-tdep.c (cris_scan_prologue): Likewise.
+	* csky-tdep.c (csky_frame_unwind_cache): Likewise.
+	* frv-tdep.c (frv_analyze_prologue): Likewise.
+	* hppa-tdep.c (hppa_frame_cache, hppa_fallback_frame_cache): Likewise.
+	* lm32-tdep.c (lm32_frame_cache): Likewise.
+	* m32r-tdep.c (m32r_frame_unwind_cache): Likewise.
+	* m68hc11-tdep.c (m68hc11_frame_unwind_cache): Likewise.
+	* mips-tdep.c (set_reg_offset, mips_insn16_frame_cache)
+	(mips_micro_frame_cache, mips_insn32_frame_cache): Likewise.
+	(reset_saved_regs): Adjust to set realreg.
+	* riscv-tdep.c (riscv_scan_prologue, riscv_frame_cache): Adjust to
+	call member functions.
+	* rs6000-tdep.c (rs6000_frame_cache, rs6000_epilogue_frame_cache)
+	* s390-tdep.c (s390_prologue_frame_unwind_cache)
+	(s390_backchain_frame_unwind_cache): Likewise.
+	* score-tdep.c (score7_analyze_prologue)
+	(score3_analyze_prologue, score_make_prologue_cache): Likewise.
+	* sparc-netbsd-tdep.c (sparc32nbsd_sigcontext_saved_regs): Likewise.
+	* sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_cache): Likewise.
+	* sparc64-netbsd-tdep.c (sparc64nbsd_sigcontext_saved_regs): Likewise.
+	* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_cache): Likewise.
+	* tilegx-tdep.c (tilegx_analyze_prologue)
+	(tilegx_frame_cache): Likewise.
+	* v850-tdep.c (v850_frame_cache): Likewise.
+	* vax-tdep.c (vax_frame_cache): Likewise.
+
+2021-01-19  Luis Machado  <luis.machado@linaro.org>
+
+	* frame.h (get_frame_register_bytes): Pass a gdb::array_view instead
+	of buffer + length.
+	(put_frame_register_bytes): Likewise.
+	Adjust documentation.
+	(get_frame_memory): Pass a gdb::array_view instead of buffer + length.
+	(safe_frame_unwind_memory): Likewise.
+	* frame.c (get_frame_register_bytes, put_frame_register_bytes)
+	(get_frame_memory, safe_frame_unwind_memory): Adjust to use
+	gdb::array_view.
+	* amd64-fbsd-tdep.c (amd64fbsd_sigtramp_p): Likewise.
+	* amd64-linux-tdep.c (amd64_linux_sigtramp_start): Likewise.
+	* amd64-obsd-tdep.c (amd64obsd_sigtramp_p): Likewise.
+	* arc-linux-tdep.c (arc_linux_is_sigtramp): Likewise.
+	* cris-tdep.c (cris_sigtramp_start, cris_rt_sigtramp_start): Likewise.
+	* dwarf2/loc.c (rw_pieced_value): Likewise.
+	* hppa-tdep.c (hppa_frame_cache): Likewise.
+	* i386-fbsd-tdep.c (i386fbsd_sigtramp_p): Likewise.
+	* i386-gnu-tdep.c (i386_gnu_sigtramp_start): Likewise.
+	* i386-linux-tdep.c (i386_linux_sigtramp_start)
+	(i386_linux_rt_sigtramp_start): Likewise.
+	* i386-obsd-tdep.c (i386obsd_sigtramp_p): Likewise.
+	* i386-tdep.c (i386_register_to_value): Likewise.
+	* i387-tdep.c (i387_register_to_value): Likewise.
+	* ia64-tdep.c (ia64_register_to_value): Likewise.
+	* m32r-linux-tdep.c (m32r_linux_sigtramp_start)
+	(m32r_linux_rt_sigtramp_start): Likewise.
+	* m68k-linux-tdep.c (m68k_linux_pc_in_sigtramp): Likewise.
+	* m68k-tdep.c (m68k_register_to_value): Likewise.
+	* mips-tdep.c (mips_register_to_value)
+	(mips_value_to_register): Likewise.
+	* ppc-fbsd-tdep.c (ppcfbsd_sigtramp_frame_sniffer)
+	(ppcfbsd_sigtramp_frame_cache): Likewise.
+	* ppc-obsd-tdep.c (ppcobsd_sigtramp_frame_sniffer)
+	(ppcobsd_sigtramp_frame_cache): Likewise.
+	* rs6000-tdep.c (rs6000_in_function_epilogue_frame_p)
+	(rs6000_register_to_value): Likewise.
+	* tilegx-tdep.c (tilegx_analyze_prologue): Likewise.
+	* tramp-frame.c (tramp_frame_start): Likewise.
+	* valops.c (value_assign): Likewise.
+
+2021-01-19  Luis Machado  <luis.machado@linaro.org>
+
+	* aarch64-linux-tdep.c (aarch64_linux_restore_vreg): Pass in an
+	array_view.
+	* trad-frame.c (trad_frame_set_value_bytes): Use gdb::array_view
+	instead of buffer and size.
+	(trad_frame_set_reg_value_bytes): Likewise.
+	* trad-frame.h (trad_frame_set_reg_value_bytes): Likewise.
+	(trad_frame_set_value_bytes): Likewise.
+
+2021-01-18  Mike Frysinger  <vapier@gentoo.org>
+
+	* copyright.py (NOT_FSF_LIST): Delete sim/testsuite/sim/bfin/s21.s.
+
+2021-01-18  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* riscv-fbsd-tdep.c (riscv_fbsd_supply_gregset): Delete.
+	(riscv_fbsd_gregset): Use riscv_supply_regset.
+	(riscv_fbsd_fpregset): Likewise.
+	* riscv-linux-tdep.c (riscv_linux_gregset): Likewise.
+	(riscv_linux_fregset): Likewise.
+	* riscv-tdep.c (riscv_supply_regset): Define new function.
+	* riscv-tdep.h (riscv_supply_regset): Declare new function.
+
+2021-01-18  Tom de Vries  <tdevries@suse.de>
+
+	PR tdep/27172
+	* nat/amd64-linux-siginfo.c (cpt_si_lower, cpt_si_upper, SEGV_BNDERR):
+	New macro.
+	(compat_siginfo_from_siginfo): Copy cpt_si_lower and cpt_si_upper
+	for SEGV_BNDERR.
+
+2021-01-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* remote.c (class remote_target) <remote_hostio_send_command,
+	remote_hostio_parse_result>: Constify parameter.
+	(remote_hostio_parse_result): Likewise.
+	(remote_target::remote_hostio_send_command): Adjust.
+	(remote_target::remote_hostio_pread_vFile): Adjust.
+	(remote_target::fileio_readlink): Adjust.
+	(remote_target::fileio_fstat): Adjust.
+
+2021-01-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* remote.c (remote_target::start_remote): Move wait_status to
+	narrower scope.
+
+2021-01-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* remote.c (class remote_target):
+	<add_current_inferior_and_thread>: Constify parameter.
+	(stop_reply_extract_thread): Likewise.
+	(remote_target::get_current_thread): Likewise.
+	(remote_target::add_current_inferior_and_thread): Likewise.
+
+2021-01-18  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* remote.c (class remote_target)
+	<remote_unpack_thread_info_response,
+	parse_threadlist_response>: Constify parameter and/or return
+	value and or local variable.
+	(stub_unpack_int): Likewise.
+	(unpack_nibble): Likewise.
+	(unpack_byte): Likewise.
+	(unpack_int): Likewise.
+	(unpack_string): Likewise.
+	(unpack_threadid): Likewise.
+	(remote_target::remote_unpack_thread_info_response): Likewise.
+	(remote_target::parse_threadlist_response): Likewise.
+
+2021-01-15  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* tui/tui.c (tui_is_window_visible): Compare to nullptr, not 0.
+
+2021-01-14  Lancelot Six  <lsix@lancelotsix.com>
+
+	* MAINTAINERS (Write After Approval): Add myself.
+
+2021-01-14  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	* trad-frame.c (trad_frame_alloc_saved_regs): Avoid compile-error
+	because is_trivially_default_constructible was first implemented with
+	gcc-5.
+
+2021-01-14  Tom de Vries  <tdevries@suse.de>
+
+	PR breakpoints/27151
+	* objfiles.h (in_plt_section): Handle .plt.sec.
+
+2021-01-13  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	PR gdb/26819
+	* remote.c
+	(remote_target::select_thread_for_ambiguous_stop_reply): New
+	member function.
+	(remote_target::process_stop_reply): Call
+	select_thread_for_ambiguous_stop_reply.
+
+2021-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* record-btrace.c (class record_btrace_target): Remove.
+	(record_btrace_target::commit_resume): Remove.
+	* record-full.c (class record_full_target): Remove.
+	(record_full_target::commit_resume): Remove.
+
+2021-01-13  Simon Marchi  <simon.marchi@efficios.com>
+
+	* remote.c (enum class resume_state): New.
+	(struct resumed_pending_vcont_info): New.
+	(struct remote_thread_info) <resume_state, set_not_resumed,
+	set_resumed_pending_vcont, resumed_pending_vcont_info,
+	set_resumed, m_resume_state, m_resumed_pending_vcont_info>:
+	New.
+	<last_resume_step, last_resume_sig, vcont_resumed>: Remove.
+	(remote_target::remote_add_thread): Adjust.
+	(remote_target::process_initial_stop_replies): Adjust.
+	(remote_target::resume): Adjust.
+	(remote_target::commit_resume): Rely on state in
+	remote_thread_info and not on tp->executing.
+	(remote_target::process_stop_reply): Adjust.
+
+2021-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* arc-tdep.h (arc_debug_printf): New.
+	* arc-tdep.c: Use arc_debug_printf.
+	* arc-linux-nat.c (arc_linux_nat_debug_printf): Add and use.
+	* arc-linux-tdep.c (arc_linux_debug_printf): Add and use.
+	* arc-newlib-tdep.c (arc_newlib_debug_printf): Add and use.
+
+2021-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* arc-tdep.h (arc_debug): Change type to bool.
+	* arc-tdep.c (arc_debug): Change type to bool.
+	(arc_analyze_prologue): Adjust.
+	(_initialize_arc_tdep): Use add_setshow_boolean_cmd.
+	* arc-linux-nat.c (ps_get_thread_area): Adjust.
+
+2021-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* auto-load.c (auto_load_objfile_script_1): Use bool.
+	(execute_script_contents): Use bool.
+
+2021-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* auto-load.h (auto_load_gdb_scripts_enabled): Return bool, move
+	comment here.
+	* auto-load.c (auto_load_gdb_scripts_enabled): Return bool, move
+	comment to header.
+	* extension-priv.h (struct extension_language_script_ops)
+	<auto_load_enabled>: Return bool.
+	* extension.h (ext_lang_auto_load_enabled): Return bool, move
+	comment here.
+	* extension.c (ext_lang_auto_load_enabled): Return bool, move
+	comment to header.
+	* guile/guile-header.h (gdbscm_auto_load_enabled): Return bool,
+	move comment here.
+	* guile/scm-auto-load.c (gdbscm_auto_load_enabled): Return bool,
+	move comment to header.
+	* python/python-header.h (gdbpy_auto_load_enabled): Return bool,
+	move comment here.
+	* python/py-auto-load.c (gdbpy_auto_load_enabled): Return bool,
+	move comment to header.
+
+2021-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* auto-load.h (file_is_auto_load_safe): Change return type to
+	bool, move comment here.
+	* auto-load.c (file_is_auto_load_safe): Change return type and
+	advice_printed to bool.  Move comment to  header.
+
+2021-01-13  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (jit_debug_printf): New, use throughout file.
+
+2021-01-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* infrun.c (normal_stop): Fix indentation.
+
+2021-01-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* top.h (readnow_symbol_files, readnever_symbol_files): Move
+	declarations to ...
+	* symfile.h: ... here.
+	* symfile.c: Update doc.
+
+2021-01-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target.h (baud_rate, serial_parity): Move declarations...
+	* serial.h: ... here.
+	* main.c: Include serial.h.
+	* serial.c (baud_rate, serial_parity): Update doc.
+
+2021-01-12  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* top.c (pre_init_ui_hook): Remove.
+
+2021-01-12  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+
+	* aarch64-tdep.c (aarch64_vnh_type): Add "bf" field in h registers.
+	(aarch64_vnv_type): Add "bf" type in h field of v registers.
+	* features/aarch64-fpu.c (create_feature_aarch64_fpu): Regenerated.
+	* features/aarch64-fpu.xml: Add bfloat16 type.
+
+2021-01-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* expprint.c (dump_subexp_body_standard): Handle OP_BOOL.
+
+2021-01-12  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-exp.y (dot_ops): Rename to...
+	(fortran_operators): ...this.  Add a header comment.  Add symbol
+	based operators.
+	(yylex): Update to use fortran_operators not dot_ops.  Remove
+	special handling for '**', this is now included in
+	fortran_operators.
+
+2021-01-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* arch/aarch64-insn.h (aarch64_debug_printf): New.
+	* arch/aarch64-insn.c: Use aarch64_debug_printf.
+	* aarch64-tdep.c: Use aarch64_debug_printf.
+
+2021-01-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* solib-aix.c (solib_aix_debug_printf): New, use throughout
+	file.
+
+2021-01-11  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* jit.c (jit_debug): Change type to bool.
+	(_initialize_jit): Adjust.
+
+2021-01-09  Tom Tromey  <tom@tromey.com>
+
+	PR compile/23672
+	* compile/compile.c (compile_to_object): Avoid crash when
+	osabi_triplet_regexp returns NULL.
+
+2021-01-09  Tom Tromey  <tom@tromey.com>
+
+	* tracepoint.h (class collection_list) <append_exp>: Take a
+	std::string.
+	* tracepoint.c (collection_list::append_exp): Take a std::string.
+	(encode_actions_1): Update.
+
+2021-01-08  Tom Tromey  <tromey@adacore.com>
+
+	* parse.c (parse_expression): Add void_context_p parameter.  Use
+	parse_exp_in_context.
+	* printcmd.c (print_command_1): Change voidprint to bool.  Pass to
+	parse_expression.
+	(print_command, call_command): Update.
+	* expression.h (parse_expression): Add void_context_p parameter.
+
+2021-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* value.c (set_value_component_location): Adjust the VALUE_LVAL
+	for internalvar components that have a dynamic location.
+
+2021-01-08  Tom de Vries  <tdevries@suse.de>
+
+	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.
+
+2021-01-08  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+	* f-lang.c (fortran_value_subarray): Call value_from_component.
+
+2021-01-07  Mike Frysinger  <vapier@gentoo.org>
+
+	* remote-sim.c: Include memory-map.h.
+	(gdbsim_target): Define memory_map override.
+	(gdbsim_target::memory_map): Define.
+
+2021-01-07  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (do_full_match): Conditionally skip "_ada_" prefix.
+
+2021-01-07  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (add_component_interval): Start loop using vector's
+	updated size.
+
+2021-01-06  Tom Tromey  <tromey@adacore.com>
+
+	* ada-lang.c (ada_evaluate_subexp) <BINOP_ADD, BINOP_SUB>:
+	Do not cast result.
+	* valarith.c (fixed_point_binop): Handle multiplication
+	and division specially.
+	* valops.c (value_to_gdb_mpq): New function.
+	(value_cast_to_fixed_point): Use it.
+
+2021-01-05  Hannes Domani  <ssbssa@yahoo.de>
+
+	* tui/tui-winsource.c (tui_source_window_base::refresh_window):
+	Call wnoutrefresh instead of tui_win_info::refresh_window.
+
+2021-01-05  Hannes Domani  <ssbssa@yahoo.de>
+
+	* tui/tui-source.c (tui_source_window::show_line_number):
+	Redraw second space after line number.
+
+2021-01-05  Hannes Domani  <ssbssa@yahoo.de>
+
+	PR tui/26927
+	* tui/tui-winsource.c (tui_source_window_base::refresh_window):
+	Fix source pad size in prefresh.
+	(tui_source_window_base::show_source_content): Grow source pad
+	if necessary.
+
+2021-01-04  Mike Frysinger  <vapier@gentoo.org>
+
+	* bfin-tdep.c (bfin_push_dummy_call): Use align_up.
+	(bfin_frame_align): Use align_down.
+
+2021-01-04  Tom de Vries  <tdevries@suse.de>
+
+	* buildsym.c (buildsym_compunit::record_line): Filter out end-of-seq
+	terminators that do not terminate anything.
+
+2021-01-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* debug.c (debug_print_depth): New.
+	* infrun.h (INFRUN_SCOPED_DEBUG_START_END): New.
+	(INFRUN_SCOPED_DEBUG_ENTER_EXIT): New.
+	* infrun.c (start_step_over): Use
+	INFRUN_SCOPED_DEBUG_ENTER_EXIT.
+	(proceed): Use INFRUN_SCOPED_DEBUG_ENTER_EXIT and
+	INFRUN_SCOPED_DEBUG_START_END.
+	(fetch_inferior_event): Use INFRUN_SCOPED_DEBUG_ENTER_EXIT.
+
+2021-01-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* infrun.c (print_target_wait_results): Use infrun_debug_printf.
+
+2021-01-04  Simon Marchi  <simon.marchi@efficios.com>
+
+	* utils.c (vfprintf_unfiltered): Print timestamp only when
+	previous debug output ended with a newline.
+
+2021-01-04  Luis Machado  <luis.machado@linaro.org>
+
+	Update all users of trad_frame_saved_reg to use the new member
+	functions.
+
+	Remote all struct keywords from declarations of trad_frame_saved_reg
+	types, except on forward declarations.
+
+	* aarch64-tdep.c: Update.
+	* alpha-mdebug-tdep.c: Update.
+	* alpha-tdep.c: Update.
+	* arc-tdep.c: Update.
+	* arm-tdep.c: Update.
+	* avr-tdep.c: Update.
+	* cris-tdep.c: Update.
+	* csky-tdep.c: Update.
+	* frv-tdep.c: Update.
+	* hppa-linux-tdep.c: Update.
+	* hppa-tdep.c: Update.
+	* hppa-tdep.h: Update.
+	* lm32-tdep.c: Update.
+	* m32r-linux-tdep.c: Update.
+	* m32r-tdep.c: Update.
+	* m68hc11-tdep.c: Update.
+	* mips-tdep.c: Update.
+	* moxie-tdep.c: Update.
+	* riscv-tdep.c: Update.
+	* rs6000-tdep.c: Update.
+	* s390-linux-tdep.c: Update.
+	* s390-tdep.c: Update.
+	* score-tdep.c: Update.
+	* sparc-netbsd-tdep.c: Update.
+	* sparc-sol2-tdep.c: Update.
+	* sparc64-fbsd-tdep.c: Update.
+	* sparc64-netbsd-tdep.c: Update.
+	* sparc64-obsd-tdep.c: Update.
+	* sparc64-sol2-tdep.c: Update.
+	* tilegx-tdep.c: Update.
+	* v850-tdep.c: Update.
+	* vax-tdep.c: Update.
+
+	* frame-unwind.c (frame_unwind_got_bytes): Make parameter const.
+	* frame-unwind.h (frame_unwind_got_bytes): Likewise.
+
+	* trad-frame.c: Update.
+	Remove TF_REG_* enum.
+	(trad_frame_alloc_saved_regs): Add a static assertion to check for
+	a trivially-constructible struct.
+	(trad_frame_reset_saved_regs): Adjust to use member function.
+	(trad_frame_value_p): Likewise.
+	(trad_frame_addr_p): Likewise.
+	(trad_frame_realreg_p): Likewise.
+	(trad_frame_value_bytes_p): Likewise.
+	(trad_frame_set_value): Likewise.
+	(trad_frame_set_realreg): Likewise.
+	(trad_frame_set_addr): Likewise.
+	(trad_frame_set_unknown): Likewise.
+	(trad_frame_set_value_bytes): Likewise.
+	(trad_frame_get_prev_register): Likewise.
+	* trad-frame.h: Update.
+	(trad_frame_saved_reg_kind): New enum.
+	(struct trad_frame_saved_reg) <addr, realreg, data>: Remove.
+	<m_kind, m_reg>: New member fields.
+	<set_value, set_realreg, set_addr, set_unknown, set_value_bytes>
+	<kind, value, realreg, addr, value_bytes, is_value, is_realreg>
+	<is_addr, is_unknown, is_value_bytes>: New member functions.
+
+2021-01-02  Simon Marchi  <simon.marchi@polymtl.ca>
+
+	* target-float.c: Fix typos.
+
+2021-01-02  Hannes Domani  <ssbssa@yahoo.de>
+
+	* gdb-gdb.py.in: Fix main_type.flds_bnds.bounds pretty printer.
+
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* gdbarch.sh: Update copyright year range.
+
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	Update copyright year range in copyright header of all GDB files.
+
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* copyright.py (get_update_list): Add "gdbserver" and "gdbsupport"
+	to the list of directories to update.
+
+2021-01-01  Joel Brobecker  <brobecker@adacore.com>
+
+	* top.c (print_gdb_version): Update copyright year.
+
+2021-01-01, 21  Joel Brobecker  <brobecker@adacore.com>
+
+	* config/djgpp/fnchange.lst: Add entry for gdb/ChangeLog-2020.
+
+For older changes see ChangeLog-2020.
+
+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.20200303/gdb/charset.c ./gdb/charset.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/charset.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/charset.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Character set conversion support for GDB.
 
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,15 +17,13 @@
    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 "charset.h"
-#include "gdbcmd.h"
-#include "gdb_obstack.h"
+#include "cli/cli-cmds.h"
+#include "gdbsupport/gdb_obstack.h"
 #include "gdbsupport/gdb_wait.h"
 #include "charset-list.h"
 #include "gdbsupport/environ.h"
 #include "arch-utils.h"
-#include "gdbsupport/gdb_vecs.h"
 #include <ctype.h>
 
 #ifdef USE_WIN32API
@@ -72,6 +70,8 @@
 
 #ifdef PHONY_ICONV
 
+#include "extract-store-integer.h"
+
 /* Provide a phony iconv that does as little as possible.  Also,
    arrange for there to be a single available character set.  */
 
@@ -232,11 +232,11 @@ show_host_charset_name (struct ui_file *
 			const char *value)
 {
   if (!strcmp (value, "auto"))
-    fprintf_filtered (file,
-		      _("The host character set is \"auto; currently %s\".\n"),
-		      auto_host_charset_name);
+    gdb_printf (file,
+		_("The host character set is \"auto; currently %s\".\n"),
+		auto_host_charset_name);
   else
-    fprintf_filtered (file, _("The host character set is \"%s\".\n"), value);
+    gdb_printf (file, _("The host character set is \"%s\".\n"), value);
 }
 
 static const char *target_charset_name = "auto";
@@ -245,13 +245,13 @@ show_target_charset_name (struct ui_file
 			  struct cmd_list_element *c, const char *value)
 {
   if (!strcmp (value, "auto"))
-    fprintf_filtered (file,
-		      _("The target character set is \"auto; "
-		        "currently %s\".\n"),
-		      gdbarch_auto_charset (get_current_arch ()));
+    gdb_printf (file,
+		_("The target character set is \"auto; "
+		  "currently %s\".\n"),
+		gdbarch_auto_charset (get_current_arch ()));
   else
-    fprintf_filtered (file, _("The target character set is \"%s\".\n"),
-		      value);
+    gdb_printf (file, _("The target character set is \"%s\".\n"),
+		value);
 }
 
 static const char *target_wide_charset_name = "auto";
@@ -262,22 +262,22 @@ show_target_wide_charset_name (struct ui
 			       const char *value)
 {
   if (!strcmp (value, "auto"))
-    fprintf_filtered (file,
-		      _("The target wide character set is \"auto; "
-		        "currently %s\".\n"),
-		      gdbarch_auto_wide_charset (get_current_arch ()));
+    gdb_printf (file,
+		_("The target wide character set is \"auto; "
+		  "currently %s\".\n"),
+		gdbarch_auto_wide_charset (get_current_arch ()));
   else
-    fprintf_filtered (file, _("The target wide character set is \"%s\".\n"),
-		      value);
+    gdb_printf (file, _("The target wide character set is \"%s\".\n"),
+		value);
 }
 
-static const char *default_charset_names[] =
+static const char * const default_charset_names[] =
 {
   DEFAULT_CHARSET_NAMES
   0
 };
 
-static const char **charset_enum;
+static const char * const *charset_enum;
 
 
 /* If the target wide character set has big- or little-endian
@@ -463,20 +463,6 @@ host_letter_to_control_character (char c
   return c & 0237;
 }
 
-/* Convert a host character, C, to its hex value.  C must already have
-   been validated using isxdigit.  */
-
-int
-host_hex_value (char c)
-{
-  if (isdigit (c))
-    return c - '0';
-  if (c >= 'a' && c <= 'f')
-    return 10 + c - 'a';
-  gdb_assert (c >= 'A' && c <= 'F');
-  return 10 + c - 'A';
-}
-
 
 /* Public character management functions.  */
 
@@ -708,7 +694,13 @@ struct charset_vector
 {
   ~charset_vector ()
   {
-    clear ();
+    /* Note that we do not call charset_vector::clear, which would also xfree
+       the elements.  This destructor is only called after exit, at which point
+       those will be freed anyway on process exit, so not freeing them now is
+       not classified as a memory leak.  OTOH, freeing them now might be
+       classified as a data race, because some worker thread might still be
+       accessing them.  */
+    charsets.clear ();
   }
 
   void clear ()
@@ -818,7 +810,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");
@@ -946,7 +939,7 @@ default_auto_wide_charset (void)
 
 /* GDB cannot handle strings correctly if this size is different.  */
 
-gdb_static_assert (sizeof (gdb_wchar_t) == 2 || sizeof (gdb_wchar_t) == 4);
+static_assert (sizeof (gdb_wchar_t) == 2 || sizeof (gdb_wchar_t) == 4);
 
 /* intermediate_encoding returns the charset used internally by
    GDB to convert between target and host encodings. As the test above
@@ -959,50 +952,45 @@ intermediate_encoding (void)
 {
   iconv_t desc;
   static const char *stored_result = NULL;
-  char *result;
+  gdb::unique_xmalloc_ptr<char> result;
 
   if (stored_result)
     return stored_result;
   result = xstrprintf ("UTF-%d%s", (int) (sizeof (gdb_wchar_t) * 8),
 		       ENDIAN_SUFFIX);
   /* Check that the name is supported by iconv_open.  */
-  desc = iconv_open (result, host_charset ());
+  desc = iconv_open (result.get (), host_charset ());
   if (desc != (iconv_t) -1)
     {
       iconv_close (desc);
-      stored_result = result;
-      return result;
+      stored_result = result.release ();
+      return stored_result;
     }
-  /* Not valid, free the allocated memory.  */
-  xfree (result);
   /* Second try, with UCS-2 type.  */
   result = xstrprintf ("UCS-%d%s", (int) sizeof (gdb_wchar_t),
 		       ENDIAN_SUFFIX);
   /* Check that the name is supported by iconv_open.  */
-  desc = iconv_open (result, host_charset ());
+  desc = iconv_open (result.get (), host_charset ());
   if (desc != (iconv_t) -1)
     {
       iconv_close (desc);
-      stored_result = result;
-      return result;
+      stored_result = result.release ();
+      return stored_result;
     }
-  /* 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)
+INIT_GDB_FILE (charset)
 {
   /* The first element is always "auto".  */
   charsets.charsets.push_back (xstrdup ("auto"));
   find_charset_names ();
 
   if (charsets.charsets.size () > 1)
-    charset_enum = (const char **) charsets.charsets.data ();
+    charset_enum = (const char * const *) charsets.charsets.data ();
   else
     charset_enum = default_charset_names;
 
@@ -1031,6 +1019,9 @@ _initialize_charset (void)
 #endif
 #endif
 
+  /* Recall that the first element is always "auto".  */
+  host_charset_name = charset_enum[0];
+  gdb_assert (strcmp (host_charset_name, "auto") == 0);
   add_setshow_enum_cmd ("charset", class_support,
 			charset_enum, &host_charset_name, _("\
 Set the host and target character sets."), _("\
@@ -1059,6 +1050,9 @@ To see a list of the character sets GDB
 			show_host_charset_name,
 			&setlist, &showlist);
 
+  /* Recall that the first element is always "auto".  */
+  target_charset_name = charset_enum[0];
+  gdb_assert (strcmp (target_charset_name, "auto") == 0);
   add_setshow_enum_cmd ("target-charset", class_support,
 			charset_enum, &target_charset_name, _("\
 Set the target character set."), _("\
@@ -1071,6 +1065,9 @@ To see a list of the character sets GDB
 			show_target_charset_name,
 			&setlist, &showlist);
 
+  /* Recall that the first element is always "auto".  */
+  target_wide_charset_name = charset_enum[0];
+  gdb_assert (strcmp (target_wide_charset_name, "auto") == 0);
   add_setshow_enum_cmd ("target-wide-charset", class_support,
 			charset_enum, &target_wide_charset_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.20200303/gdb/charset.h ./gdb/charset.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/charset.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/charset.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* Character set conversion support for GDB.
-   Copyright (C) 2001-2020 Free Software Foundation, Inc.
+   Copyright (C) 2001-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,8 +16,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/>.  */
 
-#ifndef CHARSET_H
-#define CHARSET_H
+#ifndef GDB_CHARSET_H
+#define GDB_CHARSET_H
 
 #include "gdbsupport/def-vector.h"
 
@@ -159,9 +159,10 @@ class wchar_iterator
    character.  */
 char host_letter_to_control_character (char c);
 
-/* Convert a hex digit character to its numeric value.  E.g., 'f' is
-   converted to 15.  This function assumes that C is a valid hex
-   digit.  Both upper- and lower-case letters are recognized.  */
-int host_hex_value (char c);
+#if WORDS_BIGENDIAN
+#define HOST_UTF32 "UTF-32BE"
+#else
+#define HOST_UTF32 "UTF-32LE"
+#endif
 
-#endif /* CHARSET_H */
+#endif /* GDB_CHARSET_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.20200303/gdb/charset-list.h ./gdb/charset-list.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/charset-list.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/charset-list.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* List of character set names for GDB.
 
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 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/>.  */
 
-#ifndef CHARSET_LIST_H
-#define CHARSET_LIST_H
+#ifndef GDB_CHARSET_LIST_H
+#define GDB_CHARSET_LIST_H
 
 /* Note that the first entry must always be "auto".
    The remaining entries were created by running this script:
@@ -1192,4 +1192,4 @@
 "WS2", \
 "YU",
 
-#endif /* CHARSET_LIST_H */
+#endif /* GDB_CHARSET_LIST_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.20200303/gdb/check-include-guards.py ./gdb/check-include-guards.py
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/check-include-guards.py	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/check-include-guards.py	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,134 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2024-2025 Free Software Foundation, Inc.
+#
+# This file is part of GDB.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# 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 is intended to be run from pre-commit.  You can also run it by
+# hand by passing repository-relative filenames to it, like:
+#   ./gdb/check-include-guards.py [--update] gdb/*.h
+# When --update is used, rewrite the files in place as needed.
+
+
+import re
+import sys
+from typing import List
+
+DEF = re.compile("^#ifndef ([A-Za-z0-9_]+)\n")
+OLDDEF = re.compile("^#if !defined *\\(([A-Za-z0-9_]+)\\)\n")
+
+# Some headers -- in particular, ones that aren't maintained by gdb --
+# should be excluded from the checks.
+EXCLUDED = frozenset(["gdbsupport/unordered_dense.h"])
+
+
+# See if
+write_files = False
+args = sys.argv[1:]
+if len(args) > 0 and args[0] == "--update":
+    write_files = True
+    args = args[1:]
+
+
+def failure(filename: str, ndx: int, text: str):
+    print(filename + ":" + str(ndx + 1) + ": " + text, file=sys.stderr)
+    sys.exit(1)
+
+
+def skip_comments_and_blanks(ndx: int, contents: List[str]):
+    while ndx < len(contents) and contents[ndx].startswith("/*"):
+        while ndx < len(contents):
+            ndx += 1
+            if contents[ndx - 1].endswith("*/\n"):
+                break
+        # Skip blank lines.
+        while ndx < len(contents):
+            if contents[ndx].strip() != "":
+                break
+            ndx += 1
+    return ndx
+
+
+def write_header(filename: str, contents: List[str]):
+    with open(filename, "w") as f:
+        f.writelines(contents)
+
+
+def check_header(filename: str):
+    if filename in EXCLUDED:
+        return
+
+    # Turn x/y-z.h into X_Y_Z_H.
+    assert filename.endswith(".h")
+    expected = filename.replace("-", "_")
+    expected = expected.replace(".", "_")
+    expected = expected.replace("/", "_")
+    expected = expected.upper()
+    with open(filename) as f:
+        contents = list(f)
+    if len(contents) == 0:
+        # Empty file -- pathological but we can just ignore rather
+        # than crashing.
+        return
+    if "THIS FILE IS GENERATED" in contents[0]:
+        # Ignore.
+        return
+    if not contents[0].startswith("/*"):
+        failure(filename, 0, "header should start with comment")
+    i = skip_comments_and_blanks(0, contents)
+    if i == len(contents):
+        failure(filename, i, "unterminated intro comment or missing body")
+    m = DEF.match(contents[i])
+    force_rewrite = False
+    if not m:
+        m = OLDDEF.match(contents[i])
+        if not m:
+            failure(filename, i, "no header guard")
+        force_rewrite = True
+    symbol = m.group(1)
+    # Either None or a tuple like (LINE, TEXT) that describes a needed
+    # update.
+    updated = None
+    if symbol != expected:
+        force_rewrite = True
+    if force_rewrite:
+        contents[i] = "#ifndef " + expected + "\n"
+        updated = (i, "wrong symbol in ifndef")
+    i += 1
+    if i == len(contents):
+        failure(filename, i, "premature EOF")
+    if not contents[i].startswith("#define "):
+        failure(filename, i, "no define of header guard")
+    if contents[i] != "#define " + expected + "\n":
+        contents[i] = "#define " + expected + "\n"
+        if updated is None:
+            updated = (i, "wrong symbol in define")
+    i = len(contents) - 1
+    if not contents[i].startswith("#endif"):
+        failure(filename, i, "no trailing endif")
+    if contents[i] != "#endif /* " + expected + " */\n":
+        contents[i] = "#endif /* " + expected + " */\n"
+        if updated is None:
+            updated = (i, "wrong endif line")
+    if updated is not None:
+        if write_files:
+            write_header(filename, contents)
+        else:
+            failure(filename, *updated)
+
+
+for filename in args:
+    check_header(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.20200303/gdb/c-lang.c ./gdb/c-lang.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/c-lang.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/c-lang.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
+#include "extract-store-integer.h"
 #include "symtab.h"
 #include "gdbtypes.h"
 #include "expression.h"
@@ -32,10 +32,11 @@
 #include "demangle.h"
 #include "cp-abi.h"
 #include "cp-support.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
 #include <ctype.h>
 #include "gdbcore.h"
 #include "gdbarch.h"
+#include "c-exp.h"
 
 /* Given a C string type, STR_TYPE, return the corresponding target
    character set name.  */
@@ -62,7 +63,7 @@ charset_for_string_type (c_string_type s
       else
 	return "UTF-32LE";
     }
-  internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
+  internal_error (_("unhandled c_string_type"));
 }
 
 /* Classify ELTTYPE according to what kind of character it is.  Return
@@ -84,9 +85,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 (name == nullptr)
 	{
 	  result = C_CHAR;
 	  goto done;
@@ -110,14 +111,14 @@ 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.  */
       check_typedef (elttype);
 
-      if (TYPE_TARGET_TYPE (elttype))
-	elttype = TYPE_TARGET_TYPE (elttype);
+      if (elttype->target_type ())
+	elttype = elttype->target_type ();
       else
 	{
 	  /* Perhaps check_typedef did not update the target type.  In
@@ -142,72 +143,75 @@ classify_type (struct type *elttype, str
    for printing characters and strings is language specific.  */
 
 void
-c_emit_char (int c, struct type *type,
-	     struct ui_file *stream, int quoter)
+language_defn::emitchar (int c, struct type *type,
+			 struct ui_file *stream, int quoter) const
 {
   const char *encoding;
 
-  classify_type (type, get_type_arch (type), &encoding);
+  classify_type (type, type->arch (), &encoding);
   generic_emit_char (c, type, stream, quoter, encoding);
 }
 
+/* See language.h.  */
+
 void
-c_printchar (int c, struct type *type, struct ui_file *stream)
+language_defn::printchar (int c, struct type *type,
+			  struct ui_file * stream) const
 {
   c_string_type str_type;
 
-  str_type = classify_type (type, get_type_arch (type), NULL);
+  str_type = classify_type (type, type->arch (), NULL);
   switch (str_type)
     {
     case C_CHAR:
       break;
     case C_WIDE_CHAR:
-      fputc_filtered ('L', stream);
+      gdb_putc ('L', stream);
       break;
     case C_CHAR_16:
-      fputc_filtered ('u', stream);
+      gdb_putc ('u', stream);
       break;
     case C_CHAR_32:
-      fputc_filtered ('U', stream);
+      gdb_putc ('U', stream);
       break;
     }
 
-  fputc_filtered ('\'', stream);
-  LA_EMIT_CHAR (c, type, stream, '\'');
-  fputc_filtered ('\'', stream);
+  gdb_putc ('\'', stream);
+  emitchar (c, type, stream, '\'');
+  gdb_putc ('\'', stream);
 }
 
 /* Print the character string STRING, printing at most LENGTH
    characters.  LENGTH is -1 if the string is nul terminated.  Each
    character is WIDTH bytes long.  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
+   hits print_max_chars; 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
-c_printstr (struct ui_file *stream, struct type *type, 
-	    const gdb_byte *string, unsigned int length, 
-	    const char *user_encoding, int force_ellipses,
-	    const struct value_print_options *options)
+language_defn::printstr (struct ui_file *stream, struct type *type,
+			 const gdb_byte *string, unsigned int length,
+			 const char *user_encoding, int force_ellipses,
+			 const struct value_print_options *options) const
 {
   c_string_type str_type;
   const char *type_encoding;
   const char *encoding;
 
-  str_type = (classify_type (type, get_type_arch (type), &type_encoding)
+  str_type = (classify_type (type, type->arch (), &type_encoding)
 	      & ~C_CHAR);
   switch (str_type)
     {
     case C_STRING:
       break;
     case C_WIDE_STRING:
-      fputs_filtered ("L", stream);
+      gdb_puts ("L", stream);
       break;
     case C_STRING_16:
-      fputs_filtered ("u", stream);
+      gdb_puts ("u", stream);
       break;
     case C_STRING_32:
-      fputs_filtered ("U", stream);
+      gdb_puts ("U", stream);
       break;
     }
 
@@ -241,8 +245,8 @@ c_get_string (struct value *value, gdb::
 {
   int err, width;
   unsigned int fetchlimit;
-  struct type *type = check_typedef (value_type (value));
-  struct type *element_type = TYPE_TARGET_TYPE (type);
+  struct type *type = check_typedef (value->type ());
+  struct type *element_type = type->target_type ();
   int req_length = *length;
   enum bfd_endian byte_order
     = type_byte_order (type);
@@ -250,23 +254,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.  */
@@ -274,8 +278,8 @@ c_get_string (struct value *value, gdb::
 
   if (! c_textual_element_type (element_type, 0))
     goto error;
-  classify_type (element_type, get_type_arch (element_type), charset);
-  width = TYPE_LENGTH (element_type);
+  classify_type (element_type, element_type->arch (), charset);
+  width = element_type->length ();
 
   /* If the string lives in GDB's memory instead of the inferior's,
      then we just need to copy it to BUFFER.  Also, since such strings
@@ -290,27 +294,27 @@ c_get_string (struct value *value, gdb::
      C struct hack.  So, only do this if either no length was
      specified, or the length is within the existing bounds.  This
      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)
+  if ((value->lval () == not_lval
+       || value->lval () == lval_internalvar
+       || type->code () == TYPE_CODE_ARRAY)
       && fetchlimit != UINT_MAX
       && (*length < 0 || *length <= fetchlimit))
     {
       int i;
-      const gdb_byte *contents = value_contents (value);
+      const gdb_byte *contents = value->contents ().data ();
 
       /* If a length is specified, use that.  */
       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,33 +326,33 @@ 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)
+	  if (value->lval () != lval_memory)
 	    error (_("Attempt to take address of value "
 		     "not located in memory."));
-	  addr = value_address (value);
+	  addr = value->address ();
 	}
       else
 	addr = value_as_address (value);
 
       /* Prior to the fix for PR 16196 read_string would ignore fetchlimit
-	 if length > 0.  The old "broken" behaviour is the behaviour we want:
+	 if length > 0.  The old "broken" behavior is the behavior we want:
 	 The caller may want to fetch 100 bytes from a variable length array
 	 implemented using the common idiom of having an array of length 1 at
 	 the end of a struct.  In this case we want to ignore the declared
 	 size of the array.  However, it's counterintuitive to implement that
-	 behaviour in read_string: what does fetchlimit otherwise mean if
-	 length > 0.  Therefore we implement the behaviour we want here:
+	 behavior in read_string: what does fetchlimit otherwise mean if
+	 length > 0.  Therefore we implement the behavior we want here:
 	 If *length > 0, don't specify a fetchlimit.  This preserves the
-	 previous behaviour.  We could move this check above where we know
+	 previous behavior.  We could move this check above where we know
 	 whether the array is declared with a fixed size, but we only want
-	 to apply this behaviour when calling read_string.  PR 16286.  */
+	 to apply this behavior when calling read_string.  PR 16286.  */
       if (*length > 0)
 	fetchlimit = UINT_MAX;
 
-      err = read_string (addr, *length, width, fetchlimit,
-			 byte_order, buffer, length);
+      err = target_read_string (addr, *length, width, fetchlimit,
+				buffer, length);
       if (err != 0)
 	memory_error (TARGET_XFER_E_IO, addr);
     }
@@ -396,8 +400,8 @@ c_get_string (struct value *value, gdb::
    OUTPUT.  LENGTH is the maximum length of the UCN, either 4 or 8.
    Returns a pointer to just after the final digit of the UCN.  */
 
-static char *
-convert_ucn (char *p, char *limit, const char *dest_charset,
+static const char *
+convert_ucn (const char *p, const char *limit, const char *dest_charset,
 	     struct obstack *output, int length)
 {
   unsigned long result = 0;
@@ -405,7 +409,7 @@ convert_ucn (char *p, char *limit, const
   int i;
 
   for (i = 0; i < length && p < limit && ISXDIGIT (*p); ++i, ++p)
-    result = (result << 4) + host_hex_value (*p);
+    result = (result << 4) + fromhex (*p);
 
   for (i = 3; i >= 0; --i)
     {
@@ -428,9 +432,9 @@ emit_numeric_character (struct type *typ
 {
   gdb_byte *buffer;
 
-  buffer = (gdb_byte *) alloca (TYPE_LENGTH (type));
+  buffer = (gdb_byte *) alloca (type->length ());
   pack_long (buffer, type, value);
-  obstack_grow (output, buffer, TYPE_LENGTH (type));
+  obstack_grow (output, buffer, type->length ());
 }
 
 /* Convert an octal escape sequence.  TYPE is the target character
@@ -438,9 +442,9 @@ emit_numeric_character (struct type *typ
    farther than LIMIT.  The result is written to OUTPUT.  Returns a
    pointer to just after the final digit of the escape sequence.  */
 
-static char *
-convert_octal (struct type *type, char *p, 
-	       char *limit, struct obstack *output)
+static const char *
+convert_octal (struct type *type, const char *p,
+	       const char *limit, struct obstack *output)
 {
   int i;
   unsigned long value = 0;
@@ -449,7 +453,7 @@ convert_octal (struct type *type, char *
        i < 3 && p < limit && ISDIGIT (*p) && *p != '8' && *p != '9';
        ++i)
     {
-      value = 8 * value + host_hex_value (*p);
+      value = 8 * value + fromhex (*p);
       ++p;
     }
 
@@ -463,15 +467,15 @@ convert_octal (struct type *type, char *
    than LIMIT.  The result is written to OUTPUT.  Returns a pointer to
    just after the final digit of the escape sequence.  */
 
-static char *
-convert_hex (struct type *type, char *p,
-	     char *limit, struct obstack *output)
+static const char *
+convert_hex (struct type *type, const char *p,
+	     const char *limit, struct obstack *output)
 {
   unsigned long value = 0;
 
   while (p < limit && ISXDIGIT (*p))
     {
-      value = 16 * value + host_hex_value (*p);
+      value = 16 * value + fromhex (*p);
       ++p;
     }
 
@@ -480,13 +484,6 @@ convert_hex (struct type *type, char *p,
   return p;
 }
 
-#define ADVANCE					\
-  do {						\
-    ++p;					\
-    if (p == limit)				\
-      error (_("Malformed escape sequence"));	\
-  } while (0)
-
 /* Convert an escape sequence to a target format.  TYPE is the target
    character type to use, and DEST_CHARSET is the name of the target
    character set.  The backslash of the escape sequence is at *P, and
@@ -494,22 +491,33 @@ convert_hex (struct type *type, char *p,
    written to OUTPUT.  Returns a pointer to just past the final
    character of the escape sequence.  */
 
-static char *
+static const char *
 convert_escape (struct type *type, const char *dest_charset,
-		char *p, char *limit, struct obstack *output)
+		const char *p, const char *limit, struct obstack *output)
 {
+  auto advance = [&] ()
+    {
+      ++p;
+      if (p == limit)
+	error (_("Malformed escape sequence"));
+    };
+
   /* Skip the backslash.  */
-  ADVANCE;
+  advance ();
 
   switch (*p)
     {
     case '\\':
-      obstack_1grow (output, '\\');
+      /* Convert the backslash itself.  This is probably overkill but
+	 it doesn't hurt to do the full conversion.  */
+      convert_between_encodings (host_charset (), dest_charset,
+				 (const gdb_byte *) p, 1, 1,
+				 output, translit_none);
       ++p;
       break;
 
     case 'x':
-      ADVANCE;
+      advance ();
       if (!ISXDIGIT (*p))
 	error (_("\\x used with no following hex digits."));
       p = convert_hex (type, p, limit, output);
@@ -531,7 +539,7 @@ convert_escape (struct type *type, const
       {
 	int length = *p == 'u' ? 4 : 8;
 
-	ADVANCE;
+	advance ();
 	if (!ISXDIGIT (*p))
 	  error (_("\\u used with no following hex digits"));
 	p = convert_ucn (p, limit, dest_charset, output, length);
@@ -548,16 +556,16 @@ convert_escape (struct type *type, const
    and TYPE is the type of target character to use.  */
 
 static void
-parse_one_string (struct obstack *output, char *data, int len,
+parse_one_string (struct obstack *output, const char *data, int len,
 		  const char *dest_charset, struct type *type)
 {
-  char *limit;
+  const char *limit;
 
   limit = data + len;
 
   while (data < limit)
     {
-      char *p = data;
+      const char *p = data;
 
       /* Look for next escape, or the end of the input.  */
       while (p < limit && *p != '\\')
@@ -565,7 +573,7 @@ parse_one_string (struct obstack *output
       /* If we saw a run of characters, convert them all.  */
       if (p > data)
 	convert_between_encodings (host_charset (), dest_charset,
-				   (gdb_byte *) data, p - data, 1,
+				   (const gdb_byte *) data, p - data, 1,
 				   output, translit_none);
       /* If we saw an escape, convert it.  */
       if (p < limit)
@@ -574,195 +582,138 @@ parse_one_string (struct obstack *output
     }
 }
 
-/* Expression evaluator for the C language family.  Most operations
-   are delegated to evaluate_subexp_standard; see that function for a
-   description of the arguments.  */
+namespace expr
+{
 
-struct value *
-evaluate_subexp_c (struct type *expect_type, struct expression *exp,
-		   int *pos, enum noside noside)
+value *
+c_string_operation::evaluate (struct type *expect_type,
+			      struct expression *exp,
+			      enum noside noside)
 {
-  enum exp_opcode op = exp->elts[*pos].opcode;
+  struct type *type;
+  struct value *result;
+  c_string_type dest_type;
+  const char *dest_charset;
+  int satisfy_expected = 0;
 
-  switch (op)
+  auto_obstack output;
+
+  dest_type = std::get<0> (m_storage);
+
+  switch (dest_type & ~C_CHAR)
     {
-    case OP_STRING:
-      {
-	int oplen, limit;
-	struct type *type;
-	struct value *result;
-	c_string_type dest_type;
-	const char *dest_charset;
-	int satisfy_expected = 0;
-
-	auto_obstack output;
-
-	++*pos;
-	oplen = longest_to_int (exp->elts[*pos].longconst);
-
-	++*pos;
-	limit = *pos + BYTES_TO_EXP_ELEM (oplen + 1);
-	dest_type = ((enum c_string_type_values)
-		     longest_to_int (exp->elts[*pos].longconst));
-	switch (dest_type & ~C_CHAR)
-	  {
-	  case C_STRING:
-	    type = language_string_char_type (exp->language_defn,
-					      exp->gdbarch);
-	    break;
-	  case C_WIDE_STRING:
-	    type = lookup_typename (exp->language_defn, "wchar_t", NULL, 0);
-	    break;
-	  case C_STRING_16:
-	    type = lookup_typename (exp->language_defn, "char16_t", NULL, 0);
-	    break;
-	  case C_STRING_32:
-	    type = lookup_typename (exp->language_defn, "char32_t", NULL, 0);
-	    break;
-	  default:
-	    internal_error (__FILE__, __LINE__, _("unhandled c_string_type"));
-	  }
-
-	/* Ensure TYPE_LENGTH is valid for TYPE.  */
-	check_typedef (type);
-
-	/* 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)
-	  {
-	    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)
-	      {
-		type = element_type;
-		satisfy_expected = 1;
-	      }
-	  }
-
-	dest_charset = charset_for_string_type (dest_type, exp->gdbarch);
-
-	++*pos;
-	while (*pos < limit)
-	  {
-	    int len;
-
-	    len = longest_to_int (exp->elts[*pos].longconst);
-
-	    ++*pos;
-	    if (noside != EVAL_SKIP)
-	      parse_one_string (&output, &exp->elts[*pos].string, len,
-				dest_charset, type);
-	    *pos += BYTES_TO_EXP_ELEM (len);
-	  }
-
-	/* Skip the trailing length and opcode.  */
-	*pos += 2;
-
-	if (noside == EVAL_SKIP)
-	  {
-	    /* Return a dummy value of the appropriate type.  */
-	    if (expect_type != NULL)
-	      result = allocate_value (expect_type);
-	    else if ((dest_type & C_CHAR) != 0)
-	      result = allocate_value (type);
-	    else
-	      result = value_cstring ("", 0, type);
-	    return result;
-	  }
-
-	if ((dest_type & C_CHAR) != 0)
-	  {
-	    LONGEST value;
-
-	    if (obstack_object_size (&output) != TYPE_LENGTH (type))
-	      error (_("Could not convert character "
-		       "constant to target character set"));
-	    value = unpack_long (type, (gdb_byte *) obstack_base (&output));
-	    result = value_from_longest (type, value);
-	  }
-	else
-	  {
-	    int i;
-
-	    /* Write the terminating character.  */
-	    for (i = 0; i < TYPE_LENGTH (type); ++i)
-	      obstack_1grow (&output, 0);
-
-	    if (satisfy_expected)
-	      {
-		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)
-		  {
-		    low_bound = 0;
-		    high_bound = (TYPE_LENGTH (expect_type) / element_size) - 1;
-		  }
-		if (obstack_object_size (&output) / element_size
-		    > (high_bound - low_bound + 1))
-		  error (_("Too many array elements"));
-
-		result = allocate_value (expect_type);
-		memcpy (value_contents_raw (result), obstack_base (&output),
-			obstack_object_size (&output));
-	      }
-	    else
-	      result = value_cstring ((const char *) obstack_base (&output),
-				      obstack_object_size (&output),
-				      type);
-	  }
-	return result;
-      }
+    case C_STRING:
+      type = language_string_char_type (exp->language_defn,
+					exp->gdbarch);
       break;
-
-    default:
+    case C_WIDE_STRING:
+      type = lookup_typename (exp->language_defn, "wchar_t", NULL, 0);
+      break;
+    case C_STRING_16:
+      type = lookup_typename (exp->language_defn, "char16_t", NULL, 0);
+      break;
+    case C_STRING_32:
+      type = lookup_typename (exp->language_defn, "char32_t", NULL, 0);
       break;
+    default:
+      internal_error (_("unhandled c_string_type"));
     }
-  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)));
+  /* 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 && expect_type->code () == TYPE_CODE_ARRAY)
+    {
+      struct type *element_type
+	= check_typedef (expect_type->target_type ());
+
+      if (element_type->code () == TYPE_CODE_INT
+	  || element_type->code () == TYPE_CODE_CHAR)
+	{
+	  type = element_type;
+	  satisfy_expected = 1;
+	}
+    }
+
+  dest_charset = charset_for_string_type (dest_type, exp->gdbarch);
+
+  for (const std::string &item : std::get<1> (m_storage))
+    parse_one_string (&output, item.c_str (), item.size (),
+		      dest_charset, type);
+
+  if ((dest_type & C_CHAR) != 0)
+    {
+      LONGEST value;
+
+      if (obstack_object_size (&output) != type->length ())
+	error (_("Could not convert character "
+		 "constant to target character set"));
+      value = unpack_long (type, (gdb_byte *) obstack_base (&output));
+      result = value_from_longest (type, value);
+    }
+  else
+    {
+      int element_size = type->length ();
+
+      if (satisfy_expected)
+	{
+	  LONGEST low_bound, high_bound;
+
+	  if (!get_discrete_bounds (expect_type->index_type (),
+				    &low_bound, &high_bound))
+	    {
+	      low_bound = 0;
+	      high_bound = (expect_type->length () / element_size) - 1;
+	    }
+	  if (obstack_object_size (&output) / element_size
+	      > (high_bound - low_bound + 1))
+	    error (_("Too many array elements"));
+
+	  result = value::allocate (expect_type);
+	  memcpy (result->contents_raw ().data (), obstack_base (&output),
+		  obstack_object_size (&output));
+	  /* Write the terminating character.  */
+	  memset (result->contents_raw ().data () + obstack_object_size (&output),
+		  0, element_size);
+	}
+      else
+	result = value_cstring ((const gdb_byte *) obstack_base (&output),
+				obstack_object_size (&output) / element_size,
+				type);
+    }
+  return result;
 }
 
+} /* namespace expr */
+
+
 /* 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 = type->target_type ();
       type = check_typedef (type);
     }
 
-  switch (TYPE_CODE (type))
+  switch (type->code ())
     {
     case TYPE_CODE_ARRAY:
       {
 	/* See if target type looks like a string.  */
-	struct type *array_target_type = TYPE_TARGET_TYPE (type);
-	return (TYPE_LENGTH (type) > 0
-		&& TYPE_LENGTH (array_target_type) > 0
+	struct type *array_target_type = type->target_type ();
+	return (type->length () > 0
+		&& array_target_type->length () > 0
 		&& c_textual_element_type (array_target_type, 0));
       }
     case TYPE_CODE_STRING:
       return true;
     case TYPE_CODE_PTR:
       {
-	struct type *element_type = TYPE_TARGET_TYPE (type);
+	struct type *element_type = type->target_type ();
 	return c_textual_element_type (element_type, 0);
       }
     default:
@@ -773,68 +724,20 @@ c_is_string_type_p (struct type *type)
 }
 
 
-/* Table mapping opcodes into strings for printing operators
-   and precedences of the operators.  */
 
-const struct op_print c_op_print_tab[] =
+/* See c-lang.h.  */
+
+gdb::unique_xmalloc_ptr<char>
+c_canonicalize_name (const char *name)
 {
-  {",", BINOP_COMMA, PREC_COMMA, 0},
-  {"=", BINOP_ASSIGN, PREC_ASSIGN, 1},
-  {"||", BINOP_LOGICAL_OR, PREC_LOGICAL_OR, 0},
-  {"&&", BINOP_LOGICAL_AND, PREC_LOGICAL_AND, 0},
-  {"|", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
-  {"^", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
-  {"&", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
-  {"==", BINOP_EQUAL, PREC_EQUAL, 0},
-  {"!=", BINOP_NOTEQUAL, PREC_EQUAL, 0},
-  {"<=", BINOP_LEQ, PREC_ORDER, 0},
-  {">=", BINOP_GEQ, PREC_ORDER, 0},
-  {">", BINOP_GTR, PREC_ORDER, 0},
-  {"<", BINOP_LESS, PREC_ORDER, 0},
-  {">>", BINOP_RSH, PREC_SHIFT, 0},
-  {"<<", BINOP_LSH, PREC_SHIFT, 0},
-  {"+", BINOP_ADD, PREC_ADD, 0},
-  {"-", BINOP_SUB, PREC_ADD, 0},
-  {"*", BINOP_MUL, PREC_MUL, 0},
-  {"/", BINOP_DIV, PREC_MUL, 0},
-  {"%", BINOP_REM, PREC_MUL, 0},
-  {"@", BINOP_REPEAT, PREC_REPEAT, 0},
-  {"+", UNOP_PLUS, PREC_PREFIX, 0},
-  {"-", UNOP_NEG, PREC_PREFIX, 0},
-  {"!", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
-  {"~", UNOP_COMPLEMENT, PREC_PREFIX, 0},
-  {"*", UNOP_IND, PREC_PREFIX, 0},
-  {"&", UNOP_ADDR, PREC_PREFIX, 0},
-  {"sizeof ", UNOP_SIZEOF, PREC_PREFIX, 0},
-  {"alignof ", UNOP_ALIGNOF, PREC_PREFIX, 0},
-  {"++", UNOP_PREINCREMENT, PREC_PREFIX, 0},
-  {"--", UNOP_PREDECREMENT, PREC_PREFIX, 0},
-  {NULL, OP_NULL, PREC_PREFIX, 0}
-};
+  if (strchr (name, ' ') != nullptr
+      || streq (name, "signed")
+      || streq (name, "unsigned"))
+    return cp_canonicalize_string (name);
+  return nullptr;
+}
+
 
-enum c_primitive_types {
-  c_primitive_type_int,
-  c_primitive_type_long,
-  c_primitive_type_short,
-  c_primitive_type_char,
-  c_primitive_type_float,
-  c_primitive_type_double,
-  c_primitive_type_void,
-  c_primitive_type_long_long,
-  c_primitive_type_signed_char,
-  c_primitive_type_unsigned_char,
-  c_primitive_type_unsigned_short,
-  c_primitive_type_unsigned_int,
-  c_primitive_type_unsigned_long,
-  c_primitive_type_unsigned_long_long,
-  c_primitive_type_long_double,
-  c_primitive_type_complex,
-  c_primitive_type_double_complex,
-  c_primitive_type_decfloat,
-  c_primitive_type_decdouble,
-  c_primitive_type_declong,
-  nr_c_primitive_types
-};
 
 void
 c_language_arch_info (struct gdbarch *gdbarch,
@@ -842,347 +745,417 @@ c_language_arch_info (struct gdbarch *gd
 {
   const struct builtin_type *builtin = builtin_type (gdbarch);
 
-  lai->string_char_type = builtin->builtin_char;
-  lai->primitive_type_vector
-    = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_c_primitive_types + 1,
-			      struct type *);
-  lai->primitive_type_vector [c_primitive_type_int] = builtin->builtin_int;
-  lai->primitive_type_vector [c_primitive_type_long] = builtin->builtin_long;
-  lai->primitive_type_vector [c_primitive_type_short] = builtin->builtin_short;
-  lai->primitive_type_vector [c_primitive_type_char] = builtin->builtin_char;
-  lai->primitive_type_vector [c_primitive_type_float] = builtin->builtin_float;
-  lai->primitive_type_vector [c_primitive_type_double] = builtin->builtin_double;
-  lai->primitive_type_vector [c_primitive_type_void] = builtin->builtin_void;
-  lai->primitive_type_vector [c_primitive_type_long_long] = builtin->builtin_long_long;
-  lai->primitive_type_vector [c_primitive_type_signed_char] = builtin->builtin_signed_char;
-  lai->primitive_type_vector [c_primitive_type_unsigned_char] = builtin->builtin_unsigned_char;
-  lai->primitive_type_vector [c_primitive_type_unsigned_short] = builtin->builtin_unsigned_short;
-  lai->primitive_type_vector [c_primitive_type_unsigned_int] = builtin->builtin_unsigned_int;
-  lai->primitive_type_vector [c_primitive_type_unsigned_long] = builtin->builtin_unsigned_long;
-  lai->primitive_type_vector [c_primitive_type_unsigned_long_long] = builtin->builtin_unsigned_long_long;
-  lai->primitive_type_vector [c_primitive_type_long_double] = builtin->builtin_long_double;
-  lai->primitive_type_vector [c_primitive_type_complex] = builtin->builtin_complex;
-  lai->primitive_type_vector [c_primitive_type_double_complex] = builtin->builtin_double_complex;
-  lai->primitive_type_vector [c_primitive_type_decfloat] = builtin->builtin_decfloat;
-  lai->primitive_type_vector [c_primitive_type_decdouble] = builtin->builtin_decdouble;
-  lai->primitive_type_vector [c_primitive_type_declong] = builtin->builtin_declong;
+  /* Helper function to allow shorter lines below.  */
+  auto add  = [&] (struct type * t)
+  {
+    lai->add_primitive_type (t);
+  };
+
+  add (builtin->builtin_int);
+  add (builtin->builtin_long);
+  add (builtin->builtin_short);
+  add (builtin->builtin_char);
+  add (builtin->builtin_float);
+  add (builtin->builtin_double);
+  add (builtin->builtin_void);
+  add (builtin->builtin_long_long);
+  add (builtin->builtin_signed_char);
+  add (builtin->builtin_unsigned_char);
+  add (builtin->builtin_unsigned_short);
+  add (builtin->builtin_unsigned_int);
+  add (builtin->builtin_unsigned_long);
+  add (builtin->builtin_unsigned_long_long);
+  add (builtin->builtin_long_double);
+  add (builtin->builtin_complex);
+  add (builtin->builtin_double_complex);
+  add (builtin->builtin_decfloat);
+  add (builtin->builtin_decdouble);
+  add (builtin->builtin_declong);
 
-  lai->bool_type_default = builtin->builtin_int;
+  lai->set_string_char_type (builtin->builtin_char);
+  lai->set_bool_type (builtin->builtin_int);
 }
 
-const struct exp_descriptor exp_descriptor_c = 
-{
-  print_subexp_standard,
-  operator_length_standard,
-  operator_check_standard,
-  op_name_standard,
-  dump_subexp_body_standard,
-  evaluate_subexp_c
-};
+/* Class representing the C language.  */
 
-static const char *c_extensions[] =
+class c_language : public language_defn
 {
-  ".c", NULL
-};
+public:
+  c_language ()
+    : language_defn (language_c)
+  { /* Nothing.  */ }
 
-extern const struct language_defn c_language_defn =
-{
-  "c",				/* Language name */
-  "C",
-  language_c,
-  range_check_off,
-  case_sensitive_on,
-  array_row_major,
-  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 */
-};
+  /* See language.h.  */
 
-enum cplus_primitive_types {
-  cplus_primitive_type_int,
-  cplus_primitive_type_long,
-  cplus_primitive_type_short,
-  cplus_primitive_type_char,
-  cplus_primitive_type_float,
-  cplus_primitive_type_double,
-  cplus_primitive_type_void,
-  cplus_primitive_type_long_long,
-  cplus_primitive_type_signed_char,
-  cplus_primitive_type_unsigned_char,
-  cplus_primitive_type_unsigned_short,
-  cplus_primitive_type_unsigned_int,
-  cplus_primitive_type_unsigned_long,
-  cplus_primitive_type_unsigned_long_long,
-  cplus_primitive_type_long_double,
-  cplus_primitive_type_complex,
-  cplus_primitive_type_double_complex,
-  cplus_primitive_type_bool,
-  cplus_primitive_type_decfloat,
-  cplus_primitive_type_decdouble,
-  cplus_primitive_type_declong,
-  cplus_primitive_type_char16_t,
-  cplus_primitive_type_char32_t,
-  cplus_primitive_type_wchar_t,
-  nr_cplus_primitive_types
-};
+  const char *name () const override
+  { return "c"; }
 
-static void
-cplus_language_arch_info (struct gdbarch *gdbarch,
-			  struct language_arch_info *lai)
-{
-  const struct builtin_type *builtin = builtin_type (gdbarch);
+  /* See language.h.  */
 
-  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;
+  const char *natural_name () const override
+  { return "C"; }
 
-  lai->bool_type_symbol = "bool";
-  lai->bool_type_default = builtin->builtin_bool;
-}
+  /* See language.h.  */
 
-static const char *cplus_extensions[] =
-{
-  ".C", ".cc", ".cp", ".cpp", ".cxx", ".c++", NULL
-};
+  const std::vector<const char *> &filename_extensions () const override
+  {
+    static const std::vector<const char *> extensions = { ".c" };
+    return extensions;
+  }
 
-extern const struct language_defn cplus_language_defn =
-{
-  "c++",			/* Language name */
-  "C++",
-  language_cplus,
-  range_check_off,
-  case_sensitive_on,
-  array_row_major,
-  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 */
+  /* 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 can_print_type_offsets () const override
+  {
+    return true;
+  }
+
+  /* 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, la_language, flags);
+  }
+
+  /* See language.h.  */
+
+  bool store_sym_names_in_linkage_form_p () const override
+  { return true; }
+
+  /* See language.h.  */
+
+  enum macro_expansion macro_expansion () const override
+  { return macro_expansion_c; }
 };
 
-static const char *asm_extensions[] =
+/* Single instance of the C language class.  */
+
+static c_language c_language_defn;
+
+/* A class for the C++ language.  */
+
+class cplus_language : public language_defn
 {
-  ".s", ".sx", ".S", NULL
+public:
+  cplus_language ()
+    : language_defn (language_cplus)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+
+  const char *name () const override
+  { return "c++"; }
+
+  /* See language.h.  */
+
+  const char *natural_name () const override
+  { return "C++"; }
+
+  /* See language.h  */
+  const char *get_digit_separator () const override
+  { return "\'"; }
+
+  /* See language.h.  */
+
+  const std::vector<const char *> &filename_extensions () const override
+  {
+    static const std::vector<const char *> extensions
+      = { ".C", ".cc", ".cp", ".cpp", ".cxx", ".c++" };
+    return extensions;
+  }
+
+  /* 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);
+
+    /* Helper function to allow shorter lines below.  */
+    auto add  = [&] (struct type * t)
+    {
+      lai->add_primitive_type (t);
+    };
+
+    add (builtin->builtin_int);
+    add (builtin->builtin_long);
+    add (builtin->builtin_short);
+    add (builtin->builtin_char);
+    add (builtin->builtin_float);
+    add (builtin->builtin_double);
+    add (builtin->builtin_void);
+    add (builtin->builtin_long_long);
+    add (builtin->builtin_signed_char);
+    add (builtin->builtin_unsigned_char);
+    add (builtin->builtin_unsigned_short);
+    add (builtin->builtin_unsigned_int);
+    add (builtin->builtin_unsigned_long);
+    add (builtin->builtin_unsigned_long_long);
+    add (builtin->builtin_long_double);
+    add (builtin->builtin_complex);
+    add (builtin->builtin_double_complex);
+    add (builtin->builtin_bool);
+    add (builtin->builtin_decfloat);
+    add (builtin->builtin_decdouble);
+    add (builtin->builtin_declong);
+    add (builtin->builtin_char16);
+    add (builtin->builtin_char32);
+    add (builtin->builtin_wchar);
+
+    lai->set_string_char_type (builtin->builtin_char);
+    lai->set_bool_type (builtin->builtin_bool, "bool");
+  }
+
+  /* See language.h.  */
+  struct type *lookup_transparent_type (const char *name,
+					domain_search_flags flags)
+    const override
+  {
+    return cp_lookup_transparent_type (name, flags);
+  }
+
+  /* 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,
+	gdb::unique_xmalloc_ptr<char> *demangled) const override
+  {
+    *demangled = gdb_demangle (mangled, DMGL_PARAMS | DMGL_ANSI);
+    return *demangled != NULL;
+  }
+
+  /* See language.h.  */
+
+  gdb::unique_xmalloc_ptr<char> demangle_symbol (const char *mangled,
+						 int options) const override
+  {
+    return gdb_demangle (mangled, options);
+  }
+
+  /* See language.h.  */
+
+  bool can_print_type_offsets () const override
+  {
+    return true;
+  }
+
+  /* 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, la_language, flags);
+  }
+
+  /* See language.h.  */
+
+  CORE_ADDR skip_trampoline (const frame_info_ptr &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_local
+       (const char *scope,
+	const char *name,
+	const struct block *block,
+	const domain_search_flags domain) const override
+  {
+    return cp_lookup_symbol_imports (scope, name, block, domain);
+  }
+
+  /* See language.h.  */
+
+  struct block_symbol lookup_symbol_nonlocal
+	(const char *name, const struct block *block,
+	 const domain_search_flags domain) const override
+  {
+    return cp_lookup_symbol_nonlocal (this, name, block, domain);
+  }
+
+  /* See language.h.  */
+
+  const char *name_of_this () const override
+  { return "this"; }
+
+  /* See language.h.  */
+
+  enum macro_expansion macro_expansion () const override
+  { return macro_expansion_c; }
+
+  /* See language.h.  */
+
+  const struct lang_varobj_ops *varobj_ops () const override
+  { return &cplus_varobj_ops; }
+
+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);
+  }
 };
 
-extern const struct language_defn asm_language_defn =
+/* The single instance of the C++ language class.  */
+
+static cplus_language cplus_language_defn;
+
+/* A class for the ASM language.  */
+
+class asm_language : public language_defn
 {
-  "asm",			/* Language name */
-  "assembly",
-  language_asm,
-  range_check_off,
-  case_sensitive_on,
-  array_row_major,
-  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 */
+public:
+  asm_language ()
+    : language_defn (language_asm)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+
+  const char *name () const override
+  { return "asm"; }
+
+  /* See language.h.  */
+
+  const char *natural_name () const override
+  { return "Assembly"; }
+
+  /* See language.h.  */
+
+  const std::vector<const char *> &filename_extensions () const override
+  {
+    static const std::vector<const char *> extensions
+      = { ".s", ".sx", ".S" };
+    return extensions;
+  }
+
+  /* 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.  */
+
+  bool can_print_type_offsets () const override
+  {
+    return true;
+  }
+
+  /* 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, la_language, flags);
+  }
+
+  /* See language.h.  */
+
+  bool store_sym_names_in_linkage_form_p () const override
+  { return true; }
+
+  /* See language.h.  */
+
+  enum macro_expansion macro_expansion () const override
+  { return macro_expansion_c; }
 };
 
-/* 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
+/* The single instance of the ASM language class.  */
+static asm_language asm_language_defn;
+
+/* A class for the minimal language.  This 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 =
+class minimal_language : public language_defn
 {
-  "minimal",			/* Language name */
-  "Minimal",
-  language_minimal,
-  range_check_off,
-  case_sensitive_on,
-  array_row_major,
-  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 */
+public:
+  minimal_language ()
+    : language_defn (language_minimal)
+  { /* Nothing.  */ }
+
+  /* See language.h.  */
+
+  const char *name () const override
+  { return "minimal"; }
+
+  /* See language.h.  */
+
+  const char *natural_name () const override
+  { return "Minimal"; }
+
+  /* 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 can_print_type_offsets () const override
+  {
+    return true;
+  }
+
+  /* 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, la_language, flags);
+  }
+
+  /* See language.h.  */
+
+  bool store_sym_names_in_linkage_form_p () const override
+  { return true; }
+
+  /* See language.h.  */
+
+  enum macro_expansion macro_expansion () const override
+  { return macro_expansion_c; }
 };
+
+/* 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.20200303/gdb/c-lang.h ./gdb/c-lang.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/c-lang.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/c-lang.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -18,17 +18,17 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 
-#if !defined (C_LANG_H)
-#define C_LANG_H 1
+#ifndef GDB_C_LANG_H
+#define GDB_C_LANG_H
 
 struct ui_file;
 struct language_arch_info;
 struct type_print_options;
 struct parser_state;
 
+#include "compile/compile.h"
 #include "value.h"
 #include "macroexp.h"
-#include "parser-defs.h"
 #include "gdbsupport/enum-flags.h"
 
 
@@ -66,60 +66,37 @@ extern int c_parse (struct parser_state
 extern int c_parse_escape (const char **, struct obstack *);
 
 /* Defined in c-typeprint.c */
-extern void c_print_type (struct type *, const char *,
-			  struct ui_file *, int, int,
-			  const struct type_print_options *);
-
-/* Print a type but allow the precise language to be specified.  */
-
-extern void c_print_type (struct type *, const char *,
-			  struct ui_file *, int, int,
-			  enum language,
-			  const struct type_print_options *);
+
+/* Print TYPE to STREAM using syntax appropriate for LANGUAGE, a
+   C-like language.  The other parameters are like
+   type_language_defn::print_type's.  */
+
+extern void c_print_type (struct type *type,
+			  const char *varstring,
+			  struct ui_file *stream,
+			  int show, int level,
+			  enum language language,
+			  const struct type_print_options *flags);
 
 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 *);
 
 /* These are in c-lang.c: */
 
-extern struct value *evaluate_subexp_c (struct type *expect_type,
-					struct expression *exp,
-					int *pos,
-					enum noside noside);
-
 extern void c_printchar (int, struct type *, struct ui_file *);
 
-extern void c_printstr (struct ui_file * stream,
-			struct type *elttype,
-			const gdb_byte *string,
-			unsigned int length,
-			const char *user_encoding,
-			int force_ellipses,
-			const struct value_print_options *options);
-
 extern void c_language_arch_info (struct gdbarch *gdbarch,
 				  struct language_arch_info *lai);
 
-extern const struct exp_descriptor exp_descriptor_c;
-
-extern void c_emit_char (int c, struct type *type,
-			 struct ui_file *stream, int quoter);
-
-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 +107,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.  */
@@ -163,43 +131,9 @@ extern bool c_is_string_type_p (struct t
 
 extern int c_textual_element_type (struct type *, char);
 
-/* Create a new instance of the C compiler and return it.  The new
-   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.  */
-
-extern compile_instance *c_get_compile_context (void);
-
-/* Create a new instance of the C++ compiler and return it.  The new
-   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.  */
-
-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
-   for a description of the arguments.  */
-
-extern std::string c_compute_program (compile_instance *inst,
-				      const char *input,
-				      struct gdbarch *gdbarch,
-				      const struct block *expr_block,
-				      CORE_ADDR expr_pc);
-
-/* 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
-   for a description of the arguments.  */
-
-extern std::string cplus_compute_program (compile_instance *inst,
-					  const char *input,
-					  struct gdbarch *gdbarch,
-					  const struct block *expr_block,
-					  CORE_ADDR expr_pc);
+/* Return the canonical form of the C symbol NAME.  If NAME is already
+   canonical, return nullptr.  */
+
+extern gdb::unique_xmalloc_ptr<char> c_canonicalize_name (const char *name);
 
-#endif /* !defined (C_LANG_H) */
+#endif /* GDB_C_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.20200303/gdb/cli/cli-cmds.c ./gdb/cli/cli-cmds.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-cmds.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-cmds.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB CLI commands.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,21 +17,20 @@
    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 "exceptions.h"
 #include "readline/tilde.h"
 #include "completer.h"
-#include "target.h"	/* For baud_rate, remote_debug and remote_timeout.  */
-#include "gdbsupport/gdb_wait.h"	/* For shell escape implementation.  */
-#include "gdbcmd.h"
-#include "gdb_regex.h"	/* Used by apropos_command.  */
+#include "target.h"
+#include "gdbsupport/gdb_wait.h"
+#include "gdbsupport/gdb_regex.h"
 #include "gdb_vfork.h"
 #include "linespec.h"
 #include "expression.h"
 #include "frame.h"
 #include "value.h"
 #include "language.h"
-#include "filenames.h"	/* For DOSish file names.  */
+#include "filenames.h"
 #include "objfiles.h"
 #include "source.h"
 #include "disasm.h"
@@ -39,23 +38,28 @@
 #include "gdbsupport/filestuff.h"
 #include "location.h"
 #include "block.h"
+#include "valprint.h"
 
 #include "ui-out.h"
 #include "interps.h"
 
 #include "top.h"
+#include "ui.h"
 #include "cli/cli-decode.h"
 #include "cli/cli-script.h"
 #include "cli/cli-setshow.h"
 #include "cli/cli-cmds.h"
 #include "cli/cli-style.h"
 #include "cli/cli-utils.h"
+#include "terminal.h"
 
 #include "extension.h"
 #include "gdbsupport/pathstuff.h"
+#include "gdbsupport/gdb_tilde_expand.h"
+#include "gdbsupport/eintr.h"
 
 #ifdef TUI
-#include "tui/tui.h"	/* For tui_active et.al.  */
+#include "tui/tui.h"
 #endif
 
 #include <fcntl.h>
@@ -74,7 +78,7 @@ static void filter_sals (std::vector<sym
 
 
 /* See cli-cmds.h. */
-unsigned int max_user_call_depth;
+unsigned int max_user_call_depth = 1024;
 
 /* Define all cmd_list_elements.  */
 
@@ -150,6 +154,10 @@ struct cmd_list_element *maintenanceprin
 
 struct cmd_list_element *maintenancechecklist;
 
+/* Chain containing all defined "maintenance flush" subcommands.  */
+
+struct cmd_list_element *maintenanceflushlist;
+
 struct cmd_list_element *setprintlist;
 
 struct cmd_list_element *showprintlist;
@@ -162,6 +170,10 @@ struct cmd_list_element *setchecklist;
 
 struct cmd_list_element *showchecklist;
 
+struct cmd_list_element *setsourcelist;
+
+struct cmd_list_element *showsourcelist;
+
 /* Command tracing state.  */
 
 int source_verbose = 0;
@@ -182,6 +194,11 @@ static const char *const script_ext_enum
 
 static const char *script_ext_mode = script_ext_soft;
 
+
+/* User-controllable flag to suppress event notification on CLI.  */
+
+static bool user_wants_cli_suppress_notification = false;
+
 /* Utility used everywhere when at least one argument is needed and
    none is supplied.  */
 
@@ -191,24 +208,15 @@ 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, "");
+  help_list (infolist, "info", all_commands, gdb_stdout);
 }
 
 /* See cli/cli-cmds.h.  */
@@ -230,11 +238,12 @@ 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);
 
-  if (set_cmd->var == nullptr)
+  if (!set_cmd->var.has_value ())
     error (_("Cannot use this setting with the \"with\" command"));
 
   std::string temp_value
@@ -243,7 +252,8 @@ with_command_1 (const char *set_cmd_pref
   if (nested_cmd == nullptr)
     nested_cmd = skip_spaces (delim + 2);
 
-  std::string org_value = get_setshow_command_value_string (set_cmd);
+  gdb_assert (set_cmd->var.has_value ());
+  std::string org_value = get_setshow_command_value_string (*set_cmd->var);
 
   /* Tweak the setting to the new temporary value.  */
   do_set_command (temp_value.c_str (), from_tty, set_cmd);
@@ -324,7 +334,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.  */
 
@@ -367,45 +424,21 @@ complete_command (const char *arg, int f
     {
       std::string arg_prefix (arg, word - arg);
 
-      if (result.number_matches == 1)
-	printf_unfiltered ("%s%s\n", arg_prefix.c_str (), result.match_list[0]);
-      else
-	{
-	  result.sort_match_list ();
-
-	  for (size_t i = 0; i < result.number_matches; i++)
-	    {
-	      printf_unfiltered ("%s%s",
-				 arg_prefix.c_str (),
-				 result.match_list[i + 1]);
-	      if (quote_char)
-		printf_unfiltered ("%c", quote_char);
-	      printf_unfiltered ("\n");
-	    }
-	}
-
-      if (result.number_matches == max_completions)
-	{
-	  /* ARG_PREFIX and WORD are included in the output so that emacs
-	     will include the message in the output.  */
-	  printf_unfiltered (_("%s%s %s\n"),
-			     arg_prefix.c_str (), word,
-			     get_max_completions_reached_message ());
-	}
+      result.print_matches (arg_prefix, word, quote_char);
     }
 }
 
 int
 is_complete_command (struct cmd_list_element *c)
 {
-  return cmd_cfunc_eq (c, complete_command);
+  return cmd_simple_func_eq (c, complete_command);
 }
 
 static void
 show_version (const char *args, int from_tty)
 {
   print_gdb_version (gdb_stdout, true);
-  printf_filtered ("\n");
+  gdb_printf ("\n");
 }
 
 static void
@@ -433,7 +466,20 @@ quit_command (const char *args, int from
   if (!quit_confirm ())
     error (_("Not confirmed."));
 
-  query_if_trace_running (from_tty);
+  try
+    {
+      query_if_trace_running (from_tty);
+    }
+  catch (const gdb_exception_error &ex)
+    {
+      if (ex.error == TARGET_CLOSE_ERROR)
+	/* We don't care about this since we're quitting anyway, so keep
+	   quitting.  */
+	exception_print (gdb_stderr, ex);
+      else
+	/* Rethrow, to properly handle error (_("Not confirmed.")).  */
+	throw;
+    }
 
   quit_force (args ? &exit_code : NULL, from_tty);
 }
@@ -448,17 +494,17 @@ pwd_command (const char *args, int from_
 
   if (cwd == NULL)
     error (_("Error finding name of working directory: %s"),
-           safe_strerror (errno));
+	   safe_strerror (errno));
 
   if (strcmp (cwd.get (), current_directory) != 0)
-    printf_unfiltered (_("Working directory %ps\n (canonically %ps).\n"),
-		       styled_string (file_name_style.style (),
-				      current_directory),
-		       styled_string (file_name_style.style (), cwd.get ()));
+    gdb_printf (_("Working directory %ps\n (canonically %ps).\n"),
+		styled_string (file_name_style.style (),
+			       current_directory),
+		styled_string (file_name_style.style (), cwd.get ()));
   else
-    printf_unfiltered (_("Working directory %ps.\n"),
-		       styled_string (file_name_style.style (),
-				      current_directory));
+    gdb_printf (_("Working directory %ps.\n"),
+		styled_string (file_name_style.style (),
+			       current_directory));
 }
 
 void
@@ -492,7 +538,7 @@ cd_command (const char *dir, int from_tt
   if (IS_DIR_SEPARATOR (dir[len - 1]))
     {
       /* Remove the trailing slash unless this is a root directory
-         (including a drive letter on non-Unix systems).  */
+	 (including a drive letter on non-Unix systems).  */
       if (!(len == 1)		/* "/" */
 #ifdef HAVE_DOS_BASED_FILE_SYSTEM
 	  && !(len == 3 && dir[1] == ':') /* "d:/" */
@@ -531,7 +577,7 @@ cd_command (const char *dir, int from_tt
 	  if (found_real_path)
 	    {
 	      /* Search backwards for the directory just before the "/.."
-	         and obliterate it and the "/..".  */
+		 and obliterate it and the "/..".  */
 	      char *q = p;
 
 	      while (q != current_directory && !IS_DIR_SEPARATOR (q[-1]))
@@ -571,9 +617,9 @@ static void
 show_script_ext_mode (struct ui_file *file, int from_tty,
 		     struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file,
-		    _("Script filename extension recognition is \"%s\".\n"),
-		    value);
+  gdb_printf (file,
+	      _("Script filename extension recognition is \"%s\".\n"),
+	      value);
 }
 
 /* Try to open SCRIPT_FILE.
@@ -585,12 +631,12 @@ show_script_ext_mode (struct ui_file *fi
    If SEARCH_PATH is non-zero, and the file isn't found in cwd,
    search for it in the source search path.  */
 
-gdb::optional<open_script>
+std::optional<open_script>
 find_and_open_script (const char *script_file, int search_path)
 {
   int fd;
   openp_flags search_flags = OPF_TRY_CWD_FIRST | OPF_RETURN_REALPATH;
-  gdb::optional<open_script> opened;
+  std::optional<open_script> opened;
 
   gdb::unique_xmalloc_ptr<char> file (tilde_expand (script_file));
 
@@ -600,7 +646,7 @@ find_and_open_script (const char *script
   /* Search for and open 'file' on the search path used for source
      files.  Put the full location in *FULL_PATHP.  */
   gdb::unique_xmalloc_ptr<char> full_path;
-  fd = openp (source_path, search_flags,
+  fd = openp (source_path.c_str (), search_flags,
 	      file.get (), O_RDONLY, &full_path);
 
   if (fd == -1)
@@ -672,11 +718,11 @@ source_script_with_search (const char *f
   if (file == NULL || *file == 0)
     error (_("source command requires file name of file to source."));
 
-  gdb::optional<open_script> opened = find_and_open_script (file, search_path);
+  std::optional<open_script> opened = find_and_open_script (file, search_path);
   if (!opened)
     {
       /* The script wasn't found, or was otherwise inaccessible.
-         If the source command was invoked interactively, throw an
+	 If the source command was invoked interactively, throw an
 	 error.  Otherwise (e.g. if it was invoked by a script),
 	 just emit a warning, rather than cause an error.  */
       if (from_tty)
@@ -693,8 +739,16 @@ source_script_with_search (const char *f
      anyway so that error messages show the actual file used.  But only do
      this if we (may have) used search_path, as printing the full path in
      errors for the non-search case can be more noise than signal.  */
-  source_script_from_stream (opened->stream.get (), file,
-			     search_path ? opened->full_path.get () : file);
+  const char *file_to_open;
+  std::string tilde_expanded_file;
+  if (search_path)
+    file_to_open = opened->full_path.get ();
+  else
+    {
+      tilde_expanded_file = gdb_tilde_expand (file);
+      file_to_open = tilde_expanded_file.c_str ();
+    }
+  source_script_from_stream (opened->stream.get (), file, file_to_open);
 }
 
 /* Wrapper around source_script_with_search to export it to main.c
@@ -774,16 +828,15 @@ echo_command (const char *text, int from
 
 	    c = parse_escape (get_current_arch (), &p);
 	    if (c >= 0)
-	      printf_filtered ("%c", c);
+	      gdb_printf ("%c", c);
 	  }
 	else
-	  printf_filtered ("%c", c);
+	  gdb_printf ("%c", c);
       }
 
-  reset_terminal_style (gdb_stdout);
+  gdb_stdout->emit_style_escape (ui_file_style ());
 
   /* Force this output to appear now.  */
-  wrap_here ("");
   gdb_flush (gdb_stdout);
 }
 
@@ -798,16 +851,34 @@ exit_status_set_internal_vars (int exit_
 
   clear_internalvar (var_code);
   clear_internalvar (var_signal);
+
+  /* Keep the logic here in sync with shell_internal_fn.  */
+
   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
     warning (_("unexpected shell command exit status %d"), exit_status);
 }
 
-static void
-shell_escape (const char *arg, int from_tty)
+/* Run ARG under the shell, and return the exit status.  If ARG is
+   NULL, run an interactive shell.  */
+
+static int
+run_under_shell (const char *arg, int from_tty)
 {
 #if defined(CANT_FORK) || \
       (!defined(HAVE_WORKING_VFORK) && !defined(HAVE_WORKING_FORK))
@@ -819,16 +890,16 @@ shell_escape (const char *arg, int from_
     arg = "inferior shell";
 
   if (rc == -1)
-    fprintf_unfiltered (gdb_stderr, "Cannot execute %s: %s\n", arg,
-			safe_strerror (errno));
+    gdb_printf (gdb_stderr, "Cannot execute %s: %s\n", arg,
+		safe_strerror (errno));
   else if (rc)
-    fprintf_unfiltered (gdb_stderr, "%s exited with status %d\n", arg, rc);
+    gdb_printf (gdb_stderr, "%s exited with status %d\n", arg, rc);
 #ifdef GLOBAL_CURDIR
   /* 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
+  return rc;
 #else /* Can fork.  */
   int status, pid;
 
@@ -846,41 +917,73 @@ shell_escape (const char *arg, int from_
       else
 	execl (user_shell, p, "-c", arg, (char *) 0);
 
-      fprintf_unfiltered (gdb_stderr, "Cannot execute %s: %s\n", user_shell,
-			  safe_strerror (errno));
+      gdb_printf (gdb_stderr, "Cannot execute %s: %s\n", user_shell,
+		  safe_strerror (errno));
       _exit (0177);
     }
 
   if (pid != -1)
-    waitpid (pid, &status, 0);
+    {
+      int ret = gdb::waitpid (pid, &status, 0);
+      if (ret == -1)
+	perror_with_name ("Cannot get status of shell command");
+    }
   else
     error (_("Fork failed"));
-  exit_status_set_internal_vars (status);
+  return status;
 #endif /* Can fork.  */
 }
 
+/* Escape out to the shell to run ARG.  If ARG is NULL, launch and
+   interactive shell.  Sets $_shell_exitcode and $_shell_exitsignal
+   convenience variables based on the exits status.  */
+
+static void
+shell_escape (const char *arg, int from_tty)
+{
+  int status = run_under_shell (arg, from_tty);
+  exit_status_set_internal_vars (status);
+}
+
 /* Implementation of the "shell" command.  */
 
 static void
 shell_command (const char *arg, int from_tty)
 {
+  scoped_restore_tty_state save_restore_gdb_ttystate;
+  restore_initial_gdb_ttystate ();
+
   shell_escape (arg, from_tty);
 }
 
+/* Completion for the shell command.  Currently, this just uses filename
+   completion, but we could, potentially, complete command names from $PATH
+   for the first word, which would make this even more shell like.  */
+
+static void
+shell_command_completer (struct cmd_list_element *ignore,
+			 completion_tracker &tracker,
+			 const char *text, const char * /* word */)
+{
+  tracker.set_use_custom_word_point (true);
+  const char *word
+    = advance_to_filename_maybe_quoted_complete_word_point (tracker, text);
+  filename_maybe_quoted_completer (ignore, tracker, text, word);
+}
+
 static void
 edit_command (const char *arg, int from_tty)
 {
   struct symtab_and_line sal;
   struct symbol *sym;
   const char *editor;
-  char *p;
   const char *fn;
 
   /* Pull in the current default source line if necessary.  */
   if (arg == 0)
     {
       set_default_source_symtab_and_line ();
-      sal = get_current_source_symtab_and_line ();
+      sal = get_current_source_symtab_and_line (current_program_space);
     }
 
   /* Bare "edit" edits file with present line.  */
@@ -889,7 +992,8 @@ edit_command (const char *arg, int from_
     {
       if (sal.symtab == 0)
 	error (_("No default source file yet."));
-      sal.line += get_lines_to_list () / 2;
+      if (get_first_line_listed () != 0)
+	sal.line = get_first_line_listed () + get_lines_to_list () / 2;
     }
   else
     {
@@ -897,9 +1001,13 @@ edit_command (const char *arg, int from_
 
       /* Now should only be one argument -- decode it in SAL.  */
       arg1 = arg;
-      event_location_up location = string_to_event_location (&arg1,
-							     current_language);
-      std::vector<symtab_and_line> sals = decode_line_1 (location.get (),
+      location_spec_up locspec = string_to_location_spec (&arg1,
+							  current_language);
+
+      if (*arg1)
+	error (_("Junk at end of line specification."));
+
+      std::vector<symtab_and_line> sals = decode_line_1 (locspec.get (),
 							 DECODE_LINE_LIST_MODE,
 							 NULL, NULL, 0);
 
@@ -918,41 +1026,45 @@ edit_command (const char *arg, int from_
 
       sal = sals[0];
 
-      if (*arg1)
-        error (_("Junk at end of line specification."));
-
       /* If line was specified by address, first print exactly which
-         line, and which file.  In this case, sal.symtab == 0 means
-         address is outside of all known source files, not that user
-         failed to give a filename.  */
+	 line, and which file.  In this case, sal.symtab == 0 means
+	 address is outside of all known source files, not that user
+	 failed to give a filename.  */
       if (*arg == '*')
-        {
+	{
 	  struct gdbarch *gdbarch;
 
-          if (sal.symtab == 0)
+	  if (sal.symtab == 0)
 	    error (_("No source file for address %s."),
 		   paddress (get_current_arch (), sal.pc));
 
-	  gdbarch = get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
-          sym = find_pc_function (sal.pc);
-          if (sym)
-	    printf_filtered ("%s is in %s (%s:%d).\n",
-			     paddress (gdbarch, sal.pc),
-			     sym->print_name (),
-			     symtab_to_filename_for_display (sal.symtab),
-			     sal.line);
-          else
-	    printf_filtered ("%s is at %s:%d.\n",
-			     paddress (gdbarch, sal.pc),
-			     symtab_to_filename_for_display (sal.symtab),
-			     sal.line);
-        }
+	  gdbarch = sal.symtab->compunit ()->objfile ()->arch ();
+	  sym = find_pc_function (sal.pc);
+	  if (sym)
+	    gdb_printf ("%ps is in %ps (%ps:%ps).\n",
+			styled_string (address_style.style (),
+				       paddress (gdbarch, sal.pc)),
+			styled_string (function_name_style.style (),
+				       sym->print_name ()),
+			styled_string (file_name_style.style (),
+				       symtab_to_filename_for_display (sal.symtab)),
+			styled_string (line_number_style.style (),
+				       pulongest (sal.line)));
+	  else
+	    gdb_printf ("%ps is at %ps:%ps.\n",
+			styled_string (address_style.style (),
+				       paddress (gdbarch, sal.pc)),
+			styled_string (file_name_style.style (),
+				       symtab_to_filename_for_display (sal.symtab)),
+			styled_string (line_number_style.style (),
+				       pulongest (sal.line)));
+	}
 
       /* If what was given does not imply a symtab, it must be an
-         undebuggable symbol which means no source code.  */
+	 undebuggable symbol which means no source code.  */
 
       if (sal.symtab == 0)
-        error (_("No line number known for %s."), arg);
+	error (_("No line number known for %s."), arg);
     }
 
   if ((editor = getenv ("EDITOR")) == NULL)
@@ -962,9 +1074,9 @@ edit_command (const char *arg, int from_
 
   /* Quote the file name, in case it has whitespace or other special
      characters.  */
-  p = xstrprintf ("%s +%d \"%s\"", editor, sal.line, fn);
-  shell_escape (p, from_tty);
-  xfree (p);
+  gdb::unique_xmalloc_ptr<char> p
+    = xstrprintf ("%s +%d \"%s\"", editor, sal.line, fn);
+  shell_escape (p.get (), from_tty);
 }
 
 /* The options for the "pipe" command.  */
@@ -972,12 +1084,7 @@ edit_command (const char *arg, int from_
 struct pipe_cmd_opts
 {
   /* For "-d".  */
-  char *delimiter = nullptr;
-
-  ~pipe_cmd_opts ()
-  {
-    xfree (delimiter);
-  }
+  std::string delimiter;
 };
 
 static const gdb::option::option_def pipe_cmd_option_defs[] = {
@@ -1014,8 +1121,8 @@ pipe_command (const char *arg, int from_
     (&arg, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_OPERAND, grp);
 
   const char *delim = "|";
-  if (opts.delimiter != nullptr)
-    delim = opts.delimiter;
+  if (!opts.delimiter.empty ())
+    delim = opts.delimiter.c_str ();
 
   const char *command = arg;
   if (command == nullptr)
@@ -1042,23 +1149,18 @@ pipe_command (const char *arg, int from_
   if (to_shell_command == nullptr)
     error (_("Error launching \"%s\""), shell_command);
 
-  try
-    {
-      stdio_file pipe_file (to_shell_command);
+  int exit_status;
+  {
+    SCOPE_EXIT { exit_status = pclose (to_shell_command); };
 
-      execute_command_to_ui_file (&pipe_file, gdb_cmd.c_str (), from_tty);
-    }
-  catch (...)
-    {
-      pclose (to_shell_command);
-      throw;
-    }
+    stdio_file pipe_file (to_shell_command);
 
-  int exit_status = pclose (to_shell_command);
+    execute_command_to_ui_file (&pipe_file, gdb_cmd.c_str (), from_tty);
+  }
 
   if (exit_status < 0)
     error (_("shell command \"%s\" failed: %s"), shell_command,
-           safe_strerror (errno));
+	   safe_strerror (errno));
   exit_status_set_internal_vars (exit_status);
 }
 
@@ -1078,8 +1180,8 @@ pipe_command_completer (struct cmd_list_
     return;
 
   const char *delimiter = "|";
-  if (opts.delimiter != nullptr)
-    delimiter = opts.delimiter;
+  if (!opts.delimiter.empty ())
+    delimiter = opts.delimiter.c_str ();
 
   /* Check if we're past option values already.  */
   if (text > org_text && !isspace (text[-1]))
@@ -1095,8 +1197,54 @@ pipe_command_completer (struct cmd_list_
       return;
     }
 
-  /* We're past the delimiter.  What follows is a shell command, which
-     we don't know how to complete.  */
+  /* We're past the delimiter now, or at least, DELIM points to the
+     delimiter string.  Update TEXT to point to the start of whatever
+     appears after the delimiter.  */
+  text = skip_spaces (delim + strlen (delimiter));
+
+  /* We really are past the delimiter now, so offer completions.  This is
+     like GDB's "shell" command, currently we only offer filename
+     completion, but in the future this could be improved by offering
+     completion of command names from $PATH.
+
+     What we don't do here is offer completions for the empty string.  It
+     is assumed that the first word after the delimiter is going to be a
+     command name from $PATH, not a filename, so if the user has typed
+     nothing (yet) and tries to complete, there's no point offering a list
+     of files from the current directory.
+
+     Once the user has started to type something though, then we do start
+     offering filename completions.  */
+  if (*text == '\0')
+    return;
+
+  tracker.set_use_custom_word_point (true);
+  tracker.advance_custom_word_point_by (text - org_text);
+  const char *word
+    = advance_to_filename_maybe_quoted_complete_word_point (tracker, text);
+  filename_maybe_quoted_completer (ignore, tracker, text, word);
+}
+
+/* Helper for the list_command function.  Prints the lines around (and
+   including) line stored in CURSAL.  ARG contains the arguments used in
+   the command invocation, and is used to determine a special case when
+   printing backwards.  */
+static void
+list_around_line (const char *arg, symtab_and_line cursal)
+{
+  int first;
+
+  first = std::max (cursal.line - get_lines_to_list () / 2, 1);
+
+  /* A small special case --- if listing backwards, and we
+     should list only one line, list the preceding line,
+     instead of the exact line we've just shown after e.g.,
+     stopping for a breakpoint.  */
+  if (arg != NULL && arg[0] == '-'
+      && get_lines_to_list () == 1 && first > 1)
+    first -= 1;
+
+  print_source_lines (cursal.symtab, source_lines_range (first), 0);
 }
 
 static void
@@ -1111,47 +1259,95 @@ list_command (const char *arg, int from_
   const char *p;
 
   /* Pull in the current default source line if necessary.  */
-  if (arg == NULL || ((arg[0] == '+' || arg[0] == '-') && arg[1] == '\0'))
+  if (arg == NULL || ((arg[0] == '+' || arg[0] == '-' || arg[0] == '.') && arg[1] == '\0'))
     {
-      set_default_source_symtab_and_line ();
-      symtab_and_line cursal = get_current_source_symtab_and_line ();
-
       /* If this is the first "list" since we've set the current
 	 source line, center the listing around that line.  */
-      if (get_first_line_listed () == 0)
+      if (get_first_line_listed () == 0 && (arg == nullptr || arg[0] != '.'))
 	{
-	  int first;
-
-	  first = std::max (cursal.line - get_lines_to_list () / 2, 1);
-
-	  /* A small special case --- if listing backwards, and we
-	     should list only one line, list the preceding line,
-	     instead of the exact line we've just shown after e.g.,
-	     stopping for a breakpoint.  */
-	  if (arg != NULL && arg[0] == '-'
-	      && get_lines_to_list () == 1 && first > 1)
-	    first -= 1;
-
-	  print_source_lines (cursal.symtab, source_lines_range (first), 0);
+	  set_default_source_symtab_and_line ();
+	  list_around_line
+	    (arg, get_current_source_symtab_and_line (current_program_space));
+	}
+
+      /* "l" and "l +" lists the next few lines, unless we're listing past
+	 the end of the file.  */
+      else if (arg == nullptr || arg[0] == '+')
+	{
+	  set_default_source_symtab_and_line ();
+	  const symtab_and_line cursal
+	    = get_current_source_symtab_and_line (current_program_space);
+	  if (last_symtab_line (cursal.symtab) >= cursal.line)
+	    print_source_lines (cursal.symtab,
+				source_lines_range (cursal.line), 0);
+	  else
+	    error (_("End of the file was already reached, use \"list .\" to"
+		     " list the current location again"));
 	}
 
-      /* "l" or "l +" lists next ten lines.  */
-      else if (arg == NULL || arg[0] == '+')
-	print_source_lines (cursal.symtab,
-			    source_lines_range (cursal.line), 0);
-
       /* "l -" lists previous ten lines, the ones before the ten just
 	 listed.  */
       else if (arg[0] == '-')
 	{
+	  set_default_source_symtab_and_line ();
+	  const symtab_and_line cursal
+	    = get_current_source_symtab_and_line (current_program_space);
+
 	  if (get_first_line_listed () == 1)
 	    error (_("Already at the start of %s."),
 		   symtab_to_filename_for_display (cursal.symtab));
+
 	  source_lines_range range (get_first_line_listed (),
 				    source_lines_range::BACKWARD);
 	  print_source_lines (cursal.symtab, range, 0);
 	}
 
+      /* "list ." lists the default location again.  */
+      else if (arg[0] == '.')
+	{
+	  symtab_and_line cursal;
+	  if (target_has_stack ())
+	    {
+	      /* Find the current line by getting the PC of the currently
+		 selected frame, and finding the line associated to it.  */
+	      frame_info_ptr frame = get_selected_frame (nullptr);
+	      CORE_ADDR curr_pc = get_frame_pc (frame);
+	      cursal = find_pc_line (curr_pc, 0);
+
+	      if (cursal.symtab == nullptr)
+		error
+		  (_("Insufficient debug info for showing source lines at "
+		     "current PC (%s)."), paddress (get_frame_arch (frame),
+						    curr_pc));
+	    }
+	  else
+	    {
+	      /* The inferior is not running, so reset the current source
+		 location to the default (usually the main function).  */
+	      clear_current_source_symtab_and_line (current_program_space);
+	      try
+		{
+		  set_default_source_symtab_and_line ();
+		}
+	      catch (const gdb_exception &e)
+		{
+		  error (_("Insufficient debug info for showing source "
+			   "lines at default location"));
+		}
+	      cursal
+		= get_current_source_symtab_and_line (current_program_space);
+
+	      gdb_assert (cursal.symtab != nullptr);
+	    }
+
+	  list_around_line (arg, cursal);
+
+	  /* Set the repeat args so just pressing "enter" after using "list ."
+	     will print the following lines instead of the same lines again. */
+	  if (from_tty)
+	    set_repeat_arguments ("");
+	}
+
       return;
     }
 
@@ -1161,7 +1357,8 @@ list_command (const char *arg, int from_
      and clear NO_END; however, if one of the arguments is blank,
      set DUMMY_BEG or DUMMY_END to record that fact.  */
 
-  if (!have_full_symbols () && !have_partial_symbols ())
+  if (!have_full_symbols (current_program_space)
+      && !have_partial_symbols (current_program_space))
     error (_("No symbol table is loaded.  Use the \"file\" command."));
 
   std::vector<symtab_and_line> sals;
@@ -1172,9 +1369,18 @@ list_command (const char *arg, int from_
     dummy_beg = 1;
   else
     {
-      event_location_up location = string_to_event_location (&arg1,
-							     current_language);
-      sals = decode_line_1 (location.get (), DECODE_LINE_LIST_MODE,
+      location_spec_up locspec
+	= string_to_location_spec (&arg1, current_language);
+
+      /* We know that the ARG string is not empty, yet the attempt to
+	 parse a location spec from the string consumed no characters.
+	 This most likely means that the first thing in ARG looks like
+	 a location spec condition, and so the string_to_location_spec
+	 call stopped parsing.  */
+      if (arg1 == arg)
+	error (_("Junk at end of line specification."));
+
+      sals = decode_line_1 (locspec.get (), DECODE_LINE_LIST_MODE,
 			    NULL, NULL, 0);
       filter_sals (sals);
       if (sals.empty ())
@@ -1219,14 +1425,17 @@ list_command (const char *arg, int from_
 	     know it was ambiguous.  */
 	  const char *end_arg = arg1;
 
-	  event_location_up location
-	    = string_to_event_location (&arg1, current_language);
+	  location_spec_up locspec
+	    = string_to_location_spec (&arg1, current_language);
+
+	  if (*arg1)
+	    error (_("Junk at end of line specification."));
 
 	  std::vector<symtab_and_line> sals_end
 	    = (dummy_beg
-	       ? decode_line_1 (location.get (), DECODE_LINE_LIST_MODE,
+	       ? decode_line_1 (locspec.get (), DECODE_LINE_LIST_MODE,
 				NULL, NULL, 0)
-	       : decode_line_1 (location.get (), DECODE_LINE_LIST_MODE,
+	       : decode_line_1 (locspec.get (), DECODE_LINE_LIST_MODE,
 				NULL, sal.symtab, sal.line));
 
 	  filter_sals (sals_end);
@@ -1265,17 +1474,17 @@ 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 = sal.symtab->compunit ()->objfile ()->arch ();
       sym = find_pc_function (sal.pc);
       if (sym)
-	printf_filtered ("%s is in %s (%s:%d).\n",
-			 paddress (gdbarch, sal.pc),
-			 sym->print_name (),
-			 symtab_to_filename_for_display (sal.symtab), sal.line);
+	gdb_printf ("%s is in %s (%s:%d).\n",
+		    paddress (gdbarch, sal.pc),
+		    sym->print_name (),
+		    symtab_to_filename_for_display (sal.symtab), sal.line);
       else
-	printf_filtered ("%s is at %s:%d.\n",
-			 paddress (gdbarch, sal.pc),
-			 symtab_to_filename_for_display (sal.symtab), sal.line);
+	gdb_printf ("%s is at %s:%d.\n",
+		    paddress (gdbarch, sal.pc),
+		    symtab_to_filename_for_display (sal.symtab), sal.line);
     }
 
   /* If line was not specified by just a line number, and it does not
@@ -1338,42 +1547,45 @@ 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 ");
+      gdb_printf (_("Dump of assembler code "));
       if (name != NULL)
-	printf_filtered ("for function %s:\n", name);
-      if (block == nullptr || BLOCK_CONTIGUOUS_P (block))
-        {
+	gdb_printf (_("for function %ps:\n"),
+		    styled_string (function_name_style.style (), name));
+      if (block == nullptr || block->is_contiguous ())
+	{
 	  if (name == NULL)
-	    printf_filtered ("from %s to %s:\n",
-			     paddress (gdbarch, low), paddress (gdbarch, high));
+	    gdb_printf (_("from %ps to %ps:\n"),
+			styled_string (address_style.style (),
+				       paddress (gdbarch, low)),
+			styled_string (address_style.style (),
+				       paddress (gdbarch, high)));
 
 	  /* Dump the specified range.  */
 	  gdb_disassembly (gdbarch, current_uiout, flags, -1, low, high);
 	}
       else
-        {
-	  for (int i = 0; i < BLOCK_NRANGES (block); i++)
+	{
+	  for (const blockrange &range : block->ranges ())
 	    {
-	      CORE_ADDR range_low = BLOCK_RANGE_START (block, i);
-	      CORE_ADDR range_high = BLOCK_RANGE_END (block, i);
-	      printf_filtered (_("Address range %s to %s:\n"),
-			       paddress (gdbarch, range_low),
-			       paddress (gdbarch, range_high));
+	      CORE_ADDR range_low = range.start ();
+	      CORE_ADDR range_high = range.end ();
+
+	      gdb_printf (_("Address range %ps to %ps:\n"),
+			  styled_string (address_style.style (),
+					 paddress (gdbarch, range_low)),
+			  styled_string (address_style.style (),
+					 paddress (gdbarch, range_high)));
 	      gdb_disassembly (gdbarch, current_uiout, flags, -1,
 			       range_low, range_high);
 	    }
 	}
-      printf_filtered ("End of assembler dump.\n");
-    }
-#if defined(TUI)
-  else
-    {
-      tui_show_assembly (gdbarch, low);
+      gdb_printf (_("End of assembler dump.\n"));
     }
-#endif
 }
 
 /* Subroutine of disassemble_command to simplify it.
@@ -1382,17 +1594,19 @@ print_disassembly (struct gdbarch *gdbar
 static void
 disassemble_current_function (gdb_disassembly_flags flags)
 {
-  struct frame_info *frame;
-  struct gdbarch *gdbarch;
-  CORE_ADDR low, high, pc;
-  const char *name;
-  const struct block *block;
+  frame_info_ptr frame = get_selected_frame (_("No frame selected."));
+  struct gdbarch *gdbarch = get_frame_arch (frame);
+  CORE_ADDR pc = get_frame_address_in_block (frame);
 
-  frame = get_selected_frame (_("No frame selected."));
-  gdbarch = get_frame_arch (frame);
-  pc = get_frame_address_in_block (frame);
-  if (find_pc_partial_function (pc, &name, &low, &high, &block) == 0)
+  const general_symbol_info *gsi;
+  const struct block *block;
+  CORE_ADDR low, high;
+  if (find_pc_partial_function_sym (pc, &gsi, &low, &high, &block) == 0)
     error (_("No function contains program counter for selected frame."));
+
+  gdb_assert (gsi != nullptr);
+  const char *name = asm_demangle ? gsi->print_name () : gsi->linkage_name ();
+
 #if defined(TUI)
   /* NOTE: cagney/2003-02-13 The `tui_active' was previously
      `tui_version'.  */
@@ -1424,6 +1638,9 @@ disassemble_current_function (gdb_disass
 
    A /r modifier will include raw instructions in hex with the assembly.
 
+   A /b modifier is similar to /r except the instruction bytes are printed
+   as separate bytes with no grouping, or endian switching.
+
    A /s modifier will include source code with the assembly, like /m, with
    two important differences:
    1) The output is still in pc address order.
@@ -1434,6 +1651,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;
@@ -1461,6 +1679,9 @@ disassemble_command (const char *arg, in
 	    case 'r':
 	      flags |= DISASSEMBLY_RAW_INSN;
 	      break;
+	    case 'b':
+	      flags |= DISASSEMBLY_RAW_BYTES;
+	      break;
 	    case 's':
 	      flags |= DISASSEMBLY_SOURCE;
 	      break;
@@ -1476,6 +1697,10 @@ disassemble_command (const char *arg, in
       == (DISASSEMBLY_SOURCE_DEPRECATED | DISASSEMBLY_SOURCE))
     error (_("Cannot specify both /m and /s."));
 
+  if ((flags & (DISASSEMBLY_RAW_INSN | DISASSEMBLY_RAW_BYTES))
+      == (DISASSEMBLY_RAW_INSN | DISASSEMBLY_RAW_BYTES))
+    error (_("Cannot specify both /r and /b."));
+
   if (! p || ! *p)
     {
       flags |= DISASSEMBLY_OMIT_FNAME;
@@ -1489,8 +1714,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'.  */
@@ -1520,6 +1751,20 @@ disassemble_command (const char *arg, in
   print_disassembly (gdbarch, name, low, high, block, flags);
 }
 
+/* Command completion for the disassemble command.  */
+
+static void
+disassemble_command_completer (struct cmd_list_element *ignore,
+			       completion_tracker &tracker,
+			       const char *text, const char * /* word */)
+{
+  if (skip_over_slash_fmt (tracker, &text))
+    return;
+
+  const char *word = advance_to_expression_complete_word_point (tracker, text);
+  expression_completer (ignore, tracker, text, word);
+}
+
 static void
 make_command (const char *arg, int from_tty)
 {
@@ -1542,7 +1787,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);
@@ -1551,12 +1796,81 @@ show_user (const char *args, int from_tt
     {
       for (c = cmdlist; c; c = c->next)
 	{
-	  if (cli_user_command_p (c) || c->prefixlist != NULL)
+	  if (cli_user_command_p (c) || c->is_prefix ())
 	    show_user_1 (c, "", c->name, gdb_stdout);
 	}
     }
 }
 
+/* Return true if COMMAND or any of its sub-commands is a user defined command.
+   This is a helper function for show_user_completer.  */
+
+static bool
+has_user_subcmd (struct cmd_list_element *command)
+{
+  if (cli_user_command_p (command))
+    return true;
+
+  /* Alias command can yield false positive.  Ignore them as the targeted
+     command should be reachable anyway.  */
+  if (command->is_alias ())
+    return false;
+
+  if (command->is_prefix ())
+    for (struct cmd_list_element *subcommand = *command->subcommands;
+	 subcommand != nullptr;
+	 subcommand = subcommand->next)
+      if (has_user_subcmd (subcommand))
+	return true;
+
+  return false;
+}
+
+/* Implement completer for the 'show user' command.  */
+
+static void
+show_user_completer (cmd_list_element *,
+		     completion_tracker &tracker, const char *text,
+		     const char *word)
+{
+  struct cmd_list_element *cmd_group = cmdlist;
+
+  /* TEXT can contain a chain of commands and subcommands.  Follow the
+     commands chain until we reach the point where the user wants a
+     completion.  */
+  while (word > text)
+    {
+      const char *curr_cmd = text;
+      const char *after = skip_to_space (text);
+      const size_t curr_cmd_len = after - text;
+      text = skip_spaces (after);
+
+      for (struct cmd_list_element *c = cmd_group; c != nullptr; c = c->next)
+	{
+	  if (strlen (c->name) == curr_cmd_len
+	      && strncmp (c->name, curr_cmd, curr_cmd_len) == 0)
+	    {
+	      if (c->subcommands == nullptr)
+		/* We arrived after a command with no child, so nothing more
+		   to complete.  */
+		return;
+
+	      cmd_group = *c->subcommands;
+	      break;
+	    }
+	}
+    }
+
+  const int wordlen = strlen (word);
+  for (struct cmd_list_element *c = cmd_group; c != nullptr; c = c->next)
+    if (has_user_subcmd (c))
+      {
+	if (strncmp (c->name, word, wordlen) == 0)
+	  tracker.add_completion
+	    (gdb::unique_xmalloc_ptr<char> (xstrdup (c->name)));
+      }
+}
+
 /* Search through names of commands and documentations for a certain
    regular expression.  */
 
@@ -1571,7 +1885,72 @@ apropos_command (const char *arg, int fr
   compiled_regex pattern (arg, REG_ICASE,
 			  _("Error in regular expression"));
 
-  apropos_cmd (gdb_stdout, cmdlist, verbose, pattern, "");
+  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.
@@ -1601,24 +1980,30 @@ 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 cmd_list_element *
+validate_aliased_command (const char *command)
 {
-  struct cmd_list_element *c;
-
-  c = lookup_cmd_1 (& command, cmdlist, NULL, 1);
+  std::string default_args;
+  cmd_list_element *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);
+
+  if (!default_args.empty ())
+    error (_("Cannot define an alias of an alias that has default args"));
 
-  /* 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';
+  return c;
 }
 
 /* Called when "alias" was incorrectly used.  */
@@ -1626,7 +2011,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 +2019,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 +2036,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 +2067,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);
+  cmd_list_element *target_cmd = 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 +2116,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]), target_cmd,
+				 class_alias, a_opts.abbrev_flag);
     }
   else
     {
@@ -1731,19 +2137,28 @@ 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);
+      gdb_assert (c_command->is_prefix ());
+      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]),
+				 target_cmd, class_alias, a_opts.abbrev_flag,
+				 c_command->subcommands);
+    }
+
+  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;
     }
 }
 
@@ -1759,9 +2174,11 @@ print_sal_location (const symtab_and_lin
   const char *sym_name = NULL;
   if (sal.symbol != NULL)
     sym_name = sal.symbol->print_name ();
-  printf_filtered (_("file: \"%s\", line number: %d, symbol: \"%s\"\n"),
-		   symtab_to_filename_for_display (sal.symtab),
-		   sal.line, sym_name != NULL ? sym_name : "???");
+  gdb_printf (_("file: \"%s\", line number: %ps, symbol: \"%s\"\n"),
+	      symtab_to_filename_for_display (sal.symtab),
+	      styled_string (line_number_style.style (),
+			     pulongest (sal.line)),
+	      sym_name != NULL ? sym_name : "???");
 }
 
 /* Print a list of files and line numbers which a user may choose from
@@ -1777,7 +2194,7 @@ ambiguous_line_spec (gdb::array_view<con
 {
   va_list ap;
   va_start (ap, format);
-  vprintf_filtered (format, ap);
+  gdb_vprintf (format, ap);
   va_end (ap);
 
   for (const auto &sal : sals)
@@ -1790,8 +2207,8 @@ ambiguous_line_spec (gdb::array_view<con
 static int
 cmp_symtabs (const symtab_and_line &sala, const symtab_and_line &salb)
 {
-  const char *dira = SYMTAB_DIRNAME (sala.symtab);
-  const char *dirb = SYMTAB_DIRNAME (salb.symtab);
+  const char *dira = sala.symtab->compunit ()->dirname ();
+  const char *dirb = salb.symtab->compunit ()->dirname ();
   int r;
 
   if (dira == NULL)
@@ -1845,70 +2262,55 @@ filter_sals (std::vector<symtab_and_line
 }
 
 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)
-{
-  max_user_call_depth = 1024;
-}
-
-static void
 show_info_verbose (struct ui_file *file, int from_tty,
 		   struct cmd_list_element *c,
 		   const char *value)
 {
   if (info_verbose)
-    fprintf_filtered (file,
-		      _("Verbose printing of informational messages is %s.\n"),
-		      value);
+    gdb_printf (file,
+		_("Verbose printing of informational messages is %s.\n"),
+		value);
   else
-    fprintf_filtered (file, _("Verbosity is %s.\n"), value);
+    gdb_printf (file, _("Verbosity is %s.\n"), value);
 }
 
 static void
 show_history_expansion_p (struct ui_file *file, int from_tty,
 			  struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("History expansion on command input is %s.\n"),
-		    value);
+  gdb_printf (file, _("History expansion on command input is %s.\n"),
+	      value);
 }
 
 static void
-show_remote_debug (struct ui_file *file, int from_tty,
-		   struct cmd_list_element *c, const char *value)
+show_max_user_call_depth (struct ui_file *file, int from_tty,
+			  struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Debugging of remote protocol is %s.\n"),
-		    value);
+  gdb_printf (file,
+	      _("The max call depth for user-defined commands is %s.\n"),
+	      value);
 }
 
+/* Implement 'show suppress-cli-notifications'.  */
+
 static void
-show_remote_timeout (struct ui_file *file, int from_tty,
-		     struct cmd_list_element *c, const char *value)
+show_suppress_cli_notifications (ui_file *file, int from_tty,
+				 cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file,
-		    _("Timeout limit to wait for target to respond is %s.\n"),
-		    value);
+  gdb_printf (file, _("Suppression of printing CLI notifications "
+		      "is %s.\n"), value);
 }
 
+/* Implement 'set suppress-cli-notifications'.  */
+
 static void
-show_max_user_call_depth (struct ui_file *file, int from_tty,
-			  struct cmd_list_element *c, const char *value)
+set_suppress_cli_notifications (const char *args, int from_tty,
+				cmd_list_element *c)
 {
-  fprintf_filtered (file,
-		    _("The max call depth for user-defined commands is %s.\n"),
-		    value);
+  cli_suppress_notification.user_selected_context
+    = user_wants_cli_suppress_notification;
+  cli_suppress_notification.normal_stop
+    = user_wants_cli_suppress_notification;
 }
 
 /* Returns the cmd_list_element in SHOWLIST corresponding to the first
@@ -1925,18 +2327,32 @@ setting_cmd (const char *fnname, struct
   if (argc != 1)
     error (_("You can only provide one argument to %s"), fnname);
 
-  struct type *type0 = check_typedef (value_type (argv[0]));
+  struct type *type0 = check_typedef (argv[0]->type ());
 
-  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);
-
-  if (cmd == nullptr || cmd_type (cmd) != show_cmd)
-    error (_("First argument of %s must be a "
-	     "valid setting of the 'show' command."), fnname);
+  /* Not all languages null-terminate their strings, by moving the string
+     content into a std::string we ensure that a null-terminator is added.
+     For languages that do add a null-terminator the std::string might end
+     up with two null characters at the end, but that's harmless.  */
+  const std::string setting ((const char *) argv[0]->contents ().data (),
+			     type0->length ());
+  const char *a0 = setting.c_str ();
+  cmd_list_element *cmd = lookup_cmd (&a0, showlist, "", NULL, -1, 0);
+
+  if (cmd == nullptr || cmd->type != show_cmd)
+    {
+      gdb_assert (showlist->prefix != nullptr);
+      std::vector<std::string> components
+	= showlist->prefix->command_components ();
+      std::string full_name = components[0];
+      for (int i = 1; i < components.size (); ++i)
+	full_name += " " + components[i];
+      error (_("First argument of %s must be a valid setting of the "
+	       "'%s' command."), fnname, full_name.c_str ());
+    }
 
   return cmd;
 }
@@ -1944,31 +2360,49 @@ setting_cmd (const char *fnname, struct
 /* Builds a value from the show CMD.  */
 
 static struct value *
-value_from_setting (const cmd_list_element *cmd, struct gdbarch *gdbarch)
+value_from_setting (const setting &var, struct gdbarch *gdbarch)
 {
-  switch (cmd->var_type)
+  switch (var.type ())
     {
+    case var_uinteger:
     case var_integer:
-      if (*(int *) cmd->var == INT_MAX)
-	return value_from_longest (builtin_type (gdbarch)->builtin_int,
-				   0);
-      else
-	return value_from_longest (builtin_type (gdbarch)->builtin_int,
-				   *(int *) cmd->var);
-    case var_zinteger:
-      return value_from_longest (builtin_type (gdbarch)->builtin_int,
-				 *(int *) cmd->var);
+    case var_pinteger:
+      {
+	LONGEST value
+	  = (var.type () == var_uinteger
+	     ? static_cast<LONGEST> (var.get<unsigned int> ())
+	     : static_cast<LONGEST> (var.get<int> ()));
+
+	if (var.extra_literals () != nullptr)
+	  for (const literal_def *l = var.extra_literals ();
+	       l->literal != nullptr;
+	       l++)
+	    if (value == l->use)
+	      {
+		if (l->val.has_value ())
+		  value = *l->val;
+		else
+		  return value::allocate (builtin_type (gdbarch)->builtin_void);
+		break;
+	      }
+
+	if (var.type () == var_uinteger)
+	  return
+	    value_from_ulongest (builtin_type (gdbarch)->builtin_unsigned_int,
+				 static_cast<unsigned int> (value));
+	else
+	  return
+	    value_from_longest (builtin_type (gdbarch)->builtin_int,
+				static_cast<int> (value));
+      }
     case var_boolean:
       return value_from_longest (builtin_type (gdbarch)->builtin_int,
-				 *(bool *) cmd->var ? 1 : 0);
-    case var_zuinteger_unlimited:
-      return value_from_longest (builtin_type (gdbarch)->builtin_int,
-				 *(int *) cmd->var);
+				 var.get<bool> () ? 1 : 0);
     case var_auto_boolean:
       {
 	int val;
 
-	switch (*(enum auto_boolean*) cmd->var)
+	switch (var.get<enum auto_boolean> ())
 	  {
 	  case AUTO_BOOLEAN_TRUE:
 	    val = 1;
@@ -1985,28 +2419,33 @@ value_from_setting (const cmd_list_eleme
 	return value_from_longest (builtin_type (gdbarch)->builtin_int,
 				   val);
       }
-    case var_uinteger:
-      if (*(unsigned int *) cmd->var == UINT_MAX)
-	return value_from_ulongest
-	  (builtin_type (gdbarch)->builtin_unsigned_int, 0);
-      else
-	return value_from_ulongest
-	  (builtin_type (gdbarch)->builtin_unsigned_int,
-	   *(unsigned int *) cmd->var);
-    case var_zuinteger:
-      return value_from_ulongest (builtin_type (gdbarch)->builtin_unsigned_int,
-				  *(unsigned int *) cmd->var);
     case var_string:
     case var_string_noescape:
     case var_optional_filename:
     case var_filename:
     case var_enum:
-      if (*(char **) cmd->var)
-	return value_cstring (*(char **) cmd->var, strlen (*(char **) cmd->var),
-			      builtin_type (gdbarch)->builtin_char);
-      else
-	return value_cstring ("", 1,
-			      builtin_type (gdbarch)->builtin_char);
+      {
+	const char *value;
+	size_t len;
+	if (var.type () == var_enum)
+	  {
+	    value = var.get<const char *> ();
+	    len = strlen (value);
+	  }
+	else
+	  {
+	    const std::string &st = var.get<std::string> ();
+	    value = st.c_str ();
+	    len = st.length ();
+	  }
+
+	return current_language->value_string (gdbarch, value, len);
+      }
+    case var_color:
+      {
+	std::string s = var.get<ui_file_style::color> ().to_string ();
+	return current_language->value_string (gdbarch, s.c_str (), s.size ());
+      }
     default:
       gdb_assert_not_reached ("bad var_type");
     }
@@ -2019,9 +2458,12 @@ gdb_setting_internal_fn (struct gdbarch
 			 const struct language_defn *language,
 			 void *cookie, int argc, struct value **argv)
 {
-  return value_from_setting (setting_cmd ("$_gdb_setting", showlist,
-					  argc, argv),
-			     gdbarch);
+  cmd_list_element *show_cmd
+    = setting_cmd ("$_gdb_setting", showlist, argc, argv);
+
+  gdb_assert (show_cmd->var.has_value ());
+
+  return value_from_setting (*show_cmd->var, gdbarch);
 }
 
 /* Implementation of the convenience function $_gdb_maint_setting.  */
@@ -2031,31 +2473,32 @@ gdb_maint_setting_internal_fn (struct gd
 			       const struct language_defn *language,
 			       void *cookie, int argc, struct value **argv)
 {
-  return value_from_setting (setting_cmd ("$_gdb_maint_setting",
-					  maintenance_show_cmdlist,
-					  argc, argv),
-			     gdbarch);
+  cmd_list_element *show_cmd
+    = setting_cmd ("$_gdb_maint_setting", maintenance_show_cmdlist, argc, argv);
+
+  gdb_assert (show_cmd->var.has_value ());
+
+  return value_from_setting (*show_cmd->var, gdbarch);
 }
 
 /* Builds a string value from the show CMD.  */
 
 static struct value *
-str_value_from_setting (const cmd_list_element *cmd, struct gdbarch *gdbarch)
+str_value_from_setting (const setting &var, struct gdbarch *gdbarch)
 {
-  switch (cmd->var_type)
+  switch (var.type ())
     {
+    case var_uinteger:
     case var_integer:
-    case var_zinteger:
+    case var_pinteger:
     case var_boolean:
-    case var_zuinteger_unlimited:
     case var_auto_boolean:
-    case var_uinteger:
-    case var_zuinteger:
+    case var_color:
       {
-	std::string cmd_val = get_setshow_command_value_string (cmd);
+	std::string cmd_val = get_setshow_command_value_string (var);
 
-	return value_cstring (cmd_val.c_str (), cmd_val.size (),
-			      builtin_type (gdbarch)->builtin_char);
+	return current_language->value_string (gdbarch, cmd_val.c_str (),
+					       cmd_val.size ());
       }
 
     case var_string:
@@ -2065,15 +2508,25 @@ str_value_from_setting (const cmd_list_e
     case var_enum:
       /* For these cases, we do not use get_setshow_command_value_string,
 	 as this function handle some characters specially, e.g. by
-	 escaping quotes.  So, we directly use the cmd->var string value,
-	 similarly to the value_from_setting code for these cases.  */
-      if (*(char **) cmd->var)
-	return value_cstring (*(char **) cmd->var, strlen (*(char **) cmd->var),
-			      builtin_type (gdbarch)->builtin_char);
-      else
-	return value_cstring ("", 1,
-			      builtin_type (gdbarch)->builtin_char);
+	 escaping quotevar.  So, we directly use the var string value,
+	 similarly to the value_from_setting code for these casevar.  */
+      {
+	const char *value;
+	size_t len;
+	if (var.type () == var_enum)
+	  {
+	    value = var.get<const char *> ();
+	    len = strlen (value);
+	  }
+	else
+	  {
+	    const std::string &st = var.get<std::string> ();
+	    value = st.c_str ();
+	    len = st.length ();
+	  }
 
+	return current_language->value_string (gdbarch, value, len);
+      }
     default:
       gdb_assert_not_reached ("bad var_type");
     }
@@ -2086,9 +2539,12 @@ gdb_setting_str_internal_fn (struct gdba
 			     const struct language_defn *language,
 			     void *cookie, int argc, struct value **argv)
 {
-  return str_value_from_setting (setting_cmd ("$_gdb_setting_str",
-					      showlist, argc, argv),
-				 gdbarch);
+  cmd_list_element *show_cmd
+    = setting_cmd ("$_gdb_setting_str", showlist, argc, argv);
+
+  gdb_assert (show_cmd->var.has_value ());
+
+  return str_value_from_setting (*show_cmd->var, gdbarch);
 }
 
 
@@ -2099,14 +2555,73 @@ gdb_maint_setting_str_internal_fn (struc
 				   const struct language_defn *language,
 				   void *cookie, int argc, struct value **argv)
 {
-  return str_value_from_setting (setting_cmd ("$_gdb_maint_setting_str",
-					      maintenance_show_cmdlist,
-					      argc, argv),
-				 gdbarch);
+  cmd_list_element *show_cmd
+    = setting_cmd ("$_gdb_maint_setting_str", maintenance_show_cmdlist, argc,
+		   argv);
+
+  gdb_assert (show_cmd->var.has_value ());
+
+  return str_value_from_setting (*show_cmd->var, gdbarch);
+}
+
+/* Implementation of the convenience function $_shell.  */
+
+static struct value *
+shell_internal_fn (struct gdbarch *gdbarch,
+		   const struct language_defn *language,
+		   void *cookie, int argc, struct value **argv)
+{
+  if (argc != 1)
+    error (_("You must provide one argument for $_shell."));
+
+  value *val = argv[0];
+  struct type *type = check_typedef (val->type ());
+
+  if (!language->is_string_type_p (type))
+    error (_("Argument must be a string."));
+
+  value_print_options opts;
+  get_no_prettyformat_print_options (&opts);
+
+  string_file stream;
+  value_print (val, &stream, &opts);
+
+  /* We should always have two quote chars, which we'll strip.  */
+  gdb_assert (stream.size () >= 2);
+
+  /* Now strip them.  We don't need the original string, so it's
+     cheaper to do it in place, avoiding a string allocation.  */
+  std::string str = stream.release ();
+  str[str.size () - 1] = 0;
+  const char *command = str.c_str () + 1;
+
+  int exit_status = run_under_shell (command, 0);
+
+  struct type *int_type = builtin_type (gdbarch)->builtin_int;
+
+  /* Keep the logic here in sync with
+     exit_status_set_internal_vars.  */
+
+  if (WIFEXITED (exit_status))
+    return value_from_longest (int_type, WEXITSTATUS (exit_status));
+#ifdef __MINGW32__
+  else if (WIFSIGNALED (exit_status) && WTERMSIG (exit_status) == -1)
+    {
+      /* See exit_status_set_internal_vars.  */
+      return value_from_longest (int_type, exit_status);
+    }
+#endif
+  else if (WIFSIGNALED (exit_status))
+    {
+      /* (0x80 | SIGNO) is what most (all?) POSIX-like shells set as
+	 exit code on fatal signal termination.  */
+      return value_from_longest (int_type, 0x80 | WTERMSIG (exit_status));
+    }
+  else
+    return value::allocate_optimized_out (int_type);
 }
 
-void
-_initialize_cli_cmds (void)
+INIT_GDB_FILE (cli_cmds)
 {
   struct cmd_list_element *c;
 
@@ -2121,14 +2636,13 @@ 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\
 Use the \"define\" command to define a command."), &cmdlist);
   add_cmd ("support", class_support, _("Support facilities."), &cmdlist);
-  if (!dbx_commands)
-    add_cmd ("status", class_info, _("Status inquiries."), &cmdlist);
+  add_cmd ("status", class_info, _("Status inquiries."), &cmdlist);
   add_cmd ("files", class_files, _("Specifying and examining files."),
 	   &cmdlist);
   add_cmd ("breakpoints", class_breakpoint,
@@ -2143,6 +2657,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.  */
@@ -2157,7 +2677,7 @@ The debugger's current working directory
 files that can be loaded by GDB are located.\n\
 In order to change the inferior's current working directory, the recommended\n\
 way is to use the \"set cwd\" command."), &cmdlist);
-  set_cmd_completer (c, filename_completer);
+  set_cmd_completer (c, deprecated_filename_completer);
 
   add_com ("echo", class_support, echo_command, _("\
 Print a constant string.  Give string as argument.\n\
@@ -2173,24 +2693,27 @@ to be printed or after trailing whitespa
 Set mode for script filename extension recognition."), _("\
 Show mode for script filename extension recognition."), _("\
 off  == no filename extension recognition (all sourced files are GDB scripts)\n\
-soft == evaluate script according to filename extension, fallback to GDB script"
-  "\n\
-strict == evaluate script according to filename extension, error if not supported"
+soft == evaluate script according to filename extension, fallback to GDB script\n\
+strict == evaluate script according to filename extension,\n\
+          error if not supported"
   ),
 			NULL,
 			show_script_ext_mode,
 			&setlist, &showlist);
 
-  add_com ("quit", class_support, quit_command, _("\
+  cmd_list_element *quit_cmd
+    = add_com ("quit", class_support, quit_command, _("\
 Exit gdb.\n\
-Usage: quit [EXPR]\n\
+Usage: quit [EXPR] or exit [EXPR]\n\
 The optional expression EXPR, if present, is evaluated and the result\n\
 used as GDB's exit code.  The default is zero."));
-  c = add_com ("help", class_support, help_command,
+  cmd_list_element *help_cmd
+    = add_com ("help", class_support, help_command,
 	       _("Print list of commands."));
-  set_cmd_completer (c, command_completer);
-  add_com_alias ("q", "quit", class_support, 1);
-  add_com_alias ("h", "help", class_support, 1);
+  set_cmd_completer (help_cmd, command_completer);
+  add_com_alias ("q", quit_cmd, class_support, 1);
+  add_com_alias ("exit", quit_cmd, class_support, 1);
+  add_com_alias ("h", help_cmd, class_support, 1);
 
   add_setshow_boolean_cmd ("verbose", class_support, &info_verbose, _("\
 Set verbosity."), _("\
@@ -2199,12 +2722,11 @@ 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_setshow_prefix_cmd
+    ("history", class_support,
+     _("Generic command for setting command history parameters."),
+     _("Generic command for showing command history parameters."),
+     &sethistlist, &showhistlist, &setlist, &showlist);
 
   add_setshow_boolean_cmd ("expansion", no_class, &history_expansion_p, _("\
 Set history expansion on command input."), _("\
@@ -2214,22 +2736,24 @@ Without an argument, history expansion i
 			   show_history_expansion_p,
 			   &sethistlist, &showhistlist);
 
-  add_prefix_cmd ("info", class_info, info_command, _("\
+  cmd_list_element *info_cmd
+    = add_prefix_cmd ("info", class_info, info_command, _("\
 Generic command for showing things about the program being debugged."),
-		  &infolist, "info ", 0, &cmdlist);
-  add_com_alias ("i", "info", class_info, 1);
-  add_com_alias ("inf", "info", class_info, 1);
+		      &infolist, 0, &cmdlist);
+  add_com_alias ("i", info_cmd, class_info, 1);
+  add_com_alias ("inf", info_cmd, class_info, 1);
 
   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, 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, _("\
+  cmd_list_element *with_cmd
+    = add_com ("with", class_vars, with_command, _("\
 Temporarily set SETTING to VALUE, run COMMAND, and restore SETTING.\n\
 Usage: with SETTING [VALUE] [-- COMMAND]\n\
 Usage: w SETTING [VALUE] [-- COMMAND]\n\
@@ -2243,8 +2767,8 @@ E.g.:\n\
 You can change multiple settings using nested with, and use\n\
 abbreviations for commands and/or values.  E.g.:\n\
   w la p -- w p el u -- p obj"));
-  set_cmd_completer_handle_brkchars (c, with_command_completer);
-  add_com_alias ("w", "with", class_vars, 1);
+  set_cmd_completer_handle_brkchars (with_cmd, with_command_completer);
+  add_com_alias ("w", with_cmd, class_vars, 1);
 
   add_internal_function ("_gdb_setting_str", _("\
 $_gdb_setting_str - returns the value of a GDB setting as a string.\n\
@@ -2266,9 +2790,10 @@ as 0 or -1 depending on the setting."),
 			 gdb_setting_internal_fn, NULL);
 
   add_internal_function ("_gdb_maint_setting_str", _("\
-$_gdb_maint_setting_str - returns the value of a GDB maintenance setting as a string.\n\
+$_gdb_maint_setting_str - returns the value of a GDB maintenance setting.\n\
 Usage: $_gdb_maint_setting_str (setting)\n\
 \n\
+Like \"$_gdb_maint_setting\", but the return value is always a string.\n\
 auto-boolean values are \"off\", \"on\", \"auto\".\n\
 boolean values are \"off\", \"on\".\n\
 Some integer settings accept an unlimited value, returned\n\
@@ -2284,6 +2809,19 @@ Some integer settings accept an unlimite
 as 0 or -1 depending on the setting."),
 			 gdb_maint_setting_internal_fn, NULL);
 
+  add_internal_function ("_shell", _("\
+$_shell - execute a shell command and return the result.\n\
+\n\
+    Usage: $_shell (COMMAND)\n\
+\n\
+    Arguments:\n\
+\n\
+      COMMAND: The command to execute.  Must be a string.\n\
+\n\
+    Returns:\n\
+      The command's exit code: zero on success, non-zero otherwise."),
+			 shell_internal_fn, NULL);
+
   add_cmd ("commands", no_set_class, show_commands, _("\
 Show the history of commands you typed.\n\
 You can supply a command number to start with, or a `+' to start after\n\
@@ -2296,39 +2834,19 @@ the previous command number shown."),
   add_cmd ("configuration", no_set_class, show_configuration,
 	   _("Show how GDB was configured at build time."), &showlist);
 
-  add_setshow_zinteger_cmd ("remote", no_class, &remote_debug, _("\
-Set debugging of remote protocol."), _("\
-Show debugging of remote protocol."), _("\
-When enabled, each packet sent or received with the remote target\n\
-is displayed."),
-			    NULL,
-			    show_remote_debug,
-			    &setdebuglist, &showdebuglist);
+  add_setshow_prefix_cmd ("debug", no_class,
+			  _("Generic command for setting gdb debugging flags."),
+			  _("Generic command for showing gdb debugging flags."),
+			  &setdebuglist, &showdebuglist,
+			  &setlist, &showlist);
 
-  add_setshow_zuinteger_unlimited_cmd ("remotetimeout", no_class,
-				       &remote_timeout, _("\
-Set timeout limit to wait for target to respond."), _("\
-Show timeout limit to wait for target to respond."), _("\
-This value is used to set the time limit for gdb to wait for a response\n\
-from the target."),
-				       NULL,
-				       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);
-
-  c = add_com ("shell", class_support, shell_command, _("\
+  cmd_list_element *shell_cmd
+    = add_com ("shell", class_support, shell_command, _("\
 Execute the rest of the line as a shell command.\n\
 With no arguments, run an inferior shell."));
-  set_cmd_completer (c, filename_completer);
+  set_cmd_completer_handle_brkchars (shell_cmd, shell_command_completer);
 
-  add_com_alias ("!", "shell", class_support, 0);
+  add_com_alias ("!", shell_cmd, class_support, 0);
 
   c = add_com ("edit", class_files, edit_command, _("\
 Edit specified file or function.\n\
@@ -2342,7 +2860,8 @@ Uses EDITOR environment variable content
 
   c->completer = location_completer;
 
-  c = add_com ("pipe", class_support, pipe_command, _("\
+  cmd_list_element *pipe_cmd
+    = add_com ("pipe", class_support, pipe_command, _("\
 Send the output of a gdb command to a shell command.\n\
 Usage: | [COMMAND] | SHELL_COMMAND\n\
 Usage: | -d DELIM COMMAND DELIM SHELL_COMMAND\n\
@@ -2357,13 +2876,16 @@ case COMMAND contains a | character.\n\
 \n\
 With no COMMAND, repeat the last executed command\n\
 and send its output to SHELL_COMMAND."));
-  set_cmd_completer_handle_brkchars (c, pipe_command_completer);
-  add_com_alias ("|", "pipe", class_support, 0);
+  set_cmd_completer_handle_brkchars (pipe_cmd, pipe_command_completer);
+  add_com_alias ("|", pipe_cmd, class_support, 0);
 
-  add_com ("list", class_files, list_command, _("\
+  cmd_list_element *list_cmd
+    = add_com ("list", class_files, list_command, _("\
 List specified function or line.\n\
 With no argument, lists ten more lines after or around previous listing.\n\
+\"list +\" lists the ten lines following a previous ten-line listing.\n\
 \"list -\" lists the ten lines before a previous ten-line listing.\n\
+\"list .\" lists ten lines around the point of execution in the current frame.\n\
 One argument specifies a line, and ten lines are listed around that line.\n\
 Two arguments with comma between specify starting and ending lines to list.\n\
 Lines can be specified in these ways:\n\
@@ -2379,15 +2901,18 @@ By default, when a single location is gi
 This can be changed using \"set listsize\", and the current value\n\
 can be shown using \"show listsize\"."));
 
-  add_com_alias ("l", "list", class_files, 1);
-
-  if (dbx_commands)
-    add_com_alias ("file", "list", class_files, 1);
+  add_com_alias ("l", list_cmd, class_files, 1);
+  set_cmd_completer(list_cmd, location_completer);
 
   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 +2920,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\
@@ -2410,15 +2930,17 @@ Note that the address is interpreted as
 like in the \"break\" command.\n\
 So, for example, if you want to disassemble function bar in file foo.c\n\
 you must type \"disassemble 'foo.c'::bar\" and not \"disassemble foo.c:bar\"."));
-  set_cmd_completer (c, location_completer);
+  set_cmd_completer_handle_brkchars (c, disassemble_command_completer);
 
   c = add_com ("make", class_support, make_command, _("\
 Run the ``make'' program using the rest of the line as arguments."));
-  set_cmd_completer (c, filename_completer);
-  add_cmd ("user", no_class, show_user, _("\
+  set_cmd_completer (c, deprecated_filename_completer);
+
+  c = add_cmd ("user", no_class, show_user, _("\
 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."), &showlist);
+  set_cmd_completer (c, show_user_completer);
   add_com ("apropos", class_support, apropos_command, _("\
 Search for commands matching a REGEXP.\n\
 Usage: apropos [-v] REGEXP\n\
@@ -2441,19 +2963,49 @@ 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\
 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);
+
+  add_setshow_boolean_cmd ("suppress-cli-notifications", no_class,
+			   &user_wants_cli_suppress_notification,
+			   _("\
+Set whether printing notifications on CLI is suppressed."), _("\
+Show whether printing notifications on CLI is suppressed."), _("\
+When on, printing notifications (such as inferior/thread switch)\n\
+on CLI is suppressed."),
+			   set_suppress_cli_notifications,
+			   show_suppress_cli_notifications,
+			   &setlist,
+			   &showlist);
 
   const char *source_help_text = xstrprintf (_("\
 Read commands from a file named FILE.\n\
@@ -2464,8 +3016,8 @@ Usage: source [-s] [-v] FILE\n\
 -v: each command in FILE is echoed as it is executed.\n\
 \n\
 Note that the file \"%s\" is read automatically in this way\n\
-when GDB is started."), GDBINIT);
+when GDB is started."), GDBINIT).release ();
   c = add_cmd ("source", class_support, source_command,
 	       source_help_text, &cmdlist);
-  set_cmd_completer (c, filename_completer);
+  set_cmd_completer (c, deprecated_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.20200303/gdb/cli/cli-cmds.h ./gdb/cli/cli-cmds.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-cmds.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-cmds.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,11 +14,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/>.  */
 
-#ifndef CLI_CLI_CMDS_H
-#define CLI_CLI_CMDS_H
+#ifndef GDB_CLI_CLI_CMDS_H
+#define GDB_CLI_CLI_CMDS_H
 
 #include "gdbsupport/filestuff.h"
-#include "gdbsupport/gdb_optional.h"
+#include <optional>
 #include "completer.h"
 
 /* Chain containing all defined commands.  */
@@ -89,10 +89,42 @@ extern struct cmd_list_element *maintena
 
 extern struct cmd_list_element *maintenanceprintlist;
 
+/* Chain containing all defined "maintenance flush" subcommands.  */
+
+extern struct cmd_list_element *maintenanceflushlist;
+
+/* Chain containing all defined "maintenance check" subcommands.  */
+
+extern struct cmd_list_element *maintenancechecklist;
+
+/* Chain containing all defined "maintenance set" subcommands.  */
+
+extern struct cmd_list_element *maintenance_set_cmdlist;
+
+/* Chain containing all defined "maintenance show" subcommands.  */
+
+extern struct cmd_list_element *maintenance_show_cmdlist;
+
 extern struct cmd_list_element *setprintlist;
 
 extern struct cmd_list_element *showprintlist;
 
+/* Chain containing all defined "set print raw" subcommands.  */
+
+extern struct cmd_list_element *setprintrawlist;
+
+/* Chain containing all defined "show print raw" subcommands.  */
+
+extern struct cmd_list_element *showprintrawlist;
+
+/* Chain containing all defined "set print type" subcommands.  */
+
+extern struct cmd_list_element *setprinttypelist;
+
+/* Chain containing all defined "show print type" subcommands.  */
+
+extern struct cmd_list_element *showprinttypelist;
+
 extern struct cmd_list_element *setdebuglist;
 
 extern struct cmd_list_element *showdebuglist;
@@ -101,14 +133,24 @@ extern struct cmd_list_element *setcheck
 
 extern struct cmd_list_element *showchecklist;
 
+/* Chain containing all defined "save" subcommands.  */
+
+extern struct cmd_list_element *save_cmdlist;
+
+/* Chain containing all defined "set source" subcommands.  */
+
+extern struct cmd_list_element *setsourcelist;
+
+/* Chain containing all defined "show source" subcommands.  */
+
+extern struct cmd_list_element *showsourcelist;
+
 /* Limit the call depth of user-defined commands */
 
 extern unsigned int max_user_call_depth;
 
 /* Exported to gdb/top.c */
 
-void init_cmd_lists (void);
-
 int is_complete_command (struct cmd_list_element *cmd);
 
 /* Exported to gdb/main.c */
@@ -137,7 +179,7 @@ struct open_script
   }
 };
 
-extern gdb::optional<open_script>
+extern std::optional<open_script>
     find_and_open_script (const char *file, int search_path);
 
 /* Command tracing state.  */
@@ -160,4 +202,4 @@ extern void with_command_completer_1 (co
 				      completion_tracker &tracker,
 				      const char *text);
 
-#endif /* CLI_CLI_CMDS_H */
+#endif /* GDB_CLI_CLI_CMDS_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.20200303/gdb/cli/cli-decode.c ./gdb/cli/cli-decode.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-decode.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-decode.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,27 +15,25 @@
    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 <ctype.h>
-#include "gdb_regex.h"
+#include "gdbsupport/gdb_regex.h"
 #include "completer.h"
 #include "ui-out.h"
 #include "cli/cli-cmds.h"
 #include "cli/cli-decode.h"
 #include "cli/cli-style.h"
-#include "gdbsupport/gdb_optional.h"
+#include "cli/cli-utils.h"
+#include <optional>
 
 /* Prototypes for local functions.  */
 
 static void undef_cmd_error (const char *, const char *);
 
-static struct cmd_list_element *delete_cmd (const char *name,
-					    struct cmd_list_element **list,
-					    struct cmd_list_element **prehook,
-					    struct cmd_list_element **prehookee,
-					    struct cmd_list_element **posthook,
-					    struct cmd_list_element **posthookee);
+static cmd_list_element::aliases_list_type delete_cmd
+  (const char *name, cmd_list_element **list, cmd_list_element **prehook,
+   cmd_list_element **prehookee, cmd_list_element **posthook,
+   cmd_list_element **posthookee);
 
 static struct cmd_list_element *find_cmd (const char *command,
 					  int len,
@@ -43,14 +41,25 @@ 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,
-   otherwise return NULL.  */
+static int lookup_cmd_composition_1 (const char *text,
+				     struct cmd_list_element **alias,
+				     struct cmd_list_element **prefix_cmd,
+				     struct cmd_list_element **cmd,
+				     struct cmd_list_element *cur_list);
+
+/* Look up a command whose 'subcommands' field is SUBCOMMANDS.  Return the
+   command if found, otherwise return NULL.  */
 
 static struct cmd_list_element *
-lookup_cmd_for_prefixlist (struct cmd_list_element **key,
-			   struct cmd_list_element *list)
+lookup_cmd_with_subcommands (cmd_list_element **subcommands,
+			     cmd_list_element *list)
 {
   struct cmd_list_element *p = NULL;
 
@@ -58,12 +67,17 @@ lookup_cmd_for_prefixlist (struct cmd_li
     {
       struct cmd_list_element *q;
 
-      if (p->prefixlist == NULL)
+      if (!p->is_prefix ())
 	continue;
-      else if (p->prefixlist == key)
-	return p;
 
-      q = lookup_cmd_for_prefixlist (key, *(p->prefixlist));
+      else if (p->subcommands == subcommands)
+	{
+	  /* If we found an alias, we must return the aliased
+	     command.  */
+	  return p->is_alias () ? p->alias_target : p;
+	}
+
+      q = lookup_cmd_with_subcommands (subcommands, *(p->subcommands));
       if (q != NULL)
 	return q;
     }
@@ -72,109 +86,97 @@ 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);
-
-
-/* Set the callback function for the specified command.  For each both
-   the commands callback and func() are set.  The latter set to a
-   bounce function (unless cfunc / sfunc is NULL that is).  */
+print_help_for_command (const cmd_list_element &c,
+			bool recurse, struct ui_file *stream);
 
 static void
-do_const_cfunc (struct cmd_list_element *c, const char *args, int from_tty)
+do_simple_func (const char *args, int from_tty, cmd_list_element *c)
 {
-  c->function.const_cfunc (args, from_tty);
+  c->function.simple_func (args, from_tty);
 }
 
 static void
-set_cmd_cfunc (struct cmd_list_element *cmd, cmd_const_cfunc_ftype *cfunc)
+set_cmd_simple_func (struct cmd_list_element *cmd, cmd_simple_func_ftype *simple_func)
 {
-  if (cfunc == NULL)
+  if (simple_func == NULL)
     cmd->func = NULL;
   else
-    cmd->func = do_const_cfunc;
-  cmd->function.const_cfunc = cfunc;
+    cmd->func = do_simple_func;
+
+  cmd->function.simple_func = simple_func;
 }
 
-static void
-do_sfunc (struct cmd_list_element *c, const char *args, int from_tty)
+int
+cmd_simple_func_eq (struct cmd_list_element *cmd, cmd_simple_func_ftype *simple_func)
 {
-  c->function.sfunc (args, from_tty, c);
+  return (cmd->func == do_simple_func
+	  && cmd->function.simple_func == simple_func);
 }
 
 void
-set_cmd_sfunc (struct cmd_list_element *cmd, cmd_const_sfunc_ftype *sfunc)
+set_cmd_completer (struct cmd_list_element *cmd, completer_ftype *completer)
 {
-  if (sfunc == NULL)
-    cmd->func = NULL;
-  else
-    cmd->func = do_sfunc;
-  cmd->function.sfunc = sfunc;
+  cmd->completer = completer; /* Ok.  */
 }
 
-int
-cmd_cfunc_eq (struct cmd_list_element *cmd, cmd_const_cfunc_ftype *cfunc)
-{
-  return cmd->func == do_const_cfunc && cmd->function.const_cfunc == cfunc;
-}
+/* See definition in commands.h.  */
 
 void
-set_cmd_context (struct cmd_list_element *cmd, void *context)
+set_cmd_completer_handle_brkchars (struct cmd_list_element *cmd,
+				   completer_handle_brkchars_ftype *func)
 {
-  cmd->context = context;
+  cmd->completer_handle_brkchars = func;
 }
 
-void *
-get_cmd_context (struct cmd_list_element *cmd)
-{
-  return cmd->context;
-}
+/* See cli-decode.h.  */
 
-enum cmd_types
-cmd_type (struct cmd_list_element *cmd)
+std::string
+cmd_list_element::prefixname_no_space () const
 {
-  return cmd->type;
+  if (!this->is_prefix ())
+    /* Not a prefix command.  */
+    return "";
+
+  std::string prefixname;
+  if (this->prefix != nullptr)
+    {
+      prefixname = this->prefix->prefixname_no_space ();
+      prefixname += " ";
+    }
+
+  prefixname += this->name;
+
+  return prefixname;
 }
 
-void
-set_cmd_completer (struct cmd_list_element *cmd, completer_ftype *completer)
+/* See cli-decode.h.  */
+
+std::string
+cmd_list_element::prefixname () const
 {
-  cmd->completer = completer; /* Ok.  */
+  std::string result = prefixname_no_space ();
+  if (!result.empty ())
+    result += " ";
+  return result;
 }
 
-/* See definition in commands.h.  */
+/* See cli/cli-decode.h.  */
 
-void
-set_cmd_completer_handle_brkchars (struct cmd_list_element *cmd,
-				   completer_handle_brkchars_ftype *func)
+std::vector<std::string>
+cmd_list_element::command_components () const
 {
-  cmd->completer_handle_brkchars = func;
+  std::vector<std::string> result;
+
+  if (this->prefix != nullptr)
+    result = this->prefix->command_components ();
+
+  result.emplace_back (this->name);
+  return result;
 }
 
 /* Add element named NAME.
    Space for NAME and DOC must be allocated by the caller.
-   CLASS is the top level category into which commands are broken down
+   THECLASS is the top level category into which commands are broken down
    for "help" purposes.
    FUN should be the function to execute the command;
    it will get a character string as argument, with leading
@@ -196,20 +198,24 @@ do_add_cmd (const char *name, enum comma
 {
   struct cmd_list_element *c = new struct cmd_list_element (name, theclass,
 							    doc);
-  struct cmd_list_element *p, *iter;
 
   /* Turn each alias of the old command into an alias of the new
      command.  */
   c->aliases = delete_cmd (name, list, &c->hook_pre, &c->hookee_pre,
 			   &c->hook_post, &c->hookee_post);
-  for (iter = c->aliases; iter; iter = iter->alias_chain)
-    iter->cmd_pointer = c;
+
+  for (cmd_list_element &alias : c->aliases)
+    alias.alias_target = c;
+
   if (c->hook_pre)
     c->hook_pre->hookee_pre = c;
+
   if (c->hookee_pre)
     c->hookee_pre->hook_pre = c;
+
   if (c->hook_post)
     c->hook_post->hookee_post = c;
+
   if (c->hookee_post)
     c->hookee_post->hook_post = c;
 
@@ -220,7 +226,7 @@ do_add_cmd (const char *name, enum comma
     }
   else
     {
-      p = *list;
+      cmd_list_element *p = *list;
       while (p->next && strcmp (p->next->name, name) <= 0)
 	{
 	  p = p->next;
@@ -229,6 +235,12 @@ 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.  */
+  cmd_list_element *prefixcmd = lookup_cmd_with_subcommands (list, cmdlist);
+  c->prefix = prefixcmd;
+
+
   return c;
 }
 
@@ -238,17 +250,17 @@ add_cmd (const char *name, enum command_
 {
   cmd_list_element *result = do_add_cmd (name, theclass, doc, list);
   result->func = NULL;
-  result->function.const_cfunc = NULL;
+  result->function.simple_func = NULL;
   return result;
 }
 
 struct cmd_list_element *
 add_cmd (const char *name, enum command_class theclass,
-	 cmd_const_cfunc_ftype *fun,
+	 cmd_simple_func_ftype *fun,
 	 const char *doc, struct cmd_list_element **list)
 {
   cmd_list_element *result = do_add_cmd (name, theclass, doc, list);
-  set_cmd_cfunc (result, fun);
+  set_cmd_simple_func (result, fun);
   return result;
 }
 
@@ -256,9 +268,9 @@ add_cmd (const char *name, enum command_
 
 struct cmd_list_element *
 add_cmd_suppress_notification (const char *name, enum command_class theclass,
-			       cmd_const_cfunc_ftype *fun, const char *doc,
+			       cmd_simple_func_ftype *fun, const char *doc,
 			       struct cmd_list_element **list,
-			       int *suppress_notification)
+			       bool *suppress_notification)
 {
   struct cmd_list_element *element;
 
@@ -294,107 +306,173 @@ deprecate_cmd (struct cmd_list_element *
 }
 
 struct cmd_list_element *
-add_alias_cmd (const char *name, cmd_list_element *old,
+add_alias_cmd (const char *name, cmd_list_element *target,
 	       enum command_class theclass, int abbrev_flag,
 	       struct cmd_list_element **list)
 {
-  if (old == 0)
-    {
-      struct cmd_list_element *prehook, *prehookee, *posthook, *posthookee;
-      struct cmd_list_element *aliases = delete_cmd (name, list,
-						     &prehook, &prehookee,
-						     &posthook, &posthookee);
+  gdb_assert (target != nullptr);
 
-      /* If this happens, it means a programmer error somewhere.  */
-      gdb_assert (!aliases && !prehook && !prehookee
-		  && !posthook && ! posthookee);
-      return 0;
-    }
-
-  struct cmd_list_element *c = add_cmd (name, theclass, old->doc, list);
+  struct cmd_list_element *c = add_cmd (name, theclass, target->doc, list);
 
-  /* If OLD->DOC can be freed, we should make another copy.  */
-  if (old->doc_allocated)
+  /* If TARGET->DOC can be freed, we should make another copy.  */
+  if (target->doc_allocated)
     {
-      c->doc = xstrdup (old->doc);
+      c->doc = xstrdup (target->doc);
       c->doc_allocated = 1;
     }
   /* NOTE: Both FUNC and all the FUNCTIONs need to be copied.  */
-  c->func = old->func;
-  c->function = old->function;
-  c->prefixlist = old->prefixlist;
-  c->prefixname = old->prefixname;
-  c->allow_unknown = old->allow_unknown;
+  c->func = target->func;
+  c->function = target->function;
+  c->subcommands = target->subcommands;
+  c->allow_unknown = target->allow_unknown;
   c->abbrev_flag = abbrev_flag;
-  c->cmd_pointer = old;
-  c->alias_chain = old->aliases;
-  old->aliases = c;
+  c->alias_target = target;
+  target->aliases.push_front (*c);
 
-  set_cmd_prefix (c, list);
   return c;
 }
 
-struct cmd_list_element *
-add_alias_cmd (const char *name, const char *oldname,
-	       enum command_class theclass, int abbrev_flag,
-	       struct cmd_list_element **list)
-{
-  const char *tmp;
-  struct cmd_list_element *old;
+/* 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.  */
 
-  tmp = oldname;
-  old = lookup_cmd (&tmp, *list, "", 1, 1);
+static void
+update_prefix_field_of_prefixed_commands (struct cmd_list_element *c)
+{
+  for (cmd_list_element *p = *c->subcommands; p != NULL; p = p->next)
+    {
+      p->prefix = c;
 
-  return add_alias_cmd (name, old, theclass, abbrev_flag, list);
+      /* 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_subcommands (list, cmdlist)
+	    that searches from the top level 'cmdlist'.  */
+      if (p->is_prefix ())
+	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
+   command list.  SUBCOMMANDS should be the address of the variable
    containing that list.  */
 
 struct cmd_list_element *
 add_prefix_cmd (const char *name, enum command_class theclass,
-		cmd_const_cfunc_ftype *fun,
-		const char *doc, struct cmd_list_element **prefixlist,
-		const char *prefixname, int allow_unknown,
-		struct cmd_list_element **list)
+		cmd_simple_func_ftype *fun,
+		const char *doc, struct cmd_list_element **subcommands,
+		int allow_unknown, 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->subcommands = subcommands;
   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->is_alias ())
+    c = c->alias_target;
+
+  help_list (*c->subcommands, c->prefixname_no_space ().c_str (),
+	     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 **subcommands,
+		      int allow_unknown, struct cmd_list_element **list)
+{
+  struct cmd_list_element *cmd = add_prefix_cmd (name, theclass, nullptr,
+						 doc, subcommands,
+						 allow_unknown, list);
+  cmd->func = 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->subcommands, 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 **subcommands,
+		     int allow_unknown, struct cmd_list_element **list)
+{
+  struct cmd_list_element *cmd = add_prefix_cmd (name, theclass, nullptr,
+						 doc, subcommands,
+						 allow_unknown, list);
+  cmd->func = do_show_prefix_cmd;
+  return cmd;
+}
+
+/* See command.h.  */
+
+set_show_commands
+add_setshow_prefix_cmd (const char *name, command_class theclass,
+			const char *set_doc, const char *show_doc,
+			cmd_list_element **set_subcommands_list,
+			cmd_list_element **show_subcommands_list,
+			cmd_list_element **set_list,
+			cmd_list_element **show_list)
+{
+  set_show_commands cmds;
+
+  cmds.set = add_basic_prefix_cmd (name, theclass, set_doc,
+				   set_subcommands_list, 0,
+				   set_list);
+  cmds.show = add_show_prefix_cmd (name, theclass, show_doc,
+				   show_subcommands_list, 0,
+				   show_list);
+
+  return cmds;
+}
+
 /* Like ADD_PREFIX_CMD but sets the suppress_notification pointer on the
    new command list element.  */
 
 struct cmd_list_element *
 add_prefix_cmd_suppress_notification
-               (const char *name, enum command_class theclass,
-		cmd_const_cfunc_ftype *fun,
-		const char *doc, struct cmd_list_element **prefixlist,
-		const char *prefixname, int allow_unknown,
-		struct cmd_list_element **list,
-		int *suppress_notification)
+	       (const char *name, enum command_class theclass,
+		cmd_simple_func_ftype *fun,
+		const char *doc, struct cmd_list_element **subcommands,
+		int allow_unknown, struct cmd_list_element **list,
+		bool *suppress_notification)
 {
   struct cmd_list_element *element
-    = add_prefix_cmd (name, theclass, fun, doc, prefixlist,
-		      prefixname, allow_unknown, list);
+    = add_prefix_cmd (name, theclass, fun, doc, subcommands,
+		      allow_unknown, list);
   element->suppress_notification = suppress_notification;
   return element;
 }
@@ -403,39 +481,40 @@ add_prefix_cmd_suppress_notification
 
 struct cmd_list_element *
 add_abbrev_prefix_cmd (const char *name, enum command_class theclass,
-		       cmd_const_cfunc_ftype *fun, const char *doc,
-		       struct cmd_list_element **prefixlist,
-		       const char *prefixname,
+		       cmd_simple_func_ftype *fun, const char *doc,
+		       struct cmd_list_element **subcommands,
 		       int allow_unknown, struct cmd_list_element **list)
 {
   struct cmd_list_element *c = add_cmd (name, theclass, fun, doc, list);
 
-  c->prefixlist = prefixlist;
-  c->prefixname = prefixname;
+  c->subcommands = subcommands;
   c->allow_unknown = allow_unknown;
   c->abbrev_flag = 1;
   return c;
 }
 
-/* This is an empty "cfunc".  */
+/* This is an empty "simple func".  */
 void
 not_just_help_class_command (const char *args, int from_tty)
 {
 }
 
-/* This is an empty "sfunc".  */
+/* This is an empty cmd func.  */
 
 static void
-empty_sfunc (const char *args, int from_tty, struct cmd_list_element *c)
+empty_func (const char *args, int from_tty, cmd_list_element *c)
 {
 }
 
 /* Add element named NAME to command list LIST (the list for set/show
    or some sublist thereof).
    TYPE is set_cmd or show_cmd.
-   CLASS is as in add_cmd.
+   THECLASS is as in add_cmd.
    VAR_TYPE is the kind of thing we are setting.
-   VAR is address of the variable being controlled by this command.
+   EXTRA_LITERALS if non-NULL define extra literals to be accepted in lieu of
+   a number for integer variables.
+   ARGS is a pre-validated type-erased reference to the variable being
+   controlled by this command.
    DOC is the documentation string.  */
 
 static struct cmd_list_element *
@@ -443,7 +522,8 @@ add_set_or_show_cmd (const char *name,
 		     enum cmd_types type,
 		     enum command_class theclass,
 		     var_types var_type,
-		     void *var,
+		     const literal_def *extra_literals,
+		     const setting::erased_args &arg,
 		     const char *doc,
 		     struct cmd_list_element **list)
 {
@@ -451,40 +531,42 @@ add_set_or_show_cmd (const char *name,
 
   gdb_assert (type == set_cmd || type == show_cmd);
   c->type = type;
-  c->var_type = var_type;
-  c->var = var;
+  c->var.emplace (var_type, extra_literals, arg);
+
   /* This needs to be something besides NULL so that this isn't
      treated as a help class.  */
-  set_cmd_sfunc (c, empty_sfunc);
+  c->func = empty_func;
   return c;
 }
 
-/* Add element named NAME to both the command SET_LIST and SHOW_LIST.
-   CLASS is as in add_cmd.  VAR_TYPE is the kind of thing we are
-   setting.  VAR is address of the variable being controlled by this
-   command.  SET_FUNC and SHOW_FUNC are the callback functions (if
-   non-NULL).  SET_DOC, SHOW_DOC and HELP_DOC are the documentation
-   strings.  PRINT the format string to print the value.  SET_RESULT
-   and SHOW_RESULT, if not NULL, are set to the resulting command
-   structures.  */
-
-static void
-add_setshow_cmd_full (const char *name,
-		      enum command_class theclass,
-		      var_types var_type, void *var,
-		      const char *set_doc, const char *show_doc,
-		      const char *help_doc,
-		      cmd_const_sfunc_ftype *set_func,
-		      show_value_ftype *show_func,
-		      struct cmd_list_element **set_list,
-		      struct cmd_list_element **show_list,
-		      struct cmd_list_element **set_result,
-		      struct cmd_list_element **show_result)
+/* Add element named NAME to both command lists SET_LIST and SHOW_LIST.
+   THECLASS is as in add_cmd.  VAR_TYPE is the kind of thing we are
+   setting.  EXTRA_LITERALS if non-NULL define extra literals to be
+   accepted in lieu of a number for integer variables.  ARGS is a
+   pre-validated type-erased reference to the variable being controlled
+   by this command.  SET_FUNC and SHOW_FUNC are the callback functions
+   (if non-NULL).  SET_DOC, SHOW_DOC and HELP_DOC are the documentation
+   strings.
+
+   Return the newly created set and show commands.  */
+
+static set_show_commands
+add_setshow_cmd_full_erased (const char *name,
+			     enum command_class theclass,
+			     var_types var_type,
+			     const literal_def *extra_literals,
+			     const setting::erased_args &args,
+			     const char *set_doc, const char *show_doc,
+			     const char *help_doc,
+			     cmd_func_ftype *set_func,
+			     show_value_ftype *show_func,
+			     struct cmd_list_element **set_list,
+			     struct cmd_list_element **show_list)
 {
   struct cmd_list_element *set;
   struct cmd_list_element *show;
-  char *full_set_doc;
-  char *full_show_doc;
+  gdb::unique_xmalloc_ptr<char> full_set_doc;
+  gdb::unique_xmalloc_ptr<char> full_show_doc;
 
   if (help_doc != NULL)
     {
@@ -493,38 +575,131 @@ add_setshow_cmd_full (const char *name,
     }
   else
     {
-      full_set_doc = xstrdup (set_doc);
-      full_show_doc = xstrdup (show_doc);
+      full_set_doc = make_unique_xstrdup (set_doc);
+      full_show_doc = make_unique_xstrdup (show_doc);
     }
-  set = add_set_or_show_cmd (name, set_cmd, theclass, var_type, var,
-			     full_set_doc, set_list);
+  set = add_set_or_show_cmd (name, set_cmd, theclass, var_type,
+			     extra_literals, args,
+			     full_set_doc.release (), set_list);
   set->doc_allocated = 1;
 
   if (set_func != NULL)
-    set_cmd_sfunc (set, set_func);
+    set->func = 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 = add_set_or_show_cmd (name, show_cmd, theclass, var_type,
+			      extra_literals, args,
+			      full_show_doc.release (), show_list);
   show->doc_allocated = 1;
   show->show_value_func = show_func;
   /* Disable the default symbol completer.  Doesn't make much sense
      for the "show" command to complete on anything.  */
   set_cmd_completer (show, nullptr);
 
-  if (set_result != NULL)
-    *set_result = set;
-  if (show_result != NULL)
-    *show_result = show;
+  return {set, show};
+}
+
+/* Completes on integer commands that support extra literals.  */
+
+static void
+integer_literals_completer (struct cmd_list_element *c,
+			    completion_tracker &tracker,
+			    const char *text, const char *word)
+{
+  const literal_def *extra_literals = c->var->extra_literals ();
+
+  if (*text == '\0')
+    {
+      tracker.add_completion (make_unique_xstrdup ("NUMBER"));
+      for (const literal_def *l = extra_literals;
+	   l->literal != nullptr;
+	   l++)
+	tracker.add_completion (make_unique_xstrdup (l->literal));
+    }
+  else
+    for (const literal_def *l = extra_literals;
+	 l->literal != nullptr;
+	 l++)
+      if (startswith (l->literal, text))
+	tracker.add_completion (make_unique_xstrdup (l->literal));
+}
+
+/* Add element named NAME to both command lists SET_LIST and SHOW_LIST.
+   THECLASS is as in add_cmd.  VAR_TYPE is the kind of thing we are
+   setting.  VAR is address of the variable being controlled by this
+   command.  EXTRA_LITERALS if non-NULL define extra literals to be
+   accepted in lieu of a number for integer variables.  If nullptr is
+   given as VAR, then both SET_SETTING_FUNC and GET_SETTING_FUNC must
+   be provided.  SET_SETTING_FUNC and GET_SETTING_FUNC are callbacks
+   used to access and modify the underlying property, whatever its
+   storage is.  SET_FUNC and SHOW_FUNC are the callback functions
+   (if non-NULL).  SET_DOC, SHOW_DOC and HELP_DOC are the
+   documentation strings.
+
+   Return the newly created set and show commands.  */
+
+template<typename T>
+static set_show_commands
+add_setshow_cmd_full (const char *name,
+		      enum command_class theclass,
+		      var_types var_type, T *var,
+		      const literal_def *extra_literals,
+		      const char *set_doc, const char *show_doc,
+		      const char *help_doc,
+		      typename setting_func_types<T>::set set_setting_func,
+		      typename setting_func_types<T>::get get_setting_func,
+		      cmd_func_ftype *set_func,
+		      show_value_ftype *show_func,
+		      struct cmd_list_element **set_list,
+		      struct cmd_list_element **show_list)
+{
+  auto erased_args
+    = setting::erase_args (var_type, var,
+			   set_setting_func, get_setting_func);
+  auto cmds = add_setshow_cmd_full_erased (name,
+					   theclass,
+					   var_type, extra_literals,
+					   erased_args,
+					   set_doc, show_doc,
+					   help_doc,
+					   set_func,
+					   show_func,
+					   set_list,
+					   show_list);
+
+  if (extra_literals != nullptr)
+    set_cmd_completer (cmds.set, integer_literals_completer);
+
+  return cmds;
+}
+
+/* Same as above but omitting EXTRA_LITERALS.  */
+
+template<typename T>
+static set_show_commands
+add_setshow_cmd_full (const char *name,
+		      enum command_class theclass,
+		      var_types var_type, T *var,
+		      const char *set_doc, const char *show_doc,
+		      const char *help_doc,
+		      typename setting_func_types<T>::set set_setting_func,
+		      typename setting_func_types<T>::get get_setting_func,
+		      cmd_func_ftype *set_func,
+		      show_value_ftype *show_func,
+		      struct cmd_list_element **set_list,
+		      struct cmd_list_element **show_list)
+{
+  return add_setshow_cmd_full (name, theclass, var_type, var, nullptr,
+			       set_doc, show_doc, help_doc,
+			       set_setting_func, get_setting_func,
+			       set_func, show_func, set_list, show_list);
 }
 
 /* Add element named NAME to command list LIST (the list for set or
-   some sublist thereof).  CLASS is as in add_cmd.  ENUMLIST is a list
+   some sublist thereof).  THECLASS is as in add_cmd.  ENUMLIST is a list
    of strings which may follow NAME.  VAR is address of the variable
    which will contain the matching string (from ENUMLIST).  */
 
-void
+set_show_commands
 add_setshow_enum_cmd (const char *name,
 		      enum command_class theclass,
 		      const char *const *enumlist,
@@ -532,320 +707,818 @@ add_setshow_enum_cmd (const char *name,
 		      const char *set_doc,
 		      const char *show_doc,
 		      const char *help_doc,
-		      cmd_const_sfunc_ftype *set_func,
+		      cmd_func_ftype *set_func,
 		      show_value_ftype *show_func,
 		      struct cmd_list_element **set_list,
-		      struct cmd_list_element **show_list,
-		      void *context)
+		      struct cmd_list_element **show_list)
+{
+  /* We require *VAR to be initialized before this call, and
+     furthermore it must be == to one of the values in ENUMLIST.  */
+  gdb_assert (var != nullptr && *var != nullptr);
+  for (int i = 0; ; ++i)
+    {
+      gdb_assert (enumlist[i] != nullptr);
+      if (*var == enumlist[i])
+	break;
+    }
+
+  set_show_commands commands
+    =  add_setshow_cmd_full<const char *> (name, theclass, var_enum, var,
+					   set_doc, show_doc, help_doc,
+					   nullptr, nullptr, set_func,
+					   show_func, set_list, show_list);
+  commands.set->enums = enumlist;
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_enum_cmd (const char *name, command_class theclass,
+		      const char *const *enumlist, const char *set_doc,
+		      const char *show_doc, const char *help_doc,
+		      setting_func_types<const char *>::set set_func,
+		      setting_func_types<const char *>::get get_func,
+		      show_value_ftype *show_func,
+		      cmd_list_element **set_list,
+		      cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<const char *> (name, theclass, var_enum,
+						  nullptr, set_doc, show_doc,
+						  help_doc, set_func, get_func,
+						  nullptr, show_func, set_list,
+						  show_list);
+
+  cmds.set->enums = enumlist;
+
+  return cmds;
+}
+
+/* See cli-decode.h.  */
+
+void
+complete_on_color (completion_tracker &tracker,
+		   const char *text, const char *word)
 {
-  struct cmd_list_element *c, *show;
+  complete_on_enum (tracker, ui_file_style::basic_color_enums.data (),
+		    text, word);
+  if (*text == '\0')
+    {
+      /* Convenience to let the user know what the option
+	 can accept.  Note there's no common prefix between
+	 the strings on purpose, so that complete_on_enum doesn't do
+	 a partial match.  */
+      tracker.add_completion (make_unique_xstrdup ("NUMBER"));
+      tracker.add_completion (make_unique_xstrdup ("#RRGGBB"));
+    }
+}
 
-  add_setshow_cmd_full (name, theclass, var_enum, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&c, &show);
-  c->enums = enumlist;
+/* Completer used in color commands.  */
 
-  set_cmd_context (c, context);
-  set_cmd_context (show, context);
+static void
+color_completer (struct cmd_list_element *ignore,
+		 completion_tracker &tracker,
+		 const char *text, const char *word)
+{
+  complete_on_color (tracker, text, word);
+}
+
+
+/* Add element named NAME to command list LIST (the list for set or
+   some sublist thereof).  CLASS is as in add_cmd.  VAR is address
+   of the variable which will contain the color.  */
+
+set_show_commands
+add_setshow_color_cmd (const char *name,
+		       enum command_class theclass,
+		       ui_file_style::color *var,
+		       const char *set_doc,
+		       const char *show_doc,
+		       const char *help_doc,
+		       cmd_func_ftype *set_func,
+		       show_value_ftype *show_func,
+		       struct cmd_list_element **set_list,
+		       struct cmd_list_element **show_list)
+{
+  set_show_commands commands = add_setshow_cmd_full<ui_file_style::color>
+    (name, theclass, var_color, var,
+     set_doc, show_doc, help_doc,
+     nullptr, nullptr, set_func, show_func,
+     set_list, show_list);
+
+  set_cmd_completer (commands.set, color_completer);
+
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_color_cmd (const char *name, command_class theclass,
+		       const char *set_doc, const char *show_doc,
+		       const char *help_doc,
+		       setting_func_types<ui_file_style::color>::set set_func,
+		       setting_func_types<ui_file_style::color>::get get_func,
+		       show_value_ftype *show_func,
+		       cmd_list_element **set_list,
+		       cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<ui_file_style::color>
+    (name, theclass, var_color, nullptr,
+     set_doc, show_doc, help_doc,
+     set_func, get_func, nullptr, show_func,
+     set_list, show_list);
+
+  set_cmd_completer (cmds.set, color_completer);
+
+  return cmds;
 }
 
 /* See cli-decode.h.  */
 const char * const auto_boolean_enums[] = { "on", "off", "auto", NULL };
 
 /* Add an auto-boolean command named NAME to both the set and show
-   command list lists.  CLASS is as in add_cmd.  VAR is address of the
+   command list lists.  THECLASS is as in add_cmd.  VAR is address of the
    variable which will contain the value.  DOC is the documentation
    string.  FUNC is the corresponding callback.  */
-void
+
+set_show_commands
 add_setshow_auto_boolean_cmd (const char *name,
 			      enum command_class theclass,
 			      enum auto_boolean *var,
 			      const char *set_doc, const char *show_doc,
 			      const char *help_doc,
-			      cmd_const_sfunc_ftype *set_func,
+			      cmd_func_ftype *set_func,
 			      show_value_ftype *show_func,
 			      struct cmd_list_element **set_list,
 			      struct cmd_list_element **show_list)
 {
-  struct cmd_list_element *c;
+  set_show_commands commands
+    = add_setshow_cmd_full<enum auto_boolean> (name, theclass, var_auto_boolean,
+					       var, set_doc, show_doc, help_doc,
+					       nullptr, nullptr, set_func,
+					       show_func, set_list, show_list);
+
+  commands.set->enums = auto_boolean_enums;
 
-  add_setshow_cmd_full (name, theclass, var_auto_boolean, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&c, NULL);
-  c->enums = auto_boolean_enums;
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_auto_boolean_cmd (const char *name, command_class theclass,
+			      const char *set_doc, const char *show_doc,
+			      const char *help_doc,
+			      setting_func_types<enum auto_boolean>::set set_func,
+			      setting_func_types<enum auto_boolean>::get get_func,
+			      show_value_ftype *show_func,
+			      cmd_list_element **set_list,
+			      cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<enum auto_boolean> (name, theclass,
+						       var_auto_boolean,
+						       nullptr, set_doc,
+						       show_doc, help_doc,
+						       set_func, get_func,
+						       nullptr, show_func,
+						       set_list, show_list);
+
+  cmds.set->enums = auto_boolean_enums;
+
+  return cmds;
 }
 
 /* See cli-decode.h.  */
 const char * const boolean_enums[] = { "on", "off", NULL };
 
 /* Add element named NAME to both the set and show command LISTs (the
-   list for set/show or some sublist thereof).  CLASS is as in
+   list for set/show or some sublist thereof).  THECLASS is as in
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.
    Returns the new command element.  */
 
-cmd_list_element *
+set_show_commands
 add_setshow_boolean_cmd (const char *name, enum command_class theclass, bool *var,
 			 const char *set_doc, const char *show_doc,
 			 const char *help_doc,
-			 cmd_const_sfunc_ftype *set_func,
+			 cmd_func_ftype *set_func,
 			 show_value_ftype *show_func,
 			 struct cmd_list_element **set_list,
 			 struct cmd_list_element **show_list)
 {
-  struct cmd_list_element *c;
+  set_show_commands commands
+    = add_setshow_cmd_full<bool> (name, theclass, var_boolean, var,
+				  set_doc, show_doc, help_doc,
+				  nullptr, nullptr, set_func, show_func,
+				  set_list, show_list);
 
-  add_setshow_cmd_full (name, theclass, var_boolean, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&c, NULL);
-  c->enums = boolean_enums;
+  commands.set->enums = boolean_enums;
 
-  return c;
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_boolean_cmd (const char *name, command_class theclass,
+			 const char *set_doc, const char *show_doc,
+			 const char *help_doc,
+			 setting_func_types<bool>::set set_func,
+			 setting_func_types<bool>::get get_func,
+			 show_value_ftype *show_func,
+			 cmd_list_element **set_list,
+			 cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<bool> (name, theclass, var_boolean, nullptr,
+					  set_doc, show_doc, help_doc,
+					  set_func, get_func, nullptr,
+					  show_func, set_list, show_list);
+
+  cmds.set->enums = boolean_enums;
+
+  return cmds;
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
-void
+
+set_show_commands
 add_setshow_filename_cmd (const char *name, enum command_class theclass,
-			  char **var,
+			  std::string *var,
 			  const char *set_doc, const char *show_doc,
 			  const char *help_doc,
-			  cmd_const_sfunc_ftype *set_func,
+			  cmd_func_ftype *set_func,
 			  show_value_ftype *show_func,
 			  struct cmd_list_element **set_list,
 			  struct cmd_list_element **show_list)
 {
-  struct cmd_list_element *set_result;
+  set_show_commands commands
+    = add_setshow_cmd_full<std::string> (name, theclass, var_filename, var,
+					 set_doc, show_doc, help_doc,
+					 nullptr, nullptr, set_func,
+					 show_func, set_list, show_list);
+
+  set_cmd_completer (commands.set, deprecated_filename_completer);
+
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_filename_cmd (const char *name, command_class theclass,
+			  const char *set_doc, const char *show_doc,
+			  const char *help_doc,
+			  setting_func_types<std::string>::set set_func,
+			  setting_func_types<std::string>::get get_func,
+			  show_value_ftype *show_func,
+			  cmd_list_element **set_list,
+			  cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<std::string> (name, theclass, var_filename,
+						 nullptr, set_doc, show_doc,
+						 help_doc, set_func, get_func,
+						 nullptr, show_func, set_list,
+						 show_list);
+
+  set_cmd_completer (cmds.set, deprecated_filename_completer);
 
-  add_setshow_cmd_full (name, theclass, var_filename, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&set_result, NULL);
-  set_cmd_completer (set_result, filename_completer);
+  return cmds;
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
-void
+
+set_show_commands
 add_setshow_string_cmd (const char *name, enum command_class theclass,
-			char **var,
+			std::string *var,
 			const char *set_doc, const char *show_doc,
 			const char *help_doc,
-			cmd_const_sfunc_ftype *set_func,
+			cmd_func_ftype *set_func,
 			show_value_ftype *show_func,
 			struct cmd_list_element **set_list,
 			struct cmd_list_element **show_list)
 {
-  cmd_list_element *set_cmd;
+  set_show_commands commands
+    = add_setshow_cmd_full<std::string> (name, theclass, var_string, var,
+					set_doc, show_doc, help_doc,
+					nullptr, nullptr, set_func,
+					show_func, set_list, show_list);
 
-  add_setshow_cmd_full (name, theclass, var_string, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&set_cmd, NULL);
+  /* Disable the default symbol completer.  */
+  set_cmd_completer (commands.set, nullptr);
+
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_string_cmd (const char *name, command_class theclass,
+			const char *set_doc, const char *show_doc,
+			const char *help_doc,
+			setting_func_types<std::string>::set set_func,
+			setting_func_types<std::string>::get get_func,
+			show_value_ftype *show_func,
+			cmd_list_element **set_list,
+			cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<std::string> (name, theclass, var_string,
+						 nullptr, set_doc, show_doc,
+						 help_doc, set_func, get_func,
+						 nullptr, show_func, set_list,
+						 show_list);
 
   /* Disable the default symbol completer.  */
-  set_cmd_completer (set_cmd, nullptr);
+  set_cmd_completer (cmds.set, nullptr);
+
+  return cmds;
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
-struct cmd_list_element *
+
+set_show_commands
 add_setshow_string_noescape_cmd (const char *name, enum command_class theclass,
-				 char **var,
+				 std::string *var,
 				 const char *set_doc, const char *show_doc,
 				 const char *help_doc,
-				 cmd_const_sfunc_ftype *set_func,
+				 cmd_func_ftype *set_func,
 				 show_value_ftype *show_func,
 				 struct cmd_list_element **set_list,
 				 struct cmd_list_element **show_list)
 {
-  struct cmd_list_element *set_cmd;
+  set_show_commands commands
+    = add_setshow_cmd_full<std::string> (name, theclass, var_string_noescape,
+					 var, set_doc, show_doc, help_doc,
+					 nullptr, nullptr, set_func, show_func,
+					 set_list, show_list);
+
+  /* Disable the default symbol completer.  */
+  set_cmd_completer (commands.set, nullptr);
+
+  return commands;
+}
 
-  add_setshow_cmd_full (name, theclass, var_string_noescape, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&set_cmd, NULL);
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_string_noescape_cmd (const char *name, command_class theclass,
+				 const char *set_doc, const char *show_doc,
+				 const char *help_doc,
+				 setting_func_types<std::string>::set set_func,
+				 setting_func_types<std::string>::get get_func,
+				 show_value_ftype *show_func,
+				 cmd_list_element **set_list,
+				 cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<std::string> (name, theclass,
+						 var_string_noescape, nullptr,
+						 set_doc, show_doc, help_doc,
+						 set_func, get_func,
+						 nullptr, show_func, set_list,
+						 show_list);
 
   /* Disable the default symbol completer.  */
-  set_cmd_completer (set_cmd, nullptr);
+  set_cmd_completer (cmds.set, nullptr);
 
-  return set_cmd;
+  return cmds;
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  */
-void
+
+set_show_commands
 add_setshow_optional_filename_cmd (const char *name, enum command_class theclass,
-				   char **var,
+				   std::string *var,
 				   const char *set_doc, const char *show_doc,
 				   const char *help_doc,
-				   cmd_const_sfunc_ftype *set_func,
+				   cmd_func_ftype *set_func,
 				   show_value_ftype *show_func,
 				   struct cmd_list_element **set_list,
 				   struct cmd_list_element **show_list)
 {
-  struct cmd_list_element *set_result;
- 
-  add_setshow_cmd_full (name, theclass, var_optional_filename, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&set_result, NULL);
-		
-  set_cmd_completer (set_result, filename_completer);
+  set_show_commands commands
+    = add_setshow_cmd_full<std::string> (name, theclass, var_optional_filename,
+					 var, set_doc, show_doc, help_doc,
+					 nullptr, nullptr, set_func, show_func,
+					 set_list, show_list);
+
+  set_cmd_completer (commands.set, deprecated_filename_completer);
 
+  return commands;
 }
 
-/* Completes on literal "unlimited".  Used by integer commands that
-   support a special "unlimited" value.  */
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
 
-static void
-integer_unlimited_completer (struct cmd_list_element *ignore,
-			     completion_tracker &tracker,
-			     const char *text, const char *word)
+set_show_commands
+add_setshow_optional_filename_cmd (const char *name, command_class theclass,
+				   const char *set_doc, const char *show_doc,
+				   const char *help_doc,
+				   setting_func_types<std::string>::set set_func,
+				   setting_func_types<std::string>::get get_func,
+				   show_value_ftype *show_func,
+				   cmd_list_element **set_list,
+				   cmd_list_element **show_list)
 {
-  static const char * const keywords[] =
-    {
-      "unlimited",
-      NULL,
-    };
+  auto cmds =
+    add_setshow_cmd_full<std::string> (name, theclass, var_optional_filename,
+				       nullptr, set_doc, show_doc, help_doc,
+				       set_func, get_func, nullptr, show_func,
+				       set_list,show_list);
 
-  complete_on_enum (tracker, keywords, text, word);
+  set_cmd_completer (cmds.set, deprecated_filename_completer);
+
+  return cmds;
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
-   list for set/show or some sublist thereof).  CLASS is as in
+   list for set/show or some sublist thereof).  THECLASS is as in
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  This
    function is only used in Python API.  Please don't use it elsewhere.  */
-void
+
+set_show_commands
+add_setshow_integer_cmd (const char *name, enum command_class theclass,
+			 int *var, const literal_def *extra_literals,
+			 const char *set_doc, const char *show_doc,
+			 const char *help_doc,
+			 cmd_func_ftype *set_func,
+			 show_value_ftype *show_func,
+			 struct cmd_list_element **set_list,
+			 struct cmd_list_element **show_list)
+{
+  set_show_commands commands
+    = add_setshow_cmd_full<int> (name, theclass, var_integer, var,
+				 extra_literals, set_doc, show_doc,
+				 help_doc, nullptr, nullptr, set_func,
+				 show_func, set_list, show_list);
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_integer_cmd (const char *name, command_class theclass,
+			 const literal_def *extra_literals,
+			 const char *set_doc, const char *show_doc,
+			 const char *help_doc,
+			 setting_func_types<int>::set set_func,
+			 setting_func_types<int>::get get_func,
+			 show_value_ftype *show_func,
+			 cmd_list_element **set_list,
+			 cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<int> (name, theclass, var_integer, nullptr,
+					 extra_literals, set_doc, show_doc,
+					 help_doc, set_func, get_func, nullptr,
+					 show_func, set_list, show_list);
+  return cmds;
+}
+
+/* Accept `unlimited' or 0, translated internally to INT_MAX.  */
+const literal_def integer_unlimited_literals[] =
+  {
+    { "unlimited", INT_MAX, 0 },
+    { nullptr }
+  };
+
+/* Same as above but using `integer_unlimited_literals', with a pointer
+   to a global storage buffer.  */
+
+set_show_commands
 add_setshow_integer_cmd (const char *name, enum command_class theclass,
 			 int *var,
 			 const char *set_doc, const char *show_doc,
 			 const char *help_doc,
-			 cmd_const_sfunc_ftype *set_func,
+			 cmd_func_ftype *set_func,
 			 show_value_ftype *show_func,
 			 struct cmd_list_element **set_list,
 			 struct cmd_list_element **show_list)
 {
-  struct cmd_list_element *set;
+  set_show_commands commands
+    = add_setshow_cmd_full<int> (name, theclass, var_integer, var,
+				 integer_unlimited_literals,
+				 set_doc, show_doc, help_doc,
+				 nullptr, nullptr, set_func,
+				 show_func, set_list, show_list);
+  return commands;
+}
 
-  add_setshow_cmd_full (name, theclass, var_integer, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&set, NULL);
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
 
-  set_cmd_completer (set, integer_unlimited_completer);
+set_show_commands
+add_setshow_integer_cmd (const char *name, command_class theclass,
+			 const char *set_doc, const char *show_doc,
+			 const char *help_doc,
+			 setting_func_types<int>::set set_func,
+			 setting_func_types<int>::get get_func,
+			 show_value_ftype *show_func,
+			 cmd_list_element **set_list,
+			 cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<int> (name, theclass, var_integer, nullptr,
+					 integer_unlimited_literals,
+					 set_doc, show_doc, help_doc, set_func,
+					 get_func, nullptr, show_func, set_list,
+					 show_list);
+  return cmds;
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
    list for set/show or some sublist thereof).  CLASS is as in
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
-void
+
+set_show_commands
+add_setshow_pinteger_cmd (const char *name, enum command_class theclass,
+			  int *var, const literal_def *extra_literals,
+			  const char *set_doc, const char *show_doc,
+			  const char *help_doc,
+			  cmd_func_ftype *set_func,
+			  show_value_ftype *show_func,
+			  struct cmd_list_element **set_list,
+			  struct cmd_list_element **show_list)
+{
+  set_show_commands commands
+    = add_setshow_cmd_full<int> (name, theclass, var_pinteger, var,
+				 extra_literals, set_doc, show_doc,
+				 help_doc, nullptr, nullptr, set_func,
+				 show_func, set_list, show_list);
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_pinteger_cmd (const char *name, command_class theclass,
+			  const literal_def *extra_literals,
+			  const char *set_doc, const char *show_doc,
+			  const char *help_doc,
+			  setting_func_types<int>::set set_func,
+			  setting_func_types<int>::get get_func,
+			  show_value_ftype *show_func,
+			  cmd_list_element **set_list,
+			  cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<int> (name, theclass, var_pinteger, nullptr,
+					 extra_literals, set_doc, show_doc,
+					 help_doc, set_func, get_func, nullptr,
+					 show_func, set_list, show_list);
+  return cmds;
+}
+
+/* Add element named NAME to both the set and show command LISTs (the
+   list for set/show or some sublist thereof).  THECLASS is as in
+   add_cmd.  VAR is address of the variable which will contain the
+   value.  SET_DOC and SHOW_DOC are the documentation strings.  */
+
+set_show_commands
+add_setshow_uinteger_cmd (const char *name, enum command_class theclass,
+			  unsigned int *var, const literal_def *extra_literals,
+			  const char *set_doc, const char *show_doc,
+			  const char *help_doc,
+			  cmd_func_ftype *set_func,
+			  show_value_ftype *show_func,
+			  struct cmd_list_element **set_list,
+			  struct cmd_list_element **show_list)
+{
+  set_show_commands commands
+    = add_setshow_cmd_full<unsigned int> (name, theclass, var_uinteger, var,
+					  extra_literals, set_doc, show_doc,
+					  help_doc, nullptr, nullptr, set_func,
+					  show_func, set_list, show_list);
+  return commands;
+}
+
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_uinteger_cmd (const char *name, command_class theclass,
+			  const literal_def *extra_literals,
+			  const char *set_doc, const char *show_doc,
+			  const char *help_doc,
+			  setting_func_types<unsigned int>::set set_func,
+			  setting_func_types<unsigned int>::get get_func,
+			  show_value_ftype *show_func,
+			  cmd_list_element **set_list,
+			  cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<unsigned int> (name, theclass, var_uinteger,
+						  nullptr, extra_literals,
+						  set_doc, show_doc, help_doc,
+						  set_func, get_func, nullptr,
+						  show_func, set_list,
+						  show_list);
+  return cmds;
+}
+
+/* Accept `unlimited' or 0, translated internally to UINT_MAX.  */
+const literal_def uinteger_unlimited_literals[] =
+  {
+    { "unlimited", UINT_MAX, 0 },
+    { nullptr }
+  };
+
+/* Same as above but using `uinteger_unlimited_literals', with a pointer
+   to a global storage buffer.  */
+
+set_show_commands
 add_setshow_uinteger_cmd (const char *name, enum command_class theclass,
 			  unsigned int *var,
 			  const char *set_doc, const char *show_doc,
 			  const char *help_doc,
-			  cmd_const_sfunc_ftype *set_func,
+			  cmd_func_ftype *set_func,
 			  show_value_ftype *show_func,
 			  struct cmd_list_element **set_list,
 			  struct cmd_list_element **show_list)
 {
-  struct cmd_list_element *set;
+  set_show_commands commands
+    = add_setshow_cmd_full<unsigned int> (name, theclass, var_uinteger, var,
+					  uinteger_unlimited_literals,
+					  set_doc, show_doc, help_doc, nullptr,
+					  nullptr, set_func, show_func,
+					  set_list, show_list);
+  return commands;
+}
 
-  add_setshow_cmd_full (name, theclass, var_uinteger, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&set, NULL);
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
 
-  set_cmd_completer (set, integer_unlimited_completer);
+set_show_commands
+add_setshow_uinteger_cmd (const char *name, command_class theclass,
+			  const char *set_doc, const char *show_doc,
+			  const char *help_doc,
+			  setting_func_types<unsigned int>::set set_func,
+			  setting_func_types<unsigned int>::get get_func,
+			  show_value_ftype *show_func,
+			  cmd_list_element **set_list,
+			  cmd_list_element **show_list)
+{
+  auto cmds = add_setshow_cmd_full<unsigned int> (name, theclass, var_uinteger,
+						  nullptr,
+						  uinteger_unlimited_literals,
+						  set_doc, show_doc, help_doc,
+						  set_func, get_func, nullptr,
+						  show_func, set_list,
+						  show_list);
+  return cmds;
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
-   list for set/show or some sublist thereof).  CLASS is as in
+   list for set/show or some sublist thereof).  THECLASS is as in
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
-void
+
+set_show_commands
 add_setshow_zinteger_cmd (const char *name, enum command_class theclass,
 			  int *var,
 			  const char *set_doc, const char *show_doc,
 			  const char *help_doc,
-			  cmd_const_sfunc_ftype *set_func,
+			  cmd_func_ftype *set_func,
 			  show_value_ftype *show_func,
 			  struct cmd_list_element **set_list,
 			  struct cmd_list_element **show_list)
 {
-  add_setshow_cmd_full (name, theclass, var_zinteger, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			NULL, NULL);
+  return add_setshow_cmd_full<int> (name, theclass, var_integer, var,
+				    set_doc, show_doc, help_doc,
+				    nullptr, nullptr, set_func,
+				    show_func, set_list, show_list);
 }
 
-void
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_zinteger_cmd (const char *name, command_class theclass,
+			  const char *set_doc, const char *show_doc,
+			  const char *help_doc,
+			  setting_func_types<int>::set set_func,
+			  setting_func_types<int>::get get_func,
+			  show_value_ftype *show_func,
+			  cmd_list_element **set_list,
+			  cmd_list_element **show_list)
+{
+  return add_setshow_cmd_full<int> (name, theclass, var_integer, nullptr,
+				    set_doc, show_doc, help_doc, set_func,
+				    get_func, nullptr, show_func, set_list,
+				    show_list);
+}
+
+/* Accept `unlimited' or -1, using -1 internally.  */
+const literal_def pinteger_unlimited_literals[] =
+  {
+    { "unlimited", -1, -1 },
+    { nullptr }
+  };
+
+/* Same as above but using `pinteger_unlimited_literals', with a pointer
+   to a global storage buffer.  */
+
+set_show_commands
 add_setshow_zuinteger_unlimited_cmd (const char *name,
 				     enum command_class theclass,
 				     int *var,
 				     const char *set_doc,
 				     const char *show_doc,
 				     const char *help_doc,
-				     cmd_const_sfunc_ftype *set_func,
+				     cmd_func_ftype *set_func,
 				     show_value_ftype *show_func,
 				     struct cmd_list_element **set_list,
 				     struct cmd_list_element **show_list)
 {
-  struct cmd_list_element *set;
-
-  add_setshow_cmd_full (name, theclass, var_zuinteger_unlimited, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			&set, NULL);
+  set_show_commands commands
+    = add_setshow_cmd_full<int> (name, theclass, var_pinteger, var,
+				 pinteger_unlimited_literals,
+				 set_doc, show_doc, help_doc, nullptr,
+				 nullptr, set_func, show_func, set_list,
+				 show_list);
+  return commands;
+}
 
-  set_cmd_completer (set, integer_unlimited_completer);
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
+
+set_show_commands
+add_setshow_zuinteger_unlimited_cmd (const char *name, command_class theclass,
+				     const char *set_doc, const char *show_doc,
+				     const char *help_doc,
+				     setting_func_types<int>::set set_func,
+				     setting_func_types<int>::get get_func,
+				     show_value_ftype *show_func,
+				     cmd_list_element **set_list,
+				     cmd_list_element **show_list)
+{
+  auto cmds
+    = add_setshow_cmd_full<int> (name, theclass, var_pinteger, nullptr,
+				 pinteger_unlimited_literals,
+				 set_doc, show_doc, help_doc, set_func,
+				 get_func, nullptr, show_func, set_list,
+				 show_list);
+  return cmds;
 }
 
 /* Add element named NAME to both the set and show command LISTs (the
-   list for set/show or some sublist thereof).  CLASS is as in
+   list for set/show or some sublist thereof).  THECLASS is as in
    add_cmd.  VAR is address of the variable which will contain the
    value.  SET_DOC and SHOW_DOC are the documentation strings.  */
-void
+
+set_show_commands
 add_setshow_zuinteger_cmd (const char *name, enum command_class theclass,
 			   unsigned int *var,
 			   const char *set_doc, const char *show_doc,
 			   const char *help_doc,
-			   cmd_const_sfunc_ftype *set_func,
+			   cmd_func_ftype *set_func,
 			   show_value_ftype *show_func,
 			   struct cmd_list_element **set_list,
 			   struct cmd_list_element **show_list)
 {
-  add_setshow_cmd_full (name, theclass, var_zuinteger, var,
-			set_doc, show_doc, help_doc,
-			set_func, show_func,
-			set_list, show_list,
-			NULL, NULL);
+  return add_setshow_cmd_full<unsigned int> (name, theclass, var_uinteger,
+					     var, set_doc, show_doc, help_doc,
+					     nullptr, nullptr, set_func,
+					     show_func, set_list, show_list);
 }
 
-/* Remove the command named NAME from the command list.  Return the
-   list commands which were aliased to the deleted command.  If the
-   command had no aliases, return NULL.  The various *HOOKs are set to
-   the pre- and post-hook commands for the deleted command.  If the
-   command does not have a hook, the corresponding out parameter is
-   set to NULL.  */
+/* Same as above but using a getter and a setter function instead of a pointer
+   to a global storage buffer.  */
 
-static struct cmd_list_element *
+set_show_commands
+add_setshow_zuinteger_cmd (const char *name, command_class theclass,
+			   const char *set_doc, const char *show_doc,
+			   const char *help_doc,
+			   setting_func_types<unsigned int>::set set_func,
+			   setting_func_types<unsigned int>::get get_func,
+			   show_value_ftype *show_func,
+			   cmd_list_element **set_list,
+			   cmd_list_element **show_list)
+{
+  return add_setshow_cmd_full<unsigned int> (name, theclass, var_uinteger,
+					     nullptr, set_doc, show_doc,
+					     help_doc, set_func, get_func,
+					     nullptr, show_func, set_list,
+					     show_list);
+}
+
+/* Remove the command named NAME from the command list.  Return the list
+   commands which were aliased to the deleted command.  The various *HOOKs are
+   set to the pre- and post-hook commands for the deleted command.  If the
+   command does not have a hook, the corresponding out parameter is set to
+   NULL.  */
+
+static cmd_list_element::aliases_list_type
 delete_cmd (const char *name, struct cmd_list_element **list,
 	    struct cmd_list_element **prehook,
 	    struct cmd_list_element **prehookee,
@@ -854,7 +1527,7 @@ delete_cmd (const char *name, struct cmd
 {
   struct cmd_list_element *iter;
   struct cmd_list_element **previous_chain_ptr;
-  struct cmd_list_element *aliases = NULL;
+  cmd_list_element::aliases_list_type aliases;
 
   *prehook = NULL;
   *prehookee = NULL;
@@ -867,7 +1540,8 @@ delete_cmd (const char *name, struct cmd
       if (strcmp (iter->name, name) == 0)
 	{
 	  if (iter->destroyer)
-	    iter->destroyer (iter, iter->context);
+	    iter->destroyer (iter, iter->context ());
+
 	  if (iter->hookee_pre)
 	    iter->hookee_pre->hook_pre = 0;
 	  *prehook = iter->hook_pre;
@@ -880,21 +1554,14 @@ delete_cmd (const char *name, struct cmd
 	  /* Update the link.  */
 	  *previous_chain_ptr = iter->next;
 
-	  aliases = iter->aliases;
+	  aliases = std::move (iter->aliases);
 
 	  /* If this command was an alias, remove it from the list of
 	     aliases.  */
-	  if (iter->cmd_pointer)
+	  if (iter->is_alias ())
 	    {
-	      struct cmd_list_element **prevp = &iter->cmd_pointer->aliases;
-	      struct cmd_list_element *a = *prevp;
-
-	      while (a != iter)
-		{
-		  prevp = &a->alias_chain;
-		  a = *prevp;
-		}
-	      *prevp = iter->alias_chain;
+	      auto it = iter->alias_target->aliases.iterator_to (*iter);
+	      iter->alias_target->aliases.erase (it);
 	    }
 
 	  delete iter;
@@ -914,72 +1581,182 @@ delete_cmd (const char *name, struct cmd
 /* Add an element to the list of info subcommands.  */
 
 struct cmd_list_element *
-add_info (const char *name, cmd_const_cfunc_ftype *fun, const char *doc)
+add_info (const char *name, cmd_simple_func_ftype *fun, const char *doc)
 {
   return add_cmd (name, class_info, fun, doc, &infolist);
 }
 
 /* Add an alias to the list of info subcommands.  */
 
-struct cmd_list_element *
-add_info_alias (const char *name, const char *oldname, int abbrev_flag)
+cmd_list_element *
+add_info_alias (const char *name, cmd_list_element *target, int abbrev_flag)
 {
-  return add_alias_cmd (name, oldname, class_run, abbrev_flag, &infolist);
+  return add_alias_cmd (name, target, class_run, abbrev_flag, &infolist);
 }
 
 /* Add an element to the list of commands.  */
 
 struct cmd_list_element *
 add_com (const char *name, enum command_class theclass,
-	 cmd_const_cfunc_ftype *fun,
+	 cmd_simple_func_ftype *fun,
 	 const char *doc)
 {
   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,
-	       int abbrev_flag)
+cmd_list_element *
+add_com_alias (const char *name, cmd_list_element *target,
+	       command_class theclass, int abbrev_flag)
 {
-  return add_alias_cmd (name, oldname, theclass, abbrev_flag, &cmdlist);
+  return add_alias_cmd (name, target, theclass, abbrev_flag, &cmdlist);
 }
 
 /* Add an element with a suppress notification to the list of commands.  */
 
 struct cmd_list_element *
 add_com_suppress_notification (const char *name, enum command_class theclass,
-			       cmd_const_cfunc_ftype *fun, const char *doc,
-			       int *suppress_notification)
+			       cmd_simple_func_ftype *fun, const char *doc,
+			       bool *suppress_notification)
 {
   return add_cmd_suppress_notification (name, theclass, fun, doc,
 					&cmdlist, suppress_notification);
 }
 
+/* Print the prefix of C followed by name of C in command style.  */
+
+static void
+fput_command_name_styled (const cmd_list_element &c, struct ui_file *stream)
+{
+  std::string prefixname
+    = c.prefix == nullptr ? "" : c.prefix->prefixname ();
+
+  fprintf_styled (stream, command_style.style (), "%s%s",
+		  prefixname.c_str (), c.name);
+}
+
+/* True if ALIAS has a user-defined documentation.  */
+
+static bool
+user_documented_alias (const cmd_list_element &alias)
+{
+  gdb_assert (alias.is_alias ());
+  /* Alias is user documented if it has an allocated documentation
+     that differs from the aliased command.  */
+  return (alias.doc_allocated
+	  && strcmp (alias.doc, alias.alias_target->doc) != 0);
+}
+
+/* Print the definition of alias C using title style for alias
+   and aliased command.  */
+
+static void
+fput_alias_definition_styled (const cmd_list_element &c,
+			      struct ui_file *stream)
+{
+  gdb_assert (c.is_alias ());
+  gdb_puts ("  alias ", stream);
+  fput_command_name_styled (c, stream);
+  gdb_printf (stream, " = ");
+  fput_command_name_styled (*c.alias_target, stream);
+  gdb_printf (stream, " %s\n", c.default_args.c_str ());
+}
+
+/* Print the definition of CMD aliases not deprecated and having default args
+   and not specifically documented by the user.  */
+
+static void
+fput_aliases_definition_styled (const cmd_list_element &cmd,
+				struct ui_file *stream)
+{
+  for (const cmd_list_element &alias : cmd.aliases)
+    if (!alias.cmd_deprecated
+	&& !user_documented_alias (alias)
+	&& !alias.default_args.empty ())
+      fput_alias_definition_styled (alias, stream);
+}
+
+/* If C has one or more aliases, style print the name of C and the name of its
+   aliases not documented specifically by the user, 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 (const cmd_list_element &c,
+			   bool always_fput_c_name, const char *postfix,
+			   struct ui_file *stream)
+{
+  /* First, check if we are going to print something.  That is, either if
+     ALWAYS_FPUT_C_NAME is true or if there exists at least one non-deprecated
+     alias not documented specifically by the user.  */
+
+  auto print_alias = [] (const cmd_list_element &alias)
+    {
+      return !alias.cmd_deprecated && !user_documented_alias (alias);
+    };
+
+  bool print_something = always_fput_c_name;
+  if (!print_something)
+    for (const cmd_list_element &alias : c.aliases)
+      {
+	if (!print_alias (alias))
+	  continue;
+
+	print_something = true;
+	break;
+      }
+
+  if (print_something)
+    fput_command_name_styled (c, stream);
+
+  for (const cmd_list_element &alias : c.aliases)
+    {
+      if (!print_alias (alias))
+	continue;
+
+      gdb_puts (", ", stream);
+      stream->wrap_here (3);
+      fput_command_name_styled (alias, stream);
+    }
+
+  if (print_something)
+    gdb_puts (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.  */
 
 static void
-print_doc_of_command (struct cmd_list_element *c, const char *prefix,
-		      bool verbose, compiled_regex &highlight,
-		      struct ui_file *stream)
+print_doc_of_command (const cmd_list_element &c, bool verbose,
+		      compiled_regex &highlight, struct ui_file *stream)
 {
   /* When printing the full documentation, add a line to separate
      this documentation from the previous command help, in the likely
      case that apropos finds several commands.  */
   if (verbose)
-    fputs_filtered ("\n", stream);
+    gdb_puts ("\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);
+    {
+      gdb_puts ("\n", stream);
+      fput_aliases_definition_styled (c, stream);
+      fputs_highlighted (c.doc, highlight, stream);
+      gdb_puts ("\n", stream);
+    }
   else
-    print_doc_line (stream, c->doc, false);
-  fputs_filtered ("\n", stream);
+    {
+      print_doc_line (stream, c.doc, false);
+      gdb_puts ("\n", stream);
+      fput_aliases_definition_styled (c, stream);
+    }
 }
 
 /* Recursively walk the commandlist structures, and print out the
@@ -992,7 +1769,7 @@ print_doc_of_command (struct cmd_list_el
 void
 apropos_cmd (struct ui_file *stream,
 	     struct cmd_list_element *commandlist,
-	     bool verbose, compiled_regex &regex, const char *prefix)
+	     bool verbose, compiled_regex &regex)
 {
   struct cmd_list_element *c;
   int returnvalue;
@@ -1000,6 +1777,14 @@ apropos_cmd (struct ui_file *stream,
   /* Walk through the commands.  */
   for (c=commandlist;c;c=c->next)
     {
+      if (c->is_alias () && !user_documented_alias (*c))
+	{
+	  /* Command aliases/abbreviations not specifically documented by the
+	     user 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)
 	{
@@ -1008,7 +1793,19 @@ apropos_cmd (struct ui_file *stream,
 	  /* Try to match against the name.  */
 	  returnvalue = regex.search (c->name, name_len, 0, name_len, NULL);
 	  if (returnvalue >= 0)
-	    print_doc_of_command (c, prefix, verbose, regex, stream);
+	    print_doc_of_command (*c, verbose, regex, stream);
+
+	  /* Try to match against the name of the aliases.  */
+	  for (const cmd_list_element &alias : c->aliases)
+	    {
+	      name_len = strlen (alias.name);
+	      returnvalue = regex.search (alias.name, name_len, 0, name_len, NULL);
+	      if (returnvalue >= 0)
+		{
+		  print_doc_of_command (*c, verbose, regex, stream);
+		  break;
+		}
+	    }
 	}
       if (c->doc != NULL && returnvalue < 0)
 	{
@@ -1016,16 +1813,14 @@ apropos_cmd (struct ui_file *stream,
 
 	  /* Try to match against documentation.  */
 	  if (regex.search (c->doc, doc_len, 0, doc_len, NULL) >= 0)
-	    print_doc_of_command (c, prefix, verbose, regex, stream);
+	    print_doc_of_command (*c, 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->is_prefix ())
 	{
 	  /* Recursively call ourselves on the subcommand list,
 	     passing the right prefix in.  */
-	  apropos_cmd (stream, *c->prefixlist, verbose, regex, c->prefixname);
+	  apropos_cmd (stream, *c->subcommands, verbose, regex);
 	}
     }
 }
@@ -1044,7 +1839,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,13 +1853,16 @@ 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.
+     If c->subcommands is nonzero, we have a prefix command.
      Print its documentation, then list its subcommands.
 
      If c->func is non NULL, we really have a command.  Print its
@@ -1075,104 +1873,124 @@ help_cmd (const char *command, struct ui
      number of this class so that the commands in the class will be
      listed.  */
 
-  fputs_filtered (c->doc, stream);
-  fputs_filtered ("\n", stream);
+  if (alias == nullptr || !user_documented_alias (*alias))
+    {
+      /* Case of a normal command, or an alias not explicitly
+	 documented by the user.  */
+      /* 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);
+      gdb_puts (c->doc, stream);
+    }
+  else
+    {
+      /* Case of an alias explicitly documented by the user.
+	 Only output the alias definition and its explicit documentation.  */
+      fput_alias_definition_styled (*alias, stream);
+      fput_command_names_styled (*alias, false, "\n", stream);
+      gdb_puts (alias->doc, stream);
+    }
+  gdb_puts ("\n", stream);
 
-  if (c->prefixlist == 0 && c->func != NULL)
+  if (!c->is_prefix () && !c->is_command_class_help ())
     return;
-  fprintf_filtered (stream, "\n");
+
+  gdb_printf (stream, "\n");
 
   /* If this is a prefix command, print it's subcommands.  */
-  if (c->prefixlist)
-    help_list (*c->prefixlist, c->prefixname, all_commands, stream);
+  if (c->is_prefix ())
+    help_list (*c->subcommands, c->prefixname_no_space ().c_str (),
+	       all_commands, stream);
 
   /* If this is a class name, print all of the commands in the class.  */
-  if (c->func == NULL)
+  if (c->is_command_class_help ())
     help_list (cmdlist, "", c->theclass, stream);
 
   if (c->hook_pre || c->hook_post)
-    fprintf_filtered (stream,
-                      "\nThis command has a hook (or hooks) defined:\n");
+    gdb_printf (stream,
+		"\nThis command has a hook (or hooks) defined:\n");
 
   if (c->hook_pre)
-    fprintf_filtered (stream,
-                      "\tThis command is run after  : %s (pre hook)\n",
-                    c->hook_pre->name);
+    gdb_printf (stream,
+		"\tThis command is run after  : %s (pre hook)\n",
+		c->hook_pre->name);
   if (c->hook_post)
-    fprintf_filtered (stream,
-                      "\tThis command is run before : %s (post hook)\n",
-                    c->hook_post->name);
-}
-
-/*
- * Get a specific kind of help on a command list.
- *
- * LIST is the list.
- * CMDTYPE is the prefix to use in the title string.
- * CLASS is the class with which to list the nodes of this list (see
- * documentation for help_cmd_list below),  As usual, ALL_COMMANDS for
- * everything, ALL_CLASSES for just classes, and non-negative for only things
- * in a specific class.
- * and STREAM is the output stream on which to print things.
- * If you call this routine with a class >= 0, it recurses.
- */
+    gdb_printf (stream,
+		"\tThis command is run before : %s (post hook)\n",
+		c->hook_post->name);
+}
+
+/* Get a specific kind of help on a command list.
+
+   LIST is the list.
+   CMDTYPE is the prefix to use in the title string.  It should not
+   end in a space.
+   THECLASS is the class with which to list the nodes of this list (see
+   documentation for help_cmd_list below),  As usual, ALL_COMMANDS for
+   everything, ALL_CLASSES for just classes, and non-negative for only things
+   in a specific class.
+   and STREAM is the output stream on which to print things.
+   If you call this routine with a class >= 0, it recurses.  */
 void
 help_list (struct cmd_list_element *list, const char *cmdtype,
 	   enum command_class theclass, struct ui_file *stream)
 {
-  int len;
-  char *cmdtype1, *cmdtype2;
-
-  /* If CMDTYPE is "foo ", CMDTYPE1 gets " foo" and CMDTYPE2 gets "foo sub".
-   */
-  len = strlen (cmdtype);
-  cmdtype1 = (char *) alloca (len + 1);
-  cmdtype1[0] = 0;
-  cmdtype2 = (char *) alloca (len + 4);
-  cmdtype2[0] = 0;
-  if (len)
-    {
-      cmdtype1[0] = ' ';
-      memcpy (cmdtype1 + 1, cmdtype, len - 1);
-      cmdtype1[len] = 0;
-      memcpy (cmdtype2, cmdtype, len - 1);
-      strcpy (cmdtype2 + len - 1, " sub");
+  int len = strlen (cmdtype);
+  const char *space = "";
+  const char *prefix = "";
+  if (len > 0)
+    {
+      prefix = "sub";
+      space = " ";
     }
 
   if (theclass == all_classes)
-    fprintf_filtered (stream, "List of classes of %scommands:\n\n", cmdtype2);
+    gdb_printf (stream, "List of classes of %scommands:\n\n",
+		prefix);
+  else if (len == 0)
+    gdb_printf (stream, "List of commands:\n\n");
   else
-    fprintf_filtered (stream, "List of %scommands:\n\n", cmdtype2);
+    gdb_printf (stream, "List of \"%ps\" %scommands:\n\n",
+		styled_string (command_style.style (), cmdtype),
+		prefix);
 
-  help_cmd_list (list, theclass, cmdtype, (int) theclass >= 0, stream);
+  help_cmd_list (list, theclass, theclass >= 0, stream);
 
   if (theclass == all_classes)
     {
-      fprintf_filtered (stream, "\n\
-Type \"help%s\" followed by a class name for a list of commands in ",
-			cmdtype1);
-      wrap_here ("");
-      fprintf_filtered (stream, "that class.");
-
-      fprintf_filtered (stream, "\n\
-Type \"help all\" for the list of all commands.");
-    }
-
-  fprintf_filtered (stream, "\nType \"help%s\" followed by %scommand name ",
-		    cmdtype1, cmdtype2);
-  wrap_here ("");
-  fputs_filtered ("for ", stream);
-  wrap_here ("");
-  fputs_filtered ("full ", stream);
-  wrap_here ("");
-  fputs_filtered ("documentation.\n", stream);
-  fputs_filtered ("Type \"apropos word\" to search "
-		  "for commands related to \"word\".\n", stream);
-  fputs_filtered ("Type \"apropos -v word\" for full documentation", stream);
-  wrap_here ("");
-  fputs_filtered (" of commands related to \"word\".\n", stream);
-  fputs_filtered ("Command name abbreviations are allowed if unambiguous.\n",
-		  stream);
+      gdb_printf (stream, "\n\
+Type \"%p[help%s%s%p]\" followed by a class name for a list of commands in ",
+		  command_style.style ().ptr (),
+		  space, cmdtype,
+		  nullptr);
+      stream->wrap_here (0);
+      gdb_printf (stream, "that class.");
+
+      gdb_printf (stream, "\n\
+Type \"%ps\" for the list of all commands.",
+		  styled_string (command_style.style (), "help all"));
+    }
+
+  gdb_printf (stream, "\nType \"%p[help%s%s%p]\" followed by %scommand name ",
+	      command_style.style ().ptr (), space, cmdtype, nullptr,
+	      prefix);
+  stream->wrap_here (0);
+  gdb_puts ("for ", stream);
+  stream->wrap_here (0);
+  gdb_puts ("full ", stream);
+  stream->wrap_here (0);
+  gdb_puts ("documentation.\n", stream);
+  gdb_printf (stream,
+	      "Type \"%ps\" to search "
+	      "for commands related to \"word\".\n",
+	      styled_string (command_style.style (), "apropos word"));
+  gdb_printf (stream, "Type \"%ps\" for full documentation",
+	      styled_string (command_style.style (), "apropos -v word"));
+  stream->wrap_here (0);
+  gdb_puts (" of commands related to \"word\".\n", stream);
+  gdb_puts ("Command name abbreviations are allowed if unambiguous.\n",
+	    stream);
 }
 
 static void
@@ -1184,14 +2002,14 @@ help_all (struct ui_file *stream)
   for (c = cmdlist; c; c = c->next)
     {
       if (c->abbrev_flag)
-        continue;
+	continue;
       /* If this is a class name, print all of the commands in the
 	 class.  */
 
-      if (c->func == NULL)
+      if (c->is_command_class_help ())
 	{
-	  fprintf_filtered (stream, "\nCommand class: %s\n\n", c->name);
-	  help_cmd_list (cmdlist, c->theclass, "", 1, stream);
+	  gdb_printf (stream, "\nCommand class: %s\n\n", c->name);
+	  help_cmd_list (cmdlist, c->theclass, true, stream);
 	}
     }
 
@@ -1202,16 +2020,16 @@ help_all (struct ui_file *stream)
   for (c = cmdlist; c; c = c->next)
     {
       if (c->abbrev_flag)
-        continue;
+	continue;
 
       if (c->theclass == no_class)
 	{
 	  if (!seen_unclassified)
 	    {
-	      fprintf_filtered (stream, "\nUnclassified commands\n\n");
+	      gdb_printf (stream, "\nUnclassified commands\n\n");
 	      seen_unclassified = 1;
 	    }
-	  print_help_for_command (c, "", 1, stream);
+	  print_help_for_command (*c, true, stream);
 	}
     }
 
@@ -1223,103 +2041,124 @@ void
 print_doc_line (struct ui_file *stream, const char *str,
 		bool for_value_prefix)
 {
-  static char *line_buffer = 0;
-  static int line_size;
-  const char *p;
+  const char *p = strchr (str, '\n');
 
-  if (!line_buffer)
-    {
-      line_size = 80;
-      line_buffer = (char *) xmalloc (line_size);
-    }
+  /* Only copy the input string if we really need to.  */
+  std::optional<std::string> line_buffer;
+  if (p != nullptr)
+    line_buffer = std::string (str, p);
+  else if (for_value_prefix)
+    line_buffer = str;
 
-  /* Searches for the first end of line or the end of STR.  */
-  p = str;
-  while (*p && *p != '\n')
-    p++;
-  if (p - str > line_size - 1)
-    {
-      line_size = p - str + 1;
-      xfree (line_buffer);
-      line_buffer = (char *) xmalloc (line_size);
-    }
-  strncpy (line_buffer, str, p - str);
   if (for_value_prefix)
     {
-      if (islower (line_buffer[0]))
-	line_buffer[0] = toupper (line_buffer[0]);
-      gdb_assert (p > str);
-      if (line_buffer[p - str - 1] == '.')
-	line_buffer[p - str - 1] = '\0';
-      else
-	line_buffer[p - str] = '\0';
+      char &c = (*line_buffer)[0];
+      if (islower (c))
+	c = toupper (c);
+      if (line_buffer->back () == '.')
+	line_buffer->pop_back ();
     }
-  else
-    line_buffer[p - str] = '\0';
-  fputs_filtered (line_buffer, stream);
+
+  gdb_puts (line_buffer.has_value ()
+	    ? line_buffer->c_str ()
+	    : str,
+	    stream);
 }
 
 /* Print one-line help for command C.
    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 (const cmd_list_element &c,
+			bool recurse, struct ui_file *stream)
 {
-  fprintf_styled (stream, title_style.style (),
-		  "%s%s", prefix, c->name);
-  fputs_filtered (" -- ", stream);
-  print_doc_line (stream, c->doc, false);
-  fputs_filtered ("\n", stream);
+  fput_command_names_styled (c, true, " -- ", stream);
+  print_doc_line (stream, c.doc, false);
+  gdb_puts ("\n", stream);
+  if (!c.default_args.empty ())
+    fput_alias_definition_styled (c, stream);
+  fput_aliases_definition_styled (c, stream);
 
   if (recurse
-      && c->prefixlist != 0
-      && c->abbrev_flag == 0)
+      && c.is_prefix ()
+      && c.abbrev_flag == 0)
     /* 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.subcommands, 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->is_alias () && 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->is_command_class_help ())
+	  || (theclass == c->theclass && !c->is_command_class_help ()))
+	{
+	  /* 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->is_alias ()),
+	     stream);
+	  continue;
+	}
+
+      if (recurse
+	  && (theclass == class_user || theclass == class_alias)
+	  && c->is_prefix ())
+	{
+	  /* User-defined commands or aliases may be subcommands.  */
+	  help_cmd_list (*c->subcommands, 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.  */
     }
 }
 
@@ -1338,7 +2177,7 @@ find_cmd (const char *command, int len,
   *nfound = 0;
   for (c = clist; c; c = c->next)
     if (!strncmp (command, c->name, len)
-	&& (!ignore_help_classes || c->func))
+	&& (!ignore_help_classes || !c->is_command_class_help ()))
       {
 	found = c;
 	(*nfound)++;
@@ -1412,49 +2251,17 @@ valid_user_defined_cmd_name_p (const cha
   return true;
 }
 
-/* This routine takes a line of TEXT and a CLIST in which to start the
-   lookup.  When it returns it will have incremented the text pointer past
-   the section of text it matched, set *RESULT_LIST to point to the list in
-   which the last word was matched, and will return a pointer to the cmd
-   list element which the text matches.  It will return NULL if no match at
-   all was possible.  It will return -1 (cast appropriately, ick) if ambigous
-   matches are possible; in this case *RESULT_LIST will be set to point to
-   the list in which there are ambiguous choices (and *TEXT will be set to
-   the ambiguous text string).
-
-   If the located command was an abbreviation, this routine returns the base
-   command of the abbreviation.
-
-   It does no error reporting whatsoever; control will always return
-   to the superior routine.
-
-   In the case of an ambiguous return (-1), *RESULT_LIST will be set to point
-   at the prefix_command (ie. the best match) *or* (special case) will be NULL
-   if no prefix command was ever found.  For example, in the case of "info a",
-   "info" matches without ambiguity, but "a" could be "args" or "address", so
-   *RESULT_LIST is set to the cmd_list_element for "info".  So in this case
-   RESULT_LIST should not be interpreted as a pointer to the beginning of a
-   list; it simply points to a specific command.  In the case of an ambiguous
-   return *TEXT is advanced past the last non-ambiguous prefix (e.g.
-   "info t" can be "info types" or "info target"; upon return *TEXT has been
-   advanced past "info ").
-
-   If RESULT_LIST is NULL, don't set *RESULT_LIST (but don't otherwise
-   affect the operation).
-
-   This routine does *not* modify the text pointed to by TEXT.
-
-   If IGNORE_HELP_CLASSES is nonzero, ignore any command list elements which
-   are actually help classes rather than commands (i.e. the function field of
-   the struct cmd_list_element is NULL).  */
+/* See command.h.  */
 
 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, bool lookup_for_completion_p)
 {
   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 +2293,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.  */
     }
 
@@ -1497,7 +2306,7 @@ lookup_cmd_1 (const char **text, struct
 
   *text += len;
 
-  if (found->cmd_pointer)
+  if (found->is_alias ())
     {
       /* We drop the alias (abbreviation) in favor of the command it
        is pointing to.  If the alias is deprecated, though, we need to
@@ -1505,22 +2314,31 @@ 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);
-      found = found->cmd_pointer;
+
+      if (found->deprecated_warn_user && !lookup_for_completion_p)
+	deprecated_cmd_warning (line, clist);
+
+
+      /* 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->alias_target;
+      found_alias = true;
     }
   /* If we found a prefix command, keep looking.  */
 
-  if (found->prefixlist)
+  if (found->is_prefix ())
     {
-      c = lookup_cmd_1 (text, *found->prefixlist, result_list,
-			ignore_help_classes);
+      c = lookup_cmd_1 (text, *found->subcommands, result_list, default_args,
+			ignore_help_classes, lookup_for_completion_p);
       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 +2346,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.  */
+	      /* This used to say *result_list = *found->subcommands.
+		 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 +2366,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 +2389,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 +2409,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 +2421,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)
     {
@@ -1611,13 +2440,14 @@ lookup_cmd (const char **line, struct cm
     }
   else if (c == CMD_LIST_AMBIGUOUS)
     {
-      /* Ambigous.  Local values should be off prefixlist or called
-         values.  */
+      /* Ambiguous.  Local values should be off subcommands or called
+	 values.  */
       int local_allow_unknown = (last_list ? last_list->allow_unknown :
 				 allow_unknown);
-      const char *local_cmdtype = last_list ? last_list->prefixname : cmdtype;
+      std::string local_cmdtype
+	= last_list ? last_list->prefixname () : cmdtype;
       struct cmd_list_element *local_list =
-	(last_list ? *(last_list->prefixlist) : list);
+	(last_list ? *(last_list->subcommands) : list);
 
       if (local_allow_unknown < 0)
 	{
@@ -1655,22 +2485,22 @@ lookup_cmd (const char **line, struct cm
 		    break;
 		  }
 	      }
-	  error (_("Ambiguous %scommand \"%s\": %s."), local_cmdtype,
-		 *line, ambbuf);
+	  error (_("Ambiguous %scommand \"%s\": %s."),
+		 local_cmdtype.c_str (), *line, ambbuf);
 	}
     }
   else
     {
       if (c->type == set_cmd && **line != '\0' && !isspace (**line))
-        error (_("Argument must be preceded by space."));
+	error (_("Argument must be preceded by space."));
 
       /* We've got something.  It may still not be what the caller
-         wants (if this command *needs* a subcommand).  */
+	 wants (if this command *needs* a subcommand).  */
       while (**line == ' ' || **line == '\t')
 	(*line)++;
 
-      if (c->prefixlist && **line && !c->allow_unknown)
-	undef_cmd_error (c->prefixname, *line);
+      if (c->is_prefix () && **line && !c->allow_unknown)
+	undef_cmd_error (c->prefixname ().c_str (), *line);
 
       /* Seems to be what he wants.  Return it.  */
       return c;
@@ -1678,6 +2508,21 @@ lookup_cmd (const char **line, struct cm
   return 0;
 }
 
+/* See command.h.  */
+
+struct cmd_list_element *
+lookup_cmd_exact (const char *name,
+		  struct cmd_list_element *list,
+		  bool ignore_help_classes)
+{
+  const char *tem = name;
+  struct cmd_list_element *cmd = lookup_cmd (&tem, list, "", NULL, -1,
+					     ignore_help_classes);
+  if (cmd != nullptr && strcmp (name, cmd->name) != 0)
+    cmd = nullptr;
+  return cmd;
+}
+
 /* We are here presumably because an alias or command in TEXT is
    deprecated and a warning message should be generated.  This
    function decodes TEXT and potentially generates a warning message
@@ -1701,152 +2546,191 @@ lookup_cmd (const char **line, struct cm
    
 */
 void
-deprecated_cmd_warning (const char *text)
+deprecated_cmd_warning (const char *text, struct cmd_list_element *list)
 {
-  struct cmd_list_element *alias = NULL;
-  struct cmd_list_element *prefix_cmd = NULL;
-  struct cmd_list_element *cmd = NULL;
+  struct cmd_list_element *alias = nullptr;
+  struct cmd_list_element *cmd = nullptr;
 
-  if (!lookup_cmd_composition (text, &alias, &prefix_cmd, &cmd))
-    /* Return if text doesn't evaluate to a command.  */
-    return;
+  /* Return if text doesn't evaluate to a command.  We place this lookup
+     within its own scope so that the PREFIX_CMD local is not visible
+     later in this function.  The value returned in PREFIX_CMD is based on
+     the prefix found in TEXT, and is our case this prefix can be missing
+     in some situations (when LIST is not the global CMDLIST).
+
+     It is better for our purposes to use the prefix commands directly from
+     the ALIAS and CMD results.  */
+  {
+    struct cmd_list_element *prefix_cmd = nullptr;
+    if (!lookup_cmd_composition_1 (text, &alias, &prefix_cmd, &cmd, list))
+      return;
+  }
 
-  if (!((alias ? alias->deprecated_warn_user : 0)
-      || cmd->deprecated_warn_user) ) 
-    /* Return if nothing is deprecated.  */
+  /* Return if nothing is deprecated.  */
+  if (!((alias != nullptr ? alias->deprecated_warn_user : 0)
+	|| cmd->deprecated_warn_user))
     return;
-  
-  printf_filtered ("Warning:");
-  
-  if (alias && !cmd->cmd_deprecated)
-    printf_filtered (" '%s', an alias for the", alias->name);
-    
-  printf_filtered (" command '");
-  
-  if (prefix_cmd)
-    printf_filtered ("%s", prefix_cmd->prefixname);
-  
-  printf_filtered ("%s", cmd->name);
 
-  if (alias && cmd->cmd_deprecated)
-    printf_filtered ("' (%s) is deprecated.\n", alias->name);
-  else
-    printf_filtered ("' is deprecated.\n"); 
-  
-
-  /* If it is only the alias that is deprecated, we want to indicate
-     the new alias, otherwise we'll indicate the new command.  */
-
-  if (alias && !cmd->cmd_deprecated)
-    {
-      if (alias->replacement)
-	printf_filtered ("Use '%s'.\n\n", alias->replacement);
+  /* Join command prefix (if any) and the command name.  */
+  std::string tmp_cmd_str;
+  if (cmd->prefix != nullptr)
+    tmp_cmd_str += cmd->prefix->prefixname ();
+  tmp_cmd_str += std::string (cmd->name);
+
+  /* Display the appropriate first line, this warns that the thing the user
+     entered is deprecated.  */
+  if (alias != nullptr)
+    {
+      /* Join the alias prefix (if any) and the alias name.  */
+      std::string tmp_alias_str;
+      if (alias->prefix != nullptr)
+	tmp_alias_str += alias->prefix->prefixname ();
+      tmp_alias_str += std::string (alias->name);
+
+      if (cmd->cmd_deprecated)
+	gdb_printf (_("Warning: command '%ps' (%ps) is deprecated.\n"),
+		    styled_string (command_style.style (),
+				   tmp_cmd_str.c_str ()),
+		    styled_string (command_style.style (),
+				   tmp_alias_str.c_str ()));
       else
-	printf_filtered ("No alternative known.\n\n");
-     }  
-  else
-    {
-      if (cmd->replacement)
-	printf_filtered ("Use '%s'.\n\n", cmd->replacement);
-      else
-	printf_filtered ("No alternative known.\n\n");
+	gdb_printf (_("Warning: '%ps', an alias for the command '%ps', "
+		      "is deprecated.\n"),
+		    styled_string (command_style.style (),
+				   tmp_alias_str.c_str ()),
+		    styled_string (command_style.style (),
+				   tmp_cmd_str.c_str ()));
     }
+  else
+    gdb_printf (_("Warning: command '%ps' is deprecated.\n"),
+		styled_string (command_style.style (),
+			       tmp_cmd_str.c_str ()));
+
+  /* Now display a second line indicating what the user should use instead.
+     If it is only the alias that is deprecated, we want to indicate the
+     new alias, otherwise we'll indicate the new command.  */
+  const char *replacement;
+  if (alias != nullptr && !cmd->cmd_deprecated)
+    replacement = alias->replacement;
+  else
+    replacement = cmd->replacement;
+  if (replacement != nullptr)
+    gdb_printf (_("Use '%ps'.\n\n"),
+		styled_string (command_style.style (),
+			       replacement));
+  else
+    gdb_printf (_("No alternative known.\n\n"));
 
   /* We've warned you, now we'll keep quiet.  */
-  if (alias)
+  if (alias != nullptr)
     alias->deprecated_warn_user = 0;
-  
   cmd->deprecated_warn_user = 0;
 }
 
-
-/* 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 CUR_LIST.
    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, or to
+   CMD_LIST_AMBIGUOUS if there are multiple possible matches.
+
+   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)
-{
-  char *command;
-  int len, nfound;
-  struct cmd_list_element *cur_list;
-  struct cmd_list_element *prev_cmd;
 
-  *alias = NULL;
-  *prefix_cmd = NULL;
-  *cmd = NULL;
-  
-  cur_list = cmdlist;
-  
+static int
+lookup_cmd_composition_1 (const char *text,
+			  struct cmd_list_element **alias,
+			  struct cmd_list_element **prefix_cmd,
+			  struct cmd_list_element **cmd,
+			  struct cmd_list_element *cur_list)
+{
+  *alias = nullptr;
+  *prefix_cmd = cur_list->prefix;
+  *cmd = nullptr;
+
+  text = skip_spaces (text);
+
+  /* Go through as many command lists as we need to, to find the command
+     TEXT refers to.  */
   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);
-      
+      int 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.  */
-      
-      command = (char *) alloca (len + 1);
-      memcpy (command, text, len);
-      command[len] = '\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.  */
+      std::string command (text, len);
+
       /* 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 */
+      int nfound = 0;
+      *cmd = find_cmd (command.c_str (), len, cur_list, 1, &nfound);
+
+      /* We only handle the case where a single command was found.  */
+      if (nfound > 1)
+	{
+	  *cmd = CMD_LIST_AMBIGUOUS;
+	  return 0;
+	}
+      else if (*cmd == nullptr)
+	return 0;
       else
 	{
-	  if ((*cmd)->cmd_pointer)
+	  if ((*cmd)->is_alias ())
 	    {
-	      /* cmd was actually an alias, we note that an alias was
-		 used (by assigning *alais) and we set *cmd.  */
+	      /* If the command was actually an alias, we note that an
+		 alias was used (by assigning *ALIAS) and we set *CMD.  */
 	      *alias = *cmd;
-	      *cmd = (*cmd)->cmd_pointer;
+	      *cmd = (*cmd)->alias_target;
 	    }
-	  *prefix_cmd = prev_cmd;
 	}
-      if ((*cmd)->prefixlist)
-	cur_list = *(*cmd)->prefixlist;
+
+      text += len;
+      text = skip_spaces (text);
+
+      if ((*cmd)->is_prefix () && *text != '\0')
+	{
+	  cur_list = *(*cmd)->subcommands;
+	  *prefix_cmd = *cmd;
+	}
       else
 	return 1;
-      
-      text += len;
     }
 }
 
+/* Look up the contents of TEXT as a command in the command list 'cmdlist'.
+   Return 1 on success, 0 on failure.
+
+   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, or to
+   CMD_LIST_AMBIGUOUS if there are multiple possible matches.
+
+   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)
+{
+  return lookup_cmd_composition_1 (text, alias, prefix_cmd, cmd, cmdlist);
+}
+
 /* Helper function for SYMBOL_COMPLETION_FUNCTION.  */
 
 /* Return a vector of char pointers which point to the different
@@ -1879,8 +2763,8 @@ complete_on_cmdlist (struct cmd_list_ele
       for (ptr = list; ptr; ptr = ptr->next)
 	if (!strncmp (ptr->name, text, textlen)
 	    && !ptr->abbrev_flag
-	    && (!ignore_help_classes || ptr->func
-		|| ptr->prefixlist))
+	    && (!ignore_help_classes || !ptr->is_command_class_help ()
+		|| ptr->is_prefix ()))
 	  {
 	    if (pass == 0)
 	      {
@@ -1929,27 +2813,18 @@ complete_on_enum (completion_tracker &tr
       tracker.add_completion (make_completion_match_str (name, text, word));
 }
 
-
-/* Check function pointer.  */
-int
-cmd_func_p (struct cmd_list_element *cmd)
-{
-  return (cmd->func != NULL);
-}
-
-
 /* Call the command function.  */
 void
 cmd_func (struct cmd_list_element *cmd, const char *args, int from_tty)
 {
-  if (cmd_func_p (cmd))
+  if (!cmd->is_command_class_help ())
     {
-      gdb::optional<scoped_restore_tmpl<int>> restore_suppress;
+      std::optional<scoped_restore_tmpl<bool>> restore_suppress;
 
       if (cmd->suppress_notification != NULL)
-	restore_suppress.emplace (cmd->suppress_notification, 1);
+	restore_suppress.emplace (cmd->suppress_notification, true);
 
-      (*cmd->func) (cmd, args, from_tty);
+      cmd->func (args, from_tty, cmd);
     }
   else
     error (_("Invalid command"));
@@ -1958,6 +2833,103 @@ cmd_func (struct cmd_list_element *cmd,
 int
 cli_user_command_p (struct cmd_list_element *cmd)
 {
-  return (cmd->theclass == class_user
-	  && (cmd->func == do_const_cfunc || cmd->func == do_sfunc));
+  return cmd->theclass == class_user && cmd->func == do_simple_func;
+}
+
+/* See cli-decode.h.  */
+
+ui_file_style::color
+parse_cli_var_color (const char **args)
+{
+  /* Do a "set" command.  ARG is nullptr if no argument, or the
+     text of the argument.  */
+
+  if (args == nullptr || *args == nullptr || **args == '\0')
+    {
+      std::string msg;
+
+      for (size_t i = 0; ui_file_style::basic_color_enums[i]; ++i)
+	{
+	  msg.append ("\"");
+	  msg.append (ui_file_style::basic_color_enums[i]);
+	  msg.append ("\", ");
+	}
+
+      error (_("Requires an argument. Valid arguments are %sinteger from -1 "
+	     "to 255 or an RGB hex triplet in a format #RRGGBB"),
+	     msg.c_str ());
+    }
+
+  const char *p = skip_to_space (*args);
+  size_t len = p - *args;
+
+  int nmatches = 0;
+  ui_file_style::basic_color match = ui_file_style::NONE;
+  for (int i = 0; ui_file_style::basic_color_enums[i]; ++i)
+    if (strncmp (*args, ui_file_style::basic_color_enums[i], len) == 0)
+      {
+	match = static_cast<ui_file_style::basic_color> (i - 1);
+	if (ui_file_style::basic_color_enums[i][len] == '\0')
+	  {
+	    nmatches = 1;
+	    break; /* Exact match.  */
+	  }
+	else
+	  nmatches++;
+      }
+
+  if (nmatches == 1)
+    {
+      *args += len;
+      return ui_file_style::color (match);
+    }
+
+  if (nmatches > 1)
+    error (_("Ambiguous item \"%.*s\"."), (int) len, *args);
+
+  if (**args != '#')
+    {
+      ULONGEST num = get_ulongest (args);
+      if (num > 255)
+	error (_("integer %s out of range"), pulongest (num));
+      return ui_file_style::color (color_space::XTERM_256COLOR,
+				   static_cast<int> (num));
+    }
+
+  /* Try to parse #RRGGBB string.  */
+  if (len != 7)
+    error_no_arg (_("invalid RGB hex triplet format"));
+
+  uint32_t rgb;
+  uint8_t r, g, b;
+  int scanned_chars = 0;
+  int parsed_args = sscanf (*args, "#%6" SCNx32 "%n",
+			    &rgb, &scanned_chars);
+
+  if (parsed_args != 1 || scanned_chars != 7)
+    error_no_arg (_("invalid RGB hex triplet format"));
+
+  gdb_assert ((rgb >> 24) == 0);
+  r = (rgb >> 16) & 0xff;
+  g = (rgb >> 8) & 0xff;
+  b = rgb & 0xff;
+
+  *args += len;
+  return ui_file_style::color (r, g, b);
+}
+
+/* See cli-decode.h.  */
+
+ui_file_style::color
+parse_var_color (const char *arg)
+{
+  const char *end_arg = arg;
+  ui_file_style::color color = parse_cli_var_color (&end_arg);
+
+  int len = end_arg - arg;
+  const char *after = skip_spaces (end_arg);
+  if (*after != '\0')
+    error (_("Junk after item \"%.*s\": %s"), len, arg, after);
+
+  return color;
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-decode.h ./gdb/cli/cli-decode.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-decode.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-decode.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Header file for GDB command decoding library.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
 
    This 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,249 +15,283 @@
    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 CLI_CLI_DECODE_H
-#define CLI_CLI_DECODE_H
+#ifndef GDB_CLI_CLI_DECODE_H
+#define GDB_CLI_CLI_DECODE_H
 
 /* This file defines the private interfaces for any code implementing
    command internals.  */
 
 /* Include the public interfaces.  */
 #include "command.h"
-#include "gdb_regex.h"
+#include "gdbsupport/gdb_regex.h"
 #include "cli-script.h"
 #include "completer.h"
+#include "gdbsupport/intrusive_list.h"
+#include "gdbsupport/buildargv.h"
+
+/* The allowed length of a line in a documentation string.  */
+constexpr int cli_help_line_length = 80;
 
-#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.  */
 
 
 struct cmd_list_element
+{
+  cmd_list_element (const char *name_, enum command_class theclass_,
+		    const char *doc_)
+    : name (name_),
+      theclass (theclass_),
+      cmd_deprecated (0),
+      deprecated_warn_user (0),
+      malloced_replacement (0),
+      doc_allocated (0),
+      name_allocated (0),
+      hook_in (0),
+      allow_unknown (0),
+      abbrev_flag (0),
+      type (not_set_cmd),
+      doc (doc_)
   {
-    cmd_list_element (const char *name_, enum command_class theclass_,
-		      const char *doc_)
-      : name (name_),
-	theclass (theclass_),
-	cmd_deprecated (0),
-	deprecated_warn_user (0),
-	malloced_replacement (0),
-	doc_allocated (0),
-	name_allocated (0),
-	hook_in (0),
-	allow_unknown (0),
-	abbrev_flag (0),
-	type (not_set_cmd),
-	var_type (var_boolean),
-	doc (doc_)
-    {
-      memset (&function, 0, sizeof (function));
-    }
+    gdb_assert (name != nullptr);
+    gdb_assert (doc != nullptr);
+    memset (&function, 0, sizeof (function));
+  }
 
-    ~cmd_list_element ()
-    {
-      if (doc && doc_allocated)
-	xfree ((char *) doc);
-      if (name_allocated)
-	xfree ((char *) name);
-    }
+  ~cmd_list_element ()
+  {
+    if (doc && doc_allocated)
+      xfree ((char *) doc);
+    if (name_allocated)
+      xfree ((char *) name);
+  }
+
+  DISABLE_COPY_AND_ASSIGN (cmd_list_element);
+
+  /* For prefix commands, return a string containing prefix commands to
+     get here: this one plus any others needed to get to it.  Ends in a
+     space.  It is used before the word "command" in describing the
+     commands reached through this prefix.
+
+     For non-prefix commands, return an empty string.  */
+  std::string prefixname () const;
+
+  /* Like prefixname, but do not append a trailing space.  */
+  std::string prefixname_no_space () const;
+
+  /* Return a vector of strings describing the components of the full name
+     of this command.  For example, if this command is 'set AA BB CC',
+     then the vector will contain 4 elements 'set', 'AA', 'BB', and 'CC'
+     in that order.  */
+  std::vector<std::string> command_components () const;
+
+  /* Return true if this command is an alias of another command.  */
+  bool is_alias () const
+  { return this->alias_target != nullptr; }
+
+  /* Return true if this command is a prefix command.  */
+  bool is_prefix () const
+  { return this->subcommands != nullptr; }
+
+  /* Return true if this command is a "command class help" command.  For
+     instance, a "stack" dummy command is registered so that one can do
+     "help stack" and show help for all commands of the "stack" class.  */
+  bool is_command_class_help () const
+  { return this->func == nullptr; }
+
+  void set_context (void *context)
+  {
+    gdb_assert (m_context == nullptr);
+    m_context = context;
+  }
+
+  void *context () const
+  { return m_context; }
+
+  /* Points to next command in this list.  */
+  struct cmd_list_element *next = nullptr;
+
+  /* Name of this command.  */
+  const char *name;
 
-    DISABLE_COPY_AND_ASSIGN (cmd_list_element);
+  /* Command class; class values are chosen by application program.  */
+  enum command_class theclass;
 
+  /* When 1 indicated that this command is deprecated.  It may be
+     removed from gdb's command set in the future.  */
 
-    /* Points to next command in this list.  */
-    struct cmd_list_element *next = nullptr;
+  unsigned int cmd_deprecated : 1;
 
-    /* Name of this command.  */
-    const char *name;
+  /* The user needs to be warned that this is a deprecated command.
+     The user should only be warned the first time a command is
+     used.  */
 
-    /* Command class; class values are chosen by application program.  */
-    enum command_class theclass;
-
-    /* When 1 indicated that this command is deprecated.  It may be
-       removed from gdb's command set in the future.  */
-
-    unsigned int cmd_deprecated : 1;
-
-    /* The user needs to be warned that this is a deprecated command.
-       The user should only be warned the first time a command is
-       used.  */
-        
-    unsigned int deprecated_warn_user : 1;
-
-    /* When functions are deprecated at compile time (this is the way
-       it should, in general, be done) the memory containing the
-       replacement string is statically allocated.  In some cases it
-       makes sense to deprecate commands at runtime (the testsuite is
-       one example).  In this case the memory for replacement is
-       malloc'ed.  When a command is undeprecated or re-deprecated at
-       runtime we don't want to risk calling free on statically
-       allocated memory, so we check this flag.  */
-
-    unsigned int malloced_replacement : 1;
-
-    /* Set if the doc field should be xfree'd.  */
-
-    unsigned int doc_allocated : 1;
-
-    /* Set if the name field should be xfree'd.  */
-
-    unsigned int name_allocated : 1;
-
-    /* Flag that specifies if this command is already running its hook.  */
-    /* Prevents the possibility of hook recursion.  */
-    unsigned int hook_in : 1;
-
-    /* For prefix commands only:
-       nonzero means do not get an error if subcommand is not
-       recognized; call the prefix's own function in that case.  */
-    unsigned int allow_unknown : 1;
-
-    /* Nonzero says this is an abbreviation, and should not
-       be mentioned in lists of commands.
-       This allows "br<tab>" to complete to "break", which it
-       otherwise wouldn't.  */
-    unsigned int abbrev_flag : 1;
-
-    /* Type of "set" or "show" command (or SET_NOT_SET if not "set"
-       or "show").  */
-    ENUM_BITFIELD (cmd_types) type : 2;
-
-    /* What kind of variable is *VAR?  */
-    ENUM_BITFIELD (var_types) var_type : 4;
-
-    /* Function definition of this command.  NULL for command class
-       names and for help topics that are not really commands.  NOTE:
-       cagney/2002-02-02: This function signature is evolving.  For
-       the moment suggest sticking with either set_cmd_cfunc() or
-       set_cmd_sfunc().  */
-    void (*func) (struct cmd_list_element *c, const char *args, int from_tty)
-      = nullptr;
-    /* The command's real callback.  At present func() bounces through
-       to one of the below.  */
-    union
-      {
-	/* If type is not_set_cmd, call it like this: */
-	cmd_const_cfunc_ftype *const_cfunc;
-	/* If type is set_cmd or show_cmd, first set the variables,
-	   and then call this: */
-	cmd_const_sfunc_ftype *sfunc;
-      }
-    function;
-
-    /* Local state (context) for this command.  This can be anything.  */
-    void *context = nullptr;
-
-    /* Documentation of this command (or help topic).
-       First line is brief documentation; remaining lines form, with it,
-       the full documentation.  First line should end with a period.
-       Entire string should also end with a period, not a newline.  */
-    const char *doc;
-
-    /* For set/show commands.  A method for printing the output to the
-       specified stream.  */
-    show_value_ftype *show_value_func = nullptr;
-
-    /* If this command is deprecated, this is the replacement name.  */
-    const char *replacement = nullptr;
-
-    /* If this command represents a show command, then this function
-       is called before the variable's value is examined.  */
-    void (*pre_show_hook) (struct cmd_list_element *c) = nullptr;
-
-    /* Hook for another command to be executed before this command.  */
-    struct cmd_list_element *hook_pre = nullptr;
-
-    /* Hook for another command to be executed after this command.  */
-    struct cmd_list_element *hook_post = nullptr;
-
-    /* Nonzero identifies a prefix command.  For them, the address
-       of the variable containing the list of subcommands.  */
-    struct cmd_list_element **prefixlist = nullptr;
-
-    /* For prefix commands only:
-       String containing prefix commands to get here: this one
-       plus any others needed to get to it.  Should end in a space.
-       It is used before the word "command" in describing the
-       commands reached through this prefix.  */
-    const char *prefixname = nullptr;
-
-    /* The prefix command of this command.  */
-    struct cmd_list_element *prefix = nullptr;
-
-    /* Completion routine for this command.  */
-    completer_ftype *completer = symbol_completer;
-
-    /* Handle the word break characters for this completer.  Usually
-       this function need not be defined, but for some types of
-       completers (e.g., Python completers declared as methods inside
-       a class) the word break chars may need to be redefined
-       depending on the completer type (e.g., for filename
-       completers).  */
-    completer_handle_brkchars_ftype *completer_handle_brkchars = nullptr;
-
-    /* Destruction routine for this command.  If non-NULL, this is
-       called when this command instance is destroyed.  This may be
-       used to finalize the CONTEXT field, if needed.  */
-    void (*destroyer) (struct cmd_list_element *self, void *context) = nullptr;
-
-    /* Pointer to variable affected by "set" and "show".  Doesn't
-       matter if type is not_set.  */
-    void *var = nullptr;
-
-    /* Pointer to NULL terminated list of enumerated values (like
-       argv).  */
-    const char *const *enums = nullptr;
-
-    /* Pointer to command strings of user-defined commands */
-    counted_command_line user_commands;
-
-    /* Pointer to command that is hooked by this one, (by hook_pre)
-       so the hook can be removed when this one is deleted.  */
-    struct cmd_list_element *hookee_pre = nullptr;
-
-    /* Pointer to command that is hooked by this one, (by hook_post)
-       so the hook can be removed when this one is deleted.  */
-    struct cmd_list_element *hookee_post = nullptr;
-
-    /* Pointer to command that is aliased by this one, so the
-       aliased command can be located in case it has been hooked.  */
-    struct cmd_list_element *cmd_pointer = nullptr;
-
-    /* Start of a linked list of all aliases of this command.  */
-    struct cmd_list_element *aliases = nullptr;
-
-    /* Link pointer for aliases on an alias list.  */
-    struct cmd_list_element *alias_chain = nullptr;
-
-    /* If non-null, the pointer to a field in 'struct
-       cli_suppress_notification', which will be set to true in cmd_func
-       when this command is being executed.  It will be set back to false
-       when the command has been executed.  */
-    int *suppress_notification = nullptr;
-  };
+  unsigned int deprecated_warn_user : 1;
 
-extern void help_cmd_list (struct cmd_list_element *, enum command_class,
-			   const char *, int, struct ui_file *);
+  /* When functions are deprecated at compile time (this is the way
+     it should, in general, be done) the memory containing the
+     replacement string is statically allocated.  In some cases it
+     makes sense to deprecate commands at runtime (the testsuite is
+     one example).  In this case the memory for replacement is
+     malloc'ed.  When a command is undeprecated or re-deprecated at
+     runtime we don't want to risk calling free on statically
+     allocated memory, so we check this flag.  */
+
+  unsigned int malloced_replacement : 1;
+
+  /* Set if the doc field should be xfree'd.  */
+
+  unsigned int doc_allocated : 1;
+
+  /* Set if the name field should be xfree'd.  */
+
+  unsigned int name_allocated : 1;
+
+  /* Flag that specifies if this command is already running its hook.  */
+  /* Prevents the possibility of hook recursion.  */
+  unsigned int hook_in : 1;
+
+  /* For prefix commands only:
+     nonzero means do not get an error if subcommand is not
+     recognized; call the prefix's own function in that case.  */
+  unsigned int allow_unknown : 1;
+
+  /* Nonzero says this is an abbreviation, and should not
+     be mentioned in lists of commands.
+     This allows "br<tab>" to complete to "break", which it
+     otherwise wouldn't.  */
+  unsigned int abbrev_flag : 1;
+
+  /* Type of "set" or "show" command (or SET_NOT_SET if not "set"
+     or "show").  */
+  ENUM_BITFIELD (cmd_types) type : 2;
+
+  /* Function definition of this command.  NULL for command class
+     names and for help topics that are not really commands.  NOTE:
+     cagney/2002-02-02: This function signature is evolving.  For
+     the moment suggest sticking with either set_cmd_cfunc() or
+     set_cmd_sfunc().  */
+  cmd_func_ftype *func;
+
+  /* The command's real callback.  At present func() bounces through
+     to one of the below.  */
+  union
+    {
+      /* Most commands don't need the cmd_list_element parameter passed to FUNC.
+	 They therefore register a command of this type, which doesn't have the
+	 cmd_list_element parameter.  do_simple_func is installed as FUNC, and
+	 acts as a shim between the two.  */
+      cmd_simple_func_ftype *simple_func;
+    }
+  function;
+
+  /* Documentation of this command (or help topic).
+     First line is brief documentation; remaining lines form, with it,
+     the full documentation.  First line should end with a period.
+     Entire string should also end with a period, not a newline.  */
+  const char *doc;
+
+  /* For set/show commands.  A method for printing the output to the
+     specified stream.  */
+  show_value_ftype *show_value_func = nullptr;
+
+  /* If this command is deprecated, this is the replacement name.  */
+  const char *replacement = nullptr;
+
+  /* Hook for another command to be executed before this command.  */
+  struct cmd_list_element *hook_pre = nullptr;
+
+  /* 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 **subcommands = nullptr;
+
+  /* The prefix command of this command.  */
+  struct cmd_list_element *prefix = nullptr;
+
+  /* Completion routine for this command.  */
+  completer_ftype *completer = symbol_completer;
+
+  /* Handle the word break characters for this completer.  Usually
+     this function need not be defined, but for some types of
+     completers (e.g., Python completers declared as methods inside
+     a class) the word break chars may need to be redefined
+     depending on the completer type (e.g., for filename
+     completers).  */
+  completer_handle_brkchars_ftype *completer_handle_brkchars = nullptr;
+
+  /* Destruction routine for this command.  If non-NULL, this is
+     called when this command instance is destroyed.  This may be
+     used to finalize the CONTEXT field, if needed.  */
+  void (*destroyer) (struct cmd_list_element *self, void *context) = nullptr;
+
+  /* Setting affected by "set" and "show".  Not used if type is not_set_cmd.  */
+  std::optional<setting> var;
+
+  /* Pointer to NULL terminated list of enumerated values (like
+     argv).  */
+  const char *const *enums = nullptr;
+
+  /* Pointer to command strings of user-defined commands */
+  counted_command_line user_commands;
+
+  /* Pointer to command that is hooked by this one, (by hook_pre)
+     so the hook can be removed when this one is deleted.  */
+  struct cmd_list_element *hookee_pre = nullptr;
+
+  /* Pointer to command that is hooked by this one, (by hook_post)
+     so the hook can be removed when this one is deleted.  */
+  struct cmd_list_element *hookee_post = nullptr;
+
+  /* Pointer to command that is aliased by this one, so the
+     aliased command can be located in case it has been hooked.  */
+  struct cmd_list_element *alias_target = nullptr;
+
+  /* Node to link aliases on an alias list.  */
+  using aliases_list_node_type
+    = intrusive_list_node<cmd_list_element>;
+  aliases_list_node_type aliases_list_node;
+
+  /* Linked list of all aliases of this command.  */
+  using aliases_list_member_node_type
+    = intrusive_member_node<cmd_list_element,
+			    &cmd_list_element::aliases_list_node>;
+  using aliases_list_type
+    = intrusive_list<cmd_list_element, aliases_list_member_node_type>;
+  aliases_list_type aliases;
+
+  /* If non-null, the pointer to a field in 'struct
+     cli_suppress_notification', which will be set to true in cmd_func
+     when this command is being executed.  It will be set back to false
+     when the command has been executed.  */
+  bool *suppress_notification = nullptr;
+
+private:
+  /* Local state (context) for this command.  This can be anything.  */
+  void *m_context = nullptr;
+};
 
 /* Functions that implement commands about CLI commands.  */
 
 extern void help_cmd (const char *, struct ui_file *);
 
 extern void apropos_cmd (struct ui_file *, struct cmd_list_element *,
-			 bool verbose, compiled_regex &, const char *);
+			 bool verbose, compiled_regex &);
 
 /* Used to mark commands that don't do anything.  If we just leave the
    function field NULL, the command is interpreted as a help topic, or
@@ -280,6 +314,27 @@ extern const char * const boolean_enums[
 /* The enums of auto-boolean commands.  */
 extern const char * const auto_boolean_enums[];
 
+/* Add the different possible completions of TEXT with color.
+
+   WORD points in the same buffer as TEXT, and completions should be
+   returned relative to this position.  For example, suppose TEXT is "foo"
+   and we want to complete to "foobar".  If WORD is "oo", return
+   "oobar"; if WORD is "baz/foo", return "baz/foobar".  */
+
+extern void complete_on_color (completion_tracker &tracker,
+			       const char *text, const char *word);
+
+/* Parse ARGS, an option to a var_color variable.
+ *
+   Either returns the parsed value on success or throws an error.  ARGS may be
+   one of strings {none, black, red, green, yellow, blue, magenta,
+   cyan, white}, or color number from 0 to 255, or RGB hex triplet #RRGGBB.
+   */
+extern ui_file_style::color parse_cli_var_color (const char **args);
+
+/* Same as above but additionally check that there is no junk in the end.  */
+extern ui_file_style::color parse_var_color (const char *arg);
+
 /* Verify whether a given cmd_list_element is a user-defined command.
    Return 1 if it is user-defined.  Return 0 otherwise.  */
 
@@ -287,4 +342,4 @@ extern int cli_user_command_p (struct cm
 
 extern int find_command_name_length (const char *);
 
-#endif /* CLI_CLI_DECODE_H */
+#endif /* GDB_CLI_CLI_DECODE_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.20200303/gdb/cli/cli-dump.c ./gdb/cli/cli-dump.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-dump.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-dump.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    Contributed by Red Hat.
 
@@ -19,7 +19,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/>.  */
 
-#include "defs.h"
 #include "cli/cli-decode.h"
 #include "cli/cli-cmds.h"
 #include "value.h"
@@ -33,6 +32,7 @@
 #include "gdbsupport/filestuff.h"
 #include "gdbsupport/byte-vector.h"
 #include "gdbarch.h"
+#include "inferior.h"
 
 static gdb::unique_xmalloc_ptr<char>
 scan_expression (const char **cmd, const char *def)
@@ -129,26 +129,15 @@ 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)
 {
   int status;
 
   gdb_file_up file = gdb_fopen_cloexec (filename, mode);
+  if (file == nullptr)
+    perror_with_name (filename);
+
   status = fwrite (buf, len, 1, file.get ());
   if (status != 1)
     perror_with_name (filename);
@@ -235,15 +224,15 @@ dump_value_to_file (const char *cmd, con
 
   /* Have everything.  Open/write the data.  */
   if (file_format == NULL || strcmp (file_format, "binary") == 0)
-    dump_binary_file (filename.get (), mode, value_contents (val),
-		      TYPE_LENGTH (value_type (val)));
+    dump_binary_file (filename.get (), mode, val->contents ().data (),
+		      val->type ()->length ());
   else
     {
       CORE_ADDR vaddr;
 
-      if (VALUE_LVAL (val))
+      if (val->lval ())
 	{
-	  vaddr = value_address (val);
+	  vaddr = val->address ();
 	}
       else
 	{
@@ -252,8 +241,8 @@ dump_value_to_file (const char *cmd, con
 	}
 
       dump_bfd_file (filename.get (), mode, file_format, vaddr,
-		     value_contents (val), 
-		     TYPE_LENGTH (value_type (val)));
+		     val->contents ().data (), 
+		     val->type ()->length ());
     }
 }
 
@@ -342,9 +331,9 @@ struct dump_context
 };
 
 static void
-call_dump_func (struct cmd_list_element *c, const char *args, int from_tty)
+call_dump_func (const char *args, int from_tty, cmd_list_element *c)
 {
-  struct dump_context *d = (struct dump_context *) get_cmd_context (c);
+  struct dump_context *d = (struct dump_context *) c->context ();
 
   d->func (args, d->mode);
 }
@@ -359,19 +348,19 @@ add_dump_command (const char *name,
   struct dump_context *d;
 
   c = add_cmd (name, all_commands, descr, &dump_cmdlist);
-  c->completer =  filename_completer;
+  set_cmd_completer (c, deprecated_filename_completer);
   d = XNEW (struct dump_context);
   d->func = func;
   d->mode = FOPEN_WB;
-  set_cmd_context (c, d);
+  c->set_context (d);
   c->func = call_dump_func;
 
   c = add_cmd (name, all_commands, descr, &append_cmdlist);
-  c->completer =  filename_completer;
+  set_cmd_completer (c, deprecated_filename_completer);
   d = XNEW (struct dump_context);
   d->func = func;
   d->mode = FOPEN_AB;
-  set_cmd_context (c, d);
+  c->set_context (d);
   c->func = call_dump_func;
 
   /* Replace "Dump " at start of docstring with "Append " (borrowed
@@ -385,22 +374,14 @@ add_dump_command (const char *name,
     c->doc = concat ("Append ", c->doc + 6, (char *)NULL);
 }
 
-/* Opaque data for restore_section_callback.  */
-struct callback_data {
-  CORE_ADDR load_offset;
-  CORE_ADDR load_start;
-  CORE_ADDR load_end;
-};
-
-/* Function: restore_section_callback.
-
-   Callback function for bfd_map_over_sections.
-   Selectively loads the sections into memory.  */
+/* Selectively loads the sections into memory.  */
 
 static void
-restore_section_callback (bfd *ibfd, asection *isec, void *args)
+restore_one_section (bfd *ibfd, asection *isec,
+		     CORE_ADDR load_offset,
+		     CORE_ADDR load_start,
+		     CORE_ADDR load_end)
 {
-  struct callback_data *data = (struct callback_data *) args;
   bfd_vma sec_start  = bfd_section_vma (isec);
   bfd_size_type size = bfd_section_size (isec);
   bfd_vma sec_end    = sec_start + size;
@@ -413,24 +394,24 @@ restore_section_callback (bfd *ibfd, ase
     return;
 
   /* Does the section overlap with the desired restore range? */
-  if (sec_end <= data->load_start 
-      || (data->load_end > 0 && sec_start >= data->load_end))
+  if (sec_end <= load_start
+      || (load_end > 0 && sec_start >= load_end))
     {
-      /* No, no useable data in this section.  */
-      printf_filtered (_("skipping section %s...\n"), 
-		       bfd_section_name (isec));
+      /* No, no usable data in this section.  */
+      gdb_printf (_("skipping section %s...\n"), 
+		  bfd_section_name (isec));
       return;
     }
 
   /* Compare section address range with user-requested
      address range (if any).  Compute where the actual
      transfer should start and end.  */
-  if (sec_start < data->load_start)
-    sec_offset = data->load_start - sec_start;
+  if (sec_start < load_start)
+    sec_offset = load_start - sec_start;
   /* Size of a partial transfer.  */
   sec_load_count -= sec_offset;
-  if (data->load_end > 0 && sec_end > data->load_end)
-    sec_load_count -= sec_end - data->load_end;
+  if (load_end > 0 && sec_end > load_end)
+    sec_load_count -= sec_end - load_end;
 
   /* Get the data.  */
   gdb::byte_vector buf (size);
@@ -438,31 +419,33 @@ restore_section_callback (bfd *ibfd, ase
     error (_("Failed to read bfd file %s: '%s'."), bfd_get_filename (ibfd), 
 	   bfd_errmsg (bfd_get_error ()));
 
-  printf_filtered ("Restoring section %s (0x%lx to 0x%lx)",
-		   bfd_section_name (isec), 
-		   (unsigned long) sec_start, 
-		   (unsigned long) sec_end);
-
-  if (data->load_offset != 0 || data->load_start != 0 || data->load_end != 0)
-    printf_filtered (" into memory (%s to %s)\n",
-		     paddress (target_gdbarch (),
-			       (unsigned long) sec_start
-			       + sec_offset + data->load_offset), 
-		     paddress (target_gdbarch (),
-			       (unsigned long) sec_start + sec_offset
-				+ data->load_offset + sec_load_count));
+  gdb_printf ("Restoring section %s (0x%lx to 0x%lx)",
+	      bfd_section_name (isec), 
+	      (unsigned long) sec_start, 
+	      (unsigned long) sec_end);
+
+  if (load_offset != 0 || load_start != 0 || load_end != 0)
+    gdb_printf (" into memory (%s to %s)\n",
+		paddress (current_inferior ()->arch (),
+			  (unsigned long) sec_start
+			  + sec_offset + load_offset),
+		paddress (current_inferior ()->arch (),
+			  (unsigned long) sec_start + sec_offset
+			  + load_offset + sec_load_count));
   else
-    puts_filtered ("\n");
+    gdb_puts ("\n");
 
   /* Write the data.  */
-  ret = target_write_memory (sec_start + sec_offset + data->load_offset, 
+  ret = target_write_memory (sec_start + sec_offset + load_offset,
 			     &buf[sec_offset], sec_load_count);
   if (ret != 0)
     warning (_("restore: memory write failed (%s)."), safe_strerror (ret));
 }
 
 static void
-restore_binary_file (const char *filename, struct callback_data *data)
+restore_binary_file (const char *filename, CORE_ADDR load_offset,
+		     CORE_ADDR load_start, CORE_ADDR load_end)
+
 {
   gdb_file_up file = gdb_fopen_cloexec (filename, FOPEN_RB);
   long len;
@@ -480,25 +463,25 @@ restore_binary_file (const char *filenam
   else
     perror_with_name (filename);
 
-  if (len <= data->load_start)
+  if (len <= load_start)
     error (_("Start address is greater than length of binary file %s."), 
 	   filename);
 
   /* Chop off "len" if it exceeds the requested load_end addr.  */
-  if (data->load_end != 0 && data->load_end < len)
-    len = data->load_end;
+  if (load_end != 0 && load_end < len)
+    len = load_end;
   /* Chop off "len" if the requested load_start addr skips some bytes.  */
-  if (data->load_start > 0)
-    len -= data->load_start;
+  if (load_start > 0)
+    len -= load_start;
 
-  printf_filtered 
+  gdb_printf 
     ("Restoring binary file %s into memory (0x%lx to 0x%lx)\n", 
      filename, 
-     (unsigned long) (data->load_start + data->load_offset),
-     (unsigned long) (data->load_start + data->load_offset + len));
+     (unsigned long) (load_start + load_offset),
+     (unsigned long) (load_start + load_offset + len));
 
   /* Now set the file pos to the requested load start pos.  */
-  if (fseek (file.get (), data->load_start, SEEK_SET) != 0)
+  if (fseek (file.get (), load_start, SEEK_SET) != 0)
     perror_with_name (filename);
 
   /* Now allocate a buffer and read the file contents.  */
@@ -507,8 +490,7 @@ restore_binary_file (const char *filenam
     perror_with_name (filename);
 
   /* Now write the buffer into target memory.  */
-  len = target_write_memory (data->load_start + data->load_offset,
-			     buf.data (), len);
+  len = target_write_memory (load_start + load_offset, buf.data (), len);
   if (len != 0)
     warning (_("restore: memory write failed (%s)."), safe_strerror (len));
 }
@@ -516,15 +498,14 @@ restore_binary_file (const char *filenam
 static void
 restore_command (const char *args, int from_tty)
 {
-  struct callback_data data;
   int binary_flag = 0;
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     noprocess ();
 
-  data.load_offset = 0;
-  data.load_start  = 0;
-  data.load_end    = 0;
+  CORE_ADDR load_offset = 0;
+  CORE_ADDR load_start  = 0;
+  CORE_ADDR load_end    = 0;
 
   /* Parse the input arguments.  First is filename (required).  */
   gdb::unique_xmalloc_ptr<char> filename = scan_filename (&args, NULL);
@@ -541,33 +522,35 @@ restore_command (const char *args, int f
 	}
       /* Parse offset (optional).  */
       if (args != NULL && *args != '\0')
-	data.load_offset = binary_flag ?
-	  parse_and_eval_address (scan_expression (&args, NULL).get ()) :
-	  parse_and_eval_long (scan_expression (&args, NULL).get ());
+	load_offset
+	  = (binary_flag
+	     ? parse_and_eval_address (scan_expression (&args, NULL).get ())
+	     : parse_and_eval_long (scan_expression (&args, NULL).get ()));
       if (args != NULL && *args != '\0')
 	{
 	  /* Parse start address (optional).  */
-	  data.load_start = 
+	  load_start =
 	    parse_and_eval_long (scan_expression (&args, NULL).get ());
 	  if (args != NULL && *args != '\0')
 	    {
 	      /* Parse end address (optional).  */
-	      data.load_end = parse_and_eval_long (args);
-	      if (data.load_end <= data.load_start)
+	      load_end = parse_and_eval_long (args);
+	      if (load_end <= load_start)
 		error (_("Start must be less than end."));
 	    }
 	}
     }
 
   if (info_verbose)
-    printf_filtered ("Restore file %s offset 0x%lx start 0x%lx end 0x%lx\n",
-		     filename.get (), (unsigned long) data.load_offset,
-		     (unsigned long) data.load_start, 
-		     (unsigned long) data.load_end);
+    gdb_printf ("Restore file %s offset 0x%lx start 0x%lx end 0x%lx\n",
+		filename.get (), (unsigned long) load_offset,
+		(unsigned long) load_start,
+		(unsigned long) load_end);
 
   if (binary_flag)
     {
-      restore_binary_file (filename.get (), &data);
+      restore_binary_file (filename.get (), load_offset, load_start,
+			   load_end);
     }
   else
     {
@@ -575,68 +558,26 @@ restore_command (const char *args, int f
       gdb_bfd_ref_ptr ibfd (bfd_openr_or_error (filename.get (), NULL));
 
       /* Process the sections.  */
-      bfd_map_over_sections (ibfd.get (), restore_section_callback, &data);
+      for (asection *sect : gdb_bfd_sections (ibfd))
+	restore_one_section (ibfd.get (), sect, load_offset, load_start,
+			     load_end);
     }
 }
 
-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)
+INIT_GDB_FILE (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,
+			0/*allow-unknown*/,
+			&cmdlist);
+  add_basic_prefix_cmd ("append", class_vars,
+			_("Append target code/data to a local file."),
+			&append_cmdlist,
+			0/*allow-unknown*/,
+			&cmdlist);
 
   add_dump_command ("memory", dump_memory_command, "\
 Write contents of memory to a raw binary file.\n\
@@ -648,41 +589,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,
+			0 /*allow-unknown*/, 
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("ihex", all_commands,
+			_("Write target code/data to an intel hex file."),
+			&ihex_cmdlist,
+			0 /*allow-unknown*/, 
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("verilog", all_commands,
+			_("Write target code/data to a verilog hex file."),
+			&verilog_cmdlist,
+			0 /*allow-unknown*/,
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("tekhex", all_commands,
+			_("Write target code/data to a tekhex file."),
+			&tekhex_cmdlist,
+			0 /*allow-unknown*/, 
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("binary", all_commands,
+			_("Write target code/data to a raw binary file."),
+			&binary_dump_cmdlist,
+			0 /*allow-unknown*/, 
+			&dump_cmdlist);
+
+  add_basic_prefix_cmd ("binary", all_commands,
+			_("Append target code/data to a raw binary file."),
+			&binary_append_cmdlist,
+			0 /*allow-unknown*/, 
+			&append_cmdlist);
 
   add_cmd ("memory", all_commands, dump_srec_memory, _("\
 Write contents of memory to an srec file.\n\
@@ -762,6 +703,6 @@ Arguments are FILE OFFSET START END wher
 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."));
-  c->completer = filename_completer;
+  set_cmd_completer (c, deprecated_filename_completer);
   /* FIXME: completers for other 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.20200303/gdb/cli/cli-interp.c ./gdb/cli/cli-interp.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-interp.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-interp.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI Definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2002-2020 Free Software Foundation, Inc.
+   Copyright (C) 2002-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,13 +17,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/>.  */
 
-#include "defs.h"
 #include "cli-interp.h"
+#include "exceptions.h"
 #include "interps.h"
 #include "event-top.h"
 #include "ui-out.h"
 #include "cli-out.h"
-#include "top.h"		/* for "execute_command" */
+#include "top.h"
+#include "ui.h"
 #include "infrun.h"
 #include "observable.h"
 #include "gdbthread.h"
@@ -43,49 +44,28 @@ class cli_interp final : public cli_inte
 {
  public:
   explicit cli_interp (const char *name);
-  ~cli_interp ();
+  ~cli_interp () = default;
 
   void init (bool top_level) override;
   void resume () override;
   void suspend () override;
-  gdb_exception exec (const char *command_str) override;
+  void exec (const char *command_str) override;
   ui_out *interp_ui_out () override;
 
+private:
+
   /* The ui_out for the console interpreter.  */
-  cli_ui_out *cli_uiout;
+  std::unique_ptr<cli_ui_out> m_cli_uiout;
 };
 
 cli_interp::cli_interp (const char *name)
-  : cli_interp_base (name)
-{
-  /* Create a default uiout builder for the CLI.  */
-  this->cli_uiout = cli_out_new (gdb_stdout);
-}
-
-cli_interp::~cli_interp ()
+  : cli_interp_base (name),
+    m_cli_uiout (new cli_ui_out (gdb_stdout))
 {
-  delete cli_uiout;
 }
 
 /* Suppress notification struct.  */
-struct cli_suppress_notification cli_suppress_notification =
-  {
-    0   /* user_selected_context_changed */
-  };
-
-/* Returns the INTERP's data cast as cli_interp if INTERP is a CLI,
-   and returns NULL otherwise.  */
-
-static struct cli_interp *
-as_cli_interp (struct interp *interp)
-{
-  return dynamic_cast<cli_interp *> (interp);
-}
-
-/* Longjmp-safe wrapper for "execute_command".  */
-static struct gdb_exception safe_execute_command (struct ui_out *uiout,
-						  const char *command, 
-						  int from_tty);
+struct cli_suppress_notification cli_suppress_notification;
 
 /* See cli-interp.h.
 
@@ -111,171 +91,85 @@ should_print_stop_to_console (struct int
 {
   if ((bpstat_what (tp->control.stop_bpstat).main_action
        == BPSTAT_WHAT_STOP_NOISY)
-      || tp->thread_fsm == NULL
-      || tp->thread_fsm->command_interp == console_interp
-      || !tp->thread_fsm->finished_p ())
+      || tp->thread_fsm () == nullptr
+      || tp->thread_fsm ()->command_interp == console_interp
+      || !tp->thread_fsm ()->finished_p ())
     return 1;
   return 0;
 }
 
 /* Observers for several run control events.  If the interpreter is
    quiet (i.e., another interpreter is being run with
-   interpreter-exec), print nothing.  */
+   interpreter-exec), print nothing.  These are named "cli_base" as
+   they print to both CLI interpreters and TUI interpreters.  */
 
-/* Observer for the normal_stop notification.  */
-
-static void
-cli_on_normal_stop (struct bpstats *bs, int print_frame)
+void
+cli_interp_base::on_normal_stop (struct bpstat *bs, int print_frame)
 {
   if (!print_frame)
     return;
 
-  SWITCH_THRU_ALL_UIS ()
-    {
-      struct interp *interp = top_level_interpreter ();
-      struct cli_interp *cli = as_cli_interp (interp);
-      struct thread_info *thread;
-
-      if (cli == NULL)
-	continue;
-
-      thread = inferior_thread ();
-      if (should_print_stop_to_console (interp, thread))
-	print_stop_event (cli->cli_uiout);
-    }
-}
-
-/* Observer for the signal_received notification.  */
-
-static void
-cli_on_signal_received (enum gdb_signal siggnal)
-{
-  SWITCH_THRU_ALL_UIS ()
-    {
-      struct cli_interp *cli = as_cli_interp (top_level_interpreter ());
+  /* This event is suppressed.  */
+  if (cli_suppress_notification.normal_stop)
+    return;
 
-      if (cli == NULL)
-	continue;
+  thread_info *thread = inferior_thread ();
+  if (should_print_stop_to_console (this, thread))
+    print_stop_event (this->interp_ui_out ());
 
-      print_signal_received_reason (cli->cli_uiout, siggnal);
-    }
 }
 
-/* Observer for the end_stepping_range notification.  */
-
-static void
-cli_on_end_stepping_range (void)
+void
+cli_interp_base::on_signal_received (enum gdb_signal siggnal)
 {
-  SWITCH_THRU_ALL_UIS ()
-    {
-      struct cli_interp *cli = as_cli_interp (top_level_interpreter ());
-
-      if (cli == NULL)
-	continue;
-
-      print_end_stepping_range_reason (cli->cli_uiout);
-    }
+  print_signal_received_reason (this->interp_ui_out (), siggnal);
 }
 
-/* Observer for the signalled notification.  */
-
-static void
-cli_on_signal_exited (enum gdb_signal siggnal)
+void
+cli_interp_base::on_signal_exited (gdb_signal sig)
 {
-  SWITCH_THRU_ALL_UIS ()
-    {
-      struct cli_interp *cli = as_cli_interp (top_level_interpreter ());
-
-      if (cli == NULL)
-	continue;
-
-      print_signal_exited_reason (cli->cli_uiout, siggnal);
-    }
+  print_signal_exited_reason (this->interp_ui_out (), sig);
 }
 
-/* Observer for the exited notification.  */
-
-static void
-cli_on_exited (int exitstatus)
+void
+cli_interp_base::on_exited (int status)
 {
-  SWITCH_THRU_ALL_UIS ()
-    {
-      struct cli_interp *cli = as_cli_interp (top_level_interpreter ());
-
-      if (cli == NULL)
-	continue;
-
-      print_exited_reason (cli->cli_uiout, exitstatus);
-    }
+  print_exited_reason (this->interp_ui_out (), status);
 }
 
-/* Observer for the no_history notification.  */
-
-static void
-cli_on_no_history (void)
+void
+cli_interp_base::on_no_history ()
 {
-  SWITCH_THRU_ALL_UIS ()
-    {
-      struct cli_interp *cli = as_cli_interp (top_level_interpreter ());
-
-      if (cli == NULL)
-	continue;
-
-      print_no_history_reason (cli->cli_uiout);
-    }
+  print_no_history_reason (this->interp_ui_out ());
 }
 
-/* Observer for the sync_execution_done notification.  */
-
-static void
-cli_on_sync_execution_done (void)
+void
+cli_interp_base::on_sync_execution_done ()
 {
-  struct cli_interp *cli = as_cli_interp (top_level_interpreter ());
-
-  if (cli == NULL)
-    return;
-
   display_gdb_prompt (NULL);
 }
 
-/* Observer for the command_error notification.  */
-
-static void
-cli_on_command_error (void)
+void
+cli_interp_base::on_command_error ()
 {
-  struct cli_interp *cli = as_cli_interp (top_level_interpreter ());
-
-  if (cli == NULL)
-    return;
-
   display_gdb_prompt (NULL);
 }
 
-/* Observer for the user_selected_context_changed notification.  */
-
-static void
-cli_on_user_selected_context_changed (user_selected_what selection)
+void
+cli_interp_base::on_user_selected_context_changed (user_selected_what selection)
 {
   /* This event is suppressed.  */
   if (cli_suppress_notification.user_selected_context)
     return;
 
-  thread_info *tp = inferior_ptid != null_ptid ? inferior_thread () : NULL;
-
-  SWITCH_THRU_ALL_UIS ()
-    {
-      struct cli_interp *cli = as_cli_interp (top_level_interpreter ());
-
-      if (cli == NULL)
-	continue;
+  thread_info *tp = inferior_ptid != null_ptid ? inferior_thread () : nullptr;
 
-      if (selection & USER_SELECTED_INFERIOR)
-	print_selected_inferior (cli->cli_uiout);
+  if (selection & USER_SELECTED_INFERIOR)
+    print_selected_inferior (this->interp_ui_out ());
 
-      if (tp != NULL
-	  && ((selection & (USER_SELECTED_THREAD | USER_SELECTED_FRAME))))
-	print_selected_thread_frame (cli->cli_uiout, selection);
-    }
+  if (tp != nullptr
+      && ((selection & (USER_SELECTED_THREAD | USER_SELECTED_FRAME))))
+    print_selected_thread_frame (this->interp_ui_out (), selection);
 }
 
 /* pre_command_loop implementation.  */
@@ -297,7 +191,6 @@ void
 cli_interp::resume ()
 {
   struct ui *ui = current_ui;
-  struct cli_interp *cli = this;
   struct ui_file *stream;
 
   /*sync_execution = 1; */
@@ -306,10 +199,10 @@ cli_interp::resume ()
      previously writing to gdb_stdout, then set it to the new
      gdb_stdout afterwards.  */
 
-  stream = cli->cli_uiout->set_stream (gdb_stdout);
+  stream = m_cli_uiout->set_stream (gdb_stdout);
   if (stream != gdb_stdout)
     {
-      cli->cli_uiout->set_stream (stream);
+      m_cli_uiout->set_stream (stream);
       stream = NULL;
     }
 
@@ -318,7 +211,7 @@ cli_interp::resume ()
   ui->input_handler = command_line_handler;
 
   if (stream != NULL)
-    cli->cli_uiout->set_stream (gdb_stdout);
+    m_cli_uiout->set_stream (gdb_stdout);
 }
 
 void
@@ -327,78 +220,46 @@ cli_interp::suspend ()
   gdb_disable_readline ();
 }
 
-gdb_exception
+void
 cli_interp::exec (const char *command_str)
 {
-  struct cli_interp *cli = this;
-  struct ui_file *old_stream;
-  struct gdb_exception result;
-
-  /* gdb_stdout could change between the time cli_uiout was
+  /* gdb_stdout could change between the time m_cli_uiout was
      initialized and now.  Since we're probably using a different
      interpreter which has a new ui_file for gdb_stdout, use that one
      instead of the default.
 
-     It is important that it gets reset everytime, since the user
+     It is important that it gets reset every time, since the user
      could set gdb to use a different interpreter.  */
-  old_stream = cli->cli_uiout->set_stream (gdb_stdout);
-  result = safe_execute_command (cli->cli_uiout, command_str, 1);
-  cli->cli_uiout->set_stream (old_stream);
-  return result;
-}
-
-bool
-cli_interp_base::supports_command_editing ()
-{
-  return true;
-}
-
-static struct gdb_exception
-safe_execute_command (struct ui_out *command_uiout, const char *command,
-		      int from_tty)
-{
-  struct gdb_exception e;
+  ui_file *old_stream = m_cli_uiout->set_stream (gdb_stdout);
+  SCOPE_EXIT { m_cli_uiout->set_stream (old_stream); };
 
   /* Save and override the global ``struct ui_out'' builder.  */
   scoped_restore saved_uiout = make_scoped_restore (&current_uiout,
-						    command_uiout);
+						    m_cli_uiout.get ());
 
   try
     {
-      execute_command (command, from_tty);
+      execute_command (command_str, 1);
     }
-  catch (gdb_exception &exception)
+  catch (const gdb_exception_error &ex)
     {
-      e = std::move (exception);
+      exception_print (gdb_stderr, ex);
+      throw;
     }
+}
 
-  /* FIXME: cagney/2005-01-13: This shouldn't be needed.  Instead the
-     caller should print the exception.  */
-  exception_print (gdb_stderr, e);
-  return e;
+bool
+cli_interp_base::supports_command_editing ()
+{
+  return true;
 }
 
 ui_out *
 cli_interp::interp_ui_out ()
 {
-  struct cli_interp *cli = (struct cli_interp *) this;
-
-  return cli->cli_uiout;
+  return m_cli_uiout.get ();
 }
 
-/* These hold the pushed copies of the gdb output files.
-   If NULL then nothing has yet been pushed.  */
-struct saved_output_files
-{
-  ui_file *out;
-  ui_file *err;
-  ui_file *log;
-  ui_file *targ;
-  ui_file *targerr;
-  ui_file *file_to_delete;
-};
-static saved_output_files saved_output;
-
 /* See cli-interp.h.  */
 
 void
@@ -407,53 +268,46 @@ cli_interp_base::set_logging (ui_file_up
 {
   if (logfile != nullptr)
     {
-      saved_output.out = gdb_stdout;
-      saved_output.err = gdb_stderr;
-      saved_output.log = gdb_stdlog;
-      saved_output.targ = gdb_stdtarg;
-      saved_output.targerr = gdb_stdtargerr;
-
-      /* If something is being redirected, then grab logfile.  */
-      ui_file *logfile_p = nullptr;
-      if (logging_redirect || debug_redirect)
+      gdb_assert (m_saved_output == nullptr);
+      m_saved_output = std::make_unique<saved_output_files> ();
+      m_saved_output->out = gdb_stdout;
+      m_saved_output->err = gdb_stderr;
+      m_saved_output->log = gdb_stdlog;
+      m_saved_output->targ = gdb_stdtarg;
+
+      ui_file *logfile_p = logfile.get ();
+      m_saved_output->logfile_holder = std::move (logfile);
+
+      /* The new stdout and stderr only depend on whether logging
+	 redirection is being done.  */
+      ui_file *new_stdout = logfile_p;
+      ui_file *new_stderr = logfile_p;
+      if (!logging_redirect)
 	{
-	  logfile_p = logfile.get ();
-	  saved_output.file_to_delete = logfile_p;
+	  m_saved_output->stdout_holder.reset
+	    (new tee_file (gdb_stdout, logfile_p));
+	  new_stdout = m_saved_output->stdout_holder.get ();
+	  m_saved_output->stderr_holder.reset
+	    (new tee_file (gdb_stderr, logfile_p));
+	  new_stderr = m_saved_output->stderr_holder.get ();
 	}
 
-      /* If something is not being redirected, then a tee containing both the
-	 logfile and stdout.  */
-      ui_file *tee = nullptr;
-      if (!logging_redirect || !debug_redirect)
-	{
-	  tee = new tee_file (gdb_stdout, std::move (logfile));
-	  saved_output.file_to_delete = tee;
-	}
+      m_saved_output->stdlog_holder.reset
+	(new timestamped_file (debug_redirect ? logfile_p : new_stderr));
 
-      gdb_stdout = logging_redirect ? logfile_p : tee;
-      gdb_stdlog = debug_redirect ? logfile_p : tee;
-      gdb_stderr = logging_redirect ? logfile_p : tee;
-      gdb_stdtarg = logging_redirect ? logfile_p : tee;
-      gdb_stdtargerr = logging_redirect ? logfile_p : tee;
+      gdb_stdout = new_stdout;
+      gdb_stdlog = m_saved_output->stdlog_holder.get ();
+      gdb_stderr = new_stderr;
+      gdb_stdtarg = new_stderr;
     }
   else
     {
-      /* Delete the correct file.  If it's the tee then the logfile will also
-	 be deleted.  */
-      delete saved_output.file_to_delete;
-
-      gdb_stdout = saved_output.out;
-      gdb_stderr = saved_output.err;
-      gdb_stdlog = saved_output.log;
-      gdb_stdtarg = saved_output.targ;
-      gdb_stdtargerr = saved_output.targerr;
-
-      saved_output.out = nullptr;
-      saved_output.err = nullptr;
-      saved_output.log = nullptr;
-      saved_output.targ = nullptr;
-      saved_output.targerr = nullptr;
-      saved_output.file_to_delete = nullptr;
+      gdb_stdout = m_saved_output->out;
+      gdb_stderr = m_saved_output->err;
+      gdb_stdlog = m_saved_output->log;
+      gdb_stdtarg = m_saved_output->targ;
+
+      m_saved_output.reset (nullptr);
     }
 }
 
@@ -467,20 +321,7 @@ cli_interp_factory (const char *name)
 
 /* Standard gdb initialization hook.  */
 
-void
-_initialize_cli_interp (void)
+INIT_GDB_FILE (cli_interp)
 {
   interp_factory_register (INTERP_CONSOLE, cli_interp_factory);
-
-  /* If changing this, remember to update tui-interp.c as well.  */
-  gdb::observers::normal_stop.attach (cli_on_normal_stop);
-  gdb::observers::end_stepping_range.attach (cli_on_end_stepping_range);
-  gdb::observers::signal_received.attach (cli_on_signal_received);
-  gdb::observers::signal_exited.attach (cli_on_signal_exited);
-  gdb::observers::exited.attach (cli_on_exited);
-  gdb::observers::no_history.attach (cli_on_no_history);
-  gdb::observers::sync_execution_done.attach (cli_on_sync_execution_done);
-  gdb::observers::command_error.attach (cli_on_command_error);
-  gdb::observers::user_selected_context_changed.attach
-    (cli_on_user_selected_context_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.20200303/gdb/cli/cli-interp.h ./gdb/cli/cli-interp.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-interp.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-interp.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI Definitions for GDB, the GNU debugger.
 
-   Copyright (C) 2016-2020 Free Software Foundation, Inc.
+   Copyright (C) 2016-2025 Free Software Foundation, Inc.
 
    This 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,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/>.  */
 
-#ifndef CLI_CLI_INTERP_H
-#define CLI_CLI_INTERP_H
+#ifndef GDB_CLI_CLI_INTERP_H
+#define GDB_CLI_CLI_INTERP_H
 
 #include "interps.h"
 
@@ -32,20 +32,40 @@ public:
 		    bool debug_redirect) override;
   void pre_command_loop () override;
   bool supports_command_editing () override;
-};
-
-/* The CLI interpreter's set_logging_proc method.  Exported so other
-   interpreters can reuse it.  */
-extern void cli_set_logging (struct interp *interp,
-			     ui_file_up logfile, bool logging_redirect);
 
-extern int cli_interpreter_supports_command_editing (struct interp *interp);
-
-extern void cli_interpreter_pre_command_loop (struct interp *self);
+  void on_signal_received (gdb_signal sig) override;
+  void on_signal_exited (gdb_signal sig) override;
+  void on_normal_stop (bpstat *bs, int print_frame) override;
+  void on_exited (int status) override;
+  void on_no_history () override;
+  void on_sync_execution_done () override;
+  void on_command_error () override;
+  void on_user_selected_context_changed (user_selected_what selection) override;
+
+private:
+  struct saved_output_files
+  {
+    /* Saved gdb_stdout, gdb_stderr, etc.  */
+    ui_file *out;
+    ui_file *err;
+    ui_file *log;
+    ui_file *targ;
+    /* When redirecting, some or all of these may be non-null
+       depending on the logging mode.  */
+    ui_file_up stdout_holder;
+    ui_file_up stderr_holder;
+    ui_file_up stdlog_holder;
+    ui_file_up logfile_holder;
+  };
+
+  /* These hold the pushed copies of the gdb output files.  If NULL
+     then nothing has yet been pushed.  */
+  std::unique_ptr<saved_output_files> m_saved_output;
+};
 
 /* Returns true if the current stop should be printed to
    CONSOLE_INTERP.  */
 extern int should_print_stop_to_console (struct interp *interp,
 					 struct thread_info *tp);
 
-#endif /* CLI_CLI_INTERP_H */
+#endif /* GDB_CLI_CLI_INTERP_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.20200303/gdb/cli/cli-logging.c ./gdb/cli/cli-logging.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-logging.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-logging.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,21 +17,21 @@
    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 "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "ui-out.h"
 #include "interps.h"
 #include "cli/cli-style.h"
+#include "cli/cli-decode.h"
 
-static char *saved_filename;
+static std::string saved_filename;
 
-static char *logging_filename;
+static std::string logging_filename = "gdb.txt";
 static void
 show_logging_filename (struct ui_file *file, int from_tty,
 		       struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("The current logfile is \"%ps\".\n"),
-		    styled_string (file_name_style.style (), value));
+  gdb_printf (file, _("The current logfile is \"%ps\".\n"),
+	      styled_string (file_name_style.style (), value));
 }
 
 static bool logging_overwrite;
@@ -39,9 +39,9 @@ static bool logging_overwrite;
 static void
 maybe_warn_already_logging ()
 {
-  if (saved_filename)
+  if (!saved_filename.empty ())
     warning (_("Currently logging to %s.  Turn the logging off and on to "
-	       "make the new setting effective."), saved_filename);
+	       "make the new setting effective."), saved_filename.c_str ());
 }
 
 static void
@@ -55,10 +55,10 @@ static void
 show_logging_overwrite (struct ui_file *file, int from_tty,
 			struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file,
-		    _("Whether logging overwrites or "
-		      "appends to the log file is %s.\n"),
-		    value);
+  if (logging_overwrite)
+    gdb_printf (file, _("on: Logging overwrites the log file.\n"));
+  else
+    gdb_printf (file, _("off: Logging appends to the log file.\n"));
 }
 
 /* Value as configured by the user.  */
@@ -76,7 +76,24 @@ static void
 show_logging_redirect (struct ui_file *file, int from_tty,
 		       struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("The logging output mode is %s.\n"), value);
+  if (logging_redirect)
+    gdb_printf (file, _("on: Output will go only to the log file.\n"));
+  else
+    gdb_printf
+      (file,
+       _("off: Output will go to both the screen and the log file.\n"));
+}
+
+static void
+show_logging_debug_redirect (struct ui_file *file, int from_tty,
+		       struct cmd_list_element *c, const char *value)
+{
+  if (debug_redirect)
+    gdb_printf (file, _("on: Debug output will go only to the log file.\n"));
+  else
+    gdb_printf
+      (file,
+       _("off: Debug output will go to both the screen and the log file.\n"));
 }
 
 /* If we've pushed output files, close them and pop them.  */
@@ -94,36 +111,36 @@ pop_output_files (void)
 static void
 handle_redirections (int from_tty)
 {
-  if (saved_filename != NULL)
+  if (!saved_filename.empty ())
     {
-      fprintf_unfiltered (gdb_stdout, "Already logging to %s.\n",
-			  saved_filename);
+      gdb_printf ("Already logging to %s.\n",
+		  saved_filename.c_str ());
       return;
     }
 
   stdio_file_up log (new no_terminal_escape_file ());
-  if (!log->open (logging_filename, logging_overwrite ? "w" : "a"))
+  if (!log->open (logging_filename.c_str (), logging_overwrite ? "w" : "a"))
     perror_with_name (_("set logging"));
 
   /* Redirects everything to gdb_stdout while this is running.  */
   if (from_tty)
     {
       if (!logging_redirect)
-	fprintf_unfiltered (gdb_stdout, "Copying output to %s.\n",
-			    logging_filename);
+	gdb_printf ("Copying output to %s.\n",
+		    logging_filename.c_str ());
       else
-	fprintf_unfiltered (gdb_stdout, "Redirecting output to %s.\n",
-			    logging_filename);
+	gdb_printf ("Redirecting output to %s.\n",
+		    logging_filename.c_str ());
 
       if (!debug_redirect)
-	fprintf_unfiltered (gdb_stdout, "Copying debug output to %s.\n",
-			    logging_filename);
+	gdb_printf ("Copying debug output to %s.\n",
+		    logging_filename.c_str ());
       else
-	fprintf_unfiltered (gdb_stdout, "Redirecting debug output to %s.\n",
-			    logging_filename);
+	gdb_printf ("Redirecting debug output to %s.\n",
+		    logging_filename.c_str ());
     }
 
-  saved_filename = xstrdup (logging_filename);
+  saved_filename = logging_filename;
 
   /* Let the interpreter do anything it needs.  */
   current_interp_set_logging (std::move (log), logging_redirect,
@@ -145,81 +162,67 @@ set_logging_on (const char *args, int fr
   const char *rest = args;
 
   if (rest && *rest)
-    {
-      xfree (logging_filename);
-      logging_filename = xstrdup (rest);
-    }
+    logging_filename = rest;
+
   handle_redirections (from_tty);
 }
 
 static void 
 set_logging_off (const char *args, int from_tty)
 {
-  if (saved_filename == NULL)
+  if (saved_filename.empty ())
     return;
 
   pop_output_files ();
   if (from_tty)
-    fprintf_unfiltered (gdb_stdout, "Done logging to %s.\n", saved_filename);
-  xfree (saved_filename);
-  saved_filename = NULL;
+    gdb_printf ("Done logging to %s.\n",
+		saved_filename.c_str ());
+  saved_filename.clear ();
 }
 
+static bool logging_enabled;
+
 static void
-set_logging_command (const char *args, int from_tty)
+set_logging_enabled (const char *args,
+		     int from_tty, struct cmd_list_element *c)
 {
-  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"));
+  if (logging_enabled)
+    set_logging_on (args, from_tty);
+  else
+    set_logging_off (args, from_tty);
 }
 
 static void
-show_logging_command (const char *args, int from_tty)
+show_logging_enabled (struct ui_file *file, int from_tty,
+		       struct cmd_list_element *c, const char *value)
 {
-  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"));
+  if (logging_enabled)
+    gdb_printf (file, _("on: Logging is enabled.\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"));
+    gdb_printf (file, _("off: Logging is disabled.\n"));
 }
 
-void
-_initialize_cli_logging (void)
+INIT_GDB_FILE (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);
+  /* Set/show logging.  */
+  add_setshow_prefix_cmd ("logging", class_support,
+			  _("Set logging options."),
+			  _("Show logging options."),
+			  &set_logging_cmdlist, &show_logging_cmdlist,
+			  &setlist, &showlist);
+
+  /* Set/show logging overwrite.  */
   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."), _("\
-If set, logging overrides the log file."),
+If set, logging overwrites the log file."),
 			   set_logging_overwrite,
 			   show_logging_overwrite,
 			   &set_logging_cmdlist, &show_logging_cmdlist);
+
+  /* Set/show logging redirect.  */
   add_setshow_boolean_cmd ("redirect", class_support, &logging_redirect, _("\
 Set the logging output mode."), _("\
 Show the logging output mode."), _("\
@@ -228,6 +231,8 @@ If redirect is on, output will go only t
 			   set_logging_redirect,
 			   show_logging_redirect,
 			   &set_logging_cmdlist, &show_logging_cmdlist);
+
+  /* Set/show logging debugredirect.  */
   add_setshow_boolean_cmd ("debugredirect", class_support,
 			   &debug_redirect, _("\
 Set the logging debug output mode."), _("\
@@ -235,8 +240,10 @@ Show the logging debug output mode."), _
 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."),
 			   set_logging_redirect,
-			   show_logging_redirect,
+			   show_logging_debug_redirect,
 			   &set_logging_cmdlist, &show_logging_cmdlist);
+
+  /* Set/show logging file.  */
   add_setshow_filename_cmd ("file", class_support, &logging_filename, _("\
 Set the current logfile."), _("\
 Show the current logfile."), _("\
@@ -244,10 +251,28 @@ The logfile is used when directing GDB's
 			    NULL,
 			    show_logging_filename,
 			    &set_logging_cmdlist, &show_logging_cmdlist);
-  add_cmd ("on", class_support, set_logging_on,
-	   _("Enable logging."), &set_logging_cmdlist);
-  add_cmd ("off", class_support, set_logging_off,
-	   _("Disable logging."), &set_logging_cmdlist);
 
-  logging_filename = xstrdup ("gdb.txt");
+  /* Set/show logging enabled.  */
+  set_show_commands setshow_logging_enabled_cmds
+    = add_setshow_boolean_cmd ("enabled", class_support, &logging_enabled,
+			       _("Enable logging."),
+			       _("Show whether logging is enabled."),
+			       _("When on, enable logging."),
+			       set_logging_enabled,
+			       show_logging_enabled,
+			       &set_logging_cmdlist, &show_logging_cmdlist);
+
+  /* Set logging on, deprecated alias.  */
+  cmd_list_element *set_logging_on_cmd
+    = add_alias_cmd ("on", setshow_logging_enabled_cmds.set, class_support,
+		     false, &set_logging_cmdlist);
+  deprecate_cmd (set_logging_on_cmd, "set logging enabled on");
+  set_logging_on_cmd->default_args = "on";
+
+  /* Set logging off, deprecated alias.  */
+  cmd_list_element *set_logging_off_cmd
+    = add_alias_cmd ("off", setshow_logging_enabled_cmds.set, class_support,
+		     false, &set_logging_cmdlist);
+  deprecate_cmd (set_logging_off_cmd, "set logging enabled off");
+  set_logging_off_cmd->default_args = "off";
 }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-option.c ./gdb/cli/cli-option.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-option.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-option.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI options framework, for GDB.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "cli/cli-option.h"
 #include "cli/cli-decode.h"
 #include "cli/cli-utils.h"
@@ -38,14 +37,17 @@ union option_value
   /* For var_uinteger options.  */
   unsigned int uinteger;
 
-  /* For var_zuinteger_unlimited options.  */
+  /* For var_integer and var_pinteger options.  */
   int integer;
 
   /* For var_enum options.  */
   const char *enumeration;
 
-  /* For var_string options.  This is malloc-allocated.  */
-  char *string;
+  /* For var_string and var_filename options.  This is allocated with new.  */
+  std::string *string;
+
+  /* For var_color options.  */
+  ui_file_style::color color = ui_file_style::NONE;
 };
 
 /* Holds an options definition and its value.  */
@@ -58,11 +60,11 @@ struct option_def_and_value
   void *ctx;
 
   /* The option's value, if any.  */
-  gdb::optional<option_value> value;
+  std::optional<option_value> value;
 
   /* Constructor.  */
   option_def_and_value (const option_def &option_, void *ctx_,
-			gdb::optional<option_value> &&value_ = {})
+			std::optional<option_value> &&value_ = {})
     : option (option_),
       ctx (ctx_),
       value (std::move (value_))
@@ -86,8 +88,8 @@ struct option_def_and_value
   {
     if (value.has_value ())
       {
-	if (option.type == var_string)
-	  xfree (value->string);
+	if (option.type == var_string || option.type == var_filename)
+	  delete value->string;
       }
   }
 
@@ -99,17 +101,17 @@ private:
      allocated on the heap, so we must clear the pointer in the
      source, to avoid a double free.  */
   static void clear_value (const option_def &option,
-			   gdb::optional<option_value> &value)
+			   std::optional<option_value> &value)
   {
     if (value.has_value ())
       {
-	if (option.type == var_string)
+	if (option.type == var_string || option.type == var_filename)
 	  value->string = nullptr;
       }
   }
 };
 
-static void save_option_value_in_ctx (gdb::optional<option_def_and_value> &ov);
+static void save_option_value_in_ctx (std::optional<option_def_and_value> &ov);
 
 /* Info passed around when handling completion.  */
 struct parse_option_completion_info
@@ -177,7 +179,7 @@ complete_on_all_options (completion_trac
 /* Parse ARGS, guided by OPTIONS_GROUP.  HAVE_DELIMITER is true if the
    whole ARGS line included the "--" options-terminator delimiter.  */
 
-static gdb::optional<option_def_and_value>
+static std::optional<option_def_and_value>
 parse_option (gdb::array_view<const option_def_group> options_group,
 	      process_options_mode mode,
 	      bool have_delimiter,
@@ -356,42 +358,52 @@ parse_option (gdb::array_view<const opti
 	return option_def_and_value {*match, match_ctx, val};
       }
     case var_uinteger:
-    case var_zuinteger_unlimited:
+    case var_integer:
+    case var_pinteger:
       {
-	if (completion != nullptr)
+	if (completion != nullptr && match->extra_literals != nullptr)
 	  {
+	    /* Convenience to let the user know what the option can
+	       accept.  Make sure there's no common prefix between
+	       "NUMBER" and all the strings when adding new ones,
+	       so that readline doesn't do a partial match.  */
 	    if (**args == '\0')
 	      {
-		/* Convenience to let the user know what the option
-		   can accept.  Note there's no common prefix between
-		   the strings on purpose, so that readline doesn't do
-		   a partial match.  */
 		completion->tracker.add_completion
 		  (make_unique_xstrdup ("NUMBER"));
-		completion->tracker.add_completion
-		  (make_unique_xstrdup ("unlimited"));
+		for (const literal_def *l = match->extra_literals;
+		     l->literal != nullptr;
+		     l++)
+		  completion->tracker.add_completion
+		    (make_unique_xstrdup (l->literal));
 		return {};
 	      }
-	    else if (startswith ("unlimited", *args))
+	    else
 	      {
-		completion->tracker.add_completion
-		  (make_unique_xstrdup ("unlimited"));
-		return {};
+		bool completions = false;
+		for (const literal_def *l = match->extra_literals;
+		     l->literal != nullptr;
+		     l++)
+		  if (startswith (l->literal, *args))
+		    {
+		      completion->tracker.add_completion
+			(make_unique_xstrdup (l->literal));
+		      completions = true;
+		    }
+		if (completions)
+		  return {};
 	      }
 	  }
 
-	if (match->type == var_zuinteger_unlimited)
-	  {
-	    option_value val;
-	    val.integer = parse_cli_var_zuinteger_unlimited (args, false);
-	    return option_def_and_value {*match, match_ctx, val};
-	  }
+	LONGEST v = parse_cli_var_integer (match->type,
+					   match->extra_literals,
+					   args, false);
+	option_value val;
+	if (match->type == var_uinteger)
+	  val.uinteger = v;
 	else
-	  {
-	    option_value val;
-	    val.uinteger = parse_cli_var_uinteger (match->type, args, false);
-	    return option_def_and_value {*match, match_ctx, val};
-	  }
+	  val.integer = v;
+	return option_def_and_value {*match, match_ctx, val};
       }
     case var_enum:
       {
@@ -424,6 +436,35 @@ parse_option (gdb::array_view<const opti
 	val.enumeration = parse_cli_var_enum (args, match->enums);
 	return option_def_and_value {*match, match_ctx, val};
       }
+    case var_color:
+      {
+	if (completion != nullptr)
+	  {
+	    const char *after_arg = skip_to_space (*args);
+	    if (*after_arg == '\0')
+	      {
+		complete_on_color (completion->tracker, *args, *args);
+
+		if (completion->tracker.have_completions ())
+		  return {};
+	      }
+	  }
+
+	if (check_for_argument (args, "--"))
+	  {
+	    /* Treat e.g., "backtrace -entry-values --" as if there
+	       was no argument after "-entry-values".  This makes
+	       parse_cli_var_color throw an error with a suggestion of
+	       what are the valid options.  */
+	    args = nullptr;
+	  }
+
+	option_value val;
+	ui_file_style::color color = parse_cli_var_color (args);
+	ui_file_style::color approx_color = color.approximate (colorsupport ());
+	val.color = approx_color;
+	return option_def_and_value {*match, match_ctx, val};
+      }
     case var_string:
       {
 	if (check_for_argument (args, "--"))
@@ -439,13 +480,85 @@ parse_option (gdb::array_view<const opti
 	  error (_("-%s requires an argument"), match->name);
 
 	option_value val;
-	val.string = xstrdup (str.c_str ());
+	val.string = new std::string (std::move (str));
+	return option_def_and_value {*match, match_ctx, val};
+      }
+
+    case var_filename:
+      {
+	if (check_for_argument (args, "--"))
+	  {
+	    /* Treat e.g., "maint test-options -filename --" as if there
+	       was no argument after "-filename".  */
+	    error (_("-%s requires an argument"), match->name);
+	  }
+
+	const char *arg_start = *args;
+	std::string str = extract_string_maybe_quoted (args);
+
+	/* If we are performing completion, and extracting STR moved ARGS
+	   to the end of the line, then the user is trying to complete the
+	   filename value.
+
+	   If ARGS didn't make it to the end of the line then the filename
+	   value is already complete and the user is trying to complete
+	   something later on the line.  */
+	if (completion != nullptr && **args == '\0')
+	  {
+	    /* Preserve the current custom word point.  If the call to
+	       advance_to_filename_maybe_quoted_complete_word_point below
+	       skips to the end of the command line then the custom word
+	       point will have been updated even though we generate no
+	       completions.
+
+	       However, *ARGS will also have been updated, and the general
+	       option completion code (which we will return too) also
+	       updates the custom word point based on the adjustment made
+	       to *ARGS.
+
+	       And so, if we don't find any completions, we should restore
+	       the custom word point value, this leaves the generic option
+	       completion code free to make its own adjustments.  */
+	    int prev_word_pt = completion->tracker.custom_word_point ();
+
+	    /* From ARG_START move forward to the start of the completion
+	       word, this will skip over any opening quote if there is
+	       one.
+
+	       If the word to complete is fully quoted, i.e. has an
+	       opening and closing quote, then this will skip over the
+	       word entirely and leave WORD pointing to the end of the
+	       input string.  */
+	    const char *word
+	      = advance_to_filename_maybe_quoted_complete_word_point
+	      (completion->tracker, arg_start);
+
+	    if (word == arg_start || *word != '\0')
+	      {
+		filename_maybe_quoted_completer (nullptr, completion->tracker,
+						 arg_start, word);
+
+		if (completion->tracker.have_completions ())
+		  return {};
+	      }
+
+	    /* No completions.  Restore the custom word point.  See the
+	       comment above for why this is needed.  */
+	    completion->tracker.set_custom_word_point (prev_word_pt);
+	  }
+
+	/* Check we did manage to extract something.  */
+	if (*args == arg_start)
+	  error (_("-%s requires an argument"), match->name);
+
+	option_value val;
+	val.string = new std::string (std::move (str));
 	return option_def_and_value {*match, match_ctx, val};
       }
 
     default:
       /* Not yet.  */
-      gdb_assert_not_reached (_("option type not supported"));
+      gdb_assert_not_reached ("option type not supported");
     }
 
   return {};
@@ -486,7 +599,7 @@ complete_options (completion_tracker &tr
 	    }
 	  else if (**args == '-')
 	    {
-	      gdb::optional<option_def_and_value> ov
+	      std::optional<option_def_and_value> ov
 		= parse_option (options_group, mode, have_delimiter,
 				args, &completion_info);
 	      if (!ov && !tracker.have_completions ())
@@ -579,7 +692,7 @@ complete_options (completion_tracker &tr
 /* Save the parsed value in the option's context.  */
 
 static void
-save_option_value_in_ctx (gdb::optional<option_def_and_value> &ov)
+save_option_value_in_ctx (std::optional<option_def_and_value> &ov)
 {
   switch (ov->option.type)
     {
@@ -593,7 +706,8 @@ save_option_value_in_ctx (gdb::optional<
       *ov->option.var_address.uinteger (ov->option, ov->ctx)
 	= ov->value->uinteger;
       break;
-    case var_zuinteger_unlimited:
+    case var_integer:
+    case var_pinteger:
       *ov->option.var_address.integer (ov->option, ov->ctx)
 	= ov->value->integer;
       break;
@@ -601,10 +715,14 @@ save_option_value_in_ctx (gdb::optional<
       *ov->option.var_address.enumeration (ov->option, ov->ctx)
 	= ov->value->enumeration;
       break;
+    case var_color:
+      *ov->option.var_address.color (ov->option, ov->ctx)
+	= ov->value->color;
+      break;
     case var_string:
+    case var_filename:
       *ov->option.var_address.string (ov->option, ov->ctx)
-	= ov->value->string;
-      ov->value->string = nullptr;
+	= std::move (*ov->value->string);
       break;
     default:
       gdb_assert_not_reached ("unhandled option type");
@@ -650,38 +768,77 @@ process_options (const char **args,
     }
 }
 
-/* Helper for build_help.  Return a fragment of a help string showing
-   OPT's possible values.  Returns NULL if OPT doesn't take an
-   argument.  */
+/* Helper for build_help.  Append a fragment of a help string showing
+   OPT's possible values.  LEN_AT_START is the length of HELP at the
+   start of the current line.  This is used when wrapping is
+   needed.  */
 
-static const char *
-get_val_type_str (const option_def &opt, std::string &buffer)
+static void
+append_val_type_str (std::string &help, const option_def &opt,
+		     size_t len_at_start)
 {
   if (!opt.have_argument)
-    return nullptr;
+    return;
 
   switch (opt.type)
     {
     case var_boolean:
-      return "[on|off]";
+      help += " [on|off]";
+      break;
     case var_uinteger:
-    case var_zuinteger_unlimited:
-      return "NUMBER|unlimited";
+    case var_integer:
+    case var_pinteger:
+      {
+	help += " NUMBER";
+	if (opt.extra_literals != nullptr)
+	  for (const literal_def *l = opt.extra_literals;
+	       l->literal != nullptr;
+	       l++)
+	    {
+	      help += '|';
+	      help += l->literal;
+	    }
+      }
+      break;
     case var_enum:
       {
-	buffer = "";
+	help += ' ';
+	/* If wrapping is needed, subsequent lines will be indented
+	   this amount.  */
+	size_t indent = help.length () - len_at_start;
 	for (size_t i = 0; opt.enums[i] != nullptr; i++)
 	  {
 	    if (i != 0)
-	      buffer += "|";
-	    buffer += opt.enums[i];
+	      {
+		size_t new_len = help.length () + 1 + strlen (opt.enums[i]);
+
+		if (new_len - len_at_start >= cli_help_line_length)
+		  {
+		    help += "\n";
+		    len_at_start = help.length ();
+
+		    help.append (indent, ' ');
+		  }
+		help += "|";
+	      }
+	    help += opt.enums[i];
 	  }
-	return buffer.c_str ();
       }
+      break;
+    case var_color:
+      help += ' ';
+      for (size_t i = 0; ui_file_style::basic_color_enums[i]; ++i)
+	help.append (ui_file_style::basic_color_enums[i]).append ("|");
+      help += "NUMBER|#RRGGBB";
+      break;
     case var_string:
-      return "STRING";
+      help += " STRING";
+      break;
+    case var_filename:
+      help += " FILENAME";
+      break;
     default:
-      return nullptr;
+      break;
     }
 }
 
@@ -719,15 +876,11 @@ build_help_option (gdb::array_view<const
       if (o.set_doc == nullptr)
 	continue;
 
+      size_t initial_len = help.length ();
       help += "  -";
       help += o.name;
 
-      const char *val_type_str = get_val_type_str (o, buffer);
-      if (val_type_str != nullptr)
-	{
-	  help += ' ';
-	  help += val_type_str;
-	}
+      append_val_type_str (help, o, initial_len);
       help += "\n";
       append_indented_doc (o.set_doc, help);
       if (o.help_doc != nullptr)
@@ -790,20 +943,31 @@ add_setshow_cmds_for_options (command_cl
 	{
 	  add_setshow_uinteger_cmd (option.name, cmd_class,
 				    option.var_address.uinteger (option, data),
+				    option.extra_literals,
 				    option.set_doc, option.show_doc,
 				    option.help_doc,
 				    nullptr, option.show_cmd_cb,
 				    set_list, show_list);
 	}
-      else if (option.type == var_zuinteger_unlimited)
+      else if (option.type == var_integer)
+	{
+	  add_setshow_integer_cmd (option.name, cmd_class,
+				   option.var_address.integer (option, data),
+				   option.extra_literals,
+				   option.set_doc, option.show_doc,
+				   option.help_doc,
+				   nullptr, option.show_cmd_cb,
+				   set_list, show_list);
+	}
+      else if (option.type == var_pinteger)
 	{
-	  add_setshow_zuinteger_unlimited_cmd
-	    (option.name, cmd_class,
-	     option.var_address.integer (option, data),
-	     option.set_doc, option.show_doc,
-	     option.help_doc,
-	     nullptr, option.show_cmd_cb,
-	     set_list, show_list);
+	  add_setshow_pinteger_cmd (option.name, cmd_class,
+				    option.var_address.integer (option, data),
+				    option.extra_literals,
+				    option.set_doc, option.show_doc,
+				    option.help_doc,
+				    nullptr, option.show_cmd_cb,
+				    set_list, show_list);
 	}
       else if (option.type == var_enum)
 	{
@@ -824,8 +988,17 @@ add_setshow_cmds_for_options (command_cl
 				  nullptr, option.show_cmd_cb,
 				  set_list, show_list);
 	}
+      else if (option.type == var_filename)
+	{
+	  add_setshow_filename_cmd (option.name, cmd_class,
+				    option.var_address.string (option, data),
+				    option.set_doc, option.show_doc,
+				    option.help_doc,
+				    nullptr, option.show_cmd_cb,
+				    set_list, show_list);
+	}
       else
-	gdb_assert_not_reached (_("option type not handled"));
+	gdb_assert_not_reached ("option type not handled");
     }
 }
 
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-option.h ./gdb/cli/cli-option.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-option.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-option.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI options framework, for GDB.
 
-   Copyright (C) 2017-2020 Free Software Foundation, Inc.
+   Copyright (C) 2017-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,10 +17,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/>.  */
 
-#ifndef CLI_OPTION_H
-#define CLI_OPTION_H 1
+#ifndef GDB_CLI_CLI_OPTION_H
+#define GDB_CLI_CLI_OPTION_H
 
-#include "gdbsupport/gdb_optional.h"
+#include <optional>
 #include "gdbsupport/array-view.h"
 #include "completer.h"
 #include <string>
@@ -49,12 +49,13 @@ protected:
      used to create the option's "set/show" commands.  */
   constexpr option_def (const char *name_,
 			var_types var_type_,
+			const literal_def *extra_literals_,
 			erased_get_var_address_ftype *erased_get_var_address_,
 			show_value_ftype *show_cmd_cb_,
 			const char *set_doc_,
 			const char *show_doc_,
 			const char *help_doc_)
-    : name (name_), type (var_type_),
+    : name (name_), type (var_type_), extra_literals (extra_literals_),
       erased_get_var_address (erased_get_var_address_),
       var_address {},
       show_cmd_cb (show_cmd_cb_),
@@ -68,6 +69,9 @@ public:
   /* The option's type.  */
   var_types type;
 
+  /* Extra literals, such as `unlimited', accepted in lieu of a number.  */
+  const literal_def *extra_literals;
+
   /* A function that gets the controlling variable's address, type
      erased.  */
   erased_get_var_address_ftype *erased_get_var_address;
@@ -86,7 +90,8 @@ public:
       unsigned int *(*uinteger) (const option_def &, void *ctx);
       int *(*integer) (const option_def &, void *ctx);
       const char **(*enumeration) (const option_def &, void *ctx);
-      char **(*string) (const option_def &, void *ctx);
+      std::string *(*string) (const option_def &, void *ctx);
+      ui_file_style::color *(*color) (const option_def &, void *ctx);
     }
   var_address;
 
@@ -160,7 +165,7 @@ struct boolean_option_def : option_def
 		      const char *set_doc_,
 		      const char *show_doc_ = nullptr,
 		      const char *help_doc_ = nullptr)
-    : option_def (long_option_, var_boolean,
+    : option_def (long_option_, var_boolean, nullptr,
 		  (erased_get_var_address_ftype *) get_var_address_cb_,
 		  show_cmd_cb_,
 		  set_doc_, show_doc_, help_doc_)
@@ -207,37 +212,59 @@ struct uinteger_option_def : option_def
 {
   uinteger_option_def (const char *long_option_,
 		       unsigned int *(*get_var_address_cb_) (Context *),
+		       const literal_def *extra_literals_,
 		       show_value_ftype *show_cmd_cb_,
 		       const char *set_doc_,
 		       const char *show_doc_ = nullptr,
 		       const char *help_doc_ = nullptr)
-    : option_def (long_option_, var_uinteger,
+    : option_def (long_option_, var_uinteger, extra_literals_,
 		  (erased_get_var_address_ftype *) get_var_address_cb_,
 		  show_cmd_cb_,
 		  set_doc_, show_doc_, help_doc_)
   {
     var_address.uinteger = detail::get_var_address<unsigned int, Context>;
   }
+
+  uinteger_option_def (const char *long_option_,
+		       unsigned int *(*get_var_address_cb_) (Context *),
+		       show_value_ftype *show_cmd_cb_,
+		       const char *set_doc_,
+		       const char *show_doc_ = nullptr,
+		       const char *help_doc_ = nullptr)
+    : uinteger_option_def (long_option_, get_var_address_cb_, nullptr,
+			   show_cmd_cb_, set_doc_, show_doc_, help_doc_)
+  { /* Nothing.  */ }
 };
 
-/* A var_zuinteger_unlimited command line option.  */
+/* A var_pinteger command line option.  */
 
 template<typename Context>
-struct zuinteger_unlimited_option_def : option_def
+struct pinteger_option_def : option_def
 {
-  zuinteger_unlimited_option_def (const char *long_option_,
-				  int *(*get_var_address_cb_) (Context *),
-				  show_value_ftype *show_cmd_cb_,
-				  const char *set_doc_,
-				  const char *show_doc_ = nullptr,
-				  const char *help_doc_ = nullptr)
-    : option_def (long_option_, var_zuinteger_unlimited,
+  pinteger_option_def (const char *long_option_,
+		       int *(*get_var_address_cb_) (Context *),
+		       const literal_def *extra_literals_,
+		       show_value_ftype *show_cmd_cb_,
+		       const char *set_doc_,
+		       const char *show_doc_ = nullptr,
+		       const char *help_doc_ = nullptr)
+    : option_def (long_option_, var_pinteger, extra_literals_,
 		  (erased_get_var_address_ftype *) get_var_address_cb_,
 		  show_cmd_cb_,
 		  set_doc_, show_doc_, help_doc_)
   {
     var_address.integer = detail::get_var_address<int, Context>;
   }
+
+  pinteger_option_def (const char *long_option_,
+		       int *(*get_var_address_cb_) (Context *),
+		       show_value_ftype *show_cmd_cb_,
+		       const char *set_doc_,
+		       const char *show_doc_ = nullptr,
+		       const char *help_doc_ = nullptr)
+    : pinteger_option_def (long_option_, get_var_address_cb_, nullptr,
+			   show_cmd_cb_, set_doc_, show_doc_, help_doc_)
+  { /* Nothing.  */ }
 };
 
 /* An var_enum command line option.  */
@@ -252,7 +279,7 @@ struct enum_option_def : option_def
 		   const char *set_doc_,
 		   const char *show_doc_ = nullptr,
 		   const char *help_doc_ = nullptr)
-    : option_def (long_option_, var_enum,
+    : option_def (long_option_, var_enum, nullptr,
 		  (erased_get_var_address_ftype *) get_var_address_cb_,
 		  show_cmd_cb_,
 		  set_doc_, show_doc_, help_doc_)
@@ -268,17 +295,57 @@ template<typename Context>
 struct string_option_def : option_def
 {
   string_option_def (const char *long_option_,
-		     char **(*get_var_address_cb_) (Context *),
+		     std::string *(*get_var_address_cb_) (Context *),
 		     show_value_ftype *show_cmd_cb_,
 		     const char *set_doc_,
 		     const char *show_doc_ = nullptr,
 		     const char *help_doc_ = nullptr)
-    : option_def (long_option_, var_string,
+    : option_def (long_option_, var_string, nullptr,
 		  (erased_get_var_address_ftype *) get_var_address_cb_,
 		  show_cmd_cb_,
 		  set_doc_, show_doc_, help_doc_)
   {
-    var_address.enumeration = detail::get_var_address<const char *, Context>;
+    var_address.string = detail::get_var_address<std::string, Context>;
+  }
+};
+
+/* A var_filename command line option.  */
+
+template<typename Context>
+struct filename_option_def : option_def
+{
+  filename_option_def (const char *long_option_,
+		       std::string *(*get_var_address_cb_) (Context *),
+		       show_value_ftype *show_cmd_cb_,
+		       const char *set_doc_,
+		       const char *show_doc_ = nullptr,
+		       const char *help_doc_ = nullptr)
+    : option_def (long_option_, var_filename, nullptr,
+		  (erased_get_var_address_ftype *) get_var_address_cb_,
+		  show_cmd_cb_,
+		  set_doc_, show_doc_, help_doc_)
+  {
+    var_address.string = detail::get_var_address<std::string, Context>;
+  }
+};
+
+/* A var_color command line option.  */
+
+template<typename Context>
+struct color_option_def : option_def
+{
+  color_option_def (const char *long_option_,
+		    ui_file_style::color *(*get_var_address_cb_) (Context *),
+		    show_value_ftype *show_cmd_cb_,
+		    const char *set_doc_,
+		    const char *show_doc_ = nullptr,
+		    const char *help_doc_ = nullptr)
+    : option_def (long_option_, var_color, nullptr,
+		  (erased_get_var_address_ftype *) get_var_address_cb_,
+		  show_cmd_cb_,
+		  set_doc_, show_doc_, help_doc_)
+  {
+    var_address.color = detail::get_var_address<ui_file_style::color, Context>;
   }
 };
 
@@ -353,4 +420,4 @@ extern void add_setshow_cmds_for_options
 } /* namespace option */
 } /* namespace gdb */
 
-#endif /* CLI_OPTION_H */
+#endif /* GDB_CLI_CLI_OPTION_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.20200303/gdb/cli/cli-script.c ./gdb/cli/cli-script.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-script.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-script.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GDB CLI command scripting.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,13 +17,13 @@
    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-top.h"
 #include "value.h"
-#include "language.h"		/* For value_true */
 #include <ctype.h>
 
 #include "ui-out.h"
 #include "top.h"
+#include "ui.h"
 #include "breakpoint.h"
 #include "tracepoint.h"
 #include "cli/cli-cmds.h"
@@ -34,7 +34,7 @@
 #include "extension.h"
 #include "interps.h"
 #include "compile/compile.h"
-#include "gdbsupport/gdb_string_view.h"
+#include <string_view>
 #include "python/python.h"
 #include "guile/guile.h"
 
@@ -44,14 +44,17 @@
 
 static enum command_control_type
 recurse_read_control_structure
-    (gdb::function_view<const char * ()> read_next_line_func,
+    (read_next_line_ftype read_next_line_func,
      struct command_line *current_cmd,
      gdb::function_view<void (const char *)> validator);
 
 static void do_define_command (const char *comname, int from_tty,
 			       const counted_command_line *commands);
 
-static const char *read_next_line ();
+static void do_document_command (const char *comname, int from_tty,
+				 const counted_command_line *commands);
+
+static const char *read_next_line (std::string &buffer);
 
 /* Level of control structure when reading.  */
 static int control_level;
@@ -71,6 +74,9 @@ static cmd_list_element *if_cmd_element
 /* Command element for the 'define' command.  */
 static cmd_list_element *define_cmd_element = nullptr;
 
+/* Command element for the 'document' command.  */
+static cmd_list_element *document_cmd_element = nullptr;
+
 /* Structure for arguments to user defined functions.  */
 
 class user_args
@@ -96,7 +102,7 @@ private:
   std::string m_command_line;
 
   /* The arguments.  Each element points inside M_COMMAND_LINE.  */
-  std::vector<gdb::string_view> m_args;
+  std::vector<std::string_view> m_args;
 };
 
 /* The stack of arguments passed to user defined functions.  We need a
@@ -139,6 +145,7 @@ multi_line_command_p (enum command_contr
     case python_control:
     case guile_control:
     case define_control:
+    case document_control:
       return 1;
     default:
       return 0;
@@ -148,7 +155,7 @@ multi_line_command_p (enum command_contr
 /* Allocate, initialize a new command line structure for one of the
    control commands (if/while).  */
 
-static struct command_line *
+static command_line_up
 build_command_line (enum command_control_type type, const char *args)
 {
   if (args == NULL || *args == '\0')
@@ -159,10 +166,12 @@ build_command_line (enum command_control
 	error (_("while command requires an argument."));
       else if (type == define_control)
 	error (_("define command requires an argument."));
+      else if (type == document_control)
+	error (_("document command requires an argument."));
     }
   gdb_assert (args != NULL);
 
-  return new struct command_line (type, xstrdup (args));
+  return command_line_up (new command_line (type, xstrdup (args)));
 }
 
 /* Build and return a new command structure for the control commands
@@ -172,7 +181,7 @@ counted_command_line
 get_command_line (enum command_control_type type, const char *arg)
 {
   /* Allocate and build a new command line structure.  */
-  counted_command_line cmd (build_command_line (type, arg),
+  counted_command_line cmd (build_command_line (type, arg).release (),
 			    command_lines_deleter ());
 
   /* Read in the body of this command.  */
@@ -210,7 +219,7 @@ print_command_lines (struct ui_out *uiou
 	}
 
       /* loop_continue to jump to the start of a while loop, print it
-         and continue. */
+	 and continue. */
       if (list->control_type == continue_control)
 	{
 	  uiout->field_string (NULL, "loop_continue");
@@ -392,10 +401,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);
@@ -417,33 +422,16 @@ execute_control_commands (struct command
 
 std::string
 execute_control_commands_to_string (struct command_line *commands,
-				    int from_tty)
+				    int from_tty, bool term_out)
 {
-  /* GDB_STDOUT should be better already restored during these
-     restoration callbacks.  */
-  set_batch_flag_and_restore_page_info save_page_info;
+  std::string result;
 
-  string_file str_file;
-
-  {
-    current_uiout->redirect (&str_file);
-    ui_out_redirect_pop redirect_popper (current_uiout);
-
-    scoped_restore save_stdout
-      = make_scoped_restore (&gdb_stdout, &str_file);
-    scoped_restore save_stderr
-      = make_scoped_restore (&gdb_stderr, &str_file);
-    scoped_restore save_stdlog
-      = make_scoped_restore (&gdb_stdlog, &str_file);
-    scoped_restore save_stdtarg
-      = make_scoped_restore (&gdb_stdtarg, &str_file);
-    scoped_restore save_stdtargerr
-      = make_scoped_restore (&gdb_stdtargerr, &str_file);
-
-    execute_control_commands (commands, from_tty);
-  }
+  execute_fn_to_string (result, [&] ()
+    {
+      execute_control_commands (commands, from_tty);
+    }, term_out);
 
-  return std::move (str_file.string ());
+  return result;
 }
 
 void
@@ -464,6 +452,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);
 }
 
@@ -503,14 +496,14 @@ print_command_trace (const char *fmt, ..
     return;
 
   for (i=0; i < command_nest_depth; i++)
-    printf_filtered ("+");
+    gdb_printf ("+");
 
   va_list args;
 
   va_start (args, fmt);
-  vprintf_filtered (fmt, args);
+  gdb_vprintf (fmt, args);
   va_end (args);
-  puts_filtered ("\n");
+  gdb_puts ("\n");
 }
 
 /* Helper for execute_control_command.  */
@@ -519,8 +512,6 @@ static enum command_control_type
 execute_control_command_1 (struct command_line *cmd, int from_tty)
 {
   struct command_line *current;
-  struct value *val;
-  struct value *val_mark;
   int loop;
   enum command_control_type ret;
 
@@ -543,7 +534,7 @@ execute_control_command_1 (struct comman
       print_command_trace ("loop_continue");
 
       /* Return for "continue", and "break" so we can either
-         continue the loop at the top, or break out.  */
+	 continue the loop at the top, or break out.  */
       ret = cmd->control_type;
       break;
 
@@ -551,7 +542,7 @@ execute_control_command_1 (struct comman
       print_command_trace ("loop_break");
 
       /* Return for "continue", and "break" so we can either
-         continue the loop at the top, or break out.  */
+	 continue the loop at the top, or break out.  */
       ret = cmd->control_type;
       break;
 
@@ -569,15 +560,16 @@ execute_control_command_1 (struct comman
 	/* Keep iterating so long as the expression is true.  */
 	while (loop == 1)
 	  {
-	    int cond_result;
+	    bool cond_result;
 
 	    QUIT;
 
 	    /* Evaluate the expression.  */
-	    val_mark = value_mark ();
-	    val = evaluate_expression (expr.get ());
-	    cond_result = value_true (val);
-	    value_free_to_mark (val_mark);
+	    {
+	      scoped_value_mark mark;
+	      value *val = expr->evaluate ();
+	      cond_result = value_true (val);
+	    }
 
 	    /* If the value is false, then break out of the loop.  */
 	    if (!cond_result)
@@ -628,16 +620,17 @@ execute_control_command_1 (struct comman
 	ret = simple_control;
 
 	/* Evaluate the conditional.  */
-	val_mark = value_mark ();
-	val = evaluate_expression (expr.get ());
+	{
+	  scoped_value_mark mark;
+	  value *val = expr->evaluate ();
 
-	/* Choose which arm to take commands from based on the value
-	   of the conditional expression.  */
-	if (value_true (val))
-	  current = cmd->body_list_0.get ();
-	else if (cmd->body_list_1 != nullptr)
-	  current = cmd->body_list_1.get ();
-	value_free_to_mark (val_mark);
+	  /* Choose which arm to take commands from based on the value
+	     of the conditional expression.  */
+	  if (value_true (val))
+	    current = cmd->body_list_0.get ();
+	  else if (cmd->body_list_1 != nullptr)
+	    current = cmd->body_list_1.get ();
+	}
 
 	/* Execute commands in the given arm.  */
 	while (current)
@@ -667,9 +660,13 @@ execute_control_command_1 (struct comman
       }
 
     case compile_control:
+#if defined(HAVE_COMPILE)
       eval_compile_command (cmd, NULL, cmd->control_u.compile.scope,
 			    cmd->control_u.compile.scope_data);
       ret = simple_control;
+#else
+      error (_("compile support has not been compiled into gdb"));
+#endif
       break;
 
     case define_control:
@@ -678,6 +675,12 @@ execute_control_command_1 (struct comman
       ret = simple_control;
       break;
 
+    case document_control:
+      print_command_trace ("document %s", cmd->line);
+      do_document_command (cmd->line, 0, &cmd->body_list_0);
+      ret = simple_control;
+      break;
+
     case python_control:
     case guile_control:
       {
@@ -895,7 +898,7 @@ user_args::insert_args (const char *line
    from stdin.  */
 
 static const char *
-read_next_line ()
+read_next_line (std::string &buffer)
 {
   struct ui *ui = current_ui;
   char *prompt_ptr, control_prompt[256];
@@ -918,7 +921,7 @@ read_next_line ()
   else
     prompt_ptr = NULL;
 
-  return command_line_input (prompt_ptr, "commands");
+  return command_line_input (buffer, prompt_ptr, "commands");
 }
 
 /* Given an input line P, skip the command and return a pointer to the
@@ -941,7 +944,7 @@ line_first_arg (const char *p)
    Otherwise, only "end" is recognized.  */
 
 static enum misc_command_type
-process_next_line (const char *p, struct command_line **command,
+process_next_line (const char *p, command_line_up *command,
 		   int parse_commands,
 		   gdb::function_view<void (const char *)> validator)
 
@@ -974,7 +977,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';
 
@@ -1018,6 +1021,8 @@ process_next_line (const char *p, struct
 	*command = build_command_line (commands_control, line_first_arg (p));
       else if (cmd == define_cmd_element)
 	*command = build_command_line (define_control, line_first_arg (p));
+      else if (cmd == document_cmd_element)
+	*command = build_command_line (document_control, line_first_arg (p));
       else if (cmd == python_cmd_element && !inline_cmd)
 	{
 	  /* Note that we ignore the inline "python command" form
@@ -1037,9 +1042,9 @@ process_next_line (const char *p, struct
 	  *command = build_command_line (guile_control, "");
 	}
       else if (p_end - p == 10 && startswith (p, "loop_break"))
-	*command = new struct command_line (break_control);
+	*command = command_line_up (new command_line (break_control));
       else if (p_end - p == 13 && startswith (p, "loop_continue"))
-	*command = new struct command_line (continue_control);
+	*command = command_line_up (new command_line (continue_control));
       else
 	not_handled = 1;
     }
@@ -1047,22 +1052,12 @@ process_next_line (const char *p, struct
   if (!parse_commands || not_handled)
     {
       /* A normal command.  */
-      *command = new struct command_line (simple_control,
-					  savestring (p, p_end - p));
+      *command = command_line_up (new command_line (simple_control,
+						    savestring (p, p_end - p)));
     }
 
   if (validator)
-    {
-      try
-	{
-	  validator ((*command)->line);
-	}
-      catch (const gdb_exception &ex)
-	{
-	  free_command_lines (command);
-	  throw;
-	}
-    }
+    validator ((*command)->line);
 
   /* Nothing special.  */
   return ok_command;
@@ -1073,16 +1068,17 @@ process_next_line (const char *p, struct
    obtain lines of the command.  */
 
 static enum command_control_type
-recurse_read_control_structure (gdb::function_view<const char * ()> read_next_line_func,
+recurse_read_control_structure (read_next_line_ftype read_next_line_func,
 				struct command_line *current_cmd,
 				gdb::function_view<void (const char *)> validator)
 {
   enum misc_command_type val;
   enum command_control_type ret;
-  struct command_line *child_tail, *next;
+  struct command_line *child_tail;
   counted_command_line *current_body = &current_cmd->body_list_0;
+  command_line_up next;
 
-  child_tail = NULL;
+  child_tail = nullptr;
 
   /* Sanity checks.  */
   if (current_cmd->control_type == simple_control)
@@ -1093,8 +1089,9 @@ recurse_read_control_structure (gdb::fun
     {
       dont_repeat ();
 
-      next = NULL;
-      val = process_next_line (read_next_line_func (), &next, 
+      std::string buffer;
+      next = nullptr;
+      val = process_next_line (read_next_line_func (buffer), &next,
 			       current_cmd->control_type != python_control
 			       && current_cmd->control_type != guile_control
 			       && current_cmd->control_type != compile_control,
@@ -1126,7 +1123,7 @@ recurse_read_control_structure (gdb::fun
 	      && current_body == &current_cmd->body_list_0)
 	    {
 	      current_body = &current_cmd->body_list_1;
-	      child_tail = NULL;
+	      child_tail = nullptr;
 	      continue;
 	    }
 	  else
@@ -1136,21 +1133,26 @@ recurse_read_control_structure (gdb::fun
 	    }
 	}
 
-      if (child_tail)
+      /* Transfer ownership of NEXT to the command's body list.  */
+      if (child_tail != nullptr)
 	{
-	  child_tail->next = next;
+	  child_tail->next = next.release ();
+	  child_tail = child_tail->next;
 	}
       else
-	*current_body = counted_command_line (next, command_lines_deleter ());
-
-      child_tail = next;
+	{
+	  child_tail = next.get ();
+	  *current_body = counted_command_line (next.release (),
+						command_lines_deleter ());
+	}
 
       /* If the latest line is another control structure, then recurse
-         on it.  */
-      if (multi_line_command_p (next->control_type))
+	 on it.  */
+      if (multi_line_command_p (child_tail->control_type))
 	{
 	  control_level++;
-	  ret = recurse_read_control_structure (read_next_line_func, next,
+	  ret = recurse_read_control_structure (read_next_line_func,
+						child_tail,
 						validator);
 	  control_level--;
 
@@ -1179,7 +1181,7 @@ counted_command_line
 read_command_lines (const char *prompt_arg, int from_tty, int parse_commands,
 		    gdb::function_view<void (const char *)> validator)
 {
-  if (from_tty && input_interactive_p (current_ui))
+  if (from_tty && current_ui->input_interactive_p ())
     {
       if (deprecated_readline_begin_hook)
 	{
@@ -1206,7 +1208,7 @@ read_command_lines (const char *prompt_a
 				   validator);
     }
 
-  if (from_tty && input_interactive_p (current_ui)
+  if (from_tty && current_ui->input_interactive_p ()
       && deprecated_readline_end_hook)
     {
       (*deprecated_readline_end_hook) ();
@@ -1218,14 +1220,15 @@ read_command_lines (const char *prompt_a
    obtained using READ_NEXT_LINE_FUNC.  */
 
 counted_command_line
-read_command_lines_1 (gdb::function_view<const char * ()> read_next_line_func,
+read_command_lines_1 (read_next_line_ftype read_next_line_func,
 		      int parse_commands,
 		      gdb::function_view<void (const char *)> validator)
 {
-  struct command_line *tail, *next;
+  struct command_line *tail;
   counted_command_line head (nullptr, command_lines_deleter ());
   enum command_control_type ret;
   enum misc_command_type val;
+  command_line_up next;
 
   control_level = 0;
   tail = NULL;
@@ -1233,7 +1236,9 @@ read_command_lines_1 (gdb::function_view
   while (1)
     {
       dont_repeat ();
-      val = process_next_line (read_next_line_func (), &next, parse_commands,
+
+      std::string buffer;
+      val = process_next_line (read_next_line_func (buffer), &next, parse_commands,
 			       validator);
 
       /* Ignore blank lines or comments.  */
@@ -1255,7 +1260,7 @@ read_command_lines_1 (gdb::function_view
       if (multi_line_command_p (next->control_type))
 	{
 	  control_level++;
-	  ret = recurse_read_control_structure (read_next_line_func, next,
+	  ret = recurse_read_control_structure (read_next_line_func, next.get (),
 						validator);
 	  control_level--;
 
@@ -1263,15 +1268,18 @@ read_command_lines_1 (gdb::function_view
 	    break;
 	}
 
+      /* Transfer ownership of NEXT to the HEAD list.  */
       if (tail)
 	{
-	  tail->next = next;
+	  tail->next = next.release ();
+	  tail = tail->next;
 	}
       else
 	{
-	  head = counted_command_line (next, command_lines_deleter ());
+	  tail = next.get ();
+	  head = counted_command_line (next.release (),
+				       command_lines_deleter ());
 	}
-      tail = next;
     }
 
   dont_repeat ();
@@ -1331,11 +1339,11 @@ 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);
-      if (c->prefixlist == NULL)
+      c = lookup_cmd (&tem, cmdlist, "", NULL, 0, 1);
+      if (!c->is_prefix ())
 	error (_("\"%s\" is not a prefix command."), prefix.c_str ());
 
-      list = c->prefixlist;
+      list = c->subcommands;
       *comname = last_word;
     }
 
@@ -1373,7 +1381,7 @@ do_define_command (const char *comname,
       CMD_POST_HOOK
     };
   struct cmd_list_element *c, *newc, *hookc = 0, **list;
-  const char *tem, *comfull;
+  const char *comfull;
   int  hook_type      = CMD_NO_HOOK;
   int  hook_name_size = 0;
    
@@ -1385,11 +1393,7 @@ do_define_command (const char *comname,
   comfull = comname;
   list = validate_comname (&comname);
 
-  /* Look it up, and verify that we got an exact match.  */
-  tem = comname;
-  c = lookup_cmd (&tem, *list, "", -1, 1);
-  if (c && strcmp (comname, c->name) != 0)
-    c = 0;
+  c = lookup_cmd_exact (comname, *list);
 
   if (c && commands == nullptr)
     {
@@ -1400,7 +1404,7 @@ do_define_command (const char *comname,
 	  /* if C is a prefix command that was previously defined,
 	     tell the user its subcommands will be kept, and ask
 	     if ok to redefine the command.  */
-	  if (c->prefixlist != nullptr)
+	  if (c->is_prefix ())
 	    q = (c->user_commands.get () == nullptr
 		 || query (_("Keeping subcommands of prefix command \"%s\".\n"
 			     "Redefine command \"%s\"? "), c->name, c->name));
@@ -1430,11 +1434,9 @@ do_define_command (const char *comname,
 
   if (hook_type != CMD_NO_HOOK)
     {
-      /* 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);
-      if (hookc && strcmp (comname + hook_name_size, hookc->name) != 0)
-	hookc = 0;
+      /* Look up cmd it hooks.  */
+      hookc = lookup_cmd_exact (comname + hook_name_size, *list,
+				/* ignore_help_classes = */ false);
       if (!hookc && commands == nullptr)
 	{
 	  warning (_("Your new `%s' command does not "
@@ -1458,9 +1460,8 @@ do_define_command (const char *comname,
     cmds = *commands;
 
   {
-    struct cmd_list_element **c_prefixlist
-      = c == nullptr ? nullptr : c->prefixlist;
-    const char *c_prefixname = c == nullptr ? nullptr : c->prefixname;
+    struct cmd_list_element **c_subcommands
+      = c == nullptr ? nullptr : c->subcommands;
 
     newc = add_cmd (comname, class_user, user_defined_command,
 		    (c != nullptr && c->theclass == class_user)
@@ -1469,10 +1470,9 @@ do_define_command (const char *comname,
 
     /* If we define or re-define a command that was previously defined
        as a prefix, keep the prefix information.  */
-    if (c_prefixlist != nullptr)
+    if (c_subcommands != nullptr)
       {
-	newc->prefixlist = c_prefixlist;
-	newc->prefixname = c_prefixname;
+	newc->subcommands = c_subcommands;
 	/* allow_unknown: see explanation in equivalent logic in
 	   define_prefix_command ().  */
 	newc->allow_unknown = newc->user_commands.get () != nullptr;
@@ -1484,20 +1484,20 @@ do_define_command (const char *comname,
   if (hookc)
     {
       switch (hook_type)
-        {
-        case CMD_PRE_HOOK:
-          hookc->hook_pre  = newc;  /* Target gets hooked.  */
-          newc->hookee_pre = hookc; /* We are marked as hooking target cmd.  */
-          break;
-        case CMD_POST_HOOK:
-          hookc->hook_post  = newc;  /* Target gets hooked.  */
-          newc->hookee_post = hookc; /* We are marked as hooking
+	{
+	case CMD_PRE_HOOK:
+	  hookc->hook_pre  = newc;  /* Target gets hooked.  */
+	  newc->hookee_pre = hookc; /* We are marked as hooking target cmd.  */
+	  break;
+	case CMD_POST_HOOK:
+	  hookc->hook_post  = newc;  /* Target gets hooked.  */
+	  newc->hookee_post = hookc; /* We are marked as hooking
 					target cmd.  */
-          break;
-        default:
-          /* Should never come here as hookc would be 0.  */
-	  internal_error (__FILE__, __LINE__, _("bad switch"));
-        }
+	  break;
+	default:
+	  /* Should never come here as hookc would be 0.  */
+	  internal_error (_("bad switch"));
+	}
     }
 }
 
@@ -1507,28 +1507,52 @@ define_command (const char *comname, int
   do_define_command (comname, from_tty, nullptr);
 }
 
+/* Document a user-defined command or user defined alias.  If COMMANDS is NULL,
+   then this is a top-level call and the document will be read using
+   read_command_lines.  Otherwise, it is a "document" command in an existing
+   command and the commands are provided.  */
 static void
-document_command (const char *comname, int from_tty)
+do_document_command (const char *comname, int from_tty,
+		     const counted_command_line *commands)
 {
-  struct cmd_list_element *c, **list;
-  const char *tem;
+  struct cmd_list_element *alias, *prefix_cmd, *c;
   const char *comfull;
 
   comfull = comname;
-  list = validate_comname (&comname);
+  validate_comname (&comname);
 
-  tem = comname;
-  c = lookup_cmd (&tem, *list, "", 0, 1);
+  lookup_cmd_composition (comfull, &alias, &prefix_cmd, &c);
+  if (c == nullptr)
+    error (_("Undefined command: \"%s\"."), comfull);
+  else if (c == CMD_LIST_AMBIGUOUS)
+    error (_("Ambiguous command: \"%s\"."), comfull);
 
-  if (c->theclass != class_user)
-    error (_("Command \"%s\" is built-in."), comfull);
+  if (c->theclass != class_user
+      && (alias == nullptr || alias->theclass != class_alias))
+    {
+      if (alias == nullptr)
+	error (_("Command \"%s\" is built-in."), comfull);
+      else
+	error (_("Alias \"%s\" is built-in."), comfull);
+    }
+
+  /* If we found an alias of class_alias, the user is documenting this
+     user-defined alias.  */
+  if (alias != nullptr)
+    c = alias;
+
+  counted_command_line doclines;
 
-  std::string prompt = string_printf ("Type documentation for \"%s\".",
-				      comfull);
-  counted_command_line doclines = read_command_lines (prompt.c_str (),
-						      from_tty, 0, 0);
+  if (commands == nullptr)
+    {
+      std::string prompt
+	= string_printf ("Type documentation for \"%s\".", comfull);
+      doclines = read_command_lines (prompt.c_str (), from_tty, 0, 0);
+    }
+  else
+    doclines = *commands;
 
-  if (c->doc)
+  if (c->doc_allocated)
     xfree ((char *) c->doc);
 
   {
@@ -1550,31 +1574,33 @@ document_command (const char *comname, i
       }
 
     c->doc = doc;
+    c->doc_allocated = 1;
   }
 }
 
+static void
+document_command (const char *comname, int from_tty)
+{
+  do_document_command (comname, from_tty, nullptr);
+}
+
 /* Implementation of the "define-prefix" command.  */
 
 static void
 define_prefix_command (const char *comname, int from_tty)
 {
   struct cmd_list_element *c, **list;
-  const char *tem;
   const char *comfull;
 
   comfull = comname;
   list = validate_comname (&comname);
 
-  /* Look it up, and verify that we got an exact match.  */
-  tem = comname;
-  c = lookup_cmd (&tem, *list, "", -1, 1);
-  if (c != nullptr && strcmp (comname, c->name) != 0)
-    c = nullptr;
+  c = lookup_cmd_exact (comname, *list);
 
   if (c != nullptr && c->theclass != class_user)
     error (_("Command \"%s\" is built-in."), comfull);
 
-  if (c != nullptr && c->prefixlist != nullptr)
+  if (c != nullptr && c->is_prefix ())
     {
       /* c is already a user defined prefix command.  */
       return;
@@ -1588,11 +1614,10 @@ define_prefix_command (const char *comna
 		   xstrdup ("User-defined."), list);
     }
 
-  /* Allocate the c->prefixlist, which marks the command as a prefix
+  /* Allocate the c->subcommands, which marks the command as a prefix
      command.  */
-  c->prefixlist = new struct cmd_list_element*;
-  *(c->prefixlist) = nullptr;
-  c->prefixname = xstrprintf ("%s ", comfull);
+  c->subcommands = new struct cmd_list_element*;
+  *(c->subcommands) = nullptr;
   /* If the prefix command C is not a command, then it must be followed
      by known subcommands.  Otherwise, if C is also a normal command,
      it can be followed by C args that must not cause a 'subcommand'
@@ -1600,6 +1625,65 @@ define_prefix_command (const char *comna
   c->allow_unknown = c->user_commands.get () != nullptr;
 }
 
+/* See cli/cli-script.h.  */
+
+bool
+commands_equal (const command_line *a, const command_line *b)
+{
+  if ((a == nullptr) != (b == nullptr))
+    return false;
+
+  while (a != nullptr)
+    {
+      /* We are either at the end of both command lists, or there's
+	 another command in both lists.  */
+      if ((a->next == nullptr) != (b->next == nullptr))
+	return false;
+
+      /* There's a command line for both, or neither.  */
+      if ((a->line == nullptr) != (b->line == nullptr))
+	return false;
+
+      /* Check control_type matches.  */
+      if (a->control_type != b->control_type)
+	return false;
+
+      if (a->control_type == compile_control)
+	{
+	  if (a->control_u.compile.scope != b->control_u.compile.scope)
+	    return false;
+
+	  /* This is where we "fail safe".  The scope_data is a 'void *'
+	     pointer which changes in meaning based on the value of
+	     'scope'.  It is possible that two different 'void *' pointers
+	     could point to the equal scope data, however, we just assume
+	     that if the pointers are different, then the scope_data is
+	     different.  This could be improved in the future.  */
+	  if (a->control_u.compile.scope_data
+	      != b->control_u.compile.scope_data)
+	    return false;
+	}
+
+      /* Check lines are identical.  */
+      if (a->line != nullptr && strcmp (a->line, b->line) != 0)
+	return false;
+
+      /* Check body_list_0.  */
+      if (!commands_equal (a->body_list_0.get (), b->body_list_0.get ()))
+	return false;
+
+      /* Check body_list_1.  */
+      if (!commands_equal (a->body_list_1.get (), b->body_list_1.get ()))
+	return false;
+
+      /* Move to the next element in each chain.  */
+      a = a->next;
+      b = b->next;
+    }
+
+  return true;
+}
+
 
 /* Used to implement source_command.  */
 
@@ -1607,7 +1691,7 @@ void
 script_from_file (FILE *stream, const char *file)
 {
   if (stream == NULL)
-    internal_error (__FILE__, __LINE__, _("called with NULL file pointer!"));
+    internal_error (_("called with NULL file pointer!"));
 
   scoped_restore restore_line_number
     = make_scoped_restore (&source_line_number, 0);
@@ -1644,42 +1728,42 @@ show_user_1 (struct cmd_list_element *c,
     {
       struct command_line *cmdlines = c->user_commands.get ();
 
-      fprintf_filtered (stream, "User %scommand \"",
-			c->prefixlist == NULL ? "" : "prefix ");
-      fprintf_styled (stream, title_style.style (), "%s%s",
+      gdb_printf (stream, "User %scommand \"",
+		  c->is_prefix () ? "prefix" : "");
+      fprintf_styled (stream, command_style.style (), "%s%s",
 		      prefix, name);
-      fprintf_filtered (stream, "\":\n");
+      gdb_printf (stream, "\":\n");
       if (cmdlines)
 	{
 	  print_command_lines (current_uiout, cmdlines, 1);
-	  fputs_filtered ("\n", stream);
+	  gdb_puts ("\n", stream);
 	}
     }
 
-  if (c->prefixlist != NULL)
+  if (c->is_prefix ())
     {
-      const char *prefixname = c->prefixname;
+      const std::string prefixname = c->prefixname ();
 
-      for (c = *c->prefixlist; c != NULL; c = c->next)
-	if (c->theclass == class_user || c->prefixlist != NULL)
-	  show_user_1 (c, prefixname, c->name, gdb_stdout);
+      for (c = *c->subcommands; c != NULL; c = c->next)
+	if (c->theclass == class_user || c->is_prefix ())
+	  show_user_1 (c, prefixname.c_str (), c->name, gdb_stdout);
     }
 
 }
 
-void
-_initialize_cli_script (void)
+INIT_GDB_FILE (cli_script)
 {
   struct cmd_list_element *c;
 
   /* "document", "define" and "define-prefix" use command_completer,
      as this helps the user to either type the command name and/or
      its prefixes.  */
-  c = add_com ("document", class_support, document_command, _("\
-Document a user-defined command.\n\
-Give command name as argument.  Give documentation on following lines.\n\
+  document_cmd_element = add_com ("document", class_support, document_command,
+				  _("\
+Document a user-defined command or user-defined alias.\n\
+Give command or alias name as argument.  Give documentation on following lines.\n\
 End with a line of just \"end\"."));
-  set_cmd_completer (c, command_completer);
+  set_cmd_completer (document_cmd_element, command_completer);
   define_cmd_element = add_com ("define", class_support, define_command, _("\
 Define a new command name.  Command name is argument.\n\
 Definition appears on following lines, one command per line.\n\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-script.h ./gdb/cli/cli-script.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-script.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-script.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,9 +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/>.  */
 
-#ifndef CLI_CLI_SCRIPT_H
-#define CLI_CLI_SCRIPT_H
+#ifndef GDB_CLI_CLI_SCRIPT_H
+#define GDB_CLI_CLI_SCRIPT_H
 
+#include "compile/compile.h"
 #include "gdbsupport/function-view.h"
 
 struct ui_file;
@@ -45,6 +46,7 @@ enum command_control_type
   guile_control,
   while_stepping_control,
   define_control,
+  document_control,
   invalid_control
 };
 
@@ -65,6 +67,9 @@ struct command_lines_deleter
 /* A reference-counted struct command_line.  */
 typedef std::shared_ptr<command_line> counted_command_line;
 
+/* A unique_ptr specialization for command_line.  */
+typedef std::unique_ptr<command_line, command_lines_deleter> command_line_up;
+
 /* * Structure for saved commands lines (for breakpoints, defined
    commands, etc).  */
 
@@ -108,11 +113,18 @@ private:
   }
 };
 
+/* Prototype for a function to call to get one more input line.
+
+   If the function needs to return a dynamically allocated string, it can place
+   in the passed-in buffer, and return a pointer to it.  Otherwise, it can
+   simply ignore it.  */
+
+using read_next_line_ftype = gdb::function_view<const char * (std::string &)>;
+
 extern counted_command_line read_command_lines
     (const char *, int, int, gdb::function_view<void (const char *)>);
 extern counted_command_line read_command_lines_1
-    (gdb::function_view<const char * ()>, int,
-     gdb::function_view<void (const char *)>);
+    (read_next_line_ftype, int, gdb::function_view<void (const char *)>);
 
 
 /* Exported to cli/cli-cmds.c */
@@ -131,10 +143,12 @@ extern void execute_control_commands (st
 
 /* Run execute_control_commands for COMMANDS.  Capture its output into
    the returned string, do not display it to the screen.  BATCH_FLAG
-   will be temporarily set to true.  */
+   will be temporarily set to true.  When TERM_OUT is true the output is
+   collected with terminal behavior (e.g. with styling).  When TERM_OUT is
+   false raw output will be collected (e.g. no styling).  */
 
 extern std::string execute_control_commands_to_string
-    (struct command_line *commands, int from_tty);
+    (struct command_line *commands, int from_tty, bool term_out);
 
 /* Exported to gdb/breakpoint.c */
 
@@ -170,4 +184,14 @@ extern void print_command_trace (const c
 
 extern void reset_command_nest_depth (void);
 
-#endif /* CLI_CLI_SCRIPT_H */
+/* Return true if A and B are identical.  Some commands carry around a
+   'void *' compilation context, in this case this function doesn't try to
+   validate if the context is actually the same or not, and will just
+   return false indicating the commands have changed.  That is, a return
+   value of true is a guarantee that the commands are equal, a return
+   value of false means the commands are possibly different (and in most
+   cases are different).  */
+
+extern bool commands_equal (const command_line *a, const command_line *b);
+
+#endif /* GDB_CLI_CLI_SCRIPT_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.20200303/gdb/cli/cli-setshow.c ./gdb/cli/cli-setshow.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-setshow.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-setshow.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Handle set and show GDB commands.
 
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
 
    This 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,33 +15,30 @@
    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 "readline/tilde.h"
 #include "value.h"
 #include <ctype.h>
 #include "arch-utils.h"
 #include "observable.h"
+#include "interps.h"
 
 #include "ui-out.h"
 
 #include "cli/cli-decode.h"
 #include "cli/cli-cmds.h"
 #include "cli/cli-setshow.h"
+#include "cli/cli-style.h"
 #include "cli/cli-utils.h"
 
 /* Return true if the change of command parameter should be notified.  */
 
-static int
-notify_command_param_changed_p (int param_changed, struct cmd_list_element *c)
+static bool
+notify_command_param_changed_p (bool param_changed, struct cmd_list_element *c)
 {
-  if (param_changed == 0)
-    return 0;
-
-  if (c->theclass == class_maintenance || c->theclass == class_deprecated
-      || c->theclass == class_obscure)
-    return 0;
+  if (!param_changed)
+    return false;
 
-  return 1;
+  return c->theclass != class_maintenance && c->theclass != class_obscure;
 }
 
 
@@ -121,7 +118,7 @@ parse_cli_boolean_value (const char *arg
 }
 
 
-void
+static void
 deprecated_show_value_hack (struct ui_file *ignore_file,
 			    int ignore_from_tty,
 			    struct cmd_list_element *c,
@@ -130,28 +127,38 @@ deprecated_show_value_hack (struct ui_fi
   /* If there's no command or value, don't try to print it out.  */
   if (c == NULL || value == NULL)
     return;
+
   /* Print doc minus "Show " at start.  Tell print_doc_line that
      this is for a 'show value' prefix.  */
   print_doc_line (gdb_stdout, c->doc + 5, true);
-  switch (c->var_type)
+
+  gdb_assert (c->var.has_value ());
+
+  switch (c->var->type ())
     {
     case var_string:
     case var_string_noescape:
+    case var_enum:
+      gdb_printf ((" is \"%s\".\n"), value);
+      break;
+
     case var_optional_filename:
     case var_filename:
-    case var_enum:
-      printf_filtered ((" is \"%s\".\n"), value);
+      gdb_printf ((" is \"%ps\".\n"),
+		  styled_string (file_name_style.style (), value));
       break;
+
     default:
-      printf_filtered ((" is %s.\n"), value);
+      gdb_printf ((" is %s.\n"), value);
       break;
     }
 }
 
-/* Returns true if ARG is "unlimited".  */
+/* Returns true and the value in VAL if ARG is an accepted literal.  */
 
 static bool
-is_unlimited_literal (const char **arg, bool expression)
+get_literal_val (LONGEST &val, const literal_def *extra_literals,
+		 const char **arg, bool expression)
 {
   *arg = skip_spaces (*arg);
 
@@ -161,85 +168,104 @@ is_unlimited_literal (const char **arg,
 
   size_t len = p - *arg;
 
-  if (len > 0 && strncmp ("unlimited", *arg, len) == 0)
-    {
-      *arg += len;
+  if (len > 0 && extra_literals != nullptr)
+    for (const literal_def *l = extra_literals;
+	 l->literal != nullptr;
+	 l++)
+      if (strncmp (l->literal, *arg, len) == 0)
+	{
+	  *arg += len;
+
+	  /* If parsing an expression (i.e., parsing for a "set" command),
+	     anything after the literal is junk.  For options, anything
+	     after the literal might be a command argument or another
+	     option.  */
+	  if (expression)
+	    {
+	      const char *after = skip_spaces (*arg);
+	      if (*after != '\0')
+		error (_("Junk after \"%.*s\": %s"),
+		       (int) len, unl_start, after);
+	    }
 
-      /* If parsing an expression (i.e., parsing for a "set" command),
-	 anything after "unlimited" is junk.  For options, anything
-	 after "unlimited" might be a command argument or another
-	 option.  */
-      if (expression)
-	{
-	  const char *after = skip_spaces (*arg);
-	  if (*after != '\0')
-	    error (_("Junk after \"%.*s\": %s"),
-		   (int) len, unl_start, after);
+	  val = l->use;
+	  return true;
 	}
 
-      return true;
-    }
-
   return false;
 }
 
 /* See cli-setshow.h.  */
 
-unsigned int
-parse_cli_var_uinteger (var_types var_type, const char **arg,
-			bool expression)
+LONGEST
+parse_cli_var_integer (var_types var_type, const literal_def *extra_literals,
+		       const char **arg, bool expression)
 {
   LONGEST val;
 
   if (*arg == nullptr || **arg == '\0')
     {
-      if (var_type == var_uinteger)
-	error_no_arg (_("integer to set it to, or \"unlimited\"."));
+      if (extra_literals == nullptr)
+	error_no_arg (_("integer to set it to"));
       else
-	error_no_arg (_("integer to set it to."));
-    }
-
-  if (var_type == var_uinteger && is_unlimited_literal (arg, expression))
-    val = 0;
-  else if (expression)
-    val = parse_and_eval_long (*arg);
-  else
-    val = get_ulongest (arg);
-
-  if (var_type == var_uinteger && val == 0)
-    val = UINT_MAX;
-  else if (val < 0
-	   /* For var_uinteger, don't let the user set the value
-	      to UINT_MAX directly, as that exposes an
-	      implementation detail to the user interface.  */
-	   || (var_type == var_uinteger && val >= UINT_MAX)
-	   || (var_type == var_zuinteger && val > UINT_MAX))
-    error (_("integer %s out of range"), plongest (val));
-
-  return val;
-}
-
-/* See cli-setshow.h.  */
+	{
+	  std::string buffer = "";
+	  size_t count = 0;
 
-int
-parse_cli_var_zuinteger_unlimited (const char **arg, bool expression)
-{
-  LONGEST val;
+	  for (const literal_def *l = extra_literals;
+	       l->literal != nullptr;
+	       l++, count++)
+	    {
+	      if (count != 0)
+		buffer += ", ";
+	      buffer = buffer + '"' + l->literal + '"';
+	    }
+	  if (count > 1)
+	    error_no_arg
+	      (string_printf (_("integer to set it to, or one of: %s"),
+			      buffer.c_str ()).c_str ());
+	  else
+	    error_no_arg
+	      (string_printf (_("integer to set it to, or %s"),
+			      buffer.c_str ()).c_str ());
+	}
+    }
 
-  if (*arg == nullptr || **arg == '\0')
-    error_no_arg (_("integer to set it to, or \"unlimited\"."));
+  if (!get_literal_val (val, extra_literals, arg, expression))
+    {
+      if (expression)
+	val = parse_and_eval_long (*arg);
+      else
+	val = get_ulongest (arg);
 
-  if (is_unlimited_literal (arg, expression))
-    val = -1;
-  else if (expression)
-    val = parse_and_eval_long (*arg);
-  else
-    val = get_ulongest (arg);
+      enum tribool allowed = TRIBOOL_UNKNOWN;
+      if (extra_literals != nullptr)
+	{
+	  for (const literal_def *l = extra_literals;
+	       l->literal != nullptr;
+	       l++)
+	    if (l->val.has_value () && val == *l->val)
+	      {
+		allowed = TRIBOOL_TRUE;
+		val = l->use;
+		break;
+	      }
+	    else if (val == l->use)
+	      allowed = TRIBOOL_FALSE;
+	}
 
-  if (val > INT_MAX)
-    error (_("integer %s out of range"), plongest (val));
-  else if (val < -1)
-    error (_("only -1 is allowed to set as unlimited"));
+      if (allowed == TRIBOOL_UNKNOWN)
+	{
+	  if (val > UINT_MAX || val < INT_MIN
+	      || (var_type == var_uinteger && val < 0)
+	      || (var_type == var_integer && val > INT_MAX)
+	      || (var_type == var_pinteger && val < 0)
+	      || (var_type == var_pinteger && val > INT_MAX))
+	    allowed = TRIBOOL_FALSE;
+	}
+      if (allowed == TRIBOOL_FALSE)
+	error (_("integer %s out of range"), plongest (val));
+    }
 
   return val;
 }
@@ -305,25 +331,25 @@ void
 do_set_command (const char *arg, int from_tty, struct cmd_list_element *c)
 {
   /* A flag to indicate the option is changed or not.  */
-  int option_changed = 0;
+  bool option_changed = false;
 
   gdb_assert (c->type == set_cmd);
 
   if (arg == NULL)
     arg = "";
 
-  switch (c->var_type)
+  gdb_assert (c->var.has_value ());
+
+  switch (c->var->type ())
     {
     case var_string:
       {
-	char *newobj;
+	std::string newobj;
 	const char *p;
-	char *q;
 	int ch;
 
-	newobj = (char *) xmalloc (strlen (arg) + 2);
+	newobj.reserve (strlen (arg));
 	p = arg;
-	q = newobj;
 	while ((ch = *p++) != '\000')
 	  {
 	    if (ch == '\\')
@@ -341,43 +367,23 @@ do_set_command (const char *arg, int fro
 		if (ch == 0)
 		  break;	/* C loses */
 		else if (ch > 0)
-		  *q++ = ch;
+		  newobj.push_back (ch);
 	      }
 	    else
-	      *q++ = ch;
+	      newobj.push_back (ch);
 	  }
-#if 0
-	if (*(p - 1) != '\\')
-	  *q++ = ' ';
-#endif
-	*q++ = '\0';
-	newobj = (char *) xrealloc (newobj, q - newobj);
-
-	if (*(char **) c->var == NULL
-	    || strcmp (*(char **) c->var, newobj) != 0)
-	  {
-	    xfree (*(char **) c->var);
-	    *(char **) c->var = newobj;
+	newobj.shrink_to_fit ();
 
-	    option_changed = 1;
-	  }
-	else
-	  xfree (newobj);
+	option_changed = c->var->set<std::string> (std::move (newobj));
       }
       break;
     case var_string_noescape:
-      if (*(char **) c->var == NULL || strcmp (*(char **) c->var, arg) != 0)
-	{
-	  xfree (*(char **) c->var);
-	  *(char **) c->var = xstrdup (arg);
-
-	  option_changed = 1;
-	}
+      option_changed = c->var->set<std::string> (std::string (arg));
       break;
     case var_filename:
       if (*arg == '\0')
 	error_no_arg (_("filename to set it to."));
-      /* FALLTHROUGH */
+      [[fallthrough]];
     case var_optional_filename:
       {
 	char *val = NULL;
@@ -386,28 +392,20 @@ do_set_command (const char *arg, int fro
 	  {
 	    /* Clear trailing whitespace of filename.  */
 	    const char *ptr = arg + strlen (arg) - 1;
-	    char *copy;
 
 	    while (ptr >= arg && (*ptr == ' ' || *ptr == '\t'))
 	      ptr--;
-	    copy = xstrndup (arg, ptr + 1 - arg);
+	    gdb::unique_xmalloc_ptr<char> copy
+	      = make_unique_xstrndup (arg, ptr + 1 - arg);
 
-	    val = tilde_expand (copy);
-	    xfree (copy);
+	    val = tilde_expand (copy.get ());
 	  }
 	else
 	  val = xstrdup ("");
 
-	if (*(char **) c->var == NULL
-	    || strcmp (*(char **) c->var, val) != 0)
-	  {
-	    xfree (*(char **) c->var);
-	    *(char **) c->var = val;
-
-	    option_changed = 1;
-	  }
-	else
-	  xfree (val);
+	option_changed
+	  = c->var->set<std::string> (std::string (val));
+	xfree (val);
       }
       break;
     case var_boolean:
@@ -416,75 +414,27 @@ do_set_command (const char *arg, int fro
 
 	if (val < 0)
 	  error (_("\"on\" or \"off\" expected."));
-	if (val != *(bool *) c->var)
-	  {
-	    *(bool *) c->var = val;
 
-	    option_changed = 1;
-	  }
+	option_changed = c->var->set<bool> (val);
       }
       break;
     case var_auto_boolean:
-      {
-	enum auto_boolean val = parse_auto_binary_operation (arg);
-
-	if (*(enum auto_boolean *) c->var != val)
-	  {
-	    *(enum auto_boolean *) c->var = val;
-
-	    option_changed = 1;
-	  }
-      }
+      option_changed = c->var->set<enum auto_boolean> (parse_auto_binary_operation (arg));
       break;
     case var_uinteger:
-    case var_zuinteger:
-      {
-	unsigned int val = parse_cli_var_uinteger (c->var_type, &arg, true);
-
-	if (*(unsigned int *) c->var != val)
-	  {
-	    *(unsigned int *) c->var = val;
-
-	    option_changed = 1;
-	  }
-      }
+      option_changed
+	= c->var->set<unsigned int> (parse_cli_var_integer (c->var->type (),
+							    c->var->
+							    extra_literals (),
+							    &arg, true));
       break;
     case var_integer:
-    case var_zinteger:
-      {
-	LONGEST val;
-
-	if (*arg == '\0')
-	  {
-	    if (c->var_type == var_integer)
-	      error_no_arg (_("integer to set it to, or \"unlimited\"."));
-	    else
-	      error_no_arg (_("integer to set it to."));
-	  }
-
-	if (c->var_type == var_integer && is_unlimited_literal (&arg, true))
-	  val = 0;
-	else
-	  val = parse_and_eval_long (arg);
-
-	if (val == 0 && c->var_type == var_integer)
-	  val = INT_MAX;
-	else if (val < INT_MIN
-		 /* For var_integer, don't let the user set the value
-		    to INT_MAX directly, as that exposes an
-		    implementation detail to the user interface.  */
-		 || (c->var_type == var_integer && val >= INT_MAX)
-		 || (c->var_type == var_zinteger && val > INT_MAX))
-	  error (_("integer %s out of range"), plongest (val));
-
-	if (*(int *) c->var != val)
-	  {
-	    *(int *) c->var = val;
-
-	    option_changed = 1;
-	  }
-	break;
-      }
+    case var_pinteger:
+      option_changed
+	= c->var->set<int> (parse_cli_var_integer (c->var->type (),
+						   c->var->extra_literals (),
+						   &arg, true));
+      break;
     case var_enum:
       {
 	const char *end_arg = arg;
@@ -495,29 +445,21 @@ do_set_command (const char *arg, int fro
 	if (*after != '\0')
 	  error (_("Junk after item \"%.*s\": %s"), len, arg, after);
 
-	if (*(const char **) c->var != match)
-	  {
-	    *(const char **) c->var = match;
-
-	    option_changed = 1;
-	  }
+	option_changed = c->var->set<const char *> (match);
       }
       break;
-    case var_zuinteger_unlimited:
+    case var_color:
       {
-	int val = parse_cli_var_zuinteger_unlimited (&arg, true);
-
-	if (*(int *) c->var != val)
-	  {
-	    *(int *) c->var = val;
-	    option_changed = 1;
-	  }
+	ui_file_style::color color = parse_var_color (arg);
+	ui_file_style::color approx_color = color.approximate (colorsupport ());
+	option_changed = c->var->set<ui_file_style::color> (approx_color);
       }
       break;
     default:
       error (_("gdb internal error: bad var_type in do_setshow_command"));
     }
-  c->func (c, NULL, from_tty);
+
+  c->func (NULL, from_tty, c);
 
   if (notify_command_param_changed_p (option_changed, c))
     {
@@ -550,10 +492,10 @@ do_set_command (const char *arg, int fro
 	  p = p->prefix;
 	}
 
-      /* Don't trigger any observer notification if prefixlist is not
+      /* Don't trigger any observer notification if subcommands is not
 	 setlist.  */
       i--;
-      if (cmds[i]->prefixlist != &setlist)
+      if (cmds[i]->subcommands != &setlist)
 	{
 	  xfree (cmds);
 	  xfree (name);
@@ -577,46 +519,57 @@ do_set_command (const char *arg, int fro
 
       xfree (cmds);
 
-      switch (c->var_type)
+      switch (c->var->type ())
 	{
 	case var_string:
 	case var_string_noescape:
 	case var_filename:
 	case var_optional_filename:
+	  interps_notify_param_changed
+	    (name, c->var->get<std::string> ().c_str ());
+	  break;
 	case var_enum:
-	  gdb::observers::command_param_changed.notify (name, *(char **) c->var);
+	  interps_notify_param_changed
+	    (name, c->var->get<const char *> ());
+	  break;
+	case var_color:
+	  {
+	    const ui_file_style::color &color
+	      = c->var->get<ui_file_style::color> ();
+	    interps_notify_param_changed
+	      (name, color.to_string ().c_str ());
+	  }
 	  break;
 	case var_boolean:
 	  {
-	    const char *opt = *(bool *) c->var ? "on" : "off";
+	    const char *opt = c->var->get<bool> () ? "on" : "off";
 
-	    gdb::observers::command_param_changed.notify (name, opt);
+	    interps_notify_param_changed (name, opt);
 	  }
 	  break;
 	case var_auto_boolean:
 	  {
-	    const char *s = auto_boolean_enums[*(enum auto_boolean *) c->var];
+	    const char *s
+	      = auto_boolean_enums[c->var->get<enum auto_boolean> ()];
 
-	    gdb::observers::command_param_changed.notify (name, s);
+	    interps_notify_param_changed (name, s);
 	  }
 	  break;
 	case var_uinteger:
-	case var_zuinteger:
 	  {
 	    char s[64];
 
-	    xsnprintf (s, sizeof s, "%u", *(unsigned int *) c->var);
-	    gdb::observers::command_param_changed.notify (name, s);
+	    xsnprintf (s, sizeof s, "%u", c->var->get<unsigned int> ());
+	    interps_notify_param_changed (name, s);
 	  }
 	  break;
 	case var_integer:
-	case var_zinteger:
-	case var_zuinteger_unlimited:
+	case var_pinteger:
 	  {
 	    char s[64];
 
-	    xsnprintf (s, sizeof s, "%d", *(int *) c->var);
-	    gdb::observers::command_param_changed.notify (name, s);
+	    xsnprintf (s, sizeof s, "%d", c->var->get<int> ());
+	    interps_notify_param_changed (name, s);
 	  }
 	  break;
 	}
@@ -627,28 +580,42 @@ do_set_command (const char *arg, int fro
 /* See cli/cli-setshow.h.  */
 
 std::string
-get_setshow_command_value_string (const cmd_list_element *c)
+get_setshow_command_value_string (const setting &var)
 {
   string_file stb;
 
-  switch (c->var_type)
+  switch (var.type ())
     {
     case var_string:
-      if (*(char **) c->var)
-	stb.putstr (*(char **) c->var, '"');
+      {
+	std::string value = var.get<std::string> ();
+	if (!value.empty ())
+	  stb.putstr (value.c_str (), '"');
+      }
       break;
     case var_string_noescape:
     case var_optional_filename:
     case var_filename:
+      stb.puts (var.get<std::string> ().c_str ());
+      break;
     case var_enum:
-      if (*(char **) c->var)
-	stb.puts (*(char **) c->var);
+      {
+	const char *value = var.get<const char *> ();
+	if (value != nullptr)
+	  stb.puts (value);
+      }
+      break;
+    case var_color:
+      {
+	const ui_file_style::color &value = var.get<ui_file_style::color> ();
+	stb.puts (value.to_string ().c_str ());
+      }
       break;
     case var_boolean:
-      stb.puts (*(bool *) c->var ? "on" : "off");
+      stb.puts (var.get<bool> () ? "on" : "off");
       break;
     case var_auto_boolean:
-      switch (*(enum auto_boolean*) c->var)
+      switch (var.get<enum auto_boolean> ())
 	{
 	case AUTO_BOOLEAN_TRUE:
 	  stb.puts ("on");
@@ -665,34 +632,39 @@ get_setshow_command_value_string (const
 	}
       break;
     case var_uinteger:
-    case var_zuinteger:
-      if (c->var_type == var_uinteger
-	  && *(unsigned int *) c->var == UINT_MAX)
-	stb.puts ("unlimited");
-      else
-	stb.printf ("%u", *(unsigned int *) c->var);
-      break;
     case var_integer:
-    case var_zinteger:
-      if (c->var_type == var_integer
-	  && *(int *) c->var == INT_MAX)
-	stb.puts ("unlimited");
-      else
-	stb.printf ("%d", *(int *) c->var);
-      break;
-    case var_zuinteger_unlimited:
+    case var_pinteger:
       {
-	if (*(int *) c->var == -1)
-	  stb.puts ("unlimited");
-	else
-	  stb.printf ("%d", *(int *) c->var);
+	bool printed = false;
+	const LONGEST value
+	  = (var.type () == var_uinteger
+	     ? static_cast<LONGEST> (var.get<unsigned int> ())
+	     : static_cast<LONGEST> (var.get<int> ()));
+
+	if (var.extra_literals () != nullptr)
+	  for (const literal_def *l = var.extra_literals ();
+	       l->literal != nullptr;
+	       l++)
+	    if (value == l->use)
+	      {
+		stb.puts (l->literal);
+		printed = true;
+		break;
+	      }
+	if (!printed)
+	  {
+	    if (var.type () == var_uinteger)
+	      stb.printf ("%u", static_cast<unsigned int> (value));
+	    else
+	      stb.printf ("%d", static_cast<int> (value));
+	  }
       }
       break;
     default:
       gdb_assert_not_reached ("bad var_type");
     }
 
-  return std::move (stb.string ());
+  return stb.release ();
 }
 
 
@@ -707,18 +679,15 @@ do_show_command (const char *arg, int fr
   struct ui_out *uiout = current_uiout;
 
   gdb_assert (c->type == show_cmd);
+  gdb_assert (c->var.has_value ());
 
-  /* Possibly call the pre hook.  */
-  if (c->pre_show_hook)
-    (c->pre_show_hook) (c);
-
-  std::string val = get_setshow_command_value_string (c);
+  std::string val = get_setshow_command_value_string (*c->var);
 
   /* FIXME: cagney/2005-02-10: There should be MI and CLI specific
      versions of code to print the value out.  */
 
   if (uiout->is_mi_like_p ())
-    uiout->field_string ("value", val.c_str ());
+    uiout->field_string ("value", val);
   else
     {
       if (c->show_value_func != NULL)
@@ -727,45 +696,57 @@ do_show_command (const char *arg, int fr
 	deprecated_show_value_hack (gdb_stdout, from_tty, c, val.c_str ());
     }
 
-  c->func (c, NULL, from_tty);
+  c->func (NULL, from_tty, c);
 }
 
 /* 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");
+  const ui_file_style cmd_style = command_style.style ();
   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)
+	 prefix (with "show " skipped).  */
+      if (list->is_prefix () && !list->is_alias ())
 	{
 	  ui_out_emit_tuple optionlist_emitter (uiout, "optionlist");
-	  const char *new_prefix = strstr (list->prefixname, "show ") + 5;
+	  std::string prefixname = list->prefixname ();
+	  const char *new_prefix = strstr (prefixname.c_str (), "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->subcommands, from_tty);
 	}
-      else
+      else if (list->theclass != no_set_class && !list->is_alias ())
 	{
-	  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 (!uiout->is_mi_like_p () && list->prefix != nullptr)
+	    {
+	      /* If we find a prefix, output it (with "show " skipped).  */
+	      std::string prefixname = list->prefix->prefixname ();
+	      if (startswith (prefixname, "show "))
+		prefixname = prefixname.substr (5);
+	      /* In non-MI mode, we include the full name here.  */
+	      prefixname += list->name;
+	      uiout->field_string ("name", prefixname, cmd_style);
 	    }
+	  else
+	    uiout->field_string ("name", list->name, cmd_style);
+	  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.20200303/gdb/cli/cli-setshow.h ./gdb/cli/cli-setshow.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-setshow.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-setshow.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,8 +14,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/>.  */
 
-#ifndef CLI_CLI_SETSHOW_H
-#define CLI_CLI_SETSHOW_H
+#ifndef GDB_CLI_CLI_SETSHOW_H
+#define GDB_CLI_CLI_SETSHOW_H
 
 #include <string>
 
@@ -29,21 +29,19 @@ extern int parse_cli_boolean_value (cons
    past a successfully parsed value.  */
 extern int parse_cli_boolean_value (const char **arg);
 
-/* Parse ARG, an option to a var_uinteger or var_zuinteger variable.
-   Either returns the parsed value on success or throws an error.  If
-   EXPRESSION is true, *ARG is parsed as an expression; otherwise, it
-   is parsed with get_ulongest.  It's not possible to parse the
+/* Parse ARG, an option to a var_uinteger, var_integer or var_pinteger
+   variable.  Return the parsed value on success or throw an error.  If
+   EXTRA_LITERALS is non-null, then interpret those literals accordingly.
+   If EXPRESSION is true, *ARG is parsed as an expression; otherwise,
+   it is parsed with get_ulongest.  It's not possible to parse the
    integer as an expression when there may be valid input after the
    integer, such as when parsing command options.  E.g., "print
    -elements NUMBER -obj --".  In such case, parsing as an expression
    would parse "-obj --" as part of the expression as well.  */
-extern unsigned int parse_cli_var_uinteger (var_types var_type,
-					    const char **arg,
-					    bool expression);
-
-/* Like parse_cli_var_uinteger, for var_zuinteger_unlimited.  */
-extern int parse_cli_var_zuinteger_unlimited (const char **arg,
-					      bool expression);
+extern LONGEST parse_cli_var_integer (var_types var_type,
+				      const literal_def *extra_literals,
+				      const char **arg,
+				      bool expression);
 
 /* Parse ARG, an option to a var_enum variable.  ENUM is a
    null-terminated array of possible values. Either returns the parsed
@@ -57,10 +55,9 @@ extern void do_set_command (const char *
 extern void do_show_command (const char *arg, int from_tty,
 			     struct cmd_list_element *c);
 
-/* Get a string version of C's current value.  */
-extern std::string get_setshow_command_value_string (const cmd_list_element *c);
+/* Get a string version of VAR's value.  */
+extern std::string get_setshow_command_value_string (const setting &var);
 
-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 */
+#endif /* GDB_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.20200303/gdb/cli/cli-style.c ./gdb/cli/cli-style.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-style.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-style.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI colorizing
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,18 +17,20 @@
    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 "cli/cli-setshow.h"
 #include "cli/cli-style.h"
 #include "source-cache.h"
 #include "observable.h"
+#include "charset.h"
 
 /* True if styling is enabled.  */
 
-#if defined (__MSDOS__) || defined (__CYGWIN__)
-bool cli_styling = false;
+#if defined (__MSDOS__)
+static bool cli_styling = false;
 #else
-bool cli_styling = true;
+static bool cli_styling = true;
 #endif
 
 /* True if source styling is enabled.  Note that this is only
@@ -36,19 +38,14 @@ bool cli_styling = true;
 
 bool source_styling = true;
 
-/* Name of colors; must correspond to ui_file_style::basic_color.  */
-static const char * const cli_colors[] = {
-  "none",
-  "black",
-  "red",
-  "green",
-  "yellow",
-  "blue",
-  "magenta",
-  "cyan",
-  "white",
-  nullptr
-};
+/* True if disassembler styling is enabled.  Note that this is only
+   consulted when cli_styling is true.  */
+
+bool disassembler_styling = true;
+
+/* User-settable variable controlling emoji output.  */
+
+static auto_boolean emoji_styling = AUTO_BOOLEAN_AUTO;
 
 /* Names of intensities; must correspond to
    ui_file_style::intensity.  */
@@ -59,6 +56,81 @@ static const char * const cli_intensitie
   nullptr
 };
 
+/* When true styling is being temporarily suppressed.  */
+
+static bool scoped_disable_styling_p = false;
+
+/* See cli/cli-style.h.  */
+
+scoped_disable_styling::scoped_disable_styling ()
+{
+  m_old_value = scoped_disable_styling_p;
+  scoped_disable_styling_p = true;
+}
+
+/* See cli/cli-style.h.  */
+
+scoped_disable_styling::~scoped_disable_styling ()
+{
+  scoped_disable_styling_p = m_old_value;
+}
+
+/* Return true if GDB's output terminal should support styling, otherwise,
+   return false.  This function really checks for things that indicate
+   styling might not be supported, so a return value of false indicates
+   we've seen something to indicate we should not perform styling.  A
+   return value of true is the default.  */
+
+static bool
+terminal_supports_styling ()
+{
+  const char *term = getenv ("TERM");
+
+  /* Windows doesn't by default define $TERM, but can support styles
+     regardless.  */
+#ifndef _WIN32
+  if (term == nullptr || strcmp (term, "dumb") == 0)
+    return false;
+#else
+  /* But if they do define $TERM, let us behave the same as on Posix
+     platforms, for the benefit of programs which invoke GDB as their
+     back-end.  */
+  if (term != nullptr && strcmp (term, "dumb") == 0)
+    return false;
+#endif
+
+  return true;
+}
+
+/* See cli/cli-style.h.  */
+
+void
+disable_cli_styling ()
+{
+  cli_styling = false;
+}
+
+/* See cli/cli-style.h.  */
+
+bool
+term_cli_styling ()
+{
+  return cli_styling && !scoped_disable_styling_p;
+}
+
+/* See cli/cli-style.h.  */
+
+void
+disable_styling_from_environment ()
+{
+  const char *no_color = getenv ("NO_COLOR");
+  if (no_color != nullptr && *no_color != '\0')
+    cli_styling = false;
+
+  if (!terminal_supports_styling ())
+    cli_styling = false;
+}
+
 /* See cli-style.h.  */
 
 cli_style_option file_name_style ("filename", ui_file_style::GREEN);
@@ -85,6 +157,10 @@ cli_style_option title_style ("title", u
 
 /* See cli-style.h.  */
 
+cli_style_option command_style ("command", ui_file_style::BOLD);
+
+/* See cli-style.h.  */
+
 cli_style_option tui_border_style ("tui-border", ui_file_style::CYAN);
 
 /* See cli-style.h.  */
@@ -98,13 +174,40 @@ cli_style_option metadata_style ("metada
 
 /* See cli-style.h.  */
 
+cli_style_option version_style ("version", ui_file_style::MAGENTA,
+				ui_file_style::BOLD);
+
+/* See cli-style.h.  */
+
+cli_style_option disasm_mnemonic_style ("mnemonic", ui_file_style::GREEN);
+
+/* See cli-style.h.  */
+
+cli_style_option disasm_register_style ("register", ui_file_style::RED);
+
+/* See cli-style.h.  */
+
+cli_style_option disasm_immediate_style ("immediate", ui_file_style::BLUE);
+
+/* See cli-style.h.  */
+
+cli_style_option disasm_comment_style ("comment", ui_file_style::WHITE,
+				       ui_file_style::DIM);
+
+/* See cli-style.h.  */
+
+cli_style_option line_number_style ("line-number", ui_file_style::DIM);
+
+/* See cli-style.h.  */
+
 cli_style_option::cli_style_option (const char *name,
-				    ui_file_style::basic_color fg)
+				    ui_file_style::basic_color fg,
+				    ui_file_style::intensity intensity)
   : changed (name),
     m_name (name),
-    m_foreground (cli_colors[fg - ui_file_style::NONE]),
-    m_background (cli_colors[0]),
-    m_intensity (cli_intensities[ui_file_style::NORMAL])
+    m_foreground (fg),
+    m_background (ui_file_style::NONE),
+    m_intensity (cli_intensities[intensity])
 {
 }
 
@@ -114,32 +217,17 @@ cli_style_option::cli_style_option (cons
 				    ui_file_style::intensity i)
   : changed (name),
     m_name (name),
-    m_foreground (cli_colors[0]),
-    m_background (cli_colors[0]),
+    m_foreground (ui_file_style::NONE),
+    m_background (ui_file_style::NONE),
     m_intensity (cli_intensities[i])
 {
 }
 
-/* Return the color number corresponding to COLOR.  */
-
-static int
-color_number (const char *color)
-{
-  for (int i = 0; i < ARRAY_SIZE (cli_colors); ++i)
-    {
-      if (color == cli_colors[i])
-	return i - 1;
-    }
-  gdb_assert_not_reached ("color not found");
-}
-
 /* See cli-style.h.  */
 
 ui_file_style
 cli_style_option::style () const
 {
-  int fg = color_number (m_foreground);
-  int bg = color_number (m_background);
   ui_file_style::intensity intensity = ui_file_style::NORMAL;
 
   for (int i = 0; i < ARRAY_SIZE (cli_intensities); ++i)
@@ -151,7 +239,7 @@ cli_style_option::style () const
 	}
     }
 
-  return ui_file_style (fg, bg, intensity);
+  return ui_file_style (m_foreground, m_background, intensity);
 }
 
 /* See cli-style.h.  */
@@ -160,7 +248,7 @@ void
 cli_style_option::do_set_value (const char *ignore, int from_tty,
 				struct cmd_list_element *cmd)
 {
-  cli_style_option *cso = (cli_style_option *) get_cmd_context (cmd);
+  cli_style_option *cso = (cli_style_option *) cmd->context ();
   cso->changed.notify ();
 }
 
@@ -173,10 +261,10 @@ do_show (const char *what, struct ui_fil
 	 struct cmd_list_element *cmd,
 	 const char *value)
 {
-  cli_style_option *cso = (cli_style_option *) get_cmd_context (cmd);
-  fputs_filtered (_("The "), file);
+  cli_style_option *cso = (cli_style_option *) cmd->context ();
+  gdb_puts (_("The "), file);
   fprintf_styled (file, cso->style (), _("\"%s\" style"), cso->name ());
-  fprintf_filtered (file, _(" %s is: %s\n"), what, value);
+  gdb_printf (file, _(" %s is: %s\n"), what, value);
 }
 
 /* See cli-style.h.  */
@@ -211,74 +299,88 @@ cli_style_option::do_show_intensity (str
 
 /* See cli-style.h.  */
 
-void
+set_show_commands
 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 + " ";
+  set_show_commands prefix_cmds
+    = add_setshow_prefix_cmd (m_name, theclass, prefix_doc, prefix_doc,
+			      &m_set_list, &m_show_list, set_list, show_list);
+
+  set_show_commands commands;
+
+  commands = add_setshow_color_cmd
+    ("foreground", theclass, &m_foreground,
+     _("Set the foreground color for this property."),
+     _("Show the foreground color for this property."),
+     nullptr,
+     do_set_value,
+     do_show_foreground,
+     &m_set_list, &m_show_list);
+  commands.set->set_context (this);
+  commands.show->set_context (this);
+
+  commands = add_setshow_color_cmd
+    ("background", theclass, &m_background,
+     _("Set the background color for this property."),
+     _("Show the background color for this property."),
+     nullptr,
+     do_set_value,
+     do_show_background,
+     &m_set_list, &m_show_list);
+  commands.set->set_context (this);
+  commands.show->set_context (this);
 
-  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_setshow_enum_cmd ("foreground", theclass, cli_colors,
-			&m_foreground,
-			_("Set the foreground color for this property."),
-			_("Show the foreground color for this property."),
-			nullptr,
-			do_set_value,
-			do_show_foreground,
-			&m_set_list, &m_show_list, (void *) this);
-  add_setshow_enum_cmd ("background", theclass, cli_colors,
-			&m_background,
-			_("Set the background color for this property."),
-			_("Show the background color for this property."),
-			nullptr,
-			do_set_value,
-			do_show_background,
-			&m_set_list, &m_show_list, (void *) this);
   if (!skip_intensity)
-    add_setshow_enum_cmd ("intensity", theclass, cli_intensities,
-			  &m_intensity,
-			  _("Set the display intensity for this property."),
-			  _("Show the display intensity for this property."),
-			  nullptr,
-			  do_set_value,
-			  do_show_intensity,
-			  &m_set_list, &m_show_list, (void *) this);
+    {
+      commands = add_setshow_enum_cmd
+	("intensity", theclass, cli_intensities,
+	 &m_intensity,
+	 _("Set the display intensity for this property."),
+	 _("Show the display intensity for this property."),
+	 nullptr,
+	 do_set_value,
+	 do_show_intensity,
+	 &m_set_list, &m_show_list);
+      commands.set->set_context (this);
+      commands.show->set_context (this);
+    }
+
+  return prefix_cmds;
 }
 
-static cmd_list_element *style_set_list;
-static cmd_list_element *style_show_list;
+cmd_list_element *style_set_list;
+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);
-}
+/* The command list for 'set style disassembler'.  */
 
-static void
-show_style (const char *arg, int from_tty)
-{
-  cmd_show_list (style_show_list, from_tty, "");
-}
+static cmd_list_element *style_disasm_set_list;
+
+/* The command list for 'show style disassembler'.  */
+
+static cmd_list_element *style_disasm_show_list;
 
 static void
 set_style_enabled  (const char *args, int from_tty, struct cmd_list_element *c)
 {
-  g_source_cache.clear ();
-  gdb::observers::source_styling_changed.notify ();
+  /* This finds the 'set style enabled' command.  */
+  struct cmd_list_element *set_style_enabled_cmd
+    = lookup_cmd_exact ("enabled", style_set_list);
+
+  /* If the user does 'set style enabled on', but the terminal doesn't
+     appear to support styling, then warn the user.  */
+  if (c == set_style_enabled_cmd && cli_styling
+      && !terminal_supports_styling ())
+    warning ("The current terminal doesn't support styling.  Styled output "
+	     "might not appear as expected.");
+
+  /* It is not necessary to flush the source cache here.  The source cache
+     tracks whether entries are styled or not.  */
+
+  gdb::observers::styling_changed.notify ();
 }
 
 static void
@@ -286,9 +388,9 @@ show_style_enabled (struct ui_file *file
 		    struct cmd_list_element *c, const char *value)
 {
   if (cli_styling)
-    fprintf_filtered (file, _("CLI output styling is enabled.\n"));
+    gdb_printf (file, _("CLI output styling is enabled.\n"));
   else
-    fprintf_filtered (file, _("CLI output styling is disabled.\n"));
+    gdb_printf (file, _("CLI output styling is disabled.\n"));
 }
 
 static void
@@ -296,34 +398,113 @@ show_style_sources (struct ui_file *file
 		    struct cmd_list_element *c, const char *value)
 {
   if (source_styling)
-    fprintf_filtered (file, _("Source code styling is enabled.\n"));
+    gdb_printf (file, _("Source code styling is enabled.\n"));
+  else
+    gdb_printf (file, _("Source code styling is disabled.\n"));
+}
+
+/* Implement 'show style disassembler'.  */
+
+static void
+show_style_disassembler (struct ui_file *file, int from_tty,
+			 struct cmd_list_element *c, const char *value)
+{
+  if (disassembler_styling)
+    gdb_printf (file, _("Disassembler output styling is enabled.\n"));
+  else
+    gdb_printf (file, _("Disassembler output styling is disabled.\n"));
+}
+
+/* Implement 'show style emoji'.  */
+
+static void
+show_emoji_styling (struct ui_file *file, int from_tty,
+		    struct cmd_list_element *c, const char *value)
+{
+  if (emoji_styling == AUTO_BOOLEAN_TRUE)
+    gdb_printf (file, _("CLI emoji styling is enabled.\n"));
+  else if (emoji_styling == AUTO_BOOLEAN_FALSE)
+    gdb_printf (file, _("CLI emoji styling is disabled.\n"));
   else
-    fprintf_filtered (file, _("Source code styling is disabled.\n"));
+    gdb_printf (file, _("CLI emoji styling is automatic (currently %s).\n"),
+		emojis_ok () ? _("enabled") : _("disabled"));
 }
 
-/* Builds the "set style NAME " prefix.  */
+/* See cli-style.h.  */
+
+bool
+emojis_ok ()
+{
+  if (!cli_styling || emoji_styling == AUTO_BOOLEAN_FALSE)
+    return false;
+  if (emoji_styling == AUTO_BOOLEAN_TRUE)
+    return true;
+  return strcmp (host_charset (), "UTF-8") == 0;
+}
 
-static std::string
-set_style_name (const char *name)
+/* See cli-style.h.  */
+
+void
+no_emojis ()
 {
-  std::string result ("set style ");
+  emoji_styling = AUTO_BOOLEAN_FALSE;
+}
 
-  result += name;
-  result += " ";
-  return result;
+/* Emoji warning prefix.  */
+static std::string warning_prefix = "âš ï¸� ";
+
+/* Implement 'show style warning-prefix'.  */
+
+static void
+show_warning_prefix (struct ui_file *file, int from_tty,
+		     struct cmd_list_element *c, const char *value)
+{
+  gdb_printf (file, _("Warning prefix is \"%s\".\n"),
+	      warning_prefix.c_str ());
 }
 
+/* See cli-style.h.  */
+
 void
-_initialize_cli_style ()
+print_warning_prefix (ui_file *file)
 {
-  add_prefix_cmd ("style", no_class, set_style, _("\
+  if (emojis_ok ())
+    gdb_puts (warning_prefix.c_str (), file);
+}
+
+/* Emoji error prefix.  */
+static std::string error_prefix = "â�Œï¸� ";
+
+/* Implement 'show style error-prefix'.  */
+
+static void
+show_error_prefix (struct ui_file *file, int from_tty,
+		     struct cmd_list_element *c, const char *value)
+{
+  gdb_printf (file, _("Error prefix is \"%s\".\n"),
+	      error_prefix.c_str ());
+}
+
+/* See cli-style.h.  */
+
+void
+print_error_prefix (ui_file *file)
+{
+  if (emojis_ok ())
+    gdb_puts (error_prefix.c_str (), file);
+}
+
+INIT_GDB_FILE (cli_style)
+{
+  add_setshow_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, _("\
+			  _("\
 Style-specific settings.\n\
 Configure various style-related variables, such as colors"),
-		  &style_show_list, "show style ", 0, &showlist);
+			  &style_set_list, &style_show_list,
+			  &setlist, &showlist);
 
   add_setshow_boolean_cmd ("enabled", no_class, &cli_styling, _("\
 Set whether CLI styling is enabled."), _("\
@@ -332,6 +513,13 @@ If enabled, output to the terminal is st
 			   set_style_enabled, show_style_enabled,
 			   &style_set_list, &style_show_list);
 
+  add_setshow_auto_boolean_cmd ("emoji", no_class, &emoji_styling, _("\
+Set whether emoji output is enabled."), _("\
+Show whether emoji output is enabled."), _("\
+If enabled, emojis may be displayed."),
+			   nullptr, show_emoji_styling,
+			   &style_set_list, &style_show_list);
+
   add_setshow_boolean_cmd ("sources", no_class, &source_styling, _("\
 Set whether source code styling is enabled."), _("\
 Show whether source code styling is enabled."), _("\
@@ -340,84 +528,211 @@ 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)
+  add_setshow_prefix_cmd ("disassembler", no_class,
+			  _("\
+Style-specific settings for the disassembler.\n\
+Configure various disassembler style-related variables."),
+			  _("\
+Style-specific settings for the disassembler.\n\
+Configure various disassembler style-related variables."),
+			  &style_disasm_set_list, &style_disasm_show_list,
+			  &style_set_list, &style_show_list);
+
+  add_setshow_boolean_cmd ("enabled", no_class, &disassembler_styling, _("\
+Set whether disassembler output styling is enabled."), _("\
+Show whether disassembler output styling is enabled."), _("\
+If enabled, disassembler output is styled.\n\
+\n\
+Disassembler styling requires a library that is able to style the current\n\
+instruction architecture.  By default, GDB will use its builtin library\n\
+for disassembler styling, but this cannot style every architecture.\n\
+\n\
+For architectures that cannot be styled by the builtin disassembler library\n\
+GDB will use the Python Pygments library, if this library is available.\n\
+\n\
+If neither option is able to style the current architecture, then\n\
+disassembler output will be unstyled, even when this option is enabled."
+			   ), set_style_enabled, show_style_disassembler,
+			   &style_disasm_set_list, &style_disasm_show_list);
 
-  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,
-			      _("\
+  set_show_commands function_prefix_cmds
+    = 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,
-			      _("\
+  set_show_commands address_prefix_cmds
+    = 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);
+
+  command_style.add_setshow_commands (no_class, _("\
+Command display styling.\n\
+Configure the colors and display intensity for GDB commands mentioned\n\
+in the output."),
+				      &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);
+
+  version_style.add_setshow_commands (no_class, _("\
+Version string display styling.\n\
+Configure colors used to display the GDB version string."),
+				      &style_set_list, &style_show_list,
+				      false);
+
+  disasm_mnemonic_style.add_setshow_commands (no_class, _("\
+Disassembler mnemonic display styling.\n\
+Configure the colors and display intensity for instruction mnemonics\n\
+in the disassembler output.  The \"disassembler mnemonic\" style is\n\
+used to display instruction mnemonics as well as any assembler\n\
+directives, e.g. \".byte\", \".word\", etc.\n\
+\n\
+This style will only be used for targets that support libopcodes based\n\
+disassembler styling.  When Python Pygments based styling is used\n\
+then this style has no effect."),
+					      &style_disasm_set_list,
+					      &style_disasm_show_list,
+					      false);
+
+  disasm_register_style.add_setshow_commands (no_class, _("\
+Disassembler register display styling.\n\
+Configure the colors and display intensity for registers in the\n\
+disassembler output.\n\
+\n\
+This style will only be used for targets that support libopcodes based\n\
+disassembler styling.  When Python Pygments based styling is used\n\
+then this style has no effect."),
+					      &style_disasm_set_list,
+					      &style_disasm_show_list,
+					      false);
+
+  disasm_immediate_style.add_setshow_commands (no_class, _("\
+Disassembler immediate display styling.\n\
+Configure the colors and display intensity for immediates in the\n\
+disassembler output.  The \"disassembler immediate\" style is used for\n\
+any number that is not an address, this includes constants in arithmetic\n\
+instructions, as well as address offsets in memory access instructions.\n\
+\n\
+This style will only be used for targets that support libopcodes based\n\
+disassembler styling.  When Python Pygments based styling is used\n\
+then this style has no effect."),
+					       &style_disasm_set_list,
+					       &style_disasm_show_list,
+					       false);
+
+  disasm_comment_style.add_setshow_commands (no_class, _("\
+Disassembler comment display styling.\n\
+Configure the colors and display intensity for comments in the\n\
+disassembler output.  The \"disassembler comment\" style is used for\n\
+the comment character, and everything after the comment character up to\n\
+the end of the line.  The comment style overrides any other styling,\n\
+e.g. a register name in a comment will use the comment styling.\n\
+\n\
+This style will only be used for targets that support libopcodes based\n\
+disassembler styling.  When Python Pygments based styling is used\n\
+then this style has no effect."),
+					     &style_disasm_set_list,
+					     &style_disasm_show_list,
+					     false);
+
+  line_number_style.add_setshow_commands (no_class, _("\
+Line number display styling.\n\
+Configure colors and display intensity for line numbers\n\
+The \"line-number\" style is used when GDB displays line numbers\n\
+coming from your source code."),
+				       &style_set_list, &style_show_list,
+				       false);
+
+  /* Setup 'disassembler address' style and 'disassembler symbol' style,
+     these are aliases for 'address' and 'function' styles respectively.  */
+  add_alias_cmd ("address", address_prefix_cmds.set, no_class, 0,
+		 &style_disasm_set_list);
+  add_alias_cmd ("address", address_prefix_cmds.show, no_class, 0,
+		 &style_disasm_show_list);
+  add_alias_cmd ("symbol", function_prefix_cmds.set, no_class, 0,
+		 &style_disasm_set_list);
+  add_alias_cmd ("symbol", function_prefix_cmds.show, no_class, 0,
+		 &style_disasm_show_list);
+
+  add_setshow_string_cmd ("warning-prefix", no_class,
+			  &warning_prefix,
+			  _("Set the warning prefix text."),
+			  _("Show the warning prefix text."),
+			  _("\
+The warning prefix text is displayed before any warning, when\n\
+emoji output is enabled."),
+			  nullptr, show_warning_prefix,
+			  &style_set_list, &style_show_list);
+  add_setshow_string_cmd ("error-prefix", no_class,
+			  &error_prefix,
+			  _("Set the error prefix text."),
+			  _("Show the error prefix text."),
+			  _("\
+The error prefix text is displayed before any error, when\n\
+emoji output is enabled."),
+			  nullptr, show_error_prefix,
+			  &style_set_list, &style_show_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.20200303/gdb/cli/cli-style.h ./gdb/cli/cli-style.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-style.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-style.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI stylizing
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2025 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/>.  */
 
-#ifndef CLI_CLI_STYLE_H
-#define CLI_CLI_STYLE_H
+#ifndef GDB_CLI_CLI_STYLE_H
+#define GDB_CLI_CLI_STYLE_H
 
 #include "ui-file.h"
 #include "command.h"
@@ -30,7 +30,8 @@ class cli_style_option
 public:
 
   /* Construct a CLI style option with a foreground color.  */
-  cli_style_option (const char *name, ui_file_style::basic_color fg);
+  cli_style_option (const char *name, ui_file_style::basic_color fg,
+		    ui_file_style::intensity = ui_file_style::NORMAL);
 
   /* Construct a CLI style option with an intensity.  */
   cli_style_option (const char *name, ui_file_style::intensity i);
@@ -42,14 +43,13 @@ public:
   /* Return the style name.  */
   const char *name () { return m_name; };
 
-  /* Call once to register this CLI style with the CLI engine.  */
-  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);
+  /* Call once to register this CLI style with the CLI engine.  Returns
+     the set/show prefix commands for the style.  */
+  set_show_commands add_setshow_commands (enum command_class theclass,
+					  const char *prefix_doc,
+					  struct cmd_list_element **set_list,
+					  struct cmd_list_element **show_list,
+					  bool skip_intensity);
 
   /* Return the 'set style NAME' command list, that can be used
      to build a lambda DO_SET to call add_setshow_commands.  */
@@ -67,15 +67,12 @@ private:
   const char *m_name;
 
   /* The foreground.  */
-  const char *m_foreground;
+  ui_file_style::color m_foreground;
   /* The background.  */
-  const char *m_background;
+  ui_file_style::color m_background;
   /* The intensity.  */
   const char *m_intensity;
 
-  /* Storage for prefixes needed when registering the commands.  */
-  std::string m_show_prefix;
-  std::string m_set_prefix;
   /* Storage for command lists needed when registering
      subcommands.  */
   struct cmd_list_element *m_set_list = nullptr;
@@ -99,6 +96,10 @@ private:
 				 const char *value);
 };
 
+/* Chains containing all defined "set/show style" subcommands.  */
+extern struct cmd_list_element *style_set_list;
+extern struct cmd_list_element *style_show_list;
+
 /* The file name style.  */
 extern cli_style_option file_name_style;
 
@@ -117,19 +118,90 @@ extern cli_style_option highlight_style;
 /* The title style.  */
 extern cli_style_option title_style;
 
+/* Style used for commands.  */
+extern cli_style_option command_style;
+
 /* The metadata style.  */
 extern cli_style_option metadata_style;
 
+/* The disassembler style for mnemonics or assembler directives
+   (e.g. '.byte', etc).  */
+extern cli_style_option disasm_mnemonic_style;
+
+/* The disassembler style for register names.  */
+extern cli_style_option disasm_register_style;
+
+/* The disassembler style for numerical values that are not addresses, this
+   includes immediate operands (e.g. in, an add instruction), but also
+   address offsets (e.g. in a load instruction).  */
+extern cli_style_option disasm_immediate_style;
+
+/* The disassembler style for comments.  */
+extern cli_style_option disasm_comment_style;
+
 /* The border style of a TUI window that does not have the focus.  */
 extern cli_style_option tui_border_style;
 
 /* The border style of a TUI window that does have the focus.  */
 extern cli_style_option tui_active_border_style;
 
+/* The style to use for the GDB version string.  */
+extern cli_style_option version_style;
+
+/* The style for a line number.  */
+extern cli_style_option line_number_style;
+
 /* True if source styling is enabled.  */
 extern bool source_styling;
 
-/* True if styling is enabled.  */
-extern bool cli_styling;
+/* True if disassembler styling is enabled.  */
+extern bool disassembler_styling;
+
+/* Check for environment variables that indicate styling should start as
+   disabled.  If any are found then disable styling.  Styling is never
+   enabled by this call.  If styling was already disabled then it remains
+   disabled after this call.  */
+extern void disable_styling_from_environment ();
+
+/* Equivalent to 'set style enabled off'.  Can be used during GDB's start
+   up if a command line option, or environment variable, indicates that
+   styling should be turned off.  */
+extern void disable_cli_styling ();
+
+/* Return true styled output is currently enabled.  */
+extern bool term_cli_styling ();
+
+/* Allow styling to be temporarily suppressed without changing the value of
+   'set style enabled' user setting.  This is useful in, for example, the
+   Python gdb.execute() call which can produce unstyled output.  */
+struct scoped_disable_styling
+{
+  /* Temporarily suppress styling without changing the value of 'set
+     style enabled' user setting.  */
+  scoped_disable_styling ();
+
+  /* If the constructor started suppressing styling, then styling is
+     resumed after this destructor call.  */
+  ~scoped_disable_styling ();
+
+private:
+
+  /* The value to restore in the destructor.  */
+  bool m_old_value;
+};
+
+/* Return true if emoji styling is allowed.  */
+extern bool emojis_ok ();
+
+/* Disable emoji styling.  This is here so that Windows can disable
+   emoji when the console is in use.  It shouldn't be called
+   elsewhere.  */
+extern void no_emojis ();
+
+/* Print the warning prefix, if desired.  */
+extern void print_warning_prefix (ui_file *file);
+
+/* Print the error prefix, if desired.  */
+extern void print_error_prefix (ui_file *file);
 
-#endif /* CLI_CLI_STYLE_H */
+#endif /* GDB_CLI_CLI_STYLE_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.20200303/gdb/cli/cli-utils.c ./gdb/cli/cli-utils.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-utils.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-utils.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI utilities.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "cli/cli-utils.h"
 #include "value.h"
 
@@ -37,7 +36,7 @@ get_ulongest (const char **pp, int trail
 
       if (val != NULL)	/* Value history reference */
 	{
-	  if (TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
+	  if (val->type ()->code () == TYPE_CODE_INT)
 	    retval = value_as_long (val);
 	  else
 	    error (_("History value must have integer type."));
@@ -96,11 +95,11 @@ get_number_trailer (const char **pp, int
 
       if (val)	/* Value history reference */
 	{
-	  if (TYPE_CODE (value_type (val)) == TYPE_CODE_INT)
+	  if (val->type ()->code () == TYPE_CODE_INT)
 	    retval = value_as_long (val);
 	  else
 	    {
-	      printf_filtered (_("History value must have integer type.\n"));
+	      gdb_printf (_("History value must have integer type.\n"));
 	      retval = 0;
 	    }
 	}
@@ -122,8 +121,8 @@ get_number_trailer (const char **pp, int
 	    retval = (int) longest_val;
 	  else
 	    {
-	      printf_filtered (_("Convenience variable must "
-				 "have integer value.\n"));
+	      gdb_printf (_("Convenience variable must "
+			    "have integer value.\n"));
 	      retval = 0;
 	    }
 	}
@@ -198,10 +197,10 @@ info_print_args_help (const char *prefix
 		      bool document_n_flag)
 {
   return xstrprintf (_("\
-%sIf NAMEREGEXP is provided, only prints the %s whose name\n\
-matches NAMEREGEXP.\n\
-If -t TYPEREGEXP is provided, only prints the %s whose type\n\
-matches TYPEREGEXP.  Note that the matching is done with the type\n\
+%sIf NAMEREGEXP is provided, only prints the %s\n\
+whose name matches NAMEREGEXP.\n\
+If -t TYPEREGEXP is provided, only prints the %s\n\
+whose type matches TYPEREGEXP.  Note that the matching is done with the type\n\
 printed by the 'whatis' command.\n\
 By default, the command might produce headers and/or messages indicating\n\
 why no %s can be printed.\n\
@@ -209,7 +208,7 @@ The flag -q disables the production of t
 		     prefix, entity_kind, entity_kind, entity_kind,
 		     (document_n_flag ? _("\n\
 By default, the command will include non-debug symbols in the output;\n\
-these can be excluded using the -n flag.") : ""));
+these can be excluded using the -n flag.") : "")).release ();
 }
 
 /* See documentation in cli-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.20200303/gdb/cli/cli-utils.h ./gdb/cli/cli-utils.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli/cli-utils.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli/cli-utils.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* CLI utilities.
 
-   Copyright (C) 2011-2020 Free Software Foundation, Inc.
+   Copyright (C) 2011-2025 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/>.  */
 
-#ifndef CLI_CLI_UTILS_H
-#define CLI_CLI_UTILS_H
+#ifndef GDB_CLI_CLI_UTILS_H
+#define GDB_CLI_CLI_UTILS_H
 
 #include "completer.h"
 
@@ -82,7 +82,7 @@ public:
   /* STRING is the string to be parsed.  */
   void init (const char *string);
 
-  /* While processing a range, this fuction is called iteratively; At
+  /* While processing a range, this function is called iteratively; At
      each call it will return the next value in the range.
 
      At the beginning of parsing a range, the char pointer
@@ -225,4 +225,4 @@ struct qcs_flags
    message.  */
 extern void validate_flags_qcs (const char *which_command, qcs_flags *flags);
 
-#endif /* CLI_CLI_UTILS_H */
+#endif /* GDB_CLI_CLI_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.20200303/gdb/cli-out.c ./gdb/cli-out.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli-out.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli-out.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Output generating routines for GDB CLI.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
 
    Contributed by Cygnus Solutions.
    Written by Fernando Nasser for Cygnus.
@@ -20,12 +20,12 @@
    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 "cli-out.h"
 #include "completer.h"
 #include "readline/readline.h"
 #include "cli/cli-style.h"
+#include "ui.h"
 
 /* These are the CLI output functions */
 
@@ -73,7 +73,7 @@ cli_ui_out::do_table_header (int width,
     return;
 
   do_field_string (0, width, alignment, 0, col_hdr.c_str (),
-		   ui_file_style ());
+		   title_style.style ());
 }
 
 /* Mark beginning of a list */
@@ -94,13 +94,14 @@ cli_ui_out::do_end (ui_out_type type)
 
 void
 cli_ui_out::do_field_signed (int fldno, int width, ui_align alignment,
-			     const char *fldname, LONGEST value)
+			     const char *fldname, LONGEST value,
+			     const ui_file_style &style)
 {
   if (m_suppress_output)
     return;
 
   do_field_string (fldno, width, alignment, fldname, plongest (value),
-		   ui_file_style ());
+		   style);
 }
 
 /* output an unsigned field */
@@ -171,10 +172,10 @@ cli_ui_out::do_field_string (int fldno,
 
   if (string)
     {
-      if (test_flags (unfiltered_output))
-	fputs_styled_unfiltered (string, style, m_streams.back ());
-      else
-	fputs_styled (string, style, m_streams.back ());
+      ui_file *stream = m_streams.back ();
+      stream->emit_style_escape (style);
+      stream->puts (string);
+      stream->emit_style_escape (ui_file_style ());
     }
 
   if (after)
@@ -205,10 +206,7 @@ cli_ui_out::do_spaces (int numspaces)
   if (m_suppress_output)
     return;
 
-  if (test_flags (unfiltered_output))
-    print_spaces (numspaces, m_streams.back ());
-  else
-    print_spaces_filtered (numspaces, m_streams.back ());
+  print_spaces (numspaces, m_streams.back ());
 }
 
 void
@@ -217,10 +215,7 @@ cli_ui_out::do_text (const char *string)
   if (m_suppress_output)
     return;
 
-  if (test_flags (unfiltered_output))
-    fputs_unfiltered (string, m_streams.back ());
-  else
-    fputs_filtered (string, m_streams.back ());
+  gdb_puts (string, m_streams.back ());
 }
 
 void
@@ -230,20 +225,23 @@ cli_ui_out::do_message (const ui_file_st
   if (m_suppress_output)
     return;
 
-  /* Use the "no_gdbfmt" variant here to avoid recursion.
-     vfprintf_styled calls into cli_ui_out::message to handle the
-     gdb-specific printf formats.  */
-  vfprintf_styled_no_gdbfmt (m_streams.back (), style,
-			     !test_flags (unfiltered_output), format, args);
+  std::string str = string_vprintf (format, args);
+  if (!str.empty ())
+    {
+      ui_file *stream = m_streams.back ();
+      stream->emit_style_escape (style);
+      stream->puts (str.c_str ());
+      stream->emit_style_escape (ui_file_style ());
+    }
 }
 
 void
-cli_ui_out::do_wrap_hint (const char *identstring)
+cli_ui_out::do_wrap_hint (int indent)
 {
   if (m_suppress_output)
     return;
 
-  wrap_here (identstring);
+  m_streams.back ()->wrap_here (indent);
 }
 
 void
@@ -265,15 +263,170 @@ cli_ui_out::do_redirect (ui_file *outstr
     m_streams.pop_back ();
 }
 
+/* Initialize a progress update to be displayed with
+   cli_ui_out::do_progress_notify.  */
+
+void
+cli_ui_out::do_progress_start ()
+{
+  m_progress_info.emplace_back ();
+}
+
+#define MIN_CHARS_PER_LINE 50
+#define MAX_CHARS_PER_LINE 4096
+
+/* Print a progress update.  MSG is a string to be printed on the line above
+   the progress bar.  TOTAL is the size of the download whose progress is
+   being displayed.  UNIT should be the unit of TOTAL (ex. "K"). If HOWMUCH
+   is between 0.0 and 1.0, a progress bar is displayed indicating the percentage
+   of completion and the download size.  If HOWMUCH is negative, a progress
+   indicator will tick across the screen.  If the output stream is not a tty
+   then only MSG is printed.
+
+   - printed for tty, HOWMUCH between 0.0 and 1.0:
+	<MSG
+	[#########                  ]  HOWMUCH*100% (TOTAL UNIT)\r>
+   - printed for tty, HOWMUCH < 0.0:
+	<MSG
+	[    ###                    ]\r>
+   - printed for not-a-tty:
+	<MSG...\n>
+*/
+
+void
+cli_ui_out::do_progress_notify (const std::string &msg,
+				const char *unit,
+				double howmuch, double total)
+{
+  int chars_per_line = get_chars_per_line ();
+  struct ui_file *stream = get_unbuffered (m_streams.back ());
+  cli_progress_info &info (m_progress_info.back ());
+
+  if (chars_per_line > MAX_CHARS_PER_LINE)
+    chars_per_line = MAX_CHARS_PER_LINE;
+
+  if (info.state == progress_update::START)
+    {
+      if (stream->isatty ()
+	  && current_ui->input_interactive_p ()
+	  && chars_per_line >= MIN_CHARS_PER_LINE)
+	{
+	  gdb_printf (stream, "%s\n", msg.c_str ());
+	  info.state = progress_update::BAR;
+	}
+      else
+	{
+	  gdb_printf (stream, "%s...\n", msg.c_str ());
+	  info.state = progress_update::WORKING;
+	}
+    }
+
+  if (info.state != progress_update::BAR
+      || chars_per_line < MIN_CHARS_PER_LINE)
+    return;
+
+  if (total > 0 && howmuch >= 0 && howmuch <= 1.0)
+    {
+      std::string progress = string_printf (" %3.f%% (%.2f %s)",
+					    howmuch * 100, total,
+					    unit);
+      int width = chars_per_line - progress.size () - 4;
+      int max = width * howmuch;
+
+      std::string display = "\r[";
+
+      for (int i = 0; i < width; ++i)
+	if (i < max)
+	  display += "#";
+	else
+	  display += " ";
+
+      display += "]" + progress;
+      gdb_printf (stream, "%s", display.c_str ());
+      gdb_flush (stream);
+    }
+  else
+    {
+      using namespace std::chrono;
+      milliseconds diff = duration_cast<milliseconds>
+	(steady_clock::now () - info.last_update);
+
+      /* Advance the progress indicator at a rate of 1 tick every
+	 every 0.5 seconds.  */
+      if (diff.count () >= 500)
+	{
+	  int width = chars_per_line - 4;
+
+	  gdb_printf (stream, "\r[");
+	  for (int i = 0; i < width; ++i)
+	    {
+	      if (i == info.pos % width
+		  || i == (info.pos + 1) % width
+		  || i == (info.pos + 2) % width)
+		gdb_printf (stream, "#");
+	      else
+		gdb_printf (stream, " ");
+	    }
+
+	  gdb_printf (stream, "]");
+	  gdb_flush (stream);
+	  info.last_update = steady_clock::now ();
+	  info.pos++;
+	}
+    }
+
+  return;
+}
+
+/* Clear do_progress_notify output from the current line.  Overwrites the
+   notification with whitespace.  */
+
+void
+cli_ui_out::clear_progress_notify ()
+{
+  struct ui_file *stream = get_unbuffered (m_streams.back ());
+  int chars_per_line = get_chars_per_line ();
+
+  scoped_restore save_pagination
+    = make_scoped_restore (&pagination_enabled, false);
+
+  if (!stream->isatty ()
+      || !current_ui->input_interactive_p ()
+      || chars_per_line < MIN_CHARS_PER_LINE)
+    return;
+
+  if (chars_per_line > MAX_CHARS_PER_LINE)
+    chars_per_line = MAX_CHARS_PER_LINE;
+
+  gdb_printf (stream, "\r");
+  for (int i = 0; i < chars_per_line; ++i)
+    gdb_printf (stream, " ");
+  gdb_printf (stream, "\r");
+
+  gdb_flush (stream);
+}
+
+/* Remove the most recent progress update from the progress_info stack
+   and overwrite the current line with whitespace.  */
+
+void
+cli_ui_out::do_progress_end ()
+{
+  struct ui_file *stream = m_streams.back ();
+  cli_progress_info &info (m_progress_info.back ());
+
+  if (stream->isatty () && info.state != progress_update::START)
+    clear_progress_notify ();
+
+  m_progress_info.pop_back ();
+}
+
 /* local functions */
 
 void
 cli_ui_out::field_separator ()
 {
-  if (test_flags (unfiltered_output))
-    fputc_unfiltered (' ', m_streams.back ());
-  else
-    fputc_filtered (' ', m_streams.back ());
+  gdb_putc (' ', m_streams.back ());
 }
 
 /* Constructor for cli_ui_out.  */
@@ -291,14 +444,6 @@ cli_ui_out::~cli_ui_out ()
 {
 }
 
-/* Initialize private members at startup.  */
-
-cli_ui_out *
-cli_out_new (struct ui_file *stream)
-{
-  return new cli_ui_out (stream, ui_source_list);
-}
-
 ui_file *
 cli_ui_out::set_stream (struct ui_file *stream)
 {
@@ -350,7 +495,7 @@ cli_mld_flush (const struct match_list_d
   fflush (rl_outstream);
 }
 
-EXTERN_C void _rl_erase_entire_line (void);
+extern "C" void _rl_erase_entire_line (void);
 
 /* CLI version of displayer.erase_entire_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.20200303/gdb/cli-out.h ./gdb/cli-out.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/cli-out.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/cli-out.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* Output generating routines for GDB CLI.
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 Free Software Foundation, Inc.
    Contributed by Cygnus Solutions.
 
    This file is part of GDB.
@@ -17,23 +17,27 @@
    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 CLI_OUT_H
-#define CLI_OUT_H
+#ifndef GDB_CLI_OUT_H
+#define GDB_CLI_OUT_H
 
 #include "ui-out.h"
+#include <chrono>
 #include <vector>
 
 class cli_ui_out : public ui_out
 {
 public:
 
-  explicit cli_ui_out (ui_file *stream, ui_out_flags flags);
+  explicit cli_ui_out (ui_file *stream, ui_out_flags flags = ui_source_list);
   virtual ~cli_ui_out ();
 
   ui_file *set_stream (ui_file *stream);
 
   bool can_emit_style_escape () const override;
 
+  ui_file *current_stream () const override
+  { return m_streams.back (); }
+
 protected:
 
   virtual void do_table_begin (int nbrofcols, int nr_rows,
@@ -48,7 +52,8 @@ protected:
   virtual void do_begin (ui_out_type type, const char *id) override;
   virtual void do_end (ui_out_type type) override;
   virtual void do_field_signed (int fldno, int width, ui_align align,
-				const char *fldname, LONGEST value) override;
+				const char *fldname, LONGEST value,
+				const ui_file_style &style) override;
   virtual void do_field_unsigned (int fldno, int width, ui_align align,
 				  const char *fldname, ULONGEST value)
     override;
@@ -67,10 +72,15 @@ protected:
   virtual void do_message (const ui_file_style &style,
 			   const char *format, va_list args) override
     ATTRIBUTE_PRINTF (3,0);
-  virtual void do_wrap_hint (const char *identstring) override;
+  virtual void do_wrap_hint (int indent) override;
   virtual void do_flush () override;
   virtual void do_redirect (struct ui_file *outstream) override;
 
+  virtual void do_progress_start () override;
+  virtual void do_progress_notify (const std::string &, const char *,
+				   double, double) override;
+  virtual void do_progress_end () override;
+
   bool suppress_output ()
   { return m_suppress_output; }
 
@@ -80,10 +90,27 @@ private:
 
   std::vector<ui_file *> m_streams;
   bool m_suppress_output;
-};
 
-extern cli_ui_out *cli_out_new (struct ui_file *stream);
+  /* The state of a recent progress update.  */
+  struct cli_progress_info
+  {
+    /* Position of the progress indicator.  */
+    int pos;
+    /* The current state.  */
+    progress_update::state state;
+    /* Progress indicator's time of last update.  */
+    std::chrono::steady_clock::time_point last_update;
+
+    cli_progress_info ()
+      : pos (0), state (progress_update::START)
+    {}
+  };
+
+  /* Stack of progress info.  */
+  std::vector<cli_progress_info> m_progress_info;
+  void clear_progress_notify ();
+};
 
 extern void cli_display_match_list (char **matches, int len, int max);
 
-#endif
+#endif /* GDB_CLI_OUT_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.20200303/gdb/coff-pe-read.c ./gdb/coff-pe-read.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/coff-pe-read.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/coff-pe-read.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -21,7 +21,6 @@
 
    Contributed by Raoul M. Gough (RaoulGough@yahoo.co.uk).  */
 
-#include "defs.h"
 
 #include "coff-pe-read.h"
 
@@ -29,7 +28,7 @@
 #include "gdbtypes.h"
 
 #include "command.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "symtab.h"
 #include "symfile.h"
 #include "objfiles.h"
@@ -100,45 +99,14 @@ read_pe_section_index (const char *secti
 
 static int
 get_pe_section_index (const char *section_name,
-		      struct read_pe_section_data *sections,
-		      int nb_sections)
+		      const std::vector<read_pe_section_data> &sections)
 {
-  int i;
-
-  for (i = 0; i < nb_sections; i++)
+  for (int i = 0; i < sections.size (); i++)
     if (sections[i].section_name == section_name)
       return i;
   return PE_SECTION_INDEX_INVALID;
 }
 
-/* Structure used by get_section_vmas function below
-   to access section_data array and the size of the array
-   stored in nb_sections field.  */
-struct pe_sections_info
-{
-  int nb_sections;
-  struct read_pe_section_data *sections;
-};
-
-/* Record the virtual memory address of a section.  */
-
-static void
-get_section_vmas (bfd *abfd, asection *sectp, void *context)
-{
-  struct pe_sections_info *data = (struct pe_sections_info *) context;
-  struct read_pe_section_data *sections = data->sections;
-  int sectix = get_pe_section_index (sectp->name, sections,
-				     data->nb_sections);
-
-  if (sectix != PE_SECTION_INDEX_INVALID)
-    {
-      /* Data within the section start at rva_start in the pe and at
-         bfd_get_section_vma() within memory.  Store the offset.  */
-
-      sections[sectix].vma_offset
-	= bfd_section_vma (sectp) - sections[sectix].rva_start;
-    }
-}
 
 /* Create a minimal symbol entry for an exported symbol.
    SYM_NAME contains the exported name or NULL if exported by ordinal,
@@ -158,7 +126,8 @@ add_pe_exported_sym (minimal_symbol_read
 		     const char *dll_name, struct objfile *objfile)
 {
   /* Add the stored offset to get the loaded address of the symbol.  */
-  CORE_ADDR vma = func_rva + section_data->vma_offset;
+  unrelocated_addr vma = unrelocated_addr (func_rva
+					   + section_data->vma_offset);
 
   /* Generate a (hopefully unique) qualified name using the first part
      of the dll name, e.g. KERNEL32!AddAtomA.  This matches the style
@@ -174,10 +143,10 @@ add_pe_exported_sym (minimal_symbol_read
     = string_printf ("%s!%s", dll_name, bare_name.c_str ());
 
   if ((section_data->ms_type == mst_unknown) && debug_coff_pe_read)
-    fprintf_unfiltered (gdb_stdlog , _("Unknown section type for \"%s\""
-			" for entry \"%s\" in dll \"%s\"\n"),
-			section_data->section_name.c_str (), sym_name,
-			dll_name);
+    gdb_printf (gdb_stdlog , _("Unknown section type for \"%s\""
+			       " for entry \"%s\" in dll \"%s\"\n"),
+		section_data->section_name.c_str (), sym_name,
+		dll_name);
 
   reader.record_with_info (qualified_name.c_str (), vma, section_data->ms_type,
 			   section_data->index);
@@ -186,14 +155,14 @@ add_pe_exported_sym (minimal_symbol_read
   reader.record_with_info (bare_name.c_str (), vma, section_data->ms_type,
 			   section_data->index);
   if (debug_coff_pe_read > 1)
-    fprintf_unfiltered (gdb_stdlog, _("Adding exported symbol \"%s\""
-			" in dll \"%s\"\n"), sym_name, dll_name);
+    gdb_printf (gdb_stdlog, _("Adding exported symbol \"%s\""
+			      " in dll \"%s\"\n"), sym_name, dll_name);
 }
 
 /* Create a minimal symbol entry for an exported forward symbol.
    Return 1 if the forwarded function was found 0 otherwise.
    SYM_NAME contains the exported name or NULL if exported by ordinal,
-   FORWARD_DLL_NAME is the name of the DLL in which the target symobl resides,
+   FORWARD_DLL_NAME is the name of the DLL in which the target symbol resides,
    FORWARD_FUNC_NAME is the name of the target symbol in that DLL,
    ORDINAL is the ordinal index value of the symbol,
    DLL_NAME is the internal name of the DLL file,
@@ -205,48 +174,47 @@ add_pe_forwarded_sym (minimal_symbol_rea
 		      const char *forward_func_name, int ordinal,
 		      const char *dll_name, struct objfile *objfile)
 {
-  CORE_ADDR vma, baseaddr;
-  struct bound_minimal_symbol msymbol;
   enum minimal_symbol_type msymtype;
   int forward_dll_name_len = strlen (forward_dll_name);
-  int forward_func_name_len = strlen (forward_func_name);
-  int forward_len = forward_dll_name_len + forward_func_name_len + 2;
-  char *forward_qualified_name = (char *) alloca (forward_len);
-  short section;
-
-  xsnprintf (forward_qualified_name, forward_len, "%s!%s", forward_dll_name,
-	     forward_func_name);
-
-
-  msymbol = lookup_bound_minimal_symbol (forward_qualified_name);
 
+  std::string forward_qualified_name = string_printf ("%s!%s",
+						      forward_dll_name,
+						      forward_func_name);
+
+  bound_minimal_symbol msymbol
+    = lookup_minimal_symbol (current_program_space,
+			     forward_qualified_name.c_str ());
   if (!msymbol.minsym)
     {
       int i;
 
       for (i = 0; i < forward_dll_name_len; i++)
 	forward_qualified_name[i] = tolower (forward_qualified_name[i]);
-      msymbol = lookup_bound_minimal_symbol (forward_qualified_name);
+      msymbol = lookup_minimal_symbol (current_program_space,
+				       forward_qualified_name.c_str ());
     }
 
   if (!msymbol.minsym)
     {
       if (debug_coff_pe_read)
-	fprintf_unfiltered (gdb_stdlog, _("Unable to find function \"%s\" in"
-			    " dll \"%s\", forward of \"%s\" in dll \"%s\"\n"),
-			    forward_func_name, forward_dll_name, sym_name,
-			    dll_name);
+	gdb_printf (gdb_stdlog, _("Unable to find function \"%s\" in"
+				  " dll \"%s\", forward of \"%s\" in dll \"%s\"\n"),
+		    forward_func_name, forward_dll_name, sym_name,
+		    dll_name);
       return 0;
     }
 
   if (debug_coff_pe_read > 1)
-    fprintf_unfiltered (gdb_stdlog, _("Adding forwarded exported symbol"
-			" \"%s\" in dll \"%s\", pointing to \"%s\"\n"),
-			sym_name, dll_name, forward_qualified_name);
-
-  vma = BMSYMBOL_VALUE_ADDRESS (msymbol);
-  msymtype = MSYMBOL_TYPE (msymbol.minsym);
-  section = MSYMBOL_SECTION (msymbol.minsym);
+    gdb_printf (gdb_stdlog, _("Adding forwarded exported symbol"
+			      " \"%s\" in dll \"%s\", pointing to \"%s\"\n"),
+		sym_name, dll_name, forward_qualified_name.c_str ());
+
+  /* Calculate VMA as if it were relative to DLL_NAME/OBJFILE, even though
+     it actually points inside another dll (FORWARD_DLL_NAME).  */
+  unrelocated_addr vma = unrelocated_addr (msymbol.value_address ()
+					   - objfile->text_section_offset ());
+  msymtype = msymbol.minsym->type ();
+  int section = msymbol.minsym->section_index ();
 
   /* Generate a (hopefully unique) qualified name using the first part
      of the dll name, e.g. KERNEL32!AddAtomA.  This matches the style
@@ -266,14 +234,11 @@ 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));
 
-  reader.record_with_info (qualified_name.c_str (), vma - baseaddr, msymtype,
-			   section);
+  reader.record_with_info (qualified_name.c_str (), vma, msymtype, section);
 
   /* Enter the plain name as well, which might not be unique.  */
-  reader.record_with_info (bare_name.c_str(), vma - baseaddr, msymtype,
-			   section);
+  reader.record_with_info (bare_name.c_str(), vma, msymtype, section);
 
   return 1;
 }
@@ -291,23 +256,31 @@ read_pe_truncate_name (char *dll_name)
 
 /* Low-level support functions, direct from the ld module pe-dll.c.  */
 static unsigned int
-pe_get16 (bfd *abfd, int where)
+pe_get16 (bfd *abfd, int where, bool *fail)
 {
   unsigned char b[2];
 
-  bfd_seek (abfd, (file_ptr) where, SEEK_SET);
-  bfd_bread (b, (bfd_size_type) 2, abfd);
+  if (bfd_seek (abfd, where, SEEK_SET) != 0
+      || bfd_read (b, 2, abfd) != 2)
+    {
+      *fail = true;
+      return 0;
+    }
   return b[0] + (b[1] << 8);
 }
 
 static unsigned int
-pe_get32 (bfd *abfd, int where)
+pe_get32 (bfd *abfd, int where, bool *fail)
 {
   unsigned char b[4];
 
-  bfd_seek (abfd, (file_ptr) where, SEEK_SET);
-  bfd_bread (b, (bfd_size_type) 4, abfd);
-  return b[0] + (b[1] << 8) + (b[2] << 16) + (b[3] << 24);
+  if (bfd_seek (abfd, where, SEEK_SET) != 0
+      || bfd_read (b, 4, abfd) != 4)
+    {
+      *fail = true;
+      return 0;
+    }
+  return b[0] + (b[1] << 8) + (b[2] << 16) + ((unsigned) b[3] << 24);
 }
 
 static unsigned int
@@ -323,7 +296,7 @@ pe_as32 (void *ptr)
 {
   unsigned char *b = (unsigned char *) ptr;
 
-  return b[0] + (b[1] << 8) + (b[2] << 16) + (b[3] << 24);
+  return b[0] + (b[1] << 8) + (b[2] << 16) + ((unsigned) b[3] << 24);
 }
 
 /* Read the (non-debug) export symbol table from a portable
@@ -334,7 +307,7 @@ void
 read_pe_exported_syms (minimal_symbol_reader &reader,
 		       struct objfile *objfile)
 {
-  bfd *dll = objfile->obfd;
+  bfd *dll = objfile->obfd.get ();
   unsigned long nbnormal, nbforward;
   unsigned long pe_header_offset, opthdr_ofs, num_entries, i;
   unsigned long export_opthdrrva, export_opthdrsize;
@@ -342,17 +315,11 @@ 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;
   int otherix = PE_SECTION_TABLE_SIZE;
   int is_pe64 = 0;
   int is_pe32 = 0;
 
-  /* Array elements are for text, data and bss in that order
-     Initialization with RVA_START > RVA_END guarantees that
-     unused sections won't be matched.  */
-  struct pe_sections_info pe_sections_info;
-
-  char const *target = bfd_get_target (objfile->obfd);
+  char const *target = bfd_get_target (objfile->obfd.get ());
 
   std::vector<struct read_pe_section_data> section_data
     (PE_SECTION_TABLE_SIZE);
@@ -371,42 +338,57 @@ read_pe_exported_syms (minimal_symbol_re
   section_data[PE_SECTION_INDEX_BSS].section_name = ".bss";
 
   is_pe64 = (strcmp (target, "pe-x86-64") == 0
-	     || strcmp (target, "pei-x86-64") == 0);
+	     || strcmp (target, "pei-x86-64") == 0
+	     || strcmp (target, "pe-aarch64") == 0
+	     || strcmp (target, "pei-aarch64") == 0);
   is_pe32 = (strcmp (target, "pe-i386") == 0
 	     || strcmp (target, "pei-i386") == 0
 	     || strcmp (target, "pe-arm-wince-little") == 0
 	     || strcmp (target, "pei-arm-wince-little") == 0);
+
+  /* Possibly print a debug message about DLL not having a valid format.  */
+  auto maybe_print_debug_msg = [&] () -> void {
+    if (debug_coff_pe_read)
+      gdb_printf (gdb_stdlog, _("%s doesn't appear to be a DLL\n"),
+		  bfd_get_filename (dll));
+  };
+
   if (!is_pe32 && !is_pe64)
-    {
-      /* This is not a recognized PE format file.  Abort now, because
-	 the code is untested on anything else.  *FIXME* test on
-	 further architectures and loosen or remove this test.  */
-      return;
-    }
+    return maybe_print_debug_msg ();
 
   /* Get pe_header, optional header and numbers of export entries.  */
-  pe_header_offset = pe_get32 (dll, 0x3c);
+  bool fail = false;
+  pe_header_offset = pe_get32 (dll, 0x3c, &fail);
+  if (fail)
+    return maybe_print_debug_msg ();
   opthdr_ofs = pe_header_offset + 4 + 20;
   if (is_pe64)
-    num_entries = pe_get32 (dll, opthdr_ofs + 108);
+    num_entries = pe_get32 (dll, opthdr_ofs + 108, &fail);
   else
-    num_entries = pe_get32 (dll, opthdr_ofs + 92);
+    num_entries = pe_get32 (dll, opthdr_ofs + 92, &fail);
+  if (fail)
+    return maybe_print_debug_msg ();
 
   if (num_entries < 1)		/* No exports.  */
     return;
   if (is_pe64)
     {
-      export_opthdrrva = pe_get32 (dll, opthdr_ofs + 112);
-      export_opthdrsize = pe_get32 (dll, opthdr_ofs + 116);
+      export_opthdrrva = pe_get32 (dll, opthdr_ofs + 112, &fail);
+      export_opthdrsize = pe_get32 (dll, opthdr_ofs + 116, &fail);
     }
   else
     {
-      export_opthdrrva = pe_get32 (dll, opthdr_ofs + 96);
-      export_opthdrsize = pe_get32 (dll, opthdr_ofs + 100);
+      export_opthdrrva = pe_get32 (dll, opthdr_ofs + 96, &fail);
+      export_opthdrsize = pe_get32 (dll, opthdr_ofs + 100, &fail);
     }
-  nsections = pe_get16 (dll, pe_header_offset + 4 + 2);
+  if (fail)
+    return maybe_print_debug_msg ();
+
+  nsections = pe_get16 (dll, pe_header_offset + 4 + 2, &fail);
   secptr = (pe_header_offset + 4 + 20 +
-	    pe_get16 (dll, pe_header_offset + 4 + 16));
+	    pe_get16 (dll, pe_header_offset + 4 + 16, &fail));
+  if (fail)
+    return maybe_print_debug_msg ();
   expptr = 0;
   export_size = 0;
 
@@ -415,12 +397,14 @@ read_pe_exported_syms (minimal_symbol_re
     {
       char sname[8];
       unsigned long secptr1 = secptr + 40 * i;
-      unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-      unsigned long vsize = pe_get32 (dll, secptr1 + 16);
-      unsigned long fptr = pe_get32 (dll, secptr1 + 20);
-
-      bfd_seek (dll, (file_ptr) secptr1, SEEK_SET);
-      bfd_bread (sname, (bfd_size_type) sizeof (sname), dll);
+      unsigned long vaddr = pe_get32 (dll, secptr1 + 12, &fail);
+      unsigned long vsize = pe_get32 (dll, secptr1 + 16, &fail);
+      unsigned long fptr = pe_get32 (dll, secptr1 + 20, &fail);
+
+      if (fail
+	  || bfd_seek (dll, secptr1, SEEK_SET) != 0
+	  || bfd_read (sname, sizeof (sname), dll) != sizeof (sname))
+	return maybe_print_debug_msg ();
 
       if ((strcmp (sname, ".edata") == 0)
 	  || (vaddr <= export_opthdrrva && export_opthdrrva < vaddr + vsize))
@@ -428,19 +412,25 @@ read_pe_exported_syms (minimal_symbol_re
 	  if (strcmp (sname, ".edata") != 0)
 	    {
 	      if (debug_coff_pe_read)
-		fprintf_unfiltered (gdb_stdlog, _("Export RVA for dll "
-				    "\"%s\" is in section \"%s\"\n"),
-				    dll_name, sname);
+		gdb_printf (gdb_stdlog, _("Export RVA for dll "
+					  "\"%s\" is in section \"%s\"\n"),
+			    bfd_get_filename (dll), sname);
 	    }
 	  else if (export_opthdrrva != vaddr && debug_coff_pe_read)
-	    fprintf_unfiltered (gdb_stdlog, _("Wrong value of export RVA"
-				" for dll \"%s\": 0x%lx instead of 0x%lx\n"),
-				dll_name, export_opthdrrva, vaddr);
+	    gdb_printf (gdb_stdlog, _("Wrong value of export RVA"
+				      " for dll \"%s\": 0x%lx instead of 0x%lx\n"),
+			bfd_get_filename (dll), export_opthdrrva, vaddr);
 	  expptr = fptr + (export_opthdrrva - vaddr);
 	  break;
 	}
     }
 
+  if (expptr == 0)
+    {
+      /* no section contains export table rva */
+      return;
+    }
+
   export_rva = export_opthdrrva;
   export_size = export_opthdrsize;
 
@@ -455,16 +445,18 @@ read_pe_exported_syms (minimal_symbol_re
   for (i = 0; i < nsections; i++)
     {
       unsigned long secptr1 = secptr + 40 * i;
-      unsigned long vsize = pe_get32 (dll, secptr1 + 8);
-      unsigned long vaddr = pe_get32 (dll, secptr1 + 12);
-      unsigned long characteristics = pe_get32 (dll, secptr1 + 36);
+      unsigned long vsize = pe_get32 (dll, secptr1 + 8, &fail);
+      unsigned long vaddr = pe_get32 (dll, secptr1 + 12, &fail);
+      unsigned long characteristics = pe_get32 (dll, secptr1 + 36, &fail);
       char sec_name[SCNNMLEN + 1];
       int sectix;
       unsigned int bfd_section_index;
       asection *section;
 
-      bfd_seek (dll, (file_ptr) secptr1 + 0, SEEK_SET);
-      bfd_bread (sec_name, (bfd_size_type) SCNNMLEN, dll);
+      if (fail
+	  || bfd_seek (dll, secptr1 + 0, SEEK_SET) != 0
+	  || bfd_read (sec_name, SCNNMLEN, dll) != SCNNMLEN)
+	return maybe_print_debug_msg ();
       sec_name[SCNNMLEN] = '\0';
 
       sectix = read_pe_section_index (sec_name);
@@ -503,8 +495,9 @@ read_pe_exported_syms (minimal_symbol_re
   gdb::def_vector<unsigned char> expdata_storage (export_size);
   expdata = expdata_storage.data ();
 
-  bfd_seek (dll, (file_ptr) expptr, SEEK_SET);
-  bfd_bread (expdata, (bfd_size_type) export_size, dll);
+  if (bfd_seek (dll, expptr, SEEK_SET) != 0
+      || bfd_read (expdata, export_size, dll) != export_size)
+    return maybe_print_debug_msg ();
   erva = expdata - export_rva;
 
   nexp = pe_as32 (expdata + 24);
@@ -514,20 +507,27 @@ read_pe_exported_syms (minimal_symbol_re
   exp_funcbase = pe_as32 (expdata + 28);
 
   /* Use internal dll name instead of full pathname.  */
-  dll_name = (char *) (pe_as32 (expdata + 12) + erva);
-
-  pe_sections_info.nb_sections = otherix;
-  pe_sections_info.sections = section_data.data ();
+  char *dll_name = (char *) (pe_as32 (expdata + 12) + erva);
 
-  bfd_map_over_sections (dll, get_section_vmas, &pe_sections_info);
+  for (asection *sectp : gdb_bfd_sections (dll))
+    {
+      int sectix = get_pe_section_index (sectp->name, section_data);
+      if (sectix != PE_SECTION_INDEX_INVALID)
+	{
+	  /* Data within the section start at rva_start in the pe and at
+	     bfd_get_section_vma() within memory.  Store the offset.  */
+	  section_data[sectix].vma_offset
+	    = bfd_section_vma (sectp) - section_data[sectix].rva_start;
+	}
+    }
 
   /* Truncate name at first dot. Should maybe also convert to all
      lower case for convenience on Windows.  */
   read_pe_truncate_name (dll_name);
 
   if (debug_coff_pe_read)
-    fprintf_unfiltered (gdb_stdlog, _("DLL \"%s\" has %ld export entries,"
-			" base=%ld\n"), dll_name, nexp, ordbase);
+    gdb_printf (gdb_stdlog, _("DLL \"%s\" has %ld export entries,"
+			      " base=%ld\n"), dll_name, nexp, ordbase);
   nbforward = 0;
   nbnormal = 0;
   /* Iterate through the list of symbols.  */
@@ -543,7 +543,7 @@ read_pe_exported_syms (minimal_symbol_re
       /* Pointer to the function address vector.  */
       /* This is relative to ordinal value. */
       unsigned long func_rva = pe_as32 (erva + exp_funcbase +
-                                        ordinal * 4);
+					ordinal * 4);
 
       /* Find this symbol's section in our own array.  */
       int sectix = 0;
@@ -552,20 +552,20 @@ read_pe_exported_syms (minimal_symbol_re
       /* First handle forward cases.  */
       if (func_rva >= export_rva && func_rva < export_rva + export_size)
 	{
-	  char *forward_name = (char *) (erva + func_rva);
-	  char *funcname = (char *) (erva + name_rva);
-	  char *forward_dll_name = forward_name;
-	  char *forward_func_name = forward_name;
-	  char *sep = strrchr (forward_name, '.');
+	  const char *forward_name = (const char *) (erva + func_rva);
+	  const char *funcname = (const char *) (erva + name_rva);
+	  const char *forward_dll_name = forward_name;
+	  const char *forward_func_name = forward_name;
+	  const char *sep = strrchr (forward_name, '.');
 
-	  if (sep)
+	  std::string name_storage;
+	  if (sep != nullptr)
 	    {
 	      int len = (int) (sep - forward_name);
 
-	      forward_dll_name = (char *) alloca (len + 1);
-	      strncpy (forward_dll_name, forward_name, len);
-	      forward_dll_name[len] = '\0';
-	      forward_func_name = ++sep;
+	      name_storage = std::string (forward_name, len);
+	      forward_dll_name = name_storage.c_str ();
+	      forward_func_name = sep + 1;
 	    }
 	  if (add_pe_forwarded_sym (reader, funcname, forward_dll_name,
 				    forward_func_name, ordinal,
@@ -579,7 +579,7 @@ read_pe_exported_syms (minimal_symbol_re
 	  if ((func_rva >= section_data[sectix].rva_start)
 	      && (func_rva < section_data[sectix].rva_end))
 	    {
-	      char *sym_name = (char *) (erva + name_rva);
+	      const char *sym_name = (const char *) (erva + name_rva);
 
 	      section_found = 1;
 	      add_pe_exported_sym (reader, sym_name, func_rva, ordinal,
@@ -590,7 +590,7 @@ read_pe_exported_syms (minimal_symbol_re
 	}
       if (!section_found)
 	{
-	  char *funcname = (char *) (erva + name_rva);
+	  const char *funcname = (const char *) (erva + name_rva);
 
 	  if (name_rva == 0)
 	    {
@@ -599,16 +599,16 @@ read_pe_exported_syms (minimal_symbol_re
 	      ++nbnormal;
 	    }
 	  else if (debug_coff_pe_read)
-	    fprintf_unfiltered (gdb_stdlog, _("Export name \"%s\" ord. %lu,"
-				" RVA 0x%lx in dll \"%s\" not handled\n"),
-				funcname, ordinal, func_rva, dll_name);
+	    gdb_printf (gdb_stdlog, _("Export name \"%s\" ord. %lu,"
+				      " RVA 0x%lx in dll \"%s\" not handled\n"),
+			funcname, ordinal, func_rva, dll_name);
 	}
     }
 
   if (debug_coff_pe_read)
-    fprintf_unfiltered (gdb_stdlog, _("Finished reading \"%s\", exports %ld,"
-			" forwards %ld, total %ld/%ld.\n"), dll_name, nbnormal,
-			nbforward, nbnormal + nbforward, nexp);
+    gdb_printf (gdb_stdlog, _("Finished reading \"%s\", exports %ld,"
+			      " forwards %ld, total %ld/%ld.\n"), dll_name, nbnormal,
+		nbforward, nbnormal + nbforward, nexp);
 }
 
 /* Extract from ABFD the offset of the .text section.
@@ -637,7 +637,9 @@ pe_text_section_offset (struct bfd *abfd
   target = bfd_get_target (abfd);
 
   is_pe64 = (strcmp (target, "pe-x86-64") == 0
-	     || strcmp (target, "pei-x86-64") == 0);
+	     || strcmp (target, "pei-x86-64") == 0
+	     || strcmp (target, "pe-aarch64") == 0
+	     || strcmp (target, "pei-aarch64") == 0);
   is_pe32 = (strcmp (target, "pe-i386") == 0
 	     || strcmp (target, "pei-i386") == 0
 	     || strcmp (target, "pe-arm-wince-little") == 0
@@ -652,20 +654,27 @@ pe_text_section_offset (struct bfd *abfd
     }
 
   /* Get pe_header, optional header and numbers of sections.  */
-  pe_header_offset = pe_get32 (abfd, 0x3c);
-  nsections = pe_get16 (abfd, pe_header_offset + 4 + 2);
+  bool fail = false;
+  pe_header_offset = pe_get32 (abfd, 0x3c, &fail);
+  if (fail)
+    return DEFAULT_COFF_PE_TEXT_SECTION_OFFSET;
+  nsections = pe_get16 (abfd, pe_header_offset + 4 + 2, &fail);
   secptr = (pe_header_offset + 4 + 20 +
-	    pe_get16 (abfd, pe_header_offset + 4 + 16));
+	    pe_get16 (abfd, pe_header_offset + 4 + 16, &fail));
+  if (fail)
+    return DEFAULT_COFF_PE_TEXT_SECTION_OFFSET;
 
   /* Get the rva and size of the export section.  */
   for (i = 0; i < nsections; i++)
     {
       char sname[SCNNMLEN + 1];
       unsigned long secptr1 = secptr + 40 * i;
-      unsigned long vaddr = pe_get32 (abfd, secptr1 + 12);
+      unsigned long vaddr = pe_get32 (abfd, secptr1 + 12, &fail);
 
-      bfd_seek (abfd, (file_ptr) secptr1, SEEK_SET);
-      bfd_bread (sname, (bfd_size_type) SCNNMLEN, abfd);
+      if (fail
+	  || bfd_seek (abfd, secptr1, SEEK_SET) != 0
+	  || bfd_read (sname, SCNNMLEN, abfd) != SCNNMLEN)
+	return DEFAULT_COFF_PE_TEXT_SECTION_OFFSET;
       sname[SCNNMLEN] = '\0';
       if (strcmp (sname, ".text") == 0)
 	return vaddr;
@@ -680,13 +689,12 @@ static void
 show_debug_coff_pe_read (struct ui_file *file, int from_tty,
 			 struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Coff PE read debugging is %s.\n"), value);
+  gdb_printf (file, _("Coff PE read debugging is %s.\n"), value);
 }
 
 /* Adds "Set/show debug coff_pe_read" commands.  */
 
-void
-_initialize_coff_pe_read (void)
+INIT_GDB_FILE (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.20200303/gdb/coff-pe-read.h ./gdb/coff-pe-read.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/coff-pe-read.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/coff-pe-read.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -19,8 +19,8 @@
 
    Contributed by Raoul M. Gough (RaoulGough@yahoo.co.uk).  */
 
-#if !defined (COFF_PE_READ_H)
-#define COFF_PE_READ_H
+#ifndef GDB_COFF_PE_READ_H
+#define GDB_COFF_PE_READ_H
 
 class minimal_symbol_reader;
 struct objfile;
@@ -35,4 +35,4 @@ extern void read_pe_exported_syms (minim
    Returns default value 0x1000 if information is not found.  */
 extern CORE_ADDR pe_text_section_offset (struct bfd *abfd);
 
-#endif /* !defined (COFF_PE_READ_H) */
+#endif /* GDB_COFF_PE_READ_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.20200303/gdb/coffread.c ./gdb/coffread.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/coffread.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/coffread.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
    Contributed by David D. Johnson, Brown University (ddj@cs.brown.edu).
 
    This file is part of GDB.
@@ -17,18 +17,18 @@
    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-top.h"
 #include "symtab.h"
 #include "gdbtypes.h"
 #include "demangle.h"
 #include "breakpoint.h"
 
 #include "bfd.h"
-#include "gdb_obstack.h"
+#include "gdbsupport/gdb_obstack.h"
 #include <ctype.h>
 
-#include "coff/internal.h"	/* Internal format of COFF symbols in BFD */
-#include "libcoff.h"		/* FIXME secret internal data from BFD */
+#include "coff/internal.h"
+#include "libcoff.h"
 #include "objfiles.h"
 #include "buildsym-legacy.h"
 #include "stabsread.h"
@@ -36,12 +36,11 @@
 #include "target.h"
 #include "block.h"
 #include "dictionary.h"
+#include "dwarf2/public.h"
+#include "gdb-stabs.h"
 
 #include "coff-pe-read.h"
 
-#include "psymtab.h"
-#include "build-id.h"
-
 /* The objfile we are currently reading.  */
 
 static struct objfile *coffread_objfile;
@@ -60,12 +59,12 @@ struct coff_symfile_info
 
 /* Key for COFF-associated data.  */
 
-static const struct objfile_key<coff_symfile_info> coff_objfile_data_key;
+static const registry<objfile>::key<coff_symfile_info> coff_objfile_data_key;
 
 /* Translate an external name string into a user-visible name.  */
 #define	EXTERNAL_NAME(string, abfd) \
-	(string[0] == bfd_get_symbol_leading_char (abfd) \
-	? string + 1 : string)
+  (*string != '\0' && *string == bfd_get_symbol_leading_char (abfd)	\
+   ? string + 1 : string)
 
 /* To be an sdb debug type, type must have at least a basic or primary
    derived type.  Using this rather than checking against T_NULL is
@@ -123,7 +122,7 @@ static unsigned local_auxesz;
 static int pe_file;
 
 /* Chain of typedefs of pointers to empty struct/union types.
-   They are chained thru the SYMBOL_VALUE_CHAIN.  */
+   They are chained through the SYMBOL_VALUE_CHAIN.  */
 
 static struct symbol *opaque_type_chain[HASHSIZE];
 
@@ -155,10 +154,11 @@ static int type_vector_length;
 #define INITIAL_TYPE_VECTOR_LENGTH 160
 
 static char *linetab = NULL;
-static long linetab_offset;
-static unsigned long linetab_size;
+static file_ptr linetab_offset;
+static file_ptr linetab_size;
 
 static char *stringtab = NULL;
+static long stringtab_length = 0;
 
 extern void stabsread_clear_cache (void);
 
@@ -188,23 +188,116 @@ static struct symbol *process_coff_symbo
 
 static void patch_opaque_types (struct symtab *);
 
-static void enter_linenos (long, int, int, struct objfile *);
+static void enter_linenos (file_ptr, int, int, struct objfile *);
 
-static int init_lineno (bfd *, long, int, gdb::unique_xmalloc_ptr<char> *);
+static int init_lineno (bfd *, file_ptr, file_ptr, gdb::unique_xmalloc_ptr<char> *);
 
 static char *getsymname (struct internal_syment *);
 
 static const char *coff_getfilename (union internal_auxent *);
 
-static int init_stringtab (bfd *, long, gdb::unique_xmalloc_ptr<char> *);
+static int init_stringtab (bfd *, file_ptr, gdb::unique_xmalloc_ptr<char> *);
 
 static void read_one_sym (struct coff_symbol *,
 			  struct internal_syment *,
 			  union internal_auxent *);
 
 static void coff_symtab_read (minimal_symbol_reader &,
-			      long, unsigned int, struct objfile *);
-
+			      file_ptr, unsigned int, struct objfile *);
+
+/* Scan and build partial symbols for an coff symbol file.
+   The coff file has already been processed to get its minimal symbols.
+
+   This routine is the equivalent of dbx_symfile_init and dbx_symfile_read
+   rolled into one.
+
+   OBJFILE is the object file we are reading symbols from.
+   ADDR is the address relative to which the symbols are (e.g.
+   the base address of the text segment).
+   TEXTADDR is the address of the text section.
+   TEXTSIZE is the size of the text section.
+   STABSECTS is the list of .stab sections in OBJFILE.
+   STABSTROFFSET and STABSTRSIZE define the location in OBJFILE where the
+   .stabstr section exists.
+
+   This routine is mostly copied from dbx_symfile_init and dbx_symfile_read,
+   adjusted for coff details.  */
+
+void
+coffstab_build_psymtabs (struct objfile *objfile,
+			 CORE_ADDR textaddr, unsigned int textsize,
+			 const std::vector<asection *> &stabsects,
+			 file_ptr stabstroffset, unsigned int stabstrsize)
+{
+  int val;
+  bfd *sym_bfd = objfile->obfd.get ();
+  const char *name = bfd_get_filename (sym_bfd);
+  unsigned int stabsize;
+
+  stabs_deprecated_warning ();
+  /* Allocate struct to keep track of stab reading.  */
+  dbx_objfile_data_key.emplace (objfile);
+  dbx_symfile_info *key = dbx_objfile_data_key.get (objfile);
+
+  DBX_TEXT_ADDR (objfile) = textaddr;
+  DBX_TEXT_SIZE (objfile) = textsize;
+
+#define	COFF_STABS_SYMBOL_SIZE	12	/* XXX FIXME XXX */
+  DBX_SYMBOL_SIZE (objfile) = COFF_STABS_SYMBOL_SIZE;
+  DBX_STRINGTAB_SIZE (objfile) = stabstrsize;
+
+  if (stabstrsize > bfd_get_size (sym_bfd))
+    error (_("ridiculous string table size: %d bytes"), stabstrsize);
+  DBX_STRINGTAB (objfile) = (char *)
+    obstack_alloc (&objfile->objfile_obstack, stabstrsize + 1);
+  OBJSTAT (objfile, sz_strtab += stabstrsize + 1);
+
+  /* Now read in the string table in one big gulp.  */
+
+  val = bfd_seek (sym_bfd, stabstroffset, SEEK_SET);
+  if (val < 0)
+    perror_with_name (name);
+  val = bfd_read (DBX_STRINGTAB (objfile), stabstrsize, sym_bfd);
+  if (val != stabstrsize)
+    perror_with_name (name);
+
+  stabsread_new_init ();
+  free_header_files ();
+  init_header_files ();
+
+  key->ctx.processing_acc_compilation = 1;
+
+  /* In a coff file, we've already installed the minimal symbols that came
+     from the coff (non-stab) symbol table, so always act like an
+     incremental load here.  */
+  scoped_restore save_symbuf_sections
+    = make_scoped_restore (&key->ctx.symbuf_sections);
+  if (stabsects.size () == 1)
+    {
+      stabsize = bfd_section_size (stabsects[0]);
+      DBX_SYMCOUNT (objfile) = stabsize / DBX_SYMBOL_SIZE (objfile);
+      DBX_SYMTAB_OFFSET (objfile) = stabsects[0]->filepos;
+    }
+  else
+    {
+      DBX_SYMCOUNT (objfile) = 0;
+      for (asection *section : stabsects)
+	{
+	  stabsize = bfd_section_size (section);
+	  DBX_SYMCOUNT (objfile) += stabsize / DBX_SYMBOL_SIZE (objfile);
+	}
+
+      DBX_SYMTAB_OFFSET (objfile) = stabsects[0]->filepos;
+
+      key->ctx.sect_idx = 1;
+      key->ctx.symbuf_sections = &stabsects;
+      key->ctx.symbuf_left = bfd_section_size (stabsects[0]);
+      key->ctx.symbuf_read = 0;
+    }
+
+  read_stabs_symtab (objfile, 0);
+}
+
 /* We are called once per section from coff_symfile_read.  We
    need to examine each section we are passed, check to see
    if it is something we are interested in processing, and
@@ -241,7 +334,7 @@ coff_locate_sections (bfd *abfd, asectio
       const char *s;
 
       /* We can have multiple .stab sections if linked with
-         --split-by-reloc.  */
+	 --split-by-reloc.  */
       for (s = name + sizeof ".stab" - 1; *s != '\0'; s++)
 	if (!isdigit (*s))
 	  break;
@@ -253,7 +346,7 @@ coff_locate_sections (bfd *abfd, asectio
 /* Return the section_offsets* that CS points to.  */
 static int cs_to_section (struct coff_symbol *, struct objfile *);
 
-struct find_targ_sec_arg
+struct coff_find_targ_sec_arg
   {
     int targ_index;
     asection **resultp;
@@ -262,7 +355,7 @@ struct find_targ_sec_arg
 static void
 find_targ_sec (bfd *abfd, asection *sect, void *obj)
 {
-  struct find_targ_sec_arg *args = (struct find_targ_sec_arg *) obj;
+  struct coff_find_targ_sec_arg *args = (struct coff_find_targ_sec_arg *) obj;
 
   if (sect->target_index == args->targ_index)
     *args->resultp = sect;
@@ -273,11 +366,11 @@ static struct bfd_section*
 cs_to_bfd_section (struct coff_symbol *cs, struct objfile *objfile)
 {
   asection *sect = NULL;
-  struct find_targ_sec_arg args;
+  struct coff_find_targ_sec_arg args;
 
   args.targ_index = cs->c_secnum;
   args.resultp = &sect;
-  bfd_map_over_sections (objfile->obfd, find_targ_sec, &args);
+  bfd_map_over_sections (objfile->obfd.get (), find_targ_sec, &args);
   return sect;
 }
 
@@ -289,7 +382,7 @@ cs_to_section (struct coff_symbol *cs, s
 
   if (sect == NULL)
     return SECT_OFF_TEXT (objfile);
-  return gdb_bfd_section_index (objfile->obfd, sect);
+  return gdb_bfd_section_index (objfile->obfd.get (), sect);
 }
 
 /* Return the address of the section of a COFF symbol.  */
@@ -300,7 +393,7 @@ static CORE_ADDR
 cs_section_address (struct coff_symbol *cs, bfd *abfd)
 {
   asection *sect = NULL;
-  struct find_targ_sec_arg args;
+  struct coff_find_targ_sec_arg args;
   CORE_ADDR addr = 0;
 
   args.targ_index = cs->c_secnum;
@@ -353,7 +446,7 @@ coff_alloc_type (int index)
      We will fill it in later if we find out how.  */
   if (type == NULL)
     {
-      type = alloc_type (coffread_objfile);
+      type = type_allocator (coffread_objfile, language_c).new_type ();
       *type_addr = type;
     }
   return type;
@@ -364,18 +457,18 @@ coff_alloc_type (int index)
    it indicates the start of data for one original source file.  */
 
 static void
-coff_start_symtab (struct objfile *objfile, const char *name)
+coff_start_compunit_symtab (struct objfile *objfile, const char *name)
 {
   within_function = 0;
-  start_symtab (objfile,
-		name,
+  start_compunit_symtab (objfile,
+			 name,
   /* We never know the directory name for COFF.  */
-		 NULL,
+			 NULL,
   /* The start address is irrelevant, since we call
-     set_last_source_start_addr in coff_end_symtab.  */
-		 0,
+     set_last_source_start_addr in coff_end_compunit_symtab.  */
+			 0,
   /* Let buildsym.c deduce the language for this symtab.  */
-		 language_unknown);
+			 language_unknown);
   record_debugformat ("COFF");
 }
 
@@ -399,11 +492,11 @@ complete_symtab (const char *name, CORE_
    list of all such.  */
 
 static void
-coff_end_symtab (struct objfile *objfile)
+coff_end_compunit_symtab (struct objfile *objfile)
 {
   set_last_source_start_addr (current_source_start_addr);
 
-  end_symtab (current_source_end_addr, SECT_OFF_TEXT (objfile));
+  end_compunit_symtab (current_source_end_addr);
 
   /* Reinitialize for beginning of new file.  */
   set_last_source_file (NULL);
@@ -444,7 +537,7 @@ is_import_fixup_symbol (struct coff_symb
 
 static struct minimal_symbol *
 record_minimal_symbol (minimal_symbol_reader &reader,
-		       struct coff_symbol *cs, CORE_ADDR address,
+		       struct coff_symbol *cs, unrelocated_addr address,
 		       enum minimal_symbol_type type, int section, 
 		       struct objfile *objfile)
 {
@@ -484,11 +577,6 @@ coff_symfile_init (struct objfile *objfi
 {
   /* Allocate struct to keep track of the symfile.  */
   coff_objfile_data_key.emplace (objfile);
-
-  /* COFF objects may be reordered, so set OBJF_REORDERED.  If we
-     find this causes a significant slowdown in gdb then we could
-     set it in the debug symbol readers only when necessary.  */
-  objfile->flags |= OBJF_REORDERED;
 }
 
 /* This function is called for every section; it finds the outer
@@ -524,6 +612,82 @@ find_linenos (bfd *abfd, struct bfd_sect
 }
 
 
+/* A helper function for coff_symfile_read that reads minimal
+   symbols.  It may also read other forms of symbol as well.  */
+
+static void
+coff_read_minsyms (file_ptr symtab_offset, unsigned int nsyms,
+		   struct objfile *objfile)
+
+{
+  /* If minimal symbols were already read, and if we know we aren't
+     going to read any other kind of symbol here, then we can just
+     return.  */
+  if (objfile->per_bfd->minsyms_read && pe_file && nsyms == 0)
+    return;
+
+  minimal_symbol_reader reader (objfile);
+
+  if (pe_file && nsyms == 0)
+    {
+      /* We've got no debugging symbols, but it's a portable
+	 executable, so try to read the export table.  */
+      read_pe_exported_syms (reader, objfile);
+    }
+  else
+    {
+      /* Now that the executable file is positioned at symbol table,
+	 process it and define symbols accordingly.  */
+      coff_symtab_read (reader, symtab_offset, nsyms, objfile);
+    }
+
+  /* Install any minimal symbols that have been collected as the
+     current minimal symbols for this objfile.  */
+
+  reader.install ();
+
+  if (pe_file)
+    {
+      for (minimal_symbol *msym : objfile->msymbols ())
+	{
+	  const char *name = msym->linkage_name ();
+
+	  /* If the minimal symbols whose name are prefixed by "__imp_"
+	     or "_imp_", get rid of the prefix, and search the minimal
+	     symbol in OBJFILE.  Note that 'maintenance print msymbols'
+	     shows that type of these "_imp_XXXX" symbols is mst_data.  */
+	  if (msym->type () == mst_data)
+	    {
+	      const char *name1 = NULL;
+
+	      if (startswith (name, "_imp_"))
+		name1 = name + 5;
+	      else if (startswith (name, "__imp_"))
+		name1 = name + 6;
+	      if (name1 != NULL)
+		{
+		  int lead
+		    = bfd_get_symbol_leading_char (objfile->obfd.get ());
+
+		  if (lead != '\0' && *name1 == lead)
+		    name1 += 1;
+
+		  bound_minimal_symbol found
+		    = lookup_minimal_symbol (current_program_space, name1,
+					     objfile);
+
+		  /* If found, there are symbols named "_imp_foo" and "foo"
+		     respectively in OBJFILE.  Set the type of symbol "foo"
+		     as 'mst_solib_trampoline'.  */
+		  if (found.minsym != NULL
+		      && found.minsym->type () == mst_text)
+		    found.minsym->set_type (mst_solib_trampoline);
+		}
+	    }
+	}
+    }
+}
+
 /* The BFD for this file -- only good while we're actively reading
    symbols into a psymtab or a symtab.  */
 
@@ -535,14 +699,14 @@ static void
 coff_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
 {
   struct coff_symfile_info *info;
-  bfd *abfd = objfile->obfd;
+  bfd *abfd = objfile->obfd.get ();
   coff_data_type *cdata = coff_data (abfd);
   const char *filename = bfd_get_filename (abfd);
   int val;
   unsigned int num_symbols;
-  int symtab_offset;
-  int stringtab_offset;
-  int stabstrsize;
+  file_ptr symtab_offset;
+  file_ptr stringtab_offset;
+  unsigned int stabstrsize;
   
   info = coff_objfile_data_key.get (objfile);
   symfile_bfd = abfd;		/* Kludge for swap routines.  */
@@ -580,8 +744,8 @@ coff_symfile_read (struct objfile *objfi
      FIXME: We should use BFD to read the symbol table, and thus avoid
      this problem.  */
   pe_file =
-    startswith (bfd_get_target (objfile->obfd), "pe")
-    || startswith (bfd_get_target (objfile->obfd), "epoc-pe");
+    startswith (bfd_get_target (objfile->obfd.get ()), "pe")
+    || startswith (bfd_get_target (objfile->obfd.get ()), "epoc-pe");
 
   /* End of warning.  */
 
@@ -610,10 +774,10 @@ coff_symfile_read (struct objfile *objfi
       bfd_map_over_sections (abfd, find_linenos, (void *) info);
 
       val = init_lineno (abfd, info->min_lineno_offset,
-                         info->max_lineno_offset - info->min_lineno_offset,
+			 info->max_lineno_offset - info->min_lineno_offset,
 			 &linetab_storage);
       if (val < 0)
-        error (_("\"%s\": error reading line numbers."), filename);
+	error (_("\"%s\": error reading line numbers."), filename);
     }
 
   /* Now read the string table, all at once.  */
@@ -624,56 +788,7 @@ coff_symfile_read (struct objfile *objfi
   if (val < 0)
     error (_("\"%s\": can't get string table"), filename);
 
-  minimal_symbol_reader reader (objfile);
-
-  /* Now that the executable file is positioned at symbol table,
-     process it and define symbols accordingly.  */
-
-  coff_symtab_read (reader, (long) symtab_offset, num_symbols, objfile);
-
-  /* Install any minimal symbols that have been collected as the
-     current minimal symbols for this objfile.  */
-
-  reader.install ();
-
-  if (pe_file)
-    {
-      for (minimal_symbol *msym : objfile->msymbols ())
-	{
-	  const char *name = msym->linkage_name ();
-
-	  /* If the minimal symbols whose name are prefixed by "__imp_"
-	     or "_imp_", get rid of the prefix, and search the minimal
-	     symbol in OBJFILE.  Note that 'maintenance print msymbols'
-	     shows that type of these "_imp_XXXX" symbols is mst_data.  */
-	  if (MSYMBOL_TYPE (msym) == mst_data)
-	    {
-	      const char *name1 = NULL;
-
-	      if (startswith (name, "_imp_"))
-		name1 = name + 5;
-	      else if (startswith (name, "__imp_"))
-		name1 = name + 6;
-	      if (name1 != NULL)
-		{
-		  int lead = bfd_get_symbol_leading_char (objfile->obfd);
-		  struct bound_minimal_symbol found;
-
-                  if (lead != '\0' && *name1 == lead)
-		    name1 += 1;
-
-		  found = lookup_minimal_symbol (name1, NULL, objfile);
-
-		  /* If found, there are symbols named "_imp_foo" and "foo"
-		     respectively in OBJFILE.  Set the type of symbol "foo"
-		     as 'mst_solib_trampoline'.  */
-		  if (found.minsym != NULL
-		      && MSYMBOL_TYPE (found.minsym) == mst_text)
-		    MSYMBOL_TYPE (found.minsym) = mst_solib_trampoline;
-		}
-	    }
-	}
-    }
+  coff_read_minsyms (symtab_offset, num_symbols, objfile);
 
   if (!(objfile->flags & OBJF_READNEVER))
     bfd_map_over_sections (abfd, coff_locate_sections, (void *) info);
@@ -688,9 +803,7 @@ coff_symfile_read (struct objfile *objfi
 	}
 
       /* FIXME: dubious.  Why can't we use something normal like
-         bfd_get_section_contents?  */
-      bfd_seek (abfd, abfd->where, 0);
-
+	 bfd_get_section_contents?  */
       stabstrsize = bfd_section_size (info->stabstrsect);
 
       coffstab_build_psymtabs (objfile,
@@ -698,29 +811,19 @@ coff_symfile_read (struct objfile *objfi
 			       *info->stabsects,
 			       info->stabstrsect->filepos, stabstrsize);
     }
-  if (dwarf2_has_info (objfile, NULL))
+
+  if (dwarf2_initialize_objfile (objfile))
     {
-      /* DWARF2 sections.  */
-      dwarf2_build_psymtabs (objfile);
+      /* Nothing.  */
     }
 
-  dwarf2_build_frame_info (objfile);
-
   /* Try to add separate debug file if no symbols table found.   */
-  if (!objfile_has_partial_symbols (objfile))
+  else if (!objfile->has_partial_symbols ()
+	   && objfile->separate_debug_objfile == NULL
+	   && objfile->separate_debug_objfile_backlink == NULL)
     {
-      std::string debugfile = find_separate_debug_file_by_buildid (objfile);
-
-      if (debugfile.empty ())
-	debugfile = find_separate_debug_file_by_debuglink (objfile);
-
-      if (!debugfile.empty ())
-	{
-	  gdb_bfd_ref_ptr debug_bfd (symfile_bfd_open (debugfile.c_str ()));
-
-	  symbol_file_add_separate (debug_bfd.get (), debugfile.c_str (),
-				    symfile_flags, objfile);
-	}
+      if (objfile->find_and_add_separate_symbol_file (symfile_flags))
+	gdb_assert (objfile->separate_debug_objfile != nullptr);
     }
 }
 
@@ -750,10 +853,10 @@ coff_symfile_finish (struct objfile *obj
 
 static void
 coff_symtab_read (minimal_symbol_reader &reader,
-		  long symtab_offset, unsigned int nsyms,
+		  file_ptr 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;
@@ -779,29 +882,13 @@ coff_symtab_read (minimal_symbol_reader
 
   scoped_free_pendings free_pending;
 
-  /* Work around a stdio bug in SunOS4.1.1 (this makes me nervous....
-     it's hard to know I've really worked around it.  The fix should
-     be harmless, anyway).  The symptom of the bug is that the first
-     fread (in read_one_sym), will (in my example) actually get data
-     from file offset 268, when the fseek was to 264 (and ftell shows
-     264).  This causes all hell to break loose.  I was unable to
-     reproduce this on a short test program which operated on the same
-     file, performing (I think) the same sequence of operations.
-
-     It stopped happening when I put in this (former) rewind().
-
-     FIXME: Find out if this has been reported to Sun, whether it has
-     been fixed in a later release, etc.  */
-
-  bfd_seek (objfile->obfd, 0, 0);
-
   /* Position to read the symbol table.  */
-  val = bfd_seek (objfile->obfd, (long) symtab_offset, 0);
+  val = bfd_seek (objfile->obfd.get (), symtab_offset, 0);
   if (val < 0)
     perror_with_name (objfile_name (objfile));
 
   coffread_objfile = objfile;
-  nlist_bfd_global = objfile->obfd;
+  nlist_bfd_global = objfile->obfd.get ();
   nlist_nsyms_global = nsyms;
   set_last_source_file (NULL);
   memset (opaque_type_chain, 0, sizeof opaque_type_chain);
@@ -811,22 +898,22 @@ coff_symtab_read (minimal_symbol_reader
   type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
   type_vector = XCNEWVEC (struct type *, type_vector_length);
 
-  coff_start_symtab (objfile, "");
+  coff_start_compunit_symtab (objfile, "");
 
   symnum = 0;
   while (symnum < nsyms)
     {
-      QUIT;			/* Make this command interruptable.  */
+      QUIT;			/* Make this command interruptible.  */
 
       read_one_sym (cs, &main_sym, &main_aux);
 
       if (cs->c_symnum == next_file_symnum && cs->c_sclass != C_FILE)
 	{
 	  if (get_last_source_file ())
-	    coff_end_symtab (objfile);
+	    coff_end_compunit_symtab (objfile);
 
-	  coff_start_symtab (objfile, "_globals_");
-	  /* coff_start_symtab will set the language of this symtab to
+	  coff_start_compunit_symtab (objfile, "_globals_");
+	  /* coff_start_compunit_symtab will set the language of this symtab to
 	     language_unknown, since such a ``file name'' is not
 	     recognized.  Override that with the minimal language to
 	     allow printing values in this symtab.  */
@@ -852,8 +939,9 @@ coff_symtab_read (minimal_symbol_reader
 	  tmpaddr = cs->c_value;
 	  /* Don't record unresolved symbols.  */
 	  if (!(cs->c_secnum <= 0 && cs->c_value == 0))
-	    record_minimal_symbol (reader, cs, tmpaddr, mst_text,
-				   section, objfile);
+	    record_minimal_symbol (reader, cs,
+				   unrelocated_addr (tmpaddr),
+				   mst_text, section, objfile);
 
 	  fcn_line_ptr = main_aux.x_sym.x_fcnary.x_fcn.x_lnnoptr;
 	  fcn_start_addr = tmpaddr;
@@ -889,8 +977,8 @@ coff_symtab_read (minimal_symbol_reader
 	     containing debugging information.  */
 	  if (get_last_source_file ())
 	    {
-	      coff_end_symtab (objfile);
-	      coff_start_symtab (objfile, filestring);
+	      coff_end_compunit_symtab (objfile);
+	      coff_start_compunit_symtab (objfile, filestring);
 	    }
 	  in_source_file = 1;
 	  break;
@@ -903,7 +991,7 @@ coff_symtab_read (minimal_symbol_reader
 	     backtraces, so filter them out (from phdm@macqel.be).  */
 	  if (within_function)
 	    break;
-	  /* Fall through.  */
+	  [[fallthrough]];
 	case C_STAT:
 	case C_THUMBLABEL:
 	case C_THUMBSTAT:
@@ -919,8 +1007,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;
 		}
@@ -941,7 +1029,7 @@ coff_symtab_read (minimal_symbol_reader
 	       that look like this.  Ignore them.  */
 	    break;
 	  /* For static symbols that don't start with '.'...  */
-	  /* Fall through.  */
+	  [[fallthrough]];
 	case C_THUMBEXT:
 	case C_THUMBEXTFUNC:
 	case C_EXT:
@@ -967,26 +1055,26 @@ coff_symtab_read (minimal_symbol_reader
 		   symbol lookup which returned no match.  */
 		break;
 	      }
- 	    else if (cs->c_secnum == N_ABS)
- 	      {
- 		/* Use the correct minimal symbol type (and don't
- 		   relocate) for absolute values.  */
- 		ms_type = mst_abs;
- 		sec = cs_to_section (cs, objfile);
- 		tmpaddr = cs->c_value;
- 	      }
+	    else if (cs->c_secnum == N_ABS)
+	      {
+		/* Use the correct minimal symbol type (and don't
+		   relocate) for absolute values.  */
+		ms_type = mst_abs;
+		sec = cs_to_section (cs, objfile);
+		tmpaddr = cs->c_value;
+	      }
 	    else
 	      {
 		asection *bfd_section = cs_to_bfd_section (cs, objfile);
 
 		sec = cs_to_section (cs, objfile);
 		tmpaddr = cs->c_value;
- 		/* Statics in a PE file also get relocated.  */
- 		if (cs->c_sclass == C_EXT
- 		    || cs->c_sclass == C_THUMBEXTFUNC
- 		    || cs->c_sclass == C_THUMBEXT
- 		    || (pe_file && (cs->c_sclass == C_STAT)))
-		  offset = ANOFFSET (objfile->section_offsets, sec);
+		/* Statics in a PE file also get relocated.  */
+		if (cs->c_sclass == C_EXT
+		    || cs->c_sclass == C_THUMBEXTFUNC
+		    || cs->c_sclass == C_THUMBEXT
+		    || (pe_file && (cs->c_sclass == C_STAT)))
+		  offset = objfile->section_offsets[sec];
 
 		if (bfd_section->flags & SEC_CODE)
 		  {
@@ -1013,8 +1101,9 @@ coff_symtab_read (minimal_symbol_reader
 		  ms_type = mst_unknown;
 	      }
 
-	    msym = record_minimal_symbol (reader, cs, tmpaddr, ms_type,
-					  sec, objfile);
+	    msym = record_minimal_symbol (reader, cs,
+					  unrelocated_addr (tmpaddr),
+					  ms_type, sec, objfile);
 	    if (msym)
 	      gdbarch_coff_make_msymbol_special (gdbarch,
 						 cs->c_sclass, msym);
@@ -1025,8 +1114,8 @@ coff_symtab_read (minimal_symbol_reader
 
 		sym = process_coff_symbol
 		  (cs, &main_aux, objfile);
-		SYMBOL_VALUE (sym) = tmpaddr + offset;
-		SYMBOL_SECTION (sym) = sec;
+		sym->set_value_longest (tmpaddr + offset);
+		sym->set_section_index (sec);
 	      }
 	  }
 	  break;
@@ -1039,7 +1128,7 @@ coff_symtab_read (minimal_symbol_reader
 	      /* Value contains address of first non-init type
 		 code.  */
 	      /* main_aux.x_sym.x_misc.x_lnsz.x_lnno
-	         contains line number of '{' }.  */
+		 contains line number of '{' }.  */
 	      if (cs->c_naux != 1)
 		complaint (_("`.bf' symbol %d has no aux entry"),
 			   cs->c_symnum);
@@ -1047,7 +1136,7 @@ coff_symtab_read (minimal_symbol_reader
 	      fcn_first_line_addr = cs->c_value;
 
 	      /* Might want to check that locals are 0 and
-	         context_stack_depth is zero, and complain if not.  */
+		 context_stack_depth is zero, and complain if not.  */
 
 	      depth = 0;
 	      newobj = push_context (depth, fcn_start_addr);
@@ -1061,9 +1150,9 @@ coff_symtab_read (minimal_symbol_reader
 	      if (!within_function)
 		error (_("Bad coff function information."));
 	      /* The value of .ef is the address of epilogue code;
-	         not useful for gdb.  */
+		 not useful for gdb.  */
 	      /* { main_aux.x_sym.x_misc.x_lnsz.x_lnno
-	         contains number of lines to '}' */
+		 contains number of lines to '}' */
 
 	      if (outermost_context_p ())
 		{	/* We attempted to pop an empty context stack.  */
@@ -1095,16 +1184,17 @@ coff_symtab_read (minimal_symbol_reader
 		  fcn_last_line = main_aux.x_sym.x_misc.x_lnsz.x_lnno;
 		}
 	      /* fcn_first_line is the line number of the opening '{'.
-	         Do not record it - because it would affect gdb's idea
-	         of the line number of the first statement of the
-	         function - except for one-line functions, for which
-	         it is also the line number of all the statements and
-	         of the closing '}', and for which we do not have any
-	         other statement-line-number.  */
+		 Do not record it - because it would affect gdb's idea
+		 of the line number of the first statement of the
+		 function - except for one-line functions, for which
+		 it is also the line number of all the statements and
+		 of the closing '}', and for which we do not have any
+		 other statement-line-number.  */
 	      if (fcn_last_line == 1)
-		record_line (get_current_subfile (), fcn_first_line,
-			     gdbarch_addr_bits_remove (gdbarch,
-						       fcn_first_line_addr));
+		record_line
+		  (get_current_subfile (), fcn_first_line,
+		   unrelocated_addr (gdbarch_addr_bits_remove (gdbarch,
+							       fcn_first_line_addr)));
 	      else
 		enter_linenos (fcn_line_ptr, fcn_first_line,
 			       fcn_last_line, objfile);
@@ -1113,8 +1203,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 +1212,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 +1235,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);
@@ -1165,22 +1251,15 @@ coff_symtab_read (minimal_symbol_reader
 	}
     }
 
-  if ((nsyms == 0) && (pe_file))
-    {
-      /* We've got no debugging symbols, but it's a portable
-	 executable, so try to read the export table.  */
-      read_pe_exported_syms (reader, objfile);
-    }
-
   if (get_last_source_file ())
-    coff_end_symtab (objfile);
+    coff_end_compunit_symtab (objfile);
 
   /* Patch up any opaque types (references to types that are not defined
      in the file where they are referenced, e.g. "struct foo *bar").  */
   {
     for (compunit_symtab *cu : objfile->compunits ())
       {
-	for (symtab *s : compunit_filetabs (cu))
+	for (symtab *s : cu->filetabs ())
 	  patch_opaque_types (s);
       }
   }
@@ -1204,24 +1283,24 @@ read_one_sym (struct coff_symbol *cs,
   bfd_size_type bytes;
 
   cs->c_symnum = symnum;
-  bytes = bfd_bread (temp_sym, local_symesz, nlist_bfd_global);
+  bytes = bfd_read (temp_sym, local_symesz, nlist_bfd_global);
   if (bytes != local_symesz)
     error (_("%s: error reading symbols"), objfile_name (coffread_objfile));
   bfd_coff_swap_sym_in (symfile_bfd, temp_sym, (char *) sym);
   cs->c_naux = sym->n_numaux & 0xff;
   if (cs->c_naux >= 1)
     {
-      bytes  = bfd_bread (temp_aux, local_auxesz, nlist_bfd_global);
+      bytes = bfd_read (temp_aux, local_auxesz, nlist_bfd_global);
       if (bytes != local_auxesz)
 	error (_("%s: error reading symbols"), objfile_name (coffread_objfile));
       bfd_coff_swap_aux_in (symfile_bfd, temp_aux,
 			    sym->n_type, sym->n_sclass,
 			    0, cs->c_naux, (char *) aux);
       /* If more than one aux entry, read past it (only the first aux
-         is important).  */
+	 is important).  */
       for (i = 1; i < cs->c_naux; i++)
 	{
-	  bytes = bfd_bread (temp_aux, local_auxesz, nlist_bfd_global);
+	  bytes = bfd_read (temp_aux, local_auxesz, nlist_bfd_global);
 	  if (bytes != local_auxesz)
 	    error (_("%s: error reading symbols"),
 		   objfile_name (coffread_objfile));
@@ -1274,7 +1353,7 @@ read_one_sym (struct coff_symbol *cs,
 /* Support for string table handling.  */
 
 static int
-init_stringtab (bfd *abfd, long offset, gdb::unique_xmalloc_ptr<char> *storage)
+init_stringtab (bfd *abfd, file_ptr offset, gdb::unique_xmalloc_ptr<char> *storage)
 {
   long length;
   int val;
@@ -1288,12 +1367,13 @@ init_stringtab (bfd *abfd, long offset,
   if (bfd_seek (abfd, offset, 0) < 0)
     return -1;
 
-  val = bfd_bread ((char *) lengthbuf, sizeof lengthbuf, abfd);
-  length = bfd_h_get_32 (symfile_bfd, lengthbuf);
-
+  val = bfd_read (lengthbuf, sizeof lengthbuf, abfd);
   /* If no string table is needed, then the file may end immediately
      after the symbols.  Just return with `stringtab' set to null.  */
-  if (val != sizeof lengthbuf || length < sizeof lengthbuf)
+  if (val != sizeof lengthbuf)
+    return 0;
+  length = bfd_h_get_32 (symfile_bfd, lengthbuf);
+  if (length < sizeof lengthbuf)
     return 0;
 
   storage->reset ((char *) xmalloc (length));
@@ -1301,11 +1381,12 @@ init_stringtab (bfd *abfd, long offset,
   /* This is in target format (probably not very useful, and not
      currently used), not host format.  */
   memcpy (stringtab, lengthbuf, sizeof lengthbuf);
+  stringtab_length = length;
   if (length == sizeof length)	/* Empty table -- just the count.  */
     return 0;
 
-  val = bfd_bread (stringtab + sizeof lengthbuf, 
-		   length - sizeof lengthbuf, abfd);
+  val = bfd_read (stringtab + sizeof lengthbuf,
+		  length - sizeof lengthbuf, abfd);
   if (val != length - sizeof lengthbuf || stringtab[length - 1] != '\0')
     return -1;
 
@@ -1320,8 +1401,9 @@ getsymname (struct internal_syment *symb
 
   if (symbol_entry->_n._n_n._n_zeroes == 0)
     {
-      /* FIXME: Probably should be detecting corrupt symbol files by
-         seeing whether offset points to within the stringtab.  */
+      if (symbol_entry->_n._n_n._n_offset > stringtab_length)
+	error (_("COFF Error: string table offset (%s) outside string table (length %ld)"),
+	       hex_string (symbol_entry->_n._n_n._n_offset), stringtab_length);
       result = stringtab + symbol_entry->_n._n_n._n_offset;
     }
   else
@@ -1343,16 +1425,17 @@ coff_getfilename (union internal_auxent
   static char buffer[BUFSIZ];
   const char *result;
 
-  if (aux_entry->x_file.x_n.x_zeroes == 0)
+  if (aux_entry->x_file.x_n.x_n.x_zeroes == 0)
     {
-      if (strlen (stringtab + aux_entry->x_file.x_n.x_offset) >= BUFSIZ)
-	internal_error (__FILE__, __LINE__, _("coff file name too long"));
-      strcpy (buffer, stringtab + aux_entry->x_file.x_n.x_offset);
+      if (strlen (stringtab + aux_entry->x_file.x_n.x_n.x_offset) >= BUFSIZ)
+	internal_error (_("coff file name too long"));
+      strcpy (buffer, stringtab + aux_entry->x_file.x_n.x_n.x_offset);
     }
   else
     {
-      strncpy (buffer, aux_entry->x_file.x_fname, FILNMLEN);
-      buffer[FILNMLEN] = '\0';
+      size_t x_fname_len = sizeof (aux_entry->x_file.x_n.x_fname);
+      strncpy (buffer, aux_entry->x_file.x_n.x_fname, x_fname_len);
+      buffer[x_fname_len] = '\0';
     }
   result = buffer;
 
@@ -1370,7 +1453,7 @@ coff_getfilename (union internal_auxent
    them into GDB's data structures.  */
 
 static int
-init_lineno (bfd *abfd, long offset, int size,
+init_lineno (bfd *abfd, file_ptr offset, file_ptr size,
 	     gdb::unique_xmalloc_ptr<char> *storage)
 {
   int val;
@@ -1388,7 +1471,7 @@ init_lineno (bfd *abfd, long offset, int
   storage->reset ((char *) xmalloc (size + local_linesz));
   linetab = storage->get ();
 
-  val = bfd_bread (storage->get (), size, abfd);
+  val = bfd_read (storage->get (), size, abfd);
   if (val != size)
     return -1;
 
@@ -1403,10 +1486,10 @@ init_lineno (bfd *abfd, long offset, int
 #endif
 
 static void
-enter_linenos (long file_offset, int first_line,
+enter_linenos (file_ptr 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;
 
@@ -1414,8 +1497,8 @@ enter_linenos (long file_offset, int fir
     return;
   if (file_offset < linetab_offset)
     {
-      complaint (_("Line number pointer %ld lower than start of line numbers"),
-		 file_offset);
+      complaint (_("Line number pointer %s lower than start of line numbers"),
+		 plongest (file_offset));
       if (file_offset > linetab_size)	/* Too big to be an offset?  */
 	return;
       file_offset += linetab_offset;	/* Try reading at that linetab
@@ -1441,11 +1524,10 @@ 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));
 	  record_line (get_current_subfile (),
 		       first_line + L_LNNO32 (&lptr),
-		       gdbarch_addr_bits_remove (gdbarch, addr));
+		       unrelocated_addr (gdbarch_addr_bits_remove (gdbarch,
+								   addr)));
 	}
       else
 	break;
@@ -1455,26 +1537,18 @@ enter_linenos (long file_offset, int fir
 static void
 patch_type (struct type *type, struct type *real_type)
 {
-  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);
-
-  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);
+  struct type *target = type->target_type ();
+  struct type *real_target = real_type->target_type ();
+
+  target->set_length (real_target->length ());
+  target->copy_fields (real_target);
 
-  if (TYPE_NAME (real_target))
+  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 ()));
     }
 }
 
@@ -1485,22 +1559,18 @@ patch_type (struct type *type, struct ty
 static void
 patch_opaque_types (struct symtab *s)
 {
-  const struct block *b;
-  struct block_iterator iter;
-  struct symbol *real_sym;
-
   /* Go through the per-file symbols only.  */
-  b = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (s), STATIC_BLOCK);
-  ALL_BLOCK_SYMBOLS (b, iter, real_sym)
+  const struct block *b = s->compunit ()->blockvector ()->static_block ();
+  for (struct symbol *real_sym : block_iterator_range (b))
     {
       /* Find completed typedefs to use to fix opaque ones.
-         Remove syms from the chain when their types are stored,
-         but search the whole chain, as there may be several syms
-         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
-	  && TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (real_sym))) != 0)
+	 Remove syms from the chain when their types are stored,
+	 but search the whole chain, as there may be several syms
+	 from different files with the same name.  */
+      if (real_sym->loc_class () == LOC_TYPEDEF
+	  && real_sym->domain () == TYPE_DOMAIN
+	  && real_sym->type ()->code () == TYPE_CODE_PTR
+	  && real_sym->type ()->target_type ()->length () != 0)
 	{
 	  const char *name = real_sym->linkage_name ();
 	  int hash = hashname (name);
@@ -1513,29 +1583,21 @@ patch_opaque_types (struct symtab *s)
 		  && strcmp (name + 1, sym->linkage_name () + 1) == 0)
 		{
 		  if (prev)
-		    {
-		      SYMBOL_VALUE_CHAIN (prev) = SYMBOL_VALUE_CHAIN (sym);
-		    }
+		    prev->set_value_chain (sym->value_chain ());
 		  else
-		    {
-		      opaque_type_chain[hash] = SYMBOL_VALUE_CHAIN (sym);
-		    }
+		    opaque_type_chain[hash] = sym->value_chain ();
 
-		  patch_type (SYMBOL_TYPE (sym), SYMBOL_TYPE (real_sym));
+		  patch_type (sym->type (), real_sym->type ());
 
 		  if (prev)
-		    {
-		      sym = SYMBOL_VALUE_CHAIN (prev);
-		    }
+		    sym = prev->value_chain ();
 		  else
-		    {
-		      sym = opaque_type_chain[hash];
-		    }
+		    sym = opaque_type_chain[hash];
 		}
 	      else
 		{
 		  prev = sym;
-		  sym = SYMBOL_VALUE_CHAIN (sym);
+		  sym->set_value_chain (sym);
 		}
 	    }
 	}
@@ -1545,14 +1607,14 @@ patch_opaque_types (struct symtab *s)
 static int
 coff_reg_to_regnum (struct symbol *sym, struct gdbarch *gdbarch)
 {
-  return gdbarch_sdb_reg_to_regnum (gdbarch, SYMBOL_VALUE (sym));
+  return gdbarch_sdb_reg_to_regnum (gdbarch, sym->value_longest ());
 }
 
 static const struct symbol_register_ops coff_register_funcs = {
   coff_reg_to_regnum
 };
 
-/* The "aclass" index for computed COFF symbols.  */
+/* The "loc_class" index for computed COFF symbols.  */
 
 static int coff_register_index;
 
@@ -1561,29 +1623,30 @@ 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);
+  name = EXTERNAL_NAME (name, objfile->obfd.get ());
+  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;
-  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-  SYMBOL_SECTION (sym) = cs_to_section (cs, objfile);
+  sym->set_value_longest (cs->c_value);
+  sym->set_domain (VAR_DOMAIN);
+  sym->set_section_index (cs_to_section (cs, objfile));
 
   if (ISFCN (cs->c_type))
     {
-      SYMBOL_VALUE (sym) += ANOFFSET (objfile->section_offsets,
-				      SECT_OFF_TEXT (objfile));
-      SYMBOL_TYPE (sym) =
-	lookup_function_type (decode_function_type (cs, cs->c_type,
-						    aux, objfile));
+      sym->set_domain (FUNCTION_DOMAIN);
+      sym->set_value_longest
+	(sym->value_longest () + objfile->text_section_offset ());
+      sym->set_type
+	(lookup_function_type (decode_function_type (cs, cs->c_type,
+						     aux, objfile)));
 
-      SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
+      sym->set_loc_class_index (LOC_BLOCK);
       if (cs->c_sclass == C_STAT || cs->c_sclass == C_THUMBSTAT
 	  || cs->c_sclass == C_THUMBSTATFUNC)
 	add_symbol_to_list (sym, get_file_symbols ());
@@ -1593,36 +1656,32 @@ process_coff_symbol (struct coff_symbol
     }
   else
     {
-      SYMBOL_TYPE (sym) = decode_type (cs, cs->c_type, aux, objfile);
+      sym->set_type (decode_type (cs, cs->c_type, aux, objfile));
       switch (cs->c_sclass)
 	{
 	case C_NULL:
 	  break;
 
 	case C_AUTO:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_LOCAL;
+	  sym->set_loc_class_index (LOC_LOCAL);
 	  add_symbol_to_list (sym, get_local_symbols ());
 	  break;
 
 	case C_THUMBEXT:
 	case C_THUMBEXTFUNC:
 	case C_EXT:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
-	  SET_SYMBOL_VALUE_ADDRESS (sym,
-				    (CORE_ADDR) cs->c_value
-				    + ANOFFSET (objfile->section_offsets,
-						SECT_OFF_TEXT (objfile)));
+	  sym->set_loc_class_index (LOC_STATIC);
+	  sym->set_value_address ((CORE_ADDR) cs->c_value
+				  + objfile->section_offsets[SECT_OFF_TEXT (objfile)]);
 	  add_symbol_to_list (sym, get_global_symbols ());
 	  break;
 
 	case C_THUMBSTAT:
 	case C_THUMBSTATFUNC:
 	case C_STAT:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
-	  SET_SYMBOL_VALUE_ADDRESS (sym,
-				    (CORE_ADDR) cs->c_value
-				    + ANOFFSET (objfile->section_offsets,
-						SECT_OFF_TEXT (objfile)));
+	  sym->set_loc_class_index (LOC_STATIC);
+	  sym->set_value_address ((CORE_ADDR) cs->c_value
+				  + objfile->section_offsets[SECT_OFF_TEXT (objfile)]);
 	  if (within_function)
 	    {
 	      /* Static symbol of local scope.  */
@@ -1639,8 +1698,8 @@ process_coff_symbol (struct coff_symbol
 	case C_GLBLREG:
 #endif
 	case C_REG:
-	  SYMBOL_ACLASS_INDEX (sym) = coff_register_index;
-	  SYMBOL_VALUE (sym) = cs->c_value;
+	  sym->set_loc_class_index (coff_register_index);
+	  sym->set_value_longest (cs->c_value);
 	  add_symbol_to_list (sym, get_local_symbols ());
 	  break;
 
@@ -1649,27 +1708,27 @@ process_coff_symbol (struct coff_symbol
 	  break;
 
 	case C_ARG:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_ARG;
-	  SYMBOL_IS_ARGUMENT (sym) = 1;
+	  sym->set_loc_class_index (LOC_ARG);
+	  sym->set_is_argument (1);
 	  add_symbol_to_list (sym, get_local_symbols ());
 	  break;
 
 	case C_REGPARM:
-	  SYMBOL_ACLASS_INDEX (sym) = coff_register_index;
-	  SYMBOL_IS_ARGUMENT (sym) = 1;
-	  SYMBOL_VALUE (sym) = cs->c_value;
+	  sym->set_loc_class_index (coff_register_index);
+	  sym->set_is_argument (1);
+	  sym->set_value_longest (cs->c_value);
 	  add_symbol_to_list (sym, get_local_symbols ());
 	  break;
 
 	case C_TPDEF:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
-	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
+	  sym->set_loc_class_index (LOC_TYPEDEF);
+	  sym->set_domain (TYPE_DOMAIN);
 
 	  /* If type has no name, give it one.  */
-	  if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
+	  if (sym->type ()->name () == 0)
 	    {
-	      if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_PTR
-		  || TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_FUNC)
+	      if (sym->type ()->code () == TYPE_CODE_PTR
+		  || sym->type ()->code () == TYPE_CODE_FUNC)
 		{
 		  /* If we are giving a name to a type such as
 		     "pointer to foo" or "function returning foo", we
@@ -1679,7 +1738,7 @@ process_coff_symbol (struct coff_symbol
 		     This is not just a consequence of GDB's type
 		     management; CC and GCC (at least through version
 		     2.4) both output variables of either type char *
-		     or caddr_t with the type refering to the C_TPDEF
+		     or caddr_t with the type referring to the C_TPDEF
 		     symbol for caddr_t.  If a future compiler cleans
 		     this up it GDB is not ready for it yet, but if it
 		     becomes ready we somehow need to disable this
@@ -1692,8 +1751,7 @@ process_coff_symbol (struct coff_symbol
 		  ;
 		}
 	      else
-		TYPE_NAME (SYMBOL_TYPE (sym)) =
-		  xstrdup (sym->linkage_name ());
+		sym->type ()->set_name (xstrdup (sym->linkage_name ()));
 	    }
 
 	  /* Keep track of any type which points to empty structured
@@ -1702,14 +1760,14 @@ 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
-	      && TYPE_LENGTH (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym))) == 0
-	      && TYPE_CODE (TYPE_TARGET_TYPE (SYMBOL_TYPE (sym)))
-	         != TYPE_CODE_UNDEF)
+	  if (sym->type ()->code () == TYPE_CODE_PTR
+	      && sym->type ()->target_type ()->length () == 0
+	      && sym->type ()->target_type ()->code ()
+	      != TYPE_CODE_UNDEF)
 	    {
 	      int i = hashname (sym->linkage_name ());
 
-	      SYMBOL_VALUE_CHAIN (sym) = opaque_type_chain[i];
+	      sym->set_value_chain (opaque_type_chain[i]);
 	      opaque_type_chain[i] = sym;
 	    }
 	  add_symbol_to_list (sym, get_file_symbols ());
@@ -1718,17 +1776,17 @@ process_coff_symbol (struct coff_symbol
 	case C_STRTAG:
 	case C_UNTAG:
 	case C_ENTAG:
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
-	  SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
+	  sym->set_loc_class_index (LOC_TYPEDEF);
+	  sym->set_domain (STRUCT_DOMAIN);
 
 	  /* 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 (sym->type ()->name () == 0)
 	    if (sym->linkage_name () != NULL
 		&& *sym->linkage_name () != '~'
 		&& *sym->linkage_name () != '.')
-	      TYPE_NAME (SYMBOL_TYPE (sym)) = xstrdup (sym->linkage_name ());
+	      sym->type ()->set_name (xstrdup (sym->linkage_name ()));
 
 	  add_symbol_to_list (sym, get_file_symbols ());
 	  break;
@@ -1770,7 +1828,7 @@ decode_type (struct coff_symbol *cs, uns
 
 	  /* Define an array type.  */
 	  /* auxent refers to array, not base type.  */
-	  if (aux->x_sym.x_tagndx.l == 0)
+	  if (aux->x_sym.x_tagndx.u32 == 0)
 	    cs->c_naux = 0;
 
 	  /* Shift the indices down.  */
@@ -1782,11 +1840,11 @@ decode_type (struct coff_symbol *cs, uns
 	  *dim = 0;
 
 	  base_type = decode_type (cs, new_c_type, aux, objfile);
-	  index_type = objfile_type (objfile)->builtin_int;
+	  index_type = builtin_type (objfile)->builtin_int;
+	  type_allocator alloc (objfile, language_c);
 	  range_type
-	    = create_static_range_type (NULL, index_type, 0, n - 1);
-	  type =
-	    create_array_type (NULL, base_type, range_type);
+	    = create_static_range_type (alloc, index_type, 0, n - 1);
+	  type = create_array_type (alloc, base_type, range_type);
 	}
       return type;
     }
@@ -1797,14 +1855,14 @@ decode_type (struct coff_symbol *cs, uns
      unions, and enums, so we have to check the c_sclass field.  SCO
      3.2v4 cc gets confused with pointers to pointers to defined
      structs, and generates negative x_tagndx fields.  */
-  if (cs->c_naux > 0 && aux->x_sym.x_tagndx.l != 0)
+  if (cs->c_naux > 0 && aux->x_sym.x_tagndx.u32 != 0)
     {
       if (cs->c_sclass != C_STRTAG
 	  && cs->c_sclass != C_UNTAG
 	  && cs->c_sclass != C_ENTAG
-	  && aux->x_sym.x_tagndx.l >= 0)
+	  && (int32_t) aux->x_sym.x_tagndx.u32 >= 0)
 	{
-	  type = coff_alloc_type (aux->x_sym.x_tagndx.l);
+	  type = coff_alloc_type (aux->x_sym.x_tagndx.u32);
 	  return type;
 	}
       else
@@ -1827,7 +1885,7 @@ decode_function_type (struct coff_symbol
 		      union internal_auxent *aux, 
 		      struct objfile *objfile)
 {
-  if (aux->x_sym.x_tagndx.l == 0)
+  if (aux->x_sym.x_tagndx.u32 == 0)
     cs->c_naux = 0;	/* auxent refers to function, not base
 			   type.  */
 
@@ -1842,64 +1900,64 @@ 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)
     {
     case T_NULL:
       /* Shows up with "void (*foo)();" structure members.  */
-      return objfile_type (objfile)->builtin_void;
+      return builtin_type (objfile)->builtin_void;
 
 #ifdef T_VOID
     case T_VOID:
       /* Intel 960 COFF has this symbol and meaning.  */
-      return objfile_type (objfile)->builtin_void;
+      return builtin_type (objfile)->builtin_void;
 #endif
 
     case T_CHAR:
-      return objfile_type (objfile)->builtin_char;
+      return builtin_type (objfile)->builtin_char;
 
     case T_SHORT:
-      return objfile_type (objfile)->builtin_short;
+      return builtin_type (objfile)->builtin_short;
 
     case T_INT:
-      return objfile_type (objfile)->builtin_int;
+      return builtin_type (objfile)->builtin_int;
 
     case T_LONG:
       if (cs->c_sclass == C_FIELD
 	  && aux->x_sym.x_misc.x_lnsz.x_size
 	     > gdbarch_long_bit (gdbarch))
-	return objfile_type (objfile)->builtin_long_long;
+	return builtin_type (objfile)->builtin_long_long;
       else
-	return objfile_type (objfile)->builtin_long;
+	return builtin_type (objfile)->builtin_long;
 
     case T_FLOAT:
-      return objfile_type (objfile)->builtin_float;
+      return builtin_type (objfile)->builtin_float;
 
     case T_DOUBLE:
-      return objfile_type (objfile)->builtin_double;
+      return builtin_type (objfile)->builtin_double;
 
     case T_LNGDBL:
-      return objfile_type (objfile)->builtin_long_double;
+      return builtin_type (objfile)->builtin_long_double;
 
     case T_STRUCT:
       if (cs->c_naux != 1)
 	{
 	  /* 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_length (0);
+	  type->set_fields (nullptr);
+	  type->set_num_fields (0);
 	}
       else
 	{
 	  type = coff_read_struct_type (cs->c_symnum,
 					aux->x_sym.x_misc.x_lnsz.x_size,
-					aux->x_sym.x_fcnary.x_fcn.x_endndx.l,
+					aux->x_sym.x_fcnary.x_fcn.x_endndx.u32,
 					objfile);
 	}
       return type;
@@ -1909,20 +1967,20 @@ 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_length (0);
+	  type->set_fields (nullptr);
+	  type->set_num_fields (0);
 	}
       else
 	{
 	  type = coff_read_struct_type (cs->c_symnum,
 					aux->x_sym.x_misc.x_lnsz.x_size,
-					aux->x_sym.x_fcnary.x_fcn.x_endndx.l,
+					aux->x_sym.x_fcnary.x_fcn.x_endndx.u32,
 					objfile);
 	}
-      TYPE_CODE (type) = TYPE_CODE_UNION;
+      type->set_code (TYPE_CODE_UNION);
       return type;
 
     case T_ENUM:
@@ -1930,17 +1988,17 @@ 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_LENGTH (type) = 0;
-	  TYPE_FIELDS (type) = 0;
-	  TYPE_NFIELDS (type) = 0;
+	  type->set_code (TYPE_CODE_ENUM);
+	  type->set_name (NULL);
+	  type->set_length (0);
+	  type->set_fields (nullptr);
+	  type->set_num_fields (0);
 	}
       else
 	{
 	  type = coff_read_enum_type (cs->c_symnum,
 				      aux->x_sym.x_misc.x_lnsz.x_size,
-				      aux->x_sym.x_fcnary.x_fcn.x_endndx.l,
+				      aux->x_sym.x_fcnary.x_fcn.x_endndx.u32,
 				      objfile);
 	}
       return type;
@@ -1950,24 +2008,24 @@ decode_base_type (struct coff_symbol *cs
       break;
 
     case T_UCHAR:
-      return objfile_type (objfile)->builtin_unsigned_char;
+      return builtin_type (objfile)->builtin_unsigned_char;
 
     case T_USHORT:
-      return objfile_type (objfile)->builtin_unsigned_short;
+      return builtin_type (objfile)->builtin_unsigned_short;
 
     case T_UINT:
-      return objfile_type (objfile)->builtin_unsigned_int;
+      return builtin_type (objfile)->builtin_unsigned_int;
 
     case T_ULONG:
       if (cs->c_sclass == C_FIELD
 	  && aux->x_sym.x_misc.x_lnsz.x_size
 	     > gdbarch_long_bit (gdbarch))
-	return objfile_type (objfile)->builtin_unsigned_long_long;
+	return builtin_type (objfile)->builtin_unsigned_long_long;
       else
-	return objfile_type (objfile)->builtin_unsigned_long;
+	return builtin_type (objfile)->builtin_unsigned_long;
     }
   complaint (_("Unexpected type for symbol %s"), cs->c_name);
-  return objfile_type (objfile)->builtin_void;
+  return builtin_type (objfile)->builtin_void;
 }
 
 /* This page contains subroutines of read_type.  */
@@ -1998,15 +2056,15 @@ 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;
+  type->set_length (length);
 
   while (!done && symnum < lastsym && symnum < nlist_nsyms_global)
     {
       read_one_sym (ms, &sub_sym, &sub_aux);
       name = ms->c_name;
-      name = EXTERNAL_NAME (name, objfile->obfd);
+      name = EXTERNAL_NAME (name, objfile->obfd.get ());
 
       switch (ms->c_sclass)
 	{
@@ -2019,11 +2077,12 @@ coff_read_struct_type (int index, int le
 	  list = newobj;
 
 	  /* 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);
-	  SET_FIELD_BITPOS (list->field, 8 * ms->c_value);
-	  FIELD_BITSIZE (list->field) = 0;
+	  list->field.set_name (obstack_strdup (&objfile->objfile_obstack,
+						name));
+	  list->field.set_type (decode_type (ms, ms->c_type, &sub_aux,
+					     objfile));
+	  list->field.set_loc_bitpos (8 * ms->c_value);
+	  list->field.set_bitsize (0);
 	  nfields++;
 	  break;
 
@@ -2035,11 +2094,12 @@ coff_read_struct_type (int index, int le
 	  list = newobj;
 
 	  /* 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);
-	  SET_FIELD_BITPOS (list->field, ms->c_value);
-	  FIELD_BITSIZE (list->field) = sub_aux.x_sym.x_misc.x_lnsz.x_size;
+	  list->field.set_name (obstack_strdup (&objfile->objfile_obstack,
+						name));
+	  list->field.set_type (decode_type (ms, ms->c_type, &sub_aux,
+					     objfile));
+	  list->field.set_loc_bitpos (ms->c_value);
+	  list->field.set_bitsize (sub_aux.x_sym.x_misc.x_lnsz.x_size);
 	  nfields++;
 	  break;
 
@@ -2050,14 +2110,12 @@ 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->alloc_fields (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 +2128,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;
@@ -2098,18 +2156,18 @@ coff_read_enum_type (int index, int leng
     {
       read_one_sym (ms, &sub_sym, &sub_aux);
       name = ms->c_name;
-      name = EXTERNAL_NAME (name, objfile->obfd);
+      name = EXTERNAL_NAME (name, objfile->obfd.get ());
 
       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);
-	  SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
-	  SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
-	  SYMBOL_VALUE (sym) = ms->c_value;
+	  sym->set_loc_class_index (LOC_CONST);
+	  sym->set_domain (VAR_DOMAIN);
+	  sym->set_value_longest (ms->c_value);
 	  add_symbol_to_list (sym, symlist);
 	  nsyms++;
 	  break;
@@ -2126,13 +2184,11 @@ coff_read_enum_type (int index, int leng
   /* Now fill in the fields of the type-structure.  */
 
   if (length > 0)
-    TYPE_LENGTH (type) = length;
+    type->set_length (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_length (gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT);
+  type->set_code (TYPE_CODE_ENUM);
+  type->alloc_fields (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
@@ -2152,19 +2208,19 @@ coff_read_enum_type (int index, int leng
 	{
 	  struct symbol *xsym = syms->symbol[j];
 
-	  SYMBOL_TYPE (xsym) = type;
-	  TYPE_FIELD_NAME (type, n) = xsym->linkage_name ();
-	  SET_FIELD_ENUMVAL (TYPE_FIELD (type, n), SYMBOL_VALUE (xsym));
-	  if (SYMBOL_VALUE (xsym) < 0)
+	  xsym->set_type (type);
+	  type->field (n).set_name (xsym->linkage_name ());
+	  type->field (n).set_loc_enumval (xsym->value_longest ());
+	  if (xsym->value_longest () < 0)
 	    unsigned_enum = 0;
-	  TYPE_FIELD_BITSIZE (type, n) = 0;
+	  type->field (n).set_bitsize (0);
 	}
       if (syms == osyms)
 	break;
     }
 
   if (unsigned_enum)
-    TYPE_UNSIGNED (type) = 1;
+    type->set_is_unsigned (true);
 
   return type;
 }
@@ -2179,7 +2235,6 @@ static const struct sym_fns coff_sym_fns
 				   for sym_read() */
   coff_symfile_read,		/* sym_read: read a symbol file into
 				   symtab */
-  NULL,				/* sym_read_psymbols */
   coff_symfile_finish,		/* sym_finish: finished with file,
 				   cleanup */
   default_symfile_offsets,	/* sym_offsets: xlate external to
@@ -2191,11 +2246,9 @@ static const struct sym_fns coff_sym_fns
   default_symfile_relocate,	/* sym_relocate: Relocate a debug
 				   section.  */
   NULL,				/* sym_probe_fns */
-  &psym_functions
 };
 
-void
-_initialize_coffread (void)
+INIT_GDB_FILE (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.20200303/gdb/command.h ./gdb/command.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/command.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/command.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Header file for command creation.
 
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2025 Free Software Foundation, Inc.
 
    This 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,10 +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/>.  */
 
-#if !defined (COMMAND_H)
-#define COMMAND_H 1
+#ifndef GDB_COMMAND_H
+#define GDB_COMMAND_H
 
-#include "gdbsupport/gdb_vecs.h"
 #include "gdbsupport/scoped_restore.h"
 
 struct completion_tracker;
@@ -29,38 +28,49 @@ 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 */
+  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
+enum var_types
   {
     /* "on" or "off".  *VAR is a bool which is true for on,
        false for off.  */
@@ -73,50 +83,318 @@ typedef enum var_types
        value.  */
     var_auto_boolean,
 
-    /* Unsigned Integer.  *VAR is an unsigned int.  The user can type
-       0 to mean "unlimited", which is stored in *VAR as UINT_MAX.  */
+    /* Unsigned Integer.  *VAR is an unsigned int.  In the Guile and Python
+       APIs 0 means unlimited, which is stored in *VAR as UINT_MAX.  */
     var_uinteger,
 
-    /* Like var_uinteger but signed.  *VAR is an int.  The user can
-       type 0 to mean "unlimited", which is stored in *VAR as
-       INT_MAX.  The only remaining use of it is the Python API.
-       Don't use it elsewhere.  */
+    /* Like var_uinteger but signed.  *VAR is an int.  In the Guile and
+       Python APIs 0 means unlimited, which is stored in *VAR as INT_MAX.  */
     var_integer,
 
+    /* Like var_integer but negative numbers are not allowed,
+       except for special values.  *VAR is an int.  */
+    var_pinteger,
+
     /* String which the user enters with escapes (e.g. the user types
        \n and it is a real newline in the stored string).
-       *VAR is a malloc'd string, or NULL if the string is empty.  */
+       *VAR is a std::string, "" if the string is empty.  */
     var_string,
     /* String which stores what the user types verbatim.
-       *VAR is a malloc'd string, or NULL if the string is empty.  */
+       *VAR is std::string, "" if the string is empty.  */
     var_string_noescape,
-    /* String which stores a filename.  (*VAR) is a malloc'd string,
-       or "" if the string was empty.  */
+    /* String which stores a filename.  (*VAR) is a std::string,
+       "" if the string was empty.  */
     var_optional_filename,
-    /* String which stores a filename.  (*VAR) is a malloc'd
-       string.  */
+    /* String which stores a filename.  (*VAR) is a std::string.  */
     var_filename,
-    /* ZeroableInteger.  *VAR is an int.  Like var_integer except
-       that zero really means zero.  */
-    var_zinteger,
-    /* ZeroableUnsignedInteger.  *VAR is an unsigned int.  Zero really
-       means zero.  */
-    var_zuinteger,
-    /* ZeroableUnsignedInteger with unlimited value.  *VAR is an int,
-       but its range is [0, INT_MAX].  -1 stands for unlimited and
-       other negative numbers are not allowed.  */
-    var_zuinteger_unlimited,
     /* Enumerated type.  Can only have one of the specified values.
        *VAR is a char pointer to the name of the element that we
        find.  */
-    var_enum
+    var_enum,
+    /* Color type.  *VAR is a ui_file_style::color structure.  */
+    var_color
+  };
+
+/* A structure describing an extra literal accepted and shown in place
+   of a number.  */
+struct literal_def
+{
+  /* The literal to define, e.g. "unlimited".  */
+  const char *literal;
+
+  /* The number to substitute internally for LITERAL or VAL;
+     the use of this number is not allowed (unless the same as VAL).  */
+  LONGEST use;
+
+  /* An optional number accepted that stands for the literal.  */
+  std::optional<LONGEST> val;
+};
+
+/* Return true if a setting of type VAR_TYPE is backed with type T.
+
+   This function is left without definition intentionally.  This template is
+   specialized for all valid types that are used to back var_types.  Therefore
+   if one tries to instantiate this un-specialized template it means the T
+   parameter is not a type used to back a var_type and it is most likely a
+   programming error.  */
+template<typename T>
+bool var_type_uses (var_types var_type) = delete;
+
+/* Return true if a setting of type T is backed by a bool variable.  */
+template<>
+inline bool var_type_uses<bool> (var_types t)
+{
+  return t == var_boolean;
+};
+
+/* Return true if a setting of type T is backed by a auto_boolean variable.
+*/
+template<>
+inline bool var_type_uses<enum auto_boolean> (var_types t)
+{
+  return t == var_auto_boolean;
+}
+
+/* Return true if a setting of type T is backed by an unsigned int variable.
+*/
+template<>
+inline bool var_type_uses<unsigned int> (var_types t)
+{
+  return t == var_uinteger;
+}
+
+/* Return true if a setting of type T is backed by an int variable.  */
+template<>
+inline bool var_type_uses<int> (var_types t)
+{
+  return t == var_integer || t == var_pinteger;
+}
+
+/* Return true if a setting of type T is backed by a std::string variable.  */
+template<>
+inline bool var_type_uses<std::string> (var_types t)
+{
+  return (t == var_string || t == var_string_noescape
+	  || t == var_optional_filename || t == var_filename);
+}
+
+/* Return true if a setting of type T is backed by a const char * variable.
+*/
+template<>
+inline bool var_type_uses<const char *> (var_types t)
+{
+  return t == var_enum;
+}
+
+/* Return true if a setting of type T is backed by an ui_file_style::color
+   variable.  */
+template<>
+inline bool var_type_uses<ui_file_style::color> (var_types t)
+{
+  return t == var_color;
+}
+
+template<bool is_scalar, typename T> struct setting_func_types_1;
+
+template<typename T>
+struct setting_func_types_1<true, T>
+{
+  using type = T;
+  using set = void (*) (type);
+  using get = type (*) ();
+};
+
+template<typename T>
+struct setting_func_types_1<false, T>
+{
+  using type = const T &;
+  using set = void (*) (type);
+  using get = type (*) ();
+};
+
+template<typename T>
+struct setting_func_types
+{
+  using type = typename setting_func_types_1<std::is_scalar<T>::value, T>::type;
+  using set = typename setting_func_types_1<std::is_scalar<T>::value, T>::set;
+  using get = typename setting_func_types_1<std::is_scalar<T>::value, T>::get;
+};
+
+/* Generic/type-erased function pointer.  */
+
+using erased_func = void (*) ();
+
+/* Interface for getting and setting a setting's value.
+
+   The underlying data can be of any VAR_TYPES type.  */
+struct setting
+{
+  /* Create a setting backed by a variable of type T.
+
+     Type T must match the var type VAR_TYPE (see VAR_TYPE_USES).  */
+  template<typename T>
+  setting (var_types var_type, T *var,
+	   const literal_def *extra_literals = nullptr)
+    : m_var_type (var_type), m_var (var), m_extra_literals (extra_literals)
+  {
+    gdb_assert (var != nullptr);
+    gdb_assert (var_type_uses<T> (var_type));
+  }
+
+  /* A setting can also be constructed with a pre-validated
+     type-erased variable.  Use the following function to
+     validate & type-erase said variable/function pointers.  */
+
+  struct erased_args
+  {
+    void *var;
+    erased_func setter;
+    erased_func getter;
+  };
+
+  template<typename T>
+  static erased_args erase_args (var_types var_type,
+				 T *var,
+				 typename setting_func_types<T>::set set_setting_func,
+				 typename setting_func_types<T>::get get_setting_func)
+  {
+    gdb_assert (var_type_uses<T> (var_type));
+  /* The getter and the setter must be both provided or both omitted.  */
+    gdb_assert
+      ((set_setting_func == nullptr) == (get_setting_func == nullptr));
+
+  /* The caller must provide a pointer to a variable or get/set functions, but
+     not both.  */
+    gdb_assert ((set_setting_func == nullptr) != (var == nullptr));
+
+    return {
+	var,
+	reinterpret_cast<erased_func> (set_setting_func),
+	reinterpret_cast<erased_func> (get_setting_func)
+    };
+  }
+
+  /* Create a setting backed by pre-validated type-erased args and using
+     EXTRA_LITERALS.  ERASED_VAR's fields' real types must match the var
+     type VAR_TYPE (see VAR_TYPE_USES).  */
+  setting (var_types var_type, const literal_def *extra_literals,
+	   const erased_args &args)
+    : m_var_type (var_type),
+      m_var (args.var),
+      m_extra_literals (extra_literals),
+      m_getter (args.getter),
+      m_setter (args.setter)
+  {
+  }
+
+  /* Create a setting backed by setter and getter functions.
+
+     Type T must match the var type VAR_TYPE (see VAR_TYPE_USES).  */
+  template<typename T>
+  setting (var_types var_type,
+	   typename setting_func_types<T>::set setter,
+	   typename setting_func_types<T>::get getter)
+    : m_var_type (var_type)
+  {
+    gdb_assert (var_type_uses<T> (var_type));
+
+    /* Getters and setters are cast to and from the arbitrary `void (*) ()`
+       function pointer type.  Make sure that the two types are really of the
+       same size.  */
+    static_assert (sizeof (m_getter) == sizeof (getter));
+    static_assert (sizeof (m_setter) == sizeof (setter));
+
+    m_getter = reinterpret_cast<erased_func> (getter);
+    m_setter = reinterpret_cast<erased_func> (setter);
+  }
+
+  /* Access the type of the current setting.  */
+  var_types type () const
+  { return m_var_type; }
+
+  /* Access any extra literals accepted.  */
+  const literal_def *extra_literals () const
+  { return m_extra_literals; }
+
+  /* Return the current value.
+
+     The template parameter T is the type of the variable used to store the
+     setting.  */
+  template<typename T>
+  typename setting_func_types<T>::type get () const
+  {
+    gdb_assert (var_type_uses<T> (m_var_type));
+
+    if (m_var == nullptr)
+      {
+	gdb_assert (m_getter != nullptr);
+	auto getter = reinterpret_cast<typename setting_func_types<T>::get> (m_getter);
+	return getter ();
+      }
+    else
+      return *static_cast<const T *> (m_var);
   }
-var_types;
+
+  /* Sets the value of the setting to V.  Returns true if the setting was
+     effectively changed, false if the update failed and the setting is left
+     unchanged.
+
+     If we have a user-provided setter, use it to set the setting.  Otherwise
+     copy the value V to the internally referenced buffer.
+
+     The template parameter T indicates the type of the variable used to store
+     the setting.
+
+     The var_type of the setting must match T.  */
+  template<typename T>
+  bool set (const T &v)
+  {
+    /* Check that the current instance is of one of the supported types for
+       this instantiation.  */
+    gdb_assert (var_type_uses<T> (m_var_type));
+
+    const T old_value = this->get<T> ();
+
+    if (m_var == nullptr)
+      {
+	gdb_assert (m_setter != nullptr);
+	auto setter = reinterpret_cast<typename setting_func_types<T>::set> (m_setter);
+	setter (v);
+      }
+    else
+      *static_cast<T *> (m_var) = v;
+
+    return old_value != this->get<T> ();
+  }
+
+private:
+  /* The type of the variable M_VAR is pointing to, or that M_GETTER / M_SETTER
+     get or set.  */
+  var_types m_var_type;
+
+  /* Pointer to the enclosed variable
+
+     Either M_VAR is non-nullptr, or both M_GETTER and M_SETTER are
+     non-nullptr.  */
+  void *m_var = nullptr;
+
+  /* Any extra literals accepted.  */
+  const literal_def *m_extra_literals = nullptr;
+
+  /* Pointer to a user provided getter.  */
+  erased_func m_getter = nullptr;
+
+  /* Pointer to a user provided setter.  */
+  erased_func m_setter = nullptr;
+};
 
 /* This structure records one command'd definition.  */
 struct cmd_list_element;
 
-typedef void cmd_const_cfunc_ftype (const char *args, int from_tty);
+/* The "simple" signature of command callbacks, which doesn't include a
+   cmd_list_element parameter.  */
+
+typedef void cmd_simple_func_ftype (const char *args, int from_tty);
 
 /* This structure specifies notifications to be suppressed by a cli
    command interpreter.  */
@@ -124,7 +402,10 @@ typedef void cmd_const_cfunc_ftype (cons
 struct cli_suppress_notification
 {
   /* Inferior, thread, frame selected notification suppressed?  */
-  int user_selected_context;
+  bool user_selected_context = false;
+
+  /* Normal stop event suppressed? */
+  bool normal_stop = false;
 };
 
 extern struct cli_suppress_notification cli_suppress_notification;
@@ -143,10 +424,17 @@ extern bool valid_user_defined_cmd_name_
 
 extern bool valid_cmd_char_p (int c);
 
+/* Return value type for the add_setshow_* functions.  */
+
+struct set_show_commands
+{
+  cmd_list_element *set, *show;
+};
+
 /* Const-correct variant of the above.  */
 
 extern struct cmd_list_element *add_cmd (const char *, enum command_class,
-					 cmd_const_cfunc_ftype *fun,
+					 cmd_simple_func_ftype *fun,
 					 const char *,
 					 struct cmd_list_element **);
 
@@ -158,13 +446,9 @@ extern struct cmd_list_element *add_cmd
 
 extern struct cmd_list_element *add_cmd_suppress_notification
 			(const char *name, enum command_class theclass,
-			 cmd_const_cfunc_ftype *fun, const char *doc,
+			 cmd_simple_func_ftype *fun, const char *doc,
 			 struct cmd_list_element **list,
-			 int *suppress_notification);
-
-extern struct cmd_list_element *add_alias_cmd (const char *, const char *,
-					       enum command_class, int,
-					       struct cmd_list_element **);
+			 bool *suppress_notification);
 
 extern struct cmd_list_element *add_alias_cmd (const char *,
 					       cmd_list_element *,
@@ -173,33 +457,56 @@ extern struct cmd_list_element *add_alia
 
 
 extern struct cmd_list_element *add_prefix_cmd (const char *, enum command_class,
-						cmd_const_cfunc_ftype *fun,
+						cmd_simple_func_ftype *fun,
 						const char *,
 						struct cmd_list_element **,
-						const char *, int,
+						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 **,
+   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 **,
+   int, struct cmd_list_element **);
+
+/* Add matching set and show commands using add_basic_prefix_cmd and
+   add_show_prefix_cmd.  */
+
+extern set_show_commands add_setshow_prefix_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc,
+   cmd_list_element **set_subcommands_list,
+   cmd_list_element **show_subcommands_list,
+   cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
 extern struct cmd_list_element *add_prefix_cmd_suppress_notification
 			(const char *name, enum command_class theclass,
-			 cmd_const_cfunc_ftype *fun,
-			 const char *doc, struct cmd_list_element **prefixlist,
-			 const char *prefixname, int allow_unknown,
+			 cmd_simple_func_ftype *fun,
+			 const char *doc, struct cmd_list_element **subcommands,
+			 int allow_unknown,
 			 struct cmd_list_element **list,
-			 int *suppress_notification);
+			 bool *suppress_notification);
 
 extern struct cmd_list_element *add_abbrev_prefix_cmd (const char *,
 						       enum command_class,
-						       cmd_const_cfunc_ftype *fun,
+						       cmd_simple_func_ftype *fun,
 						       const char *,
 						       struct cmd_list_element
-						       **, const char *, int,
+						       **, int,
 						       struct cmd_list_element
 						       **);
 
-typedef void cmd_const_sfunc_ftype (const char *args, int from_tty,
-				    struct cmd_list_element *c);
-extern void set_cmd_sfunc (struct cmd_list_element *cmd,
-			   cmd_const_sfunc_ftype *sfunc);
+typedef void cmd_func_ftype (const char *args, int from_tty,
+			     cmd_list_element *c);
 
 /* A completion routine.  Add possible completions to tracker.
 
@@ -228,14 +535,8 @@ extern void set_cmd_completer_handle_brk
 
 /* HACK: cagney/2002-02-23: Code, mostly in tracepoints.c, grubs
    around in cmd objects to test the value of the commands sfunc().  */
-extern int cmd_cfunc_eq (struct cmd_list_element *cmd,
-			 cmd_const_cfunc_ftype *cfun);
-
-/* Each command object has a local context attached to it.  */
-extern void set_cmd_context (struct cmd_list_element *cmd,
-			     void *context);
-extern void *get_cmd_context (struct cmd_list_element *cmd);
-
+extern int cmd_simple_func_eq (struct cmd_list_element *cmd,
+			 cmd_simple_func_ftype *cfun);
 
 /* Execute CMD's pre/post hook.  Throw an error if the command fails.
    If already executing this pre/post hook, or there is no pre/post
@@ -243,26 +544,86 @@ 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 **,
-					      int);
+/* This routine takes a line of TEXT and a CLIST in which to start the
+   lookup.  When it returns it will have incremented the text pointer past
+   the section of text it matched, set *RESULT_LIST to point to the list in
+   which the last word was matched, and will return a pointer to the cmd
+   list element which the text matches.  It will return NULL if no match at
+   all was possible.  It will return -1 (cast appropriately, ick) if ambiguous
+   matches are possible; in this case *RESULT_LIST will be set to point to
+   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.  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.
+
+   In the case of an ambiguous return (-1), *RESULT_LIST will be set to point
+   at the prefix_command (ie. the best match) *or* (special case) will be NULL
+   if no prefix command was ever found.  For example, in the case of "info a",
+   "info" matches without ambiguity, but "a" could be "args" or "address", so
+   *RESULT_LIST is set to the cmd_list_element for "info".  So in this case
+   RESULT_LIST should not be interpreted as a pointer to the beginning of a
+   list; it simply points to a specific command.  In the case of an ambiguous
+   return *TEXT is advanced past the last non-ambiguous prefix (e.g.
+   "info t" can be "info types" or "info target"; upon return *TEXT has been
+   advanced past "info ").
+
+   If RESULT_LIST is NULL, don't set *RESULT_LIST (but don't otherwise
+   affect the operation).
+
+   This routine does *not* modify the text pointed to by TEXT.
+
+   If IGNORE_HELP_CLASSES is nonzero, ignore any command list elements which
+   are actually help classes rather than commands (i.e. the function field of
+   the struct cmd_list_element is NULL).
+
+   When LOOKUP_FOR_COMPLETION_P is true the completion is being requested
+   for the completion engine, no warnings should be printed.  */
+
+extern struct cmd_list_element *lookup_cmd_1
+	(const char **text, struct cmd_list_element *clist,
+	 struct cmd_list_element **result_list, std::string *default_args,
+	 int ignore_help_classes, bool lookup_for_completion_p = false);
+
+/* Look up the command called NAME in the command list LIST.
+
+   Unlike LOOKUP_CMD, partial matches are ignored and only exact matches
+   on NAME are considered.
+
+   LIST is a chain of struct cmd_list_element's.
+
+   If IGNORE_HELP_CLASSES is true (the default), ignore any command list
+   elements which are actually help classes rather than commands (i.e.
+   the function field of the struct cmd_list_element is null).
+
+   If found, return the struct cmd_list_element for that command,
+   otherwise return NULLPTR.  */
+
+extern struct cmd_list_element *lookup_cmd_exact
+			(const char *name,
+			 struct cmd_list_element *list,
+			 bool ignore_help_classes = true);
 
 extern struct cmd_list_element *deprecate_cmd (struct cmd_list_element *,
 					       const char * );
 
-extern void deprecated_cmd_warning (const char *);
+extern void deprecated_cmd_warning (const char *, struct cmd_list_element *);
 
 extern int lookup_cmd_composition (const char *text,
 				   struct cmd_list_element **alias,
@@ -270,23 +631,26 @@ extern int lookup_cmd_composition (const
 				   struct cmd_list_element **cmd);
 
 extern struct cmd_list_element *add_com (const char *, enum command_class,
-					 cmd_const_cfunc_ftype *fun,
+					 cmd_simple_func_ftype *fun,
 					 const char *);
 
-extern struct cmd_list_element *add_com_alias (const char *, const char *,
-					       enum command_class, int);
+extern cmd_list_element *add_com_alias (const char *name,
+					cmd_list_element *target,
+					command_class theclass,
+					int abbrev_flag);
 
 extern struct cmd_list_element *add_com_suppress_notification
 		       (const char *name, enum command_class theclass,
-			cmd_const_cfunc_ftype *fun, const char *doc,
-			int *supress_notification);
+			cmd_simple_func_ftype *fun, const char *doc,
+			bool *suppress_notification);
 
 extern struct cmd_list_element *add_info (const char *,
-					  cmd_const_cfunc_ftype *fun,
+					  cmd_simple_func_ftype *fun,
 					  const char *);
 
-extern struct cmd_list_element *add_info_alias (const char *, const char *,
-						int);
+extern cmd_list_element *add_info_alias (const char *name,
+					 cmd_list_element *target,
+					 int abbrev_flag);
 
 extern void complete_on_cmdlist (struct cmd_list_element *,
 				 completion_tracker &tracker,
@@ -301,161 +665,241 @@ extern void complete_on_enum (completion
 extern void help_list (struct cmd_list_element *, const char *,
 		       enum command_class, struct ui_file *);
 
-/* Method for show a set/show variable's VALUE on FILE.  If this
-   method isn't supplied deprecated_show_value_hack() is called (which
-   is not good).  */
+/* Method for show a set/show variable's VALUE on FILE.  */
 typedef void (show_value_ftype) (struct ui_file *file,
 				 int from_tty,
 				 struct cmd_list_element *cmd,
 				 const char *value);
-/* NOTE: i18n: This function is not i18n friendly.  Callers should
-   instead print the value out directly.  */
-extern show_value_ftype deprecated_show_value_hack;
-
-extern void add_setshow_enum_cmd (const char *name,
-				  enum command_class theclass,
-				  const char *const *enumlist,
-				  const char **var,
-				  const char *set_doc,
-				  const char *show_doc,
-				  const char *help_doc,
-				  cmd_const_sfunc_ftype *set_func,
-				  show_value_ftype *show_func,
-				  struct cmd_list_element **set_list,
-				  struct cmd_list_element **show_list,
-				  void *context = nullptr);
-
-extern void add_setshow_auto_boolean_cmd (const char *name,
-					  enum command_class theclass,
-					  enum auto_boolean *var,
-					  const char *set_doc,
-					  const char *show_doc,
-					  const char *help_doc,
-					  cmd_const_sfunc_ftype *set_func,
-					  show_value_ftype *show_func,
-					  struct cmd_list_element **set_list,
-					  struct cmd_list_element **show_list);
-
-extern cmd_list_element *
-  add_setshow_boolean_cmd (const char *name,
-			   enum command_class theclass,
-			   bool *var,
-			   const char *set_doc, const char *show_doc,
-			   const char *help_doc,
-			   cmd_const_sfunc_ftype *set_func,
-			   show_value_ftype *show_func,
-			   struct cmd_list_element **set_list,
-			   struct cmd_list_element **show_list);
-
-extern void add_setshow_filename_cmd (const char *name,
-				      enum command_class theclass,
-				      char **var,
-				      const char *set_doc,
-				      const char *show_doc,
-				      const char *help_doc,
-				      cmd_const_sfunc_ftype *set_func,
-				      show_value_ftype *show_func,
-				      struct cmd_list_element **set_list,
-				      struct cmd_list_element **show_list);
-
-extern void add_setshow_string_cmd (const char *name,
-				    enum command_class theclass,
-				    char **var,
-				    const char *set_doc,
-				    const char *show_doc,
-				    const char *help_doc,
-				    cmd_const_sfunc_ftype *set_func,
-				    show_value_ftype *show_func,
-				    struct cmd_list_element **set_list,
-				    struct cmd_list_element **show_list);
-
-extern struct cmd_list_element *add_setshow_string_noescape_cmd
-		      (const char *name,
-		       enum command_class theclass,
-		       char **var,
-		       const char *set_doc,
-		       const char *show_doc,
-		       const char *help_doc,
-		       cmd_const_sfunc_ftype *set_func,
-		       show_value_ftype *show_func,
-		       struct cmd_list_element **set_list,
-		       struct cmd_list_element **show_list);
-
-extern void add_setshow_optional_filename_cmd (const char *name,
-					       enum command_class theclass,
-					       char **var,
-					       const char *set_doc,
-					       const char *show_doc,
-					       const char *help_doc,
-					       cmd_const_sfunc_ftype *set_func,
-					       show_value_ftype *show_func,
-					       struct cmd_list_element **set_list,
-					       struct cmd_list_element **show_list);
-
-extern void add_setshow_integer_cmd (const char *name,
-				     enum command_class theclass,
-				     int *var,
-				     const char *set_doc,
-				     const char *show_doc,
-				     const char *help_doc,
-				     cmd_const_sfunc_ftype *set_func,
-				     show_value_ftype *show_func,
-				     struct cmd_list_element **set_list,
-				     struct cmd_list_element **show_list);
-
-extern void add_setshow_uinteger_cmd (const char *name,
-				      enum command_class theclass,
-				      unsigned int *var,
-				      const char *set_doc,
-				      const char *show_doc,
-				      const char *help_doc,
-				      cmd_const_sfunc_ftype *set_func,
-				      show_value_ftype *show_func,
-				      struct cmd_list_element **set_list,
-				      struct cmd_list_element **show_list);
-
-extern void add_setshow_zinteger_cmd (const char *name,
-				      enum command_class theclass,
-				      int *var,
-				      const char *set_doc,
-				      const char *show_doc,
-				      const char *help_doc,
-				      cmd_const_sfunc_ftype *set_func,
-				      show_value_ftype *show_func,
-				      struct cmd_list_element **set_list,
-				      struct cmd_list_element **show_list);
-
-extern void add_setshow_zuinteger_cmd (const char *name,
-				       enum command_class theclass,
-				       unsigned int *var,
-				       const char *set_doc,
-				       const char *show_doc,
-				       const char *help_doc,
-				       cmd_const_sfunc_ftype *set_func,
-				       show_value_ftype *show_func,
-				       struct cmd_list_element **set_list,
-				       struct cmd_list_element **show_list);
-
-extern void
-  add_setshow_zuinteger_unlimited_cmd (const char *name,
-				       enum command_class theclass,
-				       int *var,
-				       const char *set_doc,
-				       const char *show_doc,
-				       const char *help_doc,
-				       cmd_const_sfunc_ftype *set_func,
-				       show_value_ftype *show_func,
-				       struct cmd_list_element **set_list,
-				       struct cmd_list_element **show_list);
+
+/* Various sets of extra literals accepted.  */
+extern const literal_def integer_unlimited_literals[];
+extern const literal_def uinteger_unlimited_literals[];
+extern const literal_def pinteger_unlimited_literals[];
+
+extern set_show_commands add_setshow_enum_cmd
+  (const char *name, command_class theclass, const char *const *enumlist,
+   const char **var, const char *set_doc, const char *show_doc,
+   const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_enum_cmd
+  (const char *name, command_class theclass, const char *const *enumlist,
+   const char *set_doc, const char *show_doc,
+   const char *help_doc, setting_func_types<const char *>::set set_func,
+   setting_func_types<const char *>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_color_cmd
+  (const char *name, command_class theclass, ui_file_style::color *var,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   cmd_func_ftype *set_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_color_cmd
+  (const char *name, command_class theclass,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   setting_func_types<ui_file_style::color>::set set_func,
+   setting_func_types<ui_file_style::color>::get get_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_auto_boolean_cmd
+  (const char *name, command_class theclass, auto_boolean *var,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   cmd_func_ftype *set_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_auto_boolean_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<enum auto_boolean>::set set_func,
+   setting_func_types<enum auto_boolean>::get get_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_boolean_cmd
+  (const char *name, command_class theclass, bool *var, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_boolean_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<bool>::set set_func,
+   setting_func_types<bool>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_filename_cmd
+  (const char *name, command_class theclass, std::string *var, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_filename_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<std::string>::set set_func,
+   setting_func_types<std::string>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_string_cmd
+  (const char *name, command_class theclass, std::string *var, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_string_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<std::string>::set set_func,
+   setting_func_types<std::string>::get get_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_string_noescape_cmd
+  (const char *name, command_class theclass, std::string *var, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_string_noescape_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<std::string>::set set_func,
+   setting_func_types<std::string>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_optional_filename_cmd
+  (const char *name, command_class theclass, std::string *var, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_optional_filename_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<std::string>::set set_func,
+   setting_func_types<std::string>::get get_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_integer_cmd
+  (const char *name, command_class theclass, int *var,
+   const literal_def *extra_literals, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_integer_cmd
+  (const char *name, command_class theclass, const literal_def *extra_literals,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   setting_func_types<int>::set set_func,
+   setting_func_types<int>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_integer_cmd
+  (const char *name, command_class theclass, int *var, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_integer_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<int>::set set_func,
+   setting_func_types<int>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_pinteger_cmd
+  (const char *name, command_class theclass, int *var,
+   const literal_def *extra_literals, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_pinteger_cmd
+  (const char *name, command_class theclass, const literal_def *extra_literals,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   setting_func_types<int>::set set_func,
+   setting_func_types<int>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_uinteger_cmd
+  (const char *name, command_class theclass, unsigned int *var,
+   const literal_def *extra_literals,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   cmd_func_ftype *set_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_uinteger_cmd
+  (const char *name, command_class theclass, const literal_def *extra_literals,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   setting_func_types<unsigned int>::set set_func,
+   setting_func_types<unsigned int>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_uinteger_cmd
+  (const char *name, command_class theclass, unsigned int *var,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   cmd_func_ftype *set_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_uinteger_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<unsigned int>::set set_func,
+   setting_func_types<unsigned int>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_zinteger_cmd
+  (const char *name, command_class theclass, int *var, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_zinteger_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<int>::set set_func,
+   setting_func_types<int>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_zuinteger_cmd
+  (const char *name, command_class theclass, unsigned int *var,
+   const char *set_doc, const char *show_doc, const char *help_doc,
+   cmd_func_ftype *set_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_zuinteger_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<unsigned int>::set set_func,
+   setting_func_types<unsigned int>::get get_func, show_value_ftype *show_func,
+   cmd_list_element **set_list, cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_zuinteger_unlimited_cmd
+  (const char *name, command_class theclass, int *var, const char *set_doc,
+   const char *show_doc, const char *help_doc, cmd_func_ftype *set_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
+
+extern set_show_commands add_setshow_zuinteger_unlimited_cmd
+  (const char *name, command_class theclass, const char *set_doc,
+   const char *show_doc, const char *help_doc,
+   setting_func_types<int>::set set_func, setting_func_types<int>::get get_func,
+   show_value_ftype *show_func, cmd_list_element **set_list,
+   cmd_list_element **show_list);
 
 /* 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.  */
 
-extern void error_no_arg (const char *) ATTRIBUTE_NORETURN;
+[[noreturn]] extern void error_no_arg (const char *);
 
 
 /* Command line saving and repetition.
@@ -509,11 +953,8 @@ extern void save_command_line (const cha
 
 extern void not_just_help_class_command (const char *, int);
 
-/* Check function pointer.  */
-extern int cmd_func_p (struct cmd_list_element *cmd);
-
 /* Call the command function.  */
 extern void cmd_func (struct cmd_list_element *cmd,
 		      const char *args, int from_tty);
 
-#endif /* !defined (COMMAND_H) */
+#endif /* GDB_COMMAND_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.20200303/gdb/compile/compile.c ./gdb/compile/compile.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/compile/compile.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* General Compile and inject code
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,15 +17,15 @@
    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 "top.h"
+#include "progspace.h"
+#include "ui.h"
 #include "ui-out.h"
 #include "command.h"
 #include "cli/cli-script.h"
 #include "cli/cli-utils.h"
 #include "cli/cli-option.h"
 #include "completer.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "compile.h"
 #include "compile-internal.h"
 #include "compile-object-load.h"
@@ -40,117 +40,37 @@
 #include "osabi.h"
 #include "gdbsupport/gdb_wait.h"
 #include "valprint.h"
-#include "gdbsupport/gdb_optional.h"
+#include <optional>
 #include "gdbsupport/gdb_unlinker.h"
 #include "gdbsupport/pathstuff.h"
+#include "gdbsupport/scoped_ignore_signal.h"
+#include "gdbsupport/buildargv.h"
+#include "gdbsupport/cleanups.h"
+
+/* Hold "compile" commands.  */
+
+static struct cmd_list_element *compile_command_list;
 
 
+#ifdef HAVE_COMPILE
 
 /* Initial filename for temporary files.  */
 
 #define TMP_PREFIX "/tmp/gdbobj-"
 
-/* Hold "compile" commands.  */
-
-static struct cmd_list_element *compile_command_list;
-
 /* Debug flag for "compile" commands.  */
 
 bool compile_debug;
 
-/* Object of this type are stored in the compiler's symbol_err_map.  */
-
-struct symbol_error
-{
-  /* The symbol.  */
-
-  const struct symbol *sym;
-
-  /* The error message to emit.  This is malloc'd and owned by the
-     hash table.  */
-
-  char *message;
-};
-
-/* Hash a type_map_instance.  */
-
-static hashval_t
-hash_type_map_instance (const void *p)
-{
-  const struct type_map_instance *inst = (const struct type_map_instance *) p;
-
-  return htab_hash_pointer (inst->type);
-}
-
-/* Check two type_map_instance objects for equality.  */
-
-static int
-eq_type_map_instance (const void *a, const void *b)
-{
-  const struct type_map_instance *insta = (const struct type_map_instance *) a;
-  const struct type_map_instance *instb = (const struct type_map_instance *) b;
-
-  return insta->type == instb->type;
-}
-
-/* Hash function for struct symbol_error.  */
-
-static hashval_t
-hash_symbol_error (const void *a)
-{
-  const struct symbol_error *se = (const struct symbol_error *) a;
-
-  return htab_hash_pointer (se->sym);
-}
-
-/* Equality function for struct symbol_error.  */
-
-static int
-eq_symbol_error (const void *a, const void *b)
-{
-  const struct symbol_error *sea = (const struct symbol_error *) a;
-  const struct symbol_error *seb = (const struct symbol_error *) b;
-
-  return sea->sym == seb->sym;
-}
-
-/* Deletion function for struct symbol_error.  */
-
-static void
-del_symbol_error (void *a)
-{
-  struct symbol_error *se = (struct symbol_error *) a;
-
-  xfree (se->message);
-  xfree (se);
-}
-
-/* Constructor for compile_instance.  */
-
-compile_instance::compile_instance (struct gcc_base_context *gcc_fe,
-				    const char *options)
-  : m_gcc_fe (gcc_fe), m_gcc_target_options (options),
-    m_type_map (htab_create_alloc (10, hash_type_map_instance,
-				   eq_type_map_instance,
-				   xfree, xcalloc, xfree)),
-    m_symbol_err_map (htab_create_alloc (10, hash_symbol_error,
-					 eq_symbol_error, del_symbol_error,
-					 xcalloc, xfree))
-{
-}
-
 /* See compile-internal.h.  */
 
 bool
 compile_instance::get_cached_type (struct type *type, gcc_type *ret) const
 {
-  struct type_map_instance inst, *found;
-
-  inst.type = type;
-  found = (struct type_map_instance *) htab_find (m_type_map.get (), &inst);
-  if (found != NULL)
+  if (auto iter = m_type_map.find (type);
+      iter != m_type_map.end ())
     {
-      *ret = found->gcc_type_handle;
+      *ret = iter->second;
       return true;
     }
 
@@ -162,25 +82,12 @@ compile_instance::get_cached_type (struc
 void
 compile_instance::insert_type (struct type *type, gcc_type gcc_type)
 {
-  struct type_map_instance inst, *add;
-  void **slot;
+  auto [it, inserted] = m_type_map.emplace (type, gcc_type);
 
-  inst.type = type;
-  inst.gcc_type_handle = gcc_type;
-  slot = htab_find_slot (m_type_map.get (), &inst, INSERT);
-
-  add = (struct type_map_instance *) *slot;
   /* The type might have already been inserted in order to handle
      recursive types.  */
-  if (add != NULL && add->gcc_type_handle != gcc_type)
+  if (!inserted && it->second != gcc_type)
     error (_("Unexpected type id from GCC, check you use recent enough GCC."));
-
-  if (add == NULL)
-    {
-      add = XNEW (struct type_map_instance);
-      *add = inst;
-      *slot = add;
-    }
 }
 
 /* See compile-internal.h.  */
@@ -189,19 +96,7 @@ void
 compile_instance::insert_symbol_error (const struct symbol *sym,
 				       const char *text)
 {
-  struct symbol_error e;
-  void **slot;
-
-  e.sym = sym;
-  slot = htab_find_slot (m_symbol_err_map.get (), &e, INSERT);
-  if (*slot == NULL)
-    {
-      struct symbol_error *ep = XNEW (struct symbol_error);
-
-      ep->sym = sym;
-      ep->message = xstrdup (text);
-      *slot = ep;
-    }
+  m_symbol_err_map.emplace (sym, text);
 }
 
 /* See compile-internal.h.  */
@@ -209,20 +104,12 @@ compile_instance::insert_symbol_error (c
 void
 compile_instance::error_symbol_once (const struct symbol *sym)
 {
-  struct symbol_error search;
-  struct symbol_error *err;
-
-  if (m_symbol_err_map == NULL)
-    return;
-
-  search.sym = sym;
-  err = (struct symbol_error *) htab_find (m_symbol_err_map.get (), &search);
-  if (err == NULL || err->message == NULL)
-    return;
-
-  gdb::unique_xmalloc_ptr<char> message (err->message);
-  err->message = NULL;
-  error (_("%s"), message.get ());
+  if (auto iter = m_symbol_err_map.find (sym);
+      iter != m_symbol_err_map.end () && !iter->second.empty ())
+    {
+      std::string message = std::move (iter->second);
+      error (_("%s"), message.c_str ());
+    }
 }
 
 /* Implement "show debug compile".  */
@@ -231,7 +118,7 @@ static void
 show_compile_debug (struct ui_file *file, int from_tty,
 		    struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Compile debugging is %s.\n"), value);
+  gdb_printf (file, _("Compile debugging is %s.\n"), value);
 }
 
 
@@ -288,15 +175,14 @@ compile_file_command (const char *args,
   enum compile_i_scope_types scope
     = options.raw ? COMPILE_I_RAW_SCOPE : COMPILE_I_SIMPLE_SCOPE;
 
-  args = skip_spaces (args);
+  std::string filename = extract_single_filename_arg (args);
 
   /* After processing options, check whether we have a filename.  */
-  if (args == nullptr || args[0] == '\0')
+  if (filename.empty ())
     error (_("You must provide a filename for this command."));
 
-  args = skip_spaces (args);
-  gdb::unique_xmalloc_ptr<char> abspath = gdb_abspath (args);
-  std::string buffer = string_printf ("#include \"%s\"\n", abspath.get ());
+  std::string abspath = gdb_abspath (filename.c_str ());
+  std::string buffer = string_printf ("#include \"%s\"\n", abspath.c_str ());
   eval_compile_command (NULL, buffer.c_str (), scope, NULL);
 }
 
@@ -313,8 +199,8 @@ compile_file_command_completer (struct c
       (tracker, &text, gdb::option::PROCESS_OPTIONS_UNKNOWN_IS_ERROR, group))
     return;
 
-  word = advance_to_filename_complete_word_point (tracker, text);
-  filename_completer (ignore, tracker, text, word);
+  word = advance_to_filename_maybe_quoted_complete_word_point (tracker, text);
+  filename_maybe_quoted_completer (ignore, tracker, text, word);
 }
 
 /* Handle the input from the 'compile code' command.  The
@@ -412,23 +298,6 @@ compile_print_command (const char *arg,
     }
 }
 
-/* A cleanup function to remove a directory and all its contents.  */
-
-static void
-do_rmdir (void *arg)
-{
-  const char *dir = (const char *) arg;
-  char *zap;
-  int wstat;
-
-  gdb_assert (startswith (dir, TMP_PREFIX));
-  zap = concat ("rm -rf ", dir, (char *) NULL);
-  wstat = system (zap);
-  if (wstat == -1 || !WIFEXITED (wstat) || WEXITSTATUS (wstat) != 0)
-    warning (_("Could not remove temporary directory %s"), dir);
-  XDELETEVEC (zap);
-}
-
 /* Return the name of the temporary directory to use for .o files, and
    arrange for the directory to be removed at shutdown.  */
 
@@ -450,7 +319,18 @@ get_compile_file_tempdir (void)
     perror_with_name (_("Could not make temporary directory"));
 
   tempdir_name = xstrdup (tempdir_name);
-  make_final_cleanup (do_rmdir, tempdir_name);
+  add_final_cleanup ([] ()
+    {
+      char *zap;
+      int wstat;
+
+      gdb_assert (startswith (tempdir_name, TMP_PREFIX));
+      zap = concat ("rm -rf ", tempdir_name, (char *) NULL);
+      wstat = system (zap);
+      if (wstat == -1 || !WIFEXITED (wstat) || WEXITSTATUS (wstat) != 0)
+	warning (_("Could not remove temporary directory %s"), tempdir_name);
+      XDELETEVEC (zap);
+    });
   return tempdir_name;
 }
 
@@ -479,47 +359,48 @@ get_expr_block_and_pc (CORE_ADDR *pc)
 
   if (block == NULL)
     {
-      struct symtab_and_line cursal = get_current_source_symtab_and_line ();
+      symtab_and_line cursal
+	= get_current_source_symtab_and_line (current_program_space);
 
       if (cursal.symtab)
-	block = BLOCKVECTOR_BLOCK (SYMTAB_BLOCKVECTOR (cursal.symtab),
-				   STATIC_BLOCK);
+	block = cursal.symtab->compunit ()->blockvector ()->static_block ();
+
       if (block != NULL)
-	*pc = BLOCK_ENTRY_PC (block);
+	*pc = block->entry_pc ();
     }
   else
-    *pc = BLOCK_ENTRY_PC (block);
+    *pc = block->entry_pc ();
 
   return block;
 }
 
-/* Call buildargv (via gdb_argv), set its result for S into *ARGVP but
-   calculate also the number of parsed arguments into *ARGCP.  If
-   buildargv has returned NULL then *ARGCP is set to zero.  */
-
-static void
-build_argc_argv (const char *s, int *argcp, char ***argvp)
-{
-  gdb_argv args (s);
-
-  *argcp = args.count ();
-  *argvp = args.release ();
-}
-
 /* String for 'set compile-args' and 'show compile-args'.  */
-static char *compile_args;
+static std::string compile_args =
+  /* Override flags possibly coming from DW_AT_producer.  */
+  "-O0 -gdwarf-4"
+  /* We use -fPIE Otherwise GDB would need to reserve space large enough for
+     any object file in the inferior in advance to get the final address when
+     to link the object file to and additionally the default system linker
+     script would need to be modified so that one can specify there the
+     absolute target address.
+     -fPIC is not used at is would require from GDB to generate .got.  */
+  " -fPIE"
+  /* We want warnings, except for some commonly happening for GDB commands.  */
+  " -Wall "
+  " -Wno-unused-but-set-variable"
+  " -Wno-unused-variable"
+  /* Override CU's possible -fstack-protector-strong.  */
+  " -fno-stack-protector";
 
-/* Parsed form of COMPILE_ARGS.  COMPILE_ARGS_ARGV is NULL terminated.  */
-static int compile_args_argc;
-static char **compile_args_argv;
+/* Parsed form of COMPILE_ARGS.  */
+static gdb_argv compile_args_argv;
 
 /* Implement 'set compile-args'.  */
 
 static void
 set_compile_args (const char *args, int from_tty, struct cmd_list_element *c)
 {
-  freeargv (compile_args_argv);
-  build_argc_argv (compile_args, &compile_args_argc, &compile_args_argv);
+  compile_args_argv = gdb_argv (compile_args.c_str ());
 }
 
 /* Implement 'show compile-args'.  */
@@ -528,28 +409,13 @@ static void
 show_compile_args (struct ui_file *file, int from_tty,
 		   struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Compile command command-line arguments "
-			    "are \"%s\".\n"),
-		    value);
-}
-
-/* Append ARGC and ARGV (as parsed by build_argc_argv) to *ARGCP and *ARGVP.
-   ARGCP+ARGVP can be zero+NULL and also ARGC+ARGV can be zero+NULL.  */
-
-static void
-append_args (int *argcp, char ***argvp, int argc, char **argv)
-{
-  int argi;
-
-  *argvp = XRESIZEVEC (char *, *argvp, (*argcp + argc + 1));
-
-  for (argi = 0; argi < argc; argi++)
-    (*argvp)[(*argcp)++] = xstrdup (argv[argi]);
-  (*argvp)[(*argcp)] = NULL;
+  gdb_printf (file, _("Compile command command-line arguments "
+		      "are \"%s\".\n"),
+	      value);
 }
 
 /* String for 'set compile-gcc' and 'show compile-gcc'.  */
-static char *compile_gcc;
+static std::string compile_gcc;
 
 /* Implement 'show compile-gcc'.  */
 
@@ -557,8 +423,8 @@ static void
 show_compile_gcc (struct ui_file *file, int from_tty,
 		  struct cmd_list_element *c, const char *value)
 {
-  fprintf_filtered (file, _("Compile command GCC driver filename is \"%s\".\n"),
-		    value);
+  gdb_printf (file, _("Compile command GCC driver filename is \"%s\".\n"),
+	      value);
 }
 
 /* Return DW_AT_producer parsed for get_selected_frame () (if any).
@@ -574,11 +440,11 @@ get_selected_pc_producer_options (void)
   struct compunit_symtab *symtab = find_pc_compunit_symtab (pc);
   const char *cs;
 
-  if (symtab == NULL || symtab->producer == NULL
-      || !startswith (symtab->producer, "GNU "))
+  if (symtab == NULL || symtab->producer () == NULL
+      || !startswith (symtab->producer (), "GNU "))
     return NULL;
 
-  cs = symtab->producer;
+  cs = symtab->producer ();
   while (*cs != 0 && *cs != '-')
     cs = skip_spaces (skip_to_space (cs));
   if (*cs != '-')
@@ -586,10 +452,10 @@ get_selected_pc_producer_options (void)
   return cs;
 }
 
-/* Filter out unwanted options from *ARGCP and ARGV.  */
+/* Filter out unwanted options from ARGV.  */
 
 static void
-filter_args (int *argcp, char **argv)
+filter_args (char **argv)
 {
   char **destv;
 
@@ -599,7 +465,6 @@ filter_args (int *argcp, char **argv)
       if (strcmp (*argv, "-fpreprocessed") == 0)
 	{
 	  xfree (*argv);
-	  (*argcp)--;
 	  continue;
 	}
       *destv++ = *argv;
@@ -627,35 +492,32 @@ filter_args (int *argcp, char **argv)
    appended last so as to override any of the arguments automatically
    generated above.  */
 
-static void
-get_args (const compile_instance *compiler, struct gdbarch *gdbarch,
-	  int *argcp, char ***argvp)
+static gdb_argv
+get_args (const compile_instance *compiler, struct gdbarch *gdbarch)
 {
   const char *cs_producer_options;
-  int argc_compiler;
-  char **argv_compiler;
+  gdb_argv result;
+
+  std::string gcc_options = gdbarch_gcc_target_options (gdbarch);
 
-  build_argc_argv (gdbarch_gcc_target_options (gdbarch).c_str (),
-		   argcp, argvp);
+  /* Make sure we have a non-empty set of options, otherwise GCC will
+     error out trying to look for a filename that is an empty string.  */
+  if (!gcc_options.empty ())
+    result = gdb_argv (gcc_options.c_str ());
 
   cs_producer_options = get_selected_pc_producer_options ();
   if (cs_producer_options != NULL)
     {
-      int argc_producer;
-      char **argv_producer;
+      gdb_argv argv_producer (cs_producer_options);
+      filter_args (argv_producer.get ());
 
-      build_argc_argv (cs_producer_options, &argc_producer, &argv_producer);
-      filter_args (&argc_producer, argv_producer);
-      append_args (argcp, argvp, argc_producer, argv_producer);
-      freeargv (argv_producer);
+      result.append (std::move (argv_producer));
     }
 
-  build_argc_argv (compiler->gcc_target_options ().c_str (),
-		   &argc_compiler, &argv_compiler);
-  append_args (argcp, argvp, argc_compiler, argv_compiler);
-  freeargv (argv_compiler);
+  result.append (gdb_argv (compiler->gcc_target_options ().c_str ()));
+  result.append (compile_args_argv);
 
-  append_args (argcp, argvp, compile_args_argc, compile_args_argv);
+  return result;
 }
 
 /* A helper function suitable for use as the "print_callback" in the
@@ -664,7 +526,42 @@ get_args (const compile_instance *compil
 static void
 print_callback (void *ignore, const char *message)
 {
-  fputs_filtered (message, gdb_stderr);
+  gdb_puts (message, gdb_stderr);
+}
+
+/* Helper for compile_to_object, to find the compile context
+   based on the current language.  */
+static std::unique_ptr<compile_instance>
+get_language_compile_context ()
+{
+  switch (current_language->la_language)
+    {
+    case language_c:
+      return c_get_compile_context ();
+    case language_cplus:
+      return cplus_get_compile_context ();
+    default:
+      return {};
+    }
+}
+
+/* Helper for compile_to_object, to call the correct
+   compute_program based on the current language.  */
+static std::string
+compute_program_language (compile_instance *inst, const char *input,
+			  struct gdbarch *gdbarch,
+			  const struct block *block,
+			  CORE_ADDR pc)
+{
+  switch (current_language->la_language)
+    {
+    case language_c:
+      return c_compute_program (inst, input, gdbarch, block, pc);
+    case language_cplus:
+      return cplus_compute_program (inst, input, gdbarch, block, pc);
+    default:
+      gdb_assert_not_reached ("Unsupported language");
+    }
 }
 
 /* Process the compilation request.  On success it returns the object
@@ -677,13 +574,11 @@ compile_to_object (struct command_line *
 {
   const struct block *expr_block;
   CORE_ADDR trash_pc, expr_pc;
-  int argc;
-  char **argv;
   int ok;
   struct gdbarch *gdbarch = get_current_arch ();
   std::string triplet_rx;
 
-  if (!target_has_execution)
+  if (!target_has_execution ())
     error (_("The program must be running for the compile command to "\
 	     "work."));
 
@@ -691,13 +586,12 @@ 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)
-    error (_("No compiler support for language %s."),
-	   current_language->la_name);
+  std::unique_ptr<compile_instance> compiler
+    = get_language_compile_context ();
 
-  compile_instance *compiler_instance
-    = current_language->la_get_compile_instance ();
-  std::unique_ptr<compile_instance> compiler (compiler_instance);
+  if (compiler == nullptr)
+    error (_("No compiler support for language %s."),
+	   current_language->name ());
   compiler->set_print_callback (print_callback, NULL);
   compiler->set_scope (scope);
   compiler->set_block (expr_block);
@@ -726,20 +620,20 @@ 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);
+    = compute_program_language (compiler.get (), input, gdbarch,
+				expr_block, expr_pc);
   if (compile_debug)
-    fprintf_unfiltered (gdb_stdlog, "debug output:\n\n%s", code.c_str ());
+    gdb_printf (gdb_stdlog, "debug output:\n\n%s", code.c_str ());
 
   compiler->set_verbose (compile_debug);
 
-  if (compile_gcc[0] != 0)
+  if (!compile_gcc.empty ())
     {
       if (compiler->version () < GCC_FE_VERSION_1)
 	error (_("Command 'set compile-gcc' requires GCC version 6 or higher "
 		 "(libcc1 interface version 1 or higher)"));
 
-      compiler->set_driver_filename (compile_gcc);
+      compiler->set_driver_filename (compile_gcc.c_str ());
     }
   else
     {
@@ -747,17 +641,19 @@ compile_to_object (struct command_line *
       const char *arch_rx = gdbarch_gnu_triplet_regexp (gdbarch);
 
       /* Allow triplets with or without vendor set.  */
-      triplet_rx = std::string (arch_rx) + "(-[^-]*)?-" + os_rx;
+      triplet_rx = std::string (arch_rx) + "(-[^-]*)?-";
+      if (os_rx != nullptr)
+	triplet_rx += os_rx;
       compiler->set_triplet_regexp (triplet_rx.c_str ());
     }
 
   /* Set compiler command-line arguments.  */
-  get_args (compiler.get (), gdbarch, &argc, &argv);
-  gdb_argv argv_holder (argv);
+  gdb_argv argv_holder = get_args (compiler.get (), gdbarch);
+  int argc = argv_holder.count ();
+  char **argv = argv_holder.get ();
 
-  gdb::unique_xmalloc_ptr<char> error_message;
-  error_message.reset (compiler->set_arguments (argc, argv,
-						triplet_rx.c_str ()));
+  gdb::unique_xmalloc_ptr<char> error_message
+    = compiler->set_arguments (argc, argv, triplet_rx.c_str ());
 
   if (error_message != NULL)
     error ("%s", error_message.get ());
@@ -766,15 +662,15 @@ compile_to_object (struct command_line *
     {
       int argi;
 
-      fprintf_unfiltered (gdb_stdlog, "Passing %d compiler options:\n", argc);
+      gdb_printf (gdb_stdlog, "Passing %d compiler options:\n", argc);
       for (argi = 0; argi < argc; argi++)
-	fprintf_unfiltered (gdb_stdlog, "Compiler option %d: <%s>\n",
-			    argi, argv[argi]);
+	gdb_printf (gdb_stdlog, "Compiler option %d: <%s>\n",
+		    argi, argv[argi]);
     }
 
   compile_file_names fnames = get_new_file_names ();
 
-  gdb::optional<gdb::unlinker> source_remover;
+  std::optional<gdb::unlinker> source_remover;
 
   {
     gdb_file_up src = gdb_fopen_cloexec (fnames.source_file (), "w");
@@ -788,8 +684,12 @@ compile_to_object (struct command_line *
   }
 
   if (compile_debug)
-    fprintf_unfiltered (gdb_stdlog, "source file produced: %s\n\n",
-			fnames.source_file ());
+    gdb_printf (gdb_stdlog, "source file produced: %s\n\n",
+		fnames.source_file ());
+
+  /* If we don't do this, then GDB simply exits
+     when the compiler dies.  */
+  scoped_ignore_sigpipe ignore_sigpipe;
 
   /* Call the compiler and start the compilation process.  */
   compiler->set_source_file (fnames.source_file ());
@@ -798,8 +698,8 @@ compile_to_object (struct command_line *
     error (_("Compilation failed."));
 
   if (compile_debug)
-    fprintf_unfiltered (gdb_stdlog, "object file produced: %s\n\n",
-			fnames.object_file ());
+    gdb_printf (gdb_stdlog, "object file produced: %s\n\n",
+		fnames.object_file ());
 
   /* Keep the source file.  */
   source_remover->keep ();
@@ -822,14 +722,13 @@ void
 eval_compile_command (struct command_line *cmd, const char *cmd_string,
 		      enum compile_i_scope_types scope, void *scope_data)
 {
-  struct compile_module *compile_module;
-
   compile_file_names fnames = compile_to_object (cmd, cmd_string, scope);
 
   gdb::unlinker object_remover (fnames.object_file ());
   gdb::unlinker source_remover (fnames.source_file ());
 
-  compile_module = compile_object_load (fnames, scope, scope_data);
+  compile_module_up compile_module = compile_object_load (fnames, scope,
+							  scope_data);
   if (compile_module == NULL)
     {
       gdb_assert (scope == COMPILE_I_PRINT_ADDRESS_SCOPE);
@@ -842,7 +741,7 @@ eval_compile_command (struct command_lin
   source_remover.keep ();
   object_remover.keep ();
 
-  compile_object_run (compile_module);
+  compile_object_run (std::move (compile_module));
 }
 
 /* See compile/compile-internal.h.  */
@@ -924,13 +823,14 @@ compile_instance::set_triplet_regexp (co
 
 /* See compile-internal.h.  */
 
-char *
+gdb::unique_xmalloc_ptr<char>
 compile_instance::set_arguments (int argc, char **argv, const char *regexp)
 {
   if (version () >= GCC_FE_VERSION_1)
-    return FORWARD (set_arguments, argc, argv);
+    return gdb::unique_xmalloc_ptr<char> (FORWARD (set_arguments, argc, argv));
   else
-    return FORWARD (set_arguments_v0, regexp, argc, argv);
+    return gdb::unique_xmalloc_ptr<char> (FORWARD (set_arguments_v0, regexp,
+						   argc, argv));
 }
 
 /* See compile-internal.h.  */
@@ -954,19 +854,41 @@ compile_instance::compile (const char *f
 
 #undef FORWARD
 
+#else /* HAVE_COMPILE */
+
+/* The "compile" prefix command, when support was disabled.  */
+
+static void
+compile_command (const char *args, int from_tty)
+{
+  error (_("This command is not supported."));
+}
+
+#endif /* HAVE_COMPILE */
+
 /* See compile.h.  */
 cmd_list_element *compile_cmd_element = nullptr;
 
-void
-_initialize_compile (void)
+INIT_GDB_FILE (compile)
 {
-  struct cmd_list_element *c = NULL;
-
   compile_cmd_element = add_prefix_cmd ("compile", class_obscure,
-					compile_command, _("\
+					compile_command,
+#ifdef HAVE_COMPILE
+					_("\
 Command to compile source code and inject it into the inferior."),
-		  &compile_command_list, "compile ", 1, &cmdlist);
-  add_com_alias ("expression", "compile", class_obscure, 0);
+#else /* HAVE_COMPILE */
+					_("\
+Command to compile source code and inject it into the inferior.\n\
+\n\
+Code compilation and injection is not supported in this copy of GDB.\n\
+This command is only a placeholder."),
+#endif /* HAVE_COMPILE */
+		  &compile_command_list, 1, &cmdlist);
+  add_com_alias ("expression", compile_cmd_element, class_obscure, 0);
+
+#ifdef HAVE_COMPILE
+
+  struct cmd_list_element *c = NULL;
 
   const auto compile_opts = make_compile_options_def_group (nullptr);
 
@@ -1059,23 +981,9 @@ String quoting is parsed like in shell,
   -mno-align-double \"-I/dir with a space/include\""),
 			  set_compile_args, show_compile_args, &setlist, &showlist);
 
-  /* Override flags possibly coming from DW_AT_producer.  */
-  compile_args = xstrdup ("-O0 -gdwarf-4"
-  /* We use -fPIE Otherwise GDB would need to reserve space large enough for
-     any object file in the inferior in advance to get the final address when
-     to link the object file to and additionally the default system linker
-     script would need to be modified so that one can specify there the
-     absolute target address.
-     -fPIC is not used at is would require from GDB to generate .got.  */
-			 " -fPIE"
-  /* We want warnings, except for some commonly happening for GDB commands.  */
-			 " -Wall "
-			 " -Wno-unused-but-set-variable"
-			 " -Wno-unused-variable"
-  /* Override CU's possible -fstack-protector-strong.  */
-			 " -fno-stack-protector"
-  );
-  set_compile_args (compile_args, 0, NULL);
+
+  /* Initialize compile_args_argv.  */
+  set_compile_args (compile_args.c_str (), 0, NULL);
 
   add_setshow_optional_filename_cmd ("compile-gcc", class_support,
 				     &compile_gcc,
@@ -1088,5 +996,5 @@ It should be absolute filename of the gc
 If empty the default target triplet will be searched in $PATH."),
 				     NULL, show_compile_gcc, &setlist,
 				     &showlist);
-  compile_gcc = xstrdup ("");
+#endif /* HAVE_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.20200303/gdb/compile/compile-c.h ./gdb/compile/compile-c.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/compile/compile-c.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-c.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,9 +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/>.  */
 
-#ifndef COMPILE_COMPILE_C_H
-#define COMPILE_COMPILE_C_H
+#ifndef GDB_COMPILE_COMPILE_C_H
+#define GDB_COMPILE_COMPILE_C_H
 
+#include "compile/compile.h"
 #include "gdbsupport/enum-flags.h"
 #include "gcc-c-plugin.h"
 
@@ -66,7 +67,7 @@ private:
    register number, where each element indicates if the corresponding
    register is needed to compute a local variable.  */
 
-extern gdb::unique_xmalloc_ptr<unsigned char>
+extern std::vector<bool>
   generate_c_for_variable_locations
      (compile_instance *compiler,
       string_file *stream,
@@ -92,4 +93,4 @@ extern std::string c_get_range_decl_name
 extern gdb::unique_xmalloc_ptr<char>
   c_symbol_substitution_name (struct symbol *sym);
 
-#endif /* COMPILE_COMPILE_C_H */
+#endif /* GDB_COMPILE_COMPILE_C_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.20200303/gdb/compile/compile-cplus.h ./gdb/compile/compile-cplus.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/compile/compile-cplus.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-cplus.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,9 +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/>.  */
 
-#ifndef COMPILE_COMPILE_CPLUS_H
-#define COMPILE_COMPILE_CPLUS_H
+#ifndef GDB_COMPILE_COMPILE_CPLUS_H
+#define GDB_COMPILE_COMPILE_CPLUS_H
 
+#include "compile/compile.h"
 #include "gdbsupport/enum-flags.h"
 #include "gcc-cp-plugin.h"
 #include "symtab.h"
@@ -203,4 +204,4 @@ private:
 enum gcc_cp_symbol_kind get_method_access_flag (const struct type *type,
 						int fni, int num);
 
-#endif /* COMPILE_COMPILE_CPLUS_H */
+#endif /* GDB_COMPILE_COMPILE_CPLUS_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.20200303/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.20200303/gdb/compile/compile-cplus-symbols.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-cplus-symbols.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert symbols from GDB to GCC
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 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 "compile-internal.h"
 #include "compile-cplus.h"
 #include "gdbsupport/gdb_assert.h"
@@ -30,10 +29,11 @@
 #include "value.h"
 #include "exceptions.h"
 #include "gdbtypes.h"
-#include "dwarf2loc.h"
+#include "dwarf2/loc.h"
 #include "cp-support.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "compile-c.h"
+#include "inferior.h"
 
 /* Convert a given symbol, SYM, to the compiler's representation.
    INSTANCE is the compiler instance.  IS_GLOBAL is true if the
@@ -48,17 +48,17 @@ convert_one_symbol (compile_cplus_instan
 {
   /* Squash compiler warning.  */
   gcc_type sym_type = 0;
-  const char *filename = symbol_symtab (sym.symbol)->filename;
-  unsigned short line = SYMBOL_LINE (sym.symbol);
+  const char *filename = sym.symbol->symtab ()->filename;
+  unsigned int line = sym.symbol->line ();
 
   instance->error_symbol_once (sym.symbol);
 
-  if (SYMBOL_CLASS (sym.symbol) == LOC_LABEL)
+  if (sym.symbol->loc_class () == LOC_LABEL)
     sym_type = 0;
   else
-    sym_type = instance->convert_type (SYMBOL_TYPE (sym.symbol));
+    sym_type = instance->convert_type (sym.symbol->type ());
 
-  if (SYMBOL_DOMAIN (sym.symbol) == STRUCT_DOMAIN)
+  if (sym.symbol->domain () == STRUCT_DOMAIN)
     {
       /* Nothing to do.  */
     }
@@ -70,38 +70,39 @@ convert_one_symbol (compile_cplus_instan
       std::string name;
       gdb::unique_xmalloc_ptr<char> symbol_name;
 
-      switch (SYMBOL_CLASS (sym.symbol))
+      switch (sym.symbol->loc_class ())
 	{
 	case LOC_TYPEDEF:
-	  if (TYPE_CODE (SYMBOL_TYPE (sym.symbol)) == TYPE_CODE_TYPEDEF)
+	  if (sym.symbol->type ()->code () == TYPE_CODE_TYPEDEF)
 	    kind = GCC_CP_SYMBOL_TYPEDEF;
-	  else  if (TYPE_CODE (SYMBOL_TYPE (sym.symbol)) == TYPE_CODE_NAMESPACE)
+	  else  if (sym.symbol->type ()->code () == TYPE_CODE_NAMESPACE)
 	    return;
 	  break;
 
 	case LOC_LABEL:
 	  kind = GCC_CP_SYMBOL_LABEL;
-	  addr = SYMBOL_VALUE_ADDRESS (sym.symbol);
+	  addr = sym.symbol->value_address ();
 	  break;
 
 	case LOC_BLOCK:
 	  {
 	    kind = GCC_CP_SYMBOL_FUNCTION;
-	    addr = BLOCK_START (SYMBOL_BLOCK_VALUE (sym.symbol));
-	    if (is_global && TYPE_GNU_IFUNC (SYMBOL_TYPE (sym.symbol)))
-	      addr = gnu_ifunc_resolve_addr (target_gdbarch (), addr);
+	    addr = sym.symbol->value_block()->start ();
+	    if (is_global && sym.symbol->type ()->is_gnu_ifunc ())
+	      addr = gnu_ifunc_resolve_addr (current_inferior ()->arch (),
+					     addr);
 	  }
 	  break;
 
 	case LOC_CONST:
-	  if (TYPE_CODE (SYMBOL_TYPE (sym.symbol)) == TYPE_CODE_ENUM)
+	  if (sym.symbol->type ()->code () == TYPE_CODE_ENUM)
 	    {
 	      /* Already handled by convert_enum.  */
 	      return;
 	    }
 	  instance->plugin ().build_constant
 	    (sym_type, sym.symbol->natural_name (),
-	     SYMBOL_VALUE (sym.symbol), filename, line);
+	     sym.symbol->value_longest (), filename, line);
 	  return;
 
 	case LOC_CONST_BYTES:
@@ -109,7 +110,7 @@ convert_one_symbol (compile_cplus_instan
 		 sym.symbol->print_name ());
 
 	case LOC_UNDEF:
-	  internal_error (__FILE__, __LINE__, _("LOC_UNDEF found for \"%s\"."),
+	  internal_error (_("LOC_UNDEF found for \"%s\"."),
 			  sym.symbol->print_name ());
 
 	case LOC_COMMON_BLOCK:
@@ -130,7 +131,7 @@ convert_one_symbol (compile_cplus_instan
 		     "be referenced from the current thread in "
 		     "compiled code."),
 		   sym.symbol->print_name ());
-	  /* FALLTHROUGH */
+	  [[fallthrough]];
 	case LOC_UNRESOLVED:
 	  /* 'symbol_name' cannot be used here as that one is used only for
 	     local variables from compile_dwarf_expr_to_c.
@@ -138,7 +139,7 @@ convert_one_symbol (compile_cplus_instan
 	     by their name.  */
 	  {
 	    struct value *val;
-	    struct frame_info *frame = nullptr;
+	    frame_info_ptr frame = nullptr;
 
 	    if (symbol_read_needs_frame (sym.symbol))
 	      {
@@ -150,13 +151,13 @@ convert_one_symbol (compile_cplus_instan
 	      }
 
 	    val = read_var_value (sym.symbol, sym.block, frame);
-	    if (VALUE_LVAL (val) != lval_memory)
+	    if (val->lval () != lval_memory)
 	      error (_("Symbol \"%s\" cannot be used for compilation "
 		       "evaluation as its address has not been found."),
 		     sym.symbol->print_name ());
 
 	    kind = GCC_CP_SYMBOL_VARIABLE;
-	    addr = value_address (val);
+	    addr = val->address ();
 	  }
 	  break;
 
@@ -173,7 +174,7 @@ convert_one_symbol (compile_cplus_instan
 
 	case LOC_STATIC:
 	  kind = GCC_CP_SYMBOL_VARIABLE;
-	  addr = SYMBOL_VALUE_ADDRESS (sym.symbol);
+	  addr = sym.symbol->value_address ();
 	  break;
 
 	case LOC_FINAL_VALUE:
@@ -190,7 +191,7 @@ convert_one_symbol (compile_cplus_instan
 	    {
 	      compile_scope scope
 		= instance->new_scope (sym.symbol->natural_name (),
-				       SYMBOL_TYPE (sym.symbol));
+				       sym.symbol->type ());
 	      if (scope.nested_type () != GCC_TYPE_NONE)
 		{
 		  /* We found a symbol for this type that was defined inside
@@ -208,7 +209,7 @@ convert_one_symbol (compile_cplus_instan
 
 	  /* Define the decl.  */
 	  instance->plugin ().build_decl
-	    ("variable", name.c_str (), kind, sym_type,
+	    ("variable", name.c_str (), kind.raw (), sym_type,
 	     symbol_name.get (), addr, filename, line);
 
 	  /* Pop scope for non-local symbols.  */
@@ -225,7 +226,7 @@ convert_one_symbol (compile_cplus_instan
 static void
 convert_symbol_sym (compile_cplus_instance *instance,
 		    const char *identifier, struct block_symbol sym,
-		    domain_enum domain)
+		    domain_search_flags domain)
 {
   /* If we found a symbol and it is not in the  static or global
      scope, then we should first convert any static or global scope
@@ -239,7 +240,9 @@ convert_symbol_sym (compile_cplus_instan
      }
   */
 
-  const struct block *static_block = block_static_block (sym.block);
+  const struct block *static_block = nullptr;
+  if (sym.block != nullptr)
+    static_block = sym.block->static_block ();
   /* STATIC_BLOCK is NULL if FOUND_BLOCK is the global block.  */
   bool is_local_symbol = (sym.block != static_block && static_block != nullptr);
   if (is_local_symbol)
@@ -250,20 +253,20 @@ convert_symbol_sym (compile_cplus_instan
       /* If the outer symbol is in the static block, we ignore it, as
 	 it cannot be referenced.  */
       if (global_sym.symbol != nullptr
-	  && global_sym.block != block_static_block (global_sym.block))
+	  && global_sym.block != global_sym.block->static_block ())
 	{
 	  if (compile_debug)
-	    fprintf_unfiltered (gdb_stdlog,
-				"gcc_convert_symbol \"%s\": global symbol\n",
-				identifier);
+	    gdb_printf (gdb_stdlog,
+			"gcc_convert_symbol \"%s\": global symbol\n",
+			identifier);
 	  convert_one_symbol (instance, global_sym, true, false);
 	}
     }
 
   if (compile_debug)
-    fprintf_unfiltered (gdb_stdlog,
-			"gcc_convert_symbol \"%s\": local symbol\n",
-			identifier);
+    gdb_printf (gdb_stdlog,
+		"gcc_convert_symbol \"%s\": local symbol\n",
+		identifier);
   convert_one_symbol (instance, sym, false, is_local_symbol);
 }
 
@@ -272,7 +275,7 @@ convert_symbol_sym (compile_cplus_instan
 
 static void
 convert_symbol_bmsym (compile_cplus_instance *instance,
-		      struct bound_minimal_symbol bmsym)
+		      bound_minimal_symbol bmsym)
 {
   struct minimal_symbol *msym = bmsym.minsym;
   struct objfile *objfile = bmsym.objfile;
@@ -281,41 +284,41 @@ convert_symbol_bmsym (compile_cplus_inst
   gcc_type sym_type;
   CORE_ADDR addr;
 
-  addr = MSYMBOL_VALUE_ADDRESS (objfile, msym);
+  addr = msym->value_address (objfile);
 
   /* Conversion copied from write_exp_msymbol.  */
-  switch (MSYMBOL_TYPE (msym))
+  switch (msym->type ())
     {
     case mst_text:
     case mst_file_text:
     case mst_solib_trampoline:
-      type = objfile_type (objfile)->nodebug_text_symbol;
+      type = builtin_type (objfile)->nodebug_text_symbol;
       kind = GCC_CP_SYMBOL_FUNCTION;
       break;
 
     case mst_text_gnu_ifunc:
       /* nodebug_text_gnu_ifunc_symbol would cause:
 	 function return type cannot be function  */
-      type = objfile_type (objfile)->nodebug_text_symbol;
+      type = builtin_type (objfile)->nodebug_text_symbol;
       kind = GCC_CP_SYMBOL_FUNCTION;
-      addr = gnu_ifunc_resolve_addr (target_gdbarch (), addr);
+      addr = gnu_ifunc_resolve_addr (current_inferior ()->arch (), addr);
       break;
 
     case mst_data:
     case mst_file_data:
     case mst_bss:
     case mst_file_bss:
-      type = objfile_type (objfile)->nodebug_data_symbol;
+      type = builtin_type (objfile)->nodebug_data_symbol;
       kind = GCC_CP_SYMBOL_VARIABLE;
       break;
 
     case mst_slot_got_plt:
-      type = objfile_type (objfile)->nodebug_got_plt_symbol;
+      type = builtin_type (objfile)->nodebug_got_plt_symbol;
       kind = GCC_CP_SYMBOL_FUNCTION;
       break;
 
     default:
-      type = objfile_type (objfile)->nodebug_unknown_symbol;
+      type = builtin_type (objfile)->nodebug_unknown_symbol;
       kind = GCC_CP_SYMBOL_VARIABLE;
       break;
     }
@@ -323,7 +326,7 @@ convert_symbol_bmsym (compile_cplus_inst
   sym_type = instance->convert_type (type);
   instance->plugin ().push_namespace ("");
   instance->plugin ().build_decl
-    ("minsym", msym->natural_name (), kind, sym_type, nullptr, addr,
+    ("minsym", msym->natural_name (), kind.raw (), sym_type, nullptr, addr,
      nullptr, 0);
   instance->plugin ().pop_binding_level ("");
 }
@@ -337,8 +340,8 @@ gcc_cplus_convert_symbol (void *datum,
 			  const char *identifier)
 {
   if (compile_debug)
-    fprintf_unfiltered (gdb_stdlog,
-			"got oracle request for \"%s\"\n", identifier);
+    gdb_printf (gdb_stdlog,
+		"got oracle request for \"%s\"\n", identifier);
 
   bool found = false;
   compile_cplus_instance *instance = (compile_cplus_instance *) datum;
@@ -351,12 +354,12 @@ gcc_cplus_convert_symbol (void *datum,
 	 This will find variables in the current scope.  */
 
       struct block_symbol sym
-	= lookup_symbol (identifier, instance->block (), VAR_DOMAIN, nullptr);
+	= lookup_symbol (identifier, instance->block (), SEARCH_VFT, nullptr);
 
       if (sym.symbol != nullptr)
 	{
 	  found = true;
-	  convert_symbol_sym (instance, identifier, sym, VAR_DOMAIN);
+	  convert_symbol_sym (instance, identifier, sym, SEARCH_VFT);
 	}
 
       /* Then use linespec.c's multi-symbol search.  This should find
@@ -364,7 +367,7 @@ gcc_cplus_convert_symbol (void *datum,
 
       symbol_searcher searcher;
       searcher.find_all_symbols (identifier, current_language,
-				 ALL_DOMAIN, nullptr, nullptr);
+				 SEARCH_ALL_DOMAINS, nullptr, nullptr);
 
       /* Convert any found symbols.  */
       for (const auto &it : searcher.matching_symbols ())
@@ -374,7 +377,7 @@ gcc_cplus_convert_symbol (void *datum,
 	    {
 	      found = true;
 	      convert_symbol_sym (instance, identifier, it,
-				  SYMBOL_DOMAIN (it.symbol));
+				  to_search_flags (it.symbol->domain ()));
 	    }
 	}
 
@@ -396,18 +399,18 @@ gcc_cplus_convert_symbol (void *datum,
     }
 
   if (compile_debug && !found)
-    fprintf_unfiltered (gdb_stdlog,
-			"gcc_convert_symbol \"%s\": lookup_symbol failed\n",
-			identifier);
+    gdb_printf (gdb_stdlog,
+		"gcc_convert_symbol \"%s\": lookup_symbol failed\n",
+		identifier);
 
   if (compile_debug)
     {
       if (found)
-	fprintf_unfiltered (gdb_stdlog, "found type for %s\n", identifier);
+	gdb_printf (gdb_stdlog, "found type for %s\n", identifier);
       else
 	{
-	  fprintf_unfiltered (gdb_stdlog, "did not find type for %s\n",
-			      identifier);
+	  gdb_printf (gdb_stdlog, "did not find type for %s\n",
+		      identifier);
 	}
     }
 
@@ -425,42 +428,44 @@ gcc_cplus_symbol_address (void *datum, s
   int found = 0;
 
   if (compile_debug)
-    fprintf_unfiltered (gdb_stdlog,
-			"got oracle request for address of %s\n", identifier);
+    gdb_printf (gdb_stdlog,
+		"got oracle request for address of %s\n", identifier);
 
   /* We can't allow exceptions to escape out of this callback.  Safest
      is to simply emit a gcc error.  */
   try
     {
       struct symbol *sym
-	= lookup_symbol (identifier, nullptr, VAR_DOMAIN, nullptr).symbol;
+	= lookup_symbol (identifier, nullptr, SEARCH_FUNCTION_DOMAIN,
+			 nullptr).symbol;
 
-      if (sym != nullptr && SYMBOL_CLASS (sym) == LOC_BLOCK)
+      if (sym != nullptr)
 	{
 	  if (compile_debug)
-	    fprintf_unfiltered (gdb_stdlog,
-				"gcc_symbol_address \"%s\": full symbol\n",
-				identifier);
-	  result = BLOCK_START (SYMBOL_BLOCK_VALUE (sym));
-	  if (TYPE_GNU_IFUNC (SYMBOL_TYPE (sym)))
-	    result = gnu_ifunc_resolve_addr (target_gdbarch (), result);
+	    gdb_printf (gdb_stdlog,
+			"gcc_symbol_address \"%s\": full symbol\n",
+			identifier);
+	  result = sym->value_block ()->start ();
+	  if (sym->type ()->is_gnu_ifunc ())
+	    result = gnu_ifunc_resolve_addr (current_inferior ()->arch (),
+					     result);
 	  found = 1;
 	}
       else
 	{
-	  struct bound_minimal_symbol msym;
-
-	  msym = lookup_bound_minimal_symbol (identifier);
+	  bound_minimal_symbol msym
+	    = lookup_minimal_symbol (current_program_space, identifier);
 	  if (msym.minsym != nullptr)
 	    {
 	      if (compile_debug)
-		fprintf_unfiltered (gdb_stdlog,
-				    "gcc_symbol_address \"%s\": minimal "
-				    "symbol\n",
-				    identifier);
-	      result = BMSYMBOL_VALUE_ADDRESS (msym);
-	      if (MSYMBOL_TYPE (msym.minsym) == mst_text_gnu_ifunc)
-		result = gnu_ifunc_resolve_addr (target_gdbarch (), result);
+		gdb_printf (gdb_stdlog,
+			    "gcc_symbol_address \"%s\": minimal "
+			    "symbol\n",
+			    identifier);
+	      result = msym.value_address ();
+	      if (msym.minsym->type () == mst_text_gnu_ifunc)
+		result = gnu_ifunc_resolve_addr (current_inferior ()->arch (),
+						 result);
 	      found = 1;
 	    }
 	}
@@ -472,17 +477,17 @@ gcc_cplus_symbol_address (void *datum, s
     }
 
   if (compile_debug && !found)
-    fprintf_unfiltered (gdb_stdlog,
-			"gcc_symbol_address \"%s\": failed\n",
-			identifier);
+    gdb_printf (gdb_stdlog,
+		"gcc_symbol_address \"%s\": failed\n",
+		identifier);
 
   if (compile_debug)
     {
       if (found)
-	fprintf_unfiltered (gdb_stdlog, "found address for %s!\n", identifier);
+	gdb_printf (gdb_stdlog, "found address for %s!\n", identifier);
       else
-	fprintf_unfiltered (gdb_stdlog,
-			    "did not find address for %s\n", identifier);
+	gdb_printf (gdb_stdlog,
+		    "did not find address for %s\n", identifier);
     }
 
   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.20200303/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.20200303/gdb/compile/compile-cplus-types.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-cplus-types.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert types from GDB to GCC
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 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 "gdbsupport/preprocessor.h"
 #include "gdbtypes.h"
 #include "compile-internal.h"
@@ -30,7 +29,7 @@
 #include "cp-abi.h"
 #include "objfiles.h"
 #include "block.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "c-lang.h"
 #include "compile-c.h"
 #include <algorithm>
@@ -73,9 +72,10 @@ compile_cplus_instance::decl_name (const
 static enum gcc_cp_symbol_kind
 get_field_access_flag (const struct type *type, int num)
 {
-  if (TYPE_FIELD_PROTECTED (type, num))
+  field &fld = type->field (num);
+  if (fld.is_protected ())
     return GCC_CP_ACCESS_PROTECTED;
-  else if (TYPE_FIELD_PRIVATE (type, num))
+  else if (fld.is_private ())
     return GCC_CP_ACCESS_PRIVATE;
 
   /* GDB assumes everything else is public.  */
@@ -88,10 +88,10 @@ 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))
+  if (!type->is_declared_class ())
     return GCC_CP_ACCESS_PUBLIC;
 
   /* Otherwise, read accessibility from the fn_field.  */
@@ -153,7 +153,7 @@ type_name_to_scope (const char *type_nam
 
       /* Look up the resulting name.  */
       struct block_symbol bsymbol
-	= lookup_symbol (lookup_name.c_str (), block, VAR_DOMAIN, nullptr);
+	= lookup_symbol (lookup_name.c_str (), block, SEARCH_VFT, nullptr);
 
       if (bsymbol.symbol != nullptr)
 	{
@@ -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 (bsymbol.symbol->type ()->code () != TYPE_CODE_NAMESPACE)
 	    {
 	      /* We're done.  */
 	      break;
@@ -178,8 +178,7 @@ type_name_to_scope (const char *type_nam
 	      /* This shouldn't happen since we are not attempting to
 		 loop over user input.  This name is generated by GDB
 		 from debug info.  */
-	      internal_error (__FILE__, __LINE__,
-			      _("malformed TYPE_NAME during parsing"));
+	      internal_error (_("malformed TYPE_NAME during parsing"));
 	    }
 	}
     }
@@ -258,8 +257,8 @@ compile_cplus_instance::enter_scope (com
     {
       if (debug_compile_cplus_scopes)
 	{
-	  fprintf_unfiltered (gdb_stdlog, "entering new scope %s\n",
-			      host_address_to_string (&m_scopes.back ()));
+	  gdb_printf (gdb_stdlog, "entering new scope %s\n",
+		      host_address_to_string (&m_scopes.back ()));
 	}
 
       /* Push the global namespace. */
@@ -271,7 +270,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 (comp.bsymbol.symbol->type ()->code ()
 		      == TYPE_CODE_NAMESPACE);
 
 	  const char *ns = (comp.name == CP_ANONYMOUS_NAMESPACE_STR ? nullptr
@@ -284,8 +283,8 @@ compile_cplus_instance::enter_scope (com
     {
       if (debug_compile_cplus_scopes)
 	{
-	  fprintf_unfiltered (gdb_stdlog, "staying in current scope -- "
-			      "scopes are identical\n");
+	  gdb_printf (gdb_stdlog, "staying in current scope -- "
+		      "scopes are identical\n");
 	}
     }
 }
@@ -305,15 +304,15 @@ compile_cplus_instance::leave_scope ()
     {
       if (debug_compile_cplus_scopes)
 	{
-	  fprintf_unfiltered (gdb_stdlog, "leaving scope %s\n",
-			      host_address_to_string (&current));
+	  gdb_printf (gdb_stdlog, "leaving scope %s\n",
+		      host_address_to_string (&current));
 	}
 
       /* Pop namespaces.  */
       std::for_each
 	(current.begin (),current.end () - 1,
 	 [this] (const scope_component &comp) {
-	  gdb_assert (TYPE_CODE (SYMBOL_TYPE (comp.bsymbol.symbol))
+	  gdb_assert (comp.bsymbol.symbol->type ()->code ()
 		      == TYPE_CODE_NAMESPACE);
 	  this->plugin ().pop_binding_level (comp.name.c_str ());
 	});
@@ -324,8 +323,8 @@ compile_cplus_instance::leave_scope ()
   else
     {
       if (debug_compile_cplus_scopes)
-	fprintf_unfiltered (gdb_stdlog,
-			    "identical scopes -- not leaving scope\n");
+	gdb_printf (gdb_stdlog,
+		    "identical scopes -- not leaving scope\n");
     }
 }
 
@@ -345,14 +344,14 @@ compile_cplus_instance::new_scope (const
 	 unqualified name of the type to process.  */
       scope_component &comp = scope.back ();
 
-      if (!types_equal (type, SYMBOL_TYPE (comp.bsymbol.symbol))
+      if (!types_equal (type, comp.bsymbol.symbol->type ())
 	  && (m_scopes.empty ()
 	      || (m_scopes.back ().back ().bsymbol.symbol
 		  != comp.bsymbol.symbol)))
 	{
 	  /* The type is defined inside another class(es).  Convert that
 	     type instead of defining this type.  */
-	  convert_type (SYMBOL_TYPE (comp.bsymbol.symbol));
+	  convert_type (comp.bsymbol.symbol->type ());
 
 	  /* If the original type (passed in to us) is defined in a nested
 	     class, the previous call will give us that type's gcc_type.
@@ -364,7 +363,7 @@ compile_cplus_instance::new_scope (const
     }
   else
     {
-      if (TYPE_NAME (type) == nullptr)
+      if (type->name () == nullptr)
 	{
 	  /* Anonymous type  */
 
@@ -383,8 +382,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 (), SEARCH_VFT, nullptr)
 	      };
 	  scope.push_back (comp);
 	}
@@ -410,10 +409,10 @@ static gcc_type
 compile_cplus_convert_reference (compile_cplus_instance *instance,
 				 struct type *type)
 {
-  gcc_type target = instance->convert_type (TYPE_TARGET_TYPE (type));
+  gcc_type target = instance->convert_type (type->target_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;
@@ -442,7 +441,7 @@ static gcc_type
 compile_cplus_convert_pointer (compile_cplus_instance *instance,
 			       struct type *type)
 {
-  gcc_type target = instance->convert_type (TYPE_TARGET_TYPE (type));
+  gcc_type target = instance->convert_type (type->target_type ());
 
   return instance->convert_pointer_base (target);
 }
@@ -453,10 +452,10 @@ static gcc_type
 compile_cplus_convert_array (compile_cplus_instance *instance,
 			     struct type *type)
 {
-  struct type *range = TYPE_INDEX_TYPE (type);
-  gcc_type element_type = instance->convert_type (TYPE_TARGET_TYPE (type));
+  struct type *range = type->index_type ();
+  gcc_type element_type = instance->convert_type (type->target_type ());
 
-  if (TYPE_LOW_BOUND_KIND (range) != PROP_CONST)
+  if (!range->bounds ()->low.is_constant ())
     {
       const char *s = _("array type with non-constant"
 			" lower bound is not supported");
@@ -464,7 +463,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,10 +471,10 @@ 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))
+      if (type->is_vector ())
 	{
 	  const char *s = _("variably-sized vector type is not supported");
 
@@ -483,7 +482,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 ());
     }
@@ -491,7 +490,7 @@ compile_cplus_convert_array (compile_cpl
     {
       LONGEST low_bound, high_bound, count;
 
-      if (get_array_bounds (type, &low_bound, &high_bound) == 0)
+      if (!get_array_bounds (type, &low_bound, &high_bound))
 	count = -1;
       else
 	{
@@ -499,7 +498,7 @@ compile_cplus_convert_array (compile_cpl
 	  count = high_bound + 1;
 	}
 
-      if (TYPE_VECTOR (type))
+      if (type->is_vector ())
 	return instance->plugin ().build_vector_type (element_type, count);
 
       return instance->plugin ().build_array_type (element_type, count);
@@ -515,13 +514,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,12 +579,12 @@ 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);
+      const char *field_name = type->field (i).name ();
 
-      if (TYPE_FIELD_IGNORE (type, i)
-	  || TYPE_FIELD_ARTIFICIAL (type, i))
+      if (type->field (i).is_ignored ()
+	  || type->field (i).is_artificial ())
 	continue;
 
       /* GDB records unnamed/anonymous fields with empty string names.  */
@@ -593,17 +592,17 @@ 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 (type->field (i).is_static ())
 	{
 	  CORE_ADDR physaddr;
 
-	  switch (TYPE_FIELD_LOC_KIND (type, i))
+	  switch (type->field (i).loc_kind ())
 	    {
 	    case FIELD_LOC_KIND_PHYSADDR:
 	      {
-		physaddr = TYPE_FIELD_STATIC_PHYSADDR (type, i);
+		physaddr = type->field (i).loc_physaddr ();
 
 		instance->plugin ().build_decl
 		  ("field physaddr", field_name,
@@ -614,10 +613,10 @@ compile_cplus_convert_struct_or_union_me
 
 	    case FIELD_LOC_KIND_PHYSNAME:
 	      {
-		const char *physname = TYPE_FIELD_STATIC_PHYSNAME (type, i);
+		const char *physname = type->field (i).loc_physname ();
 		struct block_symbol sym
 		  = lookup_symbol (physname, instance->block (),
-				   VAR_DOMAIN, nullptr);
+				   SEARCH_VFT, nullptr);
 
 		if (sym.symbol == nullptr)
 		  {
@@ -625,10 +624,10 @@ compile_cplus_convert_struct_or_union_me
 		       we can do but ignore this member.  */
 		    continue;
 		  }
-		const char *filename = symbol_symtab (sym.symbol)->filename;
-		unsigned int line = SYMBOL_LINE (sym.symbol);
+		const char *filename = sym.symbol->symtab ()->filename;
+		unsigned int line = sym.symbol->line ();
 
-		physaddr = SYMBOL_VALUE_ADDRESS (sym.symbol);
+		physaddr = sym.symbol->value_address ();
 		instance->plugin ().build_decl
 		  ("field physname", field_name,
 		   (GCC_CP_SYMBOL_VARIABLE| get_field_access_flag (type, i)),
@@ -643,16 +642,16 @@ compile_cplus_convert_struct_or_union_me
 	}
       else
 	{
-	  unsigned long bitsize = TYPE_FIELD_BITSIZE (type, i);
+	  unsigned long bitsize = type->field (i).bitsize ();
 	  enum gcc_cp_symbol_kind field_flags = GCC_CP_SYMBOL_FIELD
 	    | get_field_access_flag (type, i);
 
 	  if (bitsize == 0)
-	    bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (type, i));
+	    bitsize = 8 * type->field (i).type ()->length ();
 
 	  instance->plugin ().build_field
 	    (field_name, field_type, field_flags, bitsize,
-	     TYPE_FIELD_BITPOS (type, i));
+	     type->field (i).loc_bitpos ());
 	}
     }
 }
@@ -668,7 +667,7 @@ compile_cplus_convert_method (compile_cp
      type and corresponding qualifier flags.  */
   gcc_type func_type = compile_cplus_convert_func (instance, method_type, true);
   gcc_type class_type = instance->convert_type (parent_type);
-  gcc_cp_qualifiers_flags quals = (enum gcc_cp_qualifiers) 0;
+  gcc_cp_qualifiers_flags quals = 0;
 
   if (TYPE_CONST (method_type))
     quals |= GCC_CP_QUALIFIER_CONST;
@@ -681,7 +680,7 @@ compile_cplus_convert_method (compile_cp
   gcc_cp_ref_qualifiers_flags rquals = GCC_CP_REF_QUAL_NONE;
 
   return instance->plugin ().build_method_type
-    (class_type, func_type, quals, rquals);
+    (class_type, func_type, quals.raw (), rquals.raw ());
 }
 
 /* Convert a member or method pointer represented by TYPE.  */
@@ -697,7 +696,7 @@ compile_cplus_convert_memberptr (compile
 
   gcc_type class_type = instance->convert_type (containing_class);
   gcc_type member_type
-    = instance->convert_type (TYPE_TARGET_TYPE (type));
+    = instance->convert_type (type->target_type ());
 
   return instance->plugin ().build_pointer_to_member_type
     (class_type, member_type);
@@ -729,7 +728,7 @@ compile_cplus_convert_struct_or_union_me
 	  gcc_type method_type;
 	  struct block_symbol sym
 	    = lookup_symbol (TYPE_FN_FIELD_PHYSNAME (methods, j),
-			     instance->block (), VAR_DOMAIN, nullptr);
+			     instance->block (), SEARCH_VFT, nullptr);
 
 	  if (sym.symbol == nullptr)
 	    {
@@ -745,7 +744,7 @@ compile_cplus_convert_struct_or_union_me
 		     (sym_kind
 		      | get_method_access_flag (type, i, j)
 		      | GCC_CP_FLAG_VIRTUAL_FUNCTION
-		      | GCC_CP_FLAG_PURE_VIRTUAL_FUNCTION),
+		      | GCC_CP_FLAG_PURE_VIRTUAL_FUNCTION).raw (),
 		     method_type, nullptr, 0, nullptr, 0);
 		  continue;
 		}
@@ -764,9 +763,9 @@ compile_cplus_convert_struct_or_union_me
 	      continue;
 	    }
 
-	  const char *filename = symbol_symtab (sym.symbol)->filename;
-	  unsigned int line = SYMBOL_LINE (sym.symbol);
-	  CORE_ADDR address = BLOCK_START (SYMBOL_BLOCK_VALUE (sym.symbol));
+	  const char *filename = sym.symbol->symtab ()->filename;
+	  unsigned int line = sym.symbol->line ();
+	  CORE_ADDR address = sym.symbol->value_block()->start ();
 	  const char *kind;
 
 	  if (TYPE_FN_FIELD_STATIC_P (methods, j))
@@ -787,7 +786,7 @@ compile_cplus_convert_struct_or_union_me
 
 	  instance->plugin ().build_decl
 	    (kind, overloaded_name.get (),
-	     sym_kind | get_method_access_flag (type, i, j),
+	     (sym_kind | get_method_access_flag (type, i, j)).raw (),
 	     method_type, nullptr, address, filename, line);
 	}
     }
@@ -803,14 +802,14 @@ compile_cplus_convert_struct_or_union (c
 				       enum gcc_cp_symbol_kind nested_access)
 {
   const char *filename = nullptr;
-  unsigned short line = 0;
+  unsigned int line = 0;
 
   /* 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,59 +825,55 @@ 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";
+      const char *what = type->is_declared_class () ? "class" : "struct";
 
       resuld = instance->plugin ().build_decl
 	(what, name.get (), (GCC_CP_SYMBOL_CLASS | nested_access
-			     | (TYPE_DECLARED_CLASS (type)
+			     | (type->is_declared_class ()
 				? GCC_CP_FLAG_CLASS_NOFLAG
 				: GCC_CP_FLAG_CLASS_IS_STRUCT)),
 	 0, nullptr, 0, filename, line);
     }
   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);
+      std::vector<gcc_type> elements (num_baseclasses);
+      std::vector<enum gcc_cp_symbol_kind> flags (num_baseclasses);
 
-      memset (&bases, 0, sizeof (bases));
+      struct gcc_vbase_array bases {};
+      bases.elements = elements.data ();
+      bases.flags = flags.data ();
+      bases.n_elements = num_baseclasses;
 
-      if (num_baseclasses > 0)
+      for (int i = 0; i < num_baseclasses; ++i)
 	{
-	  bases.elements = XNEWVEC (gcc_type, num_baseclasses);
-	  bases.flags = XNEWVEC (enum gcc_cp_symbol_kind, num_baseclasses);
-	  bases.n_elements = num_baseclasses;
-	  for (int i = 0; i < num_baseclasses; ++i)
-	    {
-	      struct type *base_type = TYPE_BASECLASS (type, i);
+	  struct type *base_type = TYPE_BASECLASS (type, i);
 
-	      bases.flags[i] = GCC_CP_SYMBOL_BASECLASS
-		| get_field_access_flag (type, i)
-		| (BASETYPE_VIA_VIRTUAL (type, i)
-		   ? GCC_CP_FLAG_BASECLASS_VIRTUAL
-		   : GCC_CP_FLAG_BASECLASS_NOFLAG);
-	      bases.elements[i] = instance->convert_type (base_type);
-	    }
+	  bases.flags[i] = (GCC_CP_SYMBOL_BASECLASS
+			    | get_field_access_flag (type, i)
+			    | (BASETYPE_VIA_VIRTUAL (type, i)
+			       ? GCC_CP_FLAG_BASECLASS_VIRTUAL
+			       : GCC_CP_FLAG_BASECLASS_NOFLAG));
+	  bases.elements[i] = instance->convert_type (base_type);
 	}
 
       result = instance->plugin ().start_class_type
 	(name.get (), resuld, &bases, filename, line);
-      xfree (bases.flags);
-      xfree (bases.elements);
     }
   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);
     }
@@ -895,7 +890,7 @@ compile_cplus_convert_struct_or_union (c
   compile_cplus_convert_struct_or_union_members (instance, type, result);
 
   /* All finished.  */
-  instance->plugin ().finish_class_type (name.get (), TYPE_LENGTH (type));
+  instance->plugin ().finish_class_type (name.get (), type->length ());
 
   /* Pop all scopes.  */
   instance->leave_scope ();
@@ -913,7 +908,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,14 +918,14 @@ 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));
 
   gcc_type int_type
-    = instance->plugin ().get_int_type (TYPE_UNSIGNED (type),
-					TYPE_LENGTH (type), nullptr);
+    = instance->plugin ().get_int_type (type->is_unsigned (),
+					type->length (), nullptr);
   gcc_type result
     = instance->plugin ().start_enum_type (name.get (), int_type,
 					   GCC_CP_SYMBOL_ENUM | nested_access
@@ -938,17 +933,17 @@ 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));
+	= compile_cplus_instance::decl_name (type->field (i).name ());
 
-      if (TYPE_FIELD_LOC_KIND (type, i) != FIELD_LOC_KIND_ENUMVAL
+      if (type->field (i).loc_kind () != FIELD_LOC_KIND_ENUMVAL
 	  || fname == nullptr)
 	continue;
 
       instance->plugin ().build_enum_constant (result, fname.get (),
-					       TYPE_FIELD_ENUMVAL (type, i));
+					       type->field (i).loc_enumval ());
     }
 
   /* Finish enum definition and pop scopes.  */
@@ -964,8 +959,8 @@ static gcc_type
 compile_cplus_convert_func (compile_cplus_instance *instance,
 			    struct type *type, bool strip_artificial)
 {
-  int is_varargs = TYPE_VARARGS (type);
-  struct type *target_type = TYPE_TARGET_TYPE (type);
+  int is_varargs = type->has_varargs ();
+  struct type *target_type = type->target_type ();
 
   /* Functions with no debug info have no return type.  Ideally we'd
      want to fallback to the type of the cast just before the
@@ -974,10 +969,7 @@ compile_cplus_convert_func (compile_cplu
      GDB's parser used to do.  */
   if (target_type == nullptr)
     {
-      if (TYPE_OBJFILE_OWNED (type))
-	target_type = objfile_type (TYPE_OWNER (type).objfile)->builtin_int;
-      else
-	target_type = builtin_type (TYPE_OWNER (type).gdbarch)->builtin_int;
+      target_type = builtin_type (type->arch ())->builtin_int;
       warning (_("function has unknown return type; assuming int"));
     }
 
@@ -985,12 +977,12 @@ compile_cplus_convert_func (compile_cplu
      types.  Those are impossible in C, though.  */
   gcc_type return_type = instance->convert_type (target_type);
 
-  struct gcc_type_array array =
-    { TYPE_NFIELDS (type), XNEWVEC (gcc_type, TYPE_NFIELDS (type)) };
+  std::vector<gcc_type> elements (type->num_fields ());
+  struct gcc_type_array array = { (int) type->num_fields (), elements.data () };
   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))
+      if (strip_artificial && type->field (i).is_artificial ())
 	{
 	  --array.n_elements;
 	  ++artificials;
@@ -998,7 +990,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 ());
 	}
     }
 
@@ -1006,7 +998,6 @@ compile_cplus_convert_func (compile_cplu
      with some minsyms like printf (compile-cplus.exp has examples).  */
   gcc_type result = instance->plugin ().build_function_type
     (return_type, &array, is_varargs);
-  xfree (array.elements);
   return result;
 }
 
@@ -1015,14 +1006,14 @@ compile_cplus_convert_func (compile_cplu
 static gcc_type
 compile_cplus_convert_int (compile_cplus_instance *instance, struct type *type)
 {
-  if (TYPE_NOSIGN (type))
+  if (type->has_no_signedness ())
     {
-      gdb_assert (TYPE_LENGTH (type) == 1);
+      gdb_assert (type->length () == 1);
       return instance->plugin ().get_char_type ();
     }
 
   return instance->plugin ().get_int_type
-    (TYPE_UNSIGNED (type), TYPE_LENGTH (type), TYPE_NAME (type));
+    (type->is_unsigned (), type->length (), type->name ());
 }
 
 /* Convert a floating-point type to its gcc representation.  */
@@ -1032,7 +1023,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->name ());
 }
 
 /* Convert the 'void' type to its gcc representation.  */
@@ -1060,7 +1051,7 @@ compile_cplus_instance::convert_qualifie
   gcc_type result = base;
 
   if (quals != 0)
-    result = plugin ().build_qualified_type (base, quals);
+    result = plugin ().build_qualified_type (base, quals.raw ());
 
   return result;
 }
@@ -1091,7 +1082,7 @@ static gcc_type
 compile_cplus_convert_complex (compile_cplus_instance *instance,
 			       struct type *type)
 {
-  gcc_type base = instance->convert_type (TYPE_TARGET_TYPE (type));
+  gcc_type base = instance->convert_type (type->target_type ());
 
   return instance->plugin ().build_complex_type (base);
 }
@@ -1102,9 +1093,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));
@@ -1135,12 +1126,12 @@ convert_type_cplus_basic (compile_cplus_
 {
   /* If we are converting a qualified type, first convert the
      unqualified type and then apply the qualifiers.  */
-  if ((TYPE_INSTANCE_FLAGS (type) & (TYPE_INSTANCE_FLAG_CONST
-				     | TYPE_INSTANCE_FLAG_VOLATILE
-				     | TYPE_INSTANCE_FLAG_RESTRICT)) != 0)
+  if ((type->instance_flags () & (TYPE_INSTANCE_FLAG_CONST
+				  | TYPE_INSTANCE_FLAG_VOLATILE
+				  | 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 +1189,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 ());
 }
@@ -1244,16 +1235,16 @@ compile_cplus_instance::gcc_cplus_leave_
 static void
 compile_cplus_debug_output_1 (ULONGEST arg)
 {
-  fprintf_unfiltered (gdb_stdlog, "%s", pulongest (arg));
+  gdb_printf (gdb_stdlog, "%s", pulongest (arg));
 }
 
 static void
 compile_cplus_debug_output_1 (const char *arg)
 {
   if (arg == nullptr)
-    fputs_unfiltered ("NULL", gdb_stdlog);
+    gdb_puts ("NULL", gdb_stdlog);
   else
-    fputs_unfiltered (arg, gdb_stdlog);
+    gdb_puts (arg, gdb_stdlog);
 }
 
 static void
@@ -1272,7 +1263,7 @@ static void
 compile_cplus_debug_output (T arg, Targs... Args)
 {
   compile_cplus_debug_output_1 (arg);
-  fputc_unfiltered (' ', gdb_stdlog);
+  gdb_putc (' ', gdb_stdlog);
   compile_cplus_debug_output (Args...);
 }
 
@@ -1280,9 +1271,9 @@ compile_cplus_debug_output (T arg, Targs
 #define OUTPUT_DEBUG_RESULT(R)			  \
   if (debug_compile_cplus_types)		  \
     {						  \
-      fputs_unfiltered (": ", gdb_stdlog);	  \
+      gdb_puts (": ", gdb_stdlog);		  \
       compile_cplus_debug_output (R);		  \
-      fputc_unfiltered ('\n', gdb_stdlog);	  \
+      gdb_putc ('\n', gdb_stdlog);		  \
     }						  \
 
 #define GCC_METHOD0(R, N)			  \
@@ -1368,7 +1359,7 @@ gcc_cp_plugin::build_decl (const char *d
 			   const char *filename, unsigned int line_number)
 {
   if (debug_compile_cplus_types)
-    fprintf_unfiltered (gdb_stdlog, "<%s> ", debug_decltype);
+    gdb_printf (gdb_stdlog, "<%s> ", debug_decltype);
 
   return build_decl (name, sym_kind, sym_type, substitution_name,
 		     address, filename, line_number);
@@ -1380,7 +1371,7 @@ gcc_cp_plugin::start_class_type (const c
 				 const char *filename, unsigned int line_number)
 {
   if (debug_compile_cplus_types)
-    fprintf_unfiltered (gdb_stdlog, "<%s> ", debug_name);
+    gdb_printf (gdb_stdlog, "<%s> ", debug_name);
 
   return start_class_type (typedecl, base_classes, filename, line_number);
 }
@@ -1390,7 +1381,7 @@ gcc_cp_plugin::finish_class_type (const
 				  unsigned long size_in_bytes)
 {
   if (debug_compile_cplus_types)
-    fprintf_unfiltered (gdb_stdlog, "<%s> ", debug_name);
+    gdb_printf (gdb_stdlog, "<%s> ", debug_name);
 
   return finish_class_type (size_in_bytes);
 }
@@ -1399,13 +1390,12 @@ int
 gcc_cp_plugin::pop_binding_level (const char *debug_name)
 {
   if (debug_compile_cplus_types)
-    fprintf_unfiltered (gdb_stdlog, "<%s> ", debug_name);
+    gdb_printf (gdb_stdlog, "<%s> ", debug_name);
 
   return pop_binding_level ();
 }
 
-void
-_initialize_compile_cplus_types ()
+INIT_GDB_FILE (compile_cplus_types)
 {
   add_setshow_boolean_cmd ("compile-cplus-types", no_class,
 			     &debug_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.20200303/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.20200303/gdb/compile/compile-c-support.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-c-support.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* C/C++ language support for compilation.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "compile-internal.h"
 #include "compile-c.h"
 #include "compile-cplus.h"
@@ -53,7 +52,7 @@ c_get_mode_for_size (int size)
       mode = "DI";
       break;
     default:
-      internal_error (__FILE__, __LINE__, _("Invalid GCC mode size %d."), size);
+      internal_error (_("Invalid GCC mode size %d."), size);
     }
 
   return mode;
@@ -99,7 +98,7 @@ load_libcompile (const char *fe_libcc, c
 
 template <typename INSTTYPE, typename FUNCTYPE, typename CTXTYPE,
 	  typename BASE_VERSION_TYPE, typename API_VERSION_TYPE>
-compile_instance *
+std::unique_ptr<compile_instance>
 get_compile_context (const char *fe_libcc, const char *fe_context,
 		     BASE_VERSION_TYPE base_version,
 		     API_VERSION_TYPE api_version)
@@ -118,12 +117,12 @@ get_compile_context (const char *fe_libc
     error (_("The loaded version of GCC does not support the required version "
 	     "of the API."));
 
-  return new INSTTYPE (context);
+  return std::make_unique<INSTTYPE> (context);
 }
 
 /* A C-language implementation of get_compile_context.  */
 
-compile_instance *
+std::unique_ptr<compile_instance>
 c_get_compile_context ()
 {
   return get_compile_context
@@ -135,7 +134,7 @@ c_get_compile_context ()
 
 /* A C++-language implementation of get_compile_context.  */
 
-compile_instance *
+std::unique_ptr<compile_instance>
 cplus_get_compile_context ()
 {
   return get_compile_context
@@ -161,23 +160,23 @@ print_one_macro (const char *name, const
 
   /* None of -Wno-builtin-macro-redefined, #undef first
      or plain #define of the same value would avoid a warning.  */
-  fprintf_filtered (file, "#ifndef %s\n# define %s", name, name);
+  gdb_printf (file, "#ifndef %s\n# define %s", name, name);
 
   if (macro->kind == macro_function_like)
     {
       int i;
 
-      fputs_filtered ("(", file);
+      gdb_puts ("(", file);
       for (i = 0; i < macro->argc; i++)
 	{
-	  fputs_filtered (macro->argv[i], file);
+	  gdb_puts (macro->argv[i], file);
 	  if (i + 1 < macro->argc)
-	    fputs_filtered (", ", file);
+	    gdb_puts (", ", file);
 	}
-      fputs_filtered (")", file);
+      gdb_puts (")", file);
     }
 
-  fprintf_filtered (file, " %s\n#endif\n", macro->replacement);
+  gdb_printf (file, " %s\n#endif\n", macro->replacement);
 }
 
 /* Write macro definitions at PC to FILE.  */
@@ -186,18 +185,18 @@ static void
 write_macro_definitions (const struct block *block, CORE_ADDR pc,
 			 struct ui_file *file)
 {
-  gdb::unique_xmalloc_ptr<struct macro_scope> scope;
+  macro_scope scope;
 
   if (block != NULL)
     scope = sal_macro_scope (find_pc_line (pc, 0));
   else
     scope = default_macro_scope ();
-  if (scope == NULL)
+  if (!scope.is_valid ())
     scope = user_macro_scope ();
 
-  if (scope != NULL && scope->file != NULL && scope->file->table != NULL)
+  if (scope.is_valid () && scope.file->table != nullptr)
     {
-      macro_for_each_in_scope (scope->file, scope->line,
+      macro_for_each_in_scope (scope.file, scope.line,
 			       [&] (const char *name,
 				    const macro_definition *macro,
 				    macro_source_file *source,
@@ -213,15 +212,15 @@ write_macro_definitions (const struct bl
 
 static void
 generate_register_struct (struct ui_file *stream, struct gdbarch *gdbarch,
-			  const unsigned char *registers_used)
+			  const std::vector<bool> &registers_used)
 {
   int i;
   int seen = 0;
 
-  fputs_unfiltered ("struct " COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG " {\n",
-		    stream);
+  gdb_puts ("struct " COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG " {\n",
+	    stream);
 
-  if (registers_used != NULL)
+  if (!registers_used.empty ())
     for (i = 0; i < gdbarch_num_regs (gdbarch); ++i)
       {
 	if (registers_used[i])
@@ -241,51 +240,51 @@ generate_register_struct (struct ui_file
 	       register types (typically flags or vectors), emit a
 	       maximally-aligned array of the correct size.  */
 
-	    fputs_unfiltered ("  ", stream);
-	    switch (TYPE_CODE (regtype))
+	    gdb_puts ("  ", stream);
+	    switch (regtype->code ())
 	      {
 	      case TYPE_CODE_PTR:
-		fprintf_filtered (stream, "__gdb_uintptr %s",
-				  regname.c_str ());
+		gdb_printf (stream, "__gdb_uintptr %s",
+			    regname.c_str ());
 		break;
 
 	      case TYPE_CODE_INT:
 		{
 		  const char *mode
-		    = c_get_mode_for_size (TYPE_LENGTH (regtype));
+		    = c_get_mode_for_size (regtype->length ());
 
 		  if (mode != NULL)
 		    {
-		      if (TYPE_UNSIGNED (regtype))
-			fputs_unfiltered ("unsigned ", stream);
-		      fprintf_unfiltered (stream,
-					  "int %s"
-					  " __attribute__ ((__mode__(__%s__)))",
-					  regname.c_str (),
-					  mode);
+		      if (regtype->is_unsigned ())
+			gdb_puts ("unsigned ", stream);
+		      gdb_printf (stream,
+				  "int %s"
+				  " __attribute__ ((__mode__(__%s__)))",
+				  regname.c_str (),
+				  mode);
 		      break;
 		    }
 		}
 
-		/* Fall through.  */
+		[[fallthrough]];
 
 	      default:
-		fprintf_unfiltered (stream,
-				    "  unsigned char %s[%s]"
-				    " __attribute__((__aligned__("
-				    "__BIGGEST_ALIGNMENT__)))",
-				    regname.c_str (),
-				    pulongest (TYPE_LENGTH (regtype)));
+		gdb_printf (stream,
+			    "  unsigned char %s[%s]"
+			    " __attribute__((__aligned__("
+			    "__BIGGEST_ALIGNMENT__)))",
+			    regname.c_str (),
+			    pulongest (regtype->length ()));
 	      }
-	    fputs_unfiltered (";\n", stream);
+	    gdb_puts (";\n", stream);
 	  }
       }
 
   if (!seen)
-    fputs_unfiltered ("  char " COMPILE_I_SIMPLE_REGISTER_DUMMY ";\n",
-		      stream);
+    gdb_puts ("  char " COMPILE_I_SIMPLE_REGISTER_DUMMY ";\n",
+	      stream);
 
-  fputs_unfiltered ("};\n\n", stream);
+  gdb_puts ("};\n\n", stream);
 }
 
 /* C-language policy to emit a push user expression pragma into BUF.  */
@@ -294,7 +293,7 @@ struct c_push_user_expression
 {
   void push_user_expression (struct ui_file *buf)
   {
-    fputs_unfiltered ("#pragma GCC user_expression\n", buf);
+    gdb_puts ("#pragma GCC user_expression\n", buf);
   }
 };
 
@@ -320,39 +319,39 @@ struct c_add_code_header
     switch (type)
       {
       case COMPILE_I_SIMPLE_SCOPE:
-	fputs_unfiltered ("void "
-			  GCC_FE_WRAPPER_FUNCTION
-			  " (struct "
-			  COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG
-			  " *"
-			  COMPILE_I_SIMPLE_REGISTER_ARG_NAME
-			  ") {\n",
-			  buf);
+	gdb_puts ("void "
+		  GCC_FE_WRAPPER_FUNCTION
+		  " (struct "
+		  COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG
+		  " *"
+		  COMPILE_I_SIMPLE_REGISTER_ARG_NAME
+		  ") {\n",
+		  buf);
 	break;
 
       case COMPILE_I_PRINT_ADDRESS_SCOPE:
       case COMPILE_I_PRINT_VALUE_SCOPE:
 	/* <string.h> is needed for a memcpy call below.  */
-	fputs_unfiltered ("#include <string.h>\n"
-			  "void "
-			  GCC_FE_WRAPPER_FUNCTION
-			  " (struct "
-			  COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG
-			  " *"
-			  COMPILE_I_SIMPLE_REGISTER_ARG_NAME
-			  ", "
-			  COMPILE_I_PRINT_OUT_ARG_TYPE
-			  " "
-			  COMPILE_I_PRINT_OUT_ARG
-			  ") {\n",
-			  buf);
+	gdb_puts ("#include <string.h>\n"
+		  "void "
+		  GCC_FE_WRAPPER_FUNCTION
+		  " (struct "
+		  COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG
+		  " *"
+		  COMPILE_I_SIMPLE_REGISTER_ARG_NAME
+		  ", "
+		  COMPILE_I_PRINT_OUT_ARG_TYPE
+		  " "
+		  COMPILE_I_PRINT_OUT_ARG
+		  ") {\n",
+		  buf);
 	break;
 
       case COMPILE_I_RAW_SCOPE:
 	break;
 
       default:
-	gdb_assert_not_reached (_("Unknown compiler scope reached."));
+	gdb_assert_not_reached ("Unknown compiler scope reached.");
       }
   }
 };
@@ -369,14 +368,14 @@ struct c_add_code_footer
       case COMPILE_I_SIMPLE_SCOPE:
       case COMPILE_I_PRINT_ADDRESS_SCOPE:
       case COMPILE_I_PRINT_VALUE_SCOPE:
-	fputs_unfiltered ("}\n", buf);
+	gdb_puts ("}\n", buf);
 	break;
 
       case COMPILE_I_RAW_SCOPE:
 	break;
 
       default:
-	gdb_assert_not_reached (_("Unknown compiler scope reached."));
+	gdb_assert_not_reached ("Unknown compiler scope reached.");
       }
   }
 };
@@ -393,22 +392,22 @@ struct c_add_input
       {
       case COMPILE_I_PRINT_ADDRESS_SCOPE:
       case COMPILE_I_PRINT_VALUE_SCOPE:
-	fprintf_unfiltered (buf,
-			    "__auto_type " COMPILE_I_EXPR_VAL " = %s;\n"
-			    "typeof (%s) *" COMPILE_I_EXPR_PTR_TYPE ";\n"
-			    "memcpy (" COMPILE_I_PRINT_OUT_ARG ", %s"
-			    COMPILE_I_EXPR_VAL ",\n"
-			    "sizeof (*" COMPILE_I_EXPR_PTR_TYPE "));\n"
-			    , input, input,
-			    (type == COMPILE_I_PRINT_ADDRESS_SCOPE
-			     ? "&" : ""));
+	gdb_printf (buf,
+		    "__auto_type " COMPILE_I_EXPR_VAL " = %s;\n"
+		    "typeof (%s) *" COMPILE_I_EXPR_PTR_TYPE ";\n"
+		    "memcpy (" COMPILE_I_PRINT_OUT_ARG ", %s"
+		    COMPILE_I_EXPR_VAL ",\n"
+		    "sizeof (*" COMPILE_I_EXPR_PTR_TYPE "));\n"
+		    , input, input,
+		    (type == COMPILE_I_PRINT_ADDRESS_SCOPE
+		     ? "&" : ""));
 	break;
 
       default:
-	fputs_unfiltered (input, buf);
+	gdb_puts (input, buf);
 	break;
       }
-    fputs_unfiltered ("\n", buf);
+    gdb_puts ("\n", buf);
   }
 };
 
@@ -419,7 +418,7 @@ struct cplus_push_user_expression
 {
   void push_user_expression (struct ui_file *buf)
   {
-    fputs_unfiltered ("#pragma GCC push_user_expression\n", buf);
+    gdb_puts ("#pragma GCC push_user_expression\n", buf);
   }
 };
 
@@ -429,7 +428,7 @@ struct cplus_pop_user_expression
 {
   void pop_user_expression (struct ui_file *buf)
   {
-    fputs_unfiltered ("#pragma GCC pop_user_expression\n", buf);
+    gdb_puts ("#pragma GCC pop_user_expression\n", buf);
   }
 };
 
@@ -444,40 +443,40 @@ struct cplus_add_code_header
   switch (type)
     {
     case COMPILE_I_SIMPLE_SCOPE:
-      fputs_unfiltered ("void "
-			GCC_FE_WRAPPER_FUNCTION
-			" (struct "
-			COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG
-			" *"
-			COMPILE_I_SIMPLE_REGISTER_ARG_NAME
-			") {\n",
-			buf);
+      gdb_puts ("void "
+		GCC_FE_WRAPPER_FUNCTION
+		" (struct "
+		COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG
+		" *"
+		COMPILE_I_SIMPLE_REGISTER_ARG_NAME
+		") {\n",
+		buf);
       break;
 
     case COMPILE_I_PRINT_ADDRESS_SCOPE:
     case COMPILE_I_PRINT_VALUE_SCOPE:
-      fputs_unfiltered (
-			"#include <cstring>\n"
-			"#include <bits/move.h>\n"
-			"void "
-			GCC_FE_WRAPPER_FUNCTION
-			" (struct "
-			COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG
-			" *"
-			COMPILE_I_SIMPLE_REGISTER_ARG_NAME
-			", "
-			COMPILE_I_PRINT_OUT_ARG_TYPE
-			" "
-			COMPILE_I_PRINT_OUT_ARG
-			") {\n",
-			buf);
+      gdb_puts (
+		"#include <cstring>\n"
+		"#include <bits/move.h>\n"
+		"void "
+		GCC_FE_WRAPPER_FUNCTION
+		" (struct "
+		COMPILE_I_SIMPLE_REGISTER_STRUCT_TAG
+		" *"
+		COMPILE_I_SIMPLE_REGISTER_ARG_NAME
+		", "
+		COMPILE_I_PRINT_OUT_ARG_TYPE
+		" "
+		COMPILE_I_PRINT_OUT_ARG
+		") {\n",
+		buf);
       break;
 
     case COMPILE_I_RAW_SCOPE:
       break;
 
     default:
-      gdb_assert_not_reached (_("Unknown compiler scope reached."));
+      gdb_assert_not_reached ("Unknown compiler scope reached.");
     }
   }
 };
@@ -494,7 +493,7 @@ struct cplus_add_input
       {
       case COMPILE_I_PRINT_VALUE_SCOPE:
       case COMPILE_I_PRINT_ADDRESS_SCOPE:
-	fprintf_unfiltered
+	gdb_printf
 	  (buf,
 	   /* "auto" strips ref- and cv- qualifiers, so we need to also strip
 	      those from COMPILE_I_EXPR_PTR_TYPE.  */
@@ -512,10 +511,10 @@ struct cplus_add_input
 	break;
 
       default:
-	fputs_unfiltered (input, buf);
+	gdb_puts (input, buf);
 	break;
       }
-    fputs_unfiltered ("\n", buf);
+    gdb_puts ("\n", buf);
   }
 };
 
@@ -572,7 +571,7 @@ public:
 	   before generating the function header, so we can define the
 	   register struct before the function body.  This requires a
 	   temporary stream.  */
-	gdb::unique_xmalloc_ptr<unsigned char> registers_used
+	std::vector<bool> registers_used
 	  = generate_c_for_variable_locations (m_instance, &var_stream, m_arch,
 					       expr_block, expr_pc);
 
@@ -595,7 +594,7 @@ public:
 			mode, mode);
 	  }
 
-	generate_register_struct (&buf, m_arch, registers_used.get ());
+	generate_register_struct (&buf, m_arch, registers_used);
       }
 
     AddCodeHeaderPolicy::add_code_header (m_instance->scope (), &buf);
@@ -635,7 +634,7 @@ public:
       PopUserExpressionPolicy::pop_user_expression (&buf);
 
     AddCodeFooterPolicy::add_code_footer (m_instance->scope (), &buf);
-    return buf.string ();
+    return buf.release ();
   }
 
 private:
@@ -660,7 +659,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 +674,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.20200303/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.20200303/gdb/compile/compile-c-symbols.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-c-symbols.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert symbols from GDB to GCC
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 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 "compile-internal.h"
 #include "compile-c.h"
 #include "symtab.h"
@@ -29,9 +28,9 @@
 #include "value.h"
 #include "exceptions.h"
 #include "gdbtypes.h"
-#include "dwarf2loc.h"
-
-
+#include "dwarf2/loc.h"
+#include "inferior.h"
+#include "gdbsupport/unordered_set.h"
 
 /* Compute the name of the pointer representing a local symbol's
    address.  */
@@ -57,17 +56,17 @@ convert_one_symbol (compile_c_instance *
 		    int is_local)
 {
   gcc_type sym_type;
-  const char *filename = symbol_symtab (sym.symbol)->filename;
-  unsigned short line = SYMBOL_LINE (sym.symbol);
+  const char *filename = sym.symbol->symtab ()->filename;
+  unsigned int line = sym.symbol->line ();
 
   context->error_symbol_once (sym.symbol);
 
-  if (SYMBOL_CLASS (sym.symbol) == LOC_LABEL)
+  if (sym.symbol->loc_class () == LOC_LABEL)
     sym_type = 0;
   else
-    sym_type = context->convert_type (SYMBOL_TYPE (sym.symbol));
+    sym_type = context->convert_type (sym.symbol->type ());
 
-  if (SYMBOL_DOMAIN (sym.symbol) == STRUCT_DOMAIN)
+  if (sym.symbol->domain () == STRUCT_DOMAIN)
     {
       /* Binding a tag, so we don't need to build a decl.  */
       context->plugin ().tagbind (sym.symbol->natural_name (),
@@ -80,7 +79,7 @@ convert_one_symbol (compile_c_instance *
       CORE_ADDR addr = 0;
       gdb::unique_xmalloc_ptr<char> symbol_name;
 
-      switch (SYMBOL_CLASS (sym.symbol))
+      switch (sym.symbol->loc_class ())
 	{
 	case LOC_TYPEDEF:
 	  kind = GCC_C_SYMBOL_TYPEDEF;
@@ -88,25 +87,25 @@ convert_one_symbol (compile_c_instance *
 
 	case LOC_LABEL:
 	  kind = GCC_C_SYMBOL_LABEL;
-	  addr = SYMBOL_VALUE_ADDRESS (sym.symbol);
+	  addr = sym.symbol->value_address ();
 	  break;
 
 	case LOC_BLOCK:
 	  kind = GCC_C_SYMBOL_FUNCTION;
-	  addr = BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (sym.symbol));
-	  if (is_global && TYPE_GNU_IFUNC (SYMBOL_TYPE (sym.symbol)))
-	    addr = gnu_ifunc_resolve_addr (target_gdbarch (), addr);
+	  addr = sym.symbol->value_block ()->entry_pc ();
+	  if (is_global && sym.symbol->type ()->is_gnu_ifunc ())
+	    addr = gnu_ifunc_resolve_addr (current_inferior ()->arch (), addr);
 	  break;
 
 	case LOC_CONST:
-	  if (TYPE_CODE (SYMBOL_TYPE (sym.symbol)) == TYPE_CODE_ENUM)
+	  if (sym.symbol->type ()->code () == TYPE_CODE_ENUM)
 	    {
 	      /* Already handled by convert_enum.  */
 	      return;
 	    }
 	  context->plugin ().build_constant
 	    (sym_type, sym.symbol->natural_name (),
-	     SYMBOL_VALUE (sym.symbol),
+	     sym.symbol->value_longest (),
 	     filename, line);
 	  return;
 
@@ -115,7 +114,7 @@ convert_one_symbol (compile_c_instance *
 		 sym.symbol->print_name ());
 
 	case LOC_UNDEF:
-	  internal_error (__FILE__, __LINE__, _("LOC_UNDEF found for \"%s\"."),
+	  internal_error (_("LOC_UNDEF found for \"%s\"."),
 			  sym.symbol->print_name ());
 
 	case LOC_COMMON_BLOCK:
@@ -136,7 +135,7 @@ convert_one_symbol (compile_c_instance *
 		     "be referenced from the current thread in "
 		     "compiled code."),
 		   sym.symbol->print_name ());
-	  /* FALLTHROUGH */
+	  [[fallthrough]];
 	case LOC_UNRESOLVED:
 	  /* 'symbol_name' cannot be used here as that one is used only for
 	     local variables from compile_dwarf_expr_to_c.
@@ -144,7 +143,7 @@ convert_one_symbol (compile_c_instance *
 	     by their name.  */
 	  {
 	    struct value *val;
-	    struct frame_info *frame = NULL;
+	    frame_info_ptr frame = NULL;
 
 	    if (symbol_read_needs_frame (sym.symbol))
 	      {
@@ -156,13 +155,13 @@ convert_one_symbol (compile_c_instance *
 	      }
 
 	    val = read_var_value (sym.symbol, sym.block, frame);
-	    if (VALUE_LVAL (val) != lval_memory)
+	    if (val->lval () != lval_memory)
 	      error (_("Symbol \"%s\" cannot be used for compilation "
 		       "evaluation as its address has not been found."),
 		     sym.symbol->print_name ());
 
 	    kind = GCC_C_SYMBOL_VARIABLE;
-	    addr = value_address (val);
+	    addr = val->address ();
 	  }
 	  break;
 
@@ -179,7 +178,7 @@ convert_one_symbol (compile_c_instance *
 
 	case LOC_STATIC:
 	  kind = GCC_C_SYMBOL_VARIABLE;
-	  addr = SYMBOL_VALUE_ADDRESS (sym.symbol);
+	  addr = sym.symbol->value_address ();
 	  break;
 
 	case LOC_FINAL_VALUE:
@@ -210,9 +209,8 @@ convert_one_symbol (compile_c_instance *
 
 static void
 convert_symbol_sym (compile_c_instance *context, const char *identifier,
-		    struct block_symbol sym, domain_enum domain)
+		    struct block_symbol sym, domain_search_flags domain)
 {
-  const struct block *static_block;
   int is_local_symbol;
 
   /* If we found a symbol and it is not in the  static or global
@@ -227,7 +225,9 @@ convert_symbol_sym (compile_c_instance *
      }
   */
 
-  static_block = block_static_block (sym.block);
+  const struct block *static_block = nullptr;
+  if (sym.block != nullptr)
+    static_block = sym.block->static_block ();
   /* STATIC_BLOCK is NULL if FOUND_BLOCK is the global block.  */
   is_local_symbol = (sym.block != static_block && static_block != NULL);
   if (is_local_symbol)
@@ -238,20 +238,20 @@ convert_symbol_sym (compile_c_instance *
       /* If the outer symbol is in the static block, we ignore it, as
 	 it cannot be referenced.  */
       if (global_sym.symbol != NULL
-	  && global_sym.block != block_static_block (global_sym.block))
+	  && global_sym.block != global_sym.block->static_block ())
 	{
 	  if (compile_debug)
-	    fprintf_unfiltered (gdb_stdlog,
-				"gcc_convert_symbol \"%s\": global symbol\n",
-				identifier);
+	    gdb_printf (gdb_stdlog,
+			"gcc_convert_symbol \"%s\": global symbol\n",
+			identifier);
 	  convert_one_symbol (context, global_sym, 1, 0);
 	}
     }
 
   if (compile_debug)
-    fprintf_unfiltered (gdb_stdlog,
-			"gcc_convert_symbol \"%s\": local symbol\n",
-			identifier);
+    gdb_printf (gdb_stdlog,
+		"gcc_convert_symbol \"%s\": local symbol\n",
+		identifier);
   convert_one_symbol (context, sym, 0, is_local_symbol);
 }
 
@@ -259,8 +259,7 @@ convert_symbol_sym (compile_c_instance *
    to use and BMSYM is the minimal symbol to convert.  */
 
 static void
-convert_symbol_bmsym (compile_c_instance *context,
-		      struct bound_minimal_symbol bmsym)
+convert_symbol_bmsym (compile_c_instance *context, bound_minimal_symbol bmsym)
 {
   struct minimal_symbol *msym = bmsym.minsym;
   struct objfile *objfile = bmsym.objfile;
@@ -270,39 +269,39 @@ convert_symbol_bmsym (compile_c_instance
   gcc_decl decl;
   CORE_ADDR addr;
 
-  addr = MSYMBOL_VALUE_ADDRESS (objfile, msym);
+  addr = msym->value_address (objfile);
 
   /* Conversion copied from write_exp_msymbol.  */
-  switch (MSYMBOL_TYPE (msym))
+  switch (msym->type ())
     {
     case mst_text:
     case mst_file_text:
     case mst_solib_trampoline:
-      type = objfile_type (objfile)->nodebug_text_symbol;
+      type = builtin_type (objfile)->nodebug_text_symbol;
       kind = GCC_C_SYMBOL_FUNCTION;
       break;
 
     case mst_text_gnu_ifunc:
-      type = objfile_type (objfile)->nodebug_text_gnu_ifunc_symbol;
+      type = builtin_type (objfile)->nodebug_text_gnu_ifunc_symbol;
       kind = GCC_C_SYMBOL_FUNCTION;
-      addr = gnu_ifunc_resolve_addr (target_gdbarch (), addr);
+      addr = gnu_ifunc_resolve_addr (current_inferior ()->arch (), addr);
       break;
 
     case mst_data:
     case mst_file_data:
     case mst_bss:
     case mst_file_bss:
-      type = objfile_type (objfile)->nodebug_data_symbol;
+      type = builtin_type (objfile)->nodebug_data_symbol;
       kind = GCC_C_SYMBOL_VARIABLE;
       break;
 
     case mst_slot_got_plt:
-      type = objfile_type (objfile)->nodebug_got_plt_symbol;
+      type = builtin_type (objfile)->nodebug_got_plt_symbol;
       kind = GCC_C_SYMBOL_FUNCTION;
       break;
 
     default:
-      type = objfile_type (objfile)->nodebug_unknown_symbol;
+      type = builtin_type (objfile)->nodebug_unknown_symbol;
       kind = GCC_C_SYMBOL_VARIABLE;
       break;
     }
@@ -324,19 +323,19 @@ gcc_convert_symbol (void *datum,
 {
   compile_c_instance *context
     = static_cast<compile_c_instance *> (datum);
-  domain_enum domain;
+  domain_search_flags domain;
   int found = 0;
 
   switch (request)
     {
     case GCC_C_ORACLE_SYMBOL:
-      domain = VAR_DOMAIN;
+      domain = SEARCH_VFT;
       break;
     case GCC_C_ORACLE_TAG:
-      domain = STRUCT_DOMAIN;
+      domain = SEARCH_STRUCT_DOMAIN;
       break;
     case GCC_C_ORACLE_LABEL:
-      domain = LABEL_DOMAIN;
+      domain = SEARCH_LABEL_DOMAIN;
       break;
     default:
       gdb_assert_not_reached ("Unrecognized oracle request.");
@@ -354,11 +353,10 @@ gcc_convert_symbol (void *datum,
 	  convert_symbol_sym (context, identifier, sym, domain);
 	  found = 1;
 	}
-      else if (domain == VAR_DOMAIN)
+      else if (request == GCC_C_ORACLE_SYMBOL)
 	{
-	  struct bound_minimal_symbol bmsym;
-
-	  bmsym = lookup_minimal_symbol (identifier, NULL, NULL);
+	  bound_minimal_symbol bmsym
+	    = lookup_minimal_symbol (current_program_space, identifier);
 	  if (bmsym.minsym != NULL)
 	    {
 	      convert_symbol_bmsym (context, bmsym);
@@ -373,9 +371,9 @@ gcc_convert_symbol (void *datum,
     }
 
   if (compile_debug && !found)
-    fprintf_unfiltered (gdb_stdlog,
-			"gcc_convert_symbol \"%s\": lookup_symbol failed\n",
-			identifier);
+    gdb_printf (gdb_stdlog,
+		"gcc_convert_symbol \"%s\": lookup_symbol failed\n",
+		identifier);
   return;
 }
 
@@ -397,33 +395,35 @@ gcc_symbol_address (void *datum, struct
       struct symbol *sym;
 
       /* We only need global functions here.  */
-      sym = lookup_symbol (identifier, NULL, VAR_DOMAIN, NULL).symbol;
-      if (sym != NULL && SYMBOL_CLASS (sym) == LOC_BLOCK)
+      sym = lookup_symbol (identifier, nullptr, SEARCH_FUNCTION_DOMAIN,
+			   nullptr).symbol;
+      if (sym != nullptr)
 	{
 	  if (compile_debug)
-	    fprintf_unfiltered (gdb_stdlog,
-				"gcc_symbol_address \"%s\": full symbol\n",
-				identifier);
-	  result = BLOCK_ENTRY_PC (SYMBOL_BLOCK_VALUE (sym));
-	  if (TYPE_GNU_IFUNC (SYMBOL_TYPE (sym)))
-	    result = gnu_ifunc_resolve_addr (target_gdbarch (), result);
+	    gdb_printf (gdb_stdlog,
+			"gcc_symbol_address \"%s\": full symbol\n",
+			identifier);
+	  result = sym->value_block ()->entry_pc ();
+	  if (sym->type ()->is_gnu_ifunc ())
+	    result = gnu_ifunc_resolve_addr (current_inferior ()->arch (),
+					     result);
 	  found = 1;
 	}
       else
 	{
-	  struct bound_minimal_symbol msym;
-
-	  msym = lookup_bound_minimal_symbol (identifier);
+	  bound_minimal_symbol msym
+	    = lookup_minimal_symbol (current_program_space, identifier);
 	  if (msym.minsym != NULL)
 	    {
 	      if (compile_debug)
-		fprintf_unfiltered (gdb_stdlog,
-				    "gcc_symbol_address \"%s\": minimal "
-				    "symbol\n",
-				    identifier);
-	      result = BMSYMBOL_VALUE_ADDRESS (msym);
-	      if (MSYMBOL_TYPE (msym.minsym) == mst_text_gnu_ifunc)
-		result = gnu_ifunc_resolve_addr (target_gdbarch (), result);
+		gdb_printf (gdb_stdlog,
+			    "gcc_symbol_address \"%s\": minimal "
+			    "symbol\n",
+			    identifier);
+	      result = msym.value_address ();
+	      if (msym.minsym->type () == mst_text_gnu_ifunc)
+		result = gnu_ifunc_resolve_addr (current_inferior ()->arch (),
+						 result);
 	      found = 1;
 	    }
 	}
@@ -435,59 +435,19 @@ gcc_symbol_address (void *datum, struct
     }
 
   if (compile_debug && !found)
-    fprintf_unfiltered (gdb_stdlog,
-			"gcc_symbol_address \"%s\": failed\n",
-			identifier);
+    gdb_printf (gdb_stdlog,
+		"gcc_symbol_address \"%s\": failed\n",
+		identifier);
   return result;
 }
 
-
-
-/* A hash function for symbol names.  */
-
-static hashval_t
-hash_symname (const void *a)
-{
-  const struct symbol *sym = (const struct symbol *) a;
-
-  return htab_hash_string (sym->natural_name ());
-}
-
-/* A comparison function for hash tables that just looks at symbol
-   names.  */
-
-static int
-eq_symname (const void *a, const void *b)
-{
-  const struct symbol *syma = (const struct symbol *) a;
-  const struct symbol *symb = (const struct symbol *) b;
-
-  return strcmp (syma->natural_name (), symb->natural_name ()) == 0;
-}
-
-/* If a symbol with the same name as SYM is already in HASHTAB, return
-   1.  Otherwise, add SYM to HASHTAB and return 0.  */
-
-static int
-symbol_seen (htab_t hashtab, struct symbol *sym)
-{
-  void **slot;
-
-  slot = htab_find_slot (hashtab, sym, INSERT);
-  if (*slot != NULL)
-    return 1;
-
-  *slot = sym;
-  return 0;
-}
-
 /* Generate C code to compute the length of a VLA.  */
 
 static void
 generate_vla_size (compile_instance *compiler,
 		   string_file *stream,
 		   struct gdbarch *gdbarch,
-		   unsigned char *registers_used,
+		   std::vector<bool> &registers_used,
 		   CORE_ADDR pc,
 		   struct type *type,
 		   struct symbol *sym)
@@ -495,16 +455,16 @@ generate_vla_size (compile_instance *com
   type = check_typedef (type);
 
   if (TYPE_IS_REFERENCE (type))
-    type = check_typedef (TYPE_TARGET_TYPE (type));
+    type = check_typedef (type->target_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,9 +476,9 @@ 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);
+			 type->target_type (), sym);
       break;
 
     case TYPE_CODE_UNION:
@@ -526,10 +486,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 (!type->field (i).is_static ())
 	    generate_vla_size (compiler, stream, gdbarch, registers_used, pc,
-			       TYPE_FIELD_TYPE (type, i), sym);
+			       type->field (i).type (), sym);
       }
       break;
     }
@@ -541,26 +501,27 @@ static void
 generate_c_for_for_one_variable (compile_instance *compiler,
 				 string_file *stream,
 				 struct gdbarch *gdbarch,
-				 unsigned char *registers_used,
+				 std::vector<bool> &registers_used,
 				 CORE_ADDR pc,
 				 struct symbol *sym)
 {
 
   try
     {
-      if (is_dynamic_type (SYMBOL_TYPE (sym)))
+      if (is_dynamic_type (sym->type ()))
 	{
 	  /* We need to emit to a temporary buffer in case an error
 	     occurs in the middle.  */
 	  string_file local_file;
 
 	  generate_vla_size (compiler, &local_file, gdbarch, registers_used, pc,
-			     SYMBOL_TYPE (sym), sym);
+			     sym->type (), sym);
 
 	  stream->write (local_file.c_str (), local_file.size ());
 	}
 
-      if (SYMBOL_COMPUTED_OPS (sym) != NULL)
+      if (const symbol_computed_ops *computed_ops = sym->computed_ops ();
+	  computed_ops != nullptr)
 	{
 	  gdb::unique_xmalloc_ptr<char> generated_name
 	    = c_symbol_substitution_name (sym);
@@ -568,16 +529,14 @@ generate_c_for_for_one_variable (compile
 	     occurs in the middle.  */
 	  string_file local_file;
 
-	  SYMBOL_COMPUTED_OPS (sym)->generate_c_location (sym, &local_file,
-							  gdbarch,
-							  registers_used,
-							  pc,
-							  generated_name.get ());
+	  computed_ops->generate_c_location (sym, &local_file, gdbarch,
+					     registers_used, pc,
+					     generated_name.get ());
 	  stream->write (local_file.c_str (), local_file.size ());
 	}
       else
 	{
-	  switch (SYMBOL_CLASS (sym))
+	  switch (sym->loc_class ())
 	    {
 	    case LOC_REGISTER:
 	    case LOC_ARG:
@@ -587,8 +546,8 @@ generate_c_for_for_one_variable (compile
 	      error (_("Local symbol unhandled when generating C code."));
 
 	    case LOC_COMPUTED:
-	      gdb_assert_not_reached (_("LOC_COMPUTED variable "
-					"missing a method."));
+	      gdb_assert_not_reached ("LOC_COMPUTED variable "
+				      "missing a method.");
 
 	    default:
 	      /* Nothing to do for all other cases, as they don't represent
@@ -606,49 +565,43 @@ generate_c_for_for_one_variable (compile
 
 /* See compile-c.h.  */
 
-gdb::unique_xmalloc_ptr<unsigned char>
+std::vector<bool>
 generate_c_for_variable_locations (compile_instance *compiler,
 				   string_file *stream,
 				   struct gdbarch *gdbarch,
 				   const struct block *block,
 				   CORE_ADDR pc)
 {
-  const struct block *static_block = block_static_block (block);
+  if (block == nullptr)
+    return {};
+
+  const struct block *static_block = block->static_block ();
 
   /* If we're already in the static or global block, there is nothing
      to write.  */
   if (static_block == NULL || block == static_block)
-    return NULL;
+    return {};
 
-  gdb::unique_xmalloc_ptr<unsigned char> registers_used
-    (XCNEWVEC (unsigned char, gdbarch_num_regs (gdbarch)));
+  std::vector<bool> registers_used (gdbarch_num_regs (gdbarch));
 
   /* Ensure that a given name is only entered once.  This reflects the
      reality of shadowing.  */
-  htab_up symhash (htab_create_alloc (1, hash_symname, eq_symname, NULL,
-				      xcalloc, xfree));
+  gdb::unordered_set<std::string_view> symset;
 
   while (1)
     {
-      struct symbol *sym;
-      struct block_iterator iter;
-
       /* Iterate over symbols in this block, generating code to
 	 compute the location of each local variable.  */
-      for (sym = block_iterator_first (block, &iter);
-	   sym != NULL;
-	   sym = block_iterator_next (&iter))
-	{
-	  if (!symbol_seen (symhash.get (), sym))
-	    generate_c_for_for_one_variable (compiler, stream, gdbarch,
-					     registers_used.get (), pc, sym);
-	}
+      for (struct symbol *sym : block_iterator_range (block))
+	if (symset.insert (sym->natural_name ()).second)
+	  generate_c_for_for_one_variable (compiler, stream, gdbarch,
+					   registers_used, pc, sym);
 
       /* If we just finished the outermost block of a function, we're
 	 done.  */
-      if (BLOCK_FUNCTION (block) != NULL)
+      if (block->function () != NULL)
 	break;
-      block = BLOCK_SUPERBLOCK (block);
+      block = block->superblock ();
     }
 
   return registers_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.20200303/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.20200303/gdb/compile/compile-c-types.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-c-types.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert types from GDB to GCC
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 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 "gdbtypes.h"
 #include "compile-internal.h"
 #include "compile-c.h"
@@ -29,7 +28,7 @@
 static gcc_type
 convert_pointer (compile_c_instance *context, struct type *type)
 {
-  gcc_type target = context->convert_type (TYPE_TARGET_TYPE (type));
+  gcc_type target = context->convert_type (type->target_type ());
 
   return context->plugin ().build_pointer_type (target);
 }
@@ -40,28 +39,28 @@ 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));
+  element_type = context->convert_type (type->target_type ());
 
-  if (TYPE_LOW_BOUND_KIND (range) != PROP_CONST)
+  if (!range->bounds ()->low.is_constant ())
     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;
 
-      if (TYPE_VECTOR (type))
+      if (type->is_vector ())
 	return context->plugin ().error (_("variably-sized vector type"
 					   " 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;
@@ -70,7 +69,7 @@ convert_array (compile_c_instance *conte
     {
       LONGEST low_bound, high_bound, count;
 
-      if (get_array_bounds (type, &low_bound, &high_bound) == 0)
+      if (!get_array_bounds (type, &low_bound, &high_bound))
 	count = -1;
       else
 	{
@@ -78,7 +77,7 @@ convert_array (compile_c_instance *conte
 	  count = high_bound + 1;
 	}
 
-      if (TYPE_VECTOR (type))
+      if (type->is_vector ())
 	return context->plugin ().build_vector_type (element_type, count);
       return context->plugin ().build_array_type (element_type, count);
     }
@@ -94,31 +93,35 @@ 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);
+      unsigned long bitsize = type->field (i).bitsize ();
 
-      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->field (i).type ()->length ();
       context->plugin ().build_add_field (result,
-					  TYPE_FIELD_NAME (type, i),
+					  type->field (i).name (),
 					  field_type,
 					  bitsize,
-					  TYPE_FIELD_BITPOS (type, i));
+					  type->field (i).loc_bitpos ());
     }
 
-  context->plugin ().finish_record_or_union (result, TYPE_LENGTH (type));
+  if (context->plugin ().version () >= GCC_C_FE_VERSION_2)
+    context->plugin ().finish_record_with_alignment (result, type->length (),
+						     type_align (type));
+  else
+    context->plugin ().finish_record_or_union (result, type->length ());
   return result;
 }
 
@@ -130,14 +133,14 @@ convert_enum (compile_c_instance *contex
   gcc_type int_type, result;
   int i;
 
-  int_type = context->plugin ().int_type_v0 (TYPE_UNSIGNED (type),
-					     TYPE_LENGTH (type));
+  int_type = context->plugin ().int_type_v0 (type->is_unsigned (),
+					     type->length ());
 
   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));
+	(result, type->field (i).name (), type->field (i).loc_enumval ());
     }
 
   context->plugin ().finish_enum_type (result);
@@ -153,9 +156,9 @@ convert_func (compile_c_instance *contex
   int i;
   gcc_type result, return_type;
   struct gcc_type_array array;
-  int is_varargs = TYPE_VARARGS (type) || !TYPE_PROTOTYPED (type);
+  int is_varargs = type->has_varargs () || !type->is_prototyped ();
 
-  struct type *target_type = TYPE_TARGET_TYPE (type);
+  struct type *target_type = type->target_type ();
 
   /* Functions with no debug info have no return type.  Ideally we'd
      want to fallback to the type of the cast just before the
@@ -164,10 +167,7 @@ convert_func (compile_c_instance *contex
      GDB's parser used to do.  */
   if (target_type == NULL)
     {
-      if (TYPE_OBJFILE_OWNED (type))
-	target_type = objfile_type (TYPE_OWNER (type).objfile)->builtin_int;
-      else
-	target_type = builtin_type (TYPE_OWNER (type).gdbarch)->builtin_int;
+      target_type = builtin_type (type->arch ())->builtin_int;
       warning (_("function has unknown return type; assuming int"));
     }
 
@@ -175,14 +175,14 @@ 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 ();
+  std::vector<gcc_type> elements (array.n_elements);
+  array.elements = elements.data ();
+  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);
-  xfree (array.elements);
 
   return result;
 }
@@ -194,18 +194,18 @@ convert_int (compile_c_instance *context
 {
   if (context->plugin ().version () >= GCC_C_FE_VERSION_1)
     {
-      if (TYPE_NOSIGN (type))
+      if (type->has_no_signedness ())
 	{
-	  gdb_assert (TYPE_LENGTH (type) == 1);
+	  gdb_assert (type->length () == 1);
 	  return context->plugin ().char_type ();
 	}
-      return context->plugin ().int_type (TYPE_UNSIGNED (type),
-					  TYPE_LENGTH (type),
-					  TYPE_NAME (type));
+      return context->plugin ().int_type (type->is_unsigned (),
+					  type->length (),
+					  type->name ());
     }
   else
-    return context->plugin ().int_type_v0 (TYPE_UNSIGNED (type),
-					   TYPE_LENGTH (type));
+    return context->plugin ().int_type_v0 (type->is_unsigned (),
+					   type->length ());
 }
 
 /* Convert a floating-point type to its gcc representation.  */
@@ -214,10 +214,10 @@ static gcc_type
 convert_float (compile_c_instance *context, struct type *type)
 {
   if (context->plugin ().version () >= GCC_C_FE_VERSION_1)
-    return context->plugin ().float_type (TYPE_LENGTH (type),
-					  TYPE_NAME (type));
+    return context->plugin ().float_type (type->length (),
+					  type->name ());
   else
-    return context->plugin ().float_type_v0 (TYPE_LENGTH (type));
+    return context->plugin ().float_type_v0 (type->length ());
 }
 
 /* Convert the 'void' type to its gcc representation.  */
@@ -254,7 +254,8 @@ convert_qualified (compile_c_instance *c
   if (TYPE_RESTRICT (type))
     quals |= GCC_QUALIFIER_RESTRICT;
 
-  return context->plugin ().build_qualified_type (unqual_converted, quals);
+  return context->plugin ().build_qualified_type (unqual_converted,
+						  quals.raw ());
 }
 
 /* Convert a complex type to its gcc representation.  */
@@ -262,7 +263,7 @@ convert_qualified (compile_c_instance *c
 static gcc_type
 convert_complex (compile_c_instance *context, struct type *type)
 {
-  gcc_type base = context->convert_type (TYPE_TARGET_TYPE (type));
+  gcc_type base = context->convert_type (type->target_type ());
 
   return context->plugin ().build_complex_type (base);
 }
@@ -277,12 +278,12 @@ convert_type_basic (compile_c_instance *
 {
   /* If we are converting a qualified type, first convert the
      unqualified type and then apply the qualifiers.  */
-  if ((TYPE_INSTANCE_FLAGS (type) & (TYPE_INSTANCE_FLAG_CONST
-				     | TYPE_INSTANCE_FLAG_VOLATILE
-				     | TYPE_INSTANCE_FLAG_RESTRICT)) != 0)
+  if ((type->instance_flags () & (TYPE_INSTANCE_FLAG_CONST
+				  | TYPE_INSTANCE_FLAG_VOLATILE
+				  | 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);
@@ -321,11 +322,7 @@ convert_type_basic (compile_c_instance *
 	   the cast-to type as the variable's type, like GDB's
 	   built-in parser does.  For now, assume "int" like GDB's
 	   built-in parser used to do, but at least warn.  */
-	struct type *fallback;
-	if (TYPE_OBJFILE_OWNED (type))
-	  fallback = objfile_type (TYPE_OWNER (type).objfile)->builtin_int;
-	else
-	  fallback = builtin_type (TYPE_OWNER (type).gdbarch)->builtin_int;
+	struct type *fallback = builtin_type (type->arch ())->builtin_int;
 	warning (_("variable has unknown type; assuming int"));
 	return convert_int (context, fallback);
       }
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/compile/compile.h ./gdb/compile/compile.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/compile/compile.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Header file for Compile and inject module.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 Free Software Foundation, Inc.
 
    This 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,15 +15,163 @@
    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 COMPILE_COMPILE_H
-#define COMPILE_COMPILE_H
+#ifndef GDB_COMPILE_COMPILE_H
+#define GDB_COMPILE_COMPILE_H
+
+#include "gcc-c-interface.h"
+#include "gdbsupport/unordered_map.h"
 
 struct ui_file;
 struct gdbarch;
-struct dwarf2_per_cu_data;
+struct dwarf2_per_cu;
+struct dwarf2_per_objfile;
 struct symbol;
 struct dynamic_prop;
 
+/* Scope types enumerator.  List the types of scopes the compiler will
+   accept.  */
+
+enum compile_i_scope_types
+  {
+    COMPILE_I_INVALID_SCOPE,
+
+    /* A simple scope.  Wrap an expression into a simple scope that
+       takes no arguments, returns no value, and uses the generic
+       function name "_gdb_expr". */
+
+    COMPILE_I_SIMPLE_SCOPE,
+
+    /* Do not wrap the expression,
+       it has to provide function "_gdb_expr" on its own.  */
+    COMPILE_I_RAW_SCOPE,
+
+    /* A printable expression scope.  Wrap an expression into a scope
+       suitable for the "compile print" command.  It uses the generic
+       function name "_gdb_expr".  COMPILE_I_PRINT_ADDRESS_SCOPE variant
+       is the usual one, taking address of the object.
+       COMPILE_I_PRINT_VALUE_SCOPE is needed for arrays where the array
+       name already specifies its address.  See get_out_value_type.  */
+    COMPILE_I_PRINT_ADDRESS_SCOPE,
+    COMPILE_I_PRINT_VALUE_SCOPE,
+  };
+
+/* An object of this type holds state associated with a given
+   compilation job.  */
+
+class compile_instance
+{
+public:
+  compile_instance (struct gcc_base_context *gcc_fe, const char *options)
+    : m_gcc_fe (gcc_fe),
+      m_gcc_target_options (options)
+  {}
+
+  virtual ~compile_instance ()
+  {
+    m_gcc_fe->ops->destroy (m_gcc_fe);
+  }
+
+  /* Returns the GCC options to be passed during compilation.  */
+  const std::string &gcc_target_options () const
+  {
+    return m_gcc_target_options;
+  }
+
+  /* Query the type cache for TYPE, returning the compiler's
+     type for it in RET.  */
+  bool get_cached_type (struct type *type, gcc_type *ret) const;
+
+  /* Insert GCC_TYPE into the type cache for TYPE.
+
+     It is ok for a given type to be inserted more than once, provided that
+     the exact same association is made each time.  */
+  void insert_type (struct type *type, gcc_type gcc_type);
+
+  /* Associate SYMBOL with some error text.  */
+  void insert_symbol_error (const struct symbol *sym, const char *text);
+
+  /* Emit the error message corresponding to SYM, if one exists, and
+     arrange for it not to be emitted again.  */
+  void error_symbol_once (const struct symbol *sym);
+
+  /* These currently just forward to the underlying ops
+     vtable.  */
+
+  /* Set the plug-in print callback.  */
+  void set_print_callback (void (*print_function) (void *, const char *),
+			   void *datum);
+
+  /* Return the plug-in's front-end version.  */
+  unsigned int version () const;
+
+  /* Set the plug-in's verbosity level.  Nop for GCC_FE_VERSION_0.  */
+  void set_verbose (int level);
+
+  /* Set the plug-in driver program.  Nop for GCC_FE_VERSION_0.  */
+  void set_driver_filename (const char *filename);
+
+  /* Set the regular expression used to match the configury triplet
+     prefix to the compiler.  Nop for GCC_FE_VERSION_0.  */
+  void set_triplet_regexp (const char *regexp);
+
+  /* Set compilation arguments.  REGEXP is only used for protocol
+     version GCC_FE_VERSION_0.  */
+  gdb::unique_xmalloc_ptr<char> set_arguments (int argc, char **argv,
+					       const char *regexp = NULL);
+
+  /* Set the filename of the program to compile.  Nop for GCC_FE_VERSION_0.  */
+  void set_source_file (const char *filename);
+
+  /* Compile the previously specified source file to FILENAME.
+     VERBOSE_LEVEL is only used for protocol version GCC_FE_VERSION_0.  */
+  bool compile (const char *filename, int verbose_level = -1);
+
+  /* Set the scope type for this compile.  */
+  void set_scope (enum compile_i_scope_types scope)
+  {
+    m_scope = scope;
+  }
+
+  /* Return the scope type.  */
+  enum compile_i_scope_types scope () const
+  {
+    return m_scope;
+  }
+
+  /* Set the block to be used for symbol searches.  */
+  void set_block (const struct block *block)
+  {
+    m_block = block;
+  }
+
+  /* Return the search block.  */
+  const struct block *block () const
+  {
+    return m_block;
+  }
+
+protected:
+
+  /* The GCC front end.  */
+  struct gcc_base_context *m_gcc_fe;
+
+  /* The "scope" of this compilation.  */
+  enum compile_i_scope_types m_scope;
+
+  /* The block in which an expression is being parsed.  */
+  const struct block *m_block;
+
+  /* Specify "-std=gnu11", "-std=gnu++11" or similar.  These options are put
+     after CU's DW_AT_producer compilation options to override them.  */
+  std::string m_gcc_target_options;
+
+  /* Map from gdb types to gcc types.  */
+  gdb::unordered_map<type *, gcc_type> m_type_map;
+
+  /* Map from gdb symbols to gcc error messages to emit.  */
+  gdb::unordered_map<const symbol *, std::string> m_symbol_err_map;
+};
+
 /* Public function that is called from compile_control case in the
    expression command.  GDB returns either a CMD, or a CMD_STRING, but
    never both.  */
@@ -53,6 +201,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,
@@ -60,11 +211,12 @@ extern void compile_dwarf_expr_to_c (str
 				     struct symbol *sym,
 				     CORE_ADDR pc,
 				     struct gdbarch *arch,
-				     unsigned char *registers_used,
+				     std::vector<bool> &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 *per_cu,
+				     dwarf2_per_objfile *per_objfile);
 
 /* Compile a DWARF bounds expression to C, suitable for use by the
    compiler.
@@ -88,6 +240,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,
@@ -95,15 +250,16 @@ extern void compile_dwarf_bounds_to_c (s
 				       const struct dynamic_prop *prop,
 				       struct symbol *sym, CORE_ADDR pc,
 				       struct gdbarch *arch,
-				       unsigned char *registers_used,
+				       std::vector<bool> &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 *per_cu,
+				       dwarf2_per_objfile *per_objfile);
 
 extern void compile_print_value (struct value *val, void *data_voidp);
 
 /* Command element for the 'compile' command.  */
 extern cmd_list_element *compile_cmd_element;
 
-#endif /* COMPILE_COMPILE_H */
+#endif /* GDB_COMPILE_COMPILE_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.20200303/gdb/compile/compile-internal.h ./gdb/compile/compile-internal.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/compile/compile-internal.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-internal.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,143 +14,16 @@
    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 COMPILE_COMPILE_INTERNAL_H
-#define COMPILE_COMPILE_INTERNAL_H
+#ifndef GDB_COMPILE_COMPILE_INTERNAL_H
+#define GDB_COMPILE_COMPILE_INTERNAL_H
 
 #include "gcc-c-interface.h"
+#include "gdbsupport/gdb-hashtab.h"
 
 /* Debugging flag for the "compile" family of commands.  */
 
 extern bool compile_debug;
 
-struct block;
-
-/* An object that maps a gdb type to a gcc type.  */
-
-struct type_map_instance
-{
-  /* The gdb type.  */
-
-  struct type *type;
-
-  /* The corresponding gcc type handle.  */
-
-  gcc_type gcc_type_handle;
-};
-
-/* An object of this type holds state associated with a given
-   compilation job.  */
-
-class compile_instance
-{
-public:
-  compile_instance (struct gcc_base_context *gcc_fe, const char *options);
-
-  virtual ~compile_instance ()
-  {
-    m_gcc_fe->ops->destroy (m_gcc_fe);
-  }
-
-  /* Returns the GCC options to be passed during compilation.  */
-  const std::string &gcc_target_options () const
-  {
-    return m_gcc_target_options;
-  }
-
-  /* Query the type cache for TYPE, returning the compiler's
-     type for it in RET.  */
-  bool get_cached_type (struct type *type, gcc_type *ret) const;
-
-  /* Insert GCC_TYPE into the type cache for TYPE.
-
-     It is ok for a given type to be inserted more than once, provided that
-     the exact same association is made each time.  */
-  void insert_type (struct type *type, gcc_type gcc_type);
-
-  /* Associate SYMBOL with some error text.  */
-  void insert_symbol_error (const struct symbol *sym, const char *text);
-
-  /* Emit the error message corresponding to SYM, if one exists, and
-     arrange for it not to be emitted again.  */
-  void error_symbol_once (const struct symbol *sym);
-
-  /* These currently just forward to the underlying ops
-     vtable.  */
-
-  /* Set the plug-in print callback.  */
-  void set_print_callback (void (*print_function) (void *, const char *),
-			   void *datum);
-
-  /* Return the plug-in's front-end version.  */
-  unsigned int version () const;
-
-  /* Set the plug-in's verbosity level.  Nop for GCC_FE_VERSION_0.  */
-  void set_verbose (int level);
-
-  /* Set the plug-in driver program.  Nop for GCC_FE_VERSION_0.  */
-  void set_driver_filename (const char *filename);
-
-  /* Set the regular expression used to match the configury triplet
-     prefix to the compiler.  Nop for GCC_FE_VERSION_0.  */
-  void set_triplet_regexp (const char *regexp);
-
-  /* Set compilation arguments.  REGEXP is only used for protocol
-     version GCC_FE_VERSION_0.  */
-  char *set_arguments (int argc, char **argv, const char *regexp = NULL);
-
-  /* Set the filename of the program to compile.  Nop for GCC_FE_VERSION_0.  */
-  void set_source_file (const char *filename);
-
-  /* Compile the previously specified source file to FILENAME.
-     VERBOSE_LEVEL is only used for protocol version GCC_FE_VERSION_0.  */
-  bool compile (const char *filename, int verbose_level = -1);
-
-  /* Set the scope type for this compile.  */
-  void set_scope (enum compile_i_scope_types scope)
-  {
-    m_scope = scope;
-  }
-
-  /* Return the scope type.  */
-  enum compile_i_scope_types scope () const
-  {
-    return m_scope;
-  }
-
-  /* Set the block to be used for symbol searches.  */
-  void set_block (const struct block *block)
-  {
-    m_block = block;
-  }
-
-  /* Return the search block.  */
-  const struct block *block () const
-  {
-    return m_block;
-  }
-
-protected:
-
-  /* The GCC front end.  */
-  struct gcc_base_context *m_gcc_fe;
-
-  /* The "scope" of this compilation.  */
-  enum compile_i_scope_types m_scope;
-
-  /* The block in which an expression is being parsed.  */
-  const struct block *m_block;
-
-  /* Specify "-std=gnu11", "-std=gnu++11" or similar.  These options are put
-     after CU's DW_AT_producer compilation options to override them.  */
-  std::string m_gcc_target_options;
-
-  /* Map from gdb types to gcc types.  */
-  htab_up m_type_map;
-
-  /* Map from gdb symbols to gcc error messages to emit.  */
-  htab_up m_symbol_err_map;
-};
-
 /* Define header and footers for different scopes.  */
 
 /* A simple scope just declares a function named "_gdb_expr", takes no
@@ -207,4 +80,43 @@ private:
   std::string m_object_file;
 };
 
-#endif /* COMPILE_COMPILE_INTERNAL_H */
+struct compile_instance;
+
+/* Create a new instance of the C compiler and return it.  This
+   function never returns NULL, but rather throws an exception on
+   failure.  This is suitable for use as the
+   language_defn::get_compile_instance method.  */
+
+extern std::unique_ptr<compile_instance> c_get_compile_context ();
+
+/* Create a new instance of the C++ compiler and return it.  This
+   function never returns NULL, but rather throws an exception on
+   failure.  This is suitable for use as the
+   language_defn::get_compile_instance method.  */
+
+extern std::unique_ptr<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 compute_program language method; see that
+   for a description of the arguments.  */
+
+extern std::string c_compute_program (compile_instance *inst,
+				      const char *input,
+				      struct gdbarch *gdbarch,
+				      const struct block *expr_block,
+				      CORE_ADDR expr_pc);
+
+/* This takes the user-supplied text and returns a new bit of code to compile.
+
+   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,
+					  const char *input,
+					  struct gdbarch *gdbarch,
+					  const struct block *expr_block,
+					  CORE_ADDR expr_pc);
+
+#endif /* GDB_COMPILE_COMPILE_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.20200303/gdb/compile/compile-loc2c.c ./gdb/compile/compile-loc2c.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/compile/compile-loc2c.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-loc2c.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Convert a DWARF location expression to C
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,20 +17,21 @@
    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 "dwarf2expr.h"
-#include "dwarf2loc.h"
+#include "objfiles.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 "gdbsupport/gdb_vecs.h"
+#include "dwarf2/frame.h"
 #include "value.h"
 #include "gdbarch.h"
+#include "extract-store-integer.h"
 
 
 
@@ -433,9 +434,9 @@ compute_stack_depth (enum bfd_endian byt
 static void
 push (int indent, string_file *stream, ULONGEST l)
 {
-  fprintfi_filtered (indent, stream,
-		     "__gdb_stack[++__gdb_tos] = (" GCC_UINTPTR ") %s;\n",
-		     hex_string (l));
+  gdb_printf (stream,
+	      "%*s__gdb_stack[++__gdb_tos] = (" GCC_UINTPTR ") %s;\n",
+	      indent, "", hex_string (l));
 }
 
 /* Emit code to push an arbitrary expression.  This works like
@@ -449,13 +450,13 @@ pushf (int indent, string_file *stream,
 {
   va_list args;
 
-  fprintfi_filtered (indent, stream, "__gdb_stack[__gdb_tos + 1] = ");
+  gdb_printf (stream, "%*s__gdb_stack[__gdb_tos + 1] = ", indent, "");
   va_start (args, format);
   stream->vprintf (format, args);
   va_end (args);
   stream->puts (";\n");
 
-  fprintfi_filtered (indent, stream, "++__gdb_tos;\n");
+  gdb_printf (stream, "%*s++__gdb_tos;\n", indent, "");
 }
 
 /* Emit code for a unary expression -- one which operates in-place on
@@ -469,7 +470,7 @@ unary (int indent, string_file *stream,
 {
   va_list args;
 
-  fprintfi_filtered (indent, stream, "__gdb_stack[__gdb_tos] = ");
+  gdb_printf (stream, "%*s__gdb_stack[__gdb_tos] = ", indent, "");
   va_start (args, format);
   stream->vprintf (format, args);
   va_end (args);
@@ -486,12 +487,12 @@ binary (int indent, string_file *stream,
 {
   va_list args;
 
-  fprintfi_filtered (indent, stream, "__gdb_stack[__gdb_tos - 1] = ");
+  gdb_printf (stream, "%*s__gdb_stack[__gdb_tos - 1] = ", indent, "");
   va_start (args, format);
   stream->vprintf (format, args);
   va_end (args);
   stream->puts (";\n");
-  fprintfi_filtered (indent, stream, "--__gdb_tos;\n");
+  gdb_printf (stream, "%*s--__gdb_tos;\n", indent, "");
 }
 
 /* Print the name of a label given its "SCOPE", an arbitrary integer
@@ -504,18 +505,32 @@ print_label (string_file *stream, unsign
   stream->printf ("__label_%u_%s", scope, pulongest (target));
 }
 
+/* Note that a register was used.  */
+
+static void
+note_register (int regnum, std::vector<bool> &registers_used)
+{
+  gdb_assert (regnum >= 0);
+  /* If the expression uses a cooked register, then we currently can't
+     compile it.  We would need a gdbarch method to handle this
+     situation.  */
+  if (regnum >= registers_used.size ())
+    error (_("Expression uses \"cooked\" register and cannot be compiled."));
+  registers_used[regnum] = true;
+}
+
 /* Emit code that pushes a register's address on the stack.
    REGISTERS_USED is an out parameter which is updated to note which
    register was needed by this expression.  */
 
 static void
 pushf_register_address (int indent, string_file *stream,
-			unsigned char *registers_used,
+			std::vector<bool> &registers_used,
 			struct gdbarch *gdbarch, int regnum)
 {
   std::string regname = compile_register_name_mangled (gdbarch, regnum);
 
-  registers_used[regnum] = 1;
+  note_register (regnum, registers_used);
   pushf (indent, stream,
 	 "(" GCC_UINTPTR ") &" COMPILE_I_SIMPLE_REGISTER_ARG_NAME "->%s",
 	 regname.c_str ());
@@ -528,12 +543,12 @@ pushf_register_address (int indent, stri
 
 static void
 pushf_register (int indent, string_file *stream,
-		unsigned char *registers_used,
+		std::vector<bool> &registers_used,
 		struct gdbarch *gdbarch, int regnum, uint64_t offset)
 {
   std::string regname = compile_register_name_mangled (gdbarch, regnum);
 
-  registers_used[regnum] = 1;
+  note_register (regnum, registers_used);
   if (offset == 0)
     pushf (indent, stream, COMPILE_I_SIMPLE_REGISTER_ARG_NAME "->%s",
 	   regname.c_str ());
@@ -578,11 +593,12 @@ do_compile_dwarf_expr_to_c (int indent,
 			    const char *result_name,
 			    struct symbol *sym, CORE_ADDR pc,
 			    struct gdbarch *arch,
-			    unsigned char *registers_used,
+			    std::vector<bool> &registers_used,
 			    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 *per_cu,
+			    dwarf2_per_objfile *per_objfile)
 {
   /* We keep a counter so that labels and other objects we create have
      unique names.  */
@@ -597,9 +613,9 @@ do_compile_dwarf_expr_to_c (int indent,
 
   ++scope;
 
-  fprintfi_filtered (indent, stream, "__attribute__ ((unused)) %s %s;\n",
-		     type_name, result_name);
-  fprintfi_filtered (indent, stream, "{\n");
+  gdb_printf (stream, "%*s__attribute__ ((unused)) %s %s;\n",
+	      indent, "", type_name, result_name);
+  gdb_printf (stream, "%*s{\n", indent, "");
   indent += 2;
 
   stack_depth = compute_stack_depth (byte_order, addr_size,
@@ -616,7 +632,7 @@ do_compile_dwarf_expr_to_c (int indent,
      offset by hand seemed too hackish.  */
   if (is_tls)
     {
-      struct frame_info *frame = get_selected_frame (NULL);
+      frame_info_ptr frame = get_selected_frame (NULL);
       struct value *val;
 
       if (frame == NULL)
@@ -625,7 +641,7 @@ do_compile_dwarf_expr_to_c (int indent,
 	       sym->print_name ());
 
       val = read_var_value (sym, NULL, frame);
-      if (VALUE_LVAL (val) != lval_memory)
+      if (val->lval () != lval_memory)
 	error (_("Symbol \"%s\" cannot be used for compilation evaluation "
 		 "as its address has not been found."),
 	       sym->print_name ());
@@ -635,19 +651,19 @@ do_compile_dwarf_expr_to_c (int indent,
 		 "compiled code."),
 	       sym->print_name ());
 
-      fprintfi_filtered (indent, stream, "%s = %s;\n",
-			 result_name,
-			 core_addr_to_string (value_address (val)));
-      fprintfi_filtered (indent - 2, stream, "}\n");
+      gdb_printf (stream, "%*s%s = %s;\n",
+		  indent, "", result_name,
+		  core_addr_to_string (val->address ()));
+      gdb_printf (stream, "%*s}\n", indent - 2, "");
       return;
     }
 
-  fprintfi_filtered (indent, stream, GCC_UINTPTR " __gdb_stack[%d];\n",
-		     stack_depth);
+  gdb_printf (stream, "%*s" GCC_UINTPTR " __gdb_stack[%d];\n",
+	      indent, "", stack_depth);
 
   if (need_tempvar)
-    fprintfi_filtered (indent, stream, GCC_UINTPTR " __gdb_tmp;\n");
-  fprintfi_filtered (indent, stream, "int __gdb_tos = -1;\n");
+    gdb_printf (stream, "%*s" GCC_UINTPTR " __gdb_tmp;\n", indent, "");
+  gdb_printf (stream, "%*sint __gdb_tos = -1;\n", indent, "");
 
   if (initial != NULL)
     pushf (indent, stream, "%s", core_addr_to_string (*initial));
@@ -658,7 +674,7 @@ do_compile_dwarf_expr_to_c (int indent,
       uint64_t uoffset, reg;
       int64_t offset;
 
-      print_spaces (indent - 2, stream);
+      stream->printf ("%*s", indent - 2, "");
       if (info[op_ptr - base].label)
 	{
 	  print_label (stream, scope, op_ptr - base);
@@ -667,8 +683,8 @@ do_compile_dwarf_expr_to_c (int indent,
       stream->printf ("/* %s */\n", get_DW_OP_name (op));
 
       /* This is handy for debugging the generated code:
-      fprintf_filtered (stream, "if (__gdb_tos != %d) abort ();\n",
-			(int) info[op_ptr - base].depth - 1);
+	 gdb_printf (stream, "if (__gdb_tos != %d) abort ();\n",
+	 (int) info[op_ptr - base].depth - 1);
       */
 
       ++op_ptr;
@@ -718,7 +734,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;
 
@@ -875,7 +891,7 @@ do_compile_dwarf_expr_to_c (int indent,
 	    if (!b)
 	      error (_("No block found for address"));
 
-	    framefunc = block_linkage_function (b);
+	    framefunc = b->linkage_function ();
 
 	    if (!framefunc)
 	      error (_("No function found for block"));
@@ -895,7 +911,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));
 	  }
@@ -906,7 +922,7 @@ do_compile_dwarf_expr_to_c (int indent,
 	  break;
 
 	case DW_OP_drop:
-	  fprintfi_filtered (indent, stream, "--__gdb_tos;\n");
+	  gdb_printf (stream, "%*s--__gdb_tos;\n", indent, "");
 	  break;
 
 	case DW_OP_pick:
@@ -916,13 +932,16 @@ do_compile_dwarf_expr_to_c (int indent,
 	  break;
 
 	case DW_OP_swap:
-	  fprintfi_filtered (indent, stream,
-			     "__gdb_tmp = __gdb_stack[__gdb_tos - 1];\n");
-	  fprintfi_filtered (indent, stream,
-			     "__gdb_stack[__gdb_tos - 1] = "
-			     "__gdb_stack[__gdb_tos];\n");
-	  fprintfi_filtered (indent, stream, ("__gdb_stack[__gdb_tos] = "
-					      "__gdb_tmp;\n"));
+	  gdb_printf (stream,
+		      "%*s__gdb_tmp = __gdb_stack[__gdb_tos - 1];\n",
+		      indent, "");
+	  gdb_printf (stream,
+		      "%*s__gdb_stack[__gdb_tos - 1] = "
+		      "__gdb_stack[__gdb_tos];\n",
+		      indent, "");
+	  gdb_printf (stream, ("%*s__gdb_stack[__gdb_tos] = "
+			       "__gdb_tmp;\n"),
+		      indent, "");
 	  break;
 
 	case DW_OP_over:
@@ -930,16 +949,20 @@ do_compile_dwarf_expr_to_c (int indent,
 	  break;
 
 	case DW_OP_rot:
-	  fprintfi_filtered (indent, stream, ("__gdb_tmp = "
-					      "__gdb_stack[__gdb_tos];\n"));
-	  fprintfi_filtered (indent, stream,
-			     "__gdb_stack[__gdb_tos] = "
-			     "__gdb_stack[__gdb_tos - 1];\n");
-	  fprintfi_filtered (indent, stream,
-			     "__gdb_stack[__gdb_tos - 1] = "
-			     "__gdb_stack[__gdb_tos -2];\n");
-	  fprintfi_filtered (indent, stream, "__gdb_stack[__gdb_tos - 2] = "
-			     "__gdb_tmp;\n");
+	  gdb_printf (stream, ("%*s__gdb_tmp = "
+			       "__gdb_stack[__gdb_tos];\n"),
+		      indent, "");
+	  gdb_printf (stream,
+		      "%*s__gdb_stack[__gdb_tos] = "
+		      "__gdb_stack[__gdb_tos - 1];\n",
+		      indent, "");
+	  gdb_printf (stream,
+		      "%*s__gdb_stack[__gdb_tos - 1] = "
+		      "__gdb_stack[__gdb_tos -2];\n",
+		      indent, "");
+	  gdb_printf (stream, "%*s__gdb_stack[__gdb_tos - 2] = "
+		      "__gdb_tmp;\n",
+		      indent, "");
 	  break;
 
 	case DW_OP_deref:
@@ -960,11 +983,11 @@ do_compile_dwarf_expr_to_c (int indent,
 
 	    /* Cast to a pointer of the desired type, then
 	       dereference.  */
-	    fprintfi_filtered (indent, stream,
-			       "__gdb_stack[__gdb_tos] = "
-			       "*((__gdb_int_%s *) "
-			       "__gdb_stack[__gdb_tos]);\n",
-			       mode);
+	    gdb_printf (stream,
+			"%*s__gdb_stack[__gdb_tos] = "
+			"*((__gdb_int_%s *) "
+			"__gdb_stack[__gdb_tos]);\n",
+			indent, "", mode);
 	  }
 	  break;
 
@@ -1076,7 +1099,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);
 	      }
 	  }
@@ -1086,7 +1109,7 @@ do_compile_dwarf_expr_to_c (int indent,
 	case DW_OP_skip:
 	  offset = extract_signed_integer (op_ptr, 2, byte_order);
 	  op_ptr += 2;
-	  fprintfi_filtered (indent, stream, "goto ");
+	  gdb_printf (stream, "%*sgoto ", indent, "");
 	  print_label (stream, scope, op_ptr + offset - base);
 	  stream->puts (";\n");
 	  break;
@@ -1094,9 +1117,10 @@ do_compile_dwarf_expr_to_c (int indent,
 	case DW_OP_bra:
 	  offset = extract_signed_integer (op_ptr, 2, byte_order);
 	  op_ptr += 2;
-	  fprintfi_filtered (indent, stream,
-			     "if ((( " GCC_INTPTR
-			     ") __gdb_stack[__gdb_tos--]) != 0) goto ");
+	  gdb_printf (stream,
+		      "%*sif ((( " GCC_INTPTR
+		      ") __gdb_stack[__gdb_tos--]) != 0) goto ",
+		      indent, "");
 	  print_label (stream, scope, op_ptr + offset - base);
 	  stream->puts (";\n");
 	  break;
@@ -1109,9 +1133,9 @@ do_compile_dwarf_expr_to_c (int indent,
 	}
     }
 
-  fprintfi_filtered (indent, stream, "%s = __gdb_stack[__gdb_tos];\n",
-		     result_name);
-  fprintfi_filtered (indent - 2, stream, "}\n");
+  gdb_printf (stream, "%*s%s = __gdb_stack[__gdb_tos];\n",
+	      indent, "", result_name);
+  gdb_printf (stream, "%*s}\n", indent - 2, "");
 }
 
 /* See compile.h.  */
@@ -1119,14 +1143,16 @@ do_compile_dwarf_expr_to_c (int indent,
 void
 compile_dwarf_expr_to_c (string_file *stream, const char *result_name,
 			 struct symbol *sym, CORE_ADDR pc,
-			 struct gdbarch *arch, unsigned char *registers_used,
+			 struct gdbarch *arch,
+			 std::vector<bool> &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 *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.  */
@@ -1136,12 +1162,15 @@ compile_dwarf_bounds_to_c (string_file *
 			   const char *result_name,
 			   const struct dynamic_prop *prop,
 			   struct symbol *sym, CORE_ADDR pc,
-			   struct gdbarch *arch, unsigned char *registers_used,
+			   struct gdbarch *arch,
+			   std::vector<bool> &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 *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.20200303/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.20200303/gdb/compile/compile-object-load.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-object-load.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Load module for 'compile' command.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "compile-object-load.h"
 #include "compile-internal.h"
 #include "command.h"
@@ -25,7 +24,7 @@
 #include "gdbcore.h"
 #include "readline/tilde.h"
 #include "bfdlink.h"
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 #include "regcache.h"
 #include "inferior.h"
 #include "gdbthread.h"
@@ -52,7 +51,8 @@ munmap_list::~munmap_list ()
     {
       try
 	{
-	  gdbarch_infcall_munmap (target_gdbarch (), item.addr, item.size);
+	  gdbarch_infcall_munmap (current_inferior ()->arch (),
+				  item.addr, item.size);
 	}
       catch (const gdb_exception_error &ex)
 	{
@@ -62,34 +62,50 @@ munmap_list::~munmap_list ()
     }
 }
 
-/* Helper data for setup_sections.  */
+/* A data structure that is used to lay out sections of our objfile in
+   inferior memory.  */
 
 struct setup_sections_data
 {
+  explicit setup_sections_data (bfd *abfd)
+    : m_bfd (abfd),
+      m_last_section_first (abfd->sections)
+  {
+  }
+
+  /* Place all ABFD sections next to each other obeying all
+     constraints.  */
+  void setup_one_section (asection *sect);
+
+  /* List of inferior mmap ranges where setup_sections should add its
+     next range.  */
+  struct munmap_list munmap_list;
+
+private:
+
+  /* The BFD.  */
+  bfd *m_bfd;
+
   /* Size of all recent sections with matching LAST_PROT.  */
-  CORE_ADDR last_size;
+  CORE_ADDR m_last_size = 0;
 
   /* First section matching LAST_PROT.  */
-  asection *last_section_first;
+  asection *m_last_section_first;
 
   /* Memory protection like the prot parameter of gdbarch_infcall_mmap. */
-  unsigned last_prot;
+  unsigned m_last_prot = -1;
 
   /* Maximum of alignments of all sections matching LAST_PROT.
      This value is always at least 1.  This value is always a power of 2.  */
-  CORE_ADDR last_max_alignment;
+  CORE_ADDR m_last_max_alignment = -1;
 
-  /* List of inferior mmap ranges where setup_sections should add its
-     next range.  */
-  std::unique_ptr<struct munmap_list> munmap_list;
 };
 
-/* Place all ABFD sections next to each other obeying all constraints.  */
+/* See setup_sections_data.  */
 
-static void
-setup_sections (bfd *abfd, asection *sect, void *data_voidp)
+void
+setup_sections_data::setup_one_section (asection *sect)
 {
-  struct setup_sections_data *data = (struct setup_sections_data *) data_voidp;
   CORE_ADDR alignment;
   unsigned prot;
 
@@ -110,67 +126,67 @@ setup_sections (bfd *abfd, asection *sec
 	prot |= GDB_MMAP_PROT_EXEC;
 
       if (compile_debug)
-	fprintf_unfiltered (gdb_stdlog,
-			    "module \"%s\" section \"%s\" size %s prot %u\n",
-			    bfd_get_filename (abfd),
-			    bfd_section_name (sect),
-			    paddress (target_gdbarch (),
-				      bfd_section_size (sect)),
-			    prot);
+	gdb_printf (gdb_stdlog,
+		    "module \"%s\" section \"%s\" size %s prot %u\n",
+		    bfd_get_filename (m_bfd),
+		    bfd_section_name (sect),
+		    paddress (current_inferior ()->arch (),
+			      bfd_section_size (sect)),
+		    prot);
     }
   else
     prot = -1;
 
   if (sect == NULL
-      || (data->last_prot != prot && bfd_section_size (sect) != 0))
+      || (m_last_prot != prot && bfd_section_size (sect) != 0))
     {
       CORE_ADDR addr;
       asection *sect_iter;
 
-      if (data->last_size != 0)
+      if (m_last_size != 0)
 	{
-	  addr = gdbarch_infcall_mmap (target_gdbarch (), data->last_size,
-				       data->last_prot);
-	  data->munmap_list->add (addr, data->last_size);
+	  addr = gdbarch_infcall_mmap (current_inferior ()->arch (),
+				       m_last_size, m_last_prot);
+	  munmap_list.add (addr, m_last_size);
 	  if (compile_debug)
-	    fprintf_unfiltered (gdb_stdlog,
-				"allocated %s bytes at %s prot %u\n",
-				paddress (target_gdbarch (), data->last_size),
-				paddress (target_gdbarch (), addr),
-				data->last_prot);
+	    gdb_printf (gdb_stdlog,
+			"allocated %s bytes at %s prot %u\n",
+			paddress (current_inferior ()->arch (), m_last_size),
+			paddress (current_inferior ()->arch (), addr),
+			m_last_prot);
 	}
       else
 	addr = 0;
 
-      if ((addr & (data->last_max_alignment - 1)) != 0)
+      if ((addr & (m_last_max_alignment - 1)) != 0)
 	error (_("Inferior compiled module address %s "
 		 "is not aligned to BFD required %s."),
-	       paddress (target_gdbarch (), addr),
-	       paddress (target_gdbarch (), data->last_max_alignment));
+	       paddress (current_inferior ()->arch (), addr),
+	       paddress (current_inferior ()->arch (), m_last_max_alignment));
 
-      for (sect_iter = data->last_section_first; sect_iter != sect;
+      for (sect_iter = m_last_section_first; sect_iter != sect;
 	   sect_iter = sect_iter->next)
 	if ((bfd_section_flags (sect_iter) & SEC_ALLOC) != 0)
 	  bfd_set_section_vma (sect_iter, addr + bfd_section_vma (sect_iter));
 
-      data->last_size = 0;
-      data->last_section_first = sect;
-      data->last_prot = prot;
-      data->last_max_alignment = 1;
+      m_last_size = 0;
+      m_last_section_first = sect;
+      m_last_prot = prot;
+      m_last_max_alignment = 1;
     }
 
   if (sect == NULL)
     return;
 
   alignment = ((CORE_ADDR) 1) << bfd_section_alignment (sect);
-  data->last_max_alignment = std::max (data->last_max_alignment, alignment);
+  m_last_max_alignment = std::max (m_last_max_alignment, alignment);
 
-  data->last_size = (data->last_size + alignment - 1) & -alignment;
+  m_last_size = (m_last_size + alignment - 1) & -alignment;
 
-  bfd_set_section_vma (sect, data->last_size);
+  bfd_set_section_vma (sect, m_last_size);
 
-  data->last_size += bfd_section_size (sect);
-  data->last_size = (data->last_size + alignment - 1) & -alignment;
+  m_last_size += bfd_section_size (sect);
+  m_last_size = (m_last_size + alignment - 1) & -alignment;
 }
 
 /* Helper for link_callbacks callbacks vector.  */
@@ -192,7 +208,7 @@ link_callbacks_multiple_definition (stru
 
 static void
 link_callbacks_warning (struct bfd_link_info *link_info, const char *xwarning,
-                        const char *symbol, bfd *abfd, asection *section,
+			const char *symbol, bfd *abfd, asection *section,
 			bfd_vma address)
 {
   warning (_("Compiled module \"%s\" section \"%s\": warning: %s"),
@@ -283,6 +299,7 @@ static const struct bfd_link_callbacks l
   link_callbacks_reloc_dangerous, /* reloc_dangerous */
   link_callbacks_unattached_reloc, /* unattached_reloc */
   NULL, /* notice */
+  NULL, /* fatal */
   link_callbacks_einfo, /* einfo */
   NULL, /* info */
   NULL, /* minfo */
@@ -371,8 +388,8 @@ copy_sections (bfd *abfd, asection *sect
     error (_("Cannot write compiled module \"%s\" section \"%s\" "
 	     "to inferior memory range %s-%s."),
 	   bfd_get_filename (abfd), bfd_section_name (sect),
-	   paddress (target_gdbarch (), inferior_addr),
-	   paddress (target_gdbarch (),
+	   paddress (current_inferior ()->arch (), inferior_addr),
+	   paddress (current_inferior ()->arch (),
 		     inferior_addr + bfd_section_size (sect)));
 }
 
@@ -402,8 +419,15 @@ get_out_value_type (struct symbol *func_
   int nblocks = 0;
   int block_loop = 0;
 
-  bv = SYMTAB_BLOCKVECTOR (func_sym->owner.symtab);
-  nblocks = BLOCKVECTOR_NBLOCKS (bv);
+  lookup_name_info func_matcher (GCC_FE_WRAPPER_FUNCTION,
+				 symbol_name_match_type::SEARCH_NAME);
+  lookup_name_info i_val_matcher (COMPILE_I_EXPR_VAL,
+				  symbol_name_match_type::SEARCH_NAME);
+  lookup_name_info i_ptr_matcher (COMPILE_I_EXPR_PTR_TYPE,
+				  symbol_name_match_type::SEARCH_NAME);
+
+  bv = func_sym->symtab ()->compunit ()->blockvector ();
+  nblocks = bv->num_blocks ();
 
   gdb_ptr_type_sym = NULL;
   for (block_loop = 0; block_loop < nblocks; block_loop++)
@@ -411,49 +435,41 @@ get_out_value_type (struct symbol *func_
       struct symbol *function = NULL;
       const struct block *function_block;
 
-      block = BLOCKVECTOR_BLOCK (bv, block_loop);
-      if (BLOCK_FUNCTION (block) != NULL)
+      block = bv->block (block_loop);
+      if (block->function () != NULL)
 	continue;
-      gdb_val_sym = block_lookup_symbol (block,
-					 COMPILE_I_EXPR_VAL,
-					 symbol_name_match_type::SEARCH_NAME,
-					 VAR_DOMAIN);
+      gdb_val_sym = block_lookup_symbol (block, i_val_matcher, SEARCH_VFT);
       if (gdb_val_sym == NULL)
 	continue;
 
       function_block = block;
-      while (function_block != BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK)
-	     && function_block != BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK))
+      while (function_block != bv->static_block ()
+	     && function_block != bv->global_block ())
 	{
-	  function_block = BLOCK_SUPERBLOCK (function_block);
-	  function = BLOCK_FUNCTION (function_block);
+	  function_block = function_block->superblock ();
+	  function = function_block->function ();
 	  if (function != NULL)
 	    break;
 	}
       if (function != NULL
-	  && (BLOCK_SUPERBLOCK (function_block)
-	      == BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK))
-	  && (strcmp_iw (function->linkage_name (),
-			 GCC_FE_WRAPPER_FUNCTION)
-	      == 0))
+	  && function_block->superblock () == bv->static_block ()
+	  && 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 = gdb_val_sym->type ();
   gdb_type = check_typedef (gdb_type);
 
-  gdb_ptr_type_sym = block_lookup_symbol (block, COMPILE_I_EXPR_PTR_TYPE,
-					  symbol_name_match_type::SEARCH_NAME,
-					  VAR_DOMAIN);
+  gdb_ptr_type_sym = block_lookup_symbol (block, i_ptr_matcher, SEARCH_VFT);
   if (gdb_ptr_type_sym == NULL)
     error (_("No \"%s\" symbol found"), COMPILE_I_EXPR_PTR_TYPE);
-  gdb_ptr_type = SYMBOL_TYPE (gdb_ptr_type_sym);
+  gdb_ptr_type = gdb_ptr_type_sym->type ();
   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));
+  gdb_type_from_ptr = check_typedef (gdb_ptr_type->target_type ());
 
   if (types_deeply_equal (gdb_type, gdb_type_from_ptr))
     {
@@ -463,28 +479,28 @@ 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);
+      gdb_type_from_ptr = gdb_type_from_ptr->target_type ();
       break;
     case TYPE_CODE_FUNC:
       break;
     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,
-			   TYPE_TARGET_TYPE (gdb_type)))
+			   gdb_type->target_type ()))
     error (_("Referenced types do not match for symbols \"%s\" and \"%s\" "
 	     "in compiled module \"%s\"."),
 	   COMPILE_I_EXPR_PTR_TYPE, COMPILE_I_EXPR_VAL,
@@ -500,25 +516,25 @@ get_out_value_type (struct symbol *func_
 static struct type *
 get_regs_type (struct symbol *func_sym, struct objfile *objfile)
 {
-  struct type *func_type = SYMBOL_TYPE (func_sym);
+  struct type *func_type = func_sym->type ();
   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)
+  regs_type = check_typedef (regsp_type->target_type ());
+  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;
@@ -530,18 +546,18 @@ get_regs_type (struct symbol *func_sym,
 static void
 store_regs (struct type *regs_type, CORE_ADDR regs_base)
 {
-  struct gdbarch *gdbarch = target_gdbarch ();
+  gdbarch *gdbarch = current_inferior ()->arch ();
   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);
+      const char *reg_name = regs_type->field (fieldno).name ();
+      ULONGEST reg_bitpos = regs_type->field (fieldno).loc_bitpos ();
+      ULONGEST reg_bitsize = regs_type->field (fieldno).bitsize ();
       ULONGEST reg_offset;
-      struct type *reg_type = check_typedef (TYPE_FIELD_TYPE (regs_type,
-							      fieldno));
-      ULONGEST reg_size = TYPE_LENGTH (reg_type);
+      struct type *reg_type
+	= check_typedef (regs_type->field (fieldno).type ());
+      ULONGEST reg_size = reg_type->length ();
       int regnum;
       struct value *regval;
       CORE_ADDR inferior_addr;
@@ -554,21 +570,22 @@ 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);
 
       regval = value_from_register (reg_type, regnum, get_current_frame ());
-      if (value_optimized_out (regval))
+      if (regval->optimized_out ())
 	error (_("Register \"%s\" is optimized out."), reg_name);
-      if (!value_entirely_available (regval))
+      if (!regval->entirely_available ())
 	error (_("Register \"%s\" is not available."), reg_name);
 
       inferior_addr = regs_base + reg_offset;
-      if (0 != target_write_memory (inferior_addr, value_contents (regval),
+      if (0 != target_write_memory (inferior_addr,
+				    regval->contents ().data (),
 				    reg_size))
 	error (_("Cannot write register \"%s\" to inferior memory at %s."),
 	       reg_name, paddress (gdbarch, inferior_addr));
@@ -581,19 +598,14 @@ store_regs (struct type *regs_type, CORE
    COMPILE_I_PRINT_ADDRESS_SCOPE when COMPILE_I_PRINT_VALUE_SCOPE
    should have been used instead.  */
 
-struct compile_module *
+compile_module_up
 compile_object_load (const compile_file_names &file_names,
 		     enum compile_i_scope_types scope, void *scope_data)
 {
-  struct setup_sections_data setup_sections_data;
   CORE_ADDR regs_addr, out_value_addr = 0;
   struct symbol *func_sym;
   struct type *func_type;
-  struct bound_minimal_symbol bmsym;
-  long storage_needed;
-  asymbol **symbol_table, **symp;
-  long number_of_symbols, missing_symbols;
-  struct compile_module *retval;
+  long missing_symbols;
   struct type *regs_type, *out_value_type = NULL;
   char **matching;
   struct objfile *objfile;
@@ -603,10 +615,10 @@ 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 ()));
+	  filename.get (), bfd_errmsg (bfd_get_error ()));
 
   if (!bfd_check_format_matches (abfd.get (), bfd_object, &matching))
     error (_("\"%s\": not in loadable format: %s"),
@@ -616,84 +628,69 @@ compile_object_load (const compile_file_
   if ((bfd_get_file_flags (abfd.get ()) & (EXEC_P | DYNAMIC)) != 0)
     error (_("\"%s\": not in object format."), filename.get ());
 
-  setup_sections_data.last_size = 0;
-  setup_sections_data.last_section_first = abfd->sections;
-  setup_sections_data.last_prot = -1;
-  setup_sections_data.last_max_alignment = 1;
-  setup_sections_data.munmap_list.reset (new struct munmap_list);
-
-  bfd_map_over_sections (abfd.get (), setup_sections, &setup_sections_data);
-  setup_sections (abfd.get (), NULL, &setup_sections_data);
-
-  storage_needed = bfd_get_symtab_upper_bound (abfd.get ());
-  if (storage_needed < 0)
-    error (_("Cannot read symbols of compiled module \"%s\": %s"),
-	   filename.get (), bfd_errmsg (bfd_get_error ()));
+  struct setup_sections_data setup_sections_data (abfd.get ());
+  for (asection *sect = abfd->sections; sect != nullptr; sect = sect->next)
+    setup_sections_data.setup_one_section (sect);
+  setup_sections_data.setup_one_section (nullptr);
 
   /* 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));
+  scoped_objfile_unlinker objfile_holder (symbol_file_add_from_bfd
+					    (abfd, filename.get (),
+					     0, NULL, 0, NULL));
   objfile = objfile_holder.get ();
 
   func_sym = lookup_global_symbol_from_objfile (objfile,
 						GLOBAL_BLOCK,
 						GCC_FE_WRAPPER_FUNCTION,
-						VAR_DOMAIN).symbol;
+						SEARCH_VFT).symbol;
   if (func_sym == NULL)
     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)
+  func_type = func_sym->type ();
+  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)
     {
     case COMPILE_I_SIMPLE_SCOPE:
       expect_parameters = 1;
-      expect_return_type = builtin_type (target_gdbarch ())->builtin_void;
+      expect_return_type
+	= builtin_type (current_inferior ()->arch ())->builtin_void;
       break;
     case COMPILE_I_RAW_SCOPE:
       expect_parameters = 0;
-      expect_return_type = builtin_type (target_gdbarch ())->builtin_void;
+      expect_return_type
+	= builtin_type (current_inferior ()->arch ())->builtin_void;
       break;
     case COMPILE_I_PRINT_ADDRESS_SCOPE:
     case COMPILE_I_PRINT_VALUE_SCOPE:
       expect_parameters = 2;
-      expect_return_type = builtin_type (target_gdbarch ())->builtin_void;
+      expect_return_type
+	= builtin_type (current_inferior ()->arch ())->builtin_void;
       break;
     default:
-      internal_error (__FILE__, __LINE__, _("invalid scope %d"), scope);
+      internal_error (_("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)))
+  if (!types_deeply_equal (expect_return_type, func_type->target_type ()))
     error (_("Invalid return type of function \"%s\" in compiled "
 	     "module \"%s\"."),
 	   GCC_FE_WRAPPER_FUNCTION, objfile_name (objfile));
 
-  /* The memory may be later needed
-     by bfd_generic_get_relocated_section_contents
-     called from default_symfile_relocate.  */
-  symbol_table = (asymbol **) obstack_alloc (&objfile->objfile_obstack,
-					     storage_needed);
-  number_of_symbols = bfd_canonicalize_symtab (abfd.get (), symbol_table);
-  if (number_of_symbols < 0)
-    error (_("Cannot parse symbols of compiled module \"%s\": %s"),
-	   filename.get (), bfd_errmsg (bfd_get_error ()));
+  gdb::array_view<asymbol *> symbol_table
+    = gdb_bfd_canonicalize_symtab (abfd.get ());
 
   missing_symbols = 0;
-  for (symp = symbol_table; symp < symbol_table + number_of_symbols; symp++)
+  for (asymbol *sym : symbol_table)
     {
-      asymbol *sym = *symp;
-
       if (sym->flags != 0)
 	continue;
       sym->flags = BSF_GLOBAL;
@@ -701,9 +698,9 @@ compile_object_load (const compile_file_
       if (strcmp (sym->name, "_GLOBAL_OFFSET_TABLE_") == 0)
 	{
 	  if (compile_debug)
-	    fprintf_unfiltered (gdb_stdlog,
-				"ELF symbol \"%s\" relocated to zero\n",
-				sym->name);
+	    gdb_printf (gdb_stdlog,
+			"ELF symbol \"%s\" relocated to zero\n",
+			sym->name);
 
 	  /* It seems to be a GCC bug, with -mcmodel=large there should be no
 	     need for _GLOBAL_OFFSET_TABLE_.  Together with -fPIE the data
@@ -711,29 +708,71 @@ compile_object_load (const compile_file_
 	  sym->value = 0;
 	  continue;
 	}
-      bmsym = lookup_minimal_symbol (sym->name, NULL, NULL);
+      if (strcmp (sym->name, ".TOC.") == 0)
+	{
+	  /* Handle the .TOC. symbol as the linker would do.  Set the .TOC.
+	     sections value to 0x8000 (see bfd/elf64-ppc.c TOC_BASE_OFF);
+	     point the symbol section at the ".toc" section;
+	     and pass the toc->vma value into bfd_set_gp_value().
+	     If the .toc section is not found, use the first section
+	     with the SEC_ALLOC flag set.  In the unlikely case that
+	     we still do not have a section identified, fall back to using
+	     the "*ABS*" section.  */
+	  asection *toc_fallback = bfd_get_section_by_name(abfd.get(), ".toc");
+	  if (toc_fallback == NULL)
+	    {
+	      for (asection *tsect = abfd->sections; tsect != nullptr;
+		   tsect = tsect->next)
+		 {
+		    if (bfd_section_flags (tsect) & SEC_ALLOC)
+		       {
+			  toc_fallback = tsect;
+			  break;
+		       }
+		 }
+	    }
+
+	  if (toc_fallback == NULL)
+	    /*  If we've gotten here, we have not found a section usable
+		as a backup for the .toc section.  In this case, use the
+		absolute (*ABS*) section.  */
+	     toc_fallback = bfd_abs_section_ptr;
+
+	  sym->section = toc_fallback;
+	  sym->value = 0x8000;
+	  bfd_set_gp_value(abfd.get(), toc_fallback->vma);
+	  if (compile_debug)
+	    gdb_printf (gdb_stdlog,
+			"Connecting ELF symbol \"%s\" to the .toc section (%s)\n",
+			sym->name,
+			paddress (current_inferior ()->arch (), sym->value));
+	  continue;
+	}
+
+      bound_minimal_symbol bmsym
+	= lookup_minimal_symbol (current_program_space, sym->name);
       switch (bmsym.minsym == NULL
-	      ? mst_unknown : MSYMBOL_TYPE (bmsym.minsym))
+	      ? mst_unknown : bmsym.minsym->type ())
 	{
 	case mst_text:
 	case mst_bss:
 	case mst_data:
-	  sym->value = BMSYMBOL_VALUE_ADDRESS (bmsym);
+	  sym->value = bmsym.value_address ();
 	  if (compile_debug)
-	    fprintf_unfiltered (gdb_stdlog,
-				"ELF mst_text symbol \"%s\" relocated to %s\n",
-				sym->name,
-				paddress (target_gdbarch (), sym->value));
+	    gdb_printf (gdb_stdlog,
+			"ELF mst_text symbol \"%s\" relocated to %s\n",
+			sym->name,
+			paddress (current_inferior ()->arch (), sym->value));
 	  break;
 	case mst_text_gnu_ifunc:
-	  sym->value = gnu_ifunc_resolve_addr (target_gdbarch (),
-					       BMSYMBOL_VALUE_ADDRESS (bmsym));
+	  sym->value = gnu_ifunc_resolve_addr (current_inferior ()->arch (),
+					       bmsym.value_address ());
 	  if (compile_debug)
-	    fprintf_unfiltered (gdb_stdlog,
-				"ELF mst_text_gnu_ifunc symbol \"%s\" "
-				"relocated to %s\n",
-				sym->name,
-				paddress (target_gdbarch (), sym->value));
+	    gdb_printf (gdb_stdlog,
+			"ELF mst_text_gnu_ifunc symbol \"%s\" "
+			"relocated to %s\n",
+			sym->name,
+			paddress (current_inferior ()->arch (), sym->value));
 	  break;
 	default:
 	  warning (_("Could not find symbol \"%s\" "
@@ -745,7 +784,7 @@ compile_object_load (const compile_file_
   if (missing_symbols)
     error (_("%ld symbols were missing, cannot continue."), missing_symbols);
 
-  bfd_map_over_sections (abfd.get (), copy_sections, symbol_table);
+  bfd_map_over_sections (abfd.get (), copy_sections, symbol_table.data ());
 
   regs_type = get_regs_type (func_sym, objfile);
   if (regs_type == NULL)
@@ -753,17 +792,17 @@ compile_object_load (const compile_file_
   else
     {
       /* Use read-only non-executable memory protection.  */
-      regs_addr = gdbarch_infcall_mmap (target_gdbarch (),
-					TYPE_LENGTH (regs_type),
+      regs_addr = gdbarch_infcall_mmap (current_inferior ()->arch (),
+					regs_type->length (),
 					GDB_MMAP_PROT_READ);
       gdb_assert (regs_addr != 0);
-      setup_sections_data.munmap_list->add (regs_addr, TYPE_LENGTH (regs_type));
+      setup_sections_data.munmap_list.add (regs_addr, regs_type->length ());
       if (compile_debug)
-	fprintf_unfiltered (gdb_stdlog,
-			    "allocated %s bytes at %s for registers\n",
-			    paddress (target_gdbarch (),
-				      TYPE_LENGTH (regs_type)),
-			    paddress (target_gdbarch (), regs_addr));
+	gdb_printf (gdb_stdlog,
+		    "allocated %s bytes at %s for registers\n",
+		    paddress (current_inferior ()->arch (),
+			      regs_type->length ()),
+		    paddress (current_inferior ()->arch (), regs_addr));
       store_regs (regs_type, regs_addr);
     }
 
@@ -774,31 +813,31 @@ compile_object_load (const compile_file_
       if (out_value_type == NULL)
 	return NULL;
       check_typedef (out_value_type);
-      out_value_addr = gdbarch_infcall_mmap (target_gdbarch (),
-					     TYPE_LENGTH (out_value_type),
+      out_value_addr = gdbarch_infcall_mmap (current_inferior ()->arch (),
+					     out_value_type->length (),
 					     (GDB_MMAP_PROT_READ
 					      | GDB_MMAP_PROT_WRITE));
       gdb_assert (out_value_addr != 0);
-      setup_sections_data.munmap_list->add (out_value_addr,
-					    TYPE_LENGTH (out_value_type));
+      setup_sections_data.munmap_list.add (out_value_addr,
+					   out_value_type->length ());
       if (compile_debug)
-	fprintf_unfiltered (gdb_stdlog,
-			    "allocated %s bytes at %s for printed value\n",
-			    paddress (target_gdbarch (),
-				      TYPE_LENGTH (out_value_type)),
-			    paddress (target_gdbarch (), out_value_addr));
+	gdb_printf (gdb_stdlog,
+		    "allocated %s bytes at %s for printed value\n",
+		    paddress (current_inferior ()->arch (),
+			      out_value_type->length ()),
+		    paddress (current_inferior ()->arch (), out_value_addr));
     }
 
-  retval = XNEW (struct compile_module);
+  compile_module_up retval (new struct compile_module);
   retval->objfile = objfile_holder.release ();
-  retval->source_file = xstrdup (file_names.source_file ());
+  retval->source_file = file_names.source_file ();
   retval->func_sym = func_sym;
   retval->regs_addr = regs_addr;
   retval->scope = scope;
   retval->scope_data = scope_data;
   retval->out_value_type = out_value_type;
   retval->out_value_addr = out_value_addr;
-  retval->munmap_list_head = setup_sections_data.munmap_list.release ();
+  retval->munmap_list = std::move (setup_sections_data.munmap_list);
 
   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.20200303/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.20200303/gdb/compile/compile-object-load.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-object-load.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,10 +14,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/>.  */
 
-#ifndef COMPILE_COMPILE_OBJECT_LOAD_H
-#define COMPILE_COMPILE_OBJECT_LOAD_H
+#ifndef GDB_COMPILE_COMPILE_OBJECT_LOAD_H
+#define GDB_COMPILE_COMPILE_OBJECT_LOAD_H
 
 #include "compile-internal.h"
+#include "compile.h"
 #include <list>
 
 struct munmap_list
@@ -29,6 +30,9 @@ public:
 
   DISABLE_COPY_AND_ASSIGN (munmap_list);
 
+  munmap_list &operator= (munmap_list &&) = default;
+  munmap_list (munmap_list &&) = default;
+
   /* Add a region to the list.  */
   void add (CORE_ADDR addr, CORE_ADDR size);
 
@@ -46,11 +50,18 @@ private:
 
 struct compile_module
 {
+  compile_module () = default;
+
+  DISABLE_COPY_AND_ASSIGN (compile_module);
+
+  compile_module &operator= (compile_module &&other) = default;
+  compile_module (compile_module &&other) = default;
+
   /* objfile for the compiled module.  */
   struct objfile *objfile;
 
-  /* .c file OBJFILE was built from.  It needs to be xfree-d.  */
-  char *source_file;
+  /* .c file OBJFILE was built from.  */
+  std::string source_file;
 
   /* Inferior function GCC_FE_WRAPPER_FUNCTION.  */
   struct symbol *func_sym;
@@ -74,12 +85,14 @@ struct compile_module
   CORE_ADDR out_value_addr;
 
   /* Track inferior memory reserved by inferior mmap.  */
-  struct munmap_list *munmap_list_head;
+  struct munmap_list munmap_list;
 };
 
-extern struct compile_module *compile_object_load
+/* A unique pointer for a compile_module.  */
+typedef std::unique_ptr<compile_module> compile_module_up;
+
+extern compile_module_up 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 */
+#endif /* GDB_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.20200303/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.20200303/gdb/compile/compile-object-run.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-object-run.c	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Call module for 'compile' command.
 
-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+   Copyright (C) 2014-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,7 +17,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/>.  */
 
-#include "defs.h"
 #include "compile-object-run.h"
 #include "value.h"
 #include "infcall.h"
@@ -32,26 +31,20 @@
 
 struct do_module_cleanup
 {
+  do_module_cleanup (int *ptr, compile_module_up &&mod)
+    : executedp (ptr),
+      module (std::move (mod))
+  {
+  }
+
+  DISABLE_COPY_AND_ASSIGN (do_module_cleanup);
+
   /* Boolean to set true upon a call of do_module_cleanup.
      The pointer may be NULL.  */
   int *executedp;
 
-  /* .c file OBJFILE was built from.  It needs to be xfree-d.  */
-  char *source_file;
-
-  /* Copy from struct compile_module.  */
-  enum compile_i_scope_types scope;
-  void *scope_data;
-
-  /* Copy from struct compile_module.  */
-  struct type *out_value_type;
-  CORE_ADDR out_value_addr;
-
-  /* Copy from struct compile_module.  */
-  struct munmap_list *munmap_list_head;
-
-  /* objfile_name of our objfile.  */
-  char objfile_name_string[1];
+  /* The compile module.  */
+  compile_module_up module;
 };
 
 /* Cleanup everything after the inferior function dummy frame gets
@@ -69,40 +62,52 @@ do_module_cleanup (void *arg, int regist
 
       /* This code cannot be in compile_object_run as OUT_VALUE_TYPE
 	 no longer exists there.  */
-      if (data->scope == COMPILE_I_PRINT_ADDRESS_SCOPE
-	  || data->scope == COMPILE_I_PRINT_VALUE_SCOPE)
+      if (data->module->scope == COMPILE_I_PRINT_ADDRESS_SCOPE
+	  || data->module->scope == COMPILE_I_PRINT_VALUE_SCOPE)
 	{
 	  struct value *addr_value;
-	  struct type *ptr_type = lookup_pointer_type (data->out_value_type);
+	  struct type *ptr_type
+	    = lookup_pointer_type (data->module->out_value_type);
 
-	  addr_value = value_from_pointer (ptr_type, data->out_value_addr);
+	  addr_value = value_from_pointer (ptr_type,
+					   data->module->out_value_addr);
 
 	  /* SCOPE_DATA would be stale unless EXECUTEDP != NULL.  */
-	  compile_print_value (value_ind (addr_value), data->scope_data);
+	  compile_print_value (value_ind (addr_value),
+			       data->module->scope_data);
 	}
     }
 
-  for (objfile *objfile : current_program_space->objfiles ())
-    if ((objfile->flags & OBJF_USERLOADED) == 0
-        && (strcmp (objfile_name (objfile), data->objfile_name_string) == 0))
-      {
-	delete objfile;
+  objfile *objfile = data->module->objfile;
+  gdb_assert (objfile != nullptr);
 
-	/* It may be a bit too pervasive in this dummy_frame dtor callback.  */
-	clear_symtab_users (0);
+  /* We have to make a copy of the name so that we can unlink the
+     underlying file -- removing the objfile will cause the name to be
+     freed, so we can't simply keep a reference to it.  */
+  std::string objfile_name_s = objfile_name (objfile);
 
-	break;
-      }
+  objfile->unlink ();
 
-  /* Delete the .c file.  */
-  unlink (data->source_file);
-  xfree (data->source_file);
+  /* It may be a bit too pervasive in this dummy_frame dtor callback.  */
+  clear_symtab_users (0);
 
-  delete data->munmap_list_head;
+  /* Delete the .c file.  */
+  unlink (data->module->source_file.c_str ());
 
   /* Delete the .o file.  */
-  unlink (data->objfile_name_string);
-  xfree (data);
+  unlink (objfile_name_s.c_str ());
+
+  delete data;
+}
+
+/* Create a copy of FUNC_TYPE that is independent of OBJFILE.  */
+
+static type *
+create_copied_type_recursive (objfile *objfile, type *func_type)
+{
+  copied_types_hash_t copied_types;
+
+  return copy_type_recursive (func_type, copied_types);
 }
 
 /* Perform inferior call of MODULE.  This function may throw an error.
@@ -112,64 +117,50 @@ do_module_cleanup (void *arg, int regist
    longer touch MODULE's memory after this function has been called.  */
 
 void
-compile_object_run (struct compile_module *module)
+compile_object_run (compile_module_up &&module)
 {
   struct value *func_val;
   struct do_module_cleanup *data;
-  const char *objfile_name_s = objfile_name (module->objfile);
   int dtor_found, executed = 0;
   struct symbol *func_sym = module->func_sym;
   CORE_ADDR regs_addr = module->regs_addr;
   struct objfile *objfile = module->objfile;
 
-  data = (struct do_module_cleanup *) xmalloc (sizeof (*data)
-					       + strlen (objfile_name_s));
-  data->executedp = &executed;
-  data->source_file = xstrdup (module->source_file);
-  strcpy (data->objfile_name_string, objfile_name_s);
-  data->scope = module->scope;
-  data->scope_data = module->scope_data;
-  data->out_value_type = module->out_value_type;
-  data->out_value_addr = module->out_value_addr;
-  data->munmap_list_head = module->munmap_list_head;
-
-  xfree (module->source_file);
-  xfree (module);
-  module = NULL;
+  data = new struct do_module_cleanup (&executed, std::move (module));
 
   try
     {
-      struct type *func_type = SYMBOL_TYPE (func_sym);
-      htab_t copied_types;
+      struct type *func_type = func_sym->type ();
       int current_arg = 0;
       struct value **vargs;
 
-      /* OBJFILE may disappear while FUNC_TYPE still will be in use.  */
-      copied_types = create_copied_types_hash (objfile);
-      func_type = copy_type_recursive (objfile, func_type, copied_types);
-      htab_delete (copied_types);
+      /* OBJFILE may disappear while FUNC_TYPE is still in use as a
+	 result of the call to DO_MODULE_CLEANUP below, so we need a copy
+	 that does not depend on the objfile in anyway.  */
+      func_type = create_copied_type_recursive (objfile, func_type);
 
-      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)));
+				   func_sym->value_block ()->entry_pc ());
 
-      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);
+	  gdb_assert (data->module->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->module->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.20200303/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.20200303/gdb/compile/compile-object-run.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/compile-object-run.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This 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,11 +14,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/>.  */
 
-#ifndef COMPILE_COMPILE_OBJECT_RUN_H
-#define COMPILE_COMPILE_OBJECT_RUN_H
+#ifndef GDB_COMPILE_COMPILE_OBJECT_RUN_H
+#define GDB_COMPILE_COMPILE_OBJECT_RUN_H
 
 #include "compile-object-load.h"
 
-extern void compile_object_run (struct compile_module *module);
+extern void compile_object_run (compile_module_up &&module);
 
-#endif /* COMPILE_COMPILE_OBJECT_RUN_H */
+#endif /* GDB_COMPILE_COMPILE_OBJECT_RUN_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.20200303/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.20200303/gdb/compile/gcc-c-plugin.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/gcc-c-plugin.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GCC C plug-in wrapper for GDB.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2025 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/>.  */
 
-#ifndef COMPILE_GCC_C_PLUGIN_H
-#define COMPILE_GCC_C_PLUGIN_H
+#ifndef GDB_COMPILE_GCC_C_PLUGIN_H
+#define GDB_COMPILE_GCC_C_PLUGIN_H
 
 #include "compile-internal.h"
 
@@ -68,4 +68,4 @@ private:
   struct gcc_c_context *m_context;
 };
 
-#endif /* COMPILE_GCC_C_PLUGIN_H */
+#endif /* GDB_COMPILE_GCC_C_PLUGIN_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.20200303/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.20200303/gdb/compile/gcc-cp-plugin.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/compile/gcc-cp-plugin.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* GCC C++ plug-in wrapper for GDB.
 
-   Copyright (C) 2018-2020 Free Software Foundation, Inc.
+   Copyright (C) 2018-2025 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/>.  */
 
-#ifndef COMPILE_GCC_CP_PLUGIN_H
-#define COMPILE_GCC_CP_PLUGIN_H
+#ifndef GDB_COMPILE_GCC_CP_PLUGIN_H
+#define GDB_COMPILE_GCC_CP_PLUGIN_H
 
 /* A class representing the GCC C++ plug-in.  */
 
@@ -87,4 +87,4 @@ private:
   struct gcc_cp_context *m_context;
 };
 
-#endif /* COMPILE_GCC_CP_PLUGIN_H */
+#endif /* GDB_COMPILE_GCC_CP_PLUGIN_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.20200303/gdb/complaints.c ./gdb/complaints.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/complaints.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/complaints.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,15 +17,20 @@
    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 "complaints.h"
 #include "command.h"
-#include "gdbcmd.h"
-#include <unordered_map>
+#include "cli/cli-cmds.h"
+#include "run-on-main-thread.h"
+#include "top.h"
+#include "gdbsupport/selftest.h"
+#include "gdbsupport/unordered_map.h"
+#if CXX_STD_THREAD
+#include <mutex>
+#endif
 
 /* Map format strings to counters.  */
 
-static std::unordered_map<const char *, int> counters;
+static gdb::unordered_map<const char *, int> counters;
 
 /* How many complaints about a particular thing should be printed
    before we stop whining about it?  Default is no whining at all,
@@ -33,6 +38,10 @@ static std::unordered_map<const char *,
 
 int stop_whining = 0;
 
+#if CXX_STD_THREAD
+static std::mutex complaint_mutex;
+#endif /* CXX_STD_THREAD */
+
 /* See complaints.h.  */
 
 void
@@ -40,18 +49,24 @@ complaint_internal (const char *fmt, ...
 {
   va_list args;
 
-  if (++counters[fmt] > stop_whining)
-    return;
+  {
+#if CXX_STD_THREAD
+    std::lock_guard<std::mutex> guard (complaint_mutex);
+#endif
+    if (++counters[fmt] > stop_whining)
+      return;
+  }
 
   va_start (args, fmt);
 
-  if (deprecated_warning_hook)
-    (*deprecated_warning_hook) (fmt, args);
+  warning_hook_handler handler = get_warning_hook_handler ();
+  if (handler != nullptr)
+    handler->warn (fmt, args);
   else
     {
-      fputs_filtered (_("During symbol reading: "), gdb_stderr);
-      vfprintf_filtered (gdb_stderr, fmt, args);
-      fputs_filtered ("\n", gdb_stderr);
+      gdb_puts (_("During symbol reading: "), gdb_stderr);
+      gdb_vprintf (gdb_stderr, fmt, args);
+      gdb_puts ("\n", gdb_stderr);
     }
 
   va_end (args);
@@ -65,17 +80,115 @@ clear_complaints ()
   counters.clear ();
 }
 
+/* See complaints.h.  */
+
+thread_local complaint_interceptor *complaint_interceptor::g_complaint_interceptor;
+
+/* See complaints.h.  */
+
+complaint_interceptor::complaint_interceptor ()
+  : m_saved_complaint_interceptor (&g_complaint_interceptor, this),
+    m_saved_warning_hook (this)
+{
+}
+
+/* A helper that wraps a warning hook.  */
+
+static void
+wrap_warning_hook (warning_hook_handler hook, ...)
+{
+  va_list args;
+  va_start (args, hook);
+  hook->warn ("%s", args);
+  va_end (args);
+}
+
+/* See complaints.h.  */
+
+void
+re_emit_complaints (const complaint_collection &complaints)
+{
+  gdb_assert (is_main_thread ());
+
+  for (const std::string &str : complaints)
+    {
+      warning_hook_handler handler = get_warning_hook_handler ();
+      if (handler != nullptr)
+	wrap_warning_hook (handler, str.c_str ());
+      else
+	gdb_printf (gdb_stderr, _("During symbol reading: %s\n"),
+		    str.c_str ());
+    }
+}
+
+/* See complaints.h.  */
+
+void
+complaint_interceptor::warn (const char *fmt, va_list args)
+{
+#if CXX_STD_THREAD
+  std::lock_guard<std::mutex> guard (complaint_mutex);
+#endif
+  g_complaint_interceptor->m_complaints.insert (string_vprintf (fmt, args));
+}
+
 static void
 complaints_show_value (struct ui_file *file, int from_tty,
 		       struct cmd_list_element *cmd, const char *value)
 {
-  fprintf_filtered (file, _("Max number of complaints about incorrect"
-			    " symbols is %s.\n"),
-		    value);
+  gdb_printf (file, _("Max number of complaints about incorrect"
+		      " symbols is %s.\n"),
+	      value);
 }
 
-void
-_initialize_complaints (void)
+#if GDB_SELF_TEST
+namespace selftests {
+
+/* Entry point for complaints unit tests.  */
+
+static void
+test_complaints ()
+{
+  gdb::unordered_map<const char *, int> tmp;
+  scoped_restore reset_counters = make_scoped_restore (&counters, tmp);
+  scoped_restore reset_stop_whining = make_scoped_restore (&stop_whining, 2);
+
+#define CHECK_COMPLAINT(STR, CNT)					\
+  do									\
+    {									\
+      std::string output;						\
+      execute_fn_to_string (output, []() { complaint (STR); }, false);	\
+      std::string expected						\
+	= _("During symbol reading: ") + std::string (STR "\n");	\
+      SELF_CHECK (output == expected);					\
+      SELF_CHECK (counters[STR] == CNT);				\
+    } while (0)
+
+#define CHECK_COMPLAINT_SILENT(STR, CNT)				\
+  do									\
+    {									\
+      std::string output;						\
+      execute_fn_to_string (output, []() { complaint (STR); }, false);	\
+      SELF_CHECK (output.empty ());					\
+      SELF_CHECK (counters[STR] == CNT);				\
+    } while (0)
+
+  CHECK_COMPLAINT ("maintenance complaint 0", 1);
+  CHECK_COMPLAINT ("maintenance complaint 0", 2);
+  CHECK_COMPLAINT_SILENT ("maintenance complaint 0", 3);
+  CHECK_COMPLAINT ("maintenance complaint 1", 1);
+  clear_complaints ();
+  CHECK_COMPLAINT ("maintenance complaint 0", 1);
+
+#undef CHECK_COMPLAINT
+#undef CHECK_COMPLAINT_SILENT
+}
+
+
+} /* namespace selftests */
+#endif /* GDB_SELF_TEST */
+
+INIT_GDB_FILE (complaints)
 {
   add_setshow_zinteger_cmd ("complaints", class_support, 
 			    &stop_whining, _("\
@@ -83,4 +196,8 @@ Set max number of complaints about incor
 Show max number of complaints about incorrect symbols."), NULL,
 			    NULL, complaints_show_value,
 			    &setlist, &showlist);
+
+#if GDB_SELF_TEST
+  selftests::register_test ("complaints", selftests::test_complaints);
+#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.20200303/gdb/complaints.h ./gdb/complaints.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/complaints.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/complaints.h	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,14 +17,29 @@
    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_COMPLAINTS_H
+#define GDB_COMPLAINTS_H
 
-#if !defined (COMPLAINTS_H)
-#define COMPLAINTS_H
+#include "gdbsupport/scoped_restore.h"
+#include "gdbsupport/unordered_set.h"
 
 /* Helper for complaint.  */
 extern void complaint_internal (const char *fmt, ...)
   ATTRIBUTE_PRINTF (1, 2);
 
+/* This controls whether complaints are emitted.  */
+
+extern int stop_whining;
+
+/* Return true if complaints are enabled.  This can be used to guard code
+   that is used only to decide whether to issue a complaint.  */
+
+static inline bool
+have_complaint ()
+{
+  return stop_whining > 0;
+}
+
 /* 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,9 +47,7 @@ extern void complaint_internal (const ch
 #define complaint(FMT, ...)					\
   do								\
     {								\
-      extern int stop_whining;					\
-								\
-      if (stop_whining > 0)					\
+      if (have_complaint ())					\
 	complaint_internal (FMT, ##__VA_ARGS__);		\
     }								\
   while (0)
@@ -44,5 +57,56 @@ extern void complaint_internal (const ch
 
 extern void clear_complaints ();
 
+/* Type of collected complaints.  */
+
+typedef gdb::unordered_set<std::string> complaint_collection;
+
+/* A class that can handle calls to complaint from multiple threads.
+   When this is instantiated, it hooks into the complaint mechanism,
+   so the 'complaint' macro can continue to be used.  It collects all
+   the complaints (and warnings) emitted while it is installed, and
+   these can be retrieved before the object is destroyed.  This is
+   intended for use from worker threads (though it will also work on
+   the main thread).  Messages can be re-emitted on the main thread
+   using re_emit_complaints, see below.  */
+
+class complaint_interceptor final : public warning_hook_handler_type
+{
+public:
+
+  complaint_interceptor ();
+  ~complaint_interceptor () = default;
+
+  DISABLE_COPY_AND_ASSIGN (complaint_interceptor);
+
+  complaint_collection &&release ()
+  {
+    return std::move (m_complaints);
+  }
+
+private:
+
+  /* The issued complaints.  */
+  complaint_collection m_complaints;
+
+  /* The saved value of g_complaint_interceptor.  */
+  scoped_restore_tmpl<complaint_interceptor *> m_saved_complaint_interceptor;
+
+  /* A helper function that is used by the 'complaint' implementation
+     to issue a complaint.  */
+  void warn (const char *, va_list) override
+    ATTRIBUTE_PRINTF (2, 0);
+
+  /* This object.  Used by the static callback function.  */
+  static thread_local complaint_interceptor *g_complaint_interceptor;
+
+  /* Object to initialise the warning hook.  */
+  scoped_restore_warning_hook m_saved_warning_hook;
+};
+
+/* Re-emit complaints that were collected by complaint_interceptor.
+   This can only be called on the main thread.  */
+
+extern void re_emit_complaints (const complaint_collection &);
 
-#endif /* !defined (COMPLAINTS_H) */
+#endif /* GDB_COMPLAINTS_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.20200303/gdb/completer.c ./gdb/completer.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/completer.c	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/completer.c	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -16,11 +16,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/>.  */
 
-#include "defs.h"
 #include "symtab.h"
 #include "gdbtypes.h"
 #include "expression.h"
-#include "filenames.h"		/* For DOSish file names.  */
+#include "filenames.h"
 #include "language.h"
 #include "gdbsupport/gdb_signals.h"
 #include "target.h"
@@ -31,12 +30,14 @@
 #include <algorithm>
 #include "linespec.h"
 #include "cli/cli-decode.h"
+#include "gdbsupport/gdb_tilde_expand.h"
+#include "readline/readline.h"
 
 /* FIXME: This is needed because of lookup_cmd_1 ().  We should be
    calling a hook instead so we eliminate the CLI dependency.  */
-#include "gdbcmd.h"
+#include "cli/cli-cmds.h"
 
-/* Needed for rl_completer_word_break_characters() and for
+/* Needed for rl_completer_word_break_characters and for
    rl_filename_completion_function.  */
 #include "readline/readline.h"
 
@@ -45,6 +46,68 @@
 
 #include "completer.h"
 
+/* Forward declarations.  */
+static const char *completion_find_completion_word (completion_tracker &tracker,
+						    const char *text,
+						    int *quote_char,
+						    bool *found_any_quoting);
+
+static void set_rl_completer_word_break_characters (const char *break_chars);
+
+static bool gdb_path_isdir (const char *filename);
+
+/* 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 ());
+  }
+
+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 +158,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?).  */
@@ -123,18 +186,27 @@ static const char gdb_completer_file_nam
   " \t\n*|\"';:?><";
 #endif
 
-/* Characters that can be used to quote completion strings.  Note that
-   we can't include '"' because the gdb C parser treats such quoted
+/* When completing on file names, for commands that don't accept quoted
+   file names, the only character that can be used as a word separator is
+   the path separator.  Every other character is treated as a literal
+   character within the filename.  */
+static const char gdb_completer_path_break_characters[] =
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+  ";";
+#else
+  ":";
+#endif
+
+/* Characters that can be used to quote expressions.  Note that we can't
+   include '"' (double quote) because the gdb C parser treats such quoted
    sequences as strings.  */
-static const char gdb_completer_quote_characters[] = "'";
-
-/* Accessor for some completer data that may interest other files.  */
+static const char gdb_completer_expression_quote_characters[] = "'";
 
-const char *
-get_gdb_completer_quote_characters (void)
-{
-  return gdb_completer_quote_characters;
-}
+/* Characters that can be used to quote file names.  We do allow '"'
+   (double quotes) in this set as file names are not passed through the C
+   expression parser.  */
+static const char gdb_completer_file_name_quote_characters[] = "'\"";
+
 
 /* This can be used for functions which don't want to complete on
    symbols but don't want to complete on anything else either.  */
@@ -146,20 +218,302 @@ noop_completer (struct cmd_list_element
 {
 }
 
-/* Complete on filenames.  */
+/* Return 1 if the character at EINDEX in STRING is quoted (there is an
+   unclosed quoted string), or if the character at EINDEX is quoted by a
+   backslash.  */
 
-void
-filename_completer (struct cmd_list_element *ignore,
-		    completion_tracker &tracker,
-		    const char *text, const char *word)
+static int
+gdb_completer_file_name_char_is_quoted (char *string, int eindex)
+{
+  for (int i = 0; i <= eindex && string[i] != '\0'; )
+    {
+      char c = string[i];
+
+      if (c == '\\')
+	{
+	  /* The backslash itself is not quoted.  */
+	  if (i >= eindex)
+	    return 0;
+	  ++i;
+	  /* But the next character is.  */
+	  if (i >= eindex)
+	    return 1;
+	  if (string[i] == '\0')
+	    return 0;
+	  ++i;
+	  continue;
+	}
+      else if (strchr (rl_completer_quote_characters, c) != nullptr)
+	{
+	  /* This assumes that extract_string_maybe_quoted can handle a
+	     string quoted with character C.  Currently this is true as the
+	     only characters we put in rl_completer_quote_characters are
+	     single and/or double quotes, both of which
+	     extract_string_maybe_quoted can handle.  */
+	  gdb_assert (c == '"' || c == '\'');
+	  const char *tmp = &string[i];
+	  (void) extract_string_maybe_quoted (&tmp);
+	  i = tmp - string;
+
+	  /* Consider any character within the string we just skipped over
+	     as quoted, though this might not be completely correct; the
+	     opening and closing quotes are not themselves quoted.  But so
+	     far this doesn't seem to have caused any issues.  */
+	  if (i > eindex)
+	    return 1;
+	}
+      else
+	++i;
+    }
+
+  return 0;
+}
+
+/* Removing character escaping from FILENAME.  QUOTE_CHAR is the quote
+   character around FILENAME or the null-character if there is no quoting
+   around FILENAME.  */
+
+static char *
+gdb_completer_file_name_dequote (char *filename, int quote_char)
+{
+  std::string tmp;
+
+  if (quote_char == '\'')
+    {
+      /* There is no backslash escaping within a single quoted string.  In
+	 this case we can just return the input string.  */
+      tmp = filename;
+    }
+  else if (quote_char == '"')
+    {
+      /* Remove escaping from a double quoted string.  */
+      for (const char *input = filename;
+	   *input != '\0';
+	   ++input)
+	{
+	  if (input[0] == '\\'
+	      && input[1] != '\0'
+	      && strchr ("\"\\", input[1]) != nullptr)
+	    ++input;
+	  tmp += *input;
+	}
+    }
+  else
+    {
+      gdb_assert (quote_char == '\0');
+
+      /* Remove escaping from an unquoted string.  */
+      for (const char *input = filename;
+	   *input != '\0';
+	   ++input)
+	{
+	  /* We allow anything to be escaped in an unquoted string.  */
+	  if (*input == '\\')
+	    {
+	      ++input;
+	      if (*input == '\0')
+		break;
+	    }
+
+	  tmp += *input;
+	}
+    }
+
+  return strdup (tmp.c_str ());
+}
+
+/* Implement readline's rl_directory_rewrite_hook.  Remove any quoting from
+   the string *DIRNAME,update *DIRNAME, and return non-zero.  If *DIRNAME
+   doesn't need updating then return zero.  See readline docs for more
+   information.  */
+
+static int
+gdb_completer_directory_rewrite (char **dirname)
+{
+  if (!rl_completion_found_quote)
+    return 0;
+
+  int quote_char = rl_completion_quote_character;
+  char *new_dirname
+    = gdb_completer_file_name_dequote (*dirname, quote_char);
+  free (*dirname);
+  *dirname = new_dirname;
+
+  return 1;
+}
+
+/* Apply character escaping to the filename in TEXT and return a newly
+   allocated buffer containing the possibly updated filename.
+
+   QUOTE_CHAR is the quote character surrounding TEXT, or the
+   null-character if there are no quotes around TEXT.  */
+
+static char *
+gdb_completer_file_name_quote_1 (const char *text, char quote_char)
 {
-  int subsequent_name;
+  std::string str;
+
+  if (quote_char == '\'')
+    {
+      /* There is no backslash escaping permitted within a single quoted
+	 string, so in this case we can just return the input string.  */
+      str = text;
+    }
+  else if (quote_char == '"')
+    {
+      /* Add escaping for a double quoted filename.  */
+      for (const char *input = text;
+	   *input != '\0';
+	   ++input)
+	{
+	  if (strchr ("\"\\", *input) != nullptr)
+	    str += '\\';
+	  str += *input;
+	}
+    }
+  else
+    {
+      gdb_assert (quote_char == '\0');
 
-  subsequent_name = 0;
+      /* Add escaping for an unquoted filename.  */
+      for (const char *input = text;
+	   *input != '\0';
+	   ++input)
+	{
+	  if (strchr (" \t\n\\\"'", *input)
+	      != nullptr)
+	    str += '\\';
+	  str += *input;
+	}
+    }
+
+  return strdup (str.c_str ());
+}
+
+/* Apply character escaping to the filename in TEXT.  QUOTE_PTR points to
+   the quote character surrounding TEXT, or points to the null-character if
+   there are no quotes around TEXT.  MATCH_TYPE will be one of the readline
+   constants SINGLE_MATCH or MULTI_MATCH depending on if there is one or
+   many completions.
+
+   We also add a trailing character, either a '/' of closing quote, if
+   MATCH_TYPE is 'SINGLE_MATCH'.  We do this because readline will only
+   add this trailing character when completing at the end of a line.  */
+
+static char *
+gdb_completer_file_name_quote (char *text, int match_type, char *quote_ptr)
+{
+  char *result = gdb_completer_file_name_quote_1 (text, *quote_ptr);
+
+  if (match_type == SINGLE_MATCH)
+    {
+      /* Add trailing '/' if TEXT is a directory, otherwise add a closing
+	 quote character matching *QUOTE_PTR.  */
+      char c = (gdb_path_isdir (gdb_tilde_expand (text).c_str ())
+		? '/' : *quote_ptr);
+
+      /* Reallocate RESULT adding C to the end.  But only if C is
+	 interesting, otherwise we can save the reallocation.  */
+      if (c != '\0')
+	{
+	  char buf[2] = { c, '\0' };
+	  result = reconcat (result, result, buf, nullptr);
+	}
+    }
+
+  return result;
+}
+
+/* The function is used to update the completion word MATCH before
+   displaying it to the user in the 'complete' command output.  This
+   function is only used for formatting filename or directory names.
+
+   This function checks to see if the completion word MATCH is a directory,
+   in which case a trailing "/" (forward-slash) is added, otherwise
+   QUOTE_CHAR is added as a trailing quote.
+
+   When ADD_ESCAPES is true any special characters (e.g. whitespace,
+   quotes) will be escaped with a backslash.  See
+   gdb_completer_file_name_quote_1 for full details on escaping.  When
+   ADD_ESCAPES is false then no escaping will be added and MATCH (with the
+   correct trailing character) will be used unmodified.
+
+   Return the updated completion word as a string.  */
+
+static std::string
+filename_match_formatter_1 (const char *match, char quote_char,
+			    bool add_escapes)
+{
+  std::string result;
+  if (add_escapes)
+    {
+      gdb::unique_xmalloc_ptr<char> quoted_match
+	(gdb_completer_file_name_quote_1 (match, quote_char));
+      result = quoted_match.get ();
+    }
+  else
+    result = match;
+
+  if (gdb_path_isdir (gdb_tilde_expand (match).c_str ()))
+    result += "/";
+  else
+    result += quote_char;
+
+  return result;
+}
+
+/* The formatting function used to format the results of a 'complete'
+   command when the result is a filename, but the filename should not have
+   any escape characters added.  Most commands that accept a filename don't
+   expect the filename to be quoted or to contain escape characters.
+
+   See filename_match_formatter_1 for more argument details.  */
+
+static std::string
+filename_unquoted_match_formatter (const char *match, char quote_char)
+{
+  return filename_match_formatter_1 (match, quote_char, false);
+}
+
+/* The formatting function used to format the results of a 'complete'
+   command when the result is a filename, and the filename should have any
+   special character (e.g. whitespace, quotes) within it escaped with a
+   backslash.  A limited number of commands accept this style of filename
+   argument.
+
+   See filename_match_formatter_1 for more argument details.  */
+
+static std::string
+filename_maybe_quoted_match_formatter (const char *match, char quote_char)
+{
+  return filename_match_formatter_1 (match, quote_char, true);
+}
+
+/* Generate filename completions of WORD, storing the completions into
+   TRACKER.  This is used for generating completions for commands that
+   only accept unquoted filenames as well as for commands that accept
+   quoted and escaped filenames.
+
+   When QUOTE_MATCHES is true TRACKER will be given a match formatter
+   function which will add escape characters (if needed) in the results.
+   When QUOTE_MATCHES is false the match formatter provided will not add
+   any escaping to the results.  */
+
+static void
+filename_completer_generate_completions (completion_tracker &tracker,
+					 const char *word,
+					 bool quote_matches)
+{
+  if (quote_matches)
+    tracker.set_match_format_func (filename_maybe_quoted_match_formatter);
+  else
+    tracker.set_match_format_func (filename_unquoted_match_formatter);
+
+  int subsequent_name = 0;
   while (1)
     {
       gdb::unique_xmalloc_ptr<char> p_rl
-	(rl_filename_completion_function (text, subsequent_name));
+	(rl_filename_completion_function (word, subsequent_name));
       if (p_rl == NULL)
 	break;
       /* We need to set subsequent_name to a non-zero value before the
@@ -168,43 +522,74 @@ filename_completer (struct cmd_list_elem
 	 will loop indefinitely.  */
       subsequent_name = 1;
       /* Like emacs, don't complete on old versions.  Especially
-         useful in the "source" command.  */
+	 useful in the "source" command.  */
       const char *p = p_rl.get ();
       if (p[strlen (p) - 1] == '~')
 	continue;
 
       tracker.add_completion
-	(make_completion_match_str (std::move (p_rl), text, word));
+	(make_completion_match_str (std::move (p_rl), word, word));
     }
-#if 0
-  /* There is no way to do this just long enough to affect quote
-     inserting without also affecting the next completion.  This
-     should be fixed in readline.  FIXME.  */
-  /* Ensure that readline does the right thing
-     with respect to inserting quotes.  */
-  rl_completer_word_break_characters = "";
-#endif
 }
 
-/* The corresponding completer_handle_brkchars
-   implementation.  */
+/* The brkchars callback used when completing filenames that can be
+   quoted.  */
 
 static void
-filename_completer_handle_brkchars (struct cmd_list_element *ignore,
-				    completion_tracker &tracker,
-				    const char *text, const char *word)
+filename_maybe_quoted_completer_handle_brkchars
+	(struct cmd_list_element *ignore, completion_tracker &tracker,
+	 const char *text, const char *word)
 {
   set_rl_completer_word_break_characters
     (gdb_completer_file_name_break_characters);
+
+  rl_completer_quote_characters = gdb_completer_file_name_quote_characters;
+  rl_char_is_quoted_p = gdb_completer_file_name_char_is_quoted;
+}
+
+/* Complete on filenames.  This is for commands that accepts possibly
+   quoted filenames.  */
+
+void
+filename_maybe_quoted_completer (struct cmd_list_element *ignore,
+				 completion_tracker &tracker,
+				 const char *text, const char *word)
+{
+  filename_maybe_quoted_completer_handle_brkchars (ignore, tracker,
+						   text, word);
+  filename_completer_generate_completions (tracker, word, true);
 }
 
-/* Possible values for the found_quote flags word used by the completion
-   functions.  It says what kind of (shell-like) quoting we found anywhere
-   in the line. */
-#define RL_QF_SINGLE_QUOTE      0x01
-#define RL_QF_DOUBLE_QUOTE      0x02
-#define RL_QF_BACKSLASH         0x04
-#define RL_QF_OTHER_QUOTE       0x08
+/* The brkchars callback used by commands that don't accept quoted
+   filenames.  */
+
+static void
+deprecated_filename_completer_handle_brkchars
+	(struct cmd_list_element *ignore, completion_tracker &tracker,
+	 const char *text, const char *word)
+{
+  gdb_assert (word == nullptr);
+
+  set_rl_completer_word_break_characters (gdb_completer_path_break_characters);
+  rl_completer_quote_characters = nullptr;
+  rl_filename_quoting_desired = 0;
+
+  tracker.set_use_custom_word_point (true);
+  word = advance_to_deprecated_filename_complete_word_point (tracker, text);
+  deprecated_filename_completer (ignore, tracker, text, word);
+}
+
+/* See completer.h.  */
+
+void
+deprecated_filename_completer
+	(struct cmd_list_element *ignore, completion_tracker &tracker,
+	 const char *text, const char *word)
+{
+  gdb_assert (tracker.use_custom_word_point ());
+  gdb_assert (word != nullptr);
+  filename_completer_generate_completions (tracker, word, false);
+}
 
 /* Find the bounds of the current word for completion purposes, and
    return a pointer to the end of the word.  This mimics (and is a
@@ -218,7 +603,9 @@ filename_completer_handle_brkchars (stru
    boundaries of the current word.  QC, if non-null, is set to the
    opening quote character if we found an unclosed quoted substring,
    '\0' otherwise.  DP, if non-null, is set to the value of the
-   delimiter character that caused a word break.  */
+   delimiter character that caused a word break.  FOUND_ANY_QUOTING, if
+   non-null, is set to true if we found any quote characters (single or
+   double quotes, or a backslash) while finding the completion word.  */
 
 struct gdb_rl_completion_word_info
 {
@@ -229,10 +616,10 @@ struct gdb_rl_completion_word_info
 
 static const char *
 gdb_rl_find_completion_word (struct gdb_rl_completion_word_info *info,
-			     int *qc, int *dp,
+			     int *qc, int *dp, bool *found_any_quoting,
 			     const char *line_buffer)
 {
-  int scan, end, found_quote, delimiter, pass_next, isbrk;
+  int scan, end, delimiter, pass_next, isbrk;
   char quote_char;
   const char *brkchars;
   int point = strlen (line_buffer);
@@ -241,6 +628,8 @@ gdb_rl_find_completion_word (struct gdb_
      the empty string.  */
   if (point == 0)
     {
+      if (found_any_quoting != nullptr)
+	*found_any_quoting = false;
       if (qc != NULL)
 	*qc = '\0';
       if (dp != NULL)
@@ -249,8 +638,9 @@ gdb_rl_find_completion_word (struct gdb_
     }
 
   end = point;
-  found_quote = delimiter = 0;
+  delimiter = 0;
   quote_char = '\0';
+  bool found_quote = false;
 
   brkchars = info->word_break_characters;
 
@@ -259,8 +649,6 @@ gdb_rl_find_completion_word (struct gdb_
       /* We have a list of characters which can be used in pairs to
 	 quote substrings for the completer.  Try to find the start of
 	 an unclosed quoted substring.  */
-      /* FOUND_QUOTE is set so we know what kind of quotes we
-	 found.  */
       for (scan = pass_next = 0;
 	   scan < end;
 	   scan++)
@@ -278,7 +666,7 @@ gdb_rl_find_completion_word (struct gdb_
 	  if (quote_char != '\'' && line_buffer[scan] == '\\')
 	    {
 	      pass_next = 1;
-	      found_quote |= RL_QF_BACKSLASH;
+	      found_quote = true;
 	      continue;
 	    }
 
@@ -299,13 +687,7 @@ gdb_rl_find_completion_word (struct gdb_
 	      /* Found start of a quoted substring.  */
 	      quote_char = line_buffer[scan];
 	      point = scan + 1;
-	      /* Shell-like quoting conventions.  */
-	      if (quote_char == '\'')
-		found_quote |= RL_QF_SINGLE_QUOTE;
-	      else if (quote_char == '"')
-		found_quote |= RL_QF_DOUBLE_QUOTE;
-	      else
-		found_quote |= RL_QF_OTHER_QUOTE;
+	      found_quote = true;
 	    }
 	}
     }
@@ -319,8 +701,22 @@ gdb_rl_find_completion_word (struct gdb_
 	{
 	  scan = line_buffer[point];
 
-	  if (strchr (brkchars, scan) != 0)
-	    break;
+	  if (strchr (brkchars, scan) == 0)
+	    continue;
+
+	  /* Call the application-specific function to tell us whether
+	     this word break character is quoted and should be skipped.
+	     The const_cast is needed here to comply with the readline
+	     API.  The only function we register for rl_char_is_quoted_p
+	     treats the input buffer as 'const', so we're OK.  */
+	  if (rl_char_is_quoted_p != nullptr && found_quote
+	      && (*rl_char_is_quoted_p) (const_cast<char *> (line_buffer),
+					 point))
+	    continue;
+
+	  /* Convoluted code, but it avoids an n^2 algorithm with calls
+	     to char_is_quoted.  */
+	  break;
 	}
     }
 
@@ -344,6 +740,8 @@ gdb_rl_find_completion_word (struct gdb_
 	}
     }
 
+  if (found_any_quoting != nullptr)
+    *found_any_quoting = found_quote;
   if (qc != NULL)
     *qc = quote_char;
   if (dp != NULL)
@@ -354,22 +752,34 @@ gdb_rl_find_completion_word (struct gdb_
 
 /* Find the completion word point for TEXT, emulating the algorithm
    readline uses to find the word point, using WORD_BREAK_CHARACTERS
-   as word break characters.  */
+   as word break characters.
+
+   The output argument *FOUND_ANY_QUOTING is set to true if the completion
+   word found either has an opening quote, or contains backslash escaping
+   within it.  Otherwise *FOUND_ANY_QUOTING is set to false.
+
+   The output argument *QC is set to the opening quote character for the
+   completion word that is found, or to the null character if there is no
+   opening quote.  */
 
 static const char *
 advance_to_completion_word (completion_tracker &tracker,
 			    const char *word_break_characters,
-			    const char *text)
+			    const char *quote_characters,
+			    const char *text,
+			    bool *found_any_quoting,
+			    int *qc)
 {
   gdb_rl_completion_word_info info;
 
   info.word_break_characters = word_break_characters;
-  info.quote_characters = gdb_completer_quote_characters;
+  info.quote_characters = quote_characters;
   info.basic_quote_characters = rl_basic_quote_characters;
 
   int delimiter;
   const char *start
-    = gdb_rl_find_completion_word (&info, NULL, &delimiter, text);
+    = gdb_rl_find_completion_word (&info, qc, &delimiter, found_any_quoting,
+				   text);
 
   tracker.advance_custom_word_point_by (start - text);
 
@@ -388,18 +798,56 @@ const char *
 advance_to_expression_complete_word_point (completion_tracker &tracker,
 					   const char *text)
 {
-  const char *brk_chars = current_language->la_word_break_characters ();
-  return advance_to_completion_word (tracker, brk_chars, text);
+  const char *brk_chars = current_language->word_break_characters ();
+  const char *quote_chars = gdb_completer_expression_quote_characters;
+  return advance_to_completion_word (tracker, brk_chars, quote_chars,
+				     text, nullptr, nullptr);
 }
 
 /* See completer.h.  */
 
 const char *
-advance_to_filename_complete_word_point (completion_tracker &tracker,
-					 const char *text)
+advance_to_filename_maybe_quoted_complete_word_point
+  (completion_tracker &tracker, const char *text)
 {
   const char *brk_chars = gdb_completer_file_name_break_characters;
-  return advance_to_completion_word (tracker, brk_chars, text);
+  const char *quote_chars = gdb_completer_file_name_quote_characters;
+  rl_char_is_quoted_p = gdb_completer_file_name_char_is_quoted;
+  bool found_any_quoting = false;
+  int qc;
+  const char *result
+    = advance_to_completion_word (tracker, brk_chars, quote_chars,
+				  text, &found_any_quoting, &qc);
+  rl_completion_found_quote = found_any_quoting ? 1 : 0;
+  if (qc != '\0')
+    {
+      tracker.set_quote_char (qc);
+      /* If we're completing for readline (not the 'complete' command) then
+	 we want readline to correctly detect the opening quote.  The set
+	 of quote characters will have been set during the brkchars phase,
+	 so now we move the word point back by one (so it's pointing at
+	 the quote character) and now readline will correctly spot the
+	 opening quote.  For the 'complete' command setting the quote
+	 character in the tracker is enough, so there's no need to move
+	 the word point back here.  */
+      if (tracker.from_readline ())
+	tracker.advance_custom_word_point_by (-1);
+    }
+  return result;
+}
+
+/* See completer.h.  */
+
+const char *
+advance_to_deprecated_filename_complete_word_point (completion_tracker &tracker,
+						    const char *text)
+{
+  const char *brk_chars = gdb_completer_path_break_characters;
+  const char *quote_chars = nullptr;
+  rl_filename_quoting_desired = 0;
+
+  return advance_to_completion_word (tracker, brk_chars, quote_chars,
+				     text, nullptr, nullptr);
 }
 
 /* See completer.h.  */
@@ -407,6 +855,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;
@@ -439,7 +888,8 @@ complete_nested_command_line (completion
 
   int quote_char = '\0';
   const char *word = completion_find_completion_word (tracker, text,
-						      &quote_char);
+						      &quote_char,
+						      nullptr);
 
   if (tracker.use_custom_word_point ())
     {
@@ -512,7 +962,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;
     }
 
@@ -556,9 +1006,9 @@ complete_files_symbols (completion_track
 					 symbol_start, word);
       /* If text includes characters which cannot appear in a file
 	 name, they cannot be asking for completion on files.  */
-      if (strcspn (text,
-		   gdb_completer_file_name_break_characters) == text_len)
-	fn_list = make_source_files_completion_list (text, text);
+      if (strcspn (text, gdb_completer_file_name_break_characters)
+	  == text_len)
+	fn_list = make_source_files_completion_list (text);
     }
 
   if (!fn_list.empty () && !tracker.have_completions ())
@@ -607,10 +1057,9 @@ complete_source_filenames (const char *t
 
   /* If text includes characters which cannot appear in a file name,
      the user cannot be asking for completion on files.  */
-  if (strcspn (text,
-	       gdb_completer_file_name_break_characters)
+  if (strcspn (text, gdb_completer_file_name_break_characters)
       == text_len)
-    return make_source_files_completion_list (text, text);
+    return make_source_files_completion_list (text);
 
   return {};
 }
@@ -672,13 +1121,13 @@ string_or_empty (const char *string)
 
 static void
 collect_explicit_location_matches (completion_tracker &tracker,
-				   struct event_location *location,
+				   location_spec *locspec,
 				   enum explicit_location_match_type what,
 				   const char *word,
 				   const struct language_defn *language)
 {
-  const struct explicit_location *explicit_loc
-    = get_explicit_location (location);
+  const explicit_location_spec *explicit_loc
+    = as_explicit_location_spec (locspec);
 
   /* True if the option expects an argument.  */
   bool needs_arg = true;
@@ -690,19 +1139,21 @@ collect_explicit_location_matches (compl
     {
     case MATCH_SOURCE:
       {
-	const char *source = string_or_empty (explicit_loc->source_filename);
+	const char *source
+	  = string_or_empty (explicit_loc->source_filename.get ());
 	completion_list matches
-	  = make_source_files_completion_list (source, source);
+	  = make_source_files_completion_list (source);
 	tracker.add_completions (std::move (matches));
       }
       break;
 
     case MATCH_FUNCTION:
       {
-	const char *function = string_or_empty (explicit_loc->function_name);
+	const char *function
+	  = string_or_empty (explicit_loc->function_name.get ());
 	linespec_complete_function (tracker, function,
 				    explicit_loc->func_name_match_type,
-				    explicit_loc->source_filename);
+				    explicit_loc->source_filename.get ());
       }
       break;
 
@@ -715,10 +1166,10 @@ collect_explicit_location_matches (compl
 
     case MATCH_LABEL:
       {
-	const char *label = string_or_empty (explicit_loc->label_name);
+	const char *label = string_or_empty (explicit_loc->label_name.get ());
 	linespec_complete_label (tracker, language,
-				 explicit_loc->source_filename,
-				 explicit_loc->function_name,
+				 explicit_loc->source_filename.get (),
+				 explicit_loc->function_name.get (),
 				 explicit_loc->func_name_match_type,
 				 label);
       }
@@ -811,19 +1262,19 @@ skip_keyword (completion_tracker &tracke
   return -1;
 }
 
-/* A completer function for explicit locations.  This function
+/* A completer function for explicit location specs.  This function
    completes both options ("-source", "-line", etc) and values.  If
    completing a quoted string, then QUOTED_ARG_START and
    QUOTED_ARG_END point to the quote characters.  LANGUAGE is the
    current language.  */
 
 static void
-complete_explicit_location (completion_tracker &tracker,
-			    struct event_location *location,
-			    const char *text,
-			    const language_defn *language,
-			    const char *quoted_arg_start,
-			    const char *quoted_arg_end)
+complete_explicit_location_spec (completion_tracker &tracker,
+				 location_spec *locspec,
+				 const char *text,
+				 const language_defn *language,
+				 const char *quoted_arg_start,
+				 const char *quoted_arg_end)
 {
   if (*text != '-')
     return;
@@ -831,7 +1282,11 @@ complete_explicit_location (completion_t
   int keyword = skip_keyword (tracker, explicit_options, &text);
 
   if (keyword == -1)
-    complete_on_enum (tracker, explicit_options, text, text);
+    {
+      complete_on_enum (tracker, explicit_options, text, text);
+      /* There are keywords that start with "-".   Include them, too.  */
+      complete_on_enum (tracker, linespec_keywords, text, text);
+    }
   else
     {
       /* Completing on value.  */
@@ -877,7 +1332,7 @@ complete_explicit_location (completion_t
 	}
 
       /* Now gather matches  */
-      collect_explicit_location_matches (tracker, location, what, text,
+      collect_explicit_location_matches (tracker, locspec, what, text,
 					 language);
     }
 }
@@ -904,9 +1359,9 @@ location_completer (struct cmd_list_elem
   const char *copy = text;
 
   explicit_completion_info completion_info;
-  event_location_up location
-    = string_to_explicit_location (&copy, current_language,
-				   &completion_info);
+  location_spec_up locspec
+    = string_to_explicit_location_spec (&copy, current_language,
+					&completion_info);
   if (completion_info.quoted_arg_start != NULL
       && completion_info.quoted_arg_end == NULL)
     {
@@ -915,7 +1370,7 @@ location_completer (struct cmd_list_elem
       tracker.advance_custom_word_point_by (1);
     }
 
-  if (completion_info.saw_explicit_location_option)
+  if (completion_info.saw_explicit_location_spec_option)
     {
       if (*copy != '\0')
 	{
@@ -948,15 +1403,15 @@ location_completer (struct cmd_list_elem
 						- text);
 	  text = completion_info.last_option;
 
-	  complete_explicit_location (tracker, location.get (), text,
-				      current_language,
-				      completion_info.quoted_arg_start,
-				      completion_info.quoted_arg_end);
+	  complete_explicit_location_spec (tracker, locspec.get (), text,
+					   current_language,
+					   completion_info.quoted_arg_start,
+					   completion_info.quoted_arg_end);
 
 	}
     }
   /* This is an address or linespec location.  */
-  else if (location != NULL)
+  else if (locspec != nullptr)
     {
       /* Handle non-explicit location options.  */
 
@@ -969,7 +1424,7 @@ location_completer (struct cmd_list_elem
 	  text = copy;
 
 	  symbol_name_match_type match_type
-	    = get_explicit_location (location.get ())->func_name_match_type;
+	    = as_explicit_location_spec (locspec.get ())->func_name_match_type;
 	  complete_address_and_linespec_locations (tracker, text, match_type);
 	}
     }
@@ -1016,107 +1471,31 @@ location_completer_handle_brkchars (stru
   location_completer (ignore, tracker, text, NULL);
 }
 
-/* Helper for expression_completer which recursively adds field and
-   method names from TYPE, a struct or union type, to the OUTPUT
-   list.  */
-
-static void
-add_struct_fields (struct type *type, completion_list &output,
-		   const char *fieldname, int namelen)
-{
-  int i;
-  int computed_type_name = 0;
-  const char *type_name = NULL;
-
-  type = check_typedef (type);
-  for (i = 0; i < TYPE_NFIELDS (type); ++i)
-    {
-      if (i < TYPE_N_BASECLASSES (type))
-	add_struct_fields (TYPE_BASECLASS (type, i),
-			   output, fieldname, namelen);
-      else if (TYPE_FIELD_NAME (type, i))
-	{
-	  if (TYPE_FIELD_NAME (type, i)[0] != '\0')
-	    {
-	      if (! strncmp (TYPE_FIELD_NAME (type, i), 
-			     fieldname, namelen))
-		output.emplace_back (xstrdup (TYPE_FIELD_NAME (type, i)));
-	    }
-	  else if (TYPE_CODE (TYPE_FIELD_TYPE (type, i)) == TYPE_CODE_UNION)
-	    {
-	      /* Recurse into anonymous unions.  */
-	      add_struct_fields (TYPE_FIELD_TYPE (type, i),
-				 output, fieldname, namelen);
-	    }
-	}
-    }
-
-  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
-    {
-      const char *name = TYPE_FN_FIELDLIST_NAME (type, i);
-
-      if (name && ! strncmp (name, fieldname, namelen))
-	{
-	  if (!computed_type_name)
-	    {
-	      type_name = TYPE_NAME (type);
-	      computed_type_name = 1;
-	    }
-	  /* Omit constructors from the completion list.  */
-	  if (!type_name || strcmp (type_name, name))
-	    output.emplace_back (xstrdup (name));
-	}
-    }
-}
-
 /* See completer.h.  */
 
 void
 complete_expression (completion_tracker &tracker,
 		     const char *text, const char *word)
 {
-  struct type *type = NULL;
-  gdb::unique_xmalloc_ptr<char> fieldname;
-  enum type_code code = TYPE_CODE_UNDEF;
+  expression_up exp;
+  std::unique_ptr<expr_completion_base> expr_completer;
 
   /* Perform a tentative parse of the expression, to see whether a
      field completion is required.  */
   try
     {
-      type = parse_expression_for_completion (text, &fieldname, &code);
+      exp = parse_expression_for_completion (text, &expr_completer);
     }
   catch (const gdb_exception_error &except)
     {
       return;
     }
 
-  if (fieldname != nullptr && type)
-    {
-      for (;;)
-	{
-	  type = check_typedef (type);
-	  if (TYPE_CODE (type) != 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)
-	{
-	  completion_list result;
-
-	  add_struct_fields (type, result, fieldname.get (),
-			     strlen (fieldname.get ()));
-	  tracker.add_completions (std::move (result));
-	  return;
-	}
-    }
-  else if (fieldname != nullptr && code != TYPE_CODE_UNDEF)
-    {
-      collect_symbol_completion_matches_type (tracker, fieldname.get (),
-					      fieldname.get (), code);
-      return;
-    }
+  /* Part of the parse_expression_for_completion contract.  */
+  gdb_assert ((exp == nullptr) == (expr_completer == nullptr));
+  if (expr_completer != nullptr
+      && expr_completer->complete (exp.get (), tracker))
+    return;
 
   complete_files_symbols (tracker, text, word);
 }
@@ -1133,9 +1512,12 @@ expression_completer (struct cmd_list_el
   complete_expression (tracker, text, word);
 }
 
-/* See definition in completer.h.  */
+/* Set the word break characters array to BREAK_CHARS.  This function is
+   useful as const-correct alternative to direct assignment to
+   rl_completer_word_break_characters, which is "char *", not "const
+   char *".  */
 
-void
+static void
 set_rl_completer_word_break_characters (const char *break_chars)
 {
   rl_completer_word_break_characters = (char *) break_chars;
@@ -1218,23 +1600,6 @@ complete_line_internal_normal_command (c
 				       complete_line_internal_reason reason,
 				       struct cmd_list_element *c)
 {
-  const char *p = cmd_args;
-
-  if (c->completer == filename_completer)
-    {
-      /* Many commands which want to complete on file names accept
-	 several file names, as in "run foo bar >>baz".  So we don't
-	 want to complete the entire text after the command, just the
-	 last word.  To this end, we need to find the beginning of the
-	 file name by starting at `word' and going backwards.  */
-      for (p = word;
-	   p > command
-	     && strchr (gdb_completer_file_name_break_characters,
-			p[-1]) == NULL;
-	   p--)
-	;
-    }
-
   if (reason == handle_brkchars)
     {
       completer_handle_brkchars_ftype *brkchars_fn;
@@ -1248,11 +1613,11 @@ complete_line_internal_normal_command (c
 	       (c->completer));
 	}
 
-      brkchars_fn (c, tracker, p, word);
+      brkchars_fn (c, tracker, cmd_args, word);
     }
 
   if (reason != handle_brkchars && c->completer != NULL)
-    (*c->completer) (c, tracker, p, word);
+    (*c->completer) (c, tracker, cmd_args, word);
 }
 
 /* Internal function used to handle completions.
@@ -1287,7 +1652,13 @@ 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 ());
+
+  /* Likewise for the quote characters.  If we later find out that we are
+     completing file names then we can switch to the file name quote
+     character set (i.e., both single- and double-quotes).  */
+  rl_completer_quote_characters = gdb_completer_expression_quote_characters;
+  rl_char_is_quoted_p = nullptr;
 
   /* Decide whether to complete on a list of gdb commands or on
      symbols.  */
@@ -1323,9 +1694,8 @@ complete_line_internal_1 (completion_tra
       result_list = 0;
     }
   else
-    {
-      c = lookup_cmd_1 (&p, cmdlist, &result_list, ignore_help_classes);
-    }
+    c = lookup_cmd_1 (&p, cmdlist, &result_list, NULL, ignore_help_classes,
+		      true);
 
   /* Move p up to the next interesting thing.  */
   while (*p == ' ' || *p == '\t')
@@ -1364,7 +1734,7 @@ complete_line_internal_1 (completion_tra
 	  if (result_list)
 	    {
 	      if (reason != handle_brkchars)
-		complete_on_cmdlist (*result_list->prefixlist, tracker, p,
+		complete_on_cmdlist (*result_list->subcommands, tracker, p,
 				     word, ignore_help_classes);
 	    }
 	  else
@@ -1392,12 +1762,12 @@ complete_line_internal_1 (completion_tra
 	    {
 	      /* The command is followed by whitespace; we need to
 		 complete on whatever comes after command.  */
-	      if (c->prefixlist)
+	      if (c->is_prefix ())
 		{
 		  /* It is a prefix command; what comes after it is
 		     a subcommand (e.g. "info ").  */
 		  if (reason != handle_brkchars)
-		    complete_on_cmdlist (*c->prefixlist, tracker, p, word,
+		    complete_on_cmdlist (*c->subcommands, tracker, p, word,
 					 ignore_help_classes);
 
 		  /* Ensure that readline does the right thing
@@ -1460,7 +1830,7 @@ complete_line_internal_1 (completion_tra
 	{
 	  /* There is non-whitespace beyond the command.  */
 
-	  if (c->prefixlist && !c->allow_unknown)
+	  if (c->is_prefix () && !c->allow_unknown)
 	    {
 	      /* It is an unrecognized subcommand of a prefix command,
 		 e.g. "info adsfkdj".  */
@@ -1508,13 +1878,27 @@ int max_completions = 200;
 /* Initial size of the table.  It automagically grows from here.  */
 #define INITIAL_COMPLETION_HTAB_SIZE 200
 
+/* The function is used to update the completion word MATCH before
+   displaying it to the user in the 'complete' command output.  This
+   default function is used in all cases except those where a completion
+   function overrides this function by calling set_match_format_func.
+
+   This function returns MATCH with QUOTE_CHAR appended.  If QUOTE_CHAR is
+   the null-character then the returned string will just contain MATCH.  */
+
+static std::string
+default_match_formatter (const char *match, char quote_char)
+{
+  return std::string (match) + quote_char;
+}
+
 /* See completer.h.  */
 
-completion_tracker::completion_tracker ()
+completion_tracker::completion_tracker (bool from_readline)
+  : m_from_readline (from_readline),
+    m_match_format_func (default_match_formatter)
 {
-  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 +1910,41 @@ 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 ();
+  m_entries_hash.reset (nullptr);
 
-  htab_delete (m_entries_hash);
-  m_entries_hash = htab_create_alloc (INITIAL_COMPLETION_HTAB_SIZE,
-				      htab_hash_string, streq_hash,
-				      NULL, xcalloc, xfree);
+  /* A callback used by the hash table to compare new entries with existing
+     entries.  We can't use the standard htab_eq_string 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 ();
+      };
+
+  m_entries_hash.reset
+    (htab_create_alloc (INITIAL_COMPLETION_HTAB_SIZE,
+			entry_hash_func, entry_eq_func,
+			htab_delete_entry<completion_hash_entry>,
+			xcalloc, xfree));
 }
 
 /* See completer.h.  */
@@ -1540,7 +1952,6 @@ completion_tracker::discard_completions
 completion_tracker::~completion_tracker ()
 {
   xfree (m_lowest_common_denominator);
-  htab_delete (m_entries_hash);
 }
 
 /* See completer.h.  */
@@ -1556,10 +1967,12 @@ completion_tracker::maybe_add_completion
   if (max_completions == 0)
     return false;
 
-  if (htab_elements (m_entries_hash) >= max_completions)
+  if (htab_elements (m_entries_hash.get ()) >= 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.get (), name.get (),
+				   hash, INSERT);
   if (*slot == HTAB_EMPTY_ENTRY)
     {
       const char *match_for_lcd_str = NULL;
@@ -1573,10 +1986,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 +2017,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.get (), name, hash, NO_INSERT)
+      != NULL)
+    {
+      htab_remove_elt_with_hash (m_entries_hash.get (), 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.  */
@@ -1664,8 +2093,8 @@ make_completion_match_str (gdb::unique_x
 completion_result
 complete (const char *line, char const **word, int *quote_char)
 {
-  completion_tracker tracker_handle_brkchars;
-  completion_tracker tracker_handle_completions;
+  completion_tracker tracker_handle_brkchars (false);
+  completion_tracker tracker_handle_completions (false);
   completion_tracker *tracker;
 
   /* The WORD should be set to the end of word to complete.  We initialize
@@ -1677,8 +2106,11 @@ complete (const char *line, char const *
 
   try
     {
+      bool found_any_quoting = false;
+
       *word = completion_find_completion_word (tracker_handle_brkchars,
-					      line, quote_char);
+					       line, quote_char,
+					       &found_any_quoting);
 
       /* Completers that provide a custom word point in the
 	 handle_brkchars phase also compute their completions then.
@@ -1688,6 +2120,12 @@ complete (const char *line, char const *
 	tracker = &tracker_handle_brkchars;
       else
 	{
+	  /* Setting this global matches what readline does within
+	     gen_completion_matches.  We need this set correctly in case
+	     our completion function calls back into readline to perform
+	     completion (e.g. filename_completer does this).  */
+	  rl_completion_found_quote = found_any_quoting;
+
 	  complete_line (tracker_handle_completions, *word, line, strlen (line));
 	  tracker = &tracker_handle_completions;
 	}
@@ -1814,13 +2252,9 @@ reg_or_group_completer_1 (completion_tra
 
   if ((targets & complete_reggroup_names) != 0)
     {
-      struct reggroup *group;
-
-      for (group = reggroup_next (gdbarch, NULL);
-	   group != NULL;
-	   group = reggroup_next (gdbarch, group))
+      for (const struct reggroup *group : gdbarch_reggroups (gdbarch))
 	{
-	  name = reggroup_name (group);
+	  name = group->name ();
 	  if (strncmp (word, name, len) == 0)
 	    tracker.add_completion (make_unique_xstrdup (name));
 	}
@@ -1858,7 +2292,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.  */
@@ -1866,8 +2300,11 @@ default_completer_handle_brkchars (struc
 completer_handle_brkchars_ftype *
 completer_handle_brkchars_func_for_completer (completer_ftype *fn)
 {
-  if (fn == filename_completer)
-    return filename_completer_handle_brkchars;
+  if (fn == deprecated_filename_completer)
+    return deprecated_filename_completer_handle_brkchars;
+
+  if (fn == filename_maybe_quoted_completer)
+    return filename_maybe_quoted_completer_handle_brkchars;
 
   if (fn == location_completer)
     return location_completer_handle_brkchars;
@@ -1899,7 +2336,7 @@ gdb_completion_word_break_characters_thr
   /* New completion starting.  Get rid of the previous tracker and
      start afresh.  */
   delete current_completion.tracker;
-  current_completion.tracker = new completion_tracker ();
+  current_completion.tracker = new completion_tracker (true);
 
   completion_tracker &tracker = *current_completion.tracker;
 
@@ -1915,7 +2352,21 @@ gdb_completion_word_break_characters_thr
 
       gdb_custom_word_point_brkchars[0] = rl_line_buffer[rl_point];
       rl_completer_word_break_characters = gdb_custom_word_point_brkchars;
-      rl_completer_quote_characters = NULL;
+
+      /* When performing filename completion we have two options, unquoted
+	 filename completion, in which case the quote characters will have
+	 already been set to nullptr, or quoted filename completion in
+	 which case the quote characters will be set to a string of
+	 characters.  In this second case we need readline to perform the
+	 check for a quoted string so that it sets its internal notion of
+	 the quote character correctly, this allows readline to correctly
+	 add the trailing quote (if necessary) after completing a
+	 filename.
+
+	 For non-filename completion we manually add a trailing quote if
+	 needed, so we clear the quote characters set here.  */
+      if (!rl_filename_completion_desired)
+	rl_completer_quote_characters = NULL;
 
       /* Clear this too, so that if we're completing a quoted string,
 	 readline doesn't consider the quote character a delimiter.
@@ -1930,11 +2381,15 @@ gdb_completion_word_break_characters_thr
       rl_basic_quote_characters = NULL;
     }
 
-  return rl_completer_word_break_characters;
+  return (char *) rl_completer_word_break_characters;
 }
 
-char *
-gdb_completion_word_break_characters ()
+/* Get the list of chars that are considered as word breaks for the current
+   command.  This function does not throw any exceptions and is called from
+   readline.  See gdb_completion_word_break_characters_throw for details.  */
+
+static char *
+gdb_completion_word_break_characters () noexcept
 {
   /* New completion starting.  */
   current_completion.aborted = false;
@@ -1953,11 +2408,21 @@ gdb_completion_word_break_characters ()
   return NULL;
 }
 
-/* See completer.h.  */
+/* Find the bounds of the word in TEXT for completion purposes, and return
+   a pointer to the end of the word.  Calls the completion machinery for a
+   handle_brkchars phase (using TRACKER) to figure out the right work break
+   characters for the command in TEXT.  QUOTE_CHAR, if non-null, is set to
+   the opening quote character if we found an unclosed quoted substring,
+   '\0' otherwise.
+
+   The argument *FOUND_ANY_QUOTING is set to true if the completion word is
+   either surrounded by quotes, or contains any backslash escapes, but is
+   only set if TRACKER.use_custom_word_point() is false, otherwise
+   *FOUND_ANY_QUOTING is just set to false.  */
 
-const char *
+static const char *
 completion_find_completion_word (completion_tracker &tracker, const char *text,
-				 int *quote_char)
+				 int *quote_char, bool *found_any_quoting)
 {
   size_t point = strlen (text);
 
@@ -1967,38 +2432,45 @@ completion_find_completion_word (complet
     {
       gdb_assert (tracker.custom_word_point () > 0);
       *quote_char = tracker.quote_char ();
+      /* If use_custom_word_point is set then the completions have already
+	 been calculated, in which case we don't need to have this flag
+	 set correctly, which is lucky as we don't currently have any way
+	 to know if the completion word included any backslash escapes.  */
+      if (found_any_quoting != nullptr)
+	*found_any_quoting = false;
       return text + tracker.custom_word_point ();
     }
 
   gdb_rl_completion_word_info info;
 
   info.word_break_characters = rl_completer_word_break_characters;
-  info.quote_characters = gdb_completer_quote_characters;
+  info.quote_characters = rl_completer_quote_characters;
   info.basic_quote_characters = rl_basic_quote_characters;
 
-  return gdb_rl_find_completion_word (&info, quote_char, NULL, text);
+  return gdb_rl_find_completion_word (&info, quote_char, nullptr,
+				      found_any_quoting, text);
 }
 
 /* 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 +2488,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_noresize (m_entries_hash.get (), 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,49 +2593,93 @@ 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.get ());
 
-  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.  */
 
-  match_list[0]
-    = expand_preserving_ws (text, end - start,
-			    m_lowest_common_denominator);
+  recompute_lowest_common_denominator ();
+  if (rl_filename_completion_desired)
+    match_list[0] = xstrdup (m_lowest_common_denominator);
+  else
+    match_list[0]
+      = expand_preserving_ws (text, end - start, m_lowest_common_denominator);
 
   if (m_lowest_common_denominator_unique)
     {
-      /* We don't rely on readline appending the quote char as
-	 delimiter as then readline wouldn't append the ' ' after the
-	 completion.  */
-      char buf[2] = { (char) quote_char () };
-
-      match_list[0] = reconcat (match_list[0], match_list[0],
-				buf, (char *) NULL);
-      match_list[1] = NULL;
-
-      /* If the tracker wants to, or we already have a space at the
-	 end of the match, tell readline to skip appending
-	 another.  */
-      bool completion_suppress_append
-	= (suppress_append_ws ()
-	   || match_list[0][strlen (match_list[0]) - 1] == ' ');
+      bool completion_suppress_append;
+
+      /* For filename completion we rely on readline to append the closing
+	 quote.  While for other types of completion we append the closing
+	 quote here.  */
+      if (from_readline () && !rl_filename_completion_desired)
+	{
+	  /* We don't rely on readline appending the quote char as
+	     delimiter as then readline wouldn't append the ' ' after the
+	     completion.  */
+	  char buf[2] = { (char) quote_char (), '\0' };
+
+	  match_list[0] = reconcat (match_list[0], match_list[0], buf,
+				    (char *) nullptr);
+
+	  /* If the tracker wants to, or we already have a space at the end
+	     of the match, tell readline to skip appending another.  */
+	  char *match = match_list[0];
+	  completion_suppress_append
+	    = (suppress_append_ws ()
+	       || (match[0] != '\0'
+		   && match[strlen (match) - 1] == ' '));
+	}
+      else
+	completion_suppress_append = false;
+
+      match_list[1] = nullptr;
 
-      return completion_result (match_list, 1, completion_suppress_append);
+      return completion_result (match_list, 1, completion_suppress_append,
+				m_match_format_func);
     }
   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.get (), func, &builder);
+      match_list[builder.index] = NULL;
 
-      return completion_result (match_list, list.size (), false);
+      return completion_result (match_list, builder.index - 1, false,
+				m_match_format_func);
     }
 }
 
@@ -2142,18 +2687,23 @@ completion_tracker::build_completion_res
 
 completion_result::completion_result ()
   : match_list (NULL), number_matches (0),
-    completion_suppress_append (false)
+    completion_suppress_append (false),
+    m_match_formatter (default_match_formatter)
 {}
 
 /* See completer.h  */
 
 completion_result::completion_result (char **match_list_,
 				      size_t number_matches_,
-				      bool completion_suppress_append_)
+				      bool completion_suppress_append_,
+				      match_format_func_t match_formatter_)
   : match_list (match_list_),
     number_matches (number_matches_),
-    completion_suppress_append (completion_suppress_append_)
-{}
+    completion_suppress_append (completion_suppress_append_),
+    m_match_formatter (match_formatter_)
+{
+  gdb_assert (m_match_formatter != nullptr);
+}
 
 /* See completer.h  */
 
@@ -2164,16 +2714,14 @@ 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),
+    m_match_formatter (rhs.m_match_formatter)
 {
-  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;
+  rhs.m_match_formatter = default_match_formatter;
 }
 
 /* See completer.h  */
@@ -2215,6 +2763,38 @@ completion_result::reset_match_list ()
     }
 }
 
+/* See completer.h  */
+
+void
+completion_result::print_matches (const std::string &prefix,
+				  const char *word, int quote_char)
+{
+  this->sort_match_list ();
+
+  size_t off = this->number_matches == 1 ? 0 : 1;
+
+  for (size_t i = 0; i < this->number_matches; i++)
+    {
+      gdb_assert (this->m_match_formatter != nullptr);
+      std::string formatted_match
+	= this->m_match_formatter (this->match_list[i + off],
+				   (char) quote_char);
+
+      printf_unfiltered ("%s%s\n", prefix.c_str (),
+			 formatted_match.c_str ());
+    }
+
+  if (this->number_matches == max_completions)
+    {
+      /* PREFIX and WORD are included in the output so that emacs will
+	 include the message in the output.  */
+      printf_unfiltered (_("%s%s %s\n"),
+			 prefix.c_str (), word,
+			 get_max_completions_reached_message ());
+    }
+
+}
+
 /* Helper for gdb_rl_attempted_completion_function, which does most of
    the work.  This is called by readline to build the match list array
    and to determine the lowest common denominator.  The real matches
@@ -2250,7 +2830,7 @@ gdb_rl_attempted_completion_function_thr
   if (end == 0 || !current_completion.tracker->use_custom_word_point ())
     {
       delete current_completion.tracker;
-      current_completion.tracker = new completion_tracker ();
+      current_completion.tracker = new completion_tracker (true);
 
       complete_line (*current_completion.tracker, text,
 		     rl_line_buffer, rl_point);
@@ -2269,7 +2849,7 @@ gdb_rl_attempted_completion_function_thr
    hook.  Wrapper around gdb_rl_attempted_completion_function_throw
    that catches C++ exceptions, which can't cross readline.  */
 
-char **
+static char **
 gdb_rl_attempted_completion_function (const char *text, int start, int end)
 {
   /* Restore globals that might have been tweaked in
@@ -2297,61 +2877,6 @@ gdb_rl_attempted_completion_function (co
   return NULL;
 }
 
-/* Skip over the possibly quoted word STR (as defined by the quote
-   characters QUOTECHARS and the word break characters BREAKCHARS).
-   Returns pointer to the location after the "word".  If either
-   QUOTECHARS or BREAKCHARS is NULL, use the same values used by the
-   completer.  */
-
-const char *
-skip_quoted_chars (const char *str, const char *quotechars,
-		   const char *breakchars)
-{
-  char quote_char = '\0';
-  const char *scan;
-
-  if (quotechars == NULL)
-    quotechars = gdb_completer_quote_characters;
-
-  if (breakchars == NULL)
-    breakchars = current_language->la_word_break_characters();
-
-  for (scan = str; *scan != '\0'; scan++)
-    {
-      if (quote_char != '\0')
-	{
-	  /* Ignore everything until the matching close quote char.  */
-	  if (*scan == quote_char)
-	    {
-	      /* Found matching close quote.  */
-	      scan++;
-	      break;
-	    }
-	}
-      else if (strchr (quotechars, *scan))
-	{
-	  /* Found start of a quoted string.  */
-	  quote_char = *scan;
-	}
-      else if (strchr (breakchars, *scan))
-	{
-	  break;
-	}
-    }
-
-  return (scan);
-}
-
-/* Skip over the possibly quoted word STR (as defined by the quote
-   characters and word break characters used by the completer).
-   Returns pointer to the location after the "word".  */
-
-const char *
-skip_quoted (const char *str)
-{
-  return skip_quoted_chars (str, NULL, NULL);
-}
-
 /* Return a message indicating that the maximum number of completions
    has been reached and that there may be more.  */
 
@@ -2449,10 +2974,10 @@ gdb_display_match_list_pager (int lines,
     return 0;
 }
 
-/* Return non-zero if FILENAME is a directory.
+/* Return true if FILENAME is a directory.
    Based on readline/complete.c:path_isdir.  */
 
-static int
+static bool
 gdb_path_isdir (const char *filename)
 {
   struct stat finfo;
@@ -2494,8 +3019,8 @@ gdb_printable_part (char *pathname)
   else if (temp[1] == '\0')
     {
       for (x = temp - 1; x > pathname; x--)
-        if (*x == '/')
-          break;
+	if (*x == '/')
+	  break;
       return ((*x == '/') ? x + 1 : pathname);
     }
   else
@@ -2597,15 +3122,15 @@ gdb_fnprint (const char *to_print, int p
   while (*s)
     {
       if (CTRL_CHAR (*s))
-        {
-          displayer->putch (displayer, '^');
-          displayer->putch (displayer, UNCTRL (*s));
-          printed_len += 2;
-          s++;
+	{
+	  displayer->putch (displayer, '^');
+	  displayer->putch (displayer, UNCTRL (*s));
+	  printed_len += 2;
+	  s++;
 #if defined (HANDLE_MULTIBYTE)
 	  memset (&ps, 0, sizeof (mbstate_t));
 #endif
-        }
+	}
       else if (*s == RUBOUT)
 	{
 	  displayer->putch (displayer, '^');
@@ -2756,7 +3281,7 @@ gdb_complete_get_screenwidth (const stru
 extern int _rl_completion_prefix_display_length;
 extern int _rl_print_completions_horizontally;
 
-EXTERN_C int _rl_qsort_string_compare (const void *, const void *);
+extern "C" int _rl_qsort_string_compare (const void *, const void *);
 typedef int QSFUNC (const void *, const void *);
 
 /* GDB version of readline/complete.c:rl_display_match_list.
@@ -2935,9 +3460,72 @@ gdb_display_match_list (char **matches,
     }
 }
 
-void
-_initialize_completer (void)
+/* See completer.h.  */
+
+bool
+skip_over_slash_fmt (completion_tracker &tracker, const char **args)
 {
+  const char *text = *args;
+
+  if (text[0] == '/')
+    {
+      bool in_fmt;
+      tracker.set_use_custom_word_point (true);
+
+      if (text[1] == '\0')
+	{
+	  /* The user tried to complete after typing just the '/' character
+	     of the /FMT string.  Step the completer past the '/', but we
+	     don't offer any completions.  */
+	  in_fmt = true;
+	  ++text;
+	}
+      else
+	{
+	  /* The user has typed some characters after the '/', we assume
+	     this is a complete /FMT string, first skip over it.  */
+	  text = skip_to_space (text);
+
+	  if (*text == '\0')
+	    {
+	      /* We're at the end of the input string.  The user has typed
+		 '/FMT' and asked for a completion.  Push an empty
+		 completion string, this will cause readline to insert a
+		 space so the user now has '/FMT '.  */
+	      in_fmt = true;
+	      tracker.add_completion (make_unique_xstrdup (text));
+	    }
+	  else
+	    {
+	      /* The user has already typed things after the /FMT, skip the
+		 whitespace and return false.  Whoever called this function
+		 should then try to complete what comes next.  */
+	      in_fmt = false;
+	      text = skip_spaces (text);
+	    }
+	}
+
+      tracker.advance_custom_word_point_by (text - *args);
+      *args = text;
+      return in_fmt;
+    }
+
+  return false;
+}
+
+INIT_GDB_FILE (completer)
+{
+  /* Setup some readline completion globals.  */
+  rl_completion_word_break_hook = gdb_completion_word_break_characters;
+  rl_attempted_completion_function = gdb_rl_attempted_completion_function;
+  set_rl_completer_word_break_characters (default_word_break_characters ());
+
+  /* Setup readline globals relating to filename completion.  */
+  rl_filename_quote_characters = " \t\n\\\"'";
+  rl_filename_dequoting_function = gdb_completer_file_name_dequote;
+  rl_filename_quoting_function = gdb_completer_file_name_quote;
+  rl_directory_rewrite_hook = gdb_completer_directory_rewrite;
+
   add_setshow_zuinteger_unlimited_cmd ("max-completions", no_class,
 				       &max_completions, _("\
 Set maximum number of completion candidates."), _("\
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/completer.h ./gdb/completer.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/completer.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/completer.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* Header for GDB line completion.
-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+   Copyright (C) 2000-2025 Free Software Foundation, Inc.
 
    This 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,10 +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/>.  */
 
-#if !defined (COMPLETER_H)
-#define COMPLETER_H 1
+#ifndef GDB_COMPLETER_H
+#define GDB_COMPLETER_H
 
-#include "gdbsupport/gdb_vecs.h"
+#include "gdbsupport/gdb-hashtab.h"
 #include "command.h"
 
 /* Types of functions in struct match_list_displayer.  */
@@ -144,7 +144,12 @@ public:
 
   /* Mark the range between [BEGIN, END) as ignored.  */
   void mark_ignored_range (const char *begin, const char *end)
-  { m_ignored_ranges.emplace_back (begin, end); }
+  {
+    gdb_assert (begin < end);
+    gdb_assert (m_ignored_ranges.empty ()
+		|| m_ignored_ranges.back ().second < begin);
+    m_ignored_ranges.emplace_back (begin, end);
+  }
 
   /* Get the resulting LCD, after a successful match.  If there are
      ignored ranges, then this builds a new string with the ignored
@@ -159,9 +164,14 @@ public:
       {
 	m_finished_storage.clear ();
 
+	gdb_assert (m_ignored_ranges.back ().second
+		    <= (m_match + strlen (m_match)));
+
 	const char *prev = m_match;
 	for (const auto &range : m_ignored_ranges)
 	  {
+	    gdb_assert (prev < range.first);
+	    gdb_assert (range.second > range.first);
 	    m_finished_storage.append (prev, range.first);
 	    prev = range.second;
 	  }
@@ -178,6 +188,13 @@ public:
     m_ignored_ranges.clear ();
   }
 
+  /* Return true if this object has had no match data set since its
+     creation, or the last call to clear.  */
+  bool empty () const
+  {
+    return m_match == nullptr && m_ignored_ranges.empty ();
+  }
+
 private:
   /* The completion match result for LCD.  This is usually either a
      pointer into to a substring within a symbol's name, or to the
@@ -229,12 +246,24 @@ struct completion_match_result
 
 struct completion_result
 {
+  /* The type of a function that is used to format completion results when
+     using the 'complete' command.  MATCH is the completion word to be
+     printed, and QUOTE_CHAR is a trailing quote character to (possibly)
+     add at the end of MATCH.  QUOTE_CHAR can be the null-character in
+     which case no trailing quote should be added.
+
+     Return the possibly modified completion match word which should be
+     presented to the user.  */
+  using match_format_func_t = std::string (*) (const char *match,
+					       char quote_char);
+
   /* Create an empty result.  */
   completion_result ();
 
   /* Create a result.  */
   completion_result (char **match_list, size_t number_matches,
-		     bool completion_suppress_append);
+		     bool completion_suppress_append,
+		     match_format_func_t match_format_func);
 
   /* Destroy a result.  */
   ~completion_result ();
@@ -242,7 +271,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 ();
@@ -250,6 +279,24 @@ struct completion_result
   /* Sort the match list.  */
   void sort_match_list ();
 
+  /* Called to display all matches (used by the 'complete' command).
+     PREFIX is everything before the completion word.  WORD is the word
+     being completed, this is only used if we reach the maximum number of
+     completions, otherwise, each line of output consists of PREFIX
+     followed by one of the possible completion words.
+
+     The QUOTE_CHAR is usually appended after each possible completion
+     word and should be the quote character that appears before the
+     completion word, or the null-character if there is no quote before
+     the completion word.
+
+     The QUOTE_CHAR is not always appended to the completion output.  For
+     example, filename completions will not append QUOTE_CHAR if the
+     completion is a directory name.  This is all handled by calling this
+     function.  */
+  void print_matches (const std::string &prefix, const char *word,
+		      int quote_char);
+
 private:
   /* Destroy the match list array and its contents.  */
   void reset_match_list ();
@@ -274,6 +321,12 @@ public:
   /* Whether readline should suppress appending a whitespace, when
      there's only one possible completion.  */
   bool completion_suppress_append;
+
+private:
+  /* A function which formats a single completion match ready for display
+     as part of the 'complete' command output.  Different completion
+     functions can set different formatter functions.  */
+  match_format_func_t m_match_formatter;
 };
 
 /* Object used by completers to build a completion match list to hand
@@ -310,7 +363,7 @@ public:
 class completion_tracker
 {
 public:
-  completion_tracker ();
+  explicit completion_tracker (bool from_readline);
   ~completion_tracker ();
 
   DISABLE_COPY_AND_ASSIGN (completion_tracker);
@@ -326,6 +379,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 +446,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.get ()) > 0; }
 
   /* Discard the current completion match list and the current
      LCD.  */
@@ -401,8 +458,24 @@ public:
   completion_result build_completion_result (const char *text,
 					     int start, int end);
 
+  /* Tells if the completion task is triggered by readline.  See
+     m_from_readline.  */
+  bool from_readline () const
+  { return m_from_readline; }
+
+  /* Set the function used to format the completion word before displaying
+     it to the user to F, this is used by the 'complete' command.  */
+  void set_match_format_func (completion_result::match_format_func_t f)
+  {
+    gdb_assert (f != nullptr);
+    m_match_format_func = f;
+  }
+
 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 +483,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 +500,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_up m_entries_hash;
 
   /* 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 +550,25 @@ 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;
+
+  /* Indicates that the completions are to be displayed by readline
+     interactively. The 'complete' command is a way to generate completions
+     not to be displayed by readline.  */
+  bool m_from_readline;
+
+  /* The function used to format the completion word before it is printed
+     in the 'complete' command output.  */
+  completion_result::match_format_func_t m_match_format_func;
 };
 
 /* Return a string to hand off to readline as a completion match
@@ -517,17 +603,6 @@ extern void complete_line (completion_tr
 extern completion_result
   complete (const char *line, char const **word, int *quote_char);
 
-/* Find the bounds of the word in TEXT for completion purposes, and
-   return a pointer to the end of the word.  Calls the completion
-   machinery for a handle_brkchars phase (using TRACKER) to figure out
-   the right work break characters for the command in TEXT.
-   QUOTE_CHAR, if non-null, is set to the opening quote character if
-   we found an unclosed quoted substring, '\0' otherwise.  */
-extern const char *completion_find_completion_word (completion_tracker &tracker,
-						    const char *text,
-						    int *quote_char);
-
-
 /* Assuming TEXT is an expression in the current language, find the
    completion word point for TEXT, emulating the algorithm readline
    uses to find the word point, using the current language's word
@@ -535,22 +610,45 @@ extern const char *completion_find_compl
 const char *advance_to_expression_complete_word_point
   (completion_tracker &tracker, const char *text);
 
-/* Assuming TEXT is an filename, find the completion word point for
-   TEXT, emulating the algorithm readline uses to find the word
-   point.  */
-extern const char *advance_to_filename_complete_word_point
+/* Assuming TEXT is a filename, find the completion word point for TEXT,
+   emulating the algorithm readline uses to find the word point.  The
+   filenames that are located by this function assume no filename
+   quoting, this function should be paired with filename_completer.  */
+extern const char *advance_to_deprecated_filename_complete_word_point
   (completion_tracker &tracker, const char *text);
 
-extern char **gdb_rl_attempted_completion_function (const char *text,
-						    int start, int end);
+/* Assuming TEXT is a filename, find the completion word point for TEXT,
+   emulating the algorithm readline uses to find the word point.  The
+   filenames that are located by this function assume that filenames
+   can be quoted, this function should be paired with
+   filename_maybe_quoted_completer.  */
+extern const char *advance_to_filename_maybe_quoted_complete_word_point
+  (completion_tracker &tracker, const char *text);
 
 extern void noop_completer (struct cmd_list_element *,
 			    completion_tracker &tracker,
 			    const char *, const char *);
 
-extern void filename_completer (struct cmd_list_element *,
-				completion_tracker &tracker,
-				const char *, const char *);
+/* Filename completer for commands that don't accept quoted filenames.
+   This completer does support completing a list of filenames that are
+   separated with the path separator (':' for UNIX and ';' for MS-DOS).
+
+   When adding a new command it is better to write the command so it
+   accepts quoted filenames and use filename_maybe_quoted_completer, for
+   examples see the 'exec' and 'exec-file' commands.  */
+
+extern void deprecated_filename_completer
+  (struct cmd_list_element *, completion_tracker &tracker,
+   const char *, const char *);
+
+/* Filename completer for commands where the filename argument can be
+   quoted.  This completer also supports completing a list of filenames
+   that are separated with the path separator (':' for UNIX and ';' for
+   MS-DOS).  */
+
+extern void filename_maybe_quoted_completer (struct cmd_list_element *,
+					     completion_tracker &tracker,
+					     const char *, const char *);
 
 extern void expression_completer (struct cmd_list_element *,
 				  completion_tracker &tracker,
@@ -580,16 +678,6 @@ extern void reggroup_completer (struct c
 				completion_tracker &tracker,
 				const char *, const char *);
 
-extern const char *get_gdb_completer_quote_characters (void);
-
-extern char *gdb_completion_word_break_characters (void);
-
-/* Set the word break characters array to BREAK_CHARS.  This function
-   is useful as const-correct alternative to direct assignment to
-   rl_completer_word_break_characters, which is "char *",
-   not "const char *".  */
-extern void set_rl_completer_word_break_characters (const char *break_chars);
-
 /* Get the matching completer_handle_brkchars_ftype function for FN.
    FN is one of the core completer functions above (filename,
    location, symbol, etc.).  This function is useful for cases when
@@ -623,10 +711,22 @@ extern void complete_expression (complet
 extern void complete_nested_command_line (completion_tracker &tracker,
 					  const char *text);
 
-extern const char *skip_quoted_chars (const char *, const char *,
-				      const char *);
+/* Called from command completion function to skip over /FMT
+   specifications, allowing the rest of the line to be completed.  Returns
+   true if the /FMT is at the end of the current line and there is nothing
+   left to complete, otherwise false is returned.
+
+   In either case *ARGS can be updated to point after any part of /FMT that
+   is present.
+
+   This function is designed so that trying to complete '/' will offer no
+   completions, the user needs to insert the format specification
+   themselves.  Trying to complete '/FMT' (where FMT is any non-empty set
+   of alphanumeric characters) will cause readline to insert a single
+   space, setting the user up to enter the expression.  */
 
-extern const char *skip_quoted (const char *);
+extern bool skip_over_slash_fmt (completion_tracker &tracker,
+				 const char **args);
 
 /* Maximum number of candidates to consider before the completer
    bails by throwing MAX_COMPLETIONS_REACHED_ERROR.  Negative values
@@ -634,4 +734,4 @@ extern const char *skip_quoted (const ch
 
 extern int max_completions;
 
-#endif /* defined (COMPLETER_H) */
+#endif /* GDB_COMPLETER_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.20200303/gdb/config/djgpp/djcheck.sh ./gdb/config/djgpp/djcheck.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/djgpp/djcheck.sh	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/djgpp/djcheck.sh	2026-03-05 02:07:22.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-2025 Free Software Foundation, Inc.
 #
 #  This program is free software; you can redistribute it and/or modify
 #  it under the terms of the GNU General Public License as published by
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/djgpp/djconfig.sh ./gdb/config/djgpp/djconfig.sh
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/djgpp/djconfig.sh	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/djgpp/djconfig.sh	2026-03-05 02:07:22.000000000 +0000
@@ -5,7 +5,7 @@
 # configuring other GNU programs for DJGPP.
 #
 #=====================================================================
-# Copyright (C) 1997-2020 Free Software Foundation, Inc.
+# Copyright (C) 1997-2025 Free Software Foundation, Inc.
 #
 # Originally written by Robert Hoehne, revised by Eli Zaretskii.
 # This file is part of GDB.
@@ -123,7 +123,7 @@ do
 done
 
 # Now set the config shell. It is really needed, that the shell
-# points to a shell with full path and also it must conatain the
+# points to a shell with full path and also it must contain the
 # .exe suffix. I assume here, that bash is installed. If not,
 # install it. Additionally, the pathname must not contain a
 # drive letter, so use the /dev/x/foo format supported by versions
diff -a -u -r --new-file '--show-function-line=^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/djgpp/fnchange.lst ./gdb/config/djgpp/fnchange.lst
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/djgpp/fnchange.lst	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/djgpp/fnchange.lst	2026-03-05 02:07:22.000000000 +0000
@@ -117,6 +117,9 @@
 @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-2020 @V@/gdb/ChangeLog.020
+@V@/gdb/ChangeLog-2021 @V@/gdb/ChangeLog.021
 @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.20200303/gdb/config/djgpp/langinfo.h ./gdb/config/djgpp/langinfo.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/djgpp/langinfo.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/djgpp/langinfo.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* langinfo.h file for DJGPP.
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Written by Eli Zaretskii.
 
    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/>.  */
 
-#ifndef CONFIG_DJGPP_LANGINFO_H
-#define CONFIG_DJGPP_LANGINFO_H
+#ifndef GDB_CONFIG_DJGPP_LANGINFO_H
+#define GDB_CONFIG_DJGPP_LANGINFO_H
 
 #include <nl_types.h>
 
@@ -32,4 +32,4 @@ enum {
 
 extern char *nl_langinfo (nl_item);
 
-#endif /* CONFIG_DJGPP_LANGINFO_H */
+#endif /* GDB_CONFIG_DJGPP_LANGINFO_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.20200303/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.20200303/gdb/config/djgpp/nl_types.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/djgpp/nl_types.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,5 +1,5 @@
 /* nl_types.h for DJGPP.
-   Copyright (C) 2009-2020 Free Software Foundation, Inc.
+   Copyright (C) 2009-2025 Free Software Foundation, Inc.
    Written by Eli Zaretskii.
 
    This file is part of GDB.
@@ -17,9 +17,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/>.  */
 
-#ifndef CONFIG_DJGPP_NL_TYPES_H
-#define CONFIG_DJGPP_NL_TYPES_H
+#ifndef GDB_CONFIG_DJGPP_NL_TYPES_H
+#define GDB_CONFIG_DJGPP_NL_TYPES_H
 
 typedef int nl_item;
 
-#endif /* CONFIG_DJGPP_NL_TYPES_H */
+#endif /* GDB_CONFIG_DJGPP_NL_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.20200303/gdb/config/djgpp/README ./gdb/config/djgpp/README
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/djgpp/README	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/djgpp/README	2026-03-05 02:07:22.000000000 +0000
@@ -175,7 +175,7 @@ SOMETHING.tst (where SOMETHING is the na
 should compare each of the *.tst files with the corresponding *.out
 file and convince yourself that the differences do not indicate a real
 problem.  Examples of differences you can disregard are changes in the
-copyright blurb printed by GDB, values of unitialized variables,
+copyright blurb printed by GDB, values of uninitialized variables,
 addresses of global variables like argv[] and envp[] (which depend on
 the size of your environment), 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.20200303/gdb/config/i386/i386gnu.mn ./gdb/config/i386/i386gnu.mn
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/i386/i386gnu.mn	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/i386/i386gnu.mn	1970-01-01 00:00:00.000000000 +0000
@@ -1,29 +0,0 @@
-# Use our own user stubs for the msg rpcs, so we can make them time out, in
-# case the program is fucked, or we guess the wrong signal thread.
-msg-MIGUFLAGS = -D'MSG_IMPORTS=waittime 1000;'
-
-# ick
-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
-	$(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
-# Normal servers
-%_S.h %_S.c: %.defs
-	$(CPP) $(CPPFLAGS) -DSERVERPREFIX=S_ -x c $< \
-	| $(MIGCOM) -sheader $*_S.h -server $*_S.c -user /dev/null -header /dev/null
-# User rpc stubs
-%_U.h %_U.c: %.defs
-	$(CPP) $(CPPFLAGS) $($*-MIGUFLAGS) -x c $< \
-	| $(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
-
-NAT_GENERATED_FILES = notify_S.h notify_S.c \
-	process_reply_S.h process_reply_S.c \
-	msg_reply_S.h msg_reply_S.c msg_U.h msg_U.c \
-	exc_request_U.h exc_request_U.c exc_request_S.h exc_request_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.20200303/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.20200303/gdb/config/i386/nm-i386gnu.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/i386/nm-i386gnu.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,30 +0,0 @@
-/* Native-dependent definitions for Intel 386 running the GNU Hurd
-   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 CONFIG_I386_NM_I386GNU_H
-#define CONFIG_I386_NM_I386GNU_H
-
-/* Thread flavors used in re-setting the T bit.  */
-#define THREAD_STATE_FLAVOR		i386_REGS_SEGS_STATE
-#define THREAD_STATE_SIZE		i386_THREAD_STATE_COUNT
-#define THREAD_STATE_SET_TRACED(state) \
-  	((struct i386_thread_state *) (state))->efl |= 0x100
-#define THREAD_STATE_CLEAR_TRACED(state) \
-  	((((struct i386_thread_state *) (state))->efl &= ~0x100), 1)
-
-#endif /* CONFIG_I386_NM_I386GNU_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.20200303/gdb/config/i386/nm-x86-gnu.h ./gdb/config/i386/nm-x86-gnu.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/i386/nm-x86-gnu.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/config/i386/nm-x86-gnu.h	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,37 @@
+/* Native-dependent definitions for Intel 386 running the GNU Hurd
+   Copyright (C) 1994-2025 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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_CONFIG_I386_NM_X86_GNU_H
+#define GDB_CONFIG_I386_NM_X86_GNU_H
+
+/* Thread flavors used in re-setting the T bit.  */
+#define THREAD_STATE_FLAVOR		i386_REGS_SEGS_STATE
+#define THREAD_STATE_SIZE		i386_THREAD_STATE_COUNT
+#ifdef __x86_64__
+#define THREAD_STATE_SET_TRACED(state) \
+	((struct i386_thread_state *) (state))->rfl |= 0x100
+#define THREAD_STATE_CLEAR_TRACED(state) \
+	((((struct i386_thread_state *) (state))->rfl &= ~0x100), 1)
+#else
+#define THREAD_STATE_SET_TRACED(state) \
+  	((struct i386_thread_state *) (state))->efl |= 0x100
+#define THREAD_STATE_CLEAR_TRACED(state) \
+  	((((struct i386_thread_state *) (state))->efl &= ~0x100), 1)
+#endif /* __x86_64__ */
+
+#endif /* GDB_CONFIG_I386_NM_X86_GNU_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.20200303/gdb/config/i386/x86-gnu.mn ./gdb/config/i386/x86-gnu.mn
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/i386/x86-gnu.mn	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/config/i386/x86-gnu.mn	2026-03-05 02:07:22.000000000 +0000
@@ -0,0 +1,31 @@
+# Use our own user stubs for the msg rpcs, so we can make them time out, in
+# case the program is fucked, or we guess the wrong signal thread.
+msg-MIGUFLAGS = -D'MSG_IMPORTS=waittime 1000;'
+
+# ick
+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 $(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
+# Normal servers
+%_S.h %_S.c: %.defs
+	$(CPP) $(CPPFLAGS) -DSERVERPREFIX=S_ -x c $< \
+	| $(MIGCOM) -sheader $*_S.h -server $*_S.c -user /dev/null -header /dev/null
+# User rpc stubs
+%_U.h %_U.c: %.defs
+	$(CPP) $(CPPFLAGS) $($*-MIGUFLAGS) -x c $< \
+	| $(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
+# Do not include defs.h since it requires C++. Rather include our own gnu-nat-mig.h
+%_S.o %_U.o : GDB_INCLUDED_HEADER = -include gnu-nat-mig.h
+
+NAT_GENERATED_FILES = notify_S.h notify_S.c \
+	process_reply_S.h process_reply_S.c \
+	msg_reply_S.h msg_reply_S.c msg_U.h msg_U.c \
+	exc_request_U.h exc_request_U.c exc_request_S.h exc_request_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.20200303/gdb/config/nm-linux.h ./gdb/config/nm-linux.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/nm-linux.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/nm-linux.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native support for GNU/Linux.
 
-   Copyright (C) 1999-2020 Free Software Foundation, Inc.
+   Copyright (C) 1999-2025 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/>.  */
 
-#ifndef CONFIG_NM_LINUX_H
-#define CONFIG_NM_LINUX_H
+#ifndef GDB_CONFIG_NM_LINUX_H
+#define GDB_CONFIG_NM_LINUX_H
 
 /* Use elf_gregset_t and elf_fpregset_t, rather than
    gregset_t and fpregset_t.  */
@@ -26,4 +26,4 @@
 #define GDB_GREGSET_T  elf_gregset_t
 #define GDB_FPREGSET_T elf_fpregset_t
 
-#endif /* CONFIG_NM_LINUX_H */
+#endif /* GDB_CONFIG_NM_LINUX_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.20200303/gdb/config/nm-nto.h ./gdb/config/nm-nto.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config/nm-nto.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/nm-nto.h	1970-01-01 00:00:00.000000000 +0000
@@ -1,29 +0,0 @@
-/* Native support for QNX Neutrino version 6.
-
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
-
-   This code was donated by QNX Software Systems 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/>.  */
-
-#ifndef CONFIG_NM_NTO_H
-#define CONFIG_NM_NTO_H
-
-/* Setup the valid realtime signal range.  */
-#define REALTIME_LO 41
-#define REALTIME_HI 56
-
-#endif /* CONFIG_NM_NTO_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.20200303/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.20200303/gdb/config/sparc/nm-sol2.h	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config/sparc/nm-sol2.h	2026-03-05 02:07:22.000000000 +0000
@@ -1,6 +1,6 @@
 /* Native-dependent definitions for Solaris SPARC.
 
-   Copyright (C) 2003-2020 Free Software Foundation, Inc.
+   Copyright (C) 2003-2025 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -17,10 +17,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/>.  */
 
-#ifndef CONFIG_SPARC_NM_SOL2_H
-#define CONFIG_SPARC_NM_SOL2_H
+#ifndef GDB_CONFIG_SPARC_NM_SOL2_H
+#define GDB_CONFIG_SPARC_NM_SOL2_H
 
 #define GDB_GREGSET_T prgregset_t
 #define GDB_FPREGSET_T prfpregset_t
 
-#endif /* CONFIG_SPARC_NM_SOL2_H */
+#endif /* GDB_CONFIG_SPARC_NM_SOL2_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.20200303/gdb/config.in ./gdb/config.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/config.in	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/config.in	2026-03-05 02:07:22.000000000 +0000
@@ -3,6 +3,9 @@
 /* Define if building universal (internal helper macro) */
 #undef AC_APPLE_UNIVERSAL_BUILD
 
+/* Additional directories to look for separate debug info. */
+#undef ADDITIONAL_DEBUG_DIRS
+
 /* Directories from which to load auto-loaded scripts. */
 #undef AUTO_LOAD_DIR
 
@@ -36,10 +39,22 @@
 /* Define to BFD's default target vector. */
 #undef DEFAULT_BFD_VEC
 
+/* defined if dwarf format was requested. */
+#undef DWARF_FORMAT_AVAILABLE
+
+/* 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
 
+/* Additional targets configured into GDB. */
+#undef ENABLE_TARGETS
+
+/* The .gdbearlyinit filename. */
+#undef GDBEARLYINIT
+
 /* The .gdbinit filename. */
 #undef GDBINIT
 
@@ -78,17 +93,38 @@
    */
 #undef HAVE_ALLOCA_H
 
+/* Define if amd-dbgapi is being linked in. */
+#undef HAVE_AMD_DBGAPI
+
+/* Define to 1 if you have the <asm/termios.h> header file. */
+#undef HAVE_ASM_TERMIOS_H
+
 /* Define to 1 if you have the `btowc' function. */
 #undef HAVE_BTOWC
 
+/* Define to 1 if you have the Mac OS X function
+   CFLocaleCopyPreferredLanguages in the CoreFoundation framework. */
+#undef HAVE_CFLOCALECOPYPREFERREDLANGUAGES
+
+/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in
+   the CoreFoundation framework. */
+#undef HAVE_CFPREFERENCESCOPYAPPVALUE
+
+/* Define if compiling support to gdb compile. */
+#undef HAVE_COMPILE
+
 /* Define to 1 if you have the <cursesX.h> header file. */
 #undef HAVE_CURSESX_H
 
 /* Define to 1 if you have the <curses.h> header file. */
 #undef HAVE_CURSES_H
 
-/* define if the compiler supports basic C++11 syntax */
-#undef HAVE_CXX11
+/* define if the compiler supports basic C++17 syntax */
+#undef HAVE_CXX17
+
+/* Define if the GNU dcgettext() function is already present or preinstalled.
+   */
+#undef HAVE_DCGETTEXT
 
 /* Define to 1 if you have the declaration of `ADDR_NO_RANDOMIZE', and to 0 if
    you don't. */
@@ -109,10 +145,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
@@ -158,12 +190,15 @@
 /* Define if <sys/procfs.h> has elf_fpregset_t. */
 #undef HAVE_ELF_FPREGSET_T
 
-/* Define to 1 if you have the <elf_hp.h> header file. */
-#undef HAVE_ELF_HP_H
-
 /* Define to 1 if your system has the etext variable. */
 #undef HAVE_ETEXT
 
+/* Define to 1 if execinfo.h backtrace functions are available. */
+#undef HAVE_EXECINFO_BACKTRACE
+
+/* Define to 1 if you have the <execinfo.h> header file. */
+#undef HAVE_EXECINFO_H
+
 /* Define to 1 if you have the `fdwalk' function. */
 #undef HAVE_FDWALK
 
@@ -191,6 +226,9 @@
 /* Define to 1 if you have the `getrusage' function. */
 #undef HAVE_GETRUSAGE
 
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
 /* Define to 1 if you have the `getuid' function. */
 #undef HAVE_GETUID
 
@@ -203,7 +241,7 @@
 /* Define if Guile supports manual finalization. */
 #undef HAVE_GUILE_MANUAL_FINALIZATION
 
-/* Define if you have the iconv() function. */
+/* Define if you have the iconv() function and it works. */
 #undef HAVE_ICONV
 
 /* Define to 1 if you have the `iconvlist' function. */
@@ -212,11 +250,11 @@
 /* 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 to 1 if you have the <IOKit/serial/ioss.h> header file. */
+#undef HAVE_IOKIT_SERIAL_IOSS_H
 
-/* Define to 1 if your system has the kinfo_getvmmap function. */
-#undef HAVE_KINFO_GETVMMAP
+/* Define to 1 if you have the `kinfo_getfile' function. */
+#undef HAVE_KINFO_GETFILE
 
 /* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
 #undef HAVE_LANGINFO_CODESET
@@ -227,6 +265,18 @@
 /* Define if you have the babeltrace library. */
 #undef HAVE_LIBBABELTRACE
 
+/* Define if libbacktrace is being used. */
+#undef HAVE_LIBBACKTRACE
+
+/* Define to 1 if curses is enabled. */
+#undef HAVE_LIBCURSES
+
+/* Define to 1 if debuginfod is enabled. */
+#undef HAVE_LIBDEBUGINFOD
+
+/* Define to 1 if debuginfod section downloading is supported. */
+#undef HAVE_LIBDEBUGINFOD_FIND_SECTION
+
 /* Define if you have the expat library. */
 #undef HAVE_LIBEXPAT
 
@@ -242,9 +292,6 @@
 /* Define to 1 if you have the `m' library (-lm). */
 #undef HAVE_LIBM
 
-/* Define if you have the mpfr library. */
-#undef HAVE_LIBMPFR
-
 /* Define to 1 if you have the <libunwind-ia64.h> header file. */
 #undef HAVE_LIBUNWIND_IA64_H
 
@@ -296,9 +343,6 @@
 /* Define to 1 if you have the <nlist.h> header file. */
 #undef HAVE_NLIST_H
 
-/* Define if you support the personality syscall. */
-#undef HAVE_PERSONALITY
-
 /* Define to 1 if you have the `pipe' function. */
 #undef HAVE_PIPE
 
@@ -359,9 +403,6 @@
 /* Define if sys/ptrace.h defines the PT_GETDBREGS request. */
 #undef HAVE_PT_GETDBREGS
 
-/* Define if sys/ptrace.h defines the PT_GETXMMREGS request. */
-#undef HAVE_PT_GETXMMREGS
-
 /* Define to 1 if you have the `pt_insn_event' function. */
 #undef HAVE_PT_INSN_EVENT
 
@@ -371,6 +412,9 @@
 /* Define if Python interpreter is being linked in. */
 #undef HAVE_PYTHON
 
+/* Define to 1 if you have the <readline/readline.h> header file. */
+#undef HAVE_READLINE_READLINE_H
+
 /* Define to 1 if you have the `resize_term' function. */
 #undef HAVE_RESIZE_TERM
 
@@ -416,6 +460,9 @@
 /* Define to 1 if you have the `sigsetmask' function. */
 #undef HAVE_SIGSETMASK
 
+/* Define to 1 if you have the `sigtimedwait' function. */
+#undef HAVE_SIGTIMEDWAIT
+
 /* Define to 1 if you have the `socketpair' function. */
 #undef HAVE_SOCKETPAIR
 
@@ -446,6 +493,9 @@
 /* Define to 1 if `pl_tdname' is a member of `struct ptrace_lwpinfo'. */
 #undef HAVE_STRUCT_PTRACE_LWPINFO_PL_TDNAME
 
+/* Define to 1 if `variant.ptwrite' is a member of `struct pt_event'. */
+#undef HAVE_STRUCT_PT_EVENT_VARIANT_PTWRITE
+
 /* Define to 1 if `enabled' is a member of `struct pt_insn'. */
 #undef HAVE_STRUCT_PT_INSN_ENABLED
 
@@ -470,12 +520,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
 
@@ -494,6 +538,9 @@
 /* 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/procctl.h> header file. */
+#undef HAVE_SYS_PROCCTL_H
+
 /* Define to 1 if you have the <sys/procfs.h> header file. */
 #undef HAVE_SYS_PROCFS_H
 
@@ -551,15 +598,9 @@
 /* Define to 1 if you have the <vfork.h> header file. */
 #undef HAVE_VFORK_H
 
-/* Define to 1 if you have the `waitpid' function. */
-#undef HAVE_WAITPID
-
 /* Define to 1 if you have the <wait.h> header file. */
 #undef HAVE_WAIT_H
 
-/* Define to 1 if you have the `wborder' function. */
-#undef HAVE_WBORDER
-
 /* Define to 1 if you have the <windows.h> header file. */
 #undef HAVE_WINDOWS_H
 
@@ -572,9 +613,15 @@
 /* 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
 
+/* Define to 1 if zstd is enabled. */
+#undef HAVE_ZSTD
+
 /* Define to 1 if your system has the _etext variable. */
 #undef HAVE__ETEXT
 
@@ -597,6 +644,13 @@
    moved. */
 #undef JIT_READER_DIR_RELOCATABLE
 
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#undef LT_OBJDIR
+
+/* defined if mdebug format was requested. */
+#undef MDEBUG_FORMAT_AVAILABLE
+
 /* Name of this package. */
 #undef PACKAGE
 
@@ -649,6 +703,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
 
@@ -664,9 +722,6 @@
 /* Define to 1 if the `setpgrp' function takes no argument. */
 #undef SETPGRP_VOID
 
-/* The size of `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
 /* The size of `long long', as computed by sizeof. */
 #undef SIZEOF_LONG_LONG
 
@@ -690,6 +745,9 @@
 /* Define to 1 if you have the ANSI C header files. */
 #undef STDC_HEADERS
 
+/* Which binary file formats were requested at configure time. */
+#undef SUPPORTED_BINARY_FILE_FORMATS
+
 /* automatically load a system-wide gdbinit file */
 #undef SYSTEM_GDBINIT
 
@@ -719,9 +777,6 @@
 /* Define if <thread_db.h> has the TD_VERSION error code. */
 #undef THREAD_DB_HAS_TD_VERSION
 
-/* Define to 1 if the regex included in libiberty should be used. */
-#undef USE_INCLUDED_REGEX
-
 /* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE
@@ -752,13 +807,14 @@
 /* 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
 
-/* Define if the simulator is being linked in. */
-#undef WITH_SIM
-
 /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
    significant byte first (like Motorola and SPARC, unlike Intel). */
 #if defined AC_APPLE_UNIVERSAL_BUILD
@@ -792,6 +848,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.20200303/gdb/configure ./gdb/configure
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-9.1.90.20200303/gdb/configure	2020-03-03 02:08:53.000000000 +0000
+++ ./gdb/configure	2026-03-05 02:07:22.000000000 +0000
@@ -196,7 +196,15 @@ test -x / || exit 1"
   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"
+test \$(( 1 + 1 )) = 2 || exit 1
+
+  test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
+    ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
+    PATH=/empty FPATH=/empty; export PATH FPATH
+    test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
+      || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
   if (eval "$as_required") 2>/dev/null; then :
   as_have_required=yes
 else
@@ -553,6 +561,8 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P
 # Sed expression to map a string onto a valid variable name.
 as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
 
+SHELL=${CONFIG_SHELL-/bin/sh}
+
 
 test -n "$DJDIR" || exec 7<&0 </dev/null
 exec 6>&1
@@ -619,8 +629,9 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-enable_option_checking=no
 ac_header_list=
+gt_needs=
+enable_option_checking=no
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
 GCORE_TRANSFORM_NAME
@@ -628,12 +639,13 @@ GDB_TRANSFORM_NAME
 XSLTPROC
 NM_H
 GDB_NM_FILE
-LTLIBXXHASH
-LIBXXHASH
-HAVE_LIBXXHASH
+CTF_DEPS
+LIBCTF
 LTLIBBABELTRACE
 LIBBABELTRACE
 HAVE_LIBBABELTRACE
+LIBBACKTRACE_LIB
+LIBBACKTRACE_INC
 HAVE_NATIVE_GCORE_HOST
 NAT_GENERATED_FILES
 XM_CLIBS
@@ -688,12 +700,13 @@ TCL_BIN_DIR
 TCL_PATCH_LEVEL
 TCL_VERSION
 WIN32LDAPP
+WIN32LIBS
 GUI_CFLAGS_X
 LIBGUI
 LTLIBLZMA
 LIBLZMA
 HAVE_LIBLZMA
-WIN32LIBS
+FORMAT_SRCS
 SER_HARDWIRE
 WERROR_CFLAGS
 WARN_CFLAGS
@@ -702,15 +715,6 @@ SYSTEM_GDBINIT
 TARGET_SYSTEM_ROOT
 CONFIG_LDFLAGS
 RDYNAMIC
-PTHREAD_CFLAGS
-PTHREAD_LIBS
-PTHREAD_CC
-ax_pthread_config
-SED
-ALLOCA
-LTLIBIPT
-LIBIPT
-HAVE_LIBIPT
 SRCHIGH_CFLAGS
 SRCHIGH_LIBS
 HAVE_GUILE_FALSE
@@ -726,40 +730,38 @@ PYTHON_LIBS
 PYTHON_CPPFLAGS
 PYTHON_CFLAGS
 python_prog_path
-LTLIBMPFR
-LIBMPFR
-HAVE_LIBMPFR
+GMPINC
+GMPLIBS
 LTLIBEXPAT
 LIBEXPAT
 HAVE_LIBEXPAT
 JIT_READER_DIR
 TARGET_PTR
+READLINE_DOC_SOURCE_INCLUDES
 READLINE_TEXI_INCFLAG
 READLINE_CFLAGS
 READLINE_DEPS
 READLINE
-LTLIBICONV
-LIBICONV
+ZSTD_LIBS
+ZSTD_CFLAGS
 zlibinc
 zlibdir
 MIG
 WINDRES
 DLLTOOL
-AR
 YFLAGS
 YACC
-RANLIB
-LN_S
-INSTALL_DATA
-INSTALL_SCRIPT
-INSTALL_PROGRAM
-AWK
 REPORT_BUGS_TEXI
 REPORT_BUGS_TO
 PKGVERSION
 CODESIGN_CERT
+DEBUGINFOD_LIBS
+DEBUGINFOD_CFLAGS
 HAVE_NATIVE_GCORE_TARGET
 TARGET_OBS
+AMD_DBGAPI_LIBS
+AMD_DBGAPI_CFLAGS
+HAVE_GSTACK
 subdirs
 GDB_DATADIR
 DEBUGDIR
@@ -772,21 +774,67 @@ GENCAT
 INSTOBJEXT
 DATADIRNAME
 CATALOGS
-POSUB
-GMSGFMT
-XGETTEXT
 INCINTL
 LIBINTL_DEP
+POSUB
+LTLIBINTL
 LIBINTL
+INTLLIBS
+LTLIBICONV
+LIBICONV
+INTL_MACOSX_LIBS
+MSGMERGE
+XGETTEXT
+GMSGFMT
+MSGFMT
 USE_NLS
+MKINSTALLDIRS
+INSTALL_DATA
+INSTALL_SCRIPT
+INSTALL_PROGRAM
+SET_MAKE
+PKG_CONFIG_LIBDIR
+PKG_CONFIG_PATH
+PKG_CONFIG
 CCDEPMODE
 DEPDIR
 am__leading_dot
+LTLIBXXHASH
+LIBXXHASH
+HAVE_LIBXXHASH
+LTLIBIPT
+LIBIPT
+HAVE_LIBIPT
+PTHREAD_CFLAGS
+PTHREAD_LIBS
+PTHREAD_CC
+ax_pthread_config
+ALLOCA
 CXX_DIALECT
-HAVE_CXX11
+HAVE_CXX17
+CXXCPP
+OTOOL64
+OTOOL
+LIPO
+NMEDIT
+DSYMUTIL
+AWK
+RANLIB
+AR
+OBJDUMP
+LN_S
+NM
+ac_ct_DUMPBIN
+DUMPBIN
+LD
+FGREP
+SED
+LIBTOOL
+target_noncanonical
 INSTALL_STRIP_PROGRAM
 STRIP
 install_sh
+LARGEFILE_CPPFLAGS
 target_os
 target_vendor
 target_cpu
@@ -859,16 +907,39 @@ enable_option_checking
 enable_maintainer_mode
 enable_plugins
 enable_largefile
+enable_shared
+enable_static
+with_pic
+enable_fast_install
+with_gnu_ld
+enable_libtool_lock
+enable_threading
+with_intel_pt
+enable_rpath
+with_libipt_prefix
+with_libipt_type
+with_xxhash
+with_libxxhash_prefix
+with_libxxhash_type
+enable_nls
+with_libiconv_prefix
+with_libiconv_type
+with_libintl_prefix
+with_libintl_type
 with_separate_debug_dir
+with_additional_debug_dirs
 with_gdb_datadir
 with_relocated_sources
 with_auto_load_dir
 with_auto_load_safe_path
 enable_targets
-enable_64_bit_bfd
-enable_gdbmi
+enable_binary_file_formats
+enable_gdb_mdebug_support
+enable_gdb_dwarf_support
+with_amd_dbgapi
 enable_tui
 enable_gdbtk
+with_debuginfod
 with_libunwind_ia64
 with_curses
 enable_profiling
@@ -876,22 +947,18 @@ enable_codesign
 with_pkgversion
 with_bugurl
 with_system_zlib
-with_gnu_ld
-enable_rpath
-with_libiconv_prefix
+with_zstd
 with_iconv_bin
 with_system_readline
 with_jit_reader_dir
 with_expat
 with_libexpat_prefix
-with_mpfr
-with_libmpfr_prefix
+with_libexpat_type
 with_python
+with_python_libdir
 with_guile
+enable_gdb_compile
 enable_source_highlight
-with_intel_pt
-with_libipt_prefix
-with_included_regex
 with_sysroot
 with_system_gdbinit
 with_system_gdbinit_dir
@@ -901,15 +968,16 @@ enable_gdb_build_warnings
 enable_ubsan
 with_lzma
 with_liblzma_prefix
+with_liblzma_type
 with_tcl
 with_tk
 with_x
 enable_sim
-enable_gdbserver
+enable_libbacktrace
 with_babeltrace
 with_libbabeltrace_prefix
-with_xxhash
-with_libxxhash_prefix
+with_libbabeltrace_type
+enable_libctf
 enable_unit_tests
 '
       ac_precious_vars='build_alias
@@ -924,14 +992,25 @@ CXX
 CXXFLAGS
 CCC
 CPP
+CXXCPP
+PKG_CONFIG
+PKG_CONFIG_PATH
+PKG_CONFIG_LIBDIR
 MAKEINFO
 MAKEINFOFLAGS
+AMD_DBGAPI_CFLAGS
+AMD_DBGAPI_LIBS
+DEBUGINFOD_CFLAGS
+DEBUGINFOD_LIBS
 YACC
 YFLAGS
+ZSTD_CFLAGS
+ZSTD_LIBS
+GMPLIBS
+GMPINC
 XMKMF'
 ac_subdirs_all='testsuite
-gdbtk
-gdbserver'
+gdbtk'
 
 # Initialize some variables set by options.
 ac_init_help=
@@ -1557,15 +1636,33 @@ Optional Features:
                           sometimes confusing) to the casual installer
   --enable-plugins        Enable support for plugins
   --disable-largefile     omit support for large files
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-threading      include support for parallel processing of data
+                          (yes/no)
+  --disable-rpath         do not hardcode runtime library paths
+  --disable-nls           do not use Native Language Support
   --enable-targets=TARGETS
                           alternative target configurations
-  --enable-64-bit-bfd     64-bit support (on hosts with narrower word sizes)
-  --disable-gdbmi         disable machine-interface (MI)
+  --enable-binary-file-formats=FORMATS
+                          enable support for selected file formats (default
+                          'all') available formats: coff, dbx, elf, macho,
+                          mips, xcoff, all
+  --enable-gdb-mdebug-support
+                          Enable support for the mdebug debuginfo format
+                          (default 'yes')
+  --enable-gdb-dwarf-support
+                          Enable support for the dwarf debuginfo format
+                          (default 'yes')
   --enable-tui            enable full-screen terminal user interface (TUI)
   --enable-gdbtk          enable gdbtk graphical user interface (GUI)
   --enable-profiling      enable profiling of GDB
   --enable-codesign=CERT  sign gdb with 'codesign -s CERT'
-  --disable-rpath         do not hardcode runtime library paths
+  --enable-gdb-compile    enable support for the compile subsystem, default
+                          'yes'
   --enable-source-highlight
                           enable source-highlight for source listings
   --enable-werror         treat compile warnings as errors
@@ -1575,17 +1672,39 @@ 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-libbacktrace   use libbacktrace to write a backtrace after a fatal
+                          signal.
+  --enable-libctf         Handle .ctf type-info sections [default=yes]
   --enable-unit-tests     Enable the inclusion of unit tests when compiling
                           GDB
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=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-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)
+  --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-libintl-prefix[=DIR]  search for libintl in DIR/include and DIR/lib
+  --without-libintl-prefix     don't search for libintl in includedir and libdir
+  --with-libintl-type=TYPE     type of library to search for (auto/static/shared)
   --with-separate-debug-dir=PATH
                           look for global separate debug info in this path
                           [LIBDIR/debug]
+  --with-additional-debug-dirs=PATHs
+                          colon-separated list of additional directories to
+                          search for separate debug info
   --with-gdb-datadir=PATH look for global separate data files in this path
                           [DATADIR/gdb]
   --with-relocated-sources=PATH
@@ -1598,15 +1717,17 @@ Optional Packages:
                           [--with-auto-load-dir]
   --without-auto-load-safe-path
                           do not restrict auto-loaded files locations
+  --with-amd-dbgapi       support for the amd-dbgapi target (yes / no / auto)
+  --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
   --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-system-zlib      use installed libz
-  --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-zstd             support zstd compressed debug sections
+                          (default=auto)
   --with-iconv-bin=PATH   specify where to find the iconv program
   --with-system-readline  use installed readline library
   --with-jit-reader-dir=PATH
@@ -1614,20 +1735,13 @@ 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-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-libexpat-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
-  --without-included-regex
-                          don't use included regex; this is the default on
-                          systems with version 2 of the GNU C library (use
-                          with caution on other system)
   --with-sysroot[=DIR]    search for usr/lib et al within DIR
   --with-system-gdbinit=PATH
                           automatically load a system-wide gdbinit file
@@ -1637,15 +1751,14 @@ 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-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-libbabeltrace-type=TYPE     type of library to search for (auto/static/shared)
 
 Some influential environment variables:
   CC          C compiler command
@@ -1658,15 +1771,33 @@ Some influential environment variables:
   CXX         C++ compiler command
   CXXFLAGS    C++ compiler flags
   CPP         C preprocessor
+  CXXCPP      C++ preprocessor
+  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
   MAKEINFO    Parent configure detects if it is of sufficient version.
   MAKEINFOFLAGS
               Parameters for MAKEINFO.
+  AMD_DBGAPI_CFLAGS
+              C compiler flags for AMD_DBGAPI, overriding pkg-config
+  AMD_DBGAPI_LIBS
+              linker flags for AMD_DBGAPI, overriding pkg-config
+  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'.
   YFLAGS      The list of arguments that will be passed by default to $YACC.
               This script will default YFLAGS to the empty string to avoid a
               default value of `-d' given by some make applications.
+  ZSTD_CFLAGS C compiler flags for ZSTD, overriding pkg-config
+  ZSTD_LIBS   linker flags for ZSTD, overriding pkg-config
+  GMPLIBS     How to link GMP
+  GMPINC      How to find GMP include files
   XMKMF       Path to xmkmf, Makefile generator for X Window System
 
 Use these variables to override the choices made by `configure' or to help
@@ -2068,189 +2199,6 @@ fi
 
 } # ac_fn_c_try_link
 
-# 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_func LINENO FUNC VAR
 # ----------------------------------
 # Tests whether FUNC exists, setting the cache variable VAR accordingly
@@ -2318,62 +2266,88 @@ 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 ()
+# ac_fn_cxx_try_cpp LINENO
+# ------------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_cpp ()
 {
   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"
+  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_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then :
+  ac_retval=0
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$5
-int
-main ()
+  $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_cpp
+
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
 {
-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"
+  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
-  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
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_retval=1
 fi
-eval ac_res=\$$4
-	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+  # 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_check_member
+} # ac_fn_cxx_try_link
 
 # ac_fn_c_check_type LINENO TYPE VAR INCLUDES
 # -------------------------------------------
@@ -2475,51 +2449,62 @@ eval ac_res=\$$3
 
 } # ac_fn_c_check_decl
 
-# ac_fn_cxx_try_link LINENO
-# -------------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded.
-ac_fn_cxx_try_link ()
+# 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
-  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
+  { $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
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-	ac_retval=1
+  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
-  # 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
+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
-  as_fn_set_status $ac_retval
 
-} # ac_fn_cxx_try_link
+} # ac_fn_c_check_member
 
 # ac_fn_cxx_check_func LINENO FUNC VAR
 # ------------------------------------
@@ -2587,6 +2572,189 @@ eval ac_res=\$$3
   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.
@@ -2874,6 +3042,7 @@ 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"
+gt_needs="$gt_needs "
 # Check that the precious variables saved in the cache have kept the same
 # value.
 ac_cache_corrupted=false
@@ -2945,6 +3114,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 
+
+
 ac_config_headers="$ac_config_headers config.h:config.in"
 
 
@@ -2971,9 +3142,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 +4900,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
 
@@ -4945,88 +5154,6 @@ rm -rf conftest*
 fi
 
 
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${CC-cc} option to accept ANSI C" >&5
-$as_echo_n "checking for ${CC-cc} option to accept ANSI C... " >&6; }
-if ${am_cv_prog_cc_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  am_cv_prog_cc_stdc=no
-ac_save_CC="$CC"
-# Don't try gcc -ansi; that turns off useful extensions and
-# breaks some systems' header files.
-# AIX			-qlanglvl=ansi
-# Ultrix and OSF/1	-std1
-# HP-UX 10.20 and later	-Ae
-# HP-UX older versions	-Aa -D_HPUX_SOURCE
-# SVR4			-Xc -D__EXTENSIONS__
-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-/* 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;
-}
-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
-if ac_fn_c_try_compile "$LINENO"; then :
-  am_cv_prog_cc_stdc="$ac_arg"; break
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-done
-CC="$ac_save_CC"
-
-fi
-
-if test -z "$am_cv_prog_cc_stdc"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_stdc" >&5
-$as_echo "$am_cv_prog_cc_stdc" >&6; }
-fi
-case "x$am_cv_prog_cc_stdc" in
-  x|xno) ;;
-  *) CC="$CC $am_cv_prog_cc_stdc" ;;
-esac
-
 # Expand $ac_aux_dir to an absolute path.
 am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
@@ -5170,2095 +5297,2112 @@ ac_configure="$SHELL $ac_aux_dir/configu
 
 
 
-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.  */
-
+# Set build, build_cpu, build_vendor and build_os.
 
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
 
-#ifndef __cplusplus
+# Set host, host_cpu, host_vendor, and host_os.
 
-#error "This is not a C++ compiler"
 
-#elif __cplusplus < 201103L
+# Set target, target_cpu, target_vendor, and target_os.
 
-#error "This is not a C++11 compiler"
 
-#else
+ case ${build_alias} in
+  "") build_noncanonical=${build} ;;
+  *) build_noncanonical=${build_alias} ;;
+esac
 
-namespace cxx11
-{
+ case ${host_alias} in
+  "") host_noncanonical=${build_noncanonical} ;;
+  *) host_noncanonical=${host_alias} ;;
+esac
 
-  namespace test_static_assert
-  {
+ case ${target_alias} in
+  "") target_noncanonical=${host_noncanonical} ;;
+  *) target_noncanonical=${target_alias} ;;
+esac
 
-    template <typename T>
-    struct check
-    {
-      static_assert(sizeof(int) <= sizeof(T), "not big enough");
-    };
 
-  }
 
-  namespace test_final_override
-  {
 
-    struct Base
-    {
-      virtual void f() {}
-    };
+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"`
 
-    struct Derived : public Base
-    {
-      virtual void f() override {}
-    };
 
-  }
+# We require libtool to link with the in-tree libtool libraries
+# the proper way.
+case `pwd` in
+  *\ * | *\	*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
 
-  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;
+macro_version='2.2.7a'
+macro_revision='1.3134'
 
-  }
 
-  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, "");
+ltmain="$ac_aux_dir/ltmain.sh"
 
-  }
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
 
-  namespace test_constexpr
-  {
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
 
-    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;
-    }
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
 
-    template < typename CharT >
-    unsigned long constexpr
-    strlen_c(const CharT *const s) noexcept
-    {
-      return strlen_c_r(s, 0UL);
-    }
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
 
-    static_assert(strlen_c("") == 0UL, "");
-    static_assert(strlen_c("1") == 1UL, "");
-    static_assert(strlen_c("example") == 7UL, "");
-    static_assert(strlen_c("another\0example") == 7UL, "");
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
 
-  }
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
 
-  namespace test_rvalue_references
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`print -r -- -n 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
+else
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
   {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
+fi
 
-    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, "");
-    }
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
 
-  }
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
 
-  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, "");
+{ $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
 
-  // 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
-  {
+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
 
-    struct foo {};
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
 
-    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
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
+  $as_echo_n "(cached) " >&6
 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 echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_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 fgrep; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      as_fn_executable_p "$ac_path_FGREP" || continue
+# Check for GNU ac_path_FGREP and select it if it is found.
+  # Check for GNU $ac_path_FGREP
+case `"$ac_path_FGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_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 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "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_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_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
 
-    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
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
-  ac_save_CXX="$CXX"
-         CXX="$CXX $switch"
-         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  ac_cv_path_FGREP=$FGREP
+fi
 
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
 
-// If the compiler admits that it is not ready for C++11, why torture it?
-// Hopefully, this will speed up the test.
 
-#ifndef __cplusplus
+test -z "$GREP" && GREP=grep
 
-#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;
-    }
 
-  }
+# 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
 
-  namespace test_type_deduction
-  {
+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 $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&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.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname 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 ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
 
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
+LD="$lt_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 ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
-    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
-  {
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$NM"; then
+   # Let the user override the nm to test.
+   lt_nm_to_check="$NM"
+ else
+   lt_nm_to_check="${ac_tool_prefix}nm"
+   if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+     lt_nm_to_check="$lt_nm_to_check nm"
+   fi
+ fi
+ for lt_tmp_nm in "$lt_nm_to_check"; do
+   lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+   for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+     IFS="$lt_save_ifs"
+     test -z "$ac_dir" && ac_dir=.
+     # Strip out any user-provided options from the nm to test twice,
+     # the first time to test to see if nm (rather than its options) has
+     # an explicit path, the second time to yield a file which can be
+     # nm'ed itself.
+     tmp_nm_path="`$ECHO "$lt_tmp_nm" | sed 's, -.*$,,'`"
+     case "$tmp_nm_path" in
+     */*|*\\*) tmp_nm="$lt_tmp_nm";;
+     *) tmp_nm="$ac_dir/$lt_tmp_nm";;
+     esac
+     tmp_nm_to_nm="`$ECHO "$tmp_nm" | sed 's, -.*$,,'`"
+     if test -f "$tmp_nm_to_nm" || test -f "$tmp_nm_to_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
+       *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B"
+	 break
+	 ;;
+       *)
+	 case `"$tmp_nm" -p "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in
+	 *$tmp_nm*)
+	   lt_cv_path_NM="$tmp_nm -p"
+	   break
+	   ;;
+	 *)
+	   lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	   continue # so that we can try to find one that supports BSD flags
+	   ;;
+	 esac
+	 ;;
+       esac
+     fi
+   done
+   IFS="$lt_save_ifs"
+ done
+ : ${lt_cv_path_NM=no}
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
+else
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  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_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # 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_DUMPBIN="$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
 
-    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;
-    }
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-    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, "");
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+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_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # 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_DUMPBIN="$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_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-  namespace test_rvalue_references
-  {
 
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
+  test -n "$ac_ct_DUMPBIN" && break
+done
 
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  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
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
 
-    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, "");
-    }
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
 
-  }
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
+fi
+test -z "$NM" && NM=nm
 
-  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();
-    }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
+  fi
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
 
-    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;
-    }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; 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, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+fi
 
-    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);
-    }
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
 
-  }
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
 
-  namespace test_variadic_templates
-  {
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
 
-    template <int...>
-    struct sum;
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
 
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
 
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
 
-    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, "");
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
 
-  }
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[	 ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # If test is not a shell built-in, we'll probably end up computing a
+      # maximum length that is only half of the actual maximum length, but
+      # we can't tell.
+      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
+	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+	      test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
 
-  // 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
-  {
+fi
 
-    struct foo {};
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+fi
+max_cmd_len=$lt_cv_sys_max_cmd_len
 
-    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); }
 
-  }
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
 
-}  // namespace cxx11
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
 
-#endif  // __cplusplus >= 201103L
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
 
 
-_ACEOF
-if ac_fn_cxx_try_compile "$LINENO"; then :
-  eval $cachevar=yes
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
 else
-  eval $cachevar=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-         CXX="$ac_save_CXX"
+  lt_unset=false
 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
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
 
-#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 {}
-    };
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
 
-  }
 
-  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
-  {
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; 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_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # 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_OBJDUMP="${ac_tool_prefix}objdump"
+    $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
 
-    template < typename T1, typename T2 >
-    struct is_same
-    {
-      static const bool value = false;
-    };
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-    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;
-    }
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; 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_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # 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_OBJDUMP="objdump"
+    $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
 
-    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);
-    }
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-  }
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  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
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
 
-  namespace test_noexcept
-  {
+test -z "$OBJDUMP" && OBJDUMP=objdump
 
-    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
-  {
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
 
-    template < int N >
-    struct answer
-    {
-      static constexpr int value = N;
-    };
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    answer<1> f(int&)       { return answer<1>(); }
-    answer<2> f(const int&) { return answer<2>(); }
-    answer<3> f(int&&)      { return answer<3>(); }
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    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, "");
-    }
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
 
-  }
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
 
-  namespace test_uniform_initialization
-  {
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
 
-    struct test
-    {
-      static const int zero {};
-      static const int one {1};
-    };
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
 
-    static_assert(test::zero == 0, "");
-    static_assert(test::one == 1, "");
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-  }
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
 
-  namespace test_lambdas
-  {
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    void
-    test1()
-    {
-      auto lambda1 = [](){};
-      auto lambda2 = lambda1;
-      lambda1();
-      lambda2();
-    }
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    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;
-    }
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
 
-    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);
-    }
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
 
-  }
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-  namespace test_variadic_templates
-  {
+# This must be Linux ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    template <int...>
-    struct sum;
+netbsd*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
 
-    template <int N0, int... N1toN>
-    struct sum<N0, N1toN...>
-    {
-      static constexpr auto value = N0 + sum<N1toN...>::value;
-    };
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
 
-    template <>
-    struct sum<>
-    {
-      static constexpr auto value = 0;
-    };
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    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, "");
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
 
-  }
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-  // 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
-  {
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    struct foo {};
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    template<typename T>
-    using member = typename T::member_type;
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-    template<typename T>
-    void func(...) {}
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
 
-    template<typename T>
-    void func(member<T>*) {}
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+vxworks*)
+  # Assume VxWorks cross toolchains are built on Linux, possibly
+  # as canadian for Windows hosts.
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
 
-    void test();
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
-    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
 
 
+plugin_option=
+plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll"
+for plugin in $plugin_names; do
+  plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin`
+  if test x$plugin_so = x$plugin; then
+    plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin`
+  fi
+  if test x$plugin_so != x$plugin; then
+    plugin_option="--plugin $plugin_so"
+    break
+  fi
+done
 
+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
 
-# Dependency checking.
-rm -rf .tst 2>/dev/null
-mkdir .tst 2>/dev/null
-if test -d .tst; then
-  am__leading_dot=.
+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
-  am__leading_dot=_
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-rmdir .tst 2>/dev/null
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depdir"
-
 
-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 :
+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 -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`
+  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
-  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
   done
+IFS=$as_save_IFS
 
-  cd ..
-  rm -rf conftest.dir
+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
-  am_cv_CC_dependencies_compiler_type=none
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  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
-{ $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
 
+test -z "$AR" && AR=ar
+if test -n "$plugin_option"; then
+  if $AR --help 2>&1 | grep -q "\--plugin"; then
+    touch conftest.c
+    $AR $plugin_option rc conftest.a conftest.c
+    if test "$?" != 0; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5
+$as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;}
+    else
+      AR="$AR $plugin_option"
+    fi
+    rm -f conftest.*
+  fi
 fi
+test -z "$AR_FLAGS" && AR_FLAGS=cru
 
 
 
-CONFIG_OBS=
-CONFIG_DEPS=
-CONFIG_SRCS=
-ENABLE_CFLAGS=
-
-CONFIG_ALL=
-CONFIG_CLEAN=
-CONFIG_INSTALL=
-CONFIG_UNINSTALL=
-
-# 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
+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
 
-localedir='${datadir}/locale'
 
+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
 
-if test x"$USE_NLS" = xyes; then
-   CONFIG_ALL="$CONFIG_ALL all-po"
-   CONFIG_CLEAN="$CONFIG_CLEAN clean-po"
-   CONFIG_INSTALL="$CONFIG_INSTALL install-po"
-   CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-po"
+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
 
-PACKAGE=gdb
+  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
 
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE "$PACKAGE"
-_ACEOF
+test -z "$STRIP" && STRIP=:
 
 
 
-# We never need to detect it in this sub-configure.
-# But preserve it for config.status --recheck.
 
 
 
-MAKEINFO_EXTRA_FLAGS=""
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $MAKEINFO supports @click" >&5
-$as_echo_n "checking whether $MAKEINFO supports @click... " >&6; }
-if ${gdb_cv_have_makeinfo_click+:} false; then :
+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
-  echo '@clicksequence{a @click{} b}' >conftest.texinfo
-  if eval "$MAKEINFO conftest.texinfo >&5 2>&5"; then
-    gdb_cv_have_makeinfo_click=yes
-  else
-    gdb_cv_have_makeinfo_click=no
+  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
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_makeinfo_click" >&5
-$as_echo "$gdb_cv_have_makeinfo_click" >&6; }
-if test x"$gdb_cv_have_makeinfo_click" = xyes; then
-  MAKEINFO_EXTRA_FLAGS="$MAKEINFO_EXTRA_FLAGS -DHAVE_MAKEINFO_CLICK"
 fi
-
-
-
-
-# Check whether --with-separate-debug-dir was given.
-if test "${with_separate_debug_dir+set}" = set; then :
-  withval=$with_separate_debug_dir;
-    DEBUGDIR=$withval
+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
-  DEBUGDIR=${libdir}/debug
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
-  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-  ac_define_dir=`eval echo $DEBUGDIR`
-  ac_define_dir=`eval echo $ac_define_dir`
-
-cat >>confdefs.h <<_ACEOF
-#define DEBUGDIR "$ac_define_dir"
-_ACEOF
-
-
+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$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
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
   else
-     test_prefix=$exec_prefix
+    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
-  value=0
-  case ${ac_define_dir} in
-     "${test_prefix}"|"${test_prefix}/"*|\
-	'${exec_prefix}'|'${exec_prefix}/'*)
-     value=1
-     ;;
-  esac
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
 
-cat >>confdefs.h <<_ACEOF
-#define DEBUGDIR_RELOCATABLE $value
-_ACEOF
+test -z "$RANLIB" && RANLIB=:
+if test -n "$plugin_option" && test "$RANLIB" != ":"; then
+  if $RANLIB --help 2>&1 | grep -q "\--plugin"; then
+    RANLIB="$RANLIB $plugin_option"
+  fi
+fi
 
 
 
 
-# We can't pass paths as command line arguments.
-# Mingw32 tries to be clever and will convert the paths for us.
-# For example -DBINDIR="/usr/local/bin" passed on the command line may get
-# converted to -DBINDIR="E:/msys/mingw32/msys/1.0/local/bin".
-# This breaks GDB's relocatable path conversions since paths passed in
-# config.h would not get so translated, the path prefixes no longer match.
 
-  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
-  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-  ac_define_dir=`eval echo $bindir`
-  ac_define_dir=`eval echo $ac_define_dir`
 
-cat >>confdefs.h <<_ACEOF
-#define BINDIR "$ac_define_dir"
-_ACEOF
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
 
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
 
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
 
-# GDB's datadir relocation
 
 
 
-# Check whether --with-gdb-datadir was given.
-if test "${with_gdb_datadir+set}" = set; then :
-  withval=$with_gdb_datadir;
-    GDB_DATADIR=$withval
-else
-  GDB_DATADIR=${datadir}/gdb
-fi
 
 
-  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
-  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-  ac_define_dir=`eval echo $GDB_DATADIR`
-  ac_define_dir=`eval echo $ac_define_dir`
 
-cat >>confdefs.h <<_ACEOF
-#define GDB_DATADIR "$ac_define_dir"
-_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 ${ac_define_dir} in
-     "${test_prefix}"|"${test_prefix}/"*|\
-	'${exec_prefix}'|'${exec_prefix}/'*)
-     value=1
-     ;;
-  esac
 
-cat >>confdefs.h <<_ACEOF
-#define GDB_DATADIR_RELOCATABLE $value
-_ACEOF
 
 
 
 
 
-# Check whether --with-relocated-sources was given.
-if test "${with_relocated_sources+set}" = set; then :
-  withval=$with_relocated_sources; reloc_srcdir="${withval}"
 
-  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
-  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-  ac_define_dir=`eval echo $reloc_srcdir`
-  ac_define_dir=`eval echo $ac_define_dir`
 
-cat >>confdefs.h <<_ACEOF
-#define RELOC_SRCDIR "$ac_define_dir"
-_ACEOF
 
 
+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_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$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
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default auto-load directory" >&5
-$as_echo_n "checking for default auto-load directory... " >&6; }
-
-# Check whether --with-auto-load-dir was given.
-if test "${with_auto_load_dir+set}" = set; then :
-  withval=$with_auto_load_dir;
-else
-  with_auto_load_dir='$debugdir:$datadir/auto-load'
 fi
-
-escape_dir=`echo $with_auto_load_dir | sed -e 's/[$]datadir\>/\\\\\\\\\\\\&/g' -e 's/[$]debugdir\>/\\\\\\\\\\\\&/g'`
-
-  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
-  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-  ac_define_dir=`eval echo $escape_dir`
-  ac_define_dir=`eval echo $ac_define_dir`
-
-cat >>confdefs.h <<_ACEOF
-#define AUTO_LOAD_DIR "$ac_define_dir"
-_ACEOF
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_dir" >&5
-$as_echo "$with_auto_load_dir" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default auto-load safe-path" >&5
-$as_echo_n "checking for default auto-load safe-path... " >&6; }
-
-# Check whether --with-auto-load-safe-path was given.
-if test "${with_auto_load_safe_path+set}" = set; then :
-  withval=$with_auto_load_safe_path; if test "$with_auto_load_safe_path" = "no"; then
-     with_auto_load_safe_path="/"
-     fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
 else
-  with_auto_load_safe_path="$with_auto_load_dir"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
-escape_dir=`echo $with_auto_load_safe_path | sed -e 's/[$]datadir\>/\\\\\\\\\\\\&/g' -e 's/[$]debugdir\>/\\\\\\\\\\\\&/g'`
-
-  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
-  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-  ac_define_dir=`eval echo $escape_dir`
-  ac_define_dir=`eval echo $ac_define_dir`
 
-cat >>confdefs.h <<_ACEOF
-#define AUTO_LOAD_SAFE_PATH "$ac_define_dir"
-_ACEOF
+  test -n "$AWK" && break
+done
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
-$as_echo "$with_auto_load_safe_path" >&6; }
 
 
 
-subdirs="$subdirs testsuite"
 
 
-# Check whether to support alternative target configurations
-# Check whether --enable-targets was given.
-if test "${enable_targets+set}" = set; then :
-  enableval=$enable_targets; case "${enableval}" in
-  yes | "") as_fn_error $? "enable-targets option must specify target names or 'all'" "$LINENO" 5
-            ;;
-  no)       enable_targets= ;;
-  *)        enable_targets=$enableval ;;
-esac
-fi
 
 
-# Check whether to enable 64-bit support on 32-bit hosts
-# Check whether --enable-64-bit-bfd was given.
-if test "${enable_64_bit_bfd+set}" = set; then :
-  enableval=$enable_64_bit_bfd; case "${enableval}" in
-  yes)  want64=true  ;;
-  no)   want64=false ;;
-  *)    as_fn_error $? "bad value ${enableval} for 64-bit-bfd option" "$LINENO" 5 ;;
-esac
-else
-  want64=false
-fi
 
-# Provide defaults for some variables set by the per-host and per-target
-# configuration.
-gdb_host_obs=posix-hdep.o
 
-if test "${target}" = "${host}"; then
-  gdb_native=yes
-else
-  gdb_native=no
-fi
 
-. $srcdir/configure.host
 
-# Accumulate some settings from configure.tgt over all enabled targets
 
-TARGET_OBS=
-all_targets=
-HAVE_NATIVE_GCORE_TARGET=
 
-for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
-do
-  if test "$targ_alias" = "all"; then
-    all_targets=true
-  else
-    # Canonicalize the secondary target names.
-    result=`$ac_config_sub $targ_alias 2>/dev/null`
-    if test -n "$result"; then
-        targ=$result
-    else
-        targ=$targ_alias
-    fi
 
-    . ${srcdir}/configure.tgt
 
-    if test -z "${gdb_target_obs}"; then :
-  as_fn_error $? "configuration ${targ} is unsupported." "$LINENO" 5
-fi
 
-    # Target-specific object files
-    for i in ${gdb_target_obs}; do
-        case " $TARGET_OBS " in
-        *" ${i} "*) ;;
-        *)
-          TARGET_OBS="$TARGET_OBS ${i}"
-          ;;
-        esac
-    done
 
-    # Check whether this target needs 64-bit CORE_ADDR
-    if test x${want64} = xfalse; then
-      . ${srcdir}/../bfd/config.bfd
-    fi
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
 
-    # Check whether this target is native and supports gcore.
-    if test $gdb_native = yes -a "$targ_alias" = "$target_alias" \
-       && $gdb_have_gcore; then
-      HAVE_NATIVE_GCORE_TARGET=1
-    fi
-  fi
-done
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
 
-if test x${all_targets} = xtrue; then
+# Allow CC to be a program name with arguments.
+compiler=$CC
 
-  # We want all 64-bit targets if we either:
-  #  - run on a 64-bit host  or
-  #  - already require 64-bit support for some other target  or
-  #  - the --enable-64-bit-bfd option was supplied
-  # Otherwise we only support all 32-bit targets.
-  #
-  # NOTE: This test must be in sync with the corresponding
-  #       tests in BFD!
 
-  if test x${want64} = xfalse; then
-    # 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" >&5
-$as_echo_n "checking size of long... " >&6; }
-if ${ac_cv_sizeof_long+:} false; then :
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
+if ${lt_cv_sys_global_symbol_pipe+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long"        "$ac_includes_default"; then :
-
-else
-  if test "$ac_cv_type_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)
-See \`config.log' for more details" "$LINENO" 5; }
-   else
-     ac_cv_sizeof_long=0
-   fi
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5
-$as_echo "$ac_cv_sizeof_long" >&6; }
-
 
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG $ac_cv_sizeof_long
-_ACEOF
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
 
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
 
-    if test "x${ac_cv_sizeof_long}" = "x8"; then
-      want64=true
-    fi
-  fi
-  if test x${want64} = xtrue; then
-    TARGET_OBS='$(ALL_TARGET_OBS) $(ALL_64_TARGET_OBS)'
-  else
-    TARGET_OBS='$(ALL_TARGET_OBS)'
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32* | cegcc*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
   fi
-fi
-
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BCDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
 
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
 
+# Transform an extracted symbol line into a proper C declaration.
+# Some systems (esp. on ia64) link data and code symbols differently,
+# so use this general approach.
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (void *) \&\2},/p'"
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/  {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"lib\2\", (void *) \&\2},/p'"
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
 
-# For other settings, only the main target counts.
-gdb_sim=
-gdb_osabi=
-build_gdbserver=
-targ=$target; . ${srcdir}/configure.tgt
+# Try without a prefix underscore, then with it.
+for ac_symprfx in "" "_"; do
 
-# Fetch the default architecture and default target vector from BFD.
-targ=$target; . $srcdir/../bfd/config.bfd
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
 
-# We only want the first architecture, so strip off the others if
-# there is more than one.
-targ_archs=`echo $targ_archs | sed 's/ .*//'`
+  # Write the raw and C identifiers.
+  if test "$lt_cv_nm_interface" = "MS dumpbin"; then
+    # Fake it for dumpbin and say T for any non-static function
+    # and D for any global variable.
+    # Also find C++ and __fastcall symbols from MSVC++,
+    # which start with @ or ?.
+    lt_cv_sys_global_symbol_pipe="$AWK '"\
+"     {last_section=section; section=\$ 3};"\
+"     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+"     \$ 0!~/External *\|/{next};"\
+"     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+"     {if(hide[section]) next};"\
+"     {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\
+"     {split(\$ 0, a, /\||\r/); split(a[2], s)};"\
+"     s[1]~/^[@?]/{print s[1], s[1]; next};"\
+"     s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\
+"     ' prfx=^$ac_symprfx"
+  else
+    lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[	 ]\($symcode$symcode*\)[	 ][	 ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+  fi
 
-if test "x$targ_archs" != x; then
+  # Check to see that the pipe works correctly.
+  pipe_works=no
 
-cat >>confdefs.h <<_ACEOF
-#define DEFAULT_BFD_ARCH $targ_archs
-_ACEOF
+  rm -f conftest*
+  cat > conftest.$ac_ext <<_LT_EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(void);
+void nm_test_func(void){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+_LT_EOF
 
-fi
-if test "x$targ_defvec" != x; then
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
+  (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
 
-cat >>confdefs.h <<_ACEOF
-#define DEFAULT_BFD_VEC $targ_defvec
-_ACEOF
+      # Make sure that we snagged all the symbols we need.
+      if $GREP ' nm_test_var$' "$nlist" >/dev/null; then
+	if $GREP ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<_LT_EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
 
-fi
+_LT_EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext'
+
+	  cat <<_LT_EOF >> conftest.$ac_ext
+
+/* The mapping between symbol names and symbols.  */
+const struct {
+  const char *name;
+  void       *address;
+}
+lt__PROGRAM__LTX_preloaded_symbols[] =
+{
+  { "@PROGRAM@", (void *) 0 },
+_LT_EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext
+	  cat <<\_LT_EOF >> conftest.$ac_ext
+  {0, (void *) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt__PROGRAM__LTX_preloaded_symbols;
+}
+#endif
 
-# Enable MI.
-# Check whether --enable-gdbmi was given.
-if test "${enable_gdbmi+set}" = set; then :
-  enableval=$enable_gdbmi; case $enableval in
-    yes | no)
-      ;;
-    *)
-      as_fn_error $? "bad value $enableval for --enable-gdbmi" "$LINENO" 5 ;;
-  esac
-else
-  enable_gdbmi=yes
-fi
+#ifdef __cplusplus
+}
+#endif
+_LT_EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -rf conftest* conftst*
 
-if test x"$enable_gdbmi" = xyes; then
-  if test -d "$srcdir/mi"; then
-    CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_MI_OBS)"
-    CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_MI_DEPS)"
-    CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_MI_SRCS)"
-    ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_MI_CFLAGS)"
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
   fi
-fi
+done
 
-# Enable TUI.
-# Check whether --enable-tui was given.
-if test "${enable_tui+set}" = set; then :
-  enableval=$enable_tui; case $enableval in
-    yes | no | auto)
-      ;;
-    *)
-      as_fn_error $? "bad value $enableval for --enable-tui" "$LINENO" 5 ;;
-  esac
-else
-  enable_tui=auto
 fi
 
-
-# Enable gdbtk.
-# Check whether --enable-gdbtk was given.
-if test "${enable_gdbtk+set}" = set; then :
-  enableval=$enable_gdbtk; case $enableval in
-    yes | no)
-      ;;
-    *)
-      as_fn_error $? "bad value $enableval for --enable-gdbtk" "$LINENO" 5 ;;
-  esac
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+$as_echo "failed" >&6; }
 else
-  if test -d "$srcdir/gdbtk"; then
-    enable_gdbtk=yes
-  else
-    enable_gdbtk=no
-  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+$as_echo "ok" >&6; }
 fi
 
-# We unconditionally disable gdbtk tests on selected platforms.
-case $host_os in
-  go32* | windows*)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: gdbtk isn't supported on $host; disabling" >&5
-$as_echo "$as_me: WARNING: gdbtk isn't supported on $host; disabling" >&2;}
-    enable_gdbtk=no ;;
-esac
 
-# Libunwind support for ia64.
 
 
-# Check whether --with-libunwind-ia64 was given.
-if test "${with_libunwind_ia64+set}" = set; then :
-  withval=$with_libunwind_ia64;
-else
-  with_libunwind_ia64=auto
-fi
 
 
-# Backward compatibility option.
-if test "${with_libunwind+set}" = set; then
-  if test x"$with_libunwind_ia64" != xauto; then
-    as_fn_error $? "option --with-libunwind is deprecated, use --with-libunwind-ia64" "$LINENO" 5
-  fi
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: option --with-libunwind is deprecated, use --with-libunwind-ia64" >&5
-$as_echo "$as_me: WARNING: option --with-libunwind is deprecated, use --with-libunwind-ia64" >&2;}
-  with_libunwind_ia64="$with_libunwind"
-fi
 
-case "$with_libunwind_ia64" in
-  yes | no)
-    ;;
-  auto)
-    for ac_header in libunwind-ia64.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "libunwind-ia64.h" "ac_cv_header_libunwind_ia64_h" "$ac_includes_default"
-if test "x$ac_cv_header_libunwind_ia64_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBUNWIND_IA64_H 1
-_ACEOF
 
-fi
 
-done
 
-    with_libunwind_ia64=$ac_cv_header_libunwind_ia64_h
-    ;;
-  *)
-    as_fn_error $? "bad value $with_libunwind_ia64 for GDB --with-libunwind-ia64 option" "$LINENO" 5
-    ;;
-esac
 
-if test x"$with_libunwind_ia64" = xyes; then
-  for ac_header in libunwind-ia64.h
-do :
-  ac_fn_c_check_header_mongrel "$LINENO" "libunwind-ia64.h" "ac_cv_header_libunwind_ia64_h" "$ac_includes_default"
-if test "x$ac_cv_header_libunwind_ia64_h" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBUNWIND_IA64_H 1
-_ACEOF
 
-fi
 
-done
 
-  if test x"$ac_cv_header_libunwind_ia64_h" != xyes; then
-    as_fn_error $? "GDB option --with-libunwind-ia64 requires libunwind-ia64.h" "$LINENO" 5
-  fi
-  CONFIG_OBS="$CONFIG_OBS ia64-libunwind-tdep.o"
-  CONFIG_DEPS="$CONFIG_DEPS ia64-libunwind-tdep.o"
-  CONFIG_SRCS="$CONFIG_SRCS ia64-libunwind-tdep.c"
-fi
 
-opt_curses=no
 
-# Check whether --with-curses was given.
-if test "${with_curses+set}" = set; then :
-  withval=$with_curses; opt_curses=$withval
-fi
 
 
-prefer_curses=no
-if test "$opt_curses" = "yes"; then
-  prefer_curses=yes
-fi
 
-# Profiling support.
-# Check whether --enable-profiling was given.
-if test "${enable_profiling+set}" = set; then :
-  enableval=$enable_profiling; case $enableval in
-    yes | no)
-      ;;
-    *)
-      as_fn_error $? "bad value $enableval for --enable-profile" "$LINENO" 5 ;;
-  esac
-else
-  enable_profiling=no
-fi
 
 
-for ac_func in monstartup _mcleanup
-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
 
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then :
+  enableval=$enable_libtool_lock;
 fi
-done
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _etext" >&5
-$as_echo_n "checking for _etext... " >&6; }
-if ${ac_cv_var__etext+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-extern char _etext;
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
 
-int
-main ()
-{
-free (&_etext);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_var__etext=yes
-else
-  ac_cv_var__etext=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_var__etext" >&5
-$as_echo "$ac_cv_var__etext" >&6; }
-if test "$ac_cv_var__etext" = yes; then
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+      *ELF-32*)
+	HPUX_IA64_MODE="32"
+	;;
+      *ELF-64*)
+	HPUX_IA64_MODE="64"
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line '$LINENO' "configure"' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    if test "$lt_cv_prog_gnu_ld" = yes; then
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -melf32bsmip"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -melf32bmipn32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -melf64bmip"
+	;;
+      esac
+    else
+      case `/usr/bin/file conftest.$ac_objext` in
+	*32-bit*)
+	  LD="${LD-ld} -32"
+	  ;;
+	*N32*)
+	  LD="${LD-ld} -n32"
+	  ;;
+	*64-bit*)
+	  LD="${LD-ld} -64"
+	  ;;
+      esac
+    fi
+  fi
+  rm -rf conftest*
+  ;;
 
-$as_echo "#define HAVE__ETEXT 1" >>confdefs.h
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
+s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+      *32-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_i386_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    case `/usr/bin/file conftest.o` in
+	      *x86-64*)
+		LD="${LD-ld} -m elf32_x86_64"
+		;;
+	      *)
+		LD="${LD-ld} -m elf_i386"
+		;;
+	    esac
+	    ;;
+	  powerpc64le-*linux*)
+	    LD="${LD-ld} -m elf32lppclinux"
+	    ;;
+	  powerpc64-*linux*)
+	    LD="${LD-ld} -m elf32ppclinux"
+	    ;;
+	  s390x-*linux*)
+	    LD="${LD-ld} -m elf_s390"
+	    ;;
+	  sparc64-*linux*)
+	    LD="${LD-ld} -m elf32_sparc"
+	    ;;
+	esac
+	;;
+      *64-bit*)
+	case $host in
+	  x86_64-*kfreebsd*-gnu)
+	    LD="${LD-ld} -m elf_x86_64_fbsd"
+	    ;;
+	  x86_64-*linux*)
+	    LD="${LD-ld} -m elf_x86_64"
+	    ;;
+	  powerpcle-*linux*)
+	    LD="${LD-ld} -m elf64lppc"
+	    ;;
+	  powerpc-*linux*)
+	    LD="${LD-ld} -m elf64ppc"
+	    ;;
+	  s390*-*linux*|s390*-*tpf*)
+	    LD="${LD-ld} -m elf64_s390"
+	    ;;
+	  sparc*-*linux*)
+	    LD="${LD-ld} -m elf64_sparc"
+	    ;;
+	esac
+	;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
 
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for etext" >&5
-$as_echo_n "checking for etext... " >&6; }
-if ${ac_cv_var_etext+:} false; then :
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
+if ${lt_cv_cc_needs_belf+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  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
+
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdlib.h>
-extern char etext;
 
 int
 main ()
 {
-free (&etext);
+
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_var_etext=yes
+  lt_cv_cc_needs_belf=yes
 else
-  ac_cv_var_etext=no
+  lt_cv_cc_needs_belf=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_var_etext" >&5
-$as_echo "$ac_cv_var_etext" >&6; }
-if test "$ac_cv_var_etext" = yes; then
-
-$as_echo "#define HAVE_ETEXT 1" >>confdefs.h
-
-fi
-if test "$enable_profiling" = yes ; then
-  if test "$ac_cv_func_monstartup" = no || test "$ac_cv_func__mcleanup" = no; then
-    as_fn_error $? "--enable-profiling requires monstartup and _mcleanup" "$LINENO" 5
-  fi
-  PROFILE_CFLAGS=-pg
-  OLD_CFLAGS="$CFLAGS"
-  CFLAGS="$CFLAGS $PROFILE_CFLAGS"
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -pg" >&5
-$as_echo_n "checking whether $CC supports -pg... " >&6; }
-if ${ac_cv_cc_supports_pg+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-int x;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_cc_supports_pg=yes
-else
-  ac_cv_cc_supports_pg=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_pg" >&5
-$as_echo "$ac_cv_cc_supports_pg" >&6; }
-
-  if test "$ac_cv_cc_supports_pg" = no; then
-    as_fn_error $? "--enable-profiling requires a compiler which supports -pg" "$LINENO" 5
-  fi
-
-  CFLAGS="$OLD_CFLAGS"
-fi
-
-CODESIGN_CERT=
-# Check whether --enable-codesign was given.
-if test "${enable_codesign+set}" = set; then :
-  enableval=$enable_codesign; CODESIGN_CERT=$enableval
-fi
-
-
-
-
-
-# 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/"
+     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
 
 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
-
-
-# --------------------- #
-# Checks for programs.  #
-# --------------------- #
-
-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_extensions; do
-  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AWK="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+$as_echo "$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
   fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-  test -n "$AWK" && break
-done
-
-# 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
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)
+	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+	  LD="${LD-ld} -64"
 	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
+	;;
+      esac
+      ;;
+    esac
   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}'
+  rm -rf conftest*
+  ;;
+esac
 
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+need_locks="$enable_libtool_lock"
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; 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, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-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
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; 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 :
+if ${ac_cv_prog_DSYMUTIL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7267,7 +7411,7 @@ do
   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"
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7277,10 +7421,10 @@ 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; }
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+$as_echo "$DSYMUTIL" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -7288,17 +7432,17 @@ 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
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; 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 :
+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} 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.
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7307,7 +7451,7 @@ do
   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"
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7317,17 +7461,17 @@ 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; }
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+$as_echo "$ac_ct_DSYMUTIL" >&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=":"
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -7335,66 +7479,22 @@ yes:)
 $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
-
-for ac_prog in 'bison -y' byacc
-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_YACC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # 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_YACC="$ac_prog"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
+    DSYMUTIL=$ac_ct_DSYMUTIL
   fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-YACC=$ac_cv_prog_YACC
-if test -n "$YACC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
 fi
 
-
-  test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
-
-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
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; 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 :
+if ${ac_cv_prog_NMEDIT+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7403,7 +7503,7 @@ do
   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"
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7413,10 +7513,10 @@ 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; }
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+$as_echo "$NMEDIT" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -7424,17 +7524,17 @@ 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
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; 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 :
+if ${ac_cv_prog_ac_ct_NMEDIT+:} 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.
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7443,7 +7543,7 @@ do
   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"
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7453,17 +7553,17 @@ 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; }
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+$as_echo "$ac_ct_NMEDIT" >&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=""
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -7471,22 +7571,22 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    AR=$ac_ct_AR
+    NMEDIT=$ac_ct_NMEDIT
   fi
 else
-  AR="$ac_cv_prog_AR"
+  NMEDIT="$ac_cv_prog_NMEDIT"
 fi
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
+set dummy ${ac_tool_prefix}lipo; 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_DLLTOOL+:} false; then :
+if ${ac_cv_prog_LIPO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+  if test -n "$LIPO"; then
+  ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7495,7 +7595,7 @@ do
   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_DLLTOOL="${ac_tool_prefix}dlltool"
+    ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7505,10 +7605,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+LIPO=$ac_cv_prog_LIPO
+if test -n "$LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+$as_echo "$LIPO" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -7516,17 +7616,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
+if test -z "$ac_cv_prog_LIPO"; then
+  ac_ct_LIPO=$LIPO
+  # Extract the first word of "lipo", so it can be a program name with args.
+set dummy lipo; 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_DLLTOOL+:} false; then :
+if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+  if test -n "$ac_ct_LIPO"; then
+  ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7535,7 +7635,7 @@ do
   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_DLLTOOL="dlltool"
+    ac_cv_prog_ac_ct_LIPO="lipo"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7545,17 +7645,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
+if test -n "$ac_ct_LIPO"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+$as_echo "$ac_ct_LIPO" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL=""
+  if test "x$ac_ct_LIPO" = x; then
+    LIPO=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -7563,22 +7663,22 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    DLLTOOL=$ac_ct_DLLTOOL
+    LIPO=$ac_ct_LIPO
   fi
 else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
+  LIPO="$ac_cv_prog_LIPO"
 fi
 
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
-set dummy ${ac_tool_prefix}windres; ac_word=$2
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool; 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_WINDRES+:} false; then :
+if ${ac_cv_prog_OTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$WINDRES"; then
-  ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
+  if test -n "$OTOOL"; then
+  ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7587,7 +7687,7 @@ do
   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_WINDRES="${ac_tool_prefix}windres"
+    ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7597,10 +7697,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-WINDRES=$ac_cv_prog_WINDRES
-if test -n "$WINDRES"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
-$as_echo "$WINDRES" >&6; }
+OTOOL=$ac_cv_prog_OTOOL
+if test -n "$OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+$as_echo "$OTOOL" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -7608,17 +7708,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_WINDRES"; then
-  ac_ct_WINDRES=$WINDRES
-  # Extract the first word of "windres", so it can be a program name with args.
-set dummy windres; ac_word=$2
+if test -z "$ac_cv_prog_OTOOL"; then
+  ac_ct_OTOOL=$OTOOL
+  # Extract the first word of "otool", so it can be a program name with args.
+set dummy otool; 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_WINDRES+:} false; then :
+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_WINDRES"; then
-  ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test.
+  if test -n "$ac_ct_OTOOL"; then
+  ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7627,7 +7727,7 @@ do
   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_WINDRES="windres"
+    ac_cv_prog_ac_ct_OTOOL="otool"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7637,17 +7737,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES
-if test -n "$ac_ct_WINDRES"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
-$as_echo "$ac_ct_WINDRES" >&6; }
+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
+if test -n "$ac_ct_OTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+$as_echo "$ac_ct_OTOOL" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_WINDRES" = x; then
-    WINDRES=""
+  if test "x$ac_ct_OTOOL" = x; then
+    OTOOL=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -7655,26 +7755,22 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    WINDRES=$ac_ct_WINDRES
+    OTOOL=$ac_ct_OTOOL
   fi
 else
-  WINDRES="$ac_cv_prog_WINDRES"
+  OTOOL="$ac_cv_prog_OTOOL"
 fi
 
-
-case $host_os in
-  gnu*)
-    # Needed for GNU Hurd hosts.
     if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args.
-set dummy ${ac_tool_prefix}mig; ac_word=$2
+  # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
+set dummy ${ac_tool_prefix}otool64; 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_MIG+:} false; then :
+if ${ac_cv_prog_OTOOL64+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$MIG"; then
-  ac_cv_prog_MIG="$MIG" # Let the user override the test.
+  if test -n "$OTOOL64"; then
+  ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7683,7 +7779,7 @@ do
   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_MIG="${ac_tool_prefix}mig"
+    ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7693,10 +7789,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-MIG=$ac_cv_prog_MIG
-if test -n "$MIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MIG" >&5
-$as_echo "$MIG" >&6; }
+OTOOL64=$ac_cv_prog_OTOOL64
+if test -n "$OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+$as_echo "$OTOOL64" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -7704,17 +7800,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_MIG"; then
-  ac_ct_MIG=$MIG
-  # Extract the first word of "mig", so it can be a program name with args.
-set dummy mig; ac_word=$2
+if test -z "$ac_cv_prog_OTOOL64"; then
+  ac_ct_OTOOL64=$OTOOL64
+  # Extract the first word of "otool64", so it can be a program name with args.
+set dummy otool64; 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_MIG+:} false; then :
+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_MIG"; then
-  ac_cv_prog_ac_ct_MIG="$ac_ct_MIG" # Let the user override the test.
+  if test -n "$ac_ct_OTOOL64"; then
+  ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -7723,7 +7819,7 @@ do
   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_MIG="mig"
+    ac_cv_prog_ac_ct_OTOOL64="otool64"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -7733,17 +7829,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_MIG=$ac_cv_prog_ac_ct_MIG
-if test -n "$ac_ct_MIG"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MIG" >&5
-$as_echo "$ac_ct_MIG" >&6; }
+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
+if test -n "$ac_ct_OTOOL64"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+$as_echo "$ac_ct_OTOOL64" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_MIG" = x; then
-    MIG=""
+  if test "x$ac_ct_OTOOL64" = x; then
+    OTOOL64=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -7751,636 +7847,15327 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    MIG=$ac_ct_MIG
+    OTOOL64=$ac_ct_OTOOL64
   fi
 else
-  MIG="$ac_cv_prog_MIG"
+  OTOOL64="$ac_cv_prog_OTOOL64"
 fi
 
-    if test x"$MIG" = x; then
-      as_fn_error $? "MIG not found but required for $host hosts" "$LINENO" 5
-    fi
-    ;;
-esac
 
-# ---------------------- #
-# Checks for libraries.  #
-# ---------------------- #
 
-# We might need to link with -lm; most simulators need it.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lm" >&5
-$as_echo_n "checking for main in -lm... " >&6; }
-if ${ac_cv_lib_m_main+:} false; then :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+$as_echo_n "checking for -single_module linker flag... " >&6; }
+if ${lt_cv_apple_cc_single_mod+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lm  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+	# By default we will add the -single_module flag. You can override
+	# by either setting the environment variable LT_MULTI_MODULE
+	# non-empty at configure time, or by adding -multi_module to the
+	# link flags.
+	rm -rf libconftest.dylib*
+	echo "int foo(void){return 1;}" > conftest.c
+	echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+-dynamiclib -Wl,-single_module conftest.c" >&5
+	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+        _lt_result=$?
+	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
+	  lt_cv_apple_cc_single_mod=yes
+	else
+	  cat conftest.err >&5
+	fi
+	rm -rf libconftest.dylib*
+	rm -f conftest.*
+      fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+if ${lt_cv_ld_exported_symbols_list+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
 int
 main ()
 {
-return main ();
+
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_m_main=yes
+  lt_cv_ld_exported_symbols_list=yes
 else
-  ac_cv_lib_m_main=no
+  lt_cv_ld_exported_symbols_list=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+	LDFLAGS="$save_LDFLAGS"
+
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_main" >&5
-$as_echo "$ac_cv_lib_m_main" >&6; }
-if test "x$ac_cv_lib_m_main" = xyes; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+$as_echo_n "checking for -force_load linker flag... " >&6; }
+if ${lt_cv_ld_force_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ld_force_load=no
+      cat > conftest.c << _LT_EOF
+int forced_loaded() { return 2;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
+      $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
+      echo "$AR cru libconftest.a conftest.o" >&5
+      $AR cru libconftest.a conftest.o 2>&5
+      cat > conftest.c << _LT_EOF
+int main() { return 0;}
+_LT_EOF
+      echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+      $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+      _lt_result=$?
+      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
+	lt_cv_ld_force_load=yes
+      else
+	cat conftest.err >&5
+      fi
+        rm -f conftest.err libconftest.a conftest conftest.c
+        rm -rf conftest.dSYM
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+$as_echo "$lt_cv_ld_force_load" >&6; }
+    # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not expect to
+    # build without first building modern cctools / linker.
+    case $host_cpu-$host_os in
+    *-rhapsody* | *-darwin1.[012])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    *-darwin1.*)
+      _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    *-darwin*)
+      # darwin 5.x (macOS 10.1) onwards we only need to adjust when the
+      # deployment target is forced to an earlier version.
+      case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in
+	UNSET,*-darwin[89]*|UNSET,*-darwin[12][0123456789]*)
+	  ;;
+	10.[012][,.]*)
+	  _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+	  ;;
+	*)
+	  ;;
+     esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    fi
+    if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then
+      _lt_dsymutil='~$DSYMUTIL $lib || :'
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+for ac_header in dlfcn.h
+do :
+  ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+"
+if test "x$ac_cv_header_dlfcn_h" = xyes; then :
   cat >>confdefs.h <<_ACEOF
-#define HAVE_LIBM 1
+#define HAVE_DLFCN_H 1
 _ACEOF
 
-  LIBS="-lm $LIBS"
-
 fi
 
+done
 
-# Some systems (e.g. Solaris) have `gethostbyname' in libnsl.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
-$as_echo_n "checking for library containing gethostbyname... " >&6; }
-if ${ac_cv_search_gethostbyname+:} 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 gethostbyname ();
-int
-main ()
-{
-return gethostbyname ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' nsl; 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_gethostbyname=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_gethostbyname+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_gethostbyname+:} false; then :
 
+
+
+
+# Set options
+
+
+
+        enable_dlopen=no
+
+
+  enable_win32_dll=no
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
-  ac_cv_search_gethostbyname=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+  enable_shared=yes
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
-$as_echo "$ac_cv_search_gethostbyname" >&6; }
-ac_res=$ac_cv_search_gethostbyname
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
-fi
 
 
-# Some systems (e.g. Solaris) have `socketpair' in libsocket.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socketpair" >&5
-$as_echo_n "checking for library containing socketpair... " >&6; }
-if ${ac_cv_search_socketpair+:} 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 socketpair ();
-int
-main ()
-{
-return socketpair ();
-  ;
-  return 0;
-}
-_ACEOF
-for ac_lib in '' socket; 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_socketpair=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_socketpair+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_socketpair+:} false; then :
 
+
+
+
+
+  # Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
-  ac_cv_search_socketpair=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+  enable_static=yes
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socketpair" >&5
-$as_echo "$ac_cv_search_socketpair" >&6; }
-ac_res=$ac_cv_search_socketpair
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
-fi
 
 
-# Link in zlib if we can.  This allows us to read compressed debug sections.
 
-  # Use the system's zlib library.
-  zlibdir="-L\$(top_builddir)/../zlib"
-  zlibinc="-I\$(top_srcdir)/../zlib"
 
-# Check whether --with-system-zlib was given.
-if test "${with_system_zlib+set}" = set; then :
-  withval=$with_system_zlib; if test x$with_system_zlib = xyes ; then
-    zlibdir=
-    zlibinc=
-  fi
 
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
 fi
 
 
+test -z "$pic_mode" && pic_mode=default
 
 
 
-# On FreeBSD we may need libutil for kinfo_getvmmap (used by fbsd-nat.c).
-# On GNU/kFreeBSD systems, FreeBSD libutil is renamed to libutil-freebsd.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kinfo_getvmmap" >&5
-$as_echo_n "checking for library containing kinfo_getvmmap... " >&6; }
-if ${ac_cv_search_kinfo_getvmmap+:} 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_getvmmap ();
-int
-main ()
-{
-return kinfo_getvmmap ();
-  ;
-  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_getvmmap=$ac_res
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext
-  if ${ac_cv_search_kinfo_getvmmap+:} false; then :
-  break
-fi
-done
-if ${ac_cv_search_kinfo_getvmmap+:} false; then :
 
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
 else
-  ac_cv_search_kinfo_getvmmap=no
-fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+  enable_fast_install=yes
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_kinfo_getvmmap" >&5
-$as_echo "$ac_cv_search_kinfo_getvmmap" >&6; }
-ac_res=$ac_cv_search_kinfo_getvmmap
-if test "$ac_res" != no; then :
-  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
 
-$as_echo "#define HAVE_KINFO_GETVMMAP 1" >>confdefs.h
 
-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
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+test -z "$LN_S" && LN_S="ln -s"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test -n "${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
 fi
-done
-if ${ac_cv_search_kinfo_getfile+:} false; then :
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+$as_echo_n "checking for objdir... " >&6; }
+if ${lt_cv_objdir+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_cv_search_kinfo_getfile=no
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
 fi
-rm conftest.$ac_ext
-LIBS=$ac_func_search_save_LIBS
+rmdir .libs 2>/dev/null
 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 "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+$as_echo "$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
 
-$as_echo "#define HAVE_KINFO_GETFILE 1" >>confdefs.h
 
-fi
 
 
 
-      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"
+cat >>confdefs.h <<_ACEOF
+#define LT_OBJDIR "$lt_cv_objdir/"
+_ACEOF
 
 
-# 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=:
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
   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
+
+# Global variables:
+ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$LD" && LD=ld
+test -z "$ac_objext" && ac_objext=o
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
   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
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
     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
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
       fi
+      break
     fi
   done
-  IFS="$ac_save_ifs"
-else
-  acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
 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; }
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&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 :
+
+
+
+
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+$as_echo_n "checking for file... " >&6; }
+if ${lt_cv_path_MAGIC_CMD+:} 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
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<_LT_EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool@gnu.org
+
+_LT_EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+$as_echo "$MAGIC_CMD" >&6; }
 else
-  acl_cv_prog_gnu_ld=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
+
+
+  else
+    MAGIC_CMD=:
+  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
 
+  fi
+  ;;
+esac
 
+# Use C for the default configuration in the libtool script
 
-                                                { $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
+lt_save_CC="$CC"
+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
 
-    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
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}'
+
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Save the default compiler, since it gets overwritten when the other
+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP.
+compiler_DEFAULT=$CC
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+## CAVEAT EMPTOR:
+## There is no encapsulation within the following macros, do not change
+## the running order or otherwise move them around unless you know exactly
+## what you are doing...
+if test -n "$compiler"; then
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  case $cc_basename in
+  nvcc*)
+    lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;;
+  *)
+    lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
+  esac
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $RM conftest*
 
 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; :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
 else
-  enable_rpath=yes
+    :
 fi
 
+fi
 
 
 
 
 
 
+  lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
 
-    use_additional=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
 
-    eval additional_includedir=\"$includedir\"
-    eval additional_libdir=\"$libdir\"
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      lt_prog_compiler_pic='-fPIC'
+      ;;
 
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
 
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
 
-# Check whether --with-libiconv-prefix was given.
-if test "${with_libiconv_prefix+set}" = set; then :
-  withval=$with_libiconv_prefix;
-    if test "X$withval" = "Xno"; then
-      use_additional=no
-    else
-      if test "X$withval" = "X"; then
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
 
-  acl_save_prefix="$prefix"
-  prefix="$acl_final_prefix"
-  acl_save_exec_prefix="$exec_prefix"
-  exec_prefix="$acl_final_exec_prefix"
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
 
-          eval additional_includedir=\"$includedir\"
-          eval additional_libdir=\"$libdir\"
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static=
+      ;;
 
-  exec_prefix="$acl_save_exec_prefix"
-  prefix="$acl_save_prefix"
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
 
+    case $cc_basename in
+    nvcc*) # Cuda Compiler Driver 2.2
+      lt_prog_compiler_wl='-Xlinker '
+      lt_prog_compiler_pic='-Xcompiler -fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
       else
-        additional_includedir="$withval/include"
-        additional_libdir="$withval/lib"
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
       fi
-    fi
+      ;;
 
-fi
+    mingw* | cygwin* | pw32* | os2* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
 
-      LIBICONV=
-  LTLIBICONV=
-  INCICONV=
-  rpathdirs=
-  ltrpathdirs=
-  names_already_handled=
-  names_next_round='iconv '
-  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" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
-            eval value=\"\$LTLIB$uppername\"
-            test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$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 $LTLIBICONV; do
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
 
-  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"
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
 
-              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
-                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-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
-                                LIBICONV="${LIBICONV}${LIBICONV:+ }$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
-                                                      LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
-                else
-                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
-                                                            haveit=
-                    for x in $rpathdirs; do
+    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      case $cc_basename in
+      # old Intel for x86_64 which still supported -KPIC.
+      ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # icc used to be incompatible with GCC.
+      # ICC 10 doesn't accept -KPIC any more.
+      icc* | ifort*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      # Lahey Fortran 8.1.
+      lf95*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='--shared'
+	lt_prog_compiler_static='--static'
+	;;
+      pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      xl* | bgxl* | bgf* | mpixl*)
+	# IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-qpic'
+	lt_prog_compiler_static='-qstaticlink'
+	;;
+      *)
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ F* | *Sun*Fortran*)
+	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl=''
+	  ;;
+	*Sun\ C*)
+	  # Sun C 5.9
+	  lt_prog_compiler_pic='-KPIC'
+	  lt_prog_compiler_static='-Bstatic'
+	  lt_prog_compiler_wl='-Wl,'
+	  ;;
+	esac
+	;;
+      esac
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *nto* | *qnx*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic='-fPIC -shared'
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5
+$as_echo "$lt_prog_compiler_pic" >&6; }
+
+
+
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+
+
+
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  always_export_symbols=no
+  archive_cmds=
+  archive_expsym_cmds=
+  compiler_needs_object=no
+  enable_shared_with_static_runtimes=no
+  export_dynamic_flag_spec=
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  hardcode_automatic=no
+  hardcode_direct=no
+  hardcode_direct_absolute=no
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  inherit_rpath=no
+  link_all_deplibs=unknown
+  module_cmds=
+  module_expsym_cmds=
+  old_archive_from_new_cmds=
+  old_archive_from_expsyms_cmds=
+  thread_safe_flag_spec=
+  whole_archive_flag_spec=
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+  extract_expsyms_cmds=
+
+  case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+
+  # On some targets, GNU ld is compatible enough with the native linker
+  # that we're better off using the native interface for both.
+  lt_use_gnu_ld_interface=no
+  if test "$with_gnu_ld" = yes; then
+    case $host_os in
+      aix*)
+	# The AIX port of GNU ld has always aspired to compatibility
+	# with the native linker.  However, as the warning in the GNU ld
+	# block says, versions before 2.19.5* couldn't really create working
+	# shared libraries, regardless of the interface used.
+	case `$LD -v 2>&1` in
+	  *\ \(GNU\ Binutils\)\ 2.19.5*) ;;
+	  *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;;
+	  *\ \(GNU\ Binutils\)\ [3-9]*) ;;
+	  *)
+	    lt_use_gnu_ld_interface=yes
+	    ;;
+	esac
+	;;
+      *)
+	lt_use_gnu_ld_interface=yes
+	;;
+    esac
+  fi
+
+  if test "$lt_use_gnu_ld_interface" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>&1` in
+      *GNU\ gold*) supports_anon_versioning=yes ;;
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix[3-9]*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.19, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to install binutils
+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found.
+*** You will then need to restart the configuration process.
+
+_LT_EOF
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      export_dynamic_flag_spec='${wl}--export-all-symbols'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    haiku*)
+      archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      link_all_deplibs=yes
+      ;;
+
+    interix[3-9]*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
+      tmp_diet=no
+      if test "$host_os" = linux-dietlibc; then
+	case $cc_basename in
+	  diet\ *) tmp_diet=yes;;	# linux-dietlibc with static linking (!diet-dyn)
+	esac
+      fi
+      if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \
+	 && test "$tmp_diet" = no
+      then
+	tmp_addflag=' $pic_flag'
+	tmp_sharedflag='-shared'
+	case $cc_basename,$host_cpu in
+        pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95* | pgfortran*)
+					# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)	# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	lf95*)				# Lahey Fortran 8.1
+	  whole_archive_flag_spec=
+	  tmp_sharedflag='--shared' ;;
+	xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below)
+	  tmp_sharedflag='-qmkshrobj'
+	  tmp_addflag= ;;
+	nvcc*)	# Cuda Compiler Driver 2.2
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  ;;
+	esac
+	case `$CC -V 2>&1 | sed 5q` in
+	*Sun\ C*)			# Sun C 5.9
+	  whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	  compiler_needs_object=yes
+	  tmp_sharedflag='-G' ;;
+	*Sun\ F*)			# Sun Fortran 8.3
+	  tmp_sharedflag='-G' ;;
+	esac
+	archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+        if test "x$supports_anon_versioning" = xyes; then
+          archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	    cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	    echo "local: *; };" >> $output_objdir/$libname.ver~
+	    $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+        fi
+
+	case $cc_basename in
+	xlf* | bgf* | bgxlf* | mpixlf*)
+	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+	  hardcode_libdir_flag_spec=
+	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
+	  archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib'
+	  if test "x$supports_anon_versioning" = xyes; then
+	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+	      cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+	      echo "local: *; };" >> $output_objdir/$libname.ver~
+	      $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib'
+	  fi
+	  ;;
+	esac
+      else
+        ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+      elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  # For security reasons, it is highly recommended that you always
+	  # use absolute paths for naming shared libraries, and exclude the
+	  # DT_RUNPATH tag from executables and libraries.  But doing so
+	  # requires that you compile everything twice, which is a pain.
+	  if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix[4-9]*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	# Also, AIX nm treats weak defined symbols like other global
+	# defined symbols, whereas GNU nm marks them as "W".
+	if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	  for ld_flag in $LDFLAGS; do
+	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+	    aix_use_runtimelinking=yes
+	    break
+	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_direct_absolute=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      file_list_spec='${wl}-f,'
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	   strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	  # We have reworked collect2
+	  :
+	  else
+	  # We have old collect2
+	  hardcode_direct=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L=yes
+	  hardcode_libdir_flag_spec='-L$libdir'
+	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      export_dynamic_flag_spec='${wl}-bexpall'
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+        # Determine the default libpath from the value encoded in an
+        # empty executable.
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+        archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an
+	 # empty executable.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  if test "$with_gnu_ld" = yes; then
+	    # We only use this code for GNU lds that support --whole-archive.
+	    whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	  else
+	    # Exported symbols can be pulled into shared objects from archives
+	    whole_archive_flag_spec='$convenience'
+	  fi
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+            archive_expsym_cmds=''
+        ;;
+      m68k)
+            archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+            hardcode_libdir_flag_spec='-L$libdir'
+            hardcode_minus_L=yes
+        ;;
+      esac
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32* | cegcc*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_from_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc=no
+  hardcode_direct=no
+  hardcode_automatic=yes
+  hardcode_shlibpath_var=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec=''
+  fi
+  link_all_deplibs=yes
+  allow_undefined_flag="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+
+  else
+  ld_shlibs=no
+  fi
+
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2.*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_ld='+b $libdir'
+	hardcode_libdir_separator=:
+	hardcode_direct=yes
+	hardcode_direct_absolute=yes
+	export_dynamic_flag_spec='${wl}-E'
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes && test "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+
+	  # Older versions of the 11.00 compiler do not understand -b yet
+	  # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
+	  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+$as_echo_n "checking if $CC understands -b... " >&6; }
+if ${lt_cv_prog_compiler__b+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler__b=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS -b"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler__b=yes
+       fi
+     else
+       lt_cv_prog_compiler__b=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+$as_echo "$lt_cv_prog_compiler__b" >&6; }
+
+if test x"$lt_cv_prog_compiler__b" = xyes; then
+    archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+else
+    archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+fi
+
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  hardcode_direct_absolute=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	# Try to use the -exported_symbol ld option, if it does not
+	# work, assume that -exports_file does not work either and
+	# implicitly export all symbols.
+        save_LDFLAGS="$LDFLAGS"
+        LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int foo(void) {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib'
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+        LDFLAGS="$save_LDFLAGS"
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      inherit_rpath=yes
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    *nto* | *qnx*)
+      ;;
+
+    openbsd*)
+      if test -f /usr/libexec/ld.so; then
+	hardcode_direct=yes
+	hardcode_shlibpath_var=no
+	hardcode_direct_absolute=yes
+	if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	  archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	  hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	  export_dynamic_flag_spec='${wl}-E'
+	else
+	  case $host_os in
+	   openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	     archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	     hardcode_libdir_flag_spec='-R$libdir'
+	     ;;
+	   *)
+	     archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	     hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	     ;;
+	  esac
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~
+	$CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      archive_cmds_need_lc='no'
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z defs'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+      else
+	case `$CC -V 2>&1` in
+	*"Compilers 5.0"*)
+	  wlarc=''
+	  archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp'
+	  ;;
+	*)
+	  wlarc='${wl}'
+	  archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	  $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp'
+	  ;;
+	esac
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+	# The compiler driver will combine and reorder linker options,
+	# but understands `-z linker_flag'.  GCC discards it without `$wl',
+	# but is careful enough not to reorder.
+	# Supported since Solaris 2.6 (maybe 2.5.1?)
+	if test "$GCC" = yes; then
+	  whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+	else
+	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+	fi
+	;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-R,$libdir'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+
+    if test x$host_vendor = xsni; then
+      case $host in
+      sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+	export_dynamic_flag_spec='${wl}-Blargedynsym'
+	;;
+      esac
+    fi
+  fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+$as_echo "$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+with_gnu_ld=$with_gnu_ld
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl
+	  pic_flag=$lt_prog_compiler_pic
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag
+	  allow_undefined_flag=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc=no
+	  else
+	    lt_cv_archive_cmds_need_lc=yes
+	  fi
+	  allow_undefined_flag=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+      archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+if test "$GCC" = yes; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  case $host_os in
+    mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;;
+    *) lt_sed_strip_eq="s,=/,/,g" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq`
+  case $lt_search_path_spec in
+  *\;*)
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'`
+    ;;
+  *)
+    lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"`
+    ;;
+  esac
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+	lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  # AWK program above erroneously prepends '/' to C:/dos/paths
+  # for these hosts.
+  case $host_os in
+    mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\
+      $SED 's,/\([A-Za-z]:\),\1,g'` ;;
+  esac
+  sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP`
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+
+# uclinux* changes (here and below) have been submitted to the libtool
+# project, but have not yet been accepted: they are GCC-local changes
+# for the time being.  (See
+# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+# Shared libraries for VwWorks, >= 7 only at this stage
+# and (fpic) still incompatible with "large" code models
+# in a few configurations. Only for RTP mode in any case,
+# and upon explicit request at configure time.
+vxworks7*)
+  dynamic_linker=no
+  case ${with_multisubdir}-${enable_shared} in
+    *large*)
+      ;;
+    *mrtp*-yes)
+      version_type=linux
+      need_lib_prefix=no
+      need_version=no
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+      soname_spec='${libname}${release}${shared_ext}$major'
+      dynamic_linker="$host_os module_loader"
+      ;;
+  esac
+  ;;
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $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 :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $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 shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=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_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $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 :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $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_svld_dlopen=yes
+else
+  ac_cv_lib_svld_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_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $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 dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=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_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line 11516 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line 11622 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+void fnord () __attribute__((visibility("default")));
+#endif
+
+void fnord () { int i=42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+	  if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+	}
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $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; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
+
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
+  case $host_os in
+  aix3*)
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
+    ;;
+
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&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
+
+CC="$lt_save_CC"
+
+      if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  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
+{ $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; }
+if test -z "$CXXCPP"; then
+  if ${ac_cv_prog_CXXCPP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_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_cxx_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_cxx_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_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5
+$as_echo "$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_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_cxx_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_cxx_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 \"$CXXCPP\" 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
+
+else
+  _lt_caught_CXX_error=yes
+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
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+compiler_needs_object_CXX=no
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_direct_absolute_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+inherit_rpath_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+reload_flag_CXX=$reload_flag
+reload_cmds_CXX=$reload_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# No sense in running all these tests if we already determined that
+# the CXX compiler isn't working.  Some variables (like enable_shared)
+# are currently assumed to apply to all compilers on this platform,
+# and will be corrupted by setting them based on a non-working compiler.
+if test "$_lt_caught_CXX_error" != yes; then
+  # Code to be used in simple compile tests
+  lt_simple_compile_test_code="int some_variable = 0;"
+
+  # Code to be used in simple link tests
+  lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
+
+  # ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+  # save warnings/boilerplate of simple test code
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$RM conftest*
+
+  ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$RM -r conftest*
+
+
+  # Allow CC to be a program name with arguments.
+  lt_save_CC=$CC
+  lt_save_LD=$LD
+  lt_save_GCC=$GCC
+  GCC=$GXX
+  lt_save_with_gnu_ld=$with_gnu_ld
+  lt_save_path_LD=$lt_cv_path_LD
+  if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+    lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+  else
+    $as_unset lt_cv_prog_gnu_ld
+  fi
+  if test -n "${lt_cv_path_LDCXX+set}"; then
+    lt_cv_path_LD=$lt_cv_path_LDCXX
+  else
+    $as_unset lt_cv_path_LD
+  fi
+  test -z "${LDCXX+set}" || LD=$LDCXX
+  CC=${CXX-"c++"}
+  compiler=$CC
+  compiler_CXX=$CC
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"`
+
+
+  if test -n "$compiler"; then
+    # We don't want -fno-exception when compiling C++ code, so set the
+    # no_builtin_flag separately
+    if test "$GXX" = yes; then
+      lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+    else
+      lt_prog_compiler_no_builtin_flag_CXX=
+    fi
+
+    if test "$GXX" = yes; then
+      # Set up default GNU C++ configuration
+
+
+
+# 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
+
+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 $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&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.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname 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 ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_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 ${lt_cv_prog_gnu_ld+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+
+
+
+
+      # Check if GNU C++ uses GNU ld as the underlying linker, since the
+      # archiving commands below assume that GNU ld is being used.
+      if test "$with_gnu_ld" = yes; then
+        archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+        # If archive_cmds runs LD, not CC, wlarc should be empty
+        # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+        #     investigate it a little bit more. (MM)
+        wlarc='${wl}'
+
+        # ancient GNU ld didn't support --whole-archive et. al.
+        if eval "`$CC -print-prog-name=ld` --help 2>&1" |
+	  $GREP 'no-whole-archive' > /dev/null; then
+          whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+        else
+          whole_archive_flag_spec_CXX=
+        fi
+      else
+        with_gnu_ld=no
+        wlarc=
+
+        # A generic and very simple default shared library creation
+        # command for GNU C++ for the case where it uses the native
+        # linker, instead of GNU ld.  If possible, this setting should
+        # overridden to take advantage of the native linker features on
+        # the platform it is being used on.
+        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      fi
+
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+    else
+      GXX=no
+      with_gnu_ld=no
+      wlarc=
+    fi
+
+    # PORTME: fill in a description of your system's C++ link characteristics
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+    ld_shlibs_CXX=yes
+    case $host_os in
+      aix3*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+      aix[4-9]*)
+        if test "$host_cpu" = ia64; then
+          # On IA64, the linker does run time linking by default, so we don't
+          # have to do anything special.
+          aix_use_runtimelinking=no
+          exp_sym_flag='-Bexport'
+          no_entry_flag=""
+        else
+          aix_use_runtimelinking=no
+
+          # Test if we are trying to use run time linking or normal
+          # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+          # need to do runtime linking.
+          case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+	    for ld_flag in $LDFLAGS; do
+	      case $ld_flag in
+	      *-brtl*)
+	        aix_use_runtimelinking=yes
+	        break
+	        ;;
+	      esac
+	    done
+	    ;;
+          esac
+
+          exp_sym_flag='-bexport'
+          no_entry_flag='-bnoentry'
+        fi
+
+        # When large executables or shared objects are built, AIX ld can
+        # have problems creating the table of contents.  If linking a library
+        # or program results in "error TOC overflow" add -mminimal-toc to
+        # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+        # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+        archive_cmds_CXX=''
+        hardcode_direct_CXX=yes
+        hardcode_direct_absolute_CXX=yes
+        hardcode_libdir_separator_CXX=':'
+        link_all_deplibs_CXX=yes
+        file_list_spec_CXX='${wl}-f,'
+
+        if test "$GXX" = yes; then
+          case $host_os in aix4.[012]|aix4.[012].*)
+          # We only want to do this on AIX 4.2 and lower, the check
+          # below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" &&
+	     strings "$collect2name" | $GREP resolve_lib_name >/dev/null
+	  then
+	    # We have reworked collect2
+	    :
+	  else
+	    # We have old collect2
+	    hardcode_direct_CXX=unsupported
+	    # It fails to find uninstalled libraries when the uninstalled
+	    # path is not listed in the libpath.  Setting hardcode_minus_L
+	    # to unsupported forces relinking
+	    hardcode_minus_L_CXX=yes
+	    hardcode_libdir_flag_spec_CXX='-L$libdir'
+	    hardcode_libdir_separator_CXX=
+	  fi
+          esac
+          shared_flag='-shared'
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag="$shared_flag "'${wl}-G'
+	  fi
+        else
+          # not using gcc
+          if test "$host_cpu" = ia64; then
+	  # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	  # chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+          else
+	    if test "$aix_use_runtimelinking" = yes; then
+	      shared_flag='${wl}-G'
+	    else
+	      shared_flag='${wl}-bM:SRE'
+	    fi
+          fi
+        fi
+
+        export_dynamic_flag_spec_CXX='${wl}-bexpall'
+        # It seems that -bexpall does not export symbols beginning with
+        # underscore (_), so it is better to generate a list of symbols to
+	# export.
+        always_export_symbols_CXX=yes
+        if test "$aix_use_runtimelinking" = yes; then
+          # Warning - without using the other runtime loading flags (-brtl),
+          # -berok will link without error, but may produce a broken library.
+          allow_undefined_flag_CXX='-berok'
+          # Determine the default libpath from the value encoded in an empty
+          # executable.
+          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+          hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+          archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+        else
+          if test "$host_cpu" = ia64; then
+	    hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	    allow_undefined_flag_CXX="-z nodefs"
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+          else
+	    # Determine the default libpath from the value encoded in an
+	    # empty executable.
+	    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+	/^0/ {
+	    s/^0  *\(.*\)$/\1/
+	    p
+	}
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	    # Warning - without using the other run time loading flags,
+	    # -berok will link without error, but may produce a broken library.
+	    no_undefined_flag_CXX=' ${wl}-bernotok'
+	    allow_undefined_flag_CXX=' ${wl}-berok'
+	    if test "$with_gnu_ld" = yes; then
+	      # We only use this code for GNU lds that support --whole-archive.
+	      whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    else
+	      # Exported symbols can be pulled into shared objects from archives
+	      whole_archive_flag_spec_CXX='$convenience'
+	    fi
+	    archive_cmds_need_lc_CXX=yes
+	    # This is similar to how AIX traditionally builds its shared
+	    # libraries.
+	    archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+          fi
+        fi
+        ;;
+
+      beos*)
+	if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then
+	  allow_undefined_flag_CXX=unsupported
+	  # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	  # support --undefined.  This deserves some investigation.  FIXME
+	  archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      chorus*)
+        case $cc_basename in
+          *)
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	  ;;
+        esac
+        ;;
+
+      cygwin* | mingw* | pw32* | cegcc*)
+        # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+        # as there is no search path for DLLs.
+        hardcode_libdir_flag_spec_CXX='-L$libdir'
+        export_dynamic_flag_spec_CXX='${wl}--export-all-symbols'
+        allow_undefined_flag_CXX=unsupported
+        always_export_symbols_CXX=no
+        enable_shared_with_static_runtimes_CXX=yes
+
+        if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then
+          archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+          # If the export-symbols file already is a .def file (1st line
+          # is EXPORTS), use it as is; otherwise, prepend...
+          archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	    cp $export_symbols $output_objdir/$soname.def;
+          else
+	    echo EXPORTS > $output_objdir/$soname.def;
+	    cat $export_symbols >> $output_objdir/$soname.def;
+          fi~
+          $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+        else
+          ld_shlibs_CXX=no
+        fi
+        ;;
+      darwin* | rhapsody*)
+
+
+  archive_cmds_need_lc_CXX=no
+  hardcode_direct_CXX=no
+  hardcode_automatic_CXX=yes
+  hardcode_shlibpath_var_CXX=unsupported
+  if test "$lt_cv_ld_force_load" = "yes"; then
+    whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
+  else
+    whole_archive_flag_spec_CXX=''
+  fi
+  link_all_deplibs_CXX=yes
+  allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+  case $cc_basename in
+     ifort*) _lt_dar_can_shared=yes ;;
+     *) _lt_dar_can_shared=$GCC ;;
+  esac
+  if test "$_lt_dar_can_shared" = "yes"; then
+    output_verbose_link_cmd=func_echo_all
+    archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+    module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+    archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+    module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+       if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+      archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
+    fi
+
+  else
+  ld_shlibs_CXX=no
+  fi
+
+	;;
+
+      dgux*)
+        case $cc_basename in
+          ec++*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          ghcx*)
+	    # Green Hills C++ Compiler
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      freebsd2.*)
+        # C++ shared libraries reported to be fairly broken before
+	# switch to ELF
+        ld_shlibs_CXX=no
+        ;;
+
+      freebsd-elf*)
+        archive_cmds_need_lc_CXX=no
+        ;;
+
+      freebsd* | dragonfly*)
+        # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+        # conventions
+        ld_shlibs_CXX=yes
+        ;;
+
+      gnu*)
+        ;;
+
+      haiku*)
+        archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+        link_all_deplibs_CXX=yes
+        ;;
+
+      hpux9*)
+        hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        export_dynamic_flag_spec_CXX='${wl}-E'
+        hardcode_direct_CXX=yes
+        hardcode_minus_L_CXX=yes # Not in the search PATH,
+				             # but as the default
+				             # location of the library.
+
+        case $cc_basename in
+          CC*)
+            # FIXME: insert proper C++ library support
+            ld_shlibs_CXX=no
+            ;;
+          aCC*)
+            archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            # Commands to make compiler produce verbose output that lists
+            # what "hidden" libraries, object files and flags are used when
+            # linking a shared library.
+            #
+            # There doesn't appear to be a way to prevent this compiler from
+            # explicitly linking system object files so we need to strip them
+            # from the output so that they don't get included in the library
+            # dependencies.
+            output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+            ;;
+          *)
+            if test "$GXX" = yes; then
+              archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+            else
+              # FIXME: insert proper C++ library support
+              ld_shlibs_CXX=no
+            fi
+            ;;
+        esac
+        ;;
+
+      hpux10*|hpux11*)
+        if test $with_gnu_ld = no; then
+	  hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+          case $host_cpu in
+            hppa*64*|ia64*)
+              ;;
+            *)
+	      export_dynamic_flag_spec_CXX='${wl}-E'
+              ;;
+          esac
+        fi
+        case $host_cpu in
+          hppa*64*|ia64*)
+            hardcode_direct_CXX=no
+            hardcode_shlibpath_var_CXX=no
+            ;;
+          *)
+            hardcode_direct_CXX=yes
+            hardcode_direct_absolute_CXX=yes
+            hardcode_minus_L_CXX=yes # Not in the search PATH,
+					         # but as the default
+					         # location of the library.
+            ;;
+        esac
+
+        case $cc_basename in
+          CC*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          aCC*)
+	    case $host_cpu in
+	      hppa*64*)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      ia64*)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	      *)
+	        archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	        ;;
+	    esac
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test $with_gnu_ld = no; then
+	        case $host_cpu in
+	          hppa*64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          ia64*)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	          *)
+	            archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	            ;;
+	        esac
+	      fi
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      interix[3-9]*)
+	hardcode_direct_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}-E'
+	# Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+	# Instead, shared libraries are loaded at an image base (0x10000000 by
+	# default) and relocated if they conflict, which is a slow very memory
+	# consuming and fragmenting process.  To avoid this, we pick a random,
+	# 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+	# time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+	archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+	;;
+      irix5* | irix6*)
+        case $cc_basename in
+          CC*)
+	    # SGI C++
+	    archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    if test "$GXX" = yes; then
+	      if test "$with_gnu_ld" = no; then
+	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	      else
+	        archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib'
+	      fi
+	    fi
+	    link_all_deplibs_CXX=yes
+	    ;;
+        esac
+        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+        hardcode_libdir_separator_CXX=:
+        inherit_rpath_CXX=yes
+        ;;
+
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	    archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	    old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	    ;;
+	  icpc* | ecpc* )
+	    # Intel C++
+	    with_gnu_ld=yes
+	    # version 8.0 and above of icpc choke on multiply defined symbols
+	    # if we add $predep_objects and $postdep_objects, however 7.1 and
+	    # earlier do not add the objects themselves.
+	    case `$CC -V 2>&1` in
+	      *"Version 7."*)
+	        archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	      *)  # Version 8.0 or newer
+	        tmp_idyn=
+	        case $host_cpu in
+		  ia64*) tmp_idyn=' -i_dynamic';;
+		esac
+	        archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+		archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+		;;
+	    esac
+	    archive_cmds_need_lc_CXX=no
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	    ;;
+          pgCC* | pgcpp*)
+            # Portland Group C++ compiler
+	    case `$CC -V` in
+	    *pgCC\ [1-5].* | *pgcpp\ [1-5].*)
+	      prelink_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~
+		compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"'
+	      old_archive_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~
+		$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~
+		$RANLIB $oldlib'
+	      archive_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      archive_expsym_cmds_CXX='tpldir=Template.dir~
+		rm -rf $tpldir~
+		$CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~
+		$CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    *) # Version 6 and above use weak symbols
+	      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+	      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+	      ;;
+	    esac
+
+	    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+            ;;
+	  cxx*)
+	    # Compaq C++
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	    runpath_var=LD_RUN_PATH
+	    hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed'
+	    ;;
+	  xl* | mpixl* | bgxl*)
+	    # IBM XL 8.0 on PPC, with GNU ld
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	    archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	    if test "x$supports_anon_versioning" = xyes; then
+	      archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~
+		cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+		echo "local: *; };" >> $output_objdir/$libname.ver~
+		$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	    fi
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      no_undefined_flag_CXX=' -zdefs'
+	      archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+	      hardcode_libdir_flag_spec_CXX='-R$libdir'
+	      whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive'
+	      compiler_needs_object_CXX=yes
+
+	      # Not sure whether something based on
+	      # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+	      # would be better.
+	      output_verbose_link_cmd='func_echo_all'
+
+	      # Archives containing C++ object files must be created using
+	      # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	      # necessary to make sure instantiated templates are included
+	      # in the archive.
+	      old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+
+      lynxos*)
+        # FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+
+      m88k*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+	;;
+
+      mvs*)
+        case $cc_basename in
+          cxx*)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	  *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+	esac
+	;;
+
+      netbsd*)
+        if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+	  archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+	  wlarc=
+	  hardcode_libdir_flag_spec_CXX='-R$libdir'
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	fi
+	# Workaround some broken pre-1.5 toolchains
+	output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+	;;
+
+      *nto* | *qnx*)
+        ld_shlibs_CXX=yes
+	;;
+
+      openbsd2*)
+        # C++ shared libraries are fairly broken
+	ld_shlibs_CXX=no
+	;;
+
+      openbsd*)
+	if test -f /usr/libexec/ld.so; then
+	  hardcode_direct_CXX=yes
+	  hardcode_shlibpath_var_CXX=no
+	  hardcode_direct_absolute_CXX=yes
+	  archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	    archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+	    export_dynamic_flag_spec_CXX='${wl}-E'
+	    whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+	  fi
+	  output_verbose_link_cmd=func_echo_all
+	else
+	  ld_shlibs_CXX=no
+	fi
+	;;
+
+      osf3* | osf4* | osf5*)
+        case $cc_basename in
+          KCC*)
+	    # Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	    # KCC will only create a shared library if the output file
+	    # ends with ".so" (or ".sl" for HP-UX), so rename the library
+	    # to its proper name (with version) after linking.
+	    archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	    hardcode_libdir_separator_CXX=:
+
+	    # Archives containing C++ object files must be created using
+	    # the KAI C++ compiler.
+	    case $host in
+	      osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;;
+	      *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;;
+	    esac
+	    ;;
+          RCC*)
+	    # Rational C++ 2.4.1
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          cxx*)
+	    case $host in
+	      osf3*)
+	        allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+		;;
+	      *)
+	        allow_undefined_flag_CXX=' -expect_unresolved \*'
+	        archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib'
+	        archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	          echo "-hidden">> $lib.exp~
+	          $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp  `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~
+	          $RM $lib.exp'
+	        hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+		;;
+	    esac
+
+	    hardcode_libdir_separator_CXX=:
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    #
+	    # There doesn't appear to be a way to prevent this compiler from
+	    # explicitly linking system object files so we need to strip them
+	    # from the output so that they don't get included in the library
+	    # dependencies.
+	    output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"'
+	    ;;
+	  *)
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	      case $host in
+	        osf3*)
+	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	        *)
+	          archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+		  ;;
+	      esac
+
+	      hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	      hardcode_libdir_separator_CXX=:
+
+	      # Commands to make compiler produce verbose output that lists
+	      # what "hidden" libraries, object files and flags are used when
+	      # linking a shared library.
+	      output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+
+	    else
+	      # FIXME: insert proper C++ library support
+	      ld_shlibs_CXX=no
+	    fi
+	    ;;
+        esac
+        ;;
+
+      psos*)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+
+      sunos4*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.x
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          lcc*)
+	    # Lucid
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      solaris*)
+        case $cc_basename in
+          CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+            archive_cmds_need_lc_CXX=yes
+	    no_undefined_flag_CXX=' -zdefs'
+	    archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	    archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+	      $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	    hardcode_libdir_flag_spec_CXX='-R$libdir'
+	    hardcode_shlibpath_var_CXX=no
+	    case $host_os in
+	      solaris2.[0-5] | solaris2.[0-5].*) ;;
+	      *)
+		# The compiler driver will combine and reorder linker options,
+		# but understands `-z linker_flag'.
+	        # Supported since Solaris 2.6 (maybe 2.5.1?)
+		whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
+	        ;;
+	    esac
+	    link_all_deplibs_CXX=yes
+
+	    output_verbose_link_cmd='func_echo_all'
+
+	    # Archives containing C++ object files must be created using
+	    # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	    # necessary to make sure instantiated templates are included
+	    # in the archive.
+	    old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	    ;;
+          gcx*)
+	    # Green Hills C++ Compiler
+	    archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	    # The C++ compiler must be used to create the archive.
+	    old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	    ;;
+          *)
+	    # GNU C++ compiler with Solaris linker
+	    if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	      no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	      if $CC --version | $GREP -v '^2\.7' > /dev/null; then
+	        archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      else
+	        # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	        # platform.
+	        archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	        archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~
+		  $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp'
+
+	        # Commands to make compiler produce verbose output that lists
+	        # what "hidden" libraries, object files and flags are used when
+	        # linking a shared library.
+	        output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"'
+	      fi
+
+	      hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	      case $host_os in
+		solaris2.[0-5] | solaris2.[0-5].*) ;;
+		*)
+		  whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+		  ;;
+	      esac
+	    fi
+	    ;;
+        esac
+        ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+      no_undefined_flag_CXX='${wl}-z,text'
+      archive_cmds_need_lc_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      runpath_var='LD_RUN_PATH'
+
+      case $cc_basename in
+        CC*)
+	  archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+      esac
+      ;;
+
+      sysv5* | sco3.2v5* | sco5v6*)
+	# Note: We can NOT use -z defs as we might desire, because we do not
+	# link with -lc, and that would cause any symbols used from libc to
+	# always be unresolved, which means just about no library would
+	# ever link correctly.  If we're not using GNU ld we use -z text
+	# though, which does catch some bad symbols but isn't as heavy-handed
+	# as -z defs.
+	no_undefined_flag_CXX='${wl}-z,text'
+	allow_undefined_flag_CXX='${wl}-z,nodefs'
+	archive_cmds_need_lc_CXX=no
+	hardcode_shlibpath_var_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir'
+	hardcode_libdir_separator_CXX=':'
+	link_all_deplibs_CXX=yes
+	export_dynamic_flag_spec_CXX='${wl}-Bexport'
+	runpath_var='LD_RUN_PATH'
+
+	case $cc_basename in
+          CC*)
+	    archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~
+	      '"$old_archive_cmds_CXX"
+	    reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~
+	      '"$reload_cmds_CXX"
+	    ;;
+	  *)
+	    archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	    ;;
+	esac
+      ;;
+
+      tandem*)
+        case $cc_basename in
+          NCC*)
+	    # NonStop-UX NCC 3.20
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+          *)
+	    # FIXME: insert proper C++ library support
+	    ld_shlibs_CXX=no
+	    ;;
+        esac
+        ;;
+
+      vxworks*)
+        # For VxWorks ports, we assume the use of a GNU linker with
+        # standard elf conventions.
+        ld_shlibs_CXX=yes
+        ;;
+
+      *)
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+        ;;
+    esac
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+    test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+    GCC_CXX="$GXX"
+    LD_CXX="$LD"
+
+    ## CAVEAT EMPTOR:
+    ## There is no encapsulation within the following macros, do not change
+    ## the running order or otherwise move them around unless you know exactly
+    ## what you are doing...
+    # Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+cat > conftest.$ac_ext <<_LT_EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+_LT_EOF
+
+if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  for p in `eval "$output_verbose_link_cmd"`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" ||
+          test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$RM -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix[3-9]*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+ compiler_lib_search_dirs_CXX=
+if test -n "${compiler_lib_search_path_CXX}"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+
+    amigaos*)
+      case $host_cpu in
+      powerpc)
+            # see comment about AmigaOS4 .so support
+            lt_prog_compiler_pic_CXX='-fPIC'
+        ;;
+      m68k)
+            # FIXME: we need at least 68020 code to build shared libraries, but
+            # adding the `-m68020' flag to GCC prevents building anything better,
+            # like `-m68040'.
+            lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+        ;;
+      esac
+      ;;
+
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | cygwin* | os2* | pw32* | cegcc*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    haiku*)
+      # PIC is the default for Haiku.
+      # The "-static" flag exists, but is broken.
+      lt_prog_compiler_static_CXX=
+      ;;
+    interix[3-9]*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for 64-bit PA HP-UX, but not for 32-bit
+      # PA HP-UX.  On IA64 HP-UX, PIC is the default but the pic flag
+      # sets the default TLS model and affects inlining.
+      case $host_cpu in
+      hppa*64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *qnx* | *nto*)
+      # QNX uses GNU C++, but need to define -shared option too, otherwise
+      # it will coredump.
+      lt_prog_compiler_pic_CXX='-fPIC -shared'
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix[4-9]*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  ecpc* )
+	    # old Intel C++ for x86_64 which still supported -KPIC.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  icpc* )
+	    # Intel C++, used to be incompatible with GCC.
+	    # ICC 10 doesn't accept -KPIC any more.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC* | pgcpp*)
+	    # Portland Group C++ compiler
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  xlc* | xlC* | bgxl[cC]* | mpixl[cC]*)
+	    # IBM XL 8.0, 9.0 on PPC and BlueGene
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-qpic'
+	    lt_prog_compiler_static_CXX='-qstaticlink'
+	    ;;
+	  *)
+	    case `$CC -V 2>&1 | sed 5q` in
+	    *Sun\ C*)
+	      # Sun C++ 5.9
+	      lt_prog_compiler_pic_CXX='-KPIC'
+	      lt_prog_compiler_static_CXX='-Bstatic'
+	      lt_prog_compiler_wl_CXX='-Qoption ld '
+	      ;;
+	    esac
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      *qnx* | *nto*)
+        # QNX uses GNU C++, but need to define -shared option too, otherwise
+        # it will coredump.
+        lt_prog_compiler_pic_CXX='-fPIC -shared'
+        ;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic_CXX" >&5
+$as_echo "$lt_prog_compiler_pic_CXX" >&6; }
+
+
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; }
+if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_pic_works_CXX=no
+   ac_outfile=conftest.$ac_objext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+
+
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if ${lt_cv_prog_compiler_static_works_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_cv_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_cv_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $RM -r conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if ${lt_cv_prog_compiler_c_o_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $RM -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $RM conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files
+   $RM out/* && rmdir out
+   cd ..
+   $RM -r conftest
+   $RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+$as_echo_n "checking if we can lock with hard links... " >&6; }
+  hard_links=yes
+  $RM conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+$as_echo "$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix[4-9]*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    # Also, AIX nm treats weak defined symbols like other global defined
+    # symbols, whereas GNU nm marks them as "W".
+    if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw* | cegcc*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5
+$as_echo "$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+with_gnu_ld_CXX=$with_gnu_ld
+
+
+
+
+
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
+if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  $RM conftest*
+	echo "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+	if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } 2>conftest.err; then
+	  soname=conftest
+	  lib=conftest
+	  libobjs=conftest.$ac_objext
+	  deplibs=
+	  wl=$lt_prog_compiler_wl_CXX
+	  pic_flag=$lt_prog_compiler_pic_CXX
+	  compiler_flags=-v
+	  linker_flags=-v
+	  verstring=
+	  output_objdir=.
+	  libname=conftest
+	  lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+	  allow_undefined_flag_CXX=
+	  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+	  then
+	    lt_cv_archive_cmds_need_lc_CXX=no
+	  else
+	    lt_cv_archive_cmds_need_lc_CXX=yes
+	  fi
+	  allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+	else
+	  cat conftest.err 1>&5
+	fi
+	$RM conftest*
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5
+$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; }
+      archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+$as_echo_n "checking dynamic linker characteristics... " >&6; }
+
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix[4-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  case $host_cpu in
+  powerpc)
+    # Since July 2007 AmigaOS4 officially supports .so libraries.
+    # When compiling the executable, add -use-dynld -Lsobjs: to the compileline.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    ;;
+  m68k)
+    library_names_spec='$libname.ixlibrary $libname.a'
+    # Create ${libname}_ixlibrary.a entries in /sys/libs.
+    finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+    ;;
+  esac
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32* | cegcc*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname~
+      if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then
+        eval '\''$striplib \$dldir/$dlname'\'' || exit \$?;
+      fi'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $RM \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+
+      ;;
+    mingw* | cegcc*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[23].*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2.*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  *) # from 4.6 on, and DragonFly
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+haiku*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  dynamic_linker="$host_os runtime_loader"
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib'
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  hppa*64*)
+    shrext_cmds='.sl'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+  *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555, ...
+  postinstall_cmds='chmod 555 $lib'
+  # or fails outright, so override atomically:
+  install_override_mode=555
+  ;;
+
+interix[3-9]*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+
+# uclinux* changes (here and below) have been submitted to the libtool
+# project, but have not yet been accepted: they are GCC-local changes
+# for the time being.  (See
+# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+
+  # Some binutils ld are patched to set DT_RUNPATH
+  if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_shlibpath_overrides_runpath=no
+    save_LDFLAGS=$LDFLAGS
+    save_libdir=$libdir
+    eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \
+	 LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\""
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  if  ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+  lt_cv_shlibpath_overrides_runpath=yes
+fi
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    LDFLAGS=$save_LDFLAGS
+    libdir=$save_libdir
+
+fi
+
+  shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath
+
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[	 ]*hwcap[	 ]/d;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+*nto* | *qnx*)
+  version_type=qnx
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='ldqnx.so'
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*)	need_version=yes ;;
+    *)				need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+# Shared libraries for VwWorks, >= 7 only at this stage
+# and (fpic) still incompatible with "large" code models
+# in a few configurations. Only for RTP mode in any case,
+# and upon explicit request at configure time.
+vxworks7*)
+  dynamic_linker=no
+  case ${with_multisubdir}-${enable_shared} in
+    *large*)
+      ;;
+    *mrtp*-yes)
+      version_type=linux
+      need_lib_prefix=no
+      need_version=no
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+      soname_spec='${libname}${release}${shared_ext}$major'
+      dynamic_linker="$host_os module_loader"
+      ;;
+  esac
+  ;;
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" ||
+   test -n "$runpath_var_CXX" ||
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5
+$as_echo "$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink ||
+   test "$inherit_rpath_CXX" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+
+  fi # test -n "$compiler"
+
+  CC=$lt_save_CC
+  LDCXX=$LD
+  LD=$lt_save_LD
+  GCC=$lt_save_GCC
+  with_gnu_ld=$lt_save_with_gnu_ld
+  lt_cv_path_LDCXX=$lt_cv_path_LD
+  lt_cv_path_LD=$lt_save_path_LD
+  lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+  lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+fi # test "$_lt_caught_CXX_error" != yes
+
+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_commands="$ac_config_commands libtool"
+
+
+
+
+# Only expand once:
+
+
+# ... and we need it soon, since it is used by some of the
+# link tests in the configure script.
+: ${CONFIG_LT=./config.lt}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5
+$as_echo "$as_me: creating $CONFIG_LT" >&6;}
+as_write_fail=0
+cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate a libtool stub with the current configuration.
+SHELL=\${CONFIG_SHELL-$SHELL}
+export SHELL
+_ASEOF
+cat >>"$CONFIG_LT" <<\_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_LT" script. ##
+## --------------------------------- ##
+_ASEOF
+test $as_write_fail = 0 && chmod +x "$CONFIG_LT"
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+lt_cl_silent=false
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+} >&5
+
+lt_cl_help="\
+\`$as_me' creates a local libtool stub from the current configuration,
+for use in further configure time tests before the real libtool is
+generated.
+
+Usage: $0 [OPTIONS]
+
+  -h, --help      print this help, then exit
+  -V, --version   print version number, then exit
+  -q, --quiet     do not print progress messages
+  -d, --debug     don't remove temporary files
+
+Report bugs to <bug-libtool@gnu.org>."
+
+lt_cl_version="\
+config.lt
+configured by $0, generated by GNU Autoconf 2.69.
+
+Copyright (C) 2009 Free Software Foundation, Inc.
+This config.lt script is free software; the Free Software Foundation
+gives unlimited permision to copy, distribute and modify it."
+
+while test $# != 0
+do
+  case $1 in
+    --version | --v* | -V )
+      echo "$lt_cl_version"; exit 0 ;;
+    --help | --h* | -h )
+      echo "$lt_cl_help"; exit 0 ;;
+    --debug | --d* | -d )
+      debug=: ;;
+    --quiet | --q* | --silent | --s* | -q )
+      lt_cl_silent=: ;;
+
+    -*) as_fn_error $? "unrecognized option: $1
+Try \`$0 --help' for more information." "$LINENO" 5 ;;
+
+    *) as_fn_error $? "unrecognized argument: $1
+Try \`$0 --help' for more information." "$LINENO" 5 ;;
+  esac
+  shift
+done
+
+if $lt_cl_silent; then
+  exec 6>/dev/null
+fi
+_LTEOF
+
+cat >>"$CONFIG_LT" <<_LTEOF
+
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+sed_quote_subst='$sed_quote_subst'
+double_quote_subst='$double_quote_subst'
+delay_variable_subst='$delay_variable_subst'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`'
+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`'
+predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`'
+postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`'
+predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`'
+postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`'
+LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`'
+reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`'
+reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`'
+GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`'
+lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`'
+lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`'
+enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`'
+export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`'
+allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`'
+inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`'
+link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`'
+fix_srcfile_path_CXX='`$ECHO "$fix_srcfile_path_CXX" | $SED "$delay_single_quote_subst"`'
+always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`'
+export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`'
+prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`'
+file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`'
+hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`'
+predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`'
+predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`'
+postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`'
+compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`'
+
+LTCC='$LTCC'
+LTCFLAGS='$LTCFLAGS'
+compiler='$compiler_DEFAULT'
+
+# A function that is used when there is no print builtin or printf.
+func_fallback_echo ()
+{
+  eval 'cat <<_LTECHO_EOF
+\$1
+_LTECHO_EOF'
+}
+
+# Quote evaled strings.
+for var in SHELL \
+ECHO \
+SED \
+GREP \
+EGREP \
+FGREP \
+LD \
+NM \
+LN_S \
+lt_SP2NL \
+lt_NL2SP \
+reload_flag \
+OBJDUMP \
+deplibs_check_method \
+file_magic_cmd \
+AR \
+AR_FLAGS \
+STRIP \
+RANLIB \
+CC \
+CFLAGS \
+compiler \
+lt_cv_sys_global_symbol_pipe \
+lt_cv_sys_global_symbol_to_cdecl \
+lt_cv_sys_global_symbol_to_c_name_address \
+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
+lt_prog_compiler_no_builtin_flag \
+lt_prog_compiler_wl \
+lt_prog_compiler_pic \
+lt_prog_compiler_static \
+lt_cv_prog_compiler_c_o \
+need_locks \
+DSYMUTIL \
+NMEDIT \
+LIPO \
+OTOOL \
+OTOOL64 \
+shrext_cmds \
+export_dynamic_flag_spec \
+whole_archive_flag_spec \
+compiler_needs_object \
+with_gnu_ld \
+allow_undefined_flag \
+no_undefined_flag \
+hardcode_libdir_flag_spec \
+hardcode_libdir_flag_spec_ld \
+hardcode_libdir_separator \
+fix_srcfile_path \
+exclude_expsyms \
+include_expsyms \
+file_list_spec \
+variables_saved_for_relink \
+libname_spec \
+library_names_spec \
+soname_spec \
+install_override_mode \
+finish_eval \
+old_striplib \
+striplib \
+compiler_lib_search_dirs \
+predep_objects \
+postdep_objects \
+predeps \
+postdeps \
+compiler_lib_search_path \
+LD_CXX \
+reload_flag_CXX \
+compiler_CXX \
+lt_prog_compiler_no_builtin_flag_CXX \
+lt_prog_compiler_wl_CXX \
+lt_prog_compiler_pic_CXX \
+lt_prog_compiler_static_CXX \
+lt_cv_prog_compiler_c_o_CXX \
+export_dynamic_flag_spec_CXX \
+whole_archive_flag_spec_CXX \
+compiler_needs_object_CXX \
+with_gnu_ld_CXX \
+allow_undefined_flag_CXX \
+no_undefined_flag_CXX \
+hardcode_libdir_flag_spec_CXX \
+hardcode_libdir_flag_spec_ld_CXX \
+hardcode_libdir_separator_CXX \
+fix_srcfile_path_CXX \
+exclude_expsyms_CXX \
+include_expsyms_CXX \
+file_list_spec_CXX \
+compiler_lib_search_dirs_CXX \
+predep_objects_CXX \
+postdep_objects_CXX \
+predeps_CXX \
+postdeps_CXX \
+compiler_lib_search_path_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+# Double-quote double-evaled strings.
+for var in reload_cmds \
+old_postinstall_cmds \
+old_postuninstall_cmds \
+old_archive_cmds \
+extract_expsyms_cmds \
+old_archive_from_new_cmds \
+old_archive_from_expsyms_cmds \
+archive_cmds \
+archive_expsym_cmds \
+module_cmds \
+module_expsym_cmds \
+export_symbols_cmds \
+prelink_cmds \
+postinstall_cmds \
+postuninstall_cmds \
+finish_cmds \
+sys_lib_search_path_spec \
+sys_lib_dlsearch_path_spec \
+reload_cmds_CXX \
+old_archive_cmds_CXX \
+old_archive_from_new_cmds_CXX \
+old_archive_from_expsyms_cmds_CXX \
+archive_cmds_CXX \
+archive_expsym_cmds_CXX \
+module_cmds_CXX \
+module_expsym_cmds_CXX \
+export_symbols_cmds_CXX \
+prelink_cmds_CXX; do
+    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
+    *[\\\\\\\`\\"\\\$]*)
+      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+      ;;
+    *)
+      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+      ;;
+    esac
+done
+
+ac_aux_dir='$ac_aux_dir'
+xsi_shell='$xsi_shell'
+lt_shell_append='$lt_shell_append'
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes INIT.
+if test -n "\${ZSH_VERSION+set}" ; then
+   setopt NO_GLOB_SUBST
+fi
+
+
+    PACKAGE='$PACKAGE'
+    VERSION='$VERSION'
+    TIMESTAMP='$TIMESTAMP'
+    RM='$RM'
+    ofile='$ofile'
+
+
+
+
+
+_LTEOF
+
+cat >>"$CONFIG_LT" <<\_LTEOF
+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5
+$as_echo "$as_me: creating $ofile" >&6;}
+
+
+    # See if we are running on zsh, and set the options which allow our
+    # commands through without removal of \ escapes.
+    if test -n "${ZSH_VERSION+set}" ; then
+      setopt NO_GLOB_SUBST
+    fi
+
+    cfgfile="${ofile}T"
+    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
+    $RM "$cfgfile"
+
+    cat <<_LT_EOF >> "$cfgfile"
+#! $SHELL
+
+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+#   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+#                 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+#   Written by Gordon Matzigkeit, 1996
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can 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.
+#
+# As a special exception to the GNU General Public License,
+# if you distribute this file as part of a program or library that
+# is built using GNU Libtool, you may include this file under the
+# same distribution terms that you use for the rest of that program.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
+# obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+# The names of the tagged configurations supported by this script.
+available_tags="CXX "
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# What type of objects to build.
+pic_mode=$pic_mode
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# An echo program that protects backslashes.
+ECHO=$lt_ECHO
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="\$SED -e 1s/^X//"
+
+# A grep program that handles long lines.
+GREP=$lt_GREP
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# A literal string matcher.
+FGREP=$lt_FGREP
+
+# A BSD- or MS-compatible name lister.
+NM=$lt_NM
+
+# Whether we need soft or hard links.
+LN_S=$lt_LN_S
+
+# What is the maximum length of a command?
+max_cmd_len=$max_cmd_len
+
+# Object file suffix (normally "o").
+objext=$ac_objext
+
+# Executable file suffix (normally "").
+exeext=$exeext
+
+# whether the shell understands "unset".
+lt_unset=$lt_unset
+
+# turn spaces into newlines.
+SP2NL=$lt_lt_SP2NL
+
+# turn newlines into spaces.
+NL2SP=$lt_lt_NL2SP
+
+# An object symbol dumper.
+OBJDUMP=$lt_OBJDUMP
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == "file_magic".
+file_magic_cmd=$lt_file_magic_cmd
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A symbol stripping program.
+STRIP=$lt_STRIP
+
+# Commands used to install an old-style archive.
+RANLIB=$lt_RANLIB
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Whether to use a lock for old archive extraction.
+lock_old_archive_extraction=$lock_old_archive_extraction
+
+# A C compiler.
+LTCC=$lt_CC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_CFLAGS
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration.
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair.
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# Transform the output of nm in a C name address pair when lib prefix is needed.
+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# Used to examine libraries when file_magic_cmd begins with "file".
+MAGIC_CMD=$MAGIC_CMD
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
+DSYMUTIL=$lt_DSYMUTIL
+
+# Tool to change global to local symbols on Mac OS X.
+NMEDIT=$lt_NMEDIT
+
+# Tool to manipulate fat objects and archives on Mac OS X.
+LIPO=$lt_LIPO
+
+# ldd/readelf like tool for Mach-O binaries on Mac OS X.
+OTOOL=$lt_OTOOL
+
+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
+OTOOL64=$lt_OTOOL64
+
+# Old archive suffix (normally "a").
+libext=$libext
+
+# Shared library suffix (normally ".so").
+shrext_cmds=$lt_shrext_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at link time.
+variables_saved_for_relink=$lt_variables_saved_for_relink
+
+# Do we need the "lib" prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Library versioning type.
+version_type=$version_type
+
+# Shared library runtime path variable.
+runpath_var=$runpath_var
+
+# Shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Permission mode override for installation of shared libraries.
+install_override_mode=$lt_install_override_mode
+
+# Command to use after installation of a shared archive.
+postinstall_cmds=$lt_postinstall_cmds
+
+# Command to use after uninstallation of a shared archive.
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# As "finish_cmds", except a single script fragment to be evaled but
+# not shown.
+finish_eval=$lt_finish_eval
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Compile-time system search path for libraries.
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+
+# Run-time system search path for libraries.
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds
+
+# A language specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects
+postdep_objects=$lt_postdep_objects
+predeps=$lt_predeps
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# ### END LIBTOOL CONFIG
+
+_LT_EOF
+
+  case $host_os in
+  aix3*)
+    cat <<\_LT_EOF >> "$cfgfile"
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+_LT_EOF
+    ;;
+  esac
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  case $xsi_shell in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result="${1##*/}"
+}
+
+# func_dirname_and_basename file append nondir_replacement
+# perform func_basename and func_dirname in a single function
+# call:
+#   dirname:  Compute the dirname of FILE.  If nonempty,
+#             add APPEND to the result, otherwise set result
+#             to NONDIR_REPLACEMENT.
+#             value returned in "$func_dirname_result"
+#   basename: Compute filename of FILE.
+#             value retuned in "$func_basename_result"
+# Implementation must be kept synchronized with func_dirname
+# and func_basename. For efficiency, we do not delegate to
+# those functions but instead duplicate the functionality here.
+func_dirname_and_basename ()
+{
+  case ${1} in
+    */*) func_dirname_result="${1%/*}${2}" ;;
+    *  ) func_dirname_result="${3}" ;;
+  esac
+  func_basename_result="${1##*/}"
+}
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+func_stripname ()
+{
+  # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
+  # positional parameters, so assign one to ordinary parameter first.
+  func_stripname_result=${3}
+  func_stripname_result=${func_stripname_result#"${1}"}
+  func_stripname_result=${func_stripname_result%"${2}"}
+}
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=${1%%=*}
+  func_opt_split_arg=${1#*=}
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  case ${1} in
+    *.lo) func_lo2o_result=${1%.lo}.${objext} ;;
+    *)    func_lo2o_result=${1} ;;
+  esac
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=${1%.*}.lo
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=$(( $* ))
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=${#1}
+}
+
+_LT_EOF
+    ;;
+  *) # Bourne compatible functions.
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_dirname file append nondir_replacement
+# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
+# otherwise set result to NONDIR_REPLACEMENT.
+func_dirname ()
+{
+  # Extract subdirectory from the argument.
+  func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
+  if test "X$func_dirname_result" = "X${1}"; then
+    func_dirname_result="${3}"
+  else
+    func_dirname_result="$func_dirname_result${2}"
+  fi
+}
+
+# func_basename file
+func_basename ()
+{
+  func_basename_result=`$ECHO "${1}" | $SED "$basename"`
+}
+
+
+# func_stripname prefix suffix name
+# strip PREFIX and SUFFIX off of NAME.
+# PREFIX and SUFFIX must not contain globbing or regex special
+# characters, hashes, percent signs, but SUFFIX may contain a leading
+# dot (in which case that matches only a dot).
+# func_strip_suffix prefix name
+func_stripname ()
+{
+  case ${2} in
+    .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
+    *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
+  esac
+}
+
+# sed scripts:
+my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q'
+my_sed_long_arg='1s/^-[^=]*=//'
+
+# func_opt_split
+func_opt_split ()
+{
+  func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"`
+  func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"`
+}
+
+# func_lo2o object
+func_lo2o ()
+{
+  func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
+}
+
+# func_xform libobj-or-source
+func_xform ()
+{
+  func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
+}
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+  func_arith_result=`expr "$@"`
+}
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+  func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
+}
+
+_LT_EOF
+esac
+
+case $lt_shell_append in
+  yes)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1+=\$2"
+}
+_LT_EOF
+    ;;
+  *)
+    cat << \_LT_EOF >> "$cfgfile"
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+  eval "$1=\$$1\$2"
+}
+
+_LT_EOF
+    ;;
+  esac
+
+
+  sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \
+    || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" ||
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+
+    cat <<_LT_EOF >> "$ofile"
+
+# ### BEGIN LIBTOOL TAG CONFIG: CXX
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag_CXX
+reload_cmds=$lt_reload_cmds_CXX
+
+# Commands used to build an old-style archive.
+old_archive_cmds=$lt_old_archive_cmds_CXX
+
+# A language specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU compiler?
+with_gcc=$GCC_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static.
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Whether the compiler copes with passing no objects directly.
+compiler_needs_object=$lt_compiler_needs_object_CXX
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+
+# Commands used to build a loadable module if different from building
+# a shared archive.
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Whether we are building with GNU ld or not.
+with_gnu_ld=$lt_with_gnu_ld_CXX
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that enforces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into a binary
+# during linking.  This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single "-rpath" flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
+# DIR into the resulting binary and the resulting library dependency is
+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
+# library is relocated.
+hardcode_direct_absolute=$hardcode_direct_absolute_CXX
+
+# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
+# into the resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
+# into the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to "yes" if building a shared library automatically hardcodes DIR
+# into the library and all subsequent libraries and executables linked
+# against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Set to yes if linker adds runtime paths of dependent libraries
+# to runtime path list.
+inherit_rpath=$inherit_rpath_CXX
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path=$lt_fix_srcfile_path_CXX
+
+# Set to "yes" if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# Commands necessary for linking programs (against libraries) with templates.
+prelink_cmds=$lt_prelink_cmds_CXX
+
+# Specify filename containing input files.
+file_list_spec=$lt_file_list_spec_CXX
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# The directories searched by this compiler when creating a shared library.
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
+# Dependencies to place before and after the objects being linked to
+# create a shared library.
+predep_objects=$lt_predep_objects_CXX
+postdep_objects=$lt_postdep_objects_CXX
+predeps=$lt_predeps_CXX
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# ### END LIBTOOL TAG CONFIG: CXX
+_LT_EOF
+
+
+as_fn_exit 0
+_LTEOF
+chmod +x "$CONFIG_LT"
+
+# configure is writing to config.log, but config.lt does its own redirection,
+# appending to config.log, which fails on DOS, as config.log is still kept
+# open by configure.  Here we exec the FD to /dev/null, effectively closing
+# config.log, so it can be properly (re)opened and appended to by config.lt.
+lt_cl_success=:
+test "$silent" = yes &&
+  lt_config_lt_args="$lt_config_lt_args --quiet"
+exec 5>/dev/null
+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
+exec 5>>config.log
+$lt_cl_success || as_fn_exit 1
+
+
+# We require a C++17 compiler.  Check if one is available, and if
+# necessary, set CXX_DIALECT to some -std=xxx switch.
+  ax_cxx_compile_alternatives="17 1z"    ax_cxx_compile_cxx17_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++17 features by default" >&5
+$as_echo_n "checking whether $CXX supports C++17 features by default... " >&6; }
+if ${ax_cv_cxx_compile_cxx17+:} 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"
+
+// MSVC always sets __cplusplus to 199711L in older versions; newer versions
+// only set it correctly if /Zc:__cplusplus is specified as well as a
+// /std:c++NN switch:
+// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
+#elif __cplusplus < 201103L && !defined _MSC_VER
+
+#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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L && !defined _MSC_VER
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+
+// If the compiler admits that it is not ready for C++17, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201703L && !defined _MSC_VER
+
+#error "This is not a C++17 compiler"
+
+#else
+
+#include <initializer_list>
+#include <utility>
+#include <type_traits>
+
+namespace cxx17
+{
+
+  namespace test_constexpr_lambdas
+  {
+
+    constexpr int foo = [](){return 42;}();
+
+  }
+
+  namespace test::nested_namespace::definitions
+  {
+
+  }
+
+  namespace test_fold_expression
+  {
+
+    template<typename... Args>
+    int multiply(Args... args)
+    {
+      return (args * ... * 1);
+    }
+
+    template<typename... Args>
+    bool all(Args... args)
+    {
+      return (args && ...);
+    }
+
+  }
+
+  namespace test_extended_static_assert
+  {
+
+    static_assert (true);
+
+  }
+
+  namespace test_auto_brace_init_list
+  {
+
+    auto foo = {5};
+    auto bar {5};
+
+    static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+    static_assert(std::is_same<int, decltype(bar)>::value);
+  }
+
+  namespace test_typename_in_template_template_parameter
+  {
+
+    template<template<typename> typename X> struct D;
+
+  }
+
+  namespace test_fallthrough_nodiscard_maybe_unused_attributes
+  {
+
+    int f1()
+    {
+      return 42;
+    }
+
+    [[nodiscard]] int f2()
+    {
+      [[maybe_unused]] auto unused = f1();
+
+      switch (f1())
+      {
+      case 17:
+        f1();
+        [[fallthrough]];
+      case 42:
+        f1();
+      }
+      return f1();
+    }
+
+  }
+
+  namespace test_extended_aggregate_initialization
+  {
+
+    struct base1
+    {
+      int b1, b2 = 42;
+    };
+
+    struct base2
+    {
+      base2() {
+        b3 = 42;
+      }
+      int b3;
+    };
+
+    struct derived : base1, base2
+    {
+        int d;
+    };
+
+    derived d1 {{1, 2}, {}, 4};  // full initialization
+    derived d2 {{}, {}, 4};      // value-initialized bases
+
+  }
+
+  namespace test_general_range_based_for_loop
+  {
+
+    struct iter
+    {
+      int i;
+
+      int& operator* ()
+      {
+        return i;
+      }
+
+      const int& operator* () const
+      {
+        return i;
+      }
+
+      iter& operator++()
+      {
+        ++i;
+        return *this;
+      }
+    };
+
+    struct sentinel
+    {
+      int i;
+    };
+
+    bool operator== (const iter& i, const sentinel& s)
+    {
+      return i.i == s.i;
+    }
+
+    bool operator!= (const iter& i, const sentinel& s)
+    {
+      return !(i == s);
+    }
+
+    struct range
+    {
+      iter begin() const
+      {
+        return {0};
+      }
+
+      sentinel end() const
+      {
+        return {5};
+      }
+    };
+
+    void f()
+    {
+      range r {};
+
+      for (auto i : r)
+      {
+        [[maybe_unused]] auto v = i;
+      }
+    }
+
+  }
+
+  namespace test_lambda_capture_asterisk_this_by_value
+  {
+
+    struct t
+    {
+      int i;
+      int foo()
+      {
+        return [*this]()
+        {
+          return i;
+        }();
+      }
+    };
+
+  }
+
+  namespace test_enum_class_construction
+  {
+
+    enum class byte : unsigned char
+    {};
+
+    byte foo {42};
+
+  }
+
+  namespace test_constexpr_if
+  {
+
+    template <bool cond>
+    int f ()
+    {
+      if constexpr(cond)
+      {
+        return 13;
+      }
+      else
+      {
+        return 42;
+      }
+    }
+
+  }
+
+  namespace test_selection_statement_with_initializer
+  {
+
+    int f()
+    {
+      return 13;
+    }
+
+    int f2()
+    {
+      if (auto i = f(); i > 0)
+      {
+        return 3;
+      }
+
+      switch (auto i = f(); i + 4)
+      {
+      case 17:
+        return 2;
+
+      default:
+        return 1;
+      }
+    }
+
+  }
+
+  namespace test_template_argument_deduction_for_class_templates
+  {
+
+    template <typename T1, typename T2>
+    struct pair
+    {
+      pair (T1 p1, T2 p2)
+        : m1 {p1},
+          m2 {p2}
+      {}
+
+      T1 m1;
+      T2 m2;
+    };
+
+    void f()
+    {
+      [[maybe_unused]] auto p = pair{13, 42u};
+    }
+
+  }
+
+  namespace test_non_type_auto_template_parameters
+  {
+
+    template <auto n>
+    struct B
+    {};
+
+    B<5> b1;
+    B<'a'> b2;
+
+  }
+
+  namespace test_structured_bindings
+  {
+
+    int arr[2] = { 1, 2 };
+    std::pair<int, int> pr = { 1, 2 };
+
+    auto f1() -> int(&)[2]
+    {
+      return arr;
+    }
+
+    auto f2() -> std::pair<int, int>&
+    {
+      return pr;
+    }
+
+    struct S
+    {
+      int x1 : 2;
+      volatile double y1;
+    };
+
+    S f3()
+    {
+      return {};
+    }
+
+    auto [ x1, y1 ] = f1();
+    auto& [ xr1, yr1 ] = f1();
+    auto [ x2, y2 ] = f2();
+    auto& [ xr2, yr2 ] = f2();
+    const auto [ x3, y3 ] = f3();
+
+  }
+
+  namespace test_exception_spec_type_system
+  {
+
+    struct Good {};
+    struct Bad {};
+
+    void g1() noexcept;
+    void g2();
+
+    template<typename T>
+    Bad
+    f(T*, T*);
+
+    template<typename T1, typename T2>
+    Good
+    f(T1*, T2*);
+
+    static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+
+  }
+
+  namespace test_inline_variables
+  {
+
+    template<class T> void f(T)
+    {}
+
+    template<class T> inline T g(T)
+    {
+      return T{};
+    }
+
+    template<> inline void f<>(int)
+    {}
+
+    template<> int g<>(int)
+    {
+      return 5;
+    }
+
+  }
+
+}  // namespace cxx17
+
+#endif  // __cplusplus < 201703L && !defined _MSC_VER
+
+
+
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  ax_cv_cxx_compile_cxx17=yes
+else
+  ax_cv_cxx_compile_cxx17=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_cxx17" >&5
+$as_echo "$ax_cv_cxx_compile_cxx17" >&6; }
+    if test x$ax_cv_cxx_compile_cxx17 = 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_cxx17_$switch" | $as_tr_sh`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++17 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++17 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"
+
+// MSVC always sets __cplusplus to 199711L in older versions; newer versions
+// only set it correctly if /Zc:__cplusplus is specified as well as a
+// /std:c++NN switch:
+// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
+#elif __cplusplus < 201103L && !defined _MSC_VER
+
+#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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L && !defined _MSC_VER
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+
+// If the compiler admits that it is not ready for C++17, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201703L && !defined _MSC_VER
+
+#error "This is not a C++17 compiler"
+
+#else
+
+#include <initializer_list>
+#include <utility>
+#include <type_traits>
+
+namespace cxx17
+{
+
+  namespace test_constexpr_lambdas
+  {
+
+    constexpr int foo = [](){return 42;}();
+
+  }
+
+  namespace test::nested_namespace::definitions
+  {
+
+  }
+
+  namespace test_fold_expression
+  {
+
+    template<typename... Args>
+    int multiply(Args... args)
+    {
+      return (args * ... * 1);
+    }
+
+    template<typename... Args>
+    bool all(Args... args)
+    {
+      return (args && ...);
+    }
+
+  }
+
+  namespace test_extended_static_assert
+  {
+
+    static_assert (true);
+
+  }
+
+  namespace test_auto_brace_init_list
+  {
+
+    auto foo = {5};
+    auto bar {5};
+
+    static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+    static_assert(std::is_same<int, decltype(bar)>::value);
+  }
+
+  namespace test_typename_in_template_template_parameter
+  {
+
+    template<template<typename> typename X> struct D;
+
+  }
+
+  namespace test_fallthrough_nodiscard_maybe_unused_attributes
+  {
+
+    int f1()
+    {
+      return 42;
+    }
+
+    [[nodiscard]] int f2()
+    {
+      [[maybe_unused]] auto unused = f1();
+
+      switch (f1())
+      {
+      case 17:
+        f1();
+        [[fallthrough]];
+      case 42:
+        f1();
+      }
+      return f1();
+    }
+
+  }
+
+  namespace test_extended_aggregate_initialization
+  {
+
+    struct base1
+    {
+      int b1, b2 = 42;
+    };
+
+    struct base2
+    {
+      base2() {
+        b3 = 42;
+      }
+      int b3;
+    };
+
+    struct derived : base1, base2
+    {
+        int d;
+    };
+
+    derived d1 {{1, 2}, {}, 4};  // full initialization
+    derived d2 {{}, {}, 4};      // value-initialized bases
+
+  }
+
+  namespace test_general_range_based_for_loop
+  {
+
+    struct iter
+    {
+      int i;
+
+      int& operator* ()
+      {
+        return i;
+      }
+
+      const int& operator* () const
+      {
+        return i;
+      }
+
+      iter& operator++()
+      {
+        ++i;
+        return *this;
+      }
+    };
+
+    struct sentinel
+    {
+      int i;
+    };
+
+    bool operator== (const iter& i, const sentinel& s)
+    {
+      return i.i == s.i;
+    }
+
+    bool operator!= (const iter& i, const sentinel& s)
+    {
+      return !(i == s);
+    }
+
+    struct range
+    {
+      iter begin() const
+      {
+        return {0};
+      }
+
+      sentinel end() const
+      {
+        return {5};
+      }
+    };
+
+    void f()
+    {
+      range r {};
+
+      for (auto i : r)
+      {
+        [[maybe_unused]] auto v = i;
+      }
+    }
+
+  }
+
+  namespace test_lambda_capture_asterisk_this_by_value
+  {
+
+    struct t
+    {
+      int i;
+      int foo()
+      {
+        return [*this]()
+        {
+          return i;
+        }();
+      }
+    };
+
+  }
+
+  namespace test_enum_class_construction
+  {
+
+    enum class byte : unsigned char
+    {};
+
+    byte foo {42};
+
+  }
+
+  namespace test_constexpr_if
+  {
+
+    template <bool cond>
+    int f ()
+    {
+      if constexpr(cond)
+      {
+        return 13;
+      }
+      else
+      {
+        return 42;
+      }
+    }
+
+  }
+
+  namespace test_selection_statement_with_initializer
+  {
+
+    int f()
+    {
+      return 13;
+    }
+
+    int f2()
+    {
+      if (auto i = f(); i > 0)
+      {
+        return 3;
+      }
+
+      switch (auto i = f(); i + 4)
+      {
+      case 17:
+        return 2;
+
+      default:
+        return 1;
+      }
+    }
+
+  }
+
+  namespace test_template_argument_deduction_for_class_templates
+  {
+
+    template <typename T1, typename T2>
+    struct pair
+    {
+      pair (T1 p1, T2 p2)
+        : m1 {p1},
+          m2 {p2}
+      {}
+
+      T1 m1;
+      T2 m2;
+    };
+
+    void f()
+    {
+      [[maybe_unused]] auto p = pair{13, 42u};
+    }
+
+  }
+
+  namespace test_non_type_auto_template_parameters
+  {
+
+    template <auto n>
+    struct B
+    {};
+
+    B<5> b1;
+    B<'a'> b2;
+
+  }
+
+  namespace test_structured_bindings
+  {
+
+    int arr[2] = { 1, 2 };
+    std::pair<int, int> pr = { 1, 2 };
+
+    auto f1() -> int(&)[2]
+    {
+      return arr;
+    }
+
+    auto f2() -> std::pair<int, int>&
+    {
+      return pr;
+    }
+
+    struct S
+    {
+      int x1 : 2;
+      volatile double y1;
+    };
+
+    S f3()
+    {
+      return {};
+    }
+
+    auto [ x1, y1 ] = f1();
+    auto& [ xr1, yr1 ] = f1();
+    auto [ x2, y2 ] = f2();
+    auto& [ xr2, yr2 ] = f2();
+    const auto [ x3, y3 ] = f3();
+
+  }
+
+  namespace test_exception_spec_type_system
+  {
+
+    struct Good {};
+    struct Bad {};
+
+    void g1() noexcept;
+    void g2();
+
+    template<typename T>
+    Bad
+    f(T*, T*);
+
+    template<typename T1, typename T2>
+    Good
+    f(T1*, T2*);
+
+    static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+
+  }
+
+  namespace test_inline_variables
+  {
+
+    template<class T> void f(T)
+    {}
+
+    template<class T> inline T g(T)
+    {
+      return T{};
+    }
+
+    template<> inline void f<>(int)
+    {}
+
+    template<> int g<>(int)
+    {
+      return 5;
+    }
+
+  }
+
+}  // namespace cxx17
+
+#endif  // __cplusplus < 201703L && !defined _MSC_VER
+
+
+
+_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"
+        CXX="$CXX $switch"
+        if test -n "$CXXCPP" ; then
+          CXXCPP="$CXXCPP $switch"
+        fi
+        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}" MSVC; do
+        if test x"$switch" = xMSVC; then
+                                        switch=-std:c++${alternative}
+          cachevar=`$as_echo "ax_cv_cxx_compile_cxx17_${switch}_MSVC" | $as_tr_sh`
+        else
+          cachevar=`$as_echo "ax_cv_cxx_compile_cxx17_$switch" | $as_tr_sh`
+        fi
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports C++17 features with $switch" >&5
+$as_echo_n "checking whether $CXX supports C++17 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"
+
+// MSVC always sets __cplusplus to 199711L in older versions; newer versions
+// only set it correctly if /Zc:__cplusplus is specified as well as a
+// /std:c++NN switch:
+// https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
+#elif __cplusplus < 201103L && !defined _MSC_VER
+
+#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 ~Base() {}
+      virtual void f() {}
+    };
+
+    struct Derived : public Base
+    {
+      virtual ~Derived() override {}
+      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
+
+
+
+
+// If the compiler admits that it is not ready for C++14, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201402L && !defined _MSC_VER
+
+#error "This is not a C++14 compiler"
+
+#else
+
+namespace cxx14
+{
+
+  namespace test_polymorphic_lambdas
+  {
+
+    int
+    test()
+    {
+      const auto lambda = [](auto&&... args){
+        const auto istiny = [](auto x){
+          return (sizeof(x) == 1UL) ? 1 : 0;
+        };
+        const int aretiny[] = { istiny(args)... };
+        return aretiny[0];
+      };
+      return lambda(1, 1L, 1.0f, '1');
+    }
+
+  }
+
+  namespace test_binary_literals
+  {
+
+    constexpr auto ivii = 0b0000000000101010;
+    static_assert(ivii == 42, "wrong value");
+
+  }
+
+  namespace test_generalized_constexpr
+  {
+
+    template < typename CharT >
+    constexpr unsigned long
+    strlen_c(const CharT *const s) noexcept
+    {
+      auto length = 0UL;
+      for (auto p = s; *p; ++p)
+        ++length;
+      return length;
+    }
+
+    static_assert(strlen_c("") == 0UL, "");
+    static_assert(strlen_c("x") == 1UL, "");
+    static_assert(strlen_c("test") == 4UL, "");
+    static_assert(strlen_c("another\0test") == 7UL, "");
+
+  }
+
+  namespace test_lambda_init_capture
+  {
+
+    int
+    test()
+    {
+      auto x = 0;
+      const auto lambda1 = [a = x](int b){ return a + b; };
+      const auto lambda2 = [a = lambda1(x)](){ return a; };
+      return lambda2();
+    }
+
+  }
+
+  namespace test_digit_separators
+  {
+
+    constexpr auto ten_million = 100'000'000;
+    static_assert(ten_million == 100000000, "");
+
+  }
+
+  namespace test_return_type_deduction
+  {
+
+    auto f(int& x) { return x; }
+    decltype(auto) g(int& x) { return x; }
+
+    template < typename T1, typename T2 >
+    struct is_same
+    {
+      static constexpr auto value = false;
+    };
+
+    template < typename T >
+    struct is_same<T, T>
+    {
+      static constexpr auto value = true;
+    };
+
+    int
+    test()
+    {
+      auto x = 0;
+      static_assert(is_same<int, decltype(f(x))>::value, "");
+      static_assert(is_same<int&, decltype(g(x))>::value, "");
+      return x;
+    }
+
+  }
+
+}  // namespace cxx14
+
+#endif  // __cplusplus >= 201402L
+
+
+
+
+// If the compiler admits that it is not ready for C++17, why torture it?
+// Hopefully, this will speed up the test.
+
+#ifndef __cplusplus
+
+#error "This is not a C++ compiler"
+
+#elif __cplusplus < 201703L && !defined _MSC_VER
+
+#error "This is not a C++17 compiler"
+
+#else
+
+#include <initializer_list>
+#include <utility>
+#include <type_traits>
+
+namespace cxx17
+{
+
+  namespace test_constexpr_lambdas
+  {
+
+    constexpr int foo = [](){return 42;}();
+
+  }
+
+  namespace test::nested_namespace::definitions
+  {
+
+  }
+
+  namespace test_fold_expression
+  {
+
+    template<typename... Args>
+    int multiply(Args... args)
+    {
+      return (args * ... * 1);
+    }
+
+    template<typename... Args>
+    bool all(Args... args)
+    {
+      return (args && ...);
+    }
+
+  }
+
+  namespace test_extended_static_assert
+  {
+
+    static_assert (true);
+
+  }
+
+  namespace test_auto_brace_init_list
+  {
+
+    auto foo = {5};
+    auto bar {5};
+
+    static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
+    static_assert(std::is_same<int, decltype(bar)>::value);
+  }
+
+  namespace test_typename_in_template_template_parameter
+  {
+
+    template<template<typename> typename X> struct D;
+
+  }
+
+  namespace test_fallthrough_nodiscard_maybe_unused_attributes
+  {
+
+    int f1()
+    {
+      return 42;
+    }
+
+    [[nodiscard]] int f2()
+    {
+      [[maybe_unused]] auto unused = f1();
+
+      switch (f1())
+      {
+      case 17:
+        f1();
+        [[fallthrough]];
+      case 42:
+        f1();
+      }
+      return f1();
+    }
+
+  }
+
+  namespace test_extended_aggregate_initialization
+  {
+
+    struct base1
+    {
+      int b1, b2 = 42;
+    };
+
+    struct base2
+    {
+      base2() {
+        b3 = 42;
+      }
+      int b3;
+    };
+
+    struct derived : base1, base2
+    {
+        int d;
+    };
+
+    derived d1 {{1, 2}, {}, 4};  // full initialization
+    derived d2 {{}, {}, 4};      // value-initialized bases
+
+  }
+
+  namespace test_general_range_based_for_loop
+  {
+
+    struct iter
+    {
+      int i;
+
+      int& operator* ()
+      {
+        return i;
+      }
+
+      const int& operator* () const
+      {
+        return i;
+      }
+
+      iter& operator++()
+      {
+        ++i;
+        return *this;
+      }
+    };
+
+    struct sentinel
+    {
+      int i;
+    };
+
+    bool operator== (const iter& i, const sentinel& s)
+    {
+      return i.i == s.i;
+    }
+
+    bool operator!= (const iter& i, const sentinel& s)
+    {
+      return !(i == s);
+    }
+
+    struct range
+    {
+      iter begin() const
+      {
+        return {0};
+      }
+
+      sentinel end() const
+      {
+        return {5};
+      }
+    };
+
+    void f()
+    {
+      range r {};
+
+      for (auto i : r)
+      {
+        [[maybe_unused]] auto v = i;
+      }
+    }
+
+  }
+
+  namespace test_lambda_capture_asterisk_this_by_value
+  {
+
+    struct t
+    {
+      int i;
+      int foo()
+      {
+        return [*this]()
+        {
+          return i;
+        }();
+      }
+    };
+
+  }
+
+  namespace test_enum_class_construction
+  {
+
+    enum class byte : unsigned char
+    {};
+
+    byte foo {42};
+
+  }
+
+  namespace test_constexpr_if
+  {
+
+    template <bool cond>
+    int f ()
+    {
+      if constexpr(cond)
+      {
+        return 13;
+      }
+      else
+      {
+        return 42;
+      }
+    }
+
+  }
+
+  namespace test_selection_statement_with_initializer
+  {
+
+    int f()
+    {
+      return 13;
+    }
+
+    int f2()
+    {
+      if (auto i = f(); i > 0)
+      {
+        return 3;
+      }
+
+      switch (auto i = f(); i + 4)
+      {
+      case 17:
+        return 2;
+
+      default:
+        return 1;
+      }
+    }
+
+  }
+
+  namespace test_template_argument_deduction_for_class_templates
+  {
+
+    template <typename T1, typename T2>
+    struct pair
+    {
+      pair (T1 p1, T2 p2)
+        : m1 {p1},
+          m2 {p2}
+      {}
+
+      T1 m1;
+      T2 m2;
+    };
+
+    void f()
+    {
+      [[maybe_unused]] auto p = pair{13, 42u};
+    }
+
+  }
+
+  namespace test_non_type_auto_template_parameters
+  {
+
+    template <auto n>
+    struct B
+    {};
+
+    B<5> b1;
+    B<'a'> b2;
+
+  }
+
+  namespace test_structured_bindings
+  {
+
+    int arr[2] = { 1, 2 };
+    std::pair<int, int> pr = { 1, 2 };
+
+    auto f1() -> int(&)[2]
+    {
+      return arr;
+    }
+
+    auto f2() -> std::pair<int, int>&
+    {
+      return pr;
+    }
+
+    struct S
+    {
+      int x1 : 2;
+      volatile double y1;
+    };
+
+    S f3()
+    {
+      return {};
+    }
+
+    auto [ x1, y1 ] = f1();
+    auto& [ xr1, yr1 ] = f1();
+    auto [ x2, y2 ] = f2();
+    auto& [ xr2, yr2 ] = f2();
+    const auto [ x3, y3 ] = f3();
+
+  }
+
+  namespace test_exception_spec_type_system
+  {
+
+    struct Good {};
+    struct Bad {};
+
+    void g1() noexcept;
+    void g2();
+
+    template<typename T>
+    Bad
+    f(T*, T*);
+
+    template<typename T1, typename T2>
+    Good
+    f(T1*, T2*);
+
+    static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
+
+  }
+
+  namespace test_inline_variables
+  {
+
+    template<class T> void f(T)
+    {}
+
+    template<class T> inline T g(T)
+    {
+      return T{};
+    }
+
+    template<> inline void f<>(int)
+    {}
+
+    template<> int g<>(int)
+    {
+      return 5;
+    }
+
+  }
+
+}  // namespace cxx17
+
+#endif  // __cplusplus < 201703L && !defined _MSC_VER
+
+
+
+_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"
+          CXX="$CXX $switch"
+          if test -n "$CXXCPP" ; then
+            CXXCPP="$CXXCPP $switch"
+          fi
+          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_cxx17_required = xtrue; then
+    if test x$ac_success = xno; then
+      as_fn_error $? "*** A compiler with support for C++17 language features is required." "$LINENO" 5
+    fi
+  fi
+  if test x$ac_success = xno; then
+    HAVE_CXX17=0
+    { $as_echo "$as_me:${as_lineno-$LINENO}: No compiler with C++17 support was found" >&5
+$as_echo "$as_me: No compiler with C++17 support was found" >&6;}
+  else
+    HAVE_CXX17=1
+
+$as_echo "#define HAVE_CXX17 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
+
+
+      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
+
+  # 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  \
+  dlfcn.h \
+  linux/elf.h \
+  linux/perf_event.h  \
+  locale.h \
+  memory.h \
+  poll.h \
+  proc_service.h \
+  signal.h \
+  sys/poll.h \
+  sys/resource.h \
+  sys/select.h \
+  sys/socket.h \
+  sys/un.h \
+  sys/wait.h \
+  termios.h \
+  thread_db.h \
+  wait.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
+
+  # Some systems (e.g. Solaris) have `socketpair' in libsocket.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socketpair" >&5
+$as_echo_n "checking for library containing socketpair... " >&6; }
+if ${ac_cv_search_socketpair+:} 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 socketpair ();
+int
+main ()
+{
+return socketpair ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' socket; 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_socketpair=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_socketpair+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_socketpair+:} false; then :
+
+else
+  ac_cv_search_socketpair=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socketpair" >&5
+$as_echo "$ac_cv_search_socketpair" >&6; }
+ac_res=$ac_cv_search_socketpair
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+  for ac_func in  \
+    fdwalk \
+    getauxval \
+    getrlimit \
+    getrusage \
+    pipe \
+    pipe2 \
+    poll \
+    ptrace64 \
+    sbrk \
+    setns \
+    setpgid \
+    setpgrp \
+    sigaction \
+    sigaltstack \
+    sigprocmask \
+    sigtimedwait \
+    socketpair \
+
+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
+
+
+  # This is needed for RHEL 5 and uclibc-ng < 1.0.39.
+  # These did not define ADDR_NO_RANDOMIZE in sys/personality.h,
+  # only in linux/personality.h.
+  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
+
+
+  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
+
+
+  # On FreeBSD we need libutil for the kinfo_get* functions.  On
+  # GNU/kFreeBSD systems, FreeBSD libutil is renamed to libutil-freebsd.
+  # Figure out which one to use.
+  { $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"
+
+fi
+
+
+  # Define HAVE_KINFO_GETFILE if kinfo_getfile is available.
+  for ac_func in kinfo_getfile
+do :
+  ac_fn_c_check_func "$LINENO" "kinfo_getfile" "ac_cv_func_kinfo_getfile"
+if test "x$ac_cv_func_kinfo_getfile" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_KINFO_GETFILE 1
+_ACEOF
+
+fi
+done
+
+
+  # ----------------------- #
+  # Check for threading.    #
+  # ----------------------- #
+
+  # Check whether --enable-threading was given.
+if test "${enable_threading+set}" = set; then :
+  enableval=$enable_threading; case "$enableval" in
+    yes) want_threading=yes ;;
+    no) want_threading=no ;;
+    *) as_fn_error $? "bad value $enableval for threading" "$LINENO" 5 ;;
+    esac
+else
+  want_threading=auto
+fi
+
+
+  # Check for std::thread.  This does not work on some platforms, like
+  # mingw using the win32 threads model with gcc older than 13, 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
+
+
+  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.  */
+  #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 <thread>
+    #include <mutex>
+    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; }
+
+  if test "$threads" = "yes"; then
+    # 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
+
+  fi
+  LIBS="$save_LIBS"
+  CXXFLAGS="$save_CXXFLAGS"
+
+  if test "$want_threading" != "no"; then
+    if test "$gdb_cv_cxx_std_thread" = "yes"; then
+
+$as_echo "#define CXX_STD_THREAD 1" >>confdefs.h
+
+    else
+	if test "$want_threading" = "yes"; then
+	    as_fn_error $? "std::thread does not work; disable threading" "$LINENO" 5
+	else
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: std::thread does not work; disabling threading" >&5
+$as_echo "$as_me: WARNING: std::thread does not work; disabling threading" >&2;}
+	fi
+    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
+
+
+      { $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
+
+      ac_fn_c_check_member "$LINENO" "struct pt_event" "variant.ptwrite" "ac_cv_member_struct_pt_event_variant_ptwrite" "#include <intel-pt.h>
+"
+if test "x$ac_cv_member_struct_pt_event_variant_ptwrite" = xyes; then :
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_PT_EVENT_VARIANT_PTWRITE 1
+_ACEOF
+
+
+fi
+
+      LIBS=$save_LIBS
+    fi
+  fi
+
+  # Check if the compiler and runtime support printing long longs.
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long support in printf" >&5
+$as_echo_n "checking for long long support in printf... " >&6; }
+if ${gdb_cv_printf_has_long_long+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test "$cross_compiling" = yes; then :
+  gdb_cv_printf_has_long_long=no
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+char buf[32];
+    long long l = 0;
+    l = (l << 16) + 0x0123;
+    l = (l << 16) + 0x4567;
+    l = (l << 16) + 0x89ab;
+    l = (l << 16) + 0xcdef;
+    sprintf (buf, "0x%016llx", l);
+    return (strcmp ("0x0123456789abcdef", buf));
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gdb_cv_printf_has_long_long=yes
+else
+  gdb_cv_printf_has_long_long=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: $gdb_cv_printf_has_long_long" >&5
+$as_echo "$gdb_cv_printf_has_long_long" >&6; }
+  if test "$gdb_cv_printf_has_long_long" = yes; then
+
+$as_echo "#define PRINTF_HAS_LONG_LONG 1" >>confdefs.h
+
+  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 for xxhash
+
+# Check whether --with-xxhash was given.
+if test "${with_xxhash+set}" = set; then :
+  withval=$with_xxhash;
+else
+  with_xxhash=auto
+fi
+
+
+  if test "x$with_xxhash" != "xno"; then
+
+
+
+
+
+
+
+
+    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-libxxhash-prefix was given.
+if test "${with_libxxhash_prefix+set}" = set; then :
+  withval=$with_libxxhash_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-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=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='xxhash '
+  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" || LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }$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 $LTLIBXXHASH; 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
+                        LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }-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
+                                LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$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
+                                                      LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$found_so"
+                else
+                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                                                            LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$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 $LIBXXHASH; 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
+                      LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-L$found_dir"
+                    fi
+                    if test "$hardcode_minus_L" != no; then
+                                                                                        LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$found_a"
+              else
+                                                LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-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 $INCXXHASH; 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
+                                            INCXXHASH="${INCXXHASH}${INCXXHASH:+ }-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 $LIBXXHASH; 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
+                                                        LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBXXHASH; 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
+                                                        LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }-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$,,'`
+                    ;;
+                  *)
+                                        LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$dep"
+                    LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            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
+    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"
+      LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$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"
+        LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }-R$found_dir"
+    done
+  fi
+
+
+        ac_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCXXHASH; 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 libxxhash" >&5
+$as_echo_n "checking for libxxhash... " >&6; }
+if ${ac_cv_libxxhash+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    ac_save_LIBS="$LIBS"
+    LIBS="$LIBS $LIBXXHASH"
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <xxhash.h>
+int
+main ()
+{
+XXH32("foo", 3, 0);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_libxxhash=yes
+else
+  ac_cv_libxxhash=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_libxxhash" >&5
+$as_echo "$ac_cv_libxxhash" >&6; }
+  if test "$ac_cv_libxxhash" = yes; then
+    HAVE_LIBXXHASH=yes
+
+$as_echo "#define HAVE_LIBXXHASH 1" >>confdefs.h
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libxxhash" >&5
+$as_echo_n "checking how to link with libxxhash... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBXXHASH" >&5
+$as_echo "$LIBXXHASH" >&6; }
+  else
+    HAVE_LIBXXHASH=no
+            CPPFLAGS="$ac_save_CPPFLAGS"
+    LIBXXHASH=
+    LTLIBXXHASH=
+  fi
+
+
+
+
+
+
+    if test "$HAVE_LIBXXHASH" != yes; then
+      if test "$with_xxhash" = yes; then
+	as_fn_error $? "xxhash is missing or unusable" "$LINENO" 5
+      fi
+    fi
+    if test "x$with_xxhash" = "xauto"; then
+      with_xxhash="$HAVE_LIBXXHASH"
+    fi
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use xxhash" >&5
+$as_echo_n "checking whether to use xxhash... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_xxhash" >&5
+$as_echo "$with_xxhash" >&6; }
+
+
+# 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"
+
+
+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
+
+
+# Since the first call to PKG_CHECK_MODULES may not happen (is guarded by
+# a condition), we must call PKG_PROG_PKG_CONFIG explicitly to probe for
+# pkg-config.
+
+
+
+
+
+
+
+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
+
+
+CONFIG_OBS=
+CONFIG_DEPS=
+CONFIG_SRCS=
+ENABLE_CFLAGS=
+
+CONFIG_ALL=
+CONFIG_CLEAN=
+CONFIG_INSTALL=
+CONFIG_UNINSTALL=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; }
+set x ${MAKE-make}
+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  SET_MAKE=
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+# 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'
+
+
+        MKINSTALLDIRS=
+  if test -n "$ac_aux_dir"; then
+    case "$ac_aux_dir" in
+      /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
+      *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
+    esac
+  fi
+  if test -z "$MKINSTALLDIRS"; then
+    MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+  fi
+
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
+$as_echo_n "checking whether NLS is requested... " >&6; }
+    # Check whether --enable-nls was given.
+if test "${enable_nls+set}" = set; then :
+  enableval=$enable_nls; USE_NLS=$enableval
+else
+  USE_NLS=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+
+
+
+
+
+
+# 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
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgfmt", so it can be a program name with args.
+set dummy msgfmt; 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_MSGFMT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$MSGFMT" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
+     (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+            ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":"
+    ;;
+esac
+fi
+MSGFMT="$ac_cv_path_MSGFMT"
+if test "$MSGFMT" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5
+$as_echo "$MSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; 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_GMSGFMT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $GMSGFMT in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_GMSGFMT="$GMSGFMT" # 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_GMSGFMT="$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
+
+  test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT"
+  ;;
+esac
+fi
+GMSGFMT=$ac_cv_path_GMSGFMT
+if test -n "$GMSGFMT"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5
+$as_echo "$GMSGFMT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+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
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "xgettext", so it can be a program name with args.
+set dummy xgettext; 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_XGETTEXT+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$XGETTEXT" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
+     (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+            ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":"
+    ;;
+esac
+fi
+XGETTEXT="$ac_cv_path_XGETTEXT"
+if test "$XGETTEXT" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5
+$as_echo "$XGETTEXT" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+    rm -f messages.po
+
+
+# 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
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+  ac_executable_p="test -x"
+else
+  ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "msgmerge", so it can be a program name with args.
+set dummy msgmerge; 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_MSGMERGE+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case "$MSGMERGE" in
+  [\\/]* | ?:[\\/]*)
+    ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path.
+    ;;
+  *)
+    ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH; do
+      IFS="$ac_save_IFS"
+      test -z "$ac_dir" && ac_dir=.
+      for ac_exec_ext in '' $ac_executable_extensions; do
+        if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+          if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then
+            ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
+            break 2
+          fi
+        fi
+      done
+    done
+    IFS="$ac_save_IFS"
+  test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":"
+    ;;
+esac
+fi
+MSGMERGE="$ac_cv_path_MSGMERGE"
+if test "$MSGMERGE" != ":"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5
+$as_echo "$MSGMERGE" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+      if test "$GMSGFMT" != ":"; then
+            if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
+       (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+      : ;
+    else
+      GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
+$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; }
+      GMSGFMT=":"
+    fi
+  fi
+
+      if test "$XGETTEXT" != ":"; then
+            if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
+       (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
+      : ;
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
+$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
+      XGETTEXT=":"
+    fi
+        rm -f messages.po
+  fi
+
+  ac_config_commands="$ac_config_commands default-1"
+
+
+
+
+
+
+
+
+    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-libiconv-prefix was given.
+if test "${with_libiconv_prefix+set}" = set; then :
+  withval=$with_libiconv_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-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=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='iconv '
+  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" || LIBICONV="${LIBICONV}${LIBICONV:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }$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 $LTLIBICONV; 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
+                        LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-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
+                                LIBICONV="${LIBICONV}${LIBICONV:+ }$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
+                                                      LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                else
+                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                                                            LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
+                                                            haveit=
+                    for x in $rpathdirs; do
                       if test "X$x" = "X$found_dir"; then
                         haveit=yes
                         break
@@ -8570,8 +23357,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
@@ -8608,49 +23400,232 @@ fi
 
 
 
+if test -f ../gettext/uninstalled-config.sh; then
+  relative_builddir='$(top_builddir)/../gettext'
+  .  ../gettext/uninstalled-config.sh
+else
+  # The sister gettext directory doesn't exist and won't collect information on
+  # using gettext for us.  Call a bundled AM_GNU_GETTEXT.
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
-$as_echo_n "checking for iconv... " >&6; }
-if ${am_cv_func_iconv+:} false; then :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+  gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
 
-    am_cv_func_iconv="no, consider installing GNU libiconv"
-    am_cv_lib_iconv=no
-                    am_save_CPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS $INCICONV"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+  fi
+                    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; }
+if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_LIBS="$LIBS"
+     LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <stdlib.h>
-#include <iconv.h>
+#include <CoreFoundation/CFLocale.h>
 int
 main ()
 {
-iconv_t cd = iconv_open("","");
-       iconv(cd,NULL,NULL,NULL,NULL);
-       iconv_close(cd);
+CFLocaleCopyPreferredLanguages();
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  am_cv_func_iconv=yes
+  gt_cv_func_CFLocaleCopyPreferredLanguages=yes
+else
+  gt_cv_func_CFLocaleCopyPreferredLanguages=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-    CPPFLAGS="$am_save_CPPFLAGS"
+     LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
+  if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
 
-    if test "$am_cv_func_iconv" != yes && test -d ../libiconv; then
-      for _libs in .libs _libs; do
-        am_save_CPPFLAGS="$CPPFLAGS"
-        am_save_LIBS="$LIBS"
-        CPPFLAGS="$CPPFLAGS -I../libiconv/include"
-        LIBS="$LIBS ../libiconv/lib/$_libs/libiconv.a"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
+
+  fi
+  INTL_MACOSX_LIBS=
+  if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+     || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+                    INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices"
+  fi
+
+
+
+
+
+
+  LIBINTL=
+  LTLIBINTL=
+  POSUB=
+
+    case " $gt_needs " in
+    *" need-formatstring-macros "*) gt_api_version=3 ;;
+    *" need-ngettext "*) gt_api_version=2 ;;
+    *) gt_api_version=1 ;;
+  esac
+  gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+  gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+    if test "$USE_NLS" = "yes"; then
+    gt_use_preinstalled_gnugettext=no
+
+
+        if test $gt_api_version -ge 3; then
+          gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+        else
+          gt_revision_test_code=
+        fi
+        if test $gt_api_version -ge 2; then
+          gt_expression_test_code=' + * ngettext ("", "", 0)'
+        else
+          gt_expression_test_code=
+        fi
+
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
+$as_echo_n "checking for GNU gettext in libc... " >&6; }
+if eval \${$gt_func_gnugettext_libc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+
+int
+main ()
+{
+
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$gt_func_gnugettext_libc=yes"
+else
+  eval "$gt_func_gnugettext_libc=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+fi
+eval ac_res=\$$gt_func_gnugettext_libc
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
+
+  for element in $INCICONV; 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 iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if ${am_cv_func_iconv+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+
 #include <stdlib.h>
 #include <iconv.h>
+
 int
 main ()
 {
@@ -8662,37 +23637,25 @@ iconv_t cd = iconv_open("","");
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  INCICONV="-I../libiconv/include"
-          LIBICONV='${top_builddir}'/../libiconv/lib/$_libs/libiconv.a
-          LTLIBICONV='${top_builddir}'/../libiconv/lib/libiconv.la
-          am_cv_lib_iconv=yes
-          am_cv_func_iconv=yes
+  am_cv_func_iconv=yes
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-        CPPFLAGS="$am_save_CPPFLAGS"
-        LIBS="$am_save_LIBS"
-        if test "$am_cv_func_iconv" = "yes"; then
-          break
-        fi
-      done
-    fi
-
     if test "$am_cv_func_iconv" != yes; then
-      am_save_CPPFLAGS="$CPPFLAGS"
       am_save_LIBS="$LIBS"
-      CPPFLAGS="$CPPFLAGS $INCICONV"
       LIBS="$LIBS $LIBICONV"
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
+
 #include <stdlib.h>
 #include <iconv.h>
+
 int
 main ()
 {
 iconv_t cd = iconv_open("","");
-         iconv(cd,NULL,NULL,NULL,NULL);
-         iconv_close(cd);
+             iconv(cd,NULL,NULL,NULL,NULL);
+             iconv_close(cd);
   ;
   return 0;
 }
@@ -8703,7 +23666,6 @@ if ac_fn_c_try_link "$LINENO"; then :
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-      CPPFLAGS="$am_save_CPPFLAGS"
       LIBS="$am_save_LIBS"
     fi
 
@@ -8711,11 +23673,2862 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
 $as_echo "$am_cv_func_iconv" >&6; }
   if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      am_cv_func_iconv_works=no
+      for ac_iconv_const in '' 'const'; do
+        if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+             aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+             *)            am_cv_func_iconv_works="guessing yes" ;;
+           esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+
+int
+main ()
+{
+int result = 0;
+  /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from
+     successful returns.  This is even documented in
+     <https://www.ibm.com/support/knowledgecenter/ssw_aix_72/i_bostechref/iconv.html> */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 1;
+        iconv_close (cd_utf8_to_88591);
+      }
+  }
+  /* Test against Solaris 10 bug: Failures are not distinguishable from
+     successful returns.  */
+  {
+    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+    if (cd_ascii_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\263";
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_ascii_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 2;
+        iconv_close (cd_ascii_to_88591);
+      }
+  }
+  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304";
+        static char buf[2] = { (char)0xDE, (char)0xAD };
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = 1;
+        char *outptr = buf;
+        size_t outbytesleft = 1;
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+          result |= 4;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          result |= 8;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  {
+    /* Try standardized names.  */
+    iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+    /* Try IRIX, OSF/1 names.  */
+    iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+    /* Try AIX names.  */
+    iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+    /* Try HP-UX names.  */
+    iconv_t cd4 = iconv_open ("utf8", "eucJP");
+    if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+        && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+      result |= 16;
+    if (cd1 != (iconv_t)(-1))
+      iconv_close (cd1);
+    if (cd2 != (iconv_t)(-1))
+      iconv_close (cd2);
+    if (cd3 != (iconv_t)(-1))
+      iconv_close (cd3);
+    if (cd4 != (iconv_t)(-1))
+      iconv_close (cd4);
+  }
+  return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  am_cv_func_iconv_works=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+        test "$am_cv_func_iconv_works" = no || break
+      done
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
 
 $as_echo "#define HAVE_ICONV 1" >>confdefs.h
 
   fi
   if test "$am_cv_lib_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
+$as_echo_n "checking how to link with libiconv... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
+$as_echo "$LIBICONV" >&6; }
+  else
+            CPPFLAGS="$am_save_CPPFLAGS"
+    LIBICONV=
+    LTLIBICONV=
+  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-libintl-prefix was given.
+if test "${with_libintl_prefix+set}" = set; then :
+  withval=$with_libintl_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-libintl-type was given.
+if test "${with_libintl_type+set}" = set; then :
+  withval=$with_libintl_type;  with_libintl_type=$withval
+else
+   with_libintl_type=auto
+fi
+
+  lib_type=`eval echo \$with_libintl_type`
+
+      LIBINTL=
+  LTLIBINTL=
+  INCINTL=
+  rpathdirs=
+  ltrpathdirs=
+  names_already_handled=
+  names_next_round='intl '
+  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" || LIBINTL="${LIBINTL}${LIBINTL:+ }$value"
+            eval value=\"\$LTLIB$uppername\"
+            test -z "$value" || LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$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 $LTLIBINTL; 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
+                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-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
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$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
+                                                      LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                else
+                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+                                                            LIBINTL="${LIBINTL}${LIBINTL:+ }$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 $LIBINTL; 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
+                      LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
+                    fi
+                    if test "$hardcode_minus_L" != no; then
+                                                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
+                    else
+                                                                                                                                                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+                    fi
+                  fi
+                fi
+              fi
+            else
+              if test "X$found_a" != "X"; then
+                                LIBINTL="${LIBINTL}${LIBINTL:+ }$found_a"
+              else
+                                                LIBINTL="${LIBINTL}${LIBINTL:+ }-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 $INCINTL; 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
+                                            INCINTL="${INCINTL}${INCINTL:+ }-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 $LIBINTL; 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
+                                                        LIBINTL="${LIBINTL}${LIBINTL:+ }-L$additional_libdir"
+                          fi
+                        fi
+                        haveit=
+                        for x in $LDFLAGS $LTLIBINTL; 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
+                                                        LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-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$,,'`
+                    ;;
+                  *)
+                                        LIBINTL="${LIBINTL}${LIBINTL:+ }$dep"
+                    LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }$dep"
+                    ;;
+                esac
+              done
+            fi
+          else
+                                                            if test "x$lib_type" = "xauto" || test "x$lib_type" = "xshared"; then
+              LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
+              LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-l$name"
+            else
+              LIBINTL="${LIBINTL}${LIBINTL:+ }-l:lib$name.$libext"
+              LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-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"
+      LIBINTL="${LIBINTL}${LIBINTL:+ }$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"
+        LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
+      done
+    fi
+  fi
+  if test "X$ltrpathdirs" != "X"; then
+            for found_dir in $ltrpathdirs; do
+      LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-R$found_dir"
+    done
+  fi
+
+          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
+$as_echo_n "checking for GNU gettext in libintl... " >&6; }
+if eval \${$gt_func_gnugettext_libintl+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gt_save_CPPFLAGS="$CPPFLAGS"
+            CPPFLAGS="$CPPFLAGS $INCINTL"
+            gt_save_LIBS="$LIBS"
+            LIBS="$LIBS $LIBINTL"
+                        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+
+int
+main ()
+{
+
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  eval "$gt_func_gnugettext_libintl=yes"
+else
+  eval "$gt_func_gnugettext_libintl=no"
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+                        if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+              LIBS="$LIBS $LIBICONV"
+              cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+
+int
+main ()
+{
+
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  LIBINTL="$LIBINTL $LIBICONV"
+                 LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+                 eval "$gt_func_gnugettext_libintl=yes"
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+            fi
+            CPPFLAGS="$gt_save_CPPFLAGS"
+            LIBS="$gt_save_LIBS"
+fi
+eval ac_res=\$$gt_func_gnugettext_libintl
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+        fi
+
+                                        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+           || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+                && test "$PACKAGE" != gettext-runtime \
+                && test "$PACKAGE" != gettext-tools; }; then
+          gt_use_preinstalled_gnugettext=yes
+        else
+                    LIBINTL=
+          LTLIBINTL=
+          INCINTL=
+        fi
+
+
+
+    if test -n "$INTL_MACOSX_LIBS"; then
+      if test "$gt_use_preinstalled_gnugettext" = "yes" \
+         || test "$nls_cv_use_gnu_gettext" = "yes"; then
+                LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+        LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+      fi
+    fi
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes" \
+       || test "$nls_cv_use_gnu_gettext" = "yes"; then
+
+$as_echo "#define ENABLE_NLS 1" >>confdefs.h
+
+    else
+      USE_NLS=no
+    fi
+  fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use NLS" >&5
+$as_echo_n "checking whether to use NLS... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
+$as_echo "$USE_NLS" >&6; }
+  if test "$USE_NLS" = "yes"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
+$as_echo_n "checking where the gettext function comes from... " >&6; }
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        gt_source="external libintl"
+      else
+        gt_source="libc"
+      fi
+    else
+      gt_source="included intl directory"
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_source" >&5
+$as_echo "$gt_source" >&6; }
+  fi
+
+  if test "$USE_NLS" = "yes"; then
+
+    if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+      if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
+$as_echo_n "checking how to link with libintl... " >&6; }
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
+$as_echo "$LIBINTL" >&6; }
+
+  for element in $INCINTL; 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
+
+      fi
+
+
+$as_echo "#define HAVE_GETTEXT 1" >>confdefs.h
+
+
+$as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
+
+    fi
+
+        POSUB=po
+  fi
+
+
+
+    INTLLIBS="$LIBINTL"
+
+
+
+
+
+
+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
+
+localedir='${datadir}/locale'
+
+
+if test x"$USE_NLS" = xyes; then
+   CONFIG_ALL="$CONFIG_ALL all-po"
+   CONFIG_CLEAN="$CONFIG_CLEAN clean-po"
+   CONFIG_INSTALL="$CONFIG_INSTALL install-po"
+   CONFIG_UNINSTALL="$CONFIG_UNINSTALL uninstall-po"
+fi
+
+PACKAGE=gdb
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+
+# We never need to detect it in this sub-configure.
+# But preserve it for config.status --recheck.
+
+
+
+MAKEINFO_EXTRA_FLAGS=""
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $MAKEINFO supports @click" >&5
+$as_echo_n "checking whether $MAKEINFO supports @click... " >&6; }
+if ${gdb_cv_have_makeinfo_click+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo '@clicksequence{a @click{} b}' >conftest.texinfo
+  if eval "$MAKEINFO conftest.texinfo >&5 2>&5"; then
+    gdb_cv_have_makeinfo_click=yes
+  else
+    gdb_cv_have_makeinfo_click=no
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_makeinfo_click" >&5
+$as_echo "$gdb_cv_have_makeinfo_click" >&6; }
+if test x"$gdb_cv_have_makeinfo_click" = xyes; then
+  MAKEINFO_EXTRA_FLAGS="$MAKEINFO_EXTRA_FLAGS -DHAVE_MAKEINFO_CLICK"
+fi
+
+
+
+
+# Check whether --with-separate-debug-dir was given.
+if test "${with_separate_debug_dir+set}" = set; then :
+  withval=$with_separate_debug_dir;
+    DEBUGDIR=$withval
+else
+  DEBUGDIR=${libdir}/debug
+fi
+
+
+  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+  ac_define_dir=`eval echo $DEBUGDIR`
+  ac_define_dir=`eval echo $ac_define_dir`
+
+cat >>confdefs.h <<_ACEOF
+#define DEBUGDIR "$ac_define_dir"
+_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 ${ac_define_dir} in
+     "${test_prefix}"|"${test_prefix}/"*|\
+	'${exec_prefix}'|'${exec_prefix}/'*)
+     value=1
+     ;;
+  esac
+
+cat >>confdefs.h <<_ACEOF
+#define DEBUGDIR_RELOCATABLE $value
+_ACEOF
+
+
+
+
+
+# Check whether --with-additional-debug-dirs was given.
+if test "${with_additional_debug_dirs+set}" = set; then :
+  withval=$with_additional_debug_dirs;
+cat >>confdefs.h <<_ACEOF
+#define ADDITIONAL_DEBUG_DIRS "${withval}"
+_ACEOF
+
+fi
+
+
+# We can't pass paths as command line arguments.
+# Mingw32 tries to be clever and will convert the paths for us.
+# For example -DBINDIR="/usr/local/bin" passed on the command line may get
+# converted to -DBINDIR="E:/msys/mingw32/msys/1.0/local/bin".
+# This breaks GDB's relocatable path conversions since paths passed in
+# config.h would not get so translated, the path prefixes no longer match.
+
+  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+  ac_define_dir=`eval echo $bindir`
+  ac_define_dir=`eval echo $ac_define_dir`
+
+cat >>confdefs.h <<_ACEOF
+#define BINDIR "$ac_define_dir"
+_ACEOF
+
+
+
+# GDB's datadir relocation
+
+
+
+# Check whether --with-gdb-datadir was given.
+if test "${with_gdb_datadir+set}" = set; then :
+  withval=$with_gdb_datadir;
+    GDB_DATADIR=$withval
+else
+  GDB_DATADIR=${datadir}/gdb
+fi
+
+
+  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+  ac_define_dir=`eval echo $GDB_DATADIR`
+  ac_define_dir=`eval echo $ac_define_dir`
+
+cat >>confdefs.h <<_ACEOF
+#define GDB_DATADIR "$ac_define_dir"
+_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 ${ac_define_dir} in
+     "${test_prefix}"|"${test_prefix}/"*|\
+	'${exec_prefix}'|'${exec_prefix}/'*)
+     value=1
+     ;;
+  esac
+
+cat >>confdefs.h <<_ACEOF
+#define GDB_DATADIR_RELOCATABLE $value
+_ACEOF
+
+
+
+
+
+# Check whether --with-relocated-sources was given.
+if test "${with_relocated_sources+set}" = set; then :
+  withval=$with_relocated_sources; reloc_srcdir="${withval}"
+
+  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+  ac_define_dir=`eval echo $reloc_srcdir`
+  ac_define_dir=`eval echo $ac_define_dir`
+
+cat >>confdefs.h <<_ACEOF
+#define RELOC_SRCDIR "$ac_define_dir"
+_ACEOF
+
+
+
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default auto-load directory" >&5
+$as_echo_n "checking for default auto-load directory... " >&6; }
+
+# Check whether --with-auto-load-dir was given.
+if test "${with_auto_load_dir+set}" = set; then :
+  withval=$with_auto_load_dir;
+else
+  with_auto_load_dir='$debugdir:$datadir/auto-load'
+fi
+
+escape_dir=`echo $with_auto_load_dir | sed -e 's/[$]datadir\>/\\\\\\\\\\\\&/g' -e 's/[$]debugdir\>/\\\\\\\\\\\\&/g'`
+
+  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+  ac_define_dir=`eval echo $escape_dir`
+  ac_define_dir=`eval echo $ac_define_dir`
+
+cat >>confdefs.h <<_ACEOF
+#define AUTO_LOAD_DIR "$ac_define_dir"
+_ACEOF
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_dir" >&5
+$as_echo "$with_auto_load_dir" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default auto-load safe-path" >&5
+$as_echo_n "checking for default auto-load safe-path... " >&6; }
+
+# Check whether --with-auto-load-safe-path was given.
+if test "${with_auto_load_safe_path+set}" = set; then :
+  withval=$with_auto_load_safe_path; if test "$with_auto_load_safe_path" = "no"; then
+     with_auto_load_safe_path="/"
+     fi
+else
+  with_auto_load_safe_path="$with_auto_load_dir"
+fi
+
+escape_dir=`echo $with_auto_load_safe_path | sed -e 's/[$]datadir\>/\\\\\\\\\\\\&/g' -e 's/[$]debugdir\>/\\\\\\\\\\\\&/g'`
+
+  test "x$prefix" = xNONE && prefix="$ac_default_prefix"
+  test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+  ac_define_dir=`eval echo $escape_dir`
+  ac_define_dir=`eval echo $ac_define_dir`
+
+cat >>confdefs.h <<_ACEOF
+#define AUTO_LOAD_SAFE_PATH "$ac_define_dir"
+_ACEOF
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_auto_load_safe_path" >&5
+$as_echo "$with_auto_load_safe_path" >&6; }
+
+
+
+subdirs="$subdirs testsuite"
+
+
+# Check whether to support alternative target configurations
+# Check whether --enable-targets was given.
+if test "${enable_targets+set}" = set; then :
+  enableval=$enable_targets; case "${enableval}" in
+  yes | "") as_fn_error $? "enable-targets option must specify target names or 'all'" "$LINENO" 5
+            ;;
+  no)       enable_targets= ;;
+  *)
+	enable_targets=$enableval
+
+cat >>confdefs.h <<_ACEOF
+#define ENABLE_TARGETS "$enable_targets"
+_ACEOF
+
+	;;
+esac
+fi
+
+
+# Check whether --enable-binary_file_formats was given.
+if test "${enable_binary_file_formats+set}" = set; then :
+  enableval=$enable_binary_file_formats; case "${enableval}" in
+ yes | "") as_fn_error $? "enable-binary-file-formats option must specify file formats or 'all'" "$LINENO" 5
+            ;;
+  no)       enable_binary_file_formats= ;;
+  *)        enable_binary_file_formats=$enableval ;;
+esac
+else
+  enable_binary_file_formats=all
+fi
+
+
+# Check whether to support mdebug/ecoff debug information.
+# Check whether --enable-gdb-mdebug-support was given.
+if test "${enable_gdb_mdebug_support+set}" = set; then :
+  enableval=$enable_gdb_mdebug_support;
+	   case $enableval in
+	     yes | no)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $enableval for --enable-gdb-mdebug-support" "$LINENO" 5
+	       ;;
+	   esac
+
+else
+  enable_gdb_mdebug_support=yes
+fi
+
+
+if test "x${enable_gdb_mdebug_support}" != "xno"; then
+    CONFIG_SRCS="$CONFIG_SRCS mdebugread.c"
+    CONFIG_OBS="$CONFIG_OBS mdebugread.o"
+
+$as_echo "#define MDEBUG_FORMAT_AVAILABLE 1" >>confdefs.h
+
+fi
+
+# Check whether to support dwarf debug information
+# Check whether --enable-gdb-dwarf-support was given.
+if test "${enable_gdb_dwarf_support+set}" = set; then :
+  enableval=$enable_gdb_dwarf_support;
+	   case $enableval in
+	     yes | no)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $enableval for --enable-gdb-dwarf-support" "$LINENO" 5
+	       ;;
+	   esac
+
+else
+  enable_gdb_dwarf_support=yes
+fi
+
+
+if test "x${enable_gdb_dwarf_support}" != "xno"; then
+
+$as_echo "#define DWARF_FORMAT_AVAILABLE 1" >>confdefs.h
+
+    CONFIG_SRCS="$CONFIG_SRCS \$(DWARF2_SRCS)"
+    CONFIG_OBS="$CONFIG_OBS \$(DWARF2_OBS)"
+fi
+
+# See whether 64-bit bfd lib has been enabled.
+OLD_CPPFLAGS=$CPPFLAGS
+# Put the old CPPFLAGS last, in case the user's CPPFLAGS point somewhere
+# with bfd, with -I/foo/include.  We always want our bfd.
+CPPFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CPPFLAGS"
+# Note we cannot cache the result of this check because BFD64 may change
+# when a secondary target has been added or removed and we have no access
+# to this information here.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether BFD is 64-bit" >&5
+$as_echo_n "checking whether BFD is 64-bit... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include "bfd.h"
+int
+main ()
+{
+#ifdef BFD64
+HAVE_BFD64
+#endif
+  ;
+  return 0;
+}
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "HAVE_BFD64" >/dev/null 2>&1; then :
+  have_64_bit_bfd=yes
+else
+  have_64_bit_bfd=no
+fi
+rm -f conftest*
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_64_bit_bfd" >&5
+$as_echo "$have_64_bit_bfd" >&6; }
+CPPFLAGS=$OLD_CPPFLAGS
+
+# Provide defaults for some variables set by the per-host and per-target
+# configuration.
+gdb_host_obs=posix-hdep.o
+
+if test "${target}" = "${host}"; then
+  gdb_native=yes
+else
+  gdb_native=no
+fi
+
+. $srcdir/configure.host
+
+# Accumulate some settings from configure.tgt over all enabled targets
+
+TARGET_OBS=
+all_targets=
+HAVE_NATIVE_GCORE_TARGET=
+
+# File formats that will be enabled based on the selected
+# target(s).  These are chosen because they are required to
+# compile one or more of the selected targets.
+target_formats=
+
+# If all targets were requested, this is all formats that should
+# accompany them.  These are just the ones required for compilation
+# to succeed, not the formats suggested based on targets.
+all_target_formats="coff xcoff"
+
+for targ_alias in `echo $target_alias $enable_targets | sed 's/,/ /g'`
+do
+  if test "$targ_alias" = "all"; then
+    all_targets=true
+    target_formats=$all_target_formats
+  else
+    # Canonicalize the secondary target names.
+    result=`$ac_config_sub $targ_alias 2>/dev/null`
+    if test -n "$result"; then
+        targ=$result
+    else
+        targ=$targ_alias
+    fi
+
+    . ${srcdir}/configure.tgt
+
+    if test -z "${gdb_target_obs}"; then :
+  as_fn_error $? "configuration ${targ} is unsupported." "$LINENO" 5
+fi
+
+    # Target-specific object files
+    for i in ${gdb_target_obs}; do
+        case " $TARGET_OBS " in
+        *" ${i} "*) ;;
+        *)
+          TARGET_OBS="$TARGET_OBS ${i}"
+          ;;
+        esac
+    done
+
+    # Check whether this target needs 64-bit CORE_ADDR
+    if test x${have_64_bit_bfd} = xno; then
+      . ${srcdir}/../bfd/config.bfd
+    fi
+
+    # Check whether this target is native and supports gcore.
+    if test $gdb_native = yes -a "$targ_alias" = "$target_alias" \
+       && $gdb_have_gcore; then
+      HAVE_NATIVE_GCORE_TARGET=1
+    fi
+  fi
+done
+
+if test x${all_targets} = xtrue; then
+  if test x${have_64_bit_bfd} = xyes; then
+    TARGET_OBS='$(ALL_TARGET_OBS) $(ALL_64_TARGET_OBS)'
+  else
+    TARGET_OBS='$(ALL_TARGET_OBS)'
+  fi
+fi
+
+HAVE_GSTACK=0
+if test $gdb_native = yes; then
+   HAVE_GSTACK=1
+fi
+
+
+# AMD debugger API support.
+
+
+# Check whether --with-amd-dbgapi was given.
+if test "${with_amd_dbgapi+set}" = set; then :
+  withval=$with_amd_dbgapi;
+	   case $withval in
+	     yes | no | auto)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $withval for --with-amd-dbgapi" "$LINENO" 5
+	       ;;
+	   esac
+
+else
+  with_amd_dbgapi=auto
+fi
+
+
+# If the user passes --without-amd-dbgapi but also explicitly enables a target
+# that requires amd-dbgapi, it is an error.
+if test "$with_amd_dbgapi" = no -a "$gdb_require_amd_dbgapi" = true; then
+  as_fn_error $? "an explicitly enabled target requires amd-dbgapi, but amd-dbgapi is explicitly disabled" "$LINENO" 5
+fi
+
+# Look for amd-dbgapi if:
+#
+#   - a target architecture requiring it has explicitly been enabled, or
+#   - --enable-targets=all was provided and the user did not explicitly disable
+#     amd-dbgapi support
+if test "$gdb_require_amd_dbgapi" = true \
+     -o \( "$all_targets" = true -a "$with_amd_dbgapi" != no \); then
+  # amd-dbgapi version 0.68 is part of ROCm 5.4.  There is no guarantee of API
+  # stability until amd-dbgapi hits 1.0, but for convenience, still check for
+  # greater or equal that version.  It can be handy when testing with a newer
+  # version of the library.
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for amd-dbgapi >= 0.75.0" >&5
+$as_echo_n "checking for amd-dbgapi >= 0.75.0... " >&6; }
+
+if test -n "$AMD_DBGAPI_CFLAGS"; then
+    pkg_cv_AMD_DBGAPI_CFLAGS="$AMD_DBGAPI_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"amd-dbgapi >= 0.75.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "amd-dbgapi >= 0.75.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_AMD_DBGAPI_CFLAGS=`$PKG_CONFIG --cflags "amd-dbgapi >= 0.75.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$AMD_DBGAPI_LIBS"; then
+    pkg_cv_AMD_DBGAPI_LIBS="$AMD_DBGAPI_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"amd-dbgapi >= 0.75.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "amd-dbgapi >= 0.75.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_AMD_DBGAPI_LIBS=`$PKG_CONFIG --libs "amd-dbgapi >= 0.75.0" 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_AMD_DBGAPI_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
+	        AMD_DBGAPI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "amd-dbgapi >= 0.75.0" 2>&1`
+        else
+	        AMD_DBGAPI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "amd-dbgapi >= 0.75.0" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$AMD_DBGAPI_PKG_ERRORS" >&5
+
+	has_amd_dbgapi=no
+elif test $pkg_failed = untried; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	has_amd_dbgapi=no
+else
+	AMD_DBGAPI_CFLAGS=$pkg_cv_AMD_DBGAPI_CFLAGS
+	AMD_DBGAPI_LIBS=$pkg_cv_AMD_DBGAPI_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+	has_amd_dbgapi=yes
+fi
+
+  if test "$has_amd_dbgapi" = "yes"; then
+
+$as_echo "#define HAVE_AMD_DBGAPI 1" >>confdefs.h
+
+    TARGET_OBS="$TARGET_OBS amd-dbgapi-target.o"
+
+    # If --enable-targets=all was provided, use the list of all files depending
+    # on amd-dbgapi that is hardcoded in the Makefile.  Else, the appropriate
+    # architecture entry in configure.tgt will have added the files to
+    # gdb_target_obs.
+    if test "$all_targets" = true; then
+      TARGET_OBS="$TARGET_OBS \$(ALL_AMD_DBGAPI_TARGET_OBS)"
+    fi
+  elif test "$gdb_require_amd_dbgapi" = true -o "$with_amd_dbgapi" = yes; then
+    # amd-dbgapi was not found and...
+    #
+    #   - a target requiring it was explicitly enabled, or
+    #   - the user explicitly wants to enable amd-dbgapi
+    as_fn_error $? "amd-dbgapi is required, but cannot find an appropriate version: $AMD_DBGAPI_PKG_ERRORS" "$LINENO" 5
+  fi
+fi
+
+
+
+
+# For other settings, only the main target counts.
+gdb_sim=
+gdb_osabi=
+targ=$target; . ${srcdir}/configure.tgt
+
+# Fetch the default architecture and default target vector from BFD.
+targ=$target; . $srcdir/../bfd/config.bfd
+
+# We only want the first architecture, so strip off the others if
+# there is more than one.
+targ_archs=`echo $targ_archs | sed 's/ .*//'`
+
+if test "x$targ_archs" != x; then
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_BFD_ARCH $targ_archs
+_ACEOF
+
+fi
+if test "x$targ_defvec" != x; then
+
+cat >>confdefs.h <<_ACEOF
+#define DEFAULT_BFD_VEC $targ_defvec
+_ACEOF
+
+fi
+
+# Enable TUI.
+# Check whether --enable-tui was given.
+if test "${enable_tui+set}" = set; then :
+  enableval=$enable_tui;
+	   case $enableval in
+	     yes | no | auto)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $enableval for --enable-tui" "$LINENO" 5
+	       ;;
+	   esac
+
+else
+  enable_tui=auto
+fi
+
+
+# Enable gdbtk.
+# Check whether --enable-gdbtk was given.
+if test "${enable_gdbtk+set}" = set; then :
+  enableval=$enable_gdbtk;
+	   case $enableval in
+	     yes | no)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $enableval for --enable-gdbtk" "$LINENO" 5
+	       ;;
+	   esac
+
+else
+  if test -d "$srcdir/gdbtk"; then
+		 enable_gdbtk=yes
+	       else
+		 enable_gdbtk=no
+	       fi
+fi
+
+# We unconditionally disable gdbtk tests on selected platforms.
+case $host_os in
+  go32* | windows*)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: gdbtk isn't supported on $host; disabling" >&5
+$as_echo "$as_me: WARNING: gdbtk isn't supported on $host; disabling" >&2;}
+    enable_gdbtk=no ;;
+esac
+
+# Handle optional debuginfod support
+
+# Handle optional debuginfod support as well as optional section
+# downloading support.
+#
+# Define HAVE_LIBDEBUGINFOD if libdebuginfod is found with version >= 0.179.
+#
+# Define HAVE_LIBDEBUGINFOD_FIND_SECTION if libdebuginfod is found with
+# version >= 0.188.
+
+# 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.188" >&5
+$as_echo_n "checking for libdebuginfod >= 0.188... " >&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.188\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdebuginfod >= 0.188") 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.188" 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.188\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libdebuginfod >= 0.188") 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.188" 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.188" 2>&1`
+        else
+	        DEBUGINFOD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libdebuginfod >= 0.188" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$DEBUGINFOD_PKG_ERRORS" >&5
+
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libdebuginfod is missing or some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: libdebuginfod is missing or some features may be unavailable." >&2;}
+elif test $pkg_failed = untried; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libdebuginfod is missing or some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: libdebuginfod is missing or some features may be unavailable." >&2;}
+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_FIND_SECTION 1" >>confdefs.h
+
+fi
+
+
+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;
+else
+  with_libunwind_ia64=auto
+fi
+
+
+# Backward compatibility option.
+if test "${with_libunwind+set}" = set; then
+  if test x"$with_libunwind_ia64" != xauto; then
+    as_fn_error $? "option --with-libunwind is deprecated, use --with-libunwind-ia64" "$LINENO" 5
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: option --with-libunwind is deprecated, use --with-libunwind-ia64" >&5
+$as_echo "$as_me: WARNING: option --with-libunwind is deprecated, use --with-libunwind-ia64" >&2;}
+  with_libunwind_ia64="$with_libunwind"
+fi
+
+case "$with_libunwind_ia64" in
+  yes | no)
+    ;;
+  auto)
+    for ac_header in libunwind-ia64.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "libunwind-ia64.h" "ac_cv_header_libunwind_ia64_h" "$ac_includes_default"
+if test "x$ac_cv_header_libunwind_ia64_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBUNWIND_IA64_H 1
+_ACEOF
+
+fi
+
+done
+
+    with_libunwind_ia64=$ac_cv_header_libunwind_ia64_h
+    ;;
+  *)
+    as_fn_error $? "bad value $with_libunwind_ia64 for GDB --with-libunwind-ia64 option" "$LINENO" 5
+    ;;
+esac
+
+if test x"$with_libunwind_ia64" = xyes; then
+  for ac_header in libunwind-ia64.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "libunwind-ia64.h" "ac_cv_header_libunwind_ia64_h" "$ac_includes_default"
+if test "x$ac_cv_header_libunwind_ia64_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBUNWIND_IA64_H 1
+_ACEOF
+
+fi
+
+done
+
+  if test x"$ac_cv_header_libunwind_ia64_h" != xyes; then
+    as_fn_error $? "GDB option --with-libunwind-ia64 requires libunwind-ia64.h" "$LINENO" 5
+  fi
+  CONFIG_OBS="$CONFIG_OBS ia64-libunwind-tdep.o"
+  CONFIG_DEPS="$CONFIG_DEPS ia64-libunwind-tdep.o"
+  CONFIG_SRCS="$CONFIG_SRCS ia64-libunwind-tdep.c"
+fi
+
+opt_curses=no
+
+# Check whether --with-curses was given.
+if test "${with_curses+set}" = set; then :
+  withval=$with_curses; opt_curses=$withval
+fi
+
+
+prefer_curses=no
+if test "$opt_curses" = "yes"; then
+  prefer_curses=yes
+fi
+
+# Profiling support.
+# Check whether --enable-profiling was given.
+if test "${enable_profiling+set}" = set; then :
+  enableval=$enable_profiling;
+	   case $enableval in
+	     yes | no)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $enableval for --enable-profiling" "$LINENO" 5
+	       ;;
+	   esac
+
+else
+  enable_profiling=no
+fi
+
+
+for ac_func in monstartup _mcleanup
+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 _etext" >&5
+$as_echo_n "checking for _etext... " >&6; }
+if ${ac_cv_var__etext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+	 extern char _etext;
+int
+main ()
+{
+free (&_etext);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_var__etext=yes
+else
+  ac_cv_var__etext=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_var__etext" >&5
+$as_echo "$ac_cv_var__etext" >&6; }
+if test "$ac_cv_var__etext" = yes; then
+
+$as_echo "#define HAVE__ETEXT 1" >>confdefs.h
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for etext" >&5
+$as_echo_n "checking for etext... " >&6; }
+if ${ac_cv_var_etext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+	 extern char etext;
+int
+main ()
+{
+free (&etext);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_var_etext=yes
+else
+  ac_cv_var_etext=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_var_etext" >&5
+$as_echo "$ac_cv_var_etext" >&6; }
+if test "$ac_cv_var_etext" = yes; then
+
+$as_echo "#define HAVE_ETEXT 1" >>confdefs.h
+
+fi
+if test "$enable_profiling" = yes ; then
+  if test "$ac_cv_func_monstartup" = no || test "$ac_cv_func__mcleanup" = no; then
+    as_fn_error $? "--enable-profiling requires monstartup and _mcleanup" "$LINENO" 5
+  fi
+  PROFILE_CFLAGS=-pg
+  OLD_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $PROFILE_CFLAGS"
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports -pg" >&5
+$as_echo_n "checking whether $CC supports -pg... " >&6; }
+if ${ac_cv_cc_supports_pg+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+int x;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_cc_supports_pg=yes
+else
+  ac_cv_cc_supports_pg=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cc_supports_pg" >&5
+$as_echo "$ac_cv_cc_supports_pg" >&6; }
+
+  if test "$ac_cv_cc_supports_pg" = no; then
+    as_fn_error $? "--enable-profiling requires a compiler which supports -pg" "$LINENO" 5
+  fi
+
+  CFLAGS="$OLD_CFLAGS"
+fi
+
+CODESIGN_CERT=
+# Check whether --enable-codesign was given.
+if test "${enable_codesign+set}" = set; then :
+  enableval=$enable_codesign; CODESIGN_CERT=$enableval
+fi
+
+
+
+
+
+# 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="https://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
+
+
+# --------------------- #
+# Checks for programs.  #
+# --------------------- #
+
+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_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_AWK="$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
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; 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, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
+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
+
+for ac_prog in 'bison -y' byacc
+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_YACC+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$YACC"; then
+  ac_cv_prog_YACC="$YACC" # 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_YACC="$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
+YACC=$ac_cv_prog_YACC
+if test -n "$YACC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+$as_echo "$YACC" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+  test -n "$YACC" && break
+done
+test -n "$YACC" || YACC="yacc"
+
+
+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}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; 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_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # 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_DLLTOOL="${ac_tool_prefix}dlltool"
+    $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
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; 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_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # 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_DLLTOOL="dlltool"
+    $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_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL=""
+  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
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
+set dummy ${ac_tool_prefix}windres; 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_WINDRES+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$WINDRES"; then
+  ac_cv_prog_WINDRES="$WINDRES" # 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_WINDRES="${ac_tool_prefix}windres"
+    $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
+WINDRES=$ac_cv_prog_WINDRES
+if test -n "$WINDRES"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
+$as_echo "$WINDRES" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_WINDRES"; then
+  ac_ct_WINDRES=$WINDRES
+  # Extract the first word of "windres", so it can be a program name with args.
+set dummy windres; 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_WINDRES+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_WINDRES"; then
+  ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # 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_WINDRES="windres"
+    $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_WINDRES=$ac_cv_prog_ac_ct_WINDRES
+if test -n "$ac_ct_WINDRES"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
+$as_echo "$ac_ct_WINDRES" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_WINDRES" = x; then
+    WINDRES=""
+  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
+    WINDRES=$ac_ct_WINDRES
+  fi
+else
+  WINDRES="$ac_cv_prog_WINDRES"
+fi
+
+
+case $host_os in
+  gnu*)
+    # Needed for GNU Hurd hosts.
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}mig", so it can be a program name with args.
+set dummy ${ac_tool_prefix}mig; 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_MIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$MIG"; then
+  ac_cv_prog_MIG="$MIG" # 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_MIG="${ac_tool_prefix}mig"
+    $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
+MIG=$ac_cv_prog_MIG
+if test -n "$MIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MIG" >&5
+$as_echo "$MIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_MIG"; then
+  ac_ct_MIG=$MIG
+  # Extract the first word of "mig", so it can be a program name with args.
+set dummy mig; 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_MIG+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_MIG"; then
+  ac_cv_prog_ac_ct_MIG="$ac_ct_MIG" # 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_MIG="mig"
+    $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_MIG=$ac_cv_prog_ac_ct_MIG
+if test -n "$ac_ct_MIG"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MIG" >&5
+$as_echo "$ac_ct_MIG" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_MIG" = x; then
+    MIG=""
+  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
+    MIG=$ac_ct_MIG
+  fi
+else
+  MIG="$ac_cv_prog_MIG"
+fi
+
+    if test x"$MIG" = x; then
+      as_fn_error $? "MIG not found but required for $host hosts" "$LINENO" 5
+    fi
+    ;;
+esac
+
+# ---------------------- #
+# Checks for libraries.  #
+# ---------------------- #
+
+# We might need to link with -lm; most simulators need it.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lm" >&5
+$as_echo_n "checking for main in -lm... " >&6; }
+if ${ac_cv_lib_m_main+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_m_main=yes
+else
+  ac_cv_lib_m_main=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_m_main" >&5
+$as_echo "$ac_cv_lib_m_main" >&6; }
+if test "x$ac_cv_lib_m_main" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+  LIBS="-lm $LIBS"
+
+fi
+
+
+# Some systems (e.g. Solaris) have `gethostbyname' in libnsl.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5
+$as_echo_n "checking for library containing gethostbyname... " >&6; }
+if ${ac_cv_search_gethostbyname+:} 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 gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' nsl; 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_gethostbyname=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_gethostbyname+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_gethostbyname+:} false; then :
+
+else
+  ac_cv_search_gethostbyname=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5
+$as_echo "$ac_cv_search_gethostbyname" >&6; }
+ac_res=$ac_cv_search_gethostbyname
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+
+# Link in zlib/zstd if we can.  This allows us to read compressed debug
+# sections.
+
+  # Use the system's zlib library.
+  zlibdir="-L\$(top_builddir)/../zlib"
+  zlibinc="-I\$(top_srcdir)/../zlib"
+
+# Check whether --with-system-zlib was given.
+if test "${with_system_zlib+set}" = set; then :
+  withval=$with_system_zlib; if test x$with_system_zlib = xyes ; then
+    zlibdir=
+    zlibinc=
+  fi
+
+fi
+
+
+
+
+
+
+# Check whether --with-zstd was given.
+if test "${with_zstd+set}" = set; then :
+  withval=$with_zstd;
+else
+  with_zstd=auto
+fi
+
+
+if test "$with_zstd" != no; then :
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libzstd >= 1.4.0" >&5
+$as_echo_n "checking for libzstd >= 1.4.0... " >&6; }
+
+if test -n "$ZSTD_CFLAGS"; then
+    pkg_cv_ZSTD_CFLAGS="$ZSTD_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_ZSTD_CFLAGS=`$PKG_CONFIG --cflags "libzstd >= 1.4.0" 2>/dev/null`
+		      test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$ZSTD_LIBS"; then
+    pkg_cv_ZSTD_LIBS="$ZSTD_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libzstd >= 1.4.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libzstd >= 1.4.0") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_ZSTD_LIBS=`$PKG_CONFIG --libs "libzstd >= 1.4.0" 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_ZSTD_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
+	        ZSTD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libzstd >= 1.4.0" 2>&1`
+        else
+	        ZSTD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libzstd >= 1.4.0" 2>&1`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$ZSTD_PKG_ERRORS" >&5
+
+
+    if test "$with_zstd" = yes; then
+      as_fn_error $? "--with-zstd was given, but pkgconfig/libzstd.pc is not found" "$LINENO" 5
+    fi
+
+elif test $pkg_failed = untried; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+    if test "$with_zstd" = yes; then
+      as_fn_error $? "--with-zstd was given, but pkgconfig/libzstd.pc is not found" "$LINENO" 5
+    fi
+
+else
+	ZSTD_CFLAGS=$pkg_cv_ZSTD_CFLAGS
+	ZSTD_LIBS=$pkg_cv_ZSTD_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+
+$as_echo "#define HAVE_ZSTD 1" >>confdefs.h
+
+
+fi
+
+fi
+
+
+
+
+
+
+
+          am_save_CPPFLAGS="$CPPFLAGS"
 
   for element in $INCICONV; do
     haveit=
@@ -8739,11 +26552,243 @@ fi
     fi
   done
 
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5
+$as_echo_n "checking for iconv... " >&6; }
+if ${am_cv_func_iconv+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    am_cv_func_iconv="no, consider installing GNU libiconv"
+    am_cv_lib_iconv=no
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+           iconv(cd,NULL,NULL,NULL,NULL);
+           iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+    if test "$am_cv_func_iconv" != yes; then
+      am_save_LIBS="$LIBS"
+      LIBS="$LIBS $LIBICONV"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <stdlib.h>
+#include <iconv.h>
+
+int
+main ()
+{
+iconv_t cd = iconv_open("","");
+             iconv(cd,NULL,NULL,NULL,NULL);
+             iconv_close(cd);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  am_cv_lib_iconv=yes
+        am_cv_func_iconv=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+      LIBS="$am_save_LIBS"
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
+$as_echo "$am_cv_func_iconv" >&6; }
+  if test "$am_cv_func_iconv" = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                  am_save_LIBS="$LIBS"
+      if test $am_cv_lib_iconv = yes; then
+        LIBS="$LIBS $LIBICONV"
+      fi
+      am_cv_func_iconv_works=no
+      for ac_iconv_const in '' 'const'; do
+        if test "$cross_compiling" = yes; then :
+  case "$host_os" in
+             aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+             *)            am_cv_func_iconv_works="guessing yes" ;;
+           esac
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <iconv.h>
+#include <string.h>
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+
+int
+main ()
+{
+int result = 0;
+  /* Test against AIX 5.1...7.2 bug: Failures are not distinguishable from
+     successful returns.  This is even documented in
+     <https://www.ibm.com/support/knowledgecenter/ssw_aix_72/i_bostechref/iconv.html> */
+  {
+    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+    if (cd_utf8_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_utf8_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 1;
+        iconv_close (cd_utf8_to_88591);
+      }
+  }
+  /* Test against Solaris 10 bug: Failures are not distinguishable from
+     successful returns.  */
+  {
+    iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+    if (cd_ascii_to_88591 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\263";
+        char buf[10];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_ascii_to_88591,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res == 0)
+          result |= 2;
+        iconv_close (cd_ascii_to_88591);
+      }
+  }
+  /* Test against AIX 6.1..7.1 bug: Buffer overrun.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304";
+        static char buf[2] = { (char)0xDE, (char)0xAD };
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = 1;
+        char *outptr = buf;
+        size_t outbytesleft = 1;
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+          result |= 4;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#if 0 /* This bug could be worked around by the caller.  */
+  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
+  {
+    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+    if (cd_88591_to_utf8 != (iconv_t)(-1))
+      {
+        static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+        char buf[50];
+        ICONV_CONST char *inptr = input;
+        size_t inbytesleft = strlen (input);
+        char *outptr = buf;
+        size_t outbytesleft = sizeof (buf);
+        size_t res = iconv (cd_88591_to_utf8,
+                            &inptr, &inbytesleft,
+                            &outptr, &outbytesleft);
+        if ((int)res > 0)
+          result |= 8;
+        iconv_close (cd_88591_to_utf8);
+      }
+  }
+#endif
+  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+     provided.  */
+  {
+    /* Try standardized names.  */
+    iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+    /* Try IRIX, OSF/1 names.  */
+    iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+    /* Try AIX names.  */
+    iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+    /* Try HP-UX names.  */
+    iconv_t cd4 = iconv_open ("utf8", "eucJP");
+    if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+        && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+      result |= 16;
+    if (cd1 != (iconv_t)(-1))
+      iconv_close (cd1);
+    if (cd2 != (iconv_t)(-1))
+      iconv_close (cd2);
+    if (cd3 != (iconv_t)(-1))
+      iconv_close (cd3);
+    if (cd4 != (iconv_t)(-1))
+      iconv_close (cd4);
+  }
+  return result;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  am_cv_func_iconv_works=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+        test "$am_cv_func_iconv_works" = no || break
+      done
+      LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+    case "$am_cv_func_iconv_works" in
+      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+      *)   am_func_iconv=yes ;;
+    esac
+  else
+    am_func_iconv=no am_cv_lib_iconv=no
+  fi
+  if test "$am_func_iconv" = yes; then
+
+$as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+  fi
+  if test "$am_cv_lib_iconv" = yes; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libiconv" >&5
 $as_echo_n "checking how to link with libiconv... " >&6; }
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBICONV" >&5
 $as_echo "$LIBICONV" >&6; }
   else
+            CPPFLAGS="$am_save_CPPFLAGS"
     LIBICONV=
     LTLIBICONV=
   fi
@@ -8751,13 +26796,12 @@ fi
 
 
   if test "$am_cv_func_iconv" = yes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5
-$as_echo_n "checking for iconv declaration... " >&6; }
-    if ${am_cv_proto_iconv+:} false; then :
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether iconv is compatible with its POSIX signature" >&5
+$as_echo_n "checking whether iconv is compatible with its POSIX signature... " >&6; }
+if ${gl_cv_iconv_nonconst+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 #include <stdlib.h>
@@ -8766,11 +26810,7 @@ extern
 #ifdef __cplusplus
 "C"
 #endif
-#if defined(__STDC__) || defined(__cplusplus)
 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
 
 int
 main ()
@@ -8781,24 +26821,42 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  am_cv_proto_iconv_arg1=""
+  gl_cv_iconv_nonconst=yes
 else
-  am_cv_proto_iconv_arg1="const"
+  gl_cv_iconv_nonconst=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-      am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"
-fi
 
-    am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
-         }$am_cv_proto_iconv" >&5
-$as_echo "${ac_t:-
-         }$am_cv_proto_iconv" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_iconv_nonconst" >&5
+$as_echo "$gl_cv_iconv_nonconst" >&6; }
+  else
+            gl_cv_iconv_nonconst=yes
+  fi
+  if test $gl_cv_iconv_nonconst = yes; then
+    iconv_arg1=""
+  else
+    iconv_arg1="const"
+  fi
 
 cat >>confdefs.h <<_ACEOF
-#define ICONV_CONST $am_cv_proto_iconv_arg1
+#define ICONV_CONST $iconv_arg1
 _ACEOF
 
+
+
+      if test "$am_func_iconv" = yes; then
+    if test -n "$LIBICONV"; then
+      am_cv_func_iconv_summary='yes, in libiconv'
+    else
+      am_cv_func_iconv_summary='yes, in libc'
+    fi
+  else
+    if test "$am_cv_func_iconv" = yes; then
+      am_cv_func_iconv_summary='not working, consider installing GNU libiconv'
+    else
+      am_cv_func_iconv_summary='no, consider installing GNU libiconv'
+    fi
   fi
 
 
@@ -8920,31 +26978,29 @@ fi
 ac_res=$ac_cv_search_waddstr
 if test "$ac_res" != no; then :
   test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+  curses_found=yes
 
-fi
+$as_echo "#define HAVE_LIBCURSES 1" >>confdefs.h
 
 
-  if test "$ac_cv_search_waddstr" != no; then
-    curses_found=yes
-  fi
+fi
+
 fi
 
 # Check whether we should enable the TUI, but only do so if we really
 # can.
 if test x"$enable_tui" != xno; then
-  if test -d "$srcdir/tui"; then
-    if test "$curses_found" != no; then
-      CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_TUI_OBS)"
-      CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_TUI_DEPS)"
-      CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_TUI_SRCS)"
-      ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_TUI_CFLAGS)"
+  if test "$curses_found" != no; then
+    CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_TUI_OBS)"
+    CONFIG_DEPS="$CONFIG_DEPS \$(SUBDIR_TUI_DEPS)"
+    CONFIG_SRCS="$CONFIG_SRCS \$(SUBDIR_TUI_SRCS)"
+    ENABLE_CFLAGS="$ENABLE_CFLAGS \$(SUBDIR_TUI_CFLAGS)"
+  else
+    if test x"$enable_tui" = xyes; then
+      as_fn_error $? "no enhanced curses library found; disable TUI" "$LINENO" 5
     else
-      if test x"$enable_tui" = xyes; then
-	as_fn_error $? "no enhanced curses library found; disable TUI" "$LINENO" 5
-      else
-	{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no enhanced curses library found; disabling TUI" >&5
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no enhanced curses library found; disabling TUI" >&5
 $as_echo "$as_me: WARNING: no enhanced curses library found; disabling TUI" >&2;}
-      fi
     fi
   fi
 fi
@@ -9034,7 +27090,24 @@ fi
 
 
 if test "$with_system_readline" = yes; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system readline is new enough" >&5
+  for ac_header in readline/readline.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "readline/readline.h" "ac_cv_header_readline_readline_h" "$ac_includes_default"
+if test "x$ac_cv_header_readline_readline_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_READLINE_READLINE_H 1
+_ACEOF
+ readline_h=yes
+else
+  readline_h=no
+fi
+
+done
+
+  if test "$readline_h" = "no"; then
+    as_fn_error $? "readline development packages are probably missing" "$LINENO" 5
+  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether system readline is new enough" >&5
 $as_echo_n "checking whether system readline is new enough... " >&6; }
 if ${gdb_cv_readline_ok+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -9042,13 +27115,14 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdio.h>
-#include <readline/readline.h>
+	   #include <readline/readline.h>
 int
 main ()
 {
 #if RL_VERSION_MAJOR < 7
-# error "readline version 7 required"
-#endif
+	   # error "readline version 7 required"
+	   #endif
+
   ;
   return 0;
 }
@@ -9057,8 +27131,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
   gdb_cv_readline_ok=yes
 else
   gdb_cv_readline_ok=no
+
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_readline_ok" >&5
 $as_echo "$gdb_cv_readline_ok" >&6; }
@@ -9070,17 +27146,20 @@ fi
   READLINE_DEPS=
   READLINE_CFLAGS=
   READLINE_TEXI_INCFLAG=
+  READLINE_DOC_SOURCE_INCLUDES='$(READLINE_SYSTEM_DOC_INCLUDES)'
 else
   READLINE='$(READLINE_DIR)/libreadline.a'
   READLINE_DEPS='$(READLINE)'
   READLINE_CFLAGS='-I$(READLINE_SRC)/..'
   READLINE_TEXI_INCFLAG='-I $(READLINE_DIR)'
+  READLINE_DOC_SOURCE_INCLUDES='$(READLINE_INTREE_DOC_INCLUDES)'
 fi
 
 
 
 
 
+
 # Generate jit-reader.h
 
 # This is typedeffed to GDB_CORE_ADDR in jit-reader.h
@@ -9296,536 +27375,31 @@ _ACEOF
      value=1
      ;;
   esac
-
-cat >>confdefs.h <<_ACEOF
-#define JIT_READER_DIR_RELOCATABLE $value
-_ACEOF
-
-
-
-
-
-# Check whether --with-expat was given.
-if test "${with_expat+set}" = set; then :
-  withval=$with_expat;
-else
-  with_expat=auto
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use expat" >&5
-$as_echo_n "checking whether to use expat... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_expat" >&5
-$as_echo "$with_expat" >&6; }
-
-if test "${with_expat}" = no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: expat support disabled; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: expat support disabled; some features may be unavailable." >&2;}
-  HAVE_LIBEXPAT=no
-else
-
-
-
-
-
-
-
-
-    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-libexpat-prefix was given.
-if test "${with_libexpat_prefix+set}" = set; then :
-  withval=$with_libexpat_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
-
-      LIBEXPAT=
-  LTLIBEXPAT=
-  INCEXPAT=
-  rpathdirs=
-  ltrpathdirs=
-  names_already_handled=
-  names_next_round='expat '
-  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" || LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$value"
-            eval value=\"\$LTLIB$uppername\"
-            test -z "$value" || LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }$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 $LTLIBEXPAT; 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
-                        LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-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
-                                LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$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
-                                                      LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so"
-                else
-                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-                                                            LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$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 $LIBEXPAT; 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
-                      LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-L$found_dir"
-                    fi
-                    if test "$hardcode_minus_L" != no; then
-                                                                                        LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so"
-                    else
-                                                                                                                                                                                LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-l$name"
-                    fi
-                  fi
-                fi
-              fi
-            else
-              if test "X$found_a" != "X"; then
-                                LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_a"
-              else
-                                                LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-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 $INCEXPAT; 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
-                                            INCEXPAT="${INCEXPAT}${INCEXPAT:+ }-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 $LIBEXPAT; 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
-                                                        LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-L$additional_libdir"
-                          fi
-                        fi
-                        haveit=
-                        for x in $LDFLAGS $LTLIBEXPAT; 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
-                                                        LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-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$,,'`
-                    ;;
-                  *)
-                                        LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$dep"
-                    LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }$dep"
-                    ;;
-                esac
-              done
-            fi
-          else
-                                                            LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-l$name"
-            LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-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"
-      LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$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"
-        LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$flag"
-      done
-    fi
-  fi
-  if test "X$ltrpathdirs" != "X"; then
-            for found_dir in $ltrpathdirs; do
-      LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-R$found_dir"
-    done
-  fi
-
-
-        ac_save_CPPFLAGS="$CPPFLAGS"
-
-  for element in $INCEXPAT; 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 libexpat" >&5
-$as_echo_n "checking for libexpat... " >&6; }
-if ${ac_cv_libexpat+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-    ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBEXPAT"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "expat.h"
-int
-main ()
-{
-XML_Parser p = XML_ParserCreate (0);
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_libexpat=yes
-else
-  ac_cv_libexpat=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_libexpat" >&5
-$as_echo "$ac_cv_libexpat" >&6; }
-  if test "$ac_cv_libexpat" = yes; then
-    HAVE_LIBEXPAT=yes
-
-$as_echo "#define HAVE_LIBEXPAT 1" >>confdefs.h
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libexpat" >&5
-$as_echo_n "checking how to link with libexpat... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBEXPAT" >&5
-$as_echo "$LIBEXPAT" >&6; }
-  else
-    HAVE_LIBEXPAT=no
-            CPPFLAGS="$ac_save_CPPFLAGS"
-    LIBEXPAT=
-    LTLIBEXPAT=
-  fi
-
-
-
-
-
-
-  if test "$HAVE_LIBEXPAT" != yes; then
-    if test "$with_expat" = yes; then
-      as_fn_error $? "expat is missing or unusable" "$LINENO" 5
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: expat is missing or unusable; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: expat is missing or unusable; some features may be unavailable." >&2;}
-    fi
-  else
-    save_LIBS=$LIBS
-    LIBS="$LIBS $LIBEXPAT"
-    for ac_func in XML_StopParser
-do :
-  ac_fn_c_check_func "$LINENO" "XML_StopParser" "ac_cv_func_XML_StopParser"
-if test "x$ac_cv_func_XML_StopParser" = xyes; then :
-  cat >>confdefs.h <<_ACEOF
-#define HAVE_XML_STOPPARSER 1
+
+cat >>confdefs.h <<_ACEOF
+#define JIT_READER_DIR_RELOCATABLE $value
 _ACEOF
 
-fi
-done
 
-    LIBS=$save_LIBS
-  fi
+
+
+
+# Check whether --with-expat was given.
+if test "${with_expat+set}" = set; then :
+  withval=$with_expat;
+else
+  with_expat=auto
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use expat" >&5
+$as_echo_n "checking whether to use expat... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_expat" >&5
+$as_echo "$with_expat" >&6; }
 
-# Check whether --with-mpfr was given.
-if test "${with_mpfr+set}" = set; then :
-  withval=$with_mpfr;
-else
-  with_mpfr=auto
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use MPFR" >&5
-$as_echo_n "checking whether to use MPFR... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_mpfr" >&5
-$as_echo "$with_mpfr" >&6; }
-
-if test "${with_mpfr}" = no; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MPFR support disabled; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: MPFR support disabled; some features may be unavailable." >&2;}
-  HAVE_LIBMPFR=no
+if test "${with_expat}" = no; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: expat support disabled; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: expat support disabled; some features may be unavailable." >&2;}
+  HAVE_LIBEXPAT=no
 else
 
 
@@ -9849,9 +27423,9 @@ else
   prefix="$acl_save_prefix"
 
 
-# Check whether --with-libmpfr-prefix was given.
-if test "${with_libmpfr_prefix+set}" = set; then :
-  withval=$with_libmpfr_prefix;
+# Check whether --with-libexpat-prefix was given.
+if test "${with_libexpat_prefix+set}" = set; then :
+  withval=$with_libexpat_prefix;
     if test "X$withval" = "Xno"; then
       use_additional=no
     else
@@ -9876,13 +27450,23 @@ if test "${with_libmpfr_prefix+set}" = s
 
 fi
 
-      LIBMPFR=
-  LTLIBMPFR=
-  INCMPFR=
+
+# 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=
   rpathdirs=
   ltrpathdirs=
   names_already_handled=
-  names_next_round='mpfr gmp'
+  names_next_round='expat '
   while test -n "$names_next_round"; do
     names_this_round="$names_next_round"
     names_next_round=
@@ -9901,9 +27485,9 @@ fi
         if test -n "$value"; then
           if test "$value" = yes; then
             eval value=\"\$LIB$uppername\"
-            test -z "$value" || LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$value"
+            test -z "$value" || LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$value"
             eval value=\"\$LTLIB$uppername\"
-            test -z "$value" || LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }$value"
+            test -z "$value" || LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }$value"
           else
                                     :
           fi
@@ -9913,13 +27497,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"
@@ -9930,7 +27514,7 @@ fi
             fi
           fi
           if test "X$found_dir" = "X"; then
-            for x in $LDFLAGS $LTLIBMPFR; do
+            for x in $LDFLAGS $LTLIBEXPAT; do
 
   acl_save_prefix="$prefix"
   prefix="$acl_final_prefix"
@@ -9943,13 +27527,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"
@@ -9966,10 +27550,10 @@ fi
             done
           fi
           if test "X$found_dir" != "X"; then
-                        LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-L$found_dir -l$name"
+                        LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-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
-                                LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_so"
+                                LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so"
               else
                                                                                 haveit=
                 for x in $ltrpathdirs; do
@@ -9982,10 +27566,10 @@ fi
                   ltrpathdirs="$ltrpathdirs $found_dir"
                 fi
                                 if test "$hardcode_direct" = yes; then
-                                                      LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_so"
+                                                      LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so"
                 else
                   if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-                                                            LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_so"
+                                                            LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so"
                                                             haveit=
                     for x in $rpathdirs; do
                       if test "X$x" = "X$found_dir"; then
@@ -9998,7 +27582,7 @@ fi
                     fi
                   else
                                                                                 haveit=
-                    for x in $LDFLAGS $LIBMPFR; do
+                    for x in $LDFLAGS $LIBEXPAT; do
 
   acl_save_prefix="$prefix"
   prefix="$acl_final_prefix"
@@ -10014,21 +27598,21 @@ fi
                       fi
                     done
                     if test -z "$haveit"; then
-                      LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-L$found_dir"
+                      LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-L$found_dir"
                     fi
                     if test "$hardcode_minus_L" != no; then
-                                                                                        LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_so"
+                                                                                        LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_so"
                     else
-                                                                                                                                                                                LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-l$name"
+                                                                                                                                                                                LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-l$name"
                     fi
                   fi
                 fi
               fi
             else
               if test "X$found_a" != "X"; then
-                                LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$found_a"
+                                LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$found_a"
               else
-                                                LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-L$found_dir -l$name"
+                                                LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-L$found_dir -l$name"
               fi
             fi
                         additional_includedir=
@@ -10049,7 +27633,7 @@ fi
                   fi
                 fi
                 if test -z "$haveit"; then
-                  for x in $CPPFLAGS $INCMPFR; do
+                  for x in $CPPFLAGS $INCEXPAT; do
 
   acl_save_prefix="$prefix"
   prefix="$acl_final_prefix"
@@ -10066,7 +27650,7 @@ fi
                   done
                   if test -z "$haveit"; then
                     if test -d "$additional_includedir"; then
-                                            INCMPFR="${INCMPFR}${INCMPFR:+ }-I$additional_includedir"
+                                            INCEXPAT="${INCEXPAT}${INCEXPAT:+ }-I$additional_includedir"
                     fi
                   fi
                 fi
@@ -10094,7 +27678,7 @@ fi
                       fi
                       if test -z "$haveit"; then
                         haveit=
-                        for x in $LDFLAGS $LIBMPFR; do
+                        for x in $LDFLAGS $LIBEXPAT; do
 
   acl_save_prefix="$prefix"
   prefix="$acl_final_prefix"
@@ -10111,11 +27695,11 @@ fi
                         done
                         if test -z "$haveit"; then
                           if test -d "$additional_libdir"; then
-                                                        LIBMPFR="${LIBMPFR}${LIBMPFR:+ }-L$additional_libdir"
+                                                        LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }-L$additional_libdir"
                           fi
                         fi
                         haveit=
-                        for x in $LDFLAGS $LTLIBMPFR; do
+                        for x in $LDFLAGS $LTLIBEXPAT; do
 
   acl_save_prefix="$prefix"
   prefix="$acl_final_prefix"
@@ -10132,7 +27716,7 @@ fi
                         done
                         if test -z "$haveit"; then
                           if test -d "$additional_libdir"; then
-                                                        LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-L$additional_libdir"
+                                                        LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-L$additional_libdir"
                           fi
                         fi
                       fi
@@ -10170,15 +27754,20 @@ fi
                                                                                 names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
                     ;;
                   *)
-                                        LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$dep"
-                    LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }$dep"
+                                        LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$dep"
+                    LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }$dep"
                     ;;
                 esac
               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
+              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
@@ -10194,27 +27783,27 @@ fi
       libdir="$alldirs"
       eval flag=\"$hardcode_libdir_flag_spec\"
       libdir="$acl_save_libdir"
-      LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$flag"
+      LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$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"
-        LIBMPFR="${LIBMPFR}${LIBMPFR:+ }$flag"
+        LIBEXPAT="${LIBEXPAT}${LIBEXPAT:+ }$flag"
       done
     fi
   fi
   if test "X$ltrpathdirs" != "X"; then
             for found_dir in $ltrpathdirs; do
-      LTLIBMPFR="${LTLIBMPFR}${LTLIBMPFR:+ }-R$found_dir"
+      LTLIBEXPAT="${LTLIBEXPAT}${LTLIBEXPAT:+ }-R$found_dir"
     done
   fi
 
 
         ac_save_CPPFLAGS="$CPPFLAGS"
 
-  for element in $INCMPFR; do
+  for element in $INCEXPAT; do
     haveit=
     for x in $CPPFLAGS; do
 
@@ -10237,52 +27826,51 @@ fi
   done
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libmpfr" >&5
-$as_echo_n "checking for libmpfr... " >&6; }
-if ${ac_cv_libmpfr+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libexpat" >&5
+$as_echo_n "checking for libexpat... " >&6; }
+if ${ac_cv_libexpat+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
     ac_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBMPFR"
+    LIBS="$LIBS $LIBEXPAT"
     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include <mpfr.h>
+#include "expat.h"
 int
 main ()
 {
-mpfr_exp_t exp; mpfr_t x;
-			 mpfr_frexp (&exp, x, x, MPFR_RNDN);
+XML_Parser p = XML_ParserCreate (0);
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_libmpfr=yes
+  ac_cv_libexpat=yes
 else
-  ac_cv_libmpfr=no
+  ac_cv_libexpat=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_libmpfr" >&5
-$as_echo "$ac_cv_libmpfr" >&6; }
-  if test "$ac_cv_libmpfr" = yes; then
-    HAVE_LIBMPFR=yes
-
-$as_echo "#define HAVE_LIBMPFR 1" >>confdefs.h
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libmpfr" >&5
-$as_echo_n "checking how to link with libmpfr... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBMPFR" >&5
-$as_echo "$LIBMPFR" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libexpat" >&5
+$as_echo "$ac_cv_libexpat" >&6; }
+  if test "$ac_cv_libexpat" = yes; then
+    HAVE_LIBEXPAT=yes
+
+$as_echo "#define HAVE_LIBEXPAT 1" >>confdefs.h
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libexpat" >&5
+$as_echo_n "checking how to link with libexpat... " >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBEXPAT" >&5
+$as_echo "$LIBEXPAT" >&6; }
   else
-    HAVE_LIBMPFR=no
+    HAVE_LIBEXPAT=no
             CPPFLAGS="$ac_save_CPPFLAGS"
-    LIBMPFR=
-    LTLIBMPFR=
+    LIBEXPAT=
+    LTLIBEXPAT=
   fi
 
 
@@ -10290,16 +27878,34 @@ fi
 
 
 
-  if test "$HAVE_LIBMPFR" != yes; then
-    if test "$with_mpfr" = yes; then
-      as_fn_error $? "MPFR is missing or unusable" "$LINENO" 5
+  if test "$HAVE_LIBEXPAT" != yes; then
+    if test "$with_expat" = yes; then
+      as_fn_error $? "expat is missing or unusable" "$LINENO" 5
     else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: MPFR is missing or unusable; some features may be unavailable." >&5
-$as_echo "$as_me: WARNING: MPFR is missing or unusable; some features may be unavailable." >&2;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: expat is missing or unusable; some features may be unavailable." >&5
+$as_echo "$as_me: WARNING: expat is missing or unusable; some features may be unavailable." >&2;}
     fi
+  else
+    save_LIBS=$LIBS
+    LIBS="$LIBS $LIBEXPAT"
+    for ac_func in XML_StopParser
+do :
+  ac_fn_c_check_func "$LINENO" "XML_StopParser" "ac_cv_func_XML_StopParser"
+if test "x$ac_cv_func_XML_StopParser" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_XML_STOPPARSER 1
+_ACEOF
+
+fi
+done
+
+    LIBS=$save_LIBS
   fi
 fi
 
+
+
+
 # --------------------- #
 # Check for libpython.  #
 # --------------------- #
@@ -10340,7 +27946,7 @@ else
         python_prefix=
       fi
       if test ! -x "${python_prog}"; then
-        # Fall back to gdb 7.0/7.1 behaviour.
+        # Fall back to gdb 7.0/7.1 behavior.
         python_prog=missing
         python_prefix=${with_python}
       fi
@@ -10365,8 +27971,11 @@ else
     case "${with_python}" in
     yes | auto)
       if test "${build}" = "${host}"; then
-        # Extract the first word of "python", so it can be a program name with args.
-set dummy python; ac_word=$2
+        # Look first for 'python', then 'python3'.
+        for ac_prog in python python3
+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_path_python_prog_path+:} false; then :
@@ -10392,7 +28001,6 @@ done
   done
 IFS=$as_save_IFS
 
-  test -z "$ac_cv_path_python_prog_path" && ac_cv_path_python_prog_path="missing"
   ;;
 esac
 fi
@@ -10406,6 +28014,10 @@ else
 fi
 
 
+  test -n "$python_prog_path" && break
+done
+test -n "$python_prog_path" || python_prog_path="missing"
+
         if test "${python_prog_path}" = missing; then
           python_prog=missing
         else
@@ -10464,7 +28076,7 @@ fi
 
 
       if test "${python_prog_path}" = missing; then
-        as_fn_error $? "unable to find python program ${python_prog}" "$LINENO" 5
+	as_fn_error $? "unable to find python program ${python_prog}" "$LINENO" 5
       fi
       ;;
     esac
@@ -10478,21 +28090,21 @@ fi
     if test $? != 0; then
       have_python_config=failed
       if test "${with_python}" != auto; then
-        as_fn_error $? "failure running python-config --includes" "$LINENO" 5
+	as_fn_error $? "failure running python-config --includes" "$LINENO" 5
       fi
     fi
     python_libs=`${python_prog} ${srcdir}/python/python-config.py --ldflags`
     if test $? != 0; then
       have_python_config=failed
       if test "${with_python}" != auto; then
-        as_fn_error $? "failure running python-config --ldflags" "$LINENO" 5
+	as_fn_error $? "failure running python-config --ldflags" "$LINENO" 5
       fi
     fi
     python_prefix=`${python_prog} ${srcdir}/python/python-config.py --exec-prefix`
     if test $? != 0; then
       have_python_config=failed
       if test "${with_python}" != auto; then
-        as_fn_error $? "failure running python-config --exec-prefix" "$LINENO" 5
+	as_fn_error $? "failure running python-config --exec-prefix" "$LINENO" 5
       fi
     fi
   else
@@ -10529,81 +28141,12 @@ fi
 int
 main ()
 {
-Py_Initialize ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  have_libpython=yes
-                  found_usable_python=yes
-                  PYTHON_CPPFLAGS=$new_CPPFLAGS
-                  PYTHON_LIBS=$new_LIBS
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CPPFLAGS=$save_CPPFLAGS
-  LIBS=$save_LIBS
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
-$as_echo "${found_usable_python}" >&6; }
-
-  elif test "${have_python_config}" != failed; then
-    if test "${have_libpython}" = no; then
-
-
-  new_CPPFLAGS=${python_includes}
-  new_LIBS="-lpython2.7 ${python_libs}"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python" >&5
-$as_echo_n "checking for python... " >&6; }
-  save_CPPFLAGS=$CPPFLAGS
-  save_LIBS=$LIBS
-  CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
-  LIBS="$new_LIBS $LIBS"
-  found_usable_python=no
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "Python.h"
-int
-main ()
-{
-Py_Initialize ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  have_libpython=yes
-                  found_usable_python=yes
-                  PYTHON_CPPFLAGS=$new_CPPFLAGS
-                  PYTHON_LIBS=$new_LIBS
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-  CPPFLAGS=$save_CPPFLAGS
-  LIBS=$save_LIBS
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
-$as_echo "${found_usable_python}" >&6; }
-
-    fi
-    if test "${have_libpython}" = no; then
 
+				    #if PY_VERSION_HEX < 0x03040000
+				    # error "Minimum supported Python version is 3.4"
+				    #endif
+				    Py_Initialize ();
 
-  new_CPPFLAGS=${python_includes}
-  new_LIBS="-lpython2.6 ${python_libs}"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python" >&5
-$as_echo_n "checking for python... " >&6; }
-  save_CPPFLAGS=$CPPFLAGS
-  save_LIBS=$LIBS
-  CPPFLAGS="$CPPFLAGS $new_CPPFLAGS"
-  LIBS="$new_LIBS $LIBS"
-  found_usable_python=no
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include "Python.h"
-int
-main ()
-{
-Py_Initialize ();
   ;
   return 0;
 }
@@ -10621,7 +28164,6 @@ rm -f core conftest.err conftest.$ac_obj
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${found_usable_python}" >&5
 $as_echo "${found_usable_python}" >&6; }
 
-    fi
   fi
 
   if test "${have_libpython}" = no; then
@@ -10671,6 +28213,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 +28238,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 +28414,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)
@@ -11316,6 +28904,47 @@ fi
 
 
 # ---------------------------- #
+# Check for compile support.   #
+# ---------------------------- #
+
+# Check whether --enable-gdb-compile was given.
+if test "${enable_gdb_compile+set}" = set; then :
+  enableval=$enable_gdb_compile;
+	   case $enableval in
+	     yes | no)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $enableval for --enable-gdb-compile" "$LINENO" 5
+	       ;;
+	   esac
+
+else
+  enable_gdb_compile=default
+fi
+
+
+if test "${enable_gdb_compile}" = "default"; then
+    enable_gdb_compile=${enable_gdb_dwarf_support}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Defaulting compile support to '${enable_gdb_dwarf_support}'" >&5
+$as_echo "$as_me: WARNING: Defaulting compile support to '${enable_gdb_dwarf_support}'" >&2;}
+fi
+
+if test "${enable_gdb_compile}" = "yes"; then
+    if test "${enable_gdb_dwarf_support}" = "no"; then
+	as_fn_error $? "enabling gdb compile requires dwarf support" "$LINENO" 5
+    fi
+
+$as_echo "#define HAVE_COMPILE 1" >>confdefs.h
+
+    CONFIG_OBS="$CONFIG_OBS \$(SUBDIR_GCC_COMPILE_OBS)"
+else
+    # Even if compile support is not enabled, we need this file to define
+    # the "compile" command.
+    CONFIG_OBS="$CONFIG_OBS compile/compile.o"
+    CONFIG_SRCS="$CONFIG_SRCS compile/compile.c"
+fi
+
+# ---------------------------- #
 # Check for source highlight.  #
 # ---------------------------- #
 
@@ -11324,11 +28953,15 @@ SRCHIGH_CFLAGS=
 
 # Check whether --enable-source-highlight was given.
 if test "${enable_source_highlight+set}" = set; then :
-  enableval=$enable_source_highlight; case "${enableval}" in
-  yes)  enable_source_highlight=yes ;;
-  no)   enable_source_highlight=no  ;;
-  *)    as_fn_error $? "bad value ${enableval} for source-highlight option" "$LINENO" 5 ;;
-esac
+  enableval=$enable_source_highlight;
+	   case $enableval in
+	     yes | no | auto)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $enableval for --enable-source-highlight" "$LINENO" 5
+	       ;;
+	   esac
+
 else
   enable_source_highlight=auto
 fi
@@ -11344,705 +28977,114 @@ if test "${enable_source_highlight}" !=
       as_fn_error $? "pkg-config was not found in your system" "$LINENO" 5
     fi
   else
-    case "$LDFLAGS" in
-      *static-libstdc*)
-        as_fn_error $? "source highlight is incompatible with -static-libstdc++; either use --disable-source-highlight or --without-static-standard-libraries" "$LINENO" 5
-        ;;
-    esac
-
     if ${pkg_config_prog_path} --exists source-highlight; then
-      SRCHIGH_CFLAGS=`${pkg_config_prog_path} --cflags source-highlight`
-      SRCHIGH_LIBS=`${pkg_config_prog_path} --libs source-highlight`
-
-$as_echo "#define HAVE_SOURCE_HIGHLIGHT 1" >>confdefs.h
-
-      { $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; }
-      if test "${enable_source_highlight}" = "yes"; then
-        as_fn_error $? "source-highlight was not found in your system" "$LINENO" 5
-      fi
-    fi
-  fi
-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
+      case "$LDFLAGS" in
+        *static-libstdc*)
+          as_fn_error $? "source highlight is incompatible with -static-libstdc++; either use --disable-source-highlight or --without-static-standard-libraries" "$LINENO" 5
+          ;;
+      esac
 
+      srchigh_pkg_cflags=`${pkg_config_prog_path} --cflags source-highlight`
+      srchigh_pkg_libs=`${pkg_config_prog_path} --libs source-highlight`
 
-  { $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
+      # Now that we have found a source-highlight library, check if we can use
+      # it.  In particular, we're trying to detect the situation that the
+      # library is using the new libstdc++ library abi ( see
+      # https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html )
+      # while the compiler being used to compile gdb is using the old abi.
+      # Such a situation will result in an undefined reference to
+      # srchilite::SourceHighlight::SourceHighlight(std::string const&).
+      # This situation can occur for instance when using a source highlight
+      # library compiled with g++ 7.5.0 while building gdb with g++ 4.8.5.
+      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_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBIPT"
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+      save_CXXFLAGS="$CXXFLAGS"
+      save_LIBS="$LIBS"
+      CXXFLAGS="$CXXFLAGS $srchigh_pkg_cflags"
+      LIBS="$LIBS $srchigh_pkg_libs"
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-#include "intel-pt.h"
+#include <srchilite/sourcehighlight.h>
 int
 main ()
 {
-pt_insn_alloc_decoder (0);
+std::string outlang = "esc.outlang";
+           new srchilite::SourceHighlight (outlang);
+
   ;
   return 0;
 }
 _ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_libipt=yes
+if ac_fn_cxx_try_link "$LINENO"; then :
+  have_usable_source_highlight=yes
 else
-  ac_cv_libipt=no
+  have_usable_source_highlight=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
-
-
+      CXXFLAGS="$save_CXXFLAGS"
+      LIBS="$save_LIBS"
+      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 "${have_usable_source_highlight}" = "yes"; then
 
+$as_echo "#define HAVE_SOURCE_HIGHLIGHT 1" >>confdefs.h
 
-  if test "$HAVE_LIBIPT" != yes; then
-    if test "$with_intel_pt" = yes; then
-      as_fn_error $? "libipt is missing or unusable" "$LINENO" 5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+        SRCHIGH_CFLAGS="$srchigh_pkg_cflags"
+        SRCHIGH_LIBS="$srchigh_pkg_libs"
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        if test "${enable_source_highlight}" = "yes"; then
+          as_fn_error $? "source-highlight in your system could not be used" "$LINENO" 5
+        fi
+      fi
     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;}
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      if test "${enable_source_highlight}" = "yes"; then
+        as_fn_error $? "source-highlight was not found in your system" "$LINENO" 5
+      fi
     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
 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.  #
 # ------------------------- #
 
-{ $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
+for ac_header in  \
+  IOKit/serial/ioss.h \
+  asm/termios.h \
+  machine/reg.h \
+  nlist.h \
+  ptrace.h \
+  sys/debugreg.h \
+  sys/file.h \
+  sys/filio.h \
+  sys/ioctl.h \
+  sys/param.h \
+  sys/procctl.h \
+  sys/ptrace.h \
+  sys/reg.h \
+  sys/resource.h \
+  termios.h \
+  thread_db.h \
 
-# 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 \
-		  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 \
-		  termios.h elf_hp.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"
@@ -12055,6 +29097,7 @@ fi
 
 done
 
+
 for ac_header in sys/user.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "sys/user.h" "ac_cv_header_sys_user_h" "#if HAVE_SYS_PARAM_H
@@ -12072,7 +29115,14 @@ fi
 done
 
 
-for ac_header in curses.h cursesX.h ncurses.h ncursesw/ncurses.h ncurses/ncurses.h ncurses/term.h
+for ac_header in  \
+  curses.h \
+  cursesX.h \
+  ncurses.h \
+  ncurses/ncurses.h \
+  ncurses/term.h \
+  ncursesw/ncurses.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"
@@ -12085,6 +29135,7 @@ fi
 
 done
 
+
 for ac_header in term.h
 do :
   ac_fn_c_check_header_compile "$LINENO" "term.h" "ac_cv_header_term_h" "#if HAVE_CURSES_H
@@ -12102,66 +29153,47 @@ fi
 done
 
 
-# ------------------------- #
-# Checks for declarations.  #
-# ------------------------- #
+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
 
-  # 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 :
+done
 
-cat >>confdefs.h <<_ACEOF
-#define HAVE_LONG_LONG 1
+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
 
-# 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; }
-
 
+done
 
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
+for ac_header in execinfo.h
+do :
+  ac_fn_c_check_header_mongrel "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_execinfo_h" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_EXECINFO_H 1
 _ACEOF
 
-
 fi
 
+done
 
-  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
+# ------------------------- #
+# Checks for declarations.  #
+# ------------------------- #
+
 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
@@ -12172,6 +29204,7 @@ 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
@@ -12182,6 +29215,7 @@ 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
@@ -12192,6 +29226,7 @@ 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
@@ -12202,6 +29237,7 @@ 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
@@ -12213,7 +29249,7 @@ 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"
+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
@@ -12223,6 +29259,7 @@ 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
@@ -12233,6 +29270,7 @@ 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
@@ -12243,6 +29281,7 @@ 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
@@ -12254,7 +29293,7 @@ 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"
+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
@@ -12265,6 +29304,64 @@ cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_STRVERSCMP $ac_have_decl
 _ACEOF
 
+    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" "snprintf" "ac_cv_have_decl_snprintf" "$ac_includes_default"
@@ -12312,36 +29409,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,438 +29787,27 @@ fi
 # Checks for library functions.  #
 # ------------------------------ #
 
+for ac_func in  \
+  btowc \
+  getgid \
+  getpgid \
+  getrlimit \
+  getuid \
+  iconvlist \
+  libiconvlist \
+  posix_madvise \
+  pread \
+  pread64 \
+  pwrite \
+  resize_term \
+  setlocale \
+  setrlimit \
+  setsid \
+  sigsetmask \
+  ttrace \
+  use_default_colors \
+  wresize \
 
-
-
-  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
-
-
-
-
-
-
-
-
-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
-
-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 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
 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,419 +29820,6 @@ 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
-
-{ $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; }
@@ -13602,789 +29855,6 @@ fi
   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.
 
 
@@ -14411,26 +29881,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.
@@ -14441,11 +29891,12 @@ if ${gdb_cv_func_ptrace_ret+:} false; th
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-$gdb_ptrace_headers
+Â $gdb_ptrace_headers
 int
 main ()
 {
 extern long ptrace (enum __ptrace_request, ...);
+
   ;
   return 0;
 }
@@ -14460,6 +29911,7 @@ int
 main ()
 {
 extern int ptrace ();
+
   ;
   return 0;
 }
@@ -14468,25 +29920,29 @@ 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
@@ -14494,6 +29950,7 @@ int
 main ()
 {
 extern long ptrace (enum __ptrace_request, ...);
+
   ;
   return 0;
 }
@@ -14501,20 +29958,17 @@ _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
+  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);
+extern $gdb_cv_func_ptrace_ret ptrace ($gdb_arg1, $gdb_arg2, $gdb_arg3, $gdb_arg4);
 
   ;
   return 0;
@@ -14522,43 +29976,45 @@ extern $gdb_cv_func_ptrace_ret
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
   gdb_cv_func_ptrace_args="$gdb_arg1,$gdb_arg2,$gdb_arg3,$gdb_arg4";
-    break 4;
+		 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
+
+	      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);
+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;
 
-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'}
+	      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
@@ -14636,17 +30092,14 @@ if ${ac_cv_func_setpgrp_void+:} false; t
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
-
 #include <unistd.h>
-
 int
 main ()
 {
-
-  if (setpgrp(1,1) == -1)
-    exit (0);
-  else
-    exit (1);
+if (setpgrp(1,1) == -1)
+	     exit (0);
+	   else
+	     exit (1);
 
   ;
   return 0;
@@ -14656,8 +30109,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_func_setpgrp_void=no
 else
   ac_cv_func_setpgrp_void=yes
+
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_setpgrp_void" >&5
 $as_echo "$ac_cv_func_setpgrp_void" >&6; }
@@ -14667,57 +30122,6 @@ if test "$ac_cv_func_setpgrp_void" = yes
 fi
 fi
 
-# Assume we'll default to using the included libiberty regex.
-gdb_use_included_regex=yes
-
-# However, if the system regex is GNU regex, then default to *not*
-# using the included regex.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU regex" >&5
-$as_echo_n "checking for GNU regex... " >&6; }
-if ${gdb_cv_have_gnu_regex+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <gnu-versions.h>
-int
-main ()
-{
-#define REGEX_INTERFACE_VERSION 1
-#if _GNU_REGEX_INTERFACE_VERSION != REGEX_INTERFACE_VERSION
-# error "Version mismatch"
-#endif
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdb_cv_have_gnu_regex=yes
-else
-  gdb_cv_have_gnu_regex=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_gnu_regex" >&5
-$as_echo "$gdb_cv_have_gnu_regex" >&6; }
-if test "$gdb_cv_have_gnu_regex" = yes; then
-  gdb_use_included_regex=no
-fi
-
-
-# Check whether --with-included-regex was given.
-if test "${with_included_regex+set}" = set; then :
-  withval=$with_included_regex; gdb_with_regex=$withval
-else
-  gdb_with_regex=$gdb_use_included_regex
-fi
-
-if test "$gdb_with_regex" = yes; then
-
-$as_echo "#define USE_INCLUDED_REGEX 1" >>confdefs.h
-
-fi
-
 # Check if <sys/proc.h> defines `struct thread' with a td_pcb member.
 ac_fn_c_check_member "$LINENO" "struct thread" "td_pcb" "ac_cv_member_struct_thread_td_pcb" "#include <sys/param.h>
 #include <sys/proc.h>
@@ -14742,12 +30146,13 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/param.h>
-#define _KMEMUSER
-#include <sys/lwp.h>
+	 #define _KMEMUSER
+	 #include <sys/lwp.h>
 int
 main ()
 {
 struct lwp l;
+
   ;
   return 0;
 }
@@ -14756,8 +30161,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
   gdb_cv_struct_lwp=yes
 else
   gdb_cv_struct_lwp=no
+
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_struct_lwp" >&5
 $as_echo "$gdb_cv_struct_lwp" >&6; }
@@ -14776,11 +30183,12 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <machine/reg.h>
+	 #include <machine/reg.h>
 int
 main ()
 {
 struct reg r;
+
   ;
   return 0;
 }
@@ -14789,8 +30197,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
   gdb_cv_struct_reg=yes
 else
   gdb_cv_struct_reg=no
+
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_struct_reg" >&5
 $as_echo "$gdb_cv_struct_reg" >&6; }
@@ -14826,33 +30236,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; }
@@ -14874,8 +30257,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
   gdb_cv_have_ptrace_getregs=yes
 else
   gdb_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: $gdb_cv_have_ptrace_getregs" >&5
@@ -14907,8 +30292,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
   gdb_cv_have_ptrace_getfpxregs=yes
 else
   gdb_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: $gdb_cv_have_ptrace_getfpxregs" >&5
@@ -14928,11 +30315,12 @@ else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
-#include <sys/ptrace.h>
+	 #include <sys/ptrace.h>
 int
 main ()
 {
 PT_GETDBREGS;
+
   ;
   return 0;
 }
@@ -14941,8 +30329,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
   gdb_cv_have_pt_getdbregs=yes
 else
   gdb_cv_have_pt_getdbregs=no
+
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_pt_getdbregs" >&5
@@ -14953,40 +30343,6 @@ if test "$gdb_cv_have_pt_getdbregs" = ye
 
 fi
 
-# See if <sys/ptrace.h> provides the PT_GETXMMREGS request.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PT_GETXMMREGS" >&5
-$as_echo_n "checking for PT_GETXMMREGS... " >&6; }
-if ${gdb_cv_have_pt_getxmmregs+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-#include <sys/ptrace.h>
-int
-main ()
-{
-PT_GETXMMREGS;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gdb_cv_have_pt_getxmmregs=yes
-else
-  gdb_cv_have_pt_getxmmregs=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_pt_getxmmregs" >&5
-$as_echo "$gdb_cv_have_pt_getxmmregs" >&6; }
-if test "$gdb_cv_have_pt_getxmmregs" = yes; then
-
-$as_echo "#define HAVE_PT_GETXMMREGS 1" >>confdefs.h
-
-fi
-
 # See if <sys/ptrace.h> supports LWP names on FreeBSD
 # Older FreeBSD versions don't have the pl_tdname member of
 # `struct ptrace_lwpinfo'.
@@ -15017,305 +30373,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
@@ -15348,52 +30405,6 @@ if test "$gdb_cv_c_long_long" != yes; th
   as_fn_error $? "Compiler must support long long for GDB." "$LINENO" 5
 fi
 
-# Check if the compiler and runtime support printing long longs.
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long support in printf" >&5
-$as_echo_n "checking for long long support in printf... " >&6; }
-if ${gdb_cv_printf_has_long_long+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test "$cross_compiling" = yes; then :
-  gdb_cv_printf_has_long_long=no
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-$ac_includes_default
-int
-main ()
-{
-char buf[32];
-  long long l = 0;
-  l = (l << 16) + 0x0123;
-  l = (l << 16) + 0x4567;
-  l = (l << 16) + 0x89ab;
-  l = (l << 16) + 0xcdef;
-  sprintf (buf, "0x%016llx", l);
-  return (strcmp ("0x0123456789abcdef", buf));
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-  gdb_cv_printf_has_long_long=yes
-else
-  gdb_cv_printf_has_long_long=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: $gdb_cv_printf_has_long_long" >&5
-$as_echo "$gdb_cv_printf_has_long_long" >&6; }
-if test "$gdb_cv_printf_has_long_long" = yes; then
-
-$as_echo "#define PRINTF_HAS_LONG_LONG 1" >>confdefs.h
-
-fi
-
 # Check if the compiler and runtime support printing decfloats.
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for decfloat support in printf" >&5
@@ -15558,16 +30569,15 @@ aix*)
 if ${gdb_cv_bigtoc+:} false; then :
   $as_echo_n "(cached) " >&6
 else
+  SAVE_LDFLAGS=$LDFLAGS
 
-    SAVE_LDFLAGS=$LDFLAGS
-
-    case $GCC in
-    yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
-    *) gdb_cv_bigtoc=-bbigtoc ;;
-    esac
+     case $GCC in
+       yes) gdb_cv_bigtoc=-Wl,-bbigtoc ;;
+       *) gdb_cv_bigtoc=-bbigtoc ;;
+     esac
 
-    LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
-    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+     LDFLAGS=$LDFLAGS\ $gdb_cv_bigtoc
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
 int
@@ -15582,10 +30592,11 @@ if ac_fn_c_try_link "$LINENO"; then :
 
 else
   gdb_cv_bigtoc=
+
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
-    LDFLAGS="${SAVE_LDFLAGS}"
+     LDFLAGS="${SAVE_LDFLAGS}"
 
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_bigtoc" >&5
@@ -15650,7 +30661,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;
   ;
@@ -15681,6 +30692,45 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $found" >&5
 $as_echo "$found" >&6; }
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether execinfo.h backtrace is available" >&5
+$as_echo_n "checking whether execinfo.h backtrace is available... " >&6; }
+if ${gdb_cv_execinfo_backtrace+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+         #include <execinfo.h>
+
+int
+main ()
+{
+
+         int f;
+         void *b[2];
+         f = backtrace (b, 2);
+         backtrace_symbols_fd (b, f, 2);
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gdb_cv_execinfo_backtrace=yes
+else
+  gdb_cv_execinfo_backtrace=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: $gdb_cv_execinfo_backtrace" >&5
+$as_echo "$gdb_cv_execinfo_backtrace" >&6; }
+if test "$gdb_cv_execinfo_backtrace" = yes; then
+
+$as_echo "#define HAVE_EXECINFO_BACKTRACE 1" >>confdefs.h
+
+fi
+
 
 if test "${build}" = "${host}" -a "${host}" = "${target}" ; then
    case ${host_os} in
@@ -15697,8 +30747,9 @@ int
 main ()
 {
 #ifndef PTHDB_VERSION_3
-                                    #error
-                                    #endif
+	       #error
+	       #endif
+
   ;
   return 0;
 }
@@ -15707,8 +30758,10 @@ if ac_fn_c_try_compile "$LINENO"; then :
   gdb_cv_have_aix_thread_debug=yes
 else
   gdb_cv_have_aix_thread_debug=no
+
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
 fi
 
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_have_aix_thread_debug" >&5
@@ -15740,7 +30793,7 @@ _ACEOF
 fi
 
 if test "x$ac_cv_header_thread_db_h" = "xyes"; then
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <thread_db.h> has TD_NOTALLOC" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <thread_db.h> has TD_NOTALLOC" >&5
 $as_echo_n "checking whether <thread_db.h> has TD_NOTALLOC... " >&6; }
 if ${gdb_cv_thread_db_h_has_td_notalloc+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15752,6 +30805,7 @@ int
 main ()
 {
 int i = TD_NOTALLOC;
+
   ;
   return 0;
 }
@@ -15767,7 +30821,8 @@ rm -f core conftest.err conftest.$ac_obj
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_thread_db_h_has_td_notalloc" >&5
 $as_echo "$gdb_cv_thread_db_h_has_td_notalloc" >&6; }
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <thread_db.h> has TD_VERSION" >&5
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <thread_db.h> has TD_VERSION" >&5
 $as_echo_n "checking whether <thread_db.h> has TD_VERSION... " >&6; }
 if ${gdb_cv_thread_db_h_has_td_version+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15779,6 +30834,7 @@ int
 main ()
 {
 int i = TD_VERSION;
+
   ;
   return 0;
 }
@@ -15794,7 +30850,8 @@ rm -f core conftest.err conftest.$ac_obj
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_thread_db_h_has_td_version" >&5
 $as_echo "$gdb_cv_thread_db_h_has_td_version" >&6; }
-   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <thread_db.h> has TD_NOTLS" >&5
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether <thread_db.h> has TD_NOTLS" >&5
 $as_echo_n "checking whether <thread_db.h> has TD_NOTLS... " >&6; }
 if ${gdb_cv_thread_db_h_has_td_notls+:} false; then :
   $as_echo_n "(cached) " >&6
@@ -15806,6 +30863,7 @@ int
 main ()
 {
 int i = TD_NOTLS;
+
   ;
   return 0;
 }
@@ -15838,80 +30896,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
@@ -15927,6 +30911,12 @@ _ACEOF
 
 
 
+cat >>confdefs.h <<_ACEOF
+#define GDBEARLYINIT ".gdbearlyinit"
+_ACEOF
+
+
+
 # Support for --with-sysroot is a copy of GDB_AC_WITH_DIR,
 # except that the argument to --with-sysroot is optional.
 # --with-sysroot (or --with-sysroot=yes) sets the default sysroot path.
@@ -16071,6 +31061,64 @@ _ACEOF
 
 
 
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking the compiler type" >&5
+$as_echo_n "checking the compiler type... " >&6; }
+if ${gdb_cv_compiler_type+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gdb_cv_compiler_type=unknown
+  if test "$gdb_cv_compiler_type" = unknown; then
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+                          #if !defined __GNUC__ || defined __clang__
+                          #error not gcc
+                          #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdb_cv_compiler_type=gcc
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  fi
+
+  if test "$gdb_cv_compiler_type" = unknown; then
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+                          #ifndef __clang__
+                          #error not clang
+                          #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gdb_cv_compiler_type=clang
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_compiler_type" >&5
+$as_echo "$gdb_cv_compiler_type" >&6; }
+
+ GDB_COMPILER_TYPE="$gdb_cv_compiler_type"
+
+
 # Check whether --enable-werror was given.
 if test "${enable_werror+set}" = set; then :
   enableval=$enable_werror; case "${enableval}" in
@@ -16092,20 +31140,45 @@ if test "${ERROR_ON_WARNING}" = yes ; th
 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 \
+build_warnings=" \
+-Wall \
 -Wdeprecated-copy \
 -Wdeprecated-copy-dtor \
--Wredundant-move"
+-Wduplicated-cond \
+-Wempty-body \
+-Wimplicit-fallthrough=5 \
+-Wmissing-declarations \
+-Wno-char-subscripts \
+-Wno-error=deprecated-register \
+-Wno-mismatched-tags \
+-Wno-sign-compare -Wno-error=maybe-uninitialized \
+-Wno-switch \
+-Wno-unused \
+-Wpointer-arith \
+-Wredundant-move \
+-Wshadow=local \
+-Wstrict-null-sentinel \
+-Wsuggest-override \
+-Wunused-but-set-parameter \
+-Wunused-but-set-variable \
+-Wunused-const-variable=1 \
+-Wunused-function \
+-Wunused-label \
+-Wunused-lambda-capture \
+-Wunused-local-typedefs \
+-Wunused-member-function \
+-Wunused-private-field \
+-Wunused-value \
+-Wunused-variable \
+-Wvla \
+"
+
+# The -Wmissing-prototypes flag will be accepted by GCC, but results
+# in a warning being printed about the flag not being valid for C++,
+# this is something to do with using ccache, and argument ordering.
+if test "$GDB_COMPILER_TYPE" != gcc; then
+  build_warnings="$build_warnings -Wmissing-prototypes"
+fi
 
 case "${host}" in
   *-*-mingw32*)
@@ -16202,13 +31275,14 @@ then
 	      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() {}
-		 };
+		    struct scoped_restore_tmpl : public scoped_restore_base {
+		      ~scoped_restore_tmpl() {}
+		    };
 int
 main ()
 {
 const scoped_restore_base &b = scoped_restore_tmpl();
+
   ;
   return 0;
 }
@@ -16290,6 +31364,7 @@ if ac_fn_cxx_try_link "$LINENO"; then :
   enable_ubsan=yes
 else
   enable_ubsan=no
+
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
@@ -16355,67 +31430,72 @@ 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"
 
+# Object files to be used when building with support for all file formats.
+# This should not have elf or macho, as support for those formats depends
+# on BFD enabling them as well.
+all_binary_file_srcs="\$(dbx_SRCS) \$(mips_SRCS) \$(coff_SRCS) \$(xcoff_SRCS)"
 
+bfd_supports_elf=no
 # Add ELF support to GDB, but only if BFD includes ELF support.
 
   OLD_CFLAGS=$CFLAGS
   OLD_LDFLAGS=$LDFLAGS
   OLD_LIBS=$LIBS
+  OLD_CC=$CC
   # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
   # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
   # always want our bfd.
   CFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CFLAGS"
-  ZLIBDIR=`echo $zlibdir | sed 's,\$(top_builddir)/,,g'`
-  LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
-  intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
-  LIBS="-lbfd -liberty -lz $intl $LIBS"
+  LDFLAGS="-L../bfd -L../libiberty $LDFLAGS"
+  # LTLIBINTL because we use libtool as CC below.
+  intl="$(echo "$LTLIBINTL" | sed 's,\$[{(]top_builddir[)}]/,,')"
+  LIBS="-lbfd -liberty $intl $LIBS"
+  CC="./libtool --quiet --mode=link $CC"
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ELF support in BFD" >&5
 $as_echo_n "checking for ELF support in BFD... " >&6; }
-if ${gdb_cv_var_elf+:} false; then :
+if ${gdb_cv_var_bfd_elf+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
-  #include "bfd.h"
-  #include "elf-bfd.h"
-
+	   #include <string.h>
+	   #include "bfd.h"
+	   #include "elf-bfd.h"
 int
 main ()
 {
 return bfd_get_elf_phdr_upper_bound (NULL);
+
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  gdb_cv_var_elf=yes
+  gdb_cv_var_bfd_elf=yes
 else
-  gdb_cv_var_elf=no
+  gdb_cv_var_bfd_elf=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: $gdb_cv_var_elf" >&5
-$as_echo "$gdb_cv_var_elf" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_var_bfd_elf" >&5
+$as_echo "$gdb_cv_var_bfd_elf" >&6; }
+  CC=$OLD_CC
   CFLAGS=$OLD_CFLAGS
   LDFLAGS=$OLD_LDFLAGS
   LIBS=$OLD_LIBS
-if test "$gdb_cv_var_elf" = yes; then
-  CONFIG_OBS="$CONFIG_OBS elfread.o stap-probe.o dtrace-probe.o"
+if test "$gdb_cv_var_bfd_elf" = yes; then
+  CONFIG_OBS="$CONFIG_OBS gcore-elf.o elf-none-tdep.o"
 
 $as_echo "#define HAVE_ELF 1" >>confdefs.h
 
-  # -ldl is provided by bfd/Makfile.am (LIBDL) <PLUGINS>.
+  # -ldl is provided by bfd/Makefile.am (LIBDL) <PLUGINS>.
   if test "$plugins" = "yes"; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5
 $as_echo_n "checking for library containing dlopen... " >&6; }
@@ -16474,62 +31554,122 @@ if test "$ac_res" != no; then :
 fi
 
   fi
+  bfd_supports_elf=yes
+  all_binary_file_srcs="$all_binary_file_srcs \$(elf_SRCS)"
 fi
 
 # Add macho support to GDB, but only if BFD includes it.
+bfd_supports_macho=no
 
   OLD_CFLAGS=$CFLAGS
   OLD_LDFLAGS=$LDFLAGS
   OLD_LIBS=$LIBS
+  OLD_CC=$CC
   # Put the old CFLAGS/LDFLAGS last, in case the user's (C|LD)FLAGS
   # points somewhere with bfd, with -I/foo/lib and -L/foo/lib.  We
   # always want our bfd.
   CFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CFLAGS"
-  ZLIBDIR=`echo $zlibdir | sed 's,\$(top_builddir)/,,g'`
-  LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS"
-  intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'`
-  LIBS="-lbfd -liberty -lz $intl $LIBS"
+  LDFLAGS="-L../bfd -L../libiberty $LDFLAGS"
+  # LTLIBINTL because we use libtool as CC below.
+  intl="$(echo "$LTLIBINTL" | sed 's,\$[{(]top_builddir[)}]/,,')"
+  LIBS="-lbfd -liberty $intl $LIBS"
+  CC="./libtool --quiet --mode=link $CC"
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Mach-O support in BFD" >&5
 $as_echo_n "checking for Mach-O support in BFD... " >&6; }
-if ${gdb_cv_var_macho+:} false; then :
+if ${gdb_cv_var_bfd_macho+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <stdlib.h>
-  #include "bfd.h"
-  #include "mach-o.h"
-
+	   #include <string.h>
+	   #include "bfd.h"
+	   #include "mach-o.h"
 int
 main ()
 {
 return bfd_mach_o_lookup_command (NULL, 0, NULL);
+
   ;
   return 0;
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  gdb_cv_var_macho=yes
+  gdb_cv_var_bfd_macho=yes
 else
-  gdb_cv_var_macho=no
+  gdb_cv_var_bfd_macho=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: $gdb_cv_var_macho" >&5
-$as_echo "$gdb_cv_var_macho" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gdb_cv_var_bfd_macho" >&5
+$as_echo "$gdb_cv_var_bfd_macho" >&6; }
+  CC=$OLD_CC
   CFLAGS=$OLD_CFLAGS
   LDFLAGS=$OLD_LDFLAGS
   LIBS=$OLD_LIBS
-if test "$gdb_cv_var_macho" = yes; then
-  CONFIG_OBS="$CONFIG_OBS machoread.o"
+if test "$gdb_cv_var_bfd_macho" = yes; then
+  bfd_supports_macho=yes
+  all_binary_file_srcs="$all_binary_file_srcs \$(macho_SRCS)"
 fi
 
+FORMAT_SRCS=
+
+if test "$enable_binary_file_formats" != "all"; then
+    # Formats that are required by some requested target(s).
+    # Warn users that they are added, so no one is surprised.
+    for req in $target_formats; do
+	case ,$enable_binary_file_formats, in
+	*,$req,*)
+	    # Do nothing.
+	    ;;
+	*)
+	    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \"$req is required to support one or more requested targets.  Adding it\"" >&5
+$as_echo "$as_me: WARNING: \"$req is required to support one or more requested targets.  Adding it\"" >&2;}
+	    enable_binary_file_formats="${enable_binary_file_formats},$req"
+	    ;;
+	esac
+    done
+
+
+cat >>confdefs.h <<_ACEOF
+#define SUPPORTED_BINARY_FILE_FORMATS "$enable_binary_file_formats"
+_ACEOF
+
+fi
+
+enable_binary_file_formats=$(echo $enable_binary_file_formats | sed 's/,/ /g')
+
+# Go through all requested and required binary file formats to compile
+# GDB, and double check that we can compile them.
+for format in $enable_binary_file_formats
+do
+    if test "$format" = "elf" && test "$bfd_supports_elf" != "yes"; then
+	    as_fn_error but BFD does not support it." "\"elf support was requested" "$LINENO" 5;
+    elif test "$format" = "macho" && test "$bfd_supports_macho" != "yes"; then
+	    as_fn_error but BFD does not support it." "\"Mach-O support was requested" "$LINENO" 5;
+    fi
+
+    if test "$format" = "all"; then
+	FORMAT_SRCS="$all_binary_file_srcs"
+	# We don't break here in case the user requested Mach-O or ELF, but
+	# BFD is not configured to support it.  If we were to break, we would
+	# silently drop the requested support instead of erroring out.
+    else
+	fmt=$(echo "$format _SRCS" | sed 's/ //')
+	FORMAT_SRCS="$FORMAT_SRCS \$($fmt)"
+    fi
+done
+
+
+
 # Add any host-specific objects to GDB.
 CONFIG_OBS="${CONFIG_OBS} ${gdb_host_obs}"
 
 # If building on ELF, look for lzma support for embedded compressed debug info.
-if test "$gdb_cv_var_elf" = yes; then
+if test "$gdb_cv_var_bfd_elf" = yes; then
 
 # Check whether --with-lzma was given.
 if test "${with_lzma+set}" = set; then :
@@ -16593,6 +31733,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 +31780,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 +31810,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 +32044,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
@@ -17744,13 +32899,15 @@ fi
 #
 # Check whether --enable-sim was given.
 if test "${enable_sim+set}" = set; then :
-  enableval=$enable_sim; echo "enable_sim = $enable_sim";
- echo "enableval = ${enableval}";
- case "${enableval}" in
-  yes) ignore_sim=false ;;
-  no)  ignore_sim=true ;;
-  *)   ignore_sim=false ;;
- esac
+  enableval=$enable_sim; { $as_echo "$as_me:${as_lineno-$LINENO}: enable_sim = $enable_sim" >&5
+$as_echo "$as_me: enable_sim = $enable_sim" >&6;};
+	       { $as_echo "$as_me:${as_lineno-$LINENO}: enableval = ${enableval}" >&5
+$as_echo "$as_me: enableval = ${enableval}" >&6;};
+	       case "${enableval}" in
+		 yes) ignore_sim=false ;;
+		 no)  ignore_sim=true ;;
+		 *)   ignore_sim=false ;;
+	       esac
 else
   ignore_sim=false
 fi
@@ -17767,9 +32924,6 @@ if test "${ignore_sim}" = "false"; then
     SIM="${gdb_sim}"
     SIM_OBS="remote-sim.o"
 
-$as_echo "#define WITH_SIM 1" >>confdefs.h
-
-
     # Some tdep code should only be compiled in when the ppc sim is
     # built.  PR sim/13418.
     case $target in
@@ -17844,40 +32998,37 @@ _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
+# Setup possible use of libbacktrace.
+# Check whether --enable-libbacktrace was given.
+if test "${enable_libbacktrace+set}" = set; then :
+  enableval=$enable_libbacktrace;
+	   case $enableval in
+	     yes | no)
+	       ;;
+	     *)
+	       as_fn_error $? "bad value $enableval for --enable-libbacktrace" "$LINENO" 5
+	       ;;
+	   esac
+
 else
-  enable_gdbserver=auto
+  enable_libbacktrace=yes
 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"
+if test "${enable_libbacktrace}" = "yes"; then
+  LIBBACKTRACE_INC="-I$srcdir/../libbacktrace/ -I../libbacktrace/"
+  LIBBACKTRACE_LIB=../libbacktrace/libbacktrace.la
 
-    gdbserver_build_enabled=yes
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-  fi
-fi
+$as_echo "#define HAVE_LIBBACKTRACE 1" >>confdefs.h
 
-# 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
+else
+  LIBBACKTRACE_INC=
+  LIBBACKTRACE_LIB=
 fi
 
+
+
+
 # Check for babeltrace and babeltrace-ctf
 
 # Check whether --with-babeltrace was given.
@@ -17893,8 +33044,8 @@ fi
 $as_echo "$with_babeltrace" >&6; }
 
 if test "x$with_babeltrace" = "xno"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: babletrace support disabled; GDB is unable to read CTF data." >&5
-$as_echo "$as_me: WARNING: babletrace support disabled; GDB is unable to read CTF data." >&2;}
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: babeltrace support disabled; GDB is unable to read CTF data." >&5
+$as_echo "$as_me: WARNING: babeltrace support disabled; GDB is unable to read CTF data." >&2;}
 else
   # Append -Werror to CFLAGS so that configure can catch the warning
   # "assignment from incompatible pointer type", which is related to
@@ -17953,6 +33104,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 +33151,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 +33181,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 +33415,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
@@ -18389,494 +33555,34 @@ fi
   fi
 fi
 
-# Check for xxhash
+ # 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
 
-# Check whether --with-xxhash was given.
-if test "${with_xxhash+set}" = set; then :
-  withval=$with_xxhash;
 else
-  with_xxhash=auto
-fi
-
-
-if test "x$with_xxhash" != "xno"; then
-
-
-
-
-
-
-
-
-    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-libxxhash-prefix was given.
-if test "${with_libxxhash_prefix+set}" = set; then :
-  withval=$with_libxxhash_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
-
+  enable_libctf=yes
 fi
 
-      LIBXXHASH=
-  LTLIBXXHASH=
-  INCXXHASH=
-  rpathdirs=
-  ltrpathdirs=
-  names_already_handled=
-  names_next_round='xxhash '
-  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" || LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$value"
-            eval value=\"\$LTLIB$uppername\"
-            test -z "$value" || LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }$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 $LTLIBXXHASH; 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
-                        LTLIBXXHASH="${LTLIBXXHASH}${LTLIBXXHASH:+ }-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
-                                LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$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
-                                                      LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$found_so"
-                else
-                  if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
-                                                            LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$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 $LIBXXHASH; 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
-                      LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-L$found_dir"
-                    fi
-                    if test "$hardcode_minus_L" != no; then
-                                                                                        LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$found_so"
-                    else
-                                                                                                                                                                                LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-l$name"
-                    fi
-                  fi
-                fi
-              fi
-            else
-              if test "X$found_a" != "X"; then
-                                LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }$found_a"
-              else
-                                                LIBXXHASH="${LIBXXHASH}${LIBXXHASH:+ }-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 $INCXXHASH; 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
-                                            INCXXHASH="${INCXXHASH}${INCXXHASH:+ }-I$additi